<?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>138579</bug_id>
          
          <creation_ts>2014-11-10 14:04:34 -0800</creation_ts>
          <short_desc>Web Inspector: Update Esprima, remove WebInspector.Esprima global.</short_desc>
          <delta_ts>2014-11-10 20:58:31 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Wells">jonowells</reporter>
          <assigned_to name="Jonathan Wells">jonowells</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1047625</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Wells">jonowells</who>
    <bug_when>2014-11-10 14:04:34 -0800</bug_when>
    <thetext>Need to remove the WebInspector.Esprima global object. Need to do this for two reasons. First, the combined Esprima.js file (along with all other externals) should be included before Main.js, and thus should be agnostic of the WebInspector. Secondly, from a maintenance standpoint we shouldn&apos;t be making changes to this file from the standard Esprima library. The necessary changes to the file could be forgotten in the future, so they shouldn&apos;t be done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047626</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-11-10 14:05:27 -0800</bug_when>
    <thetext>&lt;rdar://problem/18931536&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047627</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-11-10 14:05:30 -0800</bug_when>
    <thetext>&lt;rdar://problem/18931537&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047672</commentid>
    <comment_count>3</comment_count>
      <attachid>241314</attachid>
    <who name="Jonathan Wells">jonowells</who>
    <bug_when>2014-11-10 15:52:35 -0800</bug_when>
    <thetext>Created attachment 241314
[Patch] Suggested fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047711</commentid>
    <comment_count>4</comment_count>
      <attachid>241314</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-11-10 17:26:51 -0800</bug_when>
    <thetext>Comment on attachment 241314
[Patch] Suggested fix.

View in context: https://bugs.webkit.org/attachment.cgi?id=241314&amp;action=review

&gt; Source/WebInspectorUI/ChangeLog:11
&gt; +        * UserInterface/External/Esprima/esprima.js: File updated, no changes made.

This says &quot;no changes made&quot;, yet there are lots and lots of changes. In fact the version went from 1.2.2 to 2.0.0-dev:

    - exports.version = &apos;1.2.2&apos;;
    + exports.version = &apos;2.0.0-dev&apos;;

Was this intentional? Are there compatibility differences between the versions that we will need to address?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047719</commentid>
    <comment_count>5</comment_count>
      <attachid>241324</attachid>
    <who name="Jonathan Wells">jonowells</who>
    <bug_when>2014-11-10 18:04:58 -0800</bug_when>
    <thetext>Created attachment 241324
[PATCH] Correct esprima version

Pulled incorrect tag before. Here is the correct version: 1.2.2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047720</commentid>
    <comment_count>6</comment_count>
      <attachid>241325</attachid>
    <who name="Jonathan Wells">jonowells</who>
    <bug_when>2014-11-10 18:06:10 -0800</bug_when>
    <thetext>Created attachment 241325
[PATCH] Correct esprima version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047743</commentid>
    <comment_count>7</comment_count>
      <attachid>241325</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-10 20:58:28 -0800</bug_when>
    <thetext>Comment on attachment 241325
[PATCH] Correct esprima version.

Clearing flags on attachment: 241325

Committed r175850: &lt;http://trac.webkit.org/changeset/175850&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047744</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-10 20:58:31 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241314</attachid>
            <date>2014-11-10 15:52:35 -0800</date>
            <delta_ts>2014-11-10 18:04:58 -0800</delta_ts>
            <desc>[Patch] Suggested fix.</desc>
            <filename>esprima.diff</filename>
            <type>text/plain</type>
            <size>128421</size>
            <attacher name="Jonathan Wells">jonowells</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDUzMWJhNTYuLmRiNjY4MzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIwIEBACiAyMDE0LTExLTEwICBKb25hdGhhbiBXZWxs
cyAgPGpvbm93ZWxsc0BhcHBsZS5jb20+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogVXBkYXRl
IEVzcHJpbWEsIHJlbW92ZSBXZWJJbnNwZWN0b3IuRXNwcmltYSBnbG9iYWwuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg1NzkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgZXNwcmltYS5qcyBm
aWxlIHRvIGJlIHVuY2hhbmdlZCBieSByZW1vdmluZyBXZWJJbnNwZWN0b3IuRXNwcmltYSBnbG9i
YWwgb2JqZWN0LiBNb3ZlIGVzcHJpbWEuanMgaW5jbHVkZQorICAgICAgICBzbyB0aGF0IGFsbCBl
eHRlcm5hbCBsaWJyYXJpZXMgbG9hZCBiZWZvcmUgdGhlIFdlYkluc3BlY3RvciBuYW1lc3BhY2Ug
aXMgZGVjbGFyZWQgaW4gdGhlIGNvbWJpbmVkIE1haW4uanMuCisKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL0V4dGVybmFsL0VzcHJpbWEvZXNwcmltYS5qczogRmlsZSB1cGRhdGVkLCBubyBjaGFu
Z2VzIG1hZGUuCisgICAgICAgICogVXNlckludGVyZmFjZS9NYWluLmh0bWw6IGVzcHJpbWEuanMg
c2NyaXB0IHRhZyBtb3ZlZCB1cCB3aXRoIG90aGVyIGV4dGVybmFscy4KKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL01vZGVscy9TY3JpcHRTeW50YXhUcmVlLmpzOiBXZWJJbnNwZWN0b3IuRXNwcmlt
YSBjaGFuZ2VkIHRvIGVzcHJpbWEKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhU
cmVlKToKKworMjAxNC0xMS0xMCAgSm9uYXRoYW4gV2VsbHMgIDxqb25vd2VsbHNAYXBwbGUuY29t
PgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBpbmZyYXN0cnVjdHVyZSBmb3IgZXNsaW50
IGJhc2VkIHN0YXRpYyBhbmFseXplcgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM3ODkwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0VzcHJpbWEvZXNwcmltYS5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0VzcHJpbWEvZXNwcmltYS5qcwppbmRl
eCA5NDFiMmQzLi43M2JhMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9FeHRlcm5hbC9Fc3ByaW1hL2VzcHJpbWEuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvRXNwcmltYS9lc3ByaW1hLmpzCkBAIC0x
LDU5ICsxLDc4IEBACiAvKgotICBDb3B5cmlnaHQgKEMpIDIwMTMgQXJpeWEgSGlkYXlhdCA8YXJp
eWEuaGlkYXlhdEBnbWFpbC5jb20+Ci0gIENvcHlyaWdodCAoQykgMjAxMyBUaGFkZGVlIFR5bCA8
dGhhZGRlZS50eWxAZ21haWwuY29tPgotICBDb3B5cmlnaHQgKEMpIDIwMTMgTWF0aGlhcyBCeW5l
bnMgPG1hdGhpYXNAcWl3aS5iZT4KLSAgQ29weXJpZ2h0IChDKSAyMDEyIEFyaXlhIEhpZGF5YXQg
PGFyaXlhLmhpZGF5YXRAZ21haWwuY29tPgotICBDb3B5cmlnaHQgKEMpIDIwMTIgTWF0aGlhcyBC
eW5lbnMgPG1hdGhpYXNAcWl3aS5iZT4KLSAgQ29weXJpZ2h0IChDKSAyMDEyIEpvb3N0LVdpbSBC
b2VrZXN0ZWlqbiA8am9vc3Qtd2ltQGJvZWtlc3RlaWpuLm5sPgotICBDb3B5cmlnaHQgKEMpIDIw
MTIgS3JpcyBLb3dhbCA8a3Jpcy5rb3dhbEBjaXhhci5jb20+Ci0gIENvcHlyaWdodCAoQykgMjAx
MiBZdXN1a2UgU3V6dWtpIDx1dGF0YW5lLnRlYUBnbWFpbC5jb20+Ci0gIENvcHlyaWdodCAoQykg
MjAxMiBBcnBhZCBCb3Jzb3MgPGFycGFkLmJvcnNvc0Bnb29nbGVtYWlsLmNvbT4KLSAgQ29weXJp
Z2h0IChDKSAyMDExIEFyaXlhIEhpZGF5YXQgPGFyaXlhLmhpZGF5YXRAZ21haWwuY29tPgotCi0g
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLQotICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAgICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gICAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
Ci0gIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMgIkFTIElTIgotICBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ
VVJQT1NFCi0gIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCA8Q09QWVJJR0hUIEhP
TERFUj4gQkUgTElBQkxFIEZPUiBBTlkKLSAgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOwotICBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GCi0gIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0qLwotCi0vLyBXZWJLaXQgTW9kaWZpY2F0aW9u
czoKLS8vIC0gVGhlIG9ubHkgZWRpdCBtYWRlIHRvIHRoaXMgZmlsZSBpcyB0aGUgdXNlICdXZWJJ
bnNwZWN0b3IuRXNwcmltYScgYXMgdGhlICdleHBvcnRzJyBvYmplY3QgZm9yIGVzcHJpbWEuCi0v
LyAgIFRoZSBjb2RlIHRoYXQgZGV0ZXJtaW5lcyB0aGUgY29udGV4dCBlc3ByaW1hIGlzIGxvYWRl
ZCBpbiAobm9kZS5qcywgdGhlIGJyb3dzZXIsIGV0Yy4pIGhhcyBiZWVuIHJlcGxhY2VkIHdpdGgg
YSByZWZlcmVuY2UgdG8gJ1dlYkluc3BlY3Rvci5Fc3ByaW1hJy4KLVdlYkluc3BlY3Rvci5Fc3By
aW1hID0ge307Ci0KLShmdW5jdGlvbiAoZXhwb3J0cykgeworIENvcHlyaWdodCAoQykgMjAxMyBB
cml5YSBIaWRheWF0IDxhcml5YS5oaWRheWF0QGdtYWlsLmNvbT4KKyBDb3B5cmlnaHQgKEMpIDIw
MTMgVGhhZGRlZSBUeWwgPHRoYWRkZWUudHlsQGdtYWlsLmNvbT4KKyBDb3B5cmlnaHQgKEMpIDIw
MTMgTWF0aGlhcyBCeW5lbnMgPG1hdGhpYXNAcWl3aS5iZT4KKyBDb3B5cmlnaHQgKEMpIDIwMTIg
QXJpeWEgSGlkYXlhdCA8YXJpeWEuaGlkYXlhdEBnbWFpbC5jb20+CisgQ29weXJpZ2h0IChDKSAy
MDEyIE1hdGhpYXMgQnluZW5zIDxtYXRoaWFzQHFpd2kuYmU+CisgQ29weXJpZ2h0IChDKSAyMDEy
IEpvb3N0LVdpbSBCb2VrZXN0ZWlqbiA8am9vc3Qtd2ltQGJvZWtlc3RlaWpuLm5sPgorIENvcHly
aWdodCAoQykgMjAxMiBLcmlzIEtvd2FsIDxrcmlzLmtvd2FsQGNpeGFyLmNvbT4KKyBDb3B5cmln
aHQgKEMpIDIwMTIgWXVzdWtlIFN1enVraSA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorIENvcHly
aWdodCAoQykgMjAxMiBBcnBhZCBCb3Jzb3MgPGFycGFkLmJvcnNvc0Bnb29nbGVtYWlsLmNvbT4K
KyBDb3B5cmlnaHQgKEMpIDIwMTEgQXJpeWEgSGlkYXlhdCA8YXJpeWEuaGlkYXlhdEBnbWFpbC5j
b20+CisKKyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKworICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCisgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAi
QVMgSVMiCisgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCisgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIDxDT1BZUklHSFQgSE9MREVSPiBCRSBMSUFCTEUgRk9S
IEFOWQorIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworIExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORAorIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisvKmpzbGludCBiaXR3aXNlOnRydWUgcGx1c3BsdXM6dHJ1ZSAqLworLypnbG9i
YWwgZXNwcmltYTp0cnVlLCBkZWZpbmU6dHJ1ZSwgZXhwb3J0czp0cnVlLCB3aW5kb3c6IHRydWUs
CisgdGhyb3dFcnJvclRvbGVyYW50OiB0cnVlLAorIHRocm93RXJyb3I6IHRydWUsIGdlbmVyYXRl
U3RhdGVtZW50OiB0cnVlLCBwZWVrOiB0cnVlLAorIHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb246
IHRydWUsIHBhcnNlQmxvY2s6IHRydWUsIHBhcnNlRXhwcmVzc2lvbjogdHJ1ZSwKKyBwYXJzZUZ1
bmN0aW9uRGVjbGFyYXRpb246IHRydWUsIHBhcnNlRnVuY3Rpb25FeHByZXNzaW9uOiB0cnVlLAor
IHBhcnNlRnVuY3Rpb25Tb3VyY2VFbGVtZW50czogdHJ1ZSwgcGFyc2VWYXJpYWJsZUlkZW50aWZp
ZXI6IHRydWUsCisgcGFyc2VMZWZ0SGFuZFNpZGVFeHByZXNzaW9uOiB0cnVlLCBwYXJzZVBhcmFt
czogdHJ1ZSwgdmFsaWRhdGVQYXJhbTogdHJ1ZSwKKyBwYXJzZVVuYXJ5RXhwcmVzc2lvbjogdHJ1
ZSwKKyBwYXJzZVN0YXRlbWVudDogdHJ1ZSwgcGFyc2VTb3VyY2VFbGVtZW50OiB0cnVlICovCisK
KyhmdW5jdGlvbiAocm9vdCwgZmFjdG9yeSkgeworICAgICd1c2Ugc3RyaWN0JzsKKworICAgIC8v
IFVuaXZlcnNhbCBNb2R1bGUgRGVmaW5pdGlvbiAoVU1EKSB0byBzdXBwb3J0IEFNRCwgQ29tbW9u
SlMvTm9kZS5qcywKKyAgICAvLyBSaGlubywgYW5kIHBsYWluIGJyb3dzZXIgbG9hZGluZy4KKwor
ICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovCisgICAgaWYgKHR5cGVvZiBkZWZpbmUgPT09
ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkgeworICAgICAgICBkZWZpbmUoWydleHBvcnRzJ10s
IGZhY3RvcnkpOworICAgIH0gZWxzZSBpZiAodHlwZW9mIGV4cG9ydHMgIT09ICd1bmRlZmluZWQn
KSB7CisgICAgICAgIGZhY3RvcnkoZXhwb3J0cyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZmFj
dG9yeSgocm9vdC5lc3ByaW1hID0ge30pKTsKKyAgICB9Cit9KHRoaXMsIGZ1bmN0aW9uIChleHBv
cnRzKSB7CiAgICAgJ3VzZSBzdHJpY3QnOwogCiAgICAgdmFyIFRva2VuLAogICAgICAgICBUb2tl
bk5hbWUsCiAgICAgICAgIEZuRXhwclRva2VucywKICAgICAgICAgU3ludGF4LAorICAgICAgICBQ
bGFjZUhvbGRlcnMsCiAgICAgICAgIFByb3BlcnR5S2luZCwKICAgICAgICAgTWVzc2FnZXMsCiAg
ICAgICAgIFJlZ2V4LAotICAgICAgICBTeW50YXhUcmVlRGVsZWdhdGUsCiAgICAgICAgIHNvdXJj
ZSwKICAgICAgICAgc3RyaWN0LAogICAgICAgICBpbmRleCwKICAgICAgICAgbGluZU51bWJlciwK
ICAgICAgICAgbGluZVN0YXJ0LAogICAgICAgICBsZW5ndGgsCi0gICAgICAgIGRlbGVnYXRlLAog
ICAgICAgICBsb29rYWhlYWQsCiAgICAgICAgIHN0YXRlLAogICAgICAgICBleHRyYTsKQEAgLTgz
LDE4ICsxMDIsMTkgQEAgV2ViSW5zcGVjdG9yLkVzcHJpbWEgPSB7fTsKIAogICAgIC8vIEEgZnVu
Y3Rpb24gZm9sbG93aW5nIG9uZSBvZiB0aG9zZSB0b2tlbnMgaXMgYW4gZXhwcmVzc2lvbi4KICAg
ICBGbkV4cHJUb2tlbnMgPSBbJygnLCAneycsICdbJywgJ2luJywgJ3R5cGVvZicsICdpbnN0YW5j
ZW9mJywgJ25ldycsCi0gICAgICAgICAgICAgICAgICAgICdyZXR1cm4nLCAnY2FzZScsICdkZWxl
dGUnLCAndGhyb3cnLCAndm9pZCcsCi0gICAgICAgICAgICAgICAgICAgIC8vIGFzc2lnbm1lbnQg
b3BlcmF0b3JzCi0gICAgICAgICAgICAgICAgICAgICc9JywgJys9JywgJy09JywgJyo9JywgJy89
JywgJyU9JywgJzw8PScsICc+Pj0nLCAnPj4+PScsCi0gICAgICAgICAgICAgICAgICAgICcmPScs
ICd8PScsICdePScsICcsJywKLSAgICAgICAgICAgICAgICAgICAgLy8gYmluYXJ5L3VuYXJ5IG9w
ZXJhdG9ycwotICAgICAgICAgICAgICAgICAgICAnKycsICctJywgJyonLCAnLycsICclJywgJysr
JywgJy0tJywgJzw8JywgJz4+JywgJz4+PicsICcmJywKLSAgICAgICAgICAgICAgICAgICAgJ3wn
LCAnXicsICchJywgJ34nLCAnJiYnLCAnfHwnLCAnPycsICc6JywgJz09PScsICc9PScsICc+PScs
Ci0gICAgICAgICAgICAgICAgICAgICc8PScsICc8JywgJz4nLCAnIT0nLCAnIT09J107CisgICAg
ICAgICdyZXR1cm4nLCAnY2FzZScsICdkZWxldGUnLCAndGhyb3cnLCAndm9pZCcsCisgICAgICAg
IC8vIGFzc2lnbm1lbnQgb3BlcmF0b3JzCisgICAgICAgICc9JywgJys9JywgJy09JywgJyo9Jywg
Jy89JywgJyU9JywgJzw8PScsICc+Pj0nLCAnPj4+PScsCisgICAgICAgICcmPScsICd8PScsICde
PScsICcsJywKKyAgICAgICAgLy8gYmluYXJ5L3VuYXJ5IG9wZXJhdG9ycworICAgICAgICAnKycs
ICctJywgJyonLCAnLycsICclJywgJysrJywgJy0tJywgJzw8JywgJz4+JywgJz4+PicsICcmJywK
KyAgICAgICAgJ3wnLCAnXicsICchJywgJ34nLCAnJiYnLCAnfHwnLCAnPycsICc6JywgJz09PScs
ICc9PScsICc+PScsCisgICAgICAgICc8PScsICc8JywgJz4nLCAnIT0nLCAnIT09J107CiAKICAg
ICBTeW50YXggPSB7CiAgICAgICAgIEFzc2lnbm1lbnRFeHByZXNzaW9uOiAnQXNzaWdubWVudEV4
cHJlc3Npb24nLAogICAgICAgICBBcnJheUV4cHJlc3Npb246ICdBcnJheUV4cHJlc3Npb24nLAor
ICAgICAgICBBcnJvd0Z1bmN0aW9uRXhwcmVzc2lvbjogJ0Fycm93RnVuY3Rpb25FeHByZXNzaW9u
JywKICAgICAgICAgQmxvY2tTdGF0ZW1lbnQ6ICdCbG9ja1N0YXRlbWVudCcsCiAgICAgICAgIEJp
bmFyeUV4cHJlc3Npb246ICdCaW5hcnlFeHByZXNzaW9uJywKICAgICAgICAgQnJlYWtTdGF0ZW1l
bnQ6ICdCcmVha1N0YXRlbWVudCcsCkBAIC0xMzUsNiArMTU1LDEyIEBAIFdlYkluc3BlY3Rvci5F
c3ByaW1hID0ge307CiAgICAgICAgIFdpdGhTdGF0ZW1lbnQ6ICdXaXRoU3RhdGVtZW50JwogICAg
IH07CiAKKyAgICBQbGFjZUhvbGRlcnMgPSB7CisgICAgICAgIEFycm93UGFyYW1ldGVyUGxhY2VI
b2xkZXI6IHsKKyAgICAgICAgICAgIHR5cGU6ICdBcnJvd1BhcmFtZXRlclBsYWNlSG9sZGVyJwor
ICAgICAgICB9CisgICAgfTsKKwogICAgIFByb3BlcnR5S2luZCA9IHsKICAgICAgICAgRGF0YTog
MSwKICAgICAgICAgR2V0OiAyLApAQCAtMTgwLDggKzIwNiw4IEBAIFdlYkluc3BlY3Rvci5Fc3By
aW1hID0ge307CiAKICAgICAvLyBTZWUgYWxzbyB0b29scy9nZW5lcmF0ZS11bmljb2RlLXJlZ2V4
LnB5LgogICAgIFJlZ2V4ID0gewotICAgICAgICBOb25Bc2NpaUlkZW50aWZpZXJTdGFydDogbmV3
IFJlZ0V4cCgnW1x4QUFceEI1XHhCQVx4QzAtXHhENlx4RDgtXHhGNlx4RjgtXHUwMkMxXHUwMkM2
LVx1MDJEMVx1MDJFMC1cdTAyRTRcdTAyRUNcdTAyRUVcdTAzNzAtXHUwMzc0XHUwMzc2XHUwMzc3
XHUwMzdBLVx1MDM3RFx1MDM4Nlx1MDM4OC1cdTAzOEFcdTAzOENcdTAzOEUtXHUwM0ExXHUwM0Ez
LVx1MDNGNVx1MDNGNy1cdTA0ODFcdTA0OEEtXHUwNTI3XHUwNTMxLVx1MDU1Nlx1MDU1OVx1MDU2
MS1cdTA1ODdcdTA1RDAtXHUwNUVBXHUwNUYwLVx1MDVGMlx1MDYyMC1cdTA2NEFcdTA2NkVcdTA2
NkZcdTA2NzEtXHUwNkQzXHUwNkQ1XHUwNkU1XHUwNkU2XHUwNkVFXHUwNkVGXHUwNkZBLVx1MDZG
Q1x1MDZGRlx1MDcxMFx1MDcxMi1cdTA3MkZcdTA3NEQtXHUwN0E1XHUwN0IxXHUwN0NBLVx1MDdF
QVx1MDdGNFx1MDdGNVx1MDdGQVx1MDgwMC1cdTA4MTVcdTA4MUFcdTA4MjRcdTA4MjhcdTA4NDAt
XHUwODU4XHUwOEEwXHUwOEEyLVx1MDhBQ1x1MDkwNC1cdTA5MzlcdTA5M0RcdTA5NTBcdTA5NTgt
XHUwOTYxXHUwOTcxLVx1MDk3N1x1MDk3OS1cdTA5N0ZcdTA5ODUtXHUwOThDXHUwOThGXHUwOTkw
XHUwOTkzLVx1MDlBOFx1MDlBQS1cdTA5QjBcdTA5QjJcdTA5QjYtXHUwOUI5XHUwOUJEXHUwOUNF
XHUwOURDXHUwOUREXHUwOURGLVx1MDlFMVx1MDlGMFx1MDlGMVx1MEEwNS1cdTBBMEFcdTBBMEZc
dTBBMTBcdTBBMTMtXHUwQTI4XHUwQTJBLVx1MEEzMFx1MEEzMlx1MEEzM1x1MEEzNVx1MEEzNlx1
MEEzOFx1MEEzOVx1MEE1OS1cdTBBNUNcdTBBNUVcdTBBNzItXHUwQTc0XHUwQTg1LVx1MEE4RFx1
MEE4Ri1cdTBBOTFcdTBBOTMtXHUwQUE4XHUwQUFBLVx1MEFCMFx1MEFCMlx1MEFCM1x1MEFCNS1c
dTBBQjlcdTBBQkRcdTBBRDBcdTBBRTBcdTBBRTFcdTBCMDUtXHUwQjBDXHUwQjBGXHUwQjEwXHUw
QjEzLVx1MEIyOFx1MEIyQS1cdTBCMzBcdTBCMzJcdTBCMzNcdTBCMzUtXHUwQjM5XHUwQjNEXHUw
QjVDXHUwQjVEXHUwQjVGLVx1MEI2MVx1MEI3MVx1MEI4M1x1MEI4NS1cdTBCOEFcdTBCOEUtXHUw
QjkwXHUwQjkyLVx1MEI5NVx1MEI5OVx1MEI5QVx1MEI5Q1x1MEI5RVx1MEI5Rlx1MEJBM1x1MEJB
NFx1MEJBOC1cdTBCQUFcdTBCQUUtXHUwQkI5XHUwQkQwXHUwQzA1LVx1MEMwQ1x1MEMwRS1cdTBD
MTBcdTBDMTItXHUwQzI4XHUwQzJBLVx1MEMzM1x1MEMzNS1cdTBDMzlcdTBDM0RcdTBDNThcdTBD
NTlcdTBDNjBcdTBDNjFcdTBDODUtXHUwQzhDXHUwQzhFLVx1MEM5MFx1MEM5Mi1cdTBDQThcdTBD
QUEtXHUwQ0IzXHUwQ0I1LVx1MENCOVx1MENCRFx1MENERVx1MENFMFx1MENFMVx1MENGMVx1MENG
Mlx1MEQwNS1cdTBEMENcdTBEMEUtXHUwRDEwXHUwRDEyLVx1MEQzQVx1MEQzRFx1MEQ0RVx1MEQ2
MFx1MEQ2MVx1MEQ3QS1cdTBEN0ZcdTBEODUtXHUwRDk2XHUwRDlBLVx1MERCMVx1MERCMy1cdTBE
QkJcdTBEQkRcdTBEQzAtXHUwREM2XHUwRTAxLVx1MEUzMFx1MEUzMlx1MEUzM1x1MEU0MC1cdTBF
NDZcdTBFODFcdTBFODJcdTBFODRcdTBFODdcdTBFODhcdTBFOEFcdTBFOERcdTBFOTQtXHUwRTk3
XHUwRTk5LVx1MEU5Rlx1MEVBMS1cdTBFQTNcdTBFQTVcdTBFQTdcdTBFQUFcdTBFQUJcdTBFQUQt
XHUwRUIwXHUwRUIyXHUwRUIzXHUwRUJEXHUwRUMwLVx1MEVDNFx1MEVDNlx1MEVEQy1cdTBFREZc
dTBGMDBcdTBGNDAtXHUwRjQ3XHUwRjQ5LVx1MEY2Q1x1MEY4OC1cdTBGOENcdTEwMDAtXHUxMDJB
XHUxMDNGXHUxMDUwLVx1MTA1NVx1MTA1QS1cdTEwNURcdTEwNjFcdTEwNjVcdTEwNjZcdTEwNkUt
XHUxMDcwXHUxMDc1LVx1MTA4MVx1MTA4RVx1MTBBMC1cdTEwQzVcdTEwQzdcdTEwQ0RcdTEwRDAt
XHUxMEZBXHUxMEZDLVx1MTI0OFx1MTI0QS1cdTEyNERcdTEyNTAtXHUxMjU2XHUxMjU4XHUxMjVB
LVx1MTI1RFx1MTI2MC1cdTEyODhcdTEyOEEtXHUxMjhEXHUxMjkwLVx1MTJCMFx1MTJCMi1cdTEy
QjVcdTEyQjgtXHUxMkJFXHUxMkMwXHUxMkMyLVx1MTJDNVx1MTJDOC1cdTEyRDZcdTEyRDgtXHUx
MzEwXHUxMzEyLVx1MTMxNVx1MTMxOC1cdTEzNUFcdTEzODAtXHUxMzhGXHUxM0EwLVx1MTNGNFx1
MTQwMS1cdTE2NkNcdTE2NkYtXHUxNjdGXHUxNjgxLVx1MTY5QVx1MTZBMC1cdTE2RUFcdTE2RUUt
XHUxNkYwXHUxNzAwLVx1MTcwQ1x1MTcwRS1cdTE3MTFcdTE3MjAtXHUxNzMxXHUxNzQwLVx1MTc1
MVx1MTc2MC1cdTE3NkNcdTE3NkUtXHUxNzcwXHUxNzgwLVx1MTdCM1x1MTdEN1x1MTdEQ1x1MTgy
MC1cdTE4NzdcdTE4ODAtXHUxOEE4XHUxOEFBXHUxOEIwLVx1MThGNVx1MTkwMC1cdTE5MUNcdTE5
NTAtXHUxOTZEXHUxOTcwLVx1MTk3NFx1MTk4MC1cdTE5QUJcdTE5QzEtXHUxOUM3XHUxQTAwLVx1
MUExNlx1MUEyMC1cdTFBNTRcdTFBQTdcdTFCMDUtXHUxQjMzXHUxQjQ1LVx1MUI0Qlx1MUI4My1c
dTFCQTBcdTFCQUVcdTFCQUZcdTFCQkEtXHUxQkU1XHUxQzAwLVx1MUMyM1x1MUM0RC1cdTFDNEZc
dTFDNUEtXHUxQzdEXHUxQ0U5LVx1MUNFQ1x1MUNFRS1cdTFDRjFcdTFDRjVcdTFDRjZcdTFEMDAt
XHUxREJGXHUxRTAwLVx1MUYxNVx1MUYxOC1cdTFGMURcdTFGMjAtXHUxRjQ1XHUxRjQ4LVx1MUY0
RFx1MUY1MC1cdTFGNTdcdTFGNTlcdTFGNUJcdTFGNURcdTFGNUYtXHUxRjdEXHUxRjgwLVx1MUZC
NFx1MUZCNi1cdTFGQkNcdTFGQkVcdTFGQzItXHUxRkM0XHUxRkM2LVx1MUZDQ1x1MUZEMC1cdTFG
RDNcdTFGRDYtXHUxRkRCXHUxRkUwLVx1MUZFQ1x1MUZGMi1cdTFGRjRcdTFGRjYtXHUxRkZDXHUy
MDcxXHUyMDdGXHUyMDkwLVx1MjA5Q1x1MjEwMlx1MjEwN1x1MjEwQS1cdTIxMTNcdTIxMTVcdTIx
MTktXHUyMTFEXHUyMTI0XHUyMTI2XHUyMTI4XHUyMTJBLVx1MjEyRFx1MjEyRi1cdTIxMzlcdTIx
M0MtXHUyMTNGXHUyMTQ1LVx1MjE0OVx1MjE0RVx1MjE2MC1cdTIxODhcdTJDMDAtXHUyQzJFXHUy
QzMwLVx1MkM1RVx1MkM2MC1cdTJDRTRcdTJDRUItXHUyQ0VFXHUyQ0YyXHUyQ0YzXHUyRDAwLVx1
MkQyNVx1MkQyN1x1MkQyRFx1MkQzMC1cdTJENjdcdTJENkZcdTJEODAtXHUyRDk2XHUyREEwLVx1
MkRBNlx1MkRBOC1cdTJEQUVcdTJEQjAtXHUyREI2XHUyREI4LVx1MkRCRVx1MkRDMC1cdTJEQzZc
dTJEQzgtXHUyRENFXHUyREQwLVx1MkRENlx1MkREOC1cdTJEREVcdTJFMkZcdTMwMDUtXHUzMDA3
XHUzMDIxLVx1MzAyOVx1MzAzMS1cdTMwMzVcdTMwMzgtXHUzMDNDXHUzMDQxLVx1MzA5Nlx1MzA5
RC1cdTMwOUZcdTMwQTEtXHUzMEZBXHUzMEZDLVx1MzBGRlx1MzEwNS1cdTMxMkRcdTMxMzEtXHUz
MThFXHUzMUEwLVx1MzFCQVx1MzFGMC1cdTMxRkZcdTM0MDAtXHU0REI1XHU0RTAwLVx1OUZDQ1x1
QTAwMC1cdUE0OENcdUE0RDAtXHVBNEZEXHVBNTAwLVx1QTYwQ1x1QTYxMC1cdUE2MUZcdUE2MkFc
dUE2MkJcdUE2NDAtXHVBNjZFXHVBNjdGLVx1QTY5N1x1QTZBMC1cdUE2RUZcdUE3MTctXHVBNzFG
XHVBNzIyLVx1QTc4OFx1QTc4Qi1cdUE3OEVcdUE3OTAtXHVBNzkzXHVBN0EwLVx1QTdBQVx1QTdG
OC1cdUE4MDFcdUE4MDMtXHVBODA1XHVBODA3LVx1QTgwQVx1QTgwQy1cdUE4MjJcdUE4NDAtXHVB
ODczXHVBODgyLVx1QThCM1x1QThGMi1cdUE4RjdcdUE4RkJcdUE5MEEtXHVBOTI1XHVBOTMwLVx1
QTk0Nlx1QTk2MC1cdUE5N0NcdUE5ODQtXHVBOUIyXHVBOUNGXHVBQTAwLVx1QUEyOFx1QUE0MC1c
dUFBNDJcdUFBNDQtXHVBQTRCXHVBQTYwLVx1QUE3Nlx1QUE3QVx1QUE4MC1cdUFBQUZcdUFBQjFc
dUFBQjVcdUFBQjZcdUFBQjktXHVBQUJEXHVBQUMwXHVBQUMyXHVBQURCLVx1QUFERFx1QUFFMC1c
dUFBRUFcdUFBRjItXHVBQUY0XHVBQjAxLVx1QUIwNlx1QUIwOS1cdUFCMEVcdUFCMTEtXHVBQjE2
XHVBQjIwLVx1QUIyNlx1QUIyOC1cdUFCMkVcdUFCQzAtXHVBQkUyXHVBQzAwLVx1RDdBM1x1RDdC
MC1cdUQ3QzZcdUQ3Q0ItXHVEN0ZCXHVGOTAwLVx1RkE2RFx1RkE3MC1cdUZBRDlcdUZCMDAtXHVG
QjA2XHVGQjEzLVx1RkIxN1x1RkIxRFx1RkIxRi1cdUZCMjhcdUZCMkEtXHVGQjM2XHVGQjM4LVx1
RkIzQ1x1RkIzRVx1RkI0MFx1RkI0MVx1RkI0M1x1RkI0NFx1RkI0Ni1cdUZCQjFcdUZCRDMtXHVG
RDNEXHVGRDUwLVx1RkQ4Rlx1RkQ5Mi1cdUZEQzdcdUZERjAtXHVGREZCXHVGRTcwLVx1RkU3NFx1
RkU3Ni1cdUZFRkNcdUZGMjEtXHVGRjNBXHVGRjQxLVx1RkY1QVx1RkY2Ni1cdUZGQkVcdUZGQzIt
XHVGRkM3XHVGRkNBLVx1RkZDRlx1RkZEMi1cdUZGRDdcdUZGREEtXHVGRkRDXScpLAotICAgICAg
ICBOb25Bc2NpaUlkZW50aWZpZXJQYXJ0OiBuZXcgUmVnRXhwKCdbXHhBQVx4QjVceEJBXHhDMC1c
eEQ2XHhEOC1ceEY2XHhGOC1cdTAyQzFcdTAyQzYtXHUwMkQxXHUwMkUwLVx1MDJFNFx1MDJFQ1x1
MDJFRVx1MDMwMC1cdTAzNzRcdTAzNzZcdTAzNzdcdTAzN0EtXHUwMzdEXHUwMzg2XHUwMzg4LVx1
MDM4QVx1MDM4Q1x1MDM4RS1cdTAzQTFcdTAzQTMtXHUwM0Y1XHUwM0Y3LVx1MDQ4MVx1MDQ4My1c
dTA0ODdcdTA0OEEtXHUwNTI3XHUwNTMxLVx1MDU1Nlx1MDU1OVx1MDU2MS1cdTA1ODdcdTA1OTEt
XHUwNUJEXHUwNUJGXHUwNUMxXHUwNUMyXHUwNUM0XHUwNUM1XHUwNUM3XHUwNUQwLVx1MDVFQVx1
MDVGMC1cdTA1RjJcdTA2MTAtXHUwNjFBXHUwNjIwLVx1MDY2OVx1MDY2RS1cdTA2RDNcdTA2RDUt
XHUwNkRDXHUwNkRGLVx1MDZFOFx1MDZFQS1cdTA2RkNcdTA2RkZcdTA3MTAtXHUwNzRBXHUwNzRE
LVx1MDdCMVx1MDdDMC1cdTA3RjVcdTA3RkFcdTA4MDAtXHUwODJEXHUwODQwLVx1MDg1Qlx1MDhB
MFx1MDhBMi1cdTA4QUNcdTA4RTQtXHUwOEZFXHUwOTAwLVx1MDk2M1x1MDk2Ni1cdTA5NkZcdTA5
NzEtXHUwOTc3XHUwOTc5LVx1MDk3Rlx1MDk4MS1cdTA5ODNcdTA5ODUtXHUwOThDXHUwOThGXHUw
OTkwXHUwOTkzLVx1MDlBOFx1MDlBQS1cdTA5QjBcdTA5QjJcdTA5QjYtXHUwOUI5XHUwOUJDLVx1
MDlDNFx1MDlDN1x1MDlDOFx1MDlDQi1cdTA5Q0VcdTA5RDdcdTA5RENcdTA5RERcdTA5REYtXHUw
OUUzXHUwOUU2LVx1MDlGMVx1MEEwMS1cdTBBMDNcdTBBMDUtXHUwQTBBXHUwQTBGXHUwQTEwXHUw
QTEzLVx1MEEyOFx1MEEyQS1cdTBBMzBcdTBBMzJcdTBBMzNcdTBBMzVcdTBBMzZcdTBBMzhcdTBB
MzlcdTBBM0NcdTBBM0UtXHUwQTQyXHUwQTQ3XHUwQTQ4XHUwQTRCLVx1MEE0RFx1MEE1MVx1MEE1
OS1cdTBBNUNcdTBBNUVcdTBBNjYtXHUwQTc1XHUwQTgxLVx1MEE4M1x1MEE4NS1cdTBBOERcdTBB
OEYtXHUwQTkxXHUwQTkzLVx1MEFBOFx1MEFBQS1cdTBBQjBcdTBBQjJcdTBBQjNcdTBBQjUtXHUw
QUI5XHUwQUJDLVx1MEFDNVx1MEFDNy1cdTBBQzlcdTBBQ0ItXHUwQUNEXHUwQUQwXHUwQUUwLVx1
MEFFM1x1MEFFNi1cdTBBRUZcdTBCMDEtXHUwQjAzXHUwQjA1LVx1MEIwQ1x1MEIwRlx1MEIxMFx1
MEIxMy1cdTBCMjhcdTBCMkEtXHUwQjMwXHUwQjMyXHUwQjMzXHUwQjM1LVx1MEIzOVx1MEIzQy1c
dTBCNDRcdTBCNDdcdTBCNDhcdTBCNEItXHUwQjREXHUwQjU2XHUwQjU3XHUwQjVDXHUwQjVEXHUw
QjVGLVx1MEI2M1x1MEI2Ni1cdTBCNkZcdTBCNzFcdTBCODJcdTBCODNcdTBCODUtXHUwQjhBXHUw
QjhFLVx1MEI5MFx1MEI5Mi1cdTBCOTVcdTBCOTlcdTBCOUFcdTBCOUNcdTBCOUVcdTBCOUZcdTBC
QTNcdTBCQTRcdTBCQTgtXHUwQkFBXHUwQkFFLVx1MEJCOVx1MEJCRS1cdTBCQzJcdTBCQzYtXHUw
QkM4XHUwQkNBLVx1MEJDRFx1MEJEMFx1MEJEN1x1MEJFNi1cdTBCRUZcdTBDMDEtXHUwQzAzXHUw
QzA1LVx1MEMwQ1x1MEMwRS1cdTBDMTBcdTBDMTItXHUwQzI4XHUwQzJBLVx1MEMzM1x1MEMzNS1c
dTBDMzlcdTBDM0QtXHUwQzQ0XHUwQzQ2LVx1MEM0OFx1MEM0QS1cdTBDNERcdTBDNTVcdTBDNTZc
dTBDNThcdTBDNTlcdTBDNjAtXHUwQzYzXHUwQzY2LVx1MEM2Rlx1MEM4Mlx1MEM4M1x1MEM4NS1c
dTBDOENcdTBDOEUtXHUwQzkwXHUwQzkyLVx1MENBOFx1MENBQS1cdTBDQjNcdTBDQjUtXHUwQ0I5
XHUwQ0JDLVx1MENDNFx1MENDNi1cdTBDQzhcdTBDQ0EtXHUwQ0NEXHUwQ0Q1XHUwQ0Q2XHUwQ0RF
XHUwQ0UwLVx1MENFM1x1MENFNi1cdTBDRUZcdTBDRjFcdTBDRjJcdTBEMDJcdTBEMDNcdTBEMDUt
XHUwRDBDXHUwRDBFLVx1MEQxMFx1MEQxMi1cdTBEM0FcdTBEM0QtXHUwRDQ0XHUwRDQ2LVx1MEQ0
OFx1MEQ0QS1cdTBENEVcdTBENTdcdTBENjAtXHUwRDYzXHUwRDY2LVx1MEQ2Rlx1MEQ3QS1cdTBE
N0ZcdTBEODJcdTBEODNcdTBEODUtXHUwRDk2XHUwRDlBLVx1MERCMVx1MERCMy1cdTBEQkJcdTBE
QkRcdTBEQzAtXHUwREM2XHUwRENBXHUwRENGLVx1MERENFx1MERENlx1MEREOC1cdTBEREZcdTBE
RjJcdTBERjNcdTBFMDEtXHUwRTNBXHUwRTQwLVx1MEU0RVx1MEU1MC1cdTBFNTlcdTBFODFcdTBF
ODJcdTBFODRcdTBFODdcdTBFODhcdTBFOEFcdTBFOERcdTBFOTQtXHUwRTk3XHUwRTk5LVx1MEU5
Rlx1MEVBMS1cdTBFQTNcdTBFQTVcdTBFQTdcdTBFQUFcdTBFQUJcdTBFQUQtXHUwRUI5XHUwRUJC
LVx1MEVCRFx1MEVDMC1cdTBFQzRcdTBFQzZcdTBFQzgtXHUwRUNEXHUwRUQwLVx1MEVEOVx1MEVE
Qy1cdTBFREZcdTBGMDBcdTBGMThcdTBGMTlcdTBGMjAtXHUwRjI5XHUwRjM1XHUwRjM3XHUwRjM5
XHUwRjNFLVx1MEY0N1x1MEY0OS1cdTBGNkNcdTBGNzEtXHUwRjg0XHUwRjg2LVx1MEY5N1x1MEY5
OS1cdTBGQkNcdTBGQzZcdTEwMDAtXHUxMDQ5XHUxMDUwLVx1MTA5RFx1MTBBMC1cdTEwQzVcdTEw
QzdcdTEwQ0RcdTEwRDAtXHUxMEZBXHUxMEZDLVx1MTI0OFx1MTI0QS1cdTEyNERcdTEyNTAtXHUx
MjU2XHUxMjU4XHUxMjVBLVx1MTI1RFx1MTI2MC1cdTEyODhcdTEyOEEtXHUxMjhEXHUxMjkwLVx1
MTJCMFx1MTJCMi1cdTEyQjVcdTEyQjgtXHUxMkJFXHUxMkMwXHUxMkMyLVx1MTJDNVx1MTJDOC1c
dTEyRDZcdTEyRDgtXHUxMzEwXHUxMzEyLVx1MTMxNVx1MTMxOC1cdTEzNUFcdTEzNUQtXHUxMzVG
XHUxMzgwLVx1MTM4Rlx1MTNBMC1cdTEzRjRcdTE0MDEtXHUxNjZDXHUxNjZGLVx1MTY3Rlx1MTY4
MS1cdTE2OUFcdTE2QTAtXHUxNkVBXHUxNkVFLVx1MTZGMFx1MTcwMC1cdTE3MENcdTE3MEUtXHUx
NzE0XHUxNzIwLVx1MTczNFx1MTc0MC1cdTE3NTNcdTE3NjAtXHUxNzZDXHUxNzZFLVx1MTc3MFx1
MTc3Mlx1MTc3M1x1MTc4MC1cdTE3RDNcdTE3RDdcdTE3RENcdTE3RERcdTE3RTAtXHUxN0U5XHUx
ODBCLVx1MTgwRFx1MTgxMC1cdTE4MTlcdTE4MjAtXHUxODc3XHUxODgwLVx1MThBQVx1MThCMC1c
dTE4RjVcdTE5MDAtXHUxOTFDXHUxOTIwLVx1MTkyQlx1MTkzMC1cdTE5M0JcdTE5NDYtXHUxOTZE
XHUxOTcwLVx1MTk3NFx1MTk4MC1cdTE5QUJcdTE5QjAtXHUxOUM5XHUxOUQwLVx1MTlEOVx1MUEw
MC1cdTFBMUJcdTFBMjAtXHUxQTVFXHUxQTYwLVx1MUE3Q1x1MUE3Ri1cdTFBODlcdTFBOTAtXHUx
QTk5XHUxQUE3XHUxQjAwLVx1MUI0Qlx1MUI1MC1cdTFCNTlcdTFCNkItXHUxQjczXHUxQjgwLVx1
MUJGM1x1MUMwMC1cdTFDMzdcdTFDNDAtXHUxQzQ5XHUxQzRELVx1MUM3RFx1MUNEMC1cdTFDRDJc
dTFDRDQtXHUxQ0Y2XHUxRDAwLVx1MURFNlx1MURGQy1cdTFGMTVcdTFGMTgtXHUxRjFEXHUxRjIw
LVx1MUY0NVx1MUY0OC1cdTFGNERcdTFGNTAtXHUxRjU3XHUxRjU5XHUxRjVCXHUxRjVEXHUxRjVG
LVx1MUY3RFx1MUY4MC1cdTFGQjRcdTFGQjYtXHUxRkJDXHUxRkJFXHUxRkMyLVx1MUZDNFx1MUZD
Ni1cdTFGQ0NcdTFGRDAtXHUxRkQzXHUxRkQ2LVx1MUZEQlx1MUZFMC1cdTFGRUNcdTFGRjItXHUx
RkY0XHUxRkY2LVx1MUZGQ1x1MjAwQ1x1MjAwRFx1MjAzRlx1MjA0MFx1MjA1NFx1MjA3MVx1MjA3
Rlx1MjA5MC1cdTIwOUNcdTIwRDAtXHUyMERDXHUyMEUxXHUyMEU1LVx1MjBGMFx1MjEwMlx1MjEw
N1x1MjEwQS1cdTIxMTNcdTIxMTVcdTIxMTktXHUyMTFEXHUyMTI0XHUyMTI2XHUyMTI4XHUyMTJB
LVx1MjEyRFx1MjEyRi1cdTIxMzlcdTIxM0MtXHUyMTNGXHUyMTQ1LVx1MjE0OVx1MjE0RVx1MjE2
MC1cdTIxODhcdTJDMDAtXHUyQzJFXHUyQzMwLVx1MkM1RVx1MkM2MC1cdTJDRTRcdTJDRUItXHUy
Q0YzXHUyRDAwLVx1MkQyNVx1MkQyN1x1MkQyRFx1MkQzMC1cdTJENjdcdTJENkZcdTJEN0YtXHUy
RDk2XHUyREEwLVx1MkRBNlx1MkRBOC1cdTJEQUVcdTJEQjAtXHUyREI2XHUyREI4LVx1MkRCRVx1
MkRDMC1cdTJEQzZcdTJEQzgtXHUyRENFXHUyREQwLVx1MkRENlx1MkREOC1cdTJEREVcdTJERTAt
XHUyREZGXHUyRTJGXHUzMDA1LVx1MzAwN1x1MzAyMS1cdTMwMkZcdTMwMzEtXHUzMDM1XHUzMDM4
LVx1MzAzQ1x1MzA0MS1cdTMwOTZcdTMwOTlcdTMwOUFcdTMwOUQtXHUzMDlGXHUzMEExLVx1MzBG
QVx1MzBGQy1cdTMwRkZcdTMxMDUtXHUzMTJEXHUzMTMxLVx1MzE4RVx1MzFBMC1cdTMxQkFcdTMx
RjAtXHUzMUZGXHUzNDAwLVx1NERCNVx1NEUwMC1cdTlGQ0NcdUEwMDAtXHVBNDhDXHVBNEQwLVx1
QTRGRFx1QTUwMC1cdUE2MENcdUE2MTAtXHVBNjJCXHVBNjQwLVx1QTY2Rlx1QTY3NC1cdUE2N0Rc
dUE2N0YtXHVBNjk3XHVBNjlGLVx1QTZGMVx1QTcxNy1cdUE3MUZcdUE3MjItXHVBNzg4XHVBNzhC
LVx1QTc4RVx1QTc5MC1cdUE3OTNcdUE3QTAtXHVBN0FBXHVBN0Y4LVx1QTgyN1x1QTg0MC1cdUE4
NzNcdUE4ODAtXHVBOEM0XHVBOEQwLVx1QThEOVx1QThFMC1cdUE4RjdcdUE4RkJcdUE5MDAtXHVB
OTJEXHVBOTMwLVx1QTk1M1x1QTk2MC1cdUE5N0NcdUE5ODAtXHVBOUMwXHVBOUNGLVx1QTlEOVx1
QUEwMC1cdUFBMzZcdUFBNDAtXHVBQTREXHVBQTUwLVx1QUE1OVx1QUE2MC1cdUFBNzZcdUFBN0Fc
dUFBN0JcdUFBODAtXHVBQUMyXHVBQURCLVx1QUFERFx1QUFFMC1cdUFBRUZcdUFBRjItXHVBQUY2
XHVBQjAxLVx1QUIwNlx1QUIwOS1cdUFCMEVcdUFCMTEtXHVBQjE2XHVBQjIwLVx1QUIyNlx1QUIy
OC1cdUFCMkVcdUFCQzAtXHVBQkVBXHVBQkVDXHVBQkVEXHVBQkYwLVx1QUJGOVx1QUMwMC1cdUQ3
QTNcdUQ3QjAtXHVEN0M2XHVEN0NCLVx1RDdGQlx1RjkwMC1cdUZBNkRcdUZBNzAtXHVGQUQ5XHVG
QjAwLVx1RkIwNlx1RkIxMy1cdUZCMTdcdUZCMUQtXHVGQjI4XHVGQjJBLVx1RkIzNlx1RkIzOC1c
dUZCM0NcdUZCM0VcdUZCNDBcdUZCNDFcdUZCNDNcdUZCNDRcdUZCNDYtXHVGQkIxXHVGQkQzLVx1
RkQzRFx1RkQ1MC1cdUZEOEZcdUZEOTItXHVGREM3XHVGREYwLVx1RkRGQlx1RkUwMC1cdUZFMEZc
dUZFMjAtXHVGRTI2XHVGRTMzXHVGRTM0XHVGRTRELVx1RkU0Rlx1RkU3MC1cdUZFNzRcdUZFNzYt
XHVGRUZDXHVGRjEwLVx1RkYxOVx1RkYyMS1cdUZGM0FcdUZGM0ZcdUZGNDEtXHVGRjVBXHVGRjY2
LVx1RkZCRVx1RkZDMi1cdUZGQzdcdUZGQ0EtXHVGRkNGXHVGRkQyLVx1RkZEN1x1RkZEQS1cdUZG
RENdJykKKyAgICAgICAgTm9uQXNjaWlJZGVudGlmaWVyU3RhcnQ6IG5ldyBSZWdFeHAoJ1tceEFB
XHhCNVx4QkFceEMwLVx4RDZceEQ4LVx4RjZceEY4LVx1MDJDMVx1MDJDNi1cdTAyRDFcdTAyRTAt
XHUwMkU0XHUwMkVDXHUwMkVFXHUwMzcwLVx1MDM3NFx1MDM3Nlx1MDM3N1x1MDM3QS1cdTAzN0Rc
dTAzN0ZcdTAzODZcdTAzODgtXHUwMzhBXHUwMzhDXHUwMzhFLVx1MDNBMVx1MDNBMy1cdTAzRjVc
dTAzRjctXHUwNDgxXHUwNDhBLVx1MDUyRlx1MDUzMS1cdTA1NTZcdTA1NTlcdTA1NjEtXHUwNTg3
XHUwNUQwLVx1MDVFQVx1MDVGMC1cdTA1RjJcdTA2MjAtXHUwNjRBXHUwNjZFXHUwNjZGXHUwNjcx
LVx1MDZEM1x1MDZENVx1MDZFNVx1MDZFNlx1MDZFRVx1MDZFRlx1MDZGQS1cdTA2RkNcdTA2RkZc
dTA3MTBcdTA3MTItXHUwNzJGXHUwNzRELVx1MDdBNVx1MDdCMVx1MDdDQS1cdTA3RUFcdTA3RjRc
dTA3RjVcdTA3RkFcdTA4MDAtXHUwODE1XHUwODFBXHUwODI0XHUwODI4XHUwODQwLVx1MDg1OFx1
MDhBMC1cdTA4QjJcdTA5MDQtXHUwOTM5XHUwOTNEXHUwOTUwXHUwOTU4LVx1MDk2MVx1MDk3MS1c
dTA5ODBcdTA5ODUtXHUwOThDXHUwOThGXHUwOTkwXHUwOTkzLVx1MDlBOFx1MDlBQS1cdTA5QjBc
dTA5QjJcdTA5QjYtXHUwOUI5XHUwOUJEXHUwOUNFXHUwOURDXHUwOUREXHUwOURGLVx1MDlFMVx1
MDlGMFx1MDlGMVx1MEEwNS1cdTBBMEFcdTBBMEZcdTBBMTBcdTBBMTMtXHUwQTI4XHUwQTJBLVx1
MEEzMFx1MEEzMlx1MEEzM1x1MEEzNVx1MEEzNlx1MEEzOFx1MEEzOVx1MEE1OS1cdTBBNUNcdTBB
NUVcdTBBNzItXHUwQTc0XHUwQTg1LVx1MEE4RFx1MEE4Ri1cdTBBOTFcdTBBOTMtXHUwQUE4XHUw
QUFBLVx1MEFCMFx1MEFCMlx1MEFCM1x1MEFCNS1cdTBBQjlcdTBBQkRcdTBBRDBcdTBBRTBcdTBB
RTFcdTBCMDUtXHUwQjBDXHUwQjBGXHUwQjEwXHUwQjEzLVx1MEIyOFx1MEIyQS1cdTBCMzBcdTBC
MzJcdTBCMzNcdTBCMzUtXHUwQjM5XHUwQjNEXHUwQjVDXHUwQjVEXHUwQjVGLVx1MEI2MVx1MEI3
MVx1MEI4M1x1MEI4NS1cdTBCOEFcdTBCOEUtXHUwQjkwXHUwQjkyLVx1MEI5NVx1MEI5OVx1MEI5
QVx1MEI5Q1x1MEI5RVx1MEI5Rlx1MEJBM1x1MEJBNFx1MEJBOC1cdTBCQUFcdTBCQUUtXHUwQkI5
XHUwQkQwXHUwQzA1LVx1MEMwQ1x1MEMwRS1cdTBDMTBcdTBDMTItXHUwQzI4XHUwQzJBLVx1MEMz
OVx1MEMzRFx1MEM1OFx1MEM1OVx1MEM2MFx1MEM2MVx1MEM4NS1cdTBDOENcdTBDOEUtXHUwQzkw
XHUwQzkyLVx1MENBOFx1MENBQS1cdTBDQjNcdTBDQjUtXHUwQ0I5XHUwQ0JEXHUwQ0RFXHUwQ0Uw
XHUwQ0UxXHUwQ0YxXHUwQ0YyXHUwRDA1LVx1MEQwQ1x1MEQwRS1cdTBEMTBcdTBEMTItXHUwRDNB
XHUwRDNEXHUwRDRFXHUwRDYwXHUwRDYxXHUwRDdBLVx1MEQ3Rlx1MEQ4NS1cdTBEOTZcdTBEOUEt
XHUwREIxXHUwREIzLVx1MERCQlx1MERCRFx1MERDMC1cdTBEQzZcdTBFMDEtXHUwRTMwXHUwRTMy
XHUwRTMzXHUwRTQwLVx1MEU0Nlx1MEU4MVx1MEU4Mlx1MEU4NFx1MEU4N1x1MEU4OFx1MEU4QVx1
MEU4RFx1MEU5NC1cdTBFOTdcdTBFOTktXHUwRTlGXHUwRUExLVx1MEVBM1x1MEVBNVx1MEVBN1x1
MEVBQVx1MEVBQlx1MEVBRC1cdTBFQjBcdTBFQjJcdTBFQjNcdTBFQkRcdTBFQzAtXHUwRUM0XHUw
RUM2XHUwRURDLVx1MEVERlx1MEYwMFx1MEY0MC1cdTBGNDdcdTBGNDktXHUwRjZDXHUwRjg4LVx1
MEY4Q1x1MTAwMC1cdTEwMkFcdTEwM0ZcdTEwNTAtXHUxMDU1XHUxMDVBLVx1MTA1RFx1MTA2MVx1
MTA2NVx1MTA2Nlx1MTA2RS1cdTEwNzBcdTEwNzUtXHUxMDgxXHUxMDhFXHUxMEEwLVx1MTBDNVx1
MTBDN1x1MTBDRFx1MTBEMC1cdTEwRkFcdTEwRkMtXHUxMjQ4XHUxMjRBLVx1MTI0RFx1MTI1MC1c
dTEyNTZcdTEyNThcdTEyNUEtXHUxMjVEXHUxMjYwLVx1MTI4OFx1MTI4QS1cdTEyOERcdTEyOTAt
XHUxMkIwXHUxMkIyLVx1MTJCNVx1MTJCOC1cdTEyQkVcdTEyQzBcdTEyQzItXHUxMkM1XHUxMkM4
LVx1MTJENlx1MTJEOC1cdTEzMTBcdTEzMTItXHUxMzE1XHUxMzE4LVx1MTM1QVx1MTM4MC1cdTEz
OEZcdTEzQTAtXHUxM0Y0XHUxNDAxLVx1MTY2Q1x1MTY2Ri1cdTE2N0ZcdTE2ODEtXHUxNjlBXHUx
NkEwLVx1MTZFQVx1MTZFRS1cdTE2RjhcdTE3MDAtXHUxNzBDXHUxNzBFLVx1MTcxMVx1MTcyMC1c
dTE3MzFcdTE3NDAtXHUxNzUxXHUxNzYwLVx1MTc2Q1x1MTc2RS1cdTE3NzBcdTE3ODAtXHUxN0Iz
XHUxN0Q3XHUxN0RDXHUxODIwLVx1MTg3N1x1MTg4MC1cdTE4QThcdTE4QUFcdTE4QjAtXHUxOEY1
XHUxOTAwLVx1MTkxRVx1MTk1MC1cdTE5NkRcdTE5NzAtXHUxOTc0XHUxOTgwLVx1MTlBQlx1MTlD
MS1cdTE5QzdcdTFBMDAtXHUxQTE2XHUxQTIwLVx1MUE1NFx1MUFBN1x1MUIwNS1cdTFCMzNcdTFC
NDUtXHUxQjRCXHUxQjgzLVx1MUJBMFx1MUJBRVx1MUJBRlx1MUJCQS1cdTFCRTVcdTFDMDAtXHUx
QzIzXHUxQzRELVx1MUM0Rlx1MUM1QS1cdTFDN0RcdTFDRTktXHUxQ0VDXHUxQ0VFLVx1MUNGMVx1
MUNGNVx1MUNGNlx1MUQwMC1cdTFEQkZcdTFFMDAtXHUxRjE1XHUxRjE4LVx1MUYxRFx1MUYyMC1c
dTFGNDVcdTFGNDgtXHUxRjREXHUxRjUwLVx1MUY1N1x1MUY1OVx1MUY1Qlx1MUY1RFx1MUY1Ri1c
dTFGN0RcdTFGODAtXHUxRkI0XHUxRkI2LVx1MUZCQ1x1MUZCRVx1MUZDMi1cdTFGQzRcdTFGQzYt
XHUxRkNDXHUxRkQwLVx1MUZEM1x1MUZENi1cdTFGREJcdTFGRTAtXHUxRkVDXHUxRkYyLVx1MUZG
NFx1MUZGNi1cdTFGRkNcdTIwNzFcdTIwN0ZcdTIwOTAtXHUyMDlDXHUyMTAyXHUyMTA3XHUyMTBB
LVx1MjExM1x1MjExNVx1MjExOS1cdTIxMURcdTIxMjRcdTIxMjZcdTIxMjhcdTIxMkEtXHUyMTJE
XHUyMTJGLVx1MjEzOVx1MjEzQy1cdTIxM0ZcdTIxNDUtXHUyMTQ5XHUyMTRFXHUyMTYwLVx1MjE4
OFx1MkMwMC1cdTJDMkVcdTJDMzAtXHUyQzVFXHUyQzYwLVx1MkNFNFx1MkNFQi1cdTJDRUVcdTJD
RjJcdTJDRjNcdTJEMDAtXHUyRDI1XHUyRDI3XHUyRDJEXHUyRDMwLVx1MkQ2N1x1MkQ2Rlx1MkQ4
MC1cdTJEOTZcdTJEQTAtXHUyREE2XHUyREE4LVx1MkRBRVx1MkRCMC1cdTJEQjZcdTJEQjgtXHUy
REJFXHUyREMwLVx1MkRDNlx1MkRDOC1cdTJEQ0VcdTJERDAtXHUyREQ2XHUyREQ4LVx1MkRERVx1
MkUyRlx1MzAwNS1cdTMwMDdcdTMwMjEtXHUzMDI5XHUzMDMxLVx1MzAzNVx1MzAzOC1cdTMwM0Nc
dTMwNDEtXHUzMDk2XHUzMDlELVx1MzA5Rlx1MzBBMS1cdTMwRkFcdTMwRkMtXHUzMEZGXHUzMTA1
LVx1MzEyRFx1MzEzMS1cdTMxOEVcdTMxQTAtXHUzMUJBXHUzMUYwLVx1MzFGRlx1MzQwMC1cdTRE
QjVcdTRFMDAtXHU5RkNDXHVBMDAwLVx1QTQ4Q1x1QTREMC1cdUE0RkRcdUE1MDAtXHVBNjBDXHVB
NjEwLVx1QTYxRlx1QTYyQVx1QTYyQlx1QTY0MC1cdUE2NkVcdUE2N0YtXHVBNjlEXHVBNkEwLVx1
QTZFRlx1QTcxNy1cdUE3MUZcdUE3MjItXHVBNzg4XHVBNzhCLVx1QTc4RVx1QTc5MC1cdUE3QURc
dUE3QjBcdUE3QjFcdUE3RjctXHVBODAxXHVBODAzLVx1QTgwNVx1QTgwNy1cdUE4MEFcdUE4MEMt
XHVBODIyXHVBODQwLVx1QTg3M1x1QTg4Mi1cdUE4QjNcdUE4RjItXHVBOEY3XHVBOEZCXHVBOTBB
LVx1QTkyNVx1QTkzMC1cdUE5NDZcdUE5NjAtXHVBOTdDXHVBOTg0LVx1QTlCMlx1QTlDRlx1QTlF
MC1cdUE5RTRcdUE5RTYtXHVBOUVGXHVBOUZBLVx1QTlGRVx1QUEwMC1cdUFBMjhcdUFBNDAtXHVB
QTQyXHVBQTQ0LVx1QUE0Qlx1QUE2MC1cdUFBNzZcdUFBN0FcdUFBN0UtXHVBQUFGXHVBQUIxXHVB
QUI1XHVBQUI2XHVBQUI5LVx1QUFCRFx1QUFDMFx1QUFDMlx1QUFEQi1cdUFBRERcdUFBRTAtXHVB
QUVBXHVBQUYyLVx1QUFGNFx1QUIwMS1cdUFCMDZcdUFCMDktXHVBQjBFXHVBQjExLVx1QUIxNlx1
QUIyMC1cdUFCMjZcdUFCMjgtXHVBQjJFXHVBQjMwLVx1QUI1QVx1QUI1Qy1cdUFCNUZcdUFCNjRc
dUFCNjVcdUFCQzAtXHVBQkUyXHVBQzAwLVx1RDdBM1x1RDdCMC1cdUQ3QzZcdUQ3Q0ItXHVEN0ZC
XHVGOTAwLVx1RkE2RFx1RkE3MC1cdUZBRDlcdUZCMDAtXHVGQjA2XHVGQjEzLVx1RkIxN1x1RkIx
RFx1RkIxRi1cdUZCMjhcdUZCMkEtXHVGQjM2XHVGQjM4LVx1RkIzQ1x1RkIzRVx1RkI0MFx1RkI0
MVx1RkI0M1x1RkI0NFx1RkI0Ni1cdUZCQjFcdUZCRDMtXHVGRDNEXHVGRDUwLVx1RkQ4Rlx1RkQ5
Mi1cdUZEQzdcdUZERjAtXHVGREZCXHVGRTcwLVx1RkU3NFx1RkU3Ni1cdUZFRkNcdUZGMjEtXHVG
RjNBXHVGRjQxLVx1RkY1QVx1RkY2Ni1cdUZGQkVcdUZGQzItXHVGRkM3XHVGRkNBLVx1RkZDRlx1
RkZEMi1cdUZGRDdcdUZGREEtXHVGRkRDXScpLAorICAgICAgICBOb25Bc2NpaUlkZW50aWZpZXJQ
YXJ0OiBuZXcgUmVnRXhwKCdbXHhBQVx4QjVceEJBXHhDMC1ceEQ2XHhEOC1ceEY2XHhGOC1cdTAy
QzFcdTAyQzYtXHUwMkQxXHUwMkUwLVx1MDJFNFx1MDJFQ1x1MDJFRVx1MDMwMC1cdTAzNzRcdTAz
NzZcdTAzNzdcdTAzN0EtXHUwMzdEXHUwMzdGXHUwMzg2XHUwMzg4LVx1MDM4QVx1MDM4Q1x1MDM4
RS1cdTAzQTFcdTAzQTMtXHUwM0Y1XHUwM0Y3LVx1MDQ4MVx1MDQ4My1cdTA0ODdcdTA0OEEtXHUw
NTJGXHUwNTMxLVx1MDU1Nlx1MDU1OVx1MDU2MS1cdTA1ODdcdTA1OTEtXHUwNUJEXHUwNUJGXHUw
NUMxXHUwNUMyXHUwNUM0XHUwNUM1XHUwNUM3XHUwNUQwLVx1MDVFQVx1MDVGMC1cdTA1RjJcdTA2
MTAtXHUwNjFBXHUwNjIwLVx1MDY2OVx1MDY2RS1cdTA2RDNcdTA2RDUtXHUwNkRDXHUwNkRGLVx1
MDZFOFx1MDZFQS1cdTA2RkNcdTA2RkZcdTA3MTAtXHUwNzRBXHUwNzRELVx1MDdCMVx1MDdDMC1c
dTA3RjVcdTA3RkFcdTA4MDAtXHUwODJEXHUwODQwLVx1MDg1Qlx1MDhBMC1cdTA4QjJcdTA4RTQt
XHUwOTYzXHUwOTY2LVx1MDk2Rlx1MDk3MS1cdTA5ODNcdTA5ODUtXHUwOThDXHUwOThGXHUwOTkw
XHUwOTkzLVx1MDlBOFx1MDlBQS1cdTA5QjBcdTA5QjJcdTA5QjYtXHUwOUI5XHUwOUJDLVx1MDlD
NFx1MDlDN1x1MDlDOFx1MDlDQi1cdTA5Q0VcdTA5RDdcdTA5RENcdTA5RERcdTA5REYtXHUwOUUz
XHUwOUU2LVx1MDlGMVx1MEEwMS1cdTBBMDNcdTBBMDUtXHUwQTBBXHUwQTBGXHUwQTEwXHUwQTEz
LVx1MEEyOFx1MEEyQS1cdTBBMzBcdTBBMzJcdTBBMzNcdTBBMzVcdTBBMzZcdTBBMzhcdTBBMzlc
dTBBM0NcdTBBM0UtXHUwQTQyXHUwQTQ3XHUwQTQ4XHUwQTRCLVx1MEE0RFx1MEE1MVx1MEE1OS1c
dTBBNUNcdTBBNUVcdTBBNjYtXHUwQTc1XHUwQTgxLVx1MEE4M1x1MEE4NS1cdTBBOERcdTBBOEYt
XHUwQTkxXHUwQTkzLVx1MEFBOFx1MEFBQS1cdTBBQjBcdTBBQjJcdTBBQjNcdTBBQjUtXHUwQUI5
XHUwQUJDLVx1MEFDNVx1MEFDNy1cdTBBQzlcdTBBQ0ItXHUwQUNEXHUwQUQwXHUwQUUwLVx1MEFF
M1x1MEFFNi1cdTBBRUZcdTBCMDEtXHUwQjAzXHUwQjA1LVx1MEIwQ1x1MEIwRlx1MEIxMFx1MEIx
My1cdTBCMjhcdTBCMkEtXHUwQjMwXHUwQjMyXHUwQjMzXHUwQjM1LVx1MEIzOVx1MEIzQy1cdTBC
NDRcdTBCNDdcdTBCNDhcdTBCNEItXHUwQjREXHUwQjU2XHUwQjU3XHUwQjVDXHUwQjVEXHUwQjVG
LVx1MEI2M1x1MEI2Ni1cdTBCNkZcdTBCNzFcdTBCODJcdTBCODNcdTBCODUtXHUwQjhBXHUwQjhF
LVx1MEI5MFx1MEI5Mi1cdTBCOTVcdTBCOTlcdTBCOUFcdTBCOUNcdTBCOUVcdTBCOUZcdTBCQTNc
dTBCQTRcdTBCQTgtXHUwQkFBXHUwQkFFLVx1MEJCOVx1MEJCRS1cdTBCQzJcdTBCQzYtXHUwQkM4
XHUwQkNBLVx1MEJDRFx1MEJEMFx1MEJEN1x1MEJFNi1cdTBCRUZcdTBDMDAtXHUwQzAzXHUwQzA1
LVx1MEMwQ1x1MEMwRS1cdTBDMTBcdTBDMTItXHUwQzI4XHUwQzJBLVx1MEMzOVx1MEMzRC1cdTBD
NDRcdTBDNDYtXHUwQzQ4XHUwQzRBLVx1MEM0RFx1MEM1NVx1MEM1Nlx1MEM1OFx1MEM1OVx1MEM2
MC1cdTBDNjNcdTBDNjYtXHUwQzZGXHUwQzgxLVx1MEM4M1x1MEM4NS1cdTBDOENcdTBDOEUtXHUw
QzkwXHUwQzkyLVx1MENBOFx1MENBQS1cdTBDQjNcdTBDQjUtXHUwQ0I5XHUwQ0JDLVx1MENDNFx1
MENDNi1cdTBDQzhcdTBDQ0EtXHUwQ0NEXHUwQ0Q1XHUwQ0Q2XHUwQ0RFXHUwQ0UwLVx1MENFM1x1
MENFNi1cdTBDRUZcdTBDRjFcdTBDRjJcdTBEMDEtXHUwRDAzXHUwRDA1LVx1MEQwQ1x1MEQwRS1c
dTBEMTBcdTBEMTItXHUwRDNBXHUwRDNELVx1MEQ0NFx1MEQ0Ni1cdTBENDhcdTBENEEtXHUwRDRF
XHUwRDU3XHUwRDYwLVx1MEQ2M1x1MEQ2Ni1cdTBENkZcdTBEN0EtXHUwRDdGXHUwRDgyXHUwRDgz
XHUwRDg1LVx1MEQ5Nlx1MEQ5QS1cdTBEQjFcdTBEQjMtXHUwREJCXHUwREJEXHUwREMwLVx1MERD
Nlx1MERDQVx1MERDRi1cdTBERDRcdTBERDZcdTBERDgtXHUwRERGXHUwREU2LVx1MERFRlx1MERG
Mlx1MERGM1x1MEUwMS1cdTBFM0FcdTBFNDAtXHUwRTRFXHUwRTUwLVx1MEU1OVx1MEU4MVx1MEU4
Mlx1MEU4NFx1MEU4N1x1MEU4OFx1MEU4QVx1MEU4RFx1MEU5NC1cdTBFOTdcdTBFOTktXHUwRTlG
XHUwRUExLVx1MEVBM1x1MEVBNVx1MEVBN1x1MEVBQVx1MEVBQlx1MEVBRC1cdTBFQjlcdTBFQkIt
XHUwRUJEXHUwRUMwLVx1MEVDNFx1MEVDNlx1MEVDOC1cdTBFQ0RcdTBFRDAtXHUwRUQ5XHUwRURD
LVx1MEVERlx1MEYwMFx1MEYxOFx1MEYxOVx1MEYyMC1cdTBGMjlcdTBGMzVcdTBGMzdcdTBGMzlc
dTBGM0UtXHUwRjQ3XHUwRjQ5LVx1MEY2Q1x1MEY3MS1cdTBGODRcdTBGODYtXHUwRjk3XHUwRjk5
LVx1MEZCQ1x1MEZDNlx1MTAwMC1cdTEwNDlcdTEwNTAtXHUxMDlEXHUxMEEwLVx1MTBDNVx1MTBD
N1x1MTBDRFx1MTBEMC1cdTEwRkFcdTEwRkMtXHUxMjQ4XHUxMjRBLVx1MTI0RFx1MTI1MC1cdTEy
NTZcdTEyNThcdTEyNUEtXHUxMjVEXHUxMjYwLVx1MTI4OFx1MTI4QS1cdTEyOERcdTEyOTAtXHUx
MkIwXHUxMkIyLVx1MTJCNVx1MTJCOC1cdTEyQkVcdTEyQzBcdTEyQzItXHUxMkM1XHUxMkM4LVx1
MTJENlx1MTJEOC1cdTEzMTBcdTEzMTItXHUxMzE1XHUxMzE4LVx1MTM1QVx1MTM1RC1cdTEzNUZc
dTEzODAtXHUxMzhGXHUxM0EwLVx1MTNGNFx1MTQwMS1cdTE2NkNcdTE2NkYtXHUxNjdGXHUxNjgx
LVx1MTY5QVx1MTZBMC1cdTE2RUFcdTE2RUUtXHUxNkY4XHUxNzAwLVx1MTcwQ1x1MTcwRS1cdTE3
MTRcdTE3MjAtXHUxNzM0XHUxNzQwLVx1MTc1M1x1MTc2MC1cdTE3NkNcdTE3NkUtXHUxNzcwXHUx
NzcyXHUxNzczXHUxNzgwLVx1MTdEM1x1MTdEN1x1MTdEQ1x1MTdERFx1MTdFMC1cdTE3RTlcdTE4
MEItXHUxODBEXHUxODEwLVx1MTgxOVx1MTgyMC1cdTE4NzdcdTE4ODAtXHUxOEFBXHUxOEIwLVx1
MThGNVx1MTkwMC1cdTE5MUVcdTE5MjAtXHUxOTJCXHUxOTMwLVx1MTkzQlx1MTk0Ni1cdTE5NkRc
dTE5NzAtXHUxOTc0XHUxOTgwLVx1MTlBQlx1MTlCMC1cdTE5QzlcdTE5RDAtXHUxOUQ5XHUxQTAw
LVx1MUExQlx1MUEyMC1cdTFBNUVcdTFBNjAtXHUxQTdDXHUxQTdGLVx1MUE4OVx1MUE5MC1cdTFB
OTlcdTFBQTdcdTFBQjAtXHUxQUJEXHUxQjAwLVx1MUI0Qlx1MUI1MC1cdTFCNTlcdTFCNkItXHUx
QjczXHUxQjgwLVx1MUJGM1x1MUMwMC1cdTFDMzdcdTFDNDAtXHUxQzQ5XHUxQzRELVx1MUM3RFx1
MUNEMC1cdTFDRDJcdTFDRDQtXHUxQ0Y2XHUxQ0Y4XHUxQ0Y5XHUxRDAwLVx1MURGNVx1MURGQy1c
dTFGMTVcdTFGMTgtXHUxRjFEXHUxRjIwLVx1MUY0NVx1MUY0OC1cdTFGNERcdTFGNTAtXHUxRjU3
XHUxRjU5XHUxRjVCXHUxRjVEXHUxRjVGLVx1MUY3RFx1MUY4MC1cdTFGQjRcdTFGQjYtXHUxRkJD
XHUxRkJFXHUxRkMyLVx1MUZDNFx1MUZDNi1cdTFGQ0NcdTFGRDAtXHUxRkQzXHUxRkQ2LVx1MUZE
Qlx1MUZFMC1cdTFGRUNcdTFGRjItXHUxRkY0XHUxRkY2LVx1MUZGQ1x1MjAwQ1x1MjAwRFx1MjAz
Rlx1MjA0MFx1MjA1NFx1MjA3MVx1MjA3Rlx1MjA5MC1cdTIwOUNcdTIwRDAtXHUyMERDXHUyMEUx
XHUyMEU1LVx1MjBGMFx1MjEwMlx1MjEwN1x1MjEwQS1cdTIxMTNcdTIxMTVcdTIxMTktXHUyMTFE
XHUyMTI0XHUyMTI2XHUyMTI4XHUyMTJBLVx1MjEyRFx1MjEyRi1cdTIxMzlcdTIxM0MtXHUyMTNG
XHUyMTQ1LVx1MjE0OVx1MjE0RVx1MjE2MC1cdTIxODhcdTJDMDAtXHUyQzJFXHUyQzMwLVx1MkM1
RVx1MkM2MC1cdTJDRTRcdTJDRUItXHUyQ0YzXHUyRDAwLVx1MkQyNVx1MkQyN1x1MkQyRFx1MkQz
MC1cdTJENjdcdTJENkZcdTJEN0YtXHUyRDk2XHUyREEwLVx1MkRBNlx1MkRBOC1cdTJEQUVcdTJE
QjAtXHUyREI2XHUyREI4LVx1MkRCRVx1MkRDMC1cdTJEQzZcdTJEQzgtXHUyRENFXHUyREQwLVx1
MkRENlx1MkREOC1cdTJEREVcdTJERTAtXHUyREZGXHUyRTJGXHUzMDA1LVx1MzAwN1x1MzAyMS1c
dTMwMkZcdTMwMzEtXHUzMDM1XHUzMDM4LVx1MzAzQ1x1MzA0MS1cdTMwOTZcdTMwOTlcdTMwOUFc
dTMwOUQtXHUzMDlGXHUzMEExLVx1MzBGQVx1MzBGQy1cdTMwRkZcdTMxMDUtXHUzMTJEXHUzMTMx
LVx1MzE4RVx1MzFBMC1cdTMxQkFcdTMxRjAtXHUzMUZGXHUzNDAwLVx1NERCNVx1NEUwMC1cdTlG
Q0NcdUEwMDAtXHVBNDhDXHVBNEQwLVx1QTRGRFx1QTUwMC1cdUE2MENcdUE2MTAtXHVBNjJCXHVB
NjQwLVx1QTY2Rlx1QTY3NC1cdUE2N0RcdUE2N0YtXHVBNjlEXHVBNjlGLVx1QTZGMVx1QTcxNy1c
dUE3MUZcdUE3MjItXHVBNzg4XHVBNzhCLVx1QTc4RVx1QTc5MC1cdUE3QURcdUE3QjBcdUE3QjFc
dUE3RjctXHVBODI3XHVBODQwLVx1QTg3M1x1QTg4MC1cdUE4QzRcdUE4RDAtXHVBOEQ5XHVBOEUw
LVx1QThGN1x1QThGQlx1QTkwMC1cdUE5MkRcdUE5MzAtXHVBOTUzXHVBOTYwLVx1QTk3Q1x1QTk4
MC1cdUE5QzBcdUE5Q0YtXHVBOUQ5XHVBOUUwLVx1QTlGRVx1QUEwMC1cdUFBMzZcdUFBNDAtXHVB
QTREXHVBQTUwLVx1QUE1OVx1QUE2MC1cdUFBNzZcdUFBN0EtXHVBQUMyXHVBQURCLVx1QUFERFx1
QUFFMC1cdUFBRUZcdUFBRjItXHVBQUY2XHVBQjAxLVx1QUIwNlx1QUIwOS1cdUFCMEVcdUFCMTEt
XHVBQjE2XHVBQjIwLVx1QUIyNlx1QUIyOC1cdUFCMkVcdUFCMzAtXHVBQjVBXHVBQjVDLVx1QUI1
Rlx1QUI2NFx1QUI2NVx1QUJDMC1cdUFCRUFcdUFCRUNcdUFCRURcdUFCRjAtXHVBQkY5XHVBQzAw
LVx1RDdBM1x1RDdCMC1cdUQ3QzZcdUQ3Q0ItXHVEN0ZCXHVGOTAwLVx1RkE2RFx1RkE3MC1cdUZB
RDlcdUZCMDAtXHVGQjA2XHVGQjEzLVx1RkIxN1x1RkIxRC1cdUZCMjhcdUZCMkEtXHVGQjM2XHVG
QjM4LVx1RkIzQ1x1RkIzRVx1RkI0MFx1RkI0MVx1RkI0M1x1RkI0NFx1RkI0Ni1cdUZCQjFcdUZC
RDMtXHVGRDNEXHVGRDUwLVx1RkQ4Rlx1RkQ5Mi1cdUZEQzdcdUZERjAtXHVGREZCXHVGRTAwLVx1
RkUwRlx1RkUyMC1cdUZFMkRcdUZFMzNcdUZFMzRcdUZFNEQtXHVGRTRGXHVGRTcwLVx1RkU3NFx1
RkU3Ni1cdUZFRkNcdUZGMTAtXHVGRjE5XHVGRjIxLVx1RkYzQVx1RkYzRlx1RkY0MS1cdUZGNUFc
dUZGNjYtXHVGRkJFXHVGRkMyLVx1RkZDN1x1RkZDQS1cdUZGQ0ZcdUZGRDItXHVGRkQ3XHVGRkRB
LVx1RkZEQ10nKQogICAgIH07CiAKICAgICAvLyBFbnN1cmUgdGhlIGNvbmRpdGlvbiBpcyB0cnVl
LCBvdGhlcndpc2UgdGhyb3cgYW4gZXJyb3IuCkBAIC0xOTcsNyArMjIzLDcgQEAgV2ViSW5zcGVj
dG9yLkVzcHJpbWEgPSB7fTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBpc0RlY2ltYWxEaWdpdChj
aCkgewotICAgICAgICByZXR1cm4gKGNoID49IDQ4ICYmIGNoIDw9IDU3KTsgICAvLyAwLi45Cisg
ICAgICAgIHJldHVybiAoY2ggPj0gMHgzMCAmJiBjaCA8PSAweDM5KTsgICAvLyAwLi45CiAgICAg
fQogCiAgICAgZnVuY3Rpb24gaXNIZXhEaWdpdChjaCkgewpAQCAtMjQ1LDMyICsyNzEsMzIgQEAg
V2ViSW5zcGVjdG9yLkVzcHJpbWEgPSB7fTsKIAogICAgIGZ1bmN0aW9uIGlzRnV0dXJlUmVzZXJ2
ZWRXb3JkKGlkKSB7CiAgICAgICAgIHN3aXRjaCAoaWQpIHsKLSAgICAgICAgY2FzZSAnY2xhc3Mn
OgotICAgICAgICBjYXNlICdlbnVtJzoKLSAgICAgICAgY2FzZSAnZXhwb3J0JzoKLSAgICAgICAg
Y2FzZSAnZXh0ZW5kcyc6Ci0gICAgICAgIGNhc2UgJ2ltcG9ydCc6Ci0gICAgICAgIGNhc2UgJ3N1
cGVyJzoKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgY2FzZSAnY2xhc3MnOgorICAgICAgICAg
ICAgY2FzZSAnZW51bSc6CisgICAgICAgICAgICBjYXNlICdleHBvcnQnOgorICAgICAgICAgICAg
Y2FzZSAnZXh0ZW5kcyc6CisgICAgICAgICAgICBjYXNlICdpbXBvcnQnOgorICAgICAgICAgICAg
Y2FzZSAnc3VwZXInOgorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
ZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9
CiAKICAgICBmdW5jdGlvbiBpc1N0cmljdE1vZGVSZXNlcnZlZFdvcmQoaWQpIHsKICAgICAgICAg
c3dpdGNoIChpZCkgewotICAgICAgICBjYXNlICdpbXBsZW1lbnRzJzoKLSAgICAgICAgY2FzZSAn
aW50ZXJmYWNlJzoKLSAgICAgICAgY2FzZSAncGFja2FnZSc6Ci0gICAgICAgIGNhc2UgJ3ByaXZh
dGUnOgotICAgICAgICBjYXNlICdwcm90ZWN0ZWQnOgotICAgICAgICBjYXNlICdwdWJsaWMnOgot
ICAgICAgICBjYXNlICdzdGF0aWMnOgotICAgICAgICBjYXNlICd5aWVsZCc6Ci0gICAgICAgIGNh
c2UgJ2xldCc6Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGNhc2UgJ2ltcGxlbWVudHMnOgor
ICAgICAgICAgICAgY2FzZSAnaW50ZXJmYWNlJzoKKyAgICAgICAgICAgIGNhc2UgJ3BhY2thZ2Un
OgorICAgICAgICAgICAgY2FzZSAncHJpdmF0ZSc6CisgICAgICAgICAgICBjYXNlICdwcm90ZWN0
ZWQnOgorICAgICAgICAgICAgY2FzZSAncHVibGljJzoKKyAgICAgICAgICAgIGNhc2UgJ3N0YXRp
Yyc6CisgICAgICAgICAgICBjYXNlICd5aWVsZCc6CisgICAgICAgICAgICBjYXNlICdsZXQnOgor
ICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI5MCwzNiAr
MzE2LDM2IEBAIFdlYkluc3BlY3Rvci5Fc3ByaW1hID0ge307CiAgICAgICAgIC8vIFNvbWUgb3Ro
ZXJzIGFyZSBmcm9tIGZ1dHVyZSByZXNlcnZlZCB3b3Jkcy4KIAogICAgICAgICBzd2l0Y2ggKGlk
Lmxlbmd0aCkgewotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICByZXR1cm4gKGlkID09PSAn
aWYnKSB8fCAoaWQgPT09ICdpbicpIHx8IChpZCA9PT0gJ2RvJyk7Ci0gICAgICAgIGNhc2UgMzoK
LSAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICd2YXInKSB8fCAoaWQgPT09ICdmb3InKSB8fCAo
aWQgPT09ICduZXcnKSB8fAotICAgICAgICAgICAgICAgIChpZCA9PT0gJ3RyeScpIHx8IChpZCA9
PT0gJ2xldCcpOwotICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICByZXR1cm4gKGlkID09PSAn
dGhpcycpIHx8IChpZCA9PT0gJ2Vsc2UnKSB8fCAoaWQgPT09ICdjYXNlJykgfHwKLSAgICAgICAg
ICAgICAgICAoaWQgPT09ICd2b2lkJykgfHwgKGlkID09PSAnd2l0aCcpIHx8IChpZCA9PT0gJ2Vu
dW0nKTsKLSAgICAgICAgY2FzZSA1OgotICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ3doaWxl
JykgfHwgKGlkID09PSAnYnJlYWsnKSB8fCAoaWQgPT09ICdjYXRjaCcpIHx8Ci0gICAgICAgICAg
ICAgICAgKGlkID09PSAndGhyb3cnKSB8fCAoaWQgPT09ICdjb25zdCcpIHx8IChpZCA9PT0gJ3lp
ZWxkJykgfHwKLSAgICAgICAgICAgICAgICAoaWQgPT09ICdjbGFzcycpIHx8IChpZCA9PT0gJ3N1
cGVyJyk7Ci0gICAgICAgIGNhc2UgNjoKLSAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICdyZXR1
cm4nKSB8fCAoaWQgPT09ICd0eXBlb2YnKSB8fCAoaWQgPT09ICdkZWxldGUnKSB8fAotICAgICAg
ICAgICAgICAgIChpZCA9PT0gJ3N3aXRjaCcpIHx8IChpZCA9PT0gJ2V4cG9ydCcpIHx8IChpZCA9
PT0gJ2ltcG9ydCcpOwotICAgICAgICBjYXNlIDc6Ci0gICAgICAgICAgICByZXR1cm4gKGlkID09
PSAnZGVmYXVsdCcpIHx8IChpZCA9PT0gJ2ZpbmFsbHknKSB8fCAoaWQgPT09ICdleHRlbmRzJyk7
Ci0gICAgICAgIGNhc2UgODoKLSAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICdmdW5jdGlvbicp
IHx8IChpZCA9PT0gJ2NvbnRpbnVlJykgfHwgKGlkID09PSAnZGVidWdnZXInKTsKLSAgICAgICAg
Y2FzZSAxMDoKLSAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICdpbnN0YW5jZW9mJyk7Ci0gICAg
ICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBjYXNl
IDI6CisgICAgICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ2lmJykgfHwgKGlkID09PSAnaW4n
KSB8fCAoaWQgPT09ICdkbycpOworICAgICAgICAgICAgY2FzZSAzOgorICAgICAgICAgICAgICAg
IHJldHVybiAoaWQgPT09ICd2YXInKSB8fCAoaWQgPT09ICdmb3InKSB8fCAoaWQgPT09ICduZXcn
KSB8fAorICAgICAgICAgICAgICAgICAgICAoaWQgPT09ICd0cnknKSB8fCAoaWQgPT09ICdsZXQn
KTsKKyAgICAgICAgICAgIGNhc2UgNDoKKyAgICAgICAgICAgICAgICByZXR1cm4gKGlkID09PSAn
dGhpcycpIHx8IChpZCA9PT0gJ2Vsc2UnKSB8fCAoaWQgPT09ICdjYXNlJykgfHwKKyAgICAgICAg
ICAgICAgICAgICAgKGlkID09PSAndm9pZCcpIHx8IChpZCA9PT0gJ3dpdGgnKSB8fCAoaWQgPT09
ICdlbnVtJyk7CisgICAgICAgICAgICBjYXNlIDU6CisgICAgICAgICAgICAgICAgcmV0dXJuIChp
ZCA9PT0gJ3doaWxlJykgfHwgKGlkID09PSAnYnJlYWsnKSB8fCAoaWQgPT09ICdjYXRjaCcpIHx8
CisgICAgICAgICAgICAgICAgICAgIChpZCA9PT0gJ3Rocm93JykgfHwgKGlkID09PSAnY29uc3Qn
KSB8fCAoaWQgPT09ICd5aWVsZCcpIHx8CisgICAgICAgICAgICAgICAgICAgIChpZCA9PT0gJ2Ns
YXNzJykgfHwgKGlkID09PSAnc3VwZXInKTsKKyAgICAgICAgICAgIGNhc2UgNjoKKyAgICAgICAg
ICAgICAgICByZXR1cm4gKGlkID09PSAncmV0dXJuJykgfHwgKGlkID09PSAndHlwZW9mJykgfHwg
KGlkID09PSAnZGVsZXRlJykgfHwKKyAgICAgICAgICAgICAgICAgICAgKGlkID09PSAnc3dpdGNo
JykgfHwgKGlkID09PSAnZXhwb3J0JykgfHwgKGlkID09PSAnaW1wb3J0Jyk7CisgICAgICAgICAg
ICBjYXNlIDc6CisgICAgICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ2RlZmF1bHQnKSB8fCAo
aWQgPT09ICdmaW5hbGx5JykgfHwgKGlkID09PSAnZXh0ZW5kcycpOworICAgICAgICAgICAgY2Fz
ZSA4OgorICAgICAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICdmdW5jdGlvbicpIHx8IChpZCA9
PT0gJ2NvbnRpbnVlJykgfHwgKGlkID09PSAnZGVidWdnZXInKTsKKyAgICAgICAgICAgIGNhc2Ug
MTA6CisgICAgICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ2luc3RhbmNlb2YnKTsKKyAgICAg
ICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAgICAgfQogCiAgICAgLy8gNy40IENvbW1lbnRzCiAKICAgICBmdW5jdGlvbiBhZGRDb21tZW50
KHR5cGUsIHZhbHVlLCBzdGFydCwgZW5kLCBsb2MpIHsKLSAgICAgICAgdmFyIGNvbW1lbnQsIGF0
dGFjaGVyOworICAgICAgICB2YXIgY29tbWVudDsKIAogICAgICAgICBhc3NlcnQodHlwZW9mIHN0
YXJ0ID09PSAnbnVtYmVyJywgJ0NvbW1lbnQgbXVzdCBoYXZlIHZhbGlkIHBvc2l0aW9uJyk7CiAK
QEAgLTUxMSw2ICs1MzcsMzggQEAgV2ViSW5zcGVjdG9yLkVzcHJpbWEgPSB7fTsKICAgICAgICAg
cmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSk7CiAgICAgfQogCisgICAgZnVuY3Rpb24g
c2NhblVuaWNvZGVDb2RlUG9pbnRFc2NhcGUoKSB7CisgICAgICAgIHZhciBjaCwgY29kZSwgY3Ux
LCBjdTI7CisKKyAgICAgICAgY2ggPSBzb3VyY2VbaW5kZXhdOworICAgICAgICBjb2RlID0gMDsK
KworICAgICAgICAvLyBBdCBsZWFzdCwgb25lIGhleCBkaWdpdCBpcyByZXF1aXJlZC4KKyAgICAg
ICAgaWYgKGNoID09PSAnfScpIHsKKyAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2Vz
LlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTsKKyAgICAgICAgfQorCisgICAgICAgIHdoaWxl
IChpbmRleCA8IGxlbmd0aCkgeworICAgICAgICAgICAgY2ggPSBzb3VyY2VbaW5kZXgrK107Cisg
ICAgICAgICAgICBpZiAoIWlzSGV4RGlnaXQoY2gpKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb2RlID0gY29kZSAqIDE2ICsgJzAxMjM0NTY3
ODlhYmNkZWYnLmluZGV4T2YoY2gudG9Mb3dlckNhc2UoKSk7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoY29kZSA+IDB4MTBGRkZGIHx8IGNoICE9PSAnfScpIHsKKyAgICAgICAgICAgIHRocm93
RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIFVURi0xNiBFbmNvZGluZworICAgICAgICBpZiAoY29kZSA8PSAweEZG
RkYpIHsKKyAgICAgICAgICAgIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpOworICAg
ICAgICB9CisgICAgICAgIGN1MSA9ICgoY29kZSAtIDB4MTAwMDApID4+IDEwKSArIDB4RDgwMDsK
KyAgICAgICAgY3UyID0gKChjb2RlIC0gMHgxMDAwMCkgJiAxMDIzKSArIDB4REMwMDsKKyAgICAg
ICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY3UxLCBjdTIpOworICAgIH0KKwogICAgIGZ1
bmN0aW9uIGdldEVzY2FwZWRJZGVudGlmaWVyKCkgewogICAgICAgICB2YXIgY2gsIGlkOwogCkBA
IC02MjMsODAgKzY4MSw4MCBAQCBXZWJJbnNwZWN0b3IuRXNwcmltYSA9IHt9OwogCiAgICAgICAg
IHN3aXRjaCAoY29kZSkgewogCi0gICAgICAgIC8vIENoZWNrIGZvciBtb3N0IGNvbW1vbiBzaW5n
bGUtY2hhcmFjdGVyIHB1bmN0dWF0b3JzLgotICAgICAgICBjYXNlIDB4MkU6ICAvLyAuIGRvdAot
ICAgICAgICBjYXNlIDB4Mjg6ICAvLyAoIG9wZW4gYnJhY2tldAotICAgICAgICBjYXNlIDB4Mjk6
ICAvLyApIGNsb3NlIGJyYWNrZXQKLSAgICAgICAgY2FzZSAweDNCOiAgLy8gOyBzZW1pY29sb24K
LSAgICAgICAgY2FzZSAweDJDOiAgLy8gLCBjb21tYQotICAgICAgICBjYXNlIDB4N0I6ICAvLyB7
IG9wZW4gY3VybHkgYnJhY2UKLSAgICAgICAgY2FzZSAweDdEOiAgLy8gfSBjbG9zZSBjdXJseSBi
cmFjZQotICAgICAgICBjYXNlIDB4NUI6ICAvLyBbCi0gICAgICAgIGNhc2UgMHg1RDogIC8vIF0K
LSAgICAgICAgY2FzZSAweDNBOiAgLy8gOgotICAgICAgICBjYXNlIDB4M0Y6ICAvLyA/Ci0gICAg
ICAgIGNhc2UgMHg3RTogIC8vIH4KLSAgICAgICAgICAgICsraW5kZXg7Ci0gICAgICAgICAgICBp
ZiAoZXh0cmEudG9rZW5pemUpIHsKLSAgICAgICAgICAgICAgICBpZiAoY29kZSA9PT0gMHgyOCkg
ewotICAgICAgICAgICAgICAgICAgICBleHRyYS5vcGVuUGFyZW5Ub2tlbiA9IGV4dHJhLnRva2Vu
cy5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb2RlID09PSAweDdCKSB7Ci0g
ICAgICAgICAgICAgICAgICAgIGV4dHJhLm9wZW5DdXJseVRva2VuID0gZXh0cmEudG9rZW5zLmxl
bmd0aDsKKyAgICAgICAgICAgIC8vIENoZWNrIGZvciBtb3N0IGNvbW1vbiBzaW5nbGUtY2hhcmFj
dGVyIHB1bmN0dWF0b3JzLgorICAgICAgICAgICAgY2FzZSAweDJFOiAgLy8gLiBkb3QKKyAgICAg
ICAgICAgIGNhc2UgMHgyODogIC8vICggb3BlbiBicmFja2V0CisgICAgICAgICAgICBjYXNlIDB4
Mjk6ICAvLyApIGNsb3NlIGJyYWNrZXQKKyAgICAgICAgICAgIGNhc2UgMHgzQjogIC8vIDsgc2Vt
aWNvbG9uCisgICAgICAgICAgICBjYXNlIDB4MkM6ICAvLyAsIGNvbW1hCisgICAgICAgICAgICBj
YXNlIDB4N0I6ICAvLyB7IG9wZW4gY3VybHkgYnJhY2UKKyAgICAgICAgICAgIGNhc2UgMHg3RDog
IC8vIH0gY2xvc2UgY3VybHkgYnJhY2UKKyAgICAgICAgICAgIGNhc2UgMHg1QjogIC8vIFsKKyAg
ICAgICAgICAgIGNhc2UgMHg1RDogIC8vIF0KKyAgICAgICAgICAgIGNhc2UgMHgzQTogIC8vIDoK
KyAgICAgICAgICAgIGNhc2UgMHgzRjogIC8vID8KKyAgICAgICAgICAgIGNhc2UgMHg3RTogIC8v
IH4KKyAgICAgICAgICAgICAgICArK2luZGV4OworICAgICAgICAgICAgICAgIGlmIChleHRyYS50
b2tlbml6ZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoY29kZSA9PT0gMHgyOCkgeworICAg
ICAgICAgICAgICAgICAgICAgICAgZXh0cmEub3BlblBhcmVuVG9rZW4gPSBleHRyYS50b2tlbnMu
bGVuZ3RoOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDB4N0IpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhLm9wZW5DdXJseVRva2VuID0gZXh0cmEudG9r
ZW5zLmxlbmd0aDsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTog
VG9rZW4uUHVuY3R1YXRvciwKLSAgICAgICAgICAgICAgICB2YWx1ZTogU3RyaW5nLmZyb21DaGFy
Q29kZShjb2RlKSwKLSAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLAotICAg
ICAgICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LAotICAgICAgICAgICAgICAgIHN0YXJ0
OiBzdGFydCwKLSAgICAgICAgICAgICAgICBlbmQ6IGluZGV4Ci0gICAgICAgICAgICB9OwotCi0g
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBjb2RlMiA9IHNvdXJjZS5jaGFyQ29kZUF0KGlu
ZGV4ICsgMSk7Ci0KLSAgICAgICAgICAgIC8vICc9JyAoVSswMDNEKSBtYXJrcyBhbiBhc3NpZ25t
ZW50IG9yIGNvbXBhcmlzb24gb3BlcmF0b3IuCi0gICAgICAgICAgICBpZiAoY29kZTIgPT09IDB4
M0QpIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvZGUpIHsKLSAgICAgICAgICAgICAgICBj
YXNlIDB4MkI6ICAvLyArCi0gICAgICAgICAgICAgICAgY2FzZSAweDJEOiAgLy8gLQotICAgICAg
ICAgICAgICAgIGNhc2UgMHgyRjogIC8vIC8KLSAgICAgICAgICAgICAgICBjYXNlIDB4M0M6ICAv
LyA8Ci0gICAgICAgICAgICAgICAgY2FzZSAweDNFOiAgLy8gPgotICAgICAgICAgICAgICAgIGNh
c2UgMHg1RTogIC8vIF4KLSAgICAgICAgICAgICAgICBjYXNlIDB4N0M6ICAvLyB8Ci0gICAgICAg
ICAgICAgICAgY2FzZSAweDI1OiAgLy8gJQotICAgICAgICAgICAgICAgIGNhc2UgMHgyNjogIC8v
ICYKLSAgICAgICAgICAgICAgICBjYXNlIDB4MkE6ICAvLyAqCi0gICAgICAgICAgICAgICAgICAg
IGluZGV4ICs9IDI7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICB0eXBlOiBUb2tlbi5QdW5jdHVhdG9yLAotICAgICAgICAgICAgICAgICAgICAg
ICAgdmFsdWU6IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSkgKyBTdHJpbmcuZnJvbUNoYXJDb2Rl
KGNvZGUyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHN0YXJ0OiBzdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGVu
ZDogaW5kZXgKLSAgICAgICAgICAgICAgICAgICAgfTsKLQotICAgICAgICAgICAgICAgIGNhc2Ug
MHgyMTogLy8gIQotICAgICAgICAgICAgICAgIGNhc2UgMHgzRDogLy8gPQotICAgICAgICAgICAg
ICAgICAgICBpbmRleCArPSAyOworICAgICAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAg
ICAgICAgICAgIHR5cGU6IFRva2VuLlB1bmN0dWF0b3IsCisgICAgICAgICAgICAgICAgICAgIHZh
bHVlOiBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpLAorICAgICAgICAgICAgICAgICAgICBsaW5l
TnVtYmVyOiBsaW5lTnVtYmVyLAorICAgICAgICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVT
dGFydCwKKyAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LAorICAgICAgICAgICAgICAg
ICAgICBlbmQ6IGluZGV4CisgICAgICAgICAgICAgICAgfTsKIAotICAgICAgICAgICAgICAgICAg
ICAvLyAhPT0gYW5kID09PQotICAgICAgICAgICAgICAgICAgICBpZiAoc291cmNlLmNoYXJDb2Rl
QXQoaW5kZXgpID09PSAweDNEKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICArK2luZGV4Owor
ICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBjb2RlMiA9IHNvdXJjZS5jaGFy
Q29kZUF0KGluZGV4ICsgMSk7CisKKyAgICAgICAgICAgICAgICAvLyAnPScgKFUrMDAzRCkgbWFy
a3MgYW4gYXNzaWdubWVudCBvciBjb21wYXJpc29uIG9wZXJhdG9yLgorICAgICAgICAgICAgICAg
IGlmIChjb2RlMiA9PT0gMHgzRCkgeworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvZGUp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMHgyQjogIC8vICsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNhc2UgMHgyRDogIC8vIC0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgMHgyRjogIC8vIC8KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMHgzQzogIC8vIDwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMHgzRTogIC8vID4KKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNhc2UgMHg1RTogIC8vIF4KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
MHg3QzogIC8vIHwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMHgyNTogIC8vICUKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMHgyNjogIC8vICYKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGNhc2UgMHgyQTogIC8vICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRl
eCArPSAyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IFRva2VuLlB1bmN0dWF0b3IsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUpICsg
U3RyaW5nLmZyb21DaGFyQ29kZShjb2RlMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzdGFydDogc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogaW5k
ZXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgICAgICAg
ICAgICBjYXNlIDB4MjE6IC8vICEKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMHgzRDog
Ly8gPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ICs9IDI7CisKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyAhPT0gYW5kID09PQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkgPT09IDB4M0QpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKytpbmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHlwZTogVG9rZW4uUHVuY3R1YXRvciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IHNvdXJjZS5zbGljZShzdGFydCwgaW5kZXgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBlbmQ6IGluZGV4CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
ewotICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogVG9rZW4uUHVuY3R1YXRvciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzb3VyY2Uuc2xpY2Uoc3RhcnQsIGluZGV4KSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YXJ0OiBzdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGVuZDogaW5kZXgKLSAg
ICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9CiAg
ICAgICAgIH0KIAogICAgICAgICAvLyA0LWNoYXJhY3RlciBwdW5jdHVhdG9yOiA+Pj49CkBAIC03
NDcsNiArODA1LDcgQEAgV2ViSW5zcGVjdG9yLkVzcHJpbWEgPSB7fTsKICAgICAgICAgfQogCiAg
ICAgICAgIC8vIDEtY2hhcmFjdGVyIHB1bmN0dWF0b3JzOiA8ID4gPSAhICsgLSAqICUgJiB8IF4g
LworCiAgICAgICAgIGlmICgnPD49ISstKiUmfF4vJy5pbmRleE9mKGNoMSkgPj0gMCkgewogICAg
ICAgICAgICAgKytpbmRleDsKICAgICAgICAgICAgIHJldHVybiB7CkBAIC05MTQsNjIgKzk3Myw2
NyBAQCBXZWJJbnNwZWN0b3IuRXNwcmltYSA9IHt9OwogICAgICAgICAgICAgICAgIGNoID0gc291
cmNlW2luZGV4KytdOwogICAgICAgICAgICAgICAgIGlmICghY2ggfHwgIWlzTGluZVRlcm1pbmF0
b3IoY2guY2hhckNvZGVBdCgwKSkpIHsKICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjaCkg
ewotICAgICAgICAgICAgICAgICAgICBjYXNlICd1JzoKLSAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAneCc6Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXN0b3JlID0gaW5kZXg7Ci0gICAgICAg
ICAgICAgICAgICAgICAgICB1bmVzY2FwZWQgPSBzY2FuSGV4RXNjYXBlKGNoKTsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGlmICh1bmVzY2FwZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdHIgKz0gdW5lc2NhcGVkOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9IHJlc3RvcmU7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RyICs9IGNoOwotICAgICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2Ug
J24nOgotICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9ICdcbic7Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSAncic6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xyJzsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlICd0JzoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHN0ciArPSAnXHQnOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAg
ICAgICAgICAgICAgIGNhc2UgJ2InOgotICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9ICdc
Yic7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAg
Y2FzZSAnZic6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xmJzsKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlICd2JzoKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSAnXHgwQic7Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKLQotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGlzT2N0YWxEaWdpdChjaCkpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb2RlID0gJzAxMjM0NTY3Jy5pbmRleE9mKGNoKTsKLQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFwwIGlzIG5vdCBvY3RhbCBlc2NhcGUgc2VxdWVuY2UKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoY29kZSAhPT0gMCkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvY3RhbCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNl
ICd1JzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3gnOgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIChzb3VyY2VbaW5kZXhdID09PSAneycpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKytpbmRleDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RyICs9IHNjYW5Vbmljb2RlQ29kZVBvaW50RXNjYXBlKCk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
dG9yZSA9IGluZGV4OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmVzY2FwZWQg
PSBzY2FuSGV4RXNjYXBlKGNoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KHVuZXNjYXBlZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9
IHVuZXNjYXBlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4ID0gcmVzdG9yZTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSBjaDsKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNh
c2UgJ24nOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSAnXG4nOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2Fz
ZSAncic6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9ICdccic7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNl
ICd0JzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1x0JzsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2Ug
J2InOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSAnXGInOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAn
Zic6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9ICdcZic7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICd2
JzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1x4MEInOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc09jdGFsRGlnaXQoY2gpKSB7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPSAnMDEyMzQ1NjcnLmluZGV4
T2YoY2gpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFwwIGlzIG5vdCBv
Y3RhbCBlc2NhcGUgc2VxdWVuY2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGNvZGUgIT09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9jdGFs
ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKGluZGV4IDwgbGVuZ3RoICYmIGlzT2N0YWxEaWdpdChzb3Vy
Y2VbaW5kZXhdKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvY3RhbCA9IHRy
dWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPSBjb2RlICogOCArICcw
MTIzNDU2NycuaW5kZXhPZihzb3VyY2VbaW5kZXgrK10pOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoaW5kZXggPCBsZW5ndGggJiYgaXNPY3RhbERpZ2l0KHNvdXJjZVtpbmRl
eF0pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvY3RhbCA9IHRydWU7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlID0gY29kZSAqIDggKyAn
MDEyMzQ1NjcnLmluZGV4T2Yoc291cmNlW2luZGV4KytdKTsKIAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAvLyAzIGRpZ2l0cyBhcmUgb25seSBhbGxvd2VkIHdoZW4gc3RyaW5nIHN0
YXJ0cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aXRoIDAsIDEsIDIsIDMK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCcwMTIzJy5pbmRleE9mKGNoKSA+
PSAwICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAzIGRpZ2l0cyBh
cmUgb25seSBhbGxvd2VkIHdoZW4gc3RyaW5nIHN0YXJ0cworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgLy8gd2l0aCAwLCAxLCAyLCAzCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoJzAxMjMnLmluZGV4T2YoY2gpID49IDAgJiYKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA8IGxlbmd0aCAmJgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzT2N0YWxEaWdpdChzb3VyY2VbaW5kZXhd
KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZSA9IGNvZGUgKiA4
ICsgJzAxMjM0NTY3Jy5pbmRleE9mKHNvdXJjZVtpbmRleCsrXSk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29kZSA9IGNvZGUgKiA4ICsgJzAxMjM0NTY3Jy5pbmRl
eE9mKHNvdXJjZVtpbmRleCsrXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSk7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3RyICs9IGNoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlKTsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3RyICs9IGNoOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgICAgICArK2xpbmVOdW1iZXI7CkBAIC0xMDAzLDEzICsxMDY3LDM0IEBAIFdlYkluc3BlY3Rv
ci5Fc3ByaW1hID0ge307CiAgICAgfQogCiAgICAgZnVuY3Rpb24gdGVzdFJlZ0V4cChwYXR0ZXJu
LCBmbGFncykgewotICAgICAgICB2YXIgdmFsdWU7CisgICAgICAgIHZhciB0bXAgPSBwYXR0ZXJu
LAorICAgICAgICAgICAgdmFsdWU7CisKKyAgICAgICAgaWYgKGZsYWdzLmluZGV4T2YoJ3UnKSA+
PSAwKSB7CisgICAgICAgICAgICAvLyBSZXBsYWNlIGVhY2ggYXN0cmFsIHN5bWJvbCBhbmQgZXZl
cnkgVW5pY29kZSBjb2RlIHBvaW50CisgICAgICAgICAgICAvLyBlc2NhcGUgc2VxdWVuY2UgdGhh
dCByZXByZXNlbnRzIHN1Y2ggYSBzeW1ib2wgd2l0aCBhIHNpbmdsZQorICAgICAgICAgICAgLy8g
QVNDSUkgc3ltYm9sIHRvIGF2b2lkIHRocm93aW5nIG9uIHJlZ3VsYXIgZXhwcmVzc2lvbnMgdGhh
dAorICAgICAgICAgICAgLy8gYXJlIG9ubHkgdmFsaWQgaW4gY29tYmluYXRpb24gd2l0aCB0aGUg
YC91YCBmbGFnLgorICAgICAgICAgICAgdG1wID0gdG1wCisgICAgICAgICAgICAgICAgLnJlcGxh
Y2UoL1xcdVx7KFswLTlhLWZBLUZdezUsNn0pXH0vZywgJ3gnKQorICAgICAgICAgICAgICAgIC5y
ZXBsYWNlKC9bXHVEODAwLVx1REJGRl1bXHVEQzAwLVx1REZGRl0vZywgJ3gnKTsKKyAgICAgICAg
fQorCisgICAgICAgIC8vIEZpcnN0LCBkZXRlY3QgaW52YWxpZCByZWd1bGFyIGV4cHJlc3Npb25z
LgogICAgICAgICB0cnkgewotICAgICAgICAgICAgdmFsdWUgPSBuZXcgUmVnRXhwKHBhdHRlcm4s
IGZsYWdzKTsKKyAgICAgICAgICAgIHZhbHVlID0gbmV3IFJlZ0V4cCh0bXApOwogICAgICAgICB9
IGNhdGNoIChlKSB7CiAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5JbnZhbGlk
UmVnRXhwKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gdmFsdWU7CisKKyAgICAgICAgLy8g
UmV0dXJuIGEgcmVndWxhciBleHByZXNzaW9uIG9iamVjdCBmb3IgdGhpcyBwYXR0ZXJuLWZsYWcg
cGFpciwgb3IKKyAgICAgICAgLy8gYG51bGxgIGluIGNhc2UgdGhlIGN1cnJlbnQgZW52aXJvbm1l
bnQgZG9lc24ndCBzdXBwb3J0IHRoZSBmbGFncyBpdAorICAgICAgICAvLyB1c2VzLgorICAgICAg
ICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAocGF0dGVybiwgZmxhZ3MpOwor
ICAgICAgICB9IGNhdGNoIChleGNlcHRpb24pIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOwor
ICAgICAgICB9CiAgICAgfQogCiAgICAgZnVuY3Rpb24gc2NhblJlZ0V4cEJvZHkoKSB7CkBAIC0x
MTA1LDcgKzExOTAsNyBAQCBXZWJJbnNwZWN0b3IuRXNwcmltYSA9IHt9OwogICAgIH0KIAogICAg
IGZ1bmN0aW9uIHNjYW5SZWdFeHAoKSB7Ci0gICAgICAgIHZhciBzdGFydCwgYm9keSwgZmxhZ3Ms
IHBhdHRlcm4sIHZhbHVlOworICAgICAgICB2YXIgc3RhcnQsIGJvZHksIGZsYWdzLCB2YWx1ZTsK
IAogICAgICAgICBsb29rYWhlYWQgPSBudWxsOwogICAgICAgICBza2lwQ29tbWVudCgpOwpAQCAt
MTExOSw2ICsxMjA0LDEwIEBAIFdlYkluc3BlY3Rvci5Fc3ByaW1hID0ge307CiAgICAgICAgICAg
ICByZXR1cm4gewogICAgICAgICAgICAgICAgIHR5cGU6IFRva2VuLlJlZ3VsYXJFeHByZXNzaW9u
LAogICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSwKKyAgICAgICAgICAgICAgICByZWdleDog
eworICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuOiBib2R5LnZhbHVlLAorICAgICAgICAgICAg
ICAgICAgICBmbGFnczogZmxhZ3MudmFsdWUKKyAgICAgICAgICAgICAgICB9LAogICAgICAgICAg
ICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsCiAgICAgICAgICAgICAgICAgbGluZVN0YXJ0
OiBsaW5lU3RhcnQsCiAgICAgICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LApAQCAtMTEyOSw2ICsx
MjE4LDEwIEBAIFdlYkluc3BlY3Rvci5Fc3ByaW1hID0ge307CiAgICAgICAgIHJldHVybiB7CiAg
ICAgICAgICAgICBsaXRlcmFsOiBib2R5LmxpdGVyYWwgKyBmbGFncy5saXRlcmFsLAogICAgICAg
ICAgICAgdmFsdWU6IHZhbHVlLAorICAgICAgICAgICAgcmVnZXg6IHsKKyAgICAgICAgICAgICAg
ICBwYXR0ZXJuOiBib2R5LnZhbHVlLAorICAgICAgICAgICAgICAgIGZsYWdzOiBmbGFncy52YWx1
ZQorICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHN0YXJ0OiBzdGFydCwKICAgICAgICAgICAg
IGVuZDogaW5kZXgKICAgICAgICAgfTsKQEAgLTExNDgsNiArMTI0MSw3IEBAIFdlYkluc3BlY3Rv
ci5Fc3ByaW1hID0ge307CiAgICAgICAgIH07CiAKICAgICAgICAgcmVnZXggPSBzY2FuUmVnRXhw
KCk7CisKICAgICAgICAgbG9jLmVuZCA9IHsKICAgICAgICAgICAgIGxpbmU6IGxpbmVOdW1iZXIs
CiAgICAgICAgICAgICBjb2x1bW46IGluZGV4IC0gbGluZVN0YXJ0CkBAIC0xMTY4LDYgKzEyNjIs
NyBAQCBXZWJJbnNwZWN0b3IuRXNwcmltYSA9IHt9OwogICAgICAgICAgICAgZXh0cmEudG9rZW5z
LnB1c2goewogICAgICAgICAgICAgICAgIHR5cGU6ICdSZWd1bGFyRXhwcmVzc2lvbicsCiAgICAg
ICAgICAgICAgICAgdmFsdWU6IHJlZ2V4LmxpdGVyYWwsCisgICAgICAgICAgICAgICAgcmVnZXg6
IHJlZ2V4LnJlZ2V4LAogICAgICAgICAgICAgICAgIHJhbmdlOiBbcG9zLCBpbmRleF0sCiAgICAg
ICAgICAgICAgICAgbG9jOiBsb2MKICAgICAgICAgICAgIH0pOwpAQCAtMTIwMCwxMSArMTI5NSwx
MSBAQCBXZWJJbnNwZWN0b3IuRXNwcmltYSA9IHt9OwogICAgICAgICAgICAgaWYgKHByZXZUb2tl
bi52YWx1ZSA9PT0gJyknKSB7CiAgICAgICAgICAgICAgICAgY2hlY2tUb2tlbiA9IGV4dHJhLnRv
a2Vuc1tleHRyYS5vcGVuUGFyZW5Ub2tlbiAtIDFdOwogICAgICAgICAgICAgICAgIGlmIChjaGVj
a1Rva2VuICYmCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGVja1Rva2VuLnR5cGUgPT09ICdL
ZXl3b3JkJyAmJgotICAgICAgICAgICAgICAgICAgICAgICAgKGNoZWNrVG9rZW4udmFsdWUgPT09
ICdpZicgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja1Rva2VuLnZhbHVlID09PSAn
d2hpbGUnIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tUb2tlbi52YWx1ZSA9PT0g
J2ZvcicgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja1Rva2VuLnZhbHVlID09PSAn
d2l0aCcpKSB7CisgICAgICAgICAgICAgICAgICAgIGNoZWNrVG9rZW4udHlwZSA9PT0gJ0tleXdv
cmQnICYmCisgICAgICAgICAgICAgICAgICAgIChjaGVja1Rva2VuLnZhbHVlID09PSAnaWYnIHx8
CisgICAgICAgICAgICAgICAgICAgIGNoZWNrVG9rZW4udmFsdWUgPT09ICd3aGlsZScgfHwKKyAg
ICAgICAgICAgICAgICAgICAgY2hlY2tUb2tlbi52YWx1ZSA9PT0gJ2ZvcicgfHwKKyAgICAgICAg
ICAgICAgICAgICAgY2hlY2tUb2tlbi52YWx1ZSA9PT0gJ3dpdGgnKSkgewogICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gY29sbGVjdFJlZ2V4KCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIHJldHVybiBzY2FuUHVuY3R1YXRvcigpOwpAQCAtMTIxMywxNCArMTMwOCwxNCBA
QCBXZWJJbnNwZWN0b3IuRXNwcmltYSA9IHt9OwogICAgICAgICAgICAgICAgIC8vIERpdmlkaW5n
IGEgZnVuY3Rpb24gYnkgYW55dGhpbmcgbWFrZXMgbGl0dGxlIHNlbnNlLAogICAgICAgICAgICAg
ICAgIC8vIGJ1dCB3ZSBoYXZlIHRvIGNoZWNrIGZvciB0aGF0LgogICAgICAgICAgICAgICAgIGlm
IChleHRyYS50b2tlbnNbZXh0cmEub3BlbkN1cmx5VG9rZW4gLSAzXSAmJgotICAgICAgICAgICAg
ICAgICAgICAgICAgZXh0cmEudG9rZW5zW2V4dHJhLm9wZW5DdXJseVRva2VuIC0gM10udHlwZSA9
PT0gJ0tleXdvcmQnKSB7CisgICAgICAgICAgICAgICAgICAgIGV4dHJhLnRva2Vuc1tleHRyYS5v
cGVuQ3VybHlUb2tlbiAtIDNdLnR5cGUgPT09ICdLZXl3b3JkJykgewogICAgICAgICAgICAgICAg
ICAgICAvLyBBbm9ueW1vdXMgZnVuY3Rpb24uCiAgICAgICAgICAgICAgICAgICAgIGNoZWNrVG9r
ZW4gPSBleHRyYS50b2tlbnNbZXh0cmEub3BlbkN1cmx5VG9rZW4gLSA0XTsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFjaGVja1Rva2VuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gc2NhblB1bmN0dWF0b3IoKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoZXh0cmEudG9rZW5zW2V4dHJhLm9wZW5DdXJseVRva2VuIC0gNF0gJiYK
LSAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhLnRva2Vuc1tleHRyYS5vcGVuQ3VybHlUb2tl
biAtIDRdLnR5cGUgPT09ICdLZXl3b3JkJykgeworICAgICAgICAgICAgICAgICAgICBleHRyYS50
b2tlbnNbZXh0cmEub3BlbkN1cmx5VG9rZW4gLSA0XS50eXBlID09PSAnS2V5d29yZCcpIHsKICAg
ICAgICAgICAgICAgICAgICAgLy8gTmFtZWQgZnVuY3Rpb24uCiAgICAgICAgICAgICAgICAgICAg
IGNoZWNrVG9rZW4gPSBleHRyYS50b2tlbnNbZXh0cmEub3BlbkN1cmx5VG9rZW4gLSA1XTsKICAg
ICAgICAgICAgICAgICAgICAgaWYgKCFjaGVja1Rva2VuKSB7CkBAIC0xMzAwLDcgKzEzOTUsNyBA
QCBXZWJJbnNwZWN0b3IuRXNwcmltYSA9IHt9OwogICAgIH0KIAogICAgIGZ1bmN0aW9uIGNvbGxl
Y3RUb2tlbigpIHsKLSAgICAgICAgdmFyIGxvYywgdG9rZW4sIHJhbmdlLCB2YWx1ZTsKKyAgICAg
ICAgdmFyIGxvYywgdG9rZW4sIHZhbHVlLCBlbnRyeTsKIAogICAgICAgICBza2lwQ29tbWVudCgp
OwogICAgICAgICBsb2MgPSB7CkBAIC0xMzE4LDEyICsxNDEzLDE5IEBAIFdlYkluc3BlY3Rvci5F
c3ByaW1hID0ge307CiAKICAgICAgICAgaWYgKHRva2VuLnR5cGUgIT09IFRva2VuLkVPRikgewog
ICAgICAgICAgICAgdmFsdWUgPSBzb3VyY2Uuc2xpY2UodG9rZW4uc3RhcnQsIHRva2VuLmVuZCk7
Ci0gICAgICAgICAgICBleHRyYS50b2tlbnMucHVzaCh7CisgICAgICAgICAgICBlbnRyeSA9IHsK
ICAgICAgICAgICAgICAgICB0eXBlOiBUb2tlbk5hbWVbdG9rZW4udHlwZV0sCiAgICAgICAgICAg
ICAgICAgdmFsdWU6IHZhbHVlLAogICAgICAgICAgICAgICAgIHJhbmdlOiBbdG9rZW4uc3RhcnQs
IHRva2VuLmVuZF0sCiAgICAgICAgICAgICAgICAgbG9jOiBsb2MKLSAgICAgICAgICAgIH0pOwor
ICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGlmICh0b2tlbi5yZWdleCkgeworICAgICAgICAg
ICAgICAgIGVudHJ5LnJlZ2V4ID0geworICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuOiB0b2tl
bi5yZWdleC5wYXR0ZXJuLAorICAgICAgICAgICAgICAgICAgICBmbGFnczogdG9rZW4ucmVnZXgu
ZmxhZ3MKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZXh0
cmEudG9rZW5zLnB1c2goZW50cnkpOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHRva2Vu
OwpAQCAtMTM1OCw0MjIgKzE0NjAsNDYxIEBAIFdlYkluc3BlY3Rvci5Fc3ByaW1hID0ge307CiAg
ICAgICAgIGxpbmVTdGFydCA9IHN0YXJ0OwogICAgIH0KIAotICAgIGZ1bmN0aW9uIFBvc2l0aW9u
KGxpbmUsIGNvbHVtbikgewotICAgICAgICB0aGlzLmxpbmUgPSBsaW5lOwotICAgICAgICB0aGlz
LmNvbHVtbiA9IGNvbHVtbjsKKyAgICBmdW5jdGlvbiBQb3NpdGlvbigpIHsKKyAgICAgICAgdGhp
cy5saW5lID0gbGluZU51bWJlcjsKKyAgICAgICAgdGhpcy5jb2x1bW4gPSBpbmRleCAtIGxpbmVT
dGFydDsKICAgICB9CiAKLSAgICBmdW5jdGlvbiBTb3VyY2VMb2NhdGlvbihzdGFydExpbmUsIHN0
YXJ0Q29sdW1uLCBsaW5lLCBjb2x1bW4pIHsKLSAgICAgICAgdGhpcy5zdGFydCA9IG5ldyBQb3Np
dGlvbihzdGFydExpbmUsIHN0YXJ0Q29sdW1uKTsKLSAgICAgICAgdGhpcy5lbmQgPSBuZXcgUG9z
aXRpb24obGluZSwgY29sdW1uKTsKKyAgICBmdW5jdGlvbiBTb3VyY2VMb2NhdGlvbigpIHsKKyAg
ICAgICAgdGhpcy5zdGFydCA9IG5ldyBQb3NpdGlvbigpOworICAgICAgICB0aGlzLmVuZCA9IG51
bGw7CiAgICAgfQogCi0gICAgU3ludGF4VHJlZURlbGVnYXRlID0geworICAgIGZ1bmN0aW9uIFdy
YXBwaW5nU291cmNlTG9jYXRpb24oc3RhcnRUb2tlbikgeworICAgICAgICBpZiAoc3RhcnRUb2tl
bi50eXBlID09PSBUb2tlbi5TdHJpbmdMaXRlcmFsKSB7CisgICAgICAgICAgICB0aGlzLnN0YXJ0
ID0geworICAgICAgICAgICAgICAgIGxpbmU6IHN0YXJ0VG9rZW4uc3RhcnRMaW5lTnVtYmVyLAor
ICAgICAgICAgICAgICAgIGNvbHVtbjogc3RhcnRUb2tlbi5zdGFydCAtIHN0YXJ0VG9rZW4uc3Rh
cnRMaW5lU3RhcnQKKyAgICAgICAgICAgIH07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICB0aGlzLnN0YXJ0ID0geworICAgICAgICAgICAgICAgIGxpbmU6IHN0YXJ0VG9rZW4ubGluZU51
bWJlciwKKyAgICAgICAgICAgICAgICBjb2x1bW46IHN0YXJ0VG9rZW4uc3RhcnQgLSBzdGFydFRv
a2VuLmxpbmVTdGFydAorICAgICAgICAgICAgfTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLmVu
ZCA9IG51bGw7CisgICAgfQogCi0gICAgICAgIG5hbWU6ICdTeW50YXhUcmVlJywKKyAgICBmdW5j
dGlvbiBOb2RlKCkgeworICAgICAgICAvLyBTa2lwIGNvbW1lbnQuCisgICAgICAgIGluZGV4ID0g
bG9va2FoZWFkLnN0YXJ0OworICAgICAgICBpZiAobG9va2FoZWFkLnR5cGUgPT09IFRva2VuLlN0
cmluZ0xpdGVyYWwpIHsKKyAgICAgICAgICAgIGxpbmVOdW1iZXIgPSBsb29rYWhlYWQuc3RhcnRM
aW5lTnVtYmVyOworICAgICAgICAgICAgbGluZVN0YXJ0ID0gbG9va2FoZWFkLnN0YXJ0TGluZVN0
YXJ0OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbGluZU51bWJlciA9IGxvb2thaGVh
ZC5saW5lTnVtYmVyOworICAgICAgICAgICAgbGluZVN0YXJ0ID0gbG9va2FoZWFkLmxpbmVTdGFy
dDsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXh0cmEucmFuZ2UpIHsKKyAgICAgICAgICAgIHRo
aXMucmFuZ2UgPSBbaW5kZXgsIDBdOworICAgICAgICB9CisgICAgICAgIGlmIChleHRyYS5sb2Mp
IHsKKyAgICAgICAgICAgIHRoaXMubG9jID0gbmV3IFNvdXJjZUxvY2F0aW9uKCk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBmdW5jdGlvbiBXcmFwcGluZ05vZGUoc3RhcnRUb2tlbikgeworICAg
ICAgICBpZiAoZXh0cmEucmFuZ2UpIHsKKyAgICAgICAgICAgIHRoaXMucmFuZ2UgPSBbc3RhcnRU
b2tlbi5zdGFydCwgMF07CisgICAgICAgIH0KKyAgICAgICAgaWYgKGV4dHJhLmxvYykgeworICAg
ICAgICAgICAgdGhpcy5sb2MgPSBuZXcgV3JhcHBpbmdTb3VyY2VMb2NhdGlvbihzdGFydFRva2Vu
KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFdyYXBwaW5nTm9kZS5wcm90b3R5cGUgPSBOb2Rl
LnByb3RvdHlwZSA9IHsKIAotICAgICAgICBwcm9jZXNzQ29tbWVudDogZnVuY3Rpb24gKG5vZGUp
IHsKLSAgICAgICAgICAgIHZhciBsYXN0Q2hpbGQsIHRyYWlsaW5nQ29tbWVudHM7CisgICAgICAg
IHByb2Nlc3NDb21tZW50OiBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICB2YXIgbGFzdENoaWxk
LAorICAgICAgICAgICAgICAgIHRyYWlsaW5nQ29tbWVudHMsCisgICAgICAgICAgICAgICAgYm90
dG9tUmlnaHQgPSBleHRyYS5ib3R0b21SaWdodFN0YWNrLAorICAgICAgICAgICAgICAgIGxhc3Qg
PSBib3R0b21SaWdodFtib3R0b21SaWdodC5sZW5ndGggLSAxXTsKIAotICAgICAgICAgICAgaWYg
KG5vZGUudHlwZSA9PT0gU3ludGF4LlByb2dyYW0pIHsKLSAgICAgICAgICAgICAgICBpZiAobm9k
ZS5ib2R5Lmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgIGlmICh0aGlzLnR5cGUgPT09IFN5bnRh
eC5Qcm9ncmFtKSB7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuYm9keS5sZW5ndGggPiAwKSB7
CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9CiAKICAgICAgICAgICAgIGlmIChleHRyYS50cmFpbGluZ0NvbW1lbnRzLmxlbmd0aCA+
IDApIHsKLSAgICAgICAgICAgICAgICBpZiAoZXh0cmEudHJhaWxpbmdDb21tZW50c1swXS5yYW5n
ZVswXSA+PSBub2RlLnJhbmdlWzFdKSB7CisgICAgICAgICAgICAgICAgaWYgKGV4dHJhLnRyYWls
aW5nQ29tbWVudHNbMF0ucmFuZ2VbMF0gPj0gdGhpcy5yYW5nZVsxXSkgewogICAgICAgICAgICAg
ICAgICAgICB0cmFpbGluZ0NvbW1lbnRzID0gZXh0cmEudHJhaWxpbmdDb21tZW50czsKICAgICAg
ICAgICAgICAgICAgICAgZXh0cmEudHJhaWxpbmdDb21tZW50cyA9IFtdOwogICAgICAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGV4dHJhLnRyYWlsaW5nQ29tbWVudHMu
bGVuZ3RoID0gMDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewotICAg
ICAgICAgICAgICAgIGlmIChleHRyYS5ib3R0b21SaWdodFN0YWNrLmxlbmd0aCA+IDAgJiYKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGV4dHJhLmJvdHRvbVJpZ2h0U3RhY2tbZXh0cmEuYm90dG9t
UmlnaHRTdGFjay5sZW5ndGggLSAxXS50cmFpbGluZ0NvbW1lbnRzICYmCi0gICAgICAgICAgICAg
ICAgICAgICAgICBleHRyYS5ib3R0b21SaWdodFN0YWNrW2V4dHJhLmJvdHRvbVJpZ2h0U3RhY2su
bGVuZ3RoIC0gMV0udHJhaWxpbmdDb21tZW50c1swXS5yYW5nZVswXSA+PSBub2RlLnJhbmdlWzFd
KSB7Ci0gICAgICAgICAgICAgICAgICAgIHRyYWlsaW5nQ29tbWVudHMgPSBleHRyYS5ib3R0b21S
aWdodFN0YWNrW2V4dHJhLmJvdHRvbVJpZ2h0U3RhY2subGVuZ3RoIC0gMV0udHJhaWxpbmdDb21t
ZW50czsKLSAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGV4dHJhLmJvdHRvbVJpZ2h0U3RhY2tb
ZXh0cmEuYm90dG9tUmlnaHRTdGFjay5sZW5ndGggLSAxXS50cmFpbGluZ0NvbW1lbnRzOworICAg
ICAgICAgICAgICAgIGlmIChsYXN0ICYmIGxhc3QudHJhaWxpbmdDb21tZW50cyAmJiBsYXN0LnRy
YWlsaW5nQ29tbWVudHNbMF0ucmFuZ2VbMF0gPj0gdGhpcy5yYW5nZVsxXSkgeworICAgICAgICAg
ICAgICAgICAgICB0cmFpbGluZ0NvbW1lbnRzID0gbGFzdC50cmFpbGluZ0NvbW1lbnRzOworICAg
ICAgICAgICAgICAgICAgICBkZWxldGUgbGFzdC50cmFpbGluZ0NvbW1lbnRzOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gRWF0aW5nIHRoZSBzdGFj
ay4KLSAgICAgICAgICAgIHdoaWxlIChleHRyYS5ib3R0b21SaWdodFN0YWNrLmxlbmd0aCA+IDAg
JiYgZXh0cmEuYm90dG9tUmlnaHRTdGFja1tleHRyYS5ib3R0b21SaWdodFN0YWNrLmxlbmd0aCAt
IDFdLnJhbmdlWzBdID49IG5vZGUucmFuZ2VbMF0pIHsKLSAgICAgICAgICAgICAgICBsYXN0Q2hp
bGQgPSBleHRyYS5ib3R0b21SaWdodFN0YWNrLnBvcCgpOworICAgICAgICAgICAgaWYgKGxhc3Qp
IHsKKyAgICAgICAgICAgICAgICB3aGlsZSAobGFzdCAmJiBsYXN0LnJhbmdlWzBdID49IHRoaXMu
cmFuZ2VbMF0pIHsKKyAgICAgICAgICAgICAgICAgICAgbGFzdENoaWxkID0gbGFzdDsKKyAgICAg
ICAgICAgICAgICAgICAgbGFzdCA9IGJvdHRvbVJpZ2h0LnBvcCgpOworICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKGxhc3RDaGlsZCkgewotICAgICAg
ICAgICAgICAgIGlmIChsYXN0Q2hpbGQubGVhZGluZ0NvbW1lbnRzICYmIGxhc3RDaGlsZC5sZWFk
aW5nQ29tbWVudHNbbGFzdENoaWxkLmxlYWRpbmdDb21tZW50cy5sZW5ndGggLSAxXS5yYW5nZVsx
XSA8PSBub2RlLnJhbmdlWzBdKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5vZGUubGVhZGluZ0Nv
bW1lbnRzID0gbGFzdENoaWxkLmxlYWRpbmdDb21tZW50czsKLSAgICAgICAgICAgICAgICAgICAg
ZGVsZXRlIGxhc3RDaGlsZC5sZWFkaW5nQ29tbWVudHM7CisgICAgICAgICAgICAgICAgaWYgKGxh
c3RDaGlsZC5sZWFkaW5nQ29tbWVudHMgJiYgbGFzdENoaWxkLmxlYWRpbmdDb21tZW50c1tsYXN0
Q2hpbGQubGVhZGluZ0NvbW1lbnRzLmxlbmd0aCAtIDFdLnJhbmdlWzFdIDw9IHRoaXMucmFuZ2Vb
MF0pIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5sZWFkaW5nQ29tbWVudHMgPSBsYXN0Q2hp
bGQubGVhZGluZ0NvbW1lbnRzOworICAgICAgICAgICAgICAgICAgICBsYXN0Q2hpbGQubGVhZGlu
Z0NvbW1lbnRzID0gdW5kZWZpbmVkOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0g
ZWxzZSBpZiAoZXh0cmEubGVhZGluZ0NvbW1lbnRzLmxlbmd0aCA+IDAgJiYgZXh0cmEubGVhZGlu
Z0NvbW1lbnRzW2V4dHJhLmxlYWRpbmdDb21tZW50cy5sZW5ndGggLSAxXS5yYW5nZVsxXSA8PSBu
b2RlLnJhbmdlWzBdKSB7Ci0gICAgICAgICAgICAgICAgbm9kZS5sZWFkaW5nQ29tbWVudHMgPSBl
eHRyYS5sZWFkaW5nQ29tbWVudHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGV4dHJhLmxlYWRp
bmdDb21tZW50cy5sZW5ndGggPiAwICYmIGV4dHJhLmxlYWRpbmdDb21tZW50c1tleHRyYS5sZWFk
aW5nQ29tbWVudHMubGVuZ3RoIC0gMV0ucmFuZ2VbMV0gPD0gdGhpcy5yYW5nZVswXSkgeworICAg
ICAgICAgICAgICAgIHRoaXMubGVhZGluZ0NvbW1lbnRzID0gZXh0cmEubGVhZGluZ0NvbW1lbnRz
OwogICAgICAgICAgICAgICAgIGV4dHJhLmxlYWRpbmdDb21tZW50cyA9IFtdOwogICAgICAgICAg
ICAgfQogCiAKICAgICAgICAgICAgIGlmICh0cmFpbGluZ0NvbW1lbnRzKSB7Ci0gICAgICAgICAg
ICAgICAgbm9kZS50cmFpbGluZ0NvbW1lbnRzID0gdHJhaWxpbmdDb21tZW50czsKKyAgICAgICAg
ICAgICAgICB0aGlzLnRyYWlsaW5nQ29tbWVudHMgPSB0cmFpbGluZ0NvbW1lbnRzOwogICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICBleHRyYS5ib3R0b21SaWdodFN0YWNrLnB1c2gobm9kZSk7
CisgICAgICAgICAgICBib3R0b21SaWdodC5wdXNoKHRoaXMpOwogICAgICAgICB9LAogCi0gICAg
ICAgIG1hcmtFbmQ6IGZ1bmN0aW9uIChub2RlLCBzdGFydFRva2VuKSB7CisgICAgICAgIGZpbmlz
aDogZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgaWYgKGV4dHJhLnJhbmdlKSB7Ci0gICAgICAg
ICAgICAgICAgbm9kZS5yYW5nZSA9IFtzdGFydFRva2VuLnN0YXJ0LCBpbmRleF07CisgICAgICAg
ICAgICAgICAgdGhpcy5yYW5nZVsxXSA9IGluZGV4OwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgaWYgKGV4dHJhLmxvYykgewotICAgICAgICAgICAgICAgIG5vZGUubG9jID0gbmV3IFNvdXJj
ZUxvY2F0aW9uKAotICAgICAgICAgICAgICAgICAgICBzdGFydFRva2VuLnN0YXJ0TGluZU51bWJl
ciA9PT0gdW5kZWZpbmVkID8gIHN0YXJ0VG9rZW4ubGluZU51bWJlciA6IHN0YXJ0VG9rZW4uc3Rh
cnRMaW5lTnVtYmVyLAotICAgICAgICAgICAgICAgICAgICBzdGFydFRva2VuLnN0YXJ0IC0gKHN0
YXJ0VG9rZW4uc3RhcnRMaW5lU3RhcnQgPT09IHVuZGVmaW5lZCA/ICBzdGFydFRva2VuLmxpbmVT
dGFydCA6IHN0YXJ0VG9rZW4uc3RhcnRMaW5lU3RhcnQpLAotICAgICAgICAgICAgICAgICAgICBs
aW5lTnVtYmVyLAotICAgICAgICAgICAgICAgICAgICBpbmRleCAtIGxpbmVTdGFydAotICAgICAg
ICAgICAgICAgICk7Ci0gICAgICAgICAgICAgICAgdGhpcy5wb3N0UHJvY2Vzcyhub2RlKTsKKyAg
ICAgICAgICAgICAgICB0aGlzLmxvYy5lbmQgPSBuZXcgUG9zaXRpb24oKTsKKyAgICAgICAgICAg
ICAgICBpZiAoZXh0cmEuc291cmNlKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMubG9jLnNv
dXJjZSA9IGV4dHJhLnNvdXJjZTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGlmIChleHRyYS5hdHRhY2hDb21tZW50KSB7Ci0gICAgICAgICAgICAgICAg
dGhpcy5wcm9jZXNzQ29tbWVudChub2RlKTsKKyAgICAgICAgICAgICAgICB0aGlzLnByb2Nlc3ND
b21tZW50KCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbm9kZTsKICAgICAg
ICAgfSwKIAotICAgICAgICBwb3N0UHJvY2VzczogZnVuY3Rpb24gKG5vZGUpIHsKLSAgICAgICAg
ICAgIGlmIChleHRyYS5zb3VyY2UpIHsKLSAgICAgICAgICAgICAgICBub2RlLmxvYy5zb3VyY2Ug
PSBleHRyYS5zb3VyY2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbm9kZTsK
KyAgICAgICAgZmluaXNoQXJyYXlFeHByZXNzaW9uOiBmdW5jdGlvbiAoZWxlbWVudHMpIHsKKyAg
ICAgICAgICAgIHRoaXMudHlwZSA9IFN5bnRheC5BcnJheUV4cHJlc3Npb247CisgICAgICAgICAg
ICB0aGlzLmVsZW1lbnRzID0gZWxlbWVudHM7CisgICAgICAgICAgICB0aGlzLmZpbmlzaCgpOwor
ICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgIH0sCiAKLSAgICAgICAgY3JlYXRlQXJy
YXlFeHByZXNzaW9uOiBmdW5jdGlvbiAoZWxlbWVudHMpIHsKLSAgICAgICAgICAgIHJldHVybiB7
Ci0gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkFycmF5RXhwcmVzc2lvbiwKLSAgICAgICAg
ICAgICAgICBlbGVtZW50czogZWxlbWVudHMKLSAgICAgICAgICAgIH07CisgICAgICAgIGZpbmlz
aEFycm93RnVuY3Rpb25FeHByZXNzaW9uOiBmdW5jdGlvbiAocGFyYW1zLCBkZWZhdWx0cywgYm9k
eSwgZXhwcmVzc2lvbikgeworICAgICAgICAgICAgdGhpcy50eXBlID0gU3ludGF4LkFycm93RnVu
Y3Rpb25FeHByZXNzaW9uOworICAgICAgICAgICAgdGhpcy5pZCA9IG51bGw7CisgICAgICAgICAg
ICB0aGlzLnBhcmFtcyA9IHBhcmFtczsKKyAgICAgICAgICAgIHRoaXMuZGVmYXVsdHMgPSBkZWZh
dWx0czsKKyAgICAgICAgICAgIHRoaXMuYm9keSA9IGJvZHk7CisgICAgICAgICAgICB0aGlzLnJl
c3QgPSBudWxsOworICAgICAgICAgICAgdGhpcy5nZW5lcmF0b3IgPSBmYWxzZTsKKyAgICAgICAg
ICAgIHRoaXMuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247CisgICAgICAgICAgICB0aGlzLmZpbmlz
aCgpOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgIH0sCiAKLSAgICAgICAgY3Jl
YXRlQXNzaWdubWVudEV4cHJlc3Npb246IGZ1bmN0aW9uIChvcGVyYXRvciwgbGVmdCwgcmlnaHQp
IHsKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkFz
c2lnbm1lbnRFeHByZXNzaW9uLAotICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBvcGVyYXRvciwK
LSAgICAgICAgICAgICAgICBsZWZ0OiBsZWZ0LAotICAgICAgICAgICAgICAgIHJpZ2h0OiByaWdo
dAotICAgICAgICAgICAgfTsKKyAgICAgICAgZmluaXNoQXNzaWdubWVudEV4cHJlc3Npb246IGZ1
bmN0aW9uIChvcGVyYXRvciwgbGVmdCwgcmlnaHQpIHsKKyAgICAgICAgICAgIHRoaXMudHlwZSA9
IFN5bnRheC5Bc3NpZ25tZW50RXhwcmVzc2lvbjsKKyAgICAgICAgICAgIHRoaXMub3BlcmF0b3Ig
PSBvcGVyYXRvcjsKKyAgICAgICAgICAgIHRoaXMubGVmdCA9IGxlZnQ7CisgICAgICAgICAgICB0
aGlzLnJpZ2h0ID0gcmlnaHQ7CisgICAgICAgICAgICB0aGlzLmZpbmlzaCgpOworICAgICAgICAg
ICAgcmV0dXJuIHRoaXM7CiAgICAgICAgIH0sCiAKLSAgICAgICAgY3JlYXRlQmluYXJ5RXhwcmVz
c2lvbjogZnVuY3Rpb24gKG9wZXJhdG9yLCBsZWZ0LCByaWdodCkgewotICAgICAgICAgICAgdmFy
IHR5cGUgPSAob3BlcmF0b3IgPT09ICd8fCcgfHwgb3BlcmF0b3IgPT09ICcmJicpID8gU3ludGF4
LkxvZ2ljYWxFeHByZXNzaW9uIDoKLSAgICAgICAgICAgICAgICAgICAgICAgIFN5bnRheC5CaW5h
cnlFeHByZXNzaW9uOwotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICB0eXBl
OiB0eXBlLAotICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBvcGVyYXRvciwKLSAgICAgICAgICAg
ICAgICBsZWZ0OiBsZWZ0LAotICAgICAgICAgICAgICAgIHJpZ2h0OiByaWdodAotICAgICAgICAg
ICAgfTsKKyAgICAgICAgZmluaXNoQmluYXJ5RXhwcmVzc2lvbjogZnVuY3Rpb24gKG9wZXJhdG9y
LCBsZWZ0LCByaWdodCkgeworICAgICAgICAgICAgdGhpcy50eXBlID0gKG9wZXJhdG9yID09PSAn
fHwnIHx8IG9wZXJhdG9yID09PSAnJiYnKSA/IFN5bnRheC5Mb2dpY2FsRXhwcmVzc2lvbiA6IFN5
bnRheC5CaW5hcnlFeHByZXNzaW9uOworICAgICAgICAgICAgdGhpcy5vcGVyYXRvciA9IG9wZXJh
dG9yOworICAgICAgICAgICAgdGhpcy5sZWZ0ID0gbGVmdDsKKyAgICAgICAgICAgIHRoaXMucmln
aHQgPSByaWdodDsKKyAgICAgICAgICAgIHRoaXMuZmluaXNoKCk7CisgICAgICAgICAgICByZXR1
cm4gdGhpczsKICAgICAgICAgfSwKIAotICAgICAgICBjcmVhdGVCbG9ja1N0YXRlbWVudDogZnVu
Y3Rpb24gKGJvZHkpIHsKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlw
ZTogU3ludGF4LkJsb2NrU3RhdGVtZW50LAotICAgICAgICAgICAgICAgIGJvZHk6IGJvZHkKLSAg
ICAgICAgICAgIH07CisgICAgICAgIGZpbmlzaEJsb2NrU3RhdGVtZW50OiBmdW5jdGlvbiAoYm9k
eSkgeworICAgICAgICAgICAgdGhpcy50eXBlID0gU3ludGF4LkJsb2NrU3RhdGVtZW50OworICAg
ICAgICAgICAgdGhpcy5ib2R5ID0gYm9keTsKKyAgICAgICAgICAgIHRoaXMuZmluaXNoKCk7Cisg
ICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgfSwKIAotICAgICAgICBjcmVhdGVCcmVh
a1N0YXRlbWVudDogZnVuY3Rpb24gKGxhYmVsKSB7Ci0gICAgICAgICAgICByZXR1cm4gewotICAg
ICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5CcmVha1N0YXRlbWVudCwKLSAgICAgICAgICAgICAg
ICBsYWJlbDogbGFiZWwKLSAgICAgICAgICAgIH07CisgICAgICAgIGZpbmlzaEJyZWFrU3RhdGVt
ZW50OiBmdW5jdGlvbiAobGFiZWwpIHsKKyAgICAgICAgICAgIHRoaXMudHlwZSA9IFN5bnRheC5C
cmVha1N0YXRlbWVudDsKKyAgICAgICAgICAgIHRoaXMubGFiZWwgPSBsYWJlbDsKKyAgICAgICAg
ICAgIHRoaXMuZmluaXNoKCk7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgfSwK
IAotICAgICAgICBjcmVhdGVDYWxsRXhwcmVzc2lvbjogZnVuY3Rpb24gKGNhbGxlZSwgYXJncykg
ewotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguQ2Fs
bEV4cHJlc3Npb24sCi0gICAgICAgICAgICAgICAgY2FsbGVlOiBjYWxsZWUsCi0gICAgICAgICAg
ICAgICAgJ2FyZ3VtZW50cyc6IGFyZ3MKLSAgICAgICAgICAgIH07CisgICAgICAgIGZpbmlzaENh
bGxFeHByZXNzaW9uOiBmdW5jdGlvbiAoY2FsbGVlLCBhcmdzKSB7CisgICAgICAgICAgICB0aGlz
LnR5cGUgPSBTeW50YXguQ2FsbEV4cHJlc3Npb247CisgICAgICAgICAgICB0aGlzLmNhbGxlZSA9
IGNhbGxlZTsKKyAgICAgICAgICAgIHRoaXMuYXJndW1lbnRzID0gYXJnczsKKyAgICAgICAgICAg
IHRoaXMuZmluaXNoKCk7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgfSwKIAot
ICAgICAgICBjcmVhdGVDYXRjaENsYXVzZTogZnVuY3Rpb24gKHBhcmFtLCBib2R5KSB7Ci0gICAg
ICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5DYXRjaENsYXVz
ZSwKLSAgICAgICAgICAgICAgICBwYXJhbTogcGFyYW0sCi0gICAgICAgICAgICAgICAgYm9keTog
Ym9keQotICAgICAgICAgICAgfTsKKyAgICAgICAgZmluaXNoQ2F0Y2hDbGF1c2U6IGZ1bmN0aW9u
IChwYXJhbSwgYm9keSkgeworICAgICAgICAgICAgdGhpcy50eXBlID0gU3ludGF4LkNhdGNoQ2xh
dXNlOworICAgICAgICAgICAgdGhpcy5wYXJhbSA9IHBhcmFtOworICAgICAgICAgICAgdGhpcy5i
b2R5ID0gYm9keTsKKyAgICAgICAgICAgIHRoaXMuZmluaXNoKCk7CisgICAgICAgICAgICByZXR1
cm4gdGhpczsKICAgICAgICAgfSwKIAotICAgICAgICBjcmVhdGVDb25kaXRpb25hbEV4cHJlc3Np
b246IGZ1bmN0aW9uICh0ZXN0LCBjb25zZXF1ZW50LCBhbHRlcm5hdGUpIHsKLSAgICAgICAgICAg
IHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkNvbmRpdGlvbmFsRXhwcmVz
c2lvbiwKLSAgICAgICAgICAgICAgICB0ZXN0OiB0ZXN0LAotICAgICAgICAgICAgICAgIGNvbnNl
cXVlbnQ6IGNvbnNlcXVlbnQsCi0gICAgICAgICAgICAgICAgYWx0ZXJuYXRlOiBhbHRlcm5hdGUK
LSAgICAgICAgICAgIH07CisgICAgICAgIGZpbmlzaENvbmRpdGlvbmFsRXhwcmVzc2lvbjogZnVu
Y3Rpb24gKHRlc3QsIGNvbnNlcXVlbnQsIGFsdGVybmF0ZSkgeworICAgICAgICAgICAgdGhpcy50
eXBlID0gU3ludGF4LkNvbmRpdGlvbmFsRXhwcmVzc2lvbjsKKyAgICAgICAgICAgIHRoaXMudGVz
dCA9IHRlc3Q7CisgICAgICAgICAgICB0aGlzLmNvbnNlcXVlbnQgPSBjb25zZXF1ZW50OworICAg
ICAgICAgICAgdGhpcy5hbHRlcm5hdGUgPSBhbHRlcm5hdGU7CisgICAgICAgICAgICB0aGlzLmZp
bmlzaCgpOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgIH0sCiAKLSAgICAgICAg
Y3JlYXRlQ29udGludWVTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChsYWJlbCkgewotICAgICAgICAgICAg
cmV0dXJuIHsKLSAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguQ29udGludWVTdGF0ZW1lbnQs
Ci0gICAgICAgICAgICAgICAgbGFiZWw6IGxhYmVsCi0gICAgICAgICAgICB9OworICAgICAgICBm
aW5pc2hDb250aW51ZVN0YXRlbWVudDogZnVuY3Rpb24gKGxhYmVsKSB7CisgICAgICAgICAgICB0
aGlzLnR5cGUgPSBTeW50YXguQ29udGludWVTdGF0ZW1lbnQ7CisgICAgICAgICAgICB0aGlzLmxh
YmVsID0gbGFiZWw7CisgICAgICAgICAgICB0aGlzLmZpbmlzaCgpOworICAgICAgICAgICAgcmV0
dXJuIHRoaXM7CiAgICAgICAgIH0sCiAKLSAgICAgICAgY3JlYXRlRGVidWdnZXJTdGF0ZW1lbnQ6
IGZ1bmN0aW9uICgpIHsKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlw
ZTogU3ludGF4LkRlYnVnZ2VyU3RhdGVtZW50Ci0gICAgICAgICAgICB9OworICAgICAgICBmaW5p
c2hEZWJ1Z2dlclN0YXRlbWVudDogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGhpcy50eXBl
ID0gU3ludGF4LkRlYnVnZ2VyU3RhdGVtZW50OworICAgICAgICAgICAgdGhpcy5maW5pc2goKTsK
KyAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgICB9LAogCi0gICAgICAgIGNyZWF0ZURv
V2hpbGVTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChib2R5LCB0ZXN0KSB7Ci0gICAgICAgICAgICByZXR1
cm4gewotICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5Eb1doaWxlU3RhdGVtZW50LAotICAg
ICAgICAgICAgICAgIGJvZHk6IGJvZHksCi0gICAgICAgICAgICAgICAgdGVzdDogdGVzdAotICAg
ICAgICAgICAgfTsKKyAgICAgICAgZmluaXNoRG9XaGlsZVN0YXRlbWVudDogZnVuY3Rpb24gKGJv
ZHksIHRlc3QpIHsKKyAgICAgICAgICAgIHRoaXMudHlwZSA9IFN5bnRheC5Eb1doaWxlU3RhdGVt
ZW50OworICAgICAgICAgICAgdGhpcy5ib2R5ID0gYm9keTsKKyAgICAgICAgICAgIHRoaXMudGVz
dCA9IHRlc3Q7CisgICAgICAgICAgICB0aGlzLmZpbmlzaCgpOworICAgICAgICAgICAgcmV0dXJu
IHRoaXM7CiAgICAgICAgIH0sCiAKLSAgICAgICAgY3JlYXRlRW1wdHlTdGF0ZW1lbnQ6IGZ1bmN0
aW9uICgpIHsKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTogU3lu
dGF4LkVtcHR5U3RhdGVtZW50Ci0gICAgICAgICAgICB9OworICAgICAgICBmaW5pc2hFbXB0eVN0
YXRlbWVudDogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGhpcy50eXBlID0gU3ludGF4LkVt
cHR5U3RhdGVtZW50OworICAgICAgICAgICAgdGhpcy5maW5pc2goKTsKKyAgICAgICAgICAgIHJl
dHVybiB0aGlzOwogICAgICAgICB9LAogCi0gICAgICAgIGNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1l
bnQ6IGZ1bmN0aW9uIChleHByZXNzaW9uKSB7Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAg
ICAgICAgICAgIHR5cGU6IFN5bnRheC5FeHByZXNzaW9uU3RhdGVtZW50LAotICAgICAgICAgICAg
ICAgIGV4cHJlc3Npb246IGV4cHJlc3Npb24KLSAgICAgICAgICAgIH07CisgICAgICAgIGZpbmlz
aEV4cHJlc3Npb25TdGF0ZW1lbnQ6IGZ1bmN0aW9uIChleHByZXNzaW9uKSB7CisgICAgICAgICAg
ICB0aGlzLnR5cGUgPSBTeW50YXguRXhwcmVzc2lvblN0YXRlbWVudDsKKyAgICAgICAgICAgIHRo
aXMuZXhwcmVzc2lvbiA9IGV4cHJlc3Npb247CisgICAgICAgICAgICB0aGlzLmZpbmlzaCgpOwor
ICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgIH0sCiAKLSAgICAgICAgY3JlYXRlRm9y
U3RhdGVtZW50OiBmdW5jdGlvbiAoaW5pdCwgdGVzdCwgdXBkYXRlLCBib2R5KSB7Ci0gICAgICAg
ICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5Gb3JTdGF0ZW1lbnQs
Ci0gICAgICAgICAgICAgICAgaW5pdDogaW5pdCwKLSAgICAgICAgICAgICAgICB0ZXN0OiB0ZXN0
LAotICAgICAgICAgICAgICAgIHVwZGF0ZTogdXBkYXRlLAotICAgICAgICAgICAgICAgIGJvZHk6
IGJvZHkKLSAgICAgICAgICAgIH07CisgICAgICAgIGZpbmlzaEZvclN0YXRlbWVudDogZnVuY3Rp
b24gKGluaXQsIHRlc3QsIHVwZGF0ZSwgYm9keSkgeworICAgICAgICAgICAgdGhpcy50eXBlID0g
U3ludGF4LkZvclN0YXRlbWVudDsKKyAgICAgICAgICAgIHRoaXMuaW5pdCA9IGluaXQ7CisgICAg
ICAgICAgICB0aGlzLnRlc3QgPSB0ZXN0OworICAgICAgICAgICAgdGhpcy51cGRhdGUgPSB1cGRh
dGU7CisgICAgICAgICAgICB0aGlzLmJvZHkgPSBib2R5OworICAgICAgICAgICAgdGhpcy5maW5p
c2goKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgICB9LAogCi0gICAgICAgIGNy
ZWF0ZUZvckluU3RhdGVtZW50OiBmdW5jdGlvbiAobGVmdCwgcmlnaHQsIGJvZHkpIHsKLSAgICAg
ICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkZvckluU3RhdGVt
ZW50LAotICAgICAgICAgICAgICAgIGxlZnQ6IGxlZnQsCi0gICAgICAgICAgICAgICAgcmlnaHQ6
IHJpZ2h0LAotICAgICAgICAgICAgICAgIGJvZHk6IGJvZHksCi0gICAgICAgICAgICAgICAgZWFj
aDogZmFsc2UKLSAgICAgICAgICAgIH07CisgICAgICAgIGZpbmlzaEZvckluU3RhdGVtZW50OiBm
dW5jdGlvbiAobGVmdCwgcmlnaHQsIGJvZHkpIHsKKyAgICAgICAgICAgIHRoaXMudHlwZSA9IFN5
bnRheC5Gb3JJblN0YXRlbWVudDsKKyAgICAgICAgICAgIHRoaXMubGVmdCA9IGxlZnQ7CisgICAg
ICAgICAgICB0aGlzLnJpZ2h0ID0gcmlnaHQ7CisgICAgICAgICAgICB0aGlzLmJvZHkgPSBib2R5
OworICAgICAgICAgICAgdGhpcy5lYWNoID0gZmFsc2U7CisgICAgICAgICAgICB0aGlzLmZpbmlz
aCgpOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgIH0sCiAKLSAgICAgICAgY3Jl
YXRlRnVuY3Rpb25EZWNsYXJhdGlvbjogZnVuY3Rpb24gKGlkLCBwYXJhbXMsIGRlZmF1bHRzLCBi
b2R5KSB7Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRh
eC5GdW5jdGlvbkRlY2xhcmF0aW9uLAotICAgICAgICAgICAgICAgIGlkOiBpZCwKLSAgICAgICAg
ICAgICAgICBwYXJhbXM6IHBhcmFtcywKLSAgICAgICAgICAgICAgICBkZWZhdWx0czogZGVmYXVs
dHMsCi0gICAgICAgICAgICAgICAgYm9keTogYm9keSwKLSAgICAgICAgICAgICAgICByZXN0OiBu
dWxsLAotICAgICAgICAgICAgICAgIGdlbmVyYXRvcjogZmFsc2UsCi0gICAgICAgICAgICAgICAg
ZXhwcmVzc2lvbjogZmFsc2UKLSAgICAgICAgICAgIH07CisgICAgICAgIGZpbmlzaEZ1bmN0aW9u
RGVjbGFyYXRpb246IGZ1bmN0aW9uIChpZCwgcGFyYW1zLCBkZWZhdWx0cywgYm9keSkgeworICAg
ICAgICAgICAgdGhpcy50eXBlID0gU3ludGF4LkZ1bmN0aW9uRGVjbGFyYXRpb247CisgICAgICAg
ICAgICB0aGlzLmlkID0gaWQ7CisgICAgICAgICAgICB0aGlzLnBhcmFtcyA9IHBhcmFtczsKKyAg
ICAgICAgICAgIHRoaXMuZGVmYXVsdHMgPSBkZWZhdWx0czsKKyAgICAgICAgICAgIHRoaXMuYm9k
eSA9IGJvZHk7CisgICAgICAgICAgICB0aGlzLnJlc3QgPSBudWxsOworICAgICAgICAgICAgdGhp
cy5nZW5lcmF0b3IgPSBmYWxzZTsKKyAgICAgICAgICAgIHRoaXMuZXhwcmVzc2lvbiA9IGZhbHNl
OworICAgICAgICAgICAgdGhpcy5maW5pc2goKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOwog
ICAgICAgICB9LAogCi0gICAgICAgIGNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbjogZnVuY3Rpb24g
KGlkLCBwYXJhbXMsIGRlZmF1bHRzLCBib2R5KSB7Ci0gICAgICAgICAgICByZXR1cm4gewotICAg
ICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5GdW5jdGlvbkV4cHJlc3Npb24sCi0gICAgICAgICAg
ICAgICAgaWQ6IGlkLAotICAgICAgICAgICAgICAgIHBhcmFtczogcGFyYW1zLAotICAgICAgICAg
ICAgICAgIGRlZmF1bHRzOiBkZWZhdWx0cywKLSAgICAgICAgICAgICAgICBib2R5OiBib2R5LAot
ICAgICAgICAgICAgICAgIHJlc3Q6IG51bGwsCi0gICAgICAgICAgICAgICAgZ2VuZXJhdG9yOiBm
YWxzZSwKLSAgICAgICAgICAgICAgICBleHByZXNzaW9uOiBmYWxzZQotICAgICAgICAgICAgfTsK
KyAgICAgICAgZmluaXNoRnVuY3Rpb25FeHByZXNzaW9uOiBmdW5jdGlvbiAoaWQsIHBhcmFtcywg
ZGVmYXVsdHMsIGJvZHkpIHsKKyAgICAgICAgICAgIHRoaXMudHlwZSA9IFN5bnRheC5GdW5jdGlv
bkV4cHJlc3Npb247CisgICAgICAgICAgICB0aGlzLmlkID0gaWQ7CisgICAgICAgICAgICB0aGlz
LnBhcmFtcyA9IHBhcmFtczsKKyAgICAgICAgICAgIHRoaXMuZGVmYXVsdHMgPSBkZWZhdWx0czsK
KyAgICAgICAgICAgIHRoaXMuYm9keSA9IGJvZHk7CisgICAgICAgICAgICB0aGlzLnJlc3QgPSBu
dWxsOworICAgICAgICAgICAgdGhpcy5nZW5lcmF0b3IgPSBmYWxzZTsKKyAgICAgICAgICAgIHRo
aXMuZXhwcmVzc2lvbiA9IGZhbHNlOworICAgICAgICAgICAgdGhpcy5maW5pc2goKTsKKyAgICAg
ICAgICAgIHJldHVybiB0aGlzOwogICAgICAgICB9LAogCi0gICAgICAgIGNyZWF0ZUlkZW50aWZp
ZXI6IGZ1bmN0aW9uIChuYW1lKSB7Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAg
ICAgIHR5cGU6IFN5bnRheC5JZGVudGlmaWVyLAotICAgICAgICAgICAgICAgIG5hbWU6IG5hbWUK
LSAgICAgICAgICAgIH07CisgICAgICAgIGZpbmlzaElkZW50aWZpZXI6IGZ1bmN0aW9uIChuYW1l
KSB7CisgICAgICAgICAgICB0aGlzLnR5cGUgPSBTeW50YXguSWRlbnRpZmllcjsKKyAgICAgICAg
ICAgIHRoaXMubmFtZSA9IG5hbWU7CisgICAgICAgICAgICB0aGlzLmZpbmlzaCgpOworICAgICAg
ICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgIH0sCiAKLSAgICAgICAgY3JlYXRlSWZTdGF0ZW1l
bnQ6IGZ1bmN0aW9uICh0ZXN0LCBjb25zZXF1ZW50LCBhbHRlcm5hdGUpIHsKLSAgICAgICAgICAg
IHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LklmU3RhdGVtZW50LAotICAg
ICAgICAgICAgICAgIHRlc3Q6IHRlc3QsCi0gICAgICAgICAgICAgICAgY29uc2VxdWVudDogY29u
c2VxdWVudCwKLSAgICAgICAgICAgICAgICBhbHRlcm5hdGU6IGFsdGVybmF0ZQotICAgICAgICAg
ICAgfTsKKyAgICAgICAgZmluaXNoSWZTdGF0ZW1lbnQ6IGZ1bmN0aW9uICh0ZXN0LCBjb25zZXF1
ZW50LCBhbHRlcm5hdGUpIHsKKyAgICAgICAgICAgIHRoaXMudHlwZSA9IFN5bnRheC5JZlN0YXRl
bWVudDsKKyAgICAgICAgICAgIHRoaXMudGVzdCA9IHRlc3Q7CisgICAgICAgICAgICB0aGlzLmNv
bnNlcXVlbnQgPSBjb25zZXF1ZW50OworICAgICAgICAgICAgdGhpcy5hbHRlcm5hdGUgPSBhbHRl
cm5hdGU7CisgICAgICAgICAgICB0aGlzLmZpbmlzaCgpOworICAgICAgICAgICAgcmV0dXJuIHRo
aXM7CiAgICAgICAgIH0sCiAKLSAgICAgICAgY3JlYXRlTGFiZWxlZFN0YXRlbWVudDogZnVuY3Rp
b24gKGxhYmVsLCBib2R5KSB7Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAg
IHR5cGU6IFN5bnRheC5MYWJlbGVkU3RhdGVtZW50LAotICAgICAgICAgICAgICAgIGxhYmVsOiBs
YWJlbCwKLSAgICAgICAgICAgICAgICBib2R5OiBib2R5Ci0gICAgICAgICAgICB9OworICAgICAg
ICBmaW5pc2hMYWJlbGVkU3RhdGVtZW50OiBmdW5jdGlvbiAobGFiZWwsIGJvZHkpIHsKKyAgICAg
ICAgICAgIHRoaXMudHlwZSA9IFN5bnRheC5MYWJlbGVkU3RhdGVtZW50OworICAgICAgICAgICAg
dGhpcy5sYWJlbCA9IGxhYmVsOworICAgICAgICAgICAgdGhpcy5ib2R5ID0gYm9keTsKKyAgICAg
ICAgICAgIHRoaXMuZmluaXNoKCk7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAg
fSwKIAotICAgICAgICBjcmVhdGVMaXRlcmFsOiBmdW5jdGlvbiAodG9rZW4pIHsKLSAgICAgICAg
ICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkxpdGVyYWwsCi0gICAg
ICAgICAgICAgICAgdmFsdWU6IHRva2VuLnZhbHVlLAotICAgICAgICAgICAgICAgIHJhdzogc291
cmNlLnNsaWNlKHRva2VuLnN0YXJ0LCB0b2tlbi5lbmQpCi0gICAgICAgICAgICB9OworICAgICAg
ICBmaW5pc2hMaXRlcmFsOiBmdW5jdGlvbiAodG9rZW4pIHsKKyAgICAgICAgICAgIHRoaXMudHlw
ZSA9IFN5bnRheC5MaXRlcmFsOworICAgICAgICAgICAgdGhpcy52YWx1ZSA9IHRva2VuLnZhbHVl
OworICAgICAgICAgICAgdGhpcy5yYXcgPSBzb3VyY2Uuc2xpY2UodG9rZW4uc3RhcnQsIHRva2Vu
LmVuZCk7CisgICAgICAgICAgICBpZiAodG9rZW4ucmVnZXgpIHsKKyAgICAgICAgICAgICAgICB0
aGlzLnJlZ2V4ID0gdG9rZW4ucmVnZXg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aGlz
LmZpbmlzaCgpOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgIH0sCiAKLSAgICAg
ICAgY3JlYXRlTWVtYmVyRXhwcmVzc2lvbjogZnVuY3Rpb24gKGFjY2Vzc29yLCBvYmplY3QsIHBy
b3BlcnR5KSB7Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHR5cGU6IFN5
bnRheC5NZW1iZXJFeHByZXNzaW9uLAotICAgICAgICAgICAgICAgIGNvbXB1dGVkOiBhY2Nlc3Nv
ciA9PT0gJ1snLAotICAgICAgICAgICAgICAgIG9iamVjdDogb2JqZWN0LAotICAgICAgICAgICAg
ICAgIHByb3BlcnR5OiBwcm9wZXJ0eQotICAgICAgICAgICAgfTsKKyAgICAgICAgZmluaXNoTWVt
YmVyRXhwcmVzc2lvbjogZnVuY3Rpb24gKGFjY2Vzc29yLCBvYmplY3QsIHByb3BlcnR5KSB7Cisg
ICAgICAgICAgICB0aGlzLnR5cGUgPSBTeW50YXguTWVtYmVyRXhwcmVzc2lvbjsKKyAgICAgICAg
ICAgIHRoaXMuY29tcHV0ZWQgPSBhY2Nlc3NvciA9PT0gJ1snOworICAgICAgICAgICAgdGhpcy5v
YmplY3QgPSBvYmplY3Q7CisgICAgICAgICAgICB0aGlzLnByb3BlcnR5ID0gcHJvcGVydHk7Cisg
ICAgICAgICAgICB0aGlzLmZpbmlzaCgpOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAg
ICAgIH0sCiAKLSAgICAgICAgY3JlYXRlTmV3RXhwcmVzc2lvbjogZnVuY3Rpb24gKGNhbGxlZSwg
YXJncykgewotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICB0eXBlOiBTeW50
YXguTmV3RXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICBjYWxsZWU6IGNhbGxlZSwKLSAgICAg
ICAgICAgICAgICAnYXJndW1lbnRzJzogYXJncwotICAgICAgICAgICAgfTsKKyAgICAgICAgZmlu
aXNoTmV3RXhwcmVzc2lvbjogZnVuY3Rpb24gKGNhbGxlZSwgYXJncykgeworICAgICAgICAgICAg
dGhpcy50eXBlID0gU3ludGF4Lk5ld0V4cHJlc3Npb247CisgICAgICAgICAgICB0aGlzLmNhbGxl
ZSA9IGNhbGxlZTsKKyAgICAgICAgICAgIHRoaXMuYXJndW1lbnRzID0gYXJnczsKKyAgICAgICAg
ICAgIHRoaXMuZmluaXNoKCk7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgfSwK
IAotICAgICAgICBjcmVhdGVPYmplY3RFeHByZXNzaW9uOiBmdW5jdGlvbiAocHJvcGVydGllcykg
ewotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguT2Jq
ZWN0RXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzCi0g
ICAgICAgICAgICB9OworICAgICAgICBmaW5pc2hPYmplY3RFeHByZXNzaW9uOiBmdW5jdGlvbiAo
cHJvcGVydGllcykgeworICAgICAgICAgICAgdGhpcy50eXBlID0gU3ludGF4Lk9iamVjdEV4cHJl
c3Npb247CisgICAgICAgICAgICB0aGlzLnByb3BlcnRpZXMgPSBwcm9wZXJ0aWVzOworICAgICAg
ICAgICAgdGhpcy5maW5pc2goKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgICB9
LAogCi0gICAgICAgIGNyZWF0ZVBvc3RmaXhFeHByZXNzaW9uOiBmdW5jdGlvbiAob3BlcmF0b3Is
IGFyZ3VtZW50KSB7Ci0gICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHR5cGU6
IFN5bnRheC5VcGRhdGVFeHByZXNzaW9uLAotICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBvcGVy
YXRvciwKLSAgICAgICAgICAgICAgICBhcmd1bWVudDogYXJndW1lbnQsCi0gICAgICAgICAgICAg
ICAgcHJlZml4OiBmYWxzZQotICAgICAgICAgICAgfTsKKyAgICAgICAgZmluaXNoUG9zdGZpeEV4
cHJlc3Npb246IGZ1bmN0aW9uIChvcGVyYXRvciwgYXJndW1lbnQpIHsKKyAgICAgICAgICAgIHRo
aXMudHlwZSA9IFN5bnRheC5VcGRhdGVFeHByZXNzaW9uOworICAgICAgICAgICAgdGhpcy5vcGVy
YXRvciA9IG9wZXJhdG9yOworICAgICAgICAgICAgdGhpcy5hcmd1bWVudCA9IGFyZ3VtZW50Owor
ICAgICAgICAgICAgdGhpcy5wcmVmaXggPSBmYWxzZTsKKyAgICAgICAgICAgIHRoaXMuZmluaXNo
KCk7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgfSwKIAotICAgICAgICBjcmVh
dGVQcm9ncmFtOiBmdW5jdGlvbiAoYm9keSkgewotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAg
ICAgICAgICAgICB0eXBlOiBTeW50YXguUHJvZ3JhbSwKLSAgICAgICAgICAgICAgICBib2R5OiBi
b2R5Ci0gICAgICAgICAgICB9OworICAgICAgICBmaW5pc2hQcm9ncmFtOiBmdW5jdGlvbiAoYm9k
eSkgeworICAgICAgICAgICAgdGhpcy50eXBlID0gU3ludGF4LlByb2dyYW07CisgICAgICAgICAg
ICB0aGlzLmJvZHkgPSBib2R5OworICAgICAgICAgICAgdGhpcy5maW5pc2goKTsKKyAgICAgICAg
ICAgIHJldHVybiB0aGlzOwogICAgICAgICB9LAogCi0gICAgICAgIGNyZWF0ZVByb3BlcnR5OiBm
dW5jdGlvbiAoa2luZCwga2V5LCB2YWx1ZSkgewotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAg
ICAgICAgICAgICB0eXBlOiBTeW50YXguUHJvcGVydHksCi0gICAgICAgICAgICAgICAga2V5OiBr
ZXksCi0gICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLAotICAgICAgICAgICAgICAgIGtpbmQ6
IGtpbmQKLSAgICAgICAgICAgIH07CisgICAgICAgIGZpbmlzaFByb3BlcnR5OiBmdW5jdGlvbiAo
a2luZCwga2V5LCB2YWx1ZSkgeworICAgICAgICAgICAgdGhpcy50eXBlID0gU3ludGF4LlByb3Bl
cnR5OworICAgICAgICAgICAgdGhpcy5rZXkgPSBrZXk7CisgICAgICAgICAgICB0aGlzLnZhbHVl
ID0gdmFsdWU7CisgICAgICAgICAgICB0aGlzLmtpbmQgPSBraW5kOworICAgICAgICAgICAgdGhp
cy5maW5pc2goKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgICB9LAogCi0gICAg
ICAgIGNyZWF0ZVJldHVyblN0YXRlbWVudDogZnVuY3Rpb24gKGFyZ3VtZW50KSB7Ci0gICAgICAg
ICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5SZXR1cm5TdGF0ZW1l
bnQsCi0gICAgICAgICAgICAgICAgYXJndW1lbnQ6IGFyZ3VtZW50Ci0gICAgICAgICAgICB9Owor
ICAgICAgICBmaW5pc2hSZXR1cm5TdGF0ZW1lbnQ6IGZ1bmN0aW9uIChhcmd1bWVudCkgeworICAg
ICAgICAgICAgdGhpcy50eXBlID0gU3ludGF4LlJldHVyblN0YXRlbWVudDsKKyAgICAgICAgICAg
IHRoaXMuYXJndW1lbnQgPSBhcmd1bWVudDsKKyAgICAgICAgICAgIHRoaXMuZmluaXNoKCk7Cisg
ICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgfSwKIAotICAgICAgICBjcmVhdGVTZXF1
ZW5jZUV4cHJlc3Npb246IGZ1bmN0aW9uIChleHByZXNzaW9ucykgewotICAgICAgICAgICAgcmV0
dXJuIHsKLSAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguU2VxdWVuY2VFeHByZXNzaW9uLAot
ICAgICAgICAgICAgICAgIGV4cHJlc3Npb25zOiBleHByZXNzaW9ucwotICAgICAgICAgICAgfTsK
KyAgICAgICAgZmluaXNoU2VxdWVuY2VFeHByZXNzaW9uOiBmdW5jdGlvbiAoZXhwcmVzc2lvbnMp
IHsKKyAgICAgICAgICAgIHRoaXMudHlwZSA9IFN5bnRheC5TZXF1ZW5jZUV4cHJlc3Npb247Cisg
ICAgICAgICAgICB0aGlzLmV4cHJlc3Npb25zID0gZXhwcmVzc2lvbnM7CisgICAgICAgICAgICB0
aGlzLmZpbmlzaCgpOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgIH0sCiAKLSAg
ICAgICAgY3JlYXRlU3dpdGNoQ2FzZTogZnVuY3Rpb24gKHRlc3QsIGNvbnNlcXVlbnQpIHsKLSAg
ICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LlN3aXRjaENh
c2UsCi0gICAgICAgICAgICAgICAgdGVzdDogdGVzdCwKLSAgICAgICAgICAgICAgICBjb25zZXF1
ZW50OiBjb25zZXF1ZW50Ci0gICAgICAgICAgICB9OworICAgICAgICBmaW5pc2hTd2l0Y2hDYXNl
OiBmdW5jdGlvbiAodGVzdCwgY29uc2VxdWVudCkgeworICAgICAgICAgICAgdGhpcy50eXBlID0g
U3ludGF4LlN3aXRjaENhc2U7CisgICAgICAgICAgICB0aGlzLnRlc3QgPSB0ZXN0OworICAgICAg
ICAgICAgdGhpcy5jb25zZXF1ZW50ID0gY29uc2VxdWVudDsKKyAgICAgICAgICAgIHRoaXMuZmlu
aXNoKCk7CisgICAgICAgICAgICByZXR1cm4gdGhpczsKICAgICAgICAgfSwKIAotICAgICAgICBj
cmVhdGVTd2l0Y2hTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChkaXNjcmltaW5hbnQsIGNhc2VzKSB7Ci0g
ICAgICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5Td2l0Y2hT
dGF0ZW1lbnQsCi0gICAgICAgICAgICAgICAgZGlzY3JpbWluYW50OiBkaXNjcmltaW5hbnQsCi0g
ICAgICAgICAgICAgICAgY2FzZXM6IGNhc2VzCi0gICAgICAgICAgICB9OworICAgICAgICBmaW5p
c2hTd2l0Y2hTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChkaXNjcmltaW5hbnQsIGNhc2VzKSB7CisgICAg
ICAgICAgICB0aGlzLnR5cGUgPSBTeW50YXguU3dpdGNoU3RhdGVtZW50OworICAgICAgICAgICAg
dGhpcy5kaXNjcmltaW5hbnQgPSBkaXNjcmltaW5hbnQ7CisgICAgICAgICAgICB0aGlzLmNhc2Vz
ID0gY2FzZXM7CisgICAgICAgICAgICB0aGlzLmZpbmlzaCgpOworICAgICAgICAgICAgcmV0dXJu
IHRoaXM7CiAgICAgICAgIH0sCiAKLSAgICAgICAgY3JlYXRlVGhpc0V4cHJlc3Npb246IGZ1bmN0
aW9uICgpIHsKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTogU3lu
dGF4LlRoaXNFeHByZXNzaW9uCi0gICAgICAgICAgICB9OworICAgICAgICBmaW5pc2hUaGlzRXhw
cmVzc2lvbjogZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgdGhpcy50eXBlID0gU3ludGF4LlRo
aXNFeHByZXNzaW9uOworICAgICAgICAgICAgdGhpcy5maW5pc2goKTsKKyAgICAgICAgICAgIHJl
dHVybiB0aGlzOwogICAgICAgICB9LAogCi0gICAgICAgIGNyZWF0ZVRocm93U3RhdGVtZW50OiBm
dW5jdGlvbiAoYXJndW1lbnQpIHsKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAg
ICAgdHlwZTogU3ludGF4LlRocm93U3RhdGVtZW50LAotICAgICAgICAgICAgICAgIGFyZ3VtZW50
OiBhcmd1bWVudAotICAgICAgICAgICAgfTsKKyAgICAgICAgZmluaXNoVGhyb3dTdGF0ZW1lbnQ6
IGZ1bmN0aW9uIChhcmd1bWVudCkgeworICAgICAgICAgICAgdGhpcy50eXBlID0gU3ludGF4LlRo
cm93U3RhdGVtZW50OworICAgICAgICAgICAgdGhpcy5hcmd1bWVudCA9IGFyZ3VtZW50OworICAg
ICAgICAgICAgdGhpcy5maW5pc2goKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAg
ICB9LAogCi0gICAgICAgIGNyZWF0ZVRyeVN0YXRlbWVudDogZnVuY3Rpb24gKGJsb2NrLCBndWFy
ZGVkSGFuZGxlcnMsIGhhbmRsZXJzLCBmaW5hbGl6ZXIpIHsKLSAgICAgICAgICAgIHJldHVybiB7
Ci0gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LlRyeVN0YXRlbWVudCwKLSAgICAgICAgICAg
ICAgICBibG9jazogYmxvY2ssCi0gICAgICAgICAgICAgICAgZ3VhcmRlZEhhbmRsZXJzOiBndWFy
ZGVkSGFuZGxlcnMsCi0gICAgICAgICAgICAgICAgaGFuZGxlcnM6IGhhbmRsZXJzLAotICAgICAg
ICAgICAgICAgIGZpbmFsaXplcjogZmluYWxpemVyCi0gICAgICAgICAgICB9OworICAgICAgICBm
aW5pc2hUcnlTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChibG9jaywgZ3VhcmRlZEhhbmRsZXJzLCBoYW5k
bGVycywgZmluYWxpemVyKSB7CisgICAgICAgICAgICB0aGlzLnR5cGUgPSBTeW50YXguVHJ5U3Rh
dGVtZW50OworICAgICAgICAgICAgdGhpcy5ibG9jayA9IGJsb2NrOworICAgICAgICAgICAgdGhp
cy5ndWFyZGVkSGFuZGxlcnMgPSBndWFyZGVkSGFuZGxlcnM7CisgICAgICAgICAgICB0aGlzLmhh
bmRsZXJzID0gaGFuZGxlcnM7CisgICAgICAgICAgICB0aGlzLmZpbmFsaXplciA9IGZpbmFsaXpl
cjsKKyAgICAgICAgICAgIHRoaXMuZmluaXNoKCk7CisgICAgICAgICAgICByZXR1cm4gdGhpczsK
ICAgICAgICAgfSwKIAotICAgICAgICBjcmVhdGVVbmFyeUV4cHJlc3Npb246IGZ1bmN0aW9uIChv
cGVyYXRvciwgYXJndW1lbnQpIHsKLSAgICAgICAgICAgIGlmIChvcGVyYXRvciA9PT0gJysrJyB8
fCBvcGVyYXRvciA9PT0gJy0tJykgewotICAgICAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAg
ICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5VcGRhdGVFeHByZXNzaW9uLAotICAgICAgICAgICAg
ICAgICAgICBvcGVyYXRvcjogb3BlcmF0b3IsCi0gICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50
OiBhcmd1bWVudCwKLSAgICAgICAgICAgICAgICAgICAgcHJlZml4OiB0cnVlCi0gICAgICAgICAg
ICAgICAgfTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAg
ICAgICAgdHlwZTogU3ludGF4LlVuYXJ5RXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICBvcGVy
YXRvcjogb3BlcmF0b3IsCi0gICAgICAgICAgICAgICAgYXJndW1lbnQ6IGFyZ3VtZW50LAotICAg
ICAgICAgICAgICAgIHByZWZpeDogdHJ1ZQotICAgICAgICAgICAgfTsKKyAgICAgICAgZmluaXNo
VW5hcnlFeHByZXNzaW9uOiBmdW5jdGlvbiAob3BlcmF0b3IsIGFyZ3VtZW50KSB7CisgICAgICAg
ICAgICB0aGlzLnR5cGUgPSAob3BlcmF0b3IgPT09ICcrKycgfHwgb3BlcmF0b3IgPT09ICctLScp
ID8gU3ludGF4LlVwZGF0ZUV4cHJlc3Npb24gOiBTeW50YXguVW5hcnlFeHByZXNzaW9uOworICAg
ICAgICAgICAgdGhpcy5vcGVyYXRvciA9IG9wZXJhdG9yOworICAgICAgICAgICAgdGhpcy5hcmd1
bWVudCA9IGFyZ3VtZW50OworICAgICAgICAgICAgdGhpcy5wcmVmaXggPSB0cnVlOworICAgICAg
ICAgICAgdGhpcy5maW5pc2goKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgICB9
LAogCi0gICAgICAgIGNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb246IGZ1bmN0aW9uIChkZWNsYXJh
dGlvbnMsIGtpbmQpIHsKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlw
ZTogU3ludGF4LlZhcmlhYmxlRGVjbGFyYXRpb24sCi0gICAgICAgICAgICAgICAgZGVjbGFyYXRp
b25zOiBkZWNsYXJhdGlvbnMsCi0gICAgICAgICAgICAgICAga2luZDoga2luZAotICAgICAgICAg
ICAgfTsKKyAgICAgICAgZmluaXNoVmFyaWFibGVEZWNsYXJhdGlvbjogZnVuY3Rpb24gKGRlY2xh
cmF0aW9ucywga2luZCkgeworICAgICAgICAgICAgdGhpcy50eXBlID0gU3ludGF4LlZhcmlhYmxl
RGVjbGFyYXRpb247CisgICAgICAgICAgICB0aGlzLmRlY2xhcmF0aW9ucyA9IGRlY2xhcmF0aW9u
czsKKyAgICAgICAgICAgIHRoaXMua2luZCA9IGtpbmQ7CisgICAgICAgICAgICB0aGlzLmZpbmlz
aCgpOworICAgICAgICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgIH0sCiAKLSAgICAgICAgY3Jl
YXRlVmFyaWFibGVEZWNsYXJhdG9yOiBmdW5jdGlvbiAoaWQsIGluaXQpIHsKLSAgICAgICAgICAg
IHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LlZhcmlhYmxlRGVjbGFyYXRv
ciwKLSAgICAgICAgICAgICAgICBpZDogaWQsCi0gICAgICAgICAgICAgICAgaW5pdDogaW5pdAot
ICAgICAgICAgICAgfTsKKyAgICAgICAgZmluaXNoVmFyaWFibGVEZWNsYXJhdG9yOiBmdW5jdGlv
biAoaWQsIGluaXQpIHsKKyAgICAgICAgICAgIHRoaXMudHlwZSA9IFN5bnRheC5WYXJpYWJsZURl
Y2xhcmF0b3I7CisgICAgICAgICAgICB0aGlzLmlkID0gaWQ7CisgICAgICAgICAgICB0aGlzLmlu
aXQgPSBpbml0OworICAgICAgICAgICAgdGhpcy5maW5pc2goKTsKKyAgICAgICAgICAgIHJldHVy
biB0aGlzOwogICAgICAgICB9LAogCi0gICAgICAgIGNyZWF0ZVdoaWxlU3RhdGVtZW50OiBmdW5j
dGlvbiAodGVzdCwgYm9keSkgewotICAgICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICAg
ICB0eXBlOiBTeW50YXguV2hpbGVTdGF0ZW1lbnQsCi0gICAgICAgICAgICAgICAgdGVzdDogdGVz
dCwKLSAgICAgICAgICAgICAgICBib2R5OiBib2R5Ci0gICAgICAgICAgICB9OworICAgICAgICBm
aW5pc2hXaGlsZVN0YXRlbWVudDogZnVuY3Rpb24gKHRlc3QsIGJvZHkpIHsKKyAgICAgICAgICAg
IHRoaXMudHlwZSA9IFN5bnRheC5XaGlsZVN0YXRlbWVudDsKKyAgICAgICAgICAgIHRoaXMudGVz
dCA9IHRlc3Q7CisgICAgICAgICAgICB0aGlzLmJvZHkgPSBib2R5OworICAgICAgICAgICAgdGhp
cy5maW5pc2goKTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzOwogICAgICAgICB9LAogCi0gICAg
ICAgIGNyZWF0ZVdpdGhTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChvYmplY3QsIGJvZHkpIHsKLSAgICAg
ICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LldpdGhTdGF0ZW1l
bnQsCi0gICAgICAgICAgICAgICAgb2JqZWN0OiBvYmplY3QsCi0gICAgICAgICAgICAgICAgYm9k
eTogYm9keQotICAgICAgICAgICAgfTsKKyAgICAgICAgZmluaXNoV2l0aFN0YXRlbWVudDogZnVu
Y3Rpb24gKG9iamVjdCwgYm9keSkgeworICAgICAgICAgICAgdGhpcy50eXBlID0gU3ludGF4Lldp
dGhTdGF0ZW1lbnQ7CisgICAgICAgICAgICB0aGlzLm9iamVjdCA9IG9iamVjdDsKKyAgICAgICAg
ICAgIHRoaXMuYm9keSA9IGJvZHk7CisgICAgICAgICAgICB0aGlzLmZpbmlzaCgpOworICAgICAg
ICAgICAgcmV0dXJuIHRoaXM7CiAgICAgICAgIH0KICAgICB9OwogCkBAIC0xODc5LDYgKzIwMjAs
MjYgQEAgV2ViSW5zcGVjdG9yLkVzcHJpbWEgPSB7fTsKICAgICAgICAgfQogICAgIH0KIAorICAg
IC8qKgorICAgICAqIEBuYW1lIGV4cGVjdFRvbGVyYW50CisgICAgICogQGRlc2NyaXB0aW9uIFF1
aWV0bHkgZXhwZWN0IHRoZSBnaXZlbiB0b2tlbiB2YWx1ZSB3aGVuIGluIHRvbGVyYW50IG1vZGUs
IG90aGVyd2lzZSBkZWxlZ2F0ZXMKKyAgICAgKiB0byA8Y29kZT5leHBlY3QodmFsdWUpPC9jb2Rl
PgorICAgICAqIEBwYXJhbSB7U3RyaW5nfSB2YWx1ZSBUaGUgdmFsdWUgd2UgYXJlIGV4cGVjdGlu
ZyB0aGUgbG9va2FoZWFkIHRva2VuIHRvIGhhdmUKKyAgICAgKiBAc2luY2UgMi4wCisgICAgICov
CisgICAgZnVuY3Rpb24gZXhwZWN0VG9sZXJhbnQodmFsdWUpIHsKKyAgICAgICAgaWYgKGV4dHJh
LmVycm9ycykgeworICAgICAgICAgICAgdmFyIHRva2VuID0gbG9va2FoZWFkOworICAgICAgICAg
ICAgaWYgKHRva2VuLnR5cGUgIT09IFRva2VuLlB1bmN0dWF0b3IgJiYgdG9rZW4udmFsdWUgIT09
IHZhbHVlKSB7CisgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHRva2VuLCBNZXNz
YWdlcy5VbmV4cGVjdGVkVG9rZW4sIHRva2VuLnZhbHVlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAgICAgbGV4KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICBleHBlY3QodmFsdWUpOworICAgICAgICB9CisgICAgfQorCiAgICAgLy8g
RXhwZWN0IHRoZSBuZXh0IHRva2VuIHRvIG1hdGNoIHRoZSBzcGVjaWZpZWQga2V5d29yZC4KICAg
ICAvLyBJZiBub3QsIGFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93bi4KIApAQCAtMTk1Myw5ICsy
MTE0LDggQEAgV2ViSW5zcGVjdG9yLkVzcHJpbWEgPSB7fTsKICAgICAvLyAxMS4xLjQgQXJyYXkg
SW5pdGlhbGlzZXIKIAogICAgIGZ1bmN0aW9uIHBhcnNlQXJyYXlJbml0aWFsaXNlcigpIHsKLSAg
ICAgICAgdmFyIGVsZW1lbnRzID0gW10sIHN0YXJ0VG9rZW47CisgICAgICAgIHZhciBlbGVtZW50
cyA9IFtdLCBub2RlID0gbmV3IE5vZGUoKTsKIAotICAgICAgICBzdGFydFRva2VuID0gbG9va2Fo
ZWFkOwogICAgICAgICBleHBlY3QoJ1snKTsKIAogICAgICAgICB3aGlsZSAoIW1hdGNoKCddJykp
IHsKQEAgLTE5NzMsMjggKzIxMzMsMjYgQEAgV2ViSW5zcGVjdG9yLkVzcHJpbWEgPSB7fTsKIAog
ICAgICAgICBsZXgoKTsKIAotICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0
ZS5jcmVhdGVBcnJheUV4cHJlc3Npb24oZWxlbWVudHMpLCBzdGFydFRva2VuKTsKKyAgICAgICAg
cmV0dXJuIG5vZGUuZmluaXNoQXJyYXlFeHByZXNzaW9uKGVsZW1lbnRzKTsKICAgICB9CiAKICAg
ICAvLyAxMS4xLjUgT2JqZWN0IEluaXRpYWxpc2VyCiAKICAgICBmdW5jdGlvbiBwYXJzZVByb3Bl
cnR5RnVuY3Rpb24ocGFyYW0sIGZpcnN0KSB7Ci0gICAgICAgIHZhciBwcmV2aW91c1N0cmljdCwg
Ym9keSwgc3RhcnRUb2tlbjsKKyAgICAgICAgdmFyIHByZXZpb3VzU3RyaWN0LCBib2R5LCBub2Rl
ID0gbmV3IE5vZGUoKTsKIAogICAgICAgICBwcmV2aW91c1N0cmljdCA9IHN0cmljdDsKLSAgICAg
ICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDsKICAgICAgICAgYm9keSA9IHBhcnNlRnVuY3Rpb25T
b3VyY2VFbGVtZW50cygpOwogICAgICAgICBpZiAoZmlyc3QgJiYgc3RyaWN0ICYmIGlzUmVzdHJp
Y3RlZFdvcmQocGFyYW1bMF0ubmFtZSkpIHsKICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFu
dChmaXJzdCwgTWVzc2FnZXMuU3RyaWN0UGFyYW1OYW1lKTsKICAgICAgICAgfQogICAgICAgICBz
dHJpY3QgPSBwcmV2aW91c1N0cmljdDsKLSAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQo
ZGVsZWdhdGUuY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKG51bGwsIHBhcmFtLCBbXSwgYm9keSks
IHN0YXJ0VG9rZW4pOworICAgICAgICByZXR1cm4gbm9kZS5maW5pc2hGdW5jdGlvbkV4cHJlc3Np
b24obnVsbCwgcGFyYW0sIFtdLCBib2R5KTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBwYXJzZU9i
amVjdFByb3BlcnR5S2V5KCkgewotICAgICAgICB2YXIgdG9rZW4sIHN0YXJ0VG9rZW47CisgICAg
ICAgIHZhciB0b2tlbiwgbm9kZSA9IG5ldyBOb2RlKCk7CiAKLSAgICAgICAgc3RhcnRUb2tlbiA9
IGxvb2thaGVhZDsKICAgICAgICAgdG9rZW4gPSBsZXgoKTsKIAogICAgICAgICAvLyBOb3RlOiBU
aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbmx5IGZyb20gcGFyc2VPYmplY3RQcm9wZXJ0eSgpLCB3
aGVyZQpAQCAtMjAwNCwxNyArMjE2MiwxNiBAQCBXZWJJbnNwZWN0b3IuRXNwcmltYSA9IHt9Owog
ICAgICAgICAgICAgaWYgKHN0cmljdCAmJiB0b2tlbi5vY3RhbCkgewogICAgICAgICAgICAgICAg
IHRocm93RXJyb3JUb2xlcmFudCh0b2tlbiwgTWVzc2FnZXMuU3RyaWN0T2N0YWxMaXRlcmFsKTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVn
YXRlLmNyZWF0ZUxpdGVyYWwodG9rZW4pLCBzdGFydFRva2VuKTsKKyAgICAgICAgICAgIHJldHVy
biBub2RlLmZpbmlzaExpdGVyYWwodG9rZW4pOwogICAgICAgICB9CiAKLSAgICAgICAgcmV0dXJu
IGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlSWRlbnRpZmllcih0b2tlbi52YWx1ZSks
IHN0YXJ0VG9rZW4pOworICAgICAgICByZXR1cm4gbm9kZS5maW5pc2hJZGVudGlmaWVyKHRva2Vu
LnZhbHVlKTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBwYXJzZU9iamVjdFByb3BlcnR5KCkgewot
ICAgICAgICB2YXIgdG9rZW4sIGtleSwgaWQsIHZhbHVlLCBwYXJhbSwgc3RhcnRUb2tlbjsKKyAg
ICAgICAgdmFyIHRva2VuLCBrZXksIGlkLCB2YWx1ZSwgcGFyYW0sIG5vZGUgPSBuZXcgTm9kZSgp
OwogCiAgICAgICAgIHRva2VuID0gbG9va2FoZWFkOwotICAgICAgICBzdGFydFRva2VuID0gbG9v
a2FoZWFkOwogCiAgICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbi5JZGVudGlmaWVyKSB7
CiAKQEAgLTIwMjcsNyArMjE4NCw3IEBAIFdlYkluc3BlY3Rvci5Fc3ByaW1hID0ge307CiAgICAg
ICAgICAgICAgICAgZXhwZWN0KCcoJyk7CiAgICAgICAgICAgICAgICAgZXhwZWN0KCcpJyk7CiAg
ICAgICAgICAgICAgICAgdmFsdWUgPSBwYXJzZVByb3BlcnR5RnVuY3Rpb24oW10pOwotICAgICAg
ICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVByb3BlcnR5
KCdnZXQnLCBrZXksIHZhbHVlKSwgc3RhcnRUb2tlbik7CisgICAgICAgICAgICAgICAgcmV0dXJu
IG5vZGUuZmluaXNoUHJvcGVydHkoJ2dldCcsIGtleSwgdmFsdWUpOwogICAgICAgICAgICAgfQog
ICAgICAgICAgICAgaWYgKHRva2VuLnZhbHVlID09PSAnc2V0JyAmJiAhbWF0Y2goJzonKSkgewog
ICAgICAgICAgICAgICAgIGtleSA9IHBhcnNlT2JqZWN0UHJvcGVydHlLZXkoKTsKQEAgLTIwNDIs
MTEgKzIxOTksMTEgQEAgV2ViSW5zcGVjdG9yLkVzcHJpbWEgPSB7fTsKICAgICAgICAgICAgICAg
ICAgICAgZXhwZWN0KCcpJyk7CiAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gcGFyc2VQcm9w
ZXJ0eUZ1bmN0aW9uKHBhcmFtLCB0b2tlbik7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVByb3BlcnR5KCdz
ZXQnLCBrZXksIHZhbHVlKSwgc3RhcnRUb2tlbik7CisgICAgICAgICAgICAgICAgcmV0dXJuIG5v
ZGUuZmluaXNoUHJvcGVydHkoJ3NldCcsIGtleSwgdmFsdWUpOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgZXhwZWN0KCc6Jyk7CiAgICAgICAgICAgICB2YWx1ZSA9IHBhcnNlQXNzaWdubWVu
dEV4cHJlc3Npb24oKTsKLSAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVn
YXRlLmNyZWF0ZVByb3BlcnR5KCdpbml0JywgaWQsIHZhbHVlKSwgc3RhcnRUb2tlbik7CisgICAg
ICAgICAgICByZXR1cm4gbm9kZS5maW5pc2hQcm9wZXJ0eSgnaW5pdCcsIGlkLCB2YWx1ZSk7CiAg
ICAgICAgIH0KICAgICAgICAgaWYgKHRva2VuLnR5cGUgPT09IFRva2VuLkVPRiB8fCB0b2tlbi50
eXBlID09PSBUb2tlbi5QdW5jdHVhdG9yKSB7CiAgICAgICAgICAgICB0aHJvd1VuZXhwZWN0ZWQo
dG9rZW4pOwpAQCAtMjA1NCwxNCArMjIxMSwxMiBAQCBXZWJJbnNwZWN0b3IuRXNwcmltYSA9IHt9
OwogICAgICAgICAgICAga2V5ID0gcGFyc2VPYmplY3RQcm9wZXJ0eUtleSgpOwogICAgICAgICAg
ICAgZXhwZWN0KCc6Jyk7CiAgICAgICAgICAgICB2YWx1ZSA9IHBhcnNlQXNzaWdubWVudEV4cHJl
c3Npb24oKTsKLSAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNy
ZWF0ZVByb3BlcnR5KCdpbml0Jywga2V5LCB2YWx1ZSksIHN0YXJ0VG9rZW4pOworICAgICAgICAg
ICAgcmV0dXJuIG5vZGUuZmluaXNoUHJvcGVydHkoJ2luaXQnLCBrZXksIHZhbHVlKTsKICAgICAg
ICAgfQogICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlT2JqZWN0SW5pdGlhbGlzZXIoKSB7Ci0g
ICAgICAgIHZhciBwcm9wZXJ0aWVzID0gW10sIHByb3BlcnR5LCBuYW1lLCBrZXksIGtpbmQsIG1h
cCA9IHt9LCB0b1N0cmluZyA9IFN0cmluZywgc3RhcnRUb2tlbjsKLQotICAgICAgICBzdGFydFRv
a2VuID0gbG9va2FoZWFkOworICAgICAgICB2YXIgcHJvcGVydGllcyA9IFtdLCB0b2tlbiwgcHJv
cGVydHksIG5hbWUsIGtleSwga2luZCwgbWFwID0ge30sIHRvU3RyaW5nID0gU3RyaW5nLCBub2Rl
ID0gbmV3IE5vZGUoKTsKIAogICAgICAgICBleHBlY3QoJ3snKTsKIApAQCAtMjA5OCwxMyArMjI1
MywxMyBAQCBXZWJJbnNwZWN0b3IuRXNwcmltYSA9IHt9OwogICAgICAgICAgICAgcHJvcGVydGll
cy5wdXNoKHByb3BlcnR5KTsKIAogICAgICAgICAgICAgaWYgKCFtYXRjaCgnfScpKSB7Ci0gICAg
ICAgICAgICAgICAgZXhwZWN0KCcsJyk7CisgICAgICAgICAgICAgICAgZXhwZWN0VG9sZXJhbnQo
JywnKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGV4cGVjdCgnfScpOwog
Ci0gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZU9iamVjdEV4
cHJlc3Npb24ocHJvcGVydGllcyksIHN0YXJ0VG9rZW4pOworICAgICAgICByZXR1cm4gbm9kZS5m
aW5pc2hPYmplY3RFeHByZXNzaW9uKHByb3BlcnRpZXMpOwogICAgIH0KIAogICAgIC8vIDExLjEu
NiBUaGUgR3JvdXBpbmcgT3BlcmF0b3IKQEAgLTIxMTQsNiArMjI2OSwxMyBAQCBXZWJJbnNwZWN0
b3IuRXNwcmltYSA9IHt9OwogCiAgICAgICAgIGV4cGVjdCgnKCcpOwogCisgICAgICAgIGlmICht
YXRjaCgnKScpKSB7CisgICAgICAgICAgICBsZXgoKTsKKyAgICAgICAgICAgIHJldHVybiBQbGFj
ZUhvbGRlcnMuQXJyb3dQYXJhbWV0ZXJQbGFjZUhvbGRlcjsKKyAgICAgICAgfQorCisgICAgICAg
ICsrc3RhdGUucGFyZW50aGVzaXNDb3VudDsKKwogICAgICAgICBleHByID0gcGFyc2VFeHByZXNz
aW9uKCk7CiAKICAgICAgICAgZXhwZWN0KCcpJyk7CkBAIC0yMTI1LDcgKzIyODcsNyBAQCBXZWJJ
bnNwZWN0b3IuRXNwcmltYSA9IHt9OwogICAgIC8vIDExLjEgUHJpbWFyeSBFeHByZXNzaW9ucwog
CiAgICAgZnVuY3Rpb24gcGFyc2VQcmltYXJ5RXhwcmVzc2lvbigpIHsKLSAgICAgICAgdmFyIHR5
cGUsIHRva2VuLCBleHByLCBzdGFydFRva2VuOworICAgICAgICB2YXIgdHlwZSwgdG9rZW4sIGV4
cHIsIG5vZGU7CiAKICAgICAgICAgaWYgKG1hdGNoKCcoJykpIHsKICAgICAgICAgICAgIHJldHVy
biBwYXJzZUdyb3VwRXhwcmVzc2lvbigpOwpAQCAtMjE0MCw0NSArMjMwMiw0NSBAQCBXZWJJbnNw
ZWN0b3IuRXNwcmltYSA9IHt9OwogICAgICAgICB9CiAKICAgICAgICAgdHlwZSA9IGxvb2thaGVh
ZC50eXBlOwotICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkOworICAgICAgICBub2RlID0g
bmV3IE5vZGUoKTsKIAogICAgICAgICBpZiAodHlwZSA9PT0gVG9rZW4uSWRlbnRpZmllcikgewot
ICAgICAgICAgICAgZXhwciA9ICBkZWxlZ2F0ZS5jcmVhdGVJZGVudGlmaWVyKGxleCgpLnZhbHVl
KTsKKyAgICAgICAgICAgIGV4cHIgPSAgbm9kZS5maW5pc2hJZGVudGlmaWVyKGxleCgpLnZhbHVl
KTsKICAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBUb2tlbi5TdHJpbmdMaXRlcmFsIHx8IHR5
cGUgPT09IFRva2VuLk51bWVyaWNMaXRlcmFsKSB7CiAgICAgICAgICAgICBpZiAoc3RyaWN0ICYm
IGxvb2thaGVhZC5vY3RhbCkgewogICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudChs
b29rYWhlYWQsIE1lc3NhZ2VzLlN0cmljdE9jdGFsTGl0ZXJhbCk7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlTGl0ZXJhbChsZXgoKSk7CisgICAgICAg
ICAgICBleHByID0gbm9kZS5maW5pc2hMaXRlcmFsKGxleCgpKTsKICAgICAgICAgfSBlbHNlIGlm
ICh0eXBlID09PSBUb2tlbi5LZXl3b3JkKSB7CiAgICAgICAgICAgICBpZiAobWF0Y2hLZXl3b3Jk
KCdmdW5jdGlvbicpKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25FeHBy
ZXNzaW9uKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobWF0Y2hLZXl3b3JkKCd0
aGlzJykpIHsKICAgICAgICAgICAgICAgICBsZXgoKTsKLSAgICAgICAgICAgICAgICBleHByID0g
ZGVsZWdhdGUuY3JlYXRlVGhpc0V4cHJlc3Npb24oKTsKKyAgICAgICAgICAgICAgICBleHByID0g
bm9kZS5maW5pc2hUaGlzRXhwcmVzc2lvbigpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgICB0aHJvd1VuZXhwZWN0ZWQobGV4KCkpOwogICAgICAgICAgICAgfQogICAgICAg
ICB9IGVsc2UgaWYgKHR5cGUgPT09IFRva2VuLkJvb2xlYW5MaXRlcmFsKSB7CiAgICAgICAgICAg
ICB0b2tlbiA9IGxleCgpOwogICAgICAgICAgICAgdG9rZW4udmFsdWUgPSAodG9rZW4udmFsdWUg
PT09ICd0cnVlJyk7Ci0gICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlTGl0ZXJhbCh0
b2tlbik7CisgICAgICAgICAgICBleHByID0gbm9kZS5maW5pc2hMaXRlcmFsKHRva2VuKTsKICAg
ICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBUb2tlbi5OdWxsTGl0ZXJhbCkgewogICAgICAgICAg
ICAgdG9rZW4gPSBsZXgoKTsKICAgICAgICAgICAgIHRva2VuLnZhbHVlID0gbnVsbDsKLSAgICAg
ICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVMaXRlcmFsKHRva2VuKTsKKyAgICAgICAgICAg
IGV4cHIgPSBub2RlLmZpbmlzaExpdGVyYWwodG9rZW4pOwogICAgICAgICB9IGVsc2UgaWYgKG1h
dGNoKCcvJykgfHwgbWF0Y2goJy89JykpIHsKICAgICAgICAgICAgIGlmICh0eXBlb2YgZXh0cmEu
dG9rZW5zICE9PSAndW5kZWZpbmVkJykgewotICAgICAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0
ZS5jcmVhdGVMaXRlcmFsKGNvbGxlY3RSZWdleCgpKTsKKyAgICAgICAgICAgICAgICBleHByID0g
bm9kZS5maW5pc2hMaXRlcmFsKGNvbGxlY3RSZWdleCgpKTsKICAgICAgICAgICAgIH0gZWxzZSB7
Ci0gICAgICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZUxpdGVyYWwoc2NhblJlZ0V4
cCgpKTsKKyAgICAgICAgICAgICAgICBleHByID0gbm9kZS5maW5pc2hMaXRlcmFsKHNjYW5SZWdF
eHAoKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBwZWVrKCk7CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICB0aHJvd1VuZXhwZWN0ZWQobGV4KCkpOwogICAgICAgICB9CiAKLSAg
ICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZXhwciwgc3RhcnRUb2tlbik7CisgICAgICAg
IHJldHVybiBleHByOwogICAgIH0KIAogICAgIC8vIDExLjIgTGVmdC1IYW5kLVNpZGUgRXhwcmVz
c2lvbnMKQEAgLTIxOTQsNyArMjM1Niw3IEBAIFdlYkluc3BlY3Rvci5Fc3ByaW1hID0ge307CiAg
ICAgICAgICAgICAgICAgaWYgKG1hdGNoKCcpJykpIHsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGV4cGVjdCgnLCcpOworICAg
ICAgICAgICAgICAgIGV4cGVjdFRvbGVyYW50KCcsJyk7CiAgICAgICAgICAgICB9CiAgICAgICAg
IH0KIApAQCAtMjIwNCwxNiArMjM2NiwxNSBAQCBXZWJJbnNwZWN0b3IuRXNwcmltYSA9IHt9Owog
ICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlTm9uQ29tcHV0ZWRQcm9wZXJ0eSgpIHsKLSAgICAg
ICAgdmFyIHRva2VuLCBzdGFydFRva2VuOworICAgICAgICB2YXIgdG9rZW4sIG5vZGUgPSBuZXcg
Tm9kZSgpOwogCi0gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7CiAgICAgICAgIHRva2Vu
ID0gbGV4KCk7CiAKICAgICAgICAgaWYgKCFpc0lkZW50aWZpZXJOYW1lKHRva2VuKSkgewogICAg
ICAgICAgICAgdGhyb3dVbmV4cGVjdGVkKHRva2VuKTsKICAgICAgICAgfQogCi0gICAgICAgIHJl
dHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZUlkZW50aWZpZXIodG9rZW4udmFs
dWUpLCBzdGFydFRva2VuKTsKKyAgICAgICAgcmV0dXJuIG5vZGUuZmluaXNoSWRlbnRpZmllcih0
b2tlbi52YWx1ZSk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcGFyc2VOb25Db21wdXRlZE1lbWJl
cigpIHsKQEAgLTIyMzUsNjUgKzIzOTYsNjAgQEAgV2ViSW5zcGVjdG9yLkVzcHJpbWEgPSB7fTsK
ICAgICB9CiAKICAgICBmdW5jdGlvbiBwYXJzZU5ld0V4cHJlc3Npb24oKSB7Ci0gICAgICAgIHZh
ciBjYWxsZWUsIGFyZ3MsIHN0YXJ0VG9rZW47CisgICAgICAgIHZhciBjYWxsZWUsIGFyZ3MsIG5v
ZGUgPSBuZXcgTm9kZSgpOwogCi0gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7CiAgICAg
ICAgIGV4cGVjdEtleXdvcmQoJ25ldycpOwogICAgICAgICBjYWxsZWUgPSBwYXJzZUxlZnRIYW5k
U2lkZUV4cHJlc3Npb24oKTsKICAgICAgICAgYXJncyA9IG1hdGNoKCcoJykgPyBwYXJzZUFyZ3Vt
ZW50cygpIDogW107CiAKLSAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUu
Y3JlYXRlTmV3RXhwcmVzc2lvbihjYWxsZWUsIGFyZ3MpLCBzdGFydFRva2VuKTsKKyAgICAgICAg
cmV0dXJuIG5vZGUuZmluaXNoTmV3RXhwcmVzc2lvbihjYWxsZWUsIGFyZ3MpOwogICAgIH0KIAog
ICAgIGZ1bmN0aW9uIHBhcnNlTGVmdEhhbmRTaWRlRXhwcmVzc2lvbkFsbG93Q2FsbCgpIHsKLSAg
ICAgICAgdmFyIHByZXZpb3VzQWxsb3dJbiwgZXhwciwgYXJncywgcHJvcGVydHksIHN0YXJ0VG9r
ZW47CisgICAgICAgIHZhciBleHByLCBhcmdzLCBwcm9wZXJ0eSwgc3RhcnRUb2tlbiwgcHJldmlv
dXNBbGxvd0luID0gc3RhdGUuYWxsb3dJbjsKIAogICAgICAgICBzdGFydFRva2VuID0gbG9va2Fo
ZWFkOwotCi0gICAgICAgIHByZXZpb3VzQWxsb3dJbiA9IHN0YXRlLmFsbG93SW47CiAgICAgICAg
IHN0YXRlLmFsbG93SW4gPSB0cnVlOwogICAgICAgICBleHByID0gbWF0Y2hLZXl3b3JkKCduZXcn
KSA/IHBhcnNlTmV3RXhwcmVzc2lvbigpIDogcGFyc2VQcmltYXJ5RXhwcmVzc2lvbigpOwotICAg
ICAgICBzdGF0ZS5hbGxvd0luID0gcHJldmlvdXNBbGxvd0luOwogCiAgICAgICAgIGZvciAoOzsp
IHsKICAgICAgICAgICAgIGlmIChtYXRjaCgnLicpKSB7CiAgICAgICAgICAgICAgICAgcHJvcGVy
dHkgPSBwYXJzZU5vbkNvbXB1dGVkTWVtYmVyKCk7Ci0gICAgICAgICAgICAgICAgZXhwciA9IGRl
bGVnYXRlLmNyZWF0ZU1lbWJlckV4cHJlc3Npb24oJy4nLCBleHByLCBwcm9wZXJ0eSk7CisgICAg
ICAgICAgICAgICAgZXhwciA9IG5ldyBXcmFwcGluZ05vZGUoc3RhcnRUb2tlbikuZmluaXNoTWVt
YmVyRXhwcmVzc2lvbignLicsIGV4cHIsIHByb3BlcnR5KTsKICAgICAgICAgICAgIH0gZWxzZSBp
ZiAobWF0Y2goJygnKSkgewogICAgICAgICAgICAgICAgIGFyZ3MgPSBwYXJzZUFyZ3VtZW50cygp
OwotICAgICAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVDYWxsRXhwcmVzc2lvbihl
eHByLCBhcmdzKTsKKyAgICAgICAgICAgICAgICBleHByID0gbmV3IFdyYXBwaW5nTm9kZShzdGFy
dFRva2VuKS5maW5pc2hDYWxsRXhwcmVzc2lvbihleHByLCBhcmdzKTsKICAgICAgICAgICAgIH0g
ZWxzZSBpZiAobWF0Y2goJ1snKSkgewogICAgICAgICAgICAgICAgIHByb3BlcnR5ID0gcGFyc2VD
b21wdXRlZE1lbWJlcigpOwotICAgICAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVN
ZW1iZXJFeHByZXNzaW9uKCdbJywgZXhwciwgcHJvcGVydHkpOworICAgICAgICAgICAgICAgIGV4
cHIgPSBuZXcgV3JhcHBpbmdOb2RlKHN0YXJ0VG9rZW4pLmZpbmlzaE1lbWJlckV4cHJlc3Npb24o
J1snLCBleHByLCBwcm9wZXJ0eSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZGVsZWdhdGUubWFya0VuZChl
eHByLCBzdGFydFRva2VuKTsKICAgICAgICAgfQorICAgICAgICBzdGF0ZS5hbGxvd0luID0gcHJl
dmlvdXNBbGxvd0luOwogCiAgICAgICAgIHJldHVybiBleHByOwogICAgIH0KIAogICAgIGZ1bmN0
aW9uIHBhcnNlTGVmdEhhbmRTaWRlRXhwcmVzc2lvbigpIHsKLSAgICAgICAgdmFyIHByZXZpb3Vz
QWxsb3dJbiwgZXhwciwgcHJvcGVydHksIHN0YXJ0VG9rZW47CisgICAgICAgIHZhciBleHByLCBw
cm9wZXJ0eSwgc3RhcnRUb2tlbjsKKyAgICAgICAgYXNzZXJ0KHN0YXRlLmFsbG93SW4sICdjYWxs
ZWUgb2YgbmV3IGV4cHJlc3Npb24gYWx3YXlzIGFsbG93IGluIGtleXdvcmQuJyk7CiAKICAgICAg
ICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDsKIAotICAgICAgICBwcmV2aW91c0FsbG93SW4gPSBz
dGF0ZS5hbGxvd0luOwogICAgICAgICBleHByID0gbWF0Y2hLZXl3b3JkKCduZXcnKSA/IHBhcnNl
TmV3RXhwcmVzc2lvbigpIDogcGFyc2VQcmltYXJ5RXhwcmVzc2lvbigpOwotICAgICAgICBzdGF0
ZS5hbGxvd0luID0gcHJldmlvdXNBbGxvd0luOwogCi0gICAgICAgIHdoaWxlIChtYXRjaCgnLicp
IHx8IG1hdGNoKCdbJykpIHsKKyAgICAgICAgZm9yICg7OykgewogICAgICAgICAgICAgaWYgKG1h
dGNoKCdbJykpIHsKICAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9IHBhcnNlQ29tcHV0ZWRNZW1i
ZXIoKTsKLSAgICAgICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlTWVtYmVyRXhwcmVz
c2lvbignWycsIGV4cHIsIHByb3BlcnR5KTsKLSAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICAgICAgZXhwciA9IG5ldyBXcmFwcGluZ05vZGUoc3RhcnRUb2tlbikuZmluaXNoTWVtYmVy
RXhwcmVzc2lvbignWycsIGV4cHIsIHByb3BlcnR5KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAo
bWF0Y2goJy4nKSkgewogICAgICAgICAgICAgICAgIHByb3BlcnR5ID0gcGFyc2VOb25Db21wdXRl
ZE1lbWJlcigpOwotICAgICAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVNZW1iZXJF
eHByZXNzaW9uKCcuJywgZXhwciwgcHJvcGVydHkpOworICAgICAgICAgICAgICAgIGV4cHIgPSBu
ZXcgV3JhcHBpbmdOb2RlKHN0YXJ0VG9rZW4pLmZpbmlzaE1lbWJlckV4cHJlc3Npb24oJy4nLCBl
eHByLCBwcm9wZXJ0eSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZGVsZWdhdGUubWFya0VuZChleHByLCBz
dGFydFRva2VuKTsKICAgICAgICAgfQotCiAgICAgICAgIHJldHVybiBleHByOwogICAgIH0KIApA
QCAtMjMxNiw3ICsyNDcyLDcgQEAgV2ViSW5zcGVjdG9yLkVzcHJpbWEgPSB7fTsKICAgICAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgICAgICB0b2tlbiA9IGxleCgpOwotICAgICAgICAgICAg
ICAgIGV4cHIgPSBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVBvc3RmaXhFeHByZXNz
aW9uKHRva2VuLnZhbHVlLCBleHByKSwgc3RhcnRUb2tlbik7CisgICAgICAgICAgICAgICAgZXhw
ciA9IG5ldyBXcmFwcGluZ05vZGUoc3RhcnRUb2tlbikuZmluaXNoUG9zdGZpeEV4cHJlc3Npb24o
dG9rZW4udmFsdWUsIGV4cHIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTIzNDMs
MjAgKzI0OTksMTcgQEAgV2ViSW5zcGVjdG9yLkVzcHJpbWEgPSB7fTsKICAgICAgICAgICAgICAg
ICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLkludmFsaWRMSFNJbkFzc2lnbm1lbnQp
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlVW5h
cnlFeHByZXNzaW9uKHRva2VuLnZhbHVlLCBleHByKTsKLSAgICAgICAgICAgIGV4cHIgPSBkZWxl
Z2F0ZS5tYXJrRW5kKGV4cHIsIHN0YXJ0VG9rZW4pOworICAgICAgICAgICAgZXhwciA9IG5ldyBX
cmFwcGluZ05vZGUoc3RhcnRUb2tlbikuZmluaXNoVW5hcnlFeHByZXNzaW9uKHRva2VuLnZhbHVl
LCBleHByKTsKICAgICAgICAgfSBlbHNlIGlmIChtYXRjaCgnKycpIHx8IG1hdGNoKCctJykgfHwg
bWF0Y2goJ34nKSB8fCBtYXRjaCgnIScpKSB7CiAgICAgICAgICAgICBzdGFydFRva2VuID0gbG9v
a2FoZWFkOwogICAgICAgICAgICAgdG9rZW4gPSBsZXgoKTsKICAgICAgICAgICAgIGV4cHIgPSBw
YXJzZVVuYXJ5RXhwcmVzc2lvbigpOwotICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0
ZVVuYXJ5RXhwcmVzc2lvbih0b2tlbi52YWx1ZSwgZXhwcik7Ci0gICAgICAgICAgICBleHByID0g
ZGVsZWdhdGUubWFya0VuZChleHByLCBzdGFydFRva2VuKTsKKyAgICAgICAgICAgIGV4cHIgPSBu
ZXcgV3JhcHBpbmdOb2RlKHN0YXJ0VG9rZW4pLmZpbmlzaFVuYXJ5RXhwcmVzc2lvbih0b2tlbi52
YWx1ZSwgZXhwcik7CiAgICAgICAgIH0gZWxzZSBpZiAobWF0Y2hLZXl3b3JkKCdkZWxldGUnKSB8
fCBtYXRjaEtleXdvcmQoJ3ZvaWQnKSB8fCBtYXRjaEtleXdvcmQoJ3R5cGVvZicpKSB7CiAgICAg
ICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkOwogICAgICAgICAgICAgdG9rZW4gPSBsZXgo
KTsKICAgICAgICAgICAgIGV4cHIgPSBwYXJzZVVuYXJ5RXhwcmVzc2lvbigpOwotICAgICAgICAg
ICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZVVuYXJ5RXhwcmVzc2lvbih0b2tlbi52YWx1ZSwgZXhw
cik7Ci0gICAgICAgICAgICBleHByID0gZGVsZWdhdGUubWFya0VuZChleHByLCBzdGFydFRva2Vu
KTsKKyAgICAgICAgICAgIGV4cHIgPSBuZXcgV3JhcHBpbmdOb2RlKHN0YXJ0VG9rZW4pLmZpbmlz
aFVuYXJ5RXhwcmVzc2lvbih0b2tlbi52YWx1ZSwgZXhwcik7CiAgICAgICAgICAgICBpZiAoc3Ry
aWN0ICYmIGV4cHIub3BlcmF0b3IgPT09ICdkZWxldGUnICYmIGV4cHIuYXJndW1lbnQudHlwZSA9
PT0gU3ludGF4LklkZW50aWZpZXIpIHsKICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJh
bnQoe30sIE1lc3NhZ2VzLlN0cmljdERlbGV0ZSk7CiAgICAgICAgICAgICB9CkBAIC0yMzc1LDY0
ICsyNTI4LDY0IEBAIFdlYkluc3BlY3Rvci5Fc3ByaW1hID0ge307CiAgICAgICAgIH0KIAogICAg
ICAgICBzd2l0Y2ggKHRva2VuLnZhbHVlKSB7Ci0gICAgICAgIGNhc2UgJ3x8JzoKLSAgICAgICAg
ICAgIHByZWMgPSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSAnJiYnOgot
ICAgICAgICAgICAgcHJlYyA9IDI7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNl
ICd8JzoKLSAgICAgICAgICAgIHByZWMgPSAzOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAg
ICAgY2FzZSAnXic6Ci0gICAgICAgICAgICBwcmVjID0gNDsKLSAgICAgICAgICAgIGJyZWFrOwot
Ci0gICAgICAgIGNhc2UgJyYnOgotICAgICAgICAgICAgcHJlYyA9IDU7Ci0gICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICBjYXNlICc9PSc6Ci0gICAgICAgIGNhc2UgJyE9JzoKLSAgICAgICAg
Y2FzZSAnPT09JzoKLSAgICAgICAgY2FzZSAnIT09JzoKLSAgICAgICAgICAgIHByZWMgPSA2Owot
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSAnPCc6Ci0gICAgICAgIGNhc2UgJz4n
OgotICAgICAgICBjYXNlICc8PSc6Ci0gICAgICAgIGNhc2UgJz49JzoKLSAgICAgICAgY2FzZSAn
aW5zdGFuY2VvZic6Ci0gICAgICAgICAgICBwcmVjID0gNzsKLSAgICAgICAgICAgIGJyZWFrOwot
Ci0gICAgICAgIGNhc2UgJ2luJzoKLSAgICAgICAgICAgIHByZWMgPSBhbGxvd0luID8gNyA6IDA7
Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlICc8PCc6Ci0gICAgICAgIGNhc2Ug
Jz4+JzoKLSAgICAgICAgY2FzZSAnPj4+JzoKLSAgICAgICAgICAgIHByZWMgPSA4OwotICAgICAg
ICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSAnKyc6Ci0gICAgICAgIGNhc2UgJy0nOgotICAg
ICAgICAgICAgcHJlYyA9IDk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlICcq
JzoKLSAgICAgICAgY2FzZSAnLyc6Ci0gICAgICAgIGNhc2UgJyUnOgotICAgICAgICAgICAgcHJl
YyA9IDExOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSAnfHwnOgorICAgICAgICAgICAgICAgIHByZWMg
PSAxOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlICcmJic6Cisg
ICAgICAgICAgICAgICAgcHJlYyA9IDI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgIGNhc2UgJ3wnOgorICAgICAgICAgICAgICAgIHByZWMgPSAzOworICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlICdeJzoKKyAgICAgICAgICAgICAgICBwcmVj
ID0gNDsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSAnJic6Cisg
ICAgICAgICAgICAgICAgcHJlYyA9IDU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAg
ICAgICAgIGNhc2UgJz09JzoKKyAgICAgICAgICAgIGNhc2UgJyE9JzoKKyAgICAgICAgICAgIGNh
c2UgJz09PSc6CisgICAgICAgICAgICBjYXNlICchPT0nOgorICAgICAgICAgICAgICAgIHByZWMg
PSA2OworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlICc8JzoKKyAg
ICAgICAgICAgIGNhc2UgJz4nOgorICAgICAgICAgICAgY2FzZSAnPD0nOgorICAgICAgICAgICAg
Y2FzZSAnPj0nOgorICAgICAgICAgICAgY2FzZSAnaW5zdGFuY2VvZic6CisgICAgICAgICAgICAg
ICAgcHJlYyA9IDc7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2Ug
J2luJzoKKyAgICAgICAgICAgICAgICBwcmVjID0gYWxsb3dJbiA/IDcgOiAwOworICAgICAgICAg
ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlICc8PCc6CisgICAgICAgICAgICBjYXNl
ICc+Pic6CisgICAgICAgICAgICBjYXNlICc+Pj4nOgorICAgICAgICAgICAgICAgIHByZWMgPSA4
OworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlICcrJzoKKyAgICAg
ICAgICAgIGNhc2UgJy0nOgorICAgICAgICAgICAgICAgIHByZWMgPSA5OworICAgICAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlICcqJzoKKyAgICAgICAgICAgIGNhc2UgJy8n
OgorICAgICAgICAgICAgY2FzZSAnJSc6CisgICAgICAgICAgICAgICAgcHJlYyA9IDExOworICAg
ICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICB9CiAKICAgICAgICAgcmV0dXJuIHByZWM7CkBAIC0yNDUxLDYg
KzI2MDQsOSBAQCBXZWJJbnNwZWN0b3IuRXNwcmltYSA9IHt9OwogCiAgICAgICAgIG1hcmtlciA9
IGxvb2thaGVhZDsKICAgICAgICAgbGVmdCA9IHBhcnNlVW5hcnlFeHByZXNzaW9uKCk7CisgICAg
ICAgIGlmIChsZWZ0ID09PSBQbGFjZUhvbGRlcnMuQXJyb3dQYXJhbWV0ZXJQbGFjZUhvbGRlcikg
eworICAgICAgICAgICAgcmV0dXJuIGxlZnQ7CisgICAgICAgIH0KIAogICAgICAgICB0b2tlbiA9
IGxvb2thaGVhZDsKICAgICAgICAgcHJlYyA9IGJpbmFyeVByZWNlZGVuY2UodG9rZW4sIHN0YXRl
LmFsbG93SW4pOwpAQCAtMjQ3MiwxMCArMjYyOCw4IEBAIFdlYkluc3BlY3Rvci5Fc3ByaW1hID0g
e307CiAgICAgICAgICAgICAgICAgcmlnaHQgPSBzdGFjay5wb3AoKTsKICAgICAgICAgICAgICAg
ICBvcGVyYXRvciA9IHN0YWNrLnBvcCgpLnZhbHVlOwogICAgICAgICAgICAgICAgIGxlZnQgPSBz
dGFjay5wb3AoKTsKLSAgICAgICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlQmluYXJ5
RXhwcmVzc2lvbihvcGVyYXRvciwgbGVmdCwgcmlnaHQpOwogICAgICAgICAgICAgICAgIG1hcmtl
cnMucG9wKCk7Ci0gICAgICAgICAgICAgICAgbWFya2VyID0gbWFya2Vyc1ttYXJrZXJzLmxlbmd0
aCAtIDFdOwotICAgICAgICAgICAgICAgIGRlbGVnYXRlLm1hcmtFbmQoZXhwciwgbWFya2VyKTsK
KyAgICAgICAgICAgICAgICBleHByID0gbmV3IFdyYXBwaW5nTm9kZShtYXJrZXJzW21hcmtlcnMu
bGVuZ3RoIC0gMV0pLmZpbmlzaEJpbmFyeUV4cHJlc3Npb24ob3BlcmF0b3IsIGxlZnQsIHJpZ2h0
KTsKICAgICAgICAgICAgICAgICBzdGFjay5wdXNoKGV4cHIpOwogICAgICAgICAgICAgfQogCkBA
IC0yNDkzLDEwICsyNjQ3LDggQEAgV2ViSW5zcGVjdG9yLkVzcHJpbWEgPSB7fTsKICAgICAgICAg
ZXhwciA9IHN0YWNrW2ldOwogICAgICAgICBtYXJrZXJzLnBvcCgpOwogICAgICAgICB3aGlsZSAo
aSA+IDEpIHsKLSAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVCaW5hcnlFeHByZXNz
aW9uKHN0YWNrW2kgLSAxXS52YWx1ZSwgc3RhY2tbaSAtIDJdLCBleHByKTsKKyAgICAgICAgICAg
IGV4cHIgPSBuZXcgV3JhcHBpbmdOb2RlKG1hcmtlcnMucG9wKCkpLmZpbmlzaEJpbmFyeUV4cHJl
c3Npb24oc3RhY2tbaSAtIDFdLnZhbHVlLCBzdGFja1tpIC0gMl0sIGV4cHIpOwogICAgICAgICAg
ICAgaSAtPSAyOwotICAgICAgICAgICAgbWFya2VyID0gbWFya2Vycy5wb3AoKTsKLSAgICAgICAg
ICAgIGRlbGVnYXRlLm1hcmtFbmQoZXhwciwgbWFya2VyKTsKICAgICAgICAgfQogCiAgICAgICAg
IHJldHVybiBleHByOwpAQCAtMjUxMSw3ICsyNjYzLDkgQEAgV2ViSW5zcGVjdG9yLkVzcHJpbWEg
PSB7fTsKICAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDsKIAogICAgICAgICBleHByID0g
cGFyc2VCaW5hcnlFeHByZXNzaW9uKCk7Ci0KKyAgICAgICAgaWYgKGV4cHIgPT09IFBsYWNlSG9s
ZGVycy5BcnJvd1BhcmFtZXRlclBsYWNlSG9sZGVyKSB7CisgICAgICAgICAgICByZXR1cm4gZXhw
cjsKKyAgICAgICAgfQogICAgICAgICBpZiAobWF0Y2goJz8nKSkgewogICAgICAgICAgICAgbGV4
KCk7CiAgICAgICAgICAgICBwcmV2aW91c0FsbG93SW4gPSBzdGF0ZS5hbGxvd0luOwpAQCAtMjUy
MSw2MSArMjY3NSwxNTcgQEAgV2ViSW5zcGVjdG9yLkVzcHJpbWEgPSB7fTsKICAgICAgICAgICAg
IGV4cGVjdCgnOicpOwogICAgICAgICAgICAgYWx0ZXJuYXRlID0gcGFyc2VBc3NpZ25tZW50RXhw
cmVzc2lvbigpOwogCi0gICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlQ29uZGl0aW9u
YWxFeHByZXNzaW9uKGV4cHIsIGNvbnNlcXVlbnQsIGFsdGVybmF0ZSk7Ci0gICAgICAgICAgICBk
ZWxlZ2F0ZS5tYXJrRW5kKGV4cHIsIHN0YXJ0VG9rZW4pOworICAgICAgICAgICAgZXhwciA9IG5l
dyBXcmFwcGluZ05vZGUoc3RhcnRUb2tlbikuZmluaXNoQ29uZGl0aW9uYWxFeHByZXNzaW9uKGV4
cHIsIGNvbnNlcXVlbnQsIGFsdGVybmF0ZSk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4g
ZXhwcjsKICAgICB9CiAKKyAgICAvLyBbRVM2XSAxNC4yIEFycm93IEZ1bmN0aW9uCisKKyAgICBm
dW5jdGlvbiBwYXJzZUNvbmNpc2VCb2R5KCkgeworICAgICAgICBpZiAobWF0Y2goJ3snKSkgewor
ICAgICAgICAgICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25Tb3VyY2VFbGVtZW50cygpOworICAgICAg
ICB9CisgICAgICAgIHJldHVybiBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCk7CisgICAgfQor
CisgICAgZnVuY3Rpb24gcmVpbnRlcnByZXRBc0NvdmVyRm9ybWFsc0xpc3QoZXhwcmVzc2lvbnMp
IHsKKyAgICAgICAgdmFyIGksIGxlbiwgcGFyYW0sIHBhcmFtcywgZGVmYXVsdHMsIGRlZmF1bHRD
b3VudCwgb3B0aW9ucywgcmVzdDsKKworICAgICAgICBwYXJhbXMgPSBbXTsKKyAgICAgICAgZGVm
YXVsdHMgPSBbXTsKKyAgICAgICAgZGVmYXVsdENvdW50ID0gMDsKKyAgICAgICAgcmVzdCA9IG51
bGw7CisgICAgICAgIG9wdGlvbnMgPSB7CisgICAgICAgICAgICBwYXJhbVNldDoge30KKyAgICAg
ICAgfTsKKworICAgICAgICBmb3IgKGkgPSAwLCBsZW4gPSBleHByZXNzaW9ucy5sZW5ndGg7IGkg
PCBsZW47IGkgKz0gMSkgeworICAgICAgICAgICAgcGFyYW0gPSBleHByZXNzaW9uc1tpXTsKKyAg
ICAgICAgICAgIGlmIChwYXJhbS50eXBlID09PSBTeW50YXguSWRlbnRpZmllcikgeworICAgICAg
ICAgICAgICAgIHBhcmFtcy5wdXNoKHBhcmFtKTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0cy5w
dXNoKG51bGwpOworICAgICAgICAgICAgICAgIHZhbGlkYXRlUGFyYW0ob3B0aW9ucywgcGFyYW0s
IHBhcmFtLm5hbWUpOworICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbS50eXBlID09PSBTeW50
YXguQXNzaWdubWVudEV4cHJlc3Npb24pIHsKKyAgICAgICAgICAgICAgICBwYXJhbXMucHVzaChw
YXJhbS5sZWZ0KTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0cy5wdXNoKHBhcmFtLnJpZ2h0KTsK
KyAgICAgICAgICAgICAgICArK2RlZmF1bHRDb3VudDsKKyAgICAgICAgICAgICAgICB2YWxpZGF0
ZVBhcmFtKG9wdGlvbnMsIHBhcmFtLmxlZnQsIHBhcmFtLmxlZnQubmFtZSk7CisgICAgICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisKKyAgICAgICAgaWYgKG9wdGlvbnMubWVzc2FnZSA9PT0gTWVzc2FnZXMuU3Ry
aWN0UGFyYW1EdXBlKSB7CisgICAgICAgICAgICB0aHJvd0Vycm9yKAorICAgICAgICAgICAgICAg
IHN0cmljdCA/IG9wdGlvbnMuc3RyaWN0ZWQgOiBvcHRpb25zLmZpcnN0UmVzdHJpY3RlZCwKKyAg
ICAgICAgICAgICAgICBvcHRpb25zLm1lc3NhZ2UKKyAgICAgICAgICAgICk7CisgICAgICAgIH0K
KworICAgICAgICBpZiAoZGVmYXVsdENvdW50ID09PSAwKSB7CisgICAgICAgICAgICBkZWZhdWx0
cyA9IFtdOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIHBhcmFt
czogcGFyYW1zLAorICAgICAgICAgICAgZGVmYXVsdHM6IGRlZmF1bHRzLAorICAgICAgICAgICAg
cmVzdDogcmVzdCwKKyAgICAgICAgICAgIHN0cmljdGVkOiBvcHRpb25zLnN0cmljdGVkLAorICAg
ICAgICAgICAgZmlyc3RSZXN0cmljdGVkOiBvcHRpb25zLmZpcnN0UmVzdHJpY3RlZCwKKyAgICAg
ICAgICAgIG1lc3NhZ2U6IG9wdGlvbnMubWVzc2FnZQorICAgICAgICB9OworICAgIH0KKworICAg
IGZ1bmN0aW9uIHBhcnNlQXJyb3dGdW5jdGlvbkV4cHJlc3Npb24ob3B0aW9ucywgbm9kZSkgewor
ICAgICAgICB2YXIgcHJldmlvdXNTdHJpY3QsIGJvZHk7CisKKyAgICAgICAgZXhwZWN0KCc9Picp
OworICAgICAgICBwcmV2aW91c1N0cmljdCA9IHN0cmljdDsKKworICAgICAgICBib2R5ID0gcGFy
c2VDb25jaXNlQm9keSgpOworCisgICAgICAgIGlmIChzdHJpY3QgJiYgb3B0aW9ucy5maXJzdFJl
c3RyaWN0ZWQpIHsKKyAgICAgICAgICAgIHRocm93RXJyb3Iob3B0aW9ucy5maXJzdFJlc3RyaWN0
ZWQsIG9wdGlvbnMubWVzc2FnZSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHN0cmljdCAmJiBv
cHRpb25zLnN0cmljdGVkKSB7CisgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQob3B0aW9u
cy5zdHJpY3RlZCwgb3B0aW9ucy5tZXNzYWdlKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0cmlj
dCA9IHByZXZpb3VzU3RyaWN0OworCisgICAgICAgIHJldHVybiBub2RlLmZpbmlzaEFycm93RnVu
Y3Rpb25FeHByZXNzaW9uKG9wdGlvbnMucGFyYW1zLCBvcHRpb25zLmRlZmF1bHRzLCBib2R5LCBi
b2R5LnR5cGUgIT09IFN5bnRheC5CbG9ja1N0YXRlbWVudCk7CisgICAgfQorCiAgICAgLy8gMTEu
MTMgQXNzaWdubWVudCBPcGVyYXRvcnMKIAogICAgIGZ1bmN0aW9uIHBhcnNlQXNzaWdubWVudEV4
cHJlc3Npb24oKSB7Ci0gICAgICAgIHZhciB0b2tlbiwgbGVmdCwgcmlnaHQsIG5vZGUsIHN0YXJ0
VG9rZW47CisgICAgICAgIHZhciBvbGRQYXJlbnRoZXNpc0NvdW50LCB0b2tlbiwgZXhwciwgcmln
aHQsIGxpc3QsIHN0YXJ0VG9rZW47CisKKyAgICAgICAgb2xkUGFyZW50aGVzaXNDb3VudCA9IHN0
YXRlLnBhcmVudGhlc2lzQ291bnQ7CiAKLSAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7CiAgICAg
ICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7CisgICAgICAgIHRva2VuID0gbG9va2FoZWFkOwog
Ci0gICAgICAgIG5vZGUgPSBsZWZ0ID0gcGFyc2VDb25kaXRpb25hbEV4cHJlc3Npb24oKTsKKyAg
ICAgICAgZXhwciA9IHBhcnNlQ29uZGl0aW9uYWxFeHByZXNzaW9uKCk7CisKKyAgICAgICAgaWYg
KGV4cHIgPT09IFBsYWNlSG9sZGVycy5BcnJvd1BhcmFtZXRlclBsYWNlSG9sZGVyIHx8IG1hdGNo
KCc9PicpKSB7CisgICAgICAgICAgICBpZiAoc3RhdGUucGFyZW50aGVzaXNDb3VudCA9PT0gb2xk
UGFyZW50aGVzaXNDb3VudCB8fAorICAgICAgICAgICAgICAgIHN0YXRlLnBhcmVudGhlc2lzQ291
bnQgPT09IChvbGRQYXJlbnRoZXNpc0NvdW50ICsgMSkpIHsKKyAgICAgICAgICAgICAgICBpZiAo
ZXhwci50eXBlID09PSBTeW50YXguSWRlbnRpZmllcikgeworICAgICAgICAgICAgICAgICAgICBs
aXN0ID0gcmVpbnRlcnByZXRBc0NvdmVyRm9ybWFsc0xpc3QoWyBleHByIF0pOworICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoZXhwci50eXBlID09PSBTeW50YXguQXNzaWdubWVudEV4cHJlc3Np
b24pIHsKKyAgICAgICAgICAgICAgICAgICAgbGlzdCA9IHJlaW50ZXJwcmV0QXNDb3ZlckZvcm1h
bHNMaXN0KFsgZXhwciBdKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV4cHIudHlwZSA9
PT0gU3ludGF4LlNlcXVlbmNlRXhwcmVzc2lvbikgeworICAgICAgICAgICAgICAgICAgICBsaXN0
ID0gcmVpbnRlcnByZXRBc0NvdmVyRm9ybWFsc0xpc3QoZXhwci5leHByZXNzaW9ucyk7CisgICAg
ICAgICAgICAgICAgfSBlbHNlIGlmIChleHByID09PSBQbGFjZUhvbGRlcnMuQXJyb3dQYXJhbWV0
ZXJQbGFjZUhvbGRlcikgeworICAgICAgICAgICAgICAgICAgICBsaXN0ID0gcmVpbnRlcnByZXRB
c0NvdmVyRm9ybWFsc0xpc3QoW10pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICBpZiAobGlzdCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VBcnJvd0Z1bmN0
aW9uRXhwcmVzc2lvbihsaXN0LCBuZXcgV3JhcHBpbmdOb2RlKHN0YXJ0VG9rZW4pKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KIAogICAgICAgICBpZiAobWF0
Y2hBc3NpZ24oKSkgewogICAgICAgICAgICAgLy8gTGVmdEhhbmRTaWRlRXhwcmVzc2lvbgotICAg
ICAgICAgICAgaWYgKCFpc0xlZnRIYW5kU2lkZShsZWZ0KSkgeworICAgICAgICAgICAgaWYgKCFp
c0xlZnRIYW5kU2lkZShleHByKSkgewogICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFu
dCh7fSwgTWVzc2FnZXMuSW52YWxpZExIU0luQXNzaWdubWVudCk7CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIC8vIDExLjEzLjEKLSAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgbGVmdC50
eXBlID09PSBTeW50YXguSWRlbnRpZmllciAmJiBpc1Jlc3RyaWN0ZWRXb3JkKGxlZnQubmFtZSkp
IHsKKyAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgZXhwci50eXBlID09PSBTeW50YXguSWRlbnRp
ZmllciAmJiBpc1Jlc3RyaWN0ZWRXb3JkKGV4cHIubmFtZSkpIHsKICAgICAgICAgICAgICAgICB0
aHJvd0Vycm9yVG9sZXJhbnQodG9rZW4sIE1lc3NhZ2VzLlN0cmljdExIU0Fzc2lnbm1lbnQpOwog
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB0b2tlbiA9IGxleCgpOwogICAgICAgICAgICAg
cmlnaHQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCk7Ci0gICAgICAgICAgICBub2RlID0g
ZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVBc3NpZ25tZW50RXhwcmVzc2lvbih0b2tl
bi52YWx1ZSwgbGVmdCwgcmlnaHQpLCBzdGFydFRva2VuKTsKKyAgICAgICAgICAgIGV4cHIgPSBu
ZXcgV3JhcHBpbmdOb2RlKHN0YXJ0VG9rZW4pLmZpbmlzaEFzc2lnbm1lbnRFeHByZXNzaW9uKHRv
a2VuLnZhbHVlLCBleHByLCByaWdodCk7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gbm9k
ZTsKKyAgICAgICAgcmV0dXJuIGV4cHI7CiAgICAgfQogCiAgICAgLy8gMTEuMTQgQ29tbWEgT3Bl
cmF0b3IKIAogICAgIGZ1bmN0aW9uIHBhcnNlRXhwcmVzc2lvbigpIHsKLSAgICAgICAgdmFyIGV4
cHIsIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7CisgICAgICAgIHZhciBleHByLCBzdGFydFRva2Vu
ID0gbG9va2FoZWFkLCBleHByZXNzaW9uczsKIAogICAgICAgICBleHByID0gcGFyc2VBc3NpZ25t
ZW50RXhwcmVzc2lvbigpOwogCiAgICAgICAgIGlmIChtYXRjaCgnLCcpKSB7Ci0gICAgICAgICAg
ICBleHByID0gZGVsZWdhdGUuY3JlYXRlU2VxdWVuY2VFeHByZXNzaW9uKFsgZXhwciBdKTsKKyAg
ICAgICAgICAgIGV4cHJlc3Npb25zID0gW2V4cHJdOwogCiAgICAgICAgICAgICB3aGlsZSAoaW5k
ZXggPCBsZW5ndGgpIHsKICAgICAgICAgICAgICAgICBpZiAoIW1hdGNoKCcsJykpIHsKICAgICAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
IGxleCgpOwotICAgICAgICAgICAgICAgIGV4cHIuZXhwcmVzc2lvbnMucHVzaChwYXJzZUFzc2ln
bm1lbnRFeHByZXNzaW9uKCkpOworICAgICAgICAgICAgICAgIGV4cHJlc3Npb25zLnB1c2gocGFy
c2VBc3NpZ25tZW50RXhwcmVzc2lvbigpKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
ZGVsZWdhdGUubWFya0VuZChleHByLCBzdGFydFRva2VuKTsKKyAgICAgICAgICAgIGV4cHIgPSBu
ZXcgV3JhcHBpbmdOb2RlKHN0YXJ0VG9rZW4pLmZpbmlzaFNlcXVlbmNlRXhwcmVzc2lvbihleHBy
ZXNzaW9ucyk7CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gZXhwcjsKQEAgLTI2MDIsMzcg
KzI4NTIsMzQgQEAgV2ViSW5zcGVjdG9yLkVzcHJpbWEgPSB7fTsKICAgICB9CiAKICAgICBmdW5j
dGlvbiBwYXJzZUJsb2NrKCkgewotICAgICAgICB2YXIgYmxvY2ssIHN0YXJ0VG9rZW47CisgICAg
ICAgIHZhciBibG9jaywgbm9kZSA9IG5ldyBOb2RlKCk7CiAKLSAgICAgICAgc3RhcnRUb2tlbiA9
IGxvb2thaGVhZDsKICAgICAgICAgZXhwZWN0KCd7Jyk7CiAKICAgICAgICAgYmxvY2sgPSBwYXJz
ZVN0YXRlbWVudExpc3QoKTsKIAogICAgICAgICBleHBlY3QoJ30nKTsKIAotICAgICAgICByZXR1
cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVCbG9ja1N0YXRlbWVudChibG9jayks
IHN0YXJ0VG9rZW4pOworICAgICAgICByZXR1cm4gbm9kZS5maW5pc2hCbG9ja1N0YXRlbWVudChi
bG9jayk7CiAgICAgfQogCiAgICAgLy8gMTIuMiBWYXJpYWJsZSBTdGF0ZW1lbnQKIAogICAgIGZ1
bmN0aW9uIHBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCkgewotICAgICAgICB2YXIgdG9rZW4sIHN0
YXJ0VG9rZW47CisgICAgICAgIHZhciB0b2tlbiwgbm9kZSA9IG5ldyBOb2RlKCk7CiAKLSAgICAg
ICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDsKICAgICAgICAgdG9rZW4gPSBsZXgoKTsKIAogICAg
ICAgICBpZiAodG9rZW4udHlwZSAhPT0gVG9rZW4uSWRlbnRpZmllcikgewogICAgICAgICAgICAg
dGhyb3dVbmV4cGVjdGVkKHRva2VuKTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBkZWxl
Z2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZUlkZW50aWZpZXIodG9rZW4udmFsdWUpLCBzdGFy
dFRva2VuKTsKKyAgICAgICAgcmV0dXJuIG5vZGUuZmluaXNoSWRlbnRpZmllcih0b2tlbi52YWx1
ZSk7CiAgICAgfQogCiAgICAgZnVuY3Rpb24gcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKGtpbmQp
IHsKLSAgICAgICAgdmFyIGluaXQgPSBudWxsLCBpZCwgc3RhcnRUb2tlbjsKKyAgICAgICAgdmFy
IGluaXQgPSBudWxsLCBpZCwgbm9kZSA9IG5ldyBOb2RlKCk7CiAKLSAgICAgICAgc3RhcnRUb2tl
biA9IGxvb2thaGVhZDsKICAgICAgICAgaWQgPSBwYXJzZVZhcmlhYmxlSWRlbnRpZmllcigpOwog
CiAgICAgICAgIC8vIDEyLjIuMQpAQCAtMjY0OCw3ICsyODk1LDcgQEAgV2ViSW5zcGVjdG9yLkVz
cHJpbWEgPSB7fTsKICAgICAgICAgICAgIGluaXQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9u
KCk7CiAgICAgICAgIH0KIAotICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0
ZS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0b3IoaWQsIGluaXQpLCBzdGFydFRva2VuKTsKKyAgICAg
ICAgcmV0dXJuIG5vZGUuZmluaXNoVmFyaWFibGVEZWNsYXJhdG9yKGlkLCBpbml0KTsKICAgICB9
CiAKICAgICBmdW5jdGlvbiBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KGtpbmQpIHsKQEAg
LTI2NjUsNyArMjkxMiw3IEBAIFdlYkluc3BlY3Rvci5Fc3ByaW1hID0ge307CiAgICAgICAgIHJl
dHVybiBsaXN0OwogICAgIH0KIAotICAgIGZ1bmN0aW9uIHBhcnNlVmFyaWFibGVTdGF0ZW1lbnQo
KSB7CisgICAgZnVuY3Rpb24gcGFyc2VWYXJpYWJsZVN0YXRlbWVudChub2RlKSB7CiAgICAgICAg
IHZhciBkZWNsYXJhdGlvbnM7CiAKICAgICAgICAgZXhwZWN0S2V5d29yZCgndmFyJyk7CkBAIC0y
Njc0LDcgKzI5MjEsNyBAQCBXZWJJbnNwZWN0b3IuRXNwcmltYSA9IHt9OwogCiAgICAgICAgIGNv
bnN1bWVTZW1pY29sb24oKTsKIAotICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlVmFyaWFi
bGVEZWNsYXJhdGlvbihkZWNsYXJhdGlvbnMsICd2YXInKTsKKyAgICAgICAgcmV0dXJuIG5vZGUu
ZmluaXNoVmFyaWFibGVEZWNsYXJhdGlvbihkZWNsYXJhdGlvbnMsICd2YXInKTsKICAgICB9CiAK
ICAgICAvLyBraW5kIG1heSBiZSBgY29uc3RgIG9yIGBsZXRgCkBAIC0yNjgyLDkgKzI5MjksNyBA
QCBXZWJJbnNwZWN0b3IuRXNwcmltYSA9IHt9OwogICAgIC8vIHNlZSBodHRwOi8vd2lraS5lY21h
c2NyaXB0Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmNvbnN0CiAgICAgLy8gYW5kIGh0dHA6Ly93
aWtpLmVjbWFzY3JpcHQub3JnL2Rva3UucGhwP2lkPWhhcm1vbnk6bGV0CiAgICAgZnVuY3Rpb24g
cGFyc2VDb25zdExldERlY2xhcmF0aW9uKGtpbmQpIHsKLSAgICAgICAgdmFyIGRlY2xhcmF0aW9u
cywgc3RhcnRUb2tlbjsKLQotICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkOworICAgICAg
ICB2YXIgZGVjbGFyYXRpb25zLCBub2RlID0gbmV3IE5vZGUoKTsKIAogICAgICAgICBleHBlY3RL
ZXl3b3JkKGtpbmQpOwogCkBAIC0yNjkyLDI3ICsyOTM3LDI4IEBAIFdlYkluc3BlY3Rvci5Fc3By
aW1hID0ge307CiAKICAgICAgICAgY29uc3VtZVNlbWljb2xvbigpOwogCi0gICAgICAgIHJldHVy
biBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oZGVj
bGFyYXRpb25zLCBraW5kKSwgc3RhcnRUb2tlbik7CisgICAgICAgIHJldHVybiBub2RlLmZpbmlz
aFZhcmlhYmxlRGVjbGFyYXRpb24oZGVjbGFyYXRpb25zLCBraW5kKTsKICAgICB9CiAKICAgICAv
LyAxMi4zIEVtcHR5IFN0YXRlbWVudAogCiAgICAgZnVuY3Rpb24gcGFyc2VFbXB0eVN0YXRlbWVu
dCgpIHsKKyAgICAgICAgdmFyIG5vZGUgPSBuZXcgTm9kZSgpOwogICAgICAgICBleHBlY3QoJzsn
KTsKLSAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZUVtcHR5U3RhdGVtZW50KCk7CisgICAg
ICAgIHJldHVybiBub2RlLmZpbmlzaEVtcHR5U3RhdGVtZW50KCk7CiAgICAgfQogCiAgICAgLy8g
MTIuNCBFeHByZXNzaW9uIFN0YXRlbWVudAogCi0gICAgZnVuY3Rpb24gcGFyc2VFeHByZXNzaW9u
U3RhdGVtZW50KCkgeworICAgIGZ1bmN0aW9uIHBhcnNlRXhwcmVzc2lvblN0YXRlbWVudChub2Rl
KSB7CiAgICAgICAgIHZhciBleHByID0gcGFyc2VFeHByZXNzaW9uKCk7CiAgICAgICAgIGNvbnN1
bWVTZW1pY29sb24oKTsKLSAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZUV4cHJlc3Npb25T
dGF0ZW1lbnQoZXhwcik7CisgICAgICAgIHJldHVybiBub2RlLmZpbmlzaEV4cHJlc3Npb25TdGF0
ZW1lbnQoZXhwcik7CiAgICAgfQogCiAgICAgLy8gMTIuNSBJZiBzdGF0ZW1lbnQKIAotICAgIGZ1
bmN0aW9uIHBhcnNlSWZTdGF0ZW1lbnQoKSB7CisgICAgZnVuY3Rpb24gcGFyc2VJZlN0YXRlbWVu
dChub2RlKSB7CiAgICAgICAgIHZhciB0ZXN0LCBjb25zZXF1ZW50LCBhbHRlcm5hdGU7CiAKICAg
ICAgICAgZXhwZWN0S2V5d29yZCgnaWYnKTsKQEAgLTI3MzIsMTIgKzI5NzgsMTIgQEAgV2ViSW5z
cGVjdG9yLkVzcHJpbWEgPSB7fTsKICAgICAgICAgICAgIGFsdGVybmF0ZSA9IG51bGw7CiAgICAg
ICAgIH0KIAotICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlSWZTdGF0ZW1lbnQodGVzdCwg
Y29uc2VxdWVudCwgYWx0ZXJuYXRlKTsKKyAgICAgICAgcmV0dXJuIG5vZGUuZmluaXNoSWZTdGF0
ZW1lbnQodGVzdCwgY29uc2VxdWVudCwgYWx0ZXJuYXRlKTsKICAgICB9CiAKICAgICAvLyAxMi42
IEl0ZXJhdGlvbiBTdGF0ZW1lbnRzCiAKLSAgICBmdW5jdGlvbiBwYXJzZURvV2hpbGVTdGF0ZW1l
bnQoKSB7CisgICAgZnVuY3Rpb24gcGFyc2VEb1doaWxlU3RhdGVtZW50KG5vZGUpIHsKICAgICAg
ICAgdmFyIGJvZHksIHRlc3QsIG9sZEluSXRlcmF0aW9uOwogCiAgICAgICAgIGV4cGVjdEtleXdv
cmQoJ2RvJyk7CkBAIC0yNzYxLDEwICszMDA3LDEwIEBAIFdlYkluc3BlY3Rvci5Fc3ByaW1hID0g
e307CiAgICAgICAgICAgICBsZXgoKTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBkZWxl
Z2F0ZS5jcmVhdGVEb1doaWxlU3RhdGVtZW50KGJvZHksIHRlc3QpOworICAgICAgICByZXR1cm4g
bm9kZS5maW5pc2hEb1doaWxlU3RhdGVtZW50KGJvZHksIHRlc3QpOwogICAgIH0KIAotICAgIGZ1
bmN0aW9uIHBhcnNlV2hpbGVTdGF0ZW1lbnQoKSB7CisgICAgZnVuY3Rpb24gcGFyc2VXaGlsZVN0
YXRlbWVudChub2RlKSB7CiAgICAgICAgIHZhciB0ZXN0LCBib2R5LCBvbGRJbkl0ZXJhdGlvbjsK
IAogICAgICAgICBleHBlY3RLZXl3b3JkKCd3aGlsZScpOwpAQCAtMjc4MiwyMSArMzAyOCwyMCBA
QCBXZWJJbnNwZWN0b3IuRXNwcmltYSA9IHt9OwogCiAgICAgICAgIHN0YXRlLmluSXRlcmF0aW9u
ID0gb2xkSW5JdGVyYXRpb247CiAKLSAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZVdoaWxl
U3RhdGVtZW50KHRlc3QsIGJvZHkpOworICAgICAgICByZXR1cm4gbm9kZS5maW5pc2hXaGlsZVN0
YXRlbWVudCh0ZXN0LCBib2R5KTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBwYXJzZUZvclZhcmlh
YmxlRGVjbGFyYXRpb24oKSB7Ci0gICAgICAgIHZhciB0b2tlbiwgZGVjbGFyYXRpb25zLCBzdGFy
dFRva2VuOworICAgICAgICB2YXIgdG9rZW4sIGRlY2xhcmF0aW9ucywgbm9kZSA9IG5ldyBOb2Rl
KCk7CiAKLSAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDsKICAgICAgICAgdG9rZW4gPSBs
ZXgoKTsKICAgICAgICAgZGVjbGFyYXRpb25zID0gcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uTGlz
dCgpOwogCi0gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVZh
cmlhYmxlRGVjbGFyYXRpb24oZGVjbGFyYXRpb25zLCB0b2tlbi52YWx1ZSksIHN0YXJ0VG9rZW4p
OworICAgICAgICByZXR1cm4gbm9kZS5maW5pc2hWYXJpYWJsZURlY2xhcmF0aW9uKGRlY2xhcmF0
aW9ucywgdG9rZW4udmFsdWUpOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIHBhcnNlRm9yU3RhdGVt
ZW50KCkgewotICAgICAgICB2YXIgaW5pdCwgdGVzdCwgdXBkYXRlLCBsZWZ0LCByaWdodCwgYm9k
eSwgb2xkSW5JdGVyYXRpb247CisgICAgZnVuY3Rpb24gcGFyc2VGb3JTdGF0ZW1lbnQobm9kZSkg
eworICAgICAgICB2YXIgaW5pdCwgdGVzdCwgdXBkYXRlLCBsZWZ0LCByaWdodCwgYm9keSwgb2xk
SW5JdGVyYXRpb24sIHByZXZpb3VzQWxsb3dJbiA9IHN0YXRlLmFsbG93SW47CiAKICAgICAgICAg
aW5pdCA9IHRlc3QgPSB1cGRhdGUgPSBudWxsOwogCkBAIC0yODEwLDcgKzMwNTUsNyBAQCBXZWJJ
bnNwZWN0b3IuRXNwcmltYSA9IHt9OwogICAgICAgICAgICAgaWYgKG1hdGNoS2V5d29yZCgndmFy
JykgfHwgbWF0Y2hLZXl3b3JkKCdsZXQnKSkgewogICAgICAgICAgICAgICAgIHN0YXRlLmFsbG93
SW4gPSBmYWxzZTsKICAgICAgICAgICAgICAgICBpbml0ID0gcGFyc2VGb3JWYXJpYWJsZURlY2xh
cmF0aW9uKCk7Ci0gICAgICAgICAgICAgICAgc3RhdGUuYWxsb3dJbiA9IHRydWU7CisgICAgICAg
ICAgICAgICAgc3RhdGUuYWxsb3dJbiA9IHByZXZpb3VzQWxsb3dJbjsKIAogICAgICAgICAgICAg
ICAgIGlmIChpbml0LmRlY2xhcmF0aW9ucy5sZW5ndGggPT09IDEgJiYgbWF0Y2hLZXl3b3JkKCdp
bicpKSB7CiAgICAgICAgICAgICAgICAgICAgIGxleCgpOwpAQCAtMjgyMSw3ICszMDY2LDcgQEAg
V2ViSW5zcGVjdG9yLkVzcHJpbWEgPSB7fTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAg
ICAgICAgICAgc3RhdGUuYWxsb3dJbiA9IGZhbHNlOwogICAgICAgICAgICAgICAgIGluaXQgPSBw
YXJzZUV4cHJlc3Npb24oKTsKLSAgICAgICAgICAgICAgICBzdGF0ZS5hbGxvd0luID0gdHJ1ZTsK
KyAgICAgICAgICAgICAgICBzdGF0ZS5hbGxvd0luID0gcHJldmlvdXNBbGxvd0luOwogCiAgICAg
ICAgICAgICAgICAgaWYgKG1hdGNoS2V5d29yZCgnaW4nKSkgewogICAgICAgICAgICAgICAgICAg
ICAvLyBMZWZ0SGFuZFNpZGVFeHByZXNzaW9uCkBAIC0yODYzLDEzICszMTA4LDEzIEBAIFdlYklu
c3BlY3Rvci5Fc3ByaW1hID0ge307CiAgICAgICAgIHN0YXRlLmluSXRlcmF0aW9uID0gb2xkSW5J
dGVyYXRpb247CiAKICAgICAgICAgcmV0dXJuICh0eXBlb2YgbGVmdCA9PT0gJ3VuZGVmaW5lZCcp
ID8KLSAgICAgICAgICAgICAgICBkZWxlZ2F0ZS5jcmVhdGVGb3JTdGF0ZW1lbnQoaW5pdCwgdGVz
dCwgdXBkYXRlLCBib2R5KSA6Ci0gICAgICAgICAgICAgICAgZGVsZWdhdGUuY3JlYXRlRm9ySW5T
dGF0ZW1lbnQobGVmdCwgcmlnaHQsIGJvZHkpOworICAgICAgICAgICAgbm9kZS5maW5pc2hGb3JT
dGF0ZW1lbnQoaW5pdCwgdGVzdCwgdXBkYXRlLCBib2R5KSA6CisgICAgICAgICAgICBub2RlLmZp
bmlzaEZvckluU3RhdGVtZW50KGxlZnQsIHJpZ2h0LCBib2R5KTsKICAgICB9CiAKICAgICAvLyAx
Mi43IFRoZSBjb250aW51ZSBzdGF0ZW1lbnQKIAotICAgIGZ1bmN0aW9uIHBhcnNlQ29udGludWVT
dGF0ZW1lbnQoKSB7CisgICAgZnVuY3Rpb24gcGFyc2VDb250aW51ZVN0YXRlbWVudChub2RlKSB7
CiAgICAgICAgIHZhciBsYWJlbCA9IG51bGwsIGtleTsKIAogICAgICAgICBleHBlY3RLZXl3b3Jk
KCdjb250aW51ZScpOwpAQCAtMjg4Miw3ICszMTI3LDcgQEAgV2ViSW5zcGVjdG9yLkVzcHJpbWEg
PSB7fTsKICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5JbGxlZ2FsQ29u
dGludWUpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3Jl
YXRlQ29udGludWVTdGF0ZW1lbnQobnVsbCk7CisgICAgICAgICAgICByZXR1cm4gbm9kZS5maW5p
c2hDb250aW51ZVN0YXRlbWVudChudWxsKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChwZWVr
TGluZVRlcm1pbmF0b3IoKSkgewpAQCAtMjg5MCw3ICszMTM1LDcgQEAgV2ViSW5zcGVjdG9yLkVz
cHJpbWEgPSB7fTsKICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5JbGxl
Z2FsQ29udGludWUpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICByZXR1cm4gZGVsZWdh
dGUuY3JlYXRlQ29udGludWVTdGF0ZW1lbnQobnVsbCk7CisgICAgICAgICAgICByZXR1cm4gbm9k
ZS5maW5pc2hDb250aW51ZVN0YXRlbWVudChudWxsKTsKICAgICAgICAgfQogCiAgICAgICAgIGlm
IChsb29rYWhlYWQudHlwZSA9PT0gVG9rZW4uSWRlbnRpZmllcikgewpAQCAtMjkwOCwxMiArMzE1
MywxMiBAQCBXZWJJbnNwZWN0b3IuRXNwcmltYSA9IHt9OwogICAgICAgICAgICAgdGhyb3dFcnJv
cih7fSwgTWVzc2FnZXMuSWxsZWdhbENvbnRpbnVlKTsKICAgICAgICAgfQogCi0gICAgICAgIHJl
dHVybiBkZWxlZ2F0ZS5jcmVhdGVDb250aW51ZVN0YXRlbWVudChsYWJlbCk7CisgICAgICAgIHJl
dHVybiBub2RlLmZpbmlzaENvbnRpbnVlU3RhdGVtZW50KGxhYmVsKTsKICAgICB9CiAKICAgICAv
LyAxMi44IFRoZSBicmVhayBzdGF0ZW1lbnQKIAotICAgIGZ1bmN0aW9uIHBhcnNlQnJlYWtTdGF0
ZW1lbnQoKSB7CisgICAgZnVuY3Rpb24gcGFyc2VCcmVha1N0YXRlbWVudChub2RlKSB7CiAgICAg
ICAgIHZhciBsYWJlbCA9IG51bGwsIGtleTsKIAogICAgICAgICBleHBlY3RLZXl3b3JkKCdicmVh
aycpOwpAQCAtMjkyNiw3ICszMTcxLDcgQEAgV2ViSW5zcGVjdG9yLkVzcHJpbWEgPSB7fTsKICAg
ICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5JbGxlZ2FsQnJlYWspOwogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlQnJlYWtTdGF0
ZW1lbnQobnVsbCk7CisgICAgICAgICAgICByZXR1cm4gbm9kZS5maW5pc2hCcmVha1N0YXRlbWVu
dChudWxsKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChwZWVrTGluZVRlcm1pbmF0b3IoKSkg
ewpAQCAtMjkzNCw3ICszMTc5LDcgQEAgV2ViSW5zcGVjdG9yLkVzcHJpbWEgPSB7fTsKICAgICAg
ICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5JbGxlZ2FsQnJlYWspOwogICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlQnJlYWtTdGF0ZW1l
bnQobnVsbCk7CisgICAgICAgICAgICByZXR1cm4gbm9kZS5maW5pc2hCcmVha1N0YXRlbWVudChu
dWxsKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChsb29rYWhlYWQudHlwZSA9PT0gVG9rZW4u
SWRlbnRpZmllcikgewpAQCAtMjk1MiwxMiArMzE5NywxMiBAQCBXZWJJbnNwZWN0b3IuRXNwcmlt
YSA9IHt9OwogICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuSWxsZWdhbEJyZWFr
KTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVCcmVha1N0YXRl
bWVudChsYWJlbCk7CisgICAgICAgIHJldHVybiBub2RlLmZpbmlzaEJyZWFrU3RhdGVtZW50KGxh
YmVsKTsKICAgICB9CiAKICAgICAvLyAxMi45IFRoZSByZXR1cm4gc3RhdGVtZW50CiAKLSAgICBm
dW5jdGlvbiBwYXJzZVJldHVyblN0YXRlbWVudCgpIHsKKyAgICBmdW5jdGlvbiBwYXJzZVJldHVy
blN0YXRlbWVudChub2RlKSB7CiAgICAgICAgIHZhciBhcmd1bWVudCA9IG51bGw7CiAKICAgICAg
ICAgZXhwZWN0S2V5d29yZCgncmV0dXJuJyk7CkBAIC0yOTcxLDEyICszMjE2LDEyIEBAIFdlYklu
c3BlY3Rvci5Fc3ByaW1hID0ge307CiAgICAgICAgICAgICBpZiAoaXNJZGVudGlmaWVyU3RhcnQo
c291cmNlLmNoYXJDb2RlQXQoaW5kZXggKyAxKSkpIHsKICAgICAgICAgICAgICAgICBhcmd1bWVu
dCA9IHBhcnNlRXhwcmVzc2lvbigpOwogICAgICAgICAgICAgICAgIGNvbnN1bWVTZW1pY29sb24o
KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlUmV0dXJuU3RhdGVtZW50
KGFyZ3VtZW50KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS5maW5pc2hSZXR1cm5TdGF0
ZW1lbnQoYXJndW1lbnQpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgaWYg
KHBlZWtMaW5lVGVybWluYXRvcigpKSB7Ci0gICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3Jl
YXRlUmV0dXJuU3RhdGVtZW50KG51bGwpOworICAgICAgICAgICAgcmV0dXJuIG5vZGUuZmluaXNo
UmV0dXJuU3RhdGVtZW50KG51bGwpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFtYXRjaCgn
OycpKSB7CkBAIC0yOTg3LDEyICszMjMyLDEyIEBAIFdlYkluc3BlY3Rvci5Fc3ByaW1hID0ge307
CiAKICAgICAgICAgY29uc3VtZVNlbWljb2xvbigpOwogCi0gICAgICAgIHJldHVybiBkZWxlZ2F0
ZS5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQoYXJndW1lbnQpOworICAgICAgICByZXR1cm4gbm9kZS5m
aW5pc2hSZXR1cm5TdGF0ZW1lbnQoYXJndW1lbnQpOwogICAgIH0KIAogICAgIC8vIDEyLjEwIFRo
ZSB3aXRoIHN0YXRlbWVudAogCi0gICAgZnVuY3Rpb24gcGFyc2VXaXRoU3RhdGVtZW50KCkgewor
ICAgIGZ1bmN0aW9uIHBhcnNlV2l0aFN0YXRlbWVudChub2RlKSB7CiAgICAgICAgIHZhciBvYmpl
Y3QsIGJvZHk7CiAKICAgICAgICAgaWYgKHN0cmljdCkgewpAQCAtMzAxMSwxNSArMzI1NiwxNCBA
QCBXZWJJbnNwZWN0b3IuRXNwcmltYSA9IHt9OwogCiAgICAgICAgIGJvZHkgPSBwYXJzZVN0YXRl
bWVudCgpOwogCi0gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVXaXRoU3RhdGVtZW50KG9i
amVjdCwgYm9keSk7CisgICAgICAgIHJldHVybiBub2RlLmZpbmlzaFdpdGhTdGF0ZW1lbnQob2Jq
ZWN0LCBib2R5KTsKICAgICB9CiAKICAgICAvLyAxMi4xMCBUaGUgc3dpdGggc3RhdGVtZW50CiAK
ICAgICBmdW5jdGlvbiBwYXJzZVN3aXRjaENhc2UoKSB7Ci0gICAgICAgIHZhciB0ZXN0LCBjb25z
ZXF1ZW50ID0gW10sIHN0YXRlbWVudCwgc3RhcnRUb2tlbjsKKyAgICAgICAgdmFyIHRlc3QsIGNv
bnNlcXVlbnQgPSBbXSwgc3RhdGVtZW50LCBub2RlID0gbmV3IE5vZGUoKTsKIAotICAgICAgICBz
dGFydFRva2VuID0gbG9va2FoZWFkOwogICAgICAgICBpZiAobWF0Y2hLZXl3b3JkKCdkZWZhdWx0
JykpIHsKICAgICAgICAgICAgIGxleCgpOwogICAgICAgICAgICAgdGVzdCA9IG51bGw7CkBAIC0z
MDM3LDEwICszMjgxLDEwIEBAIFdlYkluc3BlY3Rvci5Fc3ByaW1hID0ge307CiAgICAgICAgICAg
ICBjb25zZXF1ZW50LnB1c2goc3RhdGVtZW50KTsKICAgICAgICAgfQogCi0gICAgICAgIHJldHVy
biBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVN3aXRjaENhc2UodGVzdCwgY29uc2Vx
dWVudCksIHN0YXJ0VG9rZW4pOworICAgICAgICByZXR1cm4gbm9kZS5maW5pc2hTd2l0Y2hDYXNl
KHRlc3QsIGNvbnNlcXVlbnQpOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIHBhcnNlU3dpdGNoU3Rh
dGVtZW50KCkgeworICAgIGZ1bmN0aW9uIHBhcnNlU3dpdGNoU3RhdGVtZW50KG5vZGUpIHsKICAg
ICAgICAgdmFyIGRpc2NyaW1pbmFudCwgY2FzZXMsIGNsYXVzZSwgb2xkSW5Td2l0Y2gsIGRlZmF1
bHRGb3VuZDsKIAogICAgICAgICBleHBlY3RLZXl3b3JkKCdzd2l0Y2gnKTsKQEAgLTMwNTcsNyAr
MzMwMSw3IEBAIFdlYkluc3BlY3Rvci5Fc3ByaW1hID0ge307CiAKICAgICAgICAgaWYgKG1hdGNo
KCd9JykpIHsKICAgICAgICAgICAgIGxleCgpOwotICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRl
LmNyZWF0ZVN3aXRjaFN0YXRlbWVudChkaXNjcmltaW5hbnQsIGNhc2VzKTsKKyAgICAgICAgICAg
IHJldHVybiBub2RlLmZpbmlzaFN3aXRjaFN0YXRlbWVudChkaXNjcmltaW5hbnQsIGNhc2VzKTsK
ICAgICAgICAgfQogCiAgICAgICAgIG9sZEluU3dpdGNoID0gc3RhdGUuaW5Td2l0Y2g7CkBAIC0z
MDgyLDEyICszMzI2LDEyIEBAIFdlYkluc3BlY3Rvci5Fc3ByaW1hID0ge307CiAKICAgICAgICAg
ZXhwZWN0KCd9Jyk7CiAKLSAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZVN3aXRjaFN0YXRl
bWVudChkaXNjcmltaW5hbnQsIGNhc2VzKTsKKyAgICAgICAgcmV0dXJuIG5vZGUuZmluaXNoU3dp
dGNoU3RhdGVtZW50KGRpc2NyaW1pbmFudCwgY2FzZXMpOwogICAgIH0KIAogICAgIC8vIDEyLjEz
IFRoZSB0aHJvdyBzdGF0ZW1lbnQKIAotICAgIGZ1bmN0aW9uIHBhcnNlVGhyb3dTdGF0ZW1lbnQo
KSB7CisgICAgZnVuY3Rpb24gcGFyc2VUaHJvd1N0YXRlbWVudChub2RlKSB7CiAgICAgICAgIHZh
ciBhcmd1bWVudDsKIAogICAgICAgICBleHBlY3RLZXl3b3JkKCd0aHJvdycpOwpAQCAtMzEwMCwx
NSArMzM0NCwxNCBAQCBXZWJJbnNwZWN0b3IuRXNwcmltYSA9IHt9OwogCiAgICAgICAgIGNvbnN1
bWVTZW1pY29sb24oKTsKIAotICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlVGhyb3dTdGF0
ZW1lbnQoYXJndW1lbnQpOworICAgICAgICByZXR1cm4gbm9kZS5maW5pc2hUaHJvd1N0YXRlbWVu
dChhcmd1bWVudCk7CiAgICAgfQogCiAgICAgLy8gMTIuMTQgVGhlIHRyeSBzdGF0ZW1lbnQKIAog
ICAgIGZ1bmN0aW9uIHBhcnNlQ2F0Y2hDbGF1c2UoKSB7Ci0gICAgICAgIHZhciBwYXJhbSwgYm9k
eSwgc3RhcnRUb2tlbjsKKyAgICAgICAgdmFyIHBhcmFtLCBib2R5LCBub2RlID0gbmV3IE5vZGUo
KTsKIAotICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkOwogICAgICAgICBleHBlY3RLZXl3
b3JkKCdjYXRjaCcpOwogCiAgICAgICAgIGV4cGVjdCgnKCcpOwpAQCAtMzEyNCwxMCArMzM2Nywx
MCBAQCBXZWJJbnNwZWN0b3IuRXNwcmltYSA9IHt9OwogCiAgICAgICAgIGV4cGVjdCgnKScpOwog
ICAgICAgICBib2R5ID0gcGFyc2VCbG9jaygpOwotICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFy
a0VuZChkZWxlZ2F0ZS5jcmVhdGVDYXRjaENsYXVzZShwYXJhbSwgYm9keSksIHN0YXJ0VG9rZW4p
OworICAgICAgICByZXR1cm4gbm9kZS5maW5pc2hDYXRjaENsYXVzZShwYXJhbSwgYm9keSk7CiAg
ICAgfQogCi0gICAgZnVuY3Rpb24gcGFyc2VUcnlTdGF0ZW1lbnQoKSB7CisgICAgZnVuY3Rpb24g
cGFyc2VUcnlTdGF0ZW1lbnQobm9kZSkgewogICAgICAgICB2YXIgYmxvY2ssIGhhbmRsZXJzID0g
W10sIGZpbmFsaXplciA9IG51bGw7CiAKICAgICAgICAgZXhwZWN0S2V5d29yZCgndHJ5Jyk7CkBA
IC0zMTQ3LDE3ICszMzkwLDE3IEBAIFdlYkluc3BlY3Rvci5Fc3ByaW1hID0ge307CiAgICAgICAg
ICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5Ob0NhdGNoT3JGaW5hbGx5KTsKICAgICAgICAg
fQogCi0gICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVUcnlTdGF0ZW1lbnQoYmxvY2ssIFtd
LCBoYW5kbGVycywgZmluYWxpemVyKTsKKyAgICAgICAgcmV0dXJuIG5vZGUuZmluaXNoVHJ5U3Rh
dGVtZW50KGJsb2NrLCBbXSwgaGFuZGxlcnMsIGZpbmFsaXplcik7CiAgICAgfQogCiAgICAgLy8g
MTIuMTUgVGhlIGRlYnVnZ2VyIHN0YXRlbWVudAogCi0gICAgZnVuY3Rpb24gcGFyc2VEZWJ1Z2dl
clN0YXRlbWVudCgpIHsKKyAgICBmdW5jdGlvbiBwYXJzZURlYnVnZ2VyU3RhdGVtZW50KG5vZGUp
IHsKICAgICAgICAgZXhwZWN0S2V5d29yZCgnZGVidWdnZXInKTsKIAogICAgICAgICBjb25zdW1l
U2VtaWNvbG9uKCk7CiAKLSAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZURlYnVnZ2VyU3Rh
dGVtZW50KCk7CisgICAgICAgIHJldHVybiBub2RlLmZpbmlzaERlYnVnZ2VyU3RhdGVtZW50KCk7
CiAgICAgfQogCiAgICAgLy8gMTIgU3RhdGVtZW50cwpAQCAtMzE2Nyw3ICszNDEwLDcgQEAgV2Vi
SW5zcGVjdG9yLkVzcHJpbWEgPSB7fTsKICAgICAgICAgICAgIGV4cHIsCiAgICAgICAgICAgICBs
YWJlbGVkQm9keSwKICAgICAgICAgICAgIGtleSwKLSAgICAgICAgICAgIHN0YXJ0VG9rZW47Cisg
ICAgICAgICAgICBub2RlOwogCiAgICAgICAgIGlmICh0eXBlID09PSBUb2tlbi5FT0YpIHsKICAg
ICAgICAgICAgIHRocm93VW5leHBlY3RlZChsb29rYWhlYWQpOwpAQCAtMzE3Nyw1MSArMzQyMCw0
OSBAQCBXZWJJbnNwZWN0b3IuRXNwcmltYSA9IHt9OwogICAgICAgICAgICAgcmV0dXJuIHBhcnNl
QmxvY2soKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7Cisg
ICAgICAgIG5vZGUgPSBuZXcgTm9kZSgpOwogCiAgICAgICAgIGlmICh0eXBlID09PSBUb2tlbi5Q
dW5jdHVhdG9yKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGxvb2thaGVhZC52YWx1ZSkgewotICAg
ICAgICAgICAgY2FzZSAnOyc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtF
bmQocGFyc2VFbXB0eVN0YXRlbWVudCgpLCBzdGFydFRva2VuKTsKLSAgICAgICAgICAgIGNhc2Ug
JygnOgotICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlRXhwcmVz
c2lvblN0YXRlbWVudCgpLCBzdGFydFRva2VuKTsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSAnOyc6CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBwYXJzZUVtcHR5U3RhdGVtZW50KG5vZGUpOworICAgICAgICAgICAg
ICAgIGNhc2UgJygnOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VFeHByZXNzaW9u
U3RhdGVtZW50KG5vZGUpOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHR5
cGUgPT09IFRva2VuLktleXdvcmQpIHsKKyAgICAgICAgfSBlbHNlIGlmICh0eXBlID09PSBUb2tl
bi5LZXl3b3JkKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKGxvb2thaGVhZC52YWx1ZSkgewotICAg
ICAgICAgICAgY2FzZSAnYnJlYWsnOgotICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5t
YXJrRW5kKHBhcnNlQnJlYWtTdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7Ci0gICAgICAgICAgICBj
YXNlICdjb250aW51ZSc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQo
cGFyc2VDb250aW51ZVN0YXRlbWVudCgpLCBzdGFydFRva2VuKTsKLSAgICAgICAgICAgIGNhc2Ug
J2RlYnVnZ2VyJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJz
ZURlYnVnZ2VyU3RhdGVtZW50KCksIHN0YXJ0VG9rZW4pOwotICAgICAgICAgICAgY2FzZSAnZG8n
OgotICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlRG9XaGlsZVN0
YXRlbWVudCgpLCBzdGFydFRva2VuKTsKLSAgICAgICAgICAgIGNhc2UgJ2Zvcic6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQocGFyc2VGb3JTdGF0ZW1lbnQoKSwgc3Rh
cnRUb2tlbik7Ci0gICAgICAgICAgICBjYXNlICdmdW5jdGlvbic6Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQocGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKCksIHN0YXJ0
VG9rZW4pOwotICAgICAgICAgICAgY2FzZSAnaWYnOgotICAgICAgICAgICAgICAgIHJldHVybiBk
ZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlSWZTdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7Ci0gICAgICAg
ICAgICBjYXNlICdyZXR1cm4nOgotICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJr
RW5kKHBhcnNlUmV0dXJuU3RhdGVtZW50KCksIHN0YXJ0VG9rZW4pOwotICAgICAgICAgICAgY2Fz
ZSAnc3dpdGNoJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJz
ZVN3aXRjaFN0YXRlbWVudCgpLCBzdGFydFRva2VuKTsKLSAgICAgICAgICAgIGNhc2UgJ3Rocm93
JzoKLSAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJzZVRocm93U3Rh
dGVtZW50KCksIHN0YXJ0VG9rZW4pOwotICAgICAgICAgICAgY2FzZSAndHJ5JzoKLSAgICAgICAg
ICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJzZVRyeVN0YXRlbWVudCgpLCBzdGFy
dFRva2VuKTsKLSAgICAgICAgICAgIGNhc2UgJ3Zhcic6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
IGRlbGVnYXRlLm1hcmtFbmQocGFyc2VWYXJpYWJsZVN0YXRlbWVudCgpLCBzdGFydFRva2VuKTsK
LSAgICAgICAgICAgIGNhc2UgJ3doaWxlJzoKLSAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdh
dGUubWFya0VuZChwYXJzZVdoaWxlU3RhdGVtZW50KCksIHN0YXJ0VG9rZW4pOwotICAgICAgICAg
ICAgY2FzZSAnd2l0aCc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQo
cGFyc2VXaXRoU3RhdGVtZW50KCksIHN0YXJ0VG9rZW4pOwotICAgICAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlICdicmVhayc6Cisg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUJyZWFrU3RhdGVtZW50KG5vZGUpOworICAg
ICAgICAgICAgICAgIGNhc2UgJ2NvbnRpbnVlJzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHBhcnNlQ29udGludWVTdGF0ZW1lbnQobm9kZSk7CisgICAgICAgICAgICAgICAgY2FzZSAnZGVi
dWdnZXInOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VEZWJ1Z2dlclN0YXRlbWVu
dChub2RlKTsKKyAgICAgICAgICAgICAgICBjYXNlICdkbyc6CisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBwYXJzZURvV2hpbGVTdGF0ZW1lbnQobm9kZSk7CisgICAgICAgICAgICAgICAgY2Fz
ZSAnZm9yJzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlRm9yU3RhdGVtZW50KG5v
ZGUpOworICAgICAgICAgICAgICAgIGNhc2UgJ2Z1bmN0aW9uJzoKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbihub2RlKTsKKyAgICAgICAgICAgICAg
ICBjYXNlICdpZic6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUlmU3RhdGVtZW50
KG5vZGUpOworICAgICAgICAgICAgICAgIGNhc2UgJ3JldHVybic6CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybiBwYXJzZVJldHVyblN0YXRlbWVudChub2RlKTsKKyAgICAgICAgICAgICAgICBj
YXNlICdzd2l0Y2gnOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VTd2l0Y2hTdGF0
ZW1lbnQobm9kZSk7CisgICAgICAgICAgICAgICAgY2FzZSAndGhyb3cnOgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gcGFyc2VUaHJvd1N0YXRlbWVudChub2RlKTsKKyAgICAgICAgICAgICAg
ICBjYXNlICd0cnknOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VUcnlTdGF0ZW1l
bnQobm9kZSk7CisgICAgICAgICAgICAgICAgY2FzZSAndmFyJzoKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIHBhcnNlVmFyaWFibGVTdGF0ZW1lbnQobm9kZSk7CisgICAgICAgICAgICAgICAg
Y2FzZSAnd2hpbGUnOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VXaGlsZVN0YXRl
bWVudChub2RlKTsKKyAgICAgICAgICAgICAgICBjYXNlICd3aXRoJzoKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHBhcnNlV2l0aFN0YXRlbWVudChub2RlKTsKKyAgICAgICAgICAgICAgICBk
ZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgfQogCkBAIC0zMjM5LDIxICszNDgwLDIxIEBAIFdlYkluc3BlY3Rvci5Fc3ByaW1hID0ge307
CiAgICAgICAgICAgICBzdGF0ZS5sYWJlbFNldFtrZXldID0gdHJ1ZTsKICAgICAgICAgICAgIGxh
YmVsZWRCb2R5ID0gcGFyc2VTdGF0ZW1lbnQoKTsKICAgICAgICAgICAgIGRlbGV0ZSBzdGF0ZS5s
YWJlbFNldFtrZXldOwotICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdh
dGUuY3JlYXRlTGFiZWxlZFN0YXRlbWVudChleHByLCBsYWJlbGVkQm9keSksIHN0YXJ0VG9rZW4p
OworICAgICAgICAgICAgcmV0dXJuIG5vZGUuZmluaXNoTGFiZWxlZFN0YXRlbWVudChleHByLCBs
YWJlbGVkQm9keSk7CiAgICAgICAgIH0KIAogICAgICAgICBjb25zdW1lU2VtaWNvbG9uKCk7CiAK
LSAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlRXhwcmVzc2lv
blN0YXRlbWVudChleHByKSwgc3RhcnRUb2tlbik7CisgICAgICAgIHJldHVybiBub2RlLmZpbmlz
aEV4cHJlc3Npb25TdGF0ZW1lbnQoZXhwcik7CiAgICAgfQogCiAgICAgLy8gMTMgRnVuY3Rpb24g
RGVmaW5pdGlvbgogCiAgICAgZnVuY3Rpb24gcGFyc2VGdW5jdGlvblNvdXJjZUVsZW1lbnRzKCkg
ewogICAgICAgICB2YXIgc291cmNlRWxlbWVudCwgc291cmNlRWxlbWVudHMgPSBbXSwgdG9rZW4s
IGRpcmVjdGl2ZSwgZmlyc3RSZXN0cmljdGVkLAotICAgICAgICAgICAgb2xkTGFiZWxTZXQsIG9s
ZEluSXRlcmF0aW9uLCBvbGRJblN3aXRjaCwgb2xkSW5GdW5jdGlvbkJvZHksIHN0YXJ0VG9rZW47
CisgICAgICAgICAgICBvbGRMYWJlbFNldCwgb2xkSW5JdGVyYXRpb24sIG9sZEluU3dpdGNoLCBv
bGRJbkZ1bmN0aW9uQm9keSwgb2xkUGFyZW50aGVzaXNDb3VudCwKKyAgICAgICAgICAgIG5vZGUg
PSBuZXcgTm9kZSgpOwogCi0gICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7CiAgICAgICAg
IGV4cGVjdCgneycpOwogCiAgICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkgewpAQCAtMzI4
NSwxMSArMzUyNiwxMyBAQCBXZWJJbnNwZWN0b3IuRXNwcmltYSA9IHt9OwogICAgICAgICBvbGRJ
bkl0ZXJhdGlvbiA9IHN0YXRlLmluSXRlcmF0aW9uOwogICAgICAgICBvbGRJblN3aXRjaCA9IHN0
YXRlLmluU3dpdGNoOwogICAgICAgICBvbGRJbkZ1bmN0aW9uQm9keSA9IHN0YXRlLmluRnVuY3Rp
b25Cb2R5OworICAgICAgICBvbGRQYXJlbnRoZXNpc0NvdW50ID0gc3RhdGUucGFyZW50aGVzaXpl
ZENvdW50OwogCiAgICAgICAgIHN0YXRlLmxhYmVsU2V0ID0ge307CiAgICAgICAgIHN0YXRlLmlu
SXRlcmF0aW9uID0gZmFsc2U7CiAgICAgICAgIHN0YXRlLmluU3dpdGNoID0gZmFsc2U7CiAgICAg
ICAgIHN0YXRlLmluRnVuY3Rpb25Cb2R5ID0gdHJ1ZTsKKyAgICAgICAgc3RhdGUucGFyZW50aGVz
aXplZENvdW50ID0gMDsKIAogICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKICAgICAg
ICAgICAgIGlmIChtYXRjaCgnfScpKSB7CkBAIC0zMzA4LDQ0ICszNTUxLDcxIEBAIFdlYkluc3Bl
Y3Rvci5Fc3ByaW1hID0ge307CiAgICAgICAgIHN0YXRlLmluSXRlcmF0aW9uID0gb2xkSW5JdGVy
YXRpb247CiAgICAgICAgIHN0YXRlLmluU3dpdGNoID0gb2xkSW5Td2l0Y2g7CiAgICAgICAgIHN0
YXRlLmluRnVuY3Rpb25Cb2R5ID0gb2xkSW5GdW5jdGlvbkJvZHk7CisgICAgICAgIHN0YXRlLnBh
cmVudGhlc2l6ZWRDb3VudCA9IG9sZFBhcmVudGhlc2lzQ291bnQ7CisKKyAgICAgICAgcmV0dXJu
IG5vZGUuZmluaXNoQmxvY2tTdGF0ZW1lbnQoc291cmNlRWxlbWVudHMpOworICAgIH0KKworICAg
IGZ1bmN0aW9uIHZhbGlkYXRlUGFyYW0ob3B0aW9ucywgcGFyYW0sIG5hbWUpIHsKKyAgICAgICAg
dmFyIGtleSA9ICckJyArIG5hbWU7CisgICAgICAgIGlmIChzdHJpY3QpIHsKKyAgICAgICAgICAg
IGlmIChpc1Jlc3RyaWN0ZWRXb3JkKG5hbWUpKSB7CisgICAgICAgICAgICAgICAgb3B0aW9ucy5z
dHJpY3RlZCA9IHBhcmFtOworICAgICAgICAgICAgICAgIG9wdGlvbnMubWVzc2FnZSA9IE1lc3Nh
Z2VzLlN0cmljdFBhcmFtTmFtZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChPYmpl
Y3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob3B0aW9ucy5wYXJhbVNldCwga2V5KSkg
eworICAgICAgICAgICAgICAgIG9wdGlvbnMuc3RyaWN0ZWQgPSBwYXJhbTsKKyAgICAgICAgICAg
ICAgICBvcHRpb25zLm1lc3NhZ2UgPSBNZXNzYWdlcy5TdHJpY3RQYXJhbUR1cGU7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoIW9wdGlvbnMuZmlyc3RSZXN0cmljdGVkKSB7Cisg
ICAgICAgICAgICBpZiAoaXNSZXN0cmljdGVkV29yZChuYW1lKSkgeworICAgICAgICAgICAgICAg
IG9wdGlvbnMuZmlyc3RSZXN0cmljdGVkID0gcGFyYW07CisgICAgICAgICAgICAgICAgb3B0aW9u
cy5tZXNzYWdlID0gTWVzc2FnZXMuU3RyaWN0UGFyYW1OYW1lOworICAgICAgICAgICAgfSBlbHNl
IGlmIChpc1N0cmljdE1vZGVSZXNlcnZlZFdvcmQobmFtZSkpIHsKKyAgICAgICAgICAgICAgICBv
cHRpb25zLmZpcnN0UmVzdHJpY3RlZCA9IHBhcmFtOworICAgICAgICAgICAgICAgIG9wdGlvbnMu
bWVzc2FnZSA9IE1lc3NhZ2VzLlN0cmljdFJlc2VydmVkV29yZDsKKyAgICAgICAgICAgIH0gZWxz
ZSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9wdGlvbnMucGFyYW1T
ZXQsIGtleSkpIHsKKyAgICAgICAgICAgICAgICBvcHRpb25zLmZpcnN0UmVzdHJpY3RlZCA9IHBh
cmFtOworICAgICAgICAgICAgICAgIG9wdGlvbnMubWVzc2FnZSA9IE1lc3NhZ2VzLlN0cmljdFBh
cmFtRHVwZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBvcHRpb25zLnBhcmFt
U2V0W2tleV0gPSB0cnVlOworICAgIH0KKworICAgIGZ1bmN0aW9uIHBhcnNlUGFyYW0ob3B0aW9u
cykgeworICAgICAgICB2YXIgdG9rZW4sIHBhcmFtLCBkZWY7CiAKLSAgICAgICAgcmV0dXJuIGRl
bGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlQmxvY2tTdGF0ZW1lbnQoc291cmNlRWxlbWVu
dHMpLCBzdGFydFRva2VuKTsKKyAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7CisgICAgICAgIHBh
cmFtID0gcGFyc2VWYXJpYWJsZUlkZW50aWZpZXIoKTsKKyAgICAgICAgdmFsaWRhdGVQYXJhbShv
cHRpb25zLCB0b2tlbiwgdG9rZW4udmFsdWUpOworICAgICAgICBpZiAobWF0Y2goJz0nKSkgewor
ICAgICAgICAgICAgbGV4KCk7CisgICAgICAgICAgICBkZWYgPSBwYXJzZUFzc2lnbm1lbnRFeHBy
ZXNzaW9uKCk7CisgICAgICAgICAgICArK29wdGlvbnMuZGVmYXVsdENvdW50OworICAgICAgICB9
CisKKyAgICAgICAgb3B0aW9ucy5wYXJhbXMucHVzaChwYXJhbSk7CisgICAgICAgIG9wdGlvbnMu
ZGVmYXVsdHMucHVzaChkZWYpOworCisgICAgICAgIHJldHVybiAhbWF0Y2goJyknKTsKICAgICB9
CiAKICAgICBmdW5jdGlvbiBwYXJzZVBhcmFtcyhmaXJzdFJlc3RyaWN0ZWQpIHsKLSAgICAgICAg
dmFyIHBhcmFtLCBwYXJhbXMgPSBbXSwgdG9rZW4sIHN0cmljdGVkLCBwYXJhbVNldCwga2V5LCBt
ZXNzYWdlOworICAgICAgICB2YXIgb3B0aW9uczsKKworICAgICAgICBvcHRpb25zID0geworICAg
ICAgICAgICAgcGFyYW1zOiBbXSwKKyAgICAgICAgICAgIGRlZmF1bHRDb3VudDogMCwKKyAgICAg
ICAgICAgIGRlZmF1bHRzOiBbXSwKKyAgICAgICAgICAgIGZpcnN0UmVzdHJpY3RlZDogZmlyc3RS
ZXN0cmljdGVkCisgICAgICAgIH07CisKICAgICAgICAgZXhwZWN0KCcoJyk7CiAKICAgICAgICAg
aWYgKCFtYXRjaCgnKScpKSB7Ci0gICAgICAgICAgICBwYXJhbVNldCA9IHt9OworICAgICAgICAg
ICAgb3B0aW9ucy5wYXJhbVNldCA9IHt9OwogICAgICAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVu
Z3RoKSB7Ci0gICAgICAgICAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7Ci0gICAgICAgICAgICAg
ICAgcGFyYW0gPSBwYXJzZVZhcmlhYmxlSWRlbnRpZmllcigpOwotICAgICAgICAgICAgICAgIGtl
eSA9ICckJyArIHRva2VuLnZhbHVlOwotICAgICAgICAgICAgICAgIGlmIChzdHJpY3QpIHsKLSAg
ICAgICAgICAgICAgICAgICAgaWYgKGlzUmVzdHJpY3RlZFdvcmQodG9rZW4udmFsdWUpKSB7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBzdHJpY3RlZCA9IHRva2VuOwotICAgICAgICAgICAgICAg
ICAgICAgICAgbWVzc2FnZSA9IE1lc3NhZ2VzLlN0cmljdFBhcmFtTmFtZTsKLSAgICAgICAgICAg
ICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNP
d25Qcm9wZXJ0eS5jYWxsKHBhcmFtU2V0LCBrZXkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBzdHJpY3RlZCA9IHRva2VuOwotICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IE1l
c3NhZ2VzLlN0cmljdFBhcmFtRHVwZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoIWZpcnN0UmVzdHJpY3RlZCkgewotICAgICAgICAgICAgICAgICAg
ICBpZiAoaXNSZXN0cmljdGVkV29yZCh0b2tlbi52YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGZpcnN0UmVzdHJpY3RlZCA9IHRva2VuOwotICAgICAgICAgICAgICAgICAgICAgICAg
bWVzc2FnZSA9IE1lc3NhZ2VzLlN0cmljdFBhcmFtTmFtZTsKLSAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIGlmIChpc1N0cmljdE1vZGVSZXNlcnZlZFdvcmQodG9rZW4udmFsdWUpKSB7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICBmaXJzdFJlc3RyaWN0ZWQgPSB0b2tlbjsKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG1lc3NhZ2UgPSBNZXNzYWdlcy5TdHJpY3RSZXNlcnZlZFdvcmQ7Ci0gICAg
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0
eS5jYWxsKHBhcmFtU2V0LCBrZXkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaXJzdFJl
c3RyaWN0ZWQgPSB0b2tlbjsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBNZXNz
YWdlcy5TdHJpY3RQYXJhbUR1cGU7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAgICAgcGFyYW1zLnB1c2gocGFyYW0pOwotICAgICAgICAgICAg
ICAgIHBhcmFtU2V0W2tleV0gPSB0cnVlOwotICAgICAgICAgICAgICAgIGlmIChtYXRjaCgnKScp
KSB7CisgICAgICAgICAgICAgICAgaWYgKCFwYXJzZVBhcmFtKG9wdGlvbnMpKSB7CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBl
eHBlY3QoJywnKTsKQEAgLTMzNTQsMTggKzM2MjQsMjEgQEAgV2ViSW5zcGVjdG9yLkVzcHJpbWEg
PSB7fTsKIAogICAgICAgICBleHBlY3QoJyknKTsKIAorICAgICAgICBpZiAob3B0aW9ucy5kZWZh
dWx0Q291bnQgPT09IDApIHsKKyAgICAgICAgICAgIG9wdGlvbnMuZGVmYXVsdHMgPSBbXTsKKyAg
ICAgICAgfQorCiAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICBwYXJhbXM6IHBhcmFtcywK
LSAgICAgICAgICAgIHN0cmljdGVkOiBzdHJpY3RlZCwKLSAgICAgICAgICAgIGZpcnN0UmVzdHJp
Y3RlZDogZmlyc3RSZXN0cmljdGVkLAotICAgICAgICAgICAgbWVzc2FnZTogbWVzc2FnZQorICAg
ICAgICAgICAgcGFyYW1zOiBvcHRpb25zLnBhcmFtcywKKyAgICAgICAgICAgIGRlZmF1bHRzOiBv
cHRpb25zLmRlZmF1bHRzLAorICAgICAgICAgICAgc3RyaWN0ZWQ6IG9wdGlvbnMuc3RyaWN0ZWQs
CisgICAgICAgICAgICBmaXJzdFJlc3RyaWN0ZWQ6IG9wdGlvbnMuZmlyc3RSZXN0cmljdGVkLAor
ICAgICAgICAgICAgbWVzc2FnZTogb3B0aW9ucy5tZXNzYWdlCiAgICAgICAgIH07CiAgICAgfQog
CiAgICAgZnVuY3Rpb24gcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKCkgewotICAgICAgICB2YXIg
aWQsIHBhcmFtcyA9IFtdLCBib2R5LCB0b2tlbiwgc3RyaWN0ZWQsIHRtcCwgZmlyc3RSZXN0cmlj
dGVkLCBtZXNzYWdlLCBwcmV2aW91c1N0cmljdCwgc3RhcnRUb2tlbjsKLQotICAgICAgICBzdGFy
dFRva2VuID0gbG9va2FoZWFkOworICAgICAgICB2YXIgaWQsIHBhcmFtcyA9IFtdLCBkZWZhdWx0
cyA9IFtdLCBib2R5LCB0b2tlbiwgc3RyaWN0ZWQsIHRtcCwgZmlyc3RSZXN0cmljdGVkLCBtZXNz
YWdlLCBwcmV2aW91c1N0cmljdCwgbm9kZSA9IG5ldyBOb2RlKCk7CiAKICAgICAgICAgZXhwZWN0
S2V5d29yZCgnZnVuY3Rpb24nKTsKICAgICAgICAgdG9rZW4gPSBsb29rYWhlYWQ7CkBAIC0zMzg2
LDYgKzM2NTksNyBAQCBXZWJJbnNwZWN0b3IuRXNwcmltYSA9IHt9OwogCiAgICAgICAgIHRtcCA9
IHBhcnNlUGFyYW1zKGZpcnN0UmVzdHJpY3RlZCk7CiAgICAgICAgIHBhcmFtcyA9IHRtcC5wYXJh
bXM7CisgICAgICAgIGRlZmF1bHRzID0gdG1wLmRlZmF1bHRzOwogICAgICAgICBzdHJpY3RlZCA9
IHRtcC5zdHJpY3RlZDsKICAgICAgICAgZmlyc3RSZXN0cmljdGVkID0gdG1wLmZpcnN0UmVzdHJp
Y3RlZDsKICAgICAgICAgaWYgKHRtcC5tZXNzYWdlKSB7CkBAIC0zNDAyLDEzICszNjc2LDEzIEBA
IFdlYkluc3BlY3Rvci5Fc3ByaW1hID0ge307CiAgICAgICAgIH0KICAgICAgICAgc3RyaWN0ID0g
cHJldmlvdXNTdHJpY3Q7CiAKLSAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdh
dGUuY3JlYXRlRnVuY3Rpb25EZWNsYXJhdGlvbihpZCwgcGFyYW1zLCBbXSwgYm9keSksIHN0YXJ0
VG9rZW4pOworICAgICAgICByZXR1cm4gbm9kZS5maW5pc2hGdW5jdGlvbkRlY2xhcmF0aW9uKGlk
LCBwYXJhbXMsIGRlZmF1bHRzLCBib2R5KTsKICAgICB9CiAKICAgICBmdW5jdGlvbiBwYXJzZUZ1
bmN0aW9uRXhwcmVzc2lvbigpIHsKLSAgICAgICAgdmFyIHRva2VuLCBpZCA9IG51bGwsIHN0cmlj
dGVkLCBmaXJzdFJlc3RyaWN0ZWQsIG1lc3NhZ2UsIHRtcCwgcGFyYW1zID0gW10sIGJvZHksIHBy
ZXZpb3VzU3RyaWN0LCBzdGFydFRva2VuOworICAgICAgICB2YXIgdG9rZW4sIGlkID0gbnVsbCwg
c3RyaWN0ZWQsIGZpcnN0UmVzdHJpY3RlZCwgbWVzc2FnZSwgdG1wLAorICAgICAgICAgICAgcGFy
YW1zID0gW10sIGRlZmF1bHRzID0gW10sIGJvZHksIHByZXZpb3VzU3RyaWN0LCBub2RlID0gbmV3
IE5vZGUoKTsKIAotICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkOwogICAgICAgICBleHBl
Y3RLZXl3b3JkKCdmdW5jdGlvbicpOwogCiAgICAgICAgIGlmICghbWF0Y2goJygnKSkgewpAQCAt
MzQzMSw2ICszNzA1LDcgQEAgV2ViSW5zcGVjdG9yLkVzcHJpbWEgPSB7fTsKIAogICAgICAgICB0
bXAgPSBwYXJzZVBhcmFtcyhmaXJzdFJlc3RyaWN0ZWQpOwogICAgICAgICBwYXJhbXMgPSB0bXAu
cGFyYW1zOworICAgICAgICBkZWZhdWx0cyA9IHRtcC5kZWZhdWx0czsKICAgICAgICAgc3RyaWN0
ZWQgPSB0bXAuc3RyaWN0ZWQ7CiAgICAgICAgIGZpcnN0UmVzdHJpY3RlZCA9IHRtcC5maXJzdFJl
c3RyaWN0ZWQ7CiAgICAgICAgIGlmICh0bXAubWVzc2FnZSkgewpAQCAtMzQ0Nyw3ICszNzIyLDcg
QEAgV2ViSW5zcGVjdG9yLkVzcHJpbWEgPSB7fTsKICAgICAgICAgfQogICAgICAgICBzdHJpY3Qg
PSBwcmV2aW91c1N0cmljdDsKIAotICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxl
Z2F0ZS5jcmVhdGVGdW5jdGlvbkV4cHJlc3Npb24oaWQsIHBhcmFtcywgW10sIGJvZHkpLCBzdGFy
dFRva2VuKTsKKyAgICAgICAgcmV0dXJuIG5vZGUuZmluaXNoRnVuY3Rpb25FeHByZXNzaW9uKGlk
LCBwYXJhbXMsIGRlZmF1bHRzLCBib2R5KTsKICAgICB9CiAKICAgICAvLyAxNCBQcm9ncmFtCkBA
IC0zNDU1LDEzICszNzMwLDEzIEBAIFdlYkluc3BlY3Rvci5Fc3ByaW1hID0ge307CiAgICAgZnVu
Y3Rpb24gcGFyc2VTb3VyY2VFbGVtZW50KCkgewogICAgICAgICBpZiAobG9va2FoZWFkLnR5cGUg
PT09IFRva2VuLktleXdvcmQpIHsKICAgICAgICAgICAgIHN3aXRjaCAobG9va2FoZWFkLnZhbHVl
KSB7Ci0gICAgICAgICAgICBjYXNlICdjb25zdCc6Ci0gICAgICAgICAgICBjYXNlICdsZXQnOgot
ICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZUNvbnN0TGV0RGVjbGFyYXRpb24obG9va2FoZWFk
LnZhbHVlKTsKLSAgICAgICAgICAgIGNhc2UgJ2Z1bmN0aW9uJzoKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKCk7Ci0gICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgIHJldHVybiBwYXJzZVN0YXRlbWVudCgpOworICAgICAgICAgICAgICAg
IGNhc2UgJ2NvbnN0JzoKKyAgICAgICAgICAgICAgICBjYXNlICdsZXQnOgorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gcGFyc2VDb25zdExldERlY2xhcmF0aW9uKGxvb2thaGVhZC52YWx1ZSk7
CisgICAgICAgICAgICAgICAgY2FzZSAnZnVuY3Rpb24nOgorICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uKCk7CisgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlU3RhdGVtZW50KCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgIH0KIApAQCAtMzUxMCwxNSArMzc4NSwxNSBAQCBXZWJJbnNwZWN0b3Iu
RXNwcmltYSA9IHt9OwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHBhcnNlUHJvZ3JhbSgpIHsKLSAg
ICAgICAgdmFyIGJvZHksIHN0YXJ0VG9rZW47CisgICAgICAgIHZhciBib2R5LCBub2RlOwogCiAg
ICAgICAgIHNraXBDb21tZW50KCk7CiAgICAgICAgIHBlZWsoKTsKLSAgICAgICAgc3RhcnRUb2tl
biA9IGxvb2thaGVhZDsKKyAgICAgICAgbm9kZSA9IG5ldyBOb2RlKCk7CiAgICAgICAgIHN0cmlj
dCA9IGZhbHNlOwogCiAgICAgICAgIGJvZHkgPSBwYXJzZVNvdXJjZUVsZW1lbnRzKCk7Ci0gICAg
ICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVByb2dyYW0oYm9keSks
IHN0YXJ0VG9rZW4pOworICAgICAgICByZXR1cm4gbm9kZS5maW5pc2hQcm9ncmFtKGJvZHkpOwog
ICAgIH0KIAogICAgIGZ1bmN0aW9uIGZpbHRlclRva2VuTG9jYXRpb24oKSB7CkBAIC0zNTMwLDYg
KzM4MDUsMTIgQEAgV2ViSW5zcGVjdG9yLkVzcHJpbWEgPSB7fTsKICAgICAgICAgICAgICAgICB0
eXBlOiBlbnRyeS50eXBlLAogICAgICAgICAgICAgICAgIHZhbHVlOiBlbnRyeS52YWx1ZQogICAg
ICAgICAgICAgfTsKKyAgICAgICAgICAgIGlmIChlbnRyeS5yZWdleCkgeworICAgICAgICAgICAg
ICAgIHRva2VuLnJlZ2V4ID0geworICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuOiBlbnRyeS5y
ZWdleC5wYXR0ZXJuLAorICAgICAgICAgICAgICAgICAgICBmbGFnczogZW50cnkucmVnZXguZmxh
Z3MKKyAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGV4
dHJhLnJhbmdlKSB7CiAgICAgICAgICAgICAgICAgdG9rZW4ucmFuZ2UgPSBlbnRyeS5yYW5nZTsK
ICAgICAgICAgICAgIH0KQEAgLTM1NDQsNyArMzgyNSw2IEBAIFdlYkluc3BlY3Rvci5Fc3ByaW1h
ID0ge307CiAKICAgICBmdW5jdGlvbiB0b2tlbml6ZShjb2RlLCBvcHRpb25zKSB7CiAgICAgICAg
IHZhciB0b1N0cmluZywKLSAgICAgICAgICAgIHRva2VuLAogICAgICAgICAgICAgdG9rZW5zOwog
CiAgICAgICAgIHRvU3RyaW5nID0gU3RyaW5nOwpAQCAtMzU1Miw3ICszODMyLDYgQEAgV2ViSW5z
cGVjdG9yLkVzcHJpbWEgPSB7fTsKICAgICAgICAgICAgIGNvZGUgPSB0b1N0cmluZyhjb2RlKTsK
ICAgICAgICAgfQogCi0gICAgICAgIGRlbGVnYXRlID0gU3ludGF4VHJlZURlbGVnYXRlOwogICAg
ICAgICBzb3VyY2UgPSBjb2RlOwogICAgICAgICBpbmRleCA9IDA7CiAgICAgICAgIGxpbmVOdW1i
ZXIgPSAoc291cmNlLmxlbmd0aCA+IDApID8gMSA6IDA7CkBAIC0zNTk3LDEyICszODc2LDExIEBA
IFdlYkluc3BlY3Rvci5Fc3ByaW1hID0ge307CiAgICAgICAgICAgICAgICAgcmV0dXJuIGV4dHJh
LnRva2VuczsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgdG9rZW4gPSBsZXgoKTsKKyAg
ICAgICAgICAgIGxleCgpOwogICAgICAgICAgICAgd2hpbGUgKGxvb2thaGVhZC50eXBlICE9PSBU
b2tlbi5FT0YpIHsKICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICB0
b2tlbiA9IGxleCgpOworICAgICAgICAgICAgICAgICAgICBsZXgoKTsKICAgICAgICAgICAgICAg
ICB9IGNhdGNoIChsZXhFcnJvcikgewotICAgICAgICAgICAgICAgICAgICB0b2tlbiA9IGxvb2th
aGVhZDsKICAgICAgICAgICAgICAgICAgICAgaWYgKGV4dHJhLmVycm9ycykgewogICAgICAgICAg
ICAgICAgICAgICAgICAgZXh0cmEuZXJyb3JzLnB1c2gobGV4RXJyb3IpOwogICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gV2UgaGF2ZSB0byBicmVhayBvbiB0aGUgZmlyc3QgZXJyb3IKQEAgLTM2
MzgsNyArMzkxNiw2IEBAIFdlYkluc3BlY3Rvci5Fc3ByaW1hID0ge307CiAgICAgICAgICAgICBj
b2RlID0gdG9TdHJpbmcoY29kZSk7CiAgICAgICAgIH0KIAotICAgICAgICBkZWxlZ2F0ZSA9IFN5
bnRheFRyZWVEZWxlZ2F0ZTsKICAgICAgICAgc291cmNlID0gY29kZTsKICAgICAgICAgaW5kZXgg
PSAwOwogICAgICAgICBsaW5lTnVtYmVyID0gKHNvdXJjZS5sZW5ndGggPiAwKSA/IDEgOiAwOwpA
QCAtMzY0OCw2ICszOTI1LDcgQEAgV2ViSW5zcGVjdG9yLkVzcHJpbWEgPSB7fTsKICAgICAgICAg
c3RhdGUgPSB7CiAgICAgICAgICAgICBhbGxvd0luOiB0cnVlLAogICAgICAgICAgICAgbGFiZWxT
ZXQ6IHt9LAorICAgICAgICAgICAgcGFyZW50aGVzaXNDb3VudDogMCwKICAgICAgICAgICAgIGlu
RnVuY3Rpb25Cb2R5OiBmYWxzZSwKICAgICAgICAgICAgIGluSXRlcmF0aW9uOiBmYWxzZSwKICAg
ICAgICAgICAgIGluU3dpdGNoOiBmYWxzZSwKQEAgLTM3MDQsMTQgKzM5ODIsMTQgQEAgV2ViSW5z
cGVjdG9yLkVzcHJpbWEgPSB7fTsKICAgICB9CiAKICAgICAvLyBTeW5jIHdpdGggKi5qc29uIG1h
bmlmZXN0cy4KLSAgICBleHBvcnRzLnZlcnNpb24gPSAnMS4yLjInOworICAgIGV4cG9ydHMudmVy
c2lvbiA9ICcyLjAuMC1kZXYnOwogCiAgICAgZXhwb3J0cy50b2tlbml6ZSA9IHRva2VuaXplOwog
CiAgICAgZXhwb3J0cy5wYXJzZSA9IHBhcnNlOwogCiAgICAgLy8gRGVlcCBjb3B5LgotICAgLyog
aXN0YW5idWwgaWdub3JlIG5leHQgKi8KKyAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLwog
ICAgIGV4cG9ydHMuU3ludGF4ID0gKGZ1bmN0aW9uICgpIHsKICAgICAgICAgdmFyIG5hbWUsIHR5
cGVzID0ge307CiAKQEAgLTM3MzIsNCArNDAxMCw1IEBAIFdlYkluc3BlY3Rvci5Fc3ByaW1hID0g
e307CiAgICAgICAgIHJldHVybiB0eXBlczsKICAgICB9KCkpOwogCi19KShXZWJJbnNwZWN0b3Iu
RXNwcmltYSk7Cit9KSk7CisvKiB2aW06IHNldCBzdz00IHRzPTQgZXQgdHc9ODAgOiAqLwpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01haW4uaHRtbAppbmRleCBiZjdlMzZjLi5mOTI5NDdiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBAIC0xNjAsNiArMTYwLDcgQEAK
ICAgICA8c2NyaXB0IHNyYz0iRXh0ZXJuYWwvQ29kZU1pcnJvci9zcWwuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJFeHRlcm5hbC9Db2RlTWlycm9yL3htbC5qcyI+PC9zY3JpcHQ+CiAK
KyAgICA8c2NyaXB0IHNyYz0iRXh0ZXJuYWwvRXNwcmltYS9lc3ByaW1hLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iRXh0ZXJuYWwvRVNMaW50L2VzbGludC5qcyI+PC9zY3JpcHQ+CiAK
ICAgICA8c2NyaXB0IHNyYz0iQmFzZS9XZWJJbnNwZWN0b3IuanMiPjwvc2NyaXB0PgpAQCAtMTc2
LDggKzE3Nyw2IEBACiAgICAgPHNjcmlwdCBzcmM9IkJhc2UvVVJMVXRpbGl0aWVzLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iQmFzZS9VdGlsaXRpZXMuanMiPjwvc2NyaXB0PgogCi0g
ICAgPHNjcmlwdCBzcmM9IkV4dGVybmFsL0VzcHJpbWEvZXNwcmltYS5qcyI+PC9zY3JpcHQ+Ci0K
ICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvQXBwbGljYXRpb25DYWNoZU9ic2VydmVyLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iUHJvdG9jb2wvQ1NTT2JzZXJ2ZXIuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJQcm90b2NvbC9Db25zb2xlT2JzZXJ2ZXIuanMiPjwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL1NjcmlwdFN5bnRheFRyZWUuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvU2NyaXB0U3ludGF4VHJlZS5qcwppbmRleCA1M2YyNmU0Li41Y2Q4N2E5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2Ny
aXB0U3ludGF4VHJlZS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvU2NyaXB0U3ludGF4VHJlZS5qcwpAQCAtMzEsNyArMzEsNyBAQCBXZWJJbnNwZWN0
b3IuU2NyaXB0U3ludGF4VHJlZSA9IGZ1bmN0aW9uKHNvdXJjZVRleHQsIHNjcmlwdCkKICAgICB0
aGlzLl9zY3JpcHQgPSBzY3JpcHQ7CiAKICAgICB0cnkgewotICAgICAgICB2YXIgZXNwcmltYVN5
bnRheFRyZWUgPSBXZWJJbnNwZWN0b3IuRXNwcmltYS5wYXJzZShzb3VyY2VUZXh0LCB7cmFuZ2U6
IHRydWV9KTsKKyAgICAgICAgdmFyIGVzcHJpbWFTeW50YXhUcmVlID0gZXNwcmltYS5wYXJzZShz
b3VyY2VUZXh0LCB7cmFuZ2U6IHRydWV9KTsKICAgICAgICAgdGhpcy5fc3ludGF4VHJlZSA9IHRo
aXMuX2NyZWF0ZUludGVybmFsU3ludGF4VHJlZShlc3ByaW1hU3ludGF4VHJlZSk7CiAgICAgICAg
IHRoaXMuX3BhcnNlZFN1Y2Nlc3NmdWxseSA9IHRydWU7CiAgICAgfSBjYXRjaCAoZXJyb3IpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241324</attachid>
            <date>2014-11-10 18:04:58 -0800</date>
            <delta_ts>2014-11-10 18:06:10 -0800</delta_ts>
            <desc>[PATCH] Correct esprima version</desc>
            <filename>esprima.js</filename>
            <type>text/plain</type>
            <size>122126</size>
            <attacher name="Jonathan Wells">jonowells</attacher>
            
              <data encoding="base64">LyoKICBDb3B5cmlnaHQgKEMpIDIwMTMgQXJpeWEgSGlkYXlhdCA8YXJpeWEuaGlkYXlhdEBnbWFp
bC5jb20+CiAgQ29weXJpZ2h0IChDKSAyMDEzIFRoYWRkZWUgVHlsIDx0aGFkZGVlLnR5bEBnbWFp
bC5jb20+CiAgQ29weXJpZ2h0IChDKSAyMDEzIE1hdGhpYXMgQnluZW5zIDxtYXRoaWFzQHFpd2ku
YmU+CiAgQ29weXJpZ2h0IChDKSAyMDEyIEFyaXlhIEhpZGF5YXQgPGFyaXlhLmhpZGF5YXRAZ21h
aWwuY29tPgogIENvcHlyaWdodCAoQykgMjAxMiBNYXRoaWFzIEJ5bmVucyA8bWF0aGlhc0BxaXdp
LmJlPgogIENvcHlyaWdodCAoQykgMjAxMiBKb29zdC1XaW0gQm9la2VzdGVpam4gPGpvb3N0LXdp
bUBib2VrZXN0ZWlqbi5ubD4KICBDb3B5cmlnaHQgKEMpIDIwMTIgS3JpcyBLb3dhbCA8a3Jpcy5r
b3dhbEBjaXhhci5jb20+CiAgQ29weXJpZ2h0IChDKSAyMDEyIFl1c3VrZSBTdXp1a2kgPHV0YXRh
bmUudGVhQGdtYWlsLmNvbT4KICBDb3B5cmlnaHQgKEMpIDIwMTIgQXJwYWQgQm9yc29zIDxhcnBh
ZC5ib3Jzb3NAZ29vZ2xlbWFpbC5jb20+CiAgQ29weXJpZ2h0IChDKSAyMDExIEFyaXlhIEhpZGF5
YXQgPGFyaXlhLmhpZGF5YXRAZ21haWwuY29tPgoKICBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
IG1ldDoKCiAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CiAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKICAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQogICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgoKICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIKICBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCiAgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKICBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgPENPUFlSSUdIVCBIT0xERVI+IEJFIExJQUJMRSBGT1IgQU5ZCiAgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMKICAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CiAgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECiAgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKICAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKICBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgoqLwoKLypqc2xpbnQgYml0
d2lzZTp0cnVlIHBsdXNwbHVzOnRydWUgKi8KLypnbG9iYWwgZXNwcmltYTp0cnVlLCBkZWZpbmU6
dHJ1ZSwgZXhwb3J0czp0cnVlLCB3aW5kb3c6IHRydWUsCnRocm93RXJyb3JUb2xlcmFudDogdHJ1
ZSwKdGhyb3dFcnJvcjogdHJ1ZSwgZ2VuZXJhdGVTdGF0ZW1lbnQ6IHRydWUsIHBlZWs6IHRydWUs
CnBhcnNlQXNzaWdubWVudEV4cHJlc3Npb246IHRydWUsIHBhcnNlQmxvY2s6IHRydWUsIHBhcnNl
RXhwcmVzc2lvbjogdHJ1ZSwKcGFyc2VGdW5jdGlvbkRlY2xhcmF0aW9uOiB0cnVlLCBwYXJzZUZ1
bmN0aW9uRXhwcmVzc2lvbjogdHJ1ZSwKcGFyc2VGdW5jdGlvblNvdXJjZUVsZW1lbnRzOiB0cnVl
LCBwYXJzZVZhcmlhYmxlSWRlbnRpZmllcjogdHJ1ZSwKcGFyc2VMZWZ0SGFuZFNpZGVFeHByZXNz
aW9uOiB0cnVlLApwYXJzZVVuYXJ5RXhwcmVzc2lvbjogdHJ1ZSwKcGFyc2VTdGF0ZW1lbnQ6IHRy
dWUsIHBhcnNlU291cmNlRWxlbWVudDogdHJ1ZSAqLwoKKGZ1bmN0aW9uIChyb290LCBmYWN0b3J5
KSB7CiAgICAndXNlIHN0cmljdCc7CgogICAgLy8gVW5pdmVyc2FsIE1vZHVsZSBEZWZpbml0aW9u
IChVTUQpIHRvIHN1cHBvcnQgQU1ELCBDb21tb25KUy9Ob2RlLmpzLAogICAgLy8gUmhpbm8sIGFu
ZCBwbGFpbiBicm93c2VyIGxvYWRpbmcuCgogICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8K
ICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQpIHsKICAg
ICAgICBkZWZpbmUoWydleHBvcnRzJ10sIGZhY3RvcnkpOwogICAgfSBlbHNlIGlmICh0eXBlb2Yg
ZXhwb3J0cyAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICBmYWN0b3J5KGV4cG9ydHMpOwogICAg
fSBlbHNlIHsKICAgICAgICBmYWN0b3J5KChyb290LmVzcHJpbWEgPSB7fSkpOwogICAgfQp9KHRo
aXMsIGZ1bmN0aW9uIChleHBvcnRzKSB7CiAgICAndXNlIHN0cmljdCc7CgogICAgdmFyIFRva2Vu
LAogICAgICAgIFRva2VuTmFtZSwKICAgICAgICBGbkV4cHJUb2tlbnMsCiAgICAgICAgU3ludGF4
LAogICAgICAgIFByb3BlcnR5S2luZCwKICAgICAgICBNZXNzYWdlcywKICAgICAgICBSZWdleCwK
ICAgICAgICBTeW50YXhUcmVlRGVsZWdhdGUsCiAgICAgICAgc291cmNlLAogICAgICAgIHN0cmlj
dCwKICAgICAgICBpbmRleCwKICAgICAgICBsaW5lTnVtYmVyLAogICAgICAgIGxpbmVTdGFydCwK
ICAgICAgICBsZW5ndGgsCiAgICAgICAgZGVsZWdhdGUsCiAgICAgICAgbG9va2FoZWFkLAogICAg
ICAgIHN0YXRlLAogICAgICAgIGV4dHJhOwoKICAgIFRva2VuID0gewogICAgICAgIEJvb2xlYW5M
aXRlcmFsOiAxLAogICAgICAgIEVPRjogMiwKICAgICAgICBJZGVudGlmaWVyOiAzLAogICAgICAg
IEtleXdvcmQ6IDQsCiAgICAgICAgTnVsbExpdGVyYWw6IDUsCiAgICAgICAgTnVtZXJpY0xpdGVy
YWw6IDYsCiAgICAgICAgUHVuY3R1YXRvcjogNywKICAgICAgICBTdHJpbmdMaXRlcmFsOiA4LAog
ICAgICAgIFJlZ3VsYXJFeHByZXNzaW9uOiA5CiAgICB9OwoKICAgIFRva2VuTmFtZSA9IHt9Owog
ICAgVG9rZW5OYW1lW1Rva2VuLkJvb2xlYW5MaXRlcmFsXSA9ICdCb29sZWFuJzsKICAgIFRva2Vu
TmFtZVtUb2tlbi5FT0ZdID0gJzxlbmQ+JzsKICAgIFRva2VuTmFtZVtUb2tlbi5JZGVudGlmaWVy
XSA9ICdJZGVudGlmaWVyJzsKICAgIFRva2VuTmFtZVtUb2tlbi5LZXl3b3JkXSA9ICdLZXl3b3Jk
JzsKICAgIFRva2VuTmFtZVtUb2tlbi5OdWxsTGl0ZXJhbF0gPSAnTnVsbCc7CiAgICBUb2tlbk5h
bWVbVG9rZW4uTnVtZXJpY0xpdGVyYWxdID0gJ051bWVyaWMnOwogICAgVG9rZW5OYW1lW1Rva2Vu
LlB1bmN0dWF0b3JdID0gJ1B1bmN0dWF0b3InOwogICAgVG9rZW5OYW1lW1Rva2VuLlN0cmluZ0xp
dGVyYWxdID0gJ1N0cmluZyc7CiAgICBUb2tlbk5hbWVbVG9rZW4uUmVndWxhckV4cHJlc3Npb25d
ID0gJ1JlZ3VsYXJFeHByZXNzaW9uJzsKCiAgICAvLyBBIGZ1bmN0aW9uIGZvbGxvd2luZyBvbmUg
b2YgdGhvc2UgdG9rZW5zIGlzIGFuIGV4cHJlc3Npb24uCiAgICBGbkV4cHJUb2tlbnMgPSBbJygn
LCAneycsICdbJywgJ2luJywgJ3R5cGVvZicsICdpbnN0YW5jZW9mJywgJ25ldycsCiAgICAgICAg
ICAgICAgICAgICAgJ3JldHVybicsICdjYXNlJywgJ2RlbGV0ZScsICd0aHJvdycsICd2b2lkJywK
ICAgICAgICAgICAgICAgICAgICAvLyBhc3NpZ25tZW50IG9wZXJhdG9ycwogICAgICAgICAgICAg
ICAgICAgICc9JywgJys9JywgJy09JywgJyo9JywgJy89JywgJyU9JywgJzw8PScsICc+Pj0nLCAn
Pj4+PScsCiAgICAgICAgICAgICAgICAgICAgJyY9JywgJ3w9JywgJ149JywgJywnLAogICAgICAg
ICAgICAgICAgICAgIC8vIGJpbmFyeS91bmFyeSBvcGVyYXRvcnMKICAgICAgICAgICAgICAgICAg
ICAnKycsICctJywgJyonLCAnLycsICclJywgJysrJywgJy0tJywgJzw8JywgJz4+JywgJz4+Pics
ICcmJywKICAgICAgICAgICAgICAgICAgICAnfCcsICdeJywgJyEnLCAnficsICcmJicsICd8fCcs
ICc/JywgJzonLCAnPT09JywgJz09JywgJz49JywKICAgICAgICAgICAgICAgICAgICAnPD0nLCAn
PCcsICc+JywgJyE9JywgJyE9PSddOwoKICAgIFN5bnRheCA9IHsKICAgICAgICBBc3NpZ25tZW50
RXhwcmVzc2lvbjogJ0Fzc2lnbm1lbnRFeHByZXNzaW9uJywKICAgICAgICBBcnJheUV4cHJlc3Np
b246ICdBcnJheUV4cHJlc3Npb24nLAogICAgICAgIEJsb2NrU3RhdGVtZW50OiAnQmxvY2tTdGF0
ZW1lbnQnLAogICAgICAgIEJpbmFyeUV4cHJlc3Npb246ICdCaW5hcnlFeHByZXNzaW9uJywKICAg
ICAgICBCcmVha1N0YXRlbWVudDogJ0JyZWFrU3RhdGVtZW50JywKICAgICAgICBDYWxsRXhwcmVz
c2lvbjogJ0NhbGxFeHByZXNzaW9uJywKICAgICAgICBDYXRjaENsYXVzZTogJ0NhdGNoQ2xhdXNl
JywKICAgICAgICBDb25kaXRpb25hbEV4cHJlc3Npb246ICdDb25kaXRpb25hbEV4cHJlc3Npb24n
LAogICAgICAgIENvbnRpbnVlU3RhdGVtZW50OiAnQ29udGludWVTdGF0ZW1lbnQnLAogICAgICAg
IERvV2hpbGVTdGF0ZW1lbnQ6ICdEb1doaWxlU3RhdGVtZW50JywKICAgICAgICBEZWJ1Z2dlclN0
YXRlbWVudDogJ0RlYnVnZ2VyU3RhdGVtZW50JywKICAgICAgICBFbXB0eVN0YXRlbWVudDogJ0Vt
cHR5U3RhdGVtZW50JywKICAgICAgICBFeHByZXNzaW9uU3RhdGVtZW50OiAnRXhwcmVzc2lvblN0
YXRlbWVudCcsCiAgICAgICAgRm9yU3RhdGVtZW50OiAnRm9yU3RhdGVtZW50JywKICAgICAgICBG
b3JJblN0YXRlbWVudDogJ0ZvckluU3RhdGVtZW50JywKICAgICAgICBGdW5jdGlvbkRlY2xhcmF0
aW9uOiAnRnVuY3Rpb25EZWNsYXJhdGlvbicsCiAgICAgICAgRnVuY3Rpb25FeHByZXNzaW9uOiAn
RnVuY3Rpb25FeHByZXNzaW9uJywKICAgICAgICBJZGVudGlmaWVyOiAnSWRlbnRpZmllcicsCiAg
ICAgICAgSWZTdGF0ZW1lbnQ6ICdJZlN0YXRlbWVudCcsCiAgICAgICAgTGl0ZXJhbDogJ0xpdGVy
YWwnLAogICAgICAgIExhYmVsZWRTdGF0ZW1lbnQ6ICdMYWJlbGVkU3RhdGVtZW50JywKICAgICAg
ICBMb2dpY2FsRXhwcmVzc2lvbjogJ0xvZ2ljYWxFeHByZXNzaW9uJywKICAgICAgICBNZW1iZXJF
eHByZXNzaW9uOiAnTWVtYmVyRXhwcmVzc2lvbicsCiAgICAgICAgTmV3RXhwcmVzc2lvbjogJ05l
d0V4cHJlc3Npb24nLAogICAgICAgIE9iamVjdEV4cHJlc3Npb246ICdPYmplY3RFeHByZXNzaW9u
JywKICAgICAgICBQcm9ncmFtOiAnUHJvZ3JhbScsCiAgICAgICAgUHJvcGVydHk6ICdQcm9wZXJ0
eScsCiAgICAgICAgUmV0dXJuU3RhdGVtZW50OiAnUmV0dXJuU3RhdGVtZW50JywKICAgICAgICBT
ZXF1ZW5jZUV4cHJlc3Npb246ICdTZXF1ZW5jZUV4cHJlc3Npb24nLAogICAgICAgIFN3aXRjaFN0
YXRlbWVudDogJ1N3aXRjaFN0YXRlbWVudCcsCiAgICAgICAgU3dpdGNoQ2FzZTogJ1N3aXRjaENh
c2UnLAogICAgICAgIFRoaXNFeHByZXNzaW9uOiAnVGhpc0V4cHJlc3Npb24nLAogICAgICAgIFRo
cm93U3RhdGVtZW50OiAnVGhyb3dTdGF0ZW1lbnQnLAogICAgICAgIFRyeVN0YXRlbWVudDogJ1Ry
eVN0YXRlbWVudCcsCiAgICAgICAgVW5hcnlFeHByZXNzaW9uOiAnVW5hcnlFeHByZXNzaW9uJywK
ICAgICAgICBVcGRhdGVFeHByZXNzaW9uOiAnVXBkYXRlRXhwcmVzc2lvbicsCiAgICAgICAgVmFy
aWFibGVEZWNsYXJhdGlvbjogJ1ZhcmlhYmxlRGVjbGFyYXRpb24nLAogICAgICAgIFZhcmlhYmxl
RGVjbGFyYXRvcjogJ1ZhcmlhYmxlRGVjbGFyYXRvcicsCiAgICAgICAgV2hpbGVTdGF0ZW1lbnQ6
ICdXaGlsZVN0YXRlbWVudCcsCiAgICAgICAgV2l0aFN0YXRlbWVudDogJ1dpdGhTdGF0ZW1lbnQn
CiAgICB9OwoKICAgIFByb3BlcnR5S2luZCA9IHsKICAgICAgICBEYXRhOiAxLAogICAgICAgIEdl
dDogMiwKICAgICAgICBTZXQ6IDQKICAgIH07CgogICAgLy8gRXJyb3IgbWVzc2FnZXMgc2hvdWxk
IGJlIGlkZW50aWNhbCB0byBWOC4KICAgIE1lc3NhZ2VzID0gewogICAgICAgIFVuZXhwZWN0ZWRU
b2tlbjogICdVbmV4cGVjdGVkIHRva2VuICUwJywKICAgICAgICBVbmV4cGVjdGVkTnVtYmVyOiAg
J1VuZXhwZWN0ZWQgbnVtYmVyJywKICAgICAgICBVbmV4cGVjdGVkU3RyaW5nOiAgJ1VuZXhwZWN0
ZWQgc3RyaW5nJywKICAgICAgICBVbmV4cGVjdGVkSWRlbnRpZmllcjogICdVbmV4cGVjdGVkIGlk
ZW50aWZpZXInLAogICAgICAgIFVuZXhwZWN0ZWRSZXNlcnZlZDogICdVbmV4cGVjdGVkIHJlc2Vy
dmVkIHdvcmQnLAogICAgICAgIFVuZXhwZWN0ZWRFT1M6ICAnVW5leHBlY3RlZCBlbmQgb2YgaW5w
dXQnLAogICAgICAgIE5ld2xpbmVBZnRlclRocm93OiAgJ0lsbGVnYWwgbmV3bGluZSBhZnRlciB0
aHJvdycsCiAgICAgICAgSW52YWxpZFJlZ0V4cDogJ0ludmFsaWQgcmVndWxhciBleHByZXNzaW9u
JywKICAgICAgICBVbnRlcm1pbmF0ZWRSZWdFeHA6ICAnSW52YWxpZCByZWd1bGFyIGV4cHJlc3Np
b246IG1pc3NpbmcgLycsCiAgICAgICAgSW52YWxpZExIU0luQXNzaWdubWVudDogICdJbnZhbGlk
IGxlZnQtaGFuZCBzaWRlIGluIGFzc2lnbm1lbnQnLAogICAgICAgIEludmFsaWRMSFNJbkZvcklu
OiAgJ0ludmFsaWQgbGVmdC1oYW5kIHNpZGUgaW4gZm9yLWluJywKICAgICAgICBNdWx0aXBsZURl
ZmF1bHRzSW5Td2l0Y2g6ICdNb3JlIHRoYW4gb25lIGRlZmF1bHQgY2xhdXNlIGluIHN3aXRjaCBz
dGF0ZW1lbnQnLAogICAgICAgIE5vQ2F0Y2hPckZpbmFsbHk6ICAnTWlzc2luZyBjYXRjaCBvciBm
aW5hbGx5IGFmdGVyIHRyeScsCiAgICAgICAgVW5rbm93bkxhYmVsOiAnVW5kZWZpbmVkIGxhYmVs
IFwnJTBcJycsCiAgICAgICAgUmVkZWNsYXJhdGlvbjogJyUwIFwnJTFcJyBoYXMgYWxyZWFkeSBi
ZWVuIGRlY2xhcmVkJywKICAgICAgICBJbGxlZ2FsQ29udGludWU6ICdJbGxlZ2FsIGNvbnRpbnVl
IHN0YXRlbWVudCcsCiAgICAgICAgSWxsZWdhbEJyZWFrOiAnSWxsZWdhbCBicmVhayBzdGF0ZW1l
bnQnLAogICAgICAgIElsbGVnYWxSZXR1cm46ICdJbGxlZ2FsIHJldHVybiBzdGF0ZW1lbnQnLAog
ICAgICAgIFN0cmljdE1vZGVXaXRoOiAgJ1N0cmljdCBtb2RlIGNvZGUgbWF5IG5vdCBpbmNsdWRl
IGEgd2l0aCBzdGF0ZW1lbnQnLAogICAgICAgIFN0cmljdENhdGNoVmFyaWFibGU6ICAnQ2F0Y2gg
dmFyaWFibGUgbWF5IG5vdCBiZSBldmFsIG9yIGFyZ3VtZW50cyBpbiBzdHJpY3QgbW9kZScsCiAg
ICAgICAgU3RyaWN0VmFyTmFtZTogICdWYXJpYWJsZSBuYW1lIG1heSBub3QgYmUgZXZhbCBvciBh
cmd1bWVudHMgaW4gc3RyaWN0IG1vZGUnLAogICAgICAgIFN0cmljdFBhcmFtTmFtZTogICdQYXJh
bWV0ZXIgbmFtZSBldmFsIG9yIGFyZ3VtZW50cyBpcyBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9k
ZScsCiAgICAgICAgU3RyaWN0UGFyYW1EdXBlOiAnU3RyaWN0IG1vZGUgZnVuY3Rpb24gbWF5IG5v
dCBoYXZlIGR1cGxpY2F0ZSBwYXJhbWV0ZXIgbmFtZXMnLAogICAgICAgIFN0cmljdEZ1bmN0aW9u
TmFtZTogICdGdW5jdGlvbiBuYW1lIG1heSBub3QgYmUgZXZhbCBvciBhcmd1bWVudHMgaW4gc3Ry
aWN0IG1vZGUnLAogICAgICAgIFN0cmljdE9jdGFsTGl0ZXJhbDogICdPY3RhbCBsaXRlcmFscyBh
cmUgbm90IGFsbG93ZWQgaW4gc3RyaWN0IG1vZGUuJywKICAgICAgICBTdHJpY3REZWxldGU6ICAn
RGVsZXRlIG9mIGFuIHVucXVhbGlmaWVkIGlkZW50aWZpZXIgaW4gc3RyaWN0IG1vZGUuJywKICAg
ICAgICBTdHJpY3REdXBsaWNhdGVQcm9wZXJ0eTogICdEdXBsaWNhdGUgZGF0YSBwcm9wZXJ0eSBp
biBvYmplY3QgbGl0ZXJhbCBub3QgYWxsb3dlZCBpbiBzdHJpY3QgbW9kZScsCiAgICAgICAgQWNj
ZXNzb3JEYXRhUHJvcGVydHk6ICAnT2JqZWN0IGxpdGVyYWwgbWF5IG5vdCBoYXZlIGRhdGEgYW5k
IGFjY2Vzc29yIHByb3BlcnR5IHdpdGggdGhlIHNhbWUgbmFtZScsCiAgICAgICAgQWNjZXNzb3JH
ZXRTZXQ6ICAnT2JqZWN0IGxpdGVyYWwgbWF5IG5vdCBoYXZlIG11bHRpcGxlIGdldC9zZXQgYWNj
ZXNzb3JzIHdpdGggdGhlIHNhbWUgbmFtZScsCiAgICAgICAgU3RyaWN0TEhTQXNzaWdubWVudDog
ICdBc3NpZ25tZW50IHRvIGV2YWwgb3IgYXJndW1lbnRzIGlzIG5vdCBhbGxvd2VkIGluIHN0cmlj
dCBtb2RlJywKICAgICAgICBTdHJpY3RMSFNQb3N0Zml4OiAgJ1Bvc3RmaXggaW5jcmVtZW50L2Rl
Y3JlbWVudCBtYXkgbm90IGhhdmUgZXZhbCBvciBhcmd1bWVudHMgb3BlcmFuZCBpbiBzdHJpY3Qg
bW9kZScsCiAgICAgICAgU3RyaWN0TEhTUHJlZml4OiAgJ1ByZWZpeCBpbmNyZW1lbnQvZGVjcmVt
ZW50IG1heSBub3QgaGF2ZSBldmFsIG9yIGFyZ3VtZW50cyBvcGVyYW5kIGluIHN0cmljdCBtb2Rl
JywKICAgICAgICBTdHJpY3RSZXNlcnZlZFdvcmQ6ICAnVXNlIG9mIGZ1dHVyZSByZXNlcnZlZCB3
b3JkIGluIHN0cmljdCBtb2RlJwogICAgfTsKCiAgICAvLyBTZWUgYWxzbyB0b29scy9nZW5lcmF0
ZS11bmljb2RlLXJlZ2V4LnB5LgogICAgUmVnZXggPSB7CiAgICAgICAgTm9uQXNjaWlJZGVudGlm
aWVyU3RhcnQ6IG5ldyBSZWdFeHAoJ1tceEFBXHhCNVx4QkFceEMwLVx4RDZceEQ4LVx4RjZceEY4
LVx1MDJDMVx1MDJDNi1cdTAyRDFcdTAyRTAtXHUwMkU0XHUwMkVDXHUwMkVFXHUwMzcwLVx1MDM3
NFx1MDM3Nlx1MDM3N1x1MDM3QS1cdTAzN0RcdTAzODZcdTAzODgtXHUwMzhBXHUwMzhDXHUwMzhF
LVx1MDNBMVx1MDNBMy1cdTAzRjVcdTAzRjctXHUwNDgxXHUwNDhBLVx1MDUyN1x1MDUzMS1cdTA1
NTZcdTA1NTlcdTA1NjEtXHUwNTg3XHUwNUQwLVx1MDVFQVx1MDVGMC1cdTA1RjJcdTA2MjAtXHUw
NjRBXHUwNjZFXHUwNjZGXHUwNjcxLVx1MDZEM1x1MDZENVx1MDZFNVx1MDZFNlx1MDZFRVx1MDZF
Rlx1MDZGQS1cdTA2RkNcdTA2RkZcdTA3MTBcdTA3MTItXHUwNzJGXHUwNzRELVx1MDdBNVx1MDdC
MVx1MDdDQS1cdTA3RUFcdTA3RjRcdTA3RjVcdTA3RkFcdTA4MDAtXHUwODE1XHUwODFBXHUwODI0
XHUwODI4XHUwODQwLVx1MDg1OFx1MDhBMFx1MDhBMi1cdTA4QUNcdTA5MDQtXHUwOTM5XHUwOTNE
XHUwOTUwXHUwOTU4LVx1MDk2MVx1MDk3MS1cdTA5NzdcdTA5NzktXHUwOTdGXHUwOTg1LVx1MDk4
Q1x1MDk4Rlx1MDk5MFx1MDk5My1cdTA5QThcdTA5QUEtXHUwOUIwXHUwOUIyXHUwOUI2LVx1MDlC
OVx1MDlCRFx1MDlDRVx1MDlEQ1x1MDlERFx1MDlERi1cdTA5RTFcdTA5RjBcdTA5RjFcdTBBMDUt
XHUwQTBBXHUwQTBGXHUwQTEwXHUwQTEzLVx1MEEyOFx1MEEyQS1cdTBBMzBcdTBBMzJcdTBBMzNc
dTBBMzVcdTBBMzZcdTBBMzhcdTBBMzlcdTBBNTktXHUwQTVDXHUwQTVFXHUwQTcyLVx1MEE3NFx1
MEE4NS1cdTBBOERcdTBBOEYtXHUwQTkxXHUwQTkzLVx1MEFBOFx1MEFBQS1cdTBBQjBcdTBBQjJc
dTBBQjNcdTBBQjUtXHUwQUI5XHUwQUJEXHUwQUQwXHUwQUUwXHUwQUUxXHUwQjA1LVx1MEIwQ1x1
MEIwRlx1MEIxMFx1MEIxMy1cdTBCMjhcdTBCMkEtXHUwQjMwXHUwQjMyXHUwQjMzXHUwQjM1LVx1
MEIzOVx1MEIzRFx1MEI1Q1x1MEI1RFx1MEI1Ri1cdTBCNjFcdTBCNzFcdTBCODNcdTBCODUtXHUw
QjhBXHUwQjhFLVx1MEI5MFx1MEI5Mi1cdTBCOTVcdTBCOTlcdTBCOUFcdTBCOUNcdTBCOUVcdTBC
OUZcdTBCQTNcdTBCQTRcdTBCQTgtXHUwQkFBXHUwQkFFLVx1MEJCOVx1MEJEMFx1MEMwNS1cdTBD
MENcdTBDMEUtXHUwQzEwXHUwQzEyLVx1MEMyOFx1MEMyQS1cdTBDMzNcdTBDMzUtXHUwQzM5XHUw
QzNEXHUwQzU4XHUwQzU5XHUwQzYwXHUwQzYxXHUwQzg1LVx1MEM4Q1x1MEM4RS1cdTBDOTBcdTBD
OTItXHUwQ0E4XHUwQ0FBLVx1MENCM1x1MENCNS1cdTBDQjlcdTBDQkRcdTBDREVcdTBDRTBcdTBD
RTFcdTBDRjFcdTBDRjJcdTBEMDUtXHUwRDBDXHUwRDBFLVx1MEQxMFx1MEQxMi1cdTBEM0FcdTBE
M0RcdTBENEVcdTBENjBcdTBENjFcdTBEN0EtXHUwRDdGXHUwRDg1LVx1MEQ5Nlx1MEQ5QS1cdTBE
QjFcdTBEQjMtXHUwREJCXHUwREJEXHUwREMwLVx1MERDNlx1MEUwMS1cdTBFMzBcdTBFMzJcdTBF
MzNcdTBFNDAtXHUwRTQ2XHUwRTgxXHUwRTgyXHUwRTg0XHUwRTg3XHUwRTg4XHUwRThBXHUwRThE
XHUwRTk0LVx1MEU5N1x1MEU5OS1cdTBFOUZcdTBFQTEtXHUwRUEzXHUwRUE1XHUwRUE3XHUwRUFB
XHUwRUFCXHUwRUFELVx1MEVCMFx1MEVCMlx1MEVCM1x1MEVCRFx1MEVDMC1cdTBFQzRcdTBFQzZc
dTBFREMtXHUwRURGXHUwRjAwXHUwRjQwLVx1MEY0N1x1MEY0OS1cdTBGNkNcdTBGODgtXHUwRjhD
XHUxMDAwLVx1MTAyQVx1MTAzRlx1MTA1MC1cdTEwNTVcdTEwNUEtXHUxMDVEXHUxMDYxXHUxMDY1
XHUxMDY2XHUxMDZFLVx1MTA3MFx1MTA3NS1cdTEwODFcdTEwOEVcdTEwQTAtXHUxMEM1XHUxMEM3
XHUxMENEXHUxMEQwLVx1MTBGQVx1MTBGQy1cdTEyNDhcdTEyNEEtXHUxMjREXHUxMjUwLVx1MTI1
Nlx1MTI1OFx1MTI1QS1cdTEyNURcdTEyNjAtXHUxMjg4XHUxMjhBLVx1MTI4RFx1MTI5MC1cdTEy
QjBcdTEyQjItXHUxMkI1XHUxMkI4LVx1MTJCRVx1MTJDMFx1MTJDMi1cdTEyQzVcdTEyQzgtXHUx
MkQ2XHUxMkQ4LVx1MTMxMFx1MTMxMi1cdTEzMTVcdTEzMTgtXHUxMzVBXHUxMzgwLVx1MTM4Rlx1
MTNBMC1cdTEzRjRcdTE0MDEtXHUxNjZDXHUxNjZGLVx1MTY3Rlx1MTY4MS1cdTE2OUFcdTE2QTAt
XHUxNkVBXHUxNkVFLVx1MTZGMFx1MTcwMC1cdTE3MENcdTE3MEUtXHUxNzExXHUxNzIwLVx1MTcz
MVx1MTc0MC1cdTE3NTFcdTE3NjAtXHUxNzZDXHUxNzZFLVx1MTc3MFx1MTc4MC1cdTE3QjNcdTE3
RDdcdTE3RENcdTE4MjAtXHUxODc3XHUxODgwLVx1MThBOFx1MThBQVx1MThCMC1cdTE4RjVcdTE5
MDAtXHUxOTFDXHUxOTUwLVx1MTk2RFx1MTk3MC1cdTE5NzRcdTE5ODAtXHUxOUFCXHUxOUMxLVx1
MTlDN1x1MUEwMC1cdTFBMTZcdTFBMjAtXHUxQTU0XHUxQUE3XHUxQjA1LVx1MUIzM1x1MUI0NS1c
dTFCNEJcdTFCODMtXHUxQkEwXHUxQkFFXHUxQkFGXHUxQkJBLVx1MUJFNVx1MUMwMC1cdTFDMjNc
dTFDNEQtXHUxQzRGXHUxQzVBLVx1MUM3RFx1MUNFOS1cdTFDRUNcdTFDRUUtXHUxQ0YxXHUxQ0Y1
XHUxQ0Y2XHUxRDAwLVx1MURCRlx1MUUwMC1cdTFGMTVcdTFGMTgtXHUxRjFEXHUxRjIwLVx1MUY0
NVx1MUY0OC1cdTFGNERcdTFGNTAtXHUxRjU3XHUxRjU5XHUxRjVCXHUxRjVEXHUxRjVGLVx1MUY3
RFx1MUY4MC1cdTFGQjRcdTFGQjYtXHUxRkJDXHUxRkJFXHUxRkMyLVx1MUZDNFx1MUZDNi1cdTFG
Q0NcdTFGRDAtXHUxRkQzXHUxRkQ2LVx1MUZEQlx1MUZFMC1cdTFGRUNcdTFGRjItXHUxRkY0XHUx
RkY2LVx1MUZGQ1x1MjA3MVx1MjA3Rlx1MjA5MC1cdTIwOUNcdTIxMDJcdTIxMDdcdTIxMEEtXHUy
MTEzXHUyMTE1XHUyMTE5LVx1MjExRFx1MjEyNFx1MjEyNlx1MjEyOFx1MjEyQS1cdTIxMkRcdTIx
MkYtXHUyMTM5XHUyMTNDLVx1MjEzRlx1MjE0NS1cdTIxNDlcdTIxNEVcdTIxNjAtXHUyMTg4XHUy
QzAwLVx1MkMyRVx1MkMzMC1cdTJDNUVcdTJDNjAtXHUyQ0U0XHUyQ0VCLVx1MkNFRVx1MkNGMlx1
MkNGM1x1MkQwMC1cdTJEMjVcdTJEMjdcdTJEMkRcdTJEMzAtXHUyRDY3XHUyRDZGXHUyRDgwLVx1
MkQ5Nlx1MkRBMC1cdTJEQTZcdTJEQTgtXHUyREFFXHUyREIwLVx1MkRCNlx1MkRCOC1cdTJEQkVc
dTJEQzAtXHUyREM2XHUyREM4LVx1MkRDRVx1MkREMC1cdTJERDZcdTJERDgtXHUyRERFXHUyRTJG
XHUzMDA1LVx1MzAwN1x1MzAyMS1cdTMwMjlcdTMwMzEtXHUzMDM1XHUzMDM4LVx1MzAzQ1x1MzA0
MS1cdTMwOTZcdTMwOUQtXHUzMDlGXHUzMEExLVx1MzBGQVx1MzBGQy1cdTMwRkZcdTMxMDUtXHUz
MTJEXHUzMTMxLVx1MzE4RVx1MzFBMC1cdTMxQkFcdTMxRjAtXHUzMUZGXHUzNDAwLVx1NERCNVx1
NEUwMC1cdTlGQ0NcdUEwMDAtXHVBNDhDXHVBNEQwLVx1QTRGRFx1QTUwMC1cdUE2MENcdUE2MTAt
XHVBNjFGXHVBNjJBXHVBNjJCXHVBNjQwLVx1QTY2RVx1QTY3Ri1cdUE2OTdcdUE2QTAtXHVBNkVG
XHVBNzE3LVx1QTcxRlx1QTcyMi1cdUE3ODhcdUE3OEItXHVBNzhFXHVBNzkwLVx1QTc5M1x1QTdB
MC1cdUE3QUFcdUE3RjgtXHVBODAxXHVBODAzLVx1QTgwNVx1QTgwNy1cdUE4MEFcdUE4MEMtXHVB
ODIyXHVBODQwLVx1QTg3M1x1QTg4Mi1cdUE4QjNcdUE4RjItXHVBOEY3XHVBOEZCXHVBOTBBLVx1
QTkyNVx1QTkzMC1cdUE5NDZcdUE5NjAtXHVBOTdDXHVBOTg0LVx1QTlCMlx1QTlDRlx1QUEwMC1c
dUFBMjhcdUFBNDAtXHVBQTQyXHVBQTQ0LVx1QUE0Qlx1QUE2MC1cdUFBNzZcdUFBN0FcdUFBODAt
XHVBQUFGXHVBQUIxXHVBQUI1XHVBQUI2XHVBQUI5LVx1QUFCRFx1QUFDMFx1QUFDMlx1QUFEQi1c
dUFBRERcdUFBRTAtXHVBQUVBXHVBQUYyLVx1QUFGNFx1QUIwMS1cdUFCMDZcdUFCMDktXHVBQjBF
XHVBQjExLVx1QUIxNlx1QUIyMC1cdUFCMjZcdUFCMjgtXHVBQjJFXHVBQkMwLVx1QUJFMlx1QUMw
MC1cdUQ3QTNcdUQ3QjAtXHVEN0M2XHVEN0NCLVx1RDdGQlx1RjkwMC1cdUZBNkRcdUZBNzAtXHVG
QUQ5XHVGQjAwLVx1RkIwNlx1RkIxMy1cdUZCMTdcdUZCMURcdUZCMUYtXHVGQjI4XHVGQjJBLVx1
RkIzNlx1RkIzOC1cdUZCM0NcdUZCM0VcdUZCNDBcdUZCNDFcdUZCNDNcdUZCNDRcdUZCNDYtXHVG
QkIxXHVGQkQzLVx1RkQzRFx1RkQ1MC1cdUZEOEZcdUZEOTItXHVGREM3XHVGREYwLVx1RkRGQlx1
RkU3MC1cdUZFNzRcdUZFNzYtXHVGRUZDXHVGRjIxLVx1RkYzQVx1RkY0MS1cdUZGNUFcdUZGNjYt
XHVGRkJFXHVGRkMyLVx1RkZDN1x1RkZDQS1cdUZGQ0ZcdUZGRDItXHVGRkQ3XHVGRkRBLVx1RkZE
Q10nKSwKICAgICAgICBOb25Bc2NpaUlkZW50aWZpZXJQYXJ0OiBuZXcgUmVnRXhwKCdbXHhBQVx4
QjVceEJBXHhDMC1ceEQ2XHhEOC1ceEY2XHhGOC1cdTAyQzFcdTAyQzYtXHUwMkQxXHUwMkUwLVx1
MDJFNFx1MDJFQ1x1MDJFRVx1MDMwMC1cdTAzNzRcdTAzNzZcdTAzNzdcdTAzN0EtXHUwMzdEXHUw
Mzg2XHUwMzg4LVx1MDM4QVx1MDM4Q1x1MDM4RS1cdTAzQTFcdTAzQTMtXHUwM0Y1XHUwM0Y3LVx1
MDQ4MVx1MDQ4My1cdTA0ODdcdTA0OEEtXHUwNTI3XHUwNTMxLVx1MDU1Nlx1MDU1OVx1MDU2MS1c
dTA1ODdcdTA1OTEtXHUwNUJEXHUwNUJGXHUwNUMxXHUwNUMyXHUwNUM0XHUwNUM1XHUwNUM3XHUw
NUQwLVx1MDVFQVx1MDVGMC1cdTA1RjJcdTA2MTAtXHUwNjFBXHUwNjIwLVx1MDY2OVx1MDY2RS1c
dTA2RDNcdTA2RDUtXHUwNkRDXHUwNkRGLVx1MDZFOFx1MDZFQS1cdTA2RkNcdTA2RkZcdTA3MTAt
XHUwNzRBXHUwNzRELVx1MDdCMVx1MDdDMC1cdTA3RjVcdTA3RkFcdTA4MDAtXHUwODJEXHUwODQw
LVx1MDg1Qlx1MDhBMFx1MDhBMi1cdTA4QUNcdTA4RTQtXHUwOEZFXHUwOTAwLVx1MDk2M1x1MDk2
Ni1cdTA5NkZcdTA5NzEtXHUwOTc3XHUwOTc5LVx1MDk3Rlx1MDk4MS1cdTA5ODNcdTA5ODUtXHUw
OThDXHUwOThGXHUwOTkwXHUwOTkzLVx1MDlBOFx1MDlBQS1cdTA5QjBcdTA5QjJcdTA5QjYtXHUw
OUI5XHUwOUJDLVx1MDlDNFx1MDlDN1x1MDlDOFx1MDlDQi1cdTA5Q0VcdTA5RDdcdTA5RENcdTA5
RERcdTA5REYtXHUwOUUzXHUwOUU2LVx1MDlGMVx1MEEwMS1cdTBBMDNcdTBBMDUtXHUwQTBBXHUw
QTBGXHUwQTEwXHUwQTEzLVx1MEEyOFx1MEEyQS1cdTBBMzBcdTBBMzJcdTBBMzNcdTBBMzVcdTBB
MzZcdTBBMzhcdTBBMzlcdTBBM0NcdTBBM0UtXHUwQTQyXHUwQTQ3XHUwQTQ4XHUwQTRCLVx1MEE0
RFx1MEE1MVx1MEE1OS1cdTBBNUNcdTBBNUVcdTBBNjYtXHUwQTc1XHUwQTgxLVx1MEE4M1x1MEE4
NS1cdTBBOERcdTBBOEYtXHUwQTkxXHUwQTkzLVx1MEFBOFx1MEFBQS1cdTBBQjBcdTBBQjJcdTBB
QjNcdTBBQjUtXHUwQUI5XHUwQUJDLVx1MEFDNVx1MEFDNy1cdTBBQzlcdTBBQ0ItXHUwQUNEXHUw
QUQwXHUwQUUwLVx1MEFFM1x1MEFFNi1cdTBBRUZcdTBCMDEtXHUwQjAzXHUwQjA1LVx1MEIwQ1x1
MEIwRlx1MEIxMFx1MEIxMy1cdTBCMjhcdTBCMkEtXHUwQjMwXHUwQjMyXHUwQjMzXHUwQjM1LVx1
MEIzOVx1MEIzQy1cdTBCNDRcdTBCNDdcdTBCNDhcdTBCNEItXHUwQjREXHUwQjU2XHUwQjU3XHUw
QjVDXHUwQjVEXHUwQjVGLVx1MEI2M1x1MEI2Ni1cdTBCNkZcdTBCNzFcdTBCODJcdTBCODNcdTBC
ODUtXHUwQjhBXHUwQjhFLVx1MEI5MFx1MEI5Mi1cdTBCOTVcdTBCOTlcdTBCOUFcdTBCOUNcdTBC
OUVcdTBCOUZcdTBCQTNcdTBCQTRcdTBCQTgtXHUwQkFBXHUwQkFFLVx1MEJCOVx1MEJCRS1cdTBC
QzJcdTBCQzYtXHUwQkM4XHUwQkNBLVx1MEJDRFx1MEJEMFx1MEJEN1x1MEJFNi1cdTBCRUZcdTBD
MDEtXHUwQzAzXHUwQzA1LVx1MEMwQ1x1MEMwRS1cdTBDMTBcdTBDMTItXHUwQzI4XHUwQzJBLVx1
MEMzM1x1MEMzNS1cdTBDMzlcdTBDM0QtXHUwQzQ0XHUwQzQ2LVx1MEM0OFx1MEM0QS1cdTBDNERc
dTBDNTVcdTBDNTZcdTBDNThcdTBDNTlcdTBDNjAtXHUwQzYzXHUwQzY2LVx1MEM2Rlx1MEM4Mlx1
MEM4M1x1MEM4NS1cdTBDOENcdTBDOEUtXHUwQzkwXHUwQzkyLVx1MENBOFx1MENBQS1cdTBDQjNc
dTBDQjUtXHUwQ0I5XHUwQ0JDLVx1MENDNFx1MENDNi1cdTBDQzhcdTBDQ0EtXHUwQ0NEXHUwQ0Q1
XHUwQ0Q2XHUwQ0RFXHUwQ0UwLVx1MENFM1x1MENFNi1cdTBDRUZcdTBDRjFcdTBDRjJcdTBEMDJc
dTBEMDNcdTBEMDUtXHUwRDBDXHUwRDBFLVx1MEQxMFx1MEQxMi1cdTBEM0FcdTBEM0QtXHUwRDQ0
XHUwRDQ2LVx1MEQ0OFx1MEQ0QS1cdTBENEVcdTBENTdcdTBENjAtXHUwRDYzXHUwRDY2LVx1MEQ2
Rlx1MEQ3QS1cdTBEN0ZcdTBEODJcdTBEODNcdTBEODUtXHUwRDk2XHUwRDlBLVx1MERCMVx1MERC
My1cdTBEQkJcdTBEQkRcdTBEQzAtXHUwREM2XHUwRENBXHUwRENGLVx1MERENFx1MERENlx1MERE
OC1cdTBEREZcdTBERjJcdTBERjNcdTBFMDEtXHUwRTNBXHUwRTQwLVx1MEU0RVx1MEU1MC1cdTBF
NTlcdTBFODFcdTBFODJcdTBFODRcdTBFODdcdTBFODhcdTBFOEFcdTBFOERcdTBFOTQtXHUwRTk3
XHUwRTk5LVx1MEU5Rlx1MEVBMS1cdTBFQTNcdTBFQTVcdTBFQTdcdTBFQUFcdTBFQUJcdTBFQUQt
XHUwRUI5XHUwRUJCLVx1MEVCRFx1MEVDMC1cdTBFQzRcdTBFQzZcdTBFQzgtXHUwRUNEXHUwRUQw
LVx1MEVEOVx1MEVEQy1cdTBFREZcdTBGMDBcdTBGMThcdTBGMTlcdTBGMjAtXHUwRjI5XHUwRjM1
XHUwRjM3XHUwRjM5XHUwRjNFLVx1MEY0N1x1MEY0OS1cdTBGNkNcdTBGNzEtXHUwRjg0XHUwRjg2
LVx1MEY5N1x1MEY5OS1cdTBGQkNcdTBGQzZcdTEwMDAtXHUxMDQ5XHUxMDUwLVx1MTA5RFx1MTBB
MC1cdTEwQzVcdTEwQzdcdTEwQ0RcdTEwRDAtXHUxMEZBXHUxMEZDLVx1MTI0OFx1MTI0QS1cdTEy
NERcdTEyNTAtXHUxMjU2XHUxMjU4XHUxMjVBLVx1MTI1RFx1MTI2MC1cdTEyODhcdTEyOEEtXHUx
MjhEXHUxMjkwLVx1MTJCMFx1MTJCMi1cdTEyQjVcdTEyQjgtXHUxMkJFXHUxMkMwXHUxMkMyLVx1
MTJDNVx1MTJDOC1cdTEyRDZcdTEyRDgtXHUxMzEwXHUxMzEyLVx1MTMxNVx1MTMxOC1cdTEzNUFc
dTEzNUQtXHUxMzVGXHUxMzgwLVx1MTM4Rlx1MTNBMC1cdTEzRjRcdTE0MDEtXHUxNjZDXHUxNjZG
LVx1MTY3Rlx1MTY4MS1cdTE2OUFcdTE2QTAtXHUxNkVBXHUxNkVFLVx1MTZGMFx1MTcwMC1cdTE3
MENcdTE3MEUtXHUxNzE0XHUxNzIwLVx1MTczNFx1MTc0MC1cdTE3NTNcdTE3NjAtXHUxNzZDXHUx
NzZFLVx1MTc3MFx1MTc3Mlx1MTc3M1x1MTc4MC1cdTE3RDNcdTE3RDdcdTE3RENcdTE3RERcdTE3
RTAtXHUxN0U5XHUxODBCLVx1MTgwRFx1MTgxMC1cdTE4MTlcdTE4MjAtXHUxODc3XHUxODgwLVx1
MThBQVx1MThCMC1cdTE4RjVcdTE5MDAtXHUxOTFDXHUxOTIwLVx1MTkyQlx1MTkzMC1cdTE5M0Jc
dTE5NDYtXHUxOTZEXHUxOTcwLVx1MTk3NFx1MTk4MC1cdTE5QUJcdTE5QjAtXHUxOUM5XHUxOUQw
LVx1MTlEOVx1MUEwMC1cdTFBMUJcdTFBMjAtXHUxQTVFXHUxQTYwLVx1MUE3Q1x1MUE3Ri1cdTFB
ODlcdTFBOTAtXHUxQTk5XHUxQUE3XHUxQjAwLVx1MUI0Qlx1MUI1MC1cdTFCNTlcdTFCNkItXHUx
QjczXHUxQjgwLVx1MUJGM1x1MUMwMC1cdTFDMzdcdTFDNDAtXHUxQzQ5XHUxQzRELVx1MUM3RFx1
MUNEMC1cdTFDRDJcdTFDRDQtXHUxQ0Y2XHUxRDAwLVx1MURFNlx1MURGQy1cdTFGMTVcdTFGMTgt
XHUxRjFEXHUxRjIwLVx1MUY0NVx1MUY0OC1cdTFGNERcdTFGNTAtXHUxRjU3XHUxRjU5XHUxRjVC
XHUxRjVEXHUxRjVGLVx1MUY3RFx1MUY4MC1cdTFGQjRcdTFGQjYtXHUxRkJDXHUxRkJFXHUxRkMy
LVx1MUZDNFx1MUZDNi1cdTFGQ0NcdTFGRDAtXHUxRkQzXHUxRkQ2LVx1MUZEQlx1MUZFMC1cdTFG
RUNcdTFGRjItXHUxRkY0XHUxRkY2LVx1MUZGQ1x1MjAwQ1x1MjAwRFx1MjAzRlx1MjA0MFx1MjA1
NFx1MjA3MVx1MjA3Rlx1MjA5MC1cdTIwOUNcdTIwRDAtXHUyMERDXHUyMEUxXHUyMEU1LVx1MjBG
MFx1MjEwMlx1MjEwN1x1MjEwQS1cdTIxMTNcdTIxMTVcdTIxMTktXHUyMTFEXHUyMTI0XHUyMTI2
XHUyMTI4XHUyMTJBLVx1MjEyRFx1MjEyRi1cdTIxMzlcdTIxM0MtXHUyMTNGXHUyMTQ1LVx1MjE0
OVx1MjE0RVx1MjE2MC1cdTIxODhcdTJDMDAtXHUyQzJFXHUyQzMwLVx1MkM1RVx1MkM2MC1cdTJD
RTRcdTJDRUItXHUyQ0YzXHUyRDAwLVx1MkQyNVx1MkQyN1x1MkQyRFx1MkQzMC1cdTJENjdcdTJE
NkZcdTJEN0YtXHUyRDk2XHUyREEwLVx1MkRBNlx1MkRBOC1cdTJEQUVcdTJEQjAtXHUyREI2XHUy
REI4LVx1MkRCRVx1MkRDMC1cdTJEQzZcdTJEQzgtXHUyRENFXHUyREQwLVx1MkRENlx1MkREOC1c
dTJEREVcdTJERTAtXHUyREZGXHUyRTJGXHUzMDA1LVx1MzAwN1x1MzAyMS1cdTMwMkZcdTMwMzEt
XHUzMDM1XHUzMDM4LVx1MzAzQ1x1MzA0MS1cdTMwOTZcdTMwOTlcdTMwOUFcdTMwOUQtXHUzMDlG
XHUzMEExLVx1MzBGQVx1MzBGQy1cdTMwRkZcdTMxMDUtXHUzMTJEXHUzMTMxLVx1MzE4RVx1MzFB
MC1cdTMxQkFcdTMxRjAtXHUzMUZGXHUzNDAwLVx1NERCNVx1NEUwMC1cdTlGQ0NcdUEwMDAtXHVB
NDhDXHVBNEQwLVx1QTRGRFx1QTUwMC1cdUE2MENcdUE2MTAtXHVBNjJCXHVBNjQwLVx1QTY2Rlx1
QTY3NC1cdUE2N0RcdUE2N0YtXHVBNjk3XHVBNjlGLVx1QTZGMVx1QTcxNy1cdUE3MUZcdUE3MjIt
XHVBNzg4XHVBNzhCLVx1QTc4RVx1QTc5MC1cdUE3OTNcdUE3QTAtXHVBN0FBXHVBN0Y4LVx1QTgy
N1x1QTg0MC1cdUE4NzNcdUE4ODAtXHVBOEM0XHVBOEQwLVx1QThEOVx1QThFMC1cdUE4RjdcdUE4
RkJcdUE5MDAtXHVBOTJEXHVBOTMwLVx1QTk1M1x1QTk2MC1cdUE5N0NcdUE5ODAtXHVBOUMwXHVB
OUNGLVx1QTlEOVx1QUEwMC1cdUFBMzZcdUFBNDAtXHVBQTREXHVBQTUwLVx1QUE1OVx1QUE2MC1c
dUFBNzZcdUFBN0FcdUFBN0JcdUFBODAtXHVBQUMyXHVBQURCLVx1QUFERFx1QUFFMC1cdUFBRUZc
dUFBRjItXHVBQUY2XHVBQjAxLVx1QUIwNlx1QUIwOS1cdUFCMEVcdUFCMTEtXHVBQjE2XHVBQjIw
LVx1QUIyNlx1QUIyOC1cdUFCMkVcdUFCQzAtXHVBQkVBXHVBQkVDXHVBQkVEXHVBQkYwLVx1QUJG
OVx1QUMwMC1cdUQ3QTNcdUQ3QjAtXHVEN0M2XHVEN0NCLVx1RDdGQlx1RjkwMC1cdUZBNkRcdUZB
NzAtXHVGQUQ5XHVGQjAwLVx1RkIwNlx1RkIxMy1cdUZCMTdcdUZCMUQtXHVGQjI4XHVGQjJBLVx1
RkIzNlx1RkIzOC1cdUZCM0NcdUZCM0VcdUZCNDBcdUZCNDFcdUZCNDNcdUZCNDRcdUZCNDYtXHVG
QkIxXHVGQkQzLVx1RkQzRFx1RkQ1MC1cdUZEOEZcdUZEOTItXHVGREM3XHVGREYwLVx1RkRGQlx1
RkUwMC1cdUZFMEZcdUZFMjAtXHVGRTI2XHVGRTMzXHVGRTM0XHVGRTRELVx1RkU0Rlx1RkU3MC1c
dUZFNzRcdUZFNzYtXHVGRUZDXHVGRjEwLVx1RkYxOVx1RkYyMS1cdUZGM0FcdUZGM0ZcdUZGNDEt
XHVGRjVBXHVGRjY2LVx1RkZCRVx1RkZDMi1cdUZGQzdcdUZGQ0EtXHVGRkNGXHVGRkQyLVx1RkZE
N1x1RkZEQS1cdUZGRENdJykKICAgIH07CgogICAgLy8gRW5zdXJlIHRoZSBjb25kaXRpb24gaXMg
dHJ1ZSwgb3RoZXJ3aXNlIHRocm93IGFuIGVycm9yLgogICAgLy8gVGhpcyBpcyBvbmx5IHRvIGhh
dmUgYSBiZXR0ZXIgY29udHJhY3Qgc2VtYW50aWMsIGkuZS4gYW5vdGhlciBzYWZldHkgbmV0CiAg
ICAvLyB0byBjYXRjaCBhIGxvZ2ljIGVycm9yLiBUaGUgY29uZGl0aW9uIHNoYWxsIGJlIGZ1bGZp
bGxlZCBpbiBub3JtYWwgY2FzZS4KICAgIC8vIERvIE5PVCB1c2UgdGhpcyB0byBlbmZvcmNlIGEg
Y2VydGFpbiBjb25kaXRpb24gb24gYW55IHVzZXIgaW5wdXQuCgogICAgZnVuY3Rpb24gYXNzZXJ0
KGNvbmRpdGlvbiwgbWVzc2FnZSkgewogICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqLwog
ICAgICAgIGlmICghY29uZGl0aW9uKSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignQVNT
RVJUOiAnICsgbWVzc2FnZSk7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIGlzRGVjaW1h
bERpZ2l0KGNoKSB7CiAgICAgICAgcmV0dXJuIChjaCA+PSA0OCAmJiBjaCA8PSA1Nyk7ICAgLy8g
MC4uOQogICAgfQoKICAgIGZ1bmN0aW9uIGlzSGV4RGlnaXQoY2gpIHsKICAgICAgICByZXR1cm4g
JzAxMjM0NTY3ODlhYmNkZWZBQkNERUYnLmluZGV4T2YoY2gpID49IDA7CiAgICB9CgogICAgZnVu
Y3Rpb24gaXNPY3RhbERpZ2l0KGNoKSB7CiAgICAgICAgcmV0dXJuICcwMTIzNDU2NycuaW5kZXhP
ZihjaCkgPj0gMDsKICAgIH0KCgogICAgLy8gNy4yIFdoaXRlIFNwYWNlCgogICAgZnVuY3Rpb24g
aXNXaGl0ZVNwYWNlKGNoKSB7CiAgICAgICAgcmV0dXJuIChjaCA9PT0gMHgyMCkgfHwgKGNoID09
PSAweDA5KSB8fCAoY2ggPT09IDB4MEIpIHx8IChjaCA9PT0gMHgwQykgfHwgKGNoID09PSAweEEw
KSB8fAogICAgICAgICAgICAoY2ggPj0gMHgxNjgwICYmIFsweDE2ODAsIDB4MTgwRSwgMHgyMDAw
LCAweDIwMDEsIDB4MjAwMiwgMHgyMDAzLCAweDIwMDQsIDB4MjAwNSwgMHgyMDA2LCAweDIwMDcs
IDB4MjAwOCwgMHgyMDA5LCAweDIwMEEsIDB4MjAyRiwgMHgyMDVGLCAweDMwMDAsIDB4RkVGRl0u
aW5kZXhPZihjaCkgPj0gMCk7CiAgICB9CgogICAgLy8gNy4zIExpbmUgVGVybWluYXRvcnMKCiAg
ICBmdW5jdGlvbiBpc0xpbmVUZXJtaW5hdG9yKGNoKSB7CiAgICAgICAgcmV0dXJuIChjaCA9PT0g
MHgwQSkgfHwgKGNoID09PSAweDBEKSB8fCAoY2ggPT09IDB4MjAyOCkgfHwgKGNoID09PSAweDIw
MjkpOwogICAgfQoKICAgIC8vIDcuNiBJZGVudGlmaWVyIE5hbWVzIGFuZCBJZGVudGlmaWVycwoK
ICAgIGZ1bmN0aW9uIGlzSWRlbnRpZmllclN0YXJ0KGNoKSB7CiAgICAgICAgcmV0dXJuIChjaCA9
PT0gMHgyNCkgfHwgKGNoID09PSAweDVGKSB8fCAgLy8gJCAoZG9sbGFyKSBhbmQgXyAodW5kZXJz
Y29yZSkKICAgICAgICAgICAgKGNoID49IDB4NDEgJiYgY2ggPD0gMHg1QSkgfHwgICAgICAgICAv
LyBBLi5aCiAgICAgICAgICAgIChjaCA+PSAweDYxICYmIGNoIDw9IDB4N0EpIHx8ICAgICAgICAg
Ly8gYS4uegogICAgICAgICAgICAoY2ggPT09IDB4NUMpIHx8ICAgICAgICAgICAgICAgICAgICAg
IC8vIFwgKGJhY2tzbGFzaCkKICAgICAgICAgICAgKChjaCA+PSAweDgwKSAmJiBSZWdleC5Ob25B
c2NpaUlkZW50aWZpZXJTdGFydC50ZXN0KFN0cmluZy5mcm9tQ2hhckNvZGUoY2gpKSk7CiAgICB9
CgogICAgZnVuY3Rpb24gaXNJZGVudGlmaWVyUGFydChjaCkgewogICAgICAgIHJldHVybiAoY2gg
PT09IDB4MjQpIHx8IChjaCA9PT0gMHg1RikgfHwgIC8vICQgKGRvbGxhcikgYW5kIF8gKHVuZGVy
c2NvcmUpCiAgICAgICAgICAgIChjaCA+PSAweDQxICYmIGNoIDw9IDB4NUEpIHx8ICAgICAgICAg
Ly8gQS4uWgogICAgICAgICAgICAoY2ggPj0gMHg2MSAmJiBjaCA8PSAweDdBKSB8fCAgICAgICAg
IC8vIGEuLnoKICAgICAgICAgICAgKGNoID49IDB4MzAgJiYgY2ggPD0gMHgzOSkgfHwgICAgICAg
ICAvLyAwLi45CiAgICAgICAgICAgIChjaCA9PT0gMHg1QykgfHwgICAgICAgICAgICAgICAgICAg
ICAgLy8gXCAoYmFja3NsYXNoKQogICAgICAgICAgICAoKGNoID49IDB4ODApICYmIFJlZ2V4Lk5v
bkFzY2lpSWRlbnRpZmllclBhcnQudGVzdChTdHJpbmcuZnJvbUNoYXJDb2RlKGNoKSkpOwogICAg
fQoKICAgIC8vIDcuNi4xLjIgRnV0dXJlIFJlc2VydmVkIFdvcmRzCgogICAgZnVuY3Rpb24gaXNG
dXR1cmVSZXNlcnZlZFdvcmQoaWQpIHsKICAgICAgICBzd2l0Y2ggKGlkKSB7CiAgICAgICAgY2Fz
ZSAnY2xhc3MnOgogICAgICAgIGNhc2UgJ2VudW0nOgogICAgICAgIGNhc2UgJ2V4cG9ydCc6CiAg
ICAgICAgY2FzZSAnZXh0ZW5kcyc6CiAgICAgICAgY2FzZSAnaW1wb3J0JzoKICAgICAgICBjYXNl
ICdzdXBlcic6CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIGRlZmF1bHQ6CiAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9CgogICAgZnVuY3Rpb24gaXNTdHJp
Y3RNb2RlUmVzZXJ2ZWRXb3JkKGlkKSB7CiAgICAgICAgc3dpdGNoIChpZCkgewogICAgICAgIGNh
c2UgJ2ltcGxlbWVudHMnOgogICAgICAgIGNhc2UgJ2ludGVyZmFjZSc6CiAgICAgICAgY2FzZSAn
cGFja2FnZSc6CiAgICAgICAgY2FzZSAncHJpdmF0ZSc6CiAgICAgICAgY2FzZSAncHJvdGVjdGVk
JzoKICAgICAgICBjYXNlICdwdWJsaWMnOgogICAgICAgIGNhc2UgJ3N0YXRpYyc6CiAgICAgICAg
Y2FzZSAneWllbGQnOgogICAgICAgIGNhc2UgJ2xldCc6CiAgICAgICAgICAgIHJldHVybiB0cnVl
OwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICB9CiAg
ICB9CgogICAgZnVuY3Rpb24gaXNSZXN0cmljdGVkV29yZChpZCkgewogICAgICAgIHJldHVybiBp
ZCA9PT0gJ2V2YWwnIHx8IGlkID09PSAnYXJndW1lbnRzJzsKICAgIH0KCiAgICAvLyA3LjYuMS4x
IEtleXdvcmRzCgogICAgZnVuY3Rpb24gaXNLZXl3b3JkKGlkKSB7CiAgICAgICAgaWYgKHN0cmlj
dCAmJiBpc1N0cmljdE1vZGVSZXNlcnZlZFdvcmQoaWQpKSB7CiAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgIH0KCiAgICAgICAgLy8gJ2NvbnN0JyBpcyBzcGVjaWFsaXplZCBhcyBLZXl3
b3JkIGluIFY4LgogICAgICAgIC8vICd5aWVsZCcgYW5kICdsZXQnIGFyZSBmb3IgY29tcGF0aWJs
aXR5IHdpdGggU3BpZGVyTW9ua2V5IGFuZCBFUy5uZXh0LgogICAgICAgIC8vIFNvbWUgb3RoZXJz
IGFyZSBmcm9tIGZ1dHVyZSByZXNlcnZlZCB3b3Jkcy4KCiAgICAgICAgc3dpdGNoIChpZC5sZW5n
dGgpIHsKICAgICAgICBjYXNlIDI6CiAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICdpZicpIHx8
IChpZCA9PT0gJ2luJykgfHwgKGlkID09PSAnZG8nKTsKICAgICAgICBjYXNlIDM6CiAgICAgICAg
ICAgIHJldHVybiAoaWQgPT09ICd2YXInKSB8fCAoaWQgPT09ICdmb3InKSB8fCAoaWQgPT09ICdu
ZXcnKSB8fAogICAgICAgICAgICAgICAgKGlkID09PSAndHJ5JykgfHwgKGlkID09PSAnbGV0Jyk7
CiAgICAgICAgY2FzZSA0OgogICAgICAgICAgICByZXR1cm4gKGlkID09PSAndGhpcycpIHx8IChp
ZCA9PT0gJ2Vsc2UnKSB8fCAoaWQgPT09ICdjYXNlJykgfHwKICAgICAgICAgICAgICAgIChpZCA9
PT0gJ3ZvaWQnKSB8fCAoaWQgPT09ICd3aXRoJykgfHwgKGlkID09PSAnZW51bScpOwogICAgICAg
IGNhc2UgNToKICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ3doaWxlJykgfHwgKGlkID09PSAn
YnJlYWsnKSB8fCAoaWQgPT09ICdjYXRjaCcpIHx8CiAgICAgICAgICAgICAgICAoaWQgPT09ICd0
aHJvdycpIHx8IChpZCA9PT0gJ2NvbnN0JykgfHwgKGlkID09PSAneWllbGQnKSB8fAogICAgICAg
ICAgICAgICAgKGlkID09PSAnY2xhc3MnKSB8fCAoaWQgPT09ICdzdXBlcicpOwogICAgICAgIGNh
c2UgNjoKICAgICAgICAgICAgcmV0dXJuIChpZCA9PT0gJ3JldHVybicpIHx8IChpZCA9PT0gJ3R5
cGVvZicpIHx8IChpZCA9PT0gJ2RlbGV0ZScpIHx8CiAgICAgICAgICAgICAgICAoaWQgPT09ICdz
d2l0Y2gnKSB8fCAoaWQgPT09ICdleHBvcnQnKSB8fCAoaWQgPT09ICdpbXBvcnQnKTsKICAgICAg
ICBjYXNlIDc6CiAgICAgICAgICAgIHJldHVybiAoaWQgPT09ICdkZWZhdWx0JykgfHwgKGlkID09
PSAnZmluYWxseScpIHx8IChpZCA9PT0gJ2V4dGVuZHMnKTsKICAgICAgICBjYXNlIDg6CiAgICAg
ICAgICAgIHJldHVybiAoaWQgPT09ICdmdW5jdGlvbicpIHx8IChpZCA9PT0gJ2NvbnRpbnVlJykg
fHwgKGlkID09PSAnZGVidWdnZXInKTsKICAgICAgICBjYXNlIDEwOgogICAgICAgICAgICByZXR1
cm4gKGlkID09PSAnaW5zdGFuY2VvZicpOwogICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICAgICB9CiAgICB9CgogICAgLy8gNy40IENvbW1lbnRzCgogICAgZnVu
Y3Rpb24gYWRkQ29tbWVudCh0eXBlLCB2YWx1ZSwgc3RhcnQsIGVuZCwgbG9jKSB7CiAgICAgICAg
dmFyIGNvbW1lbnQsIGF0dGFjaGVyOwoKICAgICAgICBhc3NlcnQodHlwZW9mIHN0YXJ0ID09PSAn
bnVtYmVyJywgJ0NvbW1lbnQgbXVzdCBoYXZlIHZhbGlkIHBvc2l0aW9uJyk7CgogICAgICAgIC8v
IEJlY2F1c2UgdGhlIHdheSB0aGUgYWN0dWFsIHRva2VuIGlzIHNjYW5uZWQsIG9mdGVuIHRoZSBj
b21tZW50cwogICAgICAgIC8vIChpZiBhbnkpIGFyZSBza2lwcGVkIHR3aWNlIGR1cmluZyB0aGUg
bGV4aWNhbCBhbmFseXNpcy4KICAgICAgICAvLyBUaHVzLCB3ZSBuZWVkIHRvIHNraXAgYWRkaW5n
IGEgY29tbWVudCBpZiB0aGUgY29tbWVudCBhcnJheSBhbHJlYWR5CiAgICAgICAgLy8gaGFuZGxl
ZCBpdC4KICAgICAgICBpZiAoc3RhdGUubGFzdENvbW1lbnRTdGFydCA+PSBzdGFydCkgewogICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHN0YXRlLmxhc3RDb21tZW50U3RhcnQg
PSBzdGFydDsKCiAgICAgICAgY29tbWVudCA9IHsKICAgICAgICAgICAgdHlwZTogdHlwZSwKICAg
ICAgICAgICAgdmFsdWU6IHZhbHVlCiAgICAgICAgfTsKICAgICAgICBpZiAoZXh0cmEucmFuZ2Up
IHsKICAgICAgICAgICAgY29tbWVudC5yYW5nZSA9IFtzdGFydCwgZW5kXTsKICAgICAgICB9CiAg
ICAgICAgaWYgKGV4dHJhLmxvYykgewogICAgICAgICAgICBjb21tZW50LmxvYyA9IGxvYzsKICAg
ICAgICB9CiAgICAgICAgZXh0cmEuY29tbWVudHMucHVzaChjb21tZW50KTsKICAgICAgICBpZiAo
ZXh0cmEuYXR0YWNoQ29tbWVudCkgewogICAgICAgICAgICBleHRyYS5sZWFkaW5nQ29tbWVudHMu
cHVzaChjb21tZW50KTsKICAgICAgICAgICAgZXh0cmEudHJhaWxpbmdDb21tZW50cy5wdXNoKGNv
bW1lbnQpOwogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBza2lwU2luZ2xlTGluZUNvbW1l
bnQob2Zmc2V0KSB7CiAgICAgICAgdmFyIHN0YXJ0LCBsb2MsIGNoLCBjb21tZW50OwoKICAgICAg
ICBzdGFydCA9IGluZGV4IC0gb2Zmc2V0OwogICAgICAgIGxvYyA9IHsKICAgICAgICAgICAgc3Rh
cnQ6IHsKICAgICAgICAgICAgICAgIGxpbmU6IGxpbmVOdW1iZXIsCiAgICAgICAgICAgICAgICBj
b2x1bW46IGluZGV4IC0gbGluZVN0YXJ0IC0gb2Zmc2V0CiAgICAgICAgICAgIH0KICAgICAgICB9
OwoKICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKICAgICAgICAgICAgY2ggPSBzb3Vy
Y2UuY2hhckNvZGVBdChpbmRleCk7CiAgICAgICAgICAgICsraW5kZXg7CiAgICAgICAgICAgIGlm
IChpc0xpbmVUZXJtaW5hdG9yKGNoKSkgewogICAgICAgICAgICAgICAgaWYgKGV4dHJhLmNvbW1l
bnRzKSB7CiAgICAgICAgICAgICAgICAgICAgY29tbWVudCA9IHNvdXJjZS5zbGljZShzdGFydCAr
IG9mZnNldCwgaW5kZXggLSAxKTsKICAgICAgICAgICAgICAgICAgICBsb2MuZW5kID0gewogICAg
ICAgICAgICAgICAgICAgICAgICBsaW5lOiBsaW5lTnVtYmVyLAogICAgICAgICAgICAgICAgICAg
ICAgICBjb2x1bW46IGluZGV4IC0gbGluZVN0YXJ0IC0gMQogICAgICAgICAgICAgICAgICAgIH07
CiAgICAgICAgICAgICAgICAgICAgYWRkQ29tbWVudCgnTGluZScsIGNvbW1lbnQsIHN0YXJ0LCBp
bmRleCAtIDEsIGxvYyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoY2gg
PT09IDEzICYmIHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSA9PT0gMTApIHsKICAgICAgICAgICAg
ICAgICAgICArK2luZGV4OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKytsaW5l
TnVtYmVyOwogICAgICAgICAgICAgICAgbGluZVN0YXJ0ID0gaW5kZXg7CiAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChleHRyYS5jb21t
ZW50cykgewogICAgICAgICAgICBjb21tZW50ID0gc291cmNlLnNsaWNlKHN0YXJ0ICsgb2Zmc2V0
LCBpbmRleCk7CiAgICAgICAgICAgIGxvYy5lbmQgPSB7CiAgICAgICAgICAgICAgICBsaW5lOiBs
aW5lTnVtYmVyLAogICAgICAgICAgICAgICAgY29sdW1uOiBpbmRleCAtIGxpbmVTdGFydAogICAg
ICAgICAgICB9OwogICAgICAgICAgICBhZGRDb21tZW50KCdMaW5lJywgY29tbWVudCwgc3RhcnQs
IGluZGV4LCBsb2MpOwogICAgICAgIH0KICAgIH0KCiAgICBmdW5jdGlvbiBza2lwTXVsdGlMaW5l
Q29tbWVudCgpIHsKICAgICAgICB2YXIgc3RhcnQsIGxvYywgY2gsIGNvbW1lbnQ7CgogICAgICAg
IGlmIChleHRyYS5jb21tZW50cykgewogICAgICAgICAgICBzdGFydCA9IGluZGV4IC0gMjsKICAg
ICAgICAgICAgbG9jID0gewogICAgICAgICAgICAgICAgc3RhcnQ6IHsKICAgICAgICAgICAgICAg
ICAgICBsaW5lOiBsaW5lTnVtYmVyLAogICAgICAgICAgICAgICAgICAgIGNvbHVtbjogaW5kZXgg
LSBsaW5lU3RhcnQgLSAyCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH07CiAgICAgICAg
fQoKICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKICAgICAgICAgICAgY2ggPSBzb3Vy
Y2UuY2hhckNvZGVBdChpbmRleCk7CiAgICAgICAgICAgIGlmIChpc0xpbmVUZXJtaW5hdG9yKGNo
KSkgewogICAgICAgICAgICAgICAgaWYgKGNoID09PSAweDBEICYmIHNvdXJjZS5jaGFyQ29kZUF0
KGluZGV4ICsgMSkgPT09IDB4MEEpIHsKICAgICAgICAgICAgICAgICAgICArK2luZGV4OwogICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKytsaW5lTnVtYmVyOwogICAgICAgICAgICAg
ICAgKytpbmRleDsKICAgICAgICAgICAgICAgIGxpbmVTdGFydCA9IGluZGV4OwogICAgICAgICAg
ICAgICAgaWYgKGluZGV4ID49IGxlbmd0aCkgewogICAgICAgICAgICAgICAgICAgIHRocm93RXJy
b3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTsKICAgICAgICAgICAg
ICAgIH0KICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PT0gMHgyQSkgewogICAgICAgICAgICAg
ICAgLy8gQmxvY2sgY29tbWVudCBlbmRzIHdpdGggJyovJy4KICAgICAgICAgICAgICAgIGlmIChz
b3VyY2UuY2hhckNvZGVBdChpbmRleCArIDEpID09PSAweDJGKSB7CiAgICAgICAgICAgICAgICAg
ICAgKytpbmRleDsKICAgICAgICAgICAgICAgICAgICArK2luZGV4OwogICAgICAgICAgICAgICAg
ICAgIGlmIChleHRyYS5jb21tZW50cykgewogICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50
ID0gc291cmNlLnNsaWNlKHN0YXJ0ICsgMiwgaW5kZXggLSAyKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgbG9jLmVuZCA9IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmU6IGxpbmVO
dW1iZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2x1bW46IGluZGV4IC0gbGluZVN0
YXJ0CiAgICAgICAgICAgICAgICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgICAgICAgIGFk
ZENvbW1lbnQoJ0Jsb2NrJywgY29tbWVudCwgc3RhcnQsIGluZGV4LCBsb2MpOwogICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICAgICArK2luZGV4OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgKytpbmRleDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgdGhyb3dFcnJv
cih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpOwogICAgfQoKICAgIGZ1
bmN0aW9uIHNraXBDb21tZW50KCkgewogICAgICAgIHZhciBjaCwgc3RhcnQ7CgogICAgICAgIHN0
YXJ0ID0gKGluZGV4ID09PSAwKTsKICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKICAg
ICAgICAgICAgY2ggPSBzb3VyY2UuY2hhckNvZGVBdChpbmRleCk7CgogICAgICAgICAgICBpZiAo
aXNXaGl0ZVNwYWNlKGNoKSkgewogICAgICAgICAgICAgICAgKytpbmRleDsKICAgICAgICAgICAg
fSBlbHNlIGlmIChpc0xpbmVUZXJtaW5hdG9yKGNoKSkgewogICAgICAgICAgICAgICAgKytpbmRl
eDsKICAgICAgICAgICAgICAgIGlmIChjaCA9PT0gMHgwRCAmJiBzb3VyY2UuY2hhckNvZGVBdChp
bmRleCkgPT09IDB4MEEpIHsKICAgICAgICAgICAgICAgICAgICArK2luZGV4OwogICAgICAgICAg
ICAgICAgfQogICAgICAgICAgICAgICAgKytsaW5lTnVtYmVyOwogICAgICAgICAgICAgICAgbGlu
ZVN0YXJ0ID0gaW5kZXg7CiAgICAgICAgICAgICAgICBzdGFydCA9IHRydWU7CiAgICAgICAgICAg
IH0gZWxzZSBpZiAoY2ggPT09IDB4MkYpIHsgLy8gVSswMDJGIGlzICcvJwogICAgICAgICAgICAg
ICAgY2ggPSBzb3VyY2UuY2hhckNvZGVBdChpbmRleCArIDEpOwogICAgICAgICAgICAgICAgaWYg
KGNoID09PSAweDJGKSB7CiAgICAgICAgICAgICAgICAgICAgKytpbmRleDsKICAgICAgICAgICAg
ICAgICAgICArK2luZGV4OwogICAgICAgICAgICAgICAgICAgIHNraXBTaW5nbGVMaW5lQ29tbWVu
dCgyKTsKICAgICAgICAgICAgICAgICAgICBzdGFydCA9IHRydWU7CiAgICAgICAgICAgICAgICB9
IGVsc2UgaWYgKGNoID09PSAweDJBKSB7ICAvLyBVKzAwMkEgaXMgJyonCiAgICAgICAgICAgICAg
ICAgICAgKytpbmRleDsKICAgICAgICAgICAgICAgICAgICArK2luZGV4OwogICAgICAgICAgICAg
ICAgICAgIHNraXBNdWx0aUxpbmVDb21tZW50KCk7CiAgICAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9
IGVsc2UgaWYgKHN0YXJ0ICYmIGNoID09PSAweDJEKSB7IC8vIFUrMDAyRCBpcyAnLScKICAgICAg
ICAgICAgICAgIC8vIFUrMDAzRSBpcyAnPicKICAgICAgICAgICAgICAgIGlmICgoc291cmNlLmNo
YXJDb2RlQXQoaW5kZXggKyAxKSA9PT0gMHgyRCkgJiYgKHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4
ICsgMikgPT09IDB4M0UpKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gJy0tPicgaXMgYSBzaW5n
bGUtbGluZSBjb21tZW50CiAgICAgICAgICAgICAgICAgICAgaW5kZXggKz0gMzsKICAgICAgICAg
ICAgICAgICAgICBza2lwU2luZ2xlTGluZUNvbW1lbnQoMyk7CiAgICAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICB9IGVsc2UgaWYgKGNoID09PSAweDNDKSB7IC8vIFUrMDAzQyBpcyAnPCcKICAgICAgICAg
ICAgICAgIGlmIChzb3VyY2Uuc2xpY2UoaW5kZXggKyAxLCBpbmRleCArIDQpID09PSAnIS0tJykg
ewogICAgICAgICAgICAgICAgICAgICsraW5kZXg7IC8vIGA8YAogICAgICAgICAgICAgICAgICAg
ICsraW5kZXg7IC8vIGAhYAogICAgICAgICAgICAgICAgICAgICsraW5kZXg7IC8vIGAtYAogICAg
ICAgICAgICAgICAgICAgICsraW5kZXg7IC8vIGAtYAogICAgICAgICAgICAgICAgICAgIHNraXBT
aW5nbGVMaW5lQ29tbWVudCg0KTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICBm
dW5jdGlvbiBzY2FuSGV4RXNjYXBlKHByZWZpeCkgewogICAgICAgIHZhciBpLCBsZW4sIGNoLCBj
b2RlID0gMDsKCiAgICAgICAgbGVuID0gKHByZWZpeCA9PT0gJ3UnKSA/IDQgOiAyOwogICAgICAg
IGZvciAoaSA9IDA7IGkgPCBsZW47ICsraSkgewogICAgICAgICAgICBpZiAoaW5kZXggPCBsZW5n
dGggJiYgaXNIZXhEaWdpdChzb3VyY2VbaW5kZXhdKSkgewogICAgICAgICAgICAgICAgY2ggPSBz
b3VyY2VbaW5kZXgrK107CiAgICAgICAgICAgICAgICBjb2RlID0gY29kZSAqIDE2ICsgJzAxMjM0
NTY3ODlhYmNkZWYnLmluZGV4T2YoY2gudG9Mb3dlckNhc2UoKSk7CiAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICByZXR1cm4gJyc7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAg
ICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUoY29kZSk7CiAgICB9CgogICAgZnVuY3Rp
b24gZ2V0RXNjYXBlZElkZW50aWZpZXIoKSB7CiAgICAgICAgdmFyIGNoLCBpZDsKCiAgICAgICAg
Y2ggPSBzb3VyY2UuY2hhckNvZGVBdChpbmRleCsrKTsKICAgICAgICBpZCA9IFN0cmluZy5mcm9t
Q2hhckNvZGUoY2gpOwoKICAgICAgICAvLyAnXHUnIChVKzAwNUMsIFUrMDA3NSkgZGVub3RlcyBh
biBlc2NhcGVkIGNoYXJhY3Rlci4KICAgICAgICBpZiAoY2ggPT09IDB4NUMpIHsKICAgICAgICAg
ICAgaWYgKHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSAhPT0gMHg3NSkgewogICAgICAgICAgICAg
ICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpOwog
ICAgICAgICAgICB9CiAgICAgICAgICAgICsraW5kZXg7CiAgICAgICAgICAgIGNoID0gc2Nhbkhl
eEVzY2FwZSgndScpOwogICAgICAgICAgICBpZiAoIWNoIHx8IGNoID09PSAnXFwnIHx8ICFpc0lk
ZW50aWZpZXJTdGFydChjaC5jaGFyQ29kZUF0KDApKSkgewogICAgICAgICAgICAgICAgdGhyb3dF
cnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpOwogICAgICAgICAg
ICB9CiAgICAgICAgICAgIGlkID0gY2g7CiAgICAgICAgfQoKICAgICAgICB3aGlsZSAoaW5kZXgg
PCBsZW5ndGgpIHsKICAgICAgICAgICAgY2ggPSBzb3VyY2UuY2hhckNvZGVBdChpbmRleCk7CiAg
ICAgICAgICAgIGlmICghaXNJZGVudGlmaWVyUGFydChjaCkpIHsKICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgICsraW5kZXg7CiAgICAgICAgICAgIGlkICs9
IFN0cmluZy5mcm9tQ2hhckNvZGUoY2gpOwoKICAgICAgICAgICAgLy8gJ1x1JyAoVSswMDVDLCBV
KzAwNzUpIGRlbm90ZXMgYW4gZXNjYXBlZCBjaGFyYWN0ZXIuCiAgICAgICAgICAgIGlmIChjaCA9
PT0gMHg1QykgewogICAgICAgICAgICAgICAgaWQgPSBpZC5zdWJzdHIoMCwgaWQubGVuZ3RoIC0g
MSk7CiAgICAgICAgICAgICAgICBpZiAoc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpICE9PSAweDc1
KSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3Rl
ZFRva2VuLCAnSUxMRUdBTCcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgKytp
bmRleDsKICAgICAgICAgICAgICAgIGNoID0gc2NhbkhleEVzY2FwZSgndScpOwogICAgICAgICAg
ICAgICAgaWYgKCFjaCB8fCBjaCA9PT0gJ1xcJyB8fCAhaXNJZGVudGlmaWVyUGFydChjaC5jaGFy
Q29kZUF0KDApKSkgewogICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2Vz
LlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgICAgIGlkICs9IGNoOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4g
aWQ7CiAgICB9CgogICAgZnVuY3Rpb24gZ2V0SWRlbnRpZmllcigpIHsKICAgICAgICB2YXIgc3Rh
cnQsIGNoOwoKICAgICAgICBzdGFydCA9IGluZGV4Kys7CiAgICAgICAgd2hpbGUgKGluZGV4IDwg
bGVuZ3RoKSB7CiAgICAgICAgICAgIGNoID0gc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpOwogICAg
ICAgICAgICBpZiAoY2ggPT09IDB4NUMpIHsKICAgICAgICAgICAgICAgIC8vIEJsYWNrc2xhc2gg
KFUrMDA1QykgbWFya3MgVW5pY29kZSBlc2NhcGUgc2VxdWVuY2UuCiAgICAgICAgICAgICAgICBp
bmRleCA9IHN0YXJ0OwogICAgICAgICAgICAgICAgcmV0dXJuIGdldEVzY2FwZWRJZGVudGlmaWVy
KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKGlzSWRlbnRpZmllclBhcnQoY2gpKSB7
CiAgICAgICAgICAgICAgICArK2luZGV4OwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIHJldHVybiBzb3Vy
Y2Uuc2xpY2Uoc3RhcnQsIGluZGV4KTsKICAgIH0KCiAgICBmdW5jdGlvbiBzY2FuSWRlbnRpZmll
cigpIHsKICAgICAgICB2YXIgc3RhcnQsIGlkLCB0eXBlOwoKICAgICAgICBzdGFydCA9IGluZGV4
OwoKICAgICAgICAvLyBCYWNrc2xhc2ggKFUrMDA1Qykgc3RhcnRzIGFuIGVzY2FwZWQgY2hhcmFj
dGVyLgogICAgICAgIGlkID0gKHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSA9PT0gMHg1QykgPyBn
ZXRFc2NhcGVkSWRlbnRpZmllcigpIDogZ2V0SWRlbnRpZmllcigpOwoKICAgICAgICAvLyBUaGVy
ZSBpcyBubyBrZXl3b3JkIG9yIGxpdGVyYWwgd2l0aCBvbmx5IG9uZSBjaGFyYWN0ZXIuCiAgICAg
ICAgLy8gVGh1cywgaXQgbXVzdCBiZSBhbiBpZGVudGlmaWVyLgogICAgICAgIGlmIChpZC5sZW5n
dGggPT09IDEpIHsKICAgICAgICAgICAgdHlwZSA9IFRva2VuLklkZW50aWZpZXI7CiAgICAgICAg
fSBlbHNlIGlmIChpc0tleXdvcmQoaWQpKSB7CiAgICAgICAgICAgIHR5cGUgPSBUb2tlbi5LZXl3
b3JkOwogICAgICAgIH0gZWxzZSBpZiAoaWQgPT09ICdudWxsJykgewogICAgICAgICAgICB0eXBl
ID0gVG9rZW4uTnVsbExpdGVyYWw7CiAgICAgICAgfSBlbHNlIGlmIChpZCA9PT0gJ3RydWUnIHx8
IGlkID09PSAnZmFsc2UnKSB7CiAgICAgICAgICAgIHR5cGUgPSBUb2tlbi5Cb29sZWFuTGl0ZXJh
bDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICB0eXBlID0gVG9rZW4uSWRlbnRpZmllcjsK
ICAgICAgICB9CgogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIHR5cGU6IHR5cGUsCiAgICAg
ICAgICAgIHZhbHVlOiBpZCwKICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlciwKICAg
ICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsCiAgICAgICAgICAgIHN0YXJ0OiBzdGFydCwK
ICAgICAgICAgICAgZW5kOiBpbmRleAogICAgICAgIH07CiAgICB9CgoKICAgIC8vIDcuNyBQdW5j
dHVhdG9ycwoKICAgIGZ1bmN0aW9uIHNjYW5QdW5jdHVhdG9yKCkgewogICAgICAgIHZhciBzdGFy
dCA9IGluZGV4LAogICAgICAgICAgICBjb2RlID0gc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpLAog
ICAgICAgICAgICBjb2RlMiwKICAgICAgICAgICAgY2gxID0gc291cmNlW2luZGV4XSwKICAgICAg
ICAgICAgY2gyLAogICAgICAgICAgICBjaDMsCiAgICAgICAgICAgIGNoNDsKCiAgICAgICAgc3dp
dGNoIChjb2RlKSB7CgogICAgICAgIC8vIENoZWNrIGZvciBtb3N0IGNvbW1vbiBzaW5nbGUtY2hh
cmFjdGVyIHB1bmN0dWF0b3JzLgogICAgICAgIGNhc2UgMHgyRTogIC8vIC4gZG90CiAgICAgICAg
Y2FzZSAweDI4OiAgLy8gKCBvcGVuIGJyYWNrZXQKICAgICAgICBjYXNlIDB4Mjk6ICAvLyApIGNs
b3NlIGJyYWNrZXQKICAgICAgICBjYXNlIDB4M0I6ICAvLyA7IHNlbWljb2xvbgogICAgICAgIGNh
c2UgMHgyQzogIC8vICwgY29tbWEKICAgICAgICBjYXNlIDB4N0I6ICAvLyB7IG9wZW4gY3VybHkg
YnJhY2UKICAgICAgICBjYXNlIDB4N0Q6ICAvLyB9IGNsb3NlIGN1cmx5IGJyYWNlCiAgICAgICAg
Y2FzZSAweDVCOiAgLy8gWwogICAgICAgIGNhc2UgMHg1RDogIC8vIF0KICAgICAgICBjYXNlIDB4
M0E6ICAvLyA6CiAgICAgICAgY2FzZSAweDNGOiAgLy8gPwogICAgICAgIGNhc2UgMHg3RTogIC8v
IH4KICAgICAgICAgICAgKytpbmRleDsKICAgICAgICAgICAgaWYgKGV4dHJhLnRva2VuaXplKSB7
CiAgICAgICAgICAgICAgICBpZiAoY29kZSA9PT0gMHgyOCkgewogICAgICAgICAgICAgICAgICAg
IGV4dHJhLm9wZW5QYXJlblRva2VuID0gZXh0cmEudG9rZW5zLmxlbmd0aDsKICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gMHg3QikgewogICAgICAgICAgICAgICAgICAgIGV4dHJh
Lm9wZW5DdXJseVRva2VuID0gZXh0cmEudG9rZW5zLmxlbmd0aDsKICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdHlwZTog
VG9rZW4uUHVuY3R1YXRvciwKICAgICAgICAgICAgICAgIHZhbHVlOiBTdHJpbmcuZnJvbUNoYXJD
b2RlKGNvZGUpLAogICAgICAgICAgICAgICAgbGluZU51bWJlcjogbGluZU51bWJlciwKICAgICAg
ICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LAogICAgICAgICAgICAgICAgc3RhcnQ6IHN0
YXJ0LAogICAgICAgICAgICAgICAgZW5kOiBpbmRleAogICAgICAgICAgICB9OwoKICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgICBjb2RlMiA9IHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4ICsgMSk7
CgogICAgICAgICAgICAvLyAnPScgKFUrMDAzRCkgbWFya3MgYW4gYXNzaWdubWVudCBvciBjb21w
YXJpc29uIG9wZXJhdG9yLgogICAgICAgICAgICBpZiAoY29kZTIgPT09IDB4M0QpIHsKICAgICAg
ICAgICAgICAgIHN3aXRjaCAoY29kZSkgewogICAgICAgICAgICAgICAgY2FzZSAweDJCOiAgLy8g
KwogICAgICAgICAgICAgICAgY2FzZSAweDJEOiAgLy8gLQogICAgICAgICAgICAgICAgY2FzZSAw
eDJGOiAgLy8gLwogICAgICAgICAgICAgICAgY2FzZSAweDNDOiAgLy8gPAogICAgICAgICAgICAg
ICAgY2FzZSAweDNFOiAgLy8gPgogICAgICAgICAgICAgICAgY2FzZSAweDVFOiAgLy8gXgogICAg
ICAgICAgICAgICAgY2FzZSAweDdDOiAgLy8gfAogICAgICAgICAgICAgICAgY2FzZSAweDI1OiAg
Ly8gJQogICAgICAgICAgICAgICAgY2FzZSAweDI2OiAgLy8gJgogICAgICAgICAgICAgICAgY2Fz
ZSAweDJBOiAgLy8gKgogICAgICAgICAgICAgICAgICAgIGluZGV4ICs9IDI7CiAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgICAgICAgICAgdHlwZTogVG9rZW4uUHVu
Y3R1YXRvciwKICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IFN0cmluZy5mcm9tQ2hhckNv
ZGUoY29kZSkgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGNvZGUyKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgbGluZU51bWJlcjogbGluZU51bWJlciwKICAgICAgICAgICAgICAgICAgICAgICAgbGlu
ZVN0YXJ0OiBsaW5lU3RhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0OiBzdGFydCwK
ICAgICAgICAgICAgICAgICAgICAgICAgZW5kOiBpbmRleAogICAgICAgICAgICAgICAgICAgIH07
CgogICAgICAgICAgICAgICAgY2FzZSAweDIxOiAvLyAhCiAgICAgICAgICAgICAgICBjYXNlIDB4
M0Q6IC8vID0KICAgICAgICAgICAgICAgICAgICBpbmRleCArPSAyOwoKICAgICAgICAgICAgICAg
ICAgICAvLyAhPT0gYW5kID09PQogICAgICAgICAgICAgICAgICAgIGlmIChzb3VyY2UuY2hhckNv
ZGVBdChpbmRleCkgPT09IDB4M0QpIHsKICAgICAgICAgICAgICAgICAgICAgICAgKytpbmRleDsK
ICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgdHlwZTogVG9rZW4uUHVuY3R1YXRvciwKICAgICAgICAgICAgICAg
ICAgICAgICAgdmFsdWU6IHNvdXJjZS5zbGljZShzdGFydCwgaW5kZXgpLAogICAgICAgICAgICAg
ICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAg
ICBsaW5lU3RhcnQ6IGxpbmVTdGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQ6IHN0
YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICBlbmQ6IGluZGV4CiAgICAgICAgICAgICAgICAg
ICAgfTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAg
Ly8gNC1jaGFyYWN0ZXIgcHVuY3R1YXRvcjogPj4+PQoKICAgICAgICBjaDQgPSBzb3VyY2Uuc3Vi
c3RyKGluZGV4LCA0KTsKCiAgICAgICAgaWYgKGNoNCA9PT0gJz4+Pj0nKSB7CiAgICAgICAgICAg
IGluZGV4ICs9IDQ7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB0eXBlOiBU
b2tlbi5QdW5jdHVhdG9yLAogICAgICAgICAgICAgICAgdmFsdWU6IGNoNCwKICAgICAgICAgICAg
ICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsCiAgICAgICAgICAgICAgICBsaW5lU3RhcnQ6IGxp
bmVTdGFydCwKICAgICAgICAgICAgICAgIHN0YXJ0OiBzdGFydCwKICAgICAgICAgICAgICAgIGVu
ZDogaW5kZXgKICAgICAgICAgICAgfTsKICAgICAgICB9CgogICAgICAgIC8vIDMtY2hhcmFjdGVy
IHB1bmN0dWF0b3JzOiA9PT0gIT09ID4+PiA8PD0gPj49CgogICAgICAgIGNoMyA9IGNoNC5zdWJz
dHIoMCwgMyk7CgogICAgICAgIGlmIChjaDMgPT09ICc+Pj4nIHx8IGNoMyA9PT0gJzw8PScgfHwg
Y2gzID09PSAnPj49JykgewogICAgICAgICAgICBpbmRleCArPSAzOwogICAgICAgICAgICByZXR1
cm4gewogICAgICAgICAgICAgICAgdHlwZTogVG9rZW4uUHVuY3R1YXRvciwKICAgICAgICAgICAg
ICAgIHZhbHVlOiBjaDMsCiAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLAog
ICAgICAgICAgICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsCiAgICAgICAgICAgICAgICBzdGFy
dDogc3RhcnQsCiAgICAgICAgICAgICAgICBlbmQ6IGluZGV4CiAgICAgICAgICAgIH07CiAgICAg
ICAgfQoKICAgICAgICAvLyBPdGhlciAyLWNoYXJhY3RlciBwdW5jdHVhdG9yczogKysgLS0gPDwg
Pj4gJiYgfHwKICAgICAgICBjaDIgPSBjaDMuc3Vic3RyKDAsIDIpOwoKICAgICAgICBpZiAoKGNo
MSA9PT0gY2gyWzFdICYmICgnKy08PiZ8Jy5pbmRleE9mKGNoMSkgPj0gMCkpIHx8IGNoMiA9PT0g
Jz0+JykgewogICAgICAgICAgICBpbmRleCArPSAyOwogICAgICAgICAgICByZXR1cm4gewogICAg
ICAgICAgICAgICAgdHlwZTogVG9rZW4uUHVuY3R1YXRvciwKICAgICAgICAgICAgICAgIHZhbHVl
OiBjaDIsCiAgICAgICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLAogICAgICAgICAg
ICAgICAgbGluZVN0YXJ0OiBsaW5lU3RhcnQsCiAgICAgICAgICAgICAgICBzdGFydDogc3RhcnQs
CiAgICAgICAgICAgICAgICBlbmQ6IGluZGV4CiAgICAgICAgICAgIH07CiAgICAgICAgfQoKICAg
ICAgICAvLyAxLWNoYXJhY3RlciBwdW5jdHVhdG9yczogPCA+ID0gISArIC0gKiAlICYgfCBeIC8K
ICAgICAgICBpZiAoJzw+PSErLSolJnxeLycuaW5kZXhPZihjaDEpID49IDApIHsKICAgICAgICAg
ICAgKytpbmRleDsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHR5cGU6IFRv
a2VuLlB1bmN0dWF0b3IsCiAgICAgICAgICAgICAgICB2YWx1ZTogY2gxLAogICAgICAgICAgICAg
ICAgbGluZU51bWJlcjogbGluZU51bWJlciwKICAgICAgICAgICAgICAgIGxpbmVTdGFydDogbGlu
ZVN0YXJ0LAogICAgICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LAogICAgICAgICAgICAgICAgZW5k
OiBpbmRleAogICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgdGhyb3dFcnJvcih7fSwg
TWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpOwogICAgfQoKICAgIC8vIDcuOC4z
IE51bWVyaWMgTGl0ZXJhbHMKCiAgICBmdW5jdGlvbiBzY2FuSGV4TGl0ZXJhbChzdGFydCkgewog
ICAgICAgIHZhciBudW1iZXIgPSAnJzsKCiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7
CiAgICAgICAgICAgIGlmICghaXNIZXhEaWdpdChzb3VyY2VbaW5kZXhdKSkgewogICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgbnVtYmVyICs9IHNvdXJjZVtp
bmRleCsrXTsKICAgICAgICB9CgogICAgICAgIGlmIChudW1iZXIubGVuZ3RoID09PSAwKSB7CiAg
ICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVH
QUwnKTsKICAgICAgICB9CgogICAgICAgIGlmIChpc0lkZW50aWZpZXJTdGFydChzb3VyY2UuY2hh
ckNvZGVBdChpbmRleCkpKSB7CiAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVu
ZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB7CiAg
ICAgICAgICAgIHR5cGU6IFRva2VuLk51bWVyaWNMaXRlcmFsLAogICAgICAgICAgICB2YWx1ZTog
cGFyc2VJbnQoJzB4JyArIG51bWJlciwgMTYpLAogICAgICAgICAgICBsaW5lTnVtYmVyOiBsaW5l
TnVtYmVyLAogICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCwKICAgICAgICAgICAgc3Rh
cnQ6IHN0YXJ0LAogICAgICAgICAgICBlbmQ6IGluZGV4CiAgICAgICAgfTsKICAgIH0KCiAgICBm
dW5jdGlvbiBzY2FuT2N0YWxMaXRlcmFsKHN0YXJ0KSB7CiAgICAgICAgdmFyIG51bWJlciA9ICcw
JyArIHNvdXJjZVtpbmRleCsrXTsKICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKICAg
ICAgICAgICAgaWYgKCFpc09jdGFsRGlnaXQoc291cmNlW2luZGV4XSkpIHsKICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG51bWJlciArPSBzb3VyY2VbaW5k
ZXgrK107CiAgICAgICAgfQoKICAgICAgICBpZiAoaXNJZGVudGlmaWVyU3RhcnQoc291cmNlLmNo
YXJDb2RlQXQoaW5kZXgpKSB8fCBpc0RlY2ltYWxEaWdpdChzb3VyY2UuY2hhckNvZGVBdChpbmRl
eCkpKSB7CiAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tl
biwgJ0lMTEVHQUwnKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIHR5
cGU6IFRva2VuLk51bWVyaWNMaXRlcmFsLAogICAgICAgICAgICB2YWx1ZTogcGFyc2VJbnQobnVt
YmVyLCA4KSwKICAgICAgICAgICAgb2N0YWw6IHRydWUsCiAgICAgICAgICAgIGxpbmVOdW1iZXI6
IGxpbmVOdW1iZXIsCiAgICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LAogICAgICAgICAg
ICBzdGFydDogc3RhcnQsCiAgICAgICAgICAgIGVuZDogaW5kZXgKICAgICAgICB9OwogICAgfQoK
ICAgIGZ1bmN0aW9uIHNjYW5OdW1lcmljTGl0ZXJhbCgpIHsKICAgICAgICB2YXIgbnVtYmVyLCBz
dGFydCwgY2g7CgogICAgICAgIGNoID0gc291cmNlW2luZGV4XTsKICAgICAgICBhc3NlcnQoaXNE
ZWNpbWFsRGlnaXQoY2guY2hhckNvZGVBdCgwKSkgfHwgKGNoID09PSAnLicpLAogICAgICAgICAg
ICAnTnVtZXJpYyBsaXRlcmFsIG11c3Qgc3RhcnQgd2l0aCBhIGRlY2ltYWwgZGlnaXQgb3IgYSBk
ZWNpbWFsIHBvaW50Jyk7CgogICAgICAgIHN0YXJ0ID0gaW5kZXg7CiAgICAgICAgbnVtYmVyID0g
Jyc7CiAgICAgICAgaWYgKGNoICE9PSAnLicpIHsKICAgICAgICAgICAgbnVtYmVyID0gc291cmNl
W2luZGV4KytdOwogICAgICAgICAgICBjaCA9IHNvdXJjZVtpbmRleF07CgogICAgICAgICAgICAv
LyBIZXggbnVtYmVyIHN0YXJ0cyB3aXRoICcweCcuCiAgICAgICAgICAgIC8vIE9jdGFsIG51bWJl
ciBzdGFydHMgd2l0aCAnMCcuCiAgICAgICAgICAgIGlmIChudW1iZXIgPT09ICcwJykgewogICAg
ICAgICAgICAgICAgaWYgKGNoID09PSAneCcgfHwgY2ggPT09ICdYJykgewogICAgICAgICAgICAg
ICAgICAgICsraW5kZXg7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNjYW5IZXhMaXRlcmFs
KHN0YXJ0KTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChpc09jdGFsRGln
aXQoY2gpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNjYW5PY3RhbExpdGVyYWwoc3Rh
cnQpOwogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgICAgIC8vIGRlY2ltYWwgbnVtYmVy
IHN0YXJ0cyB3aXRoICcwJyBzdWNoIGFzICcwOScgaXMgaWxsZWdhbC4KICAgICAgICAgICAgICAg
IGlmIChjaCAmJiBpc0RlY2ltYWxEaWdpdChjaC5jaGFyQ29kZUF0KDApKSkgewogICAgICAgICAg
ICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVH
QUwnKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgd2hpbGUg
KGlzRGVjaW1hbERpZ2l0KHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSkpIHsKICAgICAgICAgICAg
ICAgIG51bWJlciArPSBzb3VyY2VbaW5kZXgrK107CiAgICAgICAgICAgIH0KICAgICAgICAgICAg
Y2ggPSBzb3VyY2VbaW5kZXhdOwogICAgICAgIH0KCiAgICAgICAgaWYgKGNoID09PSAnLicpIHsK
ICAgICAgICAgICAgbnVtYmVyICs9IHNvdXJjZVtpbmRleCsrXTsKICAgICAgICAgICAgd2hpbGUg
KGlzRGVjaW1hbERpZ2l0KHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSkpIHsKICAgICAgICAgICAg
ICAgIG51bWJlciArPSBzb3VyY2VbaW5kZXgrK107CiAgICAgICAgICAgIH0KICAgICAgICAgICAg
Y2ggPSBzb3VyY2VbaW5kZXhdOwogICAgICAgIH0KCiAgICAgICAgaWYgKGNoID09PSAnZScgfHwg
Y2ggPT09ICdFJykgewogICAgICAgICAgICBudW1iZXIgKz0gc291cmNlW2luZGV4KytdOwoKICAg
ICAgICAgICAgY2ggPSBzb3VyY2VbaW5kZXhdOwogICAgICAgICAgICBpZiAoY2ggPT09ICcrJyB8
fCBjaCA9PT0gJy0nKSB7CiAgICAgICAgICAgICAgICBudW1iZXIgKz0gc291cmNlW2luZGV4Kytd
OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChpc0RlY2ltYWxEaWdpdChzb3VyY2UuY2hh
ckNvZGVBdChpbmRleCkpKSB7CiAgICAgICAgICAgICAgICB3aGlsZSAoaXNEZWNpbWFsRGlnaXQo
c291cmNlLmNoYXJDb2RlQXQoaW5kZXgpKSkgewogICAgICAgICAgICAgICAgICAgIG51bWJlciAr
PSBzb3VyY2VbaW5kZXgrK107CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4s
ICdJTExFR0FMJyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChpc0lkZW50
aWZpZXJTdGFydChzb3VyY2UuY2hhckNvZGVBdChpbmRleCkpKSB7CiAgICAgICAgICAgIHRocm93
RXJyb3Ioe30sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRUb2tlbiwgJ0lMTEVHQUwnKTsKICAgICAgICB9
CgogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIHR5cGU6IFRva2VuLk51bWVyaWNMaXRlcmFs
LAogICAgICAgICAgICB2YWx1ZTogcGFyc2VGbG9hdChudW1iZXIpLAogICAgICAgICAgICBsaW5l
TnVtYmVyOiBsaW5lTnVtYmVyLAogICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCwKICAg
ICAgICAgICAgc3RhcnQ6IHN0YXJ0LAogICAgICAgICAgICBlbmQ6IGluZGV4CiAgICAgICAgfTsK
ICAgIH0KCiAgICAvLyA3LjguNCBTdHJpbmcgTGl0ZXJhbHMKCiAgICBmdW5jdGlvbiBzY2FuU3Ry
aW5nTGl0ZXJhbCgpIHsKICAgICAgICB2YXIgc3RyID0gJycsIHF1b3RlLCBzdGFydCwgY2gsIGNv
ZGUsIHVuZXNjYXBlZCwgcmVzdG9yZSwgb2N0YWwgPSBmYWxzZSwgc3RhcnRMaW5lTnVtYmVyLCBz
dGFydExpbmVTdGFydDsKICAgICAgICBzdGFydExpbmVOdW1iZXIgPSBsaW5lTnVtYmVyOwogICAg
ICAgIHN0YXJ0TGluZVN0YXJ0ID0gbGluZVN0YXJ0OwoKICAgICAgICBxdW90ZSA9IHNvdXJjZVtp
bmRleF07CiAgICAgICAgYXNzZXJ0KChxdW90ZSA9PT0gJ1wnJyB8fCBxdW90ZSA9PT0gJyInKSwK
ICAgICAgICAgICAgJ1N0cmluZyBsaXRlcmFsIG11c3Qgc3RhcnRzIHdpdGggYSBxdW90ZScpOwoK
ICAgICAgICBzdGFydCA9IGluZGV4OwogICAgICAgICsraW5kZXg7CgogICAgICAgIHdoaWxlIChp
bmRleCA8IGxlbmd0aCkgewogICAgICAgICAgICBjaCA9IHNvdXJjZVtpbmRleCsrXTsKCiAgICAg
ICAgICAgIGlmIChjaCA9PT0gcXVvdGUpIHsKICAgICAgICAgICAgICAgIHF1b3RlID0gJyc7CiAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PT0gJ1xcJykg
ewogICAgICAgICAgICAgICAgY2ggPSBzb3VyY2VbaW5kZXgrK107CiAgICAgICAgICAgICAgICBp
ZiAoIWNoIHx8ICFpc0xpbmVUZXJtaW5hdG9yKGNoLmNoYXJDb2RlQXQoMCkpKSB7CiAgICAgICAg
ICAgICAgICAgICAgc3dpdGNoIChjaCkgewogICAgICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgog
ICAgICAgICAgICAgICAgICAgIGNhc2UgJ3gnOgogICAgICAgICAgICAgICAgICAgICAgICByZXN0
b3JlID0gaW5kZXg7CiAgICAgICAgICAgICAgICAgICAgICAgIHVuZXNjYXBlZCA9IHNjYW5IZXhF
c2NhcGUoY2gpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAodW5lc2NhcGVkKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gdW5lc2NhcGVkOwogICAgICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPSByZXN0
b3JlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyICs9IGNoOwogICAgICAgICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgICAgIGNhc2UgJ24nOgogICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gJ1xuJzsKICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgY2FzZSAncic6
CiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSAnXHInOwogICAgICAgICAgICAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICd0JzoKICAgICAgICAgICAgICAg
ICAgICAgICAgc3RyICs9ICdcdCc7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICAgICAgICAgIGNhc2UgJ2InOgogICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0g
J1xiJzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAg
Y2FzZSAnZic6CiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSAnXGYnOwogICAgICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjYXNlICd2JzoKICAgICAg
ICAgICAgICAgICAgICAgICAgc3RyICs9ICdceDBCJzsKICAgICAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CgogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChpc09jdGFsRGlnaXQoY2gpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b2RlID0gJzAxMjM0NTY3Jy5pbmRleE9mKGNoKTsKCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAvLyBcMCBpcyBub3Qgb2N0YWwgZXNjYXBlIHNlcXVlbmNlCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoY29kZSAhPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9jdGFsID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoaW5kZXggPCBsZW5ndGggJiYgaXNPY3RhbERpZ2l0KHNvdXJj
ZVtpbmRleF0pKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2N0YWwgPSB0cnVl
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUgPSBjb2RlICogOCArICcwMTIz
NDU2NycuaW5kZXhPZihzb3VyY2VbaW5kZXgrK10pOwoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAvLyAzIGRpZ2l0cyBhcmUgb25seSBhbGxvd2VkIHdoZW4gc3RyaW5nIHN0YXJ0cwog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpdGggMCwgMSwgMiwgMwogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgnMDEyMycuaW5kZXhPZihjaCkgPj0gMCAmJgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXggPCBsZW5ndGggJiYK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzT2N0YWxEaWdpdChzb3Vy
Y2VbaW5kZXhdKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2RlID0g
Y29kZSAqIDggKyAnMDEyMzQ1NjcnLmluZGV4T2Yoc291cmNlW2luZGV4KytdKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjb2Rl
KTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0ciArPSBjaDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgICAgICsrbGluZU51bWJlcjsKICAgICAgICAgICAgICAg
ICAgICBpZiAoY2ggPT09ICAnXHInICYmIHNvdXJjZVtpbmRleF0gPT09ICdcbicpIHsKICAgICAg
ICAgICAgICAgICAgICAgICAgKytpbmRleDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICAgICAgICAgbGluZVN0YXJ0ID0gaW5kZXg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgIH0gZWxzZSBpZiAoaXNMaW5lVGVybWluYXRvcihjaC5jaGFyQ29kZUF0KDApKSkgewogICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBz
dHIgKz0gY2g7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGlmIChxdW90ZSAhPT0g
JycpIHsKICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2Vu
LCAnSUxMRUdBTCcpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgdHlw
ZTogVG9rZW4uU3RyaW5nTGl0ZXJhbCwKICAgICAgICAgICAgdmFsdWU6IHN0ciwKICAgICAgICAg
ICAgb2N0YWw6IG9jdGFsLAogICAgICAgICAgICBzdGFydExpbmVOdW1iZXI6IHN0YXJ0TGluZU51
bWJlciwKICAgICAgICAgICAgc3RhcnRMaW5lU3RhcnQ6IHN0YXJ0TGluZVN0YXJ0LAogICAgICAg
ICAgICBsaW5lTnVtYmVyOiBsaW5lTnVtYmVyLAogICAgICAgICAgICBsaW5lU3RhcnQ6IGxpbmVT
dGFydCwKICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LAogICAgICAgICAgICBlbmQ6IGluZGV4CiAg
ICAgICAgfTsKICAgIH0KCiAgICBmdW5jdGlvbiB0ZXN0UmVnRXhwKHBhdHRlcm4sIGZsYWdzKSB7
CiAgICAgICAgdmFyIHZhbHVlOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHZhbHVlID0gbmV3
IFJlZ0V4cChwYXR0ZXJuLCBmbGFncyk7CiAgICAgICAgfSBjYXRjaCAoZSkgewogICAgICAgICAg
ICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5JbnZhbGlkUmVnRXhwKTsKICAgICAgICB9CiAgICAg
ICAgcmV0dXJuIHZhbHVlOwogICAgfQoKICAgIGZ1bmN0aW9uIHNjYW5SZWdFeHBCb2R5KCkgewog
ICAgICAgIHZhciBjaCwgc3RyLCBjbGFzc01hcmtlciwgdGVybWluYXRlZCwgYm9keTsKCiAgICAg
ICAgY2ggPSBzb3VyY2VbaW5kZXhdOwogICAgICAgIGFzc2VydChjaCA9PT0gJy8nLCAnUmVndWxh
ciBleHByZXNzaW9uIGxpdGVyYWwgbXVzdCBzdGFydCB3aXRoIGEgc2xhc2gnKTsKICAgICAgICBz
dHIgPSBzb3VyY2VbaW5kZXgrK107CgogICAgICAgIGNsYXNzTWFya2VyID0gZmFsc2U7CiAgICAg
ICAgdGVybWluYXRlZCA9IGZhbHNlOwogICAgICAgIHdoaWxlIChpbmRleCA8IGxlbmd0aCkgewog
ICAgICAgICAgICBjaCA9IHNvdXJjZVtpbmRleCsrXTsKICAgICAgICAgICAgc3RyICs9IGNoOwog
ICAgICAgICAgICBpZiAoY2ggPT09ICdcXCcpIHsKICAgICAgICAgICAgICAgIGNoID0gc291cmNl
W2luZGV4KytdOwogICAgICAgICAgICAgICAgLy8gRUNNQS0yNjIgNy44LjUKICAgICAgICAgICAg
ICAgIGlmIChpc0xpbmVUZXJtaW5hdG9yKGNoLmNoYXJDb2RlQXQoMCkpKSB7CiAgICAgICAgICAg
ICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW50ZXJtaW5hdGVkUmVnRXhwKTsKICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHN0ciArPSBjaDsKICAgICAgICAgICAgfSBl
bHNlIGlmIChpc0xpbmVUZXJtaW5hdG9yKGNoLmNoYXJDb2RlQXQoMCkpKSB7CiAgICAgICAgICAg
ICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5VbnRlcm1pbmF0ZWRSZWdFeHApOwogICAgICAg
ICAgICB9IGVsc2UgaWYgKGNsYXNzTWFya2VyKSB7CiAgICAgICAgICAgICAgICBpZiAoY2ggPT09
ICddJykgewogICAgICAgICAgICAgICAgICAgIGNsYXNzTWFya2VyID0gZmFsc2U7CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBpZiAoY2ggPT09
ICcvJykgewogICAgICAgICAgICAgICAgICAgIHRlcm1pbmF0ZWQgPSB0cnVlOwogICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaCA9PT0gJ1snKSB7
CiAgICAgICAgICAgICAgICAgICAgY2xhc3NNYXJrZXIgPSB0cnVlOwogICAgICAgICAgICAgICAg
fQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAoIXRlcm1pbmF0ZWQpIHsKICAg
ICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuVW50ZXJtaW5hdGVkUmVnRXhwKTsKICAg
ICAgICB9CgogICAgICAgIC8vIEV4Y2x1ZGUgbGVhZGluZyBhbmQgdHJhaWxpbmcgc2xhc2guCiAg
ICAgICAgYm9keSA9IHN0ci5zdWJzdHIoMSwgc3RyLmxlbmd0aCAtIDIpOwogICAgICAgIHJldHVy
biB7CiAgICAgICAgICAgIHZhbHVlOiBib2R5LAogICAgICAgICAgICBsaXRlcmFsOiBzdHIKICAg
ICAgICB9OwogICAgfQoKICAgIGZ1bmN0aW9uIHNjYW5SZWdFeHBGbGFncygpIHsKICAgICAgICB2
YXIgY2gsIHN0ciwgZmxhZ3MsIHJlc3RvcmU7CgogICAgICAgIHN0ciA9ICcnOwogICAgICAgIGZs
YWdzID0gJyc7CiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7CiAgICAgICAgICAgIGNo
ID0gc291cmNlW2luZGV4XTsKICAgICAgICAgICAgaWYgKCFpc0lkZW50aWZpZXJQYXJ0KGNoLmNo
YXJDb2RlQXQoMCkpKSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQoKICAg
ICAgICAgICAgKytpbmRleDsKICAgICAgICAgICAgaWYgKGNoID09PSAnXFwnICYmIGluZGV4IDwg
bGVuZ3RoKSB7CiAgICAgICAgICAgICAgICBjaCA9IHNvdXJjZVtpbmRleF07CiAgICAgICAgICAg
ICAgICBpZiAoY2ggPT09ICd1JykgewogICAgICAgICAgICAgICAgICAgICsraW5kZXg7CiAgICAg
ICAgICAgICAgICAgICAgcmVzdG9yZSA9IGluZGV4OwogICAgICAgICAgICAgICAgICAgIGNoID0g
c2NhbkhleEVzY2FwZSgndScpOwogICAgICAgICAgICAgICAgICAgIGlmIChjaCkgewogICAgICAg
ICAgICAgICAgICAgICAgICBmbGFncyArPSBjaDsKICAgICAgICAgICAgICAgICAgICAgICAgZm9y
IChzdHIgKz0gJ1xcdSc7IHJlc3RvcmUgPCBpbmRleDsgKytyZXN0b3JlKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdHIgKz0gc291cmNlW3Jlc3RvcmVdOwogICAgICAgICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgaW5kZXggPSByZXN0b3JlOwogICAgICAgICAgICAgICAgICAgICAgICBmbGFncyArPSAn
dSc7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0ciArPSAnXFx1JzsKICAgICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdl
cy5VbmV4cGVjdGVkVG9rZW4sICdJTExFR0FMJyk7CiAgICAgICAgICAgICAgICB9IGVsc2Ugewog
ICAgICAgICAgICAgICAgICAgIHN0ciArPSAnXFwnOwogICAgICAgICAgICAgICAgICAgIHRocm93
RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuVW5leHBlY3RlZFRva2VuLCAnSUxMRUdBTCcpOwog
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZmxh
Z3MgKz0gY2g7CiAgICAgICAgICAgICAgICBzdHIgKz0gY2g7CiAgICAgICAgICAgIH0KICAgICAg
ICB9CgogICAgICAgIHJldHVybiB7CiAgICAgICAgICAgIHZhbHVlOiBmbGFncywKICAgICAgICAg
ICAgbGl0ZXJhbDogc3RyCiAgICAgICAgfTsKICAgIH0KCiAgICBmdW5jdGlvbiBzY2FuUmVnRXhw
KCkgewogICAgICAgIHZhciBzdGFydCwgYm9keSwgZmxhZ3MsIHBhdHRlcm4sIHZhbHVlOwoKICAg
ICAgICBsb29rYWhlYWQgPSBudWxsOwogICAgICAgIHNraXBDb21tZW50KCk7CiAgICAgICAgc3Rh
cnQgPSBpbmRleDsKCiAgICAgICAgYm9keSA9IHNjYW5SZWdFeHBCb2R5KCk7CiAgICAgICAgZmxh
Z3MgPSBzY2FuUmVnRXhwRmxhZ3MoKTsKICAgICAgICB2YWx1ZSA9IHRlc3RSZWdFeHAoYm9keS52
YWx1ZSwgZmxhZ3MudmFsdWUpOwoKICAgICAgICBpZiAoZXh0cmEudG9rZW5pemUpIHsKICAgICAg
ICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHR5cGU6IFRva2VuLlJlZ3VsYXJFeHByZXNz
aW9uLAogICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVlLAogICAgICAgICAgICAgICAgbGluZU51
bWJlcjogbGluZU51bWJlciwKICAgICAgICAgICAgICAgIGxpbmVTdGFydDogbGluZVN0YXJ0LAog
ICAgICAgICAgICAgICAgc3RhcnQ6IHN0YXJ0LAogICAgICAgICAgICAgICAgZW5kOiBpbmRleAog
ICAgICAgICAgICB9OwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgbGl0
ZXJhbDogYm9keS5saXRlcmFsICsgZmxhZ3MubGl0ZXJhbCwKICAgICAgICAgICAgdmFsdWU6IHZh
bHVlLAogICAgICAgICAgICBzdGFydDogc3RhcnQsCiAgICAgICAgICAgIGVuZDogaW5kZXgKICAg
ICAgICB9OwogICAgfQoKICAgIGZ1bmN0aW9uIGNvbGxlY3RSZWdleCgpIHsKICAgICAgICB2YXIg
cG9zLCBsb2MsIHJlZ2V4LCB0b2tlbjsKCiAgICAgICAgc2tpcENvbW1lbnQoKTsKCiAgICAgICAg
cG9zID0gaW5kZXg7CiAgICAgICAgbG9jID0gewogICAgICAgICAgICBzdGFydDogewogICAgICAg
ICAgICAgICAgbGluZTogbGluZU51bWJlciwKICAgICAgICAgICAgICAgIGNvbHVtbjogaW5kZXgg
LSBsaW5lU3RhcnQKICAgICAgICAgICAgfQogICAgICAgIH07CgogICAgICAgIHJlZ2V4ID0gc2Nh
blJlZ0V4cCgpOwogICAgICAgIGxvYy5lbmQgPSB7CiAgICAgICAgICAgIGxpbmU6IGxpbmVOdW1i
ZXIsCiAgICAgICAgICAgIGNvbHVtbjogaW5kZXggLSBsaW5lU3RhcnQKICAgICAgICB9OwoKICAg
ICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLwogICAgICAgIGlmICghZXh0cmEudG9rZW5p
emUpIHsKICAgICAgICAgICAgLy8gUG9wIHRoZSBwcmV2aW91cyB0b2tlbiwgd2hpY2ggaXMgbGlr
ZWx5ICcvJyBvciAnLz0nCiAgICAgICAgICAgIGlmIChleHRyYS50b2tlbnMubGVuZ3RoID4gMCkg
ewogICAgICAgICAgICAgICAgdG9rZW4gPSBleHRyYS50b2tlbnNbZXh0cmEudG9rZW5zLmxlbmd0
aCAtIDFdOwogICAgICAgICAgICAgICAgaWYgKHRva2VuLnJhbmdlWzBdID09PSBwb3MgJiYgdG9r
ZW4udHlwZSA9PT0gJ1B1bmN0dWF0b3InKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKHRva2Vu
LnZhbHVlID09PSAnLycgfHwgdG9rZW4udmFsdWUgPT09ICcvPScpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgZXh0cmEudG9rZW5zLnBvcCgpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgZXh0cmEudG9rZW5zLnB1c2go
ewogICAgICAgICAgICAgICAgdHlwZTogJ1JlZ3VsYXJFeHByZXNzaW9uJywKICAgICAgICAgICAg
ICAgIHZhbHVlOiByZWdleC5saXRlcmFsLAogICAgICAgICAgICAgICAgcmFuZ2U6IFtwb3MsIGlu
ZGV4XSwKICAgICAgICAgICAgICAgIGxvYzogbG9jCiAgICAgICAgICAgIH0pOwogICAgICAgIH0K
CiAgICAgICAgcmV0dXJuIHJlZ2V4OwogICAgfQoKICAgIGZ1bmN0aW9uIGlzSWRlbnRpZmllck5h
bWUodG9rZW4pIHsKICAgICAgICByZXR1cm4gdG9rZW4udHlwZSA9PT0gVG9rZW4uSWRlbnRpZmll
ciB8fAogICAgICAgICAgICB0b2tlbi50eXBlID09PSBUb2tlbi5LZXl3b3JkIHx8CiAgICAgICAg
ICAgIHRva2VuLnR5cGUgPT09IFRva2VuLkJvb2xlYW5MaXRlcmFsIHx8CiAgICAgICAgICAgIHRv
a2VuLnR5cGUgPT09IFRva2VuLk51bGxMaXRlcmFsOwogICAgfQoKICAgIGZ1bmN0aW9uIGFkdmFu
Y2VTbGFzaCgpIHsKICAgICAgICB2YXIgcHJldlRva2VuLAogICAgICAgICAgICBjaGVja1Rva2Vu
OwogICAgICAgIC8vIFVzaW5nIHRoZSBmb2xsb3dpbmcgYWxnb3JpdGhtOgogICAgICAgIC8vIGh0
dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxhL3N3ZWV0LmpzL3dpa2kvZGVzaWduCiAgICAgICAgcHJl
dlRva2VuID0gZXh0cmEudG9rZW5zW2V4dHJhLnRva2Vucy5sZW5ndGggLSAxXTsKICAgICAgICBp
ZiAoIXByZXZUb2tlbikgewogICAgICAgICAgICAvLyBOb3RoaW5nIGJlZm9yZSB0aGF0OiBpdCBj
YW5ub3QgYmUgYSBkaXZpc2lvbi4KICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3RSZWdleCgpOwog
ICAgICAgIH0KICAgICAgICBpZiAocHJldlRva2VuLnR5cGUgPT09ICdQdW5jdHVhdG9yJykgewog
ICAgICAgICAgICBpZiAocHJldlRva2VuLnZhbHVlID09PSAnXScpIHsKICAgICAgICAgICAgICAg
IHJldHVybiBzY2FuUHVuY3R1YXRvcigpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChw
cmV2VG9rZW4udmFsdWUgPT09ICcpJykgewogICAgICAgICAgICAgICAgY2hlY2tUb2tlbiA9IGV4
dHJhLnRva2Vuc1tleHRyYS5vcGVuUGFyZW5Ub2tlbiAtIDFdOwogICAgICAgICAgICAgICAgaWYg
KGNoZWNrVG9rZW4gJiYKICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tUb2tlbi50eXBlID09
PSAnS2V5d29yZCcgJiYKICAgICAgICAgICAgICAgICAgICAgICAgKGNoZWNrVG9rZW4udmFsdWUg
PT09ICdpZicgfHwKICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrVG9rZW4udmFsdWUgPT09
ICd3aGlsZScgfHwKICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrVG9rZW4udmFsdWUgPT09
ICdmb3InIHx8CiAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja1Rva2VuLnZhbHVlID09PSAn
d2l0aCcpKSB7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbGxlY3RSZWdleCgpOwogICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIHNjYW5QdW5jdHVhdG9yKCk7CiAg
ICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHByZXZUb2tlbi52YWx1ZSA9PT0gJ30nKSB7CiAg
ICAgICAgICAgICAgICAvLyBEaXZpZGluZyBhIGZ1bmN0aW9uIGJ5IGFueXRoaW5nIG1ha2VzIGxp
dHRsZSBzZW5zZSwKICAgICAgICAgICAgICAgIC8vIGJ1dCB3ZSBoYXZlIHRvIGNoZWNrIGZvciB0
aGF0LgogICAgICAgICAgICAgICAgaWYgKGV4dHJhLnRva2Vuc1tleHRyYS5vcGVuQ3VybHlUb2tl
biAtIDNdICYmCiAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhLnRva2Vuc1tleHRyYS5vcGVu
Q3VybHlUb2tlbiAtIDNdLnR5cGUgPT09ICdLZXl3b3JkJykgewogICAgICAgICAgICAgICAgICAg
IC8vIEFub255bW91cyBmdW5jdGlvbi4KICAgICAgICAgICAgICAgICAgICBjaGVja1Rva2VuID0g
ZXh0cmEudG9rZW5zW2V4dHJhLm9wZW5DdXJseVRva2VuIC0gNF07CiAgICAgICAgICAgICAgICAg
ICAgaWYgKCFjaGVja1Rva2VuKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzY2Fu
UHVuY3R1YXRvcigpOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxz
ZSBpZiAoZXh0cmEudG9rZW5zW2V4dHJhLm9wZW5DdXJseVRva2VuIC0gNF0gJiYKICAgICAgICAg
ICAgICAgICAgICAgICAgZXh0cmEudG9rZW5zW2V4dHJhLm9wZW5DdXJseVRva2VuIC0gNF0udHlw
ZSA9PT0gJ0tleXdvcmQnKSB7CiAgICAgICAgICAgICAgICAgICAgLy8gTmFtZWQgZnVuY3Rpb24u
CiAgICAgICAgICAgICAgICAgICAgY2hlY2tUb2tlbiA9IGV4dHJhLnRva2Vuc1tleHRyYS5vcGVu
Q3VybHlUb2tlbiAtIDVdOwogICAgICAgICAgICAgICAgICAgIGlmICghY2hlY2tUb2tlbikgewog
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29sbGVjdFJlZ2V4KCk7CiAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gc2NhblB1bmN0dWF0b3IoKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAg
IC8vIGNoZWNrVG9rZW4gZGV0ZXJtaW5lcyB3aGV0aGVyIHRoZSBmdW5jdGlvbiBpcwogICAgICAg
ICAgICAgICAgLy8gYSBkZWNsYXJhdGlvbiBvciBhbiBleHByZXNzaW9uLgogICAgICAgICAgICAg
ICAgaWYgKEZuRXhwclRva2Vucy5pbmRleE9mKGNoZWNrVG9rZW4udmFsdWUpID49IDApIHsKICAg
ICAgICAgICAgICAgICAgICAvLyBJdCBpcyBhbiBleHByZXNzaW9uLgogICAgICAgICAgICAgICAg
ICAgIHJldHVybiBzY2FuUHVuY3R1YXRvcigpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgICAgLy8gSXQgaXMgYSBkZWNsYXJhdGlvbi4KICAgICAgICAgICAgICAgIHJldHVybiBjb2xs
ZWN0UmVnZXgoKTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gY29sbGVjdFJlZ2V4
KCk7CiAgICAgICAgfQogICAgICAgIGlmIChwcmV2VG9rZW4udHlwZSA9PT0gJ0tleXdvcmQnKSB7
CiAgICAgICAgICAgIHJldHVybiBjb2xsZWN0UmVnZXgoKTsKICAgICAgICB9CiAgICAgICAgcmV0
dXJuIHNjYW5QdW5jdHVhdG9yKCk7CiAgICB9CgogICAgZnVuY3Rpb24gYWR2YW5jZSgpIHsKICAg
ICAgICB2YXIgY2g7CgogICAgICAgIHNraXBDb21tZW50KCk7CgogICAgICAgIGlmIChpbmRleCA+
PSBsZW5ndGgpIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHR5cGU6IFRv
a2VuLkVPRiwKICAgICAgICAgICAgICAgIGxpbmVOdW1iZXI6IGxpbmVOdW1iZXIsCiAgICAgICAg
ICAgICAgICBsaW5lU3RhcnQ6IGxpbmVTdGFydCwKICAgICAgICAgICAgICAgIHN0YXJ0OiBpbmRl
eCwKICAgICAgICAgICAgICAgIGVuZDogaW5kZXgKICAgICAgICAgICAgfTsKICAgICAgICB9Cgog
ICAgICAgIGNoID0gc291cmNlLmNoYXJDb2RlQXQoaW5kZXgpOwoKICAgICAgICBpZiAoaXNJZGVu
dGlmaWVyU3RhcnQoY2gpKSB7CiAgICAgICAgICAgIHJldHVybiBzY2FuSWRlbnRpZmllcigpOwog
ICAgICAgIH0KCiAgICAgICAgLy8gVmVyeSBjb21tb246ICggYW5kICkgYW5kIDsKICAgICAgICBp
ZiAoY2ggPT09IDB4MjggfHwgY2ggPT09IDB4MjkgfHwgY2ggPT09IDB4M0IpIHsKICAgICAgICAg
ICAgcmV0dXJuIHNjYW5QdW5jdHVhdG9yKCk7CiAgICAgICAgfQoKICAgICAgICAvLyBTdHJpbmcg
bGl0ZXJhbCBzdGFydHMgd2l0aCBzaW5nbGUgcXVvdGUgKFUrMDAyNykgb3IgZG91YmxlIHF1b3Rl
IChVKzAwMjIpLgogICAgICAgIGlmIChjaCA9PT0gMHgyNyB8fCBjaCA9PT0gMHgyMikgewogICAg
ICAgICAgICByZXR1cm4gc2NhblN0cmluZ0xpdGVyYWwoKTsKICAgICAgICB9CgoKICAgICAgICAv
LyBEb3QgKC4pIFUrMDAyRSBjYW4gYWxzbyBzdGFydCBhIGZsb2F0aW5nLXBvaW50IG51bWJlciwg
aGVuY2UgdGhlIG5lZWQKICAgICAgICAvLyB0byBjaGVjayB0aGUgbmV4dCBjaGFyYWN0ZXIuCiAg
ICAgICAgaWYgKGNoID09PSAweDJFKSB7CiAgICAgICAgICAgIGlmIChpc0RlY2ltYWxEaWdpdChz
b3VyY2UuY2hhckNvZGVBdChpbmRleCArIDEpKSkgewogICAgICAgICAgICAgICAgcmV0dXJuIHNj
YW5OdW1lcmljTGl0ZXJhbCgpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiBzY2Fu
UHVuY3R1YXRvcigpOwogICAgICAgIH0KCiAgICAgICAgaWYgKGlzRGVjaW1hbERpZ2l0KGNoKSkg
ewogICAgICAgICAgICByZXR1cm4gc2Nhbk51bWVyaWNMaXRlcmFsKCk7CiAgICAgICAgfQoKICAg
ICAgICAvLyBTbGFzaCAoLykgVSswMDJGIGNhbiBhbHNvIHN0YXJ0IGEgcmVnZXguCiAgICAgICAg
aWYgKGV4dHJhLnRva2VuaXplICYmIGNoID09PSAweDJGKSB7CiAgICAgICAgICAgIHJldHVybiBh
ZHZhbmNlU2xhc2goKTsKICAgICAgICB9CgogICAgICAgIHJldHVybiBzY2FuUHVuY3R1YXRvcigp
OwogICAgfQoKICAgIGZ1bmN0aW9uIGNvbGxlY3RUb2tlbigpIHsKICAgICAgICB2YXIgbG9jLCB0
b2tlbiwgcmFuZ2UsIHZhbHVlOwoKICAgICAgICBza2lwQ29tbWVudCgpOwogICAgICAgIGxvYyA9
IHsKICAgICAgICAgICAgc3RhcnQ6IHsKICAgICAgICAgICAgICAgIGxpbmU6IGxpbmVOdW1iZXIs
CiAgICAgICAgICAgICAgICBjb2x1bW46IGluZGV4IC0gbGluZVN0YXJ0CiAgICAgICAgICAgIH0K
ICAgICAgICB9OwoKICAgICAgICB0b2tlbiA9IGFkdmFuY2UoKTsKICAgICAgICBsb2MuZW5kID0g
ewogICAgICAgICAgICBsaW5lOiBsaW5lTnVtYmVyLAogICAgICAgICAgICBjb2x1bW46IGluZGV4
IC0gbGluZVN0YXJ0CiAgICAgICAgfTsKCiAgICAgICAgaWYgKHRva2VuLnR5cGUgIT09IFRva2Vu
LkVPRikgewogICAgICAgICAgICB2YWx1ZSA9IHNvdXJjZS5zbGljZSh0b2tlbi5zdGFydCwgdG9r
ZW4uZW5kKTsKICAgICAgICAgICAgZXh0cmEudG9rZW5zLnB1c2goewogICAgICAgICAgICAgICAg
dHlwZTogVG9rZW5OYW1lW3Rva2VuLnR5cGVdLAogICAgICAgICAgICAgICAgdmFsdWU6IHZhbHVl
LAogICAgICAgICAgICAgICAgcmFuZ2U6IFt0b2tlbi5zdGFydCwgdG9rZW4uZW5kXSwKICAgICAg
ICAgICAgICAgIGxvYzogbG9jCiAgICAgICAgICAgIH0pOwogICAgICAgIH0KCiAgICAgICAgcmV0
dXJuIHRva2VuOwogICAgfQoKICAgIGZ1bmN0aW9uIGxleCgpIHsKICAgICAgICB2YXIgdG9rZW47
CgogICAgICAgIHRva2VuID0gbG9va2FoZWFkOwogICAgICAgIGluZGV4ID0gdG9rZW4uZW5kOwog
ICAgICAgIGxpbmVOdW1iZXIgPSB0b2tlbi5saW5lTnVtYmVyOwogICAgICAgIGxpbmVTdGFydCA9
IHRva2VuLmxpbmVTdGFydDsKCiAgICAgICAgbG9va2FoZWFkID0gKHR5cGVvZiBleHRyYS50b2tl
bnMgIT09ICd1bmRlZmluZWQnKSA/IGNvbGxlY3RUb2tlbigpIDogYWR2YW5jZSgpOwoKICAgICAg
ICBpbmRleCA9IHRva2VuLmVuZDsKICAgICAgICBsaW5lTnVtYmVyID0gdG9rZW4ubGluZU51bWJl
cjsKICAgICAgICBsaW5lU3RhcnQgPSB0b2tlbi5saW5lU3RhcnQ7CgogICAgICAgIHJldHVybiB0
b2tlbjsKICAgIH0KCiAgICBmdW5jdGlvbiBwZWVrKCkgewogICAgICAgIHZhciBwb3MsIGxpbmUs
IHN0YXJ0OwoKICAgICAgICBwb3MgPSBpbmRleDsKICAgICAgICBsaW5lID0gbGluZU51bWJlcjsK
ICAgICAgICBzdGFydCA9IGxpbmVTdGFydDsKICAgICAgICBsb29rYWhlYWQgPSAodHlwZW9mIGV4
dHJhLnRva2VucyAhPT0gJ3VuZGVmaW5lZCcpID8gY29sbGVjdFRva2VuKCkgOiBhZHZhbmNlKCk7
CiAgICAgICAgaW5kZXggPSBwb3M7CiAgICAgICAgbGluZU51bWJlciA9IGxpbmU7CiAgICAgICAg
bGluZVN0YXJ0ID0gc3RhcnQ7CiAgICB9CgogICAgZnVuY3Rpb24gUG9zaXRpb24obGluZSwgY29s
dW1uKSB7CiAgICAgICAgdGhpcy5saW5lID0gbGluZTsKICAgICAgICB0aGlzLmNvbHVtbiA9IGNv
bHVtbjsKICAgIH0KCiAgICBmdW5jdGlvbiBTb3VyY2VMb2NhdGlvbihzdGFydExpbmUsIHN0YXJ0
Q29sdW1uLCBsaW5lLCBjb2x1bW4pIHsKICAgICAgICB0aGlzLnN0YXJ0ID0gbmV3IFBvc2l0aW9u
KHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4pOwogICAgICAgIHRoaXMuZW5kID0gbmV3IFBvc2l0aW9u
KGxpbmUsIGNvbHVtbik7CiAgICB9CgogICAgU3ludGF4VHJlZURlbGVnYXRlID0gewoKICAgICAg
ICBuYW1lOiAnU3ludGF4VHJlZScsCgogICAgICAgIHByb2Nlc3NDb21tZW50OiBmdW5jdGlvbiAo
bm9kZSkgewogICAgICAgICAgICB2YXIgbGFzdENoaWxkLCB0cmFpbGluZ0NvbW1lbnRzOwoKICAg
ICAgICAgICAgaWYgKG5vZGUudHlwZSA9PT0gU3ludGF4LlByb2dyYW0pIHsKICAgICAgICAgICAg
ICAgIGlmIChub2RlLmJvZHkubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKGV4dHJh
LnRyYWlsaW5nQ29tbWVudHMubGVuZ3RoID4gMCkgewogICAgICAgICAgICAgICAgaWYgKGV4dHJh
LnRyYWlsaW5nQ29tbWVudHNbMF0ucmFuZ2VbMF0gPj0gbm9kZS5yYW5nZVsxXSkgewogICAgICAg
ICAgICAgICAgICAgIHRyYWlsaW5nQ29tbWVudHMgPSBleHRyYS50cmFpbGluZ0NvbW1lbnRzOwog
ICAgICAgICAgICAgICAgICAgIGV4dHJhLnRyYWlsaW5nQ29tbWVudHMgPSBbXTsKICAgICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgZXh0cmEudHJhaWxpbmdDb21tZW50
cy5sZW5ndGggPSAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgaWYgKGV4dHJhLmJvdHRvbVJpZ2h0U3RhY2subGVuZ3RoID4gMCAmJgogICAg
ICAgICAgICAgICAgICAgICAgICBleHRyYS5ib3R0b21SaWdodFN0YWNrW2V4dHJhLmJvdHRvbVJp
Z2h0U3RhY2subGVuZ3RoIC0gMV0udHJhaWxpbmdDb21tZW50cyAmJgogICAgICAgICAgICAgICAg
ICAgICAgICBleHRyYS5ib3R0b21SaWdodFN0YWNrW2V4dHJhLmJvdHRvbVJpZ2h0U3RhY2subGVu
Z3RoIC0gMV0udHJhaWxpbmdDb21tZW50c1swXS5yYW5nZVswXSA+PSBub2RlLnJhbmdlWzFdKSB7
CiAgICAgICAgICAgICAgICAgICAgdHJhaWxpbmdDb21tZW50cyA9IGV4dHJhLmJvdHRvbVJpZ2h0
U3RhY2tbZXh0cmEuYm90dG9tUmlnaHRTdGFjay5sZW5ndGggLSAxXS50cmFpbGluZ0NvbW1lbnRz
OwogICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBleHRyYS5ib3R0b21SaWdodFN0YWNrW2V4dHJh
LmJvdHRvbVJpZ2h0U3RhY2subGVuZ3RoIC0gMV0udHJhaWxpbmdDb21tZW50czsKICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgfQoKICAgICAgICAgICAgLy8gRWF0aW5nIHRoZSBzdGFjay4K
ICAgICAgICAgICAgd2hpbGUgKGV4dHJhLmJvdHRvbVJpZ2h0U3RhY2subGVuZ3RoID4gMCAmJiBl
eHRyYS5ib3R0b21SaWdodFN0YWNrW2V4dHJhLmJvdHRvbVJpZ2h0U3RhY2subGVuZ3RoIC0gMV0u
cmFuZ2VbMF0gPj0gbm9kZS5yYW5nZVswXSkgewogICAgICAgICAgICAgICAgbGFzdENoaWxkID0g
ZXh0cmEuYm90dG9tUmlnaHRTdGFjay5wb3AoKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAg
aWYgKGxhc3RDaGlsZCkgewogICAgICAgICAgICAgICAgaWYgKGxhc3RDaGlsZC5sZWFkaW5nQ29t
bWVudHMgJiYgbGFzdENoaWxkLmxlYWRpbmdDb21tZW50c1tsYXN0Q2hpbGQubGVhZGluZ0NvbW1l
bnRzLmxlbmd0aCAtIDFdLnJhbmdlWzFdIDw9IG5vZGUucmFuZ2VbMF0pIHsKICAgICAgICAgICAg
ICAgICAgICBub2RlLmxlYWRpbmdDb21tZW50cyA9IGxhc3RDaGlsZC5sZWFkaW5nQ29tbWVudHM7
CiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGxhc3RDaGlsZC5sZWFkaW5nQ29tbWVudHM7CiAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSBpZiAoZXh0cmEubGVhZGluZ0NvbW1l
bnRzLmxlbmd0aCA+IDAgJiYgZXh0cmEubGVhZGluZ0NvbW1lbnRzW2V4dHJhLmxlYWRpbmdDb21t
ZW50cy5sZW5ndGggLSAxXS5yYW5nZVsxXSA8PSBub2RlLnJhbmdlWzBdKSB7CiAgICAgICAgICAg
ICAgICBub2RlLmxlYWRpbmdDb21tZW50cyA9IGV4dHJhLmxlYWRpbmdDb21tZW50czsKICAgICAg
ICAgICAgICAgIGV4dHJhLmxlYWRpbmdDb21tZW50cyA9IFtdOwogICAgICAgICAgICB9CgoKICAg
ICAgICAgICAgaWYgKHRyYWlsaW5nQ29tbWVudHMpIHsKICAgICAgICAgICAgICAgIG5vZGUudHJh
aWxpbmdDb21tZW50cyA9IHRyYWlsaW5nQ29tbWVudHM7CiAgICAgICAgICAgIH0KCiAgICAgICAg
ICAgIGV4dHJhLmJvdHRvbVJpZ2h0U3RhY2sucHVzaChub2RlKTsKICAgICAgICB9LAoKICAgICAg
ICBtYXJrRW5kOiBmdW5jdGlvbiAobm9kZSwgc3RhcnRUb2tlbikgewogICAgICAgICAgICBpZiAo
ZXh0cmEucmFuZ2UpIHsKICAgICAgICAgICAgICAgIG5vZGUucmFuZ2UgPSBbc3RhcnRUb2tlbi5z
dGFydCwgaW5kZXhdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChleHRyYS5sb2MpIHsK
ICAgICAgICAgICAgICAgIG5vZGUubG9jID0gbmV3IFNvdXJjZUxvY2F0aW9uKAogICAgICAgICAg
ICAgICAgICAgIHN0YXJ0VG9rZW4uc3RhcnRMaW5lTnVtYmVyID09PSB1bmRlZmluZWQgPyAgc3Rh
cnRUb2tlbi5saW5lTnVtYmVyIDogc3RhcnRUb2tlbi5zdGFydExpbmVOdW1iZXIsCiAgICAgICAg
ICAgICAgICAgICAgc3RhcnRUb2tlbi5zdGFydCAtIChzdGFydFRva2VuLnN0YXJ0TGluZVN0YXJ0
ID09PSB1bmRlZmluZWQgPyAgc3RhcnRUb2tlbi5saW5lU3RhcnQgOiBzdGFydFRva2VuLnN0YXJ0
TGluZVN0YXJ0KSwKICAgICAgICAgICAgICAgICAgICBsaW5lTnVtYmVyLAogICAgICAgICAgICAg
ICAgICAgIGluZGV4IC0gbGluZVN0YXJ0CiAgICAgICAgICAgICAgICApOwogICAgICAgICAgICAg
ICAgdGhpcy5wb3N0UHJvY2Vzcyhub2RlKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYg
KGV4dHJhLmF0dGFjaENvbW1lbnQpIHsKICAgICAgICAgICAgICAgIHRoaXMucHJvY2Vzc0NvbW1l
bnQobm9kZSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIG5vZGU7CiAgICAgICAg
fSwKCiAgICAgICAgcG9zdFByb2Nlc3M6IGZ1bmN0aW9uIChub2RlKSB7CiAgICAgICAgICAgIGlm
IChleHRyYS5zb3VyY2UpIHsKICAgICAgICAgICAgICAgIG5vZGUubG9jLnNvdXJjZSA9IGV4dHJh
LnNvdXJjZTsKICAgICAgICAgICAgfQogICAgICAgICAgICByZXR1cm4gbm9kZTsKICAgICAgICB9
LAoKICAgICAgICBjcmVhdGVBcnJheUV4cHJlc3Npb246IGZ1bmN0aW9uIChlbGVtZW50cykgewog
ICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkFycmF5RXhw
cmVzc2lvbiwKICAgICAgICAgICAgICAgIGVsZW1lbnRzOiBlbGVtZW50cwogICAgICAgICAgICB9
OwogICAgICAgIH0sCgogICAgICAgIGNyZWF0ZUFzc2lnbm1lbnRFeHByZXNzaW9uOiBmdW5jdGlv
biAob3BlcmF0b3IsIGxlZnQsIHJpZ2h0KSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAg
ICAgICAgICB0eXBlOiBTeW50YXguQXNzaWdubWVudEV4cHJlc3Npb24sCiAgICAgICAgICAgICAg
ICBvcGVyYXRvcjogb3BlcmF0b3IsCiAgICAgICAgICAgICAgICBsZWZ0OiBsZWZ0LAogICAgICAg
ICAgICAgICAgcmlnaHQ6IHJpZ2h0CiAgICAgICAgICAgIH07CiAgICAgICAgfSwKCiAgICAgICAg
Y3JlYXRlQmluYXJ5RXhwcmVzc2lvbjogZnVuY3Rpb24gKG9wZXJhdG9yLCBsZWZ0LCByaWdodCkg
ewogICAgICAgICAgICB2YXIgdHlwZSA9IChvcGVyYXRvciA9PT0gJ3x8JyB8fCBvcGVyYXRvciA9
PT0gJyYmJykgPyBTeW50YXguTG9naWNhbEV4cHJlc3Npb24gOgogICAgICAgICAgICAgICAgICAg
ICAgICBTeW50YXguQmluYXJ5RXhwcmVzc2lvbjsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAg
ICAgICAgICAgIHR5cGU6IHR5cGUsCiAgICAgICAgICAgICAgICBvcGVyYXRvcjogb3BlcmF0b3Is
CiAgICAgICAgICAgICAgICBsZWZ0OiBsZWZ0LAogICAgICAgICAgICAgICAgcmlnaHQ6IHJpZ2h0
CiAgICAgICAgICAgIH07CiAgICAgICAgfSwKCiAgICAgICAgY3JlYXRlQmxvY2tTdGF0ZW1lbnQ6
IGZ1bmN0aW9uIChib2R5KSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB0
eXBlOiBTeW50YXguQmxvY2tTdGF0ZW1lbnQsCiAgICAgICAgICAgICAgICBib2R5OiBib2R5CiAg
ICAgICAgICAgIH07CiAgICAgICAgfSwKCiAgICAgICAgY3JlYXRlQnJlYWtTdGF0ZW1lbnQ6IGZ1
bmN0aW9uIChsYWJlbCkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdHlw
ZTogU3ludGF4LkJyZWFrU3RhdGVtZW50LAogICAgICAgICAgICAgICAgbGFiZWw6IGxhYmVsCiAg
ICAgICAgICAgIH07CiAgICAgICAgfSwKCiAgICAgICAgY3JlYXRlQ2FsbEV4cHJlc3Npb246IGZ1
bmN0aW9uIChjYWxsZWUsIGFyZ3MpIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAg
ICAgIHR5cGU6IFN5bnRheC5DYWxsRXhwcmVzc2lvbiwKICAgICAgICAgICAgICAgIGNhbGxlZTog
Y2FsbGVlLAogICAgICAgICAgICAgICAgJ2FyZ3VtZW50cyc6IGFyZ3MKICAgICAgICAgICAgfTsK
ICAgICAgICB9LAoKICAgICAgICBjcmVhdGVDYXRjaENsYXVzZTogZnVuY3Rpb24gKHBhcmFtLCBi
b2R5KSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXgu
Q2F0Y2hDbGF1c2UsCiAgICAgICAgICAgICAgICBwYXJhbTogcGFyYW0sCiAgICAgICAgICAgICAg
ICBib2R5OiBib2R5CiAgICAgICAgICAgIH07CiAgICAgICAgfSwKCiAgICAgICAgY3JlYXRlQ29u
ZGl0aW9uYWxFeHByZXNzaW9uOiBmdW5jdGlvbiAodGVzdCwgY29uc2VxdWVudCwgYWx0ZXJuYXRl
KSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguQ29u
ZGl0aW9uYWxFeHByZXNzaW9uLAogICAgICAgICAgICAgICAgdGVzdDogdGVzdCwKICAgICAgICAg
ICAgICAgIGNvbnNlcXVlbnQ6IGNvbnNlcXVlbnQsCiAgICAgICAgICAgICAgICBhbHRlcm5hdGU6
IGFsdGVybmF0ZQogICAgICAgICAgICB9OwogICAgICAgIH0sCgogICAgICAgIGNyZWF0ZUNvbnRp
bnVlU3RhdGVtZW50OiBmdW5jdGlvbiAobGFiZWwpIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAg
ICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5Db250aW51ZVN0YXRlbWVudCwKICAgICAgICAgICAg
ICAgIGxhYmVsOiBsYWJlbAogICAgICAgICAgICB9OwogICAgICAgIH0sCgogICAgICAgIGNyZWF0
ZURlYnVnZ2VyU3RhdGVtZW50OiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAg
ICAgICAgICAgICAgICB0eXBlOiBTeW50YXguRGVidWdnZXJTdGF0ZW1lbnQKICAgICAgICAgICAg
fTsKICAgICAgICB9LAoKICAgICAgICBjcmVhdGVEb1doaWxlU3RhdGVtZW50OiBmdW5jdGlvbiAo
Ym9keSwgdGVzdCkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdHlwZTog
U3ludGF4LkRvV2hpbGVTdGF0ZW1lbnQsCiAgICAgICAgICAgICAgICBib2R5OiBib2R5LAogICAg
ICAgICAgICAgICAgdGVzdDogdGVzdAogICAgICAgICAgICB9OwogICAgICAgIH0sCgogICAgICAg
IGNyZWF0ZUVtcHR5U3RhdGVtZW50OiBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgIHJldHVybiB7
CiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguRW1wdHlTdGF0ZW1lbnQKICAgICAgICAgICAg
fTsKICAgICAgICB9LAoKICAgICAgICBjcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50OiBmdW5jdGlv
biAoZXhwcmVzc2lvbikgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdHlw
ZTogU3ludGF4LkV4cHJlc3Npb25TdGF0ZW1lbnQsCiAgICAgICAgICAgICAgICBleHByZXNzaW9u
OiBleHByZXNzaW9uCiAgICAgICAgICAgIH07CiAgICAgICAgfSwKCiAgICAgICAgY3JlYXRlRm9y
U3RhdGVtZW50OiBmdW5jdGlvbiAoaW5pdCwgdGVzdCwgdXBkYXRlLCBib2R5KSB7CiAgICAgICAg
ICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguRm9yU3RhdGVtZW50LAog
ICAgICAgICAgICAgICAgaW5pdDogaW5pdCwKICAgICAgICAgICAgICAgIHRlc3Q6IHRlc3QsCiAg
ICAgICAgICAgICAgICB1cGRhdGU6IHVwZGF0ZSwKICAgICAgICAgICAgICAgIGJvZHk6IGJvZHkK
ICAgICAgICAgICAgfTsKICAgICAgICB9LAoKICAgICAgICBjcmVhdGVGb3JJblN0YXRlbWVudDog
ZnVuY3Rpb24gKGxlZnQsIHJpZ2h0LCBib2R5KSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAg
ICAgICAgICAgICB0eXBlOiBTeW50YXguRm9ySW5TdGF0ZW1lbnQsCiAgICAgICAgICAgICAgICBs
ZWZ0OiBsZWZ0LAogICAgICAgICAgICAgICAgcmlnaHQ6IHJpZ2h0LAogICAgICAgICAgICAgICAg
Ym9keTogYm9keSwKICAgICAgICAgICAgICAgIGVhY2g6IGZhbHNlCiAgICAgICAgICAgIH07CiAg
ICAgICAgfSwKCiAgICAgICAgY3JlYXRlRnVuY3Rpb25EZWNsYXJhdGlvbjogZnVuY3Rpb24gKGlk
LCBwYXJhbXMsIGRlZmF1bHRzLCBib2R5KSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAg
ICAgICAgICB0eXBlOiBTeW50YXguRnVuY3Rpb25EZWNsYXJhdGlvbiwKICAgICAgICAgICAgICAg
IGlkOiBpZCwKICAgICAgICAgICAgICAgIHBhcmFtczogcGFyYW1zLAogICAgICAgICAgICAgICAg
ZGVmYXVsdHM6IGRlZmF1bHRzLAogICAgICAgICAgICAgICAgYm9keTogYm9keSwKICAgICAgICAg
ICAgICAgIHJlc3Q6IG51bGwsCiAgICAgICAgICAgICAgICBnZW5lcmF0b3I6IGZhbHNlLAogICAg
ICAgICAgICAgICAgZXhwcmVzc2lvbjogZmFsc2UKICAgICAgICAgICAgfTsKICAgICAgICB9LAoK
ICAgICAgICBjcmVhdGVGdW5jdGlvbkV4cHJlc3Npb246IGZ1bmN0aW9uIChpZCwgcGFyYW1zLCBk
ZWZhdWx0cywgYm9keSkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdHlw
ZTogU3ludGF4LkZ1bmN0aW9uRXhwcmVzc2lvbiwKICAgICAgICAgICAgICAgIGlkOiBpZCwKICAg
ICAgICAgICAgICAgIHBhcmFtczogcGFyYW1zLAogICAgICAgICAgICAgICAgZGVmYXVsdHM6IGRl
ZmF1bHRzLAogICAgICAgICAgICAgICAgYm9keTogYm9keSwKICAgICAgICAgICAgICAgIHJlc3Q6
IG51bGwsCiAgICAgICAgICAgICAgICBnZW5lcmF0b3I6IGZhbHNlLAogICAgICAgICAgICAgICAg
ZXhwcmVzc2lvbjogZmFsc2UKICAgICAgICAgICAgfTsKICAgICAgICB9LAoKICAgICAgICBjcmVh
dGVJZGVudGlmaWVyOiBmdW5jdGlvbiAobmFtZSkgewogICAgICAgICAgICByZXR1cm4gewogICAg
ICAgICAgICAgICAgdHlwZTogU3ludGF4LklkZW50aWZpZXIsCiAgICAgICAgICAgICAgICBuYW1l
OiBuYW1lCiAgICAgICAgICAgIH07CiAgICAgICAgfSwKCiAgICAgICAgY3JlYXRlSWZTdGF0ZW1l
bnQ6IGZ1bmN0aW9uICh0ZXN0LCBjb25zZXF1ZW50LCBhbHRlcm5hdGUpIHsKICAgICAgICAgICAg
cmV0dXJuIHsKICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5JZlN0YXRlbWVudCwKICAgICAg
ICAgICAgICAgIHRlc3Q6IHRlc3QsCiAgICAgICAgICAgICAgICBjb25zZXF1ZW50OiBjb25zZXF1
ZW50LAogICAgICAgICAgICAgICAgYWx0ZXJuYXRlOiBhbHRlcm5hdGUKICAgICAgICAgICAgfTsK
ICAgICAgICB9LAoKICAgICAgICBjcmVhdGVMYWJlbGVkU3RhdGVtZW50OiBmdW5jdGlvbiAobGFi
ZWwsIGJvZHkpIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAgIHR5cGU6IFN5
bnRheC5MYWJlbGVkU3RhdGVtZW50LAogICAgICAgICAgICAgICAgbGFiZWw6IGxhYmVsLAogICAg
ICAgICAgICAgICAgYm9keTogYm9keQogICAgICAgICAgICB9OwogICAgICAgIH0sCgogICAgICAg
IGNyZWF0ZUxpdGVyYWw6IGZ1bmN0aW9uICh0b2tlbikgewogICAgICAgICAgICByZXR1cm4gewog
ICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LkxpdGVyYWwsCiAgICAgICAgICAgICAgICB2YWx1
ZTogdG9rZW4udmFsdWUsCiAgICAgICAgICAgICAgICByYXc6IHNvdXJjZS5zbGljZSh0b2tlbi5z
dGFydCwgdG9rZW4uZW5kKQogICAgICAgICAgICB9OwogICAgICAgIH0sCgogICAgICAgIGNyZWF0
ZU1lbWJlckV4cHJlc3Npb246IGZ1bmN0aW9uIChhY2Nlc3Nvciwgb2JqZWN0LCBwcm9wZXJ0eSkg
ewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdHlwZTogU3ludGF4Lk1lbWJl
ckV4cHJlc3Npb24sCiAgICAgICAgICAgICAgICBjb21wdXRlZDogYWNjZXNzb3IgPT09ICdbJywK
ICAgICAgICAgICAgICAgIG9iamVjdDogb2JqZWN0LAogICAgICAgICAgICAgICAgcHJvcGVydHk6
IHByb3BlcnR5CiAgICAgICAgICAgIH07CiAgICAgICAgfSwKCiAgICAgICAgY3JlYXRlTmV3RXhw
cmVzc2lvbjogZnVuY3Rpb24gKGNhbGxlZSwgYXJncykgewogICAgICAgICAgICByZXR1cm4gewog
ICAgICAgICAgICAgICAgdHlwZTogU3ludGF4Lk5ld0V4cHJlc3Npb24sCiAgICAgICAgICAgICAg
ICBjYWxsZWU6IGNhbGxlZSwKICAgICAgICAgICAgICAgICdhcmd1bWVudHMnOiBhcmdzCiAgICAg
ICAgICAgIH07CiAgICAgICAgfSwKCiAgICAgICAgY3JlYXRlT2JqZWN0RXhwcmVzc2lvbjogZnVu
Y3Rpb24gKHByb3BlcnRpZXMpIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgICAg
IHR5cGU6IFN5bnRheC5PYmplY3RFeHByZXNzaW9uLAogICAgICAgICAgICAgICAgcHJvcGVydGll
czogcHJvcGVydGllcwogICAgICAgICAgICB9OwogICAgICAgIH0sCgogICAgICAgIGNyZWF0ZVBv
c3RmaXhFeHByZXNzaW9uOiBmdW5jdGlvbiAob3BlcmF0b3IsIGFyZ3VtZW50KSB7CiAgICAgICAg
ICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguVXBkYXRlRXhwcmVzc2lv
biwKICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBvcGVyYXRvciwKICAgICAgICAgICAgICAgIGFy
Z3VtZW50OiBhcmd1bWVudCwKICAgICAgICAgICAgICAgIHByZWZpeDogZmFsc2UKICAgICAgICAg
ICAgfTsKICAgICAgICB9LAoKICAgICAgICBjcmVhdGVQcm9ncmFtOiBmdW5jdGlvbiAoYm9keSkg
ewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LlByb2dy
YW0sCiAgICAgICAgICAgICAgICBib2R5OiBib2R5CiAgICAgICAgICAgIH07CiAgICAgICAgfSwK
CiAgICAgICAgY3JlYXRlUHJvcGVydHk6IGZ1bmN0aW9uIChraW5kLCBrZXksIHZhbHVlKSB7CiAg
ICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguUHJvcGVydHks
CiAgICAgICAgICAgICAgICBrZXk6IGtleSwKICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSwK
ICAgICAgICAgICAgICAgIGtpbmQ6IGtpbmQKICAgICAgICAgICAgfTsKICAgICAgICB9LAoKICAg
ICAgICBjcmVhdGVSZXR1cm5TdGF0ZW1lbnQ6IGZ1bmN0aW9uIChhcmd1bWVudCkgewogICAgICAg
ICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LlJldHVyblN0YXRlbWVu
dCwKICAgICAgICAgICAgICAgIGFyZ3VtZW50OiBhcmd1bWVudAogICAgICAgICAgICB9OwogICAg
ICAgIH0sCgogICAgICAgIGNyZWF0ZVNlcXVlbmNlRXhwcmVzc2lvbjogZnVuY3Rpb24gKGV4cHJl
c3Npb25zKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAgICAgICB0eXBlOiBTeW50
YXguU2VxdWVuY2VFeHByZXNzaW9uLAogICAgICAgICAgICAgICAgZXhwcmVzc2lvbnM6IGV4cHJl
c3Npb25zCiAgICAgICAgICAgIH07CiAgICAgICAgfSwKCiAgICAgICAgY3JlYXRlU3dpdGNoQ2Fz
ZTogZnVuY3Rpb24gKHRlc3QsIGNvbnNlcXVlbnQpIHsKICAgICAgICAgICAgcmV0dXJuIHsKICAg
ICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5Td2l0Y2hDYXNlLAogICAgICAgICAgICAgICAgdGVz
dDogdGVzdCwKICAgICAgICAgICAgICAgIGNvbnNlcXVlbnQ6IGNvbnNlcXVlbnQKICAgICAgICAg
ICAgfTsKICAgICAgICB9LAoKICAgICAgICBjcmVhdGVTd2l0Y2hTdGF0ZW1lbnQ6IGZ1bmN0aW9u
IChkaXNjcmltaW5hbnQsIGNhc2VzKSB7CiAgICAgICAgICAgIHJldHVybiB7CiAgICAgICAgICAg
ICAgICB0eXBlOiBTeW50YXguU3dpdGNoU3RhdGVtZW50LAogICAgICAgICAgICAgICAgZGlzY3Jp
bWluYW50OiBkaXNjcmltaW5hbnQsCiAgICAgICAgICAgICAgICBjYXNlczogY2FzZXMKICAgICAg
ICAgICAgfTsKICAgICAgICB9LAoKICAgICAgICBjcmVhdGVUaGlzRXhwcmVzc2lvbjogZnVuY3Rp
b24gKCkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdHlwZTogU3ludGF4
LlRoaXNFeHByZXNzaW9uCiAgICAgICAgICAgIH07CiAgICAgICAgfSwKCiAgICAgICAgY3JlYXRl
VGhyb3dTdGF0ZW1lbnQ6IGZ1bmN0aW9uIChhcmd1bWVudCkgewogICAgICAgICAgICByZXR1cm4g
ewogICAgICAgICAgICAgICAgdHlwZTogU3ludGF4LlRocm93U3RhdGVtZW50LAogICAgICAgICAg
ICAgICAgYXJndW1lbnQ6IGFyZ3VtZW50CiAgICAgICAgICAgIH07CiAgICAgICAgfSwKCiAgICAg
ICAgY3JlYXRlVHJ5U3RhdGVtZW50OiBmdW5jdGlvbiAoYmxvY2ssIGd1YXJkZWRIYW5kbGVycywg
aGFuZGxlcnMsIGZpbmFsaXplcikgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAg
ICAgdHlwZTogU3ludGF4LlRyeVN0YXRlbWVudCwKICAgICAgICAgICAgICAgIGJsb2NrOiBibG9j
aywKICAgICAgICAgICAgICAgIGd1YXJkZWRIYW5kbGVyczogZ3VhcmRlZEhhbmRsZXJzLAogICAg
ICAgICAgICAgICAgaGFuZGxlcnM6IGhhbmRsZXJzLAogICAgICAgICAgICAgICAgZmluYWxpemVy
OiBmaW5hbGl6ZXIKICAgICAgICAgICAgfTsKICAgICAgICB9LAoKICAgICAgICBjcmVhdGVVbmFy
eUV4cHJlc3Npb246IGZ1bmN0aW9uIChvcGVyYXRvciwgYXJndW1lbnQpIHsKICAgICAgICAgICAg
aWYgKG9wZXJhdG9yID09PSAnKysnIHx8IG9wZXJhdG9yID09PSAnLS0nKSB7CiAgICAgICAgICAg
ICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5VcGRhdGVFeHBy
ZXNzaW9uLAogICAgICAgICAgICAgICAgICAgIG9wZXJhdG9yOiBvcGVyYXRvciwKICAgICAgICAg
ICAgICAgICAgICBhcmd1bWVudDogYXJndW1lbnQsCiAgICAgICAgICAgICAgICAgICAgcHJlZml4
OiB0cnVlCiAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVy
biB7CiAgICAgICAgICAgICAgICB0eXBlOiBTeW50YXguVW5hcnlFeHByZXNzaW9uLAogICAgICAg
ICAgICAgICAgb3BlcmF0b3I6IG9wZXJhdG9yLAogICAgICAgICAgICAgICAgYXJndW1lbnQ6IGFy
Z3VtZW50LAogICAgICAgICAgICAgICAgcHJlZml4OiB0cnVlCiAgICAgICAgICAgIH07CiAgICAg
ICAgfSwKCiAgICAgICAgY3JlYXRlVmFyaWFibGVEZWNsYXJhdGlvbjogZnVuY3Rpb24gKGRlY2xh
cmF0aW9ucywga2luZCkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdHlw
ZTogU3ludGF4LlZhcmlhYmxlRGVjbGFyYXRpb24sCiAgICAgICAgICAgICAgICBkZWNsYXJhdGlv
bnM6IGRlY2xhcmF0aW9ucywKICAgICAgICAgICAgICAgIGtpbmQ6IGtpbmQKICAgICAgICAgICAg
fTsKICAgICAgICB9LAoKICAgICAgICBjcmVhdGVWYXJpYWJsZURlY2xhcmF0b3I6IGZ1bmN0aW9u
IChpZCwgaW5pdCkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAgdHlwZTog
U3ludGF4LlZhcmlhYmxlRGVjbGFyYXRvciwKICAgICAgICAgICAgICAgIGlkOiBpZCwKICAgICAg
ICAgICAgICAgIGluaXQ6IGluaXQKICAgICAgICAgICAgfTsKICAgICAgICB9LAoKICAgICAgICBj
cmVhdGVXaGlsZVN0YXRlbWVudDogZnVuY3Rpb24gKHRlc3QsIGJvZHkpIHsKICAgICAgICAgICAg
cmV0dXJuIHsKICAgICAgICAgICAgICAgIHR5cGU6IFN5bnRheC5XaGlsZVN0YXRlbWVudCwKICAg
ICAgICAgICAgICAgIHRlc3Q6IHRlc3QsCiAgICAgICAgICAgICAgICBib2R5OiBib2R5CiAgICAg
ICAgICAgIH07CiAgICAgICAgfSwKCiAgICAgICAgY3JlYXRlV2l0aFN0YXRlbWVudDogZnVuY3Rp
b24gKG9iamVjdCwgYm9keSkgewogICAgICAgICAgICByZXR1cm4gewogICAgICAgICAgICAgICAg
dHlwZTogU3ludGF4LldpdGhTdGF0ZW1lbnQsCiAgICAgICAgICAgICAgICBvYmplY3Q6IG9iamVj
dCwKICAgICAgICAgICAgICAgIGJvZHk6IGJvZHkKICAgICAgICAgICAgfTsKICAgICAgICB9CiAg
ICB9OwoKICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZXJlIGlzIGEgbGluZSB0ZXJtaW5hdG9yIGJl
Zm9yZSB0aGUgbmV4dCB0b2tlbi4KCiAgICBmdW5jdGlvbiBwZWVrTGluZVRlcm1pbmF0b3IoKSB7
CiAgICAgICAgdmFyIHBvcywgbGluZSwgc3RhcnQsIGZvdW5kOwoKICAgICAgICBwb3MgPSBpbmRl
eDsKICAgICAgICBsaW5lID0gbGluZU51bWJlcjsKICAgICAgICBzdGFydCA9IGxpbmVTdGFydDsK
ICAgICAgICBza2lwQ29tbWVudCgpOwogICAgICAgIGZvdW5kID0gbGluZU51bWJlciAhPT0gbGlu
ZTsKICAgICAgICBpbmRleCA9IHBvczsKICAgICAgICBsaW5lTnVtYmVyID0gbGluZTsKICAgICAg
ICBsaW5lU3RhcnQgPSBzdGFydDsKCiAgICAgICAgcmV0dXJuIGZvdW5kOwogICAgfQoKICAgIC8v
IFRocm93IGFuIGV4Y2VwdGlvbgoKICAgIGZ1bmN0aW9uIHRocm93RXJyb3IodG9rZW4sIG1lc3Nh
Z2VGb3JtYXQpIHsKICAgICAgICB2YXIgZXJyb3IsCiAgICAgICAgICAgIGFyZ3MgPSBBcnJheS5w
cm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsIDIpLAogICAgICAgICAgICBtc2cgPSBtZXNz
YWdlRm9ybWF0LnJlcGxhY2UoCiAgICAgICAgICAgICAgICAvJShcZCkvZywKICAgICAgICAgICAg
ICAgIGZ1bmN0aW9uICh3aG9sZSwgaW5kZXgpIHsKICAgICAgICAgICAgICAgICAgICBhc3NlcnQo
aW5kZXggPCBhcmdzLmxlbmd0aCwgJ01lc3NhZ2UgcmVmZXJlbmNlIG11c3QgYmUgaW4gcmFuZ2Un
KTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXJnc1tpbmRleF07CiAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICk7CgogICAgICAgIGlmICh0eXBlb2YgdG9rZW4ubGluZU51bWJlciA9
PT0gJ251bWJlcicpIHsKICAgICAgICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoJ0xpbmUgJyArIHRv
a2VuLmxpbmVOdW1iZXIgKyAnOiAnICsgbXNnKTsKICAgICAgICAgICAgZXJyb3IuaW5kZXggPSB0
b2tlbi5zdGFydDsKICAgICAgICAgICAgZXJyb3IubGluZU51bWJlciA9IHRva2VuLmxpbmVOdW1i
ZXI7CiAgICAgICAgICAgIGVycm9yLmNvbHVtbiA9IHRva2VuLnN0YXJ0IC0gbGluZVN0YXJ0ICsg
MTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBlcnJvciA9IG5ldyBFcnJvcignTGluZSAn
ICsgbGluZU51bWJlciArICc6ICcgKyBtc2cpOwogICAgICAgICAgICBlcnJvci5pbmRleCA9IGlu
ZGV4OwogICAgICAgICAgICBlcnJvci5saW5lTnVtYmVyID0gbGluZU51bWJlcjsKICAgICAgICAg
ICAgZXJyb3IuY29sdW1uID0gaW5kZXggLSBsaW5lU3RhcnQgKyAxOwogICAgICAgIH0KCiAgICAg
ICAgZXJyb3IuZGVzY3JpcHRpb24gPSBtc2c7CiAgICAgICAgdGhyb3cgZXJyb3I7CiAgICB9Cgog
ICAgZnVuY3Rpb24gdGhyb3dFcnJvclRvbGVyYW50KCkgewogICAgICAgIHRyeSB7CiAgICAgICAg
ICAgIHRocm93RXJyb3IuYXBwbHkobnVsbCwgYXJndW1lbnRzKTsKICAgICAgICB9IGNhdGNoIChl
KSB7CiAgICAgICAgICAgIGlmIChleHRyYS5lcnJvcnMpIHsKICAgICAgICAgICAgICAgIGV4dHJh
LmVycm9ycy5wdXNoKGUpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhy
b3cgZTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCgogICAgLy8gVGhyb3cgYW4gZXhj
ZXB0aW9uIGJlY2F1c2Ugb2YgdGhlIHRva2VuLgoKICAgIGZ1bmN0aW9uIHRocm93VW5leHBlY3Rl
ZCh0b2tlbikgewogICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbi5FT0YpIHsKICAgICAg
ICAgICAgdGhyb3dFcnJvcih0b2tlbiwgTWVzc2FnZXMuVW5leHBlY3RlZEVPUyk7CiAgICAgICAg
fQoKICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW4uTnVtZXJpY0xpdGVyYWwpIHsKICAg
ICAgICAgICAgdGhyb3dFcnJvcih0b2tlbiwgTWVzc2FnZXMuVW5leHBlY3RlZE51bWJlcik7CiAg
ICAgICAgfQoKICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW4uU3RyaW5nTGl0ZXJhbCkg
ewogICAgICAgICAgICB0aHJvd0Vycm9yKHRva2VuLCBNZXNzYWdlcy5VbmV4cGVjdGVkU3RyaW5n
KTsKICAgICAgICB9CgogICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbi5JZGVudGlmaWVy
KSB7CiAgICAgICAgICAgIHRocm93RXJyb3IodG9rZW4sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRJZGVu
dGlmaWVyKTsKICAgICAgICB9CgogICAgICAgIGlmICh0b2tlbi50eXBlID09PSBUb2tlbi5LZXl3
b3JkKSB7CiAgICAgICAgICAgIGlmIChpc0Z1dHVyZVJlc2VydmVkV29yZCh0b2tlbi52YWx1ZSkp
IHsKICAgICAgICAgICAgICAgIHRocm93RXJyb3IodG9rZW4sIE1lc3NhZ2VzLlVuZXhwZWN0ZWRS
ZXNlcnZlZCk7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RyaWN0ICYmIGlzU3RyaWN0TW9kZVJl
c2VydmVkV29yZCh0b2tlbi52YWx1ZSkpIHsKICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xl
cmFudCh0b2tlbiwgTWVzc2FnZXMuU3RyaWN0UmVzZXJ2ZWRXb3JkKTsKICAgICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICB0aHJvd0Vycm9yKHRva2VuLCBNZXNz
YWdlcy5VbmV4cGVjdGVkVG9rZW4sIHRva2VuLnZhbHVlKTsKICAgICAgICB9CgogICAgICAgIC8v
IEJvb2xlYW5MaXRlcmFsLCBOdWxsTGl0ZXJhbCwgb3IgUHVuY3R1YXRvci4KICAgICAgICB0aHJv
d0Vycm9yKHRva2VuLCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sIHRva2VuLnZhbHVlKTsKICAg
IH0KCiAgICAvLyBFeHBlY3QgdGhlIG5leHQgdG9rZW4gdG8gbWF0Y2ggdGhlIHNwZWNpZmllZCBw
dW5jdHVhdG9yLgogICAgLy8gSWYgbm90LCBhbiBleGNlcHRpb24gd2lsbCBiZSB0aHJvd24uCgog
ICAgZnVuY3Rpb24gZXhwZWN0KHZhbHVlKSB7CiAgICAgICAgdmFyIHRva2VuID0gbGV4KCk7CiAg
ICAgICAgaWYgKHRva2VuLnR5cGUgIT09IFRva2VuLlB1bmN0dWF0b3IgfHwgdG9rZW4udmFsdWUg
IT09IHZhbHVlKSB7CiAgICAgICAgICAgIHRocm93VW5leHBlY3RlZCh0b2tlbik7CiAgICAgICAg
fQogICAgfQoKICAgIC8vIEV4cGVjdCB0aGUgbmV4dCB0b2tlbiB0byBtYXRjaCB0aGUgc3BlY2lm
aWVkIGtleXdvcmQuCiAgICAvLyBJZiBub3QsIGFuIGV4Y2VwdGlvbiB3aWxsIGJlIHRocm93bi4K
CiAgICBmdW5jdGlvbiBleHBlY3RLZXl3b3JkKGtleXdvcmQpIHsKICAgICAgICB2YXIgdG9rZW4g
PSBsZXgoKTsKICAgICAgICBpZiAodG9rZW4udHlwZSAhPT0gVG9rZW4uS2V5d29yZCB8fCB0b2tl
bi52YWx1ZSAhPT0ga2V5d29yZCkgewogICAgICAgICAgICB0aHJvd1VuZXhwZWN0ZWQodG9rZW4p
OwogICAgICAgIH0KICAgIH0KCiAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGUgbmV4dCB0b2tlbiBt
YXRjaGVzIHRoZSBzcGVjaWZpZWQgcHVuY3R1YXRvci4KCiAgICBmdW5jdGlvbiBtYXRjaCh2YWx1
ZSkgewogICAgICAgIHJldHVybiBsb29rYWhlYWQudHlwZSA9PT0gVG9rZW4uUHVuY3R1YXRvciAm
JiBsb29rYWhlYWQudmFsdWUgPT09IHZhbHVlOwogICAgfQoKICAgIC8vIFJldHVybiB0cnVlIGlm
IHRoZSBuZXh0IHRva2VuIG1hdGNoZXMgdGhlIHNwZWNpZmllZCBrZXl3b3JkCgogICAgZnVuY3Rp
b24gbWF0Y2hLZXl3b3JkKGtleXdvcmQpIHsKICAgICAgICByZXR1cm4gbG9va2FoZWFkLnR5cGUg
PT09IFRva2VuLktleXdvcmQgJiYgbG9va2FoZWFkLnZhbHVlID09PSBrZXl3b3JkOwogICAgfQoK
ICAgIC8vIFJldHVybiB0cnVlIGlmIHRoZSBuZXh0IHRva2VuIGlzIGFuIGFzc2lnbm1lbnQgb3Bl
cmF0b3IKCiAgICBmdW5jdGlvbiBtYXRjaEFzc2lnbigpIHsKICAgICAgICB2YXIgb3A7CgogICAg
ICAgIGlmIChsb29rYWhlYWQudHlwZSAhPT0gVG9rZW4uUHVuY3R1YXRvcikgewogICAgICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgICAgfQogICAgICAgIG9wID0gbG9va2FoZWFkLnZhbHVlOwog
ICAgICAgIHJldHVybiBvcCA9PT0gJz0nIHx8CiAgICAgICAgICAgIG9wID09PSAnKj0nIHx8CiAg
ICAgICAgICAgIG9wID09PSAnLz0nIHx8CiAgICAgICAgICAgIG9wID09PSAnJT0nIHx8CiAgICAg
ICAgICAgIG9wID09PSAnKz0nIHx8CiAgICAgICAgICAgIG9wID09PSAnLT0nIHx8CiAgICAgICAg
ICAgIG9wID09PSAnPDw9JyB8fAogICAgICAgICAgICBvcCA9PT0gJz4+PScgfHwKICAgICAgICAg
ICAgb3AgPT09ICc+Pj49JyB8fAogICAgICAgICAgICBvcCA9PT0gJyY9JyB8fAogICAgICAgICAg
ICBvcCA9PT0gJ149JyB8fAogICAgICAgICAgICBvcCA9PT0gJ3w9JzsKICAgIH0KCiAgICBmdW5j
dGlvbiBjb25zdW1lU2VtaWNvbG9uKCkgewogICAgICAgIHZhciBsaW5lOwoKICAgICAgICAvLyBD
YXRjaCB0aGUgdmVyeSBjb21tb24gY2FzZSBmaXJzdDogaW1tZWRpYXRlbHkgYSBzZW1pY29sb24g
KFUrMDAzQikuCiAgICAgICAgaWYgKHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSA9PT0gMHgzQiB8
fCBtYXRjaCgnOycpKSB7CiAgICAgICAgICAgIGxleCgpOwogICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgfQoKICAgICAgICBsaW5lID0gbGluZU51bWJlcjsKICAgICAgICBza2lwQ29tbWVudCgp
OwogICAgICAgIGlmIChsaW5lTnVtYmVyICE9PSBsaW5lKSB7CiAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICB9CgogICAgICAgIGlmIChsb29rYWhlYWQudHlwZSAhPT0gVG9rZW4uRU9GICYmICFt
YXRjaCgnfScpKSB7CiAgICAgICAgICAgIHRocm93VW5leHBlY3RlZChsb29rYWhlYWQpOwogICAg
ICAgIH0KICAgIH0KCiAgICAvLyBSZXR1cm4gdHJ1ZSBpZiBwcm92aWRlZCBleHByZXNzaW9uIGlz
IExlZnRIYW5kU2lkZUV4cHJlc3Npb24KCiAgICBmdW5jdGlvbiBpc0xlZnRIYW5kU2lkZShleHBy
KSB7CiAgICAgICAgcmV0dXJuIGV4cHIudHlwZSA9PT0gU3ludGF4LklkZW50aWZpZXIgfHwgZXhw
ci50eXBlID09PSBTeW50YXguTWVtYmVyRXhwcmVzc2lvbjsKICAgIH0KCiAgICAvLyAxMS4xLjQg
QXJyYXkgSW5pdGlhbGlzZXIKCiAgICBmdW5jdGlvbiBwYXJzZUFycmF5SW5pdGlhbGlzZXIoKSB7
CiAgICAgICAgdmFyIGVsZW1lbnRzID0gW10sIHN0YXJ0VG9rZW47CgogICAgICAgIHN0YXJ0VG9r
ZW4gPSBsb29rYWhlYWQ7CiAgICAgICAgZXhwZWN0KCdbJyk7CgogICAgICAgIHdoaWxlICghbWF0
Y2goJ10nKSkgewogICAgICAgICAgICBpZiAobWF0Y2goJywnKSkgewogICAgICAgICAgICAgICAg
bGV4KCk7CiAgICAgICAgICAgICAgICBlbGVtZW50cy5wdXNoKG51bGwpOwogICAgICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgICAgZWxlbWVudHMucHVzaChwYXJzZUFzc2lnbm1lbnRFeHBy
ZXNzaW9uKCkpOwoKICAgICAgICAgICAgICAgIGlmICghbWF0Y2goJ10nKSkgewogICAgICAgICAg
ICAgICAgICAgIGV4cGVjdCgnLCcpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAg
ICAgICAgfQoKICAgICAgICBsZXgoKTsKCiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQo
ZGVsZWdhdGUuY3JlYXRlQXJyYXlFeHByZXNzaW9uKGVsZW1lbnRzKSwgc3RhcnRUb2tlbik7CiAg
ICB9CgogICAgLy8gMTEuMS41IE9iamVjdCBJbml0aWFsaXNlcgoKICAgIGZ1bmN0aW9uIHBhcnNl
UHJvcGVydHlGdW5jdGlvbihwYXJhbSwgZmlyc3QpIHsKICAgICAgICB2YXIgcHJldmlvdXNTdHJp
Y3QsIGJvZHksIHN0YXJ0VG9rZW47CgogICAgICAgIHByZXZpb3VzU3RyaWN0ID0gc3RyaWN0Owog
ICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7CiAgICAgICAgYm9keSA9IHBhcnNlRnVuY3Rp
b25Tb3VyY2VFbGVtZW50cygpOwogICAgICAgIGlmIChmaXJzdCAmJiBzdHJpY3QgJiYgaXNSZXN0
cmljdGVkV29yZChwYXJhbVswXS5uYW1lKSkgewogICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJh
bnQoZmlyc3QsIE1lc3NhZ2VzLlN0cmljdFBhcmFtTmFtZSk7CiAgICAgICAgfQogICAgICAgIHN0
cmljdCA9IHByZXZpb3VzU3RyaWN0OwogICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRl
bGVnYXRlLmNyZWF0ZUZ1bmN0aW9uRXhwcmVzc2lvbihudWxsLCBwYXJhbSwgW10sIGJvZHkpLCBz
dGFydFRva2VuKTsKICAgIH0KCiAgICBmdW5jdGlvbiBwYXJzZU9iamVjdFByb3BlcnR5S2V5KCkg
ewogICAgICAgIHZhciB0b2tlbiwgc3RhcnRUb2tlbjsKCiAgICAgICAgc3RhcnRUb2tlbiA9IGxv
b2thaGVhZDsKICAgICAgICB0b2tlbiA9IGxleCgpOwoKICAgICAgICAvLyBOb3RlOiBUaGlzIGZ1
bmN0aW9uIGlzIGNhbGxlZCBvbmx5IGZyb20gcGFyc2VPYmplY3RQcm9wZXJ0eSgpLCB3aGVyZQog
ICAgICAgIC8vIEVPRiBhbmQgUHVuY3R1YXRvciB0b2tlbnMgYXJlIGFscmVhZHkgZmlsdGVyZWQg
b3V0LgoKICAgICAgICBpZiAodG9rZW4udHlwZSA9PT0gVG9rZW4uU3RyaW5nTGl0ZXJhbCB8fCB0
b2tlbi50eXBlID09PSBUb2tlbi5OdW1lcmljTGl0ZXJhbCkgewogICAgICAgICAgICBpZiAoc3Ry
aWN0ICYmIHRva2VuLm9jdGFsKSB7CiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQo
dG9rZW4sIE1lc3NhZ2VzLlN0cmljdE9jdGFsTGl0ZXJhbCk7CiAgICAgICAgICAgIH0KICAgICAg
ICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlTGl0ZXJhbCh0b2tl
biksIHN0YXJ0VG9rZW4pOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtF
bmQoZGVsZWdhdGUuY3JlYXRlSWRlbnRpZmllcih0b2tlbi52YWx1ZSksIHN0YXJ0VG9rZW4pOwog
ICAgfQoKICAgIGZ1bmN0aW9uIHBhcnNlT2JqZWN0UHJvcGVydHkoKSB7CiAgICAgICAgdmFyIHRv
a2VuLCBrZXksIGlkLCB2YWx1ZSwgcGFyYW0sIHN0YXJ0VG9rZW47CgogICAgICAgIHRva2VuID0g
bG9va2FoZWFkOwogICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7CgogICAgICAgIGlmICh0
b2tlbi50eXBlID09PSBUb2tlbi5JZGVudGlmaWVyKSB7CgogICAgICAgICAgICBpZCA9IHBhcnNl
T2JqZWN0UHJvcGVydHlLZXkoKTsKCiAgICAgICAgICAgIC8vIFByb3BlcnR5IEFzc2lnbm1lbnQ6
IEdldHRlciBhbmQgU2V0dGVyLgoKICAgICAgICAgICAgaWYgKHRva2VuLnZhbHVlID09PSAnZ2V0
JyAmJiAhbWF0Y2goJzonKSkgewogICAgICAgICAgICAgICAga2V5ID0gcGFyc2VPYmplY3RQcm9w
ZXJ0eUtleSgpOwogICAgICAgICAgICAgICAgZXhwZWN0KCcoJyk7CiAgICAgICAgICAgICAgICBl
eHBlY3QoJyknKTsKICAgICAgICAgICAgICAgIHZhbHVlID0gcGFyc2VQcm9wZXJ0eUZ1bmN0aW9u
KFtdKTsKICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNy
ZWF0ZVByb3BlcnR5KCdnZXQnLCBrZXksIHZhbHVlKSwgc3RhcnRUb2tlbik7CiAgICAgICAgICAg
IH0KICAgICAgICAgICAgaWYgKHRva2VuLnZhbHVlID09PSAnc2V0JyAmJiAhbWF0Y2goJzonKSkg
ewogICAgICAgICAgICAgICAga2V5ID0gcGFyc2VPYmplY3RQcm9wZXJ0eUtleSgpOwogICAgICAg
ICAgICAgICAgZXhwZWN0KCcoJyk7CiAgICAgICAgICAgICAgICB0b2tlbiA9IGxvb2thaGVhZDsK
ICAgICAgICAgICAgICAgIGlmICh0b2tlbi50eXBlICE9PSBUb2tlbi5JZGVudGlmaWVyKSB7CiAg
ICAgICAgICAgICAgICAgICAgZXhwZWN0KCcpJyk7CiAgICAgICAgICAgICAgICAgICAgdGhyb3dF
cnJvclRvbGVyYW50KHRva2VuLCBNZXNzYWdlcy5VbmV4cGVjdGVkVG9rZW4sIHRva2VuLnZhbHVl
KTsKICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHBhcnNlUHJvcGVydHlGdW5jdGlvbihbXSk7
CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHBhcmFtID0gWyBw
YXJzZVZhcmlhYmxlSWRlbnRpZmllcigpIF07CiAgICAgICAgICAgICAgICAgICAgZXhwZWN0KCcp
Jyk7CiAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBwYXJzZVByb3BlcnR5RnVuY3Rpb24ocGFy
YW0sIHRva2VuKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHJldHVybiBkZWxl
Z2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZVByb3BlcnR5KCdzZXQnLCBrZXksIHZhbHVlKSwg
c3RhcnRUb2tlbik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZXhwZWN0KCc6Jyk7CiAgICAg
ICAgICAgIHZhbHVlID0gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpOwogICAgICAgICAgICBy
ZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVQcm9wZXJ0eSgnaW5pdCcsIGlk
LCB2YWx1ZSksIHN0YXJ0VG9rZW4pOwogICAgICAgIH0KICAgICAgICBpZiAodG9rZW4udHlwZSA9
PT0gVG9rZW4uRU9GIHx8IHRva2VuLnR5cGUgPT09IFRva2VuLlB1bmN0dWF0b3IpIHsKICAgICAg
ICAgICAgdGhyb3dVbmV4cGVjdGVkKHRva2VuKTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICBrZXkgPSBwYXJzZU9iamVjdFByb3BlcnR5S2V5KCk7CiAgICAgICAgICAgIGV4cGVjdCgnOicp
OwogICAgICAgICAgICB2YWx1ZSA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKTsKICAgICAg
ICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlUHJvcGVydHkoJ2lu
aXQnLCBrZXksIHZhbHVlKSwgc3RhcnRUb2tlbik7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0
aW9uIHBhcnNlT2JqZWN0SW5pdGlhbGlzZXIoKSB7CiAgICAgICAgdmFyIHByb3BlcnRpZXMgPSBb
XSwgcHJvcGVydHksIG5hbWUsIGtleSwga2luZCwgbWFwID0ge30sIHRvU3RyaW5nID0gU3RyaW5n
LCBzdGFydFRva2VuOwoKICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkOwoKICAgICAgICBl
eHBlY3QoJ3snKTsKCiAgICAgICAgd2hpbGUgKCFtYXRjaCgnfScpKSB7CiAgICAgICAgICAgIHBy
b3BlcnR5ID0gcGFyc2VPYmplY3RQcm9wZXJ0eSgpOwoKICAgICAgICAgICAgaWYgKHByb3BlcnR5
LmtleS50eXBlID09PSBTeW50YXguSWRlbnRpZmllcikgewogICAgICAgICAgICAgICAgbmFtZSA9
IHByb3BlcnR5LmtleS5uYW1lOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
bmFtZSA9IHRvU3RyaW5nKHByb3BlcnR5LmtleS52YWx1ZSk7CiAgICAgICAgICAgIH0KICAgICAg
ICAgICAga2luZCA9IChwcm9wZXJ0eS5raW5kID09PSAnaW5pdCcpID8gUHJvcGVydHlLaW5kLkRh
dGEgOiAocHJvcGVydHkua2luZCA9PT0gJ2dldCcpID8gUHJvcGVydHlLaW5kLkdldCA6IFByb3Bl
cnR5S2luZC5TZXQ7CgogICAgICAgICAgICBrZXkgPSAnJCcgKyBuYW1lOwogICAgICAgICAgICBp
ZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1hcCwga2V5KSkgewogICAg
ICAgICAgICAgICAgaWYgKG1hcFtrZXldID09PSBQcm9wZXJ0eUtpbmQuRGF0YSkgewogICAgICAg
ICAgICAgICAgICAgIGlmIChzdHJpY3QgJiYga2luZCA9PT0gUHJvcGVydHlLaW5kLkRhdGEpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5T
dHJpY3REdXBsaWNhdGVQcm9wZXJ0eSk7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChr
aW5kICE9PSBQcm9wZXJ0eUtpbmQuRGF0YSkgewogICAgICAgICAgICAgICAgICAgICAgICB0aHJv
d0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLkFjY2Vzc29yRGF0YVByb3BlcnR5KTsKICAgICAg
ICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAg
ICAgIGlmIChraW5kID09PSBQcm9wZXJ0eUtpbmQuRGF0YSkgewogICAgICAgICAgICAgICAgICAg
ICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLkFjY2Vzc29yRGF0YVByb3BlcnR5
KTsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1hcFtrZXldICYga2luZCkgewogICAg
ICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQoe30sIE1lc3NhZ2VzLkFjY2Vz
c29yR2V0U2V0KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICBtYXBba2V5XSB8PSBraW5kOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgbWFwW2tleV0gPSBraW5kOwogICAgICAgICAgICB9CgogICAgICAgICAgICBwcm9w
ZXJ0aWVzLnB1c2gocHJvcGVydHkpOwoKICAgICAgICAgICAgaWYgKCFtYXRjaCgnfScpKSB7CiAg
ICAgICAgICAgICAgICBleHBlY3QoJywnKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAg
ICAgZXhwZWN0KCd9Jyk7CgogICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRl
LmNyZWF0ZU9iamVjdEV4cHJlc3Npb24ocHJvcGVydGllcyksIHN0YXJ0VG9rZW4pOwogICAgfQoK
ICAgIC8vIDExLjEuNiBUaGUgR3JvdXBpbmcgT3BlcmF0b3IKCiAgICBmdW5jdGlvbiBwYXJzZUdy
b3VwRXhwcmVzc2lvbigpIHsKICAgICAgICB2YXIgZXhwcjsKCiAgICAgICAgZXhwZWN0KCcoJyk7
CgogICAgICAgIGV4cHIgPSBwYXJzZUV4cHJlc3Npb24oKTsKCiAgICAgICAgZXhwZWN0KCcpJyk7
CgogICAgICAgIHJldHVybiBleHByOwogICAgfQoKCiAgICAvLyAxMS4xIFByaW1hcnkgRXhwcmVz
c2lvbnMKCiAgICBmdW5jdGlvbiBwYXJzZVByaW1hcnlFeHByZXNzaW9uKCkgewogICAgICAgIHZh
ciB0eXBlLCB0b2tlbiwgZXhwciwgc3RhcnRUb2tlbjsKCiAgICAgICAgaWYgKG1hdGNoKCcoJykp
IHsKICAgICAgICAgICAgcmV0dXJuIHBhcnNlR3JvdXBFeHByZXNzaW9uKCk7CiAgICAgICAgfQoK
ICAgICAgICBpZiAobWF0Y2goJ1snKSkgewogICAgICAgICAgICByZXR1cm4gcGFyc2VBcnJheUlu
aXRpYWxpc2VyKCk7CiAgICAgICAgfQoKICAgICAgICBpZiAobWF0Y2goJ3snKSkgewogICAgICAg
ICAgICByZXR1cm4gcGFyc2VPYmplY3RJbml0aWFsaXNlcigpOwogICAgICAgIH0KCiAgICAgICAg
dHlwZSA9IGxvb2thaGVhZC50eXBlOwogICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7Cgog
ICAgICAgIGlmICh0eXBlID09PSBUb2tlbi5JZGVudGlmaWVyKSB7CiAgICAgICAgICAgIGV4cHIg
PSAgZGVsZWdhdGUuY3JlYXRlSWRlbnRpZmllcihsZXgoKS52YWx1ZSk7CiAgICAgICAgfSBlbHNl
IGlmICh0eXBlID09PSBUb2tlbi5TdHJpbmdMaXRlcmFsIHx8IHR5cGUgPT09IFRva2VuLk51bWVy
aWNMaXRlcmFsKSB7CiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYgbG9va2FoZWFkLm9jdGFsKSB7
CiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQobG9va2FoZWFkLCBNZXNzYWdlcy5T
dHJpY3RPY3RhbExpdGVyYWwpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGV4cHIgPSBkZWxl
Z2F0ZS5jcmVhdGVMaXRlcmFsKGxleCgpKTsKICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT09IFRv
a2VuLktleXdvcmQpIHsKICAgICAgICAgICAgaWYgKG1hdGNoS2V5d29yZCgnZnVuY3Rpb24nKSkg
ewogICAgICAgICAgICAgICAgcmV0dXJuIHBhcnNlRnVuY3Rpb25FeHByZXNzaW9uKCk7CiAgICAg
ICAgICAgIH0KICAgICAgICAgICAgaWYgKG1hdGNoS2V5d29yZCgndGhpcycpKSB7CiAgICAgICAg
ICAgICAgICBsZXgoKTsKICAgICAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVUaGlz
RXhwcmVzc2lvbigpOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdGhyb3dV
bmV4cGVjdGVkKGxleCgpKTsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSBpZiAodHlwZSA9
PT0gVG9rZW4uQm9vbGVhbkxpdGVyYWwpIHsKICAgICAgICAgICAgdG9rZW4gPSBsZXgoKTsKICAg
ICAgICAgICAgdG9rZW4udmFsdWUgPSAodG9rZW4udmFsdWUgPT09ICd0cnVlJyk7CiAgICAgICAg
ICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVMaXRlcmFsKHRva2VuKTsKICAgICAgICB9IGVsc2Ug
aWYgKHR5cGUgPT09IFRva2VuLk51bGxMaXRlcmFsKSB7CiAgICAgICAgICAgIHRva2VuID0gbGV4
KCk7CiAgICAgICAgICAgIHRva2VuLnZhbHVlID0gbnVsbDsKICAgICAgICAgICAgZXhwciA9IGRl
bGVnYXRlLmNyZWF0ZUxpdGVyYWwodG9rZW4pOwogICAgICAgIH0gZWxzZSBpZiAobWF0Y2goJy8n
KSB8fCBtYXRjaCgnLz0nKSkgewogICAgICAgICAgICBpZiAodHlwZW9mIGV4dHJhLnRva2VucyAh
PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVM
aXRlcmFsKGNvbGxlY3RSZWdleCgpKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVMaXRlcmFsKHNjYW5SZWdFeHAoKSk7CiAgICAgICAg
ICAgIH0KICAgICAgICAgICAgcGVlaygpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIHRo
cm93VW5leHBlY3RlZChsZXgoKSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZGVsZWdhdGUu
bWFya0VuZChleHByLCBzdGFydFRva2VuKTsKICAgIH0KCiAgICAvLyAxMS4yIExlZnQtSGFuZC1T
aWRlIEV4cHJlc3Npb25zCgogICAgZnVuY3Rpb24gcGFyc2VBcmd1bWVudHMoKSB7CiAgICAgICAg
dmFyIGFyZ3MgPSBbXTsKCiAgICAgICAgZXhwZWN0KCcoJyk7CgogICAgICAgIGlmICghbWF0Y2go
JyknKSkgewogICAgICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKICAgICAgICAgICAg
ICAgIGFyZ3MucHVzaChwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9uKCkpOwogICAgICAgICAgICAg
ICAgaWYgKG1hdGNoKCcpJykpIHsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgICAgIGV4cGVjdCgnLCcpOwogICAgICAgICAgICB9CiAgICAg
ICAgfQoKICAgICAgICBleHBlY3QoJyknKTsKCiAgICAgICAgcmV0dXJuIGFyZ3M7CiAgICB9Cgog
ICAgZnVuY3Rpb24gcGFyc2VOb25Db21wdXRlZFByb3BlcnR5KCkgewogICAgICAgIHZhciB0b2tl
biwgc3RhcnRUb2tlbjsKCiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDsKICAgICAgICB0
b2tlbiA9IGxleCgpOwoKICAgICAgICBpZiAoIWlzSWRlbnRpZmllck5hbWUodG9rZW4pKSB7CiAg
ICAgICAgICAgIHRocm93VW5leHBlY3RlZCh0b2tlbik7CiAgICAgICAgfQoKICAgICAgICByZXR1
cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVJZGVudGlmaWVyKHRva2VuLnZhbHVl
KSwgc3RhcnRUb2tlbik7CiAgICB9CgogICAgZnVuY3Rpb24gcGFyc2VOb25Db21wdXRlZE1lbWJl
cigpIHsKICAgICAgICBleHBlY3QoJy4nKTsKCiAgICAgICAgcmV0dXJuIHBhcnNlTm9uQ29tcHV0
ZWRQcm9wZXJ0eSgpOwogICAgfQoKICAgIGZ1bmN0aW9uIHBhcnNlQ29tcHV0ZWRNZW1iZXIoKSB7
CiAgICAgICAgdmFyIGV4cHI7CgogICAgICAgIGV4cGVjdCgnWycpOwoKICAgICAgICBleHByID0g
cGFyc2VFeHByZXNzaW9uKCk7CgogICAgICAgIGV4cGVjdCgnXScpOwoKICAgICAgICByZXR1cm4g
ZXhwcjsKICAgIH0KCiAgICBmdW5jdGlvbiBwYXJzZU5ld0V4cHJlc3Npb24oKSB7CiAgICAgICAg
dmFyIGNhbGxlZSwgYXJncywgc3RhcnRUb2tlbjsKCiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2th
aGVhZDsKICAgICAgICBleHBlY3RLZXl3b3JkKCduZXcnKTsKICAgICAgICBjYWxsZWUgPSBwYXJz
ZUxlZnRIYW5kU2lkZUV4cHJlc3Npb24oKTsKICAgICAgICBhcmdzID0gbWF0Y2goJygnKSA/IHBh
cnNlQXJndW1lbnRzKCkgOiBbXTsKCiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVs
ZWdhdGUuY3JlYXRlTmV3RXhwcmVzc2lvbihjYWxsZWUsIGFyZ3MpLCBzdGFydFRva2VuKTsKICAg
IH0KCiAgICBmdW5jdGlvbiBwYXJzZUxlZnRIYW5kU2lkZUV4cHJlc3Npb25BbGxvd0NhbGwoKSB7
CiAgICAgICAgdmFyIHByZXZpb3VzQWxsb3dJbiwgZXhwciwgYXJncywgcHJvcGVydHksIHN0YXJ0
VG9rZW47CgogICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7CgogICAgICAgIHByZXZpb3Vz
QWxsb3dJbiA9IHN0YXRlLmFsbG93SW47CiAgICAgICAgc3RhdGUuYWxsb3dJbiA9IHRydWU7CiAg
ICAgICAgZXhwciA9IG1hdGNoS2V5d29yZCgnbmV3JykgPyBwYXJzZU5ld0V4cHJlc3Npb24oKSA6
IHBhcnNlUHJpbWFyeUV4cHJlc3Npb24oKTsKICAgICAgICBzdGF0ZS5hbGxvd0luID0gcHJldmlv
dXNBbGxvd0luOwoKICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgIGlmIChtYXRjaCgnLicp
KSB7CiAgICAgICAgICAgICAgICBwcm9wZXJ0eSA9IHBhcnNlTm9uQ29tcHV0ZWRNZW1iZXIoKTsK
ICAgICAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVNZW1iZXJFeHByZXNzaW9uKCcu
JywgZXhwciwgcHJvcGVydHkpOwogICAgICAgICAgICB9IGVsc2UgaWYgKG1hdGNoKCcoJykpIHsK
ICAgICAgICAgICAgICAgIGFyZ3MgPSBwYXJzZUFyZ3VtZW50cygpOwogICAgICAgICAgICAgICAg
ZXhwciA9IGRlbGVnYXRlLmNyZWF0ZUNhbGxFeHByZXNzaW9uKGV4cHIsIGFyZ3MpOwogICAgICAg
ICAgICB9IGVsc2UgaWYgKG1hdGNoKCdbJykpIHsKICAgICAgICAgICAgICAgIHByb3BlcnR5ID0g
cGFyc2VDb21wdXRlZE1lbWJlcigpOwogICAgICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNy
ZWF0ZU1lbWJlckV4cHJlc3Npb24oJ1snLCBleHByLCBwcm9wZXJ0eSk7CiAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBk
ZWxlZ2F0ZS5tYXJrRW5kKGV4cHIsIHN0YXJ0VG9rZW4pOwogICAgICAgIH0KCiAgICAgICAgcmV0
dXJuIGV4cHI7CiAgICB9CgogICAgZnVuY3Rpb24gcGFyc2VMZWZ0SGFuZFNpZGVFeHByZXNzaW9u
KCkgewogICAgICAgIHZhciBwcmV2aW91c0FsbG93SW4sIGV4cHIsIHByb3BlcnR5LCBzdGFydFRv
a2VuOwoKICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkOwoKICAgICAgICBwcmV2aW91c0Fs
bG93SW4gPSBzdGF0ZS5hbGxvd0luOwogICAgICAgIGV4cHIgPSBtYXRjaEtleXdvcmQoJ25ldycp
ID8gcGFyc2VOZXdFeHByZXNzaW9uKCkgOiBwYXJzZVByaW1hcnlFeHByZXNzaW9uKCk7CiAgICAg
ICAgc3RhdGUuYWxsb3dJbiA9IHByZXZpb3VzQWxsb3dJbjsKCiAgICAgICAgd2hpbGUgKG1hdGNo
KCcuJykgfHwgbWF0Y2goJ1snKSkgewogICAgICAgICAgICBpZiAobWF0Y2goJ1snKSkgewogICAg
ICAgICAgICAgICAgcHJvcGVydHkgPSBwYXJzZUNvbXB1dGVkTWVtYmVyKCk7CiAgICAgICAgICAg
ICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlTWVtYmVyRXhwcmVzc2lvbignWycsIGV4cHIsIHBy
b3BlcnR5KTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHByb3BlcnR5ID0g
cGFyc2VOb25Db21wdXRlZE1lbWJlcigpOwogICAgICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRl
LmNyZWF0ZU1lbWJlckV4cHJlc3Npb24oJy4nLCBleHByLCBwcm9wZXJ0eSk7CiAgICAgICAgICAg
IH0KICAgICAgICAgICAgZGVsZWdhdGUubWFya0VuZChleHByLCBzdGFydFRva2VuKTsKICAgICAg
ICB9CgogICAgICAgIHJldHVybiBleHByOwogICAgfQoKICAgIC8vIDExLjMgUG9zdGZpeCBFeHBy
ZXNzaW9ucwoKICAgIGZ1bmN0aW9uIHBhcnNlUG9zdGZpeEV4cHJlc3Npb24oKSB7CiAgICAgICAg
dmFyIGV4cHIsIHRva2VuLCBzdGFydFRva2VuID0gbG9va2FoZWFkOwoKICAgICAgICBleHByID0g
cGFyc2VMZWZ0SGFuZFNpZGVFeHByZXNzaW9uQWxsb3dDYWxsKCk7CgogICAgICAgIGlmIChsb29r
YWhlYWQudHlwZSA9PT0gVG9rZW4uUHVuY3R1YXRvcikgewogICAgICAgICAgICBpZiAoKG1hdGNo
KCcrKycpIHx8IG1hdGNoKCctLScpKSAmJiAhcGVla0xpbmVUZXJtaW5hdG9yKCkpIHsKICAgICAg
ICAgICAgICAgIC8vIDExLjMuMSwgMTEuMy4yCiAgICAgICAgICAgICAgICBpZiAoc3RyaWN0ICYm
IGV4cHIudHlwZSA9PT0gU3ludGF4LklkZW50aWZpZXIgJiYgaXNSZXN0cmljdGVkV29yZChleHBy
Lm5hbWUpKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNz
YWdlcy5TdHJpY3RMSFNQb3N0Zml4KTsKICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAg
ICBpZiAoIWlzTGVmdEhhbmRTaWRlKGV4cHIpKSB7CiAgICAgICAgICAgICAgICAgICAgdGhyb3dF
cnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5JbnZhbGlkTEhTSW5Bc3NpZ25tZW50KTsKICAgICAg
ICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICB0b2tlbiA9IGxleCgpOwogICAgICAgICAgICAg
ICAgZXhwciA9IGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlUG9zdGZpeEV4cHJlc3Np
b24odG9rZW4udmFsdWUsIGV4cHIpLCBzdGFydFRva2VuKTsKICAgICAgICAgICAgfQogICAgICAg
IH0KCiAgICAgICAgcmV0dXJuIGV4cHI7CiAgICB9CgogICAgLy8gMTEuNCBVbmFyeSBPcGVyYXRv
cnMKCiAgICBmdW5jdGlvbiBwYXJzZVVuYXJ5RXhwcmVzc2lvbigpIHsKICAgICAgICB2YXIgdG9r
ZW4sIGV4cHIsIHN0YXJ0VG9rZW47CgogICAgICAgIGlmIChsb29rYWhlYWQudHlwZSAhPT0gVG9r
ZW4uUHVuY3R1YXRvciAmJiBsb29rYWhlYWQudHlwZSAhPT0gVG9rZW4uS2V5d29yZCkgewogICAg
ICAgICAgICBleHByID0gcGFyc2VQb3N0Zml4RXhwcmVzc2lvbigpOwogICAgICAgIH0gZWxzZSBp
ZiAobWF0Y2goJysrJykgfHwgbWF0Y2goJy0tJykpIHsKICAgICAgICAgICAgc3RhcnRUb2tlbiA9
IGxvb2thaGVhZDsKICAgICAgICAgICAgdG9rZW4gPSBsZXgoKTsKICAgICAgICAgICAgZXhwciA9
IHBhcnNlVW5hcnlFeHByZXNzaW9uKCk7CiAgICAgICAgICAgIC8vIDExLjQuNCwgMTEuNC41CiAg
ICAgICAgICAgIGlmIChzdHJpY3QgJiYgZXhwci50eXBlID09PSBTeW50YXguSWRlbnRpZmllciAm
JiBpc1Jlc3RyaWN0ZWRXb3JkKGV4cHIubmFtZSkpIHsKICAgICAgICAgICAgICAgIHRocm93RXJy
b3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuU3RyaWN0TEhTUHJlZml4KTsKICAgICAgICAgICAgfQoK
ICAgICAgICAgICAgaWYgKCFpc0xlZnRIYW5kU2lkZShleHByKSkgewogICAgICAgICAgICAgICAg
dGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5JbnZhbGlkTEhTSW5Bc3NpZ25tZW50KTsK
ICAgICAgICAgICAgfQoKICAgICAgICAgICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZVVuYXJ5RXhw
cmVzc2lvbih0b2tlbi52YWx1ZSwgZXhwcik7CiAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5t
YXJrRW5kKGV4cHIsIHN0YXJ0VG9rZW4pOwogICAgICAgIH0gZWxzZSBpZiAobWF0Y2goJysnKSB8
fCBtYXRjaCgnLScpIHx8IG1hdGNoKCd+JykgfHwgbWF0Y2goJyEnKSkgewogICAgICAgICAgICBz
dGFydFRva2VuID0gbG9va2FoZWFkOwogICAgICAgICAgICB0b2tlbiA9IGxleCgpOwogICAgICAg
ICAgICBleHByID0gcGFyc2VVbmFyeUV4cHJlc3Npb24oKTsKICAgICAgICAgICAgZXhwciA9IGRl
bGVnYXRlLmNyZWF0ZVVuYXJ5RXhwcmVzc2lvbih0b2tlbi52YWx1ZSwgZXhwcik7CiAgICAgICAg
ICAgIGV4cHIgPSBkZWxlZ2F0ZS5tYXJrRW5kKGV4cHIsIHN0YXJ0VG9rZW4pOwogICAgICAgIH0g
ZWxzZSBpZiAobWF0Y2hLZXl3b3JkKCdkZWxldGUnKSB8fCBtYXRjaEtleXdvcmQoJ3ZvaWQnKSB8
fCBtYXRjaEtleXdvcmQoJ3R5cGVvZicpKSB7CiAgICAgICAgICAgIHN0YXJ0VG9rZW4gPSBsb29r
YWhlYWQ7CiAgICAgICAgICAgIHRva2VuID0gbGV4KCk7CiAgICAgICAgICAgIGV4cHIgPSBwYXJz
ZVVuYXJ5RXhwcmVzc2lvbigpOwogICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlVW5h
cnlFeHByZXNzaW9uKHRva2VuLnZhbHVlLCBleHByKTsKICAgICAgICAgICAgZXhwciA9IGRlbGVn
YXRlLm1hcmtFbmQoZXhwciwgc3RhcnRUb2tlbik7CiAgICAgICAgICAgIGlmIChzdHJpY3QgJiYg
ZXhwci5vcGVyYXRvciA9PT0gJ2RlbGV0ZScgJiYgZXhwci5hcmd1bWVudC50eXBlID09PSBTeW50
YXguSWRlbnRpZmllcikgewogICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBN
ZXNzYWdlcy5TdHJpY3REZWxldGUpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgZXhwciA9IHBhcnNlUG9zdGZpeEV4cHJlc3Npb24oKTsKICAgICAgICB9CgogICAg
ICAgIHJldHVybiBleHByOwogICAgfQoKICAgIGZ1bmN0aW9uIGJpbmFyeVByZWNlZGVuY2UodG9r
ZW4sIGFsbG93SW4pIHsKICAgICAgICB2YXIgcHJlYyA9IDA7CgogICAgICAgIGlmICh0b2tlbi50
eXBlICE9PSBUb2tlbi5QdW5jdHVhdG9yICYmIHRva2VuLnR5cGUgIT09IFRva2VuLktleXdvcmQp
IHsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQoKICAgICAgICBzd2l0Y2ggKHRva2Vu
LnZhbHVlKSB7CiAgICAgICAgY2FzZSAnfHwnOgogICAgICAgICAgICBwcmVjID0gMTsKICAgICAg
ICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJyYmJzoKICAgICAgICAgICAgcHJlYyA9IDI7CiAg
ICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICd8JzoKICAgICAgICAgICAgcHJlYyA9IDM7
CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICdeJzoKICAgICAgICAgICAgcHJlYyA9
IDQ7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICcmJzoKICAgICAgICAgICAgcHJl
YyA9IDU7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICc9PSc6CiAgICAgICAgY2Fz
ZSAnIT0nOgogICAgICAgIGNhc2UgJz09PSc6CiAgICAgICAgY2FzZSAnIT09JzoKICAgICAgICAg
ICAgcHJlYyA9IDY7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICc8JzoKICAgICAg
ICBjYXNlICc+JzoKICAgICAgICBjYXNlICc8PSc6CiAgICAgICAgY2FzZSAnPj0nOgogICAgICAg
IGNhc2UgJ2luc3RhbmNlb2YnOgogICAgICAgICAgICBwcmVjID0gNzsKICAgICAgICAgICAgYnJl
YWs7CgogICAgICAgIGNhc2UgJ2luJzoKICAgICAgICAgICAgcHJlYyA9IGFsbG93SW4gPyA3IDog
MDsKICAgICAgICAgICAgYnJlYWs7CgogICAgICAgIGNhc2UgJzw8JzoKICAgICAgICBjYXNlICc+
Pic6CiAgICAgICAgY2FzZSAnPj4+JzoKICAgICAgICAgICAgcHJlYyA9IDg7CiAgICAgICAgICAg
IGJyZWFrOwoKICAgICAgICBjYXNlICcrJzoKICAgICAgICBjYXNlICctJzoKICAgICAgICAgICAg
cHJlYyA9IDk7CiAgICAgICAgICAgIGJyZWFrOwoKICAgICAgICBjYXNlICcqJzoKICAgICAgICBj
YXNlICcvJzoKICAgICAgICBjYXNlICclJzoKICAgICAgICAgICAgcHJlYyA9IDExOwogICAgICAg
ICAgICBicmVhazsKCiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
fQoKICAgICAgICByZXR1cm4gcHJlYzsKICAgIH0KCiAgICAvLyAxMS41IE11bHRpcGxpY2F0aXZl
IE9wZXJhdG9ycwogICAgLy8gMTEuNiBBZGRpdGl2ZSBPcGVyYXRvcnMKICAgIC8vIDExLjcgQml0
d2lzZSBTaGlmdCBPcGVyYXRvcnMKICAgIC8vIDExLjggUmVsYXRpb25hbCBPcGVyYXRvcnMKICAg
IC8vIDExLjkgRXF1YWxpdHkgT3BlcmF0b3JzCiAgICAvLyAxMS4xMCBCaW5hcnkgQml0d2lzZSBP
cGVyYXRvcnMKICAgIC8vIDExLjExIEJpbmFyeSBMb2dpY2FsIE9wZXJhdG9ycwoKICAgIGZ1bmN0
aW9uIHBhcnNlQmluYXJ5RXhwcmVzc2lvbigpIHsKICAgICAgICB2YXIgbWFya2VyLCBtYXJrZXJz
LCBleHByLCB0b2tlbiwgcHJlYywgc3RhY2ssIHJpZ2h0LCBvcGVyYXRvciwgbGVmdCwgaTsKCiAg
ICAgICAgbWFya2VyID0gbG9va2FoZWFkOwogICAgICAgIGxlZnQgPSBwYXJzZVVuYXJ5RXhwcmVz
c2lvbigpOwoKICAgICAgICB0b2tlbiA9IGxvb2thaGVhZDsKICAgICAgICBwcmVjID0gYmluYXJ5
UHJlY2VkZW5jZSh0b2tlbiwgc3RhdGUuYWxsb3dJbik7CiAgICAgICAgaWYgKHByZWMgPT09IDAp
IHsKICAgICAgICAgICAgcmV0dXJuIGxlZnQ7CiAgICAgICAgfQogICAgICAgIHRva2VuLnByZWMg
PSBwcmVjOwogICAgICAgIGxleCgpOwoKICAgICAgICBtYXJrZXJzID0gW21hcmtlciwgbG9va2Fo
ZWFkXTsKICAgICAgICByaWdodCA9IHBhcnNlVW5hcnlFeHByZXNzaW9uKCk7CgogICAgICAgIHN0
YWNrID0gW2xlZnQsIHRva2VuLCByaWdodF07CgogICAgICAgIHdoaWxlICgocHJlYyA9IGJpbmFy
eVByZWNlZGVuY2UobG9va2FoZWFkLCBzdGF0ZS5hbGxvd0luKSkgPiAwKSB7CgogICAgICAgICAg
ICAvLyBSZWR1Y2U6IG1ha2UgYSBiaW5hcnkgZXhwcmVzc2lvbiBmcm9tIHRoZSB0aHJlZSB0b3Bt
b3N0IGVudHJpZXMuCiAgICAgICAgICAgIHdoaWxlICgoc3RhY2subGVuZ3RoID4gMikgJiYgKHBy
ZWMgPD0gc3RhY2tbc3RhY2subGVuZ3RoIC0gMl0ucHJlYykpIHsKICAgICAgICAgICAgICAgIHJp
Z2h0ID0gc3RhY2sucG9wKCk7CiAgICAgICAgICAgICAgICBvcGVyYXRvciA9IHN0YWNrLnBvcCgp
LnZhbHVlOwogICAgICAgICAgICAgICAgbGVmdCA9IHN0YWNrLnBvcCgpOwogICAgICAgICAgICAg
ICAgZXhwciA9IGRlbGVnYXRlLmNyZWF0ZUJpbmFyeUV4cHJlc3Npb24ob3BlcmF0b3IsIGxlZnQs
IHJpZ2h0KTsKICAgICAgICAgICAgICAgIG1hcmtlcnMucG9wKCk7CiAgICAgICAgICAgICAgICBt
YXJrZXIgPSBtYXJrZXJzW21hcmtlcnMubGVuZ3RoIC0gMV07CiAgICAgICAgICAgICAgICBkZWxl
Z2F0ZS5tYXJrRW5kKGV4cHIsIG1hcmtlcik7CiAgICAgICAgICAgICAgICBzdGFjay5wdXNoKGV4
cHIpOwogICAgICAgICAgICB9CgogICAgICAgICAgICAvLyBTaGlmdC4KICAgICAgICAgICAgdG9r
ZW4gPSBsZXgoKTsKICAgICAgICAgICAgdG9rZW4ucHJlYyA9IHByZWM7CiAgICAgICAgICAgIHN0
YWNrLnB1c2godG9rZW4pOwogICAgICAgICAgICBtYXJrZXJzLnB1c2gobG9va2FoZWFkKTsKICAg
ICAgICAgICAgZXhwciA9IHBhcnNlVW5hcnlFeHByZXNzaW9uKCk7CiAgICAgICAgICAgIHN0YWNr
LnB1c2goZXhwcik7CiAgICAgICAgfQoKICAgICAgICAvLyBGaW5hbCByZWR1Y2UgdG8gY2xlYW4t
dXAgdGhlIHN0YWNrLgogICAgICAgIGkgPSBzdGFjay5sZW5ndGggLSAxOwogICAgICAgIGV4cHIg
PSBzdGFja1tpXTsKICAgICAgICBtYXJrZXJzLnBvcCgpOwogICAgICAgIHdoaWxlIChpID4gMSkg
ewogICAgICAgICAgICBleHByID0gZGVsZWdhdGUuY3JlYXRlQmluYXJ5RXhwcmVzc2lvbihzdGFj
a1tpIC0gMV0udmFsdWUsIHN0YWNrW2kgLSAyXSwgZXhwcik7CiAgICAgICAgICAgIGkgLT0gMjsK
ICAgICAgICAgICAgbWFya2VyID0gbWFya2Vycy5wb3AoKTsKICAgICAgICAgICAgZGVsZWdhdGUu
bWFya0VuZChleHByLCBtYXJrZXIpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGV4cHI7CiAg
ICB9CgoKICAgIC8vIDExLjEyIENvbmRpdGlvbmFsIE9wZXJhdG9yCgogICAgZnVuY3Rpb24gcGFy
c2VDb25kaXRpb25hbEV4cHJlc3Npb24oKSB7CiAgICAgICAgdmFyIGV4cHIsIHByZXZpb3VzQWxs
b3dJbiwgY29uc2VxdWVudCwgYWx0ZXJuYXRlLCBzdGFydFRva2VuOwoKICAgICAgICBzdGFydFRv
a2VuID0gbG9va2FoZWFkOwoKICAgICAgICBleHByID0gcGFyc2VCaW5hcnlFeHByZXNzaW9uKCk7
CgogICAgICAgIGlmIChtYXRjaCgnPycpKSB7CiAgICAgICAgICAgIGxleCgpOwogICAgICAgICAg
ICBwcmV2aW91c0FsbG93SW4gPSBzdGF0ZS5hbGxvd0luOwogICAgICAgICAgICBzdGF0ZS5hbGxv
d0luID0gdHJ1ZTsKICAgICAgICAgICAgY29uc2VxdWVudCA9IHBhcnNlQXNzaWdubWVudEV4cHJl
c3Npb24oKTsKICAgICAgICAgICAgc3RhdGUuYWxsb3dJbiA9IHByZXZpb3VzQWxsb3dJbjsKICAg
ICAgICAgICAgZXhwZWN0KCc6Jyk7CiAgICAgICAgICAgIGFsdGVybmF0ZSA9IHBhcnNlQXNzaWdu
bWVudEV4cHJlc3Npb24oKTsKCiAgICAgICAgICAgIGV4cHIgPSBkZWxlZ2F0ZS5jcmVhdGVDb25k
aXRpb25hbEV4cHJlc3Npb24oZXhwciwgY29uc2VxdWVudCwgYWx0ZXJuYXRlKTsKICAgICAgICAg
ICAgZGVsZWdhdGUubWFya0VuZChleHByLCBzdGFydFRva2VuKTsKICAgICAgICB9CgogICAgICAg
IHJldHVybiBleHByOwogICAgfQoKICAgIC8vIDExLjEzIEFzc2lnbm1lbnQgT3BlcmF0b3JzCgog
ICAgZnVuY3Rpb24gcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbigpIHsKICAgICAgICB2YXIgdG9r
ZW4sIGxlZnQsIHJpZ2h0LCBub2RlLCBzdGFydFRva2VuOwoKICAgICAgICB0b2tlbiA9IGxvb2th
aGVhZDsKICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkOwoKICAgICAgICBub2RlID0gbGVm
dCA9IHBhcnNlQ29uZGl0aW9uYWxFeHByZXNzaW9uKCk7CgogICAgICAgIGlmIChtYXRjaEFzc2ln
bigpKSB7CiAgICAgICAgICAgIC8vIExlZnRIYW5kU2lkZUV4cHJlc3Npb24KICAgICAgICAgICAg
aWYgKCFpc0xlZnRIYW5kU2lkZShsZWZ0KSkgewogICAgICAgICAgICAgICAgdGhyb3dFcnJvclRv
bGVyYW50KHt9LCBNZXNzYWdlcy5JbnZhbGlkTEhTSW5Bc3NpZ25tZW50KTsKICAgICAgICAgICAg
fQoKICAgICAgICAgICAgLy8gMTEuMTMuMQogICAgICAgICAgICBpZiAoc3RyaWN0ICYmIGxlZnQu
dHlwZSA9PT0gU3ludGF4LklkZW50aWZpZXIgJiYgaXNSZXN0cmljdGVkV29yZChsZWZ0Lm5hbWUp
KSB7CiAgICAgICAgICAgICAgICB0aHJvd0Vycm9yVG9sZXJhbnQodG9rZW4sIE1lc3NhZ2VzLlN0
cmljdExIU0Fzc2lnbm1lbnQpOwogICAgICAgICAgICB9CgogICAgICAgICAgICB0b2tlbiA9IGxl
eCgpOwogICAgICAgICAgICByaWdodCA9IHBhcnNlQXNzaWdubWVudEV4cHJlc3Npb24oKTsKICAg
ICAgICAgICAgbm9kZSA9IGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlQXNzaWdubWVu
dEV4cHJlc3Npb24odG9rZW4udmFsdWUsIGxlZnQsIHJpZ2h0KSwgc3RhcnRUb2tlbik7CiAgICAg
ICAgfQoKICAgICAgICByZXR1cm4gbm9kZTsKICAgIH0KCiAgICAvLyAxMS4xNCBDb21tYSBPcGVy
YXRvcgoKICAgIGZ1bmN0aW9uIHBhcnNlRXhwcmVzc2lvbigpIHsKICAgICAgICB2YXIgZXhwciwg
c3RhcnRUb2tlbiA9IGxvb2thaGVhZDsKCiAgICAgICAgZXhwciA9IHBhcnNlQXNzaWdubWVudEV4
cHJlc3Npb24oKTsKCiAgICAgICAgaWYgKG1hdGNoKCcsJykpIHsKICAgICAgICAgICAgZXhwciA9
IGRlbGVnYXRlLmNyZWF0ZVNlcXVlbmNlRXhwcmVzc2lvbihbIGV4cHIgXSk7CgogICAgICAgICAg
ICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKICAgICAgICAgICAgICAgIGlmICghbWF0Y2goJywn
KSkgewogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgbGV4KCk7CiAgICAgICAgICAgICAgICBleHByLmV4cHJlc3Npb25zLnB1c2gocGFy
c2VBc3NpZ25tZW50RXhwcmVzc2lvbigpKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgZGVs
ZWdhdGUubWFya0VuZChleHByLCBzdGFydFRva2VuKTsKICAgICAgICB9CgogICAgICAgIHJldHVy
biBleHByOwogICAgfQoKICAgIC8vIDEyLjEgQmxvY2sKCiAgICBmdW5jdGlvbiBwYXJzZVN0YXRl
bWVudExpc3QoKSB7CiAgICAgICAgdmFyIGxpc3QgPSBbXSwKICAgICAgICAgICAgc3RhdGVtZW50
OwoKICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKICAgICAgICAgICAgaWYgKG1hdGNo
KCd9JykpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAg
IHN0YXRlbWVudCA9IHBhcnNlU291cmNlRWxlbWVudCgpOwogICAgICAgICAgICBpZiAodHlwZW9m
IHN0YXRlbWVudCA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICB9CiAgICAgICAgICAgIGxpc3QucHVzaChzdGF0ZW1lbnQpOwogICAgICAgIH0KCiAg
ICAgICAgcmV0dXJuIGxpc3Q7CiAgICB9CgogICAgZnVuY3Rpb24gcGFyc2VCbG9jaygpIHsKICAg
ICAgICB2YXIgYmxvY2ssIHN0YXJ0VG9rZW47CgogICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhl
YWQ7CiAgICAgICAgZXhwZWN0KCd7Jyk7CgogICAgICAgIGJsb2NrID0gcGFyc2VTdGF0ZW1lbnRM
aXN0KCk7CgogICAgICAgIGV4cGVjdCgnfScpOwoKICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFy
a0VuZChkZWxlZ2F0ZS5jcmVhdGVCbG9ja1N0YXRlbWVudChibG9jayksIHN0YXJ0VG9rZW4pOwog
ICAgfQoKICAgIC8vIDEyLjIgVmFyaWFibGUgU3RhdGVtZW50CgogICAgZnVuY3Rpb24gcGFyc2VW
YXJpYWJsZUlkZW50aWZpZXIoKSB7CiAgICAgICAgdmFyIHRva2VuLCBzdGFydFRva2VuOwoKICAg
ICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkOwogICAgICAgIHRva2VuID0gbGV4KCk7CgogICAg
ICAgIGlmICh0b2tlbi50eXBlICE9PSBUb2tlbi5JZGVudGlmaWVyKSB7CiAgICAgICAgICAgIHRo
cm93VW5leHBlY3RlZCh0b2tlbik7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZGVsZWdhdGUu
bWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVJZGVudGlmaWVyKHRva2VuLnZhbHVlKSwgc3RhcnRUb2tl
bik7CiAgICB9CgogICAgZnVuY3Rpb24gcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uKGtpbmQpIHsK
ICAgICAgICB2YXIgaW5pdCA9IG51bGwsIGlkLCBzdGFydFRva2VuOwoKICAgICAgICBzdGFydFRv
a2VuID0gbG9va2FoZWFkOwogICAgICAgIGlkID0gcGFyc2VWYXJpYWJsZUlkZW50aWZpZXIoKTsK
CiAgICAgICAgLy8gMTIuMi4xCiAgICAgICAgaWYgKHN0cmljdCAmJiBpc1Jlc3RyaWN0ZWRXb3Jk
KGlkLm5hbWUpKSB7CiAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMu
U3RyaWN0VmFyTmFtZSk7CiAgICAgICAgfQoKICAgICAgICBpZiAoa2luZCA9PT0gJ2NvbnN0Jykg
ewogICAgICAgICAgICBleHBlY3QoJz0nKTsKICAgICAgICAgICAgaW5pdCA9IHBhcnNlQXNzaWdu
bWVudEV4cHJlc3Npb24oKTsKICAgICAgICB9IGVsc2UgaWYgKG1hdGNoKCc9JykpIHsKICAgICAg
ICAgICAgbGV4KCk7CiAgICAgICAgICAgIGluaXQgPSBwYXJzZUFzc2lnbm1lbnRFeHByZXNzaW9u
KCk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5j
cmVhdGVWYXJpYWJsZURlY2xhcmF0b3IoaWQsIGluaXQpLCBzdGFydFRva2VuKTsKICAgIH0KCiAg
ICBmdW5jdGlvbiBwYXJzZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KGtpbmQpIHsKICAgICAgICB2
YXIgbGlzdCA9IFtdOwoKICAgICAgICBkbyB7CiAgICAgICAgICAgIGxpc3QucHVzaChwYXJzZVZh
cmlhYmxlRGVjbGFyYXRpb24oa2luZCkpOwogICAgICAgICAgICBpZiAoIW1hdGNoKCcsJykpIHsK
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGxleCgpOwog
ICAgICAgIH0gd2hpbGUgKGluZGV4IDwgbGVuZ3RoKTsKCiAgICAgICAgcmV0dXJuIGxpc3Q7CiAg
ICB9CgogICAgZnVuY3Rpb24gcGFyc2VWYXJpYWJsZVN0YXRlbWVudCgpIHsKICAgICAgICB2YXIg
ZGVjbGFyYXRpb25zOwoKICAgICAgICBleHBlY3RLZXl3b3JkKCd2YXInKTsKCiAgICAgICAgZGVj
bGFyYXRpb25zID0gcGFyc2VWYXJpYWJsZURlY2xhcmF0aW9uTGlzdCgpOwoKICAgICAgICBjb25z
dW1lU2VtaWNvbG9uKCk7CgogICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVWYXJpYWJsZURl
Y2xhcmF0aW9uKGRlY2xhcmF0aW9ucywgJ3ZhcicpOwogICAgfQoKICAgIC8vIGtpbmQgbWF5IGJl
IGBjb25zdGAgb3IgYGxldGAKICAgIC8vIEJvdGggYXJlIGV4cGVyaW1lbnRhbCBhbmQgbm90IGlu
IHRoZSBzcGVjaWZpY2F0aW9uIHlldC4KICAgIC8vIHNlZSBodHRwOi8vd2lraS5lY21hc2NyaXB0
Lm9yZy9kb2t1LnBocD9pZD1oYXJtb255OmNvbnN0CiAgICAvLyBhbmQgaHR0cDovL3dpa2kuZWNt
YXNjcmlwdC5vcmcvZG9rdS5waHA/aWQ9aGFybW9ueTpsZXQKICAgIGZ1bmN0aW9uIHBhcnNlQ29u
c3RMZXREZWNsYXJhdGlvbihraW5kKSB7CiAgICAgICAgdmFyIGRlY2xhcmF0aW9ucywgc3RhcnRU
b2tlbjsKCiAgICAgICAgc3RhcnRUb2tlbiA9IGxvb2thaGVhZDsKCiAgICAgICAgZXhwZWN0S2V5
d29yZChraW5kKTsKCiAgICAgICAgZGVjbGFyYXRpb25zID0gcGFyc2VWYXJpYWJsZURlY2xhcmF0
aW9uTGlzdChraW5kKTsKCiAgICAgICAgY29uc3VtZVNlbWljb2xvbigpOwoKICAgICAgICByZXR1
cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5jcmVhdGVWYXJpYWJsZURlY2xhcmF0aW9uKGRl
Y2xhcmF0aW9ucywga2luZCksIHN0YXJ0VG9rZW4pOwogICAgfQoKICAgIC8vIDEyLjMgRW1wdHkg
U3RhdGVtZW50CgogICAgZnVuY3Rpb24gcGFyc2VFbXB0eVN0YXRlbWVudCgpIHsKICAgICAgICBl
eHBlY3QoJzsnKTsKICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlRW1wdHlTdGF0ZW1lbnQo
KTsKICAgIH0KCiAgICAvLyAxMi40IEV4cHJlc3Npb24gU3RhdGVtZW50CgogICAgZnVuY3Rpb24g
cGFyc2VFeHByZXNzaW9uU3RhdGVtZW50KCkgewogICAgICAgIHZhciBleHByID0gcGFyc2VFeHBy
ZXNzaW9uKCk7CiAgICAgICAgY29uc3VtZVNlbWljb2xvbigpOwogICAgICAgIHJldHVybiBkZWxl
Z2F0ZS5jcmVhdGVFeHByZXNzaW9uU3RhdGVtZW50KGV4cHIpOwogICAgfQoKICAgIC8vIDEyLjUg
SWYgc3RhdGVtZW50CgogICAgZnVuY3Rpb24gcGFyc2VJZlN0YXRlbWVudCgpIHsKICAgICAgICB2
YXIgdGVzdCwgY29uc2VxdWVudCwgYWx0ZXJuYXRlOwoKICAgICAgICBleHBlY3RLZXl3b3JkKCdp
ZicpOwoKICAgICAgICBleHBlY3QoJygnKTsKCiAgICAgICAgdGVzdCA9IHBhcnNlRXhwcmVzc2lv
bigpOwoKICAgICAgICBleHBlY3QoJyknKTsKCiAgICAgICAgY29uc2VxdWVudCA9IHBhcnNlU3Rh
dGVtZW50KCk7CgogICAgICAgIGlmIChtYXRjaEtleXdvcmQoJ2Vsc2UnKSkgewogICAgICAgICAg
ICBsZXgoKTsKICAgICAgICAgICAgYWx0ZXJuYXRlID0gcGFyc2VTdGF0ZW1lbnQoKTsKICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICBhbHRlcm5hdGUgPSBudWxsOwogICAgICAgIH0KCiAgICAg
ICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZUlmU3RhdGVtZW50KHRlc3QsIGNvbnNlcXVlbnQsIGFs
dGVybmF0ZSk7CiAgICB9CgogICAgLy8gMTIuNiBJdGVyYXRpb24gU3RhdGVtZW50cwoKICAgIGZ1
bmN0aW9uIHBhcnNlRG9XaGlsZVN0YXRlbWVudCgpIHsKICAgICAgICB2YXIgYm9keSwgdGVzdCwg
b2xkSW5JdGVyYXRpb247CgogICAgICAgIGV4cGVjdEtleXdvcmQoJ2RvJyk7CgogICAgICAgIG9s
ZEluSXRlcmF0aW9uID0gc3RhdGUuaW5JdGVyYXRpb247CiAgICAgICAgc3RhdGUuaW5JdGVyYXRp
b24gPSB0cnVlOwoKICAgICAgICBib2R5ID0gcGFyc2VTdGF0ZW1lbnQoKTsKCiAgICAgICAgc3Rh
dGUuaW5JdGVyYXRpb24gPSBvbGRJbkl0ZXJhdGlvbjsKCiAgICAgICAgZXhwZWN0S2V5d29yZCgn
d2hpbGUnKTsKCiAgICAgICAgZXhwZWN0KCcoJyk7CgogICAgICAgIHRlc3QgPSBwYXJzZUV4cHJl
c3Npb24oKTsKCiAgICAgICAgZXhwZWN0KCcpJyk7CgogICAgICAgIGlmIChtYXRjaCgnOycpKSB7
CiAgICAgICAgICAgIGxleCgpOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNy
ZWF0ZURvV2hpbGVTdGF0ZW1lbnQoYm9keSwgdGVzdCk7CiAgICB9CgogICAgZnVuY3Rpb24gcGFy
c2VXaGlsZVN0YXRlbWVudCgpIHsKICAgICAgICB2YXIgdGVzdCwgYm9keSwgb2xkSW5JdGVyYXRp
b247CgogICAgICAgIGV4cGVjdEtleXdvcmQoJ3doaWxlJyk7CgogICAgICAgIGV4cGVjdCgnKCcp
OwoKICAgICAgICB0ZXN0ID0gcGFyc2VFeHByZXNzaW9uKCk7CgogICAgICAgIGV4cGVjdCgnKScp
OwoKICAgICAgICBvbGRJbkl0ZXJhdGlvbiA9IHN0YXRlLmluSXRlcmF0aW9uOwogICAgICAgIHN0
YXRlLmluSXRlcmF0aW9uID0gdHJ1ZTsKCiAgICAgICAgYm9keSA9IHBhcnNlU3RhdGVtZW50KCk7
CgogICAgICAgIHN0YXRlLmluSXRlcmF0aW9uID0gb2xkSW5JdGVyYXRpb247CgogICAgICAgIHJl
dHVybiBkZWxlZ2F0ZS5jcmVhdGVXaGlsZVN0YXRlbWVudCh0ZXN0LCBib2R5KTsKICAgIH0KCiAg
ICBmdW5jdGlvbiBwYXJzZUZvclZhcmlhYmxlRGVjbGFyYXRpb24oKSB7CiAgICAgICAgdmFyIHRv
a2VuLCBkZWNsYXJhdGlvbnMsIHN0YXJ0VG9rZW47CgogICAgICAgIHN0YXJ0VG9rZW4gPSBsb29r
YWhlYWQ7CiAgICAgICAgdG9rZW4gPSBsZXgoKTsKICAgICAgICBkZWNsYXJhdGlvbnMgPSBwYXJz
ZVZhcmlhYmxlRGVjbGFyYXRpb25MaXN0KCk7CgogICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJr
RW5kKGRlbGVnYXRlLmNyZWF0ZVZhcmlhYmxlRGVjbGFyYXRpb24oZGVjbGFyYXRpb25zLCB0b2tl
bi52YWx1ZSksIHN0YXJ0VG9rZW4pOwogICAgfQoKICAgIGZ1bmN0aW9uIHBhcnNlRm9yU3RhdGVt
ZW50KCkgewogICAgICAgIHZhciBpbml0LCB0ZXN0LCB1cGRhdGUsIGxlZnQsIHJpZ2h0LCBib2R5
LCBvbGRJbkl0ZXJhdGlvbjsKCiAgICAgICAgaW5pdCA9IHRlc3QgPSB1cGRhdGUgPSBudWxsOwoK
ICAgICAgICBleHBlY3RLZXl3b3JkKCdmb3InKTsKCiAgICAgICAgZXhwZWN0KCcoJyk7CgogICAg
ICAgIGlmIChtYXRjaCgnOycpKSB7CiAgICAgICAgICAgIGxleCgpOwogICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgIGlmIChtYXRjaEtleXdvcmQoJ3ZhcicpIHx8IG1hdGNoS2V5d29yZCgnbGV0
JykpIHsKICAgICAgICAgICAgICAgIHN0YXRlLmFsbG93SW4gPSBmYWxzZTsKICAgICAgICAgICAg
ICAgIGluaXQgPSBwYXJzZUZvclZhcmlhYmxlRGVjbGFyYXRpb24oKTsKICAgICAgICAgICAgICAg
IHN0YXRlLmFsbG93SW4gPSB0cnVlOwoKICAgICAgICAgICAgICAgIGlmIChpbml0LmRlY2xhcmF0
aW9ucy5sZW5ndGggPT09IDEgJiYgbWF0Y2hLZXl3b3JkKCdpbicpKSB7CiAgICAgICAgICAgICAg
ICAgICAgbGV4KCk7CiAgICAgICAgICAgICAgICAgICAgbGVmdCA9IGluaXQ7CiAgICAgICAgICAg
ICAgICAgICAgcmlnaHQgPSBwYXJzZUV4cHJlc3Npb24oKTsKICAgICAgICAgICAgICAgICAgICBp
bml0ID0gbnVsbDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgICAgIHN0YXRlLmFsbG93SW4gPSBmYWxzZTsKICAgICAgICAgICAgICAgIGluaXQgPSBw
YXJzZUV4cHJlc3Npb24oKTsKICAgICAgICAgICAgICAgIHN0YXRlLmFsbG93SW4gPSB0cnVlOwoK
ICAgICAgICAgICAgICAgIGlmIChtYXRjaEtleXdvcmQoJ2luJykpIHsKICAgICAgICAgICAgICAg
ICAgICAvLyBMZWZ0SGFuZFNpZGVFeHByZXNzaW9uCiAgICAgICAgICAgICAgICAgICAgaWYgKCFp
c0xlZnRIYW5kU2lkZShpbml0KSkgewogICAgICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9y
VG9sZXJhbnQoe30sIE1lc3NhZ2VzLkludmFsaWRMSFNJbkZvckluKTsKICAgICAgICAgICAgICAg
ICAgICB9CgogICAgICAgICAgICAgICAgICAgIGxleCgpOwogICAgICAgICAgICAgICAgICAgIGxl
ZnQgPSBpbml0OwogICAgICAgICAgICAgICAgICAgIHJpZ2h0ID0gcGFyc2VFeHByZXNzaW9uKCk7
CiAgICAgICAgICAgICAgICAgICAgaW5pdCA9IG51bGw7CiAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgIH0KCiAgICAgICAgICAgIGlmICh0eXBlb2YgbGVmdCA9PT0gJ3VuZGVmaW5lZCcpIHsK
ICAgICAgICAgICAgICAgIGV4cGVjdCgnOycpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAg
ICAgICBpZiAodHlwZW9mIGxlZnQgPT09ICd1bmRlZmluZWQnKSB7CgogICAgICAgICAgICBpZiAo
IW1hdGNoKCc7JykpIHsKICAgICAgICAgICAgICAgIHRlc3QgPSBwYXJzZUV4cHJlc3Npb24oKTsK
ICAgICAgICAgICAgfQogICAgICAgICAgICBleHBlY3QoJzsnKTsKCiAgICAgICAgICAgIGlmICgh
bWF0Y2goJyknKSkgewogICAgICAgICAgICAgICAgdXBkYXRlID0gcGFyc2VFeHByZXNzaW9uKCk7
CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGV4cGVjdCgnKScpOwoKICAgICAgICBv
bGRJbkl0ZXJhdGlvbiA9IHN0YXRlLmluSXRlcmF0aW9uOwogICAgICAgIHN0YXRlLmluSXRlcmF0
aW9uID0gdHJ1ZTsKCiAgICAgICAgYm9keSA9IHBhcnNlU3RhdGVtZW50KCk7CgogICAgICAgIHN0
YXRlLmluSXRlcmF0aW9uID0gb2xkSW5JdGVyYXRpb247CgogICAgICAgIHJldHVybiAodHlwZW9m
IGxlZnQgPT09ICd1bmRlZmluZWQnKSA/CiAgICAgICAgICAgICAgICBkZWxlZ2F0ZS5jcmVhdGVG
b3JTdGF0ZW1lbnQoaW5pdCwgdGVzdCwgdXBkYXRlLCBib2R5KSA6CiAgICAgICAgICAgICAgICBk
ZWxlZ2F0ZS5jcmVhdGVGb3JJblN0YXRlbWVudChsZWZ0LCByaWdodCwgYm9keSk7CiAgICB9Cgog
ICAgLy8gMTIuNyBUaGUgY29udGludWUgc3RhdGVtZW50CgogICAgZnVuY3Rpb24gcGFyc2VDb250
aW51ZVN0YXRlbWVudCgpIHsKICAgICAgICB2YXIgbGFiZWwgPSBudWxsLCBrZXk7CgogICAgICAg
IGV4cGVjdEtleXdvcmQoJ2NvbnRpbnVlJyk7CgogICAgICAgIC8vIE9wdGltaXplIHRoZSBtb3N0
IGNvbW1vbiBmb3JtOiAnY29udGludWU7Jy4KICAgICAgICBpZiAoc291cmNlLmNoYXJDb2RlQXQo
aW5kZXgpID09PSAweDNCKSB7CiAgICAgICAgICAgIGxleCgpOwoKICAgICAgICAgICAgaWYgKCFz
dGF0ZS5pbkl0ZXJhdGlvbikgewogICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVzc2Fn
ZXMuSWxsZWdhbENvbnRpbnVlKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgcmV0dXJuIGRl
bGVnYXRlLmNyZWF0ZUNvbnRpbnVlU3RhdGVtZW50KG51bGwpOwogICAgICAgIH0KCiAgICAgICAg
aWYgKHBlZWtMaW5lVGVybWluYXRvcigpKSB7CiAgICAgICAgICAgIGlmICghc3RhdGUuaW5JdGVy
YXRpb24pIHsKICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3NhZ2VzLklsbGVnYWxD
b250aW51ZSk7CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5jcmVh
dGVDb250aW51ZVN0YXRlbWVudChudWxsKTsKICAgICAgICB9CgogICAgICAgIGlmIChsb29rYWhl
YWQudHlwZSA9PT0gVG9rZW4uSWRlbnRpZmllcikgewogICAgICAgICAgICBsYWJlbCA9IHBhcnNl
VmFyaWFibGVJZGVudGlmaWVyKCk7CgogICAgICAgICAgICBrZXkgPSAnJCcgKyBsYWJlbC5uYW1l
OwogICAgICAgICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChz
dGF0ZS5sYWJlbFNldCwga2V5KSkgewogICAgICAgICAgICAgICAgdGhyb3dFcnJvcih7fSwgTWVz
c2FnZXMuVW5rbm93bkxhYmVsLCBsYWJlbC5uYW1lKTsKICAgICAgICAgICAgfQogICAgICAgIH0K
CiAgICAgICAgY29uc3VtZVNlbWljb2xvbigpOwoKICAgICAgICBpZiAobGFiZWwgPT09IG51bGwg
JiYgIXN0YXRlLmluSXRlcmF0aW9uKSB7CiAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1lc3Nh
Z2VzLklsbGVnYWxDb250aW51ZSk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gZGVsZWdhdGUu
Y3JlYXRlQ29udGludWVTdGF0ZW1lbnQobGFiZWwpOwogICAgfQoKICAgIC8vIDEyLjggVGhlIGJy
ZWFrIHN0YXRlbWVudAoKICAgIGZ1bmN0aW9uIHBhcnNlQnJlYWtTdGF0ZW1lbnQoKSB7CiAgICAg
ICAgdmFyIGxhYmVsID0gbnVsbCwga2V5OwoKICAgICAgICBleHBlY3RLZXl3b3JkKCdicmVhaycp
OwoKICAgICAgICAvLyBDYXRjaCB0aGUgdmVyeSBjb21tb24gY2FzZSBmaXJzdDogaW1tZWRpYXRl
bHkgYSBzZW1pY29sb24gKFUrMDAzQikuCiAgICAgICAgaWYgKHNvdXJjZS5jaGFyQ29kZUF0KGlu
ZGV4KSA9PT0gMHgzQikgewogICAgICAgICAgICBsZXgoKTsKCiAgICAgICAgICAgIGlmICghKHN0
YXRlLmluSXRlcmF0aW9uIHx8IHN0YXRlLmluU3dpdGNoKSkgewogICAgICAgICAgICAgICAgdGhy
b3dFcnJvcih7fSwgTWVzc2FnZXMuSWxsZWdhbEJyZWFrKTsKICAgICAgICAgICAgfQoKICAgICAg
ICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZUJyZWFrU3RhdGVtZW50KG51bGwpOwogICAgICAg
IH0KCiAgICAgICAgaWYgKHBlZWtMaW5lVGVybWluYXRvcigpKSB7CiAgICAgICAgICAgIGlmICgh
KHN0YXRlLmluSXRlcmF0aW9uIHx8IHN0YXRlLmluU3dpdGNoKSkgewogICAgICAgICAgICAgICAg
dGhyb3dFcnJvcih7fSwgTWVzc2FnZXMuSWxsZWdhbEJyZWFrKTsKICAgICAgICAgICAgfQoKICAg
ICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZUJyZWFrU3RhdGVtZW50KG51bGwpOwogICAg
ICAgIH0KCiAgICAgICAgaWYgKGxvb2thaGVhZC50eXBlID09PSBUb2tlbi5JZGVudGlmaWVyKSB7
CiAgICAgICAgICAgIGxhYmVsID0gcGFyc2VWYXJpYWJsZUlkZW50aWZpZXIoKTsKCiAgICAgICAg
ICAgIGtleSA9ICckJyArIGxhYmVsLm5hbWU7CiAgICAgICAgICAgIGlmICghT2JqZWN0LnByb3Rv
dHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0YXRlLmxhYmVsU2V0LCBrZXkpKSB7CiAgICAgICAg
ICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5Vbmtub3duTGFiZWwsIGxhYmVsLm5hbWUp
OwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBjb25zdW1lU2VtaWNvbG9uKCk7Cgog
ICAgICAgIGlmIChsYWJlbCA9PT0gbnVsbCAmJiAhKHN0YXRlLmluSXRlcmF0aW9uIHx8IHN0YXRl
LmluU3dpdGNoKSkgewogICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5JbGxlZ2Fs
QnJlYWspOwogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZUJyZWFrU3Rh
dGVtZW50KGxhYmVsKTsKICAgIH0KCiAgICAvLyAxMi45IFRoZSByZXR1cm4gc3RhdGVtZW50Cgog
ICAgZnVuY3Rpb24gcGFyc2VSZXR1cm5TdGF0ZW1lbnQoKSB7CiAgICAgICAgdmFyIGFyZ3VtZW50
ID0gbnVsbDsKCiAgICAgICAgZXhwZWN0S2V5d29yZCgncmV0dXJuJyk7CgogICAgICAgIGlmICgh
c3RhdGUuaW5GdW5jdGlvbkJvZHkpIHsKICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9
LCBNZXNzYWdlcy5JbGxlZ2FsUmV0dXJuKTsKICAgICAgICB9CgogICAgICAgIC8vICdyZXR1cm4n
IGZvbGxvd2VkIGJ5IGEgc3BhY2UgYW5kIGFuIGlkZW50aWZpZXIgaXMgdmVyeSBjb21tb24uCiAg
ICAgICAgaWYgKHNvdXJjZS5jaGFyQ29kZUF0KGluZGV4KSA9PT0gMHgyMCkgewogICAgICAgICAg
ICBpZiAoaXNJZGVudGlmaWVyU3RhcnQoc291cmNlLmNoYXJDb2RlQXQoaW5kZXggKyAxKSkpIHsK
ICAgICAgICAgICAgICAgIGFyZ3VtZW50ID0gcGFyc2VFeHByZXNzaW9uKCk7CiAgICAgICAgICAg
ICAgICBjb25zdW1lU2VtaWNvbG9uKCk7CiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUu
Y3JlYXRlUmV0dXJuU3RhdGVtZW50KGFyZ3VtZW50KTsKICAgICAgICAgICAgfQogICAgICAgIH0K
CiAgICAgICAgaWYgKHBlZWtMaW5lVGVybWluYXRvcigpKSB7CiAgICAgICAgICAgIHJldHVybiBk
ZWxlZ2F0ZS5jcmVhdGVSZXR1cm5TdGF0ZW1lbnQobnVsbCk7CiAgICAgICAgfQoKICAgICAgICBp
ZiAoIW1hdGNoKCc7JykpIHsKICAgICAgICAgICAgaWYgKCFtYXRjaCgnfScpICYmIGxvb2thaGVh
ZC50eXBlICE9PSBUb2tlbi5FT0YpIHsKICAgICAgICAgICAgICAgIGFyZ3VtZW50ID0gcGFyc2VF
eHByZXNzaW9uKCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIGNvbnN1bWVTZW1p
Y29sb24oKTsKCiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZVJldHVyblN0YXRlbWVudChh
cmd1bWVudCk7CiAgICB9CgogICAgLy8gMTIuMTAgVGhlIHdpdGggc3RhdGVtZW50CgogICAgZnVu
Y3Rpb24gcGFyc2VXaXRoU3RhdGVtZW50KCkgewogICAgICAgIHZhciBvYmplY3QsIGJvZHk7Cgog
ICAgICAgIGlmIChzdHJpY3QpIHsKICAgICAgICAgICAgLy8gVE9ETyhpa2FyaWVuYXRvcik6IFNo
b3VsZCB3ZSB1cGRhdGUgdGhlIHRlc3QgY2FzZXMgaW5zdGVhZD8KICAgICAgICAgICAgc2tpcENv
bW1lbnQoKTsKICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KHt9LCBNZXNzYWdlcy5TdHJp
Y3RNb2RlV2l0aCk7CiAgICAgICAgfQoKICAgICAgICBleHBlY3RLZXl3b3JkKCd3aXRoJyk7Cgog
ICAgICAgIGV4cGVjdCgnKCcpOwoKICAgICAgICBvYmplY3QgPSBwYXJzZUV4cHJlc3Npb24oKTsK
CiAgICAgICAgZXhwZWN0KCcpJyk7CgogICAgICAgIGJvZHkgPSBwYXJzZVN0YXRlbWVudCgpOwoK
ICAgICAgICByZXR1cm4gZGVsZWdhdGUuY3JlYXRlV2l0aFN0YXRlbWVudChvYmplY3QsIGJvZHkp
OwogICAgfQoKICAgIC8vIDEyLjEwIFRoZSBzd2l0aCBzdGF0ZW1lbnQKCiAgICBmdW5jdGlvbiBw
YXJzZVN3aXRjaENhc2UoKSB7CiAgICAgICAgdmFyIHRlc3QsIGNvbnNlcXVlbnQgPSBbXSwgc3Rh
dGVtZW50LCBzdGFydFRva2VuOwoKICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkOwogICAg
ICAgIGlmIChtYXRjaEtleXdvcmQoJ2RlZmF1bHQnKSkgewogICAgICAgICAgICBsZXgoKTsKICAg
ICAgICAgICAgdGVzdCA9IG51bGw7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZXhwZWN0
S2V5d29yZCgnY2FzZScpOwogICAgICAgICAgICB0ZXN0ID0gcGFyc2VFeHByZXNzaW9uKCk7CiAg
ICAgICAgfQogICAgICAgIGV4cGVjdCgnOicpOwoKICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5n
dGgpIHsKICAgICAgICAgICAgaWYgKG1hdGNoKCd9JykgfHwgbWF0Y2hLZXl3b3JkKCdkZWZhdWx0
JykgfHwgbWF0Y2hLZXl3b3JkKCdjYXNlJykpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICAgICB9CiAgICAgICAgICAgIHN0YXRlbWVudCA9IHBhcnNlU3RhdGVtZW50KCk7CiAgICAg
ICAgICAgIGNvbnNlcXVlbnQucHVzaChzdGF0ZW1lbnQpOwogICAgICAgIH0KCiAgICAgICAgcmV0
dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlU3dpdGNoQ2FzZSh0ZXN0LCBjb25z
ZXF1ZW50KSwgc3RhcnRUb2tlbik7CiAgICB9CgogICAgZnVuY3Rpb24gcGFyc2VTd2l0Y2hTdGF0
ZW1lbnQoKSB7CiAgICAgICAgdmFyIGRpc2NyaW1pbmFudCwgY2FzZXMsIGNsYXVzZSwgb2xkSW5T
d2l0Y2gsIGRlZmF1bHRGb3VuZDsKCiAgICAgICAgZXhwZWN0S2V5d29yZCgnc3dpdGNoJyk7Cgog
ICAgICAgIGV4cGVjdCgnKCcpOwoKICAgICAgICBkaXNjcmltaW5hbnQgPSBwYXJzZUV4cHJlc3Np
b24oKTsKCiAgICAgICAgZXhwZWN0KCcpJyk7CgogICAgICAgIGV4cGVjdCgneycpOwoKICAgICAg
ICBjYXNlcyA9IFtdOwoKICAgICAgICBpZiAobWF0Y2goJ30nKSkgewogICAgICAgICAgICBsZXgo
KTsKICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZVN3aXRjaFN0YXRlbWVudChkaXNj
cmltaW5hbnQsIGNhc2VzKTsKICAgICAgICB9CgogICAgICAgIG9sZEluU3dpdGNoID0gc3RhdGUu
aW5Td2l0Y2g7CiAgICAgICAgc3RhdGUuaW5Td2l0Y2ggPSB0cnVlOwogICAgICAgIGRlZmF1bHRG
b3VuZCA9IGZhbHNlOwoKICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKICAgICAgICAg
ICAgaWYgKG1hdGNoKCd9JykpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9
CiAgICAgICAgICAgIGNsYXVzZSA9IHBhcnNlU3dpdGNoQ2FzZSgpOwogICAgICAgICAgICBpZiAo
Y2xhdXNlLnRlc3QgPT09IG51bGwpIHsKICAgICAgICAgICAgICAgIGlmIChkZWZhdWx0Rm91bmQp
IHsKICAgICAgICAgICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBNZXNzYWdlcy5NdWx0aXBsZURl
ZmF1bHRzSW5Td2l0Y2gpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZGVmYXVs
dEZvdW5kID0gdHJ1ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICBjYXNlcy5wdXNoKGNsYXVz
ZSk7CiAgICAgICAgfQoKICAgICAgICBzdGF0ZS5pblN3aXRjaCA9IG9sZEluU3dpdGNoOwoKICAg
ICAgICBleHBlY3QoJ30nKTsKCiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLmNyZWF0ZVN3aXRjaFN0
YXRlbWVudChkaXNjcmltaW5hbnQsIGNhc2VzKTsKICAgIH0KCiAgICAvLyAxMi4xMyBUaGUgdGhy
b3cgc3RhdGVtZW50CgogICAgZnVuY3Rpb24gcGFyc2VUaHJvd1N0YXRlbWVudCgpIHsKICAgICAg
ICB2YXIgYXJndW1lbnQ7CgogICAgICAgIGV4cGVjdEtleXdvcmQoJ3Rocm93Jyk7CgogICAgICAg
IGlmIChwZWVrTGluZVRlcm1pbmF0b3IoKSkgewogICAgICAgICAgICB0aHJvd0Vycm9yKHt9LCBN
ZXNzYWdlcy5OZXdsaW5lQWZ0ZXJUaHJvdyk7CiAgICAgICAgfQoKICAgICAgICBhcmd1bWVudCA9
IHBhcnNlRXhwcmVzc2lvbigpOwoKICAgICAgICBjb25zdW1lU2VtaWNvbG9uKCk7CgogICAgICAg
IHJldHVybiBkZWxlZ2F0ZS5jcmVhdGVUaHJvd1N0YXRlbWVudChhcmd1bWVudCk7CiAgICB9Cgog
ICAgLy8gMTIuMTQgVGhlIHRyeSBzdGF0ZW1lbnQKCiAgICBmdW5jdGlvbiBwYXJzZUNhdGNoQ2xh
dXNlKCkgewogICAgICAgIHZhciBwYXJhbSwgYm9keSwgc3RhcnRUb2tlbjsKCiAgICAgICAgc3Rh
cnRUb2tlbiA9IGxvb2thaGVhZDsKICAgICAgICBleHBlY3RLZXl3b3JkKCdjYXRjaCcpOwoKICAg
ICAgICBleHBlY3QoJygnKTsKICAgICAgICBpZiAobWF0Y2goJyknKSkgewogICAgICAgICAgICB0
aHJvd1VuZXhwZWN0ZWQobG9va2FoZWFkKTsKICAgICAgICB9CgogICAgICAgIHBhcmFtID0gcGFy
c2VWYXJpYWJsZUlkZW50aWZpZXIoKTsKICAgICAgICAvLyAxMi4xNC4xCiAgICAgICAgaWYgKHN0
cmljdCAmJiBpc1Jlc3RyaWN0ZWRXb3JkKHBhcmFtLm5hbWUpKSB7CiAgICAgICAgICAgIHRocm93
RXJyb3JUb2xlcmFudCh7fSwgTWVzc2FnZXMuU3RyaWN0Q2F0Y2hWYXJpYWJsZSk7CiAgICAgICAg
fQoKICAgICAgICBleHBlY3QoJyknKTsKICAgICAgICBib2R5ID0gcGFyc2VCbG9jaygpOwogICAg
ICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZUNhdGNoQ2xhdXNlKHBh
cmFtLCBib2R5KSwgc3RhcnRUb2tlbik7CiAgICB9CgogICAgZnVuY3Rpb24gcGFyc2VUcnlTdGF0
ZW1lbnQoKSB7CiAgICAgICAgdmFyIGJsb2NrLCBoYW5kbGVycyA9IFtdLCBmaW5hbGl6ZXIgPSBu
dWxsOwoKICAgICAgICBleHBlY3RLZXl3b3JkKCd0cnknKTsKCiAgICAgICAgYmxvY2sgPSBwYXJz
ZUJsb2NrKCk7CgogICAgICAgIGlmIChtYXRjaEtleXdvcmQoJ2NhdGNoJykpIHsKICAgICAgICAg
ICAgaGFuZGxlcnMucHVzaChwYXJzZUNhdGNoQ2xhdXNlKCkpOwogICAgICAgIH0KCiAgICAgICAg
aWYgKG1hdGNoS2V5d29yZCgnZmluYWxseScpKSB7CiAgICAgICAgICAgIGxleCgpOwogICAgICAg
ICAgICBmaW5hbGl6ZXIgPSBwYXJzZUJsb2NrKCk7CiAgICAgICAgfQoKICAgICAgICBpZiAoaGFu
ZGxlcnMubGVuZ3RoID09PSAwICYmICFmaW5hbGl6ZXIpIHsKICAgICAgICAgICAgdGhyb3dFcnJv
cih7fSwgTWVzc2FnZXMuTm9DYXRjaE9yRmluYWxseSk7CiAgICAgICAgfQoKICAgICAgICByZXR1
cm4gZGVsZWdhdGUuY3JlYXRlVHJ5U3RhdGVtZW50KGJsb2NrLCBbXSwgaGFuZGxlcnMsIGZpbmFs
aXplcik7CiAgICB9CgogICAgLy8gMTIuMTUgVGhlIGRlYnVnZ2VyIHN0YXRlbWVudAoKICAgIGZ1
bmN0aW9uIHBhcnNlRGVidWdnZXJTdGF0ZW1lbnQoKSB7CiAgICAgICAgZXhwZWN0S2V5d29yZCgn
ZGVidWdnZXInKTsKCiAgICAgICAgY29uc3VtZVNlbWljb2xvbigpOwoKICAgICAgICByZXR1cm4g
ZGVsZWdhdGUuY3JlYXRlRGVidWdnZXJTdGF0ZW1lbnQoKTsKICAgIH0KCiAgICAvLyAxMiBTdGF0
ZW1lbnRzCgogICAgZnVuY3Rpb24gcGFyc2VTdGF0ZW1lbnQoKSB7CiAgICAgICAgdmFyIHR5cGUg
PSBsb29rYWhlYWQudHlwZSwKICAgICAgICAgICAgZXhwciwKICAgICAgICAgICAgbGFiZWxlZEJv
ZHksCiAgICAgICAgICAgIGtleSwKICAgICAgICAgICAgc3RhcnRUb2tlbjsKCiAgICAgICAgaWYg
KHR5cGUgPT09IFRva2VuLkVPRikgewogICAgICAgICAgICB0aHJvd1VuZXhwZWN0ZWQobG9va2Fo
ZWFkKTsKICAgICAgICB9CgogICAgICAgIGlmICh0eXBlID09PSBUb2tlbi5QdW5jdHVhdG9yICYm
IGxvb2thaGVhZC52YWx1ZSA9PT0gJ3snKSB7CiAgICAgICAgICAgIHJldHVybiBwYXJzZUJsb2Nr
KCk7CiAgICAgICAgfQoKICAgICAgICBzdGFydFRva2VuID0gbG9va2FoZWFkOwoKICAgICAgICBp
ZiAodHlwZSA9PT0gVG9rZW4uUHVuY3R1YXRvcikgewogICAgICAgICAgICBzd2l0Y2ggKGxvb2th
aGVhZC52YWx1ZSkgewogICAgICAgICAgICBjYXNlICc7JzoKICAgICAgICAgICAgICAgIHJldHVy
biBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlRW1wdHlTdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7CiAg
ICAgICAgICAgIGNhc2UgJygnOgogICAgICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtF
bmQocGFyc2VFeHByZXNzaW9uU3RhdGVtZW50KCksIHN0YXJ0VG9rZW4pOwogICAgICAgICAgICBk
ZWZhdWx0OgogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9Cgog
ICAgICAgIGlmICh0eXBlID09PSBUb2tlbi5LZXl3b3JkKSB7CiAgICAgICAgICAgIHN3aXRjaCAo
bG9va2FoZWFkLnZhbHVlKSB7CiAgICAgICAgICAgIGNhc2UgJ2JyZWFrJzoKICAgICAgICAgICAg
ICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlQnJlYWtTdGF0ZW1lbnQoKSwgc3RhcnRU
b2tlbik7CiAgICAgICAgICAgIGNhc2UgJ2NvbnRpbnVlJzoKICAgICAgICAgICAgICAgIHJldHVy
biBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlQ29udGludWVTdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7
CiAgICAgICAgICAgIGNhc2UgJ2RlYnVnZ2VyJzoKICAgICAgICAgICAgICAgIHJldHVybiBkZWxl
Z2F0ZS5tYXJrRW5kKHBhcnNlRGVidWdnZXJTdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7CiAgICAg
ICAgICAgIGNhc2UgJ2RvJzoKICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5k
KHBhcnNlRG9XaGlsZVN0YXRlbWVudCgpLCBzdGFydFRva2VuKTsKICAgICAgICAgICAgY2FzZSAn
Zm9yJzoKICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlRm9yU3Rh
dGVtZW50KCksIHN0YXJ0VG9rZW4pOwogICAgICAgICAgICBjYXNlICdmdW5jdGlvbic6CiAgICAg
ICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJzZUZ1bmN0aW9uRGVjbGFyYXRp
b24oKSwgc3RhcnRUb2tlbik7CiAgICAgICAgICAgIGNhc2UgJ2lmJzoKICAgICAgICAgICAgICAg
IHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNlSWZTdGF0ZW1lbnQoKSwgc3RhcnRUb2tlbik7
CiAgICAgICAgICAgIGNhc2UgJ3JldHVybic6CiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdh
dGUubWFya0VuZChwYXJzZVJldHVyblN0YXRlbWVudCgpLCBzdGFydFRva2VuKTsKICAgICAgICAg
ICAgY2FzZSAnc3dpdGNoJzoKICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5k
KHBhcnNlU3dpdGNoU3RhdGVtZW50KCksIHN0YXJ0VG9rZW4pOwogICAgICAgICAgICBjYXNlICd0
aHJvdyc6CiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChwYXJzZVRocm93
U3RhdGVtZW50KCksIHN0YXJ0VG9rZW4pOwogICAgICAgICAgICBjYXNlICd0cnknOgogICAgICAg
ICAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQocGFyc2VUcnlTdGF0ZW1lbnQoKSwgc3Rh
cnRUb2tlbik7CiAgICAgICAgICAgIGNhc2UgJ3Zhcic6CiAgICAgICAgICAgICAgICByZXR1cm4g
ZGVsZWdhdGUubWFya0VuZChwYXJzZVZhcmlhYmxlU3RhdGVtZW50KCksIHN0YXJ0VG9rZW4pOwog
ICAgICAgICAgICBjYXNlICd3aGlsZSc6CiAgICAgICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUu
bWFya0VuZChwYXJzZVdoaWxlU3RhdGVtZW50KCksIHN0YXJ0VG9rZW4pOwogICAgICAgICAgICBj
YXNlICd3aXRoJzoKICAgICAgICAgICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKHBhcnNl
V2l0aFN0YXRlbWVudCgpLCBzdGFydFRva2VuKTsKICAgICAgICAgICAgZGVmYXVsdDoKICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBleHByID0g
cGFyc2VFeHByZXNzaW9uKCk7CgogICAgICAgIC8vIDEyLjEyIExhYmVsbGVkIFN0YXRlbWVudHMK
ICAgICAgICBpZiAoKGV4cHIudHlwZSA9PT0gU3ludGF4LklkZW50aWZpZXIpICYmIG1hdGNoKCc6
JykpIHsKICAgICAgICAgICAgbGV4KCk7CgogICAgICAgICAgICBrZXkgPSAnJCcgKyBleHByLm5h
bWU7CiAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwo
c3RhdGUubGFiZWxTZXQsIGtleSkpIHsKICAgICAgICAgICAgICAgIHRocm93RXJyb3Ioe30sIE1l
c3NhZ2VzLlJlZGVjbGFyYXRpb24sICdMYWJlbCcsIGV4cHIubmFtZSk7CiAgICAgICAgICAgIH0K
CiAgICAgICAgICAgIHN0YXRlLmxhYmVsU2V0W2tleV0gPSB0cnVlOwogICAgICAgICAgICBsYWJl
bGVkQm9keSA9IHBhcnNlU3RhdGVtZW50KCk7CiAgICAgICAgICAgIGRlbGV0ZSBzdGF0ZS5sYWJl
bFNldFtrZXldOwogICAgICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxlZ2F0ZS5j
cmVhdGVMYWJlbGVkU3RhdGVtZW50KGV4cHIsIGxhYmVsZWRCb2R5KSwgc3RhcnRUb2tlbik7CiAg
ICAgICAgfQoKICAgICAgICBjb25zdW1lU2VtaWNvbG9uKCk7CgogICAgICAgIHJldHVybiBkZWxl
Z2F0ZS5tYXJrRW5kKGRlbGVnYXRlLmNyZWF0ZUV4cHJlc3Npb25TdGF0ZW1lbnQoZXhwciksIHN0
YXJ0VG9rZW4pOwogICAgfQoKICAgIC8vIDEzIEZ1bmN0aW9uIERlZmluaXRpb24KCiAgICBmdW5j
dGlvbiBwYXJzZUZ1bmN0aW9uU291cmNlRWxlbWVudHMoKSB7CiAgICAgICAgdmFyIHNvdXJjZUVs
ZW1lbnQsIHNvdXJjZUVsZW1lbnRzID0gW10sIHRva2VuLCBkaXJlY3RpdmUsIGZpcnN0UmVzdHJp
Y3RlZCwKICAgICAgICAgICAgb2xkTGFiZWxTZXQsIG9sZEluSXRlcmF0aW9uLCBvbGRJblN3aXRj
aCwgb2xkSW5GdW5jdGlvbkJvZHksIHN0YXJ0VG9rZW47CgogICAgICAgIHN0YXJ0VG9rZW4gPSBs
b29rYWhlYWQ7CiAgICAgICAgZXhwZWN0KCd7Jyk7CgogICAgICAgIHdoaWxlIChpbmRleCA8IGxl
bmd0aCkgewogICAgICAgICAgICBpZiAobG9va2FoZWFkLnR5cGUgIT09IFRva2VuLlN0cmluZ0xp
dGVyYWwpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAg
IHRva2VuID0gbG9va2FoZWFkOwoKICAgICAgICAgICAgc291cmNlRWxlbWVudCA9IHBhcnNlU291
cmNlRWxlbWVudCgpOwogICAgICAgICAgICBzb3VyY2VFbGVtZW50cy5wdXNoKHNvdXJjZUVsZW1l
bnQpOwogICAgICAgICAgICBpZiAoc291cmNlRWxlbWVudC5leHByZXNzaW9uLnR5cGUgIT09IFN5
bnRheC5MaXRlcmFsKSB7CiAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIG5vdCBkaXJlY3RpdmUK
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGRpcmVjdGl2
ZSA9IHNvdXJjZS5zbGljZSh0b2tlbi5zdGFydCArIDEsIHRva2VuLmVuZCAtIDEpOwogICAgICAg
ICAgICBpZiAoZGlyZWN0aXZlID09PSAndXNlIHN0cmljdCcpIHsKICAgICAgICAgICAgICAgIHN0
cmljdCA9IHRydWU7CiAgICAgICAgICAgICAgICBpZiAoZmlyc3RSZXN0cmljdGVkKSB7CiAgICAg
ICAgICAgICAgICAgICAgdGhyb3dFcnJvclRvbGVyYW50KGZpcnN0UmVzdHJpY3RlZCwgTWVzc2Fn
ZXMuU3RyaWN0T2N0YWxMaXRlcmFsKTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgIGlmICghZmlyc3RSZXN0cmljdGVkICYmIHRva2VuLm9jdGFs
KSB7CiAgICAgICAgICAgICAgICAgICAgZmlyc3RSZXN0cmljdGVkID0gdG9rZW47CiAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgICAgIG9sZExhYmVsU2V0ID0g
c3RhdGUubGFiZWxTZXQ7CiAgICAgICAgb2xkSW5JdGVyYXRpb24gPSBzdGF0ZS5pbkl0ZXJhdGlv
bjsKICAgICAgICBvbGRJblN3aXRjaCA9IHN0YXRlLmluU3dpdGNoOwogICAgICAgIG9sZEluRnVu
Y3Rpb25Cb2R5ID0gc3RhdGUuaW5GdW5jdGlvbkJvZHk7CgogICAgICAgIHN0YXRlLmxhYmVsU2V0
ID0ge307CiAgICAgICAgc3RhdGUuaW5JdGVyYXRpb24gPSBmYWxzZTsKICAgICAgICBzdGF0ZS5p
blN3aXRjaCA9IGZhbHNlOwogICAgICAgIHN0YXRlLmluRnVuY3Rpb25Cb2R5ID0gdHJ1ZTsKCiAg
ICAgICAgd2hpbGUgKGluZGV4IDwgbGVuZ3RoKSB7CiAgICAgICAgICAgIGlmIChtYXRjaCgnfScp
KSB7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBzb3Vy
Y2VFbGVtZW50ID0gcGFyc2VTb3VyY2VFbGVtZW50KCk7CiAgICAgICAgICAgIGlmICh0eXBlb2Yg
c291cmNlRWxlbWVudCA9PT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICB9CiAgICAgICAgICAgIHNvdXJjZUVsZW1lbnRzLnB1c2goc291cmNlRWxlbWVu
dCk7CiAgICAgICAgfQoKICAgICAgICBleHBlY3QoJ30nKTsKCiAgICAgICAgc3RhdGUubGFiZWxT
ZXQgPSBvbGRMYWJlbFNldDsKICAgICAgICBzdGF0ZS5pbkl0ZXJhdGlvbiA9IG9sZEluSXRlcmF0
aW9uOwogICAgICAgIHN0YXRlLmluU3dpdGNoID0gb2xkSW5Td2l0Y2g7CiAgICAgICAgc3RhdGUu
aW5GdW5jdGlvbkJvZHkgPSBvbGRJbkZ1bmN0aW9uQm9keTsKCiAgICAgICAgcmV0dXJuIGRlbGVn
YXRlLm1hcmtFbmQoZGVsZWdhdGUuY3JlYXRlQmxvY2tTdGF0ZW1lbnQoc291cmNlRWxlbWVudHMp
LCBzdGFydFRva2VuKTsKICAgIH0KCiAgICBmdW5jdGlvbiBwYXJzZVBhcmFtcyhmaXJzdFJlc3Ry
aWN0ZWQpIHsKICAgICAgICB2YXIgcGFyYW0sIHBhcmFtcyA9IFtdLCB0b2tlbiwgc3RyaWN0ZWQs
IHBhcmFtU2V0LCBrZXksIG1lc3NhZ2U7CiAgICAgICAgZXhwZWN0KCcoJyk7CgogICAgICAgIGlm
ICghbWF0Y2goJyknKSkgewogICAgICAgICAgICBwYXJhbVNldCA9IHt9OwogICAgICAgICAgICB3
aGlsZSAoaW5kZXggPCBsZW5ndGgpIHsKICAgICAgICAgICAgICAgIHRva2VuID0gbG9va2FoZWFk
OwogICAgICAgICAgICAgICAgcGFyYW0gPSBwYXJzZVZhcmlhYmxlSWRlbnRpZmllcigpOwogICAg
ICAgICAgICAgICAga2V5ID0gJyQnICsgdG9rZW4udmFsdWU7CiAgICAgICAgICAgICAgICBpZiAo
c3RyaWN0KSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGlzUmVzdHJpY3RlZFdvcmQodG9rZW4u
dmFsdWUpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmljdGVkID0gdG9rZW47CiAgICAg
ICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBNZXNzYWdlcy5TdHJpY3RQYXJhbU5hbWU7CiAg
ICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChPYmplY3QucHJvdG90
eXBlLmhhc093blByb3BlcnR5LmNhbGwocGFyYW1TZXQsIGtleSkpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgc3RyaWN0ZWQgPSB0b2tlbjsKICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2Fn
ZSA9IE1lc3NhZ2VzLlN0cmljdFBhcmFtRHVwZTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKCFmaXJzdFJlc3RyaWN0ZWQpIHsKICAgICAgICAgICAgICAg
ICAgICBpZiAoaXNSZXN0cmljdGVkV29yZCh0b2tlbi52YWx1ZSkpIHsKICAgICAgICAgICAgICAg
ICAgICAgICAgZmlyc3RSZXN0cmljdGVkID0gdG9rZW47CiAgICAgICAgICAgICAgICAgICAgICAg
IG1lc3NhZ2UgPSBNZXNzYWdlcy5TdHJpY3RQYXJhbU5hbWU7CiAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIGlmIChpc1N0cmljdE1vZGVSZXNlcnZlZFdvcmQodG9rZW4udmFsdWUpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgIGZpcnN0UmVzdHJpY3RlZCA9IHRva2VuOwogICAgICAgICAgICAg
ICAgICAgICAgICBtZXNzYWdlID0gTWVzc2FnZXMuU3RyaWN0UmVzZXJ2ZWRXb3JkOwogICAgICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5j
YWxsKHBhcmFtU2V0LCBrZXkpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0UmVzdHJp
Y3RlZCA9IHRva2VuOwogICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gTWVzc2FnZXMu
U3RyaWN0UGFyYW1EdXBlOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgICAgIHBhcmFtcy5wdXNoKHBhcmFtKTsKICAgICAgICAgICAgICAgIHBhcmFt
U2V0W2tleV0gPSB0cnVlOwogICAgICAgICAgICAgICAgaWYgKG1hdGNoKCcpJykpIHsKICAgICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGV4
cGVjdCgnLCcpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBleHBlY3QoJyknKTsK
CiAgICAgICAgcmV0dXJuIHsKICAgICAgICAgICAgcGFyYW1zOiBwYXJhbXMsCiAgICAgICAgICAg
IHN0cmljdGVkOiBzdHJpY3RlZCwKICAgICAgICAgICAgZmlyc3RSZXN0cmljdGVkOiBmaXJzdFJl
c3RyaWN0ZWQsCiAgICAgICAgICAgIG1lc3NhZ2U6IG1lc3NhZ2UKICAgICAgICB9OwogICAgfQoK
ICAgIGZ1bmN0aW9uIHBhcnNlRnVuY3Rpb25EZWNsYXJhdGlvbigpIHsKICAgICAgICB2YXIgaWQs
IHBhcmFtcyA9IFtdLCBib2R5LCB0b2tlbiwgc3RyaWN0ZWQsIHRtcCwgZmlyc3RSZXN0cmljdGVk
LCBtZXNzYWdlLCBwcmV2aW91c1N0cmljdCwgc3RhcnRUb2tlbjsKCiAgICAgICAgc3RhcnRUb2tl
biA9IGxvb2thaGVhZDsKCiAgICAgICAgZXhwZWN0S2V5d29yZCgnZnVuY3Rpb24nKTsKICAgICAg
ICB0b2tlbiA9IGxvb2thaGVhZDsKICAgICAgICBpZCA9IHBhcnNlVmFyaWFibGVJZGVudGlmaWVy
KCk7CiAgICAgICAgaWYgKHN0cmljdCkgewogICAgICAgICAgICBpZiAoaXNSZXN0cmljdGVkV29y
ZCh0b2tlbi52YWx1ZSkpIHsKICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudCh0b2tl
biwgTWVzc2FnZXMuU3RyaWN0RnVuY3Rpb25OYW1lKTsKICAgICAgICAgICAgfQogICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgIGlmIChpc1Jlc3RyaWN0ZWRXb3JkKHRva2VuLnZhbHVlKSkgewog
ICAgICAgICAgICAgICAgZmlyc3RSZXN0cmljdGVkID0gdG9rZW47CiAgICAgICAgICAgICAgICBt
ZXNzYWdlID0gTWVzc2FnZXMuU3RyaWN0RnVuY3Rpb25OYW1lOwogICAgICAgICAgICB9IGVsc2Ug
aWYgKGlzU3RyaWN0TW9kZVJlc2VydmVkV29yZCh0b2tlbi52YWx1ZSkpIHsKICAgICAgICAgICAg
ICAgIGZpcnN0UmVzdHJpY3RlZCA9IHRva2VuOwogICAgICAgICAgICAgICAgbWVzc2FnZSA9IE1l
c3NhZ2VzLlN0cmljdFJlc2VydmVkV29yZDsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAg
ICAgdG1wID0gcGFyc2VQYXJhbXMoZmlyc3RSZXN0cmljdGVkKTsKICAgICAgICBwYXJhbXMgPSB0
bXAucGFyYW1zOwogICAgICAgIHN0cmljdGVkID0gdG1wLnN0cmljdGVkOwogICAgICAgIGZpcnN0
UmVzdHJpY3RlZCA9IHRtcC5maXJzdFJlc3RyaWN0ZWQ7CiAgICAgICAgaWYgKHRtcC5tZXNzYWdl
KSB7CiAgICAgICAgICAgIG1lc3NhZ2UgPSB0bXAubWVzc2FnZTsKICAgICAgICB9CgogICAgICAg
IHByZXZpb3VzU3RyaWN0ID0gc3RyaWN0OwogICAgICAgIGJvZHkgPSBwYXJzZUZ1bmN0aW9uU291
cmNlRWxlbWVudHMoKTsKICAgICAgICBpZiAoc3RyaWN0ICYmIGZpcnN0UmVzdHJpY3RlZCkgewog
ICAgICAgICAgICB0aHJvd0Vycm9yKGZpcnN0UmVzdHJpY3RlZCwgbWVzc2FnZSk7CiAgICAgICAg
fQogICAgICAgIGlmIChzdHJpY3QgJiYgc3RyaWN0ZWQpIHsKICAgICAgICAgICAgdGhyb3dFcnJv
clRvbGVyYW50KHN0cmljdGVkLCBtZXNzYWdlKTsKICAgICAgICB9CiAgICAgICAgc3RyaWN0ID0g
cHJldmlvdXNTdHJpY3Q7CgogICAgICAgIHJldHVybiBkZWxlZ2F0ZS5tYXJrRW5kKGRlbGVnYXRl
LmNyZWF0ZUZ1bmN0aW9uRGVjbGFyYXRpb24oaWQsIHBhcmFtcywgW10sIGJvZHkpLCBzdGFydFRv
a2VuKTsKICAgIH0KCiAgICBmdW5jdGlvbiBwYXJzZUZ1bmN0aW9uRXhwcmVzc2lvbigpIHsKICAg
ICAgICB2YXIgdG9rZW4sIGlkID0gbnVsbCwgc3RyaWN0ZWQsIGZpcnN0UmVzdHJpY3RlZCwgbWVz
c2FnZSwgdG1wLCBwYXJhbXMgPSBbXSwgYm9keSwgcHJldmlvdXNTdHJpY3QsIHN0YXJ0VG9rZW47
CgogICAgICAgIHN0YXJ0VG9rZW4gPSBsb29rYWhlYWQ7CiAgICAgICAgZXhwZWN0S2V5d29yZCgn
ZnVuY3Rpb24nKTsKCiAgICAgICAgaWYgKCFtYXRjaCgnKCcpKSB7CiAgICAgICAgICAgIHRva2Vu
ID0gbG9va2FoZWFkOwogICAgICAgICAgICBpZCA9IHBhcnNlVmFyaWFibGVJZGVudGlmaWVyKCk7
CiAgICAgICAgICAgIGlmIChzdHJpY3QpIHsKICAgICAgICAgICAgICAgIGlmIChpc1Jlc3RyaWN0
ZWRXb3JkKHRva2VuLnZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgIHRocm93RXJyb3JUb2xl
cmFudCh0b2tlbiwgTWVzc2FnZXMuU3RyaWN0RnVuY3Rpb25OYW1lKTsKICAgICAgICAgICAgICAg
IH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlmIChpc1Jlc3RyaWN0ZWRX
b3JkKHRva2VuLnZhbHVlKSkgewogICAgICAgICAgICAgICAgICAgIGZpcnN0UmVzdHJpY3RlZCA9
IHRva2VuOwogICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBNZXNzYWdlcy5TdHJpY3RGdW5j
dGlvbk5hbWU7CiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzU3RyaWN0TW9kZVJlc2VydmVk
V29yZCh0b2tlbi52YWx1ZSkpIHsKICAgICAgICAgICAgICAgICAgICBmaXJzdFJlc3RyaWN0ZWQg
PSB0b2tlbjsKICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gTWVzc2FnZXMuU3RyaWN0UmVz
ZXJ2ZWRXb3JkOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAg
ICAgICB0bXAgPSBwYXJzZVBhcmFtcyhmaXJzdFJlc3RyaWN0ZWQpOwogICAgICAgIHBhcmFtcyA9
IHRtcC5wYXJhbXM7CiAgICAgICAgc3RyaWN0ZWQgPSB0bXAuc3RyaWN0ZWQ7CiAgICAgICAgZmly
c3RSZXN0cmljdGVkID0gdG1wLmZpcnN0UmVzdHJpY3RlZDsKICAgICAgICBpZiAodG1wLm1lc3Nh
Z2UpIHsKICAgICAgICAgICAgbWVzc2FnZSA9IHRtcC5tZXNzYWdlOwogICAgICAgIH0KCiAgICAg
ICAgcHJldmlvdXNTdHJpY3QgPSBzdHJpY3Q7CiAgICAgICAgYm9keSA9IHBhcnNlRnVuY3Rpb25T
b3VyY2VFbGVtZW50cygpOwogICAgICAgIGlmIChzdHJpY3QgJiYgZmlyc3RSZXN0cmljdGVkKSB7
CiAgICAgICAgICAgIHRocm93RXJyb3IoZmlyc3RSZXN0cmljdGVkLCBtZXNzYWdlKTsKICAgICAg
ICB9CiAgICAgICAgaWYgKHN0cmljdCAmJiBzdHJpY3RlZCkgewogICAgICAgICAgICB0aHJvd0Vy
cm9yVG9sZXJhbnQoc3RyaWN0ZWQsIG1lc3NhZ2UpOwogICAgICAgIH0KICAgICAgICBzdHJpY3Qg
PSBwcmV2aW91c1N0cmljdDsKCiAgICAgICAgcmV0dXJuIGRlbGVnYXRlLm1hcmtFbmQoZGVsZWdh
dGUuY3JlYXRlRnVuY3Rpb25FeHByZXNzaW9uKGlkLCBwYXJhbXMsIFtdLCBib2R5KSwgc3RhcnRU
b2tlbik7CiAgICB9CgogICAgLy8gMTQgUHJvZ3JhbQoKICAgIGZ1bmN0aW9uIHBhcnNlU291cmNl
RWxlbWVudCgpIHsKICAgICAgICBpZiAobG9va2FoZWFkLnR5cGUgPT09IFRva2VuLktleXdvcmQp
IHsKICAgICAgICAgICAgc3dpdGNoIChsb29rYWhlYWQudmFsdWUpIHsKICAgICAgICAgICAgY2Fz
ZSAnY29uc3QnOgogICAgICAgICAgICBjYXNlICdsZXQnOgogICAgICAgICAgICAgICAgcmV0dXJu
IHBhcnNlQ29uc3RMZXREZWNsYXJhdGlvbihsb29rYWhlYWQudmFsdWUpOwogICAgICAgICAgICBj
YXNlICdmdW5jdGlvbic6CiAgICAgICAgICAgICAgICByZXR1cm4gcGFyc2VGdW5jdGlvbkRlY2xh
cmF0aW9uKCk7CiAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICByZXR1cm4gcGFy
c2VTdGF0ZW1lbnQoKTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgaWYgKGxvb2th
aGVhZC50eXBlICE9PSBUb2tlbi5FT0YpIHsKICAgICAgICAgICAgcmV0dXJuIHBhcnNlU3RhdGVt
ZW50KCk7CiAgICAgICAgfQogICAgfQoKICAgIGZ1bmN0aW9uIHBhcnNlU291cmNlRWxlbWVudHMo
KSB7CiAgICAgICAgdmFyIHNvdXJjZUVsZW1lbnQsIHNvdXJjZUVsZW1lbnRzID0gW10sIHRva2Vu
LCBkaXJlY3RpdmUsIGZpcnN0UmVzdHJpY3RlZDsKCiAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVu
Z3RoKSB7CiAgICAgICAgICAgIHRva2VuID0gbG9va2FoZWFkOwogICAgICAgICAgICBpZiAodG9r
ZW4udHlwZSAhPT0gVG9rZW4uU3RyaW5nTGl0ZXJhbCkgewogICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgIH0KCiAgICAgICAgICAgIHNvdXJjZUVsZW1lbnQgPSBwYXJzZVNvdXJjZUVs
ZW1lbnQoKTsKICAgICAgICAgICAgc291cmNlRWxlbWVudHMucHVzaChzb3VyY2VFbGVtZW50KTsK
ICAgICAgICAgICAgaWYgKHNvdXJjZUVsZW1lbnQuZXhwcmVzc2lvbi50eXBlICE9PSBTeW50YXgu
TGl0ZXJhbCkgewogICAgICAgICAgICAgICAgLy8gdGhpcyBpcyBub3QgZGlyZWN0aXZlCiAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBkaXJlY3RpdmUgPSBz
b3VyY2Uuc2xpY2UodG9rZW4uc3RhcnQgKyAxLCB0b2tlbi5lbmQgLSAxKTsKICAgICAgICAgICAg
aWYgKGRpcmVjdGl2ZSA9PT0gJ3VzZSBzdHJpY3QnKSB7CiAgICAgICAgICAgICAgICBzdHJpY3Qg
PSB0cnVlOwogICAgICAgICAgICAgICAgaWYgKGZpcnN0UmVzdHJpY3RlZCkgewogICAgICAgICAg
ICAgICAgICAgIHRocm93RXJyb3JUb2xlcmFudChmaXJzdFJlc3RyaWN0ZWQsIE1lc3NhZ2VzLlN0
cmljdE9jdGFsTGl0ZXJhbCk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAgICBpZiAoIWZpcnN0UmVzdHJpY3RlZCAmJiB0b2tlbi5vY3RhbCkgewog
ICAgICAgICAgICAgICAgICAgIGZpcnN0UmVzdHJpY3RlZCA9IHRva2VuOwogICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW5n
dGgpIHsKICAgICAgICAgICAgc291cmNlRWxlbWVudCA9IHBhcnNlU291cmNlRWxlbWVudCgpOwog
ICAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi8KICAgICAgICAgICAgaWYgKHR5cGVv
ZiBzb3VyY2VFbGVtZW50ID09PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgIH0KICAgICAgICAgICAgc291cmNlRWxlbWVudHMucHVzaChzb3VyY2VFbGVt
ZW50KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHNvdXJjZUVsZW1lbnRzOwogICAgfQoKICAg
IGZ1bmN0aW9uIHBhcnNlUHJvZ3JhbSgpIHsKICAgICAgICB2YXIgYm9keSwgc3RhcnRUb2tlbjsK
CiAgICAgICAgc2tpcENvbW1lbnQoKTsKICAgICAgICBwZWVrKCk7CiAgICAgICAgc3RhcnRUb2tl
biA9IGxvb2thaGVhZDsKICAgICAgICBzdHJpY3QgPSBmYWxzZTsKCiAgICAgICAgYm9keSA9IHBh
cnNlU291cmNlRWxlbWVudHMoKTsKICAgICAgICByZXR1cm4gZGVsZWdhdGUubWFya0VuZChkZWxl
Z2F0ZS5jcmVhdGVQcm9ncmFtKGJvZHkpLCBzdGFydFRva2VuKTsKICAgIH0KCiAgICBmdW5jdGlv
biBmaWx0ZXJUb2tlbkxvY2F0aW9uKCkgewogICAgICAgIHZhciBpLCBlbnRyeSwgdG9rZW4sIHRv
a2VucyA9IFtdOwoKICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZXh0cmEudG9rZW5zLmxlbmd0aDsg
KytpKSB7CiAgICAgICAgICAgIGVudHJ5ID0gZXh0cmEudG9rZW5zW2ldOwogICAgICAgICAgICB0
b2tlbiA9IHsKICAgICAgICAgICAgICAgIHR5cGU6IGVudHJ5LnR5cGUsCiAgICAgICAgICAgICAg
ICB2YWx1ZTogZW50cnkudmFsdWUKICAgICAgICAgICAgfTsKICAgICAgICAgICAgaWYgKGV4dHJh
LnJhbmdlKSB7CiAgICAgICAgICAgICAgICB0b2tlbi5yYW5nZSA9IGVudHJ5LnJhbmdlOwogICAg
ICAgICAgICB9CiAgICAgICAgICAgIGlmIChleHRyYS5sb2MpIHsKICAgICAgICAgICAgICAgIHRv
a2VuLmxvYyA9IGVudHJ5LmxvYzsKICAgICAgICAgICAgfQogICAgICAgICAgICB0b2tlbnMucHVz
aCh0b2tlbik7CiAgICAgICAgfQoKICAgICAgICBleHRyYS50b2tlbnMgPSB0b2tlbnM7CiAgICB9
CgogICAgZnVuY3Rpb24gdG9rZW5pemUoY29kZSwgb3B0aW9ucykgewogICAgICAgIHZhciB0b1N0
cmluZywKICAgICAgICAgICAgdG9rZW4sCiAgICAgICAgICAgIHRva2VuczsKCiAgICAgICAgdG9T
dHJpbmcgPSBTdHJpbmc7CiAgICAgICAgaWYgKHR5cGVvZiBjb2RlICE9PSAnc3RyaW5nJyAmJiAh
KGNvZGUgaW5zdGFuY2VvZiBTdHJpbmcpKSB7CiAgICAgICAgICAgIGNvZGUgPSB0b1N0cmluZyhj
b2RlKTsKICAgICAgICB9CgogICAgICAgIGRlbGVnYXRlID0gU3ludGF4VHJlZURlbGVnYXRlOwog
ICAgICAgIHNvdXJjZSA9IGNvZGU7CiAgICAgICAgaW5kZXggPSAwOwogICAgICAgIGxpbmVOdW1i
ZXIgPSAoc291cmNlLmxlbmd0aCA+IDApID8gMSA6IDA7CiAgICAgICAgbGluZVN0YXJ0ID0gMDsK
ICAgICAgICBsZW5ndGggPSBzb3VyY2UubGVuZ3RoOwogICAgICAgIGxvb2thaGVhZCA9IG51bGw7
CiAgICAgICAgc3RhdGUgPSB7CiAgICAgICAgICAgIGFsbG93SW46IHRydWUsCiAgICAgICAgICAg
IGxhYmVsU2V0OiB7fSwKICAgICAgICAgICAgaW5GdW5jdGlvbkJvZHk6IGZhbHNlLAogICAgICAg
ICAgICBpbkl0ZXJhdGlvbjogZmFsc2UsCiAgICAgICAgICAgIGluU3dpdGNoOiBmYWxzZSwKICAg
ICAgICAgICAgbGFzdENvbW1lbnRTdGFydDogLTEKICAgICAgICB9OwoKICAgICAgICBleHRyYSA9
IHt9OwoKICAgICAgICAvLyBPcHRpb25zIG1hdGNoaW5nLgogICAgICAgIG9wdGlvbnMgPSBvcHRp
b25zIHx8IHt9OwoKICAgICAgICAvLyBPZiBjb3Vyc2Ugd2UgY29sbGVjdCB0b2tlbnMgaGVyZS4K
ICAgICAgICBvcHRpb25zLnRva2VucyA9IHRydWU7CiAgICAgICAgZXh0cmEudG9rZW5zID0gW107
CiAgICAgICAgZXh0cmEudG9rZW5pemUgPSB0cnVlOwogICAgICAgIC8vIFRoZSBmb2xsb3dpbmcg
dHdvIGZpZWxkcyBhcmUgbmVjZXNzYXJ5IHRvIGNvbXB1dGUgdGhlIFJlZ2V4IHRva2Vucy4KICAg
ICAgICBleHRyYS5vcGVuUGFyZW5Ub2tlbiA9IC0xOwogICAgICAgIGV4dHJhLm9wZW5DdXJseVRv
a2VuID0gLTE7CgogICAgICAgIGV4dHJhLnJhbmdlID0gKHR5cGVvZiBvcHRpb25zLnJhbmdlID09
PSAnYm9vbGVhbicpICYmIG9wdGlvbnMucmFuZ2U7CiAgICAgICAgZXh0cmEubG9jID0gKHR5cGVv
ZiBvcHRpb25zLmxvYyA9PT0gJ2Jvb2xlYW4nKSAmJiBvcHRpb25zLmxvYzsKCiAgICAgICAgaWYg
KHR5cGVvZiBvcHRpb25zLmNvbW1lbnQgPT09ICdib29sZWFuJyAmJiBvcHRpb25zLmNvbW1lbnQp
IHsKICAgICAgICAgICAgZXh0cmEuY29tbWVudHMgPSBbXTsKICAgICAgICB9CiAgICAgICAgaWYg
KHR5cGVvZiBvcHRpb25zLnRvbGVyYW50ID09PSAnYm9vbGVhbicgJiYgb3B0aW9ucy50b2xlcmFu
dCkgewogICAgICAgICAgICBleHRyYS5lcnJvcnMgPSBbXTsKICAgICAgICB9CgogICAgICAgIHRy
eSB7CiAgICAgICAgICAgIHBlZWsoKTsKICAgICAgICAgICAgaWYgKGxvb2thaGVhZC50eXBlID09
PSBUb2tlbi5FT0YpIHsKICAgICAgICAgICAgICAgIHJldHVybiBleHRyYS50b2tlbnM7CiAgICAg
ICAgICAgIH0KCiAgICAgICAgICAgIHRva2VuID0gbGV4KCk7CiAgICAgICAgICAgIHdoaWxlIChs
b29rYWhlYWQudHlwZSAhPT0gVG9rZW4uRU9GKSB7CiAgICAgICAgICAgICAgICB0cnkgewogICAg
ICAgICAgICAgICAgICAgIHRva2VuID0gbGV4KCk7CiAgICAgICAgICAgICAgICB9IGNhdGNoIChs
ZXhFcnJvcikgewogICAgICAgICAgICAgICAgICAgIHRva2VuID0gbG9va2FoZWFkOwogICAgICAg
ICAgICAgICAgICAgIGlmIChleHRyYS5lcnJvcnMpIHsKICAgICAgICAgICAgICAgICAgICAgICAg
ZXh0cmEuZXJyb3JzLnB1c2gobGV4RXJyb3IpOwogICAgICAgICAgICAgICAgICAgICAgICAvLyBX
ZSBoYXZlIHRvIGJyZWFrIG9uIHRoZSBmaXJzdCBlcnJvcgogICAgICAgICAgICAgICAgICAgICAg
ICAvLyB0byBhdm9pZCBpbmZpbml0ZSBsb29wcy4KICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAg
dGhyb3cgbGV4RXJyb3I7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICB9CgogICAgICAgICAgICBmaWx0ZXJUb2tlbkxvY2F0aW9uKCk7CiAgICAgICAg
ICAgIHRva2VucyA9IGV4dHJhLnRva2VuczsKICAgICAgICAgICAgaWYgKHR5cGVvZiBleHRyYS5j
b21tZW50cyAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgIHRva2Vucy5jb21tZW50
cyA9IGV4dHJhLmNvbW1lbnRzOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICh0eXBlb2Yg
ZXh0cmEuZXJyb3JzICE9PSAndW5kZWZpbmVkJykgewogICAgICAgICAgICAgICAgdG9rZW5zLmVy
cm9ycyA9IGV4dHJhLmVycm9yczsKICAgICAgICAgICAgfQogICAgICAgIH0gY2F0Y2ggKGUpIHsK
ICAgICAgICAgICAgdGhyb3cgZTsKICAgICAgICB9IGZpbmFsbHkgewogICAgICAgICAgICBleHRy
YSA9IHt9OwogICAgICAgIH0KICAgICAgICByZXR1cm4gdG9rZW5zOwogICAgfQoKICAgIGZ1bmN0
aW9uIHBhcnNlKGNvZGUsIG9wdGlvbnMpIHsKICAgICAgICB2YXIgcHJvZ3JhbSwgdG9TdHJpbmc7
CgogICAgICAgIHRvU3RyaW5nID0gU3RyaW5nOwogICAgICAgIGlmICh0eXBlb2YgY29kZSAhPT0g
J3N0cmluZycgJiYgIShjb2RlIGluc3RhbmNlb2YgU3RyaW5nKSkgewogICAgICAgICAgICBjb2Rl
ID0gdG9TdHJpbmcoY29kZSk7CiAgICAgICAgfQoKICAgICAgICBkZWxlZ2F0ZSA9IFN5bnRheFRy
ZWVEZWxlZ2F0ZTsKICAgICAgICBzb3VyY2UgPSBjb2RlOwogICAgICAgIGluZGV4ID0gMDsKICAg
ICAgICBsaW5lTnVtYmVyID0gKHNvdXJjZS5sZW5ndGggPiAwKSA/IDEgOiAwOwogICAgICAgIGxp
bmVTdGFydCA9IDA7CiAgICAgICAgbGVuZ3RoID0gc291cmNlLmxlbmd0aDsKICAgICAgICBsb29r
YWhlYWQgPSBudWxsOwogICAgICAgIHN0YXRlID0gewogICAgICAgICAgICBhbGxvd0luOiB0cnVl
LAogICAgICAgICAgICBsYWJlbFNldDoge30sCiAgICAgICAgICAgIGluRnVuY3Rpb25Cb2R5OiBm
YWxzZSwKICAgICAgICAgICAgaW5JdGVyYXRpb246IGZhbHNlLAogICAgICAgICAgICBpblN3aXRj
aDogZmFsc2UsCiAgICAgICAgICAgIGxhc3RDb21tZW50U3RhcnQ6IC0xCiAgICAgICAgfTsKCiAg
ICAgICAgZXh0cmEgPSB7fTsKICAgICAgICBpZiAodHlwZW9mIG9wdGlvbnMgIT09ICd1bmRlZmlu
ZWQnKSB7CiAgICAgICAgICAgIGV4dHJhLnJhbmdlID0gKHR5cGVvZiBvcHRpb25zLnJhbmdlID09
PSAnYm9vbGVhbicpICYmIG9wdGlvbnMucmFuZ2U7CiAgICAgICAgICAgIGV4dHJhLmxvYyA9ICh0
eXBlb2Ygb3B0aW9ucy5sb2MgPT09ICdib29sZWFuJykgJiYgb3B0aW9ucy5sb2M7CiAgICAgICAg
ICAgIGV4dHJhLmF0dGFjaENvbW1lbnQgPSAodHlwZW9mIG9wdGlvbnMuYXR0YWNoQ29tbWVudCA9
PT0gJ2Jvb2xlYW4nKSAmJiBvcHRpb25zLmF0dGFjaENvbW1lbnQ7CgogICAgICAgICAgICBpZiAo
ZXh0cmEubG9jICYmIG9wdGlvbnMuc291cmNlICE9PSBudWxsICYmIG9wdGlvbnMuc291cmNlICE9
PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgIGV4dHJhLnNvdXJjZSA9IHRvU3RyaW5nKG9w
dGlvbnMuc291cmNlKTsKICAgICAgICAgICAgfQoKICAgICAgICAgICAgaWYgKHR5cGVvZiBvcHRp
b25zLnRva2VucyA9PT0gJ2Jvb2xlYW4nICYmIG9wdGlvbnMudG9rZW5zKSB7CiAgICAgICAgICAg
ICAgICBleHRyYS50b2tlbnMgPSBbXTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAodHlw
ZW9mIG9wdGlvbnMuY29tbWVudCA9PT0gJ2Jvb2xlYW4nICYmIG9wdGlvbnMuY29tbWVudCkgewog
ICAgICAgICAgICAgICAgZXh0cmEuY29tbWVudHMgPSBbXTsKICAgICAgICAgICAgfQogICAgICAg
ICAgICBpZiAodHlwZW9mIG9wdGlvbnMudG9sZXJhbnQgPT09ICdib29sZWFuJyAmJiBvcHRpb25z
LnRvbGVyYW50KSB7CiAgICAgICAgICAgICAgICBleHRyYS5lcnJvcnMgPSBbXTsKICAgICAgICAg
ICAgfQogICAgICAgICAgICBpZiAoZXh0cmEuYXR0YWNoQ29tbWVudCkgewogICAgICAgICAgICAg
ICAgZXh0cmEucmFuZ2UgPSB0cnVlOwogICAgICAgICAgICAgICAgZXh0cmEuY29tbWVudHMgPSBb
XTsKICAgICAgICAgICAgICAgIGV4dHJhLmJvdHRvbVJpZ2h0U3RhY2sgPSBbXTsKICAgICAgICAg
ICAgICAgIGV4dHJhLnRyYWlsaW5nQ29tbWVudHMgPSBbXTsKICAgICAgICAgICAgICAgIGV4dHJh
LmxlYWRpbmdDb21tZW50cyA9IFtdOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICB0
cnkgewogICAgICAgICAgICBwcm9ncmFtID0gcGFyc2VQcm9ncmFtKCk7CiAgICAgICAgICAgIGlm
ICh0eXBlb2YgZXh0cmEuY29tbWVudHMgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAgICAgICAg
ICBwcm9ncmFtLmNvbW1lbnRzID0gZXh0cmEuY29tbWVudHM7CiAgICAgICAgICAgIH0KICAgICAg
ICAgICAgaWYgKHR5cGVvZiBleHRyYS50b2tlbnMgIT09ICd1bmRlZmluZWQnKSB7CiAgICAgICAg
ICAgICAgICBmaWx0ZXJUb2tlbkxvY2F0aW9uKCk7CiAgICAgICAgICAgICAgICBwcm9ncmFtLnRv
a2VucyA9IGV4dHJhLnRva2VuczsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAodHlwZW9m
IGV4dHJhLmVycm9ycyAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICAgICAgICAgIHByb2dyYW0u
ZXJyb3JzID0gZXh0cmEuZXJyb3JzOwogICAgICAgICAgICB9CiAgICAgICAgfSBjYXRjaCAoZSkg
ewogICAgICAgICAgICB0aHJvdyBlOwogICAgICAgIH0gZmluYWxseSB7CiAgICAgICAgICAgIGV4
dHJhID0ge307CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gcHJvZ3JhbTsKICAgIH0KCiAgICAv
LyBTeW5jIHdpdGggKi5qc29uIG1hbmlmZXN0cy4KICAgIGV4cG9ydHMudmVyc2lvbiA9ICcxLjIu
Mic7CgogICAgZXhwb3J0cy50b2tlbml6ZSA9IHRva2VuaXplOwoKICAgIGV4cG9ydHMucGFyc2Ug
PSBwYXJzZTsKCiAgICAvLyBEZWVwIGNvcHkuCiAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICov
CiAgICBleHBvcnRzLlN5bnRheCA9IChmdW5jdGlvbiAoKSB7CiAgICAgICAgdmFyIG5hbWUsIHR5
cGVzID0ge307CgogICAgICAgIGlmICh0eXBlb2YgT2JqZWN0LmNyZWF0ZSA9PT0gJ2Z1bmN0aW9u
JykgewogICAgICAgICAgICB0eXBlcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7CiAgICAgICAgfQoK
ICAgICAgICBmb3IgKG5hbWUgaW4gU3ludGF4KSB7CiAgICAgICAgICAgIGlmIChTeW50YXguaGFz
T3duUHJvcGVydHkobmFtZSkpIHsKICAgICAgICAgICAgICAgIHR5cGVzW25hbWVdID0gU3ludGF4
W25hbWVdOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBpZiAodHlwZW9mIE9iamVj
dC5mcmVlemUgPT09ICdmdW5jdGlvbicpIHsKICAgICAgICAgICAgT2JqZWN0LmZyZWV6ZSh0eXBl
cyk7CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gdHlwZXM7CiAgICB9KCkpOwoKfSkpOwovKiB2
aW06IHNldCBzdz00IHRzPTQgZXQgdHc9ODAgOiAqLwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241325</attachid>
            <date>2014-11-10 18:06:10 -0800</date>
            <delta_ts>2014-11-10 20:58:28 -0800</delta_ts>
            <desc>[PATCH] Correct esprima version.</desc>
            <filename>esprima.diff</filename>
            <type>text/plain</type>
            <size>4709</size>
            <attacher name="Jonathan Wells">jonowells</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDUzMWJhNTYuLmRiNjY4MzMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIwIEBACiAyMDE0LTExLTEwICBKb25hdGhhbiBXZWxs
cyAgPGpvbm93ZWxsc0BhcHBsZS5jb20+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogVXBkYXRl
IEVzcHJpbWEsIHJlbW92ZSBXZWJJbnNwZWN0b3IuRXNwcmltYSBnbG9iYWwuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg1NzkKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgZXNwcmltYS5qcyBm
aWxlIHRvIGJlIHVuY2hhbmdlZCBieSByZW1vdmluZyBXZWJJbnNwZWN0b3IuRXNwcmltYSBnbG9i
YWwgb2JqZWN0LiBNb3ZlIGVzcHJpbWEuanMgaW5jbHVkZQorICAgICAgICBzbyB0aGF0IGFsbCBl
eHRlcm5hbCBsaWJyYXJpZXMgbG9hZCBiZWZvcmUgdGhlIFdlYkluc3BlY3RvciBuYW1lc3BhY2Ug
aXMgZGVjbGFyZWQgaW4gdGhlIGNvbWJpbmVkIE1haW4uanMuCisKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL0V4dGVybmFsL0VzcHJpbWEvZXNwcmltYS5qczogRmlsZSB1cGRhdGVkLCBubyBjaGFu
Z2VzIG1hZGUuCisgICAgICAgICogVXNlckludGVyZmFjZS9NYWluLmh0bWw6IGVzcHJpbWEuanMg
c2NyaXB0IHRhZyBtb3ZlZCB1cCB3aXRoIG90aGVyIGV4dGVybmFscy4KKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL01vZGVscy9TY3JpcHRTeW50YXhUcmVlLmpzOiBXZWJJbnNwZWN0b3IuRXNwcmlt
YSBjaGFuZ2VkIHRvIGVzcHJpbWEKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhU
cmVlKToKKworMjAxNC0xMS0xMCAgSm9uYXRoYW4gV2VsbHMgIDxqb25vd2VsbHNAYXBwbGUuY29t
PgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEFkZCBpbmZyYXN0cnVjdHVyZSBmb3IgZXNsaW50
IGJhc2VkIHN0YXRpYyBhbmFseXplcgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTM3ODkwCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0VzcHJpbWEvZXNwcmltYS5qcyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0V4dGVybmFsL0VzcHJpbWEvZXNwcmltYS5qcwppbmRl
eCA5NDFiMmQzLi41OTMwMjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9FeHRlcm5hbC9Fc3ByaW1hL2VzcHJpbWEuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvRXh0ZXJuYWwvRXNwcmltYS9lc3ByaW1hLmpzCkBAIC0z
MSwxMiArMzEsMzIgQEAKICAgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICovCiAKLS8vIFdlYktpdCBNb2RpZmljYXRpb25z
OgotLy8gLSBUaGUgb25seSBlZGl0IG1hZGUgdG8gdGhpcyBmaWxlIGlzIHRoZSB1c2UgJ1dlYklu
c3BlY3Rvci5Fc3ByaW1hJyBhcyB0aGUgJ2V4cG9ydHMnIG9iamVjdCBmb3IgZXNwcmltYS4KLS8v
ICAgVGhlIGNvZGUgdGhhdCBkZXRlcm1pbmVzIHRoZSBjb250ZXh0IGVzcHJpbWEgaXMgbG9hZGVk
IGluIChub2RlLmpzLCB0aGUgYnJvd3NlciwgZXRjLikgaGFzIGJlZW4gcmVwbGFjZWQgd2l0aCBh
IHJlZmVyZW5jZSB0byAnV2ViSW5zcGVjdG9yLkVzcHJpbWEnLgotV2ViSW5zcGVjdG9yLkVzcHJp
bWEgPSB7fTsKKy8qanNsaW50IGJpdHdpc2U6dHJ1ZSBwbHVzcGx1czp0cnVlICovCisvKmdsb2Jh
bCBlc3ByaW1hOnRydWUsIGRlZmluZTp0cnVlLCBleHBvcnRzOnRydWUsIHdpbmRvdzogdHJ1ZSwK
K3Rocm93RXJyb3JUb2xlcmFudDogdHJ1ZSwKK3Rocm93RXJyb3I6IHRydWUsIGdlbmVyYXRlU3Rh
dGVtZW50OiB0cnVlLCBwZWVrOiB0cnVlLAorcGFyc2VBc3NpZ25tZW50RXhwcmVzc2lvbjogdHJ1
ZSwgcGFyc2VCbG9jazogdHJ1ZSwgcGFyc2VFeHByZXNzaW9uOiB0cnVlLAorcGFyc2VGdW5jdGlv
bkRlY2xhcmF0aW9uOiB0cnVlLCBwYXJzZUZ1bmN0aW9uRXhwcmVzc2lvbjogdHJ1ZSwKK3BhcnNl
RnVuY3Rpb25Tb3VyY2VFbGVtZW50czogdHJ1ZSwgcGFyc2VWYXJpYWJsZUlkZW50aWZpZXI6IHRy
dWUsCitwYXJzZUxlZnRIYW5kU2lkZUV4cHJlc3Npb246IHRydWUsCitwYXJzZVVuYXJ5RXhwcmVz
c2lvbjogdHJ1ZSwKK3BhcnNlU3RhdGVtZW50OiB0cnVlLCBwYXJzZVNvdXJjZUVsZW1lbnQ6IHRy
dWUgKi8KKworKGZ1bmN0aW9uIChyb290LCBmYWN0b3J5KSB7CisgICAgJ3VzZSBzdHJpY3QnOwor
CisgICAgLy8gVW5pdmVyc2FsIE1vZHVsZSBEZWZpbml0aW9uIChVTUQpIHRvIHN1cHBvcnQgQU1E
LCBDb21tb25KUy9Ob2RlLmpzLAorICAgIC8vIFJoaW5vLCBhbmQgcGxhaW4gYnJvd3NlciBsb2Fk
aW5nLgogCi0oZnVuY3Rpb24gKGV4cG9ydHMpIHsKKyAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4
dCAqLworICAgIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIGRlZmluZS5hbWQp
IHsKKyAgICAgICAgZGVmaW5lKFsnZXhwb3J0cyddLCBmYWN0b3J5KTsKKyAgICB9IGVsc2UgaWYg
KHR5cGVvZiBleHBvcnRzICE9PSAndW5kZWZpbmVkJykgeworICAgICAgICBmYWN0b3J5KGV4cG9y
dHMpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZhY3RvcnkoKHJvb3QuZXNwcmltYSA9IHt9KSk7
CisgICAgfQorfSh0aGlzLCBmdW5jdGlvbiAoZXhwb3J0cykgewogICAgICd1c2Ugc3RyaWN0JzsK
IAogICAgIHZhciBUb2tlbiwKQEAgLTM3MzIsNCArMzc1Miw1IEBAIFdlYkluc3BlY3Rvci5Fc3By
aW1hID0ge307CiAgICAgICAgIHJldHVybiB0eXBlczsKICAgICB9KCkpOwogCi19KShXZWJJbnNw
ZWN0b3IuRXNwcmltYSk7Cit9KSk7CisvKiB2aW06IHNldCBzdz00IHRzPTQgZXQgdHc9ODAgOiAq
LwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5o
dG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4
IGJmN2UzNmMuLmY5Mjk0N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9NYWluLmh0bWwKQEAgLTE2MCw2ICsxNjAsNyBAQAogICAgIDxzY3JpcHQgc3JjPSJFeHRl
cm5hbC9Db2RlTWlycm9yL3NxbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkV4dGVy
bmFsL0NvZGVNaXJyb3IveG1sLmpzIj48L3NjcmlwdD4KIAorICAgIDxzY3JpcHQgc3JjPSJFeHRl
cm5hbC9Fc3ByaW1hL2VzcHJpbWEuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJFeHRl
cm5hbC9FU0xpbnQvZXNsaW50LmpzIj48L3NjcmlwdD4KIAogICAgIDxzY3JpcHQgc3JjPSJCYXNl
L1dlYkluc3BlY3Rvci5qcyI+PC9zY3JpcHQ+CkBAIC0xNzYsOCArMTc3LDYgQEAKICAgICA8c2Ny
aXB0IHNyYz0iQmFzZS9VUkxVdGlsaXRpZXMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJCYXNlL1V0aWxpdGllcy5qcyI+PC9zY3JpcHQ+CiAKLSAgICA8c2NyaXB0IHNyYz0iRXh0ZXJu
YWwvRXNwcmltYS9lc3ByaW1hLmpzIj48L3NjcmlwdD4KLQogICAgIDxzY3JpcHQgc3JjPSJQcm90
b2NvbC9BcHBsaWNhdGlvbkNhY2hlT2JzZXJ2ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJQcm90b2NvbC9DU1NPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IlByb3RvY29sL0NvbnNvbGVPYnNlcnZlci5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvU2NyaXB0U3ludGF4VHJlZS5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHRTeW50
YXhUcmVlLmpzCmluZGV4IDUzZjI2ZTQuLjVjZDg3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHRTeW50YXhUcmVlLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9TY3JpcHRTeW50YXhU
cmVlLmpzCkBAIC0zMSw3ICszMSw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRTeW50YXhUcmVlID0g
ZnVuY3Rpb24oc291cmNlVGV4dCwgc2NyaXB0KQogICAgIHRoaXMuX3NjcmlwdCA9IHNjcmlwdDsK
IAogICAgIHRyeSB7Ci0gICAgICAgIHZhciBlc3ByaW1hU3ludGF4VHJlZSA9IFdlYkluc3BlY3Rv
ci5Fc3ByaW1hLnBhcnNlKHNvdXJjZVRleHQsIHtyYW5nZTogdHJ1ZX0pOworICAgICAgICB2YXIg
ZXNwcmltYVN5bnRheFRyZWUgPSBlc3ByaW1hLnBhcnNlKHNvdXJjZVRleHQsIHtyYW5nZTogdHJ1
ZX0pOwogICAgICAgICB0aGlzLl9zeW50YXhUcmVlID0gdGhpcy5fY3JlYXRlSW50ZXJuYWxTeW50
YXhUcmVlKGVzcHJpbWFTeW50YXhUcmVlKTsKICAgICAgICAgdGhpcy5fcGFyc2VkU3VjY2Vzc2Z1
bGx5ID0gdHJ1ZTsKICAgICB9IGNhdGNoIChlcnJvcikgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>