<?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>175669</bug_id>
          
          <creation_ts>2017-08-17 06:26:00 -0700</creation_ts>
          <short_desc>Speedometer: Update to modern React/Redux version</short_desc>
          <delta_ts>2017-08-22 01:53:35 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>172339</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mathias Bynens">mathias</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>addyo</cc>
    
    <cc>buildbot</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mathias</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1339523</commentid>
    <comment_count>0</comment_count>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2017-08-17 06:26:00 -0700</bug_when>
    <thetext>Speedometer: Update to modern React/Redux version</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339525</commentid>
    <comment_count>1</comment_count>
      <attachid>318357</attachid>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2017-08-17 06:29:15 -0700</bug_when>
    <thetext>Created attachment 318357
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339529</commentid>
    <comment_count>2</comment_count>
      <attachid>318359</attachid>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2017-08-17 06:45:14 -0700</bug_when>
    <thetext>Created attachment 318359
Results before and after the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339935</commentid>
    <comment_count>3</comment_count>
      <attachid>318357</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-17 20:51:39 -0700</bug_when>
    <thetext>Comment on attachment 318357
Patch

Clearing flags on attachment: 318357

Committed r220899: &lt;http://trac.webkit.org/changeset/220899&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339936</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-08-17 20:51:41 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1339937</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-08-17 20:52:31 -0700</bug_when>
    <thetext>&lt;rdar://problem/33956468&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1340999</commentid>
    <comment_count>6</comment_count>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2017-08-22 01:51:12 -0700</bug_when>
    <thetext>Reopening to attach new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341000</commentid>
    <comment_count>7</comment_count>
      <attachid>318747</attachid>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2017-08-22 01:51:17 -0700</bug_when>
    <thetext>Created attachment 318747
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1341001</commentid>
    <comment_count>8</comment_count>
      <attachid>318747</attachid>
    <who name="Mathias Bynens">mathias</who>
    <bug_when>2017-08-22 01:53:00 -0700</bug_when>
    <thetext>Comment on attachment 318747
Patch

Whoops. Please ignore.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>318357</attachid>
            <date>2017-08-17 06:29:15 -0700</date>
            <delta_ts>2017-08-22 01:51:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175669-20170817152911.patch</filename>
            <type>text/plain</type>
            <size>2713998</size>
            <attacher name="Mathias Bynens">mathias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwODUzCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDcwMDY0ODE0YmY0
MGZjZDU0OWNlZDU1MjgxNDA0M2YzZGZmNjc0YzQuLjk1MmNiZmU1MGE0MWFkYzllNDE2MjI4ODFj
N2I2N2MxZmEyZTU3ZmEgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTctMDgt
MTcgIE1hdGhpYXMgQnluZW5zICA8bWF0aGlhc0BxaXdpLmJlPgorCisgICAgICAgIFNwZWVkb21l
dGVyOiBVcGRhdGUgdG8gbW9kZXJuIFJlYWN0L1JlZHV4IHZlcnNpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTY2OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L1JFQURNRS5tZDogRG9j
dW1lbnRlZCBidWlsZCBzdGVwcy4KKyAgICAgICAgKiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvZGlzdC8qOiBVcGRhdGVkIHBl
ciBidWlsZCBpbnN0cnVjdGlvbnMuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3BhY2thZ2UtbG9jay5qc29u
OiBQaW5uZWQgZGVwZW5kZW5jaWVzIHRvIG1ha2UgYnVpbGRzIGRldGVybWluaXN0aWMuCisgICAg
ICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0LXJlZHV4L3BhY2thZ2UuanNvbjogRml4ZWQgYnVpbGQgY29tbWFuZC4KKyAgICAgICAg
KiBTcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3QtcmVkdXgvcHVibGljL2luZGV4Lmh0bWw6IE1hZGUgdGl0bGUgY29uc2lzdGVudC4KKwogMjAx
Ny0wOC0xNiAgTWF0aGlhcyBCeW5lbnMgIDxtYXRoaWFzQHFpd2kuYmU+CiAKICAgICAgICAgU3Bl
ZWRvbWV0ZXI6IFVwZGF0ZSBBbmd1bGFyIDEgVG9kb01WQyBleGFtcGxlIHRvIHYxLjYuNQpkaWZm
IC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvUkVBRE1FLm1kIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3QtcmVkdXgvUkVBRE1FLm1kCmluZGV4IGViZDBhYzUwYjJlYzYzZmNmNGUwNGU2YzMzODQ2
MmY5NzE0MDQ5MmQuLmNlN2I4ZmQxNTgwNDUzMTAxZDVmMDc5ZjRhZmYwODAwN2I0ZDExYzMgMTAw
NjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L1JFQURNRS5tZAorKysgYi9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9yZWFjdC1yZWR1eC9SRUFETUUubWQKQEAgLTEsMzMgKzEsMTYgQEAKLSMgUmVkdXggVG9k
b01WQyBFeGFtcGxlCisjIFNwZWVkb21ldGVyIDIuMDogUmVhY3QgUmVkdXggVG9kb01WQyBleGFt
cGxlCiAKLVRoaXMgcHJvamVjdCB0ZW1wbGF0ZSB3YXMgYnVpbHQgd2l0aCBbQ3JlYXRlIFJlYWN0
IEFwcF0oaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29raW5jdWJhdG9yL2NyZWF0ZS1yZWFjdC1h
cHApLgorIyMgVGVzdCBsb2NhbGx5CiAKLSMjIEF2YWlsYWJsZSBTY3JpcHRzCisxLiBgbnBtIGlu
c3RhbGxgCisyLiBgbnBtIHN0YXJ0YCBydW5zIHRoZSBhcHAgaW4gZGV2ZWxvcG1lbnQgbW9kZQor
My4gT3BlbiA8aHR0cDovL2xvY2FsaG9zdDozMDAwLz4gdG8gdmlldyBpdCBpbiB0aGUgYnJvd3Nl
ci4KIAotSW4gdGhlIHByb2plY3QgZGlyZWN0b3J5LCB5b3UgY2FuIHJ1bjoKK1RoZSBwYWdlIHJl
bG9hZHMgd2hlbmV2ZXIgeW91IG1ha2UgZWRpdHMuIExpbnQgZXJyb3JzIGFyZSBwcmludGVkIHRv
IHRoZSBjb25zb2xlLgogCi0jIyMgYG5wbSBzdGFydGAKKyMjIEJ1aWxkCiAKLVJ1bnMgdGhlIGFw
cCBpbiB0aGUgZGV2ZWxvcG1lbnQgbW9kZS48YnI+Ci1PcGVuIFtodHRwOi8vbG9jYWxob3N0OjMw
MDBdKGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMCkgdG8gdmlldyBpdCBpbiB0aGUgYnJvd3Nlci4KKzEu
IGBucG0gcnVuIGJ1aWxkYAogCi1UaGUgcGFnZSB3aWxsIHJlbG9hZCBpZiB5b3UgbWFrZSBlZGl0
cy48YnI+Ci1Zb3Ugd2lsbCBhbHNvIHNlZSBhbnkgbGludCBlcnJvcnMgaW4gdGhlIGNvbnNvbGUu
Ci0KLSMjIyBgbnBtIHJ1biBidWlsZGAKLQotQnVpbGRzIHRoZSBhcHAgZm9yIHByb2R1Y3Rpb24g
dG8gdGhlIGBidWlsZGAgZm9sZGVyLjxicj4KLUl0IGNvcnJlY3RseSBidW5kbGVzIFJlYWN0IGlu
IHByb2R1Y3Rpb24gbW9kZSBhbmQgb3B0aW1pemVzIHRoZSBidWlsZCBmb3IgdGhlIGJlc3QgcGVy
Zm9ybWFuY2UuCi0KLVRoZSBidWlsZCBpcyBtaW5pZmllZCBhbmQgdGhlIGZpbGVuYW1lcyBpbmNs
dWRlIHRoZSBoYXNoZXMuPGJyPgotWW91ciBhcHAgaXMgcmVhZHkgdG8gYmUgZGVwbG95ZWQhCi0K
LSMjIyBgbnBtIHJ1biBlamVjdGAKLQotKipOb3RlOiB0aGlzIGlzIGEgb25lLXdheSBvcGVyYXRp
b24uIE9uY2UgeW91IGBlamVjdGAsIHlvdSBjYW7igJl0IGdvIGJhY2shKioKLQotSWYgeW91IGFy
ZW7igJl0IHNhdGlzZmllZCB3aXRoIHRoZSBidWlsZCB0b29sIGFuZCBjb25maWd1cmF0aW9uIGNo
b2ljZXMsIHlvdSBjYW4gYGVqZWN0YCBhdCBhbnkgdGltZS4gVGhpcyBjb21tYW5kIHdpbGwgcmVt
b3ZlIHRoZSBzaW5nbGUgYnVpbGQgZGVwZW5kZW5jeSBmcm9tIHlvdXIgcHJvamVjdC4KLQotSW5z
dGVhZCwgaXQgd2lsbCBjb3B5IGFsbCB0aGUgY29uZmlndXJhdGlvbiBmaWxlcyBhbmQgdGhlIHRy
YW5zaXRpdmUgZGVwZW5kZW5jaWVzIChXZWJwYWNrLCBCYWJlbCwgRVNMaW50LCBldGMpIHJpZ2h0
IGludG8geW91ciBwcm9qZWN0IHNvIHlvdSBoYXZlIGZ1bGwgY29udHJvbCBvdmVyIHRoZW0uIEFs
bCBvZiB0aGUgY29tbWFuZHMgZXhjZXB0IGBlamVjdGAgd2lsbCBzdGlsbCB3b3JrLCBidXQgdGhl
eSB3aWxsIHBvaW50IHRvIHRoZSBjb3BpZWQgc2NyaXB0cyBzbyB5b3UgY2FuIHR3ZWFrIHRoZW0u
IEF0IHRoaXMgcG9pbnQgeW914oCZcmUgb24geW91ciBvd24uCi0KLVlvdSBkb27igJl0IGhhdmUg
dG8gZXZlciB1c2UgYGVqZWN0YC4gVGhlIGN1cmF0ZWQgZmVhdHVyZSBzZXQgaXMgc3VpdGFibGUg
Zm9yIHNtYWxsIGFuZCBtaWRkbGUgZGVwbG95bWVudHMsIGFuZCB5b3Ugc2hvdWxkbuKAmXQgZmVl
bCBvYmxpZ2F0ZWQgdG8gdXNlIHRoaXMgZmVhdHVyZS4gSG93ZXZlciB3ZSB1bmRlcnN0YW5kIHRo
YXQgdGhpcyB0b29sIHdvdWxkbuKAmXQgYmUgdXNlZnVsIGlmIHlvdSBjb3VsZG7igJl0IGN1c3Rv
bWl6ZSBpdCB3aGVuIHlvdSBhcmUgcmVhZHkgZm9yIGl0LgorVGhpcyBidWlsZHMgdGhlIGFwcCBm
b3IgcHJvZHVjdGlvbiB0byB0aGUgYGRpc3RgIGZvbGRlci4gSXQgY29ycmVjdGx5IGJ1bmRsZXMK
K1JlYWN0IGluIHByb2R1Y3Rpb24gbW9kZSBhbmQgb3B0aW1pemVzIHRoZSBidWlsZCBmb3IgdGhl
IGJlc3QgcGVyZm9ybWFuY2UuCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9k
aXN0L2luZGV4Lmh0bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L2luZGV4Lmh0bWwK
aW5kZXggMDcxOTExZjZlNDc3MzNmNDI5YmNjZDg4ODNlODQwMjAyNmQwMGJmZS4uOTY4Mjc3NDY0
MWQ3NDMzOTc4MjhjYTA2NTYzNmVkYTk4YjU0NTJlMiAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3QtcmVkdXgvZGlzdC9pbmRleC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRv
bWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4
L2Rpc3QvaW5kZXguaHRtbApAQCAtMSArMSBAQAotPCFET0NUWVBFIGh0bWw+PGh0bWwgbGFuZz0i
ZW4iPjxoZWFkPjxtZXRhIGNoYXJzZXQ9InV0Zi04Ij48bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29u
dGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLGluaXRpYWwtc2NhbGU9MSI+PHRpdGxlPlJlZHV4IFRv
ZG9NVkMgRXhhbXBsZTwvdGl0bGU+PGxpbmsgaHJlZj0ic3RhdGljL2Nzcy9tYWluLmQ0M2QyOTA5
LmNzcyIgcmVsPSJzdHlsZXNoZWV0Ij48L2hlYWQ+PGJvZHk+PGRpdiBjbGFzcz0idG9kb2FwcCIg
aWQ9InJvb3QiPjwvZGl2PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InN0YXRp
Yy9qcy9tYWluLjk0NjI2OWZmLmpzIj48L3NjcmlwdD48L2JvZHk+PC9odG1sPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKKzwhRE9DVFlQRSBodG1sPjxodG1sIGxhbmc9ImVuIj48aGVhZD48
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+PG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRo
PWRldmljZS13aWR0aCxpbml0aWFsLXNjYWxlPTEiPjx0aXRsZT5SZWFjdCBSZWR1eCBUb2RvTVZD
IGV4YW1wbGU8L3RpdGxlPjxsaW5rIGhyZWY9Ii4vc3RhdGljL2Nzcy9tYWluLmYwNGE3MzE5LmNz
cyIgcmVsPSJzdHlsZXNoZWV0Ij48L2hlYWQ+PGJvZHk+PGRpdiBjbGFzcz0idG9kb2FwcCIgaWQ9
InJvb3QiPjwvZGl2PjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii4vc3RhdGlj
L2pzL21haW4uNDNhMDk0OGMuanMiPjwvc2NyaXB0PjwvYm9keT48L2h0bWw+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRl
ci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvZGlz
dC9zdGF0aWMvY3NzL21haW4uZDQzZDI5MDkuY3NzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9t
ZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgv
ZGlzdC9zdGF0aWMvY3NzL21haW4uZDQzZDI5MDkuY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA2N2JkZGY5Nzk5MzlmZDcyMDJiMGQ2YjdlYjQ2NTliYjJkOTVjZGU4Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
LXJlZHV4L2Rpc3Qvc3RhdGljL2Nzcy9tYWluLmQ0M2QyOTA5LmNzcworKysgL2Rldi9udWxsCkBA
IC0xLDIgKzAsMCBAQAotYm9keSxidXR0b24saHRtbHttYXJnaW46MDtwYWRkaW5nOjB9YnV0dG9u
e2JvcmRlcjowO2JhY2tncm91bmQ6bm9uZTtmb250LXNpemU6MTAwJTt2ZXJ0aWNhbC1hbGlnbjpi
YXNlbGluZTtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtd2VpZ2h0OmluaGVyaXQ7Y29sb3I6aW5o
ZXJpdDstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJh
bmNlOm5vbmU7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxpYXNlZH1ib2R5LGJ1dHRvbnst
bW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGV9Ym9keXtmb250OjE0cHggSGVsdmV0aWNh
IE5ldWUsSGVsdmV0aWNhLEFyaWFsLHNhbnMtc2VyaWY7bGluZS1oZWlnaHQ6MS40ZW07YmFja2dy
b3VuZDojZjVmNWY1O2NvbG9yOiM0ZDRkNGQ7bWluLXdpZHRoOjIzMHB4O21heC13aWR0aDo1NTBw
eDttYXJnaW46MCBhdXRvOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7Zm9udC13
ZWlnaHQ6MzAwfTpmb2N1c3tvdXRsaW5lOjB9LmhpZGRlbntkaXNwbGF5Om5vbmV9LnRvZG9hcHB7
YmFja2dyb3VuZDojZmZmO21hcmdpbjoxMzBweCAwIDQwcHg7cG9zaXRpb246cmVsYXRpdmU7Ym94
LXNoYWRvdzowIDJweCA0cHggMCByZ2JhKDAsMCwwLC4yKSwwIDI1cHggNTBweCAwIHJnYmEoMCww
LDAsLjEpfS50b2RvYXBwIGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVye2ZvbnQtc3R5
bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjMwMDtjb2xvcjojZTZlNmU2fS50b2RvYXBwIGlucHV0Ojot
bW96LXBsYWNlaG9sZGVye2ZvbnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjMwMDtjb2xvcjoj
ZTZlNmU2fS50b2RvYXBwIGlucHV0OjppbnB1dC1wbGFjZWhvbGRlcntmb250LXN0eWxlOml0YWxp
Yztmb250LXdlaWdodDozMDA7Y29sb3I6I2U2ZTZlNn0udG9kb2FwcCBoMXtwb3NpdGlvbjphYnNv
bHV0ZTt0b3A6LTE1NXB4O3dpZHRoOjEwMCU7Zm9udC1zaXplOjEwMHB4O2ZvbnQtd2VpZ2h0OjEw
MDt0ZXh0LWFsaWduOmNlbnRlcjtjb2xvcjpyZ2JhKDE3NSw0Nyw0NywuMTUpOy13ZWJraXQtdGV4
dC1yZW5kZXJpbmc6b3B0aW1pemVMZWdpYmlsaXR5Oy1tb3otdGV4dC1yZW5kZXJpbmc6b3B0aW1p
emVMZWdpYmlsaXR5O3RleHQtcmVuZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eX0uZWRpdCwubmV3
LXRvZG97cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luOjA7d2lkdGg6MTAwJTtmb250LXNpemU6MjRw
eDtmb250LWZhbWlseTppbmhlcml0O2ZvbnQtd2VpZ2h0OmluaGVyaXQ7bGluZS1oZWlnaHQ6MS40
ZW07Ym9yZGVyOjA7Y29sb3I6aW5oZXJpdDtwYWRkaW5nOjZweDtib3JkZXI6MXB4IHNvbGlkICM5
OTk7Ym94LXNoYWRvdzppbnNldCAwIC0xcHggNXB4IDAgcmdiYSgwLDAsMCwuMik7Ym94LXNpemlu
Zzpib3JkZXItYm94Oy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWQ7LW1vei1vc3gt
Zm9udC1zbW9vdGhpbmc6Z3JheXNjYWxlfS5uZXctdG9kb3twYWRkaW5nOjE2cHggMTZweCAxNnB4
IDYwcHg7Ym9yZGVyOm5vbmU7YmFja2dyb3VuZDpyZ2JhKDAsMCwwLC4wMDMpO2JveC1zaGFkb3c6
aW5zZXQgMCAtMnB4IDFweCByZ2JhKDAsMCwwLC4wMyl9Lm1haW57cG9zaXRpb246cmVsYXRpdmU7
ei1pbmRleDoyO2JvcmRlci10b3A6MXB4IHNvbGlkICNlNmU2ZTZ9bGFiZWxbZm9yPXRvZ2dsZS1h
bGxde2Rpc3BsYXk6bm9uZX0udG9nZ2xlLWFsbHtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTU1cHg7
bGVmdDotMTJweDt3aWR0aDo2MHB4O2hlaWdodDozNHB4O3RleHQtYWxpZ246Y2VudGVyO2JvcmRl
cjpub25lfS50b2dnbGUtYWxsOmJlZm9yZXtjb250ZW50OidcMjc2Ric7Zm9udC1zaXplOjIycHg7
Y29sb3I6I2U2ZTZlNjtwYWRkaW5nOjEwcHggMjdweH0udG9nZ2xlLWFsbDpjaGVja2VkOmJlZm9y
ZXtjb2xvcjojNzM3MzczfS50b2RvLWxpc3R7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6
bm9uZX0udG9kby1saXN0IGxpe3Bvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZToyNHB4O2JvcmRl
ci1ib3R0b206MXB4IHNvbGlkICNlZGVkZWR9LnRvZG8tbGlzdCBsaTpsYXN0LWNoaWxke2JvcmRl
ci1ib3R0b206bm9uZX0udG9kby1saXN0IGxpLmVkaXRpbmd7Ym9yZGVyLWJvdHRvbTpub25lO3Bh
ZGRpbmc6MH0udG9kby1saXN0IGxpLmVkaXRpbmcgLmVkaXR7ZGlzcGxheTpibG9jazt3aWR0aDo1
MDZweDtwYWRkaW5nOjEycHggMTZweDttYXJnaW46MCAwIDAgNDNweH0udG9kby1saXN0IGxpLmVk
aXRpbmcgLnZpZXd7ZGlzcGxheTpub25lfS50b2RvLWxpc3QgbGkgLnRvZ2dsZXt0ZXh0LWFsaWdu
OmNlbnRlcjt3aWR0aDo0MHB4O2hlaWdodDphdXRvO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2Jv
dHRvbTowO21hcmdpbjphdXRvIDA7Ym9yZGVyOm5vbmU7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7
LW1vei1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpub25lfS50b2RvLWxpc3QgbGkgLnRvZ2ds
ZTphZnRlcntjb250ZW50OnVybCgnZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz0i
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgdmlld0Jv
eD0iLTEwIC0xOCAxMDAgMTM1Ij48Y2lyY2xlIGN4PSI1MCIgY3k9IjUwIiByPSI1MCIgZmlsbD0i
bm9uZSIgc3Ryb2tlPSIjZWRlZGVkIiBzdHJva2Utd2lkdGg9IjMiLz48L3N2Zz4nKX0udG9kby1s
aXN0IGxpIC50b2dnbGU6Y2hlY2tlZDphZnRlcntjb250ZW50OnVybCgnZGF0YTppbWFnZS9zdmcr
eG1sO3V0ZjgsPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI0
MCIgaGVpZ2h0PSI0MCIgdmlld0JveD0iLTEwIC0xOCAxMDAgMTM1Ij48Y2lyY2xlIGN4PSI1MCIg
Y3k9IjUwIiByPSI1MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjYmRkYWQ1IiBzdHJva2Utd2lkdGg9
IjMiLz48cGF0aCBmaWxsPSIjNWRjMmFmIiBkPSJNNzIgMjVMNDIgNzEgMjcgNTZsLTQgNCAyMCAy
MCAzNC01MnoiLz48L3N2Zz4nKX0udG9kby1saXN0IGxpIGxhYmVse3dvcmQtYnJlYWs6YnJlYWst
YWxsO3BhZGRpbmc6MTVweCA2MHB4IDE1cHggMTVweDttYXJnaW4tbGVmdDo0NXB4O2Rpc3BsYXk6
YmxvY2s7bGluZS1oZWlnaHQ6MS4yOy13ZWJraXQtdHJhbnNpdGlvbjpjb2xvciAuNHM7dHJhbnNp
dGlvbjpjb2xvciAuNHN9LnRvZG8tbGlzdCBsaS5jb21wbGV0ZWQgbGFiZWx7Y29sb3I6I2Q5ZDlk
OTt0ZXh0LWRlY29yYXRpb246bGluZS10aHJvdWdofS50b2RvLWxpc3QgbGkgLmRlc3Ryb3l7ZGlz
cGxheTpub25lO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3JpZ2h0OjEwcHg7Ym90dG9tOjA7d2lk
dGg6NDBweDtoZWlnaHQ6NDBweDttYXJnaW46YXV0byAwO2ZvbnQtc2l6ZTozMHB4O2NvbG9yOiNj
YzlhOWE7bWFyZ2luLWJvdHRvbToxMXB4Oy13ZWJraXQtdHJhbnNpdGlvbjpjb2xvciAuMnMgZWFz
ZS1vdXQ7dHJhbnNpdGlvbjpjb2xvciAuMnMgZWFzZS1vdXR9LnRvZG8tbGlzdCBsaSAuZGVzdHJv
eTpob3Zlcntjb2xvcjojYWY1YjVlfS50b2RvLWxpc3QgbGkgLmRlc3Ryb3k6YWZ0ZXJ7Y29udGVu
dDonXEQ3J30udG9kby1saXN0IGxpOmhvdmVyIC5kZXN0cm95e2Rpc3BsYXk6YmxvY2t9LnRvZG8t
bGlzdCBsaSAuZWRpdHtkaXNwbGF5Om5vbmV9LnRvZG8tbGlzdCBsaS5lZGl0aW5nOmxhc3QtY2hp
bGR7bWFyZ2luLWJvdHRvbTotMXB4fS5mb290ZXJ7Y29sb3I6Izc3NztwYWRkaW5nOjEwcHggMTVw
eDtoZWlnaHQ6MjBweDt0ZXh0LWFsaWduOmNlbnRlcjtib3JkZXItdG9wOjFweCBzb2xpZCAjZTZl
NmU2fS5mb290ZXI6YmVmb3Jle2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJzb2x1dGU7cmlnaHQ6MDti
b3R0b206MDtsZWZ0OjA7aGVpZ2h0OjUwcHg7b3ZlcmZsb3c6aGlkZGVuO2JveC1zaGFkb3c6MCAx
cHggMXB4IHJnYmEoMCwwLDAsLjIpLDAgOHB4IDAgLTNweCAjZjZmNmY2LDAgOXB4IDFweCAtM3B4
IHJnYmEoMCwwLDAsLjIpLDAgMTZweCAwIC02cHggI2Y2ZjZmNiwwIDE3cHggMnB4IC02cHggcmdi
YSgwLDAsMCwuMil9LnRvZG8tY291bnR7ZmxvYXQ6bGVmdDt0ZXh0LWFsaWduOmxlZnR9LnRvZG8t
Y291bnQgc3Ryb25ne2ZvbnQtd2VpZ2h0OjMwMH0uZmlsdGVyc3ttYXJnaW46MDtwYWRkaW5nOjA7
bGlzdC1zdHlsZTpub25lO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7bGVmdDowfS5maWx0ZXJz
IGxpe2Rpc3BsYXk6aW5saW5lfS5maWx0ZXJzIGxpIGF7Y29sb3I6aW5oZXJpdDttYXJnaW46M3B4
O3BhZGRpbmc6M3B4IDdweDt0ZXh0LWRlY29yYXRpb246bm9uZTtib3JkZXI6MXB4IHNvbGlkIHRy
YW5zcGFyZW50O2JvcmRlci1yYWRpdXM6M3B4fS5maWx0ZXJzIGxpIGE6aG92ZXJ7Ym9yZGVyLWNv
bG9yOnJnYmEoMTc1LDQ3LDQ3LC4xKX0uZmlsdGVycyBsaSBhLnNlbGVjdGVke2JvcmRlci1jb2xv
cjpyZ2JhKDE3NSw0Nyw0NywuMil9LmNsZWFyLWNvbXBsZXRlZCxodG1sIC5jbGVhci1jb21wbGV0
ZWQ6YWN0aXZle2Zsb2F0OnJpZ2h0O3Bvc2l0aW9uOnJlbGF0aXZlO2xpbmUtaGVpZ2h0OjIwcHg7
dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y3Vyc29yOnBvaW50ZXJ9LmNsZWFyLWNvbXBsZXRlZDpob3Zl
cnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5pbmZve21hcmdpbjo2NXB4IGF1dG8gMDtjb2xv
cjojYmZiZmJmO2ZvbnQtc2l6ZToxMHB4O3RleHQtc2hhZG93OjAgMXB4IDAgaHNsYSgwLDAlLDEw
MCUsLjUpO3RleHQtYWxpZ246Y2VudGVyfS5pbmZvIHB7bGluZS1oZWlnaHQ6MX0uaW5mbyBhe2Nv
bG9yOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC13ZWlnaHQ6NDAwfS5pbmZvIGE6
aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1AbWVkaWEgc2NyZWVuIGFuZCAoLXdlYmtp
dC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjApey50b2RvLWxpc3QgbGkgLnRvZ2dsZSwudG9nZ2xl
LWFsbHtiYWNrZ3JvdW5kOm5vbmV9LnRvZG8tbGlzdCBsaSAudG9nZ2xle2hlaWdodDo0MHB4fS50
b2dnbGUtYWxsey13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyk7LW1zLXRyYW5zZm9ybTpy
b3RhdGUoOTBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpOy13ZWJraXQtYXBwZWFyYW5jZTpu
b25lOy1tb3otYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZX19QG1lZGlhIChtYXgtd2lk
dGg6NDMwcHgpey5mb290ZXJ7aGVpZ2h0OjUwcHh9LmZpbHRlcnN7Ym90dG9tOjEwcHh9fQotLyoj
IHNvdXJjZU1hcHBpbmdVUkw9bWFpbi5kNDNkMjkwOS5jc3MubWFwKi8KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L3N0
YXRpYy9jc3MvbWFpbi5mMDRhNzMxOS5jc3MgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0
L3N0YXRpYy9jc3MvbWFpbi5mMDRhNzMxOS5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDhiY2Y5Y2Y3MDUyYzNh
MTM3YzU4YTQ0ZjlhZjBjZmYzYTdmZWZkZAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0LXJlZHV4L2Rpc3Qvc3RhdGljL2Nzcy9tYWluLmYwNGE3MzE5LmNzcwpAQCAtMCwwICsx
LDIgQEAKK2JvZHksYnV0dG9uLGh0bWx7bWFyZ2luOjA7cGFkZGluZzowfWJ1dHRvbntib3JkZXI6
MDtiYWNrZ3JvdW5kOm5vbmU7Zm9udC1zaXplOjEwMCU7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7
Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXdlaWdodDppbmhlcml0O2NvbG9yOmluaGVyaXQ7LXdl
YmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpub25l
Oy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50aWFsaWFzZWR9Ym9keSxidXR0b257LW1vei1vc3gt
Zm9udC1zbW9vdGhpbmc6Z3JheXNjYWxlfWJvZHl7Zm9udDoxNHB4IEhlbHZldGljYSBOZXVlLEhl
bHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2xpbmUtaGVpZ2h0OjEuNGVtO2JhY2tncm91bmQ6I2Y1
ZjVmNTtjb2xvcjojNGQ0ZDRkO21pbi13aWR0aDoyMzBweDttYXgtd2lkdGg6NTUwcHg7bWFyZ2lu
OjAgYXV0bzstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkO2ZvbnQtd2VpZ2h0OjMw
MH06Zm9jdXN7b3V0bGluZTowfS5oaWRkZW57ZGlzcGxheTpub25lfS50b2RvYXBwe2JhY2tncm91
bmQ6I2ZmZjttYXJnaW46MTMwcHggMCA0MHB4O3Bvc2l0aW9uOnJlbGF0aXZlO2JveC1zaGFkb3c6
MCAycHggNHB4IDAgcmdiYSgwLDAsMCwuMiksMCAyNXB4IDUwcHggMCByZ2JhKDAsMCwwLC4xKX0u
dG9kb2FwcCBpbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlcntmb250LXN0eWxlOml0YWxp
Yztmb250LXdlaWdodDozMDA7Y29sb3I6I2U2ZTZlNn0udG9kb2FwcCBpbnB1dDo6LW1vei1wbGFj
ZWhvbGRlcntmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDozMDA7Y29sb3I6I2U2ZTZlNn0u
dG9kb2FwcCBpbnB1dDo6aW5wdXQtcGxhY2Vob2xkZXJ7Zm9udC1zdHlsZTppdGFsaWM7Zm9udC13
ZWlnaHQ6MzAwO2NvbG9yOiNlNmU2ZTZ9LnRvZG9hcHAgaDF7cG9zaXRpb246YWJzb2x1dGU7dG9w
Oi0xNTVweDt3aWR0aDoxMDAlO2ZvbnQtc2l6ZToxMDBweDtmb250LXdlaWdodDoxMDA7dGV4dC1h
bGlnbjpjZW50ZXI7Y29sb3I6cmdiYSgxNzUsNDcsNDcsLjE1KTstd2Via2l0LXRleHQtcmVuZGVy
aW5nOm9wdGltaXplTGVnaWJpbGl0eTstbW96LXRleHQtcmVuZGVyaW5nOm9wdGltaXplTGVnaWJp
bGl0eTt0ZXh0LXJlbmRlcmluZzpvcHRpbWl6ZUxlZ2liaWxpdHl9LmVkaXQsLm5ldy10b2Rve3Bv
c2l0aW9uOnJlbGF0aXZlO21hcmdpbjowO3dpZHRoOjEwMCU7Zm9udC1zaXplOjI0cHg7Zm9udC1m
YW1pbHk6aW5oZXJpdDtmb250LXdlaWdodDppbmhlcml0O2xpbmUtaGVpZ2h0OjEuNGVtO2JvcmRl
cjowO2NvbG9yOmluaGVyaXQ7cGFkZGluZzo2cHg7Ym9yZGVyOjFweCBzb2xpZCAjOTk5O2JveC1z
aGFkb3c6aW5zZXQgMCAtMXB4IDVweCAwIHJnYmEoMCwwLDAsLjIpO2JveC1zaXppbmc6Ym9yZGVy
LWJveDstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2VkOy1tb3otb3N4LWZvbnQtc21v
b3RoaW5nOmdyYXlzY2FsZX0ubmV3LXRvZG97cGFkZGluZzoxNnB4IDE2cHggMTZweCA2MHB4O2Jv
cmRlcjpub25lO2JhY2tncm91bmQ6cmdiYSgwLDAsMCwuMDAzKTtib3gtc2hhZG93Omluc2V0IDAg
LTJweCAxcHggcmdiYSgwLDAsMCwuMDMpfS5tYWlue3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6
Mjtib3JkZXItdG9wOjFweCBzb2xpZCAjZTZlNmU2fS50b2dnbGUtYWxse3RleHQtYWxpZ246Y2Vu
dGVyO2JvcmRlcjpub25lO29wYWNpdHk6MDtwb3NpdGlvbjphYnNvbHV0ZX0udG9nZ2xlLWFsbCts
YWJlbHt3aWR0aDo2MHB4O2hlaWdodDozNHB4O2ZvbnQtc2l6ZTowO3Bvc2l0aW9uOmFic29sdXRl
O3RvcDotNTJweDtsZWZ0Oi0xM3B4Oy13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSg5MGRlZyk7LW1z
LXRyYW5zZm9ybTpyb3RhdGUoOTBkZWcpO3RyYW5zZm9ybTpyb3RhdGUoOTBkZWcpfS50b2dnbGUt
YWxsK2xhYmVsOmJlZm9yZXtjb250ZW50OidcMjc2Ric7Zm9udC1zaXplOjIycHg7Y29sb3I6I2U2
ZTZlNjtwYWRkaW5nOjEwcHggMjdweH0udG9nZ2xlLWFsbDpjaGVja2VkK2xhYmVsOmJlZm9yZXtj
b2xvcjojNzM3MzczfS50b2RvLWxpc3R7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9u
ZX0udG9kby1saXN0IGxpe3Bvc2l0aW9uOnJlbGF0aXZlO2ZvbnQtc2l6ZToyNHB4O2JvcmRlci1i
b3R0b206MXB4IHNvbGlkICNlZGVkZWR9LnRvZG8tbGlzdCBsaTpsYXN0LWNoaWxke2JvcmRlci1i
b3R0b206bm9uZX0udG9kby1saXN0IGxpLmVkaXRpbmd7Ym9yZGVyLWJvdHRvbTpub25lO3BhZGRp
bmc6MH0udG9kby1saXN0IGxpLmVkaXRpbmcgLmVkaXR7ZGlzcGxheTpibG9jazt3aWR0aDo1MDZw
eDtwYWRkaW5nOjEycHggMTZweDttYXJnaW46MCAwIDAgNDNweH0udG9kby1saXN0IGxpLmVkaXRp
bmcgLnZpZXd7ZGlzcGxheTpub25lfS50b2RvLWxpc3QgbGkgLnRvZ2dsZXt0ZXh0LWFsaWduOmNl
bnRlcjt3aWR0aDo0MHB4O2hlaWdodDphdXRvO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRv
bTowO21hcmdpbjphdXRvIDA7Ym9yZGVyOm5vbmU7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1v
ei1hcHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpub25lO29wYWNpdHk6MH0udG9kby1saXN0IGxp
IC50b2dnbGUrbGFiZWx7YmFja2dyb3VuZC1pbWFnZTp1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1
dGY4LCUzQ3N2ZyUyMHhtbG5zJTNEJTIyaHR0cCUzQS8vd3d3LnczLm9yZy8yMDAwL3N2ZyUyMiUy
MHdpZHRoJTNEJTIyNDAlMjIlMjBoZWlnaHQlM0QlMjI0MCUyMiUyMHZpZXdCb3glM0QlMjItMTAl
MjAtMTglMjAxMDAlMjAxMzUlMjIlM0UlM0NjaXJjbGUlMjBjeCUzRCUyMjUwJTIyJTIwY3klM0Ql
MjI1MCUyMiUyMHIlM0QlMjI1MCUyMiUyMGZpbGwlM0QlMjJub25lJTIyJTIwc3Ryb2tlJTNEJTIy
JTIzZWRlZGVkJTIyJTIwc3Ryb2tlLXdpZHRoJTNEJTIyMyUyMi8lM0UlM0Mvc3ZnJTNFJyk7YmFj
a2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb246MH0udG9kby1saXN0
IGxpIC50b2dnbGU6Y2hlY2tlZCtsYWJlbHtiYWNrZ3JvdW5kLWltYWdlOnVybCgnZGF0YTppbWFn
ZS9zdmcreG1sO3V0ZjgsJTNDc3ZnJTIweG1sbnMlM0QlMjJodHRwJTNBLy93d3cudzMub3JnLzIw
MDAvc3ZnJTIyJTIwd2lkdGglM0QlMjI0MCUyMiUyMGhlaWdodCUzRCUyMjQwJTIyJTIwdmlld0Jv
eCUzRCUyMi0xMCUyMC0xOCUyMDEwMCUyMDEzNSUyMiUzRSUzQ2NpcmNsZSUyMGN4JTNEJTIyNTAl
MjIlMjBjeSUzRCUyMjUwJTIyJTIwciUzRCUyMjUwJTIyJTIwZmlsbCUzRCUyMm5vbmUlMjIlMjBz
dHJva2UlM0QlMjIlMjNiZGRhZDUlMjIlMjBzdHJva2Utd2lkdGglM0QlMjIzJTIyLyUzRSUzQ3Bh
dGglMjBmaWxsJTNEJTIyJTIzNWRjMmFmJTIyJTIwZCUzRCUyMk03MiUyMDI1TDQyJTIwNzElMjAy
NyUyMDU2bC00JTIwNCUyMDIwJTIwMjAlMjAzNC01MnolMjIvJTNFJTNDL3N2ZyUzRScpfS50b2Rv
LWxpc3QgbGkgbGFiZWx7d29yZC1icmVhazpicmVhay1hbGw7cGFkZGluZzoxNXB4IDE1cHggMTVw
eCA2MHB4O2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6MS4yOy13ZWJraXQtdHJhbnNpdGlvbjpj
b2xvciAuNHM7dHJhbnNpdGlvbjpjb2xvciAuNHN9LnRvZG8tbGlzdCBsaS5jb21wbGV0ZWQgbGFi
ZWx7Y29sb3I6I2Q5ZDlkOTt0ZXh0LWRlY29yYXRpb246bGluZS10aHJvdWdofS50b2RvLWxpc3Qg
bGkgLmRlc3Ryb3l7ZGlzcGxheTpub25lO3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO3JpZ2h0OjEw
cHg7Ym90dG9tOjA7d2lkdGg6NDBweDtoZWlnaHQ6NDBweDttYXJnaW46YXV0byAwO2ZvbnQtc2l6
ZTozMHB4O2NvbG9yOiNjYzlhOWE7bWFyZ2luLWJvdHRvbToxMXB4Oy13ZWJraXQtdHJhbnNpdGlv
bjpjb2xvciAuMnMgZWFzZS1vdXQ7dHJhbnNpdGlvbjpjb2xvciAuMnMgZWFzZS1vdXR9LnRvZG8t
bGlzdCBsaSAuZGVzdHJveTpob3Zlcntjb2xvcjojYWY1YjVlfS50b2RvLWxpc3QgbGkgLmRlc3Ry
b3k6YWZ0ZXJ7Y29udGVudDonXEQ3J30udG9kby1saXN0IGxpOmhvdmVyIC5kZXN0cm95e2Rpc3Bs
YXk6YmxvY2t9LnRvZG8tbGlzdCBsaSAuZWRpdHtkaXNwbGF5Om5vbmV9LnRvZG8tbGlzdCBsaS5l
ZGl0aW5nOmxhc3QtY2hpbGR7bWFyZ2luLWJvdHRvbTotMXB4fS5mb290ZXJ7Y29sb3I6Izc3Nztw
YWRkaW5nOjEwcHggMTVweDtoZWlnaHQ6MjBweDt0ZXh0LWFsaWduOmNlbnRlcjtib3JkZXItdG9w
OjFweCBzb2xpZCAjZTZlNmU2fS5mb290ZXI6YmVmb3Jle2NvbnRlbnQ6Jyc7cG9zaXRpb246YWJz
b2x1dGU7cmlnaHQ6MDtib3R0b206MDtsZWZ0OjA7aGVpZ2h0OjUwcHg7b3ZlcmZsb3c6aGlkZGVu
O2JveC1zaGFkb3c6MCAxcHggMXB4IHJnYmEoMCwwLDAsLjIpLDAgOHB4IDAgLTNweCAjZjZmNmY2
LDAgOXB4IDFweCAtM3B4IHJnYmEoMCwwLDAsLjIpLDAgMTZweCAwIC02cHggI2Y2ZjZmNiwwIDE3
cHggMnB4IC02cHggcmdiYSgwLDAsMCwuMil9LnRvZG8tY291bnR7ZmxvYXQ6bGVmdDt0ZXh0LWFs
aWduOmxlZnR9LnRvZG8tY291bnQgc3Ryb25ne2ZvbnQtd2VpZ2h0OjMwMH0uZmlsdGVyc3ttYXJn
aW46MDtwYWRkaW5nOjA7bGlzdC1zdHlsZTpub25lO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7
bGVmdDowfS5maWx0ZXJzIGxpe2Rpc3BsYXk6aW5saW5lfS5maWx0ZXJzIGxpIGF7Y29sb3I6aW5o
ZXJpdDttYXJnaW46M3B4O3BhZGRpbmc6M3B4IDdweDt0ZXh0LWRlY29yYXRpb246bm9uZTtib3Jk
ZXI6MXB4IHNvbGlkIHRyYW5zcGFyZW50O2JvcmRlci1yYWRpdXM6M3B4fS5maWx0ZXJzIGxpIGE6
aG92ZXJ7Ym9yZGVyLWNvbG9yOnJnYmEoMTc1LDQ3LDQ3LC4xKX0uZmlsdGVycyBsaSBhLnNlbGVj
dGVke2JvcmRlci1jb2xvcjpyZ2JhKDE3NSw0Nyw0NywuMil9LmNsZWFyLWNvbXBsZXRlZCxodG1s
IC5jbGVhci1jb21wbGV0ZWQ6YWN0aXZle2Zsb2F0OnJpZ2h0O3Bvc2l0aW9uOnJlbGF0aXZlO2xp
bmUtaGVpZ2h0OjIwcHg7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Y3Vyc29yOnBvaW50ZXJ9LmNsZWFy
LWNvbXBsZXRlZDpob3Zlcnt0ZXh0LWRlY29yYXRpb246dW5kZXJsaW5lfS5pbmZve21hcmdpbjo2
NXB4IGF1dG8gMDtjb2xvcjojYmZiZmJmO2ZvbnQtc2l6ZToxMHB4O3RleHQtc2hhZG93OjAgMXB4
IDAgaHNsYSgwLDAlLDEwMCUsLjUpO3RleHQtYWxpZ246Y2VudGVyfS5pbmZvIHB7bGluZS1oZWln
aHQ6MX0uaW5mbyBhe2NvbG9yOmluaGVyaXQ7dGV4dC1kZWNvcmF0aW9uOm5vbmU7Zm9udC13ZWln
aHQ6NDAwfS5pbmZvIGE6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX1AbWVkaWEgc2Ny
ZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOjApey50b2RvLWxpc3QgbGkg
LnRvZ2dsZSwudG9nZ2xlLWFsbHtiYWNrZ3JvdW5kOm5vbmV9LnRvZG8tbGlzdCBsaSAudG9nZ2xl
e2hlaWdodDo0MHB4fX1AbWVkaWEgKG1heC13aWR0aDo0MzBweCl7LmZvb3RlcntoZWlnaHQ6NTBw
eH0uZmlsdGVyc3tib3R0b206MTBweH19CisvKiMgc291cmNlTWFwcGluZ1VSTD1tYWluLmYwNGE3
MzE5LmNzcy5tYXAqLwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3Qvc3RhdGljL2Nzcy9tYWluLmYwNGE3MzE5LmNzcy5t
YXAgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L3N0YXRpYy9jc3MvbWFpbi5mMDRhNzMx
OS5jc3MubWFwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZiZjc2ZTdiNDZiODNiZjYxN2MyYzUxMWVjNzQxZDQzNjI1
MTdlYTYKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L3N0
YXRpYy9jc3MvbWFpbi5mMDRhNzMxOS5jc3MubWFwCkBAIC0wLDAgKzEgQEAKK3sidmVyc2lvbiI6
Mywic291cmNlcyI6W10sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJmaWxlIjoic3RhdGljL2Nz
cy9tYWluLmYwNGE3MzE5LmNzcyIsInNvdXJjZVJvb3QiOiIifQpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3Qvc3RhdGlj
L2pzL21haW4uNDNhMDk0OGMuanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L3N0YXRp
Yy9qcy9tYWluLjQzYTA5NDhjLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5YTk0MTVkYjBiN2MzMTljOTY2ZmNk
Mjc1NzNlNWE2YzRhNzQ1NzUKLS0tIC9kZXYvbnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1Nw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1y
ZWR1eC9kaXN0L3N0YXRpYy9qcy9tYWluLjQzYTA5NDhjLmpzCkBAIC0wLDAgKzEsOCBAQAorIWZ1
bmN0aW9uKGUpe2Z1bmN0aW9uIHQocil7aWYobltyXSlyZXR1cm4gbltyXS5leHBvcnRzO3ZhciBv
PW5bcl09e2V4cG9ydHM6e30saWQ6cixsb2FkZWQ6ITF9O3JldHVybiBlW3JdLmNhbGwoby5leHBv
cnRzLG8sby5leHBvcnRzLHQpLG8ubG9hZGVkPSEwLG8uZXhwb3J0c312YXIgbj17fTtyZXR1cm4g
dC5tPWUsdC5jPW4sdC5wPSIuLyIsdCgwKX0oZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIGUpaWYo
T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdCkpc3dpdGNoKHR5cGVvZiBl
W3RdKXtjYXNlImZ1bmN0aW9uIjpicmVhaztjYXNlIm9iamVjdCI6ZVt0XT1mdW5jdGlvbih0KXt2
YXIgbj10LnNsaWNlKDEpLHI9ZVt0WzBdXTtyZXR1cm4gZnVuY3Rpb24oZSx0LG8pe3IuYXBwbHko
dGhpcyxbZSx0LG9dLmNvbmNhdChuKSl9fShlW3RdKTticmVhaztkZWZhdWx0OmVbdF09ZVtlW3Rd
XX1yZXR1cm4gZX0oW2Z1bmN0aW9uKGUsdCxuKXtuKDE5NiksZS5leHBvcnRzPW4oMjA0KX0sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIsaSxhLHUscyl7aWYo
byh0KSwhZSl7dmFyIGM7aWYodm9pZCAwPT09dCljPW5ldyBFcnJvcigiTWluaWZpZWQgZXhjZXB0
aW9uIG9jY3VycmVkOyB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIHRo
ZSBmdWxsIGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4iKTtl
bHNle3ZhciBsPVtuLHIsaSxhLHUsc10scD0wO2M9bmV3IEVycm9yKHQucmVwbGFjZSgvJXMvZyxm
dW5jdGlvbigpe3JldHVybiBsW3ArK119KSksYy5uYW1lPSJJbnZhcmlhbnQgVmlvbGF0aW9uIn10
aHJvdyBjLmZyYW1lc1RvUG9wPTEsY319dmFyIG89ZnVuY3Rpb24oZSl7fTtlLmV4cG9ydHM9cn0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDcpLG89cjtlLmV4cG9ydHM9b30s
ZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXtmb3IodmFyIHQ9YXJndW1l
bnRzLmxlbmd0aC0xLG49Ik1pbmlmaWVkIFJlYWN0IGVycm9yICMiK2UrIjsgdmlzaXQgaHR0cDov
L2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlh
bnQ9IitlLHI9MDtyPHQ7cisrKW4rPSImYXJnc1tdPSIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3Vt
ZW50c1tyKzFdKTtuKz0iIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlm
aWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1
bCB3YXJuaW5ncy4iO3ZhciBvPW5ldyBFcnJvcihuKTt0aHJvdyBvLm5hbWU9IkludmFyaWFudCBW
aW9sYXRpb24iLG8uZnJhbWVzVG9Qb3A9MSxvfWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQpeyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe2lmKG51bGw9PT1lfHx2b2lkIDA9PT1lKXRocm93IG5l
dyBUeXBlRXJyb3IoIk9iamVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3Ig
dW5kZWZpbmVkIik7cmV0dXJuIE9iamVjdChlKX1mdW5jdGlvbiByKCl7dHJ5e2lmKCFPYmplY3Qu
YXNzaWduKXJldHVybiExO3ZhciBlPW5ldyBTdHJpbmcoImFiYyIpO2lmKGVbNV09ImRlIiwiNSI9
PT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyhlKVswXSlyZXR1cm4hMTtmb3IodmFyIHQ9e30s
bj0wO248MTA7bisrKXRbIl8iK1N0cmluZy5mcm9tQ2hhckNvZGUobildPW47dmFyIHI9T2JqZWN0
LmdldE93blByb3BlcnR5TmFtZXModCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSk7aWYo
IjAxMjM0NTY3ODkiIT09ci5qb2luKCIiKSlyZXR1cm4hMTt2YXIgbz17fTtyZXR1cm4iYWJjZGVm
Z2hpamtsbW5vcHFyc3QiLnNwbGl0KCIiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe29bZV09ZX0pLCJh
YmNkZWZnaGlqa2xtbm9wcXJzdCI9PT1PYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LG8pKS5q
b2luKCIiKX1jYXRjaChpKXtyZXR1cm4hMX19dmFyIG89T2JqZWN0LmdldE93blByb3BlcnR5U3lt
Ym9scyxpPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksYT1PYmplY3QucHJvdG90eXBl
LnByb3BlcnR5SXNFbnVtZXJhYmxlO2UuZXhwb3J0cz1yKCk/T2JqZWN0LmFzc2lnbjpmdW5jdGlv
bihlLHQpe2Zvcih2YXIgcix1LHM9bihlKSxjPTE7Yzxhcmd1bWVudHMubGVuZ3RoO2MrKyl7cj1P
YmplY3QoYXJndW1lbnRzW2NdKTtmb3IodmFyIGwgaW4gcilpLmNhbGwocixsKSYmKHNbbF09clts
XSk7aWYobyl7dT1vKHIpO2Zvcih2YXIgcD0wO3A8dS5sZW5ndGg7cCsrKWEuY2FsbChyLHVbcF0p
JiYoc1t1W3BdXT1yW3VbcF1dKX19cmV0dXJuIHN9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gMT09PWUubm9kZVR5cGUmJmUuZ2V0QXR0cmlidXRl
KGgpPT09U3RyaW5nKHQpfHw4PT09ZS5ub2RlVHlwZSYmZS5ub2RlVmFsdWU9PT0iIHJlYWN0LXRl
eHQ6ICIrdCsiICJ8fDg9PT1lLm5vZGVUeXBlJiZlLm5vZGVWYWx1ZT09PSIgcmVhY3QtZW1wdHk6
ICIrdCsiICJ9ZnVuY3Rpb24gbyhlKXtmb3IodmFyIHQ7dD1lLl9yZW5kZXJlZENvbXBvbmVudDsp
ZT10O3JldHVybiBlfWZ1bmN0aW9uIGkoZSx0KXt2YXIgbj1vKGUpO24uX2hvc3ROb2RlPXQsdFtt
XT1ufWZ1bmN0aW9uIGEoZSl7dmFyIHQ9ZS5faG9zdE5vZGU7dCYmKGRlbGV0ZSB0W21dLGUuX2hv
c3ROb2RlPW51bGwpfWZ1bmN0aW9uIHUoZSx0KXtpZighKGUuX2ZsYWdzJnYuaGFzQ2FjaGVkQ2hp
bGROb2Rlcykpe3ZhciBuPWUuX3JlbmRlcmVkQ2hpbGRyZW4sYT10LmZpcnN0Q2hpbGQ7ZTpmb3Io
dmFyIHUgaW4gbilpZihuLmhhc093blByb3BlcnR5KHUpKXt2YXIgcz1uW3VdLGM9byhzKS5fZG9t
SUQ7aWYoMCE9PWMpe2Zvcig7bnVsbCE9PWE7YT1hLm5leHRTaWJsaW5nKWlmKHIoYSxjKSl7aShz
LGEpO2NvbnRpbnVlIGV9cCgiMzIiLGMpfX1lLl9mbGFnc3w9di5oYXNDYWNoZWRDaGlsZE5vZGVz
fX1mdW5jdGlvbiBzKGUpe2lmKGVbbV0pcmV0dXJuIGVbbV07Zm9yKHZhciB0PVtdOyFlW21dOyl7
aWYodC5wdXNoKGUpLCFlLnBhcmVudE5vZGUpcmV0dXJuIG51bGw7ZT1lLnBhcmVudE5vZGV9Zm9y
KHZhciBuLHI7ZSYmKHI9ZVttXSk7ZT10LnBvcCgpKW49cix0Lmxlbmd0aCYmdShyLGUpO3JldHVy
biBufWZ1bmN0aW9uIGMoZSl7dmFyIHQ9cyhlKTtyZXR1cm4gbnVsbCE9dCYmdC5faG9zdE5vZGU9
PT1lP3Q6bnVsbH1mdW5jdGlvbiBsKGUpe2lmKHZvaWQgMD09PWUuX2hvc3ROb2RlP3AoIjMzIik6
dm9pZCAwLGUuX2hvc3ROb2RlKXJldHVybiBlLl9ob3N0Tm9kZTtmb3IodmFyIHQ9W107IWUuX2hv
c3ROb2RlOyl0LnB1c2goZSksZS5faG9zdFBhcmVudD92b2lkIDA6cCgiMzQiKSxlPWUuX2hvc3RQ
YXJlbnQ7Zm9yKDt0Lmxlbmd0aDtlPXQucG9wKCkpdShlLGUuX2hvc3ROb2RlKTtyZXR1cm4gZS5f
aG9zdE5vZGV9dmFyIHA9bigzKSxkPW4oMTUpLGY9big2MSksaD0obigxKSxkLklEX0FUVFJJQlVU
RV9OQU1FKSx2PWYsbT0iX19yZWFjdEludGVybmFsSW5zdGFuY2UkIitNYXRoLnJhbmRvbSgpLnRv
U3RyaW5nKDM2KS5zbGljZSgyKSx5PXtnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZTpzLGdldElu
c3RhbmNlRnJvbU5vZGU6YyxnZXROb2RlRnJvbUluc3RhbmNlOmwscHJlY2FjaGVDaGlsZE5vZGVz
OnUscHJlY2FjaGVOb2RlOmksdW5jYWNoZU5vZGU6YX07ZS5leHBvcnRzPXl9LGZ1bmN0aW9uKGUs
dCl7InVzZSBzdHJpY3QiO3ZhciBuPSEoInVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3d8fCF3aW5k
b3cuZG9jdW1lbnR8fCF3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCkscj17Y2FuVXNlRE9N
Om4sY2FuVXNlV29ya2VyczoidW5kZWZpbmVkIiE9dHlwZW9mIFdvcmtlcixjYW5Vc2VFdmVudExp
c3RlbmVyczpuJiYhKCF3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciYmIXdpbmRvdy5hdHRhY2hFdmVu
dCksY2FuVXNlVmlld3BvcnQ6biYmISF3aW5kb3cuc2NyZWVuLGlzSW5Xb3JrZXI6IW59O2UuZXhw
b3J0cz1yfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3JldHVybiBm
dW5jdGlvbigpe3JldHVybiBlfX12YXIgcj1mdW5jdGlvbigpe307ci50aGF0UmV0dXJucz1uLHIu
dGhhdFJldHVybnNGYWxzZT1uKCExKSxyLnRoYXRSZXR1cm5zVHJ1ZT1uKCEwKSxyLnRoYXRSZXR1
cm5zTnVsbD1uKG51bGwpLHIudGhhdFJldHVybnNUaGlzPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9
LHIudGhhdFJldHVybnNBcmd1bWVudD1mdW5jdGlvbihlKXtyZXR1cm4gZX0sZS5leHBvcnRzPXJ9
LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bnVsbDtlLmV4cG9ydHM9e2RlYnVn
VG9vbDpyfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7Ty5SZWFj
dFJlY29uY2lsZVRyYW5zYWN0aW9uJiZDP3ZvaWQgMDpsKCIxMjMiKX1mdW5jdGlvbiBvKCl7dGhp
cy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpLHRoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoPW51
bGwsdGhpcy5jYWxsYmFja1F1ZXVlPWQuZ2V0UG9vbGVkKCksdGhpcy5yZWNvbmNpbGVUcmFuc2Fj
dGlvbj1PLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24uZ2V0UG9vbGVkKCEwKX1mdW5jdGlvbiBp
KGUsdCxuLG8saSxhKXtyZXR1cm4gcigpLEMuYmF0Y2hlZFVwZGF0ZXMoZSx0LG4sbyxpLGEpfWZ1
bmN0aW9uIGEoZSx0KXtyZXR1cm4gZS5fbW91bnRPcmRlci10Ll9tb3VudE9yZGVyfWZ1bmN0aW9u
IHUoZSl7dmFyIHQ9ZS5kaXJ0eUNvbXBvbmVudHNMZW5ndGg7dCE9PXkubGVuZ3RoP2woIjEyNCIs
dCx5Lmxlbmd0aCk6dm9pZCAwLHkuc29ydChhKSxnKys7Zm9yKHZhciBuPTA7bjx0O24rKyl7dmFy
IHI9eVtuXSxvPXIuX3BlbmRpbmdDYWxsYmFja3M7ci5fcGVuZGluZ0NhbGxiYWNrcz1udWxsO3Zh
ciBpO2lmKGgubG9nVG9wTGV2ZWxSZW5kZXJzKXt2YXIgdT1yO3IuX2N1cnJlbnRFbGVtZW50LnR5
cGUuaXNSZWFjdFRvcExldmVsV3JhcHBlciYmKHU9ci5fcmVuZGVyZWRDb21wb25lbnQpLGk9IlJl
YWN0IHVwZGF0ZTogIit1LmdldE5hbWUoKSxjb25zb2xlLnRpbWUoaSl9aWYodi5wZXJmb3JtVXBk
YXRlSWZOZWNlc3NhcnkocixlLnJlY29uY2lsZVRyYW5zYWN0aW9uLGcpLGkmJmNvbnNvbGUudGlt
ZUVuZChpKSxvKWZvcih2YXIgcz0wO3M8by5sZW5ndGg7cysrKWUuY2FsbGJhY2tRdWV1ZS5lbnF1
ZXVlKG9bc10sci5nZXRQdWJsaWNJbnN0YW5jZSgpKX19ZnVuY3Rpb24gcyhlKXtyZXR1cm4gcigp
LEMuaXNCYXRjaGluZ1VwZGF0ZXM/KHkucHVzaChlKSx2b2lkKG51bGw9PWUuX3VwZGF0ZUJhdGNo
TnVtYmVyJiYoZS5fdXBkYXRlQmF0Y2hOdW1iZXI9ZysxKSkpOnZvaWQgQy5iYXRjaGVkVXBkYXRl
cyhzLGUpfWZ1bmN0aW9uIGMoZSx0KXtDLmlzQmF0Y2hpbmdVcGRhdGVzP3ZvaWQgMDpsKCIxMjUi
KSxiLmVucXVldWUoZSx0KSxfPSEwfXZhciBsPW4oMykscD1uKDQpLGQ9big1OSksZj1uKDEzKSxo
PW4oNjQpLHY9bigxNiksbT1uKDI3KSx5PShuKDEpLFtdKSxnPTAsYj1kLmdldFBvb2xlZCgpLF89
ITEsQz1udWxsLEU9e2luaXRpYWxpemU6ZnVuY3Rpb24oKXt0aGlzLmRpcnR5Q29tcG9uZW50c0xl
bmd0aD15Lmxlbmd0aH0sY2xvc2U6ZnVuY3Rpb24oKXt0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0
aCE9PXkubGVuZ3RoPyh5LnNwbGljZSgwLHRoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoKSxQKCkp
OnkubGVuZ3RoPTB9fSx3PXtpbml0aWFsaXplOmZ1bmN0aW9uKCl7dGhpcy5jYWxsYmFja1F1ZXVl
LnJlc2V0KCl9LGNsb3NlOmZ1bmN0aW9uKCl7dGhpcy5jYWxsYmFja1F1ZXVlLm5vdGlmeUFsbCgp
fX0sVD1bRSx3XTtwKG8ucHJvdG90eXBlLG0se2dldFRyYW5zYWN0aW9uV3JhcHBlcnM6ZnVuY3Rp
b24oKXtyZXR1cm4gVH0sZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe3RoaXMuZGlydHlDb21wb25lbnRz
TGVuZ3RoPW51bGwsZC5yZWxlYXNlKHRoaXMuY2FsbGJhY2tRdWV1ZSksdGhpcy5jYWxsYmFja1F1
ZXVlPW51bGwsTy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLnJlbGVhc2UodGhpcy5yZWNvbmNp
bGVUcmFuc2FjdGlvbiksdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbj1udWxsfSxwZXJmb3JtOmZ1
bmN0aW9uKGUsdCxuKXtyZXR1cm4gbS5wZXJmb3JtLmNhbGwodGhpcyx0aGlzLnJlY29uY2lsZVRy
YW5zYWN0aW9uLnBlcmZvcm0sdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbixlLHQsbil9fSksZi5h
ZGRQb29saW5nVG8obyk7dmFyIFA9ZnVuY3Rpb24oKXtmb3IoO3kubGVuZ3RofHxfOyl7aWYoeS5s
ZW5ndGgpe3ZhciBlPW8uZ2V0UG9vbGVkKCk7ZS5wZXJmb3JtKHUsbnVsbCxlKSxvLnJlbGVhc2Uo
ZSl9aWYoXyl7Xz0hMTt2YXIgdD1iO2I9ZC5nZXRQb29sZWQoKSx0Lm5vdGlmeUFsbCgpLGQucmVs
ZWFzZSh0KX19fSx4PXtpbmplY3RSZWNvbmNpbGVUcmFuc2FjdGlvbjpmdW5jdGlvbihlKXtlP3Zv
aWQgMDpsKCIxMjYiKSxPLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb249ZX0saW5qZWN0QmF0Y2hp
bmdTdHJhdGVneTpmdW5jdGlvbihlKXtlP3ZvaWQgMDpsKCIxMjciKSwiZnVuY3Rpb24iIT10eXBl
b2YgZS5iYXRjaGVkVXBkYXRlcz9sKCIxMjgiKTp2b2lkIDAsImJvb2xlYW4iIT10eXBlb2YgZS5p
c0JhdGNoaW5nVXBkYXRlcz9sKCIxMjkiKTp2b2lkIDAsQz1lfX0sTz17UmVhY3RSZWNvbmNpbGVU
cmFuc2FjdGlvbjpudWxsLGJhdGNoZWRVcGRhdGVzOmksZW5xdWV1ZVVwZGF0ZTpzLGZsdXNoQmF0
Y2hlZFVwZGF0ZXM6UCxpbmplY3Rpb246eCxhc2FwOmN9O2UuZXhwb3J0cz1PfSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7dGhpcy5kaXNwYXRjaENvbmZp
Zz1lLHRoaXMuX3RhcmdldEluc3Q9dCx0aGlzLm5hdGl2ZUV2ZW50PW47dmFyIG89dGhpcy5jb25z
dHJ1Y3Rvci5JbnRlcmZhY2U7Zm9yKHZhciBpIGluIG8paWYoby5oYXNPd25Qcm9wZXJ0eShpKSl7
dmFyIHU9b1tpXTt1P3RoaXNbaV09dShuKToidGFyZ2V0Ij09PWk/dGhpcy50YXJnZXQ9cjp0aGlz
W2ldPW5baV19dmFyIHM9bnVsbCE9bi5kZWZhdWx0UHJldmVudGVkP24uZGVmYXVsdFByZXZlbnRl
ZDpuLnJldHVyblZhbHVlPT09ITE7cmV0dXJuIHM/dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9YS50
aGF0UmV0dXJuc1RydWU6dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9YS50aGF0UmV0dXJuc0ZhbHNl
LHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9YS50aGF0UmV0dXJuc0ZhbHNlLHRoaXN9dmFyIG89
big0KSxpPW4oMTMpLGE9big3KSx1PShuKDIpLCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSxbImRp
c3BhdGNoQ29uZmlnIiwiX3RhcmdldEluc3QiLCJuYXRpdmVFdmVudCIsImlzRGVmYXVsdFByZXZl
bnRlZCIsImlzUHJvcGFnYXRpb25TdG9wcGVkIiwiX2Rpc3BhdGNoTGlzdGVuZXJzIiwiX2Rpc3Bh
dGNoSW5zdGFuY2VzIl0pLHM9e3R5cGU6bnVsbCx0YXJnZXQ6bnVsbCxjdXJyZW50VGFyZ2V0OmEu
dGhhdFJldHVybnNOdWxsLGV2ZW50UGhhc2U6bnVsbCxidWJibGVzOm51bGwsY2FuY2VsYWJsZTpu
dWxsLHRpbWVTdGFtcDpmdW5jdGlvbihlKXtyZXR1cm4gZS50aW1lU3RhbXB8fERhdGUubm93KCl9
LGRlZmF1bHRQcmV2ZW50ZWQ6bnVsbCxpc1RydXN0ZWQ6bnVsbH07byhyLnByb3RvdHlwZSx7cHJl
dmVudERlZmF1bHQ6ZnVuY3Rpb24oKXt0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITA7dmFyIGU9dGhp
cy5uYXRpdmVFdmVudDtlJiYoZS5wcmV2ZW50RGVmYXVsdD9lLnByZXZlbnREZWZhdWx0KCk6InVu
a25vd24iIT10eXBlb2YgZS5yZXR1cm5WYWx1ZSYmKGUucmV0dXJuVmFsdWU9ITEpLHRoaXMuaXNE
ZWZhdWx0UHJldmVudGVkPWEudGhhdFJldHVybnNUcnVlKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0
aW9uKCl7dmFyIGU9dGhpcy5uYXRpdmVFdmVudDtlJiYoZS5zdG9wUHJvcGFnYXRpb24/ZS5zdG9w
UHJvcGFnYXRpb24oKToidW5rbm93biIhPXR5cGVvZiBlLmNhbmNlbEJ1YmJsZSYmKGUuY2FuY2Vs
QnViYmxlPSEwKSx0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPWEudGhhdFJldHVybnNUcnVlKX0s
cGVyc2lzdDpmdW5jdGlvbigpe3RoaXMuaXNQZXJzaXN0ZW50PWEudGhhdFJldHVybnNUcnVlfSxp
c1BlcnNpc3RlbnQ6YS50aGF0UmV0dXJuc0ZhbHNlLGRlc3RydWN0b3I6ZnVuY3Rpb24oKXt2YXIg
ZT10aGlzLmNvbnN0cnVjdG9yLkludGVyZmFjZTtmb3IodmFyIHQgaW4gZSl0aGlzW3RdPW51bGw7
Zm9yKHZhciBuPTA7bjx1Lmxlbmd0aDtuKyspdGhpc1t1W25dXT1udWxsfX0pLHIuSW50ZXJmYWNl
PXMsci5hdWdtZW50Q2xhc3M9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLHI9ZnVuY3Rpb24oKXt9
O3IucHJvdG90eXBlPW4ucHJvdG90eXBlO3ZhciBhPW5ldyByO28oYSxlLnByb3RvdHlwZSksZS5w
cm90b3R5cGU9YSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUuSW50ZXJmYWNlPW8oe30sbi5J
bnRlcmZhY2UsdCksZS5hdWdtZW50Q2xhc3M9bi5hdWdtZW50Q2xhc3MsaS5hZGRQb29saW5nVG8o
ZSxpLmZvdXJBcmd1bWVudFBvb2xlcil9LGkuYWRkUG9vbGluZ1RvKHIsaS5mb3VyQXJndW1lbnRQ
b29sZXIpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17Y3Vy
cmVudDpudWxsfTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlLmV4
cG9ydHM9bigxNyl9LFsyMzEsM10sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUpe2lmKG0pe3ZhciB0PWUubm9kZSxuPWUuY2hpbGRyZW47aWYobi5sZW5ndGgpZm9yKHZh
ciByPTA7cjxuLmxlbmd0aDtyKyspeSh0LG5bcl0sbnVsbCk7ZWxzZSBudWxsIT1lLmh0bWw/cCh0
LGUuaHRtbCk6bnVsbCE9ZS50ZXh0JiZmKHQsZS50ZXh0KX19ZnVuY3Rpb24gbyhlLHQpe2UucGFy
ZW50Tm9kZS5yZXBsYWNlQ2hpbGQodC5ub2RlLGUpLHIodCl9ZnVuY3Rpb24gaShlLHQpe20/ZS5j
aGlsZHJlbi5wdXNoKHQpOmUubm9kZS5hcHBlbmRDaGlsZCh0Lm5vZGUpfWZ1bmN0aW9uIGEoZSx0
KXttP2UuaHRtbD10OnAoZS5ub2RlLHQpfWZ1bmN0aW9uIHUoZSx0KXttP2UudGV4dD10OmYoZS5u
b2RlLHQpfWZ1bmN0aW9uIHMoKXtyZXR1cm4gdGhpcy5ub2RlLm5vZGVOYW1lfWZ1bmN0aW9uIGMo
ZSl7cmV0dXJue25vZGU6ZSxjaGlsZHJlbjpbXSxodG1sOm51bGwsdGV4dDpudWxsLHRvU3RyaW5n
OnN9fXZhciBsPW4oMzUpLHA9bigyOSksZD1uKDQzKSxmPW4oNzcpLGg9MSx2PTExLG09InVuZGVm
aW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmIm51bWJlciI9PXR5cGVvZiBkb2N1bWVudC5kb2N1bWVu
dE1vZGV8fCJ1bmRlZmluZWQiIT10eXBlb2YgbmF2aWdhdG9yJiYic3RyaW5nIj09dHlwZW9mIG5h
dmlnYXRvci51c2VyQWdlbnQmJi9cYkVkZ2VcL1xkLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQp
LHk9ZChmdW5jdGlvbihlLHQsbil7dC5ub2RlLm5vZGVUeXBlPT09dnx8dC5ub2RlLm5vZGVUeXBl
PT09aCYmIm9iamVjdCI9PT10Lm5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmKG51bGw9PXQu
bm9kZS5uYW1lc3BhY2VVUkl8fHQubm9kZS5uYW1lc3BhY2VVUkk9PT1sLmh0bWwpPyhyKHQpLGUu
aW5zZXJ0QmVmb3JlKHQubm9kZSxuKSk6KGUuaW5zZXJ0QmVmb3JlKHQubm9kZSxuKSxyKHQpKX0p
O2MuaW5zZXJ0VHJlZUJlZm9yZT15LGMucmVwbGFjZUNoaWxkV2l0aFRyZWU9byxjLnF1ZXVlQ2hp
bGQ9aSxjLnF1ZXVlSFRNTD1hLGMucXVldWVUZXh0PXUsZS5leHBvcnRzPWN9LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybihlJnQpPT09dH12YXIgbz1u
KDMpLGk9KG4oMSkse01VU1RfVVNFX1BST1BFUlRZOjEsSEFTX0JPT0xFQU5fVkFMVUU6NCxIQVNf
TlVNRVJJQ19WQUxVRTo4LEhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFOjI0LEhBU19PVkVSTE9B
REVEX0JPT0xFQU5fVkFMVUU6MzIsaW5qZWN0RE9NUHJvcGVydHlDb25maWc6ZnVuY3Rpb24oZSl7
dmFyIHQ9aSxuPWUuUHJvcGVydGllc3x8e30sYT1lLkRPTUF0dHJpYnV0ZU5hbWVzcGFjZXN8fHt9
LHM9ZS5ET01BdHRyaWJ1dGVOYW1lc3x8e30sYz1lLkRPTVByb3BlcnR5TmFtZXN8fHt9LGw9ZS5E
T01NdXRhdGlvbk1ldGhvZHN8fHt9O2UuaXNDdXN0b21BdHRyaWJ1dGUmJnUuX2lzQ3VzdG9tQXR0
cmlidXRlRnVuY3Rpb25zLnB1c2goZS5pc0N1c3RvbUF0dHJpYnV0ZSk7Zm9yKHZhciBwIGluIG4p
e3UucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShwKT9vKCI0OCIscCk6dm9pZCAwO3ZhciBkPXAu
dG9Mb3dlckNhc2UoKSxmPW5bcF0saD17YXR0cmlidXRlTmFtZTpkLGF0dHJpYnV0ZU5hbWVzcGFj
ZTpudWxsLHByb3BlcnR5TmFtZTpwLG11dGF0aW9uTWV0aG9kOm51bGwsbXVzdFVzZVByb3BlcnR5
OnIoZix0Lk1VU1RfVVNFX1BST1BFUlRZKSxoYXNCb29sZWFuVmFsdWU6cihmLHQuSEFTX0JPT0xF
QU5fVkFMVUUpLGhhc051bWVyaWNWYWx1ZTpyKGYsdC5IQVNfTlVNRVJJQ19WQUxVRSksaGFzUG9z
aXRpdmVOdW1lcmljVmFsdWU6cihmLHQuSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUpLGhhc092
ZXJsb2FkZWRCb29sZWFuVmFsdWU6cihmLHQuSEFTX09WRVJMT0FERURfQk9PTEVBTl9WQUxVRSl9
O2lmKGguaGFzQm9vbGVhblZhbHVlK2guaGFzTnVtZXJpY1ZhbHVlK2guaGFzT3ZlcmxvYWRlZEJv
b2xlYW5WYWx1ZTw9MT92b2lkIDA6bygiNTAiLHApLHMuaGFzT3duUHJvcGVydHkocCkpe3ZhciB2
PXNbcF07aC5hdHRyaWJ1dGVOYW1lPXZ9YS5oYXNPd25Qcm9wZXJ0eShwKSYmKGguYXR0cmlidXRl
TmFtZXNwYWNlPWFbcF0pLGMuaGFzT3duUHJvcGVydHkocCkmJihoLnByb3BlcnR5TmFtZT1jW3Bd
KSxsLmhhc093blByb3BlcnR5KHApJiYoaC5tdXRhdGlvbk1ldGhvZD1sW3BdKSx1LnByb3BlcnRp
ZXNbcF09aH19fSksYT0iOkEtWl9hLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUw
MEY4LVxcdTAyRkZcXHUwMzcwLVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZcXHUyMDBDLVxcdTIwMERc
XHUyMDcwLVxcdTIxOEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3RkZcXHVGOTAwLVxcdUZE
Q0ZcXHVGREYwLVxcdUZGRkQiLHU9e0lEX0FUVFJJQlVURV9OQU1FOiJkYXRhLXJlYWN0aWQiLFJP
T1RfQVRUUklCVVRFX05BTUU6ImRhdGEtcmVhY3Ryb290IixBVFRSSUJVVEVfTkFNRV9TVEFSVF9D
SEFSOmEsQVRUUklCVVRFX05BTUVfQ0hBUjphKyJcXC0uMC05XFx1MDBCN1xcdTAzMDAtXFx1MDM2
RlxcdTIwM0YtXFx1MjA0MCIscHJvcGVydGllczp7fSxnZXRQb3NzaWJsZVN0YW5kYXJkTmFtZTpu
dWxsLF9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9uczpbXSxpc0N1c3RvbUF0dHJpYnV0ZTpmdW5j
dGlvbihlKXtmb3IodmFyIHQ9MDt0PHUuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zLmxlbmd0
aDt0Kyspe3ZhciBuPXUuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zW3RdO2lmKG4oZSkpcmV0
dXJuITB9cmV0dXJuITF9LGluamVjdGlvbjppfTtlLmV4cG9ydHM9dX0sZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7by5hdHRhY2hSZWZzKHRoaXMsdGhpcy5fY3VycmVu
dEVsZW1lbnQpfXZhciBvPW4oMTYwKSxpPShuKDgpLG4oMikse21vdW50Q29tcG9uZW50OmZ1bmN0
aW9uKGUsdCxuLG8saSxhKXt2YXIgdT1lLm1vdW50Q29tcG9uZW50KHQsbixvLGksYSk7cmV0dXJu
IGUuX2N1cnJlbnRFbGVtZW50JiZudWxsIT1lLl9jdXJyZW50RWxlbWVudC5yZWYmJnQuZ2V0UmVh
Y3RNb3VudFJlYWR5KCkuZW5xdWV1ZShyLGUpLHV9LGdldEhvc3ROb2RlOmZ1bmN0aW9uKGUpe3Jl
dHVybiBlLmdldEhvc3ROb2RlKCl9LHVubW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSx0KXtvLmRl
dGFjaFJlZnMoZSxlLl9jdXJyZW50RWxlbWVudCksZS51bm1vdW50Q29tcG9uZW50KHQpfSxyZWNl
aXZlQ29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBhPWUuX2N1cnJlbnRFbGVtZW50O2lm
KHQhPT1hfHxpIT09ZS5fY29udGV4dCl7dmFyIHU9by5zaG91bGRVcGRhdGVSZWZzKGEsdCk7dSYm
by5kZXRhY2hSZWZzKGUsYSksZS5yZWNlaXZlQ29tcG9uZW50KHQsbixpKSx1JiZlLl9jdXJyZW50
RWxlbWVudCYmbnVsbCE9ZS5fY3VycmVudEVsZW1lbnQucmVmJiZuLmdldFJlYWN0TW91bnRSZWFk
eSgpLmVucXVldWUocixlKX19LHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeTpmdW5jdGlvbihlLHQs
bil7ZS5fdXBkYXRlQmF0Y2hOdW1iZXI9PT1uJiZlLnBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeSh0
KX19KTtlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDQp
LG89big4OSksaT1uKDIxNSksYT1uKDIxNiksdT1uKDE4KSxzPW4oMjE3KSxjPW4oMjE4KSxsPW4o
MjE5KSxwPW4oMjIzKSxkPXUuY3JlYXRlRWxlbWVudCxmPXUuY3JlYXRlRmFjdG9yeSxoPXUuY2xv
bmVFbGVtZW50LHY9cixtPWZ1bmN0aW9uKGUpe3JldHVybiBlfSx5PXtDaGlsZHJlbjp7bWFwOmku
bWFwLGZvckVhY2g6aS5mb3JFYWNoLGNvdW50OmkuY291bnQsdG9BcnJheTppLnRvQXJyYXksb25s
eTpwfSxDb21wb25lbnQ6by5Db21wb25lbnQsUHVyZUNvbXBvbmVudDpvLlB1cmVDb21wb25lbnQs
Y3JlYXRlRWxlbWVudDpkLGNsb25lRWxlbWVudDpoLGlzVmFsaWRFbGVtZW50OnUuaXNWYWxpZEVs
ZW1lbnQsUHJvcFR5cGVzOnMsY3JlYXRlQ2xhc3M6bCxjcmVhdGVGYWN0b3J5OmYsY3JlYXRlTWl4
aW46bSxET006YSx2ZXJzaW9uOmMsX19zcHJlYWQ6dn07ZS5leHBvcnRzPXl9LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gdm9pZCAwIT09ZS5yZWZ9ZnVu
Y3Rpb24gbyhlKXtyZXR1cm4gdm9pZCAwIT09ZS5rZXl9dmFyIGk9big0KSxhPW4oMTEpLHU9KG4o
Miksbig5MyksT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSkscz1uKDkxKSxjPXtrZXk6
ITAscmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH0sbD1mdW5jdGlvbihlLHQsbixyLG8saSxh
KXt2YXIgdT17JCR0eXBlb2Y6cyx0eXBlOmUsa2V5OnQscmVmOm4scHJvcHM6YSxfb3duZXI6aX07
cmV0dXJuIHV9O2wuY3JlYXRlRWxlbWVudD1mdW5jdGlvbihlLHQsbil7dmFyIGkscz17fSxwPW51
bGwsZD1udWxsLGY9bnVsbCxoPW51bGw7aWYobnVsbCE9dCl7cih0KSYmKGQ9dC5yZWYpLG8odCkm
JihwPSIiK3Qua2V5KSxmPXZvaWQgMD09PXQuX19zZWxmP251bGw6dC5fX3NlbGYsaD12b2lkIDA9
PT10Ll9fc291cmNlP251bGw6dC5fX3NvdXJjZTtmb3IoaSBpbiB0KXUuY2FsbCh0LGkpJiYhYy5o
YXNPd25Qcm9wZXJ0eShpKSYmKHNbaV09dFtpXSl9dmFyIHY9YXJndW1lbnRzLmxlbmd0aC0yO2lm
KDE9PT12KXMuY2hpbGRyZW49bjtlbHNlIGlmKHY+MSl7Zm9yKHZhciBtPUFycmF5KHYpLHk9MDt5
PHY7eSsrKW1beV09YXJndW1lbnRzW3krMl07cy5jaGlsZHJlbj1tfWlmKGUmJmUuZGVmYXVsdFBy
b3BzKXt2YXIgZz1lLmRlZmF1bHRQcm9wcztmb3IoaSBpbiBnKXZvaWQgMD09PXNbaV0mJihzW2ld
PWdbaV0pfXJldHVybiBsKGUscCxkLGYsaCxhLmN1cnJlbnQscyl9LGwuY3JlYXRlRmFjdG9yeT1m
dW5jdGlvbihlKXt2YXIgdD1sLmNyZWF0ZUVsZW1lbnQuYmluZChudWxsLGUpO3JldHVybiB0LnR5
cGU9ZSx0fSxsLmNsb25lQW5kUmVwbGFjZUtleT1mdW5jdGlvbihlLHQpe3ZhciBuPWwoZS50eXBl
LHQsZS5yZWYsZS5fc2VsZixlLl9zb3VyY2UsZS5fb3duZXIsZS5wcm9wcyk7cmV0dXJuIG59LGwu
Y2xvbmVFbGVtZW50PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcyxwPWkoe30sZS5wcm9wcyksZD1lLmtl
eSxmPWUucmVmLGg9ZS5fc2VsZix2PWUuX3NvdXJjZSxtPWUuX293bmVyO2lmKG51bGwhPXQpe3Io
dCkmJihmPXQucmVmLG09YS5jdXJyZW50KSxvKHQpJiYoZD0iIit0LmtleSk7dmFyIHk7ZS50eXBl
JiZlLnR5cGUuZGVmYXVsdFByb3BzJiYoeT1lLnR5cGUuZGVmYXVsdFByb3BzKTtmb3IocyBpbiB0
KXUuY2FsbCh0LHMpJiYhYy5oYXNPd25Qcm9wZXJ0eShzKSYmKHZvaWQgMD09PXRbc10mJnZvaWQg
MCE9PXk/cFtzXT15W3NdOnBbc109dFtzXSl9dmFyIGc9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9
PT1nKXAuY2hpbGRyZW49bjtlbHNlIGlmKGc+MSl7Zm9yKHZhciBiPUFycmF5KGcpLF89MDtfPGc7
XysrKWJbX109YXJndW1lbnRzW18rMl07cC5jaGlsZHJlbj1ifXJldHVybiBsKGUudHlwZSxkLGYs
aCx2LG0scCl9LGwuaXNWYWxpZEVsZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIm9iamVjdCI9PXR5
cGVvZiBlJiZudWxsIT09ZSYmZS4kJHR5cGVvZj09PXN9LGUuZXhwb3J0cz1sfSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuImJ1dHRvbiI9PT1lfHwiaW5w
dXQiPT09ZXx8InNlbGVjdCI9PT1lfHwidGV4dGFyZWEiPT09ZX1mdW5jdGlvbiBvKGUsdCxuKXtz
d2l0Y2goZSl7Y2FzZSJvbkNsaWNrIjpjYXNlIm9uQ2xpY2tDYXB0dXJlIjpjYXNlIm9uRG91Ymxl
Q2xpY2siOmNhc2Uib25Eb3VibGVDbGlja0NhcHR1cmUiOmNhc2Uib25Nb3VzZURvd24iOmNhc2Ui
b25Nb3VzZURvd25DYXB0dXJlIjpjYXNlIm9uTW91c2VNb3ZlIjpjYXNlIm9uTW91c2VNb3ZlQ2Fw
dHVyZSI6Y2FzZSJvbk1vdXNlVXAiOmNhc2Uib25Nb3VzZVVwQ2FwdHVyZSI6cmV0dXJuISghbi5k
aXNhYmxlZHx8IXIodCkpO2RlZmF1bHQ6cmV0dXJuITF9fXZhciBpPW4oMyksYT1uKDM2KSx1PW4o
MzcpLHM9big0MSksYz1uKDcwKSxsPW4oNzEpLHA9KG4oMSkse30pLGQ9bnVsbCxmPWZ1bmN0aW9u
KGUsdCl7ZSYmKHUuZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyKGUsdCksZS5pc1BlcnNpc3RlbnQo
KXx8ZS5jb25zdHJ1Y3Rvci5yZWxlYXNlKGUpKX0saD1mdW5jdGlvbihlKXtyZXR1cm4gZihlLCEw
KX0sdj1mdW5jdGlvbihlKXtyZXR1cm4gZihlLCExKX0sbT1mdW5jdGlvbihlKXtyZXR1cm4iLiIr
ZS5fcm9vdE5vZGVJRH0seT17aW5qZWN0aW9uOntpbmplY3RFdmVudFBsdWdpbk9yZGVyOmEuaW5q
ZWN0RXZlbnRQbHVnaW5PcmRlcixpbmplY3RFdmVudFBsdWdpbnNCeU5hbWU6YS5pbmplY3RFdmVu
dFBsdWdpbnNCeU5hbWV9LHB1dExpc3RlbmVyOmZ1bmN0aW9uKGUsdCxuKXsiZnVuY3Rpb24iIT10
eXBlb2Ygbj9pKCI5NCIsdCx0eXBlb2Ygbik6dm9pZCAwO3ZhciByPW0oZSksbz1wW3RdfHwocFt0
XT17fSk7b1tyXT1uO3ZhciB1PWEucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbdF07dSYmdS5kaWRQ
dXRMaXN0ZW5lciYmdS5kaWRQdXRMaXN0ZW5lcihlLHQsbil9LGdldExpc3RlbmVyOmZ1bmN0aW9u
KGUsdCl7dmFyIG49cFt0XTtpZihvKHQsZS5fY3VycmVudEVsZW1lbnQudHlwZSxlLl9jdXJyZW50
RWxlbWVudC5wcm9wcykpcmV0dXJuIG51bGw7dmFyIHI9bShlKTtyZXR1cm4gbiYmbltyXX0sZGVs
ZXRlTGlzdGVuZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj1hLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVz
W3RdO24mJm4ud2lsbERlbGV0ZUxpc3RlbmVyJiZuLndpbGxEZWxldGVMaXN0ZW5lcihlLHQpO3Zh
ciByPXBbdF07aWYocil7dmFyIG89bShlKTtkZWxldGUgcltvXX19LGRlbGV0ZUFsbExpc3RlbmVy
czpmdW5jdGlvbihlKXt2YXIgdD1tKGUpO2Zvcih2YXIgbiBpbiBwKWlmKHAuaGFzT3duUHJvcGVy
dHkobikmJnBbbl1bdF0pe3ZhciByPWEucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbbl07ciYmci53
aWxsRGVsZXRlTGlzdGVuZXImJnIud2lsbERlbGV0ZUxpc3RlbmVyKGUsbiksZGVsZXRlIHBbbl1b
dF19fSxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe2Zvcih2YXIgbyxpPWEucGx1Z2lu
cyx1PTA7dTxpLmxlbmd0aDt1Kyspe3ZhciBzPWlbdV07aWYocyl7dmFyIGw9cy5leHRyYWN0RXZl
bnRzKGUsdCxuLHIpO2wmJihvPWMobyxsKSl9fXJldHVybiBvfSxlbnF1ZXVlRXZlbnRzOmZ1bmN0
aW9uKGUpe2UmJihkPWMoZCxlKSl9LHByb2Nlc3NFdmVudFF1ZXVlOmZ1bmN0aW9uKGUpe3ZhciB0
PWQ7ZD1udWxsLGU/bCh0LGgpOmwodCx2KSxkP2koIjk1Iik6dm9pZCAwLHMucmV0aHJvd0NhdWdo
dEVycm9yKCl9LF9fcHVyZ2U6ZnVuY3Rpb24oKXtwPXt9fSxfX2dldExpc3RlbmVyQmFuazpmdW5j
dGlvbigpe3JldHVybiBwfX07ZS5leHBvcnRzPXl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlLHQsbil7dmFyIHI9dC5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3Ry
YXRpb25OYW1lc1tuXTtyZXR1cm4geShlLHIpfWZ1bmN0aW9uIG8oZSx0LG4pe3ZhciBvPXIoZSxu
LHQpO28mJihuLl9kaXNwYXRjaExpc3RlbmVycz12KG4uX2Rpc3BhdGNoTGlzdGVuZXJzLG8pLG4u
X2Rpc3BhdGNoSW5zdGFuY2VzPXYobi5fZGlzcGF0Y2hJbnN0YW5jZXMsZSkpfWZ1bmN0aW9uIGko
ZSl7ZSYmZS5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcyYmaC50cmF2ZXJz
ZVR3b1BoYXNlKGUuX3RhcmdldEluc3QsbyxlKX1mdW5jdGlvbiBhKGUpe2lmKGUmJmUuZGlzcGF0
Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpe3ZhciB0PWUuX3RhcmdldEluc3Qsbj10
P2guZ2V0UGFyZW50SW5zdGFuY2UodCk6bnVsbDtoLnRyYXZlcnNlVHdvUGhhc2UobixvLGUpfX1m
dW5jdGlvbiB1KGUsdCxuKXtpZihuJiZuLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUp
e3ZhciByPW4uZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSxvPXkoZSxyKTtvJiYobi5f
ZGlzcGF0Y2hMaXN0ZW5lcnM9dihuLl9kaXNwYXRjaExpc3RlbmVycyxvKSxuLl9kaXNwYXRjaElu
c3RhbmNlcz12KG4uX2Rpc3BhdGNoSW5zdGFuY2VzLGUpKX19ZnVuY3Rpb24gcyhlKXtlJiZlLmRp
c3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUmJnUoZS5fdGFyZ2V0SW5zdCxudWxsLGUpfWZ1
bmN0aW9uIGMoZSl7bShlLGkpfWZ1bmN0aW9uIGwoZSl7bShlLGEpfWZ1bmN0aW9uIHAoZSx0LG4s
cil7aC50cmF2ZXJzZUVudGVyTGVhdmUobixyLHUsZSx0KX1mdW5jdGlvbiBkKGUpe20oZSxzKX12
YXIgZj1uKDE5KSxoPW4oMzcpLHY9big3MCksbT1uKDcxKSx5PShuKDIpLGYuZ2V0TGlzdGVuZXIp
LGc9e2FjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXM6YyxhY2N1bXVsYXRlVHdvUGhhc2VEaXNw
YXRjaGVzU2tpcFRhcmdldDpsLGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzOmQsYWNjdW11bGF0
ZUVudGVyTGVhdmVEaXNwYXRjaGVzOnB9O2UuZXhwb3J0cz1nfSxmdW5jdGlvbihlLHQpeyJ1c2Ug
c3RyaWN0Ijt2YXIgbj17cmVtb3ZlOmZ1bmN0aW9uKGUpe2UuX3JlYWN0SW50ZXJuYWxJbnN0YW5j
ZT12b2lkIDB9LGdldDpmdW5jdGlvbihlKXtyZXR1cm4gZS5fcmVhY3RJbnRlcm5hbEluc3RhbmNl
fSxoYXM6ZnVuY3Rpb24oZSl7cmV0dXJuIHZvaWQgMCE9PWUuX3JlYWN0SW50ZXJuYWxJbnN0YW5j
ZX0sc2V0OmZ1bmN0aW9uKGUsdCl7ZS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlPXR9fTtlLmV4cG9y
dHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3Jl
dHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDEwKSxpPW4oNDYpLGE9e3ZpZXc6ZnVu
Y3Rpb24oZSl7aWYoZS52aWV3KXJldHVybiBlLnZpZXc7dmFyIHQ9aShlKTtpZih0LndpbmRvdz09
PXQpcmV0dXJuIHQ7dmFyIG49dC5vd25lckRvY3VtZW50O3JldHVybiBuP24uZGVmYXVsdFZpZXd8
fG4ucGFyZW50V2luZG93OndpbmRvd30sZGV0YWlsOmZ1bmN0aW9uKGUpe3JldHVybiBlLmRldGFp
bHx8MH19O28uYXVnbWVudENsYXNzKHIsYSksZS5leHBvcnRzPXJ9LDMsZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0Ijt2YXIgcj17fTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3Bl
cnR5LmNhbGwoZSx2KXx8KGVbdl09ZisrLHBbZVt2XV09e30pLHBbZVt2XV19dmFyIG8saT1uKDQp
LGE9bigzNiksdT1uKDE1Mikscz1uKDY5KSxjPW4oMTg0KSxsPW4oNDcpLHA9e30sZD0hMSxmPTAs
aD17dG9wQWJvcnQ6ImFib3J0Iix0b3BBbmltYXRpb25FbmQ6YygiYW5pbWF0aW9uZW5kIil8fCJh
bmltYXRpb25lbmQiLHRvcEFuaW1hdGlvbkl0ZXJhdGlvbjpjKCJhbmltYXRpb25pdGVyYXRpb24i
KXx8ImFuaW1hdGlvbml0ZXJhdGlvbiIsdG9wQW5pbWF0aW9uU3RhcnQ6YygiYW5pbWF0aW9uc3Rh
cnQiKXx8ImFuaW1hdGlvbnN0YXJ0Iix0b3BCbHVyOiJibHVyIix0b3BDYW5QbGF5OiJjYW5wbGF5
Iix0b3BDYW5QbGF5VGhyb3VnaDoiY2FucGxheXRocm91Z2giLHRvcENoYW5nZToiY2hhbmdlIix0
b3BDbGljazoiY2xpY2siLHRvcENvbXBvc2l0aW9uRW5kOiJjb21wb3NpdGlvbmVuZCIsdG9wQ29t
cG9zaXRpb25TdGFydDoiY29tcG9zaXRpb25zdGFydCIsdG9wQ29tcG9zaXRpb25VcGRhdGU6ImNv
bXBvc2l0aW9udXBkYXRlIix0b3BDb250ZXh0TWVudToiY29udGV4dG1lbnUiLHRvcENvcHk6ImNv
cHkiLHRvcEN1dDoiY3V0Iix0b3BEb3VibGVDbGljazoiZGJsY2xpY2siLHRvcERyYWc6ImRyYWci
LHRvcERyYWdFbmQ6ImRyYWdlbmQiLHRvcERyYWdFbnRlcjoiZHJhZ2VudGVyIix0b3BEcmFnRXhp
dDoiZHJhZ2V4aXQiLHRvcERyYWdMZWF2ZToiZHJhZ2xlYXZlIix0b3BEcmFnT3ZlcjoiZHJhZ292
ZXIiLHRvcERyYWdTdGFydDoiZHJhZ3N0YXJ0Iix0b3BEcm9wOiJkcm9wIix0b3BEdXJhdGlvbkNo
YW5nZToiZHVyYXRpb25jaGFuZ2UiLHRvcEVtcHRpZWQ6ImVtcHRpZWQiLHRvcEVuY3J5cHRlZDoi
ZW5jcnlwdGVkIix0b3BFbmRlZDoiZW5kZWQiLHRvcEVycm9yOiJlcnJvciIsdG9wRm9jdXM6ImZv
Y3VzIix0b3BJbnB1dDoiaW5wdXQiLHRvcEtleURvd246ImtleWRvd24iLHRvcEtleVByZXNzOiJr
ZXlwcmVzcyIsdG9wS2V5VXA6ImtleXVwIix0b3BMb2FkZWREYXRhOiJsb2FkZWRkYXRhIix0b3BM
b2FkZWRNZXRhZGF0YToibG9hZGVkbWV0YWRhdGEiLHRvcExvYWRTdGFydDoibG9hZHN0YXJ0Iix0
b3BNb3VzZURvd246Im1vdXNlZG93biIsdG9wTW91c2VNb3ZlOiJtb3VzZW1vdmUiLHRvcE1vdXNl
T3V0OiJtb3VzZW91dCIsdG9wTW91c2VPdmVyOiJtb3VzZW92ZXIiLHRvcE1vdXNlVXA6Im1vdXNl
dXAiLHRvcFBhc3RlOiJwYXN0ZSIsdG9wUGF1c2U6InBhdXNlIix0b3BQbGF5OiJwbGF5Iix0b3BQ
bGF5aW5nOiJwbGF5aW5nIix0b3BQcm9ncmVzczoicHJvZ3Jlc3MiLHRvcFJhdGVDaGFuZ2U6InJh
dGVjaGFuZ2UiLHRvcFNjcm9sbDoic2Nyb2xsIix0b3BTZWVrZWQ6InNlZWtlZCIsdG9wU2Vla2lu
Zzoic2Vla2luZyIsdG9wU2VsZWN0aW9uQ2hhbmdlOiJzZWxlY3Rpb25jaGFuZ2UiLHRvcFN0YWxs
ZWQ6InN0YWxsZWQiLHRvcFN1c3BlbmQ6InN1c3BlbmQiLHRvcFRleHRJbnB1dDoidGV4dElucHV0
Iix0b3BUaW1lVXBkYXRlOiJ0aW1ldXBkYXRlIix0b3BUb3VjaENhbmNlbDoidG91Y2hjYW5jZWwi
LHRvcFRvdWNoRW5kOiJ0b3VjaGVuZCIsdG9wVG91Y2hNb3ZlOiJ0b3VjaG1vdmUiLHRvcFRvdWNo
U3RhcnQ6InRvdWNoc3RhcnQiLHRvcFRyYW5zaXRpb25FbmQ6YygidHJhbnNpdGlvbmVuZCIpfHwi
dHJhbnNpdGlvbmVuZCIsdG9wVm9sdW1lQ2hhbmdlOiJ2b2x1bWVjaGFuZ2UiLHRvcFdhaXRpbmc6
IndhaXRpbmciLHRvcFdoZWVsOiJ3aGVlbCJ9LHY9Il9yZWFjdExpc3RlbmVyc0lEIitTdHJpbmco
TWF0aC5yYW5kb20oKSkuc2xpY2UoMiksbT1pKHt9LHUse1JlYWN0RXZlbnRMaXN0ZW5lcjpudWxs
LGluamVjdGlvbjp7aW5qZWN0UmVhY3RFdmVudExpc3RlbmVyOmZ1bmN0aW9uKGUpe2Uuc2V0SGFu
ZGxlVG9wTGV2ZWwobS5oYW5kbGVUb3BMZXZlbCksbS5SZWFjdEV2ZW50TGlzdGVuZXI9ZX19LHNl
dEVuYWJsZWQ6ZnVuY3Rpb24oZSl7bS5SZWFjdEV2ZW50TGlzdGVuZXImJm0uUmVhY3RFdmVudExp
c3RlbmVyLnNldEVuYWJsZWQoZSl9LGlzRW5hYmxlZDpmdW5jdGlvbigpe3JldHVybiEoIW0uUmVh
Y3RFdmVudExpc3RlbmVyfHwhbS5SZWFjdEV2ZW50TGlzdGVuZXIuaXNFbmFibGVkKCkpfSxsaXN0
ZW5UbzpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj10LG89cihuKSxpPWEucmVnaXN0cmF0aW9uTmFt
ZURlcGVuZGVuY2llc1tlXSx1PTA7dTxpLmxlbmd0aDt1Kyspe3ZhciBzPWlbdV07by5oYXNPd25Q
cm9wZXJ0eShzKSYmb1tzXXx8KCJ0b3BXaGVlbCI9PT1zP2woIndoZWVsIik/bS5SZWFjdEV2ZW50
TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgidG9wV2hlZWwiLCJ3aGVlbCIsbik6bCgibW91c2V3
aGVlbCIpP20uUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoInRvcFdoZWVsIiwi
bW91c2V3aGVlbCIsbik6bS5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgidG9w
V2hlZWwiLCJET01Nb3VzZVNjcm9sbCIsbik6InRvcFNjcm9sbCI9PT1zP2woInNjcm9sbCIsITAp
P20uUmVhY3RFdmVudExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50KCJ0b3BTY3JvbGwiLCJzY3Jv
bGwiLG4pOm0uUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoInRvcFNjcm9sbCIs
InNjcm9sbCIsbS5SZWFjdEV2ZW50TGlzdGVuZXIuV0lORE9XX0hBTkRMRSk6InRvcEZvY3VzIj09
PXN8fCJ0b3BCbHVyIj09PXM/KGwoImZvY3VzIiwhMCk/KG0uUmVhY3RFdmVudExpc3RlbmVyLnRy
YXBDYXB0dXJlZEV2ZW50KCJ0b3BGb2N1cyIsImZvY3VzIixuKSxtLlJlYWN0RXZlbnRMaXN0ZW5l
ci50cmFwQ2FwdHVyZWRFdmVudCgidG9wQmx1ciIsImJsdXIiLG4pKTpsKCJmb2N1c2luIikmJiht
LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCJ0b3BGb2N1cyIsImZvY3VzaW4i
LG4pLG0uUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoInRvcEJsdXIiLCJmb2N1
c291dCIsbikpLG8udG9wQmx1cj0hMCxvLnRvcEZvY3VzPSEwKTpoLmhhc093blByb3BlcnR5KHMp
JiZtLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KHMsaFtzXSxuKSxvW3NdPSEw
KX19LHRyYXBCdWJibGVkRXZlbnQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBtLlJlYWN0RXZlbnRM
aXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KGUsdCxuKX0sdHJhcENhcHR1cmVkRXZlbnQ6ZnVuY3Rp
b24oZSx0LG4pe3JldHVybiBtLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudChl
LHQsbil9LHN1cHBvcnRzRXZlbnRQYWdlWFk6ZnVuY3Rpb24oKXtpZighZG9jdW1lbnQuY3JlYXRl
RXZlbnQpcmV0dXJuITE7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRXZlbnQoIk1vdXNlRXZlbnQiKTty
ZXR1cm4gbnVsbCE9ZSYmInBhZ2VYImluIGV9LGVuc3VyZVNjcm9sbFZhbHVlTW9uaXRvcmluZzpm
dW5jdGlvbigpe2lmKHZvaWQgMD09PW8mJihvPW0uc3VwcG9ydHNFdmVudFBhZ2VYWSgpKSwhbyYm
IWQpe3ZhciBlPXMucmVmcmVzaFNjcm9sbFZhbHVlczttLlJlYWN0RXZlbnRMaXN0ZW5lci5tb25p
dG9yU2Nyb2xsVmFsdWUoZSksZD0hMH19fSk7ZS5leHBvcnRzPW19LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4s
cil9dmFyIG89bigyMiksaT1uKDY5KSxhPW4oNDUpLHU9e3NjcmVlblg6bnVsbCxzY3JlZW5ZOm51
bGwsY2xpZW50WDpudWxsLGNsaWVudFk6bnVsbCxjdHJsS2V5Om51bGwsc2hpZnRLZXk6bnVsbCxh
bHRLZXk6bnVsbCxtZXRhS2V5Om51bGwsZ2V0TW9kaWZpZXJTdGF0ZTphLGJ1dHRvbjpmdW5jdGlv
bihlKXt2YXIgdD1lLmJ1dHRvbjtyZXR1cm4id2hpY2giaW4gZT90OjI9PT10PzI6ND09PXQ/MTow
fSxidXR0b25zOm51bGwscmVsYXRlZFRhcmdldDpmdW5jdGlvbihlKXtyZXR1cm4gZS5yZWxhdGVk
VGFyZ2V0fHwoZS5mcm9tRWxlbWVudD09PWUuc3JjRWxlbWVudD9lLnRvRWxlbWVudDplLmZyb21F
bGVtZW50KX0scGFnZVg6ZnVuY3Rpb24oZSl7cmV0dXJuInBhZ2VYImluIGU/ZS5wYWdlWDplLmNs
aWVudFgraS5jdXJyZW50U2Nyb2xsTGVmdH0scGFnZVk6ZnVuY3Rpb24oZSl7cmV0dXJuInBhZ2VZ
ImluIGU/ZS5wYWdlWTplLmNsaWVudFkraS5jdXJyZW50U2Nyb2xsVG9wfX07by5hdWdtZW50Q2xh
c3Mocix1KSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1u
KDMpLG89KG4oMSkse30pLGk9e3JlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uOmZ1bmN0aW9uKCl7dGhp
cy50cmFuc2FjdGlvbldyYXBwZXJzPXRoaXMuZ2V0VHJhbnNhY3Rpb25XcmFwcGVycygpLHRoaXMu
d3JhcHBlckluaXREYXRhP3RoaXMud3JhcHBlckluaXREYXRhLmxlbmd0aD0wOnRoaXMud3JhcHBl
ckluaXREYXRhPVtdLHRoaXMuX2lzSW5UcmFuc2FjdGlvbj0hMX0sX2lzSW5UcmFuc2FjdGlvbjoh
MSxnZXRUcmFuc2FjdGlvbldyYXBwZXJzOm51bGwsaXNJblRyYW5zYWN0aW9uOmZ1bmN0aW9uKCl7
cmV0dXJuISF0aGlzLl9pc0luVHJhbnNhY3Rpb259LHBlcmZvcm06ZnVuY3Rpb24oZSx0LG4sbyxp
LGEsdSxzKXt0aGlzLmlzSW5UcmFuc2FjdGlvbigpP3IoIjI3Iik6dm9pZCAwO3ZhciBjLGw7dHJ5
e3RoaXMuX2lzSW5UcmFuc2FjdGlvbj0hMCxjPSEwLHRoaXMuaW5pdGlhbGl6ZUFsbCgwKSxsPWUu
Y2FsbCh0LG4sbyxpLGEsdSxzKSxjPSExfWZpbmFsbHl7dHJ5e2lmKGMpdHJ5e3RoaXMuY2xvc2VB
bGwoMCl9Y2F0Y2gocCl7fWVsc2UgdGhpcy5jbG9zZUFsbCgwKX1maW5hbGx5e3RoaXMuX2lzSW5U
cmFuc2FjdGlvbj0hMX19cmV0dXJuIGx9LGluaXRpYWxpemVBbGw6ZnVuY3Rpb24oZSl7Zm9yKHZh
ciB0PXRoaXMudHJhbnNhY3Rpb25XcmFwcGVycyxuPWU7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRb
bl07dHJ5e3RoaXMud3JhcHBlckluaXREYXRhW25dPW8sdGhpcy53cmFwcGVySW5pdERhdGFbbl09
ci5pbml0aWFsaXplP3IuaW5pdGlhbGl6ZS5jYWxsKHRoaXMpOm51bGx9ZmluYWxseXtpZih0aGlz
LndyYXBwZXJJbml0RGF0YVtuXT09PW8pdHJ5e3RoaXMuaW5pdGlhbGl6ZUFsbChuKzEpfWNhdGNo
KGkpe319fX0sY2xvc2VBbGw6ZnVuY3Rpb24oZSl7dGhpcy5pc0luVHJhbnNhY3Rpb24oKT92b2lk
IDA6cigiMjgiKTtmb3IodmFyIHQ9dGhpcy50cmFuc2FjdGlvbldyYXBwZXJzLG49ZTtuPHQubGVu
Z3RoO24rKyl7dmFyIGksYT10W25dLHU9dGhpcy53cmFwcGVySW5pdERhdGFbbl07dHJ5e2k9ITAs
dSE9PW8mJmEuY2xvc2UmJmEuY2xvc2UuY2FsbCh0aGlzLHUpLGk9ITF9ZmluYWxseXtpZihpKXRy
eXt0aGlzLmNsb3NlQWxsKG4rMSl9Y2F0Y2gocyl7fX19dGhpcy53cmFwcGVySW5pdERhdGEubGVu
Z3RoPTB9fTtlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
bihlKXt2YXIgdD0iIitlLG49by5leGVjKHQpO2lmKCFuKXJldHVybiB0O3ZhciByLGk9IiIsYT0w
LHU9MDtmb3IoYT1uLmluZGV4O2E8dC5sZW5ndGg7YSsrKXtzd2l0Y2godC5jaGFyQ29kZUF0KGEp
KXtjYXNlIDM0OnI9IiZxdW90OyI7YnJlYWs7Y2FzZSAzODpyPSImYW1wOyI7YnJlYWs7Y2FzZSAz
OTpyPSImI3gyNzsiO2JyZWFrO2Nhc2UgNjA6cj0iJmx0OyI7YnJlYWs7Y2FzZSA2MjpyPSImZ3Q7
IjticmVhaztkZWZhdWx0OmNvbnRpbnVlfXUhPT1hJiYoaSs9dC5zdWJzdHJpbmcodSxhKSksdT1h
KzEsaSs9cn1yZXR1cm4gdSE9PWE/aSt0LnN1YnN0cmluZyh1LGEpOml9ZnVuY3Rpb24gcihlKXty
ZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9mIGU/IiIrZTpuKGUpfXZh
ciBvPS9bIicmPD5dLztlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2
YXIgcixvPW4oNiksaT1uKDM1KSxhPS9eWyBcclxuXHRcZl0vLHU9LzwoIS0tfGxpbmt8bm9zY3Jp
cHR8bWV0YXxzY3JpcHR8c3R5bGUpWyBcclxuXHRcZlwvPl0vLHM9big0MyksYz1zKGZ1bmN0aW9u
KGUsdCl7aWYoZS5uYW1lc3BhY2VVUkkhPT1pLnN2Z3x8ImlubmVySFRNTCJpbiBlKWUuaW5uZXJI
VE1MPXQ7ZWxzZXtyPXJ8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHIuaW5uZXJIVE1M
PSI8c3ZnPiIrdCsiPC9zdmc+Ijtmb3IodmFyIG49ci5maXJzdENoaWxkO24uZmlyc3RDaGlsZDsp
ZS5hcHBlbmRDaGlsZChuLmZpcnN0Q2hpbGQpfX0pO2lmKG8uY2FuVXNlRE9NKXt2YXIgbD1kb2N1
bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtsLmlubmVySFRNTD0iICIsIiI9PT1sLmlubmVySFRN
TCYmKGM9ZnVuY3Rpb24oZSx0KXtpZihlLnBhcmVudE5vZGUmJmUucGFyZW50Tm9kZS5yZXBsYWNl
Q2hpbGQoZSxlKSxhLnRlc3QodCl8fCI8Ij09PXRbMF0mJnUudGVzdCh0KSl7ZS5pbm5lckhUTUw9
U3RyaW5nLmZyb21DaGFyQ29kZSg2NTI3OSkrdDt2YXIgbj1lLmZpcnN0Q2hpbGQ7MT09PW4uZGF0
YS5sZW5ndGg/ZS5yZW1vdmVDaGlsZChuKTpuLmRlbGV0ZURhdGEoMCwxKX1lbHNlIGUuaW5uZXJI
VE1MPXR9KSxsPW51bGx9ZS5leHBvcnRzPWN9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dC5fX2Vz
TW9kdWxlPSEwLHQuY29tcG9zZT10LmFwcGx5TWlkZGxld2FyZT10LmJpbmRBY3Rpb25DcmVhdG9y
cz10LmNvbWJpbmVSZWR1Y2Vycz10LmNyZWF0ZVN0b3JlPXZvaWQgMDt2YXIgbz1uKDk1KSxpPXIo
byksYT1uKDIyNyksdT1yKGEpLHM9bigyMjYpLGM9cihzKSxsPW4oMjI1KSxwPXIobCksZD1uKDk0
KSxmPXIoZCksaD1uKDk2KTtyKGgpO3QuY3JlYXRlU3RvcmU9aS5kZWZhdWx0LHQuY29tYmluZVJl
ZHVjZXJzPXUuZGVmYXVsdCx0LmJpbmRBY3Rpb25DcmVhdG9ycz1jLmRlZmF1bHQsdC5hcHBseU1p
ZGRsZXdhcmU9cC5kZWZhdWx0LHQuY29tcG9zZT1mLmRlZmF1bHR9LGZ1bmN0aW9uKGUsdCxuKXt2
YXIgcixvOyFmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKCl7Zm9yKHZhciBlPVtd
LHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgcj1hcmd1bWVudHNbdF07aWYocil7dmFy
IG89dHlwZW9mIHI7aWYoInN0cmluZyI9PT1vfHwibnVtYmVyIj09PW8pZS5wdXNoKHIpO2Vsc2Ug
aWYoQXJyYXkuaXNBcnJheShyKSllLnB1c2gobi5hcHBseShudWxsLHIpKTtlbHNlIGlmKCJvYmpl
Y3QiPT09bylmb3IodmFyIGEgaW4gcilpLmNhbGwocixhKSYmclthXSYmZS5wdXNoKGEpfX1yZXR1
cm4gZS5qb2luKCIgIil9dmFyIGk9e30uaGFzT3duUHJvcGVydHk7InVuZGVmaW5lZCIhPXR5cGVv
ZiBlJiZlLmV4cG9ydHM/ZS5leHBvcnRzPW46KHI9W10sbz1mdW5jdGlvbigpe3JldHVybiBufS5h
cHBseSh0LHIpLCEodm9pZCAwIT09byYmKGUuZXhwb3J0cz1vKSkpfSgpfSxmdW5jdGlvbihlLHQp
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIGU9PT10PzAhPT1lfHwwIT09dHx8
MS9lPT09MS90OmUhPT1lJiZ0IT09dH1mdW5jdGlvbiByKGUsdCl7aWYobihlLHQpKXJldHVybiEw
O2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWV8fCJvYmplY3QiIT10eXBlb2YgdHx8bnVs
bD09PXQpcmV0dXJuITE7dmFyIHI9T2JqZWN0LmtleXMoZSksaT1PYmplY3Qua2V5cyh0KTtpZihy
Lmxlbmd0aCE9PWkubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgYT0wO2E8ci5sZW5ndGg7YSsrKWlm
KCFvLmNhbGwodCxyW2FdKXx8IW4oZVtyW2FdXSx0W3JbYV1dKSlyZXR1cm4hMTtyZXR1cm4hMH12
YXIgbz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhwb3J0cz1yfSxmdW5jdGlv
bihlLHQsbil7ZnVuY3Rpb24gcihlKXtpZighYShlKXx8byhlKSE9dSlyZXR1cm4hMTt2YXIgdD1p
KGUpO2lmKG51bGw9PT10KXJldHVybiEwO3ZhciBuPXAuY2FsbCh0LCJjb25zdHJ1Y3RvciIpJiZ0
LmNvbnN0cnVjdG9yO3JldHVybiJmdW5jdGlvbiI9PXR5cGVvZiBuJiZuIGluc3RhbmNlb2YgbiYm
bC5jYWxsKG4pPT1kfXZhciBvPW4oMTEyKSxpPW4oMTE0KSxhPW4oMTE5KSx1PSJbb2JqZWN0IE9i
amVjdF0iLHM9RnVuY3Rpb24ucHJvdG90eXBlLGM9T2JqZWN0LnByb3RvdHlwZSxsPXMudG9TdHJp
bmcscD1jLmhhc093blByb3BlcnR5LGQ9bC5jYWxsKE9iamVjdCk7ZS5leHBvcnRzPXJ9LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybiBBcnJheS5pc0Fy
cmF5KHQpJiYodD10WzFdKSx0P3QubmV4dFNpYmxpbmc6ZS5maXJzdENoaWxkfWZ1bmN0aW9uIG8o
ZSx0LG4pe2wuaW5zZXJ0VHJlZUJlZm9yZShlLHQsbil9ZnVuY3Rpb24gaShlLHQsbil7QXJyYXku
aXNBcnJheSh0KT91KGUsdFswXSx0WzFdLG4pOnYoZSx0LG4pfWZ1bmN0aW9uIGEoZSx0KXtpZihB
cnJheS5pc0FycmF5KHQpKXt2YXIgbj10WzFdO3Q9dFswXSxzKGUsdCxuKSxlLnJlbW92ZUNoaWxk
KG4pfWUucmVtb3ZlQ2hpbGQodCl9ZnVuY3Rpb24gdShlLHQsbixyKXtmb3IodmFyIG89dDs7KXt2
YXIgaT1vLm5leHRTaWJsaW5nO2lmKHYoZSxvLHIpLG89PT1uKWJyZWFrO289aX19ZnVuY3Rpb24g
cyhlLHQsbil7Zm9yKDs7KXt2YXIgcj10Lm5leHRTaWJsaW5nO2lmKHI9PT1uKWJyZWFrO2UucmVt
b3ZlQ2hpbGQocil9fWZ1bmN0aW9uIGMoZSx0LG4pe3ZhciByPWUucGFyZW50Tm9kZSxvPWUubmV4
dFNpYmxpbmc7bz09PXQ/biYmdihyLGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKG4pLG8pOm4/KGgo
byxuKSxzKHIsbyx0KSk6cyhyLGUsdCl9dmFyIGw9bigxNCkscD1uKDEyOSksZD0obig1KSxuKDgp
LG4oNDMpKSxmPW4oMjkpLGg9big3Nyksdj1kKGZ1bmN0aW9uKGUsdCxuKXtlLmluc2VydEJlZm9y
ZSh0LG4pfSksbT1wLmRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwLHk9e2Rhbmdlcm91
c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwOm0scmVwbGFjZURlbGltaXRlZFRleHQ6Yyxwcm9jZXNz
VXBkYXRlczpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgdT10
W25dO3N3aXRjaCh1LnR5cGUpe2Nhc2UiSU5TRVJUX01BUktVUCI6byhlLHUuY29udGVudCxyKGUs
dS5hZnRlck5vZGUpKTticmVhaztjYXNlIk1PVkVfRVhJU1RJTkciOmkoZSx1LmZyb21Ob2RlLHIo
ZSx1LmFmdGVyTm9kZSkpO2JyZWFrO2Nhc2UiU0VUX01BUktVUCI6ZihlLHUuY29udGVudCk7YnJl
YWs7Y2FzZSJURVhUX0NPTlRFTlQiOmgoZSx1LmNvbnRlbnQpO2JyZWFrO2Nhc2UiUkVNT1ZFX05P
REUiOmEoZSx1LmZyb21Ob2RlKX19fX07ZS5leHBvcnRzPXl9LGZ1bmN0aW9uKGUsdCl7InVzZSBz
dHJpY3QiO3ZhciBuPXtodG1sOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIixtYXRobWw6
Imh0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwiLHN2ZzoiaHR0cDovL3d3dy53My5v
cmcvMjAwMC9zdmcifTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKCl7aWYodSlmb3IodmFyIGUgaW4gcyl7dmFyIHQ9c1tlXSxuPXUuaW5kZXhPZihl
KTtpZihuPi0xP3ZvaWQgMDphKCI5NiIsZSksIWMucGx1Z2luc1tuXSl7dC5leHRyYWN0RXZlbnRz
P3ZvaWQgMDphKCI5NyIsZSksYy5wbHVnaW5zW25dPXQ7dmFyIHI9dC5ldmVudFR5cGVzO2Zvcih2
YXIgaSBpbiByKW8ocltpXSx0LGkpP3ZvaWQgMDphKCI5OCIsaSxlKX19fWZ1bmN0aW9uIG8oZSx0
LG4pe2MuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzLmhhc093blByb3BlcnR5KG4pP2EoIjk5Iixu
KTp2b2lkIDAsYy5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3Nbbl09ZTt2YXIgcj1lLnBoYXNlZFJl
Z2lzdHJhdGlvbk5hbWVzO2lmKHIpe2Zvcih2YXIgbyBpbiByKWlmKHIuaGFzT3duUHJvcGVydHko
bykpe3ZhciB1PXJbb107aSh1LHQsbil9cmV0dXJuITB9cmV0dXJuISFlLnJlZ2lzdHJhdGlvbk5h
bWUmJihpKGUucmVnaXN0cmF0aW9uTmFtZSx0LG4pLCEwKX1mdW5jdGlvbiBpKGUsdCxuKXtjLnJl
Z2lzdHJhdGlvbk5hbWVNb2R1bGVzW2VdP2EoIjEwMCIsZSk6dm9pZCAwLGMucmVnaXN0cmF0aW9u
TmFtZU1vZHVsZXNbZV09dCxjLnJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRlbmNpZXNbZV09dC5ldmVu
dFR5cGVzW25dLmRlcGVuZGVuY2llc312YXIgYT1uKDMpLHU9KG4oMSksbnVsbCkscz17fSxjPXtw
bHVnaW5zOltdLGV2ZW50TmFtZURpc3BhdGNoQ29uZmlnczp7fSxyZWdpc3RyYXRpb25OYW1lTW9k
dWxlczp7fSxyZWdpc3RyYXRpb25OYW1lRGVwZW5kZW5jaWVzOnt9LHBvc3NpYmxlUmVnaXN0cmF0
aW9uTmFtZXM6bnVsbCxpbmplY3RFdmVudFBsdWdpbk9yZGVyOmZ1bmN0aW9uKGUpe3U/YSgiMTAx
Iik6dm9pZCAwLHU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSkscigpfSxpbmplY3RFdmVu
dFBsdWdpbnNCeU5hbWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ITE7Zm9yKHZhciBuIGluIGUpaWYoZS5o
YXNPd25Qcm9wZXJ0eShuKSl7dmFyIG89ZVtuXTtzLmhhc093blByb3BlcnR5KG4pJiZzW25dPT09
b3x8KHNbbl0/YSgiMTAyIixuKTp2b2lkIDAsc1tuXT1vLHQ9ITApfXQmJnIoKX0sZ2V0UGx1Z2lu
TW9kdWxlRm9yRXZlbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kaXNwYXRjaENvbmZpZztpZih0LnJl
Z2lzdHJhdGlvbk5hbWUpcmV0dXJuIGMucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbdC5yZWdpc3Ry
YXRpb25OYW1lXXx8bnVsbDtpZih2b2lkIDAhPT10LnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKXt2
YXIgbj10LnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzO2Zvcih2YXIgciBpbiBuKWlmKG4uaGFzT3du
UHJvcGVydHkocikpe3ZhciBvPWMucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbbltyXV07aWYobyly
ZXR1cm4gb319cmV0dXJuIG51bGx9LF9yZXNldEV2ZW50UGx1Z2luczpmdW5jdGlvbigpe3U9bnVs
bDtmb3IodmFyIGUgaW4gcylzLmhhc093blByb3BlcnR5KGUpJiZkZWxldGUgc1tlXTtjLnBsdWdp
bnMubGVuZ3RoPTA7dmFyIHQ9Yy5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3M7Zm9yKHZhciBuIGlu
IHQpdC5oYXNPd25Qcm9wZXJ0eShuKSYmZGVsZXRlIHRbbl07dmFyIHI9Yy5yZWdpc3RyYXRpb25O
YW1lTW9kdWxlcztmb3IodmFyIG8gaW4gcilyLmhhc093blByb3BlcnR5KG8pJiZkZWxldGUgcltv
XX19O2UuZXhwb3J0cz1jfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSl7cmV0dXJuInRvcE1vdXNlVXAiPT09ZXx8InRvcFRvdWNoRW5kIj09PWV8fCJ0b3BUb3VjaENh
bmNlbCI9PT1lfWZ1bmN0aW9uIG8oZSl7cmV0dXJuInRvcE1vdXNlTW92ZSI9PT1lfHwidG9wVG91
Y2hNb3ZlIj09PWV9ZnVuY3Rpb24gaShlKXtyZXR1cm4idG9wTW91c2VEb3duIj09PWV8fCJ0b3BU
b3VjaFN0YXJ0Ij09PWV9ZnVuY3Rpb24gYShlLHQsbixyKXt2YXIgbz1lLnR5cGV8fCJ1bmtub3du
LWV2ZW50IjtlLmN1cnJlbnRUYXJnZXQ9eS5nZXROb2RlRnJvbUluc3RhbmNlKHIpLHQ/di5pbnZv
a2VHdWFyZGVkQ2FsbGJhY2tXaXRoQ2F0Y2gobyxuLGUpOnYuaW52b2tlR3VhcmRlZENhbGxiYWNr
KG8sbixlKSxlLmN1cnJlbnRUYXJnZXQ9bnVsbH1mdW5jdGlvbiB1KGUsdCl7dmFyIG49ZS5fZGlz
cGF0Y2hMaXN0ZW5lcnMscj1lLl9kaXNwYXRjaEluc3RhbmNlcztpZihBcnJheS5pc0FycmF5KG4p
KWZvcih2YXIgbz0wO288bi5sZW5ndGgmJiFlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7bysrKWEo
ZSx0LG5bb10scltvXSk7ZWxzZSBuJiZhKGUsdCxuLHIpO2UuX2Rpc3BhdGNoTGlzdGVuZXJzPW51
bGwsZS5fZGlzcGF0Y2hJbnN0YW5jZXM9bnVsbH1mdW5jdGlvbiBzKGUpe3ZhciB0PWUuX2Rpc3Bh
dGNoTGlzdGVuZXJzLG49ZS5fZGlzcGF0Y2hJbnN0YW5jZXM7aWYoQXJyYXkuaXNBcnJheSh0KSl7
Zm9yKHZhciByPTA7cjx0Lmxlbmd0aCYmIWUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTtyKyspaWYo
dFtyXShlLG5bcl0pKXJldHVybiBuW3JdfWVsc2UgaWYodCYmdChlLG4pKXJldHVybiBuO3JldHVy
biBudWxsfWZ1bmN0aW9uIGMoZSl7dmFyIHQ9cyhlKTtyZXR1cm4gZS5fZGlzcGF0Y2hJbnN0YW5j
ZXM9bnVsbCxlLl9kaXNwYXRjaExpc3RlbmVycz1udWxsLHR9ZnVuY3Rpb24gbChlKXt2YXIgdD1l
Ll9kaXNwYXRjaExpc3RlbmVycyxuPWUuX2Rpc3BhdGNoSW5zdGFuY2VzO0FycmF5LmlzQXJyYXko
dCk/aCgiMTAzIik6dm9pZCAwLGUuY3VycmVudFRhcmdldD10P3kuZ2V0Tm9kZUZyb21JbnN0YW5j
ZShuKTpudWxsO3ZhciByPXQ/dChlKTpudWxsO3JldHVybiBlLmN1cnJlbnRUYXJnZXQ9bnVsbCxl
Ll9kaXNwYXRjaExpc3RlbmVycz1udWxsLGUuX2Rpc3BhdGNoSW5zdGFuY2VzPW51bGwscn1mdW5j
dGlvbiBwKGUpe3JldHVybiEhZS5fZGlzcGF0Y2hMaXN0ZW5lcnN9dmFyIGQsZixoPW4oMyksdj1u
KDQxKSxtPShuKDEpLG4oMikse2luamVjdENvbXBvbmVudFRyZWU6ZnVuY3Rpb24oZSl7ZD1lfSxp
bmplY3RUcmVlVHJhdmVyc2FsOmZ1bmN0aW9uKGUpe2Y9ZX19KSx5PXtpc0VuZGlzaDpyLGlzTW92
ZWlzaDpvLGlzU3RhcnRpc2g6aSxleGVjdXRlRGlyZWN0RGlzcGF0Y2g6bCxleGVjdXRlRGlzcGF0
Y2hlc0luT3JkZXI6dSxleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlOmMsaGFzRGlz
cGF0Y2hlczpwLGdldEluc3RhbmNlRnJvbU5vZGU6ZnVuY3Rpb24oZSl7cmV0dXJuIGQuZ2V0SW5z
dGFuY2VGcm9tTm9kZShlKX0sZ2V0Tm9kZUZyb21JbnN0YW5jZTpmdW5jdGlvbihlKXtyZXR1cm4g
ZC5nZXROb2RlRnJvbUluc3RhbmNlKGUpfSxpc0FuY2VzdG9yOmZ1bmN0aW9uKGUsdCl7cmV0dXJu
IGYuaXNBbmNlc3RvcihlLHQpfSxnZXRMb3dlc3RDb21tb25BbmNlc3RvcjpmdW5jdGlvbihlLHQp
e3JldHVybiBmLmdldExvd2VzdENvbW1vbkFuY2VzdG9yKGUsdCl9LGdldFBhcmVudEluc3RhbmNl
OmZ1bmN0aW9uKGUpe3JldHVybiBmLmdldFBhcmVudEluc3RhbmNlKGUpfSx0cmF2ZXJzZVR3b1Bo
YXNlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZi50cmF2ZXJzZVR3b1BoYXNlKGUsdCxuKX0sdHJh
dmVyc2VFbnRlckxlYXZlOmZ1bmN0aW9uKGUsdCxuLHIsbyl7cmV0dXJuIGYudHJhdmVyc2VFbnRl
ckxlYXZlKGUsdCxuLHIsbyl9LGluamVjdGlvbjptfTtlLmV4cG9ydHM9eX0sZnVuY3Rpb24oZSx0
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXt2YXIgdD0vWz06XS9nLG49eyI9IjoiPTAiLCI6
IjoiPTIifSxyPSgiIitlKS5yZXBsYWNlKHQsZnVuY3Rpb24oZSl7cmV0dXJuIG5bZV19KTtyZXR1
cm4iJCIrcn1mdW5jdGlvbiByKGUpe3ZhciB0PS8oPTB8PTIpL2csbj17Ij0wIjoiPSIsIj0yIjoi
OiJ9LHI9Ii4iPT09ZVswXSYmIiQiPT09ZVsxXT9lLnN1YnN0cmluZygyKTplLnN1YnN0cmluZygx
KTtyZXR1cm4oIiIrcikucmVwbGFjZSh0LGZ1bmN0aW9uKGUpe3JldHVybiBuW2VdfSl9dmFyIG89
e2VzY2FwZTpuLHVuZXNjYXBlOnJ9O2UuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSl7bnVsbCE9ZS5jaGVja2VkTGluayYmbnVsbCE9ZS52YWx1ZUxp
bms/dSgiODciKTp2b2lkIDB9ZnVuY3Rpb24gbyhlKXtyKGUpLG51bGwhPWUudmFsdWV8fG51bGwh
PWUub25DaGFuZ2U/dSgiODgiKTp2b2lkIDB9ZnVuY3Rpb24gaShlKXtyKGUpLG51bGwhPWUuY2hl
Y2tlZHx8bnVsbCE9ZS5vbkNoYW5nZT91KCI4OSIpOnZvaWQgMH1mdW5jdGlvbiBhKGUpe2lmKGUp
e3ZhciB0PWUuZ2V0TmFtZSgpO2lmKHQpcmV0dXJuIiBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBv
ZiBgIit0KyJgLiJ9cmV0dXJuIiJ9dmFyIHU9bigzKSxzPW4oMTU4KSxjPW4oNTUpLGw9bigxNyks
cD1jKGwuaXNWYWxpZEVsZW1lbnQpLGQ9KG4oMSksbigyKSx7YnV0dG9uOiEwLGNoZWNrYm94OiEw
LGltYWdlOiEwLGhpZGRlbjohMCxyYWRpbzohMCxyZXNldDohMCxzdWJtaXQ6ITB9KSxmPXt2YWx1
ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIWVbdF18fGRbZS50eXBlXXx8ZS5vbkNoYW5nZXx8ZS5y
ZWFkT25seXx8ZS5kaXNhYmxlZD9udWxsOm5ldyBFcnJvcigiWW91IHByb3ZpZGVkIGEgYHZhbHVl
YCBwcm9wIHRvIGEgZm9ybSBmaWVsZCB3aXRob3V0IGFuIGBvbkNoYW5nZWAgaGFuZGxlci4gVGhp
cyB3aWxsIHJlbmRlciBhIHJlYWQtb25seSBmaWVsZC4gSWYgdGhlIGZpZWxkIHNob3VsZCBiZSBt
dXRhYmxlIHVzZSBgZGVmYXVsdFZhbHVlYC4gT3RoZXJ3aXNlLCBzZXQgZWl0aGVyIGBvbkNoYW5n
ZWAgb3IgYHJlYWRPbmx5YC4iKTsKK30sY2hlY2tlZDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIWVb
dF18fGUub25DaGFuZ2V8fGUucmVhZE9ubHl8fGUuZGlzYWJsZWQ/bnVsbDpuZXcgRXJyb3IoIllv
dSBwcm92aWRlZCBhIGBjaGVja2VkYCBwcm9wIHRvIGEgZm9ybSBmaWVsZCB3aXRob3V0IGFuIGBv
bkNoYW5nZWAgaGFuZGxlci4gVGhpcyB3aWxsIHJlbmRlciBhIHJlYWQtb25seSBmaWVsZC4gSWYg
dGhlIGZpZWxkIHNob3VsZCBiZSBtdXRhYmxlIHVzZSBgZGVmYXVsdENoZWNrZWRgLiBPdGhlcndp
c2UsIHNldCBlaXRoZXIgYG9uQ2hhbmdlYCBvciBgcmVhZE9ubHlgLiIpfSxvbkNoYW5nZTpwLmZ1
bmN9LGg9e30sdj17Y2hlY2tQcm9wVHlwZXM6ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgciBpbiBm
KXtpZihmLmhhc093blByb3BlcnR5KHIpKXZhciBvPWZbcl0odCxyLGUsInByb3AiLG51bGwscyk7
aWYobyBpbnN0YW5jZW9mIEVycm9yJiYhKG8ubWVzc2FnZSBpbiBoKSl7aFtvLm1lc3NhZ2VdPSEw
O2Eobil9fX0sZ2V0VmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVMaW5rPyhvKGUpLGUu
dmFsdWVMaW5rLnZhbHVlKTplLnZhbHVlfSxnZXRDaGVja2VkOmZ1bmN0aW9uKGUpe3JldHVybiBl
LmNoZWNrZWRMaW5rPyhpKGUpLGUuY2hlY2tlZExpbmsudmFsdWUpOmUuY2hlY2tlZH0sZXhlY3V0
ZU9uQ2hhbmdlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUudmFsdWVMaW5rPyhvKGUpLGUudmFsdWVM
aW5rLnJlcXVlc3RDaGFuZ2UodC50YXJnZXQudmFsdWUpKTplLmNoZWNrZWRMaW5rPyhpKGUpLGUu
Y2hlY2tlZExpbmsucmVxdWVzdENoYW5nZSh0LnRhcmdldC5jaGVja2VkKSk6ZS5vbkNoYW5nZT9l
Lm9uQ2hhbmdlLmNhbGwodm9pZCAwLHQpOnZvaWQgMH19O2UuZXhwb3J0cz12fSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMyksbz0obigxKSwhMSksaT17cmVwbGFjZU5vZGVX
aXRoTWFya3VwOm51bGwscHJvY2Vzc0NoaWxkcmVuVXBkYXRlczpudWxsLGluamVjdGlvbjp7aW5q
ZWN0RW52aXJvbm1lbnQ6ZnVuY3Rpb24oZSl7bz9yKCIxMDQiKTp2b2lkIDAsaS5yZXBsYWNlTm9k
ZVdpdGhNYXJrdXA9ZS5yZXBsYWNlTm9kZVdpdGhNYXJrdXAsaS5wcm9jZXNzQ2hpbGRyZW5VcGRh
dGVzPWUucHJvY2Vzc0NoaWxkcmVuVXBkYXRlcyxvPSEwfX19O2UuZXhwb3J0cz1pfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4pe3RyeXt0KG4pfWNhdGNoKHIp
e251bGw9PT1vJiYobz1yKX19dmFyIG89bnVsbCxpPXtpbnZva2VHdWFyZGVkQ2FsbGJhY2s6cixp
bnZva2VHdWFyZGVkQ2FsbGJhY2tXaXRoQ2F0Y2g6cixyZXRocm93Q2F1Z2h0RXJyb3I6ZnVuY3Rp
b24oKXtpZihvKXt2YXIgZT1vO3Rocm93IG89bnVsbCxlfX19O2UuZXhwb3J0cz1pfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cy5lbnF1ZXVlVXBkYXRlKGUpfWZ1
bmN0aW9uIG8oZSl7dmFyIHQ9dHlwZW9mIGU7aWYoIm9iamVjdCIhPT10KXJldHVybiB0O3ZhciBu
PWUuY29uc3RydWN0b3ImJmUuY29uc3RydWN0b3IubmFtZXx8dCxyPU9iamVjdC5rZXlzKGUpO3Jl
dHVybiByLmxlbmd0aD4wJiZyLmxlbmd0aDwyMD9uKyIgKGtleXM6ICIrci5qb2luKCIsICIpKyIp
IjpufWZ1bmN0aW9uIGkoZSx0KXt2YXIgbj11LmdldChlKTtpZighbil7cmV0dXJuIG51bGx9cmV0
dXJuIG59dmFyIGE9bigzKSx1PShuKDExKSxuKDIxKSkscz0obig4KSxuKDkpKSxjPShuKDEpLG4o
Mikse2lzTW91bnRlZDpmdW5jdGlvbihlKXt2YXIgdD11LmdldChlKTtyZXR1cm4hIXQmJiEhdC5f
cmVuZGVyZWRDb21wb25lbnR9LGVucXVldWVDYWxsYmFjazpmdW5jdGlvbihlLHQsbil7Yy52YWxp
ZGF0ZUNhbGxiYWNrKHQsbik7dmFyIG89aShlKTtyZXR1cm4gbz8oby5fcGVuZGluZ0NhbGxiYWNr
cz9vLl9wZW5kaW5nQ2FsbGJhY2tzLnB1c2godCk6by5fcGVuZGluZ0NhbGxiYWNrcz1bdF0sdm9p
ZCByKG8pKTpudWxsfSxlbnF1ZXVlQ2FsbGJhY2tJbnRlcm5hbDpmdW5jdGlvbihlLHQpe2UuX3Bl
bmRpbmdDYWxsYmFja3M/ZS5fcGVuZGluZ0NhbGxiYWNrcy5wdXNoKHQpOmUuX3BlbmRpbmdDYWxs
YmFja3M9W3RdLHIoZSl9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbihlKXt2YXIgdD1pKGUs
ImZvcmNlVXBkYXRlIik7dCYmKHQuX3BlbmRpbmdGb3JjZVVwZGF0ZT0hMCxyKHQpKX0sZW5xdWV1
ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbihlLHQsbil7dmFyIG89aShlLCJyZXBsYWNlU3RhdGUiKTtv
JiYoby5fcGVuZGluZ1N0YXRlUXVldWU9W3RdLG8uX3BlbmRpbmdSZXBsYWNlU3RhdGU9ITAsdm9p
ZCAwIT09biYmbnVsbCE9PW4mJihjLnZhbGlkYXRlQ2FsbGJhY2sobiwicmVwbGFjZVN0YXRlIiks
by5fcGVuZGluZ0NhbGxiYWNrcz9vLl9wZW5kaW5nQ2FsbGJhY2tzLnB1c2gobik6by5fcGVuZGlu
Z0NhbGxiYWNrcz1bbl0pLHIobykpfSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oZSx0KXt2YXIg
bj1pKGUsInNldFN0YXRlIik7aWYobil7dmFyIG89bi5fcGVuZGluZ1N0YXRlUXVldWV8fChuLl9w
ZW5kaW5nU3RhdGVRdWV1ZT1bXSk7by5wdXNoKHQpLHIobil9fSxlbnF1ZXVlRWxlbWVudEludGVy
bmFsOmZ1bmN0aW9uKGUsdCxuKXtlLl9wZW5kaW5nRWxlbWVudD10LGUuX2NvbnRleHQ9bixyKGUp
fSx2YWxpZGF0ZUNhbGxiYWNrOmZ1bmN0aW9uKGUsdCl7ZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGU/
YSgiMTIyIix0LG8oZSkpOnZvaWQgMH19KTtlLmV4cG9ydHM9Y30sZnVuY3Rpb24oZSx0KXsidXNl
IHN0cmljdCI7dmFyIG49ZnVuY3Rpb24oZSl7cmV0dXJuInVuZGVmaW5lZCIhPXR5cGVvZiBNU0Fw
cCYmTVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24/ZnVuY3Rpb24odCxuLHIsbyl7TVNBcHAu
ZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24oKXtyZXR1cm4gZSh0LG4scixvKX0pfTpl
fTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXt2
YXIgdCxuPWUua2V5Q29kZTtyZXR1cm4iY2hhckNvZGUiaW4gZT8odD1lLmNoYXJDb2RlLDA9PT10
JiYxMz09PW4mJih0PTEzKSk6dD1uLHQ+PTMyfHwxMz09PXQ/dDowfWUuZXhwb3J0cz1ufSxmdW5j
dGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3ZhciB0PXRoaXMsbj10Lm5hdGl2
ZUV2ZW50O2lmKG4uZ2V0TW9kaWZpZXJTdGF0ZSlyZXR1cm4gbi5nZXRNb2RpZmllclN0YXRlKGUp
O3ZhciByPW9bZV07cmV0dXJuISFyJiYhIW5bcl19ZnVuY3Rpb24gcihlKXtyZXR1cm4gbn12YXIg
bz17QWx0OiJhbHRLZXkiLENvbnRyb2w6ImN0cmxLZXkiLE1ldGE6Im1ldGFLZXkiLFNoaWZ0OiJz
aGlmdEtleSJ9O2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biBuKGUpe3ZhciB0PWUudGFyZ2V0fHxlLnNyY0VsZW1lbnR8fHdpbmRvdztyZXR1cm4gdC5jb3Jy
ZXNwb25kaW5nVXNlRWxlbWVudCYmKHQ9dC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCksMz09PXQu
bm9kZVR5cGU/dC5wYXJlbnROb2RlOnR9ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe2lmKCFpLmNhblVzZURPTXx8dCYmISgiYWRkRXZlbnRM
aXN0ZW5lciJpbiBkb2N1bWVudCkpcmV0dXJuITE7dmFyIG49Im9uIitlLHI9biBpbiBkb2N1bWVu
dDtpZighcil7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7YS5zZXRBdHRyaWJ1
dGUobiwicmV0dXJuOyIpLHI9ImZ1bmN0aW9uIj09dHlwZW9mIGFbbl19cmV0dXJuIXImJm8mJiJ3
aGVlbCI9PT1lJiYocj1kb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlKCJFdmVudHMu
d2hlZWwiLCIzLjAiKSkscn12YXIgbyxpPW4oNik7aS5jYW5Vc2VET00mJihvPWRvY3VtZW50Lmlt
cGxlbWVudGF0aW9uJiZkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlJiZkb2N1bWVu
dC5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlKCIiLCIiKSE9PSEwKSxlLmV4cG9ydHM9cn0sZnVu
Y3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLHQpe3ZhciBuPW51bGw9PT1lfHxl
PT09ITEscj1udWxsPT09dHx8dD09PSExO2lmKG58fHIpcmV0dXJuIG49PT1yO3ZhciBvPXR5cGVv
ZiBlLGk9dHlwZW9mIHQ7cmV0dXJuInN0cmluZyI9PT1vfHwibnVtYmVyIj09PW8/InN0cmluZyI9
PT1pfHwibnVtYmVyIj09PWk6Im9iamVjdCI9PT1pJiZlLnR5cGU9PT10LnR5cGUmJmUua2V5PT09
dC5rZXl9ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9KG4o
NCksbig3KSksbz0obigyKSxyKTtlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gbihlKXsidW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUmJiJmdW5jdGlvbiI9
PXR5cGVvZiBjb25zb2xlLmVycm9yJiZjb25zb2xlLmVycm9yKGUpO3RyeXt0aHJvdyBuZXcgRXJy
b3IoZSl9Y2F0Y2godCl7fX10Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PW59LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big3KSxvPXtsaXN0ZW46ZnVuY3Rpb24oZSx0LG4pe3Jl
dHVybiBlLmFkZEV2ZW50TGlzdGVuZXI/KGUuYWRkRXZlbnRMaXN0ZW5lcih0LG4sITEpLHtyZW1v
dmU6ZnVuY3Rpb24oKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuLCExKX19KTplLmF0dGFjaEV2
ZW50PyhlLmF0dGFjaEV2ZW50KCJvbiIrdCxuKSx7cmVtb3ZlOmZ1bmN0aW9uKCl7ZS5kZXRhY2hF
dmVudCgib24iK3Qsbil9fSk6dm9pZCAwfSxjYXB0dXJlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4g
ZS5hZGRFdmVudExpc3RlbmVyPyhlLmFkZEV2ZW50TGlzdGVuZXIodCxuLCEwKSx7cmVtb3ZlOmZ1
bmN0aW9uKCl7ZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbiwhMCl9fSk6e3JlbW92ZTpyfX0scmVn
aXN0ZXJEZWZhdWx0OmZ1bmN0aW9uKCl7fX07ZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCl7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7dHJ5e2UuZm9jdXMoKX1jYXRjaCh0KXt9fWUuZXhwb3J0
cz1ufSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe2lmKGU9ZXx8KCJ1
bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQ/ZG9jdW1lbnQ6dm9pZCAwKSwidW5kZWZpbmVkIj09
dHlwZW9mIGUpcmV0dXJuIG51bGw7dHJ5e3JldHVybiBlLmFjdGl2ZUVsZW1lbnR8fGUuYm9keX1j
YXRjaCh0KXtyZXR1cm4gZS5ib2R5fX1lLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4pe3ZhciBy
PW4oMTE4KSxvPXIuU3ltYm9sO2UuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3ZhciByPW4oMTIyKTtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7dmFyIHQ9ITE7cmV0dXJuIHIo
ZSx0KX19LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9bigxMjEpKCl9LGZ1bmN0aW9uKGUsdCl7
InVzZSBzdHJpY3QiO3ZhciBuPSJTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9C
RV9GSVJFRCI7ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IG4oZSx0KXtyZXR1cm4gZSt0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK3Quc3Vic3RyaW5nKDEp
fXZhciByPXthbmltYXRpb25JdGVyYXRpb25Db3VudDohMCxib3JkZXJJbWFnZU91dHNldDohMCxi
b3JkZXJJbWFnZVNsaWNlOiEwLGJvcmRlckltYWdlV2lkdGg6ITAsYm94RmxleDohMCxib3hGbGV4
R3JvdXA6ITAsYm94T3JkaW5hbEdyb3VwOiEwLGNvbHVtbkNvdW50OiEwLGZsZXg6ITAsZmxleEdy
b3c6ITAsZmxleFBvc2l0aXZlOiEwLGZsZXhTaHJpbms6ITAsZmxleE5lZ2F0aXZlOiEwLGZsZXhP
cmRlcjohMCxncmlkUm93OiEwLGdyaWRSb3dFbmQ6ITAsZ3JpZFJvd1NwYW46ITAsZ3JpZFJvd1N0
YXJ0OiEwLGdyaWRDb2x1bW46ITAsZ3JpZENvbHVtbkVuZDohMCxncmlkQ29sdW1uU3BhbjohMCxn
cmlkQ29sdW1uU3RhcnQ6ITAsZm9udFdlaWdodDohMCxsaW5lQ2xhbXA6ITAsbGluZUhlaWdodDoh
MCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsdGFiU2l6ZTohMCx3aWRvd3M6ITAseklu
ZGV4OiEwLHpvb206ITAsZmlsbE9wYWNpdHk6ITAsZmxvb2RPcGFjaXR5OiEwLHN0b3BPcGFjaXR5
OiEwLHN0cm9rZURhc2hhcnJheTohMCxzdHJva2VEYXNob2Zmc2V0OiEwLHN0cm9rZU1pdGVybGlt
aXQ6ITAsc3Ryb2tlT3BhY2l0eTohMCxzdHJva2VXaWR0aDohMH0sbz1bIldlYmtpdCIsIm1zIiwi
TW96IiwiTyJdO09iamVjdC5rZXlzKHIpLmZvckVhY2goZnVuY3Rpb24oZSl7by5mb3JFYWNoKGZ1
bmN0aW9uKHQpe3Jbbih0LGUpXT1yW2VdfSl9KTt2YXIgaT17YmFja2dyb3VuZDp7YmFja2dyb3Vu
ZEF0dGFjaG1lbnQ6ITAsYmFja2dyb3VuZENvbG9yOiEwLGJhY2tncm91bmRJbWFnZTohMCxiYWNr
Z3JvdW5kUG9zaXRpb25YOiEwLGJhY2tncm91bmRQb3NpdGlvblk6ITAsYmFja2dyb3VuZFJlcGVh
dDohMH0sYmFja2dyb3VuZFBvc2l0aW9uOntiYWNrZ3JvdW5kUG9zaXRpb25YOiEwLGJhY2tncm91
bmRQb3NpdGlvblk6ITB9LGJvcmRlcjp7Ym9yZGVyV2lkdGg6ITAsYm9yZGVyU3R5bGU6ITAsYm9y
ZGVyQ29sb3I6ITB9LGJvcmRlckJvdHRvbTp7Ym9yZGVyQm90dG9tV2lkdGg6ITAsYm9yZGVyQm90
dG9tU3R5bGU6ITAsYm9yZGVyQm90dG9tQ29sb3I6ITB9LGJvcmRlckxlZnQ6e2JvcmRlckxlZnRX
aWR0aDohMCxib3JkZXJMZWZ0U3R5bGU6ITAsYm9yZGVyTGVmdENvbG9yOiEwfSxib3JkZXJSaWdo
dDp7Ym9yZGVyUmlnaHRXaWR0aDohMCxib3JkZXJSaWdodFN0eWxlOiEwLGJvcmRlclJpZ2h0Q29s
b3I6ITB9LGJvcmRlclRvcDp7Ym9yZGVyVG9wV2lkdGg6ITAsYm9yZGVyVG9wU3R5bGU6ITAsYm9y
ZGVyVG9wQ29sb3I6ITB9LGZvbnQ6e2ZvbnRTdHlsZTohMCxmb250VmFyaWFudDohMCxmb250V2Vp
Z2h0OiEwLGZvbnRTaXplOiEwLGxpbmVIZWlnaHQ6ITAsZm9udEZhbWlseTohMH0sb3V0bGluZTp7
b3V0bGluZVdpZHRoOiEwLG91dGxpbmVTdHlsZTohMCxvdXRsaW5lQ29sb3I6ITB9fSxhPXtpc1Vu
aXRsZXNzTnVtYmVyOnIsc2hvcnRoYW5kUHJvcGVydHlFeHBhbnNpb25zOml9O2UuZXhwb3J0cz1h
fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtpZighKGUgaW5z
dGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEg
ZnVuY3Rpb24iKX12YXIgbz1uKDMpLGk9bigxMyksYT0obigxKSxmdW5jdGlvbigpe2Z1bmN0aW9u
IGUodCl7cih0aGlzLGUpLHRoaXMuX2NhbGxiYWNrcz1udWxsLHRoaXMuX2NvbnRleHRzPW51bGws
dGhpcy5fYXJnPXR9cmV0dXJuIGUucHJvdG90eXBlLmVucXVldWU9ZnVuY3Rpb24oZSx0KXt0aGlz
Ll9jYWxsYmFja3M9dGhpcy5fY2FsbGJhY2tzfHxbXSx0aGlzLl9jYWxsYmFja3MucHVzaChlKSx0
aGlzLl9jb250ZXh0cz10aGlzLl9jb250ZXh0c3x8W10sdGhpcy5fY29udGV4dHMucHVzaCh0KX0s
ZS5wcm90b3R5cGUubm90aWZ5QWxsPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fY2FsbGJhY2tzLHQ9
dGhpcy5fY29udGV4dHMsbj10aGlzLl9hcmc7aWYoZSYmdCl7ZS5sZW5ndGghPT10Lmxlbmd0aD9v
KCIyNCIpOnZvaWQgMCx0aGlzLl9jYWxsYmFja3M9bnVsbCx0aGlzLl9jb250ZXh0cz1udWxsO2Zv
cih2YXIgcj0wO3I8ZS5sZW5ndGg7cisrKWVbcl0uY2FsbCh0W3JdLG4pO2UubGVuZ3RoPTAsdC5s
ZW5ndGg9MH19LGUucHJvdG90eXBlLmNoZWNrcG9pbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5f
Y2FsbGJhY2tzP3RoaXMuX2NhbGxiYWNrcy5sZW5ndGg6MH0sZS5wcm90b3R5cGUucm9sbGJhY2s9
ZnVuY3Rpb24oZSl7dGhpcy5fY2FsbGJhY2tzJiZ0aGlzLl9jb250ZXh0cyYmKHRoaXMuX2NhbGxi
YWNrcy5sZW5ndGg9ZSx0aGlzLl9jb250ZXh0cy5sZW5ndGg9ZSl9LGUucHJvdG90eXBlLnJlc2V0
PWZ1bmN0aW9uKCl7dGhpcy5fY2FsbGJhY2tzPW51bGwsdGhpcy5fY29udGV4dHM9bnVsbH0sZS5w
cm90b3R5cGUuZGVzdHJ1Y3Rvcj1mdW5jdGlvbigpe3RoaXMucmVzZXQoKX0sZX0oKSk7ZS5leHBv
cnRzPWkuYWRkUG9vbGluZ1RvKGEpfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSl7cmV0dXJuISFjLmhhc093blByb3BlcnR5KGUpfHwhcy5oYXNPd25Qcm9wZXJ0eShl
KSYmKHUudGVzdChlKT8oY1tlXT0hMCwhMCk6KHNbZV09ITAsITEpKX1mdW5jdGlvbiBvKGUsdCl7
cmV0dXJuIG51bGw9PXR8fGUuaGFzQm9vbGVhblZhbHVlJiYhdHx8ZS5oYXNOdW1lcmljVmFsdWUm
JmlzTmFOKHQpfHxlLmhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlJiZ0PDF8fGUuaGFzT3ZlcmxvYWRl
ZEJvb2xlYW5WYWx1ZSYmdD09PSExfXZhciBpPW4oMTUpLGE9KG4oNSksbig4KSxuKDE4NSkpLHU9
KG4oMiksbmV3IFJlZ0V4cCgiXlsiK2kuQVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUisiXVsiK2ku
QVRUUklCVVRFX05BTUVfQ0hBUisiXSokIikpLHM9e30sYz17fSxsPXtjcmVhdGVNYXJrdXBGb3JJ
RDpmdW5jdGlvbihlKXtyZXR1cm4gaS5JRF9BVFRSSUJVVEVfTkFNRSsiPSIrYShlKX0sc2V0QXR0
cmlidXRlRm9ySUQ6ZnVuY3Rpb24oZSx0KXtlLnNldEF0dHJpYnV0ZShpLklEX0FUVFJJQlVURV9O
QU1FLHQpfSxjcmVhdGVNYXJrdXBGb3JSb290OmZ1bmN0aW9uKCl7cmV0dXJuIGkuUk9PVF9BVFRS
SUJVVEVfTkFNRSsnPSIiJ30sc2V0QXR0cmlidXRlRm9yUm9vdDpmdW5jdGlvbihlKXtlLnNldEF0
dHJpYnV0ZShpLlJPT1RfQVRUUklCVVRFX05BTUUsIiIpfSxjcmVhdGVNYXJrdXBGb3JQcm9wZXJ0
eTpmdW5jdGlvbihlLHQpe3ZhciBuPWkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShlKT9pLnBy
b3BlcnRpZXNbZV06bnVsbDtpZihuKXtpZihvKG4sdCkpcmV0dXJuIiI7dmFyIHI9bi5hdHRyaWJ1
dGVOYW1lO3JldHVybiBuLmhhc0Jvb2xlYW5WYWx1ZXx8bi5oYXNPdmVybG9hZGVkQm9vbGVhblZh
bHVlJiZ0PT09ITA/cisnPSIiJzpyKyI9IithKHQpfXJldHVybiBpLmlzQ3VzdG9tQXR0cmlidXRl
KGUpP251bGw9PXQ/IiI6ZSsiPSIrYSh0KTpudWxsfSxjcmVhdGVNYXJrdXBGb3JDdXN0b21BdHRy
aWJ1dGU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcihlKSYmbnVsbCE9dD9lKyI9IithKHQpOiIifSxz
ZXRWYWx1ZUZvclByb3BlcnR5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1pLnByb3BlcnRpZXMuaGFz
T3duUHJvcGVydHkodCk/aS5wcm9wZXJ0aWVzW3RdOm51bGw7aWYocil7dmFyIGE9ci5tdXRhdGlv
bk1ldGhvZDtpZihhKWEoZSxuKTtlbHNle2lmKG8ocixuKSlyZXR1cm4gdm9pZCB0aGlzLmRlbGV0
ZVZhbHVlRm9yUHJvcGVydHkoZSx0KTtpZihyLm11c3RVc2VQcm9wZXJ0eSllW3IucHJvcGVydHlO
YW1lXT1uO2Vsc2V7dmFyIHU9ci5hdHRyaWJ1dGVOYW1lLHM9ci5hdHRyaWJ1dGVOYW1lc3BhY2U7
cz9lLnNldEF0dHJpYnV0ZU5TKHMsdSwiIituKTpyLmhhc0Jvb2xlYW5WYWx1ZXx8ci5oYXNPdmVy
bG9hZGVkQm9vbGVhblZhbHVlJiZuPT09ITA/ZS5zZXRBdHRyaWJ1dGUodSwiIik6ZS5zZXRBdHRy
aWJ1dGUodSwiIituKX19fWVsc2UgaWYoaS5pc0N1c3RvbUF0dHJpYnV0ZSh0KSlyZXR1cm4gdm9p
ZCBsLnNldFZhbHVlRm9yQXR0cmlidXRlKGUsdCxuKX0sc2V0VmFsdWVGb3JBdHRyaWJ1dGU6ZnVu
Y3Rpb24oZSx0LG4pe2lmKHIodCkpe251bGw9PW4/ZS5yZW1vdmVBdHRyaWJ1dGUodCk6ZS5zZXRB
dHRyaWJ1dGUodCwiIituKX19LGRlbGV0ZVZhbHVlRm9yQXR0cmlidXRlOmZ1bmN0aW9uKGUsdCl7
ZS5yZW1vdmVBdHRyaWJ1dGUodCl9LGRlbGV0ZVZhbHVlRm9yUHJvcGVydHk6ZnVuY3Rpb24oZSx0
KXt2YXIgbj1pLnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkodCk/aS5wcm9wZXJ0aWVzW3RdOm51
bGw7aWYobil7dmFyIHI9bi5tdXRhdGlvbk1ldGhvZDtpZihyKXIoZSx2b2lkIDApO2Vsc2UgaWYo
bi5tdXN0VXNlUHJvcGVydHkpe3ZhciBvPW4ucHJvcGVydHlOYW1lO24uaGFzQm9vbGVhblZhbHVl
P2Vbb109ITE6ZVtvXT0iIn1lbHNlIGUucmVtb3ZlQXR0cmlidXRlKG4uYXR0cmlidXRlTmFtZSl9
ZWxzZSBpLmlzQ3VzdG9tQXR0cmlidXRlKHQpJiZlLnJlbW92ZUF0dHJpYnV0ZSh0KX19O2UuZXhw
b3J0cz1sfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17aGFzQ2FjaGVkQ2hpbGRO
b2RlczoxfTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKCl7aWYodGhpcy5fcm9vdE5vZGVJRCYmdGhpcy5fd3JhcHBlclN0YXRlLnBlbmRpbmdVcGRh
dGUpe3RoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlPSExO3ZhciBlPXRoaXMuX2N1cnJl
bnRFbGVtZW50LnByb3BzLHQ9dS5nZXRWYWx1ZShlKTtudWxsIT10JiZvKHRoaXMsQm9vbGVhbihl
Lm11bHRpcGxlKSx0KX19ZnVuY3Rpb24gbyhlLHQsbil7dmFyIHIsbyxpPXMuZ2V0Tm9kZUZyb21J
bnN0YW5jZShlKS5vcHRpb25zO2lmKHQpe2ZvcihyPXt9LG89MDtvPG4ubGVuZ3RoO28rKylyWyIi
K25bb11dPSEwO2ZvcihvPTA7bzxpLmxlbmd0aDtvKyspe3ZhciBhPXIuaGFzT3duUHJvcGVydHko
aVtvXS52YWx1ZSk7aVtvXS5zZWxlY3RlZCE9PWEmJihpW29dLnNlbGVjdGVkPWEpfX1lbHNle2Zv
cihyPSIiK24sbz0wO288aS5sZW5ndGg7bysrKWlmKGlbb10udmFsdWU9PT1yKXJldHVybiB2b2lk
KGlbb10uc2VsZWN0ZWQ9ITApO2kubGVuZ3RoJiYoaVswXS5zZWxlY3RlZD0hMCl9fWZ1bmN0aW9u
IGkoZSl7dmFyIHQ9dGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHMsbj11LmV4ZWN1dGVPbkNoYW5n
ZSh0LGUpO3JldHVybiB0aGlzLl9yb290Tm9kZUlEJiYodGhpcy5fd3JhcHBlclN0YXRlLnBlbmRp
bmdVcGRhdGU9ITApLGMuYXNhcChyLHRoaXMpLG59dmFyIGE9big0KSx1PW4oMzkpLHM9big1KSxj
PW4oOSksbD0obigyKSwhMSkscD17Z2V0SG9zdFByb3BzOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEo
e30sdCx7b25DaGFuZ2U6ZS5fd3JhcHBlclN0YXRlLm9uQ2hhbmdlLHZhbHVlOnZvaWQgMH0pfSxt
b3VudFdyYXBwZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj11LmdldFZhbHVlKHQpO2UuX3dyYXBwZXJT
dGF0ZT17cGVuZGluZ1VwZGF0ZTohMSxpbml0aWFsVmFsdWU6bnVsbCE9bj9uOnQuZGVmYXVsdFZh
bHVlLGxpc3RlbmVyczpudWxsLG9uQ2hhbmdlOmkuYmluZChlKSx3YXNNdWx0aXBsZTpCb29sZWFu
KHQubXVsdGlwbGUpfSx2b2lkIDA9PT10LnZhbHVlfHx2b2lkIDA9PT10LmRlZmF1bHRWYWx1ZXx8
bHx8KGw9ITApfSxnZXRTZWxlY3RWYWx1ZUNvbnRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX3dy
YXBwZXJTdGF0ZS5pbml0aWFsVmFsdWV9LHBvc3RVcGRhdGVXcmFwcGVyOmZ1bmN0aW9uKGUpe3Zh
ciB0PWUuX2N1cnJlbnRFbGVtZW50LnByb3BzO2UuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWU9
dm9pZCAwO3ZhciBuPWUuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZTtlLl93cmFwcGVyU3RhdGUu
d2FzTXVsdGlwbGU9Qm9vbGVhbih0Lm11bHRpcGxlKTt2YXIgcj11LmdldFZhbHVlKHQpO251bGwh
PXI/KGUuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlPSExLG8oZSxCb29sZWFuKHQubXVsdGlw
bGUpLHIpKTpuIT09Qm9vbGVhbih0Lm11bHRpcGxlKSYmKG51bGwhPXQuZGVmYXVsdFZhbHVlP28o
ZSxCb29sZWFuKHQubXVsdGlwbGUpLHQuZGVmYXVsdFZhbHVlKTpvKGUsQm9vbGVhbih0Lm11bHRp
cGxlKSx0Lm11bHRpcGxlP1tdOiIiKSl9fTtlLmV4cG9ydHM9cH0sZnVuY3Rpb24oZSx0KXsidXNl
IHN0cmljdCI7dmFyIG4scj17aW5qZWN0RW1wdHlDb21wb25lbnRGYWN0b3J5OmZ1bmN0aW9uKGUp
e249ZX19LG89e2NyZWF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gbihlKX19O28uaW5qZWN0aW9uPXIs
ZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXtsb2dUb3BMZXZl
bFJlbmRlcnM6ITF9O2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSl7cmV0dXJuIHU/dm9pZCAwOmEoIjExMSIsZS50eXBlKSxuZXcgdShlKX1mdW5j
dGlvbiBvKGUpe3JldHVybiBuZXcgcyhlKX1mdW5jdGlvbiBpKGUpe3JldHVybiBlIGluc3RhbmNl
b2Ygc312YXIgYT1uKDMpLHU9KG4oMSksbnVsbCkscz1udWxsLGM9e2luamVjdEdlbmVyaWNDb21w
b25lbnRDbGFzczpmdW5jdGlvbihlKXt1PWV9LGluamVjdFRleHRDb21wb25lbnRDbGFzczpmdW5j
dGlvbihlKXtzPWV9fSxsPXtjcmVhdGVJbnRlcm5hbENvbXBvbmVudDpyLGNyZWF0ZUluc3RhbmNl
Rm9yVGV4dDpvLGlzVGV4dENvbXBvbmVudDppLGluamVjdGlvbjpjfTtlLmV4cG9ydHM9bH0sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBpKGRvY3VtZW50
LmRvY3VtZW50RWxlbWVudCxlKX12YXIgbz1uKDE0NSksaT1uKDEwMCksYT1uKDUyKSx1PW4oNTMp
LHM9e2hhc1NlbGVjdGlvbkNhcGFiaWxpdGllczpmdW5jdGlvbihlKXt2YXIgdD1lJiZlLm5vZGVO
YW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIHQmJigiaW5wdXQiPT09dCYmInRl
eHQiPT09ZS50eXBlfHwidGV4dGFyZWEiPT09dHx8InRydWUiPT09ZS5jb250ZW50RWRpdGFibGUp
fSxnZXRTZWxlY3Rpb25JbmZvcm1hdGlvbjpmdW5jdGlvbigpe3ZhciBlPXUoKTtyZXR1cm57Zm9j
dXNlZEVsZW06ZSxzZWxlY3Rpb25SYW5nZTpzLmhhc1NlbGVjdGlvbkNhcGFiaWxpdGllcyhlKT9z
LmdldFNlbGVjdGlvbihlKTpudWxsfX0scmVzdG9yZVNlbGVjdGlvbjpmdW5jdGlvbihlKXt2YXIg
dD11KCksbj1lLmZvY3VzZWRFbGVtLG89ZS5zZWxlY3Rpb25SYW5nZTt0IT09biYmcihuKSYmKHMu
aGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKG4pJiZzLnNldFNlbGVjdGlvbihuLG8pLGEobikpfSxn
ZXRTZWxlY3Rpb246ZnVuY3Rpb24oZSl7dmFyIHQ7aWYoInNlbGVjdGlvblN0YXJ0ImluIGUpdD17
c3RhcnQ6ZS5zZWxlY3Rpb25TdGFydCxlbmQ6ZS5zZWxlY3Rpb25FbmR9O2Vsc2UgaWYoZG9jdW1l
bnQuc2VsZWN0aW9uJiZlLm5vZGVOYW1lJiYiaW5wdXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2Fz
ZSgpKXt2YXIgbj1kb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTtuLnBhcmVudEVsZW1l
bnQoKT09PWUmJih0PXtzdGFydDotbi5tb3ZlU3RhcnQoImNoYXJhY3RlciIsLWUudmFsdWUubGVu
Z3RoKSxlbmQ6LW4ubW92ZUVuZCgiY2hhcmFjdGVyIiwtZS52YWx1ZS5sZW5ndGgpfSl9ZWxzZSB0
PW8uZ2V0T2Zmc2V0cyhlKTtyZXR1cm4gdHx8e3N0YXJ0OjAsZW5kOjB9fSxzZXRTZWxlY3Rpb246
ZnVuY3Rpb24oZSx0KXt2YXIgbj10LnN0YXJ0LHI9dC5lbmQ7aWYodm9pZCAwPT09ciYmKHI9biks
InNlbGVjdGlvblN0YXJ0ImluIGUpZS5zZWxlY3Rpb25TdGFydD1uLGUuc2VsZWN0aW9uRW5kPU1h
dGgubWluKHIsZS52YWx1ZS5sZW5ndGgpO2Vsc2UgaWYoZG9jdW1lbnQuc2VsZWN0aW9uJiZlLm5v
ZGVOYW1lJiYiaW5wdXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpKXt2YXIgaT1lLmNyZWF0
ZVRleHRSYW5nZSgpO2kuY29sbGFwc2UoITApLGkubW92ZVN0YXJ0KCJjaGFyYWN0ZXIiLG4pLGku
bW92ZUVuZCgiY2hhcmFjdGVyIixyLW4pLGkuc2VsZWN0KCl9ZWxzZSBvLnNldE9mZnNldHMoZSx0
KX19O2UuZXhwb3J0cz1zfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSx0KXtmb3IodmFyIG49TWF0aC5taW4oZS5sZW5ndGgsdC5sZW5ndGgpLHI9MDtyPG47cisrKWlm
KGUuY2hhckF0KHIpIT09dC5jaGFyQXQocikpcmV0dXJuIHI7cmV0dXJuIGUubGVuZ3RoPT09dC5s
ZW5ndGg/LTE6bn1mdW5jdGlvbiBvKGUpe3JldHVybiBlP2Uubm9kZVR5cGU9PT1BP2UuZG9jdW1l
bnRFbGVtZW50OmUuZmlyc3RDaGlsZDpudWxsfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGUuZ2V0QXR0
cmlidXRlJiZlLmdldEF0dHJpYnV0ZShOKXx8IiJ9ZnVuY3Rpb24gYShlLHQsbixyLG8pe3ZhciBp
O2lmKEMubG9nVG9wTGV2ZWxSZW5kZXJzKXt2YXIgYT1lLl9jdXJyZW50RWxlbWVudC5wcm9wcy5j
aGlsZCx1PWEudHlwZTtpPSJSZWFjdCBtb3VudDogIisoInN0cmluZyI9PXR5cGVvZiB1P3U6dS5k
aXNwbGF5TmFtZXx8dS5uYW1lKSxjb25zb2xlLnRpbWUoaSl9dmFyIHM9VC5tb3VudENvbXBvbmVu
dChlLG4sbnVsbCxiKGUsdCksbywwKTtpJiZjb25zb2xlLnRpbWVFbmQoaSksZS5fcmVuZGVyZWRD
b21wb25lbnQuX3RvcExldmVsV3JhcHBlcj1lLEYuX21vdW50SW1hZ2VJbnRvTm9kZShzLHQsZSxy
LG4pfWZ1bmN0aW9uIHUoZSx0LG4scil7dmFyIG89eC5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9u
LmdldFBvb2xlZCghbiYmXy51c2VDcmVhdGVFbGVtZW50KTtvLnBlcmZvcm0oYSxudWxsLGUsdCxv
LG4scikseC5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLnJlbGVhc2Uobyl9ZnVuY3Rpb24gcyhl
LHQsbil7Zm9yKFQudW5tb3VudENvbXBvbmVudChlLG4pLHQubm9kZVR5cGU9PT1BJiYodD10LmRv
Y3VtZW50RWxlbWVudCk7dC5sYXN0Q2hpbGQ7KXQucmVtb3ZlQ2hpbGQodC5sYXN0Q2hpbGQpfWZ1
bmN0aW9uIGMoZSl7dmFyIHQ9byhlKTtpZih0KXt2YXIgbj1nLmdldEluc3RhbmNlRnJvbU5vZGUo
dCk7cmV0dXJuISghbnx8IW4uX2hvc3RQYXJlbnQpfX1mdW5jdGlvbiBsKGUpe3JldHVybiEoIWV8
fGUubm9kZVR5cGUhPT1SJiZlLm5vZGVUeXBlIT09QSYmZS5ub2RlVHlwZSE9PUQpfWZ1bmN0aW9u
IHAoZSl7dmFyIHQ9byhlKSxuPXQmJmcuZ2V0SW5zdGFuY2VGcm9tTm9kZSh0KTtyZXR1cm4gbiYm
IW4uX2hvc3RQYXJlbnQ/bjpudWxsfWZ1bmN0aW9uIGQoZSl7dmFyIHQ9cChlKTtyZXR1cm4gdD90
Ll9ob3N0Q29udGFpbmVySW5mby5fdG9wTGV2ZWxXcmFwcGVyOm51bGx9dmFyIGY9bigzKSxoPW4o
MTQpLHY9bigxNSksbT1uKDE3KSx5PW4oMjUpLGc9KG4oMTEpLG4oNSkpLGI9bigxMzkpLF89bigx
NDEpLEM9big2NCksRT1uKDIxKSx3PShuKDgpLG4oMTU1KSksVD1uKDE2KSxQPW4oNDIpLHg9big5
KSxPPW4oMjQpLFM9big3NSksaz0obigxKSxuKDI5KSksTT1uKDQ4KSxOPShuKDIpLHYuSURfQVRU
UklCVVRFX05BTUUpLEk9di5ST09UX0FUVFJJQlVURV9OQU1FLFI9MSxBPTksRD0xMSxqPXt9LEw9
MSxVPWZ1bmN0aW9uKCl7dGhpcy5yb290SUQ9TCsrfTtVLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9u
ZW50PXt9LFUucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByb3BzLmNo
aWxkfSxVLmlzUmVhY3RUb3BMZXZlbFdyYXBwZXI9ITA7dmFyIEY9e1RvcExldmVsV3JhcHBlcjpV
LF9pbnN0YW5jZXNCeVJlYWN0Um9vdElEOmosc2Nyb2xsTW9uaXRvcjpmdW5jdGlvbihlLHQpe3Qo
KX0sX3VwZGF0ZVJvb3RDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scixvKXtyZXR1cm4gRi5zY3Jv
bGxNb25pdG9yKHIsZnVuY3Rpb24oKXtQLmVucXVldWVFbGVtZW50SW50ZXJuYWwoZSx0LG4pLG8m
JlAuZW5xdWV1ZUNhbGxiYWNrSW50ZXJuYWwoZSxvKX0pLGV9LF9yZW5kZXJOZXdSb290Q29tcG9u
ZW50OmZ1bmN0aW9uKGUsdCxuLHIpe2wodCk/dm9pZCAwOmYoIjM3IikseS5lbnN1cmVTY3JvbGxW
YWx1ZU1vbml0b3JpbmcoKTt2YXIgbz1TKGUsITEpO3guYmF0Y2hlZFVwZGF0ZXModSxvLHQsbixy
KTt2YXIgaT1vLl9pbnN0YW5jZS5yb290SUQ7cmV0dXJuIGpbaV09byxvfSxyZW5kZXJTdWJ0cmVl
SW50b0NvbnRhaW5lcjpmdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gbnVsbCE9ZSYmRS5oYXMoZSk/
dm9pZCAwOmYoIjM4IiksRi5fcmVuZGVyU3VidHJlZUludG9Db250YWluZXIoZSx0LG4scil9LF9y
ZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjpmdW5jdGlvbihlLHQsbixyKXtQLnZhbGlkYXRlQ2Fs
bGJhY2sociwiUmVhY3RET00ucmVuZGVyIiksbS5pc1ZhbGlkRWxlbWVudCh0KT92b2lkIDA6Zigi
MzkiLCJzdHJpbmciPT10eXBlb2YgdD8iIEluc3RlYWQgb2YgcGFzc2luZyBhIHN0cmluZyBsaWtl
ICdkaXYnLCBwYXNzIFJlYWN0LmNyZWF0ZUVsZW1lbnQoJ2RpdicpIG9yIDxkaXYgLz4uIjoiZnVu
Y3Rpb24iPT10eXBlb2YgdD8iIEluc3RlYWQgb2YgcGFzc2luZyBhIGNsYXNzIGxpa2UgRm9vLCBw
YXNzIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9vKSBvciA8Rm9vIC8+LiI6bnVsbCE9dCYmdm9pZCAw
IT09dC5wcm9wcz8iIFRoaXMgbWF5IGJlIGNhdXNlZCBieSB1bmludGVudGlvbmFsbHkgbG9hZGlu
ZyB0d28gaW5kZXBlbmRlbnQgY29waWVzIG9mIFJlYWN0LiI6IiIpO3ZhciBhLHU9bS5jcmVhdGVF
bGVtZW50KFUse2NoaWxkOnR9KTtpZihlKXt2YXIgcz1FLmdldChlKTthPXMuX3Byb2Nlc3NDaGls
ZENvbnRleHQocy5fY29udGV4dCl9ZWxzZSBhPU87dmFyIGw9ZChuKTtpZihsKXt2YXIgcD1sLl9j
dXJyZW50RWxlbWVudCxoPXAucHJvcHMuY2hpbGQ7aWYoTShoLHQpKXt2YXIgdj1sLl9yZW5kZXJl
ZENvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpLHk9ciYmZnVuY3Rpb24oKXtyLmNhbGwodil9
O3JldHVybiBGLl91cGRhdGVSb290Q29tcG9uZW50KGwsdSxhLG4seSksdn1GLnVubW91bnRDb21w
b25lbnRBdE5vZGUobil9dmFyIGc9byhuKSxiPWcmJiEhaShnKSxfPWMobiksQz1iJiYhbCYmIV8s
dz1GLl9yZW5kZXJOZXdSb290Q29tcG9uZW50KHUsbixDLGEpLl9yZW5kZXJlZENvbXBvbmVudC5n
ZXRQdWJsaWNJbnN0YW5jZSgpO3JldHVybiByJiZyLmNhbGwodyksd30scmVuZGVyOmZ1bmN0aW9u
KGUsdCxuKXtyZXR1cm4gRi5fcmVuZGVyU3VidHJlZUludG9Db250YWluZXIobnVsbCxlLHQsbil9
LHVubW91bnRDb21wb25lbnRBdE5vZGU6ZnVuY3Rpb24oZSl7bChlKT92b2lkIDA6ZigiNDAiKTt2
YXIgdD1kKGUpO2lmKCF0KXtjKGUpLDE9PT1lLm5vZGVUeXBlJiZlLmhhc0F0dHJpYnV0ZShJKTty
ZXR1cm4hMX1yZXR1cm4gZGVsZXRlIGpbdC5faW5zdGFuY2Uucm9vdElEXSx4LmJhdGNoZWRVcGRh
dGVzKHMsdCxlLCExKSwhMH0sX21vdW50SW1hZ2VJbnRvTm9kZTpmdW5jdGlvbihlLHQsbixpLGEp
e2lmKGwodCk/dm9pZCAwOmYoIjQxIiksaSl7dmFyIHU9byh0KTtpZih3LmNhblJldXNlTWFya3Vw
KGUsdSkpcmV0dXJuIHZvaWQgZy5wcmVjYWNoZU5vZGUobix1KTt2YXIgcz11LmdldEF0dHJpYnV0
ZSh3LkNIRUNLU1VNX0FUVFJfTkFNRSk7dS5yZW1vdmVBdHRyaWJ1dGUody5DSEVDS1NVTV9BVFRS
X05BTUUpO3ZhciBjPXUub3V0ZXJIVE1MO3Uuc2V0QXR0cmlidXRlKHcuQ0hFQ0tTVU1fQVRUUl9O
QU1FLHMpO3ZhciBwPWUsZD1yKHAsYyksdj0iIChjbGllbnQpICIrcC5zdWJzdHJpbmcoZC0yMCxk
KzIwKSsiXG4gKHNlcnZlcikgIitjLnN1YnN0cmluZyhkLTIwLGQrMjApO3Qubm9kZVR5cGU9PT1B
P2YoIjQyIix2KTp2b2lkIDB9aWYodC5ub2RlVHlwZT09PUE/ZigiNDMiKTp2b2lkIDAsYS51c2VD
cmVhdGVFbGVtZW50KXtmb3IoO3QubGFzdENoaWxkOyl0LnJlbW92ZUNoaWxkKHQubGFzdENoaWxk
KTtoLmluc2VydFRyZWVCZWZvcmUodCxlLG51bGwpfWVsc2Ugayh0LGUpLGcucHJlY2FjaGVOb2Rl
KG4sdC5maXJzdENoaWxkKX19O2UuZXhwb3J0cz1GfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3ZhciByPW4oMyksbz1uKDE3KSxpPShuKDEpLHtIT1NUOjAsQ09NUE9TSVRFOjEsRU1QVFk6
MixnZXRUeXBlOmZ1bmN0aW9uKGUpe3JldHVybiBudWxsPT09ZXx8ZT09PSExP2kuRU1QVFk6by5p
c1ZhbGlkRWxlbWVudChlKT8iZnVuY3Rpb24iPT10eXBlb2YgZS50eXBlP2kuQ09NUE9TSVRFOmku
SE9TVDp2b2lkIHIoIjI2IixlKX19KTtlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0
cmljdCI7dmFyIG49e2N1cnJlbnRTY3JvbGxMZWZ0OjAsY3VycmVudFNjcm9sbFRvcDowLHJlZnJl
c2hTY3JvbGxWYWx1ZXM6ZnVuY3Rpb24oZSl7bi5jdXJyZW50U2Nyb2xsTGVmdD1lLngsbi5jdXJy
ZW50U2Nyb2xsVG9wPWUueX19O2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gbnVsbD09dD9vKCIzMCIpOnZvaWQgMCxudWxsPT1l
P3Q6QXJyYXkuaXNBcnJheShlKT9BcnJheS5pc0FycmF5KHQpPyhlLnB1c2guYXBwbHkoZSx0KSxl
KTooZS5wdXNoKHQpLGUpOkFycmF5LmlzQXJyYXkodCk/W2VdLmNvbmNhdCh0KTpbZSx0XX12YXIg
bz1uKDMpO24oMSk7ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIG4oZSx0LG4pe0FycmF5LmlzQXJyYXkoZSk/ZS5mb3JFYWNoKHQsbik6ZSYmdC5jYWxsKG4s
ZSl9ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
KXtmb3IodmFyIHQ7KHQ9ZS5fcmVuZGVyZWROb2RlVHlwZSk9PT1vLkNPTVBPU0lURTspZT1lLl9y
ZW5kZXJlZENvbXBvbmVudDtyZXR1cm4gdD09PW8uSE9TVD9lLl9yZW5kZXJlZENvbXBvbmVudDp0
PT09by5FTVBUWT9udWxsOnZvaWQgMH12YXIgbz1uKDY4KTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7cmV0dXJuIWkmJm8uY2FuVXNlRE9NJiYo
aT0idGV4dENvbnRlbnQiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50PyJ0ZXh0Q29udGVudCI6
ImlubmVyVGV4dCIpLGl9dmFyIG89big2KSxpPW51bGw7ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1lLnR5cGUsbj1lLm5vZGVOYW1l
O3JldHVybiBuJiYiaW5wdXQiPT09bi50b0xvd2VyQ2FzZSgpJiYoImNoZWNrYm94Ij09PXR8fCJy
YWRpbyI9PT10KX1mdW5jdGlvbiBvKGUpe3JldHVybiBlLl93cmFwcGVyU3RhdGUudmFsdWVUcmFj
a2VyfWZ1bmN0aW9uIGkoZSx0KXtlLl93cmFwcGVyU3RhdGUudmFsdWVUcmFja2VyPXR9ZnVuY3Rp
b24gYShlKXtkZWxldGUgZS5fd3JhcHBlclN0YXRlLnZhbHVlVHJhY2tlcn1mdW5jdGlvbiB1KGUp
e3ZhciB0O3JldHVybiBlJiYodD1yKGUpPyIiK2UuY2hlY2tlZDplLnZhbHVlKSx0fXZhciBzPW4o
NSksYz17X2dldFRyYWNrZXJGcm9tTm9kZTpmdW5jdGlvbihlKXtyZXR1cm4gbyhzLmdldEluc3Rh
bmNlRnJvbU5vZGUoZSkpfSx0cmFjazpmdW5jdGlvbihlKXtpZighbyhlKSl7dmFyIHQ9cy5nZXRO
b2RlRnJvbUluc3RhbmNlKGUpLG49cih0KT8iY2hlY2tlZCI6InZhbHVlIix1PU9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IodC5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsbiksYz0iIit0W25d
O3QuaGFzT3duUHJvcGVydHkobil8fCJmdW5jdGlvbiIhPXR5cGVvZiB1LmdldHx8ImZ1bmN0aW9u
IiE9dHlwZW9mIHUuc2V0fHwoT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsbix7ZW51bWVyYWJsZTp1
LmVudW1lcmFibGUsY29uZmlndXJhYmxlOiEwLGdldDpmdW5jdGlvbigpe3JldHVybiB1LmdldC5j
YWxsKHRoaXMpfSxzZXQ6ZnVuY3Rpb24oZSl7Yz0iIitlLHUuc2V0LmNhbGwodGhpcyxlKX19KSxp
KGUse2dldFZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGN9LHNldFZhbHVlOmZ1bmN0aW9uKGUpe2M9
IiIrZX0sc3RvcFRyYWNraW5nOmZ1bmN0aW9uKCl7YShlKSxkZWxldGUgdFtuXX19KSl9fSx1cGRh
dGVWYWx1ZUlmQ2hhbmdlZDpmdW5jdGlvbihlKXtpZighZSlyZXR1cm4hMTt2YXIgdD1vKGUpO2lm
KCF0KXJldHVybiBjLnRyYWNrKGUpLCEwO3ZhciBuPXQuZ2V0VmFsdWUoKSxyPXUocy5nZXROb2Rl
RnJvbUluc3RhbmNlKGUpKTtyZXR1cm4gciE9PW4mJih0LnNldFZhbHVlKHIpLCEwKX0sc3RvcFRy
YWNraW5nOmZ1bmN0aW9uKGUpe3ZhciB0PW8oZSk7dCYmdC5zdG9wVHJhY2tpbmcoKX19O2UuZXhw
b3J0cz1jfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYoZSl7
dmFyIHQ9ZS5nZXROYW1lKCk7aWYodClyZXR1cm4iIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9m
IGAiK3QrImAuIn1yZXR1cm4iIn1mdW5jdGlvbiBvKGUpe3JldHVybiJmdW5jdGlvbiI9PXR5cGVv
ZiBlJiYidW5kZWZpbmVkIiE9dHlwZW9mIGUucHJvdG90eXBlJiYiZnVuY3Rpb24iPT10eXBlb2Yg
ZS5wcm90b3R5cGUubW91bnRDb21wb25lbnQmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnByb3RvdHlw
ZS5yZWNlaXZlQ29tcG9uZW50fWZ1bmN0aW9uIGkoZSx0KXt2YXIgbjtpZihudWxsPT09ZXx8ZT09
PSExKW49Yy5jcmVhdGUoaSk7ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9mIGUpe3ZhciB1PWUscz11
LnR5cGU7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHMmJiJzdHJpbmciIT10eXBlb2Ygcyl7dmFyIGQ9
IiI7ZCs9cih1Ll9vd25lciksYSgiMTMwIixudWxsPT1zP3M6dHlwZW9mIHMsZCl9InN0cmluZyI9
PXR5cGVvZiB1LnR5cGU/bj1sLmNyZWF0ZUludGVybmFsQ29tcG9uZW50KHUpOm8odS50eXBlKT8o
bj1uZXcgdS50eXBlKHUpLG4uZ2V0SG9zdE5vZGV8fChuLmdldEhvc3ROb2RlPW4uZ2V0TmF0aXZl
Tm9kZSkpOm49bmV3IHAodSl9ZWxzZSJzdHJpbmciPT10eXBlb2YgZXx8Im51bWJlciI9PXR5cGVv
ZiBlP249bC5jcmVhdGVJbnN0YW5jZUZvclRleHQoZSk6YSgiMTMxIix0eXBlb2YgZSk7cmV0dXJu
IG4uX21vdW50SW5kZXg9MCxuLl9tb3VudEltYWdlPW51bGwsbn12YXIgYT1uKDMpLHU9big0KSxz
PW4oMTM2KSxjPW4oNjMpLGw9big2NSkscD0obigyMjEpLG4oMSksbigyKSxmdW5jdGlvbihlKXt0
aGlzLmNvbnN0cnVjdChlKX0pO3UocC5wcm90b3R5cGUscyx7X2luc3RhbnRpYXRlUmVhY3RDb21w
b25lbnQ6aX0pLGUuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biBuKGUpe3ZhciB0PWUmJmUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1
cm4iaW5wdXQiPT09dD8hIXJbZS50eXBlXToidGV4dGFyZWEiPT09dH12YXIgcj17Y29sb3I6ITAs
ZGF0ZTohMCxkYXRldGltZTohMCwiZGF0ZXRpbWUtbG9jYWwiOiEwLGVtYWlsOiEwLG1vbnRoOiEw
LG51bWJlcjohMCxwYXNzd29yZDohMCxyYW5nZTohMCxzZWFyY2g6ITAsdGVsOiEwLHRleHQ6ITAs
dGltZTohMCx1cmw6ITAsd2VlazohMH07ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7dmFyIHI9big2KSxvPW4oMjgpLGk9bigyOSksYT1mdW5jdGlvbihlLHQpe2lmKHQp
e3ZhciBuPWUuZmlyc3RDaGlsZDtpZihuJiZuPT09ZS5sYXN0Q2hpbGQmJjM9PT1uLm5vZGVUeXBl
KXJldHVybiB2b2lkKG4ubm9kZVZhbHVlPXQpfWUudGV4dENvbnRlbnQ9dH07ci5jYW5Vc2VET00m
JigidGV4dENvbnRlbnQiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fHwoYT1mdW5jdGlvbihl
LHQpe3JldHVybiAzPT09ZS5ub2RlVHlwZT92b2lkKGUubm9kZVZhbHVlPXQpOnZvaWQgaShlLG8o
dCkpfSkpLGUuZXhwb3J0cz1hfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSx0KXtyZXR1cm4gZSYmIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT1lLmtleT9jLmVzY2Fw
ZShlLmtleSk6dC50b1N0cmluZygzNil9ZnVuY3Rpb24gbyhlLHQsbixpKXt2YXIgZD10eXBlb2Yg
ZTtpZigidW5kZWZpbmVkIiE9PWQmJiJib29sZWFuIiE9PWR8fChlPW51bGwpLG51bGw9PT1lfHwi
c3RyaW5nIj09PWR8fCJudW1iZXIiPT09ZHx8Im9iamVjdCI9PT1kJiZlLiQkdHlwZW9mPT09dSly
ZXR1cm4gbihpLGUsIiI9PT10P2wrcihlLDApOnQpLDE7dmFyIGYsaCx2PTAsbT0iIj09PXQ/bDp0
K3A7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IodmFyIHk9MDt5PGUubGVuZ3RoO3krKylmPWVbeV0s
aD1tK3IoZix5KSx2Kz1vKGYsaCxuLGkpO2Vsc2V7dmFyIGc9cyhlKTtpZihnKXt2YXIgYixfPWcu
Y2FsbChlKTtpZihnIT09ZS5lbnRyaWVzKWZvcih2YXIgQz0wOyEoYj1fLm5leHQoKSkuZG9uZTsp
Zj1iLnZhbHVlLGg9bStyKGYsQysrKSx2Kz1vKGYsaCxuLGkpO2Vsc2UgZm9yKDshKGI9Xy5uZXh0
KCkpLmRvbmU7KXt2YXIgRT1iLnZhbHVlO0UmJihmPUVbMV0saD1tK2MuZXNjYXBlKEVbMF0pK3Ar
cihmLDApLHYrPW8oZixoLG4saSkpfX1lbHNlIGlmKCJvYmplY3QiPT09ZCl7dmFyIHc9IiIsVD1T
dHJpbmcoZSk7YSgiMzEiLCJbb2JqZWN0IE9iamVjdF0iPT09VD8ib2JqZWN0IHdpdGgga2V5cyB7
IitPYmplY3Qua2V5cyhlKS5qb2luKCIsICIpKyJ9IjpULHcpfX1yZXR1cm4gdn1mdW5jdGlvbiBp
KGUsdCxuKXtyZXR1cm4gbnVsbD09ZT8wOm8oZSwiIix0LG4pfXZhciBhPW4oMyksdT0obigxMSks
bigxNTEpKSxzPW4oMTgyKSxjPShuKDEpLG4oMzgpKSxsPShuKDIpLCIuIikscD0iOiI7ZS5leHBv
cnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4g
ZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbyhlLHQpe2lmKCEoZSBpbnN0
YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBm
dW5jdGlvbiIpfWZ1bmN0aW9uIGkoZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3Io
InRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxl
ZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6
dH1mdW5jdGlvbiBhKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93
IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBh
IGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0
LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZToh
MCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0
UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX1mdW5jdGlvbiB1KGUsdCl7dmFyIG49e307
Zm9yKHZhciByIGluIGUpdC5pbmRleE9mKHIpPj0wfHxPYmplY3QucHJvdG90eXBlLmhhc093blBy
b3BlcnR5LmNhbGwoZSxyKSYmKG5bcl09ZVtyXSk7cmV0dXJuIG59ZnVuY3Rpb24gcygpe31mdW5j
dGlvbiBjKGUsdCl7dmFyIG49e3J1bjpmdW5jdGlvbihyKXt0cnl7dmFyIG89ZSh0LmdldFN0YXRl
KCkscik7KG8hPT1uLnByb3BzfHxuLmVycm9yKSYmKG4uc2hvdWxkQ29tcG9uZW50VXBkYXRlPSEw
LG4ucHJvcHM9byxuLmVycm9yPW51bGwpfWNhdGNoKGkpe24uc2hvdWxkQ29tcG9uZW50VXBkYXRl
PSEwLG4uZXJyb3I9aX19fTtyZXR1cm4gbn1mdW5jdGlvbiBsKGUpe3ZhciB0LG4scj1hcmd1bWVu
dHMubGVuZ3RoPjEmJnZvaWQgMCE9PWFyZ3VtZW50c1sxXT9hcmd1bWVudHNbMV06e30sbD1yLmdl
dERpc3BsYXlOYW1lLGQ9dm9pZCAwPT09bD9mdW5jdGlvbihlKXtyZXR1cm4iQ29ubmVjdEFkdmFu
Y2VkKCIrZSsiKSJ9OmwsaD1yLm1ldGhvZE5hbWUseT12b2lkIDA9PT1oPyJjb25uZWN0QWR2YW5j
ZWQiOmgsRT1yLnJlbmRlckNvdW50UHJvcCx3PXZvaWQgMD09PUU/dm9pZCAwOkUsVD1yLnNob3Vs
ZEhhbmRsZVN0YXRlQ2hhbmdlcyxQPXZvaWQgMD09PVR8fFQseD1yLnN0b3JlS2V5LE89dm9pZCAw
PT09eD8ic3RvcmUiOngsUz1yLndpdGhSZWYsaz12b2lkIDAhPT1TJiZTLE09dShyLFsiZ2V0RGlz
cGxheU5hbWUiLCJtZXRob2ROYW1lIiwicmVuZGVyQ291bnRQcm9wIiwic2hvdWxkSGFuZGxlU3Rh
dGVDaGFuZ2VzIiwic3RvcmVLZXkiLCJ3aXRoUmVmIl0pLE49TysiU3Vic2NyaXB0aW9uIixJPV8r
KyxSPSh0PXt9LHRbT109Yi5zdG9yZVNoYXBlLHRbTl09Yi5zdWJzY3JpcHRpb25TaGFwZSx0KSxB
PShuPXt9LG5bTl09Yi5zdWJzY3JpcHRpb25TaGFwZSxuKTtyZXR1cm4gZnVuY3Rpb24odCl7KDAs
di5kZWZhdWx0KSgiZnVuY3Rpb24iPT10eXBlb2YgdCwiWW91IG11c3QgcGFzcyBhIGNvbXBvbmVu
dCB0byB0aGUgZnVuY3Rpb24gcmV0dXJuZWQgYnkgY29ubmVjdC4gSW5zdGVhZCByZWNlaXZlZCAi
K0pTT04uc3RyaW5naWZ5KHQpKTt2YXIgbj10LmRpc3BsYXlOYW1lfHx0Lm5hbWV8fCJDb21wb25l
bnQiLHI9ZChuKSx1PXAoe30sTSx7Z2V0RGlzcGxheU5hbWU6ZCxtZXRob2ROYW1lOnkscmVuZGVy
Q291bnRQcm9wOncsc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzOlAsc3RvcmVLZXk6Tyx3aXRoUmVm
OmssZGlzcGxheU5hbWU6cix3cmFwcGVkQ29tcG9uZW50TmFtZTpuLFdyYXBwZWRDb21wb25lbnQ6
dH0pLGw9ZnVuY3Rpb24obil7ZnVuY3Rpb24gbChlLHQpe28odGhpcyxsKTt2YXIgYT1pKHRoaXMs
bi5jYWxsKHRoaXMsZSx0KSk7cmV0dXJuIGEudmVyc2lvbj1JLGEuc3RhdGU9e30sYS5yZW5kZXJD
b3VudD0wLGEuc3RvcmU9ZVtPXXx8dFtPXSxhLnByb3BzTW9kZT1Cb29sZWFuKGVbT10pLGEuc2V0
V3JhcHBlZEluc3RhbmNlPWEuc2V0V3JhcHBlZEluc3RhbmNlLmJpbmQoYSksKDAsdi5kZWZhdWx0
KShhLnN0b3JlLCdDb3VsZCBub3QgZmluZCAiJytPKyciIGluIGVpdGhlciB0aGUgY29udGV4dCBv
ciBwcm9wcyBvZiAnKygnIicrcisnIi4gRWl0aGVyIHdyYXAgdGhlIHJvb3QgY29tcG9uZW50IGlu
IGEgPFByb3ZpZGVyPiwgJykrKCdvciBleHBsaWNpdGx5IHBhc3MgIicrTysnIiBhcyBhIHByb3Ag
dG8gIicrcisnIi4nKSksYS5pbml0U2VsZWN0b3IoKSxhLmluaXRTdWJzY3JpcHRpb24oKSxhfXJl
dHVybiBhKGwsbiksbC5wcm90b3R5cGUuZ2V0Q2hpbGRDb250ZXh0PWZ1bmN0aW9uKCl7dmFyIGUs
dD10aGlzLnByb3BzTW9kZT9udWxsOnRoaXMuc3Vic2NyaXB0aW9uO3JldHVybiBlPXt9LGVbTl09
dHx8dGhpcy5jb250ZXh0W05dLGV9LGwucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50PWZ1bmN0
aW9uKCl7UCYmKHRoaXMuc3Vic2NyaXB0aW9uLnRyeVN1YnNjcmliZSgpLHRoaXMuc2VsZWN0b3Iu
cnVuKHRoaXMucHJvcHMpLHRoaXMuc2VsZWN0b3Iuc2hvdWxkQ29tcG9uZW50VXBkYXRlJiZ0aGlz
LmZvcmNlVXBkYXRlKCkpfSxsLnByb3RvdHlwZS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzPWZ1
bmN0aW9uKGUpe3RoaXMuc2VsZWN0b3IucnVuKGUpfSxsLnByb3RvdHlwZS5zaG91bGRDb21wb25l
bnRVcGRhdGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zZWxlY3Rvci5zaG91bGRDb21wb25lbnRV
cGRhdGV9LGwucHJvdG90eXBlLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7dGhpcy5z
dWJzY3JpcHRpb24mJnRoaXMuc3Vic2NyaXB0aW9uLnRyeVVuc3Vic2NyaWJlKCksdGhpcy5zdWJz
Y3JpcHRpb249bnVsbCx0aGlzLm5vdGlmeU5lc3RlZFN1YnM9cyx0aGlzLnN0b3JlPW51bGwsdGhp
cy5zZWxlY3Rvci5ydW49cyx0aGlzLnNlbGVjdG9yLnNob3VsZENvbXBvbmVudFVwZGF0ZT0hMX0s
bC5wcm90b3R5cGUuZ2V0V3JhcHBlZEluc3RhbmNlPWZ1bmN0aW9uKCl7cmV0dXJuKDAsdi5kZWZh
dWx0KShrLCJUbyBhY2Nlc3MgdGhlIHdyYXBwZWQgaW5zdGFuY2UsIHlvdSBuZWVkIHRvIHNwZWNp
ZnkgIisoInsgd2l0aFJlZjogdHJ1ZSB9IGluIHRoZSBvcHRpb25zIGFyZ3VtZW50IG9mIHRoZSAi
K3krIigpIGNhbGwuIikpLHRoaXMud3JhcHBlZEluc3RhbmNlfSxsLnByb3RvdHlwZS5zZXRXcmFw
cGVkSW5zdGFuY2U9ZnVuY3Rpb24oZSl7dGhpcy53cmFwcGVkSW5zdGFuY2U9ZX0sbC5wcm90b3R5
cGUuaW5pdFNlbGVjdG9yPWZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzLnN0b3JlLmRpc3BhdGNoLHUp
O3RoaXMuc2VsZWN0b3I9Yyh0LHRoaXMuc3RvcmUpLHRoaXMuc2VsZWN0b3IucnVuKHRoaXMucHJv
cHMpfSxsLnByb3RvdHlwZS5pbml0U3Vic2NyaXB0aW9uPWZ1bmN0aW9uKCl7aWYoUCl7dmFyIGU9
KHRoaXMucHJvcHNNb2RlP3RoaXMucHJvcHM6dGhpcy5jb250ZXh0KVtOXTt0aGlzLnN1YnNjcmlw
dGlvbj1uZXcgZy5kZWZhdWx0KHRoaXMuc3RvcmUsZSx0aGlzLm9uU3RhdGVDaGFuZ2UuYmluZCh0
aGlzKSksdGhpcy5ub3RpZnlOZXN0ZWRTdWJzPXRoaXMuc3Vic2NyaXB0aW9uLm5vdGlmeU5lc3Rl
ZFN1YnMuYmluZCh0aGlzLnN1YnNjcmlwdGlvbil9fSxsLnByb3RvdHlwZS5vblN0YXRlQ2hhbmdl
PWZ1bmN0aW9uKCl7dGhpcy5zZWxlY3Rvci5ydW4odGhpcy5wcm9wcyksdGhpcy5zZWxlY3Rvci5z
aG91bGRDb21wb25lbnRVcGRhdGU/KHRoaXMuY29tcG9uZW50RGlkVXBkYXRlPXRoaXMubm90aWZ5
TmVzdGVkU3Vic09uQ29tcG9uZW50RGlkVXBkYXRlLHRoaXMuc2V0U3RhdGUoQykpOnRoaXMubm90
aWZ5TmVzdGVkU3VicygpfSxsLnByb3RvdHlwZS5ub3RpZnlOZXN0ZWRTdWJzT25Db21wb25lbnRE
aWRVcGRhdGU9ZnVuY3Rpb24oKXt0aGlzLmNvbXBvbmVudERpZFVwZGF0ZT12b2lkIDAsdGhpcy5u
b3RpZnlOZXN0ZWRTdWJzKCl9LGwucHJvdG90eXBlLmlzU3Vic2NyaWJlZD1mdW5jdGlvbigpe3Jl
dHVybiBCb29sZWFuKHRoaXMuc3Vic2NyaXB0aW9uKSYmdGhpcy5zdWJzY3JpcHRpb24uaXNTdWJz
Y3JpYmVkKCl9LGwucHJvdG90eXBlLmFkZEV4dHJhUHJvcHM9ZnVuY3Rpb24oZSl7aWYoIShrfHx3
fHx0aGlzLnByb3BzTW9kZSYmdGhpcy5zdWJzY3JpcHRpb24pKXJldHVybiBlO3ZhciB0PXAoe30s
ZSk7cmV0dXJuIGsmJih0LnJlZj10aGlzLnNldFdyYXBwZWRJbnN0YW5jZSksdyYmKHRbd109dGhp
cy5yZW5kZXJDb3VudCsrKSx0aGlzLnByb3BzTW9kZSYmdGhpcy5zdWJzY3JpcHRpb24mJih0W05d
PXRoaXMuc3Vic2NyaXB0aW9uKSx0fSxsLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIg
ZT10aGlzLnNlbGVjdG9yO2lmKGUuc2hvdWxkQ29tcG9uZW50VXBkYXRlPSExLGUuZXJyb3IpdGhy
b3cgZS5lcnJvcjtyZXR1cm4oMCxtLmNyZWF0ZUVsZW1lbnQpKHQsdGhpcy5hZGRFeHRyYVByb3Bz
KGUucHJvcHMpKX0sbH0obS5Db21wb25lbnQpO3JldHVybiBsLldyYXBwZWRDb21wb25lbnQ9dCxs
LmRpc3BsYXlOYW1lPXIsbC5jaGlsZENvbnRleHRUeXBlcz1BLGwuY29udGV4dFR5cGVzPVIsbC5w
cm9wVHlwZXM9UiwoMCxmLmRlZmF1bHQpKGwsdCl9fXQuX19lc01vZHVsZT0hMDt2YXIgcD1PYmpl
Y3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsr
KXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNP
d25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfTt0LmRlZmF1bHQ9bDt2
YXIgZD1uKDExMCksZj1yKGQpLGg9bigxMTEpLHY9cihoKSxtPW4oMTIpLHk9bigxOTQpLGc9cih5
KSxiPW4oODIpLF89MCxDPXt9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIG8oZSl7
cmV0dXJuIGZ1bmN0aW9uKHQsbil7ZnVuY3Rpb24gcigpe3JldHVybiBvfXZhciBvPWUodCxuKTty
ZXR1cm4gci5kZXBlbmRzT25Pd25Qcm9wcz0hMSxyfX1mdW5jdGlvbiBpKGUpe3JldHVybiBudWxs
IT09ZS5kZXBlbmRzT25Pd25Qcm9wcyYmdm9pZCAwIT09ZS5kZXBlbmRzT25Pd25Qcm9wcz9Cb29s
ZWFuKGUuZGVwZW5kc09uT3duUHJvcHMpOjEhPT1lLmxlbmd0aH1mdW5jdGlvbiBhKGUsdCl7cmV0
dXJuIGZ1bmN0aW9uKHQsbil7dmFyIHI9KG4uZGlzcGxheU5hbWUsZnVuY3Rpb24oZSx0KXtyZXR1
cm4gci5kZXBlbmRzT25Pd25Qcm9wcz9yLm1hcFRvUHJvcHMoZSx0KTpyLm1hcFRvUHJvcHMoZSl9
KTtyZXR1cm4gci5kZXBlbmRzT25Pd25Qcm9wcz0hMCxyLm1hcFRvUHJvcHM9ZnVuY3Rpb24odCxu
KXtyLm1hcFRvUHJvcHM9ZSxyLmRlcGVuZHNPbk93blByb3BzPWkoZSk7dmFyIG89cih0LG4pO3Jl
dHVybiJmdW5jdGlvbiI9PXR5cGVvZiBvJiYoci5tYXBUb1Byb3BzPW8sci5kZXBlbmRzT25Pd25Q
cm9wcz1pKG8pLG89cih0LG4pKSxvfSxyfX10Ll9fZXNNb2R1bGU9ITAsdC53cmFwTWFwVG9Qcm9w
c0NvbnN0YW50PW8sdC5nZXREZXBlbmRzT25Pd25Qcm9wcz1pLHQud3JhcE1hcFRvUHJvcHNGdW5j
PWE7dmFyIHU9big4Myk7cih1KX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX10Ll9fZXNNb2R1bGU9
ITAsdC5jb25uZWN0PXQuY29ubmVjdEFkdmFuY2VkPXQuY3JlYXRlUHJvdmlkZXI9dC5Qcm92aWRl
cj12b2lkIDA7dmFyIG89bigxODcpLGk9cihvKSxhPW4oNzkpLHU9cihhKSxzPW4oMTg4KSxjPXIo
cyk7dC5Qcm92aWRlcj1pLmRlZmF1bHQsdC5jcmVhdGVQcm92aWRlcj1vLmNyZWF0ZVByb3ZpZGVy
LHQuY29ubmVjdEFkdmFuY2VkPXUuZGVmYXVsdCx0LmNvbm5lY3Q9Yy5kZWZhdWx0fSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVs
ZT9lOntkZWZhdWx0OmV9fXQuX19lc01vZHVsZT0hMCx0LnN0b3JlU2hhcGU9dC5zdWJzY3JpcHRp
b25TaGFwZT12b2lkIDA7dmFyIG89big1NiksaT1yKG8pO3Quc3Vic2NyaXB0aW9uU2hhcGU9aS5k
ZWZhdWx0LnNoYXBlKHt0cnlTdWJzY3JpYmU6aS5kZWZhdWx0LmZ1bmMuaXNSZXF1aXJlZCx0cnlV
bnN1YnNjcmliZTppLmRlZmF1bHQuZnVuYy5pc1JlcXVpcmVkLG5vdGlmeU5lc3RlZFN1YnM6aS5k
ZWZhdWx0LmZ1bmMuaXNSZXF1aXJlZCxpc1N1YnNjcmliZWQ6aS5kZWZhdWx0LmZ1bmMuaXNSZXF1
aXJlZH0pLHQuc3RvcmVTaGFwZT1pLmRlZmF1bHQuc2hhcGUoe3N1YnNjcmliZTppLmRlZmF1bHQu
ZnVuYy5pc1JlcXVpcmVkLGRpc3BhdGNoOmkuZGVmYXVsdC5mdW5jLmlzUmVxdWlyZWQsZ2V0U3Rh
dGU6aS5kZWZhdWx0LmZ1bmMuaXNSZXF1aXJlZH0pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1
bmN0aW9uIG8oZSx0LG4peygwLGEuZGVmYXVsdCkoZSl8fCgwLHMuZGVmYXVsdCkobisiKCkgaW4g
Iit0KyIgbXVzdCByZXR1cm4gYSBwbGFpbiBvYmplY3QuIEluc3RlYWQgcmVjZWl2ZWQgIitlKyIu
Iil9dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD1vO3ZhciBpPW4oMzMpLGE9cihpKSx1PW4oNTAp
LHM9cih1KX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVy
biBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBvKGUsdCl7aWYoIShlIGlu
c3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBh
IGZ1bmN0aW9uIil9ZnVuY3Rpb24gaShlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJv
cigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2Fs
bGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/
ZTp0fWZ1bmN0aW9uIGEoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhy
b3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9y
IGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQm
JnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5z
ZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0
LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgdT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0
KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5l
bnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9
ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxu
LHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxzPW4oMTIpLGM9
cihzKSxsPW4oMzEpLHA9cihsKSxkPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgZSxuLHIs
YTtvKHRoaXMsdCk7Zm9yKHZhciB1PWFyZ3VtZW50cy5sZW5ndGgscz1BcnJheSh1KSxjPTA7Yzx1
O2MrKylzW2NdPWFyZ3VtZW50c1tjXTtyZXR1cm4gbj1yPWkodGhpcywoZT10Ll9fcHJvdG9fX3x8
T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChzKSkp
LHIuc3RhdGU9e3RleHQ6ci5wcm9wcy50ZXh0fHwiIn0sci5oYW5kbGVTdWJtaXQ9ZnVuY3Rpb24o
ZSl7dmFyIHQ9ZS50YXJnZXQudmFsdWUudHJpbSgpOzEzPT09ZS53aGljaCYmKHIucHJvcHMub25T
YXZlKHQpLHIucHJvcHMubmV3VG9kbyYmci5zZXRTdGF0ZSh7dGV4dDoiIn0pKX0sci5oYW5kbGVD
aGFuZ2U9ZnVuY3Rpb24oZSl7ci5zZXRTdGF0ZSh7dGV4dDplLnRhcmdldC52YWx1ZX0pfSxyLmhh
bmRsZUJsdXI9ZnVuY3Rpb24oZSl7ci5wcm9wcy5uZXdUb2RvfHxyLnByb3BzLm9uU2F2ZShlLnRh
cmdldC52YWx1ZSl9LGE9bixpKHIsYSl9cmV0dXJuIGEodCxlKSx1KHQsW3trZXk6InJlbmRlciIs
dmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gYy5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7
Y2xhc3NOYW1lOigwLHAuZGVmYXVsdCkoe2VkaXQ6dGhpcy5wcm9wcy5lZGl0aW5nLCJuZXctdG9k
byI6dGhpcy5wcm9wcy5uZXdUb2RvfSksdHlwZToidGV4dCIscGxhY2Vob2xkZXI6dGhpcy5wcm9w
cy5wbGFjZWhvbGRlcixhdXRvRm9jdXM6InRydWUiLHZhbHVlOnRoaXMuc3RhdGUudGV4dCxvbkJs
dXI6dGhpcy5oYW5kbGVCbHVyLG9uQ2hhbmdlOnRoaXMuaGFuZGxlQ2hhbmdlLG9uS2V5RG93bjp0
aGlzLmhhbmRsZVN1Ym1pdH0pfX1dKSx0fShzLkNvbXBvbmVudCk7ZC5wcm9wVHlwZXM9e29uU2F2
ZTpzLlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsdGV4dDpzLlByb3BUeXBlcy5zdHJpbmcscGxh
Y2Vob2xkZXI6cy5Qcm9wVHlwZXMuc3RyaW5nLGVkaXRpbmc6cy5Qcm9wVHlwZXMuYm9vbCxuZXdU
b2RvOnMuUHJvcFR5cGVzLmJvb2x9LHQuZGVmYXVsdD1kfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3Ry
aWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5B
RERfVE9ETz0iQUREX1RPRE8iLHQuREVMRVRFX1RPRE89IkRFTEVURV9UT0RPIix0LkVESVRfVE9E
Tz0iRURJVF9UT0RPIix0LkNPTVBMRVRFX1RPRE89IkNPTVBMRVRFX1RPRE8iLHQuQ09NUExFVEVf
QUxMPSJDT01QTEVURV9BTEwiLHQuQ0xFQVJfQ09NUExFVEVEPSJDTEVBUl9DT01QTEVURUQifSxm
dW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01v
ZHVsZSIse3ZhbHVlOiEwfSk7dC5TSE9XX0FMTD0ic2hvd19hbGwiLHQuU0hPV19DT01QTEVURUQ9
InNob3dfY29tcGxldGVkIix0LlNIT1dfQUNUSVZFPSJzaG93X2FjdGl2ZSJ9LGZ1bmN0aW9uKGUs
dCl7ZnVuY3Rpb24gbigpe3Rocm93IG5ldyBFcnJvcigic2V0VGltZW91dCBoYXMgbm90IGJlZW4g
ZGVmaW5lZCIpfWZ1bmN0aW9uIHIoKXt0aHJvdyBuZXcgRXJyb3IoImNsZWFyVGltZW91dCBoYXMg
bm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9uIG8oZSl7aWYobD09PXNldFRpbWVvdXQpcmV0dXJu
IHNldFRpbWVvdXQoZSwwKTtpZigobD09PW58fCFsKSYmc2V0VGltZW91dClyZXR1cm4gbD1zZXRU
aW1lb3V0LHNldFRpbWVvdXQoZSwwKTt0cnl7cmV0dXJuIGwoZSwwKX1jYXRjaCh0KXt0cnl7cmV0
dXJuIGwuY2FsbChudWxsLGUsMCl9Y2F0Y2godCl7cmV0dXJuIGwuY2FsbCh0aGlzLGUsMCl9fX1m
dW5jdGlvbiBpKGUpe2lmKHA9PT1jbGVhclRpbWVvdXQpcmV0dXJuIGNsZWFyVGltZW91dChlKTtp
ZigocD09PXJ8fCFwKSYmY2xlYXJUaW1lb3V0KXJldHVybiBwPWNsZWFyVGltZW91dCxjbGVhclRp
bWVvdXQoZSk7dHJ5e3JldHVybiBwKGUpfWNhdGNoKHQpe3RyeXtyZXR1cm4gcC5jYWxsKG51bGws
ZSk7Cit9Y2F0Y2godCl7cmV0dXJuIHAuY2FsbCh0aGlzLGUpfX19ZnVuY3Rpb24gYSgpe3YmJmYm
Jih2PSExLGYubGVuZ3RoP2g9Zi5jb25jYXQoaCk6bT0tMSxoLmxlbmd0aCYmdSgpKX1mdW5jdGlv
biB1KCl7aWYoIXYpe3ZhciBlPW8oYSk7dj0hMDtmb3IodmFyIHQ9aC5sZW5ndGg7dDspe2Zvcihm
PWgsaD1bXTsrK208dDspZiYmZlttXS5ydW4oKTttPS0xLHQ9aC5sZW5ndGh9Zj1udWxsLHY9ITEs
aShlKX19ZnVuY3Rpb24gcyhlLHQpe3RoaXMuZnVuPWUsdGhpcy5hcnJheT10fWZ1bmN0aW9uIGMo
KXt9dmFyIGwscCxkPWUuZXhwb3J0cz17fTshZnVuY3Rpb24oKXt0cnl7bD0iZnVuY3Rpb24iPT10
eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0Om59Y2F0Y2goZSl7bD1ufXRyeXtwPSJmdW5jdGlv
biI9PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJUaW1lb3V0OnJ9Y2F0Y2goZSl7cD1yfX0oKTt2
YXIgZixoPVtdLHY9ITEsbT0tMTtkLm5leHRUaWNrPWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBBcnJh
eShhcmd1bWVudHMubGVuZ3RoLTEpO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSlmb3IodmFyIG49MTtu
PGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbi0xXT1hcmd1bWVudHNbbl07aC5wdXNoKG5ldyBzKGUs
dCkpLDEhPT1oLmxlbmd0aHx8dnx8byh1KX0scy5wcm90b3R5cGUucnVuPWZ1bmN0aW9uKCl7dGhp
cy5mdW4uYXBwbHkobnVsbCx0aGlzLmFycmF5KX0sZC50aXRsZT0iYnJvd3NlciIsZC5icm93c2Vy
PSEwLGQuZW52PXt9LGQuYXJndj1bXSxkLnZlcnNpb249IiIsZC52ZXJzaW9ucz17fSxkLm9uPWMs
ZC5hZGRMaXN0ZW5lcj1jLGQub25jZT1jLGQub2ZmPWMsZC5yZW1vdmVMaXN0ZW5lcj1jLGQucmVt
b3ZlQWxsTGlzdGVuZXJzPWMsZC5lbWl0PWMsZC5iaW5kaW5nPWZ1bmN0aW9uKGUpe3Rocm93IG5l
dyBFcnJvcigicHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQiKX0sZC5jd2Q9ZnVuY3Rp
b24oKXtyZXR1cm4iLyJ9LGQuY2hkaXI9ZnVuY3Rpb24oZSl7dGhyb3cgbmV3IEVycm9yKCJwcm9j
ZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQiKX0sZC51bWFzaz1mdW5jdGlvbigpe3JldHVybiAw
fX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7fWZ1bmN0aW9uIG8o
ZSl7dHJ5e3JldHVybiBlLnRoZW59Y2F0Y2godCl7cmV0dXJuIHk9dCxnfX1mdW5jdGlvbiBpKGUs
dCl7dHJ5e3JldHVybiBlKHQpfWNhdGNoKG4pe3JldHVybiB5PW4sZ319ZnVuY3Rpb24gYShlLHQs
bil7dHJ5e2UodCxuKX1jYXRjaChyKXtyZXR1cm4geT1yLGd9fWZ1bmN0aW9uIHUoZSl7aWYoIm9i
amVjdCIhPXR5cGVvZiB0aGlzKXRocm93IG5ldyBUeXBlRXJyb3IoIlByb21pc2VzIG11c3QgYmUg
Y29uc3RydWN0ZWQgdmlhIG5ldyIpO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBU
eXBlRXJyb3IoIm5vdCBhIGZ1bmN0aW9uIik7dGhpcy5fNDU9MCx0aGlzLl84MT0wLHRoaXMuXzY1
PW51bGwsdGhpcy5fNTQ9bnVsbCxlIT09ciYmdihlLHRoaXMpfWZ1bmN0aW9uIHMoZSx0LG4pe3Jl
dHVybiBuZXcgZS5jb25zdHJ1Y3RvcihmdW5jdGlvbihvLGkpe3ZhciBhPW5ldyB1KHIpO2EudGhl
bihvLGkpLGMoZSxuZXcgaCh0LG4sYSkpfSl9ZnVuY3Rpb24gYyhlLHQpe2Zvcig7Mz09PWUuXzgx
OyllPWUuXzY1O3JldHVybiB1Ll8xMCYmdS5fMTAoZSksMD09PWUuXzgxPzA9PT1lLl80NT8oZS5f
NDU9MSx2b2lkKGUuXzU0PXQpKToxPT09ZS5fNDU/KGUuXzQ1PTIsdm9pZChlLl81ND1bZS5fNTQs
dF0pKTp2b2lkIGUuXzU0LnB1c2godCk6dm9pZCBsKGUsdCl9ZnVuY3Rpb24gbChlLHQpe20oZnVu
Y3Rpb24oKXt2YXIgbj0xPT09ZS5fODE/dC5vbkZ1bGZpbGxlZDp0Lm9uUmVqZWN0ZWQ7aWYobnVs
bD09PW4pcmV0dXJuIHZvaWQoMT09PWUuXzgxP3AodC5wcm9taXNlLGUuXzY1KTpkKHQucHJvbWlz
ZSxlLl82NSkpO3ZhciByPWkobixlLl82NSk7cj09PWc/ZCh0LnByb21pc2UseSk6cCh0LnByb21p
c2Uscil9KX1mdW5jdGlvbiBwKGUsdCl7aWYodD09PWUpcmV0dXJuIGQoZSxuZXcgVHlwZUVycm9y
KCJBIHByb21pc2UgY2Fubm90IGJlIHJlc29sdmVkIHdpdGggaXRzZWxmLiIpKTtpZih0JiYoIm9i
amVjdCI9PXR5cGVvZiB0fHwiZnVuY3Rpb24iPT10eXBlb2YgdCkpe3ZhciBuPW8odCk7aWYobj09
PWcpcmV0dXJuIGQoZSx5KTtpZihuPT09ZS50aGVuJiZ0IGluc3RhbmNlb2YgdSlyZXR1cm4gZS5f
ODE9MyxlLl82NT10LHZvaWQgZihlKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgbilyZXR1cm4gdm9p
ZCB2KG4uYmluZCh0KSxlKX1lLl84MT0xLGUuXzY1PXQsZihlKX1mdW5jdGlvbiBkKGUsdCl7ZS5f
ODE9MixlLl82NT10LHUuXzk3JiZ1Ll85NyhlLHQpLGYoZSl9ZnVuY3Rpb24gZihlKXtpZigxPT09
ZS5fNDUmJihjKGUsZS5fNTQpLGUuXzU0PW51bGwpLDI9PT1lLl80NSl7Zm9yKHZhciB0PTA7dDxl
Ll81NC5sZW5ndGg7dCsrKWMoZSxlLl81NFt0XSk7ZS5fNTQ9bnVsbH19ZnVuY3Rpb24gaChlLHQs
bil7dGhpcy5vbkZ1bGZpbGxlZD0iZnVuY3Rpb24iPT10eXBlb2YgZT9lOm51bGwsdGhpcy5vblJl
amVjdGVkPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6bnVsbCx0aGlzLnByb21pc2U9bn1mdW5jdGlv
biB2KGUsdCl7dmFyIG49ITEscj1hKGUsZnVuY3Rpb24oZSl7bnx8KG49ITAscCh0LGUpKX0sZnVu
Y3Rpb24oZSl7bnx8KG49ITAsZCh0LGUpKX0pO258fHIhPT1nfHwobj0hMCxkKHQseSkpfXZhciBt
PW4oMTk3KSx5PW51bGwsZz17fTtlLmV4cG9ydHM9dSx1Ll8xMD1udWxsLHUuXzk3PW51bGwsdS5f
NjE9cix1LnByb3RvdHlwZS50aGVuPWZ1bmN0aW9uKGUsdCl7aWYodGhpcy5jb25zdHJ1Y3RvciE9
PXUpcmV0dXJuIHModGhpcyxlLHQpO3ZhciBuPW5ldyB1KHIpO3JldHVybiBjKHRoaXMsbmV3IGgo
ZSx0LG4pKSxufX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxu
KXt0aGlzLnByb3BzPWUsdGhpcy5jb250ZXh0PXQsdGhpcy5yZWZzPWMsdGhpcy51cGRhdGVyPW58
fHN9ZnVuY3Rpb24gbyhlLHQsbil7dGhpcy5wcm9wcz1lLHRoaXMuY29udGV4dD10LHRoaXMucmVm
cz1jLHRoaXMudXBkYXRlcj1ufHxzfWZ1bmN0aW9uIGkoKXt9dmFyIGE9bigyMyksdT1uKDQpLHM9
big5MiksYz0obig5MyksbigyNCkpO24oMSksbigyMjIpO3IucHJvdG90eXBlLmlzUmVhY3RDb21w
b25lbnQ9e30sci5wcm90b3R5cGUuc2V0U3RhdGU9ZnVuY3Rpb24oZSx0KXsib2JqZWN0IiE9dHlw
ZW9mIGUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlJiZudWxsIT1lP2EoIjg1Iik6dm9pZCAwLHRoaXMu
dXBkYXRlci5lbnF1ZXVlU2V0U3RhdGUodGhpcyxlKSx0JiZ0aGlzLnVwZGF0ZXIuZW5xdWV1ZUNh
bGxiYWNrKHRoaXMsdCwic2V0U3RhdGUiKX0sci5wcm90b3R5cGUuZm9yY2VVcGRhdGU9ZnVuY3Rp
b24oZSl7dGhpcy51cGRhdGVyLmVucXVldWVGb3JjZVVwZGF0ZSh0aGlzKSxlJiZ0aGlzLnVwZGF0
ZXIuZW5xdWV1ZUNhbGxiYWNrKHRoaXMsZSwiZm9yY2VVcGRhdGUiKX07aS5wcm90b3R5cGU9ci5w
cm90b3R5cGUsby5wcm90b3R5cGU9bmV3IGksby5wcm90b3R5cGUuY29uc3RydWN0b3I9byx1KG8u
cHJvdG90eXBlLHIucHJvdG90eXBlKSxvLnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudD0h
MCxlLmV4cG9ydHM9e0NvbXBvbmVudDpyLFB1cmVDb21wb25lbnQ6b319LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1GdW5jdGlvbi5wcm90b3R5cGUudG9T
dHJpbmcsbj1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LHI9UmVnRXhwKCJeIit0LmNh
bGwobikucmVwbGFjZSgvW1xcXiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNP
d25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4q
PyIpKyIkIik7dHJ5e3ZhciBvPXQuY2FsbChlKTtyZXR1cm4gci50ZXN0KG8pfWNhdGNoKGkpe3Jl
dHVybiExfX1mdW5jdGlvbiBvKGUpe3ZhciB0PWMoZSk7aWYodCl7dmFyIG49dC5jaGlsZElEczts
KGUpLG4uZm9yRWFjaChvKX19ZnVuY3Rpb24gaShlLHQsbil7cmV0dXJuIlxuICAgIGluICIrKGV8
fCJVbmtub3duIikrKHQ/IiAoYXQgIit0LmZpbGVOYW1lLnJlcGxhY2UoL14uKltcXFwvXS8sIiIp
KyI6Iit0LmxpbmVOdW1iZXIrIikiOm4/IiAoY3JlYXRlZCBieSAiK24rIikiOiIiKX1mdW5jdGlv
biBhKGUpe3JldHVybiBudWxsPT1lPyIjZW1wdHkiOiJzdHJpbmciPT10eXBlb2YgZXx8Im51bWJl
ciI9PXR5cGVvZiBlPyIjdGV4dCI6InN0cmluZyI9PXR5cGVvZiBlLnR5cGU/ZS50eXBlOmUudHlw
ZS5kaXNwbGF5TmFtZXx8ZS50eXBlLm5hbWV8fCJVbmtub3duIn1mdW5jdGlvbiB1KGUpe3ZhciB0
LG49UC5nZXREaXNwbGF5TmFtZShlKSxyPVAuZ2V0RWxlbWVudChlKSxvPVAuZ2V0T3duZXJJRChl
KTtyZXR1cm4gbyYmKHQ9UC5nZXREaXNwbGF5TmFtZShvKSksaShuLHImJnIuX3NvdXJjZSx0KX12
YXIgcyxjLGwscCxkLGYsaCx2PW4oMjMpLG09bigxMSkseT0obigxKSxuKDIpLCJmdW5jdGlvbiI9
PXR5cGVvZiBBcnJheS5mcm9tJiYiZnVuY3Rpb24iPT10eXBlb2YgTWFwJiZyKE1hcCkmJm51bGwh
PU1hcC5wcm90b3R5cGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBNYXAucHJvdG90eXBlLmtleXMmJnIo
TWFwLnByb3RvdHlwZS5rZXlzKSYmImZ1bmN0aW9uIj09dHlwZW9mIFNldCYmcihTZXQpJiZudWxs
IT1TZXQucHJvdG90eXBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU2V0LnByb3RvdHlwZS5rZXlzJiZy
KFNldC5wcm90b3R5cGUua2V5cykpO2lmKHkpe3ZhciBnPW5ldyBNYXAsYj1uZXcgU2V0O3M9ZnVu
Y3Rpb24oZSx0KXtnLnNldChlLHQpfSxjPWZ1bmN0aW9uKGUpe3JldHVybiBnLmdldChlKX0sbD1m
dW5jdGlvbihlKXtnLmRlbGV0ZShlKX0scD1mdW5jdGlvbigpe3JldHVybiBBcnJheS5mcm9tKGcu
a2V5cygpKX0sZD1mdW5jdGlvbihlKXtiLmFkZChlKX0sZj1mdW5jdGlvbihlKXtiLmRlbGV0ZShl
KX0saD1mdW5jdGlvbigpe3JldHVybiBBcnJheS5mcm9tKGIua2V5cygpKX19ZWxzZXt2YXIgXz17
fSxDPXt9LEU9ZnVuY3Rpb24oZSl7cmV0dXJuIi4iK2V9LHc9ZnVuY3Rpb24oZSl7cmV0dXJuIHBh
cnNlSW50KGUuc3Vic3RyKDEpLDEwKX07cz1mdW5jdGlvbihlLHQpe3ZhciBuPUUoZSk7X1tuXT10
fSxjPWZ1bmN0aW9uKGUpe3ZhciB0PUUoZSk7cmV0dXJuIF9bdF19LGw9ZnVuY3Rpb24oZSl7dmFy
IHQ9RShlKTtkZWxldGUgX1t0XX0scD1mdW5jdGlvbigpe3JldHVybiBPYmplY3Qua2V5cyhfKS5t
YXAodyl9LGQ9ZnVuY3Rpb24oZSl7dmFyIHQ9RShlKTtDW3RdPSEwfSxmPWZ1bmN0aW9uKGUpe3Zh
ciB0PUUoZSk7ZGVsZXRlIENbdF19LGg9ZnVuY3Rpb24oKXtyZXR1cm4gT2JqZWN0LmtleXMoQyku
bWFwKHcpfX12YXIgVD1bXSxQPXtvblNldENoaWxkcmVuOmZ1bmN0aW9uKGUsdCl7dmFyIG49Yyhl
KTtuP3ZvaWQgMDp2KCIxNDQiKSxuLmNoaWxkSURzPXQ7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aDty
Kyspe3ZhciBvPXRbcl0saT1jKG8pO2k/dm9pZCAwOnYoIjE0MCIpLG51bGw9PWkuY2hpbGRJRHMm
JiJvYmplY3QiPT10eXBlb2YgaS5lbGVtZW50JiZudWxsIT1pLmVsZW1lbnQ/digiMTQxIik6dm9p
ZCAwLGkuaXNNb3VudGVkP3ZvaWQgMDp2KCI3MSIpLG51bGw9PWkucGFyZW50SUQmJihpLnBhcmVu
dElEPWUpLGkucGFyZW50SUQhPT1lP3YoIjE0MiIsbyxpLnBhcmVudElELGUpOnZvaWQgMH19LG9u
QmVmb3JlTW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXtlbGVtZW50OnQscGFy
ZW50SUQ6bix0ZXh0Om51bGwsY2hpbGRJRHM6W10saXNNb3VudGVkOiExLHVwZGF0ZUNvdW50OjB9
O3MoZSxyKX0sb25CZWZvcmVVcGRhdGVDb21wb25lbnQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj1jKGUp
O24mJm4uaXNNb3VudGVkJiYobi5lbGVtZW50PXQpfSxvbk1vdW50Q29tcG9uZW50OmZ1bmN0aW9u
KGUpe3ZhciB0PWMoZSk7dD92b2lkIDA6digiMTQ0IiksdC5pc01vdW50ZWQ9ITA7dmFyIG49MD09
PXQucGFyZW50SUQ7biYmZChlKX0sb25VcGRhdGVDb21wb25lbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9
YyhlKTt0JiZ0LmlzTW91bnRlZCYmdC51cGRhdGVDb3VudCsrfSxvblVubW91bnRDb21wb25lbnQ6
ZnVuY3Rpb24oZSl7dmFyIHQ9YyhlKTtpZih0KXt0LmlzTW91bnRlZD0hMTt2YXIgbj0wPT09dC5w
YXJlbnRJRDtuJiZmKGUpfVQucHVzaChlKX0scHVyZ2VVbm1vdW50ZWRDb21wb25lbnRzOmZ1bmN0
aW9uKCl7aWYoIVAuX3ByZXZlbnRQdXJnaW5nKXtmb3IodmFyIGU9MDtlPFQubGVuZ3RoO2UrKyl7
dmFyIHQ9VFtlXTtvKHQpfVQubGVuZ3RoPTB9fSxpc01vdW50ZWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9
YyhlKTtyZXR1cm4hIXQmJnQuaXNNb3VudGVkfSxnZXRDdXJyZW50U3RhY2tBZGRlbmR1bTpmdW5j
dGlvbihlKXt2YXIgdD0iIjtpZihlKXt2YXIgbj1hKGUpLHI9ZS5fb3duZXI7dCs9aShuLGUuX3Nv
dXJjZSxyJiZyLmdldE5hbWUoKSl9dmFyIG89bS5jdXJyZW50LHU9byYmby5fZGVidWdJRDtyZXR1
cm4gdCs9UC5nZXRTdGFja0FkZGVuZHVtQnlJRCh1KX0sZ2V0U3RhY2tBZGRlbmR1bUJ5SUQ6ZnVu
Y3Rpb24oZSl7Zm9yKHZhciB0PSIiO2U7KXQrPXUoZSksZT1QLmdldFBhcmVudElEKGUpO3JldHVy
biB0fSxnZXRDaGlsZElEczpmdW5jdGlvbihlKXt2YXIgdD1jKGUpO3JldHVybiB0P3QuY2hpbGRJ
RHM6W119LGdldERpc3BsYXlOYW1lOmZ1bmN0aW9uKGUpe3ZhciB0PVAuZ2V0RWxlbWVudChlKTty
ZXR1cm4gdD9hKHQpOm51bGx9LGdldEVsZW1lbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9YyhlKTtyZXR1
cm4gdD90LmVsZW1lbnQ6bnVsbH0sZ2V0T3duZXJJRDpmdW5jdGlvbihlKXt2YXIgdD1QLmdldEVs
ZW1lbnQoZSk7cmV0dXJuIHQmJnQuX293bmVyP3QuX293bmVyLl9kZWJ1Z0lEOm51bGx9LGdldFBh
cmVudElEOmZ1bmN0aW9uKGUpe3ZhciB0PWMoZSk7cmV0dXJuIHQ/dC5wYXJlbnRJRDpudWxsfSxn
ZXRTb3VyY2U6ZnVuY3Rpb24oZSl7dmFyIHQ9YyhlKSxuPXQ/dC5lbGVtZW50Om51bGwscj1udWxs
IT1uP24uX3NvdXJjZTpudWxsO3JldHVybiByfSxnZXRUZXh0OmZ1bmN0aW9uKGUpe3ZhciB0PVAu
Z2V0RWxlbWVudChlKTtyZXR1cm4ic3RyaW5nIj09dHlwZW9mIHQ/dDoibnVtYmVyIj09dHlwZW9m
IHQ/IiIrdDpudWxsfSxnZXRVcGRhdGVDb3VudDpmdW5jdGlvbihlKXt2YXIgdD1jKGUpO3JldHVy
biB0P3QudXBkYXRlQ291bnQ6MH0sZ2V0Um9vdElEczpoLGdldFJlZ2lzdGVyZWRJRHM6cCxwdXNo
Tm9uU3RhbmRhcmRXYXJuaW5nU3RhY2s6ZnVuY3Rpb24oZSx0KXtpZigiZnVuY3Rpb24iPT10eXBl
b2YgY29uc29sZS5yZWFjdFN0YWNrKXt2YXIgbj1bXSxyPW0uY3VycmVudCxvPXImJnIuX2RlYnVn
SUQ7dHJ5e2ZvcihlJiZuLnB1c2goe25hbWU6bz9QLmdldERpc3BsYXlOYW1lKG8pOm51bGwsZmls
ZU5hbWU6dD90LmZpbGVOYW1lOm51bGwsbGluZU51bWJlcjp0P3QubGluZU51bWJlcjpudWxsfSk7
bzspe3ZhciBpPVAuZ2V0RWxlbWVudChvKSxhPVAuZ2V0UGFyZW50SUQobyksdT1QLmdldE93bmVy
SUQobykscz11P1AuZ2V0RGlzcGxheU5hbWUodSk6bnVsbCxjPWkmJmkuX3NvdXJjZTtuLnB1c2go
e25hbWU6cyxmaWxlTmFtZTpjP2MuZmlsZU5hbWU6bnVsbCxsaW5lTnVtYmVyOmM/Yy5saW5lTnVt
YmVyOm51bGx9KSxvPWF9fWNhdGNoKGwpe31jb25zb2xlLnJlYWN0U3RhY2sobil9fSxwb3BOb25T
dGFuZGFyZFdhcm5pbmdTdGFjazpmdW5jdGlvbigpeyJmdW5jdGlvbiI9PXR5cGVvZiBjb25zb2xl
LnJlYWN0U3RhY2tFbmQmJmNvbnNvbGUucmVhY3RTdGFja0VuZCgpfX07ZS5leHBvcnRzPVB9LGZ1
bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciBuPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wm
JlN5bWJvbC5mb3ImJlN5bWJvbC5mb3IoInJlYWN0LmVsZW1lbnQiKXx8NjAxMDM7ZS5leHBvcnRz
PW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe312YXIgbz0o
bigyKSx7aXNNb3VudGVkOmZ1bmN0aW9uKGUpe3JldHVybiExfSxlbnF1ZXVlQ2FsbGJhY2s6ZnVu
Y3Rpb24oZSx0KXt9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbihlKXtyKGUsImZvcmNlVXBk
YXRlIil9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oZSx0KXtyKGUsInJlcGxhY2VTdGF0
ZSIpfSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oZSx0KXtyKGUsInNldFN0YXRlIil9fSk7ZS5l
eHBvcnRzPW99LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ITE7ZS5leHBvcnRz
PXJ9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oKXtmb3IodmFyIGU9YXJn
dW1lbnRzLmxlbmd0aCx0PUFycmF5KGUpLG49MDtuPGU7bisrKXRbbl09YXJndW1lbnRzW25dO3Jl
dHVybiAwPT09dC5sZW5ndGg/ZnVuY3Rpb24oZSl7cmV0dXJuIGV9OjE9PT10Lmxlbmd0aD90WzBd
OnQucmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGUodC5hcHBs
eSh2b2lkIDAsYXJndW1lbnRzKSl9fSl9dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD1ufSxmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01v
ZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIG8oZSx0LG4pe2Z1bmN0aW9uIHIoKXt5PT09bSYm
KHk9bS5zbGljZSgpKX1mdW5jdGlvbiBpKCl7cmV0dXJuIHZ9ZnVuY3Rpb24gdShlKXtpZigiZnVu
Y3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIGxpc3RlbmVyIHRvIGJl
IGEgZnVuY3Rpb24uIik7dmFyIHQ9ITA7cmV0dXJuIHIoKSx5LnB1c2goZSksZnVuY3Rpb24oKXtp
Zih0KXt0PSExLHIoKTt2YXIgbj15LmluZGV4T2YoZSk7eS5zcGxpY2UobiwxKX19fWZ1bmN0aW9u
IGwoZSl7aWYoISgwLGEuZGVmYXVsdCkoZSkpdGhyb3cgbmV3IEVycm9yKCJBY3Rpb25zIG11c3Qg
YmUgcGxhaW4gb2JqZWN0cy4gVXNlIGN1c3RvbSBtaWRkbGV3YXJlIGZvciBhc3luYyBhY3Rpb25z
LiIpO2lmKCJ1bmRlZmluZWQiPT10eXBlb2YgZS50eXBlKXRocm93IG5ldyBFcnJvcignQWN0aW9u
cyBtYXkgbm90IGhhdmUgYW4gdW5kZWZpbmVkICJ0eXBlIiBwcm9wZXJ0eS4gSGF2ZSB5b3UgbWlz
c3BlbGxlZCBhIGNvbnN0YW50PycpO2lmKGcpdGhyb3cgbmV3IEVycm9yKCJSZWR1Y2VycyBtYXkg
bm90IGRpc3BhdGNoIGFjdGlvbnMuIik7dHJ5e2c9ITAsdj1oKHYsZSl9ZmluYWxseXtnPSExfWZv
cih2YXIgdD1tPXksbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IoKX1yZXR1cm4gZX1m
dW5jdGlvbiBwKGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQgdGhlIG5leHRSZWR1Y2VyIHRvIGJlIGEgZnVuY3Rpb24uIik7aD1lLGwoe3R5cGU6Yy5J
TklUfSl9ZnVuY3Rpb24gZCgpe3ZhciBlLHQ9dTtyZXR1cm4gZT17c3Vic2NyaWJlOmZ1bmN0aW9u
KGUpe2Z1bmN0aW9uIG4oKXtlLm5leHQmJmUubmV4dChpKCkpfWlmKCJvYmplY3QiIT10eXBlb2Yg
ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJFeHBlY3RlZCB0aGUgb2JzZXJ2ZXIgdG8gYmUgYW4gb2Jq
ZWN0LiIpO24oKTt2YXIgcj10KG4pO3JldHVybnt1bnN1YnNjcmliZTpyfX19LGVbcy5kZWZhdWx0
XT1mdW5jdGlvbigpe3JldHVybiB0aGlzfSxlfXZhciBmO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0
JiYidW5kZWZpbmVkIj09dHlwZW9mIG4mJihuPXQsdD12b2lkIDApLCJ1bmRlZmluZWQiIT10eXBl
b2Ygbil7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG4pdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0
aGUgZW5oYW5jZXIgdG8gYmUgYSBmdW5jdGlvbi4iKTtyZXR1cm4gbihvKShlLHQpfWlmKCJmdW5j
dGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdGhlIHJlZHVjZXIgdG8g
YmUgYSBmdW5jdGlvbi4iKTt2YXIgaD1lLHY9dCxtPVtdLHk9bSxnPSExO3JldHVybiBsKHt0eXBl
OmMuSU5JVH0pLGY9e2Rpc3BhdGNoOmwsc3Vic2NyaWJlOnUsZ2V0U3RhdGU6aSxyZXBsYWNlUmVk
dWNlcjpwfSxmW3MuZGVmYXVsdF09ZCxmfXQuX19lc01vZHVsZT0hMCx0LkFjdGlvblR5cGVzPXZv
aWQgMCx0LmRlZmF1bHQ9bzt2YXIgaT1uKDMzKSxhPXIoaSksdT1uKDIyOCkscz1yKHUpLGM9dC5B
Y3Rpb25UeXBlcz17SU5JVDoiQEByZWR1eC9JTklUIn19LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIG4oZSl7InVuZGVmaW5lZCIhPXR5cGVvZiBjb25zb2xlJiYiZnVuY3Rpb24i
PT10eXBlb2YgY29uc29sZS5lcnJvciYmY29uc29sZS5lcnJvcihlKTt0cnl7dGhyb3cgbmV3IEVy
cm9yKGUpfWNhdGNoKHQpe319dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD1ufSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGV9ZnVuY3Rpb24gbyhlLHQs
bil7ZnVuY3Rpb24gbyhlLHQpe3ZhciBuPWcuaGFzT3duUHJvcGVydHkodCk/Z1t0XTpudWxsO0Uu
aGFzT3duUHJvcGVydHkodCkmJnMoIk9WRVJSSURFX0JBU0UiPT09biwiUmVhY3RDbGFzc0ludGVy
ZmFjZTogWW91IGFyZSBhdHRlbXB0aW5nIHRvIG92ZXJyaWRlIGAlc2AgZnJvbSB5b3VyIGNsYXNz
IHNwZWNpZmljYXRpb24uIEVuc3VyZSB0aGF0IHlvdXIgbWV0aG9kIG5hbWVzIGRvIG5vdCBvdmVy
bGFwIHdpdGggUmVhY3QgbWV0aG9kcy4iLHQpLGUmJnMoIkRFRklORV9NQU5ZIj09PW58fCJERUZJ
TkVfTUFOWV9NRVJHRUQiPT09biwiUmVhY3RDbGFzc0ludGVyZmFjZTogWW91IGFyZSBhdHRlbXB0
aW5nIHRvIGRlZmluZSBgJXNgIG9uIHlvdXIgY29tcG9uZW50IG1vcmUgdGhhbiBvbmNlLiBUaGlz
IGNvbmZsaWN0IG1heSBiZSBkdWUgdG8gYSBtaXhpbi4iLHQpfWZ1bmN0aW9uIGkoZSxuKXtpZihu
KXtzKCJmdW5jdGlvbiIhPXR5cGVvZiBuLCJSZWFjdENsYXNzOiBZb3UncmUgYXR0ZW1wdGluZyB0
byB1c2UgYSBjb21wb25lbnQgY2xhc3Mgb3IgZnVuY3Rpb24gYXMgYSBtaXhpbi4gSW5zdGVhZCwg
anVzdCB1c2UgYSByZWd1bGFyIG9iamVjdC4iKSxzKCF0KG4pLCJSZWFjdENsYXNzOiBZb3UncmUg
YXR0ZW1wdGluZyB0byB1c2UgYSBjb21wb25lbnQgYXMgYSBtaXhpbi4gSW5zdGVhZCwganVzdCB1
c2UgYSByZWd1bGFyIG9iamVjdC4iKTt2YXIgcj1lLnByb3RvdHlwZSxpPXIuX19yZWFjdEF1dG9C
aW5kUGFpcnM7bi5oYXNPd25Qcm9wZXJ0eShjKSYmYi5taXhpbnMoZSxuLm1peGlucyk7Zm9yKHZh
ciBhIGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eShhKSYmYSE9PWMpe3ZhciB1PW5bYV0sbD1yLmhh
c093blByb3BlcnR5KGEpO2lmKG8obCxhKSxiLmhhc093blByb3BlcnR5KGEpKWJbYV0oZSx1KTtl
bHNle3ZhciBwPWcuaGFzT3duUHJvcGVydHkoYSksaD0iZnVuY3Rpb24iPT10eXBlb2YgdSx2PWgm
JiFwJiYhbCYmbi5hdXRvYmluZCE9PSExO2lmKHYpaS5wdXNoKGEsdSksclthXT11O2Vsc2UgaWYo
bCl7dmFyIG09Z1thXTtzKHAmJigiREVGSU5FX01BTllfTUVSR0VEIj09PW18fCJERUZJTkVfTUFO
WSI9PT1tKSwiUmVhY3RDbGFzczogVW5leHBlY3RlZCBzcGVjIHBvbGljeSAlcyBmb3Iga2V5ICVz
IHdoZW4gbWl4aW5nIGluIGNvbXBvbmVudCBzcGVjcy4iLG0sYSksIkRFRklORV9NQU5ZX01FUkdF
RCI9PT1tP3JbYV09ZChyW2FdLHUpOiJERUZJTkVfTUFOWSI9PT1tJiYoclthXT1mKHJbYV0sdSkp
fWVsc2UgclthXT11fX19ZWxzZTt9ZnVuY3Rpb24gbChlLHQpe2lmKHQpZm9yKHZhciBuIGluIHQp
e3ZhciByPXRbbl07aWYodC5oYXNPd25Qcm9wZXJ0eShuKSl7dmFyIG89biBpbiBiO3MoIW8sJ1Jl
YWN0Q2xhc3M6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBkZWZpbmUgYSByZXNlcnZlZCBwcm9wZXJ0
eSwgYCVzYCwgdGhhdCBzaG91bGRuXCd0IGJlIG9uIHRoZSAic3RhdGljcyIga2V5LiBEZWZpbmUg
aXQgYXMgYW4gaW5zdGFuY2UgcHJvcGVydHkgaW5zdGVhZDsgaXQgd2lsbCBzdGlsbCBiZSBhY2Nl
c3NpYmxlIG9uIHRoZSBjb25zdHJ1Y3Rvci4nLG4pO3ZhciBpPW4gaW4gZTtzKCFpLCJSZWFjdENs
YXNzOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gZGVmaW5lIGAlc2Agb24geW91ciBjb21wb25lbnQg
bW9yZSB0aGFuIG9uY2UuIFRoaXMgY29uZmxpY3QgbWF5IGJlIGR1ZSB0byBhIG1peGluLiIsbiks
ZVtuXT1yfX19ZnVuY3Rpb24gcChlLHQpe3MoZSYmdCYmIm9iamVjdCI9PXR5cGVvZiBlJiYib2Jq
ZWN0Ij09dHlwZW9mIHQsIm1lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMoKTogQ2Fubm90IG1l
cmdlIG5vbi1vYmplY3RzLiIpO2Zvcih2YXIgbiBpbiB0KXQuaGFzT3duUHJvcGVydHkobikmJihz
KHZvaWQgMD09PWVbbl0sIm1lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMoKTogVHJpZWQgdG8g
bWVyZ2UgdHdvIG9iamVjdHMgd2l0aCB0aGUgc2FtZSBrZXk6IGAlc2AuIFRoaXMgY29uZmxpY3Qg
bWF5IGJlIGR1ZSB0byBhIG1peGluOyBpbiBwYXJ0aWN1bGFyLCB0aGlzIG1heSBiZSBjYXVzZWQg
YnkgdHdvIGdldEluaXRpYWxTdGF0ZSgpIG9yIGdldERlZmF1bHRQcm9wcygpIG1ldGhvZHMgcmV0
dXJuaW5nIG9iamVjdHMgd2l0aCBjbGFzaGluZyBrZXlzLiIsbiksZVtuXT10W25dKTtyZXR1cm4g
ZX1mdW5jdGlvbiBkKGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0aGlzLGFy
Z3VtZW50cykscj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZihudWxsPT1uKXJldHVybiByO2lm
KG51bGw9PXIpcmV0dXJuIG47dmFyIG89e307cmV0dXJuIHAobyxuKSxwKG8sciksb319ZnVuY3Rp
b24gZihlLHQpe3JldHVybiBmdW5jdGlvbigpe2UuYXBwbHkodGhpcyxhcmd1bWVudHMpLHQuYXBw
bHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBoKGUsdCl7dmFyIG49dC5iaW5kKGUpO3JldHVy
biBufWZ1bmN0aW9uIHYoZSl7Zm9yKHZhciB0PWUuX19yZWFjdEF1dG9CaW5kUGFpcnMsbj0wO248
dC5sZW5ndGg7bis9Mil7dmFyIHI9dFtuXSxvPXRbbisxXTtlW3JdPWgoZSxvKX19ZnVuY3Rpb24g
bShlKXt2YXIgdD1yKGZ1bmN0aW9uKGUscixvKXt0aGlzLl9fcmVhY3RBdXRvQmluZFBhaXJzLmxl
bmd0aCYmdih0aGlzKSx0aGlzLnByb3BzPWUsdGhpcy5jb250ZXh0PXIsdGhpcy5yZWZzPXUsdGhp
cy51cGRhdGVyPW98fG4sdGhpcy5zdGF0ZT1udWxsO3ZhciBpPXRoaXMuZ2V0SW5pdGlhbFN0YXRl
P3RoaXMuZ2V0SW5pdGlhbFN0YXRlKCk6bnVsbDtzKCJvYmplY3QiPT10eXBlb2YgaSYmIUFycmF5
LmlzQXJyYXkoaSksIiVzLmdldEluaXRpYWxTdGF0ZSgpOiBtdXN0IHJldHVybiBhbiBvYmplY3Qg
b3IgbnVsbCIsdC5kaXNwbGF5TmFtZXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50IiksdGhpcy5z
dGF0ZT1pfSk7dC5wcm90b3R5cGU9bmV3IHcsdC5wcm90b3R5cGUuY29uc3RydWN0b3I9dCx0LnBy
b3RvdHlwZS5fX3JlYWN0QXV0b0JpbmRQYWlycz1bXSx5LmZvckVhY2goaS5iaW5kKG51bGwsdCkp
LGkodCxfKSxpKHQsZSksaSh0LEMpLHQuZ2V0RGVmYXVsdFByb3BzJiYodC5kZWZhdWx0UHJvcHM9
dC5nZXREZWZhdWx0UHJvcHMoKSkscyh0LnByb3RvdHlwZS5yZW5kZXIsImNyZWF0ZUNsYXNzKC4u
Lik6IENsYXNzIHNwZWNpZmljYXRpb24gbXVzdCBpbXBsZW1lbnQgYSBgcmVuZGVyYCBtZXRob2Qu
Iik7Zm9yKHZhciBvIGluIGcpdC5wcm90b3R5cGVbb118fCh0LnByb3RvdHlwZVtvXT1udWxsKTty
ZXR1cm4gdH12YXIgeT1bXSxnPXttaXhpbnM6IkRFRklORV9NQU5ZIixzdGF0aWNzOiJERUZJTkVf
TUFOWSIscHJvcFR5cGVzOiJERUZJTkVfTUFOWSIsY29udGV4dFR5cGVzOiJERUZJTkVfTUFOWSIs
Y2hpbGRDb250ZXh0VHlwZXM6IkRFRklORV9NQU5ZIixnZXREZWZhdWx0UHJvcHM6IkRFRklORV9N
QU5ZX01FUkdFRCIsZ2V0SW5pdGlhbFN0YXRlOiJERUZJTkVfTUFOWV9NRVJHRUQiLGdldENoaWxk
Q29udGV4dDoiREVGSU5FX01BTllfTUVSR0VEIixyZW5kZXI6IkRFRklORV9PTkNFIixjb21wb25l
bnRXaWxsTW91bnQ6IkRFRklORV9NQU5ZIixjb21wb25lbnREaWRNb3VudDoiREVGSU5FX01BTlki
LGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM6IkRFRklORV9NQU5ZIixzaG91bGRDb21wb25lbnRV
cGRhdGU6IkRFRklORV9PTkNFIixjb21wb25lbnRXaWxsVXBkYXRlOiJERUZJTkVfTUFOWSIsY29t
cG9uZW50RGlkVXBkYXRlOiJERUZJTkVfTUFOWSIsY29tcG9uZW50V2lsbFVubW91bnQ6IkRFRklO
RV9NQU5ZIix1cGRhdGVDb21wb25lbnQ6Ik9WRVJSSURFX0JBU0UifSxiPXtkaXNwbGF5TmFtZTpm
dW5jdGlvbihlLHQpe2UuZGlzcGxheU5hbWU9dH0sbWl4aW5zOmZ1bmN0aW9uKGUsdCl7aWYodClm
b3IodmFyIG49MDtuPHQubGVuZ3RoO24rKylpKGUsdFtuXSl9LGNoaWxkQ29udGV4dFR5cGVzOmZ1
bmN0aW9uKGUsdCl7ZS5jaGlsZENvbnRleHRUeXBlcz1hKHt9LGUuY2hpbGRDb250ZXh0VHlwZXMs
dCl9LGNvbnRleHRUeXBlczpmdW5jdGlvbihlLHQpe2UuY29udGV4dFR5cGVzPWEoe30sZS5jb250
ZXh0VHlwZXMsdCl9LGdldERlZmF1bHRQcm9wczpmdW5jdGlvbihlLHQpe2UuZ2V0RGVmYXVsdFBy
b3BzP2UuZ2V0RGVmYXVsdFByb3BzPWQoZS5nZXREZWZhdWx0UHJvcHMsdCk6ZS5nZXREZWZhdWx0
UHJvcHM9dH0scHJvcFR5cGVzOmZ1bmN0aW9uKGUsdCl7ZS5wcm9wVHlwZXM9YSh7fSxlLnByb3BU
eXBlcyx0KX0sc3RhdGljczpmdW5jdGlvbihlLHQpe2woZSx0KX0sYXV0b2JpbmQ6ZnVuY3Rpb24o
KXt9fSxfPXtjb21wb25lbnREaWRNb3VudDpmdW5jdGlvbigpe3RoaXMuX19pc01vdW50ZWQ9ITB9
fSxDPXtjb21wb25lbnRXaWxsVW5tb3VudDpmdW5jdGlvbigpe3RoaXMuX19pc01vdW50ZWQ9ITF9
fSxFPXtyZXBsYWNlU3RhdGU6ZnVuY3Rpb24oZSx0KXt0aGlzLnVwZGF0ZXIuZW5xdWV1ZVJlcGxh
Y2VTdGF0ZSh0aGlzLGUsdCl9LGlzTW91bnRlZDpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5fX2lz
TW91bnRlZH19LHc9ZnVuY3Rpb24oKXt9O3JldHVybiBhKHcucHJvdG90eXBlLGUucHJvdG90eXBl
LEUpLG19dmFyIGksYT1uKDQpLHU9bigyNCkscz1uKDEpLGM9Im1peGlucyI7aT17fSxlLmV4cG9y
dHM9b30sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXtyZXR1cm4gZS5y
ZXBsYWNlKHIsZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC50b1VwcGVyQ2FzZSgpfSl9dmFyIHI9Ly0o
LikvZztlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUpe3JldHVybiBvKGUucmVwbGFjZShpLCJtcy0iKSl9dmFyIG89big5OCksaT0vXi1tcy0vO2Uu
ZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXty
ZXR1cm4hKCFlfHwhdCkmJihlPT09dHx8IW8oZSkmJihvKHQpP3IoZSx0LnBhcmVudE5vZGUpOiJj
b250YWlucyJpbiBlP2UuY29udGFpbnModCk6ISFlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYh
ISgxNiZlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKHQpKSkpfXZhciBvPW4oMTA4KTtlLmV4cG9y
dHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PWUu
bGVuZ3RoO2lmKEFycmF5LmlzQXJyYXkoZSl8fCJvYmplY3QiIT10eXBlb2YgZSYmImZ1bmN0aW9u
IiE9dHlwZW9mIGU/YSghMSk6dm9pZCAwLCJudW1iZXIiIT10eXBlb2YgdD9hKCExKTp2b2lkIDAs
MD09PXR8fHQtMSBpbiBlP3ZvaWQgMDphKCExKSwiZnVuY3Rpb24iPT10eXBlb2YgZS5jYWxsZWU/
YSghMSk6dm9pZCAwLGUuaGFzT3duUHJvcGVydHkpdHJ5e3JldHVybiBBcnJheS5wcm90b3R5cGUu
c2xpY2UuY2FsbChlKX1jYXRjaChuKXt9Zm9yKHZhciByPUFycmF5KHQpLG89MDtvPHQ7bysrKXJb
b109ZVtvXTtyZXR1cm4gcn1mdW5jdGlvbiBvKGUpe3JldHVybiEhZSYmKCJvYmplY3QiPT10eXBl
b2YgZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGUpJiYibGVuZ3RoImluIGUmJiEoInNldEludGVydmFs
ImluIGUpJiYibnVtYmVyIiE9dHlwZW9mIGUubm9kZVR5cGUmJihBcnJheS5pc0FycmF5KGUpfHwi
Y2FsbGVlImluIGV8fCJpdGVtImluIGUpfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIG8oZSk/QXJyYXku
aXNBcnJheShlKT9lLnNsaWNlKCk6cihlKTpbZV19dmFyIGE9bigxKTtlLmV4cG9ydHM9aX0sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PWUubWF0Y2gobCk7
cmV0dXJuIHQmJnRbMV0udG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBvKGUsdCl7dmFyIG49YztjP3Zv
aWQgMDpzKCExKTt2YXIgbz1yKGUpLGk9byYmdShvKTtpZihpKXtuLmlubmVySFRNTD1pWzFdK2Ur
aVsyXTtmb3IodmFyIGw9aVswXTtsLS07KW49bi5sYXN0Q2hpbGR9ZWxzZSBuLmlubmVySFRNTD1l
O3ZhciBwPW4uZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpO3AubGVuZ3RoJiYodD92b2lk
IDA6cyghMSksYShwKS5mb3JFYWNoKHQpKTtmb3IodmFyIGQ9QXJyYXkuZnJvbShuLmNoaWxkTm9k
ZXMpO24ubGFzdENoaWxkOyluLnJlbW92ZUNoaWxkKG4ubGFzdENoaWxkKTtyZXR1cm4gZH12YXIg
aT1uKDYpLGE9bigxMDEpLHU9bigxMDMpLHM9bigxKSxjPWkuY2FuVXNlRE9NP2RvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOm51bGwsbD0vXlxzKjwoXHcrKS87ZS5leHBvcnRzPW99LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gYT92b2lkIDA6aSgh
MSksZC5oYXNPd25Qcm9wZXJ0eShlKXx8KGU9IioiKSx1Lmhhc093blByb3BlcnR5KGUpfHwoIioi
PT09ZT9hLmlubmVySFRNTD0iPGxpbmsgLz4iOmEuaW5uZXJIVE1MPSI8IitlKyI+PC8iK2UrIj4i
LHVbZV09IWEuZmlyc3RDaGlsZCksdVtlXT9kW2VdOm51bGx9dmFyIG89big2KSxpPW4oMSksYT1v
LmNhblVzZURPTT9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTpudWxsLHU9e30scz1bMSwn
PHNlbGVjdCBtdWx0aXBsZT0idHJ1ZSI+JywiPC9zZWxlY3Q+Il0sYz1bMSwiPHRhYmxlPiIsIjwv
dGFibGU+Il0sbD1bMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+
Il0scD1bMSwnPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPicsIjwvc3Zn
PiJdLGQ9eyIqIjpbMSwiPzxkaXY+IiwiPC9kaXY+Il0sYXJlYTpbMSwiPG1hcD4iLCI8L21hcD4i
XSxjb2w6WzIsIjx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48
L3RhYmxlPiJdLGxlZ2VuZDpbMSwiPGZpZWxkc2V0PiIsIjwvZmllbGRzZXQ+Il0scGFyYW06WzEs
IjxvYmplY3Q+IiwiPC9vYmplY3Q+Il0sdHI6WzIsIjx0YWJsZT48dGJvZHk+IiwiPC90Ym9keT48
L3RhYmxlPiJdLG9wdGdyb3VwOnMsb3B0aW9uOnMsY2FwdGlvbjpjLGNvbGdyb3VwOmMsdGJvZHk6
Yyx0Zm9vdDpjLHRoZWFkOmMsdGQ6bCx0aDpsfSxmPVsiY2lyY2xlIiwiY2xpcFBhdGgiLCJkZWZz
IiwiZWxsaXBzZSIsImciLCJpbWFnZSIsImxpbmUiLCJsaW5lYXJHcmFkaWVudCIsIm1hc2siLCJw
YXRoIiwicGF0dGVybiIsInBvbHlnb24iLCJwb2x5bGluZSIsInJhZGlhbEdyYWRpZW50IiwicmVj
dCIsInN0b3AiLCJ0ZXh0IiwidHNwYW4iXTtmLmZvckVhY2goZnVuY3Rpb24oZSl7ZFtlXT1wLHVb
ZV09ITB9KSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
bihlKXtyZXR1cm4gZS5XaW5kb3cmJmUgaW5zdGFuY2VvZiBlLldpbmRvdz97eDplLnBhZ2VYT2Zm
c2V0fHxlLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0LHk6ZS5wYWdlWU9mZnNl
dHx8ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wfTp7eDplLnNjcm9sbExlZnQs
eTplLnNjcm9sbFRvcH19ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIG4oZSl7cmV0dXJuIGUucmVwbGFjZShyLCItJDEiKS50b0xvd2VyQ2FzZSgpfXZhciBy
PS8oW0EtWl0pL2c7ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlKXtyZXR1cm4gbyhlKS5yZXBsYWNlKGksIi1tcy0iKX12YXIgbz1uKDEwNSksaT0v
Xm1zLS87ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4o
ZSl7dmFyIHQ9ZT9lLm93bmVyRG9jdW1lbnR8fGU6ZG9jdW1lbnQsbj10LmRlZmF1bHRWaWV3fHx3
aW5kb3c7cmV0dXJuISghZXx8ISgiZnVuY3Rpb24iPT10eXBlb2Ygbi5Ob2RlP2UgaW5zdGFuY2Vv
ZiBuLk5vZGU6Im9iamVjdCI9PXR5cGVvZiBlJiYibnVtYmVyIj09dHlwZW9mIGUubm9kZVR5cGUm
JiJzdHJpbmciPT10eXBlb2YgZS5ub2RlTmFtZSkpfWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIG8oZSkmJjM9PWUubm9kZVR5cGV9
dmFyIG89bigxMDcpO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiBuKGUpe3ZhciB0PXt9O3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gdC5oYXNPd25Qcm9w
ZXJ0eShuKXx8KHRbbl09ZS5jYWxsKHRoaXMsbikpLHRbbl19fWUuZXhwb3J0cz1ufSxmdW5jdGlv
bihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17Y2hpbGRDb250ZXh0VHlwZXM6ITAsY29udGV4dFR5
cGVzOiEwLGRlZmF1bHRQcm9wczohMCxkaXNwbGF5TmFtZTohMCxnZXREZWZhdWx0UHJvcHM6ITAs
bWl4aW5zOiEwLHByb3BUeXBlczohMCx0eXBlOiEwfSxyPXtuYW1lOiEwLGxlbmd0aDohMCxwcm90
b3R5cGU6ITAsY2FsbGVyOiEwLGNhbGxlZTohMCxhcmd1bWVudHM6ITAsYXJpdHk6ITB9LG89T2Jq
ZWN0LmdldE93blByb3BlcnR5U3ltYm9scyxpPShPYmplY3QucHJvdG90eXBlLmhhc093blByb3Bl
cnR5LE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUpLGE9T2JqZWN0LmdldFBy
b3RvdHlwZU9mLHU9YSYmYShPYmplY3QpLHM9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXM7ZS5l
eHBvcnRzPWZ1bmN0aW9uIGUodCxjLGwpe2lmKCJzdHJpbmciIT10eXBlb2YgYyl7aWYodSl7dmFy
IHA9YShjKTtwJiZwIT09dSYmZSh0LHAsbCl9dmFyIGQ9cyhjKTtvJiYoZD1kLmNvbmNhdChvKGMp
KSk7Zm9yKHZhciBmPTA7ZjxkLmxlbmd0aDsrK2Ype3ZhciBoPWRbZl07aWYoIShuW2hdfHxyW2hd
fHxsJiZsW2hdKSYmKGkuY2FsbChjLGgpfHwiZnVuY3Rpb24iPT10eXBlb2YgY1toXSkpdHJ5e3Rb
aF09Y1toXX1jYXRjaCh2KXt9fXJldHVybiB0fXJldHVybiB0fX0sZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0Ijt2YXIgcj1mdW5jdGlvbihlLHQsbixyLG8saSxhLHUpe2lmKCFlKXt2YXIgcztp
Zih2b2lkIDA9PT10KXM9bmV3IEVycm9yKCJNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVz
ZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgdGhlIGZ1bGwgZXJyb3IgbWVz
c2FnZSBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiIpO2Vsc2V7dmFyIGM9W24scixv
LGksYSx1XSxsPTA7cz1uZXcgRXJyb3IodC5yZXBsYWNlKC8lcy9nLGZ1bmN0aW9uKCl7cmV0dXJu
IGNbbCsrXX0pKSxzLm5hbWU9IkludmFyaWFudCBWaW9sYXRpb24ifXRocm93IHMuZnJhbWVzVG9Q
b3A9MSxzfX07ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUpe3JldHVy
biBudWxsPT1lP3ZvaWQgMD09PWU/czp1OmMmJmMgaW4gT2JqZWN0KGUpP2koZSk6YShlKX12YXIg
bz1uKDU0KSxpPW4oMTE1KSxhPW4oMTE2KSx1PSJbb2JqZWN0IE51bGxdIixzPSJbb2JqZWN0IFVu
ZGVmaW5lZF0iLGM9bz9vLnRvU3RyaW5nVGFnOnZvaWQgMDtlLmV4cG9ydHM9cn0sZnVuY3Rpb24o
ZSx0KXsoZnVuY3Rpb24odCl7dmFyIG49Im9iamVjdCI9PXR5cGVvZiB0JiZ0JiZ0Lk9iamVjdD09
PU9iamVjdCYmdDtlLmV4cG9ydHM9bn0pLmNhbGwodCxmdW5jdGlvbigpe3JldHVybiB0aGlzfSgp
KX0sZnVuY3Rpb24oZSx0LG4pe3ZhciByPW4oMTE3KSxvPXIoT2JqZWN0LmdldFByb3RvdHlwZU9m
LE9iamVjdCk7ZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCxuKXtmdW5jdGlvbiByKGUpe3ZhciB0
PWEuY2FsbChlLHMpLG49ZVtzXTt0cnl7ZVtzXT12b2lkIDA7dmFyIHI9ITB9Y2F0Y2gobyl7fXZh
ciBpPXUuY2FsbChlKTtyZXR1cm4gciYmKHQ/ZVtzXT1uOmRlbGV0ZSBlW3NdKSxpfXZhciBvPW4o
NTQpLGk9T2JqZWN0LnByb3RvdHlwZSxhPWkuaGFzT3duUHJvcGVydHksdT1pLnRvU3RyaW5nLHM9
bz9vLnRvU3RyaW5nVGFnOnZvaWQgMDtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0KXtmdW5jdGlv
biBuKGUpe3JldHVybiBvLmNhbGwoZSl9dmFyIHI9T2JqZWN0LnByb3RvdHlwZSxvPXIudG9TdHJp
bmc7ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbihlLHQpe3JldHVybiBmdW5j
dGlvbihuKXtyZXR1cm4gZSh0KG4pKX19ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXt2YXIg
cj1uKDExMyksbz0ib2JqZWN0Ij09dHlwZW9mIHNlbGYmJnNlbGYmJnNlbGYuT2JqZWN0PT09T2Jq
ZWN0JiZzZWxmLGk9cnx8b3x8RnVuY3Rpb24oInJldHVybiB0aGlzIikoKTtlLmV4cG9ydHM9aX0s
ZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBuKGUpe3JldHVybiBudWxsIT1lJiYib2JqZWN0Ij09dHlw
ZW9mIGV9ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlLHQsbixyLG8pe31lLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2
YXIgcj1uKDcpLG89bigxKSxpPW4oNTcpO2UuZXhwb3J0cz1mdW5jdGlvbigpe2Z1bmN0aW9uIGUo
ZSx0LG4scixhLHUpe3UhPT1pJiZvKCExLCJDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRp
cmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiBVc2Ug
UHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiBSZWFkIG1vcmUgYXQgaHR0
cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzIil9ZnVuY3Rpb24gdCgpe3JldHVybiBlfWUu
aXNSZXF1aXJlZD1lO3ZhciBuPXthcnJheTplLGJvb2w6ZSxmdW5jOmUsbnVtYmVyOmUsb2JqZWN0
OmUsc3RyaW5nOmUsc3ltYm9sOmUsYW55OmUsYXJyYXlPZjp0LGVsZW1lbnQ6ZSxpbnN0YW5jZU9m
OnQsbm9kZTplLG9iamVjdE9mOnQsb25lT2Y6dCxvbmVPZlR5cGU6dCxzaGFwZTp0fTtyZXR1cm4g
bi5jaGVja1Byb3BUeXBlcz1yLG4uUHJvcFR5cGVzPW4sbn19LGZ1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7dmFyIHI9big3KSxvPW4oMSksaT1uKDIpLGE9big1NyksdT1uKDEyMCk7ZS5leHBv
cnRzPWZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbihlKXt2YXIgdD1lJiYoTyYmZVtPXXx8ZVtTXSk7
aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJuIHR9ZnVuY3Rpb24gcyhlLHQpe3JldHVybiBl
PT09dD8wIT09ZXx8MS9lPT09MS90OmUhPT1lJiZ0IT09dH1mdW5jdGlvbiBjKGUpe3RoaXMubWVz
c2FnZT1lLHRoaXMuc3RhY2s9IiJ9ZnVuY3Rpb24gbChlKXtmdW5jdGlvbiBuKG4scixpLHUscyxs
LHApe2lmKHU9dXx8ayxsPWx8fGkscCE9PWEpaWYodClvKCExLCJDYWxsaW5nIFByb3BUeXBlcyB2
YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBw
YWNrYWdlLiBVc2UgYFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpYCB0byBjYWxsIHRoZW0uIFJl
YWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMiKTtlbHNlO3JldHVy
biBudWxsPT1yW2ldP24/bmV3IGMobnVsbD09PXJbaV0/IlRoZSAiK3MrIiBgIitsKyJgIGlzIG1h
cmtlZCBhcyByZXF1aXJlZCAiKygiaW4gYCIrdSsiYCwgYnV0IGl0cyB2YWx1ZSBpcyBgbnVsbGAu
Iik6IlRoZSAiK3MrIiBgIitsKyJgIGlzIG1hcmtlZCBhcyByZXF1aXJlZCBpbiAiKygiYCIrdSsi
YCwgYnV0IGl0cyB2YWx1ZSBpcyBgdW5kZWZpbmVkYC4iKSk6bnVsbDplKHIsaSx1LHMsbCl9dmFy
IHI9bi5iaW5kKG51bGwsITEpO3JldHVybiByLmlzUmVxdWlyZWQ9bi5iaW5kKG51bGwsITApLHJ9
ZnVuY3Rpb24gcChlKXtmdW5jdGlvbiB0KHQsbixyLG8saSxhKXt2YXIgdT10W25dLHM9dyh1KTtp
ZihzIT09ZSl7dmFyIGw9VCh1KTtyZXR1cm4gbmV3IGMoIkludmFsaWQgIitvKyIgYCIraSsiYCBv
ZiB0eXBlICIrKCJgIitsKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkICIpKygiYCIr
ZSsiYC4iKSl9cmV0dXJuIG51bGx9cmV0dXJuIGwodCl9ZnVuY3Rpb24gZCgpe3JldHVybiBsKHIu
dGhhdFJldHVybnNOdWxsKX1mdW5jdGlvbiBmKGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxpKXtpZigi
ZnVuY3Rpb24iIT10eXBlb2YgZSlyZXR1cm4gbmV3IGMoIlByb3BlcnR5IGAiK2krImAgb2YgY29t
cG9uZW50IGAiK3IrImAgaGFzIGludmFsaWQgUHJvcFR5cGUgbm90YXRpb24gaW5zaWRlIGFycmF5
T2YuIik7dmFyIHU9dFtuXTtpZighQXJyYXkuaXNBcnJheSh1KSl7dmFyIHM9dyh1KTtyZXR1cm4g
bmV3IGMoIkludmFsaWQgIitvKyIgYCIraSsiYCBvZiB0eXBlICIrKCJgIitzKyJgIHN1cHBsaWVk
IHRvIGAiK3IrImAsIGV4cGVjdGVkIGFuIGFycmF5LiIpKX1mb3IodmFyIGw9MDtsPHUubGVuZ3Ro
O2wrKyl7dmFyIHA9ZSh1LGwscixvLGkrIlsiK2wrIl0iLGEpO2lmKHAgaW5zdGFuY2VvZiBFcnJv
cilyZXR1cm4gcH1yZXR1cm4gbnVsbH1yZXR1cm4gbCh0KX1mdW5jdGlvbiBoKCl7ZnVuY3Rpb24g
dCh0LG4scixvLGkpe3ZhciBhPXRbbl07aWYoIWUoYSkpe3ZhciB1PXcoYSk7cmV0dXJuIG5ldyBj
KCJJbnZhbGlkICIrbysiIGAiK2krImAgb2YgdHlwZSAiKygiYCIrdSsiYCBzdXBwbGllZCB0byBg
IityKyJgLCBleHBlY3RlZCBhIHNpbmdsZSBSZWFjdEVsZW1lbnQuIikpfXJldHVybiBudWxsfXJl
dHVybiBsKHQpfWZ1bmN0aW9uIHYoZSl7ZnVuY3Rpb24gdCh0LG4scixvLGkpe2lmKCEodFtuXWlu
c3RhbmNlb2YgZSkpe3ZhciBhPWUubmFtZXx8ayx1PXgodFtuXSk7cmV0dXJuIG5ldyBjKCJJbnZh
bGlkICIrbysiIGAiK2krImAgb2YgdHlwZSAiKygiYCIrdSsiYCBzdXBwbGllZCB0byBgIityKyJg
LCBleHBlY3RlZCAiKSsoImluc3RhbmNlIG9mIGAiK2ErImAuIikpfXJldHVybiBudWxsfXJldHVy
biBsKHQpfWZ1bmN0aW9uIG0oZSl7ZnVuY3Rpb24gdCh0LG4scixvLGkpe2Zvcih2YXIgYT10W25d
LHU9MDt1PGUubGVuZ3RoO3UrKylpZihzKGEsZVt1XSkpcmV0dXJuIG51bGw7dmFyIGw9SlNPTi5z
dHJpbmdpZnkoZSk7cmV0dXJuIG5ldyBjKCJJbnZhbGlkICIrbysiIGAiK2krImAgb2YgdmFsdWUg
YCIrYSsiYCAiKygic3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgb25lIG9mICIrbCsiLiIp
KX1yZXR1cm4gQXJyYXkuaXNBcnJheShlKT9sKHQpOnIudGhhdFJldHVybnNOdWxsfWZ1bmN0aW9u
IHkoZSl7ZnVuY3Rpb24gdCh0LG4scixvLGkpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXJldHVy
biBuZXcgYygiUHJvcGVydHkgYCIraSsiYCBvZiBjb21wb25lbnQgYCIrcisiYCBoYXMgaW52YWxp
ZCBQcm9wVHlwZSBub3RhdGlvbiBpbnNpZGUgb2JqZWN0T2YuIik7dmFyIHU9dFtuXSxzPXcodSk7
aWYoIm9iamVjdCIhPT1zKXJldHVybiBuZXcgYygiSW52YWxpZCAiK28rIiBgIitpKyJgIG9mIHR5
cGUgIisoImAiK3MrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgYW4gb2JqZWN0LiIp
KTtmb3IodmFyIGwgaW4gdSlpZih1Lmhhc093blByb3BlcnR5KGwpKXt2YXIgcD1lKHUsbCxyLG8s
aSsiLiIrbCxhKTtpZihwIGluc3RhbmNlb2YgRXJyb3IpcmV0dXJuIHB9cmV0dXJuIG51bGx9cmV0
dXJuIGwodCl9ZnVuY3Rpb24gZyhlKXtmdW5jdGlvbiB0KHQsbixyLG8saSl7Zm9yKHZhciB1PTA7
dTxlLmxlbmd0aDt1Kyspe3ZhciBzPWVbdV07aWYobnVsbD09cyh0LG4scixvLGksYSkpcmV0dXJu
IG51bGx9cmV0dXJuIG5ldyBjKCJJbnZhbGlkICIrbysiIGAiK2krImAgc3VwcGxpZWQgdG8gIiso
ImAiK3IrImAuIikpfWlmKCFBcnJheS5pc0FycmF5KGUpKXJldHVybiByLnRoYXRSZXR1cm5zTnVs
bDtmb3IodmFyIG49MDtuPGUubGVuZ3RoO24rKyl7dmFyIG89ZVtuXTtpZigiZnVuY3Rpb24iIT10
eXBlb2YgbylyZXR1cm4gaSghMSwiSW52YWxpZCBhcmd1bWVudCBzdXBwbGlkIHRvIG9uZU9mVHlw
ZS4gRXhwZWN0ZWQgYW4gYXJyYXkgb2YgY2hlY2sgZnVuY3Rpb25zLCBidXQgcmVjZWl2ZWQgJXMg
YXQgaW5kZXggJXMuIixQKG8pLG4pLHIudGhhdFJldHVybnNOdWxsfXJldHVybiBsKHQpfWZ1bmN0
aW9uIGIoKXtmdW5jdGlvbiBlKGUsdCxuLHIsbyl7cmV0dXJuIEMoZVt0XSk/bnVsbDpuZXcgYygi
SW52YWxpZCAiK3IrIiBgIitvKyJgIHN1cHBsaWVkIHRvICIrKCJgIituKyJgLCBleHBlY3RlZCBh
IFJlYWN0Tm9kZS4iKSl9cmV0dXJuIGwoZSl9ZnVuY3Rpb24gXyhlKXtmdW5jdGlvbiB0KHQsbixy
LG8saSl7dmFyIHU9dFtuXSxzPXcodSk7aWYoIm9iamVjdCIhPT1zKXJldHVybiBuZXcgYygiSW52
YWxpZCAiK28rIiBgIitpKyJgIG9mIHR5cGUgYCIrcysiYCAiKygic3VwcGxpZWQgdG8gYCIrcisi
YCwgZXhwZWN0ZWQgYG9iamVjdGAuIikpO2Zvcih2YXIgbCBpbiBlKXt2YXIgcD1lW2xdO2lmKHAp
e3ZhciBkPXAodSxsLHIsbyxpKyIuIitsLGEpO2lmKGQpcmV0dXJuIGR9fXJldHVybiBudWxsfXJl
dHVybiBsKHQpfWZ1bmN0aW9uIEModCl7c3dpdGNoKHR5cGVvZiB0KXtjYXNlIm51bWJlciI6Y2Fz
ZSJzdHJpbmciOmNhc2UidW5kZWZpbmVkIjpyZXR1cm4hMDtjYXNlImJvb2xlYW4iOnJldHVybiF0
O2Nhc2Uib2JqZWN0IjppZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0LmV2ZXJ5KEMpO2lmKG51
bGw9PT10fHxlKHQpKXJldHVybiEwO3ZhciByPW4odCk7aWYoIXIpcmV0dXJuITE7dmFyIG8saT1y
LmNhbGwodCk7aWYociE9PXQuZW50cmllcyl7Zm9yKDshKG89aS5uZXh0KCkpLmRvbmU7KWlmKCFD
KG8udmFsdWUpKXJldHVybiExfWVsc2UgZm9yKDshKG89aS5uZXh0KCkpLmRvbmU7KXt2YXIgYT1v
LnZhbHVlO2lmKGEmJiFDKGFbMV0pKXJldHVybiExfXJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9
fWZ1bmN0aW9uIEUoZSx0KXtyZXR1cm4ic3ltYm9sIj09PWV8fCgiU3ltYm9sIj09PXRbIkBAdG9T
dHJpbmdUYWciXXx8ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdCBpbnN0YW5jZW9mIFN5bWJv
bCl9ZnVuY3Rpb24gdyhlKXt2YXIgdD10eXBlb2YgZTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8i
YXJyYXkiOmUgaW5zdGFuY2VvZiBSZWdFeHA/Im9iamVjdCI6RSh0LGUpPyJzeW1ib2wiOnR9ZnVu
Y3Rpb24gVChlKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIGV8fG51bGw9PT1lKXJldHVybiIiK2U7
dmFyIHQ9dyhlKTtpZigib2JqZWN0Ij09PXQpe2lmKGUgaW5zdGFuY2VvZiBEYXRlKXJldHVybiJk
YXRlIjtpZihlIGluc3RhbmNlb2YgUmVnRXhwKXJldHVybiJyZWdleHAifXJldHVybiB0fWZ1bmN0
aW9uIFAoZSl7dmFyIHQ9VChlKTtzd2l0Y2godCl7Y2FzZSJhcnJheSI6Y2FzZSJvYmplY3QiOnJl
dHVybiJhbiAiK3Q7Y2FzZSJib29sZWFuIjpjYXNlImRhdGUiOmNhc2UicmVnZXhwIjpyZXR1cm4i
YSAiK3Q7ZGVmYXVsdDpyZXR1cm4gdH19ZnVuY3Rpb24geChlKXtyZXR1cm4gZS5jb25zdHJ1Y3Rv
ciYmZS5jb25zdHJ1Y3Rvci5uYW1lP2UuY29uc3RydWN0b3IubmFtZTprfXZhciBPPSJmdW5jdGlv
biI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcixTPSJAQGl0ZXJhdG9yIixrPSI8PGFu
b255bW91cz4+IixNPXthcnJheTpwKCJhcnJheSIpLGJvb2w6cCgiYm9vbGVhbiIpLGZ1bmM6cCgi
ZnVuY3Rpb24iKSxudW1iZXI6cCgibnVtYmVyIiksb2JqZWN0OnAoIm9iamVjdCIpLHN0cmluZzpw
KCJzdHJpbmciKSxzeW1ib2w6cCgic3ltYm9sIiksYW55OmQoKSxhcnJheU9mOmYsZWxlbWVudDpo
KCksaW5zdGFuY2VPZjp2LG5vZGU6YigpLG9iamVjdE9mOnksb25lT2Y6bSxvbmVPZlR5cGU6Zyxz
aGFwZTpffTtyZXR1cm4gYy5wcm90b3R5cGU9RXJyb3IucHJvdG90eXBlLE0uY2hlY2tQcm9wVHlw
ZXM9dSxNLlByb3BUeXBlcz1NLE19fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2UuZXhw
b3J0cz1uKDEzNyl9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXtQcm9wZXJ0aWVz
OnsiYXJpYS1jdXJyZW50IjowLCJhcmlhLWRldGFpbHMiOjAsImFyaWEtZGlzYWJsZWQiOjAsImFy
aWEtaGlkZGVuIjowLCJhcmlhLWludmFsaWQiOjAsImFyaWEta2V5c2hvcnRjdXRzIjowLCJhcmlh
LWxhYmVsIjowLCJhcmlhLXJvbGVkZXNjcmlwdGlvbiI6MCwiYXJpYS1hdXRvY29tcGxldGUiOjAs
ImFyaWEtY2hlY2tlZCI6MCwiYXJpYS1leHBhbmRlZCI6MCwiYXJpYS1oYXNwb3B1cCI6MCwiYXJp
YS1sZXZlbCI6MCwiYXJpYS1tb2RhbCI6MCwiYXJpYS1tdWx0aWxpbmUiOjAsImFyaWEtbXVsdGlz
ZWxlY3RhYmxlIjowLCJhcmlhLW9yaWVudGF0aW9uIjowLCJhcmlhLXBsYWNlaG9sZGVyIjowLCJh
cmlhLXByZXNzZWQiOjAsImFyaWEtcmVhZG9ubHkiOjAsImFyaWEtcmVxdWlyZWQiOjAsImFyaWEt
c2VsZWN0ZWQiOjAsImFyaWEtc29ydCI6MCwiYXJpYS12YWx1ZW1heCI6MCwiYXJpYS12YWx1ZW1p
biI6MCwiYXJpYS12YWx1ZW5vdyI6MCwiYXJpYS12YWx1ZXRleHQiOjAsImFyaWEtYXRvbWljIjow
LCJhcmlhLWJ1c3kiOjAsImFyaWEtbGl2ZSI6MCwiYXJpYS1yZWxldmFudCI6MCwiYXJpYS1kcm9w
ZWZmZWN0IjowLCJhcmlhLWdyYWJiZWQiOjAsImFyaWEtYWN0aXZlZGVzY2VuZGFudCI6MCwiYXJp
YS1jb2xjb3VudCI6MCwiYXJpYS1jb2xpbmRleCI6MCwiYXJpYS1jb2xzcGFuIjowLCJhcmlhLWNv
bnRyb2xzIjowLCJhcmlhLWRlc2NyaWJlZGJ5IjowLCJhcmlhLWVycm9ybWVzc2FnZSI6MCwiYXJp
YS1mbG93dG8iOjAsImFyaWEtbGFiZWxsZWRieSI6MCwiYXJpYS1vd25zIjowLCJhcmlhLXBvc2lu
c2V0IjowLCJhcmlhLXJvd2NvdW50IjowLCJhcmlhLXJvd2luZGV4IjowLCJhcmlhLXJvd3NwYW4i
OjAsImFyaWEtc2V0c2l6ZSI6MH0sRE9NQXR0cmlidXRlTmFtZXM6e30sRE9NUHJvcGVydHlOYW1l
czp7fX07ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big1
KSxvPW4oNTIpLGk9e2ZvY3VzRE9NQ29tcG9uZW50OmZ1bmN0aW9uKCl7byhyLmdldE5vZGVGcm9t
SW5zdGFuY2UodGhpcykpfX07ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcigpe3ZhciBlPXdpbmRvdy5vcGVyYTtyZXR1cm4ib2JqZWN0Ij09dHlwZW9m
IGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnZlcnNpb24mJnBhcnNlSW50KGUudmVyc2lvbigpLDEw
KTw9MTJ9ZnVuY3Rpb24gbyhlKXtyZXR1cm4oZS5jdHJsS2V5fHxlLmFsdEtleXx8ZS5tZXRhS2V5
KSYmIShlLmN0cmxLZXkmJmUuYWx0S2V5KX1mdW5jdGlvbiBpKGUpe3N3aXRjaChlKXtjYXNlInRv
cENvbXBvc2l0aW9uU3RhcnQiOnJldHVybiB4LmNvbXBvc2l0aW9uU3RhcnQ7Y2FzZSJ0b3BDb21w
b3NpdGlvbkVuZCI6cmV0dXJuIHguY29tcG9zaXRpb25FbmQ7Y2FzZSJ0b3BDb21wb3NpdGlvblVw
ZGF0ZSI6cmV0dXJuIHguY29tcG9zaXRpb25VcGRhdGV9fWZ1bmN0aW9uIGEoZSx0KXtyZXR1cm4i
dG9wS2V5RG93biI9PT1lJiZ0LmtleUNvZGU9PT1ifWZ1bmN0aW9uIHUoZSx0KXtzd2l0Y2goZSl7
Y2FzZSJ0b3BLZXlVcCI6cmV0dXJuIGcuaW5kZXhPZih0LmtleUNvZGUpIT09LTE7Y2FzZSJ0b3BL
ZXlEb3duIjpyZXR1cm4gdC5rZXlDb2RlIT09YjtjYXNlInRvcEtleVByZXNzIjpjYXNlInRvcE1v
dXNlRG93biI6Y2FzZSJ0b3BCbHVyIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlv
biBzKGUpe3ZhciB0PWUuZGV0YWlsO3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYmImRhdGEiaW4g
dD90LmRhdGE6bnVsbH1mdW5jdGlvbiBjKGUsdCxuLHIpe3ZhciBvLGM7aWYoXz9vPWkoZSk6Uz91
KGUsbikmJihvPXguY29tcG9zaXRpb25FbmQpOmEoZSxuKSYmKG89eC5jb21wb3NpdGlvblN0YXJ0
KSwhbylyZXR1cm4gbnVsbDt3JiYoU3x8byE9PXguY29tcG9zaXRpb25TdGFydD9vPT09eC5jb21w
b3NpdGlvbkVuZCYmUyYmKGM9Uy5nZXREYXRhKCkpOlM9di5nZXRQb29sZWQocikpO3ZhciBsPW0u
Z2V0UG9vbGVkKG8sdCxuLHIpO2lmKGMpbC5kYXRhPWM7ZWxzZXt2YXIgcD1zKG4pO251bGwhPT1w
JiYobC5kYXRhPXApfXJldHVybiBmLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMobCksbH1m
dW5jdGlvbiBsKGUsdCl7c3dpdGNoKGUpe2Nhc2UidG9wQ29tcG9zaXRpb25FbmQiOnJldHVybiBz
KHQpO2Nhc2UidG9wS2V5UHJlc3MiOnZhciBuPXQud2hpY2g7cmV0dXJuIG4hPT1UP251bGw6KE89
ITAsUCk7Y2FzZSJ0b3BUZXh0SW5wdXQiOnZhciByPXQuZGF0YTtyZXR1cm4gcj09PVAmJk8/bnVs
bDpyO2RlZmF1bHQ6cmV0dXJuIG51bGx9fWZ1bmN0aW9uIHAoZSx0KXtpZihTKXtpZigidG9wQ29t
cG9zaXRpb25FbmQiPT09ZXx8IV8mJnUoZSx0KSl7dmFyIG49Uy5nZXREYXRhKCk7cmV0dXJuIHYu
cmVsZWFzZShTKSxTPW51bGwsbn1yZXR1cm4gbnVsbH1zd2l0Y2goZSl7Y2FzZSJ0b3BQYXN0ZSI6
cmV0dXJuIG51bGw7Y2FzZSJ0b3BLZXlQcmVzcyI6cmV0dXJuIHQud2hpY2gmJiFvKHQpP1N0cmlu
Zy5mcm9tQ2hhckNvZGUodC53aGljaCk6bnVsbDtjYXNlInRvcENvbXBvc2l0aW9uRW5kIjpyZXR1
cm4gdz9udWxsOnQuZGF0YTtkZWZhdWx0OnJldHVybiBudWxsfX1mdW5jdGlvbiBkKGUsdCxuLHIp
e3ZhciBvO2lmKG89RT9sKGUsbik6cChlLG4pLCFvKXJldHVybiBudWxsO3ZhciBpPXkuZ2V0UG9v
bGVkKHguYmVmb3JlSW5wdXQsdCxuLHIpO3JldHVybiBpLmRhdGE9byxmLmFjY3VtdWxhdGVUd29Q
aGFzZURpc3BhdGNoZXMoaSksaX12YXIgZj1uKDIwKSxoPW4oNiksdj1uKDEzMiksbT1uKDE2OSks
eT1uKDE3MiksZz1bOSwxMywyNywzMl0sYj0yMjksXz1oLmNhblVzZURPTSYmIkNvbXBvc2l0aW9u
RXZlbnQiaW4gd2luZG93LEM9bnVsbDtoLmNhblVzZURPTSYmImRvY3VtZW50TW9kZSJpbiBkb2N1
bWVudCYmKEM9ZG9jdW1lbnQuZG9jdW1lbnRNb2RlKTt2YXIgRT1oLmNhblVzZURPTSYmIlRleHRF
dmVudCJpbiB3aW5kb3cmJiFDJiYhcigpLHc9aC5jYW5Vc2VET00mJighX3x8QyYmQz44JiZDPD0x
MSksVD0zMixQPVN0cmluZy5mcm9tQ2hhckNvZGUoVCkseD17YmVmb3JlSW5wdXQ6e3BoYXNlZFJl
Z2lzdHJhdGlvbk5hbWVzOntidWJibGVkOiJvbkJlZm9yZUlucHV0IixjYXB0dXJlZDoib25CZWZv
cmVJbnB1dENhcHR1cmUifSxkZXBlbmRlbmNpZXM6WyJ0b3BDb21wb3NpdGlvbkVuZCIsInRvcEtl
eVByZXNzIiwidG9wVGV4dElucHV0IiwidG9wUGFzdGUiXX0sY29tcG9zaXRpb25FbmQ6e3BoYXNl
ZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOiJvbkNvbXBvc2l0aW9uRW5kIixjYXB0dXJlZDoi
b25Db21wb3NpdGlvbkVuZENhcHR1cmUifSxkZXBlbmRlbmNpZXM6WyJ0b3BCbHVyIiwidG9wQ29t
cG9zaXRpb25FbmQiLCJ0b3BLZXlEb3duIiwidG9wS2V5UHJlc3MiLCJ0b3BLZXlVcCIsInRvcE1v
dXNlRG93biJdfSxjb21wb3NpdGlvblN0YXJ0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnVi
YmxlZDoib25Db21wb3NpdGlvblN0YXJ0IixjYXB0dXJlZDoib25Db21wb3NpdGlvblN0YXJ0Q2Fw
dHVyZSJ9LGRlcGVuZGVuY2llczpbInRvcEJsdXIiLCJ0b3BDb21wb3NpdGlvblN0YXJ0IiwidG9w
S2V5RG93biIsInRvcEtleVByZXNzIiwidG9wS2V5VXAiLCJ0b3BNb3VzZURvd24iXX0sY29tcG9z
aXRpb25VcGRhdGU6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOiJvbkNvbXBvc2l0
aW9uVXBkYXRlIixjYXB0dXJlZDoib25Db21wb3NpdGlvblVwZGF0ZUNhcHR1cmUifSxkZXBlbmRl
bmNpZXM6WyJ0b3BCbHVyIiwidG9wQ29tcG9zaXRpb25VcGRhdGUiLCJ0b3BLZXlEb3duIiwidG9w
S2V5UHJlc3MiLCJ0b3BLZXlVcCIsInRvcE1vdXNlRG93biJdfX0sTz0hMSxTPW51bGwsaz17ZXZl
bnRUeXBlczp4LGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuW2MoZSx0LG4s
ciksZChlLHQsbixyKV19fTtlLmV4cG9ydHM9a30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
Ijt2YXIgcj1uKDU4KSxvPW4oNiksaT0obig4KSxuKDk5KSxuKDE3OCkpLGE9bigxMDYpLHU9bigx
MDkpLHM9KG4oMiksdShmdW5jdGlvbihlKXtyZXR1cm4gYShlKX0pKSxjPSExLGw9ImNzc0Zsb2F0
IjtpZihvLmNhblVzZURPTSl7dmFyIHA9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5
bGU7dHJ5e3AuZm9udD0iIn1jYXRjaChkKXtjPSEwfXZvaWQgMD09PWRvY3VtZW50LmRvY3VtZW50
RWxlbWVudC5zdHlsZS5jc3NGbG9hdCYmKGw9InN0eWxlRmxvYXQiKX12YXIgZj17Y3JlYXRlTWFy
a3VwRm9yU3R5bGVzOmZ1bmN0aW9uKGUsdCl7dmFyIG49IiI7Zm9yKHZhciByIGluIGUpaWYoZS5o
YXNPd25Qcm9wZXJ0eShyKSl7dmFyIG89MD09PXIuaW5kZXhPZigiLS0iKSxhPWVbcl07bnVsbCE9
YSYmKG4rPXMocikrIjoiLG4rPWkocixhLHQsbykrIjsiKX1yZXR1cm4gbnx8bnVsbH0sc2V0VmFs
dWVGb3JTdHlsZXM6ZnVuY3Rpb24oZSx0LG4pe3ZhciBvPWUuc3R5bGU7Zm9yKHZhciBhIGluIHQp
aWYodC5oYXNPd25Qcm9wZXJ0eShhKSl7dmFyIHU9MD09PWEuaW5kZXhPZigiLS0iKSxzPWkoYSx0
W2FdLG4sdSk7aWYoImZsb2F0IiE9PWEmJiJjc3NGbG9hdCIhPT1hfHwoYT1sKSx1KW8uc2V0UHJv
cGVydHkoYSxzKTtlbHNlIGlmKHMpb1thXT1zO2Vsc2V7dmFyIHA9YyYmci5zaG9ydGhhbmRQcm9w
ZXJ0eUV4cGFuc2lvbnNbYV07aWYocClmb3IodmFyIGQgaW4gcClvW2RdPSIiO2Vsc2Ugb1thXT0i
In19fX07ZS5leHBvcnRzPWZ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlLHQsbil7dmFyIHI9eC5nZXRQb29sZWQoTi5jaGFuZ2UsZSx0LG4pO3JldHVybiByLnR5cGU9
ImNoYW5nZSIsRS5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKHIpLHJ9ZnVuY3Rpb24gbyhl
KXt2YXIgdD1lLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuInNlbGVj
dCI9PT10fHwiaW5wdXQiPT09dCYmImZpbGUiPT09ZS50eXBlfWZ1bmN0aW9uIGkoZSl7dmFyIHQ9
cihSLGUsUyhlKSk7UC5iYXRjaGVkVXBkYXRlcyhhLHQpfWZ1bmN0aW9uIGEoZSl7Qy5lbnF1ZXVl
RXZlbnRzKGUpLEMucHJvY2Vzc0V2ZW50UXVldWUoITEpfWZ1bmN0aW9uIHUoZSx0KXtJPWUsUj10
LEkuYXR0YWNoRXZlbnQoIm9uY2hhbmdlIixpKX1mdW5jdGlvbiBzKCl7SSYmKEkuZGV0YWNoRXZl
bnQoIm9uY2hhbmdlIixpKSxJPW51bGwsUj1udWxsKX1mdW5jdGlvbiBjKGUsdCl7dmFyIG49Ty51
cGRhdGVWYWx1ZUlmQ2hhbmdlZChlKSxyPXQuc2ltdWxhdGVkPT09ITAmJmouX2FsbG93U2ltdWxh
dGVkUGFzc1Rocm91Z2g7aWYobnx8cilyZXR1cm4gZX1mdW5jdGlvbiBsKGUsdCl7aWYoInRvcENo
YW5nZSI9PT1lKXJldHVybiB0fWZ1bmN0aW9uIHAoZSx0LG4peyJ0b3BGb2N1cyI9PT1lPyhzKCks
dSh0LG4pKToidG9wQmx1ciI9PT1lJiZzKCl9ZnVuY3Rpb24gZChlLHQpe0k9ZSxSPXQsSS5hdHRh
Y2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIsaCl9ZnVuY3Rpb24gZigpe0kmJihJLmRldGFjaEV2
ZW50KCJvbnByb3BlcnR5Y2hhbmdlIixoKSxJPW51bGwsUj1udWxsKX1mdW5jdGlvbiBoKGUpeyJ2
YWx1ZSI9PT1lLnByb3BlcnR5TmFtZSYmYyhSLGUpJiZpKGUpfWZ1bmN0aW9uIHYoZSx0LG4peyJ0
b3BGb2N1cyI9PT1lPyhmKCksZCh0LG4pKToidG9wQmx1ciI9PT1lJiZmKCl9ZnVuY3Rpb24gbShl
LHQsbil7aWYoInRvcFNlbGVjdGlvbkNoYW5nZSI9PT1lfHwidG9wS2V5VXAiPT09ZXx8InRvcEtl
eURvd24iPT09ZSlyZXR1cm4gYyhSLG4pfWZ1bmN0aW9uIHkoZSl7Cit2YXIgdD1lLm5vZGVOYW1l
O3JldHVybiB0JiYiaW5wdXQiPT09dC50b0xvd2VyQ2FzZSgpJiYoImNoZWNrYm94Ij09PWUudHlw
ZXx8InJhZGlvIj09PWUudHlwZSl9ZnVuY3Rpb24gZyhlLHQsbil7aWYoInRvcENsaWNrIj09PWUp
cmV0dXJuIGModCxuKX1mdW5jdGlvbiBiKGUsdCxuKXtpZigidG9wSW5wdXQiPT09ZXx8InRvcENo
YW5nZSI9PT1lKXJldHVybiBjKHQsbil9ZnVuY3Rpb24gXyhlLHQpe2lmKG51bGwhPWUpe3ZhciBu
PWUuX3dyYXBwZXJTdGF0ZXx8dC5fd3JhcHBlclN0YXRlO2lmKG4mJm4uY29udHJvbGxlZCYmIm51
bWJlciI9PT10LnR5cGUpe3ZhciByPSIiK3QudmFsdWU7dC5nZXRBdHRyaWJ1dGUoInZhbHVlIikh
PT1yJiZ0LnNldEF0dHJpYnV0ZSgidmFsdWUiLHIpfX19dmFyIEM9bigxOSksRT1uKDIwKSx3PW4o
NiksVD1uKDUpLFA9big5KSx4PW4oMTApLE89big3NCksUz1uKDQ2KSxrPW4oNDcpLE09big3Niks
Tj17Y2hhbmdlOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDoib25DaGFuZ2UiLGNh
cHR1cmVkOiJvbkNoYW5nZUNhcHR1cmUifSxkZXBlbmRlbmNpZXM6WyJ0b3BCbHVyIiwidG9wQ2hh
bmdlIiwidG9wQ2xpY2siLCJ0b3BGb2N1cyIsInRvcElucHV0IiwidG9wS2V5RG93biIsInRvcEtl
eVVwIiwidG9wU2VsZWN0aW9uQ2hhbmdlIl19fSxJPW51bGwsUj1udWxsLEE9ITE7dy5jYW5Vc2VE
T00mJihBPWsoImNoYW5nZSIpJiYoIWRvY3VtZW50LmRvY3VtZW50TW9kZXx8ZG9jdW1lbnQuZG9j
dW1lbnRNb2RlPjgpKTt2YXIgRD0hMTt3LmNhblVzZURPTSYmKEQ9aygiaW5wdXQiKSYmKCEoImRv
Y3VtZW50TW9kZSJpbiBkb2N1bWVudCl8fGRvY3VtZW50LmRvY3VtZW50TW9kZT45KSk7dmFyIGo9
e2V2ZW50VHlwZXM6TixfYWxsb3dTaW11bGF0ZWRQYXNzVGhyb3VnaDohMCxfaXNJbnB1dEV2ZW50
U3VwcG9ydGVkOkQsZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbixpKXt2YXIgYSx1LHM9dD9U
LmdldE5vZGVGcm9tSW5zdGFuY2UodCk6d2luZG93O2lmKG8ocyk/QT9hPWw6dT1wOk0ocyk/RD9h
PWI6KGE9bSx1PXYpOnkocykmJihhPWcpLGEpe3ZhciBjPWEoZSx0LG4pO2lmKGMpe3ZhciBkPXIo
YyxuLGkpO3JldHVybiBkfX11JiZ1KGUscyx0KSwidG9wQmx1ciI9PT1lJiZfKHQscyl9fTtlLmV4
cG9ydHM9an0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDMpLG89bigxNCks
aT1uKDYpLGE9bigxMDIpLHU9big3KSxzPShuKDEpLHtkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0
aE1hcmt1cDpmdW5jdGlvbihlLHQpe2lmKGkuY2FuVXNlRE9NP3ZvaWQgMDpyKCI1NiIpLHQ/dm9p
ZCAwOnIoIjU3IiksIkhUTUwiPT09ZS5ub2RlTmFtZT9yKCI1OCIpOnZvaWQgMCwic3RyaW5nIj09
dHlwZW9mIHQpe3ZhciBuPWEodCx1KVswXTtlLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKG4sZSl9
ZWxzZSBvLnJlcGxhY2VDaGlsZFdpdGhUcmVlKGUsdCl9fSk7ZS5leHBvcnRzPXN9LGZ1bmN0aW9u
KGUsdCl7InVzZSBzdHJpY3QiO3ZhciBuPVsiUmVzcG9uZGVyRXZlbnRQbHVnaW4iLCJTaW1wbGVF
dmVudFBsdWdpbiIsIlRhcEV2ZW50UGx1Z2luIiwiRW50ZXJMZWF2ZUV2ZW50UGx1Z2luIiwiQ2hh
bmdlRXZlbnRQbHVnaW4iLCJTZWxlY3RFdmVudFBsdWdpbiIsIkJlZm9yZUlucHV0RXZlbnRQbHVn
aW4iXTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDIw
KSxvPW4oNSksaT1uKDI2KSxhPXttb3VzZUVudGVyOntyZWdpc3RyYXRpb25OYW1lOiJvbk1vdXNl
RW50ZXIiLGRlcGVuZGVuY2llczpbInRvcE1vdXNlT3V0IiwidG9wTW91c2VPdmVyIl19LG1vdXNl
TGVhdmU6e3JlZ2lzdHJhdGlvbk5hbWU6Im9uTW91c2VMZWF2ZSIsZGVwZW5kZW5jaWVzOlsidG9w
TW91c2VPdXQiLCJ0b3BNb3VzZU92ZXIiXX19LHU9e2V2ZW50VHlwZXM6YSxleHRyYWN0RXZlbnRz
OmZ1bmN0aW9uKGUsdCxuLHUpe2lmKCJ0b3BNb3VzZU92ZXIiPT09ZSYmKG4ucmVsYXRlZFRhcmdl
dHx8bi5mcm9tRWxlbWVudCkpcmV0dXJuIG51bGw7aWYoInRvcE1vdXNlT3V0IiE9PWUmJiJ0b3BN
b3VzZU92ZXIiIT09ZSlyZXR1cm4gbnVsbDt2YXIgcztpZih1LndpbmRvdz09PXUpcz11O2Vsc2V7
dmFyIGM9dS5vd25lckRvY3VtZW50O3M9Yz9jLmRlZmF1bHRWaWV3fHxjLnBhcmVudFdpbmRvdzp3
aW5kb3d9dmFyIGwscDtpZigidG9wTW91c2VPdXQiPT09ZSl7bD10O3ZhciBkPW4ucmVsYXRlZFRh
cmdldHx8bi50b0VsZW1lbnQ7cD1kP28uZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUoZCk6bnVs
bH1lbHNlIGw9bnVsbCxwPXQ7aWYobD09PXApcmV0dXJuIG51bGw7dmFyIGY9bnVsbD09bD9zOm8u
Z2V0Tm9kZUZyb21JbnN0YW5jZShsKSxoPW51bGw9PXA/czpvLmdldE5vZGVGcm9tSW5zdGFuY2Uo
cCksdj1pLmdldFBvb2xlZChhLm1vdXNlTGVhdmUsbCxuLHUpO3YudHlwZT0ibW91c2VsZWF2ZSIs
di50YXJnZXQ9Zix2LnJlbGF0ZWRUYXJnZXQ9aDt2YXIgbT1pLmdldFBvb2xlZChhLm1vdXNlRW50
ZXIscCxuLHUpO3JldHVybiBtLnR5cGU9Im1vdXNlZW50ZXIiLG0udGFyZ2V0PWgsbS5yZWxhdGVk
VGFyZ2V0PWYsci5hY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXModixtLGwscCksW3YsbV19
fTtlLmV4cG9ydHM9dX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUp
e3RoaXMuX3Jvb3Q9ZSx0aGlzLl9zdGFydFRleHQ9dGhpcy5nZXRUZXh0KCksdGhpcy5fZmFsbGJh
Y2tUZXh0PW51bGx9dmFyIG89big0KSxpPW4oMTMpLGE9big3Myk7byhyLnByb3RvdHlwZSx7ZGVz
dHJ1Y3RvcjpmdW5jdGlvbigpe3RoaXMuX3Jvb3Q9bnVsbCx0aGlzLl9zdGFydFRleHQ9bnVsbCx0
aGlzLl9mYWxsYmFja1RleHQ9bnVsbH0sZ2V0VGV4dDpmdW5jdGlvbigpe3JldHVybiJ2YWx1ZSJp
biB0aGlzLl9yb290P3RoaXMuX3Jvb3QudmFsdWU6dGhpcy5fcm9vdFthKCldfSxnZXREYXRhOmZ1
bmN0aW9uKCl7aWYodGhpcy5fZmFsbGJhY2tUZXh0KXJldHVybiB0aGlzLl9mYWxsYmFja1RleHQ7
dmFyIGUsdCxuPXRoaXMuX3N0YXJ0VGV4dCxyPW4ubGVuZ3RoLG89dGhpcy5nZXRUZXh0KCksaT1v
Lmxlbmd0aDtmb3IoZT0wO2U8ciYmbltlXT09PW9bZV07ZSsrKTt2YXIgYT1yLWU7Zm9yKHQ9MTt0
PD1hJiZuW3ItdF09PT1vW2ktdF07dCsrKTt2YXIgdT10PjE/MS10OnZvaWQgMDtyZXR1cm4gdGhp
cy5fZmFsbGJhY2tUZXh0PW8uc2xpY2UoZSx1KSx0aGlzLl9mYWxsYmFja1RleHR9fSksaS5hZGRQ
b29saW5nVG8ociksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFy
IHI9bigxNSksbz1yLmluamVjdGlvbi5NVVNUX1VTRV9QUk9QRVJUWSxpPXIuaW5qZWN0aW9uLkhB
U19CT09MRUFOX1ZBTFVFLGE9ci5pbmplY3Rpb24uSEFTX05VTUVSSUNfVkFMVUUsdT1yLmluamVj
dGlvbi5IQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSxzPXIuaW5qZWN0aW9uLkhBU19PVkVSTE9B
REVEX0JPT0xFQU5fVkFMVUUsYz17aXNDdXN0b21BdHRyaWJ1dGU6UmVnRXhwLnByb3RvdHlwZS50
ZXN0LmJpbmQobmV3IFJlZ0V4cCgiXihkYXRhfGFyaWEpLVsiK3IuQVRUUklCVVRFX05BTUVfQ0hB
UisiXSokIikpLFByb3BlcnRpZXM6e2FjY2VwdDowLGFjY2VwdENoYXJzZXQ6MCxhY2Nlc3NLZXk6
MCxhY3Rpb246MCxhbGxvd0Z1bGxTY3JlZW46aSxhbGxvd1RyYW5zcGFyZW5jeTowLGFsdDowLGFz
OjAsYXN5bmM6aSxhdXRvQ29tcGxldGU6MCxhdXRvUGxheTppLGNhcHR1cmU6aSxjZWxsUGFkZGlu
ZzowLGNlbGxTcGFjaW5nOjAsY2hhclNldDowLGNoYWxsZW5nZTowLGNoZWNrZWQ6b3xpLGNpdGU6
MCxjbGFzc0lEOjAsY2xhc3NOYW1lOjAsY29sczp1LGNvbFNwYW46MCxjb250ZW50OjAsY29udGVu
dEVkaXRhYmxlOjAsY29udGV4dE1lbnU6MCxjb250cm9sczppLGNvb3JkczowLGNyb3NzT3JpZ2lu
OjAsZGF0YTowLGRhdGVUaW1lOjAsZGVmYXVsdDppLGRlZmVyOmksZGlyOjAsZGlzYWJsZWQ6aSxk
b3dubG9hZDpzLGRyYWdnYWJsZTowLGVuY1R5cGU6MCxmb3JtOjAsZm9ybUFjdGlvbjowLGZvcm1F
bmNUeXBlOjAsZm9ybU1ldGhvZDowLGZvcm1Ob1ZhbGlkYXRlOmksZm9ybVRhcmdldDowLGZyYW1l
Qm9yZGVyOjAsaGVhZGVyczowLGhlaWdodDowLGhpZGRlbjppLGhpZ2g6MCxocmVmOjAsaHJlZkxh
bmc6MCxodG1sRm9yOjAsaHR0cEVxdWl2OjAsaWNvbjowLGlkOjAsaW5wdXRNb2RlOjAsaW50ZWdy
aXR5OjAsaXM6MCxrZXlQYXJhbXM6MCxrZXlUeXBlOjAsa2luZDowLGxhYmVsOjAsbGFuZzowLGxp
c3Q6MCxsb29wOmksbG93OjAsbWFuaWZlc3Q6MCxtYXJnaW5IZWlnaHQ6MCxtYXJnaW5XaWR0aDow
LG1heDowLG1heExlbmd0aDowLG1lZGlhOjAsbWVkaWFHcm91cDowLG1ldGhvZDowLG1pbjowLG1p
bkxlbmd0aDowLG11bHRpcGxlOm98aSxtdXRlZDpvfGksbmFtZTowLG5vbmNlOjAsbm9WYWxpZGF0
ZTppLG9wZW46aSxvcHRpbXVtOjAscGF0dGVybjowLHBsYWNlaG9sZGVyOjAscGxheXNJbmxpbmU6
aSxwb3N0ZXI6MCxwcmVsb2FkOjAscHJvZmlsZTowLHJhZGlvR3JvdXA6MCxyZWFkT25seTppLHJl
ZmVycmVyUG9saWN5OjAscmVsOjAscmVxdWlyZWQ6aSxyZXZlcnNlZDppLHJvbGU6MCxyb3dzOnUs
cm93U3BhbjphLHNhbmRib3g6MCxzY29wZTowLHNjb3BlZDppLHNjcm9sbGluZzowLHNlYW1sZXNz
Omksc2VsZWN0ZWQ6b3xpLHNoYXBlOjAsc2l6ZTp1LHNpemVzOjAsc3Bhbjp1LHNwZWxsQ2hlY2s6
MCxzcmM6MCxzcmNEb2M6MCxzcmNMYW5nOjAsc3JjU2V0OjAsc3RhcnQ6YSxzdGVwOjAsc3R5bGU6
MCxzdW1tYXJ5OjAsdGFiSW5kZXg6MCx0YXJnZXQ6MCx0aXRsZTowLHR5cGU6MCx1c2VNYXA6MCx2
YWx1ZTowLHdpZHRoOjAsd21vZGU6MCx3cmFwOjAsYWJvdXQ6MCxkYXRhdHlwZTowLGlubGlzdDow
LHByZWZpeDowLHByb3BlcnR5OjAscmVzb3VyY2U6MCx0eXBlb2Y6MCx2b2NhYjowLGF1dG9DYXBp
dGFsaXplOjAsYXV0b0NvcnJlY3Q6MCxhdXRvU2F2ZTowLGNvbG9yOjAsaXRlbVByb3A6MCxpdGVt
U2NvcGU6aSxpdGVtVHlwZTowLGl0ZW1JRDowLGl0ZW1SZWY6MCxyZXN1bHRzOjAsc2VjdXJpdHk6
MCx1bnNlbGVjdGFibGU6MH0sRE9NQXR0cmlidXRlTmFtZXM6e2FjY2VwdENoYXJzZXQ6ImFjY2Vw
dC1jaGFyc2V0IixjbGFzc05hbWU6ImNsYXNzIixodG1sRm9yOiJmb3IiLGh0dHBFcXVpdjoiaHR0
cC1lcXVpdiJ9LERPTVByb3BlcnR5TmFtZXM6e30sRE9NTXV0YXRpb25NZXRob2RzOnt2YWx1ZTpm
dW5jdGlvbihlLHQpe3JldHVybiBudWxsPT10P2UucmVtb3ZlQXR0cmlidXRlKCJ2YWx1ZSIpOnZv
aWQoIm51bWJlciIhPT1lLnR5cGV8fGUuaGFzQXR0cmlidXRlKCJ2YWx1ZSIpPT09ITE/ZS5zZXRB
dHRyaWJ1dGUoInZhbHVlIiwiIit0KTplLnZhbGlkaXR5JiYhZS52YWxpZGl0eS5iYWRJbnB1dCYm
ZS5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQhPT1lJiZlLnNldEF0dHJpYnV0ZSgidmFsdWUi
LCIiK3QpKX19fTtlLmV4cG9ydHM9Y30sZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbih0KXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXt2YXIgbz12b2lkIDA9PT1lW25dO251bGwhPXQm
Jm8mJihlW25dPWkodCwhMCkpfXZhciBvPW4oMTYpLGk9big3NSksYT0obigzOCksbig0OCkpLHU9
big3OCk7bigyKTsidW5kZWZpbmVkIiE9dHlwZW9mIHQmJnQuZW52LDE7dmFyIHM9e2luc3RhbnRp
YXRlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4sbyl7aWYobnVsbD09ZSlyZXR1cm4gbnVsbDt2YXIg
aT17fTtyZXR1cm4gdShlLHIsaSksaX0sdXBkYXRlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4scix1
LHMsYyxsLHApe2lmKHR8fGUpe3ZhciBkLGY7Zm9yKGQgaW4gdClpZih0Lmhhc093blByb3BlcnR5
KGQpKXtmPWUmJmVbZF07dmFyIGg9ZiYmZi5fY3VycmVudEVsZW1lbnQsdj10W2RdO2lmKG51bGwh
PWYmJmEoaCx2KSlvLnJlY2VpdmVDb21wb25lbnQoZix2LHUsbCksdFtkXT1mO2Vsc2V7ZiYmKHJb
ZF09by5nZXRIb3N0Tm9kZShmKSxvLnVubW91bnRDb21wb25lbnQoZiwhMSkpO3ZhciBtPWkodiwh
MCk7dFtkXT1tO3ZhciB5PW8ubW91bnRDb21wb25lbnQobSx1LHMsYyxsLHApO24ucHVzaCh5KX19
Zm9yKGQgaW4gZSkhZS5oYXNPd25Qcm9wZXJ0eShkKXx8dCYmdC5oYXNPd25Qcm9wZXJ0eShkKXx8
KGY9ZVtkXSxyW2RdPW8uZ2V0SG9zdE5vZGUoZiksby51bm1vdW50Q29tcG9uZW50KGYsITEpKX19
LHVubW91bnRDaGlsZHJlbjpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbiBpbiBlKWlmKGUuaGFzT3du
UHJvcGVydHkobikpe3ZhciByPWVbbl07by51bm1vdW50Q29tcG9uZW50KHIsdCl9fX07ZS5leHBv
cnRzPXN9KS5jYWxsKHQsbig4NykpfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBy
PW4oMzQpLG89bigxNDIpLGk9e3Byb2Nlc3NDaGlsZHJlblVwZGF0ZXM6by5kYW5nZXJvdXNseVBy
b2Nlc3NDaGlsZHJlblVwZGF0ZXMscmVwbGFjZU5vZGVXaXRoTWFya3VwOnIuZGFuZ2Vyb3VzbHlS
ZXBsYWNlTm9kZVdpdGhNYXJrdXB9O2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSl7fWZ1bmN0aW9uIG8oZSx0KXt9ZnVuY3Rpb24gaShlKXtyZXR1
cm4hKCFlLnByb3RvdHlwZXx8IWUucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQpfWZ1bmN0aW9u
IGEoZSl7cmV0dXJuISghZS5wcm90b3R5cGV8fCFlLnByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBv
bmVudCl9dmFyIHU9bigzKSxzPW4oNCksYz1uKDE3KSxsPW4oNDApLHA9bigxMSksZD1uKDQxKSxm
PW4oMjEpLGg9KG4oOCksbig2OCkpLHY9bigxNiksbT1uKDI0KSx5PShuKDEpLG4oMzIpKSxnPW4o
NDgpLGI9KG4oMikse0ltcHVyZUNsYXNzOjAsUHVyZUNsYXNzOjEsU3RhdGVsZXNzRnVuY3Rpb25h
bDoyfSk7ci5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGU9Zi5nZXQodGhpcykuX2N1
cnJlbnRFbGVtZW50LnR5cGUsdD1lKHRoaXMucHJvcHMsdGhpcy5jb250ZXh0LHRoaXMudXBkYXRl
cik7cmV0dXJuIG8oZSx0KSx0fTt2YXIgXz0xLEM9e2NvbnN0cnVjdDpmdW5jdGlvbihlKXt0aGlz
Ll9jdXJyZW50RWxlbWVudD1lLHRoaXMuX3Jvb3ROb2RlSUQ9MCx0aGlzLl9jb21wb3NpdGVUeXBl
PW51bGwsdGhpcy5faW5zdGFuY2U9bnVsbCx0aGlzLl9ob3N0UGFyZW50PW51bGwsdGhpcy5faG9z
dENvbnRhaW5lckluZm89bnVsbCx0aGlzLl91cGRhdGVCYXRjaE51bWJlcj1udWxsLHRoaXMuX3Bl
bmRpbmdFbGVtZW50PW51bGwsdGhpcy5fcGVuZGluZ1N0YXRlUXVldWU9bnVsbCx0aGlzLl9wZW5k
aW5nUmVwbGFjZVN0YXRlPSExLHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZT0hMSx0aGlzLl9yZW5k
ZXJlZE5vZGVUeXBlPW51bGwsdGhpcy5fcmVuZGVyZWRDb21wb25lbnQ9bnVsbCx0aGlzLl9jb250
ZXh0PW51bGwsdGhpcy5fbW91bnRPcmRlcj0wLHRoaXMuX3RvcExldmVsV3JhcHBlcj1udWxsLHRo
aXMuX3BlbmRpbmdDYWxsYmFja3M9bnVsbCx0aGlzLl9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3Vu
dD0hMX0sbW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scyl7dGhpcy5fY29udGV4dD1zLHRo
aXMuX21vdW50T3JkZXI9XysrLHRoaXMuX2hvc3RQYXJlbnQ9dCx0aGlzLl9ob3N0Q29udGFpbmVy
SW5mbz1uO3ZhciBsLHA9dGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHMsZD10aGlzLl9wcm9jZXNz
Q29udGV4dChzKSxoPXRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUsdj1lLmdldFVwZGF0ZVF1ZXVl
KCkseT1pKGgpLGc9dGhpcy5fY29uc3RydWN0Q29tcG9uZW50KHkscCxkLHYpO3l8fG51bGwhPWcm
Jm51bGwhPWcucmVuZGVyP2EoaCk/dGhpcy5fY29tcG9zaXRlVHlwZT1iLlB1cmVDbGFzczp0aGlz
Ll9jb21wb3NpdGVUeXBlPWIuSW1wdXJlQ2xhc3M6KGw9ZyxvKGgsbCksbnVsbD09PWd8fGc9PT0h
MXx8Yy5pc1ZhbGlkRWxlbWVudChnKT92b2lkIDA6dSgiMTA1IixoLmRpc3BsYXlOYW1lfHxoLm5h
bWV8fCJDb21wb25lbnQiKSxnPW5ldyByKGgpLHRoaXMuX2NvbXBvc2l0ZVR5cGU9Yi5TdGF0ZWxl
c3NGdW5jdGlvbmFsKTtnLnByb3BzPXAsZy5jb250ZXh0PWQsZy5yZWZzPW0sZy51cGRhdGVyPXYs
dGhpcy5faW5zdGFuY2U9ZyxmLnNldChnLHRoaXMpO3ZhciBDPWcuc3RhdGU7dm9pZCAwPT09QyYm
KGcuc3RhdGU9Qz1udWxsKSwib2JqZWN0IiE9dHlwZW9mIEN8fEFycmF5LmlzQXJyYXkoQyk/dSgi
MTA2Iix0aGlzLmdldE5hbWUoKXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Iik6dm9pZCAwLHRo
aXMuX3BlbmRpbmdTdGF0ZVF1ZXVlPW51bGwsdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZT0hMSx0
aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGU9ITE7dmFyIEU7cmV0dXJuIEU9Zy51bnN0YWJsZV9oYW5k
bGVFcnJvcj90aGlzLnBlcmZvcm1Jbml0aWFsTW91bnRXaXRoRXJyb3JIYW5kbGluZyhsLHQsbixl
LHMpOnRoaXMucGVyZm9ybUluaXRpYWxNb3VudChsLHQsbixlLHMpLGcuY29tcG9uZW50RGlkTW91
bnQmJmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShnLmNvbXBvbmVudERpZE1vdW50LGcp
LEV9LF9jb25zdHJ1Y3RDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHRoaXMuX2Nv
bnN0cnVjdENvbXBvbmVudFdpdGhvdXRPd25lcihlLHQsbixyKX0sX2NvbnN0cnVjdENvbXBvbmVu
dFdpdGhvdXRPd25lcjpmdW5jdGlvbihlLHQsbixyKXt2YXIgbz10aGlzLl9jdXJyZW50RWxlbWVu
dC50eXBlO3JldHVybiBlP25ldyBvKHQsbixyKTpvKHQsbixyKX0scGVyZm9ybUluaXRpYWxNb3Vu
dFdpdGhFcnJvckhhbmRsaW5nOmZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGksYT1yLmNoZWNrcG9p
bnQoKTt0cnl7aT10aGlzLnBlcmZvcm1Jbml0aWFsTW91bnQoZSx0LG4scixvKX1jYXRjaCh1KXty
LnJvbGxiYWNrKGEpLHRoaXMuX2luc3RhbmNlLnVuc3RhYmxlX2hhbmRsZUVycm9yKHUpLHRoaXMu
X3BlbmRpbmdTdGF0ZVF1ZXVlJiYodGhpcy5faW5zdGFuY2Uuc3RhdGU9dGhpcy5fcHJvY2Vzc1Bl
bmRpbmdTdGF0ZSh0aGlzLl9pbnN0YW5jZS5wcm9wcyx0aGlzLl9pbnN0YW5jZS5jb250ZXh0KSks
YT1yLmNoZWNrcG9pbnQoKSx0aGlzLl9yZW5kZXJlZENvbXBvbmVudC51bm1vdW50Q29tcG9uZW50
KCEwKSxyLnJvbGxiYWNrKGEpLGk9dGhpcy5wZXJmb3JtSW5pdGlhbE1vdW50KGUsdCxuLHIsbyl9
cmV0dXJuIGl9LHBlcmZvcm1Jbml0aWFsTW91bnQ6ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgaT10
aGlzLl9pbnN0YW5jZSxhPTA7aS5jb21wb25lbnRXaWxsTW91bnQmJihpLmNvbXBvbmVudFdpbGxN
b3VudCgpLHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlJiYoaS5zdGF0ZT10aGlzLl9wcm9jZXNzUGVu
ZGluZ1N0YXRlKGkucHJvcHMsaS5jb250ZXh0KSkpLHZvaWQgMD09PWUmJihlPXRoaXMuX3JlbmRl
clZhbGlkYXRlZENvbXBvbmVudCgpKTt2YXIgdT1oLmdldFR5cGUoZSk7dGhpcy5fcmVuZGVyZWRO
b2RlVHlwZT11O3ZhciBzPXRoaXMuX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQoZSx1IT09aC5F
TVBUWSk7dGhpcy5fcmVuZGVyZWRDb21wb25lbnQ9czt2YXIgYz12Lm1vdW50Q29tcG9uZW50KHMs
cix0LG4sdGhpcy5fcHJvY2Vzc0NoaWxkQ29udGV4dChvKSxhKTtyZXR1cm4gY30sZ2V0SG9zdE5v
ZGU6ZnVuY3Rpb24oKXtyZXR1cm4gdi5nZXRIb3N0Tm9kZSh0aGlzLl9yZW5kZXJlZENvbXBvbmVu
dCl9LHVubW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5fcmVuZGVyZWRDb21wb25l
bnQpe3ZhciB0PXRoaXMuX2luc3RhbmNlO2lmKHQuY29tcG9uZW50V2lsbFVubW91bnQmJiF0Ll9j
YWxsZWRDb21wb25lbnRXaWxsVW5tb3VudClpZih0Ll9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3Vu
dD0hMCxlKXt2YXIgbj10aGlzLmdldE5hbWUoKSsiLmNvbXBvbmVudFdpbGxVbm1vdW50KCkiO2Qu
aW52b2tlR3VhcmRlZENhbGxiYWNrKG4sdC5jb21wb25lbnRXaWxsVW5tb3VudC5iaW5kKHQpKX1l
bHNlIHQuY29tcG9uZW50V2lsbFVubW91bnQoKTt0aGlzLl9yZW5kZXJlZENvbXBvbmVudCYmKHYu
dW5tb3VudENvbXBvbmVudCh0aGlzLl9yZW5kZXJlZENvbXBvbmVudCxlKSx0aGlzLl9yZW5kZXJl
ZE5vZGVUeXBlPW51bGwsdGhpcy5fcmVuZGVyZWRDb21wb25lbnQ9bnVsbCx0aGlzLl9pbnN0YW5j
ZT1udWxsKSx0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZT1udWxsLHRoaXMuX3BlbmRpbmdSZXBsYWNl
U3RhdGU9ITEsdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlPSExLHRoaXMuX3BlbmRpbmdDYWxsYmFj
a3M9bnVsbCx0aGlzLl9wZW5kaW5nRWxlbWVudD1udWxsLHRoaXMuX2NvbnRleHQ9bnVsbCx0aGlz
Ll9yb290Tm9kZUlEPTAsdGhpcy5fdG9wTGV2ZWxXcmFwcGVyPW51bGwsZi5yZW1vdmUodCl9fSxf
bWFza0NvbnRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSxu
PXQuY29udGV4dFR5cGVzO2lmKCFuKXJldHVybiBtO3ZhciByPXt9O2Zvcih2YXIgbyBpbiBuKXJb
b109ZVtvXTtyZXR1cm4gcn0sX3Byb2Nlc3NDb250ZXh0OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMu
X21hc2tDb250ZXh0KGUpO3JldHVybiB0fSxfcHJvY2Vzc0NoaWxkQ29udGV4dDpmdW5jdGlvbihl
KXt2YXIgdCxuPXRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUscj10aGlzLl9pbnN0YW5jZTtpZihy
LmdldENoaWxkQ29udGV4dCYmKHQ9ci5nZXRDaGlsZENvbnRleHQoKSksdCl7Im9iamVjdCIhPXR5
cGVvZiBuLmNoaWxkQ29udGV4dFR5cGVzP3UoIjEwNyIsdGhpcy5nZXROYW1lKCl8fCJSZWFjdENv
bXBvc2l0ZUNvbXBvbmVudCIpOnZvaWQgMDtmb3IodmFyIG8gaW4gdClvIGluIG4uY2hpbGRDb250
ZXh0VHlwZXM/dm9pZCAwOnUoIjEwOCIsdGhpcy5nZXROYW1lKCl8fCJSZWFjdENvbXBvc2l0ZUNv
bXBvbmVudCIsbyk7cmV0dXJuIHMoe30sZSx0KX1yZXR1cm4gZX0sX2NoZWNrQ29udGV4dFR5cGVz
OmZ1bmN0aW9uKGUsdCxuKXt9LHJlY2VpdmVDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciBy
PXRoaXMuX2N1cnJlbnRFbGVtZW50LG89dGhpcy5fY29udGV4dDt0aGlzLl9wZW5kaW5nRWxlbWVu
dD1udWxsLHRoaXMudXBkYXRlQ29tcG9uZW50KHQscixlLG8sbil9LHBlcmZvcm1VcGRhdGVJZk5l
Y2Vzc2FyeTpmdW5jdGlvbihlKXtudWxsIT10aGlzLl9wZW5kaW5nRWxlbWVudD92LnJlY2VpdmVD
b21wb25lbnQodGhpcyx0aGlzLl9wZW5kaW5nRWxlbWVudCxlLHRoaXMuX2NvbnRleHQpOm51bGwh
PT10aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZXx8dGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlP3RoaXMu
dXBkYXRlQ29tcG9uZW50KGUsdGhpcy5fY3VycmVudEVsZW1lbnQsdGhpcy5fY3VycmVudEVsZW1l
bnQsdGhpcy5fY29udGV4dCx0aGlzLl9jb250ZXh0KTp0aGlzLl91cGRhdGVCYXRjaE51bWJlcj1u
dWxsfSx1cGRhdGVDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgaT10aGlzLl9pbnN0
YW5jZTtudWxsPT1pP3UoIjEzNiIsdGhpcy5nZXROYW1lKCl8fCJSZWFjdENvbXBvc2l0ZUNvbXBv
bmVudCIpOnZvaWQgMDt2YXIgYSxzPSExO3RoaXMuX2NvbnRleHQ9PT1vP2E9aS5jb250ZXh0Oihh
PXRoaXMuX3Byb2Nlc3NDb250ZXh0KG8pLHM9ITApO3ZhciBjPXQucHJvcHMsbD1uLnByb3BzO3Qh
PT1uJiYocz0hMCkscyYmaS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJiZpLmNvbXBvbmVudFdp
bGxSZWNlaXZlUHJvcHMobCxhKTt2YXIgcD10aGlzLl9wcm9jZXNzUGVuZGluZ1N0YXRlKGwsYSks
ZD0hMDt0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGV8fChpLnNob3VsZENvbXBvbmVudFVwZGF0ZT9k
PWkuc2hvdWxkQ29tcG9uZW50VXBkYXRlKGwscCxhKTp0aGlzLl9jb21wb3NpdGVUeXBlPT09Yi5Q
dXJlQ2xhc3MmJihkPSF5KGMsbCl8fCF5KGkuc3RhdGUscCkpKSx0aGlzLl91cGRhdGVCYXRjaE51
bWJlcj1udWxsLGQ/KHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZT0hMSx0aGlzLl9wZXJmb3JtQ29t
cG9uZW50VXBkYXRlKG4sbCxwLGEsZSxvKSk6KHRoaXMuX2N1cnJlbnRFbGVtZW50PW4sdGhpcy5f
Y29udGV4dD1vLGkucHJvcHM9bCxpLnN0YXRlPXAsaS5jb250ZXh0PWEpfSxfcHJvY2Vzc1BlbmRp
bmdTdGF0ZTpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX2luc3RhbmNlLHI9dGhpcy5fcGVuZGlu
Z1N0YXRlUXVldWUsbz10aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlO2lmKHRoaXMuX3BlbmRpbmdS
ZXBsYWNlU3RhdGU9ITEsdGhpcy5fcGVuZGluZ1N0YXRlUXVldWU9bnVsbCwhcilyZXR1cm4gbi5z
dGF0ZTtpZihvJiYxPT09ci5sZW5ndGgpcmV0dXJuIHJbMF07Zm9yKHZhciBpPXMoe30sbz9yWzBd
Om4uc3RhdGUpLGE9bz8xOjA7YTxyLmxlbmd0aDthKyspe3ZhciB1PXJbYV07cyhpLCJmdW5jdGlv
biI9PXR5cGVvZiB1P3UuY2FsbChuLGksZSx0KTp1KX1yZXR1cm4gaX0sX3BlcmZvcm1Db21wb25l
bnRVcGRhdGU6ZnVuY3Rpb24oZSx0LG4scixvLGkpe3ZhciBhLHUscyxjPXRoaXMuX2luc3RhbmNl
LGw9Qm9vbGVhbihjLmNvbXBvbmVudERpZFVwZGF0ZSk7bCYmKGE9Yy5wcm9wcyx1PWMuc3RhdGUs
cz1jLmNvbnRleHQpLGMuY29tcG9uZW50V2lsbFVwZGF0ZSYmYy5jb21wb25lbnRXaWxsVXBkYXRl
KHQsbixyKSx0aGlzLl9jdXJyZW50RWxlbWVudD1lLHRoaXMuX2NvbnRleHQ9aSxjLnByb3BzPXQs
Yy5zdGF0ZT1uLGMuY29udGV4dD1yLHRoaXMuX3VwZGF0ZVJlbmRlcmVkQ29tcG9uZW50KG8saSks
bCYmby5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGMuY29tcG9uZW50RGlkVXBkYXRlLmJp
bmQoYyxhLHUscyksYyl9LF91cGRhdGVSZW5kZXJlZENvbXBvbmVudDpmdW5jdGlvbihlLHQpe3Zh
ciBuPXRoaXMuX3JlbmRlcmVkQ29tcG9uZW50LHI9bi5fY3VycmVudEVsZW1lbnQsbz10aGlzLl9y
ZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQoKSxpPTA7aWYoZyhyLG8pKXYucmVjZWl2ZUNvbXBvbmVu
dChuLG8sZSx0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KHQpKTtlbHNle3ZhciBhPXYuZ2V0SG9z
dE5vZGUobik7di51bm1vdW50Q29tcG9uZW50KG4sITEpO3ZhciB1PWguZ2V0VHlwZShvKTt0aGlz
Ll9yZW5kZXJlZE5vZGVUeXBlPXU7dmFyIHM9dGhpcy5faW5zdGFudGlhdGVSZWFjdENvbXBvbmVu
dChvLHUhPT1oLkVNUFRZKTt0aGlzLl9yZW5kZXJlZENvbXBvbmVudD1zO3ZhciBjPXYubW91bnRD
b21wb25lbnQocyxlLHRoaXMuX2hvc3RQYXJlbnQsdGhpcy5faG9zdENvbnRhaW5lckluZm8sdGhp
cy5fcHJvY2Vzc0NoaWxkQ29udGV4dCh0KSxpKTt0aGlzLl9yZXBsYWNlTm9kZVdpdGhNYXJrdXAo
YSxjLG4pfX0sX3JlcGxhY2VOb2RlV2l0aE1hcmt1cDpmdW5jdGlvbihlLHQsbil7bC5yZXBsYWNl
Tm9kZVdpdGhNYXJrdXAoZSx0LG4pfSxfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50V2l0aG91dE93
bmVyT3JDb250ZXh0OmZ1bmN0aW9uKCl7dmFyIGUsdD10aGlzLl9pbnN0YW5jZTtyZXR1cm4gZT10
LnJlbmRlcigpfSxfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50OmZ1bmN0aW9uKCl7dmFyIGU7aWYo
dGhpcy5fY29tcG9zaXRlVHlwZSE9PWIuU3RhdGVsZXNzRnVuY3Rpb25hbCl7cC5jdXJyZW50PXRo
aXM7dHJ5e2U9dGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50V2l0aG91dE93bmVyT3JDb250
ZXh0KCl9ZmluYWxseXtwLmN1cnJlbnQ9bnVsbH19ZWxzZSBlPXRoaXMuX3JlbmRlclZhbGlkYXRl
ZENvbXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4dCgpO3JldHVybiBudWxsPT09ZXx8ZT09PSEx
fHxjLmlzVmFsaWRFbGVtZW50KGUpP3ZvaWQgMDp1KCIxMDkiLHRoaXMuZ2V0TmFtZSgpfHwiUmVh
Y3RDb21wb3NpdGVDb21wb25lbnQiKSxlfSxhdHRhY2hSZWY6ZnVuY3Rpb24oZSx0KXt2YXIgbj10
aGlzLmdldFB1YmxpY0luc3RhbmNlKCk7bnVsbD09bj91KCIxMTAiKTp2b2lkIDA7dmFyIHI9dC5n
ZXRQdWJsaWNJbnN0YW5jZSgpLG89bi5yZWZzPT09bT9uLnJlZnM9e306bi5yZWZzO29bZV09cn0s
ZGV0YWNoUmVmOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuZ2V0UHVibGljSW5zdGFuY2UoKS5yZWZz
O2RlbGV0ZSB0W2VdfSxnZXROYW1lOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fY3VycmVudEVsZW1l
bnQudHlwZSx0PXRoaXMuX2luc3RhbmNlJiZ0aGlzLl9pbnN0YW5jZS5jb25zdHJ1Y3RvcjtyZXR1
cm4gZS5kaXNwbGF5TmFtZXx8dCYmdC5kaXNwbGF5TmFtZXx8ZS5uYW1lfHx0JiZ0Lm5hbWV8fG51
bGx9LGdldFB1YmxpY0luc3RhbmNlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5faW5zdGFuY2U7cmV0
dXJuIHRoaXMuX2NvbXBvc2l0ZVR5cGU9PT1iLlN0YXRlbGVzc0Z1bmN0aW9uYWw/bnVsbDplfSxf
aW5zdGFudGlhdGVSZWFjdENvbXBvbmVudDpudWxsfTtlLmV4cG9ydHM9Q30sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDUpLG89bigxNTApLGk9big2NyksYT1uKDE2KSx1PW4o
OSkscz1uKDE2MyksYz1uKDE3OSksbD1uKDcyKSxwPW4oMTg2KTtuKDIpO28uaW5qZWN0KCk7dmFy
IGQ9e2ZpbmRET01Ob2RlOmMscmVuZGVyOmkucmVuZGVyLHVubW91bnRDb21wb25lbnRBdE5vZGU6
aS51bm1vdW50Q29tcG9uZW50QXROb2RlLHZlcnNpb246cyx1bnN0YWJsZV9iYXRjaGVkVXBkYXRl
czp1LmJhdGNoZWRVcGRhdGVzLHVuc3RhYmxlX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyOnB9
OyJ1bmRlZmluZWQiIT10eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fJiYiZnVu
Y3Rpb24iPT10eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmluamVjdCYmX19S
RUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmluamVjdCh7Q29tcG9uZW50VHJlZTp7Z2V0Q2xv
c2VzdEluc3RhbmNlRnJvbU5vZGU6ci5nZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZSxnZXROb2Rl
RnJvbUluc3RhbmNlOmZ1bmN0aW9uKGUpe3JldHVybiBlLl9yZW5kZXJlZENvbXBvbmVudCYmKGU9
bChlKSksZT9yLmdldE5vZGVGcm9tSW5zdGFuY2UoZSk6bnVsbH19LE1vdW50OmksUmVjb25jaWxl
cjphfSk7ZS5leHBvcnRzPWR9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlKXtpZihlKXt2YXIgdD1lLl9jdXJyZW50RWxlbWVudC5fb3duZXJ8fG51bGw7aWYodCl7dmFy
IG49dC5nZXROYW1lKCk7aWYobilyZXR1cm4iIFRoaXMgRE9NIG5vZGUgd2FzIHJlbmRlcmVkIGJ5
IGAiK24rImAuIn19cmV0dXJuIiJ9ZnVuY3Rpb24gbyhlLHQpe3QmJihRW2UuX3RhZ10mJihudWxs
IT10LmNoaWxkcmVufHxudWxsIT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MP20oIjEzNyIsZS5f
dGFnLGUuX2N1cnJlbnRFbGVtZW50Ll9vd25lcj8iIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9m
ICIrZS5fY3VycmVudEVsZW1lbnQuX293bmVyLmdldE5hbWUoKSsiLiI6IiIpOnZvaWQgMCksbnVs
bCE9dC5kYW5nZXJvdXNseVNldElubmVySFRNTCYmKG51bGwhPXQuY2hpbGRyZW4/bSgiNjAiKTp2
b2lkIDAsIm9iamVjdCI9PXR5cGVvZiB0LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZxIGluIHQu
ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw/dm9pZCAwOm0oIjYxIikpLG51bGwhPXQuc3R5bGUmJiJv
YmplY3QiIT10eXBlb2YgdC5zdHlsZT9tKCI2MiIscihlKSk6dm9pZCAwKX1mdW5jdGlvbiBpKGUs
dCxuLHIpe2lmKCEociBpbnN0YW5jZW9mIEEpKXt2YXIgbz1lLl9ob3N0Q29udGFpbmVySW5mbyxp
PW8uX25vZGUmJm8uX25vZGUubm9kZVR5cGU9PT1ZLHU9aT9vLl9ub2RlOm8uX293bmVyRG9jdW1l
bnQ7Qih0LHUpLHIuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShhLHtpbnN0OmUscmVnaXN0
cmF0aW9uTmFtZTp0LGxpc3RlbmVyOm59KX19ZnVuY3Rpb24gYSgpe3ZhciBlPXRoaXM7VC5wdXRM
aXN0ZW5lcihlLmluc3QsZS5yZWdpc3RyYXRpb25OYW1lLGUubGlzdGVuZXIpfWZ1bmN0aW9uIHUo
KXt2YXIgZT10aGlzO2sucG9zdE1vdW50V3JhcHBlcihlKX1mdW5jdGlvbiBzKCl7dmFyIGU9dGhp
cztJLnBvc3RNb3VudFdyYXBwZXIoZSl9ZnVuY3Rpb24gYygpe3ZhciBlPXRoaXM7TS5wb3N0TW91
bnRXcmFwcGVyKGUpfWZ1bmN0aW9uIGwoKXtqLnRyYWNrKHRoaXMpfWZ1bmN0aW9uIHAoKXt2YXIg
ZT10aGlzO2UuX3Jvb3ROb2RlSUQ/dm9pZCAwOm0oIjYzIik7dmFyIHQ9RihlKTtzd2l0Y2godD92
b2lkIDA6bSgiNjQiKSxlLl90YWcpe2Nhc2UiaWZyYW1lIjpjYXNlIm9iamVjdCI6ZS5fd3JhcHBl
clN0YXRlLmxpc3RlbmVycz1beC50cmFwQnViYmxlZEV2ZW50KCJ0b3BMb2FkIiwibG9hZCIsdCld
O2JyZWFrO2Nhc2UidmlkZW8iOmNhc2UiYXVkaW8iOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9
W107Zm9yKHZhciBuIGluIHopei5oYXNPd25Qcm9wZXJ0eShuKSYmZS5fd3JhcHBlclN0YXRlLmxp
c3RlbmVycy5wdXNoKHgudHJhcEJ1YmJsZWRFdmVudChuLHpbbl0sdCkpO2JyZWFrO2Nhc2Uic291
cmNlIjplLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzPVt4LnRyYXBCdWJibGVkRXZlbnQoInRvcEVy
cm9yIiwiZXJyb3IiLHQpXTticmVhaztjYXNlImltZyI6ZS5fd3JhcHBlclN0YXRlLmxpc3RlbmVy
cz1beC50cmFwQnViYmxlZEV2ZW50KCJ0b3BFcnJvciIsImVycm9yIix0KSx4LnRyYXBCdWJibGVk
RXZlbnQoInRvcExvYWQiLCJsb2FkIix0KV07YnJlYWs7Y2FzZSJmb3JtIjplLl93cmFwcGVyU3Rh
dGUubGlzdGVuZXJzPVt4LnRyYXBCdWJibGVkRXZlbnQoInRvcFJlc2V0IiwicmVzZXQiLHQpLHgu
dHJhcEJ1YmJsZWRFdmVudCgidG9wU3VibWl0Iiwic3VibWl0Iix0KV07YnJlYWs7Y2FzZSJpbnB1
dCI6Y2FzZSJzZWxlY3QiOmNhc2UidGV4dGFyZWEiOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9
W3gudHJhcEJ1YmJsZWRFdmVudCgidG9wSW52YWxpZCIsImludmFsaWQiLHQpXX19ZnVuY3Rpb24g
ZCgpe04ucG9zdFVwZGF0ZVdyYXBwZXIodGhpcyl9ZnVuY3Rpb24gZihlKXtKLmNhbGwoWixlKXx8
KCQudGVzdChlKT92b2lkIDA6bSgiNjUiLGUpLFpbZV09ITApfWZ1bmN0aW9uIGgoZSx0KXtyZXR1
cm4gZS5pbmRleE9mKCItIik+PTB8fG51bGwhPXQuaXN9ZnVuY3Rpb24gdihlKXt2YXIgdD1lLnR5
cGU7Zih0KSx0aGlzLl9jdXJyZW50RWxlbWVudD1lLHRoaXMuX3RhZz10LnRvTG93ZXJDYXNlKCks
dGhpcy5fbmFtZXNwYWNlVVJJPW51bGwsdGhpcy5fcmVuZGVyZWRDaGlsZHJlbj1udWxsLHRoaXMu
X3ByZXZpb3VzU3R5bGU9bnVsbCx0aGlzLl9wcmV2aW91c1N0eWxlQ29weT1udWxsLHRoaXMuX2hv
c3ROb2RlPW51bGwsdGhpcy5faG9zdFBhcmVudD1udWxsLHRoaXMuX3Jvb3ROb2RlSUQ9MCx0aGlz
Ll9kb21JRD0wLHRoaXMuX2hvc3RDb250YWluZXJJbmZvPW51bGwsdGhpcy5fd3JhcHBlclN0YXRl
PW51bGwsdGhpcy5fdG9wTGV2ZWxXcmFwcGVyPW51bGwsdGhpcy5fZmxhZ3M9MH12YXIgbT1uKDMp
LHk9big0KSxnPW4oMTI1KSxiPW4oMTI3KSxfPW4oMTQpLEM9bigzNSksRT1uKDE1KSx3PW4oNjAp
LFQ9bigxOSksUD1uKDM2KSx4PW4oMjUpLE89big2MSksUz1uKDUpLGs9bigxNDMpLE09bigxNDQp
LE49big2MiksST1uKDE0NyksUj0obig4KSxuKDE1NikpLEE9bigxNjEpLEQ9KG4oNyksbigyOCkp
LGo9KG4oMSksbig0NyksbigzMiksbig3NCkpLEw9KG4oNDkpLG4oMiksTyksVT1ULmRlbGV0ZUxp
c3RlbmVyLEY9Uy5nZXROb2RlRnJvbUluc3RhbmNlLEI9eC5saXN0ZW5UbyxWPVAucmVnaXN0cmF0
aW9uTmFtZU1vZHVsZXMsVz17c3RyaW5nOiEwLG51bWJlcjohMH0sSD0ic3R5bGUiLHE9Il9faHRt
bCIsSz17Y2hpbGRyZW46bnVsbCxkYW5nZXJvdXNseVNldElubmVySFRNTDpudWxsLHN1cHByZXNz
Q29udGVudEVkaXRhYmxlV2FybmluZzpudWxsfSxZPTExLHo9e3RvcEFib3J0OiJhYm9ydCIsdG9w
Q2FuUGxheToiY2FucGxheSIsdG9wQ2FuUGxheVRocm91Z2g6ImNhbnBsYXl0aHJvdWdoIix0b3BE
dXJhdGlvbkNoYW5nZToiZHVyYXRpb25jaGFuZ2UiLHRvcEVtcHRpZWQ6ImVtcHRpZWQiLHRvcEVu
Y3J5cHRlZDoiZW5jcnlwdGVkIix0b3BFbmRlZDoiZW5kZWQiLHRvcEVycm9yOiJlcnJvciIsdG9w
TG9hZGVkRGF0YToibG9hZGVkZGF0YSIsdG9wTG9hZGVkTWV0YWRhdGE6ImxvYWRlZG1ldGFkYXRh
Iix0b3BMb2FkU3RhcnQ6ImxvYWRzdGFydCIsdG9wUGF1c2U6InBhdXNlIix0b3BQbGF5OiJwbGF5
Iix0b3BQbGF5aW5nOiJwbGF5aW5nIix0b3BQcm9ncmVzczoicHJvZ3Jlc3MiLHRvcFJhdGVDaGFu
Z2U6InJhdGVjaGFuZ2UiLHRvcFNlZWtlZDoic2Vla2VkIix0b3BTZWVraW5nOiJzZWVraW5nIix0
b3BTdGFsbGVkOiJzdGFsbGVkIix0b3BTdXNwZW5kOiJzdXNwZW5kIix0b3BUaW1lVXBkYXRlOiJ0
aW1ldXBkYXRlIix0b3BWb2x1bWVDaGFuZ2U6InZvbHVtZWNoYW5nZSIsdG9wV2FpdGluZzoid2Fp
dGluZyJ9LFg9e2FyZWE6ITAsYmFzZTohMCxicjohMCxjb2w6ITAsZW1iZWQ6ITAsaHI6ITAsaW1n
OiEwLGlucHV0OiEwLGtleWdlbjohMCxsaW5rOiEwLG1ldGE6ITAscGFyYW06ITAsc291cmNlOiEw
LHRyYWNrOiEwLHdicjohMH0sRz17bGlzdGluZzohMCxwcmU6ITAsdGV4dGFyZWE6ITB9LFE9eSh7
bWVudWl0ZW06ITB9LFgpLCQ9L15bYS16QS1aXVthLXpBLVo6X1wuXC1cZF0qJC8sWj17fSxKPXt9
Lmhhc093blByb3BlcnR5LGVlPTE7di5kaXNwbGF5TmFtZT0iUmVhY3RET01Db21wb25lbnQiLHYu
TWl4aW49e21vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe3RoaXMuX3Jvb3ROb2RlSUQ9
ZWUrKyx0aGlzLl9kb21JRD1uLl9pZENvdW50ZXIrKyx0aGlzLl9ob3N0UGFyZW50PXQsdGhpcy5f
aG9zdENvbnRhaW5lckluZm89bjt2YXIgaT10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztzd2l0
Y2godGhpcy5fdGFnKXtjYXNlImF1ZGlvIjpjYXNlImZvcm0iOmNhc2UiaWZyYW1lIjpjYXNlImlt
ZyI6Y2FzZSJsaW5rIjpjYXNlIm9iamVjdCI6Y2FzZSJzb3VyY2UiOmNhc2UidmlkZW8iOnRoaXMu
X3dyYXBwZXJTdGF0ZT17bGlzdGVuZXJzOm51bGx9LGUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5x
dWV1ZShwLHRoaXMpO2JyZWFrO2Nhc2UiaW5wdXQiOmsubW91bnRXcmFwcGVyKHRoaXMsaSx0KSxp
PWsuZ2V0SG9zdFByb3BzKHRoaXMsaSksZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGws
dGhpcyksZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHAsdGhpcyk7YnJlYWs7Y2FzZSJv
cHRpb24iOk0ubW91bnRXcmFwcGVyKHRoaXMsaSx0KSxpPU0uZ2V0SG9zdFByb3BzKHRoaXMsaSk7
YnJlYWs7Y2FzZSJzZWxlY3QiOk4ubW91bnRXcmFwcGVyKHRoaXMsaSx0KSxpPU4uZ2V0SG9zdFBy
b3BzKHRoaXMsaSksZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHAsdGhpcyk7YnJlYWs7
Y2FzZSJ0ZXh0YXJlYSI6SS5tb3VudFdyYXBwZXIodGhpcyxpLHQpLGk9SS5nZXRIb3N0UHJvcHMo
dGhpcyxpKSxlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUobCx0aGlzKSxlLmdldFJlYWN0
TW91bnRSZWFkeSgpLmVucXVldWUocCx0aGlzKX1vKHRoaXMsaSk7dmFyIGEsZDtudWxsIT10Pyhh
PXQuX25hbWVzcGFjZVVSSSxkPXQuX3RhZyk6bi5fdGFnJiYoYT1uLl9uYW1lc3BhY2VVUkksZD1u
Ll90YWcpLChudWxsPT1hfHxhPT09Qy5zdmcmJiJmb3JlaWdub2JqZWN0Ij09PWQpJiYoYT1DLmh0
bWwpLGE9PT1DLmh0bWwmJigic3ZnIj09PXRoaXMuX3RhZz9hPUMuc3ZnOiJtYXRoIj09PXRoaXMu
X3RhZyYmKGE9Qy5tYXRobWwpKSx0aGlzLl9uYW1lc3BhY2VVUkk9YTt2YXIgZjtpZihlLnVzZUNy
ZWF0ZUVsZW1lbnQpe3ZhciBoLHY9bi5fb3duZXJEb2N1bWVudDtpZihhPT09Qy5odG1sKWlmKCJz
Y3JpcHQiPT09dGhpcy5fdGFnKXt2YXIgbT12LmNyZWF0ZUVsZW1lbnQoImRpdiIpLHk9dGhpcy5f
Y3VycmVudEVsZW1lbnQudHlwZTttLmlubmVySFRNTD0iPCIreSsiPjwvIit5KyI+IixoPW0ucmVt
b3ZlQ2hpbGQobS5maXJzdENoaWxkKX1lbHNlIGg9aS5pcz92LmNyZWF0ZUVsZW1lbnQodGhpcy5f
Y3VycmVudEVsZW1lbnQudHlwZSxpLmlzKTp2LmNyZWF0ZUVsZW1lbnQodGhpcy5fY3VycmVudEVs
ZW1lbnQudHlwZSk7ZWxzZSBoPXYuY3JlYXRlRWxlbWVudE5TKGEsdGhpcy5fY3VycmVudEVsZW1l
bnQudHlwZSk7Uy5wcmVjYWNoZU5vZGUodGhpcyxoKSx0aGlzLl9mbGFnc3w9TC5oYXNDYWNoZWRD
aGlsZE5vZGVzLHRoaXMuX2hvc3RQYXJlbnR8fHcuc2V0QXR0cmlidXRlRm9yUm9vdChoKSx0aGlz
Ll91cGRhdGVET01Qcm9wZXJ0aWVzKG51bGwsaSxlKTt2YXIgYj1fKGgpO3RoaXMuX2NyZWF0ZUlu
aXRpYWxDaGlsZHJlbihlLGkscixiKSxmPWJ9ZWxzZXt2YXIgRT10aGlzLl9jcmVhdGVPcGVuVGFn
TWFya3VwQW5kUHV0TGlzdGVuZXJzKGUsaSksVD10aGlzLl9jcmVhdGVDb250ZW50TWFya3VwKGUs
aSxyKTtmPSFUJiZYW3RoaXMuX3RhZ10/RSsiLz4iOkUrIj4iK1QrIjwvIit0aGlzLl9jdXJyZW50
RWxlbWVudC50eXBlKyI+In1zd2l0Y2godGhpcy5fdGFnKXtjYXNlImlucHV0IjplLmdldFJlYWN0
TW91bnRSZWFkeSgpLmVucXVldWUodSx0aGlzKSxpLmF1dG9Gb2N1cyYmZS5nZXRSZWFjdE1vdW50
UmVhZHkoKS5lbnF1ZXVlKGcuZm9jdXNET01Db21wb25lbnQsdGhpcyk7YnJlYWs7Y2FzZSJ0ZXh0
YXJlYSI6ZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHMsdGhpcyksaS5hdXRvRm9jdXMm
JmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShnLmZvY3VzRE9NQ29tcG9uZW50LHRoaXMp
O2JyZWFrO2Nhc2Uic2VsZWN0IjppLmF1dG9Gb2N1cyYmZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5l
bnF1ZXVlKGcuZm9jdXNET01Db21wb25lbnQsdGhpcyk7YnJlYWs7Y2FzZSJidXR0b24iOmkuYXV0
b0ZvY3VzJiZlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoZy5mb2N1c0RPTUNvbXBvbmVu
dCx0aGlzKTticmVhaztjYXNlIm9wdGlvbiI6ZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVl
KGMsdGhpcyl9cmV0dXJuIGZ9LF9jcmVhdGVPcGVuVGFnTWFya3VwQW5kUHV0TGlzdGVuZXJzOmZ1
bmN0aW9uKGUsdCl7dmFyIG49IjwiK3RoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7Zm9yKHZhciBy
IGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShyKSl7dmFyIG89dFtyXTtpZihudWxsIT1vKWlmKFYu
aGFzT3duUHJvcGVydHkocikpbyYmaSh0aGlzLHIsbyxlKTtlbHNle3I9PT1IJiYobyYmKG89dGhp
cy5fcHJldmlvdXNTdHlsZUNvcHk9eSh7fSx0LnN0eWxlKSksbz1iLmNyZWF0ZU1hcmt1cEZvclN0
eWxlcyhvLHRoaXMpKTt2YXIgYT1udWxsO251bGwhPXRoaXMuX3RhZyYmaCh0aGlzLl90YWcsdCk/
Sy5oYXNPd25Qcm9wZXJ0eShyKXx8KGE9dy5jcmVhdGVNYXJrdXBGb3JDdXN0b21BdHRyaWJ1dGUo
cixvKSk6YT13LmNyZWF0ZU1hcmt1cEZvclByb3BlcnR5KHIsbyksYSYmKG4rPSIgIithKX19cmV0
dXJuIGUucmVuZGVyVG9TdGF0aWNNYXJrdXA/bjoodGhpcy5faG9zdFBhcmVudHx8KG4rPSIgIit3
LmNyZWF0ZU1hcmt1cEZvclJvb3QoKSksbis9IiAiK3cuY3JlYXRlTWFya3VwRm9ySUQodGhpcy5f
ZG9tSUQpKX0sX2NyZWF0ZUNvbnRlbnRNYXJrdXA6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPSIiLG89
dC5kYW5nZXJvdXNseVNldElubmVySFRNTDtpZihudWxsIT1vKW51bGwhPW8uX19odG1sJiYocj1v
Ll9faHRtbCk7ZWxzZXt2YXIgaT1XW3R5cGVvZiB0LmNoaWxkcmVuXT90LmNoaWxkcmVuOm51bGws
YT1udWxsIT1pP251bGw6dC5jaGlsZHJlbjtpZihudWxsIT1pKXI9RChpKTtlbHNlIGlmKG51bGwh
PWEpe3ZhciB1PXRoaXMubW91bnRDaGlsZHJlbihhLGUsbik7cj11LmpvaW4oIiIpfX1yZXR1cm4g
R1t0aGlzLl90YWddJiYiXG4iPT09ci5jaGFyQXQoMCk/IlxuIityOnJ9LF9jcmVhdGVJbml0aWFs
Q2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89dC5kYW5nZXJvdXNseVNldElubmVySFRN
TDtpZihudWxsIT1vKW51bGwhPW8uX19odG1sJiZfLnF1ZXVlSFRNTChyLG8uX19odG1sKTtlbHNl
e3ZhciBpPVdbdHlwZW9mIHQuY2hpbGRyZW5dP3QuY2hpbGRyZW46bnVsbCxhPW51bGwhPWk/bnVs
bDp0LmNoaWxkcmVuO2lmKG51bGwhPWkpIiIhPT1pJiZfLnF1ZXVlVGV4dChyLGkpO2Vsc2UgaWYo
bnVsbCE9YSlmb3IodmFyIHU9dGhpcy5tb3VudENoaWxkcmVuKGEsZSxuKSxzPTA7czx1Lmxlbmd0
aDtzKyspXy5xdWV1ZUNoaWxkKHIsdVtzXSl9fSxyZWNlaXZlQ29tcG9uZW50OmZ1bmN0aW9uKGUs
dCxuKXt2YXIgcj10aGlzLl9jdXJyZW50RWxlbWVudDt0aGlzLl9jdXJyZW50RWxlbWVudD1lLHRo
aXMudXBkYXRlQ29tcG9uZW50KHQscixlLG4pfSx1cGRhdGVDb21wb25lbnQ6ZnVuY3Rpb24oZSx0
LG4scil7dmFyIGk9dC5wcm9wcyxhPXRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO3N3aXRjaCh0
aGlzLl90YWcpe2Nhc2UiaW5wdXQiOmk9ay5nZXRIb3N0UHJvcHModGhpcyxpKSxhPWsuZ2V0SG9z
dFByb3BzKHRoaXMsYSk7YnJlYWs7Y2FzZSJvcHRpb24iOmk9TS5nZXRIb3N0UHJvcHModGhpcyxp
KSxhPU0uZ2V0SG9zdFByb3BzKHRoaXMsYSk7YnJlYWs7Y2FzZSJzZWxlY3QiOmk9Ti5nZXRIb3N0
UHJvcHModGhpcyxpKSxhPU4uZ2V0SG9zdFByb3BzKHRoaXMsYSk7YnJlYWs7Y2FzZSJ0ZXh0YXJl
YSI6aT1JLmdldEhvc3RQcm9wcyh0aGlzLGkpLGE9SS5nZXRIb3N0UHJvcHModGhpcyxhKX1zd2l0
Y2gobyh0aGlzLGEpLHRoaXMuX3VwZGF0ZURPTVByb3BlcnRpZXMoaSxhLGUpLHRoaXMuX3VwZGF0
ZURPTUNoaWxkcmVuKGksYSxlLHIpLHRoaXMuX3RhZyl7Y2FzZSJpbnB1dCI6ay51cGRhdGVXcmFw
cGVyKHRoaXMpO2JyZWFrO2Nhc2UidGV4dGFyZWEiOkkudXBkYXRlV3JhcHBlcih0aGlzKTticmVh
aztjYXNlInNlbGVjdCI6ZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGQsdGhpcyl9fSxf
dXBkYXRlRE9NUHJvcGVydGllczpmdW5jdGlvbihlLHQsbil7dmFyIHIsbyxhO2ZvcihyIGluIGUp
aWYoIXQuaGFzT3duUHJvcGVydHkocikmJmUuaGFzT3duUHJvcGVydHkocikmJm51bGwhPWVbcl0p
aWYocj09PUgpe3ZhciB1PXRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5O2ZvcihvIGluIHUpdS5oYXNP
d25Qcm9wZXJ0eShvKSYmKGE9YXx8e30sYVtvXT0iIik7dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk9
bnVsbH1lbHNlIFYuaGFzT3duUHJvcGVydHkocik/ZVtyXSYmVSh0aGlzLHIpOmgodGhpcy5fdGFn
LGUpP0suaGFzT3duUHJvcGVydHkocil8fHcuZGVsZXRlVmFsdWVGb3JBdHRyaWJ1dGUoRih0aGlz
KSxyKTooRS5wcm9wZXJ0aWVzW3JdfHxFLmlzQ3VzdG9tQXR0cmlidXRlKHIpKSYmdy5kZWxldGVW
YWx1ZUZvclByb3BlcnR5KEYodGhpcykscik7Zm9yKHIgaW4gdCl7dmFyIHM9dFtyXSxjPXI9PT1I
P3RoaXMuX3ByZXZpb3VzU3R5bGVDb3B5Om51bGwhPWU/ZVtyXTp2b2lkIDA7aWYodC5oYXNPd25Q
cm9wZXJ0eShyKSYmcyE9PWMmJihudWxsIT1zfHxudWxsIT1jKSlpZihyPT09SClpZihzP3M9dGhp
cy5fcHJldmlvdXNTdHlsZUNvcHk9eSh7fSxzKTp0aGlzLl9wcmV2aW91c1N0eWxlQ29weT1udWxs
LGMpe2ZvcihvIGluIGMpIWMuaGFzT3duUHJvcGVydHkobyl8fHMmJnMuaGFzT3duUHJvcGVydHko
byl8fChhPWF8fHt9LGFbb109IiIpO2ZvcihvIGluIHMpcy5oYXNPd25Qcm9wZXJ0eShvKSYmY1tv
XSE9PXNbb10mJihhPWF8fHt9LGFbb109c1tvXSl9ZWxzZSBhPXM7ZWxzZSBpZihWLmhhc093blBy
b3BlcnR5KHIpKXM/aSh0aGlzLHIscyxuKTpjJiZVKHRoaXMscik7ZWxzZSBpZihoKHRoaXMuX3Rh
Zyx0KSlLLmhhc093blByb3BlcnR5KHIpfHx3LnNldFZhbHVlRm9yQXR0cmlidXRlKEYodGhpcyks
cixzKTtlbHNlIGlmKEUucHJvcGVydGllc1tyXXx8RS5pc0N1c3RvbUF0dHJpYnV0ZShyKSl7dmFy
IGw9Rih0aGlzKTtudWxsIT1zP3cuc2V0VmFsdWVGb3JQcm9wZXJ0eShsLHIscyk6dy5kZWxldGVW
YWx1ZUZvclByb3BlcnR5KGwscil9fWEmJmIuc2V0VmFsdWVGb3JTdHlsZXMoRih0aGlzKSxhLHRo
aXMpfSxfdXBkYXRlRE9NQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89V1t0eXBlb2Yg
ZS5jaGlsZHJlbl0/ZS5jaGlsZHJlbjpudWxsLGk9V1t0eXBlb2YgdC5jaGlsZHJlbl0/dC5jaGls
ZHJlbjpudWxsLGE9ZS5kYW5nZXJvdXNseVNldElubmVySFRNTCYmZS5kYW5nZXJvdXNseVNldElu
bmVySFRNTC5fX2h0bWwsdT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZ0LmRhbmdlcm91c2x5
U2V0SW5uZXJIVE1MLl9faHRtbCxzPW51bGwhPW8/bnVsbDplLmNoaWxkcmVuLGM9bnVsbCE9aT9u
dWxsOnQuY2hpbGRyZW4sbD1udWxsIT1vfHxudWxsIT1hLHA9bnVsbCE9aXx8bnVsbCE9dTtudWxs
IT1zJiZudWxsPT1jP3RoaXMudXBkYXRlQ2hpbGRyZW4obnVsbCxuLHIpOmwmJiFwJiZ0aGlzLnVw
ZGF0ZVRleHRDb250ZW50KCIiKSxudWxsIT1pP28hPT1pJiZ0aGlzLnVwZGF0ZVRleHRDb250ZW50
KCIiK2kpOm51bGwhPXU/YSE9PXUmJnRoaXMudXBkYXRlTWFya3VwKCIiK3UpOm51bGwhPWMmJnRo
aXMudXBkYXRlQ2hpbGRyZW4oYyxuLHIpfSxnZXRIb3N0Tm9kZTpmdW5jdGlvbigpe3JldHVybiBG
KHRoaXMpfSx1bm1vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUpe3N3aXRjaCh0aGlzLl90YWcpe2Nh
c2UiYXVkaW8iOmNhc2UiZm9ybSI6Y2FzZSJpZnJhbWUiOmNhc2UiaW1nIjpjYXNlImxpbmsiOmNh
c2Uib2JqZWN0IjpjYXNlInNvdXJjZSI6Y2FzZSJ2aWRlbyI6dmFyIHQ9dGhpcy5fd3JhcHBlclN0
YXRlLmxpc3RlbmVycztpZih0KWZvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXRbbl0ucmVtb3Zl
KCk7YnJlYWs7Y2FzZSJpbnB1dCI6Y2FzZSJ0ZXh0YXJlYSI6ai5zdG9wVHJhY2tpbmcodGhpcyk7
YnJlYWs7Y2FzZSJodG1sIjpjYXNlImhlYWQiOmNhc2UiYm9keSI6bSgiNjYiLHRoaXMuX3RhZyl9
dGhpcy51bm1vdW50Q2hpbGRyZW4oZSksUy51bmNhY2hlTm9kZSh0aGlzKSxULmRlbGV0ZUFsbExp
c3RlbmVycyh0aGlzKSx0aGlzLl9yb290Tm9kZUlEPTAsdGhpcy5fZG9tSUQ9MCx0aGlzLl93cmFw
cGVyU3RhdGU9bnVsbH0sZ2V0UHVibGljSW5zdGFuY2U6ZnVuY3Rpb24oKXtyZXR1cm4gRih0aGlz
KX19LHkodi5wcm90b3R5cGUsdi5NaXhpbixSLk1peGluKSxlLmV4cG9ydHM9dn0sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7dmFyIG49e190b3BMZXZlbFdyYXBw
ZXI6ZSxfaWRDb3VudGVyOjEsX293bmVyRG9jdW1lbnQ6dD90Lm5vZGVUeXBlPT09bz90OnQub3du
ZXJEb2N1bWVudDpudWxsLF9ub2RlOnQsX3RhZzp0P3Qubm9kZU5hbWUudG9Mb3dlckNhc2UoKTpu
dWxsLF9uYW1lc3BhY2VVUkk6dD90Lm5hbWVzcGFjZVVSSTpudWxsfTtyZXR1cm4gbn12YXIgbz0o
big0OSksOSk7ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9
big0KSxvPW4oMTQpLGk9big1KSxhPWZ1bmN0aW9uKGUpe3RoaXMuX2N1cnJlbnRFbGVtZW50PW51
bGwsdGhpcy5faG9zdE5vZGU9bnVsbCx0aGlzLl9ob3N0UGFyZW50PW51bGwsdGhpcy5faG9zdENv
bnRhaW5lckluZm89bnVsbCx0aGlzLl9kb21JRD0wfTtyKGEucHJvdG90eXBlLHttb3VudENvbXBv
bmVudDpmdW5jdGlvbihlLHQsbixyKXt2YXIgYT1uLl9pZENvdW50ZXIrKzt0aGlzLl9kb21JRD1h
LHRoaXMuX2hvc3RQYXJlbnQ9dCx0aGlzLl9ob3N0Q29udGFpbmVySW5mbz1uO3ZhciB1PSIgcmVh
Y3QtZW1wdHk6ICIrdGhpcy5fZG9tSUQrIiAiO2lmKGUudXNlQ3JlYXRlRWxlbWVudCl7dmFyIHM9
bi5fb3duZXJEb2N1bWVudCxjPXMuY3JlYXRlQ29tbWVudCh1KTtyZXR1cm4gaS5wcmVjYWNoZU5v
ZGUodGhpcyxjKSxvKGMpfXJldHVybiBlLnJlbmRlclRvU3RhdGljTWFya3VwPyIiOiI8IS0tIit1
KyItLT4ifSxyZWNlaXZlQ29tcG9uZW50OmZ1bmN0aW9uKCl7fSxnZXRIb3N0Tm9kZTpmdW5jdGlv
bigpe3JldHVybiBpLmdldE5vZGVGcm9tSW5zdGFuY2UodGhpcyl9LHVubW91bnRDb21wb25lbnQ6
ZnVuY3Rpb24oKXtpLnVuY2FjaGVOb2RlKHRoaXMpfX0pLGUuZXhwb3J0cz1hfSxmdW5jdGlvbihl
LHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17dXNlQ3JlYXRlRWxlbWVudDohMCx1c2VGaWJlcjohMX07
ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigzNCksbz1u
KDUpLGk9e2Rhbmdlcm91c2x5UHJvY2Vzc0NoaWxkcmVuVXBkYXRlczpmdW5jdGlvbihlLHQpe3Zh
ciBuPW8uZ2V0Tm9kZUZyb21JbnN0YW5jZShlKTtyLnByb2Nlc3NVcGRhdGVzKG4sdCl9fTtlLmV4
cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7dGhpcy5f
cm9vdE5vZGVJRCYmZC51cGRhdGVXcmFwcGVyKHRoaXMpfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9ImNo
ZWNrYm94Ij09PWUudHlwZXx8InJhZGlvIj09PWUudHlwZTtyZXR1cm4gdD9udWxsIT1lLmNoZWNr
ZWQ6bnVsbCE9ZS52YWx1ZX1mdW5jdGlvbiBpKGUpe3ZhciB0PXRoaXMuX2N1cnJlbnRFbGVtZW50
LnByb3BzLG49Yy5leGVjdXRlT25DaGFuZ2UodCxlKTtwLmFzYXAocix0aGlzKTt2YXIgbz10Lm5h
bWU7aWYoInJhZGlvIj09PXQudHlwZSYmbnVsbCE9byl7Zm9yKHZhciBpPWwuZ2V0Tm9kZUZyb21J
bnN0YW5jZSh0aGlzKSx1PWk7dS5wYXJlbnROb2RlOyl1PXUucGFyZW50Tm9kZTtmb3IodmFyIHM9
dS5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dFtuYW1lPSIrSlNPTi5zdHJpbmdpZnkoIiIrbykrJ11b
dHlwZT0icmFkaW8iXScpLGQ9MDtkPHMubGVuZ3RoO2QrKyl7dmFyIGY9c1tkXTtpZihmIT09aSYm
Zi5mb3JtPT09aS5mb3JtKXt2YXIgaD1sLmdldEluc3RhbmNlRnJvbU5vZGUoZik7aD92b2lkIDA6
YSgiOTAiKSxwLmFzYXAocixoKX19fXJldHVybiBufXZhciBhPW4oMyksdT1uKDQpLHM9big2MCks
Yz1uKDM5KSxsPW4oNSkscD1uKDkpLGQ9KG4oMSksbigyKSx7Z2V0SG9zdFByb3BzOmZ1bmN0aW9u
KGUsdCl7dmFyIG49Yy5nZXRWYWx1ZSh0KSxyPWMuZ2V0Q2hlY2tlZCh0KSxvPXUoe3R5cGU6dm9p
ZCAwLHN0ZXA6dm9pZCAwLG1pbjp2b2lkIDAsbWF4OnZvaWQgMH0sdCx7ZGVmYXVsdENoZWNrZWQ6
dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsdmFsdWU6bnVsbCE9bj9uOmUuX3dyYXBwZXJTdGF0
ZS5pbml0aWFsVmFsdWUsY2hlY2tlZDpudWxsIT1yP3I6ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxD
aGVja2VkLG9uQ2hhbmdlOmUuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZX0pO3JldHVybiBvfSxtb3Vu
dFdyYXBwZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmRlZmF1bHRWYWx1ZTtlLl93cmFwcGVyU3Rh
dGU9e2luaXRpYWxDaGVja2VkOm51bGwhPXQuY2hlY2tlZD90LmNoZWNrZWQ6dC5kZWZhdWx0Q2hl
Y2tlZCxpbml0aWFsVmFsdWU6bnVsbCE9dC52YWx1ZT90LnZhbHVlOm4sbGlzdGVuZXJzOm51bGws
b25DaGFuZ2U6aS5iaW5kKGUpLGNvbnRyb2xsZWQ6byh0KX19LHVwZGF0ZVdyYXBwZXI6ZnVuY3Rp
b24oZSl7dmFyIHQ9ZS5fY3VycmVudEVsZW1lbnQucHJvcHMsbj10LmNoZWNrZWQ7bnVsbCE9biYm
cy5zZXRWYWx1ZUZvclByb3BlcnR5KGwuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKSwiY2hlY2tlZCIs
bnx8ITEpO3ZhciByPWwuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKSxvPWMuZ2V0VmFsdWUodCk7aWYo
bnVsbCE9bylpZigwPT09byYmIiI9PT1yLnZhbHVlKXIudmFsdWU9IjAiO2Vsc2UgaWYoIm51bWJl
ciI9PT10LnR5cGUpe3ZhciBpPXBhcnNlRmxvYXQoci52YWx1ZSwxMCl8fDA7KG8hPWl8fG89PWkm
JnIudmFsdWUhPW8pJiYoci52YWx1ZT0iIitvKX1lbHNlIHIudmFsdWUhPT0iIitvJiYoci52YWx1
ZT0iIitvKTtlbHNlIG51bGw9PXQudmFsdWUmJm51bGwhPXQuZGVmYXVsdFZhbHVlJiZyLmRlZmF1
bHRWYWx1ZSE9PSIiK3QuZGVmYXVsdFZhbHVlJiYoci5kZWZhdWx0VmFsdWU9IiIrdC5kZWZhdWx0
VmFsdWUpLG51bGw9PXQuY2hlY2tlZCYmbnVsbCE9dC5kZWZhdWx0Q2hlY2tlZCYmKHIuZGVmYXVs
dENoZWNrZWQ9ISF0LmRlZmF1bHRDaGVja2VkKX0scG9zdE1vdW50V3JhcHBlcjpmdW5jdGlvbihl
KXt2YXIgdD1lLl9jdXJyZW50RWxlbWVudC5wcm9wcyxuPWwuZ2V0Tm9kZUZyb21JbnN0YW5jZShl
KTtzd2l0Y2godC50eXBlKXtjYXNlInN1Ym1pdCI6Y2FzZSJyZXNldCI6YnJlYWs7Y2FzZSJjb2xv
ciI6Y2FzZSJkYXRlIjpjYXNlImRhdGV0aW1lIjpjYXNlImRhdGV0aW1lLWxvY2FsIjpjYXNlIm1v
bnRoIjpjYXNlInRpbWUiOmNhc2Uid2VlayI6bi52YWx1ZT0iIixuLnZhbHVlPW4uZGVmYXVsdFZh
bHVlO2JyZWFrO2RlZmF1bHQ6bi52YWx1ZT1uLnZhbHVlfXZhciByPW4ubmFtZTsiIiE9PXImJihu
Lm5hbWU9IiIpLG4uZGVmYXVsdENoZWNrZWQ9IW4uZGVmYXVsdENoZWNrZWQsbi5kZWZhdWx0Q2hl
Y2tlZD0hbi5kZWZhdWx0Q2hlY2tlZCwiIiE9PXImJihuLm5hbWU9cil9fSk7ZS5leHBvcnRzPWR9
LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD0iIjtyZXR1
cm4gaS5DaGlsZHJlbi5mb3JFYWNoKGUsZnVuY3Rpb24oZSl7bnVsbCE9ZSYmKCJzdHJpbmciPT10
eXBlb2YgZXx8Im51bWJlciI9PXR5cGVvZiBlP3QrPWU6c3x8KHM9ITApKX0pLHR9dmFyIG89big0
KSxpPW4oMTcpLGE9big1KSx1PW4oNjIpLHM9KG4oMiksITEpLGM9e21vdW50V3JhcHBlcjpmdW5j
dGlvbihlLHQsbil7dmFyIG89bnVsbDtpZihudWxsIT1uKXt2YXIgaT1uOyJvcHRncm91cCI9PT1p
Ll90YWcmJihpPWkuX2hvc3RQYXJlbnQpLG51bGwhPWkmJiJzZWxlY3QiPT09aS5fdGFnJiYobz11
LmdldFNlbGVjdFZhbHVlQ29udGV4dChpKSl9dmFyIGE9bnVsbDtpZihudWxsIT1vKXt2YXIgcztp
ZihzPW51bGwhPXQudmFsdWU/dC52YWx1ZSsiIjpyKHQuY2hpbGRyZW4pLGE9ITEsQXJyYXkuaXNB
cnJheShvKSl7Zm9yKHZhciBjPTA7YzxvLmxlbmd0aDtjKyspaWYoIiIrb1tjXT09PXMpe2E9ITA7
YnJlYWt9fWVsc2UgYT0iIitvPT09c31lLl93cmFwcGVyU3RhdGU9e3NlbGVjdGVkOmF9fSxwb3N0
TW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50LnByb3BzO2lm
KG51bGwhPXQudmFsdWUpe3ZhciBuPWEuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKTtuLnNldEF0dHJp
YnV0ZSgidmFsdWUiLHQudmFsdWUpfX0sZ2V0SG9zdFByb3BzOmZ1bmN0aW9uKGUsdCl7dmFyIG49
byh7c2VsZWN0ZWQ6dm9pZCAwLGNoaWxkcmVuOnZvaWQgMH0sdCk7bnVsbCE9ZS5fd3JhcHBlclN0
YXRlLnNlbGVjdGVkJiYobi5zZWxlY3RlZD1lLl93cmFwcGVyU3RhdGUuc2VsZWN0ZWQpO3ZhciBp
PXIodC5jaGlsZHJlbik7cmV0dXJuIGkmJihuLmNoaWxkcmVuPWkpLG59fTtlLmV4cG9ydHM9Y30s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBl
PT09biYmdD09PXJ9ZnVuY3Rpb24gbyhlKXt2YXIgdD1kb2N1bWVudC5zZWxlY3Rpb24sbj10LmNy
ZWF0ZVJhbmdlKCkscj1uLnRleHQubGVuZ3RoLG89bi5kdXBsaWNhdGUoKTtvLm1vdmVUb0VsZW1l
bnRUZXh0KGUpLG8uc2V0RW5kUG9pbnQoIkVuZFRvU3RhcnQiLG4pO3ZhciBpPW8udGV4dC5sZW5n
dGgsYT1pK3I7cmV0dXJue3N0YXJ0OmksZW5kOmF9fWZ1bmN0aW9uIGkoZSl7dmFyIHQ9d2luZG93
LmdldFNlbGVjdGlvbiYmd2luZG93LmdldFNlbGVjdGlvbigpO2lmKCF0fHwwPT09dC5yYW5nZUNv
dW50KXJldHVybiBudWxsO3ZhciBuPXQuYW5jaG9yTm9kZSxvPXQuYW5jaG9yT2Zmc2V0LGk9dC5m
b2N1c05vZGUsYT10LmZvY3VzT2Zmc2V0LHU9dC5nZXRSYW5nZUF0KDApO3RyeXt1LnN0YXJ0Q29u
dGFpbmVyLm5vZGVUeXBlLHUuZW5kQ29udGFpbmVyLm5vZGVUeXBlfWNhdGNoKHMpe3JldHVybiBu
dWxsfXZhciBjPXIodC5hbmNob3JOb2RlLHQuYW5jaG9yT2Zmc2V0LHQuZm9jdXNOb2RlLHQuZm9j
dXNPZmZzZXQpLGw9Yz8wOnUudG9TdHJpbmcoKS5sZW5ndGgscD11LmNsb25lUmFuZ2UoKTtwLnNl
bGVjdE5vZGVDb250ZW50cyhlKSxwLnNldEVuZCh1LnN0YXJ0Q29udGFpbmVyLHUuc3RhcnRPZmZz
ZXQpO3ZhciBkPXIocC5zdGFydENvbnRhaW5lcixwLnN0YXJ0T2Zmc2V0LHAuZW5kQ29udGFpbmVy
LHAuZW5kT2Zmc2V0KSxmPWQ/MDpwLnRvU3RyaW5nKCkubGVuZ3RoLGg9ZitsLHY9ZG9jdW1lbnQu
Y3JlYXRlUmFuZ2UoKTt2LnNldFN0YXJ0KG4sbyksdi5zZXRFbmQoaSxhKTt2YXIgbT12LmNvbGxh
cHNlZDtyZXR1cm57c3RhcnQ6bT9oOmYsZW5kOm0/ZjpofX1mdW5jdGlvbiBhKGUsdCl7dmFyIG4s
cixvPWRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpLmR1cGxpY2F0ZSgpO3ZvaWQgMD09
PXQuZW5kPyhuPXQuc3RhcnQscj1uKTp0LnN0YXJ0PnQuZW5kPyhuPXQuZW5kLHI9dC5zdGFydCk6
KG49dC5zdGFydCxyPXQuZW5kKSxvLm1vdmVUb0VsZW1lbnRUZXh0KGUpLG8ubW92ZVN0YXJ0KCJj
aGFyYWN0ZXIiLG4pLG8uc2V0RW5kUG9pbnQoIkVuZFRvU3RhcnQiLG8pLG8ubW92ZUVuZCgiY2hh
cmFjdGVyIixyLW4pLG8uc2VsZWN0KCl9ZnVuY3Rpb24gdShlLHQpe2lmKHdpbmRvdy5nZXRTZWxl
Y3Rpb24pe3ZhciBuPXdpbmRvdy5nZXRTZWxlY3Rpb24oKSxyPWVbbCgpXS5sZW5ndGgsbz1NYXRo
Lm1pbih0LnN0YXJ0LHIpLGk9dm9pZCAwPT09dC5lbmQ/bzpNYXRoLm1pbih0LmVuZCxyKTtpZigh
bi5leHRlbmQmJm8+aSl7dmFyIGE9aTtpPW8sbz1hfXZhciB1PWMoZSxvKSxzPWMoZSxpKTtpZih1
JiZzKXt2YXIgcD1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO3Auc2V0U3RhcnQodS5ub2RlLHUub2Zm
c2V0KSxuLnJlbW92ZUFsbFJhbmdlcygpLG8+aT8obi5hZGRSYW5nZShwKSxuLmV4dGVuZChzLm5v
ZGUscy5vZmZzZXQpKToocC5zZXRFbmQocy5ub2RlLHMub2Zmc2V0KSxuLmFkZFJhbmdlKHApKX19
fXZhciBzPW4oNiksYz1uKDE4MyksbD1uKDczKSxwPXMuY2FuVXNlRE9NJiYic2VsZWN0aW9uImlu
IGRvY3VtZW50JiYhKCJnZXRTZWxlY3Rpb24iaW4gd2luZG93KSxkPXtnZXRPZmZzZXRzOnA/bzpp
LHNldE9mZnNldHM6cD9hOnV9O2UuZXhwb3J0cz1kfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3ZhciByPW4oMyksbz1uKDQpLGk9bigzNCksYT1uKDE0KSx1PW4oNSkscz1uKDI4KSxjPShu
KDEpLG4oNDkpLGZ1bmN0aW9uKGUpe3RoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fc3RyaW5n
VGV4dD0iIitlLHRoaXMuX2hvc3ROb2RlPW51bGwsdGhpcy5faG9zdFBhcmVudD1udWxsLHRoaXMu
X2RvbUlEPTAsdGhpcy5fbW91bnRJbmRleD0wLHRoaXMuX2Nsb3NpbmdDb21tZW50PW51bGwsdGhp
cy5fY29tbWVudE5vZGVzPW51bGx9KTtvKGMucHJvdG90eXBlLHttb3VudENvbXBvbmVudDpmdW5j
dGlvbihlLHQsbixyKXt2YXIgbz1uLl9pZENvdW50ZXIrKyxpPSIgcmVhY3QtdGV4dDogIitvKyIg
IixjPSIgL3JlYWN0LXRleHQgIjtpZih0aGlzLl9kb21JRD1vLHRoaXMuX2hvc3RQYXJlbnQ9dCxl
LnVzZUNyZWF0ZUVsZW1lbnQpe3ZhciBsPW4uX293bmVyRG9jdW1lbnQscD1sLmNyZWF0ZUNvbW1l
bnQoaSksZD1sLmNyZWF0ZUNvbW1lbnQoYyksZj1hKGwuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgp
KTtyZXR1cm4gYS5xdWV1ZUNoaWxkKGYsYShwKSksdGhpcy5fc3RyaW5nVGV4dCYmYS5xdWV1ZUNo
aWxkKGYsYShsLmNyZWF0ZVRleHROb2RlKHRoaXMuX3N0cmluZ1RleHQpKSksYS5xdWV1ZUNoaWxk
KGYsYShkKSksdS5wcmVjYWNoZU5vZGUodGhpcyxwKSx0aGlzLl9jbG9zaW5nQ29tbWVudD1kLGZ9
dmFyIGg9cyh0aGlzLl9zdHJpbmdUZXh0KTtyZXR1cm4gZS5yZW5kZXJUb1N0YXRpY01hcmt1cD9o
OiI8IS0tIitpKyItLT4iK2grIjwhLS0iK2MrIi0tPiJ9LHJlY2VpdmVDb21wb25lbnQ6ZnVuY3Rp
b24oZSx0KXtpZihlIT09dGhpcy5fY3VycmVudEVsZW1lbnQpe3RoaXMuX2N1cnJlbnRFbGVtZW50
PWU7dmFyIG49IiIrZTtpZihuIT09dGhpcy5fc3RyaW5nVGV4dCl7dGhpcy5fc3RyaW5nVGV4dD1u
O3ZhciByPXRoaXMuZ2V0SG9zdE5vZGUoKTtpLnJlcGxhY2VEZWxpbWl0ZWRUZXh0KHJbMF0sclsx
XSxuKX19fSwKK2dldEhvc3ROb2RlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5fY29tbWVudE5vZGVz
O2lmKGUpcmV0dXJuIGU7aWYoIXRoaXMuX2Nsb3NpbmdDb21tZW50KWZvcih2YXIgdD11LmdldE5v
ZGVGcm9tSW5zdGFuY2UodGhpcyksbj10Lm5leHRTaWJsaW5nOzspe2lmKG51bGw9PW4/cigiNjci
LHRoaXMuX2RvbUlEKTp2b2lkIDAsOD09PW4ubm9kZVR5cGUmJiIgL3JlYWN0LXRleHQgIj09PW4u
bm9kZVZhbHVlKXt0aGlzLl9jbG9zaW5nQ29tbWVudD1uO2JyZWFrfW49bi5uZXh0U2libGluZ31y
ZXR1cm4gZT1bdGhpcy5faG9zdE5vZGUsdGhpcy5fY2xvc2luZ0NvbW1lbnRdLHRoaXMuX2NvbW1l
bnROb2Rlcz1lLGV9LHVubW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oKXt0aGlzLl9jbG9zaW5nQ29t
bWVudD1udWxsLHRoaXMuX2NvbW1lbnROb2Rlcz1udWxsLHUudW5jYWNoZU5vZGUodGhpcyl9fSks
ZS5leHBvcnRzPWN9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3Ro
aXMuX3Jvb3ROb2RlSUQmJmwudXBkYXRlV3JhcHBlcih0aGlzKX1mdW5jdGlvbiBvKGUpe3ZhciB0
PXRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzLG49dS5leGVjdXRlT25DaGFuZ2UodCxlKTtyZXR1
cm4gYy5hc2FwKHIsdGhpcyksbn12YXIgaT1uKDMpLGE9big0KSx1PW4oMzkpLHM9big1KSxjPW4o
OSksbD0obigxKSxuKDIpLHtnZXRIb3N0UHJvcHM6ZnVuY3Rpb24oZSx0KXtudWxsIT10LmRhbmdl
cm91c2x5U2V0SW5uZXJIVE1MP2koIjkxIik6dm9pZCAwO3ZhciBuPWEoe30sdCx7dmFsdWU6dm9p
ZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsY2hpbGRyZW46IiIrZS5fd3JhcHBlclN0YXRlLmluaXRp
YWxWYWx1ZSxvbkNoYW5nZTplLl93cmFwcGVyU3RhdGUub25DaGFuZ2V9KTtyZXR1cm4gbn0sbW91
bnRXcmFwcGVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49dS5nZXRWYWx1ZSh0KSxyPW47aWYobnVsbD09
bil7dmFyIGE9dC5kZWZhdWx0VmFsdWUscz10LmNoaWxkcmVuO251bGwhPXMmJihudWxsIT1hP2ko
IjkyIik6dm9pZCAwLEFycmF5LmlzQXJyYXkocykmJihzLmxlbmd0aDw9MT92b2lkIDA6aSgiOTMi
KSxzPXNbMF0pLGE9IiIrcyksbnVsbD09YSYmKGE9IiIpLHI9YX1lLl93cmFwcGVyU3RhdGU9e2lu
aXRpYWxWYWx1ZToiIityLGxpc3RlbmVyczpudWxsLG9uQ2hhbmdlOm8uYmluZChlKX19LHVwZGF0
ZVdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5fY3VycmVudEVsZW1lbnQucHJvcHMsbj1zLmdl
dE5vZGVGcm9tSW5zdGFuY2UoZSkscj11LmdldFZhbHVlKHQpO2lmKG51bGwhPXIpe3ZhciBvPSIi
K3I7byE9PW4udmFsdWUmJihuLnZhbHVlPW8pLG51bGw9PXQuZGVmYXVsdFZhbHVlJiYobi5kZWZh
dWx0VmFsdWU9byl9bnVsbCE9dC5kZWZhdWx0VmFsdWUmJihuLmRlZmF1bHRWYWx1ZT10LmRlZmF1
bHRWYWx1ZSl9LHBvc3RNb3VudFdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9cy5nZXROb2RlRnJv
bUluc3RhbmNlKGUpLG49dC50ZXh0Q29udGVudDtuPT09ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxW
YWx1ZSYmKHQudmFsdWU9bil9fSk7ZS5leHBvcnRzPWx9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlLHQpeyJfaG9zdE5vZGUiaW4gZT92b2lkIDA6cygiMzMiKSwiX2hv
c3ROb2RlImluIHQ/dm9pZCAwOnMoIjMzIik7Zm9yKHZhciBuPTAscj1lO3I7cj1yLl9ob3N0UGFy
ZW50KW4rKztmb3IodmFyIG89MCxpPXQ7aTtpPWkuX2hvc3RQYXJlbnQpbysrO2Zvcig7bi1vPjA7
KWU9ZS5faG9zdFBhcmVudCxuLS07Zm9yKDtvLW4+MDspdD10Ll9ob3N0UGFyZW50LG8tLTtmb3Io
dmFyIGE9bjthLS07KXtpZihlPT09dClyZXR1cm4gZTtlPWUuX2hvc3RQYXJlbnQsdD10Ll9ob3N0
UGFyZW50fXJldHVybiBudWxsfWZ1bmN0aW9uIG8oZSx0KXsiX2hvc3ROb2RlImluIGU/dm9pZCAw
OnMoIjM1IiksIl9ob3N0Tm9kZSJpbiB0P3ZvaWQgMDpzKCIzNSIpO2Zvcig7dDspe2lmKHQ9PT1l
KXJldHVybiEwO3Q9dC5faG9zdFBhcmVudH1yZXR1cm4hMX1mdW5jdGlvbiBpKGUpe3JldHVybiJf
aG9zdE5vZGUiaW4gZT92b2lkIDA6cygiMzYiKSxlLl9ob3N0UGFyZW50fWZ1bmN0aW9uIGEoZSx0
LG4pe2Zvcih2YXIgcj1bXTtlOylyLnB1c2goZSksZT1lLl9ob3N0UGFyZW50O3ZhciBvO2Zvcihv
PXIubGVuZ3RoO28tLSA+MDspdChyW29dLCJjYXB0dXJlZCIsbik7Zm9yKG89MDtvPHIubGVuZ3Ro
O28rKyl0KHJbb10sImJ1YmJsZWQiLG4pfWZ1bmN0aW9uIHUoZSx0LG4sbyxpKXtmb3IodmFyIGE9
ZSYmdD9yKGUsdCk6bnVsbCx1PVtdO2UmJmUhPT1hOyl1LnB1c2goZSksZT1lLl9ob3N0UGFyZW50
O2Zvcih2YXIgcz1bXTt0JiZ0IT09YTspcy5wdXNoKHQpLHQ9dC5faG9zdFBhcmVudDt2YXIgYztm
b3IoYz0wO2M8dS5sZW5ndGg7YysrKW4odVtjXSwiYnViYmxlZCIsbyk7Zm9yKGM9cy5sZW5ndGg7
Yy0tID4wOyluKHNbY10sImNhcHR1cmVkIixpKX12YXIgcz1uKDMpO24oMSk7ZS5leHBvcnRzPXtp
c0FuY2VzdG9yOm8sZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3I6cixnZXRQYXJlbnRJbnN0YW5jZTpp
LHRyYXZlcnNlVHdvUGhhc2U6YSx0cmF2ZXJzZUVudGVyTGVhdmU6dX19LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3RoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24o
KX12YXIgbz1uKDQpLGk9big5KSxhPW4oMjcpLHU9big3KSxzPXtpbml0aWFsaXplOnUsY2xvc2U6
ZnVuY3Rpb24oKXtkLmlzQmF0Y2hpbmdVcGRhdGVzPSExfX0sYz17aW5pdGlhbGl6ZTp1LGNsb3Nl
OmkuZmx1c2hCYXRjaGVkVXBkYXRlcy5iaW5kKGkpfSxsPVtjLHNdO28oci5wcm90b3R5cGUsYSx7
Z2V0VHJhbnNhY3Rpb25XcmFwcGVyczpmdW5jdGlvbigpe3JldHVybiBsfX0pO3ZhciBwPW5ldyBy
LGQ9e2lzQmF0Y2hpbmdVcGRhdGVzOiExLGJhdGNoZWRVcGRhdGVzOmZ1bmN0aW9uKGUsdCxuLHIs
byxpKXt2YXIgYT1kLmlzQmF0Y2hpbmdVcGRhdGVzO3JldHVybiBkLmlzQmF0Y2hpbmdVcGRhdGVz
PSEwLGE/ZSh0LG4scixvLGkpOnAucGVyZm9ybShlLG51bGwsdCxuLHIsbyxpKX19O2UuZXhwb3J0
cz1kfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt3fHwodz0hMCxn
LkV2ZW50RW1pdHRlci5pbmplY3RSZWFjdEV2ZW50TGlzdGVuZXIoeSksZy5FdmVudFBsdWdpbkh1
Yi5pbmplY3RFdmVudFBsdWdpbk9yZGVyKHUpLGcuRXZlbnRQbHVnaW5VdGlscy5pbmplY3RDb21w
b25lbnRUcmVlKGQpLGcuRXZlbnRQbHVnaW5VdGlscy5pbmplY3RUcmVlVHJhdmVyc2FsKGgpLGcu
RXZlbnRQbHVnaW5IdWIuaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lKHtTaW1wbGVFdmVudFBsdWdp
bjpFLEVudGVyTGVhdmVFdmVudFBsdWdpbjpzLENoYW5nZUV2ZW50UGx1Z2luOmEsU2VsZWN0RXZl
bnRQbHVnaW46QyxCZWZvcmVJbnB1dEV2ZW50UGx1Z2luOml9KSxnLkhvc3RDb21wb25lbnQuaW5q
ZWN0R2VuZXJpY0NvbXBvbmVudENsYXNzKHApLGcuSG9zdENvbXBvbmVudC5pbmplY3RUZXh0Q29t
cG9uZW50Q2xhc3ModiksZy5ET01Qcm9wZXJ0eS5pbmplY3RET01Qcm9wZXJ0eUNvbmZpZyhvKSxn
LkRPTVByb3BlcnR5LmluamVjdERPTVByb3BlcnR5Q29uZmlnKGMpLGcuRE9NUHJvcGVydHkuaW5q
ZWN0RE9NUHJvcGVydHlDb25maWcoXyksZy5FbXB0eUNvbXBvbmVudC5pbmplY3RFbXB0eUNvbXBv
bmVudEZhY3RvcnkoZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBmKGUpfSksZy5VcGRhdGVzLmluamVj
dFJlY29uY2lsZVRyYW5zYWN0aW9uKGIpLGcuVXBkYXRlcy5pbmplY3RCYXRjaGluZ1N0cmF0ZWd5
KG0pLGcuQ29tcG9uZW50LmluamVjdEVudmlyb25tZW50KGwpKX12YXIgbz1uKDEyNCksaT1uKDEy
NiksYT1uKDEyOCksdT1uKDEzMCkscz1uKDEzMSksYz1uKDEzMyksbD1uKDEzNSkscD1uKDEzOCks
ZD1uKDUpLGY9bigxNDApLGg9bigxNDgpLHY9bigxNDYpLG09bigxNDkpLHk9bigxNTMpLGc9bigx
NTQpLGI9bigxNTkpLF89bigxNjQpLEM9bigxNjUpLEU9bigxNjYpLHc9ITE7ZS5leHBvcnRzPXtp
bmplY3Q6cn19LDkxLGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtv
LmVucXVldWVFdmVudHMoZSksby5wcm9jZXNzRXZlbnRRdWV1ZSghMSl9dmFyIG89bigxOSksaT17
aGFuZGxlVG9wTGV2ZWw6ZnVuY3Rpb24oZSx0LG4saSl7dmFyIGE9by5leHRyYWN0RXZlbnRzKGUs
dCxuLGkpO3IoYSl9fTtlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUpe2Zvcig7ZS5faG9zdFBhcmVudDspZT1lLl9ob3N0UGFyZW50O3ZhciB0PXAu
Z2V0Tm9kZUZyb21JbnN0YW5jZShlKSxuPXQucGFyZW50Tm9kZTtyZXR1cm4gcC5nZXRDbG9zZXN0
SW5zdGFuY2VGcm9tTm9kZShuKX1mdW5jdGlvbiBvKGUsdCl7dGhpcy50b3BMZXZlbFR5cGU9ZSx0
aGlzLm5hdGl2ZUV2ZW50PXQsdGhpcy5hbmNlc3RvcnM9W119ZnVuY3Rpb24gaShlKXt2YXIgdD1m
KGUubmF0aXZlRXZlbnQpLG49cC5nZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZSh0KSxvPW47ZG8g
ZS5hbmNlc3RvcnMucHVzaChvKSxvPW8mJnIobyk7d2hpbGUobyk7Zm9yKHZhciBpPTA7aTxlLmFu
Y2VzdG9ycy5sZW5ndGg7aSsrKW49ZS5hbmNlc3RvcnNbaV0sdi5faGFuZGxlVG9wTGV2ZWwoZS50
b3BMZXZlbFR5cGUsbixlLm5hdGl2ZUV2ZW50LGYoZS5uYXRpdmVFdmVudCkpfWZ1bmN0aW9uIGEo
ZSl7dmFyIHQ9aCh3aW5kb3cpO2UodCl9dmFyIHU9big0KSxzPW4oNTEpLGM9big2KSxsPW4oMTMp
LHA9big1KSxkPW4oOSksZj1uKDQ2KSxoPW4oMTA0KTt1KG8ucHJvdG90eXBlLHtkZXN0cnVjdG9y
OmZ1bmN0aW9uKCl7dGhpcy50b3BMZXZlbFR5cGU9bnVsbCx0aGlzLm5hdGl2ZUV2ZW50PW51bGws
dGhpcy5hbmNlc3RvcnMubGVuZ3RoPTB9fSksbC5hZGRQb29saW5nVG8obyxsLnR3b0FyZ3VtZW50
UG9vbGVyKTt2YXIgdj17X2VuYWJsZWQ6ITAsX2hhbmRsZVRvcExldmVsOm51bGwsV0lORE9XX0hB
TkRMRTpjLmNhblVzZURPTT93aW5kb3c6bnVsbCxzZXRIYW5kbGVUb3BMZXZlbDpmdW5jdGlvbihl
KXt2Ll9oYW5kbGVUb3BMZXZlbD1lfSxzZXRFbmFibGVkOmZ1bmN0aW9uKGUpe3YuX2VuYWJsZWQ9
ISFlfSxpc0VuYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdi5fZW5hYmxlZH0sdHJhcEJ1YmJsZWRF
dmVudDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG4/cy5saXN0ZW4obix0LHYuZGlzcGF0Y2hFdmVu
dC5iaW5kKG51bGwsZSkpOm51bGx9LHRyYXBDYXB0dXJlZEV2ZW50OmZ1bmN0aW9uKGUsdCxuKXty
ZXR1cm4gbj9zLmNhcHR1cmUobix0LHYuZGlzcGF0Y2hFdmVudC5iaW5kKG51bGwsZSkpOm51bGx9
LG1vbml0b3JTY3JvbGxWYWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1hLmJpbmQobnVsbCxlKTtzLmxp
c3Rlbih3aW5kb3csInNjcm9sbCIsdCl9LGRpc3BhdGNoRXZlbnQ6ZnVuY3Rpb24oZSx0KXtpZih2
Ll9lbmFibGVkKXt2YXIgbj1vLmdldFBvb2xlZChlLHQpO3RyeXtkLmJhdGNoZWRVcGRhdGVzKGks
bil9ZmluYWxseXtvLnJlbGVhc2Uobil9fX19O2UuZXhwb3J0cz12fSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO3ZhciByPW4oMTUpLG89bigxOSksaT1uKDM3KSxhPW4oNDApLHU9big2Myks
cz1uKDI1KSxjPW4oNjUpLGw9big5KSxwPXtDb21wb25lbnQ6YS5pbmplY3Rpb24sRE9NUHJvcGVy
dHk6ci5pbmplY3Rpb24sRW1wdHlDb21wb25lbnQ6dS5pbmplY3Rpb24sRXZlbnRQbHVnaW5IdWI6
by5pbmplY3Rpb24sRXZlbnRQbHVnaW5VdGlsczppLmluamVjdGlvbixFdmVudEVtaXR0ZXI6cy5p
bmplY3Rpb24sSG9zdENvbXBvbmVudDpjLmluamVjdGlvbixVcGRhdGVzOmwuaW5qZWN0aW9ufTtl
LmV4cG9ydHM9cH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDE3Nyksbz0v
XC8/Pi8saT0vXjxcIVwtXC0vLGE9e0NIRUNLU1VNX0FUVFJfTkFNRToiZGF0YS1yZWFjdC1jaGVj
a3N1bSIsYWRkQ2hlY2tzdW1Ub01hcmt1cDpmdW5jdGlvbihlKXt2YXIgdD1yKGUpO3JldHVybiBp
LnRlc3QoZSk/ZTplLnJlcGxhY2UobywiICIrYS5DSEVDS1NVTV9BVFRSX05BTUUrJz0iJyt0Kyci
JCYnKX0sY2FuUmV1c2VNYXJrdXA6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmdldEF0dHJpYnV0ZShh
LkNIRUNLU1VNX0FUVFJfTkFNRSk7bj1uJiZwYXJzZUludChuLDEwKTt2YXIgbz1yKGUpO3JldHVy
biBvPT09bn19O2UuZXhwb3J0cz1hfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSx0LG4pe3JldHVybnt0eXBlOiJJTlNFUlRfTUFSS1VQIixjb250ZW50OmUsZnJvbUlu
ZGV4Om51bGwsZnJvbU5vZGU6bnVsbCx0b0luZGV4Om4sYWZ0ZXJOb2RlOnR9fWZ1bmN0aW9uIG8o
ZSx0LG4pe3JldHVybnt0eXBlOiJNT1ZFX0VYSVNUSU5HIixjb250ZW50Om51bGwsZnJvbUluZGV4
OmUuX21vdW50SW5kZXgsZnJvbU5vZGU6ZC5nZXRIb3N0Tm9kZShlKSx0b0luZGV4Om4sYWZ0ZXJO
b2RlOnR9fWZ1bmN0aW9uIGkoZSx0KXtyZXR1cm57dHlwZToiUkVNT1ZFX05PREUiLGNvbnRlbnQ6
bnVsbCxmcm9tSW5kZXg6ZS5fbW91bnRJbmRleCxmcm9tTm9kZTp0LHRvSW5kZXg6bnVsbCxhZnRl
ck5vZGU6bnVsbH19ZnVuY3Rpb24gYShlKXtyZXR1cm57dHlwZToiU0VUX01BUktVUCIsY29udGVu
dDplLGZyb21JbmRleDpudWxsLGZyb21Ob2RlOm51bGwsdG9JbmRleDpudWxsLGFmdGVyTm9kZTpu
dWxsfX1mdW5jdGlvbiB1KGUpe3JldHVybnt0eXBlOiJURVhUX0NPTlRFTlQiLGNvbnRlbnQ6ZSxm
cm9tSW5kZXg6bnVsbCxmcm9tTm9kZTpudWxsLHRvSW5kZXg6bnVsbCxhZnRlck5vZGU6bnVsbH19
ZnVuY3Rpb24gcyhlLHQpe3JldHVybiB0JiYoZT1lfHxbXSxlLnB1c2godCkpLGV9ZnVuY3Rpb24g
YyhlLHQpe3AucHJvY2Vzc0NoaWxkcmVuVXBkYXRlcyhlLHQpfXZhciBsPW4oMykscD1uKDQwKSxk
PShuKDIxKSxuKDgpLG4oMTEpLG4oMTYpKSxmPW4oMTM0KSxoPShuKDcpLG4oMTgwKSksdj0obigx
KSx7TWl4aW46e19yZWNvbmNpbGVySW5zdGFudGlhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbil7
cmV0dXJuIGYuaW5zdGFudGlhdGVDaGlsZHJlbihlLHQsbil9LF9yZWNvbmNpbGVyVXBkYXRlQ2hp
bGRyZW46ZnVuY3Rpb24oZSx0LG4scixvLGkpe3ZhciBhLHU9MDtyZXR1cm4gYT1oKHQsdSksZi51
cGRhdGVDaGlsZHJlbihlLGEsbixyLG8sdGhpcyx0aGlzLl9ob3N0Q29udGFpbmVySW5mbyxpLHUp
LGF9LG1vdW50Q2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX3JlY29uY2lsZXJJ
bnN0YW50aWF0ZUNoaWxkcmVuKGUsdCxuKTt0aGlzLl9yZW5kZXJlZENoaWxkcmVuPXI7dmFyIG89
W10saT0wO2Zvcih2YXIgYSBpbiByKWlmKHIuaGFzT3duUHJvcGVydHkoYSkpe3ZhciB1PXJbYV0s
cz0wLGM9ZC5tb3VudENvbXBvbmVudCh1LHQsdGhpcyx0aGlzLl9ob3N0Q29udGFpbmVySW5mbyxu
LHMpO3UuX21vdW50SW5kZXg9aSsrLG8ucHVzaChjKX1yZXR1cm4gb30sdXBkYXRlVGV4dENvbnRl
bnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fcmVuZGVyZWRDaGlsZHJlbjtmLnVubW91bnRDaGls
ZHJlbih0LCExKTtmb3IodmFyIG4gaW4gdCl0Lmhhc093blByb3BlcnR5KG4pJiZsKCIxMTgiKTt2
YXIgcj1bdShlKV07Yyh0aGlzLHIpfSx1cGRhdGVNYXJrdXA6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhp
cy5fcmVuZGVyZWRDaGlsZHJlbjtmLnVubW91bnRDaGlsZHJlbih0LCExKTtmb3IodmFyIG4gaW4g
dCl0Lmhhc093blByb3BlcnR5KG4pJiZsKCIxMTgiKTt2YXIgcj1bYShlKV07Yyh0aGlzLHIpfSx1
cGRhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbil7dGhpcy5fdXBkYXRlQ2hpbGRyZW4oZSx0LG4p
fSxfdXBkYXRlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX3JlbmRlcmVkQ2hp
bGRyZW4sbz17fSxpPVtdLGE9dGhpcy5fcmVjb25jaWxlclVwZGF0ZUNoaWxkcmVuKHIsZSxpLG8s
dCxuKTtpZihhfHxyKXt2YXIgdSxsPW51bGwscD0wLGY9MCxoPTAsdj1udWxsO2Zvcih1IGluIGEp
aWYoYS5oYXNPd25Qcm9wZXJ0eSh1KSl7dmFyIG09ciYmclt1XSx5PWFbdV07bT09PXk/KGw9cyhs
LHRoaXMubW92ZUNoaWxkKG0sdixwLGYpKSxmPU1hdGgubWF4KG0uX21vdW50SW5kZXgsZiksbS5f
bW91bnRJbmRleD1wKToobSYmKGY9TWF0aC5tYXgobS5fbW91bnRJbmRleCxmKSksbD1zKGwsdGhp
cy5fbW91bnRDaGlsZEF0SW5kZXgoeSxpW2hdLHYscCx0LG4pKSxoKyspLHArKyx2PWQuZ2V0SG9z
dE5vZGUoeSl9Zm9yKHUgaW4gbylvLmhhc093blByb3BlcnR5KHUpJiYobD1zKGwsdGhpcy5fdW5t
b3VudENoaWxkKHJbdV0sb1t1XSkpKTtsJiZjKHRoaXMsbCksdGhpcy5fcmVuZGVyZWRDaGlsZHJl
bj1hfX0sdW5tb3VudENoaWxkcmVuOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3JlbmRlcmVkQ2hp
bGRyZW47Zi51bm1vdW50Q2hpbGRyZW4odCxlKSx0aGlzLl9yZW5kZXJlZENoaWxkcmVuPW51bGx9
LG1vdmVDaGlsZDpmdW5jdGlvbihlLHQsbixyKXtpZihlLl9tb3VudEluZGV4PHIpcmV0dXJuIG8o
ZSx0LG4pfSxjcmVhdGVDaGlsZDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHIobix0LGUuX21vdW50
SW5kZXgpfSxyZW1vdmVDaGlsZDpmdW5jdGlvbihlLHQpe3JldHVybiBpKGUsdCl9LF9tb3VudENo
aWxkQXRJbmRleDpmdW5jdGlvbihlLHQsbixyLG8saSl7cmV0dXJuIGUuX21vdW50SW5kZXg9cix0
aGlzLmNyZWF0ZUNoaWxkKGUsbix0KX0sX3VubW91bnRDaGlsZDpmdW5jdGlvbihlLHQpe3ZhciBu
PXRoaXMucmVtb3ZlQ2hpbGQoZSx0KTtyZXR1cm4gZS5fbW91bnRJbmRleD1udWxsLG59fX0pO2Uu
ZXhwb3J0cz12fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0
dXJuISghZXx8ImZ1bmN0aW9uIiE9dHlwZW9mIGUuYXR0YWNoUmVmfHwiZnVuY3Rpb24iIT10eXBl
b2YgZS5kZXRhY2hSZWYpfXZhciBvPW4oMyksaT0obigxKSx7YWRkQ29tcG9uZW50QXNSZWZUbzpm
dW5jdGlvbihlLHQsbil7cihuKT92b2lkIDA6bygiMTE5Iiksbi5hdHRhY2hSZWYodCxlKX0scmVt
b3ZlQ29tcG9uZW50QXNSZWZGcm9tOmZ1bmN0aW9uKGUsdCxuKXtyKG4pP3ZvaWQgMDpvKCIxMjAi
KTt2YXIgaT1uLmdldFB1YmxpY0luc3RhbmNlKCk7aSYmaS5yZWZzW3RdPT09ZS5nZXRQdWJsaWNJ
bnN0YW5jZSgpJiZuLmRldGFjaFJlZih0KX19KTtlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0KXsi
dXNlIHN0cmljdCI7dmFyIG49IlNFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JF
X0ZJUkVEIjtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUpe3RoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKSx0aGlzLnJlbmRlclRvU3RhdGlj
TWFya3VwPSExLHRoaXMucmVhY3RNb3VudFJlYWR5PWkuZ2V0UG9vbGVkKG51bGwpLHRoaXMudXNl
Q3JlYXRlRWxlbWVudD1lfXZhciBvPW4oNCksaT1uKDU5KSxhPW4oMTMpLHU9bigyNSkscz1uKDY2
KSxjPShuKDgpLG4oMjcpKSxsPW4oNDIpLHA9e2luaXRpYWxpemU6cy5nZXRTZWxlY3Rpb25JbmZv
cm1hdGlvbixjbG9zZTpzLnJlc3RvcmVTZWxlY3Rpb259LGQ9e2luaXRpYWxpemU6ZnVuY3Rpb24o
KXt2YXIgZT11LmlzRW5hYmxlZCgpO3JldHVybiB1LnNldEVuYWJsZWQoITEpLGV9LGNsb3NlOmZ1
bmN0aW9uKGUpe3Uuc2V0RW5hYmxlZChlKX19LGY9e2luaXRpYWxpemU6ZnVuY3Rpb24oKXt0aGlz
LnJlYWN0TW91bnRSZWFkeS5yZXNldCgpfSxjbG9zZTpmdW5jdGlvbigpe3RoaXMucmVhY3RNb3Vu
dFJlYWR5Lm5vdGlmeUFsbCgpfX0saD1bcCxkLGZdLHY9e2dldFRyYW5zYWN0aW9uV3JhcHBlcnM6
ZnVuY3Rpb24oKXtyZXR1cm4gaH0sZ2V0UmVhY3RNb3VudFJlYWR5OmZ1bmN0aW9uKCl7cmV0dXJu
IHRoaXMucmVhY3RNb3VudFJlYWR5fSxnZXRVcGRhdGVRdWV1ZTpmdW5jdGlvbigpe3JldHVybiBs
fSxjaGVja3BvaW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5LmNoZWNr
cG9pbnQoKX0scm9sbGJhY2s6ZnVuY3Rpb24oZSl7dGhpcy5yZWFjdE1vdW50UmVhZHkucm9sbGJh
Y2soZSl9LGRlc3RydWN0b3I6ZnVuY3Rpb24oKXtpLnJlbGVhc2UodGhpcy5yZWFjdE1vdW50UmVh
ZHkpLHRoaXMucmVhY3RNb3VudFJlYWR5PW51bGx9fTtvKHIucHJvdG90eXBlLGMsdiksYS5hZGRQ
b29saW5nVG8ociksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlLHQsbil7ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZSh0LmdldFB1YmxpY0luc3RhbmNl
KCkpOmkuYWRkQ29tcG9uZW50QXNSZWZUbyh0LGUsbil9ZnVuY3Rpb24gbyhlLHQsbil7ImZ1bmN0
aW9uIj09dHlwZW9mIGU/ZShudWxsKTppLnJlbW92ZUNvbXBvbmVudEFzUmVmRnJvbSh0LGUsbil9
dmFyIGk9bigxNTcpLGE9e307YS5hdHRhY2hSZWZzPWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9PXQm
JiJvYmplY3QiPT10eXBlb2YgdCl7dmFyIG49dC5yZWY7bnVsbCE9biYmcihuLGUsdC5fb3duZXIp
fX0sYS5zaG91bGRVcGRhdGVSZWZzPWZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbCxyPW51bGw7bnVs
bCE9PWUmJiJvYmplY3QiPT10eXBlb2YgZSYmKG49ZS5yZWYscj1lLl9vd25lcik7dmFyIG89bnVs
bCxpPW51bGw7cmV0dXJuIG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHQmJihvPXQucmVmLGk9
dC5fb3duZXIpLG4hPT1vfHwic3RyaW5nIj09dHlwZW9mIG8mJmkhPT1yfSxhLmRldGFjaFJlZnM9
ZnVuY3Rpb24oZSx0KXtpZihudWxsIT09dCYmIm9iamVjdCI9PXR5cGVvZiB0KXt2YXIgbj10LnJl
ZjtudWxsIT1uJiZvKG4sZSx0Ll9vd25lcil9fSxlLmV4cG9ydHM9YX0sZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3RoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24o
KSx0aGlzLnJlbmRlclRvU3RhdGljTWFya3VwPWUsdGhpcy51c2VDcmVhdGVFbGVtZW50PSExLHRo
aXMudXBkYXRlUXVldWU9bmV3IHUodGhpcyl9dmFyIG89big0KSxpPW4oMTMpLGE9bigyNyksdT0o
big4KSxuKDE2MikpLHM9W10sYz17ZW5xdWV1ZTpmdW5jdGlvbigpe319LGw9e2dldFRyYW5zYWN0
aW9uV3JhcHBlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gc30sZ2V0UmVhY3RNb3VudFJlYWR5OmZ1bmN0
aW9uKCl7cmV0dXJuIGN9LGdldFVwZGF0ZVF1ZXVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudXBk
YXRlUXVldWV9LGRlc3RydWN0b3I6ZnVuY3Rpb24oKXt9LGNoZWNrcG9pbnQ6ZnVuY3Rpb24oKXt9
LHJvbGxiYWNrOmZ1bmN0aW9uKCl7fX07byhyLnByb3RvdHlwZSxhLGwpLGkuYWRkUG9vbGluZ1Rv
KHIpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2Fs
bCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBvKGUsdCl7fXZhciBpPW4oNDIpLGE9
KG4oMiksZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe3IodGhpcyxlKSx0aGlzLnRyYW5zYWN0aW9u
PXR9cmV0dXJuIGUucHJvdG90eXBlLmlzTW91bnRlZD1mdW5jdGlvbihlKXtyZXR1cm4hMX0sZS5w
cm90b3R5cGUuZW5xdWV1ZUNhbGxiYWNrPWZ1bmN0aW9uKGUsdCxuKXt0aGlzLnRyYW5zYWN0aW9u
LmlzSW5UcmFuc2FjdGlvbigpJiZpLmVucXVldWVDYWxsYmFjayhlLHQsbil9LGUucHJvdG90eXBl
LmVucXVldWVGb3JjZVVwZGF0ZT1mdW5jdGlvbihlKXt0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFu
c2FjdGlvbigpP2kuZW5xdWV1ZUZvcmNlVXBkYXRlKGUpOm8oZSwiZm9yY2VVcGRhdGUiKX0sZS5w
cm90b3R5cGUuZW5xdWV1ZVJlcGxhY2VTdGF0ZT1mdW5jdGlvbihlLHQpe3RoaXMudHJhbnNhY3Rp
b24uaXNJblRyYW5zYWN0aW9uKCk/aS5lbnF1ZXVlUmVwbGFjZVN0YXRlKGUsdCk6byhlLCJyZXBs
YWNlU3RhdGUiKX0sZS5wcm90b3R5cGUuZW5xdWV1ZVNldFN0YXRlPWZ1bmN0aW9uKGUsdCl7dGhp
cy50cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24oKT9pLmVucXVldWVTZXRTdGF0ZShlLHQpOm8o
ZSwic2V0U3RhdGUiKX0sZX0oKSk7ZS5leHBvcnRzPWF9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJp
Y3QiO2UuZXhwb3J0cz0iMTUuNi4xIn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49
e3hsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6Ly93d3cudzMu
b3JnL1hNTC8xOTk4L25hbWVzcGFjZSJ9LHI9e2FjY2VudEhlaWdodDoiYWNjZW50LWhlaWdodCIs
YWNjdW11bGF0ZTowLGFkZGl0aXZlOjAsYWxpZ25tZW50QmFzZWxpbmU6ImFsaWdubWVudC1iYXNl
bGluZSIsYWxsb3dSZW9yZGVyOiJhbGxvd1Jlb3JkZXIiLGFscGhhYmV0aWM6MCxhbXBsaXR1ZGU6
MCxhcmFiaWNGb3JtOiJhcmFiaWMtZm9ybSIsYXNjZW50OjAsYXR0cmlidXRlTmFtZToiYXR0cmli
dXRlTmFtZSIsYXR0cmlidXRlVHlwZToiYXR0cmlidXRlVHlwZSIsYXV0b1JldmVyc2U6ImF1dG9S
ZXZlcnNlIixhemltdXRoOjAsYmFzZUZyZXF1ZW5jeToiYmFzZUZyZXF1ZW5jeSIsYmFzZVByb2Zp
bGU6ImJhc2VQcm9maWxlIixiYXNlbGluZVNoaWZ0OiJiYXNlbGluZS1zaGlmdCIsYmJveDowLGJl
Z2luOjAsYmlhczowLGJ5OjAsY2FsY01vZGU6ImNhbGNNb2RlIixjYXBIZWlnaHQ6ImNhcC1oZWln
aHQiLGNsaXA6MCxjbGlwUGF0aDoiY2xpcC1wYXRoIixjbGlwUnVsZToiY2xpcC1ydWxlIixjbGlw
UGF0aFVuaXRzOiJjbGlwUGF0aFVuaXRzIixjb2xvckludGVycG9sYXRpb246ImNvbG9yLWludGVy
cG9sYXRpb24iLGNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnM6ImNvbG9yLWludGVycG9sYXRpb24t
ZmlsdGVycyIsY29sb3JQcm9maWxlOiJjb2xvci1wcm9maWxlIixjb2xvclJlbmRlcmluZzoiY29s
b3ItcmVuZGVyaW5nIixjb250ZW50U2NyaXB0VHlwZToiY29udGVudFNjcmlwdFR5cGUiLGNvbnRl
bnRTdHlsZVR5cGU6ImNvbnRlbnRTdHlsZVR5cGUiLGN1cnNvcjowLGN4OjAsY3k6MCxkOjAsZGVj
ZWxlcmF0ZTowLGRlc2NlbnQ6MCxkaWZmdXNlQ29uc3RhbnQ6ImRpZmZ1c2VDb25zdGFudCIsZGly
ZWN0aW9uOjAsZGlzcGxheTowLGRpdmlzb3I6MCxkb21pbmFudEJhc2VsaW5lOiJkb21pbmFudC1i
YXNlbGluZSIsZHVyOjAsZHg6MCxkeTowLGVkZ2VNb2RlOiJlZGdlTW9kZSIsZWxldmF0aW9uOjAs
ZW5hYmxlQmFja2dyb3VuZDoiZW5hYmxlLWJhY2tncm91bmQiLGVuZDowLGV4cG9uZW50OjAsZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDoiZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCIsZmlsbDow
LGZpbGxPcGFjaXR5OiJmaWxsLW9wYWNpdHkiLGZpbGxSdWxlOiJmaWxsLXJ1bGUiLGZpbHRlcjow
LGZpbHRlclJlczoiZmlsdGVyUmVzIixmaWx0ZXJVbml0czoiZmlsdGVyVW5pdHMiLGZsb29kQ29s
b3I6ImZsb29kLWNvbG9yIixmbG9vZE9wYWNpdHk6ImZsb29kLW9wYWNpdHkiLGZvY3VzYWJsZTow
LGZvbnRGYW1pbHk6ImZvbnQtZmFtaWx5Iixmb250U2l6ZToiZm9udC1zaXplIixmb250U2l6ZUFk
anVzdDoiZm9udC1zaXplLWFkanVzdCIsZm9udFN0cmV0Y2g6ImZvbnQtc3RyZXRjaCIsZm9udFN0
eWxlOiJmb250LXN0eWxlIixmb250VmFyaWFudDoiZm9udC12YXJpYW50Iixmb250V2VpZ2h0OiJm
b250LXdlaWdodCIsZm9ybWF0OjAsZnJvbTowLGZ4OjAsZnk6MCxnMTowLGcyOjAsZ2x5cGhOYW1l
OiJnbHlwaC1uYW1lIixnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbDoiZ2x5cGgtb3JpZW50YXRp
b24taG9yaXpvbnRhbCIsZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsOiJnbHlwaC1vcmllbnRhdGlv
bi12ZXJ0aWNhbCIsZ2x5cGhSZWY6ImdseXBoUmVmIixncmFkaWVudFRyYW5zZm9ybToiZ3JhZGll
bnRUcmFuc2Zvcm0iLGdyYWRpZW50VW5pdHM6ImdyYWRpZW50VW5pdHMiLGhhbmdpbmc6MCxob3Jp
ekFkdlg6Imhvcml6LWFkdi14Iixob3Jpek9yaWdpblg6Imhvcml6LW9yaWdpbi14IixpZGVvZ3Jh
cGhpYzowLGltYWdlUmVuZGVyaW5nOiJpbWFnZS1yZW5kZXJpbmciLGluOjAsaW4yOjAsaW50ZXJj
ZXB0OjAsazowLGsxOjAsazI6MCxrMzowLGs0OjAsa2VybmVsTWF0cml4OiJrZXJuZWxNYXRyaXgi
LGtlcm5lbFVuaXRMZW5ndGg6Imtlcm5lbFVuaXRMZW5ndGgiLGtlcm5pbmc6MCxrZXlQb2ludHM6
ImtleVBvaW50cyIsa2V5U3BsaW5lczoia2V5U3BsaW5lcyIsa2V5VGltZXM6ImtleVRpbWVzIixs
ZW5ndGhBZGp1c3Q6Imxlbmd0aEFkanVzdCIsbGV0dGVyU3BhY2luZzoibGV0dGVyLXNwYWNpbmci
LGxpZ2h0aW5nQ29sb3I6ImxpZ2h0aW5nLWNvbG9yIixsaW1pdGluZ0NvbmVBbmdsZToibGltaXRp
bmdDb25lQW5nbGUiLGxvY2FsOjAsbWFya2VyRW5kOiJtYXJrZXItZW5kIixtYXJrZXJNaWQ6Im1h
cmtlci1taWQiLG1hcmtlclN0YXJ0OiJtYXJrZXItc3RhcnQiLG1hcmtlckhlaWdodDoibWFya2Vy
SGVpZ2h0IixtYXJrZXJVbml0czoibWFya2VyVW5pdHMiLG1hcmtlcldpZHRoOiJtYXJrZXJXaWR0
aCIsbWFzazowLG1hc2tDb250ZW50VW5pdHM6Im1hc2tDb250ZW50VW5pdHMiLG1hc2tVbml0czoi
bWFza1VuaXRzIixtYXRoZW1hdGljYWw6MCxtb2RlOjAsbnVtT2N0YXZlczoibnVtT2N0YXZlcyIs
b2Zmc2V0OjAsb3BhY2l0eTowLG9wZXJhdG9yOjAsb3JkZXI6MCxvcmllbnQ6MCxvcmllbnRhdGlv
bjowLG9yaWdpbjowLG92ZXJmbG93OjAsb3ZlcmxpbmVQb3NpdGlvbjoib3ZlcmxpbmUtcG9zaXRp
b24iLG92ZXJsaW5lVGhpY2tuZXNzOiJvdmVybGluZS10aGlja25lc3MiLHBhaW50T3JkZXI6InBh
aW50LW9yZGVyIixwYW5vc2UxOiJwYW5vc2UtMSIscGF0aExlbmd0aDoicGF0aExlbmd0aCIscGF0
dGVybkNvbnRlbnRVbml0czoicGF0dGVybkNvbnRlbnRVbml0cyIscGF0dGVyblRyYW5zZm9ybToi
cGF0dGVyblRyYW5zZm9ybSIscGF0dGVyblVuaXRzOiJwYXR0ZXJuVW5pdHMiLHBvaW50ZXJFdmVu
dHM6InBvaW50ZXItZXZlbnRzIixwb2ludHM6MCxwb2ludHNBdFg6InBvaW50c0F0WCIscG9pbnRz
QXRZOiJwb2ludHNBdFkiLHBvaW50c0F0WjoicG9pbnRzQXRaIixwcmVzZXJ2ZUFscGhhOiJwcmVz
ZXJ2ZUFscGhhIixwcmVzZXJ2ZUFzcGVjdFJhdGlvOiJwcmVzZXJ2ZUFzcGVjdFJhdGlvIixwcmlt
aXRpdmVVbml0czoicHJpbWl0aXZlVW5pdHMiLHI6MCxyYWRpdXM6MCxyZWZYOiJyZWZYIixyZWZZ
OiJyZWZZIixyZW5kZXJpbmdJbnRlbnQ6InJlbmRlcmluZy1pbnRlbnQiLHJlcGVhdENvdW50OiJy
ZXBlYXRDb3VudCIscmVwZWF0RHVyOiJyZXBlYXREdXIiLHJlcXVpcmVkRXh0ZW5zaW9uczoicmVx
dWlyZWRFeHRlbnNpb25zIixyZXF1aXJlZEZlYXR1cmVzOiJyZXF1aXJlZEZlYXR1cmVzIixyZXN0
YXJ0OjAscmVzdWx0OjAscm90YXRlOjAscng6MCxyeTowLHNjYWxlOjAsc2VlZDowLHNoYXBlUmVu
ZGVyaW5nOiJzaGFwZS1yZW5kZXJpbmciLHNsb3BlOjAsc3BhY2luZzowLHNwZWN1bGFyQ29uc3Rh
bnQ6InNwZWN1bGFyQ29uc3RhbnQiLHNwZWN1bGFyRXhwb25lbnQ6InNwZWN1bGFyRXhwb25lbnQi
LHNwZWVkOjAsc3ByZWFkTWV0aG9kOiJzcHJlYWRNZXRob2QiLHN0YXJ0T2Zmc2V0OiJzdGFydE9m
ZnNldCIsc3RkRGV2aWF0aW9uOiJzdGREZXZpYXRpb24iLHN0ZW1oOjAsc3RlbXY6MCxzdGl0Y2hU
aWxlczoic3RpdGNoVGlsZXMiLHN0b3BDb2xvcjoic3RvcC1jb2xvciIsc3RvcE9wYWNpdHk6InN0
b3Atb3BhY2l0eSIsc3RyaWtldGhyb3VnaFBvc2l0aW9uOiJzdHJpa2V0aHJvdWdoLXBvc2l0aW9u
IixzdHJpa2V0aHJvdWdoVGhpY2tuZXNzOiJzdHJpa2V0aHJvdWdoLXRoaWNrbmVzcyIsc3RyaW5n
OjAsc3Ryb2tlOjAsc3Ryb2tlRGFzaGFycmF5OiJzdHJva2UtZGFzaGFycmF5IixzdHJva2VEYXNo
b2Zmc2V0OiJzdHJva2UtZGFzaG9mZnNldCIsc3Ryb2tlTGluZWNhcDoic3Ryb2tlLWxpbmVjYXAi
LHN0cm9rZUxpbmVqb2luOiJzdHJva2UtbGluZWpvaW4iLHN0cm9rZU1pdGVybGltaXQ6InN0cm9r
ZS1taXRlcmxpbWl0IixzdHJva2VPcGFjaXR5OiJzdHJva2Utb3BhY2l0eSIsc3Ryb2tlV2lkdGg6
InN0cm9rZS13aWR0aCIsc3VyZmFjZVNjYWxlOiJzdXJmYWNlU2NhbGUiLHN5c3RlbUxhbmd1YWdl
OiJzeXN0ZW1MYW5ndWFnZSIsdGFibGVWYWx1ZXM6InRhYmxlVmFsdWVzIix0YXJnZXRYOiJ0YXJn
ZXRYIix0YXJnZXRZOiJ0YXJnZXRZIix0ZXh0QW5jaG9yOiJ0ZXh0LWFuY2hvciIsdGV4dERlY29y
YXRpb246InRleHQtZGVjb3JhdGlvbiIsdGV4dFJlbmRlcmluZzoidGV4dC1yZW5kZXJpbmciLHRl
eHRMZW5ndGg6InRleHRMZW5ndGgiLHRvOjAsdHJhbnNmb3JtOjAsdTE6MCx1MjowLHVuZGVybGlu
ZVBvc2l0aW9uOiJ1bmRlcmxpbmUtcG9zaXRpb24iLHVuZGVybGluZVRoaWNrbmVzczoidW5kZXJs
aW5lLXRoaWNrbmVzcyIsdW5pY29kZTowLHVuaWNvZGVCaWRpOiJ1bmljb2RlLWJpZGkiLHVuaWNv
ZGVSYW5nZToidW5pY29kZS1yYW5nZSIsdW5pdHNQZXJFbToidW5pdHMtcGVyLWVtIix2QWxwaGFi
ZXRpYzoidi1hbHBoYWJldGljIix2SGFuZ2luZzoidi1oYW5naW5nIix2SWRlb2dyYXBoaWM6InYt
aWRlb2dyYXBoaWMiLHZNYXRoZW1hdGljYWw6InYtbWF0aGVtYXRpY2FsIix2YWx1ZXM6MCx2ZWN0
b3JFZmZlY3Q6InZlY3Rvci1lZmZlY3QiLHZlcnNpb246MCx2ZXJ0QWR2WToidmVydC1hZHYteSIs
dmVydE9yaWdpblg6InZlcnQtb3JpZ2luLXgiLHZlcnRPcmlnaW5ZOiJ2ZXJ0LW9yaWdpbi15Iix2
aWV3Qm94OiJ2aWV3Qm94Iix2aWV3VGFyZ2V0OiJ2aWV3VGFyZ2V0Iix2aXNpYmlsaXR5OjAsd2lk
dGhzOjAsd29yZFNwYWNpbmc6IndvcmQtc3BhY2luZyIsd3JpdGluZ01vZGU6IndyaXRpbmctbW9k
ZSIseDowLHhIZWlnaHQ6IngtaGVpZ2h0Iix4MTowLHgyOjAseENoYW5uZWxTZWxlY3RvcjoieENo
YW5uZWxTZWxlY3RvciIseGxpbmtBY3R1YXRlOiJ4bGluazphY3R1YXRlIix4bGlua0FyY3JvbGU6
InhsaW5rOmFyY3JvbGUiLHhsaW5rSHJlZjoieGxpbms6aHJlZiIseGxpbmtSb2xlOiJ4bGluazpy
b2xlIix4bGlua1Nob3c6InhsaW5rOnNob3ciLHhsaW5rVGl0bGU6InhsaW5rOnRpdGxlIix4bGlu
a1R5cGU6InhsaW5rOnR5cGUiLHhtbEJhc2U6InhtbDpiYXNlIix4bWxuczowLHhtbG5zWGxpbms6
InhtbG5zOnhsaW5rIix4bWxMYW5nOiJ4bWw6bGFuZyIseG1sU3BhY2U6InhtbDpzcGFjZSIseTow
LHkxOjAseTI6MCx5Q2hhbm5lbFNlbGVjdG9yOiJ5Q2hhbm5lbFNlbGVjdG9yIix6OjAsem9vbUFu
ZFBhbjoiem9vbUFuZFBhbiJ9LG89e1Byb3BlcnRpZXM6e30sRE9NQXR0cmlidXRlTmFtZXNwYWNl
czp7eGxpbmtBY3R1YXRlOm4ueGxpbmsseGxpbmtBcmNyb2xlOm4ueGxpbmsseGxpbmtIcmVmOm4u
eGxpbmsseGxpbmtSb2xlOm4ueGxpbmsseGxpbmtTaG93Om4ueGxpbmsseGxpbmtUaXRsZTpuLnhs
aW5rLHhsaW5rVHlwZTpuLnhsaW5rLHhtbEJhc2U6bi54bWwseG1sTGFuZzpuLnhtbCx4bWxTcGFj
ZTpuLnhtbH0sRE9NQXR0cmlidXRlTmFtZXM6e319O09iamVjdC5rZXlzKHIpLmZvckVhY2goZnVu
Y3Rpb24oZSl7by5Qcm9wZXJ0aWVzW2VdPTAscltlXSYmKG8uRE9NQXR0cmlidXRlTmFtZXNbZV09
cltlXSl9KSxlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUpe2lmKCJzZWxlY3Rpb25TdGFydCJpbiBlJiZzLmhhc1NlbGVjdGlvbkNhcGFiaWxpdGll
cyhlKSlyZXR1cm57c3RhcnQ6ZS5zZWxlY3Rpb25TdGFydCxlbmQ6ZS5zZWxlY3Rpb25FbmR9O2lm
KHdpbmRvdy5nZXRTZWxlY3Rpb24pe3ZhciB0PXdpbmRvdy5nZXRTZWxlY3Rpb24oKTtyZXR1cm57
YW5jaG9yTm9kZTp0LmFuY2hvck5vZGUsYW5jaG9yT2Zmc2V0OnQuYW5jaG9yT2Zmc2V0LGZvY3Vz
Tm9kZTp0LmZvY3VzTm9kZSxmb2N1c09mZnNldDp0LmZvY3VzT2Zmc2V0fX1pZihkb2N1bWVudC5z
ZWxlY3Rpb24pe3ZhciBuPWRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpO3JldHVybntw
YXJlbnRFbGVtZW50Om4ucGFyZW50RWxlbWVudCgpLHRleHQ6bi50ZXh0LHRvcDpuLmJvdW5kaW5n
VG9wLGxlZnQ6bi5ib3VuZGluZ0xlZnR9fX1mdW5jdGlvbiBvKGUsdCl7aWYoZ3x8bnVsbD09dnx8
diE9PWwoKSlyZXR1cm4gbnVsbDt2YXIgbj1yKHYpO2lmKCF5fHwhZCh5LG4pKXt5PW47dmFyIG89
Yy5nZXRQb29sZWQoaC5zZWxlY3QsbSxlLHQpO3JldHVybiBvLnR5cGU9InNlbGVjdCIsby50YXJn
ZXQ9dixpLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMobyksb31yZXR1cm4gbnVsbH12YXIg
aT1uKDIwKSxhPW4oNiksdT1uKDUpLHM9big2NiksYz1uKDEwKSxsPW4oNTMpLHA9big3NiksZD1u
KDMyKSxmPWEuY2FuVXNlRE9NJiYiZG9jdW1lbnRNb2RlImluIGRvY3VtZW50JiZkb2N1bWVudC5k
b2N1bWVudE1vZGU8PTExLGg9e3NlbGVjdDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJs
ZWQ6Im9uU2VsZWN0IixjYXB0dXJlZDoib25TZWxlY3RDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOlsi
dG9wQmx1ciIsInRvcENvbnRleHRNZW51IiwidG9wRm9jdXMiLCJ0b3BLZXlEb3duIiwidG9wS2V5
VXAiLCJ0b3BNb3VzZURvd24iLCJ0b3BNb3VzZVVwIiwidG9wU2VsZWN0aW9uQ2hhbmdlIl19fSx2
PW51bGwsbT1udWxsLHk9bnVsbCxnPSExLGI9ITEsXz17ZXZlbnRUeXBlczpoLGV4dHJhY3RFdmVu
dHM6ZnVuY3Rpb24oZSx0LG4scil7aWYoIWIpcmV0dXJuIG51bGw7dmFyIGk9dD91LmdldE5vZGVG
cm9tSW5zdGFuY2UodCk6d2luZG93O3N3aXRjaChlKXtjYXNlInRvcEZvY3VzIjoocChpKXx8InRy
dWUiPT09aS5jb250ZW50RWRpdGFibGUpJiYodj1pLG09dCx5PW51bGwpO2JyZWFrO2Nhc2UidG9w
Qmx1ciI6dj1udWxsLG09bnVsbCx5PW51bGw7YnJlYWs7Y2FzZSJ0b3BNb3VzZURvd24iOmc9ITA7
YnJlYWs7Y2FzZSJ0b3BDb250ZXh0TWVudSI6Y2FzZSJ0b3BNb3VzZVVwIjpyZXR1cm4gZz0hMSxv
KG4scik7Y2FzZSJ0b3BTZWxlY3Rpb25DaGFuZ2UiOmlmKGYpYnJlYWs7Y2FzZSJ0b3BLZXlEb3du
IjpjYXNlInRvcEtleVVwIjpyZXR1cm4gbyhuLHIpfXJldHVybiBudWxsfSxkaWRQdXRMaXN0ZW5l
cjpmdW5jdGlvbihlLHQsbil7Im9uU2VsZWN0Ij09PXQmJihiPSEwKX19O2UuZXhwb3J0cz1ffSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIi4iK2UuX3Jv
b3ROb2RlSUR9ZnVuY3Rpb24gbyhlKXtyZXR1cm4iYnV0dG9uIj09PWV8fCJpbnB1dCI9PT1lfHwi
c2VsZWN0Ij09PWV8fCJ0ZXh0YXJlYSI9PT1lfXZhciBpPW4oMyksYT1uKDUxKSx1PW4oMjApLHM9
big1KSxjPW4oMTY3KSxsPW4oMTY4KSxwPW4oMTApLGQ9bigxNzEpLGY9bigxNzMpLGg9bigyNiks
dj1uKDE3MCksbT1uKDE3NCkseT1uKDE3NSksZz1uKDIyKSxiPW4oMTc2KSxfPW4oNyksQz1uKDQ0
KSxFPShuKDEpLHt9KSx3PXt9O1siYWJvcnQiLCJhbmltYXRpb25FbmQiLCJhbmltYXRpb25JdGVy
YXRpb24iLCJhbmltYXRpb25TdGFydCIsImJsdXIiLCJjYW5QbGF5IiwiY2FuUGxheVRocm91Z2gi
LCJjbGljayIsImNvbnRleHRNZW51IiwiY29weSIsImN1dCIsImRvdWJsZUNsaWNrIiwiZHJhZyIs
ImRyYWdFbmQiLCJkcmFnRW50ZXIiLCJkcmFnRXhpdCIsImRyYWdMZWF2ZSIsImRyYWdPdmVyIiwi
ZHJhZ1N0YXJ0IiwiZHJvcCIsImR1cmF0aW9uQ2hhbmdlIiwiZW1wdGllZCIsImVuY3J5cHRlZCIs
ImVuZGVkIiwiZXJyb3IiLCJmb2N1cyIsImlucHV0IiwiaW52YWxpZCIsImtleURvd24iLCJrZXlQ
cmVzcyIsImtleVVwIiwibG9hZCIsImxvYWRlZERhdGEiLCJsb2FkZWRNZXRhZGF0YSIsImxvYWRT
dGFydCIsIm1vdXNlRG93biIsIm1vdXNlTW92ZSIsIm1vdXNlT3V0IiwibW91c2VPdmVyIiwibW91
c2VVcCIsInBhc3RlIiwicGF1c2UiLCJwbGF5IiwicGxheWluZyIsInByb2dyZXNzIiwicmF0ZUNo
YW5nZSIsInJlc2V0Iiwic2Nyb2xsIiwic2Vla2VkIiwic2Vla2luZyIsInN0YWxsZWQiLCJzdWJt
aXQiLCJzdXNwZW5kIiwidGltZVVwZGF0ZSIsInRvdWNoQ2FuY2VsIiwidG91Y2hFbmQiLCJ0b3Vj
aE1vdmUiLCJ0b3VjaFN0YXJ0IiwidHJhbnNpdGlvbkVuZCIsInZvbHVtZUNoYW5nZSIsIndhaXRp
bmciLCJ3aGVlbCJdLmZvckVhY2goZnVuY3Rpb24oZSl7dmFyIHQ9ZVswXS50b1VwcGVyQ2FzZSgp
K2Uuc2xpY2UoMSksbj0ib24iK3Qscj0idG9wIit0LG89e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVz
OntidWJibGVkOm4sY2FwdHVyZWQ6bisiQ2FwdHVyZSJ9LGRlcGVuZGVuY2llczpbcl19O0VbZV09
byx3W3JdPW99KTt2YXIgVD17fSxQPXtldmVudFR5cGVzOkUsZXh0cmFjdEV2ZW50czpmdW5jdGlv
bihlLHQsbixyKXt2YXIgbz13W2VdO2lmKCFvKXJldHVybiBudWxsO3ZhciBhO3N3aXRjaChlKXtj
YXNlInRvcEFib3J0IjpjYXNlInRvcENhblBsYXkiOmNhc2UidG9wQ2FuUGxheVRocm91Z2giOmNh
c2UidG9wRHVyYXRpb25DaGFuZ2UiOmNhc2UidG9wRW1wdGllZCI6Y2FzZSJ0b3BFbmNyeXB0ZWQi
OmNhc2UidG9wRW5kZWQiOmNhc2UidG9wRXJyb3IiOmNhc2UidG9wSW5wdXQiOmNhc2UidG9wSW52
YWxpZCI6Y2FzZSJ0b3BMb2FkIjpjYXNlInRvcExvYWRlZERhdGEiOmNhc2UidG9wTG9hZGVkTWV0
YWRhdGEiOmNhc2UidG9wTG9hZFN0YXJ0IjpjYXNlInRvcFBhdXNlIjpjYXNlInRvcFBsYXkiOmNh
c2UidG9wUGxheWluZyI6Y2FzZSJ0b3BQcm9ncmVzcyI6Y2FzZSJ0b3BSYXRlQ2hhbmdlIjpjYXNl
InRvcFJlc2V0IjpjYXNlInRvcFNlZWtlZCI6Y2FzZSJ0b3BTZWVraW5nIjpjYXNlInRvcFN0YWxs
ZWQiOmNhc2UidG9wU3VibWl0IjpjYXNlInRvcFN1c3BlbmQiOmNhc2UidG9wVGltZVVwZGF0ZSI6
Y2FzZSJ0b3BWb2x1bWVDaGFuZ2UiOmNhc2UidG9wV2FpdGluZyI6YT1wO2JyZWFrO2Nhc2UidG9w
S2V5UHJlc3MiOmlmKDA9PT1DKG4pKXJldHVybiBudWxsO2Nhc2UidG9wS2V5RG93biI6Y2FzZSJ0
b3BLZXlVcCI6YT1mO2JyZWFrO2Nhc2UidG9wQmx1ciI6Y2FzZSJ0b3BGb2N1cyI6YT1kO2JyZWFr
O2Nhc2UidG9wQ2xpY2siOmlmKDI9PT1uLmJ1dHRvbilyZXR1cm4gbnVsbDtjYXNlInRvcERvdWJs
ZUNsaWNrIjpjYXNlInRvcE1vdXNlRG93biI6Y2FzZSJ0b3BNb3VzZU1vdmUiOmNhc2UidG9wTW91
c2VVcCI6Y2FzZSJ0b3BNb3VzZU91dCI6Y2FzZSJ0b3BNb3VzZU92ZXIiOmNhc2UidG9wQ29udGV4
dE1lbnUiOmE9aDticmVhaztjYXNlInRvcERyYWciOmNhc2UidG9wRHJhZ0VuZCI6Y2FzZSJ0b3BE
cmFnRW50ZXIiOmNhc2UidG9wRHJhZ0V4aXQiOmNhc2UidG9wRHJhZ0xlYXZlIjpjYXNlInRvcERy
YWdPdmVyIjpjYXNlInRvcERyYWdTdGFydCI6Y2FzZSJ0b3BEcm9wIjphPXY7YnJlYWs7Y2FzZSJ0
b3BUb3VjaENhbmNlbCI6Y2FzZSJ0b3BUb3VjaEVuZCI6Y2FzZSJ0b3BUb3VjaE1vdmUiOmNhc2Ui
dG9wVG91Y2hTdGFydCI6YT1tO2JyZWFrO2Nhc2UidG9wQW5pbWF0aW9uRW5kIjpjYXNlInRvcEFu
aW1hdGlvbkl0ZXJhdGlvbiI6Y2FzZSJ0b3BBbmltYXRpb25TdGFydCI6YT1jO2JyZWFrO2Nhc2Ui
dG9wVHJhbnNpdGlvbkVuZCI6YT15O2JyZWFrO2Nhc2UidG9wU2Nyb2xsIjphPWc7YnJlYWs7Y2Fz
ZSJ0b3BXaGVlbCI6YT1iO2JyZWFrO2Nhc2UidG9wQ29weSI6Y2FzZSJ0b3BDdXQiOmNhc2UidG9w
UGFzdGUiOmE9bH1hP3ZvaWQgMDppKCI4NiIsZSk7dmFyIHM9YS5nZXRQb29sZWQobyx0LG4scik7
cmV0dXJuIHUuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhzKSxzfSxkaWRQdXRMaXN0ZW5l
cjpmdW5jdGlvbihlLHQsbil7aWYoIm9uQ2xpY2siPT09dCYmIW8oZS5fdGFnKSl7dmFyIGk9cihl
KSx1PXMuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKTtUW2ldfHwoVFtpXT1hLmxpc3Rlbih1LCJjbGlj
ayIsXykpfX0sd2lsbERlbGV0ZUxpc3RlbmVyOmZ1bmN0aW9uKGUsdCl7aWYoIm9uQ2xpY2siPT09
dCYmIW8oZS5fdGFnKSl7dmFyIG49cihlKTtUW25dLnJlbW92ZSgpLGRlbGV0ZSBUW25dfX19O2Uu
ZXhwb3J0cz1QfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4s
cil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPW4oMTApLGk9e2FuaW1hdGlvbk5h
bWU6bnVsbCxlbGFwc2VkVGltZTpudWxsLHBzZXVkb0VsZW1lbnQ6bnVsbH07by5hdWdtZW50Q2xh
c3MocixpKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDEwKSxpPXtj
bGlwYm9hcmREYXRhOmZ1bmN0aW9uKGUpe3JldHVybiJjbGlwYm9hcmREYXRhImluIGU/ZS5jbGlw
Ym9hcmREYXRhOndpbmRvdy5jbGlwYm9hcmREYXRhfX07by5hdWdtZW50Q2xhc3MocixpKSxlLmV4
cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIp
e3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDEwKSxpPXtkYXRhOm51bGx9O28u
YXVnbWVudENsYXNzKHIsaSksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89
bigyNiksaT17ZGF0YVRyYW5zZmVyOm51bGx9O28uYXVnbWVudENsYXNzKHIsaSksZS5leHBvcnRz
PXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1
cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89bigyMiksaT17cmVsYXRlZFRhcmdldDpudWxs
fTtvLmF1Z21lbnRDbGFzcyhyLGkpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZh
ciBvPW4oMTApLGk9e2RhdGE6bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSxlLmV4cG9ydHM9cn0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBv
LmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDIyKSxpPW4oNDQpLGE9bigxODEpLHU9big0NSks
cz17a2V5OmEsbG9jYXRpb246bnVsbCxjdHJsS2V5Om51bGwsc2hpZnRLZXk6bnVsbCxhbHRLZXk6
bnVsbCxtZXRhS2V5Om51bGwscmVwZWF0Om51bGwsbG9jYWxlOm51bGwsZ2V0TW9kaWZpZXJTdGF0
ZTp1LGNoYXJDb2RlOmZ1bmN0aW9uKGUpe3JldHVybiJrZXlwcmVzcyI9PT1lLnR5cGU/aShlKTow
fSxrZXlDb2RlOmZ1bmN0aW9uKGUpe3JldHVybiJrZXlkb3duIj09PWUudHlwZXx8ImtleXVwIj09
PWUudHlwZT9lLmtleUNvZGU6MH0sd2hpY2g6ZnVuY3Rpb24oZSl7cmV0dXJuImtleXByZXNzIj09
PWUudHlwZT9pKGUpOiJrZXlkb3duIj09PWUudHlwZXx8ImtleXVwIj09PWUudHlwZT9lLmtleUNv
ZGU6MH19O28uYXVnbWVudENsYXNzKHIscyksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4s
cil9dmFyIG89bigyMiksaT1uKDQ1KSxhPXt0b3VjaGVzOm51bGwsdGFyZ2V0VG91Y2hlczpudWxs
LGNoYW5nZWRUb3VjaGVzOm51bGwsYWx0S2V5Om51bGwsbWV0YUtleTpudWxsLGN0cmxLZXk6bnVs
bCxzaGlmdEtleTpudWxsLGdldE1vZGlmaWVyU3RhdGU6aX07by5hdWdtZW50Q2xhc3MocixhKSxl
LmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxu
LHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDEwKSxpPXtwcm9wZXJ0eU5h
bWU6bnVsbCxlbGFwc2VkVGltZTpudWxsLHBzZXVkb0VsZW1lbnQ6bnVsbH07by5hdWdtZW50Q2xh
c3MocixpKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDI2KSxpPXtk
ZWx0YVg6ZnVuY3Rpb24oZSl7cmV0dXJuImRlbHRhWCJpbiBlP2UuZGVsdGFYOiJ3aGVlbERlbHRh
WCJpbiBlPy1lLndoZWVsRGVsdGFYOjB9LGRlbHRhWTpmdW5jdGlvbihlKXtyZXR1cm4iZGVsdGFZ
ImluIGU/ZS5kZWx0YVk6IndoZWVsRGVsdGFZImluIGU/LWUud2hlZWxEZWx0YVk6IndoZWVsRGVs
dGEiaW4gZT8tZS53aGVlbERlbHRhOjB9LGRlbHRhWjpudWxsLGRlbHRhTW9kZTpudWxsfTtvLmF1
Z21lbnRDbGFzcyhyLGkpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiBuKGUpe2Zvcih2YXIgdD0xLG49MCxvPTAsaT1lLmxlbmd0aCxhPWkmLTQ7bzxhOyl7
Zm9yKHZhciB1PU1hdGgubWluKG8rNDA5NixhKTtvPHU7bys9NCluKz0odCs9ZS5jaGFyQ29kZUF0
KG8pKSsodCs9ZS5jaGFyQ29kZUF0KG8rMSkpKyh0Kz1lLmNoYXJDb2RlQXQobysyKSkrKHQrPWUu
Y2hhckNvZGVBdChvKzMpKTt0JT1yLG4lPXJ9Zm9yKDtvPGk7bysrKW4rPXQrPWUuY2hhckNvZGVB
dChvKTtyZXR1cm4gdCU9cixuJT1yLHR8bjw8MTZ9dmFyIHI9NjU1MjE7ZS5leHBvcnRzPW59LGZ1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXt2YXIgbz1udWxs
PT10fHwiYm9vbGVhbiI9PXR5cGVvZiB0fHwiIj09PXQ7aWYobylyZXR1cm4iIjt2YXIgYT1pc05h
Tih0KTtpZihyfHxhfHwwPT09dHx8aS5oYXNPd25Qcm9wZXJ0eShlKSYmaVtlXSlyZXR1cm4iIit0
O2lmKCJzdHJpbmciPT10eXBlb2YgdCl7dD10LnRyaW0oKX1yZXR1cm4gdCsicHgifXZhciBvPW4o
NTgpLGk9KG4oMiksby5pc1VuaXRsZXNzTnVtYmVyKTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKG51bGw9PWUpcmV0dXJuIG51bGw7aWYo
MT09PWUubm9kZVR5cGUpcmV0dXJuIGU7dmFyIHQ9YS5nZXQoZSk7cmV0dXJuIHQ/KHQ9dSh0KSx0
P2kuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0KTpudWxsKTp2b2lkKCJmdW5jdGlvbiI9PXR5cGVvZiBl
LnJlbmRlcj9vKCI0NCIpOm8oIjQ1IixPYmplY3Qua2V5cyhlKSkpfXZhciBvPW4oMyksaT0obigx
MSksbig1KSksYT1uKDIxKSx1PW4oNzIpO24oMSksbigyKTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24o
ZSx0LG4peyhmdW5jdGlvbih0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtpZihl
JiYib2JqZWN0Ij09dHlwZW9mIGUpe3ZhciBvPWUsaT12b2lkIDA9PT1vW25dO2kmJm51bGwhPXQm
JihvW25dPXQpfX1mdW5jdGlvbiBvKGUsdCl7aWYobnVsbD09ZSlyZXR1cm4gZTt2YXIgbj17fTty
ZXR1cm4gaShlLHIsbiksbn12YXIgaT0obigzOCksbig3OCkpO24oMik7InVuZGVmaW5lZCIhPXR5
cGVvZiB0JiZ0LmVudiwxLGUuZXhwb3J0cz1vfSkuY2FsbCh0LG4oODcpKX0sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKGUua2V5KXt2YXIgdD1pW2Uua2V5XXx8
ZS5rZXk7aWYoIlVuaWRlbnRpZmllZCIhPT10KXJldHVybiB0fWlmKCJrZXlwcmVzcyI9PT1lLnR5
cGUpe3ZhciBuPW8oZSk7cmV0dXJuIDEzPT09bj8iRW50ZXIiOlN0cmluZy5mcm9tQ2hhckNvZGUo
bil9cmV0dXJuImtleWRvd24iPT09ZS50eXBlfHwia2V5dXAiPT09ZS50eXBlP2FbZS5rZXlDb2Rl
XXx8IlVuaWRlbnRpZmllZCI6IiJ9dmFyIG89big0NCksaT17RXNjOiJFc2NhcGUiLFNwYWNlYmFy
OiIgIixMZWZ0OiJBcnJvd0xlZnQiLFVwOiJBcnJvd1VwIixSaWdodDoiQXJyb3dSaWdodCIsRG93
bjoiQXJyb3dEb3duIixEZWw6IkRlbGV0ZSIsV2luOiJPUyIsTWVudToiQ29udGV4dE1lbnUiLEFw
cHM6IkNvbnRleHRNZW51IixTY3JvbGw6IlNjcm9sbExvY2siLE1velByaW50YWJsZUtleToiVW5p
ZGVudGlmaWVkIn0sYT17ODoiQmFja3NwYWNlIiw5OiJUYWIiLDEyOiJDbGVhciIsMTM6IkVudGVy
IiwxNjoiU2hpZnQiLDE3OiJDb250cm9sIiwxODoiQWx0IiwxOToiUGF1c2UiLDIwOiJDYXBzTG9j
ayIsMjc6IkVzY2FwZSIsMzI6IiAiLDMzOiJQYWdlVXAiLDM0OiJQYWdlRG93biIsMzU6IkVuZCIs
MzY6IkhvbWUiLDM3OiJBcnJvd0xlZnQiLDM4OiJBcnJvd1VwIiwzOToiQXJyb3dSaWdodCIsNDA6
IkFycm93RG93biIsNDU6Ikluc2VydCIsNDY6IkRlbGV0ZSIsMTEyOiJGMSIsMTEzOiJGMiIsMTE0
OiJGMyIsMTE1OiJGNCIsMTE2OiJGNSIsMTE3OiJGNiIsMTE4OiJGNyIsMTE5OiJGOCIsMTIwOiJG
OSIsMTIxOiJGMTAiLDEyMjoiRjExIiwxMjM6IkYxMiIsMTQ0OiJOdW1Mb2NrIiwxNDU6IlNjcm9s
bExvY2siLDIyNDoiTWV0YSJ9O2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiBuKGUpe3ZhciB0PWUmJihyJiZlW3JdfHxlW29dKTtpZigiZnVuY3Rpb24iPT10
eXBlb2YgdClyZXR1cm4gdH12YXIgcj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wu
aXRlcmF0b3Isbz0iQEBpdGVyYXRvciI7ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCl7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIG4oZSl7Zm9yKDtlJiZlLmZpcnN0Q2hpbGQ7KWU9ZS5maXJzdENoaWxk
O3JldHVybiBlfWZ1bmN0aW9uIHIoZSl7Zm9yKDtlOyl7aWYoZS5uZXh0U2libGluZylyZXR1cm4g
ZS5uZXh0U2libGluZztlPWUucGFyZW50Tm9kZX19ZnVuY3Rpb24gbyhlLHQpe2Zvcih2YXIgbz1u
KGUpLGk9MCxhPTA7bzspe2lmKDM9PT1vLm5vZGVUeXBlKXtpZihhPWkrby50ZXh0Q29udGVudC5s
ZW5ndGgsaTw9dCYmYT49dClyZXR1cm57bm9kZTpvLG9mZnNldDp0LWl9O2k9YX1vPW4ocihvKSl9
fWUuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0
KXt2YXIgbj17fTtyZXR1cm4gbltlLnRvTG93ZXJDYXNlKCldPXQudG9Mb3dlckNhc2UoKSxuWyJX
ZWJraXQiK2VdPSJ3ZWJraXQiK3QsblsiTW96IitlXT0ibW96Iit0LG5bIm1zIitlXT0iTVMiK3Qs
blsiTyIrZV09Im8iK3QudG9Mb3dlckNhc2UoKSxufWZ1bmN0aW9uIG8oZSl7aWYodVtlXSlyZXR1
cm4gdVtlXTtpZighYVtlXSlyZXR1cm4gZTt2YXIgdD1hW2VdO2Zvcih2YXIgbiBpbiB0KWlmKHQu
aGFzT3duUHJvcGVydHkobikmJm4gaW4gcylyZXR1cm4gdVtlXT10W25dO3JldHVybiIifXZhciBp
PW4oNiksYT17YW5pbWF0aW9uZW5kOnIoIkFuaW1hdGlvbiIsIkFuaW1hdGlvbkVuZCIpLGFuaW1h
dGlvbml0ZXJhdGlvbjpyKCJBbmltYXRpb24iLCJBbmltYXRpb25JdGVyYXRpb24iKSxhbmltYXRp
b25zdGFydDpyKCJBbmltYXRpb24iLCJBbmltYXRpb25TdGFydCIpLHRyYW5zaXRpb25lbmQ6cigi
VHJhbnNpdGlvbiIsIlRyYW5zaXRpb25FbmQiKX0sdT17fSxzPXt9O2kuY2FuVXNlRE9NJiYocz1k
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZSwiQW5pbWF0aW9uRXZlbnQiaW4gd2lu
ZG93fHwoZGVsZXRlIGEuYW5pbWF0aW9uZW5kLmFuaW1hdGlvbixkZWxldGUgYS5hbmltYXRpb25p
dGVyYXRpb24uYW5pbWF0aW9uLGRlbGV0ZSBhLmFuaW1hdGlvbnN0YXJ0LmFuaW1hdGlvbiksIlRy
YW5zaXRpb25FdmVudCJpbiB3aW5kb3d8fGRlbGV0ZSBhLnRyYW5zaXRpb25lbmQudHJhbnNpdGlv
biksZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
KXtyZXR1cm4nIicrbyhlKSsnIid9dmFyIG89bigyOCk7ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big2Nyk7ZS5leHBvcnRzPXIucmVuZGVyU3VidHJlZUlu
dG9Db250YWluZXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXty
ZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbyhlLHQpe2lmKCEo
ZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3Mg
YXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGkoZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNl
RXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVu
IGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVv
ZiB0P2U6dH1mdW5jdGlvbiBhKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10
KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVs
bCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0
ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0
YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmpl
Y3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX1mdW5jdGlvbiB1KCl7dmFyIGUs
dD1hcmd1bWVudHMubGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06
InN0b3JlIixuPWFyZ3VtZW50c1sxXSxyPW58fHQrIlN1YnNjcmlwdGlvbiIsdT1mdW5jdGlvbihl
KXtmdW5jdGlvbiBuKHIsYSl7byh0aGlzLG4pO3ZhciB1PWkodGhpcyxlLmNhbGwodGhpcyxyLGEp
KTtyZXR1cm4gdVt0XT1yLnN0b3JlLHV9cmV0dXJuIGEobixlKSxuLnByb3RvdHlwZS5nZXRDaGls
ZENvbnRleHQ9ZnVuY3Rpb24oKXt2YXIgZTtyZXR1cm4gZT17fSxlW3RdPXRoaXNbdF0sZVtyXT1u
dWxsLGV9LG4ucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiBzLkNoaWxkcmVuLm9u
bHkodGhpcy5wcm9wcy5jaGlsZHJlbil9LG59KHMuQ29tcG9uZW50KTtyZXR1cm4gdS5wcm9wVHlw
ZXM9e3N0b3JlOnAuc3RvcmVTaGFwZS5pc1JlcXVpcmVkLGNoaWxkcmVuOmwuZGVmYXVsdC5lbGVt
ZW50LmlzUmVxdWlyZWR9LHUuY2hpbGRDb250ZXh0VHlwZXM9KGU9e30sZVt0XT1wLnN0b3JlU2hh
cGUuaXNSZXF1aXJlZCxlW3JdPXAuc3Vic2NyaXB0aW9uU2hhcGUsZSksdX10Ll9fZXNNb2R1bGU9
ITAsdC5jcmVhdGVQcm92aWRlcj11O3ZhciBzPW4oMTIpLGM9big1NiksbD1yKGMpLHA9big4Miks
ZD1uKDUwKTtyKGQpO3QuZGVmYXVsdD11KCl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rp
b24gbyhlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKXQuaW5kZXhPZihyKT49MHx8T2JqZWN0
LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJihuW3JdPWVbcl0pO3JldHVybiBu
fWZ1bmN0aW9uIGkoZSx0LG4pe2Zvcih2YXIgcj10Lmxlbmd0aC0xO3I+PTA7ci0tKXt2YXIgbz10
W3JdKGUpO2lmKG8pcmV0dXJuIG99cmV0dXJuIGZ1bmN0aW9uKHQscil7dGhyb3cgbmV3IEVycm9y
KCJJbnZhbGlkIHZhbHVlIG9mIHR5cGUgIit0eXBlb2YgZSsiIGZvciAiK24rIiBhcmd1bWVudCB3
aGVuIGNvbm5lY3RpbmcgY29tcG9uZW50ICIrci53cmFwcGVkQ29tcG9uZW50TmFtZSsiLiIpfX1m
dW5jdGlvbiBhKGUsdCl7cmV0dXJuIGU9PT10fWZ1bmN0aW9uIHUoKXt2YXIgZT1hcmd1bWVudHMu
bGVuZ3RoPjAmJnZvaWQgMCE9PWFyZ3VtZW50c1swXT9hcmd1bWVudHNbMF06e30sdD1lLmNvbm5l
Y3RIT0Msbj12b2lkIDA9PT10P2wuZGVmYXVsdDp0LHI9ZS5tYXBTdGF0ZVRvUHJvcHNGYWN0b3Jp
ZXMsdT12b2lkIDA9PT1yP20uZGVmYXVsdDpyLGM9ZS5tYXBEaXNwYXRjaFRvUHJvcHNGYWN0b3Jp
ZXMscD12b2lkIDA9PT1jP2guZGVmYXVsdDpjLGY9ZS5tZXJnZVByb3BzRmFjdG9yaWVzLHY9dm9p
ZCAwPT09Zj9nLmRlZmF1bHQ6Zix5PWUuc2VsZWN0b3JGYWN0b3J5LGI9dm9pZCAwPT09eT9fLmRl
ZmF1bHQ6eTtyZXR1cm4gZnVuY3Rpb24oZSx0LHIpe3ZhciBjPWFyZ3VtZW50cy5sZW5ndGg+MyYm
dm9pZCAwIT09YXJndW1lbnRzWzNdP2FyZ3VtZW50c1szXTp7fSxsPWMucHVyZSxmPXZvaWQgMD09
PWx8fGwsaD1jLmFyZVN0YXRlc0VxdWFsLG09dm9pZCAwPT09aD9hOmgseT1jLmFyZU93blByb3Bz
RXF1YWwsZz12b2lkIDA9PT15P2QuZGVmYXVsdDp5LF89Yy5hcmVTdGF0ZVByb3BzRXF1YWwsQz12
b2lkIDA9PT1fP2QuZGVmYXVsdDpfLEU9Yy5hcmVNZXJnZWRQcm9wc0VxdWFsLHc9dm9pZCAwPT09
RT9kLmRlZmF1bHQ6RSxUPW8oYyxbInB1cmUiLCJhcmVTdGF0ZXNFcXVhbCIsImFyZU93blByb3Bz
RXF1YWwiLCJhcmVTdGF0ZVByb3BzRXF1YWwiLCJhcmVNZXJnZWRQcm9wc0VxdWFsIl0pLFA9aShl
LHUsIm1hcFN0YXRlVG9Qcm9wcyIpLHg9aSh0LHAsIm1hcERpc3BhdGNoVG9Qcm9wcyIpLE89aShy
LHYsIm1lcmdlUHJvcHMiKTtyZXR1cm4gbihiLHMoe21ldGhvZE5hbWU6ImNvbm5lY3QiLGdldERp
c3BsYXlOYW1lOmZ1bmN0aW9uKGUpe3JldHVybiJDb25uZWN0KCIrZSsiKSJ9LHNob3VsZEhhbmRs
ZVN0YXRlQ2hhbmdlczpCb29sZWFuKGUpLGluaXRNYXBTdGF0ZVRvUHJvcHM6UCxpbml0TWFwRGlz
cGF0Y2hUb1Byb3BzOngsaW5pdE1lcmdlUHJvcHM6TyxwdXJlOmYsYXJlU3RhdGVzRXF1YWw6bSxh
cmVPd25Qcm9wc0VxdWFsOmcsYXJlU3RhdGVQcm9wc0VxdWFsOkMsYXJlTWVyZ2VkUHJvcHNFcXVh
bDp3fSxUKSl9fXQuX19lc01vZHVsZT0hMDt2YXIgcz1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihl
KXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07
Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikm
JihlW3JdPW5bcl0pfXJldHVybiBlfTt0LmNyZWF0ZUNvbm5lY3Q9dTt2YXIgYz1uKDc5KSxsPXIo
YykscD1uKDE5NSksZD1yKHApLGY9bigxODkpLGg9cihmKSx2PW4oMTkwKSxtPXIodikseT1uKDE5
MSksZz1yKHkpLGI9bigxOTIpLF89cihiKTt0LmRlZmF1bHQ9dSgpfSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGU/KDAs
dS53cmFwTWFwVG9Qcm9wc0Z1bmMpKGUsIm1hcERpc3BhdGNoVG9Qcm9wcyIpOnZvaWQgMH1mdW5j
dGlvbiBvKGUpe3JldHVybiBlP3ZvaWQgMDooMCx1LndyYXBNYXBUb1Byb3BzQ29uc3RhbnQpKGZ1
bmN0aW9uKGUpe3JldHVybntkaXNwYXRjaDplfX0pfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGUmJiJv
YmplY3QiPT10eXBlb2YgZT8oMCx1LndyYXBNYXBUb1Byb3BzQ29uc3RhbnQpKGZ1bmN0aW9uKHQp
e3JldHVybigwLGEuYmluZEFjdGlvbkNyZWF0b3JzKShlLHQpfSk6dm9pZCAwfXQuX19lc01vZHVs
ZT0hMCx0LndoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc0Z1bmN0aW9uPXIsdC53aGVuTWFwRGlzcGF0
Y2hUb1Byb3BzSXNNaXNzaW5nPW8sdC53aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNPYmplY3Q9aTt2
YXIgYT1uKDMwKSx1PW4oODApO3QuZGVmYXVsdD1bcixvLGldfSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGU/KDAsaS53
cmFwTWFwVG9Qcm9wc0Z1bmMpKGUsIm1hcFN0YXRlVG9Qcm9wcyIpOnZvaWQgMH1mdW5jdGlvbiBv
KGUpe3JldHVybiBlP3ZvaWQgMDooMCxpLndyYXBNYXBUb1Byb3BzQ29uc3RhbnQpKGZ1bmN0aW9u
KCl7cmV0dXJue319KX10Ll9fZXNNb2R1bGU9ITAsdC53aGVuTWFwU3RhdGVUb1Byb3BzSXNGdW5j
dGlvbj1yLHQud2hlbk1hcFN0YXRlVG9Qcm9wc0lzTWlzc2luZz1vO3ZhciBpPW4oODApO3QuZGVm
YXVsdD1bcixvXX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3Jl
dHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBvKGUsdCxuKXtyZXR1
cm4gcyh7fSxuLGUsdCl9ZnVuY3Rpb24gaShlKXtyZXR1cm4gZnVuY3Rpb24odCxuKXt2YXIgcj0o
bi5kaXNwbGF5TmFtZSxuLnB1cmUpLG89bi5hcmVNZXJnZWRQcm9wc0VxdWFsLGk9ITEsYT12b2lk
IDA7cmV0dXJuIGZ1bmN0aW9uKHQsbix1KXt2YXIgcz1lKHQsbix1KTsKK3JldHVybiBpP3ImJm8o
cyxhKXx8KGE9cyk6KGk9ITAsYT1zKSxhfX19ZnVuY3Rpb24gYShlKXtyZXR1cm4iZnVuY3Rpb24i
PT10eXBlb2YgZT9pKGUpOnZvaWQgMH1mdW5jdGlvbiB1KGUpe3JldHVybiBlP3ZvaWQgMDpmdW5j
dGlvbigpe3JldHVybiBvfX10Ll9fZXNNb2R1bGU9ITA7dmFyIHM9T2JqZWN0LmFzc2lnbnx8ZnVu
Y3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1l
bnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2Fs
bChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX07dC5kZWZhdWx0TWVyZ2VQcm9wcz1vLHQud3Jh
cE1lcmdlUHJvcHNGdW5jPWksdC53aGVuTWVyZ2VQcm9wc0lzRnVuY3Rpb249YSx0LndoZW5NZXJn
ZVByb3BzSXNPbWl0dGVkPXU7dmFyIGM9big4Myk7cihjKTt0LmRlZmF1bHQ9W2EsdV19LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9k
dWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbyhlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBl
KXQuaW5kZXhPZihyKT49MHx8T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUs
cikmJihuW3JdPWVbcl0pO3JldHVybiBufWZ1bmN0aW9uIGkoZSx0LG4scil7cmV0dXJuIGZ1bmN0
aW9uKG8saSl7cmV0dXJuIG4oZShvLGkpLHQocixpKSxpKX19ZnVuY3Rpb24gYShlLHQsbixyLG8p
e2Z1bmN0aW9uIGkobyxpKXtyZXR1cm4gaD1vLHY9aSxtPWUoaCx2KSx5PXQocix2KSxnPW4obSx5
LHYpLGY9ITAsZ31mdW5jdGlvbiBhKCl7cmV0dXJuIG09ZShoLHYpLHQuZGVwZW5kc09uT3duUHJv
cHMmJih5PXQocix2KSksZz1uKG0seSx2KX1mdW5jdGlvbiB1KCl7cmV0dXJuIGUuZGVwZW5kc09u
T3duUHJvcHMmJihtPWUoaCx2KSksdC5kZXBlbmRzT25Pd25Qcm9wcyYmKHk9dChyLHYpKSxnPW4o
bSx5LHYpfWZ1bmN0aW9uIHMoKXt2YXIgdD1lKGgsdikscj0hZCh0LG0pO3JldHVybiBtPXQsciYm
KGc9bihtLHksdikpLGd9ZnVuY3Rpb24gYyhlLHQpe3ZhciBuPSFwKHQsdikscj0hbChlLGgpO3Jl
dHVybiBoPWUsdj10LG4mJnI/YSgpOm4/dSgpOnI/cygpOmd9dmFyIGw9by5hcmVTdGF0ZXNFcXVh
bCxwPW8uYXJlT3duUHJvcHNFcXVhbCxkPW8uYXJlU3RhdGVQcm9wc0VxdWFsLGY9ITEsaD12b2lk
IDAsdj12b2lkIDAsbT12b2lkIDAseT12b2lkIDAsZz12b2lkIDA7cmV0dXJuIGZ1bmN0aW9uKGUs
dCl7cmV0dXJuIGY/YyhlLHQpOmkoZSx0KX19ZnVuY3Rpb24gdShlLHQpe3ZhciBuPXQuaW5pdE1h
cFN0YXRlVG9Qcm9wcyxyPXQuaW5pdE1hcERpc3BhdGNoVG9Qcm9wcyx1PXQuaW5pdE1lcmdlUHJv
cHMscz1vKHQsWyJpbml0TWFwU3RhdGVUb1Byb3BzIiwiaW5pdE1hcERpc3BhdGNoVG9Qcm9wcyIs
ImluaXRNZXJnZVByb3BzIl0pLGM9bihlLHMpLGw9cihlLHMpLHA9dShlLHMpLGQ9cy5wdXJlP2E6
aTtyZXR1cm4gZChjLGwscCxlLHMpfXQuX19lc01vZHVsZT0hMCx0LmltcHVyZUZpbmFsUHJvcHNT
ZWxlY3RvckZhY3Rvcnk9aSx0LnB1cmVGaW5hbFByb3BzU2VsZWN0b3JGYWN0b3J5PWEsdC5kZWZh
dWx0PXU7dmFyIHM9bigxOTMpO3Iocyl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24g
byhlLHQsbil7aWYoIWUpdGhyb3cgbmV3IEVycm9yKCJVbmV4cGVjdGVkIHZhbHVlIGZvciAiK3Qr
IiBpbiAiK24rIi4iKTsibWFwU3RhdGVUb1Byb3BzIiE9PXQmJiJtYXBEaXNwYXRjaFRvUHJvcHMi
IT09dHx8ZS5oYXNPd25Qcm9wZXJ0eSgiZGVwZW5kc09uT3duUHJvcHMiKXx8KDAsdS5kZWZhdWx0
KSgiVGhlIHNlbGVjdG9yIGZvciAiK3QrIiBvZiAiK24rIiBkaWQgbm90IHNwZWNpZnkgYSB2YWx1
ZSBmb3IgZGVwZW5kc09uT3duUHJvcHMuIil9ZnVuY3Rpb24gaShlLHQsbixyKXtvKGUsIm1hcFN0
YXRlVG9Qcm9wcyIsciksbyh0LCJtYXBEaXNwYXRjaFRvUHJvcHMiLHIpLG8obiwibWVyZ2VQcm9w
cyIscil9dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD1pO3ZhciBhPW4oNTApLHU9cihhKX0sZnVu
Y3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLHQpe2lmKCEoZSBpbnN0YW5jZW9m
IHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlv
biIpfWZ1bmN0aW9uIHIoKXt2YXIgZT1bXSx0PVtdO3JldHVybntjbGVhcjpmdW5jdGlvbigpe3Q9
byxlPW99LG5vdGlmeTpmdW5jdGlvbigpe2Zvcih2YXIgbj1lPXQscj0wO3I8bi5sZW5ndGg7cisr
KW5bcl0oKX0sZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHR9LHN1YnNjcmliZTpmdW5jdGlvbihuKXt2
YXIgcj0hMDtyZXR1cm4gdD09PWUmJih0PWUuc2xpY2UoKSksdC5wdXNoKG4pLGZ1bmN0aW9uKCl7
ciYmZSE9PW8mJihyPSExLHQ9PT1lJiYodD1lLnNsaWNlKCkpLHQuc3BsaWNlKHQuaW5kZXhPZihu
KSwxKSl9fX19dC5fX2VzTW9kdWxlPSEwO3ZhciBvPW51bGwsaT17bm90aWZ5OmZ1bmN0aW9uKCl7
fX0sYT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUodCxyLG8pe24odGhpcyxlKSx0aGlzLnN0b3JlPXQs
dGhpcy5wYXJlbnRTdWI9cix0aGlzLm9uU3RhdGVDaGFuZ2U9byx0aGlzLnVuc3Vic2NyaWJlPW51
bGwsdGhpcy5saXN0ZW5lcnM9aX1yZXR1cm4gZS5wcm90b3R5cGUuYWRkTmVzdGVkU3ViPWZ1bmN0
aW9uKGUpe3JldHVybiB0aGlzLnRyeVN1YnNjcmliZSgpLHRoaXMubGlzdGVuZXJzLnN1YnNjcmli
ZShlKX0sZS5wcm90b3R5cGUubm90aWZ5TmVzdGVkU3Vicz1mdW5jdGlvbigpe3RoaXMubGlzdGVu
ZXJzLm5vdGlmeSgpfSxlLnByb3RvdHlwZS5pc1N1YnNjcmliZWQ9ZnVuY3Rpb24oKXtyZXR1cm4g
Qm9vbGVhbih0aGlzLnVuc3Vic2NyaWJlKX0sZS5wcm90b3R5cGUudHJ5U3Vic2NyaWJlPWZ1bmN0
aW9uKCl7dGhpcy51bnN1YnNjcmliZXx8KHRoaXMudW5zdWJzY3JpYmU9dGhpcy5wYXJlbnRTdWI/
dGhpcy5wYXJlbnRTdWIuYWRkTmVzdGVkU3ViKHRoaXMub25TdGF0ZUNoYW5nZSk6dGhpcy5zdG9y
ZS5zdWJzY3JpYmUodGhpcy5vblN0YXRlQ2hhbmdlKSx0aGlzLmxpc3RlbmVycz1yKCkpfSxlLnBy
b3RvdHlwZS50cnlVbnN1YnNjcmliZT1mdW5jdGlvbigpe3RoaXMudW5zdWJzY3JpYmUmJih0aGlz
LnVuc3Vic2NyaWJlKCksdGhpcy51bnN1YnNjcmliZT1udWxsLHRoaXMubGlzdGVuZXJzLmNsZWFy
KCksdGhpcy5saXN0ZW5lcnM9aSl9LGV9KCk7dC5kZWZhdWx0PWF9LGZ1bmN0aW9uKGUsdCl7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0KXtyZXR1cm4gZT09PXQ/MCE9PWV8fDAhPT10fHwxL2U9
PT0xL3Q6ZSE9PWUmJnQhPT10fWZ1bmN0aW9uIHIoZSx0KXtpZihuKGUsdCkpcmV0dXJuITA7aWYo
Im9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZXx8Im9iamVjdCIhPXR5cGVvZiB0fHxudWxsPT09
dClyZXR1cm4hMTt2YXIgcj1PYmplY3Qua2V5cyhlKSxpPU9iamVjdC5rZXlzKHQpO2lmKHIubGVu
Z3RoIT09aS5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBhPTA7YTxyLmxlbmd0aDthKyspaWYoIW8u
Y2FsbCh0LHJbYV0pfHwhbihlW3JbYV1dLHRbclthXV0pKXJldHVybiExO3JldHVybiEwfXQuX19l
c01vZHVsZT0hMCx0LmRlZmF1bHQ9cjt2YXIgbz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3Bl
cnR5fSxmdW5jdGlvbihlLHQsbil7InVuZGVmaW5lZCI9PXR5cGVvZiBQcm9taXNlJiYobigyMTAp
LmVuYWJsZSgpLHdpbmRvdy5Qcm9taXNlPW4oMjA5KSksbigyMTIpLE9iamVjdC5hc3NpZ249bigy
MDgpfSxmdW5jdGlvbihlLHQpeyhmdW5jdGlvbih0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihl
KXt1Lmxlbmd0aHx8KGEoKSxzPSEwKSx1W3UubGVuZ3RoXT1lfWZ1bmN0aW9uIHIoKXtmb3IoO2M8
dS5sZW5ndGg7KXt2YXIgZT1jO2lmKGMrPTEsdVtlXS5jYWxsKCksYz5sKXtmb3IodmFyIHQ9MCxu
PXUubGVuZ3RoLWM7dDxuO3QrKyl1W3RdPXVbdCtjXTt1Lmxlbmd0aC09YyxjPTB9fXUubGVuZ3Ro
PTAsYz0wLHM9ITF9ZnVuY3Rpb24gbyhlKXt2YXIgdD0xLG49bmV3IGQoZSkscj1kb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZSgiIik7cmV0dXJuIG4ub2JzZXJ2ZShyLHtjaGFyYWN0ZXJEYXRhOiEwfSks
ZnVuY3Rpb24oKXt0PS10LHIuZGF0YT10fX1mdW5jdGlvbiBpKGUpe3JldHVybiBmdW5jdGlvbigp
e2Z1bmN0aW9uIHQoKXtjbGVhclRpbWVvdXQobiksY2xlYXJJbnRlcnZhbChyKSxlKCl9dmFyIG49
c2V0VGltZW91dCh0LDApLHI9c2V0SW50ZXJ2YWwodCw1MCl9fWUuZXhwb3J0cz1uO3ZhciBhLHU9
W10scz0hMSxjPTAsbD0xMDI0LHA9InVuZGVmaW5lZCIhPXR5cGVvZiB0P3Q6c2VsZixkPXAuTXV0
YXRpb25PYnNlcnZlcnx8cC5XZWJLaXRNdXRhdGlvbk9ic2VydmVyO2E9ImZ1bmN0aW9uIj09dHlw
ZW9mIGQ/byhyKTppKHIpLG4ucmVxdWVzdEZsdXNoPWEsbi5tYWtlUmVxdWVzdENhbGxGcm9tVGlt
ZXI9aX0pLmNhbGwodCxmdW5jdGlvbigpe3JldHVybiB0aGlzfSgpKX0sZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2
YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3du
UHJvcGVydHkuY2FsbChlLG4pJiYodFtuXT1lW25dKTtyZXR1cm4gdC5kZWZhdWx0PWUsdH1PYmpl
Y3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5jbGVhckNvbXBs
ZXRlZD10LmNvbXBsZXRlQWxsPXQuY29tcGxldGVUb2RvPXQuZWRpdFRvZG89dC5kZWxldGVUb2Rv
PXQuYWRkVG9kbz12b2lkIDA7dmFyIG89big4NSksaT1yKG8pO3QuYWRkVG9kbz1mdW5jdGlvbihl
KXtyZXR1cm57dHlwZTppLkFERF9UT0RPLHRleHQ6ZX19LHQuZGVsZXRlVG9kbz1mdW5jdGlvbihl
KXtyZXR1cm57dHlwZTppLkRFTEVURV9UT0RPLGlkOmV9fSx0LmVkaXRUb2RvPWZ1bmN0aW9uKGUs
dCl7cmV0dXJue3R5cGU6aS5FRElUX1RPRE8saWQ6ZSx0ZXh0OnR9fSx0LmNvbXBsZXRlVG9kbz1m
dW5jdGlvbihlKXtyZXR1cm57dHlwZTppLkNPTVBMRVRFX1RPRE8saWQ6ZX19LHQuY29tcGxldGVB
bGw9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTppLkNPTVBMRVRFX0FMTH19LHQuY2xlYXJDb21wbGV0
ZWQ9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTppLkNMRUFSX0NPTVBMRVRFRH19fSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9l
OntkZWZhdWx0OmV9fWZ1bmN0aW9uIG8oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBu
ZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlv
biBpKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVu
IGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9i
amVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24gYShlLHQp
e2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJT
dXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIr
dHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0
cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEw
fX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6
ZS5fX3Byb3RvX189dCl9ZnVuY3Rpb24gdShlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVm
aW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdy
aXRhYmxlOiEwfSk6ZVt0XT1uLGV9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUi
LHt2YWx1ZTohMH0pO3ZhciBzLGM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBu
PTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8
ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4g
biYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksbD1uKDEyKSxwPXIobCksZD1uKDMx
KSxmPXIoZCksaD1uKDg2KSx2PShzPXt9LHUocyxoLlNIT1dfQUxMLCJBbGwiKSx1KHMsaC5TSE9X
X0FDVElWRSwiQWN0aXZlIiksdShzLGguU0hPV19DT01QTEVURUQsIkNvbXBsZXRlZCIpLHMpLG09
ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBvKHRoaXMsdCksaSh0aGlzLCh0Ll9fcHJv
dG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLGFyZ3VtZW50cykpfXJl
dHVybiBhKHQsZSksYyh0LFt7a2V5OiJyZW5kZXJUb2RvQ291bnQiLHZhbHVlOmZ1bmN0aW9uKCl7
dmFyIGU9dGhpcy5wcm9wcy5hY3RpdmVDb3VudCx0PTE9PT1lPyJpdGVtIjoiaXRlbXMiO3JldHVy
biBwLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgic3BhbiIse2NsYXNzTmFtZToidG9kby1jb3VudCJ9
LHAuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJzdHJvbmciLG51bGwsZXx8Ik5vIiksIiAiLHQsIiBs
ZWZ0Iil9fSx7a2V5OiJyZW5kZXJGaWx0ZXJMaW5rIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD12
W2VdLG49dGhpcy5wcm9wcyxyPW4uZmlsdGVyLG89bi5vblNob3c7cmV0dXJuIHAuZGVmYXVsdC5j
cmVhdGVFbGVtZW50KCJhIix7Y2xhc3NOYW1lOigwLGYuZGVmYXVsdCkoe3NlbGVjdGVkOmU9PT1y
fSksc3R5bGU6e2N1cnNvcjoicG9pbnRlciJ9LG9uQ2xpY2s6ZnVuY3Rpb24oKXtyZXR1cm4gbyhl
KX19LHQpfX0se2tleToicmVuZGVyQ2xlYXJCdXR0b24iLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9
dGhpcy5wcm9wcyx0PWUuY29tcGxldGVkQ291bnQsbj1lLm9uQ2xlYXJDb21wbGV0ZWQ7aWYodD4w
KXJldHVybiBwLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7Y2xhc3NOYW1lOiJjbGVh
ci1jb21wbGV0ZWQiLG9uQ2xpY2s6bn0sIkNsZWFyIGNvbXBsZXRlZCIpfX0se2tleToicmVuZGVy
Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIHAuZGVmYXVsdC5jcmVhdGVFbGVt
ZW50KCJmb290ZXIiLHtjbGFzc05hbWU6ImZvb3RlciJ9LHRoaXMucmVuZGVyVG9kb0NvdW50KCks
cC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInVsIix7Y2xhc3NOYW1lOiJmaWx0ZXJzIn0sW2guU0hP
V19BTEwsaC5TSE9XX0FDVElWRSxoLlNIT1dfQ09NUExFVEVEXS5tYXAoZnVuY3Rpb24odCl7cmV0
dXJuIHAuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJsaSIse2tleTp0fSxlLnJlbmRlckZpbHRlckxp
bmsodCkpfSkpLHRoaXMucmVuZGVyQ2xlYXJCdXR0b24oKSl9fV0pLHR9KGwuQ29tcG9uZW50KTtt
LnByb3BUeXBlcz17Y29tcGxldGVkQ291bnQ6bC5Qcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQs
YWN0aXZlQ291bnQ6bC5Qcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsZmlsdGVyOmwuUHJvcFR5
cGVzLnN0cmluZy5pc1JlcXVpcmVkLG9uQ2xlYXJDb21wbGV0ZWQ6bC5Qcm9wVHlwZXMuZnVuYy5p
c1JlcXVpcmVkLG9uU2hvdzpsLlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWR9LHQuZGVmYXVsdD1t
fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUu
X19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIG8oZSx0KXtpZighKGUgaW5zdGFuY2Vv
ZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rp
b24iKX1mdW5jdGlvbiBpKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlz
IGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTty
ZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVu
Y3Rpb24gYShlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcg
VHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5j
dGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90
b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29u
ZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3Rv
dHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNN
b2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2
YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFi
bGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2Jq
ZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0
dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLHM9bigxMiksYz1yKHMpLGw9
big4NCkscD1yKGwpLGQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlLG4scixhO28odGhp
cyx0KTtmb3IodmFyIHU9YXJndW1lbnRzLmxlbmd0aCxzPUFycmF5KHUpLGM9MDtjPHU7YysrKXNb
Y109YXJndW1lbnRzW2NdO3JldHVybiBuPXI9aSh0aGlzLChlPXQuX19wcm90b19ffHxPYmplY3Qu
Z2V0UHJvdG90eXBlT2YodCkpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KHMpKSksci5oYW5k
bGVTYXZlPWZ1bmN0aW9uKGUpezAhPT1lLmxlbmd0aCYmci5wcm9wcy5hZGRUb2RvKGUpfSxhPW4s
aShyLGEpfXJldHVybiBhKHQsZSksdSh0LFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7
cmV0dXJuIGMuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJoZWFkZXIiLHtjbGFzc05hbWU6ImhlYWRl
ciJ9LGMuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJoMSIsbnVsbCwidG9kb3MiKSxjLmRlZmF1bHQu
Y3JlYXRlRWxlbWVudChwLmRlZmF1bHQse25ld1RvZG86ITAsb25TYXZlOnRoaXMuaGFuZGxlU2F2
ZSxwbGFjZWhvbGRlcjoiV2hhdCBuZWVkcyB0byBiZSBkb25lPyJ9KSl9fV0pLHR9KHMuQ29tcG9u
ZW50KTtkLnByb3BUeXBlcz17YWRkVG9kbzpzLlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWR9LHQu
ZGVmYXVsdD1kfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0
dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIG8oZSx0KXtpZighKGUg
aW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFz
IGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBpKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVy
cm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBj
YWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2Yg
dD9lOnR9ZnVuY3Rpb24gYShlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0
aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwg
b3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUo
dCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFi
bGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0
LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9ZnVuY3Rpb24gdShlLHQsbil7cmV0
dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6
ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9T2JqZWN0LmRlZmluZVBy
b3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBzLGM9T2JqZWN0LmFzc2lnbnx8
ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJn
dW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHku
Y2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX0sbD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUo
ZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9
ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFi
bGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24o
dCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxwPW4oMTIp
LGQ9cihwKSxmPW4oMjAyKSxoPXIoZiksdj1uKDE5OSksbT1yKHYpLHk9big4NiksZz0ocz17fSx1
KHMseS5TSE9XX0FMTCxmdW5jdGlvbigpe3JldHVybiEwfSksdShzLHkuU0hPV19BQ1RJVkUsZnVu
Y3Rpb24oZSl7cmV0dXJuIWUuY29tcGxldGVkfSksdShzLHkuU0hPV19DT01QTEVURUQsZnVuY3Rp
b24oZSl7cmV0dXJuIGUuY29tcGxldGVkfSkscyksYj1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7
dmFyIGUsbixyLGE7byh0aGlzLHQpO2Zvcih2YXIgdT1hcmd1bWVudHMubGVuZ3RoLHM9QXJyYXko
dSksYz0wO2M8dTtjKyspc1tjXT1hcmd1bWVudHNbY107cmV0dXJuIG49cj1pKHRoaXMsKGU9dC5f
X3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbC5hcHBseShlLFt0aGlzXS5j
b25jYXQocykpKSxyLnN0YXRlPXtmaWx0ZXI6eS5TSE9XX0FMTH0sci5oYW5kbGVDbGVhckNvbXBs
ZXRlZD1mdW5jdGlvbigpe3IucHJvcHMuYWN0aW9ucy5jbGVhckNvbXBsZXRlZCgpfSxyLmhhbmRs
ZVNob3c9ZnVuY3Rpb24oZSl7ci5zZXRTdGF0ZSh7ZmlsdGVyOmV9KX0sYT1uLGkocixhKX1yZXR1
cm4gYSh0LGUpLGwodCxbe2tleToicmVuZGVyVG9nZ2xlQWxsIix2YWx1ZTpmdW5jdGlvbihlKXt2
YXIgdD10aGlzLnByb3BzLG49dC50b2RvcyxyPXQuYWN0aW9ucztpZihuLmxlbmd0aD4wKXJldHVy
biBkLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiaW5wdXQiLHtjbGFzc05hbWU6InRvZ2dsZS1hbGwi
LHR5cGU6ImNoZWNrYm94IixjaGVja2VkOmU9PT1uLmxlbmd0aCxvbkNoYW5nZTpyLmNvbXBsZXRl
QWxsfSl9fSx7a2V5OiJyZW5kZXJGb290ZXIiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMu
cHJvcHMudG9kb3Msbj10aGlzLnN0YXRlLmZpbHRlcixyPXQubGVuZ3RoLWU7aWYodC5sZW5ndGgp
cmV0dXJuIGQuZGVmYXVsdC5jcmVhdGVFbGVtZW50KG0uZGVmYXVsdCx7Y29tcGxldGVkQ291bnQ6
ZSxhY3RpdmVDb3VudDpyLGZpbHRlcjpuLG9uQ2xlYXJDb21wbGV0ZWQ6dGhpcy5oYW5kbGVDbGVh
ckNvbXBsZXRlZC5iaW5kKHRoaXMpLG9uU2hvdzp0aGlzLmhhbmRsZVNob3cuYmluZCh0aGlzKX0p
fX0se2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLnRv
ZG9zLG49ZS5hY3Rpb25zLHI9dGhpcy5zdGF0ZS5maWx0ZXIsbz10LmZpbHRlcihnW3JdKSxpPXQu
cmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQuY29tcGxldGVkP2UrMTplfSwwKTtyZXR1cm4g
ZC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInNlY3Rpb24iLHtjbGFzc05hbWU6Im1haW4ifSx0aGlz
LnJlbmRlclRvZ2dsZUFsbChpKSxkLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgidWwiLHtjbGFzc05h
bWU6InRvZG8tbGlzdCJ9LG8ubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBkLmRlZmF1bHQuY3JlYXRl
RWxlbWVudChoLmRlZmF1bHQsYyh7a2V5OmUuaWQsdG9kbzplfSxuKSl9KSksdGhpcy5yZW5kZXJG
b290ZXIoaSkpfX1dKSx0fShwLkNvbXBvbmVudCk7Yi5wcm9wVHlwZXM9e3RvZG9zOnAuUHJvcFR5
cGVzLmFycmF5LmlzUmVxdWlyZWQsYWN0aW9uczpwLlByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJl
ZH0sdC5kZWZhdWx0PWJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
KXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbyhlLHQpe2lm
KCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xh
c3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGkoZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJl
bmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBi
ZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5
cGVvZiB0P2U6dH1mdW5jdGlvbiBhKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwh
PT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUg
bnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNy
ZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3
cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9P
YmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX1PYmplY3QuZGVmaW5lUHJv
cGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHU9ZnVuY3Rpb24oKXtmdW5jdGlv
biBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJh
YmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndy
aXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0
aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCkscz1u
KDEyKSxjPXIocyksbD1uKDMxKSxwPXIobCksZD1uKDg0KSxmPXIoZCksaD1mdW5jdGlvbihlKXtm
dW5jdGlvbiB0KCl7dmFyIGUsbixyLGE7byh0aGlzLHQpO2Zvcih2YXIgdT1hcmd1bWVudHMubGVu
Z3RoLHM9QXJyYXkodSksYz0wO2M8dTtjKyspc1tjXT1hcmd1bWVudHNbY107cmV0dXJuIG49cj1p
KHRoaXMsKGU9dC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbC5hcHBs
eShlLFt0aGlzXS5jb25jYXQocykpKSxyLnN0YXRlPXtlZGl0aW5nOiExfSxyLmhhbmRsZURvdWJs
ZUNsaWNrPWZ1bmN0aW9uKCl7ci5zZXRTdGF0ZSh7ZWRpdGluZzohMH0pfSxyLmhhbmRsZVNhdmU9
ZnVuY3Rpb24oZSx0KXswPT09dC5sZW5ndGg/ci5wcm9wcy5kZWxldGVUb2RvKGUpOnIucHJvcHMu
ZWRpdFRvZG8oZSx0KSxyLnNldFN0YXRlKHtlZGl0aW5nOiExfSl9LGE9bixpKHIsYSl9cmV0dXJu
IGEodCxlKSx1KHQsW3trZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9
dGhpcy5wcm9wcyxuPXQudG9kbyxyPXQuY29tcGxldGVUb2RvLG89dC5kZWxldGVUb2RvLGk9dm9p
ZCAwO3JldHVybiBpPXRoaXMuc3RhdGUuZWRpdGluZz9jLmRlZmF1bHQuY3JlYXRlRWxlbWVudChm
LmRlZmF1bHQse3RleHQ6bi50ZXh0LGVkaXRpbmc6dGhpcy5zdGF0ZS5lZGl0aW5nLG9uU2F2ZTpm
dW5jdGlvbih0KXtyZXR1cm4gZS5oYW5kbGVTYXZlKG4uaWQsdCl9fSk6Yy5kZWZhdWx0LmNyZWF0
ZUVsZW1lbnQoImRpdiIse2NsYXNzTmFtZToidmlldyJ9LGMuZGVmYXVsdC5jcmVhdGVFbGVtZW50
KCJpbnB1dCIse2NsYXNzTmFtZToidG9nZ2xlIix0eXBlOiJjaGVja2JveCIsY2hlY2tlZDpuLmNv
bXBsZXRlZCxvbkNoYW5nZTpmdW5jdGlvbigpe3JldHVybiByKG4uaWQpfX0pLGMuZGVmYXVsdC5j
cmVhdGVFbGVtZW50KCJsYWJlbCIse29uRG91YmxlQ2xpY2s6dGhpcy5oYW5kbGVEb3VibGVDbGlj
a30sbi50ZXh0KSxjLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7Y2xhc3NOYW1lOiJk
ZXN0cm95IixvbkNsaWNrOmZ1bmN0aW9uKCl7cmV0dXJuIG8obi5pZCl9fSkpLGMuZGVmYXVsdC5j
cmVhdGVFbGVtZW50KCJsaSIse2NsYXNzTmFtZTooMCxwLmRlZmF1bHQpKHtjb21wbGV0ZWQ6bi5j
b21wbGV0ZWQsZWRpdGluZzp0aGlzLnN0YXRlLmVkaXRpbmd9KX0saSl9fV0pLHR9KHMuQ29tcG9u
ZW50KTtoLnByb3BUeXBlcz17dG9kbzpzLlByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxlZGl0
VG9kbzpzLlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsZGVsZXRlVG9kbzpzLlByb3BUeXBlcy5m
dW5jLmlzUmVxdWlyZWQsY29tcGxldGVUb2RvOnMuUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZH0s
dC5kZWZhdWx0PWh9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtp
ZihlJiZlLl9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4g
aW4gZSlPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmKHRbbl09ZVtu
XSk7cmV0dXJuIHQuZGVmYXVsdD1lLHR9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZSYmZS5fX2VzTW9k
dWxlP2U6e2RlZmF1bHQ6ZX19T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2
YWx1ZTohMH0pO3ZhciBpPW4oMTIpLGE9byhpKSx1PW4oMzApLHM9big4MSksYz1uKDIwMCksbD1v
KGMpLHA9bigyMDEpLGQ9byhwKSxmPW4oMTk4KSxoPXIoZiksdj1mdW5jdGlvbihlKXt2YXIgdD1l
LnRvZG9zLG49ZS5hY3Rpb25zO3JldHVybiBhLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiZGl2Iixu
dWxsLGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGwuZGVmYXVsdCx7YWRkVG9kbzpuLmFkZFRvZG99
KSxhLmRlZmF1bHQuY3JlYXRlRWxlbWVudChkLmRlZmF1bHQse3RvZG9zOnQsYWN0aW9uczpufSkp
fTt2LnByb3BUeXBlcz17dG9kb3M6aS5Qcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxhY3Rpb25z
OmkuUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkfTt2YXIgbT1mdW5jdGlvbihlKXtyZXR1cm57
dG9kb3M6ZS50b2Rvc319LHk9ZnVuY3Rpb24oZSl7cmV0dXJue2FjdGlvbnM6KDAsdS5iaW5kQWN0
aW9uQ3JlYXRvcnMpKGgsZSl9fTt0LmRlZmF1bHQ9KDAscy5jb25uZWN0KShtLHkpKHYpfSxmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01v
ZHVsZT9lOntkZWZhdWx0OmV9fXZhciBvPW4oMTIpLGk9cihvKSxhPW4oMTIzKSx1PW4oMzApLHM9
big4MSksYz1uKDIwMyksbD1yKGMpLHA9bigyMDUpLGQ9cihwKTtuKDIwNyk7dmFyIGY9KDAsdS5j
cmVhdGVTdG9yZSkoZC5kZWZhdWx0KTsoMCxhLnJlbmRlcikoaS5kZWZhdWx0LmNyZWF0ZUVsZW1l
bnQocy5Qcm92aWRlcix7c3RvcmU6Zn0saS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQobC5kZWZhdWx0
LG51bGwpKSxkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicm9vdCIpKX0sZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVm
YXVsdDplfX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7
dmFyIG89bigzMCksaT1uKDIwNiksYT1yKGkpLHU9KDAsby5jb21iaW5lUmVkdWNlcnMpKHt0b2Rv
czphLmRlZmF1bHR9KTt0LmRlZmF1bHQ9dX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUpe2lmKEFycmF5LmlzQXJyYXkoZSkpe2Zvcih2YXIgdD0wLG49QXJyYXkoZS5s
ZW5ndGgpO3Q8ZS5sZW5ndGg7dCsrKW5bdF09ZVt0XTtyZXR1cm4gbn1yZXR1cm4gQXJyYXkuZnJv
bShlKX1mdW5jdGlvbiBvKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aDw9MHx8dm9pZCAwPT09YXJn
dW1lbnRzWzBdP3M6YXJndW1lbnRzWzBdLHQ9YXJndW1lbnRzWzFdLG49ZnVuY3Rpb24oKXtzd2l0
Y2godC50eXBlKXtjYXNlIHUuQUREX1RPRE86cmV0dXJue3Y6W3tpZDplLnJlZHVjZShmdW5jdGlv
bihlLHQpe3JldHVybiBNYXRoLm1heCh0LmlkLGUpfSwtMSkrMSxjb21wbGV0ZWQ6ITEsdGV4dDp0
LnRleHR9XS5jb25jYXQocihlKSl9O2Nhc2UgdS5ERUxFVEVfVE9ETzpyZXR1cm57djplLmZpbHRl
cihmdW5jdGlvbihlKXtyZXR1cm4gZS5pZCE9PXQuaWR9KX07Y2FzZSB1LkVESVRfVE9ETzpyZXR1
cm57djplLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5pZD09PXQuaWQ/YSh7fSxlLHt0ZXh0OnQu
dGV4dH0pOmV9KX07Y2FzZSB1LkNPTVBMRVRFX1RPRE86cmV0dXJue3Y6ZS5tYXAoZnVuY3Rpb24o
ZSl7cmV0dXJuIGUuaWQ9PT10LmlkP2Eoe30sZSx7Y29tcGxldGVkOiFlLmNvbXBsZXRlZH0pOmV9
KX07Y2FzZSB1LkNPTVBMRVRFX0FMTDp2YXIgbj1lLmV2ZXJ5KGZ1bmN0aW9uKGUpe3JldHVybiBl
LmNvbXBsZXRlZH0pO3JldHVybnt2OmUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBhKHt9LGUse2Nv
bXBsZXRlZDohbn0pfSl9O2Nhc2UgdS5DTEVBUl9DT01QTEVURUQ6cmV0dXJue3Y6ZS5maWx0ZXIo
ZnVuY3Rpb24oZSl7cmV0dXJuIGUuY29tcGxldGVkPT09ITF9KX07ZGVmYXVsdDpyZXR1cm57djpl
fX19KCk7aWYoIm9iamVjdCI9PT0oInVuZGVmaW5lZCI9PXR5cGVvZiBuPyJ1bmRlZmluZWQiOmko
bikpKXJldHVybiBuLnZ9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1
ZTohMH0pO3ZhciBpPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJiJzeW1ib2wiPT10eXBlb2Yg
U3ltYm9sLml0ZXJhdG9yP2Z1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZX06ZnVuY3Rpb24oZSl7
cmV0dXJuIGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJmUuY29uc3RydWN0b3I9PT1TeW1i
b2w/InN5bWJvbCI6dHlwZW9mIGV9LGE9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZh
ciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIg
ciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1u
W3JdKX1yZXR1cm4gZX07dC5kZWZhdWx0PW87dmFyIHU9big4NSkscz1bXX0sZnVuY3Rpb24oZSx0
KXt9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7aWYobnVsbD09PWV8
fHZvaWQgMD09PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUg
Y2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWQiKTtyZXR1cm4gT2JqZWN0KGUpfWZ1bmN0aW9u
IHIoKXt0cnl7aWYoIU9iamVjdC5hc3NpZ24pcmV0dXJuITE7dmFyIGU9bmV3IFN0cmluZygiYWJj
Iik7aWYoZVs1XT0iZGUiLCI1Ij09PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpWzBdKXJl
dHVybiExO2Zvcih2YXIgdD17fSxuPTA7bjwxMDtuKyspdFsiXyIrU3RyaW5nLmZyb21DaGFyQ29k
ZShuKV09bjt2YXIgcj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KS5tYXAoZnVuY3Rpb24o
ZSl7cmV0dXJuIHRbZV19KTtpZigiMDEyMzQ1Njc4OSIhPT1yLmpvaW4oIiIpKXJldHVybiExO3Zh
ciBvPXt9O3JldHVybiJhYmNkZWZnaGlqa2xtbm9wcXJzdCIuc3BsaXQoIiIpLmZvckVhY2goZnVu
Y3Rpb24oZSl7b1tlXT1lfSksImFiY2RlZmdoaWprbG1ub3BxcnN0Ij09PU9iamVjdC5rZXlzKE9i
amVjdC5hc3NpZ24oe30sbykpLmpvaW4oIiIpfWNhdGNoKGkpe3JldHVybiExfX12YXIgbz1PYmpl
Y3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGk9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlz
RW51bWVyYWJsZTtlLmV4cG9ydHM9cigpP09iamVjdC5hc3NpZ246ZnVuY3Rpb24oZSx0KXtmb3Io
dmFyIHIsYSx1PW4oZSkscz0xO3M8YXJndW1lbnRzLmxlbmd0aDtzKyspe3I9T2JqZWN0KGFyZ3Vt
ZW50c1tzXSk7Zm9yKHZhciBjIGluIHIpby5jYWxsKHIsYykmJih1W2NdPXJbY10pO2lmKE9iamVj
dC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpe2E9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhy
KTtmb3IodmFyIGw9MDtsPGEubGVuZ3RoO2wrKylpLmNhbGwocixhW2xdKSYmKHVbYVtsXV09clth
W2xdXSl9fXJldHVybiB1fX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUpe3ZhciB0PW5ldyBvKG8uXzYxKTtyZXR1cm4gdC5fODE9MSx0Ll82NT1lLHR9dmFyIG89big4
OCk7ZS5leHBvcnRzPW87dmFyIGk9cighMCksYT1yKCExKSx1PXIobnVsbCkscz1yKHZvaWQgMCks
Yz1yKDApLGw9cigiIik7by5yZXNvbHZlPWZ1bmN0aW9uKGUpe2lmKGUgaW5zdGFuY2VvZiBvKXJl
dHVybiBlO2lmKG51bGw9PT1lKXJldHVybiB1O2lmKHZvaWQgMD09PWUpcmV0dXJuIHM7aWYoZT09
PSEwKXJldHVybiBpO2lmKGU9PT0hMSlyZXR1cm4gYTtpZigwPT09ZSlyZXR1cm4gYztpZigiIj09
PWUpcmV0dXJuIGw7aWYoIm9iamVjdCI9PXR5cGVvZiBlfHwiZnVuY3Rpb24iPT10eXBlb2YgZSl0
cnl7dmFyIHQ9ZS50aGVuO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0KXJldHVybiBuZXcgbyh0LmJp
bmQoZSkpfWNhdGNoKG4pe3JldHVybiBuZXcgbyhmdW5jdGlvbihlLHQpe3Qobil9KX1yZXR1cm4g
cihlKX0sby5hbGw9ZnVuY3Rpb24oZSl7dmFyIHQ9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwo
ZSk7cmV0dXJuIG5ldyBvKGZ1bmN0aW9uKGUsbil7ZnVuY3Rpb24gcihhLHUpe2lmKHUmJigib2Jq
ZWN0Ij09dHlwZW9mIHV8fCJmdW5jdGlvbiI9PXR5cGVvZiB1KSl7aWYodSBpbnN0YW5jZW9mIG8m
JnUudGhlbj09PW8ucHJvdG90eXBlLnRoZW4pe2Zvcig7Mz09PXUuXzgxOyl1PXUuXzY1O3JldHVy
biAxPT09dS5fODE/cihhLHUuXzY1KTooMj09PXUuXzgxJiZuKHUuXzY1KSx2b2lkIHUudGhlbihm
dW5jdGlvbihlKXtyKGEsZSl9LG4pKX12YXIgcz11LnRoZW47aWYoImZ1bmN0aW9uIj09dHlwZW9m
IHMpe3ZhciBjPW5ldyBvKHMuYmluZCh1KSk7cmV0dXJuIHZvaWQgYy50aGVuKGZ1bmN0aW9uKGUp
e3IoYSxlKX0sbil9fXRbYV09dSwwPT09LS1pJiZlKHQpfWlmKDA9PT10Lmxlbmd0aClyZXR1cm4g
ZShbXSk7Zm9yKHZhciBpPXQubGVuZ3RoLGE9MDthPHQubGVuZ3RoO2ErKylyKGEsdFthXSl9KX0s
by5yZWplY3Q9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBvKGZ1bmN0aW9uKHQsbil7bihlKX0pfSxv
LnJhY2U9ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBvKGZ1bmN0aW9uKHQsbil7ZS5mb3JFYWNoKGZ1
bmN0aW9uKGUpe28ucmVzb2x2ZShlKS50aGVuKHQsbil9KX0pfSxvLnByb3RvdHlwZS5jYXRjaD1m
dW5jdGlvbihlKXtyZXR1cm4gdGhpcy50aGVuKG51bGwsZSl9fSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtjPSExLHUuXzEwPW51bGwsdS5fOTc9bnVsbH1mdW5jdGlv
biBvKGUpe2Z1bmN0aW9uIHQodCl7KGUuYWxsUmVqZWN0aW9uc3x8YShwW3RdLmVycm9yLGUud2hp
dGVsaXN0fHxzKSkmJihwW3RdLmRpc3BsYXlJZD1sKyssZS5vblVuaGFuZGxlZD8ocFt0XS5sb2dn
ZWQ9ITAsZS5vblVuaGFuZGxlZChwW3RdLmRpc3BsYXlJZCxwW3RdLmVycm9yKSk6KHBbdF0ubG9n
Z2VkPSEwLGkocFt0XS5kaXNwbGF5SWQscFt0XS5lcnJvcikpKX1mdW5jdGlvbiBuKHQpe3BbdF0u
bG9nZ2VkJiYoZS5vbkhhbmRsZWQ/ZS5vbkhhbmRsZWQocFt0XS5kaXNwbGF5SWQscFt0XS5lcnJv
cik6cFt0XS5vblVuaGFuZGxlZHx8KGNvbnNvbGUud2FybigiUHJvbWlzZSBSZWplY3Rpb24gSGFu
ZGxlZCAoaWQ6ICIrcFt0XS5kaXNwbGF5SWQrIik6IiksY29uc29sZS53YXJuKCcgIFRoaXMgbWVh
bnMgeW91IGNhbiBpZ25vcmUgYW55IHByZXZpb3VzIG1lc3NhZ2VzIG9mIHRoZSBmb3JtICJQb3Nz
aWJsZSBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb24iIHdpdGggaWQgJytwW3RdLmRpc3BsYXlJ
ZCsiLiIpKSl9ZT1lfHx7fSxjJiZyKCksYz0hMDt2YXIgbz0wLGw9MCxwPXt9O3UuXzEwPWZ1bmN0
aW9uKGUpezI9PT1lLl84MSYmcFtlLl83Ml0mJihwW2UuXzcyXS5sb2dnZWQ/bihlLl83Mik6Y2xl
YXJUaW1lb3V0KHBbZS5fNzJdLnRpbWVvdXQpLGRlbGV0ZSBwW2UuXzcyXSl9LHUuXzk3PWZ1bmN0
aW9uKGUsbil7MD09PWUuXzQ1JiYoZS5fNzI9bysrLHBbZS5fNzJdPXtkaXNwbGF5SWQ6bnVsbCxl
cnJvcjpuLHRpbWVvdXQ6c2V0VGltZW91dCh0LmJpbmQobnVsbCxlLl83MiksYShuLHMpPzEwMDoy
ZTMpLGxvZ2dlZDohMX0pfX1mdW5jdGlvbiBpKGUsdCl7Y29uc29sZS53YXJuKCJQb3NzaWJsZSBV
bmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb24gKGlkOiAiK2UrIik6Iik7dmFyIG49KHQmJih0LnN0
YWNrfHx0KSkrIiI7bi5zcGxpdCgiXG4iKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2NvbnNvbGUud2Fy
bigiICAiK2UpfSl9ZnVuY3Rpb24gYShlLHQpe3JldHVybiB0LnNvbWUoZnVuY3Rpb24odCl7cmV0
dXJuIGUgaW5zdGFuY2VvZiB0fSl9dmFyIHU9big4OCkscz1bUmVmZXJlbmNlRXJyb3IsVHlwZUVy
cm9yLFJhbmdlRXJyb3JdLGM9ITE7dC5kaXNhYmxlPXIsdC5lbmFibGU9b30sZnVuY3Rpb24oZSx0
KXtlLmV4cG9ydHM9ZnVuY3Rpb24oZSl7cmV0dXJuIGUud2VicGFja1BvbHlmaWxsfHwoZS5kZXBy
ZWNhdGU9ZnVuY3Rpb24oKXt9LGUucGF0aHM9W10sZS5jaGlsZHJlbj1bXSxlLndlYnBhY2tQb2x5
ZmlsbD0xKSxlfX0sZnVuY3Rpb24oZSx0KXshZnVuY3Rpb24oZSl7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHQoZSl7aWYoInN0cmluZyIhPXR5cGVvZiBlJiYoZT1TdHJpbmcoZSkpLC9bXmEtejAtOVwt
IyQlJicqKy5cXl9gfH5dL2kudGVzdChlKSl0aHJvdyBuZXcgVHlwZUVycm9yKCJJbnZhbGlkIGNo
YXJhY3RlciBpbiBoZWFkZXIgZmllbGQgbmFtZSIpO3JldHVybiBlLnRvTG93ZXJDYXNlKCl9ZnVu
Y3Rpb24gbihlKXtyZXR1cm4ic3RyaW5nIiE9dHlwZW9mIGUmJihlPVN0cmluZyhlKSksZX1mdW5j
dGlvbiByKGUpe3ZhciB0PXtuZXh0OmZ1bmN0aW9uKCl7dmFyIHQ9ZS5zaGlmdCgpO3JldHVybntk
b25lOnZvaWQgMD09PXQsdmFsdWU6dH19fTtyZXR1cm4gdi5pdGVyYWJsZSYmKHRbU3ltYm9sLml0
ZXJhdG9yXT1mdW5jdGlvbigpe3JldHVybiB0fSksdH1mdW5jdGlvbiBvKGUpe3RoaXMubWFwPXt9
LGUgaW5zdGFuY2VvZiBvP2UuZm9yRWFjaChmdW5jdGlvbihlLHQpe3RoaXMuYXBwZW5kKHQsZSl9
LHRoaXMpOmUmJk9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpLmZvckVhY2goZnVuY3Rpb24o
dCl7dGhpcy5hcHBlbmQodCxlW3RdKX0sdGhpcyl9ZnVuY3Rpb24gaShlKXtyZXR1cm4gZS5ib2R5
VXNlZD9Qcm9taXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCJBbHJlYWR5IHJlYWQiKSk6dm9pZChl
LmJvZHlVc2VkPSEwKX1mdW5jdGlvbiBhKGUpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbih0
LG4pe2Uub25sb2FkPWZ1bmN0aW9uKCl7dChlLnJlc3VsdCl9LGUub25lcnJvcj1mdW5jdGlvbigp
e24oZS5lcnJvcil9fSl9ZnVuY3Rpb24gdShlKXt2YXIgdD1uZXcgRmlsZVJlYWRlcjtyZXR1cm4g
dC5yZWFkQXNBcnJheUJ1ZmZlcihlKSxhKHQpfWZ1bmN0aW9uIHMoZSl7dmFyIHQ9bmV3IEZpbGVS
ZWFkZXI7cmV0dXJuIHQucmVhZEFzVGV4dChlKSxhKHQpfWZ1bmN0aW9uIGMoKXtyZXR1cm4gdGhp
cy5ib2R5VXNlZD0hMSx0aGlzLl9pbml0Qm9keT1mdW5jdGlvbihlKXtpZih0aGlzLl9ib2R5SW5p
dD1lLCJzdHJpbmciPT10eXBlb2YgZSl0aGlzLl9ib2R5VGV4dD1lO2Vsc2UgaWYodi5ibG9iJiZC
bG9iLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGUpKXRoaXMuX2JvZHlCbG9iPWU7ZWxzZSBpZih2
LmZvcm1EYXRhJiZGb3JtRGF0YS5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihlKSl0aGlzLl9ib2R5
Rm9ybURhdGE9ZTtlbHNlIGlmKHYuc2VhcmNoUGFyYW1zJiZVUkxTZWFyY2hQYXJhbXMucHJvdG90
eXBlLmlzUHJvdG90eXBlT2YoZSkpdGhpcy5fYm9keVRleHQ9ZS50b1N0cmluZygpO2Vsc2UgaWYo
ZSl7aWYoIXYuYXJyYXlCdWZmZXJ8fCFBcnJheUJ1ZmZlci5wcm90b3R5cGUuaXNQcm90b3R5cGVP
ZihlKSl0aHJvdyBuZXcgRXJyb3IoInVuc3VwcG9ydGVkIEJvZHlJbml0IHR5cGUiKX1lbHNlIHRo
aXMuX2JvZHlUZXh0PSIiO3RoaXMuaGVhZGVycy5nZXQoImNvbnRlbnQtdHlwZSIpfHwoInN0cmlu
ZyI9PXR5cGVvZiBlP3RoaXMuaGVhZGVycy5zZXQoImNvbnRlbnQtdHlwZSIsInRleHQvcGxhaW47
Y2hhcnNldD1VVEYtOCIpOnRoaXMuX2JvZHlCbG9iJiZ0aGlzLl9ib2R5QmxvYi50eXBlP3RoaXMu
aGVhZGVycy5zZXQoImNvbnRlbnQtdHlwZSIsdGhpcy5fYm9keUJsb2IudHlwZSk6di5zZWFyY2hQ
YXJhbXMmJlVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihlKSYmdGhpcy5o
ZWFkZXJzLnNldCgiY29udGVudC10eXBlIiwiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNv
ZGVkO2NoYXJzZXQ9VVRGLTgiKSl9LHYuYmxvYj8odGhpcy5ibG9iPWZ1bmN0aW9uKCl7dmFyIGU9
aSh0aGlzKTtpZihlKXJldHVybiBlO2lmKHRoaXMuX2JvZHlCbG9iKXJldHVybiBQcm9taXNlLnJl
c29sdmUodGhpcy5fYm9keUJsb2IpO2lmKHRoaXMuX2JvZHlGb3JtRGF0YSl0aHJvdyBuZXcgRXJy
b3IoImNvdWxkIG5vdCByZWFkIEZvcm1EYXRhIGJvZHkgYXMgYmxvYiIpO3JldHVybiBQcm9taXNl
LnJlc29sdmUobmV3IEJsb2IoW3RoaXMuX2JvZHlUZXh0XSkpfSx0aGlzLmFycmF5QnVmZmVyPWZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXMuYmxvYigpLnRoZW4odSl9LHRoaXMudGV4dD1mdW5jdGlvbigp
e3ZhciBlPWkodGhpcyk7aWYoZSlyZXR1cm4gZTtpZih0aGlzLl9ib2R5QmxvYilyZXR1cm4gcyh0
aGlzLl9ib2R5QmxvYik7aWYodGhpcy5fYm9keUZvcm1EYXRhKXRocm93IG5ldyBFcnJvcigiY291
bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyB0ZXh0Iik7cmV0dXJuIFByb21pc2UucmVzb2x2
ZSh0aGlzLl9ib2R5VGV4dCl9KTp0aGlzLnRleHQ9ZnVuY3Rpb24oKXt2YXIgZT1pKHRoaXMpO3Jl
dHVybiBlP2U6UHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlUZXh0KX0sdi5mb3JtRGF0YSYmKHRo
aXMuZm9ybURhdGE9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50ZXh0KCkudGhlbihkKX0pLHRoaXMu
anNvbj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRleHQoKS50aGVuKEpTT04ucGFyc2UpfSx0aGlz
fWZ1bmN0aW9uIGwoZSl7dmFyIHQ9ZS50b1VwcGVyQ2FzZSgpO3JldHVybiBtLmluZGV4T2YodCk+
LTE/dDplfWZ1bmN0aW9uIHAoZSx0KXt0PXR8fHt9O3ZhciBuPXQuYm9keTtpZihwLnByb3RvdHlw
ZS5pc1Byb3RvdHlwZU9mKGUpKXtpZihlLmJvZHlVc2VkKXRocm93IG5ldyBUeXBlRXJyb3IoIkFs
cmVhZHkgcmVhZCIpO3RoaXMudXJsPWUudXJsLHRoaXMuY3JlZGVudGlhbHM9ZS5jcmVkZW50aWFs
cyx0LmhlYWRlcnN8fCh0aGlzLmhlYWRlcnM9bmV3IG8oZS5oZWFkZXJzKSksdGhpcy5tZXRob2Q9
ZS5tZXRob2QsdGhpcy5tb2RlPWUubW9kZSxufHwobj1lLl9ib2R5SW5pdCxlLmJvZHlVc2VkPSEw
KX1lbHNlIHRoaXMudXJsPWU7aWYodGhpcy5jcmVkZW50aWFscz10LmNyZWRlbnRpYWxzfHx0aGlz
LmNyZWRlbnRpYWxzfHwib21pdCIsIXQuaGVhZGVycyYmdGhpcy5oZWFkZXJzfHwodGhpcy5oZWFk
ZXJzPW5ldyBvKHQuaGVhZGVycykpLHRoaXMubWV0aG9kPWwodC5tZXRob2R8fHRoaXMubWV0aG9k
fHwiR0VUIiksdGhpcy5tb2RlPXQubW9kZXx8dGhpcy5tb2RlfHxudWxsLHRoaXMucmVmZXJyZXI9
bnVsbCwoIkdFVCI9PT10aGlzLm1ldGhvZHx8IkhFQUQiPT09dGhpcy5tZXRob2QpJiZuKXRocm93
IG5ldyBUeXBlRXJyb3IoIkJvZHkgbm90IGFsbG93ZWQgZm9yIEdFVCBvciBIRUFEIHJlcXVlc3Rz
Iik7dGhpcy5faW5pdEJvZHkobil9ZnVuY3Rpb24gZChlKXt2YXIgdD1uZXcgRm9ybURhdGE7cmV0
dXJuIGUudHJpbSgpLnNwbGl0KCImIikuZm9yRWFjaChmdW5jdGlvbihlKXtpZihlKXt2YXIgbj1l
LnNwbGl0KCI9Iikscj1uLnNoaWZ0KCkucmVwbGFjZSgvXCsvZywiICIpLG89bi5qb2luKCI9Iiku
cmVwbGFjZSgvXCsvZywiICIpO3QuYXBwZW5kKGRlY29kZVVSSUNvbXBvbmVudChyKSxkZWNvZGVV
UklDb21wb25lbnQobykpfX0pLHR9ZnVuY3Rpb24gZihlKXt2YXIgdD1uZXcgbyxuPShlLmdldEFs
bFJlc3BvbnNlSGVhZGVycygpfHwiIikudHJpbSgpLnNwbGl0KCJcbiIpO3JldHVybiBuLmZvckVh
Y2goZnVuY3Rpb24oZSl7dmFyIG49ZS50cmltKCkuc3BsaXQoIjoiKSxyPW4uc2hpZnQoKS50cmlt
KCksbz1uLmpvaW4oIjoiKS50cmltKCk7dC5hcHBlbmQocixvKX0pLHR9ZnVuY3Rpb24gaChlLHQp
e3R8fCh0PXt9KSx0aGlzLnR5cGU9ImRlZmF1bHQiLHRoaXMuc3RhdHVzPXQuc3RhdHVzLHRoaXMu
b2s9dGhpcy5zdGF0dXM+PTIwMCYmdGhpcy5zdGF0dXM8MzAwLHRoaXMuc3RhdHVzVGV4dD10LnN0
YXR1c1RleHQsdGhpcy5oZWFkZXJzPXQuaGVhZGVycyBpbnN0YW5jZW9mIG8/dC5oZWFkZXJzOm5l
dyBvKHQuaGVhZGVycyksdGhpcy51cmw9dC51cmx8fCIiLHRoaXMuX2luaXRCb2R5KGUpfWlmKCFl
LmZldGNoKXt2YXIgdj17c2VhcmNoUGFyYW1zOiJVUkxTZWFyY2hQYXJhbXMiaW4gZSxpdGVyYWJs
ZToiU3ltYm9sImluIGUmJiJpdGVyYXRvciJpbiBTeW1ib2wsYmxvYjoiRmlsZVJlYWRlciJpbiBl
JiYiQmxvYiJpbiBlJiZmdW5jdGlvbigpe3RyeXtyZXR1cm4gbmV3IEJsb2IsITB9Y2F0Y2goZSl7
cmV0dXJuITF9fSgpLGZvcm1EYXRhOiJGb3JtRGF0YSJpbiBlLGFycmF5QnVmZmVyOiJBcnJheUJ1
ZmZlciJpbiBlfTtvLnByb3RvdHlwZS5hcHBlbmQ9ZnVuY3Rpb24oZSxyKXtlPXQoZSkscj1uKHIp
O3ZhciBvPXRoaXMubWFwW2VdO298fChvPVtdLHRoaXMubWFwW2VdPW8pLG8ucHVzaChyKX0sby5w
cm90b3R5cGUuZGVsZXRlPWZ1bmN0aW9uKGUpe2RlbGV0ZSB0aGlzLm1hcFt0KGUpXX0sby5wcm90
b3R5cGUuZ2V0PWZ1bmN0aW9uKGUpe3ZhciBuPXRoaXMubWFwW3QoZSldO3JldHVybiBuP25bMF06
bnVsbH0sby5wcm90b3R5cGUuZ2V0QWxsPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm1hcFt0KGUp
XXx8W119LG8ucHJvdG90eXBlLmhhcz1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5tYXAuaGFzT3du
UHJvcGVydHkodChlKSl9LG8ucHJvdG90eXBlLnNldD1mdW5jdGlvbihlLHIpe3RoaXMubWFwW3Qo
ZSldPVtuKHIpXX0sby5wcm90b3R5cGUuZm9yRWFjaD1mdW5jdGlvbihlLHQpe09iamVjdC5nZXRP
d25Qcm9wZXJ0eU5hbWVzKHRoaXMubWFwKS5mb3JFYWNoKGZ1bmN0aW9uKG4pe3RoaXMubWFwW25d
LmZvckVhY2goZnVuY3Rpb24ocil7ZS5jYWxsKHQscixuLHRoaXMpfSx0aGlzKX0sdGhpcyl9LG8u
cHJvdG90eXBlLmtleXM9ZnVuY3Rpb24oKXt2YXIgZT1bXTtyZXR1cm4gdGhpcy5mb3JFYWNoKGZ1
bmN0aW9uKHQsbil7ZS5wdXNoKG4pfSkscihlKX0sby5wcm90b3R5cGUudmFsdWVzPWZ1bmN0aW9u
KCl7dmFyIGU9W107cmV0dXJuIHRoaXMuZm9yRWFjaChmdW5jdGlvbih0KXtlLnB1c2godCl9KSxy
KGUpfSxvLnByb3RvdHlwZS5lbnRyaWVzPWZ1bmN0aW9uKCl7dmFyIGU9W107cmV0dXJuIHRoaXMu
Zm9yRWFjaChmdW5jdGlvbih0LG4pe2UucHVzaChbbix0XSl9KSxyKGUpfSx2Lml0ZXJhYmxlJiYo
by5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXT1vLnByb3RvdHlwZS5lbnRyaWVzKTt2YXIgbT1b
IkRFTEVURSIsIkdFVCIsIkhFQUQiLCJPUFRJT05TIiwiUE9TVCIsIlBVVCJdO3AucHJvdG90eXBl
LmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBwKHRoaXMpfSxjLmNhbGwocC5wcm90b3R5cGUp
LGMuY2FsbChoLnByb3RvdHlwZSksaC5wcm90b3R5cGUuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4g
bmV3IGgodGhpcy5fYm9keUluaXQse3N0YXR1czp0aGlzLnN0YXR1cyxzdGF0dXNUZXh0OnRoaXMu
c3RhdHVzVGV4dCxoZWFkZXJzOm5ldyBvKHRoaXMuaGVhZGVycyksdXJsOnRoaXMudXJsfSl9LGgu
ZXJyb3I9ZnVuY3Rpb24oKXt2YXIgZT1uZXcgaChudWxsLHtzdGF0dXM6MCxzdGF0dXNUZXh0OiIi
fSk7cmV0dXJuIGUudHlwZT0iZXJyb3IiLGV9O3ZhciB5PVszMDEsMzAyLDMwMywzMDcsMzA4XTto
LnJlZGlyZWN0PWZ1bmN0aW9uKGUsdCl7aWYoeS5pbmRleE9mKHQpPT09LTEpdGhyb3cgbmV3IFJh
bmdlRXJyb3IoIkludmFsaWQgc3RhdHVzIGNvZGUiKTtyZXR1cm4gbmV3IGgobnVsbCx7c3RhdHVz
OnQsaGVhZGVyczp7bG9jYXRpb246ZX19KX0sZS5IZWFkZXJzPW8sZS5SZXF1ZXN0PXAsZS5SZXNw
b25zZT1oLGUuZmV0Y2g9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24o
bixyKXtmdW5jdGlvbiBvKCl7cmV0dXJuInJlc3BvbnNlVVJMImluIGE/YS5yZXNwb25zZVVSTDov
XlgtUmVxdWVzdC1VUkw6L20udGVzdChhLmdldEFsbFJlc3BvbnNlSGVhZGVycygpKT9hLmdldFJl
c3BvbnNlSGVhZGVyKCJYLVJlcXVlc3QtVVJMIik6dm9pZCAwfXZhciBpO2k9cC5wcm90b3R5cGUu
aXNQcm90b3R5cGVPZihlKSYmIXQ/ZTpuZXcgcChlLHQpO3ZhciBhPW5ldyBYTUxIdHRwUmVxdWVz
dDthLm9ubG9hZD1mdW5jdGlvbigpe3ZhciBlPXtzdGF0dXM6YS5zdGF0dXMsc3RhdHVzVGV4dDph
LnN0YXR1c1RleHQsaGVhZGVyczpmKGEpLHVybDpvKCl9LHQ9InJlc3BvbnNlImluIGE/YS5yZXNw
b25zZTphLnJlc3BvbnNlVGV4dDtuKG5ldyBoKHQsZSkpfSxhLm9uZXJyb3I9ZnVuY3Rpb24oKXty
KG5ldyBUeXBlRXJyb3IoIk5ldHdvcmsgcmVxdWVzdCBmYWlsZWQiKSl9LGEub250aW1lb3V0PWZ1
bmN0aW9uKCl7cihuZXcgVHlwZUVycm9yKCJOZXR3b3JrIHJlcXVlc3QgZmFpbGVkIikpfSxhLm9w
ZW4oaS5tZXRob2QsaS51cmwsITApLCJpbmNsdWRlIj09PWkuY3JlZGVudGlhbHMmJihhLndpdGhD
cmVkZW50aWFscz0hMCksInJlc3BvbnNlVHlwZSJpbiBhJiZ2LmJsb2ImJihhLnJlc3BvbnNlVHlw
ZT0iYmxvYiIpLGkuaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7YS5zZXRSZXF1ZXN0SGVh
ZGVyKHQsZSl9KSxhLnNlbmQoInVuZGVmaW5lZCI9PXR5cGVvZiBpLl9ib2R5SW5pdD9udWxsOmku
X2JvZHlJbml0KX0pfSxlLmZldGNoLnBvbHlmaWxsPSEwfX0oInVuZGVmaW5lZCIhPXR5cGVvZiBz
ZWxmP3NlbGY6dGhpcyl9LDM4LFsyMzEsMjNdLGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlKXtyZXR1cm4oIiIrZSkucmVwbGFjZShfLCIkJi8iKX1mdW5jdGlvbiBvKGUs
dCl7dGhpcy5mdW5jPWUsdGhpcy5jb250ZXh0PXQsdGhpcy5jb3VudD0wfWZ1bmN0aW9uIGkoZSx0
LG4pe3ZhciByPWUuZnVuYyxvPWUuY29udGV4dDtyLmNhbGwobyx0LGUuY291bnQrKyl9ZnVuY3Rp
b24gYShlLHQsbil7aWYobnVsbD09ZSlyZXR1cm4gZTt2YXIgcj1vLmdldFBvb2xlZCh0LG4pO3ko
ZSxpLHIpLG8ucmVsZWFzZShyKX1mdW5jdGlvbiB1KGUsdCxuLHIpe3RoaXMucmVzdWx0PWUsdGhp
cy5rZXlQcmVmaXg9dCx0aGlzLmZ1bmM9bix0aGlzLmNvbnRleHQ9cix0aGlzLmNvdW50PTB9ZnVu
Y3Rpb24gcyhlLHQsbil7dmFyIG89ZS5yZXN1bHQsaT1lLmtleVByZWZpeCxhPWUuZnVuYyx1PWUu
Y29udGV4dCxzPWEuY2FsbCh1LHQsZS5jb3VudCsrKTtBcnJheS5pc0FycmF5KHMpP2MocyxvLG4s
bS50aGF0UmV0dXJuc0FyZ3VtZW50KTpudWxsIT1zJiYodi5pc1ZhbGlkRWxlbWVudChzKSYmKHM9
di5jbG9uZUFuZFJlcGxhY2VLZXkocyxpKyghcy5rZXl8fHQmJnQua2V5PT09cy5rZXk/IiI6cihz
LmtleSkrIi8iKStuKSksby5wdXNoKHMpKX1mdW5jdGlvbiBjKGUsdCxuLG8saSl7dmFyIGE9IiI7
bnVsbCE9biYmKGE9cihuKSsiLyIpO3ZhciBjPXUuZ2V0UG9vbGVkKHQsYSxvLGkpO3koZSxzLGMp
LHUucmVsZWFzZShjKX1mdW5jdGlvbiBsKGUsdCxuKXtpZihudWxsPT1lKXJldHVybiBlO3ZhciBy
PVtdO3JldHVybiBjKGUscixudWxsLHQsbikscn1mdW5jdGlvbiBwKGUsdCxuKXtyZXR1cm4gbnVs
bH1mdW5jdGlvbiBkKGUsdCl7cmV0dXJuIHkoZSxwLG51bGwpfWZ1bmN0aW9uIGYoZSl7dmFyIHQ9
W107cmV0dXJuIGMoZSx0LG51bGwsbS50aGF0UmV0dXJuc0FyZ3VtZW50KSx0fXZhciBoPW4oMjE0
KSx2PW4oMTgpLG09big3KSx5PW4oMjI0KSxnPWgudHdvQXJndW1lbnRQb29sZXIsYj1oLmZvdXJB
cmd1bWVudFBvb2xlcixfPS9cLysvZztvLnByb3RvdHlwZS5kZXN0cnVjdG9yPWZ1bmN0aW9uKCl7
dGhpcy5mdW5jPW51bGwsdGhpcy5jb250ZXh0PW51bGwsdGhpcy5jb3VudD0wfSxoLmFkZFBvb2xp
bmdUbyhvLGcpLHUucHJvdG90eXBlLmRlc3RydWN0b3I9ZnVuY3Rpb24oKXt0aGlzLnJlc3VsdD1u
dWxsLHRoaXMua2V5UHJlZml4PW51bGwsdGhpcy5mdW5jPW51bGwsdGhpcy5jb250ZXh0PW51bGws
dGhpcy5jb3VudD0wfSxoLmFkZFBvb2xpbmdUbyh1LGIpO3ZhciBDPXtmb3JFYWNoOmEsbWFwOmws
bWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbDpjLGNvdW50OmQsdG9BcnJheTpmfTtlLmV4cG9y
dHM9Q30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDE4KSxvPXIuY3JlYXRl
RmFjdG9yeSxpPXthOm8oImEiKSxhYmJyOm8oImFiYnIiKSxhZGRyZXNzOm8oImFkZHJlc3MiKSxh
cmVhOm8oImFyZWEiKSxhcnRpY2xlOm8oImFydGljbGUiKSxhc2lkZTpvKCJhc2lkZSIpLGF1ZGlv
Om8oImF1ZGlvIiksYjpvKCJiIiksYmFzZTpvKCJiYXNlIiksYmRpOm8oImJkaSIpLGJkbzpvKCJi
ZG8iKSxiaWc6bygiYmlnIiksYmxvY2txdW90ZTpvKCJibG9ja3F1b3RlIiksYm9keTpvKCJib2R5
IiksYnI6bygiYnIiKSxidXR0b246bygiYnV0dG9uIiksY2FudmFzOm8oImNhbnZhcyIpLGNhcHRp
b246bygiY2FwdGlvbiIpLGNpdGU6bygiY2l0ZSIpLGNvZGU6bygiY29kZSIpLGNvbDpvKCJjb2wi
KSxjb2xncm91cDpvKCJjb2xncm91cCIpLGRhdGE6bygiZGF0YSIpLGRhdGFsaXN0Om8oImRhdGFs
aXN0IiksZGQ6bygiZGQiKSxkZWw6bygiZGVsIiksZGV0YWlsczpvKCJkZXRhaWxzIiksZGZuOm8o
ImRmbiIpLGRpYWxvZzpvKCJkaWFsb2ciKSxkaXY6bygiZGl2IiksZGw6bygiZGwiKSxkdDpvKCJk
dCIpLGVtOm8oImVtIiksZW1iZWQ6bygiZW1iZWQiKSxmaWVsZHNldDpvKCJmaWVsZHNldCIpLGZp
Z2NhcHRpb246bygiZmlnY2FwdGlvbiIpLGZpZ3VyZTpvKCJmaWd1cmUiKSxmb290ZXI6bygiZm9v
dGVyIiksZm9ybTpvKCJmb3JtIiksaDE6bygiaDEiKSxoMjpvKCJoMiIpLGgzOm8oImgzIiksaDQ6
bygiaDQiKSxoNTpvKCJoNSIpLGg2Om8oImg2IiksaGVhZDpvKCJoZWFkIiksaGVhZGVyOm8oImhl
YWRlciIpLGhncm91cDpvKCJoZ3JvdXAiKSxocjpvKCJociIpLGh0bWw6bygiaHRtbCIpLGk6bygi
aSIpLGlmcmFtZTpvKCJpZnJhbWUiKSxpbWc6bygiaW1nIiksaW5wdXQ6bygiaW5wdXQiKSxpbnM6
bygiaW5zIiksa2JkOm8oImtiZCIpLGtleWdlbjpvKCJrZXlnZW4iKSxsYWJlbDpvKCJsYWJlbCIp
LGxlZ2VuZDpvKCJsZWdlbmQiKSxsaTpvKCJsaSIpLGxpbms6bygibGluayIpLG1haW46bygibWFp
biIpLG1hcDpvKCJtYXAiKSxtYXJrOm8oIm1hcmsiKSxtZW51Om8oIm1lbnUiKSxtZW51aXRlbTpv
KCJtZW51aXRlbSIpLG1ldGE6bygibWV0YSIpLG1ldGVyOm8oIm1ldGVyIiksbmF2Om8oIm5hdiIp
LG5vc2NyaXB0Om8oIm5vc2NyaXB0Iiksb2JqZWN0Om8oIm9iamVjdCIpLG9sOm8oIm9sIiksb3B0
Z3JvdXA6bygib3B0Z3JvdXAiKSxvcHRpb246bygib3B0aW9uIiksb3V0cHV0Om8oIm91dHB1dCIp
LHA6bygicCIpLHBhcmFtOm8oInBhcmFtIikscGljdHVyZTpvKCJwaWN0dXJlIikscHJlOm8oInBy
ZSIpLHByb2dyZXNzOm8oInByb2dyZXNzIikscTpvKCJxIikscnA6bygicnAiKSxydDpvKCJydCIp
LHJ1Ynk6bygicnVieSIpLHM6bygicyIpLHNhbXA6bygic2FtcCIpLHNjcmlwdDpvKCJzY3JpcHQi
KSxzZWN0aW9uOm8oInNlY3Rpb24iKSxzZWxlY3Q6bygic2VsZWN0Iiksc21hbGw6bygic21hbGwi
KSxzb3VyY2U6bygic291cmNlIiksc3BhbjpvKCJzcGFuIiksc3Ryb25nOm8oInN0cm9uZyIpLHN0
eWxlOm8oInN0eWxlIiksc3ViOm8oInN1YiIpLHN1bW1hcnk6bygic3VtbWFyeSIpLHN1cDpvKCJz
dXAiKSx0YWJsZTpvKCJ0YWJsZSIpLHRib2R5Om8oInRib2R5IiksdGQ6bygidGQiKSx0ZXh0YXJl
YTpvKCJ0ZXh0YXJlYSIpLHRmb290Om8oInRmb290IiksdGg6bygidGgiKSx0aGVhZDpvKCJ0aGVh
ZCIpLHRpbWU6bygidGltZSIpLHRpdGxlOm8oInRpdGxlIiksdHI6bygidHIiKSx0cmFjazpvKCJ0
cmFjayIpLHU6bygidSIpLHVsOm8oInVsIiksdmFyOm8oInZhciIpLHZpZGVvOm8oInZpZGVvIiks
d2JyOm8oIndiciIpLGNpcmNsZTpvKCJjaXJjbGUiKSxjbGlwUGF0aDpvKCJjbGlwUGF0aCIpLGRl
ZnM6bygiZGVmcyIpLGVsbGlwc2U6bygiZWxsaXBzZSIpLGc6bygiZyIpLGltYWdlOm8oImltYWdl
IiksbGluZTpvKCJsaW5lIiksbGluZWFyR3JhZGllbnQ6bygibGluZWFyR3JhZGllbnQiKSxtYXNr
Om8oIm1hc2siKSxwYXRoOm8oInBhdGgiKSxwYXR0ZXJuOm8oInBhdHRlcm4iKSxwb2x5Z29uOm8o
InBvbHlnb24iKSxwb2x5bGluZTpvKCJwb2x5bGluZSIpLHJhZGlhbEdyYWRpZW50Om8oInJhZGlh
bEdyYWRpZW50IikscmVjdDpvKCJyZWN0Iiksc3RvcDpvKCJzdG9wIiksc3ZnOm8oInN2ZyIpLHRl
eHQ6bygidGV4dCIpLHRzcGFuOm8oInRzcGFuIil9O2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO3ZhciByPW4oMTgpLG89ci5pc1ZhbGlkRWxlbWVudCxpPW4oNTUpO2Uu
ZXhwb3J0cz1pKG8pfSwxNjMsZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDg5
KSxvPXIuQ29tcG9uZW50LGk9bigxOCksYT1pLmlzVmFsaWRFbGVtZW50LHU9big5Mikscz1uKDk3
KTtlLmV4cG9ydHM9cyhvLGEsdSl9LDE4MixmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiBuKCl7cmV0dXJuIHIrK312YXIgcj0xO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO3ZhciByPWZ1bmN0aW9uKCl7fTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBpLmlzVmFsaWRFbGVtZW50KGUp
P3ZvaWQgMDpvKCIxNDMiKSxlfXZhciBvPW4oMjMpLGk9bigxOCk7bigxKTtlLmV4cG9ydHM9cn0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIGUmJiJv
YmplY3QiPT10eXBlb2YgZSYmbnVsbCE9ZS5rZXk/Yy5lc2NhcGUoZS5rZXkpOnQudG9TdHJpbmco
MzYpfWZ1bmN0aW9uIG8oZSx0LG4saSl7dmFyIGQ9dHlwZW9mIGU7aWYoInVuZGVmaW5lZCIhPT1k
JiYiYm9vbGVhbiIhPT1kfHwoZT1udWxsKSxudWxsPT09ZXx8InN0cmluZyI9PT1kfHwibnVtYmVy
Ij09PWR8fCJvYmplY3QiPT09ZCYmZS4kJHR5cGVvZj09PXUpcmV0dXJuIG4oaSxlLCIiPT09dD9s
K3IoZSwwKTp0KSwxO3ZhciBmLGgsdj0wLG09IiI9PT10P2w6dCtwO2lmKEFycmF5LmlzQXJyYXko
ZSkpZm9yKHZhciB5PTA7eTxlLmxlbmd0aDt5KyspZj1lW3ldLGg9bStyKGYseSksdis9byhmLGgs
bixpKTtlbHNle3ZhciBnPXMoZSk7aWYoZyl7dmFyIGIsXz1nLmNhbGwoZSk7aWYoZyE9PWUuZW50
cmllcylmb3IodmFyIEM9MDshKGI9Xy5uZXh0KCkpLmRvbmU7KWY9Yi52YWx1ZSxoPW0rcihmLEMr
Kyksdis9byhmLGgsbixpKTtlbHNlIGZvcig7IShiPV8ubmV4dCgpKS5kb25lOyl7dmFyIEU9Yi52
YWx1ZTtFJiYoZj1FWzFdLGg9bStjLmVzY2FwZShFWzBdKStwK3IoZiwwKSx2Kz1vKGYsaCxuLGkp
KX19ZWxzZSBpZigib2JqZWN0Ij09PWQpewordmFyIHc9IiIsVD1TdHJpbmcoZSk7YSgiMzEiLCJb
b2JqZWN0IE9iamVjdF0iPT09VD8ib2JqZWN0IHdpdGgga2V5cyB7IitPYmplY3Qua2V5cyhlKS5q
b2luKCIsICIpKyJ9IjpULHcpfX1yZXR1cm4gdn1mdW5jdGlvbiBpKGUsdCxuKXtyZXR1cm4gbnVs
bD09ZT8wOm8oZSwiIix0LG4pfXZhciBhPW4oMjMpLHU9KG4oMTEpLG4oOTEpKSxzPW4oMjIwKSxj
PShuKDEpLG4oMjEzKSksbD0obigyKSwiLiIpLHA9IjoiO2UuZXhwb3J0cz1pfSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9l
OntkZWZhdWx0OmV9fWZ1bmN0aW9uIG8oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PUFy
cmF5KGUpLG49MDtuPGU7bisrKXRbbl09YXJndW1lbnRzW25dO3JldHVybiBmdW5jdGlvbihlKXty
ZXR1cm4gZnVuY3Rpb24obixyLG8pe3ZhciBhPWUobixyLG8pLHM9YS5kaXNwYXRjaCxjPVtdLGw9
e2dldFN0YXRlOmEuZ2V0U3RhdGUsZGlzcGF0Y2g6ZnVuY3Rpb24oZSl7cmV0dXJuIHMoZSl9fTty
ZXR1cm4gYz10Lm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZShsKX0pLHM9dS5kZWZhdWx0LmFwcGx5
KHZvaWQgMCxjKShhLmRpc3BhdGNoKSxpKHt9LGEse2Rpc3BhdGNoOnN9KX19fXQuX19lc01vZHVs
ZT0hMDt2YXIgaT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3Vt
ZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0
LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBl
fTt0LmRlZmF1bHQ9bzt2YXIgYT1uKDk0KSx1PXIoYSl9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIG4oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdChlLmFwcGx5KHZv
aWQgMCxhcmd1bWVudHMpKX19ZnVuY3Rpb24gcihlLHQpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBl
KXJldHVybiBuKGUsdCk7aWYoIm9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZSl0aHJvdyBuZXcg
RXJyb3IoImJpbmRBY3Rpb25DcmVhdG9ycyBleHBlY3RlZCBhbiBvYmplY3Qgb3IgYSBmdW5jdGlv
biwgaW5zdGVhZCByZWNlaXZlZCAiKyhudWxsPT09ZT8ibnVsbCI6dHlwZW9mIGUpKycuIERpZCB5
b3Ugd3JpdGUgImltcG9ydCBBY3Rpb25DcmVhdG9ycyBmcm9tIiBpbnN0ZWFkIG9mICJpbXBvcnQg
KiBhcyBBY3Rpb25DcmVhdG9ycyBmcm9tIj8nKTtmb3IodmFyIHI9T2JqZWN0LmtleXMoZSksbz17
fSxpPTA7aTxyLmxlbmd0aDtpKyspe3ZhciBhPXJbaV0sdT1lW2FdOyJmdW5jdGlvbiI9PXR5cGVv
ZiB1JiYob1thXT1uKHUsdCkpfXJldHVybiBvfXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9cn0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9f
ZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBvKGUsdCl7dmFyIG49dCYmdC50eXBlLHI9
biYmJyInK24udG9TdHJpbmcoKSsnIid8fCJhbiBhY3Rpb24iO3JldHVybiJHaXZlbiBhY3Rpb24g
IityKycsIHJlZHVjZXIgIicrZSsnIiByZXR1cm5lZCB1bmRlZmluZWQuIFRvIGlnbm9yZSBhbiBh
Y3Rpb24sIHlvdSBtdXN0IGV4cGxpY2l0bHkgcmV0dXJuIHRoZSBwcmV2aW91cyBzdGF0ZS4gSWYg
eW91IHdhbnQgdGhpcyByZWR1Y2VyIHRvIGhvbGQgbm8gdmFsdWUsIHlvdSBjYW4gcmV0dXJuIG51
bGwgaW5zdGVhZCBvZiB1bmRlZmluZWQuJ31mdW5jdGlvbiBpKGUpe09iamVjdC5rZXlzKGUpLmZv
ckVhY2goZnVuY3Rpb24odCl7dmFyIG49ZVt0XSxyPW4odm9pZCAwLHt0eXBlOnUuQWN0aW9uVHlw
ZXMuSU5JVH0pO2lmKCJ1bmRlZmluZWQiPT10eXBlb2Ygcil0aHJvdyBuZXcgRXJyb3IoJ1JlZHVj
ZXIgIicrdCsiXCIgcmV0dXJuZWQgdW5kZWZpbmVkIGR1cmluZyBpbml0aWFsaXphdGlvbi4gSWYg
dGhlIHN0YXRlIHBhc3NlZCB0byB0aGUgcmVkdWNlciBpcyB1bmRlZmluZWQsIHlvdSBtdXN0IGV4
cGxpY2l0bHkgcmV0dXJuIHRoZSBpbml0aWFsIHN0YXRlLiBUaGUgaW5pdGlhbCBzdGF0ZSBtYXkg
bm90IGJlIHVuZGVmaW5lZC4gSWYgeW91IGRvbid0IHdhbnQgdG8gc2V0IGEgdmFsdWUgZm9yIHRo
aXMgcmVkdWNlciwgeW91IGNhbiB1c2UgbnVsbCBpbnN0ZWFkIG9mIHVuZGVmaW5lZC4iKTt2YXIg
bz0iQEByZWR1eC9QUk9CRV9VTktOT1dOX0FDVElPTl8iK01hdGgucmFuZG9tKCkudG9TdHJpbmco
MzYpLnN1YnN0cmluZyg3KS5zcGxpdCgiIikuam9pbigiLiIpO2lmKCJ1bmRlZmluZWQiPT10eXBl
b2Ygbih2b2lkIDAse3R5cGU6b30pKXRocm93IG5ldyBFcnJvcignUmVkdWNlciAiJyt0KyciIHJl
dHVybmVkIHVuZGVmaW5lZCB3aGVuIHByb2JlZCB3aXRoIGEgcmFuZG9tIHR5cGUuICcrKCJEb24n
dCB0cnkgdG8gaGFuZGxlICIrdS5BY3Rpb25UeXBlcy5JTklUKycgb3Igb3RoZXIgYWN0aW9ucyBp
biAicmVkdXgvKiIgJykrIm5hbWVzcGFjZS4gVGhleSBhcmUgY29uc2lkZXJlZCBwcml2YXRlLiBJ
bnN0ZWFkLCB5b3UgbXVzdCByZXR1cm4gdGhlIGN1cnJlbnQgc3RhdGUgZm9yIGFueSB1bmtub3du
IGFjdGlvbnMsIHVubGVzcyBpdCBpcyB1bmRlZmluZWQsIGluIHdoaWNoIGNhc2UgeW91IG11c3Qg
cmV0dXJuIHRoZSBpbml0aWFsIHN0YXRlLCByZWdhcmRsZXNzIG9mIHRoZSBhY3Rpb24gdHlwZS4g
VGhlIGluaXRpYWwgc3RhdGUgbWF5IG5vdCBiZSB1bmRlZmluZWQsIGJ1dCBjYW4gYmUgbnVsbC4i
KX0pfWZ1bmN0aW9uIGEoZSl7Zm9yKHZhciB0PU9iamVjdC5rZXlzKGUpLG49e30scj0wO3I8dC5s
ZW5ndGg7cisrKXt2YXIgYT10W3JdOyJmdW5jdGlvbiI9PXR5cGVvZiBlW2FdJiYoblthXT1lW2Fd
KX12YXIgdT1PYmplY3Qua2V5cyhuKSxzPXZvaWQgMDt0cnl7aShuKX1jYXRjaChjKXtzPWN9cmV0
dXJuIGZ1bmN0aW9uKCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVu
dHNbMF0/YXJndW1lbnRzWzBdOnt9LHQ9YXJndW1lbnRzWzFdO2lmKHMpdGhyb3cgcztmb3IodmFy
IHI9ITEsaT17fSxhPTA7YTx1Lmxlbmd0aDthKyspe3ZhciBjPXVbYV0sbD1uW2NdLHA9ZVtjXSxk
PWwocCx0KTtpZigidW5kZWZpbmVkIj09dHlwZW9mIGQpe3ZhciBmPW8oYyx0KTt0aHJvdyBuZXcg
RXJyb3IoZil9aVtjXT1kLHI9cnx8ZCE9PXB9cmV0dXJuIHI/aTplfX10Ll9fZXNNb2R1bGU9ITAs
dC5kZWZhdWx0PWE7dmFyIHU9big5NSkscz1uKDMzKSxjPShyKHMpLG4oOTYpKTtyKGMpfSxmdW5j
dGlvbihlLHQsbil7ZS5leHBvcnRzPW4oMjI5KX0sZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbihl
LHIpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7
ZGVmYXVsdDplfX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEw
fSk7dmFyIGksYT1uKDIzMCksdT1vKGEpO2k9InVuZGVmaW5lZCIhPXR5cGVvZiBzZWxmP3NlbGY6
InVuZGVmaW5lZCIhPXR5cGVvZiB3aW5kb3c/d2luZG93OiJ1bmRlZmluZWQiIT10eXBlb2YgZT9l
OnI7dmFyIHM9KDAsdS5kZWZhdWx0KShpKTt0LmRlZmF1bHQ9c30pLmNhbGwodCxmdW5jdGlvbigp
e3JldHVybiB0aGlzfSgpLG4oMjExKShlKSl9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIG4oZSl7dmFyIHQsbj1lLlN5bWJvbDtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2Ygbj9u
Lm9ic2VydmFibGU/dD1uLm9ic2VydmFibGU6KHQ9bigib2JzZXJ2YWJsZSIpLG4ub2JzZXJ2YWJs
ZT10KTp0PSJAQG9ic2VydmFibGUiLHR9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1
bGUiLHt2YWx1ZTohMH0pLHQuZGVmYXVsdD1ufSxmdW5jdGlvbihlLHQsbixyKXsidXNlIHN0cmlj
dCI7dmFyIG89bihyKSxpPShuKDEpLGZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7aWYodC5pbnN0YW5j
ZVBvb2wubGVuZ3RoKXt2YXIgbj10Lmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gdC5jYWxsKG4s
ZSksbn1yZXR1cm4gbmV3IHQoZSl9KSxhPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcztpZihuLmlu
c3RhbmNlUG9vbC5sZW5ndGgpe3ZhciByPW4uaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiBuLmNh
bGwocixlLHQpLHJ9cmV0dXJuIG5ldyBuKGUsdCl9LHU9ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRo
aXM7aWYoci5pbnN0YW5jZVBvb2wubGVuZ3RoKXt2YXIgbz1yLmluc3RhbmNlUG9vbC5wb3AoKTty
ZXR1cm4gci5jYWxsKG8sZSx0LG4pLG99cmV0dXJuIG5ldyByKGUsdCxuKX0scz1mdW5jdGlvbihl
LHQsbixyKXt2YXIgbz10aGlzO2lmKG8uaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIGk9by5pbnN0
YW5jZVBvb2wucG9wKCk7cmV0dXJuIG8uY2FsbChpLGUsdCxuLHIpLGl9cmV0dXJuIG5ldyBvKGUs
dCxuLHIpfSxjPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7ZSBpbnN0YW5jZW9mIHQ/dm9pZCAwOm8o
IjI1IiksZS5kZXN0cnVjdG9yKCksdC5pbnN0YW5jZVBvb2wubGVuZ3RoPHQucG9vbFNpemUmJnQu
aW5zdGFuY2VQb29sLnB1c2goZSl9LGw9MTAscD1pLGQ9ZnVuY3Rpb24oZSx0KXt2YXIgbj1lO3Jl
dHVybiBuLmluc3RhbmNlUG9vbD1bXSxuLmdldFBvb2xlZD10fHxwLG4ucG9vbFNpemV8fChuLnBv
b2xTaXplPWwpLG4ucmVsZWFzZT1jLG59LGY9e2FkZFBvb2xpbmdUbzpkLG9uZUFyZ3VtZW50UG9v
bGVyOmksdHdvQXJndW1lbnRQb29sZXI6YSx0aHJlZUFyZ3VtZW50UG9vbGVyOnUsZm91ckFyZ3Vt
ZW50UG9vbGVyOnN9O2UuZXhwb3J0cz1mfV0pKTsKKy8vIyBzb3VyY2VNYXBwaW5nVVJMPW1haW4u
NDNhMDk0OGMuanMubWFwClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvZGlzdC9zdGF0aWMvanMvbWFpbi40M2EwOTQ4Yy5qcy5t
YXAgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L3N0YXRpYy9qcy9tYWluLjQzYTA5NDhj
LmpzLm1hcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lYzFkMDA5ZGY3NzQwMTMxMTA5N2IxMjQyNWUxMjZlN2VhZmU0
MThkCi0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvZGlzdC9zdGF0
aWMvanMvbWFpbi40M2EwOTQ4Yy5qcy5tYXAKQEAgLTAsMCArMSBAQAoreyJ2ZXJzaW9uIjozLCJz
b3VyY2VzIjpbIndlYnBhY2s6Ly8vc3RhdGljL2pzL21haW4uNDNhMDk0OGMuanMiLCJ3ZWJwYWNr
Oi8vL3dlYnBhY2svYm9vdHN0cmFwIDZhM2E2ODA3ZTEyZDE1N2U2OTBjIiwid2VicGFjazovLy8u
L34vZmJqcy9saWIvaW52YXJpYW50LmpzIiwid2VicGFjazovLy8uL34vZmJqcy9saWIvd2Fybmlu
Zy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvcmVhY3RQcm9kSW52YXJpYW50Lmpz
Iiwid2VicGFjazovLy8uL34vb2JqZWN0LWFzc2lnbi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9+
L3JlYWN0LWRvbS9saWIvUmVhY3RET01Db21wb25lbnRUcmVlLmpzIiwid2VicGFjazovLy8uL34v
ZmJqcy9saWIvRXhlY3V0aW9uRW52aXJvbm1lbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9mYmpzL2xp
Yi9lbXB0eUZ1bmN0aW9uLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdElu
c3RydW1lbnRhdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RVcGRh
dGVzLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNFdmVudC5qcyIs
IndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9SZWFjdEN1cnJlbnRPd25lci5qcyIsIndlYnBhY2s6
Ly8vLi9+L3JlYWN0L3JlYWN0LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9ET01M
YXp5VHJlZS5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvRE9NUHJvcGVydHkuanMi
LCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0UmVjb25jaWxlci5qcyIsIndlYnBh
Y2s6Ly8vLi9+L3JlYWN0L2xpYi9SZWFjdC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9S
ZWFjdEVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL0V2ZW50UGx1Z2lu
SHViLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9FdmVudFByb3BhZ2F0b3JzLmpz
Iiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdEluc3RhbmNlTWFwLmpzIiwid2Vi
cGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNVSUV2ZW50LmpzIiwid2VicGFjazov
Ly8uL34vZmJqcy9saWIvZW1wdHlPYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20v
bGliL1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRv
bS9saWIvU3ludGhldGljTW91c2VFdmVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9s
aWIvVHJhbnNhY3Rpb24uanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL2VzY2FwZVRl
eHRDb250ZW50Rm9yQnJvd3Nlci5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvc2V0
SW5uZXJIVE1MLmpzIiwid2VicGFjazovLy8uL34vcmVkdXgvbGliL2luZGV4LmpzIiwid2VicGFj
azovLy8uL34vY2xhc3NuYW1lcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9+L2ZianMvbGliL3No
YWxsb3dFcXVhbC5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9pc1BsYWluT2JqZWN0LmpzIiwi
d2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9ET01DaGlsZHJlbk9wZXJhdGlvbnMuanMiLCJ3
ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL0RPTU5hbWVzcGFjZXMuanMiLCJ3ZWJwYWNrOi8v
Ly4vfi9yZWFjdC1kb20vbGliL0V2ZW50UGx1Z2luUmVnaXN0cnkuanMiLCJ3ZWJwYWNrOi8vLy4v
fi9yZWFjdC1kb20vbGliL0V2ZW50UGx1Z2luVXRpbHMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFj
dC1kb20vbGliL0tleUVzY2FwZVV0aWxzLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xp
Yi9MaW5rZWRWYWx1ZVV0aWxzLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFj
dENvbXBvbmVudEVudmlyb25tZW50LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9S
ZWFjdEVycm9yVXRpbHMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0VXBk
YXRlUXVldWUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL2NyZWF0ZU1pY3Jvc29m
dFVuc2FmZUxvY2FsRnVuY3Rpb24uanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL2dl
dEV2ZW50Q2hhckNvZGUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL2dldEV2ZW50
TW9kaWZpZXJTdGF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvZ2V0RXZlbnRU
YXJnZXQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL2lzRXZlbnRTdXBwb3J0ZWQu
anMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL3Nob3VsZFVwZGF0ZVJlYWN0Q29tcG9u
ZW50LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi92YWxpZGF0ZURPTU5lc3Rpbmcu
anMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1yZWR1eC9saWIvdXRpbHMvd2FybmluZy5qcyIsIndl
YnBhY2s6Ly8vLi9+L2ZianMvbGliL0V2ZW50TGlzdGVuZXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9m
YmpzL2xpYi9mb2N1c05vZGUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9mYmpzL2xpYi9nZXRBY3RpdmVF
bGVtZW50LmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19TeW1ib2wuanMiLCJ3ZWJwYWNrOi8v
Ly4vfi9wcm9wLXR5cGVzL2ZhY3RvcnkuanMiLCJ3ZWJwYWNrOi8vLy4vfi9wcm9wLXR5cGVzL2lu
ZGV4LmpzIiwid2VicGFjazovLy8uL34vcHJvcC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNy
ZXQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL0NTU1Byb3BlcnR5LmpzIiwid2Vi
cGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9DYWxsYmFja1F1ZXVlLmpzIiwid2VicGFjazovLy8u
L34vcmVhY3QtZG9tL2xpYi9ET01Qcm9wZXJ0eU9wZXJhdGlvbnMuanMiLCJ3ZWJwYWNrOi8vLy4v
fi9yZWFjdC1kb20vbGliL1JlYWN0RE9NQ29tcG9uZW50RmxhZ3MuanMiLCJ3ZWJwYWNrOi8vLy4v
fi9yZWFjdC1kb20vbGliL1JlYWN0RE9NU2VsZWN0LmpzIiwid2VicGFjazovLy8uL34vcmVhY3Qt
ZG9tL2xpYi9SZWFjdEVtcHR5Q29tcG9uZW50LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9t
L2xpYi9SZWFjdEZlYXR1cmVGbGFncy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIv
UmVhY3RIb3N0Q29tcG9uZW50LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFj
dElucHV0U2VsZWN0aW9uLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdE1v
dW50LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdE5vZGVUeXBlcy5qcyIs
IndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvVmlld3BvcnRNZXRyaWNzLmpzIiwid2VicGFj
azovLy8uL34vcmVhY3QtZG9tL2xpYi9hY2N1bXVsYXRlSW50by5qcyIsIndlYnBhY2s6Ly8vLi9+
L3JlYWN0LWRvbS9saWIvZm9yRWFjaEFjY3VtdWxhdGVkLmpzIiwid2VicGFjazovLy8uL34vcmVh
Y3QtZG9tL2xpYi9nZXRIb3N0Q29tcG9uZW50RnJvbUNvbXBvc2l0ZS5qcyIsIndlYnBhY2s6Ly8v
Li9+L3JlYWN0LWRvbS9saWIvZ2V0VGV4dENvbnRlbnRBY2Nlc3Nvci5qcyIsIndlYnBhY2s6Ly8v
Li9+L3JlYWN0LWRvbS9saWIvaW5wdXRWYWx1ZVRyYWNraW5nLmpzIiwid2VicGFjazovLy8uL34v
cmVhY3QtZG9tL2xpYi9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50LmpzIiwid2VicGFjazovLy8u
L34vcmVhY3QtZG9tL2xpYi9pc1RleHRJbnB1dEVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9y
ZWFjdC1kb20vbGliL3NldFRleHRDb250ZW50LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9t
L2xpYi90cmF2ZXJzZUFsbENoaWxkcmVuLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtcmVkdXgv
bGliL2NvbXBvbmVudHMvY29ubmVjdEFkdmFuY2VkLmpzIiwid2VicGFjazovLy8uL34vcmVhY3Qt
cmVkdXgvbGliL2Nvbm5lY3Qvd3JhcE1hcFRvUHJvcHMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFj
dC1yZWR1eC9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1yZWR1eC9saWIvdXRp
bHMvUHJvcFR5cGVzLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtcmVkdXgvbGliL3V0aWxzL3Zl
cmlmeVBsYWluT2JqZWN0LmpzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL1RvZG9UZXh0
SW5wdXQuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbnN0YW50cy9BY3Rpb25UeXBlcy5qcyIsIndl
YnBhY2s6Ly8vLi9zcmMvY29uc3RhbnRzL1RvZG9GaWx0ZXJzLmpzIiwid2VicGFjazovLy8uL34v
cmVhY3Qtc2NyaXB0cy9+L3Byb2Nlc3MvYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0
LXNjcmlwdHMvfi9wcm9taXNlL2xpYi9jb3JlLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QvbGli
L1JlYWN0QmFzZUNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC9saWIvUmVhY3RDb21w
b25lbnRUcmVlSG9vay5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9SZWFjdEVsZW1lbnRT
eW1ib2wuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC9saWIvUmVhY3ROb29wVXBkYXRlUXVldWUu
anMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC9saWIvY2FuRGVmaW5lUHJvcGVydHkuanMiLCJ3ZWJw
YWNrOi8vLy4vfi9yZWR1eC9saWIvY29tcG9zZS5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlZHV4L2xp
Yi9jcmVhdGVTdG9yZS5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlZHV4L2xpYi91dGlscy93YXJuaW5n
LmpzIiwid2VicGFjazovLy8uL34vY3JlYXRlLXJlYWN0LWNsYXNzL2ZhY3RvcnkuanMiLCJ3ZWJw
YWNrOi8vLy4vfi9mYmpzL2xpYi9jYW1lbGl6ZS5qcyIsIndlYnBhY2s6Ly8vLi9+L2ZianMvbGli
L2NhbWVsaXplU3R5bGVOYW1lLmpzIiwid2VicGFjazovLy8uL34vZmJqcy9saWIvY29udGFpbnNO
b2RlLmpzIiwid2VicGFjazovLy8uL34vZmJqcy9saWIvY3JlYXRlQXJyYXlGcm9tTWl4ZWQuanMi
LCJ3ZWJwYWNrOi8vLy4vfi9mYmpzL2xpYi9jcmVhdGVOb2Rlc0Zyb21NYXJrdXAuanMiLCJ3ZWJw
YWNrOi8vLy4vfi9mYmpzL2xpYi9nZXRNYXJrdXBXcmFwLmpzIiwid2VicGFjazovLy8uL34vZmJq
cy9saWIvZ2V0VW5ib3VuZGVkU2Nyb2xsUG9zaXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4vfi9mYmpz
L2xpYi9oeXBoZW5hdGUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9mYmpzL2xpYi9oeXBoZW5hdGVTdHls
ZU5hbWUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9mYmpzL2xpYi9pc05vZGUuanMiLCJ3ZWJwYWNrOi8v
Ly4vfi9mYmpzL2xpYi9pc1RleHROb2RlLmpzIiwid2VicGFjazovLy8uL34vZmJqcy9saWIvbWVt
b2l6ZVN0cmluZ09ubHkuanMiLCJ3ZWJwYWNrOi8vLy4vfi9ob2lzdC1ub24tcmVhY3Qtc3RhdGlj
cy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9+L2ludmFyaWFudC9icm93c2VyLmpzIiwid2VicGFj
azovLy8uL34vbG9kYXNoL19iYXNlR2V0VGFnLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19m
cmVlR2xvYmFsLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19nZXRQcm90b3R5cGUuanMiLCJ3
ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX2dldFJhd1RhZy5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFz
aC9fb2JqZWN0VG9TdHJpbmcuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX292ZXJBcmcuanMi
LCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX3Jvb3QuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gv
aXNPYmplY3RMaWtlLmpzIiwid2VicGFjazovLy8uL34vcHJvcC10eXBlcy9jaGVja1Byb3BUeXBl
cy5qcyIsIndlYnBhY2s6Ly8vLi9+L3Byb3AtdHlwZXMvZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1z
LmpzIiwid2VicGFjazovLy8uL34vcHJvcC10eXBlcy9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5q
cyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9+L3Jl
YWN0LWRvbS9saWIvQVJJQURPTVByb3BlcnR5Q29uZmlnLmpzIiwid2VicGFjazovLy8uL34vcmVh
Y3QtZG9tL2xpYi9BdXRvRm9jdXNVdGlscy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9s
aWIvQmVmb3JlSW5wdXRFdmVudFBsdWdpbi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9s
aWIvQ1NTUHJvcGVydHlPcGVyYXRpb25zLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xp
Yi9DaGFuZ2VFdmVudFBsdWdpbi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvRGFu
Z2VyLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9EZWZhdWx0RXZlbnRQbHVnaW5P
cmRlci5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvRW50ZXJMZWF2ZUV2ZW50UGx1
Z2luLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9GYWxsYmFja0NvbXBvc2l0aW9u
U3RhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL0hUTUxET01Qcm9wZXJ0eUNv
bmZpZy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RDaGlsZFJlY29uY2ls
ZXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0Q29tcG9uZW50QnJvd3Nl
ckVudmlyb25tZW50LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdENvbXBv
c2l0ZUNvbXBvbmVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RET00u
anMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0RE9NQ29tcG9uZW50LmpzIiwi
d2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTUNvbnRhaW5lckluZm8uanMiLCJ3
ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0RE9NRW1wdHlDb21wb25lbnQuanMiLCJ3
ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0RE9NRmVhdHVyZUZsYWdzLmpzIiwid2Vi
cGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTUlET3BlcmF0aW9ucy5qcyIsIndlYnBh
Y2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RET01JbnB1dC5qcyIsIndlYnBhY2s6Ly8vLi9+
L3JlYWN0LWRvbS9saWIvUmVhY3RET01PcHRpb24uanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1k
b20vbGliL1JlYWN0RE9NU2VsZWN0aW9uLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xp
Yi9SZWFjdERPTVRleHRDb21wb25lbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGli
L1JlYWN0RE9NVGV4dGFyZWEuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0
RE9NVHJlZVRyYXZlcnNhbC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RE
ZWZhdWx0QmF0Y2hpbmdTdHJhdGVneS5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIv
UmVhY3REZWZhdWx0SW5qZWN0aW9uLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9S
ZWFjdEV2ZW50RW1pdHRlck1peGluLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9S
ZWFjdEV2ZW50TGlzdGVuZXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0
SW5qZWN0aW9uLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdE1hcmt1cENo
ZWNrc3VtLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdE11bHRpQ2hpbGQu
anMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0T3duZXIuanMiLCJ3ZWJwYWNr
Oi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwid2VicGFjazov
Ly8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLmpzIiwid2VicGFj
azovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdFJlZi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0
LWRvbS9saWIvUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbi5qcyIsIndlYnBhY2s6Ly8v
Li9+L3JlYWN0LWRvbS9saWIvUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZS5qcyIsIndlYnBhY2s6Ly8v
Li9+L3JlYWN0LWRvbS9saWIvUmVhY3RWZXJzaW9uLmpzIiwid2VicGFjazovLy8uL34vcmVhY3Qt
ZG9tL2xpYi9TVkdET01Qcm9wZXJ0eUNvbmZpZy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRv
bS9saWIvU2VsZWN0RXZlbnRQbHVnaW4uanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGli
L1NpbXBsZUV2ZW50UGx1Z2luLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9TeW50
aGV0aWNBbmltYXRpb25FdmVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvU3lu
dGhldGljQ2xpcGJvYXJkRXZlbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1N5
bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGli
L1N5bnRoZXRpY0RyYWdFdmVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvU3lu
dGhldGljRm9jdXNFdmVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvU3ludGhl
dGljSW5wdXRFdmVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvU3ludGhldGlj
S2V5Ym9hcmRFdmVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvU3ludGhldGlj
VG91Y2hFdmVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvU3ludGhldGljVHJh
bnNpdGlvbkV2ZW50LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNX
aGVlbEV2ZW50LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9hZGxlcjMyLmpzIiwi
d2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9kYW5nZXJvdXNTdHlsZVZhbHVlLmpzIiwid2Vi
cGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9maW5kRE9NTm9kZS5qcyIsIndlYnBhY2s6Ly8vLi9+
L3JlYWN0LWRvbS9saWIvZmxhdHRlbkNoaWxkcmVuLmpzIiwid2VicGFjazovLy8uL34vcmVhY3Qt
ZG9tL2xpYi9nZXRFdmVudEtleS5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvZ2V0
SXRlcmF0b3JGbi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvZ2V0Tm9kZUZvckNo
YXJhY3Rlck9mZnNldC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvZ2V0VmVuZG9y
UHJlZml4ZWRFdmVudE5hbWUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL3F1b3Rl
QXR0cmlidXRlVmFsdWVGb3JCcm93c2VyLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xp
Yi9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lci5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LXJl
ZHV4L2xpYi9jb21wb25lbnRzL1Byb3ZpZGVyLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtcmVk
dXgvbGliL2Nvbm5lY3QvY29ubmVjdC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LXJlZHV4L2xp
Yi9jb25uZWN0L21hcERpc3BhdGNoVG9Qcm9wcy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LXJl
ZHV4L2xpYi9jb25uZWN0L21hcFN0YXRlVG9Qcm9wcy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0
LXJlZHV4L2xpYi9jb25uZWN0L21lcmdlUHJvcHMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1y
ZWR1eC9saWIvY29ubmVjdC9zZWxlY3RvckZhY3RvcnkuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFj
dC1yZWR1eC9saWIvY29ubmVjdC92ZXJpZnlTdWJzZWxlY3RvcnMuanMiLCJ3ZWJwYWNrOi8vLy4v
fi9yZWFjdC1yZWR1eC9saWIvdXRpbHMvU3Vic2NyaXB0aW9uLmpzIiwid2VicGFjazovLy8uL34v
cmVhY3QtcmVkdXgvbGliL3V0aWxzL3NoYWxsb3dFcXVhbC5qcyIsIndlYnBhY2s6Ly8vLi9+L3Jl
YWN0LXNjcmlwdHMvY29uZmlnL3BvbHlmaWxscy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LXNj
cmlwdHMvfi9hc2FwL2Jyb3dzZXItcmF3LmpzIiwid2VicGFjazovLy8uL3NyYy9hY3Rpb25zL2lu
ZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9jb21wb25lbnRzL0Zvb3Rlci5qcyIsIndlYnBhY2s6
Ly8vLi9zcmMvY29tcG9uZW50cy9IZWFkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVu
dHMvTWFpblNlY3Rpb24uanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvVG9kb0l0ZW0u
anMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbnRhaW5lcnMvQXBwLmpzIiwid2VicGFjazovLy8uL3Ny
Yy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvcmVkdWNlcnMvaW5kZXguanMiLCJ3ZWJwYWNr
Oi8vLy4vc3JjL3JlZHVjZXJzL3RvZG9zLmpzIiwid2VicGFjazovLy8uL34vcmVhY3Qtc2NyaXB0
cy9+L29iamVjdC1hc3NpZ24vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1zY3JpcHRz
L34vcHJvbWlzZS9saWIvZXM2LWV4dGVuc2lvbnMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1z
Y3JpcHRzL34vcHJvbWlzZS9saWIvcmVqZWN0aW9uLXRyYWNraW5nLmpzIiwid2VicGFjazovLy8o
d2VicGFjaykvYnVpbGRpbi9tb2R1bGUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1zY3JpcHRz
L34vd2hhdHdnLWZldGNoL2ZldGNoLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QvbGliL1JlYWN0
Q2hpbGRyZW4uanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC9saWIvUmVhY3RET01GYWN0b3JpZXMu
anMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC9saWIvUmVhY3RQcm9wVHlwZXMuanMiLCJ3ZWJwYWNr
Oi8vLy4vfi9yZWFjdC9saWIvY3JlYXRlQ2xhc3MuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC9s
aWIvZ2V0TmV4dERlYnVnSUQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC9saWIvbG93UHJpb3Jp
dHlXYXJuaW5nLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QvbGliL29ubHlDaGlsZC5qcyIsIndl
YnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi90cmF2ZXJzZUFsbENoaWxkcmVuLmpzIiwid2VicGFjazov
Ly8uL34vcmVkdXgvbGliL2FwcGx5TWlkZGxld2FyZS5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlZHV4
L2xpYi9iaW5kQWN0aW9uQ3JlYXRvcnMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWR1eC9saWIvY29t
YmluZVJlZHVjZXJzLmpzIiwid2VicGFjazovLy8uL34vc3ltYm9sLW9ic2VydmFibGUvaW5kZXgu
anMiLCJ3ZWJwYWNrOi8vLy4vfi9zeW1ib2wtb2JzZXJ2YWJsZS9saWIvaW5kZXguanMiLCJ3ZWJw
YWNrOi8vLy4vfi9zeW1ib2wtb2JzZXJ2YWJsZS9saWIvcG9ueWZpbGwuanMiLCJ3ZWJwYWNrOi8v
Ly4vfi9yZWFjdC9saWIvUG9vbGVkQ2xhc3MuanMiXSwibmFtZXMiOlsibW9kdWxlcyIsIl9fd2Vi
cGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImluc3RhbGxlZE1vZHVsZXMiLCJleHBvcnRzIiwi
bW9kdWxlIiwiaWQiLCJsb2FkZWQiLCJjYWxsIiwibSIsImMiLCJwIiwiaSIsIk9iamVjdCIsInBy
b3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiX20iLCJhcmdzIiwic2xpY2UiLCJmbiIsImEiLCJi
IiwiYXBwbHkiLCJ0aGlzIiwiY29uY2F0IiwiaW52YXJpYW50IiwiY29uZGl0aW9uIiwiZm9ybWF0
IiwiZCIsImUiLCJmIiwidmFsaWRhdGVGb3JtYXQiLCJlcnJvciIsInVuZGVmaW5lZCIsIkVycm9y
IiwiYXJnSW5kZXgiLCJyZXBsYWNlIiwibmFtZSIsImZyYW1lc1RvUG9wIiwiZW1wdHlGdW5jdGlv
biIsIndhcm5pbmciLCJyZWFjdFByb2RJbnZhcmlhbnQiLCJjb2RlIiwiYXJnQ291bnQiLCJhcmd1
bWVudHMiLCJsZW5ndGgiLCJtZXNzYWdlIiwiYXJnSWR4IiwiZW5jb2RlVVJJQ29tcG9uZW50Iiwi
dG9PYmplY3QiLCJ2YWwiLCJUeXBlRXJyb3IiLCJzaG91bGRVc2VOYXRpdmUiLCJhc3NpZ24iLCJ0
ZXN0MSIsIlN0cmluZyIsImdldE93blByb3BlcnR5TmFtZXMiLCJ0ZXN0MiIsImZyb21DaGFyQ29k
ZSIsIm9yZGVyMiIsIm1hcCIsIm4iLCJqb2luIiwidGVzdDMiLCJzcGxpdCIsImZvckVhY2giLCJs
ZXR0ZXIiLCJrZXlzIiwiZXJyIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwicHJvcElzRW51bWVy
YWJsZSIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwidGFyZ2V0Iiwic291cmNlIiwiZnJvbSIsInN5
bWJvbHMiLCJ0byIsInMiLCJrZXkiLCJzaG91bGRQcmVjYWNoZU5vZGUiLCJub2RlIiwibm9kZUlE
Iiwibm9kZVR5cGUiLCJnZXRBdHRyaWJ1dGUiLCJBVFRSX05BTUUiLCJub2RlVmFsdWUiLCJnZXRS
ZW5kZXJlZEhvc3RPclRleHRGcm9tQ29tcG9uZW50IiwiY29tcG9uZW50IiwicmVuZGVyZWQiLCJf
cmVuZGVyZWRDb21wb25lbnQiLCJwcmVjYWNoZU5vZGUiLCJpbnN0IiwiaG9zdEluc3QiLCJfaG9z
dE5vZGUiLCJpbnRlcm5hbEluc3RhbmNlS2V5IiwidW5jYWNoZU5vZGUiLCJwcmVjYWNoZUNoaWxk
Tm9kZXMiLCJfZmxhZ3MiLCJGbGFncyIsImhhc0NhY2hlZENoaWxkTm9kZXMiLCJjaGlsZHJlbiIs
Il9yZW5kZXJlZENoaWxkcmVuIiwiY2hpbGROb2RlIiwiZmlyc3RDaGlsZCIsIm91dGVyIiwiY2hp
bGRJbnN0IiwiY2hpbGRJRCIsIl9kb21JRCIsIm5leHRTaWJsaW5nIiwiX3Byb2RJbnZhcmlhbnQi
LCJnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZSIsInBhcmVudHMiLCJwdXNoIiwicGFyZW50Tm9k
ZSIsImNsb3Nlc3QiLCJwb3AiLCJnZXRJbnN0YW5jZUZyb21Ob2RlIiwiZ2V0Tm9kZUZyb21JbnN0
YW5jZSIsIl9ob3N0UGFyZW50IiwiRE9NUHJvcGVydHkiLCJSZWFjdERPTUNvbXBvbmVudEZsYWdz
IiwiSURfQVRUUklCVVRFX05BTUUiLCJNYXRoIiwicmFuZG9tIiwidG9TdHJpbmciLCJSZWFjdERP
TUNvbXBvbmVudFRyZWUiLCJjYW5Vc2VET00iLCJ3aW5kb3ciLCJkb2N1bWVudCIsImNyZWF0ZUVs
ZW1lbnQiLCJFeGVjdXRpb25FbnZpcm9ubWVudCIsImNhblVzZVdvcmtlcnMiLCJXb3JrZXIiLCJj
YW5Vc2VFdmVudExpc3RlbmVycyIsImFkZEV2ZW50TGlzdGVuZXIiLCJhdHRhY2hFdmVudCIsImNh
blVzZVZpZXdwb3J0Iiwic2NyZWVuIiwiaXNJbldvcmtlciIsIm1ha2VFbXB0eUZ1bmN0aW9uIiwi
YXJnIiwidGhhdFJldHVybnMiLCJ0aGF0UmV0dXJuc0ZhbHNlIiwidGhhdFJldHVybnNUcnVlIiwi
dGhhdFJldHVybnNOdWxsIiwidGhhdFJldHVybnNUaGlzIiwidGhhdFJldHVybnNBcmd1bWVudCIs
ImRlYnVnVG9vbCIsImVuc3VyZUluamVjdGVkIiwiUmVhY3RVcGRhdGVzIiwiUmVhY3RSZWNvbmNp
bGVUcmFuc2FjdGlvbiIsImJhdGNoaW5nU3RyYXRlZ3kiLCJSZWFjdFVwZGF0ZXNGbHVzaFRyYW5z
YWN0aW9uIiwicmVpbml0aWFsaXplVHJhbnNhY3Rpb24iLCJkaXJ0eUNvbXBvbmVudHNMZW5ndGgi
LCJjYWxsYmFja1F1ZXVlIiwiQ2FsbGJhY2tRdWV1ZSIsImdldFBvb2xlZCIsInJlY29uY2lsZVRy
YW5zYWN0aW9uIiwiYmF0Y2hlZFVwZGF0ZXMiLCJjYWxsYmFjayIsIm1vdW50T3JkZXJDb21wYXJh
dG9yIiwiYzEiLCJjMiIsIl9tb3VudE9yZGVyIiwicnVuQmF0Y2hlZFVwZGF0ZXMiLCJ0cmFuc2Fj
dGlvbiIsImxlbiIsImRpcnR5Q29tcG9uZW50cyIsInNvcnQiLCJ1cGRhdGVCYXRjaE51bWJlciIs
ImNhbGxiYWNrcyIsIl9wZW5kaW5nQ2FsbGJhY2tzIiwibWFya2VyTmFtZSIsIlJlYWN0RmVhdHVy
ZUZsYWdzIiwibG9nVG9wTGV2ZWxSZW5kZXJzIiwibmFtZWRDb21wb25lbnQiLCJfY3VycmVudEVs
ZW1lbnQiLCJ0eXBlIiwiaXNSZWFjdFRvcExldmVsV3JhcHBlciIsImdldE5hbWUiLCJjb25zb2xl
IiwidGltZSIsIlJlYWN0UmVjb25jaWxlciIsInBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeSIsInRp
bWVFbmQiLCJqIiwiZW5xdWV1ZSIsImdldFB1YmxpY0luc3RhbmNlIiwiZW5xdWV1ZVVwZGF0ZSIs
ImlzQmF0Y2hpbmdVcGRhdGVzIiwiX3VwZGF0ZUJhdGNoTnVtYmVyIiwiYXNhcCIsImNvbnRleHQi
LCJhc2FwQ2FsbGJhY2tRdWV1ZSIsImFzYXBFbnF1ZXVlZCIsIl9hc3NpZ24iLCJQb29sZWRDbGFz
cyIsIlRyYW5zYWN0aW9uIiwiTkVTVEVEX1VQREFURVMiLCJpbml0aWFsaXplIiwiY2xvc2UiLCJz
cGxpY2UiLCJmbHVzaEJhdGNoZWRVcGRhdGVzIiwiVVBEQVRFX1FVRVVFSU5HIiwicmVzZXQiLCJu
b3RpZnlBbGwiLCJUUkFOU0FDVElPTl9XUkFQUEVSUyIsImdldFRyYW5zYWN0aW9uV3JhcHBlcnMi
LCJkZXN0cnVjdG9yIiwicmVsZWFzZSIsInBlcmZvcm0iLCJtZXRob2QiLCJzY29wZSIsImFkZFBv
b2xpbmdUbyIsInF1ZXVlIiwiUmVhY3RVcGRhdGVzSW5qZWN0aW9uIiwiaW5qZWN0UmVjb25jaWxl
VHJhbnNhY3Rpb24iLCJSZWNvbmNpbGVUcmFuc2FjdGlvbiIsImluamVjdEJhdGNoaW5nU3RyYXRl
Z3kiLCJfYmF0Y2hpbmdTdHJhdGVneSIsImluamVjdGlvbiIsIlN5bnRoZXRpY0V2ZW50IiwiZGlz
cGF0Y2hDb25maWciLCJ0YXJnZXRJbnN0IiwibmF0aXZlRXZlbnQiLCJuYXRpdmVFdmVudFRhcmdl
dCIsIl90YXJnZXRJbnN0IiwiSW50ZXJmYWNlIiwiY29uc3RydWN0b3IiLCJwcm9wTmFtZSIsIm5v
cm1hbGl6ZSIsImRlZmF1bHRQcmV2ZW50ZWQiLCJyZXR1cm5WYWx1ZSIsImlzRGVmYXVsdFByZXZl
bnRlZCIsImlzUHJvcGFnYXRpb25TdG9wcGVkIiwic2hvdWxkQmVSZWxlYXNlZFByb3BlcnRpZXMi
LCJQcm94eSIsIkV2ZW50SW50ZXJmYWNlIiwiY3VycmVudFRhcmdldCIsImV2ZW50UGhhc2UiLCJi
dWJibGVzIiwiY2FuY2VsYWJsZSIsInRpbWVTdGFtcCIsImV2ZW50IiwiRGF0ZSIsIm5vdyIsImlz
VHJ1c3RlZCIsInByZXZlbnREZWZhdWx0Iiwic3RvcFByb3BhZ2F0aW9uIiwiY2FuY2VsQnViYmxl
IiwicGVyc2lzdCIsImlzUGVyc2lzdGVudCIsImF1Z21lbnRDbGFzcyIsIkNsYXNzIiwiU3VwZXIi
LCJFIiwiZm91ckFyZ3VtZW50UG9vbGVyIiwiUmVhY3RDdXJyZW50T3duZXIiLCJjdXJyZW50Iiwi
aW5zZXJ0VHJlZUNoaWxkcmVuIiwidHJlZSIsImVuYWJsZUxhenkiLCJpbnNlcnRUcmVlQmVmb3Jl
IiwiaHRtbCIsInNldElubmVySFRNTCIsInRleHQiLCJzZXRUZXh0Q29udGVudCIsInJlcGxhY2VD
aGlsZFdpdGhUcmVlIiwib2xkTm9kZSIsIm5ld1RyZWUiLCJyZXBsYWNlQ2hpbGQiLCJxdWV1ZUNo
aWxkIiwicGFyZW50VHJlZSIsImNoaWxkVHJlZSIsImFwcGVuZENoaWxkIiwicXVldWVIVE1MIiwi
cXVldWVUZXh0Iiwibm9kZU5hbWUiLCJET01MYXp5VHJlZSIsIkRPTU5hbWVzcGFjZXMiLCJjcmVh
dGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uIiwiRUxFTUVOVF9OT0RFX1RZUEUiLCJET0NV
TUVOVF9GUkFHTUVOVF9OT0RFX1RZUEUiLCJkb2N1bWVudE1vZGUiLCJuYXZpZ2F0b3IiLCJ1c2Vy
QWdlbnQiLCJ0ZXN0IiwicmVmZXJlbmNlTm9kZSIsInRvTG93ZXJDYXNlIiwibmFtZXNwYWNlVVJJ
IiwiaW5zZXJ0QmVmb3JlIiwiY2hlY2tNYXNrIiwidmFsdWUiLCJiaXRtYXNrIiwiRE9NUHJvcGVy
dHlJbmplY3Rpb24iLCJNVVNUX1VTRV9QUk9QRVJUWSIsIkhBU19CT09MRUFOX1ZBTFVFIiwiSEFT
X05VTUVSSUNfVkFMVUUiLCJIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSIsIkhBU19PVkVSTE9B
REVEX0JPT0xFQU5fVkFMVUUiLCJpbmplY3RET01Qcm9wZXJ0eUNvbmZpZyIsImRvbVByb3BlcnR5
Q29uZmlnIiwiSW5qZWN0aW9uIiwiUHJvcGVydGllcyIsIkRPTUF0dHJpYnV0ZU5hbWVzcGFjZXMi
LCJET01BdHRyaWJ1dGVOYW1lcyIsIkRPTVByb3BlcnR5TmFtZXMiLCJET01NdXRhdGlvbk1ldGhv
ZHMiLCJpc0N1c3RvbUF0dHJpYnV0ZSIsIl9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9ucyIsInBy
b3BlcnRpZXMiLCJsb3dlckNhc2VkIiwicHJvcENvbmZpZyIsInByb3BlcnR5SW5mbyIsImF0dHJp
YnV0ZU5hbWUiLCJhdHRyaWJ1dGVOYW1lc3BhY2UiLCJwcm9wZXJ0eU5hbWUiLCJtdXRhdGlvbk1l
dGhvZCIsIm11c3RVc2VQcm9wZXJ0eSIsImhhc0Jvb2xlYW5WYWx1ZSIsImhhc051bWVyaWNWYWx1
ZSIsImhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlIiwiaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSIs
IkFUVFJJQlVURV9OQU1FX1NUQVJUX0NIQVIiLCJST09UX0FUVFJJQlVURV9OQU1FIiwiQVRUUklC
VVRFX05BTUVfQ0hBUiIsImdldFBvc3NpYmxlU3RhbmRhcmROYW1lIiwiaXNDdXN0b21BdHRyaWJ1
dGVGbiIsImF0dGFjaFJlZnMiLCJSZWFjdFJlZiIsIm1vdW50Q29tcG9uZW50IiwiaW50ZXJuYWxJ
bnN0YW5jZSIsImhvc3RQYXJlbnQiLCJob3N0Q29udGFpbmVySW5mbyIsInBhcmVudERlYnVnSUQi
LCJtYXJrdXAiLCJyZWYiLCJnZXRSZWFjdE1vdW50UmVhZHkiLCJnZXRIb3N0Tm9kZSIsInVubW91
bnRDb21wb25lbnQiLCJzYWZlbHkiLCJkZXRhY2hSZWZzIiwicmVjZWl2ZUNvbXBvbmVudCIsIm5l
eHRFbGVtZW50IiwicHJldkVsZW1lbnQiLCJfY29udGV4dCIsInJlZnNDaGFuZ2VkIiwic2hvdWxk
VXBkYXRlUmVmcyIsIlJlYWN0QmFzZUNsYXNzZXMiLCJSZWFjdENoaWxkcmVuIiwiUmVhY3RET01G
YWN0b3JpZXMiLCJSZWFjdEVsZW1lbnQiLCJSZWFjdFByb3BUeXBlcyIsIlJlYWN0VmVyc2lvbiIs
ImNyZWF0ZVJlYWN0Q2xhc3MiLCJvbmx5Q2hpbGQiLCJjcmVhdGVGYWN0b3J5IiwiY2xvbmVFbGVt
ZW50IiwiX19zcHJlYWQiLCJjcmVhdGVNaXhpbiIsIm1peGluIiwiUmVhY3QiLCJDaGlsZHJlbiIs
ImNvdW50IiwidG9BcnJheSIsIm9ubHkiLCJDb21wb25lbnQiLCJQdXJlQ29tcG9uZW50IiwiaXNW
YWxpZEVsZW1lbnQiLCJQcm9wVHlwZXMiLCJjcmVhdGVDbGFzcyIsIkRPTSIsInZlcnNpb24iLCJo
YXNWYWxpZFJlZiIsImNvbmZpZyIsImhhc1ZhbGlkS2V5IiwiUkVBQ1RfRUxFTUVOVF9UWVBFIiwi
UkVTRVJWRURfUFJPUFMiLCJfX3NlbGYiLCJfX3NvdXJjZSIsInNlbGYiLCJvd25lciIsInByb3Bz
IiwiZWxlbWVudCIsIiQkdHlwZW9mIiwiX293bmVyIiwiY2hpbGRyZW5MZW5ndGgiLCJjaGlsZEFy
cmF5IiwiQXJyYXkiLCJkZWZhdWx0UHJvcHMiLCJmYWN0b3J5IiwiYmluZCIsImNsb25lQW5kUmVw
bGFjZUtleSIsIm9sZEVsZW1lbnQiLCJuZXdLZXkiLCJuZXdFbGVtZW50IiwiX3NlbGYiLCJfc291
cmNlIiwib2JqZWN0IiwiaXNJbnRlcmFjdGl2ZSIsInRhZyIsInNob3VsZFByZXZlbnRNb3VzZUV2
ZW50IiwiZGlzYWJsZWQiLCJFdmVudFBsdWdpblJlZ2lzdHJ5IiwiRXZlbnRQbHVnaW5VdGlscyIs
IlJlYWN0RXJyb3JVdGlscyIsImFjY3VtdWxhdGVJbnRvIiwiZm9yRWFjaEFjY3VtdWxhdGVkIiwi
bGlzdGVuZXJCYW5rIiwiZXZlbnRRdWV1ZSIsImV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZSIs
InNpbXVsYXRlZCIsImV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlciIsImV4ZWN1dGVEaXNwYXRjaGVz
QW5kUmVsZWFzZVNpbXVsYXRlZCIsImV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZVRvcExldmVs
IiwiZ2V0RGljdGlvbmFyeUtleSIsIl9yb290Tm9kZUlEIiwiRXZlbnRQbHVnaW5IdWIiLCJpbmpl
Y3RFdmVudFBsdWdpbk9yZGVyIiwiaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lIiwicHV0TGlzdGVu
ZXIiLCJyZWdpc3RyYXRpb25OYW1lIiwibGlzdGVuZXIiLCJiYW5rRm9yUmVnaXN0cmF0aW9uTmFt
ZSIsIlBsdWdpbk1vZHVsZSIsInJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzIiwiZGlkUHV0TGlzdGVu
ZXIiLCJnZXRMaXN0ZW5lciIsImRlbGV0ZUxpc3RlbmVyIiwid2lsbERlbGV0ZUxpc3RlbmVyIiwi
ZGVsZXRlQWxsTGlzdGVuZXJzIiwiZXh0cmFjdEV2ZW50cyIsInRvcExldmVsVHlwZSIsImV2ZW50
cyIsInBsdWdpbnMiLCJwb3NzaWJsZVBsdWdpbiIsImV4dHJhY3RlZEV2ZW50cyIsImVucXVldWVF
dmVudHMiLCJwcm9jZXNzRXZlbnRRdWV1ZSIsInByb2Nlc3NpbmdFdmVudFF1ZXVlIiwicmV0aHJv
d0NhdWdodEVycm9yIiwiX19wdXJnZSIsIl9fZ2V0TGlzdGVuZXJCYW5rIiwibGlzdGVuZXJBdFBo
YXNlIiwicHJvcGFnYXRpb25QaGFzZSIsInBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzIiwiYWNjdW11
bGF0ZURpcmVjdGlvbmFsRGlzcGF0Y2hlcyIsInBoYXNlIiwiX2Rpc3BhdGNoTGlzdGVuZXJzIiwi
X2Rpc3BhdGNoSW5zdGFuY2VzIiwiYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZSIs
InRyYXZlcnNlVHdvUGhhc2UiLCJhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2luZ2xlU2tp
cFRhcmdldCIsInBhcmVudEluc3QiLCJnZXRQYXJlbnRJbnN0YW5jZSIsImFjY3VtdWxhdGVEaXNw
YXRjaGVzIiwiaWdub3JlZERpcmVjdGlvbiIsImFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzU2lu
Z2xlIiwiYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyIsImFjY3VtdWxhdGVUd29QaGFzZURp
c3BhdGNoZXNTa2lwVGFyZ2V0IiwiYWNjdW11bGF0ZUVudGVyTGVhdmVEaXNwYXRjaGVzIiwibGVh
dmUiLCJlbnRlciIsInRyYXZlcnNlRW50ZXJMZWF2ZSIsImFjY3VtdWxhdGVEaXJlY3REaXNwYXRj
aGVzIiwiRXZlbnRQcm9wYWdhdG9ycyIsIlJlYWN0SW5zdGFuY2VNYXAiLCJyZW1vdmUiLCJfcmVh
Y3RJbnRlcm5hbEluc3RhbmNlIiwiZ2V0IiwiaGFzIiwic2V0IiwiU3ludGhldGljVUlFdmVudCIs
ImRpc3BhdGNoTWFya2VyIiwiZ2V0RXZlbnRUYXJnZXQiLCJVSUV2ZW50SW50ZXJmYWNlIiwidmll
dyIsImRvYyIsIm93bmVyRG9jdW1lbnQiLCJkZWZhdWx0VmlldyIsInBhcmVudFdpbmRvdyIsImRl
dGFpbCIsImVtcHR5T2JqZWN0IiwiZ2V0TGlzdGVuaW5nRm9yRG9jdW1lbnQiLCJtb3VudEF0Iiwi
dG9wTGlzdGVuZXJzSURLZXkiLCJyZWFjdFRvcExpc3RlbmVyc0NvdW50ZXIiLCJhbHJlYWR5TGlz
dGVuaW5nVG8iLCJoYXNFdmVudFBhZ2VYWSIsIlJlYWN0RXZlbnRFbWl0dGVyTWl4aW4iLCJWaWV3
cG9ydE1ldHJpY3MiLCJnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZSIsImlzRXZlbnRTdXBwb3J0
ZWQiLCJpc01vbml0b3JpbmdTY3JvbGxWYWx1ZSIsInRvcEV2ZW50TWFwcGluZyIsInRvcEFib3J0
IiwidG9wQW5pbWF0aW9uRW5kIiwidG9wQW5pbWF0aW9uSXRlcmF0aW9uIiwidG9wQW5pbWF0aW9u
U3RhcnQiLCJ0b3BCbHVyIiwidG9wQ2FuUGxheSIsInRvcENhblBsYXlUaHJvdWdoIiwidG9wQ2hh
bmdlIiwidG9wQ2xpY2siLCJ0b3BDb21wb3NpdGlvbkVuZCIsInRvcENvbXBvc2l0aW9uU3RhcnQi
LCJ0b3BDb21wb3NpdGlvblVwZGF0ZSIsInRvcENvbnRleHRNZW51IiwidG9wQ29weSIsInRvcEN1
dCIsInRvcERvdWJsZUNsaWNrIiwidG9wRHJhZyIsInRvcERyYWdFbmQiLCJ0b3BEcmFnRW50ZXIi
LCJ0b3BEcmFnRXhpdCIsInRvcERyYWdMZWF2ZSIsInRvcERyYWdPdmVyIiwidG9wRHJhZ1N0YXJ0
IiwidG9wRHJvcCIsInRvcER1cmF0aW9uQ2hhbmdlIiwidG9wRW1wdGllZCIsInRvcEVuY3J5cHRl
ZCIsInRvcEVuZGVkIiwidG9wRXJyb3IiLCJ0b3BGb2N1cyIsInRvcElucHV0IiwidG9wS2V5RG93
biIsInRvcEtleVByZXNzIiwidG9wS2V5VXAiLCJ0b3BMb2FkZWREYXRhIiwidG9wTG9hZGVkTWV0
YWRhdGEiLCJ0b3BMb2FkU3RhcnQiLCJ0b3BNb3VzZURvd24iLCJ0b3BNb3VzZU1vdmUiLCJ0b3BN
b3VzZU91dCIsInRvcE1vdXNlT3ZlciIsInRvcE1vdXNlVXAiLCJ0b3BQYXN0ZSIsInRvcFBhdXNl
IiwidG9wUGxheSIsInRvcFBsYXlpbmciLCJ0b3BQcm9ncmVzcyIsInRvcFJhdGVDaGFuZ2UiLCJ0
b3BTY3JvbGwiLCJ0b3BTZWVrZWQiLCJ0b3BTZWVraW5nIiwidG9wU2VsZWN0aW9uQ2hhbmdlIiwi
dG9wU3RhbGxlZCIsInRvcFN1c3BlbmQiLCJ0b3BUZXh0SW5wdXQiLCJ0b3BUaW1lVXBkYXRlIiwi
dG9wVG91Y2hDYW5jZWwiLCJ0b3BUb3VjaEVuZCIsInRvcFRvdWNoTW92ZSIsInRvcFRvdWNoU3Rh
cnQiLCJ0b3BUcmFuc2l0aW9uRW5kIiwidG9wVm9sdW1lQ2hhbmdlIiwidG9wV2FpdGluZyIsInRv
cFdoZWVsIiwiUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyIiwiUmVhY3RFdmVudExpc3RlbmVyIiwi
aW5qZWN0UmVhY3RFdmVudExpc3RlbmVyIiwic2V0SGFuZGxlVG9wTGV2ZWwiLCJoYW5kbGVUb3BM
ZXZlbCIsInNldEVuYWJsZWQiLCJlbmFibGVkIiwiaXNFbmFibGVkIiwibGlzdGVuVG8iLCJjb250
ZW50RG9jdW1lbnRIYW5kbGUiLCJpc0xpc3RlbmluZyIsImRlcGVuZGVuY2llcyIsInJlZ2lzdHJh
dGlvbk5hbWVEZXBlbmRlbmNpZXMiLCJkZXBlbmRlbmN5IiwidHJhcEJ1YmJsZWRFdmVudCIsInRy
YXBDYXB0dXJlZEV2ZW50IiwiV0lORE9XX0hBTkRMRSIsImhhbmRsZXJCYXNlTmFtZSIsImhhbmRs
ZSIsInN1cHBvcnRzRXZlbnRQYWdlWFkiLCJjcmVhdGVFdmVudCIsImV2IiwiZW5zdXJlU2Nyb2xs
VmFsdWVNb25pdG9yaW5nIiwicmVmcmVzaCIsInJlZnJlc2hTY3JvbGxWYWx1ZXMiLCJtb25pdG9y
U2Nyb2xsVmFsdWUiLCJTeW50aGV0aWNNb3VzZUV2ZW50IiwiZ2V0RXZlbnRNb2RpZmllclN0YXRl
IiwiTW91c2VFdmVudEludGVyZmFjZSIsInNjcmVlblgiLCJzY3JlZW5ZIiwiY2xpZW50WCIsImNs
aWVudFkiLCJjdHJsS2V5Iiwic2hpZnRLZXkiLCJhbHRLZXkiLCJtZXRhS2V5IiwiZ2V0TW9kaWZp
ZXJTdGF0ZSIsImJ1dHRvbiIsImJ1dHRvbnMiLCJyZWxhdGVkVGFyZ2V0IiwiZnJvbUVsZW1lbnQi
LCJzcmNFbGVtZW50IiwidG9FbGVtZW50IiwicGFnZVgiLCJjdXJyZW50U2Nyb2xsTGVmdCIsInBh
Z2VZIiwiY3VycmVudFNjcm9sbFRvcCIsIk9CU0VSVkVEX0VSUk9SIiwiVHJhbnNhY3Rpb25JbXBs
IiwidHJhbnNhY3Rpb25XcmFwcGVycyIsIndyYXBwZXJJbml0RGF0YSIsIl9pc0luVHJhbnNhY3Rp
b24iLCJpc0luVHJhbnNhY3Rpb24iLCJlcnJvclRocm93biIsInJldCIsImluaXRpYWxpemVBbGwi
LCJjbG9zZUFsbCIsInN0YXJ0SW5kZXgiLCJ3cmFwcGVyIiwiaW5pdERhdGEiLCJlc2NhcGVIdG1s
Iiwic3RyaW5nIiwic3RyIiwibWF0Y2giLCJtYXRjaEh0bWxSZWdFeHAiLCJleGVjIiwiZXNjYXBl
IiwiaW5kZXgiLCJsYXN0SW5kZXgiLCJjaGFyQ29kZUF0Iiwic3Vic3RyaW5nIiwiZXNjYXBlVGV4
dENvbnRlbnRGb3JCcm93c2VyIiwicmV1c2FibGVTVkdDb250YWluZXIiLCJXSElURVNQQUNFX1RF
U1QiLCJOT05WSVNJQkxFX1RFU1QiLCJzdmciLCJpbm5lckhUTUwiLCJzdmdOb2RlIiwidGVzdEVs
ZW1lbnQiLCJ0ZXh0Tm9kZSIsImRhdGEiLCJyZW1vdmVDaGlsZCIsImRlbGV0ZURhdGEiLCJfaW50
ZXJvcFJlcXVpcmVEZWZhdWx0Iiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJjb21wb3Nl
IiwiYXBwbHlNaWRkbGV3YXJlIiwiYmluZEFjdGlvbkNyZWF0b3JzIiwiY29tYmluZVJlZHVjZXJz
IiwiY3JlYXRlU3RvcmUiLCJfY3JlYXRlU3RvcmUiLCJfY3JlYXRlU3RvcmUyIiwiX2NvbWJpbmVS
ZWR1Y2VycyIsIl9jb21iaW5lUmVkdWNlcnMyIiwiX2JpbmRBY3Rpb25DcmVhdG9ycyIsIl9iaW5k
QWN0aW9uQ3JlYXRvcnMyIiwiX2FwcGx5TWlkZGxld2FyZSIsIl9hcHBseU1pZGRsZXdhcmUyIiwi
X2NvbXBvc2UiLCJfY29tcG9zZTIiLCJfd2FybmluZyIsIl9fV0VCUEFDS19BTURfREVGSU5FX0FS
UkFZX18iLCJfX1dFQlBBQ0tfQU1EX0RFRklORV9SRVNVTFRfXyIsImNsYXNzTmFtZXMiLCJjbGFz
c2VzIiwiYXJnVHlwZSIsImlzQXJyYXkiLCJoYXNPd24iLCJpcyIsIngiLCJ5Iiwic2hhbGxvd0Vx
dWFsIiwib2JqQSIsIm9iakIiLCJrZXlzQSIsImtleXNCIiwiaXNQbGFpbk9iamVjdCIsImlzT2Jq
ZWN0TGlrZSIsImJhc2VHZXRUYWciLCJvYmplY3RUYWciLCJwcm90byIsImdldFByb3RvdHlwZSIs
IkN0b3IiLCJmdW5jVG9TdHJpbmciLCJvYmplY3RDdG9yU3RyaW5nIiwiZnVuY1Byb3RvIiwiRnVu
Y3Rpb24iLCJvYmplY3RQcm90byIsImdldE5vZGVBZnRlciIsImluc2VydExhenlUcmVlQ2hpbGRB
dCIsIm1vdmVDaGlsZCIsIm1vdmVEZWxpbWl0ZWRUZXh0IiwiaW5zZXJ0Q2hpbGRBdCIsImNsb3Np
bmdDb21tZW50IiwicmVtb3ZlRGVsaW1pdGVkVGV4dCIsIm9wZW5pbmdDb21tZW50IiwibmV4dE5v
ZGUiLCJzdGFydE5vZGUiLCJyZXBsYWNlRGVsaW1pdGVkVGV4dCIsInN0cmluZ1RleHQiLCJub2Rl
QWZ0ZXJDb21tZW50IiwiY3JlYXRlVGV4dE5vZGUiLCJEYW5nZXIiLCJkYW5nZXJvdXNseVJlcGxh
Y2VOb2RlV2l0aE1hcmt1cCIsIkRPTUNoaWxkcmVuT3BlcmF0aW9ucyIsInByb2Nlc3NVcGRhdGVz
IiwidXBkYXRlcyIsImsiLCJ1cGRhdGUiLCJjb250ZW50IiwiYWZ0ZXJOb2RlIiwiZnJvbU5vZGUi
LCJtYXRobWwiLCJyZWNvbXB1dGVQbHVnaW5PcmRlcmluZyIsImV2ZW50UGx1Z2luT3JkZXIiLCJw
bHVnaW5OYW1lIiwibmFtZXNUb1BsdWdpbnMiLCJwbHVnaW5Nb2R1bGUiLCJwbHVnaW5JbmRleCIs
ImluZGV4T2YiLCJwdWJsaXNoZWRFdmVudHMiLCJldmVudFR5cGVzIiwiZXZlbnROYW1lIiwicHVi
bGlzaEV2ZW50Rm9yUGx1Z2luIiwiZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzIiwicGhhc2VOYW1l
IiwicGhhc2VkUmVnaXN0cmF0aW9uTmFtZSIsInB1Ymxpc2hSZWdpc3RyYXRpb25OYW1lIiwicG9z
c2libGVSZWdpc3RyYXRpb25OYW1lcyIsImluamVjdGVkRXZlbnRQbHVnaW5PcmRlciIsImluamVj
dGVkTmFtZXNUb1BsdWdpbnMiLCJpc09yZGVyaW5nRGlydHkiLCJnZXRQbHVnaW5Nb2R1bGVGb3JF
dmVudCIsIl9yZXNldEV2ZW50UGx1Z2lucyIsImlzRW5kaXNoIiwiaXNNb3ZlaXNoIiwiaXNTdGFy
dGlzaCIsImV4ZWN1dGVEaXNwYXRjaCIsImludm9rZUd1YXJkZWRDYWxsYmFja1dpdGhDYXRjaCIs
Imludm9rZUd1YXJkZWRDYWxsYmFjayIsImRpc3BhdGNoTGlzdGVuZXJzIiwiZGlzcGF0Y2hJbnN0
YW5jZXMiLCJleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlSW1wbCIsImV4ZWN1dGVE
aXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWUiLCJleGVjdXRlRGlyZWN0RGlzcGF0Y2giLCJkaXNw
YXRjaExpc3RlbmVyIiwiZGlzcGF0Y2hJbnN0YW5jZSIsInJlcyIsImhhc0Rpc3BhdGNoZXMiLCJD
b21wb25lbnRUcmVlIiwiVHJlZVRyYXZlcnNhbCIsImluamVjdENvbXBvbmVudFRyZWUiLCJJbmpl
Y3RlZCIsImluamVjdFRyZWVUcmF2ZXJzYWwiLCJpc0FuY2VzdG9yIiwiZ2V0TG93ZXN0Q29tbW9u
QW5jZXN0b3IiLCJhcmdGcm9tIiwiYXJnVG8iLCJlc2NhcGVSZWdleCIsImVzY2FwZXJMb29rdXAi
LCI9IiwiOiIsImVzY2FwZWRTdHJpbmciLCJ1bmVzY2FwZSIsInVuZXNjYXBlUmVnZXgiLCJ1bmVz
Y2FwZXJMb29rdXAiLCI9MCIsIj0yIiwia2V5U3Vic3RyaW5nIiwiS2V5RXNjYXBlVXRpbHMiLCJf
YXNzZXJ0U2luZ2xlTGluayIsImlucHV0UHJvcHMiLCJjaGVja2VkTGluayIsInZhbHVlTGluayIs
Il9hc3NlcnRWYWx1ZUxpbmsiLCJvbkNoYW5nZSIsIl9hc3NlcnRDaGVja2VkTGluayIsImNoZWNr
ZWQiLCJnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0iLCJSZWFjdFByb3BUeXBlc1NlY3JldCIs
InByb3BUeXBlc0ZhY3RvcnkiLCJoYXNSZWFkT25seVZhbHVlIiwiY2hlY2tib3giLCJpbWFnZSIs
ImhpZGRlbiIsInJhZGlvIiwic3VibWl0IiwicHJvcFR5cGVzIiwiY29tcG9uZW50TmFtZSIsInJl
YWRPbmx5IiwiZnVuYyIsImxvZ2dlZFR5cGVGYWlsdXJlcyIsIkxpbmtlZFZhbHVlVXRpbHMiLCJj
aGVja1Byb3BUeXBlcyIsInRhZ05hbWUiLCJnZXRWYWx1ZSIsImdldENoZWNrZWQiLCJleGVjdXRl
T25DaGFuZ2UiLCJyZXF1ZXN0Q2hhbmdlIiwiaW5qZWN0ZWQiLCJSZWFjdENvbXBvbmVudEVudmly
b25tZW50IiwicmVwbGFjZU5vZGVXaXRoTWFya3VwIiwicHJvY2Vzc0NoaWxkcmVuVXBkYXRlcyIs
ImluamVjdEVudmlyb25tZW50IiwiZW52aXJvbm1lbnQiLCJjYXVnaHRFcnJvciIsImZvcm1hdFVu
ZXhwZWN0ZWRBcmd1bWVudCIsImRpc3BsYXlOYW1lIiwiZ2V0SW50ZXJuYWxJbnN0YW5jZVJlYWR5
Rm9yVXBkYXRlIiwicHVibGljSW5zdGFuY2UiLCJjYWxsZXJOYW1lIiwiUmVhY3RVcGRhdGVRdWV1
ZSIsImlzTW91bnRlZCIsImVucXVldWVDYWxsYmFjayIsInZhbGlkYXRlQ2FsbGJhY2siLCJlbnF1
ZXVlQ2FsbGJhY2tJbnRlcm5hbCIsImVucXVldWVGb3JjZVVwZGF0ZSIsIl9wZW5kaW5nRm9yY2VV
cGRhdGUiLCJlbnF1ZXVlUmVwbGFjZVN0YXRlIiwiY29tcGxldGVTdGF0ZSIsIl9wZW5kaW5nU3Rh
dGVRdWV1ZSIsIl9wZW5kaW5nUmVwbGFjZVN0YXRlIiwiZW5xdWV1ZVNldFN0YXRlIiwicGFydGlh
bFN0YXRlIiwiZW5xdWV1ZUVsZW1lbnRJbnRlcm5hbCIsIm5leHRDb250ZXh0IiwiX3BlbmRpbmdF
bGVtZW50IiwiTVNBcHAiLCJleGVjVW5zYWZlTG9jYWxGdW5jdGlvbiIsImFyZzAiLCJhcmcxIiwi
YXJnMiIsImFyZzMiLCJnZXRFdmVudENoYXJDb2RlIiwiY2hhckNvZGUiLCJrZXlDb2RlIiwibW9k
aWZpZXJTdGF0ZUdldHRlciIsImtleUFyZyIsInN5bnRoZXRpY0V2ZW50Iiwia2V5UHJvcCIsIm1v
ZGlmaWVyS2V5VG9Qcm9wIiwiQWx0IiwiQ29udHJvbCIsIk1ldGEiLCJTaGlmdCIsImNvcnJlc3Bv
bmRpbmdVc2VFbGVtZW50IiwiZXZlbnROYW1lU3VmZml4IiwiY2FwdHVyZSIsImlzU3VwcG9ydGVk
Iiwic2V0QXR0cmlidXRlIiwidXNlSGFzRmVhdHVyZSIsImltcGxlbWVudGF0aW9uIiwiaGFzRmVh
dHVyZSIsInNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50IiwicHJldkVtcHR5IiwibmV4dEVtcHR5
IiwicHJldlR5cGUiLCJuZXh0VHlwZSIsInZhbGlkYXRlRE9NTmVzdGluZyIsIkV2ZW50TGlzdGVu
ZXIiLCJsaXN0ZW4iLCJldmVudFR5cGUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiZGV0YWNoRXZl
bnQiLCJyZWdpc3RlckRlZmF1bHQiLCJmb2N1c05vZGUiLCJmb2N1cyIsImdldEFjdGl2ZUVsZW1l
bnQiLCJhY3RpdmVFbGVtZW50IiwiYm9keSIsInJvb3QiLCJTeW1ib2wiLCJ0aHJvd09uRGlyZWN0
QWNjZXNzIiwicHJlZml4S2V5IiwicHJlZml4IiwiY2hhckF0IiwidG9VcHBlckNhc2UiLCJpc1Vu
aXRsZXNzTnVtYmVyIiwiYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQiLCJib3JkZXJJbWFnZU91dHNl
dCIsImJvcmRlckltYWdlU2xpY2UiLCJib3JkZXJJbWFnZVdpZHRoIiwiYm94RmxleCIsImJveEZs
ZXhHcm91cCIsImJveE9yZGluYWxHcm91cCIsImNvbHVtbkNvdW50IiwiZmxleCIsImZsZXhHcm93
IiwiZmxleFBvc2l0aXZlIiwiZmxleFNocmluayIsImZsZXhOZWdhdGl2ZSIsImZsZXhPcmRlciIs
ImdyaWRSb3ciLCJncmlkUm93RW5kIiwiZ3JpZFJvd1NwYW4iLCJncmlkUm93U3RhcnQiLCJncmlk
Q29sdW1uIiwiZ3JpZENvbHVtbkVuZCIsImdyaWRDb2x1bW5TcGFuIiwiZ3JpZENvbHVtblN0YXJ0
IiwiZm9udFdlaWdodCIsImxpbmVDbGFtcCIsImxpbmVIZWlnaHQiLCJvcGFjaXR5Iiwib3JkZXIi
LCJvcnBoYW5zIiwidGFiU2l6ZSIsIndpZG93cyIsInpJbmRleCIsInpvb20iLCJmaWxsT3BhY2l0
eSIsImZsb29kT3BhY2l0eSIsInN0b3BPcGFjaXR5Iiwic3Ryb2tlRGFzaGFycmF5Iiwic3Ryb2tl
RGFzaG9mZnNldCIsInN0cm9rZU1pdGVybGltaXQiLCJzdHJva2VPcGFjaXR5Iiwic3Ryb2tlV2lk
dGgiLCJwcmVmaXhlcyIsInByb3AiLCJzaG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lvbnMiLCJiYWNr
Z3JvdW5kIiwiYmFja2dyb3VuZEF0dGFjaG1lbnQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJiYWNrZ3Jv
dW5kSW1hZ2UiLCJiYWNrZ3JvdW5kUG9zaXRpb25YIiwiYmFja2dyb3VuZFBvc2l0aW9uWSIsImJh
Y2tncm91bmRSZXBlYXQiLCJiYWNrZ3JvdW5kUG9zaXRpb24iLCJib3JkZXIiLCJib3JkZXJXaWR0
aCIsImJvcmRlclN0eWxlIiwiYm9yZGVyQ29sb3IiLCJib3JkZXJCb3R0b20iLCJib3JkZXJCb3R0
b21XaWR0aCIsImJvcmRlckJvdHRvbVN0eWxlIiwiYm9yZGVyQm90dG9tQ29sb3IiLCJib3JkZXJM
ZWZ0IiwiYm9yZGVyTGVmdFdpZHRoIiwiYm9yZGVyTGVmdFN0eWxlIiwiYm9yZGVyTGVmdENvbG9y
IiwiYm9yZGVyUmlnaHQiLCJib3JkZXJSaWdodFdpZHRoIiwiYm9yZGVyUmlnaHRTdHlsZSIsImJv
cmRlclJpZ2h0Q29sb3IiLCJib3JkZXJUb3AiLCJib3JkZXJUb3BXaWR0aCIsImJvcmRlclRvcFN0
eWxlIiwiYm9yZGVyVG9wQ29sb3IiLCJmb250IiwiZm9udFN0eWxlIiwiZm9udFZhcmlhbnQiLCJm
b250U2l6ZSIsImZvbnRGYW1pbHkiLCJvdXRsaW5lIiwib3V0bGluZVdpZHRoIiwib3V0bGluZVN0
eWxlIiwib3V0bGluZUNvbG9yIiwiQ1NTUHJvcGVydHkiLCJfY2xhc3NDYWxsQ2hlY2siLCJpbnN0
YW5jZSIsIkNvbnN0cnVjdG9yIiwiX2NhbGxiYWNrcyIsIl9jb250ZXh0cyIsIl9hcmciLCJjb250
ZXh0cyIsImNoZWNrcG9pbnQiLCJyb2xsYmFjayIsImlzQXR0cmlidXRlTmFtZVNhZmUiLCJ2YWxp
ZGF0ZWRBdHRyaWJ1dGVOYW1lQ2FjaGUiLCJpbGxlZ2FsQXR0cmlidXRlTmFtZUNhY2hlIiwiVkFM
SURfQVRUUklCVVRFX05BTUVfUkVHRVgiLCJzaG91bGRJZ25vcmVWYWx1ZSIsImlzTmFOIiwicXVv
dGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIiLCJSZWdFeHAiLCJET01Qcm9wZXJ0eU9wZXJhdGlv
bnMiLCJjcmVhdGVNYXJrdXBGb3JJRCIsInNldEF0dHJpYnV0ZUZvcklEIiwiY3JlYXRlTWFya3Vw
Rm9yUm9vdCIsInNldEF0dHJpYnV0ZUZvclJvb3QiLCJjcmVhdGVNYXJrdXBGb3JQcm9wZXJ0eSIs
ImNyZWF0ZU1hcmt1cEZvckN1c3RvbUF0dHJpYnV0ZSIsInNldFZhbHVlRm9yUHJvcGVydHkiLCJk
ZWxldGVWYWx1ZUZvclByb3BlcnR5IiwibmFtZXNwYWNlIiwic2V0QXR0cmlidXRlTlMiLCJzZXRW
YWx1ZUZvckF0dHJpYnV0ZSIsInJlbW92ZUF0dHJpYnV0ZSIsImRlbGV0ZVZhbHVlRm9yQXR0cmli
dXRlIiwidXBkYXRlT3B0aW9uc0lmUGVuZGluZ1VwZGF0ZUFuZE1vdW50ZWQiLCJfd3JhcHBlclN0
YXRlIiwicGVuZGluZ1VwZGF0ZSIsInVwZGF0ZU9wdGlvbnMiLCJCb29sZWFuIiwibXVsdGlwbGUi
LCJwcm9wVmFsdWUiLCJzZWxlY3RlZFZhbHVlIiwib3B0aW9ucyIsInNlbGVjdGVkIiwiX2hhbmRs
ZUNoYW5nZSIsImRpZFdhcm5WYWx1ZURlZmF1bHRWYWx1ZSIsIlJlYWN0RE9NU2VsZWN0IiwiZ2V0
SG9zdFByb3BzIiwibW91bnRXcmFwcGVyIiwiaW5pdGlhbFZhbHVlIiwiZGVmYXVsdFZhbHVlIiwi
bGlzdGVuZXJzIiwid2FzTXVsdGlwbGUiLCJnZXRTZWxlY3RWYWx1ZUNvbnRleHQiLCJwb3N0VXBk
YXRlV3JhcHBlciIsImVtcHR5Q29tcG9uZW50RmFjdG9yeSIsIlJlYWN0RW1wdHlDb21wb25lbnRJ
bmplY3Rpb24iLCJpbmplY3RFbXB0eUNvbXBvbmVudEZhY3RvcnkiLCJSZWFjdEVtcHR5Q29tcG9u
ZW50IiwiY3JlYXRlIiwiaW5zdGFudGlhdGUiLCJjcmVhdGVJbnRlcm5hbENvbXBvbmVudCIsImdl
bmVyaWNDb21wb25lbnRDbGFzcyIsImNyZWF0ZUluc3RhbmNlRm9yVGV4dCIsInRleHRDb21wb25l
bnRDbGFzcyIsImlzVGV4dENvbXBvbmVudCIsIlJlYWN0SG9zdENvbXBvbmVudEluamVjdGlvbiIs
ImluamVjdEdlbmVyaWNDb21wb25lbnRDbGFzcyIsImNvbXBvbmVudENsYXNzIiwiaW5qZWN0VGV4
dENvbXBvbmVudENsYXNzIiwiUmVhY3RIb3N0Q29tcG9uZW50IiwiaXNJbkRvY3VtZW50IiwiY29u
dGFpbnNOb2RlIiwiZG9jdW1lbnRFbGVtZW50IiwiUmVhY3RET01TZWxlY3Rpb24iLCJSZWFjdElu
cHV0U2VsZWN0aW9uIiwiaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzIiwiZWxlbSIsImNvbnRlbnRF
ZGl0YWJsZSIsImdldFNlbGVjdGlvbkluZm9ybWF0aW9uIiwiZm9jdXNlZEVsZW0iLCJzZWxlY3Rp
b25SYW5nZSIsImdldFNlbGVjdGlvbiIsInJlc3RvcmVTZWxlY3Rpb24iLCJwcmlvclNlbGVjdGlv
bkluZm9ybWF0aW9uIiwiY3VyRm9jdXNlZEVsZW0iLCJwcmlvckZvY3VzZWRFbGVtIiwicHJpb3JT
ZWxlY3Rpb25SYW5nZSIsInNldFNlbGVjdGlvbiIsImlucHV0Iiwic2VsZWN0aW9uIiwic3RhcnQi
LCJzZWxlY3Rpb25TdGFydCIsImVuZCIsInNlbGVjdGlvbkVuZCIsInJhbmdlIiwiY3JlYXRlUmFu
Z2UiLCJwYXJlbnRFbGVtZW50IiwibW92ZVN0YXJ0IiwibW92ZUVuZCIsImdldE9mZnNldHMiLCJv
ZmZzZXRzIiwibWluIiwiY3JlYXRlVGV4dFJhbmdlIiwiY29sbGFwc2UiLCJzZWxlY3QiLCJzZXRP
ZmZzZXRzIiwiZmlyc3REaWZmZXJlbmNlSW5kZXgiLCJzdHJpbmcxIiwic3RyaW5nMiIsIm1pbkxl
biIsImdldFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lciIsImNvbnRhaW5lciIsIkRPQ19OT0RF
X1RZUEUiLCJpbnRlcm5hbEdldElEIiwibW91bnRDb21wb25lbnRJbnRvTm9kZSIsIndyYXBwZXJJ
bnN0YW5jZSIsInNob3VsZFJldXNlTWFya3VwIiwid3JhcHBlZEVsZW1lbnQiLCJjaGlsZCIsIlJl
YWN0RE9NQ29udGFpbmVySW5mbyIsIl90b3BMZXZlbFdyYXBwZXIiLCJSZWFjdE1vdW50IiwiX21v
dW50SW1hZ2VJbnRvTm9kZSIsImJhdGNoZWRNb3VudENvbXBvbmVudEludG9Ob2RlIiwiY29tcG9u
ZW50SW5zdGFuY2UiLCJSZWFjdERPTUZlYXR1cmVGbGFncyIsInVzZUNyZWF0ZUVsZW1lbnQiLCJ1
bm1vdW50Q29tcG9uZW50RnJvbU5vZGUiLCJsYXN0Q2hpbGQiLCJoYXNOb25Sb290UmVhY3RDaGls
ZCIsInJvb3RFbCIsImlzVmFsaWRDb250YWluZXIiLCJnZXRIb3N0Um9vdEluc3RhbmNlSW5Db250
YWluZXIiLCJwcmV2SG9zdEluc3RhbmNlIiwiZ2V0VG9wTGV2ZWxXcmFwcGVySW5Db250YWluZXIi
LCJfaG9zdENvbnRhaW5lckluZm8iLCJSZWFjdE1hcmt1cENoZWNrc3VtIiwiaW5zdGFudGlhdGVS
ZWFjdENvbXBvbmVudCIsIlJPT1RfQVRUUl9OQU1FIiwiaW5zdGFuY2VzQnlSZWFjdFJvb3RJRCIs
InRvcExldmVsUm9vdENvdW50ZXIiLCJUb3BMZXZlbFdyYXBwZXIiLCJyb290SUQiLCJpc1JlYWN0
Q29tcG9uZW50IiwicmVuZGVyIiwiX2luc3RhbmNlc0J5UmVhY3RSb290SUQiLCJzY3JvbGxNb25p
dG9yIiwicmVuZGVyQ2FsbGJhY2siLCJfdXBkYXRlUm9vdENvbXBvbmVudCIsInByZXZDb21wb25l
bnQiLCJfcmVuZGVyTmV3Um9vdENvbXBvbmVudCIsIndyYXBwZXJJRCIsIl9pbnN0YW5jZSIsInJl
bmRlclN1YnRyZWVJbnRvQ29udGFpbmVyIiwicGFyZW50Q29tcG9uZW50IiwiX3JlbmRlclN1YnRy
ZWVJbnRvQ29udGFpbmVyIiwibmV4dFdyYXBwZWRFbGVtZW50IiwiX3Byb2Nlc3NDaGlsZENvbnRl
eHQiLCJwcmV2V3JhcHBlZEVsZW1lbnQiLCJwdWJsaWNJbnN0IiwidXBkYXRlZENhbGxiYWNrIiwi
dW5tb3VudENvbXBvbmVudEF0Tm9kZSIsInJlYWN0Um9vdEVsZW1lbnQiLCJjb250YWluZXJIYXNS
ZWFjdE1hcmt1cCIsImNvbnRhaW5lckhhc05vblJvb3RSZWFjdENoaWxkIiwiaGFzQXR0cmlidXRl
Iiwicm9vdEVsZW1lbnQiLCJjYW5SZXVzZU1hcmt1cCIsImNoZWNrc3VtIiwiQ0hFQ0tTVU1fQVRU
Ul9OQU1FIiwicm9vdE1hcmt1cCIsIm91dGVySFRNTCIsIm5vcm1hbGl6ZWRNYXJrdXAiLCJkaWZm
SW5kZXgiLCJkaWZmZXJlbmNlIiwiUmVhY3ROb2RlVHlwZXMiLCJIT1NUIiwiQ09NUE9TSVRFIiwi
RU1QVFkiLCJnZXRUeXBlIiwic2Nyb2xsUG9zaXRpb24iLCJuZXh0IiwiYXJyIiwiY2IiLCJnZXRI
b3N0Q29tcG9uZW50RnJvbUNvbXBvc2l0ZSIsIl9yZW5kZXJlZE5vZGVUeXBlIiwiZ2V0VGV4dENv
bnRlbnRBY2Nlc3NvciIsImNvbnRlbnRLZXkiLCJpc0NoZWNrYWJsZSIsImdldFRyYWNrZXIiLCJ2
YWx1ZVRyYWNrZXIiLCJhdHRhY2hUcmFja2VyIiwidHJhY2tlciIsImRldGFjaFRyYWNrZXIiLCJn
ZXRWYWx1ZUZyb21Ob2RlIiwiaW5wdXRWYWx1ZVRyYWNraW5nIiwiX2dldFRyYWNrZXJGcm9tTm9k
ZSIsInRyYWNrIiwidmFsdWVGaWVsZCIsImRlc2NyaXB0b3IiLCJnZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IiLCJjdXJyZW50VmFsdWUiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJjb25m
aWd1cmFibGUiLCJzZXRWYWx1ZSIsInN0b3BUcmFja2luZyIsInVwZGF0ZVZhbHVlSWZDaGFuZ2Vk
IiwibGFzdFZhbHVlIiwibmV4dFZhbHVlIiwiaXNJbnRlcm5hbENvbXBvbmVudFR5cGUiLCJzaG91
bGRIYXZlRGVidWdJRCIsImluZm8iLCJnZXROYXRpdmVOb2RlIiwiUmVhY3RDb21wb3NpdGVDb21w
b25lbnRXcmFwcGVyIiwiX21vdW50SW5kZXgiLCJfbW91bnRJbWFnZSIsIlJlYWN0Q29tcG9zaXRl
Q29tcG9uZW50IiwiY29uc3RydWN0IiwiX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQiLCJpc1Rl
eHRJbnB1dEVsZW1lbnQiLCJzdXBwb3J0ZWRJbnB1dFR5cGVzIiwiY29sb3IiLCJkYXRlIiwiZGF0
ZXRpbWUiLCJkYXRldGltZS1sb2NhbCIsImVtYWlsIiwibW9udGgiLCJudW1iZXIiLCJwYXNzd29y
ZCIsInNlYXJjaCIsInRlbCIsInVybCIsIndlZWsiLCJ0ZXh0Q29udGVudCIsImdldENvbXBvbmVu
dEtleSIsInRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsIiwibmFtZVNvRmFyIiwidHJhdmVyc2VDb250
ZXh0IiwiU0VQQVJBVE9SIiwibmV4dE5hbWUiLCJzdWJ0cmVlQ291bnQiLCJuZXh0TmFtZVByZWZp
eCIsIlNVQlNFUEFSQVRPUiIsIml0ZXJhdG9yRm4iLCJnZXRJdGVyYXRvckZuIiwic3RlcCIsIml0
ZXJhdG9yIiwiZW50cmllcyIsImlpIiwiZG9uZSIsImVudHJ5IiwiYWRkZW5kdW0iLCJjaGlsZHJl
blN0cmluZyIsInRyYXZlcnNlQWxsQ2hpbGRyZW4iLCJfcG9zc2libGVDb25zdHJ1Y3RvclJldHVy
biIsIlJlZmVyZW5jZUVycm9yIiwiX2luaGVyaXRzIiwic3ViQ2xhc3MiLCJzdXBlckNsYXNzIiwi
d3JpdGFibGUiLCJzZXRQcm90b3R5cGVPZiIsIl9fcHJvdG9fXyIsIl9vYmplY3RXaXRob3V0UHJv
cGVydGllcyIsIm5vb3AiLCJtYWtlU2VsZWN0b3JTdGF0ZWZ1bCIsInNvdXJjZVNlbGVjdG9yIiwi
c3RvcmUiLCJzZWxlY3RvciIsInJ1biIsIm5leHRQcm9wcyIsImdldFN0YXRlIiwic2hvdWxkQ29t
cG9uZW50VXBkYXRlIiwiY29ubmVjdEFkdmFuY2VkIiwic2VsZWN0b3JGYWN0b3J5IiwiX2NvbnRl
eHRUeXBlcyIsIl9jaGlsZENvbnRleHRUeXBlcyIsIl9yZWYiLCJfcmVmJGdldERpc3BsYXlOYW1l
IiwiZ2V0RGlzcGxheU5hbWUiLCJfcmVmJG1ldGhvZE5hbWUiLCJtZXRob2ROYW1lIiwiX3JlZiRy
ZW5kZXJDb3VudFByb3AiLCJyZW5kZXJDb3VudFByb3AiLCJfcmVmJHNob3VsZEhhbmRsZVN0YXQi
LCJzaG91bGRIYW5kbGVTdGF0ZUNoYW5nZXMiLCJfcmVmJHN0b3JlS2V5Iiwic3RvcmVLZXkiLCJf
cmVmJHdpdGhSZWYiLCJ3aXRoUmVmIiwiY29ubmVjdE9wdGlvbnMiLCJzdWJzY3JpcHRpb25LZXki
LCJob3RSZWxvYWRpbmdWZXJzaW9uIiwiY29udGV4dFR5cGVzIiwiX1Byb3BUeXBlcyIsInN0b3Jl
U2hhcGUiLCJzdWJzY3JpcHRpb25TaGFwZSIsImNoaWxkQ29udGV4dFR5cGVzIiwiV3JhcHBlZENv
bXBvbmVudCIsIl9pbnZhcmlhbnQyIiwiSlNPTiIsInN0cmluZ2lmeSIsIndyYXBwZWRDb21wb25l
bnROYW1lIiwic2VsZWN0b3JGYWN0b3J5T3B0aW9ucyIsIl9leHRlbmRzIiwiQ29ubmVjdCIsIl9D
b21wb25lbnQiLCJfdGhpcyIsInN0YXRlIiwicmVuZGVyQ291bnQiLCJwcm9wc01vZGUiLCJzZXRX
cmFwcGVkSW5zdGFuY2UiLCJpbml0U2VsZWN0b3IiLCJpbml0U3Vic2NyaXB0aW9uIiwiZ2V0Q2hp
bGRDb250ZXh0IiwiX3JlZjIiLCJzdWJzY3JpcHRpb24iLCJjb21wb25lbnREaWRNb3VudCIsInRy
eVN1YnNjcmliZSIsImZvcmNlVXBkYXRlIiwiY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyIsImNv
bXBvbmVudFdpbGxVbm1vdW50IiwidHJ5VW5zdWJzY3JpYmUiLCJub3RpZnlOZXN0ZWRTdWJzIiwi
Z2V0V3JhcHBlZEluc3RhbmNlIiwid3JhcHBlZEluc3RhbmNlIiwiZGlzcGF0Y2giLCJwYXJlbnRT
dWIiLCJfU3Vic2NyaXB0aW9uMiIsIm9uU3RhdGVDaGFuZ2UiLCJjb21wb25lbnREaWRVcGRhdGUi
LCJub3RpZnlOZXN0ZWRTdWJzT25Db21wb25lbnREaWRVcGRhdGUiLCJzZXRTdGF0ZSIsImR1bW15
U3RhdGUiLCJpc1N1YnNjcmliZWQiLCJhZGRFeHRyYVByb3BzIiwid2l0aEV4dHJhcyIsIl9yZWFj
dCIsIl9ob2lzdE5vblJlYWN0U3RhdGljczIiLCJfaG9pc3ROb25SZWFjdFN0YXRpY3MiLCJfaW52
YXJpYW50IiwiX1N1YnNjcmlwdGlvbiIsIndyYXBNYXBUb1Byb3BzQ29uc3RhbnQiLCJnZXRDb25z
dGFudCIsImNvbnN0YW50U2VsZWN0b3IiLCJjb25zdGFudCIsImRlcGVuZHNPbk93blByb3BzIiwi
Z2V0RGVwZW5kc09uT3duUHJvcHMiLCJtYXBUb1Byb3BzIiwid3JhcE1hcFRvUHJvcHNGdW5jIiwi
cHJveHkiLCJzdGF0ZU9yRGlzcGF0Y2giLCJvd25Qcm9wcyIsIl92ZXJpZnlQbGFpbk9iamVjdCIs
ImNvbm5lY3QiLCJjcmVhdGVQcm92aWRlciIsIlByb3ZpZGVyIiwiX1Byb3ZpZGVyIiwiX1Byb3Zp
ZGVyMiIsIl9jb25uZWN0QWR2YW5jZWQiLCJfY29ubmVjdEFkdmFuY2VkMiIsIl9jb25uZWN0Iiwi
X2Nvbm5lY3QyIiwiX3Byb3BUeXBlcyIsIl9wcm9wVHlwZXMyIiwic2hhcGUiLCJpc1JlcXVpcmVk
Iiwic3Vic2NyaWJlIiwidmVyaWZ5UGxhaW5PYmplY3QiLCJfaXNQbGFpbk9iamVjdDIiLCJfd2Fy
bmluZzIiLCJfaXNQbGFpbk9iamVjdCIsIl9jcmVhdGVDbGFzcyIsImRlZmluZVByb3BlcnRpZXMi
LCJwcm90b1Byb3BzIiwic3RhdGljUHJvcHMiLCJfcmVhY3QyIiwiX2NsYXNzbmFtZXMiLCJfY2xh
c3NuYW1lczIiLCJUb2RvVGV4dElucHV0IiwiX3RlbXAiLCJfcmV0IiwiX2xlbiIsIl9rZXkiLCJn
ZXRQcm90b3R5cGVPZiIsImhhbmRsZVN1Ym1pdCIsInRyaW0iLCJ3aGljaCIsIm9uU2F2ZSIsIm5l
d1RvZG8iLCJoYW5kbGVDaGFuZ2UiLCJoYW5kbGVCbHVyIiwiY2xhc3NOYW1lIiwiZWRpdCIsImVk
aXRpbmciLCJuZXctdG9kbyIsInBsYWNlaG9sZGVyIiwiYXV0b0ZvY3VzIiwib25CbHVyIiwib25L
ZXlEb3duIiwiYm9vbCIsIkFERF9UT0RPIiwiREVMRVRFX1RPRE8iLCJFRElUX1RPRE8iLCJDT01Q
TEVURV9UT0RPIiwiQ09NUExFVEVfQUxMIiwiQ0xFQVJfQ09NUExFVEVEIiwiU0hPV19BTEwiLCJT
SE9XX0NPTVBMRVRFRCIsIlNIT1dfQUNUSVZFIiwiZGVmYXVsdFNldFRpbW91dCIsImRlZmF1bHRD
bGVhclRpbWVvdXQiLCJydW5UaW1lb3V0IiwiZnVuIiwiY2FjaGVkU2V0VGltZW91dCIsInNldFRp
bWVvdXQiLCJydW5DbGVhclRpbWVvdXQiLCJtYXJrZXIiLCJjYWNoZWRDbGVhclRpbWVvdXQiLCJj
bGVhclRpbWVvdXQiLCJjbGVhblVwTmV4dFRpY2siLCJkcmFpbmluZyIsImN1cnJlbnRRdWV1ZSIs
InF1ZXVlSW5kZXgiLCJkcmFpblF1ZXVlIiwidGltZW91dCIsIkl0ZW0iLCJhcnJheSIsInByb2Nl
c3MiLCJuZXh0VGljayIsInRpdGxlIiwiYnJvd3NlciIsImVudiIsImFyZ3YiLCJ2ZXJzaW9ucyIs
Im9uIiwiYWRkTGlzdGVuZXIiLCJvbmNlIiwib2ZmIiwicmVtb3ZlTGlzdGVuZXIiLCJyZW1vdmVB
bGxMaXN0ZW5lcnMiLCJlbWl0IiwiYmluZGluZyIsImN3ZCIsImNoZGlyIiwiZGlyIiwidW1hc2si
LCJnZXRUaGVuIiwidGhlbiIsImV4IiwiTEFTVF9FUlJPUiIsIklTX0VSUk9SIiwidHJ5Q2FsbE9u
ZSIsInRyeUNhbGxUd28iLCJQcm9taXNlIiwiXzQ1IiwiXzgxIiwiXzY1IiwiXzU0IiwiZG9SZXNv
bHZlIiwic2FmZVRoZW4iLCJvbkZ1bGZpbGxlZCIsIm9uUmVqZWN0ZWQiLCJyZXNvbHZlIiwicmVq
ZWN0IiwiSGFuZGxlciIsImRlZmVycmVkIiwiXzEwIiwiaGFuZGxlUmVzb2x2ZWQiLCJwcm9taXNl
IiwibmV3VmFsdWUiLCJmaW5hbGUiLCJfOTciLCJyZWFzb24iLCJfNjEiLCJSZWFjdENvbXBvbmVu
dCIsInVwZGF0ZXIiLCJyZWZzIiwiUmVhY3ROb29wVXBkYXRlUXVldWUiLCJSZWFjdFB1cmVDb21w
b25lbnQiLCJDb21wb25lbnREdW1teSIsImlzUHVyZVJlYWN0Q29tcG9uZW50IiwiaXNOYXRpdmUi
LCJyZUlzTmF0aXZlIiwicHVyZ2VEZWVwIiwiaXRlbSIsImdldEl0ZW0iLCJjaGlsZElEcyIsInJl
bW92ZUl0ZW0iLCJkZXNjcmliZUNvbXBvbmVudEZyYW1lIiwib3duZXJOYW1lIiwiZmlsZU5hbWUi
LCJsaW5lTnVtYmVyIiwiZGVzY3JpYmVJRCIsIlJlYWN0Q29tcG9uZW50VHJlZUhvb2siLCJnZXRF
bGVtZW50Iiwib3duZXJJRCIsImdldE93bmVySUQiLCJzZXRJdGVtIiwiZ2V0SXRlbUlEcyIsImFk
ZFJvb3QiLCJyZW1vdmVSb290IiwiZ2V0Um9vdElEcyIsImNhblVzZUNvbGxlY3Rpb25zIiwiTWFw
IiwiU2V0IiwiaXRlbU1hcCIsInJvb3RJRFNldCIsImFkZCIsIml0ZW1CeUtleSIsInJvb3RCeUtl
eSIsImdldEtleUZyb21JRCIsImdldElERnJvbUtleSIsInBhcnNlSW50Iiwic3Vic3RyIiwidW5t
b3VudGVkSURzIiwib25TZXRDaGlsZHJlbiIsIm5leHRDaGlsZElEcyIsIm5leHRDaGlsZElEIiwi
bmV4dENoaWxkIiwicGFyZW50SUQiLCJvbkJlZm9yZU1vdW50Q29tcG9uZW50IiwidXBkYXRlQ291
bnQiLCJvbkJlZm9yZVVwZGF0ZUNvbXBvbmVudCIsIm9uTW91bnRDb21wb25lbnQiLCJpc1Jvb3Qi
LCJvblVwZGF0ZUNvbXBvbmVudCIsIm9uVW5tb3VudENvbXBvbmVudCIsInB1cmdlVW5tb3VudGVk
Q29tcG9uZW50cyIsIl9wcmV2ZW50UHVyZ2luZyIsImdldEN1cnJlbnRTdGFja0FkZGVuZHVtIiwi
dG9wRWxlbWVudCIsImN1cnJlbnRPd25lciIsIl9kZWJ1Z0lEIiwiZ2V0U3RhY2tBZGRlbmR1bUJ5
SUQiLCJnZXRQYXJlbnRJRCIsImdldENoaWxkSURzIiwiZ2V0U291cmNlIiwiZ2V0VGV4dCIsImdl
dFVwZGF0ZUNvdW50IiwiZ2V0UmVnaXN0ZXJlZElEcyIsInB1c2hOb25TdGFuZGFyZFdhcm5pbmdT
dGFjayIsImlzQ3JlYXRpbmdFbGVtZW50IiwiY3VycmVudFNvdXJjZSIsInJlYWN0U3RhY2siLCJz
dGFjayIsInBvcE5vblN0YW5kYXJkV2FybmluZ1N0YWNrIiwicmVhY3RTdGFja0VuZCIsIndhcm5O
b29wIiwiY2FuRGVmaW5lUHJvcGVydHkiLCJmdW5jcyIsInJlZHVjZSIsInJlZHVjZXIiLCJwcmVs
b2FkZWRTdGF0ZSIsImVuaGFuY2VyIiwiZW5zdXJlQ2FuTXV0YXRlTmV4dExpc3RlbmVycyIsIm5l
eHRMaXN0ZW5lcnMiLCJjdXJyZW50TGlzdGVuZXJzIiwiY3VycmVudFN0YXRlIiwiYWN0aW9uIiwi
aXNEaXNwYXRjaGluZyIsImN1cnJlbnRSZWR1Y2VyIiwicmVwbGFjZVJlZHVjZXIiLCJuZXh0UmVk
dWNlciIsIkFjdGlvblR5cGVzIiwiSU5JVCIsIm9ic2VydmFibGUiLCJvdXRlclN1YnNjcmliZSIs
Im9ic2VydmVyIiwib2JzZXJ2ZVN0YXRlIiwidW5zdWJzY3JpYmUiLCJfc3ltYm9sT2JzZXJ2YWJs
ZTIiLCJfc3ltYm9sT2JzZXJ2YWJsZSIsImlkZW50aXR5IiwidmFsaWRhdGVNZXRob2RPdmVycmlk
ZSIsImlzQWxyZWFkeURlZmluZWQiLCJzcGVjUG9saWN5IiwiUmVhY3RDbGFzc0ludGVyZmFjZSIs
IlJlYWN0Q2xhc3NNaXhpbiIsIm1peFNwZWNJbnRvQ29tcG9uZW50Iiwic3BlYyIsImF1dG9CaW5k
UGFpcnMiLCJfX3JlYWN0QXV0b0JpbmRQYWlycyIsIk1JWElOU19LRVkiLCJSRVNFUlZFRF9TUEVD
X0tFWVMiLCJtaXhpbnMiLCJwcm9wZXJ0eSIsImlzUmVhY3RDbGFzc01ldGhvZCIsImlzRnVuY3Rp
b24iLCJzaG91bGRBdXRvQmluZCIsImF1dG9iaW5kIiwiY3JlYXRlTWVyZ2VkUmVzdWx0RnVuY3Rp
b24iLCJjcmVhdGVDaGFpbmVkRnVuY3Rpb24iLCJtaXhTdGF0aWNTcGVjSW50b0NvbXBvbmVudCIs
InN0YXRpY3MiLCJpc1Jlc2VydmVkIiwiaXNJbmhlcml0ZWQiLCJtZXJnZUludG9XaXRoTm9EdXBs
aWNhdGVLZXlzIiwib25lIiwidHdvIiwiYmluZEF1dG9CaW5kTWV0aG9kIiwiYm91bmRNZXRob2Qi
LCJiaW5kQXV0b0JpbmRNZXRob2RzIiwicGFpcnMiLCJhdXRvQmluZEtleSIsImluaXRpYWxTdGF0
ZSIsImdldEluaXRpYWxTdGF0ZSIsIlJlYWN0Q2xhc3NDb21wb25lbnQiLCJpbmplY3RlZE1peGlu
cyIsIklzTW91bnRlZFByZU1peGluIiwiSXNNb3VudGVkUG9zdE1peGluIiwiZ2V0RGVmYXVsdFBy
b3BzIiwiY29tcG9uZW50V2lsbE1vdW50IiwiY29tcG9uZW50V2lsbFVwZGF0ZSIsInVwZGF0ZUNv
bXBvbmVudCIsIl9faXNNb3VudGVkIiwicmVwbGFjZVN0YXRlIiwibmV3U3RhdGUiLCJSZWFjdFBy
b3BUeXBlTG9jYXRpb25OYW1lcyIsImNhbWVsaXplIiwiX2h5cGhlblBhdHRlcm4iLCJfIiwiY2hh
cmFjdGVyIiwiY2FtZWxpemVTdHlsZU5hbWUiLCJtc1BhdHRlcm4iLCJvdXRlck5vZGUiLCJpbm5l
ck5vZGUiLCJpc1RleHROb2RlIiwiY29udGFpbnMiLCJjb21wYXJlRG9jdW1lbnRQb3NpdGlvbiIs
ImNhbGxlZSIsImhhc0FycmF5TmF0dXJlIiwiY3JlYXRlQXJyYXlGcm9tTWl4ZWQiLCJnZXROb2Rl
TmFtZSIsIm5vZGVOYW1lTWF0Y2giLCJub2RlTmFtZVBhdHRlcm4iLCJjcmVhdGVOb2Rlc0Zyb21N
YXJrdXAiLCJoYW5kbGVTY3JpcHQiLCJkdW1teU5vZGUiLCJ3cmFwIiwiZ2V0TWFya3VwV3JhcCIs
IndyYXBEZXB0aCIsInNjcmlwdHMiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsIm5vZGVzIiwiY2hp
bGROb2RlcyIsIm1hcmt1cFdyYXAiLCJzaG91bGRXcmFwIiwic2VsZWN0V3JhcCIsInRhYmxlV3Jh
cCIsInRyV3JhcCIsInN2Z1dyYXAiLCIqIiwiYXJlYSIsImNvbCIsImxlZ2VuZCIsInBhcmFtIiwi
dHIiLCJvcHRncm91cCIsIm9wdGlvbiIsImNhcHRpb24iLCJjb2xncm91cCIsInRib2R5IiwidGZv
b3QiLCJ0aGVhZCIsInRkIiwidGgiLCJzdmdFbGVtZW50cyIsImdldFVuYm91bmRlZFNjcm9sbFBv
c2l0aW9uIiwic2Nyb2xsYWJsZSIsIldpbmRvdyIsInBhZ2VYT2Zmc2V0Iiwic2Nyb2xsTGVmdCIs
InBhZ2VZT2Zmc2V0Iiwic2Nyb2xsVG9wIiwiaHlwaGVuYXRlIiwiX3VwcGVyY2FzZVBhdHRlcm4i
LCJoeXBoZW5hdGVTdHlsZU5hbWUiLCJpc05vZGUiLCJOb2RlIiwibWVtb2l6ZVN0cmluZ09ubHki
LCJjYWNoZSIsIlJFQUNUX1NUQVRJQ1MiLCJLTk9XTl9TVEFUSUNTIiwiY2FsbGVyIiwiYXJpdHki
LCJvYmplY3RQcm90b3R5cGUiLCJob2lzdE5vblJlYWN0U3RhdGljcyIsInRhcmdldENvbXBvbmVu
dCIsInNvdXJjZUNvbXBvbmVudCIsImJsYWNrbGlzdCIsImluaGVyaXRlZENvbXBvbmVudCIsInVu
ZGVmaW5lZFRhZyIsIm51bGxUYWciLCJzeW1Ub1N0cmluZ1RhZyIsImdldFJhd1RhZyIsIm9iamVj
dFRvU3RyaW5nIiwidG9TdHJpbmdUYWciLCJnbG9iYWwiLCJmcmVlR2xvYmFsIiwib3ZlckFyZyIs
ImlzT3duIiwidW5tYXNrZWQiLCJyZXN1bHQiLCJuYXRpdmVPYmplY3RUb1N0cmluZyIsInRyYW5z
Zm9ybSIsImZyZWVTZWxmIiwidHlwZVNwZWNzIiwidmFsdWVzIiwibG9jYXRpb24iLCJnZXRTdGFj
ayIsInNoaW0iLCJwcm9wRnVsbE5hbWUiLCJzZWNyZXQiLCJnZXRTaGltIiwic3ltYm9sIiwiYW55
IiwiYXJyYXlPZiIsImluc3RhbmNlT2YiLCJvYmplY3RPZiIsIm9uZU9mIiwib25lT2ZUeXBlIiwi
bWF5YmVJdGVyYWJsZSIsIklURVJBVE9SX1NZTUJPTCIsIkZBVVhfSVRFUkFUT1JfU1lNQk9MIiwi
UHJvcFR5cGVFcnJvciIsImNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyIiwidmFsaWRhdGUiLCJj
aGVja1R5cGUiLCJBTk9OWU1PVVMiLCJjaGFpbmVkQ2hlY2tUeXBlIiwiY3JlYXRlUHJpbWl0aXZl
VHlwZUNoZWNrZXIiLCJleHBlY3RlZFR5cGUiLCJwcm9wVHlwZSIsImdldFByb3BUeXBlIiwicHJl
Y2lzZVR5cGUiLCJnZXRQcmVjaXNlVHlwZSIsImNyZWF0ZUFueVR5cGVDaGVja2VyIiwiY3JlYXRl
QXJyYXlPZlR5cGVDaGVja2VyIiwidHlwZUNoZWNrZXIiLCJjcmVhdGVFbGVtZW50VHlwZUNoZWNr
ZXIiLCJjcmVhdGVJbnN0YW5jZVR5cGVDaGVja2VyIiwiZXhwZWN0ZWRDbGFzcyIsImV4cGVjdGVk
Q2xhc3NOYW1lIiwiYWN0dWFsQ2xhc3NOYW1lIiwiZ2V0Q2xhc3NOYW1lIiwiY3JlYXRlRW51bVR5
cGVDaGVja2VyIiwiZXhwZWN0ZWRWYWx1ZXMiLCJ2YWx1ZXNTdHJpbmciLCJjcmVhdGVPYmplY3RP
ZlR5cGVDaGVja2VyIiwiY3JlYXRlVW5pb25UeXBlQ2hlY2tlciIsImFycmF5T2ZUeXBlQ2hlY2tl
cnMiLCJjaGVja2VyIiwiZ2V0UG9zdGZpeEZvclR5cGVXYXJuaW5nIiwiY3JlYXRlTm9kZUNoZWNr
ZXIiLCJjcmVhdGVTaGFwZVR5cGVDaGVja2VyIiwic2hhcGVUeXBlcyIsImV2ZXJ5IiwiaXNTeW1i
b2wiLCJBUklBRE9NUHJvcGVydHlDb25maWciLCJhcmlhLWN1cnJlbnQiLCJhcmlhLWRldGFpbHMi
LCJhcmlhLWRpc2FibGVkIiwiYXJpYS1oaWRkZW4iLCJhcmlhLWludmFsaWQiLCJhcmlhLWtleXNo
b3J0Y3V0cyIsImFyaWEtbGFiZWwiLCJhcmlhLXJvbGVkZXNjcmlwdGlvbiIsImFyaWEtYXV0b2Nv
bXBsZXRlIiwiYXJpYS1jaGVja2VkIiwiYXJpYS1leHBhbmRlZCIsImFyaWEtaGFzcG9wdXAiLCJh
cmlhLWxldmVsIiwiYXJpYS1tb2RhbCIsImFyaWEtbXVsdGlsaW5lIiwiYXJpYS1tdWx0aXNlbGVj
dGFibGUiLCJhcmlhLW9yaWVudGF0aW9uIiwiYXJpYS1wbGFjZWhvbGRlciIsImFyaWEtcHJlc3Nl
ZCIsImFyaWEtcmVhZG9ubHkiLCJhcmlhLXJlcXVpcmVkIiwiYXJpYS1zZWxlY3RlZCIsImFyaWEt
c29ydCIsImFyaWEtdmFsdWVtYXgiLCJhcmlhLXZhbHVlbWluIiwiYXJpYS12YWx1ZW5vdyIsImFy
aWEtdmFsdWV0ZXh0IiwiYXJpYS1hdG9taWMiLCJhcmlhLWJ1c3kiLCJhcmlhLWxpdmUiLCJhcmlh
LXJlbGV2YW50IiwiYXJpYS1kcm9wZWZmZWN0IiwiYXJpYS1ncmFiYmVkIiwiYXJpYS1hY3RpdmVk
ZXNjZW5kYW50IiwiYXJpYS1jb2xjb3VudCIsImFyaWEtY29saW5kZXgiLCJhcmlhLWNvbHNwYW4i
LCJhcmlhLWNvbnRyb2xzIiwiYXJpYS1kZXNjcmliZWRieSIsImFyaWEtZXJyb3JtZXNzYWdlIiwi
YXJpYS1mbG93dG8iLCJhcmlhLWxhYmVsbGVkYnkiLCJhcmlhLW93bnMiLCJhcmlhLXBvc2luc2V0
IiwiYXJpYS1yb3djb3VudCIsImFyaWEtcm93aW5kZXgiLCJhcmlhLXJvd3NwYW4iLCJhcmlhLXNl
dHNpemUiLCJBdXRvRm9jdXNVdGlscyIsImZvY3VzRE9NQ29tcG9uZW50IiwiaXNQcmVzdG8iLCJv
cGVyYSIsImlzS2V5cHJlc3NDb21tYW5kIiwiZ2V0Q29tcG9zaXRpb25FdmVudFR5cGUiLCJjb21w
b3NpdGlvblN0YXJ0IiwiY29tcG9zaXRpb25FbmQiLCJjb21wb3NpdGlvblVwZGF0ZSIsImlzRmFs
bGJhY2tDb21wb3NpdGlvblN0YXJ0IiwiU1RBUlRfS0VZQ09ERSIsImlzRmFsbGJhY2tDb21wb3Np
dGlvbkVuZCIsIkVORF9LRVlDT0RFUyIsImdldERhdGFGcm9tQ3VzdG9tRXZlbnQiLCJleHRyYWN0
Q29tcG9zaXRpb25FdmVudCIsImZhbGxiYWNrRGF0YSIsImNhblVzZUNvbXBvc2l0aW9uRXZlbnQi
LCJjdXJyZW50Q29tcG9zaXRpb24iLCJ1c2VGYWxsYmFja0NvbXBvc2l0aW9uRGF0YSIsImdldERh
dGEiLCJGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUiLCJTeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50
IiwiY3VzdG9tRGF0YSIsImdldE5hdGl2ZUJlZm9yZUlucHV0Q2hhcnMiLCJTUEFDRUJBUl9DT0RF
IiwiaGFzU3BhY2VLZXlwcmVzcyIsIlNQQUNFQkFSX0NIQVIiLCJjaGFycyIsImdldEZhbGxiYWNr
QmVmb3JlSW5wdXRDaGFycyIsImV4dHJhY3RCZWZvcmVJbnB1dEV2ZW50IiwiY2FuVXNlVGV4dElu
cHV0RXZlbnQiLCJTeW50aGV0aWNJbnB1dEV2ZW50IiwiYmVmb3JlSW5wdXQiLCJidWJibGVkIiwi
Y2FwdHVyZWQiLCJCZWZvcmVJbnB1dEV2ZW50UGx1Z2luIiwiZGFuZ2Vyb3VzU3R5bGVWYWx1ZSIs
InByb2Nlc3NTdHlsZU5hbWUiLCJzdHlsZU5hbWUiLCJoYXNTaG9ydGhhbmRQcm9wZXJ0eUJ1ZyIs
InN0eWxlRmxvYXRBY2Nlc3NvciIsInRlbXBTdHlsZSIsInN0eWxlIiwiY3NzRmxvYXQiLCJDU1NQ
cm9wZXJ0eU9wZXJhdGlvbnMiLCJjcmVhdGVNYXJrdXBGb3JTdHlsZXMiLCJzdHlsZXMiLCJzZXJp
YWxpemVkIiwiaXNDdXN0b21Qcm9wZXJ0eSIsInN0eWxlVmFsdWUiLCJzZXRWYWx1ZUZvclN0eWxl
cyIsInNldFByb3BlcnR5IiwiZXhwYW5zaW9uIiwiaW5kaXZpZHVhbFN0eWxlTmFtZSIsImNyZWF0
ZUFuZEFjY3VtdWxhdGVDaGFuZ2VFdmVudCIsImNoYW5nZSIsInNob3VsZFVzZUNoYW5nZUV2ZW50
IiwibWFudWFsRGlzcGF0Y2hDaGFuZ2VFdmVudCIsImFjdGl2ZUVsZW1lbnRJbnN0IiwicnVuRXZl
bnRJbkJhdGNoIiwic3RhcnRXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4Iiwic3RvcFdhdGNoaW5n
Rm9yQ2hhbmdlRXZlbnRJRTgiLCJnZXRJbnN0SWZWYWx1ZUNoYW5nZWQiLCJ1cGRhdGVkIiwiQ2hh
bmdlRXZlbnRQbHVnaW4iLCJfYWxsb3dTaW11bGF0ZWRQYXNzVGhyb3VnaCIsImdldFRhcmdldElu
c3RGb3JDaGFuZ2VFdmVudCIsImhhbmRsZUV2ZW50c0ZvckNoYW5nZUV2ZW50SUU4Iiwic3RhcnRX
YXRjaGluZ0ZvclZhbHVlQ2hhbmdlIiwiaGFuZGxlUHJvcGVydHlDaGFuZ2UiLCJzdG9wV2F0Y2hp
bmdGb3JWYWx1ZUNoYW5nZSIsImhhbmRsZUV2ZW50c0ZvcklucHV0RXZlbnRQb2x5ZmlsbCIsImdl
dFRhcmdldEluc3RGb3JJbnB1dEV2ZW50UG9seWZpbGwiLCJzaG91bGRVc2VDbGlja0V2ZW50Iiwi
Z2V0VGFyZ2V0SW5zdEZvckNsaWNrRXZlbnQiLCJnZXRUYXJnZXRJbnN0Rm9ySW5wdXRPckNoYW5n
ZUV2ZW50IiwiaGFuZGxlQ29udHJvbGxlZElucHV0Qmx1ciIsImNvbnRyb2xsZWQiLCJkb2VzQ2hh
bmdlRXZlbnRCdWJibGUiLCJpc0lucHV0RXZlbnRTdXBwb3J0ZWQiLCJfaXNJbnB1dEV2ZW50U3Vw
cG9ydGVkIiwiZ2V0VGFyZ2V0SW5zdEZ1bmMiLCJoYW5kbGVFdmVudEZ1bmMiLCJ0YXJnZXROb2Rl
Iiwib2xkQ2hpbGQiLCJuZXdDaGlsZCIsIkRlZmF1bHRFdmVudFBsdWdpbk9yZGVyIiwibW91c2VF
bnRlciIsIm1vdXNlTGVhdmUiLCJFbnRlckxlYXZlRXZlbnRQbHVnaW4iLCJ3aW4iLCJyZWxhdGVk
IiwidG9Ob2RlIiwiX3Jvb3QiLCJfc3RhcnRUZXh0IiwiX2ZhbGxiYWNrVGV4dCIsInN0YXJ0VmFs
dWUiLCJzdGFydExlbmd0aCIsImVuZFZhbHVlIiwiZW5kTGVuZ3RoIiwibWluRW5kIiwic2xpY2VU
YWlsIiwiSFRNTERPTVByb3BlcnR5Q29uZmlnIiwiYWNjZXB0IiwiYWNjZXB0Q2hhcnNldCIsImFj
Y2Vzc0tleSIsImFsbG93RnVsbFNjcmVlbiIsImFsbG93VHJhbnNwYXJlbmN5IiwiYWx0IiwiYXMi
LCJhc3luYyIsImF1dG9Db21wbGV0ZSIsImF1dG9QbGF5IiwiY2VsbFBhZGRpbmciLCJjZWxsU3Bh
Y2luZyIsImNoYXJTZXQiLCJjaGFsbGVuZ2UiLCJjaXRlIiwiY2xhc3NJRCIsImNvbHMiLCJjb2xT
cGFuIiwiY29udGV4dE1lbnUiLCJjb250cm9scyIsImNvb3JkcyIsImNyb3NzT3JpZ2luIiwiZGF0
ZVRpbWUiLCJkZWZlciIsImRvd25sb2FkIiwiZHJhZ2dhYmxlIiwiZW5jVHlwZSIsImZvcm0iLCJm
b3JtQWN0aW9uIiwiZm9ybUVuY1R5cGUiLCJmb3JtTWV0aG9kIiwiZm9ybU5vVmFsaWRhdGUiLCJm
b3JtVGFyZ2V0IiwiZnJhbWVCb3JkZXIiLCJoZWFkZXJzIiwiaGVpZ2h0IiwiaGlnaCIsImhyZWYi
LCJocmVmTGFuZyIsImh0bWxGb3IiLCJodHRwRXF1aXYiLCJpY29uIiwiaW5wdXRNb2RlIiwiaW50
ZWdyaXR5Iiwia2V5UGFyYW1zIiwia2V5VHlwZSIsImtpbmQiLCJsYWJlbCIsImxhbmciLCJsaXN0
IiwibG9vcCIsImxvdyIsIm1hbmlmZXN0IiwibWFyZ2luSGVpZ2h0IiwibWFyZ2luV2lkdGgiLCJt
YXgiLCJtYXhMZW5ndGgiLCJtZWRpYSIsIm1lZGlhR3JvdXAiLCJtaW5MZW5ndGgiLCJtdXRlZCIs
Im5vbmNlIiwibm9WYWxpZGF0ZSIsIm9wZW4iLCJvcHRpbXVtIiwicGF0dGVybiIsInBsYXlzSW5s
aW5lIiwicG9zdGVyIiwicHJlbG9hZCIsInByb2ZpbGUiLCJyYWRpb0dyb3VwIiwicmVmZXJyZXJQ
b2xpY3kiLCJyZWwiLCJyZXF1aXJlZCIsInJldmVyc2VkIiwicm9sZSIsInJvd3MiLCJyb3dTcGFu
Iiwic2FuZGJveCIsInNjb3BlZCIsInNjcm9sbGluZyIsInNlYW1sZXNzIiwic2l6ZSIsInNpemVz
Iiwic3BhbiIsInNwZWxsQ2hlY2siLCJzcmMiLCJzcmNEb2MiLCJzcmNMYW5nIiwic3JjU2V0Iiwi
c3VtbWFyeSIsInRhYkluZGV4IiwidXNlTWFwIiwid2lkdGgiLCJ3bW9kZSIsImFib3V0IiwiZGF0
YXR5cGUiLCJpbmxpc3QiLCJyZXNvdXJjZSIsInR5cGVvZiIsInZvY2FiIiwiYXV0b0NhcGl0YWxp
emUiLCJhdXRvQ29ycmVjdCIsImF1dG9TYXZlIiwiaXRlbVByb3AiLCJpdGVtU2NvcGUiLCJpdGVt
VHlwZSIsIml0ZW1JRCIsIml0ZW1SZWYiLCJyZXN1bHRzIiwic2VjdXJpdHkiLCJ1bnNlbGVjdGFi
bGUiLCJ2YWxpZGl0eSIsImJhZElucHV0IiwiaW5zdGFudGlhdGVDaGlsZCIsImNoaWxkSW5zdGFu
Y2VzIiwic2VsZkRlYnVnSUQiLCJrZXlVbmlxdWUiLCJSZWFjdENoaWxkUmVjb25jaWxlciIsImlu
c3RhbnRpYXRlQ2hpbGRyZW4iLCJuZXN0ZWRDaGlsZE5vZGVzIiwidXBkYXRlQ2hpbGRyZW4iLCJw
cmV2Q2hpbGRyZW4iLCJuZXh0Q2hpbGRyZW4iLCJtb3VudEltYWdlcyIsInJlbW92ZWROb2RlcyIs
InByZXZDaGlsZCIsIm5leHRDaGlsZEluc3RhbmNlIiwibmV4dENoaWxkTW91bnRJbWFnZSIsInVu
bW91bnRDaGlsZHJlbiIsInJlbmRlcmVkQ2hpbGRyZW4iLCJyZW5kZXJlZENoaWxkIiwiUmVhY3RE
T01JRE9wZXJhdGlvbnMiLCJSZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudCIsImRhbmdl
cm91c2x5UHJvY2Vzc0NoaWxkcmVuVXBkYXRlcyIsIlN0YXRlbGVzc0NvbXBvbmVudCIsIndhcm5J
ZkludmFsaWRFbGVtZW50Iiwic2hvdWxkQ29uc3RydWN0IiwiaXNQdXJlQ29tcG9uZW50IiwiQ29t
cG9zaXRlVHlwZXMiLCJJbXB1cmVDbGFzcyIsIlB1cmVDbGFzcyIsIlN0YXRlbGVzc0Z1bmN0aW9u
YWwiLCJuZXh0TW91bnRJRCIsIl9jb21wb3NpdGVUeXBlIiwiX2NhbGxlZENvbXBvbmVudFdpbGxV
bm1vdW50IiwicmVuZGVyZWRFbGVtZW50IiwicHVibGljUHJvcHMiLCJwdWJsaWNDb250ZXh0Iiwi
X3Byb2Nlc3NDb250ZXh0IiwidXBkYXRlUXVldWUiLCJnZXRVcGRhdGVRdWV1ZSIsImRvQ29uc3Ry
dWN0IiwiX2NvbnN0cnVjdENvbXBvbmVudCIsInVuc3RhYmxlX2hhbmRsZUVycm9yIiwicGVyZm9y
bUluaXRpYWxNb3VudFdpdGhFcnJvckhhbmRsaW5nIiwicGVyZm9ybUluaXRpYWxNb3VudCIsIl9j
b25zdHJ1Y3RDb21wb25lbnRXaXRob3V0T3duZXIiLCJfcHJvY2Vzc1BlbmRpbmdTdGF0ZSIsImRl
YnVnSUQiLCJfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50IiwiX21hc2tDb250ZXh0IiwibWFza2Vk
Q29udGV4dCIsImNvbnRleHROYW1lIiwiY3VycmVudENvbnRleHQiLCJjaGlsZENvbnRleHQiLCJf
Y2hlY2tDb250ZXh0VHlwZXMiLCJwcmV2Q29udGV4dCIsInByZXZQYXJlbnRFbGVtZW50IiwibmV4
dFBhcmVudEVsZW1lbnQiLCJwcmV2VW5tYXNrZWRDb250ZXh0IiwibmV4dFVubWFza2VkQ29udGV4
dCIsIndpbGxSZWNlaXZlIiwicHJldlByb3BzIiwibmV4dFN0YXRlIiwic2hvdWxkVXBkYXRlIiwi
X3BlcmZvcm1Db21wb25lbnRVcGRhdGUiLCJwYXJ0aWFsIiwidW5tYXNrZWRDb250ZXh0IiwicHJl
dlN0YXRlIiwiaGFzQ29tcG9uZW50RGlkVXBkYXRlIiwiX3VwZGF0ZVJlbmRlcmVkQ29tcG9uZW50
IiwicHJldkNvbXBvbmVudEluc3RhbmNlIiwicHJldlJlbmRlcmVkRWxlbWVudCIsIm5leHRSZW5k
ZXJlZEVsZW1lbnQiLCJvbGRIb3N0Tm9kZSIsIm5leHRNYXJrdXAiLCJfcmVwbGFjZU5vZGVXaXRo
TWFya3VwIiwicHJldkluc3RhbmNlIiwiX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhvdXRP
d25lck9yQ29udGV4dCIsImF0dGFjaFJlZiIsInB1YmxpY0NvbXBvbmVudEluc3RhbmNlIiwiZGV0
YWNoUmVmIiwiUmVhY3REZWZhdWx0SW5qZWN0aW9uIiwiZmluZERPTU5vZGUiLCJpbmplY3QiLCJS
ZWFjdERPTSIsInVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzIiwidW5zdGFibGVfcmVuZGVyU3VidHJl
ZUludG9Db250YWluZXIiLCJfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18iLCJNb3VudCIs
IlJlY29uY2lsZXIiLCJhc3NlcnRWYWxpZFByb3BzIiwidm9pZEVsZW1lbnRUYWdzIiwiX3RhZyIs
ImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiSFRNTCIsImVucXVldWVQdXRMaXN0ZW5lciIsIlJl
YWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24iLCJjb250YWluZXJJbmZvIiwiaXNEb2N1bWVu
dEZyYWdtZW50IiwiX25vZGUiLCJET0NfRlJBR01FTlRfVFlQRSIsIl9vd25lckRvY3VtZW50Iiwi
bGlzdGVuZXJUb1B1dCIsImlucHV0UG9zdE1vdW50IiwiUmVhY3RET01JbnB1dCIsInBvc3RNb3Vu
dFdyYXBwZXIiLCJ0ZXh0YXJlYVBvc3RNb3VudCIsIlJlYWN0RE9NVGV4dGFyZWEiLCJvcHRpb25Q
b3N0TW91bnQiLCJSZWFjdERPTU9wdGlvbiIsInRyYWNrSW5wdXRWYWx1ZSIsInRyYXBCdWJibGVk
RXZlbnRzTG9jYWwiLCJnZXROb2RlIiwibWVkaWFFdmVudHMiLCJwb3N0VXBkYXRlU2VsZWN0V3Jh
cHBlciIsInZhbGlkYXRlRGFuZ2Vyb3VzVGFnIiwidmFsaWRhdGVkVGFnQ2FjaGUiLCJWQUxJRF9U
QUdfUkVHRVgiLCJpc0N1c3RvbUNvbXBvbmVudCIsIlJlYWN0RE9NQ29tcG9uZW50IiwiX25hbWVz
cGFjZVVSSSIsIl9wcmV2aW91c1N0eWxlIiwiX3ByZXZpb3VzU3R5bGVDb3B5IiwiUmVhY3RNdWx0
aUNoaWxkIiwiQ09OVEVOVF9UWVBFUyIsIlNUWUxFIiwic3VwcHJlc3NDb250ZW50RWRpdGFibGVX
YXJuaW5nIiwib21pdHRlZENsb3NlVGFncyIsImJhc2UiLCJiciIsImVtYmVkIiwiaHIiLCJpbWci
LCJrZXlnZW4iLCJsaW5rIiwibWV0YSIsIndiciIsIm5ld2xpbmVFYXRpbmdUYWdzIiwibGlzdGlu
ZyIsInByZSIsInRleHRhcmVhIiwibWVudWl0ZW0iLCJnbG9iYWxJZENvdW50ZXIiLCJNaXhpbiIs
Il9pZENvdW50ZXIiLCJwYXJlbnRUYWciLCJtb3VudEltYWdlIiwiZWwiLCJkaXYiLCJjcmVhdGVF
bGVtZW50TlMiLCJfdXBkYXRlRE9NUHJvcGVydGllcyIsImxhenlUcmVlIiwiX2NyZWF0ZUluaXRp
YWxDaGlsZHJlbiIsInRhZ09wZW4iLCJfY3JlYXRlT3BlblRhZ01hcmt1cEFuZFB1dExpc3RlbmVy
cyIsInRhZ0NvbnRlbnQiLCJfY3JlYXRlQ29udGVudE1hcmt1cCIsInByb3BLZXkiLCJyZW5kZXJU
b1N0YXRpY01hcmt1cCIsIl9faHRtbCIsImNvbnRlbnRUb1VzZSIsImNoaWxkcmVuVG9Vc2UiLCJt
b3VudENoaWxkcmVuIiwibGFzdFByb3BzIiwiX3VwZGF0ZURPTUNoaWxkcmVuIiwidXBkYXRlV3Jh
cHBlciIsInN0eWxlVXBkYXRlcyIsImxhc3RTdHlsZSIsIm5leHRQcm9wIiwibGFzdFByb3AiLCJs
YXN0Q29udGVudCIsIm5leHRDb250ZW50IiwibGFzdEh0bWwiLCJuZXh0SHRtbCIsImxhc3RDaGls
ZHJlbiIsImxhc3RIYXNDb250ZW50T3JIdG1sIiwibmV4dEhhc0NvbnRlbnRPckh0bWwiLCJ1cGRh
dGVUZXh0Q29udGVudCIsInVwZGF0ZU1hcmt1cCIsInRvcExldmVsV3JhcHBlciIsIlJlYWN0RE9N
RW1wdHlDb21wb25lbnQiLCJkb21JRCIsImNyZWF0ZUNvbW1lbnQiLCJ1c2VGaWJlciIsImZvcmNl
VXBkYXRlSWZNb3VudGVkIiwiaXNDb250cm9sbGVkIiwidXNlc0NoZWNrZWQiLCJyb290Tm9kZSIs
InF1ZXJ5Um9vdCIsImdyb3VwIiwicXVlcnlTZWxlY3RvckFsbCIsIm90aGVyTm9kZSIsIm90aGVy
SW5zdGFuY2UiLCJob3N0UHJvcHMiLCJkZWZhdWx0Q2hlY2tlZCIsImluaXRpYWxDaGVja2VkIiwi
dmFsdWVBc051bWJlciIsInBhcnNlRmxvYXQiLCJmbGF0dGVuQ2hpbGRyZW4iLCJkaWRXYXJuSW52
YWxpZE9wdGlvbkNoaWxkcmVuIiwic2VsZWN0VmFsdWUiLCJzZWxlY3RQYXJlbnQiLCJpc0NvbGxh
cHNlZCIsImFuY2hvck5vZGUiLCJhbmNob3JPZmZzZXQiLCJmb2N1c09mZnNldCIsImdldElFT2Zm
c2V0cyIsInNlbGVjdGVkUmFuZ2UiLCJzZWxlY3RlZExlbmd0aCIsImZyb21TdGFydCIsImR1cGxp
Y2F0ZSIsIm1vdmVUb0VsZW1lbnRUZXh0Iiwic2V0RW5kUG9pbnQiLCJzdGFydE9mZnNldCIsImVu
ZE9mZnNldCIsImdldE1vZGVybk9mZnNldHMiLCJyYW5nZUNvdW50IiwiY3VycmVudFJhbmdlIiwi
Z2V0UmFuZ2VBdCIsInN0YXJ0Q29udGFpbmVyIiwiZW5kQ29udGFpbmVyIiwiaXNTZWxlY3Rpb25D
b2xsYXBzZWQiLCJyYW5nZUxlbmd0aCIsInRlbXBSYW5nZSIsImNsb25lUmFuZ2UiLCJzZWxlY3RO
b2RlQ29udGVudHMiLCJzZXRFbmQiLCJpc1RlbXBSYW5nZUNvbGxhcHNlZCIsImRldGVjdGlvblJh
bmdlIiwic2V0U3RhcnQiLCJpc0JhY2t3YXJkIiwiY29sbGFwc2VkIiwic2V0SUVPZmZzZXRzIiwi
c2V0TW9kZXJuT2Zmc2V0cyIsImV4dGVuZCIsInRlbXAiLCJzdGFydE1hcmtlciIsImdldE5vZGVG
b3JDaGFyYWN0ZXJPZmZzZXQiLCJlbmRNYXJrZXIiLCJvZmZzZXQiLCJyZW1vdmVBbGxSYW5nZXMi
LCJhZGRSYW5nZSIsInVzZUlFT2Zmc2V0cyIsIlJlYWN0RE9NVGV4dENvbXBvbmVudCIsIl9zdHJp
bmdUZXh0IiwiX2Nsb3NpbmdDb21tZW50IiwiX2NvbW1lbnROb2RlcyIsIm9wZW5pbmdWYWx1ZSIs
ImNsb3NpbmdWYWx1ZSIsImNyZWF0ZURvY3VtZW50RnJhZ21lbnQiLCJlc2NhcGVkVGV4dCIsIm5l
eHRUZXh0IiwibmV4dFN0cmluZ1RleHQiLCJjb21tZW50Tm9kZXMiLCJob3N0Tm9kZSIsImluc3RB
IiwiaW5zdEIiLCJkZXB0aEEiLCJ0ZW1wQSIsImRlcHRoQiIsInRlbXBCIiwiZGVwdGgiLCJwYXRo
IiwiY29tbW9uIiwicGF0aEZyb20iLCJwYXRoVG8iLCJSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0
ZWd5VHJhbnNhY3Rpb24iLCJSRVNFVF9CQVRDSEVEX1VQREFURVMiLCJSZWFjdERlZmF1bHRCYXRj
aGluZ1N0cmF0ZWd5IiwiRkxVU0hfQkFUQ0hFRF9VUERBVEVTIiwiYWxyZWFkeUJhdGNoaW5nVXBk
YXRlcyIsImFscmVhZHlJbmplY3RlZCIsIlJlYWN0SW5qZWN0aW9uIiwiRXZlbnRFbWl0dGVyIiwi
UmVhY3RET01UcmVlVHJhdmVyc2FsIiwiU2ltcGxlRXZlbnRQbHVnaW4iLCJTZWxlY3RFdmVudFBs
dWdpbiIsIkhvc3RDb21wb25lbnQiLCJTVkdET01Qcm9wZXJ0eUNvbmZpZyIsIkVtcHR5Q29tcG9u
ZW50IiwiVXBkYXRlcyIsInJ1bkV2ZW50UXVldWVJbkJhdGNoIiwiZmluZFBhcmVudCIsIlRvcExl
dmVsQ2FsbGJhY2tCb29rS2VlcGluZyIsImFuY2VzdG9ycyIsImhhbmRsZVRvcExldmVsSW1wbCIs
ImJvb2tLZWVwaW5nIiwiYW5jZXN0b3IiLCJfaGFuZGxlVG9wTGV2ZWwiLCJzY3JvbGxWYWx1ZU1v
bml0b3IiLCJ0d29Bcmd1bWVudFBvb2xlciIsIl9lbmFibGVkIiwiZGlzcGF0Y2hFdmVudCIsImFk
bGVyMzIiLCJUQUdfRU5EIiwiQ09NTUVOVF9TVEFSVCIsImFkZENoZWNrc3VtVG9NYXJrdXAiLCJl
eGlzdGluZ0NoZWNrc3VtIiwibWFya3VwQ2hlY2tzdW0iLCJtYWtlSW5zZXJ0TWFya3VwIiwidG9J
bmRleCIsImZyb21JbmRleCIsIm1ha2VNb3ZlIiwibWFrZVJlbW92ZSIsIm1ha2VTZXRNYXJrdXAi
LCJtYWtlVGV4dENvbnRlbnQiLCJwcm9jZXNzUXVldWUiLCJfcmVjb25jaWxlckluc3RhbnRpYXRl
Q2hpbGRyZW4iLCJuZXN0ZWRDaGlsZHJlbiIsIl9yZWNvbmNpbGVyVXBkYXRlQ2hpbGRyZW4iLCJu
ZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cyIsIl91cGRhdGVDaGlsZHJlbiIsIm5leHRJbmRleCIs
Im5leHRNb3VudEluZGV4IiwibGFzdFBsYWNlZE5vZGUiLCJfbW91bnRDaGlsZEF0SW5kZXgiLCJf
dW5tb3VudENoaWxkIiwiY3JlYXRlQ2hpbGQiLCJpc1ZhbGlkT3duZXIiLCJSZWFjdE93bmVyIiwi
YWRkQ29tcG9uZW50QXNSZWZUbyIsInJlbW92ZUNvbXBvbmVudEFzUmVmRnJvbSIsIm93bmVyUHVi
bGljSW5zdGFuY2UiLCJyZWFjdE1vdW50UmVhZHkiLCJTRUxFQ1RJT05fUkVTVE9SQVRJT04iLCJF
VkVOVF9TVVBQUkVTU0lPTiIsImN1cnJlbnRseUVuYWJsZWQiLCJwcmV2aW91c2x5RW5hYmxlZCIs
Ik9OX0RPTV9SRUFEWV9RVUVVRUlORyIsInByZXZSZWYiLCJwcmV2T3duZXIiLCJuZXh0UmVmIiwi
bmV4dE93bmVyIiwiUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZSIsIm5vb3BDYWxsYmFja1F1ZXVlIiwi
TlMiLCJ4bGluayIsInhtbCIsIkFUVFJTIiwiYWNjZW50SGVpZ2h0IiwiYWNjdW11bGF0ZSIsImFk
ZGl0aXZlIiwiYWxpZ25tZW50QmFzZWxpbmUiLCJhbGxvd1Jlb3JkZXIiLCJhbHBoYWJldGljIiwi
YW1wbGl0dWRlIiwiYXJhYmljRm9ybSIsImFzY2VudCIsImF0dHJpYnV0ZVR5cGUiLCJhdXRvUmV2
ZXJzZSIsImF6aW11dGgiLCJiYXNlRnJlcXVlbmN5IiwiYmFzZVByb2ZpbGUiLCJiYXNlbGluZVNo
aWZ0IiwiYmJveCIsImJlZ2luIiwiYmlhcyIsImJ5IiwiY2FsY01vZGUiLCJjYXBIZWlnaHQiLCJj
bGlwIiwiY2xpcFBhdGgiLCJjbGlwUnVsZSIsImNsaXBQYXRoVW5pdHMiLCJjb2xvckludGVycG9s
YXRpb24iLCJjb2xvckludGVycG9sYXRpb25GaWx0ZXJzIiwiY29sb3JQcm9maWxlIiwiY29sb3JS
ZW5kZXJpbmciLCJjb250ZW50U2NyaXB0VHlwZSIsImNvbnRlbnRTdHlsZVR5cGUiLCJjdXJzb3Ii
LCJjeCIsImN5IiwiZGVjZWxlcmF0ZSIsImRlc2NlbnQiLCJkaWZmdXNlQ29uc3RhbnQiLCJkaXJl
Y3Rpb24iLCJkaXNwbGF5IiwiZGl2aXNvciIsImRvbWluYW50QmFzZWxpbmUiLCJkdXIiLCJkeCIs
ImR5IiwiZWRnZU1vZGUiLCJlbGV2YXRpb24iLCJlbmFibGVCYWNrZ3JvdW5kIiwiZXhwb25lbnQi
LCJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIiwiZmlsbCIsImZpbGxSdWxlIiwiZmlsdGVyIiwi
ZmlsdGVyUmVzIiwiZmlsdGVyVW5pdHMiLCJmbG9vZENvbG9yIiwiZm9jdXNhYmxlIiwiZm9udFNp
emVBZGp1c3QiLCJmb250U3RyZXRjaCIsImZ4IiwiZnkiLCJnMSIsImcyIiwiZ2x5cGhOYW1lIiwi
Z2x5cGhPcmllbnRhdGlvbkhvcml6b250YWwiLCJnbHlwaE9yaWVudGF0aW9uVmVydGljYWwiLCJn
bHlwaFJlZiIsImdyYWRpZW50VHJhbnNmb3JtIiwiZ3JhZGllbnRVbml0cyIsImhhbmdpbmciLCJo
b3JpekFkdlgiLCJob3Jpek9yaWdpblgiLCJpZGVvZ3JhcGhpYyIsImltYWdlUmVuZGVyaW5nIiwi
aW4iLCJpbjIiLCJpbnRlcmNlcHQiLCJrMSIsImsyIiwiazMiLCJrNCIsImtlcm5lbE1hdHJpeCIs
Imtlcm5lbFVuaXRMZW5ndGgiLCJrZXJuaW5nIiwia2V5UG9pbnRzIiwia2V5U3BsaW5lcyIsImtl
eVRpbWVzIiwibGVuZ3RoQWRqdXN0IiwibGV0dGVyU3BhY2luZyIsImxpZ2h0aW5nQ29sb3IiLCJs
aW1pdGluZ0NvbmVBbmdsZSIsImxvY2FsIiwibWFya2VyRW5kIiwibWFya2VyTWlkIiwibWFya2Vy
U3RhcnQiLCJtYXJrZXJIZWlnaHQiLCJtYXJrZXJVbml0cyIsIm1hcmtlcldpZHRoIiwibWFzayIs
Im1hc2tDb250ZW50VW5pdHMiLCJtYXNrVW5pdHMiLCJtYXRoZW1hdGljYWwiLCJtb2RlIiwibnVt
T2N0YXZlcyIsIm9wZXJhdG9yIiwib3JpZW50Iiwib3JpZW50YXRpb24iLCJvcmlnaW4iLCJvdmVy
ZmxvdyIsIm92ZXJsaW5lUG9zaXRpb24iLCJvdmVybGluZVRoaWNrbmVzcyIsInBhaW50T3JkZXIi
LCJwYW5vc2UxIiwicGF0aExlbmd0aCIsInBhdHRlcm5Db250ZW50VW5pdHMiLCJwYXR0ZXJuVHJh
bnNmb3JtIiwicGF0dGVyblVuaXRzIiwicG9pbnRlckV2ZW50cyIsInBvaW50cyIsInBvaW50c0F0
WCIsInBvaW50c0F0WSIsInBvaW50c0F0WiIsInByZXNlcnZlQWxwaGEiLCJwcmVzZXJ2ZUFzcGVj
dFJhdGlvIiwicHJpbWl0aXZlVW5pdHMiLCJyIiwicmFkaXVzIiwicmVmWCIsInJlZlkiLCJyZW5k
ZXJpbmdJbnRlbnQiLCJyZXBlYXRDb3VudCIsInJlcGVhdER1ciIsInJlcXVpcmVkRXh0ZW5zaW9u
cyIsInJlcXVpcmVkRmVhdHVyZXMiLCJyZXN0YXJ0Iiwicm90YXRlIiwicngiLCJyeSIsInNjYWxl
Iiwic2VlZCIsInNoYXBlUmVuZGVyaW5nIiwic2xvcGUiLCJzcGFjaW5nIiwic3BlY3VsYXJDb25z
dGFudCIsInNwZWN1bGFyRXhwb25lbnQiLCJzcGVlZCIsInNwcmVhZE1ldGhvZCIsInN0ZERldmlh
dGlvbiIsInN0ZW1oIiwic3RlbXYiLCJzdGl0Y2hUaWxlcyIsInN0b3BDb2xvciIsInN0cmlrZXRo
cm91Z2hQb3NpdGlvbiIsInN0cmlrZXRocm91Z2hUaGlja25lc3MiLCJzdHJva2UiLCJzdHJva2VM
aW5lY2FwIiwic3Ryb2tlTGluZWpvaW4iLCJzdXJmYWNlU2NhbGUiLCJzeXN0ZW1MYW5ndWFnZSIs
InRhYmxlVmFsdWVzIiwidGFyZ2V0WCIsInRhcmdldFkiLCJ0ZXh0QW5jaG9yIiwidGV4dERlY29y
YXRpb24iLCJ0ZXh0UmVuZGVyaW5nIiwidGV4dExlbmd0aCIsInUxIiwidTIiLCJ1bmRlcmxpbmVQ
b3NpdGlvbiIsInVuZGVybGluZVRoaWNrbmVzcyIsInVuaWNvZGUiLCJ1bmljb2RlQmlkaSIsInVu
aWNvZGVSYW5nZSIsInVuaXRzUGVyRW0iLCJ2QWxwaGFiZXRpYyIsInZIYW5naW5nIiwidklkZW9n
cmFwaGljIiwidk1hdGhlbWF0aWNhbCIsInZlY3RvckVmZmVjdCIsInZlcnRBZHZZIiwidmVydE9y
aWdpblgiLCJ2ZXJ0T3JpZ2luWSIsInZpZXdCb3giLCJ2aWV3VGFyZ2V0IiwidmlzaWJpbGl0eSIs
IndpZHRocyIsIndvcmRTcGFjaW5nIiwid3JpdGluZ01vZGUiLCJ4SGVpZ2h0IiwieDEiLCJ4MiIs
InhDaGFubmVsU2VsZWN0b3IiLCJ4bGlua0FjdHVhdGUiLCJ4bGlua0FyY3JvbGUiLCJ4bGlua0hy
ZWYiLCJ4bGlua1JvbGUiLCJ4bGlua1Nob3ciLCJ4bGlua1RpdGxlIiwieGxpbmtUeXBlIiwieG1s
QmFzZSIsInhtbG5zIiwieG1sbnNYbGluayIsInhtbExhbmciLCJ4bWxTcGFjZSIsInkxIiwieTIi
LCJ5Q2hhbm5lbFNlbGVjdG9yIiwieiIsInpvb21BbmRQYW4iLCJ0b3AiLCJib3VuZGluZ1RvcCIs
ImxlZnQiLCJib3VuZGluZ0xlZnQiLCJjb25zdHJ1Y3RTZWxlY3RFdmVudCIsIm1vdXNlRG93biIs
ImN1cnJlbnRTZWxlY3Rpb24iLCJsYXN0U2VsZWN0aW9uIiwic2tpcFNlbGVjdGlvbkNoYW5nZUV2
ZW50IiwiaGFzTGlzdGVuZXIiLCJTeW50aGV0aWNBbmltYXRpb25FdmVudCIsIlN5bnRoZXRpY0Ns
aXBib2FyZEV2ZW50IiwiU3ludGhldGljRm9jdXNFdmVudCIsIlN5bnRoZXRpY0tleWJvYXJkRXZl
bnQiLCJTeW50aGV0aWNEcmFnRXZlbnQiLCJTeW50aGV0aWNUb3VjaEV2ZW50IiwiU3ludGhldGlj
VHJhbnNpdGlvbkV2ZW50IiwiU3ludGhldGljV2hlZWxFdmVudCIsInRvcExldmVsRXZlbnRzVG9E
aXNwYXRjaENvbmZpZyIsImNhcGl0YWxpemVkRXZlbnQiLCJvbkV2ZW50IiwidG9wRXZlbnQiLCJv
bkNsaWNrTGlzdGVuZXJzIiwiRXZlbnRDb25zdHJ1Y3RvciIsIkFuaW1hdGlvbkV2ZW50SW50ZXJm
YWNlIiwiYW5pbWF0aW9uTmFtZSIsImVsYXBzZWRUaW1lIiwicHNldWRvRWxlbWVudCIsIkNsaXBi
b2FyZEV2ZW50SW50ZXJmYWNlIiwiY2xpcGJvYXJkRGF0YSIsIkNvbXBvc2l0aW9uRXZlbnRJbnRl
cmZhY2UiLCJEcmFnRXZlbnRJbnRlcmZhY2UiLCJkYXRhVHJhbnNmZXIiLCJGb2N1c0V2ZW50SW50
ZXJmYWNlIiwiSW5wdXRFdmVudEludGVyZmFjZSIsImdldEV2ZW50S2V5IiwiS2V5Ym9hcmRFdmVu
dEludGVyZmFjZSIsInJlcGVhdCIsImxvY2FsZSIsIlRvdWNoRXZlbnRJbnRlcmZhY2UiLCJ0b3Vj
aGVzIiwidGFyZ2V0VG91Y2hlcyIsImNoYW5nZWRUb3VjaGVzIiwiVHJhbnNpdGlvbkV2ZW50SW50
ZXJmYWNlIiwiV2hlZWxFdmVudEludGVyZmFjZSIsImRlbHRhWCIsIndoZWVsRGVsdGFYIiwiZGVs
dGFZIiwid2hlZWxEZWx0YVkiLCJ3aGVlbERlbHRhIiwiZGVsdGFaIiwiZGVsdGFNb2RlIiwibCIs
Ik1PRCIsImlzRW1wdHkiLCJpc05vbk51bWVyaWMiLCJjb21wb25lbnRPckVsZW1lbnQiLCJmbGF0
dGVuU2luZ2xlQ2hpbGRJbnRvQ29udGV4dCIsIm5vcm1hbGl6ZUtleSIsInRyYW5zbGF0ZVRvS2V5
IiwiRXNjIiwiU3BhY2ViYXIiLCJMZWZ0IiwiVXAiLCJSaWdodCIsIkRvd24iLCJEZWwiLCJXaW4i
LCJNZW51IiwiQXBwcyIsIlNjcm9sbCIsIk1velByaW50YWJsZUtleSIsIjgiLCI5IiwiMTIiLCIx
MyIsIjE2IiwiMTciLCIxOCIsIjE5IiwiMjAiLCIyNyIsIjMyIiwiMzMiLCIzNCIsIjM1IiwiMzYi
LCIzNyIsIjM4IiwiMzkiLCI0MCIsIjQ1IiwiNDYiLCIxMTIiLCIxMTMiLCIxMTQiLCIxMTUiLCIx
MTYiLCIxMTciLCIxMTgiLCIxMTkiLCIxMjAiLCIxMjEiLCIxMjIiLCIxMjMiLCIxNDQiLCIxNDUi
LCIyMjQiLCJnZXRMZWFmTm9kZSIsImdldFNpYmxpbmdOb2RlIiwibm9kZVN0YXJ0Iiwibm9kZUVu
ZCIsIm1ha2VQcmVmaXhNYXAiLCJzdHlsZVByb3AiLCJwcmVmaXhlZEV2ZW50TmFtZXMiLCJ2ZW5k
b3JQcmVmaXhlcyIsInByZWZpeE1hcCIsImFuaW1hdGlvbmVuZCIsImFuaW1hdGlvbml0ZXJhdGlv
biIsImFuaW1hdGlvbnN0YXJ0IiwidHJhbnNpdGlvbmVuZCIsImFuaW1hdGlvbiIsInRyYW5zaXRp
b24iLCJfUHJvdmlkZXIkY2hpbGRDb250ZXgiLCJzdWJLZXkiLCJmYWN0b3JpZXMiLCJzdHJpY3RF
cXVhbCIsImNyZWF0ZUNvbm5lY3QiLCJfcmVmJGNvbm5lY3RIT0MiLCJjb25uZWN0SE9DIiwiX3Jl
ZiRtYXBTdGF0ZVRvUHJvcHNGIiwibWFwU3RhdGVUb1Byb3BzRmFjdG9yaWVzIiwiX21hcFN0YXRl
VG9Qcm9wczIiLCJfcmVmJG1hcERpc3BhdGNoVG9Qcm8iLCJtYXBEaXNwYXRjaFRvUHJvcHNGYWN0
b3JpZXMiLCJfbWFwRGlzcGF0Y2hUb1Byb3BzMiIsIl9yZWYkbWVyZ2VQcm9wc0ZhY3RvciIsIm1l
cmdlUHJvcHNGYWN0b3JpZXMiLCJfbWVyZ2VQcm9wczIiLCJfcmVmJHNlbGVjdG9yRmFjdG9yeSIs
Il9zZWxlY3RvckZhY3RvcnkyIiwibWFwU3RhdGVUb1Byb3BzIiwibWFwRGlzcGF0Y2hUb1Byb3Bz
IiwibWVyZ2VQcm9wcyIsIl9yZWYyJHB1cmUiLCJwdXJlIiwiX3JlZjIkYXJlU3RhdGVzRXF1YWwi
LCJhcmVTdGF0ZXNFcXVhbCIsIl9yZWYyJGFyZU93blByb3BzRXF1YSIsImFyZU93blByb3BzRXF1
YWwiLCJfc2hhbGxvd0VxdWFsMiIsIl9yZWYyJGFyZVN0YXRlUHJvcHNFcSIsImFyZVN0YXRlUHJv
cHNFcXVhbCIsIl9yZWYyJGFyZU1lcmdlZFByb3BzRSIsImFyZU1lcmdlZFByb3BzRXF1YWwiLCJl
eHRyYU9wdGlvbnMiLCJpbml0TWFwU3RhdGVUb1Byb3BzIiwiaW5pdE1hcERpc3BhdGNoVG9Qcm9w
cyIsImluaXRNZXJnZVByb3BzIiwiX3NoYWxsb3dFcXVhbCIsIl9tYXBEaXNwYXRjaFRvUHJvcHMi
LCJfbWFwU3RhdGVUb1Byb3BzIiwiX21lcmdlUHJvcHMiLCJfc2VsZWN0b3JGYWN0b3J5Iiwid2hl
bk1hcERpc3BhdGNoVG9Qcm9wc0lzRnVuY3Rpb24iLCJfd3JhcE1hcFRvUHJvcHMiLCJ3aGVuTWFw
RGlzcGF0Y2hUb1Byb3BzSXNNaXNzaW5nIiwid2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lzT2JqZWN0
IiwiX3JlZHV4Iiwid2hlbk1hcFN0YXRlVG9Qcm9wc0lzRnVuY3Rpb24iLCJ3aGVuTWFwU3RhdGVU
b1Byb3BzSXNNaXNzaW5nIiwiZGVmYXVsdE1lcmdlUHJvcHMiLCJzdGF0ZVByb3BzIiwiZGlzcGF0
Y2hQcm9wcyIsIndyYXBNZXJnZVByb3BzRnVuYyIsImhhc1J1bk9uY2UiLCJtZXJnZWRQcm9wcyIs
Im5leHRNZXJnZWRQcm9wcyIsIndoZW5NZXJnZVByb3BzSXNGdW5jdGlvbiIsIndoZW5NZXJnZVBy
b3BzSXNPbWl0dGVkIiwiaW1wdXJlRmluYWxQcm9wc1NlbGVjdG9yRmFjdG9yeSIsInB1cmVGaW5h
bFByb3BzU2VsZWN0b3JGYWN0b3J5IiwiaGFuZGxlRmlyc3RDYWxsIiwiZmlyc3RTdGF0ZSIsImZp
cnN0T3duUHJvcHMiLCJoYXNSdW5BdExlYXN0T25jZSIsImhhbmRsZU5ld1Byb3BzQW5kTmV3U3Rh
dGUiLCJoYW5kbGVOZXdQcm9wcyIsImhhbmRsZU5ld1N0YXRlIiwibmV4dFN0YXRlUHJvcHMiLCJz
dGF0ZVByb3BzQ2hhbmdlZCIsImhhbmRsZVN1YnNlcXVlbnRDYWxscyIsIm5leHRPd25Qcm9wcyIs
InByb3BzQ2hhbmdlZCIsInN0YXRlQ2hhbmdlZCIsImZpbmFsUHJvcHNTZWxlY3RvckZhY3Rvcnki
LCJfdmVyaWZ5U3Vic2VsZWN0b3JzIiwidmVyaWZ5IiwidmVyaWZ5U3Vic2VsZWN0b3JzIiwiY3Jl
YXRlTGlzdGVuZXJDb2xsZWN0aW9uIiwiY2xlYXIiLCJDTEVBUkVEIiwibm90aWZ5IiwibnVsbExp
c3RlbmVycyIsIlN1YnNjcmlwdGlvbiIsImFkZE5lc3RlZFN1YiIsImVuYWJsZSIsInJhd0FzYXAi
LCJ0YXNrIiwicmVxdWVzdEZsdXNoIiwiZmx1c2hpbmciLCJmbHVzaCIsImN1cnJlbnRJbmRleCIs
ImNhcGFjaXR5Iiwic2NhbiIsIm5ld0xlbmd0aCIsIm1ha2VSZXF1ZXN0Q2FsbEZyb21NdXRhdGlv
bk9ic2VydmVyIiwidG9nZ2xlIiwiQnJvd3Nlck11dGF0aW9uT2JzZXJ2ZXIiLCJvYnNlcnZlIiwi
Y2hhcmFjdGVyRGF0YSIsIm1ha2VSZXF1ZXN0Q2FsbEZyb21UaW1lciIsImhhbmRsZVRpbWVyIiwi
dGltZW91dEhhbmRsZSIsImNsZWFySW50ZXJ2YWwiLCJpbnRlcnZhbEhhbmRsZSIsInNldEludGVy
dmFsIiwiTXV0YXRpb25PYnNlcnZlciIsIldlYktpdE11dGF0aW9uT2JzZXJ2ZXIiLCJfaW50ZXJv
cFJlcXVpcmVXaWxkY2FyZCIsIm5ld09iaiIsImNsZWFyQ29tcGxldGVkIiwiY29tcGxldGVBbGwi
LCJjb21wbGV0ZVRvZG8iLCJlZGl0VG9kbyIsImRlbGV0ZVRvZG8iLCJhZGRUb2RvIiwiX0FjdGlv
blR5cGVzIiwidHlwZXMiLCJfZGVmaW5lUHJvcGVydHkiLCJfRklMVEVSX1RJVExFUyIsIl9Ub2Rv
RmlsdGVycyIsIkZJTFRFUl9USVRMRVMiLCJGb290ZXIiLCJhY3RpdmVDb3VudCIsIml0ZW1Xb3Jk
IiwiX3Byb3BzIiwic2VsZWN0ZWRGaWx0ZXIiLCJvblNob3ciLCJvbkNsaWNrIiwiX3Byb3BzMiIs
ImNvbXBsZXRlZENvdW50Iiwib25DbGVhckNvbXBsZXRlZCIsIl90aGlzMiIsInJlbmRlclRvZG9D
b3VudCIsInJlbmRlckZpbHRlckxpbmsiLCJyZW5kZXJDbGVhckJ1dHRvbiIsIl9Ub2RvVGV4dElu
cHV0IiwiX1RvZG9UZXh0SW5wdXQyIiwiSGVhZGVyIiwiaGFuZGxlU2F2ZSIsIl9UT0RPX0ZJTFRF
UlMiLCJfVG9kb0l0ZW0iLCJfVG9kb0l0ZW0yIiwiX0Zvb3RlciIsIl9Gb290ZXIyIiwiVE9ET19G
SUxURVJTIiwidG9kbyIsImNvbXBsZXRlZCIsIk1haW5TZWN0aW9uIiwiaGFuZGxlQ2xlYXJDb21w
bGV0ZWQiLCJhY3Rpb25zIiwiaGFuZGxlU2hvdyIsInRvZG9zIiwiZmlsdGVyZWRUb2RvcyIsInJl
bmRlclRvZ2dsZUFsbCIsInJlbmRlckZvb3RlciIsIlRvZG9JdGVtIiwiaGFuZGxlRG91YmxlQ2xp
Y2siLCJvbkRvdWJsZUNsaWNrIiwiX3JlYWN0UmVkdXgiLCJfSGVhZGVyIiwiX0hlYWRlcjIiLCJf
TWFpblNlY3Rpb24iLCJfTWFpblNlY3Rpb24yIiwiX2FjdGlvbnMiLCJUb2RvQWN0aW9ucyIsIkFw
cCIsIl9yZWFjdERvbSIsIl9BcHAiLCJfQXBwMiIsIl9yZWR1Y2VycyIsIl9yZWR1Y2VyczIiLCJn
ZXRFbGVtZW50QnlJZCIsIl90b2RvcyIsIl90b2RvczIiLCJyb290UmVkdWNlciIsIl90b0NvbnN1
bWFibGVBcnJheSIsImFycjIiLCJ2IiwibWF4SWQiLCJhcmVBbGxNYXJrZWQiLCJfdHlwZW9mIiwi
dmFsdWVQcm9taXNlIiwiVFJVRSIsIkZBTFNFIiwiTlVMTCIsIlVOREVGSU5FRCIsIlpFUk8iLCJF
TVBUWVNUUklORyIsImFsbCIsInJlbWFpbmluZyIsInJhY2UiLCJkaXNhYmxlIiwib25VbmhhbmRs
ZWQiLCJhbGxSZWplY3Rpb25zIiwibWF0Y2hXaGl0ZWxpc3QiLCJyZWplY3Rpb25zIiwid2hpdGVs
aXN0IiwiREVGQVVMVF9XSElURUxJU1QiLCJkaXNwbGF5SWQiLCJsb2dnZWQiLCJsb2dFcnJvciIs
Im9uSGFuZGxlZCIsIndhcm4iLCJfNzIiLCJlcnJTdHIiLCJsaW5lIiwic29tZSIsImNscyIsIlJh
bmdlRXJyb3IiLCJ3ZWJwYWNrUG9seWZpbGwiLCJkZXByZWNhdGUiLCJwYXRocyIsIm5vcm1hbGl6
ZU5hbWUiLCJub3JtYWxpemVWYWx1ZSIsIml0ZXJhdG9yRm9yIiwiaXRlbXMiLCJzaGlmdCIsInN1
cHBvcnQiLCJpdGVyYWJsZSIsIkhlYWRlcnMiLCJhcHBlbmQiLCJjb25zdW1lZCIsImJvZHlVc2Vk
IiwiZmlsZVJlYWRlclJlYWR5IiwicmVhZGVyIiwib25sb2FkIiwib25lcnJvciIsInJlYWRCbG9i
QXNBcnJheUJ1ZmZlciIsImJsb2IiLCJGaWxlUmVhZGVyIiwicmVhZEFzQXJyYXlCdWZmZXIiLCJy
ZWFkQmxvYkFzVGV4dCIsInJlYWRBc1RleHQiLCJCb2R5IiwiX2luaXRCb2R5IiwiX2JvZHlJbml0
IiwiX2JvZHlUZXh0IiwiQmxvYiIsImlzUHJvdG90eXBlT2YiLCJfYm9keUJsb2IiLCJmb3JtRGF0
YSIsIkZvcm1EYXRhIiwiX2JvZHlGb3JtRGF0YSIsInNlYXJjaFBhcmFtcyIsIlVSTFNlYXJjaFBh
cmFtcyIsImFycmF5QnVmZmVyIiwiQXJyYXlCdWZmZXIiLCJyZWplY3RlZCIsImRlY29kZSIsImpz
b24iLCJwYXJzZSIsIm5vcm1hbGl6ZU1ldGhvZCIsInVwY2FzZWQiLCJtZXRob2RzIiwiUmVxdWVz
dCIsImNyZWRlbnRpYWxzIiwicmVmZXJyZXIiLCJieXRlcyIsImRlY29kZVVSSUNvbXBvbmVudCIs
InhociIsImhlYWQiLCJnZXRBbGxSZXNwb25zZUhlYWRlcnMiLCJoZWFkZXIiLCJSZXNwb25zZSIs
ImJvZHlJbml0Iiwic3RhdHVzIiwib2siLCJzdGF0dXNUZXh0IiwiZmV0Y2giLCJnZXRBbGwiLCJ0
aGlzQXJnIiwiY2xvbmUiLCJyZXNwb25zZSIsInJlZGlyZWN0U3RhdHVzZXMiLCJyZWRpcmVjdCIs
ImluaXQiLCJyZXNwb25zZVVSTCIsImdldFJlc3BvbnNlSGVhZGVyIiwicmVxdWVzdCIsIlhNTEh0
dHBSZXF1ZXN0IiwicmVzcG9uc2VUZXh0Iiwib250aW1lb3V0Iiwid2l0aENyZWRlbnRpYWxzIiwi
cmVzcG9uc2VUeXBlIiwic2V0UmVxdWVzdEhlYWRlciIsInNlbmQiLCJwb2x5ZmlsbCIsImVzY2Fw
ZVVzZXJQcm92aWRlZEtleSIsInVzZXJQcm92aWRlZEtleUVzY2FwZVJlZ2V4IiwiRm9yRWFjaEJv
b2tLZWVwaW5nIiwiZm9yRWFjaEZ1bmN0aW9uIiwiZm9yRWFjaENvbnRleHQiLCJmb3JFYWNoU2lu
Z2xlQ2hpbGQiLCJmb3JFYWNoQ2hpbGRyZW4iLCJmb3JFYWNoRnVuYyIsIk1hcEJvb2tLZWVwaW5n
IiwibWFwUmVzdWx0Iiwia2V5UHJlZml4IiwibWFwRnVuY3Rpb24iLCJtYXBDb250ZXh0IiwibWFw
U2luZ2xlQ2hpbGRJbnRvQ29udGV4dCIsImNoaWxkS2V5IiwibWFwcGVkQ2hpbGQiLCJtYXBJbnRv
V2l0aEtleVByZWZpeEludGVybmFsIiwiZXNjYXBlZFByZWZpeCIsIm1hcENoaWxkcmVuIiwiZm9y
RWFjaFNpbmdsZUNoaWxkRHVtbXkiLCJjb3VudENoaWxkcmVuIiwiY3JlYXRlRE9NRmFjdG9yeSIs
ImFiYnIiLCJhZGRyZXNzIiwiYXJ0aWNsZSIsImFzaWRlIiwiYXVkaW8iLCJiZGkiLCJiZG8iLCJi
aWciLCJibG9ja3F1b3RlIiwiY2FudmFzIiwiZGF0YWxpc3QiLCJkZCIsImRlbCIsImRldGFpbHMi
LCJkZm4iLCJkaWFsb2ciLCJkbCIsImR0IiwiZW0iLCJmaWVsZHNldCIsImZpZ2NhcHRpb24iLCJm
aWd1cmUiLCJmb290ZXIiLCJoMSIsImgyIiwiaDMiLCJoNCIsImg1IiwiaDYiLCJoZ3JvdXAiLCJp
ZnJhbWUiLCJpbnMiLCJrYmQiLCJsaSIsIm1haW4iLCJtYXJrIiwibWVudSIsIm1ldGVyIiwibmF2
Iiwibm9zY3JpcHQiLCJvbCIsIm91dHB1dCIsInBpY3R1cmUiLCJwcm9ncmVzcyIsInEiLCJycCIs
InJ0IiwicnVieSIsInNhbXAiLCJzY3JpcHQiLCJzZWN0aW9uIiwic21hbGwiLCJzdHJvbmciLCJz
dWIiLCJzdXAiLCJ0YWJsZSIsInUiLCJ1bCIsInZhciIsInZpZGVvIiwiY2lyY2xlIiwiZGVmcyIs
ImVsbGlwc2UiLCJnIiwibGluZWFyR3JhZGllbnQiLCJwb2x5Z29uIiwicG9seWxpbmUiLCJyYWRp
YWxHcmFkaWVudCIsInJlY3QiLCJzdG9wIiwidHNwYW4iLCJfcmVxdWlyZSIsIl9yZXF1aXJlMiIs
ImdldE5leHREZWJ1Z0lEIiwibmV4dERlYnVnSUQiLCJsb3dQcmlvcml0eVdhcm5pbmciLCJtaWRk
bGV3YXJlcyIsIl9kaXNwYXRjaCIsImNoYWluIiwibWlkZGxld2FyZUFQSSIsIm1pZGRsZXdhcmUi
LCJiaW5kQWN0aW9uQ3JlYXRvciIsImFjdGlvbkNyZWF0b3IiLCJhY3Rpb25DcmVhdG9ycyIsImJv
dW5kQWN0aW9uQ3JlYXRvcnMiLCJnZXRVbmRlZmluZWRTdGF0ZUVycm9yTWVzc2FnZSIsImFjdGlv
blR5cGUiLCJhY3Rpb25OYW1lIiwiYXNzZXJ0UmVkdWNlclNoYXBlIiwicmVkdWNlcnMiLCJyZWR1
Y2VyS2V5cyIsImZpbmFsUmVkdWNlcnMiLCJmaW5hbFJlZHVjZXJLZXlzIiwic2hhcGVBc3NlcnRp
b25FcnJvciIsImhhc0NoYW5nZWQiLCJfaSIsInByZXZpb3VzU3RhdGVGb3JLZXkiLCJuZXh0U3Rh
dGVGb3JLZXkiLCJlcnJvck1lc3NhZ2UiLCJfcG9ueWZpbGwiLCJfcG9ueWZpbGwyIiwic3ltYm9s
T2JzZXJ2YWJsZVBvbnlmaWxsIiwiX1N5bWJvbCIsIl9fd2VicGFja19tb2R1bGVfdGVtcGxhdGVf
YXJndW1lbnRfMF9fIiwib25lQXJndW1lbnRQb29sZXIiLCJjb3B5RmllbGRzRnJvbSIsIktsYXNz
IiwiaW5zdGFuY2VQb29sIiwiYTEiLCJhMiIsInRocmVlQXJndW1lbnRQb29sZXIiLCJhMyIsImE0
Iiwic3RhbmRhcmRSZWxlYXNlciIsInBvb2xTaXplIiwiREVGQVVMVF9QT09MX1NJWkUiLCJERUZB
VUxUX1BPT0xFUiIsIkNvcHlDb25zdHJ1Y3RvciIsInBvb2xlciIsIk5ld0tsYXNzIl0sIm1hcHBp
bmdzIjoiQ0FBUyxTQUFVQSxHQ0luQixRQUFBQyxHQUFBQyxHQUdBLEdBQUFDLEVBQUFELEdBQ0Es
TUFBQUMsR0FBQUQsR0FBQUUsT0FHQSxJQUFBQyxHQUFBRixFQUFBRCxJQUNBRSxXQUNBRSxHQUFB
SixFQUNBSyxRQUFBLEVBVUEsT0FOQVAsR0FBQUUsR0FBQU0sS0FBQUgsRUFBQUQsUUFBQUMsSUFB
QUQsUUFBQUgsR0FHQUksRUFBQUUsUUFBQSxFQUdBRixFQUFBRCxRQXZCQSxHQUFBRCxLQXFDQSxP
QVRBRixHQUFBUSxFQUFBVCxFQUdBQyxFQUFBUyxFQUFBUCxFQUdBRixFQUFBVSxFQUFBLEtBR0FW
LEVBQUEsSURJVyxTQUFTRCxHQUVuQixJQUFJLEdBQUlZLEtBQUtaLEdBQ1osR0FBR2EsT0FBT0Ms
VUFBVUMsZUFBZVAsS0FBS1IsRUFBU1ksR0FDaEQsYUFBY1osR0FBUVksSUFDdEIsSUFBSyxXQUFZ
LEtBQ2pCLEtBQUssU0FFSlosRUFBUVksR0FBTSxTQUFTSSxHQUN0QixHQUFJQyxHQUFPRCxFQUFH
RSxNQUFNLEdBQUlDLEVBQUtuQixFQUFRZ0IsRUFBRyxHQUN4QyxPQUFPLFVBQVVJLEVBQUVDLEVB
QUVYLEdBQ3BCUyxFQUFHRyxNQUFNQyxNQUFPSCxFQUFFQyxFQUFFWCxHQUFHYyxPQUFPUCxNQUU5
QmpCLEVBQVFZLEdBQ1YsTUFDRCxTQUVDWixFQUFRWSxHQUFLWixFQUFRQSxFQUFRWSxJQUtoQyxN
QUFPWixLQUdGLFNBQVNLLEVBQVFELEVBQVNILEdBRS9CQSxFQUFvQixLQUNwQkksRUFBT0QsUUFB
VUgsRUFBb0IsTUFLaEMsU0FBU0ksRUFBUUQsRUFBU0gsR0VqRWhDLFlBdUJBLFNBQUF3QixHQUFB
QyxFQUFBQyxFQUFBUCxFQUFBQyxFQUFBWCxFQUFBa0IsRUFBQUMsRUFBQUMsR0FHQSxHQUZBQyxF
QUFBSixJQUVBRCxFQUFBLENBQ0EsR0FBQU0sRUFDQSxJQUFBQyxTQUFBTixFQUNBSyxFQUFBLEdB
QUFFLE9BQUEscUlBQ0ssQ0FDTCxHQUFBakIsSUFBQUcsRUFBQUMsRUFBQVgsRUFBQWtCLEVBQUFD
LEVBQUFDLEdBQ0FLLEVBQUEsQ0FDQUgsR0FBQSxHQUFBRSxPQUFBUCxFQUFBUyxRQUFBLGlCQUNB
LE1BQUFuQixHQUFBa0IsUUFFQUgsRUFBQUssS0FBQSxzQkFJQSxLQURBTCxHQUFBTSxZQUFBLEVB
Q0FOLEdBM0JBLEdBQUFELEdBQUEsU0FBQUosSUErQkF0QixHQUFBRCxRQUFBcUIsR0ZpRk0sU0FB
U3BCLEVBQVFELEVBQVNILEdHN0hoQyxZQUVBLElBQUFzQyxHQUFBdEMsRUFBQSxHQVNBdUMsRUFB
QUQsQ0EwQ0FsQyxHQUFBRCxRQUFBb0MsR0g2SU0sU0FBU25DLEVBQVFELEdJbE12QixZQVNBLFNB
QUFxQyxHQUFBQyxHQUtBLE9BSkFDLEdBQUFDLFVBQUFDLE9BQUEsRUFFQUMsRUFBQSx5QkFBQUos
RUFBQSw2RUFBb0RBLEVBRXBESyxFQUFBLEVBQXNCQSxFQUFBSixFQUFtQkksSUFDekNELEdBQUEs
V0FBQUUsbUJBQUFKLFVBQUFHLEVBQUEsR0FHQUQsSUFBQSxnSEFFQSxJQUFBZCxHQUFBLEdBQUFF
LE9BQUFZLEVBSUEsTUFIQWQsR0FBQUssS0FBQSxzQkFDQUwsRUFBQU0sWUFBQSxFQUVBTixFQUdB
M0IsRUFBQUQsUUFBQXFDLEdKa05NLFNBQVNwQyxFQUFRRCxHS2pQdkIsWUFNQSxTQUFBNkMsR0FB
QUMsR0FDQSxVQUFBQSxHQUFBakIsU0FBQWlCLEVBQ0EsU0FBQUMsV0FBQSx3REFHQSxPQUFBdEMs
UUFBQXFDLEdBR0EsUUFBQUUsS0FDQSxJQUNBLElBQUF2QyxPQUFBd0MsT0FDQSxRQU1BLElBQUFD
LEdBQUEsR0FBQUMsUUFBQSxNQUVBLElBREFELEVBQUEsUUFDQSxNQUFBekMsT0FBQTJDLG9CQUFB
RixHQUFBLEdBQ0EsUUFLQSxRQURBRyxNQUNBN0MsRUFBQSxFQUFpQkEsRUFBQSxHQUFRQSxJQUN6
QjZDLEVBQUEsSUFBQUYsT0FBQUcsYUFBQTlDLEtBRUEsSUFBQStDLEdBQUE5QyxPQUFBMkMsb0JB
QUFDLEdBQUFHLElBQUEsU0FBQUMsR0FDQSxNQUFBSixHQUFBSSxJQUVBLG1CQUFBRixFQUFBRyxL
QUFBLElBQ0EsUUFJQSxJQUFBQyxLQUlBLE9BSEEsdUJBQUFDLE1BQUEsSUFBQUMsUUFBQSxTQUFB
QyxHQUNBSCxFQUFBRyxPQUdBLHlCQURBckQsT0FBQXNELEtBQUF0RCxPQUFBd0MsVUFBa0NVLElB
QUFELEtBQUEsSUFNaEMsTUFBQU0sR0FFRixVQXBEQSxHQUFBQyxHQUFBeEQsT0FBQXdELHNCQUNB
dEQsRUFBQUYsT0FBQUMsVUFBQUMsZUFDQXVELEVBQUF6RCxPQUFBQyxVQUFBeUQsb0JBc0RBbEUs
R0FBQUQsUUFBQWdELElBQUF2QyxPQUFBd0MsT0FBQSxTQUFBbUIsRUFBQUMsR0FLQSxPQUpBQyxH
QUVBQyxFQURBQyxFQUFBM0IsRUFBQXVCLEdBR0FLLEVBQUEsRUFBZ0JBLEVBQUFqQyxVQUFBQyxP
QUFzQmdDLElBQUEsQ0FDdENILEVBQUE3RCxPQUFBK0IsVUFBQWlDLEdBRUEsUUFBQUMsS0FBQUos
R0FDQTNELEVBQUFQLEtBQUFrRSxFQUFBSSxLQUNBRixFQUFBRSxHQUFBSixFQUFBSSxHQUlBLElB
QUFULEVBQUEsQ0FDQU0sRUFBQU4sRUFBQUssRUFDQSxRQUFBOUQsR0FBQSxFQUFrQkEsRUFBQStE
LEVBQUE5QixPQUFvQmpDLElBQ3RDMEQsRUFBQTlELEtBQUFrRSxFQUFBQyxFQUFBL0QsTUFDQWdF
LEVBQUFELEVBQUEvRCxJQUFBOEQsRUFBQUMsRUFBQS9ELE1BTUEsTUFBQWdFLEtMK1BNLFNBQVN2
RSxFQUFRRCxFQUFTSCxHTTdVaEMsWUFpQkEsU0FBQThFLEdBQUFDLEVBQUFDLEdBQ0EsV0FBQUQs
RUFBQUUsVUFBQUYsRUFBQUcsYUFBQUMsS0FBQTdCLE9BQUEwQixJQUFBLElBQUFELEVBQUFFLFVB
QUFGLEVBQUFLLFlBQUEsZ0JBQUFKLEVBQUEsU0FBQUQsRUFBQUUsVUFBQUYsRUFBQUssWUFBQSxp
QkFBQUosRUFBQSxJQVVBLFFBQUFLLEdBQUFDLEdBRUEsSUFEQSxHQUFBQyxHQUNBQSxFQUFBRCxF
QUFBRSxvQkFDQUYsRUFBQUMsQ0FFQSxPQUFBRCxHQU9BLFFBQUFHLEdBQUFDLEVBQUFYLEdBQ0Es
R0FBQVksR0FBQU4sRUFBQUssRUFDQUMsR0FBQUMsVUFBQWIsRUFDQUEsRUFBQWMsR0FBQUYsRUFH
QSxRQUFBRyxHQUFBSixHQUNBLEdBQUFYLEdBQUFXLEVBQUFFLFNBQ0FiLFdBQ0FBLEdBQUFjLEdB
Q0FILEVBQUFFLFVBQUEsTUFrQkEsUUFBQUcsR0FBQUwsRUFBQVgsR0FDQSxLQUFBVyxFQUFBTSxP
QUFBQyxFQUFBQyxxQkFBQSxDQUdBLEdBQUFDLEdBQUFULEVBQUFVLGtCQUNBQyxFQUFBdEIsRUFB
QXVCLFVBQ0FDLEdBQUEsT0FBQW5FLEtBQUErRCxHQUNBLEdBQUFBLEVBQUFyRixlQUFBc0IsR0FB
QSxDQUdBLEdBQUFvRSxHQUFBTCxFQUFBL0QsR0FDQXFFLEVBQUFwQixFQUFBbUIsR0FBQUUsTUFD
QSxRQUFBRCxFQUFBLENBS0EsS0FBVSxPQUFBSixFQUFvQkEsSUFBQU0sWUFDOUIsR0FBQTdCLEVB
QUF1QixFQUFBSSxHQUFBLENBQ0FoQixFQUFBZSxFQUFBSCxFQUNBLFNBQUFFLEdBSUFLLEVBQUEs
S0FBQUgsSUFFQWYsRUFBQU0sUUFBQUMsRUFBQUMscUJBT0EsUUFBQVcsR0FBQTlCLEdBQ0EsR0FB
QUEsRUFBQWMsR0FDQSxNQUFBZCxHQUFBYyxFQUtBLEtBREEsR0FBQWlCLE9BQ0EvQixFQUFBYyxJ
QUFBLENBRUEsR0FEQWlCLEVBQUFDLEtBQUFoQyxJQUNBQSxFQUFBaUMsV0FLQSxXQUpBakMsS0FB
QWlDLFdBVUEsSUFGQSxHQUFBQyxHQUNBdkIsRUFDUVgsSUFBQVcsRUFBQVgsRUFBQWMsSUFBNENk
LEVBQUErQixFQUFBSSxNQUNwREQsRUFBQXZCLEVBQ0FvQixFQUFBbEUsUUFDQW1ELEVBQUFMLEVB
QUFYLEVBSUEsT0FBQWtDLEdBT0EsUUFBQUUsR0FBQXBDLEdBQ0EsR0FBQVcsR0FBQW1CLEVBQUE5
QixFQUNBLGNBQUFXLEtBQUFFLFlBQUFiLEVBQ0FXLEVBRUEsS0FRQSxRQUFBMEIsR0FBQTFCLEdB
S0EsR0FGQTFELFNBQUEwRCxFQUFBRSxVQUFBZ0IsRUFBQSxhQUVBbEIsRUFBQUUsVUFDQSxNQUFB
RixHQUFBRSxTQUtBLEtBREEsR0FBQWtCLE9BQ0FwQixFQUFBRSxXQUNBa0IsRUFBQUMsS0FBQXJC
LEdBQ0FBLEVBQUEyQixZQUFBLE9BQUFULEVBQUEsTUFDQWxCLElBQUEyQixXQUtBLE1BQVFQLEVB
QUFsRSxPQUFnQjhDLEVBQUFvQixFQUFBSSxNQUN4Qm5CLEVBQUFMLElBQUFFLFVBR0EsT0FBQUYs
R0FBQUUsVUF6S0EsR0FBQWdCLEdBQUE1RyxFQUFBLEdBRUFzSCxFQUFBdEgsRUFBQSxJQUNBdUgs
RUFBQXZILEVBQUEsSUFJQW1GLEdBRkFuRixFQUFBLEdBRUFzSCxFQUFBRSxtQkFDQXZCLEVBQUFz
QixFQUVBMUIsRUFBQSwyQkFBQTRCLEtBQUFDLFNBQUFDLFNBQUEsSUFBQTFHLE1BQUEsR0FrS0Ey
RyxHQUNBZiw2QkFDQU0sc0JBQ0FDLHNCQUNBckIscUJBQ0FOLGVBQ0FLLGNBR0ExRixHQUFBRCxR
QUFBeUgsR042Vk0sU0FBU3hILEVBQVFELEdPcGhCdkIsWUFFQSxJQUFBMEgsS0FBQSxtQkFBQUMs
aUJBQUFDLFdBQUFELE9BQUFDLFNBQUFDLGVBUUFDLEdBRUFKLFlBRUFLLGNBQUEsbUJBQUFDLFFB
RUFDLHFCQUFBUCxNQUFBQyxPQUFBTyxtQkFBQVAsT0FBQVEsYUFFQUMsZUFBQVYsS0FBQUMsT0FB
QVUsT0FFQUMsWUFBQVosRUFJQXpILEdBQUFELFFBQUE4SCxHUG9pQk0sU0FBUzdILEVBQVFELEdR
dGtCdkIsWUFhQSxTQUFBdUksR0FBQUMsR0FDQSxrQkFDQSxNQUFBQSxJQVNBLEdBQUFyRyxHQUFB
LFlBRUFBLEdBQUFzRyxZQUFBRixFQUNBcEcsRUFBQXVHLGlCQUFBSCxHQUFBLEdBQ0FwRyxFQUFB
d0csZ0JBQUFKLEdBQUEsR0FDQXBHLEVBQUF5RyxnQkFBQUwsRUFBQSxNQUNBcEcsRUFBQTBHLGdC
QUFBLFdBQ0EsTUFBQTFILE9BRUFnQixFQUFBMkcsb0JBQUEsU0FBQU4sR0FDQSxNQUFBQSxJQUdB
dkksRUFBQUQsUUFBQW1DLEdSNGtCTSxTQUFTbEMsRUFBUUQsRUFBU0gsR1N0bUJoQyxZQUlBLElB
QUFrSixHQUFBLElBT0E5SSxHQUFBRCxTQUFrQitJLGNUdW5CWixTQUFTOUksRUFBUUQsRUFBU0gs
R1Vub0JoQyxZQW9CQSxTQUFBbUosS0FDQUMsRUFBQUMsMkJBQUFDLEVBQUEsT0FBQTFDLEVBQUEs
T0FpQ0EsUUFBQTJDLEtBQ0FqSSxLQUFBa0ksMEJBQ0FsSSxLQUFBbUksc0JBQUEsS0FDQW5JLEtB
QUFvSSxjQUFBQyxFQUFBQyxZQUNBdEksS0FBQXVJLHFCQUFBVCxFQUFBQywwQkFBQU8sV0FDQSxH
QXlCQSxRQUFBRSxHQUFBQyxFQUFBNUksRUFBQUMsRUFBQVgsRUFBQWtCLEVBQUFDLEdBRUEsTUFE
QXVILEtBQ0FHLEVBQUFRLGVBQUFDLEVBQUE1SSxFQUFBQyxFQUFBWCxFQUFBa0IsRUFBQUMsR0FV
QSxRQUFBb0ksR0FBQUMsRUFBQUMsR0FDQSxNQUFBRCxHQUFBRSxZQUFBRCxFQUFBQyxZQUdBLFFB
QUFDLEdBQUFDLEdBQ0EsR0FBQUMsR0FBQUQsRUFBQVoscUJBQ0FhLEtBQUFDLEVBQUEzSCxPQUFB
Z0UsRUFBQSxNQUFBMEQsRUFBQUMsRUFBQTNILFFBQUEsT0FLQTJILEVBQUFDLEtBQUFSLEdBT0FT
LEdBRUEsUUFBQTlKLEdBQUEsRUFBaUJBLEVBQUEySixFQUFTM0osSUFBQSxDQUkxQixHQUFBMkUs
R0FBQWlGLEVBQUE1SixHQUtBK0osRUFBQXBGLEVBQUFxRixpQkFDQXJGLEdBQUFxRixrQkFBQSxJ
QUVBLElBQUFDLEVBQ0EsSUFBQUMsRUFBQUMsbUJBQUEsQ0FDQSxHQUFBQyxHQUFBekYsQ0FFQUEs
R0FBQTBGLGdCQUFBQyxLQUFBQyx5QkFDQUgsRUFBQXpGLEVBQUFFLG9CQUVBb0YsRUFBQSxpQkFB
QUcsRUFBQUksVUFDQUMsUUFBQUMsS0FBQVQsR0FTQSxHQU5BVSxFQUFBQyx5QkFBQWpHLEVBQUEr
RSxFQUFBUixxQkFBQVksR0FFQUcsR0FDQVEsUUFBQUksUUFBQVosR0FHQUYsRUFDQSxPQUFBZSxH
QUFBLEVBQXFCQSxFQUFBZixFQUFBOUgsT0FBc0I2SSxJQUMzQ3BCLEVBQUFYLGNBQUFnQyxRQUFB
aEIsRUFBQWUsR0FBQW5HLEVBQUFxRyxzQkFnQ0EsUUFBQUMsR0FBQXRHLEdBU0EsTUFSQTZELEtB
UUFHLEVBQUF1QyxtQkFLQXRCLEVBQUF4RCxLQUFBekIsUUFDQSxNQUFBQSxFQUFBd0cscUJBQ0F4
RyxFQUFBd0csbUJBQUFyQixFQUFBLFNBTkFuQixHQUFBUSxlQUFBOEIsRUFBQXRHLEdBY0EsUUFB
QXlHLEdBQUFoQyxFQUFBaUMsR0FDQTFDLEVBQUF1QyxrQkFBQSxPQUFBakYsRUFBQSxPQUNBcUYs
RUFBQVAsUUFBQTNCLEVBQUFpQyxHQUNBRSxHQUFBLEVBNU1BLEdBQUF0RixHQUFBNUcsRUFBQSxH
QUNBbU0sRUFBQW5NLEVBQUEsR0FFQTJKLEVBQUEzSixFQUFBLElBQ0FvTSxFQUFBcE0sRUFBQSxJ
QUNBNkssRUFBQTdLLEVBQUEsSUFDQXNMLEVBQUF0TCxFQUFBLElBQ0FxTSxFQUFBck0sRUFBQSxJ
QUlBdUssR0FGQXZLLEVBQUEsT0FHQXlLLEVBQUEsRUFDQXdCLEVBQUF0QyxFQUFBQyxZQUNBc0Ms
R0FBQSxFQUVBNUMsRUFBQSxLQU1BZ0QsR0FDQUMsV0FBQSxXQUNBakwsS0FBQW1JLHNCQUFBYyxF
QUFBM0gsUUFFQTRKLE1BQUEsV0FDQWxMLEtBQUFtSSx3QkFBQWMsRUFBQTNILFFBTUEySCxFQUFB
a0MsT0FBQSxFQUFBbkwsS0FBQW1JLHVCQUNBaUQsS0FFQW5DLEVBQUEzSCxPQUFBLElBS0ErSixH
QUNBSixXQUFBLFdBQ0FqTCxLQUFBb0ksY0FBQWtELFNBRUFKLE1BQUEsV0FDQWxMLEtBQUFvSSxj
QUFBbUQsY0FJQUMsR0FBQVIsRUFBQUssRUFVQVIsR0FBQTVDLEVBQUExSSxVQUFBd0wsR0FDQVUs
dUJBQUEsV0FDQSxNQUFBRCxJQUdBRSxXQUFBLFdBQ0ExTCxLQUFBbUksc0JBQUEsS0FDQUUsRUFB
QXNELFFBQUEzTCxLQUFBb0ksZUFDQXBJLEtBQUFvSSxjQUFBLEtBQ0FOLEVBQUFDLDBCQUFBNEQs
UUFBQTNMLEtBQUF1SSxzQkFDQXZJLEtBQUF1SSxxQkFBQSxNQUdBcUQsUUFBQSxTQUFBQyxFQUFB
QyxFQUFBak0sR0FHQSxNQUFBa0wsR0FBQWEsUUFBQTNNLEtBQUFlLFVBQUF1SSxxQkFBQXFELFFB
QUE1TCxLQUFBdUkscUJBQUFzRCxFQUFBQyxFQUFBak0sTUFJQWlMLEVBQUFpQixhQUFBOUQsRUF1
RUEsSUFBQW1ELEdBQUEsV0FLQSxLQUFBbkMsRUFBQTNILFFBQUFzSixHQUFBLENBQ0EsR0FBQTNC
LEVBQUEzSCxPQUFBLENBQ0EsR0FBQXlILEdBQUFkLEVBQUFLLFdBQ0FTLEdBQUE2QyxRQUFBOUMs
RUFBQSxLQUFBQyxHQUNBZCxFQUFBMEQsUUFBQTVDLEdBR0EsR0FBQTZCLEVBQUEsQ0FDQUEsR0FB
QSxDQUNBLElBQUFvQixHQUFBckIsQ0FDQUEsR0FBQXRDLEVBQUFDLFlBQ0EwRCxFQUFBVCxZQUNB
bEQsRUFBQXNELFFBQUFLLE1BdUNBQyxHQUNBQywyQkFBQSxTQUFBQyxHQUNBQSxFQUFBLE9BQUE3
RyxFQUFBLE9BQ0F3QyxFQUFBQywwQkFBQW9FLEdBR0FDLHVCQUFBLFNBQUFDLEdBQ0FBLEVBQUEs
T0FBQS9HLEVBQUEsT0FDQSxrQkFBQStHLEdBQUE3RCxlQUFBbEQsRUFBQSxjQUNBLGlCQUFBK0cs
R0FBQTlCLGtCQUFBakYsRUFBQSxjQUNBMEMsRUFBQXFFLElBSUF2RSxHQU9BQywwQkFBQSxLQUVB
UyxpQkFDQThCLGdCQUNBYyxzQkFDQWtCLFVBQUFMLEVBQ0F4QixPQUdBM0wsR0FBQUQsUUFBQWlK
LEdWbXBCTSxTQUFTaEosRUFBUUQsRUFBU0gsR1dsNEJoQyxZQW1EQSxTQUFBNk4sR0FBQUMsRUFB
QUMsRUFBQUMsRUFBQUMsR0FRQTNNLEtBQUF3TSxpQkFDQXhNLEtBQUE0TSxZQUFBSCxFQUNBek0s
S0FBQTBNLGFBRUEsSUFBQUcsR0FBQTdNLEtBQUE4TSxZQUFBRCxTQUNBLFFBQUFFLEtBQUFGLEdB
Q0EsR0FBQUEsRUFBQXJOLGVBQUF1TixHQUFBLENBTUEsR0FBQUMsR0FBQUgsRUFBQUUsRUFDQUMs
R0FDQWhOLEtBQUErTSxHQUFBQyxFQUFBTixHQUVBLFdBQUFLLEVBQ0EvTSxLQUFBaUQsT0FBQTBK
LEVBRUEzTSxLQUFBK00sR0FBQUwsRUFBQUssR0FLQSxHQUFBRSxHQUFBLE1BQUFQLEVBQUFPLGlC
QUFBUCxFQUFBTyxpQkFBQVAsRUFBQVEsZUFBQSxDQU9BLE9BTkFELEdBQ0FqTixLQUFBbU4sbUJB
QUFuTSxFQUFBd0csZ0JBRUF4SCxLQUFBbU4sbUJBQUFuTSxFQUFBdUcsaUJBRUF2SCxLQUFBb04s
cUJBQUFwTSxFQUFBdUcsaUJBQ0F2SCxLQXhGQSxHQUFBNkssR0FBQW5NLEVBQUEsR0FFQW9NLEVB
QUFwTSxFQUFBLElBRUFzQyxFQUFBdEMsRUFBQSxHQU1BMk8sR0FMQTNPLEVBQUEsR0FHQSxrQkFB
QTRPLFFBRUEscUlBTUFDLEdBQ0E1RCxLQUFBLEtBQ0ExRyxPQUFBLEtBRUF1SyxjQUFBeE0sRUFB
QXlHLGdCQUNBZ0csV0FBQSxLQUNBQyxRQUFBLEtBQ0FDLFdBQUEsS0FDQUMsVUFBQSxTQUFBQyxH
QUNBLE1BQUFBLEdBQUFELFdBQUFFLEtBQUFDLE9BRUFkLGlCQUFBLEtBQ0FlLFVBQUEsS0ErREFu
RCxHQUFBMEIsRUFBQWhOLFdBQ0EwTyxlQUFBLFdBQ0FqTyxLQUFBaU4sa0JBQUEsQ0FDQSxJQUFB
WSxHQUFBN04sS0FBQTBNLFdBQ0FtQixLQUlBQSxFQUFBSSxlQUNBSixFQUFBSSxpQkFFSyxpQkFB
QUosR0FBQVgsY0FDTFcsRUFBQVgsYUFBQSxHQUVBbE4sS0FBQW1OLG1CQUFBbk0sRUFBQXdHLGtC
QUdBMEcsZ0JBQUEsV0FDQSxHQUFBTCxHQUFBN04sS0FBQTBNLFdBQ0FtQixLQUlBQSxFQUFBSyxn
QkFDQUwsRUFBQUssa0JBRUssaUJBQUFMLEdBQUFNLGVBTUxOLEVBQUFNLGNBQUEsR0FHQW5PLEtB
QUFvTixxQkFBQXBNLEVBQUF3RyxrQkFRQTRHLFFBQUEsV0FDQXBPLEtBQUFxTyxhQUFBck4sRUFB
QXdHLGlCQVFBNkcsYUFBQXJOLEVBQUF1RyxpQkFLQW1FLFdBQUEsV0FDQSxHQUFBbUIsR0FBQTdN
LEtBQUE4TSxZQUFBRCxTQUNBLFFBQUFFLEtBQUFGLEdBSUE3TSxLQUFBK00sR0FBQSxJQUdBLFFB
QUExTixHQUFBLEVBQW1CQSxFQUFBZ08sRUFBQS9MLE9BQXVDakMsSUFDMURXLEtBQUFxTixFQUFB
aE8sSUFBQSxRQVVBa04sRUFBQU0sVUFBQVUsRUErQkFoQixFQUFBK0IsYUFBQSxTQUFBQyxFQUFB
MUIsR0FDQSxHQUFBMkIsR0FBQXhPLEtBRUF5TyxFQUFBLFlBQ0FBLEdBQUFsUCxVQUFBaVAsRUFB
QWpQLFNBQ0EsSUFBQUEsR0FBQSxHQUFBa1AsRUFFQTVELEdBQUF0TCxFQUFBZ1AsRUFBQWhQLFdB
Q0FnUCxFQUFBaFAsWUFDQWdQLEVBQUFoUCxVQUFBdU4sWUFBQXlCLEVBRUFBLEVBQUExQixVQUFB
aEMsS0FBOEIyRCxFQUFBM0IsYUFDOUIwQixFQUFBRCxhQUFBRSxFQUFBRixhQUVBeEQsRUFBQWlC
LGFBQUF3QyxFQUFBekQsRUFBQTRELHFCQUdBNUQsRUFBQWlCLGFBQUFRLEVBQUF6QixFQUFBNEQs
b0JBRUE1UCxFQUFBRCxRQUFBME4sR1hvN0JNLFNBQVN6TixFQUFRRCxHWS9vQ3ZCLFlBUUEsSUFB
QThQLElBS0FDLFFBQUEsS0FHQTlQLEdBQUFELFFBQUE4UCxHWmdxQ00sU0FBUzdQLEVBQVFELEVB
QVNILEdhM3JDaEMsWUFFQUksR0FBQUQsUUFBQUgsRUFBQSxNYmtzQ0MsSUFBSyxHQUVBLFNBQVNJ
LEVBQVFELEVBQVNILEdjNXJDaEMsWUF3QkEsU0FBQW1RLEdBQUFDLEdBQ0EsR0FBQUMsRUFBQSxD
QUdBLEdBQUF0TCxHQUFBcUwsRUFBQXJMLEtBQ0FvQixFQUFBaUssRUFBQWpLLFFBQ0EsSUFBQUEs
RUFBQXZELE9BQ0EsT0FBQWpDLEdBQUEsRUFBbUJBLEVBQUF3RixFQUFBdkQsT0FBcUJqQyxJQUN4
QzJQLEVBQUF2TCxFQUFBb0IsRUFBQXhGLEdBQUEsVUFFRyxPQUFBeVAsRUFBQUcsS0FDSEMsRUFB
QXpMLEVBQUFxTCxFQUFBRyxNQUNHLE1BQUFILEVBQUFLLE1BQ0hDLEVBQUEzTCxFQUFBcUwsRUFB
QUssT0FvQkEsUUFBQUUsR0FBQUMsRUFBQUMsR0FDQUQsRUFBQTVKLFdBQUE4SixhQUFBRCxFQUFB
OUwsS0FBQTZMLEdBQ0FULEVBQUFVLEdBR0EsUUFBQUUsR0FBQUMsRUFBQUMsR0FDQVosRUFDQVcs
RUFBQTdLLFNBQUFZLEtBQUFrSyxHQUVBRCxFQUFBak0sS0FBQW1NLFlBQUFELEVBQUFsTSxNQUlB
LFFBQUFvTSxHQUFBZixFQUFBRyxHQUNBRixFQUNBRCxFQUFBRyxPQUVBQyxFQUFBSixFQUFBckws
S0FBQXdMLEdBSUEsUUFBQWEsR0FBQWhCLEVBQUFLLEdBQ0FKLEVBQ0FELEVBQUFLLE9BRUFDLEVB
QUFOLEVBQUFyTCxLQUFBMEwsR0FJQSxRQUFBOUksS0FDQSxNQUFBckcsTUFBQXlELEtBQUFzTSxT
QUdBLFFBQUFDLEdBQUF2TSxHQUNBLE9BQ0FBLE9BQ0FvQixZQUNBb0ssS0FBQSxLQUNBRSxLQUFB
LEtBQ0E5SSxZQTlGQSxHQUFBNEosR0FBQXZSLEVBQUEsSUFDQXdRLEVBQUF4USxFQUFBLElBRUF3
UixFQUFBeFIsRUFBQSxJQUNBMFEsRUFBQTFRLEVBQUEsSUFFQXlSLEVBQUEsRUFDQUMsRUFBQSxH
QWFBckIsRUFBQSxtQkFBQXRJLFdBQUEsZ0JBQUFBLFVBQUE0SixjQUFBLG1CQUFBQyxZQUFBLGdC
QUFBQSxXQUFBQyxXQUFBLGFBQUFDLEtBQUFGLFVBQUFDLFdBbUJBdkIsRUFBQWtCLEVBQUEsU0FB
QXhLLEVBQUFvSixFQUFBMkIsR0FPQTNCLEVBQUFyTCxLQUFBRSxXQUFBeU0sR0FBQXRCLEVBQUFy
TCxLQUFBRSxXQUFBd00sR0FBQSxXQUFBckIsRUFBQXJMLEtBQUFzTSxTQUFBVyxnQkFBQSxNQUFB
NUIsRUFBQXJMLEtBQUFrTixjQUFBN0IsRUFBQXJMLEtBQUFrTixlQUFBVixFQUFBaEIsT0FDQUos
RUFBQUMsR0FDQXBKLEVBQUFrTCxhQUFBOUIsRUFBQXJMLEtBQUFnTixLQUVBL0ssRUFBQWtMLGFB
QUE5QixFQUFBckwsS0FBQWdOLEdBQ0E1QixFQUFBQyxLQStDQWtCLEdBQUFoQixtQkFDQWdCLEVB
QUFYLHVCQUNBVyxFQUFBUCxhQUNBTyxFQUFBSCxZQUNBRyxFQUFBRixZQUVBaFIsRUFBQUQsUUFB
QW1SLEdkNHNDTSxTQUFTbFIsRUFBUUQsRUFBU0gsR2V0ekNoQyxZQU1BLFNBQUFtUyxHQUFBQyxF
QUFBQyxHQUNBLE9BQUFELEVBQUFDLE9BTEEsR0FBQXpMLEdBQUE1RyxFQUFBLEdBUUFzUyxHQU5B
dFMsRUFBQSxJQVdBdVMsa0JBQUEsRUFDQUMsa0JBQUEsRUFDQUMsa0JBQUEsRUFDQUMsMkJBQUEs
R0FDQUMsNkJBQUEsR0E4QkFDLHdCQUFBLFNBQUFDLEdBQ0EsR0FBQUMsR0FBQVIsRUFDQVMsRUFB
QUYsRUFBQUUsZUFDQUMsRUFBQUgsRUFBQUcsMkJBQ0FDLEVBQUFKLEVBQUFJLHNCQUNBQyxFQUFB
TCxFQUFBSyxxQkFDQUMsRUFBQU4sRUFBQU0sc0JBRUFOLEdBQUFPLG1CQUNBOUwsRUFBQStMLDRC
QUFBdE0sS0FBQThMLEVBQUFPLGtCQUdBLFFBQUEvRSxLQUFBMEUsR0FBQSxDQUNBekwsRUFBQWdN
LFdBQUF4UyxlQUFBdU4sR0FBQXpILEVBQUEsS0FBQXlILEdBQUEsTUFFQSxJQUFBa0YsR0FBQWxG
LEVBQUEyRCxjQUNBd0IsRUFBQVQsRUFBQTFFLEdBRUFvRixHQUNBQyxjQUFBSCxFQUNBSSxtQkFB
QSxLQUNBQyxhQUFBdkYsRUFDQXdGLGVBQUEsS0FFQUMsZ0JBQUEzQixFQUFBcUIsRUFBQVYsRUFB
QVAsbUJBQ0F3QixnQkFBQTVCLEVBQUFxQixFQUFBVixFQUFBTixtQkFDQXdCLGdCQUFBN0IsRUFB
QXFCLEVBQUFWLEVBQUFMLG1CQUNBd0Isd0JBQUE5QixFQUFBcUIsRUFBQVYsRUFBQUosNEJBQ0F3
QiwwQkFBQS9CLEVBQUFxQixFQUFBVixFQUFBSCw4QkFRQSxJQU5BYyxFQUFBTSxnQkFBQU4sRUFB
QU8sZ0JBQUFQLEVBQUFTLDJCQUFBLFNBQUF0TixFQUFBLEtBQUF5SCxHQU1BNEUsRUFBQW5TLGVB
QUF1TixHQUFBLENBQ0EsR0FBQXFGLEdBQUFULEVBQUE1RSxFQUNBb0YsR0FBQUMsZ0JBTUFWLEVB
QUFsUyxlQUFBdU4sS0FDQW9GLEVBQUFFLG1CQUFBWCxFQUFBM0UsSUFHQTZFLEVBQUFwUyxlQUFB
dU4sS0FDQW9GLEVBQUFHLGFBQUFWLEVBQUE3RSxJQUdBOEUsRUFBQXJTLGVBQUF1TixLQUNBb0Ys
RUFBQUksZUFBQVYsRUFBQTlFLElBR0EvRyxFQUFBZ00sV0FBQWpGLEdBQUFvRixNQU1BVSxFQUFB
LGdMQWdCQTdNLEdBQ0FFLGtCQUFBLGVBQ0E0TSxvQkFBQSxpQkFFQUQsNEJBQ0FFLG9CQUFBRixF
QUFBLCtDQThCQWIsY0FXQWdCLHdCQUE2RixLQUs3RmpCLCtCQU1BRCxrQkFBQSxTQUFBTSxHQUNB
LE9BQUEvUyxHQUFBLEVBQW1CQSxFQUFBMkcsRUFBQStMLDRCQUFBelEsT0FBb0RqQyxJQUFBLENB
Q3ZFLEdBQUE0VCxHQUFBak4sRUFBQStMLDRCQUFBMVMsRUFDQSxJQUFBNFQsRUFBQWIsR0FDQSxT
QUdBLFVBR0E5RixVQUFBMEUsRUFHQWxTLEdBQUFELFFBQUFtSCxHZnMwQ00sU0FBU2xILEVBQVFE
LEVBQVNILEdnQjNnRGhDLFlBV0EsU0FBQXdVLEtBQ0FDLEVBQUFELFdBQUFsVCxVQUFBMEosaUJB
VkEsR0FBQXlKLEdBQUF6VSxFQUFBLEtBYUFzTCxHQVpBdEwsRUFBQSxHQUVBQSxFQUFBLElBc0JB
MFUsZUFBQSxTQUFBQyxFQUFBdEssRUFBQXVLLEVBQUFDLEVBQUE3SSxFQUFBOEksR0FPQSxHQUFB
QyxHQUFBSixFQUFBRCxlQUFBckssRUFBQXVLLEVBQUFDLEVBQUE3SSxFQUFBOEksRUFTQSxPQVJB
SCxHQUFBM0osaUJBQUEsTUFBQTJKLEVBQUEzSixnQkFBQWdLLEtBQ0EzSyxFQUFBNEsscUJBQUF2
SixRQUFBOEksRUFBQUcsR0FPQUksR0FPQUcsWUFBQSxTQUFBUCxHQUNBLE1BQUFBLEdBQUFPLGVB
U0FDLGlCQUFBLFNBQUFSLEVBQUFTLEdBTUFYLEVBQUFZLFdBQUFWLElBQUEzSixpQkFDQTJKLEVB
QUFRLGlCQUFBQyxJQWlCQUUsaUJBQUEsU0FBQVgsRUFBQVksRUFBQWxMLEVBQUEyQixHQUNBLEdB
QUF3SixHQUFBYixFQUFBM0osZUFFQSxJQUFBdUssSUFBQUMsR0FBQXhKLElBQUEySSxFQUFBYyxT
QUFBLENBb0JBLEdBQUFDLEdBQUFqQixFQUFBa0IsaUJBQUFILEVBQUFELEVBRUFHLElBQ0FqQixF
QUFBWSxXQUFBVixFQUFBYSxHQUdBYixFQUFBVyxpQkFBQUMsRUFBQWxMLEVBQUEyQixHQUVBMEos
R0FBQWYsRUFBQTNKLGlCQUFBLE1BQUEySixFQUFBM0osZ0JBQUFnSyxLQUNBM0ssRUFBQTRLLHFC
QUFBdkosUUFBQThJLEVBQUFHLEtBaUJBcEoseUJBQUEsU0FBQW9KLEVBQUF0SyxFQUFBSSxHQUNB
a0ssRUFBQTdJLHFCQUFBckIsR0FXQWtLLEVBQUFwSix5QkFBQWxCLEtBU0FqSyxHQUFBRCxRQUFB
bUwsR2hCMmhETSxTQUFTbEwsRUFBUUQsRUFBU0gsR2lCcnJEaEMsWUFFQSxJQUFBbU0sR0FBQW5N
LEVBQUEsR0FFQTRWLEVBQUE1VixFQUFBLElBQ0E2VixFQUFBN1YsRUFBQSxLQUNBOFYsRUFBQTlW
LEVBQUEsS0FDQStWLEVBQUEvVixFQUFBLElBQ0FnVyxFQUFBaFcsRUFBQSxLQUNBaVcsRUFBQWpX
LEVBQUEsS0FFQWtXLEVBQUFsVyxFQUFBLEtBQ0FtVyxFQUFBblcsRUFBQSxLQUVBZ0ksRUFBQStO
LEVBQUEvTixjQUNBb08sRUFBQUwsRUFBQUssY0FDQUMsRUFBQU4sRUFBQU0sYUFZQUMsRUFBQW5L
LEVBQ0FvSyxFQUFBLFNBQUFDLEdBQ0EsTUFBQUEsSUFtQkFDLEdBR0FDLFVBQ0EvUyxJQUFBa1Ms
RUFBQWxTLElBQ0FLLFFBQUE2UixFQUFBN1IsUUFDQTJTLE1BQUFkLEVBQUFjLE1BQ0FDLFFBQUFm
LEVBQUFlLFFBQ0FDLEtBQUFWLEdBR0FXLFVBQUFsQixFQUFBa0IsVUFDQUMsY0FBQW5CLEVBQUFt
QixjQUVBL08sZ0JBQ0FxTyxlQUNBVyxlQUFBakIsRUFBQWlCLGVBSUFDLFVBQUFqQixFQUNBa0Is
WUFBQWhCLEVBQ0FFLGdCQUNBRyxjQUlBWSxJQUFBckIsRUFFQXNCLFFBQUFuQixFQUdBSyxXQXVD
QWxXLEdBQUFELFFBQUFzVyxHakJxc0RNLFNBQVNyVyxFQUFRRCxFQUFTSCxHa0I3ekRoQyxZQXFC
QSxTQUFBcVgsR0FBQUMsR0FTQSxNQUFBdFYsVUFBQXNWLEVBQUF0QyxJQUdBLFFBQUF1QyxHQUFB
RCxHQVNBLE1BQUF0VixVQUFBc1YsRUFBQXpTLElBeENBLEdBQUFzSCxHQUFBbk0sRUFBQSxHQUVB
aVEsRUFBQWpRLEVBQUEsSUFJQWMsR0FGQWQsRUFBQSxHQUNBQSxFQUFBLElBQ0FZLE9BQUFDLFVB
QUFDLGdCQUVBMFcsRUFBQXhYLEVBQUEsSUFFQXlYLEdBQ0E1UyxLQUFBLEVBQ0FtUSxLQUFBLEVB
Q0EwQyxRQUFBLEVBQ0FDLFVBQUEsR0E2RUE1QixFQUFBLFNBQUE5SyxFQUFBcEcsRUFBQW1RLEVB
QUE0QyxFQUFBcFQsRUFBQXFULEVBQUFDLEdBQ0EsR0FBQUMsSUFFQUMsU0FBQVIsRUFHQXZNLE9B
Q0FwRyxNQUNBbVEsTUFDQThDLFFBR0FHLE9BQUFKLEVBK0NBLE9BQUFFLEdBT0FoQyxHQUFBL04s
Y0FBQSxTQUFBaUQsRUFBQXFNLEVBQUFuUixHQUNBLEdBQUFrSSxHQUdBeUosS0FFQWpULEVBQUEs
S0FDQW1RLEVBQUEsS0FDQTRDLEVBQUEsS0FDQXBULEVBQUEsSUFFQSxVQUFBOFMsRUFBQSxDQUNB
RCxFQUFBQyxLQUNBdEMsRUFBQXNDLEVBQUF0QyxLQUVBdUMsRUFBQUQsS0FDQXpTLEVBQUEsR0FB
QXlTLEVBQUF6UyxLQUdBK1MsRUFBQTVWLFNBQUFzVixFQUFBSSxPQUFBLEtBQUFKLEVBQUFJLE9B
Q0FsVCxFQUFBeEMsU0FBQXNWLEVBQUFLLFNBQUEsS0FBQUwsRUFBQUssUUFFQSxLQUFBdEosSUFB
QWlKLEdBQ0F4VyxFQUFBUCxLQUFBK1csRUFBQWpKLEtBQUFvSixFQUFBM1csZUFBQXVOLEtBQ0F5
SixFQUFBekosR0FBQWlKLEVBQUFqSixJQU9BLEdBQUE2SixHQUFBdlYsVUFBQUMsT0FBQSxDQUNB
LFFBQUFzVixFQUNBSixFQUFBM1IsZUFDRyxJQUFBK1IsRUFBQSxHQUVILE9BREFDLEdBQUFDLE1B
QUFGLEdBQ0F2WCxFQUFBLEVBQW1CQSxFQUFBdVgsRUFBb0J2WCxJQUN2Q3dYLEVBQUF4WCxHQUFB
Z0MsVUFBQWhDLEVBQUEsRUFPQW1YLEdBQUEzUixTQUFBZ1MsRUFJQSxHQUFBbE4sS0FBQW9OLGFB
QUEsQ0FDQSxHQUFBQSxHQUFBcE4sRUFBQW9OLFlBQ0EsS0FBQWhLLElBQUFnSyxHQUNBclcsU0FB
QThWLEVBQUF6SixLQUNBeUosRUFBQXpKLEdBQUFnSyxFQUFBaEssSUFpQkEsTUFBQTBILEdBQUE5
SyxFQUFBcEcsRUFBQW1RLEVBQUE0QyxFQUFBcFQsRUFBQXlMLEVBQUFDLFFBQUE0SCxJQU9BL0Is
RUFBQUssY0FBQSxTQUFBbkwsR0FDQSxHQUFBcU4sR0FBQXZDLEVBQUEvTixjQUFBdVEsS0FBQSxL
QUFBdE4sRUFPQSxPQURBcU4sR0FBQXJOLE9BQ0FxTixHQUdBdkMsRUFBQXlDLG1CQUFBLFNBQUFD
LEVBQUFDLEdBQ0EsR0FBQUMsR0FBQTVDLEVBQUEwQyxFQUFBeE4sS0FBQXlOLEVBQUFELEVBQUF6
RCxJQUFBeUQsRUFBQUcsTUFBQUgsRUFBQUksUUFBQUosRUFBQVIsT0FBQVEsRUFBQVgsTUFFQSxP
QUFBYSxJQU9BNUMsRUFBQU0sYUFBQSxTQUFBMEIsRUFBQVQsRUFBQW5SLEdBQ0EsR0FBQWtJLEdB
R0F5SixFQUFBM0wsS0FBd0I0TCxFQUFBRCxPQUd4QmpULEVBQUFrVCxFQUFBbFQsSUFDQW1RLEVB
QUErQyxFQUFBL0MsSUFFQTRDLEVBQUFHLEVBQUFhLE1BSUFwVSxFQUFBdVQsRUFBQWMsUUFHQWhC
LEVBQUFFLEVBQUFFLE1BRUEsVUFBQVgsRUFBQSxDQUNBRCxFQUFBQyxLQUVBdEMsRUFBQXNDLEVB
QUF0QyxJQUNBNkMsRUFBQTVILEVBQUFDLFNBRUFxSCxFQUFBRCxLQUNBelMsRUFBQSxHQUFBeVMs
RUFBQXpTLElBSUEsSUFBQXdULEVBQ0FOLEdBQUE5TSxNQUFBOE0sRUFBQTlNLEtBQUFvTixlQUNB
QSxFQUFBTixFQUFBOU0sS0FBQW9OLGFBRUEsS0FBQWhLLElBQUFpSixHQUNBeFcsRUFBQVAsS0FB
QStXLEVBQUFqSixLQUFBb0osRUFBQTNXLGVBQUF1TixLQUNBck0sU0FBQXNWLEVBQUFqSixJQUFB
ck0sU0FBQXFXLEVBRUFQLEVBQUF6SixHQUFBZ0ssRUFBQWhLLEdBRUF5SixFQUFBekosR0FBQWlK
LEVBQUFqSixJQVFBLEdBQUE2SixHQUFBdlYsVUFBQUMsT0FBQSxDQUNBLFFBQUFzVixFQUNBSixF
QUFBM1IsZUFDRyxJQUFBK1IsRUFBQSxHQUVILE9BREFDLEdBQUFDLE1BQUFGLEdBQ0F2WCxFQUFB
LEVBQW1CQSxFQUFBdVgsRUFBb0J2WCxJQUN2Q3dYLEVBQUF4WCxHQUFBZ0MsVUFBQWhDLEVBQUEs
RUFFQW1YLEdBQUEzUixTQUFBZ1MsRUFHQSxNQUFBcEMsR0FBQWdDLEVBQUE5TSxLQUFBcEcsRUFB
QW1RLEVBQUE0QyxFQUFBcFQsRUFBQXFULEVBQUFDLElBVUEvQixFQUFBaUIsZUFBQSxTQUFBOEIs
R0FDQSxzQkFBQUEsSUFBQSxPQUFBQSxLQUFBZCxXQUFBUixHQUdBcFgsRUFBQUQsUUFBQTRWLEds
QjYwRE0sU0FBUzNWLEVBQVFELEVBQVNILEdtQnRwRWhDLFlBb0RBLFNBQUErWSxHQUFBQyxHQUNB
LGlCQUFBQSxHQUFBLFVBQUFBLEdBQUEsV0FBQUEsR0FBQSxhQUFBQSxFQUdBLFFBQUFDLEdBQUE3
VyxFQUFBNkksRUFBQTZNLEdBQ0EsT0FBQTFWLEdBQ0EsY0FDQSxxQkFDQSxvQkFDQSwyQkFDQSxr
QkFDQSx5QkFDQSxrQkFDQSx5QkFDQSxnQkFDQSx1QkFDQSxTQUFBMFYsRUFBQW9CLFdBQUFILEVB
QUE5TixHQUNBLFNBQ0EsVUFwRUEsR0FBQXJFLEdBQUE1RyxFQUFBLEdBRUFtWixFQUFBblosRUFB
QSxJQUNBb1osRUFBQXBaLEVBQUEsSUFDQXFaLEVBQUFyWixFQUFBLElBRUFzWixFQUFBdFosRUFB
QSxJQUNBdVosRUFBQXZaLEVBQUEsSUFNQXdaLEdBTEF4WixFQUFBLE9BV0F5WixFQUFBLEtBU0FD
LEVBQUEsU0FBQXZLLEVBQUF3SyxHQUNBeEssSUFDQWlLLEVBQUFRLHlCQUFBekssRUFBQXdLLEdB
RUF4SyxFQUFBUSxnQkFDQVIsRUFBQWYsWUFBQW5CLFFBQUFrQyxLQUlBMEssRUFBQSxTQUFBalks
R0FDQSxNQUFBOFgsR0FBQTlYLEdBQUEsSUFFQWtZLEVBQUEsU0FBQWxZLEdBQ0EsTUFBQThYLEdB
QUE5WCxHQUFBLElBR0FtWSxFQUFBLFNBQUFyVSxHQUdBLFVBQUFBLEVBQUFzVSxhQStDQUMsR0FJ
QXJNLFdBS0FzTSx1QkFBQWYsRUFBQWUsdUJBS0FDLHlCQUFBaEIsRUFBQWdCLDBCQVVBQyxZQUFB
LFNBQUExVSxFQUFBMlUsRUFBQUMsR0FDQSxrQkFBQUEsR0FBQTFULEVBQUEsS0FBQXlULFFBQUFD
LElBQUEsTUFFQSxJQUFBelYsR0FBQWtWLEVBQUFyVSxHQUNBNlUsRUFBQWYsRUFBQWEsS0FBQWIs
RUFBQWEsTUFDQUUsR0FBQTFWLEdBQUF5VixDQUVBLElBQUFFLEdBQUFyQixFQUFBc0Isd0JBQUFK
LEVBQ0FHLE1BQUFFLGdCQUNBRixFQUFBRSxlQUFBaFYsRUFBQTJVLEVBQUFDLElBU0FLLFlBQUEs
U0FBQWpWLEVBQUEyVSxHQUdBLEdBQUFFLEdBQUFmLEVBQUFhLEVBQ0EsSUFBQXBCLEVBQUFvQixF
QUFBM1UsRUFBQXNGLGdCQUFBQyxLQUFBdkYsRUFBQXNGLGdCQUFBOE0sT0FDQSxXQUVBLElBQUFq
VCxHQUFBa1YsRUFBQXJVLEVBQ0EsT0FBQTZVLE1BQUExVixJQVNBK1YsZUFBQSxTQUFBbFYsRUFB
QTJVLEdBQ0EsR0FBQUcsR0FBQXJCLEVBQUFzQix3QkFBQUosRUFDQUcsTUFBQUssb0JBQ0FMLEVB
QUFLLG1CQUFBblYsRUFBQTJVLEVBR0EsSUFBQUUsR0FBQWYsRUFBQWEsRUFFQSxJQUFBRSxFQUFB
LENBQ0EsR0FBQTFWLEdBQUFrVixFQUFBclUsU0FDQTZVLEdBQUExVixLQVNBaVcsbUJBQUEsU0FB
QXBWLEdBQ0EsR0FBQWIsR0FBQWtWLEVBQUFyVSxFQUNBLFFBQUEyVSxLQUFBYixHQUNBLEdBQUFB
LEVBQUExWSxlQUFBdVosSUFJQWIsRUFBQWEsR0FBQXhWLEdBQUEsQ0FJQSxHQUFBMlYsR0FBQXJC
LEVBQUFzQix3QkFBQUosRUFDQUcsTUFBQUssb0JBQ0FMLEVBQUFLLG1CQUFBblYsRUFBQTJVLFNB
R0FiLEdBQUFhLEdBQUF4VixLQVdBa1csY0FBQSxTQUFBQyxFQUFBak4sRUFBQUMsRUFBQUMsR0FH
QSxPQUZBZ04sR0FDQUMsRUFBQS9CLEVBQUErQixRQUNBdmEsRUFBQSxFQUFtQkEsRUFBQXVhLEVB
QUF0WSxPQUFvQmpDLElBQUEsQ0FFdkMsR0FBQXdhLEdBQUFELEVBQUF2YSxFQUNBLElBQUF3YSxF
QUFBLENBQ0EsR0FBQUMsR0FBQUQsRUFBQUosY0FBQUMsRUFBQWpOLEVBQUFDLEVBQUFDLEVBQ0Ft
TixLQUNBSCxFQUFBM0IsRUFBQTJCLEVBQUFHLEtBSUEsTUFBQUgsSUFVQUksY0FBQSxTQUFBSixH
QUNBQSxJQUNBeEIsRUFBQUgsRUFBQUcsRUFBQXdCLEtBU0FLLGtCQUFBLFNBQUEzQixHQUdBLEdB
QUE0QixHQUFBOUIsQ0FDQUEsR0FBQSxLQUNBRSxFQUNBSixFQUFBZ0MsRUFBQTFCLEdBRUFOLEVB
QUFnQyxFQUFBekIsR0FFQUwsRUFBQTdTLEVBQUEsYUFFQXlTLEVBQUFtQyxzQkFNQUMsUUFBQSxX
QUNBakMsTUFHQWtDLGtCQUFBLFdBQ0EsTUFBQWxDLElBSUFwWixHQUFBRCxRQUFBOFosR25Cc3FF
TSxTQUFTN1osRUFBUUQsRUFBU0gsR29CNTZFaEMsWUFlQSxTQUFBMmIsR0FBQWpXLEVBQUF5SixF
QUFBeU0sR0FDQSxHQUFBdkIsR0FBQWxMLEVBQUFyQixlQUFBK04sd0JBQUFELEVBQ0EsT0FBQWpC
LEdBQUFqVixFQUFBMlUsR0FTQSxRQUFBeUIsR0FBQXBXLEVBQUFxVyxFQUFBNU0sR0FJQSxHQUFB
bUwsR0FBQXFCLEVBQUFqVyxFQUFBeUosRUFBQTRNLEVBQ0F6QixLQUNBbkwsRUFBQTZNLG1CQUFB
MUMsRUFBQW5LLEVBQUE2TSxtQkFBQTFCLEdBQ0FuTCxFQUFBOE0sbUJBQUEzQyxFQUFBbkssRUFB
QThNLG1CQUFBdlcsSUFXQSxRQUFBd1csR0FBQS9NLEdBQ0FBLEtBQUFyQixlQUFBK04seUJBQ0F6
QyxFQUFBK0MsaUJBQUFoTixFQUFBakIsWUFBQTROLEVBQUEzTSxHQU9BLFFBQUFpTixHQUFBak4s
R0FDQSxHQUFBQSxLQUFBckIsZUFBQStOLHdCQUFBLENBQ0EsR0FBQTlOLEdBQUFvQixFQUFBakIs
WUFDQW1PLEVBQUF0TyxFQUFBcUwsRUFBQWtELGtCQUFBdk8sR0FBQSxJQUNBcUwsR0FBQStDLGlC
QUFBRSxFQUFBUCxFQUFBM00sSUFTQSxRQUFBb04sR0FBQTdXLEVBQUE4VyxFQUFBck4sR0FDQSxH
QUFBQSxLQUFBckIsZUFBQXVNLGlCQUFBLENBQ0EsR0FBQUEsR0FBQWxMLEVBQUFyQixlQUFBdU0s
aUJBQ0FDLEVBQUFLLEVBQUFqVixFQUFBMlUsRUFDQUMsS0FDQW5MLEVBQUE2TSxtQkFBQTFDLEVB
QUFuSyxFQUFBNk0sbUJBQUExQixHQUNBbkwsRUFBQThNLG1CQUFBM0MsRUFBQW5LLEVBQUE4TSxt
QkFBQXZXLEtBVUEsUUFBQStXLEdBQUF0TixHQUNBQSxLQUFBckIsZUFBQXVNLGtCQUNBa0MsRUFB
QXBOLEVBQUFqQixZQUFBLEtBQUFpQixHQUlBLFFBQUF1TixHQUFBekIsR0FDQTFCLEVBQUEwQixF
QUFBaUIsR0FHQSxRQUFBUyxHQUFBMUIsR0FDQTFCLEVBQUEwQixFQUFBbUIsR0FHQSxRQUFBUSxH
QUFBQyxFQUFBQyxFQUFBclksRUFBQUUsR0FDQXlVLEVBQUEyRCxtQkFBQXRZLEVBQUFFLEVBQUE0
WCxFQUFBTSxFQUFBQyxHQUdBLFFBQUFFLEdBQUEvQixHQUNBMUIsRUFBQTBCLEVBQUF3QixHQW5H
QSxHQUFBeEMsR0FBQWphLEVBQUEsSUFDQW9aLEVBQUFwWixFQUFBLElBRUFzWixFQUFBdFosRUFB
QSxJQUNBdVosRUFBQXZaLEVBQUEsSUFHQTJhLEdBRkEzYSxFQUFBLEdBRUFpYSxFQUFBVSxhQTBH
QXNDLEdBQ0FQLCtCQUNBQyx5Q0FDQUssNkJBQ0FKLGlDQUdBeGMsR0FBQUQsUUFBQThjLEdwQjQ3
RU0sU0FBUzdjLEVBQVFELEdxQnRqRnZCLFlBV0EsSUFBQStjLElBTUFDLE9BQUEsU0FBQXRZLEdB
Q0FBLEVBQUF1WSx1QkFBQXBiLFFBR0FxYixJQUFBLFNBQUF4WSxHQUNBLE1BQUFBLEdBQUF1WSx3
QkFHQUUsSUFBQSxTQUFBelksR0FDQSxNQUFBN0MsVUFBQTZDLEVBQUF1WSx3QkFHQUcsSUFBQSxT
QUFBMVksRUFBQXVOLEdBQ0F2TixFQUFBdVksdUJBQUFoTCxHQUlBaFMsR0FBQUQsUUFBQStjLEdy
QnNrRk0sU0FBUzljLEVBQVFELEVBQVNILEdzQnhtRmhDLFlBeUNBLFNBQUF3ZCxHQUFBMVAsRUFB
QTJQLEVBQUF6UCxFQUFBQyxHQUNBLE1BQUFKLEdBQUF0TixLQUFBZSxLQUFBd00sRUFBQTJQLEVB
QUF6UCxFQUFBQyxHQXhDQSxHQUFBSixHQUFBN04sRUFBQSxJQUVBMGQsRUFBQTFkLEVBQUEsSUFN
QTJkLEdBQ0FDLEtBQUEsU0FBQXpPLEdBQ0EsR0FBQUEsRUFBQXlPLEtBQ0EsTUFBQXpPLEdBQUF5
TyxJQUdBLElBQUFyWixHQUFBbVosRUFBQXZPLEVBQ0EsSUFBQTVLLEVBQUF1RCxTQUFBdkQsRUFF
QSxNQUFBQSxFQUdBLElBQUFzWixHQUFBdFosRUFBQXVaLGFBRUEsT0FBQUQsR0FDQUEsRUFBQUUs
YUFBQUYsRUFBQUcsYUFFQWxXLFFBR0FtVyxPQUFBLFNBQUE5TyxHQUNBLE1BQUFBLEdBQUE4TyxR
QUFBLEdBY0FwUSxHQUFBK0IsYUFBQTROLEVBQUFHLEdBRUF2ZCxFQUFBRCxRQUFBcWQsR3RCd25G
QSxFQUVNLFNBQVNwZCxFQUFRRCxFQUFTSCxHdUJ6cUZoQyxZQUVBLElBQUFrZSxLQU1BOWQsR0FB
QUQsUUFBQStkLEd2QnlyRk0sU0FBUzlkLEVBQVFELEVBQVNILEd3QmpzRmhDLFlBa0pBLFNBQUFt
ZSxHQUFBQyxHQU9BLE1BSkF4ZCxRQUFBQyxVQUFBQyxlQUFBUCxLQUFBNmQsRUFBQUMsS0FDQUQs
RUFBQUMsR0FBQUMsSUFDQUMsRUFBQUgsRUFBQUMsUUFFQUUsRUFBQUgsRUFBQUMsSUF2SkEsR0Fn
RUFHLEdBaEVBclMsRUFBQW5NLEVBQUEsR0FFQW1aLEVBQUFuWixFQUFBLElBQ0F5ZSxFQUFBemUs
RUFBQSxLQUNBMGUsRUFBQTFlLEVBQUEsSUFFQTJlLEVBQUEzZSxFQUFBLEtBQ0E0ZSxFQUFBNWUs
RUFBQSxJQTBEQXVlLEtBQ0FNLEdBQUEsRUFDQVAsRUFBQSxFQUtBUSxHQUNBQyxTQUFBLFFBQ0FD
LGdCQUFBTCxFQUFBLGdDQUNBTSxzQkFBQU4sRUFBQSw0Q0FDQU8sa0JBQUFQLEVBQUEsb0NBQ0FR
LFFBQUEsT0FDQUMsV0FBQSxVQUNBQyxrQkFBQSxpQkFDQUMsVUFBQSxTQUNBQyxTQUFBLFFBQ0FD
LGtCQUFBLGlCQUNBQyxvQkFBQSxtQkFDQUMscUJBQUEsb0JBQ0FDLGVBQUEsY0FDQUMsUUFBQSxP
QUNBQyxPQUFBLE1BQ0FDLGVBQUEsV0FDQUMsUUFBQSxPQUNBQyxXQUFBLFVBQ0FDLGFBQUEsWUFD
QUMsWUFBQSxXQUNBQyxhQUFBLFlBQ0FDLFlBQUEsV0FDQUMsYUFBQSxZQUNBQyxRQUFBLE9BQ0FD
LGtCQUFBLGlCQUNBQyxXQUFBLFVBQ0FDLGFBQUEsWUFDQUMsU0FBQSxRQUNBQyxTQUFBLFFBQ0FD
LFNBQUEsUUFDQUMsU0FBQSxRQUNBQyxXQUFBLFVBQ0FDLFlBQUEsV0FDQUMsU0FBQSxRQUNBQyxj
QUFBLGFBQ0FDLGtCQUFBLGlCQUNBQyxhQUFBLFlBQ0FDLGFBQUEsWUFDQUMsYUFBQSxZQUNBQyxZ
QUFBLFdBQ0FDLGFBQUEsWUFDQUMsV0FBQSxVQUNBQyxTQUFBLFFBQ0FDLFNBQUEsUUFDQUMsUUFB
QSxPQUNBQyxXQUFBLFVBQ0FDLFlBQUEsV0FDQUMsY0FBQSxhQUNBQyxVQUFBLFNBQ0FDLFVBQUEs
U0FDQUMsV0FBQSxVQUNBQyxtQkFBQSxrQkFDQUMsV0FBQSxVQUNBQyxXQUFBLFVBQ0FDLGFBQUEs
WUFDQUMsY0FBQSxhQUNBQyxlQUFBLGNBQ0FDLFlBQUEsV0FDQUMsYUFBQSxZQUNBQyxjQUFBLGFB
Q0FDLGlCQUFBaEUsRUFBQSxrQ0FDQWlFLGdCQUFBLGVBQ0FDLFdBQUEsVUFDQUMsU0FBQSxTQU1B
ekUsRUFBQSxvQkFBQS9hLE9BQUFtRSxLQUFBQyxVQUFBekcsTUFBQSxHQXNCQThoQixFQUFBNVcs
S0FBeUNzUyxHQUl6Q3VFLG1CQUFBLEtBRUFwVixXQUlBcVYseUJBQUEsU0FBQUQsR0FDQUEsRUFB
QUUsa0JBQUFILEVBQUFJLGdCQUNBSixFQUFBQyx1QkFTQUksV0FBQSxTQUFBQyxHQUNBTixFQUFB
QyxvQkFDQUQsRUFBQUMsbUJBQUFJLFdBQUFDLElBT0FDLFVBQUEsV0FDQSxTQUFBUCxFQUFBQyxx
QkFBQUQsRUFBQUMsbUJBQUFNLGNBd0JBQyxTQUFBLFNBQUFsSixFQUFBbUosR0FLQSxPQUpBcEYs
R0FBQW9GLEVBQ0FDLEVBQUF0RixFQUFBQyxHQUNBc0YsRUFBQXZLLEVBQUF3Syw2QkFBQXRKLEdB
RUExWixFQUFBLEVBQW1CQSxFQUFBK2lCLEVBQUE5Z0IsT0FBeUJqQyxJQUFBLENBQzVDLEdBQUFp
akIsR0FBQUYsRUFBQS9pQixFQUNBOGlCLEdBQUEzaUIsZUFBQThpQixJQUFBSCxFQUFBRyxLQUNB
LGFBQUFBLEVBQ0FoRixFQUFBLFNBQ0FtRSxFQUFBQyxtQkFBQWEsaUJBQUEsbUJBQUF6RixHQUNX
USxFQUFBLGNBQ1htRSxFQUFBQyxtQkFBQWEsaUJBQUEsd0JBQUF6RixHQUlBMkUsRUFBQUMsbUJB
QUFhLGlCQUFBLDRCQUFBekYsR0FFUyxjQUFBd0YsRUFDVGhGLEVBQUEsYUFDQW1FLEVBQUFDLG1C
QUFBYyxrQkFBQSxxQkFBQTFGLEdBRUEyRSxFQUFBQyxtQkFBQWEsaUJBQUEscUJBQUFkLEVBQUFD
LG1CQUFBZSxlQUVTLGFBQUFILEdBQUEsWUFBQUEsR0FDVGhGLEVBQUEsYUFDQW1FLEVBQUFDLG1C
QUFBYyxrQkFBQSxtQkFBQTFGLEdBQ0EyRSxFQUFBQyxtQkFBQWMsa0JBQUEsaUJBQUExRixJQUNX
USxFQUFBLGFBR1htRSxFQUFBQyxtQkFBQWEsaUJBQUEscUJBQUF6RixHQUNBMkUsRUFBQUMsbUJB
QUFhLGlCQUFBLHFCQUFBekYsSUFJQXFGLEVBQUF0RSxTQUFBLEVBQ0FzRSxFQUFBN0MsVUFBQSxH
QUNTOUIsRUFBQWhlLGVBQUE4aUIsSUFDVGIsRUFBQUMsbUJBQUFhLGlCQUFBRCxFQUFBOUUsRUFB
QThFLEdBQUF4RixHQUdBcUYsRUFBQUcsSUFBQSxLQUtBQyxpQkFBQSxTQUFBN0ksRUFBQWdKLEVB
QUFDLEdBQ0EsTUFBQWxCLEdBQUFDLG1CQUFBYSxpQkFBQTdJLEVBQUFnSixFQUFBQyxJQUdBSCxr
QkFBQSxTQUFBOUksRUFBQWdKLEVBQUFDLEdBQ0EsTUFBQWxCLEdBQUFDLG1CQUFBYyxrQkFBQTlJ
LEVBQUFnSixFQUFBQyxJQVFBQyxvQkFBQSxXQUNBLElBQUFuYyxTQUFBb2MsWUFDQSxRQUVBLElB
QUFDLEdBQUFyYyxTQUFBb2MsWUFBQSxhQUNBLGNBQUFDLEdBQUEsU0FBQUEsSUFjQUMsNEJBQUEs
V0FJQSxHQUhBcmlCLFNBQUF3YyxJQUNBQSxFQUFBdUUsRUFBQW1CLHdCQUVBMUYsSUFBQUssRUFB
QSxDQUNBLEdBQUF5RixHQUFBNUYsRUFBQTZGLG1CQUNBeEIsR0FBQUMsbUJBQUF3QixtQkFBQUYs
R0FDQXpGLEdBQUEsS0FLQXplLEdBQUFELFFBQUE0aUIsR3hCaXRGTSxTQUFTM2lCLEVBQVFELEVB
QVNILEd5QnpnR2hDLFlBc0RBLFNBQUF5a0IsR0FBQTNXLEVBQUEyUCxFQUFBelAsRUFBQUMsR0FD
QSxNQUFBdVAsR0FBQWpkLEtBQUFlLEtBQUF3TSxFQUFBMlAsRUFBQXpQLEVBQUFDLEdBckRBLEdB
QUF1UCxHQUFBeGQsRUFBQSxJQUNBMGUsRUFBQTFlLEVBQUEsSUFFQTBrQixFQUFBMWtCLEVBQUEs
SUFNQTJrQixHQUNBQyxRQUFBLEtBQ0FDLFFBQUEsS0FDQUMsUUFBQSxLQUNBQyxRQUFBLEtBQ0FD
LFFBQUEsS0FDQUMsU0FBQSxLQUNBQyxPQUFBLEtBQ0FDLFFBQUEsS0FDQUMsaUJBQUFWLEVBQ0FX
LE9BQUEsU0FBQWxXLEdBSUEsR0FBQWtXLEdBQUFsVyxFQUFBa1csTUFDQSxnQkFBQWxXLEdBQ0Fr
VyxFQU1BLElBQUFBLEVBQUEsTUFBQUEsRUFBQSxLQUVBQyxRQUFBLEtBQ0FDLGNBQUEsU0FBQXBX
LEdBQ0EsTUFBQUEsR0FBQW9XLGdCQUFBcFcsRUFBQXFXLGNBQUFyVyxFQUFBc1csV0FBQXRXLEVB
QUF1VyxVQUFBdlcsRUFBQXFXLGNBR0FHLE1BQUEsU0FBQXhXLEdBQ0EsZUFBQUEsS0FBQXdXLE1B
QUF4VyxFQUFBMlYsUUFBQXBHLEVBQUFrSCxtQkFFQUMsTUFBQSxTQUFBMVcsR0FDQSxlQUFBQSxL
QUFBMFcsTUFBQTFXLEVBQUE0VixRQUFBckcsRUFBQW9ILGtCQWNBdEksR0FBQTVOLGFBQUE2VSxF
QUFBRSxHQUVBdmtCLEVBQUFELFFBQUFza0IsR3pCeWhHTSxTQUFTcmtCLEVBQVFELEVBQVNILEcw
QnBsR2hDLFlBRUEsSUFBQTRHLEdBQUE1RyxFQUFBLEdBSUErbEIsR0FGQS9sQixFQUFBLE9BaUVB
Z21CLEdBUUF4Yyx3QkFBQSxXQUNBbEksS0FBQTJrQixvQkFBQTNrQixLQUFBeUwseUJBQ0F6TCxL
QUFBNGtCLGdCQUNBNWtCLEtBQUE0a0IsZ0JBQUF0akIsT0FBQSxFQUVBdEIsS0FBQTRrQixtQkFF
QTVrQixLQUFBNmtCLGtCQUFBLEdBR0FBLGtCQUFBLEVBTUFwWix1QkFBQSxLQUVBcVosZ0JBQUEs
V0FDQSxRQUFBOWtCLEtBQUE2a0Isa0JBc0JBalosUUFBQSxTQUFBQyxFQUFBQyxFQUFBak0sRUFB
QUMsRUFBQVgsRUFBQWtCLEVBQUFDLEVBQUFDLEdBRUFQLEtBQUE4a0Isa0JBQUF4ZixFQUFBLFlB
Q0EsSUFBQXlmLEdBQ0FDLENBQ0EsS0FDQWhsQixLQUFBNmtCLGtCQUFBLEVBS0FFLEdBQUEsRUFD
QS9rQixLQUFBaWxCLGNBQUEsR0FDQUQsRUFBQW5aLEVBQUE1TSxLQUFBNk0sRUFBQWpNLEVBQUFD
LEVBQUFYLEVBQUFrQixFQUFBQyxFQUFBQyxHQUNBd2tCLEdBQUEsRUFDSyxRQUNMLElBQ0EsR0FB
QUEsRUFHQSxJQUNBL2tCLEtBQUFrbEIsU0FBQSxHQUNXLE1BQUFyaUIsUUFJWDdDLE1BQUFrbEIs
U0FBQSxHQUVPLFFBQ1BsbEIsS0FBQTZrQixrQkFBQSxHQUdBLE1BQUFHLElBR0FDLGNBQUEsU0FB
QUUsR0FFQSxPQURBUixHQUFBM2tCLEtBQUEya0Isb0JBQ0F0bEIsRUFBQThsQixFQUE0QjlsQixF
QUFBc2xCLEVBQUFyakIsT0FBZ0NqQyxJQUFBLENBQzVELEdBQUErbEIsR0FBQVQsRUFBQXRsQixF
QUNBLEtBS0FXLEtBQUE0a0IsZ0JBQUF2bEIsR0FBQW9sQixFQUNBemtCLEtBQUE0a0IsZ0JBQUF2
bEIsR0FBQStsQixFQUFBbmEsV0FBQW1hLEVBQUFuYSxXQUFBaE0sS0FBQWUsTUFBQSxLQUNPLFFB
Q1AsR0FBQUEsS0FBQTRrQixnQkFBQXZsQixLQUFBb2xCLEVBSUEsSUFDQXprQixLQUFBaWxCLGNB
QUE1bEIsRUFBQSxHQUNXLE1BQUF3RCxRQVlYcWlCLFNBQUEsU0FBQUMsR0FDQW5sQixLQUFBOGtC
LGtCQUFBLE9BQUF4ZixFQUFBLEtBRUEsUUFEQXFmLEdBQUEza0IsS0FBQTJrQixvQkFDQXRsQixF
QUFBOGxCLEVBQTRCOWxCLEVBQUFzbEIsRUFBQXJqQixPQUFnQ2pDLElBQUEsQ0FDNUQsR0FFQTBs
QixHQUZBSyxFQUFBVCxFQUFBdGxCLEdBQ0FnbUIsRUFBQXJsQixLQUFBNGtCLGdCQUFBdmxCLEVB
RUEsS0FLQTBsQixHQUFBLEVBQ0FNLElBQUFaLEdBQUFXLEVBQUFsYSxPQUNBa2EsRUFBQWxhLE1B
QUFqTSxLQUFBZSxLQUFBcWxCLEdBRUFOLEdBQUEsRUFDTyxRQUNQLEdBQUFBLEVBSUEsSUFDQS9r
QixLQUFBa2xCLFNBQUE3bEIsRUFBQSxHQUNXLE1BQUFpQixNQUlYTixLQUFBNGtCLGdCQUFBdGpC
LE9BQUEsR0FJQXhDLEdBQUFELFFBQUE2bEIsRzFCcW1HTSxTQUFTNWxCLEVBQVFELEcyQnB5R3ZC
LFlBa0JBLFNBQUF5bUIsR0FBQUMsR0FDQSxHQUFBQyxHQUFBLEdBQUFELEVBQ0FFLEVBQUFDLEVB
QUFDLEtBQUFILEVBRUEsS0FBQUMsRUFDQSxNQUFBRCxFQUdBLElBQUFJLEdBQ0EzVyxFQUFBLEdB
Q0E0VyxFQUFBLEVBQ0FDLEVBQUEsQ0FFQSxLQUFBRCxFQUFBSixFQUFBSSxNQUEyQkEsRUFBQUws
RUFBQWxrQixPQUFvQnVrQixJQUFBLENBQy9DLE9BQUFMLEVBQUFPLFdBQUFGLElBQ0EsUUFFQUQs
RUFBQSxRQUNBLE1BQ0EsU0FFQUEsRUFBQSxPQUNBLE1BQ0EsU0FFQUEsRUFBQSxRQUNBLE1BQ0Es
U0FFQUEsRUFBQSxNQUNBLE1BQ0EsU0FFQUEsRUFBQSxNQUNBLE1BQ0EsU0FDQSxTQUdBRSxJQUFB
RCxJQUNBNVcsR0FBQXVXLEVBQUFRLFVBQUFGLEVBQUFELElBR0FDLEVBQUFELEVBQUEsRUFDQTVX
LEdBQUEyVyxFQUdBLE1BQUFFLEtBQUFELEVBQUE1VyxFQUFBdVcsRUFBQVEsVUFBQUYsRUFBQUQs
R0FBQTVXLEVBVUEsUUFBQWdYLEdBQUE5VyxHQUNBLHVCQUFBQSxJQUFBLGdCQUFBQSxHQUlBLEdB
QUFBLEVBRUFtVyxFQUFBblcsR0ExRUEsR0FBQXVXLEdBQUEsU0E2RUE1bUIsR0FBQUQsUUFBQW9u
QixHM0I2MEdNLFNBQVNubkIsRUFBUUQsRUFBU0gsRzRCMzdHaEMsWUFFQSxJQVNBd25CLEdBVEF2
ZixFQUFBakksRUFBQSxHQUNBdVIsRUFBQXZSLEVBQUEsSUFFQXluQixFQUFBLGVBQ0FDLEVBQUEs
dURBRUFsVyxFQUFBeFIsRUFBQSxJQWFBd1EsRUFBQWdCLEVBQUEsU0FBQXpNLEVBQUF3TCxHQUlB
LEdBQUF4TCxFQUFBa04sZUFBQVYsRUFBQW9XLEtBQUEsYUFBQTVpQixHQVFBQSxFQUFBNmlCLFVB
QUFyWCxNQVJBLENBQ0FpWCxLQUFBemYsU0FBQUMsY0FBQSxPQUNBd2YsRUFBQUksVUFBQSxRQUFB
clgsRUFBQSxRQUVBLEtBREEsR0FBQXNYLEdBQUFMLEVBQUFsaEIsV0FDQXVoQixFQUFBdmhCLFlB
Q0F2QixFQUFBbU0sWUFBQTJXLEVBQUF2aEIsY0FPQSxJQUFBMkIsRUFBQUosVUFBQSxDQU9BLEdB
QUFpZ0IsR0FBQS9mLFNBQUFDLGNBQUEsTUFDQThmLEdBQUFGLFVBQUEsSUFDQSxLQUFBRSxFQUFB
RixZQUNBcFgsRUFBQSxTQUFBekwsRUFBQXdMLEdBY0EsR0FSQXhMLEVBQUFpQyxZQUNBakMsRUFB
QWlDLFdBQUE4SixhQUFBL0wsS0FPQTBpQixFQUFBM1YsS0FBQXZCLElBQUEsTUFBQUEsRUFBQSxJ
QUFBbVgsRUFBQTVWLEtBQUF2QixHQUFBLENBT0F4TCxFQUFBNmlCLFVBQUF0a0IsT0FBQUcsYUFB
QSxPQUFBOE0sQ0FJQSxJQUFBd1gsR0FBQWhqQixFQUFBdUIsVUFDQSxLQUFBeWhCLEVBQUFDLEtB
QUFwbEIsT0FDQW1DLEVBQUFrakIsWUFBQUYsR0FFQUEsRUFBQUcsV0FBQSxTQUdBbmpCLEdBQUE2
aUIsVUFBQXJYLElBSUF1WCxFQUFBLEtBR0ExbkIsRUFBQUQsUUFBQXFRLEc1QjI4R00sU0FBU3BR
LEVBQVFELEVBQVNILEc2QjNpSGhDLFlBNkJBLFNBQUFtb0IsR0FBQUMsR0FBc0MsTUFBQUEsTUFB
QUMsV0FBQUQsR0FBdUNFLFFBQUFGLEdBM0I3RWpvQixFQUFBa29CLFlBQUEsRUFDQWxvQixFQUFB
b29CLFFBQUFwb0IsRUFBQXFvQixnQkFBQXJvQixFQUFBc29CLG1CQUFBdG9CLEVBQUF1b0IsZ0JB
QUF2b0IsRUFBQXdvQixZQUFBM21CLE1BRUEsSUFBQTRtQixHQUFBNW9CLEVBQUEsSUFFQTZvQixF
QUFBVixFQUFBUyxHQUVBRSxFQUFBOW9CLEVBQUEsS0FFQStvQixFQUFBWixFQUFBVyxHQUVBRSxF
QUFBaHBCLEVBQUEsS0FFQWlwQixFQUFBZCxFQUFBYSxHQUVBRSxFQUFBbHBCLEVBQUEsS0FFQW1w
QixFQUFBaEIsRUFBQWUsR0FFQUUsRUFBQXBwQixFQUFBLElBRUFxcEIsRUFBQWxCLEVBQUFpQixH
QUVBRSxFQUFBdHBCLEVBQUEsR0FFQW1vQixHQUFBbUIsRUFjQW5wQixHQUFBd29CLFlBQUFFLEVB
QUEsUUFDQTFvQixFQUFBdW9CLGdCQUFBSyxFQUFBLFFBQ0E1b0IsRUFBQXNvQixtQkFBQVEsRUFB
QSxRQUNBOW9CLEVBQUFxb0IsZ0JBQUFXLEVBQUEsUUFDQWhwQixFQUFBb29CLFFBQUFjLEVBQUEs
UzdCaWpITSxTQUFTanBCLEVBQVFELEVBQVNILEc4QjlsSGhDLEdBQUF1cEIsR0FBQUMsR0FPQSxX
QUNBLFlBSUEsU0FBQUMsS0FHQSxPQUZBQyxNQUVBL29CLEVBQUEsRUFBaUJBLEVBQUFnQyxVQUFB
QyxPQUFzQmpDLElBQUEsQ0FDdkMsR0FBQWdJLEdBQUFoRyxVQUFBaEMsRUFDQSxJQUFBZ0ksRUFB
QSxDQUVBLEdBQUFnaEIsU0FBQWhoQixFQUVBLGVBQUFnaEIsR0FBQSxXQUFBQSxFQUNBRCxFQUFB
M2lCLEtBQUE0QixPQUNJLElBQUF5UCxNQUFBd1IsUUFBQWpoQixHQUNKK2dCLEVBQUEzaUIsS0FB
QTBpQixFQUFBcG9CLE1BQUEsS0FBQXNILFFBQ0ksZUFBQWdoQixFQUNKLE9BQUE5a0IsS0FBQThE
LEdBQ0FraEIsRUFBQXRwQixLQUFBb0ksRUFBQTlELElBQUE4RCxFQUFBOUQsSUFDQTZrQixFQUFB
M2lCLEtBQUFsQyxJQU1BLE1BQUE2a0IsR0FBQTdsQixLQUFBLEtBeEJBLEdBQUFnbUIsTUFBZ0Iv
b0IsY0EyQmhCLG9CQUFBVixNQUFBRCxRQUNBQyxFQUFBRCxRQUFBc3BCLEdBR0FGLEtBQUFDLEVB
QUEsV0FDQSxNQUFBQyxJQUNHcG9CLE1BQUFsQixFQUFBb3BCLEtBQUF2bkIsU0FBQXduQixJQUFB
cHBCLEVBQUFELFFBQUFxcEIsUzlCeW1IRyxTQUFTcHBCLEVBQVFELEcrQnRvSHZCLFlBUUEsU0FB
QTJwQixHQUFBQyxFQUFBQyxHQUVBLE1BQUFELEtBQUFDLEVBSUEsSUFBQUQsR0FBQSxJQUFBQyxH
QUFBLEVBQUFELElBQUEsRUFBQUMsRUFHQUQsT0FBQUMsTUFTQSxRQUFBQyxHQUFBQyxFQUFBQyxH
QUNBLEdBQUFMLEVBQUFJLEVBQUFDLEdBQ0EsUUFHQSxvQkFBQUQsSUFBQSxPQUFBQSxHQUFBLGdC
QUFBQyxJQUFBLE9BQUFBLEVBQ0EsUUFHQSxJQUFBQyxHQUFBeHBCLE9BQUFzRCxLQUFBZ21CLEdB
Q0FHLEVBQUF6cEIsT0FBQXNELEtBQUFpbUIsRUFFQSxJQUFBQyxFQUFBeG5CLFNBQUF5bkIsRUFB
QXpuQixPQUNBLFFBSUEsUUFBQWpDLEdBQUEsRUFBaUJBLEVBQUF5cEIsRUFBQXhuQixPQUFrQmpD
LElBQ25DLElBQUFHLEVBQUFQLEtBQUE0cEIsRUFBQUMsRUFBQXpwQixNQUFBbXBCLEVBQUFJLEVB
QUFFLEVBQUF6cEIsSUFBQXdwQixFQUFBQyxFQUFBenBCLEtBQ0EsUUFJQSxVQS9DQSxHQUFBRyxH
QUFBRixPQUFBQyxVQUFBQyxjQWtEQVYsR0FBQUQsUUFBQThwQixHL0IwcEhNLFNBQVM3cEIsRUFB
UUQsRUFBU0gsR2dDNXFIaEMsUUFBQXNxQixHQUFBbFksR0FDQSxJQUFBbVksRUFBQW5ZLElBQUFv
WSxFQUFBcFksSUFBQXFZLEVBQ0EsUUFFQSxJQUFBQyxHQUFBQyxFQUFBdlksRUFDQSxXQUFBc1ks
RUFDQSxRQUVBLElBQUFFLEdBQUE5cEIsRUFBQVAsS0FBQW1xQixFQUFBLGdCQUFBQSxFQUFBdGMs
V0FDQSx5QkFBQXdjLG9CQUNBQyxFQUFBdHFCLEtBQUFxcUIsSUFBQUUsRUExREEsR0FBQU4sR0FB
QXhxQixFQUFBLEtBQ0EycUIsRUFBQTNxQixFQUFBLEtBQ0F1cUIsRUFBQXZxQixFQUFBLEtBR0F5
cUIsRUFBQSxrQkFHQU0sRUFBQUMsU0FBQW5xQixVQUNBb3FCLEVBQUFycUIsT0FBQUMsVUFHQWdx
QixFQUFBRSxFQUFBcGpCLFNBR0E3RyxFQUFBbXFCLEVBQUFucUIsZUFHQWdxQixFQUFBRCxFQUFB
dHFCLEtBQUFLLE9BMkNBUixHQUFBRCxRQUFBbXFCLEdoQ211SE0sU0FBU2xxQixFQUFRRCxFQUFT
SCxHaUN0eEhoQyxZQVdBLFNBQUFrckIsR0FBQWxrQixFQUFBakMsR0FNQSxNQUhBcVQsT0FBQXdS
LFFBQUE3a0IsS0FDQUEsSUFBQSxJQUVBQSxJQUFBNEIsWUFBQUssRUFBQVYsV0FrQkEsUUFBQTZr
QixHQUFBbmtCLEVBQUFpSyxFQUFBYyxHQUNBVCxFQUFBaEIsaUJBQUF0SixFQUFBaUssRUFBQWMs
R0FHQSxRQUFBcVosR0FBQXBrQixFQUFBWCxFQUFBMEwsR0FDQXFHLE1BQUF3UixRQUFBdmpCLEdB
Q0FnbEIsRUFBQXJrQixFQUFBWCxFQUFBLEdBQUFBLEVBQUEsR0FBQTBMLEdBRUF1WixFQUFBdGtC
LEVBQUFYLEVBQUEwTCxHQUlBLFFBQUFrVyxHQUFBamhCLEVBQUFYLEdBQ0EsR0FBQStSLE1BQUF3
UixRQUFBdmpCLEdBQUEsQ0FDQSxHQUFBa2xCLEdBQUFsbEIsRUFBQSxFQUNBQSxLQUFBLEdBQ0Ft
bEIsRUFBQXhrQixFQUFBWCxFQUFBa2xCLEdBQ0F2a0IsRUFBQWloQixZQUFBc0QsR0FFQXZrQixF
QUFBaWhCLFlBQUE1aEIsR0FHQSxRQUFBZ2xCLEdBQUFya0IsRUFBQXlrQixFQUFBRixFQUFBeFos
R0FFQSxJQURBLEdBQUFoTixHQUFBMG1CLElBQ0EsQ0FDQSxHQUFBQyxHQUFBM21CLEVBQUE0QixX
QUVBLElBREEya0IsRUFBQXRrQixFQUFBakMsRUFBQWdOLEdBQ0FoTixJQUFBd21CLEVBQ0EsS0FF
QXhtQixHQUFBMm1CLEdBSUEsUUFBQUYsR0FBQXhrQixFQUFBMmtCLEVBQUFKLEdBQ0EsUUFDQSxH
QUFBeG1CLEdBQUE0bUIsRUFBQWhsQixXQUNBLElBQUE1QixJQUFBd21CLEVBRUEsS0FFQXZrQixH
QUFBaWhCLFlBQUFsakIsSUFLQSxRQUFBNm1CLEdBQUFILEVBQUFGLEVBQUFNLEdBQ0EsR0FBQTdr
QixHQUFBeWtCLEVBQUF6a0IsV0FDQThrQixFQUFBTCxFQUFBOWtCLFdBQ0FtbEIsS0FBQVAsRUFH
QU0sR0FDQVAsRUFBQXRrQixFQUFBZSxTQUFBZ2tCLGVBQUFGLEdBQUFDLEdBR0FELEdBR0FuYixF
QUFBb2IsRUFBQUQsR0FDQUwsRUFBQXhrQixFQUFBOGtCLEVBQUFQLElBRUFDLEVBQUF4a0IsRUFB
QXlrQixFQUFBRixHQS9GQSxHQUFBamEsR0FBQXRSLEVBQUEsSUFDQWdzQixFQUFBaHNCLEVBQUEs
S0FJQXdSLEdBSEF4UixFQUFBLEdBQ0FBLEVBQUEsR0FFQUEsRUFBQSxLQUNBd1EsRUFBQXhRLEVB
QUEsSUFDQTBRLEVBQUExUSxFQUFBLElBbUJBc3JCLEVBQUE5WixFQUFBLFNBQUF4SyxFQUFBWCxF
QUFBMEwsR0FJQS9LLEVBQUFrTCxhQUFBN0wsRUFBQTBMLEtBOEVBa2EsRUFBQUQsRUFBQUMsaUNB
MEJBQyxHQUNBRCxtQ0FFQUwsdUJBU0FPLGVBQUEsU0FBQW5sQixFQUFBb2xCLEdBS0EsT0FBQUMs
R0FBQSxFQUFtQkEsRUFBQUQsRUFBQXhwQixPQUFvQnlwQixJQUFBLENBQ3ZDLEdBQUFDLEdBQUFG
LEVBQUFDLEVBQ0EsUUFBQUMsRUFBQXJoQixNQUNBLG9CQUNBa2dCLEVBQUFua0IsRUFBQXNsQixF
QUFBQyxRQUFBckIsRUFBQWxrQixFQUFBc2xCLEVBQUFFLFdBV0EsTUFDQSxxQkFDQXBCLEVBQUFw
a0IsRUFBQXNsQixFQUFBRyxTQUFBdkIsRUFBQWxrQixFQUFBc2xCLEVBQUFFLFdBUUEsTUFDQSxr
QkFDQWhjLEVBQUF4SixFQUFBc2xCLEVBQUFDLFFBUUEsTUFDQSxvQkFDQTdiLEVBQUExSixFQUFB
c2xCLEVBQUFDLFFBUUEsTUFDQSxtQkFDQXRFLEVBQUFqaEIsRUFBQXNsQixFQUFBRyxhQWNBcnNC
LEdBQUFELFFBQUErckIsR2pDc3lITSxTQUFTOXJCLEVBQVFELEdrQzUvSHZCLFlBRUEsSUFBQW9S
LElBQ0FoQixLQUFBLCtCQUNBbWMsT0FBQSxxQ0FDQS9FLElBQUEsNkJBR0F2bkIsR0FBQUQsUUFB
QW9SLEdsQzRnSU0sU0FBU25SLEVBQVFELEVBQVNILEdtQ25oSWhDLFlBcUJBLFNBQUEyc0IsS0FD
QSxHQUFBQyxFQUlBLE9BQUFDLEtBQUFDLEdBQUEsQ0FDQSxHQUFBQyxHQUFBRCxFQUFBRCxHQUNB
RyxFQUFBSixFQUFBSyxRQUFBSixFQUVBLElBREFHLEtBQUEsT0FBQXBtQixFQUFBLEtBQUFpbUIs
SUFDQTFULEVBQUErQixRQUFBOFIsR0FBQSxDQUdBRCxFQUFBaFMsY0FBQSxPQUFBblUsRUFBQSxL
QUFBaW1CLEdBQ0ExVCxFQUFBK0IsUUFBQThSLEdBQUFELENBQ0EsSUFBQUcsR0FBQUgsRUFBQUks
VUFDQSxRQUFBQyxLQUFBRixHQUNBRyxFQUFBSCxFQUFBRSxHQUFBTCxFQUFBSyxHQUFBLE9BQUF4
bUIsRUFBQSxLQUFBd21CLEVBQUFQLEtBYUEsUUFBQVEsR0FBQXZmLEVBQUFpZixFQUFBSyxHQUNB
alUsRUFBQW1VLHlCQUFBeHNCLGVBQUFzc0IsR0FBQXhtQixFQUFBLEtBQUF3bUIsR0FBQSxPQUNB
alUsRUFBQW1VLHlCQUFBRixHQUFBdGYsQ0FFQSxJQUFBK04sR0FBQS9OLEVBQUErTix1QkFDQSxJ
QUFBQSxFQUFBLENBQ0EsT0FBQTBSLEtBQUExUixHQUNBLEdBQUFBLEVBQUEvYSxlQUFBeXNCLEdB
QUEsQ0FDQSxHQUFBQyxHQUFBM1IsRUFBQTBSLEVBQ0FFLEdBQUFELEVBQUFULEVBQUFLLEdBR0Es
U0FDRyxRQUFBdGYsRUFBQXVNLG1CQUNIb1QsRUFBQTNmLEVBQUF1TSxpQkFBQTBTLEVBQUFLLElB
Q0EsR0FhQSxRQUFBSyxHQUFBcFQsRUFBQTBTLEVBQUFLLEdBQ0FqVSxFQUFBc0Isd0JBQUFKLEdB
QUF6VCxFQUFBLE1BQUF5VCxHQUFBLE9BQ0FsQixFQUFBc0Isd0JBQUFKLEdBQUEwUyxFQUNBNVQs
RUFBQXdLLDZCQUFBdEosR0FBQTBTLEVBQUFJLFdBQUFDLEdBQUExSixhQS9FQSxHQUFBOWMsR0FB
QTVHLEVBQUEsR0FPQTRzQixHQUxBNXNCLEVBQUEsR0FLQSxNQUtBOHNCLEtBb0ZBM1QsR0FJQStC
LFdBS0FvUyw0QkFLQTdTLDJCQUtBa0osZ0NBUUErSiwwQkFBdUUsS0FZdkV4VCx1QkFBQSxTQUFB
eVQsR0FDQWYsRUFBQWhtQixFQUFBLGNBRUFnbUIsRUFBQXhVLE1BQUF2WCxVQUFBSSxNQUFBVixL
QUFBb3RCLEdBQ0FoQixLQWFBeFMseUJBQUEsU0FBQXlULEdBQ0EsR0FBQUMsSUFBQSxDQUNBLFFB
QUFoQixLQUFBZSxHQUNBLEdBQUFBLEVBQUE5c0IsZUFBQStyQixHQUFBLENBR0EsR0FBQUUsR0FB
QWEsRUFBQWYsRUFDQUMsR0FBQWhzQixlQUFBK3JCLElBQUFDLEVBQUFELEtBQUFFLElBQ0FELEVB
QUFELEdBQUFqbUIsRUFBQSxNQUFBaW1CLEdBQUEsT0FDQUMsRUFBQUQsR0FBQUUsRUFDQWMsR0FB
QSxHQUdBQSxHQUNBbEIsS0FXQW1CLHdCQUFBLFNBQUEzZSxHQUNBLEdBQUFyQixHQUFBcUIsRUFB
QXJCLGNBQ0EsSUFBQUEsRUFBQXVNLGlCQUNBLE1BQUFsQixHQUFBc0Isd0JBQUEzTSxFQUFBdU0s
bUJBQUEsSUFFQSxJQUFBclksU0FBQThMLEVBQUErTix3QkFBQSxDQUdBLEdBQUFBLEdBQUEvTixF
QUFBK04sdUJBRUEsUUFBQUUsS0FBQUYsR0FDQSxHQUFBQSxFQUFBL2EsZUFBQWliLEdBQUEsQ0FH
QSxHQUFBZ1IsR0FBQTVULEVBQUFzQix3QkFBQW9CLEVBQUFFLEdBQ0EsSUFBQWdSLEVBQ0EsTUFB
QUEsSUFJQSxhQU9BZ0IsbUJBQUEsV0FDQW5CLEVBQUEsSUFDQSxRQUFBQyxLQUFBQyxHQUNBQSxF
QUFBaHNCLGVBQUErckIsVUFDQUMsR0FBQUQsRUFHQTFULEdBQUErQixRQUFBdFksT0FBQSxDQUVB
LElBQUEwcUIsR0FBQW5VLEVBQUFtVSx3QkFDQSxRQUFBRixLQUFBRSxHQUNBQSxFQUFBeHNCLGVB
QUFzc0IsVUFDQUUsR0FBQUYsRUFJQSxJQUFBM1MsR0FBQXRCLEVBQUFzQix1QkFDQSxRQUFBSixL
QUFBSSxHQUNBQSxFQUFBM1osZUFBQXVaLFVBQ0FJLEdBQUFKLElBZUFqYSxHQUFBRCxRQUFBZ1os
R25Db2lJTSxTQUFTL1ksRUFBUUQsRUFBU0gsR29DcnhJaEMsWUFrQ0EsU0FBQWd1QixHQUFBaFQs
R0FDQSxxQkFBQUEsR0FBQSxnQkFBQUEsR0FBQSxtQkFBQUEsRUFHQSxRQUFBaVQsR0FBQWpULEdB
Q0EsdUJBQUFBLEdBQUEsaUJBQUFBLEVBRUEsUUFBQWtULEdBQUFsVCxHQUNBLHVCQUFBQSxHQUFB
LGtCQUFBQSxFQTBCQSxRQUFBbVQsR0FBQWhmLEVBQUF3SyxFQUFBVyxFQUFBNVUsR0FDQSxHQUFB
dUYsR0FBQWtFLEVBQUFsRSxNQUFBLGVBQ0FrRSxHQUFBTCxjQUFBc0ssRUFBQWhTLG9CQUFBMUIs
R0FDQWlVLEVBQ0FOLEVBQUErVSwrQkFBQW5qQixFQUFBcVAsRUFBQW5MLEdBRUFrSyxFQUFBZ1Ys
c0JBQUFwakIsRUFBQXFQLEVBQUFuTCxHQUVBQSxFQUFBTCxjQUFBLEtBTUEsUUFBQThLLEdBQUF6
SyxFQUFBd0ssR0FDQSxHQUFBMlUsR0FBQW5mLEVBQUE2TSxtQkFDQXVTLEVBQUFwZixFQUFBOE0s
a0JBSUEsSUFBQTdELE1BQUF3UixRQUFBMEUsR0FDQSxPQUFBM3RCLEdBQUEsRUFBbUJBLEVBQUEy
dEIsRUFBQTFyQixTQUNuQnVNLEVBQUFULHVCQURpRC9OLElBS2pEd3RCLEVBQUFoZixFQUFBd0ss
RUFBQTJVLEVBQUEzdEIsR0FBQTR0QixFQUFBNXRCLFFBRUcydEIsSUFDSEgsRUFBQWhmLEVBQUF3
SyxFQUFBMlUsRUFBQUMsRUFFQXBmLEdBQUE2TSxtQkFBQSxLQUNBN00sRUFBQThNLG1CQUFBLEtB
VUEsUUFBQXVTLEdBQUFyZixHQUNBLEdBQUFtZixHQUFBbmYsRUFBQTZNLG1CQUNBdVMsRUFBQXBm
LEVBQUE4TSxrQkFJQSxJQUFBN0QsTUFBQXdSLFFBQUEwRSxJQUNBLE9BQUEzdEIsR0FBQSxFQUFt
QkEsRUFBQTJ0QixFQUFBMXJCLFNBQ25CdU0sRUFBQVQsdUJBRGlEL04sSUFLakQsR0FBQTJ0QixF
QUFBM3RCLEdBQUF3TyxFQUFBb2YsRUFBQTV0QixJQUNBLE1BQUE0dEIsR0FBQTV0QixPQUdHLElB
QUEydEIsR0FDSEEsRUFBQW5mLEVBQUFvZixHQUNBLE1BQUFBLEVBR0EsYUFNQSxRQUFBRSxHQUFB
dGYsR0FDQSxHQUFBbVgsR0FBQWtJLEVBQUFyZixFQUdBLE9BRkFBLEdBQUE4TSxtQkFBQSxLQUNB
OU0sRUFBQTZNLG1CQUFBLEtBQ0FzSyxFQVlBLFFBQUFvSSxHQUFBdmYsR0FJQSxHQUFBd2YsR0FB
QXhmLEVBQUE2TSxtQkFDQTRTLEVBQUF6ZixFQUFBOE0sa0JBQ0E3RCxPQUFBd1IsUUFBQStFLEdB
QUEvbkIsRUFBQSxjQUNBdUksRUFBQUwsY0FBQTZmLEVBQUF2VixFQUFBaFMsb0JBQUF3bkIsR0FB
QSxJQUNBLElBQUFDLEdBQUFGLElBQUF4ZixHQUFBLElBSUEsT0FIQUEsR0FBQUwsY0FBQSxLQUNB
SyxFQUFBNk0sbUJBQUEsS0FDQTdNLEVBQUE4TSxtQkFBQSxLQUNBNFMsRUFPQSxRQUFBQyxHQUFB
M2YsR0FDQSxRQUFBQSxFQUFBNk0sbUJBM0tBLEdBZUErUyxHQUNBQyxFQWhCQXBvQixFQUFBNUcs
RUFBQSxHQUVBcVosRUFBQXJaLEVBQUEsSUFlQTROLEdBYkE1TixFQUFBLEdBQ0FBLEVBQUEsSUFh
QWl2QixvQkFBQSxTQUFBQyxHQUNBSCxFQUFBRyxHQUtBQyxvQkFBQSxTQUFBRCxHQUNBRixFQUFB
RSxLQXdKQTlWLEdBQ0E0VSxXQUNBQyxZQUNBQyxhQUVBUSx3QkFDQTlVLDJCQUNBNlUscUNBQ0FL
LGdCQUVBM25CLG9CQUFBLFNBQUFwQyxHQUNBLE1BQUFncUIsR0FBQTVuQixvQkFBQXBDLElBRUFx
QyxvQkFBQSxTQUFBckMsR0FDQSxNQUFBZ3FCLEdBQUEzbkIsb0JBQUFyQyxJQUVBcXFCLFdBQUEs
U0FBQWp1QixFQUFBQyxHQUNBLE1BQUE0dEIsR0FBQUksV0FBQWp1QixFQUFBQyxJQUVBaXVCLHdC
QUFBLFNBQUFsdUIsRUFBQUMsR0FDQSxNQUFBNHRCLEdBQUFLLHdCQUFBbHVCLEVBQUFDLElBRUFr
YixrQkFBQSxTQUFBNVcsR0FDQSxNQUFBc3BCLEdBQUExUyxrQkFBQTVXLElBRUF5VyxpQkFBQSxT
QUFBNVgsRUFBQXJELEVBQUF5SCxHQUNBLE1BQUFxbUIsR0FBQTdTLGlCQUFBNVgsRUFBQXJELEVB
QUF5SCxJQUVBb1UsbUJBQUEsU0FBQXRZLEVBQUFFLEVBQUF6RCxFQUFBb3VCLEVBQUFDLEdBQ0Es
TUFBQVAsR0FBQWpTLG1CQUFBdFksRUFBQUUsRUFBQXpELEVBQUFvdUIsRUFBQUMsSUFHQTNoQixZ
QUdBeE4sR0FBQUQsUUFBQWlaLEdwQ3F5SU0sU0FBU2haLEVBQVFELEdxQzEvSXZCLFlBU0EsU0FB
QSttQixHQUFBcmlCLEdBQ0EsR0FBQTJxQixHQUFBLFFBQ0FDLEdBQ0FDLElBQUEsS0FDQUMsSUFB
QSxNQUVBQyxHQUFBLEdBQUEvcUIsR0FBQTFDLFFBQUFxdEIsRUFBQSxTQUFBekksR0FDQSxNQUFB
MEksR0FBQTFJLElBR0EsV0FBQTZJLEVBU0EsUUFBQUMsR0FBQWhyQixHQUNBLEdBQUFpckIsR0FB
QSxXQUNBQyxHQUNBQyxLQUFBLElBQ0FDLEtBQUEsS0FFQUMsRUFBQSxNQUFBcnJCLEVBQUEsVUFB
QUEsRUFBQSxHQUFBQSxFQUFBeWlCLFVBQUEsR0FBQXppQixFQUFBeWlCLFVBQUEsRUFFQSxXQUFB
NEksR0FBQS90QixRQUFBMnRCLEVBQUEsU0FBQS9JLEdBQ0EsTUFBQWdKLEdBQUFoSixLQUlBLEdB
QUFvSixJQUNBakosU0FDQTJJLFdBR0F6dkIsR0FBQUQsUUFBQWd3QixHckMyZ0pNLFNBQVMvdkIs
RUFBUUQsRUFBU0gsR3NDMWpKaEMsWUF1QkEsU0FBQW93QixHQUFBQyxHQUNBLE1BQUFBLEVBQUFD
LGFBQUEsTUFBQUQsRUFBQUUsVUFBQTNwQixFQUFBLGFBRUEsUUFBQTRwQixHQUFBSCxHQUNBRCxF
QUFBQyxHQUNBLE1BQUFBLEVBQUFqZSxPQUFBLE1BQUFpZSxFQUFBSSxTQUFBN3BCLEVBQUEsYUFH
QSxRQUFBOHBCLEdBQUFMLEdBQ0FELEVBQUFDLEdBQ0EsTUFBQUEsRUFBQU0sU0FBQSxNQUFBTixF
QUFBSSxTQUFBN3BCLEVBQUEsYUFvQkEsUUFBQWdxQixHQUFBL1ksR0FDQSxHQUFBQSxFQUFBLENB
Q0EsR0FBQXpWLEdBQUF5VixFQUFBMU0sU0FDQSxJQUFBL0ksRUFDQSxzQ0FBQUEsRUFBQSxLQUdB
LFNBMURBLEdBQUF3RSxHQUFBNUcsRUFBQSxHQUVBNndCLEVBQUE3d0IsRUFBQSxLQUNBOHdCLEVB
QUE5d0IsRUFBQSxJQUVBeVcsRUFBQXpXLEVBQUEsSUFDQWlYLEVBQUE2WixFQUFBcmEsRUFBQU8s
Z0JBS0ErWixHQUhBL3dCLEVBQUEsR0FDQUEsRUFBQSxJQUdBcWxCLFFBQUEsRUFDQTJMLFVBQUEs
RUFDQUMsT0FBQSxFQUNBQyxRQUFBLEVBQ0FDLE9BQUEsRUFDQXZrQixPQUFBLEVBQ0F3a0IsUUFB
QSxJQWdCQUMsR0FDQWpmLE1BQUEsU0FBQTBGLEVBQUF6SixFQUFBaWpCLEdBQ0EsT0FBQXhaLEVB
QUF6SixJQUFBMGlCLEVBQUFqWixFQUFBN00sT0FBQTZNLEVBQUEyWSxVQUFBM1ksRUFBQXlaLFVB
QUF6WixFQUFBb0IsU0FDQSxLQUVBLEdBQUFqWCxPQUFBO0VBRUEwdUIsUUFBQSxTQUFBN1ksRUFB
QXpKLEVBQUFpakIsR0FDQSxPQUFBeFosRUFBQXpKLElBQUF5SixFQUFBMlksVUFBQTNZLEVBQUF5
WixVQUFBelosRUFBQW9CLFNBQ0EsS0FFQSxHQUFBalgsT0FBQSwwTkFFQXd1QixTQUFBeFosRUFB
QXVhLE1BR0FDLEtBZUFDLEdBQ0FDLGVBQUEsU0FBQUMsRUFBQTlaLEVBQUFELEdBQ0EsT0FBQXhK
LEtBQUFnakIsR0FBQSxDQUNBLEdBQUFBLEVBQUF2d0IsZUFBQXVOLEdBQ0EsR0FBQXRNLEdBQUFz
dkIsRUFBQWhqQixHQUFBeUosRUFBQXpKLEVBQUF1akIsRUFBQSxZQUFBZixFQUVBLElBQUE5dUIs
WUFBQUUsVUFBQUYsRUFBQWMsVUFBQTR1QixJQUFBLENBR0FBLEVBQUExdkIsRUFBQWMsVUFBQSxD
QUVBK3RCLEdBQUEvWSxNQVVBZ2EsU0FBQSxTQUFBeEIsR0FDQSxNQUFBQSxHQUFBRSxXQUNBQyxF
QUFBSCxHQUNBQSxFQUFBRSxVQUFBbmUsT0FFQWllLEVBQUFqZSxPQVFBMGYsV0FBQSxTQUFBekIs
R0FDQSxNQUFBQSxHQUFBQyxhQUNBSSxFQUFBTCxHQUNBQSxFQUFBQyxZQUFBbGUsT0FFQWllLEVB
QUFNLFNBT0FvQixnQkFBQSxTQUFBMUIsRUFBQWxoQixHQUNBLE1BQUFraEIsR0FBQUUsV0FDQUMs
RUFBQUgsR0FDQUEsRUFBQUUsVUFBQXlCLGNBQUE3aUIsRUFBQTVLLE9BQUE2TixRQUNLaWUsRUFB
QUMsYUFDTEksRUFBQUwsR0FDQUEsRUFBQUMsWUFBQTBCLGNBQUE3aUIsRUFBQTVLLE9BQUFvc0Is
VUFDS04sRUFBQUksU0FDTEosRUFBQUksU0FBQWx3QixLQUFBeUIsT0FBQW1OLEdBREssUUFNTC9P
LEdBQUFELFFBQUF1eEIsR3RDMGtKTSxTQUFTdHhCLEVBQVFELEVBQVNILEd1Q3ZzSmhDLFlBRUEs
SUFBQTRHLEdBQUE1RyxFQUFBLEdBSUFpeUIsR0FGQWp5QixFQUFBLElBRUEsR0FFQWt5QixHQUtB
QyxzQkFBQSxLQU1BQyx1QkFBQSxLQUVBeGtCLFdBQ0F5a0Isa0JBQUEsU0FBQUMsR0FDQUwsRUFB
QXJyQixFQUFBLGNBQ0FzckIsRUFBQUMsc0JBQUFHLEVBQUFILHNCQUNBRCxFQUFBRSx1QkFBQUUs
RUFBQUYsdUJBQ0FILEdBQUEsSUFLQTd4QixHQUFBRCxRQUFBK3hCLEd2Q3d0Sk0sU0FBUzl4QixF
QUFRRCxFQUFTSCxHd0N2dkpoQyxZQVlBLFNBQUFxdUIsR0FBQWpzQixFQUFBb3ZCLEVBQUFyd0Is
R0FDQSxJQUNBcXdCLEVBQUFyd0IsR0FDRyxNQUFBNG9CLEdBQ0gsT0FBQXdJLElBQ0FBLEVBQUF4
SSxJQWZBLEdBQUF3SSxHQUFBLEtBb0JBbFosR0FDQWdWLHdCQU1BRCwrQkFBQUMsRUFNQTdTLG1C
QUFBLFdBQ0EsR0FBQStXLEVBQUEsQ0FDQSxHQUFBeHdCLEdBQUF3d0IsQ0FFQSxNQURBQSxHQUFB
LEtBQ0F4d0IsSUF3QkEzQixHQUFBRCxRQUFBa1osR3hDd3dKTSxTQUFTalosRUFBUUQsRUFBU0gs
R3lDeDBKaEMsWUFZQSxTQUFBNEwsR0FBQStJLEdBQ0F2TCxFQUFBd0MsY0FBQStJLEdBR0EsUUFB
QTZkLEdBQUE3cEIsR0FDQSxHQUFBc0MsU0FBQXRDLEVBQ0EsZUFBQXNDLEVBQ0EsTUFBQUEsRUFF
QSxJQUFBd25CLEdBQUE5cEIsRUFBQXlGLGFBQUF6RixFQUFBeUYsWUFBQWhNLE1BQUE2SSxFQUNB
L0csRUFBQXRELE9BQUFzRCxLQUFBeUUsRUFDQSxPQUFBekUsR0FBQXRCLE9BQUEsR0FBQXNCLEVB
QUF0QixPQUFBLEdBQ0E2dkIsRUFBQSxXQUFBdnVCLEVBQUFMLEtBQUEsVUFFQTR1QixFQUdBLFFB
QUFDLEdBQUFDLEVBQUFDLEdBQ0EsR0FBQWplLEdBQUF1SSxFQUFBRyxJQUFBc1YsRUFDQSxLQUFB
aGUsRUFBQSxDQVFBLFlBT0EsTUFBQUEsR0E1Q0EsR0FBQS9OLEdBQUE1RyxFQUFBLEdBR0FrZCxH
QURBbGQsRUFBQSxJQUNBQSxFQUFBLEtBRUFvSixHQURBcEosRUFBQSxHQUNBQSxFQUFBLElBOENB
NnlCLEdBNUNBN3lCLEVBQUEsR0FDQUEsRUFBQSxJQW1EQTh5QixVQUFBLFNBQUFILEdBRUEsR0FN
QWhlLEdBQUF1SSxFQUFBRyxJQUFBc1YsRUFDQSxTQUFBaGUsS0FJQUEsRUFBQW5QLG9CQWVBdXRC
LGdCQUFBLFNBQUFKLEVBQUE1b0IsRUFBQTZvQixHQUNBQyxFQUFBRyxpQkFBQWpwQixFQUFBNm9C
LEVBQ0EsSUFBQWplLEdBQUErZCxFQUFBQyxFQU9BLE9BQUFoZSxJQUlBQSxFQUFBaEssa0JBQ0Fn
SyxFQUFBaEssa0JBQUE1RCxLQUFBZ0QsR0FFQTRLLEVBQUFoSyxtQkFBQVosT0FNQTZCLEdBQUEr
SSxJQVpBLE1BZUFzZSx3QkFBQSxTQUFBdGUsRUFBQTVLLEdBQ0E0SyxFQUFBaEssa0JBQ0FnSyxF
QUFBaEssa0JBQUE1RCxLQUFBZ0QsR0FFQTRLLEVBQUFoSyxtQkFBQVosR0FFQTZCLEVBQUErSSxJ
QWdCQXVlLG1CQUFBLFNBQUFQLEdBQ0EsR0FBQWhlLEdBQUErZCxFQUFBQyxFQUFBLGNBRUFoZSxL
QUlBQSxFQUFBd2UscUJBQUEsRUFFQXZuQixFQUFBK0ksS0FjQXllLG9CQUFBLFNBQUFULEVBQUFV
LEVBQUF0cEIsR0FDQSxHQUFBNEssR0FBQStkLEVBQUFDLEVBQUEsZUFFQWhlLEtBSUFBLEVBQUEy
ZSxvQkFBQUQsR0FDQTFlLEVBQUE0ZSxzQkFBQSxFQUdBdnhCLFNBQUErSCxHQUFBLE9BQUFBLElB
Q0E4b0IsRUFBQUcsaUJBQUFqcEIsRUFBQSxnQkFDQTRLLEVBQUFoSyxrQkFDQWdLLEVBQUFoSyxr
QkFBQTVELEtBQUFnRCxHQUVBNEssRUFBQWhLLG1CQUFBWixJQUlBNkIsRUFBQStJLEtBYUE2ZSxn
QkFBQSxTQUFBYixFQUFBYyxHQU1BLEdBQUE5ZSxHQUFBK2QsRUFBQUMsRUFBQSxXQUVBLElBQUFo
ZSxFQUFBLENBSUEsR0FBQXJILEdBQUFxSCxFQUFBMmUscUJBQUEzZSxFQUFBMmUsc0JBQ0FobUIs
R0FBQXZHLEtBQUEwc0IsR0FFQTduQixFQUFBK0ksS0FHQStlLHVCQUFBLFNBQUEvZSxFQUFBWSxF
QUFBb2UsR0FDQWhmLEVBQUFpZixnQkFBQXJlLEVBRUFaLEVBQUFjLFNBQUFrZSxFQUNBL25CLEVB
QUErSSxJQUdBcWUsaUJBQUEsU0FBQWpwQixFQUFBNm9CLEdBQ0E3b0IsR0FBQSxrQkFBQUEsR0FB
QW5ELEVBQUEsTUFBQWdzQixFQUFBSixFQUFBem9CLElBQUEsU0FJQTNKLEdBQUFELFFBQUEweUIs
R3pDdzFKTSxTQUFTenlCLEVBQVFELEcwQ3BqS3ZCLFlBTUEsSUFBQXFSLEdBQUEsU0FBQWdnQixH
QUNBLHlCQUFBcUMsY0FBQUMsd0JBQ0EsU0FBQUMsRUFBQUMsRUFBQUMsRUFBQUMsR0FDQUwsTUFB
QUMsd0JBQUEsV0FDQSxNQUFBdEMsR0FBQXVDLEVBQUFDLEVBQUFDLEVBQUFDLE1BSUExQyxFQUlB
cHhCLEdBQUFELFFBQUFxUixHMUNza0tNLFNBQVNwUixFQUFRRCxHMkMxbEt2QixZQWFBLFNBQUFn
MEIsR0FBQW5tQixHQUNBLEdBQUFvbUIsR0FDQUMsRUFBQXJtQixFQUFBcW1CLE9BZ0JBLE9BZEEs
WUFBQXJtQixJQUNBb21CLEVBQUFwbUIsRUFBQW9tQixTQUdBLElBQUFBLEdBQUEsS0FBQUMsSUFD
QUQsRUFBQSxLQUlBQSxFQUFBQyxFQUtBRCxHQUFBLFNBQUFBLEVBQ0FBLEVBR0EsRUFHQWgwQixF
QUFBRCxRQUFBZzBCLEczQzBtS00sU0FBUy96QixFQUFRRCxHNENocEt2QixZQWlCQSxTQUFBbTBC
LEdBQUFDLEdBQ0EsR0FBQUMsR0FBQWx6QixLQUNBME0sRUFBQXdtQixFQUFBeG1CLFdBQ0EsSUFB
QUEsRUFBQW9YLGlCQUNBLE1BQUFwWCxHQUFBb1gsaUJBQUFtUCxFQUVBLElBQUFFLEdBQUFDLEVB
QUFILEVBQ0EsU0FBQUUsS0FBQXptQixFQUFBeW1CLEdBR0EsUUFBQS9QLEdBQUExVyxHQUNBLE1B
QUFzbUIsR0FyQkEsR0FBQUksSUFDQUMsSUFBQSxTQUNBQyxRQUFBLFVBQ0FDLEtBQUEsVUFDQUMs
TUFBQSxXQW9CQTEwQixHQUFBRCxRQUFBdWtCLEc1Q2dxS00sU0FBU3RrQixFQUFRRCxHNkMvckt2
QixZQVVBLFNBQUF1ZCxHQUFBMVAsR0FDQSxHQUFBekosR0FBQXlKLEVBQUF6SixRQUFBeUosRUFB
QXlYLFlBQUEzZCxNQVNBLE9BTkF2RCxHQUFBd3dCLDBCQUNBeHdCLElBQUF3d0IseUJBS0EsSUFB
QXh3QixFQUFBVSxTQUFBVixFQUFBeUMsV0FBQXpDLEVBR0FuRSxFQUFBRCxRQUFBdWQsRzdDK3NL
TSxTQUFTdGQsRUFBUUQsRUFBU0gsRzhDdHVLaEMsWUEwQkEsU0FBQTRlLEdBQUFvVyxFQUFBQyxH
QUNBLElBQUFodEIsRUFBQUosV0FBQW90QixLQUFBLG9CQUFBbHRCLFdBQ0EsUUFHQSxJQUFBcWxC
LEdBQUEsS0FBQTRILEVBQ0FFLEVBQUE5SCxJQUFBcmxCLFNBRUEsS0FBQW10QixFQUFBLENBQ0Es
R0FBQW5kLEdBQUFoUSxTQUFBQyxjQUFBLE1BQ0ErUCxHQUFBb2QsYUFBQS9ILEVBQUEsV0FDQThI
LEVBQUEsa0JBQUFuZCxHQUFBcVYsR0FRQSxPQUxBOEgsR0FBQUUsR0FBQSxVQUFBSixJQUVBRSxF
QUFBbnRCLFNBQUFzdEIsZUFBQUMsV0FBQSx1QkFHQUosRUEzQ0EsR0FFQUUsR0FGQW50QixFQUFB
akksRUFBQSxFQUdBaUksR0FBQUosWUFDQXV0QixFQUFBcnRCLFNBQUFzdEIsZ0JBQUF0dEIsU0FB
QXN0QixlQUFBQyxZQUdBdnRCLFNBQUFzdEIsZUFBQUMsV0FBQSxhQXVDQWwxQixFQUFBRCxRQUFB
eWUsRzlDc3ZLTSxTQUFTeGUsRUFBUUQsRytDdHlLdkIsWUFjQSxTQUFBbzFCLEdBQUEvZixFQUFB
RCxHQUNBLEdBQUFpZ0IsR0FBQSxPQUFBaGdCLFFBQUEsRUFDQWlnQixFQUFBLE9BQUFsZ0IsUUFB
QSxDQUNBLElBQUFpZ0IsR0FBQUMsRUFDQSxNQUFBRCxLQUFBQyxDQUdBLElBQUFDLFNBQUFsZ0Is
R0FDQW1nQixRQUFBcGdCLEVBQ0Esa0JBQUFtZ0IsR0FBQSxXQUFBQSxFQUNBLFdBQUFDLEdBQUEs
V0FBQUEsRUFFQSxXQUFBQSxHQUFBbmdCLEVBQUF2SyxPQUFBc0ssRUFBQXRLLE1BQUF1SyxFQUFB
M1EsTUFBQTBRLEVBQUExUSxJQUlBekUsRUFBQUQsUUFBQW8xQixHL0NzektNLFNBQVNuMUIsRUFB
UUQsRUFBU0gsR2dEcDFLaEMsWUFFQSxJQUVBc0MsSUFGQXRDLEVBQUEsR0FFQUEsRUFBQSxJQUdB
NDFCLEdBRkE1MUIsRUFBQSxHQUVBc0MsRUFnV0FsQyxHQUFBRCxRQUFBeTFCLEdoRG8yS00sU0FB
U3gxQixFQUFRRCxHaURydEx2QixZQVVBLFNBQUFvQyxHQUFBTSxHQUVBLG1CQUFBdUksVUFBQSxr
QkFBQUEsU0FBQXJKLE9BQ0FxSixRQUFBckosTUFBQWMsRUFHQSxLQUlBLFNBQUFaLE9BQUFZLEdB
RUcsTUFBQWpCLEtBcEJIekIsRUFBQWtvQixZQUFBLEVBQ0Fsb0IsRUFBQW1vQixRQUFBL2xCLEdq
RGd2TE0sU0FBU25DLEVBQVFELEVBQVNILEdrRG52TGhDLFlBYUEsSUFBQXNDLEdBQUF0QyxFQUFB
LEdBTUE2MUIsR0FTQUMsT0FBQSxTQUFBdnhCLEVBQUF3eEIsRUFBQWhzQixHQUNBLE1BQUF4RixH
QUFBOEQsa0JBQ0E5RCxFQUFBOEQsaUJBQUEwdEIsRUFBQWhzQixHQUFBLElBRUFvVCxPQUFBLFdB
Q0E1WSxFQUFBeXhCLG9CQUFBRCxFQUFBaHNCLEdBQUEsTUFHS3hGLEVBQUErRCxhQUNML0QsRUFB
QStELFlBQUEsS0FBQXl0QixFQUFBaHNCLElBRUFvVCxPQUFBLFdBQ0E1WSxFQUFBMHhCLFlBQUEs
S0FBQUYsRUFBQWhzQixNQUpLLFFBa0JMa3JCLFFBQUEsU0FBQTF3QixFQUFBd3hCLEVBQUFoc0Is
R0FDQSxNQUFBeEYsR0FBQThELGtCQUNBOUQsRUFBQThELGlCQUFBMHRCLEVBQUFoc0IsR0FBQSxJ
QUVBb1QsT0FBQSxXQUNBNVksRUFBQXl4QixvQkFBQUQsRUFBQWhzQixHQUFBLE9BUUFvVCxPQUFB
N2EsSUFLQTR6QixnQkFBQSxhQUdBOTFCLEdBQUFELFFBQUEwMUIsR2xEeXZMTSxTQUFTejFCLEVB
QVFELEdtRDF6THZCLFlBTUEsU0FBQWcyQixHQUFBcHhCLEdBSUEsSUFDQUEsRUFBQXF4QixRQUNH
LE1BQUF4MEIsS0FHSHhCLEVBQUFELFFBQUFnMkIsR25EMDBMTSxTQUFTLzFCLEVBQVFELEdvRG4y
THZCLFlBeUJBLFNBQUFrMkIsR0FBQXhZLEdBRUEsR0FEQUEsTUFBQSxtQkFBQTlWLG1CQUFBL0Ys
UUFDQSxtQkFBQTZiLEdBQ0EsV0FFQSxLQUNBLE1BQUFBLEdBQUF5WSxlQUFBelksRUFBQTBZLEtB
Q0csTUFBQTMwQixHQUNILE1BQUFpYyxHQUFBMFksTUFJQW4yQixFQUFBRCxRQUFBazJCLEdwRHky
TE0sU0FBU2oyQixFQUFRRCxFQUFTSCxHcUQ5NExoQyxHQUFBdzJCLEdBQUF4MkIsRUFBQSxLQUdB
eTJCLEVBQUFELEVBQUFDLE1BRUFyMkIsR0FBQUQsUUFBQXMyQixHckRxNUxNLFNBQVNyMkIsRUFB
UUQsRUFBU0gsR3NEajVMaEMsWUFNQSxJQUFBc1ksR0FBQXRZLEVBQUEsSUFDQUksR0FBQUQsUUFB
QSxTQUFBNlcsR0FFQSxHQUFBMGYsSUFBQSxDQUNBLE9BQUFwZSxHQUFBdEIsRUFBQTBmLEt0RGs2
TE0sU0FBU3QyQixFQUFRRCxFQUFTSCxHdUR6NUxoQ0ksRUFBQUQsUUFBQUgsRUFBQSxRdkQ2N0xN
LFNBQVNJLEVBQVFELEd3RGg5THZCLFlBRUEsSUFBQTB3QixHQUFBLDhDQUVBendCLEdBQUFELFFB
QUEwd0IsR3hEZytMTSxTQUFTendCLEVBQVFELEd5RG4rTHZCLFlBeURBLFNBQUF3MkIsR0FBQUMs
RUFBQS94QixHQUNBLE1BQUEreEIsR0FBQS94QixFQUFBZ3lCLE9BQUEsR0FBQUMsY0FBQWp5QixF
QUFBeWlCLFVBQUEsR0FwREEsR0FBQXlQLElBQ0FDLHlCQUFBLEVBQ0FDLG1CQUFBLEVBQ0FDLGtC
QUFBLEVBQ0FDLGtCQUFBLEVBQ0FDLFNBQUEsRUFDQUMsY0FBQSxFQUNBQyxpQkFBQSxFQUNBQyxh
QUFBLEVBQ0FDLE1BQUEsRUFDQUMsVUFBQSxFQUNBQyxjQUFBLEVBQ0FDLFlBQUEsRUFDQUMsY0FB
QSxFQUNBQyxXQUFBLEVBQ0FDLFNBQUEsRUFDQUMsWUFBQSxFQUNBQyxhQUFBLEVBQ0FDLGNBQUEs
RUFDQUMsWUFBQSxFQUNBQyxlQUFBLEVBQ0FDLGdCQUFBLEVBQ0FDLGlCQUFBLEVBQ0FDLFlBQUEs
RUFDQUMsV0FBQSxFQUNBQyxZQUFBLEVBQ0FDLFNBQUEsRUFDQUMsT0FBQSxFQUNBQyxTQUFBLEVB
Q0FDLFNBQUEsRUFDQUMsUUFBQSxFQUNBQyxRQUFBLEVBQ0FDLE1BQUEsRUFHQUMsYUFBQSxFQUNB
QyxjQUFBLEVBQ0FDLGFBQUEsRUFDQUMsaUJBQUEsRUFDQUMsa0JBQUEsRUFDQUMsa0JBQUEsRUFD
QUMsZUFBQSxFQUNBQyxhQUFBLEdBaUJBQyxHQUFBLHdCQUlBNTRCLFFBQUFzRCxLQUFBNnlCLEdB
QUEveUIsUUFBQSxTQUFBeTFCLEdBQ0FELEVBQUF4MUIsUUFBQSxTQUFBNHlCLEdBQ0FHLEVBQUFK
LEVBQUFDLEVBQUE2QyxJQUFBMUMsRUFBQTBDLE1BYUEsSUFBQUMsSUFDQUMsWUFDQUMsc0JBQUEs
RUFDQUMsaUJBQUEsRUFDQUMsaUJBQUEsRUFDQUMscUJBQUEsRUFDQUMscUJBQUEsRUFDQUMsa0JB
QUEsR0FFQUMsb0JBQ0FILHFCQUFBLEVBQ0FDLHFCQUFBLEdBRUFHLFFBQ0FDLGFBQUEsRUFDQUMs
YUFBQSxFQUNBQyxhQUFBLEdBRUFDLGNBQ0FDLG1CQUFBLEVBQ0FDLG1CQUFBLEVBQ0FDLG1CQUFB
LEdBRUFDLFlBQ0FDLGlCQUFBLEVBQ0FDLGlCQUFBLEVBQ0FDLGlCQUFBLEdBRUFDLGFBQ0FDLGtC
QUFBLEVBQ0FDLGtCQUFBLEVBQ0FDLGtCQUFBLEdBRUFDLFdBQ0FDLGdCQUFBLEVBQ0FDLGdCQUFB
LEVBQ0FDLGdCQUFBLEdBRUFDLE1BQ0FDLFdBQUEsRUFDQUMsYUFBQSxFQUNBbkQsWUFBQSxFQUNB
b0QsVUFBQSxFQUNBbEQsWUFBQSxFQUNBbUQsWUFBQSxHQUVBQyxTQUNBQyxjQUFBLEVBQ0FDLGNB
QUEsRUFDQUMsY0FBQSxJQUlBQyxHQUNBakYsbUJBQ0EyQyw4QkFHQXQ1QixHQUFBRCxRQUFBNjdC
LEd6RG0vTE0sU0FBUzU3QixFQUFRRCxFQUFTSCxHMERob01oQyxZQUlBLFNBQUFpOEIsR0FBQUMs
RUFBQUMsR0FBaUQsS0FBQUQsWUFBQUMsSUFBMEMsU0FBQWo1QixXQUFBLHFDQUYzRixHQUFBMEQs
R0FBQTVHLEVBQUEsR0FJQW9NLEVBQUFwTSxFQUFBLElBZ0JBMkosR0FkQTNKLEVBQUEsR0FjQSxX
QUNBLFFBQUEySixHQUFBaEIsR0FDQXN6QixFQUFBMzZCLEtBQUFxSSxHQUVBckksS0FBQTg2QixX
QUFBLEtBQ0E5NkIsS0FBQSs2QixVQUFBLEtBQ0EvNkIsS0FBQWc3QixLQUFBM3pCLEVBMkVBLE1B
L0RBZ0IsR0FBQTlJLFVBQUE2SyxRQUFBLFNBQUEzQixFQUFBaUMsR0FDQTFLLEtBQUE4NkIsV0FB
QTk2QixLQUFBODZCLGVBQ0E5NkIsS0FBQTg2QixXQUFBcjFCLEtBQUFnRCxHQUNBekksS0FBQSs2
QixVQUFBLzZCLEtBQUErNkIsY0FDQS82QixLQUFBKzZCLFVBQUF0MUIsS0FBQWlGLElBV0FyQyxF
QUFBOUksVUFBQWdNLFVBQUEsV0FDQSxHQUFBbkMsR0FBQXBKLEtBQUE4NkIsV0FDQUcsRUFBQWo3
QixLQUFBKzZCLFVBQ0ExekIsRUFBQXJILEtBQUFnN0IsSUFDQSxJQUFBNXhCLEdBQUE2eEIsRUFB
QSxDQUNBN3hCLEVBQUE5SCxTQUFBMjVCLEVBQUEzNUIsT0FBQWdFLEVBQUEsYUFDQXRGLEtBQUE4
NkIsV0FBQSxLQUNBOTZCLEtBQUErNkIsVUFBQSxJQUNBLFFBQUExN0IsR0FBQSxFQUFxQkEsRUFB
QStKLEVBQUE5SCxPQUFzQmpDLElBQzNDK0osRUFBQS9KLEdBQUFKLEtBQUFnOEIsRUFBQTU3QixH
QUFBZ0ksRUFFQStCLEdBQUE5SCxPQUFBLEVBQ0EyNUIsRUFBQTM1QixPQUFBLElBSUErRyxFQUFB
OUksVUFBQTI3QixXQUFBLFdBQ0EsTUFBQWw3QixNQUFBODZCLFdBQUE5NkIsS0FBQTg2QixXQUFB
eDVCLE9BQUEsR0FHQStHLEVBQUE5SSxVQUFBNDdCLFNBQUEsU0FBQW55QixHQUNBaEosS0FBQTg2
QixZQUFBOTZCLEtBQUErNkIsWUFDQS82QixLQUFBODZCLFdBQUF4NUIsT0FBQTBILEVBQ0FoSixL
QUFBKzZCLFVBQUF6NUIsT0FBQTBILElBV0FYLEVBQUE5SSxVQUFBK0wsTUFBQSxXQUNBdEwsS0FB
QTg2QixXQUFBLEtBQ0E5NkIsS0FBQSs2QixVQUFBLE1BUUExeUIsRUFBQTlJLFVBQUFtTSxXQUFB
LFdBQ0ExTCxLQUFBc0wsU0FHQWpELEtBR0F2SixHQUFBRCxRQUFBaU0sRUFBQWlCLGFBQUExRCxJ
MURpcE1NLFNBQVN2SixFQUFRRCxFQUFTSCxHMkQ1dk1oQyxZQWFBLFNBQUEwOEIsR0FBQWhwQixH
QUNBLFFBQUFpcEIsRUFBQTc3QixlQUFBNFMsS0FHQWtwQixFQUFBOTdCLGVBQUE0UyxLQUdBbXBC
LEVBQUEvcUIsS0FBQTRCLElBQ0FpcEIsRUFBQWpwQixJQUFBLEdBQ0EsSUFFQWtwQixFQUFBbHBC
LElBQUEsR0FFQSxJQUdBLFFBQUFvcEIsR0FBQXJwQixFQUFBckIsR0FDQSxhQUFBQSxHQUFBcUIs
RUFBQU0sa0JBQUEzQixHQUFBcUIsRUFBQU8saUJBQUErb0IsTUFBQTNxQixJQUFBcUIsRUFBQVEs
eUJBQUE3QixFQUFBLEdBQUFxQixFQUFBUywyQkFBQTlCLEtBQUEsRUE1QkEsR0FBQTlLLEdBQUF0
SCxFQUFBLElBSUFnOUIsR0FIQWg5QixFQUFBLEdBQ0FBLEVBQUEsR0FFQUEsRUFBQSxNQUdBNjhC
LEdBRkE3OEIsRUFBQSxHQUVBLEdBQUFpOUIsUUFBQSxLQUFBMzFCLEVBQUE2TSwwQkFBQSxLQUFB
N00sRUFBQStNLG9CQUFBLFFBQ0F1b0IsS0FDQUQsS0F5QkFPLEdBT0FDLGtCQUFBLFNBQUE5OEIs
R0FDQSxNQUFBaUgsR0FBQUUsa0JBQUEsSUFBQXcxQixFQUFBMzhCLElBR0ErOEIsa0JBQUEsU0FB
QXI0QixFQUFBMUUsR0FDQTBFLEVBQUFvd0IsYUFBQTd0QixFQUFBRSxrQkFBQW5ILElBR0FnOUIs
b0JBQUEsV0FDQSxNQUFBLzFCLEdBQUE4TSxvQkFBQSxPQUdBa3BCLG9CQUFBLFNBQUF2NEIsR0FD
QUEsRUFBQW93QixhQUFBN3RCLEVBQUE4TSxvQkFBQSxLQVVBbXBCLHdCQUFBLFNBQUFuN0IsRUFB
QWdRLEdBQ0EsR0FBQXFCLEdBQUFuTSxFQUFBZ00sV0FBQXhTLGVBQUFzQixHQUFBa0YsRUFBQWdN
LFdBQUFsUixHQUFBLElBQ0EsSUFBQXFSLEVBQUEsQ0FDQSxHQUFBcXBCLEVBQUFycEIsRUFBQXJC
LEdBQ0EsUUFFQSxJQUFBc0IsR0FBQUQsRUFBQUMsYUFDQSxPQUFBRCxHQUFBTSxpQkFBQU4sRUFB
QVMsMkJBQUE5QixLQUFBLEVBQ0FzQixFQUFBLE1BRUFBLEVBQUEsSUFBQXNwQixFQUFBNXFCLEdB
Q0ssTUFBQTlLLEdBQUE4TCxrQkFBQWhSLEdBQ0wsTUFBQWdRLEVBQ0EsR0FFQWhRLEVBQUEsSUFB
QTQ2QixFQUFBNXFCLEdBRUEsTUFVQW9yQiwrQkFBQSxTQUFBcDdCLEVBQUFnUSxHQUNBLE1BQUFz
cUIsR0FBQXQ2QixJQUFBLE1BQUFnUSxFQUdBaFEsRUFBQSxJQUFBNDZCLEVBQUE1cUIsR0FGQSxJ
QVlBcXJCLG9CQUFBLFNBQUExNEIsRUFBQTNDLEVBQUFnUSxHQUNBLEdBQUFxQixHQUFBbk0sRUFB
QWdNLFdBQUF4UyxlQUFBc0IsR0FBQWtGLEVBQUFnTSxXQUFBbFIsR0FBQSxJQUNBLElBQUFxUixF
QUFBLENBQ0EsR0FBQUksR0FBQUosRUFBQUksY0FDQSxJQUFBQSxFQUNBQSxFQUFBOU8sRUFBQXFO
LE9BQ08sSUFBQTBxQixFQUFBcnBCLEVBQUFyQixHQUVQLFdBREE5USxNQUFBbzhCLHVCQUFBMzRC
LEVBQUEzQyxFQUVPLElBQUFxUixFQUFBSyxnQkFHUC9PLEVBQUEwTyxFQUFBRyxjQUFBeEIsTUFD
TyxDQUNQLEdBQUFzQixHQUFBRCxFQUFBQyxjQUNBaXFCLEVBQUFscUIsRUFBQUUsa0JBR0FncUIs
R0FDQTU0QixFQUFBNjRCLGVBQUFELEVBQUFqcUIsRUFBQSxHQUFBdEIsR0FDU3FCLEVBQUFNLGlC
QUFBTixFQUFBUywyQkFBQTlCLEtBQUEsRUFDVHJOLEVBQUFvd0IsYUFBQXpoQixFQUFBLElBRUEz
TyxFQUFBb3dCLGFBQUF6aEIsRUFBQSxHQUFBdEIsU0FHSyxJQUFBOUssRUFBQThMLGtCQUFBaFIs
R0FFTCxXQURBODZCLEdBQUFXLHFCQUFBOTRCLEVBQUEzQyxFQUFBZ1EsSUFlQXlyQixxQkFBQSxT
QUFBOTRCLEVBQUEzQyxFQUFBZ1EsR0FDQSxHQUFBc3FCLEVBQUF0NkIsR0FBQSxDQUdBLE1BQUFn
USxFQUNBck4sRUFBQSs0QixnQkFBQTE3QixHQUVBMkMsRUFBQW93QixhQUFBL3lCLEVBQUEsR0FB
QWdRLEtBb0JBMnJCLHdCQUFBLFNBQUFoNUIsRUFBQTNDLEdBQ0EyQyxFQUFBKzRCLGdCQUFBMTdC
LElBZ0JBczdCLHVCQUFBLFNBQUEzNEIsRUFBQTNDLEdBQ0EsR0FBQXFSLEdBQUFuTSxFQUFBZ00s
V0FBQXhTLGVBQUFzQixHQUFBa0YsRUFBQWdNLFdBQUFsUixHQUFBLElBQ0EsSUFBQXFSLEVBQUEs
Q0FDQSxHQUFBSSxHQUFBSixFQUFBSSxjQUNBLElBQUFBLEVBQ0FBLEVBQUE5TyxFQUFBL0MsWUFD
TyxJQUFBeVIsRUFBQUssZ0JBQUEsQ0FDUCxHQUFBekYsR0FBQW9GLEVBQUFHLFlBQ0FILEdBQUFN
LGdCQUNBaFAsRUFBQXNKLElBQUEsRUFFQXRKLEVBQUFzSixHQUFBLE9BR0F0SixHQUFBKzRCLGdC
QUFBcnFCLEVBQUFDLG1CQUVLcE0sR0FBQThMLGtCQUFBaFIsSUFDTDJDLEVBQUErNEIsZ0JBQUEx
N0IsSUFhQWhDLEdBQUFELFFBQUErOEIsRzNENHdNTSxTQUFTOThCLEVBQVFELEc0RDMrTXZCLFlB
RUEsSUFBQW9ILElBQ0FyQixvQkFBQSxFQUdBOUYsR0FBQUQsUUFBQW9ILEc1RDIvTU0sU0FBU25I
LEVBQVFELEVBQVNILEc2RGpnTmhDLFlBYUEsU0FBQWcrQixLQUNBLEdBQUExOEIsS0FBQTBZLGFB
QUExWSxLQUFBMjhCLGNBQUFDLGNBQUEsQ0FDQTU4QixLQUFBMjhCLGNBQUFDLGVBQUEsQ0FFQSxJ
QUFBcG1CLEdBQUF4VyxLQUFBMEosZ0JBQUE4TSxNQUNBMUYsRUFBQXNmLEVBQUFHLFNBQUEvWixF
QUVBLE9BQUExRixHQUNBK3JCLEVBQUE3OEIsS0FBQTg4QixRQUFBdG1CLEVBQUF1bUIsVUFBQWpz
QixJQWtEQSxRQUFBK3JCLEdBQUF6NEIsRUFBQTI0QixFQUFBQyxHQUNBLEdBQUFDLEdBQUE1OUIs
RUFDQTY5QixFQUFBNTJCLEVBQUFSLG9CQUFBMUIsR0FBQTg0QixPQUVBLElBQUFILEVBQUEsQ0FF
QSxJQURBRSxLQUNBNTlCLEVBQUEsRUFBZUEsRUFBQTI5QixFQUFBMTdCLE9BQXNCakMsSUFDckM0
OUIsRUFBQSxHQUFBRCxFQUFBMzlCLEtBQUEsQ0FFQSxLQUFBQSxFQUFBLEVBQWVBLEVBQUE2OUIs
RUFBQTU3QixPQUFvQmpDLElBQUEsQ0FDbkMsR0FBQTg5QixHQUFBRixFQUFBejlCLGVBQUEwOUIs
RUFBQTc5QixHQUFBeVIsTUFDQW9zQixHQUFBNzlCLEdBQUE4OUIsZUFDQUQsRUFBQTc5QixHQUFB
ODlCLGlCQUdHLENBSUgsSUFEQUYsRUFBQSxHQUFBRCxFQUNBMzlCLEVBQUEsRUFBZUEsRUFBQTY5
QixFQUFBNTdCLE9BQW9CakMsSUFDbkMsR0FBQTY5QixFQUFBNzlCLEdBQUF5UixRQUFBbXNCLEVB
RUEsWUFEQUMsRUFBQTc5QixHQUFBODlCLFVBQUEsRUFJQUQsR0FBQTU3QixTQUNBNDdCLEVBQUEs
R0FBQUMsVUFBQSxJQWdGQSxRQUFBQyxHQUFBdnZCLEdBQ0EsR0FBQTJJLEdBQUF4VyxLQUFBMEos
Z0JBQUE4TSxNQUNBdEosRUFBQWtqQixFQUFBSyxnQkFBQWphLEVBQUEzSSxFQU1BLE9BSkE3TixN
QUFBMFksY0FDQTFZLEtBQUEyOEIsY0FBQUMsZUFBQSxHQUVBOTBCLEVBQUEyQyxLQUFBaXlCLEVB
QUExOEIsTUFDQWtOLEVBdkxBLEdBQUFyQyxHQUFBbk0sRUFBQSxHQUVBMHhCLEVBQUExeEIsRUFB
QSxJQUNBNEgsRUFBQTVILEVBQUEsR0FDQW9KLEVBQUFwSixFQUFBLEdBS0EyK0IsR0FIQTMrQixF
QUFBLElBR0EsR0EwR0E0K0IsR0FDQUMsYUFBQSxTQUFBbjVCLEVBQUFvUyxHQUNBLE1BQUEzTCxN
QUFxQjJMLEdBQ3JCMlksU0FBQS9xQixFQUFBdTRCLGNBQUF4TixTQUNBcmUsTUFBQXBRLFVBSUE4
OEIsYUFBQSxTQUFBcDVCLEVBQUFvUyxHQUtBLEdBQUExRixHQUFBc2YsRUFBQUcsU0FBQS9aLEVB
Q0FwUyxHQUFBdTRCLGVBQ0FDLGVBQUEsRUFDQWEsYUFBQSxNQUFBM3NCLElBQUEwRixFQUFBa25C
LGFBQ0FDLFVBQUEsS0FDQXhPLFNBQUFpTyxFQUFBbm1CLEtBQUE3UyxHQUNBdzVCLFlBQUFkLFFB
QUF0bUIsRUFBQXVtQixXQUdBcjhCLFNBQUE4VixFQUFBMUYsT0FBQXBRLFNBQUE4VixFQUFBa25C
LGNBQUFMLElBRUFBLEdBQUEsSUFJQVEsc0JBQUEsU0FBQXo1QixHQUdBLE1BQUFBLEdBQUF1NEIs
Y0FBQWMsY0FHQUssa0JBQUEsU0FBQTE1QixHQUNBLEdBQUFvUyxHQUFBcFMsRUFBQXNGLGdCQUFB
OE0sS0FJQXBTLEdBQUF1NEIsY0FBQWMsYUFBQS84QixNQUVBLElBQUFrOUIsR0FBQXg1QixFQUFB
dTRCLGNBQUFpQixXQUNBeDVCLEdBQUF1NEIsY0FBQWlCLFlBQUFkLFFBQUF0bUIsRUFBQXVtQixT
QUVBLElBQUFqc0IsR0FBQXNmLEVBQUFHLFNBQUEvWixFQUNBLE9BQUExRixHQUNBMU0sRUFBQXU0
QixjQUFBQyxlQUFBLEVBQ0FDLEVBQUF6NEIsRUFBQTA0QixRQUFBdG1CLEVBQUF1bUIsVUFBQWpz
QixJQUNLOHNCLElBQUFkLFFBQUF0bUIsRUFBQXVtQixZQUVMLE1BQUF2bUIsRUFBQWtuQixhQUNB
YixFQUFBejRCLEVBQUEwNEIsUUFBQXRtQixFQUFBdW1CLFVBQUF2bUIsRUFBQWtuQixjQUdBYixF
QUFBejRCLEVBQUEwNEIsUUFBQXRtQixFQUFBdW1CLFVBQUF2bUIsRUFBQXVtQixZQUFBLE1BaUJB
aitCLEdBQUFELFFBQUF5K0IsRzdEaWhOTSxTQUFTeCtCLEVBQVFELEc4RDdzTnZCLFlBRUEsSUFB
QWsvQixHQUVBQyxHQUNBQyw0QkFBQSxTQUFBam5CLEdBQ0ErbUIsRUFBQS9tQixJQUlBa25CLEdB
Q0FDLE9BQUEsU0FBQUMsR0FDQSxNQUFBTCxHQUFBSyxJQUlBRixHQUFBNXhCLFVBQUEweEIsRUFF
QWwvQixFQUFBRCxRQUFBcS9CLEc5RDZ0Tk0sU0FBU3AvQixFQUFRRCxHK0Q5dU52QixZQUVBLElB
QUEwSyxJQUlBQyxvQkFBQSxFQUdBMUssR0FBQUQsUUFBQTBLLEcvRCt2Tk0sU0FBU3pLLEVBQVFE
LEVBQVNILEdnRXp3TmhDLFlBNEJBLFNBQUEyL0IsR0FBQTVuQixHQUVBLE1BREE2bkIsR0FBQSxP
QUFBaDVCLEVBQUEsTUFBQW1SLEVBQUE5TSxNQUNBLEdBQUEyMEIsR0FBQTduQixHQU9BLFFBQUE4
bkIsR0FBQXB2QixHQUNBLFVBQUFxdkIsR0FBQXJ2QixHQU9BLFFBQUFzdkIsR0FBQXo2QixHQUNB
LE1BQUFBLGFBQUF3NkIsR0E1Q0EsR0FBQWw1QixHQUFBNUcsRUFBQSxHQUlBNC9CLEdBRkE1L0Is
RUFBQSxHQUVBLE1BQ0E4L0IsRUFBQSxLQUVBRSxHQUdBQyw0QkFBQSxTQUFBQyxHQUNBTixFQUFB
TSxHQUlBQyx5QkFBQSxTQUFBRCxHQUNBSixFQUFBSSxJQStCQUUsR0FDQVQsMEJBQ0FFLHdCQUNB
RSxrQkFDQW55QixVQUFBb3lCLEVBR0E1L0IsR0FBQUQsUUFBQWlnQyxHaEV5eE5NLFNBQVNoZ0Ms
RUFBUUQsRUFBU0gsR2lFajFOaEMsWUFRQSxTQUFBcWdDLEdBQUF0N0IsR0FDQSxNQUFBdTdCLEdB
QUF2NEIsU0FBQXc0QixnQkFBQXg3QixHQVBBLEdBQUF5N0IsR0FBQXhnQyxFQUFBLEtBRUFzZ0Ms
RUFBQXRnQyxFQUFBLEtBQ0FtMkIsRUFBQW4yQixFQUFBLElBQ0FxMkIsRUFBQXIyQixFQUFBLElB
WUF5Z0MsR0FDQUMseUJBQUEsU0FBQUMsR0FDQSxHQUFBdHZCLEdBQUFzdkIsS0FBQXR2QixVQUFB
c3ZCLEVBQUF0dkIsU0FBQVcsYUFDQSxPQUFBWCxLQUFBLFVBQUFBLEdBQUEsU0FBQXN2QixFQUFB
MTFCLE1BQUEsYUFBQW9HLEdBQUEsU0FBQXN2QixFQUFBQyxrQkFHQUMsd0JBQUEsV0FDQSxHQUFB
QyxHQUFBekssR0FDQSxRQUNBeUssY0FDQUMsZUFBQU4sRUFBQUMseUJBQUFJLEdBQUFMLEVBQUFP
LGFBQUFGLEdBQUEsT0FTQUcsaUJBQUEsU0FBQUMsR0FDQSxHQUFBQyxHQUFBOUssSUFDQStLLEVB
QUFGLEVBQUFKLFlBQ0FPLEVBQUFILEVBQUFILGNBQ0FJLEtBQUFDLEdBQUFmLEVBQUFlLEtBQ0FY
LEVBQUFDLHlCQUFBVSxJQUNBWCxFQUFBYSxhQUFBRixFQUFBQyxHQUVBbEwsRUFBQWlMLEtBVUFK
LGFBQUEsU0FBQU8sR0FDQSxHQUFBQyxFQUVBLHNCQUFBRCxHQUVBQyxHQUNBQyxNQUFBRixFQUFB
RyxlQUNBQyxJQUFBSixFQUFBSyxrQkFFSyxJQUFBNzVCLFNBQUF5NUIsV0FBQUQsRUFBQWx3QixV
QUFBLFVBQUFrd0IsRUFBQWx3QixTQUFBVyxjQUFBLENBRUwsR0FBQTZ2QixHQUFBOTVCLFNBQUF5
NUIsVUFBQU0sYUFHQUQsR0FBQUUsa0JBQUFSLElBQ0FDLEdBQ0FDLE9BQUFJLEVBQUFHLFVBQUEs
YUFBQVQsRUFBQW52QixNQUFBeFAsUUFDQSsrQixLQUFBRSxFQUFBSSxRQUFBLGFBQUFWLEVBQUFu
dkIsTUFBQXhQLGNBS0E0K0IsR0FBQWhCLEVBQUEwQixXQUFBWCxFQUdBLE9BQUFDLEtBQXlCQyxN
QUFBLEVBQUFFLElBQUEsSUFTekJMLGFBQUEsU0FBQUMsRUFBQVksR0FDQSxHQUFBVixHQUFBVSxF
QUFBVixNQUNBRSxFQUFBUSxFQUFBUixHQUtBLElBSkEzL0IsU0FBQTIvQixJQUNBQSxFQUFBRixH
QUdBLGtCQUFBRixHQUNBQSxFQUFBRyxlQUFBRCxFQUNBRixFQUFBSyxhQUFBbjZCLEtBQUEyNkIs
SUFBQVQsRUFBQUosRUFBQW52QixNQUFBeFAsWUFDSyxJQUFBbUYsU0FBQXk1QixXQUFBRCxFQUFB
bHdCLFVBQUEsVUFBQWt3QixFQUFBbHdCLFNBQUFXLGNBQUEsQ0FDTCxHQUFBNnZCLEdBQUFOLEVB
QUFjLGlCQUNBUixHQUFBUyxVQUFBLEdBQ0FULEVBQUFHLFVBQUEsWUFBQVAsR0FDQUksRUFBQUks
UUFBQSxZQUFBTixFQUFBRixHQUNBSSxFQUFBVSxhQUVBL0IsR0FBQWdDLFdBQUFqQixFQUFBWSxJ
QUtBL2hDLEdBQUFELFFBQUFzZ0MsR2pFaTJOTSxTQUFTcmdDLEVBQVFELEVBQVNILEdrRWg5TmhD
LFlBMENBLFNBQUF5aUMsR0FBQUMsRUFBQUMsR0FFQSxPQURBQyxHQUFBbjdCLEtBQUEyNkIsSUFB
QU0sRUFBQTkvQixPQUFBKy9CLEVBQUEvL0IsUUFDQWpDLEVBQUEsRUFBaUJBLEVBQUFpaUMsRUFB
WWppQyxJQUM3QixHQUFBK2hDLEVBQUE3TCxPQUFBbDJCLEtBQUFnaUMsRUFBQTlMLE9BQUFsMkIs
R0FDQSxNQUFBQSxFQUdBLE9BQUEraEMsR0FBQTkvQixTQUFBKy9CLEVBQUEvL0IsVUFBQWdnQyxF
QVFBLFFBQUFDLEdBQUFDLEdBQ0EsTUFBQUEsR0FJQUEsRUFBQTc5QixXQUFBODlCLEVBQ0FELEVB
QUF2QyxnQkFFQXVDLEVBQUF4OEIsV0FOQSxLQVVBLFFBQUEwOEIsR0FBQWorQixHQUlBLE1BQUFB
LEdBQUFHLGNBQUFILEVBQUFHLGFBQUFDLElBQUEsR0FXQSxRQUFBODlCLEdBQUFDLEVBQUFKLEVB
QUF6NEIsRUFBQTg0QixFQUFBbjNCLEdBQ0EsR0FBQXBCLEVBQ0EsSUFBQUMsRUFBQUMsbUJBQUEs
Q0FDQSxHQUFBczRCLEdBQUFGLEVBQUFsNEIsZ0JBQUE4TSxNQUFBdXJCLE1BQ0FwNEIsRUFBQW00
QixFQUFBbjRCLElBQ0FMLEdBQUEsaUNBQUFLLE9BQUF3bkIsYUFBQXhuQixFQUFBN0ksTUFDQWdK
LFFBQUFDLEtBQUFULEdBR0EsR0FBQW1LLEdBQUF6SixFQUFBb0osZUFBQXd1QixFQUFBNzRCLEVB
QUEsS0FBQWk1QixFQUFBSixFQUFBSixHQUFBOTJCLEVBQUEsRUFHQXBCLElBQ0FRLFFBQUFJLFFB
QUFaLEdBR0FzNEIsRUFBQTE5QixtQkFBQSs5QixpQkFBQUwsRUFDQU0sRUFBQUMsb0JBQUExdUIs
RUFBQSt0QixFQUFBSSxFQUFBQyxFQUFBOTRCLEdBVUEsUUFBQXE1QixHQUFBQyxFQUFBYixFQUFB
SyxFQUFBbjNCLEdBQ0EsR0FBQTNCLEdBQUFqQixFQUFBQywwQkFBQU8sV0FFQXU1QixHQUFBUyxF
QUFBQyxpQkFDQXg1QixHQUFBNkMsUUFBQSsxQixFQUFBLEtBQUFVLEVBQUFiLEVBQUF6NEIsRUFB
QTg0QixFQUFBbjNCLEdBQ0E1QyxFQUFBQywwQkFBQTRELFFBQUE1QyxHQVlBLFFBQUF5NUIsR0FB
QTVILEVBQUE0RyxFQUFBMXRCLEdBY0EsSUFWQTlKLEVBQUE2SixpQkFBQSttQixFQUFBOW1CLEdB
S0EwdEIsRUFBQTc5QixXQUFBODlCLElBQ0FELElBQUF2QyxpQkFJQXVDLEVBQUFpQixXQUNBakIs
RUFBQTdhLFlBQUE2YSxFQUFBaUIsV0FjQSxRQUFBQyxHQUFBbEIsR0FDQSxHQUFBbUIsR0FBQXBC
LEVBQUFDLEVBQ0EsSUFBQW1CLEVBQUEsQ0FDQSxHQUFBditCLEdBQUFrQyxFQUFBVCxvQkFBQTg4
QixFQUNBLFVBQUF2K0IsTUFBQTJCLGNBd0JBLFFBQUE2OEIsR0FBQW4vQixHQUNBLFNBQUFBLEtB
QUFFLFdBQUF3TSxHQUFBMU0sRUFBQUUsV0FBQTg5QixHQUFBaCtCLEVBQUFFLFdBQUF5TSxHQWNB
LFFBQUF5eUIsR0FBQXJCLEdBQ0EsR0FBQW1CLEdBQUFwQixFQUFBQyxHQUNBc0IsRUFBQUgsR0FB
QXI4QixFQUFBVCxvQkFBQTg4QixFQUNBLE9BQUFHLE9BQUEvOEIsWUFBQSs4QixFQUFBLEtBR0Es
UUFBQUMsR0FBQXZCLEdBQ0EsR0FBQXRNLEdBQUEyTixFQUFBckIsRUFDQSxPQUFBdE0sS0FBQThO
LG1CQUFBZixpQkFBQSxLQTlNQSxHQUFBMzhCLEdBQUE1RyxFQUFBLEdBRUFzUixFQUFBdFIsRUFB
QSxJQUNBc0gsRUFBQXRILEVBQUEsSUFDQXlXLEVBQUF6VyxFQUFBLElBQ0EraUIsRUFBQS9pQixF
QUFBLElBRUE0SCxHQURBNUgsRUFBQSxJQUNBQSxFQUFBLElBQ0FzakMsRUFBQXRqQyxFQUFBLEtB
Q0E0akMsRUFBQTVqQyxFQUFBLEtBQ0E2SyxFQUFBN0ssRUFBQSxJQUNBa2QsRUFBQWxkLEVBQUEs
SUFFQXVrQyxHQURBdmtDLEVBQUEsR0FDQUEsRUFBQSxNQUNBc0wsRUFBQXRMLEVBQUEsSUFDQTZ5
QixFQUFBN3lCLEVBQUEsSUFDQW9KLEVBQUFwSixFQUFBLEdBRUFrZSxFQUFBbGUsRUFBQSxJQUNB
d2tDLEVBQUF4a0MsRUFBQSxJQUVBd1EsR0FEQXhRLEVBQUEsR0FDQUEsRUFBQSxLQUNBdTFCLEVB
QUF2MUIsRUFBQSxJQUdBbUYsR0FGQW5GLEVBQUEsR0FFQXNILEVBQUFFLG1CQUNBaTlCLEVBQUFu
OUIsRUFBQThNLG9CQUVBM0MsRUFBQSxFQUNBc3hCLEVBQUEsRUFDQXJ4QixFQUFBLEdBRUFnekIs
S0FzTEFDLEVBQUEsRUFDQUMsRUFBQSxXQUNBdGpDLEtBQUF1akMsT0FBQUYsSUFFQUMsR0FBQS9q
QyxVQUFBaWtDLG9CQUlBRixFQUFBL2pDLFVBQUFra0MsT0FBQSxXQUNBLE1BQUF6akMsTUFBQXdX
LE1BQUF1ckIsT0FFQXVCLEVBQUExNUIsd0JBQUEsQ0FvQkEsSUFBQXM0QixJQUNBb0Isa0JBS0FJ
LHdCQUFBTixFQVVBTyxjQUFBLFNBQUFuQyxFQUFBb0MsR0FDQUEsS0FVQUMscUJBQUEsU0FBQUMs
RUFBQTd2QixFQUFBb2UsRUFBQW1QLEVBQUEvNEIsR0FRQSxNQVBBeTVCLEdBQUF5QixjQUFBbkMs
RUFBQSxXQUNBalEsRUFBQWEsdUJBQUEwUixFQUFBN3ZCLEVBQUFvZSxHQUNBNXBCLEdBQ0E4b0Is
RUFBQUksd0JBQUFtUyxFQUFBcjdCLEtBSUFxN0IsR0FXQUMsd0JBQUEsU0FBQTl2QixFQUFBdXRC
LEVBQUFLLEVBQUFuM0IsR0FNQWs0QixFQUFBcEIsR0FBQSxPQUFBbDhCLEVBQUEsTUFFQW1jLEVB
QUFzQiw2QkFDQSxJQUFBc2YsR0FBQWEsRUFBQWp2QixHQUFBLEVBTUFuTSxHQUFBVSxlQUFBNDVC
LEVBQUFDLEVBQUFiLEVBQUFLLEVBQUFuM0IsRUFFQSxJQUFBczVCLEdBQUEzQixFQUFBNEIsVUFB
QVYsTUFHQSxPQUZBSCxHQUFBWSxHQUFBM0IsRUFFQUEsR0FnQkE2QiwyQkFBQSxTQUFBQyxFQUFB
bHdCLEVBQUF1dEIsRUFBQS80QixHQUVBLE1BREEsT0FBQTA3QixHQUFBdm9CLEVBQUFJLElBQUFt
b0IsR0FBQSxPQUFBNytCLEVBQUEsTUFDQTQ4QixFQUFBa0MsNEJBQUFELEVBQUFsd0IsRUFBQXV0
QixFQUFBLzRCLElBR0EyN0IsNEJBQUEsU0FBQUQsRUFBQWx3QixFQUFBdXRCLEVBQUEvNEIsR0FD
QThvQixFQUFBRyxpQkFBQWpwQixFQUFBLG1CQUNBME0sRUFBQU8sZUFBQXpCLEdBQ0EsT0FBQTNP
LEVBQUEscUJBQUEyTyxHQUFBLHlHQUFBQSxHQUFBLHdGQUFBQSxHQUFBdlQsU0FBQXVULEVBQUF1
QyxNQUFBLHFGQUlBLElBSUE2YixHQUpBZ1MsRUFBQWx2QixFQUFBek8sY0FBQTQ4QixHQUNBdkIs
TUFBQTl0QixHQUlBLElBQUFrd0IsRUFBQSxDQUNBLEdBQUFwcEIsR0FBQWEsRUFBQUcsSUFBQW9v
QixFQUNBOVIsR0FBQXRYLEVBQUF1cEIscUJBQUF2cEIsRUFBQTVHLGNBRUFrZSxHQUFBelYsQ0FH
QSxJQUFBa25CLEdBQUFmLEVBQUF2QixFQUVBLElBQUFzQyxFQUFBLENBQ0EsR0FBQVMsR0FBQVQs
RUFBQXA2QixnQkFDQXdLLEVBQUFxd0IsRUFBQS90QixNQUFBdXJCLEtBQ0EsSUFBQTlOLEVBQUEv
ZixFQUFBRCxHQUFBLENBQ0EsR0FBQXV3QixHQUFBVixFQUFBNS9CLG1CQUFBbUcsb0JBQ0FvNkIs
RUFBQWg4QixHQUFBLFdBQ0FBLEVBQUF4SixLQUFBdWxDLEdBR0EsT0FEQXRDLEdBQUEyQixxQkFB
QUMsRUFBQU8sRUFBQWhTLEVBQUFtUCxFQUFBaUQsR0FDQUQsRUFFQXRDLEVBQUF3Qyx1QkFBQWxE
LEdBSUEsR0FBQW1ELEdBQUFwRCxFQUFBQyxHQUNBb0QsRUFBQUQsS0FBQWpELEVBQUFpRCxHQUNB
RSxFQUFBbkMsRUFBQWxCLEdBaUJBSyxFQUFBK0MsSUFBQWQsSUFBQWUsRUFDQTdnQyxFQUFBaytC
LEVBQUE2Qix3QkFBQU0sRUFBQTdDLEVBQUFLLEVBQUF4UCxHQUFBbnVCLG1CQUFBbUcsbUJBSUEs
T0FIQTVCLElBQ0FBLEVBQUF4SixLQUFBK0UsR0FFQUEsR0FnQkF5L0IsT0FBQSxTQUFBeHZCLEVB
QUF1dEIsRUFBQS80QixHQUNBLE1BQUF5NUIsR0FBQWtDLDRCQUFBLEtBQUFud0IsRUFBQXV0QixF
QUFBLzRCLElBV0FpOEIsdUJBQUEsU0FBQWxELEdBT0FvQixFQUFBcEIsR0FBQSxPQUFBbDhCLEVB
QUEsS0FNQSxJQUFBdytCLEdBQUFmLEVBQUF2QixFQUNBLEtBQUFzQyxFQUFBLENBR0FwQixFQUFB
bEIsR0FHQSxJQUFBQSxFQUFBNzlCLFVBQUE2OUIsRUFBQXNELGFBQUEzQixFQU1BLFVBSUEsYUFG
QUMsR0FBQVUsRUFBQUcsVUFBQVYsUUFDQXo3QixFQUFBVSxlQUFBZzZCLEVBQUFzQixFQUFBdEMs
R0FBQSxJQUNBLEdBR0FXLG9CQUFBLFNBQUExdUIsRUFBQSt0QixFQUFBNUcsRUFBQWlILEVBQUE5
NEIsR0FHQSxHQUZBNjVCLEVBQUFwQixHQUFBLE9BQUFsOEIsRUFBQSxNQUVBdThCLEVBQUEsQ0FD
QSxHQUFBa0QsR0FBQXhELEVBQUFDLEVBQ0EsSUFBQXlCLEVBQUErQixlQUFBdnhCLEVBQUFzeEIs
R0FFQSxXQURBeitCLEdBQUFuQyxhQUFBeTJCLEVBQUFtSyxFQUdBLElBQUFFLEdBQUFGLEVBQUFu
aEMsYUFBQXEvQixFQUFBaUMsbUJBQ0FILEdBQUF2SSxnQkFBQXlHLEVBQUFpQyxtQkFFQSxJQUFB
QyxHQUFBSixFQUFBSyxTQUNBTCxHQUFBbFIsYUFBQW9QLEVBQUFpQyxtQkFBQUQsRUFFQSxJQUFB
SSxHQUFBNXhCLEVBb0JBNnhCLEVBQUFuRSxFQUFBa0UsRUFBQUYsR0FDQUksRUFBQSxhQUFBRixF
QUFBcmYsVUFBQXNmLEVBQUEsR0FBQUEsRUFBQSxtQkFBQUgsRUFBQW5mLFVBQUFzZixFQUFBLEdB
QUFBLEVBQUEsR0FFQTlELEdBQUE3OUIsV0FBQTg5QixFQUFBbjhCLEVBQUEsS0FBQWlnQyxHQUFB
LE9BVUEsR0FGQS9ELEVBQUE3OUIsV0FBQTg5QixFQUFBbjhCLEVBQUEsYUFFQXlELEVBQUF3NUIs
aUJBQUEsQ0FDQSxLQUFBZixFQUFBaUIsV0FDQWpCLEVBQUE3YSxZQUFBNmEsRUFBQWlCLFVBRUF6
eUIsR0FBQWhCLGlCQUFBd3lCLEVBQUEvdEIsRUFBQSxVQUVBdkUsR0FBQXN5QixFQUFBL3RCLEdB
Q0FuTixFQUFBbkMsYUFBQXkyQixFQUFBNEcsRUFBQXg4QixhQWdCQWxHLEdBQUFELFFBQUFxakMs
R2xFZytOTSxTQUFTcGpDLEVBQVFELEVBQVNILEdtRTcrT2hDLFlBRUEsSUFBQTRHLEdBQUE1RyxF
QUFBLEdBRUF5VyxFQUFBelcsRUFBQSxJQUlBOG1DLEdBRkE5bUMsRUFBQSxJQUdBK21DLEtBQUEs
RUFDQUMsVUFBQSxFQUNBQyxNQUFBLEVBRUFDLFFBQUEsU0FBQW5pQyxHQUNBLGNBQUFBLFFBQUEs
RUFDQStoQyxFQUFBRyxNQUNLeHdCLEVBQUFPLGVBQUFqUyxHQUNMLGtCQUFBQSxHQUFBa0csS0FD
QTY3QixFQUFBRSxVQUVBRixFQUFBQyxTQUdBbmdDLEdBQUEsS0FBQTdCLEtBSUEzRSxHQUFBRCxR
QUFBMm1DLEduRTgvT00sU0FBUzFtQyxFQUFRRCxHb0UxaFB2QixZQUVBLElBQUF1ZSxJQUNBa0gs
a0JBQUEsRUFFQUUsaUJBQUEsRUFFQXZCLG9CQUFBLFNBQUE0aUIsR0FDQXpvQixFQUFBa0gsa0JB
QUF1aEIsRUFBQXBkLEVBQ0FyTCxFQUFBb0gsaUJBQUFxaEIsRUFBQW5kLEdBSUE1cEIsR0FBQUQs
UUFBQXVlLEdwRTBpUE0sU0FBU3RlLEVBQVFELEVBQVNILEdxRXRqUGhDLFlBbUJBLFNBQUFzWixH
QUFBcEosRUFBQWszQixHQUdBLE1BRkEsT0FBQUEsRUFBQXhnQyxFQUFBLGFBRUEsTUFBQXNKLEVB
Q0FrM0IsRUFLQWh2QixNQUFBd1IsUUFBQTFaLEdBQ0FrSSxNQUFBd1IsUUFBQXdkLElBQ0FsM0Is
RUFBQW5KLEtBQUExRixNQUFBNk8sRUFBQWszQixHQUNBbDNCLElBRUFBLEVBQUFuSixLQUFBcWdD
LEdBQ0FsM0IsR0FHQWtJLE1BQUF3UixRQUFBd2QsSUFFQWwzQixHQUFBM08sT0FBQTZsQyxJQUdB
bDNCLEVBQUFrM0IsR0F4Q0EsR0FBQXhnQyxHQUFBNUcsRUFBQSxFQUVBQSxHQUFBLEVBeUNBSSxH
QUFBRCxRQUFBbVosR3JFdWtQTSxTQUFTbFosRUFBUUQsR3NFcG5QdkIsWUFVQSxTQUFBb1osR0FB
QTh0QixFQUFBQyxFQUFBbDZCLEdBQ0FnTCxNQUFBd1IsUUFBQXlkLEdBQ0FBLEVBQUFyakMsUUFB
QXNqQyxFQUFBbDZCLEdBQ0dpNkIsR0FDSEMsRUFBQS9tQyxLQUFBNk0sRUFBQWk2QixHQUlBam5D
LEVBQUFELFFBQUFvWixHdEVxb1BNLFNBQVNuWixFQUFRRCxFQUFTSCxHdUV4cFBoQyxZQUlBLFNB
QUF1bkMsR0FBQTdoQyxHQUdBLElBRkEsR0FBQXVGLElBRUFBLEVBQUF2RixFQUFBOGhDLHFCQUFB
VixFQUFBRSxXQUNBdGhDLElBQUFGLGtCQUdBLE9BQUF5RixLQUFBNjdCLEVBQUFDLEtBQ0FyaEMs
RUFBQUYsbUJBQ0d5RixJQUFBNjdCLEVBQUFHLE1BQ0gsS0FERyxPQVhILEdBQUFILEdBQUE5bUMs
RUFBQSxHQWdCQUksR0FBQUQsUUFBQW9uQyxHdkV3cVBNLFNBQVNubkMsRUFBUUQsRUFBU0gsR3dF
MXJQaEMsWUFZQSxTQUFBeW5DLEtBTUEsT0FMQUMsR0FBQXovQixFQUFBSixZQUdBNi9CLEVBQUEs
ZUFBQTMvQixVQUFBdzRCLGdCQUFBLDJCQUVBbUgsRUFoQkEsR0FBQXovQixHQUFBakksRUFBQSxH
QUVBMG5DLEVBQUEsSUFpQkF0bkMsR0FBQUQsUUFBQXNuQyxHeEUwc1BNLFNBQVNybkMsRUFBUUQs
RUFBU0gsR3lFL3RQaEMsWUFJQSxTQUFBMm5DLEdBQUFoSCxHQUNBLEdBQUExMUIsR0FBQTAxQixF
QUFBMTFCLEtBQ0FvRyxFQUFBc3ZCLEVBQUF0dkIsUUFDQSxPQUFBQSxJQUFBLFVBQUFBLEVBQUFX
LGdCQUFBLGFBQUEvRyxHQUFBLFVBQUFBLEdBR0EsUUFBQTI4QixHQUFBbGlDLEdBQ0EsTUFBQUEs
R0FBQXU0QixjQUFBNEosYUFHQSxRQUFBQyxHQUFBcGlDLEVBQUFxaUMsR0FDQXJpQyxFQUFBdTRC
LGNBQUE0SixhQUFBRSxFQUdBLFFBQUFDLEdBQUF0aUMsU0FDQUEsR0FBQXU0QixjQUFBNEosYUFH
QSxRQUFBSSxHQUFBbGpDLEdBQ0EsR0FBQXFOLEVBSUEsT0FIQXJOLEtBQ0FxTixFQUFBdTFCLEVB
QUE1aUMsR0FBQSxHQUFBQSxFQUFBNHJCLFFBQUE1ckIsRUFBQXFOLE9BRUFBLEVBekJBLEdBQUF4
SyxHQUFBNUgsRUFBQSxHQTRCQWtvQyxHQUVBQyxvQkFBQSxTQUFBcGpDLEdBQ0EsTUFBQTZpQyxH
QUFBaGdDLEVBQUFULG9CQUFBcEMsS0FJQXFqQyxNQUFBLFNBQUExaUMsR0FDQSxJQUFBa2lDLEVB
QUFsaUMsR0FBQSxDQUlBLEdBQUFYLEdBQUE2QyxFQUFBUixvQkFBQTFCLEdBQ0EyaUMsRUFBQVYs
RUFBQTVpQyxHQUFBLGtCQUNBdWpDLEVBQUExbkMsT0FBQTJuQyx5QkFBQXhqQyxFQUFBcUosWUFB
QXZOLFVBQUF3bkMsR0FFQUcsRUFBQSxHQUFBempDLEVBQUFzakMsRUFNQXRqQyxHQUFBakUsZUFB
QXVuQyxJQUFBLGtCQUFBQyxHQUFBanJCLEtBQUEsa0JBQUFpckIsR0FBQS9xQixNQUlBM2MsT0FB
QTZuQyxlQUFBMWpDLEVBQUFzakMsR0FDQUssV0FBQUosRUFBQUksV0FDQUMsY0FBQSxFQUNBdHJC
LElBQUEsV0FDQSxNQUFBaXJCLEdBQUFqckIsSUFBQTljLEtBQUFlLE9BRUFpYyxJQUFBLFNBQUFu
TCxHQUNBbzJCLEVBQUEsR0FBQXAyQixFQUNBazJCLEVBQUEvcUIsSUFBQWhkLEtBQUFlLEtBQUE4
USxNQUlBMDFCLEVBQUFwaUMsR0FDQW1zQixTQUFBLFdBQ0EsTUFBQTJXLElBRUFJLFNBQUEsU0FB
QXgyQixHQUNBbzJCLEVBQUEsR0FBQXAyQixHQUVBeTJCLGFBQUEsV0FDQWIsRUFBQXRpQyxTQUNB
WCxHQUFBc2pDLFNBS0FTLHFCQUFBLFNBQUFwakMsR0FDQSxJQUFBQSxFQUNBLFFBRUEsSUFBQXFp
QyxHQUFBSCxFQUFBbGlDLEVBRUEsS0FBQXFpQyxFQUVBLE1BREFHLEdBQUFFLE1BQUExaUMsSUFD
QSxDQUdBLElBQUFxakMsR0FBQWhCLEVBQUFsVyxXQUNBbVgsRUFBQWYsRUFBQXJnQyxFQUFBUixv
QkFBQTFCLEdBRUEsT0FBQXNqQyxLQUFBRCxJQUNBaEIsRUFBQWEsU0FBQUksSUFDQSxJQUtBSCxh
QUFBLFNBQUFuakMsR0FDQSxHQUFBcWlDLEdBQUFILEVBQUFsaUMsRUFDQXFpQyxJQUNBQSxFQUFB
YyxnQkFLQXpvQyxHQUFBRCxRQUFBK25DLEd6RSt1UE0sU0FBUzluQyxFQUFRRCxFQUFTSCxHMEU5
MVBoQyxZQWtCQSxTQUFBNHdCLEdBQUEvWSxHQUNBLEdBQUFBLEVBQUEsQ0FDQSxHQUFBelYsR0FB
QXlWLEVBQUExTSxTQUNBLElBQUEvSSxFQUNBLHNDQUFBQSxFQUFBLEtBR0EsU0FVQSxRQUFBNm1D
LEdBQUFoK0IsR0FDQSx3QkFBQUEsSUFBQSxtQkFBQUEsR0FBQXBLLFdBQUEsa0JBQUFvSyxHQUFB
cEssVUFBQTZULGdCQUFBLGtCQUFBekosR0FBQXBLLFVBQUF5VSxpQkFXQSxRQUFBa3ZCLEdBQUF6
L0IsRUFBQW1rQyxHQUNBLEdBQUFoTixFQUVBLFdBQUFuM0IsUUFBQSxFQUNBbTNCLEVBQUFzRCxF
QUFBQyxPQUFBK0UsT0FDRyxvQkFBQXovQixHQUFBLENBQ0gsR0FBQWdULEdBQUFoVCxFQUNBa0cs
RUFBQThNLEVBQUE5TSxJQUNBLHNCQUFBQSxJQUFBLGdCQUFBQSxHQUFBLENBQ0EsR0FBQWsrQixH
QUFBLEVBTUFBLElBQUF2WSxFQUFBN1ksRUFBQUUsUUFDQXJSLEVBQUEsWUFBQXFFLGFBQUFrK0Is
R0FJQSxnQkFBQXB4QixHQUFBOU0sS0FDQWl4QixFQUFBa0UsRUFBQVQsd0JBQUE1bkIsR0FDS2t4
QixFQUFBbHhCLEVBQUE5TSxPQUlMaXhCLEVBQUEsR0FBQW5rQixHQUFBOU0sS0FBQThNLEdBR0Ft
a0IsRUFBQWhuQixjQUNBZ25CLEVBQUFobkIsWUFBQWduQixFQUFBa04sZ0JBR0FsTixFQUFBLEdB
QUFtTixHQUFBdHhCLE9BRUcsZ0JBQUFoVCxJQUFBLGdCQUFBQSxHQUNIbTNCLEVBQUFrRSxFQUFB
UCxzQkFBQTk2QixHQUVBNkIsRUFBQSxZQUFBN0IsR0F5QkEsT0FmQW0zQixHQUFBb04sWUFBQSxF
QUNBcE4sRUFBQXFOLFlBQUEsS0FjQXJOLEVBNUdBLEdBQUF0MUIsR0FBQTVHLEVBQUEsR0FDQW1N
LEVBQUFuTSxFQUFBLEdBRUF3cEMsRUFBQXhwQyxFQUFBLEtBQ0F3L0IsRUFBQXgvQixFQUFBLElB
Q0FvZ0MsRUFBQXBnQyxFQUFBLElBT0FxcEMsR0FMQXJwQyxFQUFBLEtBQ0FBLEVBQUEsR0FDQUEs
RUFBQSxHQUdBLFNBQUErWCxHQUNBelcsS0FBQW1vQyxVQUFBMXhCLElBa0dBNUwsR0FBQWs5QixF
QUFBeG9DLFVBQUEyb0MsR0FDQUUsMkJBQUFsRixJQUdBcGtDLEVBQUFELFFBQUFxa0MsRzFFODJQ
TSxTQUFTcGtDLEVBQVFELEcyRWwrUHZCLFlBd0JBLFNBQUF3cEMsR0FBQWhKLEdBQ0EsR0FBQXR2
QixHQUFBc3ZCLEtBQUF0dkIsVUFBQXN2QixFQUFBdHZCLFNBQUFXLGFBRUEsaUJBQUFYLElBQ0F1
NEIsRUFBQWpKLEVBQUExMUIsTUFHQSxhQUFBb0csRUF6QkEsR0FBQXU0QixJQUNBQyxPQUFBLEVB
Q0FDLE1BQUEsRUFDQUMsVUFBQSxFQUNBQyxrQkFBQSxFQUNBQyxPQUFBLEVBQ0FDLE9BQUEsRUFD
QUMsUUFBQSxFQUNBQyxVQUFBLEVBQ0F2SSxPQUFBLEVBQ0F3SSxRQUFBLEVBQ0FDLEtBQUEsRUFD
QTc1QixNQUFBLEVBQ0FwRixNQUFBLEVBQ0FrL0IsS0FBQSxFQUNBQyxNQUFBLEVBaUJBcHFDLEdB
QUFELFFBQUF3cEMsRzNFbS9QTSxTQUFTdnBDLEVBQVFELEVBQVNILEc0RTFoUWhDLFlBRUEsSUFB
QWlJLEdBQUFqSSxFQUFBLEdBQ0F1bkIsRUFBQXZuQixFQUFBLElBQ0F3USxFQUFBeFEsRUFBQSxJ
QVlBMFEsRUFBQSxTQUFBM0wsRUFBQTBMLEdBQ0EsR0FBQUEsRUFBQSxDQUNBLEdBQUFuSyxHQUFB
dkIsRUFBQXVCLFVBRUEsSUFBQUEsT0FBQXZCLEVBQUFnL0IsV0FBQSxJQUFBejlCLEVBQUFyQixT
QUVBLFlBREFxQixFQUFBbEIsVUFBQXFMLEdBSUExTCxFQUFBMGxDLFlBQUFoNkIsRUFHQXhJLEdB
QUFKLFlBQ0EsZUFBQUUsVUFBQXc0QixrQkFDQTd2QixFQUFBLFNBQUEzTCxFQUFBMEwsR0FDQSxX
QUFBMUwsRUFBQUUsY0FDQUYsRUFBQUssVUFBQXFMLE9BR0FELEdBQUF6TCxFQUFBd2lCLEVBQUE5
VyxPQUtBclEsRUFBQUQsUUFBQXVRLEc1RTBpUU0sU0FBU3RRLEVBQVFELEVBQVNILEc2RWxsUWhD
LFlBbUNBLFNBQUEwcUMsR0FBQXBsQyxFQUFBNmhCLEdBR0EsTUFBQTdoQixJQUFBLGdCQUFBQSxJ
QUFBLE1BQUFBLEVBQUFULElBRUFzckIsRUFBQWpKLE9BQUE1aEIsRUFBQVQsS0FHQXNpQixFQUFB
eGYsU0FBQSxJQVdBLFFBQUFnakMsR0FBQXhrQyxFQUFBeWtDLEVBQUE3Z0MsRUFBQThnQyxHQUNB
LEdBQUE1L0IsU0FBQTlFLEVBT0EsSUFMQSxjQUFBOEUsR0FBQSxZQUFBQSxJQUVBOUUsRUFBQSxN
QUdBLE9BQUFBLEdBQUEsV0FBQThFLEdBQUEsV0FBQUEsR0FHQSxXQUFBQSxHQUFBOUUsRUFBQTZS
LFdBQUFSLEVBS0EsTUFKQXpOLEdBQUE4Z0MsRUFBQTFrQyxFQUdBLEtBQUF5a0MsRUFBQUUsRUFB
QUosRUFBQXZrQyxFQUFBLEdBQUF5a0MsR0FDQSxDQUdBLElBQUF2SCxHQUNBMEgsRUFDQUMsRUFB
QSxFQUNBQyxFQUFBLEtBQUFMLEVBQUFFLEVBQUFGLEVBQUFNLENBRUEsSUFBQTl5QixNQUFBd1Is
UUFBQXpqQixHQUNBLE9BQUF4RixHQUFBLEVBQW1CQSxFQUFBd0YsRUFBQXZELE9BQXFCakMsSUFD
eEMwaUMsRUFBQWw5QixFQUFBeEYsR0FDQW9xQyxFQUFBRSxFQUFBUCxFQUFBckgsRUFBQTFpQyxH
QUNBcXFDLEdBQUFMLEVBQUF0SCxFQUFBMEgsRUFBQWhoQyxFQUFBOGdDLE9BRUcsQ0FDSCxHQUFB
TSxHQUFBQyxFQUFBamxDLEVBQ0EsSUFBQWdsQyxFQUFBLENBQ0EsR0FDQUUsR0FEQUMsRUFBQUgs
RUFBQTVxQyxLQUFBNEYsRUFFQSxJQUFBZ2xDLElBQUFobEMsRUFBQW9sQyxRQUVBLElBREEsR0FB
QUMsR0FBQSxJQUNBSCxFQUFBQyxFQUFBbEUsUUFBQXFFLE1BQ0FwSSxFQUFBZ0ksRUFBQWo1QixN
QUNBMjRCLEVBQUFFLEVBQUFQLEVBQUFySCxFQUFBbUksS0FDQVIsR0FBQUwsRUFBQXRILEVBQUEw
SCxFQUFBaGhDLEVBQUE4Z0MsT0FlQSxRQUFBUSxFQUFBQyxFQUFBbEUsUUFBQXFFLE1BQUEsQ0FD
QSxHQUFBQyxHQUFBTCxFQUFBajVCLEtBQ0FzNUIsS0FDQXJJLEVBQUFxSSxFQUFBLEdBQ0FYLEVB
QUFFLEVBQUE5YSxFQUFBakosT0FBQXdrQixFQUFBLElBQUFSLEVBQUFSLEVBQUFySCxFQUFBLEdB
Q0EySCxHQUFBTCxFQUFBdEgsRUFBQTBILEVBQUFoaEMsRUFBQThnQyxTQUlLLGVBQUE1L0IsRUFB
QSxDQUNMLEdBQUEwZ0MsR0FBQSxHQWFBQyxFQUFBdG9DLE9BQUE2QyxFQUNvT1MsR0FBQSx5QkFB
QWdsQyxFQUFBLHFCQUErR2hyQyxPQUFBc0QsS0FBQWlDLEdBQUF0QyxLQUFBLFVBQXlDK25DLEVB
QUFELElBSTVYLE1BQUFYLEdBbUJBLFFBQUFhLEdBQUExbEMsRUFBQTRELEVBQUE4Z0MsR0FDQSxh
QUFBMWtDLEVBQ0EsRUFHQXdrQyxFQUFBeGtDLEVBQUEsR0FBQTRELEVBQUE4Z0MsR0EvSkEsR0FB
QWprQyxHQUFBNUcsRUFBQSxHQUdBd1gsR0FEQXhYLEVBQUEsSUFDQUEsRUFBQSxNQUVBb3JDLEVB
QUFwckMsRUFBQSxLQUVBbXdCLEdBREFud0IsRUFBQSxHQUNBQSxFQUFBLEtBR0E4cUMsR0FGQTlx
QyxFQUFBLEdBRUEsS0FDQWtyQyxFQUFBLEdBdUpBOXFDLEdBQUFELFFBQUEwckMsRzdFa21RTSxT
QUFTenJDLEVBQVFELEVBQVNILEc4RWh4UWhDLFlBd0JBLFNBQUFtb0IsR0FBQUMsR0FBc0MsTUFB
QUEsTUFBQUMsV0FBQUQsR0FBdUNFLFFBQUFGLEdBRTdFLFFBQUE2VCxHQUFBQyxFQUFBQyxHQUFp
RCxLQUFBRCxZQUFBQyxJQUEwQyxTQUFBajVCLFdBQUEscUNBRTNGLFFBQUE0b0MsR0FBQWwwQixF
QUFBclgsR0FBaUQsSUFBQXFYLEVBQWEsU0FBQW0wQixnQkFBQSw0REFBeUYsUUFBQXhyQyxHQUFB
LGdCQUFBQSxJQUFBLGtCQUFBQSxHQUFBcVgsRUFBQXJYLEVBRXZKLFFBQUF5ckMsR0FBQUMsRUFB
QUMsR0FBMEMscUJBQUFBLElBQUEsT0FBQUEsRUFBK0QsU0FBQWhwQyxXQUFBLGlFQUFBZ3BDLEdB
QXVHRCxHQUFBcHJDLFVBQUFELE9BQUE2K0IsT0FBQXlNLEtBQUFyckMsV0FBeUV1TixhQUFlZ0Us
TUFBQTY1QixFQUFBdkQsWUFBQSxFQUFBeUQsVUFBQSxFQUFBeEQsY0FBQSxLQUE2RXVELElBQUF0
ckMsT0FBQXdyQyxlQUFBeHJDLE9BQUF3ckMsZUFBQUgsRUFBQUMsR0FBQUQsRUFBQUksVUFBQUgs
R0FFclgsUUFBQUksR0FBQWxrQixFQUFBbGtCLEdBQThDLEdBQUFLLEtBQWlCLFFBQUE1RCxLQUFB
eW5CLEdBQXFCbGtCLEVBQUErb0IsUUFBQXRzQixJQUFBLEdBQW9DQyxPQUFBQyxVQUFBQyxlQUFB
UCxLQUFBNm5CLEVBQUF6bkIsS0FBNkQ0RCxFQUFBNUQsR0FBQXluQixFQUFBem5CLEdBQXNCLE9B
QUE0RCxHQUkzTSxRQUFBZ29DLE1BQ0EsUUFBQUMsR0FBQUMsRUFBQUMsR0FFQSxHQUFBQyxJQUNB
QyxJQUFBLFNBQUE5MEIsR0FDQSxJQUNBLEdBQUErMEIsR0FBQUosRUFBQUMsRUFBQUksV0FBQWgx
QixJQUNBKzBCLElBQUFGLEVBQUE3MEIsT0FBQTYwQixFQUFBNXFDLFNBQ0E0cUMsRUFBQUksdUJB
QUEsRUFDQUosRUFBQTcwQixNQUFBKzBCLEVBQ0FGLEVBQUE1cUMsTUFBQSxNQUVPLE1BQUFBLEdB
Q1A0cUMsRUFBQUksdUJBQUEsRUFDQUosRUFBQTVxQyxVQUtBLE9BQUE0cUMsR0FHQSxRQUFBSyxH
QWVBQyxHQUNBLEdBQUFDLEdBQUFDLEVBRUFDLEVBQUF6cUMsVUFBQUMsT0FBQSxHQUFBWixTQUFB
VyxVQUFBLEdBQUFBLFVBQUEsTUFDQTBxQyxFQUFBRCxFQUFBRSxlQUNBQSxFQUFBdHJDLFNBQUFx
ckMsRUFBQSxTQUFBanJDLEdBQ0EseUJBQUFBLEVBQUEsS0FDR2lyQyxFQUNIRSxFQUFBSCxFQUFB
SSxXQUNBQSxFQUFBeHJDLFNBQUF1ckMsRUFBQSxrQkFBQUEsRUFDQUUsRUFBQUwsRUFBQU0sZ0JB
Q0FBLEVBQUExckMsU0FBQXlyQyxFQUFBenJDLE9BQUF5ckMsRUFDQUUsRUFBQVAsRUFBQVEseUJB
Q0FBLEVBQUE1ckMsU0FBQTJyQyxLQUNBRSxFQUFBVCxFQUFBVSxTQUNBQSxFQUFBOXJDLFNBQUE2
ckMsRUFBQSxRQUFBQSxFQUNBRSxFQUFBWCxFQUFBWSxRQUNBQSxFQUFBaHNDLFNBQUErckMsS0FD
QUUsRUFBQTNCLEVBQUFjLEdBQUEsa0dBRUFjLEVBQUFKLEVBQUEsZUFDQTEyQixFQUFBKzJCLElB
RUFDLEdBQUFsQixLQUF3Q0EsRUFBQVksR0FBQU8sRUFBQUMsV0FBQXBCLEVBQUFnQixHQUFBRyxF
QUFBRSxrQkFBQXJCLEdBQ3hDc0IsR0FBQXJCLEtBQWtEQSxFQUFBZSxHQUFBRyxFQUFBRSxrQkFB
QXBCLEVBRWxELGlCQUFBc0IsSUFDQSxFQUFBQyxFQUFBcG1CLFNBQUEsa0JBQUFtbUIsR0FBQSxt
RkFBQUUsS0FBQUMsVUFBQUgsR0FFQSxJQUFBSSxHQUFBSixFQUFBaGMsYUFBQWdjLEVBQUFyc0Ms
TUFBQSxZQUVBcXdCLEVBQUE2YSxFQUFBdUIsR0FFQUMsRUFBQUMsS0FBNENkLEdBQzVDWCxpQkFD
QUUsYUFDQUUsa0JBQ0FFLDJCQUNBRSxXQUNBRSxVQUNBdmIsY0FDQW9jLHVCQUNBSixxQkFHQU8s
RUFBQSxTQUFBQyxHQUdBLFFBQUFELEdBQUFsM0IsRUFBQTlMLEdBQ0Fpd0IsRUFBQTM2QixLQUFB
MHRDLEVBRUEsSUFBQUUsR0FBQXBELEVBQUF4cUMsS0FBQTJ0QyxFQUFBMXVDLEtBQUFlLEtBQUF3
VyxFQUFBOUwsR0FhQSxPQVhBa2pDLEdBQUE5M0IsVUFDQTgzQixFQUFBQyxTQUNBRCxFQUFBRSxZ
QUFBLEVBQ0FGLEVBQUF4QyxNQUFBNTBCLEVBQUFnMkIsSUFBQTloQyxFQUFBOGhDLEdBQ0FvQixF
QUFBRyxVQUFBalIsUUFBQXRtQixFQUFBZzJCLElBQ0FvQixFQUFBSSxtQkFBQUosRUFBQUksbUJB
QUEvMkIsS0FBQTIyQixJQUVBLEVBQUFSLEVBQUFwbUIsU0FBQTRtQixFQUFBeEMsTUFBQSxtQkFB
QW9CLEVBQUEsNENBQUFyYixFQUFBLCtFQUFBcWIsRUFBQSxtQkFBQXJiLEVBQUEsT0FFQXljLEVB
QUFLLGVBQ0FMLEVBQUFNLG1CQUNBTixFQThIQSxNQWhKQWxELEdBQUFnRCxFQUFBQyxHQXFCQUQs
RUFBQW51QyxVQUFBNHVDLGdCQUFBLFdBQ0EsR0FBQUMsR0FNQUMsRUFBQXJ1QyxLQUFBK3RDLFVB
QUEsS0FBQS90QyxLQUFBcXVDLFlBQ0EsT0FBQUQsTUFBeUJBLEVBQUF4QixHQUFBeUIsR0FBQXJ1
QyxLQUFBMEssUUFBQWtpQyxHQUFBd0IsR0FHekJWLEVBQUFudUMsVUFBQSt1QyxrQkFBQSxXQUNB
aEMsSUFRQXRzQyxLQUFBcXVDLGFBQUFFLGVBQ0F2dUMsS0FBQXFyQyxTQUFBQyxJQUFBdHJDLEtB
QUF3VyxPQUNBeFcsS0FBQXFyQyxTQUFBSSx1QkFBQXpyQyxLQUFBd3VDLGdCQUdBZCxFQUFBbnVD
LFVBQUFrdkMsMEJBQUEsU0FBQWxELEdBQ0F2ckMsS0FBQXFyQyxTQUFBQyxJQUFBQyxJQUdBbUMs
RUFBQW51QyxVQUFBa3NDLHNCQUFBLFdBQ0EsTUFBQXpyQyxNQUFBcXJDLFNBQUFJLHVCQUdBaUMs
RUFBQW51QyxVQUFBbXZDLHFCQUFBLFdBQ0ExdUMsS0FBQXF1QyxjQUFBcnVDLEtBQUFxdUMsYUFB
QU0saUJBQ0EzdUMsS0FBQXF1QyxhQUFBLEtBQ0FydUMsS0FBQTR1QyxpQkFBQTNELEVBQ0FqckMs
S0FBQW9yQyxNQUFBLEtBQ0FwckMsS0FBQXFyQyxTQUFBQyxJQUFBTCxFQUNBanJDLEtBQUFxckMs
U0FBQUksdUJBQUEsR0FHQWlDLEVBQUFudUMsVUFBQXN2QyxtQkFBQSxXQUVBLE9BREEsRUFBQXpC
LEVBQUFwbUIsU0FBQTBsQixFQUFBLDRHQUFzSFIsRUFBQSxhQUN0SGxzQyxLQUFBOHVDLGlCQUdB
cEIsRUFBQW51QyxVQUFBeXVDLG1CQUFBLFNBQUF0NkIsR0FDQTFULEtBQUE4dUMsZ0JBQUFwN0Is
R0FHQWc2QixFQUFBbnVDLFVBQUEwdUMsYUFBQSxXQUNBLEdBQUE5QyxHQUFBUSxFQUFBM3JDLEtB
QUFvckMsTUFBQTJELFNBQUF2QixFQUNBeHRDLE1BQUFxckMsU0FBQUgsRUFBQUMsRUFBQW5yQyxL
QUFBb3JDLE9BQ0FwckMsS0FBQXFyQyxTQUFBQyxJQUFBdHJDLEtBQUF3VyxRQUdBazNCLEVBQUFu
dUMsVUFBQTJ1QyxpQkFBQSxXQUNBLEdBQUE1QixFQUFBLENBSUEsR0FBQTBDLElBQUFodkMsS0FB
QSt0QyxVQUFBL3RDLEtBQUF3VyxNQUFBeFcsS0FBQTBLLFNBQUFraUMsRUFDQTVzQyxNQUFBcXVD
LGFBQUEsR0FBQVksR0FBQWpvQixRQUFBaG5CLEtBQUFvckMsTUFBQTRELEVBQUFodkMsS0FBQWt2
QyxjQUFBajRCLEtBQUFqWCxPQVFBQSxLQUFBNHVDLGlCQUFBNXVDLEtBQUFxdUMsYUFBQU8saUJB
QUEzM0IsS0FBQWpYLEtBQUFxdUMsZ0JBR0FYLEVBQUFudUMsVUFBQTJ2QyxjQUFBLFdBQ0FsdkMs
S0FBQXFyQyxTQUFBQyxJQUFBdHJDLEtBQUF3VyxPQUVBeFcsS0FBQXFyQyxTQUFBSSx1QkFHQXpy
QyxLQUFBbXZDLG1CQUFBbnZDLEtBQUFvdkMscUNBQ0FwdkMsS0FBQXF2QyxTQUFBQyxJQUhBdHZD
LEtBQUE0dUMsb0JBT0FsQixFQUFBbnVDLFVBQUE2dkMscUNBQUEsV0FNQXB2QyxLQUFBbXZDLG1C
QUFBenVDLE9BQ0FWLEtBQUE0dUMsb0JBR0FsQixFQUFBbnVDLFVBQUFnd0MsYUFBQSxXQUNBLE1B
QUF6UyxTQUFBOThCLEtBQUFxdUMsZUFBQXJ1QyxLQUFBcXVDLGFBQUFrQixnQkFHQTdCLEVBQUFu
dUMsVUFBQWl3QyxjQUFBLFNBQUFoNUIsR0FDQSxLQUFBazJCLEdBQUFOLEdBQUFwc0MsS0FBQSt0
QyxXQUFBL3RDLEtBQUFxdUMsY0FBQSxNQUFBNzNCLEVBS0EsSUFBQWk1QixHQUFBaEMsS0FBb0Nq
M0IsRUFJcEMsT0FIQWsyQixLQUFBK0MsRUFBQS83QixJQUFBMVQsS0FBQWd1QyxvQkFDQTVCLElB
QUFxRCxFQUFBckQsR0FBQXBzQyxLQUFBOHRDLGVBQ0E5dEMsS0FBQSt0QyxXQUFBL3RDLEtBQUFx
dUMsZUFBQW9CLEVBQUE3QyxHQUFBNXNDLEtBQUFxdUMsY0FDQW9CLEdBR0EvQixFQUFBbnVDLFVB
QUFra0MsT0FBQSxXQUNBLEdBQUE0SCxHQUFBcnJDLEtBQUFxckMsUUFHQSxJQUZBQSxFQUFBSSx1
QkFBQSxFQUVBSixFQUFBNXFDLE1BQ0EsS0FBQTRxQyxHQUFBNXFDLEtBRUEsVUFBQWl2QyxFQUFB
aHBDLGVBQUF5bUMsRUFBQW50QyxLQUFBd3ZDLGNBQUFuRSxFQUFBNzBCLFNBSUFrM0IsR0FDS2dD
LEVBQUFsNkIsVUF1Q0wsT0FyQ0FrNEIsR0FBQVAsbUJBQ0FPLEVBQUF2YyxjQUNBdWMsRUFBQVIs
b0JBQ0FRLEVBQUFaLGVBQ0FZLEVBQUEzZCxVQUFBK2MsR0FpQ0EsRUFBQTZDLEVBQUEzb0IsU0FB
QTBtQixFQUFBUCxJQTdTQXR1QyxFQUFBa29CLFlBQUEsQ0FFQSxJQUFBMG1CLEdBQUFudUMsT0FB
QXdDLFFBQUEsU0FBQW1CLEdBQW1ELE9BQUE1RCxHQUFBLEVBQWdCQSxFQUFBZ0MsVUFBQUMsT0FB
c0JqQyxJQUFBLENBQU8sR0FBQTZELEdBQUE3QixVQUFBaEMsRUFBMkIsUUFBQWtFLEtBQUFMLEdB
QTBCNUQsT0FBQUMsVUFBQUMsZUFBQVAsS0FBQWlFLEVBQUFLLEtBQXlETixFQUFBTSxHQUFBTCxF
QUFBSyxJQUFpQyxNQUFBTixHQUUvT3BFLEdBQUFtb0IsUUFBQTBrQixDQUVBLElBQUFrRSxHQUFB
bHhDLEVBQUEsS0FFQWl4QyxFQUFBOW9CLEVBQUErb0IsR0FFQUMsRUFBQW54QyxFQUFBLEtBRUEw
dUMsRUFBQXZtQixFQUFBZ3BCLEdBRUFILEVBQUFoeEMsRUFBQSxJQUVBb3hDLEVBQUFweEMsRUFB
QSxLQUVBdXdDLEVBQUFwb0IsRUFBQWlwQixHQUVBL0MsRUFBQXJ1QyxFQUFBLElBWUFtdUMsRUFB
QSxFQUNBeUMsTTlFb2lSTSxTQUFTeHdDLEVBQVFELEVBQVNILEcrRXZrUmhDLFlBV0EsU0FBQW1v
QixHQUFBQyxHQUFzQyxNQUFBQSxNQUFBQyxXQUFBRCxHQUF1Q0UsUUFBQUYsR0FFN0UsUUFBQWlw
QixHQUFBQyxHQUNBLGdCQUFBakIsRUFBQTdSLEdBR0EsUUFBQStTLEtBQ0EsTUFBQUMsR0FIQSxH
QUFBQSxHQUFBRixFQUFBakIsRUFBQTdSLEVBTUEsT0FEQStTLEdBQUFFLG1CQUFBLEVBQ0FGLEdB
V0EsUUFBQUcsR0FBQUMsR0FDQSxjQUFBQSxFQUFBRixtQkFBQXp2QyxTQUFBMnZDLEVBQUFGLGtC
QUFBclQsUUFBQXVULEVBQUFGLG1CQUFBLElBQUFFLEVBQUEvdUMsT0FlQSxRQUFBZ3ZDLEdBQUFE
LEVBQUFuRSxHQUNBLGdCQUFBNkMsRUFBQWpELEdBQ0EsR0FFQXlFLElBRkF6RSxFQUFBM2EsWUFF
QSxTQUFBcWYsRUFBQUMsR0FDQSxNQUFBRixHQUFBSixrQkFBQUksRUFBQUYsV0FBQUcsRUFBQUMs
R0FBQUYsRUFBQUYsV0FBQUcsSUFzQkEsT0FsQkFELEdBQUFKLG1CQUFBLEVBRUFJLEVBQUFGLFdB
QUEsU0FBQUcsRUFBQUMsR0FDQUYsRUFBQUYsYUFDQUUsRUFBQUosa0JBQUFDLEVBQUFDLEVBQ0Es
SUFBQTc1QixHQUFBKzVCLEVBQUFDLEVBQUFDLEVBVUEsT0FSQSxrQkFBQWo2QixLQUNBKzVCLEVB
QUFGLFdBQUE3NUIsRUFDQSs1QixFQUFBSixrQkFBQUMsRUFBQTU1QixHQUNBQSxFQUFBKzVCLEVB
QUFDLEVBQUFDLElBS0FqNkIsR0FHQSs1QixHQXpFQTF4QyxFQUFBa29CLFlBQUEsRUFDQWxvQixF
QUFBa3hDLHlCQUNBbHhDLEVBQUF1eEMsdUJBQ0F2eEMsRUFBQXl4QyxvQkFFQSxJQUFBSSxHQUFB
aHlDLEVBQUEsR0FFQW1vQixHQUFBNnBCLEkvRWlwUk0sU0FBUzV4QyxFQUFRRCxFQUFTSCxHZ0Yx
cFJoQyxZQWlCQSxTQUFBbW9CLEdBQUFDLEdBQXNDLE1BQUFBLE1BQUFDLFdBQUFELEdBQXVDRSxR
QUFBRixHQWY3RWpvQixFQUFBa29CLFlBQUEsRUFDQWxvQixFQUFBOHhDLFFBQUE5eEMsRUFBQTZz
QyxnQkFBQTdzQyxFQUFBK3hDLGVBQUEveEMsRUFBQWd5QyxTQUFBbndDLE1BRUEsSUFBQW93QyxH
QUFBcHlDLEVBQUEsS0FFQXF5QyxFQUFBbHFCLEVBQUFpcUIsR0FFQUUsRUFBQXR5QyxFQUFBLElB
RUF1eUMsRUFBQXBxQixFQUFBbXFCLEdBRUFFLEVBQUF4eUMsRUFBQSxLQUVBeXlDLEVBQUF0cUIs
RUFBQXFxQixFQUlBcnlDLEdBQUFneUMsU0FBQUUsRUFBQS9wQixRQUNBbm9CLEVBQUEreEMsZUFB
QUUsRUFBQUYsZUFDQS94QyxFQUFBNnNDLGdCQUFBdUYsRUFBQWpxQixRQUNBbm9CLEVBQUE4eEMs
UUFBQVEsRUFBQW5xQixTaEZncVJNLFNBQVNsb0IsRUFBUUQsRUFBU0gsR2lGdHJSaEMsWUFTQSxT
QUFBbW9CLEdBQUFDLEdBQXNDLE1BQUFBLE1BQUFDLFdBQUFELEdBQXVDRSxRQUFBRixHQVA3RWpv
QixFQUFBa29CLFlBQUEsRUFDQWxvQixFQUFBbXVDLFdBQUFudUMsRUFBQW91QyxrQkFBQXZzQyxN
QUVBLElBQUEwd0MsR0FBQTF5QyxFQUFBLElBRUEyeUMsRUFBQXhxQixFQUFBdXFCLEVBSUF2eUMs
R0FBQW91QyxrQkFBQW9FLEVBQUFycUIsUUFBQXNxQixPQUNBL0MsYUFBQThDLEVBQUFycUIsUUFB
QWtKLEtBQUFxaEIsV0FDQTVDLGVBQUEwQyxFQUFBcnFCLFFBQUFrSixLQUFBcWhCLFdBQ0EzQyxp
QkFBQXlDLEVBQUFycUIsUUFBQWtKLEtBQUFxaEIsV0FDQWhDLGFBQUE4QixFQUFBcnFCLFFBQUFr
SixLQUFBcWhCLGFBR0ExeUMsRUFBQW11QyxXQUFBcUUsRUFBQXJxQixRQUFBc3FCLE9BQ0FFLFVB
QUFILEVBQUFycUIsUUFBQWtKLEtBQUFxaEIsV0FDQXhDLFNBQUFzQyxFQUFBcnFCLFFBQUFrSixL
QUFBcWhCLFdBQ0EvRixTQUFBNkYsRUFBQXJxQixRQUFBa0osS0FBQXFoQixjakY2clJNLFNBQVN6
eUMsRUFBUUQsRUFBU0gsR2tGbHRSaEMsWUFhQSxTQUFBbW9CLEdBQUFDLEdBQXNDLE1BQUFBLE1B
QUFDLFdBQUFELEdBQXVDRSxRQUFBRixHQUU3RSxRQUFBMnFCLEdBQUEzZ0MsRUFBQXFnQixFQUFB
K2EsSUFDQSxFQUFBd0YsRUFBQTFxQixTQUFBbFcsS0FDQSxFQUFBNmdDLEVBQUEzcUIsU0FBQWts
QixFQUFBLFNBQUEvYSxFQUFBLGlEQUFBcmdCLEVBQUEsS0FmQWpTLEVBQUFrb0IsWUFBQSxFQUNB
bG9CLEVBQUFtb0IsUUFBQXlxQixDQUVBLElBQUFHLEdBQUFsekMsRUFBQSxJQUVBZ3pDLEVBQUE3
cUIsRUFBQStxQixHQUVBNXBCLEVBQUF0cEIsRUFBQSxJQUVBaXpDLEVBQUE5cUIsRUFBQW1CLEls
Rmd1Uk0sU0FBU2xwQixFQUFRRCxFQUFTSCxHQUUvQixZQWdCQSxTQUFTbW9CLEdBQXVCQyxHQUFP
LE1BQU9BLElBQU9BLEVBQUlDLFdBQWFELEdBQVFFLFFBQVNGLEdBRXZGLFFBQVM2VCxHQUFnQkMs
RUFBVUMsR0FBZSxLQUFNRCxZQUFvQkMsSUFBZ0IsS0FBTSxJQUFJajVCLFdBQVUscUNBRWhILFFB
QVM0b0MsR0FBMkJsMEIsRUFBTXJYLEdBQVEsSUFBS3FYLEVBQVEsS0FBTSxJQUFJbTBCLGdCQUFl
LDREQUFnRSxRQUFPeHJDLEdBQXlCLGdCQUFUQSxJQUFxQyxrQkFBVEEsR0FBOEJxWCxFQUFQclgs
RUFFbE8sUUFBU3lyQyxHQUFVQyxFQUFVQyxHQUFjLEdBQTBCLGtCQUFmQSxJQUE0QyxPQUFmQSxF
QUF1QixLQUFNLElBQUlocEMsV0FBVSxpRUFBb0VncEMsR0FBZUQsR0FBU3ByQyxVQUFZRCxPQUFP
NitCLE9BQU95TSxHQUFjQSxFQUFXcnJDLFdBQWF1TixhQUFlZ0UsTUFBTzY1QixFQUFVdkQsWUFB
WSxFQUFPeUQsVUFBVSxFQUFNeEQsY0FBYyxLQUFldUQsSUFBWXRyQyxPQUFPd3JDLGVBQWlCeHJD
LE9BQU93ckMsZUFBZUgsRUFBVUMsR0FBY0QsRUFBU0ksVUFBWUgsR0FwQmpldHJDLE9BQU82bkMs
ZUFBZXRvQyxFQUFTLGNBQzdCaVMsT0FBTyxHQUdULElBQUkrZ0MsR0FBZSxXQUFjLFFBQVNDLEdB
QWlCN3VDLEVBQVF1VCxHQUFTLElBQUssR0FBSW5YLEdBQUksRUFBR0EsRUFBSW1YLEVBQU1sVixP
QUFRakMsSUFBSyxDQUFFLEdBQUkybkMsR0FBYXh3QixFQUFNblgsRUFBSTJuQyxHQUFXSSxXQUFh
SixFQUFXSSxhQUFjLEVBQU9KLEVBQVdLLGNBQWUsRUFBVSxTQUFXTCxLQUFZQSxFQUFXNkQsVUFB
VyxHQUFNdnJDLE9BQU82bkMsZUFBZWxrQyxFQUFRK2pDLEVBQVd6akMsSUFBS3lqQyxJQUFpQixN
QUFPLFVBQVVuTSxFQUFha1gsRUFBWUMsR0FBaUosTUFBOUhELElBQVlELEVBQWlCalgsRUFBWXQ3
QixVQUFXd3lDLEdBQWlCQyxHQUFhRixFQUFpQmpYLEVBQWFtWCxHQUFxQm5YLE1tRm52UmppQjZV
LEVBQUFoeEMsRUFBQSxJbkZ1dlJLdXpDLEVBQVVwckIsRUFBdUI2b0IsR21GdHZSdEN3QyxFQUFB
eHpDLEVBQUEsSW5GMHZSS3l6QyxFQUFldHJCLEVBQXVCcXJCLEdtRnh2UnRCRSxFbkZrd1JBLFNB
QVV6RSxHQUc1QixRQUFTeUUsS0FDUCxHQUFJdEcsR0FFQXVHLEVBQU96RSxFQUFPMEUsQ0FFbEIz
WCxHQUFnQjM2QixLQUFNb3lDLEVBRXRCLEtBQUssR0FBSUcsR0FBT2x4QyxVQUFVQyxPQUFRNUIs
RUFBT29YLE1BQU15N0IsR0FBT0MsRUFBTyxFQUFHQSxFQUFPRCxFQUFNQyxJQUMzRTl5QyxFQUFL
OHlDLEdBQVFueEMsVUFBVW14QyxFQUd6QixPQUFlSCxHQUFTekUsRUFBUXBELEVBQTJCeHFDLE1B
QU84ckMsRUFBT3NHLEVBQWNySCxXQUFhenJDLE9BQU9tekMsZUFBZUwsSUFBZ0JuekMsS0FBS2Ms
TUFBTStyQyxHQUFPOXJDLE1BQU1DLE9BQU9QLEtBQWlCa3VDLEVtRnZ3UjdMQyxPQUNFMStCLEtB
QU15K0IsRUFBS3AzQixNQUFNckgsTUFBUSxJbkZ3d1JyQnkrQixFbUZyd1JOOEUsYUFBZSxTQUFB
cHlDLEdBQ2IsR0FBTTZPLEdBQU83TyxFQUFFMkMsT0FBTzZOLE1BQU02aEMsTUFDWixNQUFacnlD
LEVBQUVzeUMsUUFDSmhGLEVBQUtwM0IsTUFBTXE4QixPQUFPMWpDLEdBQ2R5K0IsRUFBS3AzQixN
QUFNczhCLFNBQ2JsRixFQUFLeUIsVUFBV2xnQyxLQUFNLE9uRnd3UnRCeStCLEVtRm53Uk5tRixh
QUFlLFNBQUF6eUMsR0FDYnN0QyxFQUFLeUIsVUFBV2xnQyxLQUFNN08sRUFBRTJDLE9BQU82TixT
bkZvd1IzQjg4QixFbUZqd1JOb0YsV0FBYSxTQUFBMXlDLEdBQ05zdEMsRUFBS3AzQixNQUFNczhC
LFNBQ2RsRixFQUFLcDNCLE1BQU1xOEIsT0FBT3Z5QyxFQUFFMkMsT0FBTzZOLFFuRm12UnJCd2hD
LEVBZ0JKRCxFQUFRN0gsRUFBMkJvRCxFQUFPMEUsR0FvQi9DLE1BakRBNUgsR0FBVTBILEVBQWV6
RSxHQWdDekJrRSxFQUFhTyxJQUNYN3VDLElBQUssU0FDTHVOLE1BQU8sV21GbndSUixNQUNFbWhD
LEdBQUFqckIsUUFBQXRnQixjQUFBLFNBQU91c0MsV0FDTCxFQUFBZCxFQUFBbnJCLFVBQ0Vrc0Is
S0FBTWx6QyxLQUFLd1csTUFBTTI4QixRQUNqQkMsV0FBWXB6QyxLQUFLd1csTUFBTXM4QixVQUV6
Qm5wQyxLQUFLLE9BQ0wwcEMsWUFBYXJ6QyxLQUFLd1csTUFBTTY4QixZQUN4QkMsVUFBVSxPQUNW
eGlDLE1BQU85USxLQUFLNnRDLE1BQU0xK0IsS0FDbEJva0MsT0FBUXZ6QyxLQUFLZ3pDLFdBQ2I3
akIsU0FBVW52QixLQUFLK3lDLGFBQ2ZTLFVBQVd4ekMsS0FBSzB5QyxtQm5Gc3dSZE4sR0FDUDFD
LEVBQU9sNkIsVW1GcnpSVzQ4QixHQUNacmlCLFdBQ0w4aUIsT0FBUW5ELEVBQUEvNUIsVUFBVXVh
LEtBQUtxaEIsV0FDdkJwaUMsS0FBTXVnQyxFQUFBLzVCLFVBQVU0UCxPQUNoQjh0QixZQUFhM0Qs
RUFBQS81QixVQUFVNFAsT0FDdkI0dEIsUUFBU3pELEVBQUEvNUIsVUFBVTg5QixLQUNuQlgsUUFB
U3BELEVBQUEvNUIsVUFBVTg5QixNbkZ3elJ0QjUwQyxFQUFRbW9CLFFtRjl6UllvckIsR25GazBS
ZixTQUFTdHpDLEVBQVFELEdBRXRCLFlBRUFTLFFBQU82bkMsZUFBZXRvQyxFQUFTLGNBQzdCaVMs
T0FBTyxHb0YxMFJHNGlDLFlBQVcsV0FDWEMsY0FBYyxjQUNkQyxZQUFZLFlBQ1pDLGdCQUFnQixn
QkFDaEJDLGVBQWUsZUFDZkMsa0JBQWtCLG1CcEZnMVJ6QixTQUFTajFDLEVBQVFELEdBRXRCLFlB
RUFTLFFBQU82bkMsZUFBZXRvQyxFQUFTLGNBQzdCaVMsT0FBTyxHcUYxMVJHa2pDLFlBQVcsV0FD
WEMsaUJBQWlCLGlCQUNqQkMsY0FBYyxlckZnMlJyQixTQUFTcDFDLEVBQVFELEdzRnYxUnZCLFFB
QUFzMUMsS0FDQSxTQUFBeHpDLE9BQUEsbUNBRUEsUUFBQXl6QyxLQUNBLFNBQUF6ekMsT0FBQSxx
Q0FzQkEsUUFBQTB6QyxHQUFBQyxHQUNBLEdBQUFDLElBQUFDLFdBRUEsTUFBQUEsWUFBQUYsRUFB
QSxFQUdBLEtBQUFDLElBQUFKLElBQUFJLElBQUFDLFdBRUEsTUFEQUQsR0FBQUMsV0FDQUEsV0FB
QUYsRUFBQSxFQUVBLEtBRUEsTUFBQUMsR0FBQUQsRUFBQSxHQUNLLE1BQUFoMEMsR0FDTCxJQUVB
LE1BQUFpMEMsR0FBQXQxQyxLQUFBLEtBQUFxMUMsRUFBQSxHQUNTLE1BQUFoMEMsR0FFVCxNQUFB
aTBDLEdBQUF0MUMsS0FBQWUsS0FBQXMwQyxFQUFBLEtBTUEsUUFBQUcsR0FBQUMsR0FDQSxHQUFB
QyxJQUFBQyxhQUVBLE1BQUFBLGNBQUFGLEVBR0EsS0FBQUMsSUFBQVAsSUFBQU8sSUFBQUMsYUFF
QSxNQURBRCxHQUFBQyxhQUNBQSxhQUFBRixFQUVBLEtBRUEsTUFBQUMsR0FBQUQsR0FDSyxNQUFB
cDBDLEdBQ0wsSUFFQSxNQUFBcTBDLEdBQUExMUMsS0FBQSxLQUFBeTFDO0NBQ1MsTUFBQXAwQyxH
QUdULE1BQUFxMEMsR0FBQTExQyxLQUFBZSxLQUFBMDBDLEtBWUEsUUFBQUcsS0FDQUMsR0FBQUMs
SUFHQUQsR0FBQSxFQUNBQyxFQUFBenpDLE9BQ0EwSyxFQUFBK29DLEVBQUE5MEMsT0FBQStMLEdB
RUFncEMsS0FFQWhwQyxFQUFBMUssUUFDQTJ6QyxLQUlBLFFBQUFBLEtBQ0EsSUFBQUgsRUFBQSxD
QUdBLEdBQUFJLEdBQUFiLEVBQUFRLEVBQ0FDLElBQUEsQ0FHQSxLQURBLEdBQUE5ckMsR0FBQWdE
LEVBQUExSyxPQUNBMEgsR0FBQSxDQUdBLElBRkErckMsRUFBQS9vQyxFQUNBQSxPQUNBZ3BDLEVB
QUFoc0MsR0FDQStyQyxHQUNBQSxFQUFBQyxHQUFBMUosS0FHQTBKLE1BQ0Foc0MsRUFBQWdELEVB
QUExSyxPQUVBeXpDLEVBQUEsS0FDQUQsR0FBQSxFQUNBTCxFQUFBUyxJQWlCQSxRQUFBQyxHQUFB
YixFQUFBYyxHQUNBcDFDLEtBQUFzMEMsTUFDQXQwQyxLQUFBbzFDLFFBWUEsUUFBQW5LLE1BaEtB
LEdBT0FzSixHQUNBSSxFQVJBVSxFQUFBdjJDLEVBQUFELFlBZ0JBLFdBQ0EsSUFFQTAxQyxFQURB
LGtCQUFBQyxZQUNBQSxXQUVBTCxFQUVLLE1BQUE3ekMsR0FDTGkwQyxFQUFBSixFQUVBLElBRUFR
LEVBREEsa0JBQUFDLGNBQ0FBLGFBRUFSLEVBRUssTUFBQTl6QyxHQUNMcTBDLEVBQUFQLEtBdURB
LElBRUFXLEdBRkEvb0MsS0FDQThvQyxHQUFBLEVBRUFFLElBeUNBSyxHQUFBQyxTQUFBLFNBQUFo
QixHQUNBLEdBQUE1MEMsR0FBQSxHQUFBb1gsT0FBQXpWLFVBQUFDLE9BQUEsRUFDQSxJQUFBRCxV
QUFBQyxPQUFBLEVBQ0EsT0FBQWpDLEdBQUEsRUFBdUJBLEVBQUFnQyxVQUFBQyxPQUFzQmpDLElB
QzdDSyxFQUFBTCxFQUFBLEdBQUFnQyxVQUFBaEMsRUFHQTJNLEdBQUF2RyxLQUFBLEdBQUEwdkMs
R0FBQWIsRUFBQTUwQyxJQUNBLElBQUFzTSxFQUFBMUssUUFBQXd6QyxHQUNBVCxFQUFBWSxJQVNB
RSxFQUFBNTFDLFVBQUErckMsSUFBQSxXQUNBdHJDLEtBQUFzMEMsSUFBQXYwQyxNQUFBLEtBQUFD
LEtBQUFvMUMsUUFFQUMsRUFBQUUsTUFBQSxVQUNBRixFQUFBRyxTQUFBLEVBQ0FILEVBQUFJLE9B
Q0FKLEVBQUFLLFFBQ0FMLEVBQUF2L0IsUUFBQSxHQUNBdS9CLEVBQUFNLFlBSUFOLEVBQUFPLEdB
QUEzSyxFQUNBb0ssRUFBQVEsWUFBQTVLLEVBQ0FvSyxFQUFBUyxLQUFBN0ssRUFDQW9LLEVBQUFV
LElBQUE5SyxFQUNBb0ssRUFBQVcsZUFBQS9LLEVBQ0FvSyxFQUFBWSxtQkFBQWhMLEVBQ0FvSyxF
QUFBYSxLQUFBakwsRUFFQW9LLEVBQUFjLFFBQUEsU0FBQXIxQyxHQUNBLFNBQUFILE9BQUEscUNB
R0EwMEMsRUFBQWUsSUFBQSxXQUEyQixXQUMzQmYsRUFBQWdCLE1BQUEsU0FBQUMsR0FDQSxTQUFB
MzFDLE9BQUEsbUNBRUEwMEMsRUFBQWtCLE1BQUEsV0FBNEIsV3RGeTJSdEIsU0FBU3ozQyxFQUFR
RCxFQUFTSCxHdUY1aFNoQyxZQUlBLFNBQUF1c0MsTUFxQkEsUUFBQXVMLEdBQUExdkIsR0FDQSxJ
QUNBLE1BQUFBLEdBQUEydkIsS0FDRyxNQUFBQyxHQUVILE1BREFDLEdBQUFELEVBQ0FFLEdBSUEs
UUFBQUMsR0FBQWozQyxFQUFBQyxHQUNBLElBQ0EsTUFBQUQsR0FBQUMsR0FDRyxNQUFBNjJDLEdB
RUgsTUFEQUMsR0FBQUQsRUFDQUUsR0FHQSxRQUFBRSxHQUFBbDNDLEVBQUFDLEVBQUFDLEdBQ0Es
SUFDQUYsRUFBQUMsRUFBQUMsR0FDRyxNQUFBNDJDLEdBRUgsTUFEQUMsR0FBQUQsRUFDQUUsR0FN
QSxRQUFBRyxHQUFBbjNDLEdBQ0EsbUJBQUFJLE1BQ0EsU0FBQTRCLFdBQUEsdUNBRUEsc0JBQUFo
QyxHQUNBLFNBQUFnQyxXQUFBLGlCQUVBNUIsTUFBQWczQyxJQUFBLEVBQ0FoM0MsS0FBQWkzQyxJ
QUFBLEVBQ0FqM0MsS0FBQWszQyxJQUFBLEtBQ0FsM0MsS0FBQW0zQyxJQUFBLEtBQ0F2M0MsSUFB
QXFyQyxHQUNBbU0sRUFBQXgzQyxFQUFBSSxNQWVBLFFBQUFxM0MsR0FBQS9nQyxFQUFBZ2hDLEVB
QUFDLEdBQ0EsVUFBQWpoQyxHQUFBeEosWUFBQSxTQUFBMHFDLEVBQUFDLEdBQ0EsR0FBQWxxQixH
QUFBLEdBQUF3cEIsR0FBQTlMLEVBQ0ExZCxHQUFBa3BCLEtBQUFlLEVBQUFDLEdBQ0E5MEIsRUFB
QXJNLEVBQUEsR0FBQW9oQyxHQUFBSixFQUFBQyxFQUFBaHFCLE1BR0EsUUFBQTVLLEdBQUFyTSxF
QUFBcWhDLEdBQ0EsU0FBQXJoQyxFQUFBMmdDLEtBQ0EzZ0MsSUFBQTRnQyxHQUtBLE9BSEFILEdB
QUFhLEtBQ0FiLEVBQUFhLElBQUF0aEMsR0FFQSxJQUFBQSxFQUFBMmdDLElBQ0EsSUFBQTNnQyxF
QUFBMGdDLEtBQ0ExZ0MsRUFBQTBnQyxJQUFBLE9BQ0ExZ0MsRUFBQTZnQyxJQUFBUSxJQUdBLElB
QUFyaEMsRUFBQTBnQyxLQUNBMWdDLEVBQUEwZ0MsSUFBQSxPQUNBMWdDLEVBQUE2Z0MsS0FBQTdn
QyxFQUFBNmdDLElBQUFRLFNBR0FyaEMsR0FBQTZnQyxJQUFBMXhDLEtBQUFreUMsT0FHQUUsR0FB
QXZoQyxFQUFBcWhDLEdBR0EsUUFBQUUsR0FBQXZoQyxFQUFBcWhDLEdBQ0FsdEMsRUFBQSxXQUNB
LEdBQUF1N0IsR0FBQSxJQUFBMXZCLEVBQUEyZ0MsSUFBQVUsRUFBQUwsWUFBQUssRUFBQUosVUFD
QSxXQUFBdlIsRUFNQSxZQUxBLElBQUExdkIsRUFBQTJnQyxJQUNBTyxFQUFBRyxFQUFBRyxRQUFB
eGhDLEVBQUE0Z0MsS0FFQU8sRUFBQUUsRUFBQUcsUUFBQXhoQyxFQUFBNGdDLEtBSUEsSUFBQWx5
QixHQUFBNnhCLEVBQUE3USxFQUFBMXZCLEVBQUE0Z0MsSUFDQWx5QixLQUFBNHhCLEVBQ0FhLEVB
QUFFLEVBQUFHLFFBQUFuQixHQUVBYSxFQUFBRyxFQUFBRyxRQUFBOXlCLEtBSUEsUUFBQXd5QixH
QUFBbGhDLEVBQUF5aEMsR0FFQSxHQUFBQSxJQUFBemhDLEVBQ0EsTUFBQW1oQyxHQUNBbmhDLEVB
Q0EsR0FBQTFVLFdBQUEsNkNBR0EsSUFDQW0yQyxJQUNBLGdCQUFBQSxJQUFBLGtCQUFBQSxJQUNB
LENBQ0EsR0FBQXRCLEdBQUFELEVBQUF1QixFQUNBLElBQUF0QixJQUFBRyxFQUNBLE1BQUFhLEdB
QUFuaEMsRUFBQXFnQyxFQUVBLElBQ0FGLElBQUFuZ0MsRUFBQW1nQyxNQUNBc0IsWUFBQWhCLEdB
S0EsTUFIQXpnQyxHQUFBMmdDLElBQUEsRUFDQTNnQyxFQUFBNGdDLElBQUFhLE1BQ0FDLEdBQUEx
aEMsRUFFSyxzQkFBQW1nQyxHQUVMLFdBREFXLEdBQUFYLEVBQUF4L0IsS0FBQThnQyxHQUFBemhD
LEdBSUFBLEVBQUEyZ0MsSUFBQSxFQUNBM2dDLEVBQUE0Z0MsSUFBQWEsRUFDQUMsRUFBQTFoQyxH
QUdBLFFBQUFtaEMsR0FBQW5oQyxFQUFBeWhDLEdBQ0F6aEMsRUFBQTJnQyxJQUFBLEVBQ0EzZ0Ms
RUFBQTRnQyxJQUFBYSxFQUNBaEIsRUFBQWtCLEtBQ0FsQixFQUFBa0IsSUFBQTNoQyxFQUFBeWhD
LEdBRUFDLEVBQUExaEMsR0FFQSxRQUFBMGhDLEdBQUExaEMsR0FLQSxHQUpBLElBQUFBLEVBQUEw
Z0MsTUFDQXIwQixFQUFBck0sSUFBQTZnQyxLQUNBN2dDLEVBQUE2Z0MsSUFBQSxNQUVBLElBQUE3
Z0MsRUFBQTBnQyxJQUFBLENBQ0EsT0FBQTMzQyxHQUFBLEVBQW1CQSxFQUFBaVgsRUFBQTZnQyxJ
QUFBNzFDLE9BQXFCakMsSUFDeENzakIsRUFBQXJNLElBQUE2Z0MsSUFBQTkzQyxHQUVBaVgsR0FB
QTZnQyxJQUFBLE1BSUEsUUFBQU8sR0FBQUosRUFBQUMsRUFBQU8sR0FDQTkzQyxLQUFBczNDLFlB
QUEsa0JBQUFBLEtBQUEsS0FDQXQzQyxLQUFBdTNDLFdBQUEsa0JBQUFBLEtBQUEsS0FDQXYzQyxL
QUFBODNDLFVBU0EsUUFBQVYsR0FBQXgzQyxFQUFBazRDLEdBQ0EsR0FBQTNOLElBQUEsRUFDQTVj
LEVBQUF1cEIsRUFBQWwzQyxFQUFBLFNBQUFrUixHQUNBcTVCLElBQ0FBLEdBQUEsRUFDQXFOLEVB
QUFNLEVBQUFobkMsS0FDRyxTQUFBb25DLEdBQ0gvTixJQUNBQSxHQUFBLEVBQ0FzTixFQUFBSyxF
QUFBSSxLQUVBL04sSUFBQTVjLElBQUFxcEIsSUFDQXpNLEdBQUEsRUFDQXNOLEVBQUFLLEVBQUFu
QixJQWhOQSxHQUFBbHNDLEdBQUEvTCxFQUFBLEtBcUJBaTRDLEVBQUEsS0FDQUMsSUEyQkE5M0Ms
R0FBQUQsUUFBQWs0QyxFQWdCQUEsRUFBQWEsSUFBQSxLQUNBYixFQUFBa0IsSUFBQSxLQUNBbEIs
RUFBQW9CLElBQUFsTixFQUVBOEwsRUFBQXgzQyxVQUFBazNDLEtBQUEsU0FBQWEsRUFBQUMsR0FD
QSxHQUFBdjNDLEtBQUE4TSxjQUFBaXFDLEVBQ0EsTUFBQU0sR0FBQXIzQyxLQUFBczNDLEVBQUFD
LEVBRUEsSUFBQWhxQixHQUFBLEdBQUF3cEIsR0FBQTlMLEVBRUEsT0FEQXRvQixHQUFBM2lCLEtB
QUEsR0FBQTAzQyxHQUFBSixFQUFBQyxFQUFBaHFCLElBQ0FBLEl2RjBxU00sU0FBU3p1QixFQUFR
RCxFQUFTSCxHd0Y3dVNoQyxZQWVBLFNBQUEwNUMsR0FBQTVoQyxFQUFBOUwsRUFBQTJ0QyxHQUNB
cjRDLEtBQUF3VyxRQUNBeFcsS0FBQTBLLFVBQ0ExSyxLQUFBczRDLEtBQUExN0IsRUFHQTVjLEtB
QUFxNEMsV0FBQUUsRUF5RkEsUUFBQUMsR0FBQWhpQyxFQUFBOUwsRUFBQTJ0QyxHQUVBcjRDLEtB
QUF3VyxRQUNBeFcsS0FBQTBLLFVBQ0ExSyxLQUFBczRDLEtBQUExN0IsRUFHQTVjLEtBQUFxNEMs
V0FBQUUsRUFHQSxRQUFBRSxNQXRIQSxHQUFBbnpDLEdBQUE1RyxFQUFBLElBQ0FtTSxFQUFBbk0s
RUFBQSxHQUVBNjVDLEVBQUE3NUMsRUFBQSxJQUdBa2UsR0FEQWxlLEVBQUEsSUFDQUEsRUFBQSxJ
QUNBQSxHQUFBLEdBQ0FBLEVBQUEsSUFjQTA1QyxHQUFBNzRDLFVBQUFpa0Msb0JBMkJBNFUsRUFB
QTc0QyxVQUFBOHZDLFNBQUEsU0FBQWxkLEVBQUExcEIsR0FDQSxnQkFBQTBwQixJQUFBLGtCQUFB
QSxJQUFBLE1BQUFBLEVBQUE3c0IsRUFBQSxhQUNBdEYsS0FBQXE0QyxRQUFBbm1CLGdCQUFBbHlC
LEtBQUFteUIsR0FDQTFwQixHQUNBekksS0FBQXE0QyxRQUFBNW1CLGdCQUFBenhCLEtBQUF5SSxF
QUFBLGFBa0JBMnZDLEVBQUE3NEMsVUFBQWl2QyxZQUFBLFNBQUEvbEMsR0FDQXpJLEtBQUFxNEMs
UUFBQXptQixtQkFBQTV4QixNQUNBeUksR0FDQXpJLEtBQUFxNEMsUUFBQTVtQixnQkFBQXp4QixL
QUFBeUksRUFBQSxlQTZDQWd3QyxHQUFBbDVDLFVBQUE2NEMsRUFBQTc0QyxVQUNBaTVDLEVBQUFq
NUMsVUFBQSxHQUFBazVDLEdBQ0FELEVBQUFqNUMsVUFBQXVOLFlBQUEwckMsRUFFQTN0QyxFQUFB
MnRDLEVBQUFqNUMsVUFBQTY0QyxFQUFBNzRDLFdBQ0FpNUMsRUFBQWo1QyxVQUFBbTVDLHNCQUFB
LEVBRUE1NUMsRUFBQUQsU0FDQTJXLFVBQUE0aUMsRUFDQTNpQyxjQUFBK2lDLEl4Rjh2U00sU0FB
UzE1QyxFQUFRRCxFQUFTSCxHeUYvM1NoQyxZQVNBLFNBQUFpNkMsR0FBQS80QyxHQUVBLEdBQUEy
cEIsR0FBQUcsU0FBQW5xQixVQUFBOEcsU0FDQTdHLEVBQUFGLE9BQUFDLFVBQUFDLGVBQ0FvNUMs
RUFBQWpkLE9BQUEsSUFBQXBTLEVBRUF0cUIsS0FBQU8sR0FFQXFCLFFBQUEsc0JBQTZCLFFBRTdC
QSxRQUFBLHNFQUNBLEtBQ0EsR0FBQXFDLEdBQUFxbUIsRUFBQXRxQixLQUFBVyxFQUNBLE9BQUFn
NUMsR0FBQXBvQyxLQUFBdE4sR0FDRyxNQUFBTCxHQUNILFVBOEZBLFFBQUFnMkMsR0FBQTk1QyxH
QUNBLEdBQUErNUMsR0FBQUMsRUFBQWg2QyxFQUNBLElBQUErNUMsRUFBQSxDQUNBLEdBQUFFLEdB
QUFGLEVBQUFFLFFBRUFDLEdBQUFsNkMsR0FDQWk2QyxFQUFBdDJDLFFBQUFtMkMsSUFJQSxRQUFB
SyxHQUFBcDRDLEVBQUFvQyxFQUFBaTJDLEdBQ0EsbUJBQUFyNEMsR0FBQSxZQUFBb0MsRUFBQSxR
QUFBQSxFQUFBazJDLFNBQUF2NEMsUUFBQSxvQkFBQXFDLEVBQUFtMkMsV0FBQSxJQUFBRixFQUFB
LGdCQUFBQSxFQUFBLFFBR0EsUUFBQW5OLEdBQUF2MUIsR0FDQSxhQUFBQSxFQUNBLFNBQ0csZ0JB
QUFBLElBQUEsZ0JBQUFBLEdBQ0gsUUFDRyxnQkFBQUEsR0FBQTlNLEtBQ0g4TSxFQUFBOU0sS0FF
QThNLEVBQUE5TSxLQUFBd25CLGFBQUExYSxFQUFBOU0sS0FBQTdJLE1BQUEsVUFJQSxRQUFBdzRD
LEdBQUF2NkMsR0FDQSxHQUdBbzZDLEdBSEFyNEMsRUFBQXk0QyxFQUFBdk4sZUFBQWp0QyxHQUNB
MFgsRUFBQThpQyxFQUFBQyxXQUFBejZDLEdBQ0EwNkMsRUFBQUYsRUFBQUcsV0FBQTM2QyxFQU1B
LE9BSkEwNkMsS0FDQU4sRUFBQUksRUFBQXZOLGVBQUF5TixJQUdBUCxFQUFBcDRDLEVBQUEyVixL
QUFBYyxRQUFBNGhDLEdBdkpBLEdBc0NBUSxHQUNBWixFQUNBRSxFQUNBVyxFQUNBQyxFQUNBQyxF
QUNBQyxFQTVDQXowQyxFQUFBNUcsRUFBQSxJQUVBaVEsRUFBQWpRLEVBQUEsSUF3QkFzN0MsR0F0
QkF0N0MsRUFBQSxHQUNBQSxFQUFBLEdBdUJBLGtCQUFBb1ksT0FBQTNULE1BRUEsa0JBQUE4MkMs
TUFBQXRCLEVBQUFzQixNQUVBLE1BQUFBLElBQUExNkMsV0FBQSxrQkFBQTA2QyxLQUFBMTZDLFVB
QUFxRCxNQUFBKzFDLEVBQUFzQixJQUFBMTZDLFVBQUFxRCxPQUVBLGtCQUFBczNDLE1BQUF2QixF
QUFBdUIsTUFFQSxNQUFBQSxJQUFBMzZDLFdBQUEsa0JBQUEyNkMsS0FBQTM2QyxVQUFBcUQsTUFB
QSsxQyxFQUFBdUIsSUFBQTM2QyxVQUFBcUQsTUFVQSxJQUFBbzNDLEVBQUEsQ0FDQSxHQUFBRyxH
QUFBLEdBQUFGLEtBQ0FHLEVBQUEsR0FBQUYsSUFFQVAsR0FBQSxTQUFBNTZDLEVBQUErNUMsR0FD
QXFCLEVBQUFsK0IsSUFBQWxkLEVBQUErNUMsSUFFQUMsRUFBQSxTQUFBaDZDLEdBQ0EsTUFBQW83
QyxHQUFBcCtCLElBQUFoZCxJQUVBazZDLEVBQUEsU0FBQWw2QyxHQUNBbzdDLEVBQUEsT0FBQXA3
QyxJQUVBNjZDLEVBQUEsV0FDQSxNQUFBOWlDLE9BQUEzVCxLQUFBZzNDLEVBQUF2M0MsU0FHQWkz
QyxFQUFBLFNBQUE5NkMsR0FDQXE3QyxFQUFBQyxJQUFBdDdDLElBRUErNkMsRUFBQSxTQUFBLzZD
LEdBQ0FxN0MsRUFBQSxPQUFBcjdDLElBRUFnN0MsRUFBQSxXQUNBLE1BQUFqakMsT0FBQTNULEtB
QUFpM0MsRUFBQXgzQyxhQUVDLENBQ0QsR0FBQTAzQyxNQUNBQyxLQUlBQyxFQUFBLFNBQUF6N0Ms
R0FDQSxVQUFBQSxHQUVBMDdDLEVBQUEsU0FBQWwzQyxHQUNBLE1BQUFtM0MsVUFBQW4zQyxFQUFB
bzNDLE9BQUEsT0FHQWhCLEdBQUEsU0FBQTU2QyxFQUFBKzVDLEdBQ0EsR0FBQXYxQyxHQUFBaTND
LEVBQUF6N0MsRUFDQXU3QyxHQUFBLzJDLEdBQUF1MUMsR0FFQUMsRUFBQSxTQUFBaDZDLEdBQ0Es
R0FBQXdFLEdBQUFpM0MsRUFBQXo3QyxFQUNBLE9BQUF1N0MsR0FBQS8yQyxJQUVBMDFDLEVBQUEs
U0FBQWw2QyxHQUNBLEdBQUF3RSxHQUFBaTNDLEVBQUF6N0MsU0FDQXU3QyxHQUFBLzJDLElBRUFx
MkMsRUFBQSxXQUNBLE1BQUF0NkMsUUFBQXNELEtBQUEwM0MsR0FBQWo0QyxJQUFBbzRDLElBR0Fa
LEVBQUEsU0FBQTk2QyxHQUNBLEdBQUF3RSxHQUFBaTNDLEVBQUF6N0MsRUFDQXc3QyxHQUFBaDND
LElBQUEsR0FFQXUyQyxFQUFBLFNBQUEvNkMsR0FDQSxHQUFBd0UsR0FBQWkzQyxFQUFBejdDLFNB
Q0F3N0MsR0FBQWgzQyxJQUVBdzJDLEVBQUEsV0FDQSxNQUFBejZDLFFBQUFzRCxLQUFBMjNDLEdB
QUFsNEMsSUFBQW80QyxJQUlBLEdBQUFHLE1Bd0NBckIsR0FDQXNCLGNBQUEsU0FBQTk3QyxFQUFB
KzdDLEdBQ0EsR0FBQWhDLEdBQUFDLEVBQUFoNkMsRUFDQSs1QyxHQUFBLE9BQUF4ekMsRUFBQSxP
QUNBd3pDLEVBQUFFLFNBQUE4QixDQUVBLFFBQUF6N0MsR0FBQSxFQUFtQkEsRUFBQXk3QyxFQUFB
eDVDLE9BQXlCakMsSUFBQSxDQUM1QyxHQUFBMDdDLEdBQUFELEVBQUF6N0MsR0FDQTI3QyxFQUFB
akMsRUFBQWdDLEVBQ0FDLEdBQUEsT0FBQTExQyxFQUFBLE9BQ0EsTUFBQTAxQyxFQUFBaEMsVUFB
QSxnQkFBQWdDLEdBQUF2a0MsU0FBQSxNQUFBdWtDLEVBQUF2a0MsUUFBQW5SLEVBQUEsY0FDQTAx
QyxFQUFBeHBCLFVBQUEsT0FBQWxzQixFQUFBLE1BQ0EsTUFBQTAxQyxFQUFBQyxXQUNBRCxFQUFB
QyxTQUFBbDhDLEdBS0FpOEMsRUFBQUMsV0FBQWw4QyxFQUFBdUcsRUFBQSxNQUFBeTFDLEVBQUFD
LEVBQUFDLFNBQUFsOEMsR0FBQSxTQUdBbThDLHVCQUFBLFNBQUFuOEMsRUFBQTBYLEVBQUF3a0Ms
R0FDQSxHQUFBbkMsSUFDQXJpQyxVQUNBd2tDLFdBQ0E5ckMsS0FBQSxLQUNBNnBDLFlBQ0F4bkIs
V0FBQSxFQUNBMnBCLFlBQUEsRUFFQXhCLEdBQUE1NkMsRUFBQSs1QyxJQUVBc0Msd0JBQUEsU0FB
QXI4QyxFQUFBMFgsR0FDQSxHQUFBcWlDLEdBQUFDLEVBQUFoNkMsRUFDQSs1QyxNQUFBdG5CLFlB
S0FzbkIsRUFBQXJpQyxZQUVBNGtDLGlCQUFBLFNBQUF0OEMsR0FDQSxHQUFBKzVDLEdBQUFDLEVB
QUFoNkMsRUFDQSs1QyxHQUFBLE9BQUF4ekMsRUFBQSxPQUNBd3pDLEVBQUF0bkIsV0FBQSxDQUNB
LElBQUE4cEIsR0FBQSxJQUFBeEMsRUFBQW1DLFFBQ0FLLElBQ0F6QixFQUFBOTZDLElBR0F3OEMs
a0JBQUEsU0FBQXg4QyxHQUNBLEdBQUErNUMsR0FBQUMsRUFBQWg2QyxFQUNBKzVDLE1BQUF0bkIs
V0FLQXNuQixFQUFBcUMsZUFFQUssbUJBQUEsU0FBQXo4QyxHQUNBLEdBQUErNUMsR0FBQUMsRUFB
QWg2QyxFQUNBLElBQUErNUMsRUFBQSxDQU1BQSxFQUFBdG5CLFdBQUEsQ0FDQSxJQUFBOHBCLEdB
QUEsSUFBQXhDLEVBQUFtQyxRQUNBSyxJQUNBeEIsRUFBQS82QyxHQUdBNjdDLEVBQUFuMUMsS0FB
QTFHLElBRUEwOEMseUJBQUEsV0FDQSxJQUFBbEMsRUFBQW1DLGdCQUFBLENBS0EsT0FBQXI4QyxH
QUFBLEVBQW1CQSxFQUFBdTdDLEVBQUF0NUMsT0FBeUJqQyxJQUFBLENBQzVDLEdBQUFOLEdBQUE2
N0MsRUFBQXY3QyxFQUNBdzVDLEdBQUE5NUMsR0FFQTY3QyxFQUFBdDVDLE9BQUEsSUFFQWt3QixV
QUFBLFNBQUF6eUIsR0FDQSxHQUFBKzVDLEdBQUFDLEVBQUFoNkMsRUFDQSxTQUFBKzVDLEtBQUF0
bkIsV0FFQW1xQix3QkFBQSxTQUFBQyxHQUNBLEdBQUEvVCxHQUFBLEVBQ0EsSUFBQStULEVBQUEs
Q0FDQSxHQUFBOTZDLEdBQUFrckMsRUFBQTRQLEdBQ0FybEMsRUFBQXFsQyxFQUFBamxDLE1BQ0Fr
eEIsSUFBQXFSLEVBQUFwNEMsRUFBQTg2QyxFQUFBcmtDLFFBQUFoQixLQUFBMU0sV0FHQSxHQUFB
Z3lDLEdBQUFsdEMsRUFBQUMsUUFDQTdQLEVBQUE4OEMsS0FBQUMsUUFHQSxPQURBalUsSUFBQTBS
LEVBQUF3QyxxQkFBQWg5QyxJQUdBZzlDLHFCQUFBLFNBQUFoOUMsR0FFQSxJQURBLEdBQUE4b0Ms
R0FBQSxHQUNBOW9DLEdBQ0E4b0MsR0FBQXlSLEVBQUF2NkMsR0FDQUEsRUFBQXc2QyxFQUFBeUMs
WUFBQWo5QyxFQUVBLE9BQUE4b0MsSUFFQW9VLFlBQUEsU0FBQWw5QyxHQUNBLEdBQUErNUMsR0FB
QUMsRUFBQWg2QyxFQUNBLE9BQUErNUMsS0FBQUUsYUFFQWhOLGVBQUEsU0FBQWp0QyxHQUNBLEdB
QUEwWCxHQUFBOGlDLEVBQUFDLFdBQUF6NkMsRUFDQSxPQUFBMFgsR0FHQXUxQixFQUFBdjFCLEdB
RkEsTUFJQStpQyxXQUFBLFNBQUF6NkMsR0FDQSxHQUFBKzVDLEdBQUFDLEVBQUFoNkMsRUFDQSxP
QUFBKzVDLEtBQUFyaUMsUUFBQSxNQUVBaWpDLFdBQUEsU0FBQTM2QyxHQUNBLEdBQUEwWCxHQUFB
OGlDLEVBQUFDLFdBQUF6NkMsRUFDQSxPQUFBMFgsTUFBQUUsT0FHQUYsRUFBQUUsT0FBQW1sQyxT
QUZBLE1BSUFFLFlBQUEsU0FBQWo5QyxHQUNBLEdBQUErNUMsR0FBQUMsRUFBQWg2QyxFQUNBLE9B
QUErNUMsS0FBQW1DLFNBQUEsTUFFQWlCLFVBQUEsU0FBQW45QyxHQUNBLEdBQUErNUMsR0FBQUMs
RUFBQWg2QyxHQUNBMFgsRUFBQXFpQyxJQUFBcmlDLFFBQUEsS0FDQXZULEVBQUEsTUFBQXVULElB
QUFjLFFBQUEsSUFDQSxPQUFBclUsSUFFQWk1QyxRQUFBLFNBQUFwOUMsR0FDQSxHQUFBMFgsR0FB
QThpQyxFQUFBQyxXQUFBejZDLEVBQ0EsdUJBQUEwWCxHQUNBQSxFQUNLLGdCQUFBQSxHQUNMLEdB
QUFBLEVBRUEsTUFHQTJsQyxlQUFBLFNBQUFyOUMsR0FDQSxHQUFBKzVDLEdBQUFDLEVBQUFoNkMs
RUFDQSxPQUFBKzVDLEtBQUFxQyxZQUFBLEdBSUFwQixhQUNBc0MsaUJBQUF6QyxFQUVBMEMsNEJB
QUEsU0FBQUMsRUFBQUMsR0FDQSxxQkFBQTF5QyxTQUFBMnlDLFdBQUEsQ0FJQSxHQUFBQyxNQUNB
YixFQUFBbHRDLEVBQUFDLFFBQ0E3UCxFQUFBODhDLEtBQUFDLFFBRUEsS0FTQSxJQVJBUyxHQUNB
RyxFQUFBajNDLE1BQ0EzRSxLQUFBL0IsRUFBQXc2QyxFQUFBdk4sZUFBQWp0QyxHQUFBLEtBQ0Fx
NkMsU0FBQW9ELElBQUFwRCxTQUFBLEtBQ0FDLFdBQUFtRCxJQUFBbkQsV0FBQSxPQUlBdDZDLEdB
QUEsQ0FDQSxHQUFBMFgsR0FBQThpQyxFQUFBQyxXQUFBejZDLEdBQ0FrOEMsRUFBQTFCLEVBQUF5
QyxZQUFBajlDLEdBQ0EwNkMsRUFBQUYsRUFBQUcsV0FBQTM2QyxHQUNBbzZDLEVBQUFNLEVBQUFG
LEVBQUF2TixlQUFBeU4sR0FBQSxLQUNBdjJDLEVBQUF1VCxLQUFBYyxPQUNBbWxDLEdBQUFqM0Ms
TUFDQTNFLEtBQUFxNEMsRUFDQUMsU0FBQWwyQyxJQUFBazJDLFNBQUEsS0FDQUMsV0FBQW4yQyxJ
QUFBbTJDLFdBQUEsT0FFQXQ2QyxFQUFBazhDLEdBRUssTUFBQXA0QyxJQUtMaUgsUUFBQTJ5QyxX
QUFBQyxLQUVBQywyQkFBQSxXQUNBLGtCQUFBN3lDLFNBQUE4eUMsZUFHQTl5QyxRQUFBOHlDLGlC
QUlBOTlDLEdBQUFELFFBQUEwNkMsR3pGZzVTTSxTQUFTejZDLEVBQVFELEcwRjl2VHZCLFlBS0Es
SUFBQXFYLEdBQUEsa0JBQUFpZixnQkFBQSxLQUFBQSxPQUFBLDJCQUVBcjJCLEdBQUFELFFBQUFx
WCxHMUYrd1RNLFNBQVNwWCxFQUFRRCxFQUFTSCxHMkZ2eFRoQyxZQUlBLFNBQUFtK0MsR0FBQXhy
QixFQUFBQyxJQUZBLEdBWUFpbkIsSUFaQTc1QyxFQUFBLElBb0JBOHlCLFVBQUEsU0FBQUgsR0FD
QSxVQVdBSSxnQkFBQSxTQUFBSixFQUFBNW9CLEtBZUFtcEIsbUJBQUEsU0FBQVAsR0FDQXdyQixF
QUFBeHJCLEVBQUEsZ0JBY0FTLG9CQUFBLFNBQUFULEVBQUFVLEdBQ0E4cUIsRUFBQXhyQixFQUFB
LGlCQWFBYSxnQkFBQSxTQUFBYixFQUFBYyxHQUNBMHFCLEVBQUF4ckIsRUFBQSxjQUlBdnlCLEdB
QUFELFFBQUEwNUMsRzNGdXlUTSxTQUFTejVDLEVBQVFELEVBQVNILEc0RnozVGhDLFlBRUEsSUFB
QW8rQyxJQUFBLENBV0FoK0MsR0FBQUQsUUFBQWkrQyxHNUYwNFRNLFNBQVNoK0MsRUFBUUQsRzZG
bDZUdkIsWUFlQSxTQUFBb29CLEtBQ0EsT0FBQXNyQixHQUFBbHhDLFVBQUFDLE9BQUF5N0MsRUFB
QWptQyxNQUFBeTdCLEdBQUFDLEVBQUEsRUFBa0VBLEVBQUFELEVBQWFDLElBQy9FdUssRUFBQXZL
LEdBQUFueEMsVUFBQW14QyxFQUdBLFlBQUF1SyxFQUFBejdDLE9BQ0EsU0FBQStGLEdBQ0EsTUFB
QUEsSUFJQSxJQUFBMDFDLEVBQUF6N0MsT0FDQXk3QyxFQUFBLEdBR0FBLEVBQUFDLE9BQUEsU0FB
QW45QyxFQUFBQyxHQUNBLGtCQUNBLE1BQUFELEdBQUFDLEVBQUFDLE1BQUFXLE9BQUFXLGVBOUJB
eEMsRUFBQWtvQixZQUFBLEVBQ0Fsb0IsRUFBQSxRQUFBb29CLEc3Rnc4VE0sU0FBU25vQixFQUFR
RCxFQUFTSCxHOEYzOFRoQyxZQWNBLFNBQUFtb0IsR0FBQUMsR0FBc0MsTUFBQUEsTUFBQUMsV0FB
QUQsR0FBdUNFLFFBQUFGLEdBb0MzRSxRQUFBTyxHQUFBNDFCLEVBQUFDLEVBQUFDLEdBMEJGLFFB
QUFDLEtBQ0FDLElBQUFDLElBQ0FELEVBQUFDLEVBQUEzOUMsU0FTQSxRQUFBNnJDLEtBQ0EsTUFB
QStSLEdBMEJBLFFBQUEvTCxHQUFBeDRCLEdBQ0EscUJBQUFBLEdBQ0EsU0FBQXJZLE9BQUEsc0NB
R0EsSUFBQTR1QyxJQUFBLENBS0EsT0FIQTZOLEtBQ0FDLEVBQUE1M0MsS0FBQXVULEdBRUEsV0FD
QSxHQUFBdTJCLEVBQUEsQ0FJQUEsR0FBQSxFQUVBNk4sR0FDQSxJQUFBdjNCLEdBQUF3M0IsRUFB
QTF4QixRQUFBM1MsRUFDQXFrQyxHQUFBbHlDLE9BQUEwYSxFQUFBLEtBNkJBLFFBQUFrcEIsR0FB
QXlPLEdBQ0EsT0FBQTlMLEVBQUEsU0FBQThMLEdBQ0EsU0FBQTc4QyxPQUFBLDBFQUdBLHVCQUFB
NjhDLEdBQUE3ekMsS0FDQSxTQUFBaEosT0FBQSxxRkFHQSxJQUFBODhDLEVBQ0EsU0FBQTk4QyxP
QUFBLHFDQUdBLEtBQ0E4OEMsR0FBQSxFQUNBRixFQUFBRyxFQUFBSCxFQUFBQyxHQUNLLFFBQ0xD
LEdBQUEsRUFJQSxPQURBOWYsR0FBQTJmLEVBQUFELEVBQ0FoK0MsRUFBQSxFQUFtQkEsRUFBQXMr
QixFQUFBcjhCLE9BQXNCakMsSUFBQSxDQUN6QyxHQUFBMlosR0FBQTJrQixFQUFBdCtCLEVBQ0Ey
WixLQUdBLE1BQUF3a0MsR0FhQSxRQUFBRyxHQUFBQyxHQUNBLHFCQUFBQSxHQUNBLFNBQUFqOUMs
T0FBQSw2Q0FHQSs4QyxHQUFBRSxFQUNBN08sR0FBY3BsQyxLQUFBazBDLEVBQUFDLE9BU2QsUUFB
QUMsS0FDQSxHQUFBalMsR0FFQWtTLEVBQUF4TSxDQUNBLE9BQUExRixJQVNBMEYsVUFBQSxTQUFB
eU0sR0FLQSxRQUFBQyxLQUNBRCxFQUFBblksTUFDQW1ZLEVBQUFuWSxLQUFBMEYsS0FOQSxtQkFB
QXlTLEdBQ0EsU0FBQXI4QyxXQUFBLHlDQVNBczhDLElBQ0EsSUFBQUMsR0FBQUgsRUFBQUUsRUFD
QSxRQUFnQkMsaUJBRVhyUyxFQUFBc1MsRUFBQSxvQkFDTCxNQUFBcCtDLE9BQ0s4ckMsRUFuTUws
R0FBQXNDLEVBT0EsSUFMQSxrQkFBQThPLElBQUEsbUJBQUFDLEtBQ0FBLEVBQUFELEVBQ0FBLEVB
QUF4OEMsUUFHQSxtQkFBQXk4QyxHQUFBLENBQ0EscUJBQUFBLEdBQ0EsU0FBQXg4QyxPQUFBLDBD
QUdBLE9BQUF3OEMsR0FBQTkxQixHQUFBNDFCLEVBQUFDLEdBR0EscUJBQUFELEdBQ0EsU0FBQXQ4
QyxPQUFBLHlDQUdBLElBQUErOEMsR0FBQVQsRUFDQU0sRUFBQUwsRUFDQUksS0FDQUQsRUFBQUMs
RUFDQUcsR0FBQSxDQW9MQSxPQUZBMU8sSUFBWXBsQyxLQUFBazBDLEVBQUFDLE9BRVoxUCxHQUNB
VyxXQUNBeUMsWUFDQWhHLFdBQ0FtUyxrQkFDR3ZQLEVBQUFnUSxFQUFBLFNBQUFMLEVBQUEzUCxF
QWpRSHZ2QyxFQUFBa29CLFlBQUEsRUFDQWxvQixFQUFBZy9DLFlBQUFuOUMsT0FDQTdCLEVBQUEs
UUFBQXdvQixDQUVBLElBQUF1cUIsR0FBQWx6QyxFQUFBLElBRUFnekMsRUFBQTdxQixFQUFBK3FC
LEdBRUF5TSxFQUFBMy9DLEVBQUEsS0FFQTAvQyxFQUFBdjNCLEVBQUF3M0IsR0FVQVIsRUFBQWgv
QyxFQUFBZy9DLGFBQ0FDLEtBQUEsaUI5RjhyVU0sU0FBU2gvQyxFQUFRRCxHK0ZydFV2QixZQVVB
LFNBQUFvQyxHQUFBTSxHQUVBLG1CQUFBdUksVUFBQSxrQkFBQUEsU0FBQXJKLE9BQ0FxSixRQUFB
ckosTUFBQWMsRUFHQSxLQUlBLFNBQUFaLE9BQUFZLEdBRUcsTUFBQWpCLEtBcEJIekIsRUFBQWtv
QixZQUFBLEVBQ0Fsb0IsRUFBQSxRQUFBb0MsRy9GZ3ZVTSxTQUFTbkMsRUFBUUQsRUFBU0gsR2dH
enVVaEMsWUFlQSxTQUFBNC9DLEdBQUExK0MsR0FDQSxNQUFBQSxHQWNBLFFBQUFvWCxHQUFBb2hD
LEVBQUExaUMsRUFBQTZpQyxHQThVQSxRQUFBZ0csR0FBQUMsRUFBQTE5QyxHQUNBLEdBQUEyOUMs
R0FBQUMsRUFBQWwvQyxlQUFBc0IsR0FDQTQ5QyxFQUFBNTlDLEdBQ0EsSUFHQTY5QyxHQUFBbi9D
LGVBQUFzQixJQUNBK3VDLEVBQ0Esa0JBQUE0TyxFQUNBLDJKQUdBMzlDLEdBS0EwOUMsR0FDQTNP
LEVBQ0EsZ0JBQUE0TyxHQUFBLHVCQUFBQSxFQUNBLGdJQUdBMzlDLEdBU0EsUUFBQTg5QyxHQUFB
L2pCLEVBQUFna0IsR0FDQSxHQUFBQSxFQUFBLENBcUJBaFAsRUFDQSxrQkFBQWdQLEdBQ0Esc0hB
SUFoUCxHQUNBbjZCLEVBQUFtcEMsR0FDQSxtR0FJQSxJQUFBejFCLEdBQUF5UixFQUFBdDdCLFVB
Q0F1L0MsRUFBQTExQixFQUFBMjFCLG9CQUtBRixHQUFBci9DLGVBQUF3L0MsSUFDQUMsRUFBQUMs
T0FBQXJrQixFQUFBZ2tCLEVBQUFLLE9BR0EsUUFBQXArQyxLQUFBKzlDLEdBQ0EsR0FBQUEsRUFB
QXIvQyxlQUFBc0IsSUFJQUEsSUFBQWsrQyxFQUFBLENBS0EsR0FBQUcsR0FBQU4sRUFBQS85QyxH
QUNBMDlDLEVBQUFwMUIsRUFBQTVwQixlQUFBc0IsRUFHQSxJQUZBeTlDLEVBQUFDLEVBQUExOUMs
R0FFQW0rQyxFQUFBei9DLGVBQUFzQixHQUNBbStDLEVBQUFuK0MsR0FBQSs1QixFQUFBc2tCLE9B
Q08sQ0FLUCxHQUFBQyxHQUFBVixFQUFBbC9DLGVBQUFzQixHQUNBdStDLEVBQUEsa0JBQUFGLEdB
Q0FHLEVBQ0FELElBQ0FELElBQ0FaLEdBQ0FLLEVBQUFVLFlBQUEsQ0FFQSxJQUFBRCxFQUNBUixF
QUFBcjVDLEtBQUEzRSxFQUFBcStDLEdBQ0EvMUIsRUFBQXRvQixHQUFBcStDLE1BRUEsSUFBQVgs
RUFBQSxDQUNBLEdBQUFDLEdBQUFDLEVBQUE1OUMsRUFHQSt1QyxHQUNBdVAsSUFDQSx1QkFBQVgs
R0FDQSxnQkFBQUEsR0FDQSxtRkFFQUEsRUFDQTM5QyxHQUtBLHVCQUFBMjlDLEVBQ0FyMUIsRUFB
QXRvQixHQUFBMCtDLEVBQUFwMkIsRUFBQXRvQixHQUFBcStDLEdBQ2EsZ0JBQUFWLElBQ2JyMUIs
RUFBQXRvQixHQUFBMitDLEVBQUFyMkIsRUFBQXRvQixHQUFBcStDLFFBR0EvMUIsR0FBQXRvQixH
QUFBcStDLFVBY0EsUUFBQU8sR0FBQTdrQixFQUFBOGtCLEdBQ0EsR0FBQUEsRUFHQSxPQUFBNytD
LEtBQUE2K0MsR0FBQSxDQUNBLEdBQUFSLEdBQUFRLEVBQUE3K0MsRUFDQSxJQUFBNitDLEVBQUFu
Z0QsZUFBQXNCLEdBQUEsQ0FJQSxHQUFBOCtDLEdBQUE5K0MsSUFBQW0rQyxFQUNBcFAsSUFDQStQ
LEVBQ0EsME1BSUE5K0MsRUFHQSxJQUFBKytDLEdBQUEvK0MsSUFBQSs1QixFQUNBZ1YsSUFDQWdR
LEVBQ0EsdUhBR0EvK0MsR0FFQSs1QixFQUFBLzVCLEdBQUFxK0MsSUFXQSxRQUFBVyxHQUFBQyxF
QUFBQyxHQUNBblEsRUFDQWtRLEdBQUFDLEdBQUEsZ0JBQUFELElBQUEsZ0JBQUFDLEdBQ0EsNERB
R0EsUUFBQXo4QyxLQUFBeThDLEdBQ0FBLEVBQUF4Z0QsZUFBQStELEtBQ0Fzc0MsRUFDQW52QyxT
QUFBcS9DLEVBQUF4OEMsR0FDQSx5UEFLQUEsR0FFQXc4QyxFQUFBeDhDLEdBQUF5OEMsRUFBQXo4
QyxHQUdBLE9BQUF3OEMsR0FXQSxRQUFBUCxHQUFBTyxFQUFBQyxHQUNBLGtCQUNBLEdBQUFuZ0Qs
R0FBQWtnRCxFQUFBaGdELE1BQUFDLEtBQUFxQixXQUNBdkIsRUFBQWtnRCxFQUFBamdELE1BQUFD
LEtBQUFxQixVQUNBLFVBQUF4QixFQUNBLE1BQUFDLEVBQ08sVUFBQUEsRUFDUCxNQUFBRCxFQUVB
LElBQUFWLEtBR0EsT0FGQTJnRCxHQUFBM2dELEVBQUFVLEdBQ0FpZ0QsRUFBQTNnRCxFQUFBVyxH
QUNBWCxHQVlBLFFBQUFzZ0QsR0FBQU0sRUFBQUMsR0FDQSxrQkFDQUQsRUFBQWhnRCxNQUFBQyxL
QUFBcUIsV0FDQTIrQyxFQUFBamdELE1BQUFDLEtBQUFxQixZQVdBLFFBQUE0K0MsR0FBQWo4QyxF
QUFBNkgsR0FDQSxHQUFBcTBDLEdBQUFyMEMsRUFBQW9MLEtBQUFqVCxFQWlEQSxPQUFBazhDLEdB
UUEsUUFBQUMsR0FBQW44QyxHQUVBLE9BREFvOEMsR0FBQXA4QyxFQUFBKzZDLHFCQUNBMS9DLEVB
QUEsRUFBbUJBLEVBQUErZ0QsRUFBQTkrQyxPQUFrQmpDLEdBQUEsR0FDckMsR0FBQWdoRCxHQUFB
RCxFQUFBL2dELEdBQ0F3TSxFQUFBdTBDLEVBQUEvZ0QsRUFBQSxFQUNBMkUsR0FBQXE4QyxHQUFB
SixFQUFBajhDLEVBQUE2SCxJQW1FQSxRQUFBK0osR0FBQWlwQyxHQUlBLEdBQUFoa0IsR0FBQXlq
QixFQUFBLFNBQUE5bkMsRUFBQTlMLEVBQUEydEMsR0FhQXI0QyxLQUFBKytDLHFCQUFBejlDLFFB
Q0E2K0MsRUFBQW5nRCxNQUdBQSxLQUFBd1csUUFDQXhXLEtBQUEwSyxVQUNBMUssS0FBQXM0QyxL
QUFBMTdCLEVBQ0E1YyxLQUFBcTRDLFdBQUFFLEVBRUF2NEMsS0FBQTZ0QyxNQUFBLElBS0EsSUFB
QXlTLEdBQUF0Z0QsS0FBQXVnRCxnQkFBQXZnRCxLQUFBdWdELGtCQUFBLElBWUExUSxHQUNBLGdC
QUFBeVEsS0FBQXhwQyxNQUFBd1IsUUFBQWc0QixHQUNBLHNEQUNBemxCLEVBQUExSixhQUFBLDJC
QUdBbnhCLEtBQUE2dEMsTUFBQXlTLEdBRUF6bEIsR0FBQXQ3QixVQUFBLEdBQUFpaEQsR0FDQTNs
QixFQUFBdDdCLFVBQUF1TixZQUFBK3RCLEVBQ0FBLEVBQUF0N0IsVUFBQXcvQyx3QkFFQTBCLEVB
QUEvOUMsUUFBQWs4QyxFQUFBM25DLEtBQUEsS0FBQTRqQixJQUVBK2pCLEVBQUEvakIsRUFBQTZs
QixHQUNBOUIsRUFBQS9qQixFQUFBZ2tCLEdBQ0FELEVBQUEvakIsRUFBQThsQixHQUdBOWxCLEVB
QUErbEIsa0JBQ0EvbEIsRUFBQTlqQixhQUFBOGpCLEVBQUErbEIsbUJBZ0JBL1EsRUFDQWhWLEVB
QUF0N0IsVUFBQWtrQyxPQUNBLDBFQXFCQSxRQUFBeUksS0FBQXdTLEdBQ0E3akIsRUFBQXQ3QixV
QUFBMnNDLEtBQ0FyUixFQUFBdDdCLFVBQUEyc0MsR0FBQSxLQUlBLE9BQUFyUixHQXB6QkEsR0FB
QTRsQixNQXdCQS9CLEdBT0FRLE9BQUEsY0FTQVMsUUFBQSxjQVFBNXZCLFVBQUEsY0FRQStjLGFB
QUEsY0FRQUksa0JBQUEsY0FjQTBULGdCQUFBLHFCQWdCQUwsZ0JBQUEscUJBTUFwUyxnQkFBQSxx
QkFpQkExSyxPQUFBLGNBV0FvZCxtQkFBQSxjQVlBdlMsa0JBQUEsY0FxQkFHLDBCQUFBLGNBc0JB
aEQsc0JBQUEsY0FpQkFxVixvQkFBQSxjQWNBM1IsbUJBQUEsY0FhQVQscUJBQUEsY0FjQXFTLGdC
QUFBLGlCQVlBOUIsR0FDQTl0QixZQUFBLFNBQUEwSixFQUFBMUosR0FDQTBKLEVBQUExSixlQUVB
K3RCLE9BQUEsU0FBQXJrQixFQUFBcWtCLEdBQ0EsR0FBQUEsRUFDQSxPQUFBNy9DLEdBQUEsRUFB
dUJBLEVBQUE2L0MsRUFBQTU5QyxPQUFtQmpDLElBQzFDdS9DLEVBQUEvakIsRUFBQXFrQixFQUFB
Ny9DLEtBSUE2dEMsa0JBQUEsU0FBQXJTLEVBQUFxUyxHQUlBclMsRUFBQXFTLGtCQUFBcmlDLEtB
RUFnd0IsRUFBQXFTLGtCQUNBQSxJQUdBSixhQUFBLFNBQUFqUyxFQUFBaVMsR0FJQWpTLEVBQUFp
UyxhQUFBamlDLEtBRUFnd0IsRUFBQWlTLGFBQ0FBLElBT0E4VCxnQkFBQSxTQUFBL2xCLEVBQUEr
bEIsR0FDQS9sQixFQUFBK2xCLGdCQUNBL2xCLEVBQUErbEIsZ0JBQUFwQixFQUNBM2tCLEVBQUEr
bEIsZ0JBQ0FBLEdBR0EvbEIsRUFBQStsQixtQkFHQTd3QixVQUFBLFNBQUE4SyxFQUFBOUssR0FJ
QThLLEVBQUE5SyxVQUFBbGxCLEtBQXdDZ3dCLEVBQUE5SyxjQUV4QzR2QixRQUFBLFNBQUE5a0Is
RUFBQThrQixHQUNBRCxFQUFBN2tCLEVBQUE4a0IsSUFFQUosU0FBQSxjQXNWQW1CLEdBQ0FwUyxr
QkFBQSxXQUNBdHVDLEtBQUFnaEQsYUFBQSxJQUlBTCxHQUNBalMscUJBQUEsV0FDQTF1QyxLQUFB
Z2hELGFBQUEsSUFRQXJDLEdBS0FzQyxhQUFBLFNBQUFDLEVBQUF6NEMsR0FDQXpJLEtBQUFxNEMs
UUFBQXZtQixvQkFBQTl4QixLQUFBa2hELEVBQUF6NEMsSUFTQStvQixVQUFBLFdBYUEsUUFBQXh4
QixLQUFBZ2hELGNBSUFSLEVBQUEsWUE4SEEsT0E3SEEzMUMsR0FDQTIxQyxFQUFBamhELFVBQ0E2
NEMsRUFBQTc0QyxVQUNBby9DLEdBMEhBL29DLEVBeDFCQSxHQWlCQXVyQyxHQWpCQXQyQyxFQUFB
bk0sRUFBQSxHQUVBa2UsRUFBQWxlLEVBQUEsSUFDQW14QyxFQUFBbnhDLEVBQUEsR0FNQXNnRCxF
QUFBLFFBZ0JBbUMsTUFrMEJBcmlELEVBQUFELFFBQUFtWSxHaEcwdlVNLFNBQVNsWSxFQUFRRCxH
aUdqbVd2QixZQXdCQSxTQUFBdWlELEdBQUE3N0IsR0FDQSxNQUFBQSxHQUFBMWtCLFFBQUF3Z0Qs
RUFBQSxTQUFBQyxFQUFBQyxHQUNBLE1BQUFBLEdBQUEvckIsZ0JBYkEsR0FBQTZyQixHQUFBLE9B
aUJBdmlELEdBQUFELFFBQUF1aUQsR2pHdW1XTSxTQUFTdGlELEVBQVFELEVBQVNILEdrRzFuV2hD
LFlBdUJBLFNBQUE4aUQsR0FBQWo4QixHQUNBLE1BQUE2N0IsR0FBQTc3QixFQUFBMWtCLFFBQUE0
Z0QsRUFBQSxRQXRCQSxHQUFBTCxHQUFBMWlELEVBQUEsSUFFQStpRCxFQUFBLE9BdUJBM2lELEdB
QUFELFFBQUEyaUQsR2xHMm9XTSxTQUFTMWlELEVBQVFELEVBQVNILEdtR2pyV2hDLFlBb0JBLFNB
QUFzZ0MsR0FBQTBpQixFQUFBQyxHQUNBLFNBQUFELElBQUFDLEtBRUdELElBQUFDLElBRUFDLEVB
QUFGLEtBRUFFLEVBQUFELEdBQ0gzaUIsRUFBQTBpQixFQUFBQyxFQUFBajhDLFlBQ0csWUFBQWc4
QyxHQUNIQSxFQUFBRyxTQUFBRixLQUNHRCxFQUFBSSw0QkFDSCxHQUFBSixFQUFBSSx3QkFBQUgs
TUFuQkEsR0FBQUMsR0FBQWxqRCxFQUFBLElBeUJBSSxHQUFBRCxRQUFBbWdDLEduR3VyV00sU0FB
U2xnQyxFQUFRRCxFQUFTSCxHb0c3dFdoQyxZQXdCQSxTQUFBNFcsR0FBQXdSLEdBQ0EsR0FBQXhs
QixHQUFBd2xCLEVBQUF4bEIsTUFlQSxJQVhBd1YsTUFBQXdSLFFBQUF4QixJQUFBLGdCQUFBQSxJ
QUFBLGtCQUFBQSxHQUFBNW1CLEdBQUEsVUFFQSxnQkFBQW9CLEdBQUFwQixHQUFBLFVBRUEsSUFB
QW9CLEtBQUEsSUFBQXdsQixHQUFBLE9BQUE1bUIsR0FBQSxHQUVBLGtCQUFBNG1CLEdBQUFpN0Is
T0FBbUw3aEQsR0FBQSxVQUtuTDRtQixFQUFBdG5CLGVBQ0EsSUFDQSxNQUFBc1gsT0FBQXZYLFVB
QUFJLE1BQUFWLEtBQUE2bkIsR0FDSyxNQUFBeG1CLElBUUwsT0FEQTBrQixHQUFBbE8sTUFBQXhW
LEdBQ0E0b0MsRUFBQSxFQUFrQkEsRUFBQTVvQyxFQUFhNG9DLElBQy9CbGxCLEVBQUFrbEIsR0FB
QXBqQixFQUFBb2pCLEVBRUEsT0FBQWxsQixHQWtCQSxRQUFBZzlCLEdBQUFsN0IsR0FDQSxRQUVB
QSxJQUVBLGdCQUFBQSxJQUFBLGtCQUFBQSxLQUVBLFVBQUFBLE1BRUEsZUFBQUEsS0FHQSxnQkFB
QUEsR0FBQW5qQixXQUVBbVQsTUFBQXdSLFFBQUF4QixJQUVBLFVBQUFBLElBRUEsUUFBQUEsSUF5
QkEsUUFBQW03QixHQUFBbjdCLEdBQ0EsTUFBQWs3QixHQUFBbDdCLEdBRUdoUSxNQUFBd1IsUUFB
QXhCLEdBQ0hBLEVBQUFubkIsUUFFQTJWLEVBQUF3UixJQUpBQSxHQXhHQSxHQUFBNW1CLEdBQUF4
QixFQUFBLEVBZ0hBSSxHQUFBRCxRQUFBb2pELEdwR211V00sU0FBU25qRCxFQUFRRCxFQUFTSCxH
cUdoMldoQyxZQXFDQSxTQUFBd2pELEdBQUF6dUMsR0FDQSxHQUFBMHVDLEdBQUExdUMsRUFBQWdT
LE1BQUEyOEIsRUFDQSxPQUFBRCxNQUFBLEdBQUF6eEMsY0FhQSxRQUFBMnhDLEdBQUE1dUMsRUFB
QTZ1QyxHQUNBLEdBQUE3K0MsR0FBQTgrQyxDQUNBQSxHQUFBLE9BQUFyaUQsR0FBQSxFQUNBLElB
QUE2UCxHQUFBbXlDLEVBQUF6dUMsR0FFQSt1QyxFQUFBenlDLEdBQUEweUMsRUFBQTF5QyxFQUNB
LElBQUF5eUMsRUFBQSxDQUNBLytDLEVBQUE2aUIsVUFBQWs4QixFQUFBLEdBQUEvdUMsRUFBQSt1
QyxFQUFBLEVBR0EsS0FEQSxHQUFBRSxHQUFBRixFQUFBLEdBQ0FFLEtBQ0FqL0MsSUFBQWcvQixj
QUdBaC9CLEdBQUE2aUIsVUFBQTdTLENBR0EsSUFBQWt2QyxHQUFBbC9DLEVBQUFtL0MscUJBQUEs
U0FDQUQsR0FBQXJoRCxTQUNBZ2hELEVBQUEsT0FBQXBpRCxHQUFBLEdBQ0EraEQsRUFBQVUsR0FB
QWpnRCxRQUFBNC9DLEdBSUEsS0FEQSxHQUFBTyxHQUFBL3JDLE1BQUEzVCxLQUFBTSxFQUFBcS9D
LFlBQ0FyL0MsRUFBQWcvQixXQUNBaC9CLEVBQUFrakIsWUFBQWxqQixFQUFBZy9CLFVBRUEsT0FB
QW9nQixHQWhFQSxHQUFBbDhDLEdBQUFqSSxFQUFBLEdBRUF1akQsRUFBQXZqRCxFQUFBLEtBQ0Er
akQsRUFBQS9qRCxFQUFBLEtBQ0F3QixFQUFBeEIsRUFBQSxHQUtBNmpELEVBQUE1N0MsRUFBQUos
VUFBQUUsU0FBQUMsY0FBQSxZQUtBMDdDLEVBQUEsWUFxREF0akQsR0FBQUQsUUFBQXdqRCxHckdz
MldNLFNBQVN2akQsRUFBUUQsRUFBU0gsR3NHeDdXaEMsWUE2RUEsU0FBQStqRCxHQUFBMXlDLEdB
YUEsTUFaQXd5QyxHQUFBLE9BQUFyaUQsR0FBQSxHQUNBNmlELEVBQUF2akQsZUFBQXVRLEtBQ0FB
LEVBQUEsS0FFQWl6QyxFQUFBeGpELGVBQUF1USxLQUNBLE1BQUFBLEVBQ0F3eUMsRUFBQWo4QixV
QUFBLFdBRUFpOEIsRUFBQWo4QixVQUFBLElBQUF2VyxFQUFBLE1BQUFBLEVBQUEsSUFFQWl6QyxF
QUFBanpDLElBQUF3eUMsRUFBQXY5QyxZQUVBZytDLEVBQUFqekMsR0FBQWd6QyxFQUFBaHpDLEdB
QUEsS0E1RUEsR0FBQXBKLEdBQUFqSSxFQUFBLEdBRUF3QixFQUFBeEIsRUFBQSxHQUtBNmpELEVB
QUE1N0MsRUFBQUosVUFBQUUsU0FBQUMsY0FBQSxZQVNBczhDLEtBRUFDLEdBQUEsMENBQ0FDLEdB
QUEsd0JBQ0FDLEdBQUEsZ0RBRUFDLEdBQUEsdURBRUFMLEdBQ0FNLEtBQUEscUJBRUFDLE1BQUEs
b0JBQ0FDLEtBQUEsNERBQ0FDLFFBQUEsOEJBQ0FDLE9BQUEsMEJBQ0FDLElBQUEsdUNBRUFDLFNB
QUFWLEVBQ0FXLE9BQUFYLEVBRUFZLFFBQUFYLEVBQ0FZLFNBQUFaLEVBQ0FhLE1BQUFiLEVBQ0Fj
LE1BQUFkLEVBQ0FlLE1BQUFmLEVBRUFnQixHQUFBZixFQUNBZ0IsR0FBQWhCLEdBTUFpQixHQUFB
LG9LQUNBQSxHQUFBMWhELFFBQUEsU0FBQXFOLEdBQ0FnekMsRUFBQWh6QyxHQUFBcXpDLEVBQ0FK
LEVBQUFqekMsSUFBQSxJQTJCQWpSLEVBQUFELFFBQUE0akQsR3RHODdXTSxTQUFTM2pELEVBQVFE
LEd1R2hoWHZCLFlBYUEsU0FBQXdsRCxHQUFBQyxHQUNBLE1BQUFBLEdBQUFDLFFBQUFELGVBQUFD
LFFBRUE5N0IsRUFBQTY3QixFQUFBRSxhQUFBRixFQUFBNzlDLFNBQUF3NEIsZ0JBQUF3bEIsV0FD
QS83QixFQUFBNDdCLEVBQUFJLGFBQUFKLEVBQUE3OUMsU0FBQXc0QixnQkFBQTBsQixZQUlBbDhC
LEVBQUE2N0IsRUFBQUcsV0FDQS83QixFQUFBNDdCLEVBQUFLLFdBSUE3bEQsRUFBQUQsUUFBQXds
RCxHdkdpaVhNLFNBQVN2bEQsRUFBUUQsR3dHdGtYdkIsWUEyQkEsU0FBQStsRCxHQUFBci9CLEdB
Q0EsTUFBQUEsR0FBQTFrQixRQUFBZ2tELEVBQUEsT0FBQW4wQyxjQWZBLEdBQUFtMEMsR0FBQSxV
QWtCQS9sRCxHQUFBRCxRQUFBK2xELEd4RzRrWE0sU0FBUzlsRCxFQUFRRCxFQUFTSCxHeUdobVho
QyxZQXNCQSxTQUFBb21ELEdBQUF2L0IsR0FDQSxNQUFBcS9CLEdBQUFyL0IsR0FBQTFrQixRQUFB
NGdELEVBQUEsUUFyQkEsR0FBQW1ELEdBQUFsbUQsRUFBQSxLQUVBK2lELEVBQUEsTUFzQkEzaUQs
R0FBQUQsUUFBQWltRCxHekdpblhNLFNBQVNobUQsRUFBUUQsRzBHdHBYdkIsWUFpQkEsU0FBQWtt
RCxHQUFBdnRDLEdBQ0EsR0FBQStFLEdBQUEvRSxJQUFBZ0YsZUFBQWhGLEVBQUEvUSxTQUNBZ1cs
RUFBQUYsRUFBQUUsYUFBQWpXLE1BQ0EsVUFBQWdSLEtBQUEsa0JBQUFpRixHQUFBdW9DLEtBQUF4
dEMsWUFBQWlGLEdBQUF1b0MsS0FBQSxnQkFBQXh0QyxJQUFBLGdCQUFBQSxHQUFBN1QsVUFBQSxn
QkFBQTZULEdBQUF6SCxXQUdBalIsRUFBQUQsUUFBQWttRCxHMUc0cFhNLFNBQVNqbUQsRUFBUUQs
RUFBU0gsRzJHbnJYaEMsWUFtQkEsU0FBQWtqRCxHQUFBcHFDLEdBQ0EsTUFBQXV0QyxHQUFBdnRD
LElBQUEsR0FBQUEsRUFBQTdULFNBUEEsR0FBQW9oRCxHQUFBcm1ELEVBQUEsSUFVQUksR0FBQUQs
UUFBQStpRCxHM0d5clhNLFNBQVM5aUQsRUFBUUQsRzRHcHNYdkIsWUFNQSxTQUFBb21ELEdBQUF4
OEMsR0FDQSxHQUFBeThDLEtBQ0EsaUJBQUEzL0IsR0FJQSxNQUhBMi9CLEdBQUExbEQsZUFBQSts
QixLQUNBMi9CLEVBQUEzL0IsR0FBQTljLEVBQUF4SixLQUFBZSxLQUFBdWxCLElBRUEyL0IsRUFB
QTMvQixJQUlBem1CLEVBQUFELFFBQUFvbUQsRzVHc3RYTSxTQUFTbm1ELEVBQVFELEc2Rzl1WHZC
LFlBRUEsSUFBQXNtRCxJQUNBalksbUJBQUEsRUFDQUosY0FBQSxFQUNBLzFCLGNBQUEsRUFDQW9h
LGFBQUEsRUFDQXl2QixpQkFBQSxFQUNBMUIsUUFBQSxFQUNBbnZCLFdBQUEsRUFDQXBtQixNQUFB
LEdBR0F5N0MsR0FDQXRrRCxNQUFBLEVBQ0FRLFFBQUEsRUFDQS9CLFdBQUEsRUFDQThsRCxRQUFB
LEVBQ0F0RCxRQUFBLEVBQ0ExZ0QsV0FBQSxFQUNBaWtELE9BQUEsR0FHQXhpRCxFQUFBeEQsT0FB
QXdELHNCQUVBQyxHQURBekQsT0FBQUMsVUFBQUMsZUFDQUYsT0FBQUMsVUFBQXlELHNCQUNBeXZD
LEVBQUFuekMsT0FBQW16QyxlQUNBOFMsRUFBQTlTLEtBQUFuekMsUUFDQTJDLEVBQUEzQyxPQUFB
MkMsbUJBRUFuRCxHQUFBRCxRQUFBLFFBQUEybUQsR0FBQUMsRUFBQUMsRUFBQUMsR0FDQSxtQkFB
QUQsR0FBQSxDQUVBLEdBQUFILEVBQUEsQ0FDQSxHQUFBSyxHQUFBblQsRUFBQWlULEVBQ0FFLFFB
QUFMLEdBQ0FDLEVBQUFDLEVBQUFHLEVBQUFELEdBSUEsR0FBQS9pRCxHQUFBWCxFQUFBeWpELEVB
RUE1aUQsS0FDQUYsSUFBQTNDLE9BQUE2QyxFQUFBNGlELElBR0EsUUFBQXJtRCxHQUFBLEVBQXVC
QSxFQUFBdUQsRUFBQXRCLFNBQWlCakMsRUFBQSxDQUN4QyxHQUFBa0UsR0FBQVgsRUFBQXZELEVB
Q0EsTUFBQThsRCxFQUFBNWhELElBQUE2aEQsRUFBQTdoRCxJQUFBb2lELEtBQUFwaUQsTUFFQVIs
RUFBQTlELEtBQUF5bUQsRUFBQW5pRCxJQUFBLGtCQUFBbWlELEdBQUFuaUQsSUFDQSxJQUNBa2lE
LEVBQUFsaUQsR0FBQW1pRCxFQUFBbmlELEdBQ3FCLE1BQUFqRCxLQUtyQixNQUFBbWxELEdBR0Es
TUFBQUEsSzdHMHZYTSxTQUFTM21ELEVBQVFELEVBQVNILEc4R2x6WGhDLFlBYUEsSUFBQXdCLEdB
QUEsU0FBQUMsRUFBQUMsRUFBQVAsRUFBQUMsRUFBQVgsRUFBQWtCLEVBQUFDLEVBQUFDLEdBT0Es
SUFBQUosRUFBQSxDQUNBLEdBQUFNLEVBQ0EsSUFBQUMsU0FBQU4sRUFDQUssRUFBQSxHQUFBRSxP
QUNBLHFJQUdLLENBQ0wsR0FBQWpCLElBQUFHLEVBQUFDLEVBQUFYLEVBQUFrQixFQUFBQyxFQUFB
QyxHQUNBSyxFQUFBLENBQ0FILEdBQUEsR0FBQUUsT0FDQVAsRUFBQVMsUUFBQSxpQkFBMEMsTUFB
QW5CLEdBQUFrQixRQUUxQ0gsRUFBQUssS0FBQSxzQkFJQSxLQURBTCxHQUFBTSxZQUFBLEVBQ0FO
LEdBSUEzQixHQUFBRCxRQUFBcUIsRzlHazBYTSxTQUFTcEIsRUFBUUQsRUFBU0gsRytHbDJYaEMs
UUFBQXdxQixHQUFBcFksR0FDQSxhQUFBQSxFQUNBcFEsU0FBQW9RLEVBQUErMEMsRUFBQUMsRUFF
QUMsT0FBQXptRCxRQUFBd1IsR0FDQWsxQyxFQUFBbDFDLEdBQ0FtMUMsRUFBQW4xQyxHQXhCQSxH
QUFBcWtCLEdBQUF6MkIsRUFBQSxJQUNBc25ELEVBQUF0bkQsRUFBQSxLQUNBdW5ELEVBQUF2bkQs
RUFBQSxLQUdBb25ELEVBQUEsZ0JBQ0FELEVBQUEscUJBR0FFLEVBQUE1d0IsSUFBQSt3QixZQUFB
eGxELE1Ba0JBNUIsR0FBQUQsUUFBQXFxQixHL0cyM1hNLFNBQVNwcUIsRUFBUUQsSWdIdDVYdkIs
U0FBQXNuRCxHQUNBLEdBQUFDLEdBQUEsZ0JBQUFELFNBQUE3bUQsaUJBQUE2bUQsQ0FFQXJuRCxH
QUFBRCxRQUFBdW5ELEloSDA1WDhCbm5ELEtBQUtKLEVBQVUsV0FBYSxNQUFPbUIsV0FJM0QsU0FB
U2xCLEVBQVFELEVBQVNILEdpSGo2WGhDLEdBQUEybkQsR0FBQTNuRCxFQUFBLEtBR0EycUIsRUFB
QWc5QixFQUFBL21ELE9BQUFtekMsZUFBQW56QyxPQUVBUixHQUFBRCxRQUFBd3FCLEdqSHc2WE0s
U0FBU3ZxQixFQUFRRCxFQUFTSCxHa0hwNVhoQyxRQUFBc25ELEdBQUFsMUMsR0FDQSxHQUFBdzFD
LEdBQUE5bUQsRUFBQVAsS0FBQTZSLEVBQUFpMUMsR0FDQXJ1QyxFQUFBNUcsRUFBQWkxQyxFQUVB
LEtBQ0FqMUMsRUFBQWkxQyxHQUFBcmxELE1BQ0EsSUFBQTZsRCxJQUFBLEVBQ0csTUFBQWptRCxJ
QUVILEdBQUFrbUQsR0FBQUMsRUFBQXhuRCxLQUFBNlIsRUFRQSxPQVBBeTFDLEtBQ0FELEVBQ0F4
MUMsRUFBQWkxQyxHQUFBcnVDLFFBRUE1RyxHQUFBaTFDLElBR0FTLEVBMUNBLEdBQUFyeEIsR0FB
QXoyQixFQUFBLElBR0FpckIsRUFBQXJxQixPQUFBQyxVQUdBQyxFQUFBbXFCLEVBQUFucUIsZUFP
QWluRCxFQUFBOThCLEVBQUF0akIsU0FHQTAvQyxFQUFBNXdCLElBQUErd0IsWUFBQXhsRCxNQTZC
QTVCLEdBQUFELFFBQUFtbkQsR2xIbzdYTSxTQUFTbG5ELEVBQVFELEdtSGg5WHZCLFFBQUFvbkQs
R0FBQW4xQyxHQUNBLE1BQUEyMUMsR0FBQXhuRCxLQUFBNlIsR0FqQkEsR0FBQTZZLEdBQUFycUIs
T0FBQUMsVUFPQWtuRCxFQUFBOThCLEVBQUF0akIsUUFhQXZILEdBQUFELFFBQUFvbkQsR25IdytY
TSxTQUFTbm5ELEVBQVFELEdvSHIvWHZCLFFBQUF3bkQsR0FBQW4yQixFQUFBdzJCLEdBQ0EsZ0JB
QUFyL0MsR0FDQSxNQUFBNm9CLEdBQUF3MkIsRUFBQXIvQyxLQUlBdkksRUFBQUQsUUFBQXduRCxH
cEhvZ1lNLFNBQVN2bkQsRUFBUUQsRUFBU0gsR3FIbGhZaEMsR0FBQTBuRCxHQUFBMW5ELEVBQUEs
S0FHQWlvRCxFQUFBLGdCQUFBcndDLGtCQUFBaFgsaUJBQUFnWCxLQUdBNGUsRUFBQWt4QixHQUFB
TyxHQUFBajlCLFNBQUEsZ0JBRUE1cUIsR0FBQUQsUUFBQXEyQixHckh5aFlNLFNBQVNwMkIsRUFB
UUQsR3NIemdZdkIsUUFBQW9xQixHQUFBblksR0FDQSxhQUFBQSxHQUFBLGdCQUFBQSxHQUdBaFMs
RUFBQUQsUUFBQW9xQixHdEh3aVlNLFNBQVNucUIsRUFBUUQsRUFBU0gsR3VIM2pZaEMsWUFvQkEs
U0FBQTJ4QixHQUFBdTJCLEVBQUFDLEVBQUFDLEVBQUE5MkIsRUFBQSsyQixJQStCQWpvRCxFQUFB
RCxRQUFBd3hCLEd2SDJrWU0sU0FBU3Z4QixFQUFRRCxFQUFTSCxHd0g5blloQyxZQUVBLElBQUFz
QyxHQUFBdEMsRUFBQSxHQUNBd0IsRUFBQXhCLEVBQUEsR0FDQTZ3QixFQUFBN3dCLEVBQUEsR0FF
QUksR0FBQUQsUUFBQSxXQUNBLFFBQUFtb0QsR0FBQXh3QyxFQUFBekosRUFBQWlqQixFQUFBODJC
LEVBQUFHLEVBQUFDLEdBQ0FBLElBQUEzM0IsR0FJQXJ2QixHQUNBLEVBQ0EsbUxBTUEsUUFBQWlu
RCxLQUNBLE1BQUFILEdBRkFBLEVBQUF6VixXQUFBeVYsQ0FNQSxJQUFBdHlDLElBQ0EwZ0MsTUFB
QTRSLEVBQ0F2VCxLQUFBdVQsRUFDQTkyQixLQUFBODJCLEVBQ0FuZSxPQUFBbWUsRUFDQXh2QyxP
QUFBd3ZDLEVBQ0F6aEMsT0FBQXloQyxFQUNBSSxPQUFBSixFQUVBSyxJQUFBTCxFQUNBTSxRQUFB
SCxFQUNBMXdDLFFBQUF1d0MsRUFDQU8sV0FBQUosRUFDQTFqRCxLQUFBdWpELEVBQ0FRLFNBQUFM
LEVBQ0FNLE1BQUFOLEVBQ0FPLFVBQUFQLEVBQ0E3VixNQUFBNlYsRUFNQSxPQUhBenlDLEdBQUEy
YixlQUFBcnZCLEVBQ0EwVCxFQUFBaUIsVUFBQWpCLEVBRUFBLEl4SCtvWU0sU0FBUzVWLEVBQVFE
LEVBQVNILEd5SC9yWWhDLFlBRUEsSUFBQXNDLEdBQUF0QyxFQUFBLEdBQ0F3QixFQUFBeEIsRUFB
QSxHQUNBdUMsRUFBQXZDLEVBQUEsR0FFQTZ3QixFQUFBN3dCLEVBQUEsSUFDQTJ4QixFQUFBM3hC
LEVBQUEsSUFFQUksR0FBQUQsUUFBQSxTQUFBNlcsRUFBQTBmLEdBbUJBLFFBQUEwVSxHQUFBNmQs
R0FDQSxHQUFBOWQsR0FBQThkLElBQUFDLEdBQUFELEVBQUFDLElBQUFELEVBQUFFLEdBQ0Esc0JB
QUFoZSxHQUNBLE1BQUFBLEdBZ0ZBLFFBQUFyaEIsR0FBQUMsRUFBQUMsR0FFQSxNQUFBRCxLQUFB
QyxFQUdBLElBQUFELEdBQUEsRUFBQUEsSUFBQSxFQUFBQyxFQUdBRCxPQUFBQyxNQVlBLFFBQUFv
L0IsR0FBQXZtRCxHQUNBdkIsS0FBQXVCLFVBQ0F2QixLQUFBMDhDLE1BQUEsR0FLQSxRQUFBcUws
R0FBQUMsR0FLQSxRQUFBQyxHQUFBMVcsRUFBQS82QixFQUFBekosRUFBQWlqQixFQUFBODJCLEVB
QUFHLEVBQUFDLEdBSUEsR0FIQWwzQixLQUFBazRCLEVBQ0FqQixLQUFBbDZDLEVBRUFtNkMsSUFB
QTMzQixFQUNBLEdBQUE2RixFQUVBbDFCLEdBQ0EsRUFDQSwwTEEyQkEsYUFBQXNXLEVBQUF6SixH
QUNBd2tDLEVBRUEsR0FBQXVXLEdBREEsT0FBQXR4QyxFQUFBekosR0FDQSxPQUFBKzVDLEVBQUEs
S0FBQUcsRUFBQSxtQ0FBQWozQixFQUFBLCtCQUVBLE9BQUE4MkIsRUFBQSxLQUFBRyxFQUFBLG1D
QUFBajNCLEVBQUEscUNBRUEsS0FFQWc0QixFQUFBeHhDLEVBQUF6SixFQUFBaWpCLEVBQUE4MkIs
RUFBQUcsR0FoREEsR0FvREFrQixHQUFBRixFQUFBaHhDLEtBQUEsUUFHQSxPQUZBa3hDLEdBQUE1
VyxXQUFBMFcsRUFBQWh4QyxLQUFBLFNBRUFreEMsRUFHQSxRQUFBQyxHQUFBQyxHQUNBLFFBQUFM
LEdBQUF4eEMsRUFBQXpKLEVBQUFpakIsRUFBQTgyQixFQUFBRyxFQUFBQyxHQUNBLEdBQUFscUIs
R0FBQXhtQixFQUFBekosR0FDQXU3QyxFQUFBQyxFQUFBdnJCLEVBQ0EsSUFBQXNyQixJQUFBRCxF
QUFBLENBSUEsR0FBQUcsR0FBQUMsRUFBQXpyQixFQUVBLFdBQUE4cUIsR0FBQSxXQUFBaEIsRUFB
QSxLQUFBRyxFQUFBLGtCQUFBdUIsRUFBQSxrQkFBQXg0QixFQUFBLHFCQUFBcTRCLEVBQUEsT0FF
QSxZQUVBLE1BQUFOLEdBQUFDLEdBR0EsUUFBQVUsS0FDQSxNQUFBWCxHQUFBL21ELEVBQUF5Ryxp
QkFHQSxRQUFBa2hELEdBQUFDLEdBQ0EsUUFBQVosR0FBQXh4QyxFQUFBekosRUFBQWlqQixFQUFB
ODJCLEVBQUFHLEdBQ0EscUJBQUEyQixHQUNBLFVBQUFkLEdBQUEsYUFBQWIsRUFBQSxtQkFBQWoz
QixFQUFBLGtEQUVBLElBQUFnTixHQUFBeG1CLEVBQUF6SixFQUNBLEtBQUErSixNQUFBd1IsUUFB
QTBVLEdBQUEsQ0FDQSxHQUFBc3JCLEdBQUFDLEVBQUF2ckIsRUFDQSxXQUFBOHFCLEdBQUEsV0FB
QWhCLEVBQUEsS0FBQUcsRUFBQSxrQkFBQXFCLEVBQUEsa0JBQUF0NEIsRUFBQSwwQkFFQSxPQUFB
M3dCLEdBQUEsRUFBcUJBLEVBQUEyOUIsRUFBQTE3QixPQUFzQmpDLElBQUEsQ0FDM0MsR0FBQW9C
LEdBQUFtb0QsRUFBQTVyQixFQUFBMzlCLEVBQUEyd0IsRUFBQTgyQixFQUFBRyxFQUFBLElBQUE1
bkQsRUFBQSxJQUFBa3dCLEVBQ0EsSUFBQTl1QixZQUFBRSxPQUNBLE1BQUFGLEdBR0EsWUFFQSxN
QUFBc25ELEdBQUFDLEdBR0EsUUFBQWEsS0FDQSxRQUFBYixHQUFBeHhDLEVBQUF6SixFQUFBaWpC
LEVBQUE4MkIsRUFBQUcsR0FDQSxHQUFBanFCLEdBQUF4bUIsRUFBQXpKLEVBQ0EsS0FBQTJJLEVB
QUFzbkIsR0FBQSxDQUNBLEdBQUFzckIsR0FBQUMsRUFBQXZyQixFQUNBLFdBQUE4cUIsR0FBQSxX
QUFBaEIsRUFBQSxLQUFBRyxFQUFBLGtCQUFBcUIsRUFBQSxrQkFBQXQ0QixFQUFBLHVDQUVBLFlB
RUEsTUFBQSszQixHQUFBQyxHQUdBLFFBQUFjLEdBQUFDLEdBQ0EsUUFBQWYsR0FBQXh4QyxFQUFB
ekosRUFBQWlqQixFQUFBODJCLEVBQUFHLEdBQ0EsS0FBQXp3QyxFQUFBekosWUFBQWc4QyxJQUFB
LENBQ0EsR0FBQUMsR0FBQUQsRUFBQWpvRCxNQUFBb25ELEVBQ0FlLEVBQUFDLEVBQUExeUMsRUFB
QXpKLEdBQ0EsV0FBQSs2QyxHQUFBLFdBQUFoQixFQUFBLEtBQUFHLEVBQUEsa0JBQUFnQyxFQUFB
LGtCQUFBajVCLEVBQUEsaUNBQUFnNUIsRUFBQSxPQUVBLFlBRUEsTUFBQWpCLEdBQUFDLEdBR0Es
UUFBQW1CLEdBQUFDLEdBTUEsUUFBQXBCLEdBQUF4eEMsRUFBQXpKLEVBQUFpakIsRUFBQTgyQixF
QUFBRyxHQUVBLE9BREFqcUIsR0FBQXhtQixFQUFBekosR0FDQTFOLEVBQUEsRUFBcUJBLEVBQUEr
cEQsRUFBQTluRCxPQUEyQmpDLElBQ2hELEdBQUFtcEIsRUFBQXdVLEVBQUFvc0IsRUFBQS9wRCxJ
QUNBLFdBSUEsSUFBQWdxRCxHQUFBaGMsS0FBQUMsVUFBQThiLEVBQ0EsV0FBQXRCLEdBQUEsV0FB
QWhCLEVBQUEsS0FBQUcsRUFBQSxlQUFBanFCLEVBQUEsc0JBQUFoTixFQUFBLHNCQUFBcTVCLEVB
QUEsTUFkQSxNQUFBdnlDLE9BQUF3UixRQUFBOGdDLEdBZ0JBckIsRUFBQUMsR0FkQWhuRCxFQUFB
eUcsZ0JBaUJBLFFBQUE2aEQsR0FBQVYsR0FDQSxRQUFBWixHQUFBeHhDLEVBQUF6SixFQUFBaWpC
LEVBQUE4MkIsRUFBQUcsR0FDQSxxQkFBQTJCLEdBQ0EsVUFBQWQsR0FBQSxhQUFBYixFQUFBLG1C
QUFBajNCLEVBQUEsbURBRUEsSUFBQWdOLEdBQUF4bUIsRUFBQXpKLEdBQ0F1N0MsRUFBQUMsRUFB
QXZyQixFQUNBLGVBQUFzckIsRUFDQSxVQUFBUixHQUFBLFdBQUFoQixFQUFBLEtBQUFHLEVBQUEs
a0JBQUFxQixFQUFBLGtCQUFBdDRCLEVBQUEsMEJBRUEsUUFBQXpzQixLQUFBeTVCLEdBQ0EsR0FB
QUEsRUFBQXg5QixlQUFBK0QsR0FBQSxDQUNBLEdBQUE5QyxHQUFBbW9ELEVBQUE1ckIsRUFBQXo1
QixFQUFBeXNCLEVBQUE4MkIsRUFBQUcsRUFBQSxJQUFBMWpELEVBQUFnc0IsRUFDQSxJQUFBOXVC
LFlBQUFFLE9BQ0EsTUFBQUYsR0FJQSxZQUVBLE1BQUFzbkQsR0FBQUMsR0FHQSxRQUFBdUIsR0FB
QUMsR0FvQkEsUUFBQXhCLEdBQUF4eEMsRUFBQXpKLEVBQUFpakIsRUFBQTgyQixFQUFBRyxHQUNB
LE9BQUE1bkQsR0FBQSxFQUFxQkEsRUFBQW1xRCxFQUFBbG9ELE9BQWdDakMsSUFBQSxDQUNyRCxH
QUFBb3FELEdBQUFELEVBQUFucUQsRUFDQSxVQUFBb3FELEVBQUFqekMsRUFBQXpKLEVBQUFpakIs
RUFBQTgyQixFQUFBRyxFQUFBMTNCLEdBQ0EsWUFJQSxVQUFBdTRCLEdBQUEsV0FBQWhCLEVBQUEs
S0FBQUcsRUFBQSxzQkFBQWozQixFQUFBLE9BM0JBLElBQUFsWixNQUFBd1IsUUFBQWtoQyxHQUVB
LE1BQUF4b0QsR0FBQXlHLGVBR0EsUUFBQXBJLEdBQUEsRUFBbUJBLEVBQUFtcUQsRUFBQWxvRCxP
QUFnQ2pDLElBQUEsQ0FDbkQsR0FBQW9xRCxHQUFBRCxFQUFBbnFELEVBQ0Esc0JBQUFvcUQsR0FR
QSxNQVBBeG9ELElBQ0EsRUFDQSw0R0FFQXlvRCxFQUFBRCxHQUNBcHFELEdBRUEyQixFQUFBeUcs
Z0JBY0EsTUFBQXNnRCxHQUFBQyxHQUdBLFFBQUEyQixLQUNBLFFBQUEzQixHQUFBeHhDLEVBQUF6
SixFQUFBaWpCLEVBQUE4MkIsRUFBQUcsR0FDQSxNQUFBbEMsR0FBQXZ1QyxFQUFBekosSUFHQSxL
QUZBLEdBQUErNkMsR0FBQSxXQUFBaEIsRUFBQSxLQUFBRyxFQUFBLHNCQUFBajNCLEVBQUEsNkJB
SUEsTUFBQSszQixHQUFBQyxHQUdBLFFBQUE0QixHQUFBQyxHQUNBLFFBQUE3QixHQUFBeHhDLEVB
QUF6SixFQUFBaWpCLEVBQUE4MkIsRUFBQUcsR0FDQSxHQUFBanFCLEdBQUF4bUIsRUFBQXpKLEdB
Q0F1N0MsRUFBQUMsRUFBQXZyQixFQUNBLGVBQUFzckIsRUFDQSxVQUFBUixHQUFBLFdBQUFoQixF
QUFBLEtBQUFHLEVBQUEsY0FBQXFCLEVBQUEsc0JBQUF0NEIsRUFBQSx5QkFFQSxRQUFBenNCLEtB
QUFzbUQsR0FBQSxDQUNBLEdBQUFKLEdBQUFJLEVBQUF0bUQsRUFDQSxJQUFBa21ELEVBQUEsQ0FH
QSxHQUFBaHBELEdBQUFncEQsRUFBQXpzQixFQUFBejVCLEVBQUF5c0IsRUFBQTgyQixFQUFBRyxF
QUFBLElBQUExakQsRUFBQWdzQixFQUNBLElBQUE5dUIsRUFDQSxNQUFBQSxJQUdBLFlBRUEsTUFB
QXNuRCxHQUFBQyxHQUdBLFFBQUFqRCxHQUFBL25CLEdBQ0EsYUFBQUEsSUFDQSxhQUNBLGFBQ0Es
Z0JBQ0EsUUFDQSxlQUNBLE9BQUFBLENBQ0EsY0FDQSxHQUFBbG1CLE1BQUF3UixRQUFBMFUsR0FD
QSxNQUFBQSxHQUFBOHNCLE1BQUEvRSxFQUVBLFdBQUEvbkIsR0FBQXRuQixFQUFBc25CLEdBQ0Es
UUFHQSxJQUFBNk0sR0FBQUMsRUFBQTlNLEVBQ0EsS0FBQTZNLEVBcUJBLFFBcEJBLElBQ0FFLEdB
REFDLEVBQUFILEVBQUE1cUMsS0FBQSs5QixFQUVBLElBQUE2TSxJQUFBN00sRUFBQWlOLFNBQ0Es
T0FBQUYsRUFBQUMsRUFBQWxFLFFBQUFxRSxNQUNBLElBQUE0YSxFQUFBaGIsRUFBQWo1QixPQUNB
LGFBS0EsUUFBQWk1QixFQUFBQyxFQUFBbEUsUUFBQXFFLE1BQUEsQ0FDQSxHQUFBQyxHQUFBTCxF
QUFBajVCLEtBQ0EsSUFBQXM1QixJQUNBMmEsRUFBQTNhLEVBQUEsSUFDQSxTQVNBLFFBQ0EsU0FD
QSxVQUlBLFFBQUEyZixHQUFBekIsRUFBQXRyQixHQUVBLGlCQUFBc3JCLElBS0EsV0FBQXRyQixF
QUFBLGtCQUtBLGtCQUFBN0gsU0FBQTZILFlBQUE3SCxTQVFBLFFBQUFvekIsR0FBQXZyQixHQUNB
LEdBQUFzckIsU0FBQXRyQixFQUNBLE9BQUFsbUIsT0FBQXdSLFFBQUEwVSxHQUNBLFFBRUFBLFlB
QUFyQixRQUlBLFNBRUFvdUIsRUFBQXpCLEVBQUF0ckIsR0FDQSxTQUVBc3JCLEVBS0EsUUFBQUcs
R0FBQXpyQixHQUNBLHNCQUFBQSxJQUFBLE9BQUFBLEVBQ0EsU0FBQUEsQ0FFQSxJQUFBc3JCLEdB
QUFDLEVBQUF2ckIsRUFDQSxlQUFBc3JCLEVBQUEsQ0FDQSxHQUFBdHJCLFlBQUFsdkIsTUFDQSxZ
QUNPLElBQUFrdkIsWUFBQXJCLFFBQ1AsZUFHQSxNQUFBMnNCLEdBS0EsUUFBQW9CLEdBQUE1NEMs
R0FDQSxHQUFBbkgsR0FBQTgrQyxFQUFBMzNDLEVBQ0EsUUFBQW5ILEdBQ0EsWUFDQSxhQUNBLFlB
QUFBLENBQ0EsZUFDQSxXQUNBLGFBQ0EsV0FBQUEsQ0FDQSxTQUNBLE1BQUFBLElBS0EsUUFBQXUv
QyxHQUFBbHNCLEdBQ0EsTUFBQUEsR0FBQWx3QixhQUFBa3dCLEVBQUFsd0IsWUFBQWhNLEtBR0Fr
OEIsRUFBQWx3QixZQUFBaE0sS0FGQW9uRCxFQWxlQSxHQUFBTixHQUFBLGtCQUFBenlCLGdCQUFB
NlUsU0FDQTZkLEVBQUEsYUFzRUFLLEVBQUEsZ0JBSUF4ekMsR0FDQTBnQyxNQUFBZ1QsRUFBQSxT
QUNBM1UsS0FBQTJVLEVBQUEsV0FDQWw0QixLQUFBazRCLEVBQUEsWUFDQXZmLE9BQUF1ZixFQUFB
LFVBQ0E1d0MsT0FBQTR3QyxFQUFBLFVBQ0E3aUMsT0FBQTZpQyxFQUFBLFVBQ0FoQixPQUFBZ0Is
RUFBQSxVQUVBZixJQUFBcUIsSUFDQXBCLFFBQUFxQixFQUNBbHlDLFFBQUFveUMsSUFDQXRCLFdB
QUF1QixFQUNBcmxELEtBQUFrbUQsSUFDQW5DLFNBQUE4QixFQUNBN0IsTUFBQTBCLEVBQ0F6QixV
QUFBNkIsRUFDQWpZLE1BQUFzWSxFQThZQSxPQTdXQTlCLEdBQUF2b0QsVUFBQW9CLE1BQUFwQixV
QTBXQW1WLEVBQUEyYixpQkFDQTNiLEVBQUFpQixVQUFBakIsRUFFQUEsSXpIZ3RZTSxTQUFTNVYs
RUFBUUQsRUFBU0gsRzBIOXNaaEMsWUFFQUksR0FBQUQsUUFBQUgsRUFBQSxNMUhxdFpNLFNBQVNJ
LEVBQVFELEcySDdzWnZCLFlBRUEsSUFBQW1yRCxJQUNBdjRDLFlBRUF3NEMsZUFBQSxFQUNBQyxl
QUFBLEVBQ0FDLGdCQUFBLEVBQ0FDLGNBQUEsRUFDQUMsZUFBQSxFQUNBQyxvQkFBQSxFQUNBQyxh
QUFBLEVBQ0FDLHVCQUFBLEVBRUFDLG9CQUFBLEVBQ0FDLGVBQUEsRUFDQUMsZ0JBQUEsRUFDQUMs
Z0JBQUEsRUFDQUMsYUFBQSxFQUNBQyxhQUFBLEVBQ0FDLGlCQUFBLEVBQ0FDLHVCQUFBLEVBQ0FD
LG1CQUFBLEVBQ0FDLG1CQUFBLEVBQ0FDLGVBQUEsRUFDQUMsZ0JBQUEsRUFDQUMsZ0JBQUEsRUFD
QUMsZ0JBQUEsRUFDQUMsWUFBQSxFQUNBQyxnQkFBQSxFQUNBQyxnQkFBQSxFQUNBQyxnQkFBQSxF
QUNBQyxpQkFBQSxFQUVBQyxjQUFBLEVBQ0FDLFlBQUEsRUFDQUMsWUFBQSxFQUNBQyxnQkFBQSxF
QUVBQyxrQkFBQSxFQUNBQyxlQUFBLEVBRUFDLHdCQUFBLEVBQ0FDLGdCQUFBLEVBQ0FDLGdCQUFB
LEVBQ0FDLGVBQUEsRUFDQUMsZ0JBQUEsRUFDQUMsbUJBQUEsRUFDQUMsb0JBQUEsRUFDQUMsY0FB
QSxFQUNBQyxrQkFBQSxFQUNBQyxZQUFBLEVBQ0FDLGdCQUFBLEVBQ0FDLGdCQUFBLEVBQ0FDLGdC
QUFBLEVBQ0FDLGVBQUEsRUFDQUMsZUFBQSxHQUVBcjdDLHFCQUNBQyxvQkFHQTlTLEdBQUFELFFB
QUFtckQsRzNINnRaTSxTQUFTbHJELEVBQVFELEVBQVNILEc0SDN4WmhDLFlBRUEsSUFBQTRILEdB
QUE1SCxFQUFBLEdBRUFtMkIsRUFBQW4yQixFQUFBLElBRUF1dUQsR0FDQUMsa0JBQUEsV0FDQXI0
QixFQUFBdnVCLEVBQUFSLG9CQUFBOUYsUUFJQWxCLEdBQUFELFFBQUFvdUQsRzVIMnlaTSxTQUFT
bnVELEVBQVFELEVBQVNILEc2SHZ6WmhDLFlBZ0NBLFNBQUF5dUQsS0FDQSxHQUFBQyxHQUFBNW1E
LE9BQUE0bUQsS0FDQSx1QkFBQUEsSUFBQSxrQkFBQUEsR0FBQXQzQyxTQUFBNGtDLFNBQUEwUyxF
QUFBdDNDLFVBQUEsUUE4Q0EsUUFBQXUzQyxHQUFBM2dELEdBQ0EsT0FBQUEsRUFBQWdYLFNBQUFo
WCxFQUFBa1gsUUFBQWxYLEVBQUFtWCxZQUVBblgsRUFBQWdYLFNBQUFoWCxFQUFBa1gsUUFTQSxR
QUFBMHBDLEdBQUE1ekMsR0FDQSxPQUFBQSxHQUNBLDBCQUNBLE1BQUFtUyxHQUFBMGhDLGdCQUNB
LHlCQUNBLE1BQUExaEMsR0FBQTJoQyxjQUNBLDRCQUNBLE1BQUEzaEMsR0FBQTRoQyxtQkFZQSxR
QUFBQyxHQUFBaDBDLEVBQUFoTixHQUNBLHFCQUFBZ04sR0FBQWhOLEVBQUFxbUIsVUFBQTQ2QixF
QVVBLFFBQUFDLEdBQUFsMEMsRUFBQWhOLEdBQ0EsT0FBQWdOLEdBQ0EsZUFFQSxNQUFBbTBDLEdB
QUFsaUMsUUFBQWpmLEVBQUFxbUIsYUFDQSxrQkFHQSxNQUFBcm1CLEdBQUFxbUIsVUFBQTQ2QixD
QUNBLG1CQUNBLG1CQUNBLGNBRUEsUUFDQSxTQUNBLFVBYUEsUUFBQUcsR0FBQXBoRCxHQUNBLEdB
QUFpUSxHQUFBalEsRUFBQWlRLE1BQ0EsdUJBQUFBLElBQUEsUUFBQUEsR0FDQUEsRUFBQStKLEtB
RUEsS0FTQSxRQUFBcW5DLEdBQUFyMEMsRUFBQWpOLEVBQUFDLEVBQUFDLEdBQ0EsR0FBQThuQixH
QUNBdTVCLENBWUEsSUFWQUMsRUFDQXg1QixFQUFBNjRCLEVBQUE1ekMsR0FDR3cwQyxFQUlBTixF
QUFBbDBDLEVBQUFoTixLQUNIK25CLEVBQUE1SSxFQUFBMmhDLGdCQUpBRSxFQUFBaDBDLEVBQUFo
TixLQUNBK25CLEVBQUE1SSxFQUFBMGhDLG1CQU1BOTRCLEVBQ0EsV0FHQTA1QixLQUdBRCxHQUFB
ejVCLElBQUE1SSxFQUFBMGhDLGlCQUVLOTRCLElBQUE1SSxFQUFBMmhDLGdCQUNMVSxJQUNBRixF
QUFBRSxFQUFBRSxXQUhBRixFQUFBRyxFQUFBL2xELFVBQUFxRSxHQVFBLElBQUFrQixHQUFBeWdE
LEVBQUFobUQsVUFBQW1zQixFQUFBaG9CLEVBQUFDLEVBQUFDLEVBRUEsSUFBQXFoRCxFQUdBbmdE
LEVBQUE2WSxLQUFBc25DLE1BQ0csQ0FDSCxHQUFBTyxHQUFBVCxFQUFBcGhELEVBQ0EsUUFBQTZo
RCxJQUNBMWdELEVBQUE2WSxLQUFBNm5DLEdBS0EsTUFEQTV5QyxHQUFBUCw2QkFBQXZOLEdBQ0FB
LEVBUUEsUUFBQTJnRCxHQUFBOTBDLEVBQUFoTixHQUNBLE9BQUFnTixHQUNBLHdCQUNBLE1BQUFv
MEMsR0FBQXBoRCxFQUNBLG1CQWVBLEdBQUFrbUMsR0FBQWxtQyxFQUFBa21DLEtBQ0EsT0FBQUEs
S0FBQTZiLEVBQ0EsTUFHQUMsR0FBQSxFQUNBQyxFQUVBLG9CQUVBLEdBQUFDLEdBQUFsaUQsRUFB
QWdhLElBS0EsT0FBQWtvQyxLQUFBRCxHQUFBRCxFQUNBLEtBR0FFLENBRUEsU0FFQSxhQVlBLFFB
QUFDLEdBQUFuMUMsRUFBQWhOLEdBS0EsR0FBQXdoRCxFQUFBLENBQ0EseUJBQUF4MEMsSUFBQXUw
QyxHQUFBTCxFQUFBbDBDLEVBQUFoTixHQUFBLENBQ0EsR0FBQWtpRCxHQUFBVixFQUFBRSxTQUdB
LE9BRkFDLEdBQUExaUQsUUFBQXVpRCxHQUNBQSxFQUFBLEtBQ0FVLEVBRUEsWUFHQSxPQUFBbDFD
LEdBQ0EsZUFHQSxXQUNBLG1CQWlCQSxNQUFBaE4sR0FBQWttQyxRQUFBeWEsRUFBQTNnRCxHQUNB
MUssT0FBQUcsYUFBQXVLLEVBQUFrbUMsT0FFQSxJQUNBLHlCQUNBLE1BQUF1YixHQUFBLEtBQUF6
aEQsRUFBQWdhLElBQ0EsU0FDQSxhQVVBLFFBQUFvb0MsR0FBQXAxQyxFQUFBak4sRUFBQUMsRUFB
QUMsR0FDQSxHQUFBaWlELEVBVUEsSUFQQUEsRUFEQUcsRUFDQVAsRUFBQTkwQyxFQUFBaE4sR0FF
QW1pRCxFQUFBbjFDLEVBQUFoTixJQUtBa2lELEVBQ0EsV0FHQSxJQUFBL2dELEdBQUFtaEQsRUFB
QTFtRCxVQUFBdWpCLEVBQUFvakMsWUFBQXhpRCxFQUFBQyxFQUFBQyxFQUlBLE9BRkFrQixHQUFB
NlksS0FBQWtvQyxFQUNBanpDLEVBQUFQLDZCQUFBdk4sR0FDQUEsRUFyVkEsR0FBQThOLEdBQUFq
ZCxFQUFBLElBQ0FpSSxFQUFBakksRUFBQSxHQUNBMnZELEVBQUEzdkQsRUFBQSxLQUNBNHZELEVB
QUE1dkQsRUFBQSxLQUNBc3dELEVBQUF0d0QsRUFBQSxLQUVBbXZELEdBQUEsWUFDQUYsRUFBQSxJ
QUVBTSxFQUFBdG5ELEVBQUFKLFdBQUEsb0JBQUFDLFFBRUE2SixFQUFBLElBQ0ExSixHQUFBSixX
QUFBLGdCQUFBRSxZQUNBNEosRUFBQTVKLFNBQUE0SixhQU1BLElBQUEwK0MsR0FBQXBvRCxFQUFB
SixXQUFBLGFBQUFDLFVBQUE2SixJQUFBODhDLElBS0FnQixFQUFBeG5ELEVBQUFKLGFBQUEwbkQs
R0FBQTU5QyxLQUFBLEdBQUFBLEdBQUEsSUFXQW8rQyxFQUFBLEdBQ0FFLEVBQUEzc0QsT0FBQUcs
YUFBQXNzRCxHQUdBNWlDLEdBQ0FvakMsYUFDQTEwQyx5QkFDQTIwQyxRQUFBLGdCQUNBQyxTQUFB
LHdCQUVBL3NDLGNBQUEsOERBRUFvckMsZ0JBQ0FqekMseUJBQ0EyMEMsUUFBQSxtQkFDQUMsU0FB
QSwyQkFFQS9zQyxjQUFBLHFGQUVBbXJDLGtCQUNBaHpDLHlCQUNBMjBDLFFBQUEscUJBQ0FDLFNB
QUEsNkJBRUEvc0MsY0FBQSx1RkFFQXFyQyxtQkFDQWx6Qyx5QkFDQTIwQyxRQUFBLHNCQUNBQyxT
QUFBLDhCQUVBL3NDLGNBQUEseUZBS0Fzc0MsR0FBQSxFQXNGQVIsRUFBQSxLQTZNQWtCLEdBQ0F2
akMsYUFFQXBTLGNBQUEsU0FBQUMsRUFBQWpOLEVBQUFDLEVBQUFDLEdBQ0EsT0FBQW9oRCxFQUFB
cjBDLEVBQUFqTixFQUFBQyxFQUFBQyxHQUFBbWlELEVBQUFwMUMsRUFBQWpOLEVBQUFDLEVBQUFD
LEtBSUE3TixHQUFBRCxRQUFBdXdELEc3SHUwWk0sU0FBU3R3RCxFQUFRRCxFQUFTSCxHOEgzcmFo
QyxZQUVBLElBQUFnOEIsR0FBQWg4QixFQUFBLElBQ0FpSSxFQUFBakksRUFBQSxHQUlBMndELEdB
SEEzd0QsRUFBQSxHQUVBQSxFQUFBLElBQ0FBLEVBQUEsTUFDQW9tRCxFQUFBcG1ELEVBQUEsS0FD
QXVtRCxFQUFBdm1ELEVBQUEsS0FHQTR3RCxHQUZBNXdELEVBQUEsR0FFQXVtRCxFQUFBLFNBQUFz
SyxHQUNBLE1BQUF6SyxHQUFBeUssTUFHQUMsR0FBQSxFQUNBQyxFQUFBLFVBQ0EsSUFBQTlvRCxF
QUFBSixVQUFBLENBQ0EsR0FBQW1wRCxHQUFBanBELFNBQUFDLGNBQUEsT0FBQWlwRCxLQUNBLEtB
RUFELEVBQUF6MUIsS0FBQSxHQUNHLE1BQUEzNUIsR0FDSGt2RCxHQUFBLEVBR0E5dUQsU0FBQStG
LFNBQUF3NEIsZ0JBQUEwd0IsTUFBQUMsV0FDQUgsRUFBQSxjQU1BLEdBa0ZBSSxJQWNBQyxzQkFB
QSxTQUFBQyxFQUFBL3JELEdBQ0EsR0FBQWdzRCxHQUFBLEVBQ0EsUUFBQVQsS0FBQVEsR0FDQSxH
QUFBQSxFQUFBdndELGVBQUErdkQsR0FBQSxDQUdBLEdBQUFVLEdBQUEsSUFBQVYsRUFBQTVqQyxR
QUFBLE1BQ0F1a0MsRUFBQUgsRUFBQVIsRUFNQSxPQUFBVyxJQUNBRixHQUFBVixFQUFBQyxHQUFB
LElBQ0FTLEdBQUFYLEVBQUFFLEVBQUFXLEVBQUFsc0QsRUFBQWlzRCxHQUFBLEtBR0EsTUFBQUQs
SUFBQSxNQVdBRyxrQkFBQSxTQUFBMXNELEVBQUFzc0QsRUFBQS9yRCxHQVNBLEdBQUEyckQsR0FB
QWxzRCxFQUFBa3NELEtBQ0EsUUFBQUosS0FBQVEsR0FDQSxHQUFBQSxFQUFBdndELGVBQUErdkQs
R0FBQSxDQUdBLEdBQUFVLEdBQUEsSUFBQVYsRUFBQTVqQyxRQUFBLE1BTUF1a0MsRUFBQWIsRUFB
QUUsRUFBQVEsRUFBQVIsR0FBQXZyRCxFQUFBaXNELEVBSUEsSUFIQSxVQUFBVixHQUFBLGFBQUFB
LElBQ0FBLEVBQUFFLEdBRUFRLEVBQ0FOLEVBQUFTLFlBQUFiLEVBQUFXLE9BQ08sSUFBQUEsRUFD
UFAsRUFBQUosR0FBQVcsTUFDTyxDQUNQLEdBQUFHLEdBQUFiLEdBQUE5MEIsRUFBQXRDLDRCQUFB
bTNCLEVBQ0EsSUFBQWMsRUFHQSxPQUFBQyxLQUFBRCxHQUNBVixFQUFBVyxHQUFBLE9BR0FYLEdB
QUFKLEdBQUEsTUFPQXp3RCxHQUFBRCxRQUFBZ3hELEc5SDJzYU0sU0FBUy93RCxFQUFRRCxFQUFT
SCxHK0h0NWFoQyxZQXdCQSxTQUFBNnhELEdBQUFuc0QsRUFBQXNJLEVBQUF6SixHQUNBLEdBQUE0
SyxHQUFBdEIsRUFBQWpFLFVBQUF1akIsRUFBQTJrQyxPQUFBcHNELEVBQUFzSSxFQUFBekosRUFH
QSxPQUZBNEssR0FBQWxFLEtBQUEsU0FDQWdTLEVBQUFQLDZCQUFBdk4sR0FDQUEsRUFXQSxRQUFB
NGlELEdBQUFweEIsR0FDQSxHQUFBdHZCLEdBQUFzdkIsRUFBQXR2QixVQUFBc3ZCLEVBQUF0dkIs
U0FBQVcsYUFDQSxrQkFBQVgsR0FBQSxVQUFBQSxHQUFBLFNBQUFzdkIsRUFBQTExQixLQVNBLFFB
QUErbUQsR0FBQWhrRCxHQUNBLEdBQUFtQixHQUFBMGlELEVBQUFJLEVBQUFqa0QsRUFBQTBQLEVB
QUExUCxHQWFBNUUsR0FBQVUsZUFBQW9vRCxFQUFBL2lELEdBR0EsUUFBQStpRCxHQUFBL2lELEdB
Q0E4SyxFQUFBb0IsY0FBQWxNLEdBQ0E4SyxFQUFBcUIsbUJBQUEsR0FHQSxRQUFBNjJDLEdBQUE1
dEQsRUFBQXdKLEdBQ0F1b0IsRUFBQS94QixFQUNBMHRELEVBQUFsa0QsRUFDQXVvQixFQUFBaHVC
LFlBQUEsV0FBQTBwRCxHQUdBLFFBQUFJLEtBQ0E5N0IsSUFHQUEsRUFBQUwsWUFBQSxXQUFBKzdC
LEdBQ0ExN0IsRUFBQSxLQUNBMjdCLEVBQUEsTUFHQSxRQUFBSSxHQUFBdGtELEVBQUFDLEdBQ0Es
R0FBQXNrRCxHQUFBcHFCLEVBQUFZLHFCQUFBLzZCLEdBQ0E0TCxFQUFBM0wsRUFBQTJMLGFBQUEs
R0FBQTQ0QyxFQUFBQywwQkFFQSxJQUFBRixHQUFBMzRDLEVBQ0EsTUFBQTVMLEdBSUEsUUFBQTBr
RCxHQUFBejNDLEVBQUFqTixHQUNBLGlCQUFBaU4sRUFDQSxNQUFBak4sR0FJQSxRQUFBMmtELEdB
QUExM0MsRUFBQXpXLEVBQUF3SixHQUNBLGFBQUFpTixHQUdBbzNDLElBQ0FELEVBQUE1dEQsRUFB
QXdKLElBQ0csWUFBQWlOLEdBQ0hvM0MsSUFvQkEsUUFBQU8sR0FBQXB1RCxFQUFBd0osR0FDQXVv
QixFQUFBL3hCLEVBQ0EwdEQsRUFBQWxrRCxFQUNBdW9CLEVBQUFodUIsWUFBQSxtQkFBQXNxRCxH
QU9BLFFBQUFDLEtBQ0F2OEIsSUFHQUEsRUFBQUwsWUFBQSxtQkFBQTI4QixHQUVBdDhCLEVBQUEs
S0FDQTI3QixFQUFBLE1BT0EsUUFBQVcsR0FBQTVrRCxHQUNBLFVBQUFBLEVBQUE0RixjQUdBeStD
LEVBQUFKLEVBQUFqa0QsSUFDQWdrRCxFQUFBaGtELEdBSUEsUUFBQThrRCxHQUFBOTNDLEVBQUF6
VyxFQUFBd0osR0FDQSxhQUFBaU4sR0FjQTYzQyxJQUNBRixFQUFBcHVELEVBQUF3SixJQUNHLFlB
QUFpTixHQUNINjNDLElBS0EsUUFBQUUsR0FBQS8zQyxFQUFBak4sRUFBQUMsR0FDQSwwQkFBQWdO
LEdBQUEsYUFBQUEsR0FBQSxlQUFBQSxFQVdBLE1BQUFxM0MsR0FBQUosRUFBQWprRCxHQU9BLFFB
QUFnbEQsR0FBQXJ5QjtBQUlBLEdBQUF0dkIsR0FBQXN2QixFQUFBdHZCLFFBQ0EsT0FBQUEsSUFB
QSxVQUFBQSxFQUFBVyxnQkFBQSxhQUFBMnVCLEVBQUExMUIsTUFBQSxVQUFBMDFCLEVBQUExMUIs
TUFHQSxRQUFBZ29ELEdBQUFqNEMsRUFBQWpOLEVBQUFDLEdBQ0EsZ0JBQUFnTixFQUNBLE1BQUFx
M0MsR0FBQXRrRCxFQUFBQyxHQUlBLFFBQUFrbEQsR0FBQWw0QyxFQUFBak4sRUFBQUMsR0FDQSxn
QkFBQWdOLEdBQUEsY0FBQUEsRUFDQSxNQUFBcTNDLEdBQUF0a0QsRUFBQUMsR0FJQSxRQUFBbWxE
LEdBQUF6dEQsRUFBQVgsR0FFQSxTQUFBVyxFQUFBLENBS0EsR0FBQXlwQyxHQUFBenBDLEVBQUF1
NEIsZUFBQWw1QixFQUFBazVCLGFBRUEsSUFBQWtSLEtBQUFpa0IsWUFBQSxXQUFBcnVELEVBQUFr
RyxLQUFBLENBS0EsR0FBQW1ILEdBQUEsR0FBQXJOLEVBQUFxTixLQUNBck4sR0FBQUcsYUFBQSxX
QUFBa04sR0FDQXJOLEVBQUFvd0IsYUFBQSxRQUFBL2lCLEtBOU9BLEdBQUE2SCxHQUFBamEsRUFB
QSxJQUNBaWQsRUFBQWpkLEVBQUEsSUFDQWlJLEVBQUFqSSxFQUFBLEdBQ0E0SCxFQUFBNUgsRUFB
QSxHQUNBb0osRUFBQXBKLEVBQUEsR0FDQTZOLEVBQUE3TixFQUFBLElBRUFrb0MsRUFBQWxvQyxF
QUFBLElBQ0EwZCxFQUFBMWQsRUFBQSxJQUNBNGUsRUFBQTVlLEVBQUEsSUFDQTJwQyxFQUFBM3BD
LEVBQUEsSUFFQW10QixHQUNBMmtDLFFBQ0FqMkMseUJBQ0EyMEMsUUFBQSxXQUNBQyxTQUFBLG1C
QUVBL3NDLGNBQUEsdUdBYUE0UyxFQUFBLEtBQ0EyN0IsRUFBQSxLQVVBb0IsR0FBQSxDQUNBcHJE
LEdBQUFKLFlBRUF3ckQsRUFBQXowQyxFQUFBLGFBQUE3VyxTQUFBNEosY0FBQTVKLFNBQUE0Sixh
QUFBLEdBcUVBLElBQUEyaEQsSUFBQSxDQUNBcnJELEdBQUFKLFlBSUF5ckQsRUFBQTEwQyxFQUFB
LDZCQUFBN1cscUJBQUE0SixhQUFBLEdBcUlBLElBQUE0Z0QsSUFDQXBsQyxhQUVBcWxDLDRCQUFB
LEVBQ0FlLHVCQUFBRCxFQUVBdjRDLGNBQUEsU0FBQUMsRUFBQWpOLEVBQUFDLEVBQUFDLEdBQ0Es
R0FFQXVsRCxHQUFBQyxFQUZBQyxFQUFBM2xELEVBQUFuRyxFQUFBUixvQkFBQTJHLEdBQUFqRyxN
QW9CQSxJQWpCQWlxRCxFQUFBMkIsR0FDQUwsRUFDQUcsRUFBQWYsRUFFQWdCLEVBQUFmLEVBRUsv
b0IsRUFBQStwQixHQUNMSixFQUNBRSxFQUFBTixHQUVBTSxFQUFBVCxFQUNBVSxFQUFBWCxHQUVL
RSxFQUFBVSxLQUNMRixFQUFBUCxHQUdBTyxFQUFBLENBQ0EsR0FBQTl0RCxHQUFBOHRELEVBQUF4
NEMsRUFBQWpOLEVBQUFDLEVBQ0EsSUFBQXRJLEVBQUEsQ0FDQSxHQUFBeUosR0FBQTBpRCxFQUFB
bnNELEVBQUFzSSxFQUFBQyxFQUNBLE9BQUFrQixJQUlBc2tELEdBQ0FBLEVBQUF6NEMsRUFBQTA0
QyxFQUFBM2xELEdBSUEsWUFBQWlOLEdBQ0FtNEMsRUFBQXBsRCxFQUFBMmxELElBS0F0ekQsR0FB
QUQsUUFBQW95RCxHL0hzNmFNLFNBQVNueUQsRUFBUUQsRUFBU0gsR2dJbHRiaEMsWUFFQSxJQUFB
NEcsR0FBQTVHLEVBQUEsR0FFQXNSLEVBQUF0UixFQUFBLElBQ0FpSSxFQUFBakksRUFBQSxHQUVB
MmpELEVBQUEzakQsRUFBQSxLQUNBc0MsRUFBQXRDLEVBQUEsR0FHQWdzQixHQUZBaHNCLEVBQUEs
SUFXQWlzQixpQ0FBQSxTQUFBMG5DLEVBQUE1K0MsR0FLQSxHQUpBOU0sRUFBQUosVUFBQSxPQUFB
akIsRUFBQSxNQUNBbU8sRUFBQSxPQUFBbk8sRUFBQSxNQUNBLFNBQUErc0QsRUFBQXRpRCxTQUFB
ekssRUFBQSxhQUVBLGdCQUFBbU8sR0FBQSxDQUNBLEdBQUE2K0MsR0FBQWpRLEVBQUE1dUMsRUFB
QXpTLEdBQUEsRUFDQXF4RCxHQUFBM3NELFdBQUE4SixhQUFBOGlELEVBQUFELE9BRUFyaUQsR0FB
QVgscUJBQUFnakQsRUFBQTUrQyxLQUtBM1UsR0FBQUQsUUFBQTZyQixHaElrdWJNLFNBQVM1ckIs
RUFBUUQsR2lJcHdidkIsWUFZQSxJQUFBMHpELElBQUEscUpBRUF6ekQsR0FBQUQsUUFBQTB6RCxH
aklveGJNLFNBQVN6ekQsRUFBUUQsRUFBU0gsR2tJbHliaEMsWUFFQSxJQUFBaWQsR0FBQWpkLEVB
QUEsSUFDQTRILEVBQUE1SCxFQUFBLEdBQ0F5a0IsRUFBQXprQixFQUFBLElBRUFtdEIsR0FDQTJt
QyxZQUNBejVDLGlCQUFBLGVBQ0FxSixjQUFBLCtCQUVBcXdDLFlBQ0ExNUMsaUJBQUEsZUFDQXFK
LGNBQUEsZ0NBSUFzd0MsR0FDQTdtQyxhQVNBcFMsY0FBQSxTQUFBQyxFQUFBak4sRUFBQUMsRUFB
QUMsR0FDQSxvQkFBQStNLElBQUFoTixFQUFBdVgsZUFBQXZYLEVBQUF3WCxhQUNBLFdBRUEsb0JB
QUF4SyxHQUFBLGlCQUFBQSxFQUVBLFdBR0EsSUFBQWk1QyxFQUNBLElBQUFobUQsRUFBQW5HLFNB
QUFtRyxFQUVBZ21ELEVBQUFobUQsTUFDSyxDQUVMLEdBQUE0UCxHQUFBNVAsRUFBQTZQLGFBRUFt
MkMsR0FEQXAyQyxFQUNBQSxFQUFBRSxhQUFBRixFQUFBRyxhQUVBbFcsT0FJQSxHQUFBckQsR0FD
QUUsQ0FDQSxvQkFBQXFXLEVBQUEsQ0FDQXZXLEVBQUFzSixDQUNBLElBQUFtbUQsR0FBQWxtRCxF
QUFBdVgsZUFBQXZYLEVBQUEwWCxTQUNBL2dCLEdBQUF1dkQsRUFBQXRzRCxFQUFBZiwyQkFBQXF0
RCxHQUFBLFNBR0F6dkQsR0FBQSxLQUNBRSxFQUFBb0osQ0FHQSxJQUFBdEosSUFBQUUsRUFFQSxX
QUdBLElBQUE4bkIsR0FBQSxNQUFBaG9CLEVBQUF3dkQsRUFBQXJzRCxFQUFBUixvQkFBQTNDLEdB
Q0EwdkQsRUFBQSxNQUFBeHZELEVBQUFzdkQsRUFBQXJzRCxFQUFBUixvQkFBQXpDLEdBRUFrWSxF
QUFBNEgsRUFBQTdhLFVBQUF1akIsRUFBQTRtQyxXQUFBdHZELEVBQUF1SixFQUFBQyxFQUNBNE8s
R0FBQTVSLEtBQUEsYUFDQTRSLEVBQUF0WSxPQUFBa29CLEVBQ0E1UCxFQUFBMEksY0FBQTR1QyxD
QUVBLElBQUFyM0MsR0FBQTJILEVBQUE3YSxVQUFBdWpCLEVBQUEybUMsV0FBQW52RCxFQUFBcUos
RUFBQUMsRUFPQSxPQU5BNk8sR0FBQTdSLEtBQUEsYUFDQTZSLEVBQUF2WSxPQUFBNHZELEVBQ0Fy
M0MsRUFBQXlJLGNBQUFrSCxFQUVBeFAsRUFBQUwsK0JBQUFDLEVBQUFDLEVBQUFyWSxFQUFBRSxJ
QUVBa1ksRUFBQUMsSUFJQTFjLEdBQUFELFFBQUE2ekQsR2xJa3piTSxTQUFTNXpELEVBQVFELEVB
QVNILEdtSXg0YmhDLFlBbUJBLFNBQUEydkQsR0FBQW41QixHQUNBbDFCLEtBQUE4eUQsTUFBQTU5
QixFQUNBbDFCLEtBQUEreUQsV0FBQS95RCxLQUFBbThDLFVBQ0FuOEMsS0FBQWd6RCxjQUFBLEtB
cEJBLEdBQUFub0QsR0FBQW5NLEVBQUEsR0FFQW9NLEVBQUFwTSxFQUFBLElBRUF5bkMsRUFBQXpu
QyxFQUFBLEdBbUJBbU0sR0FBQXdqRCxFQUFBOXVELFdBQ0FtTSxXQUFBLFdBQ0ExTCxLQUFBOHlE
LE1BQUEsS0FDQTl5RCxLQUFBK3lELFdBQUEsS0FDQS95RCxLQUFBZ3pELGNBQUEsTUFRQTdXLFFB
QUEsV0FDQSxlQUFBbjhDLE1BQUE4eUQsTUFDQTl5RCxLQUFBOHlELE1BQUFoaUQsTUFFQTlRLEtB
QUE4eUQsTUFBQTNzQixNQVNBaW9CLFFBQUEsV0FDQSxHQUFBcHVELEtBQUFnekQsY0FDQSxNQUFB
aHpELE1BQUFnekQsYUFHQSxJQUFBN3lCLEdBR0FFLEVBRkE0eUIsRUFBQWp6RCxLQUFBK3lELFdB
Q0FHLEVBQUFELEVBQUEzeEQsT0FFQTZ4RCxFQUFBbnpELEtBQUFtOEMsVUFDQWlYLEVBQUFELEVB
QUE3eEQsTUFFQSxLQUFBNitCLEVBQUEsRUFBbUJBLEVBQUEreUIsR0FDbkJELEVBQUE5eUIsS0FB
QWd6QixFQUFBaHpCLEdBRHdDQSxLQU14QyxHQUFBa3pCLEdBQUFILEVBQUEveUIsQ0FDQSxLQUFB
RSxFQUFBLEVBQWlCQSxHQUFBZ3pCLEdBQ2pCSixFQUFBQyxFQUFBN3lCLEtBQUE4eUIsRUFBQUMs
RUFBQS95QixHQURnQ0EsS0FNaEMsR0FBQWl6QixHQUFBanpCLEVBQUEsSUFBQUEsRUFBQTMvQixN
QUVBLE9BREFWLE1BQUFnekQsY0FBQUcsRUFBQXh6RCxNQUFBd2dDLEVBQUFtekIsR0FDQXR6RCxL
QUFBZ3pELGlCQUlBbG9ELEVBQUFpQixhQUFBc2lELEdBRUF2dkQsRUFBQUQsUUFBQXd2RCxHbkl3
NWJNLFNBQVN2dkQsRUFBUUQsRUFBU0gsR29JMytiaEMsWUFFQSxJQUFBc0gsR0FBQXRILEVBQUEs
SUFFQXVTLEVBQUFqTCxFQUFBc0csVUFBQTJFLGtCQUNBQyxFQUFBbEwsRUFBQXNHLFVBQUE0RSxr
QkFDQUMsRUFBQW5MLEVBQUFzRyxVQUFBNkUsa0JBQ0FDLEVBQUFwTCxFQUFBc0csVUFBQThFLDJC
QUNBQyxFQUFBckwsRUFBQXNHLFVBQUErRSw2QkFFQWtpRCxHQUNBemhELGtCQUFBNnBCLE9BQUFw
OEIsVUFBQWlSLEtBQUF5RyxLQUFBLEdBQUEwa0IsUUFBQSxpQkFBQTMxQixFQUFBK00sb0JBQUEs
UUFDQXRCLFlBSUEraEQsT0FBQSxFQUNBQyxjQUFBLEVBQ0FDLFVBQUEsRUFDQWxXLE9BQUEsRUFD
QW1XLGdCQUFBemlELEVBQ0EwaUQsa0JBQUEsRUFDQUMsSUFBQSxFQUVBQyxHQUFBLEVBQ0FDLE1B
QUE3aUQsRUFDQThpRCxhQUFBLEVBR0FDLFNBQUEvaUQsRUFDQXlpQixRQUFBemlCLEVBQ0FnakQs
WUFBQSxFQUNBQyxZQUFBLEVBQ0FDLFFBQUEsRUFDQUMsVUFBQSxFQUNBaGxDLFFBQUFwZSxFQUFB
QyxFQUNBb2pELEtBQUEsRUFDQUMsUUFBQSxFQUNBdGhCLFVBQUEsRUFDQXVoQixLQUFBcGpELEVB
Q0FxakQsUUFBQSxFQUNBeHBDLFFBQUEsRUFDQXFVLGdCQUFBLEVBQ0FvMUIsWUFBQSxFQUNBQyxT
QUFBempELEVBQ0EwakQsT0FBQSxFQUNBQyxZQUFBLEVBQ0FudUMsS0FBQSxFQUNBb3VDLFNBQUEs
RUFDQTl0QyxRQUFBOVYsRUFDQTZqRCxNQUFBN2pELEVBQ0FvbEMsSUFBQSxFQUNBMStCLFNBQUEx
RyxFQUNBOGpELFNBQUEzakQsRUFDQTRqRCxVQUFBLEVBQ0FDLFFBQUEsRUFDQUMsS0FBQSxFQUNB
QyxXQUFBLEVBQ0FDLFlBQUEsRUFDQUMsV0FBQSxFQUNBQyxlQUFBcmtELEVBQ0Fza0QsV0FBQSxF
QUNBQyxZQUFBLEVBQ0FDLFFBQUEsRUFDQUMsT0FBQSxFQUNBL2xDLE9BQUExZSxFQUNBMGtELEtB
QUEsRUFDQUMsS0FBQSxFQUNBQyxTQUFBLEVBQ0FDLFFBQUEsRUFDQUMsVUFBQSxFQUNBQyxLQUFB
LEVBQ0FsM0QsR0FBQSxFQUNBbTNELFVBQUEsRUFDQUMsVUFBQSxFQUNBM3RDLEdBQUEsRUFDQTR0
QyxVQUFBLEVBQ0FDLFFBQUEsRUFDQUMsS0FBQSxFQUNBQyxNQUFBLEVBQ0FDLEtBQUEsRUFDQUMs
S0FBQSxFQUNBQyxLQUFBeGxELEVBQ0F5bEQsSUFBQSxFQUNBQyxTQUFBLEVBQ0FDLGFBQUEsRUFD
QUMsWUFBQSxFQUNBQyxJQUFBLEVBQ0FDLFVBQUEsRUFDQUMsTUFBQSxFQUNBQyxXQUFBLEVBQ0Fy
ckQsT0FBQSxFQUNBaTFCLElBQUEsRUFDQXEyQixVQUFBLEVBR0FwNkIsU0FBQTlyQixFQUFBQyxF
QUNBa21ELE1BQUFubUQsRUFBQUMsRUFDQXBRLEtBQUEsRUFDQXUyRCxNQUFBLEVBQ0FDLFdBQUFw
bUQsRUFDQXFtRCxLQUFBcm1ELEVBQ0FzbUQsUUFBQSxFQUNBQyxRQUFBLEVBQ0Fwa0IsWUFBQSxF
QUNBcWtCLFlBQUF4bUQsRUFDQXltRCxPQUFBLEVBQ0FDLFFBQUEsRUFDQUMsUUFBQSxFQUNBQyxX
QUFBLEVBQ0E3bkMsU0FBQS9lLEVBQ0E2bUQsZUFBQSxFQUNBQyxJQUFBLEVBQ0FDLFNBQUEvbUQs
RUFDQWduRCxTQUFBaG5ELEVBQ0FpbkQsS0FBQSxFQUNBQyxLQUFBaG5ELEVBQ0FpbkQsUUFBQWxu
RCxFQUNBbW5ELFFBQUEsRUFDQXhzRCxNQUFBLEVBQ0F5c0QsT0FBQXJuRCxFQUNBc25ELFVBQUEs
RUFDQUMsU0FBQXZuRCxFQUNBaXNCLFNBQUFsc0IsRUFBQUMsRUFDQW9nQyxNQUFBLEVBQ0FvbkIs
S0FBQXRuRCxFQUNBdW5ELE1BQUEsRUFDQUMsS0FBQXhuRCxFQUNBeW5ELFdBQUEsRUFDQUMsSUFB
QSxFQUNBQyxPQUFBLEVBQ0FDLFFBQUEsRUFDQUMsT0FBQSxFQUNBOTRCLE1BQUFodkIsRUFDQTQ0
QixLQUFBLEVBQ0E0bEIsTUFBQSxFQUNBdUosUUFBQSxFQUNBQyxTQUFBLEVBQ0FsMkQsT0FBQSxF
QUNBc3lDLE1BQUEsRUFFQTVyQyxLQUFBLEVBQ0F5dkQsT0FBQSxFQUNBdG9ELE1BQUEsRUFDQXVv
RCxNQUFBLEVBQ0FDLE1BQUEsRUFDQTlXLEtBQUEsRUFLQStXLE1BQUEsRUFDQUMsU0FBQSxFQUNB
QyxPQUFBLEVBQ0Fua0MsT0FBQSxFQUVBNnBCLFNBQUEsRUFDQXVhLFNBQUEsRUFDQUMsT0FBQSxF
QUNBQyxNQUFBLEVBT0FDLGVBQUEsRUFDQUMsWUFBQSxFQUVBQyxTQUFBLEVBRUF4eEIsTUFBQSxF
QUdBeXhCLFNBQUEsRUFDQUMsVUFBQS9vRCxFQUNBZ3BELFNBQUEsRUFJQUMsT0FBQSxFQUNBQyxR
QUFBLEVBR0FDLFFBQUEsRUFHQUMsU0FBQSxFQUVBQyxhQUFBLEdBRUE1b0QsbUJBQ0E4aEQsY0FB
QSxpQkFDQXhnQixVQUFBLFFBQ0E4aUIsUUFBQSxNQUNBQyxVQUFBLGNBRUFwa0Qsb0JBQ0FDLG9C
QUNBZixNQUFBLFNBQUFyTixFQUFBcU4sR0FDQSxhQUFBQSxFQUNBck4sRUFBQSs0QixnQkFBQSxj
QU1BLFdBQUEvNEIsRUFBQWtHLE1BQUFsRyxFQUFBcWhDLGFBQUEsY0FDQXJoQyxFQUFBb3dCLGFB
QUEsV0FBQS9pQixHQUNPck4sRUFBQSsyRCxXQUFBLzJELEVBQUErMkQsU0FBQUMsVUFBQWgzRCxF
QUFBK1ksY0FBQXdZLGdCQUFBdnhCLEdBU1BBLEVBQUFvd0IsYUFBQSxXQUFBL2lCLE1BTUFoUyxH
QUFBRCxRQUFBMDBELEdwSTIvYk0sU0FBU3owRCxFQUFRRCxFQUFTSCxJcUlydWNoQyxTQUFBMjJD
LEdBVUEsWUFxQkEsU0FBQXFsQixHQUFBQyxFQUFBNTRCLEVBQUFqaEMsRUFBQTg1RCxHQUVBLEdB
QUFDLEdBQUFuNkQsU0FBQWk2RCxFQUFBNzVELEVBU0EsT0FBQWloQyxHQUFBODRCLElBQ0FGLEVB
QUE3NUQsR0FBQW9pQyxFQUFBbkIsR0FBQSxJQS9CQSxHQUFBLzNCLEdBQUF0TCxFQUFBLElBRUF3
a0MsRUFBQXhrQyxFQUFBLElBRUF1MUIsR0FEQXYxQixFQUFBLElBQ0FBLEVBQUEsS0FDQTZyQyxF
QUFBN3JDLEVBQUEsR0FDQUEsR0FBQSxFQUlBLG9CQUFBMjJDLE1BQUFJLEtBOEJBLElBQUFxbEIs
SUFTQUMsb0JBQUEsU0FBQUMsRUFBQWp5RCxFQUFBMkIsRUFBQWt3RCxHQUVBLFNBQUFJLEVBQ0Es
V0FFQSxJQUFBTCxLQVNBLE9BRkFwd0IsR0FBQXl3QixFQUFBTixFQUFBQyxHQUVBQSxHQWFBTSxl
QUFBLFNBQUFDLEVBQUFDLEVBQUFDLEVBQUFDLEVBQUF0eUQsRUFBQXVLLEVBQUFDLEVBQUE3SSxF
QUFBa3dELEdBT0EsR0FBQU8sR0FBQUQsRUFBQSxDQUdBLEdBQUFwNkQsR0FDQXc2RCxDQUNBLEtB
QUF4NkQsSUFBQXE2RCxHQUNBLEdBQUFBLEVBQUEzN0QsZUFBQXNCLEdBQUEsQ0FHQXc2RCxFQUFB
SixLQUFBcDZELEVBQ0EsSUFBQW9ULEdBQUFvbkQsS0FBQTV4RCxnQkFDQXVLLEVBQUFrbkQsRUFB
QXI2RCxFQUNBLFVBQUF3NkQsR0FBQXJuQyxFQUFBL2YsRUFBQUQsR0FDQWpLLEVBQUFnSyxpQkFB
QXNuRCxFQUFBcm5ELEVBQUFsTCxFQUFBMkIsR0FDQXl3RCxFQUFBcjZELEdBQUF3NkQsTUFDTyxD
QUNQQSxJQUNBRCxFQUFBdjZELEdBQUFrSixFQUFBNEosWUFBQTBuRCxHQUNBdHhELEVBQUE2Sixp
QkFBQXluRCxHQUFBLEdBR0EsSUFBQUMsR0FBQXI0QixFQUFBanZCLEdBQUEsRUFDQWtuRCxHQUFB
cjZELEdBQUF5NkQsQ0FHQSxJQUFBQyxHQUFBeHhELEVBQUFvSixlQUFBbW9ELEVBQUF4eUQsRUFB
QXVLLEVBQUFDLEVBQUE3SSxFQUFBa3dELEVBQ0FRLEdBQUEzMUQsS0FBQSsxRCxJQUlBLElBQUEx
NkQsSUFBQW82RCxJQUNBQSxFQUFBMTdELGVBQUFzQixJQUFBcTZELEtBQUEzN0QsZUFBQXNCLEtB
Q0F3NkQsRUFBQUosRUFBQXA2RCxHQUNBdTZELEVBQUF2NkQsR0FBQWtKLEVBQUE0SixZQUFBMG5E
LEdBQ0F0eEQsRUFBQTZKLGlCQUFBeW5ELEdBQUEsTUFZQUcsZ0JBQUEsU0FBQUMsRUFBQTVuRCxH
QUNBLE9BQUFoVCxLQUFBNDZELEdBQ0EsR0FBQUEsRUFBQWw4RCxlQUFBc0IsR0FBQSxDQUNBLEdB
QUE2NkQsR0FBQUQsRUFBQTU2RCxFQUNBa0osR0FBQTZKLGlCQUFBOG5ELEVBQUE3bkQsS0FNQWhW
LEdBQUFELFFBQUFpOEQsSXJJd3VjOEI3N0QsS0FBS0osRUFBU0gsRUFBb0IsTUFJMUQsU0FBU0ks
RUFBUUQsRUFBU0gsR3NJejNjaEMsWUFFQSxJQUFBa3NCLEdBQUFsc0IsRUFBQSxJQUNBazlELEVB
QUFsOUQsRUFBQSxLQU9BbTlELEdBQ0EvcUMsdUJBQUE4cUMsRUFBQUUsa0NBRUFqckMsc0JBQUFq
RyxFQUFBRCxpQ0FHQTdyQixHQUFBRCxRQUFBZzlELEd0SXk0Y00sU0FBUy84RCxFQUFRRCxFQUFT
SCxHdUl6NWNoQyxZQThCQSxTQUFBcTlELEdBQUF2bUQsSUFRQSxRQUFBd21ELEdBQUF4bUQsRUFB
QWlCLElBT0EsUUFBQXdsRCxHQUFBem1ELEdBQ0EsU0FBQUEsRUFBQWpXLFlBQUFpVyxFQUFBalcs
VUFBQWlrQyxrQkFHQSxRQUFBMDRCLEdBQUExbUQsR0FDQSxTQUFBQSxFQUFBalcsWUFBQWlXLEVB
QUFqVyxVQUFBbTVDLHNCQWhEQSxHQUFBcHpDLEdBQUE1RyxFQUFBLEdBQ0FtTSxFQUFBbk0sRUFB
QSxHQUVBeVcsRUFBQXpXLEVBQUEsSUFDQWt5QixFQUFBbHlCLEVBQUEsSUFDQWlRLEVBQUFqUSxF
QUFBLElBQ0FxWixFQUFBclosRUFBQSxJQUNBa2QsRUFBQWxkLEVBQUEsSUFFQThtQyxHQURBOW1D
LEVBQUEsR0FDQUEsRUFBQSxLQUNBc0wsRUFBQXRMLEVBQUEsSUFNQWtlLEVBQUFsZSxFQUFBLElB
RUFpcUIsR0FEQWpxQixFQUFBLEdBQ0FBLEVBQUEsS0FDQXUxQixFQUFBdjFCLEVBQUEsSUFHQXk5
RCxHQUZBejlELEVBQUEsSUFHQTA5RCxZQUFBLEVBQ0FDLFVBQUEsRUFDQUMsb0JBQUEsR0FJQVAs
R0FBQXg4RCxVQUFBa2tDLE9BQUEsV0FDQSxHQUFBanVCLEdBQUFvRyxFQUFBRyxJQUFBL2IsTUFB
QTBKLGdCQUFBQyxLQUNBOE0sRUFBQWpCLEVBQUF4VixLQUFBd1csTUFBQXhXLEtBQUEwSyxRQUFB
MUssS0FBQXE0QyxRQUVBLE9BREEyakIsR0FBQXhtRCxFQUFBaUIsR0FDQUEsRUFvRUEsSUFBQThs
RCxHQUFBLEVBS0FyMEIsR0FRQUMsVUFBQSxTQUFBMXhCLEdBQ0F6VyxLQUFBMEosZ0JBQUErTSxF
QUNBelcsS0FBQTBZLFlBQUEsRUFDQTFZLEtBQUF3OEQsZUFBQSxLQUNBeDhELEtBQUFpa0MsVUFB
QSxLQUNBamtDLEtBQUErRixZQUFBLEtBQ0EvRixLQUFBZ2pDLG1CQUFBLEtBR0FoakMsS0FBQXdL
LG1CQUFBLEtBQ0F4SyxLQUFBc3lCLGdCQUFBLEtBQ0F0eUIsS0FBQWd5QixtQkFBQSxLQUNBaHlC
LEtBQUFpeUIsc0JBQUEsRUFDQWp5QixLQUFBNnhCLHFCQUFBLEVBRUE3eEIsS0FBQWttQyxrQkFB
QSxLQUNBbG1DLEtBQUFrRSxtQkFBQSxLQUNBbEUsS0FBQW1VLFNBQUEsS0FDQW5VLEtBQUE2SSxZ
QUFBLEVBQ0E3SSxLQUFBaWlDLGlCQUFBLEtBR0FqaUMsS0FBQXFKLGtCQUFBLEtBR0FySixLQUFB
eThELDZCQUFBLEdBa0JBcnBELGVBQUEsU0FBQXJLLEVBQUF1SyxFQUFBQyxFQUFBN0ksR0FHQTFL
LEtBQUFtVSxTQUFBekosRUFDQTFLLEtBQUE2SSxZQUFBMHpELElBQ0F2OEQsS0FBQStGLFlBQUF1
TixFQUNBdFQsS0FBQWdqQyxtQkFBQXp2QixDQUVBLElBVUFtcEQsR0FWQUMsRUFBQTM4RCxLQUFB
MEosZ0JBQUE4TSxNQUNBb21ELEVBQUE1OEQsS0FBQTY4RCxnQkFBQW55RCxHQUVBOEssRUFBQXhW
LEtBQUEwSixnQkFBQUMsS0FFQW16RCxFQUFBL3pELEVBQUFnMEQsaUJBR0FDLEVBQUFmLEVBQUF6
bUQsR0FDQXBSLEVBQUFwRSxLQUFBaTlELG9CQUFBRCxFQUFBTCxFQUFBQyxFQUFBRSxFQUlBRSxJ
QUFBLE1BQUE1NEQsR0FBQSxNQUFBQSxFQUFBcS9CLE9BT0F5NEIsRUFBQTFtRCxHQUNBeFYsS0FB
QXc4RCxlQUFBTCxFQUFBRSxVQUVBcjhELEtBQUF3OEQsZUFBQUwsRUFBQUMsYUFUQU0sRUFBQXQ0
RCxFQUNBNDNELEVBQUF4bUQsRUFBQWtuRCxHQUNBLE9BQUF0NEQsUUFBQSxHQUFBK1EsRUFBQU8s
ZUFBQXRSLEdBQUEsT0FBQWtCLEVBQUEsTUFBQWtRLEVBQUEyYixhQUFBM2IsRUFBQTFVLE1BQUEs
YUFDQXNELEVBQUEsR0FBQTIzRCxHQUFBdm1ELEdBQ0F4VixLQUFBdzhELGVBQUFMLEVBQUFHLG9C
QXdCQWw0RCxHQUFBb1MsTUFBQW1tRCxFQUNBdjRELEVBQUFzRyxRQUFBa3lELEVBQ0F4NEQsRUFB
QWswQyxLQUFBMTdCLEVBQ0F4WSxFQUFBaTBDLFFBQUF5a0IsRUFFQTk4RCxLQUFBaWtDLFVBQUE3
L0IsRUFHQXdYLEVBQUFLLElBQUE3WCxFQUFBcEUsS0FlQSxJQUFBc2dELEdBQUFsOEMsRUFBQXlw
QyxLQUNBbnRDLFVBQUE0L0MsSUFDQWw4QyxFQUFBeXBDLE1BQUF5UyxFQUFBLE1BRUEsZ0JBQUFB
LElBQUF4cEMsTUFBQXdSLFFBQUFnNEIsR0FBQWg3QyxFQUFBLE1BQUF0RixLQUFBNkosV0FBQSxr
Q0FFQTdKLEtBQUFneUIsbUJBQUEsS0FDQWh5QixLQUFBaXlCLHNCQUFBLEVBQ0FqeUIsS0FBQTZ4
QixxQkFBQSxDQUVBLElBQUFwZSxFQW1CQSxPQWpCQUEsR0FEQXJQLEVBQUE4NEQscUJBQ0FsOUQs
S0FBQW05RCxxQ0FBQVQsRUFBQXBwRCxFQUFBQyxFQUFBeEssRUFBQTJCLEdBRUExSyxLQUFBbzlE
LG9CQUFBVixFQUFBcHBELEVBQUFDLEVBQUF4SyxFQUFBMkIsR0FHQXRHLEVBQUFrcUMsbUJBUUF2
bEMsRUFBQTRLLHFCQUFBdkosUUFBQWhHLEVBQUFrcUMsa0JBQUFscUMsR0FJQXFQLEdBR0F3cEQs
b0JBQUEsU0FBQUQsRUFBQUwsRUFBQUMsRUFBQUUsR0FTQSxNQUFBOThELE1BQUFxOUQsZ0NBQUFM
LEVBQUFMLEVBQUFDLEVBQUFFLElBSUFPLGdDQUFBLFNBQUFMLEVBQUFMLEVBQUFDLEVBQUFFLEdB
Q0EsR0FBQXRuRCxHQUFBeFYsS0FBQTBKLGdCQUFBQyxJQUVBLE9BQUFxekQsR0FNQSxHQUFBeG5E
LEdBQUFtbkQsRUFBQUMsRUFBQUUsR0FXQXRuRCxFQUFBbW5ELEVBQUFDLEVBQUFFLElBSUFLLHFD
QUFBLFNBQUFULEVBQUFwcEQsRUFBQUMsRUFBQXhLLEVBQUEyQixHQUNBLEdBQUErSSxHQUNBeW5C
LEVBQUFueUIsRUFBQW15QixZQUNBLEtBQ0F6bkIsRUFBQXpULEtBQUFvOUQsb0JBQUFWLEVBQUFw
cEQsRUFBQUMsRUFBQXhLLEVBQUEyQixHQUNLLE1BQUFwSyxHQUVMeUksRUFBQW95QixTQUFBRCxH
QUNBbDdCLEtBQUFpa0MsVUFBQWk1QixxQkFBQTU4RCxHQUNBTixLQUFBZ3lCLHFCQUNBaHlCLEtB
QUFpa0MsVUFBQTRKLE1BQUE3dEMsS0FBQXM5RCxxQkFBQXQ5RCxLQUFBaWtDLFVBQUF6dEIsTUFB
QXhXLEtBQUFpa0MsVUFBQXY1QixVQUVBd3dCLEVBQUFueUIsRUFBQW15QixhQUVBbDdCLEtBQUFr
RSxtQkFBQTJQLGtCQUFBLEdBQ0E5SyxFQUFBb3lCLFNBQUFELEdBSUF6bkIsRUFBQXpULEtBQUFv
OUQsb0JBQUFWLEVBQUFwcEQsRUFBQUMsRUFBQXhLLEVBQUEyQixHQUVBLE1BQUErSSxJQUdBMnBE
LG9CQUFBLFNBQUFWLEVBQUFwcEQsRUFBQUMsRUFBQXhLLEVBQUEyQixHQUNBLEdBQUF0RyxHQUFB
cEUsS0FBQWlrQyxVQUVBczVCLEVBQUEsQ0FLQW41RCxHQUFBeThDLHFCQU1BejhDLEVBQUF5OEMs
cUJBSUE3Z0QsS0FBQWd5QixxQkFDQTV0QixFQUFBeXBDLE1BQUE3dEMsS0FBQXM5RCxxQkFBQWw1
RCxFQUFBb1MsTUFBQXBTLEVBQUFzRyxXQUtBaEssU0FBQWc4RCxJQUNBQSxFQUFBMThELEtBQUF3
OUQsNEJBR0EsSUFBQTc1RCxHQUFBNmhDLEVBQUFJLFFBQUE4MkIsRUFDQTE4RCxNQUFBa21DLGtC
QUFBdmlDLENBQ0EsSUFBQW8rQixHQUFBL2hDLEtBQUFvb0MsMkJBQUFzMEIsRUFBQS80RCxJQUFB
NmhDLEVBQUFHLE1BRUEzbEMsTUFBQWtFLG1CQUFBNjlCLENBRUEsSUFBQXR1QixHQUFBekosRUFB
QW9KLGVBQUEydUIsRUFBQWg1QixFQUFBdUssRUFBQUMsRUFBQXZULEtBQUFza0MscUJBQUE1NUIs
R0FBQTZ5RCxFQVNBLE9BQUE5cEQsSUFHQUcsWUFBQSxXQUNBLE1BQUE1SixHQUFBNEosWUFBQTVU
LEtBQUFrRSxxQkFTQTJQLGlCQUFBLFNBQUFDLEdBQ0EsR0FBQTlULEtBQUFrRSxtQkFBQSxDQUlB
LEdBQUFFLEdBQUFwRSxLQUFBaWtDLFNBRUEsSUFBQTcvQixFQUFBc3FDLHVCQUFBdHFDLEVBQUFx
NEQsNEJBR0EsR0FGQXI0RCxFQUFBcTRELDZCQUFBLEVBRUEzb0QsRUFBQSxDQUNBLEdBQUFoVCxH
QUFBZCxLQUFBNkosVUFBQSx5QkFDQWtPLEdBQUFnVixzQkFBQWpzQixFQUFBc0QsRUFBQXNxQyxx
QkFBQXozQixLQUFBN1MsUUFPQUEsR0FBQXNxQyxzQkFLQTF1QyxNQUFBa0UscUJBQ0E4RixFQUFB
NkosaUJBQUE3VCxLQUFBa0UsbUJBQUE0UCxHQUNBOVQsS0FBQWttQyxrQkFBQSxLQUNBbG1DLEtB
QUFrRSxtQkFBQSxLQUNBbEUsS0FBQWlrQyxVQUFBLE1BTUFqa0MsS0FBQWd5QixtQkFBQSxLQUNB
aHlCLEtBQUFpeUIsc0JBQUEsRUFDQWp5QixLQUFBNnhCLHFCQUFBLEVBQ0E3eEIsS0FBQXFKLGtC
QUFBLEtBQ0FySixLQUFBc3lCLGdCQUFBLEtBSUF0eUIsS0FBQW1VLFNBQUEsS0FDQW5VLEtBQUEw
WSxZQUFBLEVBQ0ExWSxLQUFBaWlDLGlCQUFBLEtBS0FybUIsRUFBQUMsT0FBQXpYLEtBaUJBcTVE
LGFBQUEsU0FBQS95RCxHQUNBLEdBQUE4SyxHQUFBeFYsS0FBQTBKLGdCQUFBQyxLQUNBbWpDLEVB
QUF0M0IsRUFBQXMzQixZQUNBLEtBQUFBLEVBQ0EsTUFBQWx3QixFQUVBLElBQUE4Z0QsS0FDQSxR
QUFBQyxLQUFBN3dCLEdBQ0E0d0IsRUFBQUMsR0FBQWp6RCxFQUFBaXpELEVBRUEsT0FBQUQsSUFX
QWIsZ0JBQUEsU0FBQW55RCxHQUNBLEdBQUFnekQsR0FBQTE5RCxLQUFBeTlELGFBQUEveUQsRUFP
QSxPQUFBZ3pELElBUUFwNUIscUJBQUEsU0FBQXM1QixHQUNBLEdBRUFDLEdBRkFyb0QsRUFBQXhW
LEtBQUEwSixnQkFBQUMsS0FDQXZGLEVBQUFwRSxLQUFBaWtDLFNBZ0JBLElBYkE3L0IsRUFBQStw
QyxrQkFTQTB2QixFQUFBejVELEVBQUErcEMsbUJBSUEwdkIsRUFBQSxDQUNBLGdCQUFBcm9ELEdB
QUEwM0Isa0JBQUE1bkMsRUFBQSxNQUFBdEYsS0FBQTZKLFdBQUEsaUNBSUEsUUFBQS9JLEtBQUEr
OEQsR0FDQS84RCxJQUFBMFUsR0FBQTAzQixrQkFBQSxPQUFBNW5DLEVBQUEsTUFBQXRGLEtBQUE2
SixXQUFBLDBCQUFBL0ksRUFFQSxPQUFBK0osTUFBdUIreUQsRUFBQUMsR0FFdkIsTUFBQUQsSUFX
QUUsbUJBQUEsU0FBQWxYLEVBQUFDLEVBQUFDLEtBTUE5eUMsaUJBQUEsU0FBQUMsRUFBQWxMLEVB
QUFzcEIsR0FDQSxHQUFBbmUsR0FBQWxVLEtBQUEwSixnQkFDQXEwRCxFQUFBLzlELEtBQUFtVSxR
QUVBblUsTUFBQXN5QixnQkFBQSxLQUVBdHlCLEtBQUErZ0QsZ0JBQUFoNEMsRUFBQW1MLEVBQUFE
LEVBQUE4cEQsRUFBQTFyQyxJQVVBcG9CLHlCQUFBLFNBQUFsQixHQUNBLE1BQUEvSSxLQUFBc3lC
LGdCQUNBdG9CLEVBQUFnSyxpQkFBQWhVLFVBQUFzeUIsZ0JBQUF2cEIsRUFBQS9JLEtBQUFtVSxV
QUNLLE9BQUFuVSxLQUFBZ3lCLG9CQUFBaHlCLEtBQUE2eEIsb0JBQ0w3eEIsS0FBQStnRCxnQkFB
QWg0QyxFQUFBL0ksS0FBQTBKLGdCQUFBMUosS0FBQTBKLGdCQUFBMUosS0FBQW1VLFNBQUFuVSxL
QUFBbVUsVUFFQW5VLEtBQUF3SyxtQkFBQSxNQW1CQXUyQyxnQkFBQSxTQUFBaDRDLEVBQUFpMUQs
RUFBQUMsRUFBQUMsRUFBQUMsR0FDQSxHQUFBLzVELEdBQUFwRSxLQUFBaWtDLFNBQ0EsT0FBQTcv
QixFQUFBa0IsRUFBQSxNQUFBdEYsS0FBQTZKLFdBQUEsaUNBRUEsSUFDQXdvQixHQURBK3JDLEdB
QUEsQ0FJQXArRCxNQUFBbVUsV0FBQWdxRCxFQUNBOXJDLEVBQUFqdUIsRUFBQXNHLFNBRUEybkIs
RUFBQXJ5QixLQUFBNjhELGdCQUFBc0IsR0FDQUMsR0FBQSxFQUdBLElBQUFDLEdBQUFMLEVBQUF4
bkQsTUFDQSswQixFQUFBMHlCLEVBQUF6bkQsS0FHQXduRCxLQUFBQyxJQUNBRyxHQUFBLEdBTUFB
LEdBQUFoNkQsRUFBQXFxQywyQkFNQXJxQyxFQUFBcXFDLDBCQUFBbEQsRUFBQWxaLEVBSUEsSUFB
QWlzQyxHQUFBdCtELEtBQUFzOUQscUJBQUEveEIsRUFBQWxaLEdBQ0Frc0MsR0FBQSxDQUVBditE
LE1BQUE2eEIsc0JBQ0F6dEIsRUFBQXFuQyxzQkFNQTh5QixFQUFBbjZELEVBQUFxbkMsc0JBQUFG
LEVBQUEreUIsRUFBQWpzQyxHQUdBcnlCLEtBQUF3OEQsaUJBQUFMLEVBQUFFLFlBQ0FrQyxHQUFB
NTFDLEVBQUEwMUMsRUFBQTl5QixLQUFBNWlCLEVBQUF2a0IsRUFBQXlwQyxNQUFBeXdCLEtBU0F0
K0QsS0FBQXdLLG1CQUFBLEtBQ0ErekQsR0FDQXYrRCxLQUFBNnhCLHFCQUFBLEVBRUE3eEIsS0FB
QXcrRCx3QkFBQVAsRUFBQTF5QixFQUFBK3lCLEVBQUFqc0MsRUFBQXRwQixFQUFBbzFELEtBSUFu
K0QsS0FBQTBKLGdCQUFBdTBELEVBQ0FqK0QsS0FBQW1VLFNBQUFncUQsRUFDQS81RCxFQUFBb1Ms
TUFBQSswQixFQUNBbm5DLEVBQUF5cEMsTUFBQXl3QixFQUNBbDZELEVBQUFzRyxRQUFBMm5CLElB
SUFpckMscUJBQUEsU0FBQTltRCxFQUFBOUwsR0FDQSxHQUFBdEcsR0FBQXBFLEtBQUFpa0MsVUFD
QWo0QixFQUFBaE0sS0FBQWd5QixtQkFDQW54QixFQUFBYixLQUFBaXlCLG9CQUlBLElBSEFqeUIs
S0FBQWl5QixzQkFBQSxFQUNBanlCLEtBQUFneUIsbUJBQUEsTUFFQWhtQixFQUNBLE1BQUE1SCxH
QUFBeXBDLEtBR0EsSUFBQWh0QyxHQUFBLElBQUFtTCxFQUFBMUssT0FDQSxNQUFBMEssR0FBQSxF
QUlBLFFBREFzeUQsR0FBQXp6RCxLQUE4QmhLLEVBQUFtTCxFQUFBLEdBQUE1SCxFQUFBeXBDLE9B
QzlCeHVDLEVBQUF3QixFQUFBLElBQWlDeEIsRUFBQTJNLEVBQUExSyxPQUFrQmpDLElBQUEsQ0FD
bkQsR0FBQW8vRCxHQUFBenlELEVBQUEzTSxFQUNBd0wsR0FBQXl6RCxFQUFBLGtCQUFBRyxLQUFB
eC9ELEtBQUFtRixFQUFBazZELEVBQUE5bkQsRUFBQTlMLEdBQUErekQsR0FHQSxNQUFBSCxJQWVB
RSx3QkFBQSxTQUFBdnFELEVBQUFzM0IsRUFBQSt5QixFQUFBanNDLEVBQUF0cEIsRUFBQTIxRCxH
QUNBLEdBS0FMLEdBQ0FNLEVBQ0FaLEVBTEEzNUQsRUFBQXBFLEtBQUFpa0MsVUFFQTI2QixFQUFB
OWhDLFFBQUExNEIsRUFBQStxQyxtQkFJQXl2QixLQUNBUCxFQUFBajZELEVBQUFvUyxNQUNBbW9E
LEVBQUF2NkQsRUFBQXlwQyxNQUNBa3dCLEVBQUEzNUQsRUFBQXNHLFNBR0F0RyxFQUFBMDhDLHFC
QU1BMThDLEVBQUEwOEMsb0JBQUF2VixFQUFBK3lCLEVBQUFqc0MsR0FJQXJ5QixLQUFBMEosZ0JB
QUF1SyxFQUNBalUsS0FBQW1VLFNBQUF1cUQsRUFDQXQ2RCxFQUFBb1MsTUFBQSswQixFQUNBbm5D
LEVBQUF5cEMsTUFBQXl3QixFQUNBbDZELEVBQUFzRyxRQUFBMm5CLEVBRUFyeUIsS0FBQTYrRCx5
QkFBQTkxRCxFQUFBMjFELEdBRUFFLEdBTUE3MUQsRUFBQTRLLHFCQUFBdkosUUFBQWhHLEVBQUEr
cUMsbUJBQUFsNEIsS0FBQTdTLEVBQUFpNkQsRUFBQU0sRUFBQVosR0FBQTM1RCxJQVdBeTZELHlC
QUFBLFNBQUE5MUQsRUFBQTJCLEdBQ0EsR0FBQW8wRCxHQUFBOStELEtBQUFrRSxtQkFDQTY2RCxF
QUFBRCxFQUFBcDFELGdCQUNBczFELEVBQUFoL0QsS0FBQXc5RCw0QkFFQUQsRUFBQSxDQUtBLElB
QUF0cEMsRUFBQThxQyxFQUFBQyxHQUNBaDFELEVBQUFnSyxpQkFBQThxRCxFQUFBRSxFQUFBajJE
LEVBQUEvSSxLQUFBc2tDLHFCQUFBNTVCLFFBQ0ssQ0FDTCxHQUFBdTBELEdBQUFqMUQsRUFBQTRK
LFlBQUFrckQsRUFDQTkwRCxHQUFBNkosaUJBQUFpckQsR0FBQSxFQUVBLElBQUFuN0QsR0FBQTZo
QyxFQUFBSSxRQUFBbzVCLEVBQ0FoL0QsTUFBQWttQyxrQkFBQXZpQyxDQUNBLElBQUFvK0IsR0FB
QS9oQyxLQUFBb29DLDJCQUFBNDJCLEVBQUFyN0QsSUFBQTZoQyxFQUFBRyxNQUVBM2xDLE1BQUFr
RSxtQkFBQTY5QixDQUVBLElBQUFtOUIsR0FBQWwxRCxFQUFBb0osZUFBQTJ1QixFQUFBaDVCLEVB
QUEvSSxLQUFBK0YsWUFBQS9GLEtBQUFnakMsbUJBQUFoakMsS0FBQXNrQyxxQkFBQTU1QixHQUFB
NnlELEVBU0F2OUQsTUFBQW0vRCx1QkFBQUYsRUFBQUMsRUFBQUosS0FTQUssdUJBQUEsU0FBQUYs
RUFBQUMsRUFBQUUsR0FDQXh1QyxFQUFBQyxzQkFBQW91QyxFQUFBQyxFQUFBRSxJQU1BQywrQ0FB
QSxXQUNBLEdBQ0EzQyxHQURBdDRELEVBQUFwRSxLQUFBaWtDLFNBb0JBLE9BWkF5NEIsR0FBQXQ0
RCxFQUFBcS9CLFVBa0JBKzVCLDBCQUFBLFdBQ0EsR0FBQWQsRUFDQSxJQUFBMThELEtBQUF3OEQs
aUJBQUFMLEVBQUFHLG9CQUFBLENBQ0EzdEQsRUFBQUMsUUFBQTVPLElBQ0EsS0FDQTA4RCxFQUFB
MThELEtBQUFxL0QsaURBQ08sUUFDUDF3RCxFQUFBQyxRQUFBLFVBR0E4dEQsR0FBQTE4RCxLQUFB
cS9ELGdEQU1BLE9BRkEsUUFBQTNDLFFBQUEsR0FBQXZuRCxFQUFBTyxlQUFBZ25ELEdBQUEsT0FB
QXAzRCxFQUFBLE1BQUF0RixLQUFBNkosV0FBQSwyQkFFQTZ5RCxHQVdBNEMsVUFBQSxTQUFBNXJE
LEVBQUExUCxHQUNBLEdBQUFJLEdBQUFwRSxLQUFBcUssbUJBQ0EsT0FBQWpHLEVBQUFrQixFQUFB
LGFBQ0EsSUFBQWk2RCxHQUFBdjdELEVBQUFxRyxvQkFLQWl1QyxFQUFBbDBDLEVBQUFrMEMsT0FB
QTE3QixFQUFBeFksRUFBQWswQyxRQUF5RGwwQyxFQUFBazBDLElBQ3pEQSxHQUFBNWtDLEdBQUE2
ckQsR0FVQUMsVUFBQSxTQUFBOXJELEdBQ0EsR0FBQTRrQyxHQUFBdDRDLEtBQUFxSyxvQkFBQWl1
QyxXQUNBQSxHQUFBNWtDLElBU0E3SixRQUFBLFdBQ0EsR0FBQUYsR0FBQTNKLEtBQUEwSixnQkFB
QUMsS0FDQW1ELEVBQUE5TSxLQUFBaWtDLFdBQUFqa0MsS0FBQWlrQyxVQUFBbjNCLFdBQ0EsT0FB
QW5ELEdBQUF3bkIsYUFBQXJrQixLQUFBcWtCLGFBQUF4bkIsRUFBQTdJLE1BQUFnTSxLQUFBaE0s
TUFBQSxNQVdBdUosa0JBQUEsV0FDQSxHQUFBakcsR0FBQXBFLEtBQUFpa0MsU0FDQSxPQUFBamtD
LE1BQUF3OEQsaUJBQUFMLEVBQUFHLG9CQUNBLEtBRUFsNEQsR0FJQWdrQywyQkFBQSxLQUdBdHBD
LEdBQUFELFFBQUFxcEMsR3ZJeTZjTSxTQUFTcHBDLEVBQVFELEVBQVNILEd3SS94ZWhDLFlBRUEs
SUFBQTRILEdBQUE1SCxFQUFBLEdBQ0ErZ0UsRUFBQS9nRSxFQUFBLEtBQ0F3akMsRUFBQXhqQyxF
QUFBLElBQ0FzTCxFQUFBdEwsRUFBQSxJQUNBb0osRUFBQXBKLEVBQUEsR0FDQWlXLEVBQUFqVyxF
QUFBLEtBRUFnaEUsRUFBQWhoRSxFQUFBLEtBQ0F1bkMsRUFBQXZuQyxFQUFBLElBQ0F3bEMsRUFB
QXhsQyxFQUFBLElBQ0FBLEdBQUEsRUFFQStnRSxHQUFBRSxRQUVBLElBQUFDLElBQ0FGLGNBQ0Fq
OEIsT0FBQXZCLEVBQUF1QixPQUNBaUIsdUJBQUF4QyxFQUFBd0MsdUJBQ0E1dUIsUUFBQW5CLEVB
R0FrckQsd0JBQUEvM0QsRUFBQVUsZUFDQXMzRCxvQ0FBQTU3QixFQU1BLG9CQUFBNjdCLGlDQUFB
LGtCQUFBQSxnQ0FBQUosUUFDQUksK0JBQUFKLFFBQ0FseUMsZUFDQWxvQiwyQkFBQWUsRUFBQWYs
MkJBQ0FPLG9CQUFBLFNBQUExQixHQUtBLE1BSEFBLEdBQUFGLHFCQUNBRSxFQUFBNmhDLEVBQUE3
aEMsSUFFQUEsRUFDQWtDLEVBQUFSLG9CQUFBMUIsR0FFQSxPQUlBNDdELE1BQUE5OUIsRUFDQSs5
QixXQUFBajJELEdBa0RBbEwsR0FBQUQsUUFBQStnRSxHeElpemVNLFNBQVM5Z0UsRUFBUUQsRUFB
U0gsR3lJbDVlaEMsWUFxREEsU0FBQTR3QixHQUFBamMsR0FDQSxHQUFBQSxFQUFBLENBQ0EsR0FB
QWtELEdBQUFsRCxFQUFBM0osZ0JBQUFpTixRQUFBLElBQ0EsSUFBQUosRUFBQSxDQUNBLEdBQUF6
VixHQUFBeVYsRUFBQTFNLFNBQ0EsSUFBQS9JLEVBQ0EseUNBQUFBLEVBQUEsTUFJQSxTQTJEQSxR
QUFBby9ELEdBQUFsOEQsRUFBQXdTLEdBQ0FBLElBSUEycEQsRUFBQW44RCxFQUFBbzhELFFBQ0Es
TUFBQTVwRCxFQUFBM1IsVUFBQSxNQUFBMlIsRUFBQTZwRCx3QkFBQS82RCxFQUFBLE1BQUF0QixF
QUFBbzhELEtBQUFwOEQsRUFBQTBGLGdCQUFBaU4sT0FBQSwrQkFBQTNTLEVBQUEwRixnQkFBQWlO
LE9BQUE5TSxVQUFBLGdCQUVBLE1BQUEyTSxFQUFBNnBELDBCQUNBLE1BQUE3cEQsRUFBQTNSLFNB
QUFTLEVBQUEsYUFDQSxnQkFBQWtSLEdBQUE2cEQseUJBQUFDLElBQUE5cEQsR0FBQTZwRCx3QkFB
Z08sT0FBQS82RCxFQUFBLE9BT2hPLE1BQUFrUixFQUFBbTVDLE9BQUEsZ0JBQUFuNUMsR0FBQW01
QyxNQUE4UHJxRCxFQUFBLEtBQUFncUIsRUFBQXRyQixJQUFBLFFBRzlQLFFBQUF1OEQsR0FBQW44
RCxFQUFBMlUsRUFBQUMsRUFBQWpRLEdBQ0EsS0FBQUEsWUFBQXkzRCxJQUFBLENBUUEsR0FBQUMs
R0FBQXI4RCxFQUFBNCtCLG1CQUNBMDlCLEVBQUFELEVBQUFFLE9BQUFGLEVBQUFFLE1BQUFoOUQs
V0FBQWk5RCxFQUNBcmtELEVBQUFta0QsRUFBQUQsRUFBQUUsTUFBQUYsRUFBQUksY0FDQTUrQyxH
QUFBbEosRUFBQXdELEdBQ0F4VCxFQUFBNEsscUJBQUF2SixRQUFBME8sR0FDQTFVLE9BQ0EyVSxt
QkFDQUMsY0FJQSxRQUFBRixLQUNBLEdBQUFnb0QsR0FBQTlnRSxJQUNBMlksR0FBQUcsWUFBQWdv
RCxFQUFBMThELEtBQUEwOEQsRUFBQS9uRCxpQkFBQStuRCxFQUFBOW5ELFVBR0EsUUFBQStuRCxL
QUNBLEdBQUEzOEQsR0FBQXBFLElBQ0FnaEUsR0FBQUMsaUJBQUE3OEQsR0FHQSxRQUFBODhELEtB
Q0EsR0FBQTk4RCxHQUFBcEUsSUFDQW1oRSxHQUFBRixpQkFBQTc4RCxHQUdBLFFBQUFnOUQsS0FD
QSxHQUFBaDlELEdBQUFwRSxJQUNBcWhFLEdBQUFKLGlCQUFBNzhELEdBNERBLFFBQUFrOUQsS0FD
QTE2QixFQUFBRSxNQUFBOW1DLE1BR0EsUUFBQXVoRSxLQUNBLEdBQUFuOUQsR0FBQXBFLElBR0Fv
RSxHQUFBc1UsWUFBQSxPQUFBcFQsRUFBQSxLQUNBLElBQUE3QixHQUFBKzlELEVBQUFwOUQsRUFH
QSxRQUZBWCxFQUFBLE9BQUE2QixFQUFBLE1BRUFsQixFQUFBZzhELE1BQ0EsYUFDQSxhQUNBaDhE
LEVBQUF1NEIsY0FBQWdCLFdBQUFsYyxFQUFBYyxpQkFBQSxpQkFBQTllLEdBQ0EsTUFDQSxhQUNB
LFlBQ0FXLEVBQUF1NEIsY0FBQWdCLFlBRUEsUUFBQTl2QixLQUFBNHpELEdBQ0FBLEVBQUFqaUUs
ZUFBQXFPLElBQ0F6SixFQUFBdTRCLGNBQUFnQixVQUFBbDRCLEtBQUFnYyxFQUFBYyxpQkFBQTFV
LEVBQUE0ekQsRUFBQTV6RCxHQUFBcEssR0FHQSxNQUNBLGNBQ0FXLEVBQUF1NEIsY0FBQWdCLFdB
QUFsYyxFQUFBYyxpQkFBQSxtQkFBQTllLEdBQ0EsTUFDQSxXQUNBVyxFQUFBdTRCLGNBQUFnQixX
QUFBbGMsRUFBQWMsaUJBQUEsbUJBQUE5ZSxHQUFBZ2UsRUFBQWMsaUJBQUEsaUJBQUE5ZSxHQUNB
LE1BQ0EsWUFDQVcsRUFBQXU0QixjQUFBZ0IsV0FBQWxjLEVBQUFjLGlCQUFBLG1CQUFBOWUsR0FB
QWdlLEVBQUFjLGlCQUFBLHFCQUFBOWUsR0FDQSxNQUNBLGFBQ0EsYUFDQSxlQUNBVyxFQUFBdTRC
LGNBQUFnQixXQUFBbGMsRUFBQWMsaUJBQUEsdUJBQUE5ZSxLQUtBLFFBQUFpK0QsS0FDQXBrQyxF
QUFBUSxrQkFBQTk5QixNQThDQSxRQUFBMmhFLEdBQUFqcUQsR0FDQWxZLEVBQUFQLEtBQUEyaUUs
RUFBQWxxRCxLQUNBbXFELEVBQUFyeEQsS0FBQWtILEdBQUEsT0FBQXBTLEVBQUEsS0FBQW9TLEdB
Q0FrcUQsRUFBQWxxRCxJQUFBLEdBSUEsUUFBQW9xRCxHQUFBeHhDLEVBQUE5WixHQUNBLE1BQUE4
WixHQUFBM0UsUUFBQSxlQUFBblYsRUFBQWdTLEdBbUJBLFFBQUF1NUMsR0FBQXRyRCxHQUNBLEdB
QUFpQixHQUFBakIsRUFBQTlNLElBQ0FnNEQsR0FBQWpxRCxHQUNBMVgsS0FBQTBKLGdCQUFBK00s
RUFDQXpXLEtBQUFvZ0UsS0FBQTFvRCxFQUFBaEgsY0FDQTFRLEtBQUFnaUUsY0FBQSxLQUNBaGlF
LEtBQUE4RSxrQkFBQSxLQUNBOUUsS0FBQWlpRSxlQUFBLEtBQ0FqaUUsS0FBQWtpRSxtQkFBQSxL
QUNBbGlFLEtBQUFzRSxVQUFBLEtBQ0F0RSxLQUFBK0YsWUFBQSxLQUNBL0YsS0FBQTBZLFlBQUEs
RUFDQTFZLEtBQUFvRixPQUFBLEVBQ0FwRixLQUFBZ2pDLG1CQUFBLEtBQ0FoakMsS0FBQTI4Qixj
QUFBLEtBQ0EzOEIsS0FBQWlpQyxpQkFBQSxLQUNBamlDLEtBQUEwRSxPQUFBLEVBblhBLEdBQUFZ
LEdBQUE1RyxFQUFBLEdBQ0FtTSxFQUFBbk0sRUFBQSxHQUVBdXVELEVBQUF2dUQsRUFBQSxLQUNB
bXhELEVBQUFueEQsRUFBQSxLQUNBc1IsRUFBQXRSLEVBQUEsSUFDQXVSLEVBQUF2UixFQUFBLElB
Q0FzSCxFQUFBdEgsRUFBQSxJQUNBazlCLEVBQUFsOUIsRUFBQSxJQUNBaWEsRUFBQWphLEVBQUEs
SUFDQW1aLEVBQUFuWixFQUFBLElBQ0EraUIsRUFBQS9pQixFQUFBLElBQ0F1SCxFQUFBdkgsRUFB
QSxJQUNBNEgsRUFBQTVILEVBQUEsR0FDQXNpRSxFQUFBdGlFLEVBQUEsS0FDQTJpRSxFQUFBM2lF
LEVBQUEsS0FDQTQrQixFQUFBNStCLEVBQUEsSUFDQXlpRSxFQUFBemlFLEVBQUEsS0FFQXlqRSxH
QURBempFLEVBQUEsR0FDQUEsRUFBQSxNQUNBOGhFLEVBQUE5aEUsRUFBQSxLQUdBdW5CLEdBREF2
bkIsRUFBQSxHQUNBQSxFQUFBLEtBSUFrb0MsR0FIQWxvQyxFQUFBLEdBQ0FBLEVBQUEsSUFDQUEs
RUFBQSxJQUNBQSxFQUFBLEtBSUFpRyxHQUhBakcsRUFBQSxJQUNBQSxFQUFBLEdBRUF1SCxHQUNB
cVQsRUFBQVgsRUFBQVcsZUFDQWtvRCxFQUFBbDdELEVBQUFSLG9CQUNBbWMsRUFBQVIsRUFBQVEs
U0FDQTlJLEVBQUF0QixFQUFBc0Isd0JBR0FpcEQsR0FBcUI3OEMsUUFBQSxFQUFBc2pCLFFBQUEs
R0FFckJ3NUIsRUFBQSxRQUNBL0IsRUFBQSxTQUNBbnFELEdBQ0F0UixTQUFBLEtBQ0F3N0Qsd0JB
QUEsS0FDQWlDLCtCQUFBLE1BSUExQixFQUFBLEdBa0tBYSxHQUNBaGtELFNBQUEsUUFDQUssV0FB
QSxVQUNBQyxrQkFBQSxpQkFDQWtCLGtCQUFBLGlCQUNBQyxXQUFBLFVBQ0FDLGFBQUEsWUFDQUMs
U0FBQSxRQUNBQyxTQUFBLFFBQ0FNLGNBQUEsYUFDQUMsa0JBQUEsaUJBQ0FDLGFBQUEsWUFDQU8s
U0FBQSxRQUNBQyxRQUFBLE9BQ0FDLFdBQUEsVUFDQUMsWUFBQSxXQUNBQyxjQUFBLGFBQ0FFLFVB
QUEsU0FDQUMsV0FBQSxVQUNBRSxXQUFBLFVBQ0FDLFdBQUEsVUFDQUUsY0FBQSxhQUNBTSxnQkFB
QSxlQUNBQyxXQUFBLFdBc0RBZ2hELEdBQ0FqZixNQUFBLEVBQ0FrZixNQUFBLEVBQ0FDLElBQUEs
RUFDQWxmLEtBQUEsRUFDQW1mLE9BQUEsRUFDQUMsSUFBQSxFQUNBQyxLQUFBLEVBQ0EzaUMsT0FB
QSxFQUNBNGlDLFFBQUEsRUFDQUMsTUFBQSxFQUNBQyxNQUFBLEVBQ0F0ZixPQUFBLEVBQ0F2Z0Qs
UUFBQSxFQUNBNGpDLE9BQUEsRUFDQWs4QixLQUFBLEdBSUFDLEdBQ0FDLFNBQUEsRUFDQUMsS0FB
QSxFQUNBQyxVQUFBLEdBTUFqRCxFQUFBdDFELEdBQ0F3NEQsVUFBQSxHQUNDZCxHQU1EVixFQUFB
LDhCQUNBRCxLQUNBcGlFLEtBQXVCQSxlQWF2QjhqRSxHQUFBLENBdUNBdkIsR0FBQTV3QyxZQUFB
LG9CQUVBNHdDLEVBQUF3QixPQVlBbndELGVBQUEsU0FBQXJLLEVBQUF1SyxFQUFBQyxFQUFBN0ks
R0FDQTFLLEtBQUEwWSxZQUFBNHFELEtBQ0F0akUsS0FBQW9GLE9BQUFtTyxFQUFBaXdELGFBQ0F4
akUsS0FBQStGLFlBQUF1TixFQUNBdFQsS0FBQWdqQyxtQkFBQXp2QixDQUVBLElBQUFpRCxHQUFB
eFcsS0FBQTBKLGdCQUFBOE0sS0FFQSxRQUFBeFcsS0FBQW9nRSxNQUNBLFlBQ0EsV0FDQSxhQUNB
LFVBQ0EsV0FDQSxhQUNBLGFBQ0EsWUFDQXBnRSxLQUFBMjhCLGVBQ0FnQixVQUFBLE1BRUE1MEIs
RUFBQTRLLHFCQUFBdkosUUFBQW0zRCxFQUFBdmhFLEtBQ0EsTUFDQSxhQUNBZ2hFLEVBQUF4akMs
YUFBQXg5QixLQUFBd1csRUFBQWxELEdBQ0FrRCxFQUFBd3FELEVBQUF6akMsYUFBQXY5QixLQUFB
d1csR0FDQXpOLEVBQUE0SyxxQkFBQXZKLFFBQUFrM0QsRUFBQXRoRSxNQUNBK0ksRUFBQTRLLHFC
QUFBdkosUUFBQW0zRCxFQUFBdmhFLEtBQ0EsTUFDQSxjQUNBcWhFLEVBQUE3akMsYUFBQXg5QixL
QUFBd1csRUFBQWxELEdBQ0FrRCxFQUFBNnFELEVBQUE5akMsYUFBQXY5QixLQUFBd1csRUFDQSxN
QUNBLGNBQ0E4bUIsRUFBQUUsYUFBQXg5QixLQUFBd1csRUFBQWxELEdBQ0FrRCxFQUFBOG1CLEVB
QUFDLGFBQUF2OUIsS0FBQXdXLEdBQ0F6TixFQUFBNEsscUJBQUF2SixRQUFBbTNELEVBQUF2aEUs
S0FDQSxNQUNBLGdCQUNBbWhFLEVBQUEzakMsYUFBQXg5QixLQUFBd1csRUFBQWxELEdBQ0FrRCxF
QUFBMnFELEVBQUE1akMsYUFBQXY5QixLQUFBd1csR0FDQXpOLEVBQUE0SyxxQkFBQXZKLFFBQUFr
M0QsRUFBQXRoRSxNQUNBK0ksRUFBQTRLLHFCQUFBdkosUUFBQW0zRCxFQUFBdmhFLE1BSUFrZ0Us
RUFBQWxnRSxLQUFBd1csRUFJQSxJQUFBN0YsR0FDQTh5RCxDQUNBLE9BQUFud0QsR0FDQTNDLEVB
QUEyQyxFQUFBMHVELGNBQ0F5QixFQUFBbndELEVBQUE4c0QsTUFDSzdzRCxFQUFBNnNELE9BQ0x6
dkQsRUFBQTRDLEVBQUF5dUQsY0FDQXlCLEVBQUFsd0QsRUFBQTZzRCxPQUVBLE1BQUF6dkQsT0FB
QVYsRUFBQW9XLEtBQUEsa0JBQUFvOUMsS0FDQTl5RCxFQUFBVixFQUFBaEIsTUFFQTBCLElBQUFW
LEVBQUFoQixPQUNBLFFBQUFqUCxLQUFBb2dFLEtBQ0F6dkQsRUFBQVYsRUFBQW9XLElBQ08sU0FB
QXJtQixLQUFBb2dFLE9BQ1B6dkQsRUFBQVYsRUFBQW1iLFNBR0FwckIsS0FBQWdpRSxjQUFBcnhE
LENBR0EsSUFjQSt5RCxFQUNBLElBQUEzNkQsRUFBQXc1QixpQkFBQSxDQUNBLEdBQ0FvaEMsR0FE
QW5uRCxFQUFBakosRUFBQXN0RCxjQUVBLElBQUFsd0QsSUFBQVYsRUFBQWhCLEtBQ0EsY0FBQWpQ
LEtBQUFvZ0UsS0FBQSxDQUdBLEdBQUF3RCxHQUFBcG5ELEVBQUE5VixjQUFBLE9BQ0FpRCxFQUFB
M0osS0FBQTBKLGdCQUFBQyxJQUNBaTZELEdBQUF0OUMsVUFBQSxJQUFBM2MsRUFBQSxNQUFBQSxF
QUFBLElBQ0FnNkQsRUFBQUMsRUFBQWo5QyxZQUFBaTlDLEVBQUE1K0QsZ0JBRUEyK0QsR0FEU250
RCxFQUFBZ1MsR0FDVGhNLEVBQUE5VixjQUFBMUcsS0FBQTBKLGdCQUFBQyxLQUFBNk0sRUFBQWdT
LElBS0FoTSxFQUFBOVYsY0FBQTFHLEtBQUEwSixnQkFBQUMsVUFHQWc2RCxHQUFBbm5ELEVBQUFx
bkQsZ0JBQUFsekQsRUFBQTNRLEtBQUEwSixnQkFBQUMsS0FFQXJELEdBQUFuQyxhQUFBbkUsS0FB
QTJqRSxHQUNBM2pFLEtBQUEwRSxRQUFBQyxFQUFBQyxvQkFDQTVFLEtBQUErRixhQUNBNjFCLEVB
QUFJLG9CQUFBMm5DLEdBRUEzakUsS0FBQThqRSxxQkFBQSxLQUFBdHRELEVBQUF6TixFQUNBLElB
QUFnN0QsR0FBQS96RCxFQUFBMnpELEVBQ0EzakUsTUFBQWdrRSx1QkFBQWo3RCxFQUFBeU4sRUFB
QTlMLEVBQUFxNUQsR0FDQUwsRUFBQUssTUFDSyxDQUNMLEdBQUFFLEdBQUFqa0UsS0FBQWtrRSxv
Q0FBQW43RCxFQUFBeU4sR0FDQTJ0RCxFQUFBbmtFLEtBQUFva0UscUJBQUFyN0QsRUFBQXlOLEVB
QUE5TCxFQUVBZzVELElBREFTLEdBQUE1QixFQUFBdmlFLEtBQUFvZ0UsTUFDQTZELEVBQUEsS0FF
QUEsRUFBQSxJQUFBRSxFQUFBLEtBQUFua0UsS0FBQTBKLGdCQUFBQyxLQUFBLElBSUEsT0FBQTNK
LEtBQUFvZ0UsTUFDQSxZQUNBcjNELEVBQUE0SyxxQkFBQXZKLFFBQUEyMkQsRUFBQS9nRSxNQUNB
d1csRUFBQTg4QixXQUNBdnFDLEVBQUE0SyxxQkFBQXZKLFFBQUE2aUQsRUFBQUMsa0JBQUFsdEQs
S0FFQSxNQUNBLGdCQUNBK0ksRUFBQTRLLHFCQUFBdkosUUFBQTgyRCxFQUFBbGhFLE1BQ0F3VyxF
QUFBODhCLFdBQ0F2cUMsRUFBQTRLLHFCQUFBdkosUUFBQTZpRCxFQUFBQyxrQkFBQWx0RCxLQUVB
LE1BQ0EsY0FDQXdXLEVBQUE4OEIsV0FDQXZxQyxFQUFBNEsscUJBQUF2SixRQUFBNmlELEVBQUFD
LGtCQUFBbHRELEtBRUEsTUFDQSxjQUNBd1csRUFBQTg4QixXQUNBdnFDLEVBQUE0SyxxQkFBQXZK
LFFBQUE2aUQsRUFBQUMsa0JBQUFsdEQsS0FFQSxNQUNBLGNBQ0ErSSxFQUFBNEsscUJBQUF2SixR
QUFBZzNELEVBQUFwaEUsTUFJQSxNQUFBMGpFLElBZ0JBUSxvQ0FBQSxTQUFBbjdELEVBQUF5TixH
QUNBLEdBQUF3TyxHQUFBLElBQUFobEIsS0FBQTBKLGdCQUFBQyxJQUVBLFFBQUEwNkQsS0FBQTd0
RCxHQUNBLEdBQUFBLEVBQUFoWCxlQUFBNmtFLEdBQUEsQ0FHQSxHQUFBcm5DLEdBQUF4bUIsRUFB
QTZ0RCxFQUNBLFVBQUFybkMsRUFHQSxHQUFBN2pCLEVBQUEzWixlQUFBNmtFLEdBQ0FybkMsR0FD
QXVqQyxFQUFBdmdFLEtBQUFxa0UsRUFBQXJuQyxFQUFBajBCLE9BRU8sQ0FDUHM3RCxJQUFBaEMs
SUFDQXJsQyxJQUtBQSxFQUFBaDlCLEtBQUFraUUsbUJBQUFyM0QsS0FBNEQyTCxFQUFBbTVDLFFB
RTVEM3lCLEVBQUE2eUIsRUFBQUMsc0JBQUE5eUIsRUFBQWg5QixNQUVBLElBQUF5VCxHQUFBLElB
Q0EsT0FBQXpULEtBQUFvZ0UsTUFBQTBCLEVBQUE5aEUsS0FBQW9nRSxLQUFBNXBELEdBQ0FMLEVB
QUEzVyxlQUFBNmtFLEtBQ0E1d0QsRUFBQW1vQixFQUFBTSwrQkFBQW1vQyxFQUFBcm5DLElBR0F2
cEIsRUFBQW1vQixFQUFBSyx3QkFBQW9vQyxFQUFBcm5DLEdBRUF2cEIsSUFDQXVSLEdBQUEsSUFB
QXZSLElBT0EsTUFBQTFLLEdBQUF1N0QscUJBQ0F0L0MsR0FHQWhsQixLQUFBK0YsY0FDQWlmLEdB
QUEsSUFBQTRXLEVBQUFHLHVCQUVBL1csR0FBQSxJQUFBNFcsRUFBQUMsa0JBQUE3N0IsS0FBQW9G
LFVBYUFnL0QscUJBQUEsU0FBQXI3RCxFQUFBeU4sRUFBQTlMLEdBQ0EsR0FBQXNhLEdBQUEsR0FH
QXNCLEVBQUE5UCxFQUFBNnBELHVCQUNBLFVBQUEvNUMsRUFDQSxNQUFBQSxFQUFBaStDLFNBQ0F2
L0MsRUFBQXNCLEVBQUFpK0MsWUFFSyxDQUNMLEdBQUFDLEdBQUFwQyxRQUFBNXJELEdBQUEzUixV
QUFBMlIsRUFBQTNSLFNBQUEsS0FDQTQvRCxFQUFBLE1BQUFELEVBQUEsS0FBQWh1RCxFQUFBM1Is
UUFDQSxVQUFBMi9ELEVBRUF4L0MsRUFBQWlCLEVBQUF1K0MsT0FJTyxVQUFBQyxFQUFBLENBQ1As
R0FBQXJKLEdBQUFwN0QsS0FBQTBrRSxjQUFBRCxFQUFBMTdELEVBQUEyQixFQUNBc2EsR0FBQW8y
QyxFQUFBNzRELEtBQUEsS0FHQSxNQUFBMGdFLEdBQUFqakUsS0FBQW9nRSxPQUFBLE9BQUFwN0Ms
RUFBQXVRLE9BQUEsR0FXQSxLQUFBdlEsRUFFQUEsR0FJQWcvQyx1QkFBQSxTQUFBajdELEVBQUF5
TixFQUFBOUwsRUFBQXE1RCxHQUVBLEdBQUF6OUMsR0FBQTlQLEVBQUE2cEQsdUJBQ0EsVUFBQS81
QyxFQUNBLE1BQUFBLEVBQUFpK0MsUUFDQXYwRCxFQUFBSCxVQUFBazBELEVBQUF6OUMsRUFBQWkr
QyxZQUVLLENBQ0wsR0FBQUMsR0FBQXBDLFFBQUE1ckQsR0FBQTNSLFVBQUEyUixFQUFBM1IsU0FB
QSxLQUNBNC9ELEVBQUEsTUFBQUQsRUFBQSxLQUFBaHVELEVBQUEzUixRQUVBLFVBQUEyL0QsRUFL
QSxLQUFBQSxHQUlBeDBELEVBQUFGLFVBQUFpMEQsRUFBQVMsT0FFTyxVQUFBQyxFQUVQLE9BREFy
SixHQUFBcDdELEtBQUEwa0UsY0FBQUQsRUFBQTE3RCxFQUFBMkIsR0FDQXJMLEVBQUEsRUFBdUJB
LEVBQUErN0QsRUFBQTk1RCxPQUF3QmpDLElBQy9DMlEsRUFBQVAsV0FBQXMwRCxFQUFBM0ksRUFB
QS83RCxNQWNBMlUsaUJBQUEsU0FBQUMsRUFBQWxMLEVBQUEyQixHQUNBLEdBQUF3SixHQUFBbFUs
S0FBQTBKLGVBQ0ExSixNQUFBMEosZ0JBQUF1SyxFQUNBalUsS0FBQStnRCxnQkFBQWg0QyxFQUFB
bUwsRUFBQUQsRUFBQXZKLElBYUFxMkMsZ0JBQUEsU0FBQWg0QyxFQUFBbUwsRUFBQUQsRUFBQXZK
LEdBQ0EsR0FBQWk2RCxHQUFBendELEVBQUFzQyxNQUNBKzBCLEVBQUF2ckMsS0FBQTBKLGdCQUFB
OE0sS0FFQSxRQUFBeFcsS0FBQW9nRSxNQUNBLFlBQ0F1RSxFQUFBM0QsRUFBQXpqQyxhQUFBdjlC
LEtBQUEya0UsR0FDQXA1QixFQUFBeTFCLEVBQUF6akMsYUFBQXY5QixLQUFBdXJDLEVBQ0EsTUFD
QSxjQUNBbzVCLEVBQUF0RCxFQUFBOWpDLGFBQUF2OUIsS0FBQTJrRSxHQUNBcDVCLEVBQUE4MUIs
RUFBQTlqQyxhQUFBdjlCLEtBQUF1ckMsRUFDQSxNQUNBLGNBQ0FvNUIsRUFBQXJuQyxFQUFBQyxh
QUFBdjlCLEtBQUEya0UsR0FDQXA1QixFQUFBak8sRUFBQUMsYUFBQXY5QixLQUFBdXJDLEVBQ0Es
TUFDQSxnQkFDQW81QixFQUFBeEQsRUFBQTVqQyxhQUFBdjlCLEtBQUEya0UsR0FDQXA1QixFQUFB
NDFCLEVBQUE1akMsYUFBQXY5QixLQUFBdXJDLEdBUUEsT0FKQTIwQixFQUFBbGdFLEtBQUF1ckMs
R0FDQXZyQyxLQUFBOGpFLHFCQUFBYSxFQUFBcDVCLEVBQUF4aUMsR0FDQS9JLEtBQUE0a0UsbUJB
QUFELEVBQUFwNUIsRUFBQXhpQyxFQUFBMkIsR0FFQTFLLEtBQUFvZ0UsTUFDQSxZQUlBWSxFQUFB
NkQsY0FBQTdrRSxLQUNBLE1BQ0EsZ0JBQ0FtaEUsRUFBQTBELGNBQUE3a0UsS0FDQSxNQUNBLGNB
R0ErSSxFQUFBNEsscUJBQUF2SixRQUFBczNELEVBQUExaEUsUUFxQkE4akUscUJBQUEsU0FBQWEs
RUFBQXA1QixFQUFBeGlDLEdBQ0EsR0FBQXM3RCxHQUNBOVUsRUFDQXVWLENBQ0EsS0FBQVQsSUFB
QU0sR0FDQSxJQUFBcDVCLEVBQUEvckMsZUFBQTZrRSxJQUFBTSxFQUFBbmxFLGVBQUE2a0UsSUFB
QSxNQUFBTSxFQUFBTixHQUdBLEdBQUFBLElBQUFoQyxFQUFBLENBQ0EsR0FBQTBDLEdBQUEva0Us
S0FBQWtpRSxrQkFDQSxLQUFBM1MsSUFBQXdWLEdBQ0FBLEVBQUF2bEUsZUFBQSt2RCxLQUNBdVYs
UUFDQUEsRUFBQXZWLEdBQUEsR0FHQXZ2RCxNQUFBa2lFLG1CQUFBLFNBQ08vb0QsR0FBQTNaLGVB
QUE2a0UsR0FDUE0sRUFBQU4sSUFJQS9xRCxFQUFBdFosS0FBQXFrRSxHQUVPdkMsRUFBQTloRSxL
QUFBb2dFLEtBQUF1RSxHQUNQeHVELEVBQUEzVyxlQUFBNmtFLElBQ0F6b0MsRUFBQWEsd0JBQUEr
a0MsRUFBQXhoRSxNQUFBcWtFLElBRU9yK0QsRUFBQWdNLFdBQUFxeUQsSUFBQXIrRCxFQUFBOEws
a0JBQUF1eUQsS0FDUHpvQyxFQUFBUSx1QkFBQW9sQyxFQUFBeGhFLE1BQUFxa0UsRUFHQSxLQUFB
QSxJQUFBOTRCLEdBQUEsQ0FDQSxHQUFBeTVCLEdBQUF6NUIsRUFBQTg0QixHQUNBWSxFQUFBWixJ
QUFBaEMsRUFBQXJpRSxLQUFBa2lFLG1CQUFBLE1BQUF5QyxJQUFBTixHQUFBM2pFLE1BQ0EsSUFB
QTZxQyxFQUFBL3JDLGVBQUE2a0UsSUFBQVcsSUFBQUMsSUFBQSxNQUFBRCxHQUFBLE1BQUFDLEdB
R0EsR0FBQVosSUFBQWhDLEVBVUEsR0FUQTJDLEVBS0FBLEVBQUFobEUsS0FBQWtpRSxtQkFBQXIz
RCxLQUF5RG02RCxHQUV6RGhsRSxLQUFBa2lFLG1CQUFBLEtBRUErQyxFQUFBLENBRUEsSUFBQTFW
LElBQUEwVixJQUNBQSxFQUFBemxFLGVBQUErdkQsSUFBQXlWLEtBQUF4bEUsZUFBQSt2RCxLQUNB
dVYsUUFDQUEsRUFBQXZWLEdBQUEsR0FJQSxLQUFBQSxJQUFBeVYsR0FDQUEsRUFBQXhsRSxlQUFB
K3ZELElBQUEwVixFQUFBMVYsS0FBQXlWLEVBQUF6VixLQUNBdVYsUUFDQUEsRUFBQXZWLEdBQUF5
VixFQUFBelYsUUFLQXVWLEdBQUFFLE1BRU8sSUFBQTdyRCxFQUFBM1osZUFBQTZrRSxHQUNQVyxF
QUNBekUsRUFBQXZnRSxLQUFBcWtFLEVBQUFXLEVBQUFqOEQsR0FDU2s4RCxHQUNUM3JELEVBQUF0
WixLQUFBcWtFLE9BRU8sSUFBQXZDLEVBQUE5aEUsS0FBQW9nRSxLQUFBNzBCLEdBQ1BwMUIsRUFB
QTNXLGVBQUE2a0UsSUFDQXpvQyxFQUFBVyxxQkFBQWlsQyxFQUFBeGhFLE1BQUFxa0UsRUFBQVcs
T0FFTyxJQUFBaC9ELEVBQUFnTSxXQUFBcXlELElBQUFyK0QsRUFBQThMLGtCQUFBdXlELEdBQUEs
Q0FDUCxHQUFBNWdFLEdBQUErOUQsRUFBQXhoRSxLQUlBLE9BQUFnbEUsRUFDQXBwQyxFQUFBTyxv
QkFBQTE0QixFQUFBNGdFLEVBQUFXLEdBRUFwcEMsRUFBQVEsdUJBQUEzNEIsRUFBQTRnRSxJQUlB
UyxHQUNBalYsRUFBQU0sa0JBQUFxUixFQUFBeGhFLE1BQUE4a0UsRUFBQTlrRSxPQWFBNGtFLG1C
QUFBLFNBQUFELEVBQUFwNUIsRUFBQXhpQyxFQUFBMkIsR0FDQSxHQUFBdzZELEdBQUE5QyxRQUFB
dUMsR0FBQTkvRCxVQUFBOC9ELEVBQUE5L0QsU0FBQSxLQUNBc2dFLEVBQUEvQyxRQUFBNzJCLEdB
QUExbUMsVUFBQTBtQyxFQUFBMW1DLFNBQUEsS0FFQXVnRSxFQUFBVCxFQUFBdEUseUJBQUFzRSxF
QUFBdEUsd0JBQUFrRSxPQUNBYyxFQUFBOTVCLEVBQUE4MEIseUJBQUE5MEIsRUFBQTgwQix3QkFB
QWtFLE9BR0FlLEVBQUEsTUFBQUosRUFBQSxLQUFBUCxFQUFBOS9ELFNBQ0FzMkQsRUFBQSxNQUFB
Z0ssRUFBQSxLQUFBNTVCLEVBQUExbUMsU0FJQTBnRSxFQUFBLE1BQUFMLEdBQUEsTUFBQUUsRUFD
QUksRUFBQSxNQUFBTCxHQUFBLE1BQUFFLENBQ0EsT0FBQUMsR0FBQSxNQUFBbkssRUFDQW43RCxL
QUFBaTdELGVBQUEsS0FBQWx5RCxFQUFBMkIsR0FDSzY2RCxJQUFBQyxHQUNMeGxFLEtBQUF5bEUs
a0JBQUEsSUFNQSxNQUFBTixFQUNBRCxJQUFBQyxHQUNBbmxFLEtBQUF5bEUsa0JBQUEsR0FBQU4s
R0FLSyxNQUFBRSxFQUNMRCxJQUFBQyxHQUNBcmxFLEtBQUEwbEUsYUFBQSxHQUFBTCxHQUtLLE1B
QUFsSyxHQUtMbjdELEtBQUFpN0QsZUFBQUUsRUFBQXB5RCxFQUFBMkIsSUFJQWtKLFlBQUEsV0FD
QSxNQUFBNHRELEdBQUF4aEUsT0FTQTZULGlCQUFBLFNBQUFDLEdBQ0EsT0FBQTlULEtBQUFvZ0Us
TUFDQSxZQUNBLFdBQ0EsYUFDQSxVQUNBLFdBQ0EsYUFDQSxhQUNBLFlBQ0EsR0FBQXppQyxHQUFB
MzlCLEtBQUEyOEIsY0FBQWdCLFNBQ0EsSUFBQUEsRUFDQSxPQUFBdCtCLEdBQUEsRUFBeUJBLEVB
QUFzK0IsRUFBQXI4QixPQUFzQmpDLElBQy9DcytCLEVBQUF0K0IsR0FBQXdjLFFBR0EsTUFDQSxh
QUNBLGVBQ0ErcUIsRUFBQVcsYUFBQXZuQyxLQUNBLE1BQ0EsWUFDQSxXQUNBLFdBT0FzRixFQUFB
LEtBQUF0RixLQUFBb2dFLE1BSUFwZ0UsS0FBQXk3RCxnQkFBQTNuRCxHQUNBeE4sRUFBQTlCLFlB
QUF4RSxNQUNBMlksRUFBQWEsbUJBQUF4WixNQUNBQSxLQUFBMFksWUFBQSxFQUNBMVksS0FBQW9G
LE9BQUEsRUFDQXBGLEtBQUEyOEIsY0FBQSxNQU9BdHlCLGtCQUFBLFdBQ0EsTUFBQW0zRCxHQUFB
eGhFLFFBSUE2SyxFQUFBazNELEVBQUF4aUUsVUFBQXdpRSxFQUFBd0IsTUFBQXBCLEVBQUFvQixP
QUVBemtFLEVBQUFELFFBQUFrakUsR3pJbzZlTSxTQUFTampFLEVBQVFELEVBQVNILEcwSTE0Z0Jo
QyxZQU1BLFNBQUFzakMsR0FBQTJqQyxFQUFBbGlFLEdBQ0EsR0FBQW9rQyxJQUNBNUYsaUJBQUEw
akMsRUFDQW5DLFdBQUEsRUFDQTNDLGVBQUFwOUQsSUFBQUUsV0FBQTg5QixFQUFBaCtCLElBQUEr
WSxjQUFBLEtBQ0Fta0QsTUFBQWw5RCxFQUNBMjhELEtBQUEzOEQsSUFBQXNNLFNBQUFXLGNBQUEs
S0FDQXN4RCxjQUFBditELElBQUFrTixhQUFBLEtBS0EsT0FBQWszQixHQWhCQSxHQUVBcEcsSUFG
QS9pQyxFQUFBLElBRUEsRUFpQkFJLEdBQUFELFFBQUFtakMsRzFJMDVnQk0sU0FBU2xqQyxFQUFR
RCxFQUFTSCxHMkkvNmdCaEMsWUFFQSxJQUFBbU0sR0FBQW5NLEVBQUEsR0FFQXNSLEVBQUF0UixF
QUFBLElBQ0E0SCxFQUFBNUgsRUFBQSxHQUVBa25FLEVBQUEsU0FBQXhuQyxHQUVBcCtCLEtBQUEw
SixnQkFBQSxLQUVBMUosS0FBQXNFLFVBQUEsS0FDQXRFLEtBQUErRixZQUFBLEtBQ0EvRixLQUFB
Z2pDLG1CQUFBLEtBQ0FoakMsS0FBQW9GLE9BQUEsRUFFQXlGLEdBQUErNkQsRUFBQXJtRSxXQUNB
NlQsZUFBQSxTQUFBckssRUFBQXVLLEVBQUFDLEVBQUE3SSxHQUNBLEdBQUFtN0QsR0FBQXR5RCxF
QUFBaXdELFlBQ0F4akUsTUFBQW9GLE9BQUF5Z0UsRUFDQTdsRSxLQUFBK0YsWUFBQXVOLEVBQ0F0
VCxLQUFBZ2pDLG1CQUFBenZCLENBRUEsSUFBQXpQLEdBQUEsaUJBQUE5RCxLQUFBb0YsT0FBQSxH
QUNBLElBQUEyRCxFQUFBdzVCLGlCQUFBLENBQ0EsR0FBQS9sQixHQUFBakosRUFBQXN0RCxlQUNB
cDlELEVBQUErWSxFQUFBc3BELGNBQUFoaUUsRUFFQSxPQURBd0MsR0FBQW5DLGFBQUFuRSxLQUFB
eUQsR0FDQXVNLEVBQUF2TSxHQUVBLE1BQUFzRixHQUFBdTdELHFCQUlBLEdBRUEsT0FBQXhnRSxF
QUFBLE9BR0FrUSxpQkFBQSxhQUNBSixZQUFBLFdBQ0EsTUFBQXROLEdBQUFSLG9CQUFBOUYsT0FF
QTZULGlCQUFBLFdBQ0F2TixFQUFBOUIsWUFBQXhFLFNBSUFsQixFQUFBRCxRQUFBK21FLEczSSs3
Z0JNLFNBQVM5bUUsRUFBUUQsRzRJLytnQnZCLFlBRUEsSUFBQXlqQyxJQUNBQyxrQkFBQSxFQUNB
d2pDLFVBQUEsRUFHQWpuRSxHQUFBRCxRQUFBeWpDLEc1SSsvZ0JNLFNBQVN4akMsRUFBUUQsRUFB
U0gsRzZJdGdoQmhDLFlBRUEsSUFBQWtzQixHQUFBbHNCLEVBQUEsSUFDQTRILEVBQUE1SCxFQUFB
LEdBS0FrOUQsR0FPQUUsa0NBQUEsU0FBQS9nRCxFQUFBK1AsR0FDQSxHQUFBcm5CLEdBQUE2QyxF
QUFBUixvQkFBQWlWLEVBQ0E2UCxHQUFBQyxlQUFBcG5CLEVBQUFxbkIsSUFJQWhzQixHQUFBRCxR
QUFBKzhELEc3SXNoaEJNLFNBQVM5OEQsRUFBUUQsRUFBU0gsRzhJM2loQmhDLFlBb0JBLFNBQUFz
bkUsS0FDQWhtRSxLQUFBMFksYUFFQXNvRCxFQUFBNkQsY0FBQTdrRSxNQUlBLFFBQUFpbUUsR0FB
QXp2RCxHQUNBLEdBQUEwdkQsR0FBQSxhQUFBMXZELEVBQUE3TSxNQUFBLFVBQUE2TSxFQUFBN00s
SUFDQSxPQUFBdThELEdBQUEsTUFBQTF2RCxFQUFBNlksUUFBQSxNQUFBN1ksRUFBQTFGLE1Bc01B
LFFBQUFzc0IsR0FBQXZ2QixHQUNBLEdBQUEySSxHQUFBeFcsS0FBQTBKLGdCQUFBOE0sTUFFQXRK
LEVBQUFrakIsRUFBQUssZ0JBQUFqYSxFQUFBM0ksRUFLQS9GLEdBQUEyQyxLQUFBdTdELEVBQUFo
bUUsS0FFQSxJQUFBYyxHQUFBMFYsRUFBQTFWLElBQ0EsY0FBQTBWLEVBQUE3TSxNQUFBLE1BQUE3
SSxFQUFBLENBSUEsSUFIQSxHQUFBcWxFLEdBQUE3L0QsRUFBQVIsb0JBQUE5RixNQUNBb21FLEVB
QUFELEVBRUFDLEVBQUExZ0UsWUFDQTBnRSxJQUFBMWdFLFVBV0EsUUFGQTJnRSxHQUFBRCxFQUFB
RSxpQkFBQSxjQUFBajVCLEtBQUFDLFVBQUEsR0FBQXhzQyxHQUFBLG1CQUVBekIsRUFBQSxFQUFt
QkEsRUFBQWduRSxFQUFBL2tFLE9BQWtCakMsSUFBQSxDQUNyQyxHQUFBa25FLEdBQUFGLEVBQUFo
bkUsRUFDQSxJQUFBa25FLElBQUFKLEdBQUFJLEVBQUFwUixPQUFBZ1IsRUFBQWhSLEtBQUEsQ0FP
QSxHQUFBcVIsR0FBQWxnRSxFQUFBVCxvQkFBQTBnRSxFQUNBQyxHQUFBLE9BQUFsaEUsRUFBQSxN
QUlBd0MsRUFBQTJDLEtBQUF1N0QsRUFBQVEsS0FJQSxNQUFBdDVELEdBOVFBLEdBQUE1SCxHQUFB
NUcsRUFBQSxHQUNBbU0sRUFBQW5NLEVBQUEsR0FFQWs5QixFQUFBbDlCLEVBQUEsSUFDQTB4QixF
QUFBMXhCLEVBQUEsSUFDQTRILEVBQUE1SCxFQUFBLEdBQ0FvSixFQUFBcEosRUFBQSxHQXdDQXNp
RSxHQXRDQXRpRSxFQUFBLEdBQ0FBLEVBQUEsSUFzQ0E2K0IsYUFBQSxTQUFBbjVCLEVBQUFvUyxH
QUNBLEdBQUExRixHQUFBc2YsRUFBQUcsU0FBQS9aLEdBQ0E2WSxFQUFBZSxFQUFBSSxXQUFBaGEs
R0FFQWl3RCxFQUFBNTdELEdBR0FsQixLQUFBakosT0FHQXFwQyxLQUFBcnBDLE9BR0FvZ0MsSUFB
QXBnQyxPQUNBcTJELElBQUFyMkQsUUFDSzhWLEdBQ0xrd0QsZUFBQWhtRSxPQUNBZzlCLGFBQUFo
OUIsT0FDQW9RLE1BQUEsTUFBQUEsSUFBQTFNLEVBQUF1NEIsY0FBQWMsYUFDQXBPLFFBQUEsTUFB
QUEsSUFBQWpyQixFQUFBdTRCLGNBQUFncUMsZUFDQXgzQyxTQUFBL3FCLEVBQUF1NEIsY0FBQXhO
LFVBR0EsT0FBQXMzQyxJQUdBanBDLGFBQUEsU0FBQXA1QixFQUFBb1MsR0FJQSxHQW9CQWtuQixH
QUFBbG5CLEVBQUFrbkIsWUFDQXQ1QixHQUFBdTRCLGVBQ0FncUMsZUFBQSxNQUFBbndELEVBQUE2
WSxRQUFBN1ksRUFBQTZZLFFBQUE3WSxFQUFBa3dELGVBQ0FqcEMsYUFBQSxNQUFBam5CLEVBQUEx
RixNQUFBMEYsRUFBQTFGLE1BQUE0c0IsRUFDQUMsVUFBQSxLQUNBeE8sU0FBQWlPLEVBQUFubUIs
S0FBQTdTLEdBQ0EwdEQsV0FBQW1VLEVBQUF6dkQsS0FJQXF1RCxjQUFBLFNBQUF6Z0UsR0FDQSxH
QUFBb1MsR0FBQXBTLEVBQUFzRixnQkFBQThNLE1BaUJBNlksRUFBQTdZLEVBQUE2WSxPQUNBLE9B
QUFBLEdBQ0F1TSxFQUFBTyxvQkFBQTcxQixFQUFBUixvQkFBQTFCLEdBQUEsVUFBQWlyQixJQUFB
LEVBR0EsSUFBQTVyQixHQUFBNkMsRUFBQVIsb0JBQUExQixHQUNBME0sRUFBQXNmLEVBQUFHLFNB
QUEvWixFQUNBLFVBQUExRixFQUNBLE9BQUFBLEdBQUEsS0FBQXJOLEVBQUFxTixNQUNBck4sRUFB
QXFOLE1BQUEsUUFFTyxlQUFBMEYsRUFBQTdNLEtBQUEsQ0FFUCxHQUFBaTlELEdBQUFDLFdBQUFw
akUsRUFBQXFOLE1BQUEsUUFJQUEsR0FBQTgxRCxHQUVBOTFELEdBQUE4MUQsR0FBQW5qRSxFQUFB
cU4sWUFHQXJOLEVBQUFxTixNQUFBLEdBQUFBLE9BRU9yTixHQUFBcU4sUUFBQSxHQUFBQSxJQUdQ
ck4sRUFBQXFOLE1BQUEsR0FBQUEsT0FHQSxPQUFBMEYsRUFBQTFGLE9BQUEsTUFBQTBGLEVBQUFr
bkIsY0FTQWo2QixFQUFBaTZCLGVBQUEsR0FBQWxuQixFQUFBa25CLGVBQ0FqNkIsRUFBQWk2Qixh
QUFBLEdBQUFsbkIsRUFBQWtuQixjQUdBLE1BQUFsbkIsRUFBQTZZLFNBQUEsTUFBQTdZLEVBQUFr
d0QsaUJBQ0FqakUsRUFBQWlqRSxpQkFBQWx3RCxFQUFBa3dELGlCQUtBekYsaUJBQUEsU0FBQTc4
RCxHQUNBLEdBQUFvUyxHQUFBcFMsRUFBQXNGLGdCQUFBOE0sTUFJQS9TLEVBQUE2QyxFQUFBUixv
QkFBQTFCLEVBUUEsUUFBQW9TLEVBQUE3TSxNQUNBLGFBQ0EsWUFDQSxLQUNBLGFBQ0EsV0FDQSxl
QUNBLHFCQUNBLFlBQ0EsV0FDQSxXQUdBbEcsRUFBQXFOLE1BQUEsR0FDQXJOLEVBQUFxTixNQUFB
ck4sRUFBQWk2QixZQUNBLE1BQ0EsU0FDQWo2QixFQUFBcU4sTUFBQXJOLEVBQUFxTixNQVNBLEdB
QUFoUSxHQUFBMkMsRUFBQTNDLElBQ0EsTUFBQUEsSUFDQTJDLEVBQUEzQyxLQUFBLElBRUEyQyxF
QUFBaWpFLGdCQUFBampFLEVBQUFpakUsZUFDQWpqRSxFQUFBaWpFLGdCQUFBampFLEVBQUFpakUs
ZUFDQSxLQUFBNWxFLElBQ0EyQyxFQUFBM0MsVUFxREFoQyxHQUFBRCxRQUFBbWlFLEc5STJqaEJN
LFNBQVNsaUUsRUFBUUQsRUFBU0gsRytJOTBoQmhDLFlBV0EsU0FBQW9vRSxHQUFBamlFLEdBQ0Es
R0FBQW9tQixHQUFBLEVBZ0JBLE9BWkE5VixHQUFBQyxTQUFBMVMsUUFBQW1DLEVBQUEsU0FBQWs5
QixHQUNBLE1BQUFBLElBR0EsZ0JBQUFBLElBQUEsZ0JBQUFBLEdBQ0E5VyxHQUFBOFcsRUFDS2ds
QyxJQUNMQSxHQUFBLE1BS0E5N0MsRUExQkEsR0FBQXBnQixHQUFBbk0sRUFBQSxHQUVBeVcsRUFB
QXpXLEVBQUEsSUFDQTRILEVBQUE1SCxFQUFBLEdBQ0E0K0IsRUFBQTUrQixFQUFBLElBR0Fxb0Us
R0FEQXJvRSxFQUFBLElBQ0EsR0F5QkEyaUUsR0FDQTdqQyxhQUFBLFNBQUFwNUIsRUFBQW9TLEVB
QUFsRCxHQU9BLEdBQUEwekQsR0FBQSxJQUNBLFVBQUExekQsRUFBQSxDQUNBLEdBQUEyekQsR0FB
QTN6RCxDQUVBLGNBQUEyekQsRUFBQTdHLE9BQ0E2RyxJQUFBbGhFLGFBR0EsTUFBQWtoRSxHQUFB
LFdBQUFBLEVBQUE3RyxPQUNBNEcsRUFBQTFwQyxFQUFBTyxzQkFBQW9wQyxJQU1BLEdBQUE5cEMs
R0FBQSxJQUNBLFVBQUE2cEMsRUFBQSxDQUNBLEdBQUFsMkQsRUFPQSxJQUxBQSxFQURBLE1BQUEw
RixFQUFBMUYsTUFDQTBGLEVBQUExRixNQUFBLEdBRUFnMkQsRUFBQXR3RCxFQUFBM1IsVUFFQXM0
QixHQUFBLEVBQ0FybUIsTUFBQXdSLFFBQUEwK0MsSUFFQSxPQUFBM25FLEdBQUEsRUFBdUJBLEVB
QUEybkUsRUFBQTFsRSxPQUF3QmpDLElBQy9DLE1BQUEybkUsRUFBQTNuRSxLQUFBeVIsRUFBQSxD
QUNBcXNCLEdBQUEsQ0FDQSxZQUlBQSxHQUFBLEdBQUE2cEMsSUFBQWwyRCxFQUlBMU0sRUFBQXU0
QixlQUEwQlEsYUFHMUI4akMsaUJBQUEsU0FBQTc4RCxHQUVBLEdBQUFvUyxHQUFBcFMsRUFBQXNG
LGdCQUFBOE0sS0FDQSxVQUFBQSxFQUFBMUYsTUFBQSxDQUNBLEdBQUFyTixHQUFBNkMsRUFBQVIs
b0JBQUExQixFQUNBWCxHQUFBb3dCLGFBQUEsUUFBQXJkLEVBQUExRixTQUlBeXNCLGFBQUEsU0FB
QW41QixFQUFBb1MsR0FDQSxHQUFBaXdELEdBQUE1N0QsR0FBNkJzeUIsU0FBQXo4QixPQUFBbUUs
U0FBQW5FLFFBQTJDOFYsRUFJeEUsT0FBQXBTLEVBQUF1NEIsY0FBQVEsV0FDQXNwQyxFQUFBdHBD
LFNBQUEvNEIsRUFBQXU0QixjQUFBUSxTQUdBLElBQUFsUyxHQUFBNjdDLEVBQUF0d0QsRUFBQTNS
LFNBTUEsT0FKQW9tQixLQUNBdzdDLEVBQUE1aEUsU0FBQW9tQixHQUdBdzdDLEdBSUEzbkUsR0FB
QUQsUUFBQXdpRSxHL0k4MWhCTSxTQUFTdmlFLEVBQVFELEVBQVNILEdnSjU4aEJoQyxZQVlBLFNB
QUF3b0UsR0FBQUMsRUFBQUMsRUFBQXZ5QyxFQUFBd3lDLEdBQ0EsTUFBQUYsS0FBQXR5QyxHQUFB
dXlDLElBQUFDLEVBaUJBLFFBQUFDLEdBQUE3akUsR0FDQSxHQUFBeThCLEdBQUF6NUIsU0FBQXk1
QixVQUNBcW5DLEVBQUFybkMsRUFBQU0sY0FDQWduQyxFQUFBRCxFQUFBcDRELEtBQUE3TixPQUdB
bW1FLEVBQUFGLEVBQUFHLFdBQ0FELEdBQUFFLGtCQUFBbGtFLEdBQ0Fna0UsRUFBQUcsWUFBQSxh
QUFBTCxFQUVBLElBQUFNLEdBQUFKLEVBQUF0NEQsS0FBQTdOLE9BQ0F3bUUsRUFBQUQsRUFBQUws
Q0FFQSxRQUNBcm5DLE1BQUEwbkMsRUFDQXhuQyxJQUFBeW5DLEdBUUEsUUFBQUMsR0FBQXRrRSxH
QUNBLEdBQUF5OEIsR0FBQTE1QixPQUFBazVCLGNBQUFsNUIsT0FBQWs1QixjQUVBLEtBQUFRLEdB
QUEsSUFBQUEsRUFBQThuQyxXQUNBLFdBR0EsSUFBQWIsR0FBQWpuQyxFQUFBaW5DLFdBQ0FDLEVB
QUFsbkMsRUFBQWtuQyxhQUNBdnlDLEVBQUFxTCxFQUFBckwsVUFDQXd5QyxFQUFBbm5DLEVBQUFt
bkMsWUFFQVksRUFBQS9uQyxFQUFBZ29DLFdBQUEsRUFTQSxLQUVBRCxFQUFBRSxlQUFBeGtFLFNB
Q0Fza0UsRUFBQUcsYUFBQXprRSxTQUVHLE1BQUFyRCxHQUNILFlBTUEsR0FBQStuRSxHQUFBbkIs
RUFBQWhuQyxFQUFBaW5DLFdBQUFqbkMsRUFBQWtuQyxhQUFBbG5DLEVBQUFyTCxVQUFBcUwsRUFB
QW1uQyxhQUVBaUIsRUFBQUQsRUFBQSxFQUFBSixFQUFBNWhFLFdBQUEvRSxPQUVBaW5FLEVBQUFO
LEVBQUFPLFlBQ0FELEdBQUFFLG1CQUFBaGxFLEdBQ0E4a0UsRUFBQUcsT0FBQVQsRUFBQUUsZUFB
QUYsRUFBQUosWUFFQSxJQUFBYyxHQUFBekIsRUFBQXFCLEVBQUFKLGVBQUFJLEVBQUFWLFlBQUFV
LEVBQUFILGFBQUFHLEVBQUFULFdBRUEzbkMsRUFBQXdvQyxFQUFBLEVBQUFKLEVBQUFsaUUsV0FB
QS9FLE9BQ0ErK0IsRUFBQUYsRUFBQW1vQyxFQUdBTSxFQUFBbmlFLFNBQUErNUIsYUFDQW9vQyxH
QUFBQyxTQUFBMUIsRUFBQUMsR0FDQXdCLEVBQUFGLE9BQUE3ekMsRUFBQXd5QyxFQUNBLElBQUF5
QixHQUFBRixFQUFBRyxTQUVBLFFBQ0E1b0MsTUFBQTJvQyxFQUFBem9DLEVBQUFGLEVBQ0FFLElB
QUF5b0MsRUFBQTNvQyxFQUFBRSxHQVFBLFFBQUEyb0MsR0FBQXZsRSxFQUFBbzlCLEdBQ0EsR0FD
QVYsR0FBQUUsRUFEQUUsRUFBQTk1QixTQUFBeTVCLFVBQUFNLGNBQUFrbkMsV0FHQWhuRSxVQUFB
bWdDLEVBQUFSLEtBQ0FGLEVBQUFVLEVBQUFWLE1BQ0FFLEVBQUFGLEdBQ0dVLEVBQUFWLE1BQUFV
LEVBQUFSLEtBQ0hGLEVBQUFVLEVBQUFSLElBQ0FBLEVBQUFRLEVBQUFWLFFBRUFBLEVBQUFVLEVB
QUFWLE1BQ0FFLEVBQUFRLEVBQUFSLEtBR0FFLEVBQUFvbkMsa0JBQUFsa0UsR0FDQTg4QixFQUFB
RyxVQUFBLFlBQUFQLEdBQ0FJLEVBQUFxbkMsWUFBQSxhQUFBcm5DLEdBQ0FBLEVBQUFJLFFBQUEs
WUFBQU4sRUFBQUYsR0FDQUksRUFBQVUsU0FlQSxRQUFBZ29DLEdBQUF4bEUsRUFBQW85QixHQUNB
LEdBQUFyNkIsT0FBQWs1QixhQUFBLENBSUEsR0FBQVEsR0FBQTE1QixPQUFBazVCLGVBQ0FwK0Is
RUFBQW1DLEVBQUEwaUMsS0FBQTdrQyxPQUNBNitCLEVBQUFoNkIsS0FBQTI2QixJQUFBRCxFQUFB
VixNQUFBNytCLEdBQ0ErK0IsRUFBQTMvQixTQUFBbWdDLEVBQUFSLElBQUFGLEVBQUFoNkIsS0FB
QTI2QixJQUFBRCxFQUFBUixJQUFBLytCLEVBSUEsS0FBQTQrQixFQUFBZ3BDLFFBQUEvb0MsRUFB
QUUsRUFBQSxDQUNBLEdBQUE4b0MsR0FBQTlvQyxDQUNBQSxHQUFBRixFQUNBQSxFQUFBZ3BDLEVB
R0EsR0FBQUMsR0FBQUMsRUFBQTVsRSxFQUFBMDhCLEdBQ0FtcEMsRUFBQUQsRUFBQTVsRSxFQUFB
NDhCLEVBRUEsSUFBQStvQyxHQUFBRSxFQUFBLENBQ0EsR0FBQS9vQyxHQUFBOTVCLFNBQUErNUIs
YUFDQUQsR0FBQXNvQyxTQUFBTyxFQUFBM2xFLEtBQUEybEUsRUFBQUcsUUFDQXJwQyxFQUFBc3BD
LGtCQUVBcnBDLEVBQUFFLEdBQ0FILEVBQUF1cEMsU0FBQWxwQyxHQUNBTCxFQUFBZ3BDLE9BQUFJ
LEVBQUE3bEUsS0FBQTZsRSxFQUFBQyxVQUVBaHBDLEVBQUFtb0MsT0FBQVksRUFBQTdsRSxLQUFB
NmxFLEVBQUFDLFFBQ0FycEMsRUFBQXVwQyxTQUFBbHBDLE1BbExBLEdBQUE1NUIsR0FBQWpJLEVB
QUEsR0FFQTJxRSxFQUFBM3FFLEVBQUEsS0FDQXluQyxFQUFBem5DLEVBQUEsSUFvTEFnckUsRUFB
QS9pRSxFQUFBSixXQUFBLGFBQUFFLGFBQUEsZ0JBQUFELFNBRUEwNEIsR0FJQTBCLFdBQUE4b0Ms
RUFBQXBDLEVBQUFTLEVBTUE3bUMsV0FBQXdvQyxFQUFBVixFQUFBQyxFQUdBbnFFLEdBQUFELFFB
QUFxZ0MsR2hKNDloQk0sU0FBU3BnQyxFQUFRRCxFQUFTSCxHaUpwcWlCaEMsWUFFQSxJQUFBNEcs
R0FBQTVHLEVBQUEsR0FDQW1NLEVBQUFuTSxFQUFBLEdBRUFrc0IsRUFBQWxzQixFQUFBLElBQ0Fz
UixFQUFBdFIsRUFBQSxJQUNBNEgsRUFBQTVILEVBQUEsR0FFQXVuQixFQUFBdm5CLEVBQUEsSUFt
QkFpckUsR0FsQkFqckUsRUFBQSxHQUNBQSxFQUFBLElBaUJBLFNBQUF5USxHQUVBblAsS0FBQTBK
LGdCQUFBeUYsRUFDQW5QLEtBQUE0cEUsWUFBQSxHQUFBejZELEVBRUFuUCxLQUFBc0UsVUFBQSxL
QUNBdEUsS0FBQStGLFlBQUEsS0FHQS9GLEtBQUFvRixPQUFBLEVBQ0FwRixLQUFBZ29DLFlBQUEs
RUFDQWhvQyxLQUFBNnBFLGdCQUFBLEtBQ0E3cEUsS0FBQThwRSxjQUFBLE1BR0FqL0QsR0FBQTgr
RCxFQUFBcHFFLFdBU0E2VCxlQUFBLFNBQUFySyxFQUFBdUssRUFBQUMsRUFBQTdJLEdBRUEsR0Fh
QW03RCxHQUFBdHlELEVBQUFpd0QsYUFDQXVHLEVBQUEsZ0JBQUFsRSxFQUFBLElBQ0FtRSxFQUFB
LGVBR0EsSUFGQWhxRSxLQUFBb0YsT0FBQXlnRSxFQUNBN2xFLEtBQUErRixZQUFBdU4sRUFDQXZL
LEVBQUF3NUIsaUJBQUEsQ0FDQSxHQUFBL2xCLEdBQUFqSixFQUFBc3RELGVBQ0ExMkMsRUFBQTNO
LEVBQUFzcEQsY0FBQWlFLEdBQ0E5L0MsRUFBQXpOLEVBQUFzcEQsY0FBQWtFLEdBQ0FqRyxFQUFB
L3pELEVBQUF3TSxFQUFBeXRELHlCQVFBLE9BUEFqNkQsR0FBQVAsV0FBQXMwRCxFQUFBL3pELEVB
QUFtYSxJQUNBbnFCLEtBQUE0cEUsYUFDQTU1RCxFQUFBUCxXQUFBczBELEVBQUEvekQsRUFBQXdN
LEVBQUFpTyxlQUFBenFCLEtBQUE0cEUsZUFFQTU1RCxFQUFBUCxXQUFBczBELEVBQUEvekQsRUFB
QWlhLElBQ0EzakIsRUFBQW5DLGFBQUFuRSxLQUFBbXFCLEdBQ0FucUIsS0FBQTZwRSxnQkFBQTUv
QyxFQUNBODVDLEVBRUEsR0FBQW1HLEdBQUFqa0QsRUFBQWptQixLQUFBNHBFLFlBRUEsT0FBQTdn
RSxHQUFBdTdELHFCQUlBNEYsRUFHQSxPQUFBSCxFQUFBLE1BQUFHLEVBQUEsT0FBQUYsRUFBQSxP
QVdBaDJELGlCQUFBLFNBQUFtMkQsRUFBQXBoRSxHQUNBLEdBQUFvaEUsSUFBQW5xRSxLQUFBMEos
Z0JBQUEsQ0FDQTFKLEtBQUEwSixnQkFBQXlnRSxDQUNBLElBQUFDLEdBQUEsR0FBQUQsQ0FDQSxJ
QUFBQyxJQUFBcHFFLEtBQUE0cEUsWUFBQSxDQUlBNXBFLEtBQUE0cEUsWUFBQVEsQ0FDQSxJQUFB
QyxHQUFBcnFFLEtBQUE0VCxhQUNBZ1gsR0FBQU4scUJBQUErL0MsRUFBQSxHQUFBQSxFQUFBLEdB
QUFEO0FBS0F4MkQsWUFBQSxXQUNBLEdBQUEwMkQsR0FBQXRxRSxLQUFBOHBFLGFBQ0EsSUFBQVEs
RUFDQSxNQUFBQSxFQUVBLEtBQUF0cUUsS0FBQTZwRSxnQkFHQSxJQUZBLEdBQUExL0MsR0FBQTdq
QixFQUFBUixvQkFBQTlGLE1BQ0F5RCxFQUFBMG1CLEVBQUE5a0IsY0FDQSxDQUVBLEdBREEsTUFB
QTVCLEVBQUE2QixFQUFBLEtBQUF0RixLQUFBb0YsUUFBQSxPQUNBLElBQUEzQixFQUFBRSxVQUFB
LGtCQUFBRixFQUFBSyxVQUFBLENBQ0E5RCxLQUFBNnBFLGdCQUFBcG1FLENBQ0EsT0FFQUEsSUFB
QTRCLFlBS0EsTUFGQWlsRSxJQUFBdHFFLEtBQUFzRSxVQUFBdEUsS0FBQTZwRSxpQkFDQTdwRSxL
QUFBOHBFLGNBQUFRLEVBQ0FBLEdBR0F6MkQsaUJBQUEsV0FDQTdULEtBQUE2cEUsZ0JBQUEsS0FD
QTdwRSxLQUFBOHBFLGNBQUEsS0FDQXhqRSxFQUFBOUIsWUFBQXhFLFNBSUFsQixFQUFBRCxRQUFB
OHFFLEdqSm9yaUJNLFNBQVM3cUUsRUFBUUQsRUFBU0gsR2tKMTBpQmhDLFlBZUEsU0FBQXNuRSxL
QUNBaG1FLEtBQUEwWSxhQUVBeW9ELEVBQUEwRCxjQUFBN2tFLE1BMkhBLFFBQUFvOUIsR0FBQXZ2
QixHQUNBLEdBQUEySSxHQUFBeFcsS0FBQTBKLGdCQUFBOE0sTUFDQXRKLEVBQUFrakIsRUFBQUss
Z0JBQUFqYSxFQUFBM0ksRUFFQSxPQURBL0YsR0FBQTJDLEtBQUF1N0QsRUFBQWhtRSxNQUNBa04s
RUEvSUEsR0FBQTVILEdBQUE1RyxFQUFBLEdBQ0FtTSxFQUFBbk0sRUFBQSxHQUVBMHhCLEVBQUEx
eEIsRUFBQSxJQUNBNEgsRUFBQTVILEVBQUEsR0FDQW9KLEVBQUFwSixFQUFBLEdBOEJBeWlFLEdB
NUJBemlFLEVBQUEsR0FDQUEsRUFBQSxJQTRCQTYrQixhQUFBLFNBQUFuNUIsRUFBQW9TLEdBQ0Es
TUFBQUEsRUFBQTZwRCx3QkFBQS82RCxFQUFBLFlBT0EsSUFBQW1oRSxHQUFBNTdELEtBQThCMkws
R0FDOUIxRixNQUFBcFEsT0FDQWc5QixhQUFBaDlCLE9BQ0FtRSxTQUFBLEdBQUFULEVBQUF1NEIs
Y0FBQWMsYUFDQXRPLFNBQUEvcUIsRUFBQXU0QixjQUFBeE4sVUFHQSxPQUFBczNDLElBR0FqcEMs
YUFBQSxTQUFBcDVCLEVBQUFvUyxHQWFBLEdBQUExRixHQUFBc2YsRUFBQUcsU0FBQS9aLEdBQ0Fp
bkIsRUFBQTNzQixDQUdBLFVBQUFBLEVBQUEsQ0FDQSxHQUFBNHNCLEdBQUFsbkIsRUFBQWtuQixh
QUVBNzRCLEVBQUEyUixFQUFBM1IsUUFDQSxPQUFBQSxJQUlBLE1BQUE2NEIsRUFBQXA0QixFQUFB
LGFBQ0F3UixNQUFBd1IsUUFBQXpqQixLQUNBQSxFQUFBdkQsUUFBQSxTQUFBZ0UsRUFBQSxNQUNB
VCxJQUFBLElBR0E2NEIsRUFBQSxHQUFBNzRCLEdBRUEsTUFBQTY0QixJQUNBQSxFQUFBLElBRUFE
LEVBQUFDLEVBR0F0NUIsRUFBQXU0QixlQUNBYyxhQUFBLEdBQUFBLEVBQ0FFLFVBQUEsS0FDQXhP
LFNBQUFpTyxFQUFBbm1CLEtBQUE3UyxLQUlBeWdFLGNBQUEsU0FBQXpnRSxHQUNBLEdBQUFvUyxH
QUFBcFMsRUFBQXNGLGdCQUFBOE0sTUFFQS9TLEVBQUE2QyxFQUFBUixvQkFBQTFCLEdBQ0EwTSxF
QUFBc2YsRUFBQUcsU0FBQS9aLEVBQ0EsVUFBQTFGLEVBQUEsQ0FHQSxHQUFBaW5DLEdBQUEsR0FB
QWpuQyxDQUdBaW5DLEtBQUF0MEMsRUFBQXFOLFFBQ0FyTixFQUFBcU4sTUFBQWluQyxHQUVBLE1B
QUF2aEMsRUFBQWtuQixlQUNBajZCLEVBQUFpNkIsYUFBQXFhLEdBR0EsTUFBQXZoQyxFQUFBa25C
LGVBQ0FqNkIsRUFBQWk2QixhQUFBbG5CLEVBQUFrbkIsZUFJQXVqQyxpQkFBQSxTQUFBNzhELEdB
R0EsR0FBQVgsR0FBQTZDLEVBQUFSLG9CQUFBMUIsR0FDQStrQyxFQUFBMWxDLEVBQUEwbEMsV0FN
QUEsS0FBQS9rQyxFQUFBdTRCLGNBQUFjLGVBQ0FoNkIsRUFBQXFOLE1BQUFxNEIsS0FZQXJxQyxH
QUFBRCxRQUFBc2lFLEdsSjAxaUJNLFNBQVNyaUUsRUFBUUQsRUFBU0gsR21KOStpQmhDLFlBVUEs
U0FBQXF2QixHQUFBdzhDLEVBQUFDLEdBQ0EsYUFBQUQsR0FBQSxPQUFBamxFLEVBQUEsTUFDQSxh
QUFBa2xFLEdBQUEsT0FBQWxsRSxFQUFBLEtBR0EsUUFEQW1sRSxHQUFBLEVBQ0FDLEVBQUFILEVB
QXlCRyxFQUFPQSxJQUFBM2tFLFlBQ2hDMGtFLEdBR0EsUUFEQUUsR0FBQSxFQUNBQyxFQUFBSixF
QUF5QkksRUFBT0EsSUFBQTdrRSxZQUNoQzRrRSxHQUlBLE1BQUFGLEVBQUFFLEVBQUEsR0FDQUos
SUFBQXhrRSxZQUNBMGtFLEdBSUEsTUFBQUUsRUFBQUYsRUFBQSxHQUNBRCxJQUFBemtFLFlBQ0E0
a0UsR0FLQSxLQURBLEdBQUFFLEdBQUFKLEVBQ0FJLEtBQUEsQ0FDQSxHQUFBTixJQUFBQyxFQUNB
LE1BQUFELEVBRUFBLEtBQUF4a0UsWUFDQXlrRSxJQUFBemtFLFlBRUEsWUFNQSxRQUFBK25CLEdB
QUF5OEMsRUFBQUMsR0FDQSxhQUFBRCxHQUFBLE9BQUFqbEUsRUFBQSxNQUNBLGFBQUFrbEUsR0FB
QSxPQUFBbGxFLEVBQUEsS0FFQSxNQUFBa2xFLEdBQUEsQ0FDQSxHQUFBQSxJQUFBRCxFQUNBLFFB
RUFDLEtBQUF6a0UsWUFFQSxTQU1BLFFBQUFpVixHQUFBNVcsR0FHQSxNQUZBLGFBQUFBLEdBQUEs
T0FBQWtCLEVBQUEsTUFFQWxCLEVBQUEyQixZQU1BLFFBQUE4VSxHQUFBelcsRUFBQXhFLEVBQUF5
SCxHQUVBLElBREEsR0FBQXlqRSxNQUNBMW1FLEdBQ0EwbUUsRUFBQXJsRSxLQUFBckIsR0FDQUEs
SUFBQTJCLFdBRUEsSUFBQTFHLEVBQ0EsS0FBQUEsRUFBQXlyRSxFQUFBeHBFLE9BQXVCakMsS0FB
QSxHQUN2Qk8sRUFBQWtyRSxFQUFBenJFLEdBQUEsV0FBQWdJLEVBRUEsS0FBQWhJLEVBQUEsRUFB
YUEsRUFBQXlyRSxFQUFBeHBFLE9BQWlCakMsSUFDOUJPLEVBQUFrckUsRUFBQXpyRSxHQUFBLFVB
QUFnSSxHQVdBLFFBQUFvVSxHQUFBdFksRUFBQUUsRUFBQXpELEVBQUFvdUIsRUFBQUMsR0FHQSxJ
QUZBLEdBQUE4OEMsR0FBQTVuRSxHQUFBRSxFQUFBMHFCLEVBQUE1cUIsRUFBQUUsR0FBQSxLQUNB
Mm5FLEtBQ0E3bkUsT0FBQTRuRSxHQUNBQyxFQUFBdmxFLEtBQUF0QyxHQUNBQSxJQUFBNEMsV0FH
QSxLQURBLEdBQUFrbEUsTUFDQTVuRSxPQUFBMG5FLEdBQ0FFLEVBQUF4bEUsS0FBQXBDLEdBQ0FB
LElBQUEwQyxXQUVBLElBQUExRyxFQUNBLEtBQUFBLEVBQUEsRUFBYUEsRUFBQTJyRSxFQUFBMXBF
LE9BQXFCakMsSUFDbENPLEVBQUFvckUsRUFBQTNyRSxHQUFBLFVBQUEydUIsRUFFQSxLQUFBM3VC
LEVBQUE0ckUsRUFBQTNwRSxPQUF5QmpDLEtBQUEsR0FDekJPLEVBQUFxckUsRUFBQTVyRSxHQUFB
LFdBQUE0dUIsR0FoSEEsR0FBQTNvQixHQUFBNUcsRUFBQSxFQUVBQSxHQUFBLEVBa0hBSSxHQUFB
RCxTQUNBaXZCLGFBQ0FDLDBCQUNBL1Msb0JBQ0FILG1CQUNBWSx1Qm5KKy9pQk0sU0FBUzNjLEVB
QVFELEVBQVNILEdvSjFuakJoQyxZQXVCQSxTQUFBd3NFLEtBQ0FsckUsS0FBQWtJLDBCQXRCQSxH
QUFBMkMsR0FBQW5NLEVBQUEsR0FFQW9KLEVBQUFwSixFQUFBLEdBQ0FxTSxFQUFBck0sRUFBQSxJ
QUVBc0MsRUFBQXRDLEVBQUEsR0FFQXlzRSxHQUNBbGdFLFdBQUFqSyxFQUNBa0ssTUFBQSxXQUNB
a2dFLEVBQUE3Z0UsbUJBQUEsSUFJQThnRSxHQUNBcGdFLFdBQUFqSyxFQUNBa0ssTUFBQXBELEVB
QUFzRCxvQkFBQTZMLEtBQUFuUCxJQUdBMEQsR0FBQTYvRCxFQUFBRixFQU1BdGdFLEdBQUFxZ0Us
RUFBQTNyRSxVQUFBd0wsR0FDQVUsdUJBQUEsV0FDQSxNQUFBRCxLQUlBLElBQUF6QyxHQUFBLEdB
QUFtaUUsR0FFQUUsR0FDQTdnRSxtQkFBQSxFQU1BL0IsZUFBQSxTQUFBQyxFQUFBNUksRUFBQUMs
RUFBQVgsRUFBQWtCLEVBQUFDLEdBQ0EsR0FBQWdyRSxHQUFBRixFQUFBN2dFLGlCQUtBLE9BSEE2
Z0UsR0FBQTdnRSxtQkFBQSxFQUdBK2dFLEVBQ0E3aUUsRUFBQTVJLEVBQUFDLEVBQUFYLEVBQUFr
QixFQUFBQyxHQUVBeUksRUFBQTZDLFFBQUFuRCxFQUFBLEtBQUE1SSxFQUFBQyxFQUFBWCxFQUFB
a0IsRUFBQUMsSUFLQXhCLEdBQUFELFFBQUF1c0UsR3BKMG9qQk0sU0FBU3RzRSxFQUFRRCxFQUFT
SCxHcUpsc2pCaEMsWUF3QkEsU0FBQWloRSxLQUNBNEwsSUFNQUEsR0FBQSxFQUVBQyxFQUFBQyxh
QUFBOXBELHlCQUFBRCxHQUtBOHBELEVBQUE3eUQsZUFBQUMsdUJBQUEyNUMsR0FDQWlaLEVBQUEx
ekQsaUJBQUE2VixvQkFBQXJuQixHQUNBa2xFLEVBQUExekQsaUJBQUErVixvQkFBQTY5QyxHQU1B
RixFQUFBN3lELGVBQUFFLDBCQUNBOHlELG9CQUNBalosd0JBQ0F6QixvQkFDQTJhLG9CQUNBeGMs
MkJBR0FvYyxFQUFBSyxjQUFBbHRDLDRCQUFBb2pDLEdBRUF5SixFQUFBSyxjQUFBaHRDLHlCQUFB
OHFDLEdBRUE2QixFQUFBeGxFLFlBQUFzTCx3QkFBQTA0QyxHQUNBd2hCLEVBQUF4bEUsWUFBQXNM
LHdCQUFBaWlELEdBQ0FpWSxFQUFBeGxFLFlBQUFzTCx3QkFBQXc2RCxHQUVBTixFQUFBTyxlQUFB
OXRDLDRCQUFBLFNBQUFHLEdBQ0EsVUFBQXduQyxHQUFBeG5DLEtBR0FvdEMsRUFBQVEsUUFBQTkv
RCwyQkFBQW5FLEdBQ0F5akUsRUFBQVEsUUFBQTUvRCx1QkFBQWcvRCxHQUVBSSxFQUFBaDJELFVB
QUF1YixrQkFBQThxQyxJQW5FQSxHQUFBN1IsR0FBQXRyRCxFQUFBLEtBQ0Ewd0QsRUFBQTF3RCxF
QUFBLEtBQ0F1eUQsRUFBQXZ5RCxFQUFBLEtBQ0E2ekQsRUFBQTd6RCxFQUFBLEtBQ0FnMEQsRUFB
QWgwRCxFQUFBLEtBQ0E2MEQsRUFBQTcwRCxFQUFBLEtBQ0FtOUQsRUFBQW45RCxFQUFBLEtBQ0Fx
akUsRUFBQXJqRSxFQUFBLEtBQ0E0SCxFQUFBNUgsRUFBQSxHQUNBa25FLEVBQUFsbkUsRUFBQSxL
QUNBZ3RFLEVBQUFodEUsRUFBQSxLQUNBaXJFLEVBQUFqckUsRUFBQSxLQUNBMHNFLEVBQUExc0Us
RUFBQSxLQUNBZ2pCLEVBQUFoakIsRUFBQSxLQUNBOHNFLEVBQUE5c0UsRUFBQSxLQUNBcUosRUFB
QXJKLEVBQUEsS0FDQW90RSxFQUFBcHRFLEVBQUEsS0FDQWt0RSxFQUFBbHRFLEVBQUEsS0FDQWl0
RSxFQUFBanRFLEVBQUEsS0FFQTZzRSxHQUFBLENBa0RBenNFLEdBQUFELFNBQ0E4Z0UsV3JKbXRq
QkEsR0FFTSxTQUFTN2dFLEVBQVFELEVBQVNILEdzSjl4akJoQyxZQUlBLFNBQUF1dEUsR0FBQXR5
RCxHQUNBaEIsRUFBQW9CLGNBQUFKLEdBQ0FoQixFQUFBcUIsbUJBQUEsR0FKQSxHQUFBckIsR0FB
QWphLEVBQUEsSUFPQXllLEdBS0EwRSxlQUFBLFNBQUFuSSxFQUFBak4sRUFBQUMsRUFBQUMsR0FD
QSxHQUFBZ04sR0FBQWhCLEVBQUFjLGNBQUFDLEVBQUFqTixFQUFBQyxFQUFBQyxFQUNBcy9ELEdB
QUF0eUQsSUFJQTdhLEdBQUFELFFBQUFzZSxHdEo4eWpCTSxTQUFTcmUsRUFBUUQsRUFBU0gsR3VK
bDBqQmhDLFlBa0JBLFNBQUF3dEUsR0FBQTluRSxHQUlBLEtBQUFBLEVBQUEyQixhQUNBM0IsSUFB
QTJCLFdBRUEsSUFBQW9nRSxHQUFBNy9ELEVBQUFSLG9CQUFBMUIsR0FDQW85QixFQUFBMmtDLEVB
QUF6Z0UsVUFDQSxPQUFBWSxHQUFBZiwyQkFBQWk4QixHQUlBLFFBQUEycUMsR0FBQXp5RCxFQUFB
aE4sR0FDQTFNLEtBQUEwWixlQUNBMVosS0FBQTBNLGNBQ0ExTSxLQUFBb3NFLGFBV0EsUUFBQUMs
R0FBQUMsR0FDQSxHQUFBMy9ELEdBQUF5UCxFQUFBa3dELEVBQUE1L0QsYUFDQUQsRUFBQW5HLEVB
QUFmLDJCQUFBb0gsR0FNQTQvRCxFQUFBOS9ELENBQ0EsR0FDQTYvRCxHQUFBRixVQUFBM21FLEtB
QUE4bUUsR0FDQUEsS0FBQUwsRUFBQUssU0FDR0EsRUFFSCxRQUFBbHRFLEdBQUEsRUFBaUJBLEVB
QUFpdEUsRUFBQUYsVUFBQTlxRSxPQUFrQ2pDLElBQ25Eb04sRUFBQTYvRCxFQUFBRixVQUFBL3NF
LEdBQ0FxaUIsRUFBQThxRCxnQkFBQUYsRUFBQTV5RCxhQUFBak4sRUFBQTYvRCxFQUFBNS9ELFlB
QUEwUCxFQUFBa3dELEVBQUE1L0QsY0FJQSxRQUFBKy9ELEdBQUF6bUMsR0FDQSxHQUFBSCxHQUFB
d2UsRUFBQTc5QyxPQUNBdy9CLEdBQUFILEdBakVBLEdBQUFoN0IsR0FBQW5NLEVBQUEsR0FFQTYx
QixFQUFBNzFCLEVBQUEsSUFDQWlJLEVBQUFqSSxFQUFBLEdBQ0FvTSxFQUFBcE0sRUFBQSxJQUNB
NEgsRUFBQTVILEVBQUEsR0FDQW9KLEVBQUFwSixFQUFBLEdBRUEwZCxFQUFBMWQsRUFBQSxJQUNB
MmxELEVBQUEzbEQsRUFBQSxJQXlCQW1NLEdBQUFzaEUsRUFBQTVzRSxXQUNBbU0sV0FBQSxXQUNB
MUwsS0FBQTBaLGFBQUEsS0FDQTFaLEtBQUEwTSxZQUFBLEtBQ0ExTSxLQUFBb3NFLFVBQUE5cUUs
T0FBQSxLQUdBd0osRUFBQWlCLGFBQUFvZ0UsRUFBQXJoRSxFQUFBNGhFLGtCQTJCQSxJQUFBaHJE
LElBQ0FpckQsVUFBQSxFQUNBSCxnQkFBQSxLQUVBL3BELGNBQUE5YixFQUFBSixVQUFBQyxPQUFB
LEtBRUFvYixrQkFBQSxTQUFBQyxHQUNBSCxFQUFBOHFELGdCQUFBM3FELEdBR0FDLFdBQUEsU0FB
QUMsR0FDQUwsRUFBQWlyRCxXQUFBNXFELEdBR0FDLFVBQUEsV0FDQSxNQUFBTixHQUFBaXJELFVB
YUFwcUQsaUJBQUEsU0FBQTdJLEVBQUFnSixFQUFBak0sR0FDQSxNQUFBQSxHQUdBOGQsRUFBQUMs
T0FBQS9kLEVBQUFpTSxFQUFBaEIsRUFBQWtyRCxjQUFBMzFELEtBQUEsS0FBQXlDLElBRkEsTUFl
QThJLGtCQUFBLFNBQUE5SSxFQUFBZ0osRUFBQWpNLEdBQ0EsTUFBQUEsR0FHQThkLEVBQUFaLFFB
QUFsZCxFQUFBaU0sRUFBQWhCLEVBQUFrckQsY0FBQTMxRCxLQUFBLEtBQUF5QyxJQUZBLE1BS0F3
SixtQkFBQSxTQUFBRixHQUNBLEdBQUF2YSxHQUFBZ2tFLEVBQUF4MUQsS0FBQSxLQUFBK0wsRUFD
QXVSLEdBQUFDLE9BQUFodUIsT0FBQSxTQUFBaUMsSUFHQW1rRSxjQUFBLFNBQUFsekQsRUFBQWhO
LEdBQ0EsR0FBQWdWLEVBQUFpckQsU0FBQSxDQUlBLEdBQUFMLEdBQUFILEVBQUE3akUsVUFBQW9S
LEVBQUFoTixFQUNBLEtBR0E1RSxFQUFBVSxlQUFBNmpFLEVBQUFDLEdBQ0ssUUFDTEgsRUFBQXhn
RSxRQUFBMmdFLE1BS0F4dEUsR0FBQUQsUUFBQTZpQixHdkprMWpCTSxTQUFTNWlCLEVBQVFELEVB
QVNILEd3SmorakJoQyxZQUVBLElBQUFzSCxHQUFBdEgsRUFBQSxJQUNBaWEsRUFBQWphLEVBQUEs
SUFDQW9aLEVBQUFwWixFQUFBLElBQ0FreUIsRUFBQWx5QixFQUFBLElBQ0F3L0IsRUFBQXgvQixF
QUFBLElBQ0EraUIsRUFBQS9pQixFQUFBLElBQ0FvZ0MsRUFBQXBnQyxFQUFBLElBQ0FvSixFQUFB
cEosRUFBQSxHQUVBOHNFLEdBQ0FoMkQsVUFBQW9iLEVBQUF0a0IsVUFDQXRHLGNBQUFzRyxVQUNB
eS9ELGVBQUE3dEMsRUFBQTV4QixVQUNBcU0saUJBQUFyTSxVQUNBd0wsbUJBQUF4TCxVQUNBbS9E
LGFBQUFocUQsRUFBQW5WLFVBQ0F1L0QsY0FBQS9zQyxFQUFBeHlCLFVBQ0EwL0QsUUFBQWxrRSxF
QUFBd0UsVUFHQXhOLEdBQUFELFFBQUEyc0UsR3hKaS9qQk0sU0FBUzFzRSxFQUFRRCxFQUFTSCxH
eUp2Z2tCaEMsWUFFQSxJQUFBbXVFLEdBQUFudUUsRUFBQSxLQUVBb3VFLEVBQUEsT0FDQUMsRUFB
QSxXQUVBOXBDLEdBQ0FpQyxtQkFBQSxzQkFNQThuQyxvQkFBQSxTQUFBdjVELEdBQ0EsR0FBQXd4
QixHQUFBNG5DLEVBQUFwNUQsRUFHQSxPQUFBczVELEdBQUF2OEQsS0FBQWlELEdBQ0FBLEVBRUFB
LEVBQUE1UyxRQUFBaXNFLEVBQUEsSUFBQTdwQyxFQUFBaUMsbUJBQUEsS0FBQUQsRUFBQSxRQVNB
RCxlQUFBLFNBQUF2eEIsRUFBQWdELEdBQ0EsR0FBQXcyRCxHQUFBeDJELEVBQUE3UyxhQUFBcS9C
LEVBQUFpQyxtQkFDQStuQyxNQUFBdnlCLFNBQUF1eUIsRUFBQSxHQUNBLElBQUFDLEdBQUFMLEVB
QUFwNUQsRUFDQSxPQUFBeTVELEtBQUFELEdBSUFudUUsR0FBQUQsUUFBQW9rQyxHekp1aGtCTSxT
QUFTbmtDLEVBQVFELEVBQVNILEcwSjdqa0JoQyxZQXVCQSxTQUFBeXVFLEdBQUExNUQsRUFBQXlY
LEVBQUFraUQsR0FFQSxPQUNBempFLEtBQUEsZ0JBQ0FzaEIsUUFBQXhYLEVBQ0E0NUQsVUFBQSxL
QUNBbGlELFNBQUEsS0FDQWlpRCxVQUNBbGlELGFBV0EsUUFBQW9pRCxHQUFBdnJDLEVBQUE3VyxF
QUFBa2lELEdBRUEsT0FDQXpqRSxLQUFBLGdCQUNBc2hCLFFBQUEsS0FDQW9pRCxVQUFBdHJDLEVB
QUFpRyxZQUNBN2MsU0FBQW5oQixFQUFBNEosWUFBQW11QixHQUNBcXJDLFVBQ0FsaUQsYUFVQSxR
QUFBcWlELEdBQUF4ckMsRUFBQXQrQixHQUVBLE9BQ0FrRyxLQUFBLGNBQ0FzaEIsUUFBQSxLQUNB
b2lELFVBQUF0ckMsRUFBQWlHLFlBQ0E3YyxTQUFBMW5CLEVBQ0EycEUsUUFBQSxLQUNBbGlELFVB
QUEsTUFVQSxRQUFBc2lELEdBQUEvNUQsR0FFQSxPQUNBOUosS0FBQSxhQUNBc2hCLFFBQUF4WCxF
QUNBNDVELFVBQUEsS0FDQWxpRCxTQUFBLEtBQ0FpaUQsUUFBQSxLQUNBbGlELFVBQUEsTUFVQSxR
QUFBdWlELEdBQUF0a0MsR0FFQSxPQUNBeC9CLEtBQUEsZUFDQXNoQixRQUFBa2UsRUFDQWtrQyxV
QUFBLEtBQ0FsaUQsU0FBQSxLQUNBaWlELFFBQUEsS0FDQWxpRCxVQUFBLE1BUUEsUUFBQTlnQixH
QUFBNEIsRUFBQWdmLEdBS0EsTUFKQUEsS0FDQWhmLFFBQ0FBLEVBQUF2RyxLQUFBdWxCLElBRUFo
ZixFQVFBLFFBQUEwaEUsR0FBQXRwRSxFQUFBMDRELEdBQ0Fsc0MsRUFBQUUsdUJBQUExc0IsRUFB
QTA0RCxHQTVIQSxHQUFBeDNELEdBQUE1RyxFQUFBLEdBRUFreUIsRUFBQWx5QixFQUFBLElBS0Fz
TCxHQUpBdEwsRUFBQSxJQUNBQSxFQUFBLEdBRUFBLEVBQUEsSUFDQUEsRUFBQSxLQUNBbzhELEVB
QUFwOEQsRUFBQSxLQUdBb29FLEdBREFwb0UsRUFBQSxHQUNBQSxFQUFBLE1Ba0pBeWpFLEdBakpB
empFLEVBQUEsSUF5SkE2a0UsT0FDQW9LLCtCQUFBLFNBQUFDLEVBQUE3a0UsRUFBQTJCLEdBWUEs
TUFBQW93RCxHQUFBQyxvQkFBQTZTLEVBQUE3a0UsRUFBQTJCLElBR0FtakUsMEJBQUEsU0FBQTNT
LEVBQUE0UyxFQUFBMVMsRUFBQUMsRUFBQXR5RCxFQUFBMkIsR0FDQSxHQUFBeXdELEdBQ0FQLEVB
QUEsQ0FnQkEsT0FGQU8sR0FBQTJMLEVBQUFnSCxFQUFBbFQsR0FDQUUsRUFBQUcsZUFBQUMsRUFB
QUMsRUFBQUMsRUFBQUMsRUFBQXR5RCxFQUFBL0ksVUFBQWdqQyxtQkFBQXQ0QixFQUFBa3dELEdB
Q0FPLEdBV0F1SixjQUFBLFNBQUFrSixFQUFBN2tFLEVBQUEyQixHQUNBLEdBQUE3RixHQUFBN0Us
S0FBQTJ0RSwrQkFBQUMsRUFBQTdrRSxFQUFBMkIsRUFDQTFLLE1BQUE4RSxrQkFBQUQsQ0FFQSxJ
QUFBdTJELE1BQ0F2MUMsRUFBQSxDQUNBLFFBQUEva0IsS0FBQStELEdBQ0EsR0FBQUEsRUFBQXJG
LGVBQUFzQixHQUFBLENBQ0EsR0FBQWloQyxHQUFBbDlCLEVBQUEvRCxHQUNBODVELEVBQUEsRUFJ
QThJLEVBQUExNUQsRUFBQW9KLGVBQUEydUIsRUFBQWg1QixFQUFBL0ksVUFBQWdqQyxtQkFBQXQ0
QixFQUFBa3dELEVBQ0E3NEIsR0FBQWlHLFlBQUFuaUIsSUFDQXUxQyxFQUFBMzFELEtBQUFpK0Qs
R0FRQSxNQUFBdEksSUFTQXFLLGtCQUFBLFNBQUFOLEdBQ0EsR0FBQWpLLEdBQUFsN0QsS0FBQThF
LGlCQUVBZzJELEdBQUFXLGdCQUFBUCxHQUFBLEVBQ0EsUUFBQXA2RCxLQUFBbzZELEdBQ0FBLEVB
QUExN0QsZUFBQXNCLElBQ0F3RSxFQUFBLE1BSUEsSUFBQXdsQixJQUFBMmlELEVBQUF0SSxHQUNB
dUksR0FBQTF0RSxLQUFBOHFCLElBU0E0NkMsYUFBQSxTQUFBeEcsR0FDQSxHQUFBaEUsR0FBQWw3
RCxLQUFBOEUsaUJBRUFnMkQsR0FBQVcsZ0JBQUFQLEdBQUEsRUFDQSxRQUFBcDZELEtBQUFvNkQs
R0FDQUEsRUFBQTE3RCxlQUFBc0IsSUFDQXdFLEVBQUEsTUFHQSxJQUFBd2xCLElBQUEwaUQsRUFB
QXRPLEdBQ0F3TyxHQUFBMXRFLEtBQUE4cUIsSUFVQW13QyxlQUFBLFNBQUE2UyxFQUFBL2tFLEVB
QUEyQixHQUVBMUssS0FBQSt0RSxnQkFBQUQsRUFBQS9rRSxFQUFBMkIsSUFTQXFqRSxnQkFBQSxT
QUFBRCxFQUFBL2tFLEVBQUEyQixHQUNBLEdBQUF3d0QsR0FBQWw3RCxLQUFBOEUsa0JBQ0F1MkQs
S0FDQUQsS0FDQUQsRUFBQW43RCxLQUFBNnRFLDBCQUFBM1MsRUFBQTRTLEVBQUExUyxFQUFBQyxF
QUFBdHlELEVBQUEyQixFQUNBLElBQUF5d0QsR0FBQUQsRUFBQSxDQUdBLEdBQ0FwNkQsR0FEQWdx
QixFQUFBLEtBSUFrakQsRUFBQSxFQUNBbG9ELEVBQUEsRUFFQW1vRCxFQUFBLEVBQ0FDLEVBQUEs
SUFDQSxLQUFBcHRFLElBQUFxNkQsR0FDQSxHQUFBQSxFQUFBMzdELGVBQUFzQixHQUFBLENBR0Es
R0FBQXc2RCxHQUFBSixLQUFBcDZELEdBQ0FrNkMsRUFBQW1nQixFQUFBcjZELEVBQ0F3NkQsS0FB
QXRnQixHQUNBbHdCLEVBQUExZ0IsRUFBQTBnQixFQUFBOXFCLEtBQUE4cEIsVUFBQXd4QyxFQUFB
NFMsRUFBQUYsRUFBQWxvRCxJQUNBQSxFQUFBM2YsS0FBQTR3RCxJQUFBdUUsRUFBQXR6QixZQUFB
bGlCLEdBQ0F3MUMsRUFBQXR6QixZQUFBZ21DLElBRUExUyxJQUVBeDFDLEVBQUEzZixLQUFBNHdE
LElBQUF1RSxFQUFBdHpCLFlBQUFsaUIsSUFJQWdGLEVBQUExZ0IsRUFBQTBnQixFQUFBOXFCLEtB
QUFtdUUsbUJBQUFuekIsRUFBQW9nQixFQUFBNlMsR0FBQUMsRUFBQUYsRUFBQWpsRSxFQUFBMkIs
SUFDQXVqRSxLQUVBRCxJQUNBRSxFQUFBbGtFLEVBQUE0SixZQUFBb25DLEdBR0EsSUFBQWw2QyxJ
QUFBdTZELEdBQ0FBLEVBQUE3N0QsZUFBQXNCLEtBQ0FncUIsRUFBQTFnQixFQUFBMGdCLEVBQUE5
cUIsS0FBQW91RSxjQUFBbFQsRUFBQXA2RCxHQUFBdTZELEVBQUF2NkQsS0FHQWdxQixJQUNBNGlE
LEVBQUExdEUsS0FBQThxQixHQUVBOXFCLEtBQUE4RSxrQkFBQXEyRCxJQWNBTSxnQkFBQSxTQUFB
M25ELEdBQ0EsR0FBQTRuRCxHQUFBMTdELEtBQUE4RSxpQkFDQWcyRCxHQUFBVyxnQkFBQUMsRUFB
QTVuRCxHQUNBOVQsS0FBQThFLGtCQUFBLE1BV0FnbEIsVUFBQSxTQUFBaVksRUFBQTdXLEVBQUFr
aUQsRUFBQXRuRCxHQUlBLEdBQUFpYyxFQUFBaUcsWUFBQWxpQixFQUNBLE1BQUF3bkQsR0FBQXZy
QyxFQUFBN1csRUFBQWtpRCxJQVdBaUIsWUFBQSxTQUFBdHNDLEVBQUE3VyxFQUFBdzRDLEdBQ0Es
TUFBQXlKLEdBQUF6SixFQUFBeDRDLEVBQUE2VyxFQUFBaUcsY0FTQXJoQixZQUFBLFNBQUFvYixF
QUFBdCtCLEdBQ0EsTUFBQThwRSxHQUFBeHJDLEVBQUF0K0IsSUFjQTBxRSxtQkFBQSxTQUFBcHND
LEVBQUEyaEMsRUFBQXg0QyxFQUFBckYsRUFBQTljLEVBQUEyQixHQUVBLE1BREFxM0IsR0FBQWlH
LFlBQUFuaUIsRUFDQTdsQixLQUFBcXVFLFlBQUF0c0MsRUFBQTdXLEVBQUF3NEMsSUFXQTBLLGNB
QUEsU0FBQXJzQyxFQUFBdCtCLEdBQ0EsR0FBQXVuQixHQUFBaHJCLEtBQUEybUIsWUFBQW9iLEVB
QUF0K0IsRUFFQSxPQURBcytCLEdBQUFpRyxZQUFBLEtBQ0FoZCxLQUtBbHNCLEdBQUFELFFBQUFz
akUsRzFKNmtrQk0sU0FBU3JqRSxFQUFRRCxFQUFTSCxHMko5L2tCaEMsWUFXQSxTQUFBNHZFLEdB
QUE5MkQsR0FDQSxTQUFBQSxHQUFBLGtCQUFBQSxHQUFBOG5ELFdBQUEsa0JBQUE5bkQsR0FBQWdv
RCxXQVZBLEdBQUFsNkQsR0FBQTVHLEVBQUEsR0EyQ0E2dkUsR0F6Q0E3dkUsRUFBQSxJQW1EQTh2
RSxvQkFBQSxTQUFBeHFFLEVBQUEwUCxFQUFBNkMsR0FDQSszRCxFQUFBLzNELEdBQUEsT0FBQWpS
LEVBQUEsT0FDQWlSLEVBQUErb0QsVUFBQTVyRCxFQUFBMVAsSUFZQXlxRSx5QkFBQSxTQUFBenFF
LEVBQUEwUCxFQUFBNkMsR0FDQSszRCxFQUFBLzNELEdBQUEsT0FBQWpSLEVBQUEsTUFDQSxJQUFB
b3BFLEdBQUFuNEQsRUFBQWxNLG1CQUdBcWtFLE1BQUFwMkIsS0FBQTVrQyxLQUFBMVAsRUFBQXFH
LHFCQUNBa00sRUFBQWlwRCxVQUFBOXJELEtBS0E1VSxHQUFBRCxRQUFBMHZFLEczSitnbEJNLFNB
QVN6dkUsRUFBUUQsRzRKL2xsQnZCLFlBRUEsSUFBQTB3QixHQUFBLDhDQUVBendCLEdBQUFELFFB
QUEwd0IsRzVKZ25sQk0sU0FBU3p3QixFQUFRRCxFQUFTSCxHNkpybmxCaEMsWUFxR0EsU0FBQXFK
LEdBQUF3NkIsR0FDQXZpQyxLQUFBa0ksMEJBTUFsSSxLQUFBc2tFLHNCQUFBLEVBQ0F0a0UsS0FB
QTJ1RSxnQkFBQXRtRSxFQUFBQyxVQUFBLE1BQ0F0SSxLQUFBdWlDLG1CQTVHQSxHQUFBMTNCLEdB
QUFuTSxFQUFBLEdBRUEySixFQUFBM0osRUFBQSxJQUNBb00sRUFBQXBNLEVBQUEsSUFDQStpQixF
QUFBL2lCLEVBQUEsSUFDQXlnQyxFQUFBemdDLEVBQUEsSUFFQXFNLEdBREFyTSxFQUFBLEdBQ0FB
LEVBQUEsS0FDQTZ5QixFQUFBN3lCLEVBQUEsSUFNQWt3RSxHQUlBM2pFLFdBQUFrMEIsRUFBQUks
d0JBSUFyMEIsTUFBQWkwQixFQUFBUSxrQkFRQWt2QyxHQUtBNWpFLFdBQUEsV0FDQSxHQUFBNmpF
LEdBQUFydEQsRUFBQU8sV0FFQSxPQURBUCxHQUFBSyxZQUFBLEdBQ0FndEQsR0FRQTVqRSxNQUFB
LFNBQUE2akUsR0FDQXR0RCxFQUFBSyxXQUFBaXRELEtBUUFDLEdBSUEvakUsV0FBQSxXQUNBakws
S0FBQTJ1RSxnQkFBQXJqRSxTQU1BSixNQUFBLFdBQ0FsTCxLQUFBMnVFLGdCQUFBcGpFLGNBU0FD
LEdBQUFvakUsRUFBQUMsRUFBQUcsR0FtQ0F6TCxHQVFBOTNELHVCQUFBLFdBQ0EsTUFBQUQsSUFN
QW1JLG1CQUFBLFdBQ0EsTUFBQTNULE1BQUEydUUsaUJBTUE1UixlQUFBLFdBQ0EsTUFBQXhyQyxJ
QU9BMkosV0FBQSxXQUVBLE1BQUFsN0IsTUFBQTJ1RSxnQkFBQXp6QyxjQUdBQyxTQUFBLFNBQUFE
LEdBQ0FsN0IsS0FBQTJ1RSxnQkFBQXh6QyxTQUFBRCxJQU9BeHZCLFdBQUEsV0FDQXJELEVBQUFz
RCxRQUFBM0wsS0FBQTJ1RSxpQkFDQTN1RSxLQUFBMnVFLGdCQUFBLE1BSUE5akUsR0FBQTlDLEVB
QUF4SSxVQUFBd0wsRUFBQXc0RCxHQUVBejRELEVBQUFpQixhQUFBaEUsR0FFQWpKLEVBQUFELFFB
QUFrSixHN0pxb2xCTSxTQUFTakosRUFBUUQsRUFBU0gsRzhKMXlsQmhDLFlBTUEsU0FBQTRnRSxH
QUFBNXJELEVBQUExUCxFQUFBdVMsR0FDQSxrQkFBQTdDLEdBQ0FBLEVBQUExUCxFQUFBcUcscUJB
R0Fra0UsRUFBQUMsb0JBQUF4cUUsRUFBQTBQLEVBQUE2QyxHQUlBLFFBQUFpcEQsR0FBQTlyRCxF
QUFBMVAsRUFBQXVTLEdBQ0Esa0JBQUE3QyxHQUNBQSxFQUFBLE1BR0E2NkQsRUFBQUUseUJBQUF6
cUUsRUFBQTBQLEVBQUE2QyxHQWxCQSxHQUFBZzRELEdBQUE3dkUsRUFBQSxLQUVBeVUsSUFvQkFB
LEdBQUFELFdBQUEsU0FBQTBuQixFQUFBbmtCLEdBQ0EsVUFBQUEsR0FBQSxnQkFBQUEsR0FBQSxD
QUdBLEdBQUEvQyxHQUFBK0MsRUFBQS9DLEdBQ0EsT0FBQUEsR0FDQTRyRCxFQUFBNXJELEVBQUFr
bkIsRUFBQW5rQixFQUFBRSxVQUlBeEQsRUFBQWtCLGlCQUFBLFNBQUFILEVBQUFELEdBYUEsR0FB
QWc3RCxHQUFBLEtBQ0FDLEVBQUEsSUFDQSxRQUFBaDdELEdBQUEsZ0JBQUFBLEtBQ0ErNkQsRUFB
QS82RCxFQUFBUixJQUNBdzdELEVBQUFoN0QsRUFBQXlDLE9BR0EsSUFBQXc0RCxHQUFBLEtBQ0FD
LEVBQUEsSUFNQSxPQUxBLFFBQUFuN0QsR0FBQSxnQkFBQUEsS0FDQWs3RCxFQUFBbDdELEVBQUFQ
LElBQ0EwN0QsRUFBQW43RCxFQUFBMEMsUUFHQXM0RCxJQUFBRSxHQUVBLGdCQUFBQSxJQUFBQyxJ
QUFBRixHQUdBLzdELEVBQUFZLFdBQUEsU0FBQTZtQixFQUFBbmtCLEdBQ0EsVUFBQUEsR0FBQSxn
QkFBQUEsR0FBQSxDQUdBLEdBQUEvQyxHQUFBK0MsRUFBQS9DLEdBQ0EsT0FBQUEsR0FDQThyRCxF
QUFBOXJELEVBQUFrbkIsRUFBQW5rQixFQUFBRSxVQUlBN1gsRUFBQUQsUUFBQXNVLEc5SjJ6bEJN
LFNBQVNyVSxFQUFRRCxFQUFTSCxHK0p4NGxCaEMsWUErQkEsU0FBQThoRSxHQUFBOEQsR0FDQXRr
RSxLQUFBa0ksMEJBQ0FsSSxLQUFBc2tFLHVCQUNBdGtFLEtBQUF1aUMsa0JBQUEsRUFDQXZpQyxL
QUFBODhELFlBQUEsR0FBQXVTLEdBQUFydkUsTUFqQ0EsR0FBQTZLLEdBQUFuTSxFQUFBLEdBRUFv
TSxFQUFBcE0sRUFBQSxJQUNBcU0sRUFBQXJNLEVBQUEsSUFFQTJ3RSxHQURBM3dFLEVBQUEsR0FD
QUEsRUFBQSxNQU9BOE0sS0FTQThqRSxHQUNBbGxFLFFBQUEsY0FjQW01RCxHQU9BOTNELHVCQUFB
LFdBQ0EsTUFBQUQsSUFNQW1JLG1CQUFBLFdBQ0EsTUFBQTI3RCxJQU1BdlMsZUFBQSxXQUNBLE1B
QUEvOEQsTUFBQTg4RCxhQU9BcHhELFdBQUEsYUFFQXd2QixXQUFBLGFBRUFDLFNBQUEsYUFHQXR3
QixHQUFBMjFELEVBQUFqaEUsVUFBQXdMLEVBQUF3NEQsR0FFQXo0RCxFQUFBaUIsYUFBQXkwRCxH
QUVBMWhFLEVBQUFELFFBQUEyaEUsRy9KdzVsQk0sU0FBUzFoRSxFQUFRRCxFQUFTSCxHZ0tyK2xC
aEMsWUFFQSxTQUFBaThCLEdBQUFDLEVBQUFDLEdBQWlELEtBQUFELFlBQUFDLElBQTBDLFNBQUFq
NUIsV0FBQSxxQ0FNM0YsUUFBQWk3QyxHQUFBeHJCLEVBQUFDLElBSkEsR0FBQUMsR0FBQTd5QixF
QUFBLElBbUJBMndFLEdBakJBM3dFLEVBQUEsR0FpQkEsV0FDQSxRQUFBMndFLEdBQUF0bUUsR0FD
QTR4QixFQUFBMzZCLEtBQUFxdkUsR0FFQXJ2RSxLQUFBK0ksY0FnR0EsTUFwRkFzbUUsR0FBQTl2
RSxVQUFBaXlCLFVBQUEsU0FBQUgsR0FDQSxVQWFBZytDLEVBQUE5dkUsVUFBQWt5QixnQkFBQSxT
QUFBSixFQUFBNW9CLEVBQUE2b0IsR0FDQXR4QixLQUFBK0ksWUFBQStiLG1CQUNBeU0sRUFBQUUs
Z0JBQUFKLEVBQUE1b0IsRUFBQTZvQixJQW1CQSs5QyxFQUFBOXZFLFVBQUFxeUIsbUJBQUEsU0FB
QVAsR0FDQXJ4QixLQUFBK0ksWUFBQStiLGtCQUNBeU0sRUFBQUssbUJBQUFQLEdBRUF3ckIsRUFB
QXhyQixFQUFBLGdCQWlCQWcrQyxFQUFBOXZFLFVBQUF1eUIsb0JBQUEsU0FBQVQsRUFBQVUsR0FD
QS94QixLQUFBK0ksWUFBQStiLGtCQUNBeU0sRUFBQU8sb0JBQUFULEVBQUFVLEdBRUE4cUIsRUFB
QXhyQixFQUFBLGlCQWdCQWcrQyxFQUFBOXZFLFVBQUEyeUIsZ0JBQUEsU0FBQWIsRUFBQWMsR0FD
QW55QixLQUFBK0ksWUFBQStiLGtCQUNBeU0sRUFBQVcsZ0JBQUFiLEVBQUFjLEdBRUEwcUIsRUFB
QXhyQixFQUFBLGFBSUFnK0MsS0FHQXZ3RSxHQUFBRCxRQUFBd3dFLEdoS3MvbEJNLFNBQVN2d0Us
RUFBUUQsR2lLcm5tQnZCLFlBRUFDLEdBQUFELFFBQUEsVWpLcW9tQk0sU0FBU0MsRUFBUUQsR2tL
dm9tQnZCLFlBRUEsSUFBQTB3RSxJQUNBQyxNQUFBLCtCQUNBQyxJQUFBLHdDQW9CQUMsR0FDQUMs
YUFBQSxnQkFDQUMsV0FBQSxFQUNBQyxTQUFBLEVBQ0FDLGtCQUFBLHFCQUNBQyxhQUFBLGVBQ0FD
LFdBQUEsRUFDQUMsVUFBQSxFQUNBQyxXQUFBLGNBQ0FDLE9BQUEsRUFDQS85RCxjQUFBLGdCQUNB
ZytELGNBQUEsZ0JBQ0FDLFlBQUEsY0FDQUMsUUFBQSxFQUNBQyxjQUFBLGdCQUNBQyxZQUFBLGNB
Q0FDLGNBQUEsaUJBQ0FDLEtBQUEsRUFDQUMsTUFBQSxFQUNBQyxLQUFBLEVBQ0FDLEdBQUEsRUFD
QUMsU0FBQSxXQUNBQyxVQUFBLGFBQ0FDLEtBQUEsRUFDQUMsU0FBQSxZQUNBQyxTQUFBLFlBQ0FD
LGNBQUEsZ0JBQ0FDLG1CQUFBLHNCQUNBQywwQkFBQSw4QkFDQUMsYUFBQSxnQkFDQUMsZUFBQSxr
QkFDQUMsa0JBQUEsb0JBQ0FDLGlCQUFBLG1CQUNBQyxPQUFBLEVBQ0FDLEdBQUEsRUFDQUMsR0FB
QSxFQUNBdnhFLEVBQUEsRUFDQXd4RSxXQUFBLEVBQ0FDLFFBQUEsRUFDQUMsZ0JBQUEsa0JBQ0FD
LFVBQUEsRUFDQUMsUUFBQSxFQUNBQyxRQUFBLEVBQ0FDLGlCQUFBLG9CQUNBQyxJQUFBLEVBQ0FD
LEdBQUEsRUFDQUMsR0FBQSxFQUNBQyxTQUFBLFdBQ0FDLFVBQUEsRUFDQUMsaUJBQUEsb0JBQ0Fw
eUMsSUFBQSxFQUNBcXlDLFNBQUEsRUFDQUMsMEJBQUEsNEJBQ0FDLEtBQUEsRUFDQWw3QyxZQUFB
LGVBQ0FtN0MsU0FBQSxZQUNBQyxPQUFBLEVBQ0FDLFVBQUEsWUFDQUMsWUFBQSxjQUNBQyxXQUFB
LGNBQ0F0N0MsYUFBQSxnQkFDQXU3QyxVQUFBLEVBQ0E3NEMsV0FBQSxjQUNBRCxTQUFBLFlBQ0Er
NEMsZUFBQSxtQkFDQUMsWUFBQSxlQUNBbDVDLFVBQUEsYUFDQUMsWUFBQSxlQUNBbkQsV0FBQSxj
QUNBNTJCLE9BQUEsRUFDQStDLEtBQUEsRUFDQWt3RSxHQUFBLEVBQ0FDLEdBQUEsRUFDQUMsR0FB
QSxFQUNBQyxHQUFBLEVBQ0FDLFVBQUEsYUFDQUMsMkJBQUEsK0JBQ0FDLHlCQUFBLDZCQUNBQyxT
QUFBLFdBQ0FDLGtCQUFBLG9CQUNBQyxjQUFBLGdCQUNBQyxRQUFBLEVBQ0FDLFVBQUEsY0FDQUMs
YUFBQSxpQkFDQUMsWUFBQSxFQUNBQyxlQUFBLGtCQUNBQyxHQUFBLEVBQ0FDLElBQUEsRUFDQUMs
VUFBQSxFQUNBdnBELEVBQUEsRUFDQXdwRCxHQUFBLEVBQ0FDLEdBQUEsRUFDQUMsR0FBQSxFQUNB
QyxHQUFBLEVBQ0FDLGFBQUEsZUFDQUMsaUJBQUEsbUJBQ0FDLFFBQUEsRUFDQUMsVUFBQSxZQUNB
QyxXQUFBLGFBQ0FDLFNBQUEsV0FDQUMsYUFBQSxlQUNBQyxjQUFBLGlCQUNBQyxjQUFBLGlCQUNB
QyxrQkFBQSxvQkFDQUMsTUFBQSxFQUNBQyxVQUFBLGFBQ0FDLFVBQUEsYUFDQUMsWUFBQSxlQUNB
QyxhQUFBLGVBQ0FDLFlBQUEsY0FDQUMsWUFBQSxjQUNBQyxLQUFBLEVBQ0FDLGlCQUFBLG1CQUNB
QyxVQUFBLFlBQ0FDLGFBQUEsRUFDQUMsS0FBQSxFQUNBQyxXQUFBLGFBQ0ExTSxPQUFBLEVBQ0Fw
eUMsUUFBQSxFQUNBKytDLFNBQUEsRUFDQTkrQyxNQUFBLEVBQ0ErK0MsT0FBQSxFQUNBQyxZQUFB
LEVBQ0FDLE9BQUEsRUFDQUMsU0FBQSxFQUNBQyxpQkFBQSxvQkFDQUMsa0JBQUEscUJBQ0FDLFdB
QUEsY0FDQUMsUUFBQSxXQUNBQyxXQUFBLGFBQ0FDLG9CQUFBLHNCQUNBQyxpQkFBQSxtQkFDQUMs
YUFBQSxlQUNBQyxjQUFBLGlCQUNBQyxPQUFBLEVBQ0FDLFVBQUEsWUFDQUMsVUFBQSxZQUNBQyxV
QUFBLFlBQ0FDLGNBQUEsZ0JBQ0FDLG9CQUFBLHNCQUNBQyxlQUFBLGlCQUNBQyxFQUFBLEVBQ0FD
LE9BQUEsRUFDQUMsS0FBQSxPQUNBQyxLQUFBLE9BQ0FDLGdCQUFBLG1CQUNBQyxZQUFBLGNBQ0FD
LFVBQUEsWUFDQUMsbUJBQUEscUJBQ0FDLGlCQUFBLG1CQUNBQyxRQUFBLEVBQ0F4eEIsT0FBQSxF
QUNBeXhCLE9BQUEsRUFDQUMsR0FBQSxFQUNBQyxHQUFBLEVBQ0FDLE1BQUEsRUFDQUMsS0FBQSxF
QUNBQyxlQUFBLGtCQUNBQyxNQUFBLEVBQ0FDLFFBQUEsRUFDQUMsaUJBQUEsbUJBQ0FDLGlCQUFB
LG1CQUNBQyxNQUFBLEVBQ0FDLGFBQUEsZUFDQS9RLFlBQUEsY0FDQWdSLGFBQUEsZUFDQUMsTUFB
QSxFQUNBQyxNQUFBLEVBQ0FDLFlBQUEsY0FDQUMsVUFBQSxhQUNBcmhELFlBQUEsZUFDQXNoRCxz
QkFBQSx5QkFDQUMsdUJBQUEsMEJBQ0E1ekQsT0FBQSxFQUNBNnpELE9BQUEsRUFDQXZoRCxnQkFB
QSxtQkFDQUMsaUJBQUEsb0JBQ0F1aEQsY0FBQSxpQkFDQUMsZUFBQSxrQkFDQXZoRCxpQkFBQSxv
QkFDQUMsY0FBQSxpQkFDQUMsWUFBQSxlQUNBc2hELGFBQUEsZUFDQUMsZUFBQSxpQkFDQUMsWUFB
QSxjQUNBQyxRQUFBLFVBQ0FDLFFBQUEsVUFDQUMsV0FBQSxjQUNBQyxlQUFBLGtCQUNBQyxjQUFB
LGlCQUNBQyxXQUFBLGFBQ0ExMkUsR0FBQSxFQUNBcWpELFVBQUEsRUFDQXN6QixHQUFBLEVBQ0FD
LEdBQUEsRUFDQUMsa0JBQUEscUJBQ0FDLG1CQUFBLHNCQUNBQyxRQUFBLEVBQ0FDLFlBQUEsZUFD
QUMsYUFBQSxnQkFDQUMsV0FBQSxlQUNBQyxZQUFBLGVBQ0FDLFNBQUEsWUFDQUMsYUFBQSxnQkFD
QUMsY0FBQSxpQkFDQTl6QixPQUFBLEVBQ0ErekIsYUFBQSxnQkFDQTlrRSxRQUFBLEVBQ0Era0Us
U0FBQSxhQUNBQyxZQUFBLGdCQUNBQyxZQUFBLGdCQUNBQyxRQUFBLFVBQ0FDLFdBQUEsYUFDQUMs
V0FBQSxFQUNBQyxPQUFBLEVBQ0FDLFlBQUEsZUFDQUMsWUFBQSxlQUNBNXlELEVBQUEsRUFDQTZ5
RCxRQUFBLFdBQ0FDLEdBQUEsRUFDQUMsR0FBQSxFQUNBQyxpQkFBQSxtQkFDQUMsYUFBQSxnQkFD
QUMsYUFBQSxnQkFDQUMsVUFBQSxhQUNBQyxVQUFBLGFBQ0FDLFVBQUEsYUFDQUMsV0FBQSxjQUNB
QyxVQUFBLGFBQ0FDLFFBQUEsV0FDQUMsTUFBQSxFQUNBQyxXQUFBLGNBQ0FDLFFBQUEsV0FDQUMs
U0FBQSxZQUNBM3pELEVBQUEsRUFDQTR6RCxHQUFBLEVBQ0FDLEdBQUEsRUFDQUMsaUJBQUEsbUJB
Q0FDLEVBQUEsRUFDQUMsV0FBQSxjQUdBNVEsR0FDQXI2RCxjQUNBQyx3QkFDQWdxRSxhQUFBbk0s
RUFBQUMsTUFDQW1NLGFBQUFwTSxFQUFBQyxNQUNBb00sVUFBQXJNLEVBQUFDLE1BQ0FxTSxVQUFB
dE0sRUFBQUMsTUFDQXNNLFVBQUF2TSxFQUFBQyxNQUNBdU0sV0FBQXhNLEVBQUFDLE1BQ0F3TSxV
QUFBek0sRUFBQUMsTUFDQXlNLFFBQUExTSxFQUFBRSxJQUNBMk0sUUFBQTdNLEVBQUFFLElBQ0E0
TSxTQUFBOU0sRUFBQUUsS0FFQTk5RCxxQkFHQXJTLFFBQUFzRCxLQUFBOHNFLEdBQUFodEUsUUFB
QSxTQUFBYSxHQUNBdW9FLEVBQUFyNkQsV0FBQWxPLEdBQUEsRUFDQW1zRSxFQUFBbnNFLEtBQ0F1
b0UsRUFBQW42RCxrQkFBQXBPLEdBQUFtc0UsRUFBQW5zRSxNQUlBekUsRUFBQUQsUUFBQWl0RSxH
bEt1cG1CTSxTQUFTaHRFLEVBQVFELEVBQVNILEdtS3o3bUJoQyxZQTBDQSxTQUFBZ2hDLEdBQUFq
OEIsR0FDQSxxQkFBQUEsSUFBQTA3QixFQUFBQyx5QkFBQTM3QixHQUNBLE9BQ0EwOEIsTUFBQTE4
QixFQUFBMjhCLGVBQ0FDLElBQUE1OEIsRUFBQTY4QixhQUVHLElBQUE5NUIsT0FBQWs1QixhQUFB
LENBQ0gsR0FBQVEsR0FBQTE1QixPQUFBazVCLGNBQ0EsUUFDQXluQyxXQUFBam5DLEVBQUFpbkMs
V0FDQUMsYUFBQWxuQyxFQUFBa25DLGFBQ0F2eUMsVUFBQXFMLEVBQUFyTCxVQUNBd3lDLFlBQUFu
bkMsRUFBQW1uQyxhQUVHLEdBQUE1Z0UsU0FBQXk1QixVQUFBLENBQ0gsR0FBQUssR0FBQTk1QixT
QUFBeTVCLFVBQUFNLGFBQ0EsUUFDQUMsY0FBQUYsRUFBQUUsZ0JBQ0F0eEIsS0FBQW94QixFQUFB
cHhCLEtBQ0F3dEUsSUFBQXA4QyxFQUFBcThDLFlBQ0FDLEtBQUF0OEMsRUFBQXU4QyxlQVdBLFFB
QUFDLEdBQUFyd0UsRUFBQUMsR0FLQSxHQUFBcXdFLEdBQUEsTUFBQWhvRCxPQUFBRCxJQUNBLFdB
SUEsSUFBQWtvRCxHQUFBdjlDLEVBQUExSyxFQUNBLEtBQUFrb0QsSUFBQXYwRCxFQUFBdTBELEVB
QUFELEdBQUEsQ0FDQUMsRUFBQUQsQ0FFQSxJQUFBL3BELEdBQUEzbUIsRUFBQWpFLFVBQUF1akIs
RUFBQW9WLE9BQUEwdkIsRUFBQWprRCxFQUFBQyxFQU9BLE9BTEF1bUIsR0FBQXZwQixLQUFBLFNB
Q0F1cEIsRUFBQWp3QixPQUFBK3hCLEVBRUFyWixFQUFBUCw2QkFBQThYLEdBRUFBLEVBR0EsWUEv
RkEsR0FBQXZYLEdBQUFqZCxFQUFBLElBQ0FpSSxFQUFBakksRUFBQSxHQUNBNEgsRUFBQTVILEVB
QUEsR0FDQXlnQyxFQUFBemdDLEVBQUEsSUFDQTZOLEVBQUE3TixFQUFBLElBRUFxMkIsRUFBQXIy
QixFQUFBLElBQ0EycEMsRUFBQTNwQyxFQUFBLElBQ0FpcUIsRUFBQWpxQixFQUFBLElBRUF5K0Us
RUFBQXgyRSxFQUFBSixXQUFBLGdCQUFBRSxvQkFBQTRKLGNBQUEsR0FFQXdiLEdBQ0FvVixRQUNB
MW1CLHlCQUNBMjBDLFFBQUEsV0FDQUMsU0FBQSxtQkFFQS9zQyxjQUFBLGtIQUlBNFMsRUFBQSxL
QUNBMjdCLEVBQUEsS0FDQXVzQixFQUFBLEtBQ0FGLEdBQUEsRUFJQUksR0FBQSxFQW1GQXhSLEdB
Q0EvL0MsYUFFQXBTLGNBQUEsU0FBQUMsRUFBQWpOLEVBQUFDLEVBQUFDLEdBQ0EsSUFBQXl3RSxF
QUNBLFdBR0EsSUFBQWhyQixHQUFBM2xELEVBQUFuRyxFQUFBUixvQkFBQTJHLEdBQUFqRyxNQUVB
LFFBQUFrVCxHQUVBLGdCQUNBMnVCLEVBQUErcEIsSUFBQSxTQUFBQSxFQUFBOXlCLG1CQUNBdEss
RUFBQW85QixFQUNBekIsRUFBQWxrRCxFQUNBeXdFLEVBQUEsS0FFQSxNQUNBLGVBQ0Fsb0QsRUFB
QSxLQUNBMjdCLEVBQUEsS0FDQXVzQixFQUFBLElBQ0EsTUFHQSxvQkFDQUYsR0FBQSxDQUNBLE1B
Q0Esc0JBQ0EsaUJBRUEsTUFEQUEsSUFBQSxFQUNBRCxFQUFBcndFLEVBQUFDLEVBVUEsMEJBQ0Es
R0FBQXd3RSxFQUNBLEtBR0Esa0JBQ0EsZUFDQSxNQUFBSixHQUFBcndFLEVBQUFDLEdBR0EsYUFH
QXlNLGVBQUEsU0FBQWhWLEVBQUEyVSxFQUFBQyxHQUNBLGFBQUFELElBQ0Fxa0UsR0FBQSxJQUtB
dCtFLEdBQUFELFFBQUErc0UsR25LeThtQk0sU0FBUzlzRSxFQUFRRCxFQUFTSCxHb0t4bm5CaEMs
WUE2REEsU0FBQStaLEdBQUFyVSxHQUdBLFVBQUFBLEVBQUFzVSxZQUdBLFFBQUFqQixHQUFBQyxH
QUNBLGlCQUFBQSxHQUFBLFVBQUFBLEdBQUEsV0FBQUEsR0FBQSxhQUFBQSxFQWxFQSxHQUFBcFMs
R0FBQTVHLEVBQUEsR0FFQTYxQixFQUFBNzFCLEVBQUEsSUFDQWlkLEVBQUFqZCxFQUFBLElBQ0E0
SCxFQUFBNUgsRUFBQSxHQUNBMitFLEVBQUEzK0UsRUFBQSxLQUNBNCtFLEVBQUE1K0UsRUFBQSxL
QUNBNk4sRUFBQTdOLEVBQUEsSUFDQTYrRSxFQUFBNytFLEVBQUEsS0FDQTgrRSxFQUFBOStFLEVB
QUEsS0FDQXlrQixFQUFBemtCLEVBQUEsSUFDQSsrRSxFQUFBLytFLEVBQUEsS0FDQWcvRSxFQUFB
aC9FLEVBQUEsS0FDQWkvRSxFQUFBai9FLEVBQUEsS0FDQXdkLEVBQUF4ZCxFQUFBLElBQ0FrL0Us
RUFBQWwvRSxFQUFBLEtBRUFzQyxFQUFBdEMsRUFBQSxHQUNBbTBCLEVBQUFuMEIsRUFBQSxJQXFC
QW10QixHQXBCQW50QixFQUFBLE9BcUJBbS9FLE1BQ0EscXFCQUFBbjdFLFFBQUEsU0FBQW1MLEdB
Q0EsR0FBQWl3RSxHQUFBandFLEVBQUEsR0FBQTJuQixjQUFBM25CLEVBQUFsTyxNQUFBLEdBQ0Fv
K0UsRUFBQSxLQUFBRCxFQUNBRSxFQUFBLE1BQUFGLEVBRUFuMEUsR0FDQTRRLHlCQUNBMjBDLFFB
QUE2dUIsRUFDQTV1QixTQUFBNHVCLEVBQUEsV0FFQTM3RCxjQUFBNDdELEdBRUFueUQsR0FBQWhl
LEdBQUFsRSxFQUNBazBFLEVBQUFHLEdBQUFyMEUsR0FHQSxJQUFBczBFLE1BWUF0UyxHQUNBOS9D
LGFBRUFwUyxjQUFBLFNBQUFDLEVBQUFqTixFQUFBQyxFQUFBQyxHQUNBLEdBQUFILEdBQUFxeEUs
RUFBQW5rRSxFQUNBLEtBQUFsTixFQUNBLFdBRUEsSUFBQTB4RSxFQUNBLFFBQUF4a0UsR0FDQSxl
QUNBLGlCQUNBLHdCQUNBLHdCQUNBLGlCQUNBLG1CQUNBLGVBQ0EsZUFDQSxlQUNBLGlCQUNBLGNB
Q0Esb0JBQ0Esd0JBQ0EsbUJBQ0EsZUFDQSxjQUNBLGlCQUNBLGtCQUNBLG9CQUNBLGVBQ0EsZ0JB
Q0EsaUJBQ0EsaUJBQ0EsZ0JBQ0EsaUJBQ0Esb0JBQ0Esc0JBQ0EsaUJBR0F3a0UsRUFBQTN4RSxD
QUNBLE1BQ0EsbUJBSUEsT0FBQXNtQixFQUFBbm1CLEdBQ0EsV0FHQSxrQkFDQSxlQUNBd3hFLEVB
QUFWLENBQ0EsTUFDQSxlQUNBLGVBQ0FVLEVBQUFYLENBQ0EsTUFDQSxnQkFHQSxPQUFBN3dFLEVB
QUFxWCxPQUNBLFdBR0Esc0JBQ0EsbUJBQ0EsbUJBQ0EsaUJBR0Esa0JBQ0EsbUJBQ0EscUJBQ0Ft
NkQsRUFBQS82RCxDQUNBLE1BQ0EsZUFDQSxpQkFDQSxtQkFDQSxrQkFDQSxtQkFDQSxrQkFDQSxt
QkFDQSxjQUNBKzZELEVBQUFULENBQ0EsTUFDQSxzQkFDQSxrQkFDQSxtQkFDQSxvQkFDQVMsRUFB
QVIsQ0FDQSxNQUNBLHVCQUNBLDRCQUNBLHdCQUNBUSxFQUFBYixDQUNBLE1BQ0Esd0JBQ0FhLEVB
QUFQLENBQ0EsTUFDQSxpQkFDQU8sRUFBQWhpRSxDQUNBLE1BQ0EsZ0JBQ0FnaUUsRUFBQU4sQ0FD
QSxNQUNBLGVBQ0EsYUFDQSxlQUNBTSxFQUFBWixFQUdBWSxFQUFBLE9BQUE1NEUsRUFBQSxLQUFB
b1UsRUFDQSxJQUFBN0wsR0FBQXF3RSxFQUFBNTFFLFVBQUFrRSxFQUFBQyxFQUFBQyxFQUFBQyxF
QUVBLE9BREFnUCxHQUFBUCw2QkFBQXZOLEdBQ0FBLEdBR0F1TCxlQUFBLFNBQUFoVixFQUFBMlUs
RUFBQUMsR0FNQSxlQUFBRCxJQUFBdEIsRUFBQXJULEVBQUFnOEQsTUFBQSxDQUNBLEdBQUE3OEQs
R0FBQWtWLEVBQUFyVSxHQUNBWCxFQUFBNkMsRUFBQVIsb0JBQUExQixFQUNBNjVFLEdBQUExNkUs
S0FDQTA2RSxFQUFBMTZFLEdBQUFneEIsRUFBQUMsT0FBQS93QixFQUFBLFFBQUF6QyxNQUtBdVks
bUJBQUEsU0FBQW5WLEVBQUEyVSxHQUNBLGVBQUFBLElBQUF0QixFQUFBclQsRUFBQWc4RCxNQUFB
LENBQ0EsR0FBQTc4RCxHQUFBa1YsRUFBQXJVLEVBQ0E2NUUsR0FBQTE2RSxHQUFBc1ksZUFDQW9p
RSxHQUFBMTZFLEtBS0F6RSxHQUFBRCxRQUFBOHNFLEdwS3lvbkJNLFNBQVM3c0UsRUFBUUQsRUFB
U0gsR3FLLzFuQmhDLFlBcUJBLFNBQUEyK0UsR0FBQTd3RSxFQUFBMlAsRUFBQXpQLEVBQUFDLEdB
Q0EsTUFBQUosR0FBQXROLEtBQUFlLEtBQUF3TSxFQUFBMlAsRUFBQXpQLEVBQUFDLEdBcEJBLEdB
QUFKLEdBQUE3TixFQUFBLElBT0F5L0UsR0FDQUMsY0FBQSxLQUNBQyxZQUFBLEtBQ0FDLGNBQUEs
S0FhQS94RSxHQUFBK0IsYUFBQSt1RSxFQUFBYyxHQUVBci9FLEVBQUFELFFBQUF3K0UsR3JLKzJu
Qk0sU0FBU3YrRSxFQUFRRCxFQUFTSCxHc0sxNG5CaEMsWUFvQkEsU0FBQTQrRSxHQUFBOXdFLEVB
QUEyUCxFQUFBelAsRUFBQUMsR0FDQSxNQUFBSixHQUFBdE4sS0FBQWUsS0FBQXdNLEVBQUEyUCxF
QUFBelAsRUFBQUMsR0FuQkEsR0FBQUosR0FBQTdOLEVBQUEsSUFNQTYvRSxHQUNBQyxjQUFBLFNB
QUEzd0UsR0FDQSx1QkFBQUEsS0FBQTJ3RSxjQUFBaDRFLE9BQUFnNEUsZUFjQWp5RSxHQUFBK0Is
YUFBQWd2RSxFQUFBaUIsR0FFQXovRSxFQUFBRCxRQUFBeStFLEd0SzA1bkJNLFNBQVN4K0UsRUFB
UUQsRUFBU0gsR3VLcDduQmhDLFlBa0JBLFNBQUE0dkQsR0FBQTloRCxFQUFBMlAsRUFBQXpQLEVB
QUFDLEdBQ0EsTUFBQUosR0FBQXROLEtBQUFlLEtBQUF3TSxFQUFBMlAsRUFBQXpQLEVBQUFDLEdB
akJBLEdBQUFKLEdBQUE3TixFQUFBLElBTUErL0UsR0FDQS8zRCxLQUFBLEtBYUFuYSxHQUFBK0Is
YUFBQWdnRCxFQUFBbXdCLEdBRUEzL0UsRUFBQUQsUUFBQXl2RCxHdktvOG5CTSxTQUFTeHZELEVB
QVFELEVBQVNILEd3SzU5bkJoQyxZQWtCQSxTQUFBKytFLEdBQUFqeEUsRUFBQTJQLEVBQUF6UCxF
QUFBQyxHQUNBLE1BQUF3VyxHQUFBbGtCLEtBQUFlLEtBQUF3TSxFQUFBMlAsRUFBQXpQLEVBQUFD
LEdBakJBLEdBQUF3VyxHQUFBemtCLEVBQUEsSUFNQWdnRixHQUNBQyxhQUFBLEtBYUF4N0QsR0FB
QTdVLGFBQUFtdkUsRUFBQWlCLEdBRUE1L0UsRUFBQUQsUUFBQTQrRSxHeEs0K25CTSxTQUFTMytF
LEVBQVFELEVBQVNILEd5S3Bnb0JoQyxZQWtCQSxTQUFBNitFLEdBQUEvd0UsRUFBQTJQLEVBQUF6
UCxFQUFBQyxHQUNBLE1BQUF1UCxHQUFBamQsS0FBQWUsS0FBQXdNLEVBQUEyUCxFQUFBelAsRUFB
QUMsR0FqQkEsR0FBQXVQLEdBQUF4ZCxFQUFBLElBTUFrZ0YsR0FDQTM2RCxjQUFBLEtBYUEvSCxH
QUFBNU4sYUFBQWl2RSxFQUFBcUIsR0FFQTkvRSxFQUFBRCxRQUFBMCtFLEd6S29ob0JNLFNBQVN6
K0UsRUFBUUQsRUFBU0gsRzBLNWlvQmhDLFlBbUJBLFNBQUFzd0QsR0FBQXhpRCxFQUFBMlAsRUFB
QXpQLEVBQUFDLEdBQ0EsTUFBQUosR0FBQXROLEtBQUFlLEtBQUF3TSxFQUFBMlAsRUFBQXpQLEVB
QUFDLEdBbEJBLEdBQUFKLEdBQUE3TixFQUFBLElBT0FtZ0YsR0FDQW40RCxLQUFBLEtBYUFuYSxH
QUFBK0IsYUFBQTBnRCxFQUFBNnZCLEdBRUEvL0UsRUFBQUQsUUFBQW13RCxHMUs0am9CTSxTQUFT
bHdELEVBQVFELEVBQVNILEcyS3Jsb0JoQyxZQWtFQSxTQUFBOCtFLEdBQUFoeEUsRUFBQTJQLEVB
QUF6UCxFQUFBQyxHQUNBLE1BQUF1UCxHQUFBamQsS0FBQWUsS0FBQXdNLEVBQUEyUCxFQUFBelAs
RUFBQUMsR0FqRUEsR0FBQXVQLEdBQUF4ZCxFQUFBLElBRUFtMEIsRUFBQW4wQixFQUFBLElBQ0Fv
Z0YsRUFBQXBnRixFQUFBLEtBQ0Ewa0IsRUFBQTFrQixFQUFBLElBTUFxZ0YsR0FDQXg3RSxJQUFB
dTdFLEVBQ0FoNEIsU0FBQSxLQUNBcGpDLFFBQUEsS0FDQUMsU0FBQSxLQUNBQyxPQUFBLEtBQ0FD
LFFBQUEsS0FDQW03RCxPQUFBLEtBQ0FDLE9BQUEsS0FDQW43RCxpQkFBQVYsRUFFQTBQLFNBQUEs
U0FBQWpsQixHQU1BLG1CQUFBQSxFQUFBbEUsS0FDQWtwQixFQUFBaGxCLEdBRUEsR0FFQWtsQixR
QUFBLFNBQUFsbEIsR0FRQSxrQkFBQUEsRUFBQWxFLE1BQUEsVUFBQWtFLEVBQUFsRSxLQUNBa0Us
RUFBQWtsQixRQUVBLEdBRUE2ZixNQUFBLFNBQUEva0MsR0FHQSxtQkFBQUEsRUFBQWxFLEtBQ0Fr
cEIsRUFBQWhsQixHQUVBLFlBQUFBLEVBQUFsRSxNQUFBLFVBQUFrRSxFQUFBbEUsS0FDQWtFLEVB
QUFrbEIsUUFFQSxHQWNBN1csR0FBQTVOLGFBQUFrdkUsRUFBQXVCLEdBRUFqZ0YsRUFBQUQsUUFB
QTIrRSxHM0txbW9CTSxTQUFTMStFLEVBQVFELEVBQVNILEc0Szdxb0JoQyxZQTJCQSxTQUFBZy9F
LEdBQUFseEUsRUFBQTJQLEVBQUF6UCxFQUFBQyxHQUNBLE1BQUF1UCxHQUFBamQsS0FBQWUsS0FB
QXdNLEVBQUEyUCxFQUFBelAsRUFBQUMsR0ExQkEsR0FBQXVQLEdBQUF4ZCxFQUFBLElBRUEwa0Is
RUFBQTFrQixFQUFBLElBTUF3Z0YsR0FDQUMsUUFBQSxLQUNBQyxjQUFBLEtBQ0FDLGVBQUEsS0FD
QXo3RCxPQUFBLEtBQ0FDLFFBQUEsS0FDQUgsUUFBQSxLQUNBQyxTQUFBLEtBQ0FHLGlCQUFBVixF
QWFBbEgsR0FBQTVOLGFBQUFvdkUsRUFBQXdCLEdBRUFwZ0YsRUFBQUQsUUFBQTYrRSxHNUs2cm9C
TSxTQUFTNStFLEVBQVFELEVBQVNILEc2Szl0b0JoQyxZQXFCQSxTQUFBaS9FLEdBQUFueEUsRUFB
QTJQLEVBQUF6UCxFQUFBQyxHQUNBLE1BQUFKLEdBQUF0TixLQUFBZSxLQUFBd00sRUFBQTJQLEVB
QUF6UCxFQUFBQyxHQXBCQSxHQUFBSixHQUFBN04sRUFBQSxJQU9BNGdGLEdBQ0FodEUsYUFBQSxL
QUNBK3JFLFlBQUEsS0FDQUMsY0FBQSxLQWFBL3hFLEdBQUErQixhQUFBcXZFLEVBQUEyQixHQUVB
eGdGLEVBQUFELFFBQUE4K0UsRzdLOHVvQk0sU0FBUzcrRSxFQUFRRCxFQUFTSCxHOEt6d29CaEMs
WUFpQ0EsU0FBQWsvRSxHQUFBcHhFLEVBQUEyUCxFQUFBelAsRUFBQUMsR0FDQSxNQUFBd1csR0FB
QWxrQixLQUFBZSxLQUFBd00sRUFBQTJQLEVBQUF6UCxFQUFBQyxHQWhDQSxHQUFBd1csR0FBQXpr
QixFQUFBLElBTUE2Z0YsR0FDQUMsT0FBQSxTQUFBM3hFLEdBQ0EsZ0JBQUFBLEtBQUEyeEUsT0FD
QSxlQUFBM3hFLE1BQUE0eEUsWUFBQSxHQUVBQyxPQUFBLFNBQUE3eEUsR0FDQSxnQkFBQUEsS0FB
QTZ4RSxPQUNBLGVBQUE3eEUsTUFBQTh4RSxZQUNBLGNBQUE5eEUsTUFBQSt4RSxXQUFBLEdBRUFD
LE9BQUEsS0FNQUMsVUFBQSxLQWFBMzhELEdBQUE3VSxhQUFBc3ZFLEVBQUEyQixHQUVBemdGLEVB
QUFELFFBQUErK0UsRzlLeXhvQk0sU0FBUzkrRSxFQUFRRCxHK0svem9CdkIsWUFTQSxTQUFBZ3VF
LEdBQUFubUQsR0FNQSxJQUxBLEdBQUE3bUIsR0FBQSxFQUNBQyxFQUFBLEVBQ0FULEVBQUEsRUFD
QTBnRixFQUFBcjVELEVBQUFwbEIsT0FDQXBDLEVBQUE2Z0YsS0FDQTFnRixFQUFBSCxHQUFBLENB
RUEsSUFEQSxHQUFBb0QsR0FBQTZELEtBQUEyNkIsSUFBQXpoQyxFQUFBLEtBQUFILEdBQ1VHLEVB
QUFpRCxFQUFPakQsR0FBQSxFQUNqQlMsSUFBQUQsR0FBQTZtQixFQUFBWCxXQUFBMW1CLEtBQUFR
LEdBQUE2bUIsRUFBQVgsV0FBQTFtQixFQUFBLEtBQUFRLEdBQUE2bUIsRUFBQVgsV0FBQTFtQixF
QUFBLEtBQUFRLEdBQUE2bUIsRUFBQVgsV0FBQTFtQixFQUFBLEdBRUFRLElBQUFtZ0YsRUFDQWxn
RixHQUFBa2dGLEVBRUEsS0FBUTNnRixFQUFBMGdGLEVBQU8xZ0YsSUFDZlMsR0FBQUQsR0FBQTZt
QixFQUFBWCxXQUFBMW1CLEVBSUEsT0FGQVEsSUFBQW1nRixFQUNBbGdGLEdBQUFrZ0YsRUFDQW5n
RixFQUFBQyxHQUFBLEdBMUJBLEdBQUFrZ0YsR0FBQSxLQTZCQWxoRixHQUFBRCxRQUFBZ3VFLEcv
S2cxb0JNLFNBQVMvdEUsRUFBUUQsRUFBU0gsR2dMaDNvQmhDLFlBa0JBLFNBQUEyd0QsR0FBQXZ1
RCxFQUFBZ1EsRUFBQTlNLEVBQUFpc0QsR0FXQSxHQUFBZ3dCLEdBQUEsTUFBQW52RSxHQUFBLGlC
QUFBQSxJQUFBLEtBQUFBLENBQ0EsSUFBQW12RSxFQUNBLFFBR0EsSUFBQUMsR0FBQXprRCxNQUFB
M3FCLEVBQ0EsSUFBQW0vQyxHQUFBaXdCLEdBQUEsSUFBQXB2RSxHQUFBMmtCLEVBQUFqMkIsZUFB
QXNCLElBQUEyMEIsRUFBQTMwQixHQUNBLFNBQUFnUSxDQUdBLG9CQUFBQSxHQUFBLENBdUJBQSxJ
QUFBNmhDLE9BRUEsTUFBQTdoQyxHQUFBLEtBOURBLEdBQUE0cEIsR0FBQWg4QixFQUFBLElBR0Er
MkIsR0FGQS8yQixFQUFBLEdBRUFnOEIsRUFBQWpGLGlCQThEQTMyQixHQUFBRCxRQUFBd3dELEdo
TGc0b0JNLFNBQVN2d0QsRUFBUUQsRUFBU0gsR2lMbjhvQmhDLFlBb0JBLFNBQUFnaEUsR0FBQXln
QixHQVFBLFNBQUFBLEVBQ0EsV0FFQSxRQUFBQSxFQUFBeDhFLFNBQ0EsTUFBQXc4RSxFQUdBLElB
QUEvN0UsR0FBQXdYLEVBQUFHLElBQUFva0UsRUFDQSxPQUFBLzdFLElBQ0FBLEVBQUE2aEMsRUFB
QTdoQyxHQUNBQSxFQUFBa0MsRUFBQVIsb0JBQUExQixHQUFBLFdBR0Esa0JBQUErN0UsR0FBQTE4
QyxPQUNBbitCLEVBQUEsTUFFQUEsRUFBQSxLQUFBaEcsT0FBQXNELEtBQUF1OUUsS0ExQ0EsR0FB
QTc2RSxHQUFBNUcsRUFBQSxHQUdBNEgsR0FEQTVILEVBQUEsSUFDQUEsRUFBQSxJQUNBa2QsRUFB
QWxkLEVBQUEsSUFFQXVuQyxFQUFBdm5DLEVBQUEsR0FDQUEsR0FBQSxHQUNBQSxFQUFBLEVBc0NB
SSxHQUFBRCxRQUFBNmdFLEdqTG05b0JNLFNBQVM1Z0UsRUFBUUQsRUFBU0gsSWtMN2dwQmhDLFNB
QUEyMkMsR0FXQSxZQXVCQSxTQUFBK3FDLEdBQUE3MkMsRUFBQXhILEVBQUFqaEMsRUFBQTg1RCxH
QUVBLEdBQUFyeEIsR0FBQSxnQkFBQUEsR0FBQSxDQUNBLEdBQUFpZCxHQUFBamQsRUFDQXN4QixF
QUFBbjZELFNBQUE4bEQsRUFBQTFsRCxFQVNBKzVELElBQUEsTUFBQTk0QixJQUNBeWtCLEVBQUEx
bEQsR0FBQWloQyxJQVVBLFFBQUEra0MsR0FBQWppRSxFQUFBKzFELEdBQ0EsU0FBQS8xRCxFQUNB
LE1BQUFBLEVBRUEsSUFBQTJoRCxLQVNBLE9BRkFqYyxHQUFBMWxDLEVBQUF1N0UsRUFBQTU1QixH
QUVBQSxFQTFEQSxHQUNBamMsSUFEQTdyQyxFQUFBLElBQ0FBLEVBQUEsSUFDQUEsR0FBQSxFQUlB
LG9CQUFBMjJDLE1BQUFJLE1BdURBMzJDLEVBQUFELFFBQUFpb0UsSWxMZ2hwQjhCN25FLEtBQUtK
LEVBQVNILEVBQW9CLE1BSTFELFNBQVNJLEVBQVFELEVBQVNILEdtTHBscEJoQyxZQXVFQSxTQUFB
b2dGLEdBQUFweUUsR0FDQSxHQUFBQSxFQUFBbkosSUFBQSxDQU1BLEdBQUFBLEdBQUE4OEUsRUFB
QTN6RSxFQUFBbkosTUFBQW1KLEVBQUFuSixHQUNBLHFCQUFBQSxFQUNBLE1BQUFBLEdBS0EsZ0JB
QUFtSixFQUFBL0MsS0FBQSxDQUNBLEdBQUFtcEIsR0FBQUQsRUFBQW5tQixFQUlBLGFBQUFvbUIs
RUFBQSxRQUFBOXdCLE9BQUFHLGFBQUEyd0IsR0FFQSxrQkFBQXBtQixFQUFBL0MsTUFBQSxVQUFB
K0MsRUFBQS9DLEtBR0EyMkUsRUFBQTV6RSxFQUFBcW1CLFVBQUEsZUFFQSxHQS9GQSxHQUFBRixH
QUFBbjBCLEVBQUEsSUFNQTJoRixHQUNBRSxJQUFBLFNBQ0FDLFNBQUEsSUFDQUMsS0FBQSxZQUNB
QyxHQUFBLFVBQ0FDLE1BQUEsYUFDQUMsS0FBQSxZQUNBQyxJQUFBLFNBQ0FDLElBQUEsS0FDQUMs
S0FBQSxjQUNBQyxLQUFBLGNBQ0FDLE9BQUEsYUFDQUMsZ0JBQUEsZ0JBUUFaLEdBQ0FhLEVBQUEs
WUFDQUMsRUFBQSxNQUNBQyxHQUFBLFFBQ0FDLEdBQUEsUUFDQUMsR0FBQSxRQUNBQyxHQUFBLFVB
Q0FDLEdBQUEsTUFDQUMsR0FBQSxRQUNBQyxHQUFBLFdBQ0FDLEdBQUEsU0FDQUMsR0FBQSxJQUNB
QyxHQUFBLFNBQ0FDLEdBQUEsV0FDQUMsR0FBQSxNQUNBQyxHQUFBLE9BQ0FDLEdBQUEsWUFDQUMs
R0FBQSxVQUNBQyxHQUFBLGFBQ0FDLEdBQUEsWUFDQUMsR0FBQSxTQUNBQyxHQUFBLFNBQ0FDLElB
QUEsS0FDQUMsSUFBQSxLQUNBQyxJQUFBLEtBQ0FDLElBQUEsS0FDQUMsSUFBQSxLQUNBQyxJQUFB
LEtBQ0FDLElBQUEsS0FDQUMsSUFBQSxLQUNBQyxJQUFBLEtBQ0FDLElBQUEsTUFDQUMsSUFBQSxN
QUNBQyxJQUFBLE1BQ0FDLElBQUEsVUFDQUMsSUFBQSxhQUNBQyxJQUFBLE9Bb0NBeGtGLEdBQUFE
LFFBQUFpZ0YsR25Mb21wQk0sU0FBU2hnRixFQUFRRCxHb0x2c3BCdkIsWUFxQkEsU0FBQWlyQyxH
QUFBNmQsR0FDQSxHQUFBOWQsR0FBQThkLElBQUFDLEdBQUFELEVBQUFDLElBQUFELEVBQUFFLEdB
Q0Esc0JBQUFoZSxHQUNBLE1BQUFBLEdBcEJBLEdBQUErZCxHQUFBLGtCQUFBenlCLGdCQUFBNlUs
U0FDQTZkLEVBQUEsWUF1QkEvb0QsR0FBQUQsUUFBQWlyQyxHcEx3dHBCTSxTQUFTaHJDLEVBQVFE
LEdxTHJ2cEJ2QixZQVNBLFNBQUEwa0YsR0FBQTkvRSxHQUNBLEtBQUFBLEtBQUF1QixZQUNBdkIs
SUFBQXVCLFVBRUEsT0FBQXZCLEdBVUEsUUFBQSsvRSxHQUFBLy9FLEdBQ0EsS0FBQUEsR0FBQSxD
QUNBLEdBQUFBLEVBQUE0QixZQUNBLE1BQUE1QixHQUFBNEIsV0FFQTVCLEtBQUFpQyxZQVdBLFFB
QUEyakUsR0FBQW4wQyxFQUFBcTBDLEdBS0EsSUFKQSxHQUFBOWxFLEdBQUE4L0UsRUFBQXJ1RCxH
QUNBdXVELEVBQUEsRUFDQUMsRUFBQSxFQUVBamdGLEdBQUEsQ0FDQSxPQUFBQSxFQUFBRSxTQUFB
LENBR0EsR0FGQSsvRSxFQUFBRCxFQUFBaGdGLEVBQUEwbEMsWUFBQTduQyxPQUVBbWlGLEdBQUFs
YSxHQUFBbWEsR0FBQW5hLEVBQ0EsT0FDQTlsRSxPQUNBOGxFLFNBQUFrYSxFQUlBQSxHQUFBQyxF
QUdBamdGLEVBQUE4L0UsRUFBQUMsRUFBQS8vRSxLQUlBM0UsRUFBQUQsUUFBQXdxRSxHckxxd3BC
TSxTQUFTdnFFLEVBQVFELEVBQVNILEdzTG4wcEJoQyxZQVdBLFNBQUFpbEYsR0FBQUMsRUFBQTkz
RCxHQUNBLEdBQUFvTSxLQVFBLE9BTkFBLEdBQUEwckQsRUFBQWx6RSxlQUFBb2IsRUFBQXBiLGNB
Q0F3bkIsRUFBQSxTQUFBMHJELEdBQUEsU0FBQTkzRCxFQUNBb00sRUFBQSxNQUFBMHJELEdBQUEs
TUFBQTkzRCxFQUNBb00sRUFBQSxLQUFBMHJELEdBQUEsS0FBQTkzRCxFQUNBb00sRUFBQSxJQUFB
MHJELEdBQUEsSUFBQTkzRCxFQUFBcGIsY0FFQXduQixFQW1EQSxRQUFBN2EsR0FBQXlPLEdBQ0Es
R0FBQSszRCxFQUFBLzNELEdBQ0EsTUFBQSszRCxHQUFBLzNELEVBQ0csS0FBQWc0RCxFQUFBaDRE
LEdBQ0gsTUFBQUEsRUFHQSxJQUFBaTRELEdBQUFELEVBQUFoNEQsRUFFQSxRQUFBODNELEtBQUFH
LEdBQ0EsR0FBQUEsRUFBQXZrRixlQUFBb2tGLFFBQUFqMEIsR0FDQSxNQUFBazBCLEdBQUEvM0Qs
R0FBQWk0RCxFQUFBSCxFQUlBLFVBcEZBLEdBQUFqOUUsR0FBQWpJLEVBQUEsR0F3QkFvbEYsR0FD
QUUsYUFBQUwsRUFBQSw0QkFDQU0sbUJBQUFOLEVBQUEsa0NBQ0FPLGVBQUFQLEVBQUEsOEJBQ0FR
LGNBQUFSLEVBQUEsK0JBTUFFLEtBS0FsMEIsSUFLQWhwRCxHQUFBSixZQUNBb3BELEVBQUFscEQs
U0FBQUMsY0FBQSxPQUFBaXBELE1BTUEsa0JBQUFucEQsZ0JBQ0FzOUUsR0FBQUUsYUFBQUksZ0JB
Q0FOLEdBQUFHLG1CQUFBRyxnQkFDQU4sR0FBQUksZUFBQUUsV0FJQSxtQkFBQTU5RSxlQUNBczlF
LEdBQUFLLGNBQUFFLFlBNEJBdmxGLEVBQUFELFFBQUF3ZSxHdExtMXBCTSxTQUFTdmUsRUFBUUQs
RUFBU0gsR3VMNTZwQmhDLFlBVUEsU0FBQWc5QixHQUFBNXFCLEdBQ0EsVUFBQW1WLEVBQUFuVixH
QUFBLElBVEEsR0FBQW1WLEdBQUF2bkIsRUFBQSxHQVlBSSxHQUFBRCxRQUFBNjhCLEd2TDQ3cEJN
LFNBQVM1OEIsRUFBUUQsRUFBU0gsR3dMMThwQmhDLFlBRUEsSUFBQXdqQyxHQUFBeGpDLEVBQUEs
R0FFQUksR0FBQUQsUUFBQXFqQyxFQUFBZ0MsNEJ4TDA5cEJNLFNBQVNwbEMsRUFBUUQsRUFBU0gs
R3lMeCtwQmhDLFlBaUJBLFNBQUFtb0IsR0FBQUMsR0FBc0MsTUFBQUEsTUFBQUMsV0FBQUQsR0FB
dUNFLFFBQUFGLEdBRTdFLFFBQUE2VCxHQUFBQyxFQUFBQyxHQUFpRCxLQUFBRCxZQUFBQyxJQUEw
QyxTQUFBajVCLFdBQUEscUNBRTNGLFFBQUE0b0MsR0FBQWwwQixFQUFBclgsR0FBaUQsSUFBQXFY
LEVBQWEsU0FBQW0wQixnQkFBQSw0REFBeUYsUUFBQXhyQyxHQUFBLGdCQUFBQSxJQUFBLGtCQUFB
QSxHQUFBcVgsRUFBQXJYLEVBRXZKLFFBQUF5ckMsR0FBQUMsRUFBQUMsR0FBMEMscUJBQUFBLElB
QUEsT0FBQUEsRUFBK0QsU0FBQWhwQyxXQUFBLGlFQUFBZ3BDLEdBQXVHRCxHQUFBcHJDLFVBQUFE
LE9BQUE2K0IsT0FBQXlNLEtBQUFyckMsV0FBeUV1TixhQUFlZ0UsTUFBQTY1QixFQUFBdkQsWUFB
QSxFQUFBeUQsVUFBQSxFQUFBeEQsY0FBQSxLQUE2RXVELElBQUF0ckMsT0FBQXdyQyxlQUFBeHJD
LE9BQUF3ckMsZUFBQUgsRUFBQUMsR0FBQUQsRUFBQUksVUFBQUgsR0FZclgsUUFBQWdHLEtBQ0Es
R0FBQTB6QyxHQUVBOTNDLEVBQUFuckMsVUFBQUMsT0FBQSxHQUFBWixTQUFBVyxVQUFBLEdBQUFB
LFVBQUEsV0FDQWtqRixFQUFBbGpGLFVBQUEsR0FFQXVyQyxFQUFBMjNDLEdBQUEvM0MsRUFBQSxl
QUVBcUUsRUFBQSxTQUFBbEQsR0FTQSxRQUFBa0QsR0FBQXI2QixFQUFBOUwsR0FDQWl3QixFQUFB
MzZCLEtBQUE2d0MsRUFFQSxJQUFBakQsR0FBQXBELEVBQUF4cUMsS0FBQTJ0QyxFQUFBMXVDLEtB
QUFlLEtBQUF3VyxFQUFBOUwsR0FHQSxPQURBa2pDLEdBQUFwQixHQUFBaDJCLEVBQUE0MEIsTUFD
QXdDLEVBT0EsTUFyQkFsRCxHQUFBbUcsRUFBQWxELEdBRUFrRCxFQUFBdHhDLFVBQUE0dUMsZ0JB
QUEsV0FDQSxHQUFBckMsRUFFQSxPQUFBQSxNQUFzQkEsRUFBQVUsR0FBQXhzQyxLQUFBd3NDLEdB
QUFWLEVBQUFjLEdBQUEsS0FBQWQsR0FZdEIrRSxFQUFBdHhDLFVBQUFra0MsT0FBQSxXQUNBLE1B
QUFpTSxHQUFBdDZCLFNBQUFHLEtBQUF2VixLQUFBd1csTUFBQTNSLFdBR0Fnc0MsR0FDR25CLEVB
QUFsNkIsVUFnQkgsT0FOQXE3QixHQUFBOWdCLFdBQ0FxYixNQUFBMkIsRUFBQUMsV0FBQXVFLFdB
Q0Exc0MsU0FBQXdzQyxFQUFBcnFCLFFBQUF2USxRQUFBODZCLFlBRUFWLEVBQUEzRCxtQkFBQW8z
QyxLQUEwREEsRUFBQTkzQyxHQUFBTyxFQUFBQyxXQUFBdUUsV0FBQSt5QyxFQUFBMTNDLEdBQUFH
LEVBQUFFLGtCQUFBcTNDLEdBRTFEenpDLEVBaEZBaHlDLEVBQUFrb0IsWUFBQSxFQUNBbG9CLEVB
QUEreEMsZ0JBRUEsSUFBQWxCLEdBQUFoeEMsRUFBQSxJQUVBMHlDLEVBQUExeUMsRUFBQSxJQUVB
MnlDLEVBQUF4cUIsRUFBQXVxQixHQUVBckUsRUFBQXJ1QyxFQUFBLElBRUFzcEIsRUFBQXRwQixF
QUFBLEdBRUFtb0IsR0FBQW1CLEVBc0VBbnBCLEdBQUFtb0IsUUFBQTRwQixLekw4K3BCTSxTQUFT
OXhDLEVBQVFELEVBQVNILEcwTG5rcUJoQyxZQWdDQSxTQUFBbW9CLEdBQUFDLEdBQXNDLE1BQUFB
LE1BQUFDLFdBQUFELEdBQXVDRSxRQUFBRixHQUU3RSxRQUFBa2tCLEdBQUFsa0IsRUFBQWxrQixH
QUE4QyxHQUFBSyxLQUFpQixRQUFBNUQsS0FBQXluQixHQUFxQmxrQixFQUFBK29CLFFBQUF0c0Is
SUFBQSxHQUFvQ0MsT0FBQUMsVUFBQUMsZUFBQVAsS0FBQTZuQixFQUFBem5CLEtBQTZENEQsRUFB
QTVELEdBQUF5bkIsRUFBQXpuQixHQUFzQixPQUFBNEQsR0FtQjNNLFFBQUF3aUIsR0FBQXBlLEVB
QUFtOUUsRUFBQTFqRixHQUNBLE9BQUF6QixHQUFBbWxGLEVBQUFsakYsT0FBQSxFQUFvQ2pDLEdB
QUEsRUFBUUEsSUFBQSxDQUM1QyxHQUFBbW5ELEdBQUFnK0IsRUFBQW5sRixHQUFBZ0ksRUFDQSxJ
QUFBbS9DLEVBQUEsTUFBQUEsR0FHQSxnQkFBQXpYLEVBQUE3UixHQUNBLFNBQUF2OEIsT0FBQSwr
QkFBQTBHLEdBQUEsUUFBQXZHLEVBQUEsdUNBQUFvOEIsRUFBQXFRLHFCQUFBLE1BSUEsUUFBQWsz
QyxHQUFBNWtGLEVBQUFDLEdBQ0EsTUFBQUQsS0FBQUMsRUFLQSxRQUFBNGtGLEtBQ0EsR0FBQTU0
QyxHQUFBenFDLFVBQUFDLE9BQUEsR0FBQVosU0FBQVcsVUFBQSxHQUFBQSxVQUFBLE1BQ0FzakYs
RUFBQTc0QyxFQUFBODRDLFdBQ0FBLEVBQUFsa0YsU0FBQWlrRixFQUFBMXpDLEVBQUFqcUIsUUFB
QTI5RCxFQUNBRSxFQUFBLzRDLEVBQUFnNUMseUJBQ0FBLEVBQUFwa0YsU0FBQW1rRixFQUFBRSxF
QUFBLzlELFFBQUE2OUQsRUFDQUcsRUFBQWw1QyxFQUFBbTVDLDRCQUNBQSxFQUFBdmtGLFNBQUFz
a0YsRUFBQUUsRUFBQWwrRCxRQUFBZytELEVBQ0FHLEVBQUFyNUMsRUFBQXM1QyxvQkFDQUEsRUFB
QTFrRixTQUFBeWtGLEVBQUFFLEVBQUFyK0QsUUFBQW0rRCxFQUNBRyxFQUFBeDVDLEVBQUFILGdC
QUNBQSxFQUFBanJDLFNBQUE0a0YsRUFBQUMsRUFBQXYrRCxRQUFBcytELENBRUEsaUJBQUFFLEVB
QUFDLEVBQUFDLEdBQ0EsR0FBQXQzQyxHQUFBL3NDLFVBQUFDLE9BQUEsR0FBQVosU0FBQVcsVUFB
QSxHQUFBQSxVQUFBLE1BQ0Fza0YsRUFBQXYzQyxFQUFBdzNDLEtBQ0FBLEVBQUFsbEYsU0FBQWls
RixLQUNBRSxFQUFBejNDLEVBQUEwM0MsZUFDQUEsRUFBQXBsRixTQUFBbWxGLEVBQUFwQixFQUFB
b0IsRUFDQUUsRUFBQTMzQyxFQUFBNDNDLGlCQUNBQSxFQUFBdGxGLFNBQUFxbEYsRUFBQUUsRUFB
QWovRCxRQUFBKytELEVBQ0FHLEVBQUE5M0MsRUFBQSszQyxtQkFDQUEsRUFBQXpsRixTQUFBd2xG
LEVBQUFELEVBQUFqL0QsUUFBQWsvRCxFQUNBRSxFQUFBaDRDLEVBQUFpNEMsb0JBQ0FBLEVBQUEz
bEYsU0FBQTBsRixFQUFBSCxFQUFBai9ELFFBQUFvL0QsRUFDQUUsRUFBQXQ3QyxFQUFBb0QsR0FB
QSx3RkFFQW00QyxFQUFBOWdFLEVBQUErL0QsRUFBQVYsRUFBQSxtQkFDQTBCLEVBQUEvZ0UsRUFB
QWdnRSxFQUFBUixFQUFBLHNCQUNBd0IsRUFBQWhoRSxFQUFBaWdFLEVBQUFOLEVBQUEsYUFFQSxP
QUFBUixHQUFBajVDLEVBQUE4QixHQUVBdkIsV0FBQSxVQUdBRixlQUFBLFNBQUFsckMsR0FDQSxp
QkFBQUEsRUFBQSxLQUlBd3JDLHlCQUFBeFAsUUFBQTBvRCxHQUdBZSxzQkFDQUMseUJBQ0FDLGlC
QUNBYixPQUNBRSxpQkFDQUUsbUJBQ0FHLHFCQUNBRSx1QkFFS0MsS0F6SEx6bkYsRUFBQWtvQixZ
QUFBLENBRUEsSUFBQTBtQixHQUFBbnVDLE9BQUF3QyxRQUFBLFNBQUFtQixHQUFtRCxPQUFBNUQs
R0FBQSxFQUFnQkEsRUFBQWdDLFVBQUFDLE9BQXNCakMsSUFBQSxDQUFPLEdBQUE2RCxHQUFBN0Is
VUFBQWhDLEVBQTJCLFFBQUFrRSxLQUFBTCxHQUEwQjVELE9BQUFDLFVBQUFDLGVBQUFQLEtBQUFp
RSxFQUFBSyxLQUF5RE4sRUFBQU0sR0FBQUwsRUFBQUssSUFBaUMsTUFBQU4sR0FFL09wRSxHQUFB
NmxGLGVBRUEsSUFBQTF6QyxHQUFBdHlDLEVBQUEsSUFFQXV5QyxFQUFBcHFCLEVBQUFtcUIsR0FF
QTAxQyxFQUFBaG9GLEVBQUEsS0FFQXVuRixFQUFBcC9ELEVBQUE2L0QsR0FFQUMsRUFBQWpvRixF
QUFBLEtBRUF3bUYsRUFBQXIrRCxFQUFBOC9ELEdBRUFDLEVBQUFsb0YsRUFBQSxLQUVBcW1GLEVB
QUFsK0QsRUFBQSsvRCxHQUVBQyxFQUFBbm9GLEVBQUEsS0FFQTJtRixFQUFBeCtELEVBQUFnZ0Us
R0FFQUMsRUFBQXBvRixFQUFBLEtBRUE2bUYsRUFBQTErRCxFQUFBaWdFLEVBaUdBam9GLEdBQUFt
b0IsUUFBQTA5RCxLMUx5a3FCTSxTQUFTNWxGLEVBQVFELEVBQVNILEcyTHhzcUJoQyxZQVdBLFNB
QUFxb0YsR0FBQXRCLEdBQ0Esd0JBQUFBLElBQUEsRUFBQXVCLEVBQUExMkMsb0JBQUFtMUMsRUFB
QSxzQkFBQS9rRixPQUdBLFFBQUF1bUYsR0FBQXhCLEdBQ0EsTUFBQUEsR0FFRy9rRixRQUZILEVB
QUFzbUYsRUFBQWozQyx3QkFBQSxTQUFBaEIsR0FDQSxPQUFZQSxjQUlaLFFBQUFtNEMsR0FBQXpC
LEdBQ0EsTUFBQUEsSUFBQSxnQkFBQUEsSUFBQSxFQUFBdUIsRUFBQWozQyx3QkFBQSxTQUFBaEIs
R0FDQSxTQUFBbzRDLEVBQUFoZ0Usb0JBQUFzK0QsRUFBQTEyQyxLQUNHcnVDLE9BdEJIN0IsRUFB
QWtvQixZQUFBLEVBQ0Fsb0IsRUFBQWtvRixtQ0FDQWxvRixFQUFBb29GLGtDQUNBcG9GLEVBQUFx
b0YsZ0NBRUEsSUFBQUMsR0FBQXpvRixFQUFBLElBRUFzb0YsRUFBQXRvRixFQUFBLEdBa0JBRyxH
QUFBbW9CLFNBQUErL0QsRUFBQUUsRUFBQUMsSTNMOHNxQk0sU0FBU3BvRixFQUFRRCxFQUFTSCxH
NEx6dXFCaEMsWUFRQSxTQUFBMG9GLEdBQUE1QixHQUNBLHdCQUFBQSxJQUFBLEVBQUF3QixFQUFB
MTJDLG9CQUFBazFDLEVBQUEsbUJBQUE5a0YsT0FHQSxRQUFBMm1GLEdBQUE3QixHQUNBLE1BQUFB
LEdBRUc5a0YsUUFGSCxFQUFBc21GLEVBQUFqM0Msd0JBQUEsV0FDQSxXQVpBbHhDLEVBQUFrb0Is
WUFBQSxFQUNBbG9CLEVBQUF1b0YsZ0NBQ0F2b0YsRUFBQXdvRiw4QkFFQSxJQUFBTCxHQUFBdG9G
LEVBQUEsR0FZQUcsR0FBQW1vQixTQUFBb2dFLEVBQUFDLEk1TCt1cUJNLFNBQVN2b0YsRUFBUUQs
RUFBU0gsRzZMandxQmhDLFlBZUEsU0FBQW1vQixHQUFBQyxHQUFzQyxNQUFBQSxNQUFBQyxXQUFB
RCxHQUF1Q0UsUUFBQUYsR0FFN0UsUUFBQXdnRSxHQUFBQyxFQUFBQyxFQUFBLzJDLEdBQ0EsTUFB
QWhELE1BQW9CZ0QsRUFBQTgyQyxFQUFBQyxHQUdwQixRQUFBQyxHQUFBL0IsR0FDQSxnQkFBQTMy
QyxFQUFBakQsR0FDQSxHQUNBODVDLElBREE5NUMsRUFBQTNhLFlBQ0EyYSxFQUFBODVDLE1BQ0FT
LEVBQUF2NkMsRUFBQXU2QyxvQkFFQXFCLEdBQUEsRUFDQUMsRUFBQSxNQUVBLGlCQUFBSixFQUFB
QyxFQUFBLzJDLEdBQ0EsR0FBQW0zQyxHQUFBbEMsRUFBQTZCLEVBQUFDLEVBQUEvMkM7QUFXQSxN
QVRBaTNDLEdBQ0E5QixHQUFBUyxFQUFBdUIsRUFBQUQsT0FBQUMsSUFFQUYsR0FBQSxFQUNBQyxF
QUFBQyxHQUtBRCxJQUtBLFFBQUFFLEdBQUFuQyxHQUNBLHdCQUFBQSxHQUFBK0IsRUFBQS9CLEdB
QUFobEYsT0FHQSxRQUFBb25GLEdBQUFwQyxHQUNBLE1BQUFBLEdBRUdobEYsT0FGSCxXQUNBLE1B
QUE0bUYsSUFuREF6b0YsRUFBQWtvQixZQUFBLENBRUEsSUFBQTBtQixHQUFBbnVDLE9BQUF3QyxR
QUFBLFNBQUFtQixHQUFtRCxPQUFBNUQsR0FBQSxFQUFnQkEsRUFBQWdDLFVBQUFDLE9BQXNCakMs
SUFBQSxDQUFPLEdBQUE2RCxHQUFBN0IsVUFBQWhDLEVBQTJCLFFBQUFrRSxLQUFBTCxHQUEwQjVE
LE9BQUFDLFVBQUFDLGVBQUFQLEtBQUFpRSxFQUFBSyxLQUF5RE4sRUFBQU0sR0FBQUwsRUFBQUss
SUFBaUMsTUFBQU4sR0FFL09wRSxHQUFBeW9GLG9CQUNBem9GLEVBQUE0b0YscUJBQ0E1b0YsRUFB
QWdwRiwyQkFDQWhwRixFQUFBaXBGLHlCQUVBLElBQUFwM0MsR0FBQWh5QyxFQUFBLEdBRUFtb0Is
R0FBQTZwQixFQTRDQTd4QyxHQUFBbW9CLFNBQUE2Z0UsRUFBQUMsSTdMdXdxQk0sU0FBU2hwRixF
QUFRRCxFQUFTSCxHOExoMHFCaEMsWUFXQSxTQUFBbW9CLEdBQUFDLEdBQXNDLE1BQUFBLE1BQUFD
LFdBQUFELEdBQXVDRSxRQUFBRixHQUU3RSxRQUFBa2tCLEdBQUFsa0IsRUFBQWxrQixHQUE4QyxH
QUFBSyxLQUFpQixRQUFBNUQsS0FBQXluQixHQUFxQmxrQixFQUFBK29CLFFBQUF0c0IsSUFBQSxH
QUFvQ0MsT0FBQUMsVUFBQUMsZUFBQVAsS0FBQTZuQixFQUFBem5CLEtBQTZENEQsRUFBQTVELEdB
QUF5bkIsRUFBQXpuQixHQUFzQixPQUFBNEQsR0FFM00sUUFBQThrRixHQUFBdkMsRUFBQUMsRUFB
QUMsRUFBQTMyQyxHQUNBLGdCQUFBbEIsRUFBQTRDLEdBQ0EsTUFBQWkxQyxHQUFBRixFQUFBMzND
LEVBQUE0QyxHQUFBZzFDLEVBQUExMkMsRUFBQTBCLE9BSUEsUUFBQXUzQyxHQUFBeEMsRUFBQUMs
RUFBQUMsRUFBQTMyQyxFQUFBakQsR0FZQSxRQUFBbThDLEdBQUFDLEVBQUFDLEdBT0EsTUFOQXQ2
QyxHQUFBcTZDLEVBQ0F6M0MsRUFBQTAzQyxFQUNBWixFQUFBL0IsRUFBQTMzQyxFQUFBNEMsR0FD
QSsyQyxFQUFBL0IsRUFBQTEyQyxFQUFBMEIsR0FDQWszQyxFQUFBakMsRUFBQTZCLEVBQUFDLEVB
QUEvMkMsR0FDQTIzQyxHQUFBLEVBQ0FULEVBR0EsUUFBQVUsS0FNQSxNQUxBZCxHQUFBL0IsRUFB
QTMzQyxFQUFBNEMsR0FFQWcxQyxFQUFBdDFDLG9CQUFBcTNDLEVBQUEvQixFQUFBMTJDLEVBQUEw
QixJQUVBazNDLEVBQUFqQyxFQUFBNkIsRUFBQUMsRUFBQS8yQyxHQUlBLFFBQUE2M0MsS0FNQSxN
QUxBOUMsR0FBQXIxQyxvQkFBQW8zQyxFQUFBL0IsRUFBQTMzQyxFQUFBNEMsSUFFQWcxQyxFQUFB
dDFDLG9CQUFBcTNDLEVBQUEvQixFQUFBMTJDLEVBQUEwQixJQUVBazNDLEVBQUFqQyxFQUFBNkIs
RUFBQUMsRUFBQS8yQyxHQUlBLFFBQUE4M0MsS0FDQSxHQUFBQyxHQUFBaEQsRUFBQTMzQyxFQUFB
NEMsR0FDQWc0QyxHQUFBdEMsRUFBQXFDLEVBQUFqQixFQUtBLE9BSkFBLEdBQUFpQixFQUVBQyxJ
QUFBZCxFQUFBakMsRUFBQTZCLEVBQUFDLEVBQUEvMkMsSUFFQWszQyxFQUdBLFFBQUFlLEdBQUFw
cUIsRUFBQXFxQixHQUNBLEdBQUFDLElBQUE1QyxFQUFBMkMsRUFBQWw0QyxHQUNBbzRDLEdBQUEv
QyxFQUFBeG5CLEVBQUF6d0IsRUFJQSxPQUhBQSxHQUFBeXdCLEVBQ0E3dEIsRUFBQWs0QyxFQUVB
QyxHQUFBQyxFQUFBUixJQUNBTyxFQUFBTixJQUNBTyxFQUFBTixJQUNBWixFQTFEQSxHQUFBN0Is
R0FBQWg2QyxFQUFBZzZDLGVBQ0FFLEVBQUFsNkMsRUFBQWs2QyxpQkFDQUcsRUFBQXI2QyxFQUFB
cTZDLG1CQUVBaUMsR0FBQSxFQUNBdjZDLEVBQUEsT0FDQTRDLEVBQUEsT0FDQTgyQyxFQUFBLE9B
Q0FDLEVBQUEsT0FDQUcsRUFBQSxNQW9EQSxpQkFBQXJwQixFQUFBcXFCLEdBQ0EsTUFBQVAsR0FB
QU0sRUFBQXBxQixFQUFBcXFCLEdBQUFWLEVBQUEzcEIsRUFBQXFxQixJQVdBLFFBQUFHLEdBQUEv
NUMsRUFBQVgsR0FDQSxHQUFBbTRDLEdBQUFuNEMsRUFBQW00QyxvQkFDQUMsRUFBQXA0QyxFQUFB
bzRDLHVCQUNBQyxFQUFBcjRDLEVBQUFxNEMsZUFDQXZwRCxFQUFBOE4sRUFBQW9ELEdBQUEsa0VB
RUFvM0MsRUFBQWUsRUFBQXgzQyxFQUFBN1IsR0FDQXVvRCxFQUFBZSxFQUFBejNDLEVBQUE3UixH
QUNBd29ELEVBQUFlLEVBQUExM0MsRUFBQTdSLEdBTUF5TyxFQUFBek8sRUFBQTBvRCxLQUFBb0Ms
RUFBQUQsQ0FFQSxPQUFBcDhDLEdBQUE2NUMsRUFBQUMsRUFBQUMsRUFBQTMyQyxFQUFBN1IsR0E3
R0FyK0IsRUFBQWtvQixZQUFBLEVBQ0Fsb0IsRUFBQWtwRixrQ0FDQWxwRixFQUFBbXBGLGdDQUNB
bnBGLEVBQUFtb0IsUUFBQThoRSxDQUVBLElBQUFDLEdBQUFycUYsRUFBQSxJQUVBbW9CLEdBQUFr
aUUsSTlMNjZxQk0sU0FBU2pxRixFQUFRRCxFQUFTSCxHK0x0N3FCaEMsWUFTQSxTQUFBbW9CLEdB
QUFDLEdBQXNDLE1BQUFBLE1BQUFDLFdBQUFELEdBQXVDRSxRQUFBRixHQUU3RSxRQUFBa2lFLEdB
QUEzOUMsRUFBQWEsRUFBQS9hLEdBQ0EsSUFBQWthLEVBQ0EsU0FBQTFxQyxPQUFBLHdCQUFBdXJD
LEVBQUEsT0FBQS9hLEVBQUEsSUFDRyxxQkFBQSthLEdBQUEsdUJBQUFBLEdBQ0hiLEVBQUE3ckMs
ZUFBQSx1QkFDQSxFQUFBbXlDLEVBQUEzcUIsU0FBQSxvQkFBQWtsQixFQUFBLE9BQUEvYSxFQUFB
LG1EQUtBLFFBQUE4M0QsR0FBQXpELEVBQUFDLEVBQUFDLEVBQUF2MEQsR0FDQTYzRCxFQUFBeEQs
RUFBQSxrQkFBQXIwRCxHQUNBNjNELEVBQUF2RCxFQUFBLHFCQUFBdDBELEdBQ0E2M0QsRUFBQXRE
LEVBQUEsYUFBQXYwRCxHQXRCQXR5QixFQUFBa29CLFlBQUEsRUFDQWxvQixFQUFBbW9CLFFBQUFp
aUUsQ0FFQSxJQUFBamhFLEdBQUF0cEIsRUFBQSxJQUVBaXpDLEVBQUE5cUIsRUFBQW1CLEkvTDg4
cUJNLFNBQVNscEIsRUFBUUQsR2dNcjlxQnZCLFlBSUEsU0FBQTg3QixHQUFBQyxFQUFBQyxHQUFp
RCxLQUFBRCxZQUFBQyxJQUEwQyxTQUFBajVCLFdBQUEscUNBVzNGLFFBQUFzbkYsS0FHQSxHQUFB
dDZFLE1BQ0FrM0IsSUFFQSxRQUNBcWpELE1BQUEsV0FDQXJqRCxFQUFBc2pELEVBQ0F4NkUsRUFB
QXc2RSxHQUVBQyxPQUFBLFdBRUEsT0FEQTFyRCxHQUFBL3VCLEVBQUFrM0IsRUFDQXptQyxFQUFB
LEVBQXFCQSxFQUFBcytCLEVBQUFyOEIsT0FBc0JqQyxJQUMzQ3MrQixFQUFBdCtCLE1BR0EwYyxJ
QUFBLFdBQ0EsTUFBQStwQixJQUVBMEwsVUFBQSxTQUFBeDRCLEdBQ0EsR0FBQXUyQixJQUFBLENB
SUEsT0FIQXpKLEtBQUFsM0IsSUFBQWszQixFQUFBbDNCLEVBQUFqUCxTQUNBbW1DLEVBQUFyZ0Ms
S0FBQXVULEdBRUEsV0FDQXUyQixHQUFBM2dDLElBQUF3NkUsSUFDQTc1QyxHQUFBLEVBRUF6SixJ
QUFBbDNCLElBQUFrM0IsRUFBQWwzQixFQUFBalAsU0FDQW1tQyxFQUFBMzZCLE9BQUEyNkIsRUFB
QW5hLFFBQUEzUyxHQUFBLE9BM0NBbmEsRUFBQWtvQixZQUFBLENBUUEsSUFBQXFpRSxHQUFBLEtB
Q0FFLEdBQ0FELE9BQUEsY0F1Q0FFLEVBQUEsV0FDQSxRQUFBQSxHQUFBbitDLEVBQUE0RCxFQUFB
RSxHQUNBdlUsRUFBQTM2QixLQUFBdXBGLEdBRUF2cEYsS0FBQW9yQyxRQUNBcHJDLEtBQUFndkMs
WUFDQWh2QyxLQUFBa3ZDLGdCQUNBbHZDLEtBQUFtK0MsWUFBQSxLQUNBbitDLEtBQUEyOUIsVUFB
QTJyRCxFQWlDQSxNQTlCQUMsR0FBQWhxRixVQUFBaXFGLGFBQUEsU0FBQXh3RSxHQUVBLE1BREFo
WixNQUFBdXVDLGVBQ0F2dUMsS0FBQTI5QixVQUFBNlQsVUFBQXg0QixJQUdBdXdFLEVBQUFocUYs
VUFBQXF2QyxpQkFBQSxXQUNBNXVDLEtBQUEyOUIsVUFBQTByRCxVQUdBRSxFQUFBaHFGLFVBQUFn
d0MsYUFBQSxXQUNBLE1BQUF6UyxTQUFBOThCLEtBQUFtK0MsY0FHQW9yQyxFQUFBaHFGLFVBQUFn
dkMsYUFBQSxXQUNBdnVDLEtBQUFtK0MsY0FDQW4rQyxLQUFBbStDLFlBQUFuK0MsS0FBQWd2QyxV
QUFBaHZDLEtBQUFndkMsVUFBQXc2QyxhQUFBeHBGLEtBQUFrdkMsZUFBQWx2QyxLQUFBb3JDLE1B
QUFvRyxVQUFBeHhDLEtBQUFrdkMsZUFFQWx2QyxLQUFBMjlCLFVBQUF1ckQsTUFJQUssRUFBQWhx
RixVQUFBb3ZDLGVBQUEsV0FDQTN1QyxLQUFBbStDLGNBQ0FuK0MsS0FBQW0rQyxjQUNBbitDLEtB
QUFtK0MsWUFBQSxLQUNBbitDLEtBQUEyOUIsVUFBQXdyRCxRQUNBbnBGLEtBQUEyOUIsVUFBQTJy
RCxJQUlBQyxJQUdBMXFGLEdBQUFtb0IsUUFBQXVpRSxHaE0yOXFCTSxTQUFTenFGLEVBQVFELEdp
TTFqckJ2QixZQU1BLFNBQUEycEIsR0FBQUMsRUFBQUMsR0FDQSxNQUFBRCxLQUFBQyxFQUNBLElB
QUFELEdBQUEsSUFBQUMsR0FBQSxFQUFBRCxJQUFBLEVBQUFDLEVBRUFELE9BQUFDLE1BSUEsUUFB
QUMsR0FBQUMsRUFBQUMsR0FDQSxHQUFBTCxFQUFBSSxFQUFBQyxHQUFBLFFBRUEsb0JBQUFELElB
QUEsT0FBQUEsR0FBQSxnQkFBQUMsSUFBQSxPQUFBQSxFQUNBLFFBR0EsSUFBQUMsR0FBQXhwQixP
QUFBc0QsS0FBQWdtQixHQUNBRyxFQUFBenBCLE9BQUFzRCxLQUFBaW1CLEVBRUEsSUFBQUMsRUFB
QXhuQixTQUFBeW5CLEVBQUF6bkIsT0FBQSxRQUVBLFFBQUFqQyxHQUFBLEVBQWlCQSxFQUFBeXBC
LEVBQUF4bkIsT0FBa0JqQyxJQUNuQyxJQUFBa3BCLEVBQUF0cEIsS0FBQTRwQixFQUFBQyxFQUFB
enBCLE1BQUFtcEIsRUFBQUksRUFBQUUsRUFBQXpwQixJQUFBd3BCLEVBQUFDLEVBQUF6cEIsS0FD
QSxRQUlBLFVBOUJBUixFQUFBa29CLFlBQUEsRUFDQWxvQixFQUFBbW9CLFFBQUEyQixDQUNBLElB
QUFKLEdBQUFqcEIsT0FBQUMsVUFBQUMsZ0JqTTZsckJNLFNBQVNWLEVBQVFELEVBQVNILEdrTXRs
ckJoQyxtQkFBQXE0QyxXQUlBcjRDLEVBQUEsS0FBQStxRixTQUNBampGLE9BQUF1d0MsUUFBQXI0
QyxFQUFBLE1BSUFBLEVBQUEsS0FJQVksT0FBQXdDLE9BQUFwRCxFQUFBLE1sTXdtckJNLFNBQVNJ
LEVBQVFELEltTWhvckJ2QixTQUFBc25ELEdBQUEsWUFhQSxTQUFBdWpDLEdBQUFDLEdBQ0EzOUUs
RUFBQTFLLFNBQ0Fzb0YsSUFDQUMsR0FBQSxHQUdBNzlFLElBQUExSyxRQUFBcW9GLEVBMEJBLFFB
QUFHLEtBQ0EsS0FBQWprRSxFQUFBN1osRUFBQTFLLFFBQUEsQ0FDQSxHQUFBeW9GLEdBQUFsa0Us
Q0FVQSxJQVBBQSxHQUFBLEVBQ0E3WixFQUFBKzlFLEdBQUE5cUYsT0FNQTRtQixFQUFBbWtFLEVB
QUEsQ0FHQSxPQUFBQyxHQUFBLEVBQUFDLEVBQUFsK0UsRUFBQTFLLE9BQUF1a0IsRUFBZ0Vva0Us
RUFBQUMsRUFBa0JELElBQ2xGaitFLEVBQUFpK0UsR0FBQWorRSxFQUFBaStFLEVBQUFwa0UsRUFF
QTdaLEdBQUExSyxRQUFBdWtCLEVBQ0FBLEVBQUEsR0FHQTdaLEVBQUExSyxPQUFBLEVBQ0F1a0Is
RUFBQSxFQUNBZ2tFLEdBQUEsRUFzRUEsUUFBQU0sR0FBQTFoRixHQUNBLEdBQUEyaEYsR0FBQSxF
QUNBbnNDLEVBQUEsR0FBQW9zQyxHQUFBNWhGLEdBQ0FoRixFQUFBZ0QsU0FBQWdrQixlQUFBLEdB
RUEsT0FEQXd6QixHQUFBcXNDLFFBQUE3bUYsR0FBNEI4bUYsZUFBQSxJQUM1QixXQUNBSCxLQUNB
M21GLEVBQUFpakIsS0FBQTBqRSxHQTRDQSxRQUFBSSxHQUFBL2hGLEdBQ0Esa0JBV0EsUUFBQWdp
RixLQUdBNzFDLGFBQUE4MUMsR0FDQUMsY0FBQUMsR0FDQW5pRixJQVhBLEdBQUFpaUYsR0FBQWwy
QyxXQUFBaTJDLEVBQUEsR0FJQUcsRUFBQUMsWUFBQUosRUFBQSxLQTVMQTNyRixFQUFBRCxRQUFB
NnFGLENBVUEsSUFPQUUsR0FQQTU5RSxLQUdBNjlFLEdBQUEsRUFRQWhrRSxFQUFBLEVBSUFta0Us
RUFBQSxLQTZDQWwrRSxFQUFBLG1CQUFBcTZDLEtBQUE3dkMsS0FDQSt6RSxFQUFBditFLEVBQUFn
L0Usa0JBQUFoL0UsRUFBQWkvRSxzQkFjQW5CLEdBREEsa0JBQUFTLEdBQ0FGLEVBQUFMLEdBOEJB
VSxFQUFBVixHQVFBSixFQUFBRSxlQWdGQUYsRUFBQWMsNkJuTTJvckI4QnZyRixLQUFLSixFQUFV
LFdBQWEsTUFBT21CLFdBSTNELFNBQVNsQixFQUFRRCxFQUFTSCxHQUUvQixZQVdBLFNBQVNzc0Ys
R0FBd0Jsa0UsR0FBTyxHQUFJQSxHQUFPQSxFQUFJQyxXQUFjLE1BQU9ELEVBQWMsSUFBSW1rRSxL
QUFhLElBQVcsTUFBUG5rRSxFQUFlLElBQUssR0FBSXZqQixLQUFPdWpCLEdBQVd4bkIsT0FBT0Ms
VUFBVUMsZUFBZVAsS0FBSzZuQixFQUFLdmpCLEtBQU0wbkYsRUFBTzFuRixHQUFPdWpCLEVBQUl2
akIsR0FBZ0MsT0FBdEIwbkYsR0FBT2prRSxRQUFVRixFQUFZbWtFLEVBVGxRM3JGLE9BQU82bkMs
ZUFBZXRvQyxFQUFTLGNBQzdCaVMsT0FBTyxJQUVUalMsRUFBUXFzRixlQUFpQnJzRixFQUFRc3NG
LFlBQWN0c0YsRUFBUXVzRixhQUFldnNGLEVBQVF3c0YsU0FBV3hzRixFQUFReXNGLFdBQWF6c0Ys
RUFBUTBzRixRQUFVN3FGLE1vTTcyckJqSSxJQUFBOHFGLEdBQUE5c0YsRUFBQSxJQUFZK3NGLEVw
TWkzckJDVCxFQUF3QlEsRW9NLzJyQnhCRCxXQUFVLFNBQUFwOEUsR0FBQSxPQUFXeEYsS0FBTTho
RixFQUFNLzNDLFNBQVV2a0MsU0FDM0NtOEUsYUFBYSxTQUFBdnNGLEdBQUEsT0FBUzRLLEtBQU04
aEYsRUFBTTkzQyxZQUFhNTBDLE9BQy9Dc3NGLFdBQVcsU0FBQ3RzRixFQUFJb1EsR0FBTCxPQUFp
QnhGLEtBQU04aEYsRUFBTTczQyxVQUFXNzBDLEtBQUlvUSxTQUN2RGk4RSxlQUFlLFNBQUFyc0Ys
R0FBQSxPQUFTNEssS0FBTThoRixFQUFNNTNDLGNBQWU5MEMsT0FDbkRvc0YsY0FBYyxrQkFBU3ho
RixLQUFNOGhGLEVBQU0zM0MsZUFDbkNvM0MsaUJBQWlCLGtCQUFTdmhGLEtBQU04aEYsRUFBTTEz
QyxtQnBNbTRyQjdDLFNBQVNqMUMsRUFBUUQsRUFBU0gsR0FFL0IsWUFvQkEsU0FBU21vQixHQUF1
QkMsR0FBTyxNQUFPQSxJQUFPQSxFQUFJQyxXQUFhRCxHQUFRRSxRQUFTRixHQUV2RixRQUFTNlQs
R0FBZ0JDLEVBQVVDLEdBQWUsS0FBTUQsWUFBb0JDLElBQWdCLEtBQU0sSUFBSWo1QixXQUFVLHFD
QUVoSCxRQUFTNG9DLEdBQTJCbDBCLEVBQU1yWCxHQUFRLElBQUtxWCxFQUFRLEtBQU0sSUFBSW0w
QixnQkFBZSw0REFBZ0UsUUFBT3hyQyxHQUF5QixnQkFBVEEsSUFBcUMsa0JBQVRBLEdBQThCcVgs
RUFBUHJYLEVBRWxPLFFBQVN5ckMsR0FBVUMsRUFBVUMsR0FBYyxHQUEwQixrQkFBZkEsSUFBNEMs
T0FBZkEsRUFBdUIsS0FBTSxJQUFJaHBDLFdBQVUsaUVBQW9FZ3BDLEdBQWVELEdBQVNwckMsVUFB
WUQsT0FBTzYrQixPQUFPeU0sR0FBY0EsRUFBV3JyQyxXQUFhdU4sYUFBZWdFLE1BQU82NUIsRUFB
VXZELFlBQVksRUFBT3lELFVBQVUsRUFBTXhELGNBQWMsS0FBZXVELElBQVl0ckMsT0FBT3dyQyxl
QUFpQnhyQyxPQUFPd3JDLGVBQWVILEVBQVVDLEdBQWNELEVBQVNJLFVBQVlILEdBRWplLFFBQVM4
Z0QsR0FBZ0I1a0UsRUFBS3ZqQixFQUFLdU4sR0FBaUssTUFBcEp2TixLQUFPdWpCLEdBQU94bkIs
T0FBTzZuQyxlQUFlcmdCLEVBQUt2akIsR0FBT3VOLE1BQU9BLEVBQU9zMkIsWUFBWSxFQUFNQyxj
QUFjLEVBQU13RCxVQUFVLElBQWtCL2pCLEVBQUl2akIsR0FBT3VOLEVBQWdCZ1csRUExQjNNeG5C
LE9BQU82bkMsZUFBZXRvQyxFQUFTLGNBQzdCaVMsT0FBTyxHQUdULElBRUk2NkUsR0FGQTk1QyxF
QUFlLFdBQWMsUUFBU0MsR0FBaUI3dUMsRUFBUXVULEdBQVMsSUFBSyxHQUFJblgsR0FBSSxFQUFH
QSxFQUFJbVgsRUFBTWxWLE9BQVFqQyxJQUFLLENBQUUsR0FBSTJuQyxHQUFheHdCLEVBQU1uWCxF
QUFJMm5DLEdBQVdJLFdBQWFKLEVBQVdJLGFBQWMsRUFBT0osRUFBV0ssY0FBZSxFQUFVLFNBQVdM
LEtBQVlBLEVBQVc2RCxVQUFXLEdBQU12ckMsT0FBTzZuQyxlQUFlbGtDLEVBQVErakMsRUFBV3pq
QyxJQUFLeWpDLElBQWlCLE1BQU8sVUFBVW5NLEVBQWFrWCxFQUFZQyxHQUFpSixNQUE5SEQsSUFB
WUQsRUFBaUJqWCxFQUFZdDdCLFVBQVd3eUMsR0FBaUJDLEdBQWFGLEVBQWlCalgsRUFBYW1YLEdB
QXFCblgsTXFNbDVyQmppQjZVLEVBQUFoeEMsRUFBQSxJck13NXJCS3V6QyxFQUFVcHJCLEVBQXVC
Nm9CLEdxTXY1ckJ0Q3dDLEVBQUF4ekMsRUFBQSxJck0yNXJCS3l6QyxFQUFldHJCLEVBQXVCcXJC
LEdxTTE1ckIzQzA1QyxFQUFBbHRGLEVBQUEsSUFFTW10Rix1QkFDUSxPQURSSCxFQUFBQyxFQUFB
QyxFQUFBMTNDLFlBRVcsVUFGWHczQyxFQUFBQyxFQUFBQyxFQUFBMzNDLGVBR2MsYUFIZDAzQyxH
QU1lRyxFck1rNnJCUCxTQUFVbitDLEdBR3JCLFFBQVNtK0MsS0FHUCxNQUZBbnhELEdBQWdCMzZC
LEtBQU04ckYsR0FFZnRoRCxFQUEyQnhxQyxNQUFPOHJGLEVBQU8vZ0QsV0FBYXpyQyxPQUFPbXpD
LGVBQWVxNUMsSUFBUy9yRixNQUFNQyxLQUFNcUIsWUFtRjFHLE1BeEZBcXBDLEdBQVVvaEQsRUFB
UW4rQyxHQVFsQmtFLEVBQWFpNkMsSUFDWHZvRixJQUFLLGtCQUNMdU4sTUFBTyxXcU1wNnJCUSxH
QUNSaTdFLEdBQWdCL3JGLEtBQUt3VyxNQUFyQnUxRSxZQUNGQyxFQUEyQixJQUFoQkQsRUFBb0Is
T0FBUyxPQUU5QyxPQUNFOTVDLEdBQUFqckIsUUFBQXRnQixjQUFBLFFBQU11c0MsVUFBVSxjQUNk
aEIsRUFBQWpyQixRQUFBdGdCLGNBQUEsY0FBU3FsRixHQUFlLE1BRDFCLElBQzBDQyxFQUQxQyxZ
ck1rN3JCRHpvRixJQUFLLG1CQUNMdU4sTUFBTyxTcU03NnJCT2dpRSxHQUNmLEdBQU12OUIsR0FB
UXMyQyxFQUFjL1ksR0FETG1aLEVBRW9CanNGLEtBQUt3VyxNQUFoQzAxRSxFQUZPRCxFQUVmblos
T0FBd0JxWixFQUZURixFQUVTRSxNQUVoQyxPQUNFbDZDLEdBQUFqckIsUUFBQXRnQixjQUFBLEtB
QUd1c0MsV0FBVyxFQUFBZCxFQUFBbnJCLFVBQWFtVyxTQUFVMjFDLElBQVdvWixJQUM3Q3Y4QixP
QUFTK2hCLE9BQVEsV0FDakIwYSxRQUFTLGlCQUFNRCxHQUFPclosS0FDdEJ2OUIsTXJNdTdyQkpo
eUMsSUFBSyxvQkFDTHVOLE1BQU8sV3FNbjdyQlUsR0FBQXU3RSxHQUMyQnJzRixLQUFLd1csTUFB
MUM4MUUsRUFEVUQsRUFDVkMsZUFBZ0JDLEVBRE5GLEVBQ01FLGdCQUN4QixJQUFJRCxFQUFpQixF
QUNuQixNQUNFcjZDLEdBQUFqckIsUUFBQXRnQixjQUFBLFVBQVF1c0MsVUFBVSxrQkFDVm01QyxR
QUFTRyxHQURqQixzQnJNODdyQkhocEYsSUFBSyxTQUNMdU4sTUFBTyxXcU12N3JCRCxHQUFBMDdF
LEdBQUF4c0YsSUFDUCxPQUNFaXlDLEdBQUFqckIsUUFBQXRnQixjQUFBLFVBQVF1c0MsVUFBVSxV
QUNmanpDLEtBQUt5c0Ysa0JBQ054NkMsRUFBQWpyQixRQUFBdGdCLGNBQUEsTUFBSXVzQyxVQUFV
LFlBQ1gyNEMsRUFBQTUzQyxTQUFBNDNDLEVBQUExM0MsWUFBQTAzQyxFQUFBMzNDLGdCQUEwQzV4
QyxJQUFJLFNBQUF5d0UsR0FBQSxNQUM3QzdnQyxHQUFBanJCLFFBQUF0Z0IsY0FBQSxNQUFJbkQs
SUFBS3V2RSxHQUNOMFosRUFBS0UsaUJBQWlCNVosT0FJNUI5eUUsS0FBSzJzRix5QnJNbThyQkpi
LEdBQ1BwOEMsRUFBT2w2QixVcU01L3JCV3MyRSxHQUNaLzdELFdBQ0x1OEQsZUFBZ0I1OEMsRUFB
QS81QixVQUFVa3pCLE9BQU8wSSxXQUNqQ3c2QyxZQUFhcjhDLEVBQUEvNUIsVUFBVWt6QixPQUFP
MEksV0FDOUJ1aEMsT0FBUXBqQyxFQUFBLzVCLFVBQVU0UCxPQUFPZ3NCLFdBQ3pCZzdDLGlCQUFr
Qjc4QyxFQUFBLzVCLFVBQVV1YSxLQUFLcWhCLFdBQ2pDNDZDLE9BQVF6OEMsRUFBQS81QixVQUFV
dWEsS0FBS3FoQixZck0rL3JCMUIxeUMsRUFBUW1vQixRcU1yZ3NCWThrRSxHck15Z3NCZixTQUFT
aHRGLEVBQVFELEVBQVNILEdBRS9CLFlBZ0JBLFNBQVNtb0IsR0FBdUJDLEdBQU8sTUFBT0EsSUFB
T0EsRUFBSUMsV0FBYUQsR0FBUUUsUUFBU0YsR0FFdkYsUUFBUzZULEdBQWdCQyxFQUFVQyxHQUFl
LEtBQU1ELFlBQW9CQyxJQUFnQixLQUFNLElBQUlqNUIsV0FBVSxxQ0FFaEgsUUFBUzRvQyxHQUEy
QmwwQixFQUFNclgsR0FBUSxJQUFLcVgsRUFBUSxLQUFNLElBQUltMEIsZ0JBQWUsNERBQWdFLFFB
QU94ckMsR0FBeUIsZ0JBQVRBLElBQXFDLGtCQUFUQSxHQUE4QnFYLEVBQVByWCxFQUVsTyxRQUFT
eXJDLEdBQVVDLEVBQVVDLEdBQWMsR0FBMEIsa0JBQWZBLElBQTRDLE9BQWZBLEVBQXVCLEtBQU0s
SUFBSWhwQyxXQUFVLGlFQUFvRWdwQyxHQUFlRCxHQUFTcHJDLFVBQVlELE9BQU82K0IsT0FBT3lN
LEdBQWNBLEVBQVdyckMsV0FBYXVOLGFBQWVnRSxNQUFPNjVCLEVBQVV2RCxZQUFZLEVBQU95RCxV
QUFVLEVBQU14RCxjQUFjLEtBQWV1RCxJQUFZdHJDLE9BQU93ckMsZUFBaUJ4ckMsT0FBT3dyQyxl
QUFlSCxFQUFVQyxHQUFjRCxFQUFTSSxVQUFZSCxHQXBCamV0ckMsT0FBTzZuQyxlQUFldG9DLEVB
QVMsY0FDN0JpUyxPQUFPLEdBR1QsSUFBSStnQyxHQUFlLFdBQWMsUUFBU0MsR0FBaUI3dUMsRUFB
UXVULEdBQVMsSUFBSyxHQUFJblgsR0FBSSxFQUFHQSxFQUFJbVgsRUFBTWxWLE9BQVFqQyxJQUFL
LENBQUUsR0FBSTJuQyxHQUFheHdCLEVBQU1uWCxFQUFJMm5DLEdBQVdJLFdBQWFKLEVBQVdJLGFB
QWMsRUFBT0osRUFBV0ssY0FBZSxFQUFVLFNBQVdMLEtBQVlBLEVBQVc2RCxVQUFXLEdBQU12ckMs
T0FBTzZuQyxlQUFlbGtDLEVBQVErakMsRUFBV3pqQyxJQUFLeWpDLElBQWlCLE1BQU8sVUFBVW5N
LEVBQWFrWCxFQUFZQyxHQUFpSixNQUE5SEQsSUFBWUQsRUFBaUJqWCxFQUFZdDdCLFVBQVd3eUMs
R0FBaUJDLEdBQWFGLEVBQWlCalgsRUFBYW1YLEdBQXFCblgsTXNNM2hzQmppQjZVLEVBQUFoeEMs
RUFBQSxJdE0raHNCS3V6QyxFQUFVcHJCLEVBQXVCNm9CLEdzTTloc0J0Q2s5QyxFQUFBbHVGLEVB
QUEsSXRNa2lzQkttdUYsRUFBa0JobUUsRUFBdUIrbEUsR3NNaGlzQnpCRSxFdE0waXNCUCxTQUFV
bi9DLEdBR3JCLFFBQVNtL0MsS0FDUCxHQUFJaGhELEdBRUF1RyxFQUFPekUsRUFBTzBFLENBRWxC
M1gsR0FBZ0IzNkIsS0FBTThzRixFQUV0QixLQUFLLEdBQUl2NkMsR0FBT2x4QyxVQUFVQyxPQUFR
NUIsRUFBT29YLE1BQU15N0IsR0FBT0MsRUFBTyxFQUFHQSxFQUFPRCxFQUFNQyxJQUMzRTl5QyxF
QUFLOHlDLEdBQVFueEMsVUFBVW14QyxFQUd6QixPQUFlSCxHQUFTekUsRUFBUXBELEVBQTJCeHFD
LE1BQU84ckMsRUFBT2doRCxFQUFPL2hELFdBQWF6ckMsT0FBT216QyxlQUFlcTZDLElBQVM3dEYs
S0FBS2MsTUFBTStyQyxHQUFPOXJDLE1BQU1DLE9BQU9QLEtBQWlCa3VDLEVzTW5qc0IvS20vQyxX
QUFhLFNBQUE1OUUsR0FDUyxJQUFoQkEsRUFBSzdOLFFBQ1Bzc0MsRUFBS3AzQixNQUFNKzBFLFFB
QVFwOEUsSXRNaWpzQmJtakMsRUFJSkQsRUFBUTdILEVBQTJCb0QsRUFBTzBFLEdBcUIvQyxNQXRD
QTVILEdBQVVvaUQsRUFBUW4vQyxHQW9CbEJrRSxFQUFhaTdDLElBQ1h2cEYsSUFBSyxTQUNMdU4s
TUFBTyxXc01yanNCUixNQUNFbWhDLEdBQUFqckIsUUFBQXRnQixjQUFBLFVBQVF1c0MsVUFBVSxV
QUNoQmhCLEVBQUFqckIsUUFBQXRnQixjQUFBLG1CQUNBdXJDLEVBQUFqckIsUUFBQXRnQixjQUFB
bW1GLEVBQUE3bEUsU0FBZThyQixTQUFBLEVBQ0FELE9BQVE3eUMsS0FBSytzRixXQUNiMTVDLFlB
QVksZ0N0TWdrc0J6Qnk1QyxHQUNQcDlDLEVBQU9sNkIsVXNNbGxzQldzM0UsR0FDWi84RCxXQUNM
dzdELFFBQVM3N0MsRUFBQS81QixVQUFVdWEsS0FBS3FoQixZdE1xbHNCM0IxeUMsRUFBUW1vQixR
c012bHNCWThsRSxHdE0ybHNCZixTQUFTaHVGLEVBQVFELEVBQVNILEdBRS9CLFlBMEJBLFNBQVNt
b0IsR0FBdUJDLEdBQU8sTUFBT0EsSUFBT0EsRUFBSUMsV0FBYUQsR0FBUUUsUUFBU0YsR0FFdkYs
UUFBUzZULEdBQWdCQyxFQUFVQyxHQUFlLEtBQU1ELFlBQW9CQyxJQUFnQixLQUFNLElBQUlqNUIs
V0FBVSxxQ0FFaEgsUUFBUzRvQyxHQUEyQmwwQixFQUFNclgsR0FBUSxJQUFLcVgsRUFBUSxLQUFN
LElBQUltMEIsZ0JBQWUsNERBQWdFLFFBQU94ckMsR0FBeUIsZ0JBQVRBLElBQXFDLGtCQUFUQSxH
QUE4QnFYLEVBQVByWCxFQUVsTyxRQUFTeXJDLEdBQVVDLEVBQVVDLEdBQWMsR0FBMEIsa0JBQWZB
LElBQTRDLE9BQWZBLEVBQXVCLEtBQU0sSUFBSWhwQyxXQUFVLGlFQUFvRWdwQyxHQUFlRCxHQUFT
cHJDLFVBQVlELE9BQU82K0IsT0FBT3lNLEdBQWNBLEVBQVdyckMsV0FBYXVOLGFBQWVnRSxNQUFP
NjVCLEVBQVV2RCxZQUFZLEVBQU95RCxVQUFVLEVBQU14RCxjQUFjLEtBQWV1RCxJQUFZdHJDLE9B
QU93ckMsZUFBaUJ4ckMsT0FBT3dyQyxlQUFlSCxFQUFVQyxHQUFjRCxFQUFTSSxVQUFZSCxHQUVq
ZSxRQUFTOGdELEdBQWdCNWtFLEVBQUt2akIsRUFBS3VOLEdBQWlLLE1BQXBKdk4sS0FBT3VqQixH
QUFPeG5CLE9BQU82bkMsZUFBZXJnQixFQUFLdmpCLEdBQU91TixNQUFPQSxFQUFPczJCLFlBQVks
RUFBTUMsY0FBYyxFQUFNd0QsVUFBVSxJQUFrQi9qQixFQUFJdmpCLEdBQU91TixFQUFnQmdXLEVB
aEMzTXhuQixPQUFPNm5DLGVBQWV0b0MsRUFBUyxjQUM3QmlTLE9BQU8sR0FHVCxJQUlJazhFLEdB
SkF2L0MsRUFBV251QyxPQUFPd0MsUUFBVSxTQUFVbUIsR0FBVSxJQUFLLEdBQUk1RCxHQUFJLEVB
QUdBLEVBQUlnQyxVQUFVQyxPQUFRakMsSUFBSyxDQUFFLEdBQUk2RCxHQUFTN0IsVUFBVWhDLEVB
QUksS0FBSyxHQUFJa0UsS0FBT0wsR0FBYzVELE9BQU9DLFVBQVVDLGVBQWVQLEtBQUtpRSxFQUFR
SyxLQUFRTixFQUFPTSxHQUFPTCxFQUFPSyxJQUFZLE1BQU9OLElBRW5QNHVDLEVBQWUsV0FBYyxR
QUFTQyxHQUFpQjd1QyxFQUFRdVQsR0FBUyxJQUFLLEdBQUluWCxHQUFJLEVBQUdBLEVBQUltWCxF
QUFNbFYsT0FBUWpDLElBQUssQ0FBRSxHQUFJMm5DLEdBQWF4d0IsRUFBTW5YLEVBQUkybkMsR0FB
V0ksV0FBYUosRUFBV0ksYUFBYyxFQUFPSixFQUFXSyxjQUFlLEVBQVUsU0FBV0wsS0FBWUEsRUFB
VzZELFVBQVcsR0FBTXZyQyxPQUFPNm5DLGVBQWVsa0MsRUFBUStqQyxFQUFXempDLElBQUt5akMs
SUFBaUIsTUFBTyxVQUFVbk0sRUFBYWtYLEVBQVlDLEdBQWlKLE1BQTlIRCxJQUFZRCxFQUFpQmpY
LEVBQVl0N0IsVUFBV3d5QyxHQUFpQkMsR0FBYUYsRUFBaUJqWCxFQUFhbVgsR0FBcUJuWCxNdU14
bXNCamlCNlUsRUFBQWh4QyxFQUFBLEl2TThtc0JLdXpDLEVBQVVwckIsRUFBdUI2b0IsR3VNN21z
QnRDdTlDLEVBQUF2dUYsRUFBQSxLdk1pbnNCS3d1RixFQUFhcm1FLEVBQXVCb21FLEd1TWhuc0J6
Q0UsRUFBQXp1RixFQUFBLEt2TW9uc0JLMHVGLEVBQVd2bUUsRUFBdUJzbUUsR3VNbm5zQnZDdkIs
RUFBQWx0RixFQUFBLElBRU0ydUYsdUJBQ1Esa0JBQU0sSUFEZDNCLEVBQUFzQixFQUFBcEIsRUFB
QTEzQyxZQUVXLFNBQUFvNUMsR0FBQSxPQUFTQSxFQUFLQyxZQUZ6QjdCLEVBQUFzQixFQUFBcEIs
RUFBQTMzQyxlQUdjLFNBQUFxNUMsR0FBQSxNQUFRQSxHQUFLQyxZQUgzQlAsR0FNZVEsRXZNaW9z
QkYsU0FBVTcvQyxHQUcxQixRQUFTNi9DLEtBQ1AsR0FBSTFoRCxHQUVBdUcsRUFBT3pFLEVBQU8w
RSxDQUVsQjNYLEdBQWdCMzZCLEtBQU13dEYsRUFFdEIsS0FBSyxHQUFJajdDLEdBQU9seEMsVUFB
VUMsT0FBUTVCLEVBQU9vWCxNQUFNeTdCLEdBQU9DLEVBQU8sRUFBR0EsRUFBT0QsRUFBTUMsSUFD
M0U5eUMsRUFBSzh5QyxHQUFRbnhDLFVBQVVteEMsRUFHekIsT0FBZUgsR0FBU3pFLEVBQVFwRCxF
QUEyQnhxQyxNQUFPOHJDLEVBQU8waEQsRUFBWXppRCxXQUFhenJDLE9BQU9tekMsZUFBZSs2QyxJ
QUFjdnVGLEtBQUtjLE1BQU0rckMsR0FBTzlyQyxNQUFNQyxPQUFPUCxLQUFpQmt1QyxFdU16b3NC
ekxDLE9BQVVpbEMsbUJ2TXlvc0JnT2xsQyxFdU12b3NCMU82L0MscUJBQXVCLFdBQ3JCNy9DLEVB
QUtwM0IsTUFBTWszRSxRQUFReEMsa0J2TXdvc0JmdDlDLEV1TXJvc0JOKy9DLFdBQWEsU0FBQTdh
LEdBQ1hsbEMsRUFBS3lCLFVBQVd5akMsWXZNa29zQlJ4Z0MsRUFJSkQsRUFBUTdILEVBQTJCb0Qs
RUFBTzBFLEdBK0QvQyxNQWhGQTVILEdBQVU4aUQsRUFBYTcvQyxHQW9CdkJrRSxFQUFhMjdDLElB
Q1hqcUYsSUFBSyxrQkFDTHVOLE1BQU8sU3VNeG9zQk13N0UsR0FBZ0IsR0FBQUwsR0FDSGpzRixL
QUFLd1csTUFBeEJvM0UsRUFEc0IzQixFQUN0QjJCLE1BQU9GLEVBRGV6QixFQUNmeUIsT0FDZixJ
QUFJRSxFQUFNdHNGLE9BQVMsRUFDakIsTUFDRTJ3QyxHQUFBanJCLFFBQUF0Z0IsY0FBQSxTQUFP
dXNDLFVBQVUsYUFDVnRwQyxLQUFLLFdBQ0wwbEIsUUFBU2k5RCxJQUFtQnNCLEVBQU10c0YsT0FD
bEM2dEIsU0FBVXUrRCxFQUFRdkMsaUJ2TThvc0I1QjVuRixJQUFLLGVBQ0x1TixNQUFPLFN1TTFv
c0JHdzdFLEdBQWdCLEdBQ25Cc0IsR0FBVTV0RixLQUFLd1csTUFBZm8zRSxNQUNBOWEsRUFBVzl5
RSxLQUFLNnRDLE1BQWhCaWxDLE9BQ0ZpWixFQUFjNkIsRUFBTXRzRixPQUFTZ3JGLENBRW5DLElB
QUlzQixFQUFNdHNGLE9BQ1IsTUFDRTJ3QyxHQUFBanJCLFFBQUF0Z0IsY0FBQTBtRixFQUFBcG1F
LFNBQVFzbEUsZUFBZ0JBLEVBQ2hCUCxZQUFhQSxFQUNialosT0FBUUEsRUFDUnlaLGlCQUFrQnZz
RixLQUFLeXRGLHFCQUFxQngyRSxLQUFLalgsTUFDakRtc0YsT0FBUW5zRixLQUFLMnRGLFdBQVcx
MkUsS0FBS2pYLFd2TThvc0J4Q3VELElBQUssU0FDTHVOLE1BQU8sV3VNMW9zQkQsR0FBQXU3RSxH
QUNvQnJzRixLQUFLd1csTUFBeEJvM0UsRUFERHZCLEVBQ0N1QixNQUFPRixFQURSckIsRUFDUXFC
LFFBQ1A1YSxFQUFXOXlFLEtBQUs2dEMsTUFBaEJpbEMsT0FFRithLEVBQWdCRCxFQUFNOWEsT0FB
T3VhLEVBQWF2YSxJQUMxQ3daLEVBQWlCc0IsRUFBTTV3QyxPQUFPLFNBQUMzbkMsRUFBT2k0RSxH
QUFSLE1BQ2xDQSxHQUFLQyxVQUFZbDRFLEVBQVEsRUFBSUEsR0FDN0IsRUFHRixPQUNFNDhCLEdB
QUFqckIsUUFBQXRnQixjQUFBLFdBQVN1c0MsVUFBVSxRQUNoQmp6QyxLQUFLOHRGLGdCQUFnQnhC
LEdBQ3RCcjZDLEVBQUFqckIsUUFBQXRnQixjQUFBLE1BQUl1c0MsVUFBVSxhQUNYNDZDLEVBQWN4
ckYsSUFBSSxTQUFBaXJGLEdBQUEsTUFDakJyN0MsR0FBQWpyQixRQUFBdGdCLGNBQUF3bUYsRUFB
QWxtRSxRQUFBeW1CLEdBQVVscUMsSUFBSytwRixFQUFLdnVGLEdBQUl1dUYsS0FBTUEsR0FBVUks
T0FHM0MxdEYsS0FBSyt0RixhQUFhekIsUXZNb3BzQmpCa0IsR0FDUDk5QyxFQUFPbDZCLFV1TW50
c0JXZzRFLEdBQ1p6OUQsV0FDTDY5RCxNQUFPbCtDLEVBQUEvNUIsVUFBVXkvQixNQUFNN0QsV0FD
dkJtOEMsUUFBU2grQyxFQUFBLzVCLFVBQVU2QixPQUFPKzVCLFl2TXN0c0I3QjF5QyxFQUFRbW9C
LFF1TXp0c0JZd21FLEd2TTZ0c0JmLFNBQVMxdUYsRUFBUUQsRUFBU0gsR0FFL0IsWUFvQkEsU0FB
U21vQixHQUF1QkMsR0FBTyxNQUFPQSxJQUFPQSxFQUFJQyxXQUFhRCxHQUFRRSxRQUFTRixHQUV2
RixRQUFTNlQsR0FBZ0JDLEVBQVVDLEdBQWUsS0FBTUQsWUFBb0JDLElBQWdCLEtBQU0sSUFBSWo1
QixXQUFVLHFDQUVoSCxRQUFTNG9DLEdBQTJCbDBCLEVBQU1yWCxHQUFRLElBQUtxWCxFQUFRLEtB
QU0sSUFBSW0wQixnQkFBZSw0REFBZ0UsUUFBT3hyQyxHQUF5QixnQkFBVEEsSUFBcUMsa0JBQVRB
LEdBQThCcVgsRUFBUHJYLEVBRWxPLFFBQVN5ckMsR0FBVUMsRUFBVUMsR0FBYyxHQUEwQixrQkFB
ZkEsSUFBNEMsT0FBZkEsRUFBdUIsS0FBTSxJQUFJaHBDLFdBQVUsaUVBQW9FZ3BDLEdBQWVELEdB
QVNwckMsVUFBWUQsT0FBTzYrQixPQUFPeU0sR0FBY0EsRUFBV3JyQyxXQUFhdU4sYUFBZWdFLE1B
QU82NUIsRUFBVXZELFlBQVksRUFBT3lELFVBQVUsRUFBTXhELGNBQWMsS0FBZXVELElBQVl0ckMs
T0FBT3dyQyxlQUFpQnhyQyxPQUFPd3JDLGVBQWVILEVBQVVDLEdBQWNELEVBQVNJLFVBQVlILEdB
eEJqZXRyQyxPQUFPNm5DLGVBQWV0b0MsRUFBUyxjQUM3QmlTLE9BQU8sR0FHVCxJQUFJK2dDLEdB
QWUsV0FBYyxRQUFTQyxHQUFpQjd1QyxFQUFRdVQsR0FBUyxJQUFLLEdBQUluWCxHQUFJLEVBQUdB
LEVBQUltWCxFQUFNbFYsT0FBUWpDLElBQUssQ0FBRSxHQUFJMm5DLEdBQWF4d0IsRUFBTW5YLEVB
QUkybkMsR0FBV0ksV0FBYUosRUFBV0ksYUFBYyxFQUFPSixFQUFXSyxjQUFlLEVBQVUsU0FBV0ws
S0FBWUEsRUFBVzZELFVBQVcsR0FBTXZyQyxPQUFPNm5DLGVBQWVsa0MsRUFBUStqQyxFQUFXempD
LElBQUt5akMsSUFBaUIsTUFBTyxVQUFVbk0sRUFBYWtYLEVBQVlDLEdBQWlKLE1BQTlIRCxJQUFZ
RCxFQUFpQmpYLEVBQVl0N0IsVUFBV3d5QyxHQUFpQkMsR0FBYUYsRUFBaUJqWCxFQUFhbVgsR0FB
cUJuWCxNd01odnNCamlCNlUsRUFBQWh4QyxFQUFBLEl4TW92c0JLdXpDLEVBQVVwckIsRUFBdUI2
b0IsR3dNbnZzQnRDd0MsRUFBQXh6QyxFQUFBLEl4TXV2c0JLeXpDLEVBQWV0ckIsRUFBdUJxckIs
R3dNdHZzQjNDMDZDLEVBQUFsdUYsRUFBQSxJeE0wdnNCS211RixFQUFrQmhtRSxFQUF1QitsRSxH
d014dnNCekJvQixFeE1rd3NCTCxTQUFVcmdELEdBR3ZCLFFBQVNxZ0QsS0FDUCxHQUFJbGlELEdB
RUF1RyxFQUFPekUsRUFBTzBFLENBRWxCM1gsR0FBZ0IzNkIsS0FBTWd1RixFQUV0QixLQUFLLEdB
QUl6N0MsR0FBT2x4QyxVQUFVQyxPQUFRNUIsRUFBT29YLE1BQU15N0IsR0FBT0MsRUFBTyxFQUFH
QSxFQUFPRCxFQUFNQyxJQUMzRTl5QyxFQUFLOHlDLEdBQVFueEMsVUFBVW14QyxFQUd6QixPQUFl
SCxHQUFTekUsRUFBUXBELEVBQTJCeHFDLE1BQU84ckMsRUFBT2tpRCxFQUFTampELFdBQWF6ckMs
T0FBT216QyxlQUFldTdDLElBQVcvdUYsS0FBS2MsTUFBTStyQyxHQUFPOXJDLE1BQU1DLE9BQU9Q
LEtBQWlCa3VDLEV3TXh3c0JuTEMsT0FDRXNGLFNBQVMsR3hNeXdzQkx2RixFd010d3NCTnFnRCxr
QkFBb0IsV0FDbEJyZ0QsRUFBS3lCLFVBQVc4RCxTQUFTLEt4TXV3c0JyQnZGLEV3TXB3c0JObS9D
LFdBQWEsU0FBQ2h1RixFQUFJb1EsR0FDSSxJQUFoQkEsRUFBSzdOLE9BQ1Bzc0MsRUFBS3AzQixN
QUFNODBFLFdBQVd2c0YsR0FFdEI2dUMsRUFBS3AzQixNQUFNNjBFLFNBQVN0c0YsRUFBSW9RLEdB
RTFCeStCLEVBQUt5QixVQUFXOEQsU0FBUyxLeE0wdnNCakJiLEVBV0pELEVBQVE3SCxFQUEyQm9E
LEVBQU8wRSxHQXNEL0MsTUE5RUE1SCxHQUFVc2pELEVBQVVyZ0QsR0EyQnBCa0UsRUFBYW04QyxJ
QUNYenFGLElBQUssU0FDTHVOLE1BQU8sV3dNdndzQkQsR0FBQTA3RSxHQUFBeHNGLEtBQUFpc0Ys
RUFDb0Nqc0YsS0FBS3dXLE1BQXhDODJFLEVBRERyQixFQUNDcUIsS0FBTWxDLEVBRFBhLEVBQ09i
LGFBQWNFLEVBRHJCVyxFQUNxQlgsV0FFeEI3MEUsUUF1QkosT0FyQkVBLEdBREV6VyxLQUFLNnRD
LE1BQU1zRixRQUVYbEIsRUFBQWpyQixRQUFBdGdCLGNBQUFtbUYsRUFBQTdsRSxTQUFlN1gsS0FB
TW0rRSxFQUFLbitFLEtBQ1hna0MsUUFBU256QyxLQUFLNnRDLE1BQU1zRixRQUNwQk4sT0FBUSxT
QUFDMWpDLEdBQUQsTUFBVXE5RSxHQUFLTyxXQUFXTyxFQUFLdnVGLEdBQUlvUSxNQUkxRDhpQyxF
QUFBanJCLFFBQUF0Z0IsY0FBQSxPQUFLdXNDLFVBQVUsUUFDYmhCLEVBQUFqckIsUUFBQXRnQixj
QUFBLFNBQU91c0MsVUFBVSxTQUNWdHBDLEtBQUssV0FDTDBsQixRQUFTaStELEVBQUtDLFVBQ2Rw
K0QsU0FBVSxpQkFBTWk4RCxHQUFha0MsRUFBS3Z1RixPQUN6Q2t6QyxFQUFBanJCLFFBQUF0Z0Is
Y0FBQSxTQUFPd25GLGNBQWVsdUYsS0FBS2l1RixtQkFDeEJYLEVBQUtuK0UsTUFFUjhpQyxFQUFB
anJCLFFBQUF0Z0IsY0FBQSxVQUFRdXNDLFVBQVUsVUFDVm01QyxRQUFTLGlCQUFNZCxHQUFXZ0Ms
RUFBS3Z1RixRQU0zQ2t6QyxFQUFBanJCLFFBQUF0Z0IsY0FBQSxNQUFJdXNDLFdBQVcsRUFBQWQs
RUFBQW5yQixVQUNidW1FLFVBQVdELEVBQUtDLFVBQ2hCcDZDLFFBQVNuekMsS0FBSzZ0QyxNQUFN
c0YsV0FFbkIxOEIsT3hNeXhzQkN1M0UsR0FDUHQrQyxFQUFPbDZCLFV3TWwxc0JXdzRFLEdBQ1pq
K0QsV0FDTHU5RCxLQUFNNTlDLEVBQUEvNUIsVUFBVTZCLE9BQU8rNUIsV0FDdkI4NUMsU0FBVTM3
QyxFQUFBLzVCLFVBQVV1YSxLQUFLcWhCLFdBQ3pCKzVDLFdBQVk1N0MsRUFBQS81QixVQUFVdWEs
S0FBS3FoQixXQUMzQjY1QyxhQUFjMTdDLEVBQUEvNUIsVUFBVXVhLEtBQUtxaEIsWXhNcTFzQmhD
MXlDLEVBQVFtb0IsUXdNMTFzQllnbkUsR3hNODFzQmYsU0FBU2x2RixFQUFRRCxFQUFTSCxHQUUv
QixZQTBCQSxTQUFTc3NGLEdBQXdCbGtFLEdBQU8sR0FBSUEsR0FBT0EsRUFBSUMsV0FBYyxNQUFP
RCxFQUFjLElBQUlta0UsS0FBYSxJQUFXLE1BQVBua0UsRUFBZSxJQUFLLEdBQUl2akIsS0FBT3Vq
QixHQUFXeG5CLE9BQU9DLFVBQVVDLGVBQWVQLEtBQUs2bkIsRUFBS3ZqQixLQUFNMG5GLEVBQU8x
bkYsR0FBT3VqQixFQUFJdmpCLEdBQWdDLE9BQXRCMG5GLEdBQU9qa0UsUUFBVUYsRUFBWW1rRSxF
QUVsUSxRQUFTcGtFLEdBQXVCQyxHQUFPLE1BQU9BLElBQU9BLEVBQUlDLFdBQWFELEdBQVFFLFFB
QVNGLEdBMUJ2RnhuQixPQUFPNm5DLGVBQWV0b0MsRUFBUyxjQUM3QmlTLE9BQU8sR3lNdjJzQlYs
SUFBQTQrQixHQUFBaHhDLEVBQUEsSXpNNDJzQkt1ekMsRUFBVXByQixFQUF1QjZvQixHeU0zMnNC
dEN5M0MsRUFBQXpvRixFQUFBLElBQ0F5dkYsRUFBQXp2RixFQUFBLElBQ0EwdkYsRUFBQTF2RixF
QUFBLEt6TWkzc0JLMnZGLEVBQVd4bkUsRUFBdUJ1bkUsR3lNaDNzQnZDRSxFQUFBNXZGLEVBQUEs
S3pNbzNzQks2dkYsRUFBZ0IxbkUsRUFBdUJ5bkUsR3lNbjNzQjVDRSxFQUFBOXZGLEVBQUEsS0FB
WSt2RixFek11M3NCT3pELEVBQXdCd0QsR3lNcjNzQnJDRSxFQUFNLFNBQUE1aUQsR0FBQSxHQUFF
OGhELEdBQUY5aEQsRUFBRThoRCxNQUFPRixFQUFUNWhELEVBQVM0aEQsT0FBVCxPQUNWejdDLEdB
QUFqckIsUUFBQXRnQixjQUFBLFdBQ0V1ckMsRUFBQWpyQixRQUFBdGdCLGNBQUEybkYsRUFBQXJu
RSxTQUFRdWtFLFFBQVNtQyxFQUFRbkMsVUFDekJ0NUMsRUFBQWpyQixRQUFBdGdCLGNBQUE2bkYs
RUFBQXZuRSxTQUFhNG1FLE1BQU9BLEVBQU9GLFFBQVNBLEtBSXhDZ0IsR0FBSTMrRCxXQUNGNjlE
LE1BQU9sK0MsRUFBQS81QixVQUFVeS9CLE1BQU03RCxXQUN2Qm04QyxRQUFTaCtDLEVBQUEvNUIs
VUFBVTZCLE9BQU8rNUIsV0FHNUIsSUFBTWkwQyxHQUFrQixTQUFBMzNDLEdBQUEsT0FDdEIrL0Ms
TUFBTy8vQyxFQUFNKy9DLFFBR1RuSSxFQUFxQixTQUFBMTJDLEdBQUEsT0FDdkIyK0MsU0FBUyxF
QUFBdkcsRUFBQWhnRSxvQkFBbUJzbkUsRUFBYTEvQyxJek1zNHNCNUNsd0MsR0FBUW1vQixTeU1u
NHNCTSxFQUFBbW5FLEVBQUF4OUMsU0FDYjYwQyxFQUNBQyxHQUNBaUosSXpNbzRzQkksU0FBUzV2
RixFQUFRRCxFQUFTSCxHQUUvQixZQXNCQSxTQUFTbW9CLEdBQXVCQyxHQUFPLE1BQU9BLElBQU9B
LEVBQUlDLFdBQWFELEdBQVFFLFFBQVNGLEcwTTE3c0J4RixHQUFBNG9CLEdBQUFoeEMsRUFBQSxJ
MU13NnNCS3V6QyxFQUFVcHJCLEVBQXVCNm9CLEcwTXY2c0J0Q2kvQyxFQUFBandGLEVBQUEsS0FD
QXlvRixFQUFBem9GLEVBQUEsSUFDQXl2RixFQUFBenZGLEVBQUEsSUFDQWt3RixFQUFBbHdGLEVB
QUEsSzFNODZzQkttd0YsRUFBUWhvRSxFQUF1QituRSxHME03NnNCcENFLEVBQUFwd0YsRUFBQSxL
MU1pN3NCS3F3RixFQUFhbG9FLEVBQXVCaW9FLEUwTWg3c0J6Q3B3RixHQUFBLElBRUEsSUFBTTBz
QyxJQUFRLEVBQUErN0MsRUFBQTkvRCxhQUFBMG5FLEVBQUEvbkUsVUFFZCxFQUFBMm5FLEVBQUFs
ckQsUUFDRXdPLEVBQUFqckIsUUFBQXRnQixjQUFBeW5GLEVBQUF0OUMsVUFBVXpGLE1BQU9BLEdB
Q2Y2RyxFQUFBanJCLFFBQUF0Z0IsY0FBQW1vRixFQUFBN25FLFFBQUEsT0FFRnZnQixTQUFTdW9G
LGVBQWUsVTFNdzdzQnBCLFNBQVNsd0YsRUFBUUQsRUFBU0gsR0FFL0IsWUFZQSxTQUFTbW9CLEdB
QXVCQyxHQUFPLE1BQU9BLElBQU9BLEVBQUlDLFdBQWFELEdBQVFFLFFBQVNGLEdBVnZGeG5CLE9B
QU82bkMsZUFBZXRvQyxFQUFTLGNBQzdCaVMsT0FBTyxHMk0zOHNCVixJQUFBcTJFLEdBQUF6b0Ys
RUFBQSxJQUNBdXdGLEVBQUF2d0YsRUFBQSxLM01pOXNCS3d3RixFQUFVcm9FLEVBQXVCb29FLEcy
TS84c0JoQ0UsR0FBYyxFQUFBaEksRUFBQS8vRCxrQkFDbEJ3bUUsaUIzTXM5c0JEL3VGLEdBQVFt
b0IsUTJNbjlzQk1tb0UsRzNNdTlzQlQsU0FBU3J3RixFQUFRRCxFQUFTSCxHQUUvQixZQWNBLFNB
QVMwd0YsR0FBbUJycEQsR0FBTyxHQUFJanZCLE1BQU13UixRQUFReWQsR0FBTSxDQUFFLElBQUss
R0FBSTFtQyxHQUFJLEVBQUdnd0YsRUFBT3Y0RSxNQUFNaXZCLEVBQUl6a0MsUUFBU2pDLEVBQUkw
bUMsRUFBSXprQyxPQUFRakMsSUFBT2d3RixFQUFLaHdGLEdBQUswbUMsRUFBSTFtQyxFQUFNLE9B
QU9nd0YsR0FBZSxNQUFPdjRFLE9BQU0zVCxLQUFLNGlDLEc0TTErc0I1SyxRQUFTNm5ELEtBQW9D
LEdBQTlCLy9DLEdBQThCeHNDLFVBQUFDLFFBQUEsR0FBQVosU0FBQVcsVUFBQSxHQUF0QmkvQyxF
QUFzQmovQyxVQUFBLEdBQVJtOEMsRUFBUW44QyxVQUFBLEdBQUFpeEMsRUFBQSxXQUMxRCxPQUFR
a0wsRUFBTzd6QyxNQUNiLElBQUE2aEYsR0FBQTkzQyxTQUNFLE9BQUE0N0MsSUFFSXZ3RixHQUFJ
OHVDLEVBQU1tUCxPQUFPLFNBQUN1eUMsRUFBT2pDLEdBQVIsTUFBaUJubkYsTUFBSzR3RCxJQUFJ
dTJCLEVBQUt2dUYsR0FBSXd3RixRQUFjLEVBQ2xFaEMsV0FBVyxFQUNYcCtFLEtBQU1xdUMsRUFB
T3J1QyxPQUpqQmxQLE9BQUFtdkYsRUFNS3ZoRCxJQUdQLEtBQUEyOUMsR0FBQTczQyxZQUNFLE9B
QUEyN0MsRUFBT3poRCxFQUFNaWxDLE9BQU8sU0FBQXdhLEdBQUEsTUFDbEJBLEdBQUt2dUYsS0FB
T3krQyxFQUFPeitDLEtBR3ZCLEtBQUF5c0YsR0FBQTUzQyxVQUNFLE9BQUEwN0MsRUFBT3poRCxF
QUFNeHJDLElBQUksU0FBQWlyRixHQUFBLE1BQ2ZBLEdBQUt2dUYsS0FBT3krQyxFQUFPeitDLEdB
QW5CMHVDLEtBQ082L0MsR0FBTW4rRSxLQUFNcXVDLEVBQU9ydUMsT0FDeEJtK0UsSUFHTixLQUFB
OUIsR0FBQTMzQyxjQUNFLE9BQUF5N0MsRUFBT3poRCxFQUFNeHJDLElBQUksU0FBQWlyRixHQUFB
LE1BQ2ZBLEdBQUt2dUYsS0FBT3krQyxFQUFPeitDLEdBQW5CMHVDLEtBQ082L0MsR0FBTUMsV0FB
WUQsRUFBS0MsWUFDNUJELElBR04sS0FBQTlCLEdBQUExM0MsYUFDRSxHQUFNMDdDLEdBQWUzaEQs
RUFBTWljLE1BQU0sU0FBQXdqQyxHQUFBLE1BQVFBLEdBQUtDLFdBQzlDLFFBQUErQixFQUFPemhE
LEVBQU14ckMsSUFBSSxTQUFBaXJGLEdBQUEsTUFBQTcvQyxNQUNaNi9DLEdBQ0hDLFdBQVlpQyxN
QUdoQixLQUFBaEUsR0FBQXozQyxnQkFDRSxPQUFBdTdDLEVBQU96aEQsRUFBTWlsQyxPQUFPLFNB
QUF3YSxHQUFBLE1BQVFBLEdBQUtDLGFBQWMsSUFFakQsU0FDRSxPQUFBK0IsRUFBT3poRCxNQTFD
K0MsbUNBQUF5RSxHQUFBLFlBQUFtOUMsRUFBQW45QyxJQUFBLE1BQUFBLEdBQUFnOUMsRTVNODlz
QjNEaHdGLE9BQU82bkMsZUFBZXRvQyxFQUFTLGNBQzdCaVMsT0FBTyxHQUdULElBQUkyK0UsR0FB
NEIsa0JBQVh0NkQsU0FBb0QsZ0JBQXBCQSxRQUFPNlUsU0FBd0IsU0FBVWxqQixHQUFPLGFBQWNB
LElBQVMsU0FBVUEsR0FBTyxNQUFPQSxJQUF5QixrQkFBWHFPLFNBQXlCck8sRUFBSWhhLGNBQWdC
cW9CLE9BQVMsZUFBa0JyTyxJQUV0TzJtQixFQUFXbnVDLE9BQU93QyxRQUFVLFNBQVVtQixHQUFV
LElBQUssR0FBSTVELEdBQUksRUFBR0EsRUFBSWdDLFVBQVVDLE9BQVFqQyxJQUFLLENBQUUsR0FB
STZELEdBQVM3QixVQUFVaEMsRUFBSSxLQUFLLEdBQUlrRSxLQUFPTCxHQUFjNUQsT0FBT0MsVUFB
VUMsZUFBZVAsS0FBS2lFLEVBQVFLLEtBQVFOLEVBQU9NLEdBQU9MLEVBQU9LLElBQVksTUFBT04s
R0FFdlBwRSxHQUFRbW9CLFE0TXQrc0JlNG1FLENBSnhCLElBQUFwQyxHQUFBOXNGLEVBQUEsSUFF
TTRoRCxNNU1xanRCQSxTQUFTeGhELEVBQVFELEtBTWpCLFNBQVNDLEVBQVFELEc2TTdqdEJ2QixZ
QUtBLFNBQUE2QyxHQUFBQyxHQUNBLFVBQUFBLEdBQUFqQixTQUFBaUIsRUFDQSxTQUFBQyxXQUFB
LHdEQUdBLE9BQUF0QyxRQUFBcUMsR0FHQSxRQUFBRSxLQUNBLElBQ0EsSUFBQXZDLE9BQUF3QyxP
QUNBLFFBTUEsSUFBQUMsR0FBQSxHQUFBQyxRQUFBLE1BRUEsSUFEQUQsRUFBQSxRQUNBLE1BQUF6
QyxPQUFBMkMsb0JBQUFGLEdBQUEsR0FDQSxRQUtBLFFBREFHLE1BQ0E3QyxFQUFBLEVBQWlCQSxF
QUFBLEdBQVFBLElBQ3pCNkMsRUFBQSxJQUFBRixPQUFBRyxhQUFBOUMsS0FFQSxJQUFBK0MsR0FB
QTlDLE9BQUEyQyxvQkFBQUMsR0FBQUcsSUFBQSxTQUFBQyxHQUNBLE1BQUFKLEdBQUFJLElBRUEs
bUJBQUFGLEVBQUFHLEtBQUEsSUFDQSxRQUlBLElBQUFDLEtBSUEsT0FIQSx1QkFBQUMsTUFBQSxJ
QUFBQyxRQUFBLFNBQUFDLEdBQ0FILEVBQUFHLE9BR0EseUJBREFyRCxPQUFBc0QsS0FBQXRELE9B
QUF3QyxVQUFrQ1UsSUFBQUQsS0FBQSxJQU1oQyxNQUFBakMsR0FFRixVQW5EQSxHQUFBZCxHQUFB
RixPQUFBQyxVQUFBQyxlQUNBdUQsRUFBQXpELE9BQUFDLFVBQUF5RCxvQkFzREFsRSxHQUFBRCxR
QUFBZ0QsSUFBQXZDLE9BQUF3QyxPQUFBLFNBQUFtQixFQUFBQyxHQUtBLE9BSkFDLEdBRUFDLEVB
REFDLEVBQUEzQixFQUFBdUIsR0FHQUssRUFBQSxFQUFnQkEsRUFBQWpDLFVBQUFDLE9BQXNCZ0Ms
SUFBQSxDQUN0Q0gsRUFBQTdELE9BQUErQixVQUFBaUMsR0FFQSxRQUFBQyxLQUFBSixHQUNBM0Qs
RUFBQVAsS0FBQWtFLEVBQUFJLEtBQ0FGLEVBQUFFLEdBQUFKLEVBQUFJLEdBSUEsSUFBQWpFLE9B
QUF3RCxzQkFBQSxDQUNBTSxFQUFBOUQsT0FBQXdELHNCQUFBSyxFQUNBLFFBQUE5RCxHQUFBLEVB
QWtCQSxFQUFBK0QsRUFBQTlCLE9BQW9CakMsSUFDdEMwRCxFQUFBOUQsS0FBQWtFLEVBQUFDLEVB
QUEvRCxNQUNBZ0UsRUFBQUQsRUFBQS9ELElBQUE4RCxFQUFBQyxFQUFBL0QsTUFNQSxNQUFBZ0Us
SzdNcWt0Qk0sU0FBU3ZFLEVBQVFELEVBQVNILEc4TXRwdEJoQyxZQWlCQSxTQUFBZ3hGLEdBQUE1
K0UsR0FDQSxHQUFBMVIsR0FBQSxHQUFBMjNDLEtBQUFvQixJQUdBLE9BRkEvNEMsR0FBQTYzQyxJ
QUFBLEVBQ0E3M0MsRUFBQTgzQyxJQUFBcG1DLEVBQ0ExUixFQWpCQSxHQUFBMjNDLEdBQUFyNEMs
RUFBQSxHQUVBSSxHQUFBRCxRQUFBazRDLENBSUEsSUFBQTQ0QyxHQUFBRCxHQUFBLEdBQ0FFLEVB
QUFGLEdBQUEsR0FDQUcsRUFBQUgsRUFBQSxNQUNBSSxFQUFBSixFQUFBaHZGLFFBQ0FxdkYsRUFB
QUwsRUFBQSxHQUNBTSxFQUFBTixFQUFBLEdBUUEzNEMsR0FBQVMsUUFBQSxTQUFBMW1DLEdBQ0Es
R0FBQUEsWUFBQWltQyxHQUFBLE1BQUFqbUMsRUFFQSxXQUFBQSxFQUFBLE1BQUErK0UsRUFDQSxJ
QUFBbnZGLFNBQUFvUSxFQUFBLE1BQUFnL0UsRUFDQSxJQUFBaC9FLEtBQUEsUUFBQTYrRSxFQUNB
LElBQUE3K0UsS0FBQSxRQUFBOCtFLEVBQ0EsUUFBQTkrRSxFQUFBLE1BQUFpL0UsRUFDQSxTQUFB
ai9FLEVBQUEsTUFBQWsvRSxFQUVBLG9CQUFBbC9FLElBQUEsa0JBQUFBLEdBQ0EsSUFDQSxHQUFB
MmxDLEdBQUEzbEMsRUFBQTJsQyxJQUNBLHNCQUFBQSxHQUNBLFVBQUFNLEdBQUFOLEVBQUF4L0Is
S0FBQW5HLElBRUssTUFBQTRsQyxHQUNMLFVBQUFLLEdBQUEsU0FBQVMsRUFBQUMsR0FDQUEsRUFB
QWYsS0FJQSxNQUFBZzVDLEdBQUE1K0UsSUFHQWltQyxFQUFBazVDLElBQUEsU0FBQWxxRCxHQUNB
LEdBQUFybUMsR0FBQW9YLE1BQUF2WCxVQUFBSSxNQUFBVixLQUFBOG1DLEVBRUEsV0FBQWdSLEdB
QUEsU0FBQVMsRUFBQUMsR0FHQSxRQUFBbHFCLEdBQUFsdUIsRUFBQXNDLEdBQ0EsR0FBQUEsSUFB
QSxnQkFBQUEsSUFBQSxrQkFBQUEsSUFBQSxDQUNBLEdBQUFBLFlBQUFvMUMsSUFBQXAxQyxFQUFB
ODBDLE9BQUFNLEVBQUF4M0MsVUFBQWszQyxLQUFBLENBQ0EsU0FBQTkwQyxFQUFBczFDLEtBQ0F0
MUMsSUFBQXUxQyxHQUVBLFlBQUF2MUMsRUFBQXMxQyxJQUFBMXBCLEVBQUFsdUIsRUFBQXNDLEVB
QUF1MUMsTUFDQSxJQUFBdjFDLEVBQUFzMUMsS0FBQVEsRUFBQTkxQyxFQUFBdTFDLFNBQ0F2MUMs
R0FBQTgwQyxLQUFBLFNBQUE5MEMsR0FDQTRyQixFQUFBbHVCLEVBQUFzQyxJQUNXODFDLElBR1gs
R0FBQWhCLEdBQUE5MEMsRUFBQTgwQyxJQUNBLHNCQUFBQSxHQUFBLENBQ0EsR0FBQXIzQyxHQUFB
LEdBQUEyM0MsR0FBQU4sRUFBQXgvQixLQUFBdFYsR0FJQSxZQUhBdkMsR0FBQXEzQyxLQUFBLFNB
QUE5MEMsR0FDQTRyQixFQUFBbHVCLEVBQUFzQyxJQUNhODFDLElBS2IvM0MsRUFBQUwsR0FBQXND
LEVBQ0EsTUFBQXV1RixHQUNBMTRDLEVBQUE5M0MsR0EzQkEsT0FBQUEsRUFBQTRCLE9BQUEsTUFB
QWsyQyxNQThCQSxRQTdCQTA0QyxHQUFBeHdGLEVBQUE0QixPQTZCQWpDLEVBQUEsRUFBbUJBLEVB
QUFLLEVBQUE0QixPQUFpQmpDLElBQ3BDa3VCLEVBQUFsdUIsRUFBQUssRUFBQUwsT0FLQTAzQyxF
QUFBVSxPQUFBLFNBQUEzbUMsR0FDQSxVQUFBaW1DLEdBQUEsU0FBQVMsRUFBQUMsR0FDQUEsRUFB
QTNtQyxNQUlBaW1DLEVBQUFvNUMsS0FBQSxTQUFBdHBDLEdBQ0EsVUFBQTlQLEdBQUEsU0FBQVMs
RUFBQUMsR0FDQW9QLEVBQUFua0QsUUFBQSxTQUFBb08sR0FDQWltQyxFQUFBUyxRQUFBMW1DLEdB
QUEybEMsS0FBQWUsRUFBQUMsUUFPQVYsRUFBQXgzQyxVQUFBLGVBQUFnNEMsR0FDQSxNQUFBdjND
LE1BQUF5MkMsS0FBQSxLQUFBYyxLOU04cHRCTSxTQUFTejRDLEVBQVFELEVBQVNILEcrTXZ3dEJo
QyxZQVlBLFNBQUEweEYsS0FDQXJ1RSxHQUFBLEVBQ0FnMUIsRUFBQWEsSUFBQSxLQUNBYixFQUFB
a0IsSUFBQSxLQUlBLFFBQUF3eEMsR0FBQXZzRCxHQXdDQSxRQUFBbXpELEdBQUF0eEYsSUFFQW0r
QixFQUFBb3pELGVBQ0FDLEVBQ0FDLEVBQUF6eEYsR0FBQTBCLE1BQ0F5OEIsRUFBQXV6RCxXQUFB
QyxNQUdBRixFQUFBenhGLEdBQUE0eEYsY0FDQXp6RCxFQUFBbXpELGFBQ0FHLEVBQUF6eEYsR0FB
QTZ4RixRQUFBLEVBQ0ExekQsRUFBQW16RCxZQUNBRyxFQUFBenhGLEdBQUE0eEYsVUFDQUgsRUFB
QXp4RixHQUFBMEIsU0FHQSt2RixFQUFBenhGLEdBQUE2eEYsUUFBQSxFQUNBQyxFQUNBTCxFQUFB
enhGLEdBQUE0eEYsVUFDQUgsRUFBQXp4RixHQUFBMEIsU0FLQSxRQUFBcXdGLEdBQUEveEYsR0FD
QXl4RixFQUFBenhGLEdBQUE2eEYsU0FDQTF6RCxFQUFBNHpELFVBQ0E1ekQsRUFBQTR6RCxVQUFB
TixFQUFBenhGLEdBQUE0eEYsVUFBQUgsRUFBQXp4RixHQUFBMEIsT0FDTyt2RixFQUFBenhGLEdB
QUFzeEYsY0FDUHZtRixRQUFBaW5GLEtBQ0Esa0NBQUFQLEVBQUF6eEYsR0FBQTR4RixVQUFBLE1B
RUE3bUYsUUFBQWluRixLQUNBLGdIQUNBUCxFQUFBenhGLEdBQUE0eEYsVUFBQSxPQXpFQXp6RCxR
QUNBbmIsR0FBQXF1RSxJQUNBcnVFLEdBQUEsQ0FDQSxJQUFBaGpCLEdBQUEsRUFDQTR4RixFQUFB
LEVBQ0FILElBQ0F6NUMsR0FBQWEsSUFBQSxTQUFBRSxHQUVBLElBQUFBLEVBQUFiLEtBQ0F1NUMs
RUFBQTE0QyxFQUFBazVDLE9BRUFSLEVBQUExNEMsRUFBQWs1QyxLQUFBSixPQUNBRSxFQUFBaDVD
LEVBQUFrNUMsS0FFQXA4QyxhQUFBNDdDLEVBQUExNEMsRUFBQWs1QyxLQUFBOTdDLGVBRUFzN0Ms
R0FBQTE0QyxFQUFBazVDLE9BR0FqNkMsRUFBQWtCLElBQUEsU0FBQUgsRUFBQWoxQyxHQUNBLElB
QUFpMUMsRUFBQWQsTUFDQWMsRUFBQWs1QyxJQUFBanlGLElBQ0F5eEYsRUFBQTE0QyxFQUFBazVD
LE1BQ0FMLFVBQUEsS0FDQWx3RixNQUFBb0MsRUFDQXF5QyxRQUFBVixXQUNBNjdDLEVBQUFwNUUs
S0FBQSxLQUFBNmdDLEVBQUFrNUMsS0FLQVQsRUFBQTF0RixFQUFBNnRGLEdBQ0EsSUFDQSxLQUVB
RSxRQUFBLEtBNkNBLFFBQUFDLEdBQUE5eEYsRUFBQTBCLEdBQ0FxSixRQUFBaW5GLEtBQUEsNkNB
QUFoeUYsRUFBQSxLQUNBLElBQUFreUYsSUFBQXh3RixNQUFBaThDLE9BQUFqOEMsSUFBQSxFQUNB
d3dGLEdBQUF4dUYsTUFBQSxNQUFBQyxRQUFBLFNBQUF3dUYsR0FDQXBuRixRQUFBaW5GLEtBQUEs
S0FBQUcsS0FJQSxRQUFBWCxHQUFBOXZGLEVBQUFnMkQsR0FDQSxNQUFBQSxHQUFBMDZCLEtBQUEs
U0FBQUMsR0FDQSxNQUFBM3dGLGFBQUEyd0YsS0E1R0EsR0FBQXI2QyxHQUFBcjRDLEVBQUEsSUFF
QWd5RixHQUNBam1ELGVBQ0E3b0MsVUFDQXl2RixZQUdBdHZFLEdBQUEsQ0FDQWxqQixHQUFBdXhG
LFVBT0F2eEYsRUFBQTRxRixVL00yMnRCTSxTQUFTM3FGLEVBQVFELEdnTjczdEJ2QkMsRUFBQUQs
UUFBQSxTQUFBQyxHQVFBLE1BUEFBLEdBQUF3eUYsa0JBQ0F4eUYsRUFBQXl5RixVQUFBLGFBQ0F6
eUYsRUFBQTB5RixTQUVBMXlGLEVBQUErRixZQUNBL0YsRUFBQXd5RixnQkFBQSxHQUVBeHlGLElo
TnE0dEJNLFNBQVNBLEVBQVFELElpTjc0dEJ2QixTQUFBeVgsR0FDQSxZQXFCQSxTQUFBbTdFLEdB
QUEzd0YsR0FJQSxHQUhBLGdCQUFBQSxLQUNBQSxFQUFBa0IsT0FBQWxCLElBRUEsNkJBQUEwUCxL
QUFBMVAsR0FDQSxTQUFBYyxXQUFBLHlDQUVBLE9BQUFkLEdBQUE0UCxjQUdBLFFBQUFnaEYsR0FB
QTVnRixHQUlBLE1BSEEsZ0JBQUFBLEtBQ0FBLEVBQUE5TyxPQUFBOE8sSUFFQUEsRUFJQSxRQUFB
NmdGLEdBQUFDLEdBQ0EsR0FBQTVuRCxJQUNBbEUsS0FBQSxXQUNBLEdBQUFoMUIsR0FBQThnRixF
QUFBQyxPQUNBLFFBQWdCMW5ELEtBQUF6cEMsU0FBQW9RLFlBVWhCLE9BTkFnaEYsR0FBQUMsV0FD
QS9uRCxFQUFBN1UsT0FBQTZVLFVBQUEsV0FDQSxNQUFBQSxLQUlBQSxFQUdBLFFBQUFnb0QsR0FB
QXQ4QixHQUNBMTFELEtBQUFxQyxPQUVBcXpELFlBQUFzOEIsR0FDQXQ4QixFQUFBaHpELFFBQUEs
U0FBQW9PLEVBQUFoUSxHQUNBZCxLQUFBaXlGLE9BQUFueEYsRUFBQWdRLElBQ085USxNQUVGMDFE
LEdBQ0xwMkQsT0FBQTJDLG9CQUFBeXpELEdBQUFoekQsUUFBQSxTQUFBNUIsR0FDQWQsS0FBQWl5
RixPQUFBbnhGLEVBQUE0MEQsRUFBQTUwRCxLQUNPZCxNQWtFUCxRQUFBa3lGLEdBQUFqOUQsR0FD
QSxNQUFBQSxHQUFBazlELFNBQ0FwN0MsUUFBQVUsT0FBQSxHQUFBNzFDLFdBQUEsc0JBRUFxekIs
RUFBQWs5RCxVQUFBLEdBR0EsUUFBQUMsR0FBQUMsR0FDQSxVQUFBdDdDLFNBQUEsU0FBQVMsRUFB
QUMsR0FDQTQ2QyxFQUFBQyxPQUFBLFdBQ0E5NkMsRUFBQTY2QyxFQUFBN3JDLFNBRUE2ckMsRUFB
QUUsUUFBQSxXQUNBOTZDLEVBQUE0NkMsRUFBQTV4RixVQUtBLFFBQUEreEYsR0FBQUMsR0FDQSxH
QUFBSixHQUFBLEdBQUFLLFdBRUEsT0FEQUwsR0FBQU0sa0JBQUFGLEdBQ0FMLEVBQUFDLEdBR0Es
UUFBQU8sR0FBQUgsR0FDQSxHQUFBSixHQUFBLEdBQUFLLFdBRUEsT0FEQUwsR0FBQVEsV0FBQUos
R0FDQUwsRUFBQUMsR0FHQSxRQUFBUyxLQW9GQSxNQW5GQTl5RixNQUFBbXlGLFVBQUEsRUFFQW55
RixLQUFBK3lGLFVBQUEsU0FBQTk5RCxHQUVBLEdBREFqMUIsS0FBQWd6RixVQUFBLzlELEVBQ0Es
Z0JBQUFBLEdBQ0FqMUIsS0FBQWl6RixVQUFBaCtELE1BQ08sSUFBQTY4RCxFQUFBVyxNQUFBUyxL
QUFBM3pGLFVBQUE0ekYsY0FBQWwrRCxHQUNQajFCLEtBQUFvekYsVUFBQW4rRCxNQUNPLElBQUE2
OEQsRUFBQXVCLFVBQUFDLFNBQUEvekYsVUFBQTR6RixjQUFBbCtELEdBQ1BqMUIsS0FBQXV6Rixj
QUFBdCtELE1BQ08sSUFBQTY4RCxFQUFBMEIsY0FBQUMsZ0JBQUFsMEYsVUFBQTR6RixjQUFBbCtE
LEdBQ1BqMUIsS0FBQWl6RixVQUFBaCtELEVBQUE1dUIsZUFDTyxJQUFBNHVCLEdBRUEsSUFBQTY4
RCxFQUFBNEIsY0FBQUMsWUFBQXAwRixVQUFBNHpGLGNBQUFsK0QsR0FJUCxTQUFBdDBCLE9BQUEs
aUNBTEFYLE1BQUFpekYsVUFBQSxFQVFBanpGLE1BQUEwMUQsUUFBQTM1QyxJQUFBLGtCQUNBLGdC
QUFBa1osR0FDQWoxQixLQUFBMDFELFFBQUF6NUMsSUFBQSwyQ0FDU2pjLEtBQUFvekYsV0FBQXB6
RixLQUFBb3pGLFVBQUF6cEYsS0FDVDNKLEtBQUEwMUQsUUFBQXo1QyxJQUFBLGVBQUFqYyxLQUFB
b3pGLFVBQUF6cEYsTUFDU21vRixFQUFBMEIsY0FBQUMsZ0JBQUFsMEYsVUFBQTR6RixjQUFBbCtE
LElBQ1RqMUIsS0FBQTAxRCxRQUFBejVDLElBQUEsb0VBS0E2MUUsRUFBQVcsTUFDQXp5RixLQUFB
eXlGLEtBQUEsV0FDQSxHQUFBbUIsR0FBQTFCLEVBQUFseUYsS0FDQSxJQUFBNHpGLEVBQ0EsTUFB
QUEsRUFHQSxJQUFBNXpGLEtBQUFvekYsVUFDQSxNQUFBcjhDLFNBQUFTLFFBQUF4M0MsS0FBQW96
RixVQUNTLElBQUFwekYsS0FBQXV6RixjQUNULFNBQUE1eUYsT0FBQSx1Q0FFQSxPQUFBbzJDLFNB
QUFTLFFBQUEsR0FBQTA3QyxPQUFBbHpGLEtBQUFpekYsY0FJQWp6RixLQUFBMHpGLFlBQUEsV0FD
QSxNQUFBMXpGLE1BQUF5eUYsT0FBQWg4QyxLQUFBKzdDLElBR0F4eUYsS0FBQW1QLEtBQUEsV0FD
QSxHQUFBeWtGLEdBQUExQixFQUFBbHlGLEtBQ0EsSUFBQTR6RixFQUNBLE1BQUFBLEVBR0EsSUFB
QTV6RixLQUFBb3pGLFVBQ0EsTUFBQVIsR0FBQTV5RixLQUFBb3pGLFVBQ1MsSUFBQXB6RixLQUFB
dXpGLGNBQ1QsU0FBQTV5RixPQUFBLHVDQUVBLE9BQUFvMkMsU0FBQVMsUUFBQXgzQyxLQUFBaXpG
LGFBSUFqekYsS0FBQW1QLEtBQUEsV0FDQSxHQUFBeWtGLEdBQUExQixFQUFBbHlGLEtBQ0EsT0FB
QTR6RixLQUFBNzhDLFFBQUFTLFFBQUF4M0MsS0FBQWl6RixZQUlBbkIsRUFBQXVCLFdBQ0FyekYs
S0FBQXF6RixTQUFBLFdBQ0EsTUFBQXJ6RixNQUFBbVAsT0FBQXNuQyxLQUFBbzlDLEtBSUE3ekYs
S0FBQTh6RixLQUFBLFdBQ0EsTUFBQTl6RixNQUFBbVAsT0FBQXNuQyxLQUFBcEosS0FBQTBtRCxR
QUdBL3pGLEtBTUEsUUFBQWcwRixHQUFBbm9GLEdBQ0EsR0FBQW9vRixHQUFBcG9GLEVBQUEycEIs
YUFDQSxPQUFBMCtELEdBQUF2b0UsUUFBQXNvRSxRQUFBcG9GLEVBR0EsUUFBQXNvRixHQUFBbDBE
LEVBQUEvQyxHQUNBQSxPQUNBLElBQUFqSSxHQUFBaUksRUFBQWpJLElBQ0EsSUFBQWsvRCxFQUFB
NTBGLFVBQUE0ekYsY0FBQWx6RCxHQUFBLENBQ0EsR0FBQUEsRUFBQWt5RCxTQUNBLFNBQUF2d0Ys
V0FBQSxlQUVBNUIsTUFBQWlwQyxJQUFBaEosRUFBQWdKLElBQ0FqcEMsS0FBQW8wRixZQUFBbjBE
LEVBQUFtMEQsWUFDQWwzRCxFQUFBdzRCLFVBQ0ExMUQsS0FBQTAxRCxRQUFBLEdBQUFzOEIsR0FB
QS94RCxFQUFBeTFCLFVBRUExMUQsS0FBQTZMLE9BQUFvMEIsRUFBQXAwQixPQUNBN0wsS0FBQWcy
RSxLQUFBLzFDLEVBQUErMUMsS0FDQS9nRCxJQUNBQSxFQUFBZ0wsRUFBQSt5RCxVQUNBL3lELEVB
QUFreUQsVUFBQSxPQUdBbnlGLE1BQUFpcEMsSUFBQWhKLENBV0EsSUFSQWpnQyxLQUFBbzBGLFlB
QUFsM0QsRUFBQWszRCxhQUFBcDBGLEtBQUFvMEYsYUFBQSxRQUNBbDNELEVBQUF3NEIsU0FBQTEx
RCxLQUFBMDFELFVBQ0ExMUQsS0FBQTAxRCxRQUFBLEdBQUFzOEIsR0FBQTkwRCxFQUFBdzRCLFVB
RUExMUQsS0FBQTZMLE9BQUFtb0YsRUFBQTkyRCxFQUFBcnhCLFFBQUE3TCxLQUFBNkwsUUFBQSxP
QUNBN0wsS0FBQWcyRSxLQUFBOTRDLEVBQUE4NEMsTUFBQWgyRSxLQUFBZzJFLE1BQUEsS0FDQWgy
RSxLQUFBcTBGLFNBQUEsTUFFQSxRQUFBcjBGLEtBQUE2TCxRQUFBLFNBQUE3TCxLQUFBNkwsU0FB
QW9wQixFQUNBLFNBQUFyekIsV0FBQSw0Q0FFQTVCLE1BQUEreUYsVUFBQTk5RCxHQU9BLFFBQUE0
K0QsR0FBQTUrRCxHQUNBLEdBQUFrZ0MsR0FBQSxHQUFBbStCLFNBU0EsT0FSQXIrRCxHQUFBMGQs
T0FBQWx3QyxNQUFBLEtBQUFDLFFBQUEsU0FBQTR4RixHQUNBLEdBQUFBLEVBQUEsQ0FDQSxHQUFB
N3hGLEdBQUE2eEYsRUFBQTd4RixNQUFBLEtBQ0EzQixFQUFBMkIsRUFBQW92RixRQUFBaHhGLFFB
QUEsV0FDQWlRLEVBQUFyTyxFQUFBRixLQUFBLEtBQUExQixRQUFBLFVBQ0FzMEQsR0FBQTg4QixP
QUFBc0MsbUJBQUF6ekYsR0FBQXl6RixtQkFBQXpqRixPQUdBcWtELEVBR0EsUUFBQU8sR0FBQTgr
QixHQUNBLEdBQUFDLEdBQUEsR0FBQXpDLEdBQ0E1eEMsR0FBQW8wQyxFQUFBRSx5QkFBQSxJQUFB
L2hELE9BQUFsd0MsTUFBQSxLQU9BLE9BTkEyOUMsR0FBQTE5QyxRQUFBLFNBQUFpeUYsR0FDQSxH
QUFBbHlGLEdBQUFreUYsRUFBQWhpRCxPQUFBbHdDLE1BQUEsS0FDQWMsRUFBQWQsRUFBQW92RixR
QUFBbC9DLE9BQ0E3aEMsRUFBQXJPLEVBQUFGLEtBQUEsS0FBQW93QyxNQUNBOGhELEdBQUF4QyxP
QUFBMXVGLEVBQUF1TixLQUVBMmpGLEVBS0EsUUFBQUcsR0FBQUMsRUFBQTMzRCxHQUNBQSxJQUNB
QSxNQUdBbDlCLEtBQUEySixLQUFBLFVBQ0EzSixLQUFBODBGLE9BQUE1M0QsRUFBQTQzRCxPQUNB
OTBGLEtBQUErMEYsR0FBQS8wRixLQUFBODBGLFFBQUEsS0FBQTkwRixLQUFBODBGLE9BQUEsSUFD
QTkwRixLQUFBZzFGLFdBQUE5M0QsRUFBQTgzRCxXQUNBaDFGLEtBQUEwMUQsUUFBQXg0QixFQUFB
dzRCLGtCQUFBczhCLEdBQUE5MEQsRUFBQXc0QixRQUFBLEdBQUFzOEIsR0FBQTkwRCxFQUFBdzRC
LFNBQ0ExMUQsS0FBQWlwQyxJQUFBL0wsRUFBQStMLEtBQUEsR0FDQWpwQyxLQUFBK3lGLFVBQUE4
QixHQTlVQSxJQUFBditFLEVBQUEyK0UsTUFBQSxDQUlBLEdBQUFuRCxJQUNBMEIsYUFBQSxtQkFB
QWw5RSxHQUNBeTdFLFNBQUEsVUFBQXo3RSxJQUFBLFlBQUE2ZSxRQUNBczlELEtBQUEsY0FBQW44
RSxJQUFBLFFBQUFBLElBQUEsV0FDQSxJQUVBLE1BREEsSUFBQTQ4RSxPQUNBLEVBQ08sTUFBQTV5
RixHQUNQLGFBR0EreUYsU0FBQSxZQUFBLzhFLEdBQ0FvOUUsWUFBQSxlQUFBcDlFLEdBcURBMDdF
LEdBQUF6eUYsVUFBQTB5RixPQUFBLFNBQUFueEYsRUFBQWdRLEdBQ0FoUSxFQUFBMndGLEVBQUEz
d0YsR0FDQWdRLEVBQUE0Z0YsRUFBQTVnRixFQUNBLElBQUEybEQsR0FBQXoyRCxLQUFBcUMsSUFB
QXZCLEVBQ0EyMUQsS0FDQUEsS0FDQXoyRCxLQUFBcUMsSUFBQXZCLEdBQUEyMUQsR0FFQUEsRUFB
QWh4RCxLQUFBcUwsSUFHQWtoRixFQUFBenlGLFVBQUEsZ0JBQUF1QixTQUNBZCxNQUFBcUMsSUFB
QW92RixFQUFBM3dGLEtBR0FreEYsRUFBQXp5RixVQUFBd2MsSUFBQSxTQUFBamIsR0FDQSxHQUFB
K2xELEdBQUE3bUQsS0FBQXFDLElBQUFvdkYsRUFBQTN3RixHQUNBLE9BQUErbEQsS0FBQSxTQUdB
bXJDLEVBQUF6eUYsVUFBQTIxRixPQUFBLFNBQUFwMEYsR0FDQSxNQUFBZCxNQUFBcUMsSUFBQW92
RixFQUFBM3dGLFNBR0FreEYsRUFBQXp5RixVQUFBeWMsSUFBQSxTQUFBbGIsR0FDQSxNQUFBZCxN
QUFBcUMsSUFBQTdDLGVBQUFpeUYsRUFBQTN3RixLQUdBa3hGLEVBQUF6eUYsVUFBQTBjLElBQUEs
U0FBQW5iLEVBQUFnUSxHQUNBOVEsS0FBQXFDLElBQUFvdkYsRUFBQTN3RixLQUFBNHdGLEVBQUE1
Z0YsS0FHQWtoRixFQUFBenlGLFVBQUFtRCxRQUFBLFNBQUErRixFQUFBMHNGLEdBQ0E3MUYsT0FB
QTJDLG9CQUFBakMsS0FBQXFDLEtBQUFLLFFBQUEsU0FBQTVCLEdBQ0FkLEtBQUFxQyxJQUFBdkIs
R0FBQTRCLFFBQUEsU0FBQW9PLEdBQ0FySSxFQUFBeEosS0FBQWsyRixFQUFBcmtGLEVBQUFoUSxF
QUFBZCxPQUNPQSxPQUNGQSxPQUdMZ3lGLEVBQUF6eUYsVUFBQXFELEtBQUEsV0FDQSxHQUFBZ3ZG
LEtBRUEsT0FEQTV4RixNQUFBMEMsUUFBQSxTQUFBb08sRUFBQWhRLEdBQXdDOHdGLEVBQUFuc0Ys
S0FBQTNFLEtBQ3hDNndGLEVBQUFDLElBR0FJLEVBQUF6eUYsVUFBQXNuRCxPQUFBLFdBQ0EsR0FB
QStxQyxLQUVBLE9BREE1eEYsTUFBQTBDLFFBQUEsU0FBQW9PLEdBQWtDOGdGLEVBQUFuc0YsS0FB
QXFMLEtBQ2xDNmdGLEVBQUFDLElBR0FJLEVBQUF6eUYsVUFBQTBxQyxRQUFBLFdBQ0EsR0FBQTJu
RCxLQUVBLE9BREE1eEYsTUFBQTBDLFFBQUEsU0FBQW9PLEVBQUFoUSxHQUF3Qzh3RixFQUFBbnNG
LE1BQUEzRSxFQUFBZ1EsTUFDeEM2Z0YsRUFBQUMsSUFHQUUsRUFBQUMsV0FDQUMsRUFBQXp5RixV
QUFBNDFCLE9BQUE2VSxVQUFBZ29ELEVBQUF6eUYsVUFBQTBxQyxRQXlIQSxJQUFBaXFELElBQUEs
NkNBMkNBQyxHQUFBNTBGLFVBQUE2MUYsTUFBQSxXQUNBLFVBQUFqQixHQUFBbjBGLE9BNEJBOHlG
LEVBQUE3ekYsS0FBQWsxRixFQUFBNTBGLFdBZ0JBdXpGLEVBQUE3ekYsS0FBQTIxRixFQUFBcjFG
LFdBRUFxMUYsRUFBQXIxRixVQUFBNjFGLE1BQUEsV0FDQSxVQUFBUixHQUFBNTBGLEtBQUFnekYs
V0FDQThCLE9BQUE5MEYsS0FBQTgwRixPQUNBRSxXQUFBaDFGLEtBQUFnMUYsV0FDQXQvQixRQUFB
LEdBQUFzOEIsR0FBQWh5RixLQUFBMDFELFNBQ0F6c0IsSUFBQWpwQyxLQUFBaXBDLE9BSUEyckQs
RUFBQW4wRixNQUFBLFdBQ0EsR0FBQTQwRixHQUFBLEdBQUFULEdBQUEsTUFBdUNFLE9BQUEsRUFB
QUUsV0FBQSxJQUV2QyxPQURBSyxHQUFBMXJGLEtBQUEsUUFDQTByRixFQUdBLElBQUFDLElBQUEs
b0JBRUFWLEdBQUFXLFNBQUEsU0FBQXRzRCxFQUFBNnJELEdBQ0EsR0FBQVEsRUFBQTNwRSxRQUFB
bXBFLFFBQ0EsU0FBQXpELFlBQUEsc0JBR0EsV0FBQXVELEdBQUEsTUFBK0JFLFNBQUFwL0IsU0FB
MEI1TyxTQUFBN2QsTUFHekQzeUIsRUFBQTA3RSxVQUNBMTdFLEVBQUE2OUUsVUFDQTc5RSxFQUFB
cytFLFdBRUF0K0UsRUFBQTIrRSxNQUFBLFNBQUFoMUQsRUFBQXUxRCxHQUNBLFVBQUF6K0MsU0FB
QSxTQUFBUyxFQUFBQyxHQVVBLFFBQUFnK0MsS0FDQSxxQkFBQWpCLEdBQ0FBLEVBQUFpQixZQUlB
LG1CQUFBamxGLEtBQUFna0YsRUFBQUUseUJBQ0FGLEVBQUFrQixrQkFBQSxpQkFEQSxPQWZBLEdB
QUFDLEVBRUFBLEdBREF4QixFQUFBNTBGLFVBQUE0ekYsY0FBQWx6RCxLQUFBdTFELEVBQ0F2MUQs
RUFFQSxHQUFBazBELEdBQUFsMEQsRUFBQXUxRCxFQUdBLElBQUFoQixHQUFBLEdBQUFvQixlQWVB
cEIsR0FBQWxDLE9BQUEsV0FDQSxHQUFBcDFELElBQ0E0M0QsT0FBQU4sRUFBQU0sT0FDQUUsV0FB
QVIsRUFBQVEsV0FDQXQvQixVQUFBOCtCLEdBQ0F2ckQsSUFBQXdzRCxLQUVBeGdFLEVBQUEsWUFB
QXUvRCxLQUFBYSxTQUFBYixFQUFBcUIsWUFDQXIrQyxHQUFBLEdBQUFvOUMsR0FBQTMvRCxFQUFB
aUksS0FHQXMzRCxFQUFBakMsUUFBQSxXQUNBOTZDLEVBQUEsR0FBQTcxQyxXQUFBLDRCQUdBNHlG
LEVBQUFzQixVQUFBLFdBQ0FyK0MsRUFBQSxHQUFBNzFDLFdBQUEsNEJBR0E0eUYsRUFBQWo5QixL
QUFBbytCLEVBQUE5cEYsT0FBQThwRixFQUFBMXNELEtBQUEsR0FFQSxZQUFBMHNELEVBQUF2Qixj
QUNBSSxFQUFBdUIsaUJBQUEsR0FHQSxnQkFBQXZCLElBQUExQyxFQUFBVyxPQUNBK0IsRUFBQXdC
LGFBQUEsUUFHQUwsRUFBQWpnQyxRQUFBaHpELFFBQUEsU0FBQW9PLEVBQUFoUSxHQUNBMHpGLEVB
QUF5QixpQkFBQW4xRixFQUFBZ1EsS0FHQTBqRixFQUFBMEIsS0FBQSxtQkFBQVAsR0FBQTNDLFVB
QUEsS0FBQTJDLEVBQUEzQyxjQUdBMThFLEVBQUEyK0UsTUFBQWtCLFVBQUEsSUFDQyxtQkFBQTcv
RSxXQUFBdFcsT2pObzV0QkQsSUFFQyxJQUFLLElBRUEsU0FBU2xCLEVBQVFELEVBQVNILEdrTjl6
dUJoQyxZQVlBLFNBQUEwM0YsR0FBQWpuRixHQUNBLFVBQUFBLEdBQUF0TyxRQUFBdzFGLEVBQUEs
T0FXQSxRQUFBQyxHQUFBQyxFQUFBQyxHQUNBeDJGLEtBQUFrd0IsS0FBQXFtRSxFQUNBdjJGLEtB
QUEwSyxRQUFBOHJGLEVBQ0F4MkYsS0FBQXFWLE1BQUEsRUFTQSxRQUFBb2hGLEdBQUFucUIsRUFB
QXZxQyxFQUFBamhDLEdBQ0EsR0FBQW92QixHQUFBbzhDLEVBQUFwOEMsS0FDQXhsQixFQUFBNGhF
LEVBQUE1aEUsT0FFQXdsQixHQUFBanhCLEtBQUF5TCxFQUFBcTNCLEVBQUF1cUMsRUFBQWozRCxT
QWVBLFFBQUFxaEYsR0FBQTd4RixFQUFBOHhGLEVBQUFILEdBQ0EsU0FBQTN4RixFQUNBLE1BQUFB
LEVBRUEsSUFBQTBrQyxHQUFBK3NELEVBQUFodUYsVUFBQXF1RixFQUFBSCxFQUNBanNELEdBQUEx
bEMsRUFBQTR4RixFQUFBbHRELEdBQ0Erc0QsRUFBQTNxRixRQUFBNDlCLEdBWUEsUUFBQXF0RCxH
QUFBQyxFQUFBQyxFQUFBQyxFQUFBQyxHQUNBaDNGLEtBQUF3bUQsT0FBQXF3QyxFQUNBNzJGLEtB
QUE4MkYsWUFDQTkyRixLQUFBa3dCLEtBQUE2bUUsRUFDQS8yRixLQUFBMEssUUFBQXNzRixFQUNB
aDNGLEtBQUFxVixNQUFBLEVBV0EsUUFBQTRoRixHQUFBM3FCLEVBQUF2cUMsRUFBQW0xRCxHQUNB
LEdBQUExd0MsR0FBQThsQixFQUFBOWxCLE9BQ0Fzd0MsRUFBQXhxQixFQUFBd3FCLFVBQ0E1bUUs
RUFBQW84QyxFQUFBcDhDLEtBQ0F4bEIsRUFBQTRoRSxFQUFBNWhFLFFBR0F5c0YsRUFBQWpuRSxF
QUFBanhCLEtBQUF5TCxFQUFBcTNCLEVBQUF1cUMsRUFBQWozRCxRQUNBeUIsT0FBQXdSLFFBQUE2
dUUsR0FDQUMsRUFBQUQsRUFBQTN3QyxFQUFBMHdDLEVBQUFsMkYsRUFBQTJHLHFCQUNHLE1BQUF3
dkYsSUFDSDFpRixFQUFBaUIsZUFBQXloRixLQUNBQSxFQUFBMWlGLEVBQUF5QyxtQkFBQWlnRixF
QUdBTCxJQUFBSyxFQUFBNXpGLEtBQUF3K0IsS0FBQXgrQixNQUFBNHpGLEVBQUE1ekYsSUFBQSxH
QUFBNnlGLEVBQUFlLEVBQUE1ekYsS0FBQSxLQUFBMnpGLElBRUExd0MsRUFBQS9nRCxLQUFBMHhG
LElBSUEsUUFBQUMsR0FBQXZ5RixFQUFBdXdDLEVBQUE5ZixFQUFBcEYsRUFBQXhsQixHQUNBLEdB
QUEyc0YsR0FBQSxFQUNBLE9BQUEvaEUsSUFDQStoRSxFQUFBakIsRUFBQTlnRSxHQUFBLElBRUEs
SUFBQWlVLEdBQUFxdEQsRUFBQXR1RixVQUFBOHNDLEVBQUFpaUQsRUFBQW5uRSxFQUFBeGxCLEVB
Q0E2L0IsR0FBQTFsQyxFQUFBb3lGLEVBQUExdEQsR0FDQXF0RCxFQUFBanJGLFFBQUE0OUIsR0Fn
QkEsUUFBQSt0RCxHQUFBenlGLEVBQUFxckIsRUFBQXhsQixHQUNBLFNBQUE3RixFQUNBLE1BQUFB
LEVBRUEsSUFBQTJoRCxLQUVBLE9BREE0d0MsR0FBQXZ5RixFQUFBMmhELEVBQUEsS0FBQXQyQixF
QUFBeGxCLEdBQ0E4N0MsRUFHQSxRQUFBK3dDLEdBQUFodUQsRUFBQXhILEVBQUFqaEMsR0FDQSxZ
QVlBLFFBQUEwMkYsR0FBQTN5RixFQUFBNkYsR0FDQSxNQUFBNi9CLEdBQUExbEMsRUFBQTB5RixF
QUFBLE1BU0EsUUFBQWppRixHQUFBelEsR0FDQSxHQUFBMmhELEtBRUEsT0FEQTR3QyxHQUFBdnlG
LEVBQUEyaEQsRUFBQSxLQUFBeGxELEVBQUEyRyxxQkFDQTYrQyxFQXRLQSxHQUFBMTdDLEdBQUFw
TSxFQUFBLEtBQ0ErVixFQUFBL1YsRUFBQSxJQUVBc0MsRUFBQXRDLEVBQUEsR0FDQTZyQyxFQUFB
N3JDLEVBQUEsS0FFQWd1RSxFQUFBNWhFLEVBQUE0aEUsa0JBQ0FoK0QsRUFBQTVELEVBQUE0RCxt
QkFFQTJuRixFQUFBLE1Ba0JBQyxHQUFBLzJGLFVBQUFtTSxXQUFBLFdBQ0ExTCxLQUFBa3dCLEtB
QUEsS0FDQWx3QixLQUFBMEssUUFBQSxLQUNBMUssS0FBQXFWLE1BQUEsR0FFQXZLLEVBQUFpQixh
QUFBdXFGLEVBQUE1cEIsR0E4Q0FrcUIsRUFBQXIzRixVQUFBbU0sV0FBQSxXQUNBMUwsS0FBQXdt
RCxPQUFBLEtBQ0F4bUQsS0FBQTgyRixVQUFBLEtBQ0E5MkYsS0FBQWt3QixLQUFBLEtBQ0Fsd0Is
S0FBQTBLLFFBQUEsS0FDQTFLLEtBQUFxVixNQUFBLEdBRUF2SyxFQUFBaUIsYUFBQTZxRixFQUFB
bG9GLEVBb0ZBLElBQUE2RixJQUNBN1IsUUFBQWcwRixFQUNBcjBGLElBQUFpMUYsRUFDQUYsK0JB
Q0EvaEYsTUFBQW1pRixFQUNBbGlGLFVBR0F4VyxHQUFBRCxRQUFBMFYsR2xOODB1Qk0sU0FBU3pW
LEVBQVFELEVBQVNILEdtTmpndkJoQyxZQUVBLElBQUErVixHQUFBL1YsRUFBQSxJQU9BKzRGLEVB
QUFoakYsRUFBQUssY0FXQU4sR0FDQTNVLEVBQUE0M0YsRUFBQSxLQUNBQyxLQUFBRCxFQUFBLFFB
Q0FFLFFBQUFGLEVBQUEsV0FDQW4wQyxLQUFBbTBDLEVBQUEsUUFDQUcsUUFBQUgsRUFBQSxXQUNB
SSxNQUFBSixFQUFBLFNBQ0FLLE1BQUFMLEVBQUEsU0FDQTMzRixFQUFBMjNGLEVBQUEsS0FDQWox
QixLQUFBaTFCLEVBQUEsUUFDQU0sSUFBQU4sRUFBQSxPQUNBTyxJQUFBUCxFQUFBLE9BQ0FRLElB
QUFSLEVBQUEsT0FDQVMsV0FBQVQsRUFBQSxjQUNBeGlFLEtBQUF3aUUsRUFBQSxRQUNBaDFCLEdB
QUFnMUIsRUFBQSxNQUNBMXpFLE9BQUEwekUsRUFBQSxVQUNBVSxPQUFBVixFQUFBLFVBQ0E1ekMs
UUFBQTR6QyxFQUFBLFdBQ0FuakMsS0FBQW1qQyxFQUFBLFFBQ0F0MkYsS0FBQXMyRixFQUFBLFFB
Q0FsMEMsSUFBQWswQyxFQUFBLE9BQ0EzekMsU0FBQTJ6QyxFQUFBLFlBQ0Evd0UsS0FBQSt3RSxF
QUFBLFFBQ0FXLFNBQUFYLEVBQUEsWUFDQVksR0FBQVosRUFBQSxNQUNBYSxJQUFBYixFQUFBLE9B
Q0FjLFFBQUFkLEVBQUEsV0FDQWUsSUFBQWYsRUFBQSxPQUNBZ0IsT0FBQWhCLEVBQUEsVUFDQTd6
QixJQUFBNnpCLEVBQUEsT0FDQWlCLEdBQUFqQixFQUFBLE1BQ0FrQixHQUFBbEIsRUFBQSxNQUNB
bUIsR0FBQW5CLEVBQUEsTUFDQS8wQixNQUFBKzBCLEVBQUEsU0FDQW9CLFNBQUFwQixFQUFBLFlB
Q0FxQixXQUFBckIsRUFBQSxjQUNBc0IsT0FBQXRCLEVBQUEsVUFDQXVCLE9BQUF2QixFQUFBLFVB
Q0F0aUMsS0FBQXNpQyxFQUFBLFFBQ0F3QixHQUFBeEIsRUFBQSxNQUNBeUIsR0FBQXpCLEVBQUEs
TUFDQTBCLEdBQUExQixFQUFBLE1BQ0EyQixHQUFBM0IsRUFBQSxNQUNBNEIsR0FBQTVCLEVBQUEs
TUFDQTZCLEdBQUE3QixFQUFBLE1BQ0FoRCxLQUFBZ0QsRUFBQSxRQUNBOUMsT0FBQThDLEVBQUEs
VUFDQThCLE9BQUE5QixFQUFBLFVBQ0E5MEIsR0FBQTgwQixFQUFBLE1BQ0F4b0YsS0FBQXdvRixF
QUFBLFFBQ0FwNEYsRUFBQW80RixFQUFBLEtBQ0ErQixPQUFBL0IsRUFBQSxVQUNBNzBCLElBQUE2
MEIsRUFBQSxPQUNBeDNELE1BQUF3M0QsRUFBQSxTQUNBZ0MsSUFBQWhDLEVBQUEsT0FDQWlDLElB
QUFqQyxFQUFBLE9BQ0E1MEIsT0FBQTQwQixFQUFBLFVBQ0FsaEMsTUFBQWtoQyxFQUFBLFNBQ0Fq
MEMsT0FBQWkwQyxFQUFBLFVBQ0FrQyxHQUFBbEMsRUFBQSxNQUNBMzBCLEtBQUEyMEIsRUFBQSxR
QUNBbUMsS0FBQW5DLEVBQUEsUUFDQXAxRixJQUFBbzFGLEVBQUEsT0FDQW9DLEtBQUFwQyxFQUFB
LFFBQ0FxQyxLQUFBckMsRUFBQSxRQUNBcDBCLFNBQUFvMEIsRUFBQSxZQUNBMTBCLEtBQUEwMEIs
RUFBQSxRQUNBc0MsTUFBQXRDLEVBQUEsU0FDQXVDLElBQUF2QyxFQUFBLE9BQ0F3QyxTQUFBeEMs
RUFBQSxZQUNBamdGLE9BQUFpZ0YsRUFBQSxVQUNBeUMsR0FBQXpDLEVBQUEsTUFDQTl6QyxTQUFB
OHpDLEVBQUEsWUFDQTd6QyxPQUFBNnpDLEVBQUEsVUFDQTBDLE9BQUExQyxFQUFBLFVBQ0FyNEYs
RUFBQXE0RixFQUFBLEtBQ0FoMEMsTUFBQWcwQyxFQUFBLFNBQ0EyQyxRQUFBM0MsRUFBQSxXQUNB
dDBCLElBQUFzMEIsRUFBQSxPQUNBNEMsU0FBQTVDLEVBQUEsWUFDQTZDLEVBQUE3QyxFQUFBLEtB
Q0E4QyxHQUFBOUMsRUFBQSxNQUNBK0MsR0FBQS9DLEVBQUEsTUFDQWdELEtBQUFoRCxFQUFBLFFB
Q0FuMEYsRUFBQW0wRixFQUFBLEtBQ0FpRCxLQUFBakQsRUFBQSxRQUNBa0QsT0FBQWxELEVBQUEs
VUFDQW1ELFFBQUFuRCxFQUFBLFdBQ0F4MkQsT0FBQXcyRCxFQUFBLFVBQ0FvRCxNQUFBcEQsRUFB
QSxTQUNBdjBGLE9BQUF1MEYsRUFBQSxVQUNBNytCLEtBQUE2K0IsRUFBQSxRQUNBcUQsT0FBQXJE
LEVBQUEsVUFDQTluQyxNQUFBOG5DLEVBQUEsU0FDQXNELElBQUF0RCxFQUFBLE9BQ0F2K0IsUUFB
QXUrQixFQUFBLFdBQ0F1RCxJQUFBdkQsRUFBQSxPQUNBd0QsTUFBQXhELEVBQUEsU0FDQTF6QyxN
QUFBMHpDLEVBQUEsU0FDQXZ6QyxHQUFBdXpDLEVBQUEsTUFDQXIwQixTQUFBcTBCLEVBQUEsWUFD
QXp6QyxNQUFBeXpDLEVBQUEsU0FDQXR6QyxHQUFBc3pDLEVBQUEsTUFDQXh6QyxNQUFBd3pDLEVB
QUEsU0FDQTF0RixLQUFBMHRGLEVBQUEsUUFDQWxpRCxNQUFBa2lELEVBQUEsU0FDQS96QyxHQUFB
K3pDLEVBQUEsTUFDQTN3RCxNQUFBMndELEVBQUEsU0FDQXlELEVBQUF6RCxFQUFBLEtBQ0EwRCxH
QUFBMUQsRUFBQSxNQUNBMkQsSUFBQTNELEVBQUEsT0FDQTRELE1BQUE1RCxFQUFBLFNBQ0F6MEIs
SUFBQXkwQixFQUFBLE9BR0E2RCxPQUFBN0QsRUFBQSxVQUNBeG1CLFNBQUF3bUIsRUFBQSxZQUNB
OEQsS0FBQTlELEVBQUEsUUFDQStELFFBQUEvRCxFQUFBLFdBQ0FnRSxFQUFBaEUsRUFBQSxLQUNB
OW5FLE1BQUE4bkUsRUFBQSxTQUNBdkcsS0FBQXVHLEVBQUEsUUFDQWlFLGVBQUFqRSxFQUFBLGtC
QUNBN2hCLEtBQUE2aEIsRUFBQSxRQUNBM3NCLEtBQUEyc0IsRUFBQSxRQUNBaGdDLFFBQUFnZ0Ms
RUFBQSxXQUNBa0UsUUFBQWxFLEVBQUEsV0FDQW1FLFNBQUFuRSxFQUFBLFlBQ0FvRSxlQUFBcEUs
RUFBQSxrQkFDQXFFLEtBQUFyRSxFQUFBLFFBQ0FzRSxLQUFBdEUsRUFBQSxRQUNBcHhFLElBQUFv
eEUsRUFBQSxPQUNBdG9GLEtBQUFzb0YsRUFBQSxRQUNBdUUsTUFBQXZFLEVBQUEsU0FHQTM0RixH
QUFBRCxRQUFBMlYsR25OaWh2Qk0sU0FBUzFWLEVBQVFELEVBQVNILEdvTjlxdkJoQyxZQUVBLElB
QUF1OUYsR0FBQXY5RixFQUFBLElBQ0FnWCxFQUFBdW1GLEVBQUF2bUYsZUFFQXNCLEVBQUF0WSxF
QUFBLEdBRUFJLEdBQUFELFFBQUFtWSxFQUFBdEIsSXBOOHJ2QkEsSUFFTSxTQUFTNVcsRUFBUUQs
RUFBU0gsR3FOdnN2QmhDLFlBRUEsSUFBQXU5RixHQUFBdjlGLEVBQUEsSUFDQThXLEVBQUF5bUYs
RUFBQXptRixVQUVBMG1GLEVBQUF4OUYsRUFBQSxJQUNBZ1gsRUFBQXdtRixFQUFBeG1GLGVBRUE2
aUMsRUFBQTc1QyxFQUFBLElBQ0FzWSxFQUFBdFksRUFBQSxHQUVBSSxHQUFBRCxRQUFBbVksRUFB
QXhCLEVBQUFFLEVBQUE2aUMsSXJOdXR2QkEsSUFFTSxTQUFTejVDLEVBQVFELEdzTm51dkJ2QixZ
QUlBLFNBQUFzOUYsS0FDQSxNQUFBQyxLQUhBLEdBQUFBLEdBQUEsQ0FNQXQ5RixHQUFBRCxRQUFB
czlGLEd0Tm92dkJNLFNBQVNyOUYsRUFBUUQsRUFBU0gsR3VON3Z2QmhDLFlBZ0JBLElBQUEyOUYs
R0FBQSxZQXFDQXY5RixHQUFBRCxRQUFBdzlGLEd2TjZ3dkJNLFNBQVN2OUYsRUFBUUQsRUFBU0gs
R3dObjB2QmhDLFlBc0JBLFNBQUFtVyxHQUFBaFEsR0FFQSxNQURBNFAsR0FBQWlCLGVBQUE3USxH
QUFBLE9BQUFTLEVBQUEsT0FDQVQsRUF0QkEsR0FBQVMsR0FBQTVHLEVBQUEsSUFFQStWLEVBQUEv
VixFQUFBLEdBRUFBLEdBQUEsRUFxQkFJLEdBQUFELFFBQUFnVyxHeE5rMXZCTSxTQUFTL1YsRUFB
UUQsRUFBU0gsR3lONTJ2QmhDLFlBbUNBLFNBQUEwcUMsR0FBQXBsQyxFQUFBNmhCLEdBR0EsTUFB
QTdoQixJQUFBLGdCQUFBQSxJQUFBLE1BQUFBLEVBQUFULElBRUFzckIsRUFBQWpKLE9BQUE1aEIs
RUFBQVQsS0FHQXNpQixFQUFBeGYsU0FBQSxJQVdBLFFBQUFnakMsR0FBQXhrQyxFQUFBeWtDLEVB
QUE3Z0MsRUFBQThnQyxHQUNBLEdBQUE1L0IsU0FBQTlFLEVBT0EsSUFMQSxjQUFBOEUsR0FBQSxZ
QUFBQSxJQUVBOUUsRUFBQSxNQUdBLE9BQUFBLEdBQUEsV0FBQThFLEdBQUEsV0FBQUEsR0FHQSxX
QUFBQSxHQUFBOUUsRUFBQTZSLFdBQUFSLEVBS0EsTUFKQXpOLEdBQUE4Z0MsRUFBQTFrQyxFQUdB
LEtBQUF5a0MsRUFBQUUsRUFBQUosRUFBQXZrQyxFQUFBLEdBQUF5a0MsR0FDQSxDQUdBLElBQUF2
SCxHQUNBMEgsRUFDQUMsRUFBQSxFQUNBQyxFQUFBLEtBQUFMLEVBQUFFLEVBQUFGLEVBQUFNLENB
RUEsSUFBQTl5QixNQUFBd1IsUUFBQXpqQixHQUNBLE9BQUF4RixHQUFBLEVBQW1CQSxFQUFBd0Ys
RUFBQXZELE9BQXFCakMsSUFDeEMwaUMsRUFBQWw5QixFQUFBeEYsR0FDQW9xQyxFQUFBRSxFQUFB
UCxFQUFBckgsRUFBQTFpQyxHQUNBcXFDLEdBQUFMLEVBQUF0SCxFQUFBMEgsRUFBQWhoQyxFQUFB
OGdDLE9BRUcsQ0FDSCxHQUFBTSxHQUFBQyxFQUFBamxDLEVBQ0EsSUFBQWdsQyxFQUFBLENBQ0Es
R0FDQUUsR0FEQUMsRUFBQUgsRUFBQTVxQyxLQUFBNEYsRUFFQSxJQUFBZ2xDLElBQUFobEMsRUFB
QW9sQyxRQUVBLElBREEsR0FBQUMsR0FBQSxJQUNBSCxFQUFBQyxFQUFBbEUsUUFBQXFFLE1BQ0Fw
SSxFQUFBZ0ksRUFBQWo1QixNQUNBMjRCLEVBQUFFLEVBQUFQLEVBQUFySCxFQUFBbUksS0FDQVIs
R0FBQUwsRUFBQXRILEVBQUEwSCxFQUFBaGhDLEVBQUE4Z0MsT0FlQSxRQUFBUSxFQUFBQyxFQUFB
bEUsUUFBQXFFLE1BQUEsQ0FDQSxHQUFBQyxHQUFBTCxFQUFBajVCLEtBQ0FzNUIsS0FDQXJJLEVB
QUFxSSxFQUFBLEdBQ0FYLEVBQUFFLEVBQUE5YSxFQUFBakosT0FBQXdrQixFQUFBLElBQUFSLEVB
QUFSLEVBQUFySCxFQUFBLEdBQ0EySCxHQUFBTCxFQUFBdEgsRUFBQTBILEVBQUFoaEMsRUFBQThn
QyxTQUlLLGVBQUE1L0IsRUFBQTtBQUNMLEdBQUEwZ0MsR0FBQSxHQWFBQyxFQUFBdG9DLE9BQUE2
QyxFQUNvT1MsR0FBQSx5QkFBQWdsQyxFQUFBLHFCQUErR2hyQyxPQUFBc0QsS0FBQWlDLEdBQUF0
QyxLQUFBLFVBQXlDK25DLEVBQUFELElBSTVYLE1BQUFYLEdBbUJBLFFBQUFhLEdBQUExbEMsRUFB
QTRELEVBQUE4Z0MsR0FDQSxhQUFBMWtDLEVBQ0EsRUFHQXdrQyxFQUFBeGtDLEVBQUEsR0FBQTRE
LEVBQUE4Z0MsR0EvSkEsR0FBQWprQyxHQUFBNUcsRUFBQSxJQUdBd1gsR0FEQXhYLEVBQUEsSUFD
QUEsRUFBQSxLQUVBb3JDLEVBQUFwckMsRUFBQSxLQUVBbXdCLEdBREFud0IsRUFBQSxHQUNBQSxF
QUFBLE1BR0E4cUMsR0FGQTlxQyxFQUFBLEdBRUEsS0FDQWtyQyxFQUFBLEdBdUpBOXFDLEdBQUFE
LFFBQUEwckMsR3pONDN2Qk0sU0FBU3pyQyxFQUFRRCxFQUFTSCxHME4xaXdCaEMsWUFZQSxTQUFB
bW9CLEdBQUFDLEdBQXNDLE1BQUFBLE1BQUFDLFdBQUFELEdBQXVDRSxRQUFBRixHQWtCN0UsUUFB
QUksS0FDQSxPQUFBcXJCLEdBQUFseEMsVUFBQUMsT0FBQWc3RixFQUFBeGxGLE1BQUF5N0IsR0FB
QUMsRUFBQSxFQUF3RUEsRUFBQUQsRUFBYUMsSUFDckY4cEQsRUFBQTlwRCxHQUFBbnhDLFVBQUFt
eEMsRUFHQSxpQkFBQW5yQixHQUNBLGdCQUFBNDFCLEVBQUFDLEVBQUFDLEdBQ0EsR0FBQS9SLEdB
QUEvakIsRUFBQTQxQixFQUFBQyxFQUFBQyxHQUNBby9DLEVBQUFueEQsRUFBQTJELFNBQ0F5dEQs
S0FFQUMsR0FDQWp4RCxTQUFBSixFQUFBSSxTQUNBdUQsU0FBQSxTQUFBeU8sR0FDQSxNQUFBKytD
LEdBQUEvK0MsSUFRQSxPQUxBZy9DLEdBQUFGLEVBQUFqNkYsSUFBQSxTQUFBcTZGLEdBQ0EsTUFB
QUEsR0FBQUQsS0FFQUYsRUFBQXgwRSxFQUFBLFFBQUFob0IsTUFBQVcsT0FBQTg3RixHQUFBcHhE
LEVBQUEyRCxVQUVBdEIsS0FBd0JyQyxHQUN4QjJELFNBQUF3dEQsTUFuREExOUYsRUFBQWtvQixZ
QUFBLENBRUEsSUFBQTBtQixHQUFBbnVDLE9BQUF3QyxRQUFBLFNBQUFtQixHQUFtRCxPQUFBNUQs
R0FBQSxFQUFnQkEsRUFBQWdDLFVBQUFDLE9BQXNCakMsSUFBQSxDQUFPLEdBQUE2RCxHQUFBN0Is
VUFBQWhDLEVBQTJCLFFBQUFrRSxLQUFBTCxHQUEwQjVELE9BQUFDLFVBQUFDLGVBQUFQLEtBQUFp
RSxFQUFBSyxLQUF5RE4sRUFBQU0sR0FBQUwsRUFBQUssSUFBaUMsTUFBQU4sR0FFL09wRSxHQUFB
LFFBQUFxb0IsQ0FFQSxJQUFBWSxHQUFBcHBCLEVBQUEsSUFFQXFwQixFQUFBbEIsRUFBQWlCLEkx
Titsd0JNLFNBQVNocEIsRUFBUUQsRzJOem13QnZCLFlBSUEsU0FBQTg5RixHQUFBQyxFQUFBN3RE
LEdBQ0Esa0JBQ0EsTUFBQUEsR0FBQTZ0RCxFQUFBNzhGLE1BQUFXLE9BQUFXLGFBeUJBLFFBQUE4
bEIsR0FBQTAxRSxFQUFBOXRELEdBQ0EscUJBQUE4dEQsR0FDQSxNQUFBRixHQUFBRSxFQUFBOXRE
LEVBR0Esb0JBQUE4dEQsSUFBQSxPQUFBQSxFQUNBLFNBQUFsOEYsT0FBQSxpRkFBQWs4RixFQUFB
LGFBQUFBLElBQUEsNkZBS0EsUUFGQWo2RixHQUFBdEQsT0FBQXNELEtBQUFpNkYsR0FDQUMsS0FD
QXo5RixFQUFBLEVBQWlCQSxFQUFBdUQsRUFBQXRCLE9BQWlCakMsSUFBQSxDQUNsQyxHQUFBa0Us
R0FBQVgsRUFBQXZELEdBQ0F1OUYsRUFBQUMsRUFBQXQ1RixFQUNBLG1CQUFBcTVGLEtBQ0FFLEVB
QUF2NUYsR0FBQW81RixFQUFBQyxFQUFBN3RELElBR0EsTUFBQSt0RCxHQS9DQWorRixFQUFBa29C
LFlBQUEsRUFDQWxvQixFQUFBLFFBQUFzb0IsRzNOOHB3Qk0sU0FBU3JvQixFQUFRRCxFQUFTSCxH
NE5qcXdCaEMsWUFlQSxTQUFBbW9CLEdBQUFDLEdBQXNDLE1BQUFBLE1BQUFDLFdBQUFELEdBQXVD
RSxRQUFBRixHQUU3RSxRQUFBaTJFLEdBQUF4NUYsRUFBQWk2QyxHQUNBLEdBQUF3L0MsR0FBQXgv
QyxLQUFBN3pDLEtBQ0FzekYsRUFBQUQsR0FBQSxJQUFBQSxFQUFBMzJGLFdBQUEsZ0JBRUEsdUJB
QUE0MkYsRUFBQSxjQUFBMTVGLEVBQUEsaUxBNEJBLFFBQUEyNUYsR0FBQUMsR0FDQTc5RixPQUFB
c0QsS0FBQXU2RixHQUFBejZGLFFBQUEsU0FBQWEsR0FDQSxHQUFBMDVDLEdBQUFrZ0QsRUFBQTU1
RixHQUNBKzhDLEVBQUFyRCxFQUFBdjhDLFFBQTJDaUosS0FBQTJkLEVBQUF1MkIsWUFBQUMsTUFF
M0MsdUJBQUF3QyxHQUNBLFNBQUEzL0MsT0FBQSxZQUFBNEMsRUFBQSxnUkFHQSxJQUFBb0csR0FB
QSxnQ0FBQXhELEtBQUFDLFNBQUFDLFNBQUEsSUFBQTJmLFVBQUEsR0FBQXZqQixNQUFBLElBQUFG
LEtBQUEsSUFDQSxJQUFnRCxtQkFBaEQwNkMsR0FBQXY4QyxRQUFtQ2lKLFNBQ25DLFNBQUFoSixP
QUFBLFlBQUE0QyxFQUFBLGdGQUFBK2pCLEVBQUF1MkIsWUFBQUMsS0FBQSxxVEFxQkEsUUFBQTEy
QixHQUFBKzFFLEdBR0EsT0FGQUMsR0FBQTk5RixPQUFBc0QsS0FBQXU2RixHQUNBRSxLQUNBaCtG
LEVBQUEsRUFBaUJBLEVBQUErOUYsRUFBQTk3RixPQUF3QmpDLElBQUEsQ0FDekMsR0FBQWtFLEdB
QUE2NUYsRUFBQS85RixFQVFBLG1CQUFBODlGLEdBQUE1NUYsS0FDQTg1RixFQUFBOTVGLEdBQUE0
NUYsRUFBQTU1RixJQUdBLEdBQUErNUYsR0FBQWgrRixPQUFBc0QsS0FBQXk2RixHQU9BRSxFQUFB
LE1BQ0EsS0FDQUwsRUFBQUcsR0FDRyxNQUFBLzhGLEdBQ0hpOUYsRUFBQWo5RixFQUdBLGtCQUNB
LEdBQUF1dEMsR0FBQXhzQyxVQUFBQyxPQUFBLEdBQUFaLFNBQUFXLFVBQUEsR0FBQUEsVUFBQSxN
QUNBbThDLEVBQUFuOEMsVUFBQSxFQUVBLElBQUFrOEYsRUFDQSxLQUFBQSxFQVlBLFFBRkFDLElB
QUEsRUFDQWwvQixLQUNBbS9CLEVBQUEsRUFBb0JBLEVBQUFILEVBQUFoOEYsT0FBOEJtOEYsSUFB
QSxDQUNsRCxHQUFBanJELEdBQUE4cUQsRUFBQUcsR0FDQXhnRCxFQUFBb2dELEVBQUE3cUQsR0FD
QWtyRCxFQUFBN3ZELEVBQUEyRSxHQUNBbXJELEVBQUExZ0QsRUFBQXlnRCxFQUFBbGdELEVBQ0Es
dUJBQUFtZ0QsR0FBQSxDQUNBLEdBQUFDLEdBQUFiLEVBQUF2cUQsRUFBQWdMLEVBQ0EsVUFBQTc4
QyxPQUFBaTlGLEdBRUF0L0IsRUFBQTlyQixHQUFBbXJELEVBQ0FILEtBQUFHLElBQUFELEVBRUEs
TUFBQUYsR0FBQWwvQixFQUFBendCLEdBMUlBaHZDLEVBQUFrb0IsWUFBQSxFQUNBbG9CLEVBQUEs
UUFBQXVvQixDQUVBLElBQUFFLEdBQUE1b0IsRUFBQSxJQUVBa3pDLEVBQUFsekMsRUFBQSxJQUlB
c3BCLEdBRkFuQixFQUFBK3FCLEdBRUFsekMsRUFBQSxJQUVBbW9CLEdBQUFtQixJNU53eXdCTSxT
QUFTbHBCLEVBQVFELEVBQVNILEc2TnJ6d0JoQ0ksRUFBQUQsUUFBQUgsRUFBQSxNN040endCTSxT
QUFTSSxFQUFRRCxFQUFTSCxJOE41endCaEMsU0FBQXluRCxFQUFBcm5ELEdBQUEsWUFVQSxTQUFB
K25CLEdBQUFDLEdBQXNDLE1BQUFBLE1BQUFDLFdBQUFELEdBQXVDRSxRQUFBRixHQVI3RXhuQixP
QUFBNm5DLGVBQUF0b0MsRUFBQSxjQUNBaVMsT0FBQSxHQUdBLElBTUFva0IsR0FOQTJvRSxFQUFB
bi9GLEVBQUEsS0FFQW8vRixFQUFBajNFLEVBQUFnM0UsRUFRQTNvRSxHQURBLG1CQUFBNWUsTUFD
QUEsS0FDQyxtQkFBQTlQLFFBQ0RBLE9BQ0MsbUJBQUEyL0MsR0FDREEsRUFFQXJuRCxDQUtBLElB
QUEwbkQsSUFBQSxFQUFBczNDLEVBQUEsU0FBQTVvRSxFQUNBcjJCLEdBQUEsUUFBQTJuRCxJOU4r
endCOEJ2bkQsS0FBS0osRUFBVSxXQUFhLE1BQU9tQixTQUFZdEIsRUFBb0IsS0FBS0ksS0FJaEcs
U0FBU0EsRUFBUUQsRytOLzF3QnZCLFlBTUEsU0FBQWsvRixHQUFBN29FLEdBQ0EsR0FBQXN4QixH
QUNBdzNDLEVBQUE5b0UsRUFBQUMsTUFhQSxPQVhBLGtCQUFBNm9FLEdBQ0FBLEVBQUFqZ0QsV0FD
QXlJLEVBQUF3M0MsRUFBQWpnRCxZQUVBeUksRUFBQXczQyxFQUFBLGNBQ0FBLEVBQUFqZ0QsV0FB
QXlJLEdBR0FBLEVBQUEsZUFHQUEsRUFuQkFsbkQsT0FBQTZuQyxlQUFBdG9DLEVBQUEsY0FDQWlT
LE9BQUEsSUFFQWpTLEVBQUEsUUFBQWsvRixHL05zM3dCTSxTQUFTai9GLEVBQVFELEVBQVNILEVB
QXFCdS9GLEdnT2gzd0JyRCxZQUVBLElBQUEzNEYsR0FBQTVHLEVBQUF1L0YsR0FXQUMsR0FUQXgv
RixFQUFBLEdBU0EsU0FBQXkvRixHQUNBLEdBQUFDLEdBQUFwK0YsSUFDQSxJQUFBbytGLEVBQUFD
LGFBQUEvOEYsT0FBQSxDQUNBLEdBQUFzNUIsR0FBQXdqRSxFQUFBQyxhQUFBejRGLEtBRUEsT0FE
QXc0RixHQUFBbi9GLEtBQUEyN0IsRUFBQXVqRSxHQUNBdmpFLEVBRUEsVUFBQXdqRSxHQUFBRCxL
QUlBenhCLEVBQUEsU0FBQTR4QixFQUFBQyxHQUNBLEdBQUFILEdBQUFwK0YsSUFDQSxJQUFBbytG
LEVBQUFDLGFBQUEvOEYsT0FBQSxDQUNBLEdBQUFzNUIsR0FBQXdqRSxFQUFBQyxhQUFBejRGLEtB
RUEsT0FEQXc0RixHQUFBbi9GLEtBQUEyN0IsRUFBQTBqRSxFQUFBQyxHQUNBM2pFLEVBRUEsVUFB
QXdqRSxHQUFBRSxFQUFBQyxJQUlBQyxFQUFBLFNBQUFGLEVBQUFDLEVBQUFFLEdBQ0EsR0FBQUws
R0FBQXArRixJQUNBLElBQUFvK0YsRUFBQUMsYUFBQS84RixPQUFBLENBQ0EsR0FBQXM1QixHQUFB
d2pFLEVBQUFDLGFBQUF6NEYsS0FFQSxPQURBdzRGLEdBQUFuL0YsS0FBQTI3QixFQUFBMGpFLEVB
QUFDLEVBQUFFLEdBQ0E3akUsRUFFQSxVQUFBd2pFLEdBQUFFLEVBQUFDLEVBQUFFLElBSUEvdkYs
RUFBQSxTQUFBNHZGLEVBQUFDLEVBQUFFLEVBQUFDLEdBQ0EsR0FBQU4sR0FBQXArRixJQUNBLElB
QUFvK0YsRUFBQUMsYUFBQS84RixPQUFBLENBQ0EsR0FBQXM1QixHQUFBd2pFLEVBQUFDLGFBQUF6
NEYsS0FFQSxPQURBdzRGLEdBQUFuL0YsS0FBQTI3QixFQUFBMGpFLEVBQUFDLEVBQUFFLEVBQUFD
LEdBQ0E5akUsRUFFQSxVQUFBd2pFLEdBQUFFLEVBQUFDLEVBQUFFLEVBQUFDLElBSUFDLEVBQUEs
U0FBQS9qRSxHQUNBLEdBQUF3akUsR0FBQXArRixJQUNBNDZCLGFBQUF3akUsR0FBQSxPQUFBOTRG
LEVBQUEsTUFDQXMxQixFQUFBbHZCLGFBQ0EweUYsRUFBQUMsYUFBQS84RixPQUFBODhGLEVBQUFR
LFVBQ0FSLEVBQUFDLGFBQUE1NEYsS0FBQW0xQixJQUlBaWtFLEVBQUEsR0FDQUMsRUFBQVosRUFX
QW55RixFQUFBLFNBQUFnekYsRUFBQUMsR0FHQSxHQUFBQyxHQUFBRixDQU9BLE9BTkFFLEdBQUFa
LGdCQUNBWSxFQUFBMzJGLFVBQUEwMkYsR0FBQUYsRUFDQUcsRUFBQUwsV0FDQUssRUFBQUwsU0FB
QUMsR0FFQUksRUFBQXR6RixRQUFBZ3pGLEVBQ0FNLEdBR0FuMEYsR0FDQWlCLGVBQ0FteUYsb0JB
Q0F4eEIsb0JBQ0E4eEIsc0JBQ0E5dkYscUJBR0E1UCxHQUFBRCxRQUFBaU0iLCJmaWxlIjoic3Rh
dGljL2pzL21haW4uNDNhMDk0OGMuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqLyAoZnVu
Y3Rpb24obW9kdWxlcykgeyAvLyB3ZWJwYWNrQm9vdHN0cmFwXG4vKioqKioqLyBcdC8vIFRoZSBt
b2R1bGUgY2FjaGVcbi8qKioqKiovIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcbi8qKioq
KiovXG4vKioqKioqLyBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4vKioqKioqLyBcdGZ1bmN0
aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcbi8qKioqKiovXG4vKioqKioqLyBc
dFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4vKioqKioqLyBcdFx0aWYoaW5zdGFs
bGVkTW9kdWxlc1ttb2R1bGVJZF0pXG4vKioqKioqLyBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9k
dWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gQ3JlYXRl
IGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbi8qKioqKiovIFx0XHR2
YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4vKioqKioqLyBcdFx0
XHRleHBvcnRzOiB7fSxcbi8qKioqKiovIFx0XHRcdGlkOiBtb2R1bGVJZCxcbi8qKioqKiovIFx0
XHRcdGxvYWRlZDogZmFsc2Vcbi8qKioqKiovIFx0XHR9O1xuLyoqKioqKi9cbi8qKioqKiovIFx0
XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbi8qKioqKiovIFx0XHRtb2R1bGVzW21v
ZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dl
YnBhY2tfcmVxdWlyZV9fKTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRmxhZyB0aGUgbW9k
dWxlIGFzIGxvYWRlZFxuLyoqKioqKi8gXHRcdG1vZHVsZS5sb2FkZWQgPSB0cnVlO1xuLyoqKioq
Ki9cbi8qKioqKiovIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuLyoq
KioqKi8gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbi8qKioqKiovIFx0fVxuLyoqKioqKi9c
bi8qKioqKiovXG4vKioqKioqLyBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2Vi
cGFja19tb2R1bGVzX18pXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVs
ZXM7XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuLyoq
KioqKi8gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuLyoqKioq
Ki9cbi8qKioqKiovIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbi8qKioqKiovIFx0X193
ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCIuL1wiO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gTG9h
ZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4vKioqKioqLyBcdHJldHVybiBfX3dl
YnBhY2tfcmVxdWlyZV9fKDApO1xuLyoqKioqKi8gfSlcbi8qKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovXG4vKioq
KioqLyAoKGZ1bmN0aW9uKG1vZHVsZXMpIHtcblx0Ly8gQ2hlY2sgYWxsIG1vZHVsZXMgZm9yIGRl
ZHVwbGljYXRlZCBtb2R1bGVzXG5cdGZvcih2YXIgaSBpbiBtb2R1bGVzKSB7XG5cdFx0aWYoT2Jq
ZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZHVsZXMsIGkpKSB7XG5cdFx0XHRz
d2l0Y2godHlwZW9mIG1vZHVsZXNbaV0pIHtcblx0XHRcdGNhc2UgXCJmdW5jdGlvblwiOiBicmVh
aztcblx0XHRcdGNhc2UgXCJvYmplY3RcIjpcblx0XHRcdFx0Ly8gTW9kdWxlIGNhbiBiZSBjcmVh
dGVkIGZyb20gYSB0ZW1wbGF0ZVxuXHRcdFx0XHRtb2R1bGVzW2ldID0gKGZ1bmN0aW9uKF9tKSB7
XG5cdFx0XHRcdFx0dmFyIGFyZ3MgPSBfbS5zbGljZSgxKSwgZm4gPSBtb2R1bGVzW19tWzBdXTtc
blx0XHRcdFx0XHRyZXR1cm4gZnVuY3Rpb24gKGEsYixjKSB7XG5cdFx0XHRcdFx0XHRmbi5hcHBs
eSh0aGlzLCBbYSxiLGNdLmNvbmNhdChhcmdzKSk7XG5cdFx0XHRcdFx0fTtcblx0XHRcdFx0fSht
b2R1bGVzW2ldKSk7XG5cdFx0XHRcdGJyZWFrO1xuXHRcdFx0ZGVmYXVsdDpcblx0XHRcdFx0Ly8g
TW9kdWxlIGlzIGEgY29weSBvZiBhbm90aGVyIG1vZHVsZVxuXHRcdFx0XHRtb2R1bGVzW2ldID0g
bW9kdWxlc1ttb2R1bGVzW2ldXTtcblx0XHRcdFx0YnJlYWs7XG5cdFx0XHR9XG5cdFx0fVxuXHR9
XG5cdHJldHVybiBtb2R1bGVzO1xufShbXG4vKiAwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHRfX3dlYnBhY2tfcmVxdWlyZV9f
KDE5Nik7XG5cdG1vZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMDQpO1xuXG5c
bi8qKiovIH0sXG4vKiAxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0LyoqXG5cdCAqIFVz
ZSBpbnZhcmlhbnQoKSB0byBhc3NlcnQgc3RhdGUgd2hpY2ggeW91ciBwcm9ncmFtIGFzc3VtZXMg
dG8gYmUgdHJ1ZS5cblx0ICpcblx0ICogUHJvdmlkZSBzcHJpbnRmLXN0eWxlIGZvcm1hdCAob25s
eSAlcyBpcyBzdXBwb3J0ZWQpIGFuZCBhcmd1bWVudHNcblx0ICogdG8gcHJvdmlkZSBpbmZvcm1h
dGlvbiBhYm91dCB3aGF0IGJyb2tlIGFuZCB3aGF0IHlvdSB3ZXJlXG5cdCAqIGV4cGVjdGluZy5c
blx0ICpcblx0ICogVGhlIGludmFyaWFudCBtZXNzYWdlIHdpbGwgYmUgc3RyaXBwZWQgaW4gcHJv
ZHVjdGlvbiwgYnV0IHRoZSBpbnZhcmlhbnRcblx0ICogd2lsbCByZW1haW4gdG8gZW5zdXJlIGxv
Z2ljIGRvZXMgbm90IGRpZmZlciBpbiBwcm9kdWN0aW9uLlxuXHQgKi9cblx0XG5cdHZhciB2YWxp
ZGF0ZUZvcm1hdCA9IGZ1bmN0aW9uIHZhbGlkYXRlRm9ybWF0KGZvcm1hdCkge307XG5cdFxuXHRp
ZiAoZmFsc2UpIHtcblx0ICB2YWxpZGF0ZUZvcm1hdCA9IGZ1bmN0aW9uIHZhbGlkYXRlRm9ybWF0
KGZvcm1hdCkge1xuXHQgICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG5cdCAgICAgIHRo
cm93IG5ldyBFcnJvcignaW52YXJpYW50IHJlcXVpcmVzIGFuIGVycm9yIG1lc3NhZ2UgYXJndW1l
bnQnKTtcblx0ICAgIH1cblx0ICB9O1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBpbnZhcmlhbnQoY29u
ZGl0aW9uLCBmb3JtYXQsIGEsIGIsIGMsIGQsIGUsIGYpIHtcblx0ICB2YWxpZGF0ZUZvcm1hdChm
b3JtYXQpO1xuXHRcblx0ICBpZiAoIWNvbmRpdGlvbikge1xuXHQgICAgdmFyIGVycm9yO1xuXHQg
ICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG5cdCAgICAgIGVycm9yID0gbmV3IEVycm9y
KCdNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBl
bnZpcm9ubWVudCAnICsgJ2ZvciB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFs
IGhlbHBmdWwgd2FybmluZ3MuJyk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB2YXIgYXJncyA9
IFthLCBiLCBjLCBkLCBlLCBmXTtcblx0ICAgICAgdmFyIGFyZ0luZGV4ID0gMDtcblx0ICAgICAg
ZXJyb3IgPSBuZXcgRXJyb3IoZm9ybWF0LnJlcGxhY2UoLyVzL2csIGZ1bmN0aW9uICgpIHtcblx0
ICAgICAgICByZXR1cm4gYXJnc1thcmdJbmRleCsrXTtcblx0ICAgICAgfSkpO1xuXHQgICAgICBl
cnJvci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuXHQgICAgfVxuXHRcblx0ICAgIGVy
cm9yLmZyYW1lc1RvUG9wID0gMTsgLy8gd2UgZG9uJ3QgY2FyZSBhYm91dCBpbnZhcmlhbnQncyBv
d24gZnJhbWVcblx0ICAgIHRocm93IGVycm9yO1xuXHQgIH1cblx0fVxuXHRcblx0bW9kdWxlLmV4
cG9ydHMgPSBpbnZhcmlhbnQ7XG5cbi8qKiovIH0sXG4vKiAyICovXG4vKioqLyBmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29w
eXJpZ2h0IDIwMTQtMjAxNSwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxu
XHR2YXIgZW1wdHlGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG5cdFxuXHQvKipc
blx0ICogU2ltaWxhciB0byBpbnZhcmlhbnQgYnV0IG9ubHkgbG9ncyBhIHdhcm5pbmcgaWYgdGhl
IGNvbmRpdGlvbiBpcyBub3QgbWV0LlxuXHQgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGxvZyBpc3N1
ZXMgaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzIGluIGNyaXRpY2FsXG5cdCAqIHBhdGhzLiBS
ZW1vdmluZyB0aGUgbG9nZ2luZyBjb2RlIGZvciBwcm9kdWN0aW9uIGVudmlyb25tZW50cyB3aWxs
IGtlZXAgdGhlXG5cdCAqIHNhbWUgbG9naWMgYW5kIGZvbGxvdyB0aGUgc2FtZSBjb2RlIHBhdGhz
LlxuXHQgKi9cblx0XG5cdHZhciB3YXJuaW5nID0gZW1wdHlGdW5jdGlvbjtcblx0XG5cdGlmIChm
YWxzZSkge1xuXHQgIHZhciBwcmludFdhcm5pbmcgPSBmdW5jdGlvbiBwcmludFdhcm5pbmcoZm9y
bWF0KSB7XG5cdCAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFy
cmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5
KyspIHtcblx0ICAgICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG5cdCAgICB9
XG5cdFxuXHQgICAgdmFyIGFyZ0luZGV4ID0gMDtcblx0ICAgIHZhciBtZXNzYWdlID0gJ1dhcm5p
bmc6ICcgKyBmb3JtYXQucmVwbGFjZSgvJXMvZywgZnVuY3Rpb24gKCkge1xuXHQgICAgICByZXR1
cm4gYXJnc1thcmdJbmRleCsrXTtcblx0ICAgIH0pO1xuXHQgICAgaWYgKHR5cGVvZiBjb25zb2xl
ICE9PSAndW5kZWZpbmVkJykge1xuXHQgICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuXHQg
ICAgfVxuXHQgICAgdHJ5IHtcblx0ICAgICAgLy8gLS0tIFdlbGNvbWUgdG8gZGVidWdnaW5nIFJl
YWN0IC0tLVxuXHQgICAgICAvLyBUaGlzIGVycm9yIHdhcyB0aHJvd24gYXMgYSBjb252ZW5pZW5j
ZSBzbyB0aGF0IHlvdSBjYW4gdXNlIHRoaXMgc3RhY2tcblx0ICAgICAgLy8gdG8gZmluZCB0aGUg
Y2FsbHNpdGUgdGhhdCBjYXVzZWQgdGhpcyB3YXJuaW5nIHRvIGZpcmUuXG5cdCAgICAgIHRocm93
IG5ldyBFcnJvcihtZXNzYWdlKTtcblx0ICAgIH0gY2F0Y2ggKHgpIHt9XG5cdCAgfTtcblx0XG5c
dCAgd2FybmluZyA9IGZ1bmN0aW9uIHdhcm5pbmcoY29uZGl0aW9uLCBmb3JtYXQpIHtcblx0ICAg
IGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuXHQgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2B3
YXJuaW5nKGNvbmRpdGlvbiwgZm9ybWF0LCAuLi5hcmdzKWAgcmVxdWlyZXMgYSB3YXJuaW5nICcg
KyAnbWVzc2FnZSBhcmd1bWVudCcpO1xuXHQgICAgfVxuXHRcblx0ICAgIGlmIChmb3JtYXQuaW5k
ZXhPZignRmFpbGVkIENvbXBvc2l0ZSBwcm9wVHlwZTogJykgPT09IDApIHtcblx0ICAgICAgcmV0
dXJuOyAvLyBJZ25vcmUgQ29tcG9zaXRlQ29tcG9uZW50IHByb3B0eXBlIGNoZWNrLlxuXHQgICAg
fVxuXHRcblx0ICAgIGlmICghY29uZGl0aW9uKSB7XG5cdCAgICAgIGZvciAodmFyIF9sZW4yID0g
YXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4yID4gMiA/IF9sZW4yIC0gMiA6IDAp
LCBfa2V5MiA9IDI7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcblx0ICAgICAgICBhcmdzW19r
ZXkyIC0gMl0gPSBhcmd1bWVudHNbX2tleTJdO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICBwcmlu
dFdhcm5pbmcuYXBwbHkodW5kZWZpbmVkLCBbZm9ybWF0XS5jb25jYXQoYXJncykpO1xuXHQgICAg
fVxuXHQgIH07XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gd2FybmluZztcblxuLyoqKi8g
fSxcbi8qIDMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxu
XHQgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogXG5cdCAqL1xuXHQn
dXNlIHN0cmljdCc7XG5cdFxuXHQvKipcblx0ICogV0FSTklORzogRE8gTk9UIG1hbnVhbGx5IHJl
cXVpcmUgdGhpcyBtb2R1bGUuXG5cdCAqIFRoaXMgaXMgYSByZXBsYWNlbWVudCBmb3IgYGludmFy
aWFudCguLi4pYCB1c2VkIGJ5IHRoZSBlcnJvciBjb2RlIHN5c3RlbVxuXHQgKiBhbmQgd2lsbCBf
b25seV8gYmUgcmVxdWlyZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcgYmFiZWwgcGFzcy5cblx0ICog
SXQgYWx3YXlzIHRocm93cy5cblx0ICovXG5cdFxuXHRmdW5jdGlvbiByZWFjdFByb2RJbnZhcmlh
bnQoY29kZSkge1xuXHQgIHZhciBhcmdDb3VudCA9IGFyZ3VtZW50cy5sZW5ndGggLSAxO1xuXHRc
blx0ICB2YXIgbWVzc2FnZSA9ICdNaW5pZmllZCBSZWFjdCBlcnJvciAjJyArIGNvZGUgKyAnOyB2
aXNpdCAnICsgJ2h0dHA6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy9lcnJvci1kZWNv
ZGVyLmh0bWw/aW52YXJpYW50PScgKyBjb2RlO1xuXHRcblx0ICBmb3IgKHZhciBhcmdJZHggPSAw
OyBhcmdJZHggPCBhcmdDb3VudDsgYXJnSWR4KyspIHtcblx0ICAgIG1lc3NhZ2UgKz0gJyZhcmdz
W109JyArIGVuY29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbYXJnSWR4ICsgMV0pO1xuXHQgIH1c
blx0XG5cdCAgbWVzc2FnZSArPSAnIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9u
LW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCcgKyAnIGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRp
b25hbCBoZWxwZnVsIHdhcm5pbmdzLic7XG5cdFxuXHQgIHZhciBlcnJvciA9IG5ldyBFcnJvciht
ZXNzYWdlKTtcblx0ICBlcnJvci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuXHQgIGVy
cm9yLmZyYW1lc1RvUG9wID0gMTsgLy8gd2UgZG9uJ3QgY2FyZSBhYm91dCByZWFjdFByb2RJbnZh
cmlhbnQncyBvd24gZnJhbWVcblx0XG5cdCAgdGhyb3cgZXJyb3I7XG5cdH1cblx0XG5cdG1vZHVs
ZS5leHBvcnRzID0gcmVhY3RQcm9kSW52YXJpYW50O1xuXG4vKioqLyB9LFxuLyogNCAqL1xuLyoq
Ki8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0Lypcblx0b2JqZWN0LWFzc2lnblxu
XHQoYykgU2luZHJlIFNvcmh1c1xuXHRAbGljZW5zZSBNSVRcblx0Ki9cblx0XG5cdCd1c2Ugc3Ry
aWN0Jztcblx0LyogZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cblx0dmFyIGdldE93
blByb3BlcnR5U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG5cdHZhciBo
YXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cdHZhciBw
cm9wSXNFbnVtZXJhYmxlID0gT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtc
blx0XG5cdGZ1bmN0aW9uIHRvT2JqZWN0KHZhbCkge1xuXHRcdGlmICh2YWwgPT09IG51bGwgfHwg
dmFsID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ09iamVjdC5h
c3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkJyk7XG5cdFx0fVxu
XHRcblx0XHRyZXR1cm4gT2JqZWN0KHZhbCk7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHNob3VsZFVz
ZU5hdGl2ZSgpIHtcblx0XHR0cnkge1xuXHRcdFx0aWYgKCFPYmplY3QuYXNzaWduKSB7XG5cdFx0
XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XG5cdFx0XHQvLyBEZXRlY3QgYnVnZ3kgcHJv
cGVydHkgZW51bWVyYXRpb24gb3JkZXIgaW4gb2xkZXIgVjggdmVyc2lvbnMuXG5cdFxuXHRcdFx0
Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9NDExOFxu
XHRcdFx0dmFyIHRlc3QxID0gbmV3IFN0cmluZygnYWJjJyk7ICAvLyBlc2xpbnQtZGlzYWJsZS1s
aW5lIG5vLW5ldy13cmFwcGVyc1xuXHRcdFx0dGVzdDFbNV0gPSAnZGUnO1xuXHRcdFx0aWYgKE9i
amVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QxKVswXSA9PT0gJzUnKSB7XG5cdFx0XHRcdHJl
dHVybiBmYWxzZTtcblx0XHRcdH1cblx0XG5cdFx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0u
b3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2XG5cdFx0XHR2YXIgdGVzdDIgPSB7fTtcblx0
XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkrKykge1xuXHRcdFx0XHR0ZXN0MlsnXycgKyBT
dHJpbmcuZnJvbUNoYXJDb2RlKGkpXSA9IGk7XG5cdFx0XHR9XG5cdFx0XHR2YXIgb3JkZXIyID0g
T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGVzdDIpLm1hcChmdW5jdGlvbiAobikge1xuXHRc
dFx0XHRyZXR1cm4gdGVzdDJbbl07XG5cdFx0XHR9KTtcblx0XHRcdGlmIChvcmRlcjIuam9pbign
JykgIT09ICcwMTIzNDU2Nzg5Jykge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5c
dFxuXHRcdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/
aWQ9MzA1NlxuXHRcdFx0dmFyIHRlc3QzID0ge307XG5cdFx0XHQnYWJjZGVmZ2hpamtsbW5vcHFy
c3QnLnNwbGl0KCcnKS5mb3JFYWNoKGZ1bmN0aW9uIChsZXR0ZXIpIHtcblx0XHRcdFx0dGVzdDNb
bGV0dGVyXSA9IGxldHRlcjtcblx0XHRcdH0pO1xuXHRcdFx0aWYgKE9iamVjdC5rZXlzKE9iamVj
dC5hc3NpZ24oe30sIHRlc3QzKSkuam9pbignJykgIT09XG5cdFx0XHRcdFx0J2FiY2RlZmdoaWpr
bG1ub3BxcnN0Jykge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFxuXHRcdFx0
cmV0dXJuIHRydWU7XG5cdFx0fSBjYXRjaCAoZXJyKSB7XG5cdFx0XHQvLyBXZSBkb24ndCBleHBl
Y3QgYW55IG9mIHRoZSBhYm92ZSB0byB0aHJvdywgYnV0IGJldHRlciB0byBiZSBzYWZlLlxuXHRc
dFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBzaG91
bGRVc2VOYXRpdmUoKSA/IE9iamVjdC5hc3NpZ24gOiBmdW5jdGlvbiAodGFyZ2V0LCBzb3VyY2Up
IHtcblx0XHR2YXIgZnJvbTtcblx0XHR2YXIgdG8gPSB0b09iamVjdCh0YXJnZXQpO1xuXHRcdHZh
ciBzeW1ib2xzO1xuXHRcblx0XHRmb3IgKHZhciBzID0gMTsgcyA8IGFyZ3VtZW50cy5sZW5ndGg7
IHMrKykge1xuXHRcdFx0ZnJvbSA9IE9iamVjdChhcmd1bWVudHNbc10pO1xuXHRcblx0XHRcdGZv
ciAodmFyIGtleSBpbiBmcm9tKSB7XG5cdFx0XHRcdGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGZy
b20sIGtleSkpIHtcblx0XHRcdFx0XHR0b1trZXldID0gZnJvbVtrZXldO1xuXHRcdFx0XHR9XG5c
dFx0XHR9XG5cdFxuXHRcdFx0aWYgKGdldE93blByb3BlcnR5U3ltYm9scykge1xuXHRcdFx0XHRz
eW1ib2xzID0gZ2V0T3duUHJvcGVydHlTeW1ib2xzKGZyb20pO1xuXHRcdFx0XHRmb3IgKHZhciBp
ID0gMDsgaSA8IHN5bWJvbHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRpZiAocHJvcElzRW51
bWVyYWJsZS5jYWxsKGZyb20sIHN5bWJvbHNbaV0pKSB7XG5cdFx0XHRcdFx0XHR0b1tzeW1ib2xz
W2ldXSA9IGZyb21bc3ltYm9sc1tpXV07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9
XG5cdFx0fVxuXHRcblx0XHRyZXR1cm4gdG87XG5cdH07XG5cblxuLyoqKi8gfSxcbi8qIDUgKi9c
bi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xu
XG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5c
dCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1
aXJlX18oMyk7XG5cdFxuXHR2YXIgRE9NUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1
KTtcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50RmxhZ3MgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYx
KTtcblx0XG5cdHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHRcblx0
dmFyIEFUVFJfTkFNRSA9IERPTVByb3BlcnR5LklEX0FUVFJJQlVURV9OQU1FO1xuXHR2YXIgRmxh
Z3MgPSBSZWFjdERPTUNvbXBvbmVudEZsYWdzO1xuXHRcblx0dmFyIGludGVybmFsSW5zdGFuY2VL
ZXkgPSAnX19yZWFjdEludGVybmFsSW5zdGFuY2UkJyArIE1hdGgucmFuZG9tKCkudG9TdHJpbmco
MzYpLnNsaWNlKDIpO1xuXHRcblx0LyoqXG5cdCAqIENoZWNrIGlmIGEgZ2l2ZW4gbm9kZSBzaG91
bGQgYmUgY2FjaGVkLlxuXHQgKi9cblx0ZnVuY3Rpb24gc2hvdWxkUHJlY2FjaGVOb2RlKG5vZGUs
IG5vZGVJRCkge1xuXHQgIHJldHVybiBub2RlLm5vZGVUeXBlID09PSAxICYmIG5vZGUuZ2V0QXR0
cmlidXRlKEFUVFJfTkFNRSkgPT09IFN0cmluZyhub2RlSUQpIHx8IG5vZGUubm9kZVR5cGUgPT09
IDggJiYgbm9kZS5ub2RlVmFsdWUgPT09ICcgcmVhY3QtdGV4dDogJyArIG5vZGVJRCArICcgJyB8
fCBub2RlLm5vZGVUeXBlID09PSA4ICYmIG5vZGUubm9kZVZhbHVlID09PSAnIHJlYWN0LWVtcHR5
OiAnICsgbm9kZUlEICsgJyAnO1xuXHR9XG5cdFxuXHQvKipcblx0ICogRHJpbGwgZG93biAodGhy
b3VnaCBjb21wb3NpdGVzIGFuZCBlbXB0eSBjb21wb25lbnRzKSB1bnRpbCB3ZSBnZXQgYSBob3N0
IG9yXG5cdCAqIGhvc3QgdGV4dCBjb21wb25lbnQuXG5cdCAqXG5cdCAqIFRoaXMgaXMgcHJldHR5
IHBvbHltb3JwaGljIGJ1dCB1bmF2b2lkYWJsZSB3aXRoIHRoZSBjdXJyZW50IHN0cnVjdHVyZSB3
ZSBoYXZlXG5cdCAqIGZvciBgX3JlbmRlcmVkQ2hpbGRyZW5gLlxuXHQgKi9cblx0ZnVuY3Rpb24g
Z2V0UmVuZGVyZWRIb3N0T3JUZXh0RnJvbUNvbXBvbmVudChjb21wb25lbnQpIHtcblx0ICB2YXIg
cmVuZGVyZWQ7XG5cdCAgd2hpbGUgKHJlbmRlcmVkID0gY29tcG9uZW50Ll9yZW5kZXJlZENvbXBv
bmVudCkge1xuXHQgICAgY29tcG9uZW50ID0gcmVuZGVyZWQ7XG5cdCAgfVxuXHQgIHJldHVybiBj
b21wb25lbnQ7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBQb3B1bGF0ZSBgX2hvc3ROb2RlYCBvbiB0
aGUgcmVuZGVyZWQgaG9zdC90ZXh0IGNvbXBvbmVudCB3aXRoIHRoZSBnaXZlblxuXHQgKiBET00g
bm9kZS4gVGhlIHBhc3NlZCBgaW5zdGAgY2FuIGJlIGEgY29tcG9zaXRlLlxuXHQgKi9cblx0ZnVu
Y3Rpb24gcHJlY2FjaGVOb2RlKGluc3QsIG5vZGUpIHtcblx0ICB2YXIgaG9zdEluc3QgPSBnZXRS
ZW5kZXJlZEhvc3RPclRleHRGcm9tQ29tcG9uZW50KGluc3QpO1xuXHQgIGhvc3RJbnN0Ll9ob3N0
Tm9kZSA9IG5vZGU7XG5cdCAgbm9kZVtpbnRlcm5hbEluc3RhbmNlS2V5XSA9IGhvc3RJbnN0O1xu
XHR9XG5cdFxuXHRmdW5jdGlvbiB1bmNhY2hlTm9kZShpbnN0KSB7XG5cdCAgdmFyIG5vZGUgPSBp
bnN0Ll9ob3N0Tm9kZTtcblx0ICBpZiAobm9kZSkge1xuXHQgICAgZGVsZXRlIG5vZGVbaW50ZXJu
YWxJbnN0YW5jZUtleV07XG5cdCAgICBpbnN0Ll9ob3N0Tm9kZSA9IG51bGw7XG5cdCAgfVxuXHR9
XG5cdFxuXHQvKipcblx0ICogUG9wdWxhdGUgYF9ob3N0Tm9kZWAgb24gZWFjaCBjaGlsZCBvZiBg
aW5zdGAsIGFzc3VtaW5nIHRoYXQgdGhlIGNoaWxkcmVuXG5cdCAqIG1hdGNoIHVwIHdpdGggdGhl
IERPTSAoZWxlbWVudCkgY2hpbGRyZW4gb2YgYG5vZGVgLlxuXHQgKlxuXHQgKiBXZSBjYWNoZSBl
bnRpcmUgbGV2ZWxzIGF0IG9uY2UgdG8gYXZvaWQgYW4gbl4yIHByb2JsZW0gd2hlcmUgd2UgYWNj
ZXNzIHRoZVxuXHQgKiBjaGlsZHJlbiBvZiBhIG5vZGUgc2VxdWVudGlhbGx5IGFuZCBoYXZlIHRv
IHdhbGsgZnJvbSB0aGUgc3RhcnQgdG8gb3VyIHRhcmdldFxuXHQgKiBub2RlIGV2ZXJ5IHRpbWUu
XG5cdCAqXG5cdCAqIFNpbmNlIHdlIHVwZGF0ZSBgX3JlbmRlcmVkQ2hpbGRyZW5gIGFuZCB0aGUg
YWN0dWFsIERPTSBhdCAoc2xpZ2h0bHkpXG5cdCAqIGRpZmZlcmVudCB0aW1lcywgd2UgY291bGQg
cmFjZSBoZXJlIGFuZCBzZWUgYSBuZXdlciBgX3JlbmRlcmVkQ2hpbGRyZW5gIHRoYW5cblx0ICog
dGhlIERPTSBub2RlcyB3ZSBzZWUuIFRvIGF2b2lkIHRoaXMsIFJlYWN0TXVsdGlDaGlsZCBjYWxs
c1xuXHQgKiBgcHJlcGFyZVRvTWFuYWdlQ2hpbGRyZW5gIGJlZm9yZSB3ZSBjaGFuZ2UgYF9yZW5k
ZXJlZENoaWxkcmVuYCwgYXQgd2hpY2hcblx0ICogdGltZSB0aGUgY29udGFpbmVyJ3MgY2hpbGQg
bm9kZXMgYXJlIGFsd2F5cyBjYWNoZWQgKHVudGlsIGl0IHVubW91bnRzKS5cblx0ICovXG5cdGZ1
bmN0aW9uIHByZWNhY2hlQ2hpbGROb2RlcyhpbnN0LCBub2RlKSB7XG5cdCAgaWYgKGluc3QuX2Zs
YWdzICYgRmxhZ3MuaGFzQ2FjaGVkQ2hpbGROb2Rlcykge1xuXHQgICAgcmV0dXJuO1xuXHQgIH1c
blx0ICB2YXIgY2hpbGRyZW4gPSBpbnN0Ll9yZW5kZXJlZENoaWxkcmVuO1xuXHQgIHZhciBjaGls
ZE5vZGUgPSBub2RlLmZpcnN0Q2hpbGQ7XG5cdCAgb3V0ZXI6IGZvciAodmFyIG5hbWUgaW4gY2hp
bGRyZW4pIHtcblx0ICAgIGlmICghY2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcblx0
ICAgICAgY29udGludWU7XG5cdCAgICB9XG5cdCAgICB2YXIgY2hpbGRJbnN0ID0gY2hpbGRyZW5b
bmFtZV07XG5cdCAgICB2YXIgY2hpbGRJRCA9IGdldFJlbmRlcmVkSG9zdE9yVGV4dEZyb21Db21w
b25lbnQoY2hpbGRJbnN0KS5fZG9tSUQ7XG5cdCAgICBpZiAoY2hpbGRJRCA9PT0gMCkge1xuXHQg
ICAgICAvLyBXZSdyZSBjdXJyZW50bHkgdW5tb3VudGluZyB0aGlzIGNoaWxkIGluIFJlYWN0TXVs
dGlDaGlsZDsgc2tpcCBpdC5cblx0ICAgICAgY29udGludWU7XG5cdCAgICB9XG5cdCAgICAvLyBX
ZSBhc3N1bWUgdGhlIGNoaWxkIG5vZGVzIGFyZSBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgY2hp
bGQgaW5zdGFuY2VzLlxuXHQgICAgZm9yICg7IGNoaWxkTm9kZSAhPT0gbnVsbDsgY2hpbGROb2Rl
ID0gY2hpbGROb2RlLm5leHRTaWJsaW5nKSB7XG5cdCAgICAgIGlmIChzaG91bGRQcmVjYWNoZU5v
ZGUoY2hpbGROb2RlLCBjaGlsZElEKSkge1xuXHQgICAgICAgIHByZWNhY2hlTm9kZShjaGlsZElu
c3QsIGNoaWxkTm9kZSk7XG5cdCAgICAgICAgY29udGludWUgb3V0ZXI7XG5cdCAgICAgIH1cblx0
ICAgIH1cblx0ICAgIC8vIFdlIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUgRE9NIGNoaWxkcmVuIHdp
dGhvdXQgZmluZGluZyBhbiBJRCBtYXRjaC5cblx0ICAgICB0cnVlID8gIGZhbHNlID8gaW52YXJp
YW50KGZhbHNlLCAnVW5hYmxlIHRvIGZpbmQgZWxlbWVudCB3aXRoIElEICVzLicsIGNoaWxkSUQp
IDogX3Byb2RJbnZhcmlhbnQoJzMyJywgY2hpbGRJRCkgOiB2b2lkIDA7XG5cdCAgfVxuXHQgIGlu
c3QuX2ZsYWdzIHw9IEZsYWdzLmhhc0NhY2hlZENoaWxkTm9kZXM7XG5cdH1cblx0XG5cdC8qKlxu
XHQgKiBHaXZlbiBhIERPTSBub2RlLCByZXR1cm4gdGhlIGNsb3Nlc3QgUmVhY3RET01Db21wb25l
bnQgb3Jcblx0ICogUmVhY3RET01UZXh0Q29tcG9uZW50IGluc3RhbmNlIGFuY2VzdG9yLlxuXHQg
Ki9cblx0ZnVuY3Rpb24gZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUobm9kZSkge1xuXHQgIGlm
IChub2RlW2ludGVybmFsSW5zdGFuY2VLZXldKSB7XG5cdCAgICByZXR1cm4gbm9kZVtpbnRlcm5h
bEluc3RhbmNlS2V5XTtcblx0ICB9XG5cdFxuXHQgIC8vIFdhbGsgdXAgdGhlIHRyZWUgdW50aWwg
d2UgZmluZCBhbiBhbmNlc3RvciB3aG9zZSBpbnN0YW5jZSB3ZSBoYXZlIGNhY2hlZC5cblx0ICB2
YXIgcGFyZW50cyA9IFtdO1xuXHQgIHdoaWxlICghbm9kZVtpbnRlcm5hbEluc3RhbmNlS2V5XSkg
e1xuXHQgICAgcGFyZW50cy5wdXNoKG5vZGUpO1xuXHQgICAgaWYgKG5vZGUucGFyZW50Tm9kZSkg
e1xuXHQgICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuXHQgICAgfSBlbHNlIHtcblx0ICAg
ICAgLy8gVG9wIG9mIHRoZSB0cmVlLiBUaGlzIG5vZGUgbXVzdCBub3QgYmUgcGFydCBvZiBhIFJl
YWN0IHRyZWUgKG9yIGlzXG5cdCAgICAgIC8vIHVubW91bnRlZCwgcG90ZW50aWFsbHkpLlxuXHQg
ICAgICByZXR1cm4gbnVsbDtcblx0ICAgIH1cblx0ICB9XG5cdFxuXHQgIHZhciBjbG9zZXN0O1xu
XHQgIHZhciBpbnN0O1xuXHQgIGZvciAoOyBub2RlICYmIChpbnN0ID0gbm9kZVtpbnRlcm5hbElu
c3RhbmNlS2V5XSk7IG5vZGUgPSBwYXJlbnRzLnBvcCgpKSB7XG5cdCAgICBjbG9zZXN0ID0gaW5z
dDtcblx0ICAgIGlmIChwYXJlbnRzLmxlbmd0aCkge1xuXHQgICAgICBwcmVjYWNoZUNoaWxkTm9k
ZXMoaW5zdCwgbm9kZSk7XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0ICByZXR1cm4gY2xvc2VzdDtc
blx0fVxuXHRcblx0LyoqXG5cdCAqIEdpdmVuIGEgRE9NIG5vZGUsIHJldHVybiB0aGUgUmVhY3RE
T01Db21wb25lbnQgb3IgUmVhY3RET01UZXh0Q29tcG9uZW50XG5cdCAqIGluc3RhbmNlLCBvciBu
dWxsIGlmIHRoZSBub2RlIHdhcyBub3QgcmVuZGVyZWQgYnkgdGhpcyBSZWFjdC5cblx0ICovXG5c
dGZ1bmN0aW9uIGdldEluc3RhbmNlRnJvbU5vZGUobm9kZSkge1xuXHQgIHZhciBpbnN0ID0gZ2V0
Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUobm9kZSk7XG5cdCAgaWYgKGluc3QgIT0gbnVsbCAmJiBp
bnN0Ll9ob3N0Tm9kZSA9PT0gbm9kZSkge1xuXHQgICAgcmV0dXJuIGluc3Q7XG5cdCAgfSBlbHNl
IHtcblx0ICAgIHJldHVybiBudWxsO1xuXHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIEdpdmVu
IGEgUmVhY3RET01Db21wb25lbnQgb3IgUmVhY3RET01UZXh0Q29tcG9uZW50LCByZXR1cm4gdGhl
IGNvcnJlc3BvbmRpbmdcblx0ICogRE9NIG5vZGUuXG5cdCAqL1xuXHRmdW5jdGlvbiBnZXROb2Rl
RnJvbUluc3RhbmNlKGluc3QpIHtcblx0ICAvLyBXaXRob3V0IHRoaXMgZmlyc3QgaW52YXJpYW50
LCBwYXNzaW5nIGEgbm9uLURPTS1jb21wb25lbnQgdHJpZ2dlcnMgdGhlIG5leHRcblx0ICAvLyBp
bnZhcmlhbnQgZm9yIGEgbWlzc2luZyBwYXJlbnQsIHdoaWNoIGlzIHN1cGVyIGNvbmZ1c2luZy5c
blx0ICAhKGluc3QuX2hvc3ROb2RlICE9PSB1bmRlZmluZWQpID8gIGZhbHNlID8gaW52YXJpYW50
KGZhbHNlLCAnZ2V0Tm9kZUZyb21JbnN0YW5jZTogSW52YWxpZCBhcmd1bWVudC4nKSA6IF9wcm9k
SW52YXJpYW50KCczMycpIDogdm9pZCAwO1xuXHRcblx0ICBpZiAoaW5zdC5faG9zdE5vZGUpIHtc
blx0ICAgIHJldHVybiBpbnN0Ll9ob3N0Tm9kZTtcblx0ICB9XG5cdFxuXHQgIC8vIFdhbGsgdXAg
dGhlIHRyZWUgdW50aWwgd2UgZmluZCBhbiBhbmNlc3RvciB3aG9zZSBET00gbm9kZSB3ZSBoYXZl
IGNhY2hlZC5cblx0ICB2YXIgcGFyZW50cyA9IFtdO1xuXHQgIHdoaWxlICghaW5zdC5faG9zdE5v
ZGUpIHtcblx0ICAgIHBhcmVudHMucHVzaChpbnN0KTtcblx0ICAgICFpbnN0Ll9ob3N0UGFyZW50
ID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3QgRE9NIHRyZWUgcm9vdCBzaG91bGQg
YWx3YXlzIGhhdmUgYSBub2RlIHJlZmVyZW5jZS4nKSA6IF9wcm9kSW52YXJpYW50KCczNCcpIDog
dm9pZCAwO1xuXHQgICAgaW5zdCA9IGluc3QuX2hvc3RQYXJlbnQ7XG5cdCAgfVxuXHRcblx0ICAv
LyBOb3cgcGFyZW50cyBjb250YWlucyBlYWNoIGFuY2VzdG9yIHRoYXQgZG9lcyAqbm90KiBoYXZl
IGEgY2FjaGVkIG5hdGl2ZVxuXHQgIC8vIG5vZGUsIGFuZCBgaW5zdGAgaXMgdGhlIGRlZXBlc3Qg
YW5jZXN0b3IgdGhhdCBkb2VzLlxuXHQgIGZvciAoOyBwYXJlbnRzLmxlbmd0aDsgaW5zdCA9IHBh
cmVudHMucG9wKCkpIHtcblx0ICAgIHByZWNhY2hlQ2hpbGROb2RlcyhpbnN0LCBpbnN0Ll9ob3N0
Tm9kZSk7XG5cdCAgfVxuXHRcblx0ICByZXR1cm4gaW5zdC5faG9zdE5vZGU7XG5cdH1cblx0XG5c
dHZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSB7XG5cdCAgZ2V0Q2xvc2VzdEluc3RhbmNlRnJv
bU5vZGU6IGdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlLFxuXHQgIGdldEluc3RhbmNlRnJvbU5v
ZGU6IGdldEluc3RhbmNlRnJvbU5vZGUsXG5cdCAgZ2V0Tm9kZUZyb21JbnN0YW5jZTogZ2V0Tm9k
ZUZyb21JbnN0YW5jZSxcblx0ICBwcmVjYWNoZUNoaWxkTm9kZXM6IHByZWNhY2hlQ2hpbGROb2Rl
cyxcblx0ICBwcmVjYWNoZU5vZGU6IHByZWNhY2hlTm9kZSxcblx0ICB1bmNhY2hlTm9kZTogdW5j
YWNoZU5vZGVcblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RET01Db21wb25lbnRU
cmVlO1xuXG4vKioqLyB9LFxuLyogNiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRz
KSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
blx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQg
Ki9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBjYW5Vc2VET00gPSAhISh0eXBlb2Yg
d2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZG9jdW1lbnQgJiYgd2luZG93LmRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQpO1xuXHRcblx0LyoqXG5cdCAqIFNpbXBsZSwgbGlnaHR3ZWlnaHQg
bW9kdWxlIGFzc2lzdGluZyB3aXRoIHRoZSBkZXRlY3Rpb24gYW5kIGNvbnRleHQgb2Zcblx0ICog
V29ya2VyLiBIZWxwcyBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmNpZXMgYW5kIGFsbG93cyBjb2Rl
IHRvIHJlYXNvbiBhYm91dFxuXHQgKiB3aGV0aGVyIG9yIG5vdCB0aGV5IGFyZSBpbiBhIFdvcmtl
ciwgZXZlbiBpZiB0aGV5IG5ldmVyIGluY2x1ZGUgdGhlIG1haW5cblx0ICogYFJlYWN0V29ya2Vy
YCBkZXBlbmRlbmN5LlxuXHQgKi9cblx0dmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0ge1xuXHRc
blx0ICBjYW5Vc2VET006IGNhblVzZURPTSxcblx0XG5cdCAgY2FuVXNlV29ya2VyczogdHlwZW9m
IFdvcmtlciAhPT0gJ3VuZGVmaW5lZCcsXG5cdFxuXHQgIGNhblVzZUV2ZW50TGlzdGVuZXJzOiBj
YW5Vc2VET00gJiYgISEod2luZG93LmFkZEV2ZW50TGlzdGVuZXIgfHwgd2luZG93LmF0dGFjaEV2
ZW50KSxcblx0XG5cdCAgY2FuVXNlVmlld3BvcnQ6IGNhblVzZURPTSAmJiAhIXdpbmRvdy5zY3Jl
ZW4sXG5cdFxuXHQgIGlzSW5Xb3JrZXI6ICFjYW5Vc2VET00gLy8gRm9yIG5vdywgdGhpcyBpcyB0
cnVlIC0gbWlnaHQgY2hhbmdlIGluIHRoZSBmdXR1cmUuXG5cdFxuXHR9O1xuXHRcblx0bW9kdWxl
LmV4cG9ydHMgPSBFeGVjdXRpb25FbnZpcm9ubWVudDtcblxuLyoqKi8gfSxcbi8qIDcgKi9cbi8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdFwidXNlIHN0cmljdFwiO1xuXHRc
blx0LyoqXG5cdCAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
XHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0
ICovXG5cdFxuXHRmdW5jdGlvbiBtYWtlRW1wdHlGdW5jdGlvbihhcmcpIHtcblx0ICByZXR1cm4g
ZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0dXJuIGFyZztcblx0ICB9O1xuXHR9XG5cdFxuXHQvKipc
blx0ICogVGhpcyBmdW5jdGlvbiBhY2NlcHRzIGFuZCBkaXNjYXJkcyBpbnB1dHM7IGl0IGhhcyBu
byBzaWRlIGVmZmVjdHMuIFRoaXMgaXNcblx0ICogcHJpbWFyaWx5IHVzZWZ1bCBpZGlvbWF0aWNh
bGx5IGZvciBvdmVycmlkYWJsZSBmdW5jdGlvbiBlbmRwb2ludHMgd2hpY2hcblx0ICogYWx3YXlz
IG5lZWQgdG8gYmUgY2FsbGFibGUsIHNpbmNlIEpTIGxhY2tzIGEgbnVsbC1jYWxsIGlkaW9tIGFs
YSBDb2NvYS5cblx0ICovXG5cdHZhciBlbXB0eUZ1bmN0aW9uID0gZnVuY3Rpb24gZW1wdHlGdW5j
dGlvbigpIHt9O1xuXHRcblx0ZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJucyA9IG1ha2VFbXB0eUZ1
bmN0aW9uO1xuXHRlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zRmFsc2UgPSBtYWtlRW1wdHlGdW5j
dGlvbihmYWxzZSk7XG5cdGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNUcnVlID0gbWFrZUVtcHR5
RnVuY3Rpb24odHJ1ZSk7XG5cdGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxsID0gbWFrZUVt
cHR5RnVuY3Rpb24obnVsbCk7XG5cdGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNUaGlzID0gZnVu
Y3Rpb24gKCkge1xuXHQgIHJldHVybiB0aGlzO1xuXHR9O1xuXHRlbXB0eUZ1bmN0aW9uLnRoYXRS
ZXR1cm5zQXJndW1lbnQgPSBmdW5jdGlvbiAoYXJnKSB7XG5cdCAgcmV0dXJuIGFyZztcblx0fTtc
blx0XG5cdG1vZHVsZS5leHBvcnRzID0gZW1wdHlGdW5jdGlvbjtcblxuLyoqKi8gfSxcbi8qIDgg
Ki9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykg
e1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxNi1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
XHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0
ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQvLyBUcnVzdCB0aGUgZGV2ZWxvcGVyIHRv
IG9ubHkgdXNlIFJlYWN0SW5zdHJ1bWVudGF0aW9uIHdpdGggYSBfX0RFVl9fIGNoZWNrXG5cdFxu
XHR2YXIgZGVidWdUb29sID0gbnVsbDtcblx0XG5cdGlmIChmYWxzZSkge1xuXHQgIHZhciBSZWFj
dERlYnVnVG9vbCA9IHJlcXVpcmUoJy4vUmVhY3REZWJ1Z1Rvb2wnKTtcblx0ICBkZWJ1Z1Rvb2wg
PSBSZWFjdERlYnVnVG9vbDtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSB7IGRlYnVnVG9v
bDogZGVidWdUb29sIH07XG5cbi8qKiovIH0sXG4vKiA5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxu
XHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpLFxuXHQgICAgX2Fz
c2lnbiA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdFxuXHR2YXIgQ2FsbGJhY2tRdWV1ZSA9
IF9fd2VicGFja19yZXF1aXJlX18oNTkpO1xuXHR2YXIgUG9vbGVkQ2xhc3MgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDEzKTtcblx0dmFyIFJlYWN0RmVhdHVyZUZsYWdzID0gX193ZWJwYWNrX3JlcXVp
cmVfXyg2NCk7XG5cdHZhciBSZWFjdFJlY29uY2lsZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2
KTtcblx0dmFyIFRyYW5zYWN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNyk7XG5cdFxuXHR2
YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0XG5cdHZhciBkaXJ0eUNv
bXBvbmVudHMgPSBbXTtcblx0dmFyIHVwZGF0ZUJhdGNoTnVtYmVyID0gMDtcblx0dmFyIGFzYXBD
YWxsYmFja1F1ZXVlID0gQ2FsbGJhY2tRdWV1ZS5nZXRQb29sZWQoKTtcblx0dmFyIGFzYXBFbnF1
ZXVlZCA9IGZhbHNlO1xuXHRcblx0dmFyIGJhdGNoaW5nU3RyYXRlZ3kgPSBudWxsO1xuXHRcblx0
ZnVuY3Rpb24gZW5zdXJlSW5qZWN0ZWQoKSB7XG5cdCAgIShSZWFjdFVwZGF0ZXMuUmVhY3RSZWNv
bmNpbGVUcmFuc2FjdGlvbiAmJiBiYXRjaGluZ1N0cmF0ZWd5KSA/ICBmYWxzZSA/IGludmFyaWFu
dChmYWxzZSwgJ1JlYWN0VXBkYXRlczogbXVzdCBpbmplY3QgYSByZWNvbmNpbGUgdHJhbnNhY3Rp
b24gY2xhc3MgYW5kIGJhdGNoaW5nIHN0cmF0ZWd5JykgOiBfcHJvZEludmFyaWFudCgnMTIzJykg
OiB2b2lkIDA7XG5cdH1cblx0XG5cdHZhciBORVNURURfVVBEQVRFUyA9IHtcblx0ICBpbml0aWFs
aXplOiBmdW5jdGlvbiAoKSB7XG5cdCAgICB0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aCA9IGRp
cnR5Q29tcG9uZW50cy5sZW5ndGg7XG5cdCAgfSxcblx0ICBjbG9zZTogZnVuY3Rpb24gKCkge1xu
XHQgICAgaWYgKHRoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoICE9PSBkaXJ0eUNvbXBvbmVudHMu
bGVuZ3RoKSB7XG5cdCAgICAgIC8vIEFkZGl0aW9uYWwgdXBkYXRlcyB3ZXJlIGVucXVldWVkIGJ5
IGNvbXBvbmVudERpZFVwZGF0ZSBoYW5kbGVycyBvclxuXHQgICAgICAvLyBzaW1pbGFyOyBiZWZv
cmUgb3VyIG93biBVUERBVEVfUVVFVUVJTkcgd3JhcHBlciBjbG9zZXMsIHdlIHdhbnQgdG8gcnVu
XG5cdCAgICAgIC8vIHRoZXNlIG5ldyB1cGRhdGVzIHNvIHRoYXQgaWYgQSdzIGNvbXBvbmVudERp
ZFVwZGF0ZSBjYWxscyBzZXRTdGF0ZSBvblxuXHQgICAgICAvLyBCLCBCIHdpbGwgdXBkYXRlIGJl
Zm9yZSB0aGUgY2FsbGJhY2sgQSdzIHVwZGF0ZXIgcHJvdmlkZWQgd2hlbiBjYWxsaW5nXG5cdCAg
ICAgIC8vIHNldFN0YXRlLlxuXHQgICAgICBkaXJ0eUNvbXBvbmVudHMuc3BsaWNlKDAsIHRoaXMu
ZGlydHlDb21wb25lbnRzTGVuZ3RoKTtcblx0ICAgICAgZmx1c2hCYXRjaGVkVXBkYXRlcygpO1xu
XHQgICAgfSBlbHNlIHtcblx0ICAgICAgZGlydHlDb21wb25lbnRzLmxlbmd0aCA9IDA7XG5cdCAg
ICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0dmFyIFVQREFURV9RVUVVRUlORyA9IHtcblx0ICBpbml0
aWFsaXplOiBmdW5jdGlvbiAoKSB7XG5cdCAgICB0aGlzLmNhbGxiYWNrUXVldWUucmVzZXQoKTtc
blx0ICB9LFxuXHQgIGNsb3NlOiBmdW5jdGlvbiAoKSB7XG5cdCAgICB0aGlzLmNhbGxiYWNrUXVl
dWUubm90aWZ5QWxsKCk7XG5cdCAgfVxuXHR9O1xuXHRcblx0dmFyIFRSQU5TQUNUSU9OX1dSQVBQ
RVJTID0gW05FU1RFRF9VUERBVEVTLCBVUERBVEVfUVVFVUVJTkddO1xuXHRcblx0ZnVuY3Rpb24g
UmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbigpIHtcblx0ICB0aGlzLnJlaW5pdGlhbGl6ZVRy
YW5zYWN0aW9uKCk7XG5cdCAgdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGggPSBudWxsO1xuXHQg
IHRoaXMuY2FsbGJhY2tRdWV1ZSA9IENhbGxiYWNrUXVldWUuZ2V0UG9vbGVkKCk7XG5cdCAgdGhp
cy5yZWNvbmNpbGVUcmFuc2FjdGlvbiA9IFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5z
YWN0aW9uLmdldFBvb2xlZChcblx0ICAvKiB1c2VDcmVhdGVFbGVtZW50ICovdHJ1ZSk7XG5cdH1c
blx0XG5cdF9hc3NpZ24oUmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbi5wcm90b3R5cGUsIFRy
YW5zYWN0aW9uLCB7XG5cdCAgZ2V0VHJhbnNhY3Rpb25XcmFwcGVyczogZnVuY3Rpb24gKCkge1xu
XHQgICAgcmV0dXJuIFRSQU5TQUNUSU9OX1dSQVBQRVJTO1xuXHQgIH0sXG5cdFxuXHQgIGRlc3Ry
dWN0b3I6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHRoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoID0g
bnVsbDtcblx0ICAgIENhbGxiYWNrUXVldWUucmVsZWFzZSh0aGlzLmNhbGxiYWNrUXVldWUpO1xu
XHQgICAgdGhpcy5jYWxsYmFja1F1ZXVlID0gbnVsbDtcblx0ICAgIFJlYWN0VXBkYXRlcy5SZWFj
dFJlY29uY2lsZVRyYW5zYWN0aW9uLnJlbGVhc2UodGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbik7
XG5cdCAgICB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uID0gbnVsbDtcblx0ICB9LFxuXHRcblx0
ICBwZXJmb3JtOiBmdW5jdGlvbiAobWV0aG9kLCBzY29wZSwgYSkge1xuXHQgICAgLy8gRXNzZW50
aWFsbHkgY2FsbHMgYHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24ucGVyZm9ybShtZXRob2QsIHNj
b3BlLCBhKWBcblx0ICAgIC8vIHdpdGggdGhpcyB0cmFuc2FjdGlvbidzIHdyYXBwZXJzIGFyb3Vu
ZCBpdC5cblx0ICAgIHJldHVybiBUcmFuc2FjdGlvbi5wZXJmb3JtLmNhbGwodGhpcywgdGhpcy5y
ZWNvbmNpbGVUcmFuc2FjdGlvbi5wZXJmb3JtLCB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uLCBt
ZXRob2QsIHNjb3BlLCBhKTtcblx0ICB9XG5cdH0pO1xuXHRcblx0UG9vbGVkQ2xhc3MuYWRkUG9v
bGluZ1RvKFJlYWN0VXBkYXRlc0ZsdXNoVHJhbnNhY3Rpb24pO1xuXHRcblx0ZnVuY3Rpb24gYmF0
Y2hlZFVwZGF0ZXMoY2FsbGJhY2ssIGEsIGIsIGMsIGQsIGUpIHtcblx0ICBlbnN1cmVJbmplY3Rl
ZCgpO1xuXHQgIHJldHVybiBiYXRjaGluZ1N0cmF0ZWd5LmJhdGNoZWRVcGRhdGVzKGNhbGxiYWNr
LCBhLCBiLCBjLCBkLCBlKTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIEFycmF5IGNvbXBhcmF0b3Ig
Zm9yIFJlYWN0Q29tcG9uZW50cyBieSBtb3VudCBvcmRlcmluZy5cblx0ICpcblx0ICogQHBhcmFt
IHtSZWFjdENvbXBvbmVudH0gYzEgZmlyc3QgY29tcG9uZW50IHlvdSdyZSBjb21wYXJpbmdcblx0
ICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gYzIgc2Vjb25kIGNvbXBvbmVudCB5b3UncmUgY29t
cGFyaW5nXG5cdCAqIEByZXR1cm4ge251bWJlcn0gUmV0dXJuIHZhbHVlIHVzYWJsZSBieSBBcnJh
eS5wcm90b3R5cGUuc29ydCgpLlxuXHQgKi9cblx0ZnVuY3Rpb24gbW91bnRPcmRlckNvbXBhcmF0
b3IoYzEsIGMyKSB7XG5cdCAgcmV0dXJuIGMxLl9tb3VudE9yZGVyIC0gYzIuX21vdW50T3JkZXI7
XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHJ1bkJhdGNoZWRVcGRhdGVzKHRyYW5zYWN0aW9uKSB7XG5c
dCAgdmFyIGxlbiA9IHRyYW5zYWN0aW9uLmRpcnR5Q29tcG9uZW50c0xlbmd0aDtcblx0ICAhKGxl
biA9PT0gZGlydHlDb21wb25lbnRzLmxlbmd0aCkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2Us
ICdFeHBlY3RlZCBmbHVzaCB0cmFuc2FjdGlvblxcJ3Mgc3RvcmVkIGRpcnR5LWNvbXBvbmVudHMg
bGVuZ3RoICglcykgdG8gbWF0Y2ggZGlydHktY29tcG9uZW50cyBhcnJheSBsZW5ndGggKCVzKS4n
LCBsZW4sIGRpcnR5Q29tcG9uZW50cy5sZW5ndGgpIDogX3Byb2RJbnZhcmlhbnQoJzEyNCcsIGxl
biwgZGlydHlDb21wb25lbnRzLmxlbmd0aCkgOiB2b2lkIDA7XG5cdFxuXHQgIC8vIFNpbmNlIHJl
Y29uY2lsaW5nIGEgY29tcG9uZW50IGhpZ2hlciBpbiB0aGUgb3duZXIgaGllcmFyY2h5IHVzdWFs
bHkgKG5vdFxuXHQgIC8vIGFsd2F5cyAtLSBzZWUgc2hvdWxkQ29tcG9uZW50VXBkYXRlKCkpIHdp
bGwgcmVjb25jaWxlIGNoaWxkcmVuLCByZWNvbmNpbGVcblx0ICAvLyB0aGVtIGJlZm9yZSB0aGVp
ciBjaGlsZHJlbiBieSBzb3J0aW5nIHRoZSBhcnJheS5cblx0ICBkaXJ0eUNvbXBvbmVudHMuc29y
dChtb3VudE9yZGVyQ29tcGFyYXRvcik7XG5cdFxuXHQgIC8vIEFueSB1cGRhdGVzIGVucXVldWVk
IHdoaWxlIHJlY29uY2lsaW5nIG11c3QgYmUgcGVyZm9ybWVkIGFmdGVyIHRoaXMgZW50aXJlXG5c
dCAgLy8gYmF0Y2guIE90aGVyd2lzZSwgaWYgZGlydHlDb21wb25lbnRzIGlzIFtBLCBCXSB3aGVy
ZSBBIGhhcyBjaGlsZHJlbiBCIGFuZFxuXHQgIC8vIEMsIEIgY291bGQgdXBkYXRlIHR3aWNlIGlu
IGEgc2luZ2xlIGJhdGNoIGlmIEMncyByZW5kZXIgZW5xdWV1ZXMgYW4gdXBkYXRlXG5cdCAgLy8g
dG8gQiAoc2luY2UgQiB3b3VsZCBoYXZlIGFscmVhZHkgdXBkYXRlZCwgd2Ugc2hvdWxkIHNraXAg
aXQsIGFuZCB0aGUgb25seVxuXHQgIC8vIHdheSB3ZSBjYW4ga25vdyB0byBkbyBzbyBpcyBieSBj
aGVja2luZyB0aGUgYmF0Y2ggY291bnRlcikuXG5cdCAgdXBkYXRlQmF0Y2hOdW1iZXIrKztcblx0
XG5cdCAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuXHQgICAgLy8gSWYgYSBjb21w
b25lbnQgaXMgdW5tb3VudGVkIGJlZm9yZSBwZW5kaW5nIGNoYW5nZXMgYXBwbHksIGl0IHdpbGwg
c3RpbGxcblx0ICAgIC8vIGJlIGhlcmUsIGJ1dCB3ZSBhc3N1bWUgdGhhdCBpdCBoYXMgY2xlYXJl
ZCBpdHMgX3BlbmRpbmdDYWxsYmFja3MgYW5kXG5cdCAgICAvLyB0aGF0IHBlcmZvcm1VcGRhdGVJ
Zk5lY2Vzc2FyeSBpcyBhIG5vb3AuXG5cdCAgICB2YXIgY29tcG9uZW50ID0gZGlydHlDb21wb25l
bnRzW2ldO1xuXHRcblx0ICAgIC8vIElmIHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeSBoYXBwZW5z
IHRvIGVucXVldWUgYW55IG5ldyB1cGRhdGVzLCB3ZVxuXHQgICAgLy8gc2hvdWxkbid0IGV4ZWN1
dGUgdGhlIGNhbGxiYWNrcyB1bnRpbCB0aGUgbmV4dCByZW5kZXIgaGFwcGVucywgc29cblx0ICAg
IC8vIHN0YXNoIHRoZSBjYWxsYmFja3MgZmlyc3Rcblx0ICAgIHZhciBjYWxsYmFja3MgPSBjb21w
b25lbnQuX3BlbmRpbmdDYWxsYmFja3M7XG5cdCAgICBjb21wb25lbnQuX3BlbmRpbmdDYWxsYmFj
a3MgPSBudWxsO1xuXHRcblx0ICAgIHZhciBtYXJrZXJOYW1lO1xuXHQgICAgaWYgKFJlYWN0RmVh
dHVyZUZsYWdzLmxvZ1RvcExldmVsUmVuZGVycykge1xuXHQgICAgICB2YXIgbmFtZWRDb21wb25l
bnQgPSBjb21wb25lbnQ7XG5cdCAgICAgIC8vIER1Y2sgdHlwZSBUb3BMZXZlbFdyYXBwZXIuIFRo
aXMgaXMgcHJvYmFibHkgYWx3YXlzIHRydWUuXG5cdCAgICAgIGlmIChjb21wb25lbnQuX2N1cnJl
bnRFbGVtZW50LnR5cGUuaXNSZWFjdFRvcExldmVsV3JhcHBlcikge1xuXHQgICAgICAgIG5hbWVk
Q29tcG9uZW50ID0gY29tcG9uZW50Ll9yZW5kZXJlZENvbXBvbmVudDtcblx0ICAgICAgfVxuXHQg
ICAgICBtYXJrZXJOYW1lID0gJ1JlYWN0IHVwZGF0ZTogJyArIG5hbWVkQ29tcG9uZW50LmdldE5h
bWUoKTtcblx0ICAgICAgY29uc29sZS50aW1lKG1hcmtlck5hbWUpO1xuXHQgICAgfVxuXHRcblx0
ICAgIFJlYWN0UmVjb25jaWxlci5wZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkoY29tcG9uZW50LCB0
cmFuc2FjdGlvbi5yZWNvbmNpbGVUcmFuc2FjdGlvbiwgdXBkYXRlQmF0Y2hOdW1iZXIpO1xuXHRc
blx0ICAgIGlmIChtYXJrZXJOYW1lKSB7XG5cdCAgICAgIGNvbnNvbGUudGltZUVuZChtYXJrZXJO
YW1lKTtcblx0ICAgIH1cblx0XG5cdCAgICBpZiAoY2FsbGJhY2tzKSB7XG5cdCAgICAgIGZvciAo
dmFyIGogPSAwOyBqIDwgY2FsbGJhY2tzLmxlbmd0aDsgaisrKSB7XG5cdCAgICAgICAgdHJhbnNh
Y3Rpb24uY2FsbGJhY2tRdWV1ZS5lbnF1ZXVlKGNhbGxiYWNrc1tqXSwgY29tcG9uZW50LmdldFB1
YmxpY0luc3RhbmNlKCkpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cdFxuXHR2
YXIgZmx1c2hCYXRjaGVkVXBkYXRlcyA9IGZ1bmN0aW9uICgpIHtcblx0ICAvLyBSZWFjdFVwZGF0
ZXNGbHVzaFRyYW5zYWN0aW9uJ3Mgd3JhcHBlcnMgd2lsbCBjbGVhciB0aGUgZGlydHlDb21wb25l
bnRzXG5cdCAgLy8gYXJyYXkgYW5kIHBlcmZvcm0gYW55IHVwZGF0ZXMgZW5xdWV1ZWQgYnkgbW91
bnQtcmVhZHkgaGFuZGxlcnMgKGkuZS4sXG5cdCAgLy8gY29tcG9uZW50RGlkVXBkYXRlKSBidXQg
d2UgbmVlZCB0byBjaGVjayBoZXJlIHRvbyBpbiBvcmRlciB0byBjYXRjaFxuXHQgIC8vIHVwZGF0
ZXMgZW5xdWV1ZWQgYnkgc2V0U3RhdGUgY2FsbGJhY2tzIGFuZCBhc2FwIGNhbGxzLlxuXHQgIHdo
aWxlIChkaXJ0eUNvbXBvbmVudHMubGVuZ3RoIHx8IGFzYXBFbnF1ZXVlZCkge1xuXHQgICAgaWYg
KGRpcnR5Q29tcG9uZW50cy5sZW5ndGgpIHtcblx0ICAgICAgdmFyIHRyYW5zYWN0aW9uID0gUmVh
Y3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbi5nZXRQb29sZWQoKTtcblx0ICAgICAgdHJhbnNhY3Rp
b24ucGVyZm9ybShydW5CYXRjaGVkVXBkYXRlcywgbnVsbCwgdHJhbnNhY3Rpb24pO1xuXHQgICAg
ICBSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uLnJlbGVhc2UodHJhbnNhY3Rpb24pO1xuXHQg
ICAgfVxuXHRcblx0ICAgIGlmIChhc2FwRW5xdWV1ZWQpIHtcblx0ICAgICAgYXNhcEVucXVldWVk
ID0gZmFsc2U7XG5cdCAgICAgIHZhciBxdWV1ZSA9IGFzYXBDYWxsYmFja1F1ZXVlO1xuXHQgICAg
ICBhc2FwQ2FsbGJhY2tRdWV1ZSA9IENhbGxiYWNrUXVldWUuZ2V0UG9vbGVkKCk7XG5cdCAgICAg
IHF1ZXVlLm5vdGlmeUFsbCgpO1xuXHQgICAgICBDYWxsYmFja1F1ZXVlLnJlbGVhc2UocXVldWUp
O1xuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5cdC8qKlxuXHQgKiBNYXJrIGEgY29tcG9uZW50
IGFzIG5lZWRpbmcgYSByZXJlbmRlciwgYWRkaW5nIGFuIG9wdGlvbmFsIGNhbGxiYWNrIHRvIGFc
blx0ICogbGlzdCBvZiBmdW5jdGlvbnMgd2hpY2ggd2lsbCBiZSBleGVjdXRlZCBvbmNlIHRoZSBy
ZXJlbmRlciBvY2N1cnMuXG5cdCAqL1xuXHRmdW5jdGlvbiBlbnF1ZXVlVXBkYXRlKGNvbXBvbmVu
dCkge1xuXHQgIGVuc3VyZUluamVjdGVkKCk7XG5cdFxuXHQgIC8vIFZhcmlvdXMgcGFydHMgb2Yg
b3VyIGNvZGUgKHN1Y2ggYXMgUmVhY3RDb21wb3NpdGVDb21wb25lbnQnc1xuXHQgIC8vIF9yZW5k
ZXJWYWxpZGF0ZWRDb21wb25lbnQpIGFzc3VtZSB0aGF0IGNhbGxzIHRvIHJlbmRlciBhcmVuJ3Qg
bmVzdGVkO1xuXHQgIC8vIHZlcmlmeSB0aGF0IHRoYXQncyB0aGUgY2FzZS4gKFRoaXMgaXMgY2Fs
bGVkIGJ5IGVhY2ggdG9wLWxldmVsIHVwZGF0ZVxuXHQgIC8vIGZ1bmN0aW9uLCBsaWtlIHNldFN0
YXRlLCBmb3JjZVVwZGF0ZSwgZXRjLjsgY3JlYXRpb24gYW5kXG5cdCAgLy8gZGVzdHJ1Y3Rpb24g
b2YgdG9wLWxldmVsIGNvbXBvbmVudHMgaXMgZ3VhcmRlZCBpbiBSZWFjdE1vdW50Lilcblx0XG5c
dCAgaWYgKCFiYXRjaGluZ1N0cmF0ZWd5LmlzQmF0Y2hpbmdVcGRhdGVzKSB7XG5cdCAgICBiYXRj
aGluZ1N0cmF0ZWd5LmJhdGNoZWRVcGRhdGVzKGVucXVldWVVcGRhdGUsIGNvbXBvbmVudCk7XG5c
dCAgICByZXR1cm47XG5cdCAgfVxuXHRcblx0ICBkaXJ0eUNvbXBvbmVudHMucHVzaChjb21wb25l
bnQpO1xuXHQgIGlmIChjb21wb25lbnQuX3VwZGF0ZUJhdGNoTnVtYmVyID09IG51bGwpIHtcblx0
ICAgIGNvbXBvbmVudC5fdXBkYXRlQmF0Y2hOdW1iZXIgPSB1cGRhdGVCYXRjaE51bWJlciArIDE7
XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICogRW5xdWV1ZSBhIGNhbGxiYWNrIHRvIGJlIHJ1
biBhdCB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IGJhdGNoaW5nIGN5Y2xlLiBUaHJvd3Ncblx0ICog
aWYgbm8gdXBkYXRlcyBhcmUgY3VycmVudGx5IGJlaW5nIHBlcmZvcm1lZC5cblx0ICovXG5cdGZ1
bmN0aW9uIGFzYXAoY2FsbGJhY2ssIGNvbnRleHQpIHtcblx0ICAhYmF0Y2hpbmdTdHJhdGVneS5p
c0JhdGNoaW5nVXBkYXRlcyA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0VXBkYXRl
cy5hc2FwOiBDYW5cXCd0IGVucXVldWUgYW4gYXNhcCBjYWxsYmFjayBpbiBhIGNvbnRleHQgd2hl
cmV1cGRhdGVzIGFyZSBub3QgYmVpbmcgYmF0Y2hlZC4nKSA6IF9wcm9kSW52YXJpYW50KCcxMjUn
KSA6IHZvaWQgMDtcblx0ICBhc2FwQ2FsbGJhY2tRdWV1ZS5lbnF1ZXVlKGNhbGxiYWNrLCBjb250
ZXh0KTtcblx0ICBhc2FwRW5xdWV1ZWQgPSB0cnVlO1xuXHR9XG5cdFxuXHR2YXIgUmVhY3RVcGRh
dGVzSW5qZWN0aW9uID0ge1xuXHQgIGluamVjdFJlY29uY2lsZVRyYW5zYWN0aW9uOiBmdW5jdGlv
biAoUmVjb25jaWxlVHJhbnNhY3Rpb24pIHtcblx0ICAgICFSZWNvbmNpbGVUcmFuc2FjdGlvbiA/
ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0VXBkYXRlczogbXVzdCBwcm92aWRlIGEg
cmVjb25jaWxlIHRyYW5zYWN0aW9uIGNsYXNzJykgOiBfcHJvZEludmFyaWFudCgnMTI2JykgOiB2
b2lkIDA7XG5cdCAgICBSZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbiA9IFJl
Y29uY2lsZVRyYW5zYWN0aW9uO1xuXHQgIH0sXG5cdFxuXHQgIGluamVjdEJhdGNoaW5nU3RyYXRl
Z3k6IGZ1bmN0aW9uIChfYmF0Y2hpbmdTdHJhdGVneSkge1xuXHQgICAgIV9iYXRjaGluZ1N0cmF0
ZWd5ID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzOiBtdXN0IHByb3Zp
ZGUgYSBiYXRjaGluZyBzdHJhdGVneScpIDogX3Byb2RJbnZhcmlhbnQoJzEyNycpIDogdm9pZCAw
O1xuXHQgICAgISh0eXBlb2YgX2JhdGNoaW5nU3RyYXRlZ3kuYmF0Y2hlZFVwZGF0ZXMgPT09ICdm
dW5jdGlvbicpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzOiBtdXN0
IHByb3ZpZGUgYSBiYXRjaGVkVXBkYXRlcygpIGZ1bmN0aW9uJykgOiBfcHJvZEludmFyaWFudCgn
MTI4JykgOiB2b2lkIDA7XG5cdCAgICAhKHR5cGVvZiBfYmF0Y2hpbmdTdHJhdGVneS5pc0JhdGNo
aW5nVXBkYXRlcyA9PT0gJ2Jvb2xlYW4nKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ1Jl
YWN0VXBkYXRlczogbXVzdCBwcm92aWRlIGFuIGlzQmF0Y2hpbmdVcGRhdGVzIGJvb2xlYW4gYXR0
cmlidXRlJykgOiBfcHJvZEludmFyaWFudCgnMTI5JykgOiB2b2lkIDA7XG5cdCAgICBiYXRjaGlu
Z1N0cmF0ZWd5ID0gX2JhdGNoaW5nU3RyYXRlZ3k7XG5cdCAgfVxuXHR9O1xuXHRcblx0dmFyIFJl
YWN0VXBkYXRlcyA9IHtcblx0ICAvKipcblx0ICAgKiBSZWFjdCByZWZlcmVuY2VzIGBSZWFjdFJl
Y29uY2lsZVRyYW5zYWN0aW9uYCB1c2luZyB0aGlzIHByb3BlcnR5IGluIG9yZGVyXG5cdCAgICog
dG8gYWxsb3cgZGVwZW5kZW5jeSBpbmplY3Rpb24uXG5cdCAgICpcblx0ICAgKiBAaW50ZXJuYWxc
blx0ICAgKi9cblx0ICBSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uOiBudWxsLFxuXHRcblx0ICBi
YXRjaGVkVXBkYXRlczogYmF0Y2hlZFVwZGF0ZXMsXG5cdCAgZW5xdWV1ZVVwZGF0ZTogZW5xdWV1
ZVVwZGF0ZSxcblx0ICBmbHVzaEJhdGNoZWRVcGRhdGVzOiBmbHVzaEJhdGNoZWRVcGRhdGVzLFxu
XHQgIGluamVjdGlvbjogUmVhY3RVcGRhdGVzSW5qZWN0aW9uLFxuXHQgIGFzYXA6IGFzYXBcblx0
fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RVcGRhdGVzO1xuXG4vKioqLyB9LFxuLyog
MTAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
Xykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9c
blx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfYXNzaWduID0gX193ZWJwYWNrX3JlcXVp
cmVfXyg0KTtcblx0XG5cdHZhciBQb29sZWRDbGFzcyA9IF9fd2VicGFja19yZXF1aXJlX18oMTMp
O1xuXHRcblx0dmFyIGVtcHR5RnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xuXHR2
YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cdFxuXHR2YXIgZGlkV2FybkZv
ckFkZGVkTmV3UHJvcGVydHkgPSBmYWxzZTtcblx0dmFyIGlzUHJveHlTdXBwb3J0ZWQgPSB0eXBl
b2YgUHJveHkgPT09ICdmdW5jdGlvbic7XG5cdFxuXHR2YXIgc2hvdWxkQmVSZWxlYXNlZFByb3Bl
cnRpZXMgPSBbJ2Rpc3BhdGNoQ29uZmlnJywgJ190YXJnZXRJbnN0JywgJ25hdGl2ZUV2ZW50Jywg
J2lzRGVmYXVsdFByZXZlbnRlZCcsICdpc1Byb3BhZ2F0aW9uU3RvcHBlZCcsICdfZGlzcGF0Y2hM
aXN0ZW5lcnMnLCAnX2Rpc3BhdGNoSW5zdGFuY2VzJ107XG5cdFxuXHQvKipcblx0ICogQGludGVy
ZmFjZSBFdmVudFxuXHQgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2
ZW50cy9cblx0ICovXG5cdHZhciBFdmVudEludGVyZmFjZSA9IHtcblx0ICB0eXBlOiBudWxsLFxu
XHQgIHRhcmdldDogbnVsbCxcblx0ICAvLyBjdXJyZW50VGFyZ2V0IGlzIHNldCB3aGVuIGRpc3Bh
dGNoaW5nOyBubyB1c2UgaW4gY29weWluZyBpdCBoZXJlXG5cdCAgY3VycmVudFRhcmdldDogZW1w
dHlGdW5jdGlvbi50aGF0UmV0dXJuc051bGwsXG5cdCAgZXZlbnRQaGFzZTogbnVsbCxcblx0ICBi
dWJibGVzOiBudWxsLFxuXHQgIGNhbmNlbGFibGU6IG51bGwsXG5cdCAgdGltZVN0YW1wOiBmdW5j
dGlvbiAoZXZlbnQpIHtcblx0ICAgIHJldHVybiBldmVudC50aW1lU3RhbXAgfHwgRGF0ZS5ub3co
KTtcblx0ICB9LFxuXHQgIGRlZmF1bHRQcmV2ZW50ZWQ6IG51bGwsXG5cdCAgaXNUcnVzdGVkOiBu
dWxsXG5cdH07XG5cdFxuXHQvKipcblx0ICogU3ludGhldGljIGV2ZW50cyBhcmUgZGlzcGF0Y2hl
ZCBieSBldmVudCBwbHVnaW5zLCB0eXBpY2FsbHkgaW4gcmVzcG9uc2UgdG8gYVxuXHQgKiB0b3At
bGV2ZWwgZXZlbnQgZGVsZWdhdGlvbiBoYW5kbGVyLlxuXHQgKlxuXHQgKiBUaGVzZSBzeXN0ZW1z
IHNob3VsZCBnZW5lcmFsbHkgdXNlIHBvb2xpbmcgdG8gcmVkdWNlIHRoZSBmcmVxdWVuY3kgb2Yg
Z2FyYmFnZVxuXHQgKiBjb2xsZWN0aW9uLiBUaGUgc3lzdGVtIHNob3VsZCBjaGVjayBgaXNQZXJz
aXN0ZW50YCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGVcblx0ICogZXZlbnQgc2hvdWxkIGJlIHJl
bGVhc2VkIGludG8gdGhlIHBvb2wgYWZ0ZXIgYmVpbmcgZGlzcGF0Y2hlZC4gVXNlcnMgdGhhdFxu
XHQgKiBuZWVkIGEgcGVyc2lzdGVkIGV2ZW50IHNob3VsZCBpbnZva2UgYHBlcnNpc3RgLlxuXHQg
KlxuXHQgKiBTeW50aGV0aWMgZXZlbnRzIChhbmQgc3ViY2xhc3NlcykgaW1wbGVtZW50IHRoZSBE
T00gTGV2ZWwgMyBFdmVudHMgQVBJIGJ5XG5cdCAqIG5vcm1hbGl6aW5nIGJyb3dzZXIgcXVpcmtz
LiBTdWJjbGFzc2VzIGRvIG5vdCBuZWNlc3NhcmlseSBoYXZlIHRvIGltcGxlbWVudCBhXG5cdCAq
IERPTSBpbnRlcmZhY2U7IGN1c3RvbSBhcHBsaWNhdGlvbi1zcGVjaWZpYyBldmVudHMgY2FuIGFs
c28gc3ViY2xhc3MgdGhpcy5cblx0ICpcblx0ICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29u
ZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuXHQgKiBAcGFy
YW0geyp9IHRhcmdldEluc3QgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG5c
dCAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cblx0
ICogQHBhcmFtIHtET01FdmVudFRhcmdldH0gbmF0aXZlRXZlbnRUYXJnZXQgVGFyZ2V0IG5vZGUu
XG5cdCAqL1xuXHRmdW5jdGlvbiBTeW50aGV0aWNFdmVudChkaXNwYXRjaENvbmZpZywgdGFyZ2V0
SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG5cdCAgaWYgKGZhbHNlKSB7
XG5cdCAgICAvLyB0aGVzZSBoYXZlIGEgZ2V0dGVyL3NldHRlciBmb3Igd2FybmluZ3Ncblx0ICAg
IGRlbGV0ZSB0aGlzLm5hdGl2ZUV2ZW50O1xuXHQgICAgZGVsZXRlIHRoaXMucHJldmVudERlZmF1
bHQ7XG5cdCAgICBkZWxldGUgdGhpcy5zdG9wUHJvcGFnYXRpb247XG5cdCAgfVxuXHRcblx0ICB0
aGlzLmRpc3BhdGNoQ29uZmlnID0gZGlzcGF0Y2hDb25maWc7XG5cdCAgdGhpcy5fdGFyZ2V0SW5z
dCA9IHRhcmdldEluc3Q7XG5cdCAgdGhpcy5uYXRpdmVFdmVudCA9IG5hdGl2ZUV2ZW50O1xuXHRc
blx0ICB2YXIgSW50ZXJmYWNlID0gdGhpcy5jb25zdHJ1Y3Rvci5JbnRlcmZhY2U7XG5cdCAgZm9y
ICh2YXIgcHJvcE5hbWUgaW4gSW50ZXJmYWNlKSB7XG5cdCAgICBpZiAoIUludGVyZmFjZS5oYXNP
d25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcblx0ICAgICAgY29udGludWU7XG5cdCAgICB9XG5cdCAg
ICBpZiAoZmFsc2UpIHtcblx0ICAgICAgZGVsZXRlIHRoaXNbcHJvcE5hbWVdOyAvLyB0aGlzIGhh
cyBhIGdldHRlci9zZXR0ZXIgZm9yIHdhcm5pbmdzXG5cdCAgICB9XG5cdCAgICB2YXIgbm9ybWFs
aXplID0gSW50ZXJmYWNlW3Byb3BOYW1lXTtcblx0ICAgIGlmIChub3JtYWxpemUpIHtcblx0ICAg
ICAgdGhpc1twcm9wTmFtZV0gPSBub3JtYWxpemUobmF0aXZlRXZlbnQpO1xuXHQgICAgfSBlbHNl
IHtcblx0ICAgICAgaWYgKHByb3BOYW1lID09PSAndGFyZ2V0Jykge1xuXHQgICAgICAgIHRoaXMu
dGFyZ2V0ID0gbmF0aXZlRXZlbnRUYXJnZXQ7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAg
dGhpc1twcm9wTmFtZV0gPSBuYXRpdmVFdmVudFtwcm9wTmFtZV07XG5cdCAgICAgIH1cblx0ICAg
IH1cblx0ICB9XG5cdFxuXHQgIHZhciBkZWZhdWx0UHJldmVudGVkID0gbmF0aXZlRXZlbnQuZGVm
YXVsdFByZXZlbnRlZCAhPSBudWxsID8gbmF0aXZlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCA6IG5h
dGl2ZUV2ZW50LnJldHVyblZhbHVlID09PSBmYWxzZTtcblx0ICBpZiAoZGVmYXVsdFByZXZlbnRl
ZCkge1xuXHQgICAgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRS
ZXR1cm5zVHJ1ZTtcblx0ICB9IGVsc2Uge1xuXHQgICAgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQg
PSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zRmFsc2U7XG5cdCAgfVxuXHQgIHRoaXMuaXNQcm9w
YWdhdGlvblN0b3BwZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zRmFsc2U7XG5cdCAgcmV0
dXJuIHRoaXM7XG5cdH1cblx0XG5cdF9hc3NpZ24oU3ludGhldGljRXZlbnQucHJvdG90eXBlLCB7
XG5cdCAgcHJldmVudERlZmF1bHQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHRoaXMuZGVmYXVsdFBy
ZXZlbnRlZCA9IHRydWU7XG5cdCAgICB2YXIgZXZlbnQgPSB0aGlzLm5hdGl2ZUV2ZW50O1xuXHQg
ICAgaWYgKCFldmVudCkge1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdFxuXHQgICAgaWYg
KGV2ZW50LnByZXZlbnREZWZhdWx0KSB7XG5cdCAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7
XG5cdCAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB2YWxpZC10eXBlb2Zcblx0ICAg
IH0gZWxzZSBpZiAodHlwZW9mIGV2ZW50LnJldHVyblZhbHVlICE9PSAndW5rbm93bicpIHtcblx0
ICAgICAgZXZlbnQucmV0dXJuVmFsdWUgPSBmYWxzZTtcblx0ICAgIH1cblx0ICAgIHRoaXMuaXNE
ZWZhdWx0UHJldmVudGVkID0gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RydWU7XG5cdCAgfSxc
blx0XG5cdCAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbiAoKSB7XG5cdCAgICB2YXIgZXZlbnQg
PSB0aGlzLm5hdGl2ZUV2ZW50O1xuXHQgICAgaWYgKCFldmVudCkge1xuXHQgICAgICByZXR1cm47
XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKGV2ZW50LnN0b3BQcm9wYWdhdGlvbikge1xuXHQgICAg
ICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcblx0ICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4
dC1saW5lIHZhbGlkLXR5cGVvZlxuXHQgICAgfSBlbHNlIGlmICh0eXBlb2YgZXZlbnQuY2FuY2Vs
QnViYmxlICE9PSAndW5rbm93bicpIHtcblx0ICAgICAgLy8gVGhlIENoYW5nZUV2ZW50UGx1Z2lu
IHJlZ2lzdGVycyBhIFwicHJvcGVydHljaGFuZ2VcIiBldmVudCBmb3Jcblx0ICAgICAgLy8gSUUu
IFRoaXMgZXZlbnQgZG9lcyBub3Qgc3VwcG9ydCBidWJibGluZyBvciBjYW5jZWxsaW5nLCBhbmRc
blx0ICAgICAgLy8gYW55IHJlZmVyZW5jZXMgdG8gY2FuY2VsQnViYmxlIHRocm93IFwiTWVtYmVy
IG5vdCBmb3VuZFwiLiAgQVxuXHQgICAgICAvLyB0eXBlb2YgY2hlY2sgb2YgXCJ1bmtub3duXCIg
Y2lyY3VtdmVudHMgdGhpcyBpc3N1ZSAoYW5kIGlzIGFsc29cblx0ICAgICAgLy8gSUUgc3BlY2lm
aWMpLlxuXHQgICAgICBldmVudC5jYW5jZWxCdWJibGUgPSB0cnVlO1xuXHQgICAgfVxuXHRcblx0
ICAgIHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5z
VHJ1ZTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBXZSByZWxlYXNlIGFsbCBkaXNwYXRj
aGVkIGBTeW50aGV0aWNFdmVudGBzIGFmdGVyIGVhY2ggZXZlbnQgbG9vcCwgYWRkaW5nXG5cdCAg
ICogdGhlbSBiYWNrIGludG8gdGhlIHBvb2wuIFRoaXMgYWxsb3dzIGEgd2F5IHRvIGhvbGQgb250
byBhIHJlZmVyZW5jZSB0aGF0XG5cdCAgICogd29uJ3QgYmUgYWRkZWQgYmFjayBpbnRvIHRoZSBw
b29sLlxuXHQgICAqL1xuXHQgIHBlcnNpc3Q6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHRoaXMuaXNQ
ZXJzaXN0ZW50ID0gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RydWU7XG5cdCAgfSxcblx0XG5c
dCAgLyoqXG5cdCAgICogQ2hlY2tzIGlmIHRoaXMgZXZlbnQgc2hvdWxkIGJlIHJlbGVhc2VkIGJh
Y2sgaW50byB0aGUgcG9vbC5cblx0ICAgKlxuXHQgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUg
aWYgdGhpcyBzaG91bGQgbm90IGJlIHJlbGVhc2VkLCBmYWxzZSBvdGhlcndpc2UuXG5cdCAgICov
XG5cdCAgaXNQZXJzaXN0ZW50OiBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zRmFsc2UsXG5cdFxu
XHQgIC8qKlxuXHQgICAqIGBQb29sZWRDbGFzc2AgbG9va3MgZm9yIGBkZXN0cnVjdG9yYCBvbiBl
YWNoIGluc3RhbmNlIGl0IHJlbGVhc2VzLlxuXHQgICAqL1xuXHQgIGRlc3RydWN0b3I6IGZ1bmN0
aW9uICgpIHtcblx0ICAgIHZhciBJbnRlcmZhY2UgPSB0aGlzLmNvbnN0cnVjdG9yLkludGVyZmFj
ZTtcblx0ICAgIGZvciAodmFyIHByb3BOYW1lIGluIEludGVyZmFjZSkge1xuXHQgICAgICBpZiAo
ZmFsc2UpIHtcblx0ICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgcHJvcE5hbWUs
IGdldFBvb2xlZFdhcm5pbmdQcm9wZXJ0eURlZmluaXRpb24ocHJvcE5hbWUsIEludGVyZmFjZVtw
cm9wTmFtZV0pKTtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICB0aGlzW3Byb3BOYW1lXSA9
IG51bGw7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2hv
dWxkQmVSZWxlYXNlZFByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgdGhpc1tzaG91
bGRCZVJlbGVhc2VkUHJvcGVydGllc1tpXV0gPSBudWxsO1xuXHQgICAgfVxuXHQgICAgaWYgKGZh
bHNlKSB7XG5cdCAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCAnbmF0aXZlRXZlbnQn
LCBnZXRQb29sZWRXYXJuaW5nUHJvcGVydHlEZWZpbml0aW9uKCduYXRpdmVFdmVudCcsIG51bGwp
KTtcblx0ICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdwcmV2ZW50RGVmYXVsdCcs
IGdldFBvb2xlZFdhcm5pbmdQcm9wZXJ0eURlZmluaXRpb24oJ3ByZXZlbnREZWZhdWx0JywgZW1w
dHlGdW5jdGlvbikpO1xuXHQgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ3N0b3BQ
cm9wYWdhdGlvbicsIGdldFBvb2xlZFdhcm5pbmdQcm9wZXJ0eURlZmluaXRpb24oJ3N0b3BQcm9w
YWdhdGlvbicsIGVtcHR5RnVuY3Rpb24pKTtcblx0ICAgIH1cblx0ICB9XG5cdH0pO1xuXHRcblx0
U3ludGhldGljRXZlbnQuSW50ZXJmYWNlID0gRXZlbnRJbnRlcmZhY2U7XG5cdFxuXHRpZiAoZmFs
c2UpIHtcblx0ICBpZiAoaXNQcm94eVN1cHBvcnRlZCkge1xuXHQgICAgLyplc2xpbnQtZGlzYWJs
ZSBuby1mdW5jLWFzc2lnbiAqL1xuXHQgICAgU3ludGhldGljRXZlbnQgPSBuZXcgUHJveHkoU3lu
dGhldGljRXZlbnQsIHtcblx0ICAgICAgY29uc3RydWN0OiBmdW5jdGlvbiAodGFyZ2V0LCBhcmdz
KSB7XG5cdCAgICAgICAgcmV0dXJuIHRoaXMuYXBwbHkodGFyZ2V0LCBPYmplY3QuY3JlYXRlKHRh
cmdldC5wcm90b3R5cGUpLCBhcmdzKTtcblx0ICAgICAgfSxcblx0ICAgICAgYXBwbHk6IGZ1bmN0
aW9uIChjb25zdHJ1Y3RvciwgdGhhdCwgYXJncykge1xuXHQgICAgICAgIHJldHVybiBuZXcgUHJv
eHkoY29uc3RydWN0b3IuYXBwbHkodGhhdCwgYXJncyksIHtcblx0ICAgICAgICAgIHNldDogZnVu
Y3Rpb24gKHRhcmdldCwgcHJvcCwgdmFsdWUpIHtcblx0ICAgICAgICAgICAgaWYgKHByb3AgIT09
ICdpc1BlcnNpc3RlbnQnICYmICF0YXJnZXQuY29uc3RydWN0b3IuSW50ZXJmYWNlLmhhc093blBy
b3BlcnR5KHByb3ApICYmIHNob3VsZEJlUmVsZWFzZWRQcm9wZXJ0aWVzLmluZGV4T2YocHJvcCkg
PT09IC0xKSB7XG5cdCAgICAgICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyA/IHdhcm5pbmcoZGlkV2FybkZvckFkZGVkTmV3UHJvcGVydHkgfHwgdGFyZ2V0Lmlz
UGVyc2lzdGVudCgpLCBcIlRoaXMgc3ludGhldGljIGV2ZW50IGlzIHJldXNlZCBmb3IgcGVyZm9y
bWFuY2UgcmVhc29ucy4gSWYgeW91J3JlIFwiICsgXCJzZWVpbmcgdGhpcywgeW91J3JlIGFkZGlu
ZyBhIG5ldyBwcm9wZXJ0eSBpbiB0aGUgc3ludGhldGljIGV2ZW50IG9iamVjdC4gXCIgKyAnVGhl
IHByb3BlcnR5IGlzIG5ldmVyIHJlbGVhc2VkLiBTZWUgJyArICdodHRwczovL2ZiLm1lL3JlYWN0
LWV2ZW50LXBvb2xpbmcgZm9yIG1vcmUgaW5mb3JtYXRpb24uJykgOiB2b2lkIDA7XG5cdCAgICAg
ICAgICAgICAgZGlkV2FybkZvckFkZGVkTmV3UHJvcGVydHkgPSB0cnVlO1xuXHQgICAgICAgICAg
ICB9XG5cdCAgICAgICAgICAgIHRhcmdldFtwcm9wXSA9IHZhbHVlO1xuXHQgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9KTtcblx0ICAgICAgfVxuXHQg
ICAgfSk7XG5cdCAgICAvKmVzbGludC1lbmFibGUgbm8tZnVuYy1hc3NpZ24gKi9cblx0ICB9XG5c
dH1cblx0LyoqXG5cdCAqIEhlbHBlciB0byByZWR1Y2UgYm9pbGVycGxhdGUgd2hlbiBjcmVhdGlu
ZyBzdWJjbGFzc2VzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge2Z1bmN0aW9ufSBDbGFzc1xuXHQgKiBA
cGFyYW0gez9vYmplY3R9IEludGVyZmFjZVxuXHQgKi9cblx0U3ludGhldGljRXZlbnQuYXVnbWVu
dENsYXNzID0gZnVuY3Rpb24gKENsYXNzLCBJbnRlcmZhY2UpIHtcblx0ICB2YXIgU3VwZXIgPSB0
aGlzO1xuXHRcblx0ICB2YXIgRSA9IGZ1bmN0aW9uICgpIHt9O1xuXHQgIEUucHJvdG90eXBlID0g
U3VwZXIucHJvdG90eXBlO1xuXHQgIHZhciBwcm90b3R5cGUgPSBuZXcgRSgpO1xuXHRcblx0ICBf
YXNzaWduKHByb3RvdHlwZSwgQ2xhc3MucHJvdG90eXBlKTtcblx0ICBDbGFzcy5wcm90b3R5cGUg
PSBwcm90b3R5cGU7XG5cdCAgQ2xhc3MucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ2xhc3M7XG5c
dFxuXHQgIENsYXNzLkludGVyZmFjZSA9IF9hc3NpZ24oe30sIFN1cGVyLkludGVyZmFjZSwgSW50
ZXJmYWNlKTtcblx0ICBDbGFzcy5hdWdtZW50Q2xhc3MgPSBTdXBlci5hdWdtZW50Q2xhc3M7XG5c
dFxuXHQgIFBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhDbGFzcywgUG9vbGVkQ2xhc3MuZm91ckFy
Z3VtZW50UG9vbGVyKTtcblx0fTtcblx0XG5cdFBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhTeW50
aGV0aWNFdmVudCwgUG9vbGVkQ2xhc3MuZm91ckFyZ3VtZW50UG9vbGVyKTtcblx0XG5cdG1vZHVs
ZS5leHBvcnRzID0gU3ludGhldGljRXZlbnQ7XG5cdFxuXHQvKipcblx0ICAqIEhlbHBlciB0byBu
dWxsaWZ5IHN5bnRoZXRpY0V2ZW50IGluc3RhbmNlIHByb3BlcnRpZXMgd2hlbiBkZXN0cnVjdGlu
Z1xuXHQgICpcblx0ICAqIEBwYXJhbSB7b2JqZWN0fSBTeW50aGV0aWNFdmVudFxuXHQgICogQHBh
cmFtIHtTdHJpbmd9IHByb3BOYW1lXG5cdCAgKiBAcmV0dXJuIHtvYmplY3R9IGRlZmluZVByb3Bl
cnR5IG9iamVjdFxuXHQgICovXG5cdGZ1bmN0aW9uIGdldFBvb2xlZFdhcm5pbmdQcm9wZXJ0eURl
ZmluaXRpb24ocHJvcE5hbWUsIGdldFZhbCkge1xuXHQgIHZhciBpc0Z1bmN0aW9uID0gdHlwZW9m
IGdldFZhbCA9PT0gJ2Z1bmN0aW9uJztcblx0ICByZXR1cm4ge1xuXHQgICAgY29uZmlndXJhYmxl
OiB0cnVlLFxuXHQgICAgc2V0OiBzZXQsXG5cdCAgICBnZXQ6IGdldFxuXHQgIH07XG5cdFxuXHQg
IGZ1bmN0aW9uIHNldCh2YWwpIHtcblx0ICAgIHZhciBhY3Rpb24gPSBpc0Z1bmN0aW9uID8gJ3Nl
dHRpbmcgdGhlIG1ldGhvZCcgOiAnc2V0dGluZyB0aGUgcHJvcGVydHknO1xuXHQgICAgd2Fybihh
Y3Rpb24sICdUaGlzIGlzIGVmZmVjdGl2ZWx5IGEgbm8tb3AnKTtcblx0ICAgIHJldHVybiB2YWw7
XG5cdCAgfVxuXHRcblx0ICBmdW5jdGlvbiBnZXQoKSB7XG5cdCAgICB2YXIgYWN0aW9uID0gaXNG
dW5jdGlvbiA/ICdhY2Nlc3NpbmcgdGhlIG1ldGhvZCcgOiAnYWNjZXNzaW5nIHRoZSBwcm9wZXJ0
eSc7XG5cdCAgICB2YXIgcmVzdWx0ID0gaXNGdW5jdGlvbiA/ICdUaGlzIGlzIGEgbm8tb3AgZnVu
Y3Rpb24nIDogJ1RoaXMgaXMgc2V0IHRvIG51bGwnO1xuXHQgICAgd2FybihhY3Rpb24sIHJlc3Vs
dCk7XG5cdCAgICByZXR1cm4gZ2V0VmFsO1xuXHQgIH1cblx0XG5cdCAgZnVuY3Rpb24gd2Fybihh
Y3Rpb24sIHJlc3VsdCkge1xuXHQgICAgdmFyIHdhcm5pbmdDb25kaXRpb24gPSBmYWxzZTtcblx0
ICAgICBmYWxzZSA/IHdhcm5pbmcod2FybmluZ0NvbmRpdGlvbiwgXCJUaGlzIHN5bnRoZXRpYyBl
dmVudCBpcyByZXVzZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuIElmIHlvdSdyZSBzZWVpbmcg
dGhpcywgXCIgKyBcInlvdSdyZSAlcyBgJXNgIG9uIGEgcmVsZWFzZWQvbnVsbGlmaWVkIHN5bnRo
ZXRpYyBldmVudC4gJXMuIFwiICsgJ0lmIHlvdSBtdXN0IGtlZXAgdGhlIG9yaWdpbmFsIHN5bnRo
ZXRpYyBldmVudCBhcm91bmQsIHVzZSBldmVudC5wZXJzaXN0KCkuICcgKyAnU2VlIGh0dHBzOi8v
ZmIubWUvcmVhY3QtZXZlbnQtcG9vbGluZyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nLCBhY3Rpb24s
IHByb3BOYW1lLCByZXN1bHQpIDogdm9pZCAwO1xuXHQgIH1cblx0fVxuXG4vKioqLyB9LFxuLyog
MTEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0ICovXG5cdFxuXHQndXNlIHN0
cmljdCc7XG5cdFxuXHQvKipcblx0ICogS2VlcHMgdHJhY2sgb2YgdGhlIGN1cnJlbnQgb3duZXIu
XG5cdCAqXG5cdCAqIFRoZSBjdXJyZW50IG93bmVyIGlzIHRoZSBjb21wb25lbnQgd2hvIHNob3Vs
ZCBvd24gYW55IGNvbXBvbmVudHMgdGhhdCBhcmVcblx0ICogY3VycmVudGx5IGJlaW5nIGNvbnN0
cnVjdGVkLlxuXHQgKi9cblx0dmFyIFJlYWN0Q3VycmVudE93bmVyID0ge1xuXHQgIC8qKlxuXHQg
ICAqIEBpbnRlcm5hbFxuXHQgICAqIEB0eXBlIHtSZWFjdENvbXBvbmVudH1cblx0ICAgKi9cblx0
ICBjdXJyZW50OiBudWxsXG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q3VycmVu
dE93bmVyO1xuXG4vKioqLyB9LFxuLyogMTIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdG1v
ZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNyk7XG5cblxuLyoqKi8gfSxcbi8q
IDEzICovXG5bMjMxLCAzXSxcbi8qIDE0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTUt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpc
blx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgRE9N
TmFtZXNwYWNlcyA9IF9fd2VicGFja19yZXF1aXJlX18oMzUpO1xuXHR2YXIgc2V0SW5uZXJIVE1M
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyOSk7XG5cdFxuXHR2YXIgY3JlYXRlTWljcm9zb2Z0VW5z
YWZlTG9jYWxGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNDMpO1xuXHR2YXIgc2V0VGV4
dENvbnRlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc3KTtcblx0XG5cdHZhciBFTEVNRU5UX05P
REVfVFlQRSA9IDE7XG5cdHZhciBET0NVTUVOVF9GUkFHTUVOVF9OT0RFX1RZUEUgPSAxMTtcblx0
XG5cdC8qKlxuXHQgKiBJbiBJRSAoOC0xMSkgYW5kIEVkZ2UsIGFwcGVuZGluZyBub2RlcyB3aXRo
IG5vIGNoaWxkcmVuIGlzIGRyYW1hdGljYWxseVxuXHQgKiBmYXN0ZXIgdGhhbiBhcHBlbmRpbmcg
YSBmdWxsIHN1YnRyZWUsIHNvIHdlIGVzc2VudGlhbGx5IHF1ZXVlIHVwIHRoZVxuXHQgKiAuYXBw
ZW5kQ2hpbGQgY2FsbHMgaGVyZSBhbmQgYXBwbHkgdGhlbSBzbyBlYWNoIG5vZGUgaXMgYWRkZWQg
dG8gaXRzIHBhcmVudFxuXHQgKiBiZWZvcmUgYW55IGNoaWxkcmVuIGFyZSBhZGRlZC5cblx0ICpc
blx0ICogSW4gb3RoZXIgYnJvd3NlcnMsIGRvaW5nIHNvIGlzIHNsb3dlciBvciBuZXV0cmFsIGNv
bXBhcmVkIHRvIHRoZSBvdGhlciBvcmRlclxuXHQgKiAoaW4gRmlyZWZveCwgdHdpY2UgYXMgc2xv
dykgc28gd2Ugb25seSBkbyB0aGlzIGludmVyc2lvbiBpbiBJRS5cblx0ICpcblx0ICogU2VlIGh0
dHBzOi8vZ2l0aHViLmNvbS9zcGljeWovaW5uZXJodG1sLXZzLWNyZWF0ZWVsZW1lbnQtdnMtY2xv
bmVub2RlLlxuXHQgKi9cblx0dmFyIGVuYWJsZUxhenkgPSB0eXBlb2YgZG9jdW1lbnQgIT09ICd1
bmRlZmluZWQnICYmIHR5cGVvZiBkb2N1bWVudC5kb2N1bWVudE1vZGUgPT09ICdudW1iZXInIHx8
IHR5cGVvZiBuYXZpZ2F0b3IgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBuYXZpZ2F0b3IudXNl
ckFnZW50ID09PSAnc3RyaW5nJyAmJiAvXFxiRWRnZVxcL1xcZC8udGVzdChuYXZpZ2F0b3IudXNl
ckFnZW50KTtcblx0XG5cdGZ1bmN0aW9uIGluc2VydFRyZWVDaGlsZHJlbih0cmVlKSB7XG5cdCAg
aWYgKCFlbmFibGVMYXp5KSB7XG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHQgIHZhciBub2RlID0g
dHJlZS5ub2RlO1xuXHQgIHZhciBjaGlsZHJlbiA9IHRyZWUuY2hpbGRyZW47XG5cdCAgaWYgKGNo
aWxkcmVuLmxlbmd0aCkge1xuXHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5n
dGg7IGkrKykge1xuXHQgICAgICBpbnNlcnRUcmVlQmVmb3JlKG5vZGUsIGNoaWxkcmVuW2ldLCBu
dWxsKTtcblx0ICAgIH1cblx0ICB9IGVsc2UgaWYgKHRyZWUuaHRtbCAhPSBudWxsKSB7XG5cdCAg
ICBzZXRJbm5lckhUTUwobm9kZSwgdHJlZS5odG1sKTtcblx0ICB9IGVsc2UgaWYgKHRyZWUudGV4
dCAhPSBudWxsKSB7XG5cdCAgICBzZXRUZXh0Q29udGVudChub2RlLCB0cmVlLnRleHQpO1xuXHQg
IH1cblx0fVxuXHRcblx0dmFyIGluc2VydFRyZWVCZWZvcmUgPSBjcmVhdGVNaWNyb3NvZnRVbnNh
ZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uIChwYXJlbnROb2RlLCB0cmVlLCByZWZlcmVuY2VOb2Rl
KSB7XG5cdCAgLy8gRG9jdW1lbnRGcmFnbWVudHMgYXJlbid0IGFjdHVhbGx5IHBhcnQgb2YgdGhl
IERPTSBhZnRlciBpbnNlcnRpb24gc29cblx0ICAvLyBhcHBlbmRpbmcgY2hpbGRyZW4gd29uJ3Qg
dXBkYXRlIHRoZSBET00uIFdlIG5lZWQgdG8gZW5zdXJlIHRoZSBmcmFnbWVudFxuXHQgIC8vIGlz
IHByb3Blcmx5IHBvcHVsYXRlZCBmaXJzdCwgYnJlYWtpbmcgb3V0IG9mIG91ciBsYXp5IGFwcHJv
YWNoIGZvciBqdXN0XG5cdCAgLy8gdGhpcyBsZXZlbC4gQWxzbywgc29tZSA8b2JqZWN0PiBwbHVn
aW5zIChsaWtlIEZsYXNoIFBsYXllcikgd2lsbCByZWFkXG5cdCAgLy8gPHBhcmFtPiBub2RlcyBp
bW1lZGlhdGVseSB1cG9uIGluc2VydGlvbiBpbnRvIHRoZSBET00sIHNvIDxvYmplY3Q+XG5cdCAg
Ly8gbXVzdCBhbHNvIGJlIHBvcHVsYXRlZCBwcmlvciB0byBpbnNlcnRpb24gaW50byB0aGUgRE9N
LlxuXHQgIGlmICh0cmVlLm5vZGUubm9kZVR5cGUgPT09IERPQ1VNRU5UX0ZSQUdNRU5UX05PREVf
VFlQRSB8fCB0cmVlLm5vZGUubm9kZVR5cGUgPT09IEVMRU1FTlRfTk9ERV9UWVBFICYmIHRyZWUu
bm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnb2JqZWN0JyAmJiAodHJlZS5ub2RlLm5h
bWVzcGFjZVVSSSA9PSBudWxsIHx8IHRyZWUubm9kZS5uYW1lc3BhY2VVUkkgPT09IERPTU5hbWVz
cGFjZXMuaHRtbCkpIHtcblx0ICAgIGluc2VydFRyZWVDaGlsZHJlbih0cmVlKTtcblx0ICAgIHBh
cmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRyZWUubm9kZSwgcmVmZXJlbmNlTm9kZSk7XG5cdCAgfSBl
bHNlIHtcblx0ICAgIHBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRyZWUubm9kZSwgcmVmZXJlbmNl
Tm9kZSk7XG5cdCAgICBpbnNlcnRUcmVlQ2hpbGRyZW4odHJlZSk7XG5cdCAgfVxuXHR9KTtcblx0
XG5cdGZ1bmN0aW9uIHJlcGxhY2VDaGlsZFdpdGhUcmVlKG9sZE5vZGUsIG5ld1RyZWUpIHtcblx0
ICBvbGROb2RlLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKG5ld1RyZWUubm9kZSwgb2xkTm9kZSk7
XG5cdCAgaW5zZXJ0VHJlZUNoaWxkcmVuKG5ld1RyZWUpO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBx
dWV1ZUNoaWxkKHBhcmVudFRyZWUsIGNoaWxkVHJlZSkge1xuXHQgIGlmIChlbmFibGVMYXp5KSB7
XG5cdCAgICBwYXJlbnRUcmVlLmNoaWxkcmVuLnB1c2goY2hpbGRUcmVlKTtcblx0ICB9IGVsc2Ug
e1xuXHQgICAgcGFyZW50VHJlZS5ub2RlLmFwcGVuZENoaWxkKGNoaWxkVHJlZS5ub2RlKTtcblx0
ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHF1ZXVlSFRNTCh0cmVlLCBodG1sKSB7XG5cdCAgaWYg
KGVuYWJsZUxhenkpIHtcblx0ICAgIHRyZWUuaHRtbCA9IGh0bWw7XG5cdCAgfSBlbHNlIHtcblx0
ICAgIHNldElubmVySFRNTCh0cmVlLm5vZGUsIGh0bWwpO1xuXHQgIH1cblx0fVxuXHRcblx0ZnVu
Y3Rpb24gcXVldWVUZXh0KHRyZWUsIHRleHQpIHtcblx0ICBpZiAoZW5hYmxlTGF6eSkge1xuXHQg
ICAgdHJlZS50ZXh0ID0gdGV4dDtcblx0ICB9IGVsc2Uge1xuXHQgICAgc2V0VGV4dENvbnRlbnQo
dHJlZS5ub2RlLCB0ZXh0KTtcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHRvU3RyaW5nKCkg
e1xuXHQgIHJldHVybiB0aGlzLm5vZGUubm9kZU5hbWU7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIERP
TUxhenlUcmVlKG5vZGUpIHtcblx0ICByZXR1cm4ge1xuXHQgICAgbm9kZTogbm9kZSxcblx0ICAg
IGNoaWxkcmVuOiBbXSxcblx0ICAgIGh0bWw6IG51bGwsXG5cdCAgICB0ZXh0OiBudWxsLFxuXHQg
ICAgdG9TdHJpbmc6IHRvU3RyaW5nXG5cdCAgfTtcblx0fVxuXHRcblx0RE9NTGF6eVRyZWUuaW5z
ZXJ0VHJlZUJlZm9yZSA9IGluc2VydFRyZWVCZWZvcmU7XG5cdERPTUxhenlUcmVlLnJlcGxhY2VD
aGlsZFdpdGhUcmVlID0gcmVwbGFjZUNoaWxkV2l0aFRyZWU7XG5cdERPTUxhenlUcmVlLnF1ZXVl
Q2hpbGQgPSBxdWV1ZUNoaWxkO1xuXHRET01MYXp5VHJlZS5xdWV1ZUhUTUwgPSBxdWV1ZUhUTUw7
XG5cdERPTUxhenlUcmVlLnF1ZXVlVGV4dCA9IHF1ZXVlVGV4dDtcblx0XG5cdG1vZHVsZS5leHBv
cnRzID0gRE9NTGF6eVRyZWU7XG5cbi8qKiovIH0sXG4vKiAxNSAqL1xuLyoqKi8gZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
blx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xu
XHRcblx0dmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblx0XG5c
dHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHRcblx0ZnVuY3Rpb24g
Y2hlY2tNYXNrKHZhbHVlLCBiaXRtYXNrKSB7XG5cdCAgcmV0dXJuICh2YWx1ZSAmIGJpdG1hc2sp
ID09PSBiaXRtYXNrO1xuXHR9XG5cdFxuXHR2YXIgRE9NUHJvcGVydHlJbmplY3Rpb24gPSB7XG5c
dCAgLyoqXG5cdCAgICogTWFwcGluZyBmcm9tIG5vcm1hbGl6ZWQsIGNhbWVsY2FzZWQgcHJvcGVy
dHkgbmFtZXMgdG8gYSBjb25maWd1cmF0aW9uIHRoYXRcblx0ICAgKiBzcGVjaWZpZXMgaG93IHRo
ZSBhc3NvY2lhdGVkIERPTSBwcm9wZXJ0eSBzaG91bGQgYmUgYWNjZXNzZWQgb3IgcmVuZGVyZWQu
XG5cdCAgICovXG5cdCAgTVVTVF9VU0VfUFJPUEVSVFk6IDB4MSxcblx0ICBIQVNfQk9PTEVBTl9W
QUxVRTogMHg0LFxuXHQgIEhBU19OVU1FUklDX1ZBTFVFOiAweDgsXG5cdCAgSEFTX1BPU0lUSVZF
X05VTUVSSUNfVkFMVUU6IDB4MTAgfCAweDgsXG5cdCAgSEFTX09WRVJMT0FERURfQk9PTEVBTl9W
QUxVRTogMHgyMCxcblx0XG5cdCAgLyoqXG5cdCAgICogSW5qZWN0IHNvbWUgc3BlY2lhbGl6ZWQg
a25vd2xlZGdlIGFib3V0IHRoZSBET00uIFRoaXMgdGFrZXMgYSBjb25maWcgb2JqZWN0XG5cdCAg
ICogd2l0aCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG5cdCAgICpcblx0ICAgKiBpc0N1c3Rv
bUF0dHJpYnV0ZTogZnVuY3Rpb24gdGhhdCBnaXZlbiBhbiBhdHRyaWJ1dGUgbmFtZSB3aWxsIHJl
dHVybiB0cnVlXG5cdCAgICogaWYgaXQgY2FuIGJlIGluc2VydGVkIGludG8gdGhlIERPTSB2ZXJi
YXRpbS4gVXNlZnVsIGZvciBkYXRhLSogb3IgYXJpYS0qXG5cdCAgICogYXR0cmlidXRlcyB3aGVy
ZSBpdCdzIGltcG9zc2libGUgdG8gZW51bWVyYXRlIGFsbCBvZiB0aGUgcG9zc2libGVcblx0ICAg
KiBhdHRyaWJ1dGUgbmFtZXMsXG5cdCAgICpcblx0ICAgKiBQcm9wZXJ0aWVzOiBvYmplY3QgbWFw
cGluZyBET00gcHJvcGVydHkgbmFtZSB0byBvbmUgb2YgdGhlXG5cdCAgICogRE9NUHJvcGVydHlJ
bmplY3Rpb24gY29uc3RhbnRzIG9yIG51bGwuIElmIHlvdXIgYXR0cmlidXRlIGlzbid0IGluIGhl
cmUsXG5cdCAgICogaXQgd29uJ3QgZ2V0IHdyaXR0ZW4gdG8gdGhlIERPTS5cblx0ICAgKlxuXHQg
ICAqIERPTUF0dHJpYnV0ZU5hbWVzOiBvYmplY3QgbWFwcGluZyBSZWFjdCBhdHRyaWJ1dGUgbmFt
ZSB0byB0aGUgRE9NXG5cdCAgICogYXR0cmlidXRlIG5hbWUuIEF0dHJpYnV0ZSBuYW1lcyBub3Qg
c3BlY2lmaWVkIHVzZSB0aGUgKipsb3dlcmNhc2UqKlxuXHQgICAqIG5vcm1hbGl6ZWQgbmFtZS5c
blx0ICAgKlxuXHQgICAqIERPTUF0dHJpYnV0ZU5hbWVzcGFjZXM6IG9iamVjdCBtYXBwaW5nIFJl
YWN0IGF0dHJpYnV0ZSBuYW1lIHRvIHRoZSBET01cblx0ICAgKiBhdHRyaWJ1dGUgbmFtZXNwYWNl
IFVSTC4gKEF0dHJpYnV0ZSBuYW1lcyBub3Qgc3BlY2lmaWVkIHVzZSBubyBuYW1lc3BhY2UuKVxu
XHQgICAqXG5cdCAgICogRE9NUHJvcGVydHlOYW1lczogc2ltaWxhciB0byBET01BdHRyaWJ1dGVO
YW1lcyBidXQgZm9yIERPTSBwcm9wZXJ0aWVzLlxuXHQgICAqIFByb3BlcnR5IG5hbWVzIG5vdCBz
cGVjaWZpZWQgdXNlIHRoZSBub3JtYWxpemVkIG5hbWUuXG5cdCAgICpcblx0ICAgKiBET01NdXRh
dGlvbk1ldGhvZHM6IFByb3BlcnRpZXMgdGhhdCByZXF1aXJlIHNwZWNpYWwgbXV0YXRpb24gbWV0
aG9kcy4gSWZcblx0ICAgKiBgdmFsdWVgIGlzIHVuZGVmaW5lZCwgdGhlIG11dGF0aW9uIG1ldGhv
ZCBzaG91bGQgdW5zZXQgdGhlIHByb3BlcnR5LlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtvYmpl
Y3R9IGRvbVByb3BlcnR5Q29uZmlnIHRoZSBjb25maWcgYXMgZGVzY3JpYmVkIGFib3ZlLlxuXHQg
ICAqL1xuXHQgIGluamVjdERPTVByb3BlcnR5Q29uZmlnOiBmdW5jdGlvbiAoZG9tUHJvcGVydHlD
b25maWcpIHtcblx0ICAgIHZhciBJbmplY3Rpb24gPSBET01Qcm9wZXJ0eUluamVjdGlvbjtcblx0
ICAgIHZhciBQcm9wZXJ0aWVzID0gZG9tUHJvcGVydHlDb25maWcuUHJvcGVydGllcyB8fCB7fTtc
blx0ICAgIHZhciBET01BdHRyaWJ1dGVOYW1lc3BhY2VzID0gZG9tUHJvcGVydHlDb25maWcuRE9N
QXR0cmlidXRlTmFtZXNwYWNlcyB8fCB7fTtcblx0ICAgIHZhciBET01BdHRyaWJ1dGVOYW1lcyA9
IGRvbVByb3BlcnR5Q29uZmlnLkRPTUF0dHJpYnV0ZU5hbWVzIHx8IHt9O1xuXHQgICAgdmFyIERP
TVByb3BlcnR5TmFtZXMgPSBkb21Qcm9wZXJ0eUNvbmZpZy5ET01Qcm9wZXJ0eU5hbWVzIHx8IHt9
O1xuXHQgICAgdmFyIERPTU11dGF0aW9uTWV0aG9kcyA9IGRvbVByb3BlcnR5Q29uZmlnLkRPTU11
dGF0aW9uTWV0aG9kcyB8fCB7fTtcblx0XG5cdCAgICBpZiAoZG9tUHJvcGVydHlDb25maWcuaXND
dXN0b21BdHRyaWJ1dGUpIHtcblx0ICAgICAgRE9NUHJvcGVydHkuX2lzQ3VzdG9tQXR0cmlidXRl
RnVuY3Rpb25zLnB1c2goZG9tUHJvcGVydHlDb25maWcuaXNDdXN0b21BdHRyaWJ1dGUpO1xuXHQg
ICAgfVxuXHRcblx0ICAgIGZvciAodmFyIHByb3BOYW1lIGluIFByb3BlcnRpZXMpIHtcblx0ICAg
ICAgISFET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSA/ICBm
YWxzZSA/IGludmFyaWFudChmYWxzZSwgJ2luamVjdERPTVByb3BlcnR5Q29uZmlnKC4uLik6IFlv
dVxcJ3JlIHRyeWluZyB0byBpbmplY3QgRE9NIHByb3BlcnR5IFxcJyVzXFwnIHdoaWNoIGhhcyBh
bHJlYWR5IGJlZW4gaW5qZWN0ZWQuIFlvdSBtYXkgYmUgYWNjaWRlbnRhbGx5IGluamVjdGluZyB0
aGUgc2FtZSBET00gcHJvcGVydHkgY29uZmlnIHR3aWNlLCBvciB5b3UgbWF5IGJlIGluamVjdGlu
ZyB0d28gY29uZmlncyB0aGF0IGhhdmUgY29uZmxpY3RpbmcgcHJvcGVydHkgbmFtZXMuJywgcHJv
cE5hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzQ4JywgcHJvcE5hbWUpIDogdm9pZCAwO1xuXHRcblx0
ICAgICAgdmFyIGxvd2VyQ2FzZWQgPSBwcm9wTmFtZS50b0xvd2VyQ2FzZSgpO1xuXHQgICAgICB2
YXIgcHJvcENvbmZpZyA9IFByb3BlcnRpZXNbcHJvcE5hbWVdO1xuXHRcblx0ICAgICAgdmFyIHBy
b3BlcnR5SW5mbyA9IHtcblx0ICAgICAgICBhdHRyaWJ1dGVOYW1lOiBsb3dlckNhc2VkLFxuXHQg
ICAgICAgIGF0dHJpYnV0ZU5hbWVzcGFjZTogbnVsbCxcblx0ICAgICAgICBwcm9wZXJ0eU5hbWU6
IHByb3BOYW1lLFxuXHQgICAgICAgIG11dGF0aW9uTWV0aG9kOiBudWxsLFxuXHRcblx0ICAgICAg
ICBtdXN0VXNlUHJvcGVydHk6IGNoZWNrTWFzayhwcm9wQ29uZmlnLCBJbmplY3Rpb24uTVVTVF9V
U0VfUFJPUEVSVFkpLFxuXHQgICAgICAgIGhhc0Jvb2xlYW5WYWx1ZTogY2hlY2tNYXNrKHByb3BD
b25maWcsIEluamVjdGlvbi5IQVNfQk9PTEVBTl9WQUxVRSksXG5cdCAgICAgICAgaGFzTnVtZXJp
Y1ZhbHVlOiBjaGVja01hc2socHJvcENvbmZpZywgSW5qZWN0aW9uLkhBU19OVU1FUklDX1ZBTFVF
KSxcblx0ICAgICAgICBoYXNQb3NpdGl2ZU51bWVyaWNWYWx1ZTogY2hlY2tNYXNrKHByb3BDb25m
aWcsIEluamVjdGlvbi5IQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSksXG5cdCAgICAgICAgaGFz
T3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZTogY2hlY2tNYXNrKHByb3BDb25maWcsIEluamVjdGlvbi5I
QVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFKVxuXHQgICAgICB9O1xuXHQgICAgICAhKHByb3Bl
cnR5SW5mby5oYXNCb29sZWFuVmFsdWUgKyBwcm9wZXJ0eUluZm8uaGFzTnVtZXJpY1ZhbHVlICsg
cHJvcGVydHlJbmZvLmhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWUgPD0gMSkgPyAgZmFsc2UgPyBp
bnZhcmlhbnQoZmFsc2UsICdET01Qcm9wZXJ0eTogVmFsdWUgY2FuIGJlIG9uZSBvZiBib29sZWFu
LCBvdmVybG9hZGVkIGJvb2xlYW4sIG9yIG51bWVyaWMgdmFsdWUsIGJ1dCBub3QgYSBjb21iaW5h
dGlvbjogJXMnLCBwcm9wTmFtZSkgOiBfcHJvZEludmFyaWFudCgnNTAnLCBwcm9wTmFtZSkgOiB2
b2lkIDA7XG5cdFxuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICBET01Qcm9wZXJ0eS5n
ZXRQb3NzaWJsZVN0YW5kYXJkTmFtZVtsb3dlckNhc2VkXSA9IHByb3BOYW1lO1xuXHQgICAgICB9
XG5cdFxuXHQgICAgICBpZiAoRE9NQXR0cmlidXRlTmFtZXMuaGFzT3duUHJvcGVydHkocHJvcE5h
bWUpKSB7XG5cdCAgICAgICAgdmFyIGF0dHJpYnV0ZU5hbWUgPSBET01BdHRyaWJ1dGVOYW1lc1tw
cm9wTmFtZV07XG5cdCAgICAgICAgcHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWUgPSBhdHRyaWJ1
dGVOYW1lO1xuXHQgICAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgICAgRE9NUHJvcGVydHku
Z2V0UG9zc2libGVTdGFuZGFyZE5hbWVbYXR0cmlidXRlTmFtZV0gPSBwcm9wTmFtZTtcblx0ICAg
ICAgICB9XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIGlmIChET01BdHRyaWJ1dGVOYW1lc3BhY2Vz
Lmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuXHQgICAgICAgIHByb3BlcnR5SW5mby5hdHRy
aWJ1dGVOYW1lc3BhY2UgPSBET01BdHRyaWJ1dGVOYW1lc3BhY2VzW3Byb3BOYW1lXTtcblx0ICAg
ICAgfVxuXHRcblx0ICAgICAgaWYgKERPTVByb3BlcnR5TmFtZXMuaGFzT3duUHJvcGVydHkocHJv
cE5hbWUpKSB7XG5cdCAgICAgICAgcHJvcGVydHlJbmZvLnByb3BlcnR5TmFtZSA9IERPTVByb3Bl
cnR5TmFtZXNbcHJvcE5hbWVdO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICBpZiAoRE9NTXV0YXRp
b25NZXRob2RzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuXHQgICAgICAgIHByb3BlcnR5
SW5mby5tdXRhdGlvbk1ldGhvZCA9IERPTU11dGF0aW9uTWV0aG9kc1twcm9wTmFtZV07XG5cdCAg
ICAgIH1cblx0XG5cdCAgICAgIERPTVByb3BlcnR5LnByb3BlcnRpZXNbcHJvcE5hbWVdID0gcHJv
cGVydHlJbmZvO1xuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5cdC8qIGVzbGludC1kaXNhYmxl
IG1heC1sZW4gKi9cblx0dmFyIEFUVFJJQlVURV9OQU1FX1NUQVJUX0NIQVIgPSAnOkEtWl9hLXpc
XFxcdTAwQzAtXFxcXHUwMEQ2XFxcXHUwMEQ4LVxcXFx1MDBGNlxcXFx1MDBGOC1cXFxcdTAyRkZc
XFxcdTAzNzAtXFxcXHUwMzdEXFxcXHUwMzdGLVxcXFx1MUZGRlxcXFx1MjAwQy1cXFxcdTIwMERc
XFxcdTIwNzAtXFxcXHUyMThGXFxcXHUyQzAwLVxcXFx1MkZFRlxcXFx1MzAwMS1cXFxcdUQ3RkZc
XFxcdUY5MDAtXFxcXHVGRENGXFxcXHVGREYwLVxcXFx1RkZGRCc7XG5cdC8qIGVzbGludC1lbmFi
bGUgbWF4LWxlbiAqL1xuXHRcblx0LyoqXG5cdCAqIERPTVByb3BlcnR5IGV4cG9ydHMgbG9va3Vw
IG9iamVjdHMgdGhhdCBjYW4gYmUgdXNlZCBsaWtlIGZ1bmN0aW9uczpcblx0ICpcblx0ICogICA+
IERPTVByb3BlcnR5LmlzVmFsaWRbJ2lkJ11cblx0ICogICB0cnVlXG5cdCAqICAgPiBET01Qcm9w
ZXJ0eS5pc1ZhbGlkWydmb29iYXInXVxuXHQgKiAgIHVuZGVmaW5lZFxuXHQgKlxuXHQgKiBBbHRo
b3VnaCB0aGlzIG1heSBiZSBjb25mdXNpbmcsIGl0IHBlcmZvcm1zIGJldHRlciBpbiBnZW5lcmFs
LlxuXHQgKlxuXHQgKiBAc2VlIGh0dHA6Ly9qc3BlcmYuY29tL2tleS1leGlzdHNcblx0ICogQHNl
ZSBodHRwOi8vanNwZXJmLmNvbS9rZXktbWlzc2luZ1xuXHQgKi9cblx0dmFyIERPTVByb3BlcnR5
ID0ge1xuXHQgIElEX0FUVFJJQlVURV9OQU1FOiAnZGF0YS1yZWFjdGlkJyxcblx0ICBST09UX0FU
VFJJQlVURV9OQU1FOiAnZGF0YS1yZWFjdHJvb3QnLFxuXHRcblx0ICBBVFRSSUJVVEVfTkFNRV9T
VEFSVF9DSEFSOiBBVFRSSUJVVEVfTkFNRV9TVEFSVF9DSEFSLFxuXHQgIEFUVFJJQlVURV9OQU1F
X0NIQVI6IEFUVFJJQlVURV9OQU1FX1NUQVJUX0NIQVIgKyAnXFxcXC0uMC05XFxcXHUwMEI3XFxc
XHUwMzAwLVxcXFx1MDM2RlxcXFx1MjAzRi1cXFxcdTIwNDAnLFxuXHRcblx0ICAvKipcblx0ICAg
KiBNYXAgZnJvbSBwcm9wZXJ0eSBcInN0YW5kYXJkIG5hbWVcIiB0byBhbiBvYmplY3Qgd2l0aCBp
bmZvIGFib3V0IGhvdyB0byBzZXRcblx0ICAgKiB0aGUgcHJvcGVydHkgaW4gdGhlIERPTS4gRWFj
aCBvYmplY3QgY29udGFpbnM6XG5cdCAgICpcblx0ICAgKiBhdHRyaWJ1dGVOYW1lOlxuXHQgICAq
ICAgVXNlZCB3aGVuIHJlbmRlcmluZyBtYXJrdXAgb3Igd2l0aCBgKkF0dHJpYnV0ZSgpYC5cblx0
ICAgKiBhdHRyaWJ1dGVOYW1lc3BhY2Vcblx0ICAgKiBwcm9wZXJ0eU5hbWU6XG5cdCAgICogICBV
c2VkIG9uIERPTSBub2RlIGluc3RhbmNlcy4gKFRoaXMgaW5jbHVkZXMgcHJvcGVydGllcyB0aGF0
IG11dGF0ZSBkdWUgdG9cblx0ICAgKiAgIGV4dGVybmFsIGZhY3RvcnMuKVxuXHQgICAqIG11dGF0
aW9uTWV0aG9kOlxuXHQgICAqICAgSWYgbm9uLW51bGwsIHVzZWQgaW5zdGVhZCBvZiB0aGUgcHJv
cGVydHkgb3IgYHNldEF0dHJpYnV0ZSgpYCBhZnRlclxuXHQgICAqICAgaW5pdGlhbCByZW5kZXIu
XG5cdCAgICogbXVzdFVzZVByb3BlcnR5OlxuXHQgICAqICAgV2hldGhlciB0aGUgcHJvcGVydHkg
bXVzdCBiZSBhY2Nlc3NlZCBhbmQgbXV0YXRlZCBhcyBhbiBvYmplY3QgcHJvcGVydHkuXG5cdCAg
ICogaGFzQm9vbGVhblZhbHVlOlxuXHQgICAqICAgV2hldGhlciB0aGUgcHJvcGVydHkgc2hvdWxk
IGJlIHJlbW92ZWQgd2hlbiBzZXQgdG8gYSBmYWxzZXkgdmFsdWUuXG5cdCAgICogaGFzTnVtZXJp
Y1ZhbHVlOlxuXHQgICAqICAgV2hldGhlciB0aGUgcHJvcGVydHkgbXVzdCBiZSBudW1lcmljIG9y
IHBhcnNlIGFzIGEgbnVtZXJpYyBhbmQgc2hvdWxkIGJlXG5cdCAgICogICByZW1vdmVkIHdoZW4g
c2V0IHRvIGEgZmFsc2V5IHZhbHVlLlxuXHQgICAqIGhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlOlxu
XHQgICAqICAgV2hldGhlciB0aGUgcHJvcGVydHkgbXVzdCBiZSBwb3NpdGl2ZSBudW1lcmljIG9y
IHBhcnNlIGFzIGEgcG9zaXRpdmVcblx0ICAgKiAgIG51bWVyaWMgYW5kIHNob3VsZCBiZSByZW1v
dmVkIHdoZW4gc2V0IHRvIGEgZmFsc2V5IHZhbHVlLlxuXHQgICAqIGhhc092ZXJsb2FkZWRCb29s
ZWFuVmFsdWU6XG5cdCAgICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBjYW4gYmUgdXNlZCBhcyBh
IGZsYWcgYXMgd2VsbCBhcyB3aXRoIGEgdmFsdWUuXG5cdCAgICogICBSZW1vdmVkIHdoZW4gc3Ry
aWN0bHkgZXF1YWwgdG8gZmFsc2U7IHByZXNlbnQgd2l0aG91dCBhIHZhbHVlIHdoZW5cblx0ICAg
KiAgIHN0cmljdGx5IGVxdWFsIHRvIHRydWU7IHByZXNlbnQgd2l0aCBhIHZhbHVlIG90aGVyd2lz
ZS5cblx0ICAgKi9cblx0ICBwcm9wZXJ0aWVzOiB7fSxcblx0XG5cdCAgLyoqXG5cdCAgICogTWFw
cGluZyBmcm9tIGxvd2VyY2FzZSBwcm9wZXJ0eSBuYW1lcyB0byB0aGUgcHJvcGVybHkgY2FzZWQg
dmVyc2lvbiwgdXNlZFxuXHQgICAqIHRvIHdhcm4gaW4gdGhlIGNhc2Ugb2YgbWlzc2luZyBwcm9w
ZXJ0aWVzLiBBdmFpbGFibGUgb25seSBpbiBfX0RFVl9fLlxuXHQgICAqXG5cdCAgICogYXV0b2Zv
Y3VzIGlzIHByZWRlZmluZWQsIGJlY2F1c2UgYWRkaW5nIGl0IHRvIHRoZSBwcm9wZXJ0eSB3aGl0
ZWxpc3Rcblx0ICAgKiBjYXVzZXMgdW5pbnRlbmRlZCBzaWRlIGVmZmVjdHMuXG5cdCAgICpcblx0
ICAgKiBAdHlwZSB7T2JqZWN0fVxuXHQgICAqL1xuXHQgIGdldFBvc3NpYmxlU3RhbmRhcmROYW1l
OiAgZmFsc2UgPyB7IGF1dG9mb2N1czogJ2F1dG9Gb2N1cycgfSA6IG51bGwsXG5cdFxuXHQgIC8q
KlxuXHQgICAqIEFsbCBvZiB0aGUgaXNDdXN0b21BdHRyaWJ1dGUoKSBmdW5jdGlvbnMgdGhhdCBo
YXZlIGJlZW4gaW5qZWN0ZWQuXG5cdCAgICovXG5cdCAgX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rp
b25zOiBbXSxcblx0XG5cdCAgLyoqXG5cdCAgICogQ2hlY2tzIHdoZXRoZXIgYSBwcm9wZXJ0eSBu
YW1lIGlzIGEgY3VzdG9tIGF0dHJpYnV0ZS5cblx0ICAgKiBAbWV0aG9kXG5cdCAgICovXG5cdCAg
aXNDdXN0b21BdHRyaWJ1dGU6IGZ1bmN0aW9uIChhdHRyaWJ1dGVOYW1lKSB7XG5cdCAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IERPTVByb3BlcnR5Ll9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9ucy5s
ZW5ndGg7IGkrKykge1xuXHQgICAgICB2YXIgaXNDdXN0b21BdHRyaWJ1dGVGbiA9IERPTVByb3Bl
cnR5Ll9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9uc1tpXTtcblx0ICAgICAgaWYgKGlzQ3VzdG9t
QXR0cmlidXRlRm4oYXR0cmlidXRlTmFtZSkpIHtcblx0ICAgICAgICByZXR1cm4gdHJ1ZTtcblx0
ICAgICAgfVxuXHQgICAgfVxuXHQgICAgcmV0dXJuIGZhbHNlO1xuXHQgIH0sXG5cdFxuXHQgIGlu
amVjdGlvbjogRE9NUHJvcGVydHlJbmplY3Rpb25cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRz
ID0gRE9NUHJvcGVydHk7XG5cbi8qKiovIH0sXG4vKiAxNiAqL1xuLyoqKi8gZnVuY3Rpb24obW9k
dWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRc
blx0dmFyIFJlYWN0UmVmID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNjApO1xuXHR2YXIgUmVhY3RJ
bnN0cnVtZW50YXRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpO1xuXHRcblx0dmFyIHdhcm5p
bmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHRcblx0LyoqXG5cdCAqIEhlbHBlciB0byBj
YWxsIFJlYWN0UmVmLmF0dGFjaFJlZnMgd2l0aCB0aGlzIGNvbXBvc2l0ZSBjb21wb25lbnQsIHNw
bGl0IG91dFxuXHQgKiB0byBhdm9pZCBhbGxvY2F0aW9ucyBpbiB0aGUgdHJhbnNhY3Rpb24gbW91
bnQtcmVhZHkgcXVldWUuXG5cdCAqL1xuXHRmdW5jdGlvbiBhdHRhY2hSZWZzKCkge1xuXHQgIFJl
YWN0UmVmLmF0dGFjaFJlZnModGhpcywgdGhpcy5fY3VycmVudEVsZW1lbnQpO1xuXHR9XG5cdFxu
XHR2YXIgUmVhY3RSZWNvbmNpbGVyID0ge1xuXHQgIC8qKlxuXHQgICAqIEluaXRpYWxpemVzIHRo
ZSBjb21wb25lbnQsIHJlbmRlcnMgbWFya3VwLCBhbmQgcmVnaXN0ZXJzIGV2ZW50IGxpc3RlbmVy
cy5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGludGVybmFsSW5zdGFu
Y2Vcblx0ICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJS
ZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cblx0ICAgKiBAcGFyYW0gez9vYmplY3R9
IHRoZSBjb250YWluaW5nIGhvc3QgY29tcG9uZW50IGluc3RhbmNlXG5cdCAgICogQHBhcmFtIHs/
b2JqZWN0fSBpbmZvIGFib3V0IHRoZSBob3N0IGNvbnRhaW5lclxuXHQgICAqIEByZXR1cm4gez9z
dHJpbmd9IFJlbmRlcmVkIG1hcmt1cCB0byBiZSBpbnNlcnRlZCBpbnRvIHRoZSBET00uXG5cdCAg
ICogQGZpbmFsXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAgbW91bnRDb21wb25lbnQ6
IGZ1bmN0aW9uIChpbnRlcm5hbEluc3RhbmNlLCB0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9z
dENvbnRhaW5lckluZm8sIGNvbnRleHQsIHBhcmVudERlYnVnSUQpIC8vIDAgaW4gcHJvZHVjdGlv
biBhbmQgZm9yIHJvb3RzXG5cdCAge1xuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIGlmIChp
bnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lEICE9PSAwKSB7XG5cdCAgICAgICAgUmVhY3RJbnN0cnVt
ZW50YXRpb24uZGVidWdUb29sLm9uQmVmb3JlTW91bnRDb21wb25lbnQoaW50ZXJuYWxJbnN0YW5j
ZS5fZGVidWdJRCwgaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQsIHBhcmVudERlYnVn
SUQpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICB2YXIgbWFya3VwID0gaW50ZXJuYWxJbnN0
YW5jZS5tb3VudENvbXBvbmVudCh0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5l
ckluZm8sIGNvbnRleHQsIHBhcmVudERlYnVnSUQpO1xuXHQgICAgaWYgKGludGVybmFsSW5zdGFu
Y2UuX2N1cnJlbnRFbGVtZW50ICYmIGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50LnJl
ZiAhPSBudWxsKSB7XG5cdCAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVu
cXVldWUoYXR0YWNoUmVmcywgaW50ZXJuYWxJbnN0YW5jZSk7XG5cdCAgICB9XG5cdCAgICBpZiAo
ZmFsc2UpIHtcblx0ICAgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHtc
blx0ICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Nb3VudENvbXBvbmVu
dChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lEKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAg
cmV0dXJuIG1hcmt1cDtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBSZXR1cm5zIGEgdmFs
dWUgdGhhdCBjYW4gYmUgcGFzc2VkIHRvXG5cdCAgICogUmVhY3RDb21wb25lbnRFbnZpcm9ubWVu
dC5yZXBsYWNlTm9kZVdpdGhNYXJrdXAuXG5cdCAgICovXG5cdCAgZ2V0SG9zdE5vZGU6IGZ1bmN0
aW9uIChpbnRlcm5hbEluc3RhbmNlKSB7XG5cdCAgICByZXR1cm4gaW50ZXJuYWxJbnN0YW5jZS5n
ZXRIb3N0Tm9kZSgpO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFJlbGVhc2VzIGFueSBy
ZXNvdXJjZXMgYWxsb2NhdGVkIGJ5IGBtb3VudENvbXBvbmVudGAuXG5cdCAgICpcblx0ICAgKiBA
ZmluYWxcblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICB1bm1vdW50Q29tcG9uZW50OiBm
dW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSwgc2FmZWx5KSB7XG5cdCAgICBpZiAoZmFsc2UpIHtc
blx0ICAgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHtcblx0ICAgICAg
ICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVVbm1vdW50Q29tcG9uZW50
KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICBS
ZWFjdFJlZi5kZXRhY2hSZWZzKGludGVybmFsSW5zdGFuY2UsIGludGVybmFsSW5zdGFuY2UuX2N1
cnJlbnRFbGVtZW50KTtcblx0ICAgIGludGVybmFsSW5zdGFuY2UudW5tb3VudENvbXBvbmVudChz
YWZlbHkpO1xuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIGlmIChpbnRlcm5hbEluc3RhbmNl
Ll9kZWJ1Z0lEICE9PSAwKSB7XG5cdCAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdU
b29sLm9uVW5tb3VudENvbXBvbmVudChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lEKTtcblx0ICAg
ICAgfVxuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFVwZGF0ZSBhIGNvbXBv
bmVudCB1c2luZyBhIG5ldyBlbGVtZW50LlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtSZWFjdENv
bXBvbmVudH0gaW50ZXJuYWxJbnN0YW5jZVxuXHQgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBu
ZXh0RWxlbWVudFxuXHQgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJh
bnNhY3Rpb25cblx0ICAgKiBAcGFyYW0ge29iamVjdH0gY29udGV4dFxuXHQgICAqIEBpbnRlcm5h
bFxuXHQgICAqL1xuXHQgIHJlY2VpdmVDb21wb25lbnQ6IGZ1bmN0aW9uIChpbnRlcm5hbEluc3Rh
bmNlLCBuZXh0RWxlbWVudCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcblx0ICAgIHZhciBwcmV2
RWxlbWVudCA9IGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50O1xuXHRcblx0ICAgIGlm
IChuZXh0RWxlbWVudCA9PT0gcHJldkVsZW1lbnQgJiYgY29udGV4dCA9PT0gaW50ZXJuYWxJbnN0
YW5jZS5fY29udGV4dCkge1xuXHQgICAgICAvLyBTaW5jZSBlbGVtZW50cyBhcmUgaW1tdXRhYmxl
IGFmdGVyIHRoZSBvd25lciBpcyByZW5kZXJlZCxcblx0ICAgICAgLy8gd2UgY2FuIGRvIGEgY2hl
YXAgaWRlbnRpdHkgY29tcGFyZSBoZXJlIHRvIGRldGVybWluZSBpZiB0aGlzIGlzIGFcblx0ICAg
ICAgLy8gc3VwZXJmbHVvdXMgcmVjb25jaWxlLiBJdCdzIHBvc3NpYmxlIGZvciBzdGF0ZSB0byBi
ZSBtdXRhYmxlIGJ1dCBzdWNoXG5cdCAgICAgIC8vIGNoYW5nZSBzaG91bGQgdHJpZ2dlciBhbiB1
cGRhdGUgb2YgdGhlIG93bmVyIHdoaWNoIHdvdWxkIHJlY3JlYXRlXG5cdCAgICAgIC8vIHRoZSBl
bGVtZW50LiBXZSBleHBsaWNpdGx5IGNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIGFuIG93bmVy
IHNpbmNlXG5cdCAgICAgIC8vIGl0J3MgcG9zc2libGUgZm9yIGFuIGVsZW1lbnQgY3JlYXRlZCBv
dXRzaWRlIGEgY29tcG9zaXRlIHRvIGJlXG5cdCAgICAgIC8vIGRlZXBseSBtdXRhdGVkIGFuZCBy
ZXVzZWQuXG5cdFxuXHQgICAgICAvLyBUT0RPOiBCYWlsaW5nIG91dCBlYXJseSBpcyBqdXN0IGEg
cGVyZiBvcHRpbWl6YXRpb24gcmlnaHQ/XG5cdCAgICAgIC8vIFRPRE86IFJlbW92aW5nIHRoZSBy
ZXR1cm4gc3RhdGVtZW50IHNob3VsZCBhZmZlY3QgY29ycmVjdG5lc3M/XG5cdCAgICAgIHJldHVy
bjtcblx0ICAgIH1cblx0XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgaWYgKGludGVybmFs
SW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHtcblx0ICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlv
bi5kZWJ1Z1Rvb2wub25CZWZvcmVVcGRhdGVDb21wb25lbnQoaW50ZXJuYWxJbnN0YW5jZS5fZGVi
dWdJRCwgbmV4dEVsZW1lbnQpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIHJl
ZnNDaGFuZ2VkID0gUmVhY3RSZWYuc2hvdWxkVXBkYXRlUmVmcyhwcmV2RWxlbWVudCwgbmV4dEVs
ZW1lbnQpO1xuXHRcblx0ICAgIGlmIChyZWZzQ2hhbmdlZCkge1xuXHQgICAgICBSZWFjdFJlZi5k
ZXRhY2hSZWZzKGludGVybmFsSW5zdGFuY2UsIHByZXZFbGVtZW50KTtcblx0ICAgIH1cblx0XG5c
dCAgICBpbnRlcm5hbEluc3RhbmNlLnJlY2VpdmVDb21wb25lbnQobmV4dEVsZW1lbnQsIHRyYW5z
YWN0aW9uLCBjb250ZXh0KTtcblx0XG5cdCAgICBpZiAocmVmc0NoYW5nZWQgJiYgaW50ZXJuYWxJ
bnN0YW5jZS5fY3VycmVudEVsZW1lbnQgJiYgaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1l
bnQucmVmICE9IG51bGwpIHtcblx0ICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5
KCkuZW5xdWV1ZShhdHRhY2hSZWZzLCBpbnRlcm5hbEluc3RhbmNlKTtcblx0ICAgIH1cblx0XG5c
dCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQg
IT09IDApIHtcblx0ICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25VcGRh
dGVDb21wb25lbnQoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCk7XG5cdCAgICAgIH1cblx0ICAg
IH1cblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBGbHVzaCBhbnkgZGlydHkgY2hhbmdlcyBp
biBhIGNvbXBvbmVudC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGlu
dGVybmFsSW5zdGFuY2Vcblx0ICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259
IHRyYW5zYWN0aW9uXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAgcGVyZm9ybVVwZGF0
ZUlmTmVjZXNzYXJ5OiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSwgdHJhbnNhY3Rpb24sIHVw
ZGF0ZUJhdGNoTnVtYmVyKSB7XG5cdCAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fdXBkYXRlQmF0
Y2hOdW1iZXIgIT09IHVwZGF0ZUJhdGNoTnVtYmVyKSB7XG5cdCAgICAgIC8vIFRoZSBjb21wb25l
bnQncyBlbnF1ZXVlZCBiYXRjaCBudW1iZXIgc2hvdWxkIGFsd2F5cyBiZSB0aGUgY3VycmVudFxu
XHQgICAgICAvLyBiYXRjaCBvciB0aGUgZm9sbG93aW5nIG9uZS5cblx0ICAgICAgIGZhbHNlID8g
d2FybmluZyhpbnRlcm5hbEluc3RhbmNlLl91cGRhdGVCYXRjaE51bWJlciA9PSBudWxsIHx8IGlu
dGVybmFsSW5zdGFuY2UuX3VwZGF0ZUJhdGNoTnVtYmVyID09PSB1cGRhdGVCYXRjaE51bWJlciAr
IDEsICdwZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnk6IFVuZXhwZWN0ZWQgYmF0Y2ggbnVtYmVyIChj
dXJyZW50ICVzLCAnICsgJ3BlbmRpbmcgJXMpJywgdXBkYXRlQmF0Y2hOdW1iZXIsIGludGVybmFs
SW5zdGFuY2UuX3VwZGF0ZUJhdGNoTnVtYmVyKSA6IHZvaWQgMDtcblx0ICAgICAgcmV0dXJuO1xu
XHQgICAgfVxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIGlmIChpbnRlcm5hbEluc3RhbmNl
Ll9kZWJ1Z0lEICE9PSAwKSB7XG5cdCAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdU
b29sLm9uQmVmb3JlVXBkYXRlQ29tcG9uZW50KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQsIGlu
dGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50KTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQg
ICAgaW50ZXJuYWxJbnN0YW5jZS5wZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkodHJhbnNhY3Rpb24p
O1xuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1
Z0lEICE9PSAwKSB7XG5cdCAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9u
VXBkYXRlQ29tcG9uZW50KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQpO1xuXHQgICAgICB9XG5c
dCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdFJlY29uY2ls
ZXI7XG5cbi8qKiovIH0sXG4vKiAxNyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRz
LCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5c
dCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9hc3Np
Z24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRcblx0dmFyIFJlYWN0QmFzZUNsYXNzZXMg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg5KTtcblx0dmFyIFJlYWN0Q2hpbGRyZW4gPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDIxNSk7XG5cdHZhciBSZWFjdERPTUZhY3RvcmllcyA9IF9fd2VicGFja19y
ZXF1aXJlX18oMjE2KTtcblx0dmFyIFJlYWN0RWxlbWVudCA9IF9fd2VicGFja19yZXF1aXJlX18o
MTgpO1xuXHR2YXIgUmVhY3RQcm9wVHlwZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxNyk7XG5c
dHZhciBSZWFjdFZlcnNpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxOCk7XG5cdFxuXHR2YXIg
Y3JlYXRlUmVhY3RDbGFzcyA9IF9fd2VicGFja19yZXF1aXJlX18oMjE5KTtcblx0dmFyIG9ubHlD
aGlsZCA9IF9fd2VicGFja19yZXF1aXJlX18oMjIzKTtcblx0XG5cdHZhciBjcmVhdGVFbGVtZW50
ID0gUmVhY3RFbGVtZW50LmNyZWF0ZUVsZW1lbnQ7XG5cdHZhciBjcmVhdGVGYWN0b3J5ID0gUmVh
Y3RFbGVtZW50LmNyZWF0ZUZhY3Rvcnk7XG5cdHZhciBjbG9uZUVsZW1lbnQgPSBSZWFjdEVsZW1l
bnQuY2xvbmVFbGVtZW50O1xuXHRcblx0aWYgKGZhbHNlKSB7XG5cdCAgdmFyIGxvd1ByaW9yaXR5
V2FybmluZyA9IHJlcXVpcmUoJy4vbG93UHJpb3JpdHlXYXJuaW5nJyk7XG5cdCAgdmFyIGNhbkRl
ZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9jYW5EZWZpbmVQcm9wZXJ0eScpO1xuXHQgIHZhciBS
ZWFjdEVsZW1lbnRWYWxpZGF0b3IgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudFZhbGlkYXRvcicp
O1xuXHQgIHZhciBkaWRXYXJuUHJvcFR5cGVzRGVwcmVjYXRlZCA9IGZhbHNlO1xuXHQgIGNyZWF0
ZUVsZW1lbnQgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY3JlYXRlRWxlbWVudDtcblx0ICBjcmVh
dGVGYWN0b3J5ID0gUmVhY3RFbGVtZW50VmFsaWRhdG9yLmNyZWF0ZUZhY3Rvcnk7XG5cdCAgY2xv
bmVFbGVtZW50ID0gUmVhY3RFbGVtZW50VmFsaWRhdG9yLmNsb25lRWxlbWVudDtcblx0fVxuXHRc
blx0dmFyIF9fc3ByZWFkID0gX2Fzc2lnbjtcblx0dmFyIGNyZWF0ZU1peGluID0gZnVuY3Rpb24g
KG1peGluKSB7XG5cdCAgcmV0dXJuIG1peGluO1xuXHR9O1xuXHRcblx0aWYgKGZhbHNlKSB7XG5c
dCAgdmFyIHdhcm5lZEZvclNwcmVhZCA9IGZhbHNlO1xuXHQgIHZhciB3YXJuZWRGb3JDcmVhdGVN
aXhpbiA9IGZhbHNlO1xuXHQgIF9fc3ByZWFkID0gZnVuY3Rpb24gKCkge1xuXHQgICAgbG93UHJp
b3JpdHlXYXJuaW5nKHdhcm5lZEZvclNwcmVhZCwgJ1JlYWN0Ll9fc3ByZWFkIGlzIGRlcHJlY2F0
ZWQgYW5kIHNob3VsZCBub3QgYmUgdXNlZC4gVXNlICcgKyAnT2JqZWN0LmFzc2lnbiBkaXJlY3Rs
eSBvciBhbm90aGVyIGhlbHBlciBmdW5jdGlvbiB3aXRoIHNpbWlsYXIgJyArICdzZW1hbnRpY3Mu
IFlvdSBtYXkgYmUgc2VlaW5nIHRoaXMgd2FybmluZyBkdWUgdG8geW91ciBjb21waWxlci4gJyAr
ICdTZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC1zcHJlYWQtZGVwcmVjYXRpb24gZm9yIG1vcmUgZGV0
YWlscy4nKTtcblx0ICAgIHdhcm5lZEZvclNwcmVhZCA9IHRydWU7XG5cdCAgICByZXR1cm4gX2Fz
c2lnbi5hcHBseShudWxsLCBhcmd1bWVudHMpO1xuXHQgIH07XG5cdFxuXHQgIGNyZWF0ZU1peGlu
ID0gZnVuY3Rpb24gKG1peGluKSB7XG5cdCAgICBsb3dQcmlvcml0eVdhcm5pbmcod2FybmVkRm9y
Q3JlYXRlTWl4aW4sICdSZWFjdC5jcmVhdGVNaXhpbiBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQg
bm90IGJlIHVzZWQuICcgKyAnSW4gUmVhY3QgdjE2LjAsIGl0IHdpbGwgYmUgcmVtb3ZlZC4gJyAr
ICdZb3UgY2FuIHVzZSB0aGlzIG1peGluIGRpcmVjdGx5IGluc3RlYWQuICcgKyAnU2VlIGh0dHBz
Oi8vZmIubWUvY3JlYXRlbWl4aW4td2FzLW5ldmVyLWltcGxlbWVudGVkIGZvciBtb3JlIGluZm8u
Jyk7XG5cdCAgICB3YXJuZWRGb3JDcmVhdGVNaXhpbiA9IHRydWU7XG5cdCAgICByZXR1cm4gbWl4
aW47XG5cdCAgfTtcblx0fVxuXHRcblx0dmFyIFJlYWN0ID0ge1xuXHQgIC8vIE1vZGVyblxuXHRc
blx0ICBDaGlsZHJlbjoge1xuXHQgICAgbWFwOiBSZWFjdENoaWxkcmVuLm1hcCxcblx0ICAgIGZv
ckVhY2g6IFJlYWN0Q2hpbGRyZW4uZm9yRWFjaCxcblx0ICAgIGNvdW50OiBSZWFjdENoaWxkcmVu
LmNvdW50LFxuXHQgICAgdG9BcnJheTogUmVhY3RDaGlsZHJlbi50b0FycmF5LFxuXHQgICAgb25s
eTogb25seUNoaWxkXG5cdCAgfSxcblx0XG5cdCAgQ29tcG9uZW50OiBSZWFjdEJhc2VDbGFzc2Vz
LkNvbXBvbmVudCxcblx0ICBQdXJlQ29tcG9uZW50OiBSZWFjdEJhc2VDbGFzc2VzLlB1cmVDb21w
b25lbnQsXG5cdFxuXHQgIGNyZWF0ZUVsZW1lbnQ6IGNyZWF0ZUVsZW1lbnQsXG5cdCAgY2xvbmVF
bGVtZW50OiBjbG9uZUVsZW1lbnQsXG5cdCAgaXNWYWxpZEVsZW1lbnQ6IFJlYWN0RWxlbWVudC5p
c1ZhbGlkRWxlbWVudCxcblx0XG5cdCAgLy8gQ2xhc3NpY1xuXHRcblx0ICBQcm9wVHlwZXM6IFJl
YWN0UHJvcFR5cGVzLFxuXHQgIGNyZWF0ZUNsYXNzOiBjcmVhdGVSZWFjdENsYXNzLFxuXHQgIGNy
ZWF0ZUZhY3Rvcnk6IGNyZWF0ZUZhY3RvcnksXG5cdCAgY3JlYXRlTWl4aW46IGNyZWF0ZU1peGlu
LFxuXHRcblx0ICAvLyBUaGlzIGxvb2tzIERPTSBzcGVjaWZpYyBidXQgdGhlc2UgYXJlIGFjdHVh
bGx5IGlzb21vcnBoaWMgaGVscGVyc1xuXHQgIC8vIHNpbmNlIHRoZXkgYXJlIGp1c3QgZ2VuZXJh
dGluZyBET00gc3RyaW5ncy5cblx0ICBET006IFJlYWN0RE9NRmFjdG9yaWVzLFxuXHRcblx0ICB2
ZXJzaW9uOiBSZWFjdFZlcnNpb24sXG5cdFxuXHQgIC8vIERlcHJlY2F0ZWQgaG9vayBmb3IgSlNY
IHNwcmVhZCwgZG9uJ3QgdXNlIHRoaXMgZm9yIGFueXRoaW5nLlxuXHQgIF9fc3ByZWFkOiBfX3Nw
cmVhZFxuXHR9O1xuXHRcblx0aWYgKGZhbHNlKSB7XG5cdCAgdmFyIHdhcm5lZEZvckNyZWF0ZUNs
YXNzID0gZmFsc2U7XG5cdCAgaWYgKGNhbkRlZmluZVByb3BlcnR5KSB7XG5cdCAgICBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoUmVhY3QsICdQcm9wVHlwZXMnLCB7XG5cdCAgICAgIGdldDogZnVuY3Rp
b24gKCkge1xuXHQgICAgICAgIGxvd1ByaW9yaXR5V2FybmluZyhkaWRXYXJuUHJvcFR5cGVzRGVw
cmVjYXRlZCwgJ0FjY2Vzc2luZyBQcm9wVHlwZXMgdmlhIHRoZSBtYWluIFJlYWN0IHBhY2thZ2Ug
aXMgZGVwcmVjYXRlZCwnICsgJyBhbmQgd2lsbCBiZSByZW1vdmVkIGluICBSZWFjdCB2MTYuMC4n
ICsgJyBVc2UgdGhlIGxhdGVzdCBhdmFpbGFibGUgdjE1LiogcHJvcC10eXBlcyBwYWNrYWdlIGZy
b20gbnBtIGluc3RlYWQuJyArICcgRm9yIGluZm8gb24gdXNhZ2UsIGNvbXBhdGliaWxpdHksIG1p
Z3JhdGlvbiBhbmQgbW9yZSwgc2VlICcgKyAnaHR0cHM6Ly9mYi5tZS9wcm9wLXR5cGVzLWRvY3Mn
KTtcblx0ICAgICAgICBkaWRXYXJuUHJvcFR5cGVzRGVwcmVjYXRlZCA9IHRydWU7XG5cdCAgICAg
ICAgcmV0dXJuIFJlYWN0UHJvcFR5cGVzO1xuXHQgICAgICB9XG5cdCAgICB9KTtcblx0XG5cdCAg
ICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVhY3QsICdjcmVhdGVDbGFzcycsIHtcblx0ICAgICAg
Z2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgbG93UHJpb3JpdHlXYXJuaW5nKHdhcm5lZEZv
ckNyZWF0ZUNsYXNzLCAnQWNjZXNzaW5nIGNyZWF0ZUNsYXNzIHZpYSB0aGUgbWFpbiBSZWFjdCBw
YWNrYWdlIGlzIGRlcHJlY2F0ZWQsJyArICcgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBSZWFjdCB2
MTYuMC4nICsgXCIgVXNlIGEgcGxhaW4gSmF2YVNjcmlwdCBjbGFzcyBpbnN0ZWFkLiBJZiB5b3Un
cmUgbm90IHlldCBcIiArICdyZWFkeSB0byBtaWdyYXRlLCBjcmVhdGUtcmVhY3QtY2xhc3MgdjE1
LiogaXMgYXZhaWxhYmxlICcgKyAnb24gbnBtIGFzIGEgdGVtcG9yYXJ5LCBkcm9wLWluIHJlcGxh
Y2VtZW50LiAnICsgJ0ZvciBtb3JlIGluZm8gc2VlIGh0dHBzOi8vZmIubWUvcmVhY3QtY3JlYXRl
LWNsYXNzJyk7XG5cdCAgICAgICAgd2FybmVkRm9yQ3JlYXRlQ2xhc3MgPSB0cnVlO1xuXHQgICAg
ICAgIHJldHVybiBjcmVhdGVSZWFjdENsYXNzO1xuXHQgICAgICB9XG5cdCAgICB9KTtcblx0ICB9
XG5cdFxuXHQgIC8vIFJlYWN0LkRPTSBmYWN0b3JpZXMgYXJlIGRlcHJlY2F0ZWQuIFdyYXAgdGhl
c2UgbWV0aG9kcyBzbyB0aGF0XG5cdCAgLy8gaW52b2NhdGlvbnMgb2YgdGhlIFJlYWN0LkRPTSBu
YW1lc3BhY2UgYW5kIGFsZXJ0IHVzZXJzIHRvIHN3aXRjaFxuXHQgIC8vIHRvIHRoZSBgcmVhY3Qt
ZG9tLWZhY3Rvcmllc2AgcGFja2FnZS5cblx0ICBSZWFjdC5ET00gPSB7fTtcblx0ICB2YXIgd2Fy
bmVkRm9yRmFjdG9yaWVzID0gZmFsc2U7XG5cdCAgT2JqZWN0LmtleXMoUmVhY3RET01GYWN0b3Jp
ZXMpLmZvckVhY2goZnVuY3Rpb24gKGZhY3RvcnkpIHtcblx0ICAgIFJlYWN0LkRPTVtmYWN0b3J5
XSA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgaWYgKCF3YXJuZWRGb3JGYWN0b3JpZXMpIHtcblx0
ICAgICAgICBsb3dQcmlvcml0eVdhcm5pbmcoZmFsc2UsICdBY2Nlc3NpbmcgZmFjdG9yaWVzIGxp
a2UgUmVhY3QuRE9NLiVzIGhhcyBiZWVuIGRlcHJlY2F0ZWQgJyArICdhbmQgd2lsbCBiZSByZW1v
dmVkIGluIHYxNi4wKy4gVXNlIHRoZSAnICsgJ3JlYWN0LWRvbS1mYWN0b3JpZXMgcGFja2FnZSBp
bnN0ZWFkLiAnICsgJyBWZXJzaW9uIDEuMCBwcm92aWRlcyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQu
JyArICcgRm9yIG1vcmUgaW5mbywgc2VlIGh0dHBzOi8vZmIubWUvcmVhY3QtZG9tLWZhY3Rvcmll
cycsIGZhY3RvcnkpO1xuXHQgICAgICAgIHdhcm5lZEZvckZhY3RvcmllcyA9IHRydWU7XG5cdCAg
ICAgIH1cblx0ICAgICAgcmV0dXJuIFJlYWN0RE9NRmFjdG9yaWVzW2ZhY3RvcnldLmFwcGx5KFJl
YWN0RE9NRmFjdG9yaWVzLCBhcmd1bWVudHMpO1xuXHQgICAgfTtcblx0ICB9KTtcblx0fVxuXHRc
blx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdDtcblxuLyoqKi8gfSxcbi8qIDE4ICovXG4vKioqLyBm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipc
blx0ICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJp
Z2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0
cmljdCc7XG5cdFxuXHR2YXIgX2Fzc2lnbiA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdFxu
XHR2YXIgUmVhY3RDdXJyZW50T3duZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKTtcblx0XG5c
dHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0dmFyIGNhbkRlZmluZVBy
b3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5Myk7XG5cdHZhciBoYXNPd25Qcm9wZXJ0eSA9
IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG5cdFxuXHR2YXIgUkVBQ1RfRUxFTUVO
VF9UWVBFID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5MSk7XG5cdFxuXHR2YXIgUkVTRVJWRURfUFJP
UFMgPSB7XG5cdCAga2V5OiB0cnVlLFxuXHQgIHJlZjogdHJ1ZSxcblx0ICBfX3NlbGY6IHRydWUs
XG5cdCAgX19zb3VyY2U6IHRydWVcblx0fTtcblx0XG5cdHZhciBzcGVjaWFsUHJvcEtleVdhcm5p
bmdTaG93biwgc3BlY2lhbFByb3BSZWZXYXJuaW5nU2hvd247XG5cdFxuXHRmdW5jdGlvbiBoYXNW
YWxpZFJlZihjb25maWcpIHtcblx0ICBpZiAoZmFsc2UpIHtcblx0ICAgIGlmIChoYXNPd25Qcm9w
ZXJ0eS5jYWxsKGNvbmZpZywgJ3JlZicpKSB7XG5cdCAgICAgIHZhciBnZXR0ZXIgPSBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbmZpZywgJ3JlZicpLmdldDtcblx0ICAgICAgaWYg
KGdldHRlciAmJiBnZXR0ZXIuaXNSZWFjdFdhcm5pbmcpIHtcblx0ICAgICAgICByZXR1cm4gZmFs
c2U7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cdCAgcmV0dXJuIGNvbmZpZy5yZWYgIT09
IHVuZGVmaW5lZDtcblx0fVxuXHRcblx0ZnVuY3Rpb24gaGFzVmFsaWRLZXkoY29uZmlnKSB7XG5c
dCAgaWYgKGZhbHNlKSB7XG5cdCAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChjb25maWcsICdr
ZXknKSkge1xuXHQgICAgICB2YXIgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihjb25maWcsICdrZXknKS5nZXQ7XG5cdCAgICAgIGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlz
UmVhY3RXYXJuaW5nKSB7XG5cdCAgICAgICAgcmV0dXJuIGZhbHNlO1xuXHQgICAgICB9XG5cdCAg
ICB9XG5cdCAgfVxuXHQgIHJldHVybiBjb25maWcua2V5ICE9PSB1bmRlZmluZWQ7XG5cdH1cblx0
XG5cdGZ1bmN0aW9uIGRlZmluZUtleVByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFt
ZSkge1xuXHQgIHZhciB3YXJuQWJvdXRBY2Nlc3NpbmdLZXkgPSBmdW5jdGlvbiAoKSB7XG5cdCAg
ICBpZiAoIXNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duKSB7XG5cdCAgICAgIHNwZWNpYWxQcm9w
S2V5V2FybmluZ1Nob3duID0gdHJ1ZTtcblx0ICAgICAgIGZhbHNlID8gd2FybmluZyhmYWxzZSwg
JyVzOiBga2V5YCBpcyBub3QgYSBwcm9wLiBUcnlpbmcgdG8gYWNjZXNzIGl0IHdpbGwgcmVzdWx0
ICcgKyAnaW4gYHVuZGVmaW5lZGAgYmVpbmcgcmV0dXJuZWQuIElmIHlvdSBuZWVkIHRvIGFjY2Vz
cyB0aGUgc2FtZSAnICsgJ3ZhbHVlIHdpdGhpbiB0aGUgY2hpbGQgY29tcG9uZW50LCB5b3Ugc2hv
dWxkIHBhc3MgaXQgYXMgYSBkaWZmZXJlbnQgJyArICdwcm9wLiAoaHR0cHM6Ly9mYi5tZS9yZWFj
dC1zcGVjaWFsLXByb3BzKScsIGRpc3BsYXlOYW1lKSA6IHZvaWQgMDtcblx0ICAgIH1cblx0ICB9
O1xuXHQgIHdhcm5BYm91dEFjY2Vzc2luZ0tleS5pc1JlYWN0V2FybmluZyA9IHRydWU7XG5cdCAg
T2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3BzLCAna2V5Jywge1xuXHQgICAgZ2V0OiB3YXJuQWJv
dXRBY2Nlc3NpbmdLZXksXG5cdCAgICBjb25maWd1cmFibGU6IHRydWVcblx0ICB9KTtcblx0fVxu
XHRcblx0ZnVuY3Rpb24gZGVmaW5lUmVmUHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMsIGRpc3BsYXlO
YW1lKSB7XG5cdCAgdmFyIHdhcm5BYm91dEFjY2Vzc2luZ1JlZiA9IGZ1bmN0aW9uICgpIHtcblx0
ICAgIGlmICghc3BlY2lhbFByb3BSZWZXYXJuaW5nU2hvd24pIHtcblx0ICAgICAgc3BlY2lhbFBy
b3BSZWZXYXJuaW5nU2hvd24gPSB0cnVlO1xuXHQgICAgICAgZmFsc2UgPyB3YXJuaW5nKGZhbHNl
LCAnJXM6IGByZWZgIGlzIG5vdCBhIHByb3AuIFRyeWluZyB0byBhY2Nlc3MgaXQgd2lsbCByZXN1
bHQgJyArICdpbiBgdW5kZWZpbmVkYCBiZWluZyByZXR1cm5lZC4gSWYgeW91IG5lZWQgdG8gYWNj
ZXNzIHRoZSBzYW1lICcgKyAndmFsdWUgd2l0aGluIHRoZSBjaGlsZCBjb21wb25lbnQsIHlvdSBz
aG91bGQgcGFzcyBpdCBhcyBhIGRpZmZlcmVudCAnICsgJ3Byb3AuIChodHRwczovL2ZiLm1lL3Jl
YWN0LXNwZWNpYWwtcHJvcHMpJywgZGlzcGxheU5hbWUpIDogdm9pZCAwO1xuXHQgICAgfVxuXHQg
IH07XG5cdCAgd2FybkFib3V0QWNjZXNzaW5nUmVmLmlzUmVhY3RXYXJuaW5nID0gdHJ1ZTtcblx0
ICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvcHMsICdyZWYnLCB7XG5cdCAgICBnZXQ6IHdhcm5B
Ym91dEFjY2Vzc2luZ1JlZixcblx0ICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuXHQgIH0pO1xuXHR9
XG5cdFxuXHQvKipcblx0ICogRmFjdG9yeSBtZXRob2QgdG8gY3JlYXRlIGEgbmV3IFJlYWN0IGVs
ZW1lbnQuIFRoaXMgbm8gbG9uZ2VyIGFkaGVyZXMgdG9cblx0ICogdGhlIGNsYXNzIHBhdHRlcm4s
IHNvIGRvIG5vdCB1c2UgbmV3IHRvIGNhbGwgaXQuIEFsc28sIG5vIGluc3RhbmNlb2YgY2hlY2tc
blx0ICogd2lsbCB3b3JrLiBJbnN0ZWFkIHRlc3QgJCR0eXBlb2YgZmllbGQgYWdhaW5zdCBTeW1i
b2wuZm9yKCdyZWFjdC5lbGVtZW50JykgdG8gY2hlY2tcblx0ICogaWYgc29tZXRoaW5nIGlzIGEg
UmVhY3QgRWxlbWVudC5cblx0ICpcblx0ICogQHBhcmFtIHsqfSB0eXBlXG5cdCAqIEBwYXJhbSB7
Kn0ga2V5XG5cdCAqIEBwYXJhbSB7c3RyaW5nfG9iamVjdH0gcmVmXG5cdCAqIEBwYXJhbSB7Kn0g
c2VsZiBBICp0ZW1wb3JhcnkqIGhlbHBlciB0byBkZXRlY3QgcGxhY2VzIHdoZXJlIGB0aGlzYCBp
c1xuXHQgKiBkaWZmZXJlbnQgZnJvbSB0aGUgYG93bmVyYCB3aGVuIFJlYWN0LmNyZWF0ZUVsZW1l
bnQgaXMgY2FsbGVkLCBzbyB0aGF0IHdlXG5cdCAqIGNhbiB3YXJuLiBXZSB3YW50IHRvIGdldCBy
aWQgb2Ygb3duZXIgYW5kIHJlcGxhY2Ugc3RyaW5nIGByZWZgcyB3aXRoIGFycm93XG5cdCAqIGZ1
bmN0aW9ucywgYW5kIGFzIGxvbmcgYXMgYHRoaXNgIGFuZCBvd25lciBhcmUgdGhlIHNhbWUsIHRo
ZXJlIHdpbGwgYmUgbm9cblx0ICogY2hhbmdlIGluIGJlaGF2aW9yLlxuXHQgKiBAcGFyYW0geyp9
IHNvdXJjZSBBbiBhbm5vdGF0aW9uIG9iamVjdCAoYWRkZWQgYnkgYSB0cmFuc3BpbGVyIG9yIG90
aGVyd2lzZSlcblx0ICogaW5kaWNhdGluZyBmaWxlbmFtZSwgbGluZSBudW1iZXIsIGFuZC9vciBv
dGhlciBpbmZvcm1hdGlvbi5cblx0ICogQHBhcmFtIHsqfSBvd25lclxuXHQgKiBAcGFyYW0geyp9
IHByb3BzXG5cdCAqIEBpbnRlcm5hbFxuXHQgKi9cblx0dmFyIFJlYWN0RWxlbWVudCA9IGZ1bmN0
aW9uICh0eXBlLCBrZXksIHJlZiwgc2VsZiwgc291cmNlLCBvd25lciwgcHJvcHMpIHtcblx0ICB2
YXIgZWxlbWVudCA9IHtcblx0ICAgIC8vIFRoaXMgdGFnIGFsbG93IHVzIHRvIHVuaXF1ZWx5IGlk
ZW50aWZ5IHRoaXMgYXMgYSBSZWFjdCBFbGVtZW50XG5cdCAgICAkJHR5cGVvZjogUkVBQ1RfRUxF
TUVOVF9UWVBFLFxuXHRcblx0ICAgIC8vIEJ1aWx0LWluIHByb3BlcnRpZXMgdGhhdCBiZWxvbmcg
b24gdGhlIGVsZW1lbnRcblx0ICAgIHR5cGU6IHR5cGUsXG5cdCAgICBrZXk6IGtleSxcblx0ICAg
IHJlZjogcmVmLFxuXHQgICAgcHJvcHM6IHByb3BzLFxuXHRcblx0ICAgIC8vIFJlY29yZCB0aGUg
Y29tcG9uZW50IHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGlzIGVsZW1lbnQuXG5cdCAgICBf
b3duZXI6IG93bmVyXG5cdCAgfTtcblx0XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICAvLyBUaGUg
dmFsaWRhdGlvbiBmbGFnIGlzIGN1cnJlbnRseSBtdXRhdGl2ZS4gV2UgcHV0IGl0IG9uXG5cdCAg
ICAvLyBhbiBleHRlcm5hbCBiYWNraW5nIHN0b3JlIHNvIHRoYXQgd2UgY2FuIGZyZWV6ZSB0aGUg
d2hvbGUgb2JqZWN0LlxuXHQgICAgLy8gVGhpcyBjYW4gYmUgcmVwbGFjZWQgd2l0aCBhIFdlYWtN
YXAgb25jZSB0aGV5IGFyZSBpbXBsZW1lbnRlZCBpblxuXHQgICAgLy8gY29tbW9ubHkgdXNlZCBk
ZXZlbG9wbWVudCBlbnZpcm9ubWVudHMuXG5cdCAgICBlbGVtZW50Ll9zdG9yZSA9IHt9O1xuXHRc
blx0ICAgIC8vIFRvIG1ha2UgY29tcGFyaW5nIFJlYWN0RWxlbWVudHMgZWFzaWVyIGZvciB0ZXN0
aW5nIHB1cnBvc2VzLCB3ZSBtYWtlXG5cdCAgICAvLyB0aGUgdmFsaWRhdGlvbiBmbGFnIG5vbi1l
bnVtZXJhYmxlICh3aGVyZSBwb3NzaWJsZSwgd2hpY2ggc2hvdWxkXG5cdCAgICAvLyBpbmNsdWRl
IGV2ZXJ5IGVudmlyb25tZW50IHdlIHJ1biB0ZXN0cyBpbiksIHNvIHRoZSB0ZXN0IGZyYW1ld29y
a1xuXHQgICAgLy8gaWdub3JlcyBpdC5cblx0ICAgIGlmIChjYW5EZWZpbmVQcm9wZXJ0eSkge1xu
XHQgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudC5fc3RvcmUsICd2YWxpZGF0ZWQn
LCB7XG5cdCAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcblx0ICAgICAgICBlbnVtZXJhYmxl
OiBmYWxzZSxcblx0ICAgICAgICB3cml0YWJsZTogdHJ1ZSxcblx0ICAgICAgICB2YWx1ZTogZmFs
c2Vcblx0ICAgICAgfSk7XG5cdCAgICAgIC8vIHNlbGYgYW5kIHNvdXJjZSBhcmUgREVWIG9ubHkg
cHJvcGVydGllcy5cblx0ICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVsZW1lbnQsICdfc2Vs
ZicsIHtcblx0ICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuXHQgICAgICAgIGVudW1lcmFi
bGU6IGZhbHNlLFxuXHQgICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcblx0ICAgICAgICB2YWx1ZTog
c2VsZlxuXHQgICAgICB9KTtcblx0ICAgICAgLy8gVHdvIGVsZW1lbnRzIGNyZWF0ZWQgaW4gdHdv
IGRpZmZlcmVudCBwbGFjZXMgc2hvdWxkIGJlIGNvbnNpZGVyZWRcblx0ICAgICAgLy8gZXF1YWwg
Zm9yIHRlc3RpbmcgcHVycG9zZXMgYW5kIHRoZXJlZm9yZSB3ZSBoaWRlIGl0IGZyb20gZW51bWVy
YXRpb24uXG5cdCAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LCAnX3NvdXJjZScs
IHtcblx0ICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuXHQgICAgICAgIGVudW1lcmFibGU6
IGZhbHNlLFxuXHQgICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcblx0ICAgICAgICB2YWx1ZTogc291
cmNlXG5cdCAgICAgIH0pO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgZWxlbWVudC5fc3RvcmUu
dmFsaWRhdGVkID0gZmFsc2U7XG5cdCAgICAgIGVsZW1lbnQuX3NlbGYgPSBzZWxmO1xuXHQgICAg
ICBlbGVtZW50Ll9zb3VyY2UgPSBzb3VyY2U7XG5cdCAgICB9XG5cdCAgICBpZiAoT2JqZWN0LmZy
ZWV6ZSkge1xuXHQgICAgICBPYmplY3QuZnJlZXplKGVsZW1lbnQucHJvcHMpO1xuXHQgICAgICBP
YmplY3QuZnJlZXplKGVsZW1lbnQpO1xuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAgcmV0dXJuIGVs
ZW1lbnQ7XG5cdH07XG5cdFxuXHQvKipcblx0ICogQ3JlYXRlIGFuZCByZXR1cm4gYSBuZXcgUmVh
Y3RFbGVtZW50IG9mIHRoZSBnaXZlbiB0eXBlLlxuXHQgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5n
aXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY3JlYXRlZWxlbWVu
dFxuXHQgKi9cblx0UmVhY3RFbGVtZW50LmNyZWF0ZUVsZW1lbnQgPSBmdW5jdGlvbiAodHlwZSwg
Y29uZmlnLCBjaGlsZHJlbikge1xuXHQgIHZhciBwcm9wTmFtZTtcblx0XG5cdCAgLy8gUmVzZXJ2
ZWQgbmFtZXMgYXJlIGV4dHJhY3RlZFxuXHQgIHZhciBwcm9wcyA9IHt9O1xuXHRcblx0ICB2YXIg
a2V5ID0gbnVsbDtcblx0ICB2YXIgcmVmID0gbnVsbDtcblx0ICB2YXIgc2VsZiA9IG51bGw7XG5c
dCAgdmFyIHNvdXJjZSA9IG51bGw7XG5cdFxuXHQgIGlmIChjb25maWcgIT0gbnVsbCkge1xuXHQg
ICAgaWYgKGhhc1ZhbGlkUmVmKGNvbmZpZykpIHtcblx0ICAgICAgcmVmID0gY29uZmlnLnJlZjtc
blx0ICAgIH1cblx0ICAgIGlmIChoYXNWYWxpZEtleShjb25maWcpKSB7XG5cdCAgICAgIGtleSA9
ICcnICsgY29uZmlnLmtleTtcblx0ICAgIH1cblx0XG5cdCAgICBzZWxmID0gY29uZmlnLl9fc2Vs
ZiA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGNvbmZpZy5fX3NlbGY7XG5cdCAgICBzb3VyY2UgPSBj
b25maWcuX19zb3VyY2UgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBjb25maWcuX19zb3VyY2U7XG5c
dCAgICAvLyBSZW1haW5pbmcgcHJvcGVydGllcyBhcmUgYWRkZWQgdG8gYSBuZXcgcHJvcHMgb2Jq
ZWN0XG5cdCAgICBmb3IgKHByb3BOYW1lIGluIGNvbmZpZykge1xuXHQgICAgICBpZiAoaGFzT3du
UHJvcGVydHkuY2FsbChjb25maWcsIHByb3BOYW1lKSAmJiAhUkVTRVJWRURfUFJPUFMuaGFzT3du
UHJvcGVydHkocHJvcE5hbWUpKSB7XG5cdCAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gY29uZmln
W3Byb3BOYW1lXTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAgLy8gQ2hpbGRy
ZW4gY2FuIGJlIG1vcmUgdGhhbiBvbmUgYXJndW1lbnQsIGFuZCB0aG9zZSBhcmUgdHJhbnNmZXJy
ZWQgb250b1xuXHQgIC8vIHRoZSBuZXdseSBhbGxvY2F0ZWQgcHJvcHMgb2JqZWN0LlxuXHQgIHZh
ciBjaGlsZHJlbkxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGggLSAyO1xuXHQgIGlmIChjaGlsZHJl
bkxlbmd0aCA9PT0gMSkge1xuXHQgICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcblx0ICB9
IGVsc2UgaWYgKGNoaWxkcmVuTGVuZ3RoID4gMSkge1xuXHQgICAgdmFyIGNoaWxkQXJyYXkgPSBB
cnJheShjaGlsZHJlbkxlbmd0aCk7XG5cdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVu
TGVuZ3RoOyBpKyspIHtcblx0ICAgICAgY2hpbGRBcnJheVtpXSA9IGFyZ3VtZW50c1tpICsgMl07
XG5cdCAgICB9XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgaWYgKE9iamVjdC5mcmVlemUp
IHtcblx0ICAgICAgICBPYmplY3QuZnJlZXplKGNoaWxkQXJyYXkpO1xuXHQgICAgICB9XG5cdCAg
ICB9XG5cdCAgICBwcm9wcy5jaGlsZHJlbiA9IGNoaWxkQXJyYXk7XG5cdCAgfVxuXHRcblx0ICAv
LyBSZXNvbHZlIGRlZmF1bHQgcHJvcHNcblx0ICBpZiAodHlwZSAmJiB0eXBlLmRlZmF1bHRQcm9w
cykge1xuXHQgICAgdmFyIGRlZmF1bHRQcm9wcyA9IHR5cGUuZGVmYXVsdFByb3BzO1xuXHQgICAg
Zm9yIChwcm9wTmFtZSBpbiBkZWZhdWx0UHJvcHMpIHtcblx0ICAgICAgaWYgKHByb3BzW3Byb3BO
YW1lXSA9PT0gdW5kZWZpbmVkKSB7XG5cdCAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gZGVmYXVs
dFByb3BzW3Byb3BOYW1lXTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0ICBpZiAoZmFs
c2UpIHtcblx0ICAgIGlmIChrZXkgfHwgcmVmKSB7XG5cdCAgICAgIGlmICh0eXBlb2YgcHJvcHMu
JCR0eXBlb2YgPT09ICd1bmRlZmluZWQnIHx8IHByb3BzLiQkdHlwZW9mICE9PSBSRUFDVF9FTEVN
RU5UX1RZUEUpIHtcblx0ICAgICAgICB2YXIgZGlzcGxheU5hbWUgPSB0eXBlb2YgdHlwZSA9PT0g
J2Z1bmN0aW9uJyA/IHR5cGUuZGlzcGxheU5hbWUgfHwgdHlwZS5uYW1lIHx8ICdVbmtub3duJyA6
IHR5cGU7XG5cdCAgICAgICAgaWYgKGtleSkge1xuXHQgICAgICAgICAgZGVmaW5lS2V5UHJvcFdh
cm5pbmdHZXR0ZXIocHJvcHMsIGRpc3BsYXlOYW1lKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAg
aWYgKHJlZikge1xuXHQgICAgICAgICAgZGVmaW5lUmVmUHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMs
IGRpc3BsYXlOYW1lKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5c
dCAgcmV0dXJuIFJlYWN0RWxlbWVudCh0eXBlLCBrZXksIHJlZiwgc2VsZiwgc291cmNlLCBSZWFj
dEN1cnJlbnRPd25lci5jdXJyZW50LCBwcm9wcyk7XG5cdH07XG5cdFxuXHQvKipcblx0ICogUmV0
dXJuIGEgZnVuY3Rpb24gdGhhdCBwcm9kdWNlcyBSZWFjdEVsZW1lbnRzIG9mIGEgZ2l2ZW4gdHlw
ZS5cblx0ICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxl
dmVsLWFwaS5odG1sI3JlYWN0LmNyZWF0ZWZhY3Rvcnlcblx0ICovXG5cdFJlYWN0RWxlbWVudC5j
cmVhdGVGYWN0b3J5ID0gZnVuY3Rpb24gKHR5cGUpIHtcblx0ICB2YXIgZmFjdG9yeSA9IFJlYWN0
RWxlbWVudC5jcmVhdGVFbGVtZW50LmJpbmQobnVsbCwgdHlwZSk7XG5cdCAgLy8gRXhwb3NlIHRo
ZSB0eXBlIG9uIHRoZSBmYWN0b3J5IGFuZCB0aGUgcHJvdG90eXBlIHNvIHRoYXQgaXQgY2FuIGJl
XG5cdCAgLy8gZWFzaWx5IGFjY2Vzc2VkIG9uIGVsZW1lbnRzLiBFLmcuIGA8Rm9vIC8+LnR5cGUg
PT09IEZvb2AuXG5cdCAgLy8gVGhpcyBzaG91bGQgbm90IGJlIG5hbWVkIGBjb25zdHJ1Y3RvcmAg
c2luY2UgdGhpcyBtYXkgbm90IGJlIHRoZSBmdW5jdGlvblxuXHQgIC8vIHRoYXQgY3JlYXRlZCB0
aGUgZWxlbWVudCwgYW5kIGl0IG1heSBub3QgZXZlbiBiZSBhIGNvbnN0cnVjdG9yLlxuXHQgIC8v
IExlZ2FjeSBob29rIFRPRE86IFdhcm4gaWYgdGhpcyBpcyBhY2Nlc3NlZFxuXHQgIGZhY3Rvcnku
dHlwZSA9IHR5cGU7XG5cdCAgcmV0dXJuIGZhY3Rvcnk7XG5cdH07XG5cdFxuXHRSZWFjdEVsZW1l
bnQuY2xvbmVBbmRSZXBsYWNlS2V5ID0gZnVuY3Rpb24gKG9sZEVsZW1lbnQsIG5ld0tleSkge1xu
XHQgIHZhciBuZXdFbGVtZW50ID0gUmVhY3RFbGVtZW50KG9sZEVsZW1lbnQudHlwZSwgbmV3S2V5
LCBvbGRFbGVtZW50LnJlZiwgb2xkRWxlbWVudC5fc2VsZiwgb2xkRWxlbWVudC5fc291cmNlLCBv
bGRFbGVtZW50Ll9vd25lciwgb2xkRWxlbWVudC5wcm9wcyk7XG5cdFxuXHQgIHJldHVybiBuZXdF
bGVtZW50O1xuXHR9O1xuXHRcblx0LyoqXG5cdCAqIENsb25lIGFuZCByZXR1cm4gYSBuZXcgUmVh
Y3RFbGVtZW50IHVzaW5nIGVsZW1lbnQgYXMgdGhlIHN0YXJ0aW5nIHBvaW50LlxuXHQgKiBTZWUg
aHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwj
cmVhY3QuY2xvbmVlbGVtZW50XG5cdCAqL1xuXHRSZWFjdEVsZW1lbnQuY2xvbmVFbGVtZW50ID0g
ZnVuY3Rpb24gKGVsZW1lbnQsIGNvbmZpZywgY2hpbGRyZW4pIHtcblx0ICB2YXIgcHJvcE5hbWU7
XG5cdFxuXHQgIC8vIE9yaWdpbmFsIHByb3BzIGFyZSBjb3BpZWRcblx0ICB2YXIgcHJvcHMgPSBf
YXNzaWduKHt9LCBlbGVtZW50LnByb3BzKTtcblx0XG5cdCAgLy8gUmVzZXJ2ZWQgbmFtZXMgYXJl
IGV4dHJhY3RlZFxuXHQgIHZhciBrZXkgPSBlbGVtZW50LmtleTtcblx0ICB2YXIgcmVmID0gZWxl
bWVudC5yZWY7XG5cdCAgLy8gU2VsZiBpcyBwcmVzZXJ2ZWQgc2luY2UgdGhlIG93bmVyIGlzIHBy
ZXNlcnZlZC5cblx0ICB2YXIgc2VsZiA9IGVsZW1lbnQuX3NlbGY7XG5cdCAgLy8gU291cmNlIGlz
IHByZXNlcnZlZCBzaW5jZSBjbG9uZUVsZW1lbnQgaXMgdW5saWtlbHkgdG8gYmUgdGFyZ2V0ZWQg
YnkgYVxuXHQgIC8vIHRyYW5zcGlsZXIsIGFuZCB0aGUgb3JpZ2luYWwgc291cmNlIGlzIHByb2Jh
Ymx5IGEgYmV0dGVyIGluZGljYXRvciBvZiB0aGVcblx0ICAvLyB0cnVlIG93bmVyLlxuXHQgIHZh
ciBzb3VyY2UgPSBlbGVtZW50Ll9zb3VyY2U7XG5cdFxuXHQgIC8vIE93bmVyIHdpbGwgYmUgcHJl
c2VydmVkLCB1bmxlc3MgcmVmIGlzIG92ZXJyaWRkZW5cblx0ICB2YXIgb3duZXIgPSBlbGVtZW50
Ll9vd25lcjtcblx0XG5cdCAgaWYgKGNvbmZpZyAhPSBudWxsKSB7XG5cdCAgICBpZiAoaGFzVmFs
aWRSZWYoY29uZmlnKSkge1xuXHQgICAgICAvLyBTaWxlbnRseSBzdGVhbCB0aGUgcmVmIGZyb20g
dGhlIHBhcmVudC5cblx0ICAgICAgcmVmID0gY29uZmlnLnJlZjtcblx0ICAgICAgb3duZXIgPSBS
ZWFjdEN1cnJlbnRPd25lci5jdXJyZW50O1xuXHQgICAgfVxuXHQgICAgaWYgKGhhc1ZhbGlkS2V5
KGNvbmZpZykpIHtcblx0ICAgICAga2V5ID0gJycgKyBjb25maWcua2V5O1xuXHQgICAgfVxuXHRc
blx0ICAgIC8vIFJlbWFpbmluZyBwcm9wZXJ0aWVzIG92ZXJyaWRlIGV4aXN0aW5nIHByb3BzXG5c
dCAgICB2YXIgZGVmYXVsdFByb3BzO1xuXHQgICAgaWYgKGVsZW1lbnQudHlwZSAmJiBlbGVtZW50
LnR5cGUuZGVmYXVsdFByb3BzKSB7XG5cdCAgICAgIGRlZmF1bHRQcm9wcyA9IGVsZW1lbnQudHlw
ZS5kZWZhdWx0UHJvcHM7XG5cdCAgICB9XG5cdCAgICBmb3IgKHByb3BOYW1lIGluIGNvbmZpZykg
e1xuXHQgICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChjb25maWcsIHByb3BOYW1lKSAmJiAh
UkVTRVJWRURfUFJPUFMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG5cdCAgICAgICAgaWYg
KGNvbmZpZ1twcm9wTmFtZV0gPT09IHVuZGVmaW5lZCAmJiBkZWZhdWx0UHJvcHMgIT09IHVuZGVm
aW5lZCkge1xuXHQgICAgICAgICAgLy8gUmVzb2x2ZSBkZWZhdWx0IHByb3BzXG5cdCAgICAgICAg
ICBwcm9wc1twcm9wTmFtZV0gPSBkZWZhdWx0UHJvcHNbcHJvcE5hbWVdO1xuXHQgICAgICAgIH0g
ZWxzZSB7XG5cdCAgICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBjb25maWdbcHJvcE5hbWVdO1xu
XHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAgLy8gQ2hpbGRy
ZW4gY2FuIGJlIG1vcmUgdGhhbiBvbmUgYXJndW1lbnQsIGFuZCB0aG9zZSBhcmUgdHJhbnNmZXJy
ZWQgb250b1xuXHQgIC8vIHRoZSBuZXdseSBhbGxvY2F0ZWQgcHJvcHMgb2JqZWN0LlxuXHQgIHZh
ciBjaGlsZHJlbkxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGggLSAyO1xuXHQgIGlmIChjaGlsZHJl
bkxlbmd0aCA9PT0gMSkge1xuXHQgICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcblx0ICB9
IGVsc2UgaWYgKGNoaWxkcmVuTGVuZ3RoID4gMSkge1xuXHQgICAgdmFyIGNoaWxkQXJyYXkgPSBB
cnJheShjaGlsZHJlbkxlbmd0aCk7XG5cdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVu
TGVuZ3RoOyBpKyspIHtcblx0ICAgICAgY2hpbGRBcnJheVtpXSA9IGFyZ3VtZW50c1tpICsgMl07
XG5cdCAgICB9XG5cdCAgICBwcm9wcy5jaGlsZHJlbiA9IGNoaWxkQXJyYXk7XG5cdCAgfVxuXHRc
blx0ICByZXR1cm4gUmVhY3RFbGVtZW50KGVsZW1lbnQudHlwZSwga2V5LCByZWYsIHNlbGYsIHNv
dXJjZSwgb3duZXIsIHByb3BzKTtcblx0fTtcblx0XG5cdC8qKlxuXHQgKiBWZXJpZmllcyB0aGUg
b2JqZWN0IGlzIGEgUmVhY3RFbGVtZW50LlxuXHQgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRo
dWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuaXN2YWxpZGVsZW1lbnRc
blx0ICogQHBhcmFtIHs/b2JqZWN0fSBvYmplY3Rcblx0ICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1
ZSBpZiBgb2JqZWN0YCBpcyBhIHZhbGlkIGNvbXBvbmVudC5cblx0ICogQGZpbmFsXG5cdCAqL1xu
XHRSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQgPSBmdW5jdGlvbiAob2JqZWN0KSB7XG5cdCAg
cmV0dXJuIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmIG9iamVjdCAhPT0gbnVsbCAmJiBv
YmplY3QuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRTtcblx0fTtcblx0XG5cdG1vZHVs
ZS5leHBvcnRzID0gUmVhY3RFbGVtZW50O1xuXG4vKioqLyB9LFxuLyogMTkgKi9cbi8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxu
XHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7
XG5cdFxuXHR2YXIgRXZlbnRQbHVnaW5SZWdpc3RyeSA9IF9fd2VicGFja19yZXF1aXJlX18oMzYp
O1xuXHR2YXIgRXZlbnRQbHVnaW5VdGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oMzcpO1xuXHR2
YXIgUmVhY3RFcnJvclV0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0MSk7XG5cdFxuXHR2YXIg
YWNjdW11bGF0ZUludG8gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcwKTtcblx0dmFyIGZvckVhY2hB
Y2N1bXVsYXRlZCA9IF9fd2VicGFja19yZXF1aXJlX18oNzEpO1xuXHR2YXIgaW52YXJpYW50ID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0XG5cdC8qKlxuXHQgKiBJbnRlcm5hbCBzdG9yZSBm
b3IgZXZlbnQgbGlzdGVuZXJzXG5cdCAqL1xuXHR2YXIgbGlzdGVuZXJCYW5rID0ge307XG5cdFxu
XHQvKipcblx0ICogSW50ZXJuYWwgcXVldWUgb2YgZXZlbnRzIHRoYXQgaGF2ZSBhY2N1bXVsYXRl
ZCB0aGVpciBkaXNwYXRjaGVzIGFuZCBhcmVcblx0ICogd2FpdGluZyB0byBoYXZlIHRoZWlyIGRp
c3BhdGNoZXMgZXhlY3V0ZWQuXG5cdCAqL1xuXHR2YXIgZXZlbnRRdWV1ZSA9IG51bGw7XG5cdFxu
XHQvKipcblx0ICogRGlzcGF0Y2hlcyBhbiBldmVudCBhbmQgcmVsZWFzZXMgaXQgYmFjayBpbnRv
IHRoZSBwb29sLCB1bmxlc3MgcGVyc2lzdGVudC5cblx0ICpcblx0ICogQHBhcmFtIHs/b2JqZWN0
fSBldmVudCBTeW50aGV0aWMgZXZlbnQgdG8gYmUgZGlzcGF0Y2hlZC5cblx0ICogQHBhcmFtIHti
b29sZWFufSBzaW11bGF0ZWQgSWYgdGhlIGV2ZW50IGlzIHNpbXVsYXRlZCAoY2hhbmdlcyBleG4g
YmVoYXZpb3IpXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHR2YXIgZXhlY3V0ZURpc3BhdGNoZXNB
bmRSZWxlYXNlID0gZnVuY3Rpb24gKGV2ZW50LCBzaW11bGF0ZWQpIHtcblx0ICBpZiAoZXZlbnQp
IHtcblx0ICAgIEV2ZW50UGx1Z2luVXRpbHMuZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyKGV2ZW50
LCBzaW11bGF0ZWQpO1xuXHRcblx0ICAgIGlmICghZXZlbnQuaXNQZXJzaXN0ZW50KCkpIHtcblx0
ICAgICAgZXZlbnQuY29uc3RydWN0b3IucmVsZWFzZShldmVudCk7XG5cdCAgICB9XG5cdCAgfVxu
XHR9O1xuXHR2YXIgZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlU2ltdWxhdGVkID0gZnVuY3Rp
b24gKGUpIHtcblx0ICByZXR1cm4gZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlKGUsIHRydWUp
O1xuXHR9O1xuXHR2YXIgZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlVG9wTGV2ZWwgPSBmdW5j
dGlvbiAoZSkge1xuXHQgIHJldHVybiBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2UoZSwgZmFs
c2UpO1xuXHR9O1xuXHRcblx0dmFyIGdldERpY3Rpb25hcnlLZXkgPSBmdW5jdGlvbiAoaW5zdCkg
e1xuXHQgIC8vIFByZXZlbnRzIFY4IHBlcmZvcm1hbmNlIGlzc3VlOlxuXHQgIC8vIGh0dHBzOi8v
Z2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzcyMzJcblx0ICByZXR1cm4gJy4nICsgaW5z
dC5fcm9vdE5vZGVJRDtcblx0fTtcblx0XG5cdGZ1bmN0aW9uIGlzSW50ZXJhY3RpdmUodGFnKSB7
XG5cdCAgcmV0dXJuIHRhZyA9PT0gJ2J1dHRvbicgfHwgdGFnID09PSAnaW5wdXQnIHx8IHRhZyA9
PT0gJ3NlbGVjdCcgfHwgdGFnID09PSAndGV4dGFyZWEnO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBz
aG91bGRQcmV2ZW50TW91c2VFdmVudChuYW1lLCB0eXBlLCBwcm9wcykge1xuXHQgIHN3aXRjaCAo
bmFtZSkge1xuXHQgICAgY2FzZSAnb25DbGljayc6XG5cdCAgICBjYXNlICdvbkNsaWNrQ2FwdHVy
ZSc6XG5cdCAgICBjYXNlICdvbkRvdWJsZUNsaWNrJzpcblx0ICAgIGNhc2UgJ29uRG91YmxlQ2xp
Y2tDYXB0dXJlJzpcblx0ICAgIGNhc2UgJ29uTW91c2VEb3duJzpcblx0ICAgIGNhc2UgJ29uTW91
c2VEb3duQ2FwdHVyZSc6XG5cdCAgICBjYXNlICdvbk1vdXNlTW92ZSc6XG5cdCAgICBjYXNlICdv
bk1vdXNlTW92ZUNhcHR1cmUnOlxuXHQgICAgY2FzZSAnb25Nb3VzZVVwJzpcblx0ICAgIGNhc2Ug
J29uTW91c2VVcENhcHR1cmUnOlxuXHQgICAgICByZXR1cm4gISEocHJvcHMuZGlzYWJsZWQgJiYg
aXNJbnRlcmFjdGl2ZSh0eXBlKSk7XG5cdCAgICBkZWZhdWx0OlxuXHQgICAgICByZXR1cm4gZmFs
c2U7XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICogVGhpcyBpcyBhIHVuaWZpZWQgaW50ZXJm
YWNlIGZvciBldmVudCBwbHVnaW5zIHRvIGJlIGluc3RhbGxlZCBhbmQgY29uZmlndXJlZC5cblx0
ICpcblx0ICogRXZlbnQgcGx1Z2lucyBjYW4gaW1wbGVtZW50IHRoZSBmb2xsb3dpbmcgcHJvcGVy
dGllczpcblx0ICpcblx0ICogICBgZXh0cmFjdEV2ZW50c2Age2Z1bmN0aW9uKHN0cmluZywgRE9N
RXZlbnRUYXJnZXQsIHN0cmluZywgb2JqZWN0KTogKn1cblx0ICogICAgIFJlcXVpcmVkLiBXaGVu
IGEgdG9wLWxldmVsIGV2ZW50IGlzIGZpcmVkLCB0aGlzIG1ldGhvZCBpcyBleHBlY3RlZCB0b1xu
XHQgKiAgICAgZXh0cmFjdCBzeW50aGV0aWMgZXZlbnRzIHRoYXQgd2lsbCBpbiB0dXJuIGJlIHF1
ZXVlZCBhbmQgZGlzcGF0Y2hlZC5cblx0ICpcblx0ICogICBgZXZlbnRUeXBlc2Age29iamVjdH1c
blx0ICogICAgIE9wdGlvbmFsLCBwbHVnaW5zIHRoYXQgZmlyZSBldmVudHMgbXVzdCBwdWJsaXNo
IGEgbWFwcGluZyBvZiByZWdpc3RyYXRpb25cblx0ICogICAgIG5hbWVzIHRoYXQgYXJlIHVzZWQg
dG8gcmVnaXN0ZXIgbGlzdGVuZXJzLiBWYWx1ZXMgb2YgdGhpcyBtYXBwaW5nIG11c3Rcblx0ICog
ICAgIGJlIG9iamVjdHMgdGhhdCBjb250YWluIGByZWdpc3RyYXRpb25OYW1lYCBvciBgcGhhc2Vk
UmVnaXN0cmF0aW9uTmFtZXNgLlxuXHQgKlxuXHQgKiAgIGBleGVjdXRlRGlzcGF0Y2hgIHtmdW5j
dGlvbihvYmplY3QsIGZ1bmN0aW9uLCBzdHJpbmcpfVxuXHQgKiAgICAgT3B0aW9uYWwsIGFsbG93
cyBwbHVnaW5zIHRvIG92ZXJyaWRlIGhvdyBhbiBldmVudCBnZXRzIGRpc3BhdGNoZWQuIEJ5XG5c
dCAqICAgICBkZWZhdWx0LCB0aGUgbGlzdGVuZXIgaXMgc2ltcGx5IGludm9rZWQuXG5cdCAqXG5c
dCAqIEVhY2ggcGx1Z2luIHRoYXQgaXMgaW5qZWN0ZWQgaW50byBgRXZlbnRzUGx1Z2luSHViYCBp
cyBpbW1lZGlhdGVseSBvcGVyYWJsZS5cblx0ICpcblx0ICogQHB1YmxpY1xuXHQgKi9cblx0dmFy
IEV2ZW50UGx1Z2luSHViID0ge1xuXHQgIC8qKlxuXHQgICAqIE1ldGhvZHMgZm9yIGluamVjdGlu
ZyBkZXBlbmRlbmNpZXMuXG5cdCAgICovXG5cdCAgaW5qZWN0aW9uOiB7XG5cdCAgICAvKipcblx0
ICAgICAqIEBwYXJhbSB7YXJyYXl9IEluamVjdGVkRXZlbnRQbHVnaW5PcmRlclxuXHQgICAgICog
QHB1YmxpY1xuXHQgICAgICovXG5cdCAgICBpbmplY3RFdmVudFBsdWdpbk9yZGVyOiBFdmVudFBs
dWdpblJlZ2lzdHJ5LmluamVjdEV2ZW50UGx1Z2luT3JkZXIsXG5cdFxuXHQgICAgLyoqXG5cdCAg
ICAgKiBAcGFyYW0ge29iamVjdH0gaW5qZWN0ZWROYW1lc1RvUGx1Z2lucyBNYXAgZnJvbSBuYW1l
cyB0byBwbHVnaW4gbW9kdWxlcy5cblx0ICAgICAqL1xuXHQgICAgaW5qZWN0RXZlbnRQbHVnaW5z
QnlOYW1lOiBFdmVudFBsdWdpblJlZ2lzdHJ5LmluamVjdEV2ZW50UGx1Z2luc0J5TmFtZVxuXHQg
IH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFN0b3JlcyBgbGlzdGVuZXJgIGF0IGBsaXN0ZW5lckJh
bmtbcmVnaXN0cmF0aW9uTmFtZV1ba2V5XWAuIElzIGlkZW1wb3RlbnQuXG5cdCAgICpcblx0ICAg
KiBAcGFyYW0ge29iamVjdH0gaW5zdCBUaGUgaW5zdGFuY2UsIHdoaWNoIGlzIHRoZSBzb3VyY2Ug
b2YgZXZlbnRzLlxuXHQgICAqIEBwYXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb25OYW1lIE5hbWUg
b2YgbGlzdGVuZXIgKGUuZy4gYG9uQ2xpY2tgKS5cblx0ICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBs
aXN0ZW5lciBUaGUgY2FsbGJhY2sgdG8gc3RvcmUuXG5cdCAgICovXG5cdCAgcHV0TGlzdGVuZXI6
IGZ1bmN0aW9uIChpbnN0LCByZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lcikge1xuXHQgICAgISh0
eXBlb2YgbGlzdGVuZXIgPT09ICdmdW5jdGlvbicpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNl
LCAnRXhwZWN0ZWQgJXMgbGlzdGVuZXIgdG8gYmUgYSBmdW5jdGlvbiwgaW5zdGVhZCBnb3QgdHlw
ZSAlcycsIHJlZ2lzdHJhdGlvbk5hbWUsIHR5cGVvZiBsaXN0ZW5lcikgOiBfcHJvZEludmFyaWFu
dCgnOTQnLCByZWdpc3RyYXRpb25OYW1lLCB0eXBlb2YgbGlzdGVuZXIpIDogdm9pZCAwO1xuXHRc
blx0ICAgIHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5S2V5KGluc3QpO1xuXHQgICAgdmFyIGJhbmtG
b3JSZWdpc3RyYXRpb25OYW1lID0gbGlzdGVuZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdIHx8IChs
aXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV0gPSB7fSk7XG5cdCAgICBiYW5rRm9yUmVnaXN0
cmF0aW9uTmFtZVtrZXldID0gbGlzdGVuZXI7XG5cdFxuXHQgICAgdmFyIFBsdWdpbk1vZHVsZSA9
IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbcmVnaXN0cmF0aW9u
TmFtZV07XG5cdCAgICBpZiAoUGx1Z2luTW9kdWxlICYmIFBsdWdpbk1vZHVsZS5kaWRQdXRMaXN0
ZW5lcikge1xuXHQgICAgICBQbHVnaW5Nb2R1bGUuZGlkUHV0TGlzdGVuZXIoaW5zdCwgcmVnaXN0
cmF0aW9uTmFtZSwgbGlzdGVuZXIpO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQg
ICAqIEBwYXJhbSB7b2JqZWN0fSBpbnN0IFRoZSBpbnN0YW5jZSwgd2hpY2ggaXMgdGhlIHNvdXJj
ZSBvZiBldmVudHMuXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IHJlZ2lzdHJhdGlvbk5hbWUgTmFt
ZSBvZiBsaXN0ZW5lciAoZS5nLiBgb25DbGlja2ApLlxuXHQgICAqIEByZXR1cm4gez9mdW5jdGlv
bn0gVGhlIHN0b3JlZCBjYWxsYmFjay5cblx0ICAgKi9cblx0ICBnZXRMaXN0ZW5lcjogZnVuY3Rp
b24gKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUpIHtcblx0ICAgIC8vIFRPRE86IHNob3VsZFByZXZl
bnRNb3VzZUV2ZW50IGlzIERPTS1zcGVjaWZpYyBhbmQgZGVmaW5pdGVseSBzaG91bGQgbm90XG5c
dCAgICAvLyBsaXZlIGhlcmU7IG5lZWRzIHRvIGJlIG1vdmVkIHRvIGEgYmV0dGVyIHBsYWNlIHNv
b25cblx0ICAgIHZhciBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSA9IGxpc3RlbmVyQmFua1tyZWdp
c3RyYXRpb25OYW1lXTtcblx0ICAgIGlmIChzaG91bGRQcmV2ZW50TW91c2VFdmVudChyZWdpc3Ry
YXRpb25OYW1lLCBpbnN0Ll9jdXJyZW50RWxlbWVudC50eXBlLCBpbnN0Ll9jdXJyZW50RWxlbWVu
dC5wcm9wcykpIHtcblx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICB9XG5cdCAgICB2YXIga2V5
ID0gZ2V0RGljdGlvbmFyeUtleShpbnN0KTtcblx0ICAgIHJldHVybiBiYW5rRm9yUmVnaXN0cmF0
aW9uTmFtZSAmJiBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZVtrZXldO1xuXHQgIH0sXG5cdFxuXHQg
IC8qKlxuXHQgICAqIERlbGV0ZXMgYSBsaXN0ZW5lciBmcm9tIHRoZSByZWdpc3RyYXRpb24gYmFu
ay5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBpbnN0IFRoZSBpbnN0YW5jZSwgd2hp
Y2ggaXMgdGhlIHNvdXJjZSBvZiBldmVudHMuXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IHJlZ2lz
dHJhdGlvbk5hbWUgTmFtZSBvZiBsaXN0ZW5lciAoZS5nLiBgb25DbGlja2ApLlxuXHQgICAqL1xu
XHQgIGRlbGV0ZUxpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSkge1xu
XHQgICAgdmFyIFBsdWdpbk1vZHVsZSA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9u
TmFtZU1vZHVsZXNbcmVnaXN0cmF0aW9uTmFtZV07XG5cdCAgICBpZiAoUGx1Z2luTW9kdWxlICYm
IFBsdWdpbk1vZHVsZS53aWxsRGVsZXRlTGlzdGVuZXIpIHtcblx0ICAgICAgUGx1Z2luTW9kdWxl
LndpbGxEZWxldGVMaXN0ZW5lcihpbnN0LCByZWdpc3RyYXRpb25OYW1lKTtcblx0ICAgIH1cblx0
XG5cdCAgICB2YXIgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUgPSBsaXN0ZW5lckJhbmtbcmVnaXN0
cmF0aW9uTmFtZV07XG5cdCAgICAvLyBUT0RPOiBUaGlzIHNob3VsZCBuZXZlciBiZSBudWxsIC0t
IHdoZW4gaXMgaXQ/XG5cdCAgICBpZiAoYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUpIHtcblx0ICAg
ICAgdmFyIGtleSA9IGdldERpY3Rpb25hcnlLZXkoaW5zdCk7XG5cdCAgICAgIGRlbGV0ZSBiYW5r
Rm9yUmVnaXN0cmF0aW9uTmFtZVtrZXldO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIC8qKlxu
XHQgICAqIERlbGV0ZXMgYWxsIGxpc3RlbmVycyBmb3IgdGhlIERPTSBlbGVtZW50IHdpdGggdGhl
IHN1cHBsaWVkIElELlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGluc3QgVGhlIGlu
c3RhbmNlLCB3aGljaCBpcyB0aGUgc291cmNlIG9mIGV2ZW50cy5cblx0ICAgKi9cblx0ICBkZWxl
dGVBbGxMaXN0ZW5lcnM6IGZ1bmN0aW9uIChpbnN0KSB7XG5cdCAgICB2YXIga2V5ID0gZ2V0RGlj
dGlvbmFyeUtleShpbnN0KTtcblx0ICAgIGZvciAodmFyIHJlZ2lzdHJhdGlvbk5hbWUgaW4gbGlz
dGVuZXJCYW5rKSB7XG5cdCAgICAgIGlmICghbGlzdGVuZXJCYW5rLmhhc093blByb3BlcnR5KHJl
Z2lzdHJhdGlvbk5hbWUpKSB7XG5cdCAgICAgICAgY29udGludWU7XG5cdCAgICAgIH1cblx0XG5c
dCAgICAgIGlmICghbGlzdGVuZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdW2tleV0pIHtcblx0ICAg
ICAgICBjb250aW51ZTtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgdmFyIFBsdWdpbk1vZHVsZSA9
IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbcmVnaXN0cmF0aW9u
TmFtZV07XG5cdCAgICAgIGlmIChQbHVnaW5Nb2R1bGUgJiYgUGx1Z2luTW9kdWxlLndpbGxEZWxl
dGVMaXN0ZW5lcikge1xuXHQgICAgICAgIFBsdWdpbk1vZHVsZS53aWxsRGVsZXRlTGlzdGVuZXIo
aW5zdCwgcmVnaXN0cmF0aW9uTmFtZSk7XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIGRlbGV0ZSBs
aXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV1ba2V5XTtcblx0ICAgIH1cblx0ICB9LFxuXHRc
blx0ICAvKipcblx0ICAgKiBBbGxvd3MgcmVnaXN0ZXJlZCBwbHVnaW5zIGFuIG9wcG9ydHVuaXR5
IHRvIGV4dHJhY3QgZXZlbnRzIGZyb20gdG9wLWxldmVsXG5cdCAgICogbmF0aXZlIGJyb3dzZXIg
ZXZlbnRzLlxuXHQgICAqXG5cdCAgICogQHJldHVybiB7Kn0gQW4gYWNjdW11bGF0aW9uIG9mIHN5
bnRoZXRpYyBldmVudHMuXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAgZXh0cmFjdEV2
ZW50czogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5h
dGl2ZUV2ZW50VGFyZ2V0KSB7XG5cdCAgICB2YXIgZXZlbnRzO1xuXHQgICAgdmFyIHBsdWdpbnMg
PSBFdmVudFBsdWdpblJlZ2lzdHJ5LnBsdWdpbnM7XG5cdCAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHBsdWdpbnMubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgLy8gTm90IGV2ZXJ5IHBsdWdpbiBpbiB0
aGUgb3JkZXJpbmcgbWF5IGJlIGxvYWRlZCBhdCBydW50aW1lLlxuXHQgICAgICB2YXIgcG9zc2li
bGVQbHVnaW4gPSBwbHVnaW5zW2ldO1xuXHQgICAgICBpZiAocG9zc2libGVQbHVnaW4pIHtcblx0
ICAgICAgICB2YXIgZXh0cmFjdGVkRXZlbnRzID0gcG9zc2libGVQbHVnaW4uZXh0cmFjdEV2ZW50
cyh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdl
dCk7XG5cdCAgICAgICAgaWYgKGV4dHJhY3RlZEV2ZW50cykge1xuXHQgICAgICAgICAgZXZlbnRz
ID0gYWNjdW11bGF0ZUludG8oZXZlbnRzLCBleHRyYWN0ZWRFdmVudHMpO1xuXHQgICAgICAgIH1c
blx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgcmV0dXJuIGV2ZW50cztcblx0ICB9LFxuXHRcblx0
ICAvKipcblx0ICAgKiBFbnF1ZXVlcyBhIHN5bnRoZXRpYyBldmVudCB0aGF0IHNob3VsZCBiZSBk
aXNwYXRjaGVkIHdoZW5cblx0ICAgKiBgcHJvY2Vzc0V2ZW50UXVldWVgIGlzIGludm9rZWQuXG5c
dCAgICpcblx0ICAgKiBAcGFyYW0geyp9IGV2ZW50cyBBbiBhY2N1bXVsYXRpb24gb2Ygc3ludGhl
dGljIGV2ZW50cy5cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICBlbnF1ZXVlRXZlbnRz
OiBmdW5jdGlvbiAoZXZlbnRzKSB7XG5cdCAgICBpZiAoZXZlbnRzKSB7XG5cdCAgICAgIGV2ZW50
UXVldWUgPSBhY2N1bXVsYXRlSW50byhldmVudFF1ZXVlLCBldmVudHMpO1xuXHQgICAgfVxuXHQg
IH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIERpc3BhdGNoZXMgYWxsIHN5bnRoZXRpYyBldmVudHMg
b24gdGhlIGV2ZW50IHF1ZXVlLlxuXHQgICAqXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5c
dCAgcHJvY2Vzc0V2ZW50UXVldWU6IGZ1bmN0aW9uIChzaW11bGF0ZWQpIHtcblx0ICAgIC8vIFNl
dCBgZXZlbnRRdWV1ZWAgdG8gbnVsbCBiZWZvcmUgcHJvY2Vzc2luZyBpdCBzbyB0aGF0IHdlIGNh
biB0ZWxsIGlmIG1vcmVcblx0ICAgIC8vIGV2ZW50cyBnZXQgZW5xdWV1ZWQgd2hpbGUgcHJvY2Vz
c2luZy5cblx0ICAgIHZhciBwcm9jZXNzaW5nRXZlbnRRdWV1ZSA9IGV2ZW50UXVldWU7XG5cdCAg
ICBldmVudFF1ZXVlID0gbnVsbDtcblx0ICAgIGlmIChzaW11bGF0ZWQpIHtcblx0ICAgICAgZm9y
RWFjaEFjY3VtdWxhdGVkKHByb2Nlc3NpbmdFdmVudFF1ZXVlLCBleGVjdXRlRGlzcGF0Y2hlc0Fu
ZFJlbGVhc2VTaW11bGF0ZWQpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgZm9yRWFjaEFjY3Vt
dWxhdGVkKHByb2Nlc3NpbmdFdmVudFF1ZXVlLCBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2VU
b3BMZXZlbCk7XG5cdCAgICB9XG5cdCAgICAhIWV2ZW50UXVldWUgPyAgZmFsc2UgPyBpbnZhcmlh
bnQoZmFsc2UsICdwcm9jZXNzRXZlbnRRdWV1ZSgpOiBBZGRpdGlvbmFsIGV2ZW50cyB3ZXJlIGVu
cXVldWVkIHdoaWxlIHByb2Nlc3NpbmcgYW4gZXZlbnQgcXVldWUuIFN1cHBvcnQgZm9yIHRoaXMg
aGFzIG5vdCB5ZXQgYmVlbiBpbXBsZW1lbnRlZC4nKSA6IF9wcm9kSW52YXJpYW50KCc5NScpIDog
dm9pZCAwO1xuXHQgICAgLy8gVGhpcyB3b3VsZCBiZSBhIGdvb2QgdGltZSB0byByZXRocm93IGlm
IGFueSBvZiB0aGUgZXZlbnQgaGFuZGxlcnMgdGhyZXcuXG5cdCAgICBSZWFjdEVycm9yVXRpbHMu
cmV0aHJvd0NhdWdodEVycm9yKCk7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogVGhlc2Ug
YXJlIG5lZWRlZCBmb3IgdGVzdHMgb25seS4gRG8gbm90IHVzZSFcblx0ICAgKi9cblx0ICBfX3B1
cmdlOiBmdW5jdGlvbiAoKSB7XG5cdCAgICBsaXN0ZW5lckJhbmsgPSB7fTtcblx0ICB9LFxuXHRc
blx0ICBfX2dldExpc3RlbmVyQmFuazogZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0dXJuIGxpc3Rl
bmVyQmFuaztcblx0ICB9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IEV2ZW50UGx1Z2lu
SHViO1xuXG4vKioqLyB9LFxuLyogMjAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxu
XHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBFdmVu
dFBsdWdpbkh1YiA9IF9fd2VicGFja19yZXF1aXJlX18oMTkpO1xuXHR2YXIgRXZlbnRQbHVnaW5V
dGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oMzcpO1xuXHRcblx0dmFyIGFjY3VtdWxhdGVJbnRv
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3MCk7XG5cdHZhciBmb3JFYWNoQWNjdW11bGF0ZWQgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDcxKTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDIpO1xuXHRcblx0dmFyIGdldExpc3RlbmVyID0gRXZlbnRQbHVnaW5IdWIuZ2V0TGlzdGVu
ZXI7XG5cdFxuXHQvKipcblx0ICogU29tZSBldmVudCB0eXBlcyBoYXZlIGEgbm90aW9uIG9mIGRp
ZmZlcmVudCByZWdpc3RyYXRpb24gbmFtZXMgZm9yIGRpZmZlcmVudFxuXHQgKiBcInBoYXNlc1wi
IG9mIHByb3BhZ2F0aW9uLiBUaGlzIGZpbmRzIGxpc3RlbmVycyBieSBhIGdpdmVuIHBoYXNlLlxu
XHQgKi9cblx0ZnVuY3Rpb24gbGlzdGVuZXJBdFBoYXNlKGluc3QsIGV2ZW50LCBwcm9wYWdhdGlv
blBoYXNlKSB7XG5cdCAgdmFyIHJlZ2lzdHJhdGlvbk5hbWUgPSBldmVudC5kaXNwYXRjaENvbmZp
Zy5waGFzZWRSZWdpc3RyYXRpb25OYW1lc1twcm9wYWdhdGlvblBoYXNlXTtcblx0ICByZXR1cm4g
Z2V0TGlzdGVuZXIoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSk7XG5cdH1cblx0XG5cdC8qKlxuXHQg
KiBUYWdzIGEgYFN5bnRoZXRpY0V2ZW50YCB3aXRoIGRpc3BhdGNoZWQgbGlzdGVuZXJzLiBDcmVh
dGluZyB0aGlzIGZ1bmN0aW9uXG5cdCAqIGhlcmUsIGFsbG93cyB1cyB0byBub3QgaGF2ZSB0byBi
aW5kIG9yIGNyZWF0ZSBmdW5jdGlvbnMgZm9yIGVhY2ggZXZlbnQuXG5cdCAqIE11dGF0aW5nIHRo
ZSBldmVudCdzIG1lbWJlcnMgYWxsb3dzIHVzIHRvIG5vdCBoYXZlIHRvIGNyZWF0ZSBhIHdyYXBw
aW5nXG5cdCAqIFwiZGlzcGF0Y2hcIiBvYmplY3QgdGhhdCBwYWlycyB0aGUgZXZlbnQgd2l0aCB0
aGUgbGlzdGVuZXIuXG5cdCAqL1xuXHRmdW5jdGlvbiBhY2N1bXVsYXRlRGlyZWN0aW9uYWxEaXNw
YXRjaGVzKGluc3QsIHBoYXNlLCBldmVudCkge1xuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoaW5zdCwgJ0Rpc3Bh
dGNoaW5nIGluc3QgbXVzdCBub3QgYmUgbnVsbCcpIDogdm9pZCAwO1xuXHQgIH1cblx0ICB2YXIg
bGlzdGVuZXIgPSBsaXN0ZW5lckF0UGhhc2UoaW5zdCwgZXZlbnQsIHBoYXNlKTtcblx0ICBpZiAo
bGlzdGVuZXIpIHtcblx0ICAgIGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycyA9IGFjY3VtdWxhdGVJ
bnRvKGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycywgbGlzdGVuZXIpO1xuXHQgICAgZXZlbnQuX2Rp
c3BhdGNoSW5zdGFuY2VzID0gYWNjdW11bGF0ZUludG8oZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2Vz
LCBpbnN0KTtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBDb2xsZWN0IGRpc3BhdGNoZXMg
KG11c3QgYmUgZW50aXJlbHkgY29sbGVjdGVkIGJlZm9yZSBkaXNwYXRjaGluZyAtIHNlZSB1bml0
XG5cdCAqIHRlc3RzKS4gTGF6aWx5IGFsbG9jYXRlIHRoZSBhcnJheSB0byBjb25zZXJ2ZSBtZW1v
cnkuICBXZSBtdXN0IGxvb3AgdGhyb3VnaFxuXHQgKiBlYWNoIGV2ZW50IGFuZCBwZXJmb3JtIHRo
ZSB0cmF2ZXJzYWwgZm9yIGVhY2ggb25lLiBXZSBjYW5ub3QgcGVyZm9ybSBhXG5cdCAqIHNpbmds
ZSB0cmF2ZXJzYWwgZm9yIHRoZSBlbnRpcmUgY29sbGVjdGlvbiBvZiBldmVudHMgYmVjYXVzZSBl
YWNoIGV2ZW50IG1heVxuXHQgKiBoYXZlIGEgZGlmZmVyZW50IHRhcmdldC5cblx0ICovXG5cdGZ1
bmN0aW9uIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTaW5nbGUoZXZlbnQpIHtcblx0ICBp
ZiAoZXZlbnQgJiYgZXZlbnQuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMp
IHtcblx0ICAgIEV2ZW50UGx1Z2luVXRpbHMudHJhdmVyc2VUd29QaGFzZShldmVudC5fdGFyZ2V0
SW5zdCwgYWNjdW11bGF0ZURpcmVjdGlvbmFsRGlzcGF0Y2hlcywgZXZlbnQpO1xuXHQgIH1cblx0
fVxuXHRcblx0LyoqXG5cdCAqIFNhbWUgYXMgYGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNT
aW5nbGVgLCBidXQgc2tpcHMgb3ZlciB0aGUgdGFyZ2V0SUQuXG5cdCAqL1xuXHRmdW5jdGlvbiBh
Y2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2luZ2xlU2tpcFRhcmdldChldmVudCkge1xuXHQg
IGlmIChldmVudCAmJiBldmVudC5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1l
cykge1xuXHQgICAgdmFyIHRhcmdldEluc3QgPSBldmVudC5fdGFyZ2V0SW5zdDtcblx0ICAgIHZh
ciBwYXJlbnRJbnN0ID0gdGFyZ2V0SW5zdCA/IEV2ZW50UGx1Z2luVXRpbHMuZ2V0UGFyZW50SW5z
dGFuY2UodGFyZ2V0SW5zdCkgOiBudWxsO1xuXHQgICAgRXZlbnRQbHVnaW5VdGlscy50cmF2ZXJz
ZVR3b1BoYXNlKHBhcmVudEluc3QsIGFjY3VtdWxhdGVEaXJlY3Rpb25hbERpc3BhdGNoZXMsIGV2
ZW50KTtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBBY2N1bXVsYXRlcyB3aXRob3V0IHJl
Z2FyZCB0byBkaXJlY3Rpb24sIGRvZXMgbm90IGxvb2sgZm9yIHBoYXNlZFxuXHQgKiByZWdpc3Ry
YXRpb24gbmFtZXMuIFNhbWUgYXMgYGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzU2luZ2xlYCBi
dXQgd2l0aG91dFxuXHQgKiByZXF1aXJpbmcgdGhhdCB0aGUgYGRpc3BhdGNoTWFya2VyYCBiZSB0
aGUgc2FtZSBhcyB0aGUgZGlzcGF0Y2hlZCBJRC5cblx0ICovXG5cdGZ1bmN0aW9uIGFjY3VtdWxh
dGVEaXNwYXRjaGVzKGluc3QsIGlnbm9yZWREaXJlY3Rpb24sIGV2ZW50KSB7XG5cdCAgaWYgKGV2
ZW50ICYmIGV2ZW50LmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUpIHtcblx0ICAgIHZh
ciByZWdpc3RyYXRpb25OYW1lID0gZXZlbnQuZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFt
ZTtcblx0ICAgIHZhciBsaXN0ZW5lciA9IGdldExpc3RlbmVyKGluc3QsIHJlZ2lzdHJhdGlvbk5h
bWUpO1xuXHQgICAgaWYgKGxpc3RlbmVyKSB7XG5cdCAgICAgIGV2ZW50Ll9kaXNwYXRjaExpc3Rl
bmVycyA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycywgbGlzdGVuZXIp
O1xuXHQgICAgICBldmVudC5fZGlzcGF0Y2hJbnN0YW5jZXMgPSBhY2N1bXVsYXRlSW50byhldmVu
dC5fZGlzcGF0Y2hJbnN0YW5jZXMsIGluc3QpO1xuXHQgICAgfVxuXHQgIH1cblx0fVxuXHRcblx0
LyoqXG5cdCAqIEFjY3VtdWxhdGVzIGRpc3BhdGNoZXMgb24gYW4gYFN5bnRoZXRpY0V2ZW50YCwg
YnV0IG9ubHkgZm9yIHRoZVxuXHQgKiBgZGlzcGF0Y2hNYXJrZXJgLlxuXHQgKiBAcGFyYW0ge1N5
bnRoZXRpY0V2ZW50fSBldmVudFxuXHQgKi9cblx0ZnVuY3Rpb24gYWNjdW11bGF0ZURpcmVjdERp
c3BhdGNoZXNTaW5nbGUoZXZlbnQpIHtcblx0ICBpZiAoZXZlbnQgJiYgZXZlbnQuZGlzcGF0Y2hD
b25maWcucmVnaXN0cmF0aW9uTmFtZSkge1xuXHQgICAgYWNjdW11bGF0ZURpc3BhdGNoZXMoZXZl
bnQuX3RhcmdldEluc3QsIG51bGwsIGV2ZW50KTtcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9u
IGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoZXZlbnRzKSB7XG5cdCAgZm9yRWFjaEFjY3Vt
dWxhdGVkKGV2ZW50cywgYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZSk7XG5cdH1c
blx0XG5cdGZ1bmN0aW9uIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTa2lwVGFyZ2V0KGV2
ZW50cykge1xuXHQgIGZvckVhY2hBY2N1bXVsYXRlZChldmVudHMsIGFjY3VtdWxhdGVUd29QaGFz
ZURpc3BhdGNoZXNTaW5nbGVTa2lwVGFyZ2V0KTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gYWNjdW11
bGF0ZUVudGVyTGVhdmVEaXNwYXRjaGVzKGxlYXZlLCBlbnRlciwgZnJvbSwgdG8pIHtcblx0ICBF
dmVudFBsdWdpblV0aWxzLnRyYXZlcnNlRW50ZXJMZWF2ZShmcm9tLCB0bywgYWNjdW11bGF0ZURp
c3BhdGNoZXMsIGxlYXZlLCBlbnRlcik7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGFjY3VtdWxhdGVE
aXJlY3REaXNwYXRjaGVzKGV2ZW50cykge1xuXHQgIGZvckVhY2hBY2N1bXVsYXRlZChldmVudHMs
IGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzU2luZ2xlKTtcblx0fVxuXHRcblx0LyoqXG5cdCAq
IEEgc21hbGwgc2V0IG9mIHByb3BhZ2F0aW9uIHBhdHRlcm5zLCBlYWNoIG9mIHdoaWNoIHdpbGwg
YWNjZXB0IGEgc21hbGwgYW1vdW50XG5cdCAqIG9mIGluZm9ybWF0aW9uLCBhbmQgZ2VuZXJhdGUg
YSBzZXQgb2YgXCJkaXNwYXRjaCByZWFkeSBldmVudCBvYmplY3RzXCIgLSB3aGljaFxuXHQgKiBh
cmUgc2V0cyBvZiBldmVudHMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBhbm5vdGF0ZWQgd2l0aCBh
IHNldCBvZiBkaXNwYXRjaGVkXG5cdCAqIGxpc3RlbmVyIGZ1bmN0aW9ucy9pZHMuIFRoZSBBUEkg
aXMgZGVzaWduZWQgdGhpcyB3YXkgdG8gZGlzY291cmFnZSB0aGVzZVxuXHQgKiBwcm9wYWdhdGlv
biBzdHJhdGVnaWVzIGZyb20gYWN0dWFsbHkgZXhlY3V0aW5nIHRoZSBkaXNwYXRjaGVzLCBzaW5j
ZSB3ZVxuXHQgKiBhbHdheXMgd2FudCB0byBjb2xsZWN0IHRoZSBlbnRpcmUgc2V0IG9mIGRpc3Bh
dGNoZXMgYmVmb3JlIGV4ZWN1dGluZyBldmVudCBhXG5cdCAqIHNpbmdsZSBvbmUuXG5cdCAqXG5c
dCAqIEBjb25zdHJ1Y3RvciBFdmVudFByb3BhZ2F0b3JzXG5cdCAqL1xuXHR2YXIgRXZlbnRQcm9w
YWdhdG9ycyA9IHtcblx0ICBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzOiBhY2N1bXVsYXRl
VHdvUGhhc2VEaXNwYXRjaGVzLFxuXHQgIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTa2lw
VGFyZ2V0OiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2tpcFRhcmdldCxcblx0ICBhY2N1
bXVsYXRlRGlyZWN0RGlzcGF0Y2hlczogYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXMsXG5cdCAg
YWNjdW11bGF0ZUVudGVyTGVhdmVEaXNwYXRjaGVzOiBhY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3Bh
dGNoZXNcblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gRXZlbnRQcm9wYWdhdG9ycztcblxu
LyoqKi8gfSxcbi8qIDIxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxu
XHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICog
QWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQn
dXNlIHN0cmljdCc7XG5cdFxuXHQvKipcblx0ICogYFJlYWN0SW5zdGFuY2VNYXBgIG1haW50YWlu
cyBhIG1hcHBpbmcgZnJvbSBhIHB1YmxpYyBmYWNpbmcgc3RhdGVmdWxcblx0ICogaW5zdGFuY2Ug
KGtleSkgYW5kIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiAodmFsdWUpLiBUaGlzIGFsbG93
cyBwdWJsaWNcblx0ICogbWV0aG9kcyB0byBhY2NlcHQgdGhlIHVzZXIgZmFjaW5nIGluc3RhbmNl
IGFzIGFuIGFyZ3VtZW50IGFuZCBtYXAgdGhlbSBiYWNrXG5cdCAqIHRvIGludGVybmFsIG1ldGhv
ZHMuXG5cdCAqL1xuXHRcblx0Ly8gVE9ETzogUmVwbGFjZSB0aGlzIHdpdGggRVM2OiB2YXIgUmVh
Y3RJbnN0YW5jZU1hcCA9IG5ldyBNYXAoKTtcblx0XG5cdHZhciBSZWFjdEluc3RhbmNlTWFwID0g
e1xuXHQgIC8qKlxuXHQgICAqIFRoaXMgQVBJIHNob3VsZCBiZSBjYWxsZWQgYGRlbGV0ZWAgYnV0
IHdlJ2QgaGF2ZSB0byBtYWtlIHN1cmUgdG8gYWx3YXlzXG5cdCAgICogdHJhbnNmb3JtIHRoZXNl
IHRvIHN0cmluZ3MgZm9yIElFIHN1cHBvcnQuIFdoZW4gdGhpcyB0cmFuc2Zvcm0gaXMgZnVsbHlc
blx0ICAgKiBzdXBwb3J0ZWQgd2UgY2FuIHJlbmFtZSBpdC5cblx0ICAgKi9cblx0ICByZW1vdmU6
IGZ1bmN0aW9uIChrZXkpIHtcblx0ICAgIGtleS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlID0gdW5k
ZWZpbmVkO1xuXHQgIH0sXG5cdFxuXHQgIGdldDogZnVuY3Rpb24gKGtleSkge1xuXHQgICAgcmV0
dXJuIGtleS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlO1xuXHQgIH0sXG5cdFxuXHQgIGhhczogZnVu
Y3Rpb24gKGtleSkge1xuXHQgICAgcmV0dXJuIGtleS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlICE9
PSB1bmRlZmluZWQ7XG5cdCAgfSxcblx0XG5cdCAgc2V0OiBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkg
e1xuXHQgICAga2V5Ll9yZWFjdEludGVybmFsSW5zdGFuY2UgPSB2YWx1ZTtcblx0ICB9XG5cdH07
XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0SW5zdGFuY2VNYXA7XG5cbi8qKiovIH0sXG4v
KiAyMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWly
ZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
XHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAq
L1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIFN5bnRoZXRpY0V2ZW50ID0gX193ZWJw
YWNrX3JlcXVpcmVfXygxMCk7XG5cdFxuXHR2YXIgZ2V0RXZlbnRUYXJnZXQgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDQ2KTtcblx0XG5cdC8qKlxuXHQgKiBAaW50ZXJmYWNlIFVJRXZlbnRcblx0ICog
QHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvXG5cdCAqL1xuXHR2
YXIgVUlFdmVudEludGVyZmFjZSA9IHtcblx0ICB2aWV3OiBmdW5jdGlvbiAoZXZlbnQpIHtcblx0
ICAgIGlmIChldmVudC52aWV3KSB7XG5cdCAgICAgIHJldHVybiBldmVudC52aWV3O1xuXHQgICAg
fVxuXHRcblx0ICAgIHZhciB0YXJnZXQgPSBnZXRFdmVudFRhcmdldChldmVudCk7XG5cdCAgICBp
ZiAodGFyZ2V0LndpbmRvdyA9PT0gdGFyZ2V0KSB7XG5cdCAgICAgIC8vIHRhcmdldCBpcyBhIHdp
bmRvdyBvYmplY3Rcblx0ICAgICAgcmV0dXJuIHRhcmdldDtcblx0ICAgIH1cblx0XG5cdCAgICB2
YXIgZG9jID0gdGFyZ2V0Lm93bmVyRG9jdW1lbnQ7XG5cdCAgICAvLyBUT0RPOiBGaWd1cmUgb3V0
IHdoeSBgb3duZXJEb2N1bWVudGAgaXMgc29tZXRpbWVzIHVuZGVmaW5lZCBpbiBJRTguXG5cdCAg
ICBpZiAoZG9jKSB7XG5cdCAgICAgIHJldHVybiBkb2MuZGVmYXVsdFZpZXcgfHwgZG9jLnBhcmVu
dFdpbmRvdztcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHJldHVybiB3aW5kb3c7XG5cdCAgICB9
XG5cdCAgfSxcblx0ICBkZXRhaWw6IGZ1bmN0aW9uIChldmVudCkge1xuXHQgICAgcmV0dXJuIGV2
ZW50LmRldGFpbCB8fCAwO1xuXHQgIH1cblx0fTtcblx0XG5cdC8qKlxuXHQgKiBAcGFyYW0ge29i
amVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMg
ZXZlbnQuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRp
ZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cblx0ICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50
IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuXHQgKiBAZXh0ZW5kcyB7U3ludGhldGljRXZlbnR9XG5c
dCAqL1xuXHRmdW5jdGlvbiBTeW50aGV0aWNVSUV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRj
aE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG5cdCAgcmV0dXJuIFN5
bnRoZXRpY0V2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBu
YXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuXHR9XG5cdFxuXHRTeW50aGV0aWNFdmVu
dC5hdWdtZW50Q2xhc3MoU3ludGhldGljVUlFdmVudCwgVUlFdmVudEludGVyZmFjZSk7XG5cdFxu
XHRtb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY1VJRXZlbnQ7XG5cbi8qKiovIH0sXG4vKiAyMyAq
L1xuMyxcbi8qIDI0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFj
a19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIGVtcHR5T2JqZWN0
ID0ge307XG5cdFxuXHRpZiAoZmFsc2UpIHtcblx0ICBPYmplY3QuZnJlZXplKGVtcHR5T2JqZWN0
KTtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBlbXB0eU9iamVjdDtcblxuLyoqKi8gfSxc
bi8qIDI1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1
aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
XG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0
ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX2Fzc2lnbiA9IF9fd2VicGFja19y
ZXF1aXJlX18oNCk7XG5cdFxuXHR2YXIgRXZlbnRQbHVnaW5SZWdpc3RyeSA9IF9fd2VicGFja19y
ZXF1aXJlX18oMzYpO1xuXHR2YXIgUmVhY3RFdmVudEVtaXR0ZXJNaXhpbiA9IF9fd2VicGFja19y
ZXF1aXJlX18oMTUyKTtcblx0dmFyIFZpZXdwb3J0TWV0cmljcyA9IF9fd2VicGFja19yZXF1aXJl
X18oNjkpO1xuXHRcblx0dmFyIGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lID0gX193ZWJwYWNr
X3JlcXVpcmVfXygxODQpO1xuXHR2YXIgaXNFdmVudFN1cHBvcnRlZCA9IF9fd2VicGFja19yZXF1
aXJlX18oNDcpO1xuXHRcblx0LyoqXG5cdCAqIFN1bW1hcnkgb2YgYFJlYWN0QnJvd3NlckV2ZW50
RW1pdHRlcmAgZXZlbnQgaGFuZGxpbmc6XG5cdCAqXG5cdCAqICAtIFRvcC1sZXZlbCBkZWxlZ2F0
aW9uIGlzIHVzZWQgdG8gdHJhcCBtb3N0IG5hdGl2ZSBicm93c2VyIGV2ZW50cy4gVGhpc1xuXHQg
KiAgICBtYXkgb25seSBvY2N1ciBpbiB0aGUgbWFpbiB0aHJlYWQgYW5kIGlzIHRoZSByZXNwb25z
aWJpbGl0eSBvZlxuXHQgKiAgICBSZWFjdEV2ZW50TGlzdGVuZXIsIHdoaWNoIGlzIGluamVjdGVk
IGFuZCBjYW4gdGhlcmVmb3JlIHN1cHBvcnQgcGx1Z2dhYmxlXG5cdCAqICAgIGV2ZW50IHNvdXJj
ZXMuIFRoaXMgaXMgdGhlIG9ubHkgd29yayB0aGF0IG9jY3VycyBpbiB0aGUgbWFpbiB0aHJlYWQu
XG5cdCAqXG5cdCAqICAtIFdlIG5vcm1hbGl6ZSBhbmQgZGUtZHVwbGljYXRlIGV2ZW50cyB0byBh
Y2NvdW50IGZvciBicm93c2VyIHF1aXJrcy4gVGhpc1xuXHQgKiAgICBtYXkgYmUgZG9uZSBpbiB0
aGUgd29ya2VyIHRocmVhZC5cblx0ICpcblx0ICogIC0gRm9yd2FyZCB0aGVzZSBuYXRpdmUgZXZl
bnRzICh3aXRoIHRoZSBhc3NvY2lhdGVkIHRvcC1sZXZlbCB0eXBlIHVzZWQgdG9cblx0ICogICAg
dHJhcCBpdCkgdG8gYEV2ZW50UGx1Z2luSHViYCwgd2hpY2ggaW4gdHVybiB3aWxsIGFzayBwbHVn
aW5zIGlmIHRoZXkgd2FudFxuXHQgKiAgICB0byBleHRyYWN0IGFueSBzeW50aGV0aWMgZXZlbnRz
LlxuXHQgKlxuXHQgKiAgLSBUaGUgYEV2ZW50UGx1Z2luSHViYCB3aWxsIHRoZW4gcHJvY2VzcyBl
YWNoIGV2ZW50IGJ5IGFubm90YXRpbmcgdGhlbSB3aXRoXG5cdCAqICAgIFwiZGlzcGF0Y2hlc1wi
LCBhIHNlcXVlbmNlIG9mIGxpc3RlbmVycyBhbmQgSURzIHRoYXQgY2FyZSBhYm91dCB0aGF0IGV2
ZW50LlxuXHQgKlxuXHQgKiAgLSBUaGUgYEV2ZW50UGx1Z2luSHViYCB0aGVuIGRpc3BhdGNoZXMg
dGhlIGV2ZW50cy5cblx0ICpcblx0ICogT3ZlcnZpZXcgb2YgUmVhY3QgYW5kIHRoZSBldmVudCBz
eXN0ZW06XG5cdCAqXG5cdCAqICstLS0tLS0tLS0tLS0rICAgIC5cblx0ICogfCAgICBET00gICAg
IHwgICAgLlxuXHQgKiArLS0tLS0tLS0tLS0tKyAgICAuXG5cdCAqICAgICAgIHwgICAgICAgICAg
IC5cblx0ICogICAgICAgdiAgICAgICAgICAgLlxuXHQgKiArLS0tLS0tLS0tLS0tKyAgICAuXG5c
dCAqIHwgUmVhY3RFdmVudCB8ICAgIC5cblx0ICogfCAgTGlzdGVuZXIgIHwgICAgLlxuXHQgKiAr
LS0tLS0tLS0tLS0tKyAgICAuICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLStc
blx0ICogICAgICAgfCAgICAgICAgICAgLiAgICAgICAgICAgICAgICstLS0tLS0tLSt8U2ltcGxl
RXZlbnR8XG5cdCAqICAgICAgIHwgICAgICAgICAgIC4gICAgICAgICAgICAgICB8ICAgICAgICAg
fFBsdWdpbiAgICAgfFxuXHQgKiArLS0tLS18LS0tLS0tKyAgICAuICAgICAgICAgICAgICAgdiAg
ICAgICAgICstLS0tLS0tLS0tLStcblx0ICogfCAgICAgfCAgICAgIHwgICAgLiAgICArLS0tLS0t
LS0tLS0tLS0rICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tK1xuXHQgKiB8ICAgICAr
LS0tLS0tLS0tLS0uLS0tPnxFdmVudFBsdWdpbkh1YnwgICAgICAgICAgICAgICAgICAgIHwgICAg
RXZlbnQgICB8XG5cdCAqIHwgICAgICAgICAgICB8ICAgIC4gICAgfCAgICAgICAgICAgICAgfCAg
ICAgKy0tLS0tLS0tLS0tKyAgfCBQcm9wYWdhdG9yc3xcblx0ICogfCBSZWFjdEV2ZW50IHwgICAg
LiAgICB8ICAgICAgICAgICAgICB8ICAgICB8VGFwRXZlbnQgICB8ICB8LS0tLS0tLS0tLS0tfFxu
XHQgKiB8ICBFbWl0dGVyICAgfCAgICAuICAgIHwgICAgICAgICAgICAgIHw8LS0tK3xQbHVnaW4g
ICAgIHwgIHxvdGhlciBwbHVnaW58XG5cdCAqIHwgICAgICAgICAgICB8ICAgIC4gICAgfCAgICAg
ICAgICAgICAgfCAgICAgKy0tLS0tLS0tLS0tKyAgfCAgdXRpbGl0aWVzIHxcblx0ICogfCAgICAg
Ky0tLS0tLS0tLS0tLi0tLT58ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICArLS0t
LS0tLS0tLS0tK1xuXHQgKiB8ICAgICB8ICAgICAgfCAgICAuICAgICstLS0tLS0tLS0tLS0tLStc
blx0ICogKy0tLS0tfC0tLS0tLSsgICAgLiAgICAgICAgICAgICAgICBeICAgICAgICArLS0tLS0t
LS0tLS0rXG5cdCAqICAgICAgIHwgICAgICAgICAgIC4gICAgICAgICAgICAgICAgfCAgICAgICAg
fEVudGVyL0xlYXZlfFxuXHQgKiAgICAgICArICAgICAgICAgICAuICAgICAgICAgICAgICAgICst
LS0tLS0tK3xQbHVnaW4gICAgIHxcblx0ICogKy0tLS0tLS0tLS0tLS0rICAgLiAgICAgICAgICAg
ICAgICAgICAgICAgICArLS0tLS0tLS0tLS0rXG5cdCAqIHwgYXBwbGljYXRpb24gfCAgIC5cblx0
ICogfC0tLS0tLS0tLS0tLS18ICAgLlxuXHQgKiB8ICAgICAgICAgICAgIHwgICAuXG5cdCAqIHwg
ICAgICAgICAgICAgfCAgIC5cblx0ICogKy0tLS0tLS0tLS0tLS0rICAgLlxuXHQgKiAgICAgICAg
ICAgICAgICAgICAuXG5cdCAqICAgIFJlYWN0IENvcmUgICAgIC4gIEdlbmVyYWwgUHVycG9zZSBF
dmVudCBQbHVnaW4gU3lzdGVtXG5cdCAqL1xuXHRcblx0dmFyIGhhc0V2ZW50UGFnZVhZO1xuXHR2
YXIgYWxyZWFkeUxpc3RlbmluZ1RvID0ge307XG5cdHZhciBpc01vbml0b3JpbmdTY3JvbGxWYWx1
ZSA9IGZhbHNlO1xuXHR2YXIgcmVhY3RUb3BMaXN0ZW5lcnNDb3VudGVyID0gMDtcblx0XG5cdC8v
IEZvciBldmVudHMgbGlrZSAnc3VibWl0JyB3aGljaCBkb24ndCBjb25zaXN0ZW50bHkgYnViYmxl
ICh3aGljaCB3ZSB0cmFwIGF0IGFcblx0Ly8gbG93ZXIgbm9kZSB0aGFuIGBkb2N1bWVudGApLCBi
aW5kaW5nIGF0IGBkb2N1bWVudGAgd291bGQgY2F1c2UgZHVwbGljYXRlXG5cdC8vIGV2ZW50cyBz
byB3ZSBkb24ndCBpbmNsdWRlIHRoZW0gaGVyZVxuXHR2YXIgdG9wRXZlbnRNYXBwaW5nID0ge1xu
XHQgIHRvcEFib3J0OiAnYWJvcnQnLFxuXHQgIHRvcEFuaW1hdGlvbkVuZDogZ2V0VmVuZG9yUHJl
Zml4ZWRFdmVudE5hbWUoJ2FuaW1hdGlvbmVuZCcpIHx8ICdhbmltYXRpb25lbmQnLFxuXHQgIHRv
cEFuaW1hdGlvbkl0ZXJhdGlvbjogZ2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUoJ2FuaW1hdGlv
bml0ZXJhdGlvbicpIHx8ICdhbmltYXRpb25pdGVyYXRpb24nLFxuXHQgIHRvcEFuaW1hdGlvblN0
YXJ0OiBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZSgnYW5pbWF0aW9uc3RhcnQnKSB8fCAnYW5p
bWF0aW9uc3RhcnQnLFxuXHQgIHRvcEJsdXI6ICdibHVyJyxcblx0ICB0b3BDYW5QbGF5OiAnY2Fu
cGxheScsXG5cdCAgdG9wQ2FuUGxheVRocm91Z2g6ICdjYW5wbGF5dGhyb3VnaCcsXG5cdCAgdG9w
Q2hhbmdlOiAnY2hhbmdlJyxcblx0ICB0b3BDbGljazogJ2NsaWNrJyxcblx0ICB0b3BDb21wb3Np
dGlvbkVuZDogJ2NvbXBvc2l0aW9uZW5kJyxcblx0ICB0b3BDb21wb3NpdGlvblN0YXJ0OiAnY29t
cG9zaXRpb25zdGFydCcsXG5cdCAgdG9wQ29tcG9zaXRpb25VcGRhdGU6ICdjb21wb3NpdGlvbnVw
ZGF0ZScsXG5cdCAgdG9wQ29udGV4dE1lbnU6ICdjb250ZXh0bWVudScsXG5cdCAgdG9wQ29weTog
J2NvcHknLFxuXHQgIHRvcEN1dDogJ2N1dCcsXG5cdCAgdG9wRG91YmxlQ2xpY2s6ICdkYmxjbGlj
aycsXG5cdCAgdG9wRHJhZzogJ2RyYWcnLFxuXHQgIHRvcERyYWdFbmQ6ICdkcmFnZW5kJyxcblx0
ICB0b3BEcmFnRW50ZXI6ICdkcmFnZW50ZXInLFxuXHQgIHRvcERyYWdFeGl0OiAnZHJhZ2V4aXQn
LFxuXHQgIHRvcERyYWdMZWF2ZTogJ2RyYWdsZWF2ZScsXG5cdCAgdG9wRHJhZ092ZXI6ICdkcmFn
b3ZlcicsXG5cdCAgdG9wRHJhZ1N0YXJ0OiAnZHJhZ3N0YXJ0Jyxcblx0ICB0b3BEcm9wOiAnZHJv
cCcsXG5cdCAgdG9wRHVyYXRpb25DaGFuZ2U6ICdkdXJhdGlvbmNoYW5nZScsXG5cdCAgdG9wRW1w
dGllZDogJ2VtcHRpZWQnLFxuXHQgIHRvcEVuY3J5cHRlZDogJ2VuY3J5cHRlZCcsXG5cdCAgdG9w
RW5kZWQ6ICdlbmRlZCcsXG5cdCAgdG9wRXJyb3I6ICdlcnJvcicsXG5cdCAgdG9wRm9jdXM6ICdm
b2N1cycsXG5cdCAgdG9wSW5wdXQ6ICdpbnB1dCcsXG5cdCAgdG9wS2V5RG93bjogJ2tleWRvd24n
LFxuXHQgIHRvcEtleVByZXNzOiAna2V5cHJlc3MnLFxuXHQgIHRvcEtleVVwOiAna2V5dXAnLFxu
XHQgIHRvcExvYWRlZERhdGE6ICdsb2FkZWRkYXRhJyxcblx0ICB0b3BMb2FkZWRNZXRhZGF0YTog
J2xvYWRlZG1ldGFkYXRhJyxcblx0ICB0b3BMb2FkU3RhcnQ6ICdsb2Fkc3RhcnQnLFxuXHQgIHRv
cE1vdXNlRG93bjogJ21vdXNlZG93bicsXG5cdCAgdG9wTW91c2VNb3ZlOiAnbW91c2Vtb3ZlJyxc
blx0ICB0b3BNb3VzZU91dDogJ21vdXNlb3V0Jyxcblx0ICB0b3BNb3VzZU92ZXI6ICdtb3VzZW92
ZXInLFxuXHQgIHRvcE1vdXNlVXA6ICdtb3VzZXVwJyxcblx0ICB0b3BQYXN0ZTogJ3Bhc3RlJyxc
blx0ICB0b3BQYXVzZTogJ3BhdXNlJyxcblx0ICB0b3BQbGF5OiAncGxheScsXG5cdCAgdG9wUGxh
eWluZzogJ3BsYXlpbmcnLFxuXHQgIHRvcFByb2dyZXNzOiAncHJvZ3Jlc3MnLFxuXHQgIHRvcFJh
dGVDaGFuZ2U6ICdyYXRlY2hhbmdlJyxcblx0ICB0b3BTY3JvbGw6ICdzY3JvbGwnLFxuXHQgIHRv
cFNlZWtlZDogJ3NlZWtlZCcsXG5cdCAgdG9wU2Vla2luZzogJ3NlZWtpbmcnLFxuXHQgIHRvcFNl
bGVjdGlvbkNoYW5nZTogJ3NlbGVjdGlvbmNoYW5nZScsXG5cdCAgdG9wU3RhbGxlZDogJ3N0YWxs
ZWQnLFxuXHQgIHRvcFN1c3BlbmQ6ICdzdXNwZW5kJyxcblx0ICB0b3BUZXh0SW5wdXQ6ICd0ZXh0
SW5wdXQnLFxuXHQgIHRvcFRpbWVVcGRhdGU6ICd0aW1ldXBkYXRlJyxcblx0ICB0b3BUb3VjaENh
bmNlbDogJ3RvdWNoY2FuY2VsJyxcblx0ICB0b3BUb3VjaEVuZDogJ3RvdWNoZW5kJyxcblx0ICB0
b3BUb3VjaE1vdmU6ICd0b3VjaG1vdmUnLFxuXHQgIHRvcFRvdWNoU3RhcnQ6ICd0b3VjaHN0YXJ0
Jyxcblx0ICB0b3BUcmFuc2l0aW9uRW5kOiBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZSgndHJh
bnNpdGlvbmVuZCcpIHx8ICd0cmFuc2l0aW9uZW5kJyxcblx0ICB0b3BWb2x1bWVDaGFuZ2U6ICd2
b2x1bWVjaGFuZ2UnLFxuXHQgIHRvcFdhaXRpbmc6ICd3YWl0aW5nJyxcblx0ICB0b3BXaGVlbDog
J3doZWVsJ1xuXHR9O1xuXHRcblx0LyoqXG5cdCAqIFRvIGVuc3VyZSBubyBjb25mbGljdHMgd2l0
aCBvdGhlciBwb3RlbnRpYWwgUmVhY3QgaW5zdGFuY2VzIG9uIHRoZSBwYWdlXG5cdCAqL1xuXHR2
YXIgdG9wTGlzdGVuZXJzSURLZXkgPSAnX3JlYWN0TGlzdGVuZXJzSUQnICsgU3RyaW5nKE1hdGgu
cmFuZG9tKCkpLnNsaWNlKDIpO1xuXHRcblx0ZnVuY3Rpb24gZ2V0TGlzdGVuaW5nRm9yRG9jdW1l
bnQobW91bnRBdCkge1xuXHQgIC8vIEluIElFOCwgYG1vdW50QXRgIGlzIGEgaG9zdCBvYmplY3Qg
YW5kIGRvZXNuJ3QgaGF2ZSBgaGFzT3duUHJvcGVydHlgXG5cdCAgLy8gZGlyZWN0bHkuXG5cdCAg
aWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobW91bnRBdCwgdG9wTGlz
dGVuZXJzSURLZXkpKSB7XG5cdCAgICBtb3VudEF0W3RvcExpc3RlbmVyc0lES2V5XSA9IHJlYWN0
VG9wTGlzdGVuZXJzQ291bnRlcisrO1xuXHQgICAgYWxyZWFkeUxpc3RlbmluZ1RvW21vdW50QXRb
dG9wTGlzdGVuZXJzSURLZXldXSA9IHt9O1xuXHQgIH1cblx0ICByZXR1cm4gYWxyZWFkeUxpc3Rl
bmluZ1RvW21vdW50QXRbdG9wTGlzdGVuZXJzSURLZXldXTtcblx0fVxuXHRcblx0LyoqXG5cdCAq
IGBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXJgIGlzIHVzZWQgdG8gYXR0YWNoIHRvcC1sZXZlbCBl
dmVudCBsaXN0ZW5lcnMuIEZvclxuXHQgKiBleGFtcGxlOlxuXHQgKlxuXHQgKiAgIEV2ZW50UGx1
Z2luSHViLnB1dExpc3RlbmVyKCdteUlEJywgJ29uQ2xpY2snLCBteUZ1bmN0aW9uKTtcblx0ICpc
blx0ICogVGhpcyB3b3VsZCBhbGxvY2F0ZSBhIFwicmVnaXN0cmF0aW9uXCIgb2YgYCgnb25DbGlj
aycsIG15RnVuY3Rpb24pYCBvbiAnbXlJRCcuXG5cdCAqXG5cdCAqIEBpbnRlcm5hbFxuXHQgKi9c
blx0dmFyIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlciA9IF9hc3NpZ24oe30sIFJlYWN0RXZlbnRF
bWl0dGVyTWl4aW4sIHtcblx0ICAvKipcblx0ICAgKiBJbmplY3RhYmxlIGV2ZW50IGJhY2tlbmRc
blx0ICAgKi9cblx0ICBSZWFjdEV2ZW50TGlzdGVuZXI6IG51bGwsXG5cdFxuXHQgIGluamVjdGlv
bjoge1xuXHQgICAgLyoqXG5cdCAgICAgKiBAcGFyYW0ge29iamVjdH0gUmVhY3RFdmVudExpc3Rl
bmVyXG5cdCAgICAgKi9cblx0ICAgIGluamVjdFJlYWN0RXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24g
KFJlYWN0RXZlbnRMaXN0ZW5lcikge1xuXHQgICAgICBSZWFjdEV2ZW50TGlzdGVuZXIuc2V0SGFu
ZGxlVG9wTGV2ZWwoUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLmhhbmRsZVRvcExldmVsKTtcblx0
ICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lciA9IFJlYWN0
RXZlbnRMaXN0ZW5lcjtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBTZXRz
IHdoZXRoZXIgb3Igbm90IGFueSBjcmVhdGVkIGNhbGxiYWNrcyBzaG91bGQgYmUgZW5hYmxlZC5c
blx0ICAgKlxuXHQgICAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5hYmxlZCBUcnVlIGlmIGNhbGxiYWNr
cyBzaG91bGQgYmUgZW5hYmxlZC5cblx0ICAgKi9cblx0ICBzZXRFbmFibGVkOiBmdW5jdGlvbiAo
ZW5hYmxlZCkge1xuXHQgICAgaWYgKFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50
TGlzdGVuZXIpIHtcblx0ICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRM
aXN0ZW5lci5zZXRFbmFibGVkKGVuYWJsZWQpO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIC8q
KlxuXHQgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgY2FsbGJhY2tzIGFyZSBlbmFibGVk
LlxuXHQgICAqL1xuXHQgIGlzRW5hYmxlZDogZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0dXJuICEh
KFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIgJiYgUmVhY3RCcm93
c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci5pc0VuYWJsZWQoKSk7XG5cdCAgfSxc
blx0XG5cdCAgLyoqXG5cdCAgICogV2UgbGlzdGVuIGZvciBidWJibGVkIHRvdWNoIGV2ZW50cyBv
biB0aGUgZG9jdW1lbnQgb2JqZWN0LlxuXHQgICAqXG5cdCAgICogRmlyZWZveCB2OC4wMSAoYW5k
IHBvc3NpYmx5IG90aGVycykgZXhoaWJpdGVkIHN0cmFuZ2UgYmVoYXZpb3Igd2hlblxuXHQgICAq
IG1vdW50aW5nIGBvbm1vdXNlbW92ZWAgZXZlbnRzIGF0IHNvbWUgbm9kZSB0aGF0IHdhcyBub3Qg
dGhlIGRvY3VtZW50XG5cdCAgICogZWxlbWVudC4gVGhlIHN5bXB0b21zIHdlcmUgdGhhdCBpZiB5
b3VyIG1vdXNlIGlzIG5vdCBtb3Zpbmcgb3ZlciBzb21ldGhpbmdcblx0ICAgKiBjb250YWluZWQg
d2l0aGluIHRoYXQgbW91bnQgcG9pbnQgKGZvciBleGFtcGxlIG9uIHRoZSBiYWNrZ3JvdW5kKSB0
aGVcblx0ICAgKiB0b3AtbGV2ZWwgbGlzdGVuZXJzIGZvciBgb25tb3VzZW1vdmVgIHdvbid0IGJl
IGNhbGxlZC4gSG93ZXZlciwgaWYgeW91XG5cdCAgICogcmVnaXN0ZXIgdGhlIGBtb3VzZW1vdmVg
IG9uIHRoZSBkb2N1bWVudCBvYmplY3QsIHRoZW4gaXQgd2lsbCBvZiBjb3Vyc2Vcblx0ICAgKiBj
YXRjaCBhbGwgYG1vdXNlbW92ZWBzLiBUaGlzIGFsb25nIHdpdGggaU9TIHF1aXJrcywganVzdGlm
aWVzIHJlc3RyaWN0aW5nXG5cdCAgICogdG9wLWxldmVsIGxpc3RlbmVycyB0byB0aGUgZG9jdW1l
bnQgb2JqZWN0IG9ubHksIGF0IGxlYXN0IGZvciB0aGVzZVxuXHQgICAqIG1vdmVtZW50IHR5cGVz
IG9mIGV2ZW50cyBhbmQgcG9zc2libHkgYWxsIGV2ZW50cy5cblx0ICAgKlxuXHQgICAqIEBzZWUg
aHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMTAvMDkvY2xpY2tfZXZl
bnRfZGVsLmh0bWxcblx0ICAgKlxuXHQgICAqIEFsc28sIGBrZXl1cGAvYGtleXByZXNzYC9ga2V5
ZG93bmAgZG8gbm90IGJ1YmJsZSB0byB0aGUgd2luZG93IG9uIElFLCBidXRcblx0ICAgKiB0aGV5
IGJ1YmJsZSB0byBkb2N1bWVudC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7c3RyaW5nfSByZWdp
c3RyYXRpb25OYW1lIE5hbWUgb2YgbGlzdGVuZXIgKGUuZy4gYG9uQ2xpY2tgKS5cblx0ICAgKiBA
cGFyYW0ge29iamVjdH0gY29udGVudERvY3VtZW50SGFuZGxlIERvY3VtZW50IHdoaWNoIG93bnMg
dGhlIGNvbnRhaW5lclxuXHQgICAqL1xuXHQgIGxpc3RlblRvOiBmdW5jdGlvbiAocmVnaXN0cmF0
aW9uTmFtZSwgY29udGVudERvY3VtZW50SGFuZGxlKSB7XG5cdCAgICB2YXIgbW91bnRBdCA9IGNv
bnRlbnREb2N1bWVudEhhbmRsZTtcblx0ICAgIHZhciBpc0xpc3RlbmluZyA9IGdldExpc3Rlbmlu
Z0ZvckRvY3VtZW50KG1vdW50QXQpO1xuXHQgICAgdmFyIGRlcGVuZGVuY2llcyA9IEV2ZW50UGx1
Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llc1tyZWdpc3RyYXRpb25OYW1l
XTtcblx0XG5cdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlcGVuZGVuY2llcy5sZW5ndGg7IGkr
Kykge1xuXHQgICAgICB2YXIgZGVwZW5kZW5jeSA9IGRlcGVuZGVuY2llc1tpXTtcblx0ICAgICAg
aWYgKCEoaXNMaXN0ZW5pbmcuaGFzT3duUHJvcGVydHkoZGVwZW5kZW5jeSkgJiYgaXNMaXN0ZW5p
bmdbZGVwZW5kZW5jeV0pKSB7XG5cdCAgICAgICAgaWYgKGRlcGVuZGVuY3kgPT09ICd0b3BXaGVl
bCcpIHtcblx0ICAgICAgICAgIGlmIChpc0V2ZW50U3VwcG9ydGVkKCd3aGVlbCcpKSB7XG5cdCAg
ICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJh
cEJ1YmJsZWRFdmVudCgndG9wV2hlZWwnLCAnd2hlZWwnLCBtb3VudEF0KTtcblx0ICAgICAgICAg
IH0gZWxzZSBpZiAoaXNFdmVudFN1cHBvcnRlZCgnbW91c2V3aGVlbCcpKSB7XG5cdCAgICAgICAg
ICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJs
ZWRFdmVudCgndG9wV2hlZWwnLCAnbW91c2V3aGVlbCcsIG1vdW50QXQpO1xuXHQgICAgICAgICAg
fSBlbHNlIHtcblx0ICAgICAgICAgICAgLy8gRmlyZWZveCBuZWVkcyB0byBjYXB0dXJlIGEgZGlm
ZmVyZW50IG1vdXNlIHNjcm9sbCBldmVudC5cblx0ICAgICAgICAgICAgLy8gQHNlZSBodHRwOi8v
d3d3LnF1aXJrc21vZGUub3JnL2RvbS9ldmVudHMvdGVzdHMvc2Nyb2xsLmh0bWxcblx0ICAgICAg
ICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnVi
YmxlZEV2ZW50KCd0b3BXaGVlbCcsICdET01Nb3VzZVNjcm9sbCcsIG1vdW50QXQpO1xuXHQgICAg
ICAgICAgfVxuXHQgICAgICAgIH0gZWxzZSBpZiAoZGVwZW5kZW5jeSA9PT0gJ3RvcFNjcm9sbCcp
IHtcblx0ICAgICAgICAgIGlmIChpc0V2ZW50U3VwcG9ydGVkKCdzY3JvbGwnLCB0cnVlKSkge1xu
XHQgICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVy
LnRyYXBDYXB0dXJlZEV2ZW50KCd0b3BTY3JvbGwnLCAnc2Nyb2xsJywgbW91bnRBdCk7XG5cdCAg
ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIu
UmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcFNjcm9sbCcsICdzY3JvbGwn
LCBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLldJTkRPV19IQU5E
TEUpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH0gZWxzZSBpZiAoZGVwZW5kZW5jeSA9PT0g
J3RvcEZvY3VzJyB8fCBkZXBlbmRlbmN5ID09PSAndG9wQmx1cicpIHtcblx0ICAgICAgICAgIGlm
IChpc0V2ZW50U3VwcG9ydGVkKCdmb2N1cycsIHRydWUpKSB7XG5cdCAgICAgICAgICAgIFJlYWN0
QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQo
J3RvcEZvY3VzJywgJ2ZvY3VzJywgbW91bnRBdCk7XG5cdCAgICAgICAgICAgIFJlYWN0QnJvd3Nl
ckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQoJ3RvcEJs
dXInLCAnYmx1cicsIG1vdW50QXQpO1xuXHQgICAgICAgICAgfSBlbHNlIGlmIChpc0V2ZW50U3Vw
cG9ydGVkKCdmb2N1c2luJykpIHtcblx0ICAgICAgICAgICAgLy8gSUUgaGFzIGBmb2N1c2luYCBh
bmQgYGZvY3Vzb3V0YCBldmVudHMgd2hpY2ggYnViYmxlLlxuXHQgICAgICAgICAgICAvLyBAc2Vl
IGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8yMDA4LzA0L2RlbGVnYXRp
bmdfdGhlLmh0bWxcblx0ICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0
RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCd0b3BGb2N1cycsICdmb2N1c2luJywgbW91
bnRBdCk7XG5cdCAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50
TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wQmx1cicsICdmb2N1c291dCcsIG1vdW50QXQp
O1xuXHQgICAgICAgICAgfVxuXHRcblx0ICAgICAgICAgIC8vIHRvIG1ha2Ugc3VyZSBibHVyIGFu
ZCBmb2N1cyBldmVudCBsaXN0ZW5lcnMgYXJlIG9ubHkgYXR0YWNoZWQgb25jZVxuXHQgICAgICAg
ICAgaXNMaXN0ZW5pbmcudG9wQmx1ciA9IHRydWU7XG5cdCAgICAgICAgICBpc0xpc3RlbmluZy50
b3BGb2N1cyA9IHRydWU7XG5cdCAgICAgICAgfSBlbHNlIGlmICh0b3BFdmVudE1hcHBpbmcuaGFz
T3duUHJvcGVydHkoZGVwZW5kZW5jeSkpIHtcblx0ICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50
RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudChkZXBlbmRlbmN5LCB0
b3BFdmVudE1hcHBpbmdbZGVwZW5kZW5jeV0sIG1vdW50QXQpO1xuXHQgICAgICAgIH1cblx0XG5c
dCAgICAgICAgaXNMaXN0ZW5pbmdbZGVwZW5kZW5jeV0gPSB0cnVlO1xuXHQgICAgICB9XG5cdCAg
ICB9XG5cdCAgfSxcblx0XG5cdCAgdHJhcEJ1YmJsZWRFdmVudDogZnVuY3Rpb24gKHRvcExldmVs
VHlwZSwgaGFuZGxlckJhc2VOYW1lLCBoYW5kbGUpIHtcblx0ICAgIHJldHVybiBSZWFjdEJyb3dz
ZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQodG9wTGV2
ZWxUeXBlLCBoYW5kbGVyQmFzZU5hbWUsIGhhbmRsZSk7XG5cdCAgfSxcblx0XG5cdCAgdHJhcENh
cHR1cmVkRXZlbnQ6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgaGFu
ZGxlKSB7XG5cdCAgICByZXR1cm4gUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRM
aXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwg
aGFuZGxlKTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBQcm90ZWN0IGFnYWluc3QgZG9j
dW1lbnQuY3JlYXRlRXZlbnQoKSByZXR1cm5pbmcgbnVsbFxuXHQgICAqIFNvbWUgcG9wdXAgYmxv
Y2tlciBleHRlbnNpb25zIGFwcGVhciB0byBkbyB0aGlzOlxuXHQgICAqIGh0dHBzOi8vZ2l0aHVi
LmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNjg4N1xuXHQgICAqL1xuXHQgIHN1cHBvcnRzRXZl
bnRQYWdlWFk6IGZ1bmN0aW9uICgpIHtcblx0ICAgIGlmICghZG9jdW1lbnQuY3JlYXRlRXZlbnQp
IHtcblx0ICAgICAgcmV0dXJuIGZhbHNlO1xuXHQgICAgfVxuXHQgICAgdmFyIGV2ID0gZG9jdW1l
bnQuY3JlYXRlRXZlbnQoJ01vdXNlRXZlbnQnKTtcblx0ICAgIHJldHVybiBldiAhPSBudWxsICYm
ICdwYWdlWCcgaW4gZXY7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogTGlzdGVucyB0byB3
aW5kb3cgc2Nyb2xsIGFuZCByZXNpemUgZXZlbnRzLiBXZSBjYWNoZSBzY3JvbGwgdmFsdWVzIHNv
IHRoYXRcblx0ICAgKiBhcHBsaWNhdGlvbiBjb2RlIGNhbiBhY2Nlc3MgdGhlbSB3aXRob3V0IHRy
aWdnZXJpbmcgcmVmbG93cy5cblx0ICAgKlxuXHQgICAqIFZpZXdwb3J0TWV0cmljcyBpcyBvbmx5
IHVzZWQgYnkgU3ludGhldGljTW91c2UvVG91Y2hFdmVudCBhbmQgb25seSB3aGVuXG5cdCAgICog
cGFnZVgvcGFnZVkgaXNuJ3Qgc3VwcG9ydGVkIChsZWdhY3kgYnJvd3NlcnMpLlxuXHQgICAqXG5c
dCAgICogTk9URTogU2Nyb2xsIGV2ZW50cyBkbyBub3QgYnViYmxlLlxuXHQgICAqXG5cdCAgICog
QHNlZSBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2RvbS9ldmVudHMvc2Nyb2xsLmh0bWxcblx0
ICAgKi9cblx0ICBlbnN1cmVTY3JvbGxWYWx1ZU1vbml0b3Jpbmc6IGZ1bmN0aW9uICgpIHtcblx0
ICAgIGlmIChoYXNFdmVudFBhZ2VYWSA9PT0gdW5kZWZpbmVkKSB7XG5cdCAgICAgIGhhc0V2ZW50
UGFnZVhZID0gUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnN1cHBvcnRzRXZlbnRQYWdlWFkoKTtc
blx0ICAgIH1cblx0ICAgIGlmICghaGFzRXZlbnRQYWdlWFkgJiYgIWlzTW9uaXRvcmluZ1Njcm9s
bFZhbHVlKSB7XG5cdCAgICAgIHZhciByZWZyZXNoID0gVmlld3BvcnRNZXRyaWNzLnJlZnJlc2hT
Y3JvbGxWYWx1ZXM7XG5cdCAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50
TGlzdGVuZXIubW9uaXRvclNjcm9sbFZhbHVlKHJlZnJlc2gpO1xuXHQgICAgICBpc01vbml0b3Jp
bmdTY3JvbGxWYWx1ZSA9IHRydWU7XG5cdCAgICB9XG5cdCAgfVxuXHR9KTtcblx0XG5cdG1vZHVs
ZS5leHBvcnRzID0gUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyO1xuXG4vKioqLyB9LFxuLyogMjYg
Ki9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykg
e1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
XHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0
XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBTeW50aGV0aWNVSUV2ZW50ID0gX193ZWJwYWNr
X3JlcXVpcmVfXygyMik7XG5cdHZhciBWaWV3cG9ydE1ldHJpY3MgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDY5KTtcblx0XG5cdHZhciBnZXRFdmVudE1vZGlmaWVyU3RhdGUgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDQ1KTtcblx0XG5cdC8qKlxuXHQgKiBAaW50ZXJmYWNlIE1vdXNlRXZlbnRcblx0ICog
QHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvXG5cdCAqL1xuXHR2
YXIgTW91c2VFdmVudEludGVyZmFjZSA9IHtcblx0ICBzY3JlZW5YOiBudWxsLFxuXHQgIHNjcmVl
blk6IG51bGwsXG5cdCAgY2xpZW50WDogbnVsbCxcblx0ICBjbGllbnRZOiBudWxsLFxuXHQgIGN0
cmxLZXk6IG51bGwsXG5cdCAgc2hpZnRLZXk6IG51bGwsXG5cdCAgYWx0S2V5OiBudWxsLFxuXHQg
IG1ldGFLZXk6IG51bGwsXG5cdCAgZ2V0TW9kaWZpZXJTdGF0ZTogZ2V0RXZlbnRNb2RpZmllclN0
YXRlLFxuXHQgIGJ1dHRvbjogZnVuY3Rpb24gKGV2ZW50KSB7XG5cdCAgICAvLyBXZWJraXQsIEZp
cmVmb3gsIElFOStcblx0ICAgIC8vIHdoaWNoOiAgMSAyIDNcblx0ICAgIC8vIGJ1dHRvbjogMCAx
IDIgKHN0YW5kYXJkKVxuXHQgICAgdmFyIGJ1dHRvbiA9IGV2ZW50LmJ1dHRvbjtcblx0ICAgIGlm
ICgnd2hpY2gnIGluIGV2ZW50KSB7XG5cdCAgICAgIHJldHVybiBidXR0b247XG5cdCAgICB9XG5c
dCAgICAvLyBJRTw5XG5cdCAgICAvLyB3aGljaDogIHVuZGVmaW5lZFxuXHQgICAgLy8gYnV0dG9u
OiAwIDAgMFxuXHQgICAgLy8gYnV0dG9uOiAxIDQgMiAob25tb3VzZXVwKVxuXHQgICAgcmV0dXJu
IGJ1dHRvbiA9PT0gMiA/IDIgOiBidXR0b24gPT09IDQgPyAxIDogMDtcblx0ICB9LFxuXHQgIGJ1
dHRvbnM6IG51bGwsXG5cdCAgcmVsYXRlZFRhcmdldDogZnVuY3Rpb24gKGV2ZW50KSB7XG5cdCAg
ICByZXR1cm4gZXZlbnQucmVsYXRlZFRhcmdldCB8fCAoZXZlbnQuZnJvbUVsZW1lbnQgPT09IGV2
ZW50LnNyY0VsZW1lbnQgPyBldmVudC50b0VsZW1lbnQgOiBldmVudC5mcm9tRWxlbWVudCk7XG5c
dCAgfSxcblx0ICAvLyBcIlByb3ByaWV0YXJ5XCIgSW50ZXJmYWNlLlxuXHQgIHBhZ2VYOiBmdW5j
dGlvbiAoZXZlbnQpIHtcblx0ICAgIHJldHVybiAncGFnZVgnIGluIGV2ZW50ID8gZXZlbnQucGFn
ZVggOiBldmVudC5jbGllbnRYICsgVmlld3BvcnRNZXRyaWNzLmN1cnJlbnRTY3JvbGxMZWZ0O1xu
XHQgIH0sXG5cdCAgcGFnZVk6IGZ1bmN0aW9uIChldmVudCkge1xuXHQgICAgcmV0dXJuICdwYWdl
WScgaW4gZXZlbnQgPyBldmVudC5wYWdlWSA6IGV2ZW50LmNsaWVudFkgKyBWaWV3cG9ydE1ldHJp
Y3MuY3VycmVudFNjcm9sbFRvcDtcblx0ICB9XG5cdH07XG5cdFxuXHQvKipcblx0ICogQHBhcmFt
IHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0
aGlzIGV2ZW50LlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlk
ZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVF
dmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cblx0ICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZl
bnR9XG5cdCAqL1xuXHRmdW5jdGlvbiBTeW50aGV0aWNNb3VzZUV2ZW50KGRpc3BhdGNoQ29uZmln
LCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG5cdCAg
cmV0dXJuIFN5bnRoZXRpY1VJRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0
Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cdH1cblx0XG5cdFN5
bnRoZXRpY1VJRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY01vdXNlRXZlbnQsIE1vdXNlRXZl
bnRJbnRlcmZhY2UpO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNNb3VzZUV2ZW50
O1xuXG4vKioqLyB9LFxuLyogMjcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywg
X193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuXHQgKlxuXHQgKiBcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIg
X3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXHRcblx0dmFyIGludmFy
aWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdFxuXHR2YXIgT0JTRVJWRURfRVJST1Ig
PSB7fTtcblx0XG5cdC8qKlxuXHQgKiBgVHJhbnNhY3Rpb25gIGNyZWF0ZXMgYSBibGFjayBib3gg
dGhhdCBpcyBhYmxlIHRvIHdyYXAgYW55IG1ldGhvZCBzdWNoIHRoYXRcblx0ICogY2VydGFpbiBp
bnZhcmlhbnRzIGFyZSBtYWludGFpbmVkIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIG1ldGhvZCBpcyBp
bnZva2VkXG5cdCAqIChFdmVuIGlmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gd2hpbGUgaW52b2tp
bmcgdGhlIHdyYXBwZWQgbWV0aG9kKS4gV2hvZXZlclxuXHQgKiBpbnN0YW50aWF0ZXMgYSB0cmFu
c2FjdGlvbiBjYW4gcHJvdmlkZSBlbmZvcmNlcnMgb2YgdGhlIGludmFyaWFudHMgYXRcblx0ICog
Y3JlYXRpb24gdGltZS4gVGhlIGBUcmFuc2FjdGlvbmAgY2xhc3MgaXRzZWxmIHdpbGwgc3VwcGx5
IG9uZSBhZGRpdGlvbmFsXG5cdCAqIGF1dG9tYXRpYyBpbnZhcmlhbnQgZm9yIHlvdSAtIHRoZSBp
bnZhcmlhbnQgdGhhdCBhbnkgdHJhbnNhY3Rpb24gaW5zdGFuY2Vcblx0ICogc2hvdWxkIG5vdCBi
ZSBydW4gd2hpbGUgaXQgaXMgYWxyZWFkeSBiZWluZyBydW4uIFlvdSB3b3VsZCB0eXBpY2FsbHkg
Y3JlYXRlIGFcblx0ICogc2luZ2xlIGluc3RhbmNlIG9mIGEgYFRyYW5zYWN0aW9uYCBmb3IgcmV1
c2UgbXVsdGlwbGUgdGltZXMsIHRoYXQgcG90ZW50aWFsbHlcblx0ICogaXMgdXNlZCB0byB3cmFw
IHNldmVyYWwgZGlmZmVyZW50IG1ldGhvZHMuIFdyYXBwZXJzIGFyZSBleHRyZW1lbHkgc2ltcGxl
IC1cblx0ICogdGhleSBvbmx5IHJlcXVpcmUgaW1wbGVtZW50aW5nIHR3byBtZXRob2RzLlxuXHQg
KlxuXHQgKiA8cHJlPlxuXHQgKiAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBlcnMgKGluamVj
dGVkIGF0IGNyZWF0aW9uIHRpbWUpXG5cdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICArICAgICAgICArXG5cdCAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB8ICAgICAgICB8XG5cdCAqICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0t
LS18LS0tLS0tLS18LS0tLS0tLS0tLS0tLS0rXG5cdCAqICAgICAgICAgICAgICAgICAgICB8ICAg
ICAgICAgICAgICAgICB2ICAgICAgICB8ICAgICAgICAgICAgICB8XG5cdCAqICAgICAgICAgICAg
ICAgICAgICB8ICAgICAgKy0tLS0tLS0tLS0tLS0tLSsgICB8ICAgICAgICAgICAgICB8XG5cdCAq
ICAgICAgICAgICAgICAgICAgICB8ICAgKy0tfCAgICB3cmFwcGVyMSAgIHwtLS18LS0tLSsgICAg
ICAgICB8XG5cdCAqICAgICAgICAgICAgICAgICAgICB8ICAgfCAgKy0tLS0tLS0tLS0tLS0tLSsg
ICB2ICAgIHwgICAgICAgICB8XG5cdCAqICAgICAgICAgICAgICAgICAgICB8ICAgfCAgICAgICAg
ICArLS0tLS0tLS0tLS0tLSsgIHwgICAgICAgICB8XG5cdCAqICAgICAgICAgICAgICAgICAgICB8
ICAgfCAgICAgKy0tLS18ICAgd3JhcHBlcjIgIHwtLS0tLS0tLSsgICB8XG5cdCAqICAgICAgICAg
ICAgICAgICAgICB8ICAgfCAgICAgfCAgICArLS0tLS0tLS0tLS0tLSsgIHwgICAgIHwgICB8XG5c
dCAqICAgICAgICAgICAgICAgICAgICB8ICAgfCAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwg
ICAgIHwgICB8XG5cdCAqICAgICAgICAgICAgICAgICAgICB8ICAgdiAgICAgdiAgICAgICAgICAg
ICAgICAgICAgIHYgICAgIHYgICB8IHdyYXBwZXJcblx0ICogICAgICAgICAgICAgICAgICAgIHwg
Ky0tLSsgKy0tLSsgICArLS0tLS0tLS0tKyAgICstLS0rICstLS0rIHwgaW52YXJpYW50c1xuXHQg
KiBwZXJmb3JtKGFueU1ldGhvZCkgfCB8ICAgfCB8ICAgfCAgIHwgICAgICAgICB8ICAgfCAgIHwg
fCAgIHwgfCBtYWludGFpbmVkXG5cdCAqICstLS0tLS0tLS0tLS0tLS0tLT58LXwtLS18LXwtLS18
LS0+fGFueU1ldGhvZHwtLS18LS0tfC18LS0tfC18LS0tLS0tLS0+XG5cdCAqICAgICAgICAgICAg
ICAgICAgICB8IHwgICB8IHwgICB8ICAgfCAgICAgICAgIHwgICB8ICAgfCB8ICAgfCB8XG5cdCAq
ICAgICAgICAgICAgICAgICAgICB8IHwgICB8IHwgICB8ICAgfCAgICAgICAgIHwgICB8ICAgfCB8
ICAgfCB8XG5cdCAqICAgICAgICAgICAgICAgICAgICB8IHwgICB8IHwgICB8ICAgfCAgICAgICAg
IHwgICB8ICAgfCB8ICAgfCB8XG5cdCAqICAgICAgICAgICAgICAgICAgICB8ICstLS0rICstLS0r
ICAgKy0tLS0tLS0tLSsgICArLS0tKyArLS0tKyB8XG5cdCAqICAgICAgICAgICAgICAgICAgICB8
ICBpbml0aWFsaXplICAgICAgICAgICAgICAgICAgICBjbG9zZSAgICB8XG5cdCAqICAgICAgICAg
ICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5c
dCAqIDwvcHJlPlxuXHQgKlxuXHQgKiBVc2UgY2FzZXM6XG5cdCAqIC0gUHJlc2VydmluZyB0aGUg
aW5wdXQgc2VsZWN0aW9uIHJhbmdlcyBiZWZvcmUvYWZ0ZXIgcmVjb25jaWxpYXRpb24uXG5cdCAq
ICAgUmVzdG9yaW5nIHNlbGVjdGlvbiBldmVuIGluIHRoZSBldmVudCBvZiBhbiB1bmV4cGVjdGVk
IGVycm9yLlxuXHQgKiAtIERlYWN0aXZhdGluZyBldmVudHMgd2hpbGUgcmVhcnJhbmdpbmcgdGhl
IERPTSwgcHJldmVudGluZyBibHVycy9mb2N1c2VzLFxuXHQgKiAgIHdoaWxlIGd1YXJhbnRlZWlu
ZyB0aGF0IGFmdGVyd2FyZHMsIHRoZSBldmVudCBzeXN0ZW0gaXMgcmVhY3RpdmF0ZWQuXG5cdCAq
IC0gRmx1c2hpbmcgYSBxdWV1ZSBvZiBjb2xsZWN0ZWQgRE9NIG11dGF0aW9ucyB0byB0aGUgbWFp
biBVSSB0aHJlYWQgYWZ0ZXIgYVxuXHQgKiAgIHJlY29uY2lsaWF0aW9uIHRha2VzIHBsYWNlIGlu
IGEgd29ya2VyIHRocmVhZC5cblx0ICogLSBJbnZva2luZyBhbnkgY29sbGVjdGVkIGBjb21wb25l
bnREaWRVcGRhdGVgIGNhbGxiYWNrcyBhZnRlciByZW5kZXJpbmcgbmV3XG5cdCAqICAgY29udGVu
dC5cblx0ICogLSAoRnV0dXJlIHVzZSBjYXNlKTogV3JhcHBpbmcgcGFydGljdWxhciBmbHVzaGVz
IG9mIHRoZSBgUmVhY3RXb3JrZXJgIHF1ZXVlXG5cdCAqICAgdG8gcHJlc2VydmUgdGhlIGBzY3Jv
bGxUb3BgIChhbiBhdXRvbWF0aWMgc2Nyb2xsIGF3YXJlIERPTSkuXG5cdCAqIC0gKEZ1dHVyZSB1
c2UgY2FzZSk6IExheW91dCBjYWxjdWxhdGlvbnMgYmVmb3JlIGFuZCBhZnRlciBET00gdXBkYXRl
cy5cblx0ICpcblx0ICogVHJhbnNhY3Rpb25hbCBwbHVnaW4gQVBJOlxuXHQgKiAtIEEgbW9kdWxl
IHRoYXQgaGFzIGFuIGBpbml0aWFsaXplYCBtZXRob2QgdGhhdCByZXR1cm5zIGFueSBwcmVjb21w
dXRhdGlvbi5cblx0ICogLSBhbmQgYSBgY2xvc2VgIG1ldGhvZCB0aGF0IGFjY2VwdHMgdGhlIHBy
ZWNvbXB1dGF0aW9uLiBgY2xvc2VgIGlzIGludm9rZWRcblx0ICogICB3aGVuIHRoZSB3cmFwcGVk
IHByb2Nlc3MgaXMgY29tcGxldGVkLCBvciBoYXMgZmFpbGVkLlxuXHQgKlxuXHQgKiBAcGFyYW0g
e0FycmF5PFRyYW5zYWN0aW9uYWxXcmFwcGVyPn0gdHJhbnNhY3Rpb25XcmFwcGVyIFdyYXBwZXIg
bW9kdWxlc1xuXHQgKiB0aGF0IGltcGxlbWVudCBgaW5pdGlhbGl6ZWAgYW5kIGBjbG9zZWAuXG5c
dCAqIEByZXR1cm4ge1RyYW5zYWN0aW9ufSBTaW5nbGUgdHJhbnNhY3Rpb24gZm9yIHJldXNlIGlu
IHRocmVhZC5cblx0ICpcblx0ICogQGNsYXNzIFRyYW5zYWN0aW9uXG5cdCAqL1xuXHR2YXIgVHJh
bnNhY3Rpb25JbXBsID0ge1xuXHQgIC8qKlxuXHQgICAqIFNldHMgdXAgdGhpcyBpbnN0YW5jZSBz
byB0aGF0IGl0IGlzIHByZXBhcmVkIGZvciBjb2xsZWN0aW5nIG1ldHJpY3MuIERvZXNcblx0ICAg
KiBzbyBzdWNoIHRoYXQgdGhpcyBzZXR1cCBtZXRob2QgbWF5IGJlIHVzZWQgb24gYW4gaW5zdGFu
Y2UgdGhhdCBpcyBhbHJlYWR5XG5cdCAgICogaW5pdGlhbGl6ZWQsIGluIGEgd2F5IHRoYXQgZG9l
cyBub3QgY29uc3VtZSBhZGRpdGlvbmFsIG1lbW9yeSB1cG9uIHJldXNlLlxuXHQgICAqIFRoYXQg
Y2FuIGJlIHVzZWZ1bCBpZiB5b3UgZGVjaWRlIHRvIG1ha2UgeW91ciBzdWJjbGFzcyBvZiB0aGlz
IG1peGluIGFcblx0ICAgKiBcIlBvb2xlZENsYXNzXCIuXG5cdCAgICovXG5cdCAgcmVpbml0aWFs
aXplVHJhbnNhY3Rpb246IGZ1bmN0aW9uICgpIHtcblx0ICAgIHRoaXMudHJhbnNhY3Rpb25XcmFw
cGVycyA9IHRoaXMuZ2V0VHJhbnNhY3Rpb25XcmFwcGVycygpO1xuXHQgICAgaWYgKHRoaXMud3Jh
cHBlckluaXREYXRhKSB7XG5cdCAgICAgIHRoaXMud3JhcHBlckluaXREYXRhLmxlbmd0aCA9IDA7
XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB0aGlzLndyYXBwZXJJbml0RGF0YSA9IFtdO1xuXHQg
ICAgfVxuXHQgICAgdGhpcy5faXNJblRyYW5zYWN0aW9uID0gZmFsc2U7XG5cdCAgfSxcblx0XG5c
dCAgX2lzSW5UcmFuc2FjdGlvbjogZmFsc2UsXG5cdFxuXHQgIC8qKlxuXHQgICAqIEBhYnN0cmFj
dFxuXHQgICAqIEByZXR1cm4ge0FycmF5PFRyYW5zYWN0aW9uV3JhcHBlcj59IEFycmF5IG9mIHRy
YW5zYWN0aW9uIHdyYXBwZXJzLlxuXHQgICAqL1xuXHQgIGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6
IG51bGwsXG5cdFxuXHQgIGlzSW5UcmFuc2FjdGlvbjogZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0
dXJuICEhdGhpcy5faXNJblRyYW5zYWN0aW9uO1xuXHQgIH0sXG5cdFxuXHQgIC8qIGVzbGludC1k
aXNhYmxlIHNwYWNlLWJlZm9yZS1mdW5jdGlvbi1wYXJlbiAqL1xuXHRcblx0ICAvKipcblx0ICAg
KiBFeGVjdXRlcyB0aGUgZnVuY3Rpb24gd2l0aGluIGEgc2FmZXR5IHdpbmRvdy4gVXNlIHRoaXMg
Zm9yIHRoZSB0b3AgbGV2ZWxcblx0ICAgKiBtZXRob2RzIHRoYXQgcmVzdWx0IGluIGxhcmdlIGFt
b3VudHMgb2YgY29tcHV0YXRpb24vbXV0YXRpb25zIHRoYXQgd291bGRcblx0ICAgKiBuZWVkIHRv
IGJlIHNhZmV0eSBjaGVja2VkLiBUaGUgb3B0aW9uYWwgYXJndW1lbnRzIGhlbHBzIHByZXZlbnQg
dGhlIG5lZWRcblx0ICAgKiB0byBiaW5kIGluIG1hbnkgY2FzZXMuXG5cdCAgICpcblx0ICAgKiBA
cGFyYW0ge2Z1bmN0aW9ufSBtZXRob2QgTWVtYmVyIG9mIHNjb3BlIHRvIGNhbGwuXG5cdCAgICog
QHBhcmFtIHtPYmplY3R9IHNjb3BlIFNjb3BlIHRvIGludm9rZSBmcm9tLlxuXHQgICAqIEBwYXJh
bSB7T2JqZWN0Pz19IGEgQXJndW1lbnQgdG8gcGFzcyB0byB0aGUgbWV0aG9kLlxuXHQgICAqIEBw
YXJhbSB7T2JqZWN0Pz19IGIgQXJndW1lbnQgdG8gcGFzcyB0byB0aGUgbWV0aG9kLlxuXHQgICAq
IEBwYXJhbSB7T2JqZWN0Pz19IGMgQXJndW1lbnQgdG8gcGFzcyB0byB0aGUgbWV0aG9kLlxuXHQg
ICAqIEBwYXJhbSB7T2JqZWN0Pz19IGQgQXJndW1lbnQgdG8gcGFzcyB0byB0aGUgbWV0aG9kLlxu
XHQgICAqIEBwYXJhbSB7T2JqZWN0Pz19IGUgQXJndW1lbnQgdG8gcGFzcyB0byB0aGUgbWV0aG9k
LlxuXHQgICAqIEBwYXJhbSB7T2JqZWN0Pz19IGYgQXJndW1lbnQgdG8gcGFzcyB0byB0aGUgbWV0
aG9kLlxuXHQgICAqXG5cdCAgICogQHJldHVybiB7Kn0gUmV0dXJuIHZhbHVlIGZyb20gYG1ldGhv
ZGAuXG5cdCAgICovXG5cdCAgcGVyZm9ybTogZnVuY3Rpb24gKG1ldGhvZCwgc2NvcGUsIGEsIGIs
IGMsIGQsIGUsIGYpIHtcblx0ICAgIC8qIGVzbGludC1lbmFibGUgc3BhY2UtYmVmb3JlLWZ1bmN0
aW9uLXBhcmVuICovXG5cdCAgICAhIXRoaXMuaXNJblRyYW5zYWN0aW9uKCkgPyAgZmFsc2UgPyBp
bnZhcmlhbnQoZmFsc2UsICdUcmFuc2FjdGlvbi5wZXJmb3JtKC4uLik6IENhbm5vdCBpbml0aWFs
aXplIGEgdHJhbnNhY3Rpb24gd2hlbiB0aGVyZSBpcyBhbHJlYWR5IGFuIG91dHN0YW5kaW5nIHRy
YW5zYWN0aW9uLicpIDogX3Byb2RJbnZhcmlhbnQoJzI3JykgOiB2b2lkIDA7XG5cdCAgICB2YXIg
ZXJyb3JUaHJvd247XG5cdCAgICB2YXIgcmV0O1xuXHQgICAgdHJ5IHtcblx0ICAgICAgdGhpcy5f
aXNJblRyYW5zYWN0aW9uID0gdHJ1ZTtcblx0ICAgICAgLy8gQ2F0Y2hpbmcgZXJyb3JzIG1ha2Vz
IGRlYnVnZ2luZyBtb3JlIGRpZmZpY3VsdCwgc28gd2Ugc3RhcnQgd2l0aFxuXHQgICAgICAvLyBl
cnJvclRocm93biBzZXQgdG8gdHJ1ZSBiZWZvcmUgc2V0dGluZyBpdCB0byBmYWxzZSBhZnRlciBj
YWxsaW5nXG5cdCAgICAgIC8vIGNsb3NlIC0tIGlmIGl0J3Mgc3RpbGwgc2V0IHRvIHRydWUgaW4g
dGhlIGZpbmFsbHkgYmxvY2ssIGl0IG1lYW5zXG5cdCAgICAgIC8vIG9uZSBvZiB0aGVzZSBjYWxs
cyB0aHJldy5cblx0ICAgICAgZXJyb3JUaHJvd24gPSB0cnVlO1xuXHQgICAgICB0aGlzLmluaXRp
YWxpemVBbGwoMCk7XG5cdCAgICAgIHJldCA9IG1ldGhvZC5jYWxsKHNjb3BlLCBhLCBiLCBjLCBk
LCBlLCBmKTtcblx0ICAgICAgZXJyb3JUaHJvd24gPSBmYWxzZTtcblx0ICAgIH0gZmluYWxseSB7
XG5cdCAgICAgIHRyeSB7XG5cdCAgICAgICAgaWYgKGVycm9yVGhyb3duKSB7XG5cdCAgICAgICAg
ICAvLyBJZiBgbWV0aG9kYCB0aHJvd3MsIHByZWZlciB0byBzaG93IHRoYXQgc3RhY2sgdHJhY2Ug
b3ZlciBhbnkgdGhyb3duXG5cdCAgICAgICAgICAvLyBieSBpbnZva2luZyBgY2xvc2VBbGxgLlxu
XHQgICAgICAgICAgdHJ5IHtcblx0ICAgICAgICAgICAgdGhpcy5jbG9zZUFsbCgwKTtcblx0ICAg
ICAgICAgIH0gY2F0Y2ggKGVycikge31cblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAg
Ly8gU2luY2UgYG1ldGhvZGAgZGlkbid0IHRocm93LCB3ZSBkb24ndCB3YW50IHRvIHNpbGVuY2Ug
dGhlIGV4Y2VwdGlvblxuXHQgICAgICAgICAgLy8gaGVyZS5cblx0ICAgICAgICAgIHRoaXMuY2xv
c2VBbGwoMCk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9IGZpbmFsbHkge1xuXHQgICAgICAgIHRo
aXMuX2lzSW5UcmFuc2FjdGlvbiA9IGZhbHNlO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICBy
ZXR1cm4gcmV0O1xuXHQgIH0sXG5cdFxuXHQgIGluaXRpYWxpemVBbGw6IGZ1bmN0aW9uIChzdGFy
dEluZGV4KSB7XG5cdCAgICB2YXIgdHJhbnNhY3Rpb25XcmFwcGVycyA9IHRoaXMudHJhbnNhY3Rp
b25XcmFwcGVycztcblx0ICAgIGZvciAodmFyIGkgPSBzdGFydEluZGV4OyBpIDwgdHJhbnNhY3Rp
b25XcmFwcGVycy5sZW5ndGg7IGkrKykge1xuXHQgICAgICB2YXIgd3JhcHBlciA9IHRyYW5zYWN0
aW9uV3JhcHBlcnNbaV07XG5cdCAgICAgIHRyeSB7XG5cdCAgICAgICAgLy8gQ2F0Y2hpbmcgZXJy
b3JzIG1ha2VzIGRlYnVnZ2luZyBtb3JlIGRpZmZpY3VsdCwgc28gd2Ugc3RhcnQgd2l0aCB0aGVc
blx0ICAgICAgICAvLyBPQlNFUlZFRF9FUlJPUiBzdGF0ZSBiZWZvcmUgb3ZlcndyaXRpbmcgaXQg
d2l0aCB0aGUgcmVhbCByZXR1cm4gdmFsdWVcblx0ICAgICAgICAvLyBvZiBpbml0aWFsaXplIC0t
IGlmIGl0J3Mgc3RpbGwgc2V0IHRvIE9CU0VSVkVEX0VSUk9SIGluIHRoZSBmaW5hbGx5XG5cdCAg
ICAgICAgLy8gYmxvY2ssIGl0IG1lYW5zIHdyYXBwZXIuaW5pdGlhbGl6ZSB0aHJldy5cblx0ICAg
ICAgICB0aGlzLndyYXBwZXJJbml0RGF0YVtpXSA9IE9CU0VSVkVEX0VSUk9SO1xuXHQgICAgICAg
IHRoaXMud3JhcHBlckluaXREYXRhW2ldID0gd3JhcHBlci5pbml0aWFsaXplID8gd3JhcHBlci5p
bml0aWFsaXplLmNhbGwodGhpcykgOiBudWxsO1xuXHQgICAgICB9IGZpbmFsbHkge1xuXHQgICAg
ICAgIGlmICh0aGlzLndyYXBwZXJJbml0RGF0YVtpXSA9PT0gT0JTRVJWRURfRVJST1IpIHtcblx0
ICAgICAgICAgIC8vIFRoZSBpbml0aWFsaXplciBmb3Igd3JhcHBlciBpIHRocmV3IGFuIGVycm9y
OyBpbml0aWFsaXplIHRoZVxuXHQgICAgICAgICAgLy8gcmVtYWluaW5nIHdyYXBwZXJzIGJ1dCBz
aWxlbmNlIGFueSBleGNlcHRpb25zIGZyb20gdGhlbSB0byBlbnN1cmVcblx0ICAgICAgICAgIC8v
IHRoYXQgdGhlIGZpcnN0IGVycm9yIGlzIHRoZSBvbmUgdG8gYnViYmxlIHVwLlxuXHQgICAgICAg
ICAgdHJ5IHtcblx0ICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplQWxsKGkgKyAxKTtcblx0ICAg
ICAgICAgIH0gY2F0Y2ggKGVycikge31cblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH1c
blx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBJbnZva2VzIGVhY2ggb2YgYHRoaXMudHJhbnNh
Y3Rpb25XcmFwcGVycy5jbG9zZVtpXWAgZnVuY3Rpb25zLCBwYXNzaW5nIGludG9cblx0ICAgKiB0
aGVtIHRoZSByZXNwZWN0aXZlIHJldHVybiB2YWx1ZXMgb2YgYHRoaXMudHJhbnNhY3Rpb25XcmFw
cGVycy5pbml0W2ldYFxuXHQgICAqIChgY2xvc2VgcnMgdGhhdCBjb3JyZXNwb25kIHRvIGluaXRp
YWxpemVycyB0aGF0IGZhaWxlZCB3aWxsIG5vdCBiZVxuXHQgICAqIGludm9rZWQpLlxuXHQgICAq
L1xuXHQgIGNsb3NlQWxsOiBmdW5jdGlvbiAoc3RhcnRJbmRleCkge1xuXHQgICAgIXRoaXMuaXNJ
blRyYW5zYWN0aW9uKCkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdUcmFuc2FjdGlvbi5j
bG9zZUFsbCgpOiBDYW5ub3QgY2xvc2UgdHJhbnNhY3Rpb24gd2hlbiBub25lIGFyZSBvcGVuLicp
IDogX3Byb2RJbnZhcmlhbnQoJzI4JykgOiB2b2lkIDA7XG5cdCAgICB2YXIgdHJhbnNhY3Rpb25X
cmFwcGVycyA9IHRoaXMudHJhbnNhY3Rpb25XcmFwcGVycztcblx0ICAgIGZvciAodmFyIGkgPSBz
dGFydEluZGV4OyBpIDwgdHJhbnNhY3Rpb25XcmFwcGVycy5sZW5ndGg7IGkrKykge1xuXHQgICAg
ICB2YXIgd3JhcHBlciA9IHRyYW5zYWN0aW9uV3JhcHBlcnNbaV07XG5cdCAgICAgIHZhciBpbml0
RGF0YSA9IHRoaXMud3JhcHBlckluaXREYXRhW2ldO1xuXHQgICAgICB2YXIgZXJyb3JUaHJvd247
XG5cdCAgICAgIHRyeSB7XG5cdCAgICAgICAgLy8gQ2F0Y2hpbmcgZXJyb3JzIG1ha2VzIGRlYnVn
Z2luZyBtb3JlIGRpZmZpY3VsdCwgc28gd2Ugc3RhcnQgd2l0aFxuXHQgICAgICAgIC8vIGVycm9y
VGhyb3duIHNldCB0byB0cnVlIGJlZm9yZSBzZXR0aW5nIGl0IHRvIGZhbHNlIGFmdGVyIGNhbGxp
bmdcblx0ICAgICAgICAvLyBjbG9zZSAtLSBpZiBpdCdzIHN0aWxsIHNldCB0byB0cnVlIGluIHRo
ZSBmaW5hbGx5IGJsb2NrLCBpdCBtZWFuc1xuXHQgICAgICAgIC8vIHdyYXBwZXIuY2xvc2UgdGhy
ZXcuXG5cdCAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlO1xuXHQgICAgICAgIGlmIChpbml0RGF0
YSAhPT0gT0JTRVJWRURfRVJST1IgJiYgd3JhcHBlci5jbG9zZSkge1xuXHQgICAgICAgICAgd3Jh
cHBlci5jbG9zZS5jYWxsKHRoaXMsIGluaXREYXRhKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAg
ZXJyb3JUaHJvd24gPSBmYWxzZTtcblx0ICAgICAgfSBmaW5hbGx5IHtcblx0ICAgICAgICBpZiAo
ZXJyb3JUaHJvd24pIHtcblx0ICAgICAgICAgIC8vIFRoZSBjbG9zZXIgZm9yIHdyYXBwZXIgaSB0
aHJldyBhbiBlcnJvcjsgY2xvc2UgdGhlIHJlbWFpbmluZ1xuXHQgICAgICAgICAgLy8gd3JhcHBl
cnMgYnV0IHNpbGVuY2UgYW55IGV4Y2VwdGlvbnMgZnJvbSB0aGVtIHRvIGVuc3VyZSB0aGF0IHRo
ZVxuXHQgICAgICAgICAgLy8gZmlyc3QgZXJyb3IgaXMgdGhlIG9uZSB0byBidWJibGUgdXAuXG5c
dCAgICAgICAgICB0cnkge1xuXHQgICAgICAgICAgICB0aGlzLmNsb3NlQWxsKGkgKyAxKTtcblx0
ICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9
XG5cdCAgICB0aGlzLndyYXBwZXJJbml0RGF0YS5sZW5ndGggPSAwO1xuXHQgIH1cblx0fTtcblx0
XG5cdG1vZHVsZS5leHBvcnRzID0gVHJhbnNhY3Rpb25JbXBsO1xuXG4vKioqLyB9LFxuLyogMjgg
Ki9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5
cmlnaHQgMjAxNi1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5c
dCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBCYXNlZCBvbiB0aGUgZXNjYXBlLWh0bWwg
bGlicmFyeSwgd2hpY2ggaXMgdXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UgYmVsb3c6XG5cdCAq
XG5cdCAqIENvcHlyaWdodCAoYykgMjAxMi0yMDEzIFRKIEhvbG93YXljaHVrXG5cdCAqIENvcHly
aWdodCAoYykgMjAxNSBBbmRyZWFzIEx1YmJlXG5cdCAqIENvcHlyaWdodCAoYykgMjAxNSBUaWFu
Y2hlbmcgXCJUaW1vdGh5XCIgR3Vcblx0ICpcblx0ICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3Jh
bnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nXG5cdCAqIGEgY29w
eSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRo
ZVxuXHQgKiAnU29mdHdhcmUnKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0
cmljdGlvbiwgaW5jbHVkaW5nXG5cdCAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRv
IHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcblx0ICogZGlzdHJpYnV0ZSwgc3Vi
bGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvXG5cdCAq
IHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBz
bywgc3ViamVjdCB0b1xuXHQgKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG5cdCAqXG5cdCAq
IFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNo
YWxsIGJlXG5cdCAqIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlv
bnMgb2YgdGhlIFNvZnR3YXJlLlxuXHQgKlxuXHQgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQg
J0FTIElTJywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCxcblx0ICogRVhQUkVTUyBPUiBJ
TVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG5c
dCAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5E
IE5PTklORlJJTkdFTUVOVC5cblx0ICogSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1Ig
Q09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTllcblx0ICogQ0xBSU0sIERBTUFHRVMg
T1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCxcblx0
ICogVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJ
T04gV0lUSCBUSEVcblx0ICogU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJ
TiBUSEUgU09GVFdBUkUuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0
Ly8gY29kZSBjb3BpZWQgYW5kIG1vZGlmaWVkIGZyb20gZXNjYXBlLWh0bWxcblx0LyoqXG5cdCAq
IE1vZHVsZSB2YXJpYWJsZXMuXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRcblx0dmFyIG1hdGNo
SHRtbFJlZ0V4cCA9IC9bXCInJjw+XS87XG5cdFxuXHQvKipcblx0ICogRXNjYXBlIHNwZWNpYWwg
Y2hhcmFjdGVycyBpbiB0aGUgZ2l2ZW4gc3RyaW5nIG9mIGh0bWwuXG5cdCAqXG5cdCAqIEBwYXJh
bSAge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8gZXNjYXBlIGZvciBpbnNlcnRpbmcgaW50
byBIVE1MXG5cdCAqIEByZXR1cm4ge3N0cmluZ31cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0XG5c
dGZ1bmN0aW9uIGVzY2FwZUh0bWwoc3RyaW5nKSB7XG5cdCAgdmFyIHN0ciA9ICcnICsgc3RyaW5n
O1xuXHQgIHZhciBtYXRjaCA9IG1hdGNoSHRtbFJlZ0V4cC5leGVjKHN0cik7XG5cdFxuXHQgIGlm
ICghbWF0Y2gpIHtcblx0ICAgIHJldHVybiBzdHI7XG5cdCAgfVxuXHRcblx0ICB2YXIgZXNjYXBl
O1xuXHQgIHZhciBodG1sID0gJyc7XG5cdCAgdmFyIGluZGV4ID0gMDtcblx0ICB2YXIgbGFzdElu
ZGV4ID0gMDtcblx0XG5cdCAgZm9yIChpbmRleCA9IG1hdGNoLmluZGV4OyBpbmRleCA8IHN0ci5s
ZW5ndGg7IGluZGV4KyspIHtcblx0ICAgIHN3aXRjaCAoc3RyLmNoYXJDb2RlQXQoaW5kZXgpKSB7
XG5cdCAgICAgIGNhc2UgMzQ6XG5cdCAgICAgICAgLy8gXCJcblx0ICAgICAgICBlc2NhcGUgPSAn
JnF1b3Q7Jztcblx0ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSAzODpcblx0ICAgICAgICAv
LyAmXG5cdCAgICAgICAgZXNjYXBlID0gJyZhbXA7Jztcblx0ICAgICAgICBicmVhaztcblx0ICAg
ICAgY2FzZSAzOTpcblx0ICAgICAgICAvLyAnXG5cdCAgICAgICAgZXNjYXBlID0gJyYjeDI3Oyc7
IC8vIG1vZGlmaWVkIGZyb20gZXNjYXBlLWh0bWw7IHVzZWQgdG8gYmUgJyYjMzknXG5cdCAgICAg
ICAgYnJlYWs7XG5cdCAgICAgIGNhc2UgNjA6XG5cdCAgICAgICAgLy8gPFxuXHQgICAgICAgIGVz
Y2FwZSA9ICcmbHQ7Jztcblx0ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSA2Mjpcblx0ICAg
ICAgICAvLyA+XG5cdCAgICAgICAgZXNjYXBlID0gJyZndDsnO1xuXHQgICAgICAgIGJyZWFrO1xu
XHQgICAgICBkZWZhdWx0OlxuXHQgICAgICAgIGNvbnRpbnVlO1xuXHQgICAgfVxuXHRcblx0ICAg
IGlmIChsYXN0SW5kZXggIT09IGluZGV4KSB7XG5cdCAgICAgIGh0bWwgKz0gc3RyLnN1YnN0cmlu
ZyhsYXN0SW5kZXgsIGluZGV4KTtcblx0ICAgIH1cblx0XG5cdCAgICBsYXN0SW5kZXggPSBpbmRl
eCArIDE7XG5cdCAgICBodG1sICs9IGVzY2FwZTtcblx0ICB9XG5cdFxuXHQgIHJldHVybiBsYXN0
SW5kZXggIT09IGluZGV4ID8gaHRtbCArIHN0ci5zdWJzdHJpbmcobGFzdEluZGV4LCBpbmRleCkg
OiBodG1sO1xuXHR9XG5cdC8vIGVuZCBjb2RlIGNvcGllZCBhbmQgbW9kaWZpZWQgZnJvbSBlc2Nh
cGUtaHRtbFxuXHRcblx0LyoqXG5cdCAqIEVzY2FwZXMgdGV4dCB0byBwcmV2ZW50IHNjcmlwdGlu
ZyBhdHRhY2tzLlxuXHQgKlxuXHQgKiBAcGFyYW0geyp9IHRleHQgVGV4dCB2YWx1ZSB0byBlc2Nh
cGUuXG5cdCAqIEByZXR1cm4ge3N0cmluZ30gQW4gZXNjYXBlZCBzdHJpbmcuXG5cdCAqL1xuXHRm
dW5jdGlvbiBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIodGV4dCkge1xuXHQgIGlmICh0eXBl
b2YgdGV4dCA9PT0gJ2Jvb2xlYW4nIHx8IHR5cGVvZiB0ZXh0ID09PSAnbnVtYmVyJykge1xuXHQg
ICAgLy8gdGhpcyBzaG9ydGNpcmN1aXQgaGVscHMgcGVyZiBmb3IgdHlwZXMgdGhhdCB3ZSBrbm93
IHdpbGwgbmV2ZXIgaGF2ZVxuXHQgICAgLy8gc3BlY2lhbCBjaGFyYWN0ZXJzLCBlc3BlY2lhbGx5
IGdpdmVuIHRoYXQgdGhpcyBmdW5jdGlvbiBpcyB1c2VkIG9mdGVuXG5cdCAgICAvLyBmb3IgbnVt
ZXJpYyBkb20gaWRzLlxuXHQgICAgcmV0dXJuICcnICsgdGV4dDtcblx0ICB9XG5cdCAgcmV0dXJu
IGVzY2FwZUh0bWwodGV4dCk7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZXNjYXBlVGV4
dENvbnRlbnRGb3JCcm93c2VyO1xuXG4vKioqLyB9LFxuLyogMjkgKi9cbi8qKiovIGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztc
blx0XG5cdHZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9fd2VicGFja19yZXF1aXJlX18oNik7
XG5cdHZhciBET01OYW1lc3BhY2VzID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNSk7XG5cdFxuXHR2
YXIgV0hJVEVTUEFDRV9URVNUID0gL15bIFxcclxcblxcdFxcZl0vO1xuXHR2YXIgTk9OVklTSUJM
RV9URVNUID0gLzwoIS0tfGxpbmt8bm9zY3JpcHR8bWV0YXxzY3JpcHR8c3R5bGUpWyBcXHJcXG5c
XHRcXGZcXC8+XS87XG5cdFxuXHR2YXIgY3JlYXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlv
biA9IF9fd2VicGFja19yZXF1aXJlX18oNDMpO1xuXHRcblx0Ly8gU1ZHIHRlbXAgY29udGFpbmVy
IGZvciBJRSBsYWNraW5nIGlubmVySFRNTFxuXHR2YXIgcmV1c2FibGVTVkdDb250YWluZXI7XG5c
dFxuXHQvKipcblx0ICogU2V0IHRoZSBpbm5lckhUTUwgcHJvcGVydHkgb2YgYSBub2RlLCBlbnN1
cmluZyB0aGF0IHdoaXRlc3BhY2UgaXMgcHJlc2VydmVkXG5cdCAqIGV2ZW4gaW4gSUU4LlxuXHQg
KlxuXHQgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVcblx0ICogQHBhcmFtIHtzdHJpbmd9IGh0
bWxcblx0ICogQGludGVybmFsXG5cdCAqL1xuXHR2YXIgc2V0SW5uZXJIVE1MID0gY3JlYXRlTWlj
cm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbihmdW5jdGlvbiAobm9kZSwgaHRtbCkge1xuXHQgIC8v
IElFIGRvZXMgbm90IGhhdmUgaW5uZXJIVE1MIGZvciBTVkcgbm9kZXMsIHNvIGluc3RlYWQgd2Ug
aW5qZWN0IHRoZVxuXHQgIC8vIG5ldyBtYXJrdXAgaW4gYSB0ZW1wIG5vZGUgYW5kIHRoZW4gbW92
ZSB0aGUgY2hpbGQgbm9kZXMgYWNyb3NzIGludG9cblx0ICAvLyB0aGUgdGFyZ2V0IG5vZGVcblx0
ICBpZiAobm9kZS5uYW1lc3BhY2VVUkkgPT09IERPTU5hbWVzcGFjZXMuc3ZnICYmICEoJ2lubmVy
SFRNTCcgaW4gbm9kZSkpIHtcblx0ICAgIHJldXNhYmxlU1ZHQ29udGFpbmVyID0gcmV1c2FibGVT
VkdDb250YWluZXIgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdCAgICByZXVz
YWJsZVNWR0NvbnRhaW5lci5pbm5lckhUTUwgPSAnPHN2Zz4nICsgaHRtbCArICc8L3N2Zz4nO1xu
XHQgICAgdmFyIHN2Z05vZGUgPSByZXVzYWJsZVNWR0NvbnRhaW5lci5maXJzdENoaWxkO1xuXHQg
ICAgd2hpbGUgKHN2Z05vZGUuZmlyc3RDaGlsZCkge1xuXHQgICAgICBub2RlLmFwcGVuZENoaWxk
KHN2Z05vZGUuZmlyc3RDaGlsZCk7XG5cdCAgICB9XG5cdCAgfSBlbHNlIHtcblx0ICAgIG5vZGUu
aW5uZXJIVE1MID0gaHRtbDtcblx0ICB9XG5cdH0pO1xuXHRcblx0aWYgKEV4ZWN1dGlvbkVudmly
b25tZW50LmNhblVzZURPTSkge1xuXHQgIC8vIElFODogV2hlbiB1cGRhdGluZyBhIGp1c3QgY3Jl
YXRlZCBub2RlIHdpdGggaW5uZXJIVE1MIG9ubHkgbGVhZGluZ1xuXHQgIC8vIHdoaXRlc3BhY2Ug
aXMgcmVtb3ZlZC4gV2hlbiB1cGRhdGluZyBhbiBleGlzdGluZyBub2RlIHdpdGggaW5uZXJIVE1M
XG5cdCAgLy8gd2hpdGVzcGFjZSBpbiByb290IFRleHROb2RlcyBpcyBhbHNvIGNvbGxhcHNlZC5c
blx0ICAvLyBAc2VlIHF1aXJrc21vZGUub3JnL2J1Z3JlcG9ydHMvYXJjaGl2ZXMvMjAwNC8xMS9p
bm5lcmh0bWxfYW5kX3QuaHRtbFxuXHRcblx0ICAvLyBGZWF0dXJlIGRldGVjdGlvbjsgb25seSBJ
RTggaXMga25vd24gdG8gYmVoYXZlIGltcHJvcGVybHkgbGlrZSB0aGlzLlxuXHQgIHZhciB0ZXN0
RWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHQgIHRlc3RFbGVtZW50
LmlubmVySFRNTCA9ICcgJztcblx0ICBpZiAodGVzdEVsZW1lbnQuaW5uZXJIVE1MID09PSAnJykg
e1xuXHQgICAgc2V0SW5uZXJIVE1MID0gZnVuY3Rpb24gKG5vZGUsIGh0bWwpIHtcblx0ICAgICAg
Ly8gTWFnaWMgdGhlb3J5OiBJRTggc3VwcG9zZWRseSBkaWZmZXJlbnRpYXRlcyBiZXR3ZWVuIGFk
ZGVkIGFuZCB1cGRhdGVkXG5cdCAgICAgIC8vIG5vZGVzIHdoZW4gcHJvY2Vzc2luZyBpbm5lckhU
TUwsIGlubmVySFRNTCBvbiB1cGRhdGVkIG5vZGVzIHN1ZmZlcnNcblx0ICAgICAgLy8gZnJvbSB3
b3JzZSB3aGl0ZXNwYWNlIGJlaGF2aW9yLiBSZS1hZGRpbmcgYSBub2RlIGxpa2UgdGhpcyB0cmln
Z2Vyc1xuXHQgICAgICAvLyB0aGUgaW5pdGlhbCBhbmQgbW9yZSBmYXZvcmFibGUgd2hpdGVzcGFj
ZSBiZWhhdmlvci5cblx0ICAgICAgLy8gVE9ETzogV2hhdCB0byBkbyBvbiBhIGRldGFjaGVkIG5v
ZGU/XG5cdCAgICAgIGlmIChub2RlLnBhcmVudE5vZGUpIHtcblx0ICAgICAgICBub2RlLnBhcmVu
dE5vZGUucmVwbGFjZUNoaWxkKG5vZGUsIG5vZGUpO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICAv
LyBXZSBhbHNvIGltcGxlbWVudCBhIHdvcmthcm91bmQgZm9yIG5vbi12aXNpYmxlIHRhZ3MgZGlz
YXBwZWFyaW5nIGludG9cblx0ICAgICAgLy8gdGhpbiBhaXIgb24gSUU4LCB0aGlzIG9ubHkgaGFw
cGVucyBpZiB0aGVyZSBpcyBubyB2aXNpYmxlIHRleHRcblx0ICAgICAgLy8gaW4tZnJvbnQgb2Yg
dGhlIG5vbi12aXNpYmxlIHRhZ3MuIFBpZ2d5YmFjayBvbiB0aGUgd2hpdGVzcGFjZSBmaXhcblx0
ICAgICAgLy8gYW5kIHNpbXBseSBjaGVjayBpZiBhbnkgbm9uLXZpc2libGUgdGFncyBhcHBlYXIg
aW4gdGhlIHNvdXJjZS5cblx0ICAgICAgaWYgKFdISVRFU1BBQ0VfVEVTVC50ZXN0KGh0bWwpIHx8
IGh0bWxbMF0gPT09ICc8JyAmJiBOT05WSVNJQkxFX1RFU1QudGVzdChodG1sKSkge1xuXHQgICAg
ICAgIC8vIFJlY292ZXIgbGVhZGluZyB3aGl0ZXNwYWNlIGJ5IHRlbXBvcmFyaWx5IHByZXBlbmRp
bmcgYW55IGNoYXJhY3Rlci5cblx0ICAgICAgICAvLyBcXHVGRUZGIGhhcyB0aGUgcG90ZW50aWFs
IGFkdmFudGFnZSBvZiBiZWluZyB6ZXJvLXdpZHRoL2ludmlzaWJsZS5cblx0ICAgICAgICAvLyBV
Z2xpZnlKUyBkcm9wcyBVK0ZFRkYgY2hhcnMgd2hlbiBwYXJzaW5nLCBzbyB1c2UgU3RyaW5nLmZy
b21DaGFyQ29kZVxuXHQgICAgICAgIC8vIGluIGhvcGVzIHRoYXQgdGhpcyBpcyBwcmVzZXJ2ZWQg
ZXZlbiBpZiBcIlxcdUZFRkZcIiBpcyB0cmFuc2Zvcm1lZCB0b1xuXHQgICAgICAgIC8vIHRoZSBh
Y3R1YWwgVW5pY29kZSBjaGFyYWN0ZXIgKGJ5IEJhYmVsLCBmb3IgZXhhbXBsZSkuXG5cdCAgICAg
ICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21pc2hvby9VZ2xpZnlKUzIvYmxvYi92Mi40LjIwL2xp
Yi9wYXJzZS5qcyNMMjE2XG5cdCAgICAgICAgbm9kZS5pbm5lckhUTUwgPSBTdHJpbmcuZnJvbUNo
YXJDb2RlKDB4ZmVmZikgKyBodG1sO1xuXHRcblx0ICAgICAgICAvLyBkZWxldGVEYXRhIGxlYXZl
cyBhbiBlbXB0eSBgVGV4dE5vZGVgIHdoaWNoIG9mZnNldHMgdGhlIGluZGV4IG9mIGFsbFxuXHQg
ICAgICAgIC8vIGNoaWxkcmVuLiBEZWZpbml0ZWx5IHdhbnQgdG8gYXZvaWQgdGhpcy5cblx0ICAg
ICAgICB2YXIgdGV4dE5vZGUgPSBub2RlLmZpcnN0Q2hpbGQ7XG5cdCAgICAgICAgaWYgKHRleHRO
b2RlLmRhdGEubGVuZ3RoID09PSAxKSB7XG5cdCAgICAgICAgICBub2RlLnJlbW92ZUNoaWxkKHRl
eHROb2RlKTtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgdGV4dE5vZGUuZGVsZXRl
RGF0YSgwLCAxKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgbm9k
ZS5pbm5lckhUTUwgPSBodG1sO1xuXHQgICAgICB9XG5cdCAgICB9O1xuXHQgIH1cblx0ICB0ZXN0
RWxlbWVudCA9IG51bGw7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gc2V0SW5uZXJIVE1M
O1xuXG4vKioqLyB9LFxuLyogMzAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywg
X193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdGV4cG9ydHMu
X19lc01vZHVsZSA9IHRydWU7XG5cdGV4cG9ydHMuY29tcG9zZSA9IGV4cG9ydHMuYXBwbHlNaWRk
bGV3YXJlID0gZXhwb3J0cy5iaW5kQWN0aW9uQ3JlYXRvcnMgPSBleHBvcnRzLmNvbWJpbmVSZWR1
Y2VycyA9IGV4cG9ydHMuY3JlYXRlU3RvcmUgPSB1bmRlZmluZWQ7XG5cdFxuXHR2YXIgX2NyZWF0
ZVN0b3JlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5NSk7XG5cdFxuXHR2YXIgX2NyZWF0ZVN0b3Jl
MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NyZWF0ZVN0b3JlKTtcblx0XG5cdHZhciBfY29t
YmluZVJlZHVjZXJzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMjcpO1xuXHRcblx0dmFyIF9jb21i
aW5lUmVkdWNlcnMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29tYmluZVJlZHVjZXJzKTtc
blx0XG5cdHZhciBfYmluZEFjdGlvbkNyZWF0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMjYp
O1xuXHRcblx0dmFyIF9iaW5kQWN0aW9uQ3JlYXRvcnMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVs
dChfYmluZEFjdGlvbkNyZWF0b3JzKTtcblx0XG5cdHZhciBfYXBwbHlNaWRkbGV3YXJlID0gX193
ZWJwYWNrX3JlcXVpcmVfXygyMjUpO1xuXHRcblx0dmFyIF9hcHBseU1pZGRsZXdhcmUyID0gX2lu
dGVyb3BSZXF1aXJlRGVmYXVsdChfYXBwbHlNaWRkbGV3YXJlKTtcblx0XG5cdHZhciBfY29tcG9z
ZSA9IF9fd2VicGFja19yZXF1aXJlX18oOTQpO1xuXHRcblx0dmFyIF9jb21wb3NlMiA9IF9pbnRl
cm9wUmVxdWlyZURlZmF1bHQoX2NvbXBvc2UpO1xuXHRcblx0dmFyIF93YXJuaW5nID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg5Nik7XG5cdFxuXHR2YXIgX3dhcm5pbmcyID0gX2ludGVyb3BSZXF1aXJl
RGVmYXVsdChfd2FybmluZyk7XG5cdFxuXHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0
KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6
IG9iaiB9OyB9XG5cdFxuXHQvKlxuXHQqIFRoaXMgaXMgYSBkdW1teSBmdW5jdGlvbiB0byBjaGVj
ayBpZiB0aGUgZnVuY3Rpb24gbmFtZSBoYXMgYmVlbiBhbHRlcmVkIGJ5IG1pbmlmaWNhdGlvbi5c
blx0KiBJZiB0aGUgZnVuY3Rpb24gaGFzIGJlZW4gbWluaWZpZWQgYW5kIE5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicsIHdhcm4gdGhlIHVzZXIuXG5cdCovXG5cdGZ1bmN0aW9uIGlzQ3J1c2hlZCgp
IHt9XG5cdFxuXHRpZiAoZmFsc2UpIHtcblx0ICAoMCwgX3dhcm5pbmcyWydkZWZhdWx0J10pKCdZ
b3UgYXJlIGN1cnJlbnRseSB1c2luZyBtaW5pZmllZCBjb2RlIG91dHNpZGUgb2YgTk9ERV9FTlYg
PT09IFxcJ3Byb2R1Y3Rpb25cXCcuICcgKyAnVGhpcyBtZWFucyB0aGF0IHlvdSBhcmUgcnVubmlu
ZyBhIHNsb3dlciBkZXZlbG9wbWVudCBidWlsZCBvZiBSZWR1eC4gJyArICdZb3UgY2FuIHVzZSBs
b29zZS1lbnZpZnkgKGh0dHBzOi8vZ2l0aHViLmNvbS96ZXJ0b3NoL2xvb3NlLWVudmlmeSkgZm9y
IGJyb3dzZXJpZnkgJyArICdvciBEZWZpbmVQbHVnaW4gZm9yIHdlYnBhY2sgKGh0dHA6Ly9zdGFj
a292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzAwMzAwMzEpICcgKyAndG8gZW5zdXJlIHlvdSBoYXZl
IHRoZSBjb3JyZWN0IGNvZGUgZm9yIHlvdXIgcHJvZHVjdGlvbiBidWlsZC4nKTtcblx0fVxuXHRc
blx0ZXhwb3J0cy5jcmVhdGVTdG9yZSA9IF9jcmVhdGVTdG9yZTJbJ2RlZmF1bHQnXTtcblx0ZXhw
b3J0cy5jb21iaW5lUmVkdWNlcnMgPSBfY29tYmluZVJlZHVjZXJzMlsnZGVmYXVsdCddO1xuXHRl
eHBvcnRzLmJpbmRBY3Rpb25DcmVhdG9ycyA9IF9iaW5kQWN0aW9uQ3JlYXRvcnMyWydkZWZhdWx0
J107XG5cdGV4cG9ydHMuYXBwbHlNaWRkbGV3YXJlID0gX2FwcGx5TWlkZGxld2FyZTJbJ2RlZmF1
bHQnXTtcblx0ZXhwb3J0cy5jb21wb3NlID0gX2NvbXBvc2UyWydkZWZhdWx0J107XG5cbi8qKiov
IH0sXG4vKiAzMSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7XG5cblx0dmFyIF9fV0VCUEFDS19BTURfREVGSU5FX0FSUkFZX18sIF9fV0VC
UEFDS19BTURfREVGSU5FX1JFU1VMVF9fOy8qIVxuXHQgIENvcHlyaWdodCAoYykgMjAxNiBKZWQg
V2F0c29uLlxuXHQgIExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZSAoTUlUKSwgc2VlXG5c
dCAgaHR0cDovL2plZHdhdHNvbi5naXRodWIuaW8vY2xhc3NuYW1lc1xuXHQqL1xuXHQvKiBnbG9i
YWwgZGVmaW5lICovXG5cdFxuXHQoZnVuY3Rpb24gKCkge1xuXHRcdCd1c2Ugc3RyaWN0Jztcblx0
XG5cdFx0dmFyIGhhc093biA9IHt9Lmhhc093blByb3BlcnR5O1xuXHRcblx0XHRmdW5jdGlvbiBj
bGFzc05hbWVzICgpIHtcblx0XHRcdHZhciBjbGFzc2VzID0gW107XG5cdFxuXHRcdFx0Zm9yICh2
YXIgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0dmFyIGFyZyA9
IGFyZ3VtZW50c1tpXTtcblx0XHRcdFx0aWYgKCFhcmcpIGNvbnRpbnVlO1xuXHRcblx0XHRcdFx0
dmFyIGFyZ1R5cGUgPSB0eXBlb2YgYXJnO1xuXHRcblx0XHRcdFx0aWYgKGFyZ1R5cGUgPT09ICdz
dHJpbmcnIHx8IGFyZ1R5cGUgPT09ICdudW1iZXInKSB7XG5cdFx0XHRcdFx0Y2xhc3Nlcy5wdXNo
KGFyZyk7XG5cdFx0XHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG5cdFx0XHRc
dFx0Y2xhc3Nlcy5wdXNoKGNsYXNzTmFtZXMuYXBwbHkobnVsbCwgYXJnKSk7XG5cdFx0XHRcdH0g
ZWxzZSBpZiAoYXJnVHlwZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0XHRmb3IgKHZhciBrZXkg
aW4gYXJnKSB7XG5cdFx0XHRcdFx0XHRpZiAoaGFzT3duLmNhbGwoYXJnLCBrZXkpICYmIGFyZ1tr
ZXldKSB7XG5cdFx0XHRcdFx0XHRcdGNsYXNzZXMucHVzaChrZXkpO1xuXHRcdFx0XHRcdFx0fVxu
XHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcblx0XHRcdHJldHVybiBjbGFzc2Vz
LmpvaW4oJyAnKTtcblx0XHR9XG5cdFxuXHRcdGlmICh0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZp
bmVkJyAmJiBtb2R1bGUuZXhwb3J0cykge1xuXHRcdFx0bW9kdWxlLmV4cG9ydHMgPSBjbGFzc05h
bWVzO1xuXHRcdH0gZWxzZSBpZiAodHJ1ZSkge1xuXHRcdFx0Ly8gcmVnaXN0ZXIgYXMgJ2NsYXNz
bmFtZXMnLCBjb25zaXN0ZW50IHdpdGggbnBtIHBhY2thZ2UgbmFtZVxuXHRcdFx0IShfX1dFQlBB
Q0tfQU1EX0RFRklORV9BUlJBWV9fID0gW10sIF9fV0VCUEFDS19BTURfREVGSU5FX1JFU1VMVF9f
ID0gZnVuY3Rpb24gKCkge1xuXHRcdFx0XHRyZXR1cm4gY2xhc3NOYW1lcztcblx0XHRcdH0uYXBw
bHkoZXhwb3J0cywgX19XRUJQQUNLX0FNRF9ERUZJTkVfQVJSQVlfXyksIF9fV0VCUEFDS19BTURf
REVGSU5FX1JFU1VMVF9fICE9PSB1bmRlZmluZWQgJiYgKG1vZHVsZS5leHBvcnRzID0gX19XRUJQ
QUNLX0FNRF9ERUZJTkVfUkVTVUxUX18pKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0d2luZG93LmNs
YXNzTmFtZXMgPSBjbGFzc05hbWVzO1xuXHRcdH1cblx0fSgpKTtcblxuXG4vKioqLyB9LFxuLyog
MzIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBD
b3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0
cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogQHR5cGVjaGVja3Ncblx0ICog
XG5cdCAqL1xuXHRcblx0Lyplc2xpbnQtZGlzYWJsZSBuby1zZWxmLWNvbXBhcmUgKi9cblx0XG5c
dCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5
cGUuaGFzT3duUHJvcGVydHk7XG5cdFxuXHQvKipcblx0ICogaW5saW5lZCBPYmplY3QuaXMgcG9s
eWZpbGwgdG8gYXZvaWQgcmVxdWlyaW5nIGNvbnN1bWVycyBzaGlwIHRoZWlyIG93blxuXHQgKiBo
dHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1Jl
ZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9PYmplY3QvaXNcblx0ICovXG5cdGZ1bmN0aW9uIGlzKHgs
IHkpIHtcblx0ICAvLyBTYW1lVmFsdWUgYWxnb3JpdGhtXG5cdCAgaWYgKHggPT09IHkpIHtcblx0
ICAgIC8vIFN0ZXBzIDEtNSwgNy0xMFxuXHQgICAgLy8gU3RlcHMgNi5iLTYuZTogKzAgIT0gLTBc
blx0ICAgIC8vIEFkZGVkIHRoZSBub256ZXJvIHkgY2hlY2sgdG8gbWFrZSBGbG93IGhhcHB5LCBi
dXQgaXQgaXMgcmVkdW5kYW50XG5cdCAgICByZXR1cm4geCAhPT0gMCB8fCB5ICE9PSAwIHx8IDEg
LyB4ID09PSAxIC8geTtcblx0ICB9IGVsc2Uge1xuXHQgICAgLy8gU3RlcCA2LmE6IE5hTiA9PSBO
YU5cblx0ICAgIHJldHVybiB4ICE9PSB4ICYmIHkgIT09IHk7XG5cdCAgfVxuXHR9XG5cdFxuXHQv
Kipcblx0ICogUGVyZm9ybXMgZXF1YWxpdHkgYnkgaXRlcmF0aW5nIHRocm91Z2gga2V5cyBvbiBh
biBvYmplY3QgYW5kIHJldHVybmluZyBmYWxzZVxuXHQgKiB3aGVuIGFueSBrZXkgaGFzIHZhbHVl
cyB3aGljaCBhcmUgbm90IHN0cmljdGx5IGVxdWFsIGJldHdlZW4gdGhlIGFyZ3VtZW50cy5cblx0
ICogUmV0dXJucyB0cnVlIHdoZW4gdGhlIHZhbHVlcyBvZiBhbGwga2V5cyBhcmUgc3RyaWN0bHkg
ZXF1YWwuXG5cdCAqL1xuXHRmdW5jdGlvbiBzaGFsbG93RXF1YWwob2JqQSwgb2JqQikge1xuXHQg
IGlmIChpcyhvYmpBLCBvYmpCKSkge1xuXHQgICAgcmV0dXJuIHRydWU7XG5cdCAgfVxuXHRcblx0
ICBpZiAodHlwZW9mIG9iakEgIT09ICdvYmplY3QnIHx8IG9iakEgPT09IG51bGwgfHwgdHlwZW9m
IG9iakIgIT09ICdvYmplY3QnIHx8IG9iakIgPT09IG51bGwpIHtcblx0ICAgIHJldHVybiBmYWxz
ZTtcblx0ICB9XG5cdFxuXHQgIHZhciBrZXlzQSA9IE9iamVjdC5rZXlzKG9iakEpO1xuXHQgIHZh
ciBrZXlzQiA9IE9iamVjdC5rZXlzKG9iakIpO1xuXHRcblx0ICBpZiAoa2V5c0EubGVuZ3RoICE9
PSBrZXlzQi5sZW5ndGgpIHtcblx0ICAgIHJldHVybiBmYWxzZTtcblx0ICB9XG5cdFxuXHQgIC8v
IFRlc3QgZm9yIEEncyBrZXlzIGRpZmZlcmVudCBmcm9tIEIuXG5cdCAgZm9yICh2YXIgaSA9IDA7
IGkgPCBrZXlzQS5sZW5ndGg7IGkrKykge1xuXHQgICAgaWYgKCFoYXNPd25Qcm9wZXJ0eS5jYWxs
KG9iakIsIGtleXNBW2ldKSB8fCAhaXMob2JqQVtrZXlzQVtpXV0sIG9iakJba2V5c0FbaV1dKSkg
e1xuXHQgICAgICByZXR1cm4gZmFsc2U7XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0ICByZXR1cm4g
dHJ1ZTtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBzaGFsbG93RXF1YWw7XG5cbi8qKiov
IH0sXG4vKiAzMyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7XG5cblx0dmFyIGJhc2VHZXRUYWcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEx
MiksXG5cdCAgICBnZXRQcm90b3R5cGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExNCksXG5cdCAg
ICBpc09iamVjdExpa2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExOSk7XG5cdFxuXHQvKiogYE9i
amVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG5cdHZhciBvYmplY3RUYWcgPSAn
W29iamVjdCBPYmplY3RdJztcblx0XG5cdC8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVm
ZXJlbmNlcy4gKi9cblx0dmFyIGZ1bmNQcm90byA9IEZ1bmN0aW9uLnByb3RvdHlwZSxcblx0ICAg
IG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblx0XG5cdC8qKiBVc2VkIHRvIHJlc29s
dmUgdGhlIGRlY29tcGlsZWQgc291cmNlIG9mIGZ1bmN0aW9ucy4gKi9cblx0dmFyIGZ1bmNUb1N0
cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblx0XG5cdC8qKiBVc2VkIHRvIGNoZWNrIG9iamVj
dHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xuXHR2YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQ
cm90by5oYXNPd25Qcm9wZXJ0eTtcblx0XG5cdC8qKiBVc2VkIHRvIGluZmVyIHRoZSBgT2JqZWN0
YCBjb25zdHJ1Y3Rvci4gKi9cblx0dmFyIG9iamVjdEN0b3JTdHJpbmcgPSBmdW5jVG9TdHJpbmcu
Y2FsbChPYmplY3QpO1xuXHRcblx0LyoqXG5cdCAqIENoZWNrcyBpZiBgdmFsdWVgIGlzIGEgcGxh
aW4gb2JqZWN0LCB0aGF0IGlzLCBhbiBvYmplY3QgY3JlYXRlZCBieSB0aGVcblx0ICogYE9iamVj
dGAgY29uc3RydWN0b3Igb3Igb25lIHdpdGggYSBgW1tQcm90b3R5cGVdXWAgb2YgYG51bGxgLlxu
XHQgKlxuXHQgKiBAc3RhdGljXG5cdCAqIEBtZW1iZXJPZiBfXG5cdCAqIEBzaW5jZSAwLjguMFxu
XHQgKiBAY2F0ZWdvcnkgTGFuZ1xuXHQgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBj
aGVjay5cblx0ICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAg
aXMgYSBwbGFpbiBvYmplY3QsIGVsc2UgYGZhbHNlYC5cblx0ICogQGV4YW1wbGVcblx0ICpcblx0
ICogZnVuY3Rpb24gRm9vKCkge1xuXHQgKiAgIHRoaXMuYSA9IDE7XG5cdCAqIH1cblx0ICpcblx0
ICogXy5pc1BsYWluT2JqZWN0KG5ldyBGb28pO1xuXHQgKiAvLyA9PiBmYWxzZVxuXHQgKlxuXHQg
KiBfLmlzUGxhaW5PYmplY3QoWzEsIDIsIDNdKTtcblx0ICogLy8gPT4gZmFsc2Vcblx0ICpcblx0
ICogXy5pc1BsYWluT2JqZWN0KHsgJ3gnOiAwLCAneSc6IDAgfSk7XG5cdCAqIC8vID0+IHRydWVc
blx0ICpcblx0ICogXy5pc1BsYWluT2JqZWN0KE9iamVjdC5jcmVhdGUobnVsbCkpO1xuXHQgKiAv
LyA9PiB0cnVlXG5cdCAqL1xuXHRmdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVlKSB7XG5cdCAg
aWYgKCFpc09iamVjdExpa2UodmFsdWUpIHx8IGJhc2VHZXRUYWcodmFsdWUpICE9IG9iamVjdFRh
Zykge1xuXHQgICAgcmV0dXJuIGZhbHNlO1xuXHQgIH1cblx0ICB2YXIgcHJvdG8gPSBnZXRQcm90
b3R5cGUodmFsdWUpO1xuXHQgIGlmIChwcm90byA9PT0gbnVsbCkge1xuXHQgICAgcmV0dXJuIHRy
dWU7XG5cdCAgfVxuXHQgIHZhciBDdG9yID0gaGFzT3duUHJvcGVydHkuY2FsbChwcm90bywgJ2Nv
bnN0cnVjdG9yJykgJiYgcHJvdG8uY29uc3RydWN0b3I7XG5cdCAgcmV0dXJuIHR5cGVvZiBDdG9y
ID09ICdmdW5jdGlvbicgJiYgQ3RvciBpbnN0YW5jZW9mIEN0b3IgJiZcblx0ICAgIGZ1bmNUb1N0
cmluZy5jYWxsKEN0b3IpID09IG9iamVjdEN0b3JTdHJpbmc7XG5cdH1cblx0XG5cdG1vZHVsZS5l
eHBvcnRzID0gaXNQbGFpbk9iamVjdDtcblxuXG4vKioqLyB9LFxuLyogMzQgKi9cbi8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxu
XHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdHZhciBET01MYXp5VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTQpO1xu
XHR2YXIgRGFuZ2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMjkpO1xuXHR2YXIgUmVhY3RET01D
b21wb25lbnRUcmVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblx0dmFyIFJlYWN0SW5zdHJ1
bWVudGF0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtcblx0XG5cdHZhciBjcmVhdGVNaWNy
b3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Myk7XG5cdHZh
ciBzZXRJbm5lckhUTUwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI5KTtcblx0dmFyIHNldFRleHRD
b250ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3Nyk7XG5cdFxuXHRmdW5jdGlvbiBnZXROb2Rl
QWZ0ZXIocGFyZW50Tm9kZSwgbm9kZSkge1xuXHQgIC8vIFNwZWNpYWwgY2FzZSBmb3IgdGV4dCBj
b21wb25lbnRzLCB3aGljaCByZXR1cm4gW29wZW4sIGNsb3NlXSBjb21tZW50c1xuXHQgIC8vIGZy
b20gZ2V0SG9zdE5vZGUuXG5cdCAgaWYgKEFycmF5LmlzQXJyYXkobm9kZSkpIHtcblx0ICAgIG5v
ZGUgPSBub2RlWzFdO1xuXHQgIH1cblx0ICByZXR1cm4gbm9kZSA/IG5vZGUubmV4dFNpYmxpbmcg
OiBwYXJlbnROb2RlLmZpcnN0Q2hpbGQ7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBJbnNlcnRzIGBj
aGlsZE5vZGVgIGFzIGEgY2hpbGQgb2YgYHBhcmVudE5vZGVgIGF0IHRoZSBgaW5kZXhgLlxuXHQg
KlxuXHQgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IHBhcmVudE5vZGUgUGFyZW50IG5vZGUgaW4gd2hp
Y2ggdG8gaW5zZXJ0LlxuXHQgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNoaWxkTm9kZSBDaGlsZCBu
b2RlIHRvIGluc2VydC5cblx0ICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IGF0IHdoaWNo
IHRvIGluc2VydCB0aGUgY2hpbGQuXG5cdCAqIEBpbnRlcm5hbFxuXHQgKi9cblx0dmFyIGluc2Vy
dENoaWxkQXQgPSBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uIChw
YXJlbnROb2RlLCBjaGlsZE5vZGUsIHJlZmVyZW5jZU5vZGUpIHtcblx0ICAvLyBXZSByZWx5IGV4
Y2x1c2l2ZWx5IG9uIGBpbnNlcnRCZWZvcmUobm9kZSwgbnVsbClgIGluc3RlYWQgb2YgYWxzbyB1
c2luZ1xuXHQgIC8vIGBhcHBlbmRDaGlsZChub2RlKWAuIChVc2luZyBgdW5kZWZpbmVkYCBpcyBu
b3QgYWxsb3dlZCBieSBhbGwgYnJvd3NlcnMgc29cblx0ICAvLyB3ZSBhcmUgY2FyZWZ1bCB0byB1
c2UgYG51bGxgLilcblx0ICBwYXJlbnROb2RlLmluc2VydEJlZm9yZShjaGlsZE5vZGUsIHJlZmVy
ZW5jZU5vZGUpO1xuXHR9KTtcblx0XG5cdGZ1bmN0aW9uIGluc2VydExhenlUcmVlQ2hpbGRBdChw
YXJlbnROb2RlLCBjaGlsZFRyZWUsIHJlZmVyZW5jZU5vZGUpIHtcblx0ICBET01MYXp5VHJlZS5p
bnNlcnRUcmVlQmVmb3JlKHBhcmVudE5vZGUsIGNoaWxkVHJlZSwgcmVmZXJlbmNlTm9kZSk7XG5c
dH1cblx0XG5cdGZ1bmN0aW9uIG1vdmVDaGlsZChwYXJlbnROb2RlLCBjaGlsZE5vZGUsIHJlZmVy
ZW5jZU5vZGUpIHtcblx0ICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZE5vZGUpKSB7XG5cdCAgICBt
b3ZlRGVsaW1pdGVkVGV4dChwYXJlbnROb2RlLCBjaGlsZE5vZGVbMF0sIGNoaWxkTm9kZVsxXSwg
cmVmZXJlbmNlTm9kZSk7XG5cdCAgfSBlbHNlIHtcblx0ICAgIGluc2VydENoaWxkQXQocGFyZW50
Tm9kZSwgY2hpbGROb2RlLCByZWZlcmVuY2VOb2RlKTtcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0
aW9uIHJlbW92ZUNoaWxkKHBhcmVudE5vZGUsIGNoaWxkTm9kZSkge1xuXHQgIGlmIChBcnJheS5p
c0FycmF5KGNoaWxkTm9kZSkpIHtcblx0ICAgIHZhciBjbG9zaW5nQ29tbWVudCA9IGNoaWxkTm9k
ZVsxXTtcblx0ICAgIGNoaWxkTm9kZSA9IGNoaWxkTm9kZVswXTtcblx0ICAgIHJlbW92ZURlbGlt
aXRlZFRleHQocGFyZW50Tm9kZSwgY2hpbGROb2RlLCBjbG9zaW5nQ29tbWVudCk7XG5cdCAgICBw
YXJlbnROb2RlLnJlbW92ZUNoaWxkKGNsb3NpbmdDb21tZW50KTtcblx0ICB9XG5cdCAgcGFyZW50
Tm9kZS5yZW1vdmVDaGlsZChjaGlsZE5vZGUpO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBtb3ZlRGVs
aW1pdGVkVGV4dChwYXJlbnROb2RlLCBvcGVuaW5nQ29tbWVudCwgY2xvc2luZ0NvbW1lbnQsIHJl
ZmVyZW5jZU5vZGUpIHtcblx0ICB2YXIgbm9kZSA9IG9wZW5pbmdDb21tZW50O1xuXHQgIHdoaWxl
ICh0cnVlKSB7XG5cdCAgICB2YXIgbmV4dE5vZGUgPSBub2RlLm5leHRTaWJsaW5nO1xuXHQgICAg
aW5zZXJ0Q2hpbGRBdChwYXJlbnROb2RlLCBub2RlLCByZWZlcmVuY2VOb2RlKTtcblx0ICAgIGlm
IChub2RlID09PSBjbG9zaW5nQ29tbWVudCkge1xuXHQgICAgICBicmVhaztcblx0ICAgIH1cblx0
ICAgIG5vZGUgPSBuZXh0Tm9kZTtcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHJlbW92ZURl
bGltaXRlZFRleHQocGFyZW50Tm9kZSwgc3RhcnROb2RlLCBjbG9zaW5nQ29tbWVudCkge1xuXHQg
IHdoaWxlICh0cnVlKSB7XG5cdCAgICB2YXIgbm9kZSA9IHN0YXJ0Tm9kZS5uZXh0U2libGluZztc
blx0ICAgIGlmIChub2RlID09PSBjbG9zaW5nQ29tbWVudCkge1xuXHQgICAgICAvLyBUaGUgY2xv
c2luZyBjb21tZW50IGlzIHJlbW92ZWQgYnkgUmVhY3RNdWx0aUNoaWxkLlxuXHQgICAgICBicmVh
aztcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7
XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiByZXBsYWNlRGVsaW1pdGVkVGV4
dChvcGVuaW5nQ29tbWVudCwgY2xvc2luZ0NvbW1lbnQsIHN0cmluZ1RleHQpIHtcblx0ICB2YXIg
cGFyZW50Tm9kZSA9IG9wZW5pbmdDb21tZW50LnBhcmVudE5vZGU7XG5cdCAgdmFyIG5vZGVBZnRl
ckNvbW1lbnQgPSBvcGVuaW5nQ29tbWVudC5uZXh0U2libGluZztcblx0ICBpZiAobm9kZUFmdGVy
Q29tbWVudCA9PT0gY2xvc2luZ0NvbW1lbnQpIHtcblx0ICAgIC8vIFRoZXJlIGFyZSBubyB0ZXh0
IG5vZGVzIGJldHdlZW4gdGhlIG9wZW5pbmcgYW5kIGNsb3NpbmcgY29tbWVudHM7IGluc2VydFxu
XHQgICAgLy8gYSBuZXcgb25lIGlmIHN0cmluZ1RleHQgaXNuJ3QgZW1wdHkuXG5cdCAgICBpZiAo
c3RyaW5nVGV4dCkge1xuXHQgICAgICBpbnNlcnRDaGlsZEF0KHBhcmVudE5vZGUsIGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKHN0cmluZ1RleHQpLCBub2RlQWZ0ZXJDb21tZW50KTtcblx0ICAgIH1c
blx0ICB9IGVsc2Uge1xuXHQgICAgaWYgKHN0cmluZ1RleHQpIHtcblx0ICAgICAgLy8gU2V0IHRo
ZSB0ZXh0IGNvbnRlbnQgb2YgdGhlIGZpcnN0IG5vZGUgYWZ0ZXIgdGhlIG9wZW5pbmcgY29tbWVu
dCwgYW5kXG5cdCAgICAgIC8vIHJlbW92ZSBhbGwgZm9sbG93aW5nIG5vZGVzIHVwIHVudGlsIHRo
ZSBjbG9zaW5nIGNvbW1lbnQuXG5cdCAgICAgIHNldFRleHRDb250ZW50KG5vZGVBZnRlckNvbW1l
bnQsIHN0cmluZ1RleHQpO1xuXHQgICAgICByZW1vdmVEZWxpbWl0ZWRUZXh0KHBhcmVudE5vZGUs
IG5vZGVBZnRlckNvbW1lbnQsIGNsb3NpbmdDb21tZW50KTtcblx0ICAgIH0gZWxzZSB7XG5cdCAg
ICAgIHJlbW92ZURlbGltaXRlZFRleHQocGFyZW50Tm9kZSwgb3BlbmluZ0NvbW1lbnQsIGNsb3Np
bmdDb21tZW50KTtcblx0ICAgIH1cblx0ICB9XG5cdFxuXHQgIGlmIChmYWxzZSkge1xuXHQgICAg
UmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7XG5cdCAgICAg
IGluc3RhbmNlSUQ6IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG9w
ZW5pbmdDb21tZW50KS5fZGVidWdJRCxcblx0ICAgICAgdHlwZTogJ3JlcGxhY2UgdGV4dCcsXG5c
dCAgICAgIHBheWxvYWQ6IHN0cmluZ1RleHRcblx0ICAgIH0pO1xuXHQgIH1cblx0fVxuXHRcblx0
dmFyIGRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwID0gRGFuZ2VyLmRhbmdlcm91c2x5
UmVwbGFjZU5vZGVXaXRoTWFya3VwO1xuXHRpZiAoZmFsc2UpIHtcblx0ICBkYW5nZXJvdXNseVJl
cGxhY2VOb2RlV2l0aE1hcmt1cCA9IGZ1bmN0aW9uIChvbGRDaGlsZCwgbWFya3VwLCBwcmV2SW5z
dGFuY2UpIHtcblx0ICAgIERhbmdlci5kYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cChv
bGRDaGlsZCwgbWFya3VwKTtcblx0ICAgIGlmIChwcmV2SW5zdGFuY2UuX2RlYnVnSUQgIT09IDAp
IHtcblx0ICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlv
bih7XG5cdCAgICAgICAgaW5zdGFuY2VJRDogcHJldkluc3RhbmNlLl9kZWJ1Z0lELFxuXHQgICAg
ICAgIHR5cGU6ICdyZXBsYWNlIHdpdGgnLFxuXHQgICAgICAgIHBheWxvYWQ6IG1hcmt1cC50b1N0
cmluZygpXG5cdCAgICAgIH0pO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgdmFyIG5leHRJbnN0
YW5jZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG1hcmt1cC5u
b2RlKTtcblx0ICAgICAgaWYgKG5leHRJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkge1xuXHQgICAg
ICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuXHQg
ICAgICAgICAgaW5zdGFuY2VJRDogbmV4dEluc3RhbmNlLl9kZWJ1Z0lELFxuXHQgICAgICAgICAg
dHlwZTogJ21vdW50Jyxcblx0ICAgICAgICAgIHBheWxvYWQ6IG1hcmt1cC50b1N0cmluZygpXG5c
dCAgICAgICAgfSk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9O1xuXHR9XG5cdFxuXHQvKipc
blx0ICogT3BlcmF0aW9ucyBmb3IgdXBkYXRpbmcgd2l0aCBET00gY2hpbGRyZW4uXG5cdCAqL1xu
XHR2YXIgRE9NQ2hpbGRyZW5PcGVyYXRpb25zID0ge1xuXHQgIGRhbmdlcm91c2x5UmVwbGFjZU5v
ZGVXaXRoTWFya3VwOiBkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cCxcblx0XG5cdCAg
cmVwbGFjZURlbGltaXRlZFRleHQ6IHJlcGxhY2VEZWxpbWl0ZWRUZXh0LFxuXHRcblx0ICAvKipc
blx0ICAgKiBVcGRhdGVzIGEgY29tcG9uZW50J3MgY2hpbGRyZW4gYnkgcHJvY2Vzc2luZyBhIHNl
cmllcyBvZiB1cGRhdGVzLiBUaGVcblx0ICAgKiB1cGRhdGUgY29uZmlndXJhdGlvbnMgYXJlIGVh
Y2ggZXhwZWN0ZWQgdG8gaGF2ZSBhIGBwYXJlbnROb2RlYCBwcm9wZXJ0eS5cblx0ICAgKlxuXHQg
ICAqIEBwYXJhbSB7YXJyYXk8b2JqZWN0Pn0gdXBkYXRlcyBMaXN0IG9mIHVwZGF0ZSBjb25maWd1
cmF0aW9ucy5cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICBwcm9jZXNzVXBkYXRlczog
ZnVuY3Rpb24gKHBhcmVudE5vZGUsIHVwZGF0ZXMpIHtcblx0ICAgIGlmIChmYWxzZSkge1xuXHQg
ICAgICB2YXIgcGFyZW50Tm9kZURlYnVnSUQgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5z
dGFuY2VGcm9tTm9kZShwYXJlbnROb2RlKS5fZGVidWdJRDtcblx0ICAgIH1cblx0XG5cdCAgICBm
b3IgKHZhciBrID0gMDsgayA8IHVwZGF0ZXMubGVuZ3RoOyBrKyspIHtcblx0ICAgICAgdmFyIHVw
ZGF0ZSA9IHVwZGF0ZXNba107XG5cdCAgICAgIHN3aXRjaCAodXBkYXRlLnR5cGUpIHtcblx0ICAg
ICAgICBjYXNlICdJTlNFUlRfTUFSS1VQJzpcblx0ICAgICAgICAgIGluc2VydExhenlUcmVlQ2hp
bGRBdChwYXJlbnROb2RlLCB1cGRhdGUuY29udGVudCwgZ2V0Tm9kZUFmdGVyKHBhcmVudE5vZGUs
IHVwZGF0ZS5hZnRlck5vZGUpKTtcblx0ICAgICAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAg
ICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtcblx0
ICAgICAgICAgICAgICBpbnN0YW5jZUlEOiBwYXJlbnROb2RlRGVidWdJRCxcblx0ICAgICAgICAg
ICAgICB0eXBlOiAnaW5zZXJ0IGNoaWxkJyxcblx0ICAgICAgICAgICAgICBwYXlsb2FkOiB7XG5c
dCAgICAgICAgICAgICAgICB0b0luZGV4OiB1cGRhdGUudG9JbmRleCxcblx0ICAgICAgICAgICAg
ICAgIGNvbnRlbnQ6IHVwZGF0ZS5jb250ZW50LnRvU3RyaW5nKClcblx0ICAgICAgICAgICAgICB9
XG5cdCAgICAgICAgICAgIH0pO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgYnJlYWs7XG5c
dCAgICAgICAgY2FzZSAnTU9WRV9FWElTVElORyc6XG5cdCAgICAgICAgICBtb3ZlQ2hpbGQocGFy
ZW50Tm9kZSwgdXBkYXRlLmZyb21Ob2RlLCBnZXROb2RlQWZ0ZXIocGFyZW50Tm9kZSwgdXBkYXRl
LmFmdGVyTm9kZSkpO1xuXHQgICAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICAgIFJl
YWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuXHQgICAgICAg
ICAgICAgIGluc3RhbmNlSUQ6IHBhcmVudE5vZGVEZWJ1Z0lELFxuXHQgICAgICAgICAgICAgIHR5
cGU6ICdtb3ZlIGNoaWxkJyxcblx0ICAgICAgICAgICAgICBwYXlsb2FkOiB7IGZyb21JbmRleDog
dXBkYXRlLmZyb21JbmRleCwgdG9JbmRleDogdXBkYXRlLnRvSW5kZXggfVxuXHQgICAgICAgICAg
ICB9KTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIGNhc2Ug
J1NFVF9NQVJLVVAnOlxuXHQgICAgICAgICAgc2V0SW5uZXJIVE1MKHBhcmVudE5vZGUsIHVwZGF0
ZS5jb250ZW50KTtcblx0ICAgICAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgICAgICBSZWFj
dEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtcblx0ICAgICAgICAg
ICAgICBpbnN0YW5jZUlEOiBwYXJlbnROb2RlRGVidWdJRCxcblx0ICAgICAgICAgICAgICB0eXBl
OiAncmVwbGFjZSBjaGlsZHJlbicsXG5cdCAgICAgICAgICAgICAgcGF5bG9hZDogdXBkYXRlLmNv
bnRlbnQudG9TdHJpbmcoKVxuXHQgICAgICAgICAgICB9KTtcblx0ICAgICAgICAgIH1cblx0ICAg
ICAgICAgIGJyZWFrO1xuXHQgICAgICAgIGNhc2UgJ1RFWFRfQ09OVEVOVCc6XG5cdCAgICAgICAg
ICBzZXRUZXh0Q29udGVudChwYXJlbnROb2RlLCB1cGRhdGUuY29udGVudCk7XG5cdCAgICAgICAg
ICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdU
b29sLm9uSG9zdE9wZXJhdGlvbih7XG5cdCAgICAgICAgICAgICAgaW5zdGFuY2VJRDogcGFyZW50
Tm9kZURlYnVnSUQsXG5cdCAgICAgICAgICAgICAgdHlwZTogJ3JlcGxhY2UgdGV4dCcsXG5cdCAg
ICAgICAgICAgICAgcGF5bG9hZDogdXBkYXRlLmNvbnRlbnQudG9TdHJpbmcoKVxuXHQgICAgICAg
ICAgICB9KTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIGNh
c2UgJ1JFTU9WRV9OT0RFJzpcblx0ICAgICAgICAgIHJlbW92ZUNoaWxkKHBhcmVudE5vZGUsIHVw
ZGF0ZS5mcm9tTm9kZSk7XG5cdCAgICAgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICAgICAg
UmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7XG5cdCAgICAg
ICAgICAgICAgaW5zdGFuY2VJRDogcGFyZW50Tm9kZURlYnVnSUQsXG5cdCAgICAgICAgICAgICAg
dHlwZTogJ3JlbW92ZSBjaGlsZCcsXG5cdCAgICAgICAgICAgICAgcGF5bG9hZDogeyBmcm9tSW5k
ZXg6IHVwZGF0ZS5mcm9tSW5kZXggfVxuXHQgICAgICAgICAgICB9KTtcblx0ICAgICAgICAgIH1c
blx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRc
blx0bW9kdWxlLmV4cG9ydHMgPSBET01DaGlsZHJlbk9wZXJhdGlvbnM7XG5cbi8qKiovIH0sXG4v
KiAzNSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3Qn
O1xuXHRcblx0dmFyIERPTU5hbWVzcGFjZXMgPSB7XG5cdCAgaHRtbDogJ2h0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGh0bWwnLFxuXHQgIG1hdGhtbDogJ2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0
aC9NYXRoTUwnLFxuXHQgIHN2ZzogJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJ1xuXHR9O1xu
XHRcblx0bW9kdWxlLmV4cG9ydHMgPSBET01OYW1lc3BhY2VzO1xuXG4vKioqLyB9LFxuLyogMzYg
Ki9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykg
e1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
XHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0
ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDMpO1xuXHRcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1
aXJlX18oMSk7XG5cdFxuXHQvKipcblx0ICogSW5qZWN0YWJsZSBvcmRlcmluZyBvZiBldmVudCBw
bHVnaW5zLlxuXHQgKi9cblx0dmFyIGV2ZW50UGx1Z2luT3JkZXIgPSBudWxsO1xuXHRcblx0Lyoq
XG5cdCAqIEluamVjdGFibGUgbWFwcGluZyBmcm9tIG5hbWVzIHRvIGV2ZW50IHBsdWdpbiBtb2R1
bGVzLlxuXHQgKi9cblx0dmFyIG5hbWVzVG9QbHVnaW5zID0ge307XG5cdFxuXHQvKipcblx0ICog
UmVjb21wdXRlcyB0aGUgcGx1Z2luIGxpc3QgdXNpbmcgdGhlIGluamVjdGVkIHBsdWdpbnMgYW5k
IHBsdWdpbiBvcmRlcmluZy5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICovXG5cdGZ1bmN0aW9u
IHJlY29tcHV0ZVBsdWdpbk9yZGVyaW5nKCkge1xuXHQgIGlmICghZXZlbnRQbHVnaW5PcmRlcikg
e1xuXHQgICAgLy8gV2FpdCB1bnRpbCBhbiBgZXZlbnRQbHVnaW5PcmRlcmAgaXMgaW5qZWN0ZWQu
XG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHQgIGZvciAodmFyIHBsdWdpbk5hbWUgaW4gbmFtZXNU
b1BsdWdpbnMpIHtcblx0ICAgIHZhciBwbHVnaW5Nb2R1bGUgPSBuYW1lc1RvUGx1Z2luc1twbHVn
aW5OYW1lXTtcblx0ICAgIHZhciBwbHVnaW5JbmRleCA9IGV2ZW50UGx1Z2luT3JkZXIuaW5kZXhP
ZihwbHVnaW5OYW1lKTtcblx0ICAgICEocGx1Z2luSW5kZXggPiAtMSkgPyAgZmFsc2UgPyBpbnZh
cmlhbnQoZmFsc2UsICdFdmVudFBsdWdpblJlZ2lzdHJ5OiBDYW5ub3QgaW5qZWN0IGV2ZW50IHBs
dWdpbnMgdGhhdCBkbyBub3QgZXhpc3QgaW4gdGhlIHBsdWdpbiBvcmRlcmluZywgYCVzYC4nLCBw
bHVnaW5OYW1lKSA6IF9wcm9kSW52YXJpYW50KCc5NicsIHBsdWdpbk5hbWUpIDogdm9pZCAwO1xu
XHQgICAgaWYgKEV2ZW50UGx1Z2luUmVnaXN0cnkucGx1Z2luc1twbHVnaW5JbmRleF0pIHtcblx0
ICAgICAgY29udGludWU7XG5cdCAgICB9XG5cdCAgICAhcGx1Z2luTW9kdWxlLmV4dHJhY3RFdmVu
dHMgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVudFBsdWdpblJlZ2lzdHJ5OiBFdmVu
dCBwbHVnaW5zIG11c3QgaW1wbGVtZW50IGFuIGBleHRyYWN0RXZlbnRzYCBtZXRob2QsIGJ1dCBg
JXNgIGRvZXMgbm90LicsIHBsdWdpbk5hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzk3JywgcGx1Z2lu
TmFtZSkgOiB2b2lkIDA7XG5cdCAgICBFdmVudFBsdWdpblJlZ2lzdHJ5LnBsdWdpbnNbcGx1Z2lu
SW5kZXhdID0gcGx1Z2luTW9kdWxlO1xuXHQgICAgdmFyIHB1Ymxpc2hlZEV2ZW50cyA9IHBsdWdp
bk1vZHVsZS5ldmVudFR5cGVzO1xuXHQgICAgZm9yICh2YXIgZXZlbnROYW1lIGluIHB1Ymxpc2hl
ZEV2ZW50cykge1xuXHQgICAgICAhcHVibGlzaEV2ZW50Rm9yUGx1Z2luKHB1Ymxpc2hlZEV2ZW50
c1tldmVudE5hbWVdLCBwbHVnaW5Nb2R1bGUsIGV2ZW50TmFtZSkgPyAgZmFsc2UgPyBpbnZhcmlh
bnQoZmFsc2UsICdFdmVudFBsdWdpblJlZ2lzdHJ5OiBGYWlsZWQgdG8gcHVibGlzaCBldmVudCBg
JXNgIGZvciBwbHVnaW4gYCVzYC4nLCBldmVudE5hbWUsIHBsdWdpbk5hbWUpIDogX3Byb2RJbnZh
cmlhbnQoJzk4JywgZXZlbnROYW1lLCBwbHVnaW5OYW1lKSA6IHZvaWQgMDtcblx0ICAgIH1cblx0
ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBQdWJsaXNoZXMgYW4gZXZlbnQgc28gdGhhdCBpdCBj
YW4gYmUgZGlzcGF0Y2hlZCBieSB0aGUgc3VwcGxpZWQgcGx1Z2luLlxuXHQgKlxuXHQgKiBAcGFy
YW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgRGlzcGF0Y2ggY29uZmlndXJhdGlvbiBmb3IgdGhl
IGV2ZW50LlxuXHQgKiBAcGFyYW0ge29iamVjdH0gUGx1Z2luTW9kdWxlIFBsdWdpbiBwdWJsaXNo
aW5nIHRoZSBldmVudC5cblx0ICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgZXZlbnQg
d2FzIHN1Y2Nlc3NmdWxseSBwdWJsaXNoZWQuXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRmdW5j
dGlvbiBwdWJsaXNoRXZlbnRGb3JQbHVnaW4oZGlzcGF0Y2hDb25maWcsIHBsdWdpbk1vZHVsZSwg
ZXZlbnROYW1lKSB7XG5cdCAgISFFdmVudFBsdWdpblJlZ2lzdHJ5LmV2ZW50TmFtZURpc3BhdGNo
Q29uZmlncy5oYXNPd25Qcm9wZXJ0eShldmVudE5hbWUpID8gIGZhbHNlID8gaW52YXJpYW50KGZh
bHNlLCAnRXZlbnRQbHVnaW5IdWI6IE1vcmUgdGhhbiBvbmUgcGx1Z2luIGF0dGVtcHRlZCB0byBw
dWJsaXNoIHRoZSBzYW1lIGV2ZW50IG5hbWUsIGAlc2AuJywgZXZlbnROYW1lKSA6IF9wcm9kSW52
YXJpYW50KCc5OScsIGV2ZW50TmFtZSkgOiB2b2lkIDA7XG5cdCAgRXZlbnRQbHVnaW5SZWdpc3Ry
eS5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3NbZXZlbnROYW1lXSA9IGRpc3BhdGNoQ29uZmlnO1xu
XHRcblx0ICB2YXIgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMgPSBkaXNwYXRjaENvbmZpZy5waGFz
ZWRSZWdpc3RyYXRpb25OYW1lcztcblx0ICBpZiAocGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpIHtc
blx0ICAgIGZvciAodmFyIHBoYXNlTmFtZSBpbiBwaGFzZWRSZWdpc3RyYXRpb25OYW1lcykge1xu
XHQgICAgICBpZiAocGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMuaGFzT3duUHJvcGVydHkocGhhc2VO
YW1lKSkge1xuXHQgICAgICAgIHZhciBwaGFzZWRSZWdpc3RyYXRpb25OYW1lID0gcGhhc2VkUmVn
aXN0cmF0aW9uTmFtZXNbcGhhc2VOYW1lXTtcblx0ICAgICAgICBwdWJsaXNoUmVnaXN0cmF0aW9u
TmFtZShwaGFzZWRSZWdpc3RyYXRpb25OYW1lLCBwbHVnaW5Nb2R1bGUsIGV2ZW50TmFtZSk7XG5c
dCAgICAgIH1cblx0ICAgIH1cblx0ICAgIHJldHVybiB0cnVlO1xuXHQgIH0gZWxzZSBpZiAoZGlz
cGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSkge1xuXHQgICAgcHVibGlzaFJlZ2lzdHJhdGlv
bk5hbWUoZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSwgcGx1Z2luTW9kdWxlLCBldmVu
dE5hbWUpO1xuXHQgICAgcmV0dXJuIHRydWU7XG5cdCAgfVxuXHQgIHJldHVybiBmYWxzZTtcblx0
fVxuXHRcblx0LyoqXG5cdCAqIFB1Ymxpc2hlcyBhIHJlZ2lzdHJhdGlvbiBuYW1lIHRoYXQgaXMg
dXNlZCB0byBpZGVudGlmeSBkaXNwYXRjaGVkIGV2ZW50cyBhbmRcblx0ICogY2FuIGJlIHVzZWQg
d2l0aCBgRXZlbnRQbHVnaW5IdWIucHV0TGlzdGVuZXJgIHRvIHJlZ2lzdGVyIGxpc3RlbmVycy5c
blx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IHJlZ2lzdHJhdGlvbk5hbWUgUmVnaXN0cmF0aW9u
IG5hbWUgdG8gYWRkLlxuXHQgKiBAcGFyYW0ge29iamVjdH0gUGx1Z2luTW9kdWxlIFBsdWdpbiBw
dWJsaXNoaW5nIHRoZSBldmVudC5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdGZ1bmN0aW9uIHB1
Ymxpc2hSZWdpc3RyYXRpb25OYW1lKHJlZ2lzdHJhdGlvbk5hbWUsIHBsdWdpbk1vZHVsZSwgZXZl
bnROYW1lKSB7XG5cdCAgISFFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1
bGVzW3JlZ2lzdHJhdGlvbk5hbWVdID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnRXZlbnRQ
bHVnaW5IdWI6IE1vcmUgdGhhbiBvbmUgcGx1Z2luIGF0dGVtcHRlZCB0byBwdWJsaXNoIHRoZSBz
YW1lIHJlZ2lzdHJhdGlvbiBuYW1lLCBgJXNgLicsIHJlZ2lzdHJhdGlvbk5hbWUpIDogX3Byb2RJ
bnZhcmlhbnQoJzEwMCcsIHJlZ2lzdHJhdGlvbk5hbWUpIDogdm9pZCAwO1xuXHQgIEV2ZW50UGx1
Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbcmVnaXN0cmF0aW9uTmFtZV0gPSBw
bHVnaW5Nb2R1bGU7XG5cdCAgRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lRGVw
ZW5kZW5jaWVzW3JlZ2lzdHJhdGlvbk5hbWVdID0gcGx1Z2luTW9kdWxlLmV2ZW50VHlwZXNbZXZl
bnROYW1lXS5kZXBlbmRlbmNpZXM7XG5cdFxuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgdmFyIGxv
d2VyQ2FzZWROYW1lID0gcmVnaXN0cmF0aW9uTmFtZS50b0xvd2VyQ2FzZSgpO1xuXHQgICAgRXZl
bnRQbHVnaW5SZWdpc3RyeS5wb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzW2xvd2VyQ2FzZWROYW1l
XSA9IHJlZ2lzdHJhdGlvbk5hbWU7XG5cdFxuXHQgICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWUgPT09
ICdvbkRvdWJsZUNsaWNrJykge1xuXHQgICAgICBFdmVudFBsdWdpblJlZ2lzdHJ5LnBvc3NpYmxl
UmVnaXN0cmF0aW9uTmFtZXMub25kYmxjbGljayA9IHJlZ2lzdHJhdGlvbk5hbWU7XG5cdCAgICB9
XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICogUmVnaXN0ZXJzIHBsdWdpbnMgc28gdGhhdCB0
aGV5IGNhbiBleHRyYWN0IGFuZCBkaXNwYXRjaCBldmVudHMuXG5cdCAqXG5cdCAqIEBzZWUge0V2
ZW50UGx1Z2luSHVifVxuXHQgKi9cblx0dmFyIEV2ZW50UGx1Z2luUmVnaXN0cnkgPSB7XG5cdCAg
LyoqXG5cdCAgICogT3JkZXJlZCBsaXN0IG9mIGluamVjdGVkIHBsdWdpbnMuXG5cdCAgICovXG5c
dCAgcGx1Z2luczogW10sXG5cdFxuXHQgIC8qKlxuXHQgICAqIE1hcHBpbmcgZnJvbSBldmVudCBu
YW1lIHRvIGRpc3BhdGNoIGNvbmZpZ1xuXHQgICAqL1xuXHQgIGV2ZW50TmFtZURpc3BhdGNoQ29u
Zmlnczoge30sXG5cdFxuXHQgIC8qKlxuXHQgICAqIE1hcHBpbmcgZnJvbSByZWdpc3RyYXRpb24g
bmFtZSB0byBwbHVnaW4gbW9kdWxlXG5cdCAgICovXG5cdCAgcmVnaXN0cmF0aW9uTmFtZU1vZHVs
ZXM6IHt9LFxuXHRcblx0ICAvKipcblx0ICAgKiBNYXBwaW5nIGZyb20gcmVnaXN0cmF0aW9uIG5h
bWUgdG8gZXZlbnQgbmFtZVxuXHQgICAqL1xuXHQgIHJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRlbmNp
ZXM6IHt9LFxuXHRcblx0ICAvKipcblx0ICAgKiBNYXBwaW5nIGZyb20gbG93ZXJjYXNlIHJlZ2lz
dHJhdGlvbiBuYW1lcyB0byB0aGUgcHJvcGVybHkgY2FzZWQgdmVyc2lvbixcblx0ICAgKiB1c2Vk
IHRvIHdhcm4gaW4gdGhlIGNhc2Ugb2YgbWlzc2luZyBldmVudCBoYW5kbGVycy4gQXZhaWxhYmxl
XG5cdCAgICogb25seSBpbiBfX0RFVl9fLlxuXHQgICAqIEB0eXBlIHtPYmplY3R9XG5cdCAgICov
XG5cdCAgcG9zc2libGVSZWdpc3RyYXRpb25OYW1lczogIGZhbHNlID8ge30gOiBudWxsLFxuXHQg
IC8vIFRydXN0IHRoZSBkZXZlbG9wZXIgdG8gb25seSB1c2UgcG9zc2libGVSZWdpc3RyYXRpb25O
YW1lcyBpbiBfX0RFVl9fXG5cdFxuXHQgIC8qKlxuXHQgICAqIEluamVjdHMgYW4gb3JkZXJpbmcg
b2YgcGx1Z2lucyAoYnkgcGx1Z2luIG5hbWUpLiBUaGlzIGFsbG93cyB0aGUgb3JkZXJpbmdcblx0
ICAgKiB0byBiZSBkZWNvdXBsZWQgZnJvbSBpbmplY3Rpb24gb2YgdGhlIGFjdHVhbCBwbHVnaW5z
IHNvIHRoYXQgb3JkZXJpbmcgaXNcblx0ICAgKiBhbHdheXMgZGV0ZXJtaW5pc3RpYyByZWdhcmRs
ZXNzIG9mIHBhY2thZ2luZywgb24tdGhlLWZseSBpbmplY3Rpb24sIGV0Yy5cblx0ICAgKlxuXHQg
ICAqIEBwYXJhbSB7YXJyYXl9IEluamVjdGVkRXZlbnRQbHVnaW5PcmRlclxuXHQgICAqIEBpbnRl
cm5hbFxuXHQgICAqIEBzZWUge0V2ZW50UGx1Z2luSHViLmluamVjdGlvbi5pbmplY3RFdmVudFBs
dWdpbk9yZGVyfVxuXHQgICAqL1xuXHQgIGluamVjdEV2ZW50UGx1Z2luT3JkZXI6IGZ1bmN0aW9u
IChpbmplY3RlZEV2ZW50UGx1Z2luT3JkZXIpIHtcblx0ICAgICEhZXZlbnRQbHVnaW5PcmRlciA/
ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IENhbm5vdCBp
bmplY3QgZXZlbnQgcGx1Z2luIG9yZGVyaW5nIG1vcmUgdGhhbiBvbmNlLiBZb3UgYXJlIGxpa2Vs
eSB0cnlpbmcgdG8gbG9hZCBtb3JlIHRoYW4gb25lIGNvcHkgb2YgUmVhY3QuJykgOiBfcHJvZElu
dmFyaWFudCgnMTAxJykgOiB2b2lkIDA7XG5cdCAgICAvLyBDbG9uZSB0aGUgb3JkZXJpbmcgc28g
aXQgY2Fubm90IGJlIGR5bmFtaWNhbGx5IG11dGF0ZWQuXG5cdCAgICBldmVudFBsdWdpbk9yZGVy
ID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoaW5qZWN0ZWRFdmVudFBsdWdpbk9yZGVyKTtc
blx0ICAgIHJlY29tcHV0ZVBsdWdpbk9yZGVyaW5nKCk7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5c
dCAgICogSW5qZWN0cyBwbHVnaW5zIHRvIGJlIHVzZWQgYnkgYEV2ZW50UGx1Z2luSHViYC4gVGhl
IHBsdWdpbiBuYW1lcyBtdXN0IGJlXG5cdCAgICogaW4gdGhlIG9yZGVyaW5nIGluamVjdGVkIGJ5
IGBpbmplY3RFdmVudFBsdWdpbk9yZGVyYC5cblx0ICAgKlxuXHQgICAqIFBsdWdpbnMgY2FuIGJl
IGluamVjdGVkIGFzIHBhcnQgb2YgcGFnZSBpbml0aWFsaXphdGlvbiBvciBvbi10aGUtZmx5Llxu
XHQgICAqXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGluamVjdGVkTmFtZXNUb1BsdWdpbnMgTWFw
IGZyb20gbmFtZXMgdG8gcGx1Z2luIG1vZHVsZXMuXG5cdCAgICogQGludGVybmFsXG5cdCAgICog
QHNlZSB7RXZlbnRQbHVnaW5IdWIuaW5qZWN0aW9uLmluamVjdEV2ZW50UGx1Z2luc0J5TmFtZX1c
blx0ICAgKi9cblx0ICBpbmplY3RFdmVudFBsdWdpbnNCeU5hbWU6IGZ1bmN0aW9uIChpbmplY3Rl
ZE5hbWVzVG9QbHVnaW5zKSB7XG5cdCAgICB2YXIgaXNPcmRlcmluZ0RpcnR5ID0gZmFsc2U7XG5c
dCAgICBmb3IgKHZhciBwbHVnaW5OYW1lIGluIGluamVjdGVkTmFtZXNUb1BsdWdpbnMpIHtcblx0
ICAgICAgaWYgKCFpbmplY3RlZE5hbWVzVG9QbHVnaW5zLmhhc093blByb3BlcnR5KHBsdWdpbk5h
bWUpKSB7XG5cdCAgICAgICAgY29udGludWU7XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIHBsdWdp
bk1vZHVsZSA9IGluamVjdGVkTmFtZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV07XG5cdCAgICAgIGlm
ICghbmFtZXNUb1BsdWdpbnMuaGFzT3duUHJvcGVydHkocGx1Z2luTmFtZSkgfHwgbmFtZXNUb1Bs
dWdpbnNbcGx1Z2luTmFtZV0gIT09IHBsdWdpbk1vZHVsZSkge1xuXHQgICAgICAgICEhbmFtZXNU
b1BsdWdpbnNbcGx1Z2luTmFtZV0gPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVudFBs
dWdpblJlZ2lzdHJ5OiBDYW5ub3QgaW5qZWN0IHR3byBkaWZmZXJlbnQgZXZlbnQgcGx1Z2lucyB1
c2luZyB0aGUgc2FtZSBuYW1lLCBgJXNgLicsIHBsdWdpbk5hbWUpIDogX3Byb2RJbnZhcmlhbnQo
JzEwMicsIHBsdWdpbk5hbWUpIDogdm9pZCAwO1xuXHQgICAgICAgIG5hbWVzVG9QbHVnaW5zW3Bs
dWdpbk5hbWVdID0gcGx1Z2luTW9kdWxlO1xuXHQgICAgICAgIGlzT3JkZXJpbmdEaXJ0eSA9IHRy
dWU7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIGlmIChpc09yZGVyaW5nRGlydHkpIHtcblx0
ICAgICAgcmVjb21wdXRlUGx1Z2luT3JkZXJpbmcoKTtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0
ICAvKipcblx0ICAgKiBMb29rcyB1cCB0aGUgcGx1Z2luIGZvciB0aGUgc3VwcGxpZWQgZXZlbnQu
XG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge29iamVjdH0gZXZlbnQgQSBzeW50aGV0aWMgZXZlbnQu
XG5cdCAgICogQHJldHVybiB7P29iamVjdH0gVGhlIHBsdWdpbiB0aGF0IGNyZWF0ZWQgdGhlIHN1
cHBsaWVkIGV2ZW50LlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIGdldFBsdWdpbk1v
ZHVsZUZvckV2ZW50OiBmdW5jdGlvbiAoZXZlbnQpIHtcblx0ICAgIHZhciBkaXNwYXRjaENvbmZp
ZyA9IGV2ZW50LmRpc3BhdGNoQ29uZmlnO1xuXHQgICAgaWYgKGRpc3BhdGNoQ29uZmlnLnJlZ2lz
dHJhdGlvbk5hbWUpIHtcblx0ICAgICAgcmV0dXJuIEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0
cmF0aW9uTmFtZU1vZHVsZXNbZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZV0gfHwgbnVs
bDtcblx0ICAgIH1cblx0ICAgIGlmIChkaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25O
YW1lcyAhPT0gdW5kZWZpbmVkKSB7XG5cdCAgICAgIC8vIHB1bGxpbmcgcGhhc2VkUmVnaXN0cmF0
aW9uTmFtZXMgb3V0IG9mIGRpc3BhdGNoQ29uZmlnIGhlbHBzIEZsb3cgc2VlXG5cdCAgICAgIC8v
IHRoYXQgaXQgaXMgbm90IHVuZGVmaW5lZC5cblx0ICAgICAgdmFyIHBoYXNlZFJlZ2lzdHJhdGlv
bk5hbWVzID0gZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM7XG5cdFxuXHQg
ICAgICBmb3IgKHZhciBwaGFzZSBpbiBwaGFzZWRSZWdpc3RyYXRpb25OYW1lcykge1xuXHQgICAg
ICAgIGlmICghcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMuaGFzT3duUHJvcGVydHkocGhhc2UpKSB7
XG5cdCAgICAgICAgICBjb250aW51ZTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgdmFyIHBsdWdp
bk1vZHVsZSA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbcGhh
c2VkUmVnaXN0cmF0aW9uTmFtZXNbcGhhc2VdXTtcblx0ICAgICAgICBpZiAocGx1Z2luTW9kdWxl
KSB7XG5cdCAgICAgICAgICByZXR1cm4gcGx1Z2luTW9kdWxlO1xuXHQgICAgICAgIH1cblx0ICAg
ICAgfVxuXHQgICAgfVxuXHQgICAgcmV0dXJuIG51bGw7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5c
dCAgICogRXhwb3NlZCBmb3IgdW5pdCB0ZXN0aW5nLlxuXHQgICAqIEBwcml2YXRlXG5cdCAgICov
XG5cdCAgX3Jlc2V0RXZlbnRQbHVnaW5zOiBmdW5jdGlvbiAoKSB7XG5cdCAgICBldmVudFBsdWdp
bk9yZGVyID0gbnVsbDtcblx0ICAgIGZvciAodmFyIHBsdWdpbk5hbWUgaW4gbmFtZXNUb1BsdWdp
bnMpIHtcblx0ICAgICAgaWYgKG5hbWVzVG9QbHVnaW5zLmhhc093blByb3BlcnR5KHBsdWdpbk5h
bWUpKSB7XG5cdCAgICAgICAgZGVsZXRlIG5hbWVzVG9QbHVnaW5zW3BsdWdpbk5hbWVdO1xuXHQg
ICAgICB9XG5cdCAgICB9XG5cdCAgICBFdmVudFBsdWdpblJlZ2lzdHJ5LnBsdWdpbnMubGVuZ3Ro
ID0gMDtcblx0XG5cdCAgICB2YXIgZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzID0gRXZlbnRQbHVn
aW5SZWdpc3RyeS5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3M7XG5cdCAgICBmb3IgKHZhciBldmVu
dE5hbWUgaW4gZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzKSB7XG5cdCAgICAgIGlmIChldmVudE5h
bWVEaXNwYXRjaENvbmZpZ3MuaGFzT3duUHJvcGVydHkoZXZlbnROYW1lKSkge1xuXHQgICAgICAg
IGRlbGV0ZSBldmVudE5hbWVEaXNwYXRjaENvbmZpZ3NbZXZlbnROYW1lXTtcblx0ICAgICAgfVxu
XHQgICAgfVxuXHRcblx0ICAgIHZhciByZWdpc3RyYXRpb25OYW1lTW9kdWxlcyA9IEV2ZW50UGx1
Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXM7XG5cdCAgICBmb3IgKHZhciByZWdp
c3RyYXRpb25OYW1lIGluIHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzKSB7XG5cdCAgICAgIGlmIChy
ZWdpc3RyYXRpb25OYW1lTW9kdWxlcy5oYXNPd25Qcm9wZXJ0eShyZWdpc3RyYXRpb25OYW1lKSkg
e1xuXHQgICAgICAgIGRlbGV0ZSByZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25O
YW1lXTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAg
ICB2YXIgcG9zc2libGVSZWdpc3RyYXRpb25OYW1lcyA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucG9z
c2libGVSZWdpc3RyYXRpb25OYW1lcztcblx0ICAgICAgZm9yICh2YXIgbG93ZXJDYXNlZE5hbWUg
aW4gcG9zc2libGVSZWdpc3RyYXRpb25OYW1lcykge1xuXHQgICAgICAgIGlmIChwb3NzaWJsZVJl
Z2lzdHJhdGlvbk5hbWVzLmhhc093blByb3BlcnR5KGxvd2VyQ2FzZWROYW1lKSkge1xuXHQgICAg
ICAgICAgZGVsZXRlIHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXNbbG93ZXJDYXNlZE5hbWVdO1xu
XHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVs
ZS5leHBvcnRzID0gRXZlbnRQbHVnaW5SZWdpc3RyeTtcblxuLyoqKi8gfSxcbi8qIDM3ICovXG4v
KioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxu
XHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICog
QWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQn
dXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDMpO1xuXHRcblx0dmFyIFJlYWN0RXJyb3JVdGlscyA9IF9fd2VicGFja19yZXF1aXJlX18o
NDEpO1xuXHRcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdHZh
ciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0XG5cdC8qKlxuXHQgKiBJbmpl
Y3RlZCBkZXBlbmRlbmNpZXM6XG5cdCAqL1xuXHRcblx0LyoqXG5cdCAqIC0gYENvbXBvbmVudFRy
ZWVgOiBbcmVxdWlyZWRdIE1vZHVsZSB0aGF0IGNhbiBjb252ZXJ0IGJldHdlZW4gUmVhY3QgaW5z
dGFuY2VzXG5cdCAqICAgYW5kIGFjdHVhbCBub2RlIHJlZmVyZW5jZXMuXG5cdCAqL1xuXHR2YXIg
Q29tcG9uZW50VHJlZTtcblx0dmFyIFRyZWVUcmF2ZXJzYWw7XG5cdHZhciBpbmplY3Rpb24gPSB7
XG5cdCAgaW5qZWN0Q29tcG9uZW50VHJlZTogZnVuY3Rpb24gKEluamVjdGVkKSB7XG5cdCAgICBD
b21wb25lbnRUcmVlID0gSW5qZWN0ZWQ7XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoSW5qZWN0ZWQgJiYg
SW5qZWN0ZWQuZ2V0Tm9kZUZyb21JbnN0YW5jZSAmJiBJbmplY3RlZC5nZXRJbnN0YW5jZUZyb21O
b2RlLCAnRXZlbnRQbHVnaW5VdGlscy5pbmplY3Rpb24uaW5qZWN0Q29tcG9uZW50VHJlZSguLi4p
OiBJbmplY3RlZCAnICsgJ21vZHVsZSBpcyBtaXNzaW5nIGdldE5vZGVGcm9tSW5zdGFuY2Ugb3Ig
Z2V0SW5zdGFuY2VGcm9tTm9kZS4nKSA6IHZvaWQgMDtcblx0ICAgIH1cblx0ICB9LFxuXHQgIGlu
amVjdFRyZWVUcmF2ZXJzYWw6IGZ1bmN0aW9uIChJbmplY3RlZCkge1xuXHQgICAgVHJlZVRyYXZl
cnNhbCA9IEluamVjdGVkO1xuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKEluamVjdGVkICYmIEluamVjdGVk
LmlzQW5jZXN0b3IgJiYgSW5qZWN0ZWQuZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3IsICdFdmVudFBs
dWdpblV0aWxzLmluamVjdGlvbi5pbmplY3RUcmVlVHJhdmVyc2FsKC4uLik6IEluamVjdGVkICcg
KyAnbW9kdWxlIGlzIG1pc3NpbmcgaXNBbmNlc3RvciBvciBnZXRMb3dlc3RDb21tb25BbmNlc3Rv
ci4nKSA6IHZvaWQgMDtcblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdFxuXHRmdW5jdGlvbiBpc0Vu
ZGlzaCh0b3BMZXZlbFR5cGUpIHtcblx0ICByZXR1cm4gdG9wTGV2ZWxUeXBlID09PSAndG9wTW91
c2VVcCcgfHwgdG9wTGV2ZWxUeXBlID09PSAndG9wVG91Y2hFbmQnIHx8IHRvcExldmVsVHlwZSA9
PT0gJ3RvcFRvdWNoQ2FuY2VsJztcblx0fVxuXHRcblx0ZnVuY3Rpb24gaXNNb3ZlaXNoKHRvcExl
dmVsVHlwZSkge1xuXHQgIHJldHVybiB0b3BMZXZlbFR5cGUgPT09ICd0b3BNb3VzZU1vdmUnIHx8
IHRvcExldmVsVHlwZSA9PT0gJ3RvcFRvdWNoTW92ZSc7XG5cdH1cblx0ZnVuY3Rpb24gaXNTdGFy
dGlzaCh0b3BMZXZlbFR5cGUpIHtcblx0ICByZXR1cm4gdG9wTGV2ZWxUeXBlID09PSAndG9wTW91
c2VEb3duJyB8fCB0b3BMZXZlbFR5cGUgPT09ICd0b3BUb3VjaFN0YXJ0Jztcblx0fVxuXHRcblx0
dmFyIHZhbGlkYXRlRXZlbnREaXNwYXRjaGVzO1xuXHRpZiAoZmFsc2UpIHtcblx0ICB2YWxpZGF0
ZUV2ZW50RGlzcGF0Y2hlcyA9IGZ1bmN0aW9uIChldmVudCkge1xuXHQgICAgdmFyIGRpc3BhdGNo
TGlzdGVuZXJzID0gZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzO1xuXHQgICAgdmFyIGRpc3BhdGNo
SW5zdGFuY2VzID0gZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2VzO1xuXHRcblx0ICAgIHZhciBsaXN0
ZW5lcnNJc0FyciA9IEFycmF5LmlzQXJyYXkoZGlzcGF0Y2hMaXN0ZW5lcnMpO1xuXHQgICAgdmFy
IGxpc3RlbmVyc0xlbiA9IGxpc3RlbmVyc0lzQXJyID8gZGlzcGF0Y2hMaXN0ZW5lcnMubGVuZ3Ro
IDogZGlzcGF0Y2hMaXN0ZW5lcnMgPyAxIDogMDtcblx0XG5cdCAgICB2YXIgaW5zdGFuY2VzSXNB
cnIgPSBBcnJheS5pc0FycmF5KGRpc3BhdGNoSW5zdGFuY2VzKTtcblx0ICAgIHZhciBpbnN0YW5j
ZXNMZW4gPSBpbnN0YW5jZXNJc0FyciA/IGRpc3BhdGNoSW5zdGFuY2VzLmxlbmd0aCA6IGRpc3Bh
dGNoSW5zdGFuY2VzID8gMSA6IDA7XG5cdFxuXHQgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoaW5zdGFuY2VzSXNBcnIgPT09IGxpc3RlbmVyc0lzQXJy
ICYmIGluc3RhbmNlc0xlbiA9PT0gbGlzdGVuZXJzTGVuLCAnRXZlbnRQbHVnaW5VdGlsczogSW52
YWxpZCBgZXZlbnRgLicpIDogdm9pZCAwO1xuXHQgIH07XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBE
aXNwYXRjaCB0aGUgZXZlbnQgdG8gdGhlIGxpc3RlbmVyLlxuXHQgKiBAcGFyYW0ge1N5bnRoZXRp
Y0V2ZW50fSBldmVudCBTeW50aGV0aWNFdmVudCB0byBoYW5kbGVcblx0ICogQHBhcmFtIHtib29s
ZWFufSBzaW11bGF0ZWQgSWYgdGhlIGV2ZW50IGlzIHNpbXVsYXRlZCAoY2hhbmdlcyBleG4gYmVo
YXZpb3IpXG5cdCAqIEBwYXJhbSB7ZnVuY3Rpb259IGxpc3RlbmVyIEFwcGxpY2F0aW9uLWxldmVs
IGNhbGxiYWNrXG5cdCAqIEBwYXJhbSB7Kn0gaW5zdCBJbnRlcm5hbCBjb21wb25lbnQgaW5zdGFu
Y2Vcblx0ICovXG5cdGZ1bmN0aW9uIGV4ZWN1dGVEaXNwYXRjaChldmVudCwgc2ltdWxhdGVkLCBs
aXN0ZW5lciwgaW5zdCkge1xuXHQgIHZhciB0eXBlID0gZXZlbnQudHlwZSB8fCAndW5rbm93bi1l
dmVudCc7XG5cdCAgZXZlbnQuY3VycmVudFRhcmdldCA9IEV2ZW50UGx1Z2luVXRpbHMuZ2V0Tm9k
ZUZyb21JbnN0YW5jZShpbnN0KTtcblx0ICBpZiAoc2ltdWxhdGVkKSB7XG5cdCAgICBSZWFjdEVy
cm9yVXRpbHMuaW52b2tlR3VhcmRlZENhbGxiYWNrV2l0aENhdGNoKHR5cGUsIGxpc3RlbmVyLCBl
dmVudCk7XG5cdCAgfSBlbHNlIHtcblx0ICAgIFJlYWN0RXJyb3JVdGlscy5pbnZva2VHdWFyZGVk
Q2FsbGJhY2sodHlwZSwgbGlzdGVuZXIsIGV2ZW50KTtcblx0ICB9XG5cdCAgZXZlbnQuY3VycmVu
dFRhcmdldCA9IG51bGw7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBTdGFuZGFyZC9zaW1wbGUgaXRl
cmF0aW9uIHRocm91Z2ggYW4gZXZlbnQncyBjb2xsZWN0ZWQgZGlzcGF0Y2hlcy5cblx0ICovXG5c
dGZ1bmN0aW9uIGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlcihldmVudCwgc2ltdWxhdGVkKSB7XG5c
dCAgdmFyIGRpc3BhdGNoTGlzdGVuZXJzID0gZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzO1xuXHQg
IHZhciBkaXNwYXRjaEluc3RhbmNlcyA9IGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcztcblx0ICBp
ZiAoZmFsc2UpIHtcblx0ICAgIHZhbGlkYXRlRXZlbnREaXNwYXRjaGVzKGV2ZW50KTtcblx0ICB9
XG5cdCAgaWYgKEFycmF5LmlzQXJyYXkoZGlzcGF0Y2hMaXN0ZW5lcnMpKSB7XG5cdCAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGRpc3BhdGNoTGlzdGVuZXJzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAg
IGlmIChldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKSB7XG5cdCAgICAgICAgYnJlYWs7XG5c
dCAgICAgIH1cblx0ICAgICAgLy8gTGlzdGVuZXJzIGFuZCBJbnN0YW5jZXMgYXJlIHR3byBwYXJh
bGxlbCBhcnJheXMgdGhhdCBhcmUgYWx3YXlzIGluIHN5bmMuXG5cdCAgICAgIGV4ZWN1dGVEaXNw
YXRjaChldmVudCwgc2ltdWxhdGVkLCBkaXNwYXRjaExpc3RlbmVyc1tpXSwgZGlzcGF0Y2hJbnN0
YW5jZXNbaV0pO1xuXHQgICAgfVxuXHQgIH0gZWxzZSBpZiAoZGlzcGF0Y2hMaXN0ZW5lcnMpIHtc
blx0ICAgIGV4ZWN1dGVEaXNwYXRjaChldmVudCwgc2ltdWxhdGVkLCBkaXNwYXRjaExpc3RlbmVy
cywgZGlzcGF0Y2hJbnN0YW5jZXMpO1xuXHQgIH1cblx0ICBldmVudC5fZGlzcGF0Y2hMaXN0ZW5l
cnMgPSBudWxsO1xuXHQgIGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcyA9IG51bGw7XG5cdH1cblx0
XG5cdC8qKlxuXHQgKiBTdGFuZGFyZC9zaW1wbGUgaXRlcmF0aW9uIHRocm91Z2ggYW4gZXZlbnQn
cyBjb2xsZWN0ZWQgZGlzcGF0Y2hlcywgYnV0IHN0b3BzXG5cdCAqIGF0IHRoZSBmaXJzdCBkaXNw
YXRjaCBleGVjdXRpb24gcmV0dXJuaW5nIHRydWUsIGFuZCByZXR1cm5zIHRoYXQgaWQuXG5cdCAq
XG5cdCAqIEByZXR1cm4gez9zdHJpbmd9IGlkIG9mIHRoZSBmaXJzdCBkaXNwYXRjaCBleGVjdXRp
b24gd2hvJ3MgbGlzdGVuZXIgcmV0dXJuc1xuXHQgKiB0cnVlLCBvciBudWxsIGlmIG5vIGxpc3Rl
bmVyIHJldHVybmVkIHRydWUuXG5cdCAqL1xuXHRmdW5jdGlvbiBleGVjdXRlRGlzcGF0Y2hlc0lu
T3JkZXJTdG9wQXRUcnVlSW1wbChldmVudCkge1xuXHQgIHZhciBkaXNwYXRjaExpc3RlbmVycyA9
IGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycztcblx0ICB2YXIgZGlzcGF0Y2hJbnN0YW5jZXMgPSBl
dmVudC5fZGlzcGF0Y2hJbnN0YW5jZXM7XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICB2YWxpZGF0
ZUV2ZW50RGlzcGF0Y2hlcyhldmVudCk7XG5cdCAgfVxuXHQgIGlmIChBcnJheS5pc0FycmF5KGRp
c3BhdGNoTGlzdGVuZXJzKSkge1xuXHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXNwYXRjaExp
c3RlbmVycy5sZW5ndGg7IGkrKykge1xuXHQgICAgICBpZiAoZXZlbnQuaXNQcm9wYWdhdGlvblN0
b3BwZWQoKSkge1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICB9XG5cdCAgICAgIC8vIExpc3Rl
bmVycyBhbmQgSW5zdGFuY2VzIGFyZSB0d28gcGFyYWxsZWwgYXJyYXlzIHRoYXQgYXJlIGFsd2F5
cyBpbiBzeW5jLlxuXHQgICAgICBpZiAoZGlzcGF0Y2hMaXN0ZW5lcnNbaV0oZXZlbnQsIGRpc3Bh
dGNoSW5zdGFuY2VzW2ldKSkge1xuXHQgICAgICAgIHJldHVybiBkaXNwYXRjaEluc3RhbmNlc1tp
XTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH0gZWxzZSBpZiAoZGlzcGF0Y2hMaXN0ZW5lcnMp
IHtcblx0ICAgIGlmIChkaXNwYXRjaExpc3RlbmVycyhldmVudCwgZGlzcGF0Y2hJbnN0YW5jZXMp
KSB7XG5cdCAgICAgIHJldHVybiBkaXNwYXRjaEluc3RhbmNlcztcblx0ICAgIH1cblx0ICB9XG5c
dCAgcmV0dXJuIG51bGw7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBAc2VlIGV4ZWN1dGVEaXNwYXRj
aGVzSW5PcmRlclN0b3BBdFRydWVJbXBsXG5cdCAqL1xuXHRmdW5jdGlvbiBleGVjdXRlRGlzcGF0
Y2hlc0luT3JkZXJTdG9wQXRUcnVlKGV2ZW50KSB7XG5cdCAgdmFyIHJldCA9IGV4ZWN1dGVEaXNw
YXRjaGVzSW5PcmRlclN0b3BBdFRydWVJbXBsKGV2ZW50KTtcblx0ICBldmVudC5fZGlzcGF0Y2hJ
bnN0YW5jZXMgPSBudWxsO1xuXHQgIGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycyA9IG51bGw7XG5c
dCAgcmV0dXJuIHJldDtcblx0fVxuXHRcblx0LyoqXG5cdCAqIEV4ZWN1dGlvbiBvZiBhIFwiZGly
ZWN0XCIgZGlzcGF0Y2ggLSB0aGVyZSBtdXN0IGJlIGF0IG1vc3Qgb25lIGRpc3BhdGNoXG5cdCAq
IGFjY3VtdWxhdGVkIG9uIHRoZSBldmVudCBvciBpdCBpcyBjb25zaWRlcmVkIGFuIGVycm9yLiBJ
dCBkb2Vzbid0IHJlYWxseSBtYWtlXG5cdCAqIHNlbnNlIGZvciBhbiBldmVudCB3aXRoIG11bHRp
cGxlIGRpc3BhdGNoZXMgKGJ1YmJsZWQpIHRvIGtlZXAgdHJhY2sgb2YgdGhlXG5cdCAqIHJldHVy
biB2YWx1ZXMgYXQgZWFjaCBkaXNwYXRjaCBleGVjdXRpb24sIGJ1dCBpdCBkb2VzIHRlbmQgdG8g
bWFrZSBzZW5zZSB3aGVuXG5cdCAqIGRlYWxpbmcgd2l0aCBcImRpcmVjdFwiIGRpc3BhdGNoZXMu
XG5cdCAqXG5cdCAqIEByZXR1cm4geyp9IFRoZSByZXR1cm4gdmFsdWUgb2YgZXhlY3V0aW5nIHRo
ZSBzaW5nbGUgZGlzcGF0Y2guXG5cdCAqL1xuXHRmdW5jdGlvbiBleGVjdXRlRGlyZWN0RGlzcGF0
Y2goZXZlbnQpIHtcblx0ICBpZiAoZmFsc2UpIHtcblx0ICAgIHZhbGlkYXRlRXZlbnREaXNwYXRj
aGVzKGV2ZW50KTtcblx0ICB9XG5cdCAgdmFyIGRpc3BhdGNoTGlzdGVuZXIgPSBldmVudC5fZGlz
cGF0Y2hMaXN0ZW5lcnM7XG5cdCAgdmFyIGRpc3BhdGNoSW5zdGFuY2UgPSBldmVudC5fZGlzcGF0
Y2hJbnN0YW5jZXM7XG5cdCAgISFBcnJheS5pc0FycmF5KGRpc3BhdGNoTGlzdGVuZXIpID8gIGZh
bHNlID8gaW52YXJpYW50KGZhbHNlLCAnZXhlY3V0ZURpcmVjdERpc3BhdGNoKC4uLik6IEludmFs
aWQgYGV2ZW50YC4nKSA6IF9wcm9kSW52YXJpYW50KCcxMDMnKSA6IHZvaWQgMDtcblx0ICBldmVu
dC5jdXJyZW50VGFyZ2V0ID0gZGlzcGF0Y2hMaXN0ZW5lciA/IEV2ZW50UGx1Z2luVXRpbHMuZ2V0
Tm9kZUZyb21JbnN0YW5jZShkaXNwYXRjaEluc3RhbmNlKSA6IG51bGw7XG5cdCAgdmFyIHJlcyA9
IGRpc3BhdGNoTGlzdGVuZXIgPyBkaXNwYXRjaExpc3RlbmVyKGV2ZW50KSA6IG51bGw7XG5cdCAg
ZXZlbnQuY3VycmVudFRhcmdldCA9IG51bGw7XG5cdCAgZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJz
ID0gbnVsbDtcblx0ICBldmVudC5fZGlzcGF0Y2hJbnN0YW5jZXMgPSBudWxsO1xuXHQgIHJldHVy
biByZXM7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBAcGFyYW0ge1N5bnRoZXRpY0V2ZW50fSBldmVu
dFxuXHQgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmZiBudW1iZXIgb2YgZGlzcGF0Y2hlcyBh
Y2N1bXVsYXRlZCBpcyBncmVhdGVyIHRoYW4gMC5cblx0ICovXG5cdGZ1bmN0aW9uIGhhc0Rpc3Bh
dGNoZXMoZXZlbnQpIHtcblx0ICByZXR1cm4gISFldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnM7XG5c
dH1cblx0XG5cdC8qKlxuXHQgKiBHZW5lcmFsIHV0aWxpdGllcyB0aGF0IGFyZSB1c2VmdWwgaW4g
Y3JlYXRpbmcgY3VzdG9tIEV2ZW50IFBsdWdpbnMuXG5cdCAqL1xuXHR2YXIgRXZlbnRQbHVnaW5V
dGlscyA9IHtcblx0ICBpc0VuZGlzaDogaXNFbmRpc2gsXG5cdCAgaXNNb3ZlaXNoOiBpc01vdmVp
c2gsXG5cdCAgaXNTdGFydGlzaDogaXNTdGFydGlzaCxcblx0XG5cdCAgZXhlY3V0ZURpcmVjdERp
c3BhdGNoOiBleGVjdXRlRGlyZWN0RGlzcGF0Y2gsXG5cdCAgZXhlY3V0ZURpc3BhdGNoZXNJbk9y
ZGVyOiBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIsXG5cdCAgZXhlY3V0ZURpc3BhdGNoZXNJbk9y
ZGVyU3RvcEF0VHJ1ZTogZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZSxcblx0ICBo
YXNEaXNwYXRjaGVzOiBoYXNEaXNwYXRjaGVzLFxuXHRcblx0ICBnZXRJbnN0YW5jZUZyb21Ob2Rl
OiBmdW5jdGlvbiAobm9kZSkge1xuXHQgICAgcmV0dXJuIENvbXBvbmVudFRyZWUuZ2V0SW5zdGFu
Y2VGcm9tTm9kZShub2RlKTtcblx0ICB9LFxuXHQgIGdldE5vZGVGcm9tSW5zdGFuY2U6IGZ1bmN0
aW9uIChub2RlKSB7XG5cdCAgICByZXR1cm4gQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3Rh
bmNlKG5vZGUpO1xuXHQgIH0sXG5cdCAgaXNBbmNlc3RvcjogZnVuY3Rpb24gKGEsIGIpIHtcblx0
ICAgIHJldHVybiBUcmVlVHJhdmVyc2FsLmlzQW5jZXN0b3IoYSwgYik7XG5cdCAgfSxcblx0ICBn
ZXRMb3dlc3RDb21tb25BbmNlc3RvcjogZnVuY3Rpb24gKGEsIGIpIHtcblx0ICAgIHJldHVybiBU
cmVlVHJhdmVyc2FsLmdldExvd2VzdENvbW1vbkFuY2VzdG9yKGEsIGIpO1xuXHQgIH0sXG5cdCAg
Z2V0UGFyZW50SW5zdGFuY2U6IGZ1bmN0aW9uIChpbnN0KSB7XG5cdCAgICByZXR1cm4gVHJlZVRy
YXZlcnNhbC5nZXRQYXJlbnRJbnN0YW5jZShpbnN0KTtcblx0ICB9LFxuXHQgIHRyYXZlcnNlVHdv
UGhhc2U6IGZ1bmN0aW9uICh0YXJnZXQsIGZuLCBhcmcpIHtcblx0ICAgIHJldHVybiBUcmVlVHJh
dmVyc2FsLnRyYXZlcnNlVHdvUGhhc2UodGFyZ2V0LCBmbiwgYXJnKTtcblx0ICB9LFxuXHQgIHRy
YXZlcnNlRW50ZXJMZWF2ZTogZnVuY3Rpb24gKGZyb20sIHRvLCBmbiwgYXJnRnJvbSwgYXJnVG8p
IHtcblx0ICAgIHJldHVybiBUcmVlVHJhdmVyc2FsLnRyYXZlcnNlRW50ZXJMZWF2ZShmcm9tLCB0
bywgZm4sIGFyZ0Zyb20sIGFyZ1RvKTtcblx0ICB9LFxuXHRcblx0ICBpbmplY3Rpb246IGluamVj
dGlvblxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBFdmVudFBsdWdpblV0aWxzO1xuXG4v
KioqLyB9LFxuLyogMzggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5c
dC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0ICovXG5c
dFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQvKipcblx0ICogRXNjYXBlIGFuZCB3cmFwIGtleSBz
byBpdCBpcyBzYWZlIHRvIHVzZSBhcyBhIHJlYWN0aWRcblx0ICpcblx0ICogQHBhcmFtIHtzdHJp
bmd9IGtleSB0byBiZSBlc2NhcGVkLlxuXHQgKiBAcmV0dXJuIHtzdHJpbmd9IHRoZSBlc2NhcGVk
IGtleS5cblx0ICovXG5cdFxuXHRmdW5jdGlvbiBlc2NhcGUoa2V5KSB7XG5cdCAgdmFyIGVzY2Fw
ZVJlZ2V4ID0gL1s9Ol0vZztcblx0ICB2YXIgZXNjYXBlckxvb2t1cCA9IHtcblx0ICAgICc9Jzog
Jz0wJyxcblx0ICAgICc6JzogJz0yJ1xuXHQgIH07XG5cdCAgdmFyIGVzY2FwZWRTdHJpbmcgPSAo
JycgKyBrZXkpLnJlcGxhY2UoZXNjYXBlUmVnZXgsIGZ1bmN0aW9uIChtYXRjaCkge1xuXHQgICAg
cmV0dXJuIGVzY2FwZXJMb29rdXBbbWF0Y2hdO1xuXHQgIH0pO1xuXHRcblx0ICByZXR1cm4gJyQn
ICsgZXNjYXBlZFN0cmluZztcblx0fVxuXHRcblx0LyoqXG5cdCAqIFVuZXNjYXBlIGFuZCB1bndy
YXAga2V5IGZvciBodW1hbi1yZWFkYWJsZSBkaXNwbGF5XG5cdCAqXG5cdCAqIEBwYXJhbSB7c3Ry
aW5nfSBrZXkgdG8gdW5lc2NhcGUuXG5cdCAqIEByZXR1cm4ge3N0cmluZ30gdGhlIHVuZXNjYXBl
ZCBrZXkuXG5cdCAqL1xuXHRmdW5jdGlvbiB1bmVzY2FwZShrZXkpIHtcblx0ICB2YXIgdW5lc2Nh
cGVSZWdleCA9IC8oPTB8PTIpL2c7XG5cdCAgdmFyIHVuZXNjYXBlckxvb2t1cCA9IHtcblx0ICAg
ICc9MCc6ICc9Jyxcblx0ICAgICc9Mic6ICc6J1xuXHQgIH07XG5cdCAgdmFyIGtleVN1YnN0cmlu
ZyA9IGtleVswXSA9PT0gJy4nICYmIGtleVsxXSA9PT0gJyQnID8ga2V5LnN1YnN0cmluZygyKSA6
IGtleS5zdWJzdHJpbmcoMSk7XG5cdFxuXHQgIHJldHVybiAoJycgKyBrZXlTdWJzdHJpbmcpLnJl
cGxhY2UodW5lc2NhcGVSZWdleCwgZnVuY3Rpb24gKG1hdGNoKSB7XG5cdCAgICByZXR1cm4gdW5l
c2NhcGVyTG9va3VwW21hdGNoXTtcblx0ICB9KTtcblx0fVxuXHRcblx0dmFyIEtleUVzY2FwZVV0
aWxzID0ge1xuXHQgIGVzY2FwZTogZXNjYXBlLFxuXHQgIHVuZXNjYXBlOiB1bmVzY2FwZVxuXHR9
O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBLZXlFc2NhcGVVdGlscztcblxuLyoqKi8gfSxcbi8q
IDM5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJl
X18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5c
dCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICov
XG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDMpO1xuXHRcblx0dmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gX193ZWJw
YWNrX3JlcXVpcmVfXygxNTgpO1xuXHR2YXIgcHJvcFR5cGVzRmFjdG9yeSA9IF9fd2VicGFja19y
ZXF1aXJlX18oNTUpO1xuXHRcblx0dmFyIFJlYWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNyk7
XG5cdHZhciBQcm9wVHlwZXMgPSBwcm9wVHlwZXNGYWN0b3J5KFJlYWN0LmlzVmFsaWRFbGVtZW50
KTtcblx0XG5cdHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHR2YXIg
d2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cdFxuXHR2YXIgaGFzUmVhZE9ubHlW
YWx1ZSA9IHtcblx0ICBidXR0b246IHRydWUsXG5cdCAgY2hlY2tib3g6IHRydWUsXG5cdCAgaW1h
Z2U6IHRydWUsXG5cdCAgaGlkZGVuOiB0cnVlLFxuXHQgIHJhZGlvOiB0cnVlLFxuXHQgIHJlc2V0
OiB0cnVlLFxuXHQgIHN1Ym1pdDogdHJ1ZVxuXHR9O1xuXHRcblx0ZnVuY3Rpb24gX2Fzc2VydFNp
bmdsZUxpbmsoaW5wdXRQcm9wcykge1xuXHQgICEoaW5wdXRQcm9wcy5jaGVja2VkTGluayA9PSBu
dWxsIHx8IGlucHV0UHJvcHMudmFsdWVMaW5rID09IG51bGwpID8gIGZhbHNlID8gaW52YXJpYW50
KGZhbHNlLCAnQ2Fubm90IHByb3ZpZGUgYSBjaGVja2VkTGluayBhbmQgYSB2YWx1ZUxpbmsuIElm
IHlvdSB3YW50IHRvIHVzZSBjaGVja2VkTGluaywgeW91IHByb2JhYmx5IGRvblxcJ3Qgd2FudCB0
byB1c2UgdmFsdWVMaW5rIGFuZCB2aWNlIHZlcnNhLicpIDogX3Byb2RJbnZhcmlhbnQoJzg3Jykg
OiB2b2lkIDA7XG5cdH1cblx0ZnVuY3Rpb24gX2Fzc2VydFZhbHVlTGluayhpbnB1dFByb3BzKSB7
XG5cdCAgX2Fzc2VydFNpbmdsZUxpbmsoaW5wdXRQcm9wcyk7XG5cdCAgIShpbnB1dFByb3BzLnZh
bHVlID09IG51bGwgJiYgaW5wdXRQcm9wcy5vbkNoYW5nZSA9PSBudWxsKSA/ICBmYWxzZSA/IGlu
dmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBwcm92aWRlIGEgdmFsdWVMaW5rIGFuZCBhIHZhbHVlIG9y
IG9uQ2hhbmdlIGV2ZW50LiBJZiB5b3Ugd2FudCB0byB1c2UgdmFsdWUgb3Igb25DaGFuZ2UsIHlv
dSBwcm9iYWJseSBkb25cXCd0IHdhbnQgdG8gdXNlIHZhbHVlTGluay4nKSA6IF9wcm9kSW52YXJp
YW50KCc4OCcpIDogdm9pZCAwO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBfYXNzZXJ0Q2hlY2tlZExp
bmsoaW5wdXRQcm9wcykge1xuXHQgIF9hc3NlcnRTaW5nbGVMaW5rKGlucHV0UHJvcHMpO1xuXHQg
ICEoaW5wdXRQcm9wcy5jaGVja2VkID09IG51bGwgJiYgaW5wdXRQcm9wcy5vbkNoYW5nZSA9PSBu
dWxsKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBwcm92aWRlIGEgY2hlY2tl
ZExpbmsgYW5kIGEgY2hlY2tlZCBwcm9wZXJ0eSBvciBvbkNoYW5nZSBldmVudC4gSWYgeW91IHdh
bnQgdG8gdXNlIGNoZWNrZWQgb3Igb25DaGFuZ2UsIHlvdSBwcm9iYWJseSBkb25cXCd0IHdhbnQg
dG8gdXNlIGNoZWNrZWRMaW5rJykgOiBfcHJvZEludmFyaWFudCgnODknKSA6IHZvaWQgMDtcblx0
fVxuXHRcblx0dmFyIHByb3BUeXBlcyA9IHtcblx0ICB2YWx1ZTogZnVuY3Rpb24gKHByb3BzLCBw
cm9wTmFtZSwgY29tcG9uZW50TmFtZSkge1xuXHQgICAgaWYgKCFwcm9wc1twcm9wTmFtZV0gfHwg
aGFzUmVhZE9ubHlWYWx1ZVtwcm9wcy50eXBlXSB8fCBwcm9wcy5vbkNoYW5nZSB8fCBwcm9wcy5y
ZWFkT25seSB8fCBwcm9wcy5kaXNhYmxlZCkge1xuXHQgICAgICByZXR1cm4gbnVsbDtcblx0ICAg
IH1cblx0ICAgIHJldHVybiBuZXcgRXJyb3IoJ1lvdSBwcm92aWRlZCBhIGB2YWx1ZWAgcHJvcCB0
byBhIGZvcm0gZmllbGQgd2l0aG91dCBhbiAnICsgJ2BvbkNoYW5nZWAgaGFuZGxlci4gVGhpcyB3
aWxsIHJlbmRlciBhIHJlYWQtb25seSBmaWVsZC4gSWYgJyArICd0aGUgZmllbGQgc2hvdWxkIGJl
IG11dGFibGUgdXNlIGBkZWZhdWx0VmFsdWVgLiBPdGhlcndpc2UsICcgKyAnc2V0IGVpdGhlciBg
b25DaGFuZ2VgIG9yIGByZWFkT25seWAuJyk7XG5cdCAgfSxcblx0ICBjaGVja2VkOiBmdW5jdGlv
biAocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lKSB7XG5cdCAgICBpZiAoIXByb3BzW3By
b3BOYW1lXSB8fCBwcm9wcy5vbkNoYW5nZSB8fCBwcm9wcy5yZWFkT25seSB8fCBwcm9wcy5kaXNh
YmxlZCkge1xuXHQgICAgICByZXR1cm4gbnVsbDtcblx0ICAgIH1cblx0ICAgIHJldHVybiBuZXcg
RXJyb3IoJ1lvdSBwcm92aWRlZCBhIGBjaGVja2VkYCBwcm9wIHRvIGEgZm9ybSBmaWVsZCB3aXRo
b3V0IGFuICcgKyAnYG9uQ2hhbmdlYCBoYW5kbGVyLiBUaGlzIHdpbGwgcmVuZGVyIGEgcmVhZC1v
bmx5IGZpZWxkLiBJZiAnICsgJ3RoZSBmaWVsZCBzaG91bGQgYmUgbXV0YWJsZSB1c2UgYGRlZmF1
bHRDaGVja2VkYC4gT3RoZXJ3aXNlLCAnICsgJ3NldCBlaXRoZXIgYG9uQ2hhbmdlYCBvciBgcmVh
ZE9ubHlgLicpO1xuXHQgIH0sXG5cdCAgb25DaGFuZ2U6IFByb3BUeXBlcy5mdW5jXG5cdH07XG5c
dFxuXHR2YXIgbG9nZ2VkVHlwZUZhaWx1cmVzID0ge307XG5cdGZ1bmN0aW9uIGdldERlY2xhcmF0
aW9uRXJyb3JBZGRlbmR1bShvd25lcikge1xuXHQgIGlmIChvd25lcikge1xuXHQgICAgdmFyIG5h
bWUgPSBvd25lci5nZXROYW1lKCk7XG5cdCAgICBpZiAobmFtZSkge1xuXHQgICAgICByZXR1cm4g
JyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xuXHQgICAgfVxu
XHQgIH1cblx0ICByZXR1cm4gJyc7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBQcm92aWRlIGEgbGlu
a2VkIGB2YWx1ZWAgYXR0cmlidXRlIGZvciBjb250cm9sbGVkIGZvcm1zLiBZb3Ugc2hvdWxkIG5v
dCB1c2Vcblx0ICogdGhpcyBvdXRzaWRlIG9mIHRoZSBSZWFjdERPTSBjb250cm9sbGVkIGZvcm0g
Y29tcG9uZW50cy5cblx0ICovXG5cdHZhciBMaW5rZWRWYWx1ZVV0aWxzID0ge1xuXHQgIGNoZWNr
UHJvcFR5cGVzOiBmdW5jdGlvbiAodGFnTmFtZSwgcHJvcHMsIG93bmVyKSB7XG5cdCAgICBmb3Ig
KHZhciBwcm9wTmFtZSBpbiBwcm9wVHlwZXMpIHtcblx0ICAgICAgaWYgKHByb3BUeXBlcy5oYXNP
d25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcblx0ICAgICAgICB2YXIgZXJyb3IgPSBwcm9wVHlwZXNb
cHJvcE5hbWVdKHByb3BzLCBwcm9wTmFtZSwgdGFnTmFtZSwgJ3Byb3AnLCBudWxsLCBSZWFjdFBy
b3BUeXBlc1NlY3JldCk7XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2Yg
RXJyb3IgJiYgIShlcnJvci5tZXNzYWdlIGluIGxvZ2dlZFR5cGVGYWlsdXJlcykpIHtcblx0ICAg
ICAgICAvLyBPbmx5IG1vbml0b3IgdGhpcyBmYWlsdXJlIG9uY2UgYmVjYXVzZSB0aGVyZSB0ZW5k
cyB0byBiZSBhIGxvdCBvZiB0aGVcblx0ICAgICAgICAvLyBzYW1lIGVycm9yLlxuXHQgICAgICAg
IGxvZ2dlZFR5cGVGYWlsdXJlc1tlcnJvci5tZXNzYWdlXSA9IHRydWU7XG5cdFxuXHQgICAgICAg
IHZhciBhZGRlbmR1bSA9IGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShvd25lcik7XG5cdCAg
ICAgICAgIGZhbHNlID8gd2FybmluZyhmYWxzZSwgJ0ZhaWxlZCBmb3JtIHByb3BUeXBlOiAlcyVz
JywgZXJyb3IubWVzc2FnZSwgYWRkZW5kdW0pIDogdm9pZCAwO1xuXHQgICAgICB9XG5cdCAgICB9
XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGlucHV0UHJvcHMg
UHJvcHMgZm9yIGZvcm0gY29tcG9uZW50XG5cdCAgICogQHJldHVybiB7Kn0gY3VycmVudCB2YWx1
ZSBvZiB0aGUgaW5wdXQgZWl0aGVyIGZyb20gdmFsdWUgcHJvcCBvciBsaW5rLlxuXHQgICAqL1xu
XHQgIGdldFZhbHVlOiBmdW5jdGlvbiAoaW5wdXRQcm9wcykge1xuXHQgICAgaWYgKGlucHV0UHJv
cHMudmFsdWVMaW5rKSB7XG5cdCAgICAgIF9hc3NlcnRWYWx1ZUxpbmsoaW5wdXRQcm9wcyk7XG5c
dCAgICAgIHJldHVybiBpbnB1dFByb3BzLnZhbHVlTGluay52YWx1ZTtcblx0ICAgIH1cblx0ICAg
IHJldHVybiBpbnB1dFByb3BzLnZhbHVlO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEBw
YXJhbSB7b2JqZWN0fSBpbnB1dFByb3BzIFByb3BzIGZvciBmb3JtIGNvbXBvbmVudFxuXHQgICAq
IEByZXR1cm4geyp9IGN1cnJlbnQgY2hlY2tlZCBzdGF0dXMgb2YgdGhlIGlucHV0IGVpdGhlciBm
cm9tIGNoZWNrZWQgcHJvcFxuXHQgICAqICAgICAgICAgICAgIG9yIGxpbmsuXG5cdCAgICovXG5c
dCAgZ2V0Q2hlY2tlZDogZnVuY3Rpb24gKGlucHV0UHJvcHMpIHtcblx0ICAgIGlmIChpbnB1dFBy
b3BzLmNoZWNrZWRMaW5rKSB7XG5cdCAgICAgIF9hc3NlcnRDaGVja2VkTGluayhpbnB1dFByb3Bz
KTtcblx0ICAgICAgcmV0dXJuIGlucHV0UHJvcHMuY2hlY2tlZExpbmsudmFsdWU7XG5cdCAgICB9
XG5cdCAgICByZXR1cm4gaW5wdXRQcm9wcy5jaGVja2VkO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxu
XHQgICAqIEBwYXJhbSB7b2JqZWN0fSBpbnB1dFByb3BzIFByb3BzIGZvciBmb3JtIGNvbXBvbmVu
dFxuXHQgICAqIEBwYXJhbSB7U3ludGhldGljRXZlbnR9IGV2ZW50IGNoYW5nZSBldmVudCB0byBo
YW5kbGVcblx0ICAgKi9cblx0ICBleGVjdXRlT25DaGFuZ2U6IGZ1bmN0aW9uIChpbnB1dFByb3Bz
LCBldmVudCkge1xuXHQgICAgaWYgKGlucHV0UHJvcHMudmFsdWVMaW5rKSB7XG5cdCAgICAgIF9h
c3NlcnRWYWx1ZUxpbmsoaW5wdXRQcm9wcyk7XG5cdCAgICAgIHJldHVybiBpbnB1dFByb3BzLnZh
bHVlTGluay5yZXF1ZXN0Q2hhbmdlKGV2ZW50LnRhcmdldC52YWx1ZSk7XG5cdCAgICB9IGVsc2Ug
aWYgKGlucHV0UHJvcHMuY2hlY2tlZExpbmspIHtcblx0ICAgICAgX2Fzc2VydENoZWNrZWRMaW5r
KGlucHV0UHJvcHMpO1xuXHQgICAgICByZXR1cm4gaW5wdXRQcm9wcy5jaGVja2VkTGluay5yZXF1
ZXN0Q2hhbmdlKGV2ZW50LnRhcmdldC5jaGVja2VkKTtcblx0ICAgIH0gZWxzZSBpZiAoaW5wdXRQ
cm9wcy5vbkNoYW5nZSkge1xuXHQgICAgICByZXR1cm4gaW5wdXRQcm9wcy5vbkNoYW5nZS5jYWxs
KHVuZGVmaW5lZCwgZXZlbnQpO1xuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5l
eHBvcnRzID0gTGlua2VkVmFsdWVVdGlscztcblxuLyoqKi8gfSxcbi8qIDQwICovXG4vKioqLyBm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipc
blx0ICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJp
Z2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogXG5cdCAqL1xuXHRcblx0
J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVp
cmVfXygzKTtcblx0XG5cdHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xu
XHRcblx0dmFyIGluamVjdGVkID0gZmFsc2U7XG5cdFxuXHR2YXIgUmVhY3RDb21wb25lbnRFbnZp
cm9ubWVudCA9IHtcblx0ICAvKipcblx0ICAgKiBPcHRpb25hbGx5IGluamVjdGFibGUgaG9vayBm
b3Igc3dhcHBpbmcgb3V0IG1vdW50IGltYWdlcyBpbiB0aGUgbWlkZGxlIG9mXG5cdCAgICogdGhl
IHRyZWUuXG5cdCAgICovXG5cdCAgcmVwbGFjZU5vZGVXaXRoTWFya3VwOiBudWxsLFxuXHRcblx0
ICAvKipcblx0ICAgKiBPcHRpb25hbGx5IGluamVjdGFibGUgaG9vayBmb3IgcHJvY2Vzc2luZyBh
IHF1ZXVlIG9mIGNoaWxkIHVwZGF0ZXMuIFdpbGxcblx0ICAgKiBsYXRlciBtb3ZlIGludG8gTXVs
dGlDaGlsZENvbXBvbmVudHMuXG5cdCAgICovXG5cdCAgcHJvY2Vzc0NoaWxkcmVuVXBkYXRlczog
bnVsbCxcblx0XG5cdCAgaW5qZWN0aW9uOiB7XG5cdCAgICBpbmplY3RFbnZpcm9ubWVudDogZnVu
Y3Rpb24gKGVudmlyb25tZW50KSB7XG5cdCAgICAgICEhaW5qZWN0ZWQgPyAgZmFsc2UgPyBpbnZh
cmlhbnQoZmFsc2UsICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudDogaW5qZWN0RW52aXJvbm1lbnQo
KSBjYW4gb25seSBiZSBjYWxsZWQgb25jZS4nKSA6IF9wcm9kSW52YXJpYW50KCcxMDQnKSA6IHZv
aWQgMDtcblx0ICAgICAgUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5yZXBsYWNlTm9kZVdpdGhN
YXJrdXAgPSBlbnZpcm9ubWVudC5yZXBsYWNlTm9kZVdpdGhNYXJrdXA7XG5cdCAgICAgIFJlYWN0
Q29tcG9uZW50RW52aXJvbm1lbnQucHJvY2Vzc0NoaWxkcmVuVXBkYXRlcyA9IGVudmlyb25tZW50
LnByb2Nlc3NDaGlsZHJlblVwZGF0ZXM7XG5cdCAgICAgIGluamVjdGVkID0gdHJ1ZTtcblx0ICAg
IH1cblx0ICB9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q29tcG9uZW50RW52
aXJvbm1lbnQ7XG5cbi8qKiovIH0sXG4vKiA0MSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBl
eHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5c
dCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0
XG5cdHZhciBjYXVnaHRFcnJvciA9IG51bGw7XG5cdFxuXHQvKipcblx0ICogQ2FsbCBhIGZ1bmN0
aW9uIHdoaWxlIGd1YXJkaW5nIGFnYWluc3QgZXJyb3JzIHRoYXQgaGFwcGVucyB3aXRoaW4gaXQu
XG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIG9mIHRoZSBndWFyZCB0byB1c2UgZm9y
IGxvZ2dpbmcgb3IgZGVidWdnaW5nXG5cdCAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1
bmN0aW9uIHRvIGludm9rZVxuXHQgKiBAcGFyYW0geyp9IGEgRmlyc3QgYXJndW1lbnRcblx0ICog
QHBhcmFtIHsqfSBiIFNlY29uZCBhcmd1bWVudFxuXHQgKi9cblx0ZnVuY3Rpb24gaW52b2tlR3Vh
cmRlZENhbGxiYWNrKG5hbWUsIGZ1bmMsIGEpIHtcblx0ICB0cnkge1xuXHQgICAgZnVuYyhhKTtc
blx0ICB9IGNhdGNoICh4KSB7XG5cdCAgICBpZiAoY2F1Z2h0RXJyb3IgPT09IG51bGwpIHtcblx0
ICAgICAgY2F1Z2h0RXJyb3IgPSB4O1xuXHQgICAgfVxuXHQgIH1cblx0fVxuXHRcblx0dmFyIFJl
YWN0RXJyb3JVdGlscyA9IHtcblx0ICBpbnZva2VHdWFyZGVkQ2FsbGJhY2s6IGludm9rZUd1YXJk
ZWRDYWxsYmFjayxcblx0XG5cdCAgLyoqXG5cdCAgICogSW52b2tlZCBieSBSZWFjdFRlc3RVdGls
cy5TaW11bGF0ZSBzbyB0aGF0IGFueSBlcnJvcnMgdGhyb3duIGJ5IHRoZSBldmVudFxuXHQgICAq
IGhhbmRsZXIgYXJlIHN1cmUgdG8gYmUgcmV0aHJvd24gYnkgcmV0aHJvd0NhdWdodEVycm9yLlxu
XHQgICAqL1xuXHQgIGludm9rZUd1YXJkZWRDYWxsYmFja1dpdGhDYXRjaDogaW52b2tlR3VhcmRl
ZENhbGxiYWNrLFxuXHRcblx0ICAvKipcblx0ICAgKiBEdXJpbmcgZXhlY3V0aW9uIG9mIGd1YXJk
ZWQgZnVuY3Rpb25zIHdlIHdpbGwgY2FwdHVyZSB0aGUgZmlyc3QgZXJyb3Igd2hpY2hcblx0ICAg
KiB3ZSB3aWxsIHJldGhyb3cgdG8gYmUgaGFuZGxlZCBieSB0aGUgdG9wIGxldmVsIGVycm9yIGhh
bmRsZXIuXG5cdCAgICovXG5cdCAgcmV0aHJvd0NhdWdodEVycm9yOiBmdW5jdGlvbiAoKSB7XG5c
dCAgICBpZiAoY2F1Z2h0RXJyb3IpIHtcblx0ICAgICAgdmFyIGVycm9yID0gY2F1Z2h0RXJyb3I7
XG5cdCAgICAgIGNhdWdodEVycm9yID0gbnVsbDtcblx0ICAgICAgdGhyb3cgZXJyb3I7XG5cdCAg
ICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0aWYgKGZhbHNlKSB7XG5cdCAgLyoqXG5cdCAgICogVG8g
aGVscCBkZXZlbG9wbWVudCB3ZSBjYW4gZ2V0IGJldHRlciBkZXZ0b29scyBpbnRlZ3JhdGlvbiBi
eSBzaW11bGF0aW5nIGFcblx0ICAgKiByZWFsIGJyb3dzZXIgZXZlbnQuXG5cdCAgICovXG5cdCAg
aWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB3aW5kb3cuZGlzcGF0
Y2hFdmVudCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQn
ICYmIHR5cGVvZiBkb2N1bWVudC5jcmVhdGVFdmVudCA9PT0gJ2Z1bmN0aW9uJykge1xuXHQgICAg
dmFyIGZha2VOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgncmVhY3QnKTtcblx0ICAgIFJl
YWN0RXJyb3JVdGlscy5pbnZva2VHdWFyZGVkQ2FsbGJhY2sgPSBmdW5jdGlvbiAobmFtZSwgZnVu
YywgYSkge1xuXHQgICAgICB2YXIgYm91bmRGdW5jID0gZnVuYy5iaW5kKG51bGwsIGEpO1xuXHQg
ICAgICB2YXIgZXZ0VHlwZSA9ICdyZWFjdC0nICsgbmFtZTtcblx0ICAgICAgZmFrZU5vZGUuYWRk
RXZlbnRMaXN0ZW5lcihldnRUeXBlLCBib3VuZEZ1bmMsIGZhbHNlKTtcblx0ICAgICAgdmFyIGV2
dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpO1xuXHQgICAgICBldnQuaW5pdEV2ZW50
KGV2dFR5cGUsIGZhbHNlLCBmYWxzZSk7XG5cdCAgICAgIGZha2VOb2RlLmRpc3BhdGNoRXZlbnQo
ZXZ0KTtcblx0ICAgICAgZmFrZU5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihldnRUeXBlLCBib3Vu
ZEZ1bmMsIGZhbHNlKTtcblx0ICAgIH07XG5cdCAgfVxuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0
cyA9IFJlYWN0RXJyb3JVdGlscztcblxuLyoqKi8gfSxcbi8qIDQyICovXG4vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICog
Q29weXJpZ2h0IDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7
XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXHRc
blx0dmFyIFJlYWN0Q3VycmVudE93bmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSk7XG5cdHZh
ciBSZWFjdEluc3RhbmNlTWFwID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMSk7XG5cdHZhciBSZWFj
dEluc3RydW1lbnRhdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7XG5cdHZhciBSZWFjdFVw
ZGF0ZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuXHRcblx0dmFyIGludmFyaWFudCA9IF9f
d2VicGFja19yZXF1aXJlX18oMSk7XG5cdHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVf
XygyKTtcblx0XG5cdGZ1bmN0aW9uIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSkge1xu
XHQgIFJlYWN0VXBkYXRlcy5lbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpO1xuXHR9XG5c
dFxuXHRmdW5jdGlvbiBmb3JtYXRVbmV4cGVjdGVkQXJndW1lbnQoYXJnKSB7XG5cdCAgdmFyIHR5
cGUgPSB0eXBlb2YgYXJnO1xuXHQgIGlmICh0eXBlICE9PSAnb2JqZWN0Jykge1xuXHQgICAgcmV0
dXJuIHR5cGU7XG5cdCAgfVxuXHQgIHZhciBkaXNwbGF5TmFtZSA9IGFyZy5jb25zdHJ1Y3RvciAm
JiBhcmcuY29uc3RydWN0b3IubmFtZSB8fCB0eXBlO1xuXHQgIHZhciBrZXlzID0gT2JqZWN0Lmtl
eXMoYXJnKTtcblx0ICBpZiAoa2V5cy5sZW5ndGggPiAwICYmIGtleXMubGVuZ3RoIDwgMjApIHtc
blx0ICAgIHJldHVybiBkaXNwbGF5TmFtZSArICcgKGtleXM6ICcgKyBrZXlzLmpvaW4oJywgJykg
KyAnKSc7XG5cdCAgfVxuXHQgIHJldHVybiBkaXNwbGF5TmFtZTtcblx0fVxuXHRcblx0ZnVuY3Rp
b24gZ2V0SW50ZXJuYWxJbnN0YW5jZVJlYWR5Rm9yVXBkYXRlKHB1YmxpY0luc3RhbmNlLCBjYWxs
ZXJOYW1lKSB7XG5cdCAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBSZWFjdEluc3RhbmNlTWFwLmdl
dChwdWJsaWNJbnN0YW5jZSk7XG5cdCAgaWYgKCFpbnRlcm5hbEluc3RhbmNlKSB7XG5cdCAgICBp
ZiAoZmFsc2UpIHtcblx0ICAgICAgdmFyIGN0b3IgPSBwdWJsaWNJbnN0YW5jZS5jb25zdHJ1Y3Rv
cjtcblx0ICAgICAgLy8gT25seSB3YXJuIHdoZW4gd2UgaGF2ZSBhIGNhbGxlck5hbWUuIE90aGVy
d2lzZSB3ZSBzaG91bGQgYmUgc2lsZW50LlxuXHQgICAgICAvLyBXZSdyZSBwcm9iYWJseSBjYWxs
aW5nIGZyb20gZW5xdWV1ZUNhbGxiYWNrLiBXZSBkb24ndCB3YW50IHRvIHdhcm5cblx0ICAgICAg
Ly8gdGhlcmUgYmVjYXVzZSB3ZSBhbHJlYWR5IHdhcm5lZCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcg
bGlmZWN5Y2xlIG1ldGhvZC5cblx0ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyA/IHdhcm5pbmcoIWNhbGxlck5hbWUsICclcyguLi4pOiBDYW4gb25seSB1cGRhdGUg
YSBtb3VudGVkIG9yIG1vdW50aW5nIGNvbXBvbmVudC4gJyArICdUaGlzIHVzdWFsbHkgbWVhbnMg
eW91IGNhbGxlZCAlcygpIG9uIGFuIHVubW91bnRlZCBjb21wb25lbnQuICcgKyAnVGhpcyBpcyBh
IG5vLW9wLiBQbGVhc2UgY2hlY2sgdGhlIGNvZGUgZm9yIHRoZSAlcyBjb21wb25lbnQuJywgY2Fs
bGVyTmFtZSwgY2FsbGVyTmFtZSwgY3RvciAmJiAoY3Rvci5kaXNwbGF5TmFtZSB8fCBjdG9yLm5h
bWUpIHx8ICdSZWFjdENsYXNzJykgOiB2b2lkIDA7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gbnVs
bDtcblx0ICB9XG5cdFxuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9
PSBudWxsLCAnJXMoLi4uKTogQ2Fubm90IHVwZGF0ZSBkdXJpbmcgYW4gZXhpc3Rpbmcgc3RhdGUg
dHJhbnNpdGlvbiAoc3VjaCBhcyAnICsgXCJ3aXRoaW4gYHJlbmRlcmAgb3IgYW5vdGhlciBjb21w
b25lbnQncyBjb25zdHJ1Y3RvcikuIFJlbmRlciBtZXRob2RzIFwiICsgJ3Nob3VsZCBiZSBhIHB1
cmUgZnVuY3Rpb24gb2YgcHJvcHMgYW5kIHN0YXRlOyBjb25zdHJ1Y3RvciAnICsgJ3NpZGUtZWZm
ZWN0cyBhcmUgYW4gYW50aS1wYXR0ZXJuLCBidXQgY2FuIGJlIG1vdmVkIHRvICcgKyAnYGNvbXBv
bmVudFdpbGxNb3VudGAuJywgY2FsbGVyTmFtZSkgOiB2b2lkIDA7XG5cdCAgfVxuXHRcblx0ICBy
ZXR1cm4gaW50ZXJuYWxJbnN0YW5jZTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFJlYWN0VXBkYXRl
UXVldWUgYWxsb3dzIGZvciBzdGF0ZSB1cGRhdGVzIHRvIGJlIHNjaGVkdWxlZCBpbnRvIGEgbGF0
ZXJcblx0ICogcmVjb25jaWxpYXRpb24gc3RlcC5cblx0ICovXG5cdHZhciBSZWFjdFVwZGF0ZVF1
ZXVlID0ge1xuXHQgIC8qKlxuXHQgICAqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGNvbXBv
c2l0ZSBjb21wb25lbnQgaXMgbW91bnRlZC5cblx0ICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1
YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB3ZSB3YW50IHRvIHRlc3QuXG5cdCAgICogQHJldHVy
biB7Ym9vbGVhbn0gVHJ1ZSBpZiBtb3VudGVkLCBmYWxzZSBvdGhlcndpc2UuXG5cdCAgICogQHBy
b3RlY3RlZFxuXHQgICAqIEBmaW5hbFxuXHQgICAqL1xuXHQgIGlzTW91bnRlZDogZnVuY3Rpb24g
KHB1YmxpY0luc3RhbmNlKSB7XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgdmFyIG93bmVy
ID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudDtcblx0ICAgICAgaWYgKG93bmVyICE9PSBudWxs
KSB7XG5cdCAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdh
cm5pbmcob3duZXIuX3dhcm5lZEFib3V0UmVmc0luUmVuZGVyLCAnJXMgaXMgYWNjZXNzaW5nIGlz
TW91bnRlZCBpbnNpZGUgaXRzIHJlbmRlcigpIGZ1bmN0aW9uLiAnICsgJ3JlbmRlcigpIHNob3Vs
ZCBiZSBhIHB1cmUgZnVuY3Rpb24gb2YgcHJvcHMgYW5kIHN0YXRlLiBJdCBzaG91bGQgJyArICdu
ZXZlciBhY2Nlc3Mgc29tZXRoaW5nIHRoYXQgcmVxdWlyZXMgc3RhbGUgZGF0YSBmcm9tIHRoZSBw
cmV2aW91cyAnICsgJ3JlbmRlciwgc3VjaCBhcyByZWZzLiBNb3ZlIHRoaXMgbG9naWMgdG8gY29t
cG9uZW50RGlkTW91bnQgYW5kICcgKyAnY29tcG9uZW50RGlkVXBkYXRlIGluc3RlYWQuJywgb3du
ZXIuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcpIDogdm9pZCAwO1xuXHQgICAgICAgIG93bmVy
Ll93YXJuZWRBYm91dFJlZnNJblJlbmRlciA9IHRydWU7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0
ICAgIHZhciBpbnRlcm5hbEluc3RhbmNlID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQocHVibGljSW5z
dGFuY2UpO1xuXHQgICAgaWYgKGludGVybmFsSW5zdGFuY2UpIHtcblx0ICAgICAgLy8gRHVyaW5n
IGNvbXBvbmVudFdpbGxNb3VudCBhbmQgcmVuZGVyIHRoaXMgd2lsbCBzdGlsbCBiZSBudWxsIGJ1
dCBhZnRlclxuXHQgICAgICAvLyB0aGF0IHdpbGwgYWx3YXlzIHJlbmRlciB0byBzb21ldGhpbmcu
IEF0IGxlYXN0IGZvciBub3cuIFNvIHdlIGNhbiB1c2Vcblx0ICAgICAgLy8gdGhpcyBoYWNrLlxu
XHQgICAgICByZXR1cm4gISFpbnRlcm5hbEluc3RhbmNlLl9yZW5kZXJlZENvbXBvbmVudDtcblx0
ICAgIH0gZWxzZSB7XG5cdCAgICAgIHJldHVybiBmYWxzZTtcblx0ICAgIH1cblx0ICB9LFxuXHRc
blx0ICAvKipcblx0ICAgKiBFbnF1ZXVlIGEgY2FsbGJhY2sgdGhhdCB3aWxsIGJlIGV4ZWN1dGVk
IGFmdGVyIGFsbCB0aGUgcGVuZGluZyB1cGRhdGVzXG5cdCAgICogaGF2ZSBwcm9jZXNzZWQuXG5c
dCAgICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0
YW5jZSB0byB1c2UgYXMgYHRoaXNgIGNvbnRleHQuXG5cdCAgICogQHBhcmFtIHs/ZnVuY3Rpb259
IGNhbGxiYWNrIENhbGxlZCBhZnRlciBzdGF0ZSBpcyB1cGRhdGVkLlxuXHQgICAqIEBwYXJhbSB7
c3RyaW5nfSBjYWxsZXJOYW1lIE5hbWUgb2YgdGhlIGNhbGxpbmcgZnVuY3Rpb24gaW4gdGhlIHB1
YmxpYyBBUEkuXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAgZW5xdWV1ZUNhbGxiYWNr
OiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIGNhbGxiYWNrLCBjYWxsZXJOYW1lKSB7XG5cdCAg
ICBSZWFjdFVwZGF0ZVF1ZXVlLnZhbGlkYXRlQ2FsbGJhY2soY2FsbGJhY2ssIGNhbGxlck5hbWUp
O1xuXHQgICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBnZXRJbnRlcm5hbEluc3RhbmNlUmVhZHlG
b3JVcGRhdGUocHVibGljSW5zdGFuY2UpO1xuXHRcblx0ICAgIC8vIFByZXZpb3VzbHkgd2Ugd291
bGQgdGhyb3cgYW4gZXJyb3IgaWYgd2UgZGlkbid0IGhhdmUgYW4gaW50ZXJuYWxcblx0ICAgIC8v
IGluc3RhbmNlLiBTaW5jZSB3ZSB3YW50IHRvIG1ha2UgaXQgYSBuby1vcCBpbnN0ZWFkLCB3ZSBt
aXJyb3IgdGhlIHNhbWVcblx0ICAgIC8vIGJlaGF2aW9yIHdlIGhhdmUgaW4gb3RoZXIgZW5xdWV1
ZSogbWV0aG9kcy5cblx0ICAgIC8vIFdlIGFsc28gbmVlZCB0byBpZ25vcmUgY2FsbGJhY2tzIGlu
IGNvbXBvbmVudFdpbGxNb3VudC4gU2VlXG5cdCAgICAvLyBlbnF1ZXVlVXBkYXRlcy5cblx0ICAg
IGlmICghaW50ZXJuYWxJbnN0YW5jZSkge1xuXHQgICAgICByZXR1cm4gbnVsbDtcblx0ICAgIH1c
blx0XG5cdCAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcykge1xuXHQg
ICAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xu
XHQgICAgfSBlbHNlIHtcblx0ICAgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNr
cyA9IFtjYWxsYmFja107XG5cdCAgICB9XG5cdCAgICAvLyBUT0RPOiBUaGUgY2FsbGJhY2sgaGVy
ZSBpcyBpZ25vcmVkIHdoZW4gc2V0U3RhdGUgaXMgY2FsbGVkIGZyb21cblx0ICAgIC8vIGNvbXBv
bmVudFdpbGxNb3VudC4gRWl0aGVyIGZpeCBpdCBvciBkaXNhbGxvdyBkb2luZyBzbyBjb21wbGV0
ZWx5IGluXG5cdCAgICAvLyBmYXZvciBvZiBnZXRJbml0aWFsU3RhdGUuIEFsdGVybmF0aXZlbHks
IHdlIGNhbiBkaXNhbGxvd1xuXHQgICAgLy8gY29tcG9uZW50V2lsbE1vdW50IGR1cmluZyBzZXJ2
ZXItc2lkZSByZW5kZXJpbmcuXG5cdCAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2Up
O1xuXHQgIH0sXG5cdFxuXHQgIGVucXVldWVDYWxsYmFja0ludGVybmFsOiBmdW5jdGlvbiAoaW50
ZXJuYWxJbnN0YW5jZSwgY2FsbGJhY2spIHtcblx0ICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9w
ZW5kaW5nQ2FsbGJhY2tzKSB7XG5cdCAgICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxs
YmFja3MucHVzaChjYWxsYmFjayk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBpbnRlcm5hbElu
c3RhbmNlLl9wZW5kaW5nQ2FsbGJhY2tzID0gW2NhbGxiYWNrXTtcblx0ICAgIH1cblx0ICAgIGVu
cXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAg
ICogRm9yY2VzIGFuIHVwZGF0ZS4gVGhpcyBzaG91bGQgb25seSBiZSBpbnZva2VkIHdoZW4gaXQg
aXMga25vd24gd2l0aFxuXHQgICAqIGNlcnRhaW50eSB0aGF0IHdlIGFyZSAqKm5vdCoqIGluIGEg
RE9NIHRyYW5zYWN0aW9uLlxuXHQgICAqXG5cdCAgICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhp
cyB3aGVuIHlvdSBrbm93IHRoYXQgc29tZSBkZWVwZXIgYXNwZWN0IG9mIHRoZVxuXHQgICAqIGNv
bXBvbmVudCdzIHN0YXRlIGhhcyBjaGFuZ2VkIGJ1dCBgc2V0U3RhdGVgIHdhcyBub3QgY2FsbGVk
LlxuXHQgICAqXG5cdCAgICogVGhpcyB3aWxsIG5vdCBpbnZva2UgYHNob3VsZENvbXBvbmVudFVw
ZGF0ZWAsIGJ1dCBpdCB3aWxsIGludm9rZVxuXHQgICAqIGBjb21wb25lbnRXaWxsVXBkYXRlYCBh
bmQgYGNvbXBvbmVudERpZFVwZGF0ZWAuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0Q2xh
c3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cblx0
ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICBlbnF1ZXVlRm9yY2VVcGRhdGU6IGZ1bmN0aW9u
IChwdWJsaWNJbnN0YW5jZSkge1xuXHQgICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBnZXRJbnRl
cm5hbEluc3RhbmNlUmVhZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2UsICdmb3JjZVVwZGF0ZScp
O1xuXHRcblx0ICAgIGlmICghaW50ZXJuYWxJbnN0YW5jZSkge1xuXHQgICAgICByZXR1cm47XG5c
dCAgICB9XG5cdFxuXHQgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0ZvcmNlVXBkYXRlID0g
dHJ1ZTtcblx0XG5cdCAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpO1xuXHQgIH0s
XG5cdFxuXHQgIC8qKlxuXHQgICAqIFJlcGxhY2VzIGFsbCBvZiB0aGUgc3RhdGUuIEFsd2F5cyB1
c2UgdGhpcyBvciBgc2V0U3RhdGVgIHRvIG11dGF0ZSBzdGF0ZS5cblx0ICAgKiBZb3Ugc2hvdWxk
IHRyZWF0IGB0aGlzLnN0YXRlYCBhcyBpbW11dGFibGUuXG5cdCAgICpcblx0ICAgKiBUaGVyZSBp
cyBubyBndWFyYW50ZWUgdGhhdCBgdGhpcy5zdGF0ZWAgd2lsbCBiZSBpbW1lZGlhdGVseSB1cGRh
dGVkLCBzb1xuXHQgICAqIGFjY2Vzc2luZyBgdGhpcy5zdGF0ZWAgYWZ0ZXIgY2FsbGluZyB0aGlz
IG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBvbGQgdmFsdWUuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0g
e1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJl
bmRlci5cblx0ICAgKiBAcGFyYW0ge29iamVjdH0gY29tcGxldGVTdGF0ZSBOZXh0IHN0YXRlLlxu
XHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIGVucXVldWVSZXBsYWNlU3RhdGU6IGZ1bmN0
aW9uIChwdWJsaWNJbnN0YW5jZSwgY29tcGxldGVTdGF0ZSwgY2FsbGJhY2spIHtcblx0ICAgIHZh
ciBpbnRlcm5hbEluc3RhbmNlID0gZ2V0SW50ZXJuYWxJbnN0YW5jZVJlYWR5Rm9yVXBkYXRlKHB1
YmxpY0luc3RhbmNlLCAncmVwbGFjZVN0YXRlJyk7XG5cdFxuXHQgICAgaWYgKCFpbnRlcm5hbElu
c3RhbmNlKSB7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0XG5cdCAgICBpbnRlcm5hbElu
c3RhbmNlLl9wZW5kaW5nU3RhdGVRdWV1ZSA9IFtjb21wbGV0ZVN0YXRlXTtcblx0ICAgIGludGVy
bmFsSW5zdGFuY2UuX3BlbmRpbmdSZXBsYWNlU3RhdGUgPSB0cnVlO1xuXHRcblx0ICAgIC8vIEZ1
dHVyZS1wcm9vZiAxNS41XG5cdCAgICBpZiAoY2FsbGJhY2sgIT09IHVuZGVmaW5lZCAmJiBjYWxs
YmFjayAhPT0gbnVsbCkge1xuXHQgICAgICBSZWFjdFVwZGF0ZVF1ZXVlLnZhbGlkYXRlQ2FsbGJh
Y2soY2FsbGJhY2ssICdyZXBsYWNlU3RhdGUnKTtcblx0ICAgICAgaWYgKGludGVybmFsSW5zdGFu
Y2UuX3BlbmRpbmdDYWxsYmFja3MpIHtcblx0ICAgICAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5k
aW5nQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAg
IGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MgPSBbY2FsbGJhY2tdO1xuXHQgICAg
ICB9XG5cdCAgICB9XG5cdFxuXHQgICAgZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTtc
blx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBzdGF0ZS4g
VGhpcyBvbmx5IGV4aXN0cyBiZWNhdXNlIF9wZW5kaW5nU3RhdGUgaXNcblx0ICAgKiBpbnRlcm5h
bC4gVGhpcyBwcm92aWRlcyBhIG1lcmdpbmcgc3RyYXRlZ3kgdGhhdCBpcyBub3QgYXZhaWxhYmxl
IHRvIGRlZXBcblx0ICAgKiBwcm9wZXJ0aWVzIHdoaWNoIGlzIGNvbmZ1c2luZy4gVE9ETzogRXhw
b3NlIHBlbmRpbmdTdGF0ZSBvciBkb24ndCB1c2UgaXRcblx0ICAgKiBkdXJpbmcgdGhlIG1lcmdl
LlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUg
aW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IHBh
cnRpYWxTdGF0ZSBOZXh0IHBhcnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggc3RhdGUuXG5c
dCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAgZW5xdWV1ZVNldFN0YXRlOiBmdW5jdGlvbiAo
cHVibGljSW5zdGFuY2UsIHBhcnRpYWxTdGF0ZSkge1xuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAg
ICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblNldFN0YXRlKCk7XG5cdCAgICAg
IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHBhcnRpYWxT
dGF0ZSAhPSBudWxsLCAnc2V0U3RhdGUoLi4uKTogWW91IHBhc3NlZCBhbiB1bmRlZmluZWQgb3Ig
bnVsbCBzdGF0ZSBvYmplY3Q7ICcgKyAnaW5zdGVhZCwgdXNlIGZvcmNlVXBkYXRlKCkuJykgOiB2
b2lkIDA7XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBnZXRJbnRl
cm5hbEluc3RhbmNlUmVhZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2UsICdzZXRTdGF0ZScpO1xu
XHRcblx0ICAgIGlmICghaW50ZXJuYWxJbnN0YW5jZSkge1xuXHQgICAgICByZXR1cm47XG5cdCAg
ICB9XG5cdFxuXHQgICAgdmFyIHF1ZXVlID0gaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ1N0YXRl
UXVldWUgfHwgKGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gW10pO1xuXHQg
ICAgcXVldWUucHVzaChwYXJ0aWFsU3RhdGUpO1xuXHRcblx0ICAgIGVucXVldWVVcGRhdGUoaW50
ZXJuYWxJbnN0YW5jZSk7XG5cdCAgfSxcblx0XG5cdCAgZW5xdWV1ZUVsZW1lbnRJbnRlcm5hbDog
ZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UsIG5leHRFbGVtZW50LCBuZXh0Q29udGV4dCkge1xu
XHQgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0VsZW1lbnQgPSBuZXh0RWxlbWVudDtcblx0
ICAgIC8vIFRPRE86IGludHJvZHVjZSBfcGVuZGluZ0NvbnRleHQgaW5zdGVhZCBvZiBzZXR0aW5n
IGl0IGRpcmVjdGx5LlxuXHQgICAgaW50ZXJuYWxJbnN0YW5jZS5fY29udGV4dCA9IG5leHRDb250
ZXh0O1xuXHQgICAgZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTtcblx0ICB9LFxuXHRc
blx0ICB2YWxpZGF0ZUNhbGxiYWNrOiBmdW5jdGlvbiAoY2FsbGJhY2ssIGNhbGxlck5hbWUpIHtc
blx0ICAgICEoIWNhbGxiYWNrIHx8IHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykgPyAg
ZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICclcyguLi4pOiBFeHBlY3RlZCB0aGUgbGFzdCBvcHRp
b25hbCBgY2FsbGJhY2tgIGFyZ3VtZW50IHRvIGJlIGEgZnVuY3Rpb24uIEluc3RlYWQgcmVjZWl2
ZWQ6ICVzLicsIGNhbGxlck5hbWUsIGZvcm1hdFVuZXhwZWN0ZWRBcmd1bWVudChjYWxsYmFjaykp
IDogX3Byb2RJbnZhcmlhbnQoJzEyMicsIGNhbGxlck5hbWUsIGZvcm1hdFVuZXhwZWN0ZWRBcmd1
bWVudChjYWxsYmFjaykpIDogdm9pZCAwO1xuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBv
cnRzID0gUmVhY3RVcGRhdGVRdWV1ZTtcblxuLyoqKi8gfSxcbi8qIDQzICovXG4vKioqLyBmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQvKiBnbG9iYWxzIE1TQXBwICovXG5cdFxuXHQndXNl
IHN0cmljdCc7XG5cdFxuXHQvKipcblx0ICogQ3JlYXRlIGEgZnVuY3Rpb24gd2hpY2ggaGFzICd1
bnNhZmUnIHByaXZpbGVnZXMgKHJlcXVpcmVkIGJ5IHdpbmRvd3M4IGFwcHMpXG5cdCAqL1xuXHRc
blx0dmFyIGNyZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24gPSBmdW5jdGlvbiAoZnVu
Yykge1xuXHQgIGlmICh0eXBlb2YgTVNBcHAgIT09ICd1bmRlZmluZWQnICYmIE1TQXBwLmV4ZWNV
bnNhZmVMb2NhbEZ1bmN0aW9uKSB7XG5cdCAgICByZXR1cm4gZnVuY3Rpb24gKGFyZzAsIGFyZzEs
IGFyZzIsIGFyZzMpIHtcblx0ICAgICAgTVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVuY3Rpb24oZnVu
Y3Rpb24gKCkge1xuXHQgICAgICAgIHJldHVybiBmdW5jKGFyZzAsIGFyZzEsIGFyZzIsIGFyZzMp
O1xuXHQgICAgICB9KTtcblx0ICAgIH07XG5cdCAgfSBlbHNlIHtcblx0ICAgIHJldHVybiBmdW5j
O1xuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gY3JlYXRlTWljcm9zb2Z0VW5z
YWZlTG9jYWxGdW5jdGlvbjtcblxuLyoqKi8gfSxcbi8qIDQ0ICovXG4vKioqLyBmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
blx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQvKipcblx0ICogYGNoYXJD
b2RlYCByZXByZXNlbnRzIHRoZSBhY3R1YWwgXCJjaGFyYWN0ZXIgY29kZVwiIGFuZCBpcyBzYWZl
IHRvIHVzZSB3aXRoXG5cdCAqIGBTdHJpbmcuZnJvbUNoYXJDb2RlYC4gQXMgc3VjaCwgb25seSBr
ZXlzIHRoYXQgY29ycmVzcG9uZCB0byBwcmludGFibGVcblx0ICogY2hhcmFjdGVycyBwcm9kdWNl
IGEgdmFsaWQgYGNoYXJDb2RlYCwgdGhlIG9ubHkgZXhjZXB0aW9uIHRvIHRoaXMgaXMgRW50ZXIu
XG5cdCAqIFRoZSBUYWIta2V5IGlzIGNvbnNpZGVyZWQgbm9uLXByaW50YWJsZSBhbmQgZG9lcyBu
b3QgaGF2ZSBhIGBjaGFyQ29kZWAsXG5cdCAqIHByZXN1bWFibHkgYmVjYXVzZSBpdCBkb2VzIG5v
dCBwcm9kdWNlIGEgdGFiLWNoYXJhY3RlciBpbiBicm93c2Vycy5cblx0ICpcblx0ICogQHBhcmFt
IHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuXHQgKiBAcmV0dXJu
IHtudW1iZXJ9IE5vcm1hbGl6ZWQgYGNoYXJDb2RlYCBwcm9wZXJ0eS5cblx0ICovXG5cdFxuXHRm
dW5jdGlvbiBnZXRFdmVudENoYXJDb2RlKG5hdGl2ZUV2ZW50KSB7XG5cdCAgdmFyIGNoYXJDb2Rl
O1xuXHQgIHZhciBrZXlDb2RlID0gbmF0aXZlRXZlbnQua2V5Q29kZTtcblx0XG5cdCAgaWYgKCdj
aGFyQ29kZScgaW4gbmF0aXZlRXZlbnQpIHtcblx0ICAgIGNoYXJDb2RlID0gbmF0aXZlRXZlbnQu
Y2hhckNvZGU7XG5cdFxuXHQgICAgLy8gRkYgZG9lcyBub3Qgc2V0IGBjaGFyQ29kZWAgZm9yIHRo
ZSBFbnRlci1rZXksIGNoZWNrIGFnYWluc3QgYGtleUNvZGVgLlxuXHQgICAgaWYgKGNoYXJDb2Rl
ID09PSAwICYmIGtleUNvZGUgPT09IDEzKSB7XG5cdCAgICAgIGNoYXJDb2RlID0gMTM7XG5cdCAg
ICB9XG5cdCAgfSBlbHNlIHtcblx0ICAgIC8vIElFOCBkb2VzIG5vdCBpbXBsZW1lbnQgYGNoYXJD
b2RlYCwgYnV0IGBrZXlDb2RlYCBoYXMgdGhlIGNvcnJlY3QgdmFsdWUuXG5cdCAgICBjaGFyQ29k
ZSA9IGtleUNvZGU7XG5cdCAgfVxuXHRcblx0ICAvLyBTb21lIG5vbi1wcmludGFibGUga2V5cyBh
cmUgcmVwb3J0ZWQgaW4gYGNoYXJDb2RlYC9ga2V5Q29kZWAsIGRpc2NhcmQgdGhlbS5cblx0ICAv
LyBNdXN0IG5vdCBkaXNjYXJkIHRoZSAobm9uLSlwcmludGFibGUgRW50ZXIta2V5LlxuXHQgIGlm
IChjaGFyQ29kZSA+PSAzMiB8fCBjaGFyQ29kZSA9PT0gMTMpIHtcblx0ICAgIHJldHVybiBjaGFy
Q29kZTtcblx0ICB9XG5cdFxuXHQgIHJldHVybiAwO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0
cyA9IGdldEV2ZW50Q2hhckNvZGU7XG5cbi8qKiovIH0sXG4vKiA0NSAqL1xuLyoqKi8gZnVuY3Rp
b24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0LyoqXG5cdCAqIFRy
YW5zbGF0aW9uIGZyb20gbW9kaWZpZXIga2V5IHRvIHRoZSBhc3NvY2lhdGVkIHByb3BlcnR5IGlu
IHRoZSBldmVudC5cblx0ICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1F
dmVudHMvI2tleXMtTW9kaWZpZXJzXG5cdCAqL1xuXHRcblx0dmFyIG1vZGlmaWVyS2V5VG9Qcm9w
ID0ge1xuXHQgIEFsdDogJ2FsdEtleScsXG5cdCAgQ29udHJvbDogJ2N0cmxLZXknLFxuXHQgIE1l
dGE6ICdtZXRhS2V5Jyxcblx0ICBTaGlmdDogJ3NoaWZ0S2V5J1xuXHR9O1xuXHRcblx0Ly8gSUU4
IGRvZXMgbm90IGltcGxlbWVudCBnZXRNb2RpZmllclN0YXRlIHNvIHdlIHNpbXBseSBtYXAgaXQg
dG8gdGhlIG9ubHlcblx0Ly8gbW9kaWZpZXIga2V5cyBleHBvc2VkIGJ5IHRoZSBldmVudCBpdHNl
bGYsIGRvZXMgbm90IHN1cHBvcnQgTG9jay1rZXlzLlxuXHQvLyBDdXJyZW50bHksIGFsbCBtYWpv
ciBicm93c2VycyBleGNlcHQgQ2hyb21lIHNlZW1zIHRvIHN1cHBvcnQgTG9jay1rZXlzLlxuXHRm
dW5jdGlvbiBtb2RpZmllclN0YXRlR2V0dGVyKGtleUFyZykge1xuXHQgIHZhciBzeW50aGV0aWNF
dmVudCA9IHRoaXM7XG5cdCAgdmFyIG5hdGl2ZUV2ZW50ID0gc3ludGhldGljRXZlbnQubmF0aXZl
RXZlbnQ7XG5cdCAgaWYgKG5hdGl2ZUV2ZW50LmdldE1vZGlmaWVyU3RhdGUpIHtcblx0ICAgIHJl
dHVybiBuYXRpdmVFdmVudC5nZXRNb2RpZmllclN0YXRlKGtleUFyZyk7XG5cdCAgfVxuXHQgIHZh
ciBrZXlQcm9wID0gbW9kaWZpZXJLZXlUb1Byb3Bba2V5QXJnXTtcblx0ICByZXR1cm4ga2V5UHJv
cCA/ICEhbmF0aXZlRXZlbnRba2V5UHJvcF0gOiBmYWxzZTtcblx0fVxuXHRcblx0ZnVuY3Rpb24g
Z2V0RXZlbnRNb2RpZmllclN0YXRlKG5hdGl2ZUV2ZW50KSB7XG5cdCAgcmV0dXJuIG1vZGlmaWVy
U3RhdGVHZXR0ZXI7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZ2V0RXZlbnRNb2RpZmll
clN0YXRlO1xuXG4vKioqLyB9LFxuLyogNDYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
blx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQg
Ki9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBHZXRzIHRoZSB0YXJnZXQg
bm9kZSBmcm9tIGEgbmF0aXZlIGJyb3dzZXIgZXZlbnQgYnkgYWNjb3VudGluZyBmb3Jcblx0ICog
aW5jb25zaXN0ZW5jaWVzIGluIGJyb3dzZXIgRE9NIEFQSXMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7
b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cblx0ICogQHJldHVybiB7
RE9NRXZlbnRUYXJnZXR9IFRhcmdldCBub2RlLlxuXHQgKi9cblx0XG5cdGZ1bmN0aW9uIGdldEV2
ZW50VGFyZ2V0KG5hdGl2ZUV2ZW50KSB7XG5cdCAgdmFyIHRhcmdldCA9IG5hdGl2ZUV2ZW50LnRh
cmdldCB8fCBuYXRpdmVFdmVudC5zcmNFbGVtZW50IHx8IHdpbmRvdztcblx0XG5cdCAgLy8gTm9y
bWFsaXplIFNWRyA8dXNlPiBlbGVtZW50IGV2ZW50cyAjNDk2M1xuXHQgIGlmICh0YXJnZXQuY29y
cmVzcG9uZGluZ1VzZUVsZW1lbnQpIHtcblx0ICAgIHRhcmdldCA9IHRhcmdldC5jb3JyZXNwb25k
aW5nVXNlRWxlbWVudDtcblx0ICB9XG5cdFxuXHQgIC8vIFNhZmFyaSBtYXkgZmlyZSBldmVudHMg
b24gdGV4dCBub2RlcyAoTm9kZS5URVhUX05PREUgaXMgMykuXG5cdCAgLy8gQHNlZSBodHRwOi8v
d3d3LnF1aXJrc21vZGUub3JnL2pzL2V2ZW50c19wcm9wZXJ0aWVzLmh0bWxcblx0ICByZXR1cm4g
dGFyZ2V0Lm5vZGVUeXBlID09PSAzID8gdGFyZ2V0LnBhcmVudE5vZGUgOiB0YXJnZXQ7XG5cdH1c
blx0XG5cdG1vZHVsZS5leHBvcnRzID0gZ2V0RXZlbnRUYXJnZXQ7XG5cbi8qKiovIH0sXG4vKiA0
NyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9f
KSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
XG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQg
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xu
XHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX193
ZWJwYWNrX3JlcXVpcmVfXyg2KTtcblx0XG5cdHZhciB1c2VIYXNGZWF0dXJlO1xuXHRpZiAoRXhl
Y3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG5cdCAgdXNlSGFzRmVhdHVyZSA9IGRvY3Vt
ZW50LmltcGxlbWVudGF0aW9uICYmIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUg
JiZcblx0ICAvLyBhbHdheXMgcmV0dXJucyB0cnVlIGluIG5ld2VyIGJyb3dzZXJzIGFzIHBlciB0
aGUgc3RhbmRhcmQuXG5cdCAgLy8gQHNlZSBodHRwOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jZG9t
LWRvbWltcGxlbWVudGF0aW9uLWhhc2ZlYXR1cmVcblx0ICBkb2N1bWVudC5pbXBsZW1lbnRhdGlv
bi5oYXNGZWF0dXJlKCcnLCAnJykgIT09IHRydWU7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBDaGVj
a3MgaWYgYW4gZXZlbnQgaXMgc3VwcG9ydGVkIGluIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBlbnZp
cm9ubWVudC5cblx0ICpcblx0ICogTk9URTogVGhpcyB3aWxsIG5vdCB3b3JrIGNvcnJlY3RseSBm
b3Igbm9uLWdlbmVyaWMgZXZlbnRzIHN1Y2ggYXMgYGNoYW5nZWAsXG5cdCAqIGByZXNldGAsIGBs
b2FkYCwgYGVycm9yYCwgYW5kIGBzZWxlY3RgLlxuXHQgKlxuXHQgKiBCb3Jyb3dzIGZyb20gTW9k
ZXJuaXpyLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnROYW1lU3VmZml4IEV2ZW50
IG5hbWUsIGUuZy4gXCJjbGlja1wiLlxuXHQgKiBAcGFyYW0gez9ib29sZWFufSBjYXB0dXJlIENo
ZWNrIGlmIHRoZSBjYXB0dXJlIHBoYXNlIGlzIHN1cHBvcnRlZC5cblx0ICogQHJldHVybiB7Ym9v
bGVhbn0gVHJ1ZSBpZiB0aGUgZXZlbnQgaXMgc3VwcG9ydGVkLlxuXHQgKiBAaW50ZXJuYWxcblx0
ICogQGxpY2Vuc2UgTW9kZXJuaXpyIDMuMC4wcHJlIChDdXN0b20gQnVpbGQpIHwgTUlUXG5cdCAq
L1xuXHRmdW5jdGlvbiBpc0V2ZW50U3VwcG9ydGVkKGV2ZW50TmFtZVN1ZmZpeCwgY2FwdHVyZSkg
e1xuXHQgIGlmICghRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NIHx8IGNhcHR1cmUgJiYg
ISgnYWRkRXZlbnRMaXN0ZW5lcicgaW4gZG9jdW1lbnQpKSB7XG5cdCAgICByZXR1cm4gZmFsc2U7
XG5cdCAgfVxuXHRcblx0ICB2YXIgZXZlbnROYW1lID0gJ29uJyArIGV2ZW50TmFtZVN1ZmZpeDtc
blx0ICB2YXIgaXNTdXBwb3J0ZWQgPSBldmVudE5hbWUgaW4gZG9jdW1lbnQ7XG5cdFxuXHQgIGlm
ICghaXNTdXBwb3J0ZWQpIHtcblx0ICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZGl2Jyk7XG5cdCAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShldmVudE5hbWUsICdyZXR1
cm47Jyk7XG5cdCAgICBpc1N1cHBvcnRlZCA9IHR5cGVvZiBlbGVtZW50W2V2ZW50TmFtZV0gPT09
ICdmdW5jdGlvbic7XG5cdCAgfVxuXHRcblx0ICBpZiAoIWlzU3VwcG9ydGVkICYmIHVzZUhhc0Zl
YXR1cmUgJiYgZXZlbnROYW1lU3VmZml4ID09PSAnd2hlZWwnKSB7XG5cdCAgICAvLyBUaGlzIGlz
IHRoZSBvbmx5IHdheSB0byB0ZXN0IHN1cHBvcnQgZm9yIHRoZSBgd2hlZWxgIGV2ZW50IGluIElF
OSsuXG5cdCAgICBpc1N1cHBvcnRlZCA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1
cmUoJ0V2ZW50cy53aGVlbCcsICczLjAnKTtcblx0ICB9XG5cdFxuXHQgIHJldHVybiBpc1N1cHBv
cnRlZDtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBpc0V2ZW50U3VwcG9ydGVkO1xuXG4v
KioqLyB9LFxuLyogNDggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5c
dC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1
c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBHaXZlbiBhIGBwcmV2RWxlbWVudGAgYW5kIGBu
ZXh0RWxlbWVudGAsIGRldGVybWluZXMgaWYgdGhlIGV4aXN0aW5nXG5cdCAqIGluc3RhbmNlIHNo
b3VsZCBiZSB1cGRhdGVkIGFzIG9wcG9zZWQgdG8gYmVpbmcgZGVzdHJveWVkIG9yIHJlcGxhY2Vk
IGJ5IGEgbmV3XG5cdCAqIGluc3RhbmNlLiBCb3RoIGFyZ3VtZW50cyBhcmUgZWxlbWVudHMuIFRo
aXMgZW5zdXJlcyB0aGF0IHRoaXMgbG9naWMgY2FuXG5cdCAqIG9wZXJhdGUgb24gc3RhdGVsZXNz
IHRyZWVzIHdpdGhvdXQgYW55IGJhY2tpbmcgaW5zdGFuY2UuXG5cdCAqXG5cdCAqIEBwYXJhbSB7
P29iamVjdH0gcHJldkVsZW1lbnRcblx0ICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0RWxlbWVudFxu
XHQgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBleGlzdGluZyBpbnN0YW5jZSBzaG91
bGQgYmUgdXBkYXRlZC5cblx0ICogQHByb3RlY3RlZFxuXHQgKi9cblx0XG5cdGZ1bmN0aW9uIHNo
b3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50KHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCkge1xuXHQg
IHZhciBwcmV2RW1wdHkgPSBwcmV2RWxlbWVudCA9PT0gbnVsbCB8fCBwcmV2RWxlbWVudCA9PT0g
ZmFsc2U7XG5cdCAgdmFyIG5leHRFbXB0eSA9IG5leHRFbGVtZW50ID09PSBudWxsIHx8IG5leHRF
bGVtZW50ID09PSBmYWxzZTtcblx0ICBpZiAocHJldkVtcHR5IHx8IG5leHRFbXB0eSkge1xuXHQg
ICAgcmV0dXJuIHByZXZFbXB0eSA9PT0gbmV4dEVtcHR5O1xuXHQgIH1cblx0XG5cdCAgdmFyIHBy
ZXZUeXBlID0gdHlwZW9mIHByZXZFbGVtZW50O1xuXHQgIHZhciBuZXh0VHlwZSA9IHR5cGVvZiBu
ZXh0RWxlbWVudDtcblx0ICBpZiAocHJldlR5cGUgPT09ICdzdHJpbmcnIHx8IHByZXZUeXBlID09
PSAnbnVtYmVyJykge1xuXHQgICAgcmV0dXJuIG5leHRUeXBlID09PSAnc3RyaW5nJyB8fCBuZXh0
VHlwZSA9PT0gJ251bWJlcic7XG5cdCAgfSBlbHNlIHtcblx0ICAgIHJldHVybiBuZXh0VHlwZSA9
PT0gJ29iamVjdCcgJiYgcHJldkVsZW1lbnQudHlwZSA9PT0gbmV4dEVsZW1lbnQudHlwZSAmJiBw
cmV2RWxlbWVudC5rZXkgPT09IG5leHRFbGVtZW50LmtleTtcblx0ICB9XG5cdH1cblx0XG5cdG1v
ZHVsZS5leHBvcnRzID0gc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQ7XG5cbi8qKiovIH0sXG4v
KiA0OSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWly
ZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
XHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAq
L1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9hc3NpZ24gPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDQpO1xuXHRcblx0dmFyIGVtcHR5RnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDcpO1xuXHR2YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cdFxuXHR2YXIg
dmFsaWRhdGVET01OZXN0aW5nID0gZW1wdHlGdW5jdGlvbjtcblx0XG5cdGlmIChmYWxzZSkge1xu
XHQgIC8vIFRoaXMgdmFsaWRhdGlvbiBjb2RlIHdhcyB3cml0dGVuIGJhc2VkIG9uIHRoZSBIVE1M
NSBwYXJzaW5nIHNwZWM6XG5cdCAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0
aXBhZ2Uvc3ludGF4Lmh0bWwjaGFzLWFuLWVsZW1lbnQtaW4tc2NvcGVcblx0ICAvL1xuXHQgIC8v
IE5vdGU6IHRoaXMgZG9lcyBub3QgY2F0Y2ggYWxsIGludmFsaWQgbmVzdGluZywgbm9yIGRvZXMg
aXQgdHJ5IHRvIChhcyBpdCdzXG5cdCAgLy8gbm90IGNsZWFyIHdoYXQgcHJhY3RpY2FsIGJlbmVm
aXQgZG9pbmcgc28gcHJvdmlkZXMpOyBpbnN0ZWFkLCB3ZSB3YXJuIG9ubHlcblx0ICAvLyBmb3Ig
Y2FzZXMgd2hlcmUgdGhlIHBhcnNlciB3aWxsIGdpdmUgYSBwYXJzZSB0cmVlIGRpZmZlcmluZyBm
cm9tIHdoYXQgUmVhY3Rcblx0ICAvLyBpbnRlbmRlZC4gRm9yIGV4YW1wbGUsIDxiPjxkaXY+PC9k
aXY+PC9iPiBpcyBpbnZhbGlkIGJ1dCB3ZSBkb24ndCB3YXJuXG5cdCAgLy8gYmVjYXVzZSBpdCBz
dGlsbCBwYXJzZXMgY29ycmVjdGx5OyB3ZSBkbyB3YXJuIGZvciBvdGhlciBjYXNlcyBsaWtlIG5l
c3RlZFxuXHQgIC8vIDxwPiB0YWdzIHdoZXJlIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlY29uZCBl
bGVtZW50IGltcGxpY2l0bHkgY2xvc2VzIHRoZVxuXHQgIC8vIGZpcnN0LCBjYXVzaW5nIGEgY29u
ZnVzaW5nIG1lc3MuXG5cdFxuXHQgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVs
dGlwYWdlL3N5bnRheC5odG1sI3NwZWNpYWxcblx0ICB2YXIgc3BlY2lhbFRhZ3MgPSBbJ2FkZHJl
c3MnLCAnYXBwbGV0JywgJ2FyZWEnLCAnYXJ0aWNsZScsICdhc2lkZScsICdiYXNlJywgJ2Jhc2Vm
b250JywgJ2Jnc291bmQnLCAnYmxvY2txdW90ZScsICdib2R5JywgJ2JyJywgJ2J1dHRvbicsICdj
YXB0aW9uJywgJ2NlbnRlcicsICdjb2wnLCAnY29sZ3JvdXAnLCAnZGQnLCAnZGV0YWlscycsICdk
aXInLCAnZGl2JywgJ2RsJywgJ2R0JywgJ2VtYmVkJywgJ2ZpZWxkc2V0JywgJ2ZpZ2NhcHRpb24n
LCAnZmlndXJlJywgJ2Zvb3RlcicsICdmb3JtJywgJ2ZyYW1lJywgJ2ZyYW1lc2V0JywgJ2gxJywg
J2gyJywgJ2gzJywgJ2g0JywgJ2g1JywgJ2g2JywgJ2hlYWQnLCAnaGVhZGVyJywgJ2hncm91cCcs
ICdocicsICdodG1sJywgJ2lmcmFtZScsICdpbWcnLCAnaW5wdXQnLCAnaXNpbmRleCcsICdsaScs
ICdsaW5rJywgJ2xpc3RpbmcnLCAnbWFpbicsICdtYXJxdWVlJywgJ21lbnUnLCAnbWVudWl0ZW0n
LCAnbWV0YScsICduYXYnLCAnbm9lbWJlZCcsICdub2ZyYW1lcycsICdub3NjcmlwdCcsICdvYmpl
Y3QnLCAnb2wnLCAncCcsICdwYXJhbScsICdwbGFpbnRleHQnLCAncHJlJywgJ3NjcmlwdCcsICdz
ZWN0aW9uJywgJ3NlbGVjdCcsICdzb3VyY2UnLCAnc3R5bGUnLCAnc3VtbWFyeScsICd0YWJsZScs
ICd0Ym9keScsICd0ZCcsICd0ZW1wbGF0ZScsICd0ZXh0YXJlYScsICd0Zm9vdCcsICd0aCcsICd0
aGVhZCcsICd0aXRsZScsICd0cicsICd0cmFjaycsICd1bCcsICd3YnInLCAneG1wJ107XG5cdFxu
XHQgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1s
I2hhcy1hbi1lbGVtZW50LWluLXNjb3BlXG5cdCAgdmFyIGluU2NvcGVUYWdzID0gWydhcHBsZXQn
LCAnY2FwdGlvbicsICdodG1sJywgJ3RhYmxlJywgJ3RkJywgJ3RoJywgJ21hcnF1ZWUnLCAnb2Jq
ZWN0JywgJ3RlbXBsYXRlJyxcblx0XG5cdCAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9y
Zy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjaHRtbC1pbnRlZ3JhdGlvbi1wb2ludFxuXHQgIC8vIFRP
RE86IERpc3Rpbmd1aXNoIGJ5IG5hbWVzcGFjZSBoZXJlIC0tIGZvciA8dGl0bGU+LCBpbmNsdWRp
bmcgaXQgaGVyZVxuXHQgIC8vIGVycnMgb24gdGhlIHNpZGUgb2YgZmV3ZXIgd2FybmluZ3Ncblx0
ICAnZm9yZWlnbk9iamVjdCcsICdkZXNjJywgJ3RpdGxlJ107XG5cdFxuXHQgIC8vIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2hhcy1hbi1lbGVtZW50
LWluLWJ1dHRvbi1zY29wZVxuXHQgIHZhciBidXR0b25TY29wZVRhZ3MgPSBpblNjb3BlVGFncy5j
b25jYXQoWydidXR0b24nXSk7XG5cdFxuXHQgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5v
cmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2dlbmVyYXRlLWltcGxpZWQtZW5kLXRhZ3Ncblx0ICB2
YXIgaW1wbGllZEVuZFRhZ3MgPSBbJ2RkJywgJ2R0JywgJ2xpJywgJ29wdGlvbicsICdvcHRncm91
cCcsICdwJywgJ3JwJywgJ3J0J107XG5cdFxuXHQgIHZhciBlbXB0eUFuY2VzdG9ySW5mbyA9IHtc
blx0ICAgIGN1cnJlbnQ6IG51bGwsXG5cdFxuXHQgICAgZm9ybVRhZzogbnVsbCxcblx0ICAgIGFU
YWdJblNjb3BlOiBudWxsLFxuXHQgICAgYnV0dG9uVGFnSW5TY29wZTogbnVsbCxcblx0ICAgIG5v
YnJUYWdJblNjb3BlOiBudWxsLFxuXHQgICAgcFRhZ0luQnV0dG9uU2NvcGU6IG51bGwsXG5cdFxu
XHQgICAgbGlzdEl0ZW1UYWdBdXRvY2xvc2luZzogbnVsbCxcblx0ICAgIGRsSXRlbVRhZ0F1dG9j
bG9zaW5nOiBudWxsXG5cdCAgfTtcblx0XG5cdCAgdmFyIHVwZGF0ZWRBbmNlc3RvckluZm8gPSBm
dW5jdGlvbiAob2xkSW5mbywgdGFnLCBpbnN0YW5jZSkge1xuXHQgICAgdmFyIGFuY2VzdG9ySW5m
byA9IF9hc3NpZ24oe30sIG9sZEluZm8gfHwgZW1wdHlBbmNlc3RvckluZm8pO1xuXHQgICAgdmFy
IGluZm8gPSB7IHRhZzogdGFnLCBpbnN0YW5jZTogaW5zdGFuY2UgfTtcblx0XG5cdCAgICBpZiAo
aW5TY29wZVRhZ3MuaW5kZXhPZih0YWcpICE9PSAtMSkge1xuXHQgICAgICBhbmNlc3RvckluZm8u
YVRhZ0luU2NvcGUgPSBudWxsO1xuXHQgICAgICBhbmNlc3RvckluZm8uYnV0dG9uVGFnSW5TY29w
ZSA9IG51bGw7XG5cdCAgICAgIGFuY2VzdG9ySW5mby5ub2JyVGFnSW5TY29wZSA9IG51bGw7XG5c
dCAgICB9XG5cdCAgICBpZiAoYnV0dG9uU2NvcGVUYWdzLmluZGV4T2YodGFnKSAhPT0gLTEpIHtc
blx0ICAgICAgYW5jZXN0b3JJbmZvLnBUYWdJbkJ1dHRvblNjb3BlID0gbnVsbDtcblx0ICAgIH1c
blx0XG5cdCAgICAvLyBTZWUgcnVsZXMgZm9yICdsaScsICdkZCcsICdkdCcgc3RhcnQgdGFncyBp
blxuXHQgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4
Lmh0bWwjcGFyc2luZy1tYWluLWluYm9keVxuXHQgICAgaWYgKHNwZWNpYWxUYWdzLmluZGV4T2Yo
dGFnKSAhPT0gLTEgJiYgdGFnICE9PSAnYWRkcmVzcycgJiYgdGFnICE9PSAnZGl2JyAmJiB0YWcg
IT09ICdwJykge1xuXHQgICAgICBhbmNlc3RvckluZm8ubGlzdEl0ZW1UYWdBdXRvY2xvc2luZyA9
IG51bGw7XG5cdCAgICAgIGFuY2VzdG9ySW5mby5kbEl0ZW1UYWdBdXRvY2xvc2luZyA9IG51bGw7
XG5cdCAgICB9XG5cdFxuXHQgICAgYW5jZXN0b3JJbmZvLmN1cnJlbnQgPSBpbmZvO1xuXHRcblx0
ICAgIGlmICh0YWcgPT09ICdmb3JtJykge1xuXHQgICAgICBhbmNlc3RvckluZm8uZm9ybVRhZyA9
IGluZm87XG5cdCAgICB9XG5cdCAgICBpZiAodGFnID09PSAnYScpIHtcblx0ICAgICAgYW5jZXN0
b3JJbmZvLmFUYWdJblNjb3BlID0gaW5mbztcblx0ICAgIH1cblx0ICAgIGlmICh0YWcgPT09ICdi
dXR0b24nKSB7XG5cdCAgICAgIGFuY2VzdG9ySW5mby5idXR0b25UYWdJblNjb3BlID0gaW5mbztc
blx0ICAgIH1cblx0ICAgIGlmICh0YWcgPT09ICdub2JyJykge1xuXHQgICAgICBhbmNlc3Rvcklu
Zm8ubm9iclRhZ0luU2NvcGUgPSBpbmZvO1xuXHQgICAgfVxuXHQgICAgaWYgKHRhZyA9PT0gJ3An
KSB7XG5cdCAgICAgIGFuY2VzdG9ySW5mby5wVGFnSW5CdXR0b25TY29wZSA9IGluZm87XG5cdCAg
ICB9XG5cdCAgICBpZiAodGFnID09PSAnbGknKSB7XG5cdCAgICAgIGFuY2VzdG9ySW5mby5saXN0
SXRlbVRhZ0F1dG9jbG9zaW5nID0gaW5mbztcblx0ICAgIH1cblx0ICAgIGlmICh0YWcgPT09ICdk
ZCcgfHwgdGFnID09PSAnZHQnKSB7XG5cdCAgICAgIGFuY2VzdG9ySW5mby5kbEl0ZW1UYWdBdXRv
Y2xvc2luZyA9IGluZm87XG5cdCAgICB9XG5cdFxuXHQgICAgcmV0dXJuIGFuY2VzdG9ySW5mbztc
blx0ICB9O1xuXHRcblx0ICAvKipcblx0ICAgKiBSZXR1cm5zIHdoZXRoZXJcblx0ICAgKi9cblx0
ICB2YXIgaXNUYWdWYWxpZFdpdGhQYXJlbnQgPSBmdW5jdGlvbiAodGFnLCBwYXJlbnRUYWcpIHtc
blx0ICAgIC8vIEZpcnN0LCBsZXQncyBjaGVjayBpZiB3ZSdyZSBpbiBhbiB1bnVzdWFsIHBhcnNp
bmcgbW9kZS4uLlxuXHQgICAgc3dpdGNoIChwYXJlbnRUYWcpIHtcblx0ICAgICAgLy8gaHR0cHM6
Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWlu
LWluc2VsZWN0XG5cdCAgICAgIGNhc2UgJ3NlbGVjdCc6XG5cdCAgICAgICAgcmV0dXJuIHRhZyA9
PT0gJ29wdGlvbicgfHwgdGFnID09PSAnb3B0Z3JvdXAnIHx8IHRhZyA9PT0gJyN0ZXh0Jztcblx0
ICAgICAgY2FzZSAnb3B0Z3JvdXAnOlxuXHQgICAgICAgIHJldHVybiB0YWcgPT09ICdvcHRpb24n
IHx8IHRhZyA9PT0gJyN0ZXh0Jztcblx0ICAgICAgLy8gU3RyaWN0bHkgc3BlYWtpbmcsIHNlZWlu
ZyBhbiA8b3B0aW9uPiBkb2Vzbid0IG1lYW4gd2UncmUgaW4gYSA8c2VsZWN0PlxuXHQgICAgICAv
LyBidXRcblx0ICAgICAgY2FzZSAnb3B0aW9uJzpcblx0ICAgICAgICByZXR1cm4gdGFnID09PSAn
I3RleHQnO1xuXHQgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFn
ZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW50ZFxuXHQgICAgICAvLyBodHRwczovL2h0bWwu
c3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5jYXB0
aW9uXG5cdCAgICAgIC8vIE5vIHNwZWNpYWwgYmVoYXZpb3Igc2luY2UgdGhlc2UgcnVsZXMgZmFs
bCBiYWNrIHRvIFwiaW4gYm9keVwiIG1vZGUgZm9yXG5cdCAgICAgIC8vIGFsbCBleGNlcHQgc3Bl
Y2lhbCB0YWJsZSBub2RlcyB3aGljaCBjYXVzZSBiYWQgcGFyc2luZyBiZWhhdmlvciBhbnl3YXku
XG5cdFxuXHQgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9z
eW50YXguaHRtbCNwYXJzaW5nLW1haW4taW50clxuXHQgICAgICBjYXNlICd0cic6XG5cdCAgICAg
ICAgcmV0dXJuIHRhZyA9PT0gJ3RoJyB8fCB0YWcgPT09ICd0ZCcgfHwgdGFnID09PSAnc3R5bGUn
IHx8IHRhZyA9PT0gJ3NjcmlwdCcgfHwgdGFnID09PSAndGVtcGxhdGUnO1xuXHQgICAgICAvLyBo
dHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5n
LW1haW4taW50Ym9keVxuXHQgICAgICBjYXNlICd0Ym9keSc6XG5cdCAgICAgIGNhc2UgJ3RoZWFk
Jzpcblx0ICAgICAgY2FzZSAndGZvb3QnOlxuXHQgICAgICAgIHJldHVybiB0YWcgPT09ICd0cicg
fHwgdGFnID09PSAnc3R5bGUnIHx8IHRhZyA9PT0gJ3NjcmlwdCcgfHwgdGFnID09PSAndGVtcGxh
dGUnO1xuXHQgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9z
eW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5jb2xncm91cFxuXHQgICAgICBjYXNlICdjb2xncm91
cCc6XG5cdCAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ2NvbCcgfHwgdGFnID09PSAndGVtcGxhdGUn
O1xuXHQgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50
YXguaHRtbCNwYXJzaW5nLW1haW4taW50YWJsZVxuXHQgICAgICBjYXNlICd0YWJsZSc6XG5cdCAg
ICAgICAgcmV0dXJuIHRhZyA9PT0gJ2NhcHRpb24nIHx8IHRhZyA9PT0gJ2NvbGdyb3VwJyB8fCB0
YWcgPT09ICd0Ym9keScgfHwgdGFnID09PSAndGZvb3QnIHx8IHRhZyA9PT0gJ3RoZWFkJyB8fCB0
YWcgPT09ICdzdHlsZScgfHwgdGFnID09PSAnc2NyaXB0JyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7
XG5cdCAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRh
eC5odG1sI3BhcnNpbmctbWFpbi1pbmhlYWRcblx0ICAgICAgY2FzZSAnaGVhZCc6XG5cdCAgICAg
ICAgcmV0dXJuIHRhZyA9PT0gJ2Jhc2UnIHx8IHRhZyA9PT0gJ2Jhc2Vmb250JyB8fCB0YWcgPT09
ICdiZ3NvdW5kJyB8fCB0YWcgPT09ICdsaW5rJyB8fCB0YWcgPT09ICdtZXRhJyB8fCB0YWcgPT09
ICd0aXRsZScgfHwgdGFnID09PSAnbm9zY3JpcHQnIHx8IHRhZyA9PT0gJ25vZnJhbWVzJyB8fCB0
YWcgPT09ICdzdHlsZScgfHwgdGFnID09PSAnc2NyaXB0JyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7
XG5cdCAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NlbWFu
dGljcy5odG1sI3RoZS1odG1sLWVsZW1lbnRcblx0ICAgICAgY2FzZSAnaHRtbCc6XG5cdCAgICAg
ICAgcmV0dXJuIHRhZyA9PT0gJ2hlYWQnIHx8IHRhZyA9PT0gJ2JvZHknO1xuXHQgICAgICBjYXNl
ICcjZG9jdW1lbnQnOlxuXHQgICAgICAgIHJldHVybiB0YWcgPT09ICdodG1sJztcblx0ICAgIH1c
blx0XG5cdCAgICAvLyBQcm9iYWJseSBpbiB0aGUgXCJpbiBib2R5XCIgcGFyc2luZyBtb2RlLCBz
byB3ZSBvdXRsYXcgb25seSB0YWcgY29tYm9zXG5cdCAgICAvLyB3aGVyZSB0aGUgcGFyc2luZyBy
dWxlcyBjYXVzZSBpbXBsaWNpdCBvcGVucyBvciBjbG9zZXMgdG8gYmUgYWRkZWQuXG5cdCAgICAv
LyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJz
aW5nLW1haW4taW5ib2R5XG5cdCAgICBzd2l0Y2ggKHRhZykge1xuXHQgICAgICBjYXNlICdoMSc6
XG5cdCAgICAgIGNhc2UgJ2gyJzpcblx0ICAgICAgY2FzZSAnaDMnOlxuXHQgICAgICBjYXNlICdo
NCc6XG5cdCAgICAgIGNhc2UgJ2g1Jzpcblx0ICAgICAgY2FzZSAnaDYnOlxuXHQgICAgICAgIHJl
dHVybiBwYXJlbnRUYWcgIT09ICdoMScgJiYgcGFyZW50VGFnICE9PSAnaDInICYmIHBhcmVudFRh
ZyAhPT0gJ2gzJyAmJiBwYXJlbnRUYWcgIT09ICdoNCcgJiYgcGFyZW50VGFnICE9PSAnaDUnICYm
IHBhcmVudFRhZyAhPT0gJ2g2Jztcblx0XG5cdCAgICAgIGNhc2UgJ3JwJzpcblx0ICAgICAgY2Fz
ZSAncnQnOlxuXHQgICAgICAgIHJldHVybiBpbXBsaWVkRW5kVGFncy5pbmRleE9mKHBhcmVudFRh
ZykgPT09IC0xO1xuXHRcblx0ICAgICAgY2FzZSAnYm9keSc6XG5cdCAgICAgIGNhc2UgJ2NhcHRp
b24nOlxuXHQgICAgICBjYXNlICdjb2wnOlxuXHQgICAgICBjYXNlICdjb2xncm91cCc6XG5cdCAg
ICAgIGNhc2UgJ2ZyYW1lJzpcblx0ICAgICAgY2FzZSAnaGVhZCc6XG5cdCAgICAgIGNhc2UgJ2h0
bWwnOlxuXHQgICAgICBjYXNlICd0Ym9keSc6XG5cdCAgICAgIGNhc2UgJ3RkJzpcblx0ICAgICAg
Y2FzZSAndGZvb3QnOlxuXHQgICAgICBjYXNlICd0aCc6XG5cdCAgICAgIGNhc2UgJ3RoZWFkJzpc
blx0ICAgICAgY2FzZSAndHInOlxuXHQgICAgICAgIC8vIFRoZXNlIHRhZ3MgYXJlIG9ubHkgdmFs
aWQgd2l0aCBhIGZldyBwYXJlbnRzIHRoYXQgaGF2ZSBzcGVjaWFsIGNoaWxkXG5cdCAgICAgICAg
Ly8gcGFyc2luZyBydWxlcyAtLSBpZiB3ZSdyZSBkb3duIGhlcmUsIHRoZW4gbm9uZSBvZiB0aG9z
ZSBtYXRjaGVkIGFuZFxuXHQgICAgICAgIC8vIHNvIHdlIGFsbG93IGl0IG9ubHkgaWYgd2UgZG9u
J3Qga25vdyB3aGF0IHRoZSBwYXJlbnQgaXMsIGFzIGFsbCBvdGhlclxuXHQgICAgICAgIC8vIGNh
c2VzIGFyZSBpbnZhbGlkLlxuXHQgICAgICAgIHJldHVybiBwYXJlbnRUYWcgPT0gbnVsbDtcblx0
ICAgIH1cblx0XG5cdCAgICByZXR1cm4gdHJ1ZTtcblx0ICB9O1xuXHRcblx0ICAvKipcblx0ICAg
KiBSZXR1cm5zIHdoZXRoZXJcblx0ICAgKi9cblx0ICB2YXIgZmluZEludmFsaWRBbmNlc3RvckZv
clRhZyA9IGZ1bmN0aW9uICh0YWcsIGFuY2VzdG9ySW5mbykge1xuXHQgICAgc3dpdGNoICh0YWcp
IHtcblx0ICAgICAgY2FzZSAnYWRkcmVzcyc6XG5cdCAgICAgIGNhc2UgJ2FydGljbGUnOlxuXHQg
ICAgICBjYXNlICdhc2lkZSc6XG5cdCAgICAgIGNhc2UgJ2Jsb2NrcXVvdGUnOlxuXHQgICAgICBj
YXNlICdjZW50ZXInOlxuXHQgICAgICBjYXNlICdkZXRhaWxzJzpcblx0ICAgICAgY2FzZSAnZGlh
bG9nJzpcblx0ICAgICAgY2FzZSAnZGlyJzpcblx0ICAgICAgY2FzZSAnZGl2Jzpcblx0ICAgICAg
Y2FzZSAnZGwnOlxuXHQgICAgICBjYXNlICdmaWVsZHNldCc6XG5cdCAgICAgIGNhc2UgJ2ZpZ2Nh
cHRpb24nOlxuXHQgICAgICBjYXNlICdmaWd1cmUnOlxuXHQgICAgICBjYXNlICdmb290ZXInOlxu
XHQgICAgICBjYXNlICdoZWFkZXInOlxuXHQgICAgICBjYXNlICdoZ3JvdXAnOlxuXHQgICAgICBj
YXNlICdtYWluJzpcblx0ICAgICAgY2FzZSAnbWVudSc6XG5cdCAgICAgIGNhc2UgJ25hdic6XG5c
dCAgICAgIGNhc2UgJ29sJzpcblx0ICAgICAgY2FzZSAncCc6XG5cdCAgICAgIGNhc2UgJ3NlY3Rp
b24nOlxuXHQgICAgICBjYXNlICdzdW1tYXJ5Jzpcblx0ICAgICAgY2FzZSAndWwnOlxuXHQgICAg
ICBjYXNlICdwcmUnOlxuXHQgICAgICBjYXNlICdsaXN0aW5nJzpcblx0ICAgICAgY2FzZSAndGFi
bGUnOlxuXHQgICAgICBjYXNlICdocic6XG5cdCAgICAgIGNhc2UgJ3htcCc6XG5cdCAgICAgIGNh
c2UgJ2gxJzpcblx0ICAgICAgY2FzZSAnaDInOlxuXHQgICAgICBjYXNlICdoMyc6XG5cdCAgICAg
IGNhc2UgJ2g0Jzpcblx0ICAgICAgY2FzZSAnaDUnOlxuXHQgICAgICBjYXNlICdoNic6XG5cdCAg
ICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5wVGFnSW5CdXR0b25TY29wZTtcblx0XG5cdCAgICAg
IGNhc2UgJ2Zvcm0nOlxuXHQgICAgICAgIHJldHVybiBhbmNlc3RvckluZm8uZm9ybVRhZyB8fCBh
bmNlc3RvckluZm8ucFRhZ0luQnV0dG9uU2NvcGU7XG5cdFxuXHQgICAgICBjYXNlICdsaSc6XG5c
dCAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5saXN0SXRlbVRhZ0F1dG9jbG9zaW5nO1xuXHRc
blx0ICAgICAgY2FzZSAnZGQnOlxuXHQgICAgICBjYXNlICdkdCc6XG5cdCAgICAgICAgcmV0dXJu
IGFuY2VzdG9ySW5mby5kbEl0ZW1UYWdBdXRvY2xvc2luZztcblx0XG5cdCAgICAgIGNhc2UgJ2J1
dHRvbic6XG5cdCAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5idXR0b25UYWdJblNjb3BlO1xu
XHRcblx0ICAgICAgY2FzZSAnYSc6XG5cdCAgICAgICAgLy8gU3BlYyBzYXlzIHNvbWV0aGluZyBh
Ym91dCBzdG9yaW5nIGEgbGlzdCBvZiBtYXJrZXJzLCBidXQgaXQgc291bmRzXG5cdCAgICAgICAg
Ly8gZXF1aXZhbGVudCB0byB0aGlzIGNoZWNrLlxuXHQgICAgICAgIHJldHVybiBhbmNlc3Rvcklu
Zm8uYVRhZ0luU2NvcGU7XG5cdFxuXHQgICAgICBjYXNlICdub2JyJzpcblx0ICAgICAgICByZXR1
cm4gYW5jZXN0b3JJbmZvLm5vYnJUYWdJblNjb3BlO1xuXHQgICAgfVxuXHRcblx0ICAgIHJldHVy
biBudWxsO1xuXHQgIH07XG5cdFxuXHQgIC8qKlxuXHQgICAqIEdpdmVuIGEgUmVhY3RDb21wb3Np
dGVDb21wb25lbnQgaW5zdGFuY2UsIHJldHVybiBhIGxpc3Qgb2YgaXRzIHJlY3Vyc2l2ZVxuXHQg
ICAqIG93bmVycywgc3RhcnRpbmcgYXQgdGhlIHJvb3QgYW5kIGVuZGluZyB3aXRoIHRoZSBpbnN0
YW5jZSBpdHNlbGYuXG5cdCAgICovXG5cdCAgdmFyIGZpbmRPd25lclN0YWNrID0gZnVuY3Rpb24g
KGluc3RhbmNlKSB7XG5cdCAgICBpZiAoIWluc3RhbmNlKSB7XG5cdCAgICAgIHJldHVybiBbXTtc
blx0ICAgIH1cblx0XG5cdCAgICB2YXIgc3RhY2sgPSBbXTtcblx0ICAgIGRvIHtcblx0ICAgICAg
c3RhY2sucHVzaChpbnN0YW5jZSk7XG5cdCAgICB9IHdoaWxlIChpbnN0YW5jZSA9IGluc3RhbmNl
Ll9jdXJyZW50RWxlbWVudC5fb3duZXIpO1xuXHQgICAgc3RhY2sucmV2ZXJzZSgpO1xuXHQgICAg
cmV0dXJuIHN0YWNrO1xuXHQgIH07XG5cdFxuXHQgIHZhciBkaWRXYXJuID0ge307XG5cdFxuXHQg
IHZhbGlkYXRlRE9NTmVzdGluZyA9IGZ1bmN0aW9uIChjaGlsZFRhZywgY2hpbGRUZXh0LCBjaGls
ZEluc3RhbmNlLCBhbmNlc3RvckluZm8pIHtcblx0ICAgIGFuY2VzdG9ySW5mbyA9IGFuY2VzdG9y
SW5mbyB8fCBlbXB0eUFuY2VzdG9ySW5mbztcblx0ICAgIHZhciBwYXJlbnRJbmZvID0gYW5jZXN0
b3JJbmZvLmN1cnJlbnQ7XG5cdCAgICB2YXIgcGFyZW50VGFnID0gcGFyZW50SW5mbyAmJiBwYXJl
bnRJbmZvLnRhZztcblx0XG5cdCAgICBpZiAoY2hpbGRUZXh0ICE9IG51bGwpIHtcblx0ICAgICAg
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoY2hpbGRUYWcg
PT0gbnVsbCwgJ3ZhbGlkYXRlRE9NTmVzdGluZzogd2hlbiBjaGlsZFRleHQgaXMgcGFzc2VkLCBj
aGlsZFRhZyBzaG91bGQgYmUgbnVsbCcpIDogdm9pZCAwO1xuXHQgICAgICBjaGlsZFRhZyA9ICcj
dGV4dCc7XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIGludmFsaWRQYXJlbnQgPSBpc1RhZ1ZhbGlk
V2l0aFBhcmVudChjaGlsZFRhZywgcGFyZW50VGFnKSA/IG51bGwgOiBwYXJlbnRJbmZvO1xuXHQg
ICAgdmFyIGludmFsaWRBbmNlc3RvciA9IGludmFsaWRQYXJlbnQgPyBudWxsIDogZmluZEludmFs
aWRBbmNlc3RvckZvclRhZyhjaGlsZFRhZywgYW5jZXN0b3JJbmZvKTtcblx0ICAgIHZhciBwcm9i
bGVtYXRpYyA9IGludmFsaWRQYXJlbnQgfHwgaW52YWxpZEFuY2VzdG9yO1xuXHRcblx0ICAgIGlm
IChwcm9ibGVtYXRpYykge1xuXHQgICAgICB2YXIgYW5jZXN0b3JUYWcgPSBwcm9ibGVtYXRpYy50
YWc7XG5cdCAgICAgIHZhciBhbmNlc3Rvckluc3RhbmNlID0gcHJvYmxlbWF0aWMuaW5zdGFuY2U7
XG5cdFxuXHQgICAgICB2YXIgY2hpbGRPd25lciA9IGNoaWxkSW5zdGFuY2UgJiYgY2hpbGRJbnN0
YW5jZS5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuXHQgICAgICB2YXIgYW5jZXN0b3JPd25lciA9
IGFuY2VzdG9ySW5zdGFuY2UgJiYgYW5jZXN0b3JJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQuX293
bmVyO1xuXHRcblx0ICAgICAgdmFyIGNoaWxkT3duZXJzID0gZmluZE93bmVyU3RhY2soY2hpbGRP
d25lcik7XG5cdCAgICAgIHZhciBhbmNlc3Rvck93bmVycyA9IGZpbmRPd25lclN0YWNrKGFuY2Vz
dG9yT3duZXIpO1xuXHRcblx0ICAgICAgdmFyIG1pblN0YWNrTGVuID0gTWF0aC5taW4oY2hpbGRP
d25lcnMubGVuZ3RoLCBhbmNlc3Rvck93bmVycy5sZW5ndGgpO1xuXHQgICAgICB2YXIgaTtcblx0
XG5cdCAgICAgIHZhciBkZWVwZXN0Q29tbW9uID0gLTE7XG5cdCAgICAgIGZvciAoaSA9IDA7IGkg
PCBtaW5TdGFja0xlbjsgaSsrKSB7XG5cdCAgICAgICAgaWYgKGNoaWxkT3duZXJzW2ldID09PSBh
bmNlc3Rvck93bmVyc1tpXSkge1xuXHQgICAgICAgICAgZGVlcGVzdENvbW1vbiA9IGk7XG5cdCAg
ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblx0ICAgICAg
fVxuXHRcblx0ICAgICAgdmFyIFVOS05PV04gPSAnKHVua25vd24pJztcblx0ICAgICAgdmFyIGNo
aWxkT3duZXJOYW1lcyA9IGNoaWxkT3duZXJzLnNsaWNlKGRlZXBlc3RDb21tb24gKyAxKS5tYXAo
ZnVuY3Rpb24gKGluc3QpIHtcblx0ICAgICAgICByZXR1cm4gaW5zdC5nZXROYW1lKCkgfHwgVU5L
Tk9XTjtcblx0ICAgICAgfSk7XG5cdCAgICAgIHZhciBhbmNlc3Rvck93bmVyTmFtZXMgPSBhbmNl
c3Rvck93bmVycy5zbGljZShkZWVwZXN0Q29tbW9uICsgMSkubWFwKGZ1bmN0aW9uIChpbnN0KSB7
XG5cdCAgICAgICAgcmV0dXJuIGluc3QuZ2V0TmFtZSgpIHx8IFVOS05PV047XG5cdCAgICAgIH0p
O1xuXHQgICAgICB2YXIgb3duZXJJbmZvID0gW10uY29uY2F0KFxuXHQgICAgICAvLyBJZiB0aGUg
cGFyZW50IGFuZCBjaGlsZCBpbnN0YW5jZXMgaGF2ZSBhIGNvbW1vbiBvd25lciBhbmNlc3Rvciwg
c3RhcnRcblx0ICAgICAgLy8gd2l0aCB0aGF0IC0tIG90aGVyd2lzZSB3ZSBqdXN0IHN0YXJ0IHdp
dGggdGhlIHBhcmVudCdzIG93bmVycy5cblx0ICAgICAgZGVlcGVzdENvbW1vbiAhPT0gLTEgPyBj
aGlsZE93bmVyc1tkZWVwZXN0Q29tbW9uXS5nZXROYW1lKCkgfHwgVU5LTk9XTiA6IFtdLCBhbmNl
c3Rvck93bmVyTmFtZXMsIGFuY2VzdG9yVGFnLFxuXHQgICAgICAvLyBJZiB3ZSdyZSB3YXJuaW5n
IGFib3V0IGFuIGludmFsaWQgKG5vbi1wYXJlbnQpIGFuY2VzdHJ5LCBhZGQgJy4uLidcblx0ICAg
ICAgaW52YWxpZEFuY2VzdG9yID8gWycuLi4nXSA6IFtdLCBjaGlsZE93bmVyTmFtZXMsIGNoaWxk
VGFnKS5qb2luKCcgPiAnKTtcblx0XG5cdCAgICAgIHZhciB3YXJuS2V5ID0gISFpbnZhbGlkUGFy
ZW50ICsgJ3wnICsgY2hpbGRUYWcgKyAnfCcgKyBhbmNlc3RvclRhZyArICd8JyArIG93bmVySW5m
bztcblx0ICAgICAgaWYgKGRpZFdhcm5bd2FybktleV0pIHtcblx0ICAgICAgICByZXR1cm47XG5c
dCAgICAgIH1cblx0ICAgICAgZGlkV2Fyblt3YXJuS2V5XSA9IHRydWU7XG5cdFxuXHQgICAgICB2
YXIgdGFnRGlzcGxheU5hbWUgPSBjaGlsZFRhZztcblx0ICAgICAgdmFyIHdoaXRlc3BhY2VJbmZv
ID0gJyc7XG5cdCAgICAgIGlmIChjaGlsZFRhZyA9PT0gJyN0ZXh0Jykge1xuXHQgICAgICAgIGlm
ICgvXFxTLy50ZXN0KGNoaWxkVGV4dCkpIHtcblx0ICAgICAgICAgIHRhZ0Rpc3BsYXlOYW1lID0g
J1RleHQgbm9kZXMnO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICB0YWdEaXNwbGF5
TmFtZSA9ICdXaGl0ZXNwYWNlIHRleHQgbm9kZXMnO1xuXHQgICAgICAgICAgd2hpdGVzcGFjZUlu
Zm8gPSBcIiBNYWtlIHN1cmUgeW91IGRvbid0IGhhdmUgYW55IGV4dHJhIHdoaXRlc3BhY2UgYmV0
d2VlbiB0YWdzIG9uIFwiICsgJ2VhY2ggbGluZSBvZiB5b3VyIHNvdXJjZSBjb2RlLic7XG5cdCAg
ICAgICAgfVxuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIHRhZ0Rpc3BsYXlOYW1lID0gJzwn
ICsgY2hpbGRUYWcgKyAnPic7XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIGlmIChpbnZhbGlkUGFy
ZW50KSB7XG5cdCAgICAgICAgdmFyIGluZm8gPSAnJztcblx0ICAgICAgICBpZiAoYW5jZXN0b3JU
YWcgPT09ICd0YWJsZScgJiYgY2hpbGRUYWcgPT09ICd0cicpIHtcblx0ICAgICAgICAgIGluZm8g
Kz0gJyBBZGQgYSA8dGJvZHk+IHRvIHlvdXIgY29kZSB0byBtYXRjaCB0aGUgRE9NIHRyZWUgZ2Vu
ZXJhdGVkIGJ5ICcgKyAndGhlIGJyb3dzZXIuJztcblx0ICAgICAgICB9XG5cdCAgICAgICAgcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICd2YWxp
ZGF0ZURPTU5lc3RpbmcoLi4uKTogJXMgY2Fubm90IGFwcGVhciBhcyBhIGNoaWxkIG9mIDwlcz4u
JXMgJyArICdTZWUgJXMuJXMnLCB0YWdEaXNwbGF5TmFtZSwgYW5jZXN0b3JUYWcsIHdoaXRlc3Bh
Y2VJbmZvLCBvd25lckluZm8sIGluZm8pIDogdm9pZCAwO1xuXHQgICAgICB9IGVsc2Uge1xuXHQg
ICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZh
bHNlLCAndmFsaWRhdGVET01OZXN0aW5nKC4uLik6ICVzIGNhbm5vdCBhcHBlYXIgYXMgYSBkZXNj
ZW5kYW50IG9mICcgKyAnPCVzPi4gU2VlICVzLicsIHRhZ0Rpc3BsYXlOYW1lLCBhbmNlc3RvclRh
Zywgb3duZXJJbmZvKSA6IHZvaWQgMDtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH07XG5cdFxu
XHQgIHZhbGlkYXRlRE9NTmVzdGluZy51cGRhdGVkQW5jZXN0b3JJbmZvID0gdXBkYXRlZEFuY2Vz
dG9ySW5mbztcblx0XG5cdCAgLy8gRm9yIHRlc3Rpbmdcblx0ICB2YWxpZGF0ZURPTU5lc3Rpbmcu
aXNUYWdWYWxpZEluQ29udGV4dCA9IGZ1bmN0aW9uICh0YWcsIGFuY2VzdG9ySW5mbykge1xuXHQg
ICAgYW5jZXN0b3JJbmZvID0gYW5jZXN0b3JJbmZvIHx8IGVtcHR5QW5jZXN0b3JJbmZvO1xuXHQg
ICAgdmFyIHBhcmVudEluZm8gPSBhbmNlc3RvckluZm8uY3VycmVudDtcblx0ICAgIHZhciBwYXJl
bnRUYWcgPSBwYXJlbnRJbmZvICYmIHBhcmVudEluZm8udGFnO1xuXHQgICAgcmV0dXJuIGlzVGFn
VmFsaWRXaXRoUGFyZW50KHRhZywgcGFyZW50VGFnKSAmJiAhZmluZEludmFsaWRBbmNlc3RvckZv
clRhZyh0YWcsIGFuY2VzdG9ySW5mbyk7XG5cdCAgfTtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9y
dHMgPSB2YWxpZGF0ZURPTU5lc3Rpbmc7XG5cbi8qKiovIH0sXG4vKiA1MCAqL1xuLyoqKi8gZnVu
Y3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0ZXhwb3J0
cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblx0ZXhwb3J0cy5kZWZhdWx0ID0gd2FybmluZztcblx0Lyoq
XG5cdCAqIFByaW50cyBhIHdhcm5pbmcgaW4gdGhlIGNvbnNvbGUgaWYgaXQgZXhpc3RzLlxuXHQg
KlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gbWVzc2FnZSBUaGUgd2FybmluZyBtZXNzYWdlLlxuXHQg
KiBAcmV0dXJucyB7dm9pZH1cblx0ICovXG5cdGZ1bmN0aW9uIHdhcm5pbmcobWVzc2FnZSkge1xu
XHQgIC8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cblx0ICBpZiAodHlwZW9mIGNvbnNv
bGUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBjb25zb2xlLmVycm9yID09PSAnZnVuY3Rpb24n
KSB7XG5cdCAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuXHQgIH1cblx0ICAvKiBlc2xpbnQt
ZW5hYmxlIG5vLWNvbnNvbGUgKi9cblx0ICB0cnkge1xuXHQgICAgLy8gVGhpcyBlcnJvciB3YXMg
dGhyb3duIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCBpZiB5b3UgZW5hYmxlXG5cdCAgICAvLyBc
ImJyZWFrIG9uIGFsbCBleGNlcHRpb25zXCIgaW4geW91ciBjb25zb2xlLFxuXHQgICAgLy8gaXQg
d291bGQgcGF1c2UgdGhlIGV4ZWN1dGlvbiBhdCB0aGlzIGxpbmUuXG5cdCAgICB0aHJvdyBuZXcg
RXJyb3IobWVzc2FnZSk7XG5cdCAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1lbXB0eSAqL1xuXHQg
IH0gY2F0Y2ggKGUpIHt9XG5cdCAgLyogZXNsaW50LWVuYWJsZSBuby1lbXB0eSAqL1xuXHR9XG5c
bi8qKiovIH0sXG4vKiA1MSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dl
YnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0LyoqXG5cdCAqIENv
cHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBAdHlwZWNoZWNrc1xuXHQgKi9c
blx0XG5cdHZhciBlbXB0eUZ1bmN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcblx0XG5c
dC8qKlxuXHQgKiBVcHN0cmVhbSB2ZXJzaW9uIG9mIGV2ZW50IGxpc3RlbmVyLiBEb2VzIG5vdCB0
YWtlIGludG8gYWNjb3VudCBzcGVjaWZpY1xuXHQgKiBuYXR1cmUgb2YgcGxhdGZvcm0uXG5cdCAq
L1xuXHR2YXIgRXZlbnRMaXN0ZW5lciA9IHtcblx0ICAvKipcblx0ICAgKiBMaXN0ZW4gdG8gRE9N
IGV2ZW50cyBkdXJpbmcgdGhlIGJ1YmJsZSBwaGFzZS5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7
RE9NRXZlbnRUYXJnZXR9IHRhcmdldCBET00gZWxlbWVudCB0byByZWdpc3RlciBsaXN0ZW5lciBv
bi5cblx0ICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnRUeXBlIEV2ZW50IHR5cGUsIGUuZy4gJ2Ns
aWNrJyBvciAnbW91c2VvdmVyJy5cblx0ICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBD
YWxsYmFjayBmdW5jdGlvbi5cblx0ICAgKiBAcmV0dXJuIHtvYmplY3R9IE9iamVjdCB3aXRoIGEg
YHJlbW92ZWAgbWV0aG9kLlxuXHQgICAqL1xuXHQgIGxpc3RlbjogZnVuY3Rpb24gbGlzdGVuKHRh
cmdldCwgZXZlbnRUeXBlLCBjYWxsYmFjaykge1xuXHQgICAgaWYgKHRhcmdldC5hZGRFdmVudExp
c3RlbmVyKSB7XG5cdCAgICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgY2Fs
bGJhY2ssIGZhbHNlKTtcblx0ICAgICAgcmV0dXJuIHtcblx0ICAgICAgICByZW1vdmU6IGZ1bmN0
aW9uIHJlbW92ZSgpIHtcblx0ICAgICAgICAgIHRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKGV2
ZW50VHlwZSwgY2FsbGJhY2ssIGZhbHNlKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH07XG5cdCAg
ICB9IGVsc2UgaWYgKHRhcmdldC5hdHRhY2hFdmVudCkge1xuXHQgICAgICB0YXJnZXQuYXR0YWNo
RXZlbnQoJ29uJyArIGV2ZW50VHlwZSwgY2FsbGJhY2spO1xuXHQgICAgICByZXR1cm4ge1xuXHQg
ICAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge1xuXHQgICAgICAgICAgdGFyZ2V0LmRl
dGFjaEV2ZW50KCdvbicgKyBldmVudFR5cGUsIGNhbGxiYWNrKTtcblx0ICAgICAgICB9XG5cdCAg
ICAgIH07XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogTGlzdGVuIHRvIERP
TSBldmVudHMgZHVyaW5nIHRoZSBjYXB0dXJlIHBoYXNlLlxuXHQgICAqXG5cdCAgICogQHBhcmFt
IHtET01FdmVudFRhcmdldH0gdGFyZ2V0IERPTSBlbGVtZW50IHRvIHJlZ2lzdGVyIGxpc3RlbmVy
IG9uLlxuXHQgICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudFR5cGUgRXZlbnQgdHlwZSwgZS5nLiAn
Y2xpY2snIG9yICdtb3VzZW92ZXInLlxuXHQgICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNr
IENhbGxiYWNrIGZ1bmN0aW9uLlxuXHQgICAqIEByZXR1cm4ge29iamVjdH0gT2JqZWN0IHdpdGgg
YSBgcmVtb3ZlYCBtZXRob2QuXG5cdCAgICovXG5cdCAgY2FwdHVyZTogZnVuY3Rpb24gY2FwdHVy
ZSh0YXJnZXQsIGV2ZW50VHlwZSwgY2FsbGJhY2spIHtcblx0ICAgIGlmICh0YXJnZXQuYWRkRXZl
bnRMaXN0ZW5lcikge1xuXHQgICAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUs
IGNhbGxiYWNrLCB0cnVlKTtcblx0ICAgICAgcmV0dXJuIHtcblx0ICAgICAgICByZW1vdmU6IGZ1
bmN0aW9uIHJlbW92ZSgpIHtcblx0ICAgICAgICAgIHRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVy
KGV2ZW50VHlwZSwgY2FsbGJhY2ssIHRydWUpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfTtcblx0
ICAgIH0gZWxzZSB7XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIGNvbnNvbGUuZXJy
b3IoJ0F0dGVtcHRlZCB0byBsaXN0ZW4gdG8gZXZlbnRzIGR1cmluZyB0aGUgY2FwdHVyZSBwaGFz
ZSBvbiBhICcgKyAnYnJvd3NlciB0aGF0IGRvZXMgbm90IHN1cHBvcnQgdGhlIGNhcHR1cmUgcGhh
c2UuIFlvdXIgYXBwbGljYXRpb24gJyArICd3aWxsIG5vdCByZWNlaXZlIHNvbWUgZXZlbnRzLicp
O1xuXHQgICAgICB9XG5cdCAgICAgIHJldHVybiB7XG5cdCAgICAgICAgcmVtb3ZlOiBlbXB0eUZ1
bmN0aW9uXG5cdCAgICAgIH07XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgcmVnaXN0ZXJEZWZh
dWx0OiBmdW5jdGlvbiByZWdpc3RlckRlZmF1bHQoKSB7fVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4
cG9ydHMgPSBFdmVudExpc3RlbmVyO1xuXG4vKioqLyB9LFxuLyogNTIgKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgKGMpIDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpc
blx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQvKipcblx0
ICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlIGlucHV0L3RleHRhcmVhIHRvIGZvY3VzXG5cdCAq
L1xuXHRcblx0ZnVuY3Rpb24gZm9jdXNOb2RlKG5vZGUpIHtcblx0ICAvLyBJRTggY2FuIHRocm93
IFwiQ2FuJ3QgbW92ZSBmb2N1cyB0byB0aGUgY29udHJvbCBiZWNhdXNlIGl0IGlzIGludmlzaWJs
ZSxcblx0ICAvLyBub3QgZW5hYmxlZCwgb3Igb2YgYSB0eXBlIHRoYXQgZG9lcyBub3QgYWNjZXB0
IHRoZSBmb2N1cy5cIiBmb3IgYWxsIGtpbmRzIG9mXG5cdCAgLy8gcmVhc29ucyB0aGF0IGFyZSB0
b28gZXhwZW5zaXZlIGFuZCBmcmFnaWxlIHRvIHRlc3QuXG5cdCAgdHJ5IHtcblx0ICAgIG5vZGUu
Zm9jdXMoKTtcblx0ICB9IGNhdGNoIChlKSB7fVxuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9
IGZvY3VzTm9kZTtcblxuLyoqKi8gfSxcbi8qIDUzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMpIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQvKipcblx0ICogQ29weXJpZ2h0
IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIEB0eXBlY2hlY2tzXG5cdCAqL1xuXHRcblx0
LyogZXNsaW50LWRpc2FibGUgZmItd3d3L3R5cGVvZi11bmRlZmluZWQgKi9cblx0XG5cdC8qKlxu
XHQgKiBTYW1lIGFzIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgYnV0IHdyYXBzIGluIGEgdHJ5LWNh
dGNoIGJsb2NrLiBJbiBJRSBpdCBpc1xuXHQgKiBub3Qgc2FmZSB0byBjYWxsIGRvY3VtZW50LmFj
dGl2ZUVsZW1lbnQgaWYgdGhlcmUgaXMgbm90aGluZyBmb2N1c2VkLlxuXHQgKlxuXHQgKiBUaGUg
YWN0aXZlRWxlbWVudCB3aWxsIGJlIG51bGwgb25seSBpZiB0aGUgZG9jdW1lbnQgb3IgZG9jdW1l
bnQgYm9keSBpcyBub3Rcblx0ICogeWV0IGRlZmluZWQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7P0RP
TURvY3VtZW50fSBkb2MgRGVmYXVsdHMgdG8gY3VycmVudCBkb2N1bWVudC5cblx0ICogQHJldHVy
biB7P0RPTUVsZW1lbnR9XG5cdCAqL1xuXHRmdW5jdGlvbiBnZXRBY3RpdmVFbGVtZW50KGRvYykg
Lyo/RE9NRWxlbWVudCove1xuXHQgIGRvYyA9IGRvYyB8fCAodHlwZW9mIGRvY3VtZW50ICE9PSAn
dW5kZWZpbmVkJyA/IGRvY3VtZW50IDogdW5kZWZpbmVkKTtcblx0ICBpZiAodHlwZW9mIGRvYyA9
PT0gJ3VuZGVmaW5lZCcpIHtcblx0ICAgIHJldHVybiBudWxsO1xuXHQgIH1cblx0ICB0cnkge1xu
XHQgICAgcmV0dXJuIGRvYy5hY3RpdmVFbGVtZW50IHx8IGRvYy5ib2R5O1xuXHQgIH0gY2F0Y2gg
KGUpIHtcblx0ICAgIHJldHVybiBkb2MuYm9keTtcblx0ICB9XG5cdH1cblx0XG5cdG1vZHVsZS5l
eHBvcnRzID0gZ2V0QWN0aXZlRWxlbWVudDtcblxuLyoqKi8gfSxcbi8qIDU0ICovXG4vKioqLyBm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIg
cm9vdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTE4KTtcblx0XG5cdC8qKiBCdWlsdC1pbiB2YWx1
ZSByZWZlcmVuY2VzLiAqL1xuXHR2YXIgU3ltYm9sID0gcm9vdC5TeW1ib2w7XG5cdFxuXHRtb2R1
bGUuZXhwb3J0cyA9IFN5bWJvbDtcblxuXG4vKioqLyB9LFxuLyogNTUgKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0
XG5cdC8vIFJlYWN0IDE1LjUgcmVmZXJlbmNlcyB0aGlzIG1vZHVsZSwgYW5kIGFzc3VtZXMgUHJv
cFR5cGVzIGFyZSBzdGlsbCBjYWxsYWJsZSBpbiBwcm9kdWN0aW9uLlxuXHQvLyBUaGVyZWZvcmUg
d2UgcmUtZXhwb3J0IGRldmVsb3BtZW50LW9ubHkgdmVyc2lvbiB3aXRoIGFsbCB0aGUgUHJvcFR5
cGVzIGNoZWNrcyBoZXJlLlxuXHQvLyBIb3dldmVyIGlmIG9uZSBpcyBtaWdyYXRpbmcgdG8gdGhl
IGBwcm9wLXR5cGVzYCBucG0gbGlicmFyeSwgdGhleSB3aWxsIGdvIHRocm91Z2ggdGhlXG5cdC8v
IGBpbmRleC5qc2AgZW50cnkgcG9pbnQsIGFuZCBpdCB3aWxsIGJyYW5jaCBkZXBlbmRpbmcgb24g
dGhlIGVudmlyb25tZW50LlxuXHR2YXIgZmFjdG9yeSA9IF9fd2VicGFja19yZXF1aXJlX18oMTIy
KTtcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpc1ZhbGlkRWxlbWVudCkge1xuXHQgIC8v
IEl0IGlzIHN0aWxsIGFsbG93ZWQgaW4gMTUuNS5cblx0ICB2YXIgdGhyb3dPbkRpcmVjdEFjY2Vz
cyA9IGZhbHNlO1xuXHQgIHJldHVybiBmYWN0b3J5KGlzVmFsaWRFbGVtZW50LCB0aHJvd09uRGly
ZWN0QWNjZXNzKTtcblx0fTtcblxuXG4vKioqLyB9LFxuLyogNTYgKi9cbi8qKiovIGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKi9cblx0XG5cdGlmIChmYWxzZSkge1xuXHQgIHZh
ciBSRUFDVF9FTEVNRU5UX1RZUEUgPSAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJlxu
XHQgICAgU3ltYm9sLmZvciAmJlxuXHQgICAgU3ltYm9sLmZvcigncmVhY3QuZWxlbWVudCcpKSB8
fFxuXHQgICAgMHhlYWM3O1xuXHRcblx0ICB2YXIgaXNWYWxpZEVsZW1lbnQgPSBmdW5jdGlvbihv
YmplY3QpIHtcblx0ICAgIHJldHVybiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJlxuXHQg
ICAgICBvYmplY3QgIT09IG51bGwgJiZcblx0ICAgICAgb2JqZWN0LiQkdHlwZW9mID09PSBSRUFD
VF9FTEVNRU5UX1RZUEU7XG5cdCAgfTtcblx0XG5cdCAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBg
cHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgZGV2ZWxvcG1lbnQgYmVoYXZpb3Iu
XG5cdCAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuXHQgIHZhciB0aHJvd09u
RGlyZWN0QWNjZXNzID0gdHJ1ZTtcblx0ICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFj
dG9yeVdpdGhUeXBlQ2hlY2tlcnMnKShpc1ZhbGlkRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vz
cyk7XG5cdH0gZWxzZSB7XG5cdCAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2Ag
eW91IGFyZSBvcHRpbmcgaW50byBuZXcgcHJvZHVjdGlvbiBiZWhhdmlvci5cblx0ICAvLyBodHRw
Oi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG5cdCAgbW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDEyMSkoKTtcblx0fVxuXG5cbi8qKiovIH0sXG4vKiA1NyAqL1xuLyoqKi8g
ZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAq
XG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIFJlYWN0UHJv
cFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJ
UkVEJztcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG5cblxu
LyoqKi8gfSxcbi8qIDU4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxu
XHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICog
QWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQn
dXNlIHN0cmljdCc7XG5cdFxuXHQvKipcblx0ICogQ1NTIHByb3BlcnRpZXMgd2hpY2ggYWNjZXB0
IG51bWJlcnMgYnV0IGFyZSBub3QgaW4gdW5pdHMgb2YgXCJweFwiLlxuXHQgKi9cblx0XG5cdHZh
ciBpc1VuaXRsZXNzTnVtYmVyID0ge1xuXHQgIGFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OiB0cnVl
LFxuXHQgIGJvcmRlckltYWdlT3V0c2V0OiB0cnVlLFxuXHQgIGJvcmRlckltYWdlU2xpY2U6IHRy
dWUsXG5cdCAgYm9yZGVySW1hZ2VXaWR0aDogdHJ1ZSxcblx0ICBib3hGbGV4OiB0cnVlLFxuXHQg
IGJveEZsZXhHcm91cDogdHJ1ZSxcblx0ICBib3hPcmRpbmFsR3JvdXA6IHRydWUsXG5cdCAgY29s
dW1uQ291bnQ6IHRydWUsXG5cdCAgZmxleDogdHJ1ZSxcblx0ICBmbGV4R3JvdzogdHJ1ZSxcblx0
ICBmbGV4UG9zaXRpdmU6IHRydWUsXG5cdCAgZmxleFNocmluazogdHJ1ZSxcblx0ICBmbGV4TmVn
YXRpdmU6IHRydWUsXG5cdCAgZmxleE9yZGVyOiB0cnVlLFxuXHQgIGdyaWRSb3c6IHRydWUsXG5c
dCAgZ3JpZFJvd0VuZDogdHJ1ZSxcblx0ICBncmlkUm93U3BhbjogdHJ1ZSxcblx0ICBncmlkUm93
U3RhcnQ6IHRydWUsXG5cdCAgZ3JpZENvbHVtbjogdHJ1ZSxcblx0ICBncmlkQ29sdW1uRW5kOiB0
cnVlLFxuXHQgIGdyaWRDb2x1bW5TcGFuOiB0cnVlLFxuXHQgIGdyaWRDb2x1bW5TdGFydDogdHJ1
ZSxcblx0ICBmb250V2VpZ2h0OiB0cnVlLFxuXHQgIGxpbmVDbGFtcDogdHJ1ZSxcblx0ICBsaW5l
SGVpZ2h0OiB0cnVlLFxuXHQgIG9wYWNpdHk6IHRydWUsXG5cdCAgb3JkZXI6IHRydWUsXG5cdCAg
b3JwaGFuczogdHJ1ZSxcblx0ICB0YWJTaXplOiB0cnVlLFxuXHQgIHdpZG93czogdHJ1ZSxcblx0
ICB6SW5kZXg6IHRydWUsXG5cdCAgem9vbTogdHJ1ZSxcblx0XG5cdCAgLy8gU1ZHLXJlbGF0ZWQg
cHJvcGVydGllc1xuXHQgIGZpbGxPcGFjaXR5OiB0cnVlLFxuXHQgIGZsb29kT3BhY2l0eTogdHJ1
ZSxcblx0ICBzdG9wT3BhY2l0eTogdHJ1ZSxcblx0ICBzdHJva2VEYXNoYXJyYXk6IHRydWUsXG5c
dCAgc3Ryb2tlRGFzaG9mZnNldDogdHJ1ZSxcblx0ICBzdHJva2VNaXRlcmxpbWl0OiB0cnVlLFxu
XHQgIHN0cm9rZU9wYWNpdHk6IHRydWUsXG5cdCAgc3Ryb2tlV2lkdGg6IHRydWVcblx0fTtcblx0
XG5cdC8qKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gcHJlZml4IHZlbmRvci1zcGVjaWZpYyBwcmVm
aXgsIGVnOiBXZWJraXRcblx0ICogQHBhcmFtIHtzdHJpbmd9IGtleSBzdHlsZSBuYW1lLCBlZzog
dHJhbnNpdGlvbkR1cmF0aW9uXG5cdCAqIEByZXR1cm4ge3N0cmluZ30gc3R5bGUgbmFtZSBwcmVm
aXhlZCB3aXRoIGBwcmVmaXhgLCBwcm9wZXJseSBjYW1lbENhc2VkLCBlZzpcblx0ICogV2Via2l0
VHJhbnNpdGlvbkR1cmF0aW9uXG5cdCAqL1xuXHRmdW5jdGlvbiBwcmVmaXhLZXkocHJlZml4LCBr
ZXkpIHtcblx0ICByZXR1cm4gcHJlZml4ICsga2V5LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsg
a2V5LnN1YnN0cmluZygxKTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFN1cHBvcnQgc3R5bGUgbmFt
ZXMgdGhhdCBtYXkgY29tZSBwYXNzZWQgaW4gcHJlZml4ZWQgYnkgYWRkaW5nIHBlcm11dGF0aW9u
c1xuXHQgKiBvZiB2ZW5kb3IgcHJlZml4ZXMuXG5cdCAqL1xuXHR2YXIgcHJlZml4ZXMgPSBbJ1dl
YmtpdCcsICdtcycsICdNb3onLCAnTyddO1xuXHRcblx0Ly8gVXNpbmcgT2JqZWN0LmtleXMgaGVy
ZSwgb3IgZWxzZSB0aGUgdmFuaWxsYSBmb3ItaW4gbG9vcCBtYWtlcyBJRTggZ28gaW50byBhblxu
XHQvLyBpbmZpbml0ZSBsb29wLCBiZWNhdXNlIGl0IGl0ZXJhdGVzIG92ZXIgdGhlIG5ld2x5IGFk
ZGVkIHByb3BzIHRvby5cblx0T2JqZWN0LmtleXMoaXNVbml0bGVzc051bWJlcikuZm9yRWFjaChm
dW5jdGlvbiAocHJvcCkge1xuXHQgIHByZWZpeGVzLmZvckVhY2goZnVuY3Rpb24gKHByZWZpeCkg
e1xuXHQgICAgaXNVbml0bGVzc051bWJlcltwcmVmaXhLZXkocHJlZml4LCBwcm9wKV0gPSBpc1Vu
aXRsZXNzTnVtYmVyW3Byb3BdO1xuXHQgIH0pO1xuXHR9KTtcblx0XG5cdC8qKlxuXHQgKiBNb3N0
IHN0eWxlIHByb3BlcnRpZXMgY2FuIGJlIHVuc2V0IGJ5IGRvaW5nIC5zdHlsZVtwcm9wXSA9ICcn
IGJ1dCBJRThcblx0ICogZG9lc24ndCBsaWtlIGRvaW5nIHRoYXQgd2l0aCBzaG9ydGhhbmQgcHJv
cGVydGllcyBzbyBmb3IgdGhlIHByb3BlcnRpZXMgdGhhdFxuXHQgKiBJRTggYnJlYWtzIG9uLCB3
aGljaCBhcmUgbGlzdGVkIGhlcmUsIHdlIGluc3RlYWQgdW5zZXQgZWFjaCBvZiB0aGVcblx0ICog
aW5kaXZpZHVhbCBwcm9wZXJ0aWVzLiBTZWUgaHR0cDovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQv
MTIzODUuXG5cdCAqIFRoZSA0LXZhbHVlICdjbG9jaycgcHJvcGVydGllcyBsaWtlIG1hcmdpbiwg
cGFkZGluZywgYm9yZGVyLXdpZHRoIHNlZW0gdG9cblx0ICogYmVoYXZlIHdpdGhvdXQgYW55IHBy
b2JsZW1zLiBDdXJpb3VzbHksIGxpc3Qtc3R5bGUgd29ya3MgdG9vIHdpdGhvdXQgYW55XG5cdCAq
IHNwZWNpYWwgcHJvZGRpbmcuXG5cdCAqL1xuXHR2YXIgc2hvcnRoYW5kUHJvcGVydHlFeHBhbnNp
b25zID0ge1xuXHQgIGJhY2tncm91bmQ6IHtcblx0ICAgIGJhY2tncm91bmRBdHRhY2htZW50OiB0
cnVlLFxuXHQgICAgYmFja2dyb3VuZENvbG9yOiB0cnVlLFxuXHQgICAgYmFja2dyb3VuZEltYWdl
OiB0cnVlLFxuXHQgICAgYmFja2dyb3VuZFBvc2l0aW9uWDogdHJ1ZSxcblx0ICAgIGJhY2tncm91
bmRQb3NpdGlvblk6IHRydWUsXG5cdCAgICBiYWNrZ3JvdW5kUmVwZWF0OiB0cnVlXG5cdCAgfSxc
blx0ICBiYWNrZ3JvdW5kUG9zaXRpb246IHtcblx0ICAgIGJhY2tncm91bmRQb3NpdGlvblg6IHRy
dWUsXG5cdCAgICBiYWNrZ3JvdW5kUG9zaXRpb25ZOiB0cnVlXG5cdCAgfSxcblx0ICBib3JkZXI6
IHtcblx0ICAgIGJvcmRlcldpZHRoOiB0cnVlLFxuXHQgICAgYm9yZGVyU3R5bGU6IHRydWUsXG5c
dCAgICBib3JkZXJDb2xvcjogdHJ1ZVxuXHQgIH0sXG5cdCAgYm9yZGVyQm90dG9tOiB7XG5cdCAg
ICBib3JkZXJCb3R0b21XaWR0aDogdHJ1ZSxcblx0ICAgIGJvcmRlckJvdHRvbVN0eWxlOiB0cnVl
LFxuXHQgICAgYm9yZGVyQm90dG9tQ29sb3I6IHRydWVcblx0ICB9LFxuXHQgIGJvcmRlckxlZnQ6
IHtcblx0ICAgIGJvcmRlckxlZnRXaWR0aDogdHJ1ZSxcblx0ICAgIGJvcmRlckxlZnRTdHlsZTog
dHJ1ZSxcblx0ICAgIGJvcmRlckxlZnRDb2xvcjogdHJ1ZVxuXHQgIH0sXG5cdCAgYm9yZGVyUmln
aHQ6IHtcblx0ICAgIGJvcmRlclJpZ2h0V2lkdGg6IHRydWUsXG5cdCAgICBib3JkZXJSaWdodFN0
eWxlOiB0cnVlLFxuXHQgICAgYm9yZGVyUmlnaHRDb2xvcjogdHJ1ZVxuXHQgIH0sXG5cdCAgYm9y
ZGVyVG9wOiB7XG5cdCAgICBib3JkZXJUb3BXaWR0aDogdHJ1ZSxcblx0ICAgIGJvcmRlclRvcFN0
eWxlOiB0cnVlLFxuXHQgICAgYm9yZGVyVG9wQ29sb3I6IHRydWVcblx0ICB9LFxuXHQgIGZvbnQ6
IHtcblx0ICAgIGZvbnRTdHlsZTogdHJ1ZSxcblx0ICAgIGZvbnRWYXJpYW50OiB0cnVlLFxuXHQg
ICAgZm9udFdlaWdodDogdHJ1ZSxcblx0ICAgIGZvbnRTaXplOiB0cnVlLFxuXHQgICAgbGluZUhl
aWdodDogdHJ1ZSxcblx0ICAgIGZvbnRGYW1pbHk6IHRydWVcblx0ICB9LFxuXHQgIG91dGxpbmU6
IHtcblx0ICAgIG91dGxpbmVXaWR0aDogdHJ1ZSxcblx0ICAgIG91dGxpbmVTdHlsZTogdHJ1ZSxc
blx0ICAgIG91dGxpbmVDb2xvcjogdHJ1ZVxuXHQgIH1cblx0fTtcblx0XG5cdHZhciBDU1NQcm9w
ZXJ0eSA9IHtcblx0ICBpc1VuaXRsZXNzTnVtYmVyOiBpc1VuaXRsZXNzTnVtYmVyLFxuXHQgIHNo
b3J0aGFuZFByb3BlcnR5RXhwYW5zaW9uczogc2hvcnRoYW5kUHJvcGVydHlFeHBhbnNpb25zXG5c
dH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IENTU1Byb3BlcnR5O1xuXG4vKioqLyB9LFxuLyog
NTkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
Xykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBc
blx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXHRcblx0ZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGlu
c3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVj
dG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1
bmN0aW9uXCIpOyB9IH1cblx0XG5cdHZhciBQb29sZWRDbGFzcyA9IF9fd2VicGFja19yZXF1aXJl
X18oMTMpO1xuXHRcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5c
dFxuXHQvKipcblx0ICogQSBzcGVjaWFsaXplZCBwc2V1ZG8tZXZlbnQgbW9kdWxlIHRvIGhlbHAg
a2VlcCB0cmFjayBvZiBjb21wb25lbnRzIHdhaXRpbmcgdG9cblx0ICogYmUgbm90aWZpZWQgd2hl
biB0aGVpciBET00gcmVwcmVzZW50YXRpb25zIGFyZSBhdmFpbGFibGUgZm9yIHVzZS5cblx0ICpc
blx0ICogVGhpcyBpbXBsZW1lbnRzIGBQb29sZWRDbGFzc2AsIHNvIHlvdSBzaG91bGQgbmV2ZXIg
bmVlZCB0byBpbnN0YW50aWF0ZSB0aGlzLlxuXHQgKiBJbnN0ZWFkLCB1c2UgYENhbGxiYWNrUXVl
dWUuZ2V0UG9vbGVkKClgLlxuXHQgKlxuXHQgKiBAY2xhc3MgUmVhY3RNb3VudFJlYWR5XG5cdCAq
IEBpbXBsZW1lbnRzIFBvb2xlZENsYXNzXG5cdCAqIEBpbnRlcm5hbFxuXHQgKi9cblx0XG5cdHZh
ciBDYWxsYmFja1F1ZXVlID0gZnVuY3Rpb24gKCkge1xuXHQgIGZ1bmN0aW9uIENhbGxiYWNrUXVl
dWUoYXJnKSB7XG5cdCAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ2FsbGJhY2tRdWV1ZSk7XG5c
dFxuXHQgICAgdGhpcy5fY2FsbGJhY2tzID0gbnVsbDtcblx0ICAgIHRoaXMuX2NvbnRleHRzID0g
bnVsbDtcblx0ICAgIHRoaXMuX2FyZyA9IGFyZztcblx0ICB9XG5cdFxuXHQgIC8qKlxuXHQgICAq
IEVucXVldWVzIGEgY2FsbGJhY2sgdG8gYmUgaW52b2tlZCB3aGVuIGBub3RpZnlBbGxgIGlzIGlu
dm9rZWQuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBJbnZva2Vk
IHdoZW4gYG5vdGlmeUFsbGAgaXMgaW52b2tlZC5cblx0ICAgKiBAcGFyYW0gez9vYmplY3R9IGNv
bnRleHQgQ29udGV4dCB0byBjYWxsIGBjYWxsYmFja2Agd2l0aC5cblx0ICAgKiBAaW50ZXJuYWxc
blx0ICAgKi9cblx0XG5cdFxuXHQgIENhbGxiYWNrUXVldWUucHJvdG90eXBlLmVucXVldWUgPSBm
dW5jdGlvbiBlbnF1ZXVlKGNhbGxiYWNrLCBjb250ZXh0KSB7XG5cdCAgICB0aGlzLl9jYWxsYmFj
a3MgPSB0aGlzLl9jYWxsYmFja3MgfHwgW107XG5cdCAgICB0aGlzLl9jYWxsYmFja3MucHVzaChj
YWxsYmFjayk7XG5cdCAgICB0aGlzLl9jb250ZXh0cyA9IHRoaXMuX2NvbnRleHRzIHx8IFtdO1xu
XHQgICAgdGhpcy5fY29udGV4dHMucHVzaChjb250ZXh0KTtcblx0ICB9O1xuXHRcblx0ICAvKipc
blx0ICAgKiBJbnZva2VzIGFsbCBlbnF1ZXVlZCBjYWxsYmFja3MgYW5kIGNsZWFycyB0aGUgcXVl
dWUuIFRoaXMgaXMgaW52b2tlZCBhZnRlclxuXHQgICAqIHRoZSBET00gcmVwcmVzZW50YXRpb24g
b2YgYSBjb21wb25lbnQgaGFzIGJlZW4gY3JlYXRlZCBvciB1cGRhdGVkLlxuXHQgICAqXG5cdCAg
ICogQGludGVybmFsXG5cdCAgICovXG5cdFxuXHRcblx0ICBDYWxsYmFja1F1ZXVlLnByb3RvdHlw
ZS5ub3RpZnlBbGwgPSBmdW5jdGlvbiBub3RpZnlBbGwoKSB7XG5cdCAgICB2YXIgY2FsbGJhY2tz
ID0gdGhpcy5fY2FsbGJhY2tzO1xuXHQgICAgdmFyIGNvbnRleHRzID0gdGhpcy5fY29udGV4dHM7
XG5cdCAgICB2YXIgYXJnID0gdGhpcy5fYXJnO1xuXHQgICAgaWYgKGNhbGxiYWNrcyAmJiBjb250
ZXh0cykge1xuXHQgICAgICAhKGNhbGxiYWNrcy5sZW5ndGggPT09IGNvbnRleHRzLmxlbmd0aCkg
PyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdNaXNtYXRjaGVkIGxpc3Qgb2YgY29udGV4dHMg
aW4gY2FsbGJhY2sgcXVldWUnKSA6IF9wcm9kSW52YXJpYW50KCcyNCcpIDogdm9pZCAwO1xuXHQg
ICAgICB0aGlzLl9jYWxsYmFja3MgPSBudWxsO1xuXHQgICAgICB0aGlzLl9jb250ZXh0cyA9IG51
bGw7XG5cdCAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FsbGJhY2tzLmxlbmd0aDsgaSsrKSB7
XG5cdCAgICAgICAgY2FsbGJhY2tzW2ldLmNhbGwoY29udGV4dHNbaV0sIGFyZyk7XG5cdCAgICAg
IH1cblx0ICAgICAgY2FsbGJhY2tzLmxlbmd0aCA9IDA7XG5cdCAgICAgIGNvbnRleHRzLmxlbmd0
aCA9IDA7XG5cdCAgICB9XG5cdCAgfTtcblx0XG5cdCAgQ2FsbGJhY2tRdWV1ZS5wcm90b3R5cGUu
Y2hlY2twb2ludCA9IGZ1bmN0aW9uIGNoZWNrcG9pbnQoKSB7XG5cdCAgICByZXR1cm4gdGhpcy5f
Y2FsbGJhY2tzID8gdGhpcy5fY2FsbGJhY2tzLmxlbmd0aCA6IDA7XG5cdCAgfTtcblx0XG5cdCAg
Q2FsbGJhY2tRdWV1ZS5wcm90b3R5cGUucm9sbGJhY2sgPSBmdW5jdGlvbiByb2xsYmFjayhsZW4p
IHtcblx0ICAgIGlmICh0aGlzLl9jYWxsYmFja3MgJiYgdGhpcy5fY29udGV4dHMpIHtcblx0ICAg
ICAgdGhpcy5fY2FsbGJhY2tzLmxlbmd0aCA9IGxlbjtcblx0ICAgICAgdGhpcy5fY29udGV4dHMu
bGVuZ3RoID0gbGVuO1xuXHQgICAgfVxuXHQgIH07XG5cdFxuXHQgIC8qKlxuXHQgICAqIFJlc2V0
cyB0aGUgaW50ZXJuYWwgcXVldWUuXG5cdCAgICpcblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9c
blx0XG5cdFxuXHQgIENhbGxiYWNrUXVldWUucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24gcmVz
ZXQoKSB7XG5cdCAgICB0aGlzLl9jYWxsYmFja3MgPSBudWxsO1xuXHQgICAgdGhpcy5fY29udGV4
dHMgPSBudWxsO1xuXHQgIH07XG5cdFxuXHQgIC8qKlxuXHQgICAqIGBQb29sZWRDbGFzc2AgbG9v
a3MgZm9yIHRoaXMuXG5cdCAgICovXG5cdFxuXHRcblx0ICBDYWxsYmFja1F1ZXVlLnByb3RvdHlw
ZS5kZXN0cnVjdG9yID0gZnVuY3Rpb24gZGVzdHJ1Y3RvcigpIHtcblx0ICAgIHRoaXMucmVzZXQo
KTtcblx0ICB9O1xuXHRcblx0ICByZXR1cm4gQ2FsbGJhY2tRdWV1ZTtcblx0fSgpO1xuXHRcblx0
bW9kdWxlLmV4cG9ydHMgPSBQb29sZWRDbGFzcy5hZGRQb29saW5nVG8oQ2FsbGJhY2tRdWV1ZSk7
XG5cbi8qKiovIH0sXG4vKiA2MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBf
X3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIERPTVByb3Bl
cnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSk7XG5cdHZhciBSZWFjdERPTUNvbXBvbmVudFRy
ZWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuXHR2YXIgUmVhY3RJbnN0cnVtZW50YXRpb24g
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpO1xuXHRcblx0dmFyIHF1b3RlQXR0cmlidXRlVmFsdWVG
b3JCcm93c2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxODUpO1xuXHR2YXIgd2FybmluZyA9IF9f
d2VicGFja19yZXF1aXJlX18oMik7XG5cdFxuXHR2YXIgVkFMSURfQVRUUklCVVRFX05BTUVfUkVH
RVggPSBuZXcgUmVnRXhwKCdeWycgKyBET01Qcm9wZXJ0eS5BVFRSSUJVVEVfTkFNRV9TVEFSVF9D
SEFSICsgJ11bJyArIERPTVByb3BlcnR5LkFUVFJJQlVURV9OQU1FX0NIQVIgKyAnXSokJyk7XG5c
dHZhciBpbGxlZ2FsQXR0cmlidXRlTmFtZUNhY2hlID0ge307XG5cdHZhciB2YWxpZGF0ZWRBdHRy
aWJ1dGVOYW1lQ2FjaGUgPSB7fTtcblx0XG5cdGZ1bmN0aW9uIGlzQXR0cmlidXRlTmFtZVNhZmUo
YXR0cmlidXRlTmFtZSkge1xuXHQgIGlmICh2YWxpZGF0ZWRBdHRyaWJ1dGVOYW1lQ2FjaGUuaGFz
T3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcblx0ICAgIHJldHVybiB0cnVlO1xuXHQgIH1c
blx0ICBpZiAoaWxsZWdhbEF0dHJpYnV0ZU5hbWVDYWNoZS5oYXNPd25Qcm9wZXJ0eShhdHRyaWJ1
dGVOYW1lKSkge1xuXHQgICAgcmV0dXJuIGZhbHNlO1xuXHQgIH1cblx0ICBpZiAoVkFMSURfQVRU
UklCVVRFX05BTUVfUkVHRVgudGVzdChhdHRyaWJ1dGVOYW1lKSkge1xuXHQgICAgdmFsaWRhdGVk
QXR0cmlidXRlTmFtZUNhY2hlW2F0dHJpYnV0ZU5hbWVdID0gdHJ1ZTtcblx0ICAgIHJldHVybiB0
cnVlO1xuXHQgIH1cblx0ICBpbGxlZ2FsQXR0cmlidXRlTmFtZUNhY2hlW2F0dHJpYnV0ZU5hbWVd
ID0gdHJ1ZTtcblx0ICAgZmFsc2UgPyB3YXJuaW5nKGZhbHNlLCAnSW52YWxpZCBhdHRyaWJ1dGUg
bmFtZTogYCVzYCcsIGF0dHJpYnV0ZU5hbWUpIDogdm9pZCAwO1xuXHQgIHJldHVybiBmYWxzZTtc
blx0fVxuXHRcblx0ZnVuY3Rpb24gc2hvdWxkSWdub3JlVmFsdWUocHJvcGVydHlJbmZvLCB2YWx1
ZSkge1xuXHQgIHJldHVybiB2YWx1ZSA9PSBudWxsIHx8IHByb3BlcnR5SW5mby5oYXNCb29sZWFu
VmFsdWUgJiYgIXZhbHVlIHx8IHByb3BlcnR5SW5mby5oYXNOdW1lcmljVmFsdWUgJiYgaXNOYU4o
dmFsdWUpIHx8IHByb3BlcnR5SW5mby5oYXNQb3NpdGl2ZU51bWVyaWNWYWx1ZSAmJiB2YWx1ZSA8
IDEgfHwgcHJvcGVydHlJbmZvLmhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWUgJiYgdmFsdWUgPT09
IGZhbHNlO1xuXHR9XG5cdFxuXHQvKipcblx0ICogT3BlcmF0aW9ucyBmb3IgZGVhbGluZyB3aXRo
IERPTSBwcm9wZXJ0aWVzLlxuXHQgKi9cblx0dmFyIERPTVByb3BlcnR5T3BlcmF0aW9ucyA9IHtc
blx0ICAvKipcblx0ICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgdGhlIElEIHByb3BlcnR5LlxuXHQg
ICAqXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IGlkIFVuZXNjYXBlZCBJRC5cblx0ICAgKiBAcmV0
dXJuIHtzdHJpbmd9IE1hcmt1cCBzdHJpbmcuXG5cdCAgICovXG5cdCAgY3JlYXRlTWFya3VwRm9y
SUQ6IGZ1bmN0aW9uIChpZCkge1xuXHQgICAgcmV0dXJuIERPTVByb3BlcnR5LklEX0FUVFJJQlVU
RV9OQU1FICsgJz0nICsgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIoaWQpO1xuXHQgIH0s
XG5cdFxuXHQgIHNldEF0dHJpYnV0ZUZvcklEOiBmdW5jdGlvbiAobm9kZSwgaWQpIHtcblx0ICAg
IG5vZGUuc2V0QXR0cmlidXRlKERPTVByb3BlcnR5LklEX0FUVFJJQlVURV9OQU1FLCBpZCk7XG5c
dCAgfSxcblx0XG5cdCAgY3JlYXRlTWFya3VwRm9yUm9vdDogZnVuY3Rpb24gKCkge1xuXHQgICAg
cmV0dXJuIERPTVByb3BlcnR5LlJPT1RfQVRUUklCVVRFX05BTUUgKyAnPVwiXCInO1xuXHQgIH0s
XG5cdFxuXHQgIHNldEF0dHJpYnV0ZUZvclJvb3Q6IGZ1bmN0aW9uIChub2RlKSB7XG5cdCAgICBu
b2RlLnNldEF0dHJpYnV0ZShET01Qcm9wZXJ0eS5ST09UX0FUVFJJQlVURV9OQU1FLCAnJyk7XG5c
dCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogQ3JlYXRlcyBtYXJrdXAgZm9yIGEgcHJvcGVydHku
XG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuXHQgICAqIEBwYXJhbSB7Kn0g
dmFsdWVcblx0ICAgKiBAcmV0dXJuIHs/c3RyaW5nfSBNYXJrdXAgc3RyaW5nLCBvciBudWxsIGlm
IHRoZSBwcm9wZXJ0eSB3YXMgaW52YWxpZC5cblx0ICAgKi9cblx0ICBjcmVhdGVNYXJrdXBGb3JQ
cm9wZXJ0eTogZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7XG5cdCAgICB2YXIgcHJvcGVydHlJbmZv
ID0gRE9NUHJvcGVydHkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSA/IERPTVByb3Bl
cnR5LnByb3BlcnRpZXNbbmFtZV0gOiBudWxsO1xuXHQgICAgaWYgKHByb3BlcnR5SW5mbykge1xu
XHQgICAgICBpZiAoc2hvdWxkSWdub3JlVmFsdWUocHJvcGVydHlJbmZvLCB2YWx1ZSkpIHtcblx0
ICAgICAgICByZXR1cm4gJyc7XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIGF0dHJpYnV0ZU5hbWUg
PSBwcm9wZXJ0eUluZm8uYXR0cmlidXRlTmFtZTtcblx0ICAgICAgaWYgKHByb3BlcnR5SW5mby5o
YXNCb29sZWFuVmFsdWUgfHwgcHJvcGVydHlJbmZvLmhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWUg
JiYgdmFsdWUgPT09IHRydWUpIHtcblx0ICAgICAgICByZXR1cm4gYXR0cmlidXRlTmFtZSArICc9
XCJcIic7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIGF0dHJpYnV0ZU5hbWUgKyAnPScgKyBx
dW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3Nlcih2YWx1ZSk7XG5cdCAgICB9IGVsc2UgaWYgKERP
TVByb3BlcnR5LmlzQ3VzdG9tQXR0cmlidXRlKG5hbWUpKSB7XG5cdCAgICAgIGlmICh2YWx1ZSA9
PSBudWxsKSB7XG5cdCAgICAgICAgcmV0dXJuICcnO1xuXHQgICAgICB9XG5cdCAgICAgIHJldHVy
biBuYW1lICsgJz0nICsgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIodmFsdWUpO1xuXHQg
ICAgfVxuXHQgICAgcmV0dXJuIG51bGw7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogQ3Jl
YXRlcyBtYXJrdXAgZm9yIGEgY3VzdG9tIHByb3BlcnR5LlxuXHQgICAqXG5cdCAgICogQHBhcmFt
IHtzdHJpbmd9IG5hbWVcblx0ICAgKiBAcGFyYW0geyp9IHZhbHVlXG5cdCAgICogQHJldHVybiB7
c3RyaW5nfSBNYXJrdXAgc3RyaW5nLCBvciBlbXB0eSBzdHJpbmcgaWYgdGhlIHByb3BlcnR5IHdh
cyBpbnZhbGlkLlxuXHQgICAqL1xuXHQgIGNyZWF0ZU1hcmt1cEZvckN1c3RvbUF0dHJpYnV0ZTog
ZnVuY3Rpb24gKG5hbWUsIHZhbHVlKSB7XG5cdCAgICBpZiAoIWlzQXR0cmlidXRlTmFtZVNhZmUo
bmFtZSkgfHwgdmFsdWUgPT0gbnVsbCkge1xuXHQgICAgICByZXR1cm4gJyc7XG5cdCAgICB9XG5c
dCAgICByZXR1cm4gbmFtZSArICc9JyArIHF1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyKHZh
bHVlKTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBTZXRzIHRoZSB2YWx1ZSBmb3IgYSBw
cm9wZXJ0eSBvbiBhIG5vZGUuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5v
ZGVcblx0ICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuXHQgICAqIEBwYXJhbSB7Kn0gdmFsdWVc
blx0ICAgKi9cblx0ICBzZXRWYWx1ZUZvclByb3BlcnR5OiBmdW5jdGlvbiAobm9kZSwgbmFtZSwg
dmFsdWUpIHtcblx0ICAgIHZhciBwcm9wZXJ0eUluZm8gPSBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVz
Lmhhc093blByb3BlcnR5KG5hbWUpID8gRE9NUHJvcGVydHkucHJvcGVydGllc1tuYW1lXSA6IG51
bGw7XG5cdCAgICBpZiAocHJvcGVydHlJbmZvKSB7XG5cdCAgICAgIHZhciBtdXRhdGlvbk1ldGhv
ZCA9IHByb3BlcnR5SW5mby5tdXRhdGlvbk1ldGhvZDtcblx0ICAgICAgaWYgKG11dGF0aW9uTWV0
aG9kKSB7XG5cdCAgICAgICAgbXV0YXRpb25NZXRob2Qobm9kZSwgdmFsdWUpO1xuXHQgICAgICB9
IGVsc2UgaWYgKHNob3VsZElnbm9yZVZhbHVlKHByb3BlcnR5SW5mbywgdmFsdWUpKSB7XG5cdCAg
ICAgICAgdGhpcy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KG5vZGUsIG5hbWUpO1xuXHQgICAgICAg
IHJldHVybjtcblx0ICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eUluZm8ubXVzdFVzZVByb3BlcnR5
KSB7XG5cdCAgICAgICAgLy8gQ29udHJhcnkgdG8gYHNldEF0dHJpYnV0ZWAsIG9iamVjdCBwcm9w
ZXJ0aWVzIGFyZSBwcm9wZXJseVxuXHQgICAgICAgIC8vIGB0b1N0cmluZ2BlZCBieSBJRTgvOS5c
blx0ICAgICAgICBub2RlW3Byb3BlcnR5SW5mby5wcm9wZXJ0eU5hbWVdID0gdmFsdWU7XG5cdCAg
ICAgIH0gZWxzZSB7XG5cdCAgICAgICAgdmFyIGF0dHJpYnV0ZU5hbWUgPSBwcm9wZXJ0eUluZm8u
YXR0cmlidXRlTmFtZTtcblx0ICAgICAgICB2YXIgbmFtZXNwYWNlID0gcHJvcGVydHlJbmZvLmF0
dHJpYnV0ZU5hbWVzcGFjZTtcblx0ICAgICAgICAvLyBgc2V0QXR0cmlidXRlYCB3aXRoIG9iamVj
dHMgYmVjb21lcyBvbmx5IGBbb2JqZWN0XWAgaW4gSUU4LzksXG5cdCAgICAgICAgLy8gKCcnICsg
dmFsdWUpIG1ha2VzIGl0IG91dHB1dCB0aGUgY29ycmVjdCB0b1N0cmluZygpLXZhbHVlLlxuXHQg
ICAgICAgIGlmIChuYW1lc3BhY2UpIHtcblx0ICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlTlMo
bmFtZXNwYWNlLCBhdHRyaWJ1dGVOYW1lLCAnJyArIHZhbHVlKTtcblx0ICAgICAgICB9IGVsc2Ug
aWYgKHByb3BlcnR5SW5mby5oYXNCb29sZWFuVmFsdWUgfHwgcHJvcGVydHlJbmZvLmhhc092ZXJs
b2FkZWRCb29sZWFuVmFsdWUgJiYgdmFsdWUgPT09IHRydWUpIHtcblx0ICAgICAgICAgIG5vZGUu
c2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsICcnKTtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQg
ICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgJycgKyB2YWx1ZSk7XG5c
dCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9IGVsc2UgaWYgKERPTVByb3BlcnR5LmlzQ3Vz
dG9tQXR0cmlidXRlKG5hbWUpKSB7XG5cdCAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5zZXRW
YWx1ZUZvckF0dHJpYnV0ZShub2RlLCBuYW1lLCB2YWx1ZSk7XG5cdCAgICAgIHJldHVybjtcblx0
ICAgIH1cblx0XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgdmFyIHBheWxvYWQgPSB7fTtc
blx0ICAgICAgcGF5bG9hZFtuYW1lXSA9IHZhbHVlO1xuXHQgICAgICBSZWFjdEluc3RydW1lbnRh
dGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtcblx0ICAgICAgICBpbnN0YW5jZUlEOiBS
ZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShub2RlKS5fZGVidWdJRCxc
blx0ICAgICAgICB0eXBlOiAndXBkYXRlIGF0dHJpYnV0ZScsXG5cdCAgICAgICAgcGF5bG9hZDog
cGF5bG9hZFxuXHQgICAgICB9KTtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICBzZXRWYWx1ZUZv
ckF0dHJpYnV0ZTogZnVuY3Rpb24gKG5vZGUsIG5hbWUsIHZhbHVlKSB7XG5cdCAgICBpZiAoIWlz
QXR0cmlidXRlTmFtZVNhZmUobmFtZSkpIHtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHQg
ICAgaWYgKHZhbHVlID09IG51bGwpIHtcblx0ICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUobmFt
ZSk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBub2RlLnNldEF0dHJpYnV0ZShuYW1lLCAnJyAr
IHZhbHVlKTtcblx0ICAgIH1cblx0XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgdmFyIHBh
eWxvYWQgPSB7fTtcblx0ICAgICAgcGF5bG9hZFtuYW1lXSA9IHZhbHVlO1xuXHQgICAgICBSZWFj
dEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtcblx0ICAgICAgICBp
bnN0YW5jZUlEOiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShub2Rl
KS5fZGVidWdJRCxcblx0ICAgICAgICB0eXBlOiAndXBkYXRlIGF0dHJpYnV0ZScsXG5cdCAgICAg
ICAgcGF5bG9hZDogcGF5bG9hZFxuXHQgICAgICB9KTtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0
ICAvKipcblx0ICAgKiBEZWxldGVzIGFuIGF0dHJpYnV0ZXMgZnJvbSBhIG5vZGUuXG5cdCAgICpc
blx0ICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVcblx0ICAgKiBAcGFyYW0ge3N0cmluZ30g
bmFtZVxuXHQgICAqL1xuXHQgIGRlbGV0ZVZhbHVlRm9yQXR0cmlidXRlOiBmdW5jdGlvbiAobm9k
ZSwgbmFtZSkge1xuXHQgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7XG5cdCAgICBpZiAo
ZmFsc2UpIHtcblx0ICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9w
ZXJhdGlvbih7XG5cdCAgICAgICAgaW5zdGFuY2VJRDogUmVhY3RET01Db21wb25lbnRUcmVlLmdl
dEluc3RhbmNlRnJvbU5vZGUobm9kZSkuX2RlYnVnSUQsXG5cdCAgICAgICAgdHlwZTogJ3JlbW92
ZSBhdHRyaWJ1dGUnLFxuXHQgICAgICAgIHBheWxvYWQ6IG5hbWVcblx0ICAgICAgfSk7XG5cdCAg
ICB9XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogRGVsZXRlcyB0aGUgdmFsdWUgZm9yIGEg
cHJvcGVydHkgb24gYSBub2RlLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtET01FbGVtZW50fSBu
b2RlXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcblx0ICAgKi9cblx0ICBkZWxldGVWYWx1
ZUZvclByb3BlcnR5OiBmdW5jdGlvbiAobm9kZSwgbmFtZSkge1xuXHQgICAgdmFyIHByb3BlcnR5
SW5mbyA9IERPTVByb3BlcnR5LnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkobmFtZSkgPyBET01Q
cm9wZXJ0eS5wcm9wZXJ0aWVzW25hbWVdIDogbnVsbDtcblx0ICAgIGlmIChwcm9wZXJ0eUluZm8p
IHtcblx0ICAgICAgdmFyIG11dGF0aW9uTWV0aG9kID0gcHJvcGVydHlJbmZvLm11dGF0aW9uTWV0
aG9kO1xuXHQgICAgICBpZiAobXV0YXRpb25NZXRob2QpIHtcblx0ICAgICAgICBtdXRhdGlvbk1l
dGhvZChub2RlLCB1bmRlZmluZWQpO1xuXHQgICAgICB9IGVsc2UgaWYgKHByb3BlcnR5SW5mby5t
dXN0VXNlUHJvcGVydHkpIHtcblx0ICAgICAgICB2YXIgcHJvcE5hbWUgPSBwcm9wZXJ0eUluZm8u
cHJvcGVydHlOYW1lO1xuXHQgICAgICAgIGlmIChwcm9wZXJ0eUluZm8uaGFzQm9vbGVhblZhbHVl
KSB7XG5cdCAgICAgICAgICBub2RlW3Byb3BOYW1lXSA9IGZhbHNlO1xuXHQgICAgICAgIH0gZWxz
ZSB7XG5cdCAgICAgICAgICBub2RlW3Byb3BOYW1lXSA9ICcnO1xuXHQgICAgICAgIH1cblx0ICAg
ICAgfSBlbHNlIHtcblx0ICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShwcm9wZXJ0eUluZm8u
YXR0cmlidXRlTmFtZSk7XG5cdCAgICAgIH1cblx0ICAgIH0gZWxzZSBpZiAoRE9NUHJvcGVydHku
aXNDdXN0b21BdHRyaWJ1dGUobmFtZSkpIHtcblx0ICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUo
bmFtZSk7XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIFJlYWN0SW5z
dHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuXHQgICAgICAgIGluc3Rh
bmNlSUQ6IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG5vZGUpLl9k
ZWJ1Z0lELFxuXHQgICAgICAgIHR5cGU6ICdyZW1vdmUgYXR0cmlidXRlJyxcblx0ICAgICAgICBw
YXlsb2FkOiBuYW1lXG5cdCAgICAgIH0pO1xuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5cdG1v
ZHVsZS5leHBvcnRzID0gRE9NUHJvcGVydHlPcGVyYXRpb25zO1xuXG4vKioqLyB9LFxuLyogNjEg
Ki9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5
cmlnaHQgMjAxNS1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5c
dCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0
XG5cdHZhciBSZWFjdERPTUNvbXBvbmVudEZsYWdzID0ge1xuXHQgIGhhc0NhY2hlZENoaWxkTm9k
ZXM6IDEgPDwgMFxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUNvbXBvbmVu
dEZsYWdzO1xuXG4vKioqLyB9LFxuLyogNjIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQg
KlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBf
YXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0XG5cdHZhciBMaW5rZWRWYWx1ZVV0
aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygzOSk7XG5cdHZhciBSZWFjdERPTUNvbXBvbmVudFRy
ZWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuXHR2YXIgUmVhY3RVcGRhdGVzID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg5KTtcblx0XG5cdHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVf
XygyKTtcblx0XG5cdHZhciBkaWRXYXJuVmFsdWVMaW5rID0gZmFsc2U7XG5cdHZhciBkaWRXYXJu
VmFsdWVEZWZhdWx0VmFsdWUgPSBmYWxzZTtcblx0XG5cdGZ1bmN0aW9uIHVwZGF0ZU9wdGlvbnNJ
ZlBlbmRpbmdVcGRhdGVBbmRNb3VudGVkKCkge1xuXHQgIGlmICh0aGlzLl9yb290Tm9kZUlEICYm
IHRoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlKSB7XG5cdCAgICB0aGlzLl93cmFwcGVy
U3RhdGUucGVuZGluZ1VwZGF0ZSA9IGZhbHNlO1xuXHRcblx0ICAgIHZhciBwcm9wcyA9IHRoaXMu
X2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXHQgICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGls
cy5nZXRWYWx1ZShwcm9wcyk7XG5cdFxuXHQgICAgaWYgKHZhbHVlICE9IG51bGwpIHtcblx0ICAg
ICAgdXBkYXRlT3B0aW9ucyh0aGlzLCBCb29sZWFuKHByb3BzLm11bHRpcGxlKSwgdmFsdWUpO1xu
XHQgICAgfVxuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25FcnJvckFk
ZGVuZHVtKG93bmVyKSB7XG5cdCAgaWYgKG93bmVyKSB7XG5cdCAgICB2YXIgbmFtZSA9IG93bmVy
LmdldE5hbWUoKTtcblx0ICAgIGlmIChuYW1lKSB7XG5cdCAgICAgIHJldHVybiAnIENoZWNrIHRo
ZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7XG5cdCAgICB9XG5cdCAgfVxuXHQg
IHJldHVybiAnJztcblx0fVxuXHRcblx0dmFyIHZhbHVlUHJvcE5hbWVzID0gWyd2YWx1ZScsICdk
ZWZhdWx0VmFsdWUnXTtcblx0XG5cdC8qKlxuXHQgKiBWYWxpZGF0aW9uIGZ1bmN0aW9uIGZvciBg
dmFsdWVgIGFuZCBgZGVmYXVsdFZhbHVlYC5cblx0ICogQHByaXZhdGVcblx0ICovXG5cdGZ1bmN0
aW9uIGNoZWNrU2VsZWN0UHJvcFR5cGVzKGluc3QsIHByb3BzKSB7XG5cdCAgdmFyIG93bmVyID0g
aW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuXHQgIExpbmtlZFZhbHVlVXRpbHMuY2hlY2tQ
cm9wVHlwZXMoJ3NlbGVjdCcsIHByb3BzLCBvd25lcik7XG5cdFxuXHQgIGlmIChwcm9wcy52YWx1
ZUxpbmsgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2FyblZhbHVlTGluaykge1xuXHQgICAgIGZhbHNl
ID8gd2FybmluZyhmYWxzZSwgJ2B2YWx1ZUxpbmtgIHByb3Agb24gYHNlbGVjdGAgaXMgZGVwcmVj
YXRlZDsgc2V0IGB2YWx1ZWAgYW5kIGBvbkNoYW5nZWAgaW5zdGVhZC4nKSA6IHZvaWQgMDtcblx0
ICAgIGRpZFdhcm5WYWx1ZUxpbmsgPSB0cnVlO1xuXHQgIH1cblx0XG5cdCAgZm9yICh2YXIgaSA9
IDA7IGkgPCB2YWx1ZVByb3BOYW1lcy5sZW5ndGg7IGkrKykge1xuXHQgICAgdmFyIHByb3BOYW1l
ID0gdmFsdWVQcm9wTmFtZXNbaV07XG5cdCAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09IG51bGwp
IHtcblx0ICAgICAgY29udGludWU7XG5cdCAgICB9XG5cdCAgICB2YXIgaXNBcnJheSA9IEFycmF5
LmlzQXJyYXkocHJvcHNbcHJvcE5hbWVdKTtcblx0ICAgIGlmIChwcm9wcy5tdWx0aXBsZSAmJiAh
aXNBcnJheSkge1xuXHQgICAgICAgZmFsc2UgPyB3YXJuaW5nKGZhbHNlLCAnVGhlIGAlc2AgcHJv
cCBzdXBwbGllZCB0byA8c2VsZWN0PiBtdXN0IGJlIGFuIGFycmF5IGlmICcgKyAnYG11bHRpcGxl
YCBpcyB0cnVlLiVzJywgcHJvcE5hbWUsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShvd25l
cikpIDogdm9pZCAwO1xuXHQgICAgfSBlbHNlIGlmICghcHJvcHMubXVsdGlwbGUgJiYgaXNBcnJh
eSkge1xuXHQgICAgICAgZmFsc2UgPyB3YXJuaW5nKGZhbHNlLCAnVGhlIGAlc2AgcHJvcCBzdXBw
bGllZCB0byA8c2VsZWN0PiBtdXN0IGJlIGEgc2NhbGFyICcgKyAndmFsdWUgaWYgYG11bHRpcGxl
YCBpcyBmYWxzZS4lcycsIHByb3BOYW1lLCBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0ob3du
ZXIpKSA6IHZvaWQgMDtcblx0ICAgIH1cblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBAcGFy
YW0ge1JlYWN0RE9NQ29tcG9uZW50fSBpbnN0XG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gbXVsdGlw
bGVcblx0ICogQHBhcmFtIHsqfSBwcm9wVmFsdWUgQSBzdHJpbmdhYmxlICh3aXRoIGBtdWx0aXBs
ZWAsIGEgbGlzdCBvZiBzdHJpbmdhYmxlcykuXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRmdW5j
dGlvbiB1cGRhdGVPcHRpb25zKGluc3QsIG11bHRpcGxlLCBwcm9wVmFsdWUpIHtcblx0ICB2YXIg
c2VsZWN0ZWRWYWx1ZSwgaTtcblx0ICB2YXIgb3B0aW9ucyA9IFJlYWN0RE9NQ29tcG9uZW50VHJl
ZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpLm9wdGlvbnM7XG5cdFxuXHQgIGlmIChtdWx0aXBs
ZSkge1xuXHQgICAgc2VsZWN0ZWRWYWx1ZSA9IHt9O1xuXHQgICAgZm9yIChpID0gMDsgaSA8IHBy
b3BWYWx1ZS5sZW5ndGg7IGkrKykge1xuXHQgICAgICBzZWxlY3RlZFZhbHVlWycnICsgcHJvcFZh
bHVlW2ldXSA9IHRydWU7XG5cdCAgICB9XG5cdCAgICBmb3IgKGkgPSAwOyBpIDwgb3B0aW9ucy5s
ZW5ndGg7IGkrKykge1xuXHQgICAgICB2YXIgc2VsZWN0ZWQgPSBzZWxlY3RlZFZhbHVlLmhhc093
blByb3BlcnR5KG9wdGlvbnNbaV0udmFsdWUpO1xuXHQgICAgICBpZiAob3B0aW9uc1tpXS5zZWxl
Y3RlZCAhPT0gc2VsZWN0ZWQpIHtcblx0ICAgICAgICBvcHRpb25zW2ldLnNlbGVjdGVkID0gc2Vs
ZWN0ZWQ7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9IGVsc2Uge1xuXHQgICAgLy8gRG8gbm90
IHNldCBgc2VsZWN0LnZhbHVlYCBhcyBleGFjdCBiZWhhdmlvciBpc24ndCBjb25zaXN0ZW50IGFj
cm9zcyBhbGxcblx0ICAgIC8vIGJyb3dzZXJzIGZvciBhbGwgY2FzZXMuXG5cdCAgICBzZWxlY3Rl
ZFZhbHVlID0gJycgKyBwcm9wVmFsdWU7XG5cdCAgICBmb3IgKGkgPSAwOyBpIDwgb3B0aW9ucy5s
ZW5ndGg7IGkrKykge1xuXHQgICAgICBpZiAob3B0aW9uc1tpXS52YWx1ZSA9PT0gc2VsZWN0ZWRW
YWx1ZSkge1xuXHQgICAgICAgIG9wdGlvbnNbaV0uc2VsZWN0ZWQgPSB0cnVlO1xuXHQgICAgICAg
IHJldHVybjtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgaWYgKG9wdGlvbnMubGVuZ3RoKSB7
XG5cdCAgICAgIG9wdGlvbnNbMF0uc2VsZWN0ZWQgPSB0cnVlO1xuXHQgICAgfVxuXHQgIH1cblx0
fVxuXHRcblx0LyoqXG5cdCAqIEltcGxlbWVudHMgYSA8c2VsZWN0PiBob3N0IGNvbXBvbmVudCB0
aGF0IGFsbG93cyBvcHRpb25hbGx5IHNldHRpbmcgdGhlXG5cdCAqIHByb3BzIGB2YWx1ZWAgYW5k
IGBkZWZhdWx0VmFsdWVgLiBJZiBgbXVsdGlwbGVgIGlzIGZhbHNlLCB0aGUgcHJvcCBtdXN0IGJl
IGFcblx0ICogc3RyaW5nYWJsZS4gSWYgYG11bHRpcGxlYCBpcyB0cnVlLCB0aGUgcHJvcCBtdXN0
IGJlIGFuIGFycmF5IG9mIHN0cmluZ2FibGVzLlxuXHQgKlxuXHQgKiBJZiBgdmFsdWVgIGlzIG5v
dCBzdXBwbGllZCAob3IgbnVsbC91bmRlZmluZWQpLCB1c2VyIGFjdGlvbnMgdGhhdCBjaGFuZ2Ug
dGhlXG5cdCAqIHNlbGVjdGVkIG9wdGlvbiB3aWxsIHRyaWdnZXIgdXBkYXRlcyB0byB0aGUgcmVu
ZGVyZWQgb3B0aW9ucy5cblx0ICpcblx0ICogSWYgaXQgaXMgc3VwcGxpZWQgKGFuZCBub3QgbnVs
bC91bmRlZmluZWQpLCB0aGUgcmVuZGVyZWQgb3B0aW9ucyB3aWxsIG5vdFxuXHQgKiB1cGRhdGUg
aW4gcmVzcG9uc2UgdG8gdXNlciBhY3Rpb25zLiBJbnN0ZWFkLCB0aGUgYHZhbHVlYCBwcm9wIG11
c3QgY2hhbmdlIGluXG5cdCAqIG9yZGVyIGZvciB0aGUgcmVuZGVyZWQgb3B0aW9ucyB0byB1cGRh
dGUuXG5cdCAqXG5cdCAqIElmIGBkZWZhdWx0VmFsdWVgIGlzIHByb3ZpZGVkLCBhbnkgb3B0aW9u
cyB3aXRoIHRoZSBzdXBwbGllZCB2YWx1ZXMgd2lsbCBiZVxuXHQgKiBzZWxlY3RlZC5cblx0ICov
XG5cdHZhciBSZWFjdERPTVNlbGVjdCA9IHtcblx0ICBnZXRIb3N0UHJvcHM6IGZ1bmN0aW9uIChp
bnN0LCBwcm9wcykge1xuXHQgICAgcmV0dXJuIF9hc3NpZ24oe30sIHByb3BzLCB7XG5cdCAgICAg
IG9uQ2hhbmdlOiBpbnN0Ll93cmFwcGVyU3RhdGUub25DaGFuZ2UsXG5cdCAgICAgIHZhbHVlOiB1
bmRlZmluZWRcblx0ICAgIH0pO1xuXHQgIH0sXG5cdFxuXHQgIG1vdW50V3JhcHBlcjogZnVuY3Rp
b24gKGluc3QsIHByb3BzKSB7XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgY2hlY2tTZWxl
Y3RQcm9wVHlwZXMoaW5zdCwgcHJvcHMpO1xuXHQgICAgfVxuXHRcblx0ICAgIHZhciB2YWx1ZSA9
IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpO1xuXHQgICAgaW5zdC5fd3JhcHBlclN0
YXRlID0ge1xuXHQgICAgICBwZW5kaW5nVXBkYXRlOiBmYWxzZSxcblx0ICAgICAgaW5pdGlhbFZh
bHVlOiB2YWx1ZSAhPSBudWxsID8gdmFsdWUgOiBwcm9wcy5kZWZhdWx0VmFsdWUsXG5cdCAgICAg
IGxpc3RlbmVyczogbnVsbCxcblx0ICAgICAgb25DaGFuZ2U6IF9oYW5kbGVDaGFuZ2UuYmluZChp
bnN0KSxcblx0ICAgICAgd2FzTXVsdGlwbGU6IEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpXG5cdCAg
ICB9O1xuXHRcblx0ICAgIGlmIChwcm9wcy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHByb3BzLmRl
ZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmICFkaWRXYXJuVmFsdWVEZWZhdWx0VmFsdWUpIHtc
blx0ICAgICAgIGZhbHNlID8gd2FybmluZyhmYWxzZSwgJ1NlbGVjdCBlbGVtZW50cyBtdXN0IGJl
IGVpdGhlciBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCAnICsgJyhzcGVjaWZ5IGVpdGhlciB0
aGUgdmFsdWUgcHJvcCwgb3IgdGhlIGRlZmF1bHRWYWx1ZSBwcm9wLCBidXQgbm90ICcgKyAnYm90
aCkuIERlY2lkZSBiZXR3ZWVuIHVzaW5nIGEgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgc2Vs
ZWN0ICcgKyAnZWxlbWVudCBhbmQgcmVtb3ZlIG9uZSBvZiB0aGVzZSBwcm9wcy4gTW9yZSBpbmZv
OiAnICsgJ2h0dHBzOi8vZmIubWUvcmVhY3QtY29udHJvbGxlZC1jb21wb25lbnRzJykgOiB2b2lk
IDA7XG5cdCAgICAgIGRpZFdhcm5WYWx1ZURlZmF1bHRWYWx1ZSA9IHRydWU7XG5cdCAgICB9XG5c
dCAgfSxcblx0XG5cdCAgZ2V0U2VsZWN0VmFsdWVDb250ZXh0OiBmdW5jdGlvbiAoaW5zdCkge1xu
XHQgICAgLy8gUmVhY3RET01PcHRpb24gbG9va3MgYXQgdGhpcyBpbml0aWFsIHZhbHVlIHNvIHRo
ZSBpbml0aWFsIGdlbmVyYXRlZFxuXHQgICAgLy8gbWFya3VwIGhhcyBjb3JyZWN0IGBzZWxlY3Rl
ZGAgYXR0cmlidXRlc1xuXHQgICAgcmV0dXJuIGluc3QuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFs
dWU7XG5cdCAgfSxcblx0XG5cdCAgcG9zdFVwZGF0ZVdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7
XG5cdCAgICB2YXIgcHJvcHMgPSBpbnN0Ll9jdXJyZW50RWxlbWVudC5wcm9wcztcblx0XG5cdCAg
ICAvLyBBZnRlciB0aGUgaW5pdGlhbCBtb3VudCwgd2UgY29udHJvbCBzZWxlY3RlZC1uZXNzIG1h
bnVhbGx5IHNvIGRvbid0IHBhc3Ncblx0ICAgIC8vIHRoaXMgdmFsdWUgZG93blxuXHQgICAgaW5z
dC5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSA9IHVuZGVmaW5lZDtcblx0XG5cdCAgICB2YXIg
d2FzTXVsdGlwbGUgPSBpbnN0Ll93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU7XG5cdCAgICBpbnN0
Ll93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGUgPSBCb29sZWFuKHByb3BzLm11bHRpcGxlKTtcblx0
XG5cdCAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTtcblx0
ICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG5cdCAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5wZW5k
aW5nVXBkYXRlID0gZmFsc2U7XG5cdCAgICAgIHVwZGF0ZU9wdGlvbnMoaW5zdCwgQm9vbGVhbihw
cm9wcy5tdWx0aXBsZSksIHZhbHVlKTtcblx0ICAgIH0gZWxzZSBpZiAod2FzTXVsdGlwbGUgIT09
IEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpKSB7XG5cdCAgICAgIC8vIEZvciBzaW1wbGljaXR5LCBy
ZWFwcGx5IGBkZWZhdWx0VmFsdWVgIGlmIGBtdWx0aXBsZWAgaXMgdG9nZ2xlZC5cblx0ICAgICAg
aWYgKHByb3BzLmRlZmF1bHRWYWx1ZSAhPSBudWxsKSB7XG5cdCAgICAgICAgdXBkYXRlT3B0aW9u
cyhpbnN0LCBCb29sZWFuKHByb3BzLm11bHRpcGxlKSwgcHJvcHMuZGVmYXVsdFZhbHVlKTtcblx0
ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAvLyBSZXZlcnQgdGhlIHNlbGVjdCBiYWNrIHRvIGl0
cyBkZWZhdWx0IHVuc2VsZWN0ZWQgc3RhdGUuXG5cdCAgICAgICAgdXBkYXRlT3B0aW9ucyhpbnN0
LCBCb29sZWFuKHByb3BzLm11bHRpcGxlKSwgcHJvcHMubXVsdGlwbGUgPyBbXSA6ICcnKTtcblx0
ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5cdGZ1bmN0aW9uIF9oYW5kbGVDaGFu
Z2UoZXZlbnQpIHtcblx0ICB2YXIgcHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztc
blx0ICB2YXIgcmV0dXJuVmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmV4ZWN1dGVPbkNoYW5nZShw
cm9wcywgZXZlbnQpO1xuXHRcblx0ICBpZiAodGhpcy5fcm9vdE5vZGVJRCkge1xuXHQgICAgdGhp
cy5fd3JhcHBlclN0YXRlLnBlbmRpbmdVcGRhdGUgPSB0cnVlO1xuXHQgIH1cblx0ICBSZWFjdFVw
ZGF0ZXMuYXNhcCh1cGRhdGVPcHRpb25zSWZQZW5kaW5nVXBkYXRlQW5kTW91bnRlZCwgdGhpcyk7
XG5cdCAgcmV0dXJuIHJldHVyblZhbHVlO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJl
YWN0RE9NU2VsZWN0O1xuXG4vKioqLyB9LFxuLyogNjMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQg
KlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBlbXB0eUNvbXBvbmVudEZh
Y3Rvcnk7XG5cdFxuXHR2YXIgUmVhY3RFbXB0eUNvbXBvbmVudEluamVjdGlvbiA9IHtcblx0ICBp
bmplY3RFbXB0eUNvbXBvbmVudEZhY3Rvcnk6IGZ1bmN0aW9uIChmYWN0b3J5KSB7XG5cdCAgICBl
bXB0eUNvbXBvbmVudEZhY3RvcnkgPSBmYWN0b3J5O1xuXHQgIH1cblx0fTtcblx0XG5cdHZhciBS
ZWFjdEVtcHR5Q29tcG9uZW50ID0ge1xuXHQgIGNyZWF0ZTogZnVuY3Rpb24gKGluc3RhbnRpYXRl
KSB7XG5cdCAgICByZXR1cm4gZW1wdHlDb21wb25lbnRGYWN0b3J5KGluc3RhbnRpYXRlKTtcblx0
ICB9XG5cdH07XG5cdFxuXHRSZWFjdEVtcHR5Q29tcG9uZW50LmluamVjdGlvbiA9IFJlYWN0RW1w
dHlDb21wb25lbnRJbmplY3Rpb247XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0RW1wdHlD
b21wb25lbnQ7XG5cbi8qKiovIH0sXG4vKiA2NCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBl
eHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5c
dCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBSZWFjdEZlYXR1cmVG
bGFncyA9IHtcblx0ICAvLyBXaGVuIHRydWUsIGNhbGwgY29uc29sZS50aW1lKCkgYmVmb3JlIGFu
ZCAudGltZUVuZCgpIGFmdGVyIGVhY2ggdG9wLWxldmVsXG5cdCAgLy8gcmVuZGVyIChib3RoIGlu
aXRpYWwgcmVuZGVycyBhbmQgdXBkYXRlcykuIFVzZWZ1bCB3aGVuIGxvb2tpbmcgYXQgcHJvZC1t
b2RlXG5cdCAgLy8gdGltZWxpbmUgcHJvZmlsZXMgaW4gQ2hyb21lLCBmb3IgZXhhbXBsZS5cblx0
ICBsb2dUb3BMZXZlbFJlbmRlcnM6IGZhbHNlXG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9
IFJlYWN0RmVhdHVyZUZsYWdzO1xuXG4vKioqLyB9LFxuLyogNjUgKi9cbi8qKiovIGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBD
b3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztc
blx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cdFxu
XHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0XG5cdHZhciBnZW5l
cmljQ29tcG9uZW50Q2xhc3MgPSBudWxsO1xuXHR2YXIgdGV4dENvbXBvbmVudENsYXNzID0gbnVs
bDtcblx0XG5cdHZhciBSZWFjdEhvc3RDb21wb25lbnRJbmplY3Rpb24gPSB7XG5cdCAgLy8gVGhp
cyBhY2NlcHRzIGEgY2xhc3MgdGhhdCByZWNlaXZlcyB0aGUgdGFnIHN0cmluZy4gVGhpcyBpcyBh
IGNhdGNoIGFsbFxuXHQgIC8vIHRoYXQgY2FuIHJlbmRlciBhbnkga2luZCBvZiB0YWcuXG5cdCAg
aW5qZWN0R2VuZXJpY0NvbXBvbmVudENsYXNzOiBmdW5jdGlvbiAoY29tcG9uZW50Q2xhc3MpIHtc
blx0ICAgIGdlbmVyaWNDb21wb25lbnRDbGFzcyA9IGNvbXBvbmVudENsYXNzO1xuXHQgIH0sXG5c
dCAgLy8gVGhpcyBhY2NlcHRzIGEgdGV4dCBjb21wb25lbnQgY2xhc3MgdGhhdCB0YWtlcyB0aGUg
dGV4dCBzdHJpbmcgdG8gYmVcblx0ICAvLyByZW5kZXJlZCBhcyBwcm9wcy5cblx0ICBpbmplY3RU
ZXh0Q29tcG9uZW50Q2xhc3M6IGZ1bmN0aW9uIChjb21wb25lbnRDbGFzcykge1xuXHQgICAgdGV4
dENvbXBvbmVudENsYXNzID0gY29tcG9uZW50Q2xhc3M7XG5cdCAgfVxuXHR9O1xuXHRcblx0Lyoq
XG5cdCAqIEdldCBhIGhvc3QgaW50ZXJuYWwgY29tcG9uZW50IGNsYXNzIGZvciBhIHNwZWNpZmlj
IHRhZy5cblx0ICpcblx0ICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IGVsZW1lbnQgVGhlIGVsZW1l
bnQgdG8gY3JlYXRlLlxuXHQgKiBAcmV0dXJuIHtmdW5jdGlvbn0gVGhlIGludGVybmFsIGNsYXNz
IGNvbnN0cnVjdG9yIGZ1bmN0aW9uLlxuXHQgKi9cblx0ZnVuY3Rpb24gY3JlYXRlSW50ZXJuYWxD
b21wb25lbnQoZWxlbWVudCkge1xuXHQgICFnZW5lcmljQ29tcG9uZW50Q2xhc3MgPyAgZmFsc2Ug
PyBpbnZhcmlhbnQoZmFsc2UsICdUaGVyZSBpcyBubyByZWdpc3RlcmVkIGNvbXBvbmVudCBmb3Ig
dGhlIHRhZyAlcycsIGVsZW1lbnQudHlwZSkgOiBfcHJvZEludmFyaWFudCgnMTExJywgZWxlbWVu
dC50eXBlKSA6IHZvaWQgMDtcblx0ICByZXR1cm4gbmV3IGdlbmVyaWNDb21wb25lbnRDbGFzcyhl
bGVtZW50KTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7UmVhY3RUZXh0fSB0ZXh0XG5c
dCAqIEByZXR1cm4ge1JlYWN0Q29tcG9uZW50fVxuXHQgKi9cblx0ZnVuY3Rpb24gY3JlYXRlSW5z
dGFuY2VGb3JUZXh0KHRleHQpIHtcblx0ICByZXR1cm4gbmV3IHRleHRDb21wb25lbnRDbGFzcyh0
ZXh0KTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNvbXBv
bmVudFxuXHQgKiBAcmV0dXJuIHtib29sZWFufVxuXHQgKi9cblx0ZnVuY3Rpb24gaXNUZXh0Q29t
cG9uZW50KGNvbXBvbmVudCkge1xuXHQgIHJldHVybiBjb21wb25lbnQgaW5zdGFuY2VvZiB0ZXh0
Q29tcG9uZW50Q2xhc3M7XG5cdH1cblx0XG5cdHZhciBSZWFjdEhvc3RDb21wb25lbnQgPSB7XG5c
dCAgY3JlYXRlSW50ZXJuYWxDb21wb25lbnQ6IGNyZWF0ZUludGVybmFsQ29tcG9uZW50LFxuXHQg
IGNyZWF0ZUluc3RhbmNlRm9yVGV4dDogY3JlYXRlSW5zdGFuY2VGb3JUZXh0LFxuXHQgIGlzVGV4
dENvbXBvbmVudDogaXNUZXh0Q29tcG9uZW50LFxuXHQgIGluamVjdGlvbjogUmVhY3RIb3N0Q29t
cG9uZW50SW5qZWN0aW9uXG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0SG9zdENv
bXBvbmVudDtcblxuLyoqKi8gfSxcbi8qIDY2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4
cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0
ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIg
UmVhY3RET01TZWxlY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0NSk7XG5cdFxuXHR2YXIg
Y29udGFpbnNOb2RlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDApO1xuXHR2YXIgZm9jdXNOb2Rl
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1Mik7XG5cdHZhciBnZXRBY3RpdmVFbGVtZW50ID0gX193
ZWJwYWNrX3JlcXVpcmVfXyg1Myk7XG5cdFxuXHRmdW5jdGlvbiBpc0luRG9jdW1lbnQobm9kZSkg
e1xuXHQgIHJldHVybiBjb250YWluc05vZGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBub2Rl
KTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIEBSZWFjdElucHV0U2VsZWN0aW9uOiBSZWFjdCBpbnB1
dCBzZWxlY3Rpb24gbW9kdWxlLiBCYXNlZCBvbiBTZWxlY3Rpb24uanMsXG5cdCAqIGJ1dCBtb2Rp
ZmllZCB0byBiZSBzdWl0YWJsZSBmb3IgcmVhY3QgYW5kIGhhcyBhIGNvdXBsZSBvZiBidWcgZml4
ZXMgKGRvZXNuJ3Rcblx0ICogYXNzdW1lIGJ1dHRvbnMgaGF2ZSByYW5nZSBzZWxlY3Rpb25zIGFs
bG93ZWQpLlxuXHQgKiBJbnB1dCBzZWxlY3Rpb24gbW9kdWxlIGZvciBSZWFjdC5cblx0ICovXG5c
dHZhciBSZWFjdElucHV0U2VsZWN0aW9uID0ge1xuXHQgIGhhc1NlbGVjdGlvbkNhcGFiaWxpdGll
czogZnVuY3Rpb24gKGVsZW0pIHtcblx0ICAgIHZhciBub2RlTmFtZSA9IGVsZW0gJiYgZWxlbS5u
b2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cdCAgICByZXR1cm4gbm9k
ZU5hbWUgJiYgKG5vZGVOYW1lID09PSAnaW5wdXQnICYmIGVsZW0udHlwZSA9PT0gJ3RleHQnIHx8
IG5vZGVOYW1lID09PSAndGV4dGFyZWEnIHx8IGVsZW0uY29udGVudEVkaXRhYmxlID09PSAndHJ1
ZScpO1xuXHQgIH0sXG5cdFxuXHQgIGdldFNlbGVjdGlvbkluZm9ybWF0aW9uOiBmdW5jdGlvbiAo
KSB7XG5cdCAgICB2YXIgZm9jdXNlZEVsZW0gPSBnZXRBY3RpdmVFbGVtZW50KCk7XG5cdCAgICBy
ZXR1cm4ge1xuXHQgICAgICBmb2N1c2VkRWxlbTogZm9jdXNlZEVsZW0sXG5cdCAgICAgIHNlbGVj
dGlvblJhbmdlOiBSZWFjdElucHV0U2VsZWN0aW9uLmhhc1NlbGVjdGlvbkNhcGFiaWxpdGllcyhm
b2N1c2VkRWxlbSkgPyBSZWFjdElucHV0U2VsZWN0aW9uLmdldFNlbGVjdGlvbihmb2N1c2VkRWxl
bSkgOiBudWxsXG5cdCAgICB9O1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEByZXN0b3Jl
U2VsZWN0aW9uOiBJZiBhbnkgc2VsZWN0aW9uIGluZm9ybWF0aW9uIHdhcyBwb3RlbnRpYWxseSBs
b3N0LFxuXHQgICAqIHJlc3RvcmUgaXQuIFRoaXMgaXMgdXNlZnVsIHdoZW4gcGVyZm9ybWluZyBv
cGVyYXRpb25zIHRoYXQgY291bGQgcmVtb3ZlIGRvbVxuXHQgICAqIG5vZGVzIGFuZCBwbGFjZSB0
aGVtIGJhY2sgaW4sIHJlc3VsdGluZyBpbiBmb2N1cyBiZWluZyBsb3N0LlxuXHQgICAqL1xuXHQg
IHJlc3RvcmVTZWxlY3Rpb246IGZ1bmN0aW9uIChwcmlvclNlbGVjdGlvbkluZm9ybWF0aW9uKSB7
XG5cdCAgICB2YXIgY3VyRm9jdXNlZEVsZW0gPSBnZXRBY3RpdmVFbGVtZW50KCk7XG5cdCAgICB2
YXIgcHJpb3JGb2N1c2VkRWxlbSA9IHByaW9yU2VsZWN0aW9uSW5mb3JtYXRpb24uZm9jdXNlZEVs
ZW07XG5cdCAgICB2YXIgcHJpb3JTZWxlY3Rpb25SYW5nZSA9IHByaW9yU2VsZWN0aW9uSW5mb3Jt
YXRpb24uc2VsZWN0aW9uUmFuZ2U7XG5cdCAgICBpZiAoY3VyRm9jdXNlZEVsZW0gIT09IHByaW9y
Rm9jdXNlZEVsZW0gJiYgaXNJbkRvY3VtZW50KHByaW9yRm9jdXNlZEVsZW0pKSB7XG5cdCAgICAg
IGlmIChSZWFjdElucHV0U2VsZWN0aW9uLmhhc1NlbGVjdGlvbkNhcGFiaWxpdGllcyhwcmlvckZv
Y3VzZWRFbGVtKSkge1xuXHQgICAgICAgIFJlYWN0SW5wdXRTZWxlY3Rpb24uc2V0U2VsZWN0aW9u
KHByaW9yRm9jdXNlZEVsZW0sIHByaW9yU2VsZWN0aW9uUmFuZ2UpO1xuXHQgICAgICB9XG5cdCAg
ICAgIGZvY3VzTm9kZShwcmlvckZvY3VzZWRFbGVtKTtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0
ICAvKipcblx0ICAgKiBAZ2V0U2VsZWN0aW9uOiBHZXRzIHRoZSBzZWxlY3Rpb24gYm91bmRzIG9m
IGEgZm9jdXNlZCB0ZXh0YXJlYSwgaW5wdXQgb3Jcblx0ICAgKiBjb250ZW50RWRpdGFibGUgbm9k
ZS5cblx0ICAgKiAtQGlucHV0OiBMb29rIHVwIHNlbGVjdGlvbiBib3VuZHMgb2YgdGhpcyBpbnB1
dFxuXHQgICAqIC1AcmV0dXJuIHtzdGFydDogc2VsZWN0aW9uU3RhcnQsIGVuZDogc2VsZWN0aW9u
RW5kfVxuXHQgICAqL1xuXHQgIGdldFNlbGVjdGlvbjogZnVuY3Rpb24gKGlucHV0KSB7XG5cdCAg
ICB2YXIgc2VsZWN0aW9uO1xuXHRcblx0ICAgIGlmICgnc2VsZWN0aW9uU3RhcnQnIGluIGlucHV0
KSB7XG5cdCAgICAgIC8vIE1vZGVybiBicm93c2VyIHdpdGggaW5wdXQgb3IgdGV4dGFyZWEuXG5c
dCAgICAgIHNlbGVjdGlvbiA9IHtcblx0ICAgICAgICBzdGFydDogaW5wdXQuc2VsZWN0aW9uU3Rh
cnQsXG5cdCAgICAgICAgZW5kOiBpbnB1dC5zZWxlY3Rpb25FbmRcblx0ICAgICAgfTtcblx0ICAg
IH0gZWxzZSBpZiAoZG9jdW1lbnQuc2VsZWN0aW9uICYmIGlucHV0Lm5vZGVOYW1lICYmIGlucHV0
Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1dCcpIHtcblx0ICAgICAgLy8gSUU4IGlu
cHV0LlxuXHQgICAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2Uo
KTtcblx0ICAgICAgLy8gVGhlcmUgY2FuIG9ubHkgYmUgb25lIHNlbGVjdGlvbiBwZXIgZG9jdW1l
bnQgaW4gSUUsIHNvIGl0IG11c3Rcblx0ICAgICAgLy8gYmUgaW4gb3VyIGVsZW1lbnQuXG5cdCAg
ICAgIGlmIChyYW5nZS5wYXJlbnRFbGVtZW50KCkgPT09IGlucHV0KSB7XG5cdCAgICAgICAgc2Vs
ZWN0aW9uID0ge1xuXHQgICAgICAgICAgc3RhcnQ6IC1yYW5nZS5tb3ZlU3RhcnQoJ2NoYXJhY3Rl
cicsIC1pbnB1dC52YWx1ZS5sZW5ndGgpLFxuXHQgICAgICAgICAgZW5kOiAtcmFuZ2UubW92ZUVu
ZCgnY2hhcmFjdGVyJywgLWlucHV0LnZhbHVlLmxlbmd0aClcblx0ICAgICAgICB9O1xuXHQgICAg
ICB9XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICAvLyBDb250ZW50IGVkaXRhYmxlIG9yIG9sZCBJ
RSB0ZXh0YXJlYS5cblx0ICAgICAgc2VsZWN0aW9uID0gUmVhY3RET01TZWxlY3Rpb24uZ2V0T2Zm
c2V0cyhpbnB1dCk7XG5cdCAgICB9XG5cdFxuXHQgICAgcmV0dXJuIHNlbGVjdGlvbiB8fCB7IHN0
YXJ0OiAwLCBlbmQ6IDAgfTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBAc2V0U2VsZWN0
aW9uOiBTZXRzIHRoZSBzZWxlY3Rpb24gYm91bmRzIG9mIGEgdGV4dGFyZWEgb3IgaW5wdXQgYW5k
IGZvY3VzZXNcblx0ICAgKiB0aGUgaW5wdXQuXG5cdCAgICogLUBpbnB1dCAgICAgU2V0IHNlbGVj
dGlvbiBib3VuZHMgb2YgdGhpcyBpbnB1dCBvciB0ZXh0YXJlYVxuXHQgICAqIC1Ab2Zmc2V0cyAg
IE9iamVjdCBvZiBzYW1lIGZvcm0gdGhhdCBpcyByZXR1cm5lZCBmcm9tIGdldCpcblx0ICAgKi9c
blx0ICBzZXRTZWxlY3Rpb246IGZ1bmN0aW9uIChpbnB1dCwgb2Zmc2V0cykge1xuXHQgICAgdmFy
IHN0YXJ0ID0gb2Zmc2V0cy5zdGFydDtcblx0ICAgIHZhciBlbmQgPSBvZmZzZXRzLmVuZDtcblx0
ICAgIGlmIChlbmQgPT09IHVuZGVmaW5lZCkge1xuXHQgICAgICBlbmQgPSBzdGFydDtcblx0ICAg
IH1cblx0XG5cdCAgICBpZiAoJ3NlbGVjdGlvblN0YXJ0JyBpbiBpbnB1dCkge1xuXHQgICAgICBp
bnB1dC5zZWxlY3Rpb25TdGFydCA9IHN0YXJ0O1xuXHQgICAgICBpbnB1dC5zZWxlY3Rpb25FbmQg
PSBNYXRoLm1pbihlbmQsIGlucHV0LnZhbHVlLmxlbmd0aCk7XG5cdCAgICB9IGVsc2UgaWYgKGRv
Y3VtZW50LnNlbGVjdGlvbiAmJiBpbnB1dC5ub2RlTmFtZSAmJiBpbnB1dC5ub2RlTmFtZS50b0xv
d2VyQ2FzZSgpID09PSAnaW5wdXQnKSB7XG5cdCAgICAgIHZhciByYW5nZSA9IGlucHV0LmNyZWF0
ZVRleHRSYW5nZSgpO1xuXHQgICAgICByYW5nZS5jb2xsYXBzZSh0cnVlKTtcblx0ICAgICAgcmFu
Z2UubW92ZVN0YXJ0KCdjaGFyYWN0ZXInLCBzdGFydCk7XG5cdCAgICAgIHJhbmdlLm1vdmVFbmQo
J2NoYXJhY3RlcicsIGVuZCAtIHN0YXJ0KTtcblx0ICAgICAgcmFuZ2Uuc2VsZWN0KCk7XG5cdCAg
ICB9IGVsc2Uge1xuXHQgICAgICBSZWFjdERPTVNlbGVjdGlvbi5zZXRPZmZzZXRzKGlucHV0LCBv
ZmZzZXRzKTtcblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJl
YWN0SW5wdXRTZWxlY3Rpb247XG5cbi8qKiovIH0sXG4vKiA2NyAqL1xuLyoqKi8gZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
blx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xu
XHRcblx0dmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblx0XG5c
dHZhciBET01MYXp5VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTQpO1xuXHR2YXIgRE9NUHJv
cGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1KTtcblx0dmFyIFJlYWN0ID0gX193ZWJwYWNr
X3JlcXVpcmVfXygxNyk7XG5cdHZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDI1KTtcblx0dmFyIFJlYWN0Q3VycmVudE93bmVyID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxMSk7XG5cdHZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDUpO1xuXHR2YXIgUmVhY3RET01Db250YWluZXJJbmZvID0gX193ZWJwYWNrX3JlcXVp
cmVfXygxMzkpO1xuXHR2YXIgUmVhY3RET01GZWF0dXJlRmxhZ3MgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDE0MSk7XG5cdHZhciBSZWFjdEZlYXR1cmVGbGFncyA9IF9fd2VicGFja19yZXF1aXJlX18o
NjQpO1xuXHR2YXIgUmVhY3RJbnN0YW5jZU1hcCA9IF9fd2VicGFja19yZXF1aXJlX18oMjEpO1xu
XHR2YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpO1xuXHR2
YXIgUmVhY3RNYXJrdXBDaGVja3N1bSA9IF9fd2VicGFja19yZXF1aXJlX18oMTU1KTtcblx0dmFy
IFJlYWN0UmVjb25jaWxlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTYpO1xuXHR2YXIgUmVhY3RV
cGRhdGVRdWV1ZSA9IF9fd2VicGFja19yZXF1aXJlX18oNDIpO1xuXHR2YXIgUmVhY3RVcGRhdGVz
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTtcblx0XG5cdHZhciBlbXB0eU9iamVjdCA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMjQpO1xuXHR2YXIgaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCA9IF9f
d2VicGFja19yZXF1aXJlX18oNzUpO1xuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVp
cmVfXygxKTtcblx0dmFyIHNldElubmVySFRNTCA9IF9fd2VicGFja19yZXF1aXJlX18oMjkpO1xu
XHR2YXIgc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ4
KTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHRcblx0dmFyIEFU
VFJfTkFNRSA9IERPTVByb3BlcnR5LklEX0FUVFJJQlVURV9OQU1FO1xuXHR2YXIgUk9PVF9BVFRS
X05BTUUgPSBET01Qcm9wZXJ0eS5ST09UX0FUVFJJQlVURV9OQU1FO1xuXHRcblx0dmFyIEVMRU1F
TlRfTk9ERV9UWVBFID0gMTtcblx0dmFyIERPQ19OT0RFX1RZUEUgPSA5O1xuXHR2YXIgRE9DVU1F
TlRfRlJBR01FTlRfTk9ERV9UWVBFID0gMTE7XG5cdFxuXHR2YXIgaW5zdGFuY2VzQnlSZWFjdFJv
b3RJRCA9IHt9O1xuXHRcblx0LyoqXG5cdCAqIEZpbmRzIHRoZSBpbmRleCBvZiB0aGUgZmlyc3Qg
Y2hhcmFjdGVyXG5cdCAqIHRoYXQncyBub3QgY29tbW9uIGJldHdlZW4gdGhlIHR3byBnaXZlbiBz
dHJpbmdzLlxuXHQgKlxuXHQgKiBAcmV0dXJuIHtudW1iZXJ9IHRoZSBpbmRleCBvZiB0aGUgY2hh
cmFjdGVyIHdoZXJlIHRoZSBzdHJpbmdzIGRpdmVyZ2Vcblx0ICovXG5cdGZ1bmN0aW9uIGZpcnN0
RGlmZmVyZW5jZUluZGV4KHN0cmluZzEsIHN0cmluZzIpIHtcblx0ICB2YXIgbWluTGVuID0gTWF0
aC5taW4oc3RyaW5nMS5sZW5ndGgsIHN0cmluZzIubGVuZ3RoKTtcblx0ICBmb3IgKHZhciBpID0g
MDsgaSA8IG1pbkxlbjsgaSsrKSB7XG5cdCAgICBpZiAoc3RyaW5nMS5jaGFyQXQoaSkgIT09IHN0
cmluZzIuY2hhckF0KGkpKSB7XG5cdCAgICAgIHJldHVybiBpO1xuXHQgICAgfVxuXHQgIH1cblx0
ICByZXR1cm4gc3RyaW5nMS5sZW5ndGggPT09IHN0cmluZzIubGVuZ3RoID8gLTEgOiBtaW5MZW47
XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9NRG9jdW1lbnR9IGNv
bnRhaW5lciBET00gZWxlbWVudCB0aGF0IG1heSBjb250YWluXG5cdCAqIGEgUmVhY3QgY29tcG9u
ZW50XG5cdCAqIEByZXR1cm4gez8qfSBET00gZWxlbWVudCB0aGF0IG1heSBoYXZlIHRoZSByZWFj
dFJvb3QgSUQsIG9yIG51bGwuXG5cdCAqL1xuXHRmdW5jdGlvbiBnZXRSZWFjdFJvb3RFbGVtZW50
SW5Db250YWluZXIoY29udGFpbmVyKSB7XG5cdCAgaWYgKCFjb250YWluZXIpIHtcblx0ICAgIHJl
dHVybiBudWxsO1xuXHQgIH1cblx0XG5cdCAgaWYgKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRE9D
X05PREVfVFlQRSkge1xuXHQgICAgcmV0dXJuIGNvbnRhaW5lci5kb2N1bWVudEVsZW1lbnQ7XG5c
dCAgfSBlbHNlIHtcblx0ICAgIHJldHVybiBjb250YWluZXIuZmlyc3RDaGlsZDtcblx0ICB9XG5c
dH1cblx0XG5cdGZ1bmN0aW9uIGludGVybmFsR2V0SUQobm9kZSkge1xuXHQgIC8vIElmIG5vZGUg
aXMgc29tZXRoaW5nIGxpa2UgYSB3aW5kb3csIGRvY3VtZW50LCBvciB0ZXh0IG5vZGUsIG5vbmUg
b2Zcblx0ICAvLyB3aGljaCBzdXBwb3J0IGF0dHJpYnV0ZXMgb3IgYSAuZ2V0QXR0cmlidXRlIG1l
dGhvZCwgZ3JhY2VmdWxseSByZXR1cm5cblx0ICAvLyB0aGUgZW1wdHkgc3RyaW5nLCBhcyBpZiB0
aGUgYXR0cmlidXRlIHdlcmUgbWlzc2luZy5cblx0ICByZXR1cm4gbm9kZS5nZXRBdHRyaWJ1dGUg
JiYgbm9kZS5nZXRBdHRyaWJ1dGUoQVRUUl9OQU1FKSB8fCAnJztcblx0fVxuXHRcblx0LyoqXG5c
dCAqIE1vdW50cyB0aGlzIGNvbXBvbmVudCBhbmQgaW5zZXJ0cyBpdCBpbnRvIHRoZSBET00uXG5c
dCAqXG5cdCAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNvbXBvbmVudEluc3RhbmNlIFRoZSBp
bnN0YW5jZSB0byBtb3VudC5cblx0ICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgRE9N
IGVsZW1lbnQgdG8gbW91bnQgaW50by5cblx0ICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5z
YWN0aW9ufSB0cmFuc2FjdGlvblxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IHNob3VsZFJldXNlTWFy
a3VwIElmIHRydWUsIGRvIG5vdCBpbnNlcnQgbWFya3VwXG5cdCAqL1xuXHRmdW5jdGlvbiBtb3Vu
dENvbXBvbmVudEludG9Ob2RlKHdyYXBwZXJJbnN0YW5jZSwgY29udGFpbmVyLCB0cmFuc2FjdGlv
biwgc2hvdWxkUmV1c2VNYXJrdXAsIGNvbnRleHQpIHtcblx0ICB2YXIgbWFya2VyTmFtZTtcblx0
ICBpZiAoUmVhY3RGZWF0dXJlRmxhZ3MubG9nVG9wTGV2ZWxSZW5kZXJzKSB7XG5cdCAgICB2YXIg
d3JhcHBlZEVsZW1lbnQgPSB3cmFwcGVySW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50LnByb3BzLmNo
aWxkO1xuXHQgICAgdmFyIHR5cGUgPSB3cmFwcGVkRWxlbWVudC50eXBlO1xuXHQgICAgbWFya2Vy
TmFtZSA9ICdSZWFjdCBtb3VudDogJyArICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycgPyB0eXBl
IDogdHlwZS5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUpO1xuXHQgICAgY29uc29sZS50aW1lKG1h
cmtlck5hbWUpO1xuXHQgIH1cblx0XG5cdCAgdmFyIG1hcmt1cCA9IFJlYWN0UmVjb25jaWxlci5t
b3VudENvbXBvbmVudCh3cmFwcGVySW5zdGFuY2UsIHRyYW5zYWN0aW9uLCBudWxsLCBSZWFjdERP
TUNvbnRhaW5lckluZm8od3JhcHBlckluc3RhbmNlLCBjb250YWluZXIpLCBjb250ZXh0LCAwIC8q
IHBhcmVudERlYnVnSUQgKi9cblx0ICApO1xuXHRcblx0ICBpZiAobWFya2VyTmFtZSkge1xuXHQg
ICAgY29uc29sZS50aW1lRW5kKG1hcmtlck5hbWUpO1xuXHQgIH1cblx0XG5cdCAgd3JhcHBlcklu
c3RhbmNlLl9yZW5kZXJlZENvbXBvbmVudC5fdG9wTGV2ZWxXcmFwcGVyID0gd3JhcHBlckluc3Rh
bmNlO1xuXHQgIFJlYWN0TW91bnQuX21vdW50SW1hZ2VJbnRvTm9kZShtYXJrdXAsIGNvbnRhaW5l
ciwgd3JhcHBlckluc3RhbmNlLCBzaG91bGRSZXVzZU1hcmt1cCwgdHJhbnNhY3Rpb24pO1xuXHR9
XG5cdFxuXHQvKipcblx0ICogQmF0Y2hlZCBtb3VudC5cblx0ICpcblx0ICogQHBhcmFtIHtSZWFj
dENvbXBvbmVudH0gY29tcG9uZW50SW5zdGFuY2UgVGhlIGluc3RhbmNlIHRvIG1vdW50LlxuXHQg
KiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCB0byBtb3VudCBpbnRv
LlxuXHQgKiBAcGFyYW0ge2Jvb2xlYW59IHNob3VsZFJldXNlTWFya3VwIElmIHRydWUsIGRvIG5v
dCBpbnNlcnQgbWFya3VwXG5cdCAqL1xuXHRmdW5jdGlvbiBiYXRjaGVkTW91bnRDb21wb25lbnRJ
bnRvTm9kZShjb21wb25lbnRJbnN0YW5jZSwgY29udGFpbmVyLCBzaG91bGRSZXVzZU1hcmt1cCwg
Y29udGV4dCkge1xuXHQgIHZhciB0cmFuc2FjdGlvbiA9IFJlYWN0VXBkYXRlcy5SZWFjdFJlY29u
Y2lsZVRyYW5zYWN0aW9uLmdldFBvb2xlZChcblx0ICAvKiB1c2VDcmVhdGVFbGVtZW50ICovXG5c
dCAgIXNob3VsZFJldXNlTWFya3VwICYmIFJlYWN0RE9NRmVhdHVyZUZsYWdzLnVzZUNyZWF0ZUVs
ZW1lbnQpO1xuXHQgIHRyYW5zYWN0aW9uLnBlcmZvcm0obW91bnRDb21wb25lbnRJbnRvTm9kZSwg
bnVsbCwgY29tcG9uZW50SW5zdGFuY2UsIGNvbnRhaW5lciwgdHJhbnNhY3Rpb24sIHNob3VsZFJl
dXNlTWFya3VwLCBjb250ZXh0KTtcblx0ICBSZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNpbGVUcmFu
c2FjdGlvbi5yZWxlYXNlKHRyYW5zYWN0aW9uKTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFVubW91
bnRzIGEgY29tcG9uZW50IGFuZCByZW1vdmVzIGl0IGZyb20gdGhlIERPTS5cblx0ICpcblx0ICog
QHBhcmFtIHtSZWFjdENvbXBvbmVudH0gaW5zdGFuY2UgUmVhY3QgY29tcG9uZW50IGluc3RhbmNl
LlxuXHQgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCB0byB1bm1v
dW50IGZyb20uXG5cdCAqIEBmaW5hbFxuXHQgKiBAaW50ZXJuYWxcblx0ICogQHNlZSB7UmVhY3RN
b3VudC51bm1vdW50Q29tcG9uZW50QXROb2RlfVxuXHQgKi9cblx0ZnVuY3Rpb24gdW5tb3VudENv
bXBvbmVudEZyb21Ob2RlKGluc3RhbmNlLCBjb250YWluZXIsIHNhZmVseSkge1xuXHQgIGlmIChm
YWxzZSkge1xuXHQgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uQmVnaW5GbHVz
aCgpO1xuXHQgIH1cblx0ICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENvbXBvbmVudChpbnN0YW5j
ZSwgc2FmZWx5KTtcblx0ICBpZiAoZmFsc2UpIHtcblx0ICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9u
LmRlYnVnVG9vbC5vbkVuZEZsdXNoKCk7XG5cdCAgfVxuXHRcblx0ICBpZiAoY29udGFpbmVyLm5v
ZGVUeXBlID09PSBET0NfTk9ERV9UWVBFKSB7XG5cdCAgICBjb250YWluZXIgPSBjb250YWluZXIu
ZG9jdW1lbnRFbGVtZW50O1xuXHQgIH1cblx0XG5cdCAgLy8gaHR0cDovL2pzcGVyZi5jb20vZW1w
dHlpbmctYS1ub2RlXG5cdCAgd2hpbGUgKGNvbnRhaW5lci5sYXN0Q2hpbGQpIHtcblx0ICAgIGNv
bnRhaW5lci5yZW1vdmVDaGlsZChjb250YWluZXIubGFzdENoaWxkKTtcblx0ICB9XG5cdH1cblx0
XG5cdC8qKlxuXHQgKiBUcnVlIGlmIHRoZSBzdXBwbGllZCBET00gbm9kZSBoYXMgYSBkaXJlY3Qg
UmVhY3QtcmVuZGVyZWQgY2hpbGQgdGhhdCBpc1xuXHQgKiBub3QgYSBSZWFjdCByb290IGVsZW1l
bnQuIFVzZWZ1bCBmb3Igd2FybmluZyBpbiBgcmVuZGVyYCxcblx0ICogYHVubW91bnRDb21wb25l
bnRBdE5vZGVgLCBldGMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7P0RPTUVsZW1lbnR9IG5vZGUgVGhl
IGNhbmRpZGF0ZSBET00gbm9kZS5cblx0ICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUg
RE9NIGVsZW1lbnQgY29udGFpbnMgYSBkaXJlY3QgY2hpbGQgdGhhdCB3YXNcblx0ICogcmVuZGVy
ZWQgYnkgUmVhY3QgYnV0IGlzIG5vdCBhIHJvb3QgZWxlbWVudC5cblx0ICogQGludGVybmFsXG5c
dCAqL1xuXHRmdW5jdGlvbiBoYXNOb25Sb290UmVhY3RDaGlsZChjb250YWluZXIpIHtcblx0ICB2
YXIgcm9vdEVsID0gZ2V0UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVyKGNvbnRhaW5lcik7XG5c
dCAgaWYgKHJvb3RFbCkge1xuXHQgICAgdmFyIGluc3QgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUu
Z2V0SW5zdGFuY2VGcm9tTm9kZShyb290RWwpO1xuXHQgICAgcmV0dXJuICEhKGluc3QgJiYgaW5z
dC5faG9zdFBhcmVudCk7XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICogVHJ1ZSBpZiB0aGUg
c3VwcGxpZWQgRE9NIG5vZGUgaXMgYSBSZWFjdCBET00gZWxlbWVudCBhbmRcblx0ICogaXQgaGFz
IGJlZW4gcmVuZGVyZWQgYnkgYW5vdGhlciBjb3B5IG9mIFJlYWN0LlxuXHQgKlxuXHQgKiBAcGFy
YW0gez9ET01FbGVtZW50fSBub2RlIFRoZSBjYW5kaWRhdGUgRE9NIG5vZGUuXG5cdCAqIEByZXR1
cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIERPTSBoYXMgYmVlbiByZW5kZXJlZCBieSBhbm90aGVy
IGNvcHkgb2YgUmVhY3Rcblx0ICogQGludGVybmFsXG5cdCAqL1xuXHRmdW5jdGlvbiBub2RlSXNS
ZW5kZXJlZEJ5T3RoZXJJbnN0YW5jZShjb250YWluZXIpIHtcblx0ICB2YXIgcm9vdEVsID0gZ2V0
UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVyKGNvbnRhaW5lcik7XG5cdCAgcmV0dXJuICEhKHJv
b3RFbCAmJiBpc1JlYWN0Tm9kZShyb290RWwpICYmICFSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0
SW5zdGFuY2VGcm9tTm9kZShyb290RWwpKTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFRydWUgaWYg
dGhlIHN1cHBsaWVkIERPTSBub2RlIGlzIGEgdmFsaWQgbm9kZSBlbGVtZW50LlxuXHQgKlxuXHQg
KiBAcGFyYW0gez9ET01FbGVtZW50fSBub2RlIFRoZSBjYW5kaWRhdGUgRE9NIG5vZGUuXG5cdCAq
IEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIERPTSBpcyBhIHZhbGlkIERPTSBub2RlLlxu
XHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdGZ1bmN0aW9uIGlzVmFsaWRDb250YWluZXIobm9kZSkg
e1xuXHQgIHJldHVybiAhIShub2RlICYmIChub2RlLm5vZGVUeXBlID09PSBFTEVNRU5UX05PREVf
VFlQRSB8fCBub2RlLm5vZGVUeXBlID09PSBET0NfTk9ERV9UWVBFIHx8IG5vZGUubm9kZVR5cGUg
PT09IERPQ1VNRU5UX0ZSQUdNRU5UX05PREVfVFlQRSkpO1xuXHR9XG5cdFxuXHQvKipcblx0ICog
VHJ1ZSBpZiB0aGUgc3VwcGxpZWQgRE9NIG5vZGUgaXMgYSB2YWxpZCBSZWFjdCBub2RlIGVsZW1l
bnQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7P0RPTUVsZW1lbnR9IG5vZGUgVGhlIGNhbmRpZGF0ZSBE
T00gbm9kZS5cblx0ICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgRE9NIGlzIGEgdmFs
aWQgUmVhY3QgRE9NIG5vZGUuXG5cdCAqIEBpbnRlcm5hbFxuXHQgKi9cblx0ZnVuY3Rpb24gaXNS
ZWFjdE5vZGUobm9kZSkge1xuXHQgIHJldHVybiBpc1ZhbGlkQ29udGFpbmVyKG5vZGUpICYmIChu
b2RlLmhhc0F0dHJpYnV0ZShST09UX0FUVFJfTkFNRSkgfHwgbm9kZS5oYXNBdHRyaWJ1dGUoQVRU
Ul9OQU1FKSk7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGdldEhvc3RSb290SW5zdGFuY2VJbkNvbnRh
aW5lcihjb250YWluZXIpIHtcblx0ICB2YXIgcm9vdEVsID0gZ2V0UmVhY3RSb290RWxlbWVudElu
Q29udGFpbmVyKGNvbnRhaW5lcik7XG5cdCAgdmFyIHByZXZIb3N0SW5zdGFuY2UgPSByb290RWwg
JiYgUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUocm9vdEVsKTtcblx0
ICByZXR1cm4gcHJldkhvc3RJbnN0YW5jZSAmJiAhcHJldkhvc3RJbnN0YW5jZS5faG9zdFBhcmVu
dCA/IHByZXZIb3N0SW5zdGFuY2UgOiBudWxsO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBnZXRUb3BM
ZXZlbFdyYXBwZXJJbkNvbnRhaW5lcihjb250YWluZXIpIHtcblx0ICB2YXIgcm9vdCA9IGdldEhv
c3RSb290SW5zdGFuY2VJbkNvbnRhaW5lcihjb250YWluZXIpO1xuXHQgIHJldHVybiByb290ID8g
cm9vdC5faG9zdENvbnRhaW5lckluZm8uX3RvcExldmVsV3JhcHBlciA6IG51bGw7XG5cdH1cblx0
XG5cdC8qKlxuXHQgKiBUZW1wb3JhcnkgKD8pIGhhY2sgc28gdGhhdCB3ZSBjYW4gc3RvcmUgYWxs
IHRvcC1sZXZlbCBwZW5kaW5nIHVwZGF0ZXMgb25cblx0ICogY29tcG9zaXRlcyBpbnN0ZWFkIG9m
IGhhdmluZyB0byB3b3JyeSBhYm91dCBkaWZmZXJlbnQgdHlwZXMgb2YgY29tcG9uZW50c1xuXHQg
KiBoZXJlLlxuXHQgKi9cblx0dmFyIHRvcExldmVsUm9vdENvdW50ZXIgPSAxO1xuXHR2YXIgVG9w
TGV2ZWxXcmFwcGVyID0gZnVuY3Rpb24gKCkge1xuXHQgIHRoaXMucm9vdElEID0gdG9wTGV2ZWxS
b290Q291bnRlcisrO1xuXHR9O1xuXHRUb3BMZXZlbFdyYXBwZXIucHJvdG90eXBlLmlzUmVhY3RD
b21wb25lbnQgPSB7fTtcblx0aWYgKGZhbHNlKSB7XG5cdCAgVG9wTGV2ZWxXcmFwcGVyLmRpc3Bs
YXlOYW1lID0gJ1RvcExldmVsV3JhcHBlcic7XG5cdH1cblx0VG9wTGV2ZWxXcmFwcGVyLnByb3Rv
dHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG5cdCAgcmV0dXJuIHRoaXMucHJvcHMuY2hpbGQ7
XG5cdH07XG5cdFRvcExldmVsV3JhcHBlci5pc1JlYWN0VG9wTGV2ZWxXcmFwcGVyID0gdHJ1ZTtc
blx0XG5cdC8qKlxuXHQgKiBNb3VudGluZyBpcyB0aGUgcHJvY2VzcyBvZiBpbml0aWFsaXppbmcg
YSBSZWFjdCBjb21wb25lbnQgYnkgY3JlYXRpbmcgaXRzXG5cdCAqIHJlcHJlc2VudGF0aXZlIERP
TSBlbGVtZW50cyBhbmQgaW5zZXJ0aW5nIHRoZW0gaW50byBhIHN1cHBsaWVkIGBjb250YWluZXJg
LlxuXHQgKiBBbnkgcHJpb3IgY29udGVudCBpbnNpZGUgYGNvbnRhaW5lcmAgaXMgZGVzdHJveWVk
IGluIHRoZSBwcm9jZXNzLlxuXHQgKlxuXHQgKiAgIFJlYWN0TW91bnQucmVuZGVyKFxuXHQgKiAg
ICAgY29tcG9uZW50LFxuXHQgKiAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5l
cicpXG5cdCAqICAgKTtcblx0ICpcblx0ICogICA8ZGl2IGlkPVwiY29udGFpbmVyXCI+ICAgICAg
ICAgICAgICAgICAgIDwtLSBTdXBwbGllZCBgY29udGFpbmVyYC5cblx0ICogICAgIDxkaXYgZGF0
YS1yZWFjdGlkPVwiLjNcIj4gICAgICAgICAgICAgIDwtLSBSZW5kZXJlZCByZWFjdFJvb3Qgb2Yg
UmVhY3Rcblx0ICogICAgICAgLy8gLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29tcG9uZW50LlxuXHQgKiAgICAgPC9kaXY+XG5cdCAqICAgPC9kaXY+XG5cdCAqXG5cdCAqIElu
c2lkZSBvZiBgY29udGFpbmVyYCwgdGhlIGZpcnN0IGVsZW1lbnQgcmVuZGVyZWQgaXMgdGhlIFwi
cmVhY3RSb290XCIuXG5cdCAqL1xuXHR2YXIgUmVhY3RNb3VudCA9IHtcblx0ICBUb3BMZXZlbFdy
YXBwZXI6IFRvcExldmVsV3JhcHBlcixcblx0XG5cdCAgLyoqXG5cdCAgICogVXNlZCBieSBkZXZ0
b29scy4gVGhlIGtleXMgYXJlIG5vdCBpbXBvcnRhbnQuXG5cdCAgICovXG5cdCAgX2luc3RhbmNl
c0J5UmVhY3RSb290SUQ6IGluc3RhbmNlc0J5UmVhY3RSb290SUQsXG5cdFxuXHQgIC8qKlxuXHQg
ICAqIFRoaXMgaXMgYSBob29rIHByb3ZpZGVkIHRvIHN1cHBvcnQgcmVuZGVyaW5nIFJlYWN0IGNv
bXBvbmVudHMgd2hpbGVcblx0ICAgKiBlbnN1cmluZyB0aGF0IHRoZSBhcHBhcmVudCBzY3JvbGwg
cG9zaXRpb24gb2YgaXRzIGBjb250YWluZXJgIGRvZXMgbm90XG5cdCAgICogY2hhbmdlLlxuXHQg
ICAqXG5cdCAgICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgVGhlIGBjb250YWluZXJg
IGJlaW5nIHJlbmRlcmVkIGludG8uXG5cdCAgICogQHBhcmFtIHtmdW5jdGlvbn0gcmVuZGVyQ2Fs
bGJhY2sgVGhpcyBtdXN0IGJlIGNhbGxlZCBvbmNlIHRvIGRvIHRoZSByZW5kZXIuXG5cdCAgICov
XG5cdCAgc2Nyb2xsTW9uaXRvcjogZnVuY3Rpb24gKGNvbnRhaW5lciwgcmVuZGVyQ2FsbGJhY2sp
IHtcblx0ICAgIHJlbmRlckNhbGxiYWNrKCk7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICog
VGFrZSBhIGNvbXBvbmVudCB0aGF0J3MgYWxyZWFkeSBtb3VudGVkIGludG8gdGhlIERPTSBhbmQg
cmVwbGFjZSBpdHMgcHJvcHNcblx0ICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBwcmV2Q29t
cG9uZW50IGNvbXBvbmVudCBpbnN0YW5jZSBhbHJlYWR5IGluIHRoZSBET01cblx0ICAgKiBAcGFy
YW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnQgY29tcG9uZW50IGluc3RhbmNlIHRvIHJlbmRl
clxuXHQgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIGNvbnRhaW5lciB0byByZW5k
ZXIgaW50b1xuXHQgICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBmdW5jdGlvbiB0cmln
Z2VyZWQgb24gY29tcGxldGlvblxuXHQgICAqL1xuXHQgIF91cGRhdGVSb290Q29tcG9uZW50OiBm
dW5jdGlvbiAocHJldkNvbXBvbmVudCwgbmV4dEVsZW1lbnQsIG5leHRDb250ZXh0LCBjb250YWlu
ZXIsIGNhbGxiYWNrKSB7XG5cdCAgICBSZWFjdE1vdW50LnNjcm9sbE1vbml0b3IoY29udGFpbmVy
LCBmdW5jdGlvbiAoKSB7XG5cdCAgICAgIFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZUVsZW1lbnRJ
bnRlcm5hbChwcmV2Q29tcG9uZW50LCBuZXh0RWxlbWVudCwgbmV4dENvbnRleHQpO1xuXHQgICAg
ICBpZiAoY2FsbGJhY2spIHtcblx0ICAgICAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVDYWxs
YmFja0ludGVybmFsKHByZXZDb21wb25lbnQsIGNhbGxiYWNrKTtcblx0ICAgICAgfVxuXHQgICAg
fSk7XG5cdFxuXHQgICAgcmV0dXJuIHByZXZDb21wb25lbnQ7XG5cdCAgfSxcblx0XG5cdCAgLyoq
XG5cdCAgICogUmVuZGVyIGEgbmV3IGNvbXBvbmVudCBpbnRvIHRoZSBET00uIEhvb2tlZCBieSBo
b29rcyFcblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudCBl
bGVtZW50IHRvIHJlbmRlclxuXHQgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIGNv
bnRhaW5lciB0byByZW5kZXIgaW50b1xuXHQgICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hvdWxkUmV1
c2VNYXJrdXAgaWYgd2Ugc2hvdWxkIHNraXAgdGhlIG1hcmt1cCBpbnNlcnRpb25cblx0ICAgKiBA
cmV0dXJuIHtSZWFjdENvbXBvbmVudH0gbmV4dENvbXBvbmVudFxuXHQgICAqL1xuXHQgIF9yZW5k
ZXJOZXdSb290Q29tcG9uZW50OiBmdW5jdGlvbiAobmV4dEVsZW1lbnQsIGNvbnRhaW5lciwgc2hv
dWxkUmV1c2VNYXJrdXAsIGNvbnRleHQpIHtcblx0ICAgIC8vIFZhcmlvdXMgcGFydHMgb2Ygb3Vy
IGNvZGUgKHN1Y2ggYXMgUmVhY3RDb21wb3NpdGVDb21wb25lbnQnc1xuXHQgICAgLy8gX3JlbmRl
clZhbGlkYXRlZENvbXBvbmVudCkgYXNzdW1lIHRoYXQgY2FsbHMgdG8gcmVuZGVyIGFyZW4ndCBu
ZXN0ZWQ7XG5cdCAgICAvLyB2ZXJpZnkgdGhhdCB0aGF0J3MgdGhlIGNhc2UuXG5cdCAgICAgZmFs
c2UgPyB3YXJuaW5nKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPT0gbnVsbCwgJ19yZW5kZXJO
ZXdSb290Q29tcG9uZW50KCk6IFJlbmRlciBtZXRob2RzIHNob3VsZCBiZSBhIHB1cmUgZnVuY3Rp
b24gJyArICdvZiBwcm9wcyBhbmQgc3RhdGU7IHRyaWdnZXJpbmcgbmVzdGVkIGNvbXBvbmVudCB1
cGRhdGVzIGZyb20gJyArICdyZW5kZXIgaXMgbm90IGFsbG93ZWQuIElmIG5lY2Vzc2FyeSwgdHJp
Z2dlciBuZXN0ZWQgdXBkYXRlcyBpbiAnICsgJ2NvbXBvbmVudERpZFVwZGF0ZS4gQ2hlY2sgdGhl
IHJlbmRlciBtZXRob2Qgb2YgJXMuJywgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCAmJiBSZWFj
dEN1cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25l
bnQnKSA6IHZvaWQgMDtcblx0XG5cdCAgICAhaXNWYWxpZENvbnRhaW5lcihjb250YWluZXIpID8g
IGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnX3JlZ2lzdGVyQ29tcG9uZW50KC4uLik6IFRhcmdl
dCBjb250YWluZXIgaXMgbm90IGEgRE9NIGVsZW1lbnQuJykgOiBfcHJvZEludmFyaWFudCgnMzcn
KSA6IHZvaWQgMDtcblx0XG5cdCAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuZW5zdXJlU2Ny
b2xsVmFsdWVNb25pdG9yaW5nKCk7XG5cdCAgICB2YXIgY29tcG9uZW50SW5zdGFuY2UgPSBpbnN0
YW50aWF0ZVJlYWN0Q29tcG9uZW50KG5leHRFbGVtZW50LCBmYWxzZSk7XG5cdFxuXHQgICAgLy8g
VGhlIGluaXRpYWwgcmVuZGVyIGlzIHN5bmNocm9ub3VzIGJ1dCBhbnkgdXBkYXRlcyB0aGF0IGhh
cHBlbiBkdXJpbmdcblx0ICAgIC8vIHJlbmRlcmluZywgaW4gY29tcG9uZW50V2lsbE1vdW50IG9y
IGNvbXBvbmVudERpZE1vdW50LCB3aWxsIGJlIGJhdGNoZWRcblx0ICAgIC8vIGFjY29yZGluZyB0
byB0aGUgY3VycmVudCBiYXRjaGluZyBzdHJhdGVneS5cblx0XG5cdCAgICBSZWFjdFVwZGF0ZXMu
YmF0Y2hlZFVwZGF0ZXMoYmF0Y2hlZE1vdW50Q29tcG9uZW50SW50b05vZGUsIGNvbXBvbmVudElu
c3RhbmNlLCBjb250YWluZXIsIHNob3VsZFJldXNlTWFya3VwLCBjb250ZXh0KTtcblx0XG5cdCAg
ICB2YXIgd3JhcHBlcklEID0gY29tcG9uZW50SW5zdGFuY2UuX2luc3RhbmNlLnJvb3RJRDtcblx0
ICAgIGluc3RhbmNlc0J5UmVhY3RSb290SURbd3JhcHBlcklEXSA9IGNvbXBvbmVudEluc3RhbmNl
O1xuXHRcblx0ICAgIHJldHVybiBjb21wb25lbnRJbnN0YW5jZTtcblx0ICB9LFxuXHRcblx0ICAv
Kipcblx0ICAgKiBSZW5kZXJzIGEgUmVhY3QgY29tcG9uZW50IGludG8gdGhlIERPTSBpbiB0aGUg
c3VwcGxpZWQgYGNvbnRhaW5lcmAuXG5cdCAgICpcblx0ICAgKiBJZiB0aGUgUmVhY3QgY29tcG9u
ZW50IHdhcyBwcmV2aW91c2x5IHJlbmRlcmVkIGludG8gYGNvbnRhaW5lcmAsIHRoaXMgd2lsbFxu
XHQgICAqIHBlcmZvcm0gYW4gdXBkYXRlIG9uIGl0IGFuZCBvbmx5IG11dGF0ZSB0aGUgRE9NIGFz
IG5lY2Vzc2FyeSB0byByZWZsZWN0IHRoZVxuXHQgICAqIGxhdGVzdCBSZWFjdCBjb21wb25lbnQu
XG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBwYXJlbnRDb21wb25lbnQg
VGhlIGNvbmNlcHR1YWwgcGFyZW50IG9mIHRoaXMgcmVuZGVyIHRyZWUuXG5cdCAgICogQHBhcmFt
IHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50IENvbXBvbmVudCBlbGVtZW50IHRvIHJlbmRlci5c
blx0ICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCB0byByZW5k
ZXIgaW50by5cblx0ICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgZnVuY3Rpb24gdHJp
Z2dlcmVkIG9uIGNvbXBsZXRpb25cblx0ICAgKiBAcmV0dXJuIHtSZWFjdENvbXBvbmVudH0gQ29t
cG9uZW50IGluc3RhbmNlIHJlbmRlcmVkIGluIGBjb250YWluZXJgLlxuXHQgICAqL1xuXHQgIHJl
bmRlclN1YnRyZWVJbnRvQ29udGFpbmVyOiBmdW5jdGlvbiAocGFyZW50Q29tcG9uZW50LCBuZXh0
RWxlbWVudCwgY29udGFpbmVyLCBjYWxsYmFjaykge1xuXHQgICAgIShwYXJlbnRDb21wb25lbnQg
IT0gbnVsbCAmJiBSZWFjdEluc3RhbmNlTWFwLmhhcyhwYXJlbnRDb21wb25lbnQpKSA/ICBmYWxz
ZSA/IGludmFyaWFudChmYWxzZSwgJ3BhcmVudENvbXBvbmVudCBtdXN0IGJlIGEgdmFsaWQgUmVh
Y3QgQ29tcG9uZW50JykgOiBfcHJvZEludmFyaWFudCgnMzgnKSA6IHZvaWQgMDtcblx0ICAgIHJl
dHVybiBSZWFjdE1vdW50Ll9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcihwYXJlbnRDb21wb25l
bnQsIG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKTtcblx0ICB9LFxuXHRcblx0ICBf
cmVuZGVyU3VidHJlZUludG9Db250YWluZXI6IGZ1bmN0aW9uIChwYXJlbnRDb21wb25lbnQsIG5l
eHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKSB7XG5cdCAgICBSZWFjdFVwZGF0ZVF1ZXVl
LnZhbGlkYXRlQ2FsbGJhY2soY2FsbGJhY2ssICdSZWFjdERPTS5yZW5kZXInKTtcblx0ICAgICFS
ZWFjdC5pc1ZhbGlkRWxlbWVudChuZXh0RWxlbWVudCkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFs
c2UsICdSZWFjdERPTS5yZW5kZXIoKTogSW52YWxpZCBjb21wb25lbnQgZWxlbWVudC4lcycsIHR5
cGVvZiBuZXh0RWxlbWVudCA9PT0gJ3N0cmluZycgPyBcIiBJbnN0ZWFkIG9mIHBhc3NpbmcgYSBz
dHJpbmcgbGlrZSAnZGl2JywgcGFzcyBcIiArIFwiUmVhY3QuY3JlYXRlRWxlbWVudCgnZGl2Jykg
b3IgPGRpdiAvPi5cIiA6IHR5cGVvZiBuZXh0RWxlbWVudCA9PT0gJ2Z1bmN0aW9uJyA/ICcgSW5z
dGVhZCBvZiBwYXNzaW5nIGEgY2xhc3MgbGlrZSBGb28sIHBhc3MgJyArICdSZWFjdC5jcmVhdGVF
bGVtZW50KEZvbykgb3IgPEZvbyAvPi4nIDogLy8gQ2hlY2sgaWYgaXQgcXVhY2tzIGxpa2UgYW4g
ZWxlbWVudFxuXHQgICAgbmV4dEVsZW1lbnQgIT0gbnVsbCAmJiBuZXh0RWxlbWVudC5wcm9wcyAh
PT0gdW5kZWZpbmVkID8gJyBUaGlzIG1heSBiZSBjYXVzZWQgYnkgdW5pbnRlbnRpb25hbGx5IGxv
YWRpbmcgdHdvIGluZGVwZW5kZW50ICcgKyAnY29waWVzIG9mIFJlYWN0LicgOiAnJykgOiBfcHJv
ZEludmFyaWFudCgnMzknLCB0eXBlb2YgbmV4dEVsZW1lbnQgPT09ICdzdHJpbmcnID8gXCIgSW5z
dGVhZCBvZiBwYXNzaW5nIGEgc3RyaW5nIGxpa2UgJ2RpdicsIHBhc3MgXCIgKyBcIlJlYWN0LmNy
ZWF0ZUVsZW1lbnQoJ2RpdicpIG9yIDxkaXYgLz4uXCIgOiB0eXBlb2YgbmV4dEVsZW1lbnQgPT09
ICdmdW5jdGlvbicgPyAnIEluc3RlYWQgb2YgcGFzc2luZyBhIGNsYXNzIGxpa2UgRm9vLCBwYXNz
ICcgKyAnUmVhY3QuY3JlYXRlRWxlbWVudChGb28pIG9yIDxGb28gLz4uJyA6IG5leHRFbGVtZW50
ICE9IG51bGwgJiYgbmV4dEVsZW1lbnQucHJvcHMgIT09IHVuZGVmaW5lZCA/ICcgVGhpcyBtYXkg
YmUgY2F1c2VkIGJ5IHVuaW50ZW50aW9uYWxseSBsb2FkaW5nIHR3byBpbmRlcGVuZGVudCAnICsg
J2NvcGllcyBvZiBSZWFjdC4nIDogJycpIDogdm9pZCAwO1xuXHRcblx0ICAgICBmYWxzZSA/IHdh
cm5pbmcoIWNvbnRhaW5lciB8fCAhY29udGFpbmVyLnRhZ05hbWUgfHwgY29udGFpbmVyLnRhZ05h
bWUudG9VcHBlckNhc2UoKSAhPT0gJ0JPRFknLCAncmVuZGVyKCk6IFJlbmRlcmluZyBjb21wb25l
bnRzIGRpcmVjdGx5IGludG8gZG9jdW1lbnQuYm9keSBpcyAnICsgJ2Rpc2NvdXJhZ2VkLCBzaW5j
ZSBpdHMgY2hpbGRyZW4gYXJlIG9mdGVuIG1hbmlwdWxhdGVkIGJ5IHRoaXJkLXBhcnR5ICcgKyAn
c2NyaXB0cyBhbmQgYnJvd3NlciBleHRlbnNpb25zLiBUaGlzIG1heSBsZWFkIHRvIHN1YnRsZSAn
ICsgJ3JlY29uY2lsaWF0aW9uIGlzc3Vlcy4gVHJ5IHJlbmRlcmluZyBpbnRvIGEgY29udGFpbmVy
IGVsZW1lbnQgY3JlYXRlZCAnICsgJ2ZvciB5b3VyIGFwcC4nKSA6IHZvaWQgMDtcblx0XG5cdCAg
ICB2YXIgbmV4dFdyYXBwZWRFbGVtZW50ID0gUmVhY3QuY3JlYXRlRWxlbWVudChUb3BMZXZlbFdy
YXBwZXIsIHtcblx0ICAgICAgY2hpbGQ6IG5leHRFbGVtZW50XG5cdCAgICB9KTtcblx0XG5cdCAg
ICB2YXIgbmV4dENvbnRleHQ7XG5cdCAgICBpZiAocGFyZW50Q29tcG9uZW50KSB7XG5cdCAgICAg
IHZhciBwYXJlbnRJbnN0ID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQocGFyZW50Q29tcG9uZW50KTtc
blx0ICAgICAgbmV4dENvbnRleHQgPSBwYXJlbnRJbnN0Ll9wcm9jZXNzQ2hpbGRDb250ZXh0KHBh
cmVudEluc3QuX2NvbnRleHQpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgbmV4dENvbnRleHQg
PSBlbXB0eU9iamVjdDtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgcHJldkNvbXBvbmVudCA9IGdl
dFRvcExldmVsV3JhcHBlckluQ29udGFpbmVyKGNvbnRhaW5lcik7XG5cdFxuXHQgICAgaWYgKHBy
ZXZDb21wb25lbnQpIHtcblx0ICAgICAgdmFyIHByZXZXcmFwcGVkRWxlbWVudCA9IHByZXZDb21w
b25lbnQuX2N1cnJlbnRFbGVtZW50O1xuXHQgICAgICB2YXIgcHJldkVsZW1lbnQgPSBwcmV2V3Jh
cHBlZEVsZW1lbnQucHJvcHMuY2hpbGQ7XG5cdCAgICAgIGlmIChzaG91bGRVcGRhdGVSZWFjdENv
bXBvbmVudChwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQpKSB7XG5cdCAgICAgICAgdmFyIHB1Ymxp
Y0luc3QgPSBwcmV2Q29tcG9uZW50Ll9yZW5kZXJlZENvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5j
ZSgpO1xuXHQgICAgICAgIHZhciB1cGRhdGVkQ2FsbGJhY2sgPSBjYWxsYmFjayAmJiBmdW5jdGlv
biAoKSB7XG5cdCAgICAgICAgICBjYWxsYmFjay5jYWxsKHB1YmxpY0luc3QpO1xuXHQgICAgICAg
IH07XG5cdCAgICAgICAgUmVhY3RNb3VudC5fdXBkYXRlUm9vdENvbXBvbmVudChwcmV2Q29tcG9u
ZW50LCBuZXh0V3JhcHBlZEVsZW1lbnQsIG5leHRDb250ZXh0LCBjb250YWluZXIsIHVwZGF0ZWRD
YWxsYmFjayk7XG5cdCAgICAgICAgcmV0dXJuIHB1YmxpY0luc3Q7XG5cdCAgICAgIH0gZWxzZSB7
XG5cdCAgICAgICAgUmVhY3RNb3VudC51bm1vdW50Q29tcG9uZW50QXROb2RlKGNvbnRhaW5lcik7
XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICB2YXIgcmVhY3RSb290RWxlbWVudCA9IGdl
dFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpO1xuXHQgICAgdmFyIGNvbnRh
aW5lckhhc1JlYWN0TWFya3VwID0gcmVhY3RSb290RWxlbWVudCAmJiAhIWludGVybmFsR2V0SUQo
cmVhY3RSb290RWxlbWVudCk7XG5cdCAgICB2YXIgY29udGFpbmVySGFzTm9uUm9vdFJlYWN0Q2hp
bGQgPSBoYXNOb25Sb290UmVhY3RDaGlsZChjb250YWluZXIpO1xuXHRcblx0ICAgIGlmIChmYWxz
ZSkge1xuXHQgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fy
bmluZyghY29udGFpbmVySGFzTm9uUm9vdFJlYWN0Q2hpbGQsICdyZW5kZXIoLi4uKTogUmVwbGFj
aW5nIFJlYWN0LXJlbmRlcmVkIGNoaWxkcmVuIHdpdGggYSBuZXcgcm9vdCAnICsgJ2NvbXBvbmVu
dC4gSWYgeW91IGludGVuZGVkIHRvIHVwZGF0ZSB0aGUgY2hpbGRyZW4gb2YgdGhpcyBub2RlLCAn
ICsgJ3lvdSBzaG91bGQgaW5zdGVhZCBoYXZlIHRoZSBleGlzdGluZyBjaGlsZHJlbiB1cGRhdGUg
dGhlaXIgc3RhdGUgJyArICdhbmQgcmVuZGVyIHRoZSBuZXcgY29tcG9uZW50cyBpbnN0ZWFkIG9m
IGNhbGxpbmcgUmVhY3RET00ucmVuZGVyLicpIDogdm9pZCAwO1xuXHRcblx0ICAgICAgaWYgKCFj
b250YWluZXJIYXNSZWFjdE1hcmt1cCB8fCByZWFjdFJvb3RFbGVtZW50Lm5leHRTaWJsaW5nKSB7
XG5cdCAgICAgICAgdmFyIHJvb3RFbGVtZW50U2libGluZyA9IHJlYWN0Um9vdEVsZW1lbnQ7XG5c
dCAgICAgICAgd2hpbGUgKHJvb3RFbGVtZW50U2libGluZykge1xuXHQgICAgICAgICAgaWYgKGlu
dGVybmFsR2V0SUQocm9vdEVsZW1lbnRTaWJsaW5nKSkge1xuXHQgICAgICAgICAgICBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ3JlbmRlcigp
OiBUYXJnZXQgbm9kZSBoYXMgbWFya3VwIHJlbmRlcmVkIGJ5IFJlYWN0LCBidXQgdGhlcmUgJyAr
ICdhcmUgdW5yZWxhdGVkIG5vZGVzIGFzIHdlbGwuIFRoaXMgaXMgbW9zdCBjb21tb25seSBjYXVz
ZWQgYnkgJyArICd3aGl0ZS1zcGFjZSBpbnNlcnRlZCBhcm91bmQgc2VydmVyLXJlbmRlcmVkIG1h
cmt1cC4nKSA6IHZvaWQgMDtcblx0ICAgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgICB9XG5c
dCAgICAgICAgICByb290RWxlbWVudFNpYmxpbmcgPSByb290RWxlbWVudFNpYmxpbmcubmV4dFNp
Ymxpbmc7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIHNo
b3VsZFJldXNlTWFya3VwID0gY29udGFpbmVySGFzUmVhY3RNYXJrdXAgJiYgIXByZXZDb21wb25l
bnQgJiYgIWNvbnRhaW5lckhhc05vblJvb3RSZWFjdENoaWxkO1xuXHQgICAgdmFyIGNvbXBvbmVu
dCA9IFJlYWN0TW91bnQuX3JlbmRlck5ld1Jvb3RDb21wb25lbnQobmV4dFdyYXBwZWRFbGVtZW50
LCBjb250YWluZXIsIHNob3VsZFJldXNlTWFya3VwLCBuZXh0Q29udGV4dCkuX3JlbmRlcmVkQ29t
cG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCk7XG5cdCAgICBpZiAoY2FsbGJhY2spIHtcblx0ICAg
ICAgY2FsbGJhY2suY2FsbChjb21wb25lbnQpO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIGNvbXBv
bmVudDtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBSZW5kZXJzIGEgUmVhY3QgY29tcG9u
ZW50IGludG8gdGhlIERPTSBpbiB0aGUgc3VwcGxpZWQgYGNvbnRhaW5lcmAuXG5cdCAgICogU2Vl
IGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1s
I3JlYWN0ZG9tLnJlbmRlclxuXHQgICAqXG5cdCAgICogSWYgdGhlIFJlYWN0IGNvbXBvbmVudCB3
YXMgcHJldmlvdXNseSByZW5kZXJlZCBpbnRvIGBjb250YWluZXJgLCB0aGlzIHdpbGxcblx0ICAg
KiBwZXJmb3JtIGFuIHVwZGF0ZSBvbiBpdCBhbmQgb25seSBtdXRhdGUgdGhlIERPTSBhcyBuZWNl
c3NhcnkgdG8gcmVmbGVjdCB0aGVcblx0ICAgKiBsYXRlc3QgUmVhY3QgY29tcG9uZW50LlxuXHQg
ICAqXG5cdCAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50IENvbXBvbmVudCBl
bGVtZW50IHRvIHJlbmRlci5cblx0ICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBE
T00gZWxlbWVudCB0byByZW5kZXIgaW50by5cblx0ICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2Fs
bGJhY2sgZnVuY3Rpb24gdHJpZ2dlcmVkIG9uIGNvbXBsZXRpb25cblx0ICAgKiBAcmV0dXJuIHtS
ZWFjdENvbXBvbmVudH0gQ29tcG9uZW50IGluc3RhbmNlIHJlbmRlcmVkIGluIGBjb250YWluZXJg
LlxuXHQgICAqL1xuXHQgIHJlbmRlcjogZnVuY3Rpb24gKG5leHRFbGVtZW50LCBjb250YWluZXIs
IGNhbGxiYWNrKSB7XG5cdCAgICByZXR1cm4gUmVhY3RNb3VudC5fcmVuZGVyU3VidHJlZUludG9D
b250YWluZXIobnVsbCwgbmV4dEVsZW1lbnQsIGNvbnRhaW5lciwgY2FsbGJhY2spO1xuXHQgIH0s
XG5cdFxuXHQgIC8qKlxuXHQgICAqIFVubW91bnRzIGFuZCBkZXN0cm95cyB0aGUgUmVhY3QgY29t
cG9uZW50IHJlbmRlcmVkIGluIHRoZSBgY29udGFpbmVyYC5cblx0ICAgKiBTZWUgaHR0cHM6Ly9m
YWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3Rkb20u
dW5tb3VudGNvbXBvbmVudGF0bm9kZVxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtET01FbGVtZW50
fSBjb250YWluZXIgRE9NIGVsZW1lbnQgY29udGFpbmluZyBhIFJlYWN0IGNvbXBvbmVudC5cblx0
ICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGEgY29tcG9uZW50IHdhcyBmb3VuZCBpbiBh
bmQgdW5tb3VudGVkIGZyb21cblx0ICAgKiAgICAgICAgICAgICAgICAgICBgY29udGFpbmVyYFxu
XHQgICAqL1xuXHQgIHVubW91bnRDb21wb25lbnRBdE5vZGU6IGZ1bmN0aW9uIChjb250YWluZXIp
IHtcblx0ICAgIC8vIFZhcmlvdXMgcGFydHMgb2Ygb3VyIGNvZGUgKHN1Y2ggYXMgUmVhY3RDb21w
b3NpdGVDb21wb25lbnQnc1xuXHQgICAgLy8gX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCkgYXNz
dW1lIHRoYXQgY2FsbHMgdG8gcmVuZGVyIGFyZW4ndCBuZXN0ZWQ7XG5cdCAgICAvLyB2ZXJpZnkg
dGhhdCB0aGF0J3MgdGhlIGNhc2UuIChTdHJpY3RseSBzcGVha2luZywgdW5tb3VudGluZyB3b24n
dCBjYXVzZSBhXG5cdCAgICAvLyByZW5kZXIgYnV0IHdlIHN0aWxsIGRvbid0IGV4cGVjdCB0byBi
ZSBpbiBhIHJlbmRlciBjYWxsIGhlcmUuKVxuXHQgICAgIGZhbHNlID8gd2FybmluZyhSZWFjdEN1
cnJlbnRPd25lci5jdXJyZW50ID09IG51bGwsICd1bm1vdW50Q29tcG9uZW50QXROb2RlKCk6IFJl
bmRlciBtZXRob2RzIHNob3VsZCBiZSBhIHB1cmUgZnVuY3Rpb24gJyArICdvZiBwcm9wcyBhbmQg
c3RhdGU7IHRyaWdnZXJpbmcgbmVzdGVkIGNvbXBvbmVudCB1cGRhdGVzIGZyb20gcmVuZGVyICcg
KyAnaXMgbm90IGFsbG93ZWQuIElmIG5lY2Vzc2FyeSwgdHJpZ2dlciBuZXN0ZWQgdXBkYXRlcyBp
biAnICsgJ2NvbXBvbmVudERpZFVwZGF0ZS4gQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgJXMu
JywgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCAmJiBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50
LmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IHZvaWQgMDtcblx0XG5c
dCAgICAhaXNWYWxpZENvbnRhaW5lcihjb250YWluZXIpID8gIGZhbHNlID8gaW52YXJpYW50KGZh
bHNlLCAndW5tb3VudENvbXBvbmVudEF0Tm9kZSguLi4pOiBUYXJnZXQgY29udGFpbmVyIGlzIG5v
dCBhIERPTSBlbGVtZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzQwJykgOiB2b2lkIDA7XG5cdFxu
XHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicgPyB3YXJuaW5nKCFub2RlSXNSZW5kZXJlZEJ5T3RoZXJJbnN0YW5jZShjb250YWlu
ZXIpLCBcInVubW91bnRDb21wb25lbnRBdE5vZGUoKTogVGhlIG5vZGUgeW91J3JlIGF0dGVtcHRp
bmcgdG8gdW5tb3VudCBcIiArICd3YXMgcmVuZGVyZWQgYnkgYW5vdGhlciBjb3B5IG9mIFJlYWN0
LicpIDogdm9pZCAwO1xuXHQgICAgfVxuXHRcblx0ICAgIHZhciBwcmV2Q29tcG9uZW50ID0gZ2V0
VG9wTGV2ZWxXcmFwcGVySW5Db250YWluZXIoY29udGFpbmVyKTtcblx0ICAgIGlmICghcHJldkNv
bXBvbmVudCkge1xuXHQgICAgICAvLyBDaGVjayBpZiB0aGUgbm9kZSBiZWluZyB1bm1vdW50ZWQg
d2FzIHJlbmRlcmVkIGJ5IFJlYWN0LCBidXQgaXNuJ3QgYVxuXHQgICAgICAvLyByb290IG5vZGUu
XG5cdCAgICAgIHZhciBjb250YWluZXJIYXNOb25Sb290UmVhY3RDaGlsZCA9IGhhc05vblJvb3RS
ZWFjdENoaWxkKGNvbnRhaW5lcik7XG5cdFxuXHQgICAgICAvLyBDaGVjayBpZiB0aGUgY29udGFp
bmVyIGl0c2VsZiBpcyBhIFJlYWN0IHJvb3Qgbm9kZS5cblx0ICAgICAgdmFyIGlzQ29udGFpbmVy
UmVhY3RSb290ID0gY29udGFpbmVyLm5vZGVUeXBlID09PSAxICYmIGNvbnRhaW5lci5oYXNBdHRy
aWJ1dGUoUk9PVF9BVFRSX05BTUUpO1xuXHRcblx0ICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAg
ICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWNvbnRh
aW5lckhhc05vblJvb3RSZWFjdENoaWxkLCBcInVubW91bnRDb21wb25lbnRBdE5vZGUoKTogVGhl
IG5vZGUgeW91J3JlIGF0dGVtcHRpbmcgdG8gdW5tb3VudCBcIiArICd3YXMgcmVuZGVyZWQgYnkg
UmVhY3QgYW5kIGlzIG5vdCBhIHRvcC1sZXZlbCBjb250YWluZXIuICVzJywgaXNDb250YWluZXJS
ZWFjdFJvb3QgPyAnWW91IG1heSBoYXZlIGFjY2lkZW50YWxseSBwYXNzZWQgaW4gYSBSZWFjdCBy
b290IG5vZGUgaW5zdGVhZCAnICsgJ29mIGl0cyBjb250YWluZXIuJyA6ICdJbnN0ZWFkLCBoYXZl
IHRoZSBwYXJlbnQgY29tcG9uZW50IHVwZGF0ZSBpdHMgc3RhdGUgYW5kICcgKyAncmVyZW5kZXIg
aW4gb3JkZXIgdG8gcmVtb3ZlIHRoaXMgY29tcG9uZW50LicpIDogdm9pZCAwO1xuXHQgICAgICB9
XG5cdFxuXHQgICAgICByZXR1cm4gZmFsc2U7XG5cdCAgICB9XG5cdCAgICBkZWxldGUgaW5zdGFu
Y2VzQnlSZWFjdFJvb3RJRFtwcmV2Q29tcG9uZW50Ll9pbnN0YW5jZS5yb290SURdO1xuXHQgICAg
UmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzKHVubW91bnRDb21wb25lbnRGcm9tTm9kZSwgcHJl
dkNvbXBvbmVudCwgY29udGFpbmVyLCBmYWxzZSk7XG5cdCAgICByZXR1cm4gdHJ1ZTtcblx0ICB9
LFxuXHRcblx0ICBfbW91bnRJbWFnZUludG9Ob2RlOiBmdW5jdGlvbiAobWFya3VwLCBjb250YWlu
ZXIsIGluc3RhbmNlLCBzaG91bGRSZXVzZU1hcmt1cCwgdHJhbnNhY3Rpb24pIHtcblx0ICAgICFp
c1ZhbGlkQ29udGFpbmVyKGNvbnRhaW5lcikgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdt
b3VudENvbXBvbmVudEludG9Ob2RlKC4uLik6IFRhcmdldCBjb250YWluZXIgaXMgbm90IHZhbGlk
LicpIDogX3Byb2RJbnZhcmlhbnQoJzQxJykgOiB2b2lkIDA7XG5cdFxuXHQgICAgaWYgKHNob3Vs
ZFJldXNlTWFya3VwKSB7XG5cdCAgICAgIHZhciByb290RWxlbWVudCA9IGdldFJlYWN0Um9vdEVs
ZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpO1xuXHQgICAgICBpZiAoUmVhY3RNYXJrdXBDaGVj
a3N1bS5jYW5SZXVzZU1hcmt1cChtYXJrdXAsIHJvb3RFbGVtZW50KSkge1xuXHQgICAgICAgIFJl
YWN0RE9NQ29tcG9uZW50VHJlZS5wcmVjYWNoZU5vZGUoaW5zdGFuY2UsIHJvb3RFbGVtZW50KTtc
blx0ICAgICAgICByZXR1cm47XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgdmFyIGNoZWNr
c3VtID0gcm9vdEVsZW1lbnQuZ2V0QXR0cmlidXRlKFJlYWN0TWFya3VwQ2hlY2tzdW0uQ0hFQ0tT
VU1fQVRUUl9OQU1FKTtcblx0ICAgICAgICByb290RWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoUmVh
Y3RNYXJrdXBDaGVja3N1bS5DSEVDS1NVTV9BVFRSX05BTUUpO1xuXHRcblx0ICAgICAgICB2YXIg
cm9vdE1hcmt1cCA9IHJvb3RFbGVtZW50Lm91dGVySFRNTDtcblx0ICAgICAgICByb290RWxlbWVu
dC5zZXRBdHRyaWJ1dGUoUmVhY3RNYXJrdXBDaGVja3N1bS5DSEVDS1NVTV9BVFRSX05BTUUsIGNo
ZWNrc3VtKTtcblx0XG5cdCAgICAgICAgdmFyIG5vcm1hbGl6ZWRNYXJrdXAgPSBtYXJrdXA7XG5c
dCAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICAvLyBiZWNhdXNlIHJvb3RNYXJrdXAg
aXMgcmV0cmlldmVkIGZyb20gdGhlIERPTSwgdmFyaW91cyBub3JtYWxpemF0aW9uc1xuXHQgICAg
ICAgICAgLy8gd2lsbCBoYXZlIG9jY3VycmVkIHdoaWNoIHdpbGwgbm90IGJlIHByZXNlbnQgaW4g
YG1hcmt1cGAuIEhlcmUsXG5cdCAgICAgICAgICAvLyBpbnNlcnQgbWFya3VwIGludG8gYSA8ZGl2
PiBvciA8aWZyYW1lPiBkZXBlbmRpbmcgb24gdGhlIGNvbnRhaW5lclxuXHQgICAgICAgICAgLy8g
dHlwZSB0byBwZXJmb3JtIHRoZSBzYW1lIG5vcm1hbGl6YXRpb25zIGJlZm9yZSBjb21wYXJpbmcu
XG5cdCAgICAgICAgICB2YXIgbm9ybWFsaXplcjtcblx0ICAgICAgICAgIGlmIChjb250YWluZXIu
bm9kZVR5cGUgPT09IEVMRU1FTlRfTk9ERV9UWVBFKSB7XG5cdCAgICAgICAgICAgIG5vcm1hbGl6
ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcblx0ICAgICAgICAgICAgbm9ybWFs
aXplci5pbm5lckhUTUwgPSBtYXJrdXA7XG5cdCAgICAgICAgICAgIG5vcm1hbGl6ZWRNYXJrdXAg
PSBub3JtYWxpemVyLmlubmVySFRNTDtcblx0ICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAg
ICAgIG5vcm1hbGl6ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTtcblx0ICAg
ICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChub3JtYWxpemVyKTtcblx0ICAgICAg
ICAgICAgbm9ybWFsaXplci5jb250ZW50RG9jdW1lbnQud3JpdGUobWFya3VwKTtcblx0ICAgICAg
ICAgICAgbm9ybWFsaXplZE1hcmt1cCA9IG5vcm1hbGl6ZXIuY29udGVudERvY3VtZW50LmRvY3Vt
ZW50RWxlbWVudC5vdXRlckhUTUw7XG5cdCAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3Zl
Q2hpbGQobm9ybWFsaXplcik7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHRcblx0ICAg
ICAgICB2YXIgZGlmZkluZGV4ID0gZmlyc3REaWZmZXJlbmNlSW5kZXgobm9ybWFsaXplZE1hcmt1
cCwgcm9vdE1hcmt1cCk7XG5cdCAgICAgICAgdmFyIGRpZmZlcmVuY2UgPSAnIChjbGllbnQpICcg
KyBub3JtYWxpemVkTWFya3VwLnN1YnN0cmluZyhkaWZmSW5kZXggLSAyMCwgZGlmZkluZGV4ICsg
MjApICsgJ1xcbiAoc2VydmVyKSAnICsgcm9vdE1hcmt1cC5zdWJzdHJpbmcoZGlmZkluZGV4IC0g
MjAsIGRpZmZJbmRleCArIDIwKTtcblx0XG5cdCAgICAgICAgIShjb250YWluZXIubm9kZVR5cGUg
IT09IERPQ19OT0RFX1RZUEUpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnWW91XFwncmUg
dHJ5aW5nIHRvIHJlbmRlciBhIGNvbXBvbmVudCB0byB0aGUgZG9jdW1lbnQgdXNpbmcgc2VydmVy
IHJlbmRlcmluZyBidXQgdGhlIGNoZWNrc3VtIHdhcyBpbnZhbGlkLiBUaGlzIHVzdWFsbHkgbWVh
bnMgeW91IHJlbmRlcmVkIGEgZGlmZmVyZW50IGNvbXBvbmVudCB0eXBlIG9yIHByb3BzIG9uIHRo
ZSBjbGllbnQgZnJvbSB0aGUgb25lIG9uIHRoZSBzZXJ2ZXIsIG9yIHlvdXIgcmVuZGVyKCkgbWV0
aG9kcyBhcmUgaW1wdXJlLiBSZWFjdCBjYW5ub3QgaGFuZGxlIHRoaXMgY2FzZSBkdWUgdG8gY3Jv
c3MtYnJvd3NlciBxdWlya3MgYnkgcmVuZGVyaW5nIGF0IHRoZSBkb2N1bWVudCByb290LiBZb3Ug
c2hvdWxkIGxvb2sgZm9yIGVudmlyb25tZW50IGRlcGVuZGVudCBjb2RlIGluIHlvdXIgY29tcG9u
ZW50cyBhbmQgZW5zdXJlIHRoZSBwcm9wcyBhcmUgdGhlIHNhbWUgY2xpZW50IGFuZCBzZXJ2ZXIg
c2lkZTpcXG4lcycsIGRpZmZlcmVuY2UpIDogX3Byb2RJbnZhcmlhbnQoJzQyJywgZGlmZmVyZW5j
ZSkgOiB2b2lkIDA7XG5cdFxuXHQgICAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgICAgcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdSZWFj
dCBhdHRlbXB0ZWQgdG8gcmV1c2UgbWFya3VwIGluIGEgY29udGFpbmVyIGJ1dCB0aGUgJyArICdj
aGVja3N1bSB3YXMgaW52YWxpZC4gVGhpcyBnZW5lcmFsbHkgbWVhbnMgdGhhdCB5b3UgYXJlICcg
KyAndXNpbmcgc2VydmVyIHJlbmRlcmluZyBhbmQgdGhlIG1hcmt1cCBnZW5lcmF0ZWQgb24gdGhl
ICcgKyAnc2VydmVyIHdhcyBub3Qgd2hhdCB0aGUgY2xpZW50IHdhcyBleHBlY3RpbmcuIFJlYWN0
IGluamVjdGVkICcgKyAnbmV3IG1hcmt1cCB0byBjb21wZW5zYXRlIHdoaWNoIHdvcmtzIGJ1dCB5
b3UgaGF2ZSBsb3N0IG1hbnkgJyArICdvZiB0aGUgYmVuZWZpdHMgb2Ygc2VydmVyIHJlbmRlcmlu
Zy4gSW5zdGVhZCwgZmlndXJlIG91dCAnICsgJ3doeSB0aGUgbWFya3VwIGJlaW5nIGdlbmVyYXRl
ZCBpcyBkaWZmZXJlbnQgb24gdGhlIGNsaWVudCAnICsgJ29yIHNlcnZlcjpcXG4lcycsIGRpZmZl
cmVuY2UpIDogdm9pZCAwO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0
ICAgICEoY29udGFpbmVyLm5vZGVUeXBlICE9PSBET0NfTk9ERV9UWVBFKSA/ICBmYWxzZSA/IGlu
dmFyaWFudChmYWxzZSwgJ1lvdVxcJ3JlIHRyeWluZyB0byByZW5kZXIgYSBjb21wb25lbnQgdG8g
dGhlIGRvY3VtZW50IGJ1dCB5b3UgZGlkblxcJ3QgdXNlIHNlcnZlciByZW5kZXJpbmcuIFdlIGNh
blxcJ3QgZG8gdGhpcyB3aXRob3V0IHVzaW5nIHNlcnZlciByZW5kZXJpbmcgZHVlIHRvIGNyb3Nz
LWJyb3dzZXIgcXVpcmtzLiBTZWUgUmVhY3RET01TZXJ2ZXIucmVuZGVyVG9TdHJpbmcoKSBmb3Ig
c2VydmVyIHJlbmRlcmluZy4nKSA6IF9wcm9kSW52YXJpYW50KCc0MycpIDogdm9pZCAwO1xuXHRc
blx0ICAgIGlmICh0cmFuc2FjdGlvbi51c2VDcmVhdGVFbGVtZW50KSB7XG5cdCAgICAgIHdoaWxl
IChjb250YWluZXIubGFzdENoaWxkKSB7XG5cdCAgICAgICAgY29udGFpbmVyLnJlbW92ZUNoaWxk
KGNvbnRhaW5lci5sYXN0Q2hpbGQpO1xuXHQgICAgICB9XG5cdCAgICAgIERPTUxhenlUcmVlLmlu
c2VydFRyZWVCZWZvcmUoY29udGFpbmVyLCBtYXJrdXAsIG51bGwpO1xuXHQgICAgfSBlbHNlIHtc
blx0ICAgICAgc2V0SW5uZXJIVE1MKGNvbnRhaW5lciwgbWFya3VwKTtcblx0ICAgICAgUmVhY3RE
T01Db21wb25lbnRUcmVlLnByZWNhY2hlTm9kZShpbnN0YW5jZSwgY29udGFpbmVyLmZpcnN0Q2hp
bGQpO1xuXHQgICAgfVxuXHRcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICB2YXIgaG9zdE5v
ZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShjb250YWluZXIu
Zmlyc3RDaGlsZCk7XG5cdCAgICAgIGlmIChob3N0Tm9kZS5fZGVidWdJRCAhPT0gMCkge1xuXHQg
ICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xu
XHQgICAgICAgICAgaW5zdGFuY2VJRDogaG9zdE5vZGUuX2RlYnVnSUQsXG5cdCAgICAgICAgICB0
eXBlOiAnbW91bnQnLFxuXHQgICAgICAgICAgcGF5bG9hZDogbWFya3VwLnRvU3RyaW5nKClcblx0
ICAgICAgICB9KTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVs
ZS5leHBvcnRzID0gUmVhY3RNb3VudDtcblxuLyoqKi8gfSxcbi8qIDY4ICovXG4vKioqLyBmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0
cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogXG5cdCAqL1xuXHRcblx0J3Vz
ZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVf
XygzKTtcblx0XG5cdHZhciBSZWFjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTcpO1xuXHRcblx0
dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdFxuXHR2YXIgUmVhY3RO
b2RlVHlwZXMgPSB7XG5cdCAgSE9TVDogMCxcblx0ICBDT01QT1NJVEU6IDEsXG5cdCAgRU1QVFk6
IDIsXG5cdFxuXHQgIGdldFR5cGU6IGZ1bmN0aW9uIChub2RlKSB7XG5cdCAgICBpZiAobm9kZSA9
PT0gbnVsbCB8fCBub2RlID09PSBmYWxzZSkge1xuXHQgICAgICByZXR1cm4gUmVhY3ROb2RlVHlw
ZXMuRU1QVFk7XG5cdCAgICB9IGVsc2UgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KG5vZGUpKSB7
XG5cdCAgICAgIGlmICh0eXBlb2Ygbm9kZS50eXBlID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAg
ICAgcmV0dXJuIFJlYWN0Tm9kZVR5cGVzLkNPTVBPU0lURTtcblx0ICAgICAgfSBlbHNlIHtcblx0
ICAgICAgICByZXR1cm4gUmVhY3ROb2RlVHlwZXMuSE9TVDtcblx0ICAgICAgfVxuXHQgICAgfVxu
XHQgICAgIHRydWUgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdVbmV4cGVjdGVkIG5vZGU6
ICVzJywgbm9kZSkgOiBfcHJvZEludmFyaWFudCgnMjYnLCBub2RlKSA6IHZvaWQgMDtcblx0ICB9
XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0Tm9kZVR5cGVzO1xuXG4vKioqLyB9
LFxuLyogNjkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxu
XHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdHZhciBWaWV3cG9ydE1ldHJpY3MgPSB7XG5cdCAgY3VycmVudFNjcm9sbExl
ZnQ6IDAsXG5cdFxuXHQgIGN1cnJlbnRTY3JvbGxUb3A6IDAsXG5cdFxuXHQgIHJlZnJlc2hTY3Jv
bGxWYWx1ZXM6IGZ1bmN0aW9uIChzY3JvbGxQb3NpdGlvbikge1xuXHQgICAgVmlld3BvcnRNZXRy
aWNzLmN1cnJlbnRTY3JvbGxMZWZ0ID0gc2Nyb2xsUG9zaXRpb24ueDtcblx0ICAgIFZpZXdwb3J0
TWV0cmljcy5jdXJyZW50U2Nyb2xsVG9wID0gc2Nyb2xsUG9zaXRpb24ueTtcblx0ICB9XG5cdH07
XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFZpZXdwb3J0TWV0cmljcztcblxuLyoqKi8gfSxcbi8q
IDcwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJl
X18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5c
dCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICog
XG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52YXJpYW50ID0g
X193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblx0XG5cdHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDEpO1xuXHRcblx0LyoqXG5cdCAqIEFjY3VtdWxhdGVzIGl0ZW1zIHRoYXQgbXVz
dCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQgaW50byB0aGUgZmlyc3Qgb25lLiBUaGlzXG5cdCAq
IGlzIHVzZWQgdG8gY29uc2VydmUgbWVtb3J5IGJ5IGF2b2lkaW5nIGFycmF5IGFsbG9jYXRpb25z
LCBhbmQgdGh1cyBzYWNyaWZpY2VzXG5cdCAqIEFQSSBjbGVhbm5lc3MuIFNpbmNlIGBjdXJyZW50
YCBjYW4gYmUgbnVsbCBiZWZvcmUgYmVpbmcgcGFzc2VkIGluIGFuZCBub3Rcblx0ICogbnVsbCBh
ZnRlciB0aGlzIGZ1bmN0aW9uLCBtYWtlIHN1cmUgdG8gYXNzaWduIGl0IGJhY2sgdG8gYGN1cnJl
bnRgOlxuXHQgKlxuXHQgKiBgYSA9IGFjY3VtdWxhdGVJbnRvKGEsIGIpO2Bcblx0ICpcblx0ICog
VGhpcyBBUEkgc2hvdWxkIGJlIHNwYXJpbmdseSB1c2VkLiBUcnkgYGFjY3VtdWxhdGVgIGZvciBz
b21ldGhpbmcgY2xlYW5lci5cblx0ICpcblx0ICogQHJldHVybiB7KnxhcnJheTwqPn0gQW4gYWNj
dW11bGF0aW9uIG9mIGl0ZW1zLlxuXHQgKi9cblx0XG5cdGZ1bmN0aW9uIGFjY3VtdWxhdGVJbnRv
KGN1cnJlbnQsIG5leHQpIHtcblx0ICAhKG5leHQgIT0gbnVsbCkgPyAgZmFsc2UgPyBpbnZhcmlh
bnQoZmFsc2UsICdhY2N1bXVsYXRlSW50byguLi4pOiBBY2N1bXVsYXRlZCBpdGVtcyBtdXN0IG5v
dCBiZSBudWxsIG9yIHVuZGVmaW5lZC4nKSA6IF9wcm9kSW52YXJpYW50KCczMCcpIDogdm9pZCAw
O1xuXHRcblx0ICBpZiAoY3VycmVudCA9PSBudWxsKSB7XG5cdCAgICByZXR1cm4gbmV4dDtcblx0
ICB9XG5cdFxuXHQgIC8vIEJvdGggYXJlIG5vdCBlbXB0eS4gV2FybmluZzogTmV2ZXIgY2FsbCB4
LmNvbmNhdCh5KSB3aGVuIHlvdSBhcmUgbm90XG5cdCAgLy8gY2VydGFpbiB0aGF0IHggaXMgYW4g
QXJyYXkgKHggY291bGQgYmUgYSBzdHJpbmcgd2l0aCBjb25jYXQgbWV0aG9kKS5cblx0ICBpZiAo
QXJyYXkuaXNBcnJheShjdXJyZW50KSkge1xuXHQgICAgaWYgKEFycmF5LmlzQXJyYXkobmV4dCkp
IHtcblx0ICAgICAgY3VycmVudC5wdXNoLmFwcGx5KGN1cnJlbnQsIG5leHQpO1xuXHQgICAgICBy
ZXR1cm4gY3VycmVudDtcblx0ICAgIH1cblx0ICAgIGN1cnJlbnQucHVzaChuZXh0KTtcblx0ICAg
IHJldHVybiBjdXJyZW50O1xuXHQgIH1cblx0XG5cdCAgaWYgKEFycmF5LmlzQXJyYXkobmV4dCkp
IHtcblx0ICAgIC8vIEEgYml0IHRvbyBkYW5nZXJvdXMgdG8gbXV0YXRlIGBuZXh0YC5cblx0ICAg
IHJldHVybiBbY3VycmVudF0uY29uY2F0KG5leHQpO1xuXHQgIH1cblx0XG5cdCAgcmV0dXJuIFtj
dXJyZW50LCBuZXh0XTtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBhY2N1bXVsYXRlSW50
bztcblxuLyoqKi8gfSxcbi8qIDcxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMp
IHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5c
blx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogXG5c
dCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7YXJyYXl9
IGFyciBhbiBcImFjY3VtdWxhdGlvblwiIG9mIGl0ZW1zIHdoaWNoIGlzIGVpdGhlciBhbiBBcnJh
eSBvclxuXHQgKiBhIHNpbmdsZSBpdGVtLiBVc2VmdWwgd2hlbiBwYWlyZWQgd2l0aCB0aGUgYGFj
Y3VtdWxhdGVgIG1vZHVsZS4gVGhpcyBpcyBhXG5cdCAqIHNpbXBsZSB1dGlsaXR5IHRoYXQgYWxs
b3dzIHVzIHRvIHJlYXNvbiBhYm91dCBhIGNvbGxlY3Rpb24gb2YgaXRlbXMsIGJ1dFxuXHQgKiBo
YW5kbGluZyB0aGUgY2FzZSB3aGVuIHRoZXJlIGlzIGV4YWN0bHkgb25lIGl0ZW0gKGFuZCB3ZSBk
byBub3QgbmVlZCB0b1xuXHQgKiBhbGxvY2F0ZSBhbiBhcnJheSkuXG5cdCAqL1xuXHRcblx0ZnVu
Y3Rpb24gZm9yRWFjaEFjY3VtdWxhdGVkKGFyciwgY2IsIHNjb3BlKSB7XG5cdCAgaWYgKEFycmF5
LmlzQXJyYXkoYXJyKSkge1xuXHQgICAgYXJyLmZvckVhY2goY2IsIHNjb3BlKTtcblx0ICB9IGVs
c2UgaWYgKGFycikge1xuXHQgICAgY2IuY2FsbChzY29wZSwgYXJyKTtcblx0ICB9XG5cdH1cblx0
XG5cdG1vZHVsZS5leHBvcnRzID0gZm9yRWFjaEFjY3VtdWxhdGVkO1xuXG4vKioqLyB9LFxuLyog
NzIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
Xykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9c
blx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBSZWFjdE5vZGVUeXBlcyA9IF9fd2VicGFj
a19yZXF1aXJlX18oNjgpO1xuXHRcblx0ZnVuY3Rpb24gZ2V0SG9zdENvbXBvbmVudEZyb21Db21w
b3NpdGUoaW5zdCkge1xuXHQgIHZhciB0eXBlO1xuXHRcblx0ICB3aGlsZSAoKHR5cGUgPSBpbnN0
Ll9yZW5kZXJlZE5vZGVUeXBlKSA9PT0gUmVhY3ROb2RlVHlwZXMuQ09NUE9TSVRFKSB7XG5cdCAg
ICBpbnN0ID0gaW5zdC5fcmVuZGVyZWRDb21wb25lbnQ7XG5cdCAgfVxuXHRcblx0ICBpZiAodHlw
ZSA9PT0gUmVhY3ROb2RlVHlwZXMuSE9TVCkge1xuXHQgICAgcmV0dXJuIGluc3QuX3JlbmRlcmVk
Q29tcG9uZW50O1xuXHQgIH0gZWxzZSBpZiAodHlwZSA9PT0gUmVhY3ROb2RlVHlwZXMuRU1QVFkp
IHtcblx0ICAgIHJldHVybiBudWxsO1xuXHQgIH1cblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMg
PSBnZXRIb3N0Q29tcG9uZW50RnJvbUNvbXBvc2l0ZTtcblxuLyoqKi8gfSxcbi8qIDczICovXG4v
KioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxu
XHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICog
QWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQn
dXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDYpO1xuXHRcblx0dmFyIGNvbnRlbnRLZXkgPSBudWxsO1xuXHRcblx0LyoqXG5c
dCAqIEdldHMgdGhlIGtleSB1c2VkIHRvIGFjY2VzcyB0ZXh0IGNvbnRlbnQgb24gYSBET00gbm9k
ZS5cblx0ICpcblx0ICogQHJldHVybiB7P3N0cmluZ30gS2V5IHVzZWQgdG8gYWNjZXNzIHRleHQg
Y29udGVudC5cblx0ICogQGludGVybmFsXG5cdCAqL1xuXHRmdW5jdGlvbiBnZXRUZXh0Q29udGVu
dEFjY2Vzc29yKCkge1xuXHQgIGlmICghY29udGVudEtleSAmJiBFeGVjdXRpb25FbnZpcm9ubWVu
dC5jYW5Vc2VET00pIHtcblx0ICAgIC8vIFByZWZlciB0ZXh0Q29udGVudCB0byBpbm5lclRleHQg
YmVjYXVzZSBtYW55IGJyb3dzZXJzIHN1cHBvcnQgYm90aCBidXRcblx0ICAgIC8vIFNWRyA8dGV4
dD4gZWxlbWVudHMgZG9uJ3Qgc3VwcG9ydCBpbm5lclRleHQgZXZlbiB3aGVuIDxkaXY+IGRvZXMu
XG5cdCAgICBjb250ZW50S2V5ID0gJ3RleHRDb250ZW50JyBpbiBkb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQgPyAndGV4dENvbnRlbnQnIDogJ2lubmVyVGV4dCc7XG5cdCAgfVxuXHQgIHJldHVybiBj
b250ZW50S2V5O1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGdldFRleHRDb250ZW50QWNj
ZXNzb3I7XG5cbi8qKiovIH0sXG4vKiA3NCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAq
XG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIFJl
YWN0RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG5cdFxuXHRmdW5j
dGlvbiBpc0NoZWNrYWJsZShlbGVtKSB7XG5cdCAgdmFyIHR5cGUgPSBlbGVtLnR5cGU7XG5cdCAg
dmFyIG5vZGVOYW1lID0gZWxlbS5ub2RlTmFtZTtcblx0ICByZXR1cm4gbm9kZU5hbWUgJiYgbm9k
ZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2lucHV0JyAmJiAodHlwZSA9PT0gJ2NoZWNrYm94JyB8
fCB0eXBlID09PSAncmFkaW8nKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gZ2V0VHJhY2tlcihpbnN0
KSB7XG5cdCAgcmV0dXJuIGluc3QuX3dyYXBwZXJTdGF0ZS52YWx1ZVRyYWNrZXI7XG5cdH1cblx0
XG5cdGZ1bmN0aW9uIGF0dGFjaFRyYWNrZXIoaW5zdCwgdHJhY2tlcikge1xuXHQgIGluc3QuX3dy
YXBwZXJTdGF0ZS52YWx1ZVRyYWNrZXIgPSB0cmFja2VyO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBk
ZXRhY2hUcmFja2VyKGluc3QpIHtcblx0ICBkZWxldGUgaW5zdC5fd3JhcHBlclN0YXRlLnZhbHVl
VHJhY2tlcjtcblx0fVxuXHRcblx0ZnVuY3Rpb24gZ2V0VmFsdWVGcm9tTm9kZShub2RlKSB7XG5c
dCAgdmFyIHZhbHVlO1xuXHQgIGlmIChub2RlKSB7XG5cdCAgICB2YWx1ZSA9IGlzQ2hlY2thYmxl
KG5vZGUpID8gJycgKyBub2RlLmNoZWNrZWQgOiBub2RlLnZhbHVlO1xuXHQgIH1cblx0ICByZXR1
cm4gdmFsdWU7XG5cdH1cblx0XG5cdHZhciBpbnB1dFZhbHVlVHJhY2tpbmcgPSB7XG5cdCAgLy8g
ZXhwb3NlZCBmb3IgdGVzdGluZ1xuXHQgIF9nZXRUcmFja2VyRnJvbU5vZGU6IGZ1bmN0aW9uIChu
b2RlKSB7XG5cdCAgICByZXR1cm4gZ2V0VHJhY2tlcihSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0
SW5zdGFuY2VGcm9tTm9kZShub2RlKSk7XG5cdCAgfSxcblx0XG5cdFxuXHQgIHRyYWNrOiBmdW5j
dGlvbiAoaW5zdCkge1xuXHQgICAgaWYgKGdldFRyYWNrZXIoaW5zdCkpIHtcblx0ICAgICAgcmV0
dXJuO1xuXHQgICAgfVxuXHRcblx0ICAgIHZhciBub2RlID0gUmVhY3RET01Db21wb25lbnRUcmVl
LmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7XG5cdCAgICB2YXIgdmFsdWVGaWVsZCA9IGlzQ2hl
Y2thYmxlKG5vZGUpID8gJ2NoZWNrZWQnIDogJ3ZhbHVlJztcblx0ICAgIHZhciBkZXNjcmlwdG9y
ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihub2RlLmNvbnN0cnVjdG9yLnByb3Rv
dHlwZSwgdmFsdWVGaWVsZCk7XG5cdFxuXHQgICAgdmFyIGN1cnJlbnRWYWx1ZSA9ICcnICsgbm9k
ZVt2YWx1ZUZpZWxkXTtcblx0XG5cdCAgICAvLyBpZiBzb21lb25lIGhhcyBhbHJlYWR5IGRlZmlu
ZWQgYSB2YWx1ZSBvciBTYWZhcmksIHRoZW4gYmFpbFxuXHQgICAgLy8gYW5kIGRvbid0IHRyYWNr
IHZhbHVlIHdpbGwgY2F1c2Ugb3ZlciByZXBvcnRpbmcgb2YgY2hhbmdlcyxcblx0ICAgIC8vIGJ1
dCBpdCdzIGJldHRlciB0aGVuIGEgaGFyZCBmYWlsdXJlXG5cdCAgICAvLyAobmVlZGVkIGZvciBj
ZXJ0YWluIHRlc3RzIHRoYXQgc3B5T24gaW5wdXQgdmFsdWVzIGFuZCBTYWZhcmkpXG5cdCAgICBp
ZiAobm9kZS5oYXNPd25Qcm9wZXJ0eSh2YWx1ZUZpZWxkKSB8fCB0eXBlb2YgZGVzY3JpcHRvci5n
ZXQgIT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIGRlc2NyaXB0b3Iuc2V0ICE9PSAnZnVuY3Rpb24n
KSB7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0XG5cdCAgICBPYmplY3QuZGVmaW5lUHJv
cGVydHkobm9kZSwgdmFsdWVGaWVsZCwge1xuXHQgICAgICBlbnVtZXJhYmxlOiBkZXNjcmlwdG9y
LmVudW1lcmFibGUsXG5cdCAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblx0ICAgICAgZ2V0OiBm
dW5jdGlvbiAoKSB7XG5cdCAgICAgICAgcmV0dXJuIGRlc2NyaXB0b3IuZ2V0LmNhbGwodGhpcyk7
XG5cdCAgICAgIH0sXG5cdCAgICAgIHNldDogZnVuY3Rpb24gKHZhbHVlKSB7XG5cdCAgICAgICAg
Y3VycmVudFZhbHVlID0gJycgKyB2YWx1ZTtcblx0ICAgICAgICBkZXNjcmlwdG9yLnNldC5jYWxs
KHRoaXMsIHZhbHVlKTtcblx0ICAgICAgfVxuXHQgICAgfSk7XG5cdFxuXHQgICAgYXR0YWNoVHJh
Y2tlcihpbnN0LCB7XG5cdCAgICAgIGdldFZhbHVlOiBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAg
cmV0dXJuIGN1cnJlbnRWYWx1ZTtcblx0ICAgICAgfSxcblx0ICAgICAgc2V0VmFsdWU6IGZ1bmN0
aW9uICh2YWx1ZSkge1xuXHQgICAgICAgIGN1cnJlbnRWYWx1ZSA9ICcnICsgdmFsdWU7XG5cdCAg
ICAgIH0sXG5cdCAgICAgIHN0b3BUcmFja2luZzogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIGRl
dGFjaFRyYWNrZXIoaW5zdCk7XG5cdCAgICAgICAgZGVsZXRlIG5vZGVbdmFsdWVGaWVsZF07XG5c
dCAgICAgIH1cblx0ICAgIH0pO1xuXHQgIH0sXG5cdFxuXHQgIHVwZGF0ZVZhbHVlSWZDaGFuZ2Vk
OiBmdW5jdGlvbiAoaW5zdCkge1xuXHQgICAgaWYgKCFpbnN0KSB7XG5cdCAgICAgIHJldHVybiBm
YWxzZTtcblx0ICAgIH1cblx0ICAgIHZhciB0cmFja2VyID0gZ2V0VHJhY2tlcihpbnN0KTtcblx0
XG5cdCAgICBpZiAoIXRyYWNrZXIpIHtcblx0ICAgICAgaW5wdXRWYWx1ZVRyYWNraW5nLnRyYWNr
KGluc3QpO1xuXHQgICAgICByZXR1cm4gdHJ1ZTtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgbGFz
dFZhbHVlID0gdHJhY2tlci5nZXRWYWx1ZSgpO1xuXHQgICAgdmFyIG5leHRWYWx1ZSA9IGdldFZh
bHVlRnJvbU5vZGUoUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5z
dCkpO1xuXHRcblx0ICAgIGlmIChuZXh0VmFsdWUgIT09IGxhc3RWYWx1ZSkge1xuXHQgICAgICB0
cmFja2VyLnNldFZhbHVlKG5leHRWYWx1ZSk7XG5cdCAgICAgIHJldHVybiB0cnVlO1xuXHQgICAg
fVxuXHRcblx0ICAgIHJldHVybiBmYWxzZTtcblx0ICB9LFxuXHQgIHN0b3BUcmFja2luZzogZnVu
Y3Rpb24gKGluc3QpIHtcblx0ICAgIHZhciB0cmFja2VyID0gZ2V0VHJhY2tlcihpbnN0KTtcblx0
ICAgIGlmICh0cmFja2VyKSB7XG5cdCAgICAgIHRyYWNrZXIuc3RvcFRyYWNraW5nKCk7XG5cdCAg
ICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBpbnB1dFZhbHVlVHJhY2tp
bmc7XG5cbi8qKiovIH0sXG4vKiA3NSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRz
LCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5c
dCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9k
SW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKSxcblx0ICAgIF9hc3NpZ24gPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRcblx0dmFyIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50ID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxMzYpO1xuXHR2YXIgUmVhY3RFbXB0eUNvbXBvbmVudCA9IF9f
d2VicGFja19yZXF1aXJlX18oNjMpO1xuXHR2YXIgUmVhY3RIb3N0Q29tcG9uZW50ID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg2NSk7XG5cdFxuXHR2YXIgZ2V0TmV4dERlYnVnSUQgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDIyMSk7XG5cdHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEp
O1xuXHR2YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cdFxuXHQvLyBUbyBh
dm9pZCBhIGN5Y2xpYyBkZXBlbmRlbmN5LCB3ZSBjcmVhdGUgdGhlIGZpbmFsIGNsYXNzIGluIHRo
aXMgbW9kdWxlXG5cdHZhciBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudFdyYXBwZXIgPSBmdW5jdGlv
biAoZWxlbWVudCkge1xuXHQgIHRoaXMuY29uc3RydWN0KGVsZW1lbnQpO1xuXHR9O1xuXHRcblx0
ZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKSB7XG5cdCAgaWYgKG93
bmVyKSB7XG5cdCAgICB2YXIgbmFtZSA9IG93bmVyLmdldE5hbWUoKTtcblx0ICAgIGlmIChuYW1l
KSB7XG5cdCAgICAgIHJldHVybiAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFt
ZSArICdgLic7XG5cdCAgICB9XG5cdCAgfVxuXHQgIHJldHVybiAnJztcblx0fVxuXHRcblx0Lyoq
XG5cdCAqIENoZWNrIGlmIHRoZSB0eXBlIHJlZmVyZW5jZSBpcyBhIGtub3duIGludGVybmFsIHR5
cGUuIEkuZS4gbm90IGEgdXNlclxuXHQgKiBwcm92aWRlZCBjb21wb3NpdGUgdHlwZS5cblx0ICpc
blx0ICogQHBhcmFtIHtmdW5jdGlvbn0gdHlwZVxuXHQgKiBAcmV0dXJuIHtib29sZWFufSBSZXR1
cm5zIHRydWUgaWYgdGhpcyBpcyBhIHZhbGlkIGludGVybmFsIHR5cGUuXG5cdCAqL1xuXHRmdW5j
dGlvbiBpc0ludGVybmFsQ29tcG9uZW50VHlwZSh0eXBlKSB7XG5cdCAgcmV0dXJuIHR5cGVvZiB0
eXBlID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB0eXBlLnByb3RvdHlwZSAhPT0gJ3VuZGVmaW5l
ZCcgJiYgdHlwZW9mIHR5cGUucHJvdG90eXBlLm1vdW50Q29tcG9uZW50ID09PSAnZnVuY3Rpb24n
ICYmIHR5cGVvZiB0eXBlLnByb3RvdHlwZS5yZWNlaXZlQ29tcG9uZW50ID09PSAnZnVuY3Rpb24n
O1xuXHR9XG5cdFxuXHQvKipcblx0ICogR2l2ZW4gYSBSZWFjdE5vZGUsIGNyZWF0ZSBhbiBpbnN0
YW5jZSB0aGF0IHdpbGwgYWN0dWFsbHkgYmUgbW91bnRlZC5cblx0ICpcblx0ICogQHBhcmFtIHtS
ZWFjdE5vZGV9IG5vZGVcblx0ICogQHBhcmFtIHtib29sZWFufSBzaG91bGRIYXZlRGVidWdJRFxu
XHQgKiBAcmV0dXJuIHtvYmplY3R9IEEgbmV3IGluc3RhbmNlIG9mIHRoZSBlbGVtZW50J3MgY29u
c3RydWN0b3IuXG5cdCAqIEBwcm90ZWN0ZWRcblx0ICovXG5cdGZ1bmN0aW9uIGluc3RhbnRpYXRl
UmVhY3RDb21wb25lbnQobm9kZSwgc2hvdWxkSGF2ZURlYnVnSUQpIHtcblx0ICB2YXIgaW5zdGFu
Y2U7XG5cdFxuXHQgIGlmIChub2RlID09PSBudWxsIHx8IG5vZGUgPT09IGZhbHNlKSB7XG5cdCAg
ICBpbnN0YW5jZSA9IFJlYWN0RW1wdHlDb21wb25lbnQuY3JlYXRlKGluc3RhbnRpYXRlUmVhY3RD
b21wb25lbnQpO1xuXHQgIH0gZWxzZSBpZiAodHlwZW9mIG5vZGUgPT09ICdvYmplY3QnKSB7XG5c
dCAgICB2YXIgZWxlbWVudCA9IG5vZGU7XG5cdCAgICB2YXIgdHlwZSA9IGVsZW1lbnQudHlwZTtc
blx0ICAgIGlmICh0eXBlb2YgdHlwZSAhPT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgdHlwZSAhPT0g
J3N0cmluZycpIHtcblx0ICAgICAgdmFyIGluZm8gPSAnJztcblx0ICAgICAgaWYgKGZhbHNlKSB7
XG5cdCAgICAgICAgaWYgKHR5cGUgPT09IHVuZGVmaW5lZCB8fCB0eXBlb2YgdHlwZSA9PT0gJ29i
amVjdCcgJiYgdHlwZSAhPT0gbnVsbCAmJiBPYmplY3Qua2V5cyh0eXBlKS5sZW5ndGggPT09IDAp
IHtcblx0ICAgICAgICAgIGluZm8gKz0gJyBZb3UgbGlrZWx5IGZvcmdvdCB0byBleHBvcnQgeW91
ciBjb21wb25lbnQgZnJvbSB0aGUgZmlsZSAnICsgXCJpdCdzIGRlZmluZWQgaW4uXCI7XG5cdCAg
ICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAgIGluZm8gKz0gZ2V0RGVjbGFyYXRpb25FcnJvckFk
ZGVuZHVtKGVsZW1lbnQuX293bmVyKTtcblx0ICAgICAgIHRydWUgPyAgZmFsc2UgPyBpbnZhcmlh
bnQoZmFsc2UsICdFbGVtZW50IHR5cGUgaXMgaW52YWxpZDogZXhwZWN0ZWQgYSBzdHJpbmcgKGZv
ciBidWlsdC1pbiBjb21wb25lbnRzKSBvciBhIGNsYXNzL2Z1bmN0aW9uIChmb3IgY29tcG9zaXRl
IGNvbXBvbmVudHMpIGJ1dCBnb3Q6ICVzLiVzJywgdHlwZSA9PSBudWxsID8gdHlwZSA6IHR5cGVv
ZiB0eXBlLCBpbmZvKSA6IF9wcm9kSW52YXJpYW50KCcxMzAnLCB0eXBlID09IG51bGwgPyB0eXBl
IDogdHlwZW9mIHR5cGUsIGluZm8pIDogdm9pZCAwO1xuXHQgICAgfVxuXHRcblx0ICAgIC8vIFNw
ZWNpYWwgY2FzZSBzdHJpbmcgdmFsdWVzXG5cdCAgICBpZiAodHlwZW9mIGVsZW1lbnQudHlwZSA9
PT0gJ3N0cmluZycpIHtcblx0ICAgICAgaW5zdGFuY2UgPSBSZWFjdEhvc3RDb21wb25lbnQuY3Jl
YXRlSW50ZXJuYWxDb21wb25lbnQoZWxlbWVudCk7XG5cdCAgICB9IGVsc2UgaWYgKGlzSW50ZXJu
YWxDb21wb25lbnRUeXBlKGVsZW1lbnQudHlwZSkpIHtcblx0ICAgICAgLy8gVGhpcyBpcyB0ZW1w
b3JhcmlseSBhdmFpbGFibGUgZm9yIGN1c3RvbSBjb21wb25lbnRzIHRoYXQgYXJlIG5vdCBzdHJp
bmdcblx0ICAgICAgLy8gcmVwcmVzZW50YXRpb25zLiBJLmUuIEFSVC4gT25jZSB0aG9zZSBhcmUg
dXBkYXRlZCB0byB1c2UgdGhlIHN0cmluZ1xuXHQgICAgICAvLyByZXByZXNlbnRhdGlvbiwgd2Ug
Y2FuIGRyb3AgdGhpcyBjb2RlIHBhdGguXG5cdCAgICAgIGluc3RhbmNlID0gbmV3IGVsZW1lbnQu
dHlwZShlbGVtZW50KTtcblx0XG5cdCAgICAgIC8vIFdlIHJlbmFtZWQgdGhpcy4gQWxsb3cgdGhl
IG9sZCBuYW1lIGZvciBjb21wYXQuIDooXG5cdCAgICAgIGlmICghaW5zdGFuY2UuZ2V0SG9zdE5v
ZGUpIHtcblx0ICAgICAgICBpbnN0YW5jZS5nZXRIb3N0Tm9kZSA9IGluc3RhbmNlLmdldE5hdGl2
ZU5vZGU7XG5cdCAgICAgIH1cblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIGluc3RhbmNlID0gbmV3
IFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50V3JhcHBlcihlbGVtZW50KTtcblx0ICAgIH1cblx0ICB9
IGVsc2UgaWYgKHR5cGVvZiBub2RlID09PSAnc3RyaW5nJyB8fCB0eXBlb2Ygbm9kZSA9PT0gJ251
bWJlcicpIHtcblx0ICAgIGluc3RhbmNlID0gUmVhY3RIb3N0Q29tcG9uZW50LmNyZWF0ZUluc3Rh
bmNlRm9yVGV4dChub2RlKTtcblx0ICB9IGVsc2Uge1xuXHQgICAgIHRydWUgPyAgZmFsc2UgPyBp
bnZhcmlhbnQoZmFsc2UsICdFbmNvdW50ZXJlZCBpbnZhbGlkIFJlYWN0IG5vZGUgb2YgdHlwZSAl
cycsIHR5cGVvZiBub2RlKSA6IF9wcm9kSW52YXJpYW50KCcxMzEnLCB0eXBlb2Ygbm9kZSkgOiB2
b2lkIDA7XG5cdCAgfVxuXHRcblx0ICBpZiAoZmFsc2UpIHtcblx0ICAgIHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHR5cGVvZiBpbnN0YW5jZS5tb3VudENv
bXBvbmVudCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgaW5zdGFuY2UucmVjZWl2ZUNvbXBvbmVu
dCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgaW5zdGFuY2UuZ2V0SG9zdE5vZGUgPT09ICdmdW5j
dGlvbicgJiYgdHlwZW9mIGluc3RhbmNlLnVubW91bnRDb21wb25lbnQgPT09ICdmdW5jdGlvbics
ICdPbmx5IFJlYWN0IENvbXBvbmVudHMgY2FuIGJlIG1vdW50ZWQuJykgOiB2b2lkIDA7XG5cdCAg
fVxuXHRcblx0ICAvLyBUaGVzZSB0d28gZmllbGRzIGFyZSB1c2VkIGJ5IHRoZSBET00gYW5kIEFS
VCBkaWZmaW5nIGFsZ29yaXRobXNcblx0ICAvLyByZXNwZWN0aXZlbHkuIEluc3RlYWQgb2YgdXNp
bmcgZXhwYW5kb3Mgb24gY29tcG9uZW50cywgd2Ugc2hvdWxkIGJlXG5cdCAgLy8gc3RvcmluZyB0
aGUgc3RhdGUgbmVlZGVkIGJ5IHRoZSBkaWZmaW5nIGFsZ29yaXRobXMgZWxzZXdoZXJlLlxuXHQg
IGluc3RhbmNlLl9tb3VudEluZGV4ID0gMDtcblx0ICBpbnN0YW5jZS5fbW91bnRJbWFnZSA9IG51
bGw7XG5cdFxuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgaW5zdGFuY2UuX2RlYnVnSUQgPSBzaG91
bGRIYXZlRGVidWdJRCA/IGdldE5leHREZWJ1Z0lEKCkgOiAwO1xuXHQgIH1cblx0XG5cdCAgLy8g
SW50ZXJuYWwgaW5zdGFuY2VzIHNob3VsZCBmdWxseSBjb25zdHJ1Y3RlZCBhdCB0aGlzIHBvaW50
LCBzbyB0aGV5IHNob3VsZFxuXHQgIC8vIG5vdCBnZXQgYW55IG5ldyBmaWVsZHMgYWRkZWQgdG8g
dGhlbSBhdCB0aGlzIHBvaW50LlxuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgaWYgKE9iamVjdC5w
cmV2ZW50RXh0ZW5zaW9ucykge1xuXHQgICAgICBPYmplY3QucHJldmVudEV4dGVuc2lvbnMoaW5z
dGFuY2UpO1xuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAgcmV0dXJuIGluc3RhbmNlO1xuXHR9XG5c
dFxuXHRfYXNzaWduKFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50V3JhcHBlci5wcm90b3R5cGUsIFJl
YWN0Q29tcG9zaXRlQ29tcG9uZW50LCB7XG5cdCAgX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQ6
IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnRcblx0fSk7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9
IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQ7XG5cbi8qKiovIH0sXG4vKiA3NiAqL1xuLyoqKi8g
ZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAq
XG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5c
dC8qKlxuXHQgKiBAc2VlIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJy
ZW50LXdvcmsvbXVsdGlwYWdlL3RoZS1pbnB1dC1lbGVtZW50Lmh0bWwjaW5wdXQtdHlwZS1hdHRy
LXN1bW1hcnlcblx0ICovXG5cdFxuXHR2YXIgc3VwcG9ydGVkSW5wdXRUeXBlcyA9IHtcblx0ICBj
b2xvcjogdHJ1ZSxcblx0ICBkYXRlOiB0cnVlLFxuXHQgIGRhdGV0aW1lOiB0cnVlLFxuXHQgICdk
YXRldGltZS1sb2NhbCc6IHRydWUsXG5cdCAgZW1haWw6IHRydWUsXG5cdCAgbW9udGg6IHRydWUs
XG5cdCAgbnVtYmVyOiB0cnVlLFxuXHQgIHBhc3N3b3JkOiB0cnVlLFxuXHQgIHJhbmdlOiB0cnVl
LFxuXHQgIHNlYXJjaDogdHJ1ZSxcblx0ICB0ZWw6IHRydWUsXG5cdCAgdGV4dDogdHJ1ZSxcblx0
ICB0aW1lOiB0cnVlLFxuXHQgIHVybDogdHJ1ZSxcblx0ICB3ZWVrOiB0cnVlXG5cdH07XG5cdFxu
XHRmdW5jdGlvbiBpc1RleHRJbnB1dEVsZW1lbnQoZWxlbSkge1xuXHQgIHZhciBub2RlTmFtZSA9
IGVsZW0gJiYgZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5c
dFxuXHQgIGlmIChub2RlTmFtZSA9PT0gJ2lucHV0Jykge1xuXHQgICAgcmV0dXJuICEhc3VwcG9y
dGVkSW5wdXRUeXBlc1tlbGVtLnR5cGVdO1xuXHQgIH1cblx0XG5cdCAgaWYgKG5vZGVOYW1lID09
PSAndGV4dGFyZWEnKSB7XG5cdCAgICByZXR1cm4gdHJ1ZTtcblx0ICB9XG5cdFxuXHQgIHJldHVy
biBmYWxzZTtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBpc1RleHRJbnB1dEVsZW1lbnQ7
XG5cbi8qKiovIH0sXG4vKiA3NyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBf
X3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIEV4ZWN1dGlv
bkVudmlyb25tZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTtcblx0dmFyIGVzY2FwZVRleHRD
b250ZW50Rm9yQnJvd3NlciA9IF9fd2VicGFja19yZXF1aXJlX18oMjgpO1xuXHR2YXIgc2V0SW5u
ZXJIVE1MID0gX193ZWJwYWNrX3JlcXVpcmVfXygyOSk7XG5cdFxuXHQvKipcblx0ICogU2V0IHRo
ZSB0ZXh0Q29udGVudCBwcm9wZXJ0eSBvZiBhIG5vZGUsIGVuc3VyaW5nIHRoYXQgd2hpdGVzcGFj
ZSBpcyBwcmVzZXJ2ZWRcblx0ICogZXZlbiBpbiBJRTguIGlubmVyVGV4dCBpcyBhIHBvb3Igc3Vi
c3RpdHV0ZSBmb3IgdGV4dENvbnRlbnQgYW5kLCBhbW9uZyBtYW55XG5cdCAqIGlzc3VlcywgaW5z
ZXJ0cyA8YnI+IGluc3RlYWQgb2YgdGhlIGxpdGVyYWwgbmV3bGluZSBjaGFycy4gaW5uZXJIVE1M
IGJlaGF2ZXNcblx0ICogYXMgaXQgc2hvdWxkLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0RPTUVsZW1l
bnR9IG5vZGVcblx0ICogQHBhcmFtIHtzdHJpbmd9IHRleHRcblx0ICogQGludGVybmFsXG5cdCAq
L1xuXHR2YXIgc2V0VGV4dENvbnRlbnQgPSBmdW5jdGlvbiAobm9kZSwgdGV4dCkge1xuXHQgIGlm
ICh0ZXh0KSB7XG5cdCAgICB2YXIgZmlyc3RDaGlsZCA9IG5vZGUuZmlyc3RDaGlsZDtcblx0XG5c
dCAgICBpZiAoZmlyc3RDaGlsZCAmJiBmaXJzdENoaWxkID09PSBub2RlLmxhc3RDaGlsZCAmJiBm
aXJzdENoaWxkLm5vZGVUeXBlID09PSAzKSB7XG5cdCAgICAgIGZpcnN0Q2hpbGQubm9kZVZhbHVl
ID0gdGV4dDtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHQgIH1cblx0ICBub2RlLnRleHRD
b250ZW50ID0gdGV4dDtcblx0fTtcblx0XG5cdGlmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5V
c2VET00pIHtcblx0ICBpZiAoISgndGV4dENvbnRlbnQnIGluIGRvY3VtZW50LmRvY3VtZW50RWxl
bWVudCkpIHtcblx0ICAgIHNldFRleHRDb250ZW50ID0gZnVuY3Rpb24gKG5vZGUsIHRleHQpIHtc
blx0ICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDMpIHtcblx0ICAgICAgICBub2RlLm5vZGVW
YWx1ZSA9IHRleHQ7XG5cdCAgICAgICAgcmV0dXJuO1xuXHQgICAgICB9XG5cdCAgICAgIHNldElu
bmVySFRNTChub2RlLCBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIodGV4dCkpO1xuXHQgICAg
fTtcblx0ICB9XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gc2V0VGV4dENvbnRlbnQ7XG5c
bi8qKiovIH0sXG4vKiA3OCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dl
YnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52YXJp
YW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblx0XG5cdHZhciBSZWFjdEN1cnJlbnRPd25l
ciA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpO1xuXHR2YXIgUkVBQ1RfRUxFTUVOVF9UWVBFID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxNTEpO1xuXHRcblx0dmFyIGdldEl0ZXJhdG9yRm4gPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDE4Mik7XG5cdHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDEpO1xuXHR2YXIgS2V5RXNjYXBlVXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM4KTtc
blx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHRcblx0dmFyIFNFUEFS
QVRPUiA9ICcuJztcblx0dmFyIFNVQlNFUEFSQVRPUiA9ICc6Jztcblx0XG5cdC8qKlxuXHQgKiBU
aGlzIGlzIGlubGluZWQgZnJvbSBSZWFjdEVsZW1lbnQgc2luY2UgdGhpcyBmaWxlIGlzIHNoYXJl
ZCBiZXR3ZWVuXG5cdCAqIGlzb21vcnBoaWMgYW5kIHJlbmRlcmVycy4gV2UgY291bGQgZXh0cmFj
dCB0aGlzIHRvIGFcblx0ICpcblx0ICovXG5cdFxuXHQvKipcblx0ICogVE9ETzogVGVzdCB0aGF0
IGEgc2luZ2xlIGNoaWxkIGFuZCBhbiBhcnJheSB3aXRoIG9uZSBpdGVtIGhhdmUgdGhlIHNhbWUg
a2V5XG5cdCAqIHBhdHRlcm4uXG5cdCAqL1xuXHRcblx0dmFyIGRpZFdhcm5BYm91dE1hcHMgPSBm
YWxzZTtcblx0XG5cdC8qKlxuXHQgKiBHZW5lcmF0ZSBhIGtleSBzdHJpbmcgdGhhdCBpZGVudGlm
aWVzIGEgY29tcG9uZW50IHdpdGhpbiBhIHNldC5cblx0ICpcblx0ICogQHBhcmFtIHsqfSBjb21w
b25lbnQgQSBjb21wb25lbnQgdGhhdCBjb3VsZCBjb250YWluIGEgbWFudWFsIGtleS5cblx0ICog
QHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IHRoYXQgaXMgdXNlZCBpZiBhIG1hbnVhbCBrZXkg
aXMgbm90IHByb3ZpZGVkLlxuXHQgKiBAcmV0dXJuIHtzdHJpbmd9XG5cdCAqL1xuXHRmdW5jdGlv
biBnZXRDb21wb25lbnRLZXkoY29tcG9uZW50LCBpbmRleCkge1xuXHQgIC8vIERvIHNvbWUgdHlw
ZWNoZWNraW5nIGhlcmUgc2luY2Ugd2UgY2FsbCB0aGlzIGJsaW5kbHkuIFdlIHdhbnQgdG8gZW5z
dXJlXG5cdCAgLy8gdGhhdCB3ZSBkb24ndCBibG9jayBwb3RlbnRpYWwgZnV0dXJlIEVTIEFQSXMu
XG5cdCAgaWYgKGNvbXBvbmVudCAmJiB0eXBlb2YgY29tcG9uZW50ID09PSAnb2JqZWN0JyAmJiBj
b21wb25lbnQua2V5ICE9IG51bGwpIHtcblx0ICAgIC8vIEV4cGxpY2l0IGtleVxuXHQgICAgcmV0
dXJuIEtleUVzY2FwZVV0aWxzLmVzY2FwZShjb21wb25lbnQua2V5KTtcblx0ICB9XG5cdCAgLy8g
SW1wbGljaXQga2V5IGRldGVybWluZWQgYnkgdGhlIGluZGV4IGluIHRoZSBzZXRcblx0ICByZXR1
cm4gaW5kZXgudG9TdHJpbmcoMzYpO1xuXHR9XG5cdFxuXHQvKipcblx0ICogQHBhcmFtIHs/Kn0g
Y2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIuXG5cdCAqIEBwYXJhbSB7IXN0cmluZ30g
bmFtZVNvRmFyIE5hbWUgb2YgdGhlIGtleSBwYXRoIHNvIGZhci5cblx0ICogQHBhcmFtIHshZnVu
Y3Rpb259IGNhbGxiYWNrIENhbGxiYWNrIHRvIGludm9rZSB3aXRoIGVhY2ggY2hpbGQgZm91bmQu
XG5cdCAqIEBwYXJhbSB7Pyp9IHRyYXZlcnNlQ29udGV4dCBVc2VkIHRvIHBhc3MgaW5mb3JtYXRp
b24gdGhyb3VnaG91dCB0aGUgdHJhdmVyc2FsXG5cdCAqIHByb2Nlc3MuXG5cdCAqIEByZXR1cm4g
eyFudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhpcyBzdWJ0cmVlLlxuXHQgKi9c
blx0ZnVuY3Rpb24gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGRyZW4sIG5hbWVTb0Zhciwg
Y2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCkge1xuXHQgIHZhciB0eXBlID0gdHlwZW9mIGNoaWxk
cmVuO1xuXHRcblx0ICBpZiAodHlwZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZSA9PT0gJ2Jvb2xl
YW4nKSB7XG5cdCAgICAvLyBBbGwgb2YgdGhlIGFib3ZlIGFyZSBwZXJjZWl2ZWQgYXMgbnVsbC5c
blx0ICAgIGNoaWxkcmVuID0gbnVsbDtcblx0ICB9XG5cdFxuXHQgIGlmIChjaGlsZHJlbiA9PT0g
bnVsbCB8fCB0eXBlID09PSAnc3RyaW5nJyB8fCB0eXBlID09PSAnbnVtYmVyJyB8fFxuXHQgIC8v
IFRoZSBmb2xsb3dpbmcgaXMgaW5saW5lZCBmcm9tIFJlYWN0RWxlbWVudC4gVGhpcyBtZWFucyB3
ZSBjYW4gb3B0aW1pemVcblx0ICAvLyBzb21lIGNoZWNrcy4gUmVhY3QgRmliZXIgYWxzbyBpbmxp
bmVzIHRoaXMgbG9naWMgZm9yIHNpbWlsYXIgcHVycG9zZXMuXG5cdCAgdHlwZSA9PT0gJ29iamVj
dCcgJiYgY2hpbGRyZW4uJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRSkge1xuXHQgICAg
Y2FsbGJhY2sodHJhdmVyc2VDb250ZXh0LCBjaGlsZHJlbixcblx0ICAgIC8vIElmIGl0J3MgdGhl
IG9ubHkgY2hpbGQsIHRyZWF0IHRoZSBuYW1lIGFzIGlmIGl0IHdhcyB3cmFwcGVkIGluIGFuIGFy
cmF5XG5cdCAgICAvLyBzbyB0aGF0IGl0J3MgY29uc2lzdGVudCBpZiB0aGUgbnVtYmVyIG9mIGNo
aWxkcmVuIGdyb3dzLlxuXHQgICAgbmFtZVNvRmFyID09PSAnJyA/IFNFUEFSQVRPUiArIGdldENv
bXBvbmVudEtleShjaGlsZHJlbiwgMCkgOiBuYW1lU29GYXIpO1xuXHQgICAgcmV0dXJuIDE7XG5c
dCAgfVxuXHRcblx0ICB2YXIgY2hpbGQ7XG5cdCAgdmFyIG5leHROYW1lO1xuXHQgIHZhciBzdWJ0
cmVlQ291bnQgPSAwOyAvLyBDb3VudCBvZiBjaGlsZHJlbiBmb3VuZCBpbiB0aGUgY3VycmVudCBz
dWJ0cmVlLlxuXHQgIHZhciBuZXh0TmFtZVByZWZpeCA9IG5hbWVTb0ZhciA9PT0gJycgPyBTRVBB
UkFUT1IgOiBuYW1lU29GYXIgKyBTVUJTRVBBUkFUT1I7XG5cdFxuXHQgIGlmIChBcnJheS5pc0Fy
cmF5KGNoaWxkcmVuKSkge1xuXHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5n
dGg7IGkrKykge1xuXHQgICAgICBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuXHQgICAgICBuZXh0TmFt
ZSA9IG5leHROYW1lUHJlZml4ICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkLCBpKTtcblx0ICAgICAg
c3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwg
Y2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7XG5cdCAgICB9XG5cdCAgfSBlbHNlIHtcblx0ICAg
IHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihjaGlsZHJlbik7XG5cdCAgICBpZiAoaXRl
cmF0b3JGbikge1xuXHQgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwoY2hpbGRy
ZW4pO1xuXHQgICAgICB2YXIgc3RlcDtcblx0ICAgICAgaWYgKGl0ZXJhdG9yRm4gIT09IGNoaWxk
cmVuLmVudHJpZXMpIHtcblx0ICAgICAgICB2YXIgaWkgPSAwO1xuXHQgICAgICAgIHdoaWxlICgh
KHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgIGNoaWxkID0gc3Rl
cC52YWx1ZTtcblx0ICAgICAgICAgIG5leHROYW1lID0gbmV4dE5hbWVQcmVmaXggKyBnZXRDb21w
b25lbnRLZXkoY2hpbGQsIGlpKyspO1xuXHQgICAgICAgICAgc3VidHJlZUNvdW50ICs9IHRyYXZl
cnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29u
dGV4dCk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIGlmIChmYWxz
ZSkge1xuXHQgICAgICAgICAgdmFyIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0gPSAnJztcblx0ICAg
ICAgICAgIGlmIChSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7XG5cdCAgICAgICAgICAgIHZh
ciBtYXBzQXNDaGlsZHJlbk93bmVyTmFtZSA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQuZ2V0
TmFtZSgpO1xuXHQgICAgICAgICAgICBpZiAobWFwc0FzQ2hpbGRyZW5Pd25lck5hbWUpIHtcblx0
ICAgICAgICAgICAgICBtYXBzQXNDaGlsZHJlbkFkZGVuZHVtID0gJyBDaGVjayB0aGUgcmVuZGVy
IG1ldGhvZCBvZiBgJyArIG1hcHNBc0NoaWxkcmVuT3duZXJOYW1lICsgJ2AuJztcblx0ICAgICAg
ICAgICAgfVxuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZGlkV2FybkFib3V0TWFwcywgJ1VzaW5nIE1hcHMg
YXMgY2hpbGRyZW4gaXMgbm90IHlldCBmdWxseSBzdXBwb3J0ZWQuIEl0IGlzIGFuICcgKyAnZXhw
ZXJpbWVudGFsIGZlYXR1cmUgdGhhdCBtaWdodCBiZSByZW1vdmVkLiBDb252ZXJ0IGl0IHRvIGEg
JyArICdzZXF1ZW5jZSAvIGl0ZXJhYmxlIG9mIGtleWVkIFJlYWN0RWxlbWVudHMgaW5zdGVhZC4l
cycsIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0pIDogdm9pZCAwO1xuXHQgICAgICAgICAgZGlkV2Fy
bkFib3V0TWFwcyA9IHRydWU7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIC8vIEl0ZXJhdG9yIHdp
bGwgcHJvdmlkZSBlbnRyeSBbayx2XSB0dXBsZXMgcmF0aGVyIHRoYW4gdmFsdWVzLlxuXHQgICAg
ICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAg
IHZhciBlbnRyeSA9IHN0ZXAudmFsdWU7XG5cdCAgICAgICAgICBpZiAoZW50cnkpIHtcblx0ICAg
ICAgICAgICAgY2hpbGQgPSBlbnRyeVsxXTtcblx0ICAgICAgICAgICAgbmV4dE5hbWUgPSBuZXh0
TmFtZVByZWZpeCArIEtleUVzY2FwZVV0aWxzLmVzY2FwZShlbnRyeVswXSkgKyBTVUJTRVBBUkFU
T1IgKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIDApO1xuXHQgICAgICAgICAgICBzdWJ0cmVlQ291
bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywg
dHJhdmVyc2VDb250ZXh0KTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgIH1c
blx0ICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ29iamVjdCcpIHtcblx0ICAgICAgdmFyIGFkZGVu
ZHVtID0gJyc7XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIGFkZGVuZHVtID0gJyBJ
ZiB5b3UgbWVhbnQgdG8gcmVuZGVyIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiwgdXNlIGFuIGFy
cmF5ICcgKyAnaW5zdGVhZCBvciB3cmFwIHRoZSBvYmplY3QgdXNpbmcgY3JlYXRlRnJhZ21lbnQo
b2JqZWN0KSBmcm9tIHRoZSAnICsgJ1JlYWN0IGFkZC1vbnMuJztcblx0ICAgICAgICBpZiAoY2hp
bGRyZW4uX2lzUmVhY3RFbGVtZW50KSB7XG5cdCAgICAgICAgICBhZGRlbmR1bSA9IFwiIEl0IGxv
b2tzIGxpa2UgeW91J3JlIHVzaW5nIGFuIGVsZW1lbnQgY3JlYXRlZCBieSBhIGRpZmZlcmVudCBc
IiArICd2ZXJzaW9uIG9mIFJlYWN0LiBNYWtlIHN1cmUgdG8gdXNlIG9ubHkgb25lIGNvcHkgb2Yg
UmVhY3QuJztcblx0ICAgICAgICB9XG5cdCAgICAgICAgaWYgKFJlYWN0Q3VycmVudE93bmVyLmN1
cnJlbnQpIHtcblx0ICAgICAgICAgIHZhciBuYW1lID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVu
dC5nZXROYW1lKCk7XG5cdCAgICAgICAgICBpZiAobmFtZSkge1xuXHQgICAgICAgICAgICBhZGRl
bmR1bSArPSAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7XG5c
dCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAgIHZhciBjaGlsZHJl
blN0cmluZyA9IFN0cmluZyhjaGlsZHJlbik7XG5cdCAgICAgICB0cnVlID8gIGZhbHNlID8gaW52
YXJpYW50KGZhbHNlLCAnT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZv
dW5kOiAlcykuJXMnLCBjaGlsZHJlblN0cmluZyA9PT0gJ1tvYmplY3QgT2JqZWN0XScgPyAnb2Jq
ZWN0IHdpdGgga2V5cyB7JyArIE9iamVjdC5rZXlzKGNoaWxkcmVuKS5qb2luKCcsICcpICsgJ30n
IDogY2hpbGRyZW5TdHJpbmcsIGFkZGVuZHVtKSA6IF9wcm9kSW52YXJpYW50KCczMScsIGNoaWxk
cmVuU3RyaW5nID09PSAnW29iamVjdCBPYmplY3RdJyA/ICdvYmplY3Qgd2l0aCBrZXlzIHsnICsg
T2JqZWN0LmtleXMoY2hpbGRyZW4pLmpvaW4oJywgJykgKyAnfScgOiBjaGlsZHJlblN0cmluZywg
YWRkZW5kdW0pIDogdm9pZCAwO1xuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAgcmV0dXJuIHN1YnRy
ZWVDb3VudDtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFRyYXZlcnNlcyBjaGlsZHJlbiB0aGF0IGFy
ZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAsIGJ1dFxuXHQgKiBtaWdo
dCBhbHNvIGJlIHNwZWNpZmllZCB0aHJvdWdoIGF0dHJpYnV0ZXM6XG5cdCAqXG5cdCAqIC0gYHRy
YXZlcnNlQWxsQ2hpbGRyZW4odGhpcy5wcm9wcy5jaGlsZHJlbiwgLi4uKWBcblx0ICogLSBgdHJh
dmVyc2VBbGxDaGlsZHJlbih0aGlzLnByb3BzLmxlZnRQYW5lbENoaWxkcmVuLCAuLi4pYFxuXHQg
KlxuXHQgKiBUaGUgYHRyYXZlcnNlQ29udGV4dGAgaXMgYW4gb3B0aW9uYWwgYXJndW1lbnQgdGhh
dCBpcyBwYXNzZWQgdGhyb3VnaCB0aGVcblx0ICogZW50aXJlIHRyYXZlcnNhbC4gSXQgY2FuIGJl
IHVzZWQgdG8gc3RvcmUgYWNjdW11bGF0aW9ucyBvciBhbnl0aGluZyBlbHNlIHRoYXRcblx0ICog
dGhlIGNhbGxiYWNrIG1pZ2h0IGZpbmQgcmVsZXZhbnQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Pyp9
IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgb2JqZWN0LlxuXHQgKiBAcGFyYW0geyFmdW5jdGlvbn0g
Y2FsbGJhY2sgVG8gaW52b2tlIHVwb24gdHJhdmVyc2luZyBlYWNoIGNoaWxkLlxuXHQgKiBAcGFy
YW0gez8qfSB0cmF2ZXJzZUNvbnRleHQgQ29udGV4dCBmb3IgdHJhdmVyc2FsLlxuXHQgKiBAcmV0
dXJuIHshbnVtYmVyfSBUaGUgbnVtYmVyIG9mIGNoaWxkcmVuIGluIHRoaXMgc3VidHJlZS5cblx0
ICovXG5cdGZ1bmN0aW9uIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGNhbGxiYWNrLCB0
cmF2ZXJzZUNvbnRleHQpIHtcblx0ICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkge1xuXHQgICAgcmV0
dXJuIDA7XG5cdCAgfVxuXHRcblx0ICByZXR1cm4gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hp
bGRyZW4sICcnLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcblx0fVxuXHRcblx0bW9kdWxl
LmV4cG9ydHMgPSB0cmF2ZXJzZUFsbENoaWxkcmVuO1xuXG4vKioqLyB9LFxuLyogNzkgKi9cbi8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5c
dCd1c2Ugc3RyaWN0Jztcblx0XG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cdFxuXHR2
YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2
YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3Vt
ZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5o
YXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtr
ZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9O1xuXHRcblx0ZXhwb3J0cy5kZWZhdWx0ID0gY29u
bmVjdEFkdmFuY2VkO1xuXHRcblx0dmFyIF9ob2lzdE5vblJlYWN0U3RhdGljcyA9IF9fd2VicGFj
a19yZXF1aXJlX18oMTEwKTtcblx0XG5cdHZhciBfaG9pc3ROb25SZWFjdFN0YXRpY3MyID0gX2lu
dGVyb3BSZXF1aXJlRGVmYXVsdChfaG9pc3ROb25SZWFjdFN0YXRpY3MpO1xuXHRcblx0dmFyIF9p
bnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExMSk7XG5cdFxuXHR2YXIgX2ludmFyaWFu
dDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pbnZhcmlhbnQpO1xuXHRcblx0dmFyIF9yZWFj
dCA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpO1xuXHRcblx0dmFyIF9TdWJzY3JpcHRpb24gPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDE5NCk7XG5cdFxuXHR2YXIgX1N1YnNjcmlwdGlvbjIgPSBfaW50
ZXJvcFJlcXVpcmVEZWZhdWx0KF9TdWJzY3JpcHRpb24pO1xuXHRcblx0dmFyIF9Qcm9wVHlwZXMg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgyKTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWly
ZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRl
ZmF1bHQ6IG9iaiB9OyB9XG5cdFxuXHRmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2Us
IENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7
IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25c
Iik7IH0gfVxuXHRcblx0ZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwg
Y2FsbCkgeyBpZiAoIXNlbGYpIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNu
J3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJl
dHVybiBjYWxsICYmICh0eXBlb2YgY2FsbCA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9
PT0gXCJmdW5jdGlvblwiKSA/IGNhbGwgOiBzZWxmOyB9XG5cdFxuXHRmdW5jdGlvbiBfaW5oZXJp
dHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1
bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwi
U3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBc
IiArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3Jl
YXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsg
dmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZp
Z3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9m
ID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNz
Ll9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblx0XG5cdGZ1bmN0aW9uIF9vYmplY3RXaXRob3V0
UHJvcGVydGllcyhvYmosIGtleXMpIHsgdmFyIHRhcmdldCA9IHt9OyBmb3IgKHZhciBpIGluIG9i
aikgeyBpZiAoa2V5cy5pbmRleE9mKGkpID49IDApIGNvbnRpbnVlOyBpZiAoIU9iamVjdC5wcm90
b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGkpKSBjb250aW51ZTsgdGFyZ2V0W2ldID0g
b2JqW2ldOyB9IHJldHVybiB0YXJnZXQ7IH1cblx0XG5cdHZhciBob3RSZWxvYWRpbmdWZXJzaW9u
ID0gMDtcblx0dmFyIGR1bW15U3RhdGUgPSB7fTtcblx0ZnVuY3Rpb24gbm9vcCgpIHt9XG5cdGZ1
bmN0aW9uIG1ha2VTZWxlY3RvclN0YXRlZnVsKHNvdXJjZVNlbGVjdG9yLCBzdG9yZSkge1xuXHQg
IC8vIHdyYXAgdGhlIHNlbGVjdG9yIGluIGFuIG9iamVjdCB0aGF0IHRyYWNrcyBpdHMgcmVzdWx0
cyBiZXR3ZWVuIHJ1bnMuXG5cdCAgdmFyIHNlbGVjdG9yID0ge1xuXHQgICAgcnVuOiBmdW5jdGlv
biBydW5Db21wb25lbnRTZWxlY3Rvcihwcm9wcykge1xuXHQgICAgICB0cnkge1xuXHQgICAgICAg
IHZhciBuZXh0UHJvcHMgPSBzb3VyY2VTZWxlY3RvcihzdG9yZS5nZXRTdGF0ZSgpLCBwcm9wcyk7
XG5cdCAgICAgICAgaWYgKG5leHRQcm9wcyAhPT0gc2VsZWN0b3IucHJvcHMgfHwgc2VsZWN0b3Iu
ZXJyb3IpIHtcblx0ICAgICAgICAgIHNlbGVjdG9yLnNob3VsZENvbXBvbmVudFVwZGF0ZSA9IHRy
dWU7XG5cdCAgICAgICAgICBzZWxlY3Rvci5wcm9wcyA9IG5leHRQcm9wcztcblx0ICAgICAgICAg
IHNlbGVjdG9yLmVycm9yID0gbnVsbDtcblx0ICAgICAgICB9XG5cdCAgICAgIH0gY2F0Y2ggKGVy
cm9yKSB7XG5cdCAgICAgICAgc2VsZWN0b3Iuc2hvdWxkQ29tcG9uZW50VXBkYXRlID0gdHJ1ZTtc
blx0ICAgICAgICBzZWxlY3Rvci5lcnJvciA9IGVycm9yO1xuXHQgICAgICB9XG5cdCAgICB9XG5c
dCAgfTtcblx0XG5cdCAgcmV0dXJuIHNlbGVjdG9yO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBjb25u
ZWN0QWR2YW5jZWQoXG5cdC8qXG5cdCAgc2VsZWN0b3JGYWN0b3J5IGlzIGEgZnVuYyB0aGF0IGlz
IHJlc3BvbnNpYmxlIGZvciByZXR1cm5pbmcgdGhlIHNlbGVjdG9yIGZ1bmN0aW9uIHVzZWQgdG9c
blx0ICBjb21wdXRlIG5ldyBwcm9wcyBmcm9tIHN0YXRlLCBwcm9wcywgYW5kIGRpc3BhdGNoLiBG
b3IgZXhhbXBsZTpcblx0ICAgICBleHBvcnQgZGVmYXVsdCBjb25uZWN0QWR2YW5jZWQoKGRpc3Bh
dGNoLCBvcHRpb25zKSA9PiAoc3RhdGUsIHByb3BzKSA9PiAoe1xuXHQgICAgICB0aGluZzogc3Rh
dGUudGhpbmdzW3Byb3BzLnRoaW5nSWRdLFxuXHQgICAgICBzYXZlVGhpbmc6IGZpZWxkcyA9PiBk
aXNwYXRjaChhY3Rpb25DcmVhdG9ycy5zYXZlVGhpbmcocHJvcHMudGhpbmdJZCwgZmllbGRzKSks
XG5cdCAgICB9KSkoWW91ckNvbXBvbmVudClcblx0ICAgQWNjZXNzIHRvIGRpc3BhdGNoIGlzIHBy
b3ZpZGVkIHRvIHRoZSBmYWN0b3J5IHNvIHNlbGVjdG9yRmFjdG9yaWVzIGNhbiBiaW5kIGFjdGlv
bkNyZWF0b3JzXG5cdCAgb3V0c2lkZSBvZiB0aGVpciBzZWxlY3RvciBhcyBhbiBvcHRpbWl6YXRp
b24uIE9wdGlvbnMgcGFzc2VkIHRvIGNvbm5lY3RBZHZhbmNlZCBhcmUgcGFzc2VkIHRvXG5cdCAg
dGhlIHNlbGVjdG9yRmFjdG9yeSwgYWxvbmcgd2l0aCBkaXNwbGF5TmFtZSBhbmQgV3JhcHBlZENv
bXBvbmVudCwgYXMgdGhlIHNlY29uZCBhcmd1bWVudC5cblx0ICAgTm90ZSB0aGF0IHNlbGVjdG9y
RmFjdG9yeSBpcyByZXNwb25zaWJsZSBmb3IgYWxsIGNhY2hpbmcvbWVtb2l6YXRpb24gb2YgaW5i
b3VuZCBhbmQgb3V0Ym91bmRcblx0ICBwcm9wcy4gRG8gbm90IHVzZSBjb25uZWN0QWR2YW5jZWQg
ZGlyZWN0bHkgd2l0aG91dCBtZW1vaXppbmcgcmVzdWx0cyBiZXR3ZWVuIGNhbGxzIHRvIHlvdXJc
blx0ICBzZWxlY3Rvciwgb3RoZXJ3aXNlIHRoZSBDb25uZWN0IGNvbXBvbmVudCB3aWxsIHJlLXJl
bmRlciBvbiBldmVyeSBzdGF0ZSBvciBwcm9wcyBjaGFuZ2UuXG5cdCovXG5cdHNlbGVjdG9yRmFj
dG9yeSkge1xuXHQgIHZhciBfY29udGV4dFR5cGVzLCBfY2hpbGRDb250ZXh0VHlwZXM7XG5cdFxu
XHQgIHZhciBfcmVmID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1
bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fSxcblx0ICAgICAgX3JlZiRnZXREaXNwbGF5TmFt
ZSA9IF9yZWYuZ2V0RGlzcGxheU5hbWUsXG5cdCAgICAgIGdldERpc3BsYXlOYW1lID0gX3JlZiRn
ZXREaXNwbGF5TmFtZSA9PT0gdW5kZWZpbmVkID8gZnVuY3Rpb24gKG5hbWUpIHtcblx0ICAgIHJl
dHVybiAnQ29ubmVjdEFkdmFuY2VkKCcgKyBuYW1lICsgJyknO1xuXHQgIH0gOiBfcmVmJGdldERp
c3BsYXlOYW1lLFxuXHQgICAgICBfcmVmJG1ldGhvZE5hbWUgPSBfcmVmLm1ldGhvZE5hbWUsXG5c
dCAgICAgIG1ldGhvZE5hbWUgPSBfcmVmJG1ldGhvZE5hbWUgPT09IHVuZGVmaW5lZCA/ICdjb25u
ZWN0QWR2YW5jZWQnIDogX3JlZiRtZXRob2ROYW1lLFxuXHQgICAgICBfcmVmJHJlbmRlckNvdW50
UHJvcCA9IF9yZWYucmVuZGVyQ291bnRQcm9wLFxuXHQgICAgICByZW5kZXJDb3VudFByb3AgPSBf
cmVmJHJlbmRlckNvdW50UHJvcCA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogX3JlZiRyZW5k
ZXJDb3VudFByb3AsXG5cdCAgICAgIF9yZWYkc2hvdWxkSGFuZGxlU3RhdCA9IF9yZWYuc2hvdWxk
SGFuZGxlU3RhdGVDaGFuZ2VzLFxuXHQgICAgICBzaG91bGRIYW5kbGVTdGF0ZUNoYW5nZXMgPSBf
cmVmJHNob3VsZEhhbmRsZVN0YXQgPT09IHVuZGVmaW5lZCA/IHRydWUgOiBfcmVmJHNob3VsZEhh
bmRsZVN0YXQsXG5cdCAgICAgIF9yZWYkc3RvcmVLZXkgPSBfcmVmLnN0b3JlS2V5LFxuXHQgICAg
ICBzdG9yZUtleSA9IF9yZWYkc3RvcmVLZXkgPT09IHVuZGVmaW5lZCA/ICdzdG9yZScgOiBfcmVm
JHN0b3JlS2V5LFxuXHQgICAgICBfcmVmJHdpdGhSZWYgPSBfcmVmLndpdGhSZWYsXG5cdCAgICAg
IHdpdGhSZWYgPSBfcmVmJHdpdGhSZWYgPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogX3JlZiR3aXRo
UmVmLFxuXHQgICAgICBjb25uZWN0T3B0aW9ucyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhf
cmVmLCBbJ2dldERpc3BsYXlOYW1lJywgJ21ldGhvZE5hbWUnLCAncmVuZGVyQ291bnRQcm9wJywg
J3Nob3VsZEhhbmRsZVN0YXRlQ2hhbmdlcycsICdzdG9yZUtleScsICd3aXRoUmVmJ10pO1xuXHRc
blx0ICB2YXIgc3Vic2NyaXB0aW9uS2V5ID0gc3RvcmVLZXkgKyAnU3Vic2NyaXB0aW9uJztcblx0
ICB2YXIgdmVyc2lvbiA9IGhvdFJlbG9hZGluZ1ZlcnNpb24rKztcblx0XG5cdCAgdmFyIGNvbnRl
eHRUeXBlcyA9IChfY29udGV4dFR5cGVzID0ge30sIF9jb250ZXh0VHlwZXNbc3RvcmVLZXldID0g
X1Byb3BUeXBlcy5zdG9yZVNoYXBlLCBfY29udGV4dFR5cGVzW3N1YnNjcmlwdGlvbktleV0gPSBf
UHJvcFR5cGVzLnN1YnNjcmlwdGlvblNoYXBlLCBfY29udGV4dFR5cGVzKTtcblx0ICB2YXIgY2hp
bGRDb250ZXh0VHlwZXMgPSAoX2NoaWxkQ29udGV4dFR5cGVzID0ge30sIF9jaGlsZENvbnRleHRU
eXBlc1tzdWJzY3JpcHRpb25LZXldID0gX1Byb3BUeXBlcy5zdWJzY3JpcHRpb25TaGFwZSwgX2No
aWxkQ29udGV4dFR5cGVzKTtcblx0XG5cdCAgcmV0dXJuIGZ1bmN0aW9uIHdyYXBXaXRoQ29ubmVj
dChXcmFwcGVkQ29tcG9uZW50KSB7XG5cdCAgICAoMCwgX2ludmFyaWFudDIuZGVmYXVsdCkodHlw
ZW9mIFdyYXBwZWRDb21wb25lbnQgPT0gJ2Z1bmN0aW9uJywgJ1lvdSBtdXN0IHBhc3MgYSBjb21w
b25lbnQgdG8gdGhlIGZ1bmN0aW9uIHJldHVybmVkIGJ5ICcgKyAoJ2Nvbm5lY3QuIEluc3RlYWQg
cmVjZWl2ZWQgJyArIEpTT04uc3RyaW5naWZ5KFdyYXBwZWRDb21wb25lbnQpKSk7XG5cdFxuXHQg
ICAgdmFyIHdyYXBwZWRDb21wb25lbnROYW1lID0gV3JhcHBlZENvbXBvbmVudC5kaXNwbGF5TmFt
ZSB8fCBXcmFwcGVkQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCc7XG5cdFxuXHQgICAgdmFy
IGRpc3BsYXlOYW1lID0gZ2V0RGlzcGxheU5hbWUod3JhcHBlZENvbXBvbmVudE5hbWUpO1xuXHRc
blx0ICAgIHZhciBzZWxlY3RvckZhY3RvcnlPcHRpb25zID0gX2V4dGVuZHMoe30sIGNvbm5lY3RP
cHRpb25zLCB7XG5cdCAgICAgIGdldERpc3BsYXlOYW1lOiBnZXREaXNwbGF5TmFtZSxcblx0ICAg
ICAgbWV0aG9kTmFtZTogbWV0aG9kTmFtZSxcblx0ICAgICAgcmVuZGVyQ291bnRQcm9wOiByZW5k
ZXJDb3VudFByb3AsXG5cdCAgICAgIHNob3VsZEhhbmRsZVN0YXRlQ2hhbmdlczogc2hvdWxkSGFu
ZGxlU3RhdGVDaGFuZ2VzLFxuXHQgICAgICBzdG9yZUtleTogc3RvcmVLZXksXG5cdCAgICAgIHdp
dGhSZWY6IHdpdGhSZWYsXG5cdCAgICAgIGRpc3BsYXlOYW1lOiBkaXNwbGF5TmFtZSxcblx0ICAg
ICAgd3JhcHBlZENvbXBvbmVudE5hbWU6IHdyYXBwZWRDb21wb25lbnROYW1lLFxuXHQgICAgICBX
cmFwcGVkQ29tcG9uZW50OiBXcmFwcGVkQ29tcG9uZW50XG5cdCAgICB9KTtcblx0XG5cdCAgICB2
YXIgQ29ubmVjdCA9IGZ1bmN0aW9uIChfQ29tcG9uZW50KSB7XG5cdCAgICAgIF9pbmhlcml0cyhD
b25uZWN0LCBfQ29tcG9uZW50KTtcblx0XG5cdCAgICAgIGZ1bmN0aW9uIENvbm5lY3QocHJvcHMs
IGNvbnRleHQpIHtcblx0ICAgICAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ29ubmVjdCk7XG5c
dFxuXHQgICAgICAgIHZhciBfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMs
IF9Db21wb25lbnQuY2FsbCh0aGlzLCBwcm9wcywgY29udGV4dCkpO1xuXHRcblx0ICAgICAgICBf
dGhpcy52ZXJzaW9uID0gdmVyc2lvbjtcblx0ICAgICAgICBfdGhpcy5zdGF0ZSA9IHt9O1xuXHQg
ICAgICAgIF90aGlzLnJlbmRlckNvdW50ID0gMDtcblx0ICAgICAgICBfdGhpcy5zdG9yZSA9IHBy
b3BzW3N0b3JlS2V5XSB8fCBjb250ZXh0W3N0b3JlS2V5XTtcblx0ICAgICAgICBfdGhpcy5wcm9w
c01vZGUgPSBCb29sZWFuKHByb3BzW3N0b3JlS2V5XSk7XG5cdCAgICAgICAgX3RoaXMuc2V0V3Jh
cHBlZEluc3RhbmNlID0gX3RoaXMuc2V0V3JhcHBlZEluc3RhbmNlLmJpbmQoX3RoaXMpO1xuXHRc
blx0ICAgICAgICAoMCwgX2ludmFyaWFudDIuZGVmYXVsdCkoX3RoaXMuc3RvcmUsICdDb3VsZCBu
b3QgZmluZCBcIicgKyBzdG9yZUtleSArICdcIiBpbiBlaXRoZXIgdGhlIGNvbnRleHQgb3IgcHJv
cHMgb2YgJyArICgnXCInICsgZGlzcGxheU5hbWUgKyAnXCIuIEVpdGhlciB3cmFwIHRoZSByb290
IGNvbXBvbmVudCBpbiBhIDxQcm92aWRlcj4sICcpICsgKCdvciBleHBsaWNpdGx5IHBhc3MgXCIn
ICsgc3RvcmVLZXkgKyAnXCIgYXMgYSBwcm9wIHRvIFwiJyArIGRpc3BsYXlOYW1lICsgJ1wiLicp
KTtcblx0XG5cdCAgICAgICAgX3RoaXMuaW5pdFNlbGVjdG9yKCk7XG5cdCAgICAgICAgX3RoaXMu
aW5pdFN1YnNjcmlwdGlvbigpO1xuXHQgICAgICAgIHJldHVybiBfdGhpcztcblx0ICAgICAgfVxu
XHRcblx0ICAgICAgQ29ubmVjdC5wcm90b3R5cGUuZ2V0Q2hpbGRDb250ZXh0ID0gZnVuY3Rpb24g
Z2V0Q2hpbGRDb250ZXh0KCkge1xuXHQgICAgICAgIHZhciBfcmVmMjtcblx0XG5cdCAgICAgICAg
Ly8gSWYgdGhpcyBjb21wb25lbnQgcmVjZWl2ZWQgc3RvcmUgZnJvbSBwcm9wcywgaXRzIHN1YnNj
cmlwdGlvbiBzaG91bGQgYmUgdHJhbnNwYXJlbnRcblx0ICAgICAgICAvLyB0byBhbnkgZGVzY2Vu
ZGFudHMgcmVjZWl2aW5nIHN0b3JlK3N1YnNjcmlwdGlvbiBmcm9tIGNvbnRleHQ7IGl0IHBhc3Nl
cyBhbG9uZ1xuXHQgICAgICAgIC8vIHN1YnNjcmlwdGlvbiBwYXNzZWQgdG8gaXQuIE90aGVyd2lz
ZSwgaXQgc2hhZG93cyB0aGUgcGFyZW50IHN1YnNjcmlwdGlvbiwgd2hpY2ggYWxsb3dzXG5cdCAg
ICAgICAgLy8gQ29ubmVjdCB0byBjb250cm9sIG9yZGVyaW5nIG9mIG5vdGlmaWNhdGlvbnMgdG8g
ZmxvdyB0b3AtZG93bi5cblx0ICAgICAgICB2YXIgc3Vic2NyaXB0aW9uID0gdGhpcy5wcm9wc01v
ZGUgPyBudWxsIDogdGhpcy5zdWJzY3JpcHRpb247XG5cdCAgICAgICAgcmV0dXJuIF9yZWYyID0g
e30sIF9yZWYyW3N1YnNjcmlwdGlvbktleV0gPSBzdWJzY3JpcHRpb24gfHwgdGhpcy5jb250ZXh0
W3N1YnNjcmlwdGlvbktleV0sIF9yZWYyO1xuXHQgICAgICB9O1xuXHRcblx0ICAgICAgQ29ubmVj
dC5wcm90b3R5cGUuY29tcG9uZW50RGlkTW91bnQgPSBmdW5jdGlvbiBjb21wb25lbnREaWRNb3Vu
dCgpIHtcblx0ICAgICAgICBpZiAoIXNob3VsZEhhbmRsZVN0YXRlQ2hhbmdlcykgcmV0dXJuO1xu
XHRcblx0ICAgICAgICAvLyBjb21wb25lbnRXaWxsTW91bnQgZmlyZXMgZHVyaW5nIHNlcnZlciBz
aWRlIHJlbmRlcmluZywgYnV0IGNvbXBvbmVudERpZE1vdW50IGFuZFxuXHQgICAgICAgIC8vIGNv
bXBvbmVudFdpbGxVbm1vdW50IGRvIG5vdC4gQmVjYXVzZSBvZiB0aGlzLCB0cnlTdWJzY3JpYmUg
aGFwcGVucyBkdXJpbmcgLi4uZGlkTW91bnQuXG5cdCAgICAgICAgLy8gT3RoZXJ3aXNlLCB1bnN1
YnNjcmlwdGlvbiB3b3VsZCBuZXZlciB0YWtlIHBsYWNlIGR1cmluZyBTU1IsIGNhdXNpbmcgYSBt
ZW1vcnkgbGVhay5cblx0ICAgICAgICAvLyBUbyBoYW5kbGUgdGhlIGNhc2Ugd2hlcmUgYSBjaGls
ZCBjb21wb25lbnQgbWF5IGhhdmUgdHJpZ2dlcmVkIGEgc3RhdGUgY2hhbmdlIGJ5XG5cdCAgICAg
ICAgLy8gZGlzcGF0Y2hpbmcgYW4gYWN0aW9uIGluIGl0cyBjb21wb25lbnRXaWxsTW91bnQsIHdl
IGhhdmUgdG8gcmUtcnVuIHRoZSBzZWxlY3QgYW5kIG1heWJlXG5cdCAgICAgICAgLy8gcmUtcmVu
ZGVyLlxuXHQgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnRyeVN1YnNjcmliZSgpO1xuXHQgICAg
ICAgIHRoaXMuc2VsZWN0b3IucnVuKHRoaXMucHJvcHMpO1xuXHQgICAgICAgIGlmICh0aGlzLnNl
bGVjdG9yLnNob3VsZENvbXBvbmVudFVwZGF0ZSkgdGhpcy5mb3JjZVVwZGF0ZSgpO1xuXHQgICAg
ICB9O1xuXHRcblx0ICAgICAgQ29ubmVjdC5wcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2VpdmVQ
cm9wcyA9IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV4dFByb3BzKSB7XG5c
dCAgICAgICAgdGhpcy5zZWxlY3Rvci5ydW4obmV4dFByb3BzKTtcblx0ICAgICAgfTtcblx0XG5c
dCAgICAgIENvbm5lY3QucHJvdG90eXBlLnNob3VsZENvbXBvbmVudFVwZGF0ZSA9IGZ1bmN0aW9u
IHNob3VsZENvbXBvbmVudFVwZGF0ZSgpIHtcblx0ICAgICAgICByZXR1cm4gdGhpcy5zZWxlY3Rv
ci5zaG91bGRDb21wb25lbnRVcGRhdGU7XG5cdCAgICAgIH07XG5cdFxuXHQgICAgICBDb25uZWN0
LnByb3RvdHlwZS5jb21wb25lbnRXaWxsVW5tb3VudCA9IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxV
bm1vdW50KCkge1xuXHQgICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikgdGhpcy5zdWJzY3Jp
cHRpb24udHJ5VW5zdWJzY3JpYmUoKTtcblx0ICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IG51
bGw7XG5cdCAgICAgICAgdGhpcy5ub3RpZnlOZXN0ZWRTdWJzID0gbm9vcDtcblx0ICAgICAgICB0
aGlzLnN0b3JlID0gbnVsbDtcblx0ICAgICAgICB0aGlzLnNlbGVjdG9yLnJ1biA9IG5vb3A7XG5c
dCAgICAgICAgdGhpcy5zZWxlY3Rvci5zaG91bGRDb21wb25lbnRVcGRhdGUgPSBmYWxzZTtcblx0
ICAgICAgfTtcblx0XG5cdCAgICAgIENvbm5lY3QucHJvdG90eXBlLmdldFdyYXBwZWRJbnN0YW5j
ZSA9IGZ1bmN0aW9uIGdldFdyYXBwZWRJbnN0YW5jZSgpIHtcblx0ICAgICAgICAoMCwgX2ludmFy
aWFudDIuZGVmYXVsdCkod2l0aFJlZiwgJ1RvIGFjY2VzcyB0aGUgd3JhcHBlZCBpbnN0YW5jZSwg
eW91IG5lZWQgdG8gc3BlY2lmeSAnICsgKCd7IHdpdGhSZWY6IHRydWUgfSBpbiB0aGUgb3B0aW9u
cyBhcmd1bWVudCBvZiB0aGUgJyArIG1ldGhvZE5hbWUgKyAnKCkgY2FsbC4nKSk7XG5cdCAgICAg
ICAgcmV0dXJuIHRoaXMud3JhcHBlZEluc3RhbmNlO1xuXHQgICAgICB9O1xuXHRcblx0ICAgICAg
Q29ubmVjdC5wcm90b3R5cGUuc2V0V3JhcHBlZEluc3RhbmNlID0gZnVuY3Rpb24gc2V0V3JhcHBl
ZEluc3RhbmNlKHJlZikge1xuXHQgICAgICAgIHRoaXMud3JhcHBlZEluc3RhbmNlID0gcmVmO1xu
XHQgICAgICB9O1xuXHRcblx0ICAgICAgQ29ubmVjdC5wcm90b3R5cGUuaW5pdFNlbGVjdG9yID0g
ZnVuY3Rpb24gaW5pdFNlbGVjdG9yKCkge1xuXHQgICAgICAgIHZhciBzb3VyY2VTZWxlY3RvciA9
IHNlbGVjdG9yRmFjdG9yeSh0aGlzLnN0b3JlLmRpc3BhdGNoLCBzZWxlY3RvckZhY3RvcnlPcHRp
b25zKTtcblx0ICAgICAgICB0aGlzLnNlbGVjdG9yID0gbWFrZVNlbGVjdG9yU3RhdGVmdWwoc291
cmNlU2VsZWN0b3IsIHRoaXMuc3RvcmUpO1xuXHQgICAgICAgIHRoaXMuc2VsZWN0b3IucnVuKHRo
aXMucHJvcHMpO1xuXHQgICAgICB9O1xuXHRcblx0ICAgICAgQ29ubmVjdC5wcm90b3R5cGUuaW5p
dFN1YnNjcmlwdGlvbiA9IGZ1bmN0aW9uIGluaXRTdWJzY3JpcHRpb24oKSB7XG5cdCAgICAgICAg
aWYgKCFzaG91bGRIYW5kbGVTdGF0ZUNoYW5nZXMpIHJldHVybjtcblx0XG5cdCAgICAgICAgLy8g
cGFyZW50U3ViJ3Mgc291cmNlIHNob3VsZCBtYXRjaCB3aGVyZSBzdG9yZSBjYW1lIGZyb206IHBy
b3BzIHZzLiBjb250ZXh0LiBBIGNvbXBvbmVudFxuXHQgICAgICAgIC8vIGNvbm5lY3RlZCB0byB0
aGUgc3RvcmUgdmlhIHByb3BzIHNob3VsZG4ndCB1c2Ugc3Vic2NyaXB0aW9uIGZyb20gY29udGV4
dCwgb3IgdmljZSB2ZXJzYS5cblx0ICAgICAgICB2YXIgcGFyZW50U3ViID0gKHRoaXMucHJvcHNN
b2RlID8gdGhpcy5wcm9wcyA6IHRoaXMuY29udGV4dClbc3Vic2NyaXB0aW9uS2V5XTtcblx0ICAg
ICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IG5ldyBfU3Vic2NyaXB0aW9uMi5kZWZhdWx0KHRoaXMu
c3RvcmUsIHBhcmVudFN1YiwgdGhpcy5vblN0YXRlQ2hhbmdlLmJpbmQodGhpcykpO1xuXHRcblx0
ICAgICAgICAvLyBgbm90aWZ5TmVzdGVkU3Vic2AgaXMgZHVwbGljYXRlZCB0byBoYW5kbGUgdGhl
IGNhc2Ugd2hlcmUgdGhlIGNvbXBvbmVudCBpcyAgdW5tb3VudGVkIGluXG5cdCAgICAgICAgLy8g
dGhlIG1pZGRsZSBvZiB0aGUgbm90aWZpY2F0aW9uIGxvb3AsIHdoZXJlIGB0aGlzLnN1YnNjcmlw
dGlvbmAgd2lsbCB0aGVuIGJlIG51bGwuIEFuXG5cdCAgICAgICAgLy8gZXh0cmEgbnVsbCBjaGVj
ayBldmVyeSBjaGFuZ2UgY2FuIGJlIGF2b2lkZWQgYnkgY29weWluZyB0aGUgbWV0aG9kIG9udG8g
YHRoaXNgIGFuZCB0aGVuXG5cdCAgICAgICAgLy8gcmVwbGFjaW5nIGl0IHdpdGggYSBuby1vcCBv
biB1bm1vdW50LiBUaGlzIGNhbiBwcm9iYWJseSBiZSBhdm9pZGVkIGlmIFN1YnNjcmlwdGlvbidz
XG5cdCAgICAgICAgLy8gbGlzdGVuZXJzIGxvZ2ljIGlzIGNoYW5nZWQgdG8gbm90IGNhbGwgbGlz
dGVuZXJzIHRoYXQgaGF2ZSBiZWVuIHVuc3Vic2NyaWJlZCBpbiB0aGVcblx0ICAgICAgICAvLyBt
aWRkbGUgb2YgdGhlIG5vdGlmaWNhdGlvbiBsb29wLlxuXHQgICAgICAgIHRoaXMubm90aWZ5TmVz
dGVkU3VicyA9IHRoaXMuc3Vic2NyaXB0aW9uLm5vdGlmeU5lc3RlZFN1YnMuYmluZCh0aGlzLnN1
YnNjcmlwdGlvbik7XG5cdCAgICAgIH07XG5cdFxuXHQgICAgICBDb25uZWN0LnByb3RvdHlwZS5v
blN0YXRlQ2hhbmdlID0gZnVuY3Rpb24gb25TdGF0ZUNoYW5nZSgpIHtcblx0ICAgICAgICB0aGlz
LnNlbGVjdG9yLnJ1bih0aGlzLnByb3BzKTtcblx0XG5cdCAgICAgICAgaWYgKCF0aGlzLnNlbGVj
dG9yLnNob3VsZENvbXBvbmVudFVwZGF0ZSkge1xuXHQgICAgICAgICAgdGhpcy5ub3RpZnlOZXN0
ZWRTdWJzKCk7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIHRoaXMuY29tcG9uZW50
RGlkVXBkYXRlID0gdGhpcy5ub3RpZnlOZXN0ZWRTdWJzT25Db21wb25lbnREaWRVcGRhdGU7XG5c
dCAgICAgICAgICB0aGlzLnNldFN0YXRlKGR1bW15U3RhdGUpO1xuXHQgICAgICAgIH1cblx0ICAg
ICAgfTtcblx0XG5cdCAgICAgIENvbm5lY3QucHJvdG90eXBlLm5vdGlmeU5lc3RlZFN1YnNPbkNv
bXBvbmVudERpZFVwZGF0ZSA9IGZ1bmN0aW9uIG5vdGlmeU5lc3RlZFN1YnNPbkNvbXBvbmVudERp
ZFVwZGF0ZSgpIHtcblx0ICAgICAgICAvLyBgY29tcG9uZW50RGlkVXBkYXRlYCBpcyBjb25kaXRp
b25hbGx5IGltcGxlbWVudGVkIHdoZW4gYG9uU3RhdGVDaGFuZ2VgIGRldGVybWluZXMgaXRcblx0
ICAgICAgICAvLyBuZWVkcyB0byBub3RpZnkgbmVzdGVkIHN1YnMuIE9uY2UgY2FsbGVkLCBpdCB1
bmltcGxlbWVudHMgaXRzZWxmIHVudGlsIGZ1cnRoZXIgc3RhdGVcblx0ICAgICAgICAvLyBjaGFu
Z2VzIG9jY3VyLiBEb2luZyBpdCB0aGlzIHdheSB2cyBoYXZpbmcgYSBwZXJtYW5lbnQgYGNvbXBv
bmVudERpZFVwZGF0ZWAgdGhhdCBkb2VzXG5cdCAgICAgICAgLy8gYSBib29sZWFuIGNoZWNrIGV2
ZXJ5IHRpbWUgYXZvaWRzIGFuIGV4dHJhIG1ldGhvZCBjYWxsIG1vc3Qgb2YgdGhlIHRpbWUsIHJl
c3VsdGluZ1xuXHQgICAgICAgIC8vIGluIHNvbWUgcGVyZiBib29zdC5cblx0ICAgICAgICB0aGlz
LmNvbXBvbmVudERpZFVwZGF0ZSA9IHVuZGVmaW5lZDtcblx0ICAgICAgICB0aGlzLm5vdGlmeU5l
c3RlZFN1YnMoKTtcblx0ICAgICAgfTtcblx0XG5cdCAgICAgIENvbm5lY3QucHJvdG90eXBlLmlz
U3Vic2NyaWJlZCA9IGZ1bmN0aW9uIGlzU3Vic2NyaWJlZCgpIHtcblx0ICAgICAgICByZXR1cm4g
Qm9vbGVhbih0aGlzLnN1YnNjcmlwdGlvbikgJiYgdGhpcy5zdWJzY3JpcHRpb24uaXNTdWJzY3Jp
YmVkKCk7XG5cdCAgICAgIH07XG5cdFxuXHQgICAgICBDb25uZWN0LnByb3RvdHlwZS5hZGRFeHRy
YVByb3BzID0gZnVuY3Rpb24gYWRkRXh0cmFQcm9wcyhwcm9wcykge1xuXHQgICAgICAgIGlmICgh
d2l0aFJlZiAmJiAhcmVuZGVyQ291bnRQcm9wICYmICEodGhpcy5wcm9wc01vZGUgJiYgdGhpcy5z
dWJzY3JpcHRpb24pKSByZXR1cm4gcHJvcHM7XG5cdCAgICAgICAgLy8gbWFrZSBhIHNoYWxsb3cg
Y29weSBzbyB0aGF0IGZpZWxkcyBhZGRlZCBkb24ndCBsZWFrIHRvIHRoZSBvcmlnaW5hbCBzZWxl
Y3Rvci5cblx0ICAgICAgICAvLyB0aGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGZvciAncmVm
JyBzaW5jZSB0aGF0J3MgYSByZWZlcmVuY2UgYmFjayB0byB0aGUgY29tcG9uZW50XG5cdCAgICAg
ICAgLy8gaW5zdGFuY2UuIGEgc2luZ2xldG9uIG1lbW9pemVkIHNlbGVjdG9yIHdvdWxkIHRoZW4g
YmUgaG9sZGluZyBhIHJlZmVyZW5jZSB0byB0aGVcblx0ICAgICAgICAvLyBpbnN0YW5jZSwgcHJl
dmVudGluZyB0aGUgaW5zdGFuY2UgZnJvbSBiZWluZyBnYXJiYWdlIGNvbGxlY3RlZCwgYW5kIHRo
YXQgd291bGQgYmUgYmFkXG5cdCAgICAgICAgdmFyIHdpdGhFeHRyYXMgPSBfZXh0ZW5kcyh7fSwg
cHJvcHMpO1xuXHQgICAgICAgIGlmICh3aXRoUmVmKSB3aXRoRXh0cmFzLnJlZiA9IHRoaXMuc2V0
V3JhcHBlZEluc3RhbmNlO1xuXHQgICAgICAgIGlmIChyZW5kZXJDb3VudFByb3ApIHdpdGhFeHRy
YXNbcmVuZGVyQ291bnRQcm9wXSA9IHRoaXMucmVuZGVyQ291bnQrKztcblx0ICAgICAgICBpZiAo
dGhpcy5wcm9wc01vZGUgJiYgdGhpcy5zdWJzY3JpcHRpb24pIHdpdGhFeHRyYXNbc3Vic2NyaXB0
aW9uS2V5XSA9IHRoaXMuc3Vic2NyaXB0aW9uO1xuXHQgICAgICAgIHJldHVybiB3aXRoRXh0cmFz
O1xuXHQgICAgICB9O1xuXHRcblx0ICAgICAgQ29ubmVjdC5wcm90b3R5cGUucmVuZGVyID0gZnVu
Y3Rpb24gcmVuZGVyKCkge1xuXHQgICAgICAgIHZhciBzZWxlY3RvciA9IHRoaXMuc2VsZWN0b3I7
XG5cdCAgICAgICAgc2VsZWN0b3Iuc2hvdWxkQ29tcG9uZW50VXBkYXRlID0gZmFsc2U7XG5cdFxu
XHQgICAgICAgIGlmIChzZWxlY3Rvci5lcnJvcikge1xuXHQgICAgICAgICAgdGhyb3cgc2VsZWN0
b3IuZXJyb3I7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIHJldHVybiAoMCwgX3Jl
YWN0LmNyZWF0ZUVsZW1lbnQpKFdyYXBwZWRDb21wb25lbnQsIHRoaXMuYWRkRXh0cmFQcm9wcyhz
ZWxlY3Rvci5wcm9wcykpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfTtcblx0XG5cdCAgICAgIHJl
dHVybiBDb25uZWN0O1xuXHQgICAgfShfcmVhY3QuQ29tcG9uZW50KTtcblx0XG5cdCAgICBDb25u
ZWN0LldyYXBwZWRDb21wb25lbnQgPSBXcmFwcGVkQ29tcG9uZW50O1xuXHQgICAgQ29ubmVjdC5k
aXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lO1xuXHQgICAgQ29ubmVjdC5jaGlsZENvbnRleHRUeXBl
cyA9IGNoaWxkQ29udGV4dFR5cGVzO1xuXHQgICAgQ29ubmVjdC5jb250ZXh0VHlwZXMgPSBjb250
ZXh0VHlwZXM7XG5cdCAgICBDb25uZWN0LnByb3BUeXBlcyA9IGNvbnRleHRUeXBlcztcblx0XG5c
dCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgQ29ubmVjdC5wcm90b3R5cGUuY29tcG9uZW50V2ls
bFVwZGF0ZSA9IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVcGRhdGUoKSB7XG5cdCAgICAgICAgdmFy
IF90aGlzMiA9IHRoaXM7XG5cdFxuXHQgICAgICAgIC8vIFdlIGFyZSBob3QgcmVsb2FkaW5nIVxu
XHQgICAgICAgIGlmICh0aGlzLnZlcnNpb24gIT09IHZlcnNpb24pIHtcblx0ICAgICAgICAgIHRo
aXMudmVyc2lvbiA9IHZlcnNpb247XG5cdCAgICAgICAgICB0aGlzLmluaXRTZWxlY3RvcigpO1xu
XHRcblx0ICAgICAgICAgIC8vIElmIGFueSBjb25uZWN0ZWQgZGVzY2VuZGFudHMgZG9uJ3QgaG90
IHJlbG9hZCAoYW5kIHJlc3Vic2NyaWJlIGluIHRoZSBwcm9jZXNzKSwgdGhlaXJcblx0ICAgICAg
ICAgIC8vIGxpc3RlbmVycyB3aWxsIGJlIGxvc3Qgd2hlbiB3ZSB1bnN1YnNjcmliZS4gVW5mb3J0
dW5hdGVseSwgYnkgY29weWluZyBvdmVyIGFsbFxuXHQgICAgICAgICAgLy8gbGlzdGVuZXJzLCB0
aGlzIGRvZXMgbWVhbiB0aGF0IHRoZSBvbGQgdmVyc2lvbnMgb2YgY29ubmVjdGVkIGRlc2NlbmRh
bnRzIHdpbGwgc3RpbGwgYmVcblx0ICAgICAgICAgIC8vIG5vdGlmaWVkIG9mIHN0YXRlIGNoYW5n
ZXM7IGhvd2V2ZXIsIHRoZWlyIG9uU3RhdGVDaGFuZ2UgZnVuY3Rpb24gaXMgYSBuby1vcCBzbyB0
aGlzXG5cdCAgICAgICAgICAvLyBpc24ndCBhIGh1Z2UgZGVhbC5cblx0ICAgICAgICAgIHZhciBv
bGRMaXN0ZW5lcnMgPSBbXTtcblx0XG5cdCAgICAgICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24p
IHtcblx0ICAgICAgICAgICAgb2xkTGlzdGVuZXJzID0gdGhpcy5zdWJzY3JpcHRpb24ubGlzdGVu
ZXJzLmdldCgpO1xuXHQgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi50cnlVbnN1YnNjcmli
ZSgpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgdGhpcy5pbml0U3Vic2NyaXB0aW9uKCk7
XG5cdCAgICAgICAgICBpZiAoc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzKSB7XG5cdCAgICAgICAg
ICAgIHRoaXMuc3Vic2NyaXB0aW9uLnRyeVN1YnNjcmliZSgpO1xuXHQgICAgICAgICAgICBvbGRM
aXN0ZW5lcnMuZm9yRWFjaChmdW5jdGlvbiAobGlzdGVuZXIpIHtcblx0ICAgICAgICAgICAgICBy
ZXR1cm4gX3RoaXMyLnN1YnNjcmlwdGlvbi5saXN0ZW5lcnMuc3Vic2NyaWJlKGxpc3RlbmVyKTtc
blx0ICAgICAgICAgICAgfSk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9
O1xuXHQgICAgfVxuXHRcblx0ICAgIHJldHVybiAoMCwgX2hvaXN0Tm9uUmVhY3RTdGF0aWNzMi5k
ZWZhdWx0KShDb25uZWN0LCBXcmFwcGVkQ29tcG9uZW50KTtcblx0ICB9O1xuXHR9XG5cbi8qKiov
IH0sXG4vKiA4MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0ZXhwb3J0cy5fX2VzTW9kdWxl
ID0gdHJ1ZTtcblx0ZXhwb3J0cy53cmFwTWFwVG9Qcm9wc0NvbnN0YW50ID0gd3JhcE1hcFRvUHJv
cHNDb25zdGFudDtcblx0ZXhwb3J0cy5nZXREZXBlbmRzT25Pd25Qcm9wcyA9IGdldERlcGVuZHNP
bk93blByb3BzO1xuXHRleHBvcnRzLndyYXBNYXBUb1Byb3BzRnVuYyA9IHdyYXBNYXBUb1Byb3Bz
RnVuYztcblx0XG5cdHZhciBfdmVyaWZ5UGxhaW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDgzKTtcblx0XG5cdHZhciBfdmVyaWZ5UGxhaW5PYmplY3QyID0gX2ludGVyb3BSZXF1aXJlRGVm
YXVsdChfdmVyaWZ5UGxhaW5PYmplY3QpO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJl
RGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVm
YXVsdDogb2JqIH07IH1cblx0XG5cdGZ1bmN0aW9uIHdyYXBNYXBUb1Byb3BzQ29uc3RhbnQoZ2V0
Q29uc3RhbnQpIHtcblx0ICByZXR1cm4gZnVuY3Rpb24gaW5pdENvbnN0YW50U2VsZWN0b3IoZGlz
cGF0Y2gsIG9wdGlvbnMpIHtcblx0ICAgIHZhciBjb25zdGFudCA9IGdldENvbnN0YW50KGRpc3Bh
dGNoLCBvcHRpb25zKTtcblx0XG5cdCAgICBmdW5jdGlvbiBjb25zdGFudFNlbGVjdG9yKCkge1xu
XHQgICAgICByZXR1cm4gY29uc3RhbnQ7XG5cdCAgICB9XG5cdCAgICBjb25zdGFudFNlbGVjdG9y
LmRlcGVuZHNPbk93blByb3BzID0gZmFsc2U7XG5cdCAgICByZXR1cm4gY29uc3RhbnRTZWxlY3Rv
cjtcblx0ICB9O1xuXHR9XG5cdFxuXHQvLyBkZXBlbmRzT25Pd25Qcm9wcyBpcyB1c2VkIGJ5IGNy
ZWF0ZU1hcFRvUHJvcHNQcm94eSB0byBkZXRlcm1pbmUgd2hldGhlciB0byBwYXNzIHByb3BzIGFz
IGFyZ3Ncblx0Ly8gdG8gdGhlIG1hcFRvUHJvcHMgZnVuY3Rpb24gYmVpbmcgd3JhcHBlZC4gSXQg
aXMgYWxzbyB1c2VkIGJ5IG1ha2VQdXJlUHJvcHNTZWxlY3RvciB0byBkZXRlcm1pbmVcblx0Ly8g
d2hldGhlciBtYXBUb1Byb3BzIG5lZWRzIHRvIGJlIGludm9rZWQgd2hlbiBwcm9wcyBoYXZlIGNo
YW5nZWQuXG5cdC8vIFxuXHQvLyBBIGxlbmd0aCBvZiBvbmUgc2lnbmFscyB0aGF0IG1hcFRvUHJv
cHMgZG9lcyBub3QgZGVwZW5kIG9uIHByb3BzIGZyb20gdGhlIHBhcmVudCBjb21wb25lbnQuXG5c
dC8vIEEgbGVuZ3RoIG9mIHplcm8gaXMgYXNzdW1lZCB0byBtZWFuIG1hcFRvUHJvcHMgaXMgZ2V0
dGluZyBhcmdzIHZpYSBhcmd1bWVudHMgb3IgLi4uYXJncyBhbmRcblx0Ly8gdGhlcmVmb3JlIG5v
dCByZXBvcnRpbmcgaXRzIGxlbmd0aCBhY2N1cmF0ZWx5Li5cblx0ZnVuY3Rpb24gZ2V0RGVwZW5k
c09uT3duUHJvcHMobWFwVG9Qcm9wcykge1xuXHQgIHJldHVybiBtYXBUb1Byb3BzLmRlcGVuZHNP
bk93blByb3BzICE9PSBudWxsICYmIG1hcFRvUHJvcHMuZGVwZW5kc09uT3duUHJvcHMgIT09IHVu
ZGVmaW5lZCA/IEJvb2xlYW4obWFwVG9Qcm9wcy5kZXBlbmRzT25Pd25Qcm9wcykgOiBtYXBUb1By
b3BzLmxlbmd0aCAhPT0gMTtcblx0fVxuXHRcblx0Ly8gVXNlZCBieSB3aGVuTWFwU3RhdGVUb1By
b3BzSXNGdW5jdGlvbiBhbmQgd2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lzRnVuY3Rpb24sXG5cdC8v
IHRoaXMgZnVuY3Rpb24gd3JhcHMgbWFwVG9Qcm9wcyBpbiBhIHByb3h5IGZ1bmN0aW9uIHdoaWNo
IGRvZXMgc2V2ZXJhbCB0aGluZ3M6XG5cdC8vIFxuXHQvLyAgKiBEZXRlY3RzIHdoZXRoZXIgdGhl
IG1hcFRvUHJvcHMgZnVuY3Rpb24gYmVpbmcgY2FsbGVkIGRlcGVuZHMgb24gcHJvcHMsIHdoaWNo
XG5cdC8vICAgIGlzIHVzZWQgYnkgc2VsZWN0b3JGYWN0b3J5IHRvIGRlY2lkZSBpZiBpdCBzaG91
bGQgcmVpbnZva2Ugb24gcHJvcHMgY2hhbmdlcy5cblx0Ly8gICAgXG5cdC8vICAqIE9uIGZpcnN0
IGNhbGwsIGhhbmRsZXMgbWFwVG9Qcm9wcyBpZiByZXR1cm5zIGFub3RoZXIgZnVuY3Rpb24sIGFu
ZCB0cmVhdHMgdGhhdFxuXHQvLyAgICBuZXcgZnVuY3Rpb24gYXMgdGhlIHRydWUgbWFwVG9Qcm9w
cyBmb3Igc3Vic2VxdWVudCBjYWxscy5cblx0Ly8gICAgXG5cdC8vICAqIE9uIGZpcnN0IGNhbGws
IHZlcmlmaWVzIHRoZSBmaXJzdCByZXN1bHQgaXMgYSBwbGFpbiBvYmplY3QsIGluIG9yZGVyIHRv
IHdhcm5cblx0Ly8gICAgdGhlIGRldmVsb3BlciB0aGF0IHRoZWlyIG1hcFRvUHJvcHMgZnVuY3Rp
b24gaXMgbm90IHJldHVybmluZyBhIHZhbGlkIHJlc3VsdC5cblx0Ly8gICAgXG5cdGZ1bmN0aW9u
IHdyYXBNYXBUb1Byb3BzRnVuYyhtYXBUb1Byb3BzLCBtZXRob2ROYW1lKSB7XG5cdCAgcmV0dXJu
IGZ1bmN0aW9uIGluaXRQcm94eVNlbGVjdG9yKGRpc3BhdGNoLCBfcmVmKSB7XG5cdCAgICB2YXIg
ZGlzcGxheU5hbWUgPSBfcmVmLmRpc3BsYXlOYW1lO1xuXHRcblx0ICAgIHZhciBwcm94eSA9IGZ1
bmN0aW9uIG1hcFRvUHJvcHNQcm94eShzdGF0ZU9yRGlzcGF0Y2gsIG93blByb3BzKSB7XG5cdCAg
ICAgIHJldHVybiBwcm94eS5kZXBlbmRzT25Pd25Qcm9wcyA/IHByb3h5Lm1hcFRvUHJvcHMoc3Rh
dGVPckRpc3BhdGNoLCBvd25Qcm9wcykgOiBwcm94eS5tYXBUb1Byb3BzKHN0YXRlT3JEaXNwYXRj
aCk7XG5cdCAgICB9O1xuXHRcblx0ICAgIC8vIGFsbG93IGRldGVjdEZhY3RvcnlBbmRWZXJpZnkg
dG8gZ2V0IG93blByb3BzXG5cdCAgICBwcm94eS5kZXBlbmRzT25Pd25Qcm9wcyA9IHRydWU7XG5c
dFxuXHQgICAgcHJveHkubWFwVG9Qcm9wcyA9IGZ1bmN0aW9uIGRldGVjdEZhY3RvcnlBbmRWZXJp
Znkoc3RhdGVPckRpc3BhdGNoLCBvd25Qcm9wcykge1xuXHQgICAgICBwcm94eS5tYXBUb1Byb3Bz
ID0gbWFwVG9Qcm9wcztcblx0ICAgICAgcHJveHkuZGVwZW5kc09uT3duUHJvcHMgPSBnZXREZXBl
bmRzT25Pd25Qcm9wcyhtYXBUb1Byb3BzKTtcblx0ICAgICAgdmFyIHByb3BzID0gcHJveHkoc3Rh
dGVPckRpc3BhdGNoLCBvd25Qcm9wcyk7XG5cdFxuXHQgICAgICBpZiAodHlwZW9mIHByb3BzID09
PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAgICAgcHJveHkubWFwVG9Qcm9wcyA9IHByb3BzO1xuXHQg
ICAgICAgIHByb3h5LmRlcGVuZHNPbk93blByb3BzID0gZ2V0RGVwZW5kc09uT3duUHJvcHMocHJv
cHMpO1xuXHQgICAgICAgIHByb3BzID0gcHJveHkoc3RhdGVPckRpc3BhdGNoLCBvd25Qcm9wcyk7
XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIGlmIChmYWxzZSkgKDAsIF92ZXJpZnlQbGFpbk9iamVj
dDIuZGVmYXVsdCkocHJvcHMsIGRpc3BsYXlOYW1lLCBtZXRob2ROYW1lKTtcblx0XG5cdCAgICAg
IHJldHVybiBwcm9wcztcblx0ICAgIH07XG5cdFxuXHQgICAgcmV0dXJuIHByb3h5O1xuXHQgIH07
XG5cdH1cblxuLyoqKi8gfSxcbi8qIDgxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRleHBv
cnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXHRleHBvcnRzLmNvbm5lY3QgPSBleHBvcnRzLmNvbm5l
Y3RBZHZhbmNlZCA9IGV4cG9ydHMuY3JlYXRlUHJvdmlkZXIgPSBleHBvcnRzLlByb3ZpZGVyID0g
dW5kZWZpbmVkO1xuXHRcblx0dmFyIF9Qcm92aWRlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTg3
KTtcblx0XG5cdHZhciBfUHJvdmlkZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfUHJvdmlk
ZXIpO1xuXHRcblx0dmFyIF9jb25uZWN0QWR2YW5jZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc5
KTtcblx0XG5cdHZhciBfY29ubmVjdEFkdmFuY2VkMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQo
X2Nvbm5lY3RBZHZhbmNlZCk7XG5cdFxuXHR2YXIgX2Nvbm5lY3QgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDE4OCk7XG5cdFxuXHR2YXIgX2Nvbm5lY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChf
Y29ubmVjdCk7XG5cdFxuXHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyBy
ZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxu
XHRcblx0ZXhwb3J0cy5Qcm92aWRlciA9IF9Qcm92aWRlcjIuZGVmYXVsdDtcblx0ZXhwb3J0cy5j
cmVhdGVQcm92aWRlciA9IF9Qcm92aWRlci5jcmVhdGVQcm92aWRlcjtcblx0ZXhwb3J0cy5jb25u
ZWN0QWR2YW5jZWQgPSBfY29ubmVjdEFkdmFuY2VkMi5kZWZhdWx0O1xuXHRleHBvcnRzLmNvbm5l
Y3QgPSBfY29ubmVjdDIuZGVmYXVsdDtcblxuLyoqKi8gfSxcbi8qIDgyICovXG4vKioqLyBmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0
cmljdCc7XG5cdFxuXHRleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXHRleHBvcnRzLnN0b3Jl
U2hhcGUgPSBleHBvcnRzLnN1YnNjcmlwdGlvblNoYXBlID0gdW5kZWZpbmVkO1xuXHRcblx0dmFy
IF9wcm9wVHlwZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU2KTtcblx0XG5cdHZhciBfcHJvcFR5
cGVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Byb3BUeXBlcyk7XG5cdFxuXHRmdW5jdGlv
biBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9k
dWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXHRcblx0dmFyIHN1YnNjcmlwdGlvblNo
YXBlID0gZXhwb3J0cy5zdWJzY3JpcHRpb25TaGFwZSA9IF9wcm9wVHlwZXMyLmRlZmF1bHQuc2hh
cGUoe1xuXHQgIHRyeVN1YnNjcmliZTogX3Byb3BUeXBlczIuZGVmYXVsdC5mdW5jLmlzUmVxdWly
ZWQsXG5cdCAgdHJ5VW5zdWJzY3JpYmU6IF9wcm9wVHlwZXMyLmRlZmF1bHQuZnVuYy5pc1JlcXVp
cmVkLFxuXHQgIG5vdGlmeU5lc3RlZFN1YnM6IF9wcm9wVHlwZXMyLmRlZmF1bHQuZnVuYy5pc1Jl
cXVpcmVkLFxuXHQgIGlzU3Vic2NyaWJlZDogX3Byb3BUeXBlczIuZGVmYXVsdC5mdW5jLmlzUmVx
dWlyZWRcblx0fSk7XG5cdFxuXHR2YXIgc3RvcmVTaGFwZSA9IGV4cG9ydHMuc3RvcmVTaGFwZSA9
IF9wcm9wVHlwZXMyLmRlZmF1bHQuc2hhcGUoe1xuXHQgIHN1YnNjcmliZTogX3Byb3BUeXBlczIu
ZGVmYXVsdC5mdW5jLmlzUmVxdWlyZWQsXG5cdCAgZGlzcGF0Y2g6IF9wcm9wVHlwZXMyLmRlZmF1
bHQuZnVuYy5pc1JlcXVpcmVkLFxuXHQgIGdldFN0YXRlOiBfcHJvcFR5cGVzMi5kZWZhdWx0LmZ1
bmMuaXNSZXF1aXJlZFxuXHR9KTtcblxuLyoqKi8gfSxcbi8qIDgzICovXG4vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmlj
dCc7XG5cdFxuXHRleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXHRleHBvcnRzLmRlZmF1bHQg
PSB2ZXJpZnlQbGFpbk9iamVjdDtcblx0XG5cdHZhciBfaXNQbGFpbk9iamVjdCA9IF9fd2VicGFj
a19yZXF1aXJlX18oMzMpO1xuXHRcblx0dmFyIF9pc1BsYWluT2JqZWN0MiA9IF9pbnRlcm9wUmVx
dWlyZURlZmF1bHQoX2lzUGxhaW5PYmplY3QpO1xuXHRcblx0dmFyIF93YXJuaW5nID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg1MCk7XG5cdFxuXHR2YXIgX3dhcm5pbmcyID0gX2ludGVyb3BSZXF1aXJl
RGVmYXVsdChfd2FybmluZyk7XG5cdFxuXHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0
KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBv
YmogfTsgfVxuXHRcblx0ZnVuY3Rpb24gdmVyaWZ5UGxhaW5PYmplY3QodmFsdWUsIGRpc3BsYXlO
YW1lLCBtZXRob2ROYW1lKSB7XG5cdCAgaWYgKCEoMCwgX2lzUGxhaW5PYmplY3QyLmRlZmF1bHQp
KHZhbHVlKSkge1xuXHQgICAgKDAsIF93YXJuaW5nMi5kZWZhdWx0KShtZXRob2ROYW1lICsgJygp
IGluICcgKyBkaXNwbGF5TmFtZSArICcgbXVzdCByZXR1cm4gYSBwbGFpbiBvYmplY3QuIEluc3Rl
YWQgcmVjZWl2ZWQgJyArIHZhbHVlICsgJy4nKTtcblx0ICB9XG5cdH1cblxuLyoqKi8gfSxcbi8q
IDg0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJl
X18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhw
b3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0XG5cdHZh
ciBfY3JlYXRlQ2xhc3MgPSBmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXMo
dGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7
IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2Ny
aXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVl
OyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVl
OyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRv
cik7IH0gfSByZXR1cm4gZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQ
cm9wcykgeyBpZiAocHJvdG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90
b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29u
c3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KCk7XG5cdFxu
XHR2YXIgX3JlYWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7XG5cdFxuXHR2YXIgX3JlYWN0
MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JlYWN0KTtcblx0XG5cdHZhciBfY2xhc3NuYW1l
cyA9IF9fd2VicGFja19yZXF1aXJlX18oMzEpO1xuXHRcblx0dmFyIF9jbGFzc25hbWVzMiA9IF9p
bnRlcm9wUmVxdWlyZURlZmF1bHQoX2NsYXNzbmFtZXMpO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVy
b3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9i
aiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblx0XG5cdGZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhp
bnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1
Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBm
dW5jdGlvblwiKTsgfSB9XG5cdFxuXHRmdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVy
bihzZWxmLCBjYWxsKSB7IGlmICghc2VsZikgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0
aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRc
Iik7IH0gcmV0dXJuIGNhbGwgJiYgKHR5cGVvZiBjYWxsID09PSBcIm9iamVjdFwiIHx8IHR5cGVv
ZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpID8gY2FsbCA6IHNlbGY7IH1cblx0XG5cdGZ1bmN0aW9u
IF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3Mg
IT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBl
RXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlv
biwgbm90IFwiICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9i
amVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1
Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1
ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJv
dG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDog
c3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXHRcblx0dmFyIFRvZG9UZXh0SW5w
dXQgPSBmdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuXHQgIF9pbmhlcml0cyhUb2RvVGV4dElucHV0
LCBfQ29tcG9uZW50KTtcblx0XG5cdCAgZnVuY3Rpb24gVG9kb1RleHRJbnB1dCgpIHtcblx0ICAg
IHZhciBfcmVmO1xuXHRcblx0ICAgIHZhciBfdGVtcCwgX3RoaXMsIF9yZXQ7XG5cdFxuXHQgICAg
X2NsYXNzQ2FsbENoZWNrKHRoaXMsIFRvZG9UZXh0SW5wdXQpO1xuXHRcblx0ICAgIGZvciAodmFy
IF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBf
a2V5IDwgX2xlbjsgX2tleSsrKSB7XG5cdCAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tl
eV07XG5cdCAgICB9XG5cdFxuXHQgICAgcmV0dXJuIF9yZXQgPSAoX3RlbXAgPSAoX3RoaXMgPSBf
cG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCAoX3JlZiA9IFRvZG9UZXh0SW5wdXQuX19w
cm90b19fIHx8IE9iamVjdC5nZXRQcm90b3R5cGVPZihUb2RvVGV4dElucHV0KSkuY2FsbC5hcHBs
eShfcmVmLCBbdGhpc10uY29uY2F0KGFyZ3MpKSksIF90aGlzKSwgX3RoaXMuc3RhdGUgPSB7XG5c
dCAgICAgIHRleHQ6IF90aGlzLnByb3BzLnRleHQgfHwgJydcblx0ICAgIH0sIF90aGlzLmhhbmRs
ZVN1Ym1pdCA9IGZ1bmN0aW9uIChlKSB7XG5cdCAgICAgIHZhciB0ZXh0ID0gZS50YXJnZXQudmFs
dWUudHJpbSgpO1xuXHQgICAgICBpZiAoZS53aGljaCA9PT0gMTMpIHtcblx0ICAgICAgICBfdGhp
cy5wcm9wcy5vblNhdmUodGV4dCk7XG5cdCAgICAgICAgaWYgKF90aGlzLnByb3BzLm5ld1RvZG8p
IHtcblx0ICAgICAgICAgIF90aGlzLnNldFN0YXRlKHsgdGV4dDogJycgfSk7XG5cdCAgICAgICAg
fVxuXHQgICAgICB9XG5cdCAgICB9LCBfdGhpcy5oYW5kbGVDaGFuZ2UgPSBmdW5jdGlvbiAoZSkg
e1xuXHQgICAgICBfdGhpcy5zZXRTdGF0ZSh7IHRleHQ6IGUudGFyZ2V0LnZhbHVlIH0pO1xuXHQg
ICAgfSwgX3RoaXMuaGFuZGxlQmx1ciA9IGZ1bmN0aW9uIChlKSB7XG5cdCAgICAgIGlmICghX3Ro
aXMucHJvcHMubmV3VG9kbykge1xuXHQgICAgICAgIF90aGlzLnByb3BzLm9uU2F2ZShlLnRhcmdl
dC52YWx1ZSk7XG5cdCAgICAgIH1cblx0ICAgIH0sIF90ZW1wKSwgX3Bvc3NpYmxlQ29uc3RydWN0
b3JSZXR1cm4oX3RoaXMsIF9yZXQpO1xuXHQgIH1cblx0XG5cdCAgX2NyZWF0ZUNsYXNzKFRvZG9U
ZXh0SW5wdXQsIFt7XG5cdCAgICBrZXk6ICdyZW5kZXInLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9u
IHJlbmRlcigpIHtcblx0ICAgICAgcmV0dXJuIF9yZWFjdDIuZGVmYXVsdC5jcmVhdGVFbGVtZW50
KCdpbnB1dCcsIHsgY2xhc3NOYW1lOiAoMCwgX2NsYXNzbmFtZXMyLmRlZmF1bHQpKHtcblx0ICAg
ICAgICAgIGVkaXQ6IHRoaXMucHJvcHMuZWRpdGluZyxcblx0ICAgICAgICAgICduZXctdG9kbyc6
IHRoaXMucHJvcHMubmV3VG9kb1xuXHQgICAgICAgIH0pLFxuXHQgICAgICAgIHR5cGU6ICd0ZXh0
Jyxcblx0ICAgICAgICBwbGFjZWhvbGRlcjogdGhpcy5wcm9wcy5wbGFjZWhvbGRlcixcblx0ICAg
ICAgICBhdXRvRm9jdXM6ICd0cnVlJyxcblx0ICAgICAgICB2YWx1ZTogdGhpcy5zdGF0ZS50ZXh0
LFxuXHQgICAgICAgIG9uQmx1cjogdGhpcy5oYW5kbGVCbHVyLFxuXHQgICAgICAgIG9uQ2hhbmdl
OiB0aGlzLmhhbmRsZUNoYW5nZSxcblx0ICAgICAgICBvbktleURvd246IHRoaXMuaGFuZGxlU3Vi
bWl0IH0pO1xuXHQgICAgfVxuXHQgIH1dKTtcblx0XG5cdCAgcmV0dXJuIFRvZG9UZXh0SW5wdXQ7
XG5cdH0oX3JlYWN0LkNvbXBvbmVudCk7XG5cdFxuXHRUb2RvVGV4dElucHV0LnByb3BUeXBlcyA9
IHtcblx0ICBvblNhdmU6IF9yZWFjdC5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuXHQgIHRl
eHQ6IF9yZWFjdC5Qcm9wVHlwZXMuc3RyaW5nLFxuXHQgIHBsYWNlaG9sZGVyOiBfcmVhY3QuUHJv
cFR5cGVzLnN0cmluZyxcblx0ICBlZGl0aW5nOiBfcmVhY3QuUHJvcFR5cGVzLmJvb2wsXG5cdCAg
bmV3VG9kbzogX3JlYWN0LlByb3BUeXBlcy5ib29sXG5cdH07XG5cdGV4cG9ydHMuZGVmYXVsdCA9
IFRvZG9UZXh0SW5wdXQ7XG5cbi8qKiovIH0sXG4vKiA4NSAqL1xuLyoqKi8gZnVuY3Rpb24obW9k
dWxlLCBleHBvcnRzKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0T2JqZWN0LmRlZmluZVBy
b3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7
XG5cdHZhciBBRERfVE9ETyA9IGV4cG9ydHMuQUREX1RPRE8gPSAnQUREX1RPRE8nO1xuXHR2YXIg
REVMRVRFX1RPRE8gPSBleHBvcnRzLkRFTEVURV9UT0RPID0gJ0RFTEVURV9UT0RPJztcblx0dmFy
IEVESVRfVE9ETyA9IGV4cG9ydHMuRURJVF9UT0RPID0gJ0VESVRfVE9ETyc7XG5cdHZhciBDT01Q
TEVURV9UT0RPID0gZXhwb3J0cy5DT01QTEVURV9UT0RPID0gJ0NPTVBMRVRFX1RPRE8nO1xuXHR2
YXIgQ09NUExFVEVfQUxMID0gZXhwb3J0cy5DT01QTEVURV9BTEwgPSAnQ09NUExFVEVfQUxMJztc
blx0dmFyIENMRUFSX0NPTVBMRVRFRCA9IGV4cG9ydHMuQ0xFQVJfQ09NUExFVEVEID0gJ0NMRUFS
X0NPTVBMRVRFRCc7XG5cbi8qKiovIH0sXG4vKiA4NiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0T2JqZWN0LmRlZmluZVByb3Bl
cnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7XG5c
dHZhciBTSE9XX0FMTCA9IGV4cG9ydHMuU0hPV19BTEwgPSAnc2hvd19hbGwnO1xuXHR2YXIgU0hP
V19DT01QTEVURUQgPSBleHBvcnRzLlNIT1dfQ09NUExFVEVEID0gJ3Nob3dfY29tcGxldGVkJztc
blx0dmFyIFNIT1dfQUNUSVZFID0gZXhwb3J0cy5TSE9XX0FDVElWRSA9ICdzaG93X2FjdGl2ZSc7
XG5cbi8qKiovIH0sXG4vKiA4NyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7
XG5cblx0Ly8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG5cdHZhciBwcm9jZXNz
ID0gbW9kdWxlLmV4cG9ydHMgPSB7fTtcblx0XG5cdC8vIGNhY2hlZCBmcm9tIHdoYXRldmVyIGds
b2JhbCBpcyBwcmVzZW50IHNvIHRoYXQgdGVzdCBydW5uZXJzIHRoYXQgc3R1YiBpdFxuXHQvLyBk
b24ndCBicmVhayB0aGluZ3MuICBCdXQgd2UgbmVlZCB0byB3cmFwIGl0IGluIGEgdHJ5IGNhdGNo
IGluIGNhc2UgaXQgaXNcblx0Ly8gd3JhcHBlZCBpbiBzdHJpY3QgbW9kZSBjb2RlIHdoaWNoIGRv
ZXNuJ3QgZGVmaW5lIGFueSBnbG9iYWxzLiAgSXQncyBpbnNpZGUgYVxuXHQvLyBmdW5jdGlvbiBi
ZWNhdXNlIHRyeS9jYXRjaGVzIGRlb3B0aW1pemUgaW4gY2VydGFpbiBlbmdpbmVzLlxuXHRcblx0
dmFyIGNhY2hlZFNldFRpbWVvdXQ7XG5cdHZhciBjYWNoZWRDbGVhclRpbWVvdXQ7XG5cdFxuXHRm
dW5jdGlvbiBkZWZhdWx0U2V0VGltb3V0KCkge1xuXHQgICAgdGhyb3cgbmV3IEVycm9yKCdzZXRU
aW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG5cdH1cblx0ZnVuY3Rpb24gZGVmYXVsdENs
ZWFyVGltZW91dCAoKSB7XG5cdCAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBoYXMg
bm90IGJlZW4gZGVmaW5lZCcpO1xuXHR9XG5cdChmdW5jdGlvbiAoKSB7XG5cdCAgICB0cnkge1xu
XHQgICAgICAgIGlmICh0eXBlb2Ygc2V0VGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuXHQgICAg
ICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcblx0ICAgICAgICB9IGVsc2Ug
e1xuXHQgICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcblx0
ICAgICAgICB9XG5cdCAgICB9IGNhdGNoIChlKSB7XG5cdCAgICAgICAgY2FjaGVkU2V0VGltZW91
dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG5cdCAgICB9XG5cdCAgICB0cnkge1xuXHQgICAgICAgIGlm
ICh0eXBlb2YgY2xlYXJUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAgICAgICAgIGNh
Y2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQg
ICAgICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBkZWZhdWx0Q2xlYXJUaW1lb3V0O1xuXHQg
ICAgICAgIH1cblx0ICAgIH0gY2F0Y2ggKGUpIHtcblx0ICAgICAgICBjYWNoZWRDbGVhclRpbWVv
dXQgPSBkZWZhdWx0Q2xlYXJUaW1lb3V0O1xuXHQgICAgfVxuXHR9ICgpKVxuXHRmdW5jdGlvbiBy
dW5UaW1lb3V0KGZ1bikge1xuXHQgICAgaWYgKGNhY2hlZFNldFRpbWVvdXQgPT09IHNldFRpbWVv
dXQpIHtcblx0ICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNc
blx0ICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuXHQgICAgfVxuXHQgICAgLy8g
aWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcblx0
ICAgIGlmICgoY2FjaGVkU2V0VGltZW91dCA9PT0gZGVmYXVsdFNldFRpbW91dCB8fCAhY2FjaGVk
U2V0VGltZW91dCkgJiYgc2V0VGltZW91dCkge1xuXHQgICAgICAgIGNhY2hlZFNldFRpbWVvdXQg
PSBzZXRUaW1lb3V0O1xuXHQgICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG5cdCAg
ICB9XG5cdCAgICB0cnkge1xuXHQgICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2Ny
ZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3Ncblx0ICAgICAgICByZXR1
cm4gY2FjaGVkU2V0VGltZW91dChmdW4sIDApO1xuXHQgICAgfSBjYXRjaChlKXtcblx0ICAgICAg
ICB0cnkge1xuXHQgICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2Ny
aXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgdHJ1c3QgdGhlIGdsb2JhbCBvYmpl
Y3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcblx0ICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRp
bWVvdXQuY2FsbChudWxsLCBmdW4sIDApO1xuXHQgICAgICAgIH0gY2F0Y2goZSl7XG5cdCAgICAg
ICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0
aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIg
Y29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yXG5c
dCAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwodGhpcywgZnVuLCAwKTtc
blx0ICAgICAgICB9XG5cdCAgICB9XG5cdFxuXHRcblx0fVxuXHRmdW5jdGlvbiBydW5DbGVhclRp
bWVvdXQobWFya2VyKSB7XG5cdCAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRp
bWVvdXQpIHtcblx0ICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlv
bnNcblx0ICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG5cdCAgICB9XG5cdCAg
ICAvLyBpZiBjbGVhclRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZp
bmVkXG5cdCAgICBpZiAoKGNhY2hlZENsZWFyVGltZW91dCA9PT0gZGVmYXVsdENsZWFyVGltZW91
dCB8fCAhY2FjaGVkQ2xlYXJUaW1lb3V0KSAmJiBjbGVhclRpbWVvdXQpIHtcblx0ICAgICAgICBj
YWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG5cdCAgICAgICAgcmV0dXJuIGNsZWFy
VGltZW91dChtYXJrZXIpO1xuXHQgICAgfVxuXHQgICAgdHJ5IHtcblx0ICAgICAgICAvLyB3aGVu
IHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1h
ZGRuZXNzXG5cdCAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dChtYXJrZXIpO1xuXHQg
ICAgfSBjYXRjaCAoZSl7XG5cdCAgICAgICAgdHJ5IHtcblx0ICAgICAgICAgICAgLy8gV2hlbiB3
ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vz
bid0ICB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuXHQgICAg
ICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcblx0
ICAgICAgICB9IGNhdGNoIChlKXtcblx0ICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQg
d2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2Jq
ZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0
IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3IuXG5cdCAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lv
bnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRp
bWVvdXRcblx0ICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKHRoaXMs
IG1hcmtlcik7XG5cdCAgICAgICAgfVxuXHQgICAgfVxuXHRcblx0XG5cdFxuXHR9XG5cdHZhciBx
dWV1ZSA9IFtdO1xuXHR2YXIgZHJhaW5pbmcgPSBmYWxzZTtcblx0dmFyIGN1cnJlbnRRdWV1ZTtc
blx0dmFyIHF1ZXVlSW5kZXggPSAtMTtcblx0XG5cdGZ1bmN0aW9uIGNsZWFuVXBOZXh0VGljaygp
IHtcblx0ICAgIGlmICghZHJhaW5pbmcgfHwgIWN1cnJlbnRRdWV1ZSkge1xuXHQgICAgICAgIHJl
dHVybjtcblx0ICAgIH1cblx0ICAgIGRyYWluaW5nID0gZmFsc2U7XG5cdCAgICBpZiAoY3VycmVu
dFF1ZXVlLmxlbmd0aCkge1xuXHQgICAgICAgIHF1ZXVlID0gY3VycmVudFF1ZXVlLmNvbmNhdChx
dWV1ZSk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcblx0ICAg
IH1cblx0ICAgIGlmIChxdWV1ZS5sZW5ndGgpIHtcblx0ICAgICAgICBkcmFpblF1ZXVlKCk7XG5c
dCAgICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGRyYWluUXVldWUoKSB7XG5cdCAgICBpZiAoZHJh
aW5pbmcpIHtcblx0ICAgICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAgICB2YXIgdGltZW91dCA9
IHJ1blRpbWVvdXQoY2xlYW5VcE5leHRUaWNrKTtcblx0ICAgIGRyYWluaW5nID0gdHJ1ZTtcblx0
XG5cdCAgICB2YXIgbGVuID0gcXVldWUubGVuZ3RoO1xuXHQgICAgd2hpbGUobGVuKSB7XG5cdCAg
ICAgICAgY3VycmVudFF1ZXVlID0gcXVldWU7XG5cdCAgICAgICAgcXVldWUgPSBbXTtcblx0ICAg
ICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG5cdCAgICAgICAgICAgIGlmIChjdXJy
ZW50UXVldWUpIHtcblx0ICAgICAgICAgICAgICAgIGN1cnJlbnRRdWV1ZVtxdWV1ZUluZGV4XS5y
dW4oKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICBxdWV1ZUluZGV4
ID0gLTE7XG5cdCAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuXHQgICAgfVxuXHQgICAgY3Vy
cmVudFF1ZXVlID0gbnVsbDtcblx0ICAgIGRyYWluaW5nID0gZmFsc2U7XG5cdCAgICBydW5DbGVh
clRpbWVvdXQodGltZW91dCk7XG5cdH1cblx0XG5cdHByb2Nlc3MubmV4dFRpY2sgPSBmdW5jdGlv
biAoZnVuKSB7XG5cdCAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoIC0g
MSk7XG5cdCAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcblx0ICAgICAgICBmb3IgKHZh
ciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuXHQgICAgICAgICAgICBhcmdz
W2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcblx0ICAgICAgICB9XG5cdCAgICB9XG5cdCAgICBxdWV1
ZS5wdXNoKG5ldyBJdGVtKGZ1biwgYXJncykpO1xuXHQgICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0g
MSAmJiAhZHJhaW5pbmcpIHtcblx0ICAgICAgICBydW5UaW1lb3V0KGRyYWluUXVldWUpO1xuXHQg
ICAgfVxuXHR9O1xuXHRcblx0Ly8gdjggbGlrZXMgcHJlZGljdGlibGUgb2JqZWN0c1xuXHRmdW5j
dGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcblx0ICAgIHRoaXMuZnVuID0gZnVuO1xuXHQgICAgdGhp
cy5hcnJheSA9IGFycmF5O1xuXHR9XG5cdEl0ZW0ucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgp
IHtcblx0ICAgIHRoaXMuZnVuLmFwcGx5KG51bGwsIHRoaXMuYXJyYXkpO1xuXHR9O1xuXHRwcm9j
ZXNzLnRpdGxlID0gJ2Jyb3dzZXInO1xuXHRwcm9jZXNzLmJyb3dzZXIgPSB0cnVlO1xuXHRwcm9j
ZXNzLmVudiA9IHt9O1xuXHRwcm9jZXNzLmFyZ3YgPSBbXTtcblx0cHJvY2Vzcy52ZXJzaW9uID0g
Jyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdleHAgaXNzdWVzXG5cdHByb2Nlc3MudmVy
c2lvbnMgPSB7fTtcblx0XG5cdGZ1bmN0aW9uIG5vb3AoKSB7fVxuXHRcblx0cHJvY2Vzcy5vbiA9
IG5vb3A7XG5cdHByb2Nlc3MuYWRkTGlzdGVuZXIgPSBub29wO1xuXHRwcm9jZXNzLm9uY2UgPSBu
b29wO1xuXHRwcm9jZXNzLm9mZiA9IG5vb3A7XG5cdHByb2Nlc3MucmVtb3ZlTGlzdGVuZXIgPSBu
b29wO1xuXHRwcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7XG5cdHByb2Nlc3MuZW1p
dCA9IG5vb3A7XG5cdFxuXHRwcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuXHQg
ICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCcpO1xu
XHR9O1xuXHRcblx0cHJvY2Vzcy5jd2QgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnLycgfTtcblx0
cHJvY2Vzcy5jaGRpciA9IGZ1bmN0aW9uIChkaXIpIHtcblx0ICAgIHRocm93IG5ldyBFcnJvcign
cHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG5cdH07XG5cdHByb2Nlc3MudW1hc2sg
PSBmdW5jdGlvbigpIHsgcmV0dXJuIDA7IH07XG5cblxuLyoqKi8gfSxcbi8qIDg4ICovXG4vKioq
LyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQn
dXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgYXNhcCA9IF9fd2VicGFja19yZXF1aXJlX18oMTk3KTtc
blx0XG5cdGZ1bmN0aW9uIG5vb3AoKSB7fVxuXHRcblx0Ly8gU3RhdGVzOlxuXHQvL1xuXHQvLyAw
IC0gcGVuZGluZ1xuXHQvLyAxIC0gZnVsZmlsbGVkIHdpdGggX3ZhbHVlXG5cdC8vIDIgLSByZWpl
Y3RlZCB3aXRoIF92YWx1ZVxuXHQvLyAzIC0gYWRvcHRlZCB0aGUgc3RhdGUgb2YgYW5vdGhlciBw
cm9taXNlLCBfdmFsdWVcblx0Ly9cblx0Ly8gb25jZSB0aGUgc3RhdGUgaXMgbm8gbG9uZ2VyIHBl
bmRpbmcgKDApIGl0IGlzIGltbXV0YWJsZVxuXHRcblx0Ly8gQWxsIGBfYCBwcmVmaXhlZCBwcm9w
ZXJ0aWVzIHdpbGwgYmUgcmVkdWNlZCB0byBgX3tyYW5kb20gbnVtYmVyfWBcblx0Ly8gYXQgYnVp
bGQgdGltZSB0byBvYmZ1c2NhdGUgdGhlbSBhbmQgZGlzY291cmFnZSB0aGVpciB1c2UuXG5cdC8v
IFdlIGRvbid0IHVzZSBzeW1ib2xzIG9yIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSB0byBmdWxseSBo
aWRlIHRoZW1cblx0Ly8gYmVjYXVzZSB0aGUgcGVyZm9ybWFuY2UgaXNuJ3QgZ29vZCBlbm91Z2gu
XG5cdFxuXHRcblx0Ly8gdG8gYXZvaWQgdXNpbmcgdHJ5L2NhdGNoIGluc2lkZSBjcml0aWNhbCBm
dW5jdGlvbnMsIHdlXG5cdC8vIGV4dHJhY3QgdGhlbSB0byBoZXJlLlxuXHR2YXIgTEFTVF9FUlJP
UiA9IG51bGw7XG5cdHZhciBJU19FUlJPUiA9IHt9O1xuXHRmdW5jdGlvbiBnZXRUaGVuKG9iaikg
e1xuXHQgIHRyeSB7XG5cdCAgICByZXR1cm4gb2JqLnRoZW47XG5cdCAgfSBjYXRjaCAoZXgpIHtc
blx0ICAgIExBU1RfRVJST1IgPSBleDtcblx0ICAgIHJldHVybiBJU19FUlJPUjtcblx0ICB9XG5c
dH1cblx0XG5cdGZ1bmN0aW9uIHRyeUNhbGxPbmUoZm4sIGEpIHtcblx0ICB0cnkge1xuXHQgICAg
cmV0dXJuIGZuKGEpO1xuXHQgIH0gY2F0Y2ggKGV4KSB7XG5cdCAgICBMQVNUX0VSUk9SID0gZXg7
XG5cdCAgICByZXR1cm4gSVNfRVJST1I7XG5cdCAgfVxuXHR9XG5cdGZ1bmN0aW9uIHRyeUNhbGxU
d28oZm4sIGEsIGIpIHtcblx0ICB0cnkge1xuXHQgICAgZm4oYSwgYik7XG5cdCAgfSBjYXRjaCAo
ZXgpIHtcblx0ICAgIExBU1RfRVJST1IgPSBleDtcblx0ICAgIHJldHVybiBJU19FUlJPUjtcblx0
ICB9XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUHJvbWlzZTtcblx0XG5cdGZ1bmN0aW9u
IFByb21pc2UoZm4pIHtcblx0ICBpZiAodHlwZW9mIHRoaXMgIT09ICdvYmplY3QnKSB7XG5cdCAg
ICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQcm9taXNlcyBtdXN0IGJlIGNvbnN0cnVjdGVkIHZpYSBu
ZXcnKTtcblx0ICB9XG5cdCAgaWYgKHR5cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuXHQgICAg
dGhyb3cgbmV3IFR5cGVFcnJvcignbm90IGEgZnVuY3Rpb24nKTtcblx0ICB9XG5cdCAgdGhpcy5f
NDUgPSAwO1xuXHQgIHRoaXMuXzgxID0gMDtcblx0ICB0aGlzLl82NSA9IG51bGw7XG5cdCAgdGhp
cy5fNTQgPSBudWxsO1xuXHQgIGlmIChmbiA9PT0gbm9vcCkgcmV0dXJuO1xuXHQgIGRvUmVzb2x2
ZShmbiwgdGhpcyk7XG5cdH1cblx0UHJvbWlzZS5fMTAgPSBudWxsO1xuXHRQcm9taXNlLl85NyA9
IG51bGw7XG5cdFByb21pc2UuXzYxID0gbm9vcDtcblx0XG5cdFByb21pc2UucHJvdG90eXBlLnRo
ZW4gPSBmdW5jdGlvbihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCkge1xuXHQgIGlmICh0aGlzLmNv
bnN0cnVjdG9yICE9PSBQcm9taXNlKSB7XG5cdCAgICByZXR1cm4gc2FmZVRoZW4odGhpcywgb25G
dWxmaWxsZWQsIG9uUmVqZWN0ZWQpO1xuXHQgIH1cblx0ICB2YXIgcmVzID0gbmV3IFByb21pc2Uo
bm9vcCk7XG5cdCAgaGFuZGxlKHRoaXMsIG5ldyBIYW5kbGVyKG9uRnVsZmlsbGVkLCBvblJlamVj
dGVkLCByZXMpKTtcblx0ICByZXR1cm4gcmVzO1xuXHR9O1xuXHRcblx0ZnVuY3Rpb24gc2FmZVRo
ZW4oc2VsZiwgb25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcblx0ICByZXR1cm4gbmV3IHNlbGYu
Y29uc3RydWN0b3IoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuXHQgICAgdmFyIHJlcyA9
IG5ldyBQcm9taXNlKG5vb3ApO1xuXHQgICAgcmVzLnRoZW4ocmVzb2x2ZSwgcmVqZWN0KTtcblx0
ICAgIGhhbmRsZShzZWxmLCBuZXcgSGFuZGxlcihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCwgcmVz
KSk7XG5cdCAgfSk7XG5cdH07XG5cdGZ1bmN0aW9uIGhhbmRsZShzZWxmLCBkZWZlcnJlZCkge1xu
XHQgIHdoaWxlIChzZWxmLl84MSA9PT0gMykge1xuXHQgICAgc2VsZiA9IHNlbGYuXzY1O1xuXHQg
IH1cblx0ICBpZiAoUHJvbWlzZS5fMTApIHtcblx0ICAgIFByb21pc2UuXzEwKHNlbGYpO1xuXHQg
IH1cblx0ICBpZiAoc2VsZi5fODEgPT09IDApIHtcblx0ICAgIGlmIChzZWxmLl80NSA9PT0gMCkg
e1xuXHQgICAgICBzZWxmLl80NSA9IDE7XG5cdCAgICAgIHNlbGYuXzU0ID0gZGVmZXJyZWQ7XG5c
dCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICAgIGlmIChzZWxmLl80NSA9PT0gMSkge1xuXHQg
ICAgICBzZWxmLl80NSA9IDI7XG5cdCAgICAgIHNlbGYuXzU0ID0gW3NlbGYuXzU0LCBkZWZlcnJl
ZF07XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICAgIHNlbGYuXzU0LnB1c2goZGVmZXJy
ZWQpO1xuXHQgICAgcmV0dXJuO1xuXHQgIH1cblx0ICBoYW5kbGVSZXNvbHZlZChzZWxmLCBkZWZl
cnJlZCk7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGhhbmRsZVJlc29sdmVkKHNlbGYsIGRlZmVycmVk
KSB7XG5cdCAgYXNhcChmdW5jdGlvbigpIHtcblx0ICAgIHZhciBjYiA9IHNlbGYuXzgxID09PSAx
ID8gZGVmZXJyZWQub25GdWxmaWxsZWQgOiBkZWZlcnJlZC5vblJlamVjdGVkO1xuXHQgICAgaWYg
KGNiID09PSBudWxsKSB7XG5cdCAgICAgIGlmIChzZWxmLl84MSA9PT0gMSkge1xuXHQgICAgICAg
IHJlc29sdmUoZGVmZXJyZWQucHJvbWlzZSwgc2VsZi5fNjUpO1xuXHQgICAgICB9IGVsc2Uge1xu
XHQgICAgICAgIHJlamVjdChkZWZlcnJlZC5wcm9taXNlLCBzZWxmLl82NSk7XG5cdCAgICAgIH1c
blx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHQgICAgdmFyIHJldCA9IHRyeUNhbGxPbmUoY2Is
IHNlbGYuXzY1KTtcblx0ICAgIGlmIChyZXQgPT09IElTX0VSUk9SKSB7XG5cdCAgICAgIHJlamVj
dChkZWZlcnJlZC5wcm9taXNlLCBMQVNUX0VSUk9SKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAg
IHJlc29sdmUoZGVmZXJyZWQucHJvbWlzZSwgcmV0KTtcblx0ICAgIH1cblx0ICB9KTtcblx0fVxu
XHRmdW5jdGlvbiByZXNvbHZlKHNlbGYsIG5ld1ZhbHVlKSB7XG5cdCAgLy8gUHJvbWlzZSBSZXNv
bHV0aW9uIFByb2NlZHVyZTogaHR0cHM6Ly9naXRodWIuY29tL3Byb21pc2VzLWFwbHVzL3Byb21p
c2VzLXNwZWMjdGhlLXByb21pc2UtcmVzb2x1dGlvbi1wcm9jZWR1cmVcblx0ICBpZiAobmV3VmFs
dWUgPT09IHNlbGYpIHtcblx0ICAgIHJldHVybiByZWplY3QoXG5cdCAgICAgIHNlbGYsXG5cdCAg
ICAgIG5ldyBUeXBlRXJyb3IoJ0EgcHJvbWlzZSBjYW5ub3QgYmUgcmVzb2x2ZWQgd2l0aCBpdHNl
bGYuJylcblx0ICAgICk7XG5cdCAgfVxuXHQgIGlmIChcblx0ICAgIG5ld1ZhbHVlICYmXG5cdCAg
ICAodHlwZW9mIG5ld1ZhbHVlID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgbmV3VmFsdWUgPT09ICdm
dW5jdGlvbicpXG5cdCAgKSB7XG5cdCAgICB2YXIgdGhlbiA9IGdldFRoZW4obmV3VmFsdWUpO1xu
XHQgICAgaWYgKHRoZW4gPT09IElTX0VSUk9SKSB7XG5cdCAgICAgIHJldHVybiByZWplY3Qoc2Vs
ZiwgTEFTVF9FUlJPUik7XG5cdCAgICB9XG5cdCAgICBpZiAoXG5cdCAgICAgIHRoZW4gPT09IHNl
bGYudGhlbiAmJlxuXHQgICAgICBuZXdWYWx1ZSBpbnN0YW5jZW9mIFByb21pc2Vcblx0ICAgICkg
e1xuXHQgICAgICBzZWxmLl84MSA9IDM7XG5cdCAgICAgIHNlbGYuXzY1ID0gbmV3VmFsdWU7XG5c
dCAgICAgIGZpbmFsZShzZWxmKTtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfSBlbHNlIGlmICh0
eXBlb2YgdGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICBkb1Jlc29sdmUodGhlbi5iaW5k
KG5ld1ZhbHVlKSwgc2VsZik7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICB9XG5cdCAg
c2VsZi5fODEgPSAxO1xuXHQgIHNlbGYuXzY1ID0gbmV3VmFsdWU7XG5cdCAgZmluYWxlKHNlbGYp
O1xuXHR9XG5cdFxuXHRmdW5jdGlvbiByZWplY3Qoc2VsZiwgbmV3VmFsdWUpIHtcblx0ICBzZWxm
Ll84MSA9IDI7XG5cdCAgc2VsZi5fNjUgPSBuZXdWYWx1ZTtcblx0ICBpZiAoUHJvbWlzZS5fOTcp
IHtcblx0ICAgIFByb21pc2UuXzk3KHNlbGYsIG5ld1ZhbHVlKTtcblx0ICB9XG5cdCAgZmluYWxl
KHNlbGYpO1xuXHR9XG5cdGZ1bmN0aW9uIGZpbmFsZShzZWxmKSB7XG5cdCAgaWYgKHNlbGYuXzQ1
ID09PSAxKSB7XG5cdCAgICBoYW5kbGUoc2VsZiwgc2VsZi5fNTQpO1xuXHQgICAgc2VsZi5fNTQg
PSBudWxsO1xuXHQgIH1cblx0ICBpZiAoc2VsZi5fNDUgPT09IDIpIHtcblx0ICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgc2VsZi5fNTQubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgaGFuZGxlKHNlbGYs
IHNlbGYuXzU0W2ldKTtcblx0ICAgIH1cblx0ICAgIHNlbGYuXzU0ID0gbnVsbDtcblx0ICB9XG5c
dH1cblx0XG5cdGZ1bmN0aW9uIEhhbmRsZXIob25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQsIHByb21p
c2Upe1xuXHQgIHRoaXMub25GdWxmaWxsZWQgPSB0eXBlb2Ygb25GdWxmaWxsZWQgPT09ICdmdW5j
dGlvbicgPyBvbkZ1bGZpbGxlZCA6IG51bGw7XG5cdCAgdGhpcy5vblJlamVjdGVkID0gdHlwZW9m
IG9uUmVqZWN0ZWQgPT09ICdmdW5jdGlvbicgPyBvblJlamVjdGVkIDogbnVsbDtcblx0ICB0aGlz
LnByb21pc2UgPSBwcm9taXNlO1xuXHR9XG5cdFxuXHQvKipcblx0ICogVGFrZSBhIHBvdGVudGlh
bGx5IG1pc2JlaGF2aW5nIHJlc29sdmVyIGZ1bmN0aW9uIGFuZCBtYWtlIHN1cmVcblx0ICogb25G
dWxmaWxsZWQgYW5kIG9uUmVqZWN0ZWQgYXJlIG9ubHkgY2FsbGVkIG9uY2UuXG5cdCAqXG5cdCAq
IE1ha2VzIG5vIGd1YXJhbnRlZXMgYWJvdXQgYXN5bmNocm9ueS5cblx0ICovXG5cdGZ1bmN0aW9u
IGRvUmVzb2x2ZShmbiwgcHJvbWlzZSkge1xuXHQgIHZhciBkb25lID0gZmFsc2U7XG5cdCAgdmFy
IHJlcyA9IHRyeUNhbGxUd28oZm4sIGZ1bmN0aW9uICh2YWx1ZSkge1xuXHQgICAgaWYgKGRvbmUp
IHJldHVybjtcblx0ICAgIGRvbmUgPSB0cnVlO1xuXHQgICAgcmVzb2x2ZShwcm9taXNlLCB2YWx1
ZSk7XG5cdCAgfSwgZnVuY3Rpb24gKHJlYXNvbikge1xuXHQgICAgaWYgKGRvbmUpIHJldHVybjtc
blx0ICAgIGRvbmUgPSB0cnVlO1xuXHQgICAgcmVqZWN0KHByb21pc2UsIHJlYXNvbik7XG5cdCAg
fSlcblx0ICBpZiAoIWRvbmUgJiYgcmVzID09PSBJU19FUlJPUikge1xuXHQgICAgZG9uZSA9IHRy
dWU7XG5cdCAgICByZWplY3QocHJvbWlzZSwgTEFTVF9FUlJPUik7XG5cdCAgfVxuXHR9XG5cblxu
LyoqKi8gfSxcbi8qIDg5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
blx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlh
bnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKSxcblx0ICAgIF9hc3NpZ24gPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDQpO1xuXHRcblx0dmFyIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg5Mik7XG5cdFxuXHR2YXIgY2FuRGVmaW5lUHJvcGVydHkgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDkzKTtcblx0dmFyIGVtcHR5T2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygy
NCk7XG5cdHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHR2YXIgbG93
UHJpb3JpdHlXYXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMjIpO1xuXHRcblx0LyoqXG5c
dCAqIEJhc2UgY2xhc3MgaGVscGVycyBmb3IgdGhlIHVwZGF0aW5nIHN0YXRlIG9mIGEgY29tcG9u
ZW50LlxuXHQgKi9cblx0ZnVuY3Rpb24gUmVhY3RDb21wb25lbnQocHJvcHMsIGNvbnRleHQsIHVw
ZGF0ZXIpIHtcblx0ICB0aGlzLnByb3BzID0gcHJvcHM7XG5cdCAgdGhpcy5jb250ZXh0ID0gY29u
dGV4dDtcblx0ICB0aGlzLnJlZnMgPSBlbXB0eU9iamVjdDtcblx0ICAvLyBXZSBpbml0aWFsaXpl
IHRoZSBkZWZhdWx0IHVwZGF0ZXIgYnV0IHRoZSByZWFsIG9uZSBnZXRzIGluamVjdGVkIGJ5IHRo
ZVxuXHQgIC8vIHJlbmRlcmVyLlxuXHQgIHRoaXMudXBkYXRlciA9IHVwZGF0ZXIgfHwgUmVhY3RO
b29wVXBkYXRlUXVldWU7XG5cdH1cblx0XG5cdFJlYWN0Q29tcG9uZW50LnByb3RvdHlwZS5pc1Jl
YWN0Q29tcG9uZW50ID0ge307XG5cdFxuXHQvKipcblx0ICogU2V0cyBhIHN1YnNldCBvZiB0aGUg
c3RhdGUuIEFsd2F5cyB1c2UgdGhpcyB0byBtdXRhdGVcblx0ICogc3RhdGUuIFlvdSBzaG91bGQg
dHJlYXQgYHRoaXMuc3RhdGVgIGFzIGltbXV0YWJsZS5cblx0ICpcblx0ICogVGhlcmUgaXMgbm8g
Z3VhcmFudGVlIHRoYXQgYHRoaXMuc3RhdGVgIHdpbGwgYmUgaW1tZWRpYXRlbHkgdXBkYXRlZCwg
c29cblx0ICogYWNjZXNzaW5nIGB0aGlzLnN0YXRlYCBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9k
IG1heSByZXR1cm4gdGhlIG9sZCB2YWx1ZS5cblx0ICpcblx0ICogVGhlcmUgaXMgbm8gZ3VhcmFu
dGVlIHRoYXQgY2FsbHMgdG8gYHNldFN0YXRlYCB3aWxsIHJ1biBzeW5jaHJvbm91c2x5LFxuXHQg
KiBhcyB0aGV5IG1heSBldmVudHVhbGx5IGJlIGJhdGNoZWQgdG9nZXRoZXIuICBZb3UgY2FuIHBy
b3ZpZGUgYW4gb3B0aW9uYWxcblx0ICogY2FsbGJhY2sgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIHdo
ZW4gdGhlIGNhbGwgdG8gc2V0U3RhdGUgaXMgYWN0dWFsbHlcblx0ICogY29tcGxldGVkLlxuXHQg
KlxuXHQgKiBXaGVuIGEgZnVuY3Rpb24gaXMgcHJvdmlkZWQgdG8gc2V0U3RhdGUsIGl0IHdpbGwg
YmUgY2FsbGVkIGF0IHNvbWUgcG9pbnQgaW5cblx0ICogdGhlIGZ1dHVyZSAobm90IHN5bmNocm9u
b3VzbHkpLiBJdCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSB1cCB0byBkYXRlXG5cdCAqIGNvbXBv
bmVudCBhcmd1bWVudHMgKHN0YXRlLCBwcm9wcywgY29udGV4dCkuIFRoZXNlIHZhbHVlcyBjYW4g
YmUgZGlmZmVyZW50XG5cdCAqIGZyb20gdGhpcy4qIGJlY2F1c2UgeW91ciBmdW5jdGlvbiBtYXkg
YmUgY2FsbGVkIGFmdGVyIHJlY2VpdmVQcm9wcyBidXQgYmVmb3JlXG5cdCAqIHNob3VsZENvbXBv
bmVudFVwZGF0ZSwgYW5kIHRoaXMgbmV3IHN0YXRlLCBwcm9wcywgYW5kIGNvbnRleHQgd2lsbCBu
b3QgeWV0IGJlXG5cdCAqIGFzc2lnbmVkIHRvIHRoaXMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2Jq
ZWN0fGZ1bmN0aW9ufSBwYXJ0aWFsU3RhdGUgTmV4dCBwYXJ0aWFsIHN0YXRlIG9yIGZ1bmN0aW9u
IHRvXG5cdCAqICAgICAgICBwcm9kdWNlIG5leHQgcGFydGlhbCBzdGF0ZSB0byBiZSBtZXJnZWQg
d2l0aCBjdXJyZW50IHN0YXRlLlxuXHQgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2Fs
bGVkIGFmdGVyIHN0YXRlIGlzIHVwZGF0ZWQuXG5cdCAqIEBmaW5hbFxuXHQgKiBAcHJvdGVjdGVk
XG5cdCAqL1xuXHRSZWFjdENvbXBvbmVudC5wcm90b3R5cGUuc2V0U3RhdGUgPSBmdW5jdGlvbiAo
cGFydGlhbFN0YXRlLCBjYWxsYmFjaykge1xuXHQgICEodHlwZW9mIHBhcnRpYWxTdGF0ZSA9PT0g
J29iamVjdCcgfHwgdHlwZW9mIHBhcnRpYWxTdGF0ZSA9PT0gJ2Z1bmN0aW9uJyB8fCBwYXJ0aWFs
U3RhdGUgPT0gbnVsbCkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdzZXRTdGF0ZSguLi4p
OiB0YWtlcyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzIHRvIHVwZGF0ZSBvciBhIGZ1bmN0
aW9uIHdoaWNoIHJldHVybnMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcy4nKSA6IF9wcm9k
SW52YXJpYW50KCc4NScpIDogdm9pZCAwO1xuXHQgIHRoaXMudXBkYXRlci5lbnF1ZXVlU2V0U3Rh
dGUodGhpcywgcGFydGlhbFN0YXRlKTtcblx0ICBpZiAoY2FsbGJhY2spIHtcblx0ICAgIHRoaXMu
dXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2sodGhpcywgY2FsbGJhY2ssICdzZXRTdGF0ZScpO1xuXHQg
IH1cblx0fTtcblx0XG5cdC8qKlxuXHQgKiBGb3JjZXMgYW4gdXBkYXRlLiBUaGlzIHNob3VsZCBv
bmx5IGJlIGludm9rZWQgd2hlbiBpdCBpcyBrbm93biB3aXRoXG5cdCAqIGNlcnRhaW50eSB0aGF0
IHdlIGFyZSAqKm5vdCoqIGluIGEgRE9NIHRyYW5zYWN0aW9uLlxuXHQgKlxuXHQgKiBZb3UgbWF5
IHdhbnQgdG8gY2FsbCB0aGlzIHdoZW4geW91IGtub3cgdGhhdCBzb21lIGRlZXBlciBhc3BlY3Qg
b2YgdGhlXG5cdCAqIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBjaGFuZ2VkIGJ1dCBgc2V0U3RhdGVg
IHdhcyBub3QgY2FsbGVkLlxuXHQgKlxuXHQgKiBUaGlzIHdpbGwgbm90IGludm9rZSBgc2hvdWxk
Q29tcG9uZW50VXBkYXRlYCwgYnV0IGl0IHdpbGwgaW52b2tlXG5cdCAqIGBjb21wb25lbnRXaWxs
VXBkYXRlYCBhbmQgYGNvbXBvbmVudERpZFVwZGF0ZWAuXG5cdCAqXG5cdCAqIEBwYXJhbSB7P2Z1
bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgdXBkYXRlIGlzIGNvbXBsZXRlLlxuXHQgKiBA
ZmluYWxcblx0ICogQHByb3RlY3RlZFxuXHQgKi9cblx0UmVhY3RDb21wb25lbnQucHJvdG90eXBl
LmZvcmNlVXBkYXRlID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG5cdCAgdGhpcy51cGRhdGVyLmVu
cXVldWVGb3JjZVVwZGF0ZSh0aGlzKTtcblx0ICBpZiAoY2FsbGJhY2spIHtcblx0ICAgIHRoaXMu
dXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2sodGhpcywgY2FsbGJhY2ssICdmb3JjZVVwZGF0ZScpO1xu
XHQgIH1cblx0fTtcblx0XG5cdC8qKlxuXHQgKiBEZXByZWNhdGVkIEFQSXMuIFRoZXNlIEFQSXMg
dXNlZCB0byBleGlzdCBvbiBjbGFzc2ljIFJlYWN0IGNsYXNzZXMgYnV0IHNpbmNlXG5cdCAqIHdl
IHdvdWxkIGxpa2UgdG8gZGVwcmVjYXRlIHRoZW0sIHdlJ3JlIG5vdCBnb2luZyB0byBtb3ZlIHRo
ZW0gb3ZlciB0byB0aGlzXG5cdCAqIG1vZGVybiBiYXNlIGNsYXNzLiBJbnN0ZWFkLCB3ZSBkZWZp
bmUgYSBnZXR0ZXIgdGhhdCB3YXJucyBpZiBpdCdzIGFjY2Vzc2VkLlxuXHQgKi9cblx0aWYgKGZh
bHNlKSB7XG5cdCAgdmFyIGRlcHJlY2F0ZWRBUElzID0ge1xuXHQgICAgaXNNb3VudGVkOiBbJ2lz
TW91bnRlZCcsICdJbnN0ZWFkLCBtYWtlIHN1cmUgdG8gY2xlYW4gdXAgc3Vic2NyaXB0aW9ucyBh
bmQgcGVuZGluZyByZXF1ZXN0cyBpbiAnICsgJ2NvbXBvbmVudFdpbGxVbm1vdW50IHRvIHByZXZl
bnQgbWVtb3J5IGxlYWtzLiddLFxuXHQgICAgcmVwbGFjZVN0YXRlOiBbJ3JlcGxhY2VTdGF0ZScs
ICdSZWZhY3RvciB5b3VyIGNvZGUgdG8gdXNlIHNldFN0YXRlIGluc3RlYWQgKHNlZSAnICsgJ2h0
dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMzIzNikuJ11cblx0ICB9O1xu
XHQgIHZhciBkZWZpbmVEZXByZWNhdGlvbldhcm5pbmcgPSBmdW5jdGlvbiAobWV0aG9kTmFtZSwg
aW5mbykge1xuXHQgICAgaWYgKGNhbkRlZmluZVByb3BlcnR5KSB7XG5cdCAgICAgIE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShSZWFjdENvbXBvbmVudC5wcm90b3R5cGUsIG1ldGhvZE5hbWUsIHtcblx0
ICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgIGxvd1ByaW9yaXR5V2Fybmlu
ZyhmYWxzZSwgJyVzKC4uLikgaXMgZGVwcmVjYXRlZCBpbiBwbGFpbiBKYXZhU2NyaXB0IFJlYWN0
IGNsYXNzZXMuICVzJywgaW5mb1swXSwgaW5mb1sxXSk7XG5cdCAgICAgICAgICByZXR1cm4gdW5k
ZWZpbmVkO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSk7XG5cdCAgICB9XG5cdCAgfTtcblx0ICBm
b3IgKHZhciBmbk5hbWUgaW4gZGVwcmVjYXRlZEFQSXMpIHtcblx0ICAgIGlmIChkZXByZWNhdGVk
QVBJcy5oYXNPd25Qcm9wZXJ0eShmbk5hbWUpKSB7XG5cdCAgICAgIGRlZmluZURlcHJlY2F0aW9u
V2FybmluZyhmbk5hbWUsIGRlcHJlY2F0ZWRBUElzW2ZuTmFtZV0pO1xuXHQgICAgfVxuXHQgIH1c
blx0fVxuXHRcblx0LyoqXG5cdCAqIEJhc2UgY2xhc3MgaGVscGVycyBmb3IgdGhlIHVwZGF0aW5n
IHN0YXRlIG9mIGEgY29tcG9uZW50LlxuXHQgKi9cblx0ZnVuY3Rpb24gUmVhY3RQdXJlQ29tcG9u
ZW50KHByb3BzLCBjb250ZXh0LCB1cGRhdGVyKSB7XG5cdCAgLy8gRHVwbGljYXRlZCBmcm9tIFJl
YWN0Q29tcG9uZW50LlxuXHQgIHRoaXMucHJvcHMgPSBwcm9wcztcblx0ICB0aGlzLmNvbnRleHQg
PSBjb250ZXh0O1xuXHQgIHRoaXMucmVmcyA9IGVtcHR5T2JqZWN0O1xuXHQgIC8vIFdlIGluaXRp
YWxpemUgdGhlIGRlZmF1bHQgdXBkYXRlciBidXQgdGhlIHJlYWwgb25lIGdldHMgaW5qZWN0ZWQg
YnkgdGhlXG5cdCAgLy8gcmVuZGVyZXIuXG5cdCAgdGhpcy51cGRhdGVyID0gdXBkYXRlciB8fCBS
ZWFjdE5vb3BVcGRhdGVRdWV1ZTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gQ29tcG9uZW50RHVtbXko
KSB7fVxuXHRDb21wb25lbnREdW1teS5wcm90b3R5cGUgPSBSZWFjdENvbXBvbmVudC5wcm90b3R5
cGU7XG5cdFJlYWN0UHVyZUNvbXBvbmVudC5wcm90b3R5cGUgPSBuZXcgQ29tcG9uZW50RHVtbXko
KTtcblx0UmVhY3RQdXJlQ29tcG9uZW50LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFJlYWN0UHVy
ZUNvbXBvbmVudDtcblx0Ly8gQXZvaWQgYW4gZXh0cmEgcHJvdG90eXBlIGp1bXAgZm9yIHRoZXNl
IG1ldGhvZHMuXG5cdF9hc3NpZ24oUmVhY3RQdXJlQ29tcG9uZW50LnByb3RvdHlwZSwgUmVhY3RD
b21wb25lbnQucHJvdG90eXBlKTtcblx0UmVhY3RQdXJlQ29tcG9uZW50LnByb3RvdHlwZS5pc1B1
cmVSZWFjdENvbXBvbmVudCA9IHRydWU7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IHtcblx0ICBD
b21wb25lbnQ6IFJlYWN0Q29tcG9uZW50LFxuXHQgIFB1cmVDb21wb25lbnQ6IFJlYWN0UHVyZUNv
bXBvbmVudFxuXHR9O1xuXG4vKioqLyB9LFxuLyogOTAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmln
aHQgMjAxNi1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7
XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKTtcblx0
XG5cdHZhciBSZWFjdEN1cnJlbnRPd25lciA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpO1xuXHRc
blx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdHZhciB3YXJuaW5n
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0XG5cdGZ1bmN0aW9uIGlzTmF0aXZlKGZuKSB7
XG5cdCAgLy8gQmFzZWQgb24gaXNOYXRpdmUoKSBmcm9tIExvZGFzaFxuXHQgIHZhciBmdW5jVG9T
dHJpbmcgPSBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7XG5cdCAgdmFyIGhhc093blByb3Bl
cnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblx0ICB2YXIgcmVJc05hdGl2
ZSA9IFJlZ0V4cCgnXicgKyBmdW5jVG9TdHJpbmdcblx0ICAvLyBUYWtlIGFuIGV4YW1wbGUgbmF0
aXZlIGZ1bmN0aW9uIHNvdXJjZSBmb3IgY29tcGFyaXNvblxuXHQgIC5jYWxsKGhhc093blByb3Bl
cnR5XG5cdCAgLy8gU3RyaXAgcmVnZXggY2hhcmFjdGVycyBzbyB3ZSBjYW4gdXNlIGl0IGZvciBy
ZWdleFxuXHQgICkucmVwbGFjZSgvW1xcXFxeJC4qKz8oKVtcXF17fXxdL2csICdcXFxcJCYnXG5c
dCAgLy8gUmVtb3ZlIGhhc093blByb3BlcnR5IGZyb20gdGhlIHRlbXBsYXRlIHRvIG1ha2UgaXQg
Z2VuZXJpY1xuXHQgICkucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxc
XFxcXCgpfCBmb3IgLis/KD89XFxcXFxcXSkvZywgJyQxLio/JykgKyAnJCcpO1xuXHQgIHRyeSB7
XG5cdCAgICB2YXIgc291cmNlID0gZnVuY1RvU3RyaW5nLmNhbGwoZm4pO1xuXHQgICAgcmV0dXJu
IHJlSXNOYXRpdmUudGVzdChzb3VyY2UpO1xuXHQgIH0gY2F0Y2ggKGVycikge1xuXHQgICAgcmV0
dXJuIGZhbHNlO1xuXHQgIH1cblx0fVxuXHRcblx0dmFyIGNhblVzZUNvbGxlY3Rpb25zID1cblx0
Ly8gQXJyYXkuZnJvbVxuXHR0eXBlb2YgQXJyYXkuZnJvbSA9PT0gJ2Z1bmN0aW9uJyAmJlxuXHQv
LyBNYXBcblx0dHlwZW9mIE1hcCA9PT0gJ2Z1bmN0aW9uJyAmJiBpc05hdGl2ZShNYXApICYmXG5c
dC8vIE1hcC5wcm90b3R5cGUua2V5c1xuXHRNYXAucHJvdG90eXBlICE9IG51bGwgJiYgdHlwZW9m
IE1hcC5wcm90b3R5cGUua2V5cyA9PT0gJ2Z1bmN0aW9uJyAmJiBpc05hdGl2ZShNYXAucHJvdG90
eXBlLmtleXMpICYmXG5cdC8vIFNldFxuXHR0eXBlb2YgU2V0ID09PSAnZnVuY3Rpb24nICYmIGlz
TmF0aXZlKFNldCkgJiZcblx0Ly8gU2V0LnByb3RvdHlwZS5rZXlzXG5cdFNldC5wcm90b3R5cGUg
IT0gbnVsbCAmJiB0eXBlb2YgU2V0LnByb3RvdHlwZS5rZXlzID09PSAnZnVuY3Rpb24nICYmIGlz
TmF0aXZlKFNldC5wcm90b3R5cGUua2V5cyk7XG5cdFxuXHR2YXIgc2V0SXRlbTtcblx0dmFyIGdl
dEl0ZW07XG5cdHZhciByZW1vdmVJdGVtO1xuXHR2YXIgZ2V0SXRlbUlEcztcblx0dmFyIGFkZFJv
b3Q7XG5cdHZhciByZW1vdmVSb290O1xuXHR2YXIgZ2V0Um9vdElEcztcblx0XG5cdGlmIChjYW5V
c2VDb2xsZWN0aW9ucykge1xuXHQgIHZhciBpdGVtTWFwID0gbmV3IE1hcCgpO1xuXHQgIHZhciBy
b290SURTZXQgPSBuZXcgU2V0KCk7XG5cdFxuXHQgIHNldEl0ZW0gPSBmdW5jdGlvbiAoaWQsIGl0
ZW0pIHtcblx0ICAgIGl0ZW1NYXAuc2V0KGlkLCBpdGVtKTtcblx0ICB9O1xuXHQgIGdldEl0ZW0g
PSBmdW5jdGlvbiAoaWQpIHtcblx0ICAgIHJldHVybiBpdGVtTWFwLmdldChpZCk7XG5cdCAgfTtc
blx0ICByZW1vdmVJdGVtID0gZnVuY3Rpb24gKGlkKSB7XG5cdCAgICBpdGVtTWFwWydkZWxldGUn
XShpZCk7XG5cdCAgfTtcblx0ICBnZXRJdGVtSURzID0gZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0
dXJuIEFycmF5LmZyb20oaXRlbU1hcC5rZXlzKCkpO1xuXHQgIH07XG5cdFxuXHQgIGFkZFJvb3Qg
PSBmdW5jdGlvbiAoaWQpIHtcblx0ICAgIHJvb3RJRFNldC5hZGQoaWQpO1xuXHQgIH07XG5cdCAg
cmVtb3ZlUm9vdCA9IGZ1bmN0aW9uIChpZCkge1xuXHQgICAgcm9vdElEU2V0WydkZWxldGUnXShp
ZCk7XG5cdCAgfTtcblx0ICBnZXRSb290SURzID0gZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0dXJu
IEFycmF5LmZyb20ocm9vdElEU2V0LmtleXMoKSk7XG5cdCAgfTtcblx0fSBlbHNlIHtcblx0ICB2
YXIgaXRlbUJ5S2V5ID0ge307XG5cdCAgdmFyIHJvb3RCeUtleSA9IHt9O1xuXHRcblx0ICAvLyBV
c2Ugbm9uLW51bWVyaWMga2V5cyB0byBwcmV2ZW50IFY4IHBlcmZvcm1hbmNlIGlzc3Vlczpcblx0
ICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC83MjMyXG5cdCAgdmFy
IGdldEtleUZyb21JRCA9IGZ1bmN0aW9uIChpZCkge1xuXHQgICAgcmV0dXJuICcuJyArIGlkO1xu
XHQgIH07XG5cdCAgdmFyIGdldElERnJvbUtleSA9IGZ1bmN0aW9uIChrZXkpIHtcblx0ICAgIHJl
dHVybiBwYXJzZUludChrZXkuc3Vic3RyKDEpLCAxMCk7XG5cdCAgfTtcblx0XG5cdCAgc2V0SXRl
bSA9IGZ1bmN0aW9uIChpZCwgaXRlbSkge1xuXHQgICAgdmFyIGtleSA9IGdldEtleUZyb21JRChp
ZCk7XG5cdCAgICBpdGVtQnlLZXlba2V5XSA9IGl0ZW07XG5cdCAgfTtcblx0ICBnZXRJdGVtID0g
ZnVuY3Rpb24gKGlkKSB7XG5cdCAgICB2YXIga2V5ID0gZ2V0S2V5RnJvbUlEKGlkKTtcblx0ICAg
IHJldHVybiBpdGVtQnlLZXlba2V5XTtcblx0ICB9O1xuXHQgIHJlbW92ZUl0ZW0gPSBmdW5jdGlv
biAoaWQpIHtcblx0ICAgIHZhciBrZXkgPSBnZXRLZXlGcm9tSUQoaWQpO1xuXHQgICAgZGVsZXRl
IGl0ZW1CeUtleVtrZXldO1xuXHQgIH07XG5cdCAgZ2V0SXRlbUlEcyA9IGZ1bmN0aW9uICgpIHtc
blx0ICAgIHJldHVybiBPYmplY3Qua2V5cyhpdGVtQnlLZXkpLm1hcChnZXRJREZyb21LZXkpO1xu
XHQgIH07XG5cdFxuXHQgIGFkZFJvb3QgPSBmdW5jdGlvbiAoaWQpIHtcblx0ICAgIHZhciBrZXkg
PSBnZXRLZXlGcm9tSUQoaWQpO1xuXHQgICAgcm9vdEJ5S2V5W2tleV0gPSB0cnVlO1xuXHQgIH07
XG5cdCAgcmVtb3ZlUm9vdCA9IGZ1bmN0aW9uIChpZCkge1xuXHQgICAgdmFyIGtleSA9IGdldEtl
eUZyb21JRChpZCk7XG5cdCAgICBkZWxldGUgcm9vdEJ5S2V5W2tleV07XG5cdCAgfTtcblx0ICBn
ZXRSb290SURzID0gZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0dXJuIE9iamVjdC5rZXlzKHJvb3RC
eUtleSkubWFwKGdldElERnJvbUtleSk7XG5cdCAgfTtcblx0fVxuXHRcblx0dmFyIHVubW91bnRl
ZElEcyA9IFtdO1xuXHRcblx0ZnVuY3Rpb24gcHVyZ2VEZWVwKGlkKSB7XG5cdCAgdmFyIGl0ZW0g
PSBnZXRJdGVtKGlkKTtcblx0ICBpZiAoaXRlbSkge1xuXHQgICAgdmFyIGNoaWxkSURzID0gaXRl
bS5jaGlsZElEcztcblx0XG5cdCAgICByZW1vdmVJdGVtKGlkKTtcblx0ICAgIGNoaWxkSURzLmZv
ckVhY2gocHVyZ2VEZWVwKTtcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGRlc2NyaWJlQ29t
cG9uZW50RnJhbWUobmFtZSwgc291cmNlLCBvd25lck5hbWUpIHtcblx0ICByZXR1cm4gJ1xcbiAg
ICBpbiAnICsgKG5hbWUgfHwgJ1Vua25vd24nKSArIChzb3VyY2UgPyAnIChhdCAnICsgc291cmNl
LmZpbGVOYW1lLnJlcGxhY2UoL14uKltcXFxcXFwvXS8sICcnKSArICc6JyArIHNvdXJjZS5saW5l
TnVtYmVyICsgJyknIDogb3duZXJOYW1lID8gJyAoY3JlYXRlZCBieSAnICsgb3duZXJOYW1lICsg
JyknIDogJycpO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBnZXREaXNwbGF5TmFtZShlbGVtZW50KSB7
XG5cdCAgaWYgKGVsZW1lbnQgPT0gbnVsbCkge1xuXHQgICAgcmV0dXJuICcjZW1wdHknO1xuXHQg
IH0gZWxzZSBpZiAodHlwZW9mIGVsZW1lbnQgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBlbGVtZW50
ID09PSAnbnVtYmVyJykge1xuXHQgICAgcmV0dXJuICcjdGV4dCc7XG5cdCAgfSBlbHNlIGlmICh0
eXBlb2YgZWxlbWVudC50eXBlID09PSAnc3RyaW5nJykge1xuXHQgICAgcmV0dXJuIGVsZW1lbnQu
dHlwZTtcblx0ICB9IGVsc2Uge1xuXHQgICAgcmV0dXJuIGVsZW1lbnQudHlwZS5kaXNwbGF5TmFt
ZSB8fCBlbGVtZW50LnR5cGUubmFtZSB8fCAnVW5rbm93bic7XG5cdCAgfVxuXHR9XG5cdFxuXHRm
dW5jdGlvbiBkZXNjcmliZUlEKGlkKSB7XG5cdCAgdmFyIG5hbWUgPSBSZWFjdENvbXBvbmVudFRy
ZWVIb29rLmdldERpc3BsYXlOYW1lKGlkKTtcblx0ICB2YXIgZWxlbWVudCA9IFJlYWN0Q29tcG9u
ZW50VHJlZUhvb2suZ2V0RWxlbWVudChpZCk7XG5cdCAgdmFyIG93bmVySUQgPSBSZWFjdENvbXBv
bmVudFRyZWVIb29rLmdldE93bmVySUQoaWQpO1xuXHQgIHZhciBvd25lck5hbWU7XG5cdCAgaWYg
KG93bmVySUQpIHtcblx0ICAgIG93bmVyTmFtZSA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0
RGlzcGxheU5hbWUob3duZXJJRCk7XG5cdCAgfVxuXHQgICBmYWxzZSA/IHdhcm5pbmcoZWxlbWVu
dCwgJ1JlYWN0Q29tcG9uZW50VHJlZUhvb2s6IE1pc3NpbmcgUmVhY3QgZWxlbWVudCBmb3IgZGVi
dWdJRCAlcyB3aGVuICcgKyAnYnVpbGRpbmcgc3RhY2snLCBpZCkgOiB2b2lkIDA7XG5cdCAgcmV0
dXJuIGRlc2NyaWJlQ29tcG9uZW50RnJhbWUobmFtZSwgZWxlbWVudCAmJiBlbGVtZW50Ll9zb3Vy
Y2UsIG93bmVyTmFtZSk7XG5cdH1cblx0XG5cdHZhciBSZWFjdENvbXBvbmVudFRyZWVIb29rID0g
e1xuXHQgIG9uU2V0Q2hpbGRyZW46IGZ1bmN0aW9uIChpZCwgbmV4dENoaWxkSURzKSB7XG5cdCAg
ICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuXHQgICAgIWl0ZW0gPyAgZmFsc2UgPyBpbnZhcmlh
bnQoZmFsc2UsICdJdGVtIG11c3QgaGF2ZSBiZWVuIHNldCcpIDogX3Byb2RJbnZhcmlhbnQoJzE0
NCcpIDogdm9pZCAwO1xuXHQgICAgaXRlbS5jaGlsZElEcyA9IG5leHRDaGlsZElEcztcblx0XG5c
dCAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5leHRDaGlsZElEcy5sZW5ndGg7IGkrKykge1xuXHQg
ICAgICB2YXIgbmV4dENoaWxkSUQgPSBuZXh0Q2hpbGRJRHNbaV07XG5cdCAgICAgIHZhciBuZXh0
Q2hpbGQgPSBnZXRJdGVtKG5leHRDaGlsZElEKTtcblx0ICAgICAgIW5leHRDaGlsZCA/ICBmYWxz
ZSA/IGludmFyaWFudChmYWxzZSwgJ0V4cGVjdGVkIGhvb2sgZXZlbnRzIHRvIGZpcmUgZm9yIHRo
ZSBjaGlsZCBiZWZvcmUgaXRzIHBhcmVudCBpbmNsdWRlcyBpdCBpbiBvblNldENoaWxkcmVuKCku
JykgOiBfcHJvZEludmFyaWFudCgnMTQwJykgOiB2b2lkIDA7XG5cdCAgICAgICEobmV4dENoaWxk
LmNoaWxkSURzICE9IG51bGwgfHwgdHlwZW9mIG5leHRDaGlsZC5lbGVtZW50ICE9PSAnb2JqZWN0
JyB8fCBuZXh0Q2hpbGQuZWxlbWVudCA9PSBudWxsKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxz
ZSwgJ0V4cGVjdGVkIG9uU2V0Q2hpbGRyZW4oKSB0byBmaXJlIGZvciBhIGNvbnRhaW5lciBjaGls
ZCBiZWZvcmUgaXRzIHBhcmVudCBpbmNsdWRlcyBpdCBpbiBvblNldENoaWxkcmVuKCkuJykgOiBf
cHJvZEludmFyaWFudCgnMTQxJykgOiB2b2lkIDA7XG5cdCAgICAgICFuZXh0Q2hpbGQuaXNNb3Vu
dGVkID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnRXhwZWN0ZWQgb25Nb3VudENvbXBvbmVu
dCgpIHRvIGZpcmUgZm9yIHRoZSBjaGlsZCBiZWZvcmUgaXRzIHBhcmVudCBpbmNsdWRlcyBpdCBp
biBvblNldENoaWxkcmVuKCkuJykgOiBfcHJvZEludmFyaWFudCgnNzEnKSA6IHZvaWQgMDtcblx0
ICAgICAgaWYgKG5leHRDaGlsZC5wYXJlbnRJRCA9PSBudWxsKSB7XG5cdCAgICAgICAgbmV4dENo
aWxkLnBhcmVudElEID0gaWQ7XG5cdCAgICAgICAgLy8gVE9ETzogVGhpcyBzaG91bGRuJ3QgYmUg
bmVjZXNzYXJ5IGJ1dCBtb3VudGluZyBhIG5ldyByb290IGR1cmluZyBpblxuXHQgICAgICAgIC8v
IGNvbXBvbmVudFdpbGxNb3VudCBjdXJyZW50bHkgY2F1c2VzIG5vdC15ZXQtbW91bnRlZCBjb21w
b25lbnRzIHRvXG5cdCAgICAgICAgLy8gYmUgcHVyZ2VkIGZyb20gb3VyIHRyZWUgZGF0YSBzbyB0
aGVpciBwYXJlbnQgaWQgaXMgbWlzc2luZy5cblx0ICAgICAgfVxuXHQgICAgICAhKG5leHRDaGls
ZC5wYXJlbnRJRCA9PT0gaWQpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnRXhwZWN0ZWQg
b25CZWZvcmVNb3VudENvbXBvbmVudCgpIHBhcmVudCBhbmQgb25TZXRDaGlsZHJlbigpIHRvIGJl
IGNvbnNpc3RlbnQgKCVzIGhhcyBwYXJlbnRzICVzIGFuZCAlcykuJywgbmV4dENoaWxkSUQsIG5l
eHRDaGlsZC5wYXJlbnRJRCwgaWQpIDogX3Byb2RJbnZhcmlhbnQoJzE0MicsIG5leHRDaGlsZElE
LCBuZXh0Q2hpbGQucGFyZW50SUQsIGlkKSA6IHZvaWQgMDtcblx0ICAgIH1cblx0ICB9LFxuXHQg
IG9uQmVmb3JlTW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChpZCwgZWxlbWVudCwgcGFyZW50SUQp
IHtcblx0ICAgIHZhciBpdGVtID0ge1xuXHQgICAgICBlbGVtZW50OiBlbGVtZW50LFxuXHQgICAg
ICBwYXJlbnRJRDogcGFyZW50SUQsXG5cdCAgICAgIHRleHQ6IG51bGwsXG5cdCAgICAgIGNoaWxk
SURzOiBbXSxcblx0ICAgICAgaXNNb3VudGVkOiBmYWxzZSxcblx0ICAgICAgdXBkYXRlQ291bnQ6
IDBcblx0ICAgIH07XG5cdCAgICBzZXRJdGVtKGlkLCBpdGVtKTtcblx0ICB9LFxuXHQgIG9uQmVm
b3JlVXBkYXRlQ29tcG9uZW50OiBmdW5jdGlvbiAoaWQsIGVsZW1lbnQpIHtcblx0ICAgIHZhciBp
dGVtID0gZ2V0SXRlbShpZCk7XG5cdCAgICBpZiAoIWl0ZW0gfHwgIWl0ZW0uaXNNb3VudGVkKSB7
XG5cdCAgICAgIC8vIFdlIG1heSBlbmQgdXAgaGVyZSBhcyBhIHJlc3VsdCBvZiBzZXRTdGF0ZSgp
IGluIGNvbXBvbmVudFdpbGxVbm1vdW50KCkuXG5cdCAgICAgIC8vIEluIHRoaXMgY2FzZSwgaWdu
b3JlIHRoZSBlbGVtZW50LlxuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAgICBpdGVtLmVs
ZW1lbnQgPSBlbGVtZW50O1xuXHQgIH0sXG5cdCAgb25Nb3VudENvbXBvbmVudDogZnVuY3Rpb24g
KGlkKSB7XG5cdCAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuXHQgICAgIWl0ZW0gPyAgZmFs
c2UgPyBpbnZhcmlhbnQoZmFsc2UsICdJdGVtIG11c3QgaGF2ZSBiZWVuIHNldCcpIDogX3Byb2RJ
bnZhcmlhbnQoJzE0NCcpIDogdm9pZCAwO1xuXHQgICAgaXRlbS5pc01vdW50ZWQgPSB0cnVlO1xu
XHQgICAgdmFyIGlzUm9vdCA9IGl0ZW0ucGFyZW50SUQgPT09IDA7XG5cdCAgICBpZiAoaXNSb290
KSB7XG5cdCAgICAgIGFkZFJvb3QoaWQpO1xuXHQgICAgfVxuXHQgIH0sXG5cdCAgb25VcGRhdGVD
b21wb25lbnQ6IGZ1bmN0aW9uIChpZCkge1xuXHQgICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtc
blx0ICAgIGlmICghaXRlbSB8fCAhaXRlbS5pc01vdW50ZWQpIHtcblx0ICAgICAgLy8gV2UgbWF5
IGVuZCB1cCBoZXJlIGFzIGEgcmVzdWx0IG9mIHNldFN0YXRlKCkgaW4gY29tcG9uZW50V2lsbFVu
bW91bnQoKS5cblx0ICAgICAgLy8gSW4gdGhpcyBjYXNlLCBpZ25vcmUgdGhlIGVsZW1lbnQuXG5c
dCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICAgIGl0ZW0udXBkYXRlQ291bnQrKztcblx0ICB9
LFxuXHQgIG9uVW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKGlkKSB7XG5cdCAgICB2YXIgaXRl
bSA9IGdldEl0ZW0oaWQpO1xuXHQgICAgaWYgKGl0ZW0pIHtcblx0ICAgICAgLy8gV2UgbmVlZCB0
byBjaGVjayBpZiBpdCBleGlzdHMuXG5cdCAgICAgIC8vIGBpdGVtYCBtaWdodCBub3QgZXhpc3Qg
aWYgaXQgaXMgaW5zaWRlIGFuIGVycm9yIGJvdW5kYXJ5LCBhbmQgYSBzaWJsaW5nXG5cdCAgICAg
IC8vIGVycm9yIGJvdW5kYXJ5IGNoaWxkIHRocmV3IHdoaWxlIG1vdW50aW5nLiBUaGVuIHRoaXMg
aW5zdGFuY2UgbmV2ZXJcblx0ICAgICAgLy8gZ290IGEgY2hhbmNlIHRvIG1vdW50LCBidXQgaXQg
c3RpbGwgZ2V0cyBhbiB1bm1vdW50aW5nIGV2ZW50IGR1cmluZ1xuXHQgICAgICAvLyB0aGUgZXJy
b3IgYm91bmRhcnkgY2xlYW51cC5cblx0ICAgICAgaXRlbS5pc01vdW50ZWQgPSBmYWxzZTtcblx0
ICAgICAgdmFyIGlzUm9vdCA9IGl0ZW0ucGFyZW50SUQgPT09IDA7XG5cdCAgICAgIGlmIChpc1Jv
b3QpIHtcblx0ICAgICAgICByZW1vdmVSb290KGlkKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQg
ICAgdW5tb3VudGVkSURzLnB1c2goaWQpO1xuXHQgIH0sXG5cdCAgcHVyZ2VVbm1vdW50ZWRDb21w
b25lbnRzOiBmdW5jdGlvbiAoKSB7XG5cdCAgICBpZiAoUmVhY3RDb21wb25lbnRUcmVlSG9vay5f
cHJldmVudFB1cmdpbmcpIHtcblx0ICAgICAgLy8gU2hvdWxkIG9ubHkgYmUgdXNlZCBmb3IgdGVz
dGluZy5cblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHRcblx0ICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgdW5tb3VudGVkSURzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIHZhciBpZCA9IHVubW91
bnRlZElEc1tpXTtcblx0ICAgICAgcHVyZ2VEZWVwKGlkKTtcblx0ICAgIH1cblx0ICAgIHVubW91
bnRlZElEcy5sZW5ndGggPSAwO1xuXHQgIH0sXG5cdCAgaXNNb3VudGVkOiBmdW5jdGlvbiAoaWQp
IHtcblx0ICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG5cdCAgICByZXR1cm4gaXRlbSA/IGl0
ZW0uaXNNb3VudGVkIDogZmFsc2U7XG5cdCAgfSxcblx0ICBnZXRDdXJyZW50U3RhY2tBZGRlbmR1
bTogZnVuY3Rpb24gKHRvcEVsZW1lbnQpIHtcblx0ICAgIHZhciBpbmZvID0gJyc7XG5cdCAgICBp
ZiAodG9wRWxlbWVudCkge1xuXHQgICAgICB2YXIgbmFtZSA9IGdldERpc3BsYXlOYW1lKHRvcEVs
ZW1lbnQpO1xuXHQgICAgICB2YXIgb3duZXIgPSB0b3BFbGVtZW50Ll9vd25lcjtcblx0ICAgICAg
aW5mbyArPSBkZXNjcmliZUNvbXBvbmVudEZyYW1lKG5hbWUsIHRvcEVsZW1lbnQuX3NvdXJjZSwg
b3duZXIgJiYgb3duZXIuZ2V0TmFtZSgpKTtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgY3VycmVu
dE93bmVyID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudDtcblx0ICAgIHZhciBpZCA9IGN1cnJl
bnRPd25lciAmJiBjdXJyZW50T3duZXIuX2RlYnVnSUQ7XG5cdFxuXHQgICAgaW5mbyArPSBSZWFj
dENvbXBvbmVudFRyZWVIb29rLmdldFN0YWNrQWRkZW5kdW1CeUlEKGlkKTtcblx0ICAgIHJldHVy
biBpbmZvO1xuXHQgIH0sXG5cdCAgZ2V0U3RhY2tBZGRlbmR1bUJ5SUQ6IGZ1bmN0aW9uIChpZCkg
e1xuXHQgICAgdmFyIGluZm8gPSAnJztcblx0ICAgIHdoaWxlIChpZCkge1xuXHQgICAgICBpbmZv
ICs9IGRlc2NyaWJlSUQoaWQpO1xuXHQgICAgICBpZCA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2su
Z2V0UGFyZW50SUQoaWQpO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIGluZm87XG5cdCAgfSxcblx0
ICBnZXRDaGlsZElEczogZnVuY3Rpb24gKGlkKSB7XG5cdCAgICB2YXIgaXRlbSA9IGdldEl0ZW0o
aWQpO1xuXHQgICAgcmV0dXJuIGl0ZW0gPyBpdGVtLmNoaWxkSURzIDogW107XG5cdCAgfSxcblx0
ICBnZXREaXNwbGF5TmFtZTogZnVuY3Rpb24gKGlkKSB7XG5cdCAgICB2YXIgZWxlbWVudCA9IFJl
YWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RWxlbWVudChpZCk7XG5cdCAgICBpZiAoIWVsZW1lbnQp
IHtcblx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gZ2V0RGlzcGxh
eU5hbWUoZWxlbWVudCk7XG5cdCAgfSxcblx0ICBnZXRFbGVtZW50OiBmdW5jdGlvbiAoaWQpIHtc
blx0ICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG5cdCAgICByZXR1cm4gaXRlbSA/IGl0ZW0u
ZWxlbWVudCA6IG51bGw7XG5cdCAgfSxcblx0ICBnZXRPd25lcklEOiBmdW5jdGlvbiAoaWQpIHtc
blx0ICAgIHZhciBlbGVtZW50ID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRFbGVtZW50KGlk
KTtcblx0ICAgIGlmICghZWxlbWVudCB8fCAhZWxlbWVudC5fb3duZXIpIHtcblx0ICAgICAgcmV0
dXJuIG51bGw7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gZWxlbWVudC5fb3duZXIuX2RlYnVnSUQ7
XG5cdCAgfSxcblx0ICBnZXRQYXJlbnRJRDogZnVuY3Rpb24gKGlkKSB7XG5cdCAgICB2YXIgaXRl
bSA9IGdldEl0ZW0oaWQpO1xuXHQgICAgcmV0dXJuIGl0ZW0gPyBpdGVtLnBhcmVudElEIDogbnVs
bDtcblx0ICB9LFxuXHQgIGdldFNvdXJjZTogZnVuY3Rpb24gKGlkKSB7XG5cdCAgICB2YXIgaXRl
bSA9IGdldEl0ZW0oaWQpO1xuXHQgICAgdmFyIGVsZW1lbnQgPSBpdGVtID8gaXRlbS5lbGVtZW50
IDogbnVsbDtcblx0ICAgIHZhciBzb3VyY2UgPSBlbGVtZW50ICE9IG51bGwgPyBlbGVtZW50Ll9z
b3VyY2UgOiBudWxsO1xuXHQgICAgcmV0dXJuIHNvdXJjZTtcblx0ICB9LFxuXHQgIGdldFRleHQ6
IGZ1bmN0aW9uIChpZCkge1xuXHQgICAgdmFyIGVsZW1lbnQgPSBSZWFjdENvbXBvbmVudFRyZWVI
b29rLmdldEVsZW1lbnQoaWQpO1xuXHQgICAgaWYgKHR5cGVvZiBlbGVtZW50ID09PSAnc3RyaW5n
Jykge1xuXHQgICAgICByZXR1cm4gZWxlbWVudDtcblx0ICAgIH0gZWxzZSBpZiAodHlwZW9mIGVs
ZW1lbnQgPT09ICdudW1iZXInKSB7XG5cdCAgICAgIHJldHVybiAnJyArIGVsZW1lbnQ7XG5cdCAg
ICB9IGVsc2Uge1xuXHQgICAgICByZXR1cm4gbnVsbDtcblx0ICAgIH1cblx0ICB9LFxuXHQgIGdl
dFVwZGF0ZUNvdW50OiBmdW5jdGlvbiAoaWQpIHtcblx0ICAgIHZhciBpdGVtID0gZ2V0SXRlbShp
ZCk7XG5cdCAgICByZXR1cm4gaXRlbSA/IGl0ZW0udXBkYXRlQ291bnQgOiAwO1xuXHQgIH0sXG5c
dFxuXHRcblx0ICBnZXRSb290SURzOiBnZXRSb290SURzLFxuXHQgIGdldFJlZ2lzdGVyZWRJRHM6
IGdldEl0ZW1JRHMsXG5cdFxuXHQgIHB1c2hOb25TdGFuZGFyZFdhcm5pbmdTdGFjazogZnVuY3Rp
b24gKGlzQ3JlYXRpbmdFbGVtZW50LCBjdXJyZW50U291cmNlKSB7XG5cdCAgICBpZiAodHlwZW9m
IGNvbnNvbGUucmVhY3RTdGFjayAhPT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICByZXR1cm47XG5c
dCAgICB9XG5cdFxuXHQgICAgdmFyIHN0YWNrID0gW107XG5cdCAgICB2YXIgY3VycmVudE93bmVy
ID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudDtcblx0ICAgIHZhciBpZCA9IGN1cnJlbnRPd25l
ciAmJiBjdXJyZW50T3duZXIuX2RlYnVnSUQ7XG5cdFxuXHQgICAgdHJ5IHtcblx0ICAgICAgaWYg
KGlzQ3JlYXRpbmdFbGVtZW50KSB7XG5cdCAgICAgICAgc3RhY2sucHVzaCh7XG5cdCAgICAgICAg
ICBuYW1lOiBpZCA/IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RGlzcGxheU5hbWUoaWQpIDog
bnVsbCxcblx0ICAgICAgICAgIGZpbGVOYW1lOiBjdXJyZW50U291cmNlID8gY3VycmVudFNvdXJj
ZS5maWxlTmFtZSA6IG51bGwsXG5cdCAgICAgICAgICBsaW5lTnVtYmVyOiBjdXJyZW50U291cmNl
ID8gY3VycmVudFNvdXJjZS5saW5lTnVtYmVyIDogbnVsbFxuXHQgICAgICAgIH0pO1xuXHQgICAg
ICB9XG5cdFxuXHQgICAgICB3aGlsZSAoaWQpIHtcblx0ICAgICAgICB2YXIgZWxlbWVudCA9IFJl
YWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RWxlbWVudChpZCk7XG5cdCAgICAgICAgdmFyIHBhcmVu
dElEID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRQYXJlbnRJRChpZCk7XG5cdCAgICAgICAg
dmFyIG93bmVySUQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldE93bmVySUQoaWQpO1xuXHQg
ICAgICAgIHZhciBvd25lck5hbWUgPSBvd25lcklEID8gUmVhY3RDb21wb25lbnRUcmVlSG9vay5n
ZXREaXNwbGF5TmFtZShvd25lcklEKSA6IG51bGw7XG5cdCAgICAgICAgdmFyIHNvdXJjZSA9IGVs
ZW1lbnQgJiYgZWxlbWVudC5fc291cmNlO1xuXHQgICAgICAgIHN0YWNrLnB1c2goe1xuXHQgICAg
ICAgICAgbmFtZTogb3duZXJOYW1lLFxuXHQgICAgICAgICAgZmlsZU5hbWU6IHNvdXJjZSA/IHNv
dXJjZS5maWxlTmFtZSA6IG51bGwsXG5cdCAgICAgICAgICBsaW5lTnVtYmVyOiBzb3VyY2UgPyBz
b3VyY2UubGluZU51bWJlciA6IG51bGxcblx0ICAgICAgICB9KTtcblx0ICAgICAgICBpZCA9IHBh
cmVudElEO1xuXHQgICAgICB9XG5cdCAgICB9IGNhdGNoIChlcnIpIHtcblx0ICAgICAgLy8gSW50
ZXJuYWwgc3RhdGUgaXMgbWVzc2VkIHVwLlxuXHQgICAgICAvLyBTdG9wIGJ1aWxkaW5nIHRoZSBz
dGFjayAoaXQncyBqdXN0IGEgbmljZSB0byBoYXZlKS5cblx0ICAgIH1cblx0XG5cdCAgICBjb25z
b2xlLnJlYWN0U3RhY2soc3RhY2spO1xuXHQgIH0sXG5cdCAgcG9wTm9uU3RhbmRhcmRXYXJuaW5n
U3RhY2s6IGZ1bmN0aW9uICgpIHtcblx0ICAgIGlmICh0eXBlb2YgY29uc29sZS5yZWFjdFN0YWNr
RW5kICE9PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICAgIGNv
bnNvbGUucmVhY3RTdGFja0VuZCgpO1xuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRz
ID0gUmVhY3RDb21wb25lbnRUcmVlSG9vaztcblxuLyoqKi8gfSxcbi8qIDkxICovXG4vKioqLyBm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTQt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpc
blx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cblx0ICpcblx0ICogXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0
Ly8gVGhlIFN5bWJvbCB1c2VkIHRvIHRhZyB0aGUgUmVhY3RFbGVtZW50IHR5cGUuIElmIHRoZXJl
IGlzIG5vIG5hdGl2ZSBTeW1ib2xcblx0Ly8gbm9yIHBvbHlmaWxsLCB0aGVuIGEgcGxhaW4gbnVt
YmVyIGlzIHVzZWQgZm9yIHBlcmZvcm1hbmNlLlxuXHRcblx0dmFyIFJFQUNUX0VMRU1FTlRfVFlQ
RSA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sWydmb3InXSAmJiBTeW1i
b2xbJ2ZvciddKCdyZWFjdC5lbGVtZW50JykgfHwgMHhlYWM3O1xuXHRcblx0bW9kdWxlLmV4cG9y
dHMgPSBSRUFDVF9FTEVNRU5UX1RZUEU7XG5cbi8qKiovIH0sXG4vKiA5MiAqL1xuLyoqKi8gZnVu
Y3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5c
dCAqIENvcHlyaWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJp
Y3QnO1xuXHRcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHRcblx0
ZnVuY3Rpb24gd2Fybk5vb3AocHVibGljSW5zdGFuY2UsIGNhbGxlck5hbWUpIHtcblx0ICBpZiAo
ZmFsc2UpIHtcblx0ICAgIHZhciBjb25zdHJ1Y3RvciA9IHB1YmxpY0luc3RhbmNlLmNvbnN0cnVj
dG9yO1xuXHQgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5p
bmcoZmFsc2UsICclcyguLi4pOiBDYW4gb25seSB1cGRhdGUgYSBtb3VudGVkIG9yIG1vdW50aW5n
IGNvbXBvbmVudC4gJyArICdUaGlzIHVzdWFsbHkgbWVhbnMgeW91IGNhbGxlZCAlcygpIG9uIGFu
IHVubW91bnRlZCBjb21wb25lbnQuICcgKyAnVGhpcyBpcyBhIG5vLW9wLiBQbGVhc2UgY2hlY2sg
dGhlIGNvZGUgZm9yIHRoZSAlcyBjb21wb25lbnQuJywgY2FsbGVyTmFtZSwgY2FsbGVyTmFtZSwg
Y29uc3RydWN0b3IgJiYgKGNvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8IGNvbnN0cnVjdG9yLm5h
bWUpIHx8ICdSZWFjdENsYXNzJykgOiB2b2lkIDA7XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0
ICogVGhpcyBpcyB0aGUgYWJzdHJhY3QgQVBJIGZvciBhbiB1cGRhdGUgcXVldWUuXG5cdCAqL1xu
XHR2YXIgUmVhY3ROb29wVXBkYXRlUXVldWUgPSB7XG5cdCAgLyoqXG5cdCAgICogQ2hlY2tzIHdo
ZXRoZXIgb3Igbm90IHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCBpcyBtb3VudGVkLlxuXHQgICAq
IEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHdlIHdhbnQg
dG8gdGVzdC5cblx0ICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIG1vdW50ZWQsIGZhbHNl
IG90aGVyd2lzZS5cblx0ICAgKiBAcHJvdGVjdGVkXG5cdCAgICogQGZpbmFsXG5cdCAgICovXG5c
dCAgaXNNb3VudGVkOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UpIHtcblx0ICAgIHJldHVybiBm
YWxzZTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBFbnF1ZXVlIGEgY2FsbGJhY2sgdGhh
dCB3aWxsIGJlIGV4ZWN1dGVkIGFmdGVyIGFsbCB0aGUgcGVuZGluZyB1cGRhdGVzXG5cdCAgICog
aGF2ZSBwcm9jZXNzZWQuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1Ymxp
Y0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0byB1c2UgYXMgYHRoaXNgIGNvbnRleHQuXG5cdCAgICog
QHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRlciBzdGF0ZSBpcyB1cGRhdGVk
LlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIGVucXVldWVDYWxsYmFjazogZnVuY3Rp
b24gKHB1YmxpY0luc3RhbmNlLCBjYWxsYmFjaykge30sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEZv
cmNlcyBhbiB1cGRhdGUuIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW52b2tlZCB3aGVuIGl0IGlzIGtu
b3duIHdpdGhcblx0ICAgKiBjZXJ0YWludHkgdGhhdCB3ZSBhcmUgKipub3QqKiBpbiBhIERPTSB0
cmFuc2FjdGlvbi5cblx0ICAgKlxuXHQgICAqIFlvdSBtYXkgd2FudCB0byBjYWxsIHRoaXMgd2hl
biB5b3Uga25vdyB0aGF0IHNvbWUgZGVlcGVyIGFzcGVjdCBvZiB0aGVcblx0ICAgKiBjb21wb25l
bnQncyBzdGF0ZSBoYXMgY2hhbmdlZCBidXQgYHNldFN0YXRlYCB3YXMgbm90IGNhbGxlZC5cblx0
ICAgKlxuXHQgICAqIFRoaXMgd2lsbCBub3QgaW52b2tlIGBzaG91bGRDb21wb25lbnRVcGRhdGVg
LCBidXQgaXQgd2lsbCBpbnZva2Vcblx0ICAgKiBgY29tcG9uZW50V2lsbFVwZGF0ZWAgYW5kIGBj
b21wb25lbnREaWRVcGRhdGVgLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBw
dWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG5cdCAgICog
QGludGVybmFsXG5cdCAgICovXG5cdCAgZW5xdWV1ZUZvcmNlVXBkYXRlOiBmdW5jdGlvbiAocHVi
bGljSW5zdGFuY2UpIHtcblx0ICAgIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCAnZm9yY2VVcGRh
dGUnKTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBSZXBsYWNlcyBhbGwgb2YgdGhlIHN0
YXRlLiBBbHdheXMgdXNlIHRoaXMgb3IgYHNldFN0YXRlYCB0byBtdXRhdGUgc3RhdGUuXG5cdCAg
ICogWW91IHNob3VsZCB0cmVhdCBgdGhpcy5zdGF0ZWAgYXMgaW1tdXRhYmxlLlxuXHQgICAqXG5c
dCAgICogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgYHRoaXMuc3RhdGVgIHdpbGwgYmUgaW1t
ZWRpYXRlbHkgdXBkYXRlZCwgc29cblx0ICAgKiBhY2Nlc3NpbmcgYHRoaXMuc3RhdGVgIGFmdGVy
IGNhbGxpbmcgdGhpcyBtZXRob2QgbWF5IHJldHVybiB0aGUgb2xkIHZhbHVlLlxuXHQgICAqXG5c
dCAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhh
dCBzaG91bGQgcmVyZW5kZXIuXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGNvbXBsZXRlU3RhdGUg
TmV4dCBzdGF0ZS5cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICBlbnF1ZXVlUmVwbGFj
ZVN0YXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIGNvbXBsZXRlU3RhdGUpIHtcblx0ICAg
IHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCAncmVwbGFjZVN0YXRlJyk7XG5cdCAgfSxcblx0XG5c
dCAgLyoqXG5cdCAgICogU2V0cyBhIHN1YnNldCBvZiB0aGUgc3RhdGUuIFRoaXMgb25seSBleGlz
dHMgYmVjYXVzZSBfcGVuZGluZ1N0YXRlIGlzXG5cdCAgICogaW50ZXJuYWwuIFRoaXMgcHJvdmlk
ZXMgYSBtZXJnaW5nIHN0cmF0ZWd5IHRoYXQgaXMgbm90IGF2YWlsYWJsZSB0byBkZWVwXG5cdCAg
ICogcHJvcGVydGllcyB3aGljaCBpcyBjb25mdXNpbmcuIFRPRE86IEV4cG9zZSBwZW5kaW5nU3Rh
dGUgb3IgZG9uJ3QgdXNlIGl0XG5cdCAgICogZHVyaW5nIHRoZSBtZXJnZS5cblx0ICAgKlxuXHQg
ICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQg
c2hvdWxkIHJlcmVuZGVyLlxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWFsU3RhdGUgTmV4
dCBwYXJ0aWFsIHN0YXRlIHRvIGJlIG1lcmdlZCB3aXRoIHN0YXRlLlxuXHQgICAqIEBpbnRlcm5h
bFxuXHQgICAqL1xuXHQgIGVucXVldWVTZXRTdGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNl
LCBwYXJ0aWFsU3RhdGUpIHtcblx0ICAgIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCAnc2V0U3Rh
dGUnKTtcblx0ICB9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0Tm9vcFVwZGF0
ZVF1ZXVlO1xuXG4vKioqLyB9LFxuLyogOTMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQg
KlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxu
XHR2YXIgY2FuRGVmaW5lUHJvcGVydHkgPSBmYWxzZTtcblx0aWYgKGZhbHNlKSB7XG5cdCAgdHJ5
IHtcblx0ICAgIC8vICRGbG93Rml4TWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cv
aXNzdWVzLzI4NVxuXHQgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHt9LCAneCcsIHsgZ2V0OiBm
dW5jdGlvbiAoKSB7fSB9KTtcblx0ICAgIGNhbkRlZmluZVByb3BlcnR5ID0gdHJ1ZTtcblx0ICB9
IGNhdGNoICh4KSB7XG5cdCAgICAvLyBJRSB3aWxsIGZhaWwgb24gZGVmaW5lUHJvcGVydHlcblx0
ICB9XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gY2FuRGVmaW5lUHJvcGVydHk7XG5cbi8q
KiovIH0sXG4vKiA5NCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0
XCJ1c2Ugc3RyaWN0XCI7XG5cdFxuXHRleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXHRleHBv
cnRzW1wiZGVmYXVsdFwiXSA9IGNvbXBvc2U7XG5cdC8qKlxuXHQgKiBDb21wb3NlcyBzaW5nbGUt
YXJndW1lbnQgZnVuY3Rpb25zIGZyb20gcmlnaHQgdG8gbGVmdC4gVGhlIHJpZ2h0bW9zdFxuXHQg
KiBmdW5jdGlvbiBjYW4gdGFrZSBtdWx0aXBsZSBhcmd1bWVudHMgYXMgaXQgcHJvdmlkZXMgdGhl
IHNpZ25hdHVyZSBmb3Jcblx0ICogdGhlIHJlc3VsdGluZyBjb21wb3NpdGUgZnVuY3Rpb24uXG5c
dCAqXG5cdCAqIEBwYXJhbSB7Li4uRnVuY3Rpb259IGZ1bmNzIFRoZSBmdW5jdGlvbnMgdG8gY29t
cG9zZS5cblx0ICogQHJldHVybnMge0Z1bmN0aW9ufSBBIGZ1bmN0aW9uIG9idGFpbmVkIGJ5IGNv
bXBvc2luZyB0aGUgYXJndW1lbnQgZnVuY3Rpb25zXG5cdCAqIGZyb20gcmlnaHQgdG8gbGVmdC4g
Rm9yIGV4YW1wbGUsIGNvbXBvc2UoZiwgZywgaCkgaXMgaWRlbnRpY2FsIHRvIGRvaW5nXG5cdCAq
ICguLi5hcmdzKSA9PiBmKGcoaCguLi5hcmdzKSkpLlxuXHQgKi9cblx0XG5cdGZ1bmN0aW9uIGNv
bXBvc2UoKSB7XG5cdCAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGZ1bmNzID0g
QXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG5cdCAgICBmdW5j
c1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcblx0ICB9XG5cdFxuXHQgIGlmIChmdW5jcy5sZW5n
dGggPT09IDApIHtcblx0ICAgIHJldHVybiBmdW5jdGlvbiAoYXJnKSB7XG5cdCAgICAgIHJldHVy
biBhcmc7XG5cdCAgICB9O1xuXHQgIH1cblx0XG5cdCAgaWYgKGZ1bmNzLmxlbmd0aCA9PT0gMSkg
e1xuXHQgICAgcmV0dXJuIGZ1bmNzWzBdO1xuXHQgIH1cblx0XG5cdCAgcmV0dXJuIGZ1bmNzLnJl
ZHVjZShmdW5jdGlvbiAoYSwgYikge1xuXHQgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcblx0ICAg
ICAgcmV0dXJuIGEoYi5hcHBseSh1bmRlZmluZWQsIGFyZ3VtZW50cykpO1xuXHQgICAgfTtcblx0
ICB9KTtcblx0fVxuXG4vKioqLyB9LFxuLyogOTUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwg
ZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5c
dGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cdGV4cG9ydHMuQWN0aW9uVHlwZXMgPSB1bmRl
ZmluZWQ7XG5cdGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGNyZWF0ZVN0b3JlO1xuXHRcblx0dmFyIF9p
c1BsYWluT2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMyk7XG5cdFxuXHR2YXIgX2lzUGxh
aW5PYmplY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNQbGFpbk9iamVjdCk7XG5cdFxu
XHR2YXIgX3N5bWJvbE9ic2VydmFibGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyOCk7XG5cdFxu
XHR2YXIgX3N5bWJvbE9ic2VydmFibGUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc3ltYm9s
T2JzZXJ2YWJsZSk7XG5cdFxuXHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikg
eyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9
OyB9XG5cdFxuXHQvKipcblx0ICogVGhlc2UgYXJlIHByaXZhdGUgYWN0aW9uIHR5cGVzIHJlc2Vy
dmVkIGJ5IFJlZHV4LlxuXHQgKiBGb3IgYW55IHVua25vd24gYWN0aW9ucywgeW91IG11c3QgcmV0
dXJuIHRoZSBjdXJyZW50IHN0YXRlLlxuXHQgKiBJZiB0aGUgY3VycmVudCBzdGF0ZSBpcyB1bmRl
ZmluZWQsIHlvdSBtdXN0IHJldHVybiB0aGUgaW5pdGlhbCBzdGF0ZS5cblx0ICogRG8gbm90IHJl
ZmVyZW5jZSB0aGVzZSBhY3Rpb24gdHlwZXMgZGlyZWN0bHkgaW4geW91ciBjb2RlLlxuXHQgKi9c
blx0dmFyIEFjdGlvblR5cGVzID0gZXhwb3J0cy5BY3Rpb25UeXBlcyA9IHtcblx0ICBJTklUOiAn
QEByZWR1eC9JTklUJ1xuXHRcblx0ICAvKipcblx0ICAgKiBDcmVhdGVzIGEgUmVkdXggc3RvcmUg
dGhhdCBob2xkcyB0aGUgc3RhdGUgdHJlZS5cblx0ICAgKiBUaGUgb25seSB3YXkgdG8gY2hhbmdl
IHRoZSBkYXRhIGluIHRoZSBzdG9yZSBpcyB0byBjYWxsIGBkaXNwYXRjaCgpYCBvbiBpdC5cblx0
ICAgKlxuXHQgICAqIFRoZXJlIHNob3VsZCBvbmx5IGJlIGEgc2luZ2xlIHN0b3JlIGluIHlvdXIg
YXBwLiBUbyBzcGVjaWZ5IGhvdyBkaWZmZXJlbnRcblx0ICAgKiBwYXJ0cyBvZiB0aGUgc3RhdGUg
dHJlZSByZXNwb25kIHRvIGFjdGlvbnMsIHlvdSBtYXkgY29tYmluZSBzZXZlcmFsIHJlZHVjZXJz
XG5cdCAgICogaW50byBhIHNpbmdsZSByZWR1Y2VyIGZ1bmN0aW9uIGJ5IHVzaW5nIGBjb21iaW5l
UmVkdWNlcnNgLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtGdW5jdGlvbn0gcmVkdWNlciBBIGZ1
bmN0aW9uIHRoYXQgcmV0dXJucyB0aGUgbmV4dCBzdGF0ZSB0cmVlLCBnaXZlblxuXHQgICAqIHRo
ZSBjdXJyZW50IHN0YXRlIHRyZWUgYW5kIHRoZSBhY3Rpb24gdG8gaGFuZGxlLlxuXHQgICAqXG5c
dCAgICogQHBhcmFtIHthbnl9IFtwcmVsb2FkZWRTdGF0ZV0gVGhlIGluaXRpYWwgc3RhdGUuIFlv
dSBtYXkgb3B0aW9uYWxseSBzcGVjaWZ5IGl0XG5cdCAgICogdG8gaHlkcmF0ZSB0aGUgc3RhdGUg
ZnJvbSB0aGUgc2VydmVyIGluIHVuaXZlcnNhbCBhcHBzLCBvciB0byByZXN0b3JlIGFcblx0ICAg
KiBwcmV2aW91c2x5IHNlcmlhbGl6ZWQgdXNlciBzZXNzaW9uLlxuXHQgICAqIElmIHlvdSB1c2Ug
YGNvbWJpbmVSZWR1Y2Vyc2AgdG8gcHJvZHVjZSB0aGUgcm9vdCByZWR1Y2VyIGZ1bmN0aW9uLCB0
aGlzIG11c3QgYmVcblx0ICAgKiBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSBzaGFwZSBhcyBgY29t
YmluZVJlZHVjZXJzYCBrZXlzLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtGdW5jdGlvbn0gW2Vu
aGFuY2VyXSBUaGUgc3RvcmUgZW5oYW5jZXIuIFlvdSBtYXkgb3B0aW9uYWxseSBzcGVjaWZ5IGl0
XG5cdCAgICogdG8gZW5oYW5jZSB0aGUgc3RvcmUgd2l0aCB0aGlyZC1wYXJ0eSBjYXBhYmlsaXRp
ZXMgc3VjaCBhcyBtaWRkbGV3YXJlLFxuXHQgICAqIHRpbWUgdHJhdmVsLCBwZXJzaXN0ZW5jZSwg
ZXRjLiBUaGUgb25seSBzdG9yZSBlbmhhbmNlciB0aGF0IHNoaXBzIHdpdGggUmVkdXhcblx0ICAg
KiBpcyBgYXBwbHlNaWRkbGV3YXJlKClgLlxuXHQgICAqXG5cdCAgICogQHJldHVybnMge1N0b3Jl
fSBBIFJlZHV4IHN0b3JlIHRoYXQgbGV0cyB5b3UgcmVhZCB0aGUgc3RhdGUsIGRpc3BhdGNoIGFj
dGlvbnNcblx0ICAgKiBhbmQgc3Vic2NyaWJlIHRvIGNoYW5nZXMuXG5cdCAgICovXG5cdH07ZnVu
Y3Rpb24gY3JlYXRlU3RvcmUocmVkdWNlciwgcHJlbG9hZGVkU3RhdGUsIGVuaGFuY2VyKSB7XG5c
dCAgdmFyIF9yZWYyO1xuXHRcblx0ICBpZiAodHlwZW9mIHByZWxvYWRlZFN0YXRlID09PSAnZnVu
Y3Rpb24nICYmIHR5cGVvZiBlbmhhbmNlciA9PT0gJ3VuZGVmaW5lZCcpIHtcblx0ICAgIGVuaGFu
Y2VyID0gcHJlbG9hZGVkU3RhdGU7XG5cdCAgICBwcmVsb2FkZWRTdGF0ZSA9IHVuZGVmaW5lZDtc
blx0ICB9XG5cdFxuXHQgIGlmICh0eXBlb2YgZW5oYW5jZXIgIT09ICd1bmRlZmluZWQnKSB7XG5c
dCAgICBpZiAodHlwZW9mIGVuaGFuY2VyICE9PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAgIHRocm93
IG5ldyBFcnJvcignRXhwZWN0ZWQgdGhlIGVuaGFuY2VyIHRvIGJlIGEgZnVuY3Rpb24uJyk7XG5c
dCAgICB9XG5cdFxuXHQgICAgcmV0dXJuIGVuaGFuY2VyKGNyZWF0ZVN0b3JlKShyZWR1Y2VyLCBw
cmVsb2FkZWRTdGF0ZSk7XG5cdCAgfVxuXHRcblx0ICBpZiAodHlwZW9mIHJlZHVjZXIgIT09ICdm
dW5jdGlvbicpIHtcblx0ICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgdGhlIHJlZHVjZXIg
dG8gYmUgYSBmdW5jdGlvbi4nKTtcblx0ICB9XG5cdFxuXHQgIHZhciBjdXJyZW50UmVkdWNlciA9
IHJlZHVjZXI7XG5cdCAgdmFyIGN1cnJlbnRTdGF0ZSA9IHByZWxvYWRlZFN0YXRlO1xuXHQgIHZh
ciBjdXJyZW50TGlzdGVuZXJzID0gW107XG5cdCAgdmFyIG5leHRMaXN0ZW5lcnMgPSBjdXJyZW50
TGlzdGVuZXJzO1xuXHQgIHZhciBpc0Rpc3BhdGNoaW5nID0gZmFsc2U7XG5cdFxuXHQgIGZ1bmN0
aW9uIGVuc3VyZUNhbk11dGF0ZU5leHRMaXN0ZW5lcnMoKSB7XG5cdCAgICBpZiAobmV4dExpc3Rl
bmVycyA9PT0gY3VycmVudExpc3RlbmVycykge1xuXHQgICAgICBuZXh0TGlzdGVuZXJzID0gY3Vy
cmVudExpc3RlbmVycy5zbGljZSgpO1xuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAgLyoqXG5cdCAg
ICogUmVhZHMgdGhlIHN0YXRlIHRyZWUgbWFuYWdlZCBieSB0aGUgc3RvcmUuXG5cdCAgICpcblx0
ICAgKiBAcmV0dXJucyB7YW55fSBUaGUgY3VycmVudCBzdGF0ZSB0cmVlIG9mIHlvdXIgYXBwbGlj
YXRpb24uXG5cdCAgICovXG5cdCAgZnVuY3Rpb24gZ2V0U3RhdGUoKSB7XG5cdCAgICByZXR1cm4g
Y3VycmVudFN0YXRlO1xuXHQgIH1cblx0XG5cdCAgLyoqXG5cdCAgICogQWRkcyBhIGNoYW5nZSBs
aXN0ZW5lci4gSXQgd2lsbCBiZSBjYWxsZWQgYW55IHRpbWUgYW4gYWN0aW9uIGlzIGRpc3BhdGNo
ZWQsXG5cdCAgICogYW5kIHNvbWUgcGFydCBvZiB0aGUgc3RhdGUgdHJlZSBtYXkgcG90ZW50aWFs
bHkgaGF2ZSBjaGFuZ2VkLiBZb3UgbWF5IHRoZW5cblx0ICAgKiBjYWxsIGBnZXRTdGF0ZSgpYCB0
byByZWFkIHRoZSBjdXJyZW50IHN0YXRlIHRyZWUgaW5zaWRlIHRoZSBjYWxsYmFjay5cblx0ICAg
KlxuXHQgICAqIFlvdSBtYXkgY2FsbCBgZGlzcGF0Y2goKWAgZnJvbSBhIGNoYW5nZSBsaXN0ZW5l
ciwgd2l0aCB0aGUgZm9sbG93aW5nXG5cdCAgICogY2F2ZWF0czpcblx0ICAgKlxuXHQgICAqIDEu
IFRoZSBzdWJzY3JpcHRpb25zIGFyZSBzbmFwc2hvdHRlZCBqdXN0IGJlZm9yZSBldmVyeSBgZGlz
cGF0Y2goKWAgY2FsbC5cblx0ICAgKiBJZiB5b3Ugc3Vic2NyaWJlIG9yIHVuc3Vic2NyaWJlIHdo
aWxlIHRoZSBsaXN0ZW5lcnMgYXJlIGJlaW5nIGludm9rZWQsIHRoaXNcblx0ICAgKiB3aWxsIG5v
dCBoYXZlIGFueSBlZmZlY3Qgb24gdGhlIGBkaXNwYXRjaCgpYCB0aGF0IGlzIGN1cnJlbnRseSBp
biBwcm9ncmVzcy5cblx0ICAgKiBIb3dldmVyLCB0aGUgbmV4dCBgZGlzcGF0Y2goKWAgY2FsbCwg
d2hldGhlciBuZXN0ZWQgb3Igbm90LCB3aWxsIHVzZSBhIG1vcmVcblx0ICAgKiByZWNlbnQgc25h
cHNob3Qgb2YgdGhlIHN1YnNjcmlwdGlvbiBsaXN0LlxuXHQgICAqXG5cdCAgICogMi4gVGhlIGxp
c3RlbmVyIHNob3VsZCBub3QgZXhwZWN0IHRvIHNlZSBhbGwgc3RhdGUgY2hhbmdlcywgYXMgdGhl
IHN0YXRlXG5cdCAgICogbWlnaHQgaGF2ZSBiZWVuIHVwZGF0ZWQgbXVsdGlwbGUgdGltZXMgZHVy
aW5nIGEgbmVzdGVkIGBkaXNwYXRjaCgpYCBiZWZvcmVcblx0ICAgKiB0aGUgbGlzdGVuZXIgaXMg
Y2FsbGVkLiBJdCBpcywgaG93ZXZlciwgZ3VhcmFudGVlZCB0aGF0IGFsbCBzdWJzY3JpYmVyc1xu
XHQgICAqIHJlZ2lzdGVyZWQgYmVmb3JlIHRoZSBgZGlzcGF0Y2goKWAgc3RhcnRlZCB3aWxsIGJl
IGNhbGxlZCB3aXRoIHRoZSBsYXRlc3Rcblx0ICAgKiBzdGF0ZSBieSB0aGUgdGltZSBpdCBleGl0
cy5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7RnVuY3Rpb259IGxpc3RlbmVyIEEgY2FsbGJhY2sg
dG8gYmUgaW52b2tlZCBvbiBldmVyeSBkaXNwYXRjaC5cblx0ICAgKiBAcmV0dXJucyB7RnVuY3Rp
b259IEEgZnVuY3Rpb24gdG8gcmVtb3ZlIHRoaXMgY2hhbmdlIGxpc3RlbmVyLlxuXHQgICAqL1xu
XHQgIGZ1bmN0aW9uIHN1YnNjcmliZShsaXN0ZW5lcikge1xuXHQgICAgaWYgKHR5cGVvZiBsaXN0
ZW5lciAhPT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVk
IGxpc3RlbmVyIHRvIGJlIGEgZnVuY3Rpb24uJyk7XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIGlz
U3Vic2NyaWJlZCA9IHRydWU7XG5cdFxuXHQgICAgZW5zdXJlQ2FuTXV0YXRlTmV4dExpc3RlbmVy
cygpO1xuXHQgICAgbmV4dExpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcblx0XG5cdCAgICByZXR1
cm4gZnVuY3Rpb24gdW5zdWJzY3JpYmUoKSB7XG5cdCAgICAgIGlmICghaXNTdWJzY3JpYmVkKSB7
XG5cdCAgICAgICAgcmV0dXJuO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICBpc1N1YnNjcmliZWQg
PSBmYWxzZTtcblx0XG5cdCAgICAgIGVuc3VyZUNhbk11dGF0ZU5leHRMaXN0ZW5lcnMoKTtcblx0
ICAgICAgdmFyIGluZGV4ID0gbmV4dExpc3RlbmVycy5pbmRleE9mKGxpc3RlbmVyKTtcblx0ICAg
ICAgbmV4dExpc3RlbmVycy5zcGxpY2UoaW5kZXgsIDEpO1xuXHQgICAgfTtcblx0ICB9XG5cdFxu
XHQgIC8qKlxuXHQgICAqIERpc3BhdGNoZXMgYW4gYWN0aW9uLiBJdCBpcyB0aGUgb25seSB3YXkg
dG8gdHJpZ2dlciBhIHN0YXRlIGNoYW5nZS5cblx0ICAgKlxuXHQgICAqIFRoZSBgcmVkdWNlcmAg
ZnVuY3Rpb24sIHVzZWQgdG8gY3JlYXRlIHRoZSBzdG9yZSwgd2lsbCBiZSBjYWxsZWQgd2l0aCB0
aGVcblx0ICAgKiBjdXJyZW50IHN0YXRlIHRyZWUgYW5kIHRoZSBnaXZlbiBgYWN0aW9uYC4gSXRz
IHJldHVybiB2YWx1ZSB3aWxsXG5cdCAgICogYmUgY29uc2lkZXJlZCB0aGUgKipuZXh0Kiogc3Rh
dGUgb2YgdGhlIHRyZWUsIGFuZCB0aGUgY2hhbmdlIGxpc3RlbmVyc1xuXHQgICAqIHdpbGwgYmUg
bm90aWZpZWQuXG5cdCAgICpcblx0ICAgKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvbmx5IHN1
cHBvcnRzIHBsYWluIG9iamVjdCBhY3Rpb25zLiBJZiB5b3Ugd2FudCB0b1xuXHQgICAqIGRpc3Bh
dGNoIGEgUHJvbWlzZSwgYW4gT2JzZXJ2YWJsZSwgYSB0aHVuaywgb3Igc29tZXRoaW5nIGVsc2Us
IHlvdSBuZWVkIHRvXG5cdCAgICogd3JhcCB5b3VyIHN0b3JlIGNyZWF0aW5nIGZ1bmN0aW9uIGlu
dG8gdGhlIGNvcnJlc3BvbmRpbmcgbWlkZGxld2FyZS4gRm9yXG5cdCAgICogZXhhbXBsZSwgc2Vl
IHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgYHJlZHV4LXRodW5rYCBwYWNrYWdlLiBFdmVuIHRo
ZVxuXHQgICAqIG1pZGRsZXdhcmUgd2lsbCBldmVudHVhbGx5IGRpc3BhdGNoIHBsYWluIG9iamVj
dCBhY3Rpb25zIHVzaW5nIHRoaXMgbWV0aG9kLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtPYmpl
Y3R9IGFjdGlvbiBBIHBsYWluIG9iamVjdCByZXByZXNlbnRpbmcg4oCcd2hhdCBjaGFuZ2Vk4oCd
LiBJdCBpc1xuXHQgICAqIGEgZ29vZCBpZGVhIHRvIGtlZXAgYWN0aW9ucyBzZXJpYWxpemFibGUg
c28geW91IGNhbiByZWNvcmQgYW5kIHJlcGxheSB1c2VyXG5cdCAgICogc2Vzc2lvbnMsIG9yIHVz
ZSB0aGUgdGltZSB0cmF2ZWxsaW5nIGByZWR1eC1kZXZ0b29sc2AuIEFuIGFjdGlvbiBtdXN0IGhh
dmVcblx0ICAgKiBhIGB0eXBlYCBwcm9wZXJ0eSB3aGljaCBtYXkgbm90IGJlIGB1bmRlZmluZWRg
LiBJdCBpcyBhIGdvb2QgaWRlYSB0byB1c2Vcblx0ICAgKiBzdHJpbmcgY29uc3RhbnRzIGZvciBh
Y3Rpb24gdHlwZXMuXG5cdCAgICpcblx0ICAgKiBAcmV0dXJucyB7T2JqZWN0fSBGb3IgY29udmVu
aWVuY2UsIHRoZSBzYW1lIGFjdGlvbiBvYmplY3QgeW91IGRpc3BhdGNoZWQuXG5cdCAgICpcblx0
ICAgKiBOb3RlIHRoYXQsIGlmIHlvdSB1c2UgYSBjdXN0b20gbWlkZGxld2FyZSwgaXQgbWF5IHdy
YXAgYGRpc3BhdGNoKClgIHRvXG5cdCAgICogcmV0dXJuIHNvbWV0aGluZyBlbHNlIChmb3IgZXhh
bXBsZSwgYSBQcm9taXNlIHlvdSBjYW4gYXdhaXQpLlxuXHQgICAqL1xuXHQgIGZ1bmN0aW9uIGRp
c3BhdGNoKGFjdGlvbikge1xuXHQgICAgaWYgKCEoMCwgX2lzUGxhaW5PYmplY3QyWydkZWZhdWx0
J10pKGFjdGlvbikpIHtcblx0ICAgICAgdGhyb3cgbmV3IEVycm9yKCdBY3Rpb25zIG11c3QgYmUg
cGxhaW4gb2JqZWN0cy4gJyArICdVc2UgY3VzdG9tIG1pZGRsZXdhcmUgZm9yIGFzeW5jIGFjdGlv
bnMuJyk7XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKHR5cGVvZiBhY3Rpb24udHlwZSA9PT0gJ3Vu
ZGVmaW5lZCcpIHtcblx0ICAgICAgdGhyb3cgbmV3IEVycm9yKCdBY3Rpb25zIG1heSBub3QgaGF2
ZSBhbiB1bmRlZmluZWQgXCJ0eXBlXCIgcHJvcGVydHkuICcgKyAnSGF2ZSB5b3UgbWlzc3BlbGxl
ZCBhIGNvbnN0YW50PycpO1xuXHQgICAgfVxuXHRcblx0ICAgIGlmIChpc0Rpc3BhdGNoaW5nKSB7
XG5cdCAgICAgIHRocm93IG5ldyBFcnJvcignUmVkdWNlcnMgbWF5IG5vdCBkaXNwYXRjaCBhY3Rp
b25zLicpO1xuXHQgICAgfVxuXHRcblx0ICAgIHRyeSB7XG5cdCAgICAgIGlzRGlzcGF0Y2hpbmcg
PSB0cnVlO1xuXHQgICAgICBjdXJyZW50U3RhdGUgPSBjdXJyZW50UmVkdWNlcihjdXJyZW50U3Rh
dGUsIGFjdGlvbik7XG5cdCAgICB9IGZpbmFsbHkge1xuXHQgICAgICBpc0Rpc3BhdGNoaW5nID0g
ZmFsc2U7XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIGxpc3RlbmVycyA9IGN1cnJlbnRMaXN0ZW5l
cnMgPSBuZXh0TGlzdGVuZXJzO1xuXHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0ZW5lcnMu
bGVuZ3RoOyBpKyspIHtcblx0ICAgICAgdmFyIGxpc3RlbmVyID0gbGlzdGVuZXJzW2ldO1xuXHQg
ICAgICBsaXN0ZW5lcigpO1xuXHQgICAgfVxuXHRcblx0ICAgIHJldHVybiBhY3Rpb247XG5cdCAg
fVxuXHRcblx0ICAvKipcblx0ICAgKiBSZXBsYWNlcyB0aGUgcmVkdWNlciBjdXJyZW50bHkgdXNl
ZCBieSB0aGUgc3RvcmUgdG8gY2FsY3VsYXRlIHRoZSBzdGF0ZS5cblx0ICAgKlxuXHQgICAqIFlv
dSBtaWdodCBuZWVkIHRoaXMgaWYgeW91ciBhcHAgaW1wbGVtZW50cyBjb2RlIHNwbGl0dGluZyBh
bmQgeW91IHdhbnQgdG9cblx0ICAgKiBsb2FkIHNvbWUgb2YgdGhlIHJlZHVjZXJzIGR5bmFtaWNh
bGx5LiBZb3UgbWlnaHQgYWxzbyBuZWVkIHRoaXMgaWYgeW91XG5cdCAgICogaW1wbGVtZW50IGEg
aG90IHJlbG9hZGluZyBtZWNoYW5pc20gZm9yIFJlZHV4LlxuXHQgICAqXG5cdCAgICogQHBhcmFt
IHtGdW5jdGlvbn0gbmV4dFJlZHVjZXIgVGhlIHJlZHVjZXIgZm9yIHRoZSBzdG9yZSB0byB1c2Ug
aW5zdGVhZC5cblx0ICAgKiBAcmV0dXJucyB7dm9pZH1cblx0ICAgKi9cblx0ICBmdW5jdGlvbiBy
ZXBsYWNlUmVkdWNlcihuZXh0UmVkdWNlcikge1xuXHQgICAgaWYgKHR5cGVvZiBuZXh0UmVkdWNl
ciAhPT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIHRo
ZSBuZXh0UmVkdWNlciB0byBiZSBhIGZ1bmN0aW9uLicpO1xuXHQgICAgfVxuXHRcblx0ICAgIGN1
cnJlbnRSZWR1Y2VyID0gbmV4dFJlZHVjZXI7XG5cdCAgICBkaXNwYXRjaCh7IHR5cGU6IEFjdGlv
blR5cGVzLklOSVQgfSk7XG5cdCAgfVxuXHRcblx0ICAvKipcblx0ICAgKiBJbnRlcm9wZXJhYmls
aXR5IHBvaW50IGZvciBvYnNlcnZhYmxlL3JlYWN0aXZlIGxpYnJhcmllcy5cblx0ICAgKiBAcmV0
dXJucyB7b2JzZXJ2YWJsZX0gQSBtaW5pbWFsIG9ic2VydmFibGUgb2Ygc3RhdGUgY2hhbmdlcy5c
blx0ICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSBvYnNlcnZhYmxlIHByb3Bvc2Fs
OlxuXHQgICAqIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLW9ic2VydmFibGVcblx0
ICAgKi9cblx0ICBmdW5jdGlvbiBvYnNlcnZhYmxlKCkge1xuXHQgICAgdmFyIF9yZWY7XG5cdFxu
XHQgICAgdmFyIG91dGVyU3Vic2NyaWJlID0gc3Vic2NyaWJlO1xuXHQgICAgcmV0dXJuIF9yZWYg
PSB7XG5cdCAgICAgIC8qKlxuXHQgICAgICAgKiBUaGUgbWluaW1hbCBvYnNlcnZhYmxlIHN1YnNj
cmlwdGlvbiBtZXRob2QuXG5cdCAgICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYnNlcnZlciBBbnkg
b2JqZWN0IHRoYXQgY2FuIGJlIHVzZWQgYXMgYW4gb2JzZXJ2ZXIuXG5cdCAgICAgICAqIFRoZSBv
YnNlcnZlciBvYmplY3Qgc2hvdWxkIGhhdmUgYSBgbmV4dGAgbWV0aG9kLlxuXHQgICAgICAgKiBA
cmV0dXJucyB7c3Vic2NyaXB0aW9ufSBBbiBvYmplY3Qgd2l0aCBhbiBgdW5zdWJzY3JpYmVgIG1l
dGhvZCB0aGF0IGNhblxuXHQgICAgICAgKiBiZSB1c2VkIHRvIHVuc3Vic2NyaWJlIHRoZSBvYnNl
cnZhYmxlIGZyb20gdGhlIHN0b3JlLCBhbmQgcHJldmVudCBmdXJ0aGVyXG5cdCAgICAgICAqIGVt
aXNzaW9uIG9mIHZhbHVlcyBmcm9tIHRoZSBvYnNlcnZhYmxlLlxuXHQgICAgICAgKi9cblx0ICAg
ICAgc3Vic2NyaWJlOiBmdW5jdGlvbiBzdWJzY3JpYmUob2JzZXJ2ZXIpIHtcblx0ICAgICAgICBp
ZiAodHlwZW9mIG9ic2VydmVyICE9PSAnb2JqZWN0Jykge1xuXHQgICAgICAgICAgdGhyb3cgbmV3
IFR5cGVFcnJvcignRXhwZWN0ZWQgdGhlIG9ic2VydmVyIHRvIGJlIGFuIG9iamVjdC4nKTtcblx0
ICAgICAgICB9XG5cdFxuXHQgICAgICAgIGZ1bmN0aW9uIG9ic2VydmVTdGF0ZSgpIHtcblx0ICAg
ICAgICAgIGlmIChvYnNlcnZlci5uZXh0KSB7XG5cdCAgICAgICAgICAgIG9ic2VydmVyLm5leHQo
Z2V0U3RhdGUoKSk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHRcblx0ICAgICAgICBv
YnNlcnZlU3RhdGUoKTtcblx0ICAgICAgICB2YXIgdW5zdWJzY3JpYmUgPSBvdXRlclN1YnNjcmli
ZShvYnNlcnZlU3RhdGUpO1xuXHQgICAgICAgIHJldHVybiB7IHVuc3Vic2NyaWJlOiB1bnN1YnNj
cmliZSB9O1xuXHQgICAgICB9XG5cdCAgICB9LCBfcmVmW19zeW1ib2xPYnNlcnZhYmxlMlsnZGVm
YXVsdCddXSA9IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgcmV0dXJuIHRoaXM7XG5cdCAgICB9LCBf
cmVmO1xuXHQgIH1cblx0XG5cdCAgLy8gV2hlbiBhIHN0b3JlIGlzIGNyZWF0ZWQsIGFuIFwiSU5J
VFwiIGFjdGlvbiBpcyBkaXNwYXRjaGVkIHNvIHRoYXQgZXZlcnlcblx0ICAvLyByZWR1Y2VyIHJl
dHVybnMgdGhlaXIgaW5pdGlhbCBzdGF0ZS4gVGhpcyBlZmZlY3RpdmVseSBwb3B1bGF0ZXNcblx0
ICAvLyB0aGUgaW5pdGlhbCBzdGF0ZSB0cmVlLlxuXHQgIGRpc3BhdGNoKHsgdHlwZTogQWN0aW9u
VHlwZXMuSU5JVCB9KTtcblx0XG5cdCAgcmV0dXJuIF9yZWYyID0ge1xuXHQgICAgZGlzcGF0Y2g6
IGRpc3BhdGNoLFxuXHQgICAgc3Vic2NyaWJlOiBzdWJzY3JpYmUsXG5cdCAgICBnZXRTdGF0ZTog
Z2V0U3RhdGUsXG5cdCAgICByZXBsYWNlUmVkdWNlcjogcmVwbGFjZVJlZHVjZXJcblx0ICB9LCBf
cmVmMltfc3ltYm9sT2JzZXJ2YWJsZTJbJ2RlZmF1bHQnXV0gPSBvYnNlcnZhYmxlLCBfcmVmMjtc
blx0fVxuXG4vKioqLyB9LFxuLyogOTYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7
XG5cdGV4cG9ydHNbJ2RlZmF1bHQnXSA9IHdhcm5pbmc7XG5cdC8qKlxuXHQgKiBQcmludHMgYSB3
YXJuaW5nIGluIHRoZSBjb25zb2xlIGlmIGl0IGV4aXN0cy5cblx0ICpcblx0ICogQHBhcmFtIHtT
dHJpbmd9IG1lc3NhZ2UgVGhlIHdhcm5pbmcgbWVzc2FnZS5cblx0ICogQHJldHVybnMge3ZvaWR9
XG5cdCAqL1xuXHRmdW5jdGlvbiB3YXJuaW5nKG1lc3NhZ2UpIHtcblx0ICAvKiBlc2xpbnQtZGlz
YWJsZSBuby1jb25zb2xlICovXG5cdCAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVk
JyAmJiB0eXBlb2YgY29uc29sZS5lcnJvciA9PT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgY29uc29s
ZS5lcnJvcihtZXNzYWdlKTtcblx0ICB9XG5cdCAgLyogZXNsaW50LWVuYWJsZSBuby1jb25zb2xl
ICovXG5cdCAgdHJ5IHtcblx0ICAgIC8vIFRoaXMgZXJyb3Igd2FzIHRocm93biBhcyBhIGNvbnZl
bmllbmNlIHNvIHRoYXQgaWYgeW91IGVuYWJsZVxuXHQgICAgLy8gXCJicmVhayBvbiBhbGwgZXhj
ZXB0aW9uc1wiIGluIHlvdXIgY29uc29sZSxcblx0ICAgIC8vIGl0IHdvdWxkIHBhdXNlIHRoZSBl
eGVjdXRpb24gYXQgdGhpcyBsaW5lLlxuXHQgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xu
XHQgICAgLyogZXNsaW50LWRpc2FibGUgbm8tZW1wdHkgKi9cblx0ICB9IGNhdGNoIChlKSB7fVxu
XHQgIC8qIGVzbGludC1lbmFibGUgbm8tZW1wdHkgKi9cblx0fVxuXG4vKioqLyB9LFxuLyogOTcg
Ki9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykg
e1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
XHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0
XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVf
Xyg0KTtcblx0XG5cdHZhciBlbXB0eU9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMjQpO1xu
XHR2YXIgX2ludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdFxuXHRpZiAoZmFs
c2UpIHtcblx0ICB2YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblx0
fVxuXHRcblx0dmFyIE1JWElOU19LRVkgPSAnbWl4aW5zJztcblx0XG5cdC8vIEhlbHBlciBmdW5j
dGlvbiB0byBhbGxvdyB0aGUgY3JlYXRpb24gb2YgYW5vbnltb3VzIGZ1bmN0aW9ucyB3aGljaCBk
byBub3Rcblx0Ly8gaGF2ZSAubmFtZSBzZXQgdG8gdGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlIGJl
aW5nIGFzc2lnbmVkIHRvLlxuXHRmdW5jdGlvbiBpZGVudGl0eShmbikge1xuXHQgIHJldHVybiBm
bjtcblx0fVxuXHRcblx0dmFyIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzO1xuXHRpZiAoZmFs
c2UpIHtcblx0ICBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcyA9IHtcblx0ICAgIHByb3A6ICdw
cm9wJyxcblx0ICAgIGNvbnRleHQ6ICdjb250ZXh0Jyxcblx0ICAgIGNoaWxkQ29udGV4dDogJ2No
aWxkIGNvbnRleHQnXG5cdCAgfTtcblx0fSBlbHNlIHtcblx0ICBSZWFjdFByb3BUeXBlTG9jYXRp
b25OYW1lcyA9IHt9O1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBmYWN0b3J5KFJlYWN0Q29tcG9uZW50
LCBpc1ZhbGlkRWxlbWVudCwgUmVhY3ROb29wVXBkYXRlUXVldWUpIHtcblx0ICAvKipcblx0ICAg
KiBQb2xpY2llcyB0aGF0IGRlc2NyaWJlIG1ldGhvZHMgaW4gYFJlYWN0Q2xhc3NJbnRlcmZhY2Vg
LlxuXHQgICAqL1xuXHRcblx0ICB2YXIgaW5qZWN0ZWRNaXhpbnMgPSBbXTtcblx0XG5cdCAgLyoq
XG5cdCAgICogQ29tcG9zaXRlIGNvbXBvbmVudHMgYXJlIGhpZ2hlci1sZXZlbCBjb21wb25lbnRz
IHRoYXQgY29tcG9zZSBvdGhlciBjb21wb3NpdGVcblx0ICAgKiBvciBob3N0IGNvbXBvbmVudHMu
XG5cdCAgICpcblx0ICAgKiBUbyBjcmVhdGUgYSBuZXcgdHlwZSBvZiBgUmVhY3RDbGFzc2AsIHBh
c3MgYSBzcGVjaWZpY2F0aW9uIG9mXG5cdCAgICogeW91ciBuZXcgY2xhc3MgdG8gYFJlYWN0LmNy
ZWF0ZUNsYXNzYC4gVGhlIG9ubHkgcmVxdWlyZW1lbnQgb2YgeW91ciBjbGFzc1xuXHQgICAqIHNw
ZWNpZmljYXRpb24gaXMgdGhhdCB5b3UgaW1wbGVtZW50IGEgYHJlbmRlcmAgbWV0aG9kLlxuXHQg
ICAqXG5cdCAgICogICB2YXIgTXlDb21wb25lbnQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG5cdCAg
ICogICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7XG5cdCAgICogICAgICAgcmV0dXJuIDxkaXY+SGVs
bG8gV29ybGQ8L2Rpdj47XG5cdCAgICogICAgIH1cblx0ICAgKiAgIH0pO1xuXHQgICAqXG5cdCAg
ICogVGhlIGNsYXNzIHNwZWNpZmljYXRpb24gc3VwcG9ydHMgYSBzcGVjaWZpYyBwcm90b2NvbCBv
ZiBtZXRob2RzIHRoYXQgaGF2ZVxuXHQgICAqIHNwZWNpYWwgbWVhbmluZyAoZS5nLiBgcmVuZGVy
YCkuIFNlZSBgUmVhY3RDbGFzc0ludGVyZmFjZWAgZm9yXG5cdCAgICogbW9yZSB0aGUgY29tcHJl
aGVuc2l2ZSBwcm90b2NvbC4gQW55IG90aGVyIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMgaW4gdGhl
XG5cdCAgICogY2xhc3Mgc3BlY2lmaWNhdGlvbiB3aWxsIGJlIGF2YWlsYWJsZSBvbiB0aGUgcHJv
dG90eXBlLlxuXHQgICAqXG5cdCAgICogQGludGVyZmFjZSBSZWFjdENsYXNzSW50ZXJmYWNlXG5c
dCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAgdmFyIFJlYWN0Q2xhc3NJbnRlcmZhY2UgPSB7
XG5cdCAgICAvKipcblx0ICAgICAqIEFuIGFycmF5IG9mIE1peGluIG9iamVjdHMgdG8gaW5jbHVk
ZSB3aGVuIGRlZmluaW5nIHlvdXIgY29tcG9uZW50LlxuXHQgICAgICpcblx0ICAgICAqIEB0eXBl
IHthcnJheX1cblx0ICAgICAqIEBvcHRpb25hbFxuXHQgICAgICovXG5cdCAgICBtaXhpbnM6ICdE
RUZJTkVfTUFOWScsXG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBBbiBvYmplY3QgY29udGFpbmlu
ZyBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIHRoYXQgc2hvdWxkIGJlIGRlZmluZWQgb25cblx0ICAg
ICAqIHRoZSBjb21wb25lbnQncyBjb25zdHJ1Y3RvciBpbnN0ZWFkIG9mIGl0cyBwcm90b3R5cGUg
KHN0YXRpYyBtZXRob2RzKS5cblx0ICAgICAqXG5cdCAgICAgKiBAdHlwZSB7b2JqZWN0fVxuXHQg
ICAgICogQG9wdGlvbmFsXG5cdCAgICAgKi9cblx0ICAgIHN0YXRpY3M6ICdERUZJTkVfTUFOWScs
XG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBEZWZpbml0aW9uIG9mIHByb3AgdHlwZXMgZm9yIHRo
aXMgY29tcG9uZW50LlxuXHQgICAgICpcblx0ICAgICAqIEB0eXBlIHtvYmplY3R9XG5cdCAgICAg
KiBAb3B0aW9uYWxcblx0ICAgICAqL1xuXHQgICAgcHJvcFR5cGVzOiAnREVGSU5FX01BTlknLFxu
XHRcblx0ICAgIC8qKlxuXHQgICAgICogRGVmaW5pdGlvbiBvZiBjb250ZXh0IHR5cGVzIGZvciB0
aGlzIGNvbXBvbmVudC5cblx0ICAgICAqXG5cdCAgICAgKiBAdHlwZSB7b2JqZWN0fVxuXHQgICAg
ICogQG9wdGlvbmFsXG5cdCAgICAgKi9cblx0ICAgIGNvbnRleHRUeXBlczogJ0RFRklORV9NQU5Z
Jyxcblx0XG5cdCAgICAvKipcblx0ICAgICAqIERlZmluaXRpb24gb2YgY29udGV4dCB0eXBlcyB0
aGlzIGNvbXBvbmVudCBzZXRzIGZvciBpdHMgY2hpbGRyZW4uXG5cdCAgICAgKlxuXHQgICAgICog
QHR5cGUge29iamVjdH1cblx0ICAgICAqIEBvcHRpb25hbFxuXHQgICAgICovXG5cdCAgICBjaGls
ZENvbnRleHRUeXBlczogJ0RFRklORV9NQU5ZJyxcblx0XG5cdCAgICAvLyA9PT09IERlZmluaXRp
b24gbWV0aG9kcyA9PT09XG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBJbnZva2VkIHdoZW4gdGhl
IGNvbXBvbmVudCBpcyBtb3VudGVkLiBWYWx1ZXMgaW4gdGhlIG1hcHBpbmcgd2lsbCBiZSBzZXQg
b25cblx0ICAgICAqIGB0aGlzLnByb3BzYCBpZiB0aGF0IHByb3AgaXMgbm90IHNwZWNpZmllZCAo
aS5lLiB1c2luZyBhbiBgaW5gIGNoZWNrKS5cblx0ICAgICAqXG5cdCAgICAgKiBUaGlzIG1ldGhv
ZCBpcyBpbnZva2VkIGJlZm9yZSBgZ2V0SW5pdGlhbFN0YXRlYCBhbmQgdGhlcmVmb3JlIGNhbm5v
dCByZWx5XG5cdCAgICAgKiBvbiBgdGhpcy5zdGF0ZWAgb3IgdXNlIGB0aGlzLnNldFN0YXRlYC5c
blx0ICAgICAqXG5cdCAgICAgKiBAcmV0dXJuIHtvYmplY3R9XG5cdCAgICAgKiBAb3B0aW9uYWxc
blx0ICAgICAqL1xuXHQgICAgZ2V0RGVmYXVsdFByb3BzOiAnREVGSU5FX01BTllfTUVSR0VEJyxc
blx0XG5cdCAgICAvKipcblx0ICAgICAqIEludm9rZWQgb25jZSBiZWZvcmUgdGhlIGNvbXBvbmVu
dCBpcyBtb3VudGVkLiBUaGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgdXNlZFxuXHQgICAgICogYXMg
dGhlIGluaXRpYWwgdmFsdWUgb2YgYHRoaXMuc3RhdGVgLlxuXHQgICAgICpcblx0ICAgICAqICAg
Z2V0SW5pdGlhbFN0YXRlOiBmdW5jdGlvbigpIHtcblx0ICAgICAqICAgICByZXR1cm4ge1xuXHQg
ICAgICogICAgICAgaXNPbjogZmFsc2UsXG5cdCAgICAgKiAgICAgICBmb29CYXo6IG5ldyBCYXpG
b28oKVxuXHQgICAgICogICAgIH1cblx0ICAgICAqICAgfVxuXHQgICAgICpcblx0ICAgICAqIEBy
ZXR1cm4ge29iamVjdH1cblx0ICAgICAqIEBvcHRpb25hbFxuXHQgICAgICovXG5cdCAgICBnZXRJ
bml0aWFsU3RhdGU6ICdERUZJTkVfTUFOWV9NRVJHRUQnLFxuXHRcblx0ICAgIC8qKlxuXHQgICAg
ICogQHJldHVybiB7b2JqZWN0fVxuXHQgICAgICogQG9wdGlvbmFsXG5cdCAgICAgKi9cblx0ICAg
IGdldENoaWxkQ29udGV4dDogJ0RFRklORV9NQU5ZX01FUkdFRCcsXG5cdFxuXHQgICAgLyoqXG5c
dCAgICAgKiBVc2VzIHByb3BzIGZyb20gYHRoaXMucHJvcHNgIGFuZCBzdGF0ZSBmcm9tIGB0aGlz
LnN0YXRlYCB0byByZW5kZXIgdGhlXG5cdCAgICAgKiBzdHJ1Y3R1cmUgb2YgdGhlIGNvbXBvbmVu
dC5cblx0ICAgICAqXG5cdCAgICAgKiBObyBndWFyYW50ZWVzIGFyZSBtYWRlIGFib3V0IHdoZW4g
b3IgaG93IG9mdGVuIHRoaXMgbWV0aG9kIGlzIGludm9rZWQsIHNvXG5cdCAgICAgKiBpdCBtdXN0
IG5vdCBoYXZlIHNpZGUgZWZmZWN0cy5cblx0ICAgICAqXG5cdCAgICAgKiAgIHJlbmRlcjogZnVu
Y3Rpb24oKSB7XG5cdCAgICAgKiAgICAgdmFyIG5hbWUgPSB0aGlzLnByb3BzLm5hbWU7XG5cdCAg
ICAgKiAgICAgcmV0dXJuIDxkaXY+SGVsbG8sIHtuYW1lfSE8L2Rpdj47XG5cdCAgICAgKiAgIH1c
blx0ICAgICAqXG5cdCAgICAgKiBAcmV0dXJuIHtSZWFjdENvbXBvbmVudH1cblx0ICAgICAqIEBy
ZXF1aXJlZFxuXHQgICAgICovXG5cdCAgICByZW5kZXI6ICdERUZJTkVfT05DRScsXG5cdFxuXHQg
ICAgLy8gPT09PSBEZWxlZ2F0ZSBtZXRob2RzID09PT1cblx0XG5cdCAgICAvKipcblx0ICAgICAq
IEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGluaXRpYWxseSBjcmVhdGVkIGFuZCBhYm91
dCB0byBiZSBtb3VudGVkLlxuXHQgICAgICogVGhpcyBtYXkgaGF2ZSBzaWRlIGVmZmVjdHMsIGJ1
dCBhbnkgZXh0ZXJuYWwgc3Vic2NyaXB0aW9ucyBvciBkYXRhIGNyZWF0ZWRcblx0ICAgICAqIGJ5
IHRoaXMgbWV0aG9kIG11c3QgYmUgY2xlYW5lZCB1cCBpbiBgY29tcG9uZW50V2lsbFVubW91bnRg
LlxuXHQgICAgICpcblx0ICAgICAqIEBvcHRpb25hbFxuXHQgICAgICovXG5cdCAgICBjb21wb25l
bnRXaWxsTW91bnQ6ICdERUZJTkVfTUFOWScsXG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBJbnZv
a2VkIHdoZW4gdGhlIGNvbXBvbmVudCBoYXMgYmVlbiBtb3VudGVkIGFuZCBoYXMgYSBET00gcmVw
cmVzZW50YXRpb24uXG5cdCAgICAgKiBIb3dldmVyLCB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhh
dCB0aGUgRE9NIG5vZGUgaXMgaW4gdGhlIGRvY3VtZW50LlxuXHQgICAgICpcblx0ICAgICAqIFVz
ZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIG9wZXJhdGUgb24gdGhlIERPTSB3aGVuIHRoZSBj
b21wb25lbnQgaGFzXG5cdCAgICAgKiBiZWVuIG1vdW50ZWQgKGluaXRpYWxpemVkIGFuZCByZW5k
ZXJlZCkgZm9yIHRoZSBmaXJzdCB0aW1lLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7RE9N
RWxlbWVudH0gcm9vdE5vZGUgRE9NIGVsZW1lbnQgcmVwcmVzZW50aW5nIHRoZSBjb21wb25lbnQu
XG5cdCAgICAgKiBAb3B0aW9uYWxcblx0ICAgICAqL1xuXHQgICAgY29tcG9uZW50RGlkTW91bnQ6
ICdERUZJTkVfTUFOWScsXG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBJbnZva2VkIGJlZm9yZSB0
aGUgY29tcG9uZW50IHJlY2VpdmVzIG5ldyBwcm9wcy5cblx0ICAgICAqXG5cdCAgICAgKiBVc2Ug
dGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byByZWFjdCB0byBhIHByb3AgdHJhbnNpdGlvbiBieSB1
cGRhdGluZyB0aGVcblx0ICAgICAqIHN0YXRlIHVzaW5nIGB0aGlzLnNldFN0YXRlYC4gQ3VycmVu
dCBwcm9wcyBhcmUgYWNjZXNzZWQgdmlhIGB0aGlzLnByb3BzYC5cblx0ICAgICAqXG5cdCAgICAg
KiAgIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM6IGZ1bmN0aW9uKG5leHRQcm9wcywgbmV4dENv
bnRleHQpIHtcblx0ICAgICAqICAgICB0aGlzLnNldFN0YXRlKHtcblx0ICAgICAqICAgICAgIGxp
a2VzSW5jcmVhc2luZzogbmV4dFByb3BzLmxpa2VDb3VudCA+IHRoaXMucHJvcHMubGlrZUNvdW50
XG5cdCAgICAgKiAgICAgfSk7XG5cdCAgICAgKiAgIH1cblx0ICAgICAqXG5cdCAgICAgKiBOT1RF
OiBUaGVyZSBpcyBubyBlcXVpdmFsZW50IGBjb21wb25lbnRXaWxsUmVjZWl2ZVN0YXRlYC4gQW4g
aW5jb21pbmcgcHJvcFxuXHQgICAgICogdHJhbnNpdGlvbiBtYXkgY2F1c2UgYSBzdGF0ZSBjaGFu
Z2UsIGJ1dCB0aGUgb3Bwb3NpdGUgaXMgbm90IHRydWUuIElmIHlvdVxuXHQgICAgICogbmVlZCBp
dCwgeW91IGFyZSBwcm9iYWJseSBsb29raW5nIGZvciBgY29tcG9uZW50V2lsbFVwZGF0ZWAuXG5c
dCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wc1xuXHQgICAgICogQG9w
dGlvbmFsXG5cdCAgICAgKi9cblx0ICAgIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM6ICdERUZJ
TkVfTUFOWScsXG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBJbnZva2VkIHdoaWxlIGRlY2lkaW5n
IGlmIHRoZSBjb21wb25lbnQgc2hvdWxkIGJlIHVwZGF0ZWQgYXMgYSByZXN1bHQgb2Zcblx0ICAg
ICAqIHJlY2VpdmluZyBuZXcgcHJvcHMsIHN0YXRlIGFuZC9vciBjb250ZXh0LlxuXHQgICAgICpc
blx0ICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIGByZXR1cm4gZmFsc2VgIHdo
ZW4geW91J3JlIGNlcnRhaW4gdGhhdCB0aGVcblx0ICAgICAqIHRyYW5zaXRpb24gdG8gdGhlIG5l
dyBwcm9wcy9zdGF0ZS9jb250ZXh0IHdpbGwgbm90IHJlcXVpcmUgYSBjb21wb25lbnRcblx0ICAg
ICAqIHVwZGF0ZS5cblx0ICAgICAqXG5cdCAgICAgKiAgIHNob3VsZENvbXBvbmVudFVwZGF0ZTog
ZnVuY3Rpb24obmV4dFByb3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0KSB7XG5cdCAgICAgKiAg
ICAgcmV0dXJuICFlcXVhbChuZXh0UHJvcHMsIHRoaXMucHJvcHMpIHx8XG5cdCAgICAgKiAgICAg
ICAhZXF1YWwobmV4dFN0YXRlLCB0aGlzLnN0YXRlKSB8fFxuXHQgICAgICogICAgICAgIWVxdWFs
KG5leHRDb250ZXh0LCB0aGlzLmNvbnRleHQpO1xuXHQgICAgICogICB9XG5cdCAgICAgKlxuXHQg
ICAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wc1xuXHQgICAgICogQHBhcmFtIHs/b2JqZWN0
fSBuZXh0U3RhdGVcblx0ICAgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dENvbnRleHRcblx0ICAg
ICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIGNvbXBvbmVudCBzaG91bGQgdXBkYXRl
LlxuXHQgICAgICogQG9wdGlvbmFsXG5cdCAgICAgKi9cblx0ICAgIHNob3VsZENvbXBvbmVudFVw
ZGF0ZTogJ0RFRklORV9PTkNFJyxcblx0XG5cdCAgICAvKipcblx0ICAgICAqIEludm9rZWQgd2hl
biB0aGUgY29tcG9uZW50IGlzIGFib3V0IHRvIHVwZGF0ZSBkdWUgdG8gYSB0cmFuc2l0aW9uIGZy
b21cblx0ICAgICAqIGB0aGlzLnByb3BzYCwgYHRoaXMuc3RhdGVgIGFuZCBgdGhpcy5jb250ZXh0
YCB0byBgbmV4dFByb3BzYCwgYG5leHRTdGF0ZWBcblx0ICAgICAqIGFuZCBgbmV4dENvbnRleHRg
LlxuXHQgICAgICpcblx0ICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIHBlcmZv
cm0gcHJlcGFyYXRpb24gYmVmb3JlIGFuIHVwZGF0ZSBvY2N1cnMuXG5cdCAgICAgKlxuXHQgICAg
ICogTk9URTogWW91ICoqY2Fubm90KiogdXNlIGB0aGlzLnNldFN0YXRlKClgIGluIHRoaXMgbWV0
aG9kLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHNcblx0ICAg
ICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dFN0YXRlXG5cdCAgICAgKiBAcGFyYW0gez9vYmplY3R9
IG5leHRDb250ZXh0XG5cdCAgICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259
IHRyYW5zYWN0aW9uXG5cdCAgICAgKiBAb3B0aW9uYWxcblx0ICAgICAqL1xuXHQgICAgY29tcG9u
ZW50V2lsbFVwZGF0ZTogJ0RFRklORV9NQU5ZJyxcblx0XG5cdCAgICAvKipcblx0ICAgICAqIElu
dm9rZWQgd2hlbiB0aGUgY29tcG9uZW50J3MgRE9NIHJlcHJlc2VudGF0aW9uIGhhcyBiZWVuIHVw
ZGF0ZWQuXG5cdCAgICAgKlxuXHQgICAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8g
b3BlcmF0ZSBvbiB0aGUgRE9NIHdoZW4gdGhlIGNvbXBvbmVudCBoYXNcblx0ICAgICAqIGJlZW4g
dXBkYXRlZC5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge29iamVjdH0gcHJldlByb3BzXG5c
dCAgICAgKiBAcGFyYW0gez9vYmplY3R9IHByZXZTdGF0ZVxuXHQgICAgICogQHBhcmFtIHs/b2Jq
ZWN0fSBwcmV2Q29udGV4dFxuXHQgICAgICogQHBhcmFtIHtET01FbGVtZW50fSByb290Tm9kZSBE
T00gZWxlbWVudCByZXByZXNlbnRpbmcgdGhlIGNvbXBvbmVudC5cblx0ICAgICAqIEBvcHRpb25h
bFxuXHQgICAgICovXG5cdCAgICBjb21wb25lbnREaWRVcGRhdGU6ICdERUZJTkVfTUFOWScsXG5c
dFxuXHQgICAgLyoqXG5cdCAgICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBhYm91
dCB0byBiZSByZW1vdmVkIGZyb20gaXRzIHBhcmVudCBhbmQgaGF2ZVxuXHQgICAgICogaXRzIERP
TSByZXByZXNlbnRhdGlvbiBkZXN0cm95ZWQuXG5cdCAgICAgKlxuXHQgICAgICogVXNlIHRoaXMg
YXMgYW4gb3Bwb3J0dW5pdHkgdG8gZGVhbGxvY2F0ZSBhbnkgZXh0ZXJuYWwgcmVzb3VyY2VzLlxu
XHQgICAgICpcblx0ICAgICAqIE5PVEU6IFRoZXJlIGlzIG5vIGBjb21wb25lbnREaWRVbm1vdW50
YCBzaW5jZSB5b3VyIGNvbXBvbmVudCB3aWxsIGhhdmUgYmVlblxuXHQgICAgICogZGVzdHJveWVk
IGJ5IHRoYXQgcG9pbnQuXG5cdCAgICAgKlxuXHQgICAgICogQG9wdGlvbmFsXG5cdCAgICAgKi9c
blx0ICAgIGNvbXBvbmVudFdpbGxVbm1vdW50OiAnREVGSU5FX01BTlknLFxuXHRcblx0ICAgIC8v
ID09PT0gQWR2YW5jZWQgbWV0aG9kcyA9PT09XG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBVcGRh
dGVzIHRoZSBjb21wb25lbnQncyBjdXJyZW50bHkgbW91bnRlZCBET00gcmVwcmVzZW50YXRpb24u
XG5cdCAgICAgKlxuXHQgICAgICogQnkgZGVmYXVsdCwgdGhpcyBpbXBsZW1lbnRzIFJlYWN0J3Mg
cmVuZGVyaW5nIGFuZCByZWNvbmNpbGlhdGlvbiBhbGdvcml0aG0uXG5cdCAgICAgKiBTb3BoaXN0
aWNhdGVkIGNsaWVudHMgbWF5IHdpc2ggdG8gb3ZlcnJpZGUgdGhpcy5cblx0ICAgICAqXG5cdCAg
ICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG5cdCAg
ICAgKiBAaW50ZXJuYWxcblx0ICAgICAqIEBvdmVycmlkYWJsZVxuXHQgICAgICovXG5cdCAgICB1
cGRhdGVDb21wb25lbnQ6ICdPVkVSUklERV9CQVNFJ1xuXHQgIH07XG5cdFxuXHQgIC8qKlxuXHQg
ICAqIE1hcHBpbmcgZnJvbSBjbGFzcyBzcGVjaWZpY2F0aW9uIGtleXMgdG8gc3BlY2lhbCBwcm9j
ZXNzaW5nIGZ1bmN0aW9ucy5cblx0ICAgKlxuXHQgICAqIEFsdGhvdWdoIHRoZXNlIGFyZSBkZWNs
YXJlZCBsaWtlIGluc3RhbmNlIHByb3BlcnRpZXMgaW4gdGhlIHNwZWNpZmljYXRpb25cblx0ICAg
KiB3aGVuIGRlZmluaW5nIGNsYXNzZXMgdXNpbmcgYFJlYWN0LmNyZWF0ZUNsYXNzYCwgdGhleSBh
cmUgYWN0dWFsbHkgc3RhdGljXG5cdCAgICogYW5kIGFyZSBhY2Nlc3NpYmxlIG9uIHRoZSBjb25z
dHJ1Y3RvciBpbnN0ZWFkIG9mIHRoZSBwcm90b3R5cGUuIERlc3BpdGVcblx0ICAgKiBiZWluZyBz
dGF0aWMsIHRoZXkgbXVzdCBiZSBkZWZpbmVkIG91dHNpZGUgb2YgdGhlIFwic3RhdGljc1wiIGtl
eSB1bmRlclxuXHQgICAqIHdoaWNoIGFsbCBvdGhlciBzdGF0aWMgbWV0aG9kcyBhcmUgZGVmaW5l
ZC5cblx0ICAgKi9cblx0ICB2YXIgUkVTRVJWRURfU1BFQ19LRVlTID0ge1xuXHQgICAgZGlzcGxh
eU5hbWU6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBkaXNwbGF5TmFtZSkge1xuXHQgICAgICBDb25z
dHJ1Y3Rvci5kaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lO1xuXHQgICAgfSxcblx0ICAgIG1peGlu
czogZnVuY3Rpb24oQ29uc3RydWN0b3IsIG1peGlucykge1xuXHQgICAgICBpZiAobWl4aW5zKSB7
XG5cdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtaXhpbnMubGVuZ3RoOyBpKyspIHtcblx0
ICAgICAgICAgIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBtaXhpbnNbaV0pO1xu
XHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfSxcblx0ICAgIGNoaWxkQ29udGV4dFR5cGVz
OiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgY2hpbGRDb250ZXh0VHlwZXMpIHtcblx0ICAgICAgaWYg
KGZhbHNlKSB7XG5cdCAgICAgICAgdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCBjaGlsZENv
bnRleHRUeXBlcywgJ2NoaWxkQ29udGV4dCcpO1xuXHQgICAgICB9XG5cdCAgICAgIENvbnN0cnVj
dG9yLmNoaWxkQ29udGV4dFR5cGVzID0gX2Fzc2lnbihcblx0ICAgICAgICB7fSxcblx0ICAgICAg
ICBDb25zdHJ1Y3Rvci5jaGlsZENvbnRleHRUeXBlcyxcblx0ICAgICAgICBjaGlsZENvbnRleHRU
eXBlc1xuXHQgICAgICApO1xuXHQgICAgfSxcblx0ICAgIGNvbnRleHRUeXBlczogZnVuY3Rpb24o
Q29uc3RydWN0b3IsIGNvbnRleHRUeXBlcykge1xuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0ICAg
ICAgICB2YWxpZGF0ZVR5cGVEZWYoQ29uc3RydWN0b3IsIGNvbnRleHRUeXBlcywgJ2NvbnRleHQn
KTtcblx0ICAgICAgfVxuXHQgICAgICBDb25zdHJ1Y3Rvci5jb250ZXh0VHlwZXMgPSBfYXNzaWdu
KFxuXHQgICAgICAgIHt9LFxuXHQgICAgICAgIENvbnN0cnVjdG9yLmNvbnRleHRUeXBlcyxcblx0
ICAgICAgICBjb250ZXh0VHlwZXNcblx0ICAgICAgKTtcblx0ICAgIH0sXG5cdCAgICAvKipcblx0
ICAgICAqIFNwZWNpYWwgY2FzZSBnZXREZWZhdWx0UHJvcHMgd2hpY2ggc2hvdWxkIG1vdmUgaW50
byBzdGF0aWNzIGJ1dCByZXF1aXJlc1xuXHQgICAgICogYXV0b21hdGljIG1lcmdpbmcuXG5cdCAg
ICAgKi9cblx0ICAgIGdldERlZmF1bHRQcm9wczogZnVuY3Rpb24oQ29uc3RydWN0b3IsIGdldERl
ZmF1bHRQcm9wcykge1xuXHQgICAgICBpZiAoQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzKSB7
XG5cdCAgICAgICAgQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzID0gY3JlYXRlTWVyZ2VkUmVz
dWx0RnVuY3Rpb24oXG5cdCAgICAgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMsXG5c
dCAgICAgICAgICBnZXREZWZhdWx0UHJvcHNcblx0ICAgICAgICApO1xuXHQgICAgICB9IGVsc2Ug
e1xuXHQgICAgICAgIENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcyA9IGdldERlZmF1bHRQcm9w
cztcblx0ICAgICAgfVxuXHQgICAgfSxcblx0ICAgIHByb3BUeXBlczogZnVuY3Rpb24oQ29uc3Ry
dWN0b3IsIHByb3BUeXBlcykge1xuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICB2YWxp
ZGF0ZVR5cGVEZWYoQ29uc3RydWN0b3IsIHByb3BUeXBlcywgJ3Byb3AnKTtcblx0ICAgICAgfVxu
XHQgICAgICBDb25zdHJ1Y3Rvci5wcm9wVHlwZXMgPSBfYXNzaWduKHt9LCBDb25zdHJ1Y3Rvci5w
cm9wVHlwZXMsIHByb3BUeXBlcyk7XG5cdCAgICB9LFxuXHQgICAgc3RhdGljczogZnVuY3Rpb24o
Q29uc3RydWN0b3IsIHN0YXRpY3MpIHtcblx0ICAgICAgbWl4U3RhdGljU3BlY0ludG9Db21wb25l
bnQoQ29uc3RydWN0b3IsIHN0YXRpY3MpO1xuXHQgICAgfSxcblx0ICAgIGF1dG9iaW5kOiBmdW5j
dGlvbigpIHt9XG5cdCAgfTtcblx0XG5cdCAgZnVuY3Rpb24gdmFsaWRhdGVUeXBlRGVmKENvbnN0
cnVjdG9yLCB0eXBlRGVmLCBsb2NhdGlvbikge1xuXHQgICAgZm9yICh2YXIgcHJvcE5hbWUgaW4g
dHlwZURlZikge1xuXHQgICAgICBpZiAodHlwZURlZi5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkp
IHtcblx0ICAgICAgICAvLyB1c2UgYSB3YXJuaW5nIGluc3RlYWQgb2YgYW4gX2ludmFyaWFudCBz
byBjb21wb25lbnRzXG5cdCAgICAgICAgLy8gZG9uJ3Qgc2hvdyB1cCBpbiBwcm9kIGJ1dCBvbmx5
IGluIF9fREVWX19cblx0ICAgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICAgIHdhcm5pbmco
XG5cdCAgICAgICAgICAgIHR5cGVvZiB0eXBlRGVmW3Byb3BOYW1lXSA9PT0gJ2Z1bmN0aW9uJyxc
blx0ICAgICAgICAgICAgJyVzOiAlcyB0eXBlIGAlc2AgaXMgaW52YWxpZDsgaXQgbXVzdCBiZSBh
IGZ1bmN0aW9uLCB1c3VhbGx5IGZyb20gJyArXG5cdCAgICAgICAgICAgICAgJ1JlYWN0LlByb3BU
eXBlcy4nLFxuXHQgICAgICAgICAgICBDb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCAnUmVhY3RD
bGFzcycsXG5cdCAgICAgICAgICAgIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzW2xvY2F0aW9u
XSxcblx0ICAgICAgICAgICAgcHJvcE5hbWVcblx0ICAgICAgICAgICk7XG5cdCAgICAgICAgfVxu
XHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0ICBmdW5jdGlvbiB2YWxpZGF0ZU1ldGhv
ZE92ZXJyaWRlKGlzQWxyZWFkeURlZmluZWQsIG5hbWUpIHtcblx0ICAgIHZhciBzcGVjUG9saWN5
ID0gUmVhY3RDbGFzc0ludGVyZmFjZS5oYXNPd25Qcm9wZXJ0eShuYW1lKVxuXHQgICAgICA/IFJl
YWN0Q2xhc3NJbnRlcmZhY2VbbmFtZV1cblx0ICAgICAgOiBudWxsO1xuXHRcblx0ICAgIC8vIERp
c2FsbG93IG92ZXJyaWRpbmcgb2YgYmFzZSBjbGFzcyBtZXRob2RzIHVubGVzcyBleHBsaWNpdGx5
IGFsbG93ZWQuXG5cdCAgICBpZiAoUmVhY3RDbGFzc01peGluLmhhc093blByb3BlcnR5KG5hbWUp
KSB7XG5cdCAgICAgIF9pbnZhcmlhbnQoXG5cdCAgICAgICAgc3BlY1BvbGljeSA9PT0gJ09WRVJS
SURFX0JBU0UnLFxuXHQgICAgICAgICdSZWFjdENsYXNzSW50ZXJmYWNlOiBZb3UgYXJlIGF0dGVt
cHRpbmcgdG8gb3ZlcnJpZGUgJyArXG5cdCAgICAgICAgICAnYCVzYCBmcm9tIHlvdXIgY2xhc3Mg
c3BlY2lmaWNhdGlvbi4gRW5zdXJlIHRoYXQgeW91ciBtZXRob2QgbmFtZXMgJyArXG5cdCAgICAg
ICAgICAnZG8gbm90IG92ZXJsYXAgd2l0aCBSZWFjdCBtZXRob2RzLicsXG5cdCAgICAgICAgbmFt
ZVxuXHQgICAgICApO1xuXHQgICAgfVxuXHRcblx0ICAgIC8vIERpc2FsbG93IGRlZmluaW5nIG1l
dGhvZHMgbW9yZSB0aGFuIG9uY2UgdW5sZXNzIGV4cGxpY2l0bHkgYWxsb3dlZC5cblx0ICAgIGlm
IChpc0FscmVhZHlEZWZpbmVkKSB7XG5cdCAgICAgIF9pbnZhcmlhbnQoXG5cdCAgICAgICAgc3Bl
Y1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZJyB8fCBzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTllf
TUVSR0VEJyxcblx0ICAgICAgICAnUmVhY3RDbGFzc0ludGVyZmFjZTogWW91IGFyZSBhdHRlbXB0
aW5nIHRvIGRlZmluZSAnICtcblx0ICAgICAgICAgICdgJXNgIG9uIHlvdXIgY29tcG9uZW50IG1v
cmUgdGhhbiBvbmNlLiBUaGlzIGNvbmZsaWN0IG1heSBiZSBkdWUgJyArXG5cdCAgICAgICAgICAn
dG8gYSBtaXhpbi4nLFxuXHQgICAgICAgIG5hbWVcblx0ICAgICAgKTtcblx0ICAgIH1cblx0ICB9
XG5cdFxuXHQgIC8qKlxuXHQgICAqIE1peGluIGhlbHBlciB3aGljaCBoYW5kbGVzIHBvbGljeSB2
YWxpZGF0aW9uIGFuZCByZXNlcnZlZFxuXHQgICAqIHNwZWNpZmljYXRpb24ga2V5cyB3aGVuIGJ1
aWxkaW5nIFJlYWN0IGNsYXNzZXMuXG5cdCAgICovXG5cdCAgZnVuY3Rpb24gbWl4U3BlY0ludG9D
b21wb25lbnQoQ29uc3RydWN0b3IsIHNwZWMpIHtcblx0ICAgIGlmICghc3BlYykge1xuXHQgICAg
ICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICB2YXIgdHlwZW9mU3BlYyA9IHR5cGVvZiBzcGVjO1xu
XHQgICAgICAgIHZhciBpc01peGluVmFsaWQgPSB0eXBlb2ZTcGVjID09PSAnb2JqZWN0JyAmJiBz
cGVjICE9PSBudWxsO1xuXHRcblx0ICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJykge1xuXHQgICAgICAgICAgd2FybmluZyhcblx0ICAgICAgICAgICAgaXNN
aXhpblZhbGlkLFxuXHQgICAgICAgICAgICBcIiVzOiBZb3UncmUgYXR0ZW1wdGluZyB0byBpbmNs
dWRlIGEgbWl4aW4gdGhhdCBpcyBlaXRoZXIgbnVsbCBcIiArXG5cdCAgICAgICAgICAgICAgJ29y
IG5vdCBhbiBvYmplY3QuIENoZWNrIHRoZSBtaXhpbnMgaW5jbHVkZWQgYnkgdGhlIGNvbXBvbmVu
dCwgJyArXG5cdCAgICAgICAgICAgICAgJ2FzIHdlbGwgYXMgYW55IG1peGlucyB0aGV5IGluY2x1
ZGUgdGhlbXNlbHZlcy4gJyArXG5cdCAgICAgICAgICAgICAgJ0V4cGVjdGVkIG9iamVjdCBidXQg
Z290ICVzLicsXG5cdCAgICAgICAgICAgIENvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8ICdSZWFj
dENsYXNzJyxcblx0ICAgICAgICAgICAgc3BlYyA9PT0gbnVsbCA/IG51bGwgOiB0eXBlb2ZTcGVj
XG5cdCAgICAgICAgICApO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHRcblx0ICAgICAgcmV0
dXJuO1xuXHQgICAgfVxuXHRcblx0ICAgIF9pbnZhcmlhbnQoXG5cdCAgICAgIHR5cGVvZiBzcGVj
ICE9PSAnZnVuY3Rpb24nLFxuXHQgICAgICBcIlJlYWN0Q2xhc3M6IFlvdSdyZSBhdHRlbXB0aW5n
IHRvIFwiICtcblx0ICAgICAgICAndXNlIGEgY29tcG9uZW50IGNsYXNzIG9yIGZ1bmN0aW9uIGFz
IGEgbWl4aW4uIEluc3RlYWQsIGp1c3QgdXNlIGEgJyArXG5cdCAgICAgICAgJ3JlZ3VsYXIgb2Jq
ZWN0Lidcblx0ICAgICk7XG5cdCAgICBfaW52YXJpYW50KFxuXHQgICAgICAhaXNWYWxpZEVsZW1l
bnQoc3BlYyksXG5cdCAgICAgIFwiUmVhY3RDbGFzczogWW91J3JlIGF0dGVtcHRpbmcgdG8gXCIg
K1xuXHQgICAgICAgICd1c2UgYSBjb21wb25lbnQgYXMgYSBtaXhpbi4gSW5zdGVhZCwganVzdCB1
c2UgYSByZWd1bGFyIG9iamVjdC4nXG5cdCAgICApO1xuXHRcblx0ICAgIHZhciBwcm90byA9IENv
bnN0cnVjdG9yLnByb3RvdHlwZTtcblx0ICAgIHZhciBhdXRvQmluZFBhaXJzID0gcHJvdG8uX19y
ZWFjdEF1dG9CaW5kUGFpcnM7XG5cdFxuXHQgICAgLy8gQnkgaGFuZGxpbmcgbWl4aW5zIGJlZm9y
ZSBhbnkgb3RoZXIgcHJvcGVydGllcywgd2UgZW5zdXJlIHRoZSBzYW1lXG5cdCAgICAvLyBjaGFp
bmluZyBvcmRlciBpcyBhcHBsaWVkIHRvIG1ldGhvZHMgd2l0aCBERUZJTkVfTUFOWSBwb2xpY3ks
IHdoZXRoZXJcblx0ICAgIC8vIG1peGlucyBhcmUgbGlzdGVkIGJlZm9yZSBvciBhZnRlciB0aGVz
ZSBtZXRob2RzIGluIHRoZSBzcGVjLlxuXHQgICAgaWYgKHNwZWMuaGFzT3duUHJvcGVydHkoTUlY
SU5TX0tFWSkpIHtcblx0ICAgICAgUkVTRVJWRURfU1BFQ19LRVlTLm1peGlucyhDb25zdHJ1Y3Rv
ciwgc3BlYy5taXhpbnMpO1xuXHQgICAgfVxuXHRcblx0ICAgIGZvciAodmFyIG5hbWUgaW4gc3Bl
Yykge1xuXHQgICAgICBpZiAoIXNwZWMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcblx0ICAgICAg
ICBjb250aW51ZTtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgaWYgKG5hbWUgPT09IE1JWElOU19L
RVkpIHtcblx0ICAgICAgICAvLyBXZSBoYXZlIGFscmVhZHkgaGFuZGxlZCBtaXhpbnMgaW4gYSBz
cGVjaWFsIGNhc2UgYWJvdmUuXG5cdCAgICAgICAgY29udGludWU7XG5cdCAgICAgIH1cblx0XG5c
dCAgICAgIHZhciBwcm9wZXJ0eSA9IHNwZWNbbmFtZV07XG5cdCAgICAgIHZhciBpc0FscmVhZHlE
ZWZpbmVkID0gcHJvdG8uaGFzT3duUHJvcGVydHkobmFtZSk7XG5cdCAgICAgIHZhbGlkYXRlTWV0
aG9kT3ZlcnJpZGUoaXNBbHJlYWR5RGVmaW5lZCwgbmFtZSk7XG5cdFxuXHQgICAgICBpZiAoUkVT
RVJWRURfU1BFQ19LRVlTLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG5cdCAgICAgICAgUkVTRVJW
RURfU1BFQ19LRVlTW25hbWVdKENvbnN0cnVjdG9yLCBwcm9wZXJ0eSk7XG5cdCAgICAgIH0gZWxz
ZSB7XG5cdCAgICAgICAgLy8gU2V0dXAgbWV0aG9kcyBvbiBwcm90b3R5cGU6XG5cdCAgICAgICAg
Ly8gVGhlIGZvbGxvd2luZyBtZW1iZXIgbWV0aG9kcyBzaG91bGQgbm90IGJlIGF1dG9tYXRpY2Fs
bHkgYm91bmQ6XG5cdCAgICAgICAgLy8gMS4gRXhwZWN0ZWQgUmVhY3RDbGFzcyBtZXRob2RzIChp
biB0aGUgXCJpbnRlcmZhY2VcIikuXG5cdCAgICAgICAgLy8gMi4gT3ZlcnJpZGRlbiBtZXRob2Rz
ICh0aGF0IHdlcmUgbWl4ZWQgaW4pLlxuXHQgICAgICAgIHZhciBpc1JlYWN0Q2xhc3NNZXRob2Qg
PSBSZWFjdENsYXNzSW50ZXJmYWNlLmhhc093blByb3BlcnR5KG5hbWUpO1xuXHQgICAgICAgIHZh
ciBpc0Z1bmN0aW9uID0gdHlwZW9mIHByb3BlcnR5ID09PSAnZnVuY3Rpb24nO1xuXHQgICAgICAg
IHZhciBzaG91bGRBdXRvQmluZCA9XG5cdCAgICAgICAgICBpc0Z1bmN0aW9uICYmXG5cdCAgICAg
ICAgICAhaXNSZWFjdENsYXNzTWV0aG9kICYmXG5cdCAgICAgICAgICAhaXNBbHJlYWR5RGVmaW5l
ZCAmJlxuXHQgICAgICAgICAgc3BlYy5hdXRvYmluZCAhPT0gZmFsc2U7XG5cdFxuXHQgICAgICAg
IGlmIChzaG91bGRBdXRvQmluZCkge1xuXHQgICAgICAgICAgYXV0b0JpbmRQYWlycy5wdXNoKG5h
bWUsIHByb3BlcnR5KTtcblx0ICAgICAgICAgIHByb3RvW25hbWVdID0gcHJvcGVydHk7XG5cdCAg
ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIGlmIChpc0FscmVhZHlEZWZpbmVkKSB7XG5cdCAg
ICAgICAgICAgIHZhciBzcGVjUG9saWN5ID0gUmVhY3RDbGFzc0ludGVyZmFjZVtuYW1lXTtcblx0
XG5cdCAgICAgICAgICAgIC8vIFRoZXNlIGNhc2VzIHNob3VsZCBhbHJlYWR5IGJlIGNhdWdodCBi
eSB2YWxpZGF0ZU1ldGhvZE92ZXJyaWRlLlxuXHQgICAgICAgICAgICBfaW52YXJpYW50KFxuXHQg
ICAgICAgICAgICAgIGlzUmVhY3RDbGFzc01ldGhvZCAmJlxuXHQgICAgICAgICAgICAgICAgKHNw
ZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWV9NRVJHRUQnIHx8XG5cdCAgICAgICAgICAgICAgICAg
IHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWScpLFxuXHQgICAgICAgICAgICAgICdSZWFjdENs
YXNzOiBVbmV4cGVjdGVkIHNwZWMgcG9saWN5ICVzIGZvciBrZXkgJXMgJyArXG5cdCAgICAgICAg
ICAgICAgICAnd2hlbiBtaXhpbmcgaW4gY29tcG9uZW50IHNwZWNzLicsXG5cdCAgICAgICAgICAg
ICAgc3BlY1BvbGljeSxcblx0ICAgICAgICAgICAgICBuYW1lXG5cdCAgICAgICAgICAgICk7XG5c
dFxuXHQgICAgICAgICAgICAvLyBGb3IgbWV0aG9kcyB3aGljaCBhcmUgZGVmaW5lZCBtb3JlIHRo
YW4gb25jZSwgY2FsbCB0aGUgZXhpc3Rpbmdcblx0ICAgICAgICAgICAgLy8gbWV0aG9kcyBiZWZv
cmUgY2FsbGluZyB0aGUgbmV3IHByb3BlcnR5LCBtZXJnaW5nIGlmIGFwcHJvcHJpYXRlLlxuXHQg
ICAgICAgICAgICBpZiAoc3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZX01FUkdFRCcpIHtcblx0
ICAgICAgICAgICAgICBwcm90b1tuYW1lXSA9IGNyZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uKHBy
b3RvW25hbWVdLCBwcm9wZXJ0eSk7XG5cdCAgICAgICAgICAgIH0gZWxzZSBpZiAoc3BlY1BvbGlj
eSA9PT0gJ0RFRklORV9NQU5ZJykge1xuXHQgICAgICAgICAgICAgIHByb3RvW25hbWVdID0gY3Jl
YXRlQ2hhaW5lZEZ1bmN0aW9uKHByb3RvW25hbWVdLCBwcm9wZXJ0eSk7XG5cdCAgICAgICAgICAg
IH1cblx0ICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgIHByb3RvW25hbWVdID0gcHJv
cGVydHk7XG5cdCAgICAgICAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgICAgICAgIC8vIEFk
ZCB2ZXJib3NlIGRpc3BsYXlOYW1lIHRvIHRoZSBmdW5jdGlvbiwgd2hpY2ggaGVscHMgd2hlbiBs
b29raW5nXG5cdCAgICAgICAgICAgICAgLy8gYXQgcHJvZmlsaW5nIHRvb2xzLlxuXHQgICAgICAg
ICAgICAgIGlmICh0eXBlb2YgcHJvcGVydHkgPT09ICdmdW5jdGlvbicgJiYgc3BlYy5kaXNwbGF5
TmFtZSkge1xuXHQgICAgICAgICAgICAgICAgcHJvdG9bbmFtZV0uZGlzcGxheU5hbWUgPSBzcGVj
LmRpc3BsYXlOYW1lICsgJ18nICsgbmFtZTtcblx0ICAgICAgICAgICAgICB9XG5cdCAgICAgICAg
ICAgIH1cblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH1cblx0
ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIG1peFN0YXRpY1NwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVj
dG9yLCBzdGF0aWNzKSB7XG5cdCAgICBpZiAoIXN0YXRpY3MpIHtcblx0ICAgICAgcmV0dXJuO1xu
XHQgICAgfVxuXHQgICAgZm9yICh2YXIgbmFtZSBpbiBzdGF0aWNzKSB7XG5cdCAgICAgIHZhciBw
cm9wZXJ0eSA9IHN0YXRpY3NbbmFtZV07XG5cdCAgICAgIGlmICghc3RhdGljcy5oYXNPd25Qcm9w
ZXJ0eShuYW1lKSkge1xuXHQgICAgICAgIGNvbnRpbnVlO1xuXHQgICAgICB9XG5cdFxuXHQgICAg
ICB2YXIgaXNSZXNlcnZlZCA9IG5hbWUgaW4gUkVTRVJWRURfU1BFQ19LRVlTO1xuXHQgICAgICBf
aW52YXJpYW50KFxuXHQgICAgICAgICFpc1Jlc2VydmVkLFxuXHQgICAgICAgICdSZWFjdENsYXNz
OiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gZGVmaW5lIGEgcmVzZXJ2ZWQgJyArXG5cdCAgICAgICAg
ICAncHJvcGVydHksIGAlc2AsIHRoYXQgc2hvdWxkblxcJ3QgYmUgb24gdGhlIFwic3RhdGljc1wi
IGtleS4gRGVmaW5lIGl0ICcgK1xuXHQgICAgICAgICAgJ2FzIGFuIGluc3RhbmNlIHByb3BlcnR5
IGluc3RlYWQ7IGl0IHdpbGwgc3RpbGwgYmUgYWNjZXNzaWJsZSBvbiB0aGUgJyArXG5cdCAgICAg
ICAgICAnY29uc3RydWN0b3IuJyxcblx0ICAgICAgICBuYW1lXG5cdCAgICAgICk7XG5cdFxuXHQg
ICAgICB2YXIgaXNJbmhlcml0ZWQgPSBuYW1lIGluIENvbnN0cnVjdG9yO1xuXHQgICAgICBfaW52
YXJpYW50KFxuXHQgICAgICAgICFpc0luaGVyaXRlZCxcblx0ICAgICAgICAnUmVhY3RDbGFzczog
WW91IGFyZSBhdHRlbXB0aW5nIHRvIGRlZmluZSAnICtcblx0ICAgICAgICAgICdgJXNgIG9uIHlv
dXIgY29tcG9uZW50IG1vcmUgdGhhbiBvbmNlLiBUaGlzIGNvbmZsaWN0IG1heSBiZSAnICtcblx0
ICAgICAgICAgICdkdWUgdG8gYSBtaXhpbi4nLFxuXHQgICAgICAgIG5hbWVcblx0ICAgICAgKTtc
blx0ICAgICAgQ29uc3RydWN0b3JbbmFtZV0gPSBwcm9wZXJ0eTtcblx0ICAgIH1cblx0ICB9XG5c
dFxuXHQgIC8qKlxuXHQgICAqIE1lcmdlIHR3byBvYmplY3RzLCBidXQgdGhyb3cgaWYgYm90aCBj
b250YWluIHRoZSBzYW1lIGtleS5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBvbmUg
VGhlIGZpcnN0IG9iamVjdCwgd2hpY2ggaXMgbXV0YXRlZC5cblx0ICAgKiBAcGFyYW0ge29iamVj
dH0gdHdvIFRoZSBzZWNvbmQgb2JqZWN0XG5cdCAgICogQHJldHVybiB7b2JqZWN0fSBvbmUgYWZ0
ZXIgaXQgaGFzIGJlZW4gbXV0YXRlZCB0byBjb250YWluIGV2ZXJ5dGhpbmcgaW4gdHdvLlxuXHQg
ICAqL1xuXHQgIGZ1bmN0aW9uIG1lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMob25lLCB0d28p
IHtcblx0ICAgIF9pbnZhcmlhbnQoXG5cdCAgICAgIG9uZSAmJiB0d28gJiYgdHlwZW9mIG9uZSA9
PT0gJ29iamVjdCcgJiYgdHlwZW9mIHR3byA9PT0gJ29iamVjdCcsXG5cdCAgICAgICdtZXJnZUlu
dG9XaXRoTm9EdXBsaWNhdGVLZXlzKCk6IENhbm5vdCBtZXJnZSBub24tb2JqZWN0cy4nXG5cdCAg
ICApO1xuXHRcblx0ICAgIGZvciAodmFyIGtleSBpbiB0d28pIHtcblx0ICAgICAgaWYgKHR3by5o
YXNPd25Qcm9wZXJ0eShrZXkpKSB7XG5cdCAgICAgICAgX2ludmFyaWFudChcblx0ICAgICAgICAg
IG9uZVtrZXldID09PSB1bmRlZmluZWQsXG5cdCAgICAgICAgICAnbWVyZ2VJbnRvV2l0aE5vRHVw
bGljYXRlS2V5cygpOiAnICtcblx0ICAgICAgICAgICAgJ1RyaWVkIHRvIG1lcmdlIHR3byBvYmpl
Y3RzIHdpdGggdGhlIHNhbWUga2V5OiBgJXNgLiBUaGlzIGNvbmZsaWN0ICcgK1xuXHQgICAgICAg
ICAgICAnbWF5IGJlIGR1ZSB0byBhIG1peGluOyBpbiBwYXJ0aWN1bGFyLCB0aGlzIG1heSBiZSBj
YXVzZWQgYnkgdHdvICcgK1xuXHQgICAgICAgICAgICAnZ2V0SW5pdGlhbFN0YXRlKCkgb3IgZ2V0
RGVmYXVsdFByb3BzKCkgbWV0aG9kcyByZXR1cm5pbmcgb2JqZWN0cyAnICtcblx0ICAgICAgICAg
ICAgJ3dpdGggY2xhc2hpbmcga2V5cy4nLFxuXHQgICAgICAgICAga2V5XG5cdCAgICAgICAgKTtc
blx0ICAgICAgICBvbmVba2V5XSA9IHR3b1trZXldO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAg
ICByZXR1cm4gb25lO1xuXHQgIH1cblx0XG5cdCAgLyoqXG5cdCAgICogQ3JlYXRlcyBhIGZ1bmN0
aW9uIHRoYXQgaW52b2tlcyB0d28gZnVuY3Rpb25zIGFuZCBtZXJnZXMgdGhlaXIgcmV0dXJuIHZh
bHVlcy5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7ZnVuY3Rpb259IG9uZSBGdW5jdGlvbiB0byBp
bnZva2UgZmlyc3QuXG5cdCAgICogQHBhcmFtIHtmdW5jdGlvbn0gdHdvIEZ1bmN0aW9uIHRvIGlu
dm9rZSBzZWNvbmQuXG5cdCAgICogQHJldHVybiB7ZnVuY3Rpb259IEZ1bmN0aW9uIHRoYXQgaW52
b2tlcyB0aGUgdHdvIGFyZ3VtZW50IGZ1bmN0aW9ucy5cblx0ICAgKiBAcHJpdmF0ZVxuXHQgICAq
L1xuXHQgIGZ1bmN0aW9uIGNyZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uKG9uZSwgdHdvKSB7XG5c
dCAgICByZXR1cm4gZnVuY3Rpb24gbWVyZ2VkUmVzdWx0KCkge1xuXHQgICAgICB2YXIgYSA9IG9u
ZS5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuXHQgICAgICB2YXIgYiA9IHR3by5hcHBseSh0aGlz
LCBhcmd1bWVudHMpO1xuXHQgICAgICBpZiAoYSA9PSBudWxsKSB7XG5cdCAgICAgICAgcmV0dXJu
IGI7XG5cdCAgICAgIH0gZWxzZSBpZiAoYiA9PSBudWxsKSB7XG5cdCAgICAgICAgcmV0dXJuIGE7
XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIGMgPSB7fTtcblx0ICAgICAgbWVyZ2VJbnRvV2l0aE5v
RHVwbGljYXRlS2V5cyhjLCBhKTtcblx0ICAgICAgbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5
cyhjLCBiKTtcblx0ICAgICAgcmV0dXJuIGM7XG5cdCAgICB9O1xuXHQgIH1cblx0XG5cdCAgLyoq
XG5cdCAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0d28gZnVuY3Rpb25zIGFu
ZCBpZ25vcmVzIHRoZWlyIHJldHVybiB2YWxlcy5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7ZnVu
Y3Rpb259IG9uZSBGdW5jdGlvbiB0byBpbnZva2UgZmlyc3QuXG5cdCAgICogQHBhcmFtIHtmdW5j
dGlvbn0gdHdvIEZ1bmN0aW9uIHRvIGludm9rZSBzZWNvbmQuXG5cdCAgICogQHJldHVybiB7ZnVu
Y3Rpb259IEZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgdHdvIGFyZ3VtZW50IGZ1bmN0aW9ucy5c
blx0ICAgKiBAcHJpdmF0ZVxuXHQgICAqL1xuXHQgIGZ1bmN0aW9uIGNyZWF0ZUNoYWluZWRGdW5j
dGlvbihvbmUsIHR3bykge1xuXHQgICAgcmV0dXJuIGZ1bmN0aW9uIGNoYWluZWRGdW5jdGlvbigp
IHtcblx0ICAgICAgb25lLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG5cdCAgICAgIHR3by5hcHBs
eSh0aGlzLCBhcmd1bWVudHMpO1xuXHQgICAgfTtcblx0ICB9XG5cdFxuXHQgIC8qKlxuXHQgICAq
IEJpbmRzIGEgbWV0aG9kIHRvIHRoZSBjb21wb25lbnQuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0g
e29iamVjdH0gY29tcG9uZW50IENvbXBvbmVudCB3aG9zZSBtZXRob2QgaXMgZ29pbmcgdG8gYmUg
Ym91bmQuXG5cdCAgICogQHBhcmFtIHtmdW5jdGlvbn0gbWV0aG9kIE1ldGhvZCB0byBiZSBib3Vu
ZC5cblx0ICAgKiBAcmV0dXJuIHtmdW5jdGlvbn0gVGhlIGJvdW5kIG1ldGhvZC5cblx0ICAgKi9c
blx0ICBmdW5jdGlvbiBiaW5kQXV0b0JpbmRNZXRob2QoY29tcG9uZW50LCBtZXRob2QpIHtcblx0
ICAgIHZhciBib3VuZE1ldGhvZCA9IG1ldGhvZC5iaW5kKGNvbXBvbmVudCk7XG5cdCAgICBpZiAo
ZmFsc2UpIHtcblx0ICAgICAgYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQ29udGV4dCA9IGNvbXBv
bmVudDtcblx0ICAgICAgYm91bmRNZXRob2QuX19yZWFjdEJvdW5kTWV0aG9kID0gbWV0aG9kO1xu
XHQgICAgICBib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRBcmd1bWVudHMgPSBudWxsO1xuXHQgICAg
ICB2YXIgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudC5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZTtc
blx0ICAgICAgdmFyIF9iaW5kID0gYm91bmRNZXRob2QuYmluZDtcblx0ICAgICAgYm91bmRNZXRo
b2QuYmluZCA9IGZ1bmN0aW9uKG5ld1RoaXMpIHtcblx0ICAgICAgICBmb3IgKFxuXHQgICAgICAg
ICAgdmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLFxuXHQgICAgICAgICAgICBhcmdzID0gQXJy
YXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLFxuXHQgICAgICAgICAgICBfa2V5ID0gMTtcblx0
ICAgICAgICAgIF9rZXkgPCBfbGVuO1xuXHQgICAgICAgICAgX2tleSsrXG5cdCAgICAgICAgKSB7
XG5cdCAgICAgICAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcblx0ICAgICAg
ICB9XG5cdFxuXHQgICAgICAgIC8vIFVzZXIgaXMgdHJ5aW5nIHRvIGJpbmQoKSBhbiBhdXRvYm91
bmQgbWV0aG9kOyB3ZSBlZmZlY3RpdmVseSB3aWxsXG5cdCAgICAgICAgLy8gaWdub3JlIHRoZSB2
YWx1ZSBvZiBcInRoaXNcIiB0aGF0IHRoZSB1c2VyIGlzIHRyeWluZyB0byB1c2UsIHNvXG5cdCAg
ICAgICAgLy8gbGV0J3Mgd2Fybi5cblx0ICAgICAgICBpZiAobmV3VGhpcyAhPT0gY29tcG9uZW50
ICYmIG5ld1RoaXMgIT09IG51bGwpIHtcblx0ICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG5cdCAgICAgICAgICAgIHdhcm5pbmcoXG5cdCAgICAg
ICAgICAgICAgZmFsc2UsXG5cdCAgICAgICAgICAgICAgJ2JpbmQoKTogUmVhY3QgY29tcG9uZW50
IG1ldGhvZHMgbWF5IG9ubHkgYmUgYm91bmQgdG8gdGhlICcgK1xuXHQgICAgICAgICAgICAgICAg
J2NvbXBvbmVudCBpbnN0YW5jZS4gU2VlICVzJyxcblx0ICAgICAgICAgICAgICBjb21wb25lbnRO
YW1lXG5cdCAgICAgICAgICAgICk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfSBlbHNlIGlm
ICghYXJncy5sZW5ndGgpIHtcblx0ICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nKSB7XG5cdCAgICAgICAgICAgIHdhcm5pbmcoXG5cdCAgICAgICAgICAg
ICAgZmFsc2UsXG5cdCAgICAgICAgICAgICAgJ2JpbmQoKTogWW91IGFyZSBiaW5kaW5nIGEgY29t
cG9uZW50IG1ldGhvZCB0byB0aGUgY29tcG9uZW50LiAnICtcblx0ICAgICAgICAgICAgICAgICdS
ZWFjdCBkb2VzIHRoaXMgZm9yIHlvdSBhdXRvbWF0aWNhbGx5IGluIGEgaGlnaC1wZXJmb3JtYW5j
ZSAnICtcblx0ICAgICAgICAgICAgICAgICd3YXksIHNvIHlvdSBjYW4gc2FmZWx5IHJlbW92ZSB0
aGlzIGNhbGwuIFNlZSAlcycsXG5cdCAgICAgICAgICAgICAgY29tcG9uZW50TmFtZVxuXHQgICAg
ICAgICAgICApO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgcmV0dXJuIGJvdW5kTWV0aG9k
O1xuXHQgICAgICAgIH1cblx0ICAgICAgICB2YXIgcmVib3VuZE1ldGhvZCA9IF9iaW5kLmFwcGx5
KGJvdW5kTWV0aG9kLCBhcmd1bWVudHMpO1xuXHQgICAgICAgIHJlYm91bmRNZXRob2QuX19yZWFj
dEJvdW5kQ29udGV4dCA9IGNvbXBvbmVudDtcblx0ICAgICAgICByZWJvdW5kTWV0aG9kLl9fcmVh
Y3RCb3VuZE1ldGhvZCA9IG1ldGhvZDtcblx0ICAgICAgICByZWJvdW5kTWV0aG9kLl9fcmVhY3RC
b3VuZEFyZ3VtZW50cyA9IGFyZ3M7XG5cdCAgICAgICAgcmV0dXJuIHJlYm91bmRNZXRob2Q7XG5c
dCAgICAgIH07XG5cdCAgICB9XG5cdCAgICByZXR1cm4gYm91bmRNZXRob2Q7XG5cdCAgfVxuXHRc
blx0ICAvKipcblx0ICAgKiBCaW5kcyBhbGwgYXV0by1ib3VuZCBtZXRob2RzIGluIGEgY29tcG9u
ZW50LlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGNvbXBvbmVudCBDb21wb25lbnQg
d2hvc2UgbWV0aG9kIGlzIGdvaW5nIHRvIGJlIGJvdW5kLlxuXHQgICAqL1xuXHQgIGZ1bmN0aW9u
IGJpbmRBdXRvQmluZE1ldGhvZHMoY29tcG9uZW50KSB7XG5cdCAgICB2YXIgcGFpcnMgPSBjb21w
b25lbnQuX19yZWFjdEF1dG9CaW5kUGFpcnM7XG5cdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IHBh
aXJzLmxlbmd0aDsgaSArPSAyKSB7XG5cdCAgICAgIHZhciBhdXRvQmluZEtleSA9IHBhaXJzW2ld
O1xuXHQgICAgICB2YXIgbWV0aG9kID0gcGFpcnNbaSArIDFdO1xuXHQgICAgICBjb21wb25lbnRb
YXV0b0JpbmRLZXldID0gYmluZEF1dG9CaW5kTWV0aG9kKGNvbXBvbmVudCwgbWV0aG9kKTtcblx0
ICAgIH1cblx0ICB9XG5cdFxuXHQgIHZhciBJc01vdW50ZWRQcmVNaXhpbiA9IHtcblx0ICAgIGNv
bXBvbmVudERpZE1vdW50OiBmdW5jdGlvbigpIHtcblx0ICAgICAgdGhpcy5fX2lzTW91bnRlZCA9
IHRydWU7XG5cdCAgICB9XG5cdCAgfTtcblx0XG5cdCAgdmFyIElzTW91bnRlZFBvc3RNaXhpbiA9
IHtcblx0ICAgIGNvbXBvbmVudFdpbGxVbm1vdW50OiBmdW5jdGlvbigpIHtcblx0ICAgICAgdGhp
cy5fX2lzTW91bnRlZCA9IGZhbHNlO1xuXHQgICAgfVxuXHQgIH07XG5cdFxuXHQgIC8qKlxuXHQg
ICAqIEFkZCBtb3JlIHRvIHRoZSBSZWFjdENsYXNzIGJhc2UgY2xhc3MuIFRoZXNlIGFyZSBhbGwg
bGVnYWN5IGZlYXR1cmVzIGFuZFxuXHQgICAqIHRoZXJlZm9yZSBub3QgYWxyZWFkeSBwYXJ0IG9m
IHRoZSBtb2Rlcm4gUmVhY3RDb21wb25lbnQuXG5cdCAgICovXG5cdCAgdmFyIFJlYWN0Q2xhc3NN
aXhpbiA9IHtcblx0ICAgIC8qKlxuXHQgICAgICogVE9ETzogVGhpcyB3aWxsIGJlIGRlcHJlY2F0
ZWQgYmVjYXVzZSBzdGF0ZSBzaG91bGQgYWx3YXlzIGtlZXAgYSBjb25zaXN0ZW50XG5cdCAgICAg
KiB0eXBlIHNpZ25hdHVyZSBhbmQgdGhlIG9ubHkgdXNlIGNhc2UgZm9yIHRoaXMsIGlzIHRvIGF2
b2lkIHRoYXQuXG5cdCAgICAgKi9cblx0ICAgIHJlcGxhY2VTdGF0ZTogZnVuY3Rpb24obmV3U3Rh
dGUsIGNhbGxiYWNrKSB7XG5cdCAgICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlUmVwbGFjZVN0YXRl
KHRoaXMsIG5ld1N0YXRlLCBjYWxsYmFjayk7XG5cdCAgICB9LFxuXHRcblx0ICAgIC8qKlxuXHQg
ICAgICogQ2hlY2tzIHdoZXRoZXIgb3Igbm90IHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCBpcyBt
b3VudGVkLlxuXHQgICAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBtb3VudGVkLCBmYWxz
ZSBvdGhlcndpc2UuXG5cdCAgICAgKiBAcHJvdGVjdGVkXG5cdCAgICAgKiBAZmluYWxcblx0ICAg
ICAqL1xuXHQgICAgaXNNb3VudGVkOiBmdW5jdGlvbigpIHtcblx0ICAgICAgaWYgKGZhbHNlKSB7
XG5cdCAgICAgICAgd2FybmluZyhcblx0ICAgICAgICAgIHRoaXMuX19kaWRXYXJuSXNNb3VudGVk
LFxuXHQgICAgICAgICAgJyVzOiBpc01vdW50ZWQgaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgbWFr
ZSBzdXJlIHRvIGNsZWFuIHVwICcgK1xuXHQgICAgICAgICAgICAnc3Vic2NyaXB0aW9ucyBhbmQg
cGVuZGluZyByZXF1ZXN0cyBpbiBjb21wb25lbnRXaWxsVW5tb3VudCB0byAnICtcblx0ICAgICAg
ICAgICAgJ3ByZXZlbnQgbWVtb3J5IGxlYWtzLicsXG5cdCAgICAgICAgICAodGhpcy5jb25zdHJ1
Y3RvciAmJiB0aGlzLmNvbnN0cnVjdG9yLmRpc3BsYXlOYW1lKSB8fFxuXHQgICAgICAgICAgICB0
aGlzLm5hbWUgfHxcblx0ICAgICAgICAgICAgJ0NvbXBvbmVudCdcblx0ICAgICAgICApO1xuXHQg
ICAgICAgIHRoaXMuX19kaWRXYXJuSXNNb3VudGVkID0gdHJ1ZTtcblx0ICAgICAgfVxuXHQgICAg
ICByZXR1cm4gISF0aGlzLl9faXNNb3VudGVkO1xuXHQgICAgfVxuXHQgIH07XG5cdFxuXHQgIHZh
ciBSZWFjdENsYXNzQ29tcG9uZW50ID0gZnVuY3Rpb24oKSB7fTtcblx0ICBfYXNzaWduKFxuXHQg
ICAgUmVhY3RDbGFzc0NvbXBvbmVudC5wcm90b3R5cGUsXG5cdCAgICBSZWFjdENvbXBvbmVudC5w
cm90b3R5cGUsXG5cdCAgICBSZWFjdENsYXNzTWl4aW5cblx0ICApO1xuXHRcblx0ICAvKipcblx0
ICAgKiBDcmVhdGVzIGEgY29tcG9zaXRlIGNvbXBvbmVudCBjbGFzcyBnaXZlbiBhIGNsYXNzIHNw
ZWNpZmljYXRpb24uXG5cdCAgICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0
L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNyZWF0ZWNsYXNzXG5cdCAgICpcblx0ICAg
KiBAcGFyYW0ge29iamVjdH0gc3BlYyBDbGFzcyBzcGVjaWZpY2F0aW9uICh3aGljaCBtdXN0IGRl
ZmluZSBgcmVuZGVyYCkuXG5cdCAgICogQHJldHVybiB7ZnVuY3Rpb259IENvbXBvbmVudCBjb25z
dHJ1Y3RvciBmdW5jdGlvbi5cblx0ICAgKiBAcHVibGljXG5cdCAgICovXG5cdCAgZnVuY3Rpb24g
Y3JlYXRlQ2xhc3Moc3BlYykge1xuXHQgICAgLy8gVG8ga2VlcCBvdXIgd2FybmluZ3MgbW9yZSB1
bmRlcnN0YW5kYWJsZSwgd2UnbGwgdXNlIGEgbGl0dGxlIGhhY2sgaGVyZSB0b1xuXHQgICAgLy8g
ZW5zdXJlIHRoYXQgQ29uc3RydWN0b3IubmFtZSAhPT0gJ0NvbnN0cnVjdG9yJy4gVGhpcyBtYWtl
cyBzdXJlIHdlIGRvbid0XG5cdCAgICAvLyB1bm5lY2Vzc2FyaWx5IGlkZW50aWZ5IGEgY2xhc3Mg
d2l0aG91dCBkaXNwbGF5TmFtZSBhcyAnQ29uc3RydWN0b3InLlxuXHQgICAgdmFyIENvbnN0cnVj
dG9yID0gaWRlbnRpdHkoZnVuY3Rpb24ocHJvcHMsIGNvbnRleHQsIHVwZGF0ZXIpIHtcblx0ICAg
ICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBnZXRzIG92ZXJyaWRkZW4gYnkgbW9ja3MuIFRoZSBhcmd1
bWVudCBpcyB1c2VkXG5cdCAgICAgIC8vIGJ5IG1vY2tzIHRvIGFzc2VydCBvbiB3aGF0IGdldHMg
bW91bnRlZC5cblx0XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIHdhcm5pbmcoXG5c
dCAgICAgICAgICB0aGlzIGluc3RhbmNlb2YgQ29uc3RydWN0b3IsXG5cdCAgICAgICAgICAnU29t
ZXRoaW5nIGlzIGNhbGxpbmcgYSBSZWFjdCBjb21wb25lbnQgZGlyZWN0bHkuIFVzZSBhIGZhY3Rv
cnkgb3IgJyArXG5cdCAgICAgICAgICAgICdKU1ggaW5zdGVhZC4gU2VlOiBodHRwczovL2ZiLm1l
L3JlYWN0LWxlZ2FjeWZhY3RvcnknXG5cdCAgICAgICAgKTtcblx0ICAgICAgfVxuXHRcblx0ICAg
ICAgLy8gV2lyZSB1cCBhdXRvLWJpbmRpbmdcblx0ICAgICAgaWYgKHRoaXMuX19yZWFjdEF1dG9C
aW5kUGFpcnMubGVuZ3RoKSB7XG5cdCAgICAgICAgYmluZEF1dG9CaW5kTWV0aG9kcyh0aGlzKTtc
blx0ICAgICAgfVxuXHRcblx0ICAgICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuXHQgICAgICB0aGlz
LmNvbnRleHQgPSBjb250ZXh0O1xuXHQgICAgICB0aGlzLnJlZnMgPSBlbXB0eU9iamVjdDtcblx0
ICAgICAgdGhpcy51cGRhdGVyID0gdXBkYXRlciB8fCBSZWFjdE5vb3BVcGRhdGVRdWV1ZTtcblx0
XG5cdCAgICAgIHRoaXMuc3RhdGUgPSBudWxsO1xuXHRcblx0ICAgICAgLy8gUmVhY3RDbGFzc2Vz
IGRvZXNuJ3QgaGF2ZSBjb25zdHJ1Y3RvcnMuIEluc3RlYWQsIHRoZXkgdXNlIHRoZVxuXHQgICAg
ICAvLyBnZXRJbml0aWFsU3RhdGUgYW5kIGNvbXBvbmVudFdpbGxNb3VudCBtZXRob2RzIGZvciBp
bml0aWFsaXphdGlvbi5cblx0XG5cdCAgICAgIHZhciBpbml0aWFsU3RhdGUgPSB0aGlzLmdldElu
aXRpYWxTdGF0ZSA/IHRoaXMuZ2V0SW5pdGlhbFN0YXRlKCkgOiBudWxsO1xuXHQgICAgICBpZiAo
ZmFsc2UpIHtcblx0ICAgICAgICAvLyBXZSBhbGxvdyBhdXRvLW1vY2tzIHRvIHByb2NlZWQgYXMg
aWYgdGhleSdyZSByZXR1cm5pbmcgbnVsbC5cblx0ICAgICAgICBpZiAoXG5cdCAgICAgICAgICBp
bml0aWFsU3RhdGUgPT09IHVuZGVmaW5lZCAmJlxuXHQgICAgICAgICAgdGhpcy5nZXRJbml0aWFs
U3RhdGUuX2lzTW9ja0Z1bmN0aW9uXG5cdCAgICAgICAgKSB7XG5cdCAgICAgICAgICAvLyBUaGlz
IGlzIHByb2JhYmx5IGJhZCBwcmFjdGljZS4gQ29uc2lkZXIgd2FybmluZyBoZXJlIGFuZFxuXHQg
ICAgICAgICAgLy8gZGVwcmVjYXRpbmcgdGhpcyBjb252ZW5pZW5jZS5cblx0ICAgICAgICAgIGlu
aXRpYWxTdGF0ZSA9IG51bGw7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAgIF9pbnZh
cmlhbnQoXG5cdCAgICAgICAgdHlwZW9mIGluaXRpYWxTdGF0ZSA9PT0gJ29iamVjdCcgJiYgIUFy
cmF5LmlzQXJyYXkoaW5pdGlhbFN0YXRlKSxcblx0ICAgICAgICAnJXMuZ2V0SW5pdGlhbFN0YXRl
KCk6IG11c3QgcmV0dXJuIGFuIG9iamVjdCBvciBudWxsJyxcblx0ICAgICAgICBDb25zdHJ1Y3Rv
ci5kaXNwbGF5TmFtZSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnXG5cdCAgICAgICk7XG5c
dFxuXHQgICAgICB0aGlzLnN0YXRlID0gaW5pdGlhbFN0YXRlO1xuXHQgICAgfSk7XG5cdCAgICBD
b25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBuZXcgUmVhY3RDbGFzc0NvbXBvbmVudCgpO1xuXHQgICAg
Q29uc3RydWN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ29uc3RydWN0b3I7XG5cdCAgICBD
b25zdHJ1Y3Rvci5wcm90b3R5cGUuX19yZWFjdEF1dG9CaW5kUGFpcnMgPSBbXTtcblx0XG5cdCAg
ICBpbmplY3RlZE1peGlucy5mb3JFYWNoKG1peFNwZWNJbnRvQ29tcG9uZW50LmJpbmQobnVsbCwg
Q29uc3RydWN0b3IpKTtcblx0XG5cdCAgICBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3Rv
ciwgSXNNb3VudGVkUHJlTWl4aW4pO1xuXHQgICAgbWl4U3BlY0ludG9Db21wb25lbnQoQ29uc3Ry
dWN0b3IsIHNwZWMpO1xuXHQgICAgbWl4U3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIElz
TW91bnRlZFBvc3RNaXhpbik7XG5cdFxuXHQgICAgLy8gSW5pdGlhbGl6ZSB0aGUgZGVmYXVsdFBy
b3BzIHByb3BlcnR5IGFmdGVyIGFsbCBtaXhpbnMgaGF2ZSBiZWVuIG1lcmdlZC5cblx0ICAgIGlm
IChDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMpIHtcblx0ICAgICAgQ29uc3RydWN0b3IuZGVm
YXVsdFByb3BzID0gQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzKCk7XG5cdCAgICB9XG5cdFxu
XHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIC8vIFRoaXMgaXMgYSB0YWcgdG8gaW5kaWNhdGUg
dGhhdCB0aGUgdXNlIG9mIHRoZXNlIG1ldGhvZCBuYW1lcyBpcyBvayxcblx0ICAgICAgLy8gc2lu
Y2UgaXQncyB1c2VkIHdpdGggY3JlYXRlQ2xhc3MuIElmIGl0J3Mgbm90LCB0aGVuIGl0J3MgbGlr
ZWx5IGFcblx0ICAgICAgLy8gbWlzdGFrZSBzbyB3ZSdsbCB3YXJuIHlvdSB0byB1c2UgdGhlIHN0
YXRpYyBwcm9wZXJ0eSwgcHJvcGVydHlcblx0ICAgICAgLy8gaW5pdGlhbGl6ZXIgb3IgY29uc3Ry
dWN0b3IgcmVzcGVjdGl2ZWx5LlxuXHQgICAgICBpZiAoQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFBy
b3BzKSB7XG5cdCAgICAgICAgQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzLmlzUmVhY3RDbGFz
c0FwcHJvdmVkID0ge307XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKENvbnN0cnVjdG9yLnByb3Rv
dHlwZS5nZXRJbml0aWFsU3RhdGUpIHtcblx0ICAgICAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUu
Z2V0SW5pdGlhbFN0YXRlLmlzUmVhY3RDbGFzc0FwcHJvdmVkID0ge307XG5cdCAgICAgIH1cblx0
ICAgIH1cblx0XG5cdCAgICBfaW52YXJpYW50KFxuXHQgICAgICBDb25zdHJ1Y3Rvci5wcm90b3R5
cGUucmVuZGVyLFxuXHQgICAgICAnY3JlYXRlQ2xhc3MoLi4uKTogQ2xhc3Mgc3BlY2lmaWNhdGlv
biBtdXN0IGltcGxlbWVudCBhIGByZW5kZXJgIG1ldGhvZC4nXG5cdCAgICApO1xuXHRcblx0ICAg
IGlmIChmYWxzZSkge1xuXHQgICAgICB3YXJuaW5nKFxuXHQgICAgICAgICFDb25zdHJ1Y3Rvci5w
cm90b3R5cGUuY29tcG9uZW50U2hvdWxkVXBkYXRlLFxuXHQgICAgICAgICclcyBoYXMgYSBtZXRo
b2QgY2FsbGVkICcgK1xuXHQgICAgICAgICAgJ2NvbXBvbmVudFNob3VsZFVwZGF0ZSgpLiBEaWQg
eW91IG1lYW4gc2hvdWxkQ29tcG9uZW50VXBkYXRlKCk/ICcgK1xuXHQgICAgICAgICAgJ1RoZSBu
YW1lIGlzIHBocmFzZWQgYXMgYSBxdWVzdGlvbiBiZWNhdXNlIHRoZSBmdW5jdGlvbiBpcyAnICtc
blx0ICAgICAgICAgICdleHBlY3RlZCB0byByZXR1cm4gYSB2YWx1ZS4nLFxuXHQgICAgICAgIHNw
ZWMuZGlzcGxheU5hbWUgfHwgJ0EgY29tcG9uZW50J1xuXHQgICAgICApO1xuXHQgICAgICB3YXJu
aW5nKFxuXHQgICAgICAgICFDb25zdHJ1Y3Rvci5wcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2ll
dmVQcm9wcyxcblx0ICAgICAgICAnJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCAnICtcblx0ICAgICAg
ICAgICdjb21wb25lbnRXaWxsUmVjaWV2ZVByb3BzKCkuIERpZCB5b3UgbWVhbiBjb21wb25lbnRX
aWxsUmVjZWl2ZVByb3BzKCk/Jyxcblx0ICAgICAgICBzcGVjLmRpc3BsYXlOYW1lIHx8ICdBIGNv
bXBvbmVudCdcblx0ICAgICAgKTtcblx0ICAgIH1cblx0XG5cdCAgICAvLyBSZWR1Y2UgdGltZSBz
cGVudCBkb2luZyBsb29rdXBzIGJ5IHNldHRpbmcgdGhlc2Ugb24gdGhlIHByb3RvdHlwZS5cblx0
ICAgIGZvciAodmFyIG1ldGhvZE5hbWUgaW4gUmVhY3RDbGFzc0ludGVyZmFjZSkge1xuXHQgICAg
ICBpZiAoIUNvbnN0cnVjdG9yLnByb3RvdHlwZVttZXRob2ROYW1lXSkge1xuXHQgICAgICAgIENv
bnN0cnVjdG9yLnByb3RvdHlwZVttZXRob2ROYW1lXSA9IG51bGw7XG5cdCAgICAgIH1cblx0ICAg
IH1cblx0XG5cdCAgICByZXR1cm4gQ29uc3RydWN0b3I7XG5cdCAgfVxuXHRcblx0ICByZXR1cm4g
Y3JlYXRlQ2xhc3M7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeTtcblxuXG4v
KioqLyB9LFxuLyogOTggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5c
dFwidXNlIHN0cmljdFwiO1xuXHRcblx0LyoqXG5cdCAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuXHQgKlxuXHQgKiBAdHlwZWNoZWNrc1xuXHQgKi9cblx0XG5cdHZhciBfaHlwaGVuUGF0
dGVybiA9IC8tKC4pL2c7XG5cdFxuXHQvKipcblx0ICogQ2FtZWxjYXNlcyBhIGh5cGhlbmF0ZWQg
c3RyaW5nLCBmb3IgZXhhbXBsZTpcblx0ICpcblx0ICogICA+IGNhbWVsaXplKCdiYWNrZ3JvdW5k
LWNvbG9yJylcblx0ICogICA8IFwiYmFja2dyb3VuZENvbG9yXCJcblx0ICpcblx0ICogQHBhcmFt
IHtzdHJpbmd9IHN0cmluZ1xuXHQgKiBAcmV0dXJuIHtzdHJpbmd9XG5cdCAqL1xuXHRmdW5jdGlv
biBjYW1lbGl6ZShzdHJpbmcpIHtcblx0ICByZXR1cm4gc3RyaW5nLnJlcGxhY2UoX2h5cGhlblBh
dHRlcm4sIGZ1bmN0aW9uIChfLCBjaGFyYWN0ZXIpIHtcblx0ICAgIHJldHVybiBjaGFyYWN0ZXIu
dG9VcHBlckNhc2UoKTtcblx0ICB9KTtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBjYW1l
bGl6ZTtcblxuLyoqKi8gfSxcbi8qIDk5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IChjKSAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5c
dCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIEB0eXBlY2hlY2tzXG5cdCAqL1xuXHRcblx0J3VzZSBz
dHJpY3QnO1xuXHRcblx0dmFyIGNhbWVsaXplID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5OCk7XG5c
dFxuXHR2YXIgbXNQYXR0ZXJuID0gL14tbXMtLztcblx0XG5cdC8qKlxuXHQgKiBDYW1lbGNhc2Vz
IGEgaHlwaGVuYXRlZCBDU1MgcHJvcGVydHkgbmFtZSwgZm9yIGV4YW1wbGU6XG5cdCAqXG5cdCAq
ICAgPiBjYW1lbGl6ZVN0eWxlTmFtZSgnYmFja2dyb3VuZC1jb2xvcicpXG5cdCAqICAgPCBcImJh
Y2tncm91bmRDb2xvclwiXG5cdCAqICAgPiBjYW1lbGl6ZVN0eWxlTmFtZSgnLW1vei10cmFuc2l0
aW9uJylcblx0ICogICA8IFwiTW96VHJhbnNpdGlvblwiXG5cdCAqICAgPiBjYW1lbGl6ZVN0eWxl
TmFtZSgnLW1zLXRyYW5zaXRpb24nKVxuXHQgKiAgIDwgXCJtc1RyYW5zaXRpb25cIlxuXHQgKlxu
XHQgKiBBcyBBbmRpIFNtaXRoIHN1Z2dlc3RzXG5cdCAqIChodHRwOi8vd3d3LmFuZGlzbWl0aC5j
b20vYmxvZy8yMDEyLzAyL21vZGVybml6ci1wcmVmaXhlZC8pLCBhbiBgLW1zYCBwcmVmaXhcblx0
ICogaXMgY29udmVydGVkIHRvIGxvd2VyY2FzZSBgbXNgLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0
cmluZ30gc3RyaW5nXG5cdCAqIEByZXR1cm4ge3N0cmluZ31cblx0ICovXG5cdGZ1bmN0aW9uIGNh
bWVsaXplU3R5bGVOYW1lKHN0cmluZykge1xuXHQgIHJldHVybiBjYW1lbGl6ZShzdHJpbmcucmVw
bGFjZShtc1BhdHRlcm4sICdtcy0nKSk7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gY2Ft
ZWxpemVTdHlsZU5hbWU7XG5cbi8qKiovIH0sXG4vKiAxMDAgKi9cbi8qKiovIGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztc
blx0XG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5c
dCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICog
XG5cdCAqL1xuXHRcblx0dmFyIGlzVGV4dE5vZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwOCk7
XG5cdFxuXHQvKmVzbGludC1kaXNhYmxlIG5vLWJpdHdpc2UgKi9cblx0XG5cdC8qKlxuXHQgKiBD
aGVja3MgaWYgYSBnaXZlbiBET00gbm9kZSBjb250YWlucyBvciBpcyBhbm90aGVyIERPTSBub2Rl
LlxuXHQgKi9cblx0ZnVuY3Rpb24gY29udGFpbnNOb2RlKG91dGVyTm9kZSwgaW5uZXJOb2RlKSB7
XG5cdCAgaWYgKCFvdXRlck5vZGUgfHwgIWlubmVyTm9kZSkge1xuXHQgICAgcmV0dXJuIGZhbHNl
O1xuXHQgIH0gZWxzZSBpZiAob3V0ZXJOb2RlID09PSBpbm5lck5vZGUpIHtcblx0ICAgIHJldHVy
biB0cnVlO1xuXHQgIH0gZWxzZSBpZiAoaXNUZXh0Tm9kZShvdXRlck5vZGUpKSB7XG5cdCAgICBy
ZXR1cm4gZmFsc2U7XG5cdCAgfSBlbHNlIGlmIChpc1RleHROb2RlKGlubmVyTm9kZSkpIHtcblx0
ICAgIHJldHVybiBjb250YWluc05vZGUob3V0ZXJOb2RlLCBpbm5lck5vZGUucGFyZW50Tm9kZSk7
XG5cdCAgfSBlbHNlIGlmICgnY29udGFpbnMnIGluIG91dGVyTm9kZSkge1xuXHQgICAgcmV0dXJu
IG91dGVyTm9kZS5jb250YWlucyhpbm5lck5vZGUpO1xuXHQgIH0gZWxzZSBpZiAob3V0ZXJOb2Rl
LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKSB7XG5cdCAgICByZXR1cm4gISEob3V0ZXJOb2RlLmNv
bXBhcmVEb2N1bWVudFBvc2l0aW9uKGlubmVyTm9kZSkgJiAxNik7XG5cdCAgfSBlbHNlIHtcblx0
ICAgIHJldHVybiBmYWxzZTtcblx0ICB9XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gY29u
dGFpbnNOb2RlO1xuXG4vKioqLyB9LFxuLyogMTAxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxu
XHQvKipcblx0ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5c
dCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIEB0eXBl
Y2hlY2tzXG5cdCAqL1xuXHRcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18o
MSk7XG5cdFxuXHQvKipcblx0ICogQ29udmVydCBhcnJheS1saWtlIG9iamVjdHMgdG8gYXJyYXlz
LlxuXHQgKlxuXHQgKiBUaGlzIEFQSSBhc3N1bWVzIHRoZSBjYWxsZXIga25vd3MgdGhlIGNvbnRl
bnRzIG9mIHRoZSBkYXRhIHR5cGUuIEZvciBsZXNzXG5cdCAqIHdlbGwgZGVmaW5lZCBpbnB1dHMg
dXNlIGNyZWF0ZUFycmF5RnJvbU1peGVkLlxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdHxmdW5j
dGlvbnxmaWxlbGlzdH0gb2JqXG5cdCAqIEByZXR1cm4ge2FycmF5fVxuXHQgKi9cblx0ZnVuY3Rp
b24gdG9BcnJheShvYmopIHtcblx0ICB2YXIgbGVuZ3RoID0gb2JqLmxlbmd0aDtcblx0XG5cdCAg
Ly8gU29tZSBicm93c2VycyBidWlsdGluIG9iamVjdHMgY2FuIHJlcG9ydCB0eXBlb2YgJ2Z1bmN0
aW9uJyAoZS5nLiBOb2RlTGlzdFxuXHQgIC8vIGluIG9sZCB2ZXJzaW9ucyBvZiBTYWZhcmkpLlxu
XHQgICEoIUFycmF5LmlzQXJyYXkob2JqKSAmJiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgfHwg
dHlwZW9mIG9iaiA9PT0gJ2Z1bmN0aW9uJykpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAn
dG9BcnJheTogQXJyYXktbGlrZSBvYmplY3QgZXhwZWN0ZWQnKSA6IGludmFyaWFudChmYWxzZSkg
OiB2b2lkIDA7XG5cdFxuXHQgICEodHlwZW9mIGxlbmd0aCA9PT0gJ251bWJlcicpID8gIGZhbHNl
ID8gaW52YXJpYW50KGZhbHNlLCAndG9BcnJheTogT2JqZWN0IG5lZWRzIGEgbGVuZ3RoIHByb3Bl
cnR5JykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuXHRcblx0ICAhKGxlbmd0aCA9PT0g
MCB8fCBsZW5ndGggLSAxIGluIG9iaikgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICd0b0Fy
cmF5OiBPYmplY3Qgc2hvdWxkIGhhdmUga2V5cyBmb3IgaW5kaWNlcycpIDogaW52YXJpYW50KGZh
bHNlKSA6IHZvaWQgMDtcblx0XG5cdCAgISh0eXBlb2Ygb2JqLmNhbGxlZSAhPT0gJ2Z1bmN0aW9u
JykgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICd0b0FycmF5OiBPYmplY3QgY2FuXFwndCBi
ZSBgYXJndW1lbnRzYC4gVXNlIHJlc3QgcGFyYW1zICcgKyAnKGZ1bmN0aW9uKC4uLmFyZ3MpIHt9
KSBvciBBcnJheS5mcm9tKCkgaW5zdGVhZC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7
XG5cdFxuXHQgIC8vIE9sZCBJRSBkb2Vzbid0IGdpdmUgY29sbGVjdGlvbnMgYWNjZXNzIHRvIGhh
c093blByb3BlcnR5LiBBc3N1bWUgaW5wdXRzXG5cdCAgLy8gd2l0aG91dCBtZXRob2Qgd2lsbCB0
aHJvdyBkdXJpbmcgdGhlIHNsaWNlIGNhbGwgYW5kIHNraXAgc3RyYWlnaHQgdG8gdGhlXG5cdCAg
Ly8gZmFsbGJhY2suXG5cdCAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eSkge1xuXHQgICAgdHJ5IHtc
blx0ICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG9iaik7XG5cdCAgICB9
IGNhdGNoIChlKSB7XG5cdCAgICAgIC8vIElFIDwgOSBkb2VzIG5vdCBzdXBwb3J0IEFycmF5I3Ns
aWNlIG9uIGNvbGxlY3Rpb25zIG9iamVjdHNcblx0ICAgIH1cblx0ICB9XG5cdFxuXHQgIC8vIEZh
bGwgYmFjayB0byBjb3B5aW5nIGtleSBieSBrZXkuIFRoaXMgYXNzdW1lcyBhbGwga2V5cyBoYXZl
IGEgdmFsdWUsXG5cdCAgLy8gc28gd2lsbCBub3QgcHJlc2VydmUgc3BhcnNlbHkgcG9wdWxhdGVk
IGlucHV0cy5cblx0ICB2YXIgcmV0ID0gQXJyYXkobGVuZ3RoKTtcblx0ICBmb3IgKHZhciBpaSA9
IDA7IGlpIDwgbGVuZ3RoOyBpaSsrKSB7XG5cdCAgICByZXRbaWldID0gb2JqW2lpXTtcblx0ICB9
XG5cdCAgcmV0dXJuIHJldDtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFBlcmZvcm0gYSBoZXVyaXN0
aWMgdGVzdCB0byBkZXRlcm1pbmUgaWYgYW4gb2JqZWN0IGlzIFwiYXJyYXktbGlrZVwiLlxuXHQg
KlxuXHQgKiAgIEEgbW9uayBhc2tlZCBKb3NodSwgYSBaZW4gbWFzdGVyLCBcIkhhcyBhIGRvZyBC
dWRkaGEgbmF0dXJlP1wiXG5cdCAqICAgSm9zaHUgcmVwbGllZDogXCJNdS5cIlxuXHQgKlxuXHQg
KiBUaGlzIGZ1bmN0aW9uIGRldGVybWluZXMgaWYgaXRzIGFyZ3VtZW50IGhhcyBcImFycmF5IG5h
dHVyZVwiOiBpdCByZXR1cm5zXG5cdCAqIHRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGFuIGFjdHVh
bCBhcnJheSwgYW4gYGFyZ3VtZW50cycgb2JqZWN0LCBvciBhblxuXHQgKiBIVE1MQ29sbGVjdGlv
biAoZS5nLiBub2RlLmNoaWxkTm9kZXMgb3Igbm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgpKS5c
blx0ICpcblx0ICogSXQgd2lsbCByZXR1cm4gZmFsc2UgZm9yIG90aGVyIGFycmF5LWxpa2Ugb2Jq
ZWN0cyBsaWtlIEZpbGVsaXN0LlxuXHQgKlxuXHQgKiBAcGFyYW0geyp9IG9ialxuXHQgKiBAcmV0
dXJuIHtib29sZWFufVxuXHQgKi9cblx0ZnVuY3Rpb24gaGFzQXJyYXlOYXR1cmUob2JqKSB7XG5c
dCAgcmV0dXJuIChcblx0ICAgIC8vIG5vdCBudWxsL2ZhbHNlXG5cdCAgICAhIW9iaiAmJiAoXG5c
dCAgICAvLyBhcnJheXMgYXJlIG9iamVjdHMsIE5vZGVMaXN0cyBhcmUgZnVuY3Rpb25zIGluIFNh
ZmFyaVxuXHQgICAgdHlwZW9mIG9iaiA9PSAnb2JqZWN0JyB8fCB0eXBlb2Ygb2JqID09ICdmdW5j
dGlvbicpICYmXG5cdCAgICAvLyBxdWFja3MgbGlrZSBhbiBhcnJheVxuXHQgICAgJ2xlbmd0aCcg
aW4gb2JqICYmXG5cdCAgICAvLyBub3Qgd2luZG93XG5cdCAgICAhKCdzZXRJbnRlcnZhbCcgaW4g
b2JqKSAmJlxuXHQgICAgLy8gbm8gRE9NIG5vZGUgc2hvdWxkIGJlIGNvbnNpZGVyZWQgYW4gYXJy
YXktbGlrZVxuXHQgICAgLy8gYSAnc2VsZWN0JyBlbGVtZW50IGhhcyAnbGVuZ3RoJyBhbmQgJ2l0
ZW0nIHByb3BlcnRpZXMgb24gSUU4XG5cdCAgICB0eXBlb2Ygb2JqLm5vZGVUeXBlICE9ICdudW1i
ZXInICYmIChcblx0ICAgIC8vIGEgcmVhbCBhcnJheVxuXHQgICAgQXJyYXkuaXNBcnJheShvYmop
IHx8XG5cdCAgICAvLyBhcmd1bWVudHNcblx0ICAgICdjYWxsZWUnIGluIG9iaiB8fFxuXHQgICAg
Ly8gSFRNTENvbGxlY3Rpb24vTm9kZUxpc3Rcblx0ICAgICdpdGVtJyBpbiBvYmopXG5cdCAgKTtc
blx0fVxuXHRcblx0LyoqXG5cdCAqIEVuc3VyZSB0aGF0IHRoZSBhcmd1bWVudCBpcyBhbiBhcnJh
eSBieSB3cmFwcGluZyBpdCBpbiBhbiBhcnJheSBpZiBpdCBpcyBub3QuXG5cdCAqIENyZWF0ZXMg
YSBjb3B5IG9mIHRoZSBhcmd1bWVudCBpZiBpdCBpcyBhbHJlYWR5IGFuIGFycmF5LlxuXHQgKlxu
XHQgKiBUaGlzIGlzIG1vc3RseSB1c2VmdWwgaWRpb21hdGljYWxseTpcblx0ICpcblx0ICogICB2
YXIgY3JlYXRlQXJyYXlGcm9tTWl4ZWQgPSByZXF1aXJlKCdjcmVhdGVBcnJheUZyb21NaXhlZCcp
O1xuXHQgKlxuXHQgKiAgIGZ1bmN0aW9uIHRha2VzT25lT3JNb3JlVGhpbmdzKHRoaW5ncykge1xu
XHQgKiAgICAgdGhpbmdzID0gY3JlYXRlQXJyYXlGcm9tTWl4ZWQodGhpbmdzKTtcblx0ICogICAg
IC4uLlxuXHQgKiAgIH1cblx0ICpcblx0ICogVGhpcyBhbGxvd3MgeW91IHRvIHRyZWF0IGB0aGlu
Z3MnIGFzIGFuIGFycmF5LCBidXQgYWNjZXB0IHNjYWxhcnMgaW4gdGhlIEFQSS5cblx0ICpcblx0
ICogSWYgeW91IG5lZWQgdG8gY29udmVydCBhbiBhcnJheS1saWtlIG9iamVjdCwgbGlrZSBgYXJn
dW1lbnRzYCwgaW50byBhbiBhcnJheVxuXHQgKiB1c2UgdG9BcnJheSBpbnN0ZWFkLlxuXHQgKlxu
XHQgKiBAcGFyYW0geyp9IG9ialxuXHQgKiBAcmV0dXJuIHthcnJheX1cblx0ICovXG5cdGZ1bmN0
aW9uIGNyZWF0ZUFycmF5RnJvbU1peGVkKG9iaikge1xuXHQgIGlmICghaGFzQXJyYXlOYXR1cmUo
b2JqKSkge1xuXHQgICAgcmV0dXJuIFtvYmpdO1xuXHQgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJh
eShvYmopKSB7XG5cdCAgICByZXR1cm4gb2JqLnNsaWNlKCk7XG5cdCAgfSBlbHNlIHtcblx0ICAg
IHJldHVybiB0b0FycmF5KG9iaik7XG5cdCAgfVxuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9
IGNyZWF0ZUFycmF5RnJvbU1peGVkO1xuXG4vKioqLyB9LFxuLyogMTAyICovXG4vKioqLyBmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0
cmljdCc7XG5cdFxuXHQvKipcblx0ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAq
XG5cdCAqIEB0eXBlY2hlY2tzXG5cdCAqL1xuXHRcblx0Lyplc2xpbnQtZGlzYWJsZSBmYi13d3cv
dW5zYWZlLWh0bWwqL1xuXHRcblx0dmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg2KTtcblx0XG5cdHZhciBjcmVhdGVBcnJheUZyb21NaXhlZCA9IF9fd2VicGFj
a19yZXF1aXJlX18oMTAxKTtcblx0dmFyIGdldE1hcmt1cFdyYXAgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDEwMyk7XG5cdHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHRc
blx0LyoqXG5cdCAqIER1bW15IGNvbnRhaW5lciB1c2VkIHRvIHJlbmRlciBhbGwgbWFya3VwLlxu
XHQgKi9cblx0dmFyIGR1bW15Tm9kZSA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSA/
IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpIDogbnVsbDtcblx0XG5cdC8qKlxuXHQgKiBQ
YXR0ZXJuIHVzZWQgYnkgYGdldE5vZGVOYW1lYC5cblx0ICovXG5cdHZhciBub2RlTmFtZVBhdHRl
cm4gPSAvXlxccyo8KFxcdyspLztcblx0XG5cdC8qKlxuXHQgKiBFeHRyYWN0cyB0aGUgYG5vZGVO
YW1lYCBvZiB0aGUgZmlyc3QgZWxlbWVudCBpbiBhIHN0cmluZyBvZiBtYXJrdXAuXG5cdCAqXG5c
dCAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgU3RyaW5nIG9mIG1hcmt1cC5cblx0ICogQHJldHVy
biB7P3N0cmluZ30gTm9kZSBuYW1lIG9mIHRoZSBzdXBwbGllZCBtYXJrdXAuXG5cdCAqL1xuXHRm
dW5jdGlvbiBnZXROb2RlTmFtZShtYXJrdXApIHtcblx0ICB2YXIgbm9kZU5hbWVNYXRjaCA9IG1h
cmt1cC5tYXRjaChub2RlTmFtZVBhdHRlcm4pO1xuXHQgIHJldHVybiBub2RlTmFtZU1hdGNoICYm
IG5vZGVOYW1lTWF0Y2hbMV0udG9Mb3dlckNhc2UoKTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIENy
ZWF0ZXMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgbm9kZXMgcmVuZGVyZWQgZnJvbSB0aGUgc3Vw
cGxpZWQgbWFya3VwLiBUaGVcblx0ICogb3B0aW9uYWxseSBzdXBwbGllZCBgaGFuZGxlU2NyaXB0
YCBmdW5jdGlvbiB3aWxsIGJlIGludm9rZWQgb25jZSBmb3IgZWFjaFxuXHQgKiA8c2NyaXB0PiBl
bGVtZW50IHRoYXQgaXMgcmVuZGVyZWQuIElmIG5vIGBoYW5kbGVTY3JpcHRgIGZ1bmN0aW9uIGlz
IHN1cHBsaWVkLFxuXHQgKiBhbiBleGNlcHRpb24gaXMgdGhyb3duIGlmIGFueSA8c2NyaXB0PiBl
bGVtZW50cyBhcmUgcmVuZGVyZWQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAg
QSBzdHJpbmcgb2YgdmFsaWQgSFRNTCBtYXJrdXAuXG5cdCAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBo
YW5kbGVTY3JpcHQgSW52b2tlZCBvbmNlIGZvciBlYWNoIHJlbmRlcmVkIDxzY3JpcHQ+LlxuXHQg
KiBAcmV0dXJuIHthcnJheTxET01FbGVtZW50fERPTVRleHROb2RlPn0gQW4gYXJyYXkgb2YgcmVu
ZGVyZWQgbm9kZXMuXG5cdCAqL1xuXHRmdW5jdGlvbiBjcmVhdGVOb2Rlc0Zyb21NYXJrdXAobWFy
a3VwLCBoYW5kbGVTY3JpcHQpIHtcblx0ICB2YXIgbm9kZSA9IGR1bW15Tm9kZTtcblx0ICAhISFk
dW1teU5vZGUgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdjcmVhdGVOb2Rlc0Zyb21NYXJr
dXAgZHVtbXkgbm90IGluaXRpYWxpemVkJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xu
XHQgIHZhciBub2RlTmFtZSA9IGdldE5vZGVOYW1lKG1hcmt1cCk7XG5cdFxuXHQgIHZhciB3cmFw
ID0gbm9kZU5hbWUgJiYgZ2V0TWFya3VwV3JhcChub2RlTmFtZSk7XG5cdCAgaWYgKHdyYXApIHtc
blx0ICAgIG5vZGUuaW5uZXJIVE1MID0gd3JhcFsxXSArIG1hcmt1cCArIHdyYXBbMl07XG5cdFxu
XHQgICAgdmFyIHdyYXBEZXB0aCA9IHdyYXBbMF07XG5cdCAgICB3aGlsZSAod3JhcERlcHRoLS0p
IHtcblx0ICAgICAgbm9kZSA9IG5vZGUubGFzdENoaWxkO1xuXHQgICAgfVxuXHQgIH0gZWxzZSB7
XG5cdCAgICBub2RlLmlubmVySFRNTCA9IG1hcmt1cDtcblx0ICB9XG5cdFxuXHQgIHZhciBzY3Jp
cHRzID0gbm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0Jyk7XG5cdCAgaWYgKHNjcmlw
dHMubGVuZ3RoKSB7XG5cdCAgICAhaGFuZGxlU2NyaXB0ID8gIGZhbHNlID8gaW52YXJpYW50KGZh
bHNlLCAnY3JlYXRlTm9kZXNGcm9tTWFya3VwKC4uLik6IFVuZXhwZWN0ZWQgPHNjcmlwdD4gZWxl
bWVudCByZW5kZXJlZC4nKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG5cdCAgICBjcmVh
dGVBcnJheUZyb21NaXhlZChzY3JpcHRzKS5mb3JFYWNoKGhhbmRsZVNjcmlwdCk7XG5cdCAgfVxu
XHRcblx0ICB2YXIgbm9kZXMgPSBBcnJheS5mcm9tKG5vZGUuY2hpbGROb2Rlcyk7XG5cdCAgd2hp
bGUgKG5vZGUubGFzdENoaWxkKSB7XG5cdCAgICBub2RlLnJlbW92ZUNoaWxkKG5vZGUubGFzdENo
aWxkKTtcblx0ICB9XG5cdCAgcmV0dXJuIG5vZGVzO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0
cyA9IGNyZWF0ZU5vZGVzRnJvbU1hcmt1cDtcblxuLyoqKi8gfSxcbi8qIDEwMyAqL1xuLyoqKi8g
ZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3Vz
ZSBzdHJpY3QnO1xuXHRcblx0LyoqXG5cdCAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
XHQgKlxuXHQgKi9cblx0XG5cdC8qZXNsaW50LWRpc2FibGUgZmItd3d3L3Vuc2FmZS1odG1sICov
XG5cdFxuXHR2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYp
O1xuXHRcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdFxuXHQv
Kipcblx0ICogRHVtbXkgY29udGFpbmVyIHVzZWQgdG8gZGV0ZWN0IHdoaWNoIHdyYXBzIGFyZSBu
ZWNlc3NhcnkuXG5cdCAqL1xuXHR2YXIgZHVtbXlOb2RlID0gRXhlY3V0aW9uRW52aXJvbm1lbnQu
Y2FuVXNlRE9NID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykgOiBudWxsO1xuXHRcblx0
LyoqXG5cdCAqIFNvbWUgYnJvd3NlcnMgY2Fubm90IHVzZSBgaW5uZXJIVE1MYCB0byByZW5kZXIg
Y2VydGFpbiBlbGVtZW50cyBzdGFuZGFsb25lLFxuXHQgKiBzbyB3ZSB3cmFwIHRoZW0sIHJlbmRl
ciB0aGUgd3JhcHBlZCBub2RlcywgdGhlbiBleHRyYWN0IHRoZSBkZXNpcmVkIG5vZGUuXG5cdCAq
XG5cdCAqIEluIElFOCwgY2VydGFpbiBlbGVtZW50cyBjYW5ub3QgcmVuZGVyIGFsb25lLCBzbyB3
cmFwIGFsbCBlbGVtZW50cyAoJyonKS5cblx0ICovXG5cdFxuXHR2YXIgc2hvdWxkV3JhcCA9IHt9
O1xuXHRcblx0dmFyIHNlbGVjdFdyYXAgPSBbMSwgJzxzZWxlY3QgbXVsdGlwbGU9XCJ0cnVlXCI+
JywgJzwvc2VsZWN0PiddO1xuXHR2YXIgdGFibGVXcmFwID0gWzEsICc8dGFibGU+JywgJzwvdGFi
bGU+J107XG5cdHZhciB0cldyYXAgPSBbMywgJzx0YWJsZT48dGJvZHk+PHRyPicsICc8L3RyPjwv
dGJvZHk+PC90YWJsZT4nXTtcblx0XG5cdHZhciBzdmdXcmFwID0gWzEsICc8c3ZnIHhtbG5zPVwi
aHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj4nLCAnPC9zdmc+J107XG5cdFxuXHR2YXIgbWFy
a3VwV3JhcCA9IHtcblx0ICAnKic6IFsxLCAnPzxkaXY+JywgJzwvZGl2PiddLFxuXHRcblx0ICAn
YXJlYSc6IFsxLCAnPG1hcD4nLCAnPC9tYXA+J10sXG5cdCAgJ2NvbCc6IFsyLCAnPHRhYmxlPjx0
Ym9keT48L3Rib2R5Pjxjb2xncm91cD4nLCAnPC9jb2xncm91cD48L3RhYmxlPiddLFxuXHQgICds
ZWdlbmQnOiBbMSwgJzxmaWVsZHNldD4nLCAnPC9maWVsZHNldD4nXSxcblx0ICAncGFyYW0nOiBb
MSwgJzxvYmplY3Q+JywgJzwvb2JqZWN0PiddLFxuXHQgICd0cic6IFsyLCAnPHRhYmxlPjx0Ym9k
eT4nLCAnPC90Ym9keT48L3RhYmxlPiddLFxuXHRcblx0ICAnb3B0Z3JvdXAnOiBzZWxlY3RXcmFw
LFxuXHQgICdvcHRpb24nOiBzZWxlY3RXcmFwLFxuXHRcblx0ICAnY2FwdGlvbic6IHRhYmxlV3Jh
cCxcblx0ICAnY29sZ3JvdXAnOiB0YWJsZVdyYXAsXG5cdCAgJ3Rib2R5JzogdGFibGVXcmFwLFxu
XHQgICd0Zm9vdCc6IHRhYmxlV3JhcCxcblx0ICAndGhlYWQnOiB0YWJsZVdyYXAsXG5cdFxuXHQg
ICd0ZCc6IHRyV3JhcCxcblx0ICAndGgnOiB0cldyYXBcblx0fTtcblx0XG5cdC8vIEluaXRpYWxp
emUgdGhlIFNWRyBlbGVtZW50cyBzaW5jZSB3ZSBrbm93IHRoZXknbGwgYWx3YXlzIG5lZWQgdG8g
YmUgd3JhcHBlZFxuXHQvLyBjb25zaXN0ZW50bHkuIElmIHRoZXkgYXJlIGNyZWF0ZWQgaW5zaWRl
IGEgPGRpdj4gdGhleSB3aWxsIGJlIGluaXRpYWxpemVkIGluXG5cdC8vIHRoZSB3cm9uZyBuYW1l
c3BhY2UgKGFuZCB3aWxsIG5vdCBkaXNwbGF5KS5cblx0dmFyIHN2Z0VsZW1lbnRzID0gWydjaXJj
bGUnLCAnY2xpcFBhdGgnLCAnZGVmcycsICdlbGxpcHNlJywgJ2cnLCAnaW1hZ2UnLCAnbGluZScs
ICdsaW5lYXJHcmFkaWVudCcsICdtYXNrJywgJ3BhdGgnLCAncGF0dGVybicsICdwb2x5Z29uJywg
J3BvbHlsaW5lJywgJ3JhZGlhbEdyYWRpZW50JywgJ3JlY3QnLCAnc3RvcCcsICd0ZXh0JywgJ3Rz
cGFuJ107XG5cdHN2Z0VsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKG5vZGVOYW1lKSB7XG5cdCAg
bWFya3VwV3JhcFtub2RlTmFtZV0gPSBzdmdXcmFwO1xuXHQgIHNob3VsZFdyYXBbbm9kZU5hbWVd
ID0gdHJ1ZTtcblx0fSk7XG5cdFxuXHQvKipcblx0ICogR2V0cyB0aGUgbWFya3VwIHdyYXAgY29u
ZmlndXJhdGlvbiBmb3IgdGhlIHN1cHBsaWVkIGBub2RlTmFtZWAuXG5cdCAqXG5cdCAqIE5PVEU6
IFRoaXMgbGF6aWx5IGRldGVjdHMgd2hpY2ggd3JhcHMgYXJlIG5lY2Vzc2FyeSBmb3IgdGhlIGN1
cnJlbnQgYnJvd3Nlci5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IG5vZGVOYW1lIExvd2Vy
Y2FzZSBgbm9kZU5hbWVgLlxuXHQgKiBAcmV0dXJuIHs/YXJyYXl9IE1hcmt1cCB3cmFwIGNvbmZp
Z3VyYXRpb24sIGlmIGFwcGxpY2FibGUuXG5cdCAqL1xuXHRmdW5jdGlvbiBnZXRNYXJrdXBXcmFw
KG5vZGVOYW1lKSB7XG5cdCAgISEhZHVtbXlOb2RlID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNl
LCAnTWFya3VwIHdyYXBwaW5nIG5vZGUgbm90IGluaXRpYWxpemVkJykgOiBpbnZhcmlhbnQoZmFs
c2UpIDogdm9pZCAwO1xuXHQgIGlmICghbWFya3VwV3JhcC5oYXNPd25Qcm9wZXJ0eShub2RlTmFt
ZSkpIHtcblx0ICAgIG5vZGVOYW1lID0gJyonO1xuXHQgIH1cblx0ICBpZiAoIXNob3VsZFdyYXAu
aGFzT3duUHJvcGVydHkobm9kZU5hbWUpKSB7XG5cdCAgICBpZiAobm9kZU5hbWUgPT09ICcqJykg
e1xuXHQgICAgICBkdW1teU5vZGUuaW5uZXJIVE1MID0gJzxsaW5rIC8+Jztcblx0ICAgIH0gZWxz
ZSB7XG5cdCAgICAgIGR1bW15Tm9kZS5pbm5lckhUTUwgPSAnPCcgKyBub2RlTmFtZSArICc+PC8n
ICsgbm9kZU5hbWUgKyAnPic7XG5cdCAgICB9XG5cdCAgICBzaG91bGRXcmFwW25vZGVOYW1lXSA9
ICFkdW1teU5vZGUuZmlyc3RDaGlsZDtcblx0ICB9XG5cdCAgcmV0dXJuIHNob3VsZFdyYXBbbm9k
ZU5hbWVdID8gbWFya3VwV3JhcFtub2RlTmFtZV0gOiBudWxsO1xuXHR9XG5cdFxuXHRtb2R1bGUu
ZXhwb3J0cyA9IGdldE1hcmt1cFdyYXA7XG5cbi8qKiovIH0sXG4vKiAxMDQgKi9cbi8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgKGMpIDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0
ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cblx0ICpcblx0ICogQHR5cGVjaGVja3Ncblx0ICovXG5cdFxuXHQndXNlIHN0
cmljdCc7XG5cdFxuXHQvKipcblx0ICogR2V0cyB0aGUgc2Nyb2xsIHBvc2l0aW9uIG9mIHRoZSBz
dXBwbGllZCBlbGVtZW50IG9yIHdpbmRvdy5cblx0ICpcblx0ICogVGhlIHJldHVybiB2YWx1ZXMg
YXJlIHVuYm91bmRlZCwgdW5saWtlIGBnZXRTY3JvbGxQb3NpdGlvbmAuIFRoaXMgbWVhbnMgdGhl
eVxuXHQgKiBtYXkgYmUgbmVnYXRpdmUgb3IgZXhjZWVkIHRoZSBlbGVtZW50IGJvdW5kYXJpZXMg
KHdoaWNoIGlzIHBvc3NpYmxlIHVzaW5nXG5cdCAqIGluZXJ0aWFsIHNjcm9sbGluZykuXG5cdCAq
XG5cdCAqIEBwYXJhbSB7RE9NV2luZG93fERPTUVsZW1lbnR9IHNjcm9sbGFibGVcblx0ICogQHJl
dHVybiB7b2JqZWN0fSBNYXAgd2l0aCBgeGAgYW5kIGB5YCBrZXlzLlxuXHQgKi9cblx0XG5cdGZ1
bmN0aW9uIGdldFVuYm91bmRlZFNjcm9sbFBvc2l0aW9uKHNjcm9sbGFibGUpIHtcblx0ICBpZiAo
c2Nyb2xsYWJsZS5XaW5kb3cgJiYgc2Nyb2xsYWJsZSBpbnN0YW5jZW9mIHNjcm9sbGFibGUuV2lu
ZG93KSB7XG5cdCAgICByZXR1cm4ge1xuXHQgICAgICB4OiBzY3JvbGxhYmxlLnBhZ2VYT2Zmc2V0
IHx8IHNjcm9sbGFibGUuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQsXG5cdCAg
ICAgIHk6IHNjcm9sbGFibGUucGFnZVlPZmZzZXQgfHwgc2Nyb2xsYWJsZS5kb2N1bWVudC5kb2N1
bWVudEVsZW1lbnQuc2Nyb2xsVG9wXG5cdCAgICB9O1xuXHQgIH1cblx0ICByZXR1cm4ge1xuXHQg
ICAgeDogc2Nyb2xsYWJsZS5zY3JvbGxMZWZ0LFxuXHQgICAgeTogc2Nyb2xsYWJsZS5zY3JvbGxU
b3Bcblx0ICB9O1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGdldFVuYm91bmRlZFNjcm9s
bFBvc2l0aW9uO1xuXG4vKioqLyB9LFxuLyogMTA1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMpIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQvKipcblx0ICogQ29weXJpZ2h0
IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIEB0eXBlY2hlY2tzXG5cdCAqL1xuXHRcblx0
dmFyIF91cHBlcmNhc2VQYXR0ZXJuID0gLyhbQS1aXSkvZztcblx0XG5cdC8qKlxuXHQgKiBIeXBo
ZW5hdGVzIGEgY2FtZWxjYXNlZCBzdHJpbmcsIGZvciBleGFtcGxlOlxuXHQgKlxuXHQgKiAgID4g
aHlwaGVuYXRlKCdiYWNrZ3JvdW5kQ29sb3InKVxuXHQgKiAgIDwgXCJiYWNrZ3JvdW5kLWNvbG9y
XCJcblx0ICpcblx0ICogRm9yIENTUyBzdHlsZSBuYW1lcywgdXNlIGBoeXBoZW5hdGVTdHlsZU5h
bWVgIGluc3RlYWQgd2hpY2ggd29ya3MgcHJvcGVybHlcblx0ICogd2l0aCBhbGwgdmVuZG9yIHBy
ZWZpeGVzLCBpbmNsdWRpbmcgYG1zYC5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IHN0cmlu
Z1xuXHQgKiBAcmV0dXJuIHtzdHJpbmd9XG5cdCAqL1xuXHRmdW5jdGlvbiBoeXBoZW5hdGUoc3Ry
aW5nKSB7XG5cdCAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKF91cHBlcmNhc2VQYXR0ZXJuLCAnLSQx
JykudG9Mb3dlckNhc2UoKTtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBoeXBoZW5hdGU7
XG5cbi8qKiovIH0sXG4vKiAxMDYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywg
X193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgKGMpIDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpc
blx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cblx0ICpcblx0ICogQHR5cGVjaGVja3Ncblx0ICovXG5cdFxuXHQndXNlIHN0cmlj
dCc7XG5cdFxuXHR2YXIgaHlwaGVuYXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDUpO1xuXHRc
blx0dmFyIG1zUGF0dGVybiA9IC9ebXMtLztcblx0XG5cdC8qKlxuXHQgKiBIeXBoZW5hdGVzIGEg
Y2FtZWxjYXNlZCBDU1MgcHJvcGVydHkgbmFtZSwgZm9yIGV4YW1wbGU6XG5cdCAqXG5cdCAqICAg
PiBoeXBoZW5hdGVTdHlsZU5hbWUoJ2JhY2tncm91bmRDb2xvcicpXG5cdCAqICAgPCBcImJhY2tn
cm91bmQtY29sb3JcIlxuXHQgKiAgID4gaHlwaGVuYXRlU3R5bGVOYW1lKCdNb3pUcmFuc2l0aW9u
Jylcblx0ICogICA8IFwiLW1vei10cmFuc2l0aW9uXCJcblx0ICogICA+IGh5cGhlbmF0ZVN0eWxl
TmFtZSgnbXNUcmFuc2l0aW9uJylcblx0ICogICA8IFwiLW1zLXRyYW5zaXRpb25cIlxuXHQgKlxu
XHQgKiBBcyBNb2Rlcm5penIgc3VnZ2VzdHMgKGh0dHA6Ly9tb2Rlcm5penIuY29tL2RvY3MvI3By
ZWZpeGVkKSwgYW4gYG1zYCBwcmVmaXhcblx0ICogaXMgY29udmVydGVkIHRvIGAtbXMtYC5cblx0
ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuXHQgKiBAcmV0dXJuIHtzdHJpbmd9XG5c
dCAqL1xuXHRmdW5jdGlvbiBoeXBoZW5hdGVTdHlsZU5hbWUoc3RyaW5nKSB7XG5cdCAgcmV0dXJu
IGh5cGhlbmF0ZShzdHJpbmcpLnJlcGxhY2UobXNQYXR0ZXJuLCAnLW1zLScpO1xuXHR9XG5cdFxu
XHRtb2R1bGUuZXhwb3J0cyA9IGh5cGhlbmF0ZVN0eWxlTmFtZTtcblxuLyoqKi8gfSxcbi8qIDEw
NyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0J3VzZSBzdHJpY3Qn
O1xuXHRcblx0LyoqXG5cdCAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
blx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQg
KiBAdHlwZWNoZWNrc1xuXHQgKi9cblx0XG5cdC8qKlxuXHQgKiBAcGFyYW0geyp9IG9iamVjdCBU
aGUgb2JqZWN0IHRvIGNoZWNrLlxuXHQgKiBAcmV0dXJuIHtib29sZWFufSBXaGV0aGVyIG9yIG5v
dCB0aGUgb2JqZWN0IGlzIGEgRE9NIG5vZGUuXG5cdCAqL1xuXHRmdW5jdGlvbiBpc05vZGUob2Jq
ZWN0KSB7XG5cdCAgdmFyIGRvYyA9IG9iamVjdCA/IG9iamVjdC5vd25lckRvY3VtZW50IHx8IG9i
amVjdCA6IGRvY3VtZW50O1xuXHQgIHZhciBkZWZhdWx0VmlldyA9IGRvYy5kZWZhdWx0VmlldyB8
fCB3aW5kb3c7XG5cdCAgcmV0dXJuICEhKG9iamVjdCAmJiAodHlwZW9mIGRlZmF1bHRWaWV3Lk5v
ZGUgPT09ICdmdW5jdGlvbicgPyBvYmplY3QgaW5zdGFuY2VvZiBkZWZhdWx0Vmlldy5Ob2RlIDog
dHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgJiYgdHlwZW9mIG9iamVjdC5ub2RlVHlwZSA9PT0g
J251bWJlcicgJiYgdHlwZW9mIG9iamVjdC5ub2RlTmFtZSA9PT0gJ3N0cmluZycpKTtcblx0fVxu
XHRcblx0bW9kdWxlLmV4cG9ydHMgPSBpc05vZGU7XG5cbi8qKiovIH0sXG4vKiAxMDggKi9cbi8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5c
dCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cblx0ICpcblx0ICogQHR5cGVjaGVja3Ncblx0ICovXG5cdFxuXHR2YXIgaXNOb2RlID0gX193
ZWJwYWNrX3JlcXVpcmVfXygxMDcpO1xuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7Kn0gb2JqZWN0
IFRoZSBvYmplY3QgdG8gY2hlY2suXG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59IFdoZXRoZXIgb3Ig
bm90IHRoZSBvYmplY3QgaXMgYSBET00gdGV4dCBub2RlLlxuXHQgKi9cblx0ZnVuY3Rpb24gaXNU
ZXh0Tm9kZShvYmplY3QpIHtcblx0ICByZXR1cm4gaXNOb2RlKG9iamVjdCkgJiYgb2JqZWN0Lm5v
ZGVUeXBlID09IDM7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gaXNUZXh0Tm9kZTtcblxu
LyoqKi8gfSxcbi8qIDEwOSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5c
blx0LyoqXG5cdCAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
XHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0
ICogQHR5cGVjaGVja3Mgc3RhdGljLW9ubHlcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5c
dFxuXHQvKipcblx0ICogTWVtb2l6ZXMgdGhlIHJldHVybiB2YWx1ZSBvZiBhIGZ1bmN0aW9uIHRo
YXQgYWNjZXB0cyBvbmUgc3RyaW5nIGFyZ3VtZW50LlxuXHQgKi9cblx0XG5cdGZ1bmN0aW9uIG1l
bW9pemVTdHJpbmdPbmx5KGNhbGxiYWNrKSB7XG5cdCAgdmFyIGNhY2hlID0ge307XG5cdCAgcmV0
dXJuIGZ1bmN0aW9uIChzdHJpbmcpIHtcblx0ICAgIGlmICghY2FjaGUuaGFzT3duUHJvcGVydHko
c3RyaW5nKSkge1xuXHQgICAgICBjYWNoZVtzdHJpbmddID0gY2FsbGJhY2suY2FsbCh0aGlzLCBz
dHJpbmcpO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIGNhY2hlW3N0cmluZ107XG5cdCAgfTtcblx0
fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBtZW1vaXplU3RyaW5nT25seTtcblxuLyoqKi8gfSxc
bi8qIDExMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5c
dCAqIENvcHlyaWdodCAyMDE1LCBZYWhvbyEgSW5jLlxuXHQgKiBDb3B5cmlnaHRzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBOZXcgQlNEIExpY2Vuc2UuIFNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0Ug
ZmlsZSBmb3IgdGVybXMuXG5cdCAqL1xuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgUkVBQ1Rf
U1RBVElDUyA9IHtcblx0ICAgIGNoaWxkQ29udGV4dFR5cGVzOiB0cnVlLFxuXHQgICAgY29udGV4
dFR5cGVzOiB0cnVlLFxuXHQgICAgZGVmYXVsdFByb3BzOiB0cnVlLFxuXHQgICAgZGlzcGxheU5h
bWU6IHRydWUsXG5cdCAgICBnZXREZWZhdWx0UHJvcHM6IHRydWUsXG5cdCAgICBtaXhpbnM6IHRy
dWUsXG5cdCAgICBwcm9wVHlwZXM6IHRydWUsXG5cdCAgICB0eXBlOiB0cnVlXG5cdH07XG5cdFxu
XHR2YXIgS05PV05fU1RBVElDUyA9IHtcblx0ICBuYW1lOiB0cnVlLFxuXHQgIGxlbmd0aDogdHJ1
ZSxcblx0ICBwcm90b3R5cGU6IHRydWUsXG5cdCAgY2FsbGVyOiB0cnVlLFxuXHQgIGNhbGxlZTog
dHJ1ZSxcblx0ICBhcmd1bWVudHM6IHRydWUsXG5cdCAgYXJpdHk6IHRydWVcblx0fTtcblx0XG5c
dHZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xz
O1xuXHR2YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5
O1xuXHR2YXIgcHJvcElzRW51bWVyYWJsZSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0Vu
dW1lcmFibGU7XG5cdHZhciBnZXRQcm90b3R5cGVPZiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjtc
blx0dmFyIG9iamVjdFByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mICYmIGdldFByb3RvdHlwZU9m
KE9iamVjdCk7XG5cdHZhciBnZXRPd25Qcm9wZXJ0eU5hbWVzID0gT2JqZWN0LmdldE93blByb3Bl
cnR5TmFtZXM7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGhvaXN0Tm9uUmVhY3RT
dGF0aWNzKHRhcmdldENvbXBvbmVudCwgc291cmNlQ29tcG9uZW50LCBibGFja2xpc3QpIHtcblx0
ICAgIGlmICh0eXBlb2Ygc291cmNlQ29tcG9uZW50ICE9PSAnc3RyaW5nJykgeyAvLyBkb24ndCBo
b2lzdCBvdmVyIHN0cmluZyAoaHRtbCkgY29tcG9uZW50c1xuXHRcblx0ICAgICAgICBpZiAob2Jq
ZWN0UHJvdG90eXBlKSB7XG5cdCAgICAgICAgICAgIHZhciBpbmhlcml0ZWRDb21wb25lbnQgPSBn
ZXRQcm90b3R5cGVPZihzb3VyY2VDb21wb25lbnQpO1xuXHQgICAgICAgICAgICBpZiAoaW5oZXJp
dGVkQ29tcG9uZW50ICYmIGluaGVyaXRlZENvbXBvbmVudCAhPT0gb2JqZWN0UHJvdG90eXBlKSB7
XG5cdCAgICAgICAgICAgICAgICBob2lzdE5vblJlYWN0U3RhdGljcyh0YXJnZXRDb21wb25lbnQs
IGluaGVyaXRlZENvbXBvbmVudCwgYmxhY2tsaXN0KTtcblx0ICAgICAgICAgICAgfVxuXHQgICAg
ICAgIH1cblx0XG5cdCAgICAgICAgdmFyIGtleXMgPSBnZXRPd25Qcm9wZXJ0eU5hbWVzKHNvdXJj
ZUNvbXBvbmVudCk7XG5cdFxuXHQgICAgICAgIGlmIChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtc
blx0ICAgICAgICAgICAga2V5cyA9IGtleXMuY29uY2F0KGdldE93blByb3BlcnR5U3ltYm9scyhz
b3VyY2VDb21wb25lbnQpKTtcblx0ICAgICAgICB9XG5cdFxuXHQgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSkge1xuXHQgICAgICAgICAgICB2YXIga2V5ID0ga2V5
c1tpXTtcblx0ICAgICAgICAgICAgaWYgKCFSRUFDVF9TVEFUSUNTW2tleV0gJiYgIUtOT1dOX1NU
QVRJQ1Nba2V5XSAmJiAoIWJsYWNrbGlzdCB8fCAhYmxhY2tsaXN0W2tleV0pKSB7XG5cdCAgICAg
ICAgICAgICAgICAvLyBPbmx5IGhvaXN0IGVudW1lcmFibGVzIGFuZCBub24tZW51bWVyYWJsZSBm
dW5jdGlvbnNcblx0ICAgICAgICAgICAgICAgIGlmKHByb3BJc0VudW1lcmFibGUuY2FsbChzb3Vy
Y2VDb21wb25lbnQsIGtleSkgfHwgdHlwZW9mIHNvdXJjZUNvbXBvbmVudFtrZXldID09PSAnZnVu
Y3Rpb24nKSB7XG5cdCAgICAgICAgICAgICAgICAgICAgdHJ5IHsgLy8gQXZvaWQgZmFpbHVyZXMg
ZnJvbSByZWFkLW9ubHkgcHJvcGVydGllc1xuXHQgICAgICAgICAgICAgICAgICAgICAgICB0YXJn
ZXRDb21wb25lbnRba2V5XSA9IHNvdXJjZUNvbXBvbmVudFtrZXldO1xuXHQgICAgICAgICAgICAg
ICAgICAgIH0gY2F0Y2ggKGUpIHt9XG5cdCAgICAgICAgICAgICAgICB9XG5cdCAgICAgICAgICAg
IH1cblx0ICAgICAgICB9XG5cdFxuXHQgICAgICAgIHJldHVybiB0YXJnZXRDb21wb25lbnQ7XG5c
dCAgICB9XG5cdFxuXHQgICAgcmV0dXJuIHRhcmdldENvbXBvbmVudDtcblx0fTtcblxuXG4vKioq
LyB9LFxuLyogMTExICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFj
a19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJv
b2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICov
XG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQvKipcblx0ICogVXNlIGludmFyaWFudCgpIHRv
IGFzc2VydCBzdGF0ZSB3aGljaCB5b3VyIHByb2dyYW0gYXNzdW1lcyB0byBiZSB0cnVlLlxuXHQg
KlxuXHQgKiBQcm92aWRlIHNwcmludGYtc3R5bGUgZm9ybWF0IChvbmx5ICVzIGlzIHN1cHBvcnRl
ZCkgYW5kIGFyZ3VtZW50c1xuXHQgKiB0byBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHdoYXQg
YnJva2UgYW5kIHdoYXQgeW91IHdlcmVcblx0ICogZXhwZWN0aW5nLlxuXHQgKlxuXHQgKiBUaGUg
aW52YXJpYW50IG1lc3NhZ2Ugd2lsbCBiZSBzdHJpcHBlZCBpbiBwcm9kdWN0aW9uLCBidXQgdGhl
IGludmFyaWFudFxuXHQgKiB3aWxsIHJlbWFpbiB0byBlbnN1cmUgbG9naWMgZG9lcyBub3QgZGlm
ZmVyIGluIHByb2R1Y3Rpb24uXG5cdCAqL1xuXHRcblx0dmFyIGludmFyaWFudCA9IGZ1bmN0aW9u
KGNvbmRpdGlvbiwgZm9ybWF0LCBhLCBiLCBjLCBkLCBlLCBmKSB7XG5cdCAgaWYgKGZhbHNlKSB7
XG5cdCAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcblx0ICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdpbnZhcmlhbnQgcmVxdWlyZXMgYW4gZXJyb3IgbWVzc2FnZSBhcmd1bWVudCcpO1xuXHQg
ICAgfVxuXHQgIH1cblx0XG5cdCAgaWYgKCFjb25kaXRpb24pIHtcblx0ICAgIHZhciBlcnJvcjtc
blx0ICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuXHQgICAgICBlcnJvciA9IG5ldyBF
cnJvcihcblx0ICAgICAgICAnTWluaWZpZWQgZXhjZXB0aW9uIG9jY3VycmVkOyB1c2UgdGhlIG5v
bi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgJyArXG5cdCAgICAgICAgJ2ZvciB0aGUgZnVsbCBl
cnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuJ1xuXHQgICAgICAp
O1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgdmFyIGFyZ3MgPSBbYSwgYiwgYywgZCwgZSwgZl07
XG5cdCAgICAgIHZhciBhcmdJbmRleCA9IDA7XG5cdCAgICAgIGVycm9yID0gbmV3IEVycm9yKFxu
XHQgICAgICAgIGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbigpIHsgcmV0dXJuIGFyZ3Nb
YXJnSW5kZXgrK107IH0pXG5cdCAgICAgICk7XG5cdCAgICAgIGVycm9yLm5hbWUgPSAnSW52YXJp
YW50IFZpb2xhdGlvbic7XG5cdCAgICB9XG5cdFxuXHQgICAgZXJyb3IuZnJhbWVzVG9Qb3AgPSAx
OyAvLyB3ZSBkb24ndCBjYXJlIGFib3V0IGludmFyaWFudCdzIG93biBmcmFtZVxuXHQgICAgdGhy
b3cgZXJyb3I7XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBpbnZhcmlhbnQ7
XG5cblxuLyoqKi8gfSxcbi8qIDExMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRz
LCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0dmFyIFN5bWJvbCA9IF9fd2VicGFja19yZXF1
aXJlX18oNTQpLFxuXHQgICAgZ2V0UmF3VGFnID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMTUpLFxu
XHQgICAgb2JqZWN0VG9TdHJpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExNik7XG5cdFxuXHQv
KiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG5cdHZhciBudWxsVGFn
ID0gJ1tvYmplY3QgTnVsbF0nLFxuXHQgICAgdW5kZWZpbmVkVGFnID0gJ1tvYmplY3QgVW5kZWZp
bmVkXSc7XG5cdFxuXHQvKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cblx0dmFyIHN5
bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xu
XHRcblx0LyoqXG5cdCAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRUYWdgIHdpdGhv
dXQgZmFsbGJhY2tzIGZvciBidWdneSBlbnZpcm9ubWVudHMuXG5cdCAqXG5cdCAqIEBwcml2YXRl
XG5cdCAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuXHQgKiBAcmV0dXJu
cyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBgdG9TdHJpbmdUYWdgLlxuXHQgKi9cblx0ZnVuY3Rpb24g
YmFzZUdldFRhZyh2YWx1ZSkge1xuXHQgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG5cdCAgICByZXR1
cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZFRhZyA6IG51bGxUYWc7XG5cdCAgfVxu
XHQgIHJldHVybiAoc3ltVG9TdHJpbmdUYWcgJiYgc3ltVG9TdHJpbmdUYWcgaW4gT2JqZWN0KHZh
bHVlKSlcblx0ICAgID8gZ2V0UmF3VGFnKHZhbHVlKVxuXHQgICAgOiBvYmplY3RUb1N0cmluZyh2
YWx1ZSk7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gYmFzZUdldFRhZztcblxuXG4vKioq
LyB9LFxuLyogMTEzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQv
KiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi8oZnVuY3Rpb24oZ2xvYmFsKSB7LyoqIERldGVjdCBm
cmVlIHZhcmlhYmxlIGBnbG9iYWxgIGZyb20gTm9kZS5qcy4gKi9cblx0dmFyIGZyZWVHbG9iYWwg
PSB0eXBlb2YgZ2xvYmFsID09ICdvYmplY3QnICYmIGdsb2JhbCAmJiBnbG9iYWwuT2JqZWN0ID09
PSBPYmplY3QgJiYgZ2xvYmFsO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBmcmVlR2xvYmFsO1xu
XHRcblx0LyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIChmdW5jdGlv
bigpIHsgcmV0dXJuIHRoaXM7IH0oKSkpKVxuXG4vKioqLyB9LFxuLyogMTE0ICovXG4vKioqLyBm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIg
b3ZlckFyZyA9IF9fd2VicGFja19yZXF1aXJlX18oMTE3KTtcblx0XG5cdC8qKiBCdWlsdC1pbiB2
YWx1ZSByZWZlcmVuY2VzLiAqL1xuXHR2YXIgZ2V0UHJvdG90eXBlID0gb3ZlckFyZyhPYmplY3Qu
Z2V0UHJvdG90eXBlT2YsIE9iamVjdCk7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGdldFByb3Rv
dHlwZTtcblxuXG4vKioqLyB9LFxuLyogMTE1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4
cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHR2YXIgU3ltYm9sID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg1NCk7XG5cdFxuXHQvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVy
ZW5jZXMuICovXG5cdHZhciBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cdFxuXHQv
KiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cblx0dmFyIGhh
c093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cdFxuXHQvKipcblx0
ICogVXNlZCB0byByZXNvbHZlIHRoZVxuXHQgKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEt
aW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0
cmluZylcblx0ICogb2YgdmFsdWVzLlxuXHQgKi9cblx0dmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5n
ID0gb2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cdFxuXHQvKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJl
bmNlcy4gKi9cblx0dmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5n
VGFnIDogdW5kZWZpbmVkO1xuXHRcblx0LyoqXG5cdCAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBv
ZiBgYmFzZUdldFRhZ2Agd2hpY2ggaWdub3JlcyBgU3ltYm9sLnRvU3RyaW5nVGFnYCB2YWx1ZXMu
XG5cdCAqXG5cdCAqIEBwcml2YXRlXG5cdCAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRv
IHF1ZXJ5LlxuXHQgKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSByYXcgYHRvU3RyaW5n
VGFnYC5cblx0ICovXG5cdGZ1bmN0aW9uIGdldFJhd1RhZyh2YWx1ZSkge1xuXHQgIHZhciBpc093
biA9IGhhc093blByb3BlcnR5LmNhbGwodmFsdWUsIHN5bVRvU3RyaW5nVGFnKSxcblx0ICAgICAg
dGFnID0gdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuXHRcblx0ICB0cnkge1xuXHQgICAgdmFsdWVb
c3ltVG9TdHJpbmdUYWddID0gdW5kZWZpbmVkO1xuXHQgICAgdmFyIHVubWFza2VkID0gdHJ1ZTtc
blx0ICB9IGNhdGNoIChlKSB7fVxuXHRcblx0ICB2YXIgcmVzdWx0ID0gbmF0aXZlT2JqZWN0VG9T
dHJpbmcuY2FsbCh2YWx1ZSk7XG5cdCAgaWYgKHVubWFza2VkKSB7XG5cdCAgICBpZiAoaXNPd24p
IHtcblx0ICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdGFnO1xuXHQgICAgfSBlbHNlIHtc
blx0ICAgICAgZGVsZXRlIHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtcblx0ICAgIH1cblx0ICB9XG5c
dCAgcmV0dXJuIHJlc3VsdDtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBnZXRSYXdUYWc7
XG5cblxuLyoqKi8gfSxcbi8qIDExNiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRz
KSB7XG5cblx0LyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xuXHR2
YXIgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXHRcblx0LyoqXG5cdCAqIFVzZWQg
dG8gcmVzb2x2ZSB0aGVcblx0ICogW2B0b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0
aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG5c
dCAqIG9mIHZhbHVlcy5cblx0ICovXG5cdHZhciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVj
dFByb3RvLnRvU3RyaW5nO1xuXHRcblx0LyoqXG5cdCAqIENvbnZlcnRzIGB2YWx1ZWAgdG8gYSBz
dHJpbmcgdXNpbmcgYE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmdgLlxuXHQgKlxuXHQgKiBAcHJp
dmF0ZVxuXHQgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjb252ZXJ0LlxuXHQgKiBA
cmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuXHQgKi9cblx0
ZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcodmFsdWUpIHtcblx0ICByZXR1cm4gbmF0aXZlT2JqZWN0
VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gb2JqZWN0
VG9TdHJpbmc7XG5cblxuLyoqKi8gfSxcbi8qIDExNyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENyZWF0ZXMgYSB1bmFyeSBmdW5jdGlvbiB0aGF0
IGludm9rZXMgYGZ1bmNgIHdpdGggaXRzIGFyZ3VtZW50IHRyYW5zZm9ybWVkLlxuXHQgKlxuXHQg
KiBAcHJpdmF0ZVxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3
cmFwLlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIGFyZ3VtZW50IHRyYW5z
Zm9ybS5cblx0ICogQHJldHVybnMge0Z1bmN0aW9ufSBSZXR1cm5zIHRoZSBuZXcgZnVuY3Rpb24u
XG5cdCAqL1xuXHRmdW5jdGlvbiBvdmVyQXJnKGZ1bmMsIHRyYW5zZm9ybSkge1xuXHQgIHJldHVy
biBmdW5jdGlvbihhcmcpIHtcblx0ICAgIHJldHVybiBmdW5jKHRyYW5zZm9ybShhcmcpKTtcblx0
ICB9O1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IG92ZXJBcmc7XG5cblxuLyoqKi8gfSxc
bi8qIDExOCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVx
dWlyZV9fKSB7XG5cblx0dmFyIGZyZWVHbG9iYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExMyk7
XG5cdFxuXHQvKiogRGV0ZWN0IGZyZWUgdmFyaWFibGUgYHNlbGZgLiAqL1xuXHR2YXIgZnJlZVNl
bGYgPSB0eXBlb2Ygc2VsZiA9PSAnb2JqZWN0JyAmJiBzZWxmICYmIHNlbGYuT2JqZWN0ID09PSBP
YmplY3QgJiYgc2VsZjtcblx0XG5cdC8qKiBVc2VkIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9i
YWwgb2JqZWN0LiAqL1xuXHR2YXIgcm9vdCA9IGZyZWVHbG9iYWwgfHwgZnJlZVNlbGYgfHwgRnVu
Y3Rpb24oJ3JldHVybiB0aGlzJykoKTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gcm9vdDtcblxu
XG4vKioqLyB9LFxuLyogMTE5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtc
blxuXHQvKipcblx0ICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUg
aXMgb2JqZWN0LWxpa2UgaWYgaXQncyBub3QgYG51bGxgXG5cdCAqIGFuZCBoYXMgYSBgdHlwZW9m
YCByZXN1bHQgb2YgXCJvYmplY3RcIi5cblx0ICpcblx0ICogQHN0YXRpY1xuXHQgKiBAbWVtYmVy
T2YgX1xuXHQgKiBAc2luY2UgNC4wLjBcblx0ICogQGNhdGVnb3J5IExhbmdcblx0ICogQHBhcmFt
IHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG5cdCAqIEByZXR1cm5zIHtib29sZWFufSBS
ZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIG9iamVjdC1saWtlLCBlbHNlIGBmYWxzZWAuXG5c
dCAqIEBleGFtcGxlXG5cdCAqXG5cdCAqIF8uaXNPYmplY3RMaWtlKHt9KTtcblx0ICogLy8gPT4g
dHJ1ZVxuXHQgKlxuXHQgKiBfLmlzT2JqZWN0TGlrZShbMSwgMiwgM10pO1xuXHQgKiAvLyA9PiB0
cnVlXG5cdCAqXG5cdCAqIF8uaXNPYmplY3RMaWtlKF8ubm9vcCk7XG5cdCAqIC8vID0+IGZhbHNl
XG5cdCAqXG5cdCAqIF8uaXNPYmplY3RMaWtlKG51bGwpO1xuXHQgKiAvLyA9PiBmYWxzZVxuXHQg
Ki9cblx0ZnVuY3Rpb24gaXNPYmplY3RMaWtlKHZhbHVlKSB7XG5cdCAgcmV0dXJuIHZhbHVlICE9
IG51bGwgJiYgdHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhw
b3J0cyA9IGlzT2JqZWN0TGlrZTtcblxuXG4vKioqLyB9LFxuLyogMTIwICovXG4vKioqLyBmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0
cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5c
dFxuXHRpZiAoZmFsc2UpIHtcblx0ICB2YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIv
aW52YXJpYW50Jyk7XG5cdCAgdmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5n
Jyk7XG5cdCAgdmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQ
cm9wVHlwZXNTZWNyZXQnKTtcblx0ICB2YXIgbG9nZ2VkVHlwZUZhaWx1cmVzID0ge307XG5cdH1c
blx0XG5cdC8qKlxuXHQgKiBBc3NlcnQgdGhhdCB0aGUgdmFsdWVzIG1hdGNoIHdpdGggdGhlIHR5
cGUgc3BlY3MuXG5cdCAqIEVycm9yIG1lc3NhZ2VzIGFyZSBtZW1vcml6ZWQgYW5kIHdpbGwgb25s
eSBiZSBzaG93biBvbmNlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gdHlwZVNwZWNzIE1h
cCBvZiBuYW1lIHRvIGEgUmVhY3RQcm9wVHlwZVxuXHQgKiBAcGFyYW0ge29iamVjdH0gdmFsdWVz
IFJ1bnRpbWUgdmFsdWVzIHRoYXQgbmVlZCB0byBiZSB0eXBlLWNoZWNrZWRcblx0ICogQHBhcmFt
IHtzdHJpbmd9IGxvY2F0aW9uIGUuZy4gXCJwcm9wXCIsIFwiY29udGV4dFwiLCBcImNoaWxkIGNv
bnRleHRcIlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gY29tcG9uZW50TmFtZSBOYW1lIG9mIHRoZSBj
b21wb25lbnQgZm9yIGVycm9yIG1lc3NhZ2VzLlxuXHQgKiBAcGFyYW0gez9GdW5jdGlvbn0gZ2V0
U3RhY2sgUmV0dXJucyB0aGUgY29tcG9uZW50IHN0YWNrLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9c
blx0ZnVuY3Rpb24gY2hlY2tQcm9wVHlwZXModHlwZVNwZWNzLCB2YWx1ZXMsIGxvY2F0aW9uLCBj
b21wb25lbnROYW1lLCBnZXRTdGFjaykge1xuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgZm9yICh2
YXIgdHlwZVNwZWNOYW1lIGluIHR5cGVTcGVjcykge1xuXHQgICAgICBpZiAodHlwZVNwZWNzLmhh
c093blByb3BlcnR5KHR5cGVTcGVjTmFtZSkpIHtcblx0ICAgICAgICB2YXIgZXJyb3I7XG5cdCAg
ICAgICAgLy8gUHJvcCB0eXBlIHZhbGlkYXRpb24gbWF5IHRocm93LiBJbiBjYXNlIHRoZXkgZG8s
IHdlIGRvbid0IHdhbnQgdG9cblx0ICAgICAgICAvLyBmYWlsIHRoZSByZW5kZXIgcGhhc2Ugd2hl
cmUgaXQgZGlkbid0IGZhaWwgYmVmb3JlLiBTbyB3ZSBsb2cgaXQuXG5cdCAgICAgICAgLy8gQWZ0
ZXIgdGhlc2UgaGF2ZSBiZWVuIGNsZWFuZWQgdXAsIHdlJ2xsIGxldCB0aGVtIHRocm93LlxuXHQg
ICAgICAgIHRyeSB7XG5cdCAgICAgICAgICAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgYW4gaW52
YXJpYW50IHRoYXQgZ2V0cyBjYXVnaHQuIEl0J3MgdGhlIHNhbWVcblx0ICAgICAgICAgIC8vIGJl
aGF2aW9yIGFzIHdpdGhvdXQgdGhpcyBzdGF0ZW1lbnQgZXhjZXB0IHdpdGggYSBiZXR0ZXIgbWVz
c2FnZS5cblx0ICAgICAgICAgIGludmFyaWFudCh0eXBlb2YgdHlwZVNwZWNzW3R5cGVTcGVjTmFt
ZV0gPT09ICdmdW5jdGlvbicsICclczogJXMgdHlwZSBgJXNgIGlzIGludmFsaWQ7IGl0IG11c3Qg
YmUgYSBmdW5jdGlvbiwgdXN1YWxseSBmcm9tICcgKyAnUmVhY3QuUHJvcFR5cGVzLicsIGNvbXBv
bmVudE5hbWUgfHwgJ1JlYWN0IGNsYXNzJywgbG9jYXRpb24sIHR5cGVTcGVjTmFtZSk7XG5cdCAg
ICAgICAgICBlcnJvciA9IHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdKHZhbHVlcywgdHlwZVNwZWNO
YW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgbnVsbCwgUmVhY3RQcm9wVHlwZXNTZWNyZXQp
O1xuXHQgICAgICAgIH0gY2F0Y2ggKGV4KSB7XG5cdCAgICAgICAgICBlcnJvciA9IGV4O1xuXHQg
ICAgICAgIH1cblx0ICAgICAgICB3YXJuaW5nKCFlcnJvciB8fCBlcnJvciBpbnN0YW5jZW9mIEVy
cm9yLCAnJXM6IHR5cGUgc3BlY2lmaWNhdGlvbiBvZiAlcyBgJXNgIGlzIGludmFsaWQ7IHRoZSB0
eXBlIGNoZWNrZXIgJyArICdmdW5jdGlvbiBtdXN0IHJldHVybiBgbnVsbGAgb3IgYW4gYEVycm9y
YCBidXQgcmV0dXJuZWQgYSAlcy4gJyArICdZb3UgbWF5IGhhdmUgZm9yZ290dGVuIHRvIHBhc3Mg
YW4gYXJndW1lbnQgdG8gdGhlIHR5cGUgY2hlY2tlciAnICsgJ2NyZWF0b3IgKGFycmF5T2YsIGlu
c3RhbmNlT2YsIG9iamVjdE9mLCBvbmVPZiwgb25lT2ZUeXBlLCBhbmQgJyArICdzaGFwZSBhbGwg
cmVxdWlyZSBhbiBhcmd1bWVudCkuJywgY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnLCBs
b2NhdGlvbiwgdHlwZVNwZWNOYW1lLCB0eXBlb2YgZXJyb3IpO1xuXHQgICAgICAgIGlmIChlcnJv
ciBpbnN0YW5jZW9mIEVycm9yICYmICEoZXJyb3IubWVzc2FnZSBpbiBsb2dnZWRUeXBlRmFpbHVy
ZXMpKSB7XG5cdCAgICAgICAgICAvLyBPbmx5IG1vbml0b3IgdGhpcyBmYWlsdXJlIG9uY2UgYmVj
YXVzZSB0aGVyZSB0ZW5kcyB0byBiZSBhIGxvdCBvZiB0aGVcblx0ICAgICAgICAgIC8vIHNhbWUg
ZXJyb3IuXG5cdCAgICAgICAgICBsb2dnZWRUeXBlRmFpbHVyZXNbZXJyb3IubWVzc2FnZV0gPSB0
cnVlO1xuXHRcblx0ICAgICAgICAgIHZhciBzdGFjayA9IGdldFN0YWNrID8gZ2V0U3RhY2soKSA6
ICcnO1xuXHRcblx0ICAgICAgICAgIHdhcm5pbmcoZmFsc2UsICdGYWlsZWQgJXMgdHlwZTogJXMl
cycsIGxvY2F0aW9uLCBlcnJvci5tZXNzYWdlLCBzdGFjayAhPSBudWxsID8gc3RhY2sgOiAnJyk7
XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cdFxuXHRtb2R1
bGUuZXhwb3J0cyA9IGNoZWNrUHJvcFR5cGVzO1xuXG5cbi8qKiovIH0sXG4vKiAxMjEgKi9cbi8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5c
dC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKi9cblx0XG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdHZhciBlbXB0eUZ1bmN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtc
blx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdHZhciBSZWFjdFBy
b3BUeXBlc1NlY3JldCA9IF9fd2VicGFja19yZXF1aXJlX18oNTcpO1xuXHRcblx0bW9kdWxlLmV4
cG9ydHMgPSBmdW5jdGlvbigpIHtcblx0ICBmdW5jdGlvbiBzaGltKHByb3BzLCBwcm9wTmFtZSwg
Y29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG5cdCAgICBp
ZiAoc2VjcmV0ID09PSBSZWFjdFByb3BUeXBlc1NlY3JldCkge1xuXHQgICAgICAvLyBJdCBpcyBz
dGlsbCBzYWZlIHdoZW4gY2FsbGVkIGZyb20gUmVhY3QuXG5cdCAgICAgIHJldHVybjtcblx0ICAg
IH1cblx0ICAgIGludmFyaWFudChcblx0ICAgICAgZmFsc2UsXG5cdCAgICAgICdDYWxsaW5nIFBy
b3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9w
LXR5cGVzYCBwYWNrYWdlLiAnICtcblx0ICAgICAgJ1VzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlw
ZXMoKSB0byBjYWxsIHRoZW0uICcgK1xuXHQgICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5t
ZS91c2UtY2hlY2stcHJvcC10eXBlcydcblx0ICAgICk7XG5cdCAgfTtcblx0ICBzaGltLmlzUmVx
dWlyZWQgPSBzaGltO1xuXHQgIGZ1bmN0aW9uIGdldFNoaW0oKSB7XG5cdCAgICByZXR1cm4gc2hp
bTtcblx0ICB9O1xuXHQgIC8vIEltcG9ydGFudCFcblx0ICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBz
eW5jIHdpdGggcHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJz
LmpzYC5cblx0ICB2YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG5cdCAgICBhcnJheTogc2hpbSxcblx0
ICAgIGJvb2w6IHNoaW0sXG5cdCAgICBmdW5jOiBzaGltLFxuXHQgICAgbnVtYmVyOiBzaGltLFxu
XHQgICAgb2JqZWN0OiBzaGltLFxuXHQgICAgc3RyaW5nOiBzaGltLFxuXHQgICAgc3ltYm9sOiBz
aGltLFxuXHRcblx0ICAgIGFueTogc2hpbSxcblx0ICAgIGFycmF5T2Y6IGdldFNoaW0sXG5cdCAg
ICBlbGVtZW50OiBzaGltLFxuXHQgICAgaW5zdGFuY2VPZjogZ2V0U2hpbSxcblx0ICAgIG5vZGU6
IHNoaW0sXG5cdCAgICBvYmplY3RPZjogZ2V0U2hpbSxcblx0ICAgIG9uZU9mOiBnZXRTaGltLFxu
XHQgICAgb25lT2ZUeXBlOiBnZXRTaGltLFxuXHQgICAgc2hhcGU6IGdldFNoaW1cblx0ICB9O1xu
XHRcblx0ICBSZWFjdFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcyA9IGVtcHR5RnVuY3Rpb247XG5c
dCAgUmVhY3RQcm9wVHlwZXMuUHJvcFR5cGVzID0gUmVhY3RQcm9wVHlwZXM7XG5cdFxuXHQgIHJl
dHVybiBSZWFjdFByb3BUeXBlcztcblx0fTtcblxuXG4vKioqLyB9LFxuLyogMTIyICovXG4vKioq
LyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQv
Kipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICovXG5cdFxuXHQndXNlIHN0cmlj
dCc7XG5cdFxuXHR2YXIgZW1wdHlGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG5c
dHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHR2YXIgd2FybmluZyA9
IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cdFxuXHR2YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU3KTtcblx0dmFyIGNoZWNrUHJvcFR5cGVzID0gX193ZWJw
YWNrX3JlcXVpcmVfXygxMjApO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpc1Zh
bGlkRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcykge1xuXHQgIC8qIGdsb2JhbCBTeW1ib2wg
Ki9cblx0ICB2YXIgSVRFUkFUT1JfU1lNQk9MID0gdHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9u
JyAmJiBTeW1ib2wuaXRlcmF0b3I7XG5cdCAgdmFyIEZBVVhfSVRFUkFUT1JfU1lNQk9MID0gJ0BA
aXRlcmF0b3InOyAvLyBCZWZvcmUgU3ltYm9sIHNwZWMuXG5cdFxuXHQgIC8qKlxuXHQgICAqIFJl
dHVybnMgdGhlIGl0ZXJhdG9yIG1ldGhvZCBmdW5jdGlvbiBjb250YWluZWQgb24gdGhlIGl0ZXJh
YmxlIG9iamVjdC5cblx0ICAgKlxuXHQgICAqIEJlIHN1cmUgdG8gaW52b2tlIHRoZSBmdW5jdGlv
biB3aXRoIHRoZSBpdGVyYWJsZSBhcyBjb250ZXh0OlxuXHQgICAqXG5cdCAgICogICAgIHZhciBp
dGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihteUl0ZXJhYmxlKTtcblx0ICAgKiAgICAgaWYgKGl0
ZXJhdG9yRm4pIHtcblx0ICAgKiAgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwo
bXlJdGVyYWJsZSk7XG5cdCAgICogICAgICAgLi4uXG5cdCAgICogICAgIH1cblx0ICAgKlxuXHQg
ICAqIEBwYXJhbSB7P29iamVjdH0gbWF5YmVJdGVyYWJsZVxuXHQgICAqIEByZXR1cm4gez9mdW5j
dGlvbn1cblx0ICAgKi9cblx0ICBmdW5jdGlvbiBnZXRJdGVyYXRvckZuKG1heWJlSXRlcmFibGUp
IHtcblx0ICAgIHZhciBpdGVyYXRvckZuID0gbWF5YmVJdGVyYWJsZSAmJiAoSVRFUkFUT1JfU1lN
Qk9MICYmIG1heWJlSXRlcmFibGVbSVRFUkFUT1JfU1lNQk9MXSB8fCBtYXliZUl0ZXJhYmxlW0ZB
VVhfSVRFUkFUT1JfU1lNQk9MXSk7XG5cdCAgICBpZiAodHlwZW9mIGl0ZXJhdG9yRm4gPT09ICdm
dW5jdGlvbicpIHtcblx0ICAgICAgcmV0dXJuIGl0ZXJhdG9yRm47XG5cdCAgICB9XG5cdCAgfVxu
XHRcblx0ICAvKipcblx0ICAgKiBDb2xsZWN0aW9uIG9mIG1ldGhvZHMgdGhhdCBhbGxvdyBkZWNs
YXJhdGlvbiBhbmQgdmFsaWRhdGlvbiBvZiBwcm9wcyB0aGF0IGFyZVxuXHQgICAqIHN1cHBsaWVk
IHRvIFJlYWN0IGNvbXBvbmVudHMuIEV4YW1wbGUgdXNhZ2U6XG5cdCAgICpcblx0ICAgKiAgIHZh
ciBQcm9wcyA9IHJlcXVpcmUoJ1JlYWN0UHJvcFR5cGVzJyk7XG5cdCAgICogICB2YXIgTXlBcnRp
Y2xlID0gUmVhY3QuY3JlYXRlQ2xhc3Moe1xuXHQgICAqICAgICBwcm9wVHlwZXM6IHtcblx0ICAg
KiAgICAgICAvLyBBbiBvcHRpb25hbCBzdHJpbmcgcHJvcCBuYW1lZCBcImRlc2NyaXB0aW9uXCIu
XG5cdCAgICogICAgICAgZGVzY3JpcHRpb246IFByb3BzLnN0cmluZyxcblx0ICAgKlxuXHQgICAq
ICAgICAgIC8vIEEgcmVxdWlyZWQgZW51bSBwcm9wIG5hbWVkIFwiY2F0ZWdvcnlcIi5cblx0ICAg
KiAgICAgICBjYXRlZ29yeTogUHJvcHMub25lT2YoWydOZXdzJywnUGhvdG9zJ10pLmlzUmVxdWly
ZWQsXG5cdCAgICpcblx0ICAgKiAgICAgICAvLyBBIHByb3AgbmFtZWQgXCJkaWFsb2dcIiB0aGF0
IHJlcXVpcmVzIGFuIGluc3RhbmNlIG9mIERpYWxvZy5cblx0ICAgKiAgICAgICBkaWFsb2c6IFBy
b3BzLmluc3RhbmNlT2YoRGlhbG9nKS5pc1JlcXVpcmVkXG5cdCAgICogICAgIH0sXG5cdCAgICog
ICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7IC4uLiB9XG5cdCAgICogICB9KTtcblx0ICAgKlxuXHQg
ICAqIEEgbW9yZSBmb3JtYWwgc3BlY2lmaWNhdGlvbiBvZiBob3cgdGhlc2UgbWV0aG9kcyBhcmUg
dXNlZDpcblx0ICAgKlxuXHQgICAqICAgdHlwZSA6PSBhcnJheXxib29sfGZ1bmN8b2JqZWN0fG51
bWJlcnxzdHJpbmd8b25lT2YoWy4uLl0pfGluc3RhbmNlT2YoLi4uKVxuXHQgICAqICAgZGVjbCA6
PSBSZWFjdFByb3BUeXBlcy57dHlwZX0oLmlzUmVxdWlyZWQpP1xuXHQgICAqXG5cdCAgICogRWFj
aCBhbmQgZXZlcnkgZGVjbGFyYXRpb24gcHJvZHVjZXMgYSBmdW5jdGlvbiB3aXRoIHRoZSBzYW1l
IHNpZ25hdHVyZS4gVGhpc1xuXHQgICAqIGFsbG93cyB0aGUgY3JlYXRpb24gb2YgY3VzdG9tIHZh
bGlkYXRpb24gZnVuY3Rpb25zLiBGb3IgZXhhbXBsZTpcblx0ICAgKlxuXHQgICAqICB2YXIgTXlM
aW5rID0gUmVhY3QuY3JlYXRlQ2xhc3Moe1xuXHQgICAqICAgIHByb3BUeXBlczoge1xuXHQgICAq
ICAgICAgLy8gQW4gb3B0aW9uYWwgc3RyaW5nIG9yIFVSSSBwcm9wIG5hbWVkIFwiaHJlZlwiLlxu
XHQgICAqICAgICAgaHJlZjogZnVuY3Rpb24ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1l
KSB7XG5cdCAgICogICAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG5cdCAg
ICogICAgICAgIGlmIChwcm9wVmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgcHJvcFZhbHVlICE9PSAn
c3RyaW5nJyAmJlxuXHQgICAqICAgICAgICAgICAgIShwcm9wVmFsdWUgaW5zdGFuY2VvZiBVUkkp
KSB7XG5cdCAgICogICAgICAgICAgcmV0dXJuIG5ldyBFcnJvcihcblx0ICAgKiAgICAgICAgICAg
ICdFeHBlY3RlZCBhIHN0cmluZyBvciBhbiBVUkkgZm9yICcgKyBwcm9wTmFtZSArICcgaW4gJyAr
XG5cdCAgICogICAgICAgICAgICBjb21wb25lbnROYW1lXG5cdCAgICogICAgICAgICAgKTtcblx0
ICAgKiAgICAgICAgfVxuXHQgICAqICAgICAgfVxuXHQgICAqICAgIH0sXG5cdCAgICogICAgcmVu
ZGVyOiBmdW5jdGlvbigpIHsuLi59XG5cdCAgICogIH0pO1xuXHQgICAqXG5cdCAgICogQGludGVy
bmFsXG5cdCAgICovXG5cdFxuXHQgIHZhciBBTk9OWU1PVVMgPSAnPDxhbm9ueW1vdXM+Pic7XG5c
dFxuXHQgIC8vIEltcG9ydGFudCFcblx0ICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBzeW5jIHdpdGgg
cHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcy5qc2AuXG5c
dCAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xuXHQgICAgYXJyYXk6IGNyZWF0ZVByaW1pdGl2ZVR5
cGVDaGVja2VyKCdhcnJheScpLFxuXHQgICAgYm9vbDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNr
ZXIoJ2Jvb2xlYW4nKSxcblx0ICAgIGZ1bmM6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdm
dW5jdGlvbicpLFxuXHQgICAgbnVtYmVyOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignbnVt
YmVyJyksXG5cdCAgICBvYmplY3Q6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdvYmplY3Qn
KSxcblx0ICAgIHN0cmluZzogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ3N0cmluZycpLFxu
XHQgICAgc3ltYm9sOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignc3ltYm9sJyksXG5cdFxu
XHQgICAgYW55OiBjcmVhdGVBbnlUeXBlQ2hlY2tlcigpLFxuXHQgICAgYXJyYXlPZjogY3JlYXRl
QXJyYXlPZlR5cGVDaGVja2VyLFxuXHQgICAgZWxlbWVudDogY3JlYXRlRWxlbWVudFR5cGVDaGVj
a2VyKCksXG5cdCAgICBpbnN0YW5jZU9mOiBjcmVhdGVJbnN0YW5jZVR5cGVDaGVja2VyLFxuXHQg
ICAgbm9kZTogY3JlYXRlTm9kZUNoZWNrZXIoKSxcblx0ICAgIG9iamVjdE9mOiBjcmVhdGVPYmpl
Y3RPZlR5cGVDaGVja2VyLFxuXHQgICAgb25lT2Y6IGNyZWF0ZUVudW1UeXBlQ2hlY2tlcixcblx0
ICAgIG9uZU9mVHlwZTogY3JlYXRlVW5pb25UeXBlQ2hlY2tlcixcblx0ICAgIHNoYXBlOiBjcmVh
dGVTaGFwZVR5cGVDaGVja2VyXG5cdCAgfTtcblx0XG5cdCAgLyoqXG5cdCAgICogaW5saW5lZCBP
YmplY3QuaXMgcG9seWZpbGwgdG8gYXZvaWQgcmVxdWlyaW5nIGNvbnN1bWVycyBzaGlwIHRoZWly
IG93blxuXHQgICAqIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2Vi
L0phdmFTY3JpcHQvUmVmZXJlbmNlL0dsb2JhbF9PYmplY3RzL09iamVjdC9pc1xuXHQgICAqL1xu
XHQgIC8qZXNsaW50LWRpc2FibGUgbm8tc2VsZi1jb21wYXJlKi9cblx0ICBmdW5jdGlvbiBpcyh4
LCB5KSB7XG5cdCAgICAvLyBTYW1lVmFsdWUgYWxnb3JpdGhtXG5cdCAgICBpZiAoeCA9PT0geSkg
e1xuXHQgICAgICAvLyBTdGVwcyAxLTUsIDctMTBcblx0ICAgICAgLy8gU3RlcHMgNi5iLTYuZTog
KzAgIT0gLTBcblx0ICAgICAgcmV0dXJuIHggIT09IDAgfHwgMSAvIHggPT09IDEgLyB5O1xuXHQg
ICAgfSBlbHNlIHtcblx0ICAgICAgLy8gU3RlcCA2LmE6IE5hTiA9PSBOYU5cblx0ICAgICAgcmV0
dXJuIHggIT09IHggJiYgeSAhPT0geTtcblx0ICAgIH1cblx0ICB9XG5cdCAgLyplc2xpbnQtZW5h
YmxlIG5vLXNlbGYtY29tcGFyZSovXG5cdFxuXHQgIC8qKlxuXHQgICAqIFdlIHVzZSBhbiBFcnJv
ci1saWtlIG9iamVjdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBhcyBwZW9wbGUgbWF5IGNh
bGxcblx0ICAgKiBQcm9wVHlwZXMgZGlyZWN0bHkgYW5kIGluc3BlY3QgdGhlaXIgb3V0cHV0LiBI
b3dldmVyLCB3ZSBkb24ndCB1c2UgcmVhbFxuXHQgICAqIEVycm9ycyBhbnltb3JlLiBXZSBkb24n
dCBpbnNwZWN0IHRoZWlyIHN0YWNrIGFueXdheSwgYW5kIGNyZWF0aW5nIHRoZW1cblx0ICAgKiBp
cyBwcm9oaWJpdGl2ZWx5IGV4cGVuc2l2ZSBpZiB0aGV5IGFyZSBjcmVhdGVkIHRvbyBvZnRlbiwg
c3VjaCBhcyB3aGF0XG5cdCAgICogaGFwcGVucyBpbiBvbmVPZlR5cGUoKSBmb3IgYW55IHR5cGUg
YmVmb3JlIHRoZSBvbmUgdGhhdCBtYXRjaGVkLlxuXHQgICAqL1xuXHQgIGZ1bmN0aW9uIFByb3BU
eXBlRXJyb3IobWVzc2FnZSkge1xuXHQgICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcblx0ICAg
IHRoaXMuc3RhY2sgPSAnJztcblx0ICB9XG5cdCAgLy8gTWFrZSBgaW5zdGFuY2VvZiBFcnJvcmAg
c3RpbGwgd29yayBmb3IgcmV0dXJuZWQgZXJyb3JzLlxuXHQgIFByb3BUeXBlRXJyb3IucHJvdG90
eXBlID0gRXJyb3IucHJvdG90eXBlO1xuXHRcblx0ICBmdW5jdGlvbiBjcmVhdGVDaGFpbmFibGVU
eXBlQ2hlY2tlcih2YWxpZGF0ZSkge1xuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHZhciBt
YW51YWxQcm9wVHlwZUNhbGxDYWNoZSA9IHt9O1xuXHQgICAgICB2YXIgbWFudWFsUHJvcFR5cGVX
YXJuaW5nQ291bnQgPSAwO1xuXHQgICAgfVxuXHQgICAgZnVuY3Rpb24gY2hlY2tUeXBlKGlzUmVx
dWlyZWQsIHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxs
TmFtZSwgc2VjcmV0KSB7XG5cdCAgICAgIGNvbXBvbmVudE5hbWUgPSBjb21wb25lbnROYW1lIHx8
IEFOT05ZTU9VUztcblx0ICAgICAgcHJvcEZ1bGxOYW1lID0gcHJvcEZ1bGxOYW1lIHx8IHByb3BO
YW1lO1xuXHRcblx0ICAgICAgaWYgKHNlY3JldCAhPT0gUmVhY3RQcm9wVHlwZXNTZWNyZXQpIHtc
blx0ICAgICAgICBpZiAodGhyb3dPbkRpcmVjdEFjY2Vzcykge1xuXHQgICAgICAgICAgLy8gTmV3
IGJlaGF2aW9yIG9ubHkgZm9yIHVzZXJzIG9mIGBwcm9wLXR5cGVzYCBwYWNrYWdlXG5cdCAgICAg
ICAgICBpbnZhcmlhbnQoXG5cdCAgICAgICAgICAgIGZhbHNlLFxuXHQgICAgICAgICAgICAnQ2Fs
bGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRo
ZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG5cdCAgICAgICAgICAgICdVc2UgYFByb3BUeXBl
cy5jaGVja1Byb3BUeXBlcygpYCB0byBjYWxsIHRoZW0uICcgK1xuXHQgICAgICAgICAgICAnUmVh
ZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcydcblx0ICAgICAgICAg
ICk7XG5cdCAgICAgICAgfSBlbHNlIGlmIChmYWxzZSkge1xuXHQgICAgICAgICAgLy8gT2xkIGJl
aGF2aW9yIGZvciBwZW9wbGUgdXNpbmcgUmVhY3QuUHJvcFR5cGVzXG5cdCAgICAgICAgICB2YXIg
Y2FjaGVLZXkgPSBjb21wb25lbnROYW1lICsgJzonICsgcHJvcE5hbWU7XG5cdCAgICAgICAgICBp
ZiAoXG5cdCAgICAgICAgICAgICFtYW51YWxQcm9wVHlwZUNhbGxDYWNoZVtjYWNoZUtleV0gJiZc
blx0ICAgICAgICAgICAgLy8gQXZvaWQgc3BhbW1pbmcgdGhlIGNvbnNvbGUgYmVjYXVzZSB0aGV5
IGFyZSBvZnRlbiBub3QgYWN0aW9uYWJsZSBleGNlcHQgZm9yIGxpYiBhdXRob3JzXG5cdCAgICAg
ICAgICAgIG1hbnVhbFByb3BUeXBlV2FybmluZ0NvdW50IDwgM1xuXHQgICAgICAgICAgKSB7XG5c
dCAgICAgICAgICAgIHdhcm5pbmcoXG5cdCAgICAgICAgICAgICAgZmFsc2UsXG5cdCAgICAgICAg
ICAgICAgJ1lvdSBhcmUgbWFudWFsbHkgY2FsbGluZyBhIFJlYWN0LlByb3BUeXBlcyB2YWxpZGF0
aW9uICcgK1xuXHQgICAgICAgICAgICAgICdmdW5jdGlvbiBmb3IgdGhlIGAlc2AgcHJvcCBvbiBg
JXNgLiBUaGlzIGlzIGRlcHJlY2F0ZWQgJyArXG5cdCAgICAgICAgICAgICAgJ2FuZCB3aWxsIHRo
cm93IGluIHRoZSBzdGFuZGFsb25lIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcblx0ICAgICAg
ICAgICAgICAnWW91IG1heSBiZSBzZWVpbmcgdGhpcyB3YXJuaW5nIGR1ZSB0byBhIHRoaXJkLXBh
cnR5IFByb3BUeXBlcyAnICtcblx0ICAgICAgICAgICAgICAnbGlicmFyeS4gU2VlIGh0dHBzOi8v
ZmIubWUvcmVhY3Qtd2FybmluZy1kb250LWNhbGwtcHJvcHR5cGVzICcgKyAnZm9yIGRldGFpbHMu
Jyxcblx0ICAgICAgICAgICAgICBwcm9wRnVsbE5hbWUsXG5cdCAgICAgICAgICAgICAgY29tcG9u
ZW50TmFtZVxuXHQgICAgICAgICAgICApO1xuXHQgICAgICAgICAgICBtYW51YWxQcm9wVHlwZUNh
bGxDYWNoZVtjYWNoZUtleV0gPSB0cnVlO1xuXHQgICAgICAgICAgICBtYW51YWxQcm9wVHlwZVdh
cm5pbmdDb3VudCsrO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQg
ICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09IG51bGwpIHtcblx0ICAgICAgICBpZiAoaXNSZXF1
aXJlZCkge1xuXHQgICAgICAgICAgaWYgKHByb3BzW3Byb3BOYW1lXSA9PT0gbnVsbCkge1xuXHQg
ICAgICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1RoZSAnICsgbG9jYXRpb24gKyAn
IGAnICsgcHJvcEZ1bGxOYW1lICsgJ2AgaXMgbWFya2VkIGFzIHJlcXVpcmVkICcgKyAoJ2luIGAn
ICsgY29tcG9uZW50TmFtZSArICdgLCBidXQgaXRzIHZhbHVlIGlzIGBudWxsYC4nKSk7XG5cdCAg
ICAgICAgICB9XG5cdCAgICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1RoZSAnICsg
bG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2AgaXMgbWFya2VkIGFzIHJlcXVpcmVk
IGluICcgKyAoJ2AnICsgY29tcG9uZW50TmFtZSArICdgLCBidXQgaXRzIHZhbHVlIGlzIGB1bmRl
ZmluZWRgLicpKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICAg
IH0gZWxzZSB7XG5cdCAgICAgICAgcmV0dXJuIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29t
cG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSk7XG5cdCAgICAgIH1cblx0ICAgIH1c
blx0XG5cdCAgICB2YXIgY2hhaW5lZENoZWNrVHlwZSA9IGNoZWNrVHlwZS5iaW5kKG51bGwsIGZh
bHNlKTtcblx0ICAgIGNoYWluZWRDaGVja1R5cGUuaXNSZXF1aXJlZCA9IGNoZWNrVHlwZS5iaW5k
KG51bGwsIHRydWUpO1xuXHRcblx0ICAgIHJldHVybiBjaGFpbmVkQ2hlY2tUeXBlO1xuXHQgIH1c
blx0XG5cdCAgZnVuY3Rpb24gY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoZXhwZWN0ZWRUeXBl
KSB7XG5cdCAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5h
bWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuXHQgICAgICB2YXIgcHJvcFZh
bHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuXHQgICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlw
ZShwcm9wVmFsdWUpO1xuXHQgICAgICBpZiAocHJvcFR5cGUgIT09IGV4cGVjdGVkVHlwZSkge1xu
XHQgICAgICAgIC8vIGBwcm9wVmFsdWVgIGJlaW5nIGluc3RhbmNlIG9mLCBzYXksIGRhdGUvcmVn
ZXhwLCBwYXNzIHRoZSAnb2JqZWN0J1xuXHQgICAgICAgIC8vIGNoZWNrLCBidXQgd2UgY2FuIG9m
ZmVyIGEgbW9yZSBwcmVjaXNlIGVycm9yIG1lc3NhZ2UgaGVyZSByYXRoZXIgdGhhblxuXHQgICAg
ICAgIC8vICdvZiB0eXBlIGBvYmplY3RgJy5cblx0ICAgICAgICB2YXIgcHJlY2lzZVR5cGUgPSBn
ZXRQcmVjaXNlVHlwZShwcm9wVmFsdWUpO1xuXHRcblx0ICAgICAgICByZXR1cm4gbmV3IFByb3BU
eXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdg
IG9mIHR5cGUgJyArICgnYCcgKyBwcmVjaXNlVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29t
cG9uZW50TmFtZSArICdgLCBleHBlY3RlZCAnKSArICgnYCcgKyBleHBlY3RlZFR5cGUgKyAnYC4n
KSk7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICB9XG5cdCAgICByZXR1
cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuXHQgIH1cblx0XG5cdCAg
ZnVuY3Rpb24gY3JlYXRlQW55VHlwZUNoZWNrZXIoKSB7XG5cdCAgICByZXR1cm4gY3JlYXRlQ2hh
aW5hYmxlVHlwZUNoZWNrZXIoZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc051bGwpO1xuXHQgIH1c
blx0XG5cdCAgZnVuY3Rpb24gY3JlYXRlQXJyYXlPZlR5cGVDaGVja2VyKHR5cGVDaGVja2VyKSB7
XG5cdCAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUs
IGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcblx0ICAgICAgaWYgKHR5cGVvZiB0eXBlQ2hlY2tl
ciAhPT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcign
UHJvcGVydHkgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiBjb21wb25lbnQgYCcgKyBjb21wb25l
bnROYW1lICsgJ2AgaGFzIGludmFsaWQgUHJvcFR5cGUgbm90YXRpb24gaW5zaWRlIGFycmF5T2Yu
Jyk7XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtc
blx0ICAgICAgaWYgKCFBcnJheS5pc0FycmF5KHByb3BWYWx1ZSkpIHtcblx0ICAgICAgICB2YXIg
cHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuXHQgICAgICAgIHJldHVybiBuZXcg
UHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1l
ICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByb3BUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBj
b21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIGFuIGFycmF5LicpKTtcblx0ICAgICAgfVxuXHQg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BWYWx1ZS5sZW5ndGg7IGkrKykge1xuXHQgICAg
ICAgIHZhciBlcnJvciA9IHR5cGVDaGVja2VyKHByb3BWYWx1ZSwgaSwgY29tcG9uZW50TmFtZSwg
bG9jYXRpb24sIHByb3BGdWxsTmFtZSArICdbJyArIGkgKyAnXScsIFJlYWN0UHJvcFR5cGVzU2Vj
cmV0KTtcblx0ICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuXHQgICAgICAg
ICAgcmV0dXJuIGVycm9yO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4g
bnVsbDtcblx0ICAgIH1cblx0ICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2
YWxpZGF0ZSk7XG5cdCAgfVxuXHRcblx0ICBmdW5jdGlvbiBjcmVhdGVFbGVtZW50VHlwZUNoZWNr
ZXIoKSB7XG5cdCAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVu
dE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcblx0ICAgICAgdmFyIHByb3BWYWx1ZSA9
IHByb3BzW3Byb3BOYW1lXTtcblx0ICAgICAgaWYgKCFpc1ZhbGlkRWxlbWVudChwcm9wVmFsdWUp
KSB7XG5cdCAgICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcblx0
ICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsg
JyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdg
IHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhIHNpbmdsZSBS
ZWFjdEVsZW1lbnQuJykpO1xuXHQgICAgICB9XG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQgICAg
fVxuXHQgICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcblx0
ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlVHlwZUNoZWNrZXIoZXhwZWN0ZWRD
bGFzcykge1xuXHQgICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25l
bnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG5cdCAgICAgIGlmICghKHByb3BzW3By
b3BOYW1lXSBpbnN0YW5jZW9mIGV4cGVjdGVkQ2xhc3MpKSB7XG5cdCAgICAgICAgdmFyIGV4cGVj
dGVkQ2xhc3NOYW1lID0gZXhwZWN0ZWRDbGFzcy5uYW1lIHx8IEFOT05ZTU9VUztcblx0ICAgICAg
ICB2YXIgYWN0dWFsQ2xhc3NOYW1lID0gZ2V0Q2xhc3NOYW1lKHByb3BzW3Byb3BOYW1lXSk7XG5c
dCAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiAr
ICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcgKyAoJ2AnICsgYWN0dWFsQ2xhc3NO
YW1lICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkICcp
ICsgKCdpbnN0YW5jZSBvZiBgJyArIGV4cGVjdGVkQ2xhc3NOYW1lICsgJ2AuJykpO1xuXHQgICAg
ICB9XG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIGNyZWF0ZUNo
YWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIGNy
ZWF0ZUVudW1UeXBlQ2hlY2tlcihleHBlY3RlZFZhbHVlcykge1xuXHQgICAgaWYgKCFBcnJheS5p
c0FycmF5KGV4cGVjdGVkVmFsdWVzKSkge1xuXHQgICAgICAgZmFsc2UgPyB3YXJuaW5nKGZhbHNl
LCAnSW52YWxpZCBhcmd1bWVudCBzdXBwbGllZCB0byBvbmVPZiwgZXhwZWN0ZWQgYW4gaW5zdGFu
Y2Ugb2YgYXJyYXkuJykgOiB2b2lkIDA7XG5cdCAgICAgIHJldHVybiBlbXB0eUZ1bmN0aW9uLnRo
YXRSZXR1cm5zTnVsbDtcblx0ICAgIH1cblx0XG5cdCAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9w
cywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcblx0
ICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcblx0ICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBleHBlY3RlZFZhbHVlcy5sZW5ndGg7IGkrKykge1xuXHQgICAgICAgIGlmIChp
cyhwcm9wVmFsdWUsIGV4cGVjdGVkVmFsdWVzW2ldKSkge1xuXHQgICAgICAgICAgcmV0dXJuIG51
bGw7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdFxuXHQgICAgICB2YXIgdmFsdWVzU3RyaW5n
ID0gSlNPTi5zdHJpbmdpZnkoZXhwZWN0ZWRWYWx1ZXMpO1xuXHQgICAgICByZXR1cm4gbmV3IFBy
b3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSAr
ICdgIG9mIHZhbHVlIGAnICsgcHJvcFZhbHVlICsgJ2AgJyArICgnc3VwcGxpZWQgdG8gYCcgKyBj
b21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkIG9uZSBvZiAnICsgdmFsdWVzU3RyaW5nICsgJy4n
KSk7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFs
aWRhdGUpO1xuXHQgIH1cblx0XG5cdCAgZnVuY3Rpb24gY3JlYXRlT2JqZWN0T2ZUeXBlQ2hlY2tl
cih0eXBlQ2hlY2tlcikge1xuXHQgICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1l
LCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG5cdCAgICAgIGlmICh0
eXBlb2YgdHlwZUNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHtcblx0ICAgICAgICByZXR1cm4gbmV3
IFByb3BUeXBlRXJyb3IoJ1Byb3BlcnR5IGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgY29tcG9u
ZW50IGAnICsgY29tcG9uZW50TmFtZSArICdgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0aW9u
IGluc2lkZSBvYmplY3RPZi4nKTtcblx0ICAgICAgfVxuXHQgICAgICB2YXIgcHJvcFZhbHVlID0g
cHJvcHNbcHJvcE5hbWVdO1xuXHQgICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9w
VmFsdWUpO1xuXHQgICAgICBpZiAocHJvcFR5cGUgIT09ICdvYmplY3QnKSB7XG5cdCAgICAgICAg
cmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBw
cm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcgKyAoJ2AnICsgcHJvcFR5cGUgKyAnYCBzdXBwbGll
ZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYW4gb2JqZWN0LicpKTtcblx0
ICAgICAgfVxuXHQgICAgICBmb3IgKHZhciBrZXkgaW4gcHJvcFZhbHVlKSB7XG5cdCAgICAgICAg
aWYgKHByb3BWYWx1ZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG5cdCAgICAgICAgICB2YXIgZXJy
b3IgPSB0eXBlQ2hlY2tlcihwcm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24s
IHByb3BGdWxsTmFtZSArICcuJyArIGtleSwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuXHQgICAg
ICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcblx0ICAgICAgICAgICAgcmV0dXJu
IGVycm9yO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgICBy
ZXR1cm4gbnVsbDtcblx0ICAgIH1cblx0ICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hl
Y2tlcih2YWxpZGF0ZSk7XG5cdCAgfVxuXHRcblx0ICBmdW5jdGlvbiBjcmVhdGVVbmlvblR5cGVD
aGVja2VyKGFycmF5T2ZUeXBlQ2hlY2tlcnMpIHtcblx0ICAgIGlmICghQXJyYXkuaXNBcnJheShh
cnJheU9mVHlwZUNoZWNrZXJzKSkge1xuXHQgICAgICAgZmFsc2UgPyB3YXJuaW5nKGZhbHNlLCAn
SW52YWxpZCBhcmd1bWVudCBzdXBwbGllZCB0byBvbmVPZlR5cGUsIGV4cGVjdGVkIGFuIGluc3Rh
bmNlIG9mIGFycmF5LicpIDogdm9pZCAwO1xuXHQgICAgICByZXR1cm4gZW1wdHlGdW5jdGlvbi50
aGF0UmV0dXJuc051bGw7XG5cdCAgICB9XG5cdFxuXHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBh
cnJheU9mVHlwZUNoZWNrZXJzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIHZhciBjaGVja2VyID0g
YXJyYXlPZlR5cGVDaGVja2Vyc1tpXTtcblx0ICAgICAgaWYgKHR5cGVvZiBjaGVja2VyICE9PSAn
ZnVuY3Rpb24nKSB7XG5cdCAgICAgICAgd2FybmluZyhcblx0ICAgICAgICAgIGZhbHNlLFxuXHQg
ICAgICAgICAgJ0ludmFsaWQgYXJndW1lbnQgc3VwcGxpZCB0byBvbmVPZlR5cGUuIEV4cGVjdGVk
IGFuIGFycmF5IG9mIGNoZWNrIGZ1bmN0aW9ucywgYnV0ICcgK1xuXHQgICAgICAgICAgJ3JlY2Vp
dmVkICVzIGF0IGluZGV4ICVzLicsXG5cdCAgICAgICAgICBnZXRQb3N0Zml4Rm9yVHlwZVdhcm5p
bmcoY2hlY2tlciksXG5cdCAgICAgICAgICBpXG5cdCAgICAgICAgKTtcblx0ICAgICAgICByZXR1
cm4gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc051bGw7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0
XG5cdCAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUs
IGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcblx0ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBh
cnJheU9mVHlwZUNoZWNrZXJzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAgdmFyIGNoZWNrZXIg
PSBhcnJheU9mVHlwZUNoZWNrZXJzW2ldO1xuXHQgICAgICAgIGlmIChjaGVja2VyKHByb3BzLCBw
cm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgUmVhY3RQcm9w
VHlwZXNTZWNyZXQpID09IG51bGwpIHtcblx0ICAgICAgICAgIHJldHVybiBudWxsO1xuXHQgICAg
ICAgIH1cblx0ICAgICAgfVxuXHRcblx0ICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJ
bnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBzdXBwbGllZCB0
byAnICsgKCdgJyArIGNvbXBvbmVudE5hbWUgKyAnYC4nKSk7XG5cdCAgICB9XG5cdCAgICByZXR1
cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuXHQgIH1cblx0XG5cdCAg
ZnVuY3Rpb24gY3JlYXRlTm9kZUNoZWNrZXIoKSB7XG5cdCAgICBmdW5jdGlvbiB2YWxpZGF0ZShw
cm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtc
blx0ICAgICAgaWYgKCFpc05vZGUocHJvcHNbcHJvcE5hbWVdKSkge1xuXHQgICAgICAgIHJldHVy
biBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1
bGxOYW1lICsgJ2Agc3VwcGxpZWQgdG8gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4
cGVjdGVkIGEgUmVhY3ROb2RlLicpKTtcblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4gbnVsbDtc
blx0ICAgIH1cblx0ICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0
ZSk7XG5cdCAgfVxuXHRcblx0ICBmdW5jdGlvbiBjcmVhdGVTaGFwZVR5cGVDaGVja2VyKHNoYXBl
VHlwZXMpIHtcblx0ICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9u
ZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuXHQgICAgICB2YXIgcHJvcFZhbHVl
ID0gcHJvcHNbcHJvcE5hbWVdO1xuXHQgICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShw
cm9wVmFsdWUpO1xuXHQgICAgICBpZiAocHJvcFR5cGUgIT09ICdvYmplY3QnKSB7XG5cdCAgICAg
ICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcg
KyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlIGAnICsgcHJvcFR5cGUgKyAnYCAnICsgKCdzdXBw
bGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYG9iamVjdGAuJykpO1xu
XHQgICAgICB9XG5cdCAgICAgIGZvciAodmFyIGtleSBpbiBzaGFwZVR5cGVzKSB7XG5cdCAgICAg
ICAgdmFyIGNoZWNrZXIgPSBzaGFwZVR5cGVzW2tleV07XG5cdCAgICAgICAgaWYgKCFjaGVja2Vy
KSB7XG5cdCAgICAgICAgICBjb250aW51ZTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgdmFyIGVy
cm9yID0gY2hlY2tlcihwcm9wVmFsdWUsIGtleSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHBy
b3BGdWxsTmFtZSArICcuJyArIGtleSwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuXHQgICAgICAg
IGlmIChlcnJvcikge1xuXHQgICAgICAgICAgcmV0dXJuIGVycm9yO1xuXHQgICAgICAgIH1cblx0
ICAgICAgfVxuXHQgICAgICByZXR1cm4gbnVsbDtcblx0ICAgIH1cblx0ICAgIHJldHVybiBjcmVh
dGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG5cdCAgfVxuXHRcblx0ICBmdW5jdGlv
biBpc05vZGUocHJvcFZhbHVlKSB7XG5cdCAgICBzd2l0Y2ggKHR5cGVvZiBwcm9wVmFsdWUpIHtc
blx0ICAgICAgY2FzZSAnbnVtYmVyJzpcblx0ICAgICAgY2FzZSAnc3RyaW5nJzpcblx0ICAgICAg
Y2FzZSAndW5kZWZpbmVkJzpcblx0ICAgICAgICByZXR1cm4gdHJ1ZTtcblx0ICAgICAgY2FzZSAn
Ym9vbGVhbic6XG5cdCAgICAgICAgcmV0dXJuICFwcm9wVmFsdWU7XG5cdCAgICAgIGNhc2UgJ29i
amVjdCc6XG5cdCAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocHJvcFZhbHVlKSkge1xuXHQgICAg
ICAgICAgcmV0dXJuIHByb3BWYWx1ZS5ldmVyeShpc05vZGUpO1xuXHQgICAgICAgIH1cblx0ICAg
ICAgICBpZiAocHJvcFZhbHVlID09PSBudWxsIHx8IGlzVmFsaWRFbGVtZW50KHByb3BWYWx1ZSkp
IHtcblx0ICAgICAgICAgIHJldHVybiB0cnVlO1xuXHQgICAgICAgIH1cblx0XG5cdCAgICAgICAg
dmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKHByb3BWYWx1ZSk7XG5cdCAgICAgICAgaWYg
KGl0ZXJhdG9yRm4pIHtcblx0ICAgICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2Fs
bChwcm9wVmFsdWUpO1xuXHQgICAgICAgICAgdmFyIHN0ZXA7XG5cdCAgICAgICAgICBpZiAoaXRl
cmF0b3JGbiAhPT0gcHJvcFZhbHVlLmVudHJpZXMpIHtcblx0ICAgICAgICAgICAgd2hpbGUgKCEo
c3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgICAgIGlmICghaXNO
b2RlKHN0ZXAudmFsdWUpKSB7XG5cdCAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG5cdCAg
ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICB9IGVsc2Uge1xuXHQg
ICAgICAgICAgICAvLyBJdGVyYXRvciB3aWxsIHByb3ZpZGUgZW50cnkgW2ssdl0gdHVwbGVzIHJh
dGhlciB0aGFuIHZhbHVlcy5cblx0ICAgICAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9y
Lm5leHQoKSkuZG9uZSkge1xuXHQgICAgICAgICAgICAgIHZhciBlbnRyeSA9IHN0ZXAudmFsdWU7
XG5cdCAgICAgICAgICAgICAgaWYgKGVudHJ5KSB7XG5cdCAgICAgICAgICAgICAgICBpZiAoIWlz
Tm9kZShlbnRyeVsxXSkpIHtcblx0ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuXHQg
ICAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQg
ICAgICAgICAgfVxuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICByZXR1cm4gZmFsc2U7
XG5cdCAgICAgICAgfVxuXHRcblx0ICAgICAgICByZXR1cm4gdHJ1ZTtcblx0ICAgICAgZGVmYXVs
dDpcblx0ICAgICAgICByZXR1cm4gZmFsc2U7XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0ICBmdW5j
dGlvbiBpc1N5bWJvbChwcm9wVHlwZSwgcHJvcFZhbHVlKSB7XG5cdCAgICAvLyBOYXRpdmUgU3lt
Ym9sLlxuXHQgICAgaWYgKHByb3BUeXBlID09PSAnc3ltYm9sJykge1xuXHQgICAgICByZXR1cm4g
dHJ1ZTtcblx0ICAgIH1cblx0XG5cdCAgICAvLyAxOS40LjMuNSBTeW1ib2wucHJvdG90eXBlW0BA
dG9TdHJpbmdUYWddID09PSAnU3ltYm9sJ1xuXHQgICAgaWYgKHByb3BWYWx1ZVsnQEB0b1N0cmlu
Z1RhZyddID09PSAnU3ltYm9sJykge1xuXHQgICAgICByZXR1cm4gdHJ1ZTtcblx0ICAgIH1cblx0
XG5cdCAgICAvLyBGYWxsYmFjayBmb3Igbm9uLXNwZWMgY29tcGxpYW50IFN5bWJvbHMgd2hpY2gg
YXJlIHBvbHlmaWxsZWQuXG5cdCAgICBpZiAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAm
JiBwcm9wVmFsdWUgaW5zdGFuY2VvZiBTeW1ib2wpIHtcblx0ICAgICAgcmV0dXJuIHRydWU7XG5c
dCAgICB9XG5cdFxuXHQgICAgcmV0dXJuIGZhbHNlO1xuXHQgIH1cblx0XG5cdCAgLy8gRXF1aXZh
bGVudCBvZiBgdHlwZW9mYCBidXQgd2l0aCBzcGVjaWFsIGhhbmRsaW5nIGZvciBhcnJheSBhbmQg
cmVnZXhwLlxuXHQgIGZ1bmN0aW9uIGdldFByb3BUeXBlKHByb3BWYWx1ZSkge1xuXHQgICAgdmFy
IHByb3BUeXBlID0gdHlwZW9mIHByb3BWYWx1ZTtcblx0ICAgIGlmIChBcnJheS5pc0FycmF5KHBy
b3BWYWx1ZSkpIHtcblx0ICAgICAgcmV0dXJuICdhcnJheSc7XG5cdCAgICB9XG5cdCAgICBpZiAo
cHJvcFZhbHVlIGluc3RhbmNlb2YgUmVnRXhwKSB7XG5cdCAgICAgIC8vIE9sZCB3ZWJraXRzIChh
dCBsZWFzdCB1bnRpbCBBbmRyb2lkIDQuMCkgcmV0dXJuICdmdW5jdGlvbicgcmF0aGVyIHRoYW5c
blx0ICAgICAgLy8gJ29iamVjdCcgZm9yIHR5cGVvZiBhIFJlZ0V4cC4gV2UnbGwgbm9ybWFsaXpl
IHRoaXMgaGVyZSBzbyB0aGF0IC9ibGEvXG5cdCAgICAgIC8vIHBhc3NlcyBQcm9wVHlwZXMub2Jq
ZWN0LlxuXHQgICAgICByZXR1cm4gJ29iamVjdCc7XG5cdCAgICB9XG5cdCAgICBpZiAoaXNTeW1i
b2wocHJvcFR5cGUsIHByb3BWYWx1ZSkpIHtcblx0ICAgICAgcmV0dXJuICdzeW1ib2wnO1xuXHQg
ICAgfVxuXHQgICAgcmV0dXJuIHByb3BUeXBlO1xuXHQgIH1cblx0XG5cdCAgLy8gVGhpcyBoYW5k
bGVzIG1vcmUgdHlwZXMgdGhhbiBgZ2V0UHJvcFR5cGVgLiBPbmx5IHVzZWQgZm9yIGVycm9yIG1l
c3NhZ2VzLlxuXHQgIC8vIFNlZSBgY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXJgLlxuXHQgIGZ1
bmN0aW9uIGdldFByZWNpc2VUeXBlKHByb3BWYWx1ZSkge1xuXHQgICAgaWYgKHR5cGVvZiBwcm9w
VmFsdWUgPT09ICd1bmRlZmluZWQnIHx8IHByb3BWYWx1ZSA9PT0gbnVsbCkge1xuXHQgICAgICBy
ZXR1cm4gJycgKyBwcm9wVmFsdWU7XG5cdCAgICB9XG5cdCAgICB2YXIgcHJvcFR5cGUgPSBnZXRQ
cm9wVHlwZShwcm9wVmFsdWUpO1xuXHQgICAgaWYgKHByb3BUeXBlID09PSAnb2JqZWN0Jykge1xu
XHQgICAgICBpZiAocHJvcFZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuXHQgICAgICAgIHJldHVy
biAnZGF0ZSc7XG5cdCAgICAgIH0gZWxzZSBpZiAocHJvcFZhbHVlIGluc3RhbmNlb2YgUmVnRXhw
KSB7XG5cdCAgICAgICAgcmV0dXJuICdyZWdleHAnO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAg
ICByZXR1cm4gcHJvcFR5cGU7XG5cdCAgfVxuXHRcblx0ICAvLyBSZXR1cm5zIGEgc3RyaW5nIHRo
YXQgaXMgcG9zdGZpeGVkIHRvIGEgd2FybmluZyBhYm91dCBhbiBpbnZhbGlkIHR5cGUuXG5cdCAg
Ly8gRm9yIGV4YW1wbGUsIFwidW5kZWZpbmVkXCIgb3IgXCJvZiB0eXBlIGFycmF5XCJcblx0ICBm
dW5jdGlvbiBnZXRQb3N0Zml4Rm9yVHlwZVdhcm5pbmcodmFsdWUpIHtcblx0ICAgIHZhciB0eXBl
ID0gZ2V0UHJlY2lzZVR5cGUodmFsdWUpO1xuXHQgICAgc3dpdGNoICh0eXBlKSB7XG5cdCAgICAg
IGNhc2UgJ2FycmF5Jzpcblx0ICAgICAgY2FzZSAnb2JqZWN0Jzpcblx0ICAgICAgICByZXR1cm4g
J2FuICcgKyB0eXBlO1xuXHQgICAgICBjYXNlICdib29sZWFuJzpcblx0ICAgICAgY2FzZSAnZGF0
ZSc6XG5cdCAgICAgIGNhc2UgJ3JlZ2V4cCc6XG5cdCAgICAgICAgcmV0dXJuICdhICcgKyB0eXBl
O1xuXHQgICAgICBkZWZhdWx0OlxuXHQgICAgICAgIHJldHVybiB0eXBlO1xuXHQgICAgfVxuXHQg
IH1cblx0XG5cdCAgLy8gUmV0dXJucyBjbGFzcyBuYW1lIG9mIHRoZSBvYmplY3QsIGlmIGFueS5c
blx0ICBmdW5jdGlvbiBnZXRDbGFzc05hbWUocHJvcFZhbHVlKSB7XG5cdCAgICBpZiAoIXByb3BW
YWx1ZS5jb25zdHJ1Y3RvciB8fCAhcHJvcFZhbHVlLmNvbnN0cnVjdG9yLm5hbWUpIHtcblx0ICAg
ICAgcmV0dXJuIEFOT05ZTU9VUztcblx0ICAgIH1cblx0ICAgIHJldHVybiBwcm9wVmFsdWUuY29u
c3RydWN0b3IubmFtZTtcblx0ICB9XG5cdFxuXHQgIFJlYWN0UHJvcFR5cGVzLmNoZWNrUHJvcFR5
cGVzID0gY2hlY2tQcm9wVHlwZXM7XG5cdCAgUmVhY3RQcm9wVHlwZXMuUHJvcFR5cGVzID0gUmVh
Y3RQcm9wVHlwZXM7XG5cdFxuXHQgIHJldHVybiBSZWFjdFByb3BUeXBlcztcblx0fTtcblxuXG4v
KioqLyB9LFxuLyogMTIzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRtb2R1bGUuZXhwb3J0
cyA9IF9fd2VicGFja19yZXF1aXJlX18oMTM3KTtcblxuXG4vKioqLyB9LFxuLyogMTI0ICovXG4v
KioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
blx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2
YXIgQVJJQURPTVByb3BlcnR5Q29uZmlnID0ge1xuXHQgIFByb3BlcnRpZXM6IHtcblx0ICAgIC8v
IEdsb2JhbCBTdGF0ZXMgYW5kIFByb3BlcnRpZXNcblx0ICAgICdhcmlhLWN1cnJlbnQnOiAwLCAv
LyBzdGF0ZVxuXHQgICAgJ2FyaWEtZGV0YWlscyc6IDAsXG5cdCAgICAnYXJpYS1kaXNhYmxlZCc6
IDAsIC8vIHN0YXRlXG5cdCAgICAnYXJpYS1oaWRkZW4nOiAwLCAvLyBzdGF0ZVxuXHQgICAgJ2Fy
aWEtaW52YWxpZCc6IDAsIC8vIHN0YXRlXG5cdCAgICAnYXJpYS1rZXlzaG9ydGN1dHMnOiAwLFxu
XHQgICAgJ2FyaWEtbGFiZWwnOiAwLFxuXHQgICAgJ2FyaWEtcm9sZWRlc2NyaXB0aW9uJzogMCxc
blx0ICAgIC8vIFdpZGdldCBBdHRyaWJ1dGVzXG5cdCAgICAnYXJpYS1hdXRvY29tcGxldGUnOiAw
LFxuXHQgICAgJ2FyaWEtY2hlY2tlZCc6IDAsXG5cdCAgICAnYXJpYS1leHBhbmRlZCc6IDAsXG5c
dCAgICAnYXJpYS1oYXNwb3B1cCc6IDAsXG5cdCAgICAnYXJpYS1sZXZlbCc6IDAsXG5cdCAgICAn
YXJpYS1tb2RhbCc6IDAsXG5cdCAgICAnYXJpYS1tdWx0aWxpbmUnOiAwLFxuXHQgICAgJ2FyaWEt
bXVsdGlzZWxlY3RhYmxlJzogMCxcblx0ICAgICdhcmlhLW9yaWVudGF0aW9uJzogMCxcblx0ICAg
ICdhcmlhLXBsYWNlaG9sZGVyJzogMCxcblx0ICAgICdhcmlhLXByZXNzZWQnOiAwLFxuXHQgICAg
J2FyaWEtcmVhZG9ubHknOiAwLFxuXHQgICAgJ2FyaWEtcmVxdWlyZWQnOiAwLFxuXHQgICAgJ2Fy
aWEtc2VsZWN0ZWQnOiAwLFxuXHQgICAgJ2FyaWEtc29ydCc6IDAsXG5cdCAgICAnYXJpYS12YWx1
ZW1heCc6IDAsXG5cdCAgICAnYXJpYS12YWx1ZW1pbic6IDAsXG5cdCAgICAnYXJpYS12YWx1ZW5v
dyc6IDAsXG5cdCAgICAnYXJpYS12YWx1ZXRleHQnOiAwLFxuXHQgICAgLy8gTGl2ZSBSZWdpb24g
QXR0cmlidXRlc1xuXHQgICAgJ2FyaWEtYXRvbWljJzogMCxcblx0ICAgICdhcmlhLWJ1c3knOiAw
LFxuXHQgICAgJ2FyaWEtbGl2ZSc6IDAsXG5cdCAgICAnYXJpYS1yZWxldmFudCc6IDAsXG5cdCAg
ICAvLyBEcmFnLWFuZC1Ecm9wIEF0dHJpYnV0ZXNcblx0ICAgICdhcmlhLWRyb3BlZmZlY3QnOiAw
LFxuXHQgICAgJ2FyaWEtZ3JhYmJlZCc6IDAsXG5cdCAgICAvLyBSZWxhdGlvbnNoaXAgQXR0cmli
dXRlc1xuXHQgICAgJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCc6IDAsXG5cdCAgICAnYXJpYS1jb2xj
b3VudCc6IDAsXG5cdCAgICAnYXJpYS1jb2xpbmRleCc6IDAsXG5cdCAgICAnYXJpYS1jb2xzcGFu
JzogMCxcblx0ICAgICdhcmlhLWNvbnRyb2xzJzogMCxcblx0ICAgICdhcmlhLWRlc2NyaWJlZGJ5
JzogMCxcblx0ICAgICdhcmlhLWVycm9ybWVzc2FnZSc6IDAsXG5cdCAgICAnYXJpYS1mbG93dG8n
OiAwLFxuXHQgICAgJ2FyaWEtbGFiZWxsZWRieSc6IDAsXG5cdCAgICAnYXJpYS1vd25zJzogMCxc
blx0ICAgICdhcmlhLXBvc2luc2V0JzogMCxcblx0ICAgICdhcmlhLXJvd2NvdW50JzogMCxcblx0
ICAgICdhcmlhLXJvd2luZGV4JzogMCxcblx0ICAgICdhcmlhLXJvd3NwYW4nOiAwLFxuXHQgICAg
J2FyaWEtc2V0c2l6ZSc6IDBcblx0ICB9LFxuXHQgIERPTUF0dHJpYnV0ZU5hbWVzOiB7fSxcblx0
ICBET01Qcm9wZXJ0eU5hbWVzOiB7fVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBBUklB
RE9NUHJvcGVydHlDb25maWc7XG5cbi8qKiovIH0sXG4vKiAxMjUgKi9cbi8qKiovIGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztc
blx0XG5cdHZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUp
O1xuXHRcblx0dmFyIGZvY3VzTm9kZSA9IF9fd2VicGFja19yZXF1aXJlX18oNTIpO1xuXHRcblx0
dmFyIEF1dG9Gb2N1c1V0aWxzID0ge1xuXHQgIGZvY3VzRE9NQ29tcG9uZW50OiBmdW5jdGlvbiAo
KSB7XG5cdCAgICBmb2N1c05vZGUoUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5z
dGFuY2UodGhpcykpO1xuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gQXV0b0Zv
Y3VzVXRpbHM7XG5cbi8qKiovIH0sXG4vKiAxMjYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwg
ZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50IEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5c
dCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFy
IEV2ZW50UHJvcGFnYXRvcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKTtcblx0dmFyIEV4ZWN1
dGlvbkVudmlyb25tZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTtcblx0dmFyIEZhbGxiYWNr
Q29tcG9zaXRpb25TdGF0ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTMyKTtcblx0dmFyIFN5bnRo
ZXRpY0NvbXBvc2l0aW9uRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2OSk7XG5cdHZhciBT
eW50aGV0aWNJbnB1dEV2ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNzIpO1xuXHRcblx0dmFy
IEVORF9LRVlDT0RFUyA9IFs5LCAxMywgMjcsIDMyXTsgLy8gVGFiLCBSZXR1cm4sIEVzYywgU3Bh
Y2Vcblx0dmFyIFNUQVJUX0tFWUNPREUgPSAyMjk7XG5cdFxuXHR2YXIgY2FuVXNlQ29tcG9zaXRp
b25FdmVudCA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAmJiAnQ29tcG9zaXRpb25F
dmVudCcgaW4gd2luZG93O1xuXHRcblx0dmFyIGRvY3VtZW50TW9kZSA9IG51bGw7XG5cdGlmIChF
eGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgJ2RvY3VtZW50TW9kZScgaW4gZG9jdW1l
bnQpIHtcblx0ICBkb2N1bWVudE1vZGUgPSBkb2N1bWVudC5kb2N1bWVudE1vZGU7XG5cdH1cblx0
XG5cdC8vIFdlYmtpdCBvZmZlcnMgYSB2ZXJ5IHVzZWZ1bCBgdGV4dElucHV0YCBldmVudCB0aGF0
IGNhbiBiZSB1c2VkIHRvXG5cdC8vIGRpcmVjdGx5IHJlcHJlc2VudCBgYmVmb3JlSW5wdXRgLiBU
aGUgSUUgYHRleHRpbnB1dGAgZXZlbnQgaXMgbm90IGFzXG5cdC8vIHVzZWZ1bCwgc28gd2UgZG9u
J3QgdXNlIGl0LlxuXHR2YXIgY2FuVXNlVGV4dElucHV0RXZlbnQgPSBFeGVjdXRpb25FbnZpcm9u
bWVudC5jYW5Vc2VET00gJiYgJ1RleHRFdmVudCcgaW4gd2luZG93ICYmICFkb2N1bWVudE1vZGUg
JiYgIWlzUHJlc3RvKCk7XG5cdFxuXHQvLyBJbiBJRTkrLCB3ZSBoYXZlIGFjY2VzcyB0byBjb21w
b3NpdGlvbiBldmVudHMsIGJ1dCB0aGUgZGF0YSBzdXBwbGllZFxuXHQvLyBieSB0aGUgbmF0aXZl
IGNvbXBvc2l0aW9uZW5kIGV2ZW50IG1heSBiZSBpbmNvcnJlY3QuIEphcGFuZXNlIGlkZW9ncmFw
aGljXG5cdC8vIHNwYWNlcywgZm9yIGluc3RhbmNlIChcXHUzMDAwKSBhcmUgbm90IHJlY29yZGVk
IGNvcnJlY3RseS5cblx0dmFyIHVzZUZhbGxiYWNrQ29tcG9zaXRpb25EYXRhID0gRXhlY3V0aW9u
RW52aXJvbm1lbnQuY2FuVXNlRE9NICYmICghY2FuVXNlQ29tcG9zaXRpb25FdmVudCB8fCBkb2N1
bWVudE1vZGUgJiYgZG9jdW1lbnRNb2RlID4gOCAmJiBkb2N1bWVudE1vZGUgPD0gMTEpO1xuXHRc
blx0LyoqXG5cdCAqIE9wZXJhIDw9IDEyIGluY2x1ZGVzIFRleHRFdmVudCBpbiB3aW5kb3csIGJ1
dCBkb2VzIG5vdCBmaXJlXG5cdCAqIHRleHQgaW5wdXQgZXZlbnRzLiBSZWx5IG9uIGtleXByZXNz
IGluc3RlYWQuXG5cdCAqL1xuXHRmdW5jdGlvbiBpc1ByZXN0bygpIHtcblx0ICB2YXIgb3BlcmEg
PSB3aW5kb3cub3BlcmE7XG5cdCAgcmV0dXJuIHR5cGVvZiBvcGVyYSA9PT0gJ29iamVjdCcgJiYg
dHlwZW9mIG9wZXJhLnZlcnNpb24gPT09ICdmdW5jdGlvbicgJiYgcGFyc2VJbnQob3BlcmEudmVy
c2lvbigpLCAxMCkgPD0gMTI7XG5cdH1cblx0XG5cdHZhciBTUEFDRUJBUl9DT0RFID0gMzI7XG5c
dHZhciBTUEFDRUJBUl9DSEFSID0gU3RyaW5nLmZyb21DaGFyQ29kZShTUEFDRUJBUl9DT0RFKTtc
blx0XG5cdC8vIEV2ZW50cyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSBuYW1lcy5c
blx0dmFyIGV2ZW50VHlwZXMgPSB7XG5cdCAgYmVmb3JlSW5wdXQ6IHtcblx0ICAgIHBoYXNlZFJl
Z2lzdHJhdGlvbk5hbWVzOiB7XG5cdCAgICAgIGJ1YmJsZWQ6ICdvbkJlZm9yZUlucHV0Jyxcblx0
ICAgICAgY2FwdHVyZWQ6ICdvbkJlZm9yZUlucHV0Q2FwdHVyZSdcblx0ICAgIH0sXG5cdCAgICBk
ZXBlbmRlbmNpZXM6IFsndG9wQ29tcG9zaXRpb25FbmQnLCAndG9wS2V5UHJlc3MnLCAndG9wVGV4
dElucHV0JywgJ3RvcFBhc3RlJ11cblx0ICB9LFxuXHQgIGNvbXBvc2l0aW9uRW5kOiB7XG5cdCAg
ICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuXHQgICAgICBidWJibGVkOiAnb25Db21wb3Np
dGlvbkVuZCcsXG5cdCAgICAgIGNhcHR1cmVkOiAnb25Db21wb3NpdGlvbkVuZENhcHR1cmUnXG5c
dCAgICB9LFxuXHQgICAgZGVwZW5kZW5jaWVzOiBbJ3RvcEJsdXInLCAndG9wQ29tcG9zaXRpb25F
bmQnLCAndG9wS2V5RG93bicsICd0b3BLZXlQcmVzcycsICd0b3BLZXlVcCcsICd0b3BNb3VzZURv
d24nXVxuXHQgIH0sXG5cdCAgY29tcG9zaXRpb25TdGFydDoge1xuXHQgICAgcGhhc2VkUmVnaXN0
cmF0aW9uTmFtZXM6IHtcblx0ICAgICAgYnViYmxlZDogJ29uQ29tcG9zaXRpb25TdGFydCcsXG5c
dCAgICAgIGNhcHR1cmVkOiAnb25Db21wb3NpdGlvblN0YXJ0Q2FwdHVyZSdcblx0ICAgIH0sXG5c
dCAgICBkZXBlbmRlbmNpZXM6IFsndG9wQmx1cicsICd0b3BDb21wb3NpdGlvblN0YXJ0JywgJ3Rv
cEtleURvd24nLCAndG9wS2V5UHJlc3MnLCAndG9wS2V5VXAnLCAndG9wTW91c2VEb3duJ11cblx0
ICB9LFxuXHQgIGNvbXBvc2l0aW9uVXBkYXRlOiB7XG5cdCAgICBwaGFzZWRSZWdpc3RyYXRpb25O
YW1lczoge1xuXHQgICAgICBidWJibGVkOiAnb25Db21wb3NpdGlvblVwZGF0ZScsXG5cdCAgICAg
IGNhcHR1cmVkOiAnb25Db21wb3NpdGlvblVwZGF0ZUNhcHR1cmUnXG5cdCAgICB9LFxuXHQgICAg
ZGVwZW5kZW5jaWVzOiBbJ3RvcEJsdXInLCAndG9wQ29tcG9zaXRpb25VcGRhdGUnLCAndG9wS2V5
RG93bicsICd0b3BLZXlQcmVzcycsICd0b3BLZXlVcCcsICd0b3BNb3VzZURvd24nXVxuXHQgIH1c
blx0fTtcblx0XG5cdC8vIFRyYWNrIHdoZXRoZXIgd2UndmUgZXZlciBoYW5kbGVkIGEga2V5cHJl
c3Mgb24gdGhlIHNwYWNlIGtleS5cblx0dmFyIGhhc1NwYWNlS2V5cHJlc3MgPSBmYWxzZTtcblx0
XG5cdC8qKlxuXHQgKiBSZXR1cm4gd2hldGhlciBhIG5hdGl2ZSBrZXlwcmVzcyBldmVudCBpcyBh
c3N1bWVkIHRvIGJlIGEgY29tbWFuZC5cblx0ICogVGhpcyBpcyByZXF1aXJlZCBiZWNhdXNlIEZp
cmVmb3ggZmlyZXMgYGtleXByZXNzYCBldmVudHMgZm9yIGtleSBjb21tYW5kc1xuXHQgKiAoY3V0
LCBjb3B5LCBzZWxlY3QtYWxsLCBldGMuKSBldmVuIHRob3VnaCBubyBjaGFyYWN0ZXIgaXMgaW5z
ZXJ0ZWQuXG5cdCAqL1xuXHRmdW5jdGlvbiBpc0tleXByZXNzQ29tbWFuZChuYXRpdmVFdmVudCkg
e1xuXHQgIHJldHVybiAobmF0aXZlRXZlbnQuY3RybEtleSB8fCBuYXRpdmVFdmVudC5hbHRLZXkg
fHwgbmF0aXZlRXZlbnQubWV0YUtleSkgJiZcblx0ICAvLyBjdHJsS2V5ICYmIGFsdEtleSBpcyBl
cXVpdmFsZW50IHRvIEFsdEdyLCBhbmQgaXMgbm90IGEgY29tbWFuZC5cblx0ICAhKG5hdGl2ZUV2
ZW50LmN0cmxLZXkgJiYgbmF0aXZlRXZlbnQuYWx0S2V5KTtcblx0fVxuXHRcblx0LyoqXG5cdCAq
IFRyYW5zbGF0ZSBuYXRpdmUgdG9wIGxldmVsIGV2ZW50cyBpbnRvIGV2ZW50IHR5cGVzLlxuXHQg
KlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlXG5cdCAqIEByZXR1cm4ge29iamVj
dH1cblx0ICovXG5cdGZ1bmN0aW9uIGdldENvbXBvc2l0aW9uRXZlbnRUeXBlKHRvcExldmVsVHlw
ZSkge1xuXHQgIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG5cdCAgICBjYXNlICd0b3BDb21wb3Np
dGlvblN0YXJ0Jzpcblx0ICAgICAgcmV0dXJuIGV2ZW50VHlwZXMuY29tcG9zaXRpb25TdGFydDtc
blx0ICAgIGNhc2UgJ3RvcENvbXBvc2l0aW9uRW5kJzpcblx0ICAgICAgcmV0dXJuIGV2ZW50VHlw
ZXMuY29tcG9zaXRpb25FbmQ7XG5cdCAgICBjYXNlICd0b3BDb21wb3NpdGlvblVwZGF0ZSc6XG5c
dCAgICAgIHJldHVybiBldmVudFR5cGVzLmNvbXBvc2l0aW9uVXBkYXRlO1xuXHQgIH1cblx0fVxu
XHRcblx0LyoqXG5cdCAqIERvZXMgb3VyIGZhbGxiYWNrIGJlc3QtZ3Vlc3MgbW9kZWwgdGhpbmsg
dGhpcyBldmVudCBzaWduaWZpZXMgdGhhdFxuXHQgKiBjb21wb3NpdGlvbiBoYXMgYmVndW4/XG5c
dCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGVcblx0ICogQHBhcmFtIHtvYmpl
Y3R9IG5hdGl2ZUV2ZW50XG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59XG5cdCAqL1xuXHRmdW5jdGlv
biBpc0ZhbGxiYWNrQ29tcG9zaXRpb25TdGFydCh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSB7
XG5cdCAgcmV0dXJuIHRvcExldmVsVHlwZSA9PT0gJ3RvcEtleURvd24nICYmIG5hdGl2ZUV2ZW50
LmtleUNvZGUgPT09IFNUQVJUX0tFWUNPREU7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBEb2VzIG91
ciBmYWxsYmFjayBtb2RlIHRoaW5rIHRoYXQgdGhpcyBldmVudCBpcyB0aGUgZW5kIG9mIGNvbXBv
c2l0aW9uP1xuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlXG5cdCAqIEBw
YXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudFxuXHQgKiBAcmV0dXJuIHtib29sZWFufVxuXHQgKi9c
blx0ZnVuY3Rpb24gaXNGYWxsYmFja0NvbXBvc2l0aW9uRW5kKHRvcExldmVsVHlwZSwgbmF0aXZl
RXZlbnQpIHtcblx0ICBzd2l0Y2ggKHRvcExldmVsVHlwZSkge1xuXHQgICAgY2FzZSAndG9wS2V5
VXAnOlxuXHQgICAgICAvLyBDb21tYW5kIGtleXMgaW5zZXJ0IG9yIGNsZWFyIElNRSBpbnB1dC5c
blx0ICAgICAgcmV0dXJuIEVORF9LRVlDT0RFUy5pbmRleE9mKG5hdGl2ZUV2ZW50LmtleUNvZGUp
ICE9PSAtMTtcblx0ICAgIGNhc2UgJ3RvcEtleURvd24nOlxuXHQgICAgICAvLyBFeHBlY3QgSU1F
IGtleUNvZGUgb24gZWFjaCBrZXlkb3duLiBJZiB3ZSBnZXQgYW55IG90aGVyXG5cdCAgICAgIC8v
IGNvZGUgd2UgbXVzdCBoYXZlIGV4aXRlZCBlYXJsaWVyLlxuXHQgICAgICByZXR1cm4gbmF0aXZl
RXZlbnQua2V5Q29kZSAhPT0gU1RBUlRfS0VZQ09ERTtcblx0ICAgIGNhc2UgJ3RvcEtleVByZXNz
Jzpcblx0ICAgIGNhc2UgJ3RvcE1vdXNlRG93bic6XG5cdCAgICBjYXNlICd0b3BCbHVyJzpcblx0
ICAgICAgLy8gRXZlbnRzIGFyZSBub3QgcG9zc2libGUgd2l0aG91dCBjYW5jZWxsaW5nIElNRS5c
blx0ICAgICAgcmV0dXJuIHRydWU7XG5cdCAgICBkZWZhdWx0OlxuXHQgICAgICByZXR1cm4gZmFs
c2U7XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICogR29vZ2xlIElucHV0IFRvb2xzIHByb3Zp
ZGVzIGNvbXBvc2l0aW9uIGRhdGEgdmlhIGEgQ3VzdG9tRXZlbnQsXG5cdCAqIHdpdGggdGhlIGBk
YXRhYCBwcm9wZXJ0eSBwb3B1bGF0ZWQgaW4gdGhlIGBkZXRhaWxgIG9iamVjdC4gSWYgdGhpc1xu
XHQgKiBpcyBhdmFpbGFibGUgb24gdGhlIGV2ZW50IG9iamVjdCwgdXNlIGl0LiBJZiBub3QsIHRo
aXMgaXMgYSBwbGFpblxuXHQgKiBjb21wb3NpdGlvbiBldmVudCBhbmQgd2UgaGF2ZSBub3RoaW5n
IHNwZWNpYWwgdG8gZXh0cmFjdC5cblx0ICpcblx0ICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2
ZW50XG5cdCAqIEByZXR1cm4gez9zdHJpbmd9XG5cdCAqL1xuXHRmdW5jdGlvbiBnZXREYXRhRnJv
bUN1c3RvbUV2ZW50KG5hdGl2ZUV2ZW50KSB7XG5cdCAgdmFyIGRldGFpbCA9IG5hdGl2ZUV2ZW50
LmRldGFpbDtcblx0ICBpZiAodHlwZW9mIGRldGFpbCA9PT0gJ29iamVjdCcgJiYgJ2RhdGEnIGlu
IGRldGFpbCkge1xuXHQgICAgcmV0dXJuIGRldGFpbC5kYXRhO1xuXHQgIH1cblx0ICByZXR1cm4g
bnVsbDtcblx0fVxuXHRcblx0Ly8gVHJhY2sgdGhlIGN1cnJlbnQgSU1FIGNvbXBvc2l0aW9uIGZh
bGxiYWNrIG9iamVjdCwgaWYgYW55LlxuXHR2YXIgY3VycmVudENvbXBvc2l0aW9uID0gbnVsbDtc
blx0XG5cdC8qKlxuXHQgKiBAcmV0dXJuIHs/b2JqZWN0fSBBIFN5bnRoZXRpY0NvbXBvc2l0aW9u
RXZlbnQuXG5cdCAqL1xuXHRmdW5jdGlvbiBleHRyYWN0Q29tcG9zaXRpb25FdmVudCh0b3BMZXZl
bFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuXHQg
IHZhciBldmVudFR5cGU7XG5cdCAgdmFyIGZhbGxiYWNrRGF0YTtcblx0XG5cdCAgaWYgKGNhblVz
ZUNvbXBvc2l0aW9uRXZlbnQpIHtcblx0ICAgIGV2ZW50VHlwZSA9IGdldENvbXBvc2l0aW9uRXZl
bnRUeXBlKHRvcExldmVsVHlwZSk7XG5cdCAgfSBlbHNlIGlmICghY3VycmVudENvbXBvc2l0aW9u
KSB7XG5cdCAgICBpZiAoaXNGYWxsYmFja0NvbXBvc2l0aW9uU3RhcnQodG9wTGV2ZWxUeXBlLCBu
YXRpdmVFdmVudCkpIHtcblx0ICAgICAgZXZlbnRUeXBlID0gZXZlbnRUeXBlcy5jb21wb3NpdGlv
blN0YXJ0O1xuXHQgICAgfVxuXHQgIH0gZWxzZSBpZiAoaXNGYWxsYmFja0NvbXBvc2l0aW9uRW5k
KHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpKSB7XG5cdCAgICBldmVudFR5cGUgPSBldmVudFR5
cGVzLmNvbXBvc2l0aW9uRW5kO1xuXHQgIH1cblx0XG5cdCAgaWYgKCFldmVudFR5cGUpIHtcblx0
ICAgIHJldHVybiBudWxsO1xuXHQgIH1cblx0XG5cdCAgaWYgKHVzZUZhbGxiYWNrQ29tcG9zaXRp
b25EYXRhKSB7XG5cdCAgICAvLyBUaGUgY3VycmVudCBjb21wb3NpdGlvbiBpcyBzdG9yZWQgc3Rh
dGljYWxseSBhbmQgbXVzdCBub3QgYmVcblx0ICAgIC8vIG92ZXJ3cml0dGVuIHdoaWxlIGNvbXBv
c2l0aW9uIGNvbnRpbnVlcy5cblx0ICAgIGlmICghY3VycmVudENvbXBvc2l0aW9uICYmIGV2ZW50
VHlwZSA9PT0gZXZlbnRUeXBlcy5jb21wb3NpdGlvblN0YXJ0KSB7XG5cdCAgICAgIGN1cnJlbnRD
b21wb3NpdGlvbiA9IEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZS5nZXRQb29sZWQobmF0aXZlRXZl
bnRUYXJnZXQpO1xuXHQgICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09IGV2ZW50VHlwZXMuY29t
cG9zaXRpb25FbmQpIHtcblx0ICAgICAgaWYgKGN1cnJlbnRDb21wb3NpdGlvbikge1xuXHQgICAg
ICAgIGZhbGxiYWNrRGF0YSA9IGN1cnJlbnRDb21wb3NpdGlvbi5nZXREYXRhKCk7XG5cdCAgICAg
IH1cblx0ICAgIH1cblx0ICB9XG5cdFxuXHQgIHZhciBldmVudCA9IFN5bnRoZXRpY0NvbXBvc2l0
aW9uRXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5h
dGl2ZUV2ZW50VGFyZ2V0KTtcblx0XG5cdCAgaWYgKGZhbGxiYWNrRGF0YSkge1xuXHQgICAgLy8g
SW5qZWN0IGRhdGEgZ2VuZXJhdGVkIGZyb20gZmFsbGJhY2sgcGF0aCBpbnRvIHRoZSBzeW50aGV0
aWMgZXZlbnQuXG5cdCAgICAvLyBUaGlzIG1hdGNoZXMgdGhlIHByb3BlcnR5IG9mIG5hdGl2ZSBD
b21wb3NpdGlvbkV2ZW50SW50ZXJmYWNlLlxuXHQgICAgZXZlbnQuZGF0YSA9IGZhbGxiYWNrRGF0
YTtcblx0ICB9IGVsc2Uge1xuXHQgICAgdmFyIGN1c3RvbURhdGEgPSBnZXREYXRhRnJvbUN1c3Rv
bUV2ZW50KG5hdGl2ZUV2ZW50KTtcblx0ICAgIGlmIChjdXN0b21EYXRhICE9PSBudWxsKSB7XG5c
dCAgICAgIGV2ZW50LmRhdGEgPSBjdXN0b21EYXRhO1xuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAg
RXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGV2ZW50KTtcblx0
ICByZXR1cm4gZXZlbnQ7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdG9w
TGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuXG5cdCAqIEBwYXJhbSB7b2Jq
ZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cblx0ICogQHJldHVybiB7P3N0
cmluZ30gVGhlIHN0cmluZyBjb3JyZXNwb25kaW5nIHRvIHRoaXMgYGJlZm9yZUlucHV0YCBldmVu
dC5cblx0ICovXG5cdGZ1bmN0aW9uIGdldE5hdGl2ZUJlZm9yZUlucHV0Q2hhcnModG9wTGV2ZWxU
eXBlLCBuYXRpdmVFdmVudCkge1xuXHQgIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG5cdCAgICBj
YXNlICd0b3BDb21wb3NpdGlvbkVuZCc6XG5cdCAgICAgIHJldHVybiBnZXREYXRhRnJvbUN1c3Rv
bUV2ZW50KG5hdGl2ZUV2ZW50KTtcblx0ICAgIGNhc2UgJ3RvcEtleVByZXNzJzpcblx0ICAgICAg
LyoqXG5cdCAgICAgICAqIElmIG5hdGl2ZSBgdGV4dElucHV0YCBldmVudHMgYXJlIGF2YWlsYWJs
ZSwgb3VyIGdvYWwgaXMgdG8gbWFrZVxuXHQgICAgICAgKiB1c2Ugb2YgdGhlbS4gSG93ZXZlciwg
dGhlcmUgaXMgYSBzcGVjaWFsIGNhc2U6IHRoZSBzcGFjZWJhciBrZXkuXG5cdCAgICAgICAqIElu
IFdlYmtpdCwgcHJldmVudGluZyBkZWZhdWx0IG9uIGEgc3BhY2ViYXIgYHRleHRJbnB1dGAgZXZl
bnRcblx0ICAgICAgICogY2FuY2VscyBjaGFyYWN0ZXIgaW5zZXJ0aW9uLCBidXQgaXQgKmFsc28q
IGNhdXNlcyB0aGUgYnJvd3NlclxuXHQgICAgICAgKiB0byBmYWxsIGJhY2sgdG8gaXRzIGRlZmF1
bHQgc3BhY2ViYXIgYmVoYXZpb3Igb2Ygc2Nyb2xsaW5nIHRoZVxuXHQgICAgICAgKiBwYWdlLlxu
XHQgICAgICAgKlxuXHQgICAgICAgKiBUcmFja2luZyBhdDpcblx0ICAgICAgICogaHR0cHM6Ly9j
b2RlLmdvb2dsZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTM1NTEwM1xuXHQgICAg
ICAgKlxuXHQgICAgICAgKiBUbyBhdm9pZCB0aGlzIGlzc3VlLCB1c2UgdGhlIGtleXByZXNzIGV2
ZW50IGFzIGlmIG5vIGB0ZXh0SW5wdXRgXG5cdCAgICAgICAqIGV2ZW50IGlzIGF2YWlsYWJsZS5c
blx0ICAgICAgICovXG5cdCAgICAgIHZhciB3aGljaCA9IG5hdGl2ZUV2ZW50LndoaWNoO1xuXHQg
ICAgICBpZiAod2hpY2ggIT09IFNQQUNFQkFSX0NPREUpIHtcblx0ICAgICAgICByZXR1cm4gbnVs
bDtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgaGFzU3BhY2VLZXlwcmVzcyA9IHRydWU7XG5cdCAg
ICAgIHJldHVybiBTUEFDRUJBUl9DSEFSO1xuXHRcblx0ICAgIGNhc2UgJ3RvcFRleHRJbnB1dCc6
XG5cdCAgICAgIC8vIFJlY29yZCB0aGUgY2hhcmFjdGVycyB0byBiZSBhZGRlZCB0byB0aGUgRE9N
LlxuXHQgICAgICB2YXIgY2hhcnMgPSBuYXRpdmVFdmVudC5kYXRhO1xuXHRcblx0ICAgICAgLy8g
SWYgaXQncyBhIHNwYWNlYmFyIGNoYXJhY3RlciwgYXNzdW1lIHRoYXQgd2UgaGF2ZSBhbHJlYWR5
IGhhbmRsZWRcblx0ICAgICAgLy8gaXQgYXQgdGhlIGtleXByZXNzIGxldmVsIGFuZCBiYWlsIGlt
bWVkaWF0ZWx5LiBBbmRyb2lkIENocm9tZVxuXHQgICAgICAvLyBkb2Vzbid0IGdpdmUgdXMga2V5
Y29kZXMsIHNvIHdlIG5lZWQgdG8gYmxhY2tsaXN0IGl0LlxuXHQgICAgICBpZiAoY2hhcnMgPT09
IFNQQUNFQkFSX0NIQVIgJiYgaGFzU3BhY2VLZXlwcmVzcykge1xuXHQgICAgICAgIHJldHVybiBu
dWxsO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICByZXR1cm4gY2hhcnM7XG5cdFxuXHQgICAgZGVm
YXVsdDpcblx0ICAgICAgLy8gRm9yIG90aGVyIG5hdGl2ZSBldmVudCB0eXBlcywgZG8gbm90aGlu
Zy5cblx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICogRm9y
IGJyb3dzZXJzIHRoYXQgZG8gbm90IHByb3ZpZGUgdGhlIGB0ZXh0SW5wdXRgIGV2ZW50LCBleHRy
YWN0IHRoZVxuXHQgKiBhcHByb3ByaWF0ZSBzdHJpbmcgdG8gdXNlIGZvciBTeW50aGV0aWNJbnB1
dEV2ZW50LlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlIFJlY29yZCBm
cm9tIGBFdmVudENvbnN0YW50c2AuXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBO
YXRpdmUgYnJvd3NlciBldmVudC5cblx0ICogQHJldHVybiB7P3N0cmluZ30gVGhlIGZhbGxiYWNr
IHN0cmluZyBmb3IgdGhpcyBgYmVmb3JlSW5wdXRgIGV2ZW50LlxuXHQgKi9cblx0ZnVuY3Rpb24g
Z2V0RmFsbGJhY2tCZWZvcmVJbnB1dENoYXJzKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpIHtc
blx0ICAvLyBJZiB3ZSBhcmUgY3VycmVudGx5IGNvbXBvc2luZyAoSU1FKSBhbmQgdXNpbmcgYSBm
YWxsYmFjayB0byBkbyBzbyxcblx0ICAvLyB0cnkgdG8gZXh0cmFjdCB0aGUgY29tcG9zZWQgY2hh
cmFjdGVycyBmcm9tIHRoZSBmYWxsYmFjayBvYmplY3QuXG5cdCAgLy8gSWYgY29tcG9zaXRpb24g
ZXZlbnQgaXMgYXZhaWxhYmxlLCB3ZSBleHRyYWN0IGEgc3RyaW5nIG9ubHkgYXRcblx0ICAvLyBj
b21wb3NpdGlvbmV2ZW50LCBvdGhlcndpc2UgZXh0cmFjdCBpdCBhdCBmYWxsYmFjayBldmVudHMu
XG5cdCAgaWYgKGN1cnJlbnRDb21wb3NpdGlvbikge1xuXHQgICAgaWYgKHRvcExldmVsVHlwZSA9
PT0gJ3RvcENvbXBvc2l0aW9uRW5kJyB8fCAhY2FuVXNlQ29tcG9zaXRpb25FdmVudCAmJiBpc0Zh
bGxiYWNrQ29tcG9zaXRpb25FbmQodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkpIHtcblx0ICAg
ICAgdmFyIGNoYXJzID0gY3VycmVudENvbXBvc2l0aW9uLmdldERhdGEoKTtcblx0ICAgICAgRmFs
bGJhY2tDb21wb3NpdGlvblN0YXRlLnJlbGVhc2UoY3VycmVudENvbXBvc2l0aW9uKTtcblx0ICAg
ICAgY3VycmVudENvbXBvc2l0aW9uID0gbnVsbDtcblx0ICAgICAgcmV0dXJuIGNoYXJzO1xuXHQg
ICAgfVxuXHQgICAgcmV0dXJuIG51bGw7XG5cdCAgfVxuXHRcblx0ICBzd2l0Y2ggKHRvcExldmVs
VHlwZSkge1xuXHQgICAgY2FzZSAndG9wUGFzdGUnOlxuXHQgICAgICAvLyBJZiBhIHBhc3RlIGV2
ZW50IG9jY3VycyBhZnRlciBhIGtleXByZXNzLCB0aHJvdyBvdXQgdGhlIGlucHV0XG5cdCAgICAg
IC8vIGNoYXJzLiBQYXN0ZSBldmVudHMgc2hvdWxkIG5vdCBsZWFkIHRvIEJlZm9yZUlucHV0IGV2
ZW50cy5cblx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICBjYXNlICd0b3BLZXlQcmVzcyc6XG5c
dCAgICAgIC8qKlxuXHQgICAgICAgKiBBcyBvZiB2MjcsIEZpcmVmb3ggbWF5IGZpcmUga2V5cHJl
c3MgZXZlbnRzIGV2ZW4gd2hlbiBubyBjaGFyYWN0ZXJcblx0ICAgICAgICogd2lsbCBiZSBpbnNl
cnRlZC4gQSBmZXcgcG9zc2liaWxpdGllczpcblx0ICAgICAgICpcblx0ICAgICAgICogLSBgd2hp
Y2hgIGlzIGAwYC4gQXJyb3cga2V5cywgRXNjIGtleSwgZXRjLlxuXHQgICAgICAgKlxuXHQgICAg
ICAgKiAtIGB3aGljaGAgaXMgdGhlIHByZXNzZWQga2V5IGNvZGUsIGJ1dCBubyBjaGFyIGlzIGF2
YWlsYWJsZS5cblx0ICAgICAgICogICBFeDogJ0FsdEdyICsgZGAgaW4gUG9saXNoLiBUaGVyZSBp
cyBubyBtb2RpZmllZCBjaGFyYWN0ZXIgZm9yXG5cdCAgICAgICAqICAgdGhpcyBrZXkgY29tYmlu
YXRpb24gYW5kIG5vIGNoYXJhY3RlciBpcyBpbnNlcnRlZCBpbnRvIHRoZVxuXHQgICAgICAgKiAg
IGRvY3VtZW50LCBidXQgRkYgZmlyZXMgdGhlIGtleXByZXNzIGZvciBjaGFyIGNvZGUgYDEwMGAg
YW55d2F5LlxuXHQgICAgICAgKiAgIE5vIGBpbnB1dGAgZXZlbnQgd2lsbCBvY2N1ci5cblx0ICAg
ICAgICpcblx0ICAgICAgICogLSBgd2hpY2hgIGlzIHRoZSBwcmVzc2VkIGtleSBjb2RlLCBidXQg
YSBjb21tYW5kIGNvbWJpbmF0aW9uIGlzXG5cdCAgICAgICAqICAgYmVpbmcgdXNlZC4gRXg6IGBD
bWQrQ2AuIE5vIGNoYXJhY3RlciBpcyBpbnNlcnRlZCwgYW5kIG5vXG5cdCAgICAgICAqICAgYGlu
cHV0YCBldmVudCB3aWxsIG9jY3VyLlxuXHQgICAgICAgKi9cblx0ICAgICAgaWYgKG5hdGl2ZUV2
ZW50LndoaWNoICYmICFpc0tleXByZXNzQ29tbWFuZChuYXRpdmVFdmVudCkpIHtcblx0ICAgICAg
ICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShuYXRpdmVFdmVudC53aGljaCk7XG5cdCAgICAg
IH1cblx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICBjYXNlICd0b3BDb21wb3NpdGlvbkVuZCc6
XG5cdCAgICAgIHJldHVybiB1c2VGYWxsYmFja0NvbXBvc2l0aW9uRGF0YSA/IG51bGwgOiBuYXRp
dmVFdmVudC5kYXRhO1xuXHQgICAgZGVmYXVsdDpcblx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAg
fVxuXHR9XG5cdFxuXHQvKipcblx0ICogRXh0cmFjdCBhIFN5bnRoZXRpY0lucHV0RXZlbnQgZm9y
IGBiZWZvcmVJbnB1dGAsIGJhc2VkIG9uIGVpdGhlciBuYXRpdmVcblx0ICogYHRleHRJbnB1dGAg
b3IgZmFsbGJhY2sgYmVoYXZpb3IuXG5cdCAqXG5cdCAqIEByZXR1cm4gez9vYmplY3R9IEEgU3lu
dGhldGljSW5wdXRFdmVudC5cblx0ICovXG5cdGZ1bmN0aW9uIGV4dHJhY3RCZWZvcmVJbnB1dEV2
ZW50KHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFy
Z2V0KSB7XG5cdCAgdmFyIGNoYXJzO1xuXHRcblx0ICBpZiAoY2FuVXNlVGV4dElucHV0RXZlbnQp
IHtcblx0ICAgIGNoYXJzID0gZ2V0TmF0aXZlQmVmb3JlSW5wdXRDaGFycyh0b3BMZXZlbFR5cGUs
IG5hdGl2ZUV2ZW50KTtcblx0ICB9IGVsc2Uge1xuXHQgICAgY2hhcnMgPSBnZXRGYWxsYmFja0Jl
Zm9yZUlucHV0Q2hhcnModG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCk7XG5cdCAgfVxuXHRcblx0
ICAvLyBJZiBubyBjaGFyYWN0ZXJzIGFyZSBiZWluZyBpbnNlcnRlZCwgbm8gQmVmb3JlSW5wdXQg
ZXZlbnQgc2hvdWxkXG5cdCAgLy8gYmUgZmlyZWQuXG5cdCAgaWYgKCFjaGFycykge1xuXHQgICAg
cmV0dXJuIG51bGw7XG5cdCAgfVxuXHRcblx0ICB2YXIgZXZlbnQgPSBTeW50aGV0aWNJbnB1dEV2
ZW50LmdldFBvb2xlZChldmVudFR5cGVzLmJlZm9yZUlucHV0LCB0YXJnZXRJbnN0LCBuYXRpdmVF
dmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuXHRcblx0ICBldmVudC5kYXRhID0gY2hhcnM7XG5c
dCAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGV2ZW50KTtc
blx0ICByZXR1cm4gZXZlbnQ7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBDcmVhdGUgYW4gYG9uQmVm
b3JlSW5wdXRgIGV2ZW50IHRvIG1hdGNoXG5cdCAqIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTMv
V0QtRE9NLUxldmVsLTMtRXZlbnRzLTIwMTMxMTA1LyNldmVudHMtaW5wdXRldmVudHMuXG5cdCAq
XG5cdCAqIFRoaXMgZXZlbnQgcGx1Z2luIGlzIGJhc2VkIG9uIHRoZSBuYXRpdmUgYHRleHRJbnB1
dGAgZXZlbnRcblx0ICogYXZhaWxhYmxlIGluIENocm9tZSwgU2FmYXJpLCBPcGVyYSwgYW5kIElF
LiBUaGlzIGV2ZW50IGZpcmVzIGFmdGVyXG5cdCAqIGBvbktleVByZXNzYCBhbmQgYG9uQ29tcG9z
aXRpb25FbmRgLCBidXQgYmVmb3JlIGBvbklucHV0YC5cblx0ICpcblx0ICogYGJlZm9yZUlucHV0
YCBpcyBzcGVjJ2QgYnV0IG5vdCBpbXBsZW1lbnRlZCBpbiBhbnkgYnJvd3NlcnMsIGFuZFxuXHQg
KiB0aGUgYGlucHV0YCBldmVudCBkb2VzIG5vdCBwcm92aWRlIGFueSB1c2VmdWwgaW5mb3JtYXRp
b24gYWJvdXQgd2hhdCBoYXNcblx0ICogYWN0dWFsbHkgYmVlbiBhZGRlZCwgY29udHJhcnkgdG8g
dGhlIHNwZWMuIFRodXMsIGB0ZXh0SW5wdXRgIGlzIHRoZSBiZXN0XG5cdCAqIGF2YWlsYWJsZSBl
dmVudCB0byBpZGVudGlmeSB0aGUgY2hhcmFjdGVycyB0aGF0IGhhdmUgYWN0dWFsbHkgYmVlbiBp
bnNlcnRlZFxuXHQgKiBpbnRvIHRoZSB0YXJnZXQgbm9kZS5cblx0ICpcblx0ICogVGhpcyBwbHVn
aW4gaXMgYWxzbyByZXNwb25zaWJsZSBmb3IgZW1pdHRpbmcgYGNvbXBvc2l0aW9uYCBldmVudHMs
IHRodXNcblx0ICogYWxsb3dpbmcgdXMgdG8gc2hhcmUgY29tcG9zaXRpb24gZmFsbGJhY2sgY29k
ZSBmb3IgYm90aCBgYmVmb3JlSW5wdXRgIGFuZFxuXHQgKiBgY29tcG9zaXRpb25gIGV2ZW50IHR5
cGVzLlxuXHQgKi9cblx0dmFyIEJlZm9yZUlucHV0RXZlbnRQbHVnaW4gPSB7XG5cdCAgZXZlbnRU
eXBlczogZXZlbnRUeXBlcyxcblx0XG5cdCAgZXh0cmFjdEV2ZW50czogZnVuY3Rpb24gKHRvcExl
dmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG5c
dCAgICByZXR1cm4gW2V4dHJhY3RDb21wb3NpdGlvbkV2ZW50KHRvcExldmVsVHlwZSwgdGFyZ2V0
SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSwgZXh0cmFjdEJlZm9yZUlucHV0
RXZlbnQodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRU
YXJnZXQpXTtcblx0ICB9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IEJlZm9yZUlucHV0
RXZlbnRQbHVnaW47XG5cbi8qKiovIH0sXG4vKiAxMjcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5c
dHZhciBDU1NQcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oNTgpO1xuXHR2YXIgRXhlY3V0
aW9uRW52aXJvbm1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xuXHR2YXIgUmVhY3RJbnN0
cnVtZW50YXRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpO1xuXHRcblx0dmFyIGNhbWVsaXpl
U3R5bGVOYW1lID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5OSk7XG5cdHZhciBkYW5nZXJvdXNTdHls
ZVZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNzgpO1xuXHR2YXIgaHlwaGVuYXRlU3R5bGVO
YW1lID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDYpO1xuXHR2YXIgbWVtb2l6ZVN0cmluZ09ubHkg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwOSk7XG5cdHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygyKTtcblx0XG5cdHZhciBwcm9jZXNzU3R5bGVOYW1lID0gbWVtb2l6ZVN0cmluZ09u
bHkoZnVuY3Rpb24gKHN0eWxlTmFtZSkge1xuXHQgIHJldHVybiBoeXBoZW5hdGVTdHlsZU5hbWUo
c3R5bGVOYW1lKTtcblx0fSk7XG5cdFxuXHR2YXIgaGFzU2hvcnRoYW5kUHJvcGVydHlCdWcgPSBm
YWxzZTtcblx0dmFyIHN0eWxlRmxvYXRBY2Nlc3NvciA9ICdjc3NGbG9hdCc7XG5cdGlmIChFeGVj
dXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHtcblx0ICB2YXIgdGVtcFN0eWxlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jykuc3R5bGU7XG5cdCAgdHJ5IHtcblx0ICAgIC8vIElFOCB0
aHJvd3MgXCJJbnZhbGlkIGFyZ3VtZW50LlwiIGlmIHJlc2V0dGluZyBzaG9ydGhhbmQgc3R5bGUg
cHJvcGVydGllcy5cblx0ICAgIHRlbXBTdHlsZS5mb250ID0gJyc7XG5cdCAgfSBjYXRjaCAoZSkg
e1xuXHQgICAgaGFzU2hvcnRoYW5kUHJvcGVydHlCdWcgPSB0cnVlO1xuXHQgIH1cblx0ICAvLyBJ
RTggb25seSBzdXBwb3J0cyBhY2Nlc3NpbmcgY3NzRmxvYXQgKHN0YW5kYXJkKSBhcyBzdHlsZUZs
b2F0XG5cdCAgaWYgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5jc3NGbG9hdCA9PT0g
dW5kZWZpbmVkKSB7XG5cdCAgICBzdHlsZUZsb2F0QWNjZXNzb3IgPSAnc3R5bGVGbG9hdCc7XG5c
dCAgfVxuXHR9XG5cdFxuXHRpZiAoZmFsc2UpIHtcblx0ICAvLyAnbXNUcmFuc2Zvcm0nIGlzIGNv
cnJlY3QsIGJ1dCB0aGUgb3RoZXIgcHJlZml4ZXMgc2hvdWxkIGJlIGNhcGl0YWxpemVkXG5cdCAg
dmFyIGJhZFZlbmRvcmVkU3R5bGVOYW1lUGF0dGVybiA9IC9eKD86d2Via2l0fG1venxvKVtBLVpd
Lztcblx0XG5cdCAgLy8gc3R5bGUgdmFsdWVzIHNob3VsZG4ndCBjb250YWluIGEgc2VtaWNvbG9u
XG5cdCAgdmFyIGJhZFN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uUGF0dGVybiA9IC87XFxzKiQvO1xu
XHRcblx0ICB2YXIgd2FybmVkU3R5bGVOYW1lcyA9IHt9O1xuXHQgIHZhciB3YXJuZWRTdHlsZVZh
bHVlcyA9IHt9O1xuXHQgIHZhciB3YXJuZWRGb3JOYU5WYWx1ZSA9IGZhbHNlO1xuXHRcblx0ICB2
YXIgd2Fybkh5cGhlbmF0ZWRTdHlsZU5hbWUgPSBmdW5jdGlvbiAobmFtZSwgb3duZXIpIHtcblx0
ICAgIGlmICh3YXJuZWRTdHlsZU5hbWVzLmhhc093blByb3BlcnR5KG5hbWUpICYmIHdhcm5lZFN0
eWxlTmFtZXNbbmFtZV0pIHtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHRcblx0ICAgIHdh
cm5lZFN0eWxlTmFtZXNbbmFtZV0gPSB0cnVlO1xuXHQgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdVbnN1cHBvcnRlZCBzdHlsZSBwcm9w
ZXJ0eSAlcy4gRGlkIHlvdSBtZWFuICVzPyVzJywgbmFtZSwgY2FtZWxpemVTdHlsZU5hbWUobmFt
ZSksIGNoZWNrUmVuZGVyTWVzc2FnZShvd25lcikpIDogdm9pZCAwO1xuXHQgIH07XG5cdFxuXHQg
IHZhciB3YXJuQmFkVmVuZG9yZWRTdHlsZU5hbWUgPSBmdW5jdGlvbiAobmFtZSwgb3duZXIpIHtc
blx0ICAgIGlmICh3YXJuZWRTdHlsZU5hbWVzLmhhc093blByb3BlcnR5KG5hbWUpICYmIHdhcm5l
ZFN0eWxlTmFtZXNbbmFtZV0pIHtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHRcblx0ICAg
IHdhcm5lZFN0eWxlTmFtZXNbbmFtZV0gPSB0cnVlO1xuXHQgICAgcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdVbnN1cHBvcnRlZCB2ZW5kb3It
cHJlZml4ZWQgc3R5bGUgcHJvcGVydHkgJXMuIERpZCB5b3UgbWVhbiAlcz8lcycsIG5hbWUsIG5h
bWUuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBuYW1lLnNsaWNlKDEpLCBjaGVja1JlbmRlck1l
c3NhZ2Uob3duZXIpKSA6IHZvaWQgMDtcblx0ICB9O1xuXHRcblx0ICB2YXIgd2FyblN0eWxlVmFs
dWVXaXRoU2VtaWNvbG9uID0gZnVuY3Rpb24gKG5hbWUsIHZhbHVlLCBvd25lcikge1xuXHQgICAg
aWYgKHdhcm5lZFN0eWxlVmFsdWVzLmhhc093blByb3BlcnR5KHZhbHVlKSAmJiB3YXJuZWRTdHls
ZVZhbHVlc1t2YWx1ZV0pIHtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHRcblx0ICAgIHdh
cm5lZFN0eWxlVmFsdWVzW3ZhbHVlXSA9IHRydWU7XG5cdCAgICBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgXCJTdHlsZSBwcm9wZXJ0eSB2YWx1
ZXMgc2hvdWxkbid0IGNvbnRhaW4gYSBzZW1pY29sb24uJXMgXCIgKyAnVHJ5IFwiJXM6ICVzXCIg
aW5zdGVhZC4nLCBjaGVja1JlbmRlck1lc3NhZ2Uob3duZXIpLCBuYW1lLCB2YWx1ZS5yZXBsYWNl
KGJhZFN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uUGF0dGVybiwgJycpKSA6IHZvaWQgMDtcblx0ICB9
O1xuXHRcblx0ICB2YXIgd2FyblN0eWxlVmFsdWVJc05hTiA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1
ZSwgb3duZXIpIHtcblx0ICAgIGlmICh3YXJuZWRGb3JOYU5WYWx1ZSkge1xuXHQgICAgICByZXR1
cm47XG5cdCAgICB9XG5cdFxuXHQgICAgd2FybmVkRm9yTmFOVmFsdWUgPSB0cnVlO1xuXHQgICAg
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdg
TmFOYCBpcyBhbiBpbnZhbGlkIHZhbHVlIGZvciB0aGUgYCVzYCBjc3Mgc3R5bGUgcHJvcGVydHku
JXMnLCBuYW1lLCBjaGVja1JlbmRlck1lc3NhZ2Uob3duZXIpKSA6IHZvaWQgMDtcblx0ICB9O1xu
XHRcblx0ICB2YXIgY2hlY2tSZW5kZXJNZXNzYWdlID0gZnVuY3Rpb24gKG93bmVyKSB7XG5cdCAg
ICBpZiAob3duZXIpIHtcblx0ICAgICAgdmFyIG5hbWUgPSBvd25lci5nZXROYW1lKCk7XG5cdCAg
ICAgIGlmIChuYW1lKSB7XG5cdCAgICAgICAgcmV0dXJuICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRo
b2Qgb2YgYCcgKyBuYW1lICsgJ2AuJztcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgcmV0dXJu
ICcnO1xuXHQgIH07XG5cdFxuXHQgIC8qKlxuXHQgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG5c
dCAgICogQHBhcmFtIHsqfSB2YWx1ZVxuXHQgICAqIEBwYXJhbSB7UmVhY3RET01Db21wb25lbnR9
IGNvbXBvbmVudFxuXHQgICAqL1xuXHQgIHZhciB3YXJuVmFsaWRTdHlsZSA9IGZ1bmN0aW9uIChu
YW1lLCB2YWx1ZSwgY29tcG9uZW50KSB7XG5cdCAgICB2YXIgb3duZXI7XG5cdCAgICBpZiAoY29t
cG9uZW50KSB7XG5cdCAgICAgIG93bmVyID0gY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3du
ZXI7XG5cdCAgICB9XG5cdCAgICBpZiAobmFtZS5pbmRleE9mKCctJykgPiAtMSkge1xuXHQgICAg
ICB3YXJuSHlwaGVuYXRlZFN0eWxlTmFtZShuYW1lLCBvd25lcik7XG5cdCAgICB9IGVsc2UgaWYg
KGJhZFZlbmRvcmVkU3R5bGVOYW1lUGF0dGVybi50ZXN0KG5hbWUpKSB7XG5cdCAgICAgIHdhcm5C
YWRWZW5kb3JlZFN0eWxlTmFtZShuYW1lLCBvd25lcik7XG5cdCAgICB9IGVsc2UgaWYgKGJhZFN0
eWxlVmFsdWVXaXRoU2VtaWNvbG9uUGF0dGVybi50ZXN0KHZhbHVlKSkge1xuXHQgICAgICB3YXJu
U3R5bGVWYWx1ZVdpdGhTZW1pY29sb24obmFtZSwgdmFsdWUsIG93bmVyKTtcblx0ICAgIH1cblx0
XG5cdCAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyAmJiBpc05hTih2YWx1ZSkpIHtc
blx0ICAgICAgd2FyblN0eWxlVmFsdWVJc05hTihuYW1lLCB2YWx1ZSwgb3duZXIpO1xuXHQgICAg
fVxuXHQgIH07XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBPcGVyYXRpb25zIGZvciBkZWFsaW5nIHdp
dGggQ1NTIHByb3BlcnRpZXMuXG5cdCAqL1xuXHR2YXIgQ1NTUHJvcGVydHlPcGVyYXRpb25zID0g
e1xuXHQgIC8qKlxuXHQgICAqIFNlcmlhbGl6ZXMgYSBtYXBwaW5nIG9mIHN0eWxlIHByb3BlcnRp
ZXMgZm9yIHVzZSBhcyBpbmxpbmUgc3R5bGVzOlxuXHQgICAqXG5cdCAgICogICA+IGNyZWF0ZU1h
cmt1cEZvclN0eWxlcyh7d2lkdGg6ICcyMDBweCcsIGhlaWdodDogMH0pXG5cdCAgICogICBcIndp
ZHRoOjIwMHB4O2hlaWdodDowO1wiXG5cdCAgICpcblx0ICAgKiBVbmRlZmluZWQgdmFsdWVzIGFy
ZSBpZ25vcmVkIHNvIHRoYXQgZGVjbGFyYXRpdmUgcHJvZ3JhbW1pbmcgaXMgZWFzaWVyLlxuXHQg
ICAqIFRoZSByZXN1bHQgc2hvdWxkIGJlIEhUTUwtZXNjYXBlZCBiZWZvcmUgaW5zZXJ0aW9uIGlu
dG8gdGhlIERPTS5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBzdHlsZXNcblx0ICAg
KiBAcGFyYW0ge1JlYWN0RE9NQ29tcG9uZW50fSBjb21wb25lbnRcblx0ICAgKiBAcmV0dXJuIHs/
c3RyaW5nfVxuXHQgICAqL1xuXHQgIGNyZWF0ZU1hcmt1cEZvclN0eWxlczogZnVuY3Rpb24gKHN0
eWxlcywgY29tcG9uZW50KSB7XG5cdCAgICB2YXIgc2VyaWFsaXplZCA9ICcnO1xuXHQgICAgZm9y
ICh2YXIgc3R5bGVOYW1lIGluIHN0eWxlcykge1xuXHQgICAgICBpZiAoIXN0eWxlcy5oYXNPd25Q
cm9wZXJ0eShzdHlsZU5hbWUpKSB7XG5cdCAgICAgICAgY29udGludWU7XG5cdCAgICAgIH1cblx0
ICAgICAgdmFyIGlzQ3VzdG9tUHJvcGVydHkgPSBzdHlsZU5hbWUuaW5kZXhPZignLS0nKSA9PT0g
MDtcblx0ICAgICAgdmFyIHN0eWxlVmFsdWUgPSBzdHlsZXNbc3R5bGVOYW1lXTtcblx0ICAgICAg
aWYgKGZhbHNlKSB7XG5cdCAgICAgICAgaWYgKCFpc0N1c3RvbVByb3BlcnR5KSB7XG5cdCAgICAg
ICAgICB3YXJuVmFsaWRTdHlsZShzdHlsZU5hbWUsIHN0eWxlVmFsdWUsIGNvbXBvbmVudCk7XG5c
dCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAgIGlmIChzdHlsZVZhbHVlICE9IG51bGwpIHtc
blx0ICAgICAgICBzZXJpYWxpemVkICs9IHByb2Nlc3NTdHlsZU5hbWUoc3R5bGVOYW1lKSArICc6
Jztcblx0ICAgICAgICBzZXJpYWxpemVkICs9IGRhbmdlcm91c1N0eWxlVmFsdWUoc3R5bGVOYW1l
LCBzdHlsZVZhbHVlLCBjb21wb25lbnQsIGlzQ3VzdG9tUHJvcGVydHkpICsgJzsnO1xuXHQgICAg
ICB9XG5cdCAgICB9XG5cdCAgICByZXR1cm4gc2VyaWFsaXplZCB8fCBudWxsO1xuXHQgIH0sXG5c
dFxuXHQgIC8qKlxuXHQgICAqIFNldHMgdGhlIHZhbHVlIGZvciBtdWx0aXBsZSBzdHlsZXMgb24g
YSBub2RlLiAgSWYgYSB2YWx1ZSBpcyBzcGVjaWZpZWQgYXNcblx0ICAgKiAnJyAoZW1wdHkgc3Ry
aW5nKSwgdGhlIGNvcnJlc3BvbmRpbmcgc3R5bGUgcHJvcGVydHkgd2lsbCBiZSB1bnNldC5cblx0
ICAgKlxuXHQgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuXHQgICAqIEBwYXJhbSB7b2Jq
ZWN0fSBzdHlsZXNcblx0ICAgKiBAcGFyYW0ge1JlYWN0RE9NQ29tcG9uZW50fSBjb21wb25lbnRc
blx0ICAgKi9cblx0ICBzZXRWYWx1ZUZvclN0eWxlczogZnVuY3Rpb24gKG5vZGUsIHN0eWxlcywg
Y29tcG9uZW50KSB7XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgUmVhY3RJbnN0cnVtZW50
YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7XG5cdCAgICAgICAgaW5zdGFuY2VJRDog
Y29tcG9uZW50Ll9kZWJ1Z0lELFxuXHQgICAgICAgIHR5cGU6ICd1cGRhdGUgc3R5bGVzJyxcblx0
ICAgICAgICBwYXlsb2FkOiBzdHlsZXNcblx0ICAgICAgfSk7XG5cdCAgICB9XG5cdFxuXHQgICAg
dmFyIHN0eWxlID0gbm9kZS5zdHlsZTtcblx0ICAgIGZvciAodmFyIHN0eWxlTmFtZSBpbiBzdHls
ZXMpIHtcblx0ICAgICAgaWYgKCFzdHlsZXMuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSkge1xu
XHQgICAgICAgIGNvbnRpbnVlO1xuXHQgICAgICB9XG5cdCAgICAgIHZhciBpc0N1c3RvbVByb3Bl
cnR5ID0gc3R5bGVOYW1lLmluZGV4T2YoJy0tJykgPT09IDA7XG5cdCAgICAgIGlmIChmYWxzZSkg
e1xuXHQgICAgICAgIGlmICghaXNDdXN0b21Qcm9wZXJ0eSkge1xuXHQgICAgICAgICAgd2FyblZh
bGlkU3R5bGUoc3R5bGVOYW1lLCBzdHlsZXNbc3R5bGVOYW1lXSwgY29tcG9uZW50KTtcblx0ICAg
ICAgICB9XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIHN0eWxlVmFsdWUgPSBkYW5nZXJvdXNTdHls
ZVZhbHVlKHN0eWxlTmFtZSwgc3R5bGVzW3N0eWxlTmFtZV0sIGNvbXBvbmVudCwgaXNDdXN0b21Q
cm9wZXJ0eSk7XG5cdCAgICAgIGlmIChzdHlsZU5hbWUgPT09ICdmbG9hdCcgfHwgc3R5bGVOYW1l
ID09PSAnY3NzRmxvYXQnKSB7XG5cdCAgICAgICAgc3R5bGVOYW1lID0gc3R5bGVGbG9hdEFjY2Vz
c29yO1xuXHQgICAgICB9XG5cdCAgICAgIGlmIChpc0N1c3RvbVByb3BlcnR5KSB7XG5cdCAgICAg
ICAgc3R5bGUuc2V0UHJvcGVydHkoc3R5bGVOYW1lLCBzdHlsZVZhbHVlKTtcblx0ICAgICAgfSBl
bHNlIGlmIChzdHlsZVZhbHVlKSB7XG5cdCAgICAgICAgc3R5bGVbc3R5bGVOYW1lXSA9IHN0eWxl
VmFsdWU7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgdmFyIGV4cGFuc2lvbiA9IGhhc1No
b3J0aGFuZFByb3BlcnR5QnVnICYmIENTU1Byb3BlcnR5LnNob3J0aGFuZFByb3BlcnR5RXhwYW5z
aW9uc1tzdHlsZU5hbWVdO1xuXHQgICAgICAgIGlmIChleHBhbnNpb24pIHtcblx0ICAgICAgICAg
IC8vIFNob3J0aGFuZCBwcm9wZXJ0eSB0aGF0IElFOCB3b24ndCBsaWtlIHVuc2V0dGluZywgc28g
dW5zZXQgZWFjaFxuXHQgICAgICAgICAgLy8gY29tcG9uZW50IHRvIHBsYWNhdGUgaXRcblx0ICAg
ICAgICAgIGZvciAodmFyIGluZGl2aWR1YWxTdHlsZU5hbWUgaW4gZXhwYW5zaW9uKSB7XG5cdCAg
ICAgICAgICAgIHN0eWxlW2luZGl2aWR1YWxTdHlsZU5hbWVdID0gJyc7XG5cdCAgICAgICAgICB9
XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIHN0eWxlW3N0eWxlTmFtZV0gPSAnJztc
blx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdFxuXHRtb2R1
bGUuZXhwb3J0cyA9IENTU1Byb3BlcnR5T3BlcmF0aW9ucztcblxuLyoqKi8gfSxcbi8qIDEyOCAq
L1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7
XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5c
dCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRc
blx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIEV2ZW50UGx1Z2luSHViID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxOSk7XG5cdHZhciBFdmVudFByb3BhZ2F0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVf
XygyMCk7XG5cdHZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9fd2VicGFja19yZXF1aXJlX18o
Nik7XG5cdHZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUp
O1xuXHR2YXIgUmVhY3RVcGRhdGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTtcblx0dmFyIFN5
bnRoZXRpY0V2ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCk7XG5cdFxuXHR2YXIgaW5wdXRW
YWx1ZVRyYWNraW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3NCk7XG5cdHZhciBnZXRFdmVudFRh
cmdldCA9IF9fd2VicGFja19yZXF1aXJlX18oNDYpO1xuXHR2YXIgaXNFdmVudFN1cHBvcnRlZCA9
IF9fd2VicGFja19yZXF1aXJlX18oNDcpO1xuXHR2YXIgaXNUZXh0SW5wdXRFbGVtZW50ID0gX193
ZWJwYWNrX3JlcXVpcmVfXyg3Nik7XG5cdFxuXHR2YXIgZXZlbnRUeXBlcyA9IHtcblx0ICBjaGFu
Z2U6IHtcblx0ICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG5cdCAgICAgIGJ1YmJsZWQ6
ICdvbkNoYW5nZScsXG5cdCAgICAgIGNhcHR1cmVkOiAnb25DaGFuZ2VDYXB0dXJlJ1xuXHQgICAg
fSxcblx0ICAgIGRlcGVuZGVuY2llczogWyd0b3BCbHVyJywgJ3RvcENoYW5nZScsICd0b3BDbGlj
aycsICd0b3BGb2N1cycsICd0b3BJbnB1dCcsICd0b3BLZXlEb3duJywgJ3RvcEtleVVwJywgJ3Rv
cFNlbGVjdGlvbkNoYW5nZSddXG5cdCAgfVxuXHR9O1xuXHRcblx0ZnVuY3Rpb24gY3JlYXRlQW5k
QWNjdW11bGF0ZUNoYW5nZUV2ZW50KGluc3QsIG5hdGl2ZUV2ZW50LCB0YXJnZXQpIHtcblx0ICB2
YXIgZXZlbnQgPSBTeW50aGV0aWNFdmVudC5nZXRQb29sZWQoZXZlbnRUeXBlcy5jaGFuZ2UsIGlu
c3QsIG5hdGl2ZUV2ZW50LCB0YXJnZXQpO1xuXHQgIGV2ZW50LnR5cGUgPSAnY2hhbmdlJztcblx0
ICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoZXZlbnQpO1xu
XHQgIHJldHVybiBldmVudDtcblx0fVxuXHQvKipcblx0ICogRm9yIElFIHNoaW1zXG5cdCAqL1xu
XHR2YXIgYWN0aXZlRWxlbWVudCA9IG51bGw7XG5cdHZhciBhY3RpdmVFbGVtZW50SW5zdCA9IG51
bGw7XG5cdFxuXHQvKipcblx0ICogU0VDVElPTjogaGFuZGxlIGBjaGFuZ2VgIGV2ZW50XG5cdCAq
L1xuXHRmdW5jdGlvbiBzaG91bGRVc2VDaGFuZ2VFdmVudChlbGVtKSB7XG5cdCAgdmFyIG5vZGVO
YW1lID0gZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cdCAg
cmV0dXJuIG5vZGVOYW1lID09PSAnc2VsZWN0JyB8fCBub2RlTmFtZSA9PT0gJ2lucHV0JyAmJiBl
bGVtLnR5cGUgPT09ICdmaWxlJztcblx0fVxuXHRcblx0dmFyIGRvZXNDaGFuZ2VFdmVudEJ1YmJs
ZSA9IGZhbHNlO1xuXHRpZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG5cdCAg
Ly8gU2VlIGBoYW5kbGVDaGFuZ2VgIGNvbW1lbnQgYmVsb3dcblx0ICBkb2VzQ2hhbmdlRXZlbnRC
dWJibGUgPSBpc0V2ZW50U3VwcG9ydGVkKCdjaGFuZ2UnKSAmJiAoIWRvY3VtZW50LmRvY3VtZW50
TW9kZSB8fCBkb2N1bWVudC5kb2N1bWVudE1vZGUgPiA4KTtcblx0fVxuXHRcblx0ZnVuY3Rpb24g
bWFudWFsRGlzcGF0Y2hDaGFuZ2VFdmVudChuYXRpdmVFdmVudCkge1xuXHQgIHZhciBldmVudCA9
IGNyZWF0ZUFuZEFjY3VtdWxhdGVDaGFuZ2VFdmVudChhY3RpdmVFbGVtZW50SW5zdCwgbmF0aXZl
RXZlbnQsIGdldEV2ZW50VGFyZ2V0KG5hdGl2ZUV2ZW50KSk7XG5cdFxuXHQgIC8vIElmIGNoYW5n
ZSBhbmQgcHJvcGVydHljaGFuZ2UgYnViYmxlZCwgd2UnZCBqdXN0IGJpbmQgdG8gaXQgbGlrZSBh
bGwgdGhlXG5cdCAgLy8gb3RoZXIgZXZlbnRzIGFuZCBoYXZlIGl0IGdvIHRocm91Z2ggUmVhY3RC
cm93c2VyRXZlbnRFbWl0dGVyLiBTaW5jZSBpdFxuXHQgIC8vIGRvZXNuJ3QsIHdlIG1hbnVhbGx5
IGxpc3RlbiBmb3IgdGhlIGV2ZW50cyBhbmQgc28gd2UgaGF2ZSB0byBlbnF1ZXVlIGFuZFxuXHQg
IC8vIHByb2Nlc3MgdGhlIGFic3RyYWN0IGV2ZW50IG1hbnVhbGx5LlxuXHQgIC8vXG5cdCAgLy8g
QmF0Y2hpbmcgaXMgbmVjZXNzYXJ5IGhlcmUgaW4gb3JkZXIgdG8gZW5zdXJlIHRoYXQgYWxsIGV2
ZW50IGhhbmRsZXJzIHJ1blxuXHQgIC8vIGJlZm9yZSB0aGUgbmV4dCByZXJlbmRlciAoaW5jbHVk
aW5nIGV2ZW50IGhhbmRsZXJzIGF0dGFjaGVkIHRvIGFuY2VzdG9yXG5cdCAgLy8gZWxlbWVudHMg
aW5zdGVhZCBvZiBkaXJlY3RseSBvbiB0aGUgaW5wdXQpLiBXaXRob3V0IHRoaXMsIGNvbnRyb2xs
ZWRcblx0ICAvLyBjb21wb25lbnRzIGRvbid0IHdvcmsgcHJvcGVybHkgaW4gY29uanVuY3Rpb24g
d2l0aCBldmVudCBidWJibGluZyBiZWNhdXNlXG5cdCAgLy8gdGhlIGNvbXBvbmVudCBpcyByZXJl
bmRlcmVkIGFuZCB0aGUgdmFsdWUgcmV2ZXJ0ZWQgYmVmb3JlIGFsbCB0aGUgZXZlbnRcblx0ICAv
LyBoYW5kbGVycyBjYW4gcnVuLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0
L2lzc3Vlcy83MDguXG5cdCAgUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzKHJ1bkV2ZW50SW5C
YXRjaCwgZXZlbnQpO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBydW5FdmVudEluQmF0Y2goZXZlbnQp
IHtcblx0ICBFdmVudFBsdWdpbkh1Yi5lbnF1ZXVlRXZlbnRzKGV2ZW50KTtcblx0ICBFdmVudFBs
dWdpbkh1Yi5wcm9jZXNzRXZlbnRRdWV1ZShmYWxzZSk7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHN0
YXJ0V2F0Y2hpbmdGb3JDaGFuZ2VFdmVudElFOCh0YXJnZXQsIHRhcmdldEluc3QpIHtcblx0ICBh
Y3RpdmVFbGVtZW50ID0gdGFyZ2V0O1xuXHQgIGFjdGl2ZUVsZW1lbnRJbnN0ID0gdGFyZ2V0SW5z
dDtcblx0ICBhY3RpdmVFbGVtZW50LmF0dGFjaEV2ZW50KCdvbmNoYW5nZScsIG1hbnVhbERpc3Bh
dGNoQ2hhbmdlRXZlbnQpO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBzdG9wV2F0Y2hpbmdGb3JDaGFu
Z2VFdmVudElFOCgpIHtcblx0ICBpZiAoIWFjdGl2ZUVsZW1lbnQpIHtcblx0ICAgIHJldHVybjtc
blx0ICB9XG5cdCAgYWN0aXZlRWxlbWVudC5kZXRhY2hFdmVudCgnb25jaGFuZ2UnLCBtYW51YWxE
aXNwYXRjaENoYW5nZUV2ZW50KTtcblx0ICBhY3RpdmVFbGVtZW50ID0gbnVsbDtcblx0ICBhY3Rp
dmVFbGVtZW50SW5zdCA9IG51bGw7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGdldEluc3RJZlZhbHVl
Q2hhbmdlZCh0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCkge1xuXHQgIHZhciB1cGRhdGVkID0gaW5w
dXRWYWx1ZVRyYWNraW5nLnVwZGF0ZVZhbHVlSWZDaGFuZ2VkKHRhcmdldEluc3QpO1xuXHQgIHZh
ciBzaW11bGF0ZWQgPSBuYXRpdmVFdmVudC5zaW11bGF0ZWQgPT09IHRydWUgJiYgQ2hhbmdlRXZl
bnRQbHVnaW4uX2FsbG93U2ltdWxhdGVkUGFzc1Rocm91Z2g7XG5cdFxuXHQgIGlmICh1cGRhdGVk
IHx8IHNpbXVsYXRlZCkge1xuXHQgICAgcmV0dXJuIHRhcmdldEluc3Q7XG5cdCAgfVxuXHR9XG5c
dFxuXHRmdW5jdGlvbiBnZXRUYXJnZXRJbnN0Rm9yQ2hhbmdlRXZlbnQodG9wTGV2ZWxUeXBlLCB0
YXJnZXRJbnN0KSB7XG5cdCAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcENoYW5nZScpIHtcblx0
ICAgIHJldHVybiB0YXJnZXRJbnN0O1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gaGFuZGxl
RXZlbnRzRm9yQ2hhbmdlRXZlbnRJRTgodG9wTGV2ZWxUeXBlLCB0YXJnZXQsIHRhcmdldEluc3Qp
IHtcblx0ICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wRm9jdXMnKSB7XG5cdCAgICAvLyBzdG9w
V2F0Y2hpbmcoKSBzaG91bGQgYmUgYSBub29wIGhlcmUgYnV0IHdlIGNhbGwgaXQganVzdCBpbiBj
YXNlIHdlXG5cdCAgICAvLyBtaXNzZWQgYSBibHVyIGV2ZW50IHNvbWVob3cuXG5cdCAgICBzdG9w
V2F0Y2hpbmdGb3JDaGFuZ2VFdmVudElFOCgpO1xuXHQgICAgc3RhcnRXYXRjaGluZ0ZvckNoYW5n
ZUV2ZW50SUU4KHRhcmdldCwgdGFyZ2V0SW5zdCk7XG5cdCAgfSBlbHNlIGlmICh0b3BMZXZlbFR5
cGUgPT09ICd0b3BCbHVyJykge1xuXHQgICAgc3RvcFdhdGNoaW5nRm9yQ2hhbmdlRXZlbnRJRTgo
KTtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBTRUNUSU9OOiBoYW5kbGUgYGlucHV0YCBl
dmVudFxuXHQgKi9cblx0dmFyIGlzSW5wdXRFdmVudFN1cHBvcnRlZCA9IGZhbHNlO1xuXHRpZiAo
RXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG5cdCAgLy8gSUU5IGNsYWltcyB0byBz
dXBwb3J0IHRoZSBpbnB1dCBldmVudCBidXQgZmFpbHMgdG8gdHJpZ2dlciBpdCB3aGVuXG5cdCAg
Ly8gZGVsZXRpbmcgdGV4dCwgc28gd2UgaWdub3JlIGl0cyBpbnB1dCBldmVudHMuXG5cdFxuXHQg
IGlzSW5wdXRFdmVudFN1cHBvcnRlZCA9IGlzRXZlbnRTdXBwb3J0ZWQoJ2lucHV0JykgJiYgKCEo
J2RvY3VtZW50TW9kZScgaW4gZG9jdW1lbnQpIHx8IGRvY3VtZW50LmRvY3VtZW50TW9kZSA+IDkp
O1xuXHR9XG5cdFxuXHQvKipcblx0ICogKEZvciBJRSA8PTkpIFN0YXJ0cyB0cmFja2luZyBwcm9w
ZXJ0eWNoYW5nZSBldmVudHMgb24gdGhlIHBhc3NlZC1pbiBlbGVtZW50XG5cdCAqIGFuZCBvdmVy
cmlkZSB0aGUgdmFsdWUgcHJvcGVydHkgc28gdGhhdCB3ZSBjYW4gZGlzdGluZ3Vpc2ggdXNlciBl
dmVudHMgZnJvbVxuXHQgKiB2YWx1ZSBjaGFuZ2VzIGluIEpTLlxuXHQgKi9cblx0ZnVuY3Rpb24g
c3RhcnRXYXRjaGluZ0ZvclZhbHVlQ2hhbmdlKHRhcmdldCwgdGFyZ2V0SW5zdCkge1xuXHQgIGFj
dGl2ZUVsZW1lbnQgPSB0YXJnZXQ7XG5cdCAgYWN0aXZlRWxlbWVudEluc3QgPSB0YXJnZXRJbnN0
O1xuXHQgIGFjdGl2ZUVsZW1lbnQuYXR0YWNoRXZlbnQoJ29ucHJvcGVydHljaGFuZ2UnLCBoYW5k
bGVQcm9wZXJ0eUNoYW5nZSk7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiAoRm9yIElFIDw9OSkgUmVt
b3ZlcyB0aGUgZXZlbnQgbGlzdGVuZXJzIGZyb20gdGhlIGN1cnJlbnRseS10cmFja2VkIGVsZW1l
bnQsXG5cdCAqIGlmIGFueSBleGlzdHMuXG5cdCAqL1xuXHRmdW5jdGlvbiBzdG9wV2F0Y2hpbmdG
b3JWYWx1ZUNoYW5nZSgpIHtcblx0ICBpZiAoIWFjdGl2ZUVsZW1lbnQpIHtcblx0ICAgIHJldHVy
bjtcblx0ICB9XG5cdCAgYWN0aXZlRWxlbWVudC5kZXRhY2hFdmVudCgnb25wcm9wZXJ0eWNoYW5n
ZScsIGhhbmRsZVByb3BlcnR5Q2hhbmdlKTtcblx0XG5cdCAgYWN0aXZlRWxlbWVudCA9IG51bGw7
XG5cdCAgYWN0aXZlRWxlbWVudEluc3QgPSBudWxsO1xuXHR9XG5cdFxuXHQvKipcblx0ICogKEZv
ciBJRSA8PTkpIEhhbmRsZXMgYSBwcm9wZXJ0eWNoYW5nZSBldmVudCwgc2VuZGluZyBhIGBjaGFu
Z2VgIGV2ZW50IGlmXG5cdCAqIHRoZSB2YWx1ZSBvZiB0aGUgYWN0aXZlIGVsZW1lbnQgaGFzIGNo
YW5nZWQuXG5cdCAqL1xuXHRmdW5jdGlvbiBoYW5kbGVQcm9wZXJ0eUNoYW5nZShuYXRpdmVFdmVu
dCkge1xuXHQgIGlmIChuYXRpdmVFdmVudC5wcm9wZXJ0eU5hbWUgIT09ICd2YWx1ZScpIHtcblx0
ICAgIHJldHVybjtcblx0ICB9XG5cdCAgaWYgKGdldEluc3RJZlZhbHVlQ2hhbmdlZChhY3RpdmVF
bGVtZW50SW5zdCwgbmF0aXZlRXZlbnQpKSB7XG5cdCAgICBtYW51YWxEaXNwYXRjaENoYW5nZUV2
ZW50KG5hdGl2ZUV2ZW50KTtcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGhhbmRsZUV2ZW50
c0ZvcklucHV0RXZlbnRQb2x5ZmlsbCh0b3BMZXZlbFR5cGUsIHRhcmdldCwgdGFyZ2V0SW5zdCkg
e1xuXHQgIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BGb2N1cycpIHtcblx0ICAgIC8vIEluIElF
OCwgd2UgY2FuIGNhcHR1cmUgYWxtb3N0IGFsbCAudmFsdWUgY2hhbmdlcyBieSBhZGRpbmcgYVxu
XHQgICAgLy8gcHJvcGVydHljaGFuZ2UgaGFuZGxlciBhbmQgbG9va2luZyBmb3IgZXZlbnRzIHdp
dGggcHJvcGVydHlOYW1lXG5cdCAgICAvLyBlcXVhbCB0byAndmFsdWUnXG5cdCAgICAvLyBJbiBJ
RTksIHByb3BlcnR5Y2hhbmdlIGZpcmVzIGZvciBtb3N0IGlucHV0IGV2ZW50cyBidXQgaXMgYnVn
Z3kgYW5kXG5cdCAgICAvLyBkb2Vzbid0IGZpcmUgd2hlbiB0ZXh0IGlzIGRlbGV0ZWQsIGJ1dCBj
b252ZW5pZW50bHksIHNlbGVjdGlvbmNoYW5nZVxuXHQgICAgLy8gYXBwZWFycyB0byBmaXJlIGlu
IGFsbCBvZiB0aGUgcmVtYWluaW5nIGNhc2VzIHNvIHdlIGNhdGNoIHRob3NlIGFuZFxuXHQgICAg
Ly8gZm9yd2FyZCB0aGUgZXZlbnQgaWYgdGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG5cdCAgICAvLyBJ
biBlaXRoZXIgY2FzZSwgd2UgZG9uJ3Qgd2FudCB0byBjYWxsIHRoZSBldmVudCBoYW5kbGVyIGlm
IHRoZSB2YWx1ZVxuXHQgICAgLy8gaXMgY2hhbmdlZCBmcm9tIEpTIHNvIHdlIHJlZGVmaW5lIGEg
c2V0dGVyIGZvciBgLnZhbHVlYCB0aGF0IHVwZGF0ZXNcblx0ICAgIC8vIG91ciBhY3RpdmVFbGVt
ZW50VmFsdWUgdmFyaWFibGUsIGFsbG93aW5nIHVzIHRvIGlnbm9yZSB0aG9zZSBjaGFuZ2VzXG5c
dCAgICAvL1xuXHQgICAgLy8gc3RvcFdhdGNoaW5nKCkgc2hvdWxkIGJlIGEgbm9vcCBoZXJlIGJ1
dCB3ZSBjYWxsIGl0IGp1c3QgaW4gY2FzZSB3ZVxuXHQgICAgLy8gbWlzc2VkIGEgYmx1ciBldmVu
dCBzb21laG93LlxuXHQgICAgc3RvcFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UoKTtcblx0ICAgIHN0
YXJ0V2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSh0YXJnZXQsIHRhcmdldEluc3QpO1xuXHQgIH0gZWxz
ZSBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wQmx1cicpIHtcblx0ICAgIHN0b3BXYXRjaGluZ0Zv
clZhbHVlQ2hhbmdlKCk7XG5cdCAgfVxuXHR9XG5cdFxuXHQvLyBGb3IgSUU4IGFuZCBJRTkuXG5c
dGZ1bmN0aW9uIGdldFRhcmdldEluc3RGb3JJbnB1dEV2ZW50UG9seWZpbGwodG9wTGV2ZWxUeXBl
LCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCkge1xuXHQgIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0
b3BTZWxlY3Rpb25DaGFuZ2UnIHx8IHRvcExldmVsVHlwZSA9PT0gJ3RvcEtleVVwJyB8fCB0b3BM
ZXZlbFR5cGUgPT09ICd0b3BLZXlEb3duJykge1xuXHQgICAgLy8gT24gdGhlIHNlbGVjdGlvbmNo
YW5nZSBldmVudCwgdGhlIHRhcmdldCBpcyBqdXN0IGRvY3VtZW50IHdoaWNoIGlzbid0XG5cdCAg
ICAvLyBoZWxwZnVsIGZvciB1cyBzbyBqdXN0IGNoZWNrIGFjdGl2ZUVsZW1lbnQgaW5zdGVhZC5c
blx0ICAgIC8vXG5cdCAgICAvLyA5OSUgb2YgdGhlIHRpbWUsIGtleWRvd24gYW5kIGtleXVwIGFy
ZW4ndCBuZWNlc3NhcnkuIElFOCBmYWlscyB0byBmaXJlXG5cdCAgICAvLyBwcm9wZXJ0eWNoYW5n
ZSBvbiB0aGUgZmlyc3QgaW5wdXQgZXZlbnQgYWZ0ZXIgc2V0dGluZyBgdmFsdWVgIGZyb20gYVxu
XHQgICAgLy8gc2NyaXB0IGFuZCBmaXJlcyBvbmx5IGtleWRvd24sIGtleXByZXNzLCBrZXl1cC4g
Q2F0Y2hpbmcga2V5dXAgdXN1YWxseVxuXHQgICAgLy8gZ2V0cyBpdCBhbmQgY2F0Y2hpbmcga2V5
ZG93biBsZXRzIHVzIGZpcmUgYW4gZXZlbnQgZm9yIHRoZSBmaXJzdFxuXHQgICAgLy8ga2V5c3Ry
b2tlIGlmIHVzZXIgZG9lcyBhIGtleSByZXBlYXQgKGl0J2xsIGJlIGEgbGl0dGxlIGRlbGF5ZWQ6
IHJpZ2h0XG5cdCAgICAvLyBiZWZvcmUgdGhlIHNlY29uZCBrZXlzdHJva2UpLiBPdGhlciBpbnB1
dCBtZXRob2RzIChlLmcuLCBwYXN0ZSkgc2VlbSB0b1xuXHQgICAgLy8gZmlyZSBzZWxlY3Rpb25j
aGFuZ2Ugbm9ybWFsbHkuXG5cdCAgICByZXR1cm4gZ2V0SW5zdElmVmFsdWVDaGFuZ2VkKGFjdGl2
ZUVsZW1lbnRJbnN0LCBuYXRpdmVFdmVudCk7XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICog
U0VDVElPTjogaGFuZGxlIGBjbGlja2AgZXZlbnRcblx0ICovXG5cdGZ1bmN0aW9uIHNob3VsZFVz
ZUNsaWNrRXZlbnQoZWxlbSkge1xuXHQgIC8vIFVzZSB0aGUgYGNsaWNrYCBldmVudCB0byBkZXRl
Y3QgY2hhbmdlcyB0byBjaGVja2JveCBhbmQgcmFkaW8gaW5wdXRzLlxuXHQgIC8vIFRoaXMgYXBw
cm9hY2ggd29ya3MgYWNyb3NzIGFsbCBicm93c2Vycywgd2hlcmVhcyBgY2hhbmdlYCBkb2VzIG5v
dCBmaXJlXG5cdCAgLy8gdW50aWwgYGJsdXJgIGluIElFOC5cblx0ICB2YXIgbm9kZU5hbWUgPSBl
bGVtLm5vZGVOYW1lO1xuXHQgIHJldHVybiBub2RlTmFtZSAmJiBub2RlTmFtZS50b0xvd2VyQ2Fz
ZSgpID09PSAnaW5wdXQnICYmIChlbGVtLnR5cGUgPT09ICdjaGVja2JveCcgfHwgZWxlbS50eXBl
ID09PSAncmFkaW8nKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gZ2V0VGFyZ2V0SW5zdEZvckNsaWNr
RXZlbnQodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCkge1xuXHQgIGlmICh0
b3BMZXZlbFR5cGUgPT09ICd0b3BDbGljaycpIHtcblx0ICAgIHJldHVybiBnZXRJbnN0SWZWYWx1
ZUNoYW5nZWQodGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQpO1xuXHQgIH1cblx0fVxuXHRcblx0ZnVu
Y3Rpb24gZ2V0VGFyZ2V0SW5zdEZvcklucHV0T3JDaGFuZ2VFdmVudCh0b3BMZXZlbFR5cGUsIHRh
cmdldEluc3QsIG5hdGl2ZUV2ZW50KSB7XG5cdCAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcElu
cHV0JyB8fCB0b3BMZXZlbFR5cGUgPT09ICd0b3BDaGFuZ2UnKSB7XG5cdCAgICByZXR1cm4gZ2V0
SW5zdElmVmFsdWVDaGFuZ2VkKHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50KTtcblx0ICB9XG5cdH1c
blx0XG5cdGZ1bmN0aW9uIGhhbmRsZUNvbnRyb2xsZWRJbnB1dEJsdXIoaW5zdCwgbm9kZSkge1xu
XHQgIC8vIFRPRE86IEluIElFLCBpbnN0IGlzIG9jY2FzaW9uYWxseSBudWxsLiBXaHk/XG5cdCAg
aWYgKGluc3QgPT0gbnVsbCkge1xuXHQgICAgcmV0dXJuO1xuXHQgIH1cblx0XG5cdCAgLy8gRmli
ZXIgYW5kIFJlYWN0RE9NIGtlZXAgd3JhcHBlciBzdGF0ZSBpbiBzZXBhcmF0ZSBwbGFjZXNcblx0
ICB2YXIgc3RhdGUgPSBpbnN0Ll93cmFwcGVyU3RhdGUgfHwgbm9kZS5fd3JhcHBlclN0YXRlO1xu
XHRcblx0ICBpZiAoIXN0YXRlIHx8ICFzdGF0ZS5jb250cm9sbGVkIHx8IG5vZGUudHlwZSAhPT0g
J251bWJlcicpIHtcblx0ICAgIHJldHVybjtcblx0ICB9XG5cdFxuXHQgIC8vIElmIGNvbnRyb2xs
ZWQsIGFzc2lnbiB0aGUgdmFsdWUgYXR0cmlidXRlIHRvIHRoZSBjdXJyZW50IHZhbHVlIG9uIGJs
dXJcblx0ICB2YXIgdmFsdWUgPSAnJyArIG5vZGUudmFsdWU7XG5cdCAgaWYgKG5vZGUuZ2V0QXR0
cmlidXRlKCd2YWx1ZScpICE9PSB2YWx1ZSkge1xuXHQgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ3Zh
bHVlJywgdmFsdWUpO1xuXHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIFRoaXMgcGx1Z2luIGNy
ZWF0ZXMgYW4gYG9uQ2hhbmdlYCBldmVudCB0aGF0IG5vcm1hbGl6ZXMgY2hhbmdlIGV2ZW50c1xu
XHQgKiBhY3Jvc3MgZm9ybSBlbGVtZW50cy4gVGhpcyBldmVudCBmaXJlcyBhdCBhIHRpbWUgd2hl
biBpdCdzIHBvc3NpYmxlIHRvXG5cdCAqIGNoYW5nZSB0aGUgZWxlbWVudCdzIHZhbHVlIHdpdGhv
dXQgc2VlaW5nIGEgZmxpY2tlci5cblx0ICpcblx0ICogU3VwcG9ydGVkIGVsZW1lbnRzIGFyZTpc
blx0ICogLSBpbnB1dCAoc2VlIGBpc1RleHRJbnB1dEVsZW1lbnRgKVxuXHQgKiAtIHRleHRhcmVh
XG5cdCAqIC0gc2VsZWN0XG5cdCAqL1xuXHR2YXIgQ2hhbmdlRXZlbnRQbHVnaW4gPSB7XG5cdCAg
ZXZlbnRUeXBlczogZXZlbnRUeXBlcyxcblx0XG5cdCAgX2FsbG93U2ltdWxhdGVkUGFzc1Rocm91
Z2g6IHRydWUsXG5cdCAgX2lzSW5wdXRFdmVudFN1cHBvcnRlZDogaXNJbnB1dEV2ZW50U3VwcG9y
dGVkLFxuXHRcblx0ICBleHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0YXJn
ZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcblx0ICAgIHZhciB0YXJn
ZXROb2RlID0gdGFyZ2V0SW5zdCA/IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUlu
c3RhbmNlKHRhcmdldEluc3QpIDogd2luZG93O1xuXHRcblx0ICAgIHZhciBnZXRUYXJnZXRJbnN0
RnVuYywgaGFuZGxlRXZlbnRGdW5jO1xuXHQgICAgaWYgKHNob3VsZFVzZUNoYW5nZUV2ZW50KHRh
cmdldE5vZGUpKSB7XG5cdCAgICAgIGlmIChkb2VzQ2hhbmdlRXZlbnRCdWJibGUpIHtcblx0ICAg
ICAgICBnZXRUYXJnZXRJbnN0RnVuYyA9IGdldFRhcmdldEluc3RGb3JDaGFuZ2VFdmVudDtcblx0
ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICBoYW5kbGVFdmVudEZ1bmMgPSBoYW5kbGVFdmVudHNG
b3JDaGFuZ2VFdmVudElFODtcblx0ICAgICAgfVxuXHQgICAgfSBlbHNlIGlmIChpc1RleHRJbnB1
dEVsZW1lbnQodGFyZ2V0Tm9kZSkpIHtcblx0ICAgICAgaWYgKGlzSW5wdXRFdmVudFN1cHBvcnRl
ZCkge1xuXHQgICAgICAgIGdldFRhcmdldEluc3RGdW5jID0gZ2V0VGFyZ2V0SW5zdEZvcklucHV0
T3JDaGFuZ2VFdmVudDtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICBnZXRUYXJnZXRJbnN0
RnVuYyA9IGdldFRhcmdldEluc3RGb3JJbnB1dEV2ZW50UG9seWZpbGw7XG5cdCAgICAgICAgaGFu
ZGxlRXZlbnRGdW5jID0gaGFuZGxlRXZlbnRzRm9ySW5wdXRFdmVudFBvbHlmaWxsO1xuXHQgICAg
ICB9XG5cdCAgICB9IGVsc2UgaWYgKHNob3VsZFVzZUNsaWNrRXZlbnQodGFyZ2V0Tm9kZSkpIHtc
blx0ICAgICAgZ2V0VGFyZ2V0SW5zdEZ1bmMgPSBnZXRUYXJnZXRJbnN0Rm9yQ2xpY2tFdmVudDtc
blx0ICAgIH1cblx0XG5cdCAgICBpZiAoZ2V0VGFyZ2V0SW5zdEZ1bmMpIHtcblx0ICAgICAgdmFy
IGluc3QgPSBnZXRUYXJnZXRJbnN0RnVuYyh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2
ZUV2ZW50KTtcblx0ICAgICAgaWYgKGluc3QpIHtcblx0ICAgICAgICB2YXIgZXZlbnQgPSBjcmVh
dGVBbmRBY2N1bXVsYXRlQ2hhbmdlRXZlbnQoaW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50
VGFyZ2V0KTtcblx0ICAgICAgICByZXR1cm4gZXZlbnQ7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0
XG5cdCAgICBpZiAoaGFuZGxlRXZlbnRGdW5jKSB7XG5cdCAgICAgIGhhbmRsZUV2ZW50RnVuYyh0
b3BMZXZlbFR5cGUsIHRhcmdldE5vZGUsIHRhcmdldEluc3QpO1xuXHQgICAgfVxuXHRcblx0ICAg
IC8vIFdoZW4gYmx1cnJpbmcsIHNldCB0aGUgdmFsdWUgYXR0cmlidXRlIGZvciBudW1iZXIgaW5w
dXRzXG5cdCAgICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wQmx1cicpIHtcblx0ICAgICAgaGFu
ZGxlQ29udHJvbGxlZElucHV0Qmx1cih0YXJnZXRJbnN0LCB0YXJnZXROb2RlKTtcblx0ICAgIH1c
blx0ICB9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IENoYW5nZUV2ZW50UGx1Z2luO1xu
XG4vKioqLyB9LFxuLyogMTI5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9f
d2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZh
cmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXHRcblx0dmFyIERPTUxhenlUcmVlID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxNCk7XG5cdHZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9f
d2VicGFja19yZXF1aXJlX18oNik7XG5cdFxuXHR2YXIgY3JlYXRlTm9kZXNGcm9tTWFya3VwID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxMDIpO1xuXHR2YXIgZW1wdHlGdW5jdGlvbiA9IF9fd2VicGFj
a19yZXF1aXJlX18oNyk7XG5cdHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEp
O1xuXHRcblx0dmFyIERhbmdlciA9IHtcblx0ICAvKipcblx0ICAgKiBSZXBsYWNlcyBhIG5vZGUg
d2l0aCBhIHN0cmluZyBvZiBtYXJrdXAgYXQgaXRzIGN1cnJlbnQgcG9zaXRpb24gd2l0aGluIGl0
c1xuXHQgICAqIHBhcmVudC4gVGhlIG1hcmt1cCBtdXN0IHJlbmRlciBpbnRvIGEgc2luZ2xlIHJv
b3Qgbm9kZS5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gb2xkQ2hpbGQgQ2hp
bGQgbm9kZSB0byByZXBsYWNlLlxuXHQgICAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgTWFya3Vw
IHRvIHJlbmRlciBpbiBwbGFjZSBvZiB0aGUgY2hpbGQgbm9kZS5cblx0ICAgKiBAaW50ZXJuYWxc
blx0ICAgKi9cblx0ICBkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cDogZnVuY3Rpb24g
KG9sZENoaWxkLCBtYXJrdXApIHtcblx0ICAgICFFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VE
T00gPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0
aE1hcmt1cCguLi4pOiBDYW5ub3QgcmVuZGVyIG1hcmt1cCBpbiBhIHdvcmtlciB0aHJlYWQuIE1h
a2Ugc3VyZSBgd2luZG93YCBhbmQgYGRvY3VtZW50YCBhcmUgYXZhaWxhYmxlIGdsb2JhbGx5IGJl
Zm9yZSByZXF1aXJpbmcgUmVhY3Qgd2hlbiB1bml0IHRlc3Rpbmcgb3IgdXNlIFJlYWN0RE9NU2Vy
dmVyLnJlbmRlclRvU3RyaW5nKCkgZm9yIHNlcnZlciByZW5kZXJpbmcuJykgOiBfcHJvZEludmFy
aWFudCgnNTYnKSA6IHZvaWQgMDtcblx0ICAgICFtYXJrdXAgPyAgZmFsc2UgPyBpbnZhcmlhbnQo
ZmFsc2UsICdkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cCguLi4pOiBNaXNzaW5nIG1h
cmt1cC4nKSA6IF9wcm9kSW52YXJpYW50KCc1NycpIDogdm9pZCAwO1xuXHQgICAgIShvbGRDaGls
ZC5ub2RlTmFtZSAhPT0gJ0hUTUwnKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ2Rhbmdl
cm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwKC4uLik6IENhbm5vdCByZXBsYWNlIG1hcmt1cCBv
ZiB0aGUgPGh0bWw+IG5vZGUuIFRoaXMgaXMgYmVjYXVzZSBicm93c2VyIHF1aXJrcyBtYWtlIHRo
aXMgdW5yZWxpYWJsZSBhbmQvb3Igc2xvdy4gSWYgeW91IHdhbnQgdG8gcmVuZGVyIHRvIHRoZSBy
b290IHlvdSBtdXN0IHVzZSBzZXJ2ZXIgcmVuZGVyaW5nLiBTZWUgUmVhY3RET01TZXJ2ZXIucmVu
ZGVyVG9TdHJpbmcoKS4nKSA6IF9wcm9kSW52YXJpYW50KCc1OCcpIDogdm9pZCAwO1xuXHRcblx0
ICAgIGlmICh0eXBlb2YgbWFya3VwID09PSAnc3RyaW5nJykge1xuXHQgICAgICB2YXIgbmV3Q2hp
bGQgPSBjcmVhdGVOb2Rlc0Zyb21NYXJrdXAobWFya3VwLCBlbXB0eUZ1bmN0aW9uKVswXTtcblx0
ICAgICAgb2xkQ2hpbGQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Q2hpbGQsIG9sZENoaWxk
KTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIERPTUxhenlUcmVlLnJlcGxhY2VDaGlsZFdpdGhU
cmVlKG9sZENoaWxkLCBtYXJrdXApO1xuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVs
ZS5leHBvcnRzID0gRGFuZ2VyO1xuXG4vKioqLyB9LFxuLyogMTMwICovXG4vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQvKipcblx0ICogTW9k
dWxlIHRoYXQgaXMgaW5qZWN0YWJsZSBpbnRvIGBFdmVudFBsdWdpbkh1YmAsIHRoYXQgc3BlY2lm
aWVzIGFcblx0ICogZGV0ZXJtaW5pc3RpYyBvcmRlcmluZyBvZiBgRXZlbnRQbHVnaW5gcy4gQSBj
b252ZW5pZW50IHdheSB0byByZWFzb24gYWJvdXRcblx0ICogcGx1Z2lucywgd2l0aG91dCBoYXZp
bmcgdG8gcGFja2FnZSBldmVyeSBvbmUgb2YgdGhlbS4gVGhpcyBpcyBiZXR0ZXIgdGhhblxuXHQg
KiBoYXZpbmcgcGx1Z2lucyBiZSBvcmRlcmVkIGluIHRoZSBzYW1lIG9yZGVyIHRoYXQgdGhleSBh
cmUgaW5qZWN0ZWQgYmVjYXVzZVxuXHQgKiB0aGF0IG9yZGVyaW5nIHdvdWxkIGJlIGluZmx1ZW5j
ZWQgYnkgdGhlIHBhY2thZ2luZyBvcmRlci5cblx0ICogYFJlc3BvbmRlckV2ZW50UGx1Z2luYCBt
dXN0IG9jY3VyIGJlZm9yZSBgU2ltcGxlRXZlbnRQbHVnaW5gIHNvIHRoYXRcblx0ICogcHJldmVu
dGluZyBkZWZhdWx0IG9uIGV2ZW50cyBpcyBjb252ZW5pZW50IGluIGBTaW1wbGVFdmVudFBsdWdp
bmAgaGFuZGxlcnMuXG5cdCAqL1xuXHRcblx0dmFyIERlZmF1bHRFdmVudFBsdWdpbk9yZGVyID0g
WydSZXNwb25kZXJFdmVudFBsdWdpbicsICdTaW1wbGVFdmVudFBsdWdpbicsICdUYXBFdmVudFBs
dWdpbicsICdFbnRlckxlYXZlRXZlbnRQbHVnaW4nLCAnQ2hhbmdlRXZlbnRQbHVnaW4nLCAnU2Vs
ZWN0RXZlbnRQbHVnaW4nLCAnQmVmb3JlSW5wdXRFdmVudFBsdWdpbiddO1xuXHRcblx0bW9kdWxl
LmV4cG9ydHMgPSBEZWZhdWx0RXZlbnRQbHVnaW5PcmRlcjtcblxuLyoqKi8gfSxcbi8qIDEzMSAq
L1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7
XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5c
dCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRc
blx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIEV2ZW50UHJvcGFnYXRvcnMgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDIwKTtcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFja19y
ZXF1aXJlX18oNSk7XG5cdHZhciBTeW50aGV0aWNNb3VzZUV2ZW50ID0gX193ZWJwYWNrX3JlcXVp
cmVfXygyNik7XG5cdFxuXHR2YXIgZXZlbnRUeXBlcyA9IHtcblx0ICBtb3VzZUVudGVyOiB7XG5c
dCAgICByZWdpc3RyYXRpb25OYW1lOiAnb25Nb3VzZUVudGVyJyxcblx0ICAgIGRlcGVuZGVuY2ll
czogWyd0b3BNb3VzZU91dCcsICd0b3BNb3VzZU92ZXInXVxuXHQgIH0sXG5cdCAgbW91c2VMZWF2
ZToge1xuXHQgICAgcmVnaXN0cmF0aW9uTmFtZTogJ29uTW91c2VMZWF2ZScsXG5cdCAgICBkZXBl
bmRlbmNpZXM6IFsndG9wTW91c2VPdXQnLCAndG9wTW91c2VPdmVyJ11cblx0ICB9XG5cdH07XG5c
dFxuXHR2YXIgRW50ZXJMZWF2ZUV2ZW50UGx1Z2luID0ge1xuXHQgIGV2ZW50VHlwZXM6IGV2ZW50
VHlwZXMsXG5cdFxuXHQgIC8qKlxuXHQgICAqIEZvciBhbG1vc3QgZXZlcnkgaW50ZXJhY3Rpb24g
d2UgY2FyZSBhYm91dCwgdGhlcmUgd2lsbCBiZSBib3RoIGEgdG9wLWxldmVsXG5cdCAgICogYG1v
dXNlb3ZlcmAgYW5kIGBtb3VzZW91dGAgZXZlbnQgdGhhdCBvY2N1cnMuIE9ubHkgdXNlIGBtb3Vz
ZW91dGAgc28gdGhhdFxuXHQgICAqIHdlIGRvIG5vdCBleHRyYWN0IGR1cGxpY2F0ZSBldmVudHMu
IEhvd2V2ZXIsIG1vdmluZyB0aGUgbW91c2UgaW50byB0aGVcblx0ICAgKiBicm93c2VyIGZyb20g
b3V0c2lkZSB3aWxsIG5vdCBmaXJlIGEgYG1vdXNlb3V0YCBldmVudC4gSW4gdGhpcyBjYXNlLCB3
ZSB1c2Vcblx0ICAgKiB0aGUgYG1vdXNlb3ZlcmAgdG9wLWxldmVsIGV2ZW50LlxuXHQgICAqL1xu
XHQgIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5h
dGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuXHQgICAgaWYgKHRvcExldmVsVHlwZSA9
PT0gJ3RvcE1vdXNlT3ZlcicgJiYgKG5hdGl2ZUV2ZW50LnJlbGF0ZWRUYXJnZXQgfHwgbmF0aXZl
RXZlbnQuZnJvbUVsZW1lbnQpKSB7XG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQgICAgfVxuXHQg
ICAgaWYgKHRvcExldmVsVHlwZSAhPT0gJ3RvcE1vdXNlT3V0JyAmJiB0b3BMZXZlbFR5cGUgIT09
ICd0b3BNb3VzZU92ZXInKSB7XG5cdCAgICAgIC8vIE11c3Qgbm90IGJlIGEgbW91c2UgaW4gb3Ig
bW91c2Ugb3V0IC0gaWdub3JpbmcuXG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQgICAgfVxuXHRc
blx0ICAgIHZhciB3aW47XG5cdCAgICBpZiAobmF0aXZlRXZlbnRUYXJnZXQud2luZG93ID09PSBu
YXRpdmVFdmVudFRhcmdldCkge1xuXHQgICAgICAvLyBgbmF0aXZlRXZlbnRUYXJnZXRgIGlzIHBy
b2JhYmx5IGEgd2luZG93IG9iamVjdC5cblx0ICAgICAgd2luID0gbmF0aXZlRXZlbnRUYXJnZXQ7
XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICAvLyBUT0RPOiBGaWd1cmUgb3V0IHdoeSBgb3duZXJE
b2N1bWVudGAgaXMgc29tZXRpbWVzIHVuZGVmaW5lZCBpbiBJRTguXG5cdCAgICAgIHZhciBkb2Mg
PSBuYXRpdmVFdmVudFRhcmdldC5vd25lckRvY3VtZW50O1xuXHQgICAgICBpZiAoZG9jKSB7XG5c
dCAgICAgICAgd2luID0gZG9jLmRlZmF1bHRWaWV3IHx8IGRvYy5wYXJlbnRXaW5kb3c7XG5cdCAg
ICAgIH0gZWxzZSB7XG5cdCAgICAgICAgd2luID0gd2luZG93O1xuXHQgICAgICB9XG5cdCAgICB9
XG5cdFxuXHQgICAgdmFyIGZyb207XG5cdCAgICB2YXIgdG87XG5cdCAgICBpZiAodG9wTGV2ZWxU
eXBlID09PSAndG9wTW91c2VPdXQnKSB7XG5cdCAgICAgIGZyb20gPSB0YXJnZXRJbnN0O1xuXHQg
ICAgICB2YXIgcmVsYXRlZCA9IG5hdGl2ZUV2ZW50LnJlbGF0ZWRUYXJnZXQgfHwgbmF0aXZlRXZl
bnQudG9FbGVtZW50O1xuXHQgICAgICB0byA9IHJlbGF0ZWQgPyBSZWFjdERPTUNvbXBvbmVudFRy
ZWUuZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUocmVsYXRlZCkgOiBudWxsO1xuXHQgICAgfSBl
bHNlIHtcblx0ICAgICAgLy8gTW92aW5nIHRvIGEgbm9kZSBmcm9tIG91dHNpZGUgdGhlIHdpbmRv
dy5cblx0ICAgICAgZnJvbSA9IG51bGw7XG5cdCAgICAgIHRvID0gdGFyZ2V0SW5zdDtcblx0ICAg
IH1cblx0XG5cdCAgICBpZiAoZnJvbSA9PT0gdG8pIHtcblx0ICAgICAgLy8gTm90aGluZyBwZXJ0
YWlucyB0byBvdXIgbWFuYWdlZCBjb21wb25lbnRzLlxuXHQgICAgICByZXR1cm4gbnVsbDtcblx0
ICAgIH1cblx0XG5cdCAgICB2YXIgZnJvbU5vZGUgPSBmcm9tID09IG51bGwgPyB3aW4gOiBSZWFj
dERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShmcm9tKTtcblx0ICAgIHZhciB0
b05vZGUgPSB0byA9PSBudWxsID8gd2luIDogUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVG
cm9tSW5zdGFuY2UodG8pO1xuXHRcblx0ICAgIHZhciBsZWF2ZSA9IFN5bnRoZXRpY01vdXNlRXZl
bnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMubW91c2VMZWF2ZSwgZnJvbSwgbmF0aXZlRXZlbnQsIG5h
dGl2ZUV2ZW50VGFyZ2V0KTtcblx0ICAgIGxlYXZlLnR5cGUgPSAnbW91c2VsZWF2ZSc7XG5cdCAg
ICBsZWF2ZS50YXJnZXQgPSBmcm9tTm9kZTtcblx0ICAgIGxlYXZlLnJlbGF0ZWRUYXJnZXQgPSB0
b05vZGU7XG5cdFxuXHQgICAgdmFyIGVudGVyID0gU3ludGhldGljTW91c2VFdmVudC5nZXRQb29s
ZWQoZXZlbnRUeXBlcy5tb3VzZUVudGVyLCB0bywgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFy
Z2V0KTtcblx0ICAgIGVudGVyLnR5cGUgPSAnbW91c2VlbnRlcic7XG5cdCAgICBlbnRlci50YXJn
ZXQgPSB0b05vZGU7XG5cdCAgICBlbnRlci5yZWxhdGVkVGFyZ2V0ID0gZnJvbU5vZGU7XG5cdFxu
XHQgICAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXMobGVh
dmUsIGVudGVyLCBmcm9tLCB0byk7XG5cdFxuXHQgICAgcmV0dXJuIFtsZWF2ZSwgZW50ZXJdO1xu
XHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gRW50ZXJMZWF2ZUV2ZW50UGx1Z2lu
O1xuXG4vKioqLyB9LFxuLyogMTMyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMs
IF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX2Fzc2ln
biA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdFxuXHR2YXIgUG9vbGVkQ2xhc3MgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDEzKTtcblx0XG5cdHZhciBnZXRUZXh0Q29udGVudEFjY2Vzc29yID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg3Myk7XG5cdFxuXHQvKipcblx0ICogVGhpcyBoZWxwZXIgY2xh
c3Mgc3RvcmVzIGluZm9ybWF0aW9uIGFib3V0IHRleHQgY29udGVudCBvZiBhIHRhcmdldCBub2Rl
LFxuXHQgKiBhbGxvd2luZyBjb21wYXJpc29uIG9mIGNvbnRlbnQgYmVmb3JlIGFuZCBhZnRlciBh
IGdpdmVuIGV2ZW50LlxuXHQgKlxuXHQgKiBJZGVudGlmeSB0aGUgbm9kZSB3aGVyZSBzZWxlY3Rp
b24gY3VycmVudGx5IGJlZ2lucywgdGhlbiBvYnNlcnZlXG5cdCAqIGJvdGggaXRzIHRleHQgY29u
dGVudCBhbmQgaXRzIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIERPTS4gU2luY2UgdGhlXG5cdCAq
IGJyb3dzZXIgbWF5IG5hdGl2ZWx5IHJlcGxhY2UgdGhlIHRhcmdldCBub2RlIGR1cmluZyBjb21w
b3NpdGlvbiwgd2UgY2FuXG5cdCAqIHVzZSBpdHMgcG9zaXRpb24gdG8gZmluZCBpdHMgcmVwbGFj
ZW1lbnQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7RE9NRXZlbnRUYXJnZXR9IHJvb3Rcblx0ICovXG5c
dGZ1bmN0aW9uIEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZShyb290KSB7XG5cdCAgdGhpcy5fcm9v
dCA9IHJvb3Q7XG5cdCAgdGhpcy5fc3RhcnRUZXh0ID0gdGhpcy5nZXRUZXh0KCk7XG5cdCAgdGhp
cy5fZmFsbGJhY2tUZXh0ID0gbnVsbDtcblx0fVxuXHRcblx0X2Fzc2lnbihGYWxsYmFja0NvbXBv
c2l0aW9uU3RhdGUucHJvdG90eXBlLCB7XG5cdCAgZGVzdHJ1Y3RvcjogZnVuY3Rpb24gKCkge1xu
XHQgICAgdGhpcy5fcm9vdCA9IG51bGw7XG5cdCAgICB0aGlzLl9zdGFydFRleHQgPSBudWxsO1xu
XHQgICAgdGhpcy5fZmFsbGJhY2tUZXh0ID0gbnVsbDtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0
ICAgKiBHZXQgY3VycmVudCB0ZXh0IG9mIGlucHV0LlxuXHQgICAqXG5cdCAgICogQHJldHVybiB7
c3RyaW5nfVxuXHQgICAqL1xuXHQgIGdldFRleHQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgIGlmICgn
dmFsdWUnIGluIHRoaXMuX3Jvb3QpIHtcblx0ICAgICAgcmV0dXJuIHRoaXMuX3Jvb3QudmFsdWU7
XG5cdCAgICB9XG5cdCAgICByZXR1cm4gdGhpcy5fcm9vdFtnZXRUZXh0Q29udGVudEFjY2Vzc29y
KCldO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIERldGVybWluZSB0aGUgZGlmZmVyaW5n
IHN1YnN0cmluZyBiZXR3ZWVuIHRoZSBpbml0aWFsbHkgc3RvcmVkXG5cdCAgICogdGV4dCBjb250
ZW50IGFuZCB0aGUgY3VycmVudCBjb250ZW50LlxuXHQgICAqXG5cdCAgICogQHJldHVybiB7c3Ry
aW5nfVxuXHQgICAqL1xuXHQgIGdldERhdGE6IGZ1bmN0aW9uICgpIHtcblx0ICAgIGlmICh0aGlz
Ll9mYWxsYmFja1RleHQpIHtcblx0ICAgICAgcmV0dXJuIHRoaXMuX2ZhbGxiYWNrVGV4dDtcblx0
ICAgIH1cblx0XG5cdCAgICB2YXIgc3RhcnQ7XG5cdCAgICB2YXIgc3RhcnRWYWx1ZSA9IHRoaXMu
X3N0YXJ0VGV4dDtcblx0ICAgIHZhciBzdGFydExlbmd0aCA9IHN0YXJ0VmFsdWUubGVuZ3RoO1xu
XHQgICAgdmFyIGVuZDtcblx0ICAgIHZhciBlbmRWYWx1ZSA9IHRoaXMuZ2V0VGV4dCgpO1xuXHQg
ICAgdmFyIGVuZExlbmd0aCA9IGVuZFZhbHVlLmxlbmd0aDtcblx0XG5cdCAgICBmb3IgKHN0YXJ0
ID0gMDsgc3RhcnQgPCBzdGFydExlbmd0aDsgc3RhcnQrKykge1xuXHQgICAgICBpZiAoc3RhcnRW
YWx1ZVtzdGFydF0gIT09IGVuZFZhbHVlW3N0YXJ0XSkge1xuXHQgICAgICAgIGJyZWFrO1xuXHQg
ICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIG1pbkVuZCA9IHN0YXJ0TGVuZ3RoIC0gc3Rh
cnQ7XG5cdCAgICBmb3IgKGVuZCA9IDE7IGVuZCA8PSBtaW5FbmQ7IGVuZCsrKSB7XG5cdCAgICAg
IGlmIChzdGFydFZhbHVlW3N0YXJ0TGVuZ3RoIC0gZW5kXSAhPT0gZW5kVmFsdWVbZW5kTGVuZ3Ro
IC0gZW5kXSkge1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQg
ICAgdmFyIHNsaWNlVGFpbCA9IGVuZCA+IDEgPyAxIC0gZW5kIDogdW5kZWZpbmVkO1xuXHQgICAg
dGhpcy5fZmFsbGJhY2tUZXh0ID0gZW5kVmFsdWUuc2xpY2Uoc3RhcnQsIHNsaWNlVGFpbCk7XG5c
dCAgICByZXR1cm4gdGhpcy5fZmFsbGJhY2tUZXh0O1xuXHQgIH1cblx0fSk7XG5cdFxuXHRQb29s
ZWRDbGFzcy5hZGRQb29saW5nVG8oRmFsbGJhY2tDb21wb3NpdGlvblN0YXRlKTtcblx0XG5cdG1v
ZHVsZS5leHBvcnRzID0gRmFsbGJhY2tDb21wb3NpdGlvblN0YXRlO1xuXG4vKioqLyB9LFxuLyog
MTMzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJl
X18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5c
dCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICov
XG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgRE9NUHJvcGVydHkgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDE1KTtcblx0XG5cdHZhciBNVVNUX1VTRV9QUk9QRVJUWSA9IERPTVByb3BlcnR5
LmluamVjdGlvbi5NVVNUX1VTRV9QUk9QRVJUWTtcblx0dmFyIEhBU19CT09MRUFOX1ZBTFVFID0g
RE9NUHJvcGVydHkuaW5qZWN0aW9uLkhBU19CT09MRUFOX1ZBTFVFO1xuXHR2YXIgSEFTX05VTUVS
SUNfVkFMVUUgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uSEFTX05VTUVSSUNfVkFMVUU7XG5cdHZh
ciBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSA9IERPTVByb3BlcnR5LmluamVjdGlvbi5IQVNf
UE9TSVRJVkVfTlVNRVJJQ19WQUxVRTtcblx0dmFyIEhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFM
VUUgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uSEFTX09WRVJMT0FERURfQk9PTEVBTl9WQUxVRTtc
blx0XG5cdHZhciBIVE1MRE9NUHJvcGVydHlDb25maWcgPSB7XG5cdCAgaXNDdXN0b21BdHRyaWJ1
dGU6IFJlZ0V4cC5wcm90b3R5cGUudGVzdC5iaW5kKG5ldyBSZWdFeHAoJ14oZGF0YXxhcmlhKS1b
JyArIERPTVByb3BlcnR5LkFUVFJJQlVURV9OQU1FX0NIQVIgKyAnXSokJykpLFxuXHQgIFByb3Bl
cnRpZXM6IHtcblx0ICAgIC8qKlxuXHQgICAgICogU3RhbmRhcmQgUHJvcGVydGllc1xuXHQgICAg
ICovXG5cdCAgICBhY2NlcHQ6IDAsXG5cdCAgICBhY2NlcHRDaGFyc2V0OiAwLFxuXHQgICAgYWNj
ZXNzS2V5OiAwLFxuXHQgICAgYWN0aW9uOiAwLFxuXHQgICAgYWxsb3dGdWxsU2NyZWVuOiBIQVNf
Qk9PTEVBTl9WQUxVRSxcblx0ICAgIGFsbG93VHJhbnNwYXJlbmN5OiAwLFxuXHQgICAgYWx0OiAw
LFxuXHQgICAgLy8gc3BlY2lmaWVzIHRhcmdldCBjb250ZXh0IGZvciBsaW5rcyB3aXRoIGBwcmVs
b2FkYCB0eXBlXG5cdCAgICBhczogMCxcblx0ICAgIGFzeW5jOiBIQVNfQk9PTEVBTl9WQUxVRSxc
blx0ICAgIGF1dG9Db21wbGV0ZTogMCxcblx0ICAgIC8vIGF1dG9Gb2N1cyBpcyBwb2x5ZmlsbGVk
L25vcm1hbGl6ZWQgYnkgQXV0b0ZvY3VzVXRpbHNcblx0ICAgIC8vIGF1dG9Gb2N1czogSEFTX0JP
T0xFQU5fVkFMVUUsXG5cdCAgICBhdXRvUGxheTogSEFTX0JPT0xFQU5fVkFMVUUsXG5cdCAgICBj
YXB0dXJlOiBIQVNfQk9PTEVBTl9WQUxVRSxcblx0ICAgIGNlbGxQYWRkaW5nOiAwLFxuXHQgICAg
Y2VsbFNwYWNpbmc6IDAsXG5cdCAgICBjaGFyU2V0OiAwLFxuXHQgICAgY2hhbGxlbmdlOiAwLFxu
XHQgICAgY2hlY2tlZDogTVVTVF9VU0VfUFJPUEVSVFkgfCBIQVNfQk9PTEVBTl9WQUxVRSxcblx0
ICAgIGNpdGU6IDAsXG5cdCAgICBjbGFzc0lEOiAwLFxuXHQgICAgY2xhc3NOYW1lOiAwLFxuXHQg
ICAgY29sczogSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUsXG5cdCAgICBjb2xTcGFuOiAwLFxu
XHQgICAgY29udGVudDogMCxcblx0ICAgIGNvbnRlbnRFZGl0YWJsZTogMCxcblx0ICAgIGNvbnRl
eHRNZW51OiAwLFxuXHQgICAgY29udHJvbHM6IEhBU19CT09MRUFOX1ZBTFVFLFxuXHQgICAgY29v
cmRzOiAwLFxuXHQgICAgY3Jvc3NPcmlnaW46IDAsXG5cdCAgICBkYXRhOiAwLCAvLyBGb3IgYDxv
YmplY3QgLz5gIGFjdHMgYXMgYHNyY2AuXG5cdCAgICBkYXRlVGltZTogMCxcblx0ICAgICdkZWZh
dWx0JzogSEFTX0JPT0xFQU5fVkFMVUUsXG5cdCAgICBkZWZlcjogSEFTX0JPT0xFQU5fVkFMVUUs
XG5cdCAgICBkaXI6IDAsXG5cdCAgICBkaXNhYmxlZDogSEFTX0JPT0xFQU5fVkFMVUUsXG5cdCAg
ICBkb3dubG9hZDogSEFTX09WRVJMT0FERURfQk9PTEVBTl9WQUxVRSxcblx0ICAgIGRyYWdnYWJs
ZTogMCxcblx0ICAgIGVuY1R5cGU6IDAsXG5cdCAgICBmb3JtOiAwLFxuXHQgICAgZm9ybUFjdGlv
bjogMCxcblx0ICAgIGZvcm1FbmNUeXBlOiAwLFxuXHQgICAgZm9ybU1ldGhvZDogMCxcblx0ICAg
IGZvcm1Ob1ZhbGlkYXRlOiBIQVNfQk9PTEVBTl9WQUxVRSxcblx0ICAgIGZvcm1UYXJnZXQ6IDAs
XG5cdCAgICBmcmFtZUJvcmRlcjogMCxcblx0ICAgIGhlYWRlcnM6IDAsXG5cdCAgICBoZWlnaHQ6
IDAsXG5cdCAgICBoaWRkZW46IEhBU19CT09MRUFOX1ZBTFVFLFxuXHQgICAgaGlnaDogMCxcblx0
ICAgIGhyZWY6IDAsXG5cdCAgICBocmVmTGFuZzogMCxcblx0ICAgIGh0bWxGb3I6IDAsXG5cdCAg
ICBodHRwRXF1aXY6IDAsXG5cdCAgICBpY29uOiAwLFxuXHQgICAgaWQ6IDAsXG5cdCAgICBpbnB1
dE1vZGU6IDAsXG5cdCAgICBpbnRlZ3JpdHk6IDAsXG5cdCAgICBpczogMCxcblx0ICAgIGtleVBh
cmFtczogMCxcblx0ICAgIGtleVR5cGU6IDAsXG5cdCAgICBraW5kOiAwLFxuXHQgICAgbGFiZWw6
IDAsXG5cdCAgICBsYW5nOiAwLFxuXHQgICAgbGlzdDogMCxcblx0ICAgIGxvb3A6IEhBU19CT09M
RUFOX1ZBTFVFLFxuXHQgICAgbG93OiAwLFxuXHQgICAgbWFuaWZlc3Q6IDAsXG5cdCAgICBtYXJn
aW5IZWlnaHQ6IDAsXG5cdCAgICBtYXJnaW5XaWR0aDogMCxcblx0ICAgIG1heDogMCxcblx0ICAg
IG1heExlbmd0aDogMCxcblx0ICAgIG1lZGlhOiAwLFxuXHQgICAgbWVkaWFHcm91cDogMCxcblx0
ICAgIG1ldGhvZDogMCxcblx0ICAgIG1pbjogMCxcblx0ICAgIG1pbkxlbmd0aDogMCxcblx0ICAg
IC8vIENhdXRpb247IGBvcHRpb24uc2VsZWN0ZWRgIGlzIG5vdCB1cGRhdGVkIGlmIGBzZWxlY3Qu
bXVsdGlwbGVgIGlzXG5cdCAgICAvLyBkaXNhYmxlZCB3aXRoIGByZW1vdmVBdHRyaWJ1dGVgLlxu
XHQgICAgbXVsdGlwbGU6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFTX0JPT0xFQU5fVkFMVUUsXG5c
dCAgICBtdXRlZDogTVVTVF9VU0VfUFJPUEVSVFkgfCBIQVNfQk9PTEVBTl9WQUxVRSxcblx0ICAg
IG5hbWU6IDAsXG5cdCAgICBub25jZTogMCxcblx0ICAgIG5vVmFsaWRhdGU6IEhBU19CT09MRUFO
X1ZBTFVFLFxuXHQgICAgb3BlbjogSEFTX0JPT0xFQU5fVkFMVUUsXG5cdCAgICBvcHRpbXVtOiAw
LFxuXHQgICAgcGF0dGVybjogMCxcblx0ICAgIHBsYWNlaG9sZGVyOiAwLFxuXHQgICAgcGxheXNJ
bmxpbmU6IEhBU19CT09MRUFOX1ZBTFVFLFxuXHQgICAgcG9zdGVyOiAwLFxuXHQgICAgcHJlbG9h
ZDogMCxcblx0ICAgIHByb2ZpbGU6IDAsXG5cdCAgICByYWRpb0dyb3VwOiAwLFxuXHQgICAgcmVh
ZE9ubHk6IEhBU19CT09MRUFOX1ZBTFVFLFxuXHQgICAgcmVmZXJyZXJQb2xpY3k6IDAsXG5cdCAg
ICByZWw6IDAsXG5cdCAgICByZXF1aXJlZDogSEFTX0JPT0xFQU5fVkFMVUUsXG5cdCAgICByZXZl
cnNlZDogSEFTX0JPT0xFQU5fVkFMVUUsXG5cdCAgICByb2xlOiAwLFxuXHQgICAgcm93czogSEFT
X1BPU0lUSVZFX05VTUVSSUNfVkFMVUUsXG5cdCAgICByb3dTcGFuOiBIQVNfTlVNRVJJQ19WQUxV
RSxcblx0ICAgIHNhbmRib3g6IDAsXG5cdCAgICBzY29wZTogMCxcblx0ICAgIHNjb3BlZDogSEFT
X0JPT0xFQU5fVkFMVUUsXG5cdCAgICBzY3JvbGxpbmc6IDAsXG5cdCAgICBzZWFtbGVzczogSEFT
X0JPT0xFQU5fVkFMVUUsXG5cdCAgICBzZWxlY3RlZDogTVVTVF9VU0VfUFJPUEVSVFkgfCBIQVNf
Qk9PTEVBTl9WQUxVRSxcblx0ICAgIHNoYXBlOiAwLFxuXHQgICAgc2l6ZTogSEFTX1BPU0lUSVZF
X05VTUVSSUNfVkFMVUUsXG5cdCAgICBzaXplczogMCxcblx0ICAgIHNwYW46IEhBU19QT1NJVElW
RV9OVU1FUklDX1ZBTFVFLFxuXHQgICAgc3BlbGxDaGVjazogMCxcblx0ICAgIHNyYzogMCxcblx0
ICAgIHNyY0RvYzogMCxcblx0ICAgIHNyY0xhbmc6IDAsXG5cdCAgICBzcmNTZXQ6IDAsXG5cdCAg
ICBzdGFydDogSEFTX05VTUVSSUNfVkFMVUUsXG5cdCAgICBzdGVwOiAwLFxuXHQgICAgc3R5bGU6
IDAsXG5cdCAgICBzdW1tYXJ5OiAwLFxuXHQgICAgdGFiSW5kZXg6IDAsXG5cdCAgICB0YXJnZXQ6
IDAsXG5cdCAgICB0aXRsZTogMCxcblx0ICAgIC8vIFNldHRpbmcgLnR5cGUgdGhyb3dzIG9uIG5v
bi08aW5wdXQ+IHRhZ3Ncblx0ICAgIHR5cGU6IDAsXG5cdCAgICB1c2VNYXA6IDAsXG5cdCAgICB2
YWx1ZTogMCxcblx0ICAgIHdpZHRoOiAwLFxuXHQgICAgd21vZGU6IDAsXG5cdCAgICB3cmFwOiAw
LFxuXHRcblx0ICAgIC8qKlxuXHQgICAgICogUkRGYSBQcm9wZXJ0aWVzXG5cdCAgICAgKi9cblx0
ICAgIGFib3V0OiAwLFxuXHQgICAgZGF0YXR5cGU6IDAsXG5cdCAgICBpbmxpc3Q6IDAsXG5cdCAg
ICBwcmVmaXg6IDAsXG5cdCAgICAvLyBwcm9wZXJ0eSBpcyBhbHNvIHN1cHBvcnRlZCBmb3IgT3Bl
bkdyYXBoIGluIG1ldGEgdGFncy5cblx0ICAgIHByb3BlcnR5OiAwLFxuXHQgICAgcmVzb3VyY2U6
IDAsXG5cdCAgICAndHlwZW9mJzogMCxcblx0ICAgIHZvY2FiOiAwLFxuXHRcblx0ICAgIC8qKlxu
XHQgICAgICogTm9uLXN0YW5kYXJkIFByb3BlcnRpZXNcblx0ICAgICAqL1xuXHQgICAgLy8gYXV0
b0NhcGl0YWxpemUgYW5kIGF1dG9Db3JyZWN0IGFyZSBzdXBwb3J0ZWQgaW4gTW9iaWxlIFNhZmFy
aSBmb3Jcblx0ICAgIC8vIGtleWJvYXJkIGhpbnRzLlxuXHQgICAgYXV0b0NhcGl0YWxpemU6IDAs
XG5cdCAgICBhdXRvQ29ycmVjdDogMCxcblx0ICAgIC8vIGF1dG9TYXZlIGFsbG93cyBXZWJLaXQv
QmxpbmsgdG8gcGVyc2lzdCB2YWx1ZXMgb2YgaW5wdXQgZmllbGRzIG9uIHBhZ2UgcmVsb2Fkc1xu
XHQgICAgYXV0b1NhdmU6IDAsXG5cdCAgICAvLyBjb2xvciBpcyBmb3IgU2FmYXJpIG1hc2staWNv
biBsaW5rXG5cdCAgICBjb2xvcjogMCxcblx0ICAgIC8vIGl0ZW1Qcm9wLCBpdGVtU2NvcGUsIGl0
ZW1UeXBlIGFyZSBmb3Jcblx0ICAgIC8vIE1pY3JvZGF0YSBzdXBwb3J0LiBTZWUgaHR0cDovL3Nj
aGVtYS5vcmcvZG9jcy9ncy5odG1sXG5cdCAgICBpdGVtUHJvcDogMCxcblx0ICAgIGl0ZW1TY29w
ZTogSEFTX0JPT0xFQU5fVkFMVUUsXG5cdCAgICBpdGVtVHlwZTogMCxcblx0ICAgIC8vIGl0ZW1J
RCBhbmQgaXRlbVJlZiBhcmUgZm9yIE1pY3JvZGF0YSBzdXBwb3J0IGFzIHdlbGwgYnV0XG5cdCAg
ICAvLyBvbmx5IHNwZWNpZmllZCBpbiB0aGUgV0hBVFdHIHNwZWMgZG9jdW1lbnQuIFNlZVxuXHQg
ICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2UvbWljcm9kYXRhLmh0
bWwjbWljcm9kYXRhLWRvbS1hcGlcblx0ICAgIGl0ZW1JRDogMCxcblx0ICAgIGl0ZW1SZWY6IDAs
XG5cdCAgICAvLyByZXN1bHRzIHNob3cgbG9va2luZyBnbGFzcyBpY29uIGFuZCByZWNlbnQgc2Vh
cmNoZXMgb24gaW5wdXRcblx0ICAgIC8vIHNlYXJjaCBmaWVsZHMgaW4gV2ViS2l0L0JsaW5rXG5c
dCAgICByZXN1bHRzOiAwLFxuXHQgICAgLy8gSUUtb25seSBhdHRyaWJ1dGUgdGhhdCBzcGVjaWZp
ZXMgc2VjdXJpdHkgcmVzdHJpY3Rpb25zIG9uIGFuIGlmcmFtZVxuXHQgICAgLy8gYXMgYW4gYWx0
ZXJuYXRpdmUgdG8gdGhlIHNhbmRib3ggYXR0cmlidXRlIG9uIElFPDEwXG5cdCAgICBzZWN1cml0
eTogMCxcblx0ICAgIC8vIElFLW9ubHkgYXR0cmlidXRlIHRoYXQgY29udHJvbHMgZm9jdXMgYmVo
YXZpb3Jcblx0ICAgIHVuc2VsZWN0YWJsZTogMFxuXHQgIH0sXG5cdCAgRE9NQXR0cmlidXRlTmFt
ZXM6IHtcblx0ICAgIGFjY2VwdENoYXJzZXQ6ICdhY2NlcHQtY2hhcnNldCcsXG5cdCAgICBjbGFz
c05hbWU6ICdjbGFzcycsXG5cdCAgICBodG1sRm9yOiAnZm9yJyxcblx0ICAgIGh0dHBFcXVpdjog
J2h0dHAtZXF1aXYnXG5cdCAgfSxcblx0ICBET01Qcm9wZXJ0eU5hbWVzOiB7fSxcblx0ICBET01N
dXRhdGlvbk1ldGhvZHM6IHtcblx0ICAgIHZhbHVlOiBmdW5jdGlvbiAobm9kZSwgdmFsdWUpIHtc
blx0ICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcblx0ICAgICAgICByZXR1cm4gbm9kZS5yZW1v
dmVBdHRyaWJ1dGUoJ3ZhbHVlJyk7XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIC8vIE51bWJlciBp
bnB1dHMgZ2V0IHNwZWNpYWwgdHJlYXRtZW50IGR1ZSB0byBzb21lIGVkZ2UgY2FzZXMgaW5cblx0
ICAgICAgLy8gQ2hyb21lLiBMZXQgZXZlcnl0aGluZyBlbHNlIGFzc2lnbiB0aGUgdmFsdWUgYXR0
cmlidXRlIGFzIG5vcm1hbC5cblx0ICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29r
L3JlYWN0L2lzc3Vlcy83MjUzI2lzc3VlY29tbWVudC0yMzYwNzQzMjZcblx0ICAgICAgaWYgKG5v
ZGUudHlwZSAhPT0gJ251bWJlcicgfHwgbm9kZS5oYXNBdHRyaWJ1dGUoJ3ZhbHVlJykgPT09IGZh
bHNlKSB7XG5cdCAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgJycgKyB2YWx1ZSk7
XG5cdCAgICAgIH0gZWxzZSBpZiAobm9kZS52YWxpZGl0eSAmJiAhbm9kZS52YWxpZGl0eS5iYWRJ
bnB1dCAmJiBub2RlLm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gbm9kZSkge1xuXHQg
ICAgICAgIC8vIERvbid0IGFzc2lnbiBhbiBhdHRyaWJ1dGUgaWYgdmFsaWRhdGlvbiByZXBvcnRz
IGJhZFxuXHQgICAgICAgIC8vIGlucHV0LiBDaHJvbWUgd2lsbCBjbGVhciB0aGUgdmFsdWUuIEFk
ZGl0aW9uYWxseSwgZG9uJ3Rcblx0ICAgICAgICAvLyBvcGVyYXRlIG9uIGlucHV0cyB0aGF0IGhh
dmUgZm9jdXMsIG90aGVyd2lzZSBDaHJvbWUgbWlnaHRcblx0ICAgICAgICAvLyBzdHJpcCBvZmYg
dHJhaWxpbmcgZGVjaW1hbCBwbGFjZXMgYW5kIGNhdXNlIHRoZSB1c2VyJ3Ncblx0ICAgICAgICAv
LyBjdXJzb3IgcG9zaXRpb24gdG8ganVtcCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBpbnB1dC5c
blx0ICAgICAgICAvL1xuXHQgICAgICAgIC8vIEluIFJlYWN0RE9NSW5wdXQsIHdlIGhhdmUgYW4g
b25CbHVyIGV2ZW50IHRoYXQgd2lsbCB0cmlnZ2VyXG5cdCAgICAgICAgLy8gdGhpcyBmdW5jdGlv
biBhZ2FpbiB3aGVuIGZvY3VzIGlzIGxvc3QuXG5cdCAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUo
J3ZhbHVlJywgJycgKyB2YWx1ZSk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cdH07XG5c
dFxuXHRtb2R1bGUuZXhwb3J0cyA9IEhUTUxET01Qcm9wZXJ0eUNvbmZpZztcblxuLyoqKi8gfSxc
bi8qIDEzNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVx
dWlyZV9fKSB7XG5cblx0LyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKHByb2Nl
c3MpIHsvKipcblx0ICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxu
XHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgUmVhY3RSZWNvbmNpbGVyID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxNik7XG5cdFxuXHR2YXIgaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCA9IF9fd2Vi
cGFja19yZXF1aXJlX18oNzUpO1xuXHR2YXIgS2V5RXNjYXBlVXRpbHMgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDM4KTtcblx0dmFyIHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50ID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg0OCk7XG5cdHZhciB0cmF2ZXJzZUFsbENoaWxkcmVuID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg3OCk7XG5cdHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0
XG5cdHZhciBSZWFjdENvbXBvbmVudFRyZWVIb29rO1xuXHRcblx0aWYgKHR5cGVvZiBwcm9jZXNz
ICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLmVudiAmJiAoXCJwcm9kdWN0aW9uXCIpID09PSAn
dGVzdCcpIHtcblx0ICAvLyBUZW1wb3JhcnkgaGFjay5cblx0ICAvLyBJbmxpbmUgcmVxdWlyZXMg
ZG9uJ3Qgd29yayB3ZWxsIHdpdGggSmVzdDpcblx0ICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFj
ZWJvb2svcmVhY3QvaXNzdWVzLzcyNDBcblx0ICAvLyBSZW1vdmUgdGhlIGlubGluZSByZXF1aXJl
cyB3aGVuIHdlIGRvbid0IG5lZWQgdGhlbSBhbnltb3JlOlxuXHQgIC8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzcxNzhcblx0ICBSZWFjdENvbXBvbmVudFRyZWVIb29r
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5MCk7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGluc3RhbnRp
YXRlQ2hpbGQoY2hpbGRJbnN0YW5jZXMsIGNoaWxkLCBuYW1lLCBzZWxmRGVidWdJRCkge1xuXHQg
IC8vIFdlIGZvdW5kIGEgY29tcG9uZW50IGluc3RhbmNlLlxuXHQgIHZhciBrZXlVbmlxdWUgPSBj
aGlsZEluc3RhbmNlc1tuYW1lXSA9PT0gdW5kZWZpbmVkO1xuXHQgIGlmIChmYWxzZSkge1xuXHQg
ICAgaWYgKCFSZWFjdENvbXBvbmVudFRyZWVIb29rKSB7XG5cdCAgICAgIFJlYWN0Q29tcG9uZW50
VHJlZUhvb2sgPSByZXF1aXJlKCdyZWFjdC9saWIvUmVhY3RDb21wb25lbnRUcmVlSG9vaycpO1xu
XHQgICAgfVxuXHQgICAgaWYgKCFrZXlVbmlxdWUpIHtcblx0ICAgICAgcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdmbGF0dGVuQ2hpbGRyZW4o
Li4uKTogRW5jb3VudGVyZWQgdHdvIGNoaWxkcmVuIHdpdGggdGhlIHNhbWUga2V5LCAnICsgJ2Al
c2AuIENoaWxkIGtleXMgbXVzdCBiZSB1bmlxdWU7IHdoZW4gdHdvIGNoaWxkcmVuIHNoYXJlIGEg
a2V5LCBvbmx5ICcgKyAndGhlIGZpcnN0IGNoaWxkIHdpbGwgYmUgdXNlZC4lcycsIEtleUVzY2Fw
ZVV0aWxzLnVuZXNjYXBlKG5hbWUpLCBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFN0YWNrQWRk
ZW5kdW1CeUlEKHNlbGZEZWJ1Z0lEKSkgOiB2b2lkIDA7XG5cdCAgICB9XG5cdCAgfVxuXHQgIGlm
IChjaGlsZCAhPSBudWxsICYmIGtleVVuaXF1ZSkge1xuXHQgICAgY2hpbGRJbnN0YW5jZXNbbmFt
ZV0gPSBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KGNoaWxkLCB0cnVlKTtcblx0ICB9XG5cdH1c
blx0XG5cdC8qKlxuXHQgKiBSZWFjdENoaWxkUmVjb25jaWxlciBwcm92aWRlcyBoZWxwZXJzIGZv
ciBpbml0aWFsaXppbmcgb3IgdXBkYXRpbmcgYSBzZXQgb2Zcblx0ICogY2hpbGRyZW4uIEl0cyBv
dXRwdXQgaXMgc3VpdGFibGUgZm9yIHBhc3NpbmcgaXQgb250byBSZWFjdE11bHRpQ2hpbGQgd2hp
Y2hcblx0ICogZG9lcyBkaWZmZWQgcmVvcmRlcmluZyBhbmQgaW5zZXJ0aW9uLlxuXHQgKi9cblx0
dmFyIFJlYWN0Q2hpbGRSZWNvbmNpbGVyID0ge1xuXHQgIC8qKlxuXHQgICAqIEdlbmVyYXRlcyBh
IFwibW91bnQgaW1hZ2VcIiBmb3IgZWFjaCBvZiB0aGUgc3VwcGxpZWQgY2hpbGRyZW4uIEluIHRo
ZSBjYXNlXG5cdCAgICogb2YgYFJlYWN0RE9NQ29tcG9uZW50YCwgYSBtb3VudCBpbWFnZSBpcyBh
IHN0cmluZyBvZiBtYXJrdXAuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0gez9vYmplY3R9IG5lc3Rl
ZENoaWxkTm9kZXMgTmVzdGVkIGNoaWxkIG1hcHMuXG5cdCAgICogQHJldHVybiB7P29iamVjdH0g
QSBzZXQgb2YgY2hpbGQgaW5zdGFuY2VzLlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQg
IGluc3RhbnRpYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChuZXN0ZWRDaGlsZE5vZGVzLCB0cmFuc2Fj
dGlvbiwgY29udGV4dCwgc2VsZkRlYnVnSUQpIC8vIDAgaW4gcHJvZHVjdGlvbiBhbmQgZm9yIHJv
b3RzXG5cdCAge1xuXHQgICAgaWYgKG5lc3RlZENoaWxkTm9kZXMgPT0gbnVsbCkge1xuXHQgICAg
ICByZXR1cm4gbnVsbDtcblx0ICAgIH1cblx0ICAgIHZhciBjaGlsZEluc3RhbmNlcyA9IHt9O1xu
XHRcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICB0cmF2ZXJzZUFsbENoaWxkcmVuKG5lc3Rl
ZENoaWxkTm9kZXMsIGZ1bmN0aW9uIChjaGlsZEluc3RzLCBjaGlsZCwgbmFtZSkge1xuXHQgICAg
ICAgIHJldHVybiBpbnN0YW50aWF0ZUNoaWxkKGNoaWxkSW5zdHMsIGNoaWxkLCBuYW1lLCBzZWxm
RGVidWdJRCk7XG5cdCAgICAgIH0sIGNoaWxkSW5zdGFuY2VzKTtcblx0ICAgIH0gZWxzZSB7XG5c
dCAgICAgIHRyYXZlcnNlQWxsQ2hpbGRyZW4obmVzdGVkQ2hpbGROb2RlcywgaW5zdGFudGlhdGVD
aGlsZCwgY2hpbGRJbnN0YW5jZXMpO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIGNoaWxkSW5zdGFu
Y2VzO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFVwZGF0ZXMgdGhlIHJlbmRlcmVkIGNo
aWxkcmVuIGFuZCByZXR1cm5zIGEgbmV3IHNldCBvZiBjaGlsZHJlbi5cblx0ICAgKlxuXHQgICAq
IEBwYXJhbSB7P29iamVjdH0gcHJldkNoaWxkcmVuIFByZXZpb3VzbHkgaW5pdGlhbGl6ZWQgc2V0
IG9mIGNoaWxkcmVuLlxuXHQgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dENoaWxkcmVuIEZsYXQg
Y2hpbGQgZWxlbWVudCBtYXBzLlxuXHQgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2Fj
dGlvbn0gdHJhbnNhY3Rpb25cblx0ICAgKiBAcGFyYW0ge29iamVjdH0gY29udGV4dFxuXHQgICAq
IEByZXR1cm4gez9vYmplY3R9IEEgbmV3IHNldCBvZiBjaGlsZCBpbnN0YW5jZXMuXG5cdCAgICog
QGludGVybmFsXG5cdCAgICovXG5cdCAgdXBkYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChwcmV2Q2hp
bGRyZW4sIG5leHRDaGlsZHJlbiwgbW91bnRJbWFnZXMsIHJlbW92ZWROb2RlcywgdHJhbnNhY3Rp
b24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0LCBzZWxmRGVidWdJRCkg
Ly8gMCBpbiBwcm9kdWN0aW9uIGFuZCBmb3Igcm9vdHNcblx0ICB7XG5cdCAgICAvLyBXZSBjdXJy
ZW50bHkgZG9uJ3QgaGF2ZSBhIHdheSB0byB0cmFjayBtb3ZlcyBoZXJlIGJ1dCBpZiB3ZSB1c2Ug
aXRlcmF0b3JzXG5cdCAgICAvLyBpbnN0ZWFkIG9mIGZvci4uaW4gd2UgY2FuIHppcCB0aGUgaXRl
cmF0b3JzIGFuZCBjaGVjayBpZiBhbiBpdGVtIGhhc1xuXHQgICAgLy8gbW92ZWQuXG5cdCAgICAv
LyBUT0RPOiBJZiBub3RoaW5nIGhhcyBjaGFuZ2VkLCByZXR1cm4gdGhlIHByZXZDaGlsZHJlbiBv
YmplY3Qgc28gdGhhdCB3ZVxuXHQgICAgLy8gY2FuIHF1aWNrbHkgYmFpbG91dCBpZiBub3RoaW5n
IGhhcyBjaGFuZ2VkLlxuXHQgICAgaWYgKCFuZXh0Q2hpbGRyZW4gJiYgIXByZXZDaGlsZHJlbikg
e1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAgICB2YXIgbmFtZTtcblx0ICAgIHZhciBw
cmV2Q2hpbGQ7XG5cdCAgICBmb3IgKG5hbWUgaW4gbmV4dENoaWxkcmVuKSB7XG5cdCAgICAgIGlm
ICghbmV4dENoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG5cdCAgICAgICAgY29udGlu
dWU7XG5cdCAgICAgIH1cblx0ICAgICAgcHJldkNoaWxkID0gcHJldkNoaWxkcmVuICYmIHByZXZD
aGlsZHJlbltuYW1lXTtcblx0ICAgICAgdmFyIHByZXZFbGVtZW50ID0gcHJldkNoaWxkICYmIHBy
ZXZDaGlsZC5fY3VycmVudEVsZW1lbnQ7XG5cdCAgICAgIHZhciBuZXh0RWxlbWVudCA9IG5leHRD
aGlsZHJlbltuYW1lXTtcblx0ICAgICAgaWYgKHByZXZDaGlsZCAhPSBudWxsICYmIHNob3VsZFVw
ZGF0ZVJlYWN0Q29tcG9uZW50KHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCkpIHtcblx0ICAgICAg
ICBSZWFjdFJlY29uY2lsZXIucmVjZWl2ZUNvbXBvbmVudChwcmV2Q2hpbGQsIG5leHRFbGVtZW50
LCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG5cdCAgICAgICAgbmV4dENoaWxkcmVuW25hbWVdID0g
cHJldkNoaWxkO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIGlmIChwcmV2Q2hpbGQpIHtc
blx0ICAgICAgICAgIHJlbW92ZWROb2Rlc1tuYW1lXSA9IFJlYWN0UmVjb25jaWxlci5nZXRIb3N0
Tm9kZShwcmV2Q2hpbGQpO1xuXHQgICAgICAgICAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21w
b25lbnQocHJldkNoaWxkLCBmYWxzZSk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIC8vIFRoZSBj
aGlsZCBtdXN0IGJlIGluc3RhbnRpYXRlZCBiZWZvcmUgaXQncyBtb3VudGVkLlxuXHQgICAgICAg
IHZhciBuZXh0Q2hpbGRJbnN0YW5jZSA9IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQobmV4dEVs
ZW1lbnQsIHRydWUpO1xuXHQgICAgICAgIG5leHRDaGlsZHJlbltuYW1lXSA9IG5leHRDaGlsZElu
c3RhbmNlO1xuXHQgICAgICAgIC8vIENyZWF0aW5nIG1vdW50IGltYWdlIG5vdyBlbnN1cmVzIHJl
ZnMgYXJlIHJlc29sdmVkIGluIHJpZ2h0IG9yZGVyXG5cdCAgICAgICAgLy8gKHNlZSBodHRwczov
L2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC83MTAxIGZvciBleHBsYW5hdGlvbikuXG5c
dCAgICAgICAgdmFyIG5leHRDaGlsZE1vdW50SW1hZ2UgPSBSZWFjdFJlY29uY2lsZXIubW91bnRD
b21wb25lbnQobmV4dENoaWxkSW5zdGFuY2UsIHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0
Q29udGFpbmVySW5mbywgY29udGV4dCwgc2VsZkRlYnVnSUQpO1xuXHQgICAgICAgIG1vdW50SW1h
Z2VzLnB1c2gobmV4dENoaWxkTW91bnRJbWFnZSk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAg
IC8vIFVubW91bnQgY2hpbGRyZW4gdGhhdCBhcmUgbm8gbG9uZ2VyIHByZXNlbnQuXG5cdCAgICBm
b3IgKG5hbWUgaW4gcHJldkNoaWxkcmVuKSB7XG5cdCAgICAgIGlmIChwcmV2Q2hpbGRyZW4uaGFz
T3duUHJvcGVydHkobmFtZSkgJiYgIShuZXh0Q2hpbGRyZW4gJiYgbmV4dENoaWxkcmVuLmhhc093
blByb3BlcnR5KG5hbWUpKSkge1xuXHQgICAgICAgIHByZXZDaGlsZCA9IHByZXZDaGlsZHJlbltu
YW1lXTtcblx0ICAgICAgICByZW1vdmVkTm9kZXNbbmFtZV0gPSBSZWFjdFJlY29uY2lsZXIuZ2V0
SG9zdE5vZGUocHJldkNoaWxkKTtcblx0ICAgICAgICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENv
bXBvbmVudChwcmV2Q2hpbGQsIGZhbHNlKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH0sXG5c
dFxuXHQgIC8qKlxuXHQgICAqIFVubW91bnRzIGFsbCByZW5kZXJlZCBjaGlsZHJlbi4gVGhpcyBz
aG91bGQgYmUgdXNlZCB0byBjbGVhbiB1cCBjaGlsZHJlblxuXHQgICAqIHdoZW4gdGhpcyBjb21w
b25lbnQgaXMgdW5tb3VudGVkLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHs/b2JqZWN0fSByZW5k
ZXJlZENoaWxkcmVuIFByZXZpb3VzbHkgaW5pdGlhbGl6ZWQgc2V0IG9mIGNoaWxkcmVuLlxuXHQg
ICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIHVubW91bnRDaGlsZHJlbjogZnVuY3Rpb24gKHJl
bmRlcmVkQ2hpbGRyZW4sIHNhZmVseSkge1xuXHQgICAgZm9yICh2YXIgbmFtZSBpbiByZW5kZXJl
ZENoaWxkcmVuKSB7XG5cdCAgICAgIGlmIChyZW5kZXJlZENoaWxkcmVuLmhhc093blByb3BlcnR5
KG5hbWUpKSB7XG5cdCAgICAgICAgdmFyIHJlbmRlcmVkQ2hpbGQgPSByZW5kZXJlZENoaWxkcmVu
W25hbWVdO1xuXHQgICAgICAgIFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29tcG9uZW50KHJlbmRl
cmVkQ2hpbGQsIHNhZmVseSk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdFxu
XHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q2hpbGRSZWNvbmNpbGVyO1xuXHQvKiBXRUJQQUNLIFZB
UiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyg4NykpKVxu
XG4vKioqLyB9LFxuLyogMTM1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9f
d2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgRE9NQ2hpbGRy
ZW5PcGVyYXRpb25zID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNCk7XG5cdHZhciBSZWFjdERPTUlE
T3BlcmF0aW9ucyA9IF9fd2VicGFja19yZXF1aXJlX18oMTQyKTtcblx0XG5cdC8qKlxuXHQgKiBB
YnN0cmFjdHMgYXdheSBhbGwgZnVuY3Rpb25hbGl0eSBvZiB0aGUgcmVjb25jaWxlciB0aGF0IHJl
cXVpcmVzIGtub3dsZWRnZSBvZlxuXHQgKiB0aGUgYnJvd3NlciBjb250ZXh0LiBUT0RPOiBUaGVz
ZSBjYWxsZXJzIHNob3VsZCBiZSByZWZhY3RvcmVkIHRvIGF2b2lkIHRoZVxuXHQgKiBuZWVkIGZv
ciB0aGlzIGluamVjdGlvbi5cblx0ICovXG5cdHZhciBSZWFjdENvbXBvbmVudEJyb3dzZXJFbnZp
cm9ubWVudCA9IHtcblx0ICBwcm9jZXNzQ2hpbGRyZW5VcGRhdGVzOiBSZWFjdERPTUlET3BlcmF0
aW9ucy5kYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJlblVwZGF0ZXMsXG5cdFxuXHQgIHJlcGxhY2VO
b2RlV2l0aE1hcmt1cDogRE9NQ2hpbGRyZW5PcGVyYXRpb25zLmRhbmdlcm91c2x5UmVwbGFjZU5v
ZGVXaXRoTWFya3VwXG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q29tcG9uZW50
QnJvd3NlckVudmlyb25tZW50O1xuXG4vKioqLyB9LFxuLyogMTM2ICovXG4vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7
XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpLFxuXHQg
ICAgX2Fzc2lnbiA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdFxuXHR2YXIgUmVhY3QgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDE3KTtcblx0dmFyIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQwKTtcblx0dmFyIFJlYWN0Q3VycmVudE93bmVyID0gX193
ZWJwYWNrX3JlcXVpcmVfXygxMSk7XG5cdHZhciBSZWFjdEVycm9yVXRpbHMgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDQxKTtcblx0dmFyIFJlYWN0SW5zdGFuY2VNYXAgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDIxKTtcblx0dmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVf
Xyg4KTtcblx0dmFyIFJlYWN0Tm9kZVR5cGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2OCk7XG5c
dHZhciBSZWFjdFJlY29uY2lsZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2KTtcblx0XG5cdGlm
IChmYWxzZSkge1xuXHQgIHZhciBjaGVja1JlYWN0VHlwZVNwZWMgPSByZXF1aXJlKCcuL2NoZWNr
UmVhY3RUeXBlU3BlYycpO1xuXHR9XG5cdFxuXHR2YXIgZW1wdHlPYmplY3QgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDI0KTtcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7
XG5cdHZhciBzaGFsbG93RXF1YWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMyKTtcblx0dmFyIHNo
b3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0OCk7XG5cdHZh
ciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0XG5cdHZhciBDb21wb3NpdGVU
eXBlcyA9IHtcblx0ICBJbXB1cmVDbGFzczogMCxcblx0ICBQdXJlQ2xhc3M6IDEsXG5cdCAgU3Rh
dGVsZXNzRnVuY3Rpb25hbDogMlxuXHR9O1xuXHRcblx0ZnVuY3Rpb24gU3RhdGVsZXNzQ29tcG9u
ZW50KENvbXBvbmVudCkge31cblx0U3RhdGVsZXNzQ29tcG9uZW50LnByb3RvdHlwZS5yZW5kZXIg
PSBmdW5jdGlvbiAoKSB7XG5cdCAgdmFyIENvbXBvbmVudCA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0
KHRoaXMpLl9jdXJyZW50RWxlbWVudC50eXBlO1xuXHQgIHZhciBlbGVtZW50ID0gQ29tcG9uZW50
KHRoaXMucHJvcHMsIHRoaXMuY29udGV4dCwgdGhpcy51cGRhdGVyKTtcblx0ICB3YXJuSWZJbnZh
bGlkRWxlbWVudChDb21wb25lbnQsIGVsZW1lbnQpO1xuXHQgIHJldHVybiBlbGVtZW50O1xuXHR9
O1xuXHRcblx0ZnVuY3Rpb24gd2FybklmSW52YWxpZEVsZW1lbnQoQ29tcG9uZW50LCBlbGVtZW50
KSB7XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nID8gd2FybmluZyhlbGVtZW50ID09PSBudWxsIHx8IGVsZW1lbnQgPT09IGZhbHNl
IHx8IFJlYWN0LmlzVmFsaWRFbGVtZW50KGVsZW1lbnQpLCAnJXMoLi4uKTogQSB2YWxpZCBSZWFj
dCBlbGVtZW50IChvciBudWxsKSBtdXN0IGJlIHJldHVybmVkLiBZb3UgbWF5IGhhdmUgJyArICdy
ZXR1cm5lZCB1bmRlZmluZWQsIGFuIGFycmF5IG9yIHNvbWUgb3RoZXIgaW52YWxpZCBvYmplY3Qu
JywgQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdDb21wb25lbnQn
KSA6IHZvaWQgMDtcblx0ICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKCFDb21wb25lbnQuY2hpbGRDb250ZXh0VHlwZXMsICclcyguLi4pOiBjaGlsZENv
bnRleHRUeXBlcyBjYW5ub3QgYmUgZGVmaW5lZCBvbiBhIGZ1bmN0aW9uYWwgY29tcG9uZW50Lics
IENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50Jykg
OiB2b2lkIDA7XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBzaG91bGRDb25zdHJ1Y3QoQ29t
cG9uZW50KSB7XG5cdCAgcmV0dXJuICEhKENvbXBvbmVudC5wcm90b3R5cGUgJiYgQ29tcG9uZW50
LnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50KTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gaXNQdXJl
Q29tcG9uZW50KENvbXBvbmVudCkge1xuXHQgIHJldHVybiAhIShDb21wb25lbnQucHJvdG90eXBl
ICYmIENvbXBvbmVudC5wcm90b3R5cGUuaXNQdXJlUmVhY3RDb21wb25lbnQpO1xuXHR9XG5cdFxu
XHQvLyBTZXBhcmF0ZWQgaW50byBhIGZ1bmN0aW9uIHRvIGNvbnRhaW4gZGVvcHRpbWl6YXRpb25z
IGNhdXNlZCBieSB0cnkvZmluYWxseS5cblx0ZnVuY3Rpb24gbWVhc3VyZUxpZmVDeWNsZVBlcmYo
Zm4sIGRlYnVnSUQsIHRpbWVyVHlwZSkge1xuXHQgIGlmIChkZWJ1Z0lEID09PSAwKSB7XG5cdCAg
ICAvLyBUb3AtbGV2ZWwgd3JhcHBlcnMgKHNlZSBSZWFjdE1vdW50KSBhbmQgZW1wdHkgY29tcG9u
ZW50cyAoc2VlXG5cdCAgICAvLyBSZWFjdERPTUVtcHR5Q29tcG9uZW50KSBhcmUgaW52aXNpYmxl
IHRvIGhvb2tzIGFuZCBkZXZ0b29scy5cblx0ICAgIC8vIEJvdGggYXJlIGltcGxlbWVudGF0aW9u
IGRldGFpbHMgdGhhdCBzaG91bGQgZ28gYXdheSBpbiB0aGUgZnV0dXJlLlxuXHQgICAgcmV0dXJu
IGZuKCk7XG5cdCAgfVxuXHRcblx0ICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25C
ZWdpbkxpZmVDeWNsZVRpbWVyKGRlYnVnSUQsIHRpbWVyVHlwZSk7XG5cdCAgdHJ5IHtcblx0ICAg
IHJldHVybiBmbigpO1xuXHQgIH0gZmluYWxseSB7XG5cdCAgICBSZWFjdEluc3RydW1lbnRhdGlv
bi5kZWJ1Z1Rvb2wub25FbmRMaWZlQ3ljbGVUaW1lcihkZWJ1Z0lELCB0aW1lclR5cGUpO1xuXHQg
IH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIC0tLS0tLS0tLS0tLS0tLS0tLSBUaGUgTGlmZS1DeWNs
ZSBvZiBhIENvbXBvc2l0ZSBDb21wb25lbnQgLS0tLS0tLS0tLS0tLS0tLS0tXG5cdCAqXG5cdCAq
IC0gY29uc3RydWN0b3I6IEluaXRpYWxpemF0aW9uIG9mIHN0YXRlLiBUaGUgaW5zdGFuY2UgaXMg
bm93IHJldGFpbmVkLlxuXHQgKiAgIC0gY29tcG9uZW50V2lsbE1vdW50XG5cdCAqICAgLSByZW5k
ZXJcblx0ICogICAtIFtjaGlsZHJlbidzIGNvbnN0cnVjdG9yc11cblx0ICogICAgIC0gW2NoaWxk
cmVuJ3MgY29tcG9uZW50V2lsbE1vdW50IGFuZCByZW5kZXJdXG5cdCAqICAgICAtIFtjaGlsZHJl
bidzIGNvbXBvbmVudERpZE1vdW50XVxuXHQgKiAgICAgLSBjb21wb25lbnREaWRNb3VudFxuXHQg
KlxuXHQgKiAgICAgICBVcGRhdGUgUGhhc2VzOlxuXHQgKiAgICAgICAtIGNvbXBvbmVudFdpbGxS
ZWNlaXZlUHJvcHMgKG9ubHkgY2FsbGVkIGlmIHBhcmVudCB1cGRhdGVkKVxuXHQgKiAgICAgICAt
IHNob3VsZENvbXBvbmVudFVwZGF0ZVxuXHQgKiAgICAgICAgIC0gY29tcG9uZW50V2lsbFVwZGF0
ZVxuXHQgKiAgICAgICAgICAgLSByZW5kZXJcblx0ICogICAgICAgICAgIC0gW2NoaWxkcmVuJ3Mg
Y29uc3RydWN0b3JzIG9yIHJlY2VpdmUgcHJvcHMgcGhhc2VzXVxuXHQgKiAgICAgICAgIC0gY29t
cG9uZW50RGlkVXBkYXRlXG5cdCAqXG5cdCAqICAgICAtIGNvbXBvbmVudFdpbGxVbm1vdW50XG5c
dCAqICAgICAtIFtjaGlsZHJlbidzIGNvbXBvbmVudFdpbGxVbm1vdW50XVxuXHQgKiAgIC0gW2No
aWxkcmVuIGRlc3Ryb3llZF1cblx0ICogLSAoZGVzdHJveWVkKTogVGhlIGluc3RhbmNlIGlzIG5v
dyBibGFuaywgcmVsZWFzZWQgYnkgUmVhY3QgYW5kIHJlYWR5IGZvciBHQy5cblx0ICpcblx0ICog
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0ICovXG5cdFxuXHQvKipcblx0ICogQW4gaW5jcmVtZW50
aW5nIElEIGFzc2lnbmVkIHRvIGVhY2ggY29tcG9uZW50IHdoZW4gaXQgaXMgbW91bnRlZC4gVGhp
cyBpc1xuXHQgKiB1c2VkIHRvIGVuZm9yY2UgdGhlIG9yZGVyIGluIHdoaWNoIGBSZWFjdFVwZGF0
ZXNgIHVwZGF0ZXMgZGlydHkgY29tcG9uZW50cy5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICov
XG5cdHZhciBuZXh0TW91bnRJRCA9IDE7XG5cdFxuXHQvKipcblx0ICogQGxlbmRzIHtSZWFjdENv
bXBvc2l0ZUNvbXBvbmVudC5wcm90b3R5cGV9XG5cdCAqL1xuXHR2YXIgUmVhY3RDb21wb3NpdGVD
b21wb25lbnQgPSB7XG5cdCAgLyoqXG5cdCAgICogQmFzZSBjb25zdHJ1Y3RvciBmb3IgYWxsIGNv
bXBvc2l0ZSBjb21wb25lbnQuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0g
ZWxlbWVudFxuXHQgICAqIEBmaW5hbFxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIGNv
bnN0cnVjdDogZnVuY3Rpb24gKGVsZW1lbnQpIHtcblx0ICAgIHRoaXMuX2N1cnJlbnRFbGVtZW50
ID0gZWxlbWVudDtcblx0ICAgIHRoaXMuX3Jvb3ROb2RlSUQgPSAwO1xuXHQgICAgdGhpcy5fY29t
cG9zaXRlVHlwZSA9IG51bGw7XG5cdCAgICB0aGlzLl9pbnN0YW5jZSA9IG51bGw7XG5cdCAgICB0
aGlzLl9ob3N0UGFyZW50ID0gbnVsbDtcblx0ICAgIHRoaXMuX2hvc3RDb250YWluZXJJbmZvID0g
bnVsbDtcblx0XG5cdCAgICAvLyBTZWUgUmVhY3RVcGRhdGVRdWV1ZVxuXHQgICAgdGhpcy5fdXBk
YXRlQmF0Y2hOdW1iZXIgPSBudWxsO1xuXHQgICAgdGhpcy5fcGVuZGluZ0VsZW1lbnQgPSBudWxs
O1xuXHQgICAgdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUgPSBudWxsO1xuXHQgICAgdGhpcy5fcGVu
ZGluZ1JlcGxhY2VTdGF0ZSA9IGZhbHNlO1xuXHQgICAgdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRl
ID0gZmFsc2U7XG5cdFxuXHQgICAgdGhpcy5fcmVuZGVyZWROb2RlVHlwZSA9IG51bGw7XG5cdCAg
ICB0aGlzLl9yZW5kZXJlZENvbXBvbmVudCA9IG51bGw7XG5cdCAgICB0aGlzLl9jb250ZXh0ID0g
bnVsbDtcblx0ICAgIHRoaXMuX21vdW50T3JkZXIgPSAwO1xuXHQgICAgdGhpcy5fdG9wTGV2ZWxX
cmFwcGVyID0gbnVsbDtcblx0XG5cdCAgICAvLyBTZWUgUmVhY3RVcGRhdGVzIGFuZCBSZWFjdFVw
ZGF0ZVF1ZXVlLlxuXHQgICAgdGhpcy5fcGVuZGluZ0NhbGxiYWNrcyA9IG51bGw7XG5cdFxuXHQg
ICAgLy8gQ29tcG9uZW50V2lsbFVubW91bnQgc2hhbGwgb25seSBiZSBjYWxsZWQgb25jZVxuXHQg
ICAgdGhpcy5fY2FsbGVkQ29tcG9uZW50V2lsbFVubW91bnQgPSBmYWxzZTtcblx0XG5cdCAgICBp
ZiAoZmFsc2UpIHtcblx0ICAgICAgdGhpcy5fd2FybmVkQWJvdXRSZWZzSW5SZW5kZXIgPSBmYWxz
ZTtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBJbml0aWFsaXplcyB0aGUg
Y29tcG9uZW50LCByZW5kZXJzIG1hcmt1cCwgYW5kIHJlZ2lzdGVycyBldmVudCBsaXN0ZW5lcnMu
XG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RT
ZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cblx0ICAgKiBAcGFyYW0gez9v
YmplY3R9IGhvc3RQYXJlbnRcblx0ICAgKiBAcGFyYW0gez9vYmplY3R9IGhvc3RDb250YWluZXJJ
bmZvXG5cdCAgICogQHBhcmFtIHs/b2JqZWN0fSBjb250ZXh0XG5cdCAgICogQHJldHVybiB7P3N0
cmluZ30gUmVuZGVyZWQgbWFya3VwIHRvIGJlIGluc2VydGVkIGludG8gdGhlIERPTS5cblx0ICAg
KiBAZmluYWxcblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICBtb3VudENvbXBvbmVudDog
ZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgY29u
dGV4dCkge1xuXHQgICAgdmFyIF90aGlzID0gdGhpcztcblx0XG5cdCAgICB0aGlzLl9jb250ZXh0
ID0gY29udGV4dDtcblx0ICAgIHRoaXMuX21vdW50T3JkZXIgPSBuZXh0TW91bnRJRCsrO1xuXHQg
ICAgdGhpcy5faG9zdFBhcmVudCA9IGhvc3RQYXJlbnQ7XG5cdCAgICB0aGlzLl9ob3N0Q29udGFp
bmVySW5mbyA9IGhvc3RDb250YWluZXJJbmZvO1xuXHRcblx0ICAgIHZhciBwdWJsaWNQcm9wcyA9
IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXHQgICAgdmFyIHB1YmxpY0NvbnRleHQgPSB0
aGlzLl9wcm9jZXNzQ29udGV4dChjb250ZXh0KTtcblx0XG5cdCAgICB2YXIgQ29tcG9uZW50ID0g
dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcblx0XG5cdCAgICB2YXIgdXBkYXRlUXVldWUgPSB0
cmFuc2FjdGlvbi5nZXRVcGRhdGVRdWV1ZSgpO1xuXHRcblx0ICAgIC8vIEluaXRpYWxpemUgdGhl
IHB1YmxpYyBjbGFzc1xuXHQgICAgdmFyIGRvQ29uc3RydWN0ID0gc2hvdWxkQ29uc3RydWN0KENv
bXBvbmVudCk7XG5cdCAgICB2YXIgaW5zdCA9IHRoaXMuX2NvbnN0cnVjdENvbXBvbmVudChkb0Nv
bnN0cnVjdCwgcHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0ZVF1ZXVlKTtcblx0ICAg
IHZhciByZW5kZXJlZEVsZW1lbnQ7XG5cdFxuXHQgICAgLy8gU3VwcG9ydCBmdW5jdGlvbmFsIGNv
bXBvbmVudHNcblx0ICAgIGlmICghZG9Db25zdHJ1Y3QgJiYgKGluc3QgPT0gbnVsbCB8fCBpbnN0
LnJlbmRlciA9PSBudWxsKSkge1xuXHQgICAgICByZW5kZXJlZEVsZW1lbnQgPSBpbnN0O1xuXHQg
ICAgICB3YXJuSWZJbnZhbGlkRWxlbWVudChDb21wb25lbnQsIHJlbmRlcmVkRWxlbWVudCk7XG5c
dCAgICAgICEoaW5zdCA9PT0gbnVsbCB8fCBpbnN0ID09PSBmYWxzZSB8fCBSZWFjdC5pc1ZhbGlk
RWxlbWVudChpbnN0KSkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICclcyguLi4pOiBBIHZh
bGlkIFJlYWN0IGVsZW1lbnQgKG9yIG51bGwpIG11c3QgYmUgcmV0dXJuZWQuIFlvdSBtYXkgaGF2
ZSByZXR1cm5lZCB1bmRlZmluZWQsIGFuIGFycmF5IG9yIHNvbWUgb3RoZXIgaW52YWxpZCBvYmpl
Y3QuJywgQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdDb21wb25l
bnQnKSA6IF9wcm9kSW52YXJpYW50KCcxMDUnLCBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29t
cG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCcpIDogdm9pZCAwO1xuXHQgICAgICBpbnN0ID0gbmV3
IFN0YXRlbGVzc0NvbXBvbmVudChDb21wb25lbnQpO1xuXHQgICAgICB0aGlzLl9jb21wb3NpdGVU
eXBlID0gQ29tcG9zaXRlVHlwZXMuU3RhdGVsZXNzRnVuY3Rpb25hbDtcblx0ICAgIH0gZWxzZSB7
XG5cdCAgICAgIGlmIChpc1B1cmVDb21wb25lbnQoQ29tcG9uZW50KSkge1xuXHQgICAgICAgIHRo
aXMuX2NvbXBvc2l0ZVR5cGUgPSBDb21wb3NpdGVUeXBlcy5QdXJlQ2xhc3M7XG5cdCAgICAgIH0g
ZWxzZSB7XG5cdCAgICAgICAgdGhpcy5fY29tcG9zaXRlVHlwZSA9IENvbXBvc2l0ZVR5cGVzLklt
cHVyZUNsYXNzO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKGZhbHNlKSB7XG5c
dCAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBsYXRlciBpbiBfcmVuZGVyVmFsaWRhdGVkQ29tcG9u
ZW50LCBidXQgYWRkIGFuIGVhcmx5XG5cdCAgICAgIC8vIHdhcm5pbmcgbm93IHRvIGhlbHAgZGVi
dWdnaW5nXG5cdCAgICAgIGlmIChpbnN0LnJlbmRlciA9PSBudWxsKSB7XG5cdCAgICAgICAgcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcygu
Li4pOiBObyBgcmVuZGVyYCBtZXRob2QgZm91bmQgb24gdGhlIHJldHVybmVkIGNvbXBvbmVudCAn
ICsgJ2luc3RhbmNlOiB5b3UgbWF5IGhhdmUgZm9yZ290dGVuIHRvIGRlZmluZSBgcmVuZGVyYC4n
LCBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCcp
IDogdm9pZCAwO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICB2YXIgcHJvcHNNdXRhdGVkID0gaW5z
dC5wcm9wcyAhPT0gcHVibGljUHJvcHM7XG5cdCAgICAgIHZhciBjb21wb25lbnROYW1lID0gQ29t
cG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdDb21wb25lbnQnO1xuXHRc
blx0ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmco
aW5zdC5wcm9wcyA9PT0gdW5kZWZpbmVkIHx8ICFwcm9wc011dGF0ZWQsICclcyguLi4pOiBXaGVu
IGNhbGxpbmcgc3VwZXIoKSBpbiBgJXNgLCBtYWtlIHN1cmUgdG8gcGFzcyAnICsgXCJ1cCB0aGUg
c2FtZSBwcm9wcyB0aGF0IHlvdXIgY29tcG9uZW50J3MgY29uc3RydWN0b3Igd2FzIHBhc3NlZC5c
IiwgY29tcG9uZW50TmFtZSwgY29tcG9uZW50TmFtZSkgOiB2b2lkIDA7XG5cdCAgICB9XG5cdFxu
XHQgICAgLy8gVGhlc2Ugc2hvdWxkIGJlIHNldCB1cCBpbiB0aGUgY29uc3RydWN0b3IsIGJ1dCBh
cyBhIGNvbnZlbmllbmNlIGZvclxuXHQgICAgLy8gc2ltcGxlciBjbGFzcyBhYnN0cmFjdGlvbnMs
IHdlIHNldCB0aGVtIHVwIGFmdGVyIHRoZSBmYWN0LlxuXHQgICAgaW5zdC5wcm9wcyA9IHB1Ymxp
Y1Byb3BzO1xuXHQgICAgaW5zdC5jb250ZXh0ID0gcHVibGljQ29udGV4dDtcblx0ICAgIGluc3Qu
cmVmcyA9IGVtcHR5T2JqZWN0O1xuXHQgICAgaW5zdC51cGRhdGVyID0gdXBkYXRlUXVldWU7XG5c
dFxuXHQgICAgdGhpcy5faW5zdGFuY2UgPSBpbnN0O1xuXHRcblx0ICAgIC8vIFN0b3JlIGEgcmVm
ZXJlbmNlIGZyb20gdGhlIGluc3RhbmNlIGJhY2sgdG8gdGhlIGludGVybmFsIHJlcHJlc2VudGF0
aW9uXG5cdCAgICBSZWFjdEluc3RhbmNlTWFwLnNldChpbnN0LCB0aGlzKTtcblx0XG5cdCAgICBp
ZiAoZmFsc2UpIHtcblx0ICAgICAgLy8gU2luY2UgcGxhaW4gSlMgY2xhc3NlcyBhcmUgZGVmaW5l
ZCB3aXRob3V0IGFueSBzcGVjaWFsIGluaXRpYWxpemF0aW9uXG5cdCAgICAgIC8vIGxvZ2ljLCB3
ZSBjYW4gbm90IGNhdGNoIGNvbW1vbiBlcnJvcnMgZWFybHkuIFRoZXJlZm9yZSwgd2UgaGF2ZSB0
b1xuXHQgICAgICAvLyBjYXRjaCB0aGVtIGhlcmUsIGF0IGluaXRpYWxpemF0aW9uIHRpbWUsIGlu
c3RlYWQuXG5cdCAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3
YXJuaW5nKCFpbnN0LmdldEluaXRpYWxTdGF0ZSB8fCBpbnN0LmdldEluaXRpYWxTdGF0ZS5pc1Jl
YWN0Q2xhc3NBcHByb3ZlZCB8fCBpbnN0LnN0YXRlLCAnZ2V0SW5pdGlhbFN0YXRlIHdhcyBkZWZp
bmVkIG9uICVzLCBhIHBsYWluIEphdmFTY3JpcHQgY2xhc3MuICcgKyAnVGhpcyBpcyBvbmx5IHN1
cHBvcnRlZCBmb3IgY2xhc3NlcyBjcmVhdGVkIHVzaW5nIFJlYWN0LmNyZWF0ZUNsYXNzLiAnICsg
J0RpZCB5b3UgbWVhbiB0byBkZWZpbmUgYSBzdGF0ZSBwcm9wZXJ0eSBpbnN0ZWFkPycsIHRoaXMu
Z2V0TmFtZSgpIHx8ICdhIGNvbXBvbmVudCcpIDogdm9pZCAwO1xuXHQgICAgICBwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghaW5zdC5nZXREZWZhdWx0UHJv
cHMgfHwgaW5zdC5nZXREZWZhdWx0UHJvcHMuaXNSZWFjdENsYXNzQXBwcm92ZWQsICdnZXREZWZh
dWx0UHJvcHMgd2FzIGRlZmluZWQgb24gJXMsIGEgcGxhaW4gSmF2YVNjcmlwdCBjbGFzcy4gJyAr
ICdUaGlzIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBjbGFzc2VzIGNyZWF0ZWQgdXNpbmcgUmVhY3Qu
Y3JlYXRlQ2xhc3MuICcgKyAnVXNlIGEgc3RhdGljIHByb3BlcnR5IHRvIGRlZmluZSBkZWZhdWx0
UHJvcHMgaW5zdGVhZC4nLCB0aGlzLmdldE5hbWUoKSB8fCAnYSBjb21wb25lbnQnKSA6IHZvaWQg
MDtcblx0ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5p
bmcoIWluc3QucHJvcFR5cGVzLCAncHJvcFR5cGVzIHdhcyBkZWZpbmVkIGFzIGFuIGluc3RhbmNl
IHByb3BlcnR5IG9uICVzLiBVc2UgYSBzdGF0aWMgJyArICdwcm9wZXJ0eSB0byBkZWZpbmUgcHJv
cFR5cGVzIGluc3RlYWQuJywgdGhpcy5nZXROYW1lKCkgfHwgJ2EgY29tcG9uZW50JykgOiB2b2lk
IDA7XG5cdCAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKCFpbnN0LmNvbnRleHRUeXBlcywgJ2NvbnRleHRUeXBlcyB3YXMgZGVmaW5lZCBhcyBhbiBp
bnN0YW5jZSBwcm9wZXJ0eSBvbiAlcy4gVXNlIGEgJyArICdzdGF0aWMgcHJvcGVydHkgdG8gZGVm
aW5lIGNvbnRleHRUeXBlcyBpbnN0ZWFkLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdhIGNvbXBvbmVu
dCcpIDogdm9pZCAwO1xuXHQgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gd2FybmluZyh0eXBlb2YgaW5zdC5jb21wb25lbnRTaG91bGRVcGRhdGUgIT09ICdmdW5j
dGlvbicsICclcyBoYXMgYSBtZXRob2QgY2FsbGVkICcgKyAnY29tcG9uZW50U2hvdWxkVXBkYXRl
KCkuIERpZCB5b3UgbWVhbiBzaG91bGRDb21wb25lbnRVcGRhdGUoKT8gJyArICdUaGUgbmFtZSBp
cyBwaHJhc2VkIGFzIGEgcXVlc3Rpb24gYmVjYXVzZSB0aGUgZnVuY3Rpb24gaXMgJyArICdleHBl
Y3RlZCB0byByZXR1cm4gYSB2YWx1ZS4nLCB0aGlzLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQn
KSA6IHZvaWQgMDtcblx0ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcodHlwZW9mIGluc3QuY29tcG9uZW50RGlkVW5tb3VudCAhPT0gJ2Z1bmN0aW9u
JywgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnREaWRVbm1vdW50KCkuIEJ1
dCB0aGVyZSBpcyBubyBzdWNoIGxpZmVjeWNsZSBtZXRob2QuICcgKyAnRGlkIHlvdSBtZWFuIGNv
bXBvbmVudFdpbGxVbm1vdW50KCk/JywgdGhpcy5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50Jykg
OiB2b2lkIDA7XG5cdCAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKHR5cGVvZiBpbnN0LmNvbXBvbmVudFdpbGxSZWNpZXZlUHJvcHMgIT09ICdmdW5j
dGlvbicsICclcyBoYXMgYSBtZXRob2QgY2FsbGVkICcgKyAnY29tcG9uZW50V2lsbFJlY2lldmVQ
cm9wcygpLiBEaWQgeW91IG1lYW4gY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcygpPycsIHRoaXMu
Z2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcpIDogdm9pZCAwO1xuXHQgICAgfVxuXHRcblx0ICAg
IHZhciBpbml0aWFsU3RhdGUgPSBpbnN0LnN0YXRlO1xuXHQgICAgaWYgKGluaXRpYWxTdGF0ZSA9
PT0gdW5kZWZpbmVkKSB7XG5cdCAgICAgIGluc3Quc3RhdGUgPSBpbml0aWFsU3RhdGUgPSBudWxs
O1xuXHQgICAgfVxuXHQgICAgISh0eXBlb2YgaW5pdGlhbFN0YXRlID09PSAnb2JqZWN0JyAmJiAh
QXJyYXkuaXNBcnJheShpbml0aWFsU3RhdGUpKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwg
JyVzLnN0YXRlOiBtdXN0IGJlIHNldCB0byBhbiBvYmplY3Qgb3IgbnVsbCcsIHRoaXMuZ2V0TmFt
ZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogX3Byb2RJbnZhcmlhbnQoJzEwNics
IHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwO1xu
XHRcblx0ICAgIHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gbnVsbDtcblx0ICAgIHRoaXMuX3Bl
bmRpbmdSZXBsYWNlU3RhdGUgPSBmYWxzZTtcblx0ICAgIHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0
ZSA9IGZhbHNlO1xuXHRcblx0ICAgIHZhciBtYXJrdXA7XG5cdCAgICBpZiAoaW5zdC51bnN0YWJs
ZV9oYW5kbGVFcnJvcikge1xuXHQgICAgICBtYXJrdXAgPSB0aGlzLnBlcmZvcm1Jbml0aWFsTW91
bnRXaXRoRXJyb3JIYW5kbGluZyhyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhvc3RDb250
YWluZXJJbmZvLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAg
ICBtYXJrdXAgPSB0aGlzLnBlcmZvcm1Jbml0aWFsTW91bnQocmVuZGVyZWRFbGVtZW50LCBob3N0
UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuXHQgICAg
fVxuXHRcblx0ICAgIGlmIChpbnN0LmNvbXBvbmVudERpZE1vdW50KSB7XG5cdCAgICAgIGlmIChm
YWxzZSkge1xuXHQgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVl
dWUoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgbWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rp
b24gKCkge1xuXHQgICAgICAgICAgICByZXR1cm4gaW5zdC5jb21wb25lbnREaWRNb3VudCgpO1xu
XHQgICAgICAgICAgfSwgX3RoaXMuX2RlYnVnSUQsICdjb21wb25lbnREaWRNb3VudCcpO1xuXHQg
ICAgICAgIH0pO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIHRyYW5zYWN0aW9uLmdldFJl
YWN0TW91bnRSZWFkeSgpLmVucXVldWUoaW5zdC5jb21wb25lbnREaWRNb3VudCwgaW5zdCk7XG5c
dCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICByZXR1cm4gbWFya3VwO1xuXHQgIH0sXG5cdFxu
XHQgIF9jb25zdHJ1Y3RDb21wb25lbnQ6IGZ1bmN0aW9uIChkb0NvbnN0cnVjdCwgcHVibGljUHJv
cHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0ZVF1ZXVlKSB7XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0
ICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IHRoaXM7XG5cdCAgICAgIHRyeSB7XG5c
dCAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnN0cnVjdENvbXBvbmVudFdpdGhvdXRPd25lcihkb0Nv
bnN0cnVjdCwgcHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0ZVF1ZXVlKTtcblx0ICAg
ICAgfSBmaW5hbGx5IHtcblx0ICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gbnVs
bDtcblx0ICAgICAgfVxuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcmV0dXJuIHRoaXMuX2NvbnN0
cnVjdENvbXBvbmVudFdpdGhvdXRPd25lcihkb0NvbnN0cnVjdCwgcHVibGljUHJvcHMsIHB1Ymxp
Y0NvbnRleHQsIHVwZGF0ZVF1ZXVlKTtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICBfY29uc3Ry
dWN0Q29tcG9uZW50V2l0aG91dE93bmVyOiBmdW5jdGlvbiAoZG9Db25zdHJ1Y3QsIHB1YmxpY1By
b3BzLCBwdWJsaWNDb250ZXh0LCB1cGRhdGVRdWV1ZSkge1xuXHQgICAgdmFyIENvbXBvbmVudCA9
IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG5cdFxuXHQgICAgaWYgKGRvQ29uc3RydWN0KSB7
XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIHJldHVybiBtZWFzdXJlTGlmZUN5Y2xl
UGVyZihmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICByZXR1cm4gbmV3IENvbXBvbmVudChwdWJs
aWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpO1xuXHQgICAgICAgIH0sIHRoaXMu
X2RlYnVnSUQsICdjdG9yJyk7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgcmV0dXJuIG5l
dyBDb21wb25lbnQocHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0ZVF1ZXVlKTtcblx0
ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIC8vIFRoaXMgY2FuIHN0aWxsIGJlIGFuIGluc3Rh
bmNlIGluIGNhc2Ugb2YgZmFjdG9yeSBjb21wb25lbnRzXG5cdCAgICAvLyBidXQgd2UnbGwgY291
bnQgdGhpcyBhcyB0aW1lIHNwZW50IHJlbmRlcmluZyBhcyB0aGUgbW9yZSBjb21tb24gY2FzZS5c
blx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICByZXR1cm4gbWVhc3VyZUxpZmVDeWNsZVBlcmYo
ZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHJldHVybiBDb21wb25lbnQocHVibGljUHJvcHMsIHB1
YmxpY0NvbnRleHQsIHVwZGF0ZVF1ZXVlKTtcblx0ICAgICAgfSwgdGhpcy5fZGVidWdJRCwgJ3Jl
bmRlcicpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcmV0dXJuIENvbXBvbmVudChwdWJsaWNQ
cm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxu
XHQgIHBlcmZvcm1Jbml0aWFsTW91bnRXaXRoRXJyb3JIYW5kbGluZzogZnVuY3Rpb24gKHJlbmRl
cmVkRWxlbWVudCwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIHRyYW5zYWN0aW9uLCBj
b250ZXh0KSB7XG5cdCAgICB2YXIgbWFya3VwO1xuXHQgICAgdmFyIGNoZWNrcG9pbnQgPSB0cmFu
c2FjdGlvbi5jaGVja3BvaW50KCk7XG5cdCAgICB0cnkge1xuXHQgICAgICBtYXJrdXAgPSB0aGlz
LnBlcmZvcm1Jbml0aWFsTW91bnQocmVuZGVyZWRFbGVtZW50LCBob3N0UGFyZW50LCBob3N0Q29u
dGFpbmVySW5mbywgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuXHQgICAgfSBjYXRjaCAoZSkge1xu
XHQgICAgICAvLyBSb2xsIGJhY2sgdG8gY2hlY2twb2ludCwgaGFuZGxlIGVycm9yICh3aGljaCBt
YXkgYWRkIGl0ZW1zIHRvIHRoZSB0cmFuc2FjdGlvbiksIGFuZCB0YWtlIGEgbmV3IGNoZWNrcG9p
bnRcblx0ICAgICAgdHJhbnNhY3Rpb24ucm9sbGJhY2soY2hlY2twb2ludCk7XG5cdCAgICAgIHRo
aXMuX2luc3RhbmNlLnVuc3RhYmxlX2hhbmRsZUVycm9yKGUpO1xuXHQgICAgICBpZiAodGhpcy5f
cGVuZGluZ1N0YXRlUXVldWUpIHtcblx0ICAgICAgICB0aGlzLl9pbnN0YW5jZS5zdGF0ZSA9IHRo
aXMuX3Byb2Nlc3NQZW5kaW5nU3RhdGUodGhpcy5faW5zdGFuY2UucHJvcHMsIHRoaXMuX2luc3Rh
bmNlLmNvbnRleHQpO1xuXHQgICAgICB9XG5cdCAgICAgIGNoZWNrcG9pbnQgPSB0cmFuc2FjdGlv
bi5jaGVja3BvaW50KCk7XG5cdFxuXHQgICAgICB0aGlzLl9yZW5kZXJlZENvbXBvbmVudC51bm1v
dW50Q29tcG9uZW50KHRydWUpO1xuXHQgICAgICB0cmFuc2FjdGlvbi5yb2xsYmFjayhjaGVja3Bv
aW50KTtcblx0XG5cdCAgICAgIC8vIFRyeSBhZ2FpbiAtIHdlJ3ZlIGluZm9ybWVkIHRoZSBjb21w
b25lbnQgYWJvdXQgdGhlIGVycm9yLCBzbyB0aGV5IGNhbiByZW5kZXIgYW4gZXJyb3IgbWVzc2Fn
ZSB0aGlzIHRpbWUuXG5cdCAgICAgIC8vIElmIHRoaXMgdGhyb3dzIGFnYWluLCB0aGUgZXJyb3Ig
d2lsbCBidWJibGUgdXAgKGFuZCBjYW4gYmUgY2F1Z2h0IGJ5IGEgaGlnaGVyIGVycm9yIGJvdW5k
YXJ5KS5cblx0ICAgICAgbWFya3VwID0gdGhpcy5wZXJmb3JtSW5pdGlhbE1vdW50KHJlbmRlcmVk
RWxlbWVudCwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIHRyYW5zYWN0aW9uLCBjb250
ZXh0KTtcblx0ICAgIH1cblx0ICAgIHJldHVybiBtYXJrdXA7XG5cdCAgfSxcblx0XG5cdCAgcGVy
Zm9ybUluaXRpYWxNb3VudDogZnVuY3Rpb24gKHJlbmRlcmVkRWxlbWVudCwgaG9zdFBhcmVudCwg
aG9zdENvbnRhaW5lckluZm8sIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG5cdCAgICB2YXIgaW5z
dCA9IHRoaXMuX2luc3RhbmNlO1xuXHRcblx0ICAgIHZhciBkZWJ1Z0lEID0gMDtcblx0ICAgIGlm
IChmYWxzZSkge1xuXHQgICAgICBkZWJ1Z0lEID0gdGhpcy5fZGVidWdJRDtcblx0ICAgIH1cblx0
XG5cdCAgICBpZiAoaW5zdC5jb21wb25lbnRXaWxsTW91bnQpIHtcblx0ICAgICAgaWYgKGZhbHNl
KSB7XG5cdCAgICAgICAgbWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rpb24gKCkge1xuXHQgICAg
ICAgICAgcmV0dXJuIGluc3QuY29tcG9uZW50V2lsbE1vdW50KCk7XG5cdCAgICAgICAgfSwgZGVi
dWdJRCwgJ2NvbXBvbmVudFdpbGxNb3VudCcpO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAg
IGluc3QuY29tcG9uZW50V2lsbE1vdW50KCk7XG5cdCAgICAgIH1cblx0ICAgICAgLy8gV2hlbiBt
b3VudGluZywgY2FsbHMgdG8gYHNldFN0YXRlYCBieSBgY29tcG9uZW50V2lsbE1vdW50YCB3aWxs
IHNldFxuXHQgICAgICAvLyBgdGhpcy5fcGVuZGluZ1N0YXRlUXVldWVgIHdpdGhvdXQgdHJpZ2dl
cmluZyBhIHJlLXJlbmRlci5cblx0ICAgICAgaWYgKHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlKSB7
XG5cdCAgICAgICAgaW5zdC5zdGF0ZSA9IHRoaXMuX3Byb2Nlc3NQZW5kaW5nU3RhdGUoaW5zdC5w
cm9wcywgaW5zdC5jb250ZXh0KTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIC8vIElm
IG5vdCBhIHN0YXRlbGVzcyBjb21wb25lbnQsIHdlIG5vdyByZW5kZXJcblx0ICAgIGlmIChyZW5k
ZXJlZEVsZW1lbnQgPT09IHVuZGVmaW5lZCkge1xuXHQgICAgICByZW5kZXJlZEVsZW1lbnQgPSB0
aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQoKTtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIg
bm9kZVR5cGUgPSBSZWFjdE5vZGVUeXBlcy5nZXRUeXBlKHJlbmRlcmVkRWxlbWVudCk7XG5cdCAg
ICB0aGlzLl9yZW5kZXJlZE5vZGVUeXBlID0gbm9kZVR5cGU7XG5cdCAgICB2YXIgY2hpbGQgPSB0
aGlzLl9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KHJlbmRlcmVkRWxlbWVudCwgbm9kZVR5cGUg
IT09IFJlYWN0Tm9kZVR5cGVzLkVNUFRZIC8qIHNob3VsZEhhdmVEZWJ1Z0lEICovXG5cdCAgICAp
O1xuXHQgICAgdGhpcy5fcmVuZGVyZWRDb21wb25lbnQgPSBjaGlsZDtcblx0XG5cdCAgICB2YXIg
bWFya3VwID0gUmVhY3RSZWNvbmNpbGVyLm1vdW50Q29tcG9uZW50KGNoaWxkLCB0cmFuc2FjdGlv
biwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIHRoaXMuX3Byb2Nlc3NDaGlsZENvbnRl
eHQoY29udGV4dCksIGRlYnVnSUQpO1xuXHRcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBp
ZiAoZGVidWdJRCAhPT0gMCkge1xuXHQgICAgICAgIHZhciBjaGlsZERlYnVnSURzID0gY2hpbGQu
X2RlYnVnSUQgIT09IDAgPyBbY2hpbGQuX2RlYnVnSURdIDogW107XG5cdCAgICAgICAgUmVhY3RJ
bnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uU2V0Q2hpbGRyZW4oZGVidWdJRCwgY2hpbGREZWJ1
Z0lEcyk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICByZXR1cm4gbWFya3VwO1xuXHQg
IH0sXG5cdFxuXHQgIGdldEhvc3ROb2RlOiBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4gUmVh
Y3RSZWNvbmNpbGVyLmdldEhvc3ROb2RlKHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50KTtcblx0ICB9
LFxuXHRcblx0ICAvKipcblx0ICAgKiBSZWxlYXNlcyBhbnkgcmVzb3VyY2VzIGFsbG9jYXRlZCBi
eSBgbW91bnRDb21wb25lbnRgLlxuXHQgICAqXG5cdCAgICogQGZpbmFsXG5cdCAgICogQGludGVy
bmFsXG5cdCAgICovXG5cdCAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKHNhZmVseSkge1xu
XHQgICAgaWYgKCF0aGlzLl9yZW5kZXJlZENvbXBvbmVudCkge1xuXHQgICAgICByZXR1cm47XG5c
dCAgICB9XG5cdFxuXHQgICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTtcblx0XG5cdCAgICBp
ZiAoaW5zdC5jb21wb25lbnRXaWxsVW5tb3VudCAmJiAhaW5zdC5fY2FsbGVkQ29tcG9uZW50V2ls
bFVubW91bnQpIHtcblx0ICAgICAgaW5zdC5fY2FsbGVkQ29tcG9uZW50V2lsbFVubW91bnQgPSB0
cnVlO1xuXHRcblx0ICAgICAgaWYgKHNhZmVseSkge1xuXHQgICAgICAgIHZhciBuYW1lID0gdGhp
cy5nZXROYW1lKCkgKyAnLmNvbXBvbmVudFdpbGxVbm1vdW50KCknO1xuXHQgICAgICAgIFJlYWN0
RXJyb3JVdGlscy5pbnZva2VHdWFyZGVkQ2FsbGJhY2sobmFtZSwgaW5zdC5jb21wb25lbnRXaWxs
VW5tb3VudC5iaW5kKGluc3QpKTtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICBpZiAoZmFs
c2UpIHtcblx0ICAgICAgICAgIG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHtcblx0
ICAgICAgICAgICAgcmV0dXJuIGluc3QuY29tcG9uZW50V2lsbFVubW91bnQoKTtcblx0ICAgICAg
ICAgIH0sIHRoaXMuX2RlYnVnSUQsICdjb21wb25lbnRXaWxsVW5tb3VudCcpO1xuXHQgICAgICAg
IH0gZWxzZSB7XG5cdCAgICAgICAgICBpbnN0LmNvbXBvbmVudFdpbGxVbm1vdW50KCk7XG5cdCAg
ICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKHRoaXMuX3JlbmRlcmVk
Q29tcG9uZW50KSB7XG5cdCAgICAgIFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29tcG9uZW50KHRo
aXMuX3JlbmRlcmVkQ29tcG9uZW50LCBzYWZlbHkpO1xuXHQgICAgICB0aGlzLl9yZW5kZXJlZE5v
ZGVUeXBlID0gbnVsbDtcblx0ICAgICAgdGhpcy5fcmVuZGVyZWRDb21wb25lbnQgPSBudWxsO1xu
XHQgICAgICB0aGlzLl9pbnN0YW5jZSA9IG51bGw7XG5cdCAgICB9XG5cdFxuXHQgICAgLy8gUmVz
ZXQgcGVuZGluZyBmaWVsZHNcblx0ICAgIC8vIEV2ZW4gaWYgdGhpcyBjb21wb25lbnQgaXMgc2No
ZWR1bGVkIGZvciBhbm90aGVyIHVwZGF0ZSBpbiBSZWFjdFVwZGF0ZXMsXG5cdCAgICAvLyBpdCB3
b3VsZCBzdGlsbCBiZSBpZ25vcmVkIGJlY2F1c2UgdGhlc2UgZmllbGRzIGFyZSByZXNldC5cblx0
ICAgIHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gbnVsbDtcblx0ICAgIHRoaXMuX3BlbmRpbmdS
ZXBsYWNlU3RhdGUgPSBmYWxzZTtcblx0ICAgIHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSA9IGZh
bHNlO1xuXHQgICAgdGhpcy5fcGVuZGluZ0NhbGxiYWNrcyA9IG51bGw7XG5cdCAgICB0aGlzLl9w
ZW5kaW5nRWxlbWVudCA9IG51bGw7XG5cdFxuXHQgICAgLy8gVGhlc2UgZmllbGRzIGRvIG5vdCBy
ZWFsbHkgbmVlZCB0byBiZSByZXNldCBzaW5jZSB0aGlzIG9iamVjdCBpcyBub1xuXHQgICAgLy8g
bG9uZ2VyIGFjY2Vzc2libGUuXG5cdCAgICB0aGlzLl9jb250ZXh0ID0gbnVsbDtcblx0ICAgIHRo
aXMuX3Jvb3ROb2RlSUQgPSAwO1xuXHQgICAgdGhpcy5fdG9wTGV2ZWxXcmFwcGVyID0gbnVsbDtc
blx0XG5cdCAgICAvLyBEZWxldGUgdGhlIHJlZmVyZW5jZSBmcm9tIHRoZSBpbnN0YW5jZSB0byB0
aGlzIGludGVybmFsIHJlcHJlc2VudGF0aW9uXG5cdCAgICAvLyB3aGljaCBhbGxvdyB0aGUgaW50
ZXJuYWxzIHRvIGJlIHByb3Blcmx5IGNsZWFuZWQgdXAgZXZlbiBpZiB0aGUgdXNlclxuXHQgICAg
Ly8gbGVha3MgYSByZWZlcmVuY2UgdG8gdGhlIHB1YmxpYyBpbnN0YW5jZS5cblx0ICAgIFJlYWN0
SW5zdGFuY2VNYXAucmVtb3ZlKGluc3QpO1xuXHRcblx0ICAgIC8vIFNvbWUgZXhpc3RpbmcgY29t
cG9uZW50cyByZWx5IG9uIGluc3QucHJvcHMgZXZlbiBhZnRlciB0aGV5J3ZlIGJlZW5cblx0ICAg
IC8vIGRlc3Ryb3llZCAoaW4gZXZlbnQgaGFuZGxlcnMpLlxuXHQgICAgLy8gVE9ETzogaW5zdC5w
cm9wcyA9IG51bGw7XG5cdCAgICAvLyBUT0RPOiBpbnN0LnN0YXRlID0gbnVsbDtcblx0ICAgIC8v
IFRPRE86IGluc3QuY29udGV4dCA9IG51bGw7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICog
RmlsdGVycyB0aGUgY29udGV4dCBvYmplY3QgdG8gb25seSBjb250YWluIGtleXMgc3BlY2lmaWVk
IGluXG5cdCAgICogYGNvbnRleHRUeXBlc2Bcblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7b2JqZWN0
fSBjb250ZXh0XG5cdCAgICogQHJldHVybiB7P29iamVjdH1cblx0ICAgKiBAcHJpdmF0ZVxuXHQg
ICAqL1xuXHQgIF9tYXNrQ29udGV4dDogZnVuY3Rpb24gKGNvbnRleHQpIHtcblx0ICAgIHZhciBD
b21wb25lbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlO1xuXHQgICAgdmFyIGNvbnRleHRU
eXBlcyA9IENvbXBvbmVudC5jb250ZXh0VHlwZXM7XG5cdCAgICBpZiAoIWNvbnRleHRUeXBlcykg
e1xuXHQgICAgICByZXR1cm4gZW1wdHlPYmplY3Q7XG5cdCAgICB9XG5cdCAgICB2YXIgbWFza2Vk
Q29udGV4dCA9IHt9O1xuXHQgICAgZm9yICh2YXIgY29udGV4dE5hbWUgaW4gY29udGV4dFR5cGVz
KSB7XG5cdCAgICAgIG1hc2tlZENvbnRleHRbY29udGV4dE5hbWVdID0gY29udGV4dFtjb250ZXh0
TmFtZV07XG5cdCAgICB9XG5cdCAgICByZXR1cm4gbWFza2VkQ29udGV4dDtcblx0ICB9LFxuXHRc
blx0ICAvKipcblx0ICAgKiBGaWx0ZXJzIHRoZSBjb250ZXh0IG9iamVjdCB0byBvbmx5IGNvbnRh
aW4ga2V5cyBzcGVjaWZpZWQgaW5cblx0ICAgKiBgY29udGV4dFR5cGVzYCwgYW5kIGFzc2VydHMg
dGhhdCB0aGV5IGFyZSB2YWxpZC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBjb250
ZXh0XG5cdCAgICogQHJldHVybiB7P29iamVjdH1cblx0ICAgKiBAcHJpdmF0ZVxuXHQgICAqL1xu
XHQgIF9wcm9jZXNzQ29udGV4dDogZnVuY3Rpb24gKGNvbnRleHQpIHtcblx0ICAgIHZhciBtYXNr
ZWRDb250ZXh0ID0gdGhpcy5fbWFza0NvbnRleHQoY29udGV4dCk7XG5cdCAgICBpZiAoZmFsc2Up
IHtcblx0ICAgICAgdmFyIENvbXBvbmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG5c
dCAgICAgIGlmIChDb21wb25lbnQuY29udGV4dFR5cGVzKSB7XG5cdCAgICAgICAgdGhpcy5fY2hl
Y2tDb250ZXh0VHlwZXMoQ29tcG9uZW50LmNvbnRleHRUeXBlcywgbWFza2VkQ29udGV4dCwgJ2Nv
bnRleHQnKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgcmV0dXJuIG1hc2tlZENvbnRleHQ7
XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGN1cnJlbnRDb250
ZXh0XG5cdCAgICogQHJldHVybiB7b2JqZWN0fVxuXHQgICAqIEBwcml2YXRlXG5cdCAgICovXG5c
dCAgX3Byb2Nlc3NDaGlsZENvbnRleHQ6IGZ1bmN0aW9uIChjdXJyZW50Q29udGV4dCkge1xuXHQg
ICAgdmFyIENvbXBvbmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG5cdCAgICB2YXIg
aW5zdCA9IHRoaXMuX2luc3RhbmNlO1xuXHQgICAgdmFyIGNoaWxkQ29udGV4dDtcblx0XG5cdCAg
ICBpZiAoaW5zdC5nZXRDaGlsZENvbnRleHQpIHtcblx0ICAgICAgaWYgKGZhbHNlKSB7XG5cdCAg
ICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uQmVnaW5Qcm9jZXNzaW5nQ2hp
bGRDb250ZXh0KCk7XG5cdCAgICAgICAgdHJ5IHtcblx0ICAgICAgICAgIGNoaWxkQ29udGV4dCA9
IGluc3QuZ2V0Q2hpbGRDb250ZXh0KCk7XG5cdCAgICAgICAgfSBmaW5hbGx5IHtcblx0ICAgICAg
ICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkVuZFByb2Nlc3NpbmdDaGlsZENv
bnRleHQoKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgY2hpbGRD
b250ZXh0ID0gaW5zdC5nZXRDaGlsZENvbnRleHQoKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRc
blx0ICAgIGlmIChjaGlsZENvbnRleHQpIHtcblx0ICAgICAgISh0eXBlb2YgQ29tcG9uZW50LmNo
aWxkQ29udGV4dFR5cGVzID09PSAnb2JqZWN0JykgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2Us
ICclcy5nZXRDaGlsZENvbnRleHQoKTogY2hpbGRDb250ZXh0VHlwZXMgbXVzdCBiZSBkZWZpbmVk
IGluIG9yZGVyIHRvIHVzZSBnZXRDaGlsZENvbnRleHQoKS4nLCB0aGlzLmdldE5hbWUoKSB8fCAn
UmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IF9wcm9kSW52YXJpYW50KCcxMDcnLCB0aGlzLmdl
dE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IHZvaWQgMDtcblx0ICAgICAg
aWYgKGZhbHNlKSB7XG5cdCAgICAgICAgdGhpcy5fY2hlY2tDb250ZXh0VHlwZXMoQ29tcG9uZW50
LmNoaWxkQ29udGV4dFR5cGVzLCBjaGlsZENvbnRleHQsICdjaGlsZCBjb250ZXh0Jyk7XG5cdCAg
ICAgIH1cblx0ICAgICAgZm9yICh2YXIgbmFtZSBpbiBjaGlsZENvbnRleHQpIHtcblx0ICAgICAg
ICAhKG5hbWUgaW4gQ29tcG9uZW50LmNoaWxkQ29udGV4dFR5cGVzKSA/ICBmYWxzZSA/IGludmFy
aWFudChmYWxzZSwgJyVzLmdldENoaWxkQ29udGV4dCgpOiBrZXkgXCIlc1wiIGlzIG5vdCBkZWZp
bmVkIGluIGNoaWxkQ29udGV4dFR5cGVzLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBv
c2l0ZUNvbXBvbmVudCcsIG5hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzEwOCcsIHRoaXMuZ2V0TmFt
ZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcsIG5hbWUpIDogdm9pZCAwO1xuXHQgICAg
ICB9XG5cdCAgICAgIHJldHVybiBfYXNzaWduKHt9LCBjdXJyZW50Q29udGV4dCwgY2hpbGRDb250
ZXh0KTtcblx0ICAgIH1cblx0ICAgIHJldHVybiBjdXJyZW50Q29udGV4dDtcblx0ICB9LFxuXHRc
blx0ICAvKipcblx0ICAgKiBBc3NlcnQgdGhhdCB0aGUgY29udGV4dCB0eXBlcyBhcmUgdmFsaWRc
blx0ICAgKlxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSB0eXBlU3BlY3MgTWFwIG9mIGNvbnRleHQg
ZmllbGQgdG8gYSBSZWFjdFByb3BUeXBlXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IHZhbHVlcyBS
dW50aW1lIHZhbHVlcyB0aGF0IG5lZWQgdG8gYmUgdHlwZS1jaGVja2VkXG5cdCAgICogQHBhcmFt
IHtzdHJpbmd9IGxvY2F0aW9uIGUuZy4gXCJwcm9wXCIsIFwiY29udGV4dFwiLCBcImNoaWxkIGNv
bnRleHRcIlxuXHQgICAqIEBwcml2YXRlXG5cdCAgICovXG5cdCAgX2NoZWNrQ29udGV4dFR5cGVz
OiBmdW5jdGlvbiAodHlwZVNwZWNzLCB2YWx1ZXMsIGxvY2F0aW9uKSB7XG5cdCAgICBpZiAoZmFs
c2UpIHtcblx0ICAgICAgY2hlY2tSZWFjdFR5cGVTcGVjKHR5cGVTcGVjcywgdmFsdWVzLCBsb2Nh
dGlvbiwgdGhpcy5nZXROYW1lKCksIG51bGwsIHRoaXMuX2RlYnVnSUQpO1xuXHQgICAgfVxuXHQg
IH0sXG5cdFxuXHQgIHJlY2VpdmVDb21wb25lbnQ6IGZ1bmN0aW9uIChuZXh0RWxlbWVudCwgdHJh
bnNhY3Rpb24sIG5leHRDb250ZXh0KSB7XG5cdCAgICB2YXIgcHJldkVsZW1lbnQgPSB0aGlzLl9j
dXJyZW50RWxlbWVudDtcblx0ICAgIHZhciBwcmV2Q29udGV4dCA9IHRoaXMuX2NvbnRleHQ7XG5c
dFxuXHQgICAgdGhpcy5fcGVuZGluZ0VsZW1lbnQgPSBudWxsO1xuXHRcblx0ICAgIHRoaXMudXBk
YXRlQ29tcG9uZW50KHRyYW5zYWN0aW9uLCBwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQsIHByZXZD
b250ZXh0LCBuZXh0Q29udGV4dCk7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogSWYgYW55
IG9mIGBfcGVuZGluZ0VsZW1lbnRgLCBgX3BlbmRpbmdTdGF0ZVF1ZXVlYCwgb3IgYF9wZW5kaW5n
Rm9yY2VVcGRhdGVgXG5cdCAgICogaXMgc2V0LCB1cGRhdGUgdGhlIGNvbXBvbmVudC5cblx0ICAg
KlxuXHQgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25c
blx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICBwZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnk6
IGZ1bmN0aW9uICh0cmFuc2FjdGlvbikge1xuXHQgICAgaWYgKHRoaXMuX3BlbmRpbmdFbGVtZW50
ICE9IG51bGwpIHtcblx0ICAgICAgUmVhY3RSZWNvbmNpbGVyLnJlY2VpdmVDb21wb25lbnQodGhp
cywgdGhpcy5fcGVuZGluZ0VsZW1lbnQsIHRyYW5zYWN0aW9uLCB0aGlzLl9jb250ZXh0KTtcblx0
ICAgIH0gZWxzZSBpZiAodGhpcy5fcGVuZGluZ1N0YXRlUXVldWUgIT09IG51bGwgfHwgdGhpcy5f
cGVuZGluZ0ZvcmNlVXBkYXRlKSB7XG5cdCAgICAgIHRoaXMudXBkYXRlQ29tcG9uZW50KHRyYW5z
YWN0aW9uLCB0aGlzLl9jdXJyZW50RWxlbWVudCwgdGhpcy5fY3VycmVudEVsZW1lbnQsIHRoaXMu
X2NvbnRleHQsIHRoaXMuX2NvbnRleHQpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgdGhpcy5f
dXBkYXRlQmF0Y2hOdW1iZXIgPSBudWxsO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIC8qKlxu
XHQgICAqIFBlcmZvcm0gYW4gdXBkYXRlIHRvIGEgbW91bnRlZCBjb21wb25lbnQuIFRoZSBjb21w
b25lbnRXaWxsUmVjZWl2ZVByb3BzIGFuZFxuXHQgICAqIHNob3VsZENvbXBvbmVudFVwZGF0ZSBt
ZXRob2RzIGFyZSBjYWxsZWQsIHRoZW4gKGFzc3VtaW5nIHRoZSB1cGRhdGUgaXNuJ3Rcblx0ICAg
KiBza2lwcGVkKSB0aGUgcmVtYWluaW5nIHVwZGF0ZSBsaWZlY3ljbGUgbWV0aG9kcyBhcmUgY2Fs
bGVkIGFuZCB0aGUgRE9NXG5cdCAgICogcmVwcmVzZW50YXRpb24gaXMgdXBkYXRlZC5cblx0ICAg
KlxuXHQgICAqIEJ5IGRlZmF1bHQsIHRoaXMgaW1wbGVtZW50cyBSZWFjdCdzIHJlbmRlcmluZyBh
bmQgcmVjb25jaWxpYXRpb24gYWxnb3JpdGhtLlxuXHQgICAqIFNvcGhpc3RpY2F0ZWQgY2xpZW50
cyBtYXkgd2lzaCB0byBvdmVycmlkZSB0aGlzLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtSZWFj
dFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuXHQgICAqIEBwYXJhbSB7UmVhY3RF
bGVtZW50fSBwcmV2UGFyZW50RWxlbWVudFxuXHQgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBu
ZXh0UGFyZW50RWxlbWVudFxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqIEBvdmVycmlkYWJsZVxu
XHQgICAqL1xuXHQgIHVwZGF0ZUNvbXBvbmVudDogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBwcmV2
UGFyZW50RWxlbWVudCwgbmV4dFBhcmVudEVsZW1lbnQsIHByZXZVbm1hc2tlZENvbnRleHQsIG5l
eHRVbm1hc2tlZENvbnRleHQpIHtcblx0ICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7XG5c
dCAgICAhKGluc3QgIT0gbnVsbCkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdBdHRlbXB0
ZWQgdG8gdXBkYXRlIGNvbXBvbmVudCBgJXNgIHRoYXQgaGFzIGFscmVhZHkgYmVlbiB1bm1vdW50
ZWQgKG9yIGZhaWxlZCB0byBtb3VudCkuJywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9z
aXRlQ29tcG9uZW50JykgOiBfcHJvZEludmFyaWFudCgnMTM2JywgdGhpcy5nZXROYW1lKCkgfHwg
J1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiB2b2lkIDA7XG5cdFxuXHQgICAgdmFyIHdpbGxS
ZWNlaXZlID0gZmFsc2U7XG5cdCAgICB2YXIgbmV4dENvbnRleHQ7XG5cdFxuXHQgICAgLy8gRGV0
ZXJtaW5lIGlmIHRoZSBjb250ZXh0IGhhcyBjaGFuZ2VkIG9yIG5vdFxuXHQgICAgaWYgKHRoaXMu
X2NvbnRleHQgPT09IG5leHRVbm1hc2tlZENvbnRleHQpIHtcblx0ICAgICAgbmV4dENvbnRleHQg
PSBpbnN0LmNvbnRleHQ7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBuZXh0Q29udGV4dCA9IHRo
aXMuX3Byb2Nlc3NDb250ZXh0KG5leHRVbm1hc2tlZENvbnRleHQpO1xuXHQgICAgICB3aWxsUmVj
ZWl2ZSA9IHRydWU7XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIHByZXZQcm9wcyA9IHByZXZQYXJl
bnRFbGVtZW50LnByb3BzO1xuXHQgICAgdmFyIG5leHRQcm9wcyA9IG5leHRQYXJlbnRFbGVtZW50
LnByb3BzO1xuXHRcblx0ICAgIC8vIE5vdCBhIHNpbXBsZSBzdGF0ZSB1cGRhdGUgYnV0IGEgcHJv
cHMgdXBkYXRlXG5cdCAgICBpZiAocHJldlBhcmVudEVsZW1lbnQgIT09IG5leHRQYXJlbnRFbGVt
ZW50KSB7XG5cdCAgICAgIHdpbGxSZWNlaXZlID0gdHJ1ZTtcblx0ICAgIH1cblx0XG5cdCAgICAv
LyBBbiB1cGRhdGUgaGVyZSB3aWxsIHNjaGVkdWxlIGFuIHVwZGF0ZSBidXQgaW1tZWRpYXRlbHkg
c2V0XG5cdCAgICAvLyBfcGVuZGluZ1N0YXRlUXVldWUgd2hpY2ggd2lsbCBlbnN1cmUgdGhhdCBh
bnkgc3RhdGUgdXBkYXRlcyBnZXRzXG5cdCAgICAvLyBpbW1lZGlhdGVseSByZWNvbmNpbGVkIGlu
c3RlYWQgb2Ygd2FpdGluZyBmb3IgdGhlIG5leHQgYmF0Y2guXG5cdCAgICBpZiAod2lsbFJlY2Vp
dmUgJiYgaW5zdC5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKSB7XG5cdCAgICAgIGlmIChmYWxz
ZSkge1xuXHQgICAgICAgIG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHtcblx0ICAg
ICAgICAgIHJldHVybiBpbnN0LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV4dFByb3BzLCBu
ZXh0Q29udGV4dCk7XG5cdCAgICAgICAgfSwgdGhpcy5fZGVidWdJRCwgJ2NvbXBvbmVudFdpbGxS
ZWNlaXZlUHJvcHMnKTtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICBpbnN0LmNvbXBvbmVu
dFdpbGxSZWNlaXZlUHJvcHMobmV4dFByb3BzLCBuZXh0Q29udGV4dCk7XG5cdCAgICAgIH1cblx0
ICAgIH1cblx0XG5cdCAgICB2YXIgbmV4dFN0YXRlID0gdGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0
ZShuZXh0UHJvcHMsIG5leHRDb250ZXh0KTtcblx0ICAgIHZhciBzaG91bGRVcGRhdGUgPSB0cnVl
O1xuXHRcblx0ICAgIGlmICghdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlKSB7XG5cdCAgICAgIGlm
IChpbnN0LnNob3VsZENvbXBvbmVudFVwZGF0ZSkge1xuXHQgICAgICAgIGlmIChmYWxzZSkge1xu
XHQgICAgICAgICAgc2hvdWxkVXBkYXRlID0gbWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rpb24g
KCkge1xuXHQgICAgICAgICAgICByZXR1cm4gaW5zdC5zaG91bGRDb21wb25lbnRVcGRhdGUobmV4
dFByb3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0KTtcblx0ICAgICAgICAgIH0sIHRoaXMuX2Rl
YnVnSUQsICdzaG91bGRDb21wb25lbnRVcGRhdGUnKTtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQg
ICAgICAgICAgc2hvdWxkVXBkYXRlID0gaW5zdC5zaG91bGRDb21wb25lbnRVcGRhdGUobmV4dFBy
b3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0KTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0gZWxz
ZSB7XG5cdCAgICAgICAgaWYgKHRoaXMuX2NvbXBvc2l0ZVR5cGUgPT09IENvbXBvc2l0ZVR5cGVz
LlB1cmVDbGFzcykge1xuXHQgICAgICAgICAgc2hvdWxkVXBkYXRlID0gIXNoYWxsb3dFcXVhbChw
cmV2UHJvcHMsIG5leHRQcm9wcykgfHwgIXNoYWxsb3dFcXVhbChpbnN0LnN0YXRlLCBuZXh0U3Rh
dGUpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIGlmIChmYWxz
ZSkge1xuXHQgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fy
bmluZyhzaG91bGRVcGRhdGUgIT09IHVuZGVmaW5lZCwgJyVzLnNob3VsZENvbXBvbmVudFVwZGF0
ZSgpOiBSZXR1cm5lZCB1bmRlZmluZWQgaW5zdGVhZCBvZiBhICcgKyAnYm9vbGVhbiB2YWx1ZS4g
TWFrZSBzdXJlIHRvIHJldHVybiB0cnVlIG9yIGZhbHNlLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdS
ZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwO1xuXHQgICAgfVxuXHRcblx0ICAgIHRo
aXMuX3VwZGF0ZUJhdGNoTnVtYmVyID0gbnVsbDtcblx0ICAgIGlmIChzaG91bGRVcGRhdGUpIHtc
blx0ICAgICAgdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlID0gZmFsc2U7XG5cdCAgICAgIC8vIFdp
bGwgc2V0IGB0aGlzLnByb3BzYCwgYHRoaXMuc3RhdGVgIGFuZCBgdGhpcy5jb250ZXh0YC5cblx0
ICAgICAgdGhpcy5fcGVyZm9ybUNvbXBvbmVudFVwZGF0ZShuZXh0UGFyZW50RWxlbWVudCwgbmV4
dFByb3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0LCB0cmFuc2FjdGlvbiwgbmV4dFVubWFza2Vk
Q29udGV4dCk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICAvLyBJZiBpdCdzIGRldGVybWluZWQg
dGhhdCBhIGNvbXBvbmVudCBzaG91bGQgbm90IHVwZGF0ZSwgd2Ugc3RpbGwgd2FudFxuXHQgICAg
ICAvLyB0byBzZXQgcHJvcHMgYW5kIHN0YXRlIGJ1dCB3ZSBzaG9ydGN1dCB0aGUgcmVzdCBvZiB0
aGUgdXBkYXRlLlxuXHQgICAgICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IG5leHRQYXJlbnRFbGVt
ZW50O1xuXHQgICAgICB0aGlzLl9jb250ZXh0ID0gbmV4dFVubWFza2VkQ29udGV4dDtcblx0ICAg
ICAgaW5zdC5wcm9wcyA9IG5leHRQcm9wcztcblx0ICAgICAgaW5zdC5zdGF0ZSA9IG5leHRTdGF0
ZTtcblx0ICAgICAgaW5zdC5jb250ZXh0ID0gbmV4dENvbnRleHQ7XG5cdCAgICB9XG5cdCAgfSxc
blx0XG5cdCAgX3Byb2Nlc3NQZW5kaW5nU3RhdGU6IGZ1bmN0aW9uIChwcm9wcywgY29udGV4dCkg
e1xuXHQgICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTtcblx0ICAgIHZhciBxdWV1ZSA9IHRo
aXMuX3BlbmRpbmdTdGF0ZVF1ZXVlO1xuXHQgICAgdmFyIHJlcGxhY2UgPSB0aGlzLl9wZW5kaW5n
UmVwbGFjZVN0YXRlO1xuXHQgICAgdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZSA9IGZhbHNlO1xu
XHQgICAgdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUgPSBudWxsO1xuXHRcblx0ICAgIGlmICghcXVl
dWUpIHtcblx0ICAgICAgcmV0dXJuIGluc3Quc3RhdGU7XG5cdCAgICB9XG5cdFxuXHQgICAgaWYg
KHJlcGxhY2UgJiYgcXVldWUubGVuZ3RoID09PSAxKSB7XG5cdCAgICAgIHJldHVybiBxdWV1ZVsw
XTtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgbmV4dFN0YXRlID0gX2Fzc2lnbih7fSwgcmVwbGFj
ZSA/IHF1ZXVlWzBdIDogaW5zdC5zdGF0ZSk7XG5cdCAgICBmb3IgKHZhciBpID0gcmVwbGFjZSA/
IDEgOiAwOyBpIDwgcXVldWUubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgdmFyIHBhcnRpYWwgPSBx
dWV1ZVtpXTtcblx0ICAgICAgX2Fzc2lnbihuZXh0U3RhdGUsIHR5cGVvZiBwYXJ0aWFsID09PSAn
ZnVuY3Rpb24nID8gcGFydGlhbC5jYWxsKGluc3QsIG5leHRTdGF0ZSwgcHJvcHMsIGNvbnRleHQp
IDogcGFydGlhbCk7XG5cdCAgICB9XG5cdFxuXHQgICAgcmV0dXJuIG5leHRTdGF0ZTtcblx0ICB9
LFxuXHRcblx0ICAvKipcblx0ICAgKiBNZXJnZXMgbmV3IHByb3BzIGFuZCBzdGF0ZSwgbm90aWZp
ZXMgZGVsZWdhdGUgbWV0aG9kcyBvZiB1cGRhdGUgYW5kXG5cdCAgICogcGVyZm9ybXMgdXBkYXRl
LlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50IE5leHQg
ZWxlbWVudFxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHMgTmV4dCBwdWJsaWMgb2Jq
ZWN0IHRvIHNldCBhcyBwcm9wZXJ0aWVzLlxuXHQgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dFN0
YXRlIE5leHQgb2JqZWN0IHRvIHNldCBhcyBzdGF0ZS5cblx0ICAgKiBAcGFyYW0gez9vYmplY3R9
IG5leHRDb250ZXh0IE5leHQgcHVibGljIG9iamVjdCB0byBzZXQgYXMgY29udGV4dC5cblx0ICAg
KiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG5cdCAgICog
QHBhcmFtIHs/b2JqZWN0fSB1bm1hc2tlZENvbnRleHRcblx0ICAgKiBAcHJpdmF0ZVxuXHQgICAq
L1xuXHQgIF9wZXJmb3JtQ29tcG9uZW50VXBkYXRlOiBmdW5jdGlvbiAobmV4dEVsZW1lbnQsIG5l
eHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCwgdHJhbnNhY3Rpb24sIHVubWFza2VkQ29u
dGV4dCkge1xuXHQgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cdFxuXHQgICAgdmFyIGluc3QgPSB0
aGlzLl9pbnN0YW5jZTtcblx0XG5cdCAgICB2YXIgaGFzQ29tcG9uZW50RGlkVXBkYXRlID0gQm9v
bGVhbihpbnN0LmNvbXBvbmVudERpZFVwZGF0ZSk7XG5cdCAgICB2YXIgcHJldlByb3BzO1xuXHQg
ICAgdmFyIHByZXZTdGF0ZTtcblx0ICAgIHZhciBwcmV2Q29udGV4dDtcblx0ICAgIGlmIChoYXND
b21wb25lbnREaWRVcGRhdGUpIHtcblx0ICAgICAgcHJldlByb3BzID0gaW5zdC5wcm9wcztcblx0
ICAgICAgcHJldlN0YXRlID0gaW5zdC5zdGF0ZTtcblx0ICAgICAgcHJldkNvbnRleHQgPSBpbnN0
LmNvbnRleHQ7XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKGluc3QuY29tcG9uZW50V2lsbFVwZGF0
ZSkge1xuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICBtZWFzdXJlTGlmZUN5Y2xlUGVy
ZihmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICByZXR1cm4gaW5zdC5jb21wb25lbnRXaWxsVXBk
YXRlKG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCk7XG5cdCAgICAgICAgfSwgdGhp
cy5fZGVidWdJRCwgJ2NvbXBvbmVudFdpbGxVcGRhdGUnKTtcblx0ICAgICAgfSBlbHNlIHtcblx0
ICAgICAgICBpbnN0LmNvbXBvbmVudFdpbGxVcGRhdGUobmV4dFByb3BzLCBuZXh0U3RhdGUsIG5l
eHRDb250ZXh0KTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIHRoaXMuX2N1cnJlbnRF
bGVtZW50ID0gbmV4dEVsZW1lbnQ7XG5cdCAgICB0aGlzLl9jb250ZXh0ID0gdW5tYXNrZWRDb250
ZXh0O1xuXHQgICAgaW5zdC5wcm9wcyA9IG5leHRQcm9wcztcblx0ICAgIGluc3Quc3RhdGUgPSBu
ZXh0U3RhdGU7XG5cdCAgICBpbnN0LmNvbnRleHQgPSBuZXh0Q29udGV4dDtcblx0XG5cdCAgICB0
aGlzLl91cGRhdGVSZW5kZXJlZENvbXBvbmVudCh0cmFuc2FjdGlvbiwgdW5tYXNrZWRDb250ZXh0
KTtcblx0XG5cdCAgICBpZiAoaGFzQ29tcG9uZW50RGlkVXBkYXRlKSB7XG5cdCAgICAgIGlmIChm
YWxzZSkge1xuXHQgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVl
dWUoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgbWVhc3VyZUxpZmVDeWNsZVBlcmYoaW5zdC5j
b21wb25lbnREaWRVcGRhdGUuYmluZChpbnN0LCBwcmV2UHJvcHMsIHByZXZTdGF0ZSwgcHJldkNv
bnRleHQpLCBfdGhpczIuX2RlYnVnSUQsICdjb21wb25lbnREaWRVcGRhdGUnKTtcblx0ICAgICAg
ICB9KTtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1v
dW50UmVhZHkoKS5lbnF1ZXVlKGluc3QuY29tcG9uZW50RGlkVXBkYXRlLmJpbmQoaW5zdCwgcHJl
dlByb3BzLCBwcmV2U3RhdGUsIHByZXZDb250ZXh0KSwgaW5zdCk7XG5cdCAgICAgIH1cblx0ICAg
IH1cblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBDYWxsIHRoZSBjb21wb25lbnQncyBgcmVu
ZGVyYCBtZXRob2QgYW5kIHVwZGF0ZSB0aGUgRE9NIGFjY29yZGluZ2x5LlxuXHQgICAqXG5cdCAg
ICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuXHQgICAq
IEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIF91cGRhdGVSZW5kZXJlZENvbXBvbmVudDogZnVuY3Rp
b24gKHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG5cdCAgICB2YXIgcHJldkNvbXBvbmVudEluc3Rh
bmNlID0gdGhpcy5fcmVuZGVyZWRDb21wb25lbnQ7XG5cdCAgICB2YXIgcHJldlJlbmRlcmVkRWxl
bWVudCA9IHByZXZDb21wb25lbnRJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQ7XG5cdCAgICB2YXIg
bmV4dFJlbmRlcmVkRWxlbWVudCA9IHRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCgpO1xu
XHRcblx0ICAgIHZhciBkZWJ1Z0lEID0gMDtcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBk
ZWJ1Z0lEID0gdGhpcy5fZGVidWdJRDtcblx0ICAgIH1cblx0XG5cdCAgICBpZiAoc2hvdWxkVXBk
YXRlUmVhY3RDb21wb25lbnQocHJldlJlbmRlcmVkRWxlbWVudCwgbmV4dFJlbmRlcmVkRWxlbWVu
dCkpIHtcblx0ICAgICAgUmVhY3RSZWNvbmNpbGVyLnJlY2VpdmVDb21wb25lbnQocHJldkNvbXBv
bmVudEluc3RhbmNlLCBuZXh0UmVuZGVyZWRFbGVtZW50LCB0cmFuc2FjdGlvbiwgdGhpcy5fcHJv
Y2Vzc0NoaWxkQ29udGV4dChjb250ZXh0KSk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB2YXIg
b2xkSG9zdE5vZGUgPSBSZWFjdFJlY29uY2lsZXIuZ2V0SG9zdE5vZGUocHJldkNvbXBvbmVudElu
c3RhbmNlKTtcblx0ICAgICAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQocHJldkNv
bXBvbmVudEluc3RhbmNlLCBmYWxzZSk7XG5cdFxuXHQgICAgICB2YXIgbm9kZVR5cGUgPSBSZWFj
dE5vZGVUeXBlcy5nZXRUeXBlKG5leHRSZW5kZXJlZEVsZW1lbnQpO1xuXHQgICAgICB0aGlzLl9y
ZW5kZXJlZE5vZGVUeXBlID0gbm9kZVR5cGU7XG5cdCAgICAgIHZhciBjaGlsZCA9IHRoaXMuX2lu
c3RhbnRpYXRlUmVhY3RDb21wb25lbnQobmV4dFJlbmRlcmVkRWxlbWVudCwgbm9kZVR5cGUgIT09
IFJlYWN0Tm9kZVR5cGVzLkVNUFRZIC8qIHNob3VsZEhhdmVEZWJ1Z0lEICovXG5cdCAgICAgICk7
XG5cdCAgICAgIHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50ID0gY2hpbGQ7XG5cdFxuXHQgICAgICB2
YXIgbmV4dE1hcmt1cCA9IFJlYWN0UmVjb25jaWxlci5tb3VudENvbXBvbmVudChjaGlsZCwgdHJh
bnNhY3Rpb24sIHRoaXMuX2hvc3RQYXJlbnQsIHRoaXMuX2hvc3RDb250YWluZXJJbmZvLCB0aGlz
Ll9wcm9jZXNzQ2hpbGRDb250ZXh0KGNvbnRleHQpLCBkZWJ1Z0lEKTtcblx0XG5cdCAgICAgIGlm
IChmYWxzZSkge1xuXHQgICAgICAgIGlmIChkZWJ1Z0lEICE9PSAwKSB7XG5cdCAgICAgICAgICB2
YXIgY2hpbGREZWJ1Z0lEcyA9IGNoaWxkLl9kZWJ1Z0lEICE9PSAwID8gW2NoaWxkLl9kZWJ1Z0lE
XSA6IFtdO1xuXHQgICAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uU2V0
Q2hpbGRyZW4oZGVidWdJRCwgY2hpbGREZWJ1Z0lEcyk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9
XG5cdFxuXHQgICAgICB0aGlzLl9yZXBsYWNlTm9kZVdpdGhNYXJrdXAob2xkSG9zdE5vZGUsIG5l
eHRNYXJrdXAsIHByZXZDb21wb25lbnRJbnN0YW5jZSk7XG5cdCAgICB9XG5cdCAgfSxcblx0XG5c
dCAgLyoqXG5cdCAgICogT3ZlcnJpZGRlbiBpbiBzaGFsbG93IHJlbmRlcmluZy5cblx0ICAgKlxu
XHQgICAqIEBwcm90ZWN0ZWRcblx0ICAgKi9cblx0ICBfcmVwbGFjZU5vZGVXaXRoTWFya3VwOiBm
dW5jdGlvbiAob2xkSG9zdE5vZGUsIG5leHRNYXJrdXAsIHByZXZJbnN0YW5jZSkge1xuXHQgICAg
UmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5yZXBsYWNlTm9kZVdpdGhNYXJrdXAob2xkSG9zdE5v
ZGUsIG5leHRNYXJrdXAsIHByZXZJbnN0YW5jZSk7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAg
ICogQHByb3RlY3RlZFxuXHQgICAqL1xuXHQgIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRo
b3V0T3duZXJPckNvbnRleHQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHZhciBpbnN0ID0gdGhpcy5f
aW5zdGFuY2U7XG5cdCAgICB2YXIgcmVuZGVyZWRFbGVtZW50O1xuXHRcblx0ICAgIGlmIChmYWxz
ZSkge1xuXHQgICAgICByZW5kZXJlZEVsZW1lbnQgPSBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5j
dGlvbiAoKSB7XG5cdCAgICAgICAgcmV0dXJuIGluc3QucmVuZGVyKCk7XG5cdCAgICAgIH0sIHRo
aXMuX2RlYnVnSUQsICdyZW5kZXInKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHJlbmRlcmVk
RWxlbWVudCA9IGluc3QucmVuZGVyKCk7XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKGZhbHNlKSB7
XG5cdCAgICAgIC8vIFdlIGFsbG93IGF1dG8tbW9ja3MgdG8gcHJvY2VlZCBhcyBpZiB0aGV5J3Jl
IHJldHVybmluZyBudWxsLlxuXHQgICAgICBpZiAocmVuZGVyZWRFbGVtZW50ID09PSB1bmRlZmlu
ZWQgJiYgaW5zdC5yZW5kZXIuX2lzTW9ja0Z1bmN0aW9uKSB7XG5cdCAgICAgICAgLy8gVGhpcyBp
cyBwcm9iYWJseSBiYWQgcHJhY3RpY2UuIENvbnNpZGVyIHdhcm5pbmcgaGVyZSBhbmRcblx0ICAg
ICAgICAvLyBkZXByZWNhdGluZyB0aGlzIGNvbnZlbmllbmNlLlxuXHQgICAgICAgIHJlbmRlcmVk
RWxlbWVudCA9IG51bGw7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICByZXR1cm4gcmVu
ZGVyZWRFbGVtZW50O1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEBwcml2YXRlXG5cdCAg
ICovXG5cdCAgX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudDogZnVuY3Rpb24gKCkge1xuXHQgICAg
dmFyIHJlbmRlcmVkRWxlbWVudDtcblx0ICAgIGlmICgoXCJwcm9kdWN0aW9uXCIpICE9PSAncHJv
ZHVjdGlvbicgfHwgdGhpcy5fY29tcG9zaXRlVHlwZSAhPT0gQ29tcG9zaXRlVHlwZXMuU3RhdGVs
ZXNzRnVuY3Rpb25hbCkge1xuXHQgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gdGhp
cztcblx0ICAgICAgdHJ5IHtcblx0ICAgICAgICByZW5kZXJlZEVsZW1lbnQgPSB0aGlzLl9yZW5k
ZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQoKTtcblx0ICAgICAgfSBm
aW5hbGx5IHtcblx0ICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gbnVsbDtcblx0
ICAgICAgfVxuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcmVuZGVyZWRFbGVtZW50ID0gdGhpcy5f
cmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50V2l0aG91dE93bmVyT3JDb250ZXh0KCk7XG5cdCAgICB9
XG5cdCAgICAhKFxuXHQgICAgLy8gVE9ETzogQW4gYGlzVmFsaWROb2RlYCBmdW5jdGlvbiB3b3Vs
ZCBwcm9iYWJseSBiZSBtb3JlIGFwcHJvcHJpYXRlXG5cdCAgICByZW5kZXJlZEVsZW1lbnQgPT09
IG51bGwgfHwgcmVuZGVyZWRFbGVtZW50ID09PSBmYWxzZSB8fCBSZWFjdC5pc1ZhbGlkRWxlbWVu
dChyZW5kZXJlZEVsZW1lbnQpKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJyVzLnJlbmRl
cigpOiBBIHZhbGlkIFJlYWN0IGVsZW1lbnQgKG9yIG51bGwpIG11c3QgYmUgcmV0dXJuZWQuIFlv
dSBtYXkgaGF2ZSByZXR1cm5lZCB1bmRlZmluZWQsIGFuIGFycmF5IG9yIHNvbWUgb3RoZXIgaW52
YWxpZCBvYmplY3QuJywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50
JykgOiBfcHJvZEludmFyaWFudCgnMTA5JywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9z
aXRlQ29tcG9uZW50JykgOiB2b2lkIDA7XG5cdFxuXHQgICAgcmV0dXJuIHJlbmRlcmVkRWxlbWVu
dDtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBMYXppbHkgYWxsb2NhdGVzIHRoZSByZWZz
IG9iamVjdCBhbmQgc3RvcmVzIGBjb21wb25lbnRgIGFzIGByZWZgLlxuXHQgICAqXG5cdCAgICog
QHBhcmFtIHtzdHJpbmd9IHJlZiBSZWZlcmVuY2UgbmFtZS5cblx0ICAgKiBAcGFyYW0ge2NvbXBv
bmVudH0gY29tcG9uZW50IENvbXBvbmVudCB0byBzdG9yZSBhcyBgcmVmYC5cblx0ICAgKiBAZmlu
YWxcblx0ICAgKiBAcHJpdmF0ZVxuXHQgICAqL1xuXHQgIGF0dGFjaFJlZjogZnVuY3Rpb24gKHJl
ZiwgY29tcG9uZW50KSB7XG5cdCAgICB2YXIgaW5zdCA9IHRoaXMuZ2V0UHVibGljSW5zdGFuY2Uo
KTtcblx0ICAgICEoaW5zdCAhPSBudWxsKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ1N0
YXRlbGVzcyBmdW5jdGlvbiBjb21wb25lbnRzIGNhbm5vdCBoYXZlIHJlZnMuJykgOiBfcHJvZElu
dmFyaWFudCgnMTEwJykgOiB2b2lkIDA7XG5cdCAgICB2YXIgcHVibGljQ29tcG9uZW50SW5zdGFu
Y2UgPSBjb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKTtcblx0ICAgIGlmIChmYWxzZSkge1xu
XHQgICAgICB2YXIgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudCAmJiBjb21wb25lbnQuZ2V0TmFt
ZSA/IGNvbXBvbmVudC5nZXROYW1lKCkgOiAnYSBjb21wb25lbnQnO1xuXHQgICAgICBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhwdWJsaWNDb21wb25lbnRJ
bnN0YW5jZSAhPSBudWxsIHx8IGNvbXBvbmVudC5fY29tcG9zaXRlVHlwZSAhPT0gQ29tcG9zaXRl
VHlwZXMuU3RhdGVsZXNzRnVuY3Rpb25hbCwgJ1N0YXRlbGVzcyBmdW5jdGlvbiBjb21wb25lbnRz
IGNhbm5vdCBiZSBnaXZlbiByZWZzICcgKyAnKFNlZSByZWYgXCIlc1wiIGluICVzIGNyZWF0ZWQg
YnkgJXMpLiAnICsgJ0F0dGVtcHRzIHRvIGFjY2VzcyB0aGlzIHJlZiB3aWxsIGZhaWwuJywgcmVm
LCBjb21wb25lbnROYW1lLCB0aGlzLmdldE5hbWUoKSkgOiB2b2lkIDA7XG5cdCAgICB9XG5cdCAg
ICB2YXIgcmVmcyA9IGluc3QucmVmcyA9PT0gZW1wdHlPYmplY3QgPyBpbnN0LnJlZnMgPSB7fSA6
IGluc3QucmVmcztcblx0ICAgIHJlZnNbcmVmXSA9IHB1YmxpY0NvbXBvbmVudEluc3RhbmNlO1xu
XHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIERldGFjaGVzIGEgcmVmZXJlbmNlIG5hbWUuXG5c
dCAgICpcblx0ICAgKiBAcGFyYW0ge3N0cmluZ30gcmVmIE5hbWUgdG8gZGVyZWZlcmVuY2UuXG5c
dCAgICogQGZpbmFsXG5cdCAgICogQHByaXZhdGVcblx0ICAgKi9cblx0ICBkZXRhY2hSZWY6IGZ1
bmN0aW9uIChyZWYpIHtcblx0ICAgIHZhciByZWZzID0gdGhpcy5nZXRQdWJsaWNJbnN0YW5jZSgp
LnJlZnM7XG5cdCAgICBkZWxldGUgcmVmc1tyZWZdO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQg
ICAqIEdldCBhIHRleHQgZGVzY3JpcHRpb24gb2YgdGhlIGNvbXBvbmVudCB0aGF0IGNhbiBiZSB1
c2VkIHRvIGlkZW50aWZ5IGl0XG5cdCAgICogaW4gZXJyb3IgbWVzc2FnZXMuXG5cdCAgICogQHJl
dHVybiB7c3RyaW5nfSBUaGUgbmFtZSBvciBudWxsLlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAq
L1xuXHQgIGdldE5hbWU6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHZhciB0eXBlID0gdGhpcy5fY3Vy
cmVudEVsZW1lbnQudHlwZTtcblx0ICAgIHZhciBjb25zdHJ1Y3RvciA9IHRoaXMuX2luc3RhbmNl
ICYmIHRoaXMuX2luc3RhbmNlLmNvbnN0cnVjdG9yO1xuXHQgICAgcmV0dXJuIHR5cGUuZGlzcGxh
eU5hbWUgfHwgY29uc3RydWN0b3IgJiYgY29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgdHlwZS5u
YW1lIHx8IGNvbnN0cnVjdG9yICYmIGNvbnN0cnVjdG9yLm5hbWUgfHwgbnVsbDtcblx0ICB9LFxu
XHRcblx0ICAvKipcblx0ICAgKiBHZXQgdGhlIHB1YmxpY2x5IGFjY2Vzc2libGUgcmVwcmVzZW50
YXRpb24gb2YgdGhpcyBjb21wb25lbnQgLSBpLmUuIHdoYXRcblx0ICAgKiBpcyBleHBvc2VkIGJ5
IHJlZnMgYW5kIHJldHVybmVkIGJ5IHJlbmRlci4gQ2FuIGJlIG51bGwgZm9yIHN0YXRlbGVzc1xu
XHQgICAqIGNvbXBvbmVudHMuXG5cdCAgICpcblx0ICAgKiBAcmV0dXJuIHtSZWFjdENvbXBvbmVu
dH0gdGhlIHB1YmxpYyBjb21wb25lbnQgaW5zdGFuY2UuXG5cdCAgICogQGludGVybmFsXG5cdCAg
ICovXG5cdCAgZ2V0UHVibGljSW5zdGFuY2U6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHZhciBpbnN0
ID0gdGhpcy5faW5zdGFuY2U7XG5cdCAgICBpZiAodGhpcy5fY29tcG9zaXRlVHlwZSA9PT0gQ29t
cG9zaXRlVHlwZXMuU3RhdGVsZXNzRnVuY3Rpb25hbCkge1xuXHQgICAgICByZXR1cm4gbnVsbDtc
blx0ICAgIH1cblx0ICAgIHJldHVybiBpbnN0O1xuXHQgIH0sXG5cdFxuXHQgIC8vIFN0dWJcblx0
ICBfaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudDogbnVsbFxuXHR9O1xuXHRcblx0bW9kdWxlLmV4
cG9ydHMgPSBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudDtcblxuLyoqKi8gfSxcbi8qIDEzNyAqL1xu
LyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5c
blx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0
LyogZ2xvYmFscyBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18qL1xuXHRcblx0J3VzZSBz
dHJpY3QnO1xuXHRcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1
aXJlX18oNSk7XG5cdHZhciBSZWFjdERlZmF1bHRJbmplY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDE1MCk7XG5cdHZhciBSZWFjdE1vdW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2Nyk7XG5c
dHZhciBSZWFjdFJlY29uY2lsZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2KTtcblx0dmFyIFJl
YWN0VXBkYXRlcyA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7XG5cdHZhciBSZWFjdFZlcnNpb24g
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2Myk7XG5cdFxuXHR2YXIgZmluZERPTU5vZGUgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDE3OSk7XG5cdHZhciBnZXRIb3N0Q29tcG9uZW50RnJvbUNvbXBvc2l0
ZSA9IF9fd2VicGFja19yZXF1aXJlX18oNzIpO1xuXHR2YXIgcmVuZGVyU3VidHJlZUludG9Db250
YWluZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4Nik7XG5cdHZhciB3YXJuaW5nID0gX193ZWJw
YWNrX3JlcXVpcmVfXygyKTtcblx0XG5cdFJlYWN0RGVmYXVsdEluamVjdGlvbi5pbmplY3QoKTtc
blx0XG5cdHZhciBSZWFjdERPTSA9IHtcblx0ICBmaW5kRE9NTm9kZTogZmluZERPTU5vZGUsXG5c
dCAgcmVuZGVyOiBSZWFjdE1vdW50LnJlbmRlcixcblx0ICB1bm1vdW50Q29tcG9uZW50QXROb2Rl
OiBSZWFjdE1vdW50LnVubW91bnRDb21wb25lbnRBdE5vZGUsXG5cdCAgdmVyc2lvbjogUmVhY3RW
ZXJzaW9uLFxuXHRcblx0ICAvKiBlc2xpbnQtZGlzYWJsZSBjYW1lbGNhc2UgKi9cblx0ICB1bnN0
YWJsZV9iYXRjaGVkVXBkYXRlczogUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzLFxuXHQgIHVu
c3RhYmxlX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyOiByZW5kZXJTdWJ0cmVlSW50b0NvbnRh
aW5lclxuXHQgIC8qIGVzbGludC1lbmFibGUgY2FtZWxjYXNlICovXG5cdH07XG5cdFxuXHQvLyBJ
bmplY3QgdGhlIHJ1bnRpbWUgaW50byBhIGRldnRvb2xzIGdsb2JhbCBob29rIHJlZ2FyZGxlc3Mg
b2YgYnJvd3Nlci5cblx0Ly8gQWxsb3dzIGZvciBkZWJ1Z2dpbmcgd2hlbiB0aGUgaG9vayBpcyBp
bmplY3RlZCBvbiB0aGUgcGFnZS5cblx0aWYgKHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JB
TF9IT09LX18gIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JB
TF9IT09LX18uaW5qZWN0ID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgX19SRUFDVF9ERVZUT09MU19H
TE9CQUxfSE9PS19fLmluamVjdCh7XG5cdCAgICBDb21wb25lbnRUcmVlOiB7XG5cdCAgICAgIGdl
dENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlOiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Q2xvc2Vz
dEluc3RhbmNlRnJvbU5vZGUsXG5cdCAgICAgIGdldE5vZGVGcm9tSW5zdGFuY2U6IGZ1bmN0aW9u
IChpbnN0KSB7XG5cdCAgICAgICAgLy8gaW5zdCBpcyBhbiBpbnRlcm5hbCBpbnN0YW5jZSAoYnV0
IGNvdWxkIGJlIGEgY29tcG9zaXRlKVxuXHQgICAgICAgIGlmIChpbnN0Ll9yZW5kZXJlZENvbXBv
bmVudCkge1xuXHQgICAgICAgICAgaW5zdCA9IGdldEhvc3RDb21wb25lbnRGcm9tQ29tcG9zaXRl
KGluc3QpO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBpZiAoaW5zdCkge1xuXHQgICAgICAgICAg
cmV0dXJuIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpO1xu
XHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICByZXR1cm4gbnVsbDtcblx0ICAgICAgICB9
XG5cdCAgICAgIH1cblx0ICAgIH0sXG5cdCAgICBNb3VudDogUmVhY3RNb3VudCxcblx0ICAgIFJl
Y29uY2lsZXI6IFJlYWN0UmVjb25jaWxlclxuXHQgIH0pO1xuXHR9XG5cdFxuXHRpZiAoZmFsc2Up
IHtcblx0ICB2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVj
dXRpb25FbnZpcm9ubWVudCcpO1xuXHQgIGlmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VE
T00gJiYgd2luZG93LnRvcCA9PT0gd2luZG93LnNlbGYpIHtcblx0ICAgIC8vIEZpcnN0IGNoZWNr
IGlmIGRldnRvb2xzIGlzIG5vdCBpbnN0YWxsZWRcblx0ICAgIGlmICh0eXBlb2YgX19SRUFDVF9E
RVZUT09MU19HTE9CQUxfSE9PS19fID09PSAndW5kZWZpbmVkJykge1xuXHQgICAgICAvLyBJZiB3
ZSdyZSBpbiBDaHJvbWUgb3IgRmlyZWZveCwgcHJvdmlkZSBhIGRvd25sb2FkIGxpbmsgaWYgbm90
IGluc3RhbGxlZC5cblx0ICAgICAgaWYgKG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignQ2hy
b21lJykgPiAtMSAmJiBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0VkZ2UnKSA9PT0gLTEg
fHwgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdGaXJlZm94JykgPiAtMSkge1xuXHQgICAg
ICAgIC8vIEZpcmVmb3ggZG9lcyBub3QgaGF2ZSB0aGUgaXNzdWUgd2l0aCBkZXZ0b29scyBsb2Fk
ZWQgb3ZlciBmaWxlOi8vXG5cdCAgICAgICAgdmFyIHNob3dGaWxlVXJsTWVzc2FnZSA9IHdpbmRv
dy5sb2NhdGlvbi5wcm90b2NvbC5pbmRleE9mKCdodHRwJykgPT09IC0xICYmIG5hdmlnYXRvci51
c2VyQWdlbnQuaW5kZXhPZignRmlyZWZveCcpID09PSAtMTtcblx0ICAgICAgICBjb25zb2xlLmRl
YnVnKCdEb3dubG9hZCB0aGUgUmVhY3QgRGV2VG9vbHMgJyArIChzaG93RmlsZVVybE1lc3NhZ2Ug
PyAnYW5kIHVzZSBhbiBIVFRQIHNlcnZlciAoaW5zdGVhZCBvZiBhIGZpbGU6IFVSTCkgJyA6ICcn
KSArICdmb3IgYSBiZXR0ZXIgZGV2ZWxvcG1lbnQgZXhwZXJpZW5jZTogJyArICdodHRwczovL2Zi
Lm1lL3JlYWN0LWRldnRvb2xzJyk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICB2YXIg
dGVzdEZ1bmMgPSBmdW5jdGlvbiB0ZXN0Rm4oKSB7fTtcblx0ICAgIHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCh0ZXN0RnVuYy5uYW1lIHx8IHRlc3RGdW5j
LnRvU3RyaW5nKCkpLmluZGV4T2YoJ3Rlc3RGbicpICE9PSAtMSwgXCJJdCBsb29rcyBsaWtlIHlv
dSdyZSB1c2luZyBhIG1pbmlmaWVkIGNvcHkgb2YgdGhlIGRldmVsb3BtZW50IGJ1aWxkIFwiICsg
J29mIFJlYWN0LiBXaGVuIGRlcGxveWluZyBSZWFjdCBhcHBzIHRvIHByb2R1Y3Rpb24sIG1ha2Ug
c3VyZSB0byB1c2UgJyArICd0aGUgcHJvZHVjdGlvbiBidWlsZCB3aGljaCBza2lwcyBkZXZlbG9w
bWVudCB3YXJuaW5ncyBhbmQgaXMgZmFzdGVyLiAnICsgJ1NlZSBodHRwczovL2ZiLm1lL3JlYWN0
LW1pbmlmaWNhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLicpIDogdm9pZCAwO1xuXHRcblx0ICAgIC8v
IElmIHdlJ3JlIGluIElFOCwgY2hlY2sgdG8gc2VlIGlmIHdlIGFyZSBpbiBjb21wYXRpYmlsaXR5
IG1vZGUgYW5kIHByb3ZpZGVcblx0ICAgIC8vIGluZm9ybWF0aW9uIG9uIHByZXZlbnRpbmcgY29t
cGF0aWJpbGl0eSBtb2RlXG5cdCAgICB2YXIgaWVDb21wYXRpYmlsaXR5TW9kZSA9IGRvY3VtZW50
LmRvY3VtZW50TW9kZSAmJiBkb2N1bWVudC5kb2N1bWVudE1vZGUgPCA4O1xuXHRcblx0ICAgIHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFpZUNvbXBhdGli
aWxpdHlNb2RlLCAnSW50ZXJuZXQgRXhwbG9yZXIgaXMgcnVubmluZyBpbiBjb21wYXRpYmlsaXR5
IG1vZGU7IHBsZWFzZSBhZGQgdGhlICcgKyAnZm9sbG93aW5nIHRhZyB0byB5b3VyIEhUTUwgdG8g
cHJldmVudCB0aGlzIGZyb20gaGFwcGVuaW5nOiAnICsgJzxtZXRhIGh0dHAtZXF1aXY9XCJYLVVB
LUNvbXBhdGlibGVcIiBjb250ZW50PVwiSUU9ZWRnZVwiIC8+JykgOiB2b2lkIDA7XG5cdFxuXHQg
ICAgdmFyIGV4cGVjdGVkRmVhdHVyZXMgPSBbXG5cdCAgICAvLyBzaGltc1xuXHQgICAgQXJyYXku
aXNBcnJheSwgQXJyYXkucHJvdG90eXBlLmV2ZXJ5LCBBcnJheS5wcm90b3R5cGUuZm9yRWFjaCwg
QXJyYXkucHJvdG90eXBlLmluZGV4T2YsIEFycmF5LnByb3RvdHlwZS5tYXAsIERhdGUubm93LCBG
dW5jdGlvbi5wcm90b3R5cGUuYmluZCwgT2JqZWN0LmtleXMsIFN0cmluZy5wcm90b3R5cGUudHJp
bV07XG5cdFxuXHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHBlY3RlZEZlYXR1cmVzLmxlbmd0
aDsgaSsrKSB7XG5cdCAgICAgIGlmICghZXhwZWN0ZWRGZWF0dXJlc1tpXSkge1xuXHQgICAgICAg
IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAn
T25lIG9yIG1vcmUgRVM1IHNoaW1zIGV4cGVjdGVkIGJ5IFJlYWN0IGFyZSBub3QgYXZhaWxhYmxl
OiAnICsgJ2h0dHBzOi8vZmIubWUvcmVhY3Qtd2FybmluZy1wb2x5ZmlsbHMnKSA6IHZvaWQgMDtc
blx0ICAgICAgICBicmVhaztcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0fVxuXHRcblx0
aWYgKGZhbHNlKSB7XG5cdCAgdmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gcmVxdWlyZSgnLi9S
ZWFjdEluc3RydW1lbnRhdGlvbicpO1xuXHQgIHZhciBSZWFjdERPTVVua25vd25Qcm9wZXJ0eUhv
b2sgPSByZXF1aXJlKCcuL1JlYWN0RE9NVW5rbm93blByb3BlcnR5SG9vaycpO1xuXHQgIHZhciBS
ZWFjdERPTU51bGxJbnB1dFZhbHVlUHJvcEhvb2sgPSByZXF1aXJlKCcuL1JlYWN0RE9NTnVsbElu
cHV0VmFsdWVQcm9wSG9vaycpO1xuXHQgIHZhciBSZWFjdERPTUludmFsaWRBUklBSG9vayA9IHJl
cXVpcmUoJy4vUmVhY3RET01JbnZhbGlkQVJJQUhvb2snKTtcblx0XG5cdCAgUmVhY3RJbnN0cnVt
ZW50YXRpb24uZGVidWdUb29sLmFkZEhvb2soUmVhY3RET01Vbmtub3duUHJvcGVydHlIb29rKTtc
blx0ICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wuYWRkSG9vayhSZWFjdERPTU51bGxJ
bnB1dFZhbHVlUHJvcEhvb2spO1xuXHQgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5h
ZGRIb29rKFJlYWN0RE9NSW52YWxpZEFSSUFIb29rKTtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9y
dHMgPSBSZWFjdERPTTtcblxuLyoqKi8gfSxcbi8qIDEzOCAqL1xuLyoqKi8gZnVuY3Rpb24obW9k
dWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0LyogZ2xvYmFsIGhhc093blBy
b3BlcnR5OnRydWUgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFy
aWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyksXG5cdCAgICBfYXNzaWduID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg0KTtcblx0XG5cdHZhciBBdXRvRm9jdXNVdGlscyA9IF9fd2VicGFja19yZXF1
aXJlX18oMTI1KTtcblx0dmFyIENTU1Byb3BlcnR5T3BlcmF0aW9ucyA9IF9fd2VicGFja19yZXF1
aXJlX18oMTI3KTtcblx0dmFyIERPTUxhenlUcmVlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNCk7
XG5cdHZhciBET01OYW1lc3BhY2VzID0gX193ZWJwYWNrX3JlcXVpcmVfXygzNSk7XG5cdHZhciBE
T01Qcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpO1xuXHR2YXIgRE9NUHJvcGVydHlP
cGVyYXRpb25zID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2MCk7XG5cdHZhciBFdmVudFBsdWdpbkh1
YiA9IF9fd2VicGFja19yZXF1aXJlX18oMTkpO1xuXHR2YXIgRXZlbnRQbHVnaW5SZWdpc3RyeSA9
IF9fd2VicGFja19yZXF1aXJlX18oMzYpO1xuXHR2YXIgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVy
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNSk7XG5cdHZhciBSZWFjdERPTUNvbXBvbmVudEZsYWdz
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2MSk7XG5cdHZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuXHR2YXIgUmVhY3RET01JbnB1dCA9IF9fd2VicGFj
a19yZXF1aXJlX18oMTQzKTtcblx0dmFyIFJlYWN0RE9NT3B0aW9uID0gX193ZWJwYWNrX3JlcXVp
cmVfXygxNDQpO1xuXHR2YXIgUmVhY3RET01TZWxlY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYy
KTtcblx0dmFyIFJlYWN0RE9NVGV4dGFyZWEgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0Nyk7XG5c
dHZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7XG5cdHZh
ciBSZWFjdE11bHRpQ2hpbGQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1Nik7XG5cdHZhciBSZWFj
dFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNjEpO1xu
XHRcblx0dmFyIGVtcHR5RnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xuXHR2YXIg
ZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyID0gX193ZWJwYWNrX3JlcXVpcmVfXygyOCk7XG5c
dHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHR2YXIgaXNFdmVudFN1
cHBvcnRlZCA9IF9fd2VicGFja19yZXF1aXJlX18oNDcpO1xuXHR2YXIgc2hhbGxvd0VxdWFsID0g
X193ZWJwYWNrX3JlcXVpcmVfXygzMik7XG5cdHZhciBpbnB1dFZhbHVlVHJhY2tpbmcgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDc0KTtcblx0dmFyIHZhbGlkYXRlRE9NTmVzdGluZyA9IF9fd2VicGFj
a19yZXF1aXJlX18oNDkpO1xuXHR2YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7
XG5cdFxuXHR2YXIgRmxhZ3MgPSBSZWFjdERPTUNvbXBvbmVudEZsYWdzO1xuXHR2YXIgZGVsZXRl
TGlzdGVuZXIgPSBFdmVudFBsdWdpbkh1Yi5kZWxldGVMaXN0ZW5lcjtcblx0dmFyIGdldE5vZGUg
PSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZTtcblx0dmFyIGxpc3Rl
blRvID0gUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLmxpc3RlblRvO1xuXHR2YXIgcmVnaXN0cmF0
aW9uTmFtZU1vZHVsZXMgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1
bGVzO1xuXHRcblx0Ly8gRm9yIHF1aWNrbHkgbWF0Y2hpbmcgY2hpbGRyZW4gdHlwZSwgdG8gdGVz
dCBpZiBjYW4gYmUgdHJlYXRlZCBhcyBjb250ZW50LlxuXHR2YXIgQ09OVEVOVF9UWVBFUyA9IHsg
c3RyaW5nOiB0cnVlLCBudW1iZXI6IHRydWUgfTtcblx0XG5cdHZhciBTVFlMRSA9ICdzdHlsZSc7
XG5cdHZhciBIVE1MID0gJ19faHRtbCc7XG5cdHZhciBSRVNFUlZFRF9QUk9QUyA9IHtcblx0ICBj
aGlsZHJlbjogbnVsbCxcblx0ICBkYW5nZXJvdXNseVNldElubmVySFRNTDogbnVsbCxcblx0ICBz
dXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmc6IG51bGxcblx0fTtcblx0XG5cdC8vIE5vZGUg
dHlwZSBmb3IgZG9jdW1lbnQgZnJhZ21lbnRzIChOb2RlLkRPQ1VNRU5UX0ZSQUdNRU5UX05PREUp
LlxuXHR2YXIgRE9DX0ZSQUdNRU5UX1RZUEUgPSAxMTtcblx0XG5cdGZ1bmN0aW9uIGdldERlY2xh
cmF0aW9uRXJyb3JBZGRlbmR1bShpbnRlcm5hbEluc3RhbmNlKSB7XG5cdCAgaWYgKGludGVybmFs
SW5zdGFuY2UpIHtcblx0ICAgIHZhciBvd25lciA9IGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRF
bGVtZW50Ll9vd25lciB8fCBudWxsO1xuXHQgICAgaWYgKG93bmVyKSB7XG5cdCAgICAgIHZhciBu
YW1lID0gb3duZXIuZ2V0TmFtZSgpO1xuXHQgICAgICBpZiAobmFtZSkge1xuXHQgICAgICAgIHJl
dHVybiAnIFRoaXMgRE9NIG5vZGUgd2FzIHJlbmRlcmVkIGJ5IGAnICsgbmFtZSArICdgLic7XG5c
dCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cdCAgcmV0dXJuICcnO1xuXHR9XG5cdFxuXHRmdW5j
dGlvbiBmcmllbmRseVN0cmluZ2lmeShvYmopIHtcblx0ICBpZiAodHlwZW9mIG9iaiA9PT0gJ29i
amVjdCcpIHtcblx0ICAgIGlmIChBcnJheS5pc0FycmF5KG9iaikpIHtcblx0ICAgICAgcmV0dXJu
ICdbJyArIG9iai5tYXAoZnJpZW5kbHlTdHJpbmdpZnkpLmpvaW4oJywgJykgKyAnXSc7XG5cdCAg
ICB9IGVsc2Uge1xuXHQgICAgICB2YXIgcGFpcnMgPSBbXTtcblx0ICAgICAgZm9yICh2YXIga2V5
IGluIG9iaikge1xuXHQgICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5
LmNhbGwob2JqLCBrZXkpKSB7XG5cdCAgICAgICAgICB2YXIga2V5RXNjYXBlZCA9IC9eW2EteiRf
XVtcXHckX10qJC9pLnRlc3Qoa2V5KSA/IGtleSA6IEpTT04uc3RyaW5naWZ5KGtleSk7XG5cdCAg
ICAgICAgICBwYWlycy5wdXNoKGtleUVzY2FwZWQgKyAnOiAnICsgZnJpZW5kbHlTdHJpbmdpZnko
b2JqW2tleV0pKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuICd7JyAr
IHBhaXJzLmpvaW4oJywgJykgKyAnfSc7XG5cdCAgICB9XG5cdCAgfSBlbHNlIGlmICh0eXBlb2Yg
b2JqID09PSAnc3RyaW5nJykge1xuXHQgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG9iaik7XG5c
dCAgfSBlbHNlIGlmICh0eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICByZXR1cm4g
J1tmdW5jdGlvbiBvYmplY3RdJztcblx0ICB9XG5cdCAgLy8gRGlmZmVycyBmcm9tIEpTT04uc3Ry
aW5naWZ5IGluIHRoYXQgdW5kZWZpbmVkIGJlY2F1c2UgdW5kZWZpbmVkIGFuZCB0aGF0XG5cdCAg
Ly8gaW5mIGFuZCBuYW4gZG9uJ3QgYmVjb21lIG51bGxcblx0ICByZXR1cm4gU3RyaW5nKG9iaik7
XG5cdH1cblx0XG5cdHZhciBzdHlsZU11dGF0aW9uV2FybmluZyA9IHt9O1xuXHRcblx0ZnVuY3Rp
b24gY2hlY2tBbmRXYXJuRm9yTXV0YXRlZFN0eWxlKHN0eWxlMSwgc3R5bGUyLCBjb21wb25lbnQp
IHtcblx0ICBpZiAoc3R5bGUxID09IG51bGwgfHwgc3R5bGUyID09IG51bGwpIHtcblx0ICAgIHJl
dHVybjtcblx0ICB9XG5cdCAgaWYgKHNoYWxsb3dFcXVhbChzdHlsZTEsIHN0eWxlMikpIHtcblx0
ICAgIHJldHVybjtcblx0ICB9XG5cdFxuXHQgIHZhciBjb21wb25lbnROYW1lID0gY29tcG9uZW50
Ll90YWc7XG5cdCAgdmFyIG93bmVyID0gY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7
XG5cdCAgdmFyIG93bmVyTmFtZTtcblx0ICBpZiAob3duZXIpIHtcblx0ICAgIG93bmVyTmFtZSA9
IG93bmVyLmdldE5hbWUoKTtcblx0ICB9XG5cdFxuXHQgIHZhciBoYXNoID0gb3duZXJOYW1lICsg
J3wnICsgY29tcG9uZW50TmFtZTtcblx0XG5cdCAgaWYgKHN0eWxlTXV0YXRpb25XYXJuaW5nLmhh
c093blByb3BlcnR5KGhhc2gpKSB7XG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHRcblx0ICBzdHls
ZU11dGF0aW9uV2FybmluZ1toYXNoXSA9IHRydWU7XG5cdFxuXHQgICBmYWxzZSA/IHdhcm5pbmco
ZmFsc2UsICdgJXNgIHdhcyBwYXNzZWQgYSBzdHlsZSBvYmplY3QgdGhhdCBoYXMgcHJldmlvdXNs
eSBiZWVuIG11dGF0ZWQuICcgKyAnTXV0YXRpbmcgYHN0eWxlYCBpcyBkZXByZWNhdGVkLiBDb25z
aWRlciBjbG9uaW5nIGl0IGJlZm9yZWhhbmQuIENoZWNrICcgKyAndGhlIGByZW5kZXJgICVzLiBQ
cmV2aW91cyBzdHlsZTogJXMuIE11dGF0ZWQgc3R5bGU6ICVzLicsIGNvbXBvbmVudE5hbWUsIG93
bmVyID8gJ29mIGAnICsgb3duZXJOYW1lICsgJ2AnIDogJ3VzaW5nIDwnICsgY29tcG9uZW50TmFt
ZSArICc+JywgZnJpZW5kbHlTdHJpbmdpZnkoc3R5bGUxKSwgZnJpZW5kbHlTdHJpbmdpZnkoc3R5
bGUyKSkgOiB2b2lkIDA7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gY29t
cG9uZW50XG5cdCAqIEBwYXJhbSB7P29iamVjdH0gcHJvcHNcblx0ICovXG5cdGZ1bmN0aW9uIGFz
c2VydFZhbGlkUHJvcHMoY29tcG9uZW50LCBwcm9wcykge1xuXHQgIGlmICghcHJvcHMpIHtcblx0
ICAgIHJldHVybjtcblx0ICB9XG5cdCAgLy8gTm90ZSB0aGUgdXNlIG9mIGA9PWAgd2hpY2ggY2hl
Y2tzIGZvciBudWxsIG9yIHVuZGVmaW5lZC5cblx0ICBpZiAodm9pZEVsZW1lbnRUYWdzW2NvbXBv
bmVudC5fdGFnXSkge1xuXHQgICAgIShwcm9wcy5jaGlsZHJlbiA9PSBudWxsICYmIHByb3BzLmRh
bmdlcm91c2x5U2V0SW5uZXJIVE1MID09IG51bGwpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNl
LCAnJXMgaXMgYSB2b2lkIGVsZW1lbnQgdGFnIGFuZCBtdXN0IG5laXRoZXIgaGF2ZSBgY2hpbGRy
ZW5gIG5vciB1c2UgYGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYC4lcycsIGNvbXBvbmVudC5fdGFn
LCBjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50Ll9vd25lciA/ICcgQ2hlY2sgdGhlIHJlbmRlciBt
ZXRob2Qgb2YgJyArIGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQuX293bmVyLmdldE5hbWUoKSAr
ICcuJyA6ICcnKSA6IF9wcm9kSW52YXJpYW50KCcxMzcnLCBjb21wb25lbnQuX3RhZywgY29tcG9u
ZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXIgPyAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9m
ICcgKyBjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50Ll9vd25lci5nZXROYW1lKCkgKyAnLicgOiAn
JykgOiB2b2lkIDA7XG5cdCAgfVxuXHQgIGlmIChwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRN
TCAhPSBudWxsKSB7XG5cdCAgICAhKHByb3BzLmNoaWxkcmVuID09IG51bGwpID8gIGZhbHNlID8g
aW52YXJpYW50KGZhbHNlLCAnQ2FuIG9ubHkgc2V0IG9uZSBvZiBgY2hpbGRyZW5gIG9yIGBwcm9w
cy5kYW5nZXJvdXNseVNldElubmVySFRNTGAuJykgOiBfcHJvZEludmFyaWFudCgnNjAnKSA6IHZv
aWQgMDtcblx0ICAgICEodHlwZW9mIHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MID09PSAn
b2JqZWN0JyAmJiBIVE1MIGluIHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSA/ICBmYWxz
ZSA/IGludmFyaWFudChmYWxzZSwgJ2Bwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTGAgbXVz
dCBiZSBpbiB0aGUgZm9ybSBge19faHRtbDogLi4ufWAuIFBsZWFzZSB2aXNpdCBodHRwczovL2Zi
Lm1lL3JlYWN0LWludmFyaWFudC1kYW5nZXJvdXNseS1zZXQtaW5uZXItaHRtbCBmb3IgbW9yZSBp
bmZvcm1hdGlvbi4nKSA6IF9wcm9kSW52YXJpYW50KCc2MScpIDogdm9pZCAwO1xuXHQgIH1cblx0
ICBpZiAoZmFsc2UpIHtcblx0ICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicgPyB3YXJuaW5nKHByb3BzLmlubmVySFRNTCA9PSBudWxsLCAnRGlyZWN0bHkgc2V0dGluZyBw
cm9wZXJ0eSBgaW5uZXJIVE1MYCBpcyBub3QgcGVybWl0dGVkLiAnICsgJ0ZvciBtb3JlIGluZm9y
bWF0aW9uLCBsb29rdXAgZG9jdW1lbnRhdGlvbiBvbiBgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxg
LicpIDogdm9pZCAwO1xuXHQgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcocHJvcHMuc3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nIHx8ICFwcm9w
cy5jb250ZW50RWRpdGFibGUgfHwgcHJvcHMuY2hpbGRyZW4gPT0gbnVsbCwgJ0EgY29tcG9uZW50
IGlzIGBjb250ZW50RWRpdGFibGVgIGFuZCBjb250YWlucyBgY2hpbGRyZW5gIG1hbmFnZWQgYnkg
JyArICdSZWFjdC4gSXQgaXMgbm93IHlvdXIgcmVzcG9uc2liaWxpdHkgdG8gZ3VhcmFudGVlIHRo
YXQgbm9uZSBvZiAnICsgJ3Rob3NlIG5vZGVzIGFyZSB1bmV4cGVjdGVkbHkgbW9kaWZpZWQgb3Ig
ZHVwbGljYXRlZC4gVGhpcyBpcyAnICsgJ3Byb2JhYmx5IG5vdCBpbnRlbnRpb25hbC4nKSA6IHZv
aWQgMDtcblx0ICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKHByb3BzLm9uRm9jdXNJbiA9PSBudWxsICYmIHByb3BzLm9uRm9jdXNPdXQgPT0gbnVsbCwg
J1JlYWN0IHVzZXMgb25Gb2N1cyBhbmQgb25CbHVyIGluc3RlYWQgb2Ygb25Gb2N1c0luIGFuZCBv
bkZvY3VzT3V0LiAnICsgJ0FsbCBSZWFjdCBldmVudHMgYXJlIG5vcm1hbGl6ZWQgdG8gYnViYmxl
LCBzbyBvbkZvY3VzSW4gYW5kIG9uRm9jdXNPdXQgJyArICdhcmUgbm90IG5lZWRlZC9zdXBwb3J0
ZWQgYnkgUmVhY3QuJykgOiB2b2lkIDA7XG5cdCAgfVxuXHQgICEocHJvcHMuc3R5bGUgPT0gbnVs
bCB8fCB0eXBlb2YgcHJvcHMuc3R5bGUgPT09ICdvYmplY3QnKSA/ICBmYWxzZSA/IGludmFyaWFu
dChmYWxzZSwgJ1RoZSBgc3R5bGVgIHByb3AgZXhwZWN0cyBhIG1hcHBpbmcgZnJvbSBzdHlsZSBw
cm9wZXJ0aWVzIHRvIHZhbHVlcywgbm90IGEgc3RyaW5nLiBGb3IgZXhhbXBsZSwgc3R5bGU9e3tt
YXJnaW5SaWdodDogc3BhY2luZyArIFxcJ2VtXFwnfX0gd2hlbiB1c2luZyBKU1guJXMnLCBnZXRE
ZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oY29tcG9uZW50KSkgOiBfcHJvZEludmFyaWFudCgnNjIn
LCBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oY29tcG9uZW50KSkgOiB2b2lkIDA7XG5cdH1c
blx0XG5cdGZ1bmN0aW9uIGVucXVldWVQdXRMaXN0ZW5lcihpbnN0LCByZWdpc3RyYXRpb25OYW1l
LCBsaXN0ZW5lciwgdHJhbnNhY3Rpb24pIHtcblx0ICBpZiAodHJhbnNhY3Rpb24gaW5zdGFuY2Vv
ZiBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uKSB7XG5cdCAgICByZXR1cm47XG5cdCAg
fVxuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgLy8gSUU4IGhhcyBubyBBUEkgZm9yIGV2ZW50IGNh
cHR1cmluZyBhbmQgdGhlIGBvblNjcm9sbGAgZXZlbnQgZG9lc24ndFxuXHQgICAgLy8gYnViYmxl
LlxuXHQgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmco
cmVnaXN0cmF0aW9uTmFtZSAhPT0gJ29uU2Nyb2xsJyB8fCBpc0V2ZW50U3VwcG9ydGVkKCdzY3Jv
bGwnLCB0cnVlKSwgXCJUaGlzIGJyb3dzZXIgZG9lc24ndCBzdXBwb3J0IHRoZSBgb25TY3JvbGxg
IGV2ZW50XCIpIDogdm9pZCAwO1xuXHQgIH1cblx0ICB2YXIgY29udGFpbmVySW5mbyA9IGluc3Qu
X2hvc3RDb250YWluZXJJbmZvO1xuXHQgIHZhciBpc0RvY3VtZW50RnJhZ21lbnQgPSBjb250YWlu
ZXJJbmZvLl9ub2RlICYmIGNvbnRhaW5lckluZm8uX25vZGUubm9kZVR5cGUgPT09IERPQ19GUkFH
TUVOVF9UWVBFO1xuXHQgIHZhciBkb2MgPSBpc0RvY3VtZW50RnJhZ21lbnQgPyBjb250YWluZXJJ
bmZvLl9ub2RlIDogY29udGFpbmVySW5mby5fb3duZXJEb2N1bWVudDtcblx0ICBsaXN0ZW5Ubyhy
ZWdpc3RyYXRpb25OYW1lLCBkb2MpO1xuXHQgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFk
eSgpLmVucXVldWUocHV0TGlzdGVuZXIsIHtcblx0ICAgIGluc3Q6IGluc3QsXG5cdCAgICByZWdp
c3RyYXRpb25OYW1lOiByZWdpc3RyYXRpb25OYW1lLFxuXHQgICAgbGlzdGVuZXI6IGxpc3RlbmVy
XG5cdCAgfSk7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHB1dExpc3RlbmVyKCkge1xuXHQgIHZhciBs
aXN0ZW5lclRvUHV0ID0gdGhpcztcblx0ICBFdmVudFBsdWdpbkh1Yi5wdXRMaXN0ZW5lcihsaXN0
ZW5lclRvUHV0Lmluc3QsIGxpc3RlbmVyVG9QdXQucmVnaXN0cmF0aW9uTmFtZSwgbGlzdGVuZXJU
b1B1dC5saXN0ZW5lcik7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGlucHV0UG9zdE1vdW50KCkge1xu
XHQgIHZhciBpbnN0ID0gdGhpcztcblx0ICBSZWFjdERPTUlucHV0LnBvc3RNb3VudFdyYXBwZXIo
aW5zdCk7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHRleHRhcmVhUG9zdE1vdW50KCkge1xuXHQgIHZh
ciBpbnN0ID0gdGhpcztcblx0ICBSZWFjdERPTVRleHRhcmVhLnBvc3RNb3VudFdyYXBwZXIoaW5z
dCk7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIG9wdGlvblBvc3RNb3VudCgpIHtcblx0ICB2YXIgaW5z
dCA9IHRoaXM7XG5cdCAgUmVhY3RET01PcHRpb24ucG9zdE1vdW50V3JhcHBlcihpbnN0KTtcblx0
fVxuXHRcblx0dmFyIHNldEFuZFZhbGlkYXRlQ29udGVudENoaWxkRGV2ID0gZW1wdHlGdW5jdGlv
bjtcblx0aWYgKGZhbHNlKSB7XG5cdCAgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYgPSBm
dW5jdGlvbiAoY29udGVudCkge1xuXHQgICAgdmFyIGhhc0V4aXN0aW5nQ29udGVudCA9IHRoaXMu
X2NvbnRlbnREZWJ1Z0lEICE9IG51bGw7XG5cdCAgICB2YXIgZGVidWdJRCA9IHRoaXMuX2RlYnVn
SUQ7XG5cdCAgICAvLyBUaGlzIElEIHJlcHJlc2VudHMgdGhlIGlubGluZWQgY2hpbGQgdGhhdCBo
YXMgbm8gYmFja2luZyBpbnN0YW5jZTpcblx0ICAgIHZhciBjb250ZW50RGVidWdJRCA9IC1kZWJ1
Z0lEO1xuXHRcblx0ICAgIGlmIChjb250ZW50ID09IG51bGwpIHtcblx0ICAgICAgaWYgKGhhc0V4
aXN0aW5nQ29udGVudCkge1xuXHQgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9v
bC5vblVubW91bnRDb21wb25lbnQodGhpcy5fY29udGVudERlYnVnSUQpO1xuXHQgICAgICB9XG5c
dCAgICAgIHRoaXMuX2NvbnRlbnREZWJ1Z0lEID0gbnVsbDtcblx0ICAgICAgcmV0dXJuO1xuXHQg
ICAgfVxuXHRcblx0ICAgIHZhbGlkYXRlRE9NTmVzdGluZyhudWxsLCBTdHJpbmcoY29udGVudCks
IHRoaXMsIHRoaXMuX2FuY2VzdG9ySW5mbyk7XG5cdCAgICB0aGlzLl9jb250ZW50RGVidWdJRCA9
IGNvbnRlbnREZWJ1Z0lEO1xuXHQgICAgaWYgKGhhc0V4aXN0aW5nQ29udGVudCkge1xuXHQgICAg
ICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVVcGRhdGVDb21wb25lbnQo
Y29udGVudERlYnVnSUQsIGNvbnRlbnQpO1xuXHQgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5k
ZWJ1Z1Rvb2wub25VcGRhdGVDb21wb25lbnQoY29udGVudERlYnVnSUQpO1xuXHQgICAgfSBlbHNl
IHtcblx0ICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uQmVmb3JlTW91bnRD
b21wb25lbnQoY29udGVudERlYnVnSUQsIGNvbnRlbnQsIGRlYnVnSUQpO1xuXHQgICAgICBSZWFj
dEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Nb3VudENvbXBvbmVudChjb250ZW50RGVidWdJ
RCk7XG5cdCAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblNldENoaWxkcmVu
KGRlYnVnSUQsIFtjb250ZW50RGVidWdJRF0pO1xuXHQgICAgfVxuXHQgIH07XG5cdH1cblx0XG5c
dC8vIFRoZXJlIGFyZSBzbyBtYW55IG1lZGlhIGV2ZW50cywgaXQgbWFrZXMgc2Vuc2UgdG8ganVz
dFxuXHQvLyBtYWludGFpbiBhIGxpc3QgcmF0aGVyIHRoYW4gY3JlYXRlIGEgYHRyYXBCdWJibGVk
RXZlbnRgIGZvciBlYWNoXG5cdHZhciBtZWRpYUV2ZW50cyA9IHtcblx0ICB0b3BBYm9ydDogJ2Fi
b3J0Jyxcblx0ICB0b3BDYW5QbGF5OiAnY2FucGxheScsXG5cdCAgdG9wQ2FuUGxheVRocm91Z2g6
ICdjYW5wbGF5dGhyb3VnaCcsXG5cdCAgdG9wRHVyYXRpb25DaGFuZ2U6ICdkdXJhdGlvbmNoYW5n
ZScsXG5cdCAgdG9wRW1wdGllZDogJ2VtcHRpZWQnLFxuXHQgIHRvcEVuY3J5cHRlZDogJ2VuY3J5
cHRlZCcsXG5cdCAgdG9wRW5kZWQ6ICdlbmRlZCcsXG5cdCAgdG9wRXJyb3I6ICdlcnJvcicsXG5c
dCAgdG9wTG9hZGVkRGF0YTogJ2xvYWRlZGRhdGEnLFxuXHQgIHRvcExvYWRlZE1ldGFkYXRhOiAn
bG9hZGVkbWV0YWRhdGEnLFxuXHQgIHRvcExvYWRTdGFydDogJ2xvYWRzdGFydCcsXG5cdCAgdG9w
UGF1c2U6ICdwYXVzZScsXG5cdCAgdG9wUGxheTogJ3BsYXknLFxuXHQgIHRvcFBsYXlpbmc6ICdw
bGF5aW5nJyxcblx0ICB0b3BQcm9ncmVzczogJ3Byb2dyZXNzJyxcblx0ICB0b3BSYXRlQ2hhbmdl
OiAncmF0ZWNoYW5nZScsXG5cdCAgdG9wU2Vla2VkOiAnc2Vla2VkJyxcblx0ICB0b3BTZWVraW5n
OiAnc2Vla2luZycsXG5cdCAgdG9wU3RhbGxlZDogJ3N0YWxsZWQnLFxuXHQgIHRvcFN1c3BlbmQ6
ICdzdXNwZW5kJyxcblx0ICB0b3BUaW1lVXBkYXRlOiAndGltZXVwZGF0ZScsXG5cdCAgdG9wVm9s
dW1lQ2hhbmdlOiAndm9sdW1lY2hhbmdlJyxcblx0ICB0b3BXYWl0aW5nOiAnd2FpdGluZydcblx0
fTtcblx0XG5cdGZ1bmN0aW9uIHRyYWNrSW5wdXRWYWx1ZSgpIHtcblx0ICBpbnB1dFZhbHVlVHJh
Y2tpbmcudHJhY2sodGhpcyk7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHRyYXBCdWJibGVkRXZlbnRz
TG9jYWwoKSB7XG5cdCAgdmFyIGluc3QgPSB0aGlzO1xuXHQgIC8vIElmIGEgY29tcG9uZW50IHJl
bmRlcnMgdG8gbnVsbCBvciBpZiBhbm90aGVyIGNvbXBvbmVudCBmYXRhbHMgYW5kIGNhdXNlc1xu
XHQgIC8vIHRoZSBzdGF0ZSBvZiB0aGUgdHJlZSB0byBiZSBjb3JydXB0ZWQsIGBub2RlYCBoZXJl
IGNhbiBiZSBudWxsLlxuXHQgICFpbnN0Ll9yb290Tm9kZUlEID8gIGZhbHNlID8gaW52YXJpYW50
KGZhbHNlLCAnTXVzdCBiZSBtb3VudGVkIHRvIHRyYXAgZXZlbnRzJykgOiBfcHJvZEludmFyaWFu
dCgnNjMnKSA6IHZvaWQgMDtcblx0ICB2YXIgbm9kZSA9IGdldE5vZGUoaW5zdCk7XG5cdCAgIW5v
ZGUgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICd0cmFwQnViYmxlZEV2ZW50KC4uLik6IFJl
cXVpcmVzIG5vZGUgdG8gYmUgcmVuZGVyZWQuJykgOiBfcHJvZEludmFyaWFudCgnNjQnKSA6IHZv
aWQgMDtcblx0XG5cdCAgc3dpdGNoIChpbnN0Ll90YWcpIHtcblx0ICAgIGNhc2UgJ2lmcmFtZSc6
XG5cdCAgICBjYXNlICdvYmplY3QnOlxuXHQgICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVu
ZXJzID0gW1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KCd0b3BMb2Fk
JywgJ2xvYWQnLCBub2RlKV07XG5cdCAgICAgIGJyZWFrO1xuXHQgICAgY2FzZSAndmlkZW8nOlxu
XHQgICAgY2FzZSAnYXVkaW8nOlxuXHQgICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJz
ID0gW107XG5cdCAgICAgIC8vIENyZWF0ZSBsaXN0ZW5lciBmb3IgZWFjaCBtZWRpYSBldmVudFxu
XHQgICAgICBmb3IgKHZhciBldmVudCBpbiBtZWRpYUV2ZW50cykge1xuXHQgICAgICAgIGlmICht
ZWRpYUV2ZW50cy5oYXNPd25Qcm9wZXJ0eShldmVudCkpIHtcblx0ICAgICAgICAgIGluc3QuX3dy
YXBwZXJTdGF0ZS5saXN0ZW5lcnMucHVzaChSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1
YmJsZWRFdmVudChldmVudCwgbWVkaWFFdmVudHNbZXZlbnRdLCBub2RlKSk7XG5cdCAgICAgICAg
fVxuXHQgICAgICB9XG5cdCAgICAgIGJyZWFrO1xuXHQgICAgY2FzZSAnc291cmNlJzpcblx0ICAg
ICAgaW5zdC5fd3JhcHBlclN0YXRlLmxpc3RlbmVycyA9IFtSZWFjdEJyb3dzZXJFdmVudEVtaXR0
ZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wRXJyb3InLCAnZXJyb3InLCBub2RlKV07XG5cdCAgICAg
IGJyZWFrO1xuXHQgICAgY2FzZSAnaW1nJzpcblx0ICAgICAgaW5zdC5fd3JhcHBlclN0YXRlLmxp
c3RlbmVycyA9IFtSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudCgndG9w
RXJyb3InLCAnZXJyb3InLCBub2RlKSwgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJi
bGVkRXZlbnQoJ3RvcExvYWQnLCAnbG9hZCcsIG5vZGUpXTtcblx0ICAgICAgYnJlYWs7XG5cdCAg
ICBjYXNlICdmb3JtJzpcblx0ICAgICAgaW5zdC5fd3JhcHBlclN0YXRlLmxpc3RlbmVycyA9IFtS
ZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wUmVzZXQnLCAncmVz
ZXQnLCBub2RlKSwgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoJ3Rv
cFN1Ym1pdCcsICdzdWJtaXQnLCBub2RlKV07XG5cdCAgICAgIGJyZWFrO1xuXHQgICAgY2FzZSAn
aW5wdXQnOlxuXHQgICAgY2FzZSAnc2VsZWN0Jzpcblx0ICAgIGNhc2UgJ3RleHRhcmVhJzpcblx0
ICAgICAgaW5zdC5fd3JhcHBlclN0YXRlLmxpc3RlbmVycyA9IFtSZWFjdEJyb3dzZXJFdmVudEVt
aXR0ZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wSW52YWxpZCcsICdpbnZhbGlkJywgbm9kZSldO1xu
XHQgICAgICBicmVhaztcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHBvc3RVcGRhdGVTZWxl
Y3RXcmFwcGVyKCkge1xuXHQgIFJlYWN0RE9NU2VsZWN0LnBvc3RVcGRhdGVXcmFwcGVyKHRoaXMp
O1xuXHR9XG5cdFxuXHQvLyBGb3IgSFRNTCwgY2VydGFpbiB0YWdzIHNob3VsZCBvbWl0IHRoZWly
IGNsb3NlIHRhZy4gV2Uga2VlcCBhIHdoaXRlbGlzdCBmb3Jcblx0Ly8gdGhvc2Ugc3BlY2lhbC1j
YXNlIHRhZ3MuXG5cdFxuXHR2YXIgb21pdHRlZENsb3NlVGFncyA9IHtcblx0ICBhcmVhOiB0cnVl
LFxuXHQgIGJhc2U6IHRydWUsXG5cdCAgYnI6IHRydWUsXG5cdCAgY29sOiB0cnVlLFxuXHQgIGVt
YmVkOiB0cnVlLFxuXHQgIGhyOiB0cnVlLFxuXHQgIGltZzogdHJ1ZSxcblx0ICBpbnB1dDogdHJ1
ZSxcblx0ICBrZXlnZW46IHRydWUsXG5cdCAgbGluazogdHJ1ZSxcblx0ICBtZXRhOiB0cnVlLFxu
XHQgIHBhcmFtOiB0cnVlLFxuXHQgIHNvdXJjZTogdHJ1ZSxcblx0ICB0cmFjazogdHJ1ZSxcblx0
ICB3YnI6IHRydWVcblx0ICAvLyBOT1RFOiBtZW51aXRlbSdzIGNsb3NlIHRhZyBzaG91bGQgYmUg
b21pdHRlZCwgYnV0IHRoYXQgY2F1c2VzIHByb2JsZW1zLlxuXHR9O1xuXHRcblx0dmFyIG5ld2xp
bmVFYXRpbmdUYWdzID0ge1xuXHQgIGxpc3Rpbmc6IHRydWUsXG5cdCAgcHJlOiB0cnVlLFxuXHQg
IHRleHRhcmVhOiB0cnVlXG5cdH07XG5cdFxuXHQvLyBGb3IgSFRNTCwgY2VydGFpbiB0YWdzIGNh
bm5vdCBoYXZlIGNoaWxkcmVuLiBUaGlzIGhhcyB0aGUgc2FtZSBwdXJwb3NlIGFzXG5cdC8vIGBv
bWl0dGVkQ2xvc2VUYWdzYCBleGNlcHQgdGhhdCBgbWVudWl0ZW1gIHNob3VsZCBzdGlsbCBoYXZl
IGl0cyBjbG9zaW5nIHRhZy5cblx0XG5cdHZhciB2b2lkRWxlbWVudFRhZ3MgPSBfYXNzaWduKHtc
blx0ICBtZW51aXRlbTogdHJ1ZVxuXHR9LCBvbWl0dGVkQ2xvc2VUYWdzKTtcblx0XG5cdC8vIFdl
IGFjY2VwdCBhbnkgdGFnIHRvIGJlIHJlbmRlcmVkIGJ1dCBzaW5jZSB0aGlzIGdldHMgaW5qZWN0
ZWQgaW50byBhcmJpdHJhcnlcblx0Ly8gSFRNTCwgd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCBp
dCdzIGEgc2FmZSB0YWcuXG5cdC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy14bWwvI05ULU5h
bWVcblx0XG5cdHZhciBWQUxJRF9UQUdfUkVHRVggPSAvXlthLXpBLVpdW2EtekEtWjpfXFwuXFwt
XFxkXSokLzsgLy8gU2ltcGxpZmllZCBzdWJzZXRcblx0dmFyIHZhbGlkYXRlZFRhZ0NhY2hlID0g
e307XG5cdHZhciBoYXNPd25Qcm9wZXJ0eSA9IHt9Lmhhc093blByb3BlcnR5O1xuXHRcblx0ZnVu
Y3Rpb24gdmFsaWRhdGVEYW5nZXJvdXNUYWcodGFnKSB7XG5cdCAgaWYgKCFoYXNPd25Qcm9wZXJ0
eS5jYWxsKHZhbGlkYXRlZFRhZ0NhY2hlLCB0YWcpKSB7XG5cdCAgICAhVkFMSURfVEFHX1JFR0VY
LnRlc3QodGFnKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0ludmFsaWQgdGFnOiAlcycs
IHRhZykgOiBfcHJvZEludmFyaWFudCgnNjUnLCB0YWcpIDogdm9pZCAwO1xuXHQgICAgdmFsaWRh
dGVkVGFnQ2FjaGVbdGFnXSA9IHRydWU7XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBpc0N1
c3RvbUNvbXBvbmVudCh0YWdOYW1lLCBwcm9wcykge1xuXHQgIHJldHVybiB0YWdOYW1lLmluZGV4
T2YoJy0nKSA+PSAwIHx8IHByb3BzLmlzICE9IG51bGw7XG5cdH1cblx0XG5cdHZhciBnbG9iYWxJ
ZENvdW50ZXIgPSAxO1xuXHRcblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBuZXcgUmVhY3QgY2xhc3Mg
dGhhdCBpcyBpZGVtcG90ZW50IGFuZCBjYXBhYmxlIG9mIGNvbnRhaW5pbmcgb3RoZXJcblx0ICog
UmVhY3QgY29tcG9uZW50cy4gSXQgYWNjZXB0cyBldmVudCBsaXN0ZW5lcnMgYW5kIERPTSBwcm9w
ZXJ0aWVzIHRoYXQgYXJlXG5cdCAqIHZhbGlkIGFjY29yZGluZyB0byBgRE9NUHJvcGVydHlgLlxu
XHQgKlxuXHQgKiAgLSBFdmVudCBsaXN0ZW5lcnM6IGBvbkNsaWNrYCwgYG9uTW91c2VEb3duYCwg
ZXRjLlxuXHQgKiAgLSBET00gcHJvcGVydGllczogYGNsYXNzTmFtZWAsIGBuYW1lYCwgYHRpdGxl
YCwgZXRjLlxuXHQgKlxuXHQgKiBUaGUgYHN0eWxlYCBwcm9wZXJ0eSBmdW5jdGlvbnMgZGlmZmVy
ZW50bHkgZnJvbSB0aGUgRE9NIEFQSS4gSXQgYWNjZXB0cyBhblxuXHQgKiBvYmplY3QgbWFwcGlu
ZyBvZiBzdHlsZSBwcm9wZXJ0aWVzIHRvIHZhbHVlcy5cblx0ICpcblx0ICogQGNvbnN0cnVjdG9y
IFJlYWN0RE9NQ29tcG9uZW50XG5cdCAqIEBleHRlbmRzIFJlYWN0TXVsdGlDaGlsZFxuXHQgKi9c
blx0ZnVuY3Rpb24gUmVhY3RET01Db21wb25lbnQoZWxlbWVudCkge1xuXHQgIHZhciB0YWcgPSBl
bGVtZW50LnR5cGU7XG5cdCAgdmFsaWRhdGVEYW5nZXJvdXNUYWcodGFnKTtcblx0ICB0aGlzLl9j
dXJyZW50RWxlbWVudCA9IGVsZW1lbnQ7XG5cdCAgdGhpcy5fdGFnID0gdGFnLnRvTG93ZXJDYXNl
KCk7XG5cdCAgdGhpcy5fbmFtZXNwYWNlVVJJID0gbnVsbDtcblx0ICB0aGlzLl9yZW5kZXJlZENo
aWxkcmVuID0gbnVsbDtcblx0ICB0aGlzLl9wcmV2aW91c1N0eWxlID0gbnVsbDtcblx0ICB0aGlz
Ll9wcmV2aW91c1N0eWxlQ29weSA9IG51bGw7XG5cdCAgdGhpcy5faG9zdE5vZGUgPSBudWxsO1xu
XHQgIHRoaXMuX2hvc3RQYXJlbnQgPSBudWxsO1xuXHQgIHRoaXMuX3Jvb3ROb2RlSUQgPSAwO1xu
XHQgIHRoaXMuX2RvbUlEID0gMDtcblx0ICB0aGlzLl9ob3N0Q29udGFpbmVySW5mbyA9IG51bGw7
XG5cdCAgdGhpcy5fd3JhcHBlclN0YXRlID0gbnVsbDtcblx0ICB0aGlzLl90b3BMZXZlbFdyYXBw
ZXIgPSBudWxsO1xuXHQgIHRoaXMuX2ZsYWdzID0gMDtcblx0ICBpZiAoZmFsc2UpIHtcblx0ICAg
IHRoaXMuX2FuY2VzdG9ySW5mbyA9IG51bGw7XG5cdCAgICBzZXRBbmRWYWxpZGF0ZUNvbnRlbnRD
aGlsZERldi5jYWxsKHRoaXMsIG51bGwpO1xuXHQgIH1cblx0fVxuXHRcblx0UmVhY3RET01Db21w
b25lbnQuZGlzcGxheU5hbWUgPSAnUmVhY3RET01Db21wb25lbnQnO1xuXHRcblx0UmVhY3RET01D
b21wb25lbnQuTWl4aW4gPSB7XG5cdCAgLyoqXG5cdCAgICogR2VuZXJhdGVzIHJvb3QgdGFnIG1h
cmt1cCB0aGVuIHJlY3Vyc2VzLiBUaGlzIG1ldGhvZCBoYXMgc2lkZSBlZmZlY3RzIGFuZFxuXHQg
ICAqIGlzIG5vdCBpZGVtcG90ZW50LlxuXHQgICAqXG5cdCAgICogQGludGVybmFsXG5cdCAgICog
QHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5nVHJh
bnNhY3Rpb259IHRyYW5zYWN0aW9uXG5cdCAgICogQHBhcmFtIHs/UmVhY3RET01Db21wb25lbnR9
IHRoZSBwYXJlbnQgY29tcG9uZW50IGluc3RhbmNlXG5cdCAgICogQHBhcmFtIHs/b2JqZWN0fSBp
bmZvIGFib3V0IHRoZSBob3N0IGNvbnRhaW5lclxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBjb250
ZXh0XG5cdCAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgY29tcHV0ZWQgbWFya3VwLlxuXHQgICAq
L1xuXHQgIG1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQs
IGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0KSB7XG5cdCAgICB0aGlzLl9yb290Tm9kZUlEID0g
Z2xvYmFsSWRDb3VudGVyKys7XG5cdCAgICB0aGlzLl9kb21JRCA9IGhvc3RDb250YWluZXJJbmZv
Ll9pZENvdW50ZXIrKztcblx0ICAgIHRoaXMuX2hvc3RQYXJlbnQgPSBob3N0UGFyZW50O1xuXHQg
ICAgdGhpcy5faG9zdENvbnRhaW5lckluZm8gPSBob3N0Q29udGFpbmVySW5mbztcblx0XG5cdCAg
ICB2YXIgcHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztcblx0XG5cdCAgICBzd2l0
Y2ggKHRoaXMuX3RhZykge1xuXHQgICAgICBjYXNlICdhdWRpbyc6XG5cdCAgICAgIGNhc2UgJ2Zv
cm0nOlxuXHQgICAgICBjYXNlICdpZnJhbWUnOlxuXHQgICAgICBjYXNlICdpbWcnOlxuXHQgICAg
ICBjYXNlICdsaW5rJzpcblx0ICAgICAgY2FzZSAnb2JqZWN0Jzpcblx0ICAgICAgY2FzZSAnc291
cmNlJzpcblx0ICAgICAgY2FzZSAndmlkZW8nOlxuXHQgICAgICAgIHRoaXMuX3dyYXBwZXJTdGF0
ZSA9IHtcblx0ICAgICAgICAgIGxpc3RlbmVyczogbnVsbFxuXHQgICAgICAgIH07XG5cdCAgICAg
ICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZSh0cmFwQnViYmxlZEV2
ZW50c0xvY2FsLCB0aGlzKTtcblx0ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSAnaW5wdXQn
OlxuXHQgICAgICAgIFJlYWN0RE9NSW5wdXQubW91bnRXcmFwcGVyKHRoaXMsIHByb3BzLCBob3N0
UGFyZW50KTtcblx0ICAgICAgICBwcm9wcyA9IFJlYWN0RE9NSW5wdXQuZ2V0SG9zdFByb3BzKHRo
aXMsIHByb3BzKTtcblx0ICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5l
bnF1ZXVlKHRyYWNrSW5wdXRWYWx1ZSwgdGhpcyk7XG5cdCAgICAgICAgdHJhbnNhY3Rpb24uZ2V0
UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZSh0cmFwQnViYmxlZEV2ZW50c0xvY2FsLCB0aGlzKTtc
blx0ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSAnb3B0aW9uJzpcblx0ICAgICAgICBSZWFj
dERPTU9wdGlvbi5tb3VudFdyYXBwZXIodGhpcywgcHJvcHMsIGhvc3RQYXJlbnQpO1xuXHQgICAg
ICAgIHByb3BzID0gUmVhY3RET01PcHRpb24uZ2V0SG9zdFByb3BzKHRoaXMsIHByb3BzKTtcblx0
ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSAnc2VsZWN0Jzpcblx0ICAgICAgICBSZWFjdERP
TVNlbGVjdC5tb3VudFdyYXBwZXIodGhpcywgcHJvcHMsIGhvc3RQYXJlbnQpO1xuXHQgICAgICAg
IHByb3BzID0gUmVhY3RET01TZWxlY3QuZ2V0SG9zdFByb3BzKHRoaXMsIHByb3BzKTtcblx0ICAg
ICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHRyYXBCdWJibGVk
RXZlbnRzTG9jYWwsIHRoaXMpO1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICd0ZXh0
YXJlYSc6XG5cdCAgICAgICAgUmVhY3RET01UZXh0YXJlYS5tb3VudFdyYXBwZXIodGhpcywgcHJv
cHMsIGhvc3RQYXJlbnQpO1xuXHQgICAgICAgIHByb3BzID0gUmVhY3RET01UZXh0YXJlYS5nZXRI
b3N0UHJvcHModGhpcywgcHJvcHMpO1xuXHQgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91
bnRSZWFkeSgpLmVucXVldWUodHJhY2tJbnB1dFZhbHVlLCB0aGlzKTtcblx0ICAgICAgICB0cmFu
c2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHRyYXBCdWJibGVkRXZlbnRzTG9j
YWwsIHRoaXMpO1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgfVxuXHRcblx0ICAgIGFzc2VydFZh
bGlkUHJvcHModGhpcywgcHJvcHMpO1xuXHRcblx0ICAgIC8vIFdlIGNyZWF0ZSB0YWdzIGluIHRo
ZSBuYW1lc3BhY2Ugb2YgdGhlaXIgcGFyZW50IGNvbnRhaW5lciwgZXhjZXB0IEhUTUxcblx0ICAg
IC8vIHRhZ3MgZ2V0IG5vIG5hbWVzcGFjZS5cblx0ICAgIHZhciBuYW1lc3BhY2VVUkk7XG5cdCAg
ICB2YXIgcGFyZW50VGFnO1xuXHQgICAgaWYgKGhvc3RQYXJlbnQgIT0gbnVsbCkge1xuXHQgICAg
ICBuYW1lc3BhY2VVUkkgPSBob3N0UGFyZW50Ll9uYW1lc3BhY2VVUkk7XG5cdCAgICAgIHBhcmVu
dFRhZyA9IGhvc3RQYXJlbnQuX3RhZztcblx0ICAgIH0gZWxzZSBpZiAoaG9zdENvbnRhaW5lcklu
Zm8uX3RhZykge1xuXHQgICAgICBuYW1lc3BhY2VVUkkgPSBob3N0Q29udGFpbmVySW5mby5fbmFt
ZXNwYWNlVVJJO1xuXHQgICAgICBwYXJlbnRUYWcgPSBob3N0Q29udGFpbmVySW5mby5fdGFnO1xu
XHQgICAgfVxuXHQgICAgaWYgKG5hbWVzcGFjZVVSSSA9PSBudWxsIHx8IG5hbWVzcGFjZVVSSSA9
PT0gRE9NTmFtZXNwYWNlcy5zdmcgJiYgcGFyZW50VGFnID09PSAnZm9yZWlnbm9iamVjdCcpIHtc
blx0ICAgICAgbmFtZXNwYWNlVVJJID0gRE9NTmFtZXNwYWNlcy5odG1sO1xuXHQgICAgfVxuXHQg
ICAgaWYgKG5hbWVzcGFjZVVSSSA9PT0gRE9NTmFtZXNwYWNlcy5odG1sKSB7XG5cdCAgICAgIGlm
ICh0aGlzLl90YWcgPT09ICdzdmcnKSB7XG5cdCAgICAgICAgbmFtZXNwYWNlVVJJID0gRE9NTmFt
ZXNwYWNlcy5zdmc7XG5cdCAgICAgIH0gZWxzZSBpZiAodGhpcy5fdGFnID09PSAnbWF0aCcpIHtc
blx0ICAgICAgICBuYW1lc3BhY2VVUkkgPSBET01OYW1lc3BhY2VzLm1hdGhtbDtcblx0ICAgICAg
fVxuXHQgICAgfVxuXHQgICAgdGhpcy5fbmFtZXNwYWNlVVJJID0gbmFtZXNwYWNlVVJJO1xuXHRc
blx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICB2YXIgcGFyZW50SW5mbztcblx0ICAgICAgaWYg
KGhvc3RQYXJlbnQgIT0gbnVsbCkge1xuXHQgICAgICAgIHBhcmVudEluZm8gPSBob3N0UGFyZW50
Ll9hbmNlc3RvckluZm87XG5cdCAgICAgIH0gZWxzZSBpZiAoaG9zdENvbnRhaW5lckluZm8uX3Rh
Zykge1xuXHQgICAgICAgIHBhcmVudEluZm8gPSBob3N0Q29udGFpbmVySW5mby5fYW5jZXN0b3JJ
bmZvO1xuXHQgICAgICB9XG5cdCAgICAgIGlmIChwYXJlbnRJbmZvKSB7XG5cdCAgICAgICAgLy8g
cGFyZW50SW5mbyBzaG91bGQgYWx3YXlzIGJlIHByZXNlbnQgZXhjZXB0IGZvciB0aGUgdG9wLWxl
dmVsXG5cdCAgICAgICAgLy8gY29tcG9uZW50IHdoZW4gc2VydmVyIHJlbmRlcmluZ1xuXHQgICAg
ICAgIHZhbGlkYXRlRE9NTmVzdGluZyh0aGlzLl90YWcsIG51bGwsIHRoaXMsIHBhcmVudEluZm8p
O1xuXHQgICAgICB9XG5cdCAgICAgIHRoaXMuX2FuY2VzdG9ySW5mbyA9IHZhbGlkYXRlRE9NTmVz
dGluZy51cGRhdGVkQW5jZXN0b3JJbmZvKHBhcmVudEluZm8sIHRoaXMuX3RhZywgdGhpcyk7XG5c
dCAgICB9XG5cdFxuXHQgICAgdmFyIG1vdW50SW1hZ2U7XG5cdCAgICBpZiAodHJhbnNhY3Rpb24u
dXNlQ3JlYXRlRWxlbWVudCkge1xuXHQgICAgICB2YXIgb3duZXJEb2N1bWVudCA9IGhvc3RDb250
YWluZXJJbmZvLl9vd25lckRvY3VtZW50O1xuXHQgICAgICB2YXIgZWw7XG5cdCAgICAgIGlmIChu
YW1lc3BhY2VVUkkgPT09IERPTU5hbWVzcGFjZXMuaHRtbCkge1xuXHQgICAgICAgIGlmICh0aGlz
Ll90YWcgPT09ICdzY3JpcHQnKSB7XG5cdCAgICAgICAgICAvLyBDcmVhdGUgdGhlIHNjcmlwdCB2
aWEgLmlubmVySFRNTCBzbyBpdHMgXCJwYXJzZXItaW5zZXJ0ZWRcIiBmbGFnIGlzXG5cdCAgICAg
ICAgICAvLyBzZXQgdG8gdHJ1ZSBhbmQgaXQgZG9lcyBub3QgZXhlY3V0ZVxuXHQgICAgICAgICAg
dmFyIGRpdiA9IG93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cdCAgICAgICAg
ICB2YXIgdHlwZSA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG5cdCAgICAgICAgICBkaXYu
aW5uZXJIVE1MID0gJzwnICsgdHlwZSArICc+PC8nICsgdHlwZSArICc+Jztcblx0ICAgICAgICAg
IGVsID0gZGl2LnJlbW92ZUNoaWxkKGRpdi5maXJzdENoaWxkKTtcblx0ICAgICAgICB9IGVsc2Ug
aWYgKHByb3BzLmlzKSB7XG5cdCAgICAgICAgICBlbCA9IG93bmVyRG9jdW1lbnQuY3JlYXRlRWxl
bWVudCh0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlLCBwcm9wcy5pcyk7XG5cdCAgICAgICAgfSBl
bHNlIHtcblx0ICAgICAgICAgIC8vIFNlcGFyYXRlIGVsc2UgYnJhbmNoIGluc3RlYWQgb2YgdXNp
bmcgYHByb3BzLmlzIHx8IHVuZGVmaW5lZGAgYWJvdmUgYmVjdWFzZSBvZiBhIEZpcmVmb3ggYnVn
LlxuXHQgICAgICAgICAgLy8gU2VlIGRpc2N1c3Npb24gaW4gaHR0cHM6Ly9naXRodWIuY29tL2Zh
Y2Vib29rL3JlYWN0L3B1bGwvNjg5NlxuXHQgICAgICAgICAgLy8gYW5kIGRpc2N1c3Npb24gaW4g
aHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3NjI0MFxuXHQg
ICAgICAgICAgZWwgPSBvd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGhpcy5fY3VycmVudEVs
ZW1lbnQudHlwZSk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIGVs
ID0gb3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50TlMobmFtZXNwYWNlVVJJLCB0aGlzLl9jdXJy
ZW50RWxlbWVudC50eXBlKTtcblx0ICAgICAgfVxuXHQgICAgICBSZWFjdERPTUNvbXBvbmVudFRy
ZWUucHJlY2FjaGVOb2RlKHRoaXMsIGVsKTtcblx0ICAgICAgdGhpcy5fZmxhZ3MgfD0gRmxhZ3Mu
aGFzQ2FjaGVkQ2hpbGROb2Rlcztcblx0ICAgICAgaWYgKCF0aGlzLl9ob3N0UGFyZW50KSB7XG5c
dCAgICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldEF0dHJpYnV0ZUZvclJvb3QoZWwpO1xu
XHQgICAgICB9XG5cdCAgICAgIHRoaXMuX3VwZGF0ZURPTVByb3BlcnRpZXMobnVsbCwgcHJvcHMs
IHRyYW5zYWN0aW9uKTtcblx0ICAgICAgdmFyIGxhenlUcmVlID0gRE9NTGF6eVRyZWUoZWwpO1xu
XHQgICAgICB0aGlzLl9jcmVhdGVJbml0aWFsQ2hpbGRyZW4odHJhbnNhY3Rpb24sIHByb3BzLCBj
b250ZXh0LCBsYXp5VHJlZSk7XG5cdCAgICAgIG1vdW50SW1hZ2UgPSBsYXp5VHJlZTtcblx0ICAg
IH0gZWxzZSB7XG5cdCAgICAgIHZhciB0YWdPcGVuID0gdGhpcy5fY3JlYXRlT3BlblRhZ01hcmt1
cEFuZFB1dExpc3RlbmVycyh0cmFuc2FjdGlvbiwgcHJvcHMpO1xuXHQgICAgICB2YXIgdGFnQ29u
dGVudCA9IHRoaXMuX2NyZWF0ZUNvbnRlbnRNYXJrdXAodHJhbnNhY3Rpb24sIHByb3BzLCBjb250
ZXh0KTtcblx0ICAgICAgaWYgKCF0YWdDb250ZW50ICYmIG9taXR0ZWRDbG9zZVRhZ3NbdGhpcy5f
dGFnXSkge1xuXHQgICAgICAgIG1vdW50SW1hZ2UgPSB0YWdPcGVuICsgJy8+Jztcblx0ICAgICAg
fSBlbHNlIHtcblx0ICAgICAgICBtb3VudEltYWdlID0gdGFnT3BlbiArICc+JyArIHRhZ0NvbnRl
bnQgKyAnPC8nICsgdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSArICc+Jztcblx0ICAgICAgfVxu
XHQgICAgfVxuXHRcblx0ICAgIHN3aXRjaCAodGhpcy5fdGFnKSB7XG5cdCAgICAgIGNhc2UgJ2lu
cHV0Jzpcblx0ICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVl
KGlucHV0UG9zdE1vdW50LCB0aGlzKTtcblx0ICAgICAgICBpZiAocHJvcHMuYXV0b0ZvY3VzKSB7
XG5cdCAgICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKEF1
dG9Gb2N1c1V0aWxzLmZvY3VzRE9NQ29tcG9uZW50LCB0aGlzKTtcblx0ICAgICAgICB9XG5cdCAg
ICAgICAgYnJlYWs7XG5cdCAgICAgIGNhc2UgJ3RleHRhcmVhJzpcblx0ICAgICAgICB0cmFuc2Fj
dGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHRleHRhcmVhUG9zdE1vdW50LCB0aGlz
KTtcblx0ICAgICAgICBpZiAocHJvcHMuYXV0b0ZvY3VzKSB7XG5cdCAgICAgICAgICB0cmFuc2Fj
dGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKEF1dG9Gb2N1c1V0aWxzLmZvY3VzRE9N
Q29tcG9uZW50LCB0aGlzKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAg
IGNhc2UgJ3NlbGVjdCc6XG5cdCAgICAgICAgaWYgKHByb3BzLmF1dG9Gb2N1cykge1xuXHQgICAg
ICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShBdXRvRm9jdXNV
dGlscy5mb2N1c0RPTUNvbXBvbmVudCwgdGhpcyk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGJy
ZWFrO1xuXHQgICAgICBjYXNlICdidXR0b24nOlxuXHQgICAgICAgIGlmIChwcm9wcy5hdXRvRm9j
dXMpIHtcblx0ICAgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVl
dWUoQXV0b0ZvY3VzVXRpbHMuZm9jdXNET01Db21wb25lbnQsIHRoaXMpO1xuXHQgICAgICAgIH1c
blx0ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSAnb3B0aW9uJzpcblx0ICAgICAgICB0cmFu
c2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKG9wdGlvblBvc3RNb3VudCwgdGhp
cyk7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICB9XG5cdFxuXHQgICAgcmV0dXJuIG1vdW50SW1h
Z2U7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogQ3JlYXRlcyBtYXJrdXAgZm9yIHRoZSBv
cGVuIHRhZyBhbmQgYWxsIGF0dHJpYnV0ZXMuXG5cdCAgICpcblx0ICAgKiBUaGlzIG1ldGhvZCBo
YXMgc2lkZSBlZmZlY3RzIGJlY2F1c2UgZXZlbnRzIGdldCByZWdpc3RlcmVkLlxuXHQgICAqXG5c
dCAgICogSXRlcmF0aW5nIG92ZXIgb2JqZWN0IHByb3BlcnRpZXMgaXMgZmFzdGVyIHRoYW4gaXRl
cmF0aW5nIG92ZXIgYXJyYXlzLlxuXHQgICAqIEBzZWUgaHR0cDovL2pzcGVyZi5jb20vb2JqLXZz
LWFyci1pdGVyYXRpb25cblx0ICAgKlxuXHQgICAqIEBwcml2YXRlXG5cdCAgICogQHBhcmFtIHtS
ZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259
IHRyYW5zYWN0aW9uXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IHByb3BzXG5cdCAgICogQHJldHVy
biB7c3RyaW5nfSBNYXJrdXAgb2Ygb3BlbmluZyB0YWcuXG5cdCAgICovXG5cdCAgX2NyZWF0ZU9w
ZW5UYWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnM6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgcHJvcHMp
IHtcblx0ICAgIHZhciByZXQgPSAnPCcgKyB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlO1xuXHRc
blx0ICAgIGZvciAodmFyIHByb3BLZXkgaW4gcHJvcHMpIHtcblx0ICAgICAgaWYgKCFwcm9wcy5o
YXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkge1xuXHQgICAgICAgIGNvbnRpbnVlO1xuXHQgICAgICB9
XG5cdCAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wS2V5XTtcblx0ICAgICAgaWYgKHBy
b3BWYWx1ZSA9PSBudWxsKSB7XG5cdCAgICAgICAgY29udGludWU7XG5cdCAgICAgIH1cblx0ICAg
ICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzLmhhc093blByb3BlcnR5KHByb3BLZXkpKSB7
XG5cdCAgICAgICAgaWYgKHByb3BWYWx1ZSkge1xuXHQgICAgICAgICAgZW5xdWV1ZVB1dExpc3Rl
bmVyKHRoaXMsIHByb3BLZXksIHByb3BWYWx1ZSwgdHJhbnNhY3Rpb24pO1xuXHQgICAgICAgIH1c
blx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICBpZiAocHJvcEtleSA9PT0gU1RZTEUpIHtcblx0
ICAgICAgICAgIGlmIChwcm9wVmFsdWUpIHtcblx0ICAgICAgICAgICAgaWYgKGZhbHNlKSB7XG5c
dCAgICAgICAgICAgICAgLy8gU2VlIGBfdXBkYXRlRE9NUHJvcGVydGllc2AuIHN0eWxlIGJsb2Nr
XG5cdCAgICAgICAgICAgICAgdGhpcy5fcHJldmlvdXNTdHlsZSA9IHByb3BWYWx1ZTtcblx0ICAg
ICAgICAgICAgfVxuXHQgICAgICAgICAgICBwcm9wVmFsdWUgPSB0aGlzLl9wcmV2aW91c1N0eWxl
Q29weSA9IF9hc3NpZ24oe30sIHByb3BzLnN0eWxlKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAg
ICAgIHByb3BWYWx1ZSA9IENTU1Byb3BlcnR5T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JTdHls
ZXMocHJvcFZhbHVlLCB0aGlzKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgdmFyIG1hcmt1cCA9
IG51bGw7XG5cdCAgICAgICAgaWYgKHRoaXMuX3RhZyAhPSBudWxsICYmIGlzQ3VzdG9tQ29tcG9u
ZW50KHRoaXMuX3RhZywgcHJvcHMpKSB7XG5cdCAgICAgICAgICBpZiAoIVJFU0VSVkVEX1BST1BT
Lmhhc093blByb3BlcnR5KHByb3BLZXkpKSB7XG5cdCAgICAgICAgICAgIG1hcmt1cCA9IERPTVBy
b3BlcnR5T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JDdXN0b21BdHRyaWJ1dGUocHJvcEtleSwg
cHJvcFZhbHVlKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAg
ICAgbWFya3VwID0gRE9NUHJvcGVydHlPcGVyYXRpb25zLmNyZWF0ZU1hcmt1cEZvclByb3BlcnR5
KHByb3BLZXksIHByb3BWYWx1ZSk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGlmIChtYXJrdXAp
IHtcblx0ICAgICAgICAgIHJldCArPSAnICcgKyBtYXJrdXA7XG5cdCAgICAgICAgfVxuXHQgICAg
ICB9XG5cdCAgICB9XG5cdFxuXHQgICAgLy8gRm9yIHN0YXRpYyBwYWdlcywgbm8gbmVlZCB0byBw
dXQgUmVhY3QgSUQgYW5kIGNoZWNrc3VtLiBTYXZlcyBsb3RzIG9mXG5cdCAgICAvLyBieXRlcy5c
blx0ICAgIGlmICh0cmFuc2FjdGlvbi5yZW5kZXJUb1N0YXRpY01hcmt1cCkge1xuXHQgICAgICBy
ZXR1cm4gcmV0O1xuXHQgICAgfVxuXHRcblx0ICAgIGlmICghdGhpcy5faG9zdFBhcmVudCkge1xu
XHQgICAgICByZXQgKz0gJyAnICsgRE9NUHJvcGVydHlPcGVyYXRpb25zLmNyZWF0ZU1hcmt1cEZv
clJvb3QoKTtcblx0ICAgIH1cblx0ICAgIHJldCArPSAnICcgKyBET01Qcm9wZXJ0eU9wZXJhdGlv
bnMuY3JlYXRlTWFya3VwRm9ySUQodGhpcy5fZG9tSUQpO1xuXHQgICAgcmV0dXJuIHJldDtcblx0
ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgdGhlIGNvbnRlbnQg
YmV0d2VlbiB0aGUgdGFncy5cblx0ICAgKlxuXHQgICAqIEBwcml2YXRlXG5cdCAgICogQHBhcmFt
IHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rp
b259IHRyYW5zYWN0aW9uXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IHByb3BzXG5cdCAgICogQHBh
cmFtIHtvYmplY3R9IGNvbnRleHRcblx0ICAgKiBAcmV0dXJuIHtzdHJpbmd9IENvbnRlbnQgbWFy
a3VwLlxuXHQgICAqL1xuXHQgIF9jcmVhdGVDb250ZW50TWFya3VwOiBmdW5jdGlvbiAodHJhbnNh
Y3Rpb24sIHByb3BzLCBjb250ZXh0KSB7XG5cdCAgICB2YXIgcmV0ID0gJyc7XG5cdFxuXHQgICAg
Ly8gSW50ZW50aW9uYWwgdXNlIG9mICE9IHRvIGF2b2lkIGNhdGNoaW5nIHplcm8vZmFsc2UuXG5c
dCAgICB2YXIgaW5uZXJIVE1MID0gcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw7XG5cdCAg
ICBpZiAoaW5uZXJIVE1MICE9IG51bGwpIHtcblx0ICAgICAgaWYgKGlubmVySFRNTC5fX2h0bWwg
IT0gbnVsbCkge1xuXHQgICAgICAgIHJldCA9IGlubmVySFRNTC5fX2h0bWw7XG5cdCAgICAgIH1c
blx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHZhciBjb250ZW50VG9Vc2UgPSBDT05URU5UX1RZUEVT
W3R5cGVvZiBwcm9wcy5jaGlsZHJlbl0gPyBwcm9wcy5jaGlsZHJlbiA6IG51bGw7XG5cdCAgICAg
IHZhciBjaGlsZHJlblRvVXNlID0gY29udGVudFRvVXNlICE9IG51bGwgPyBudWxsIDogcHJvcHMu
Y2hpbGRyZW47XG5cdCAgICAgIGlmIChjb250ZW50VG9Vc2UgIT0gbnVsbCkge1xuXHQgICAgICAg
IC8vIFRPRE86IFZhbGlkYXRlIHRoYXQgdGV4dCBpcyBhbGxvd2VkIGFzIGEgY2hpbGQgb2YgdGhp
cyBub2RlXG5cdCAgICAgICAgcmV0ID0gZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyKGNvbnRl
bnRUb1VzZSk7XG5cdCAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICBzZXRBbmRWYWxp
ZGF0ZUNvbnRlbnRDaGlsZERldi5jYWxsKHRoaXMsIGNvbnRlbnRUb1VzZSk7XG5cdCAgICAgICAg
fVxuXHQgICAgICB9IGVsc2UgaWYgKGNoaWxkcmVuVG9Vc2UgIT0gbnVsbCkge1xuXHQgICAgICAg
IHZhciBtb3VudEltYWdlcyA9IHRoaXMubW91bnRDaGlsZHJlbihjaGlsZHJlblRvVXNlLCB0cmFu
c2FjdGlvbiwgY29udGV4dCk7XG5cdCAgICAgICAgcmV0ID0gbW91bnRJbWFnZXMuam9pbignJyk7
XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIGlmIChuZXdsaW5lRWF0aW5nVGFnc1t0aGlzLl90
YWddICYmIHJldC5jaGFyQXQoMCkgPT09ICdcXG4nKSB7XG5cdCAgICAgIC8vIHRleHQvaHRtbCBp
Z25vcmVzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlc2UgdGFncyBpZiBpdCdzIGEgbmV3bGlu
ZVxuXHQgICAgICAvLyBQcmVmZXIgdG8gYnJlYWsgYXBwbGljYXRpb24veG1sIG92ZXIgdGV4dC9o
dG1sIChmb3Igbm93KSBieSBhZGRpbmdcblx0ICAgICAgLy8gYSBuZXdsaW5lIHNwZWNpZmljYWxs
eSB0byBnZXQgZWF0ZW4gYnkgdGhlIHBhcnNlci4gKEFsdGVybmF0ZWx5IGZvclxuXHQgICAgICAv
LyB0ZXh0YXJlYXMsIHJlcGxhY2luZyBcIl5cXG5cIiB3aXRoIFwiXFxyXFxuXCIgZG9lc24ndCBn
ZXQgZWF0ZW4sIGFuZCB0aGUgZmlyc3Rcblx0ICAgICAgLy8gXFxyIGlzIG5vcm1hbGl6ZWQgb3V0
IGJ5IEhUTUxUZXh0QXJlYUVsZW1lbnQjdmFsdWUuKVxuXHQgICAgICAvLyBTZWU6IDxodHRwOi8v
d3d3LnczLm9yZy9UUi9odG1sLXBvbHlnbG90LyNuZXdsaW5lcy1pbi10ZXh0YXJlYS1hbmQtcHJl
PlxuXHQgICAgICAvLyBTZWU6IDxodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9zeW50YXguaHRt
bCNlbGVtZW50LXJlc3RyaWN0aW9ucz5cblx0ICAgICAgLy8gU2VlOiA8aHR0cDovL3d3dy53My5v
cmcvVFIvaHRtbDUvc3ludGF4Lmh0bWwjbmV3bGluZXM+XG5cdCAgICAgIC8vIFNlZTogUGFyc2lu
ZyBvZiBcInRleHRhcmVhXCIgXCJsaXN0aW5nXCIgYW5kIFwicHJlXCIgZWxlbWVudHNcblx0ICAg
ICAgLy8gIGZyb20gPGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3N5bnRheC5odG1sI3BhcnNp
bmctbWFpbi1pbmJvZHk+XG5cdCAgICAgIHJldHVybiAnXFxuJyArIHJldDtcblx0ICAgIH0gZWxz
ZSB7XG5cdCAgICAgIHJldHVybiByZXQ7XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgX2NyZWF0
ZUluaXRpYWxDaGlsZHJlbjogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBwcm9wcywgY29udGV4dCwg
bGF6eVRyZWUpIHtcblx0ICAgIC8vIEludGVudGlvbmFsIHVzZSBvZiAhPSB0byBhdm9pZCBjYXRj
aGluZyB6ZXJvL2ZhbHNlLlxuXHQgICAgdmFyIGlubmVySFRNTCA9IHByb3BzLmRhbmdlcm91c2x5
U2V0SW5uZXJIVE1MO1xuXHQgICAgaWYgKGlubmVySFRNTCAhPSBudWxsKSB7XG5cdCAgICAgIGlm
IChpbm5lckhUTUwuX19odG1sICE9IG51bGwpIHtcblx0ICAgICAgICBET01MYXp5VHJlZS5xdWV1
ZUhUTUwobGF6eVRyZWUsIGlubmVySFRNTC5fX2h0bWwpO1xuXHQgICAgICB9XG5cdCAgICB9IGVs
c2Uge1xuXHQgICAgICB2YXIgY29udGVudFRvVXNlID0gQ09OVEVOVF9UWVBFU1t0eXBlb2YgcHJv
cHMuY2hpbGRyZW5dID8gcHJvcHMuY2hpbGRyZW4gOiBudWxsO1xuXHQgICAgICB2YXIgY2hpbGRy
ZW5Ub1VzZSA9IGNvbnRlbnRUb1VzZSAhPSBudWxsID8gbnVsbCA6IHByb3BzLmNoaWxkcmVuO1xu
XHQgICAgICAvLyBUT0RPOiBWYWxpZGF0ZSB0aGF0IHRleHQgaXMgYWxsb3dlZCBhcyBhIGNoaWxk
IG9mIHRoaXMgbm9kZVxuXHQgICAgICBpZiAoY29udGVudFRvVXNlICE9IG51bGwpIHtcblx0ICAg
ICAgICAvLyBBdm9pZCBzZXR0aW5nIHRleHRDb250ZW50IHdoZW4gdGhlIHRleHQgaXMgZW1wdHku
IEluIElFMTEgc2V0dGluZ1xuXHQgICAgICAgIC8vIHRleHRDb250ZW50IG9uIGEgdGV4dCBhcmVh
IHdpbGwgY2F1c2UgdGhlIHBsYWNlaG9sZGVyIHRvIG5vdFxuXHQgICAgICAgIC8vIHNob3cgd2l0
aGluIHRoZSB0ZXh0YXJlYSB1bnRpbCBpdCBoYXMgYmVlbiBmb2N1c2VkIGFuZCBibHVycmVkIGFn
YWluLlxuXHQgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1
ZXMvNjczMSNpc3N1ZWNvbW1lbnQtMjU0ODc0NTUzXG5cdCAgICAgICAgaWYgKGNvbnRlbnRUb1Vz
ZSAhPT0gJycpIHtcblx0ICAgICAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgICAgICBzZXRB
bmRWYWxpZGF0ZUNvbnRlbnRDaGlsZERldi5jYWxsKHRoaXMsIGNvbnRlbnRUb1VzZSk7XG5cdCAg
ICAgICAgICB9XG5cdCAgICAgICAgICBET01MYXp5VHJlZS5xdWV1ZVRleHQobGF6eVRyZWUsIGNv
bnRlbnRUb1VzZSk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9IGVsc2UgaWYgKGNoaWxkcmVuVG9V
c2UgIT0gbnVsbCkge1xuXHQgICAgICAgIHZhciBtb3VudEltYWdlcyA9IHRoaXMubW91bnRDaGls
ZHJlbihjaGlsZHJlblRvVXNlLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG5cdCAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBtb3VudEltYWdlcy5sZW5ndGg7IGkrKykge1xuXHQgICAgICAgICAg
RE9NTGF6eVRyZWUucXVldWVDaGlsZChsYXp5VHJlZSwgbW91bnRJbWFnZXNbaV0pO1xuXHQgICAg
ICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFJl
Y2VpdmVzIGEgbmV4dCBlbGVtZW50IGFuZCB1cGRhdGVzIHRoZSBjb21wb25lbnQuXG5cdCAgICpc
blx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1l
bnRcblx0ICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJS
ZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cblx0ICAgKiBAcGFyYW0ge29iamVjdH0g
Y29udGV4dFxuXHQgICAqL1xuXHQgIHJlY2VpdmVDb21wb25lbnQ6IGZ1bmN0aW9uIChuZXh0RWxl
bWVudCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcblx0ICAgIHZhciBwcmV2RWxlbWVudCA9IHRo
aXMuX2N1cnJlbnRFbGVtZW50O1xuXHQgICAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBuZXh0RWxl
bWVudDtcblx0ICAgIHRoaXMudXBkYXRlQ29tcG9uZW50KHRyYW5zYWN0aW9uLCBwcmV2RWxlbWVu
dCwgbmV4dEVsZW1lbnQsIGNvbnRleHQpO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFVw
ZGF0ZXMgYSBET00gY29tcG9uZW50IGFmdGVyIGl0IGhhcyBhbHJlYWR5IGJlZW4gYWxsb2NhdGVk
IGFuZFxuXHQgICAqIGF0dGFjaGVkIHRvIHRoZSBET00uIFJlY29uY2lsZXMgdGhlIHJvb3QgRE9N
IG5vZGUsIHRoZW4gcmVjdXJzZXMuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0UmVjb25j
aWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG5cdCAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9
IHByZXZFbGVtZW50XG5cdCAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50XG5c
dCAgICogQGludGVybmFsXG5cdCAgICogQG92ZXJyaWRhYmxlXG5cdCAgICovXG5cdCAgdXBkYXRl
Q29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIHByZXZFbGVtZW50LCBuZXh0RWxlbWVu
dCwgY29udGV4dCkge1xuXHQgICAgdmFyIGxhc3RQcm9wcyA9IHByZXZFbGVtZW50LnByb3BzO1xu
XHQgICAgdmFyIG5leHRQcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXHRcblx0
ICAgIHN3aXRjaCAodGhpcy5fdGFnKSB7XG5cdCAgICAgIGNhc2UgJ2lucHV0Jzpcblx0ICAgICAg
ICBsYXN0UHJvcHMgPSBSZWFjdERPTUlucHV0LmdldEhvc3RQcm9wcyh0aGlzLCBsYXN0UHJvcHMp
O1xuXHQgICAgICAgIG5leHRQcm9wcyA9IFJlYWN0RE9NSW5wdXQuZ2V0SG9zdFByb3BzKHRoaXMs
IG5leHRQcm9wcyk7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIGNhc2UgJ29wdGlvbic6XG5c
dCAgICAgICAgbGFzdFByb3BzID0gUmVhY3RET01PcHRpb24uZ2V0SG9zdFByb3BzKHRoaXMsIGxh
c3RQcm9wcyk7XG5cdCAgICAgICAgbmV4dFByb3BzID0gUmVhY3RET01PcHRpb24uZ2V0SG9zdFBy
b3BzKHRoaXMsIG5leHRQcm9wcyk7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIGNhc2UgJ3Nl
bGVjdCc6XG5cdCAgICAgICAgbGFzdFByb3BzID0gUmVhY3RET01TZWxlY3QuZ2V0SG9zdFByb3Bz
KHRoaXMsIGxhc3RQcm9wcyk7XG5cdCAgICAgICAgbmV4dFByb3BzID0gUmVhY3RET01TZWxlY3Qu
Z2V0SG9zdFByb3BzKHRoaXMsIG5leHRQcm9wcyk7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAg
IGNhc2UgJ3RleHRhcmVhJzpcblx0ICAgICAgICBsYXN0UHJvcHMgPSBSZWFjdERPTVRleHRhcmVh
LmdldEhvc3RQcm9wcyh0aGlzLCBsYXN0UHJvcHMpO1xuXHQgICAgICAgIG5leHRQcm9wcyA9IFJl
YWN0RE9NVGV4dGFyZWEuZ2V0SG9zdFByb3BzKHRoaXMsIG5leHRQcm9wcyk7XG5cdCAgICAgICAg
YnJlYWs7XG5cdCAgICB9XG5cdFxuXHQgICAgYXNzZXJ0VmFsaWRQcm9wcyh0aGlzLCBuZXh0UHJv
cHMpO1xuXHQgICAgdGhpcy5fdXBkYXRlRE9NUHJvcGVydGllcyhsYXN0UHJvcHMsIG5leHRQcm9w
cywgdHJhbnNhY3Rpb24pO1xuXHQgICAgdGhpcy5fdXBkYXRlRE9NQ2hpbGRyZW4obGFzdFByb3Bz
LCBuZXh0UHJvcHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcblx0XG5cdCAgICBzd2l0Y2ggKHRo
aXMuX3RhZykge1xuXHQgICAgICBjYXNlICdpbnB1dCc6XG5cdCAgICAgICAgLy8gVXBkYXRlIHRo
ZSB3cmFwcGVyIGFyb3VuZCBpbnB1dHMgKmFmdGVyKiB1cGRhdGluZyBwcm9wcy4gVGhpcyBoYXMg
dG9cblx0ICAgICAgICAvLyBoYXBwZW4gYWZ0ZXIgYF91cGRhdGVET01Qcm9wZXJ0aWVzYC4gT3Ro
ZXJ3aXNlIEhUTUw1IGlucHV0IHZhbGlkYXRpb25zXG5cdCAgICAgICAgLy8gcmFpc2Ugd2Fybmlu
Z3MgYW5kIHByZXZlbnQgdGhlIG5ldyB2YWx1ZSBmcm9tIGJlaW5nIGFzc2lnbmVkLlxuXHQgICAg
ICAgIFJlYWN0RE9NSW5wdXQudXBkYXRlV3JhcHBlcih0aGlzKTtcblx0ICAgICAgICBicmVhaztc
blx0ICAgICAgY2FzZSAndGV4dGFyZWEnOlxuXHQgICAgICAgIFJlYWN0RE9NVGV4dGFyZWEudXBk
YXRlV3JhcHBlcih0aGlzKTtcblx0ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSAnc2VsZWN0
Jzpcblx0ICAgICAgICAvLyA8c2VsZWN0PiB2YWx1ZSB1cGRhdGUgbmVlZHMgdG8gb2NjdXIgYWZ0
ZXIgPG9wdGlvbj4gY2hpbGRyZW5cblx0ICAgICAgICAvLyByZWNvbmNpbGlhdGlvblxuXHQgICAg
ICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocG9zdFVwZGF0ZVNl
bGVjdFdyYXBwZXIsIHRoaXMpO1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgfVxuXHQgIH0sXG5c
dFxuXHQgIC8qKlxuXHQgICAqIFJlY29uY2lsZXMgdGhlIHByb3BlcnRpZXMgYnkgZGV0ZWN0aW5n
IGRpZmZlcmVuY2VzIGluIHByb3BlcnR5IHZhbHVlcyBhbmRcblx0ICAgKiB1cGRhdGluZyB0aGUg
RE9NIGFzIG5lY2Vzc2FyeS4gVGhpcyBmdW5jdGlvbiBpcyBwcm9iYWJseSB0aGUgc2luZ2xlIG1v
c3Rcblx0ICAgKiBjcml0aWNhbCBwYXRoIGZvciBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24uXG5c
dCAgICpcblx0ICAgKiBUT0RPOiBCZW5jaG1hcmsgd2hldGhlciBjaGVja2luZyBmb3IgY2hhbmdl
ZCB2YWx1ZXMgaW4gbWVtb3J5IGFjdHVhbGx5XG5cdCAgICogICAgICAgaW1wcm92ZXMgcGVyZm9y
bWFuY2UgKGVzcGVjaWFsbHkgc3RhdGljYWxseSBwb3NpdGlvbmVkIGVsZW1lbnRzKS5cblx0ICAg
KiBUT0RPOiBCZW5jaG1hcmsgdGhlIGVmZmVjdHMgb2YgcHV0dGluZyB0aGlzIGF0IHRoZSB0b3Ag
c2luY2UgOTklIG9mIHByb3BzXG5cdCAgICogICAgICAgZG8gbm90IGNoYW5nZSBmb3IgYSBnaXZl
biByZWNvbmNpbGlhdGlvbi5cblx0ICAgKiBUT0RPOiBCZW5jaG1hcmsgYXJlYXMgdGhhdCBjYW4g
YmUgaW1wcm92ZWQgd2l0aCBjYWNoaW5nLlxuXHQgICAqXG5cdCAgICogQHByaXZhdGVcblx0ICAg
KiBAcGFyYW0ge29iamVjdH0gbGFzdFByb3BzXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQ
cm9wc1xuXHQgICAqIEBwYXJhbSB7P0RPTUVsZW1lbnR9IG5vZGVcblx0ICAgKi9cblx0ICBfdXBk
YXRlRE9NUHJvcGVydGllczogZnVuY3Rpb24gKGxhc3RQcm9wcywgbmV4dFByb3BzLCB0cmFuc2Fj
dGlvbikge1xuXHQgICAgdmFyIHByb3BLZXk7XG5cdCAgICB2YXIgc3R5bGVOYW1lO1xuXHQgICAg
dmFyIHN0eWxlVXBkYXRlcztcblx0ICAgIGZvciAocHJvcEtleSBpbiBsYXN0UHJvcHMpIHtcblx0
ICAgICAgaWYgKG5leHRQcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSB8fCAhbGFzdFByb3Bz
Lmhhc093blByb3BlcnR5KHByb3BLZXkpIHx8IGxhc3RQcm9wc1twcm9wS2V5XSA9PSBudWxsKSB7
XG5cdCAgICAgICAgY29udGludWU7XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKHByb3BLZXkgPT09
IFNUWUxFKSB7XG5cdCAgICAgICAgdmFyIGxhc3RTdHlsZSA9IHRoaXMuX3ByZXZpb3VzU3R5bGVD
b3B5O1xuXHQgICAgICAgIGZvciAoc3R5bGVOYW1lIGluIGxhc3RTdHlsZSkge1xuXHQgICAgICAg
ICAgaWYgKGxhc3RTdHlsZS5oYXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUpKSB7XG5cdCAgICAgICAg
ICAgIHN0eWxlVXBkYXRlcyA9IHN0eWxlVXBkYXRlcyB8fCB7fTtcblx0ICAgICAgICAgICAgc3R5
bGVVcGRhdGVzW3N0eWxlTmFtZV0gPSAnJztcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5c
dCAgICAgICAgdGhpcy5fcHJldmlvdXNTdHlsZUNvcHkgPSBudWxsO1xuXHQgICAgICB9IGVsc2Ug
aWYgKHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzLmhhc093blByb3BlcnR5KHByb3BLZXkpKSB7XG5c
dCAgICAgICAgaWYgKGxhc3RQcm9wc1twcm9wS2V5XSkge1xuXHQgICAgICAgICAgLy8gT25seSBj
YWxsIGRlbGV0ZUxpc3RlbmVyIGlmIHRoZXJlIHdhcyBhIGxpc3RlbmVyIHByZXZpb3VzbHkgb3Jc
blx0ICAgICAgICAgIC8vIGVsc2Ugd2lsbERlbGV0ZUxpc3RlbmVyIGdldHMgY2FsbGVkIHdoZW4g
dGhlcmUgd2Fzbid0IGFjdHVhbGx5IGFcblx0ICAgICAgICAgIC8vIGxpc3RlbmVyIChlLmcuLCBv
bkNsaWNrPXtudWxsfSlcblx0ICAgICAgICAgIGRlbGV0ZUxpc3RlbmVyKHRoaXMsIHByb3BLZXkp
O1xuXHQgICAgICAgIH1cblx0ICAgICAgfSBlbHNlIGlmIChpc0N1c3RvbUNvbXBvbmVudCh0aGlz
Ll90YWcsIGxhc3RQcm9wcykpIHtcblx0ICAgICAgICBpZiAoIVJFU0VSVkVEX1BST1BTLmhhc093
blByb3BlcnR5KHByb3BLZXkpKSB7XG5cdCAgICAgICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMu
ZGVsZXRlVmFsdWVGb3JBdHRyaWJ1dGUoZ2V0Tm9kZSh0aGlzKSwgcHJvcEtleSk7XG5cdCAgICAg
ICAgfVxuXHQgICAgICB9IGVsc2UgaWYgKERPTVByb3BlcnR5LnByb3BlcnRpZXNbcHJvcEtleV0g
fHwgRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUocHJvcEtleSkpIHtcblx0ICAgICAgICBE
T01Qcm9wZXJ0eU9wZXJhdGlvbnMuZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eShnZXROb2RlKHRoaXMp
LCBwcm9wS2V5KTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgZm9yIChwcm9wS2V5IGluIG5l
eHRQcm9wcykge1xuXHQgICAgICB2YXIgbmV4dFByb3AgPSBuZXh0UHJvcHNbcHJvcEtleV07XG5c
dCAgICAgIHZhciBsYXN0UHJvcCA9IHByb3BLZXkgPT09IFNUWUxFID8gdGhpcy5fcHJldmlvdXNT
dHlsZUNvcHkgOiBsYXN0UHJvcHMgIT0gbnVsbCA/IGxhc3RQcm9wc1twcm9wS2V5XSA6IHVuZGVm
aW5lZDtcblx0ICAgICAgaWYgKCFuZXh0UHJvcHMuaGFzT3duUHJvcGVydHkocHJvcEtleSkgfHwg
bmV4dFByb3AgPT09IGxhc3RQcm9wIHx8IG5leHRQcm9wID09IG51bGwgJiYgbGFzdFByb3AgPT0g
bnVsbCkge1xuXHQgICAgICAgIGNvbnRpbnVlO1xuXHQgICAgICB9XG5cdCAgICAgIGlmIChwcm9w
S2V5ID09PSBTVFlMRSkge1xuXHQgICAgICAgIGlmIChuZXh0UHJvcCkge1xuXHQgICAgICAgICAg
aWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICAgIGNoZWNrQW5kV2FybkZvck11dGF0ZWRTdHlsZSh0
aGlzLl9wcmV2aW91c1N0eWxlQ29weSwgdGhpcy5fcHJldmlvdXNTdHlsZSwgdGhpcyk7XG5cdCAg
ICAgICAgICAgIHRoaXMuX3ByZXZpb3VzU3R5bGUgPSBuZXh0UHJvcDtcblx0ICAgICAgICAgIH1c
blx0ICAgICAgICAgIG5leHRQcm9wID0gdGhpcy5fcHJldmlvdXNTdHlsZUNvcHkgPSBfYXNzaWdu
KHt9LCBuZXh0UHJvcCk7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIHRoaXMuX3By
ZXZpb3VzU3R5bGVDb3B5ID0gbnVsbDtcblx0ICAgICAgICB9XG5cdCAgICAgICAgaWYgKGxhc3RQ
cm9wKSB7XG5cdCAgICAgICAgICAvLyBVbnNldCBzdHlsZXMgb24gYGxhc3RQcm9wYCBidXQgbm90
IG9uIGBuZXh0UHJvcGAuXG5cdCAgICAgICAgICBmb3IgKHN0eWxlTmFtZSBpbiBsYXN0UHJvcCkg
e1xuXHQgICAgICAgICAgICBpZiAobGFzdFByb3AuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSAm
JiAoIW5leHRQcm9wIHx8ICFuZXh0UHJvcC5oYXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUpKSkge1xu
XHQgICAgICAgICAgICAgIHN0eWxlVXBkYXRlcyA9IHN0eWxlVXBkYXRlcyB8fCB7fTtcblx0ICAg
ICAgICAgICAgICBzdHlsZVVwZGF0ZXNbc3R5bGVOYW1lXSA9ICcnO1xuXHQgICAgICAgICAgICB9
XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgICAvLyBVcGRhdGUgc3R5bGVzIHRoYXQgY2hhbmdl
ZCBzaW5jZSBgbGFzdFByb3BgLlxuXHQgICAgICAgICAgZm9yIChzdHlsZU5hbWUgaW4gbmV4dFBy
b3ApIHtcblx0ICAgICAgICAgICAgaWYgKG5leHRQcm9wLmhhc093blByb3BlcnR5KHN0eWxlTmFt
ZSkgJiYgbGFzdFByb3Bbc3R5bGVOYW1lXSAhPT0gbmV4dFByb3Bbc3R5bGVOYW1lXSkge1xuXHQg
ICAgICAgICAgICAgIHN0eWxlVXBkYXRlcyA9IHN0eWxlVXBkYXRlcyB8fCB7fTtcblx0ICAgICAg
ICAgICAgICBzdHlsZVVwZGF0ZXNbc3R5bGVOYW1lXSA9IG5leHRQcm9wW3N0eWxlTmFtZV07XG5c
dCAgICAgICAgICAgIH1cblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAg
ICAgICAgLy8gUmVsaWVzIG9uIGB1cGRhdGVTdHlsZXNCeUlEYCBub3QgbXV0YXRpbmcgYHN0eWxl
VXBkYXRlc2AuXG5cdCAgICAgICAgICBzdHlsZVVwZGF0ZXMgPSBuZXh0UHJvcDtcblx0ICAgICAg
ICB9XG5cdCAgICAgIH0gZWxzZSBpZiAocmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMuaGFzT3duUHJv
cGVydHkocHJvcEtleSkpIHtcblx0ICAgICAgICBpZiAobmV4dFByb3ApIHtcblx0ICAgICAgICAg
IGVucXVldWVQdXRMaXN0ZW5lcih0aGlzLCBwcm9wS2V5LCBuZXh0UHJvcCwgdHJhbnNhY3Rpb24p
O1xuXHQgICAgICAgIH0gZWxzZSBpZiAobGFzdFByb3ApIHtcblx0ICAgICAgICAgIGRlbGV0ZUxp
c3RlbmVyKHRoaXMsIHByb3BLZXkpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSBlbHNlIGlmIChp
c0N1c3RvbUNvbXBvbmVudCh0aGlzLl90YWcsIG5leHRQcm9wcykpIHtcblx0ICAgICAgICBpZiAo
IVJFU0VSVkVEX1BST1BTLmhhc093blByb3BlcnR5KHByb3BLZXkpKSB7XG5cdCAgICAgICAgICBE
T01Qcm9wZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVGb3JBdHRyaWJ1dGUoZ2V0Tm9kZSh0aGlzKSwg
cHJvcEtleSwgbmV4dFByb3ApO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSBlbHNlIGlmIChET01Q
cm9wZXJ0eS5wcm9wZXJ0aWVzW3Byb3BLZXldIHx8IERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0cmli
dXRlKHByb3BLZXkpKSB7XG5cdCAgICAgICAgdmFyIG5vZGUgPSBnZXROb2RlKHRoaXMpO1xuXHQg
ICAgICAgIC8vIElmIHdlJ3JlIHVwZGF0aW5nIHRvIG51bGwgb3IgdW5kZWZpbmVkLCB3ZSBzaG91
bGQgcmVtb3ZlIHRoZSBwcm9wZXJ0eVxuXHQgICAgICAgIC8vIGZyb20gdGhlIERPTSBub2RlIGlu
c3RlYWQgb2YgaW5hZHZlcnRlbnRseSBzZXR0aW5nIHRvIGEgc3RyaW5nLiBUaGlzXG5cdCAgICAg
ICAgLy8gYnJpbmdzIHVzIGluIGxpbmUgd2l0aCB0aGUgc2FtZSBiZWhhdmlvciB3ZSBoYXZlIG9u
IGluaXRpYWwgcmVuZGVyLlxuXHQgICAgICAgIGlmIChuZXh0UHJvcCAhPSBudWxsKSB7XG5cdCAg
ICAgICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVGb3JQcm9wZXJ0eShub2RlLCBw
cm9wS2V5LCBuZXh0UHJvcCk7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIERPTVBy
b3BlcnR5T3BlcmF0aW9ucy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KG5vZGUsIHByb3BLZXkpO1xu
XHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgaWYgKHN0eWxlVXBkYXRlcykg
e1xuXHQgICAgICBDU1NQcm9wZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVGb3JTdHlsZXMoZ2V0Tm9k
ZSh0aGlzKSwgc3R5bGVVcGRhdGVzLCB0aGlzKTtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICAv
Kipcblx0ICAgKiBSZWNvbmNpbGVzIHRoZSBjaGlsZHJlbiB3aXRoIHRoZSB2YXJpb3VzIHByb3Bl
cnRpZXMgdGhhdCBhZmZlY3QgdGhlXG5cdCAgICogY2hpbGRyZW4gY29udGVudC5cblx0ICAgKlxu
XHQgICAqIEBwYXJhbSB7b2JqZWN0fSBsYXN0UHJvcHNcblx0ICAgKiBAcGFyYW0ge29iamVjdH0g
bmV4dFByb3BzXG5cdCAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFu
c2FjdGlvblxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0XG5cdCAgICovXG5cdCAgX3Vw
ZGF0ZURPTUNoaWxkcmVuOiBmdW5jdGlvbiAobGFzdFByb3BzLCBuZXh0UHJvcHMsIHRyYW5zYWN0
aW9uLCBjb250ZXh0KSB7XG5cdCAgICB2YXIgbGFzdENvbnRlbnQgPSBDT05URU5UX1RZUEVTW3R5
cGVvZiBsYXN0UHJvcHMuY2hpbGRyZW5dID8gbGFzdFByb3BzLmNoaWxkcmVuIDogbnVsbDtcblx0
ICAgIHZhciBuZXh0Q29udGVudCA9IENPTlRFTlRfVFlQRVNbdHlwZW9mIG5leHRQcm9wcy5jaGls
ZHJlbl0gPyBuZXh0UHJvcHMuY2hpbGRyZW4gOiBudWxsO1xuXHRcblx0ICAgIHZhciBsYXN0SHRt
bCA9IGxhc3RQcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCAmJiBsYXN0UHJvcHMuZGFuZ2Vy
b3VzbHlTZXRJbm5lckhUTUwuX19odG1sO1xuXHQgICAgdmFyIG5leHRIdG1sID0gbmV4dFByb3Bz
LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MICYmIG5leHRQcm9wcy5kYW5nZXJvdXNseVNldElubmVy
SFRNTC5fX2h0bWw7XG5cdFxuXHQgICAgLy8gTm90ZSB0aGUgdXNlIG9mIGAhPWAgd2hpY2ggY2hl
Y2tzIGZvciBudWxsIG9yIHVuZGVmaW5lZC5cblx0ICAgIHZhciBsYXN0Q2hpbGRyZW4gPSBsYXN0
Q29udGVudCAhPSBudWxsID8gbnVsbCA6IGxhc3RQcm9wcy5jaGlsZHJlbjtcblx0ICAgIHZhciBu
ZXh0Q2hpbGRyZW4gPSBuZXh0Q29udGVudCAhPSBudWxsID8gbnVsbCA6IG5leHRQcm9wcy5jaGls
ZHJlbjtcblx0XG5cdCAgICAvLyBJZiB3ZSdyZSBzd2l0Y2hpbmcgZnJvbSBjaGlsZHJlbiB0byBj
b250ZW50L2h0bWwgb3IgdmljZSB2ZXJzYSwgcmVtb3ZlXG5cdCAgICAvLyB0aGUgb2xkIGNvbnRl
bnRcblx0ICAgIHZhciBsYXN0SGFzQ29udGVudE9ySHRtbCA9IGxhc3RDb250ZW50ICE9IG51bGwg
fHwgbGFzdEh0bWwgIT0gbnVsbDtcblx0ICAgIHZhciBuZXh0SGFzQ29udGVudE9ySHRtbCA9IG5l
eHRDb250ZW50ICE9IG51bGwgfHwgbmV4dEh0bWwgIT0gbnVsbDtcblx0ICAgIGlmIChsYXN0Q2hp
bGRyZW4gIT0gbnVsbCAmJiBuZXh0Q2hpbGRyZW4gPT0gbnVsbCkge1xuXHQgICAgICB0aGlzLnVw
ZGF0ZUNoaWxkcmVuKG51bGwsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcblx0ICAgIH0gZWxzZSBp
ZiAobGFzdEhhc0NvbnRlbnRPckh0bWwgJiYgIW5leHRIYXNDb250ZW50T3JIdG1sKSB7XG5cdCAg
ICAgIHRoaXMudXBkYXRlVGV4dENvbnRlbnQoJycpO1xuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0
ICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25TZXRDaGlsZHJlbih0aGlz
Ll9kZWJ1Z0lELCBbXSk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICBpZiAobmV4dENv
bnRlbnQgIT0gbnVsbCkge1xuXHQgICAgICBpZiAobGFzdENvbnRlbnQgIT09IG5leHRDb250ZW50
KSB7XG5cdCAgICAgICAgdGhpcy51cGRhdGVUZXh0Q29udGVudCgnJyArIG5leHRDb250ZW50KTtc
blx0ICAgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICAgIHNldEFuZFZhbGlkYXRlQ29udGVu
dENoaWxkRGV2LmNhbGwodGhpcywgbmV4dENvbnRlbnQpO1xuXHQgICAgICAgIH1cblx0ICAgICAg
fVxuXHQgICAgfSBlbHNlIGlmIChuZXh0SHRtbCAhPSBudWxsKSB7XG5cdCAgICAgIGlmIChsYXN0
SHRtbCAhPT0gbmV4dEh0bWwpIHtcblx0ICAgICAgICB0aGlzLnVwZGF0ZU1hcmt1cCgnJyArIG5l
eHRIdG1sKTtcblx0ICAgICAgfVxuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICBSZWFj
dEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25TZXRDaGlsZHJlbih0aGlzLl9kZWJ1Z0lELCBb
XSk7XG5cdCAgICAgIH1cblx0ICAgIH0gZWxzZSBpZiAobmV4dENoaWxkcmVuICE9IG51bGwpIHtc
blx0ICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hp
bGREZXYuY2FsbCh0aGlzLCBudWxsKTtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgdGhpcy51cGRh
dGVDaGlsZHJlbihuZXh0Q2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcblx0ICAgIH1c
blx0ICB9LFxuXHRcblx0ICBnZXRIb3N0Tm9kZTogZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0dXJu
IGdldE5vZGUodGhpcyk7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogRGVzdHJveXMgYWxs
IGV2ZW50IHJlZ2lzdHJhdGlvbnMgZm9yIHRoaXMgaW5zdGFuY2UuIERvZXMgbm90IHJlbW92ZSBm
cm9tXG5cdCAgICogdGhlIERPTS4gVGhhdCBtdXN0IGJlIGRvbmUgYnkgdGhlIHBhcmVudC5cblx0
ICAgKlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIHVubW91bnRDb21wb25lbnQ6IGZ1
bmN0aW9uIChzYWZlbHkpIHtcblx0ICAgIHN3aXRjaCAodGhpcy5fdGFnKSB7XG5cdCAgICAgIGNh
c2UgJ2F1ZGlvJzpcblx0ICAgICAgY2FzZSAnZm9ybSc6XG5cdCAgICAgIGNhc2UgJ2lmcmFtZSc6
XG5cdCAgICAgIGNhc2UgJ2ltZyc6XG5cdCAgICAgIGNhc2UgJ2xpbmsnOlxuXHQgICAgICBjYXNl
ICdvYmplY3QnOlxuXHQgICAgICBjYXNlICdzb3VyY2UnOlxuXHQgICAgICBjYXNlICd2aWRlbyc6
XG5cdCAgICAgICAgdmFyIGxpc3RlbmVycyA9IHRoaXMuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM7
XG5cdCAgICAgICAgaWYgKGxpc3RlbmVycykge1xuXHQgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBsaXN0ZW5lcnMubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgICAgICAgbGlzdGVuZXJzW2ld
LnJlbW92ZSgpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgICBicmVhaztc
blx0ICAgICAgY2FzZSAnaW5wdXQnOlxuXHQgICAgICBjYXNlICd0ZXh0YXJlYSc6XG5cdCAgICAg
ICAgaW5wdXRWYWx1ZVRyYWNraW5nLnN0b3BUcmFja2luZyh0aGlzKTtcblx0ICAgICAgICBicmVh
aztcblx0ICAgICAgY2FzZSAnaHRtbCc6XG5cdCAgICAgIGNhc2UgJ2hlYWQnOlxuXHQgICAgICBj
YXNlICdib2R5Jzpcblx0ICAgICAgICAvKipcblx0ICAgICAgICAgKiBDb21wb25lbnRzIGxpa2Ug
PGh0bWw+IDxoZWFkPiBhbmQgPGJvZHk+IGNhbid0IGJlIHJlbW92ZWQgb3IgYWRkZWRcblx0ICAg
ICAgICAgKiBlYXNpbHkgaW4gYSBjcm9zcy1icm93c2VyIHdheSwgaG93ZXZlciBpdCdzIHZhbHVh
YmxlIHRvIGJlIGFibGUgdG9cblx0ICAgICAgICAgKiB0YWtlIGFkdmFudGFnZSBvZiBSZWFjdCdz
IHJlY29uY2lsaWF0aW9uIGZvciBzdHlsaW5nIGFuZCA8dGl0bGU+XG5cdCAgICAgICAgICogbWFu
YWdlbWVudC4gU28gd2UganVzdCBkb2N1bWVudCBpdCBhbmQgdGhyb3cgaW4gZGFuZ2Vyb3VzIGNh
c2VzLlxuXHQgICAgICAgICAqL1xuXHQgICAgICAgICB0cnVlID8gIGZhbHNlID8gaW52YXJpYW50
KGZhbHNlLCAnPCVzPiB0cmllZCB0byB1bm1vdW50LiBCZWNhdXNlIG9mIGNyb3NzLWJyb3dzZXIg
cXVpcmtzIGl0IGlzIGltcG9zc2libGUgdG8gdW5tb3VudCBzb21lIHRvcC1sZXZlbCBjb21wb25l
bnRzIChlZyA8aHRtbD4sIDxoZWFkPiwgYW5kIDxib2R5PikgcmVsaWFibHkgYW5kIGVmZmljaWVu
dGx5LiBUbyBmaXggdGhpcywgaGF2ZSBhIHNpbmdsZSB0b3AtbGV2ZWwgY29tcG9uZW50IHRoYXQg
bmV2ZXIgdW5tb3VudHMgcmVuZGVyIHRoZXNlIGVsZW1lbnRzLicsIHRoaXMuX3RhZykgOiBfcHJv
ZEludmFyaWFudCgnNjYnLCB0aGlzLl90YWcpIDogdm9pZCAwO1xuXHQgICAgICAgIGJyZWFrO1xu
XHQgICAgfVxuXHRcblx0ICAgIHRoaXMudW5tb3VudENoaWxkcmVuKHNhZmVseSk7XG5cdCAgICBS
ZWFjdERPTUNvbXBvbmVudFRyZWUudW5jYWNoZU5vZGUodGhpcyk7XG5cdCAgICBFdmVudFBsdWdp
bkh1Yi5kZWxldGVBbGxMaXN0ZW5lcnModGhpcyk7XG5cdCAgICB0aGlzLl9yb290Tm9kZUlEID0g
MDtcblx0ICAgIHRoaXMuX2RvbUlEID0gMDtcblx0ICAgIHRoaXMuX3dyYXBwZXJTdGF0ZSA9IG51
bGw7XG5cdFxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHNldEFuZFZhbGlkYXRlQ29udGVu
dENoaWxkRGV2LmNhbGwodGhpcywgbnVsbCk7XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgZ2V0
UHVibGljSW5zdGFuY2U6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHJldHVybiBnZXROb2RlKHRoaXMp
O1xuXHQgIH1cblx0fTtcblx0XG5cdF9hc3NpZ24oUmVhY3RET01Db21wb25lbnQucHJvdG90eXBl
LCBSZWFjdERPTUNvbXBvbmVudC5NaXhpbiwgUmVhY3RNdWx0aUNoaWxkLk1peGluKTtcblx0XG5c
dG1vZHVsZS5leHBvcnRzID0gUmVhY3RET01Db21wb25lbnQ7XG5cbi8qKiovIH0sXG4vKiAxMzkg
Ki9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykg
e1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
XHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0
XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciB2YWxpZGF0ZURPTU5lc3RpbmcgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDQ5KTtcblx0XG5cdHZhciBET0NfTk9ERV9UWVBFID0gOTtcblx0XG5cdGZ1
bmN0aW9uIFJlYWN0RE9NQ29udGFpbmVySW5mbyh0b3BMZXZlbFdyYXBwZXIsIG5vZGUpIHtcblx0
ICB2YXIgaW5mbyA9IHtcblx0ICAgIF90b3BMZXZlbFdyYXBwZXI6IHRvcExldmVsV3JhcHBlcixc
blx0ICAgIF9pZENvdW50ZXI6IDEsXG5cdCAgICBfb3duZXJEb2N1bWVudDogbm9kZSA/IG5vZGUu
bm9kZVR5cGUgPT09IERPQ19OT0RFX1RZUEUgPyBub2RlIDogbm9kZS5vd25lckRvY3VtZW50IDog
bnVsbCxcblx0ICAgIF9ub2RlOiBub2RlLFxuXHQgICAgX3RhZzogbm9kZSA/IG5vZGUubm9kZU5h
bWUudG9Mb3dlckNhc2UoKSA6IG51bGwsXG5cdCAgICBfbmFtZXNwYWNlVVJJOiBub2RlID8gbm9k
ZS5uYW1lc3BhY2VVUkkgOiBudWxsXG5cdCAgfTtcblx0ICBpZiAoZmFsc2UpIHtcblx0ICAgIGlu
Zm8uX2FuY2VzdG9ySW5mbyA9IG5vZGUgPyB2YWxpZGF0ZURPTU5lc3RpbmcudXBkYXRlZEFuY2Vz
dG9ySW5mbyhudWxsLCBpbmZvLl90YWcsIG51bGwpIDogbnVsbDtcblx0ICB9XG5cdCAgcmV0dXJu
IGluZm87XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RET01Db250YWluZXJJbmZv
O1xuXG4vKioqLyB9LFxuLyogMTQwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMs
IF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTQtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX2Fzc2ln
biA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdFxuXHR2YXIgRE9NTGF6eVRyZWUgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDE0KTtcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9fd2Vi
cGFja19yZXF1aXJlX18oNSk7XG5cdFxuXHR2YXIgUmVhY3RET01FbXB0eUNvbXBvbmVudCA9IGZ1
bmN0aW9uIChpbnN0YW50aWF0ZSkge1xuXHQgIC8vIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50IHVz
ZXMgdGhpczpcblx0ICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IG51bGw7XG5cdCAgLy8gUmVhY3RE
T01Db21wb25lbnRUcmVlIHVzZXMgdGhlc2U6XG5cdCAgdGhpcy5faG9zdE5vZGUgPSBudWxsO1xu
XHQgIHRoaXMuX2hvc3RQYXJlbnQgPSBudWxsO1xuXHQgIHRoaXMuX2hvc3RDb250YWluZXJJbmZv
ID0gbnVsbDtcblx0ICB0aGlzLl9kb21JRCA9IDA7XG5cdH07XG5cdF9hc3NpZ24oUmVhY3RET01F
bXB0eUNvbXBvbmVudC5wcm90b3R5cGUsIHtcblx0ICBtb3VudENvbXBvbmVudDogZnVuY3Rpb24g
KHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgY29udGV4dCkge1xu
XHQgICAgdmFyIGRvbUlEID0gaG9zdENvbnRhaW5lckluZm8uX2lkQ291bnRlcisrO1xuXHQgICAg
dGhpcy5fZG9tSUQgPSBkb21JRDtcblx0ICAgIHRoaXMuX2hvc3RQYXJlbnQgPSBob3N0UGFyZW50
O1xuXHQgICAgdGhpcy5faG9zdENvbnRhaW5lckluZm8gPSBob3N0Q29udGFpbmVySW5mbztcblx0
XG5cdCAgICB2YXIgbm9kZVZhbHVlID0gJyByZWFjdC1lbXB0eTogJyArIHRoaXMuX2RvbUlEICsg
JyAnO1xuXHQgICAgaWYgKHRyYW5zYWN0aW9uLnVzZUNyZWF0ZUVsZW1lbnQpIHtcblx0ICAgICAg
dmFyIG93bmVyRG9jdW1lbnQgPSBob3N0Q29udGFpbmVySW5mby5fb3duZXJEb2N1bWVudDtcblx0
ICAgICAgdmFyIG5vZGUgPSBvd25lckRvY3VtZW50LmNyZWF0ZUNvbW1lbnQobm9kZVZhbHVlKTtc
blx0ICAgICAgUmVhY3RET01Db21wb25lbnRUcmVlLnByZWNhY2hlTm9kZSh0aGlzLCBub2RlKTtc
blx0ICAgICAgcmV0dXJuIERPTUxhenlUcmVlKG5vZGUpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAg
ICAgaWYgKHRyYW5zYWN0aW9uLnJlbmRlclRvU3RhdGljTWFya3VwKSB7XG5cdCAgICAgICAgLy8g
Tm9ybWFsbHkgd2UnZCBpbnNlcnQgYSBjb21tZW50IG5vZGUsIGJ1dCBzaW5jZSB0aGlzIGlzIGEg
c2l0dWF0aW9uXG5cdCAgICAgICAgLy8gd2hlcmUgUmVhY3Qgd29uJ3QgdGFrZSBvdmVyIChzdGF0
aWMgcGFnZXMpLCB3ZSBjYW4gc2ltcGx5IHJldHVyblxuXHQgICAgICAgIC8vIG5vdGhpbmcuXG5c
dCAgICAgICAgcmV0dXJuICcnO1xuXHQgICAgICB9XG5cdCAgICAgIHJldHVybiAnPCEtLScgKyBu
b2RlVmFsdWUgKyAnLS0+Jztcblx0ICAgIH1cblx0ICB9LFxuXHQgIHJlY2VpdmVDb21wb25lbnQ6
IGZ1bmN0aW9uICgpIHt9LFxuXHQgIGdldEhvc3ROb2RlOiBmdW5jdGlvbiAoKSB7XG5cdCAgICBy
ZXR1cm4gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UodGhpcyk7XG5c
dCAgfSxcblx0ICB1bm1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoKSB7XG5cdCAgICBSZWFjdERP
TUNvbXBvbmVudFRyZWUudW5jYWNoZU5vZGUodGhpcyk7XG5cdCAgfVxuXHR9KTtcblx0XG5cdG1v
ZHVsZS5leHBvcnRzID0gUmVhY3RET01FbXB0eUNvbXBvbmVudDtcblxuLyoqKi8gfSxcbi8qIDE0
MSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
blx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xu
XHRcblx0dmFyIFJlYWN0RE9NRmVhdHVyZUZsYWdzID0ge1xuXHQgIHVzZUNyZWF0ZUVsZW1lbnQ6
IHRydWUsXG5cdCAgdXNlRmliZXI6IGZhbHNlXG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9
IFJlYWN0RE9NRmVhdHVyZUZsYWdzO1xuXG4vKioqLyB9LFxuLyogMTQyICovXG4vKioqLyBmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0
cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmlj
dCc7XG5cdFxuXHR2YXIgRE9NQ2hpbGRyZW5PcGVyYXRpb25zID0gX193ZWJwYWNrX3JlcXVpcmVf
XygzNCk7XG5cdHZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDUpO1xuXHRcblx0LyoqXG5cdCAqIE9wZXJhdGlvbnMgdXNlZCB0byBwcm9jZXNzIHVwZGF0ZXMg
dG8gRE9NIG5vZGVzLlxuXHQgKi9cblx0dmFyIFJlYWN0RE9NSURPcGVyYXRpb25zID0ge1xuXHQg
IC8qKlxuXHQgICAqIFVwZGF0ZXMgYSBjb21wb25lbnQncyBjaGlsZHJlbiBieSBwcm9jZXNzaW5n
IGEgc2VyaWVzIG9mIHVwZGF0ZXMuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge2FycmF5PG9iamVj
dD59IHVwZGF0ZXMgTGlzdCBvZiB1cGRhdGUgY29uZmlndXJhdGlvbnMuXG5cdCAgICogQGludGVy
bmFsXG5cdCAgICovXG5cdCAgZGFuZ2Vyb3VzbHlQcm9jZXNzQ2hpbGRyZW5VcGRhdGVzOiBmdW5j
dGlvbiAocGFyZW50SW5zdCwgdXBkYXRlcykge1xuXHQgICAgdmFyIG5vZGUgPSBSZWFjdERPTUNv
bXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShwYXJlbnRJbnN0KTtcblx0ICAgIERPTUNo
aWxkcmVuT3BlcmF0aW9ucy5wcm9jZXNzVXBkYXRlcyhub2RlLCB1cGRhdGVzKTtcblx0ICB9XG5c
dH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NSURPcGVyYXRpb25zO1xuXG4vKioq
LyB9LFxuLyogMTQzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFj
a19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0
ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpLFxuXHQgICAgX2Fzc2lnbiA9IF9fd2VicGFja19yZXF1
aXJlX18oNCk7XG5cdFxuXHR2YXIgRE9NUHJvcGVydHlPcGVyYXRpb25zID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg2MCk7XG5cdHZhciBMaW5rZWRWYWx1ZVV0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVf
XygzOSk7XG5cdHZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDUpO1xuXHR2YXIgUmVhY3RVcGRhdGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTtcblx0XG5c
dHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHR2YXIgd2FybmluZyA9
IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cdFxuXHR2YXIgZGlkV2FyblZhbHVlTGluayA9IGZh
bHNlO1xuXHR2YXIgZGlkV2FybkNoZWNrZWRMaW5rID0gZmFsc2U7XG5cdHZhciBkaWRXYXJuVmFs
dWVEZWZhdWx0VmFsdWUgPSBmYWxzZTtcblx0dmFyIGRpZFdhcm5DaGVja2VkRGVmYXVsdENoZWNr
ZWQgPSBmYWxzZTtcblx0dmFyIGRpZFdhcm5Db250cm9sbGVkVG9VbmNvbnRyb2xsZWQgPSBmYWxz
ZTtcblx0dmFyIGRpZFdhcm5VbmNvbnRyb2xsZWRUb0NvbnRyb2xsZWQgPSBmYWxzZTtcblx0XG5c
dGZ1bmN0aW9uIGZvcmNlVXBkYXRlSWZNb3VudGVkKCkge1xuXHQgIGlmICh0aGlzLl9yb290Tm9k
ZUlEKSB7XG5cdCAgICAvLyBET00gY29tcG9uZW50IGlzIHN0aWxsIG1vdW50ZWQ7IHVwZGF0ZVxu
XHQgICAgUmVhY3RET01JbnB1dC51cGRhdGVXcmFwcGVyKHRoaXMpO1xuXHQgIH1cblx0fVxuXHRc
blx0ZnVuY3Rpb24gaXNDb250cm9sbGVkKHByb3BzKSB7XG5cdCAgdmFyIHVzZXNDaGVja2VkID0g
cHJvcHMudHlwZSA9PT0gJ2NoZWNrYm94JyB8fCBwcm9wcy50eXBlID09PSAncmFkaW8nO1xuXHQg
IHJldHVybiB1c2VzQ2hlY2tlZCA/IHByb3BzLmNoZWNrZWQgIT0gbnVsbCA6IHByb3BzLnZhbHVl
ICE9IG51bGw7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBJbXBsZW1lbnRzIGFuIDxpbnB1dD4gaG9z
dCBjb21wb25lbnQgdGhhdCBhbGxvd3Mgc2V0dGluZyB0aGVzZSBvcHRpb25hbFxuXHQgKiBwcm9w
czogYGNoZWNrZWRgLCBgdmFsdWVgLCBgZGVmYXVsdENoZWNrZWRgLCBhbmQgYGRlZmF1bHRWYWx1
ZWAuXG5cdCAqXG5cdCAqIElmIGBjaGVja2VkYCBvciBgdmFsdWVgIGFyZSBub3Qgc3VwcGxpZWQg
KG9yIG51bGwvdW5kZWZpbmVkKSwgdXNlciBhY3Rpb25zXG5cdCAqIHRoYXQgYWZmZWN0IHRoZSBj
aGVja2VkIHN0YXRlIG9yIHZhbHVlIHdpbGwgdHJpZ2dlciB1cGRhdGVzIHRvIHRoZSBlbGVtZW50
LlxuXHQgKlxuXHQgKiBJZiB0aGV5IGFyZSBzdXBwbGllZCAoYW5kIG5vdCBudWxsL3VuZGVmaW5l
ZCksIHRoZSByZW5kZXJlZCBlbGVtZW50IHdpbGwgbm90XG5cdCAqIHRyaWdnZXIgdXBkYXRlcyB0
byB0aGUgZWxlbWVudC4gSW5zdGVhZCwgdGhlIHByb3BzIG11c3QgY2hhbmdlIGluIG9yZGVyIGZv
clxuXHQgKiB0aGUgcmVuZGVyZWQgZWxlbWVudCB0byBiZSB1cGRhdGVkLlxuXHQgKlxuXHQgKiBU
aGUgcmVuZGVyZWQgZWxlbWVudCB3aWxsIGJlIGluaXRpYWxpemVkIGFzIHVuY2hlY2tlZCAob3Ig
YGRlZmF1bHRDaGVja2VkYClcblx0ICogd2l0aCBhbiBlbXB0eSB2YWx1ZSAob3IgYGRlZmF1bHRW
YWx1ZWApLlxuXHQgKlxuXHQgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMTIvV0QtaHRt
bDUtMjAxMjEwMjUvdGhlLWlucHV0LWVsZW1lbnQuaHRtbFxuXHQgKi9cblx0dmFyIFJlYWN0RE9N
SW5wdXQgPSB7XG5cdCAgZ2V0SG9zdFByb3BzOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHtcblx0
ICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpO1xuXHQgICAg
dmFyIGNoZWNrZWQgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldENoZWNrZWQocHJvcHMpO1xuXHRcblx0
ICAgIHZhciBob3N0UHJvcHMgPSBfYXNzaWduKHtcblx0ICAgICAgLy8gTWFrZSBzdXJlIHdlIHNl
dCAudHlwZSBiZWZvcmUgYW55IG90aGVyIHByb3BlcnRpZXMgKHNldHRpbmcgLnZhbHVlXG5cdCAg
ICAgIC8vIGJlZm9yZSAudHlwZSBtZWFucyAudmFsdWUgaXMgbG9zdCBpbiBJRTExIGFuZCBiZWxv
dylcblx0ICAgICAgdHlwZTogdW5kZWZpbmVkLFxuXHQgICAgICAvLyBNYWtlIHN1cmUgd2Ugc2V0
IC5zdGVwIGJlZm9yZSAudmFsdWUgKHNldHRpbmcgLnZhbHVlIGJlZm9yZSAuc3RlcFxuXHQgICAg
ICAvLyBtZWFucyAudmFsdWUgaXMgcm91bmRlZCBvbiBtb3VudCwgYmFzZWQgdXBvbiBzdGVwIHBy
ZWNpc2lvbilcblx0ICAgICAgc3RlcDogdW5kZWZpbmVkLFxuXHQgICAgICAvLyBNYWtlIHN1cmUg
d2Ugc2V0IC5taW4gJiAubWF4IGJlZm9yZSAudmFsdWUgKHRvIGVuc3VyZSBwcm9wZXIgb3JkZXJc
blx0ICAgICAgLy8gaW4gY29ybmVyIGNhc2VzIHN1Y2ggYXMgbWluIG9yIG1heCBkZXJpdmluZyBm
cm9tIHZhbHVlLCBlLmcuIElzc3VlICM3MTcwKVxuXHQgICAgICBtaW46IHVuZGVmaW5lZCxcblx0
ICAgICAgbWF4OiB1bmRlZmluZWRcblx0ICAgIH0sIHByb3BzLCB7XG5cdCAgICAgIGRlZmF1bHRD
aGVja2VkOiB1bmRlZmluZWQsXG5cdCAgICAgIGRlZmF1bHRWYWx1ZTogdW5kZWZpbmVkLFxuXHQg
ICAgICB2YWx1ZTogdmFsdWUgIT0gbnVsbCA/IHZhbHVlIDogaW5zdC5fd3JhcHBlclN0YXRlLmlu
aXRpYWxWYWx1ZSxcblx0ICAgICAgY2hlY2tlZDogY2hlY2tlZCAhPSBudWxsID8gY2hlY2tlZCA6
IGluc3QuX3dyYXBwZXJTdGF0ZS5pbml0aWFsQ2hlY2tlZCxcblx0ICAgICAgb25DaGFuZ2U6IGlu
c3QuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZVxuXHQgICAgfSk7XG5cdFxuXHQgICAgcmV0dXJuIGhv
c3RQcm9wcztcblx0ICB9LFxuXHRcblx0ICBtb3VudFdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0LCBw
cm9wcykge1xuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIExpbmtlZFZhbHVlVXRpbHMuY2hl
Y2tQcm9wVHlwZXMoJ2lucHV0JywgcHJvcHMsIGluc3QuX2N1cnJlbnRFbGVtZW50Ll9vd25lcik7
XG5cdFxuXHQgICAgICB2YXIgb3duZXIgPSBpbnN0Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7XG5c
dFxuXHQgICAgICBpZiAocHJvcHMudmFsdWVMaW5rICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5W
YWx1ZUxpbmspIHtcblx0ICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gd2FybmluZyhmYWxzZSwgJ2B2YWx1ZUxpbmtgIHByb3Agb24gYGlucHV0YCBpcyBkZXBy
ZWNhdGVkOyBzZXQgYHZhbHVlYCBhbmQgYG9uQ2hhbmdlYCBpbnN0ZWFkLicpIDogdm9pZCAwO1xu
XHQgICAgICAgIGRpZFdhcm5WYWx1ZUxpbmsgPSB0cnVlO1xuXHQgICAgICB9XG5cdCAgICAgIGlm
IChwcm9wcy5jaGVja2VkTGluayAhPT0gdW5kZWZpbmVkICYmICFkaWRXYXJuQ2hlY2tlZExpbmsp
IHtcblx0ICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fy
bmluZyhmYWxzZSwgJ2BjaGVja2VkTGlua2AgcHJvcCBvbiBgaW5wdXRgIGlzIGRlcHJlY2F0ZWQ7
IHNldCBgdmFsdWVgIGFuZCBgb25DaGFuZ2VgIGluc3RlYWQuJykgOiB2b2lkIDA7XG5cdCAgICAg
ICAgZGlkV2FybkNoZWNrZWRMaW5rID0gdHJ1ZTtcblx0ICAgICAgfVxuXHQgICAgICBpZiAocHJv
cHMuY2hlY2tlZCAhPT0gdW5kZWZpbmVkICYmIHByb3BzLmRlZmF1bHRDaGVja2VkICE9PSB1bmRl
ZmluZWQgJiYgIWRpZFdhcm5DaGVja2VkRGVmYXVsdENoZWNrZWQpIHtcblx0ICAgICAgICBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzIGNv
bnRhaW5zIGFuIGlucHV0IG9mIHR5cGUgJXMgd2l0aCBib3RoIGNoZWNrZWQgYW5kIGRlZmF1bHRD
aGVja2VkIHByb3BzLiAnICsgJ0lucHV0IGVsZW1lbnRzIG11c3QgYmUgZWl0aGVyIGNvbnRyb2xs
ZWQgb3IgdW5jb250cm9sbGVkICcgKyAnKHNwZWNpZnkgZWl0aGVyIHRoZSBjaGVja2VkIHByb3As
IG9yIHRoZSBkZWZhdWx0Q2hlY2tlZCBwcm9wLCBidXQgbm90ICcgKyAnYm90aCkuIERlY2lkZSBi
ZXR3ZWVuIHVzaW5nIGEgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgaW5wdXQgJyArICdlbGVt
ZW50IGFuZCByZW1vdmUgb25lIG9mIHRoZXNlIHByb3BzLiBNb3JlIGluZm86ICcgKyAnaHR0cHM6
Ly9mYi5tZS9yZWFjdC1jb250cm9sbGVkLWNvbXBvbmVudHMnLCBvd25lciAmJiBvd25lci5nZXRO
YW1lKCkgfHwgJ0EgY29tcG9uZW50JywgcHJvcHMudHlwZSkgOiB2b2lkIDA7XG5cdCAgICAgICAg
ZGlkV2FybkNoZWNrZWREZWZhdWx0Q2hlY2tlZCA9IHRydWU7XG5cdCAgICAgIH1cblx0ICAgICAg
aWYgKHByb3BzLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuZGVmYXVsdFZhbHVlICE9PSB1
bmRlZmluZWQgJiYgIWRpZFdhcm5WYWx1ZURlZmF1bHRWYWx1ZSkge1xuXHQgICAgICAgIHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMgY29u
dGFpbnMgYW4gaW5wdXQgb2YgdHlwZSAlcyB3aXRoIGJvdGggdmFsdWUgYW5kIGRlZmF1bHRWYWx1
ZSBwcm9wcy4gJyArICdJbnB1dCBlbGVtZW50cyBtdXN0IGJlIGVpdGhlciBjb250cm9sbGVkIG9y
IHVuY29udHJvbGxlZCAnICsgJyhzcGVjaWZ5IGVpdGhlciB0aGUgdmFsdWUgcHJvcCwgb3IgdGhl
IGRlZmF1bHRWYWx1ZSBwcm9wLCBidXQgbm90ICcgKyAnYm90aCkuIERlY2lkZSBiZXR3ZWVuIHVz
aW5nIGEgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgaW5wdXQgJyArICdlbGVtZW50IGFuZCBy
ZW1vdmUgb25lIG9mIHRoZXNlIHByb3BzLiBNb3JlIGluZm86ICcgKyAnaHR0cHM6Ly9mYi5tZS9y
ZWFjdC1jb250cm9sbGVkLWNvbXBvbmVudHMnLCBvd25lciAmJiBvd25lci5nZXROYW1lKCkgfHwg
J0EgY29tcG9uZW50JywgcHJvcHMudHlwZSkgOiB2b2lkIDA7XG5cdCAgICAgICAgZGlkV2FyblZh
bHVlRGVmYXVsdFZhbHVlID0gdHJ1ZTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIHZh
ciBkZWZhdWx0VmFsdWUgPSBwcm9wcy5kZWZhdWx0VmFsdWU7XG5cdCAgICBpbnN0Ll93cmFwcGVy
U3RhdGUgPSB7XG5cdCAgICAgIGluaXRpYWxDaGVja2VkOiBwcm9wcy5jaGVja2VkICE9IG51bGwg
PyBwcm9wcy5jaGVja2VkIDogcHJvcHMuZGVmYXVsdENoZWNrZWQsXG5cdCAgICAgIGluaXRpYWxW
YWx1ZTogcHJvcHMudmFsdWUgIT0gbnVsbCA/IHByb3BzLnZhbHVlIDogZGVmYXVsdFZhbHVlLFxu
XHQgICAgICBsaXN0ZW5lcnM6IG51bGwsXG5cdCAgICAgIG9uQ2hhbmdlOiBfaGFuZGxlQ2hhbmdl
LmJpbmQoaW5zdCksXG5cdCAgICAgIGNvbnRyb2xsZWQ6IGlzQ29udHJvbGxlZChwcm9wcylcblx0
ICAgIH07XG5cdCAgfSxcblx0XG5cdCAgdXBkYXRlV3JhcHBlcjogZnVuY3Rpb24gKGluc3QpIHtc
blx0ICAgIHZhciBwcm9wcyA9IGluc3QuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXHRcblx0ICAg
IGlmIChmYWxzZSkge1xuXHQgICAgICB2YXIgY29udHJvbGxlZCA9IGlzQ29udHJvbGxlZChwcm9w
cyk7XG5cdCAgICAgIHZhciBvd25lciA9IGluc3QuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcblx0
XG5cdCAgICAgIGlmICghaW5zdC5fd3JhcHBlclN0YXRlLmNvbnRyb2xsZWQgJiYgY29udHJvbGxl
ZCAmJiAhZGlkV2FyblVuY29udHJvbGxlZFRvQ29udHJvbGxlZCkge1xuXHQgICAgICAgIHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMgaXMg
Y2hhbmdpbmcgYW4gdW5jb250cm9sbGVkIGlucHV0IG9mIHR5cGUgJXMgdG8gYmUgY29udHJvbGxl
ZC4gJyArICdJbnB1dCBlbGVtZW50cyBzaG91bGQgbm90IHN3aXRjaCBmcm9tIHVuY29udHJvbGxl
ZCB0byBjb250cm9sbGVkIChvciB2aWNlIHZlcnNhKS4gJyArICdEZWNpZGUgYmV0d2VlbiB1c2lu
ZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIGlucHV0ICcgKyAnZWxlbWVudCBmb3IgdGhl
IGxpZmV0aW1lIG9mIHRoZSBjb21wb25lbnQuIE1vcmUgaW5mbzogaHR0cHM6Ly9mYi5tZS9yZWFj
dC1jb250cm9sbGVkLWNvbXBvbmVudHMnLCBvd25lciAmJiBvd25lci5nZXROYW1lKCkgfHwgJ0Eg
Y29tcG9uZW50JywgcHJvcHMudHlwZSkgOiB2b2lkIDA7XG5cdCAgICAgICAgZGlkV2FyblVuY29u
dHJvbGxlZFRvQ29udHJvbGxlZCA9IHRydWU7XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKGluc3Qu
X3dyYXBwZXJTdGF0ZS5jb250cm9sbGVkICYmICFjb250cm9sbGVkICYmICFkaWRXYXJuQ29udHJv
bGxlZFRvVW5jb250cm9sbGVkKSB7XG5cdCAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyBpcyBjaGFuZ2luZyBhIGNvbnRyb2xs
ZWQgaW5wdXQgb2YgdHlwZSAlcyB0byBiZSB1bmNvbnRyb2xsZWQuICcgKyAnSW5wdXQgZWxlbWVu
dHMgc2hvdWxkIG5vdCBzd2l0Y2ggZnJvbSBjb250cm9sbGVkIHRvIHVuY29udHJvbGxlZCAob3Ig
dmljZSB2ZXJzYSkuICcgKyAnRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVu
Y29udHJvbGxlZCBpbnB1dCAnICsgJ2VsZW1lbnQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgY29t
cG9uZW50LiBNb3JlIGluZm86IGh0dHBzOi8vZmIubWUvcmVhY3QtY29udHJvbGxlZC1jb21wb25l
bnRzJywgb3duZXIgJiYgb3duZXIuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcsIHByb3BzLnR5
cGUpIDogdm9pZCAwO1xuXHQgICAgICAgIGRpZFdhcm5Db250cm9sbGVkVG9VbmNvbnRyb2xsZWQg
PSB0cnVlO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgLy8gVE9ETzogU2hvdWxkbid0
IHRoaXMgYmUgZ2V0Q2hlY2tlZChwcm9wcyk/XG5cdCAgICB2YXIgY2hlY2tlZCA9IHByb3BzLmNo
ZWNrZWQ7XG5cdCAgICBpZiAoY2hlY2tlZCAhPSBudWxsKSB7XG5cdCAgICAgIERPTVByb3BlcnR5
T3BlcmF0aW9ucy5zZXRWYWx1ZUZvclByb3BlcnR5KFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRO
b2RlRnJvbUluc3RhbmNlKGluc3QpLCAnY2hlY2tlZCcsIGNoZWNrZWQgfHwgZmFsc2UpO1xuXHQg
ICAgfVxuXHRcblx0ICAgIHZhciBub2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVG
cm9tSW5zdGFuY2UoaW5zdCk7XG5cdCAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdl
dFZhbHVlKHByb3BzKTtcblx0ICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG5cdCAgICAgIGlmICh2
YWx1ZSA9PT0gMCAmJiBub2RlLnZhbHVlID09PSAnJykge1xuXHQgICAgICAgIG5vZGUudmFsdWUg
PSAnMCc7XG5cdCAgICAgICAgLy8gTm90ZTogSUU5IHJlcG9ydHMgYSBudW1iZXIgaW5wdXRzIGFz
ICd0ZXh0Jywgc28gY2hlY2sgcHJvcHMgaW5zdGVhZC5cblx0ICAgICAgfSBlbHNlIGlmIChwcm9w
cy50eXBlID09PSAnbnVtYmVyJykge1xuXHQgICAgICAgIC8vIFNpbXVsYXRlIGBpbnB1dC52YWx1
ZUFzTnVtYmVyYC4gSUU5IGRvZXMgbm90IHN1cHBvcnQgaXRcblx0ICAgICAgICB2YXIgdmFsdWVB
c051bWJlciA9IHBhcnNlRmxvYXQobm9kZS52YWx1ZSwgMTApIHx8IDA7XG5cdFxuXHQgICAgICAg
IGlmIChcblx0ICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcblx0ICAgICAgICB2
YWx1ZSAhPSB2YWx1ZUFzTnVtYmVyIHx8XG5cdCAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4
dC1saW5lXG5cdCAgICAgICAgdmFsdWUgPT0gdmFsdWVBc051bWJlciAmJiBub2RlLnZhbHVlICE9
IHZhbHVlKSB7XG5cdCAgICAgICAgICAvLyBDYXN0IGB2YWx1ZWAgdG8gYSBzdHJpbmcgdG8gZW5z
dXJlIHRoZSB2YWx1ZSBpcyBzZXQgY29ycmVjdGx5LiBXaGlsZVxuXHQgICAgICAgICAgLy8gYnJv
d3NlcnMgdHlwaWNhbGx5IGRvIHRoaXMgYXMgbmVjZXNzYXJ5LCBqc2RvbSBkb2Vzbid0LlxuXHQg
ICAgICAgICAgbm9kZS52YWx1ZSA9ICcnICsgdmFsdWU7XG5cdCAgICAgICAgfVxuXHQgICAgICB9
IGVsc2UgaWYgKG5vZGUudmFsdWUgIT09ICcnICsgdmFsdWUpIHtcblx0ICAgICAgICAvLyBDYXN0
IGB2YWx1ZWAgdG8gYSBzdHJpbmcgdG8gZW5zdXJlIHRoZSB2YWx1ZSBpcyBzZXQgY29ycmVjdGx5
LiBXaGlsZVxuXHQgICAgICAgIC8vIGJyb3dzZXJzIHR5cGljYWxseSBkbyB0aGlzIGFzIG5lY2Vz
c2FyeSwganNkb20gZG9lc24ndC5cblx0ICAgICAgICBub2RlLnZhbHVlID0gJycgKyB2YWx1ZTtc
blx0ICAgICAgfVxuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgaWYgKHByb3BzLnZhbHVlID09IG51
bGwgJiYgcHJvcHMuZGVmYXVsdFZhbHVlICE9IG51bGwpIHtcblx0ICAgICAgICAvLyBJbiBDaHJv
bWUsIGFzc2lnbmluZyBkZWZhdWx0VmFsdWUgdG8gY2VydGFpbiBpbnB1dCB0eXBlcyB0cmlnZ2Vy
cyBpbnB1dCB2YWxpZGF0aW9uLlxuXHQgICAgICAgIC8vIEZvciBudW1iZXIgaW5wdXRzLCB0aGUg
ZGlzcGxheSB2YWx1ZSBsb3NlcyB0cmFpbGluZyBkZWNpbWFsIHBvaW50cy4gRm9yIGVtYWlsIGlu
cHV0cyxcblx0ICAgICAgICAvLyBDaHJvbWUgcmFpc2VzIFwiVGhlIHNwZWNpZmllZCB2YWx1ZSA8
eD4gaXMgbm90IGEgdmFsaWQgZW1haWwgYWRkcmVzc1wiLlxuXHQgICAgICAgIC8vXG5cdCAgICAg
ICAgLy8gSGVyZSB3ZSBjaGVjayB0byBzZWUgaWYgdGhlIGRlZmF1bHRWYWx1ZSBoYXMgYWN0dWFs
bHkgY2hhbmdlZCwgYXZvaWRpbmcgdGhlc2UgcHJvYmxlbXNcblx0ICAgICAgICAvLyB3aGVuIHRo
ZSB1c2VyIGlzIGlucHV0dGluZyB0ZXh0XG5cdCAgICAgICAgLy9cblx0ICAgICAgICAvLyBodHRw
czovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzcyNTNcblx0ICAgICAgICBpZiAo
bm9kZS5kZWZhdWx0VmFsdWUgIT09ICcnICsgcHJvcHMuZGVmYXVsdFZhbHVlKSB7XG5cdCAgICAg
ICAgICBub2RlLmRlZmF1bHRWYWx1ZSA9ICcnICsgcHJvcHMuZGVmYXVsdFZhbHVlO1xuXHQgICAg
ICAgIH1cblx0ICAgICAgfVxuXHQgICAgICBpZiAocHJvcHMuY2hlY2tlZCA9PSBudWxsICYmIHBy
b3BzLmRlZmF1bHRDaGVja2VkICE9IG51bGwpIHtcblx0ICAgICAgICBub2RlLmRlZmF1bHRDaGVj
a2VkID0gISFwcm9wcy5kZWZhdWx0Q2hlY2tlZDtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH0s
XG5cdFxuXHQgIHBvc3RNb3VudFdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7XG5cdCAgICB2YXIg
cHJvcHMgPSBpbnN0Ll9jdXJyZW50RWxlbWVudC5wcm9wcztcblx0XG5cdCAgICAvLyBUaGlzIGlz
IGluIHBvc3RNb3VudCBiZWNhdXNlIHdlIG5lZWQgYWNjZXNzIHRvIHRoZSBET00gbm9kZSwgd2hp
Y2ggaXMgbm90XG5cdCAgICAvLyBhdmFpbGFibGUgdW50aWwgYWZ0ZXIgdGhlIGNvbXBvbmVudCBo
YXMgbW91bnRlZC5cblx0ICAgIHZhciBub2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5v
ZGVGcm9tSW5zdGFuY2UoaW5zdCk7XG5cdFxuXHQgICAgLy8gRGV0YWNoIHZhbHVlIGZyb20gZGVm
YXVsdFZhbHVlLiBXZSB3b24ndCBkbyBhbnl0aGluZyBpZiB3ZSdyZSB3b3JraW5nIG9uXG5cdCAg
ICAvLyBzdWJtaXQgb3IgcmVzZXQgaW5wdXRzIGFzIHRob3NlIHZhbHVlcyAmIGRlZmF1bHRWYWx1
ZXMgYXJlIGxpbmtlZC4gVGhleVxuXHQgICAgLy8gYXJlIG5vdCByZXNldGFibGUgbm9kZXMgc28g
dGhpcyBvcGVyYXRpb24gZG9lc24ndCBtYXR0ZXIgYW5kIGFjdHVhbGx5XG5cdCAgICAvLyByZW1v
dmVzIGJyb3dzZXItZGVmYXVsdCB2YWx1ZXMgKGVnIFwiU3VibWl0IFF1ZXJ5XCIpIHdoZW4gbm8g
dmFsdWUgaXNcblx0ICAgIC8vIHByb3ZpZGVkLlxuXHRcblx0ICAgIHN3aXRjaCAocHJvcHMudHlw
ZSkge1xuXHQgICAgICBjYXNlICdzdWJtaXQnOlxuXHQgICAgICBjYXNlICdyZXNldCc6XG5cdCAg
ICAgICAgYnJlYWs7XG5cdCAgICAgIGNhc2UgJ2NvbG9yJzpcblx0ICAgICAgY2FzZSAnZGF0ZSc6
XG5cdCAgICAgIGNhc2UgJ2RhdGV0aW1lJzpcblx0ICAgICAgY2FzZSAnZGF0ZXRpbWUtbG9jYWwn
OlxuXHQgICAgICBjYXNlICdtb250aCc6XG5cdCAgICAgIGNhc2UgJ3RpbWUnOlxuXHQgICAgICBj
YXNlICd3ZWVrJzpcblx0ICAgICAgICAvLyBUaGlzIGZpeGVzIHRoZSBuby1zaG93IGlzc3VlIG9u
IGlPUyBTYWZhcmkgYW5kIEFuZHJvaWQgQ2hyb21lOlxuXHQgICAgICAgIC8vIGh0dHBzOi8vZ2l0
aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzIzM1xuXHQgICAgICAgIG5vZGUudmFsdWUg
PSAnJztcblx0ICAgICAgICBub2RlLnZhbHVlID0gbm9kZS5kZWZhdWx0VmFsdWU7XG5cdCAgICAg
ICAgYnJlYWs7XG5cdCAgICAgIGRlZmF1bHQ6XG5cdCAgICAgICAgbm9kZS52YWx1ZSA9IG5vZGUu
dmFsdWU7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICB9XG5cdFxuXHQgICAgLy8gTm9ybWFsbHks
IHdlJ2QganVzdCBkbyBgbm9kZS5jaGVja2VkID0gbm9kZS5jaGVja2VkYCB1cG9uIGluaXRpYWwg
bW91bnQsIGxlc3MgdGhpcyBidWdcblx0ICAgIC8vIHRoaXMgaXMgbmVlZGVkIHRvIHdvcmsgYXJv
dW5kIGEgY2hyb21lIGJ1ZyB3aGVyZSBzZXR0aW5nIGRlZmF1bHRDaGVja2VkXG5cdCAgICAvLyB3
aWxsIHNvbWV0aW1lcyBpbmZsdWVuY2UgdGhlIHZhbHVlIG9mIGNoZWNrZWQgKGV2ZW4gYWZ0ZXIg
ZGV0YWNobWVudCkuXG5cdCAgICAvLyBSZWZlcmVuY2U6IGh0dHBzOi8vYnVncy5jaHJvbWl1bS5v
cmcvcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTYwODQxNlxuXHQgICAgLy8gV2UgbmVlZCB0
byB0ZW1wb3JhcmlseSB1bnNldCBuYW1lIHRvIGF2b2lkIGRpc3J1cHRpbmcgcmFkaW8gYnV0dG9u
IGdyb3Vwcy5cblx0ICAgIHZhciBuYW1lID0gbm9kZS5uYW1lO1xuXHQgICAgaWYgKG5hbWUgIT09
ICcnKSB7XG5cdCAgICAgIG5vZGUubmFtZSA9ICcnO1xuXHQgICAgfVxuXHQgICAgbm9kZS5kZWZh
dWx0Q2hlY2tlZCA9ICFub2RlLmRlZmF1bHRDaGVja2VkO1xuXHQgICAgbm9kZS5kZWZhdWx0Q2hl
Y2tlZCA9ICFub2RlLmRlZmF1bHRDaGVja2VkO1xuXHQgICAgaWYgKG5hbWUgIT09ICcnKSB7XG5c
dCAgICAgIG5vZGUubmFtZSA9IG5hbWU7XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0ZnVu
Y3Rpb24gX2hhbmRsZUNoYW5nZShldmVudCkge1xuXHQgIHZhciBwcm9wcyA9IHRoaXMuX2N1cnJl
bnRFbGVtZW50LnByb3BzO1xuXHRcblx0ICB2YXIgcmV0dXJuVmFsdWUgPSBMaW5rZWRWYWx1ZVV0
aWxzLmV4ZWN1dGVPbkNoYW5nZShwcm9wcywgZXZlbnQpO1xuXHRcblx0ICAvLyBIZXJlIHdlIHVz
ZSBhc2FwIHRvIHdhaXQgdW50aWwgYWxsIHVwZGF0ZXMgaGF2ZSBwcm9wYWdhdGVkLCB3aGljaFxu
XHQgIC8vIGlzIGltcG9ydGFudCB3aGVuIHVzaW5nIGNvbnRyb2xsZWQgY29tcG9uZW50cyB3aXRo
aW4gbGF5ZXJzOlxuXHQgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1
ZXMvMTY5OFxuXHQgIFJlYWN0VXBkYXRlcy5hc2FwKGZvcmNlVXBkYXRlSWZNb3VudGVkLCB0aGlz
KTtcblx0XG5cdCAgdmFyIG5hbWUgPSBwcm9wcy5uYW1lO1xuXHQgIGlmIChwcm9wcy50eXBlID09
PSAncmFkaW8nICYmIG5hbWUgIT0gbnVsbCkge1xuXHQgICAgdmFyIHJvb3ROb2RlID0gUmVhY3RE
T01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UodGhpcyk7XG5cdCAgICB2YXIgcXVl
cnlSb290ID0gcm9vdE5vZGU7XG5cdFxuXHQgICAgd2hpbGUgKHF1ZXJ5Um9vdC5wYXJlbnROb2Rl
KSB7XG5cdCAgICAgIHF1ZXJ5Um9vdCA9IHF1ZXJ5Um9vdC5wYXJlbnROb2RlO1xuXHQgICAgfVxu
XHRcblx0ICAgIC8vIElmIGByb290Tm9kZS5mb3JtYCB3YXMgbm9uLW51bGwsIHRoZW4gd2UgY291
bGQgdHJ5IGBmb3JtLmVsZW1lbnRzYCxcblx0ICAgIC8vIGJ1dCB0aGF0IHNvbWV0aW1lcyBiZWhh
dmVzIHN0cmFuZ2VseSBpbiBJRTguIFdlIGNvdWxkIGFsc28gdHJ5IHVzaW5nXG5cdCAgICAvLyBg
Zm9ybS5nZXRFbGVtZW50c0J5TmFtZWAsIGJ1dCB0aGF0IHdpbGwgb25seSByZXR1cm4gZGlyZWN0
IGNoaWxkcmVuXG5cdCAgICAvLyBhbmQgd29uJ3QgaW5jbHVkZSBpbnB1dHMgdGhhdCB1c2UgdGhl
IEhUTUw1IGBmb3JtPWAgYXR0cmlidXRlLiBTaW5jZVxuXHQgICAgLy8gdGhlIGlucHV0IG1pZ2h0
IG5vdCBldmVuIGJlIGluIGEgZm9ybSwgbGV0J3MganVzdCB1c2UgdGhlIGdsb2JhbFxuXHQgICAg
Ly8gYHF1ZXJ5U2VsZWN0b3JBbGxgIHRvIGVuc3VyZSB3ZSBkb24ndCBtaXNzIGFueXRoaW5nLlxu
XHQgICAgdmFyIGdyb3VwID0gcXVlcnlSb290LnF1ZXJ5U2VsZWN0b3JBbGwoJ2lucHV0W25hbWU9
JyArIEpTT04uc3RyaW5naWZ5KCcnICsgbmFtZSkgKyAnXVt0eXBlPVwicmFkaW9cIl0nKTtcblx0
XG5cdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdyb3VwLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAg
IHZhciBvdGhlck5vZGUgPSBncm91cFtpXTtcblx0ICAgICAgaWYgKG90aGVyTm9kZSA9PT0gcm9v
dE5vZGUgfHwgb3RoZXJOb2RlLmZvcm0gIT09IHJvb3ROb2RlLmZvcm0pIHtcblx0ICAgICAgICBj
b250aW51ZTtcblx0ICAgICAgfVxuXHQgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgaWYgcmFkaW8g
YnV0dG9ucyByZW5kZXJlZCBieSBkaWZmZXJlbnQgY29waWVzIG9mIFJlYWN0XG5cdCAgICAgIC8v
IGFuZCB0aGUgc2FtZSBuYW1lIGFyZSByZW5kZXJlZCBpbnRvIHRoZSBzYW1lIGZvcm0gKHNhbWUg
YXMgIzE5MzkpLlxuXHQgICAgICAvLyBUaGF0J3MgcHJvYmFibHkgb2theTsgd2UgZG9uJ3Qgc3Vw
cG9ydCBpdCBqdXN0IGFzIHdlIGRvbid0IHN1cHBvcnRcblx0ICAgICAgLy8gbWl4aW5nIFJlYWN0
IHJhZGlvIGJ1dHRvbnMgd2l0aCBub24tUmVhY3Qgb25lcy5cblx0ICAgICAgdmFyIG90aGVySW5z
dGFuY2UgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShvdGhlck5v
ZGUpO1xuXHQgICAgICAhb3RoZXJJbnN0YW5jZSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwg
J1JlYWN0RE9NSW5wdXQ6IE1peGluZyBSZWFjdCBhbmQgbm9uLVJlYWN0IHJhZGlvIGlucHV0cyB3
aXRoIHRoZSBzYW1lIGBuYW1lYCBpcyBub3Qgc3VwcG9ydGVkLicpIDogX3Byb2RJbnZhcmlhbnQo
JzkwJykgOiB2b2lkIDA7XG5cdCAgICAgIC8vIElmIHRoaXMgaXMgYSBjb250cm9sbGVkIHJhZGlv
IGJ1dHRvbiBncm91cCwgZm9yY2luZyB0aGUgaW5wdXQgdGhhdFxuXHQgICAgICAvLyB3YXMgcHJl
dmlvdXNseSBjaGVja2VkIHRvIHVwZGF0ZSB3aWxsIGNhdXNlIGl0IHRvIGJlIGNvbWUgcmUtY2hl
Y2tlZFxuXHQgICAgICAvLyBhcyBhcHByb3ByaWF0ZS5cblx0ICAgICAgUmVhY3RVcGRhdGVzLmFz
YXAoZm9yY2VVcGRhdGVJZk1vdW50ZWQsIG90aGVySW5zdGFuY2UpO1xuXHQgICAgfVxuXHQgIH1c
blx0XG5cdCAgcmV0dXJuIHJldHVyblZhbHVlO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9
IFJlYWN0RE9NSW5wdXQ7XG5cbi8qKiovIH0sXG4vKiAxNDQgKi9cbi8qKiovIGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5c
dCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0
XG5cdHZhciBfYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0XG5cdHZhciBSZWFj
dCA9IF9fd2VicGFja19yZXF1aXJlX18oMTcpO1xuXHR2YXIgUmVhY3RET01Db21wb25lbnRUcmVl
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblx0dmFyIFJlYWN0RE9NU2VsZWN0ID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg2Mik7XG5cdFxuXHR2YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJl
X18oMik7XG5cdHZhciBkaWRXYXJuSW52YWxpZE9wdGlvbkNoaWxkcmVuID0gZmFsc2U7XG5cdFxu
XHRmdW5jdGlvbiBmbGF0dGVuQ2hpbGRyZW4oY2hpbGRyZW4pIHtcblx0ICB2YXIgY29udGVudCA9
ICcnO1xuXHRcblx0ICAvLyBGbGF0dGVuIGNoaWxkcmVuIGFuZCB3YXJuIGlmIHRoZXkgYXJlbid0
IHN0cmluZ3Mgb3IgbnVtYmVycztcblx0ICAvLyBpbnZhbGlkIHR5cGVzIGFyZSBpZ25vcmVkLlxu
XHQgIFJlYWN0LkNoaWxkcmVuLmZvckVhY2goY2hpbGRyZW4sIGZ1bmN0aW9uIChjaGlsZCkge1xu
XHQgICAgaWYgKGNoaWxkID09IG51bGwpIHtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHQg
ICAgaWYgKHR5cGVvZiBjaGlsZCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIGNoaWxkID09PSAnbnVt
YmVyJykge1xuXHQgICAgICBjb250ZW50ICs9IGNoaWxkO1xuXHQgICAgfSBlbHNlIGlmICghZGlk
V2FybkludmFsaWRPcHRpb25DaGlsZHJlbikge1xuXHQgICAgICBkaWRXYXJuSW52YWxpZE9wdGlv
bkNoaWxkcmVuID0gdHJ1ZTtcblx0ICAgICAgIGZhbHNlID8gd2FybmluZyhmYWxzZSwgJ09ubHkg
c3RyaW5ncyBhbmQgbnVtYmVycyBhcmUgc3VwcG9ydGVkIGFzIDxvcHRpb24+IGNoaWxkcmVuLicp
IDogdm9pZCAwO1xuXHQgICAgfVxuXHQgIH0pO1xuXHRcblx0ICByZXR1cm4gY29udGVudDtcblx0
fVxuXHRcblx0LyoqXG5cdCAqIEltcGxlbWVudHMgYW4gPG9wdGlvbj4gaG9zdCBjb21wb25lbnQg
dGhhdCB3YXJucyB3aGVuIGBzZWxlY3RlZGAgaXMgc2V0LlxuXHQgKi9cblx0dmFyIFJlYWN0RE9N
T3B0aW9uID0ge1xuXHQgIG1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QsIHByb3BzLCBob3N0
UGFyZW50KSB7XG5cdCAgICAvLyBUT0RPICh5dW5nc3RlcnMpOiBSZW1vdmUgc3VwcG9ydCBmb3Ig
YHNlbGVjdGVkYCBpbiA8b3B0aW9uPi5cblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhwcm9wcy5zZWxlY3Rl
ZCA9PSBudWxsLCAnVXNlIHRoZSBgZGVmYXVsdFZhbHVlYCBvciBgdmFsdWVgIHByb3BzIG9uIDxz
ZWxlY3Q+IGluc3RlYWQgb2YgJyArICdzZXR0aW5nIGBzZWxlY3RlZGAgb24gPG9wdGlvbj4uJykg
OiB2b2lkIDA7XG5cdCAgICB9XG5cdFxuXHQgICAgLy8gTG9vayB1cCB3aGV0aGVyIHRoaXMgb3B0
aW9uIGlzICdzZWxlY3RlZCdcblx0ICAgIHZhciBzZWxlY3RWYWx1ZSA9IG51bGw7XG5cdCAgICBp
ZiAoaG9zdFBhcmVudCAhPSBudWxsKSB7XG5cdCAgICAgIHZhciBzZWxlY3RQYXJlbnQgPSBob3N0
UGFyZW50O1xuXHRcblx0ICAgICAgaWYgKHNlbGVjdFBhcmVudC5fdGFnID09PSAnb3B0Z3JvdXAn
KSB7XG5cdCAgICAgICAgc2VsZWN0UGFyZW50ID0gc2VsZWN0UGFyZW50Ll9ob3N0UGFyZW50O1xu
XHQgICAgICB9XG5cdFxuXHQgICAgICBpZiAoc2VsZWN0UGFyZW50ICE9IG51bGwgJiYgc2VsZWN0
UGFyZW50Ll90YWcgPT09ICdzZWxlY3QnKSB7XG5cdCAgICAgICAgc2VsZWN0VmFsdWUgPSBSZWFj
dERPTVNlbGVjdC5nZXRTZWxlY3RWYWx1ZUNvbnRleHQoc2VsZWN0UGFyZW50KTtcblx0ICAgICAg
fVxuXHQgICAgfVxuXHRcblx0ICAgIC8vIElmIHRoZSB2YWx1ZSBpcyBudWxsIChlLmcuLCBubyBz
cGVjaWZpZWQgdmFsdWUgb3IgYWZ0ZXIgaW5pdGlhbCBtb3VudClcblx0ICAgIC8vIG9yIG1pc3Np
bmcgKGUuZy4sIGZvciA8ZGF0YWxpc3Q+KSwgd2UgZG9uJ3QgY2hhbmdlIHByb3BzLnNlbGVjdGVk
XG5cdCAgICB2YXIgc2VsZWN0ZWQgPSBudWxsO1xuXHQgICAgaWYgKHNlbGVjdFZhbHVlICE9IG51
bGwpIHtcblx0ICAgICAgdmFyIHZhbHVlO1xuXHQgICAgICBpZiAocHJvcHMudmFsdWUgIT0gbnVs
bCkge1xuXHQgICAgICAgIHZhbHVlID0gcHJvcHMudmFsdWUgKyAnJztcblx0ICAgICAgfSBlbHNl
IHtcblx0ICAgICAgICB2YWx1ZSA9IGZsYXR0ZW5DaGlsZHJlbihwcm9wcy5jaGlsZHJlbik7XG5c
dCAgICAgIH1cblx0ICAgICAgc2VsZWN0ZWQgPSBmYWxzZTtcblx0ICAgICAgaWYgKEFycmF5Lmlz
QXJyYXkoc2VsZWN0VmFsdWUpKSB7XG5cdCAgICAgICAgLy8gbXVsdGlwbGVcblx0ICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHNlbGVjdFZhbHVlLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAg
ICBpZiAoJycgKyBzZWxlY3RWYWx1ZVtpXSA9PT0gdmFsdWUpIHtcblx0ICAgICAgICAgICAgc2Vs
ZWN0ZWQgPSB0cnVlO1xuXHQgICAgICAgICAgICBicmVhaztcblx0ICAgICAgICAgIH1cblx0ICAg
ICAgICB9XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgc2VsZWN0ZWQgPSAnJyArIHNlbGVj
dFZhbHVlID09PSB2YWx1ZTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIGluc3QuX3dy
YXBwZXJTdGF0ZSA9IHsgc2VsZWN0ZWQ6IHNlbGVjdGVkIH07XG5cdCAgfSxcblx0XG5cdCAgcG9z
dE1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QpIHtcblx0ICAgIC8vIHZhbHVlPVwiXCIgc2hv
dWxkIG1ha2UgYSB2YWx1ZSBhdHRyaWJ1dGUgKCM2MjE5KVxuXHQgICAgdmFyIHByb3BzID0gaW5z
dC5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cdCAgICBpZiAocHJvcHMudmFsdWUgIT0gbnVsbCkg
e1xuXHQgICAgICB2YXIgbm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUlu
c3RhbmNlKGluc3QpO1xuXHQgICAgICBub2RlLnNldEF0dHJpYnV0ZSgndmFsdWUnLCBwcm9wcy52
YWx1ZSk7XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgZ2V0SG9zdFByb3BzOiBmdW5jdGlvbiAo
aW5zdCwgcHJvcHMpIHtcblx0ICAgIHZhciBob3N0UHJvcHMgPSBfYXNzaWduKHsgc2VsZWN0ZWQ6
IHVuZGVmaW5lZCwgY2hpbGRyZW46IHVuZGVmaW5lZCB9LCBwcm9wcyk7XG5cdFxuXHQgICAgLy8g
UmVhZCBzdGF0ZSBvbmx5IGZyb20gaW5pdGlhbCBtb3VudCBiZWNhdXNlIDxzZWxlY3Q+IHVwZGF0
ZXMgdmFsdWVcblx0ICAgIC8vIG1hbnVhbGx5OyB3ZSBuZWVkIHRoZSBpbml0aWFsIHN0YXRlIG9u
bHkgZm9yIHNlcnZlciByZW5kZXJpbmdcblx0ICAgIGlmIChpbnN0Ll93cmFwcGVyU3RhdGUuc2Vs
ZWN0ZWQgIT0gbnVsbCkge1xuXHQgICAgICBob3N0UHJvcHMuc2VsZWN0ZWQgPSBpbnN0Ll93cmFw
cGVyU3RhdGUuc2VsZWN0ZWQ7XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIGNvbnRlbnQgPSBmbGF0
dGVuQ2hpbGRyZW4ocHJvcHMuY2hpbGRyZW4pO1xuXHRcblx0ICAgIGlmIChjb250ZW50KSB7XG5c
dCAgICAgIGhvc3RQcm9wcy5jaGlsZHJlbiA9IGNvbnRlbnQ7XG5cdCAgICB9XG5cdFxuXHQgICAg
cmV0dXJuIGhvc3RQcm9wcztcblx0ICB9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJl
YWN0RE9NT3B0aW9uO1xuXG4vKioqLyB9LFxuLyogMTQ1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxu
XHR2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xuXHRc
blx0dmFyIGdldE5vZGVGb3JDaGFyYWN0ZXJPZmZzZXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4
Myk7XG5cdHZhciBnZXRUZXh0Q29udGVudEFjY2Vzc29yID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3
Myk7XG5cdFxuXHQvKipcblx0ICogV2hpbGUgYGlzQ29sbGFwc2VkYCBpcyBhdmFpbGFibGUgb24g
dGhlIFNlbGVjdGlvbiBvYmplY3QgYW5kIGBjb2xsYXBzZWRgXG5cdCAqIGlzIGF2YWlsYWJsZSBv
biB0aGUgUmFuZ2Ugb2JqZWN0LCBJRTExIHNvbWV0aW1lcyBnZXRzIHRoZW0gd3JvbmcuXG5cdCAq
IElmIHRoZSBhbmNob3IvZm9jdXMgbm9kZXMgYW5kIG9mZnNldHMgYXJlIHRoZSBzYW1lLCB0aGUg
cmFuZ2UgaXMgY29sbGFwc2VkLlxuXHQgKi9cblx0ZnVuY3Rpb24gaXNDb2xsYXBzZWQoYW5jaG9y
Tm9kZSwgYW5jaG9yT2Zmc2V0LCBmb2N1c05vZGUsIGZvY3VzT2Zmc2V0KSB7XG5cdCAgcmV0dXJu
IGFuY2hvck5vZGUgPT09IGZvY3VzTm9kZSAmJiBhbmNob3JPZmZzZXQgPT09IGZvY3VzT2Zmc2V0
O1xuXHR9XG5cdFxuXHQvKipcblx0ICogR2V0IHRoZSBhcHByb3ByaWF0ZSBhbmNob3IgYW5kIGZv
Y3VzIG5vZGUvb2Zmc2V0IHBhaXJzIGZvciBJRS5cblx0ICpcblx0ICogVGhlIGNhdGNoIGhlcmUg
aXMgdGhhdCBJRSdzIHNlbGVjdGlvbiBBUEkgZG9lc24ndCBwcm92aWRlIGluZm9ybWF0aW9uXG5c
dCAqIGFib3V0IHdoZXRoZXIgdGhlIHNlbGVjdGlvbiBpcyBmb3J3YXJkIG9yIGJhY2t3YXJkLCBz
byB3ZSBoYXZlIHRvXG5cdCAqIGJlaGF2ZSBhcyB0aG91Z2ggaXQncyBhbHdheXMgZm9yd2FyZC5c
blx0ICpcblx0ICogSUUgdGV4dCBkaWZmZXJzIGZyb20gbW9kZXJuIHNlbGVjdGlvbiBpbiB0aGF0
IGl0IGJlaGF2ZXMgYXMgdGhvdWdoXG5cdCAqIGJsb2NrIGVsZW1lbnRzIGVuZCB3aXRoIGEgbmV3
IGxpbmUuIFRoaXMgbWVhbnMgY2hhcmFjdGVyIG9mZnNldHMgd2lsbFxuXHQgKiBkaWZmZXIgYmV0
d2VlbiB0aGUgdHdvIEFQSXMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxu
XHQgKiBAcmV0dXJuIHtvYmplY3R9XG5cdCAqL1xuXHRmdW5jdGlvbiBnZXRJRU9mZnNldHMobm9k
ZSkge1xuXHQgIHZhciBzZWxlY3Rpb24gPSBkb2N1bWVudC5zZWxlY3Rpb247XG5cdCAgdmFyIHNl
bGVjdGVkUmFuZ2UgPSBzZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTtcblx0ICB2YXIgc2VsZWN0ZWRM
ZW5ndGggPSBzZWxlY3RlZFJhbmdlLnRleHQubGVuZ3RoO1xuXHRcblx0ICAvLyBEdXBsaWNhdGUg
c2VsZWN0aW9uIHNvIHdlIGNhbiBtb3ZlIHJhbmdlIHdpdGhvdXQgYnJlYWtpbmcgdXNlciBzZWxl
Y3Rpb24uXG5cdCAgdmFyIGZyb21TdGFydCA9IHNlbGVjdGVkUmFuZ2UuZHVwbGljYXRlKCk7XG5c
dCAgZnJvbVN0YXJ0Lm1vdmVUb0VsZW1lbnRUZXh0KG5vZGUpO1xuXHQgIGZyb21TdGFydC5zZXRF
bmRQb2ludCgnRW5kVG9TdGFydCcsIHNlbGVjdGVkUmFuZ2UpO1xuXHRcblx0ICB2YXIgc3RhcnRP
ZmZzZXQgPSBmcm9tU3RhcnQudGV4dC5sZW5ndGg7XG5cdCAgdmFyIGVuZE9mZnNldCA9IHN0YXJ0
T2Zmc2V0ICsgc2VsZWN0ZWRMZW5ndGg7XG5cdFxuXHQgIHJldHVybiB7XG5cdCAgICBzdGFydDog
c3RhcnRPZmZzZXQsXG5cdCAgICBlbmQ6IGVuZE9mZnNldFxuXHQgIH07XG5cdH1cblx0XG5cdC8q
KlxuXHQgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVcblx0ICogQHJldHVybiB7P29iamVjdH1c
blx0ICovXG5cdGZ1bmN0aW9uIGdldE1vZGVybk9mZnNldHMobm9kZSkge1xuXHQgIHZhciBzZWxl
Y3Rpb24gPSB3aW5kb3cuZ2V0U2VsZWN0aW9uICYmIHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcblx0
XG5cdCAgaWYgKCFzZWxlY3Rpb24gfHwgc2VsZWN0aW9uLnJhbmdlQ291bnQgPT09IDApIHtcblx0
ICAgIHJldHVybiBudWxsO1xuXHQgIH1cblx0XG5cdCAgdmFyIGFuY2hvck5vZGUgPSBzZWxlY3Rp
b24uYW5jaG9yTm9kZTtcblx0ICB2YXIgYW5jaG9yT2Zmc2V0ID0gc2VsZWN0aW9uLmFuY2hvck9m
ZnNldDtcblx0ICB2YXIgZm9jdXNOb2RlID0gc2VsZWN0aW9uLmZvY3VzTm9kZTtcblx0ICB2YXIg
Zm9jdXNPZmZzZXQgPSBzZWxlY3Rpb24uZm9jdXNPZmZzZXQ7XG5cdFxuXHQgIHZhciBjdXJyZW50
UmFuZ2UgPSBzZWxlY3Rpb24uZ2V0UmFuZ2VBdCgwKTtcblx0XG5cdCAgLy8gSW4gRmlyZWZveCwg
cmFuZ2Uuc3RhcnRDb250YWluZXIgYW5kIHJhbmdlLmVuZENvbnRhaW5lciBjYW4gYmUgXCJhbm9u
eW1vdXNcblx0ICAvLyBkaXZzXCIsIGUuZy4gdGhlIHVwL2Rvd24gYnV0dG9ucyBvbiBhbiA8aW5w
dXQgdHlwZT1cIm51bWJlclwiPi4gQW5vbnltb3VzXG5cdCAgLy8gZGl2cyBkbyBub3Qgc2VlbSB0
byBleHBvc2UgcHJvcGVydGllcywgdHJpZ2dlcmluZyBhIFwiUGVybWlzc2lvbiBkZW5pZWRcblx0
ICAvLyBlcnJvclwiIGlmIGFueSBvZiBpdHMgcHJvcGVydGllcyBhcmUgYWNjZXNzZWQuIFRoZSBv
bmx5IHNlZW1pbmdseSBwb3NzaWJsZVxuXHQgIC8vIHdheSB0byBhdm9pZCBlcnJvcmluZyBpcyB0
byBhY2Nlc3MgYSBwcm9wZXJ0eSB0aGF0IHR5cGljYWxseSB3b3JrcyBmb3Jcblx0ICAvLyBub24t
YW5vbnltb3VzIGRpdnMgYW5kIGNhdGNoIGFueSBlcnJvciB0aGF0IG1heSBvdGhlcndpc2UgYXJp
c2UuIFNlZVxuXHQgIC8vIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dp
P2lkPTIwODQyN1xuXHQgIHRyeSB7XG5cdCAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQt
ZXhwcmVzc2lvbnMgKi9cblx0ICAgIGN1cnJlbnRSYW5nZS5zdGFydENvbnRhaW5lci5ub2RlVHlw
ZTtcblx0ICAgIGN1cnJlbnRSYW5nZS5lbmRDb250YWluZXIubm9kZVR5cGU7XG5cdCAgICAvKiBl
c2xpbnQtZW5hYmxlIG5vLXVudXNlZC1leHByZXNzaW9ucyAqL1xuXHQgIH0gY2F0Y2ggKGUpIHtc
blx0ICAgIHJldHVybiBudWxsO1xuXHQgIH1cblx0XG5cdCAgLy8gSWYgdGhlIG5vZGUgYW5kIG9m
ZnNldCB2YWx1ZXMgYXJlIHRoZSBzYW1lLCB0aGUgc2VsZWN0aW9uIGlzIGNvbGxhcHNlZC5cblx0
ICAvLyBgU2VsZWN0aW9uLmlzQ29sbGFwc2VkYCBpcyBhdmFpbGFibGUgbmF0aXZlbHksIGJ1dCBJ
RSBzb21ldGltZXMgZ2V0c1xuXHQgIC8vIHRoaXMgdmFsdWUgd3JvbmcuXG5cdCAgdmFyIGlzU2Vs
ZWN0aW9uQ29sbGFwc2VkID0gaXNDb2xsYXBzZWQoc2VsZWN0aW9uLmFuY2hvck5vZGUsIHNlbGVj
dGlvbi5hbmNob3JPZmZzZXQsIHNlbGVjdGlvbi5mb2N1c05vZGUsIHNlbGVjdGlvbi5mb2N1c09m
ZnNldCk7XG5cdFxuXHQgIHZhciByYW5nZUxlbmd0aCA9IGlzU2VsZWN0aW9uQ29sbGFwc2VkID8g
MCA6IGN1cnJlbnRSYW5nZS50b1N0cmluZygpLmxlbmd0aDtcblx0XG5cdCAgdmFyIHRlbXBSYW5n
ZSA9IGN1cnJlbnRSYW5nZS5jbG9uZVJhbmdlKCk7XG5cdCAgdGVtcFJhbmdlLnNlbGVjdE5vZGVD
b250ZW50cyhub2RlKTtcblx0ICB0ZW1wUmFuZ2Uuc2V0RW5kKGN1cnJlbnRSYW5nZS5zdGFydENv
bnRhaW5lciwgY3VycmVudFJhbmdlLnN0YXJ0T2Zmc2V0KTtcblx0XG5cdCAgdmFyIGlzVGVtcFJh
bmdlQ29sbGFwc2VkID0gaXNDb2xsYXBzZWQodGVtcFJhbmdlLnN0YXJ0Q29udGFpbmVyLCB0ZW1w
UmFuZ2Uuc3RhcnRPZmZzZXQsIHRlbXBSYW5nZS5lbmRDb250YWluZXIsIHRlbXBSYW5nZS5lbmRP
ZmZzZXQpO1xuXHRcblx0ICB2YXIgc3RhcnQgPSBpc1RlbXBSYW5nZUNvbGxhcHNlZCA/IDAgOiB0
ZW1wUmFuZ2UudG9TdHJpbmcoKS5sZW5ndGg7XG5cdCAgdmFyIGVuZCA9IHN0YXJ0ICsgcmFuZ2VM
ZW5ndGg7XG5cdFxuXHQgIC8vIERldGVjdCB3aGV0aGVyIHRoZSBzZWxlY3Rpb24gaXMgYmFja3dh
cmQuXG5cdCAgdmFyIGRldGVjdGlvblJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcblx0
ICBkZXRlY3Rpb25SYW5nZS5zZXRTdGFydChhbmNob3JOb2RlLCBhbmNob3JPZmZzZXQpO1xuXHQg
IGRldGVjdGlvblJhbmdlLnNldEVuZChmb2N1c05vZGUsIGZvY3VzT2Zmc2V0KTtcblx0ICB2YXIg
aXNCYWNrd2FyZCA9IGRldGVjdGlvblJhbmdlLmNvbGxhcHNlZDtcblx0XG5cdCAgcmV0dXJuIHtc
blx0ICAgIHN0YXJ0OiBpc0JhY2t3YXJkID8gZW5kIDogc3RhcnQsXG5cdCAgICBlbmQ6IGlzQmFj
a3dhcmQgPyBzdGFydCA6IGVuZFxuXHQgIH07XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBAcGFyYW0g
e0RPTUVsZW1lbnR8RE9NVGV4dE5vZGV9IG5vZGVcblx0ICogQHBhcmFtIHtvYmplY3R9IG9mZnNl
dHNcblx0ICovXG5cdGZ1bmN0aW9uIHNldElFT2Zmc2V0cyhub2RlLCBvZmZzZXRzKSB7XG5cdCAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCkuZHVwbGljYXRlKCk7
XG5cdCAgdmFyIHN0YXJ0LCBlbmQ7XG5cdFxuXHQgIGlmIChvZmZzZXRzLmVuZCA9PT0gdW5kZWZp
bmVkKSB7XG5cdCAgICBzdGFydCA9IG9mZnNldHMuc3RhcnQ7XG5cdCAgICBlbmQgPSBzdGFydDtc
blx0ICB9IGVsc2UgaWYgKG9mZnNldHMuc3RhcnQgPiBvZmZzZXRzLmVuZCkge1xuXHQgICAgc3Rh
cnQgPSBvZmZzZXRzLmVuZDtcblx0ICAgIGVuZCA9IG9mZnNldHMuc3RhcnQ7XG5cdCAgfSBlbHNl
IHtcblx0ICAgIHN0YXJ0ID0gb2Zmc2V0cy5zdGFydDtcblx0ICAgIGVuZCA9IG9mZnNldHMuZW5k
O1xuXHQgIH1cblx0XG5cdCAgcmFuZ2UubW92ZVRvRWxlbWVudFRleHQobm9kZSk7XG5cdCAgcmFu
Z2UubW92ZVN0YXJ0KCdjaGFyYWN0ZXInLCBzdGFydCk7XG5cdCAgcmFuZ2Uuc2V0RW5kUG9pbnQo
J0VuZFRvU3RhcnQnLCByYW5nZSk7XG5cdCAgcmFuZ2UubW92ZUVuZCgnY2hhcmFjdGVyJywgZW5k
IC0gc3RhcnQpO1xuXHQgIHJhbmdlLnNlbGVjdCgpO1xuXHR9XG5cdFxuXHQvKipcblx0ICogSW4g
bW9kZXJuIG5vbi1JRSBicm93c2Vycywgd2UgY2FuIHN1cHBvcnQgYm90aCBmb3J3YXJkIGFuZCBi
YWNrd2FyZFxuXHQgKiBzZWxlY3Rpb25zLlxuXHQgKlxuXHQgKiBOb3RlOiBJRTEwKyBzdXBwb3J0
cyB0aGUgU2VsZWN0aW9uIG9iamVjdCwgYnV0IGl0IGRvZXMgbm90IHN1cHBvcnRcblx0ICogdGhl
IGBleHRlbmRgIG1ldGhvZCwgd2hpY2ggbWVhbnMgdGhhdCBldmVuIGluIG1vZGVybiBJRSwgaXQn
cyBub3QgcG9zc2libGVcblx0ICogdG8gcHJvZ3JhbW1hdGljYWxseSBjcmVhdGUgYSBiYWNrd2Fy
ZCBzZWxlY3Rpb24uIFRodXMsIGZvciBhbGwgSUVcblx0ICogdmVyc2lvbnMsIHdlIHVzZSB0aGUg
b2xkIElFIEFQSSB0byBjcmVhdGUgb3VyIHNlbGVjdGlvbnMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7
RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gbm9kZVxuXHQgKiBAcGFyYW0ge29iamVjdH0gb2Zmc2V0
c1xuXHQgKi9cblx0ZnVuY3Rpb24gc2V0TW9kZXJuT2Zmc2V0cyhub2RlLCBvZmZzZXRzKSB7XG5c
dCAgaWYgKCF3aW5kb3cuZ2V0U2VsZWN0aW9uKSB7XG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHRc
blx0ICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuXHQgIHZhciBsZW5n
dGggPSBub2RlW2dldFRleHRDb250ZW50QWNjZXNzb3IoKV0ubGVuZ3RoO1xuXHQgIHZhciBzdGFy
dCA9IE1hdGgubWluKG9mZnNldHMuc3RhcnQsIGxlbmd0aCk7XG5cdCAgdmFyIGVuZCA9IG9mZnNl
dHMuZW5kID09PSB1bmRlZmluZWQgPyBzdGFydCA6IE1hdGgubWluKG9mZnNldHMuZW5kLCBsZW5n
dGgpO1xuXHRcblx0ICAvLyBJRSAxMSB1c2VzIG1vZGVybiBzZWxlY3Rpb24sIGJ1dCBkb2Vzbid0
IHN1cHBvcnQgdGhlIGV4dGVuZCBtZXRob2QuXG5cdCAgLy8gRmxpcCBiYWNrd2FyZCBzZWxlY3Rp
b25zLCBzbyB3ZSBjYW4gc2V0IHdpdGggYSBzaW5nbGUgcmFuZ2UuXG5cdCAgaWYgKCFzZWxlY3Rp
b24uZXh0ZW5kICYmIHN0YXJ0ID4gZW5kKSB7XG5cdCAgICB2YXIgdGVtcCA9IGVuZDtcblx0ICAg
IGVuZCA9IHN0YXJ0O1xuXHQgICAgc3RhcnQgPSB0ZW1wO1xuXHQgIH1cblx0XG5cdCAgdmFyIHN0
YXJ0TWFya2VyID0gZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldChub2RlLCBzdGFydCk7XG5cdCAg
dmFyIGVuZE1hcmtlciA9IGdldE5vZGVGb3JDaGFyYWN0ZXJPZmZzZXQobm9kZSwgZW5kKTtcblx0
XG5cdCAgaWYgKHN0YXJ0TWFya2VyICYmIGVuZE1hcmtlcikge1xuXHQgICAgdmFyIHJhbmdlID0g
ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtcblx0ICAgIHJhbmdlLnNldFN0YXJ0KHN0YXJ0TWFya2Vy
Lm5vZGUsIHN0YXJ0TWFya2VyLm9mZnNldCk7XG5cdCAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFu
Z2VzKCk7XG5cdFxuXHQgICAgaWYgKHN0YXJ0ID4gZW5kKSB7XG5cdCAgICAgIHNlbGVjdGlvbi5h
ZGRSYW5nZShyYW5nZSk7XG5cdCAgICAgIHNlbGVjdGlvbi5leHRlbmQoZW5kTWFya2VyLm5vZGUs
IGVuZE1hcmtlci5vZmZzZXQpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcmFuZ2Uuc2V0RW5k
KGVuZE1hcmtlci5ub2RlLCBlbmRNYXJrZXIub2Zmc2V0KTtcblx0ICAgICAgc2VsZWN0aW9uLmFk
ZFJhbmdlKHJhbmdlKTtcblx0ICAgIH1cblx0ICB9XG5cdH1cblx0XG5cdHZhciB1c2VJRU9mZnNl
dHMgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgJ3NlbGVjdGlvbicgaW4gZG9j
dW1lbnQgJiYgISgnZ2V0U2VsZWN0aW9uJyBpbiB3aW5kb3cpO1xuXHRcblx0dmFyIFJlYWN0RE9N
U2VsZWN0aW9uID0ge1xuXHQgIC8qKlxuXHQgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxu
XHQgICAqL1xuXHQgIGdldE9mZnNldHM6IHVzZUlFT2Zmc2V0cyA/IGdldElFT2Zmc2V0cyA6IGdl
dE1vZGVybk9mZnNldHMsXG5cdFxuXHQgIC8qKlxuXHQgICAqIEBwYXJhbSB7RE9NRWxlbWVudHxE
T01UZXh0Tm9kZX0gbm9kZVxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBvZmZzZXRzXG5cdCAgICov
XG5cdCAgc2V0T2Zmc2V0czogdXNlSUVPZmZzZXRzID8gc2V0SUVPZmZzZXRzIDogc2V0TW9kZXJu
T2Zmc2V0c1xuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVNlbGVjdGlvbjtc
blxuLyoqKi8gfSxcbi8qIDE0NiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBf
X3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52
YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKSxcblx0ICAgIF9hc3NpZ24gPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDQpO1xuXHRcblx0dmFyIERPTUNoaWxkcmVuT3BlcmF0aW9ucyA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMzQpO1xuXHR2YXIgRE9NTGF6eVRyZWUgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDE0KTtcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1aXJl
X18oNSk7XG5cdFxuXHR2YXIgZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyID0gX193ZWJwYWNr
X3JlcXVpcmVfXygyOCk7XG5cdHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEp
O1xuXHR2YXIgdmFsaWRhdGVET01OZXN0aW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0OSk7XG5c
dFxuXHQvKipcblx0ICogVGV4dCBub2RlcyB2aW9sYXRlIGEgY291cGxlIGFzc3VtcHRpb25zIHRo
YXQgUmVhY3QgbWFrZXMgYWJvdXQgY29tcG9uZW50czpcblx0ICpcblx0ICogIC0gV2hlbiBtb3Vu
dGluZyB0ZXh0IGludG8gdGhlIERPTSwgYWRqYWNlbnQgdGV4dCBub2RlcyBhcmUgbWVyZ2VkLlxu
XHQgKiAgLSBUZXh0IG5vZGVzIGNhbm5vdCBiZSBhc3NpZ25lZCBhIFJlYWN0IHJvb3QgSUQuXG5c
dCAqXG5cdCAqIFRoaXMgY29tcG9uZW50IGlzIHVzZWQgdG8gd3JhcCBzdHJpbmdzIGJldHdlZW4g
Y29tbWVudCBub2RlcyBzbyB0aGF0IHRoZXlcblx0ICogY2FuIHVuZGVyZ28gdGhlIHNhbWUgcmVj
b25jaWxpYXRpb24gdGhhdCBpcyBhcHBsaWVkIHRvIGVsZW1lbnRzLlxuXHQgKlxuXHQgKiBUT0RP
OiBJbnZlc3RpZ2F0ZSByZXByZXNlbnRpbmcgUmVhY3QgY29tcG9uZW50cyBpbiB0aGUgRE9NIHdp
dGggdGV4dCBub2Rlcy5cblx0ICpcblx0ICogQGNsYXNzIFJlYWN0RE9NVGV4dENvbXBvbmVudFxu
XHQgKiBAZXh0ZW5kcyBSZWFjdENvbXBvbmVudFxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdHZh
ciBSZWFjdERPTVRleHRDb21wb25lbnQgPSBmdW5jdGlvbiAodGV4dCkge1xuXHQgIC8vIFRPRE86
IFRoaXMgaXMgcmVhbGx5IGEgUmVhY3RUZXh0IChSZWFjdE5vZGUpLCBub3QgYSBSZWFjdEVsZW1l
bnRcblx0ICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IHRleHQ7XG5cdCAgdGhpcy5fc3RyaW5nVGV4
dCA9ICcnICsgdGV4dDtcblx0ICAvLyBSZWFjdERPTUNvbXBvbmVudFRyZWUgdXNlcyB0aGVzZTpc
blx0ICB0aGlzLl9ob3N0Tm9kZSA9IG51bGw7XG5cdCAgdGhpcy5faG9zdFBhcmVudCA9IG51bGw7
XG5cdFxuXHQgIC8vIFByb3BlcnRpZXNcblx0ICB0aGlzLl9kb21JRCA9IDA7XG5cdCAgdGhpcy5f
bW91bnRJbmRleCA9IDA7XG5cdCAgdGhpcy5fY2xvc2luZ0NvbW1lbnQgPSBudWxsO1xuXHQgIHRo
aXMuX2NvbW1lbnROb2RlcyA9IG51bGw7XG5cdH07XG5cdFxuXHRfYXNzaWduKFJlYWN0RE9NVGV4
dENvbXBvbmVudC5wcm90b3R5cGUsIHtcblx0ICAvKipcblx0ICAgKiBDcmVhdGVzIHRoZSBtYXJr
dXAgZm9yIHRoaXMgdGV4dCBub2RlLiBUaGlzIG5vZGUgaXMgbm90IGludGVuZGVkIHRvIGhhdmVc
blx0ICAgKiBhbnkgZmVhdHVyZXMgYmVzaWRlcyBjb250YWluaW5nIHRleHQgY29udGVudC5cblx0
ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNlcnZl
clJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuXHQgICAqIEByZXR1cm4ge3N0cmlu
Z30gTWFya3VwIGZvciB0aGlzIHRleHQgbm9kZS5cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9c
blx0ICBtb3VudENvbXBvbmVudDogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBo
b3N0Q29udGFpbmVySW5mbywgY29udGV4dCkge1xuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAg
IHZhciBwYXJlbnRJbmZvO1xuXHQgICAgICBpZiAoaG9zdFBhcmVudCAhPSBudWxsKSB7XG5cdCAg
ICAgICAgcGFyZW50SW5mbyA9IGhvc3RQYXJlbnQuX2FuY2VzdG9ySW5mbztcblx0ICAgICAgfSBl
bHNlIGlmIChob3N0Q29udGFpbmVySW5mbyAhPSBudWxsKSB7XG5cdCAgICAgICAgcGFyZW50SW5m
byA9IGhvc3RDb250YWluZXJJbmZvLl9hbmNlc3RvckluZm87XG5cdCAgICAgIH1cblx0ICAgICAg
aWYgKHBhcmVudEluZm8pIHtcblx0ICAgICAgICAvLyBwYXJlbnRJbmZvIHNob3VsZCBhbHdheXMg
YmUgcHJlc2VudCBleGNlcHQgZm9yIHRoZSB0b3AtbGV2ZWxcblx0ICAgICAgICAvLyBjb21wb25l
bnQgd2hlbiBzZXJ2ZXIgcmVuZGVyaW5nXG5cdCAgICAgICAgdmFsaWRhdGVET01OZXN0aW5nKG51
bGwsIHRoaXMuX3N0cmluZ1RleHQsIHRoaXMsIHBhcmVudEluZm8pO1xuXHQgICAgICB9XG5cdCAg
ICB9XG5cdFxuXHQgICAgdmFyIGRvbUlEID0gaG9zdENvbnRhaW5lckluZm8uX2lkQ291bnRlcisr
O1xuXHQgICAgdmFyIG9wZW5pbmdWYWx1ZSA9ICcgcmVhY3QtdGV4dDogJyArIGRvbUlEICsgJyAn
O1xuXHQgICAgdmFyIGNsb3NpbmdWYWx1ZSA9ICcgL3JlYWN0LXRleHQgJztcblx0ICAgIHRoaXMu
X2RvbUlEID0gZG9tSUQ7XG5cdCAgICB0aGlzLl9ob3N0UGFyZW50ID0gaG9zdFBhcmVudDtcblx0
ICAgIGlmICh0cmFuc2FjdGlvbi51c2VDcmVhdGVFbGVtZW50KSB7XG5cdCAgICAgIHZhciBvd25l
ckRvY3VtZW50ID0gaG9zdENvbnRhaW5lckluZm8uX293bmVyRG9jdW1lbnQ7XG5cdCAgICAgIHZh
ciBvcGVuaW5nQ29tbWVudCA9IG93bmVyRG9jdW1lbnQuY3JlYXRlQ29tbWVudChvcGVuaW5nVmFs
dWUpO1xuXHQgICAgICB2YXIgY2xvc2luZ0NvbW1lbnQgPSBvd25lckRvY3VtZW50LmNyZWF0ZUNv
bW1lbnQoY2xvc2luZ1ZhbHVlKTtcblx0ICAgICAgdmFyIGxhenlUcmVlID0gRE9NTGF6eVRyZWUo
b3duZXJEb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkpO1xuXHQgICAgICBET01MYXp5
VHJlZS5xdWV1ZUNoaWxkKGxhenlUcmVlLCBET01MYXp5VHJlZShvcGVuaW5nQ29tbWVudCkpO1xu
XHQgICAgICBpZiAodGhpcy5fc3RyaW5nVGV4dCkge1xuXHQgICAgICAgIERPTUxhenlUcmVlLnF1
ZXVlQ2hpbGQobGF6eVRyZWUsIERPTUxhenlUcmVlKG93bmVyRG9jdW1lbnQuY3JlYXRlVGV4dE5v
ZGUodGhpcy5fc3RyaW5nVGV4dCkpKTtcblx0ICAgICAgfVxuXHQgICAgICBET01MYXp5VHJlZS5x
dWV1ZUNoaWxkKGxhenlUcmVlLCBET01MYXp5VHJlZShjbG9zaW5nQ29tbWVudCkpO1xuXHQgICAg
ICBSZWFjdERPTUNvbXBvbmVudFRyZWUucHJlY2FjaGVOb2RlKHRoaXMsIG9wZW5pbmdDb21tZW50
KTtcblx0ICAgICAgdGhpcy5fY2xvc2luZ0NvbW1lbnQgPSBjbG9zaW5nQ29tbWVudDtcblx0ICAg
ICAgcmV0dXJuIGxhenlUcmVlO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgdmFyIGVzY2FwZWRU
ZXh0ID0gZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyKHRoaXMuX3N0cmluZ1RleHQpO1xuXHRc
blx0ICAgICAgaWYgKHRyYW5zYWN0aW9uLnJlbmRlclRvU3RhdGljTWFya3VwKSB7XG5cdCAgICAg
ICAgLy8gTm9ybWFsbHkgd2UnZCB3cmFwIHRoaXMgYmV0d2VlbiBjb21tZW50IG5vZGVzIGZvciB0
aGUgcmVhc29ucyBzdGF0ZWRcblx0ICAgICAgICAvLyBhYm92ZSwgYnV0IHNpbmNlIHRoaXMgaXMg
YSBzaXR1YXRpb24gd2hlcmUgUmVhY3Qgd29uJ3QgdGFrZSBvdmVyXG5cdCAgICAgICAgLy8gKHN0
YXRpYyBwYWdlcyksIHdlIGNhbiBzaW1wbHkgcmV0dXJuIHRoZSB0ZXh0IGFzIGl0IGlzLlxuXHQg
ICAgICAgIHJldHVybiBlc2NhcGVkVGV4dDtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgcmV0dXJu
ICc8IS0tJyArIG9wZW5pbmdWYWx1ZSArICctLT4nICsgZXNjYXBlZFRleHQgKyAnPCEtLScgKyBj
bG9zaW5nVmFsdWUgKyAnLS0+Jztcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAg
KiBVcGRhdGVzIHRoaXMgY29tcG9uZW50IGJ5IHVwZGF0aW5nIHRoZSB0ZXh0IGNvbnRlbnQuXG5c
dCAgICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0VGV4dH0gbmV4dFRleHQgVGhlIG5leHQgdGV4dCBj
b250ZW50XG5cdCAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2Fj
dGlvblxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIHJlY2VpdmVDb21wb25lbnQ6IGZ1
bmN0aW9uIChuZXh0VGV4dCwgdHJhbnNhY3Rpb24pIHtcblx0ICAgIGlmIChuZXh0VGV4dCAhPT0g
dGhpcy5fY3VycmVudEVsZW1lbnQpIHtcblx0ICAgICAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBu
ZXh0VGV4dDtcblx0ICAgICAgdmFyIG5leHRTdHJpbmdUZXh0ID0gJycgKyBuZXh0VGV4dDtcblx0
ICAgICAgaWYgKG5leHRTdHJpbmdUZXh0ICE9PSB0aGlzLl9zdHJpbmdUZXh0KSB7XG5cdCAgICAg
ICAgLy8gVE9ETzogU2F2ZSB0aGlzIGFzIHBlbmRpbmcgcHJvcHMgYW5kIHVzZSBwZXJmb3JtVXBk
YXRlSWZOZWNlc3Nhcnlcblx0ICAgICAgICAvLyBhbmQvb3IgdXBkYXRlQ29tcG9uZW50IHRvIGRv
IHRoZSBhY3R1YWwgdXBkYXRlIGZvciBjb25zaXN0ZW5jeSB3aXRoXG5cdCAgICAgICAgLy8gb3Ro
ZXIgY29tcG9uZW50IHR5cGVzP1xuXHQgICAgICAgIHRoaXMuX3N0cmluZ1RleHQgPSBuZXh0U3Ry
aW5nVGV4dDtcblx0ICAgICAgICB2YXIgY29tbWVudE5vZGVzID0gdGhpcy5nZXRIb3N0Tm9kZSgp
O1xuXHQgICAgICAgIERPTUNoaWxkcmVuT3BlcmF0aW9ucy5yZXBsYWNlRGVsaW1pdGVkVGV4dChj
b21tZW50Tm9kZXNbMF0sIGNvbW1lbnROb2Rlc1sxXSwgbmV4dFN0cmluZ1RleHQpO1xuXHQgICAg
ICB9XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgZ2V0SG9zdE5vZGU6IGZ1bmN0aW9uICgpIHtc
blx0ICAgIHZhciBob3N0Tm9kZSA9IHRoaXMuX2NvbW1lbnROb2Rlcztcblx0ICAgIGlmIChob3N0
Tm9kZSkge1xuXHQgICAgICByZXR1cm4gaG9zdE5vZGU7XG5cdCAgICB9XG5cdCAgICBpZiAoIXRo
aXMuX2Nsb3NpbmdDb21tZW50KSB7XG5cdCAgICAgIHZhciBvcGVuaW5nQ29tbWVudCA9IFJlYWN0
RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKHRoaXMpO1xuXHQgICAgICB2YXIg
bm9kZSA9IG9wZW5pbmdDb21tZW50Lm5leHRTaWJsaW5nO1xuXHQgICAgICB3aGlsZSAodHJ1ZSkg
e1xuXHQgICAgICAgICEobm9kZSAhPSBudWxsKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwg
J01pc3NpbmcgY2xvc2luZyBjb21tZW50IGZvciB0ZXh0IGNvbXBvbmVudCAlcycsIHRoaXMuX2Rv
bUlEKSA6IF9wcm9kSW52YXJpYW50KCc2NycsIHRoaXMuX2RvbUlEKSA6IHZvaWQgMDtcblx0ICAg
ICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gOCAmJiBub2RlLm5vZGVWYWx1ZSA9PT0gJyAvcmVh
Y3QtdGV4dCAnKSB7XG5cdCAgICAgICAgICB0aGlzLl9jbG9zaW5nQ29tbWVudCA9IG5vZGU7XG5c
dCAgICAgICAgICBicmVhaztcblx0ICAgICAgICB9XG5cdCAgICAgICAgbm9kZSA9IG5vZGUubmV4
dFNpYmxpbmc7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIGhvc3ROb2RlID0gW3RoaXMuX2hv
c3ROb2RlLCB0aGlzLl9jbG9zaW5nQ29tbWVudF07XG5cdCAgICB0aGlzLl9jb21tZW50Tm9kZXMg
PSBob3N0Tm9kZTtcblx0ICAgIHJldHVybiBob3N0Tm9kZTtcblx0ICB9LFxuXHRcblx0ICB1bm1v
dW50Q29tcG9uZW50OiBmdW5jdGlvbiAoKSB7XG5cdCAgICB0aGlzLl9jbG9zaW5nQ29tbWVudCA9
IG51bGw7XG5cdCAgICB0aGlzLl9jb21tZW50Tm9kZXMgPSBudWxsO1xuXHQgICAgUmVhY3RET01D
b21wb25lbnRUcmVlLnVuY2FjaGVOb2RlKHRoaXMpO1xuXHQgIH1cblx0fSk7XG5cdFxuXHRtb2R1
bGUuZXhwb3J0cyA9IFJlYWN0RE9NVGV4dENvbXBvbmVudDtcblxuLyoqKi8gfSxcbi8qIDE0NyAq
L1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7
XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5c
dCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRc
blx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygzKSxcblx0ICAgIF9hc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRc
blx0dmFyIExpbmtlZFZhbHVlVXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM5KTtcblx0dmFy
IFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG5cdHZhciBS
ZWFjdFVwZGF0ZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuXHRcblx0dmFyIGludmFyaWFu
dCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygyKTtcblx0XG5cdHZhciBkaWRXYXJuVmFsdWVMaW5rID0gZmFsc2U7XG5cdHZhciBk
aWRXYXJuVmFsRGVmYXVsdFZhbCA9IGZhbHNlO1xuXHRcblx0ZnVuY3Rpb24gZm9yY2VVcGRhdGVJ
Zk1vdW50ZWQoKSB7XG5cdCAgaWYgKHRoaXMuX3Jvb3ROb2RlSUQpIHtcblx0ICAgIC8vIERPTSBj
b21wb25lbnQgaXMgc3RpbGwgbW91bnRlZDsgdXBkYXRlXG5cdCAgICBSZWFjdERPTVRleHRhcmVh
LnVwZGF0ZVdyYXBwZXIodGhpcyk7XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICogSW1wbGVt
ZW50cyBhIDx0ZXh0YXJlYT4gaG9zdCBjb21wb25lbnQgdGhhdCBhbGxvd3Mgc2V0dGluZyBgdmFs
dWVgLCBhbmRcblx0ICogYGRlZmF1bHRWYWx1ZWAuIFRoaXMgZGlmZmVycyBmcm9tIHRoZSB0cmFk
aXRpb25hbCBET00gQVBJIGJlY2F1c2UgdmFsdWUgaXNcblx0ICogdXN1YWxseSBzZXQgYXMgUENE
QVRBIGNoaWxkcmVuLlxuXHQgKlxuXHQgKiBJZiBgdmFsdWVgIGlzIG5vdCBzdXBwbGllZCAob3Ig
bnVsbC91bmRlZmluZWQpLCB1c2VyIGFjdGlvbnMgdGhhdCBhZmZlY3QgdGhlXG5cdCAqIHZhbHVl
IHdpbGwgdHJpZ2dlciB1cGRhdGVzIHRvIHRoZSBlbGVtZW50LlxuXHQgKlxuXHQgKiBJZiBgdmFs
dWVgIGlzIHN1cHBsaWVkIChhbmQgbm90IG51bGwvdW5kZWZpbmVkKSwgdGhlIHJlbmRlcmVkIGVs
ZW1lbnQgd2lsbFxuXHQgKiBub3QgdHJpZ2dlciB1cGRhdGVzIHRvIHRoZSBlbGVtZW50LiBJbnN0
ZWFkLCB0aGUgYHZhbHVlYCBwcm9wIG11c3QgY2hhbmdlIGluXG5cdCAqIG9yZGVyIGZvciB0aGUg
cmVuZGVyZWQgZWxlbWVudCB0byBiZSB1cGRhdGVkLlxuXHQgKlxuXHQgKiBUaGUgcmVuZGVyZWQg
ZWxlbWVudCB3aWxsIGJlIGluaXRpYWxpemVkIHdpdGggYW4gZW1wdHkgdmFsdWUsIHRoZSBwcm9w
XG5cdCAqIGBkZWZhdWx0VmFsdWVgIGlmIHNwZWNpZmllZCwgb3IgdGhlIGNoaWxkcmVuIGNvbnRl
bnQgKGRlcHJlY2F0ZWQpLlxuXHQgKi9cblx0dmFyIFJlYWN0RE9NVGV4dGFyZWEgPSB7XG5cdCAg
Z2V0SG9zdFByb3BzOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHtcblx0ICAgICEocHJvcHMuZGFu
Z2Vyb3VzbHlTZXRJbm5lckhUTUwgPT0gbnVsbCkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2Us
ICdgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgIGRvZXMgbm90IG1ha2Ugc2Vuc2Ugb24gPHRleHRh
cmVhPi4nKSA6IF9wcm9kSW52YXJpYW50KCc5MScpIDogdm9pZCAwO1xuXHRcblx0ICAgIC8vIEFs
d2F5cyBzZXQgY2hpbGRyZW4gdG8gdGhlIHNhbWUgdGhpbmcuIEluIElFOSwgdGhlIHNlbGVjdGlv
biByYW5nZSB3aWxsXG5cdCAgICAvLyBnZXQgcmVzZXQgaWYgYHRleHRDb250ZW50YCBpcyBtdXRh
dGVkLiAgV2UgY291bGQgYWRkIGEgY2hlY2sgaW4gc2V0VGV4dENvbnRlbnRcblx0ICAgIC8vIHRv
IG9ubHkgc2V0IHRoZSB2YWx1ZSBpZi93aGVuIHRoZSB2YWx1ZSBkaWZmZXJzIGZyb20gdGhlIG5v
ZGUgdmFsdWUgKHdoaWNoIHdvdWxkXG5cdCAgICAvLyBjb21wbGV0ZWx5IHNvbHZlIHRoaXMgSUU5
IGJ1ZyksIGJ1dCBTZWJhc3RpYW4rQmVuIHNlZW1lZCB0byBsaWtlIHRoaXMgc29sdXRpb24uXG5c
dCAgICAvLyBUaGUgdmFsdWUgY2FuIGJlIGEgYm9vbGVhbiBvciBvYmplY3Qgc28gdGhhdCdzIHdo
eSBpdCdzIGZvcmNlZCB0byBiZSBhIHN0cmluZy5cblx0ICAgIHZhciBob3N0UHJvcHMgPSBfYXNz
aWduKHt9LCBwcm9wcywge1xuXHQgICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuXHQgICAgICBkZWZh
dWx0VmFsdWU6IHVuZGVmaW5lZCxcblx0ICAgICAgY2hpbGRyZW46ICcnICsgaW5zdC5fd3JhcHBl
clN0YXRlLmluaXRpYWxWYWx1ZSxcblx0ICAgICAgb25DaGFuZ2U6IGluc3QuX3dyYXBwZXJTdGF0
ZS5vbkNoYW5nZVxuXHQgICAgfSk7XG5cdFxuXHQgICAgcmV0dXJuIGhvc3RQcm9wcztcblx0ICB9
LFxuXHRcblx0ICBtb3VudFdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcykge1xuXHQgICAg
aWYgKGZhbHNlKSB7XG5cdCAgICAgIExpbmtlZFZhbHVlVXRpbHMuY2hlY2tQcm9wVHlwZXMoJ3Rl
eHRhcmVhJywgcHJvcHMsIGluc3QuX2N1cnJlbnRFbGVtZW50Ll9vd25lcik7XG5cdCAgICAgIGlm
IChwcm9wcy52YWx1ZUxpbmsgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2FyblZhbHVlTGluaykge1xu
XHQgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5n
KGZhbHNlLCAnYHZhbHVlTGlua2AgcHJvcCBvbiBgdGV4dGFyZWFgIGlzIGRlcHJlY2F0ZWQ7IHNl
dCBgdmFsdWVgIGFuZCBgb25DaGFuZ2VgIGluc3RlYWQuJykgOiB2b2lkIDA7XG5cdCAgICAgICAg
ZGlkV2FyblZhbHVlTGluayA9IHRydWU7XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKHByb3BzLnZh
bHVlICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQgJiYg
IWRpZFdhcm5WYWxEZWZhdWx0VmFsKSB7XG5cdCAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdUZXh0YXJlYSBlbGVtZW50cyBtdXN0
IGJlIGVpdGhlciBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCAnICsgJyhzcGVjaWZ5IGVpdGhl
ciB0aGUgdmFsdWUgcHJvcCwgb3IgdGhlIGRlZmF1bHRWYWx1ZSBwcm9wLCBidXQgbm90ICcgKyAn
Ym90aCkuIERlY2lkZSBiZXR3ZWVuIHVzaW5nIGEgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQg
dGV4dGFyZWEgJyArICdhbmQgcmVtb3ZlIG9uZSBvZiB0aGVzZSBwcm9wcy4gTW9yZSBpbmZvOiAn
ICsgJ2h0dHBzOi8vZmIubWUvcmVhY3QtY29udHJvbGxlZC1jb21wb25lbnRzJykgOiB2b2lkIDA7
XG5cdCAgICAgICAgZGlkV2FyblZhbERlZmF1bHRWYWwgPSB0cnVlO1xuXHQgICAgICB9XG5cdCAg
ICB9XG5cdFxuXHQgICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9w
cyk7XG5cdCAgICB2YXIgaW5pdGlhbFZhbHVlID0gdmFsdWU7XG5cdFxuXHQgICAgLy8gT25seSBi
b3RoZXIgZmV0Y2hpbmcgZGVmYXVsdCB2YWx1ZSBpZiB3ZSdyZSBnb2luZyB0byB1c2UgaXRcblx0
ICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG5cdCAgICAgIHZhciBkZWZhdWx0VmFsdWUgPSBwcm9w
cy5kZWZhdWx0VmFsdWU7XG5cdCAgICAgIC8vIFRPRE8gKHl1bmdzdGVycyk6IFJlbW92ZSBzdXBw
b3J0IGZvciBjaGlsZHJlbiBjb250ZW50IGluIDx0ZXh0YXJlYT4uXG5cdCAgICAgIHZhciBjaGls
ZHJlbiA9IHByb3BzLmNoaWxkcmVuO1xuXHQgICAgICBpZiAoY2hpbGRyZW4gIT0gbnVsbCkge1xu
XHQgICAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdVc2UgdGhlIGBkZWZhdWx0VmFsdWVg
IG9yIGB2YWx1ZWAgcHJvcHMgaW5zdGVhZCBvZiBzZXR0aW5nICcgKyAnY2hpbGRyZW4gb24gPHRl
eHRhcmVhPi4nKSA6IHZvaWQgMDtcblx0ICAgICAgICB9XG5cdCAgICAgICAgIShkZWZhdWx0VmFs
dWUgPT0gbnVsbCkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdJZiB5b3Ugc3VwcGx5IGBk
ZWZhdWx0VmFsdWVgIG9uIGEgPHRleHRhcmVhPiwgZG8gbm90IHBhc3MgY2hpbGRyZW4uJykgOiBf
cHJvZEludmFyaWFudCgnOTInKSA6IHZvaWQgMDtcblx0ICAgICAgICBpZiAoQXJyYXkuaXNBcnJh
eShjaGlsZHJlbikpIHtcblx0ICAgICAgICAgICEoY2hpbGRyZW4ubGVuZ3RoIDw9IDEpID8gIGZh
bHNlID8gaW52YXJpYW50KGZhbHNlLCAnPHRleHRhcmVhPiBjYW4gb25seSBoYXZlIGF0IG1vc3Qg
b25lIGNoaWxkLicpIDogX3Byb2RJbnZhcmlhbnQoJzkzJykgOiB2b2lkIDA7XG5cdCAgICAgICAg
ICBjaGlsZHJlbiA9IGNoaWxkcmVuWzBdO1xuXHQgICAgICAgIH1cblx0XG5cdCAgICAgICAgZGVm
YXVsdFZhbHVlID0gJycgKyBjaGlsZHJlbjtcblx0ICAgICAgfVxuXHQgICAgICBpZiAoZGVmYXVs
dFZhbHVlID09IG51bGwpIHtcblx0ICAgICAgICBkZWZhdWx0VmFsdWUgPSAnJztcblx0ICAgICAg
fVxuXHQgICAgICBpbml0aWFsVmFsdWUgPSBkZWZhdWx0VmFsdWU7XG5cdCAgICB9XG5cdFxuXHQg
ICAgaW5zdC5fd3JhcHBlclN0YXRlID0ge1xuXHQgICAgICBpbml0aWFsVmFsdWU6ICcnICsgaW5p
dGlhbFZhbHVlLFxuXHQgICAgICBsaXN0ZW5lcnM6IG51bGwsXG5cdCAgICAgIG9uQ2hhbmdlOiBf
aGFuZGxlQ2hhbmdlLmJpbmQoaW5zdClcblx0ICAgIH07XG5cdCAgfSxcblx0XG5cdCAgdXBkYXRl
V3JhcHBlcjogZnVuY3Rpb24gKGluc3QpIHtcblx0ICAgIHZhciBwcm9wcyA9IGluc3QuX2N1cnJl
bnRFbGVtZW50LnByb3BzO1xuXHRcblx0ICAgIHZhciBub2RlID0gUmVhY3RET01Db21wb25lbnRU
cmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7XG5cdCAgICB2YXIgdmFsdWUgPSBMaW5rZWRW
YWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTtcblx0ICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG5c
dCAgICAgIC8vIENhc3QgYHZhbHVlYCB0byBhIHN0cmluZyB0byBlbnN1cmUgdGhlIHZhbHVlIGlz
IHNldCBjb3JyZWN0bHkuIFdoaWxlXG5cdCAgICAgIC8vIGJyb3dzZXJzIHR5cGljYWxseSBkbyB0
aGlzIGFzIG5lY2Vzc2FyeSwganNkb20gZG9lc24ndC5cblx0ICAgICAgdmFyIG5ld1ZhbHVlID0g
JycgKyB2YWx1ZTtcblx0XG5cdCAgICAgIC8vIFRvIGF2b2lkIHNpZGUgZWZmZWN0cyAoc3VjaCBh
cyBsb3NpbmcgdGV4dCBzZWxlY3Rpb24pLCBvbmx5IHNldCB2YWx1ZSBpZiBjaGFuZ2VkXG5cdCAg
ICAgIGlmIChuZXdWYWx1ZSAhPT0gbm9kZS52YWx1ZSkge1xuXHQgICAgICAgIG5vZGUudmFsdWUg
PSBuZXdWYWx1ZTtcblx0ICAgICAgfVxuXHQgICAgICBpZiAocHJvcHMuZGVmYXVsdFZhbHVlID09
IG51bGwpIHtcblx0ICAgICAgICBub2RlLmRlZmF1bHRWYWx1ZSA9IG5ld1ZhbHVlO1xuXHQgICAg
ICB9XG5cdCAgICB9XG5cdCAgICBpZiAocHJvcHMuZGVmYXVsdFZhbHVlICE9IG51bGwpIHtcblx0
ICAgICAgbm9kZS5kZWZhdWx0VmFsdWUgPSBwcm9wcy5kZWZhdWx0VmFsdWU7XG5cdCAgICB9XG5c
dCAgfSxcblx0XG5cdCAgcG9zdE1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QpIHtcblx0ICAg
IC8vIFRoaXMgaXMgaW4gcG9zdE1vdW50IGJlY2F1c2Ugd2UgbmVlZCBhY2Nlc3MgdG8gdGhlIERP
TSBub2RlLCB3aGljaCBpcyBub3Rcblx0ICAgIC8vIGF2YWlsYWJsZSB1bnRpbCBhZnRlciB0aGUg
Y29tcG9uZW50IGhhcyBtb3VudGVkLlxuXHQgICAgdmFyIG5vZGUgPSBSZWFjdERPTUNvbXBvbmVu
dFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KTtcblx0ICAgIHZhciB0ZXh0Q29udGVudCA9
IG5vZGUudGV4dENvbnRlbnQ7XG5cdFxuXHQgICAgLy8gT25seSBzZXQgbm9kZS52YWx1ZSBpZiB0
ZXh0Q29udGVudCBpcyBlcXVhbCB0byB0aGUgZXhwZWN0ZWRcblx0ICAgIC8vIGluaXRpYWwgdmFs
dWUuIEluIElFMTAvSUUxMSB0aGVyZSBpcyBhIGJ1ZyB3aGVyZSB0aGUgcGxhY2Vob2xkZXIgYXR0
cmlidXRlXG5cdCAgICAvLyB3aWxsIHBvcHVsYXRlIHRleHRDb250ZW50IGFzIHdlbGwuXG5cdCAg
ICAvLyBodHRwczovL2RldmVsb3Blci5taWNyb3NvZnQuY29tL21pY3Jvc29mdC1lZGdlL3BsYXRm
b3JtL2lzc3Vlcy8xMDE1MjUvXG5cdCAgICBpZiAodGV4dENvbnRlbnQgPT09IGluc3QuX3dyYXBw
ZXJTdGF0ZS5pbml0aWFsVmFsdWUpIHtcblx0ICAgICAgbm9kZS52YWx1ZSA9IHRleHRDb250ZW50
O1xuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5cdGZ1bmN0aW9uIF9oYW5kbGVDaGFuZ2UoZXZl
bnQpIHtcblx0ICB2YXIgcHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztcblx0ICB2
YXIgcmV0dXJuVmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmV4ZWN1dGVPbkNoYW5nZShwcm9wcywg
ZXZlbnQpO1xuXHQgIFJlYWN0VXBkYXRlcy5hc2FwKGZvcmNlVXBkYXRlSWZNb3VudGVkLCB0aGlz
KTtcblx0ICByZXR1cm4gcmV0dXJuVmFsdWU7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0g
UmVhY3RET01UZXh0YXJlYTtcblxuLyoqKi8gfSxcbi8qIDE0OCAqL1xuLyoqKi8gZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENv
cHlyaWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
blx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xu
XHRcblx0dmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblx0XG5c
dHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHRcblx0LyoqXG5cdCAq
IFJldHVybiB0aGUgbG93ZXN0IGNvbW1vbiBhbmNlc3RvciBvZiBBIGFuZCBCLCBvciBudWxsIGlm
IHRoZXkgYXJlIGluXG5cdCAqIGRpZmZlcmVudCB0cmVlcy5cblx0ICovXG5cdGZ1bmN0aW9uIGdl
dExvd2VzdENvbW1vbkFuY2VzdG9yKGluc3RBLCBpbnN0Qikge1xuXHQgICEoJ19ob3N0Tm9kZScg
aW4gaW5zdEEpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnZ2V0Tm9kZUZyb21JbnN0YW5j
ZTogSW52YWxpZCBhcmd1bWVudC4nKSA6IF9wcm9kSW52YXJpYW50KCczMycpIDogdm9pZCAwO1xu
XHQgICEoJ19ob3N0Tm9kZScgaW4gaW5zdEIpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAn
Z2V0Tm9kZUZyb21JbnN0YW5jZTogSW52YWxpZCBhcmd1bWVudC4nKSA6IF9wcm9kSW52YXJpYW50
KCczMycpIDogdm9pZCAwO1xuXHRcblx0ICB2YXIgZGVwdGhBID0gMDtcblx0ICBmb3IgKHZhciB0
ZW1wQSA9IGluc3RBOyB0ZW1wQTsgdGVtcEEgPSB0ZW1wQS5faG9zdFBhcmVudCkge1xuXHQgICAg
ZGVwdGhBKys7XG5cdCAgfVxuXHQgIHZhciBkZXB0aEIgPSAwO1xuXHQgIGZvciAodmFyIHRlbXBC
ID0gaW5zdEI7IHRlbXBCOyB0ZW1wQiA9IHRlbXBCLl9ob3N0UGFyZW50KSB7XG5cdCAgICBkZXB0
aEIrKztcblx0ICB9XG5cdFxuXHQgIC8vIElmIEEgaXMgZGVlcGVyLCBjcmF3bCB1cC5cblx0ICB3
aGlsZSAoZGVwdGhBIC0gZGVwdGhCID4gMCkge1xuXHQgICAgaW5zdEEgPSBpbnN0QS5faG9zdFBh
cmVudDtcblx0ICAgIGRlcHRoQS0tO1xuXHQgIH1cblx0XG5cdCAgLy8gSWYgQiBpcyBkZWVwZXIs
IGNyYXdsIHVwLlxuXHQgIHdoaWxlIChkZXB0aEIgLSBkZXB0aEEgPiAwKSB7XG5cdCAgICBpbnN0
QiA9IGluc3RCLl9ob3N0UGFyZW50O1xuXHQgICAgZGVwdGhCLS07XG5cdCAgfVxuXHRcblx0ICAv
LyBXYWxrIGluIGxvY2tzdGVwIHVudGlsIHdlIGZpbmQgYSBtYXRjaC5cblx0ICB2YXIgZGVwdGgg
PSBkZXB0aEE7XG5cdCAgd2hpbGUgKGRlcHRoLS0pIHtcblx0ICAgIGlmIChpbnN0QSA9PT0gaW5z
dEIpIHtcblx0ICAgICAgcmV0dXJuIGluc3RBO1xuXHQgICAgfVxuXHQgICAgaW5zdEEgPSBpbnN0
QS5faG9zdFBhcmVudDtcblx0ICAgIGluc3RCID0gaW5zdEIuX2hvc3RQYXJlbnQ7XG5cdCAgfVxu
XHQgIHJldHVybiBudWxsO1xuXHR9XG5cdFxuXHQvKipcblx0ICogUmV0dXJuIGlmIEEgaXMgYW4g
YW5jZXN0b3Igb2YgQi5cblx0ICovXG5cdGZ1bmN0aW9uIGlzQW5jZXN0b3IoaW5zdEEsIGluc3RC
KSB7XG5cdCAgISgnX2hvc3ROb2RlJyBpbiBpbnN0QSkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFs
c2UsICdpc0FuY2VzdG9yOiBJbnZhbGlkIGFyZ3VtZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzM1
JykgOiB2b2lkIDA7XG5cdCAgISgnX2hvc3ROb2RlJyBpbiBpbnN0QikgPyAgZmFsc2UgPyBpbnZh
cmlhbnQoZmFsc2UsICdpc0FuY2VzdG9yOiBJbnZhbGlkIGFyZ3VtZW50LicpIDogX3Byb2RJbnZh
cmlhbnQoJzM1JykgOiB2b2lkIDA7XG5cdFxuXHQgIHdoaWxlIChpbnN0Qikge1xuXHQgICAgaWYg
KGluc3RCID09PSBpbnN0QSkge1xuXHQgICAgICByZXR1cm4gdHJ1ZTtcblx0ICAgIH1cblx0ICAg
IGluc3RCID0gaW5zdEIuX2hvc3RQYXJlbnQ7XG5cdCAgfVxuXHQgIHJldHVybiBmYWxzZTtcblx0
fVxuXHRcblx0LyoqXG5cdCAqIFJldHVybiB0aGUgcGFyZW50IGluc3RhbmNlIG9mIHRoZSBwYXNz
ZWQtaW4gaW5zdGFuY2UuXG5cdCAqL1xuXHRmdW5jdGlvbiBnZXRQYXJlbnRJbnN0YW5jZShpbnN0
KSB7XG5cdCAgISgnX2hvc3ROb2RlJyBpbiBpbnN0KSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxz
ZSwgJ2dldFBhcmVudEluc3RhbmNlOiBJbnZhbGlkIGFyZ3VtZW50LicpIDogX3Byb2RJbnZhcmlh
bnQoJzM2JykgOiB2b2lkIDA7XG5cdFxuXHQgIHJldHVybiBpbnN0Ll9ob3N0UGFyZW50O1xuXHR9
XG5cdFxuXHQvKipcblx0ICogU2ltdWxhdGVzIHRoZSB0cmF2ZXJzYWwgb2YgYSB0d28tcGhhc2Us
IGNhcHR1cmUvYnViYmxlIGV2ZW50IGRpc3BhdGNoLlxuXHQgKi9cblx0ZnVuY3Rpb24gdHJhdmVy
c2VUd29QaGFzZShpbnN0LCBmbiwgYXJnKSB7XG5cdCAgdmFyIHBhdGggPSBbXTtcblx0ICB3aGls
ZSAoaW5zdCkge1xuXHQgICAgcGF0aC5wdXNoKGluc3QpO1xuXHQgICAgaW5zdCA9IGluc3QuX2hv
c3RQYXJlbnQ7XG5cdCAgfVxuXHQgIHZhciBpO1xuXHQgIGZvciAoaSA9IHBhdGgubGVuZ3RoOyBp
LS0gPiAwOykge1xuXHQgICAgZm4ocGF0aFtpXSwgJ2NhcHR1cmVkJywgYXJnKTtcblx0ICB9XG5c
dCAgZm9yIChpID0gMDsgaSA8IHBhdGgubGVuZ3RoOyBpKyspIHtcblx0ICAgIGZuKHBhdGhbaV0s
ICdidWJibGVkJywgYXJnKTtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBUcmF2ZXJzZXMg
dGhlIElEIGhpZXJhcmNoeSBhbmQgaW52b2tlcyB0aGUgc3VwcGxpZWQgYGNiYCBvbiBhbnkgSURz
IHRoYXRcblx0ICogc2hvdWxkIHdvdWxkIHJlY2VpdmUgYSBgbW91c2VFbnRlcmAgb3IgYG1vdXNl
TGVhdmVgIGV2ZW50LlxuXHQgKlxuXHQgKiBEb2VzIG5vdCBpbnZva2UgdGhlIGNhbGxiYWNrIG9u
IHRoZSBuZWFyZXN0IGNvbW1vbiBhbmNlc3RvciBiZWNhdXNlIG5vdGhpbmdcblx0ICogXCJlbnRl
cmVkXCIgb3IgXCJsZWZ0XCIgdGhhdCBlbGVtZW50LlxuXHQgKi9cblx0ZnVuY3Rpb24gdHJhdmVy
c2VFbnRlckxlYXZlKGZyb20sIHRvLCBmbiwgYXJnRnJvbSwgYXJnVG8pIHtcblx0ICB2YXIgY29t
bW9uID0gZnJvbSAmJiB0byA/IGdldExvd2VzdENvbW1vbkFuY2VzdG9yKGZyb20sIHRvKSA6IG51
bGw7XG5cdCAgdmFyIHBhdGhGcm9tID0gW107XG5cdCAgd2hpbGUgKGZyb20gJiYgZnJvbSAhPT0g
Y29tbW9uKSB7XG5cdCAgICBwYXRoRnJvbS5wdXNoKGZyb20pO1xuXHQgICAgZnJvbSA9IGZyb20u
X2hvc3RQYXJlbnQ7XG5cdCAgfVxuXHQgIHZhciBwYXRoVG8gPSBbXTtcblx0ICB3aGlsZSAodG8g
JiYgdG8gIT09IGNvbW1vbikge1xuXHQgICAgcGF0aFRvLnB1c2godG8pO1xuXHQgICAgdG8gPSB0
by5faG9zdFBhcmVudDtcblx0ICB9XG5cdCAgdmFyIGk7XG5cdCAgZm9yIChpID0gMDsgaSA8IHBh
dGhGcm9tLmxlbmd0aDsgaSsrKSB7XG5cdCAgICBmbihwYXRoRnJvbVtpXSwgJ2J1YmJsZWQnLCBh
cmdGcm9tKTtcblx0ICB9XG5cdCAgZm9yIChpID0gcGF0aFRvLmxlbmd0aDsgaS0tID4gMDspIHtc
blx0ICAgIGZuKHBhdGhUb1tpXSwgJ2NhcHR1cmVkJywgYXJnVG8pO1xuXHQgIH1cblx0fVxuXHRc
blx0bW9kdWxlLmV4cG9ydHMgPSB7XG5cdCAgaXNBbmNlc3RvcjogaXNBbmNlc3Rvcixcblx0ICBn
ZXRMb3dlc3RDb21tb25BbmNlc3RvcjogZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3IsXG5cdCAgZ2V0
UGFyZW50SW5zdGFuY2U6IGdldFBhcmVudEluc3RhbmNlLFxuXHQgIHRyYXZlcnNlVHdvUGhhc2U6
IHRyYXZlcnNlVHdvUGhhc2UsXG5cdCAgdHJhdmVyc2VFbnRlckxlYXZlOiB0cmF2ZXJzZUVudGVy
TGVhdmVcblx0fTtcblxuLyoqKi8gfSxcbi8qIDE0OSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0
dmFyIF9hc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRcblx0dmFyIFJlYWN0VXBk
YXRlcyA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7XG5cdHZhciBUcmFuc2FjdGlvbiA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMjcpO1xuXHRcblx0dmFyIGVtcHR5RnVuY3Rpb24gPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDcpO1xuXHRcblx0dmFyIFJFU0VUX0JBVENIRURfVVBEQVRFUyA9IHtcblx0ICBp
bml0aWFsaXplOiBlbXB0eUZ1bmN0aW9uLFxuXHQgIGNsb3NlOiBmdW5jdGlvbiAoKSB7XG5cdCAg
ICBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5LmlzQmF0Y2hpbmdVcGRhdGVzID0gZmFsc2U7
XG5cdCAgfVxuXHR9O1xuXHRcblx0dmFyIEZMVVNIX0JBVENIRURfVVBEQVRFUyA9IHtcblx0ICBp
bml0aWFsaXplOiBlbXB0eUZ1bmN0aW9uLFxuXHQgIGNsb3NlOiBSZWFjdFVwZGF0ZXMuZmx1c2hC
YXRjaGVkVXBkYXRlcy5iaW5kKFJlYWN0VXBkYXRlcylcblx0fTtcblx0XG5cdHZhciBUUkFOU0FD
VElPTl9XUkFQUEVSUyA9IFtGTFVTSF9CQVRDSEVEX1VQREFURVMsIFJFU0VUX0JBVENIRURfVVBE
QVRFU107XG5cdFxuXHRmdW5jdGlvbiBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5VHJhbnNh
Y3Rpb24oKSB7XG5cdCAgdGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpO1xuXHR9XG5cdFxu
XHRfYXNzaWduKFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3lUcmFuc2FjdGlvbi5wcm90b3R5
cGUsIFRyYW5zYWN0aW9uLCB7XG5cdCAgZ2V0VHJhbnNhY3Rpb25XcmFwcGVyczogZnVuY3Rpb24g
KCkge1xuXHQgICAgcmV0dXJuIFRSQU5TQUNUSU9OX1dSQVBQRVJTO1xuXHQgIH1cblx0fSk7XG5c
dFxuXHR2YXIgdHJhbnNhY3Rpb24gPSBuZXcgUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneVRy
YW5zYWN0aW9uKCk7XG5cdFxuXHR2YXIgUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneSA9IHtc
blx0ICBpc0JhdGNoaW5nVXBkYXRlczogZmFsc2UsXG5cdFxuXHQgIC8qKlxuXHQgICAqIENhbGwg
dGhlIHByb3ZpZGVkIGZ1bmN0aW9uIGluIGEgY29udGV4dCB3aXRoaW4gd2hpY2ggY2FsbHMgdG8g
YHNldFN0YXRlYFxuXHQgICAqIGFuZCBmcmllbmRzIGFyZSBiYXRjaGVkIHN1Y2ggdGhhdCBjb21w
b25lbnRzIGFyZW4ndCB1cGRhdGVkIHVubmVjZXNzYXJpbHkuXG5cdCAgICovXG5cdCAgYmF0Y2hl
ZFVwZGF0ZXM6IGZ1bmN0aW9uIChjYWxsYmFjaywgYSwgYiwgYywgZCwgZSkge1xuXHQgICAgdmFy
IGFscmVhZHlCYXRjaGluZ1VwZGF0ZXMgPSBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5Lmlz
QmF0Y2hpbmdVcGRhdGVzO1xuXHRcblx0ICAgIFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3ku
aXNCYXRjaGluZ1VwZGF0ZXMgPSB0cnVlO1xuXHRcblx0ICAgIC8vIFRoZSBjb2RlIGlzIHdyaXR0
ZW4gdGhpcyB3YXkgdG8gYXZvaWQgZXh0cmEgYWxsb2NhdGlvbnNcblx0ICAgIGlmIChhbHJlYWR5
QmF0Y2hpbmdVcGRhdGVzKSB7XG5cdCAgICAgIHJldHVybiBjYWxsYmFjayhhLCBiLCBjLCBkLCBl
KTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHJldHVybiB0cmFuc2FjdGlvbi5wZXJmb3JtKGNh
bGxiYWNrLCBudWxsLCBhLCBiLCBjLCBkLCBlKTtcblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdFxu
XHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3k7XG5cbi8qKiov
IH0sXG4vKiAxNTAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNr
X3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQg
KlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBBUklBRE9NUHJvcGVydHlD
b25maWcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyNCk7XG5cdHZhciBCZWZvcmVJbnB1dEV2ZW50
UGx1Z2luID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMjYpO1xuXHR2YXIgQ2hhbmdlRXZlbnRQbHVn
aW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyOCk7XG5cdHZhciBEZWZhdWx0RXZlbnRQbHVnaW5P
cmRlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTMwKTtcblx0dmFyIEVudGVyTGVhdmVFdmVudFBs
dWdpbiA9IF9fd2VicGFja19yZXF1aXJlX18oMTMxKTtcblx0dmFyIEhUTUxET01Qcm9wZXJ0eUNv
bmZpZyA9IF9fd2VicGFja19yZXF1aXJlX18oMTMzKTtcblx0dmFyIFJlYWN0Q29tcG9uZW50QnJv
d3NlckVudmlyb25tZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMzUpO1xuXHR2YXIgUmVhY3RE
T01Db21wb25lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzOCk7XG5cdHZhciBSZWFjdERPTUNv
bXBvbmVudFRyZWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuXHR2YXIgUmVhY3RET01FbXB0
eUNvbXBvbmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMTQwKTtcblx0dmFyIFJlYWN0RE9NVHJl
ZVRyYXZlcnNhbCA9IF9fd2VicGFja19yZXF1aXJlX18oMTQ4KTtcblx0dmFyIFJlYWN0RE9NVGV4
dENvbXBvbmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMTQ2KTtcblx0dmFyIFJlYWN0RGVmYXVs
dEJhdGNoaW5nU3RyYXRlZ3kgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0OSk7XG5cdHZhciBSZWFj
dEV2ZW50TGlzdGVuZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1Myk7XG5cdHZhciBSZWFjdElu
amVjdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oMTU0KTtcblx0dmFyIFJlYWN0UmVjb25jaWxl
VHJhbnNhY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1OSk7XG5cdHZhciBTVkdET01Qcm9w
ZXJ0eUNvbmZpZyA9IF9fd2VicGFja19yZXF1aXJlX18oMTY0KTtcblx0dmFyIFNlbGVjdEV2ZW50
UGx1Z2luID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNjUpO1xuXHR2YXIgU2ltcGxlRXZlbnRQbHVn
aW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2Nik7XG5cdFxuXHR2YXIgYWxyZWFkeUluamVjdGVk
ID0gZmFsc2U7XG5cdFxuXHRmdW5jdGlvbiBpbmplY3QoKSB7XG5cdCAgaWYgKGFscmVhZHlJbmpl
Y3RlZCkge1xuXHQgICAgLy8gVE9ETzogVGhpcyBpcyBjdXJyZW50bHkgdHJ1ZSBiZWNhdXNlIHRo
ZXNlIGluamVjdGlvbnMgYXJlIHNoYXJlZCBiZXR3ZWVuXG5cdCAgICAvLyB0aGUgY2xpZW50IGFu
ZCB0aGUgc2VydmVyIHBhY2thZ2UuIFRoZXkgc2hvdWxkIGJlIGJ1aWx0IGluZGVwZW5kZW50bHlc
blx0ICAgIC8vIGFuZCBub3Qgc2hhcmUgYW55IGluamVjdGlvbiBzdGF0ZS4gVGhlbiB0aGlzIHBy
b2JsZW0gd2lsbCBiZSBzb2x2ZWQuXG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHQgIGFscmVhZHlJ
bmplY3RlZCA9IHRydWU7XG5cdFxuXHQgIFJlYWN0SW5qZWN0aW9uLkV2ZW50RW1pdHRlci5pbmpl
Y3RSZWFjdEV2ZW50TGlzdGVuZXIoUmVhY3RFdmVudExpc3RlbmVyKTtcblx0XG5cdCAgLyoqXG5c
dCAgICogSW5qZWN0IG1vZHVsZXMgZm9yIHJlc29sdmluZyBET00gaGllcmFyY2h5IGFuZCBwbHVn
aW4gb3JkZXJpbmcuXG5cdCAgICovXG5cdCAgUmVhY3RJbmplY3Rpb24uRXZlbnRQbHVnaW5IdWIu
aW5qZWN0RXZlbnRQbHVnaW5PcmRlcihEZWZhdWx0RXZlbnRQbHVnaW5PcmRlcik7XG5cdCAgUmVh
Y3RJbmplY3Rpb24uRXZlbnRQbHVnaW5VdGlscy5pbmplY3RDb21wb25lbnRUcmVlKFJlYWN0RE9N
Q29tcG9uZW50VHJlZSk7XG5cdCAgUmVhY3RJbmplY3Rpb24uRXZlbnRQbHVnaW5VdGlscy5pbmpl
Y3RUcmVlVHJhdmVyc2FsKFJlYWN0RE9NVHJlZVRyYXZlcnNhbCk7XG5cdFxuXHQgIC8qKlxuXHQg
ICAqIFNvbWUgaW1wb3J0YW50IGV2ZW50IHBsdWdpbnMgaW5jbHVkZWQgYnkgZGVmYXVsdCAod2l0
aG91dCBoYXZpbmcgdG8gcmVxdWlyZVxuXHQgICAqIHRoZW0pLlxuXHQgICAqL1xuXHQgIFJlYWN0
SW5qZWN0aW9uLkV2ZW50UGx1Z2luSHViLmluamVjdEV2ZW50UGx1Z2luc0J5TmFtZSh7XG5cdCAg
ICBTaW1wbGVFdmVudFBsdWdpbjogU2ltcGxlRXZlbnRQbHVnaW4sXG5cdCAgICBFbnRlckxlYXZl
RXZlbnRQbHVnaW46IEVudGVyTGVhdmVFdmVudFBsdWdpbixcblx0ICAgIENoYW5nZUV2ZW50UGx1
Z2luOiBDaGFuZ2VFdmVudFBsdWdpbixcblx0ICAgIFNlbGVjdEV2ZW50UGx1Z2luOiBTZWxlY3RF
dmVudFBsdWdpbixcblx0ICAgIEJlZm9yZUlucHV0RXZlbnRQbHVnaW46IEJlZm9yZUlucHV0RXZl
bnRQbHVnaW5cblx0ICB9KTtcblx0XG5cdCAgUmVhY3RJbmplY3Rpb24uSG9zdENvbXBvbmVudC5p
bmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3MoUmVhY3RET01Db21wb25lbnQpO1xuXHRcblx0ICBS
ZWFjdEluamVjdGlvbi5Ib3N0Q29tcG9uZW50LmluamVjdFRleHRDb21wb25lbnRDbGFzcyhSZWFj
dERPTVRleHRDb21wb25lbnQpO1xuXHRcblx0ICBSZWFjdEluamVjdGlvbi5ET01Qcm9wZXJ0eS5p
bmplY3RET01Qcm9wZXJ0eUNvbmZpZyhBUklBRE9NUHJvcGVydHlDb25maWcpO1xuXHQgIFJlYWN0
SW5qZWN0aW9uLkRPTVByb3BlcnR5LmluamVjdERPTVByb3BlcnR5Q29uZmlnKEhUTUxET01Qcm9w
ZXJ0eUNvbmZpZyk7XG5cdCAgUmVhY3RJbmplY3Rpb24uRE9NUHJvcGVydHkuaW5qZWN0RE9NUHJv
cGVydHlDb25maWcoU1ZHRE9NUHJvcGVydHlDb25maWcpO1xuXHRcblx0ICBSZWFjdEluamVjdGlv
bi5FbXB0eUNvbXBvbmVudC5pbmplY3RFbXB0eUNvbXBvbmVudEZhY3RvcnkoZnVuY3Rpb24gKGlu
c3RhbnRpYXRlKSB7XG5cdCAgICByZXR1cm4gbmV3IFJlYWN0RE9NRW1wdHlDb21wb25lbnQoaW5z
dGFudGlhdGUpO1xuXHQgIH0pO1xuXHRcblx0ICBSZWFjdEluamVjdGlvbi5VcGRhdGVzLmluamVj
dFJlY29uY2lsZVRyYW5zYWN0aW9uKFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24pO1xuXHQgIFJl
YWN0SW5qZWN0aW9uLlVwZGF0ZXMuaW5qZWN0QmF0Y2hpbmdTdHJhdGVneShSZWFjdERlZmF1bHRC
YXRjaGluZ1N0cmF0ZWd5KTtcblx0XG5cdCAgUmVhY3RJbmplY3Rpb24uQ29tcG9uZW50LmluamVj
dEVudmlyb25tZW50KFJlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50KTtcblx0fVxuXHRc
blx0bW9kdWxlLmV4cG9ydHMgPSB7XG5cdCAgaW5qZWN0OiBpbmplY3Rcblx0fTtcblxuLyoqKi8g
fSxcbi8qIDE1MSAqL1xuOTEsXG4vKiAxNTIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQg
KlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBF
dmVudFBsdWdpbkh1YiA9IF9fd2VicGFja19yZXF1aXJlX18oMTkpO1xuXHRcblx0ZnVuY3Rpb24g
cnVuRXZlbnRRdWV1ZUluQmF0Y2goZXZlbnRzKSB7XG5cdCAgRXZlbnRQbHVnaW5IdWIuZW5xdWV1
ZUV2ZW50cyhldmVudHMpO1xuXHQgIEV2ZW50UGx1Z2luSHViLnByb2Nlc3NFdmVudFF1ZXVlKGZh
bHNlKTtcblx0fVxuXHRcblx0dmFyIFJlYWN0RXZlbnRFbWl0dGVyTWl4aW4gPSB7XG5cdCAgLyoq
XG5cdCAgICogU3RyZWFtcyBhIGZpcmVkIHRvcC1sZXZlbCBldmVudCB0byBgRXZlbnRQbHVnaW5I
dWJgIHdoZXJlIHBsdWdpbnMgaGF2ZSB0aGVcblx0ICAgKiBvcHBvcnR1bml0eSB0byBjcmVhdGUg
YFJlYWN0RXZlbnRgcyB0byBiZSBkaXNwYXRjaGVkLlxuXHQgICAqL1xuXHQgIGhhbmRsZVRvcExl
dmVsOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0
aXZlRXZlbnRUYXJnZXQpIHtcblx0ICAgIHZhciBldmVudHMgPSBFdmVudFBsdWdpbkh1Yi5leHRy
YWN0RXZlbnRzKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2
ZW50VGFyZ2V0KTtcblx0ICAgIHJ1bkV2ZW50UXVldWVJbkJhdGNoKGV2ZW50cyk7XG5cdCAgfVxu
XHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdEV2ZW50RW1pdHRlck1peGluO1xuXG4v
KioqLyB9LFxuLyogMTUzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
blx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX2Fzc2lnbiA9IF9f
d2VicGFja19yZXF1aXJlX18oNCk7XG5cdFxuXHR2YXIgRXZlbnRMaXN0ZW5lciA9IF9fd2VicGFj
a19yZXF1aXJlX18oNTEpO1xuXHR2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDYpO1xuXHR2YXIgUG9vbGVkQ2xhc3MgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEz
KTtcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7
XG5cdHZhciBSZWFjdFVwZGF0ZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuXHRcblx0dmFy
IGdldEV2ZW50VGFyZ2V0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Nik7XG5cdHZhciBnZXRVbmJv
dW5kZWRTY3JvbGxQb3NpdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oMTA0KTtcblx0XG5cdC8q
KlxuXHQgKiBGaW5kIHRoZSBkZWVwZXN0IFJlYWN0IGNvbXBvbmVudCBjb21wbGV0ZWx5IGNvbnRh
aW5pbmcgdGhlIHJvb3Qgb2YgdGhlXG5cdCAqIHBhc3NlZC1pbiBpbnN0YW5jZSAoZm9yIHVzZSB3
aGVuIGVudGlyZSBSZWFjdCB0cmVlcyBhcmUgbmVzdGVkIHdpdGhpbiBlYWNoXG5cdCAqIG90aGVy
KS4gSWYgUmVhY3QgdHJlZXMgYXJlIG5vdCBuZXN0ZWQsIHJldHVybnMgbnVsbC5cblx0ICovXG5c
dGZ1bmN0aW9uIGZpbmRQYXJlbnQoaW5zdCkge1xuXHQgIC8vIFRPRE86IEl0IG1heSBiZSBhIGdv
b2QgaWRlYSB0byBjYWNoZSB0aGlzIHRvIHByZXZlbnQgdW5uZWNlc3NhcnkgRE9NXG5cdCAgLy8g
dHJhdmVyc2FsLCBidXQgY2FjaGluZyBpcyBkaWZmaWN1bHQgdG8gZG8gY29ycmVjdGx5IHdpdGhv
dXQgdXNpbmcgYVxuXHQgIC8vIG11dGF0aW9uIG9ic2VydmVyIHRvIGxpc3RlbiBmb3IgYWxsIERP
TSBjaGFuZ2VzLlxuXHQgIHdoaWxlIChpbnN0Ll9ob3N0UGFyZW50KSB7XG5cdCAgICBpbnN0ID0g
aW5zdC5faG9zdFBhcmVudDtcblx0ICB9XG5cdCAgdmFyIHJvb3ROb2RlID0gUmVhY3RET01Db21w
b25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7XG5cdCAgdmFyIGNvbnRhaW5lciA9
IHJvb3ROb2RlLnBhcmVudE5vZGU7XG5cdCAgcmV0dXJuIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5n
ZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZShjb250YWluZXIpO1xuXHR9XG5cdFxuXHQvLyBVc2Vk
IHRvIHN0b3JlIGFuY2VzdG9yIGhpZXJhcmNoeSBpbiB0b3AgbGV2ZWwgY2FsbGJhY2tcblx0ZnVu
Y3Rpb24gVG9wTGV2ZWxDYWxsYmFja0Jvb2tLZWVwaW5nKHRvcExldmVsVHlwZSwgbmF0aXZlRXZl
bnQpIHtcblx0ICB0aGlzLnRvcExldmVsVHlwZSA9IHRvcExldmVsVHlwZTtcblx0ICB0aGlzLm5h
dGl2ZUV2ZW50ID0gbmF0aXZlRXZlbnQ7XG5cdCAgdGhpcy5hbmNlc3RvcnMgPSBbXTtcblx0fVxu
XHRfYXNzaWduKFRvcExldmVsQ2FsbGJhY2tCb29rS2VlcGluZy5wcm90b3R5cGUsIHtcblx0ICBk
ZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7XG5cdCAgICB0aGlzLnRvcExldmVsVHlwZSA9IG51bGw7
XG5cdCAgICB0aGlzLm5hdGl2ZUV2ZW50ID0gbnVsbDtcblx0ICAgIHRoaXMuYW5jZXN0b3JzLmxl
bmd0aCA9IDA7XG5cdCAgfVxuXHR9KTtcblx0UG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1RvKFRvcExl
dmVsQ2FsbGJhY2tCb29rS2VlcGluZywgUG9vbGVkQ2xhc3MudHdvQXJndW1lbnRQb29sZXIpO1xu
XHRcblx0ZnVuY3Rpb24gaGFuZGxlVG9wTGV2ZWxJbXBsKGJvb2tLZWVwaW5nKSB7XG5cdCAgdmFy
IG5hdGl2ZUV2ZW50VGFyZ2V0ID0gZ2V0RXZlbnRUYXJnZXQoYm9va0tlZXBpbmcubmF0aXZlRXZl
bnQpO1xuXHQgIHZhciB0YXJnZXRJbnN0ID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldENsb3Nl
c3RJbnN0YW5jZUZyb21Ob2RlKG5hdGl2ZUV2ZW50VGFyZ2V0KTtcblx0XG5cdCAgLy8gTG9vcCB0
aHJvdWdoIHRoZSBoaWVyYXJjaHksIGluIGNhc2UgdGhlcmUncyBhbnkgbmVzdGVkIGNvbXBvbmVu
dHMuXG5cdCAgLy8gSXQncyBpbXBvcnRhbnQgdGhhdCB3ZSBidWlsZCB0aGUgYXJyYXkgb2YgYW5j
ZXN0b3JzIGJlZm9yZSBjYWxsaW5nIGFueVxuXHQgIC8vIGV2ZW50IGhhbmRsZXJzLCBiZWNhdXNl
IGV2ZW50IGhhbmRsZXJzIGNhbiBtb2RpZnkgdGhlIERPTSwgbGVhZGluZyB0b1xuXHQgIC8vIGlu
Y29uc2lzdGVuY2llcyB3aXRoIFJlYWN0TW91bnQncyBub2RlIGNhY2hlLiBTZWUgIzExMDUuXG5c
dCAgdmFyIGFuY2VzdG9yID0gdGFyZ2V0SW5zdDtcblx0ICBkbyB7XG5cdCAgICBib29rS2VlcGlu
Zy5hbmNlc3RvcnMucHVzaChhbmNlc3Rvcik7XG5cdCAgICBhbmNlc3RvciA9IGFuY2VzdG9yICYm
IGZpbmRQYXJlbnQoYW5jZXN0b3IpO1xuXHQgIH0gd2hpbGUgKGFuY2VzdG9yKTtcblx0XG5cdCAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBib29rS2VlcGluZy5hbmNlc3RvcnMubGVuZ3RoOyBpKyspIHtc
blx0ICAgIHRhcmdldEluc3QgPSBib29rS2VlcGluZy5hbmNlc3RvcnNbaV07XG5cdCAgICBSZWFj
dEV2ZW50TGlzdGVuZXIuX2hhbmRsZVRvcExldmVsKGJvb2tLZWVwaW5nLnRvcExldmVsVHlwZSwg
dGFyZ2V0SW5zdCwgYm9va0tlZXBpbmcubmF0aXZlRXZlbnQsIGdldEV2ZW50VGFyZ2V0KGJvb2tL
ZWVwaW5nLm5hdGl2ZUV2ZW50KSk7XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBzY3JvbGxW
YWx1ZU1vbml0b3IoY2IpIHtcblx0ICB2YXIgc2Nyb2xsUG9zaXRpb24gPSBnZXRVbmJvdW5kZWRT
Y3JvbGxQb3NpdGlvbih3aW5kb3cpO1xuXHQgIGNiKHNjcm9sbFBvc2l0aW9uKTtcblx0fVxuXHRc
blx0dmFyIFJlYWN0RXZlbnRMaXN0ZW5lciA9IHtcblx0ICBfZW5hYmxlZDogdHJ1ZSxcblx0ICBf
aGFuZGxlVG9wTGV2ZWw6IG51bGwsXG5cdFxuXHQgIFdJTkRPV19IQU5ETEU6IEV4ZWN1dGlvbkVu
dmlyb25tZW50LmNhblVzZURPTSA/IHdpbmRvdyA6IG51bGwsXG5cdFxuXHQgIHNldEhhbmRsZVRv
cExldmVsOiBmdW5jdGlvbiAoaGFuZGxlVG9wTGV2ZWwpIHtcblx0ICAgIFJlYWN0RXZlbnRMaXN0
ZW5lci5faGFuZGxlVG9wTGV2ZWwgPSBoYW5kbGVUb3BMZXZlbDtcblx0ICB9LFxuXHRcblx0ICBz
ZXRFbmFibGVkOiBmdW5jdGlvbiAoZW5hYmxlZCkge1xuXHQgICAgUmVhY3RFdmVudExpc3RlbmVy
Ll9lbmFibGVkID0gISFlbmFibGVkO1xuXHQgIH0sXG5cdFxuXHQgIGlzRW5hYmxlZDogZnVuY3Rp
b24gKCkge1xuXHQgICAgcmV0dXJuIFJlYWN0RXZlbnRMaXN0ZW5lci5fZW5hYmxlZDtcblx0ICB9
LFxuXHRcblx0ICAvKipcblx0ICAgKiBUcmFwcyB0b3AtbGV2ZWwgZXZlbnRzIGJ5IHVzaW5nIGV2
ZW50IGJ1YmJsaW5nLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlw
ZSBSZWNvcmQgZnJvbSBgRXZlbnRDb25zdGFudHNgLlxuXHQgICAqIEBwYXJhbSB7c3RyaW5nfSBo
YW5kbGVyQmFzZU5hbWUgRXZlbnQgbmFtZSAoZS5nLiBcImNsaWNrXCIpLlxuXHQgICAqIEBwYXJh
bSB7b2JqZWN0fSBlbGVtZW50IEVsZW1lbnQgb24gd2hpY2ggdG8gYXR0YWNoIGxpc3RlbmVyLlxu
XHQgICAqIEByZXR1cm4gez9vYmplY3R9IEFuIG9iamVjdCB3aXRoIGEgcmVtb3ZlIGZ1bmN0aW9u
IHdoaWNoIHdpbGwgZm9yY2VmdWxseVxuXHQgICAqICAgICAgICAgICAgICAgICAgcmVtb3ZlIHRo
ZSBsaXN0ZW5lci5cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICB0cmFwQnViYmxlZEV2
ZW50OiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCBoYW5kbGVyQmFzZU5hbWUsIGVsZW1lbnQpIHtc
blx0ICAgIGlmICghZWxlbWVudCkge1xuXHQgICAgICByZXR1cm4gbnVsbDtcblx0ICAgIH1cblx0
ICAgIHJldHVybiBFdmVudExpc3RlbmVyLmxpc3RlbihlbGVtZW50LCBoYW5kbGVyQmFzZU5hbWUs
IFJlYWN0RXZlbnRMaXN0ZW5lci5kaXNwYXRjaEV2ZW50LmJpbmQobnVsbCwgdG9wTGV2ZWxUeXBl
KSk7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogVHJhcHMgYSB0b3AtbGV2ZWwgZXZlbnQg
YnkgdXNpbmcgZXZlbnQgY2FwdHVyaW5nLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9
IHRvcExldmVsVHlwZSBSZWNvcmQgZnJvbSBgRXZlbnRDb25zdGFudHNgLlxuXHQgICAqIEBwYXJh
bSB7c3RyaW5nfSBoYW5kbGVyQmFzZU5hbWUgRXZlbnQgbmFtZSAoZS5nLiBcImNsaWNrXCIpLlxu
XHQgICAqIEBwYXJhbSB7b2JqZWN0fSBlbGVtZW50IEVsZW1lbnQgb24gd2hpY2ggdG8gYXR0YWNo
IGxpc3RlbmVyLlxuXHQgICAqIEByZXR1cm4gez9vYmplY3R9IEFuIG9iamVjdCB3aXRoIGEgcmVt
b3ZlIGZ1bmN0aW9uIHdoaWNoIHdpbGwgZm9yY2VmdWxseVxuXHQgICAqICAgICAgICAgICAgICAg
ICAgcmVtb3ZlIHRoZSBsaXN0ZW5lci5cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICB0
cmFwQ2FwdHVyZWRFdmVudDogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgaGFuZGxlckJhc2VOYW1l
LCBlbGVtZW50KSB7XG5cdCAgICBpZiAoIWVsZW1lbnQpIHtcblx0ICAgICAgcmV0dXJuIG51bGw7
XG5cdCAgICB9XG5cdCAgICByZXR1cm4gRXZlbnRMaXN0ZW5lci5jYXB0dXJlKGVsZW1lbnQsIGhh
bmRsZXJCYXNlTmFtZSwgUmVhY3RFdmVudExpc3RlbmVyLmRpc3BhdGNoRXZlbnQuYmluZChudWxs
LCB0b3BMZXZlbFR5cGUpKTtcblx0ICB9LFxuXHRcblx0ICBtb25pdG9yU2Nyb2xsVmFsdWU6IGZ1
bmN0aW9uIChyZWZyZXNoKSB7XG5cdCAgICB2YXIgY2FsbGJhY2sgPSBzY3JvbGxWYWx1ZU1vbml0
b3IuYmluZChudWxsLCByZWZyZXNoKTtcblx0ICAgIEV2ZW50TGlzdGVuZXIubGlzdGVuKHdpbmRv
dywgJ3Njcm9sbCcsIGNhbGxiYWNrKTtcblx0ICB9LFxuXHRcblx0ICBkaXNwYXRjaEV2ZW50OiBm
dW5jdGlvbiAodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkge1xuXHQgICAgaWYgKCFSZWFjdEV2
ZW50TGlzdGVuZXIuX2VuYWJsZWQpIHtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHRcblx0
ICAgIHZhciBib29rS2VlcGluZyA9IFRvcExldmVsQ2FsbGJhY2tCb29rS2VlcGluZy5nZXRQb29s
ZWQodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCk7XG5cdCAgICB0cnkge1xuXHQgICAgICAvLyBF
dmVudCBxdWV1ZSBiZWluZyBwcm9jZXNzZWQgaW4gdGhlIHNhbWUgY3ljbGUgYWxsb3dzXG5cdCAg
ICAgIC8vIGBwcmV2ZW50RGVmYXVsdGAuXG5cdCAgICAgIFJlYWN0VXBkYXRlcy5iYXRjaGVkVXBk
YXRlcyhoYW5kbGVUb3BMZXZlbEltcGwsIGJvb2tLZWVwaW5nKTtcblx0ICAgIH0gZmluYWxseSB7
XG5cdCAgICAgIFRvcExldmVsQ2FsbGJhY2tCb29rS2VlcGluZy5yZWxlYXNlKGJvb2tLZWVwaW5n
KTtcblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0RXZl
bnRMaXN0ZW5lcjtcblxuLyoqKi8gfSxcbi8qIDE1NCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0
dmFyIERPTVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSk7XG5cdHZhciBFdmVudFBs
dWdpbkh1YiA9IF9fd2VicGFja19yZXF1aXJlX18oMTkpO1xuXHR2YXIgRXZlbnRQbHVnaW5VdGls
cyA9IF9fd2VicGFja19yZXF1aXJlX18oMzcpO1xuXHR2YXIgUmVhY3RDb21wb25lbnRFbnZpcm9u
bWVudCA9IF9fd2VicGFja19yZXF1aXJlX18oNDApO1xuXHR2YXIgUmVhY3RFbXB0eUNvbXBvbmVu
dCA9IF9fd2VicGFja19yZXF1aXJlX18oNjMpO1xuXHR2YXIgUmVhY3RCcm93c2VyRXZlbnRFbWl0
dGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNSk7XG5cdHZhciBSZWFjdEhvc3RDb21wb25lbnQg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY1KTtcblx0dmFyIFJlYWN0VXBkYXRlcyA9IF9fd2VicGFj
a19yZXF1aXJlX18oOSk7XG5cdFxuXHR2YXIgUmVhY3RJbmplY3Rpb24gPSB7XG5cdCAgQ29tcG9u
ZW50OiBSZWFjdENvbXBvbmVudEVudmlyb25tZW50LmluamVjdGlvbixcblx0ICBET01Qcm9wZXJ0
eTogRE9NUHJvcGVydHkuaW5qZWN0aW9uLFxuXHQgIEVtcHR5Q29tcG9uZW50OiBSZWFjdEVtcHR5
Q29tcG9uZW50LmluamVjdGlvbixcblx0ICBFdmVudFBsdWdpbkh1YjogRXZlbnRQbHVnaW5IdWIu
aW5qZWN0aW9uLFxuXHQgIEV2ZW50UGx1Z2luVXRpbHM6IEV2ZW50UGx1Z2luVXRpbHMuaW5qZWN0
aW9uLFxuXHQgIEV2ZW50RW1pdHRlcjogUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLmluamVjdGlv
bixcblx0ICBIb3N0Q29tcG9uZW50OiBSZWFjdEhvc3RDb21wb25lbnQuaW5qZWN0aW9uLFxuXHQg
IFVwZGF0ZXM6IFJlYWN0VXBkYXRlcy5pbmplY3Rpb25cblx0fTtcblx0XG5cdG1vZHVsZS5leHBv
cnRzID0gUmVhY3RJbmplY3Rpb247XG5cbi8qKiovIH0sXG4vKiAxNTUgKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0
Jztcblx0XG5cdHZhciBhZGxlcjMyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNzcpO1xuXHRcblx0
dmFyIFRBR19FTkQgPSAvXFwvPz4vO1xuXHR2YXIgQ09NTUVOVF9TVEFSVCA9IC9ePFxcIVxcLVxc
LS87XG5cdFxuXHR2YXIgUmVhY3RNYXJrdXBDaGVja3N1bSA9IHtcblx0ICBDSEVDS1NVTV9BVFRS
X05BTUU6ICdkYXRhLXJlYWN0LWNoZWNrc3VtJyxcblx0XG5cdCAgLyoqXG5cdCAgICogQHBhcmFt
IHtzdHJpbmd9IG1hcmt1cCBNYXJrdXAgc3RyaW5nXG5cdCAgICogQHJldHVybiB7c3RyaW5nfSBN
YXJrdXAgc3RyaW5nIHdpdGggY2hlY2tzdW0gYXR0cmlidXRlIGF0dGFjaGVkXG5cdCAgICovXG5c
dCAgYWRkQ2hlY2tzdW1Ub01hcmt1cDogZnVuY3Rpb24gKG1hcmt1cCkge1xuXHQgICAgdmFyIGNo
ZWNrc3VtID0gYWRsZXIzMihtYXJrdXApO1xuXHRcblx0ICAgIC8vIEFkZCBjaGVja3N1bSAoaGFu
ZGxlIGJvdGggcGFyZW50IHRhZ3MsIGNvbW1lbnRzIGFuZCBzZWxmLWNsb3NpbmcgdGFncylcblx0
ICAgIGlmIChDT01NRU5UX1NUQVJULnRlc3QobWFya3VwKSkge1xuXHQgICAgICByZXR1cm4gbWFy
a3VwO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcmV0dXJuIG1hcmt1cC5yZXBsYWNlKFRBR19F
TkQsICcgJyArIFJlYWN0TWFya3VwQ2hlY2tzdW0uQ0hFQ0tTVU1fQVRUUl9OQU1FICsgJz1cIicg
KyBjaGVja3N1bSArICdcIiQmJyk7XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAg
ICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCB0byB1c2Vcblx0ICAgKiBAcGFyYW0ge0RPTUVsZW1l
bnR9IGVsZW1lbnQgcm9vdCBSZWFjdCBlbGVtZW50XG5cdCAgICogQHJldHVybnMge2Jvb2xlYW59
IHdoZXRoZXIgb3Igbm90IHRoZSBtYXJrdXAgaXMgdGhlIHNhbWVcblx0ICAgKi9cblx0ICBjYW5S
ZXVzZU1hcmt1cDogZnVuY3Rpb24gKG1hcmt1cCwgZWxlbWVudCkge1xuXHQgICAgdmFyIGV4aXN0
aW5nQ2hlY2tzdW0gPSBlbGVtZW50LmdldEF0dHJpYnV0ZShSZWFjdE1hcmt1cENoZWNrc3VtLkNI
RUNLU1VNX0FUVFJfTkFNRSk7XG5cdCAgICBleGlzdGluZ0NoZWNrc3VtID0gZXhpc3RpbmdDaGVj
a3N1bSAmJiBwYXJzZUludChleGlzdGluZ0NoZWNrc3VtLCAxMCk7XG5cdCAgICB2YXIgbWFya3Vw
Q2hlY2tzdW0gPSBhZGxlcjMyKG1hcmt1cCk7XG5cdCAgICByZXR1cm4gbWFya3VwQ2hlY2tzdW0g
PT09IGV4aXN0aW5nQ2hlY2tzdW07XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMg
PSBSZWFjdE1hcmt1cENoZWNrc3VtO1xuXG4vKioqLyB9LFxuLyogMTU2ICovXG4vKioqLyBmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0
cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmlj
dCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xu
XHRcblx0dmFyIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDQwKTtcblx0dmFyIFJlYWN0SW5zdGFuY2VNYXAgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxKTtc
blx0dmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtcblx0
XG5cdHZhciBSZWFjdEN1cnJlbnRPd25lciA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpO1xuXHR2
YXIgUmVhY3RSZWNvbmNpbGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNik7XG5cdHZhciBSZWFj
dENoaWxkUmVjb25jaWxlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTM0KTtcblx0XG5cdHZhciBl
bXB0eUZ1bmN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcblx0dmFyIGZsYXR0ZW5DaGls
ZHJlbiA9IF9fd2VicGFja19yZXF1aXJlX18oMTgwKTtcblx0dmFyIGludmFyaWFudCA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMSk7XG5cdFxuXHQvKipcblx0ICogTWFrZSBhbiB1cGRhdGUgZm9yIG1h
cmt1cCB0byBiZSByZW5kZXJlZCBhbmQgaW5zZXJ0ZWQgYXQgYSBzdXBwbGllZCBpbmRleC5cblx0
ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBNYXJrdXAgdGhhdCByZW5kZXJzIGludG8g
YW4gZWxlbWVudC5cblx0ICogQHBhcmFtIHtudW1iZXJ9IHRvSW5kZXggRGVzdGluYXRpb24gaW5k
ZXguXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRmdW5jdGlvbiBtYWtlSW5zZXJ0TWFya3VwKG1h
cmt1cCwgYWZ0ZXJOb2RlLCB0b0luZGV4KSB7XG5cdCAgLy8gTk9URTogTnVsbCB2YWx1ZXMgcmVk
dWNlIGhpZGRlbiBjbGFzc2VzLlxuXHQgIHJldHVybiB7XG5cdCAgICB0eXBlOiAnSU5TRVJUX01B
UktVUCcsXG5cdCAgICBjb250ZW50OiBtYXJrdXAsXG5cdCAgICBmcm9tSW5kZXg6IG51bGwsXG5c
dCAgICBmcm9tTm9kZTogbnVsbCxcblx0ICAgIHRvSW5kZXg6IHRvSW5kZXgsXG5cdCAgICBhZnRl
ck5vZGU6IGFmdGVyTm9kZVxuXHQgIH07XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBNYWtlIGFuIHVw
ZGF0ZSBmb3IgbW92aW5nIGFuIGV4aXN0aW5nIGVsZW1lbnQgdG8gYW5vdGhlciBpbmRleC5cblx0
ICpcblx0ICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBTb3VyY2UgaW5kZXggb2YgdGhlIGV4
aXN0aW5nIGVsZW1lbnQuXG5cdCAqIEBwYXJhbSB7bnVtYmVyfSB0b0luZGV4IERlc3RpbmF0aW9u
IGluZGV4IG9mIHRoZSBlbGVtZW50LlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0ZnVuY3Rpb24g
bWFrZU1vdmUoY2hpbGQsIGFmdGVyTm9kZSwgdG9JbmRleCkge1xuXHQgIC8vIE5PVEU6IE51bGwg
dmFsdWVzIHJlZHVjZSBoaWRkZW4gY2xhc3Nlcy5cblx0ICByZXR1cm4ge1xuXHQgICAgdHlwZTog
J01PVkVfRVhJU1RJTkcnLFxuXHQgICAgY29udGVudDogbnVsbCxcblx0ICAgIGZyb21JbmRleDog
Y2hpbGQuX21vdW50SW5kZXgsXG5cdCAgICBmcm9tTm9kZTogUmVhY3RSZWNvbmNpbGVyLmdldEhv
c3ROb2RlKGNoaWxkKSxcblx0ICAgIHRvSW5kZXg6IHRvSW5kZXgsXG5cdCAgICBhZnRlck5vZGU6
IGFmdGVyTm9kZVxuXHQgIH07XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBNYWtlIGFuIHVwZGF0ZSBm
b3IgcmVtb3ZpbmcgYW4gZWxlbWVudCBhdCBhbiBpbmRleC5cblx0ICpcblx0ICogQHBhcmFtIHtu
dW1iZXJ9IGZyb21JbmRleCBJbmRleCBvZiB0aGUgZWxlbWVudCB0byByZW1vdmUuXG5cdCAqIEBw
cml2YXRlXG5cdCAqL1xuXHRmdW5jdGlvbiBtYWtlUmVtb3ZlKGNoaWxkLCBub2RlKSB7XG5cdCAg
Ly8gTk9URTogTnVsbCB2YWx1ZXMgcmVkdWNlIGhpZGRlbiBjbGFzc2VzLlxuXHQgIHJldHVybiB7
XG5cdCAgICB0eXBlOiAnUkVNT1ZFX05PREUnLFxuXHQgICAgY29udGVudDogbnVsbCxcblx0ICAg
IGZyb21JbmRleDogY2hpbGQuX21vdW50SW5kZXgsXG5cdCAgICBmcm9tTm9kZTogbm9kZSxcblx0
ICAgIHRvSW5kZXg6IG51bGwsXG5cdCAgICBhZnRlck5vZGU6IG51bGxcblx0ICB9O1xuXHR9XG5c
dFxuXHQvKipcblx0ICogTWFrZSBhbiB1cGRhdGUgZm9yIHNldHRpbmcgdGhlIG1hcmt1cCBvZiBh
IG5vZGUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgTWFya3VwIHRoYXQgcmVu
ZGVycyBpbnRvIGFuIGVsZW1lbnQuXG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHRmdW5jdGlvbiBt
YWtlU2V0TWFya3VwKG1hcmt1cCkge1xuXHQgIC8vIE5PVEU6IE51bGwgdmFsdWVzIHJlZHVjZSBo
aWRkZW4gY2xhc3Nlcy5cblx0ICByZXR1cm4ge1xuXHQgICAgdHlwZTogJ1NFVF9NQVJLVVAnLFxu
XHQgICAgY29udGVudDogbWFya3VwLFxuXHQgICAgZnJvbUluZGV4OiBudWxsLFxuXHQgICAgZnJv
bU5vZGU6IG51bGwsXG5cdCAgICB0b0luZGV4OiBudWxsLFxuXHQgICAgYWZ0ZXJOb2RlOiBudWxs
XG5cdCAgfTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIE1ha2UgYW4gdXBkYXRlIGZvciBzZXR0aW5n
IHRoZSB0ZXh0IGNvbnRlbnQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0Q29udGVu
dCBUZXh0IGNvbnRlbnQgdG8gc2V0LlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0ZnVuY3Rpb24g
bWFrZVRleHRDb250ZW50KHRleHRDb250ZW50KSB7XG5cdCAgLy8gTk9URTogTnVsbCB2YWx1ZXMg
cmVkdWNlIGhpZGRlbiBjbGFzc2VzLlxuXHQgIHJldHVybiB7XG5cdCAgICB0eXBlOiAnVEVYVF9D
T05URU5UJyxcblx0ICAgIGNvbnRlbnQ6IHRleHRDb250ZW50LFxuXHQgICAgZnJvbUluZGV4OiBu
dWxsLFxuXHQgICAgZnJvbU5vZGU6IG51bGwsXG5cdCAgICB0b0luZGV4OiBudWxsLFxuXHQgICAg
YWZ0ZXJOb2RlOiBudWxsXG5cdCAgfTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFB1c2ggYW4gdXBk
YXRlLCBpZiBhbnksIG9udG8gdGhlIHF1ZXVlLiBDcmVhdGVzIGEgbmV3IHF1ZXVlIGlmIG5vbmUg
aXNcblx0ICogcGFzc2VkIGFuZCBhbHdheXMgcmV0dXJucyB0aGUgcXVldWUuIE11dGF0aXZlLlxu
XHQgKi9cblx0ZnVuY3Rpb24gZW5xdWV1ZShxdWV1ZSwgdXBkYXRlKSB7XG5cdCAgaWYgKHVwZGF0
ZSkge1xuXHQgICAgcXVldWUgPSBxdWV1ZSB8fCBbXTtcblx0ICAgIHF1ZXVlLnB1c2godXBkYXRl
KTtcblx0ICB9XG5cdCAgcmV0dXJuIHF1ZXVlO1xuXHR9XG5cdFxuXHQvKipcblx0ICogUHJvY2Vz
c2VzIGFueSBlbnF1ZXVlZCB1cGRhdGVzLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0
ZnVuY3Rpb24gcHJvY2Vzc1F1ZXVlKGluc3QsIHVwZGF0ZVF1ZXVlKSB7XG5cdCAgUmVhY3RDb21w
b25lbnRFbnZpcm9ubWVudC5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzKGluc3QsIHVwZGF0ZVF1ZXVl
KTtcblx0fVxuXHRcblx0dmFyIHNldENoaWxkcmVuRm9ySW5zdHJ1bWVudGF0aW9uID0gZW1wdHlG
dW5jdGlvbjtcblx0aWYgKGZhbHNlKSB7XG5cdCAgdmFyIGdldERlYnVnSUQgPSBmdW5jdGlvbiAo
aW5zdCkge1xuXHQgICAgaWYgKCFpbnN0Ll9kZWJ1Z0lEKSB7XG5cdCAgICAgIC8vIENoZWNrIGZv
ciBBUlQtbGlrZSBpbnN0YW5jZXMuIFRPRE86IFRoaXMgaXMgc2lsbHkvZ3Jvc3MuXG5cdCAgICAg
IHZhciBpbnRlcm5hbDtcblx0ICAgICAgaWYgKGludGVybmFsID0gUmVhY3RJbnN0YW5jZU1hcC5n
ZXQoaW5zdCkpIHtcblx0ICAgICAgICBpbnN0ID0gaW50ZXJuYWw7XG5cdCAgICAgIH1cblx0ICAg
IH1cblx0ICAgIHJldHVybiBpbnN0Ll9kZWJ1Z0lEO1xuXHQgIH07XG5cdCAgc2V0Q2hpbGRyZW5G
b3JJbnN0cnVtZW50YXRpb24gPSBmdW5jdGlvbiAoY2hpbGRyZW4pIHtcblx0ICAgIHZhciBkZWJ1
Z0lEID0gZ2V0RGVidWdJRCh0aGlzKTtcblx0ICAgIC8vIFRPRE86IFJlYWN0IE5hdGl2ZSBlbXB0
eSBjb21wb25lbnRzIGFyZSBhbHNvIG11bHRpY2hpbGQuXG5cdCAgICAvLyBUaGlzIG1lYW5zIHRo
ZXkgc3RpbGwgZ2V0IGludG8gdGhpcyBtZXRob2QgYnV0IGRvbid0IGhhdmUgX2RlYnVnSUQuXG5c
dCAgICBpZiAoZGVidWdJRCAhPT0gMCkge1xuXHQgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5k
ZWJ1Z1Rvb2wub25TZXRDaGlsZHJlbihkZWJ1Z0lELCBjaGlsZHJlbiA/IE9iamVjdC5rZXlzKGNo
aWxkcmVuKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuXHQgICAgICAgIHJldHVybiBjaGlsZHJlbltr
ZXldLl9kZWJ1Z0lEO1xuXHQgICAgICB9KSA6IFtdKTtcblx0ICAgIH1cblx0ICB9O1xuXHR9XG5c
dFxuXHQvKipcblx0ICogUmVhY3RNdWx0aUNoaWxkIGFyZSBjYXBhYmxlIG9mIHJlY29uY2lsaW5n
IG11bHRpcGxlIGNoaWxkcmVuLlxuXHQgKlxuXHQgKiBAY2xhc3MgUmVhY3RNdWx0aUNoaWxkXG5c
dCAqIEBpbnRlcm5hbFxuXHQgKi9cblx0dmFyIFJlYWN0TXVsdGlDaGlsZCA9IHtcblx0ICAvKipc
blx0ICAgKiBQcm92aWRlcyBjb21tb24gZnVuY3Rpb25hbGl0eSBmb3IgY29tcG9uZW50cyB0aGF0
IG11c3QgcmVjb25jaWxlIG11bHRpcGxlXG5cdCAgICogY2hpbGRyZW4uIFRoaXMgaXMgdXNlZCBi
eSBgUmVhY3RET01Db21wb25lbnRgIHRvIG1vdW50LCB1cGRhdGUsIGFuZFxuXHQgICAqIHVubW91
bnQgY2hpbGQgY29tcG9uZW50cy5cblx0ICAgKlxuXHQgICAqIEBsZW5kcyB7UmVhY3RNdWx0aUNo
aWxkLnByb3RvdHlwZX1cblx0ICAgKi9cblx0ICBNaXhpbjoge1xuXHQgICAgX3JlY29uY2lsZXJJ
bnN0YW50aWF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAobmVzdGVkQ2hpbGRyZW4sIHRyYW5zYWN0aW9u
LCBjb250ZXh0KSB7XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIHZhciBzZWxmRGVi
dWdJRCA9IGdldERlYnVnSUQodGhpcyk7XG5cdCAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRFbGVt
ZW50KSB7XG5cdCAgICAgICAgICB0cnkge1xuXHQgICAgICAgICAgICBSZWFjdEN1cnJlbnRPd25l
ci5jdXJyZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuXHQgICAgICAgICAgICBy
ZXR1cm4gUmVhY3RDaGlsZFJlY29uY2lsZXIuaW5zdGFudGlhdGVDaGlsZHJlbihuZXN0ZWRDaGls
ZHJlbiwgdHJhbnNhY3Rpb24sIGNvbnRleHQsIHNlbGZEZWJ1Z0lEKTtcblx0ICAgICAgICAgIH0g
ZmluYWxseSB7XG5cdCAgICAgICAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSBudWxs
O1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4g
UmVhY3RDaGlsZFJlY29uY2lsZXIuaW5zdGFudGlhdGVDaGlsZHJlbihuZXN0ZWRDaGlsZHJlbiwg
dHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuXHQgICAgfSxcblx0XG5cdCAgICBfcmVjb25jaWxlclVw
ZGF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAocHJldkNoaWxkcmVuLCBuZXh0TmVzdGVkQ2hpbGRyZW5F
bGVtZW50cywgbW91bnRJbWFnZXMsIHJlbW92ZWROb2RlcywgdHJhbnNhY3Rpb24sIGNvbnRleHQp
IHtcblx0ICAgICAgdmFyIG5leHRDaGlsZHJlbjtcblx0ICAgICAgdmFyIHNlbGZEZWJ1Z0lEID0g
MDtcblx0ICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgc2VsZkRlYnVnSUQgPSBnZXREZWJ1
Z0lEKHRoaXMpO1xuXHQgICAgICAgIGlmICh0aGlzLl9jdXJyZW50RWxlbWVudCkge1xuXHQgICAg
ICAgICAgdHJ5IHtcblx0ICAgICAgICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IHRo
aXMuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcblx0ICAgICAgICAgICAgbmV4dENoaWxkcmVuID0g
ZmxhdHRlbkNoaWxkcmVuKG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCBzZWxmRGVidWdJRCk7
XG5cdCAgICAgICAgICB9IGZpbmFsbHkge1xuXHQgICAgICAgICAgICBSZWFjdEN1cnJlbnRPd25l
ci5jdXJyZW50ID0gbnVsbDtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICAgIFJlYWN0Q2hpbGRS
ZWNvbmNpbGVyLnVwZGF0ZUNoaWxkcmVuKHByZXZDaGlsZHJlbiwgbmV4dENoaWxkcmVuLCBtb3Vu
dEltYWdlcywgcmVtb3ZlZE5vZGVzLCB0cmFuc2FjdGlvbiwgdGhpcywgdGhpcy5faG9zdENvbnRh
aW5lckluZm8sIGNvbnRleHQsIHNlbGZEZWJ1Z0lEKTtcblx0ICAgICAgICAgIHJldHVybiBuZXh0
Q2hpbGRyZW47XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAgIG5leHRDaGlsZHJlbiA9
IGZsYXR0ZW5DaGlsZHJlbihuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cywgc2VsZkRlYnVnSUQp
O1xuXHQgICAgICBSZWFjdENoaWxkUmVjb25jaWxlci51cGRhdGVDaGlsZHJlbihwcmV2Q2hpbGRy
ZW4sIG5leHRDaGlsZHJlbiwgbW91bnRJbWFnZXMsIHJlbW92ZWROb2RlcywgdHJhbnNhY3Rpb24s
IHRoaXMsIHRoaXMuX2hvc3RDb250YWluZXJJbmZvLCBjb250ZXh0LCBzZWxmRGVidWdJRCk7XG5c
dCAgICAgIHJldHVybiBuZXh0Q2hpbGRyZW47XG5cdCAgICB9LFxuXHRcblx0ICAgIC8qKlxuXHQg
ICAgICogR2VuZXJhdGVzIGEgXCJtb3VudCBpbWFnZVwiIGZvciBlYWNoIG9mIHRoZSBzdXBwbGll
ZCBjaGlsZHJlbi4gSW4gdGhlIGNhc2Vcblx0ICAgICAqIG9mIGBSZWFjdERPTUNvbXBvbmVudGAs
IGEgbW91bnQgaW1hZ2UgaXMgYSBzdHJpbmcgb2YgbWFya3VwLlxuXHQgICAgICpcblx0ICAgICAq
IEBwYXJhbSB7P29iamVjdH0gbmVzdGVkQ2hpbGRyZW4gTmVzdGVkIGNoaWxkIG1hcHMuXG5cdCAg
ICAgKiBAcmV0dXJuIHthcnJheX0gQW4gYXJyYXkgb2YgbW91bnRlZCByZXByZXNlbnRhdGlvbnMu
XG5cdCAgICAgKiBAaW50ZXJuYWxcblx0ICAgICAqL1xuXHQgICAgbW91bnRDaGlsZHJlbjogZnVu
Y3Rpb24gKG5lc3RlZENoaWxkcmVuLCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuXHQgICAgICB2
YXIgY2hpbGRyZW4gPSB0aGlzLl9yZWNvbmNpbGVySW5zdGFudGlhdGVDaGlsZHJlbihuZXN0ZWRD
aGlsZHJlbiwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuXHQgICAgICB0aGlzLl9yZW5kZXJlZENo
aWxkcmVuID0gY2hpbGRyZW47XG5cdFxuXHQgICAgICB2YXIgbW91bnRJbWFnZXMgPSBbXTtcblx0
ICAgICAgdmFyIGluZGV4ID0gMDtcblx0ICAgICAgZm9yICh2YXIgbmFtZSBpbiBjaGlsZHJlbikg
e1xuXHQgICAgICAgIGlmIChjaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuXHQgICAg
ICAgICAgdmFyIGNoaWxkID0gY2hpbGRyZW5bbmFtZV07XG5cdCAgICAgICAgICB2YXIgc2VsZkRl
YnVnSUQgPSAwO1xuXHQgICAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICAgIHNlbGZE
ZWJ1Z0lEID0gZ2V0RGVidWdJRCh0aGlzKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICAgIHZh
ciBtb3VudEltYWdlID0gUmVhY3RSZWNvbmNpbGVyLm1vdW50Q29tcG9uZW50KGNoaWxkLCB0cmFu
c2FjdGlvbiwgdGhpcywgdGhpcy5faG9zdENvbnRhaW5lckluZm8sIGNvbnRleHQsIHNlbGZEZWJ1
Z0lEKTtcblx0ICAgICAgICAgIGNoaWxkLl9tb3VudEluZGV4ID0gaW5kZXgrKztcblx0ICAgICAg
ICAgIG1vdW50SW1hZ2VzLnB1c2gobW91bnRJbWFnZSk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9
XG5cdFxuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICBzZXRDaGlsZHJlbkZvckluc3Ry
dW1lbnRhdGlvbi5jYWxsKHRoaXMsIGNoaWxkcmVuKTtcblx0ICAgICAgfVxuXHRcblx0ICAgICAg
cmV0dXJuIG1vdW50SW1hZ2VzO1xuXHQgICAgfSxcblx0XG5cdCAgICAvKipcblx0ICAgICAqIFJl
cGxhY2VzIGFueSByZW5kZXJlZCBjaGlsZHJlbiB3aXRoIGEgdGV4dCBjb250ZW50IHN0cmluZy5c
blx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmV4dENvbnRlbnQgU3RyaW5nIG9m
IGNvbnRlbnQuXG5cdCAgICAgKiBAaW50ZXJuYWxcblx0ICAgICAqL1xuXHQgICAgdXBkYXRlVGV4
dENvbnRlbnQ6IGZ1bmN0aW9uIChuZXh0Q29udGVudCkge1xuXHQgICAgICB2YXIgcHJldkNoaWxk
cmVuID0gdGhpcy5fcmVuZGVyZWRDaGlsZHJlbjtcblx0ICAgICAgLy8gUmVtb3ZlIGFueSByZW5k
ZXJlZCBjaGlsZHJlbi5cblx0ICAgICAgUmVhY3RDaGlsZFJlY29uY2lsZXIudW5tb3VudENoaWxk
cmVuKHByZXZDaGlsZHJlbiwgZmFsc2UpO1xuXHQgICAgICBmb3IgKHZhciBuYW1lIGluIHByZXZD
aGlsZHJlbikge1xuXHQgICAgICAgIGlmIChwcmV2Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFt
ZSkpIHtcblx0ICAgICAgICAgICB0cnVlID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAndXBk
YXRlVGV4dENvbnRlbnQgY2FsbGVkIG9uIG5vbi1lbXB0eSBjb21wb25lbnQuJykgOiBfcHJvZElu
dmFyaWFudCgnMTE4JykgOiB2b2lkIDA7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAg
IC8vIFNldCBuZXcgdGV4dCBjb250ZW50LlxuXHQgICAgICB2YXIgdXBkYXRlcyA9IFttYWtlVGV4
dENvbnRlbnQobmV4dENvbnRlbnQpXTtcblx0ICAgICAgcHJvY2Vzc1F1ZXVlKHRoaXMsIHVwZGF0
ZXMpO1xuXHQgICAgfSxcblx0XG5cdCAgICAvKipcblx0ICAgICAqIFJlcGxhY2VzIGFueSByZW5k
ZXJlZCBjaGlsZHJlbiB3aXRoIGEgbWFya3VwIHN0cmluZy5cblx0ICAgICAqXG5cdCAgICAgKiBA
cGFyYW0ge3N0cmluZ30gbmV4dE1hcmt1cCBTdHJpbmcgb2YgbWFya3VwLlxuXHQgICAgICogQGlu
dGVybmFsXG5cdCAgICAgKi9cblx0ICAgIHVwZGF0ZU1hcmt1cDogZnVuY3Rpb24gKG5leHRNYXJr
dXApIHtcblx0ICAgICAgdmFyIHByZXZDaGlsZHJlbiA9IHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47
XG5cdCAgICAgIC8vIFJlbW92ZSBhbnkgcmVuZGVyZWQgY2hpbGRyZW4uXG5cdCAgICAgIFJlYWN0
Q2hpbGRSZWNvbmNpbGVyLnVubW91bnRDaGlsZHJlbihwcmV2Q2hpbGRyZW4sIGZhbHNlKTtcblx0
ICAgICAgZm9yICh2YXIgbmFtZSBpbiBwcmV2Q2hpbGRyZW4pIHtcblx0ICAgICAgICBpZiAocHJl
dkNoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG5cdCAgICAgICAgICAgdHJ1ZSA/ICBm
YWxzZSA/IGludmFyaWFudChmYWxzZSwgJ3VwZGF0ZVRleHRDb250ZW50IGNhbGxlZCBvbiBub24t
ZW1wdHkgY29tcG9uZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzExOCcpIDogdm9pZCAwO1xuXHQg
ICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgICB2YXIgdXBkYXRlcyA9IFttYWtlU2V0TWFya3Vw
KG5leHRNYXJrdXApXTtcblx0ICAgICAgcHJvY2Vzc1F1ZXVlKHRoaXMsIHVwZGF0ZXMpO1xuXHQg
ICAgfSxcblx0XG5cdCAgICAvKipcblx0ICAgICAqIFVwZGF0ZXMgdGhlIHJlbmRlcmVkIGNoaWxk
cmVuIHdpdGggbmV3IGNoaWxkcmVuLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7P29iamVj
dH0gbmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMgTmVzdGVkIGNoaWxkIGVsZW1lbnQgbWFwcy5c
blx0ICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25c
blx0ICAgICAqIEBpbnRlcm5hbFxuXHQgICAgICovXG5cdCAgICB1cGRhdGVDaGlsZHJlbjogZnVu
Y3Rpb24gKG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCB0cmFuc2FjdGlvbiwgY29udGV4dCkg
e1xuXHQgICAgICAvLyBIb29rIHVzZWQgYnkgUmVhY3QgQVJUXG5cdCAgICAgIHRoaXMuX3VwZGF0
ZUNoaWxkcmVuKG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCB0cmFuc2FjdGlvbiwgY29udGV4
dCk7XG5cdCAgICB9LFxuXHRcblx0ICAgIC8qKlxuXHQgICAgICogQHBhcmFtIHs/b2JqZWN0fSBu
ZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cyBOZXN0ZWQgY2hpbGQgZWxlbWVudCBtYXBzLlxuXHQg
ICAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuXHQg
ICAgICogQGZpbmFsXG5cdCAgICAgKiBAcHJvdGVjdGVkXG5cdCAgICAgKi9cblx0ICAgIF91cGRh
dGVDaGlsZHJlbjogZnVuY3Rpb24gKG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCB0cmFuc2Fj
dGlvbiwgY29udGV4dCkge1xuXHQgICAgICB2YXIgcHJldkNoaWxkcmVuID0gdGhpcy5fcmVuZGVy
ZWRDaGlsZHJlbjtcblx0ICAgICAgdmFyIHJlbW92ZWROb2RlcyA9IHt9O1xuXHQgICAgICB2YXIg
bW91bnRJbWFnZXMgPSBbXTtcblx0ICAgICAgdmFyIG5leHRDaGlsZHJlbiA9IHRoaXMuX3JlY29u
Y2lsZXJVcGRhdGVDaGlsZHJlbihwcmV2Q2hpbGRyZW4sIG5leHROZXN0ZWRDaGlsZHJlbkVsZW1l
bnRzLCBtb3VudEltYWdlcywgcmVtb3ZlZE5vZGVzLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG5c
dCAgICAgIGlmICghbmV4dENoaWxkcmVuICYmICFwcmV2Q2hpbGRyZW4pIHtcblx0ICAgICAgICBy
ZXR1cm47XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIHVwZGF0ZXMgPSBudWxsO1xuXHQgICAgICB2
YXIgbmFtZTtcblx0ICAgICAgLy8gYG5leHRJbmRleGAgd2lsbCBpbmNyZW1lbnQgZm9yIGVhY2gg
Y2hpbGQgaW4gYG5leHRDaGlsZHJlbmAsIGJ1dFxuXHQgICAgICAvLyBgbGFzdEluZGV4YCB3aWxs
IGJlIHRoZSBsYXN0IGluZGV4IHZpc2l0ZWQgaW4gYHByZXZDaGlsZHJlbmAuXG5cdCAgICAgIHZh
ciBuZXh0SW5kZXggPSAwO1xuXHQgICAgICB2YXIgbGFzdEluZGV4ID0gMDtcblx0ICAgICAgLy8g
YG5leHRNb3VudEluZGV4YCB3aWxsIGluY3JlbWVudCBmb3IgZWFjaCBuZXdseSBtb3VudGVkIGNo
aWxkLlxuXHQgICAgICB2YXIgbmV4dE1vdW50SW5kZXggPSAwO1xuXHQgICAgICB2YXIgbGFzdFBs
YWNlZE5vZGUgPSBudWxsO1xuXHQgICAgICBmb3IgKG5hbWUgaW4gbmV4dENoaWxkcmVuKSB7XG5c
dCAgICAgICAgaWYgKCFuZXh0Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcblx0ICAg
ICAgICAgIGNvbnRpbnVlO1xuXHQgICAgICAgIH1cblx0ICAgICAgICB2YXIgcHJldkNoaWxkID0g
cHJldkNoaWxkcmVuICYmIHByZXZDaGlsZHJlbltuYW1lXTtcblx0ICAgICAgICB2YXIgbmV4dENo
aWxkID0gbmV4dENoaWxkcmVuW25hbWVdO1xuXHQgICAgICAgIGlmIChwcmV2Q2hpbGQgPT09IG5l
eHRDaGlsZCkge1xuXHQgICAgICAgICAgdXBkYXRlcyA9IGVucXVldWUodXBkYXRlcywgdGhpcy5t
b3ZlQ2hpbGQocHJldkNoaWxkLCBsYXN0UGxhY2VkTm9kZSwgbmV4dEluZGV4LCBsYXN0SW5kZXgp
KTtcblx0ICAgICAgICAgIGxhc3RJbmRleCA9IE1hdGgubWF4KHByZXZDaGlsZC5fbW91bnRJbmRl
eCwgbGFzdEluZGV4KTtcblx0ICAgICAgICAgIHByZXZDaGlsZC5fbW91bnRJbmRleCA9IG5leHRJ
bmRleDtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgaWYgKHByZXZDaGlsZCkge1xu
XHQgICAgICAgICAgICAvLyBVcGRhdGUgYGxhc3RJbmRleGAgYmVmb3JlIGBfbW91bnRJbmRleGAg
Z2V0cyB1bnNldCBieSB1bm1vdW50aW5nLlxuXHQgICAgICAgICAgICBsYXN0SW5kZXggPSBNYXRo
Lm1heChwcmV2Q2hpbGQuX21vdW50SW5kZXgsIGxhc3RJbmRleCk7XG5cdCAgICAgICAgICAgIC8v
IFRoZSBgcmVtb3ZlZE5vZGVzYCBsb29wIGJlbG93IHdpbGwgYWN0dWFsbHkgcmVtb3ZlIHRoZSBj
aGlsZC5cblx0ICAgICAgICAgIH1cblx0ICAgICAgICAgIC8vIFRoZSBjaGlsZCBtdXN0IGJlIGlu
c3RhbnRpYXRlZCBiZWZvcmUgaXQncyBtb3VudGVkLlxuXHQgICAgICAgICAgdXBkYXRlcyA9IGVu
cXVldWUodXBkYXRlcywgdGhpcy5fbW91bnRDaGlsZEF0SW5kZXgobmV4dENoaWxkLCBtb3VudElt
YWdlc1tuZXh0TW91bnRJbmRleF0sIGxhc3RQbGFjZWROb2RlLCBuZXh0SW5kZXgsIHRyYW5zYWN0
aW9uLCBjb250ZXh0KSk7XG5cdCAgICAgICAgICBuZXh0TW91bnRJbmRleCsrO1xuXHQgICAgICAg
IH1cblx0ICAgICAgICBuZXh0SW5kZXgrKztcblx0ICAgICAgICBsYXN0UGxhY2VkTm9kZSA9IFJl
YWN0UmVjb25jaWxlci5nZXRIb3N0Tm9kZShuZXh0Q2hpbGQpO1xuXHQgICAgICB9XG5cdCAgICAg
IC8vIFJlbW92ZSBjaGlsZHJlbiB0aGF0IGFyZSBubyBsb25nZXIgcHJlc2VudC5cblx0ICAgICAg
Zm9yIChuYW1lIGluIHJlbW92ZWROb2Rlcykge1xuXHQgICAgICAgIGlmIChyZW1vdmVkTm9kZXMu
aGFzT3duUHJvcGVydHkobmFtZSkpIHtcblx0ICAgICAgICAgIHVwZGF0ZXMgPSBlbnF1ZXVlKHVw
ZGF0ZXMsIHRoaXMuX3VubW91bnRDaGlsZChwcmV2Q2hpbGRyZW5bbmFtZV0sIHJlbW92ZWROb2Rl
c1tuYW1lXSkpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgICBpZiAodXBkYXRlcykg
e1xuXHQgICAgICAgIHByb2Nlc3NRdWV1ZSh0aGlzLCB1cGRhdGVzKTtcblx0ICAgICAgfVxuXHQg
ICAgICB0aGlzLl9yZW5kZXJlZENoaWxkcmVuID0gbmV4dENoaWxkcmVuO1xuXHRcblx0ICAgICAg
aWYgKGZhbHNlKSB7XG5cdCAgICAgICAgc2V0Q2hpbGRyZW5Gb3JJbnN0cnVtZW50YXRpb24uY2Fs
bCh0aGlzLCBuZXh0Q2hpbGRyZW4pO1xuXHQgICAgICB9XG5cdCAgICB9LFxuXHRcblx0ICAgIC8q
KlxuXHQgICAgICogVW5tb3VudHMgYWxsIHJlbmRlcmVkIGNoaWxkcmVuLiBUaGlzIHNob3VsZCBi
ZSB1c2VkIHRvIGNsZWFuIHVwIGNoaWxkcmVuXG5cdCAgICAgKiB3aGVuIHRoaXMgY29tcG9uZW50
IGlzIHVubW91bnRlZC4gSXQgZG9lcyBub3QgYWN0dWFsbHkgcGVyZm9ybSBhbnlcblx0ICAgICAq
IGJhY2tlbmQgb3BlcmF0aW9ucy5cblx0ICAgICAqXG5cdCAgICAgKiBAaW50ZXJuYWxcblx0ICAg
ICAqL1xuXHQgICAgdW5tb3VudENoaWxkcmVuOiBmdW5jdGlvbiAoc2FmZWx5KSB7XG5cdCAgICAg
IHZhciByZW5kZXJlZENoaWxkcmVuID0gdGhpcy5fcmVuZGVyZWRDaGlsZHJlbjtcblx0ICAgICAg
UmVhY3RDaGlsZFJlY29uY2lsZXIudW5tb3VudENoaWxkcmVuKHJlbmRlcmVkQ2hpbGRyZW4sIHNh
ZmVseSk7XG5cdCAgICAgIHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW4gPSBudWxsO1xuXHQgICAgfSxc
blx0XG5cdCAgICAvKipcblx0ICAgICAqIE1vdmVzIGEgY2hpbGQgY29tcG9uZW50IHRvIHRoZSBz
dXBwbGllZCBpbmRleC5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50
fSBjaGlsZCBDb21wb25lbnQgdG8gbW92ZS5cblx0ICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0b0lu
ZGV4IERlc3RpbmF0aW9uIGluZGV4IG9mIHRoZSBlbGVtZW50LlxuXHQgICAgICogQHBhcmFtIHtu
dW1iZXJ9IGxhc3RJbmRleCBMYXN0IGluZGV4IHZpc2l0ZWQgb2YgdGhlIHNpYmxpbmdzIG9mIGBj
aGlsZGAuXG5cdCAgICAgKiBAcHJvdGVjdGVkXG5cdCAgICAgKi9cblx0ICAgIG1vdmVDaGlsZDog
ZnVuY3Rpb24gKGNoaWxkLCBhZnRlck5vZGUsIHRvSW5kZXgsIGxhc3RJbmRleCkge1xuXHQgICAg
ICAvLyBJZiB0aGUgaW5kZXggb2YgYGNoaWxkYCBpcyBsZXNzIHRoYW4gYGxhc3RJbmRleGAsIHRo
ZW4gaXQgbmVlZHMgdG9cblx0ICAgICAgLy8gYmUgbW92ZWQuIE90aGVyd2lzZSwgd2UgZG8gbm90
IG5lZWQgdG8gbW92ZSBpdCBiZWNhdXNlIGEgY2hpbGQgd2lsbCBiZVxuXHQgICAgICAvLyBpbnNl
cnRlZCBvciBtb3ZlZCBiZWZvcmUgYGNoaWxkYC5cblx0ICAgICAgaWYgKGNoaWxkLl9tb3VudElu
ZGV4IDwgbGFzdEluZGV4KSB7XG5cdCAgICAgICAgcmV0dXJuIG1ha2VNb3ZlKGNoaWxkLCBhZnRl
ck5vZGUsIHRvSW5kZXgpO1xuXHQgICAgICB9XG5cdCAgICB9LFxuXHRcblx0ICAgIC8qKlxuXHQg
ICAgICogQ3JlYXRlcyBhIGNoaWxkIGNvbXBvbmVudC5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFy
YW0ge1JlYWN0Q29tcG9uZW50fSBjaGlsZCBDb21wb25lbnQgdG8gY3JlYXRlLlxuXHQgICAgICog
QHBhcmFtIHtzdHJpbmd9IG1vdW50SW1hZ2UgTWFya3VwIHRvIGluc2VydC5cblx0ICAgICAqIEBw
cm90ZWN0ZWRcblx0ICAgICAqL1xuXHQgICAgY3JlYXRlQ2hpbGQ6IGZ1bmN0aW9uIChjaGlsZCwg
YWZ0ZXJOb2RlLCBtb3VudEltYWdlKSB7XG5cdCAgICAgIHJldHVybiBtYWtlSW5zZXJ0TWFya3Vw
KG1vdW50SW1hZ2UsIGFmdGVyTm9kZSwgY2hpbGQuX21vdW50SW5kZXgpO1xuXHQgICAgfSxcblx0
XG5cdCAgICAvKipcblx0ICAgICAqIFJlbW92ZXMgYSBjaGlsZCBjb21wb25lbnQuXG5cdCAgICAg
KlxuXHQgICAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY2hpbGQgQ2hpbGQgdG8gcmVtb3Zl
LlxuXHQgICAgICogQHByb3RlY3RlZFxuXHQgICAgICovXG5cdCAgICByZW1vdmVDaGlsZDogZnVu
Y3Rpb24gKGNoaWxkLCBub2RlKSB7XG5cdCAgICAgIHJldHVybiBtYWtlUmVtb3ZlKGNoaWxkLCBu
b2RlKTtcblx0ICAgIH0sXG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBNb3VudHMgYSBjaGlsZCB3
aXRoIHRoZSBzdXBwbGllZCBuYW1lLlxuXHQgICAgICpcblx0ICAgICAqIE5PVEU6IFRoaXMgaXMg
cGFydCBvZiBgdXBkYXRlQ2hpbGRyZW5gIGFuZCBpcyBoZXJlIGZvciByZWFkYWJpbGl0eS5cblx0
ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjaGlsZCBDb21wb25lbnQg
dG8gbW91bnQuXG5cdCAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBOYW1lIG9mIHRoZSBjaGls
ZC5cblx0ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBJbmRleCBhdCB3aGljaCB0byBpbnNl
cnQgdGhlIGNoaWxkLlxuXHQgICAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9u
fSB0cmFuc2FjdGlvblxuXHQgICAgICogQHByaXZhdGVcblx0ICAgICAqL1xuXHQgICAgX21vdW50
Q2hpbGRBdEluZGV4OiBmdW5jdGlvbiAoY2hpbGQsIG1vdW50SW1hZ2UsIGFmdGVyTm9kZSwgaW5k
ZXgsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG5cdCAgICAgIGNoaWxkLl9tb3VudEluZGV4ID0g
aW5kZXg7XG5cdCAgICAgIHJldHVybiB0aGlzLmNyZWF0ZUNoaWxkKGNoaWxkLCBhZnRlck5vZGUs
IG1vdW50SW1hZ2UpO1xuXHQgICAgfSxcblx0XG5cdCAgICAvKipcblx0ICAgICAqIFVubW91bnRz
IGEgcmVuZGVyZWQgY2hpbGQuXG5cdCAgICAgKlxuXHQgICAgICogTk9URTogVGhpcyBpcyBwYXJ0
IG9mIGB1cGRhdGVDaGlsZHJlbmAgYW5kIGlzIGhlcmUgZm9yIHJlYWRhYmlsaXR5LlxuXHQgICAg
ICpcblx0ICAgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNoaWxkIENvbXBvbmVudCB0byB1
bm1vdW50LlxuXHQgICAgICogQHByaXZhdGVcblx0ICAgICAqL1xuXHQgICAgX3VubW91bnRDaGls
ZDogZnVuY3Rpb24gKGNoaWxkLCBub2RlKSB7XG5cdCAgICAgIHZhciB1cGRhdGUgPSB0aGlzLnJl
bW92ZUNoaWxkKGNoaWxkLCBub2RlKTtcblx0ICAgICAgY2hpbGQuX21vdW50SW5kZXggPSBudWxs
O1xuXHQgICAgICByZXR1cm4gdXBkYXRlO1xuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5cdG1v
ZHVsZS5leHBvcnRzID0gUmVhY3RNdWx0aUNoaWxkO1xuXG4vKioqLyB9LFxuLyogMTU3ICovXG4v
KioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxu
XHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICog
QWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogXG5cdCAqL1xu
XHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNr
X3JlcXVpcmVfXygzKTtcblx0XG5cdHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDEpO1xuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7P29iamVjdH0gb2JqZWN0XG5cdCAqIEByZXR1
cm4ge2Jvb2xlYW59IFRydWUgaWYgYG9iamVjdGAgaXMgYSB2YWxpZCBvd25lci5cblx0ICogQGZp
bmFsXG5cdCAqL1xuXHRmdW5jdGlvbiBpc1ZhbGlkT3duZXIob2JqZWN0KSB7XG5cdCAgcmV0dXJu
ICEhKG9iamVjdCAmJiB0eXBlb2Ygb2JqZWN0LmF0dGFjaFJlZiA9PT0gJ2Z1bmN0aW9uJyAmJiB0
eXBlb2Ygb2JqZWN0LmRldGFjaFJlZiA9PT0gJ2Z1bmN0aW9uJyk7XG5cdH1cblx0XG5cdC8qKlxu
XHQgKiBSZWFjdE93bmVycyBhcmUgY2FwYWJsZSBvZiBzdG9yaW5nIHJlZmVyZW5jZXMgdG8gb3du
ZWQgY29tcG9uZW50cy5cblx0ICpcblx0ICogQWxsIGNvbXBvbmVudHMgYXJlIGNhcGFibGUgb2Yg
Ly9iZWluZy8vIHJlZmVyZW5jZWQgYnkgb3duZXIgY29tcG9uZW50cywgYnV0XG5cdCAqIG9ubHkg
UmVhY3RPd25lciBjb21wb25lbnRzIGFyZSBjYXBhYmxlIG9mIC8vcmVmZXJlbmNpbmcvLyBvd25l
ZCBjb21wb25lbnRzLlxuXHQgKiBUaGUgbmFtZWQgcmVmZXJlbmNlIGlzIGtub3duIGFzIGEgXCJy
ZWZcIi5cblx0ICpcblx0ICogUmVmcyBhcmUgYXZhaWxhYmxlIHdoZW4gbW91bnRlZCBhbmQgdXBk
YXRlZCBkdXJpbmcgcmVjb25jaWxpYXRpb24uXG5cdCAqXG5cdCAqICAgdmFyIE15Q29tcG9uZW50
ID0gUmVhY3QuY3JlYXRlQ2xhc3Moe1xuXHQgKiAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHtcblx0
ICogICAgICAgcmV0dXJuIChcblx0ICogICAgICAgICA8ZGl2IG9uQ2xpY2s9e3RoaXMuaGFuZGxl
Q2xpY2t9PlxuXHQgKiAgICAgICAgICAgPEN1c3RvbUNvbXBvbmVudCByZWY9XCJjdXN0b21cIiAv
PlxuXHQgKiAgICAgICAgIDwvZGl2PlxuXHQgKiAgICAgICApO1xuXHQgKiAgICAgfSxcblx0ICog
ICAgIGhhbmRsZUNsaWNrOiBmdW5jdGlvbigpIHtcblx0ICogICAgICAgdGhpcy5yZWZzLmN1c3Rv
bS5oYW5kbGVDbGljaygpO1xuXHQgKiAgICAgfSxcblx0ICogICAgIGNvbXBvbmVudERpZE1vdW50
OiBmdW5jdGlvbigpIHtcblx0ICogICAgICAgdGhpcy5yZWZzLmN1c3RvbS5pbml0aWFsaXplKCk7
XG5cdCAqICAgICB9XG5cdCAqICAgfSk7XG5cdCAqXG5cdCAqIFJlZnMgc2hvdWxkIHJhcmVseSBi
ZSB1c2VkLiBXaGVuIHJlZnMgYXJlIHVzZWQsIHRoZXkgc2hvdWxkIG9ubHkgYmUgZG9uZSB0b1xu
XHQgKiBjb250cm9sIGRhdGEgdGhhdCBpcyBub3QgaGFuZGxlZCBieSBSZWFjdCdzIGRhdGEgZmxv
dy5cblx0ICpcblx0ICogQGNsYXNzIFJlYWN0T3duZXJcblx0ICovXG5cdHZhciBSZWFjdE93bmVy
ID0ge1xuXHQgIC8qKlxuXHQgICAqIEFkZHMgYSBjb21wb25lbnQgYnkgcmVmIHRvIGFuIG93bmVy
IGNvbXBvbmVudC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNvbXBv
bmVudCBDb21wb25lbnQgdG8gcmVmZXJlbmNlLlxuXHQgICAqIEBwYXJhbSB7c3RyaW5nfSByZWYg
TmFtZSBieSB3aGljaCB0byByZWZlciB0byB0aGUgY29tcG9uZW50LlxuXHQgICAqIEBwYXJhbSB7
UmVhY3RPd25lcn0gb3duZXIgQ29tcG9uZW50IG9uIHdoaWNoIHRvIHJlY29yZCB0aGUgcmVmLlxu
XHQgICAqIEBmaW5hbFxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIGFkZENvbXBvbmVu
dEFzUmVmVG86IGZ1bmN0aW9uIChjb21wb25lbnQsIHJlZiwgb3duZXIpIHtcblx0ICAgICFpc1Zh
bGlkT3duZXIob3duZXIpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnYWRkQ29tcG9uZW50
QXNSZWZUbyguLi4pOiBPbmx5IGEgUmVhY3RPd25lciBjYW4gaGF2ZSByZWZzLiBZb3UgbWlnaHQg
YmUgYWRkaW5nIGEgcmVmIHRvIGEgY29tcG9uZW50IHRoYXQgd2FzIG5vdCBjcmVhdGVkIGluc2lk
ZSBhIGNvbXBvbmVudFxcJ3MgYHJlbmRlcmAgbWV0aG9kLCBvciB5b3UgaGF2ZSBtdWx0aXBsZSBj
b3BpZXMgb2YgUmVhY3QgbG9hZGVkIChkZXRhaWxzOiBodHRwczovL2ZiLm1lL3JlYWN0LXJlZnMt
bXVzdC1oYXZlLW93bmVyKS4nKSA6IF9wcm9kSW52YXJpYW50KCcxMTknKSA6IHZvaWQgMDtcblx0
ICAgIG93bmVyLmF0dGFjaFJlZihyZWYsIGNvbXBvbmVudCk7XG5cdCAgfSxcblx0XG5cdCAgLyoq
XG5cdCAgICogUmVtb3ZlcyBhIGNvbXBvbmVudCBieSByZWYgZnJvbSBhbiBvd25lciBjb21wb25l
bnQuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjb21wb25lbnQgQ29t
cG9uZW50IHRvIGRlcmVmZXJlbmNlLlxuXHQgICAqIEBwYXJhbSB7c3RyaW5nfSByZWYgTmFtZSBv
ZiB0aGUgcmVmIHRvIHJlbW92ZS5cblx0ICAgKiBAcGFyYW0ge1JlYWN0T3duZXJ9IG93bmVyIENv
bXBvbmVudCBvbiB3aGljaCB0aGUgcmVmIGlzIHJlY29yZGVkLlxuXHQgICAqIEBmaW5hbFxuXHQg
ICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIHJlbW92ZUNvbXBvbmVudEFzUmVmRnJvbTogZnVu
Y3Rpb24gKGNvbXBvbmVudCwgcmVmLCBvd25lcikge1xuXHQgICAgIWlzVmFsaWRPd25lcihvd25l
cikgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdyZW1vdmVDb21wb25lbnRBc1JlZkZyb20o
Li4uKTogT25seSBhIFJlYWN0T3duZXIgY2FuIGhhdmUgcmVmcy4gWW91IG1pZ2h0IGJlIHJlbW92
aW5nIGEgcmVmIHRvIGEgY29tcG9uZW50IHRoYXQgd2FzIG5vdCBjcmVhdGVkIGluc2lkZSBhIGNv
bXBvbmVudFxcJ3MgYHJlbmRlcmAgbWV0aG9kLCBvciB5b3UgaGF2ZSBtdWx0aXBsZSBjb3BpZXMg
b2YgUmVhY3QgbG9hZGVkIChkZXRhaWxzOiBodHRwczovL2ZiLm1lL3JlYWN0LXJlZnMtbXVzdC1o
YXZlLW93bmVyKS4nKSA6IF9wcm9kSW52YXJpYW50KCcxMjAnKSA6IHZvaWQgMDtcblx0ICAgIHZh
ciBvd25lclB1YmxpY0luc3RhbmNlID0gb3duZXIuZ2V0UHVibGljSW5zdGFuY2UoKTtcblx0ICAg
IC8vIENoZWNrIHRoYXQgYGNvbXBvbmVudGAncyBvd25lciBpcyBzdGlsbCBhbGl2ZSBhbmQgdGhh
dCBgY29tcG9uZW50YCBpcyBzdGlsbCB0aGUgY3VycmVudCByZWZcblx0ICAgIC8vIGJlY2F1c2Ug
d2UgZG8gbm90IHdhbnQgdG8gZGV0YWNoIHRoZSByZWYgaWYgYW5vdGhlciBjb21wb25lbnQgc3Rv
bGUgaXQuXG5cdCAgICBpZiAob3duZXJQdWJsaWNJbnN0YW5jZSAmJiBvd25lclB1YmxpY0luc3Rh
bmNlLnJlZnNbcmVmXSA9PT0gY29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCkpIHtcblx0ICAg
ICAgb3duZXIuZGV0YWNoUmVmKHJlZik7XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9k
dWxlLmV4cG9ydHMgPSBSZWFjdE93bmVyO1xuXG4vKioqLyB9LFxuLyogMTU4ICovXG4vKioqLyBm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpc
blx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cblx0ICpcblx0ICogXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0
dmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gJ1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lP
VV9XSUxMX0JFX0ZJUkVEJztcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNT
ZWNyZXQ7XG5cbi8qKiovIH0sXG4vKiAxNTkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQg
KlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBf
YXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0XG5cdHZhciBDYWxsYmFja1F1ZXVl
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1OSk7XG5cdHZhciBQb29sZWRDbGFzcyA9IF9fd2VicGFj
a19yZXF1aXJlX18oMTMpO1xuXHR2YXIgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyID0gX193ZWJw
YWNrX3JlcXVpcmVfXygyNSk7XG5cdHZhciBSZWFjdElucHV0U2VsZWN0aW9uID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg2Nik7XG5cdHZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IF9fd2VicGFja19y
ZXF1aXJlX18oOCk7XG5cdHZhciBUcmFuc2FjdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oMjcp
O1xuXHR2YXIgUmVhY3RVcGRhdGVRdWV1ZSA9IF9fd2VicGFja19yZXF1aXJlX18oNDIpO1xuXHRc
blx0LyoqXG5cdCAqIEVuc3VyZXMgdGhhdCwgd2hlbiBwb3NzaWJsZSwgdGhlIHNlbGVjdGlvbiBy
YW5nZSAoY3VycmVudGx5IHNlbGVjdGVkIHRleHRcblx0ICogaW5wdXQpIGlzIG5vdCBkaXN0dXJi
ZWQgYnkgcGVyZm9ybWluZyB0aGUgdHJhbnNhY3Rpb24uXG5cdCAqL1xuXHR2YXIgU0VMRUNUSU9O
X1JFU1RPUkFUSU9OID0ge1xuXHQgIC8qKlxuXHQgICAqIEByZXR1cm4ge1NlbGVjdGlvbn0gU2Vs
ZWN0aW9uIGluZm9ybWF0aW9uLlxuXHQgICAqL1xuXHQgIGluaXRpYWxpemU6IFJlYWN0SW5wdXRT
ZWxlY3Rpb24uZ2V0U2VsZWN0aW9uSW5mb3JtYXRpb24sXG5cdCAgLyoqXG5cdCAgICogQHBhcmFt
IHtTZWxlY3Rpb259IHNlbCBTZWxlY3Rpb24gaW5mb3JtYXRpb24gcmV0dXJuZWQgZnJvbSBgaW5p
dGlhbGl6ZWAuXG5cdCAgICovXG5cdCAgY2xvc2U6IFJlYWN0SW5wdXRTZWxlY3Rpb24ucmVzdG9y
ZVNlbGVjdGlvblxuXHR9O1xuXHRcblx0LyoqXG5cdCAqIFN1cHByZXNzZXMgZXZlbnRzIChibHVy
L2ZvY3VzKSB0aGF0IGNvdWxkIGJlIGluYWR2ZXJ0ZW50bHkgZGlzcGF0Y2hlZCBkdWUgdG9cblx0
ICogaGlnaCBsZXZlbCBET00gbWFuaXB1bGF0aW9ucyAobGlrZSB0ZW1wb3JhcmlseSByZW1vdmlu
ZyBhIHRleHQgaW5wdXQgZnJvbSB0aGVcblx0ICogRE9NKS5cblx0ICovXG5cdHZhciBFVkVOVF9T
VVBQUkVTU0lPTiA9IHtcblx0ICAvKipcblx0ICAgKiBAcmV0dXJuIHtib29sZWFufSBUaGUgZW5h
YmxlZCBzdGF0dXMgb2YgYFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlcmAgYmVmb3JlXG5cdCAgICog
dGhlIHJlY29uY2lsaWF0aW9uLlxuXHQgICAqL1xuXHQgIGluaXRpYWxpemU6IGZ1bmN0aW9uICgp
IHtcblx0ICAgIHZhciBjdXJyZW50bHlFbmFibGVkID0gUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVy
LmlzRW5hYmxlZCgpO1xuXHQgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnNldEVuYWJsZWQo
ZmFsc2UpO1xuXHQgICAgcmV0dXJuIGN1cnJlbnRseUVuYWJsZWQ7XG5cdCAgfSxcblx0XG5cdCAg
LyoqXG5cdCAgICogQHBhcmFtIHtib29sZWFufSBwcmV2aW91c2x5RW5hYmxlZCBFbmFibGVkIHN0
YXR1cyBvZlxuXHQgICAqICAgYFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlcmAgYmVmb3JlIHRoZSBy
ZWNvbmNpbGlhdGlvbiBvY2N1cnJlZC4gYGNsb3NlYFxuXHQgICAqICAgcmVzdG9yZXMgdGhlIHBy
ZXZpb3VzIHZhbHVlLlxuXHQgICAqL1xuXHQgIGNsb3NlOiBmdW5jdGlvbiAocHJldmlvdXNseUVu
YWJsZWQpIHtcblx0ICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5zZXRFbmFibGVkKHByZXZp
b3VzbHlFbmFibGVkKTtcblx0ICB9XG5cdH07XG5cdFxuXHQvKipcblx0ICogUHJvdmlkZXMgYSBx
dWV1ZSBmb3IgY29sbGVjdGluZyBgY29tcG9uZW50RGlkTW91bnRgIGFuZFxuXHQgKiBgY29tcG9u
ZW50RGlkVXBkYXRlYCBjYWxsYmFja3MgZHVyaW5nIHRoZSB0cmFuc2FjdGlvbi5cblx0ICovXG5c
dHZhciBPTl9ET01fUkVBRFlfUVVFVUVJTkcgPSB7XG5cdCAgLyoqXG5cdCAgICogSW5pdGlhbGl6
ZXMgdGhlIGludGVybmFsIGBvbkRPTVJlYWR5YCBxdWV1ZS5cblx0ICAgKi9cblx0ICBpbml0aWFs
aXplOiBmdW5jdGlvbiAoKSB7XG5cdCAgICB0aGlzLnJlYWN0TW91bnRSZWFkeS5yZXNldCgpO1xu
XHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEFmdGVyIERPTSBpcyBmbHVzaGVkLCBpbnZva2Ug
YWxsIHJlZ2lzdGVyZWQgYG9uRE9NUmVhZHlgIGNhbGxiYWNrcy5cblx0ICAgKi9cblx0ICBjbG9z
ZTogZnVuY3Rpb24gKCkge1xuXHQgICAgdGhpcy5yZWFjdE1vdW50UmVhZHkubm90aWZ5QWxsKCk7
XG5cdCAgfVxuXHR9O1xuXHRcblx0LyoqXG5cdCAqIEV4ZWN1dGVkIHdpdGhpbiB0aGUgc2NvcGUg
b2YgdGhlIGBUcmFuc2FjdGlvbmAgaW5zdGFuY2UuIENvbnNpZGVyIHRoZXNlIGFzXG5cdCAqIGJl
aW5nIG1lbWJlciBtZXRob2RzLCBidXQgd2l0aCBhbiBpbXBsaWVkIG9yZGVyaW5nIHdoaWxlIGJl
aW5nIGlzb2xhdGVkIGZyb21cblx0ICogZWFjaCBvdGhlci5cblx0ICovXG5cdHZhciBUUkFOU0FD
VElPTl9XUkFQUEVSUyA9IFtTRUxFQ1RJT05fUkVTVE9SQVRJT04sIEVWRU5UX1NVUFBSRVNTSU9O
LCBPTl9ET01fUkVBRFlfUVVFVUVJTkddO1xuXHRcblx0aWYgKGZhbHNlKSB7XG5cdCAgVFJBTlNB
Q1RJT05fV1JBUFBFUlMucHVzaCh7XG5cdCAgICBpbml0aWFsaXplOiBSZWFjdEluc3RydW1lbnRh
dGlvbi5kZWJ1Z1Rvb2wub25CZWdpbkZsdXNoLFxuXHQgICAgY2xvc2U6IFJlYWN0SW5zdHJ1bWVu
dGF0aW9uLmRlYnVnVG9vbC5vbkVuZEZsdXNoXG5cdCAgfSk7XG5cdH1cblx0XG5cdC8qKlxuXHQg
KiBDdXJyZW50bHk6XG5cdCAqIC0gVGhlIG9yZGVyIHRoYXQgdGhlc2UgYXJlIGxpc3RlZCBpbiB0
aGUgdHJhbnNhY3Rpb24gaXMgY3JpdGljYWw6XG5cdCAqIC0gU3VwcHJlc3NlcyBldmVudHMuXG5c
dCAqIC0gUmVzdG9yZXMgc2VsZWN0aW9uIHJhbmdlLlxuXHQgKlxuXHQgKiBGdXR1cmU6XG5cdCAq
IC0gUmVzdG9yZSBkb2N1bWVudC9vdmVyZmxvdyBzY3JvbGwgcG9zaXRpb25zIHRoYXQgd2VyZSB1
bmludGVudGlvbmFsbHlcblx0ICogICBtb2RpZmllZCB2aWEgRE9NIGluc2VydGlvbnMgYWJvdmUg
dGhlIHRvcCB2aWV3cG9ydCBib3VuZGFyeS5cblx0ICogLSBJbXBsZW1lbnQvaW50ZWdyYXRlIHdp
dGggY3VzdG9taXplZCBjb25zdHJhaW50IGJhc2VkIGxheW91dCBzeXN0ZW0gYW5kIGtlZXBcblx0
ICogICB0cmFjayBvZiB3aGljaCBkaW1lbnNpb25zIG11c3QgYmUgcmVtZWFzdXJlZC5cblx0ICpc
blx0ICogQGNsYXNzIFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb25cblx0ICovXG5cdGZ1bmN0aW9u
IFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24odXNlQ3JlYXRlRWxlbWVudCkge1xuXHQgIHRoaXMu
cmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKTtcblx0ICAvLyBPbmx5IHNlcnZlci1zaWRlIHJlbmRl
cmluZyByZWFsbHkgbmVlZHMgdGhpcyBvcHRpb24gKHNlZVxuXHQgIC8vIGBSZWFjdFNlcnZlclJl
bmRlcmluZ2ApLCBidXQgc2VydmVyLXNpZGUgdXNlc1xuXHQgIC8vIGBSZWFjdFNlcnZlclJlbmRl
cmluZ1RyYW5zYWN0aW9uYCBpbnN0ZWFkLiBUaGlzIG9wdGlvbiBpcyBoZXJlIHNvIHRoYXQgaXQn
c1xuXHQgIC8vIGFjY2Vzc2libGUgYW5kIGRlZmF1bHRzIHRvIGZhbHNlIHdoZW4gYFJlYWN0RE9N
Q29tcG9uZW50YCBhbmRcblx0ICAvLyBgUmVhY3RET01UZXh0Q29tcG9uZW50YCBjaGVja3MgaXQg
aW4gYG1vdW50Q29tcG9uZW50YC5gXG5cdCAgdGhpcy5yZW5kZXJUb1N0YXRpY01hcmt1cCA9IGZh
bHNlO1xuXHQgIHRoaXMucmVhY3RNb3VudFJlYWR5ID0gQ2FsbGJhY2tRdWV1ZS5nZXRQb29sZWQo
bnVsbCk7XG5cdCAgdGhpcy51c2VDcmVhdGVFbGVtZW50ID0gdXNlQ3JlYXRlRWxlbWVudDtcblx0
fVxuXHRcblx0dmFyIE1peGluID0ge1xuXHQgIC8qKlxuXHQgICAqIEBzZWUgVHJhbnNhY3Rpb25c
blx0ICAgKiBAYWJzdHJhY3Rcblx0ICAgKiBAZmluYWxcblx0ICAgKiBAcmV0dXJuIHthcnJheTxv
YmplY3Q+fSBMaXN0IG9mIG9wZXJhdGlvbiB3cmFwIHByb2NlZHVyZXMuXG5cdCAgICogICBUT0RP
OiBjb252ZXJ0IHRvIGFycmF5PFRyYW5zYWN0aW9uV3JhcHBlcj5cblx0ICAgKi9cblx0ICBnZXRU
cmFuc2FjdGlvbldyYXBwZXJzOiBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4gVFJBTlNBQ1RJ
T05fV1JBUFBFUlM7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogQHJldHVybiB7b2JqZWN0
fSBUaGUgcXVldWUgdG8gY29sbGVjdCBgb25ET01SZWFkeWAgY2FsbGJhY2tzIHdpdGguXG5cdCAg
ICovXG5cdCAgZ2V0UmVhY3RNb3VudFJlYWR5OiBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4g
dGhpcy5yZWFjdE1vdW50UmVhZHk7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogQHJldHVy
biB7b2JqZWN0fSBUaGUgcXVldWUgdG8gY29sbGVjdCBSZWFjdCBhc3luYyBldmVudHMuXG5cdCAg
ICovXG5cdCAgZ2V0VXBkYXRlUXVldWU6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHJldHVybiBSZWFj
dFVwZGF0ZVF1ZXVlO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFNhdmUgY3VycmVudCB0
cmFuc2FjdGlvbiBzdGF0ZSAtLSBpZiB0aGUgcmV0dXJuIHZhbHVlIGZyb20gdGhpcyBtZXRob2Qg
aXNcblx0ICAgKiBwYXNzZWQgdG8gYHJvbGxiYWNrYCwgdGhlIHRyYW5zYWN0aW9uIHdpbGwgYmUg
cmVzZXQgdG8gdGhhdCBzdGF0ZS5cblx0ICAgKi9cblx0ICBjaGVja3BvaW50OiBmdW5jdGlvbiAo
KSB7XG5cdCAgICAvLyByZWFjdE1vdW50UmVhZHkgaXMgdGhlIG91ciBvbmx5IHN0YXRlZnVsIHdy
YXBwZXJcblx0ICAgIHJldHVybiB0aGlzLnJlYWN0TW91bnRSZWFkeS5jaGVja3BvaW50KCk7XG5c
dCAgfSxcblx0XG5cdCAgcm9sbGJhY2s6IGZ1bmN0aW9uIChjaGVja3BvaW50KSB7XG5cdCAgICB0
aGlzLnJlYWN0TW91bnRSZWFkeS5yb2xsYmFjayhjaGVja3BvaW50KTtcblx0ICB9LFxuXHRcblx0
ICAvKipcblx0ICAgKiBgUG9vbGVkQ2xhc3NgIGxvb2tzIGZvciB0aGlzLCBhbmQgd2lsbCBpbnZv
a2UgdGhpcyBiZWZvcmUgYWxsb3dpbmcgdGhpc1xuXHQgICAqIGluc3RhbmNlIHRvIGJlIHJldXNl
ZC5cblx0ICAgKi9cblx0ICBkZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7XG5cdCAgICBDYWxsYmFj
a1F1ZXVlLnJlbGVhc2UodGhpcy5yZWFjdE1vdW50UmVhZHkpO1xuXHQgICAgdGhpcy5yZWFjdE1v
dW50UmVhZHkgPSBudWxsO1xuXHQgIH1cblx0fTtcblx0XG5cdF9hc3NpZ24oUmVhY3RSZWNvbmNp
bGVUcmFuc2FjdGlvbi5wcm90b3R5cGUsIFRyYW5zYWN0aW9uLCBNaXhpbik7XG5cdFxuXHRQb29s
ZWRDbGFzcy5hZGRQb29saW5nVG8oUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbik7XG5cdFxuXHRt
b2R1bGUuZXhwb3J0cyA9IFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb247XG5cbi8qKiovIH0sXG4v
KiAxNjAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVp
cmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
blx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQg
KiBcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgUmVhY3RPd25lciA9IF9f
d2VicGFja19yZXF1aXJlX18oMTU3KTtcblx0XG5cdHZhciBSZWFjdFJlZiA9IHt9O1xuXHRcblx0
ZnVuY3Rpb24gYXR0YWNoUmVmKHJlZiwgY29tcG9uZW50LCBvd25lcikge1xuXHQgIGlmICh0eXBl
b2YgcmVmID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICByZWYoY29tcG9uZW50LmdldFB1YmxpY0lu
c3RhbmNlKCkpO1xuXHQgIH0gZWxzZSB7XG5cdCAgICAvLyBMZWdhY3kgcmVmXG5cdCAgICBSZWFj
dE93bmVyLmFkZENvbXBvbmVudEFzUmVmVG8oY29tcG9uZW50LCByZWYsIG93bmVyKTtcblx0ICB9
XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGRldGFjaFJlZihyZWYsIGNvbXBvbmVudCwgb3duZXIpIHtc
blx0ICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgcmVmKG51bGwpO1xu
XHQgIH0gZWxzZSB7XG5cdCAgICAvLyBMZWdhY3kgcmVmXG5cdCAgICBSZWFjdE93bmVyLnJlbW92
ZUNvbXBvbmVudEFzUmVmRnJvbShjb21wb25lbnQsIHJlZiwgb3duZXIpO1xuXHQgIH1cblx0fVxu
XHRcblx0UmVhY3RSZWYuYXR0YWNoUmVmcyA9IGZ1bmN0aW9uIChpbnN0YW5jZSwgZWxlbWVudCkg
e1xuXHQgIGlmIChlbGVtZW50ID09PSBudWxsIHx8IHR5cGVvZiBlbGVtZW50ICE9PSAnb2JqZWN0
Jykge1xuXHQgICAgcmV0dXJuO1xuXHQgIH1cblx0ICB2YXIgcmVmID0gZWxlbWVudC5yZWY7XG5c
dCAgaWYgKHJlZiAhPSBudWxsKSB7XG5cdCAgICBhdHRhY2hSZWYocmVmLCBpbnN0YW5jZSwgZWxl
bWVudC5fb3duZXIpO1xuXHQgIH1cblx0fTtcblx0XG5cdFJlYWN0UmVmLnNob3VsZFVwZGF0ZVJl
ZnMgPSBmdW5jdGlvbiAocHJldkVsZW1lbnQsIG5leHRFbGVtZW50KSB7XG5cdCAgLy8gSWYgZWl0
aGVyIHRoZSBvd25lciBvciBhIGByZWZgIGhhcyBjaGFuZ2VkLCBtYWtlIHN1cmUgdGhlIG5ld2Vz
dCBvd25lclxuXHQgIC8vIGhhcyBzdG9yZWQgYSByZWZlcmVuY2UgdG8gYHRoaXNgLCBhbmQgdGhl
IHByZXZpb3VzIG93bmVyIChpZiBkaWZmZXJlbnQpXG5cdCAgLy8gaGFzIGZvcmdvdHRlbiB0aGUg
cmVmZXJlbmNlIHRvIGB0aGlzYC4gV2UgdXNlIHRoZSBlbGVtZW50IGluc3RlYWRcblx0ICAvLyBv
ZiB0aGUgcHVibGljIHRoaXMucHJvcHMgYmVjYXVzZSB0aGUgcG9zdCBwcm9jZXNzaW5nIGNhbm5v
dCBkZXRlcm1pbmVcblx0ICAvLyBhIHJlZi4gVGhlIHJlZiBjb25jZXB0dWFsbHkgbGl2ZXMgb24g
dGhlIGVsZW1lbnQuXG5cdFxuXHQgIC8vIFRPRE86IFNob3VsZCB0aGlzIGV2ZW4gYmUgcG9zc2li
bGU/IFRoZSBvd25lciBjYW5ub3QgY2hhbmdlIGJlY2F1c2Vcblx0ICAvLyBpdCdzIGZvcmJpZGRl
biBieSBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudC4gVGhlIHJlZiBjYW4gY2hhbmdlXG5cdCAg
Ly8gaWYgeW91IHN3YXAgdGhlIGtleXMgb2YgYnV0IG5vdCB0aGUgcmVmcy4gUmVjb25zaWRlciB3
aGVyZSB0aGlzIGNoZWNrXG5cdCAgLy8gaXMgbWFkZS4gSXQgcHJvYmFibHkgYmVsb25ncyB3aGVy
ZSB0aGUga2V5IGNoZWNraW5nIGFuZFxuXHQgIC8vIGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQg
aXMgZG9uZS5cblx0XG5cdCAgdmFyIHByZXZSZWYgPSBudWxsO1xuXHQgIHZhciBwcmV2T3duZXIg
PSBudWxsO1xuXHQgIGlmIChwcmV2RWxlbWVudCAhPT0gbnVsbCAmJiB0eXBlb2YgcHJldkVsZW1l
bnQgPT09ICdvYmplY3QnKSB7XG5cdCAgICBwcmV2UmVmID0gcHJldkVsZW1lbnQucmVmO1xuXHQg
ICAgcHJldk93bmVyID0gcHJldkVsZW1lbnQuX293bmVyO1xuXHQgIH1cblx0XG5cdCAgdmFyIG5l
eHRSZWYgPSBudWxsO1xuXHQgIHZhciBuZXh0T3duZXIgPSBudWxsO1xuXHQgIGlmIChuZXh0RWxl
bWVudCAhPT0gbnVsbCAmJiB0eXBlb2YgbmV4dEVsZW1lbnQgPT09ICdvYmplY3QnKSB7XG5cdCAg
ICBuZXh0UmVmID0gbmV4dEVsZW1lbnQucmVmO1xuXHQgICAgbmV4dE93bmVyID0gbmV4dEVsZW1l
bnQuX293bmVyO1xuXHQgIH1cblx0XG5cdCAgcmV0dXJuIHByZXZSZWYgIT09IG5leHRSZWYgfHxc
blx0ICAvLyBJZiBvd25lciBjaGFuZ2VzIGJ1dCB3ZSBoYXZlIGFuIHVuY2hhbmdlZCBmdW5jdGlv
biByZWYsIGRvbid0IHVwZGF0ZSByZWZzXG5cdCAgdHlwZW9mIG5leHRSZWYgPT09ICdzdHJpbmcn
ICYmIG5leHRPd25lciAhPT0gcHJldk93bmVyO1xuXHR9O1xuXHRcblx0UmVhY3RSZWYuZGV0YWNo
UmVmcyA9IGZ1bmN0aW9uIChpbnN0YW5jZSwgZWxlbWVudCkge1xuXHQgIGlmIChlbGVtZW50ID09
PSBudWxsIHx8IHR5cGVvZiBlbGVtZW50ICE9PSAnb2JqZWN0Jykge1xuXHQgICAgcmV0dXJuO1xu
XHQgIH1cblx0ICB2YXIgcmVmID0gZWxlbWVudC5yZWY7XG5cdCAgaWYgKHJlZiAhPSBudWxsKSB7
XG5cdCAgICBkZXRhY2hSZWYocmVmLCBpbnN0YW5jZSwgZWxlbWVudC5fb3duZXIpO1xuXHQgIH1c
blx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RSZWY7XG5cbi8qKiovIH0sXG4vKiAx
NjEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
Xykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9c
blx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfYXNzaWduID0gX193ZWJwYWNrX3JlcXVp
cmVfXyg0KTtcblx0XG5cdHZhciBQb29sZWRDbGFzcyA9IF9fd2VicGFja19yZXF1aXJlX18oMTMp
O1xuXHR2YXIgVHJhbnNhY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KTtcblx0dmFyIFJl
YWN0SW5zdHJ1bWVudGF0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtcblx0dmFyIFJlYWN0
U2VydmVyVXBkYXRlUXVldWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2Mik7XG5cdFxuXHQvKipc
blx0ICogRXhlY3V0ZWQgd2l0aGluIHRoZSBzY29wZSBvZiB0aGUgYFRyYW5zYWN0aW9uYCBpbnN0
YW5jZS4gQ29uc2lkZXIgdGhlc2UgYXNcblx0ICogYmVpbmcgbWVtYmVyIG1ldGhvZHMsIGJ1dCB3
aXRoIGFuIGltcGxpZWQgb3JkZXJpbmcgd2hpbGUgYmVpbmcgaXNvbGF0ZWQgZnJvbVxuXHQgKiBl
YWNoIG90aGVyLlxuXHQgKi9cblx0dmFyIFRSQU5TQUNUSU9OX1dSQVBQRVJTID0gW107XG5cdFxu
XHRpZiAoZmFsc2UpIHtcblx0ICBUUkFOU0FDVElPTl9XUkFQUEVSUy5wdXNoKHtcblx0ICAgIGlu
aXRpYWxpemU6IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZ2luRmx1c2gsXG5c
dCAgICBjbG9zZTogUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uRW5kRmx1c2hcblx0
ICB9KTtcblx0fVxuXHRcblx0dmFyIG5vb3BDYWxsYmFja1F1ZXVlID0ge1xuXHQgIGVucXVldWU6
IGZ1bmN0aW9uICgpIHt9XG5cdH07XG5cdFxuXHQvKipcblx0ICogQGNsYXNzIFJlYWN0U2VydmVy
UmVuZGVyaW5nVHJhbnNhY3Rpb25cblx0ICogQHBhcmFtIHtib29sZWFufSByZW5kZXJUb1N0YXRp
Y01hcmt1cFxuXHQgKi9cblx0ZnVuY3Rpb24gUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlv
bihyZW5kZXJUb1N0YXRpY01hcmt1cCkge1xuXHQgIHRoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rp
b24oKTtcblx0ICB0aGlzLnJlbmRlclRvU3RhdGljTWFya3VwID0gcmVuZGVyVG9TdGF0aWNNYXJr
dXA7XG5cdCAgdGhpcy51c2VDcmVhdGVFbGVtZW50ID0gZmFsc2U7XG5cdCAgdGhpcy51cGRhdGVR
dWV1ZSA9IG5ldyBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlKHRoaXMpO1xuXHR9XG5cdFxuXHR2YXIg
TWl4aW4gPSB7XG5cdCAgLyoqXG5cdCAgICogQHNlZSBUcmFuc2FjdGlvblxuXHQgICAqIEBhYnN0
cmFjdFxuXHQgICAqIEBmaW5hbFxuXHQgICAqIEByZXR1cm4ge2FycmF5fSBFbXB0eSBsaXN0IG9m
IG9wZXJhdGlvbiB3cmFwIHByb2NlZHVyZXMuXG5cdCAgICovXG5cdCAgZ2V0VHJhbnNhY3Rpb25X
cmFwcGVyczogZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0dXJuIFRSQU5TQUNUSU9OX1dSQVBQRVJT
O1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEByZXR1cm4ge29iamVjdH0gVGhlIHF1ZXVl
IHRvIGNvbGxlY3QgYG9uRE9NUmVhZHlgIGNhbGxiYWNrcyB3aXRoLlxuXHQgICAqL1xuXHQgIGdl
dFJlYWN0TW91bnRSZWFkeTogZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0dXJuIG5vb3BDYWxsYmFj
a1F1ZXVlO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEByZXR1cm4ge29iamVjdH0gVGhl
IHF1ZXVlIHRvIGNvbGxlY3QgUmVhY3QgYXN5bmMgZXZlbnRzLlxuXHQgICAqL1xuXHQgIGdldFVw
ZGF0ZVF1ZXVlOiBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4gdGhpcy51cGRhdGVRdWV1ZTtc
blx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBgUG9vbGVkQ2xhc3NgIGxvb2tzIGZvciB0aGlz
LCBhbmQgd2lsbCBpbnZva2UgdGhpcyBiZWZvcmUgYWxsb3dpbmcgdGhpc1xuXHQgICAqIGluc3Rh
bmNlIHRvIGJlIHJldXNlZC5cblx0ICAgKi9cblx0ICBkZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7
fSxcblx0XG5cdCAgY2hlY2twb2ludDogZnVuY3Rpb24gKCkge30sXG5cdFxuXHQgIHJvbGxiYWNr
OiBmdW5jdGlvbiAoKSB7fVxuXHR9O1xuXHRcblx0X2Fzc2lnbihSZWFjdFNlcnZlclJlbmRlcmlu
Z1RyYW5zYWN0aW9uLnByb3RvdHlwZSwgVHJhbnNhY3Rpb24sIE1peGluKTtcblx0XG5cdFBvb2xl
ZENsYXNzLmFkZFBvb2xpbmdUbyhSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uKTtcblx0
XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbjtcblxu
LyoqKi8gfSxcbi8qIDE2MiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dl
YnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDE1LXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG5cdCAqXG5cdCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdGZ1bmN0aW9u
IF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2Ug
aW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBj
YWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cdFxuXHR2YXIgUmVhY3RVcGRhdGVR
dWV1ZSA9IF9fd2VicGFja19yZXF1aXJlX18oNDIpO1xuXHRcblx0dmFyIHdhcm5pbmcgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDIpO1xuXHRcblx0ZnVuY3Rpb24gd2Fybk5vb3AocHVibGljSW5zdGFu
Y2UsIGNhbGxlck5hbWUpIHtcblx0ICBpZiAoZmFsc2UpIHtcblx0ICAgIHZhciBjb25zdHJ1Y3Rv
ciA9IHB1YmxpY0luc3RhbmNlLmNvbnN0cnVjdG9yO1xuXHQgICAgcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyguLi4pOiBDYW4gb25seSB1
cGRhdGUgYSBtb3VudGluZyBjb21wb25lbnQuICcgKyAnVGhpcyB1c3VhbGx5IG1lYW5zIHlvdSBj
YWxsZWQgJXMoKSBvdXRzaWRlIGNvbXBvbmVudFdpbGxNb3VudCgpIG9uIHRoZSBzZXJ2ZXIuICcg
KyAnVGhpcyBpcyBhIG5vLW9wLiBQbGVhc2UgY2hlY2sgdGhlIGNvZGUgZm9yIHRoZSAlcyBjb21w
b25lbnQuJywgY2FsbGVyTmFtZSwgY2FsbGVyTmFtZSwgY29uc3RydWN0b3IgJiYgKGNvbnN0cnVj
dG9yLmRpc3BsYXlOYW1lIHx8IGNvbnN0cnVjdG9yLm5hbWUpIHx8ICdSZWFjdENsYXNzJykgOiB2
b2lkIDA7XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICogVGhpcyBpcyB0aGUgdXBkYXRlIHF1
ZXVlIHVzZWQgZm9yIHNlcnZlciByZW5kZXJpbmcuXG5cdCAqIEl0IGRlbGVnYXRlcyB0byBSZWFj
dFVwZGF0ZVF1ZXVlIHdoaWxlIHNlcnZlciByZW5kZXJpbmcgaXMgaW4gcHJvZ3Jlc3MgYW5kXG5c
dCAqIHN3aXRjaGVzIHRvIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlIGFmdGVyIHRoZSB0cmFuc2FjdGlv
biBoYXMgY29tcGxldGVkLlxuXHQgKiBAY2xhc3MgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZVxuXHQg
KiBAcGFyYW0ge1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuXHQgKi9cblx0XG5cdHZhciBSZWFj
dFNlcnZlclVwZGF0ZVF1ZXVlID0gZnVuY3Rpb24gKCkge1xuXHQgIGZ1bmN0aW9uIFJlYWN0U2Vy
dmVyVXBkYXRlUXVldWUodHJhbnNhY3Rpb24pIHtcblx0ICAgIF9jbGFzc0NhbGxDaGVjayh0aGlz
LCBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlKTtcblx0XG5cdCAgICB0aGlzLnRyYW5zYWN0aW9uID0g
dHJhbnNhY3Rpb247XG5cdCAgfVxuXHRcblx0ICAvKipcblx0ICAgKiBDaGVja3Mgd2hldGhlciBv
ciBub3QgdGhpcyBjb21wb3NpdGUgY29tcG9uZW50IGlzIG1vdW50ZWQuXG5cdCAgICogQHBhcmFt
IHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2Ugd2Ugd2FudCB0byB0ZXN0
LlxuXHQgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgbW91bnRlZCwgZmFsc2Ugb3RoZXJ3
aXNlLlxuXHQgICAqIEBwcm90ZWN0ZWRcblx0ICAgKiBAZmluYWxcblx0ICAgKi9cblx0XG5cdFxu
XHQgIFJlYWN0U2VydmVyVXBkYXRlUXVldWUucHJvdG90eXBlLmlzTW91bnRlZCA9IGZ1bmN0aW9u
IGlzTW91bnRlZChwdWJsaWNJbnN0YW5jZSkge1xuXHQgICAgcmV0dXJuIGZhbHNlO1xuXHQgIH07
XG5cdFxuXHQgIC8qKlxuXHQgICAqIEVucXVldWUgYSBjYWxsYmFjayB0aGF0IHdpbGwgYmUgZXhl
Y3V0ZWQgYWZ0ZXIgYWxsIHRoZSBwZW5kaW5nIHVwZGF0ZXNcblx0ICAgKiBoYXZlIHByb2Nlc3Nl
ZC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhl
IGluc3RhbmNlIHRvIHVzZSBhcyBgdGhpc2AgY29udGV4dC5cblx0ICAgKiBAcGFyYW0gez9mdW5j
dGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHN0YXRlIGlzIHVwZGF0ZWQuXG5cdCAgICogQGlu
dGVybmFsXG5cdCAgICovXG5cdFxuXHRcblx0ICBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlLnByb3Rv
dHlwZS5lbnF1ZXVlQ2FsbGJhY2sgPSBmdW5jdGlvbiBlbnF1ZXVlQ2FsbGJhY2socHVibGljSW5z
dGFuY2UsIGNhbGxiYWNrLCBjYWxsZXJOYW1lKSB7XG5cdCAgICBpZiAodGhpcy50cmFuc2FjdGlv
bi5pc0luVHJhbnNhY3Rpb24oKSkge1xuXHQgICAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVD
YWxsYmFjayhwdWJsaWNJbnN0YW5jZSwgY2FsbGJhY2ssIGNhbGxlck5hbWUpO1xuXHQgICAgfVxu
XHQgIH07XG5cdFxuXHQgIC8qKlxuXHQgICAqIEZvcmNlcyBhbiB1cGRhdGUuIFRoaXMgc2hvdWxk
IG9ubHkgYmUgaW52b2tlZCB3aGVuIGl0IGlzIGtub3duIHdpdGhcblx0ICAgKiBjZXJ0YWludHkg
dGhhdCB3ZSBhcmUgKipub3QqKiBpbiBhIERPTSB0cmFuc2FjdGlvbi5cblx0ICAgKlxuXHQgICAq
IFlvdSBtYXkgd2FudCB0byBjYWxsIHRoaXMgd2hlbiB5b3Uga25vdyB0aGF0IHNvbWUgZGVlcGVy
IGFzcGVjdCBvZiB0aGVcblx0ICAgKiBjb21wb25lbnQncyBzdGF0ZSBoYXMgY2hhbmdlZCBidXQg
YHNldFN0YXRlYCB3YXMgbm90IGNhbGxlZC5cblx0ICAgKlxuXHQgICAqIFRoaXMgd2lsbCBub3Qg
aW52b2tlIGBzaG91bGRDb21wb25lbnRVcGRhdGVgLCBidXQgaXQgd2lsbCBpbnZva2Vcblx0ICAg
KiBgY29tcG9uZW50V2lsbFVwZGF0ZWAgYW5kIGBjb21wb25lbnREaWRVcGRhdGVgLlxuXHQgICAq
XG5cdCAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2Ug
dGhhdCBzaG91bGQgcmVyZW5kZXIuXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5cdFxuXHRc
blx0ICBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlLnByb3RvdHlwZS5lbnF1ZXVlRm9yY2VVcGRhdGUg
PSBmdW5jdGlvbiBlbnF1ZXVlRm9yY2VVcGRhdGUocHVibGljSW5zdGFuY2UpIHtcblx0ICAgIGlm
ICh0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpKSB7XG5cdCAgICAgIFJlYWN0VXBk
YXRlUXVldWUuZW5xdWV1ZUZvcmNlVXBkYXRlKHB1YmxpY0luc3RhbmNlKTtcblx0ICAgIH0gZWxz
ZSB7XG5cdCAgICAgIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCAnZm9yY2VVcGRhdGUnKTtcblx0
ICAgIH1cblx0ICB9O1xuXHRcblx0ICAvKipcblx0ICAgKiBSZXBsYWNlcyBhbGwgb2YgdGhlIHN0
YXRlLiBBbHdheXMgdXNlIHRoaXMgb3IgYHNldFN0YXRlYCB0byBtdXRhdGUgc3RhdGUuXG5cdCAg
ICogWW91IHNob3VsZCB0cmVhdCBgdGhpcy5zdGF0ZWAgYXMgaW1tdXRhYmxlLlxuXHQgICAqXG5c
dCAgICogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgYHRoaXMuc3RhdGVgIHdpbGwgYmUgaW1t
ZWRpYXRlbHkgdXBkYXRlZCwgc29cblx0ICAgKiBhY2Nlc3NpbmcgYHRoaXMuc3RhdGVgIGFmdGVy
IGNhbGxpbmcgdGhpcyBtZXRob2QgbWF5IHJldHVybiB0aGUgb2xkIHZhbHVlLlxuXHQgICAqXG5c
dCAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhh
dCBzaG91bGQgcmVyZW5kZXIuXG5cdCAgICogQHBhcmFtIHtvYmplY3R8ZnVuY3Rpb259IGNvbXBs
ZXRlU3RhdGUgTmV4dCBzdGF0ZS5cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0XG5cdFxu
XHQgIFJlYWN0U2VydmVyVXBkYXRlUXVldWUucHJvdG90eXBlLmVucXVldWVSZXBsYWNlU3RhdGUg
PSBmdW5jdGlvbiBlbnF1ZXVlUmVwbGFjZVN0YXRlKHB1YmxpY0luc3RhbmNlLCBjb21wbGV0ZVN0
YXRlKSB7XG5cdCAgICBpZiAodGhpcy50cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24oKSkge1xu
XHQgICAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVSZXBsYWNlU3RhdGUocHVibGljSW5zdGFu
Y2UsIGNvbXBsZXRlU3RhdGUpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgd2Fybk5vb3AocHVi
bGljSW5zdGFuY2UsICdyZXBsYWNlU3RhdGUnKTtcblx0ICAgIH1cblx0ICB9O1xuXHRcblx0ICAv
Kipcblx0ICAgKiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBzdGF0ZS4gVGhpcyBvbmx5IGV4aXN0cyBi
ZWNhdXNlIF9wZW5kaW5nU3RhdGUgaXNcblx0ICAgKiBpbnRlcm5hbC4gVGhpcyBwcm92aWRlcyBh
IG1lcmdpbmcgc3RyYXRlZ3kgdGhhdCBpcyBub3QgYXZhaWxhYmxlIHRvIGRlZXBcblx0ICAgKiBw
cm9wZXJ0aWVzIHdoaWNoIGlzIGNvbmZ1c2luZy4gVE9ETzogRXhwb3NlIHBlbmRpbmdTdGF0ZSBv
ciBkb24ndCB1c2UgaXRcblx0ICAgKiBkdXJpbmcgdGhlIG1lcmdlLlxuXHQgICAqXG5cdCAgICog
QHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91
bGQgcmVyZW5kZXIuXG5cdCAgICogQHBhcmFtIHtvYmplY3R8ZnVuY3Rpb259IHBhcnRpYWxTdGF0
ZSBOZXh0IHBhcnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggc3RhdGUuXG5cdCAgICogQGlu
dGVybmFsXG5cdCAgICovXG5cdFxuXHRcblx0ICBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlLnByb3Rv
dHlwZS5lbnF1ZXVlU2V0U3RhdGUgPSBmdW5jdGlvbiBlbnF1ZXVlU2V0U3RhdGUocHVibGljSW5z
dGFuY2UsIHBhcnRpYWxTdGF0ZSkge1xuXHQgICAgaWYgKHRoaXMudHJhbnNhY3Rpb24uaXNJblRy
YW5zYWN0aW9uKCkpIHtcblx0ICAgICAgUmVhY3RVcGRhdGVRdWV1ZS5lbnF1ZXVlU2V0U3RhdGUo
cHVibGljSW5zdGFuY2UsIHBhcnRpYWxTdGF0ZSk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB3
YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ3NldFN0YXRlJyk7XG5cdCAgICB9XG5cdCAgfTtcblx0
XG5cdCAgcmV0dXJuIFJlYWN0U2VydmVyVXBkYXRlUXVldWU7XG5cdH0oKTtcblx0XG5cdG1vZHVs
ZS5leHBvcnRzID0gUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZTtcblxuLyoqKi8gfSxcbi8qIDE2MyAq
L1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRc
blx0bW9kdWxlLmV4cG9ydHMgPSAnMTUuNi4xJztcblxuLyoqKi8gfSxcbi8qIDE2NCAqL1xuLyoq
Ki8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5c
dCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFy
IE5TID0ge1xuXHQgIHhsaW5rOiAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluaycsXG5cdCAg
eG1sOiAnaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlJ1xuXHR9O1xuXHRcblx0
Ly8gV2UgdXNlIGF0dHJpYnV0ZXMgZm9yIGV2ZXJ5dGhpbmcgU1ZHIHNvIGxldCdzIGF2b2lkIHNv
bWUgZHVwbGljYXRpb24gYW5kIHJ1blxuXHQvLyBjb2RlIGluc3RlYWQuXG5cdC8vIFRoZSBmb2xs
b3dpbmcgYXJlIGFsbCBzcGVjaWZpZWQgaW4gdGhlIEhUTUwgY29uZmlnIGFscmVhZHkgc28gd2Ug
ZXhjbHVkZSBoZXJlLlxuXHQvLyAtIGNsYXNzIChhcyBjbGFzc05hbWUpXG5cdC8vIC0gY29sb3Jc
blx0Ly8gLSBoZWlnaHRcblx0Ly8gLSBpZFxuXHQvLyAtIGxhbmdcblx0Ly8gLSBtYXhcblx0Ly8g
LSBtZWRpYVxuXHQvLyAtIG1ldGhvZFxuXHQvLyAtIG1pblxuXHQvLyAtIG5hbWVcblx0Ly8gLSBz
dHlsZVxuXHQvLyAtIHRhcmdldFxuXHQvLyAtIHR5cGVcblx0Ly8gLSB3aWR0aFxuXHR2YXIgQVRU
UlMgPSB7XG5cdCAgYWNjZW50SGVpZ2h0OiAnYWNjZW50LWhlaWdodCcsXG5cdCAgYWNjdW11bGF0
ZTogMCxcblx0ICBhZGRpdGl2ZTogMCxcblx0ICBhbGlnbm1lbnRCYXNlbGluZTogJ2FsaWdubWVu
dC1iYXNlbGluZScsXG5cdCAgYWxsb3dSZW9yZGVyOiAnYWxsb3dSZW9yZGVyJyxcblx0ICBhbHBo
YWJldGljOiAwLFxuXHQgIGFtcGxpdHVkZTogMCxcblx0ICBhcmFiaWNGb3JtOiAnYXJhYmljLWZv
cm0nLFxuXHQgIGFzY2VudDogMCxcblx0ICBhdHRyaWJ1dGVOYW1lOiAnYXR0cmlidXRlTmFtZScs
XG5cdCAgYXR0cmlidXRlVHlwZTogJ2F0dHJpYnV0ZVR5cGUnLFxuXHQgIGF1dG9SZXZlcnNlOiAn
YXV0b1JldmVyc2UnLFxuXHQgIGF6aW11dGg6IDAsXG5cdCAgYmFzZUZyZXF1ZW5jeTogJ2Jhc2VG
cmVxdWVuY3knLFxuXHQgIGJhc2VQcm9maWxlOiAnYmFzZVByb2ZpbGUnLFxuXHQgIGJhc2VsaW5l
U2hpZnQ6ICdiYXNlbGluZS1zaGlmdCcsXG5cdCAgYmJveDogMCxcblx0ICBiZWdpbjogMCxcblx0
ICBiaWFzOiAwLFxuXHQgIGJ5OiAwLFxuXHQgIGNhbGNNb2RlOiAnY2FsY01vZGUnLFxuXHQgIGNh
cEhlaWdodDogJ2NhcC1oZWlnaHQnLFxuXHQgIGNsaXA6IDAsXG5cdCAgY2xpcFBhdGg6ICdjbGlw
LXBhdGgnLFxuXHQgIGNsaXBSdWxlOiAnY2xpcC1ydWxlJyxcblx0ICBjbGlwUGF0aFVuaXRzOiAn
Y2xpcFBhdGhVbml0cycsXG5cdCAgY29sb3JJbnRlcnBvbGF0aW9uOiAnY29sb3ItaW50ZXJwb2xh
dGlvbicsXG5cdCAgY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczogJ2NvbG9yLWludGVycG9sYXRp
b24tZmlsdGVycycsXG5cdCAgY29sb3JQcm9maWxlOiAnY29sb3ItcHJvZmlsZScsXG5cdCAgY29s
b3JSZW5kZXJpbmc6ICdjb2xvci1yZW5kZXJpbmcnLFxuXHQgIGNvbnRlbnRTY3JpcHRUeXBlOiAn
Y29udGVudFNjcmlwdFR5cGUnLFxuXHQgIGNvbnRlbnRTdHlsZVR5cGU6ICdjb250ZW50U3R5bGVU
eXBlJyxcblx0ICBjdXJzb3I6IDAsXG5cdCAgY3g6IDAsXG5cdCAgY3k6IDAsXG5cdCAgZDogMCxc
blx0ICBkZWNlbGVyYXRlOiAwLFxuXHQgIGRlc2NlbnQ6IDAsXG5cdCAgZGlmZnVzZUNvbnN0YW50
OiAnZGlmZnVzZUNvbnN0YW50Jyxcblx0ICBkaXJlY3Rpb246IDAsXG5cdCAgZGlzcGxheTogMCxc
blx0ICBkaXZpc29yOiAwLFxuXHQgIGRvbWluYW50QmFzZWxpbmU6ICdkb21pbmFudC1iYXNlbGlu
ZScsXG5cdCAgZHVyOiAwLFxuXHQgIGR4OiAwLFxuXHQgIGR5OiAwLFxuXHQgIGVkZ2VNb2RlOiAn
ZWRnZU1vZGUnLFxuXHQgIGVsZXZhdGlvbjogMCxcblx0ICBlbmFibGVCYWNrZ3JvdW5kOiAnZW5h
YmxlLWJhY2tncm91bmQnLFxuXHQgIGVuZDogMCxcblx0ICBleHBvbmVudDogMCxcblx0ICBleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkOiAnZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCcsXG5cdCAg
ZmlsbDogMCxcblx0ICBmaWxsT3BhY2l0eTogJ2ZpbGwtb3BhY2l0eScsXG5cdCAgZmlsbFJ1bGU6
ICdmaWxsLXJ1bGUnLFxuXHQgIGZpbHRlcjogMCxcblx0ICBmaWx0ZXJSZXM6ICdmaWx0ZXJSZXMn
LFxuXHQgIGZpbHRlclVuaXRzOiAnZmlsdGVyVW5pdHMnLFxuXHQgIGZsb29kQ29sb3I6ICdmbG9v
ZC1jb2xvcicsXG5cdCAgZmxvb2RPcGFjaXR5OiAnZmxvb2Qtb3BhY2l0eScsXG5cdCAgZm9jdXNh
YmxlOiAwLFxuXHQgIGZvbnRGYW1pbHk6ICdmb250LWZhbWlseScsXG5cdCAgZm9udFNpemU6ICdm
b250LXNpemUnLFxuXHQgIGZvbnRTaXplQWRqdXN0OiAnZm9udC1zaXplLWFkanVzdCcsXG5cdCAg
Zm9udFN0cmV0Y2g6ICdmb250LXN0cmV0Y2gnLFxuXHQgIGZvbnRTdHlsZTogJ2ZvbnQtc3R5bGUn
LFxuXHQgIGZvbnRWYXJpYW50OiAnZm9udC12YXJpYW50Jyxcblx0ICBmb250V2VpZ2h0OiAnZm9u
dC13ZWlnaHQnLFxuXHQgIGZvcm1hdDogMCxcblx0ICBmcm9tOiAwLFxuXHQgIGZ4OiAwLFxuXHQg
IGZ5OiAwLFxuXHQgIGcxOiAwLFxuXHQgIGcyOiAwLFxuXHQgIGdseXBoTmFtZTogJ2dseXBoLW5h
bWUnLFxuXHQgIGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsOiAnZ2x5cGgtb3JpZW50YXRpb24t
aG9yaXpvbnRhbCcsXG5cdCAgZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsOiAnZ2x5cGgtb3JpZW50
YXRpb24tdmVydGljYWwnLFxuXHQgIGdseXBoUmVmOiAnZ2x5cGhSZWYnLFxuXHQgIGdyYWRpZW50
VHJhbnNmb3JtOiAnZ3JhZGllbnRUcmFuc2Zvcm0nLFxuXHQgIGdyYWRpZW50VW5pdHM6ICdncmFk
aWVudFVuaXRzJyxcblx0ICBoYW5naW5nOiAwLFxuXHQgIGhvcml6QWR2WDogJ2hvcml6LWFkdi14
Jyxcblx0ICBob3Jpek9yaWdpblg6ICdob3Jpei1vcmlnaW4teCcsXG5cdCAgaWRlb2dyYXBoaWM6
IDAsXG5cdCAgaW1hZ2VSZW5kZXJpbmc6ICdpbWFnZS1yZW5kZXJpbmcnLFxuXHQgICdpbic6IDAs
XG5cdCAgaW4yOiAwLFxuXHQgIGludGVyY2VwdDogMCxcblx0ICBrOiAwLFxuXHQgIGsxOiAwLFxu
XHQgIGsyOiAwLFxuXHQgIGszOiAwLFxuXHQgIGs0OiAwLFxuXHQgIGtlcm5lbE1hdHJpeDogJ2tl
cm5lbE1hdHJpeCcsXG5cdCAga2VybmVsVW5pdExlbmd0aDogJ2tlcm5lbFVuaXRMZW5ndGgnLFxu
XHQgIGtlcm5pbmc6IDAsXG5cdCAga2V5UG9pbnRzOiAna2V5UG9pbnRzJyxcblx0ICBrZXlTcGxp
bmVzOiAna2V5U3BsaW5lcycsXG5cdCAga2V5VGltZXM6ICdrZXlUaW1lcycsXG5cdCAgbGVuZ3Ro
QWRqdXN0OiAnbGVuZ3RoQWRqdXN0Jyxcblx0ICBsZXR0ZXJTcGFjaW5nOiAnbGV0dGVyLXNwYWNp
bmcnLFxuXHQgIGxpZ2h0aW5nQ29sb3I6ICdsaWdodGluZy1jb2xvcicsXG5cdCAgbGltaXRpbmdD
b25lQW5nbGU6ICdsaW1pdGluZ0NvbmVBbmdsZScsXG5cdCAgbG9jYWw6IDAsXG5cdCAgbWFya2Vy
RW5kOiAnbWFya2VyLWVuZCcsXG5cdCAgbWFya2VyTWlkOiAnbWFya2VyLW1pZCcsXG5cdCAgbWFy
a2VyU3RhcnQ6ICdtYXJrZXItc3RhcnQnLFxuXHQgIG1hcmtlckhlaWdodDogJ21hcmtlckhlaWdo
dCcsXG5cdCAgbWFya2VyVW5pdHM6ICdtYXJrZXJVbml0cycsXG5cdCAgbWFya2VyV2lkdGg6ICdt
YXJrZXJXaWR0aCcsXG5cdCAgbWFzazogMCxcblx0ICBtYXNrQ29udGVudFVuaXRzOiAnbWFza0Nv
bnRlbnRVbml0cycsXG5cdCAgbWFza1VuaXRzOiAnbWFza1VuaXRzJyxcblx0ICBtYXRoZW1hdGlj
YWw6IDAsXG5cdCAgbW9kZTogMCxcblx0ICBudW1PY3RhdmVzOiAnbnVtT2N0YXZlcycsXG5cdCAg
b2Zmc2V0OiAwLFxuXHQgIG9wYWNpdHk6IDAsXG5cdCAgb3BlcmF0b3I6IDAsXG5cdCAgb3JkZXI6
IDAsXG5cdCAgb3JpZW50OiAwLFxuXHQgIG9yaWVudGF0aW9uOiAwLFxuXHQgIG9yaWdpbjogMCxc
blx0ICBvdmVyZmxvdzogMCxcblx0ICBvdmVybGluZVBvc2l0aW9uOiAnb3ZlcmxpbmUtcG9zaXRp
b24nLFxuXHQgIG92ZXJsaW5lVGhpY2tuZXNzOiAnb3ZlcmxpbmUtdGhpY2tuZXNzJyxcblx0ICBw
YWludE9yZGVyOiAncGFpbnQtb3JkZXInLFxuXHQgIHBhbm9zZTE6ICdwYW5vc2UtMScsXG5cdCAg
cGF0aExlbmd0aDogJ3BhdGhMZW5ndGgnLFxuXHQgIHBhdHRlcm5Db250ZW50VW5pdHM6ICdwYXR0
ZXJuQ29udGVudFVuaXRzJyxcblx0ICBwYXR0ZXJuVHJhbnNmb3JtOiAncGF0dGVyblRyYW5zZm9y
bScsXG5cdCAgcGF0dGVyblVuaXRzOiAncGF0dGVyblVuaXRzJyxcblx0ICBwb2ludGVyRXZlbnRz
OiAncG9pbnRlci1ldmVudHMnLFxuXHQgIHBvaW50czogMCxcblx0ICBwb2ludHNBdFg6ICdwb2lu
dHNBdFgnLFxuXHQgIHBvaW50c0F0WTogJ3BvaW50c0F0WScsXG5cdCAgcG9pbnRzQXRaOiAncG9p
bnRzQXRaJyxcblx0ICBwcmVzZXJ2ZUFscGhhOiAncHJlc2VydmVBbHBoYScsXG5cdCAgcHJlc2Vy
dmVBc3BlY3RSYXRpbzogJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLFxuXHQgIHByaW1pdGl2ZVVuaXRz
OiAncHJpbWl0aXZlVW5pdHMnLFxuXHQgIHI6IDAsXG5cdCAgcmFkaXVzOiAwLFxuXHQgIHJlZlg6
ICdyZWZYJyxcblx0ICByZWZZOiAncmVmWScsXG5cdCAgcmVuZGVyaW5nSW50ZW50OiAncmVuZGVy
aW5nLWludGVudCcsXG5cdCAgcmVwZWF0Q291bnQ6ICdyZXBlYXRDb3VudCcsXG5cdCAgcmVwZWF0
RHVyOiAncmVwZWF0RHVyJyxcblx0ICByZXF1aXJlZEV4dGVuc2lvbnM6ICdyZXF1aXJlZEV4dGVu
c2lvbnMnLFxuXHQgIHJlcXVpcmVkRmVhdHVyZXM6ICdyZXF1aXJlZEZlYXR1cmVzJyxcblx0ICBy
ZXN0YXJ0OiAwLFxuXHQgIHJlc3VsdDogMCxcblx0ICByb3RhdGU6IDAsXG5cdCAgcng6IDAsXG5c
dCAgcnk6IDAsXG5cdCAgc2NhbGU6IDAsXG5cdCAgc2VlZDogMCxcblx0ICBzaGFwZVJlbmRlcmlu
ZzogJ3NoYXBlLXJlbmRlcmluZycsXG5cdCAgc2xvcGU6IDAsXG5cdCAgc3BhY2luZzogMCxcblx0
ICBzcGVjdWxhckNvbnN0YW50OiAnc3BlY3VsYXJDb25zdGFudCcsXG5cdCAgc3BlY3VsYXJFeHBv
bmVudDogJ3NwZWN1bGFyRXhwb25lbnQnLFxuXHQgIHNwZWVkOiAwLFxuXHQgIHNwcmVhZE1ldGhv
ZDogJ3NwcmVhZE1ldGhvZCcsXG5cdCAgc3RhcnRPZmZzZXQ6ICdzdGFydE9mZnNldCcsXG5cdCAg
c3RkRGV2aWF0aW9uOiAnc3RkRGV2aWF0aW9uJyxcblx0ICBzdGVtaDogMCxcblx0ICBzdGVtdjog
MCxcblx0ICBzdGl0Y2hUaWxlczogJ3N0aXRjaFRpbGVzJyxcblx0ICBzdG9wQ29sb3I6ICdzdG9w
LWNvbG9yJyxcblx0ICBzdG9wT3BhY2l0eTogJ3N0b3Atb3BhY2l0eScsXG5cdCAgc3RyaWtldGhy
b3VnaFBvc2l0aW9uOiAnc3RyaWtldGhyb3VnaC1wb3NpdGlvbicsXG5cdCAgc3RyaWtldGhyb3Vn
aFRoaWNrbmVzczogJ3N0cmlrZXRocm91Z2gtdGhpY2tuZXNzJyxcblx0ICBzdHJpbmc6IDAsXG5c
dCAgc3Ryb2tlOiAwLFxuXHQgIHN0cm9rZURhc2hhcnJheTogJ3N0cm9rZS1kYXNoYXJyYXknLFxu
XHQgIHN0cm9rZURhc2hvZmZzZXQ6ICdzdHJva2UtZGFzaG9mZnNldCcsXG5cdCAgc3Ryb2tlTGlu
ZWNhcDogJ3N0cm9rZS1saW5lY2FwJyxcblx0ICBzdHJva2VMaW5lam9pbjogJ3N0cm9rZS1saW5l
am9pbicsXG5cdCAgc3Ryb2tlTWl0ZXJsaW1pdDogJ3N0cm9rZS1taXRlcmxpbWl0Jyxcblx0ICBz
dHJva2VPcGFjaXR5OiAnc3Ryb2tlLW9wYWNpdHknLFxuXHQgIHN0cm9rZVdpZHRoOiAnc3Ryb2tl
LXdpZHRoJyxcblx0ICBzdXJmYWNlU2NhbGU6ICdzdXJmYWNlU2NhbGUnLFxuXHQgIHN5c3RlbUxh
bmd1YWdlOiAnc3lzdGVtTGFuZ3VhZ2UnLFxuXHQgIHRhYmxlVmFsdWVzOiAndGFibGVWYWx1ZXMn
LFxuXHQgIHRhcmdldFg6ICd0YXJnZXRYJyxcblx0ICB0YXJnZXRZOiAndGFyZ2V0WScsXG5cdCAg
dGV4dEFuY2hvcjogJ3RleHQtYW5jaG9yJyxcblx0ICB0ZXh0RGVjb3JhdGlvbjogJ3RleHQtZGVj
b3JhdGlvbicsXG5cdCAgdGV4dFJlbmRlcmluZzogJ3RleHQtcmVuZGVyaW5nJyxcblx0ICB0ZXh0
TGVuZ3RoOiAndGV4dExlbmd0aCcsXG5cdCAgdG86IDAsXG5cdCAgdHJhbnNmb3JtOiAwLFxuXHQg
IHUxOiAwLFxuXHQgIHUyOiAwLFxuXHQgIHVuZGVybGluZVBvc2l0aW9uOiAndW5kZXJsaW5lLXBv
c2l0aW9uJyxcblx0ICB1bmRlcmxpbmVUaGlja25lc3M6ICd1bmRlcmxpbmUtdGhpY2tuZXNzJyxc
blx0ICB1bmljb2RlOiAwLFxuXHQgIHVuaWNvZGVCaWRpOiAndW5pY29kZS1iaWRpJyxcblx0ICB1
bmljb2RlUmFuZ2U6ICd1bmljb2RlLXJhbmdlJyxcblx0ICB1bml0c1BlckVtOiAndW5pdHMtcGVy
LWVtJyxcblx0ICB2QWxwaGFiZXRpYzogJ3YtYWxwaGFiZXRpYycsXG5cdCAgdkhhbmdpbmc6ICd2
LWhhbmdpbmcnLFxuXHQgIHZJZGVvZ3JhcGhpYzogJ3YtaWRlb2dyYXBoaWMnLFxuXHQgIHZNYXRo
ZW1hdGljYWw6ICd2LW1hdGhlbWF0aWNhbCcsXG5cdCAgdmFsdWVzOiAwLFxuXHQgIHZlY3RvckVm
ZmVjdDogJ3ZlY3Rvci1lZmZlY3QnLFxuXHQgIHZlcnNpb246IDAsXG5cdCAgdmVydEFkdlk6ICd2
ZXJ0LWFkdi15Jyxcblx0ICB2ZXJ0T3JpZ2luWDogJ3ZlcnQtb3JpZ2luLXgnLFxuXHQgIHZlcnRP
cmlnaW5ZOiAndmVydC1vcmlnaW4teScsXG5cdCAgdmlld0JveDogJ3ZpZXdCb3gnLFxuXHQgIHZp
ZXdUYXJnZXQ6ICd2aWV3VGFyZ2V0Jyxcblx0ICB2aXNpYmlsaXR5OiAwLFxuXHQgIHdpZHRoczog
MCxcblx0ICB3b3JkU3BhY2luZzogJ3dvcmQtc3BhY2luZycsXG5cdCAgd3JpdGluZ01vZGU6ICd3
cml0aW5nLW1vZGUnLFxuXHQgIHg6IDAsXG5cdCAgeEhlaWdodDogJ3gtaGVpZ2h0Jyxcblx0ICB4
MTogMCxcblx0ICB4MjogMCxcblx0ICB4Q2hhbm5lbFNlbGVjdG9yOiAneENoYW5uZWxTZWxlY3Rv
cicsXG5cdCAgeGxpbmtBY3R1YXRlOiAneGxpbms6YWN0dWF0ZScsXG5cdCAgeGxpbmtBcmNyb2xl
OiAneGxpbms6YXJjcm9sZScsXG5cdCAgeGxpbmtIcmVmOiAneGxpbms6aHJlZicsXG5cdCAgeGxp
bmtSb2xlOiAneGxpbms6cm9sZScsXG5cdCAgeGxpbmtTaG93OiAneGxpbms6c2hvdycsXG5cdCAg
eGxpbmtUaXRsZTogJ3hsaW5rOnRpdGxlJyxcblx0ICB4bGlua1R5cGU6ICd4bGluazp0eXBlJyxc
blx0ICB4bWxCYXNlOiAneG1sOmJhc2UnLFxuXHQgIHhtbG5zOiAwLFxuXHQgIHhtbG5zWGxpbms6
ICd4bWxuczp4bGluaycsXG5cdCAgeG1sTGFuZzogJ3htbDpsYW5nJyxcblx0ICB4bWxTcGFjZTog
J3htbDpzcGFjZScsXG5cdCAgeTogMCxcblx0ICB5MTogMCxcblx0ICB5MjogMCxcblx0ICB5Q2hh
bm5lbFNlbGVjdG9yOiAneUNoYW5uZWxTZWxlY3RvcicsXG5cdCAgejogMCxcblx0ICB6b29tQW5k
UGFuOiAnem9vbUFuZFBhbidcblx0fTtcblx0XG5cdHZhciBTVkdET01Qcm9wZXJ0eUNvbmZpZyA9
IHtcblx0ICBQcm9wZXJ0aWVzOiB7fSxcblx0ICBET01BdHRyaWJ1dGVOYW1lc3BhY2VzOiB7XG5c
dCAgICB4bGlua0FjdHVhdGU6IE5TLnhsaW5rLFxuXHQgICAgeGxpbmtBcmNyb2xlOiBOUy54bGlu
ayxcblx0ICAgIHhsaW5rSHJlZjogTlMueGxpbmssXG5cdCAgICB4bGlua1JvbGU6IE5TLnhsaW5r
LFxuXHQgICAgeGxpbmtTaG93OiBOUy54bGluayxcblx0ICAgIHhsaW5rVGl0bGU6IE5TLnhsaW5r
LFxuXHQgICAgeGxpbmtUeXBlOiBOUy54bGluayxcblx0ICAgIHhtbEJhc2U6IE5TLnhtbCxcblx0
ICAgIHhtbExhbmc6IE5TLnhtbCxcblx0ICAgIHhtbFNwYWNlOiBOUy54bWxcblx0ICB9LFxuXHQg
IERPTUF0dHJpYnV0ZU5hbWVzOiB7fVxuXHR9O1xuXHRcblx0T2JqZWN0LmtleXMoQVRUUlMpLmZv
ckVhY2goZnVuY3Rpb24gKGtleSkge1xuXHQgIFNWR0RPTVByb3BlcnR5Q29uZmlnLlByb3BlcnRp
ZXNba2V5XSA9IDA7XG5cdCAgaWYgKEFUVFJTW2tleV0pIHtcblx0ICAgIFNWR0RPTVByb3BlcnR5
Q29uZmlnLkRPTUF0dHJpYnV0ZU5hbWVzW2tleV0gPSBBVFRSU1trZXldO1xuXHQgIH1cblx0fSk7
XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFNWR0RPTVByb3BlcnR5Q29uZmlnO1xuXG4vKioqLyB9
LFxuLyogMTY1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19y
ZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpc
blx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgRXZlbnRQcm9wYWdhdG9ycyA9
IF9fd2VicGFja19yZXF1aXJlX18oMjApO1xuXHR2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xuXHR2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX193
ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblx0dmFyIFJlYWN0SW5wdXRTZWxlY3Rpb24gPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDY2KTtcblx0dmFyIFN5bnRoZXRpY0V2ZW50ID0gX193ZWJwYWNrX3JlcXVp
cmVfXygxMCk7XG5cdFxuXHR2YXIgZ2V0QWN0aXZlRWxlbWVudCA9IF9fd2VicGFja19yZXF1aXJl
X18oNTMpO1xuXHR2YXIgaXNUZXh0SW5wdXRFbGVtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3
Nik7XG5cdHZhciBzaGFsbG93RXF1YWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMyKTtcblx0XG5c
dHZhciBza2lwU2VsZWN0aW9uQ2hhbmdlRXZlbnQgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5V
c2VET00gJiYgJ2RvY3VtZW50TW9kZScgaW4gZG9jdW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRN
b2RlIDw9IDExO1xuXHRcblx0dmFyIGV2ZW50VHlwZXMgPSB7XG5cdCAgc2VsZWN0OiB7XG5cdCAg
ICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuXHQgICAgICBidWJibGVkOiAnb25TZWxlY3Qn
LFxuXHQgICAgICBjYXB0dXJlZDogJ29uU2VsZWN0Q2FwdHVyZSdcblx0ICAgIH0sXG5cdCAgICBk
ZXBlbmRlbmNpZXM6IFsndG9wQmx1cicsICd0b3BDb250ZXh0TWVudScsICd0b3BGb2N1cycsICd0
b3BLZXlEb3duJywgJ3RvcEtleVVwJywgJ3RvcE1vdXNlRG93bicsICd0b3BNb3VzZVVwJywgJ3Rv
cFNlbGVjdGlvbkNoYW5nZSddXG5cdCAgfVxuXHR9O1xuXHRcblx0dmFyIGFjdGl2ZUVsZW1lbnQg
PSBudWxsO1xuXHR2YXIgYWN0aXZlRWxlbWVudEluc3QgPSBudWxsO1xuXHR2YXIgbGFzdFNlbGVj
dGlvbiA9IG51bGw7XG5cdHZhciBtb3VzZURvd24gPSBmYWxzZTtcblx0XG5cdC8vIFRyYWNrIHdo
ZXRoZXIgYSBsaXN0ZW5lciBleGlzdHMgZm9yIHRoaXMgcGx1Z2luLiBJZiBub25lIGV4aXN0LCB3
ZSBkb1xuXHQvLyBub3QgZXh0cmFjdCBldmVudHMuIFNlZSAjMzYzOS5cblx0dmFyIGhhc0xpc3Rl
bmVyID0gZmFsc2U7XG5cdFxuXHQvKipcblx0ICogR2V0IGFuIG9iamVjdCB3aGljaCBpcyBhIHVu
aXF1ZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgY3VycmVudCBzZWxlY3Rpb24uXG5cdCAqXG5cdCAq
IFRoZSByZXR1cm4gdmFsdWUgd2lsbCBub3QgYmUgY29uc2lzdGVudCBhY3Jvc3Mgbm9kZXMgb3Ig
YnJvd3NlcnMsIGJ1dFxuXHQgKiB0d28gaWRlbnRpY2FsIHNlbGVjdGlvbnMgb24gdGhlIHNhbWUg
bm9kZSB3aWxsIHJldHVybiBpZGVudGljYWwgb2JqZWN0cy5cblx0ICpcblx0ICogQHBhcmFtIHtE
T01FbGVtZW50fSBub2RlXG5cdCAqIEByZXR1cm4ge29iamVjdH1cblx0ICovXG5cdGZ1bmN0aW9u
IGdldFNlbGVjdGlvbihub2RlKSB7XG5cdCAgaWYgKCdzZWxlY3Rpb25TdGFydCcgaW4gbm9kZSAm
JiBSZWFjdElucHV0U2VsZWN0aW9uLmhhc1NlbGVjdGlvbkNhcGFiaWxpdGllcyhub2RlKSkge1xu
XHQgICAgcmV0dXJuIHtcblx0ICAgICAgc3RhcnQ6IG5vZGUuc2VsZWN0aW9uU3RhcnQsXG5cdCAg
ICAgIGVuZDogbm9kZS5zZWxlY3Rpb25FbmRcblx0ICAgIH07XG5cdCAgfSBlbHNlIGlmICh3aW5k
b3cuZ2V0U2VsZWN0aW9uKSB7XG5cdCAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVj
dGlvbigpO1xuXHQgICAgcmV0dXJuIHtcblx0ICAgICAgYW5jaG9yTm9kZTogc2VsZWN0aW9uLmFu
Y2hvck5vZGUsXG5cdCAgICAgIGFuY2hvck9mZnNldDogc2VsZWN0aW9uLmFuY2hvck9mZnNldCxc
blx0ICAgICAgZm9jdXNOb2RlOiBzZWxlY3Rpb24uZm9jdXNOb2RlLFxuXHQgICAgICBmb2N1c09m
ZnNldDogc2VsZWN0aW9uLmZvY3VzT2Zmc2V0XG5cdCAgICB9O1xuXHQgIH0gZWxzZSBpZiAoZG9j
dW1lbnQuc2VsZWN0aW9uKSB7XG5cdCAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5zZWxlY3Rpb24u
Y3JlYXRlUmFuZ2UoKTtcblx0ICAgIHJldHVybiB7XG5cdCAgICAgIHBhcmVudEVsZW1lbnQ6IHJh
bmdlLnBhcmVudEVsZW1lbnQoKSxcblx0ICAgICAgdGV4dDogcmFuZ2UudGV4dCxcblx0ICAgICAg
dG9wOiByYW5nZS5ib3VuZGluZ1RvcCxcblx0ICAgICAgbGVmdDogcmFuZ2UuYm91bmRpbmdMZWZ0
XG5cdCAgICB9O1xuXHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIFBvbGwgc2VsZWN0aW9uIHRv
IHNlZSB3aGV0aGVyIGl0J3MgY2hhbmdlZC5cblx0ICpcblx0ICogQHBhcmFtIHtvYmplY3R9IG5h
dGl2ZUV2ZW50XG5cdCAqIEByZXR1cm4gez9TeW50aGV0aWNFdmVudH1cblx0ICovXG5cdGZ1bmN0
aW9uIGNvbnN0cnVjdFNlbGVjdEV2ZW50KG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkg
e1xuXHQgIC8vIEVuc3VyZSB3ZSBoYXZlIHRoZSByaWdodCBlbGVtZW50LCBhbmQgdGhhdCB0aGUg
dXNlciBpcyBub3QgZHJhZ2dpbmcgYVxuXHQgIC8vIHNlbGVjdGlvbiAodGhpcyBtYXRjaGVzIG5h
dGl2ZSBgc2VsZWN0YCBldmVudCBiZWhhdmlvcikuIEluIEhUTUw1LCBzZWxlY3Rcblx0ICAvLyBm
aXJlcyBvbmx5IG9uIGlucHV0IGFuZCB0ZXh0YXJlYSB0aHVzIGlmIHRoZXJlJ3Mgbm8gZm9jdXNl
ZCBlbGVtZW50IHdlXG5cdCAgLy8gd29uJ3QgZGlzcGF0Y2guXG5cdCAgaWYgKG1vdXNlRG93biB8
fCBhY3RpdmVFbGVtZW50ID09IG51bGwgfHwgYWN0aXZlRWxlbWVudCAhPT0gZ2V0QWN0aXZlRWxl
bWVudCgpKSB7XG5cdCAgICByZXR1cm4gbnVsbDtcblx0ICB9XG5cdFxuXHQgIC8vIE9ubHkgZmly
ZSB3aGVuIHNlbGVjdGlvbiBoYXMgYWN0dWFsbHkgY2hhbmdlZC5cblx0ICB2YXIgY3VycmVudFNl
bGVjdGlvbiA9IGdldFNlbGVjdGlvbihhY3RpdmVFbGVtZW50KTtcblx0ICBpZiAoIWxhc3RTZWxl
Y3Rpb24gfHwgIXNoYWxsb3dFcXVhbChsYXN0U2VsZWN0aW9uLCBjdXJyZW50U2VsZWN0aW9uKSkg
e1xuXHQgICAgbGFzdFNlbGVjdGlvbiA9IGN1cnJlbnRTZWxlY3Rpb247XG5cdFxuXHQgICAgdmFy
IHN5bnRoZXRpY0V2ZW50ID0gU3ludGhldGljRXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMuc2Vs
ZWN0LCBhY3RpdmVFbGVtZW50SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtc
blx0XG5cdCAgICBzeW50aGV0aWNFdmVudC50eXBlID0gJ3NlbGVjdCc7XG5cdCAgICBzeW50aGV0
aWNFdmVudC50YXJnZXQgPSBhY3RpdmVFbGVtZW50O1xuXHRcblx0ICAgIEV2ZW50UHJvcGFnYXRv
cnMuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhzeW50aGV0aWNFdmVudCk7XG5cdFxuXHQg
ICAgcmV0dXJuIHN5bnRoZXRpY0V2ZW50O1xuXHQgIH1cblx0XG5cdCAgcmV0dXJuIG51bGw7XG5c
dH1cblx0XG5cdC8qKlxuXHQgKiBUaGlzIHBsdWdpbiBjcmVhdGVzIGFuIGBvblNlbGVjdGAgZXZl
bnQgdGhhdCBub3JtYWxpemVzIHNlbGVjdCBldmVudHNcblx0ICogYWNyb3NzIGZvcm0gZWxlbWVu
dHMuXG5cdCAqXG5cdCAqIFN1cHBvcnRlZCBlbGVtZW50cyBhcmU6XG5cdCAqIC0gaW5wdXQgKHNl
ZSBgaXNUZXh0SW5wdXRFbGVtZW50YClcblx0ICogLSB0ZXh0YXJlYVxuXHQgKiAtIGNvbnRlbnRF
ZGl0YWJsZVxuXHQgKlxuXHQgKiBUaGlzIGRpZmZlcnMgZnJvbSBuYXRpdmUgYnJvd3NlciBpbXBs
ZW1lbnRhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB3YXlzOlxuXHQgKiAtIEZpcmVzIG9uIGNvbnRl
bnRFZGl0YWJsZSBmaWVsZHMgYXMgd2VsbCBhcyBpbnB1dHMuXG5cdCAqIC0gRmlyZXMgZm9yIGNv
bGxhcHNlZCBzZWxlY3Rpb24uXG5cdCAqIC0gRmlyZXMgYWZ0ZXIgdXNlciBpbnB1dC5cblx0ICov
XG5cdHZhciBTZWxlY3RFdmVudFBsdWdpbiA9IHtcblx0ICBldmVudFR5cGVzOiBldmVudFR5cGVz
LFxuXHRcblx0ICBleHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0YXJnZXRJ
bnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcblx0ICAgIGlmICghaGFzTGlz
dGVuZXIpIHtcblx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIHRh
cmdldE5vZGUgPSB0YXJnZXRJbnN0ID8gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9t
SW5zdGFuY2UodGFyZ2V0SW5zdCkgOiB3aW5kb3c7XG5cdFxuXHQgICAgc3dpdGNoICh0b3BMZXZl
bFR5cGUpIHtcblx0ICAgICAgLy8gVHJhY2sgdGhlIGlucHV0IG5vZGUgdGhhdCBoYXMgZm9jdXMu
XG5cdCAgICAgIGNhc2UgJ3RvcEZvY3VzJzpcblx0ICAgICAgICBpZiAoaXNUZXh0SW5wdXRFbGVt
ZW50KHRhcmdldE5vZGUpIHx8IHRhcmdldE5vZGUuY29udGVudEVkaXRhYmxlID09PSAndHJ1ZScp
IHtcblx0ICAgICAgICAgIGFjdGl2ZUVsZW1lbnQgPSB0YXJnZXROb2RlO1xuXHQgICAgICAgICAg
YWN0aXZlRWxlbWVudEluc3QgPSB0YXJnZXRJbnN0O1xuXHQgICAgICAgICAgbGFzdFNlbGVjdGlv
biA9IG51bGw7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICd0
b3BCbHVyJzpcblx0ICAgICAgICBhY3RpdmVFbGVtZW50ID0gbnVsbDtcblx0ICAgICAgICBhY3Rp
dmVFbGVtZW50SW5zdCA9IG51bGw7XG5cdCAgICAgICAgbGFzdFNlbGVjdGlvbiA9IG51bGw7XG5c
dCAgICAgICAgYnJlYWs7XG5cdCAgICAgIC8vIERvbid0IGZpcmUgdGhlIGV2ZW50IHdoaWxlIHRo
ZSB1c2VyIGlzIGRyYWdnaW5nLiBUaGlzIG1hdGNoZXMgdGhlXG5cdCAgICAgIC8vIHNlbWFudGlj
cyBvZiB0aGUgbmF0aXZlIHNlbGVjdCBldmVudC5cblx0ICAgICAgY2FzZSAndG9wTW91c2VEb3du
Jzpcblx0ICAgICAgICBtb3VzZURvd24gPSB0cnVlO1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAg
ICBjYXNlICd0b3BDb250ZXh0TWVudSc6XG5cdCAgICAgIGNhc2UgJ3RvcE1vdXNlVXAnOlxuXHQg
ICAgICAgIG1vdXNlRG93biA9IGZhbHNlO1xuXHQgICAgICAgIHJldHVybiBjb25zdHJ1Y3RTZWxl
Y3RFdmVudChuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuXHQgICAgICAvLyBDaHJv
bWUgYW5kIElFIGZpcmUgbm9uLXN0YW5kYXJkIGV2ZW50IHdoZW4gc2VsZWN0aW9uIGlzIGNoYW5n
ZWQgKGFuZFxuXHQgICAgICAvLyBzb21ldGltZXMgd2hlbiBpdCBoYXNuJ3QpLiBJRSdzIGV2ZW50
IGZpcmVzIG91dCBvZiBvcmRlciB3aXRoIHJlc3BlY3Rcblx0ICAgICAgLy8gdG8ga2V5IGFuZCBp
bnB1dCBldmVudHMgb24gZGVsZXRpb24sIHNvIHdlIGRpc2NhcmQgaXQuXG5cdCAgICAgIC8vXG5c
dCAgICAgIC8vIEZpcmVmb3ggZG9lc24ndCBzdXBwb3J0IHNlbGVjdGlvbmNoYW5nZSwgc28gY2hl
Y2sgc2VsZWN0aW9uIHN0YXR1c1xuXHQgICAgICAvLyBhZnRlciBlYWNoIGtleSBlbnRyeS4gVGhl
IHNlbGVjdGlvbiBjaGFuZ2VzIGFmdGVyIGtleWRvd24gYW5kIGJlZm9yZVxuXHQgICAgICAvLyBr
ZXl1cCwgYnV0IHdlIGNoZWNrIG9uIGtleWRvd24gYXMgd2VsbCBpbiB0aGUgY2FzZSBvZiBob2xk
aW5nIGRvd24gYVxuXHQgICAgICAvLyBrZXksIHdoZW4gbXVsdGlwbGUga2V5ZG93biBldmVudHMg
YXJlIGZpcmVkIGJ1dCBvbmx5IG9uZSBrZXl1cCBpcy5cblx0ICAgICAgLy8gVGhpcyBpcyBhbHNv
IG91ciBhcHByb2FjaCBmb3IgSUUgaGFuZGxpbmcsIGZvciB0aGUgcmVhc29uIGFib3ZlLlxuXHQg
ICAgICBjYXNlICd0b3BTZWxlY3Rpb25DaGFuZ2UnOlxuXHQgICAgICAgIGlmIChza2lwU2VsZWN0
aW9uQ2hhbmdlRXZlbnQpIHtcblx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIH1cblx0ICAg
ICAgLy8gZmFsbHMgdGhyb3VnaFxuXHQgICAgICBjYXNlICd0b3BLZXlEb3duJzpcblx0ICAgICAg
Y2FzZSAndG9wS2V5VXAnOlxuXHQgICAgICAgIHJldHVybiBjb25zdHJ1Y3RTZWxlY3RFdmVudChu
YXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuXHQgICAgfVxuXHRcblx0ICAgIHJldHVy
biBudWxsO1xuXHQgIH0sXG5cdFxuXHQgIGRpZFB1dExpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwg
cmVnaXN0cmF0aW9uTmFtZSwgbGlzdGVuZXIpIHtcblx0ICAgIGlmIChyZWdpc3RyYXRpb25OYW1l
ID09PSAnb25TZWxlY3QnKSB7XG5cdCAgICAgIGhhc0xpc3RlbmVyID0gdHJ1ZTtcblx0ICAgIH1c
blx0ICB9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFNlbGVjdEV2ZW50UGx1Z2luO1xu
XG4vKioqLyB9LFxuLyogMTY2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9f
d2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cblx0ICpcblx0ICogXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9w
cm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblx0XG5cdHZhciBFdmVudExp
c3RlbmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1MSk7XG5cdHZhciBFdmVudFByb3BhZ2F0b3Jz
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCk7XG5cdHZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuXHR2YXIgU3ludGhldGljQW5pbWF0aW9uRXZlbnQg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2Nyk7XG5cdHZhciBTeW50aGV0aWNDbGlwYm9hcmRFdmVu
dCA9IF9fd2VicGFja19yZXF1aXJlX18oMTY4KTtcblx0dmFyIFN5bnRoZXRpY0V2ZW50ID0gX193
ZWJwYWNrX3JlcXVpcmVfXygxMCk7XG5cdHZhciBTeW50aGV0aWNGb2N1c0V2ZW50ID0gX193ZWJw
YWNrX3JlcXVpcmVfXygxNzEpO1xuXHR2YXIgU3ludGhldGljS2V5Ym9hcmRFdmVudCA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMTczKTtcblx0dmFyIFN5bnRoZXRpY01vdXNlRXZlbnQgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDI2KTtcblx0dmFyIFN5bnRoZXRpY0RyYWdFdmVudCA9IF9fd2VicGFja19y
ZXF1aXJlX18oMTcwKTtcblx0dmFyIFN5bnRoZXRpY1RvdWNoRXZlbnQgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDE3NCk7XG5cdHZhciBTeW50aGV0aWNUcmFuc2l0aW9uRXZlbnQgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDE3NSk7XG5cdHZhciBTeW50aGV0aWNVSUV2ZW50ID0gX193ZWJwYWNrX3JlcXVp
cmVfXygyMik7XG5cdHZhciBTeW50aGV0aWNXaGVlbEV2ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVf
XygxNzYpO1xuXHRcblx0dmFyIGVtcHR5RnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcp
O1xuXHR2YXIgZ2V0RXZlbnRDaGFyQ29kZSA9IF9fd2VicGFja19yZXF1aXJlX18oNDQpO1xuXHR2
YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0XG5cdC8qKlxuXHQgKiBU
dXJuc1xuXHQgKiBbJ2Fib3J0JywgLi4uXVxuXHQgKiBpbnRvXG5cdCAqIGV2ZW50VHlwZXMgPSB7
XG5cdCAqICAgJ2Fib3J0Jzoge1xuXHQgKiAgICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtc
blx0ICogICAgICAgYnViYmxlZDogJ29uQWJvcnQnLFxuXHQgKiAgICAgICBjYXB0dXJlZDogJ29u
QWJvcnRDYXB0dXJlJyxcblx0ICogICAgIH0sXG5cdCAqICAgICBkZXBlbmRlbmNpZXM6IFsndG9w
QWJvcnQnXSxcblx0ICogICB9LFxuXHQgKiAgIC4uLlxuXHQgKiB9O1xuXHQgKiB0b3BMZXZlbEV2
ZW50c1RvRGlzcGF0Y2hDb25maWcgPSB7XG5cdCAqICAgJ3RvcEFib3J0JzogeyBzYW1lQ29uZmln
IH1cblx0ICogfTtcblx0ICovXG5cdHZhciBldmVudFR5cGVzID0ge307XG5cdHZhciB0b3BMZXZl
bEV2ZW50c1RvRGlzcGF0Y2hDb25maWcgPSB7fTtcblx0WydhYm9ydCcsICdhbmltYXRpb25FbmQn
LCAnYW5pbWF0aW9uSXRlcmF0aW9uJywgJ2FuaW1hdGlvblN0YXJ0JywgJ2JsdXInLCAnY2FuUGxh
eScsICdjYW5QbGF5VGhyb3VnaCcsICdjbGljaycsICdjb250ZXh0TWVudScsICdjb3B5JywgJ2N1
dCcsICdkb3VibGVDbGljaycsICdkcmFnJywgJ2RyYWdFbmQnLCAnZHJhZ0VudGVyJywgJ2RyYWdF
eGl0JywgJ2RyYWdMZWF2ZScsICdkcmFnT3ZlcicsICdkcmFnU3RhcnQnLCAnZHJvcCcsICdkdXJh
dGlvbkNoYW5nZScsICdlbXB0aWVkJywgJ2VuY3J5cHRlZCcsICdlbmRlZCcsICdlcnJvcicsICdm
b2N1cycsICdpbnB1dCcsICdpbnZhbGlkJywgJ2tleURvd24nLCAna2V5UHJlc3MnLCAna2V5VXAn
LCAnbG9hZCcsICdsb2FkZWREYXRhJywgJ2xvYWRlZE1ldGFkYXRhJywgJ2xvYWRTdGFydCcsICdt
b3VzZURvd24nLCAnbW91c2VNb3ZlJywgJ21vdXNlT3V0JywgJ21vdXNlT3ZlcicsICdtb3VzZVVw
JywgJ3Bhc3RlJywgJ3BhdXNlJywgJ3BsYXknLCAncGxheWluZycsICdwcm9ncmVzcycsICdyYXRl
Q2hhbmdlJywgJ3Jlc2V0JywgJ3Njcm9sbCcsICdzZWVrZWQnLCAnc2Vla2luZycsICdzdGFsbGVk
JywgJ3N1Ym1pdCcsICdzdXNwZW5kJywgJ3RpbWVVcGRhdGUnLCAndG91Y2hDYW5jZWwnLCAndG91
Y2hFbmQnLCAndG91Y2hNb3ZlJywgJ3RvdWNoU3RhcnQnLCAndHJhbnNpdGlvbkVuZCcsICd2b2x1
bWVDaGFuZ2UnLCAnd2FpdGluZycsICd3aGVlbCddLmZvckVhY2goZnVuY3Rpb24gKGV2ZW50KSB7
XG5cdCAgdmFyIGNhcGl0YWxpemVkRXZlbnQgPSBldmVudFswXS50b1VwcGVyQ2FzZSgpICsgZXZl
bnQuc2xpY2UoMSk7XG5cdCAgdmFyIG9uRXZlbnQgPSAnb24nICsgY2FwaXRhbGl6ZWRFdmVudDtc
blx0ICB2YXIgdG9wRXZlbnQgPSAndG9wJyArIGNhcGl0YWxpemVkRXZlbnQ7XG5cdFxuXHQgIHZh
ciB0eXBlID0ge1xuXHQgICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcblx0ICAgICAgYnVi
YmxlZDogb25FdmVudCxcblx0ICAgICAgY2FwdHVyZWQ6IG9uRXZlbnQgKyAnQ2FwdHVyZSdcblx0
ICAgIH0sXG5cdCAgICBkZXBlbmRlbmNpZXM6IFt0b3BFdmVudF1cblx0ICB9O1xuXHQgIGV2ZW50
VHlwZXNbZXZlbnRdID0gdHlwZTtcblx0ICB0b3BMZXZlbEV2ZW50c1RvRGlzcGF0Y2hDb25maWdb
dG9wRXZlbnRdID0gdHlwZTtcblx0fSk7XG5cdFxuXHR2YXIgb25DbGlja0xpc3RlbmVycyA9IHt9
O1xuXHRcblx0ZnVuY3Rpb24gZ2V0RGljdGlvbmFyeUtleShpbnN0KSB7XG5cdCAgLy8gUHJldmVu
dHMgVjggcGVyZm9ybWFuY2UgaXNzdWU6XG5cdCAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vi
b29rL3JlYWN0L3B1bGwvNzIzMlxuXHQgIHJldHVybiAnLicgKyBpbnN0Ll9yb290Tm9kZUlEO1xu
XHR9XG5cdFxuXHRmdW5jdGlvbiBpc0ludGVyYWN0aXZlKHRhZykge1xuXHQgIHJldHVybiB0YWcg
PT09ICdidXR0b24nIHx8IHRhZyA9PT0gJ2lucHV0JyB8fCB0YWcgPT09ICdzZWxlY3QnIHx8IHRh
ZyA9PT0gJ3RleHRhcmVhJztcblx0fVxuXHRcblx0dmFyIFNpbXBsZUV2ZW50UGx1Z2luID0ge1xu
XHQgIGV2ZW50VHlwZXM6IGV2ZW50VHlwZXMsXG5cdFxuXHQgIGV4dHJhY3RFdmVudHM6IGZ1bmN0
aW9uICh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRh
cmdldCkge1xuXHQgICAgdmFyIGRpc3BhdGNoQ29uZmlnID0gdG9wTGV2ZWxFdmVudHNUb0Rpc3Bh
dGNoQ29uZmlnW3RvcExldmVsVHlwZV07XG5cdCAgICBpZiAoIWRpc3BhdGNoQ29uZmlnKSB7XG5c
dCAgICAgIHJldHVybiBudWxsO1xuXHQgICAgfVxuXHQgICAgdmFyIEV2ZW50Q29uc3RydWN0b3I7
XG5cdCAgICBzd2l0Y2ggKHRvcExldmVsVHlwZSkge1xuXHQgICAgICBjYXNlICd0b3BBYm9ydCc6
XG5cdCAgICAgIGNhc2UgJ3RvcENhblBsYXknOlxuXHQgICAgICBjYXNlICd0b3BDYW5QbGF5VGhy
b3VnaCc6XG5cdCAgICAgIGNhc2UgJ3RvcER1cmF0aW9uQ2hhbmdlJzpcblx0ICAgICAgY2FzZSAn
dG9wRW1wdGllZCc6XG5cdCAgICAgIGNhc2UgJ3RvcEVuY3J5cHRlZCc6XG5cdCAgICAgIGNhc2Ug
J3RvcEVuZGVkJzpcblx0ICAgICAgY2FzZSAndG9wRXJyb3InOlxuXHQgICAgICBjYXNlICd0b3BJ
bnB1dCc6XG5cdCAgICAgIGNhc2UgJ3RvcEludmFsaWQnOlxuXHQgICAgICBjYXNlICd0b3BMb2Fk
Jzpcblx0ICAgICAgY2FzZSAndG9wTG9hZGVkRGF0YSc6XG5cdCAgICAgIGNhc2UgJ3RvcExvYWRl
ZE1ldGFkYXRhJzpcblx0ICAgICAgY2FzZSAndG9wTG9hZFN0YXJ0Jzpcblx0ICAgICAgY2FzZSAn
dG9wUGF1c2UnOlxuXHQgICAgICBjYXNlICd0b3BQbGF5Jzpcblx0ICAgICAgY2FzZSAndG9wUGxh
eWluZyc6XG5cdCAgICAgIGNhc2UgJ3RvcFByb2dyZXNzJzpcblx0ICAgICAgY2FzZSAndG9wUmF0
ZUNoYW5nZSc6XG5cdCAgICAgIGNhc2UgJ3RvcFJlc2V0Jzpcblx0ICAgICAgY2FzZSAndG9wU2Vl
a2VkJzpcblx0ICAgICAgY2FzZSAndG9wU2Vla2luZyc6XG5cdCAgICAgIGNhc2UgJ3RvcFN0YWxs
ZWQnOlxuXHQgICAgICBjYXNlICd0b3BTdWJtaXQnOlxuXHQgICAgICBjYXNlICd0b3BTdXNwZW5k
Jzpcblx0ICAgICAgY2FzZSAndG9wVGltZVVwZGF0ZSc6XG5cdCAgICAgIGNhc2UgJ3RvcFZvbHVt
ZUNoYW5nZSc6XG5cdCAgICAgIGNhc2UgJ3RvcFdhaXRpbmcnOlxuXHQgICAgICAgIC8vIEhUTUwg
RXZlbnRzXG5cdCAgICAgICAgLy8gQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9pbmRl
eC5odG1sI2V2ZW50cy0wXG5cdCAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY0V2
ZW50O1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICd0b3BLZXlQcmVzcyc6XG5cdCAg
ICAgICAgLy8gRmlyZWZveCBjcmVhdGVzIGEga2V5cHJlc3MgZXZlbnQgZm9yIGZ1bmN0aW9uIGtl
eXMgdG9vLiBUaGlzIHJlbW92ZXNcblx0ICAgICAgICAvLyB0aGUgdW53YW50ZWQga2V5cHJlc3Mg
ZXZlbnRzLiBFbnRlciBpcyBob3dldmVyIGJvdGggcHJpbnRhYmxlIGFuZFxuXHQgICAgICAgIC8v
IG5vbi1wcmludGFibGUuIE9uZSB3b3VsZCBleHBlY3QgVGFiIHRvIGJlIGFzIHdlbGwgKGJ1dCBp
dCBpc24ndCkuXG5cdCAgICAgICAgaWYgKGdldEV2ZW50Q2hhckNvZGUobmF0aXZlRXZlbnQpID09
PSAwKSB7XG5cdCAgICAgICAgICByZXR1cm4gbnVsbDtcblx0ICAgICAgICB9XG5cdCAgICAgIC8q
IGZhbGxzIHRocm91Z2ggKi9cblx0ICAgICAgY2FzZSAndG9wS2V5RG93bic6XG5cdCAgICAgIGNh
c2UgJ3RvcEtleVVwJzpcblx0ICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljS2V5
Ym9hcmRFdmVudDtcblx0ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSAndG9wQmx1cic6XG5c
dCAgICAgIGNhc2UgJ3RvcEZvY3VzJzpcblx0ICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3lu
dGhldGljRm9jdXNFdmVudDtcblx0ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSAndG9wQ2xp
Y2snOlxuXHQgICAgICAgIC8vIEZpcmVmb3ggY3JlYXRlcyBhIGNsaWNrIGV2ZW50IG9uIHJpZ2h0
IG1vdXNlIGNsaWNrcy4gVGhpcyByZW1vdmVzIHRoZVxuXHQgICAgICAgIC8vIHVud2FudGVkIGNs
aWNrIGV2ZW50cy5cblx0ICAgICAgICBpZiAobmF0aXZlRXZlbnQuYnV0dG9uID09PSAyKSB7XG5c
dCAgICAgICAgICByZXR1cm4gbnVsbDtcblx0ICAgICAgICB9XG5cdCAgICAgIC8qIGZhbGxzIHRo
cm91Z2ggKi9cblx0ICAgICAgY2FzZSAndG9wRG91YmxlQ2xpY2snOlxuXHQgICAgICBjYXNlICd0
b3BNb3VzZURvd24nOlxuXHQgICAgICBjYXNlICd0b3BNb3VzZU1vdmUnOlxuXHQgICAgICBjYXNl
ICd0b3BNb3VzZVVwJzpcblx0ICAgICAgLy8gVE9ETzogRGlzYWJsZWQgZWxlbWVudHMgc2hvdWxk
IG5vdCByZXNwb25kIHRvIG1vdXNlIGV2ZW50c1xuXHQgICAgICAvKiBmYWxscyB0aHJvdWdoICov
XG5cdCAgICAgIGNhc2UgJ3RvcE1vdXNlT3V0Jzpcblx0ICAgICAgY2FzZSAndG9wTW91c2VPdmVy
Jzpcblx0ICAgICAgY2FzZSAndG9wQ29udGV4dE1lbnUnOlxuXHQgICAgICAgIEV2ZW50Q29uc3Ry
dWN0b3IgPSBTeW50aGV0aWNNb3VzZUV2ZW50O1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBj
YXNlICd0b3BEcmFnJzpcblx0ICAgICAgY2FzZSAndG9wRHJhZ0VuZCc6XG5cdCAgICAgIGNhc2Ug
J3RvcERyYWdFbnRlcic6XG5cdCAgICAgIGNhc2UgJ3RvcERyYWdFeGl0Jzpcblx0ICAgICAgY2Fz
ZSAndG9wRHJhZ0xlYXZlJzpcblx0ICAgICAgY2FzZSAndG9wRHJhZ092ZXInOlxuXHQgICAgICBj
YXNlICd0b3BEcmFnU3RhcnQnOlxuXHQgICAgICBjYXNlICd0b3BEcm9wJzpcblx0ICAgICAgICBF
dmVudENvbnN0cnVjdG9yID0gU3ludGhldGljRHJhZ0V2ZW50O1xuXHQgICAgICAgIGJyZWFrO1xu
XHQgICAgICBjYXNlICd0b3BUb3VjaENhbmNlbCc6XG5cdCAgICAgIGNhc2UgJ3RvcFRvdWNoRW5k
Jzpcblx0ICAgICAgY2FzZSAndG9wVG91Y2hNb3ZlJzpcblx0ICAgICAgY2FzZSAndG9wVG91Y2hT
dGFydCc6XG5cdCAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY1RvdWNoRXZlbnQ7
XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIGNhc2UgJ3RvcEFuaW1hdGlvbkVuZCc6XG5cdCAg
ICAgIGNhc2UgJ3RvcEFuaW1hdGlvbkl0ZXJhdGlvbic6XG5cdCAgICAgIGNhc2UgJ3RvcEFuaW1h
dGlvblN0YXJ0Jzpcblx0ICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljQW5pbWF0
aW9uRXZlbnQ7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIGNhc2UgJ3RvcFRyYW5zaXRpb25F
bmQnOlxuXHQgICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNUcmFuc2l0aW9uRXZl
bnQ7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIGNhc2UgJ3RvcFNjcm9sbCc6XG5cdCAgICAg
ICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY1VJRXZlbnQ7XG5cdCAgICAgICAgYnJlYWs7
XG5cdCAgICAgIGNhc2UgJ3RvcFdoZWVsJzpcblx0ICAgICAgICBFdmVudENvbnN0cnVjdG9yID0g
U3ludGhldGljV2hlZWxFdmVudDtcblx0ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSAndG9w
Q29weSc6XG5cdCAgICAgIGNhc2UgJ3RvcEN1dCc6XG5cdCAgICAgIGNhc2UgJ3RvcFBhc3RlJzpc
blx0ICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljQ2xpcGJvYXJkRXZlbnQ7XG5c
dCAgICAgICAgYnJlYWs7XG5cdCAgICB9XG5cdCAgICAhRXZlbnRDb25zdHJ1Y3RvciA/ICBmYWxz
ZSA/IGludmFyaWFudChmYWxzZSwgJ1NpbXBsZUV2ZW50UGx1Z2luOiBVbmhhbmRsZWQgZXZlbnQg
dHlwZSwgYCVzYC4nLCB0b3BMZXZlbFR5cGUpIDogX3Byb2RJbnZhcmlhbnQoJzg2JywgdG9wTGV2
ZWxUeXBlKSA6IHZvaWQgMDtcblx0ICAgIHZhciBldmVudCA9IEV2ZW50Q29uc3RydWN0b3IuZ2V0
UG9vbGVkKGRpc3BhdGNoQ29uZmlnLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZl
bnRUYXJnZXQpO1xuXHQgICAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNw
YXRjaGVzKGV2ZW50KTtcblx0ICAgIHJldHVybiBldmVudDtcblx0ICB9LFxuXHRcblx0ICBkaWRQ
dXRMaXN0ZW5lcjogZnVuY3Rpb24gKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyKSB7
XG5cdCAgICAvLyBNb2JpbGUgU2FmYXJpIGRvZXMgbm90IGZpcmUgcHJvcGVybHkgYnViYmxlIGNs
aWNrIGV2ZW50cyBvblxuXHQgICAgLy8gbm9uLWludGVyYWN0aXZlIGVsZW1lbnRzLCB3aGljaCBt
ZWFucyBkZWxlZ2F0ZWQgY2xpY2sgbGlzdGVuZXJzIGRvIG5vdFxuXHQgICAgLy8gZmlyZS4gVGhl
IHdvcmthcm91bmQgZm9yIHRoaXMgYnVnIGludm9sdmVzIGF0dGFjaGluZyBhbiBlbXB0eSBjbGlj
a1xuXHQgICAgLy8gbGlzdGVuZXIgb24gdGhlIHRhcmdldCBub2RlLlxuXHQgICAgLy8gaHR0cDov
L3d3dy5xdWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMTAvMDkvY2xpY2tfZXZlbnRfZGVs
Lmh0bWxcblx0ICAgIGlmIChyZWdpc3RyYXRpb25OYW1lID09PSAnb25DbGljaycgJiYgIWlzSW50
ZXJhY3RpdmUoaW5zdC5fdGFnKSkge1xuXHQgICAgICB2YXIga2V5ID0gZ2V0RGljdGlvbmFyeUtl
eShpbnN0KTtcblx0ICAgICAgdmFyIG5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9k
ZUZyb21JbnN0YW5jZShpbnN0KTtcblx0ICAgICAgaWYgKCFvbkNsaWNrTGlzdGVuZXJzW2tleV0p
IHtcblx0ICAgICAgICBvbkNsaWNrTGlzdGVuZXJzW2tleV0gPSBFdmVudExpc3RlbmVyLmxpc3Rl
bihub2RlLCAnY2xpY2snLCBlbXB0eUZ1bmN0aW9uKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQg
IH0sXG5cdFxuXHQgIHdpbGxEZWxldGVMaXN0ZW5lcjogZnVuY3Rpb24gKGluc3QsIHJlZ2lzdHJh
dGlvbk5hbWUpIHtcblx0ICAgIGlmIChyZWdpc3RyYXRpb25OYW1lID09PSAnb25DbGljaycgJiYg
IWlzSW50ZXJhY3RpdmUoaW5zdC5fdGFnKSkge1xuXHQgICAgICB2YXIga2V5ID0gZ2V0RGljdGlv
bmFyeUtleShpbnN0KTtcblx0ICAgICAgb25DbGlja0xpc3RlbmVyc1trZXldLnJlbW92ZSgpO1xu
XHQgICAgICBkZWxldGUgb25DbGlja0xpc3RlbmVyc1trZXldO1xuXHQgICAgfVxuXHQgIH1cblx0
fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gU2ltcGxlRXZlbnRQbHVnaW47XG5cbi8qKiovIH0s
XG4vKiAxNjcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3Jl
cXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxu
XHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBTeW50aGV0aWNFdmVudCA9IF9f
d2VicGFja19yZXF1aXJlX18oMTApO1xuXHRcblx0LyoqXG5cdCAqIEBpbnRlcmZhY2UgRXZlbnRc
blx0ICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWFuaW1hdGlvbnMvI0FuaW1hdGlv
bkV2ZW50LWludGVyZmFjZVxuXHQgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3Jn
L2VuLVVTL2RvY3MvV2ViL0FQSS9BbmltYXRpb25FdmVudFxuXHQgKi9cblx0dmFyIEFuaW1hdGlv
bkV2ZW50SW50ZXJmYWNlID0ge1xuXHQgIGFuaW1hdGlvbk5hbWU6IG51bGwsXG5cdCAgZWxhcHNl
ZFRpbWU6IG51bGwsXG5cdCAgcHNldWRvRWxlbWVudDogbnVsbFxuXHR9O1xuXHRcblx0LyoqXG5c
dCAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8g
ZGlzcGF0Y2ggdGhpcyBldmVudC5cblx0ICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2Vy
IE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuXHQgKiBAcGFyYW0ge29iamVj
dH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG5cdCAqIEBleHRlbmRzIHtTeW50
aGV0aWNFdmVudH1cblx0ICovXG5cdGZ1bmN0aW9uIFN5bnRoZXRpY0FuaW1hdGlvbkV2ZW50KGRp
c3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFy
Z2V0KSB7XG5cdCAgcmV0dXJuIFN5bnRoZXRpY0V2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25m
aWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuXHR9
XG5cdFxuXHRTeW50aGV0aWNFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljQW5pbWF0aW9uRXZl
bnQsIEFuaW1hdGlvbkV2ZW50SW50ZXJmYWNlKTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gU3lu
dGhldGljQW5pbWF0aW9uRXZlbnQ7XG5cbi8qKiovIH0sXG4vKiAxNjggKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0
Jztcblx0XG5cdHZhciBTeW50aGV0aWNFdmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMTApO1xu
XHRcblx0LyoqXG5cdCAqIEBpbnRlcmZhY2UgRXZlbnRcblx0ICogQHNlZSBodHRwOi8vd3d3Lncz
Lm9yZy9UUi9jbGlwYm9hcmQtYXBpcy9cblx0ICovXG5cdHZhciBDbGlwYm9hcmRFdmVudEludGVy
ZmFjZSA9IHtcblx0ICBjbGlwYm9hcmREYXRhOiBmdW5jdGlvbiAoZXZlbnQpIHtcblx0ICAgIHJl
dHVybiAnY2xpcGJvYXJkRGF0YScgaW4gZXZlbnQgPyBldmVudC5jbGlwYm9hcmREYXRhIDogd2lu
ZG93LmNsaXBib2FyZERhdGE7XG5cdCAgfVxuXHR9O1xuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7
b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhp
cyBldmVudC5cblx0ICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVu
dGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuXHQgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZl
bnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG5cdCAqIEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50
fVxuXHQgKi9cblx0ZnVuY3Rpb24gU3ludGhldGljQ2xpcGJvYXJkRXZlbnQoZGlzcGF0Y2hDb25m
aWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcblx0
ICByZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0
Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cdH1cblx0XG5cdFN5
bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNDbGlwYm9hcmRFdmVudCwgQ2xpcGJv
YXJkRXZlbnRJbnRlcmZhY2UpO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNDbGlw
Ym9hcmRFdmVudDtcblxuLyoqKi8gfSxcbi8qIDE2OSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0
dmFyIFN5bnRoZXRpY0V2ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMCk7XG5cdFxuXHQvKipc
blx0ICogQGludGVyZmFjZSBFdmVudFxuXHQgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RP
TS1MZXZlbC0zLUV2ZW50cy8jZXZlbnRzLWNvbXBvc2l0aW9uZXZlbnRzXG5cdCAqL1xuXHR2YXIg
Q29tcG9zaXRpb25FdmVudEludGVyZmFjZSA9IHtcblx0ICBkYXRhOiBudWxsXG5cdH07XG5cdFxu
XHQvKipcblx0ICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24g
dXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0
Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG5cdCAqIEBwYXJh
bSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cblx0ICogQGV4dGVu
ZHMge1N5bnRoZXRpY1VJRXZlbnR9XG5cdCAqL1xuXHRmdW5jdGlvbiBTeW50aGV0aWNDb21wb3Np
dGlvbkV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5h
dGl2ZUV2ZW50VGFyZ2V0KSB7XG5cdCAgcmV0dXJuIFN5bnRoZXRpY0V2ZW50LmNhbGwodGhpcywg
ZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRU
YXJnZXQpO1xuXHR9XG5cdFxuXHRTeW50aGV0aWNFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGlj
Q29tcG9zaXRpb25FdmVudCwgQ29tcG9zaXRpb25FdmVudEludGVyZmFjZSk7XG5cdFxuXHRtb2R1
bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQ7XG5cbi8qKiovIH0sXG4vKiAx
NzAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
Xykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9c
blx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBTeW50aGV0aWNNb3VzZUV2ZW50ID0gX193
ZWJwYWNrX3JlcXVpcmVfXygyNik7XG5cdFxuXHQvKipcblx0ICogQGludGVyZmFjZSBEcmFnRXZl
bnRcblx0ICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvXG5c
dCAqL1xuXHR2YXIgRHJhZ0V2ZW50SW50ZXJmYWNlID0ge1xuXHQgIGRhdGFUcmFuc2ZlcjogbnVs
bFxuXHR9O1xuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBD
b25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cblx0ICogQHBhcmFtIHtz
dHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0
LlxuXHQgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQu
XG5cdCAqIEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fVxuXHQgKi9cblx0ZnVuY3Rpb24gU3lu
dGhldGljRHJhZ0V2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZl
bnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG5cdCAgcmV0dXJuIFN5bnRoZXRpY01vdXNlRXZlbnQu
Y2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBu
YXRpdmVFdmVudFRhcmdldCk7XG5cdH1cblx0XG5cdFN5bnRoZXRpY01vdXNlRXZlbnQuYXVnbWVu
dENsYXNzKFN5bnRoZXRpY0RyYWdFdmVudCwgRHJhZ0V2ZW50SW50ZXJmYWNlKTtcblx0XG5cdG1v
ZHVsZS5leHBvcnRzID0gU3ludGhldGljRHJhZ0V2ZW50O1xuXG4vKioqLyB9LFxuLyogMTcxICov
XG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtc
blxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxu
XHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgU3ludGhldGljVUlFdmVudCA9IF9fd2VicGFja19y
ZXF1aXJlX18oMjIpO1xuXHRcblx0LyoqXG5cdCAqIEBpbnRlcmZhY2UgRm9jdXNFdmVudFxuXHQg
KiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy9cblx0ICovXG5c
dHZhciBGb2N1c0V2ZW50SW50ZXJmYWNlID0ge1xuXHQgIHJlbGF0ZWRUYXJnZXQ6IG51bGxcblx0
fTtcblx0XG5cdC8qKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmln
dXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG5cdCAqIEBwYXJhbSB7c3RyaW5n
fSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cblx0
ICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuXHQg
KiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH1cblx0ICovXG5cdGZ1bmN0aW9uIFN5bnRoZXRp
Y0ZvY3VzRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwg
bmF0aXZlRXZlbnRUYXJnZXQpIHtcblx0ICByZXR1cm4gU3ludGhldGljVUlFdmVudC5jYWxsKHRo
aXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2
ZW50VGFyZ2V0KTtcblx0fVxuXHRcblx0U3ludGhldGljVUlFdmVudC5hdWdtZW50Q2xhc3MoU3lu
dGhldGljRm9jdXNFdmVudCwgRm9jdXNFdmVudEludGVyZmFjZSk7XG5cdFxuXHRtb2R1bGUuZXhw
b3J0cyA9IFN5bnRoZXRpY0ZvY3VzRXZlbnQ7XG5cbi8qKiovIH0sXG4vKiAxNzIgKi9cbi8qKiov
IGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8q
KlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ug
c3RyaWN0Jztcblx0XG5cdHZhciBTeW50aGV0aWNFdmVudCA9IF9fd2VicGFja19yZXF1aXJlX18o
MTApO1xuXHRcblx0LyoqXG5cdCAqIEBpbnRlcmZhY2UgRXZlbnRcblx0ICogQHNlZSBodHRwOi8v
d3d3LnczLm9yZy9UUi8yMDEzL1dELURPTS1MZXZlbC0zLUV2ZW50cy0yMDEzMTEwNVxuXHQgKiAg
ICAgIC8jZXZlbnRzLWlucHV0ZXZlbnRzXG5cdCAqL1xuXHR2YXIgSW5wdXRFdmVudEludGVyZmFj
ZSA9IHtcblx0ICBkYXRhOiBudWxsXG5cdH07XG5cdFxuXHQvKipcblx0ICogQHBhcmFtIHtvYmpl
Y3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2
ZW50LlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5
aW5nIHRoZSBldmVudCB0YXJnZXQuXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBO
YXRpdmUgYnJvd3NlciBldmVudC5cblx0ICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9XG5c
dCAqL1xuXHRmdW5jdGlvbiBTeW50aGV0aWNJbnB1dEV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNw
YXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG5cdCAgcmV0dXJu
IFN5bnRoZXRpY0V2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2Vy
LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuXHR9XG5cdFxuXHRTeW50aGV0aWNF
dmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljSW5wdXRFdmVudCwgSW5wdXRFdmVudEludGVyZmFj
ZSk7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0lucHV0RXZlbnQ7XG5cbi8qKiov
IH0sXG4vKiAxNzMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNr
X3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQg
KlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBTeW50aGV0aWNVSUV2ZW50
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMik7XG5cdFxuXHR2YXIgZ2V0RXZlbnRDaGFyQ29kZSA9
IF9fd2VicGFja19yZXF1aXJlX18oNDQpO1xuXHR2YXIgZ2V0RXZlbnRLZXkgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDE4MSk7XG5cdHZhciBnZXRFdmVudE1vZGlmaWVyU3RhdGUgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDQ1KTtcblx0XG5cdC8qKlxuXHQgKiBAaW50ZXJmYWNlIEtleWJvYXJkRXZlbnRc
blx0ICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvXG5cdCAq
L1xuXHR2YXIgS2V5Ym9hcmRFdmVudEludGVyZmFjZSA9IHtcblx0ICBrZXk6IGdldEV2ZW50S2V5
LFxuXHQgIGxvY2F0aW9uOiBudWxsLFxuXHQgIGN0cmxLZXk6IG51bGwsXG5cdCAgc2hpZnRLZXk6
IG51bGwsXG5cdCAgYWx0S2V5OiBudWxsLFxuXHQgIG1ldGFLZXk6IG51bGwsXG5cdCAgcmVwZWF0
OiBudWxsLFxuXHQgIGxvY2FsZTogbnVsbCxcblx0ICBnZXRNb2RpZmllclN0YXRlOiBnZXRFdmVu
dE1vZGlmaWVyU3RhdGUsXG5cdCAgLy8gTGVnYWN5IEludGVyZmFjZVxuXHQgIGNoYXJDb2RlOiBm
dW5jdGlvbiAoZXZlbnQpIHtcblx0ICAgIC8vIGBjaGFyQ29kZWAgaXMgdGhlIHJlc3VsdCBvZiBh
IEtleVByZXNzIGV2ZW50IGFuZCByZXByZXNlbnRzIHRoZSB2YWx1ZSBvZlxuXHQgICAgLy8gdGhl
IGFjdHVhbCBwcmludGFibGUgY2hhcmFjdGVyLlxuXHRcblx0ICAgIC8vIEtleVByZXNzIGlzIGRl
cHJlY2F0ZWQsIGJ1dCBpdHMgcmVwbGFjZW1lbnQgaXMgbm90IHlldCBmaW5hbCBhbmQgbm90XG5c
dCAgICAvLyBpbXBsZW1lbnRlZCBpbiBhbnkgbWFqb3IgYnJvd3Nlci4gT25seSBLZXlQcmVzcyBo
YXMgY2hhckNvZGUuXG5cdCAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2tleXByZXNzJykge1xuXHQg
ICAgICByZXR1cm4gZ2V0RXZlbnRDaGFyQ29kZShldmVudCk7XG5cdCAgICB9XG5cdCAgICByZXR1
cm4gMDtcblx0ICB9LFxuXHQgIGtleUNvZGU6IGZ1bmN0aW9uIChldmVudCkge1xuXHQgICAgLy8g
YGtleUNvZGVgIGlzIHRoZSByZXN1bHQgb2YgYSBLZXlEb3duL1VwIGV2ZW50IGFuZCByZXByZXNl
bnRzIHRoZSB2YWx1ZSBvZlxuXHQgICAgLy8gcGh5c2ljYWwga2V5Ym9hcmQga2V5LlxuXHRcblx0
ICAgIC8vIFRoZSBhY3R1YWwgbWVhbmluZyBvZiB0aGUgdmFsdWUgZGVwZW5kcyBvbiB0aGUgdXNl
cnMnIGtleWJvYXJkIGxheW91dFxuXHQgICAgLy8gd2hpY2ggY2Fubm90IGJlIGRldGVjdGVkLiBB
c3N1bWluZyB0aGF0IGl0IGlzIGEgVVMga2V5Ym9hcmQgbGF5b3V0XG5cdCAgICAvLyBwcm92aWRl
cyBhIHN1cnByaXNpbmdseSBhY2N1cmF0ZSBtYXBwaW5nIGZvciBVUyBhbmQgRXVyb3BlYW4gdXNl
cnMuXG5cdCAgICAvLyBEdWUgdG8gdGhpcywgaXQgaXMgbGVmdCB0byB0aGUgdXNlciB0byBpbXBs
ZW1lbnQgYXQgdGhpcyB0aW1lLlxuXHQgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdrZXlkb3duJyB8
fCBldmVudC50eXBlID09PSAna2V5dXAnKSB7XG5cdCAgICAgIHJldHVybiBldmVudC5rZXlDb2Rl
O1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIDA7XG5cdCAgfSxcblx0ICB3aGljaDogZnVuY3Rpb24g
KGV2ZW50KSB7XG5cdCAgICAvLyBgd2hpY2hgIGlzIGFuIGFsaWFzIGZvciBlaXRoZXIgYGtleUNv
ZGVgIG9yIGBjaGFyQ29kZWAgZGVwZW5kaW5nIG9uIHRoZVxuXHQgICAgLy8gdHlwZSBvZiB0aGUg
ZXZlbnQuXG5cdCAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2tleXByZXNzJykge1xuXHQgICAgICBy
ZXR1cm4gZ2V0RXZlbnRDaGFyQ29kZShldmVudCk7XG5cdCAgICB9XG5cdCAgICBpZiAoZXZlbnQu
dHlwZSA9PT0gJ2tleWRvd24nIHx8IGV2ZW50LnR5cGUgPT09ICdrZXl1cCcpIHtcblx0ICAgICAg
cmV0dXJuIGV2ZW50LmtleUNvZGU7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gMDtcblx0ICB9XG5c
dH07XG5cdFxuXHQvKipcblx0ICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZp
Z3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuXHQgKiBAcGFyYW0ge3N0cmlu
Z30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG5c
dCAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cblx0
ICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9XG5cdCAqL1xuXHRmdW5jdGlvbiBTeW50aGV0
aWNLZXlib2FyZEV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZl
bnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG5cdCAgcmV0dXJuIFN5bnRoZXRpY1VJRXZlbnQuY2Fs
bCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRp
dmVFdmVudFRhcmdldCk7XG5cdH1cblx0XG5cdFN5bnRoZXRpY1VJRXZlbnQuYXVnbWVudENsYXNz
KFN5bnRoZXRpY0tleWJvYXJkRXZlbnQsIEtleWJvYXJkRXZlbnRJbnRlcmZhY2UpO1xuXHRcblx0
bW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNLZXlib2FyZEV2ZW50O1xuXG4vKioqLyB9LFxuLyog
MTc0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJl
X18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5c
dCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICov
XG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgU3ludGhldGljVUlFdmVudCA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMjIpO1xuXHRcblx0dmFyIGdldEV2ZW50TW9kaWZpZXJTdGF0ZSA9IF9f
d2VicGFja19yZXF1aXJlX18oNDUpO1xuXHRcblx0LyoqXG5cdCAqIEBpbnRlcmZhY2UgVG91Y2hF
dmVudFxuXHQgKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL3RvdWNoLWV2ZW50cy9cblx0ICov
XG5cdHZhciBUb3VjaEV2ZW50SW50ZXJmYWNlID0ge1xuXHQgIHRvdWNoZXM6IG51bGwsXG5cdCAg
dGFyZ2V0VG91Y2hlczogbnVsbCxcblx0ICBjaGFuZ2VkVG91Y2hlczogbnVsbCxcblx0ICBhbHRL
ZXk6IG51bGwsXG5cdCAgbWV0YUtleTogbnVsbCxcblx0ICBjdHJsS2V5OiBudWxsLFxuXHQgIHNo
aWZ0S2V5OiBudWxsLFxuXHQgIGdldE1vZGlmaWVyU3RhdGU6IGdldEV2ZW50TW9kaWZpZXJTdGF0
ZVxuXHR9O1xuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBD
b25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cblx0ICogQHBhcmFtIHtz
dHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0
LlxuXHQgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQu
XG5cdCAqIEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fVxuXHQgKi9cblx0ZnVuY3Rpb24gU3lu
dGhldGljVG91Y2hFdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2
ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuXHQgIHJldHVybiBTeW50aGV0aWNVSUV2ZW50LmNh
bGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0
aXZlRXZlbnRUYXJnZXQpO1xuXHR9XG5cdFxuXHRTeW50aGV0aWNVSUV2ZW50LmF1Z21lbnRDbGFz
cyhTeW50aGV0aWNUb3VjaEV2ZW50LCBUb3VjaEV2ZW50SW50ZXJmYWNlKTtcblx0XG5cdG1vZHVs
ZS5leHBvcnRzID0gU3ludGhldGljVG91Y2hFdmVudDtcblxuLyoqKi8gfSxcbi8qIDE3NSAqL1xu
LyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5c
blx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0
J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIFN5bnRoZXRpY0V2ZW50ID0gX193ZWJwYWNrX3JlcXVp
cmVfXygxMCk7XG5cdFxuXHQvKipcblx0ICogQGludGVyZmFjZSBFdmVudFxuXHQgKiBAc2VlIGh0
dHA6Ly93d3cudzMub3JnL1RSLzIwMDkvV0QtY3NzMy10cmFuc2l0aW9ucy0yMDA5MDMyMC8jdHJh
bnNpdGlvbi1ldmVudHMtXG5cdCAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcv
ZW4tVVMvZG9jcy9XZWIvQVBJL1RyYW5zaXRpb25FdmVudFxuXHQgKi9cblx0dmFyIFRyYW5zaXRp
b25FdmVudEludGVyZmFjZSA9IHtcblx0ICBwcm9wZXJ0eU5hbWU6IG51bGwsXG5cdCAgZWxhcHNl
ZFRpbWU6IG51bGwsXG5cdCAgcHNldWRvRWxlbWVudDogbnVsbFxuXHR9O1xuXHRcblx0LyoqXG5c
dCAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8g
ZGlzcGF0Y2ggdGhpcyBldmVudC5cblx0ICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2Vy
IE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuXHQgKiBAcGFyYW0ge29iamVj
dH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG5cdCAqIEBleHRlbmRzIHtTeW50
aGV0aWNFdmVudH1cblx0ICovXG5cdGZ1bmN0aW9uIFN5bnRoZXRpY1RyYW5zaXRpb25FdmVudChk
aXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRh
cmdldCkge1xuXHQgIHJldHVybiBTeW50aGV0aWNFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29u
ZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcblx0
fVxuXHRcblx0U3ludGhldGljRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY1RyYW5zaXRpb25F
dmVudCwgVHJhbnNpdGlvbkV2ZW50SW50ZXJmYWNlKTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0g
U3ludGhldGljVHJhbnNpdGlvbkV2ZW50O1xuXG4vKioqLyB9LFxuLyogMTc2ICovXG4vKioqLyBm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipc
blx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJp
Z2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0
cmljdCc7XG5cdFxuXHR2YXIgU3ludGhldGljTW91c2VFdmVudCA9IF9fd2VicGFja19yZXF1aXJl
X18oMjYpO1xuXHRcblx0LyoqXG5cdCAqIEBpbnRlcmZhY2UgV2hlZWxFdmVudFxuXHQgKiBAc2Vl
IGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy9cblx0ICovXG5cdHZhciBX
aGVlbEV2ZW50SW50ZXJmYWNlID0ge1xuXHQgIGRlbHRhWDogZnVuY3Rpb24gKGV2ZW50KSB7XG5c
dCAgICByZXR1cm4gJ2RlbHRhWCcgaW4gZXZlbnQgPyBldmVudC5kZWx0YVggOiAvLyBGYWxsYmFj
ayB0byBgd2hlZWxEZWx0YVhgIGZvciBXZWJraXQgYW5kIG5vcm1hbGl6ZSAocmlnaHQgaXMgcG9z
aXRpdmUpLlxuXHQgICAgJ3doZWVsRGVsdGFYJyBpbiBldmVudCA/IC1ldmVudC53aGVlbERlbHRh
WCA6IDA7XG5cdCAgfSxcblx0ICBkZWx0YVk6IGZ1bmN0aW9uIChldmVudCkge1xuXHQgICAgcmV0
dXJuICdkZWx0YVknIGluIGV2ZW50ID8gZXZlbnQuZGVsdGFZIDogLy8gRmFsbGJhY2sgdG8gYHdo
ZWVsRGVsdGFZYCBmb3IgV2Via2l0IGFuZCBub3JtYWxpemUgKGRvd24gaXMgcG9zaXRpdmUpLlxu
XHQgICAgJ3doZWVsRGVsdGFZJyBpbiBldmVudCA/IC1ldmVudC53aGVlbERlbHRhWSA6IC8vIEZh
bGxiYWNrIHRvIGB3aGVlbERlbHRhYCBmb3IgSUU8OSBhbmQgbm9ybWFsaXplIChkb3duIGlzIHBv
c2l0aXZlKS5cblx0ICAgICd3aGVlbERlbHRhJyBpbiBldmVudCA/IC1ldmVudC53aGVlbERlbHRh
IDogMDtcblx0ICB9LFxuXHQgIGRlbHRhWjogbnVsbCxcblx0XG5cdCAgLy8gQnJvd3NlcnMgd2l0
aG91dCBcImRlbHRhTW9kZVwiIGlzIHJlcG9ydGluZyBpbiByYXcgd2hlZWwgZGVsdGEgd2hlcmUg
b25lXG5cdCAgLy8gbm90Y2ggb24gdGhlIHNjcm9sbCBpcyBhbHdheXMgKy8tIDEyMCwgcm91Z2hs
eSBlcXVpdmFsZW50IHRvIHBpeGVscy5cblx0ICAvLyBBIGdvb2QgYXBwcm94aW1hdGlvbiBvZiBE
T01fREVMVEFfTElORSAoMSkgaXMgNSUgb2Ygdmlld3BvcnQgc2l6ZSBvclxuXHQgIC8vIH40MCBw
aXhlbHMsIGZvciBET01fREVMVEFfU0NSRUVOICgyKSBpdCBpcyA4Ny41JSBvZiB2aWV3cG9ydCBz
aXplLlxuXHQgIGRlbHRhTW9kZTogbnVsbFxuXHR9O1xuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7
b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhp
cyBldmVudC5cblx0ICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVu
dGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuXHQgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZl
bnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG5cdCAqIEBleHRlbmRzIHtTeW50aGV0aWNNb3VzZUV2
ZW50fVxuXHQgKi9cblx0ZnVuY3Rpb24gU3ludGhldGljV2hlZWxFdmVudChkaXNwYXRjaENvbmZp
ZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuXHQg
IHJldHVybiBTeW50aGV0aWNNb3VzZUV2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRp
c3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuXHR9XG5cdFxu
XHRTeW50aGV0aWNNb3VzZUV2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNXaGVlbEV2ZW50LCBX
aGVlbEV2ZW50SW50ZXJmYWNlKTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gU3ludGhldGljV2hl
ZWxFdmVudDtcblxuLyoqKi8gfSxcbi8qIDE3NyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBl
eHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5c
dCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBNT0QgPSA2NTUyMTtc
blx0XG5cdC8vIGFkbGVyMzIgaXMgbm90IGNyeXB0b2dyYXBoaWNhbGx5IHN0cm9uZywgYW5kIGlz
IG9ubHkgdXNlZCB0byBzYW5pdHkgY2hlY2sgdGhhdFxuXHQvLyBtYXJrdXAgZ2VuZXJhdGVkIG9u
IHRoZSBzZXJ2ZXIgbWF0Y2hlcyB0aGUgbWFya3VwIGdlbmVyYXRlZCBvbiB0aGUgY2xpZW50Llxu
XHQvLyBUaGlzIGltcGxlbWVudGF0aW9uIChhIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIFNoZWV0
SlMgdmVyc2lvbikgaGFzIGJlZW4gb3B0aW1pemVkXG5cdC8vIGZvciBvdXIgdXNlIGNhc2UsIGF0
IHRoZSBleHBlbnNlIG9mIGNvbmZvcm1pbmcgdG8gdGhlIGFkbGVyMzIgc3BlY2lmaWNhdGlvblxu
XHQvLyBmb3Igbm9uLWFzY2lpIGlucHV0cy5cblx0ZnVuY3Rpb24gYWRsZXIzMihkYXRhKSB7XG5c
dCAgdmFyIGEgPSAxO1xuXHQgIHZhciBiID0gMDtcblx0ICB2YXIgaSA9IDA7XG5cdCAgdmFyIGwg
PSBkYXRhLmxlbmd0aDtcblx0ICB2YXIgbSA9IGwgJiB+MHgzO1xuXHQgIHdoaWxlIChpIDwgbSkg
e1xuXHQgICAgdmFyIG4gPSBNYXRoLm1pbihpICsgNDA5NiwgbSk7XG5cdCAgICBmb3IgKDsgaSA8
IG47IGkgKz0gNCkge1xuXHQgICAgICBiICs9IChhICs9IGRhdGEuY2hhckNvZGVBdChpKSkgKyAo
YSArPSBkYXRhLmNoYXJDb2RlQXQoaSArIDEpKSArIChhICs9IGRhdGEuY2hhckNvZGVBdChpICsg
MikpICsgKGEgKz0gZGF0YS5jaGFyQ29kZUF0KGkgKyAzKSk7XG5cdCAgICB9XG5cdCAgICBhICU9
IE1PRDtcblx0ICAgIGIgJT0gTU9EO1xuXHQgIH1cblx0ICBmb3IgKDsgaSA8IGw7IGkrKykge1xu
XHQgICAgYiArPSBhICs9IGRhdGEuY2hhckNvZGVBdChpKTtcblx0ICB9XG5cdCAgYSAlPSBNT0Q7
XG5cdCAgYiAlPSBNT0Q7XG5cdCAgcmV0dXJuIGEgfCBiIDw8IDE2O1xuXHR9XG5cdFxuXHRtb2R1
bGUuZXhwb3J0cyA9IGFkbGVyMzI7XG5cbi8qKiovIH0sXG4vKiAxNzggKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0
Jztcblx0XG5cdHZhciBDU1NQcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oNTgpO1xuXHR2
YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cdFxuXHR2YXIgaXNVbml0bGVz
c051bWJlciA9IENTU1Byb3BlcnR5LmlzVW5pdGxlc3NOdW1iZXI7XG5cdHZhciBzdHlsZVdhcm5p
bmdzID0ge307XG5cdFxuXHQvKipcblx0ICogQ29udmVydCBhIHZhbHVlIGludG8gdGhlIHByb3Bl
ciBjc3Mgd3JpdGFibGUgdmFsdWUuIFRoZSBzdHlsZSBuYW1lIGBuYW1lYFxuXHQgKiBzaG91bGQg
YmUgbG9naWNhbCAobm8gaHlwaGVucyksIGFzIHNwZWNpZmllZFxuXHQgKiBpbiBgQ1NTUHJvcGVy
dHkuaXNVbml0bGVzc051bWJlcmAuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIENT
UyBwcm9wZXJ0eSBuYW1lIHN1Y2ggYXMgYHRvcE1hcmdpbmAuXG5cdCAqIEBwYXJhbSB7Kn0gdmFs
dWUgQ1NTIHByb3BlcnR5IHZhbHVlIHN1Y2ggYXMgYDEwcHhgLlxuXHQgKiBAcGFyYW0ge1JlYWN0
RE9NQ29tcG9uZW50fSBjb21wb25lbnRcblx0ICogQHJldHVybiB7c3RyaW5nfSBOb3JtYWxpemVk
IHN0eWxlIHZhbHVlIHdpdGggZGltZW5zaW9ucyBhcHBsaWVkLlxuXHQgKi9cblx0ZnVuY3Rpb24g
ZGFuZ2Vyb3VzU3R5bGVWYWx1ZShuYW1lLCB2YWx1ZSwgY29tcG9uZW50LCBpc0N1c3RvbVByb3Bl
cnR5KSB7XG5cdCAgLy8gTm90ZSB0aGF0IHdlJ3ZlIHJlbW92ZWQgZXNjYXBlVGV4dEZvckJyb3dz
ZXIoKSBjYWxscyBoZXJlIHNpbmNlIHRoZVxuXHQgIC8vIHdob2xlIHN0cmluZyB3aWxsIGJlIGVz
Y2FwZWQgd2hlbiB0aGUgYXR0cmlidXRlIGlzIGluamVjdGVkIGludG9cblx0ICAvLyB0aGUgbWFy
a3VwLiBJZiB5b3UgcHJvdmlkZSB1bnNhZmUgdXNlciBkYXRhIGhlcmUgdGhleSBjYW4gaW5qZWN0
XG5cdCAgLy8gYXJiaXRyYXJ5IENTUyB3aGljaCBtYXkgYmUgcHJvYmxlbWF0aWMgKEkgY291bGRu
J3QgcmVwcm8gdGhpcyk6XG5cdCAgLy8gaHR0cHM6Ly93d3cub3dhc3Aub3JnL2luZGV4LnBocC9Y
U1NfRmlsdGVyX0V2YXNpb25fQ2hlYXRfU2hlZXRcblx0ICAvLyBodHRwOi8vd3d3LnRoZXNwYW5u
ZXIuY28udWsvMjAwNy8xMS8yNi91bHRpbWF0ZS14c3MtY3NzLWluamVjdGlvbi9cblx0ICAvLyBU
aGlzIGlzIG5vdCBhbiBYU1MgaG9sZSBidXQgaW5zdGVhZCBhIHBvdGVudGlhbCBDU1MgaW5qZWN0
aW9uIGlzc3VlXG5cdCAgLy8gd2hpY2ggaGFzIGxlYWQgdG8gYSBncmVhdGVyIGRpc2N1c3Npb24g
YWJvdXQgaG93IHdlJ3JlIGdvaW5nIHRvXG5cdCAgLy8gdHJ1c3QgVVJMcyBtb3ZpbmcgZm9yd2Fy
ZC4gU2VlICMyMTE1OTAxXG5cdFxuXHQgIHZhciBpc0VtcHR5ID0gdmFsdWUgPT0gbnVsbCB8fCB0
eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJyB8fCB2YWx1ZSA9PT0gJyc7XG5cdCAgaWYgKGlzRW1w
dHkpIHtcblx0ICAgIHJldHVybiAnJztcblx0ICB9XG5cdFxuXHQgIHZhciBpc05vbk51bWVyaWMg
PSBpc05hTih2YWx1ZSk7XG5cdCAgaWYgKGlzQ3VzdG9tUHJvcGVydHkgfHwgaXNOb25OdW1lcmlj
IHx8IHZhbHVlID09PSAwIHx8IGlzVW5pdGxlc3NOdW1iZXIuaGFzT3duUHJvcGVydHkobmFtZSkg
JiYgaXNVbml0bGVzc051bWJlcltuYW1lXSkge1xuXHQgICAgcmV0dXJuICcnICsgdmFsdWU7IC8v
IGNhc3QgdG8gc3RyaW5nXG5cdCAgfVxuXHRcblx0ICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3Ry
aW5nJykge1xuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIC8vIEFsbG93ICcwJyB0byBwYXNz
IHRocm91Z2ggd2l0aG91dCB3YXJuaW5nLiAwIGlzIGFscmVhZHkgc3BlY2lhbCBhbmRcblx0ICAg
ICAgLy8gZG9lc24ndCByZXF1aXJlIHVuaXRzLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHdhcm4gYWJv
dXQgaXQuXG5cdCAgICAgIGlmIChjb21wb25lbnQgJiYgdmFsdWUgIT09ICcwJykge1xuXHQgICAg
ICAgIHZhciBvd25lciA9IGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuXHQgICAg
ICAgIHZhciBvd25lck5hbWUgPSBvd25lciA/IG93bmVyLmdldE5hbWUoKSA6IG51bGw7XG5cdCAg
ICAgICAgaWYgKG93bmVyTmFtZSAmJiAhc3R5bGVXYXJuaW5nc1tvd25lck5hbWVdKSB7XG5cdCAg
ICAgICAgICBzdHlsZVdhcm5pbmdzW293bmVyTmFtZV0gPSB7fTtcblx0ICAgICAgICB9XG5cdCAg
ICAgICAgdmFyIHdhcm5lZCA9IGZhbHNlO1xuXHQgICAgICAgIGlmIChvd25lck5hbWUpIHtcblx0
ICAgICAgICAgIHZhciB3YXJuaW5ncyA9IHN0eWxlV2FybmluZ3Nbb3duZXJOYW1lXTtcblx0ICAg
ICAgICAgIHdhcm5lZCA9IHdhcm5pbmdzW25hbWVdO1xuXHQgICAgICAgICAgaWYgKCF3YXJuZWQp
IHtcblx0ICAgICAgICAgICAgd2FybmluZ3NbbmFtZV0gPSB0cnVlO1xuXHQgICAgICAgICAgfVxu
XHQgICAgICAgIH1cblx0ICAgICAgICBpZiAoIXdhcm5lZCkge1xuXHQgICAgICAgICAgcHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdhIGAlc2Ag
dGFnIChvd25lcjogYCVzYCkgd2FzIHBhc3NlZCBhIG51bWVyaWMgc3RyaW5nIHZhbHVlICcgKyAn
Zm9yIENTUyBwcm9wZXJ0eSBgJXNgICh2YWx1ZTogYCVzYCkgd2hpY2ggd2lsbCBiZSB0cmVhdGVk
ICcgKyAnYXMgYSB1bml0bGVzcyBudW1iZXIgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBSZWFjdC4n
LCBjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50LnR5cGUsIG93bmVyTmFtZSB8fCAndW5rbm93bics
IG5hbWUsIHZhbHVlKSA6IHZvaWQgMDtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH1c
blx0ICAgIHZhbHVlID0gdmFsdWUudHJpbSgpO1xuXHQgIH1cblx0ICByZXR1cm4gdmFsdWUgKyAn
cHgnO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGRhbmdlcm91c1N0eWxlVmFsdWU7XG5c
bi8qKiovIH0sXG4vKiAxNzkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193
ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFy
aWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cdFxuXHR2YXIgUmVhY3RDdXJyZW50T3du
ZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKTtcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJl
ZSA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG5cdHZhciBSZWFjdEluc3RhbmNlTWFwID0gX193
ZWJwYWNrX3JlcXVpcmVfXygyMSk7XG5cdFxuXHR2YXIgZ2V0SG9zdENvbXBvbmVudEZyb21Db21w
b3NpdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcyKTtcblx0dmFyIGludmFyaWFudCA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMSk7XG5cdHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygy
KTtcblx0XG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBET00gbm9kZSByZW5kZXJlZCBieSB0aGlz
IGVsZW1lbnQuXG5cdCAqXG5cdCAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFj
dC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdGRvbS5maW5kZG9tbm9kZVxuXHQgKlxuXHQg
KiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fERPTUVsZW1lbnR9IGNvbXBvbmVudE9yRWxlbWVudFxu
XHQgKiBAcmV0dXJuIHs/RE9NRWxlbWVudH0gVGhlIHJvb3Qgbm9kZSBvZiB0aGlzIGVsZW1lbnQu
XG5cdCAqL1xuXHRmdW5jdGlvbiBmaW5kRE9NTm9kZShjb21wb25lbnRPckVsZW1lbnQpIHtcblx0
ICBpZiAoZmFsc2UpIHtcblx0ICAgIHZhciBvd25lciA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJl
bnQ7XG5cdCAgICBpZiAob3duZXIgIT09IG51bGwpIHtcblx0ICAgICAgcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcob3duZXIuX3dhcm5lZEFib3V0UmVmc0lu
UmVuZGVyLCAnJXMgaXMgYWNjZXNzaW5nIGZpbmRET01Ob2RlIGluc2lkZSBpdHMgcmVuZGVyKCku
ICcgKyAncmVuZGVyKCkgc2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlvbiBvZiBwcm9wcyBhbmQgc3Rh
dGUuIEl0IHNob3VsZCAnICsgJ25ldmVyIGFjY2VzcyBzb21ldGhpbmcgdGhhdCByZXF1aXJlcyBz
dGFsZSBkYXRhIGZyb20gdGhlIHByZXZpb3VzICcgKyAncmVuZGVyLCBzdWNoIGFzIHJlZnMuIE1v
dmUgdGhpcyBsb2dpYyB0byBjb21wb25lbnREaWRNb3VudCBhbmQgJyArICdjb21wb25lbnREaWRV
cGRhdGUgaW5zdGVhZC4nLCBvd25lci5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JykgOiB2b2lk
IDA7XG5cdCAgICAgIG93bmVyLl93YXJuZWRBYm91dFJlZnNJblJlbmRlciA9IHRydWU7XG5cdCAg
ICB9XG5cdCAgfVxuXHQgIGlmIChjb21wb25lbnRPckVsZW1lbnQgPT0gbnVsbCkge1xuXHQgICAg
cmV0dXJuIG51bGw7XG5cdCAgfVxuXHQgIGlmIChjb21wb25lbnRPckVsZW1lbnQubm9kZVR5cGUg
PT09IDEpIHtcblx0ICAgIHJldHVybiBjb21wb25lbnRPckVsZW1lbnQ7XG5cdCAgfVxuXHRcblx0
ICB2YXIgaW5zdCA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0KGNvbXBvbmVudE9yRWxlbWVudCk7XG5c
dCAgaWYgKGluc3QpIHtcblx0ICAgIGluc3QgPSBnZXRIb3N0Q29tcG9uZW50RnJvbUNvbXBvc2l0
ZShpbnN0KTtcblx0ICAgIHJldHVybiBpbnN0ID8gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5v
ZGVGcm9tSW5zdGFuY2UoaW5zdCkgOiBudWxsO1xuXHQgIH1cblx0XG5cdCAgaWYgKHR5cGVvZiBj
b21wb25lbnRPckVsZW1lbnQucmVuZGVyID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAgdHJ1ZSA/
ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ2ZpbmRET01Ob2RlIHdhcyBjYWxsZWQgb24gYW4g
dW5tb3VudGVkIGNvbXBvbmVudC4nKSA6IF9wcm9kSW52YXJpYW50KCc0NCcpIDogdm9pZCAwO1xu
XHQgIH0gZWxzZSB7XG5cdCAgICAgdHJ1ZSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0Vs
ZW1lbnQgYXBwZWFycyB0byBiZSBuZWl0aGVyIFJlYWN0Q29tcG9uZW50IG5vciBET01Ob2RlIChr
ZXlzOiAlcyknLCBPYmplY3Qua2V5cyhjb21wb25lbnRPckVsZW1lbnQpKSA6IF9wcm9kSW52YXJp
YW50KCc0NScsIE9iamVjdC5rZXlzKGNvbXBvbmVudE9yRWxlbWVudCkpIDogdm9pZCAwO1xuXHQg
IH1cblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBmaW5kRE9NTm9kZTtcblxuLyoqKi8gfSxc
bi8qIDE4MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVx
dWlyZV9fKSB7XG5cblx0LyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKHByb2Nl
c3MpIHsvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogXG5cdCAq
L1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIEtleUVzY2FwZVV0aWxzID0gX193ZWJw
YWNrX3JlcXVpcmVfXygzOCk7XG5cdHZhciB0cmF2ZXJzZUFsbENoaWxkcmVuID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg3OCk7XG5cdHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtc
blx0XG5cdHZhciBSZWFjdENvbXBvbmVudFRyZWVIb29rO1xuXHRcblx0aWYgKHR5cGVvZiBwcm9j
ZXNzICE9PSAndW5kZWZpbmVkJyAmJiBwcm9jZXNzLmVudiAmJiAoXCJwcm9kdWN0aW9uXCIpID09
PSAndGVzdCcpIHtcblx0ICAvLyBUZW1wb3JhcnkgaGFjay5cblx0ICAvLyBJbmxpbmUgcmVxdWly
ZXMgZG9uJ3Qgd29yayB3ZWxsIHdpdGggSmVzdDpcblx0ICAvLyBodHRwczovL2dpdGh1Yi5jb20v
ZmFjZWJvb2svcmVhY3QvaXNzdWVzLzcyNDBcblx0ICAvLyBSZW1vdmUgdGhlIGlubGluZSByZXF1
aXJlcyB3aGVuIHdlIGRvbid0IG5lZWQgdGhlbSBhbnltb3JlOlxuXHQgIC8vIGh0dHBzOi8vZ2l0
aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzcxNzhcblx0ICBSZWFjdENvbXBvbmVudFRyZWVI
b29rID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5MCk7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBAcGFy
YW0ge2Z1bmN0aW9ufSB0cmF2ZXJzZUNvbnRleHQgQ29udGV4dCBwYXNzZWQgdGhyb3VnaCB0cmF2
ZXJzYWwuXG5cdCAqIEBwYXJhbSB7P1JlYWN0Q29tcG9uZW50fSBjaGlsZCBSZWFjdCBjaGlsZCBj
b21wb25lbnQuXG5cdCAqIEBwYXJhbSB7IXN0cmluZ30gbmFtZSBTdHJpbmcgbmFtZSBvZiBrZXkg
cGF0aCB0byBjaGlsZC5cblx0ICogQHBhcmFtIHtudW1iZXI9fSBzZWxmRGVidWdJRCBPcHRpb25h
bCBkZWJ1Z0lEIG9mIHRoZSBjdXJyZW50IGludGVybmFsIGluc3RhbmNlLlxuXHQgKi9cblx0ZnVu
Y3Rpb24gZmxhdHRlblNpbmdsZUNoaWxkSW50b0NvbnRleHQodHJhdmVyc2VDb250ZXh0LCBjaGls
ZCwgbmFtZSwgc2VsZkRlYnVnSUQpIHtcblx0ICAvLyBXZSBmb3VuZCBhIGNvbXBvbmVudCBpbnN0
YW5jZS5cblx0ICBpZiAodHJhdmVyc2VDb250ZXh0ICYmIHR5cGVvZiB0cmF2ZXJzZUNvbnRleHQg
PT09ICdvYmplY3QnKSB7XG5cdCAgICB2YXIgcmVzdWx0ID0gdHJhdmVyc2VDb250ZXh0O1xuXHQg
ICAgdmFyIGtleVVuaXF1ZSA9IHJlc3VsdFtuYW1lXSA9PT0gdW5kZWZpbmVkO1xuXHQgICAgaWYg
KGZhbHNlKSB7XG5cdCAgICAgIGlmICghUmVhY3RDb21wb25lbnRUcmVlSG9vaykge1xuXHQgICAg
ICAgIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSByZXF1aXJlKCdyZWFjdC9saWIvUmVhY3RDb21w
b25lbnRUcmVlSG9vaycpO1xuXHQgICAgICB9XG5cdCAgICAgIGlmICgha2V5VW5pcXVlKSB7XG5c
dCAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmco
ZmFsc2UsICdmbGF0dGVuQ2hpbGRyZW4oLi4uKTogRW5jb3VudGVyZWQgdHdvIGNoaWxkcmVuIHdp
dGggdGhlIHNhbWUga2V5LCAnICsgJ2Alc2AuIENoaWxkIGtleXMgbXVzdCBiZSB1bmlxdWU7IHdo
ZW4gdHdvIGNoaWxkcmVuIHNoYXJlIGEga2V5LCBvbmx5ICcgKyAndGhlIGZpcnN0IGNoaWxkIHdp
bGwgYmUgdXNlZC4lcycsIEtleUVzY2FwZVV0aWxzLnVuZXNjYXBlKG5hbWUpLCBSZWFjdENvbXBv
bmVudFRyZWVIb29rLmdldFN0YWNrQWRkZW5kdW1CeUlEKHNlbGZEZWJ1Z0lEKSkgOiB2b2lkIDA7
XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIGlmIChrZXlVbmlxdWUgJiYgY2hpbGQgIT0gbnVs
bCkge1xuXHQgICAgICByZXN1bHRbbmFtZV0gPSBjaGlsZDtcblx0ICAgIH1cblx0ICB9XG5cdH1c
blx0XG5cdC8qKlxuXHQgKiBGbGF0dGVucyBjaGlsZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3Bl
Y2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAuIEFueSBudWxsXG5cdCAqIGNoaWxkcmVuIHdpbGwg
bm90IGJlIGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgb2JqZWN0LlxuXHQgKiBAcmV0dXJuIHsh
b2JqZWN0fSBmbGF0dGVuZWQgY2hpbGRyZW4ga2V5ZWQgYnkgbmFtZS5cblx0ICovXG5cdGZ1bmN0
aW9uIGZsYXR0ZW5DaGlsZHJlbihjaGlsZHJlbiwgc2VsZkRlYnVnSUQpIHtcblx0ICBpZiAoY2hp
bGRyZW4gPT0gbnVsbCkge1xuXHQgICAgcmV0dXJuIGNoaWxkcmVuO1xuXHQgIH1cblx0ICB2YXIg
cmVzdWx0ID0ge307XG5cdFxuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgdHJhdmVyc2VBbGxDaGls
ZHJlbihjaGlsZHJlbiwgZnVuY3Rpb24gKHRyYXZlcnNlQ29udGV4dCwgY2hpbGQsIG5hbWUpIHtc
blx0ICAgICAgcmV0dXJuIGZsYXR0ZW5TaW5nbGVDaGlsZEludG9Db250ZXh0KHRyYXZlcnNlQ29u
dGV4dCwgY2hpbGQsIG5hbWUsIHNlbGZEZWJ1Z0lEKTtcblx0ICAgIH0sIHJlc3VsdCk7XG5cdCAg
fSBlbHNlIHtcblx0ICAgIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGZsYXR0ZW5TaW5n
bGVDaGlsZEludG9Db250ZXh0LCByZXN1bHQpO1xuXHQgIH1cblx0ICByZXR1cm4gcmVzdWx0O1xu
XHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGZsYXR0ZW5DaGlsZHJlbjtcblx0LyogV0VCUEFD
SyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18oODcp
KSlcblxuLyoqKi8gfSxcbi8qIDE4MSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRz
LCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5c
dCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIGdldEV2
ZW50Q2hhckNvZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ0KTtcblx0XG5cdC8qKlxuXHQgKiBO
b3JtYWxpemF0aW9uIG9mIGRlcHJlY2F0ZWQgSFRNTDUgYGtleWAgdmFsdWVzXG5cdCAqIEBzZWUg
aHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0tleWJvYXJk
RXZlbnQjS2V5X25hbWVzXG5cdCAqL1xuXHR2YXIgbm9ybWFsaXplS2V5ID0ge1xuXHQgIEVzYzog
J0VzY2FwZScsXG5cdCAgU3BhY2ViYXI6ICcgJyxcblx0ICBMZWZ0OiAnQXJyb3dMZWZ0Jyxcblx0
ICBVcDogJ0Fycm93VXAnLFxuXHQgIFJpZ2h0OiAnQXJyb3dSaWdodCcsXG5cdCAgRG93bjogJ0Fy
cm93RG93bicsXG5cdCAgRGVsOiAnRGVsZXRlJyxcblx0ICBXaW46ICdPUycsXG5cdCAgTWVudTog
J0NvbnRleHRNZW51Jyxcblx0ICBBcHBzOiAnQ29udGV4dE1lbnUnLFxuXHQgIFNjcm9sbDogJ1Nj
cm9sbExvY2snLFxuXHQgIE1velByaW50YWJsZUtleTogJ1VuaWRlbnRpZmllZCdcblx0fTtcblx0
XG5cdC8qKlxuXHQgKiBUcmFuc2xhdGlvbiBmcm9tIGxlZ2FjeSBga2V5Q29kZWAgdG8gSFRNTDUg
YGtleWBcblx0ICogT25seSBzcGVjaWFsIGtleXMgc3VwcG9ydGVkLCBhbGwgb3RoZXJzIGRlcGVu
ZCBvbiBrZXlib2FyZCBsYXlvdXQgb3IgYnJvd3NlclxuXHQgKiBAc2VlIGh0dHBzOi8vZGV2ZWxv
cGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9LZXlib2FyZEV2ZW50I0tleV9uYW1l
c1xuXHQgKi9cblx0dmFyIHRyYW5zbGF0ZVRvS2V5ID0ge1xuXHQgIDg6ICdCYWNrc3BhY2UnLFxu
XHQgIDk6ICdUYWInLFxuXHQgIDEyOiAnQ2xlYXInLFxuXHQgIDEzOiAnRW50ZXInLFxuXHQgIDE2
OiAnU2hpZnQnLFxuXHQgIDE3OiAnQ29udHJvbCcsXG5cdCAgMTg6ICdBbHQnLFxuXHQgIDE5OiAn
UGF1c2UnLFxuXHQgIDIwOiAnQ2Fwc0xvY2snLFxuXHQgIDI3OiAnRXNjYXBlJyxcblx0ICAzMjog
JyAnLFxuXHQgIDMzOiAnUGFnZVVwJyxcblx0ICAzNDogJ1BhZ2VEb3duJyxcblx0ICAzNTogJ0Vu
ZCcsXG5cdCAgMzY6ICdIb21lJyxcblx0ICAzNzogJ0Fycm93TGVmdCcsXG5cdCAgMzg6ICdBcnJv
d1VwJyxcblx0ICAzOTogJ0Fycm93UmlnaHQnLFxuXHQgIDQwOiAnQXJyb3dEb3duJyxcblx0ICA0
NTogJ0luc2VydCcsXG5cdCAgNDY6ICdEZWxldGUnLFxuXHQgIDExMjogJ0YxJyxcblx0ICAxMTM6
ICdGMicsXG5cdCAgMTE0OiAnRjMnLFxuXHQgIDExNTogJ0Y0Jyxcblx0ICAxMTY6ICdGNScsXG5c
dCAgMTE3OiAnRjYnLFxuXHQgIDExODogJ0Y3Jyxcblx0ICAxMTk6ICdGOCcsXG5cdCAgMTIwOiAn
RjknLFxuXHQgIDEyMTogJ0YxMCcsXG5cdCAgMTIyOiAnRjExJyxcblx0ICAxMjM6ICdGMTInLFxu
XHQgIDE0NDogJ051bUxvY2snLFxuXHQgIDE0NTogJ1Njcm9sbExvY2snLFxuXHQgIDIyNDogJ01l
dGEnXG5cdH07XG5cdFxuXHQvKipcblx0ICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5h
dGl2ZSBicm93c2VyIGV2ZW50LlxuXHQgKiBAcmV0dXJuIHtzdHJpbmd9IE5vcm1hbGl6ZWQgYGtl
eWAgcHJvcGVydHkuXG5cdCAqL1xuXHRmdW5jdGlvbiBnZXRFdmVudEtleShuYXRpdmVFdmVudCkg
e1xuXHQgIGlmIChuYXRpdmVFdmVudC5rZXkpIHtcblx0ICAgIC8vIE5vcm1hbGl6ZSBpbmNvbnNp
c3RlbnQgdmFsdWVzIHJlcG9ydGVkIGJ5IGJyb3dzZXJzIGR1ZSB0b1xuXHQgICAgLy8gaW1wbGVt
ZW50YXRpb25zIG9mIGEgd29ya2luZyBkcmFmdCBzcGVjaWZpY2F0aW9uLlxuXHRcblx0ICAgIC8v
IEZpcmVGb3ggaW1wbGVtZW50cyBga2V5YCBidXQgcmV0dXJucyBgTW96UHJpbnRhYmxlS2V5YCBm
b3IgYWxsXG5cdCAgICAvLyBwcmludGFibGUgY2hhcmFjdGVycyAobm9ybWFsaXplZCB0byBgVW5p
ZGVudGlmaWVkYCksIGlnbm9yZSBpdC5cblx0ICAgIHZhciBrZXkgPSBub3JtYWxpemVLZXlbbmF0
aXZlRXZlbnQua2V5XSB8fCBuYXRpdmVFdmVudC5rZXk7XG5cdCAgICBpZiAoa2V5ICE9PSAnVW5p
ZGVudGlmaWVkJykge1xuXHQgICAgICByZXR1cm4ga2V5O1xuXHQgICAgfVxuXHQgIH1cblx0XG5c
dCAgLy8gQnJvd3NlciBkb2VzIG5vdCBpbXBsZW1lbnQgYGtleWAsIHBvbHlmaWxsIGFzIG11Y2gg
b2YgaXQgYXMgd2UgY2FuLlxuXHQgIGlmIChuYXRpdmVFdmVudC50eXBlID09PSAna2V5cHJlc3Mn
KSB7XG5cdCAgICB2YXIgY2hhckNvZGUgPSBnZXRFdmVudENoYXJDb2RlKG5hdGl2ZUV2ZW50KTtc
blx0XG5cdCAgICAvLyBUaGUgZW50ZXIta2V5IGlzIHRlY2huaWNhbGx5IGJvdGggcHJpbnRhYmxl
IGFuZCBub24tcHJpbnRhYmxlIGFuZCBjYW5cblx0ICAgIC8vIHRodXMgYmUgY2FwdHVyZWQgYnkg
YGtleXByZXNzYCwgbm8gb3RoZXIgbm9uLXByaW50YWJsZSBrZXkgc2hvdWxkLlxuXHQgICAgcmV0
dXJuIGNoYXJDb2RlID09PSAxMyA/ICdFbnRlcicgOiBTdHJpbmcuZnJvbUNoYXJDb2RlKGNoYXJD
b2RlKTtcblx0ICB9XG5cdCAgaWYgKG5hdGl2ZUV2ZW50LnR5cGUgPT09ICdrZXlkb3duJyB8fCBu
YXRpdmVFdmVudC50eXBlID09PSAna2V5dXAnKSB7XG5cdCAgICAvLyBXaGlsZSB1c2VyIGtleWJv
YXJkIGxheW91dCBkZXRlcm1pbmVzIHRoZSBhY3R1YWwgbWVhbmluZyBvZiBlYWNoXG5cdCAgICAv
LyBga2V5Q29kZWAgdmFsdWUsIGFsbW9zdCBhbGwgZnVuY3Rpb24ga2V5cyBoYXZlIGEgdW5pdmVy
c2FsIHZhbHVlLlxuXHQgICAgcmV0dXJuIHRyYW5zbGF0ZVRvS2V5W25hdGl2ZUV2ZW50LmtleUNv
ZGVdIHx8ICdVbmlkZW50aWZpZWQnO1xuXHQgIH1cblx0ICByZXR1cm4gJyc7XG5cdH1cblx0XG5c
dG1vZHVsZS5leHBvcnRzID0gZ2V0RXZlbnRLZXk7XG5cbi8qKiovIH0sXG4vKiAxODIgKi9cbi8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxu
XHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5c
dFxuXHQvKiBnbG9iYWwgU3ltYm9sICovXG5cdFxuXHR2YXIgSVRFUkFUT1JfU1lNQk9MID0gdHlw
ZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wuaXRlcmF0b3I7XG5cdHZhciBGQVVY
X0lURVJBVE9SX1NZTUJPTCA9ICdAQGl0ZXJhdG9yJzsgLy8gQmVmb3JlIFN5bWJvbCBzcGVjLlxu
XHRcblx0LyoqXG5cdCAqIFJldHVybnMgdGhlIGl0ZXJhdG9yIG1ldGhvZCBmdW5jdGlvbiBjb250
YWluZWQgb24gdGhlIGl0ZXJhYmxlIG9iamVjdC5cblx0ICpcblx0ICogQmUgc3VyZSB0byBpbnZv
a2UgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIGl0ZXJhYmxlIGFzIGNvbnRleHQ6XG5cdCAqXG5cdCAq
ICAgICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0ZXJhdG9yRm4obXlJdGVyYWJsZSk7XG5cdCAqICAg
ICBpZiAoaXRlcmF0b3JGbikge1xuXHQgKiAgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZu
LmNhbGwobXlJdGVyYWJsZSk7XG5cdCAqICAgICAgIC4uLlxuXHQgKiAgICAgfVxuXHQgKlxuXHQg
KiBAcGFyYW0gez9vYmplY3R9IG1heWJlSXRlcmFibGVcblx0ICogQHJldHVybiB7P2Z1bmN0aW9u
fVxuXHQgKi9cblx0ZnVuY3Rpb24gZ2V0SXRlcmF0b3JGbihtYXliZUl0ZXJhYmxlKSB7XG5cdCAg
dmFyIGl0ZXJhdG9yRm4gPSBtYXliZUl0ZXJhYmxlICYmIChJVEVSQVRPUl9TWU1CT0wgJiYgbWF5
YmVJdGVyYWJsZVtJVEVSQVRPUl9TWU1CT0xdIHx8IG1heWJlSXRlcmFibGVbRkFVWF9JVEVSQVRP
Ul9TWU1CT0xdKTtcblx0ICBpZiAodHlwZW9mIGl0ZXJhdG9yRm4gPT09ICdmdW5jdGlvbicpIHtc
blx0ICAgIHJldHVybiBpdGVyYXRvckZuO1xuXHQgIH1cblx0fVxuXHRcblx0bW9kdWxlLmV4cG9y
dHMgPSBnZXRJdGVyYXRvckZuO1xuXG4vKioqLyB9LFxuLyogMTgzICovXG4vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQvKipcblx0ICogR2l2
ZW4gYW55IG5vZGUgcmV0dXJuIHRoZSBmaXJzdCBsZWFmIG5vZGUgd2l0aG91dCBjaGlsZHJlbi5c
blx0ICpcblx0ICogQHBhcmFtIHtET01FbGVtZW50fERPTVRleHROb2RlfSBub2RlXG5cdCAqIEBy
ZXR1cm4ge0RPTUVsZW1lbnR8RE9NVGV4dE5vZGV9XG5cdCAqL1xuXHRcblx0ZnVuY3Rpb24gZ2V0
TGVhZk5vZGUobm9kZSkge1xuXHQgIHdoaWxlIChub2RlICYmIG5vZGUuZmlyc3RDaGlsZCkge1xu
XHQgICAgbm9kZSA9IG5vZGUuZmlyc3RDaGlsZDtcblx0ICB9XG5cdCAgcmV0dXJuIG5vZGU7XG5c
dH1cblx0XG5cdC8qKlxuXHQgKiBHZXQgdGhlIG5leHQgc2libGluZyB3aXRoaW4gYSBjb250YWlu
ZXIuIFRoaXMgd2lsbCB3YWxrIHVwIHRoZVxuXHQgKiBET00gaWYgYSBub2RlJ3Mgc2libGluZ3Mg
aGF2ZSBiZWVuIGV4aGF1c3RlZC5cblx0ICpcblx0ICogQHBhcmFtIHtET01FbGVtZW50fERPTVRl
eHROb2RlfSBub2RlXG5cdCAqIEByZXR1cm4gez9ET01FbGVtZW50fERPTVRleHROb2RlfVxuXHQg
Ki9cblx0ZnVuY3Rpb24gZ2V0U2libGluZ05vZGUobm9kZSkge1xuXHQgIHdoaWxlIChub2RlKSB7
XG5cdCAgICBpZiAobm9kZS5uZXh0U2libGluZykge1xuXHQgICAgICByZXR1cm4gbm9kZS5uZXh0
U2libGluZztcblx0ICAgIH1cblx0ICAgIG5vZGUgPSBub2RlLnBhcmVudE5vZGU7XG5cdCAgfVxu
XHR9XG5cdFxuXHQvKipcblx0ICogR2V0IG9iamVjdCBkZXNjcmliaW5nIHRoZSBub2RlcyB3aGlj
aCBjb250YWluIGNoYXJhY3RlcnMgYXQgb2Zmc2V0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0RPTUVs
ZW1lbnR8RE9NVGV4dE5vZGV9IHJvb3Rcblx0ICogQHBhcmFtIHtudW1iZXJ9IG9mZnNldFxuXHQg
KiBAcmV0dXJuIHs/b2JqZWN0fVxuXHQgKi9cblx0ZnVuY3Rpb24gZ2V0Tm9kZUZvckNoYXJhY3Rl
ck9mZnNldChyb290LCBvZmZzZXQpIHtcblx0ICB2YXIgbm9kZSA9IGdldExlYWZOb2RlKHJvb3Qp
O1xuXHQgIHZhciBub2RlU3RhcnQgPSAwO1xuXHQgIHZhciBub2RlRW5kID0gMDtcblx0XG5cdCAg
d2hpbGUgKG5vZGUpIHtcblx0ICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAzKSB7XG5cdCAgICAg
IG5vZGVFbmQgPSBub2RlU3RhcnQgKyBub2RlLnRleHRDb250ZW50Lmxlbmd0aDtcblx0XG5cdCAg
ICAgIGlmIChub2RlU3RhcnQgPD0gb2Zmc2V0ICYmIG5vZGVFbmQgPj0gb2Zmc2V0KSB7XG5cdCAg
ICAgICAgcmV0dXJuIHtcblx0ICAgICAgICAgIG5vZGU6IG5vZGUsXG5cdCAgICAgICAgICBvZmZz
ZXQ6IG9mZnNldCAtIG5vZGVTdGFydFxuXHQgICAgICAgIH07XG5cdCAgICAgIH1cblx0XG5cdCAg
ICAgIG5vZGVTdGFydCA9IG5vZGVFbmQ7XG5cdCAgICB9XG5cdFxuXHQgICAgbm9kZSA9IGdldExl
YWZOb2RlKGdldFNpYmxpbmdOb2RlKG5vZGUpKTtcblx0ICB9XG5cdH1cblx0XG5cdG1vZHVsZS5l
eHBvcnRzID0gZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldDtcblxuLyoqKi8gfSxcbi8qIDE4NCAq
L1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7
XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5c
dCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRc
blx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg2KTtcblx0XG5cdC8qKlxuXHQgKiBHZW5lcmF0ZSBhIG1hcHBpbmcgb2Yg
c3RhbmRhcmQgdmVuZG9yIHByZWZpeGVzIHVzaW5nIHRoZSBkZWZpbmVkIHN0eWxlIHByb3BlcnR5
IGFuZCBldmVudCBuYW1lLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gc3R5bGVQcm9wXG5c
dCAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWVcblx0ICogQHJldHVybnMge29iamVjdH1cblx0
ICovXG5cdGZ1bmN0aW9uIG1ha2VQcmVmaXhNYXAoc3R5bGVQcm9wLCBldmVudE5hbWUpIHtcblx0
ICB2YXIgcHJlZml4ZXMgPSB7fTtcblx0XG5cdCAgcHJlZml4ZXNbc3R5bGVQcm9wLnRvTG93ZXJD
YXNlKCldID0gZXZlbnROYW1lLnRvTG93ZXJDYXNlKCk7XG5cdCAgcHJlZml4ZXNbJ1dlYmtpdCcg
KyBzdHlsZVByb3BdID0gJ3dlYmtpdCcgKyBldmVudE5hbWU7XG5cdCAgcHJlZml4ZXNbJ01veicg
KyBzdHlsZVByb3BdID0gJ21veicgKyBldmVudE5hbWU7XG5cdCAgcHJlZml4ZXNbJ21zJyArIHN0
eWxlUHJvcF0gPSAnTVMnICsgZXZlbnROYW1lO1xuXHQgIHByZWZpeGVzWydPJyArIHN0eWxlUHJv
cF0gPSAnbycgKyBldmVudE5hbWUudG9Mb3dlckNhc2UoKTtcblx0XG5cdCAgcmV0dXJuIHByZWZp
eGVzO1xuXHR9XG5cdFxuXHQvKipcblx0ICogQSBsaXN0IG9mIGV2ZW50IG5hbWVzIHRvIGEgY29u
ZmlndXJhYmxlIGxpc3Qgb2YgdmVuZG9yIHByZWZpeGVzLlxuXHQgKi9cblx0dmFyIHZlbmRvclBy
ZWZpeGVzID0ge1xuXHQgIGFuaW1hdGlvbmVuZDogbWFrZVByZWZpeE1hcCgnQW5pbWF0aW9uJywg
J0FuaW1hdGlvbkVuZCcpLFxuXHQgIGFuaW1hdGlvbml0ZXJhdGlvbjogbWFrZVByZWZpeE1hcCgn
QW5pbWF0aW9uJywgJ0FuaW1hdGlvbkl0ZXJhdGlvbicpLFxuXHQgIGFuaW1hdGlvbnN0YXJ0OiBt
YWtlUHJlZml4TWFwKCdBbmltYXRpb24nLCAnQW5pbWF0aW9uU3RhcnQnKSxcblx0ICB0cmFuc2l0
aW9uZW5kOiBtYWtlUHJlZml4TWFwKCdUcmFuc2l0aW9uJywgJ1RyYW5zaXRpb25FbmQnKVxuXHR9
O1xuXHRcblx0LyoqXG5cdCAqIEV2ZW50IG5hbWVzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gZGV0
ZWN0ZWQgYW5kIHByZWZpeGVkIChpZiBhcHBsaWNhYmxlKS5cblx0ICovXG5cdHZhciBwcmVmaXhl
ZEV2ZW50TmFtZXMgPSB7fTtcblx0XG5cdC8qKlxuXHQgKiBFbGVtZW50IHRvIGNoZWNrIGZvciBw
cmVmaXhlcyBvbi5cblx0ICovXG5cdHZhciBzdHlsZSA9IHt9O1xuXHRcblx0LyoqXG5cdCAqIEJv
b3RzdHJhcCBpZiBhIERPTSBleGlzdHMuXG5cdCAqL1xuXHRpZiAoRXhlY3V0aW9uRW52aXJvbm1l
bnQuY2FuVXNlRE9NKSB7XG5cdCAgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KS5zdHlsZTtcblx0XG5cdCAgLy8gT24gc29tZSBwbGF0Zm9ybXMsIGluIHBhcnRpY3VsYXIgc29t
ZSByZWxlYXNlcyBvZiBBbmRyb2lkIDQueCxcblx0ICAvLyB0aGUgdW4tcHJlZml4ZWQgXCJhbmlt
YXRpb25cIiBhbmQgXCJ0cmFuc2l0aW9uXCIgcHJvcGVydGllcyBhcmUgZGVmaW5lZCBvbiB0aGVc
blx0ICAvLyBzdHlsZSBvYmplY3QgYnV0IHRoZSBldmVudHMgdGhhdCBmaXJlIHdpbGwgc3RpbGwg
YmUgcHJlZml4ZWQsIHNvIHdlIG5lZWRcblx0ICAvLyB0byBjaGVjayBpZiB0aGUgdW4tcHJlZml4
ZWQgZXZlbnRzIGFyZSB1c2FibGUsIGFuZCBpZiBub3QgcmVtb3ZlIHRoZW0gZnJvbSB0aGUgbWFw
LlxuXHQgIGlmICghKCdBbmltYXRpb25FdmVudCcgaW4gd2luZG93KSkge1xuXHQgICAgZGVsZXRl
IHZlbmRvclByZWZpeGVzLmFuaW1hdGlvbmVuZC5hbmltYXRpb247XG5cdCAgICBkZWxldGUgdmVu
ZG9yUHJlZml4ZXMuYW5pbWF0aW9uaXRlcmF0aW9uLmFuaW1hdGlvbjtcblx0ICAgIGRlbGV0ZSB2
ZW5kb3JQcmVmaXhlcy5hbmltYXRpb25zdGFydC5hbmltYXRpb247XG5cdCAgfVxuXHRcblx0ICAv
LyBTYW1lIGFzIGFib3ZlXG5cdCAgaWYgKCEoJ1RyYW5zaXRpb25FdmVudCcgaW4gd2luZG93KSkg
e1xuXHQgICAgZGVsZXRlIHZlbmRvclByZWZpeGVzLnRyYW5zaXRpb25lbmQudHJhbnNpdGlvbjtc
blx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBBdHRlbXB0cyB0byBkZXRlcm1pbmUgdGhlIGNv
cnJlY3QgdmVuZG9yIHByZWZpeGVkIGV2ZW50IG5hbWUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3Ry
aW5nfSBldmVudE5hbWVcblx0ICogQHJldHVybnMge3N0cmluZ31cblx0ICovXG5cdGZ1bmN0aW9u
IGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lKGV2ZW50TmFtZSkge1xuXHQgIGlmIChwcmVmaXhl
ZEV2ZW50TmFtZXNbZXZlbnROYW1lXSkge1xuXHQgICAgcmV0dXJuIHByZWZpeGVkRXZlbnROYW1l
c1tldmVudE5hbWVdO1xuXHQgIH0gZWxzZSBpZiAoIXZlbmRvclByZWZpeGVzW2V2ZW50TmFtZV0p
IHtcblx0ICAgIHJldHVybiBldmVudE5hbWU7XG5cdCAgfVxuXHRcblx0ICB2YXIgcHJlZml4TWFw
ID0gdmVuZG9yUHJlZml4ZXNbZXZlbnROYW1lXTtcblx0XG5cdCAgZm9yICh2YXIgc3R5bGVQcm9w
IGluIHByZWZpeE1hcCkge1xuXHQgICAgaWYgKHByZWZpeE1hcC5oYXNPd25Qcm9wZXJ0eShzdHls
ZVByb3ApICYmIHN0eWxlUHJvcCBpbiBzdHlsZSkge1xuXHQgICAgICByZXR1cm4gcHJlZml4ZWRF
dmVudE5hbWVzW2V2ZW50TmFtZV0gPSBwcmVmaXhNYXBbc3R5bGVQcm9wXTtcblx0ICAgIH1cblx0
ICB9XG5cdFxuXHQgIHJldHVybiAnJztcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBnZXRW
ZW5kb3JQcmVmaXhlZEV2ZW50TmFtZTtcblxuLyoqKi8gfSxcbi8qIDE4NSAqL1xuLyoqKi8gZnVu
Y3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5c
dCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJp
Y3QnO1xuXHRcblx0dmFyIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlciA9IF9fd2VicGFja19y
ZXF1aXJlX18oMjgpO1xuXHRcblx0LyoqXG5cdCAqIEVzY2FwZXMgYXR0cmlidXRlIHZhbHVlIHRv
IHByZXZlbnQgc2NyaXB0aW5nIGF0dGFja3MuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Kn0gdmFsdWUg
VmFsdWUgdG8gZXNjYXBlLlxuXHQgKiBAcmV0dXJuIHtzdHJpbmd9IEFuIGVzY2FwZWQgc3RyaW5n
LlxuXHQgKi9cblx0ZnVuY3Rpb24gcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIodmFsdWUp
IHtcblx0ICByZXR1cm4gJ1wiJyArIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlcih2YWx1ZSkg
KyAnXCInO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IHF1b3RlQXR0cmlidXRlVmFsdWVG
b3JCcm93c2VyO1xuXG4vKioqLyB9LFxuLyogMTg2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
blx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2
YXIgUmVhY3RNb3VudCA9IF9fd2VicGFja19yZXF1aXJlX18oNjcpO1xuXHRcblx0bW9kdWxlLmV4
cG9ydHMgPSBSZWFjdE1vdW50LnJlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyO1xuXG4vKioqLyB9
LFxuLyogMTg3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19y
ZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRleHBvcnRzLl9fZXNNb2R1bGUg
PSB0cnVlO1xuXHRleHBvcnRzLmNyZWF0ZVByb3ZpZGVyID0gY3JlYXRlUHJvdmlkZXI7XG5cdFxu
XHR2YXIgX3JlYWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7XG5cdFxuXHR2YXIgX3Byb3BU
eXBlcyA9IF9fd2VicGFja19yZXF1aXJlX18oNTYpO1xuXHRcblx0dmFyIF9wcm9wVHlwZXMyID0g
X2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcHJvcFR5cGVzKTtcblx0XG5cdHZhciBfUHJvcFR5cGVz
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4Mik7XG5cdFxuXHR2YXIgX3dhcm5pbmcgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDUwKTtcblx0XG5cdHZhciBfd2FybmluZzIgPSBfaW50ZXJvcFJlcXVpcmVE
ZWZhdWx0KF93YXJuaW5nKTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQo
b2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9i
aiB9OyB9XG5cdFxuXHRmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVj
dG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5l
dyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxu
XHRcblx0ZnVuY3Rpb24gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBp
ZiAoIXNlbGYpIHsgdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBp
bml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBjYWxs
ICYmICh0eXBlb2YgY2FsbCA9PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5j
dGlvblwiKSA/IGNhbGwgOiBzZWxmOyB9XG5cdFxuXHRmdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xh
c3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIg
JiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhw
cmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArIHR5cGVv
ZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVy
Q2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1
YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTog
dHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0
LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9f
XyA9IHN1cGVyQ2xhc3M7IH1cblx0XG5cdHZhciBkaWRXYXJuQWJvdXRSZWNlaXZpbmdTdG9yZSA9
IGZhbHNlO1xuXHRmdW5jdGlvbiB3YXJuQWJvdXRSZWNlaXZpbmdTdG9yZSgpIHtcblx0ICBpZiAo
ZGlkV2FybkFib3V0UmVjZWl2aW5nU3RvcmUpIHtcblx0ICAgIHJldHVybjtcblx0ICB9XG5cdCAg
ZGlkV2FybkFib3V0UmVjZWl2aW5nU3RvcmUgPSB0cnVlO1xuXHRcblx0ICAoMCwgX3dhcm5pbmcy
LmRlZmF1bHQpKCc8UHJvdmlkZXI+IGRvZXMgbm90IHN1cHBvcnQgY2hhbmdpbmcgYHN0b3JlYCBv
biB0aGUgZmx5LiAnICsgJ0l0IGlzIG1vc3QgbGlrZWx5IHRoYXQgeW91IHNlZSB0aGlzIGVycm9y
IGJlY2F1c2UgeW91IHVwZGF0ZWQgdG8gJyArICdSZWR1eCAyLnggYW5kIFJlYWN0IFJlZHV4IDIu
eCB3aGljaCBubyBsb25nZXIgaG90IHJlbG9hZCByZWR1Y2VycyAnICsgJ2F1dG9tYXRpY2FsbHku
IFNlZSBodHRwczovL2dpdGh1Yi5jb20vcmVhY3Rqcy9yZWFjdC1yZWR1eC9yZWxlYXNlcy8nICsg
J3RhZy92Mi4wLjAgZm9yIHRoZSBtaWdyYXRpb24gaW5zdHJ1Y3Rpb25zLicpO1xuXHR9XG5cdFxu
XHRmdW5jdGlvbiBjcmVhdGVQcm92aWRlcigpIHtcblx0ICB2YXIgX1Byb3ZpZGVyJGNoaWxkQ29u
dGV4O1xuXHRcblx0ICB2YXIgc3RvcmVLZXkgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAmJiBhcmd1
bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6ICdzdG9yZSc7XG5cdCAgdmFy
IHN1YktleSA9IGFyZ3VtZW50c1sxXTtcblx0XG5cdCAgdmFyIHN1YnNjcmlwdGlvbktleSA9IHN1
YktleSB8fCBzdG9yZUtleSArICdTdWJzY3JpcHRpb24nO1xuXHRcblx0ICB2YXIgUHJvdmlkZXIg
PSBmdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuXHQgICAgX2luaGVyaXRzKFByb3ZpZGVyLCBfQ29t
cG9uZW50KTtcblx0XG5cdCAgICBQcm92aWRlci5wcm90b3R5cGUuZ2V0Q2hpbGRDb250ZXh0ID0g
ZnVuY3Rpb24gZ2V0Q2hpbGRDb250ZXh0KCkge1xuXHQgICAgICB2YXIgX3JlZjtcblx0XG5cdCAg
ICAgIHJldHVybiBfcmVmID0ge30sIF9yZWZbc3RvcmVLZXldID0gdGhpc1tzdG9yZUtleV0sIF9y
ZWZbc3Vic2NyaXB0aW9uS2V5XSA9IG51bGwsIF9yZWY7XG5cdCAgICB9O1xuXHRcblx0ICAgIGZ1
bmN0aW9uIFByb3ZpZGVyKHByb3BzLCBjb250ZXh0KSB7XG5cdCAgICAgIF9jbGFzc0NhbGxDaGVj
ayh0aGlzLCBQcm92aWRlcik7XG5cdFxuXHQgICAgICB2YXIgX3RoaXMgPSBfcG9zc2libGVDb25z
dHJ1Y3RvclJldHVybih0aGlzLCBfQ29tcG9uZW50LmNhbGwodGhpcywgcHJvcHMsIGNvbnRleHQp
KTtcblx0XG5cdCAgICAgIF90aGlzW3N0b3JlS2V5XSA9IHByb3BzLnN0b3JlO1xuXHQgICAgICBy
ZXR1cm4gX3RoaXM7XG5cdCAgICB9XG5cdFxuXHQgICAgUHJvdmlkZXIucHJvdG90eXBlLnJlbmRl
ciA9IGZ1bmN0aW9uIHJlbmRlcigpIHtcblx0ICAgICAgcmV0dXJuIF9yZWFjdC5DaGlsZHJlbi5v
bmx5KHRoaXMucHJvcHMuY2hpbGRyZW4pO1xuXHQgICAgfTtcblx0XG5cdCAgICByZXR1cm4gUHJv
dmlkZXI7XG5cdCAgfShfcmVhY3QuQ29tcG9uZW50KTtcblx0XG5cdCAgaWYgKGZhbHNlKSB7XG5c
dCAgICBQcm92aWRlci5wcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyA9IGZ1bmN0
aW9uIChuZXh0UHJvcHMpIHtcblx0ICAgICAgaWYgKHRoaXNbc3RvcmVLZXldICE9PSBuZXh0UHJv
cHMuc3RvcmUpIHtcblx0ICAgICAgICB3YXJuQWJvdXRSZWNlaXZpbmdTdG9yZSgpO1xuXHQgICAg
ICB9XG5cdCAgICB9O1xuXHQgIH1cblx0XG5cdCAgUHJvdmlkZXIucHJvcFR5cGVzID0ge1xuXHQg
ICAgc3RvcmU6IF9Qcm9wVHlwZXMuc3RvcmVTaGFwZS5pc1JlcXVpcmVkLFxuXHQgICAgY2hpbGRy
ZW46IF9wcm9wVHlwZXMyLmRlZmF1bHQuZWxlbWVudC5pc1JlcXVpcmVkXG5cdCAgfTtcblx0ICBQ
cm92aWRlci5jaGlsZENvbnRleHRUeXBlcyA9IChfUHJvdmlkZXIkY2hpbGRDb250ZXggPSB7fSwg
X1Byb3ZpZGVyJGNoaWxkQ29udGV4W3N0b3JlS2V5XSA9IF9Qcm9wVHlwZXMuc3RvcmVTaGFwZS5p
c1JlcXVpcmVkLCBfUHJvdmlkZXIkY2hpbGRDb250ZXhbc3Vic2NyaXB0aW9uS2V5XSA9IF9Qcm9w
VHlwZXMuc3Vic2NyaXB0aW9uU2hhcGUsIF9Qcm92aWRlciRjaGlsZENvbnRleCk7XG5cdFxuXHQg
IHJldHVybiBQcm92aWRlcjtcblx0fVxuXHRcblx0ZXhwb3J0cy5kZWZhdWx0ID0gY3JlYXRlUHJv
dmlkZXIoKTtcblxuLyoqKi8gfSxcbi8qIDE4OCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBl
eHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0
ZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblx0XG5cdHZhciBfZXh0ZW5kcyA9IE9iamVjdC5h
c3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50
cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkg
aW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291
cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJn
ZXQ7IH07XG5cdFxuXHRleHBvcnRzLmNyZWF0ZUNvbm5lY3QgPSBjcmVhdGVDb25uZWN0O1xuXHRc
blx0dmFyIF9jb25uZWN0QWR2YW5jZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc5KTtcblx0XG5c
dHZhciBfY29ubmVjdEFkdmFuY2VkMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Nvbm5lY3RB
ZHZhbmNlZCk7XG5cdFxuXHR2YXIgX3NoYWxsb3dFcXVhbCA9IF9fd2VicGFja19yZXF1aXJlX18o
MTk1KTtcblx0XG5cdHZhciBfc2hhbGxvd0VxdWFsMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQo
X3NoYWxsb3dFcXVhbCk7XG5cdFxuXHR2YXIgX21hcERpc3BhdGNoVG9Qcm9wcyA9IF9fd2VicGFj
a19yZXF1aXJlX18oMTg5KTtcblx0XG5cdHZhciBfbWFwRGlzcGF0Y2hUb1Byb3BzMiA9IF9pbnRl
cm9wUmVxdWlyZURlZmF1bHQoX21hcERpc3BhdGNoVG9Qcm9wcyk7XG5cdFxuXHR2YXIgX21hcFN0
YXRlVG9Qcm9wcyA9IF9fd2VicGFja19yZXF1aXJlX18oMTkwKTtcblx0XG5cdHZhciBfbWFwU3Rh
dGVUb1Byb3BzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX21hcFN0YXRlVG9Qcm9wcyk7XG5c
dFxuXHR2YXIgX21lcmdlUHJvcHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5MSk7XG5cdFxuXHR2
YXIgX21lcmdlUHJvcHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfbWVyZ2VQcm9wcyk7XG5c
dFxuXHR2YXIgX3NlbGVjdG9yRmFjdG9yeSA9IF9fd2VicGFja19yZXF1aXJlX18oMTkyKTtcblx0
XG5cdHZhciBfc2VsZWN0b3JGYWN0b3J5MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3NlbGVj
dG9yRmFjdG9yeSk7XG5cdFxuXHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikg
eyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsg
fVxuXHRcblx0ZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKG9iaiwga2V5cykgeyB2
YXIgdGFyZ2V0ID0ge307IGZvciAodmFyIGkgaW4gb2JqKSB7IGlmIChrZXlzLmluZGV4T2YoaSkg
Pj0gMCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxs
KG9iaiwgaSkpIGNvbnRpbnVlOyB0YXJnZXRbaV0gPSBvYmpbaV07IH0gcmV0dXJuIHRhcmdldDsg
fVxuXHRcblx0Lypcblx0ICBjb25uZWN0IGlzIGEgZmFjYWRlIG92ZXIgY29ubmVjdEFkdmFuY2Vk
LiBJdCB0dXJucyBpdHMgYXJncyBpbnRvIGEgY29tcGF0aWJsZVxuXHQgIHNlbGVjdG9yRmFjdG9y
eSwgd2hpY2ggaGFzIHRoZSBzaWduYXR1cmU6XG5cdFxuXHQgICAgKGRpc3BhdGNoLCBvcHRpb25z
KSA9PiAobmV4dFN0YXRlLCBuZXh0T3duUHJvcHMpID0+IG5leHRGaW5hbFByb3BzXG5cdCAgXG5c
dCAgY29ubmVjdCBwYXNzZXMgaXRzIGFyZ3MgdG8gY29ubmVjdEFkdmFuY2VkIGFzIG9wdGlvbnMs
IHdoaWNoIHdpbGwgaW4gdHVybiBwYXNzIHRoZW0gdG9cblx0ICBzZWxlY3RvckZhY3RvcnkgZWFj
aCB0aW1lIGEgQ29ubmVjdCBjb21wb25lbnQgaW5zdGFuY2UgaXMgaW5zdGFudGlhdGVkIG9yIGhv
dCByZWxvYWRlZC5cblx0XG5cdCAgc2VsZWN0b3JGYWN0b3J5IHJldHVybnMgYSBmaW5hbCBwcm9w
cyBzZWxlY3RvciBmcm9tIGl0cyBtYXBTdGF0ZVRvUHJvcHMsXG5cdCAgbWFwU3RhdGVUb1Byb3Bz
RmFjdG9yaWVzLCBtYXBEaXNwYXRjaFRvUHJvcHMsIG1hcERpc3BhdGNoVG9Qcm9wc0ZhY3Rvcmll
cywgbWVyZ2VQcm9wcyxcblx0ICBtZXJnZVByb3BzRmFjdG9yaWVzLCBhbmQgcHVyZSBhcmdzLlxu
XHRcblx0ICBUaGUgcmVzdWx0aW5nIGZpbmFsIHByb3BzIHNlbGVjdG9yIGlzIGNhbGxlZCBieSB0
aGUgQ29ubmVjdCBjb21wb25lbnQgaW5zdGFuY2Ugd2hlbmV2ZXJcblx0ICBpdCByZWNlaXZlcyBu
ZXcgcHJvcHMgb3Igc3RvcmUgc3RhdGUuXG5cdCAqL1xuXHRcblx0ZnVuY3Rpb24gbWF0Y2goYXJn
LCBmYWN0b3JpZXMsIG5hbWUpIHtcblx0ICBmb3IgKHZhciBpID0gZmFjdG9yaWVzLmxlbmd0aCAt
IDE7IGkgPj0gMDsgaS0tKSB7XG5cdCAgICB2YXIgcmVzdWx0ID0gZmFjdG9yaWVzW2ldKGFyZyk7
XG5cdCAgICBpZiAocmVzdWx0KSByZXR1cm4gcmVzdWx0O1xuXHQgIH1cblx0XG5cdCAgcmV0dXJu
IGZ1bmN0aW9uIChkaXNwYXRjaCwgb3B0aW9ucykge1xuXHQgICAgdGhyb3cgbmV3IEVycm9yKCdJ
bnZhbGlkIHZhbHVlIG9mIHR5cGUgJyArIHR5cGVvZiBhcmcgKyAnIGZvciAnICsgbmFtZSArICcg
YXJndW1lbnQgd2hlbiBjb25uZWN0aW5nIGNvbXBvbmVudCAnICsgb3B0aW9ucy53cmFwcGVkQ29t
cG9uZW50TmFtZSArICcuJyk7XG5cdCAgfTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gc3RyaWN0RXF1
YWwoYSwgYikge1xuXHQgIHJldHVybiBhID09PSBiO1xuXHR9XG5cdFxuXHQvLyBjcmVhdGVDb25u
ZWN0IHdpdGggZGVmYXVsdCBhcmdzIGJ1aWxkcyB0aGUgJ29mZmljaWFsJyBjb25uZWN0IGJlaGF2
aW9yLiBDYWxsaW5nIGl0IHdpdGhcblx0Ly8gZGlmZmVyZW50IG9wdGlvbnMgb3BlbnMgdXAgc29t
ZSB0ZXN0aW5nIGFuZCBleHRlbnNpYmlsaXR5IHNjZW5hcmlvc1xuXHRmdW5jdGlvbiBjcmVhdGVD
b25uZWN0KCkge1xuXHQgIHZhciBfcmVmID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1l
bnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMF0gOiB7fSxcblx0ICAgICAgX3JlZiRj
b25uZWN0SE9DID0gX3JlZi5jb25uZWN0SE9DLFxuXHQgICAgICBjb25uZWN0SE9DID0gX3JlZiRj
b25uZWN0SE9DID09PSB1bmRlZmluZWQgPyBfY29ubmVjdEFkdmFuY2VkMi5kZWZhdWx0IDogX3Jl
ZiRjb25uZWN0SE9DLFxuXHQgICAgICBfcmVmJG1hcFN0YXRlVG9Qcm9wc0YgPSBfcmVmLm1hcFN0
YXRlVG9Qcm9wc0ZhY3Rvcmllcyxcblx0ICAgICAgbWFwU3RhdGVUb1Byb3BzRmFjdG9yaWVzID0g
X3JlZiRtYXBTdGF0ZVRvUHJvcHNGID09PSB1bmRlZmluZWQgPyBfbWFwU3RhdGVUb1Byb3BzMi5k
ZWZhdWx0IDogX3JlZiRtYXBTdGF0ZVRvUHJvcHNGLFxuXHQgICAgICBfcmVmJG1hcERpc3BhdGNo
VG9Qcm8gPSBfcmVmLm1hcERpc3BhdGNoVG9Qcm9wc0ZhY3Rvcmllcyxcblx0ICAgICAgbWFwRGlz
cGF0Y2hUb1Byb3BzRmFjdG9yaWVzID0gX3JlZiRtYXBEaXNwYXRjaFRvUHJvID09PSB1bmRlZmlu
ZWQgPyBfbWFwRGlzcGF0Y2hUb1Byb3BzMi5kZWZhdWx0IDogX3JlZiRtYXBEaXNwYXRjaFRvUHJv
LFxuXHQgICAgICBfcmVmJG1lcmdlUHJvcHNGYWN0b3IgPSBfcmVmLm1lcmdlUHJvcHNGYWN0b3Jp
ZXMsXG5cdCAgICAgIG1lcmdlUHJvcHNGYWN0b3JpZXMgPSBfcmVmJG1lcmdlUHJvcHNGYWN0b3Ig
PT09IHVuZGVmaW5lZCA/IF9tZXJnZVByb3BzMi5kZWZhdWx0IDogX3JlZiRtZXJnZVByb3BzRmFj
dG9yLFxuXHQgICAgICBfcmVmJHNlbGVjdG9yRmFjdG9yeSA9IF9yZWYuc2VsZWN0b3JGYWN0b3J5
LFxuXHQgICAgICBzZWxlY3RvckZhY3RvcnkgPSBfcmVmJHNlbGVjdG9yRmFjdG9yeSA9PT0gdW5k
ZWZpbmVkID8gX3NlbGVjdG9yRmFjdG9yeTIuZGVmYXVsdCA6IF9yZWYkc2VsZWN0b3JGYWN0b3J5
O1xuXHRcblx0ICByZXR1cm4gZnVuY3Rpb24gY29ubmVjdChtYXBTdGF0ZVRvUHJvcHMsIG1hcERp
c3BhdGNoVG9Qcm9wcywgbWVyZ2VQcm9wcykge1xuXHQgICAgdmFyIF9yZWYyID0gYXJndW1lbnRz
Lmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10g
OiB7fSxcblx0ICAgICAgICBfcmVmMiRwdXJlID0gX3JlZjIucHVyZSxcblx0ICAgICAgICBwdXJl
ID0gX3JlZjIkcHVyZSA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IF9yZWYyJHB1cmUsXG5cdCAgICAg
ICAgX3JlZjIkYXJlU3RhdGVzRXF1YWwgPSBfcmVmMi5hcmVTdGF0ZXNFcXVhbCxcblx0ICAgICAg
ICBhcmVTdGF0ZXNFcXVhbCA9IF9yZWYyJGFyZVN0YXRlc0VxdWFsID09PSB1bmRlZmluZWQgPyBz
dHJpY3RFcXVhbCA6IF9yZWYyJGFyZVN0YXRlc0VxdWFsLFxuXHQgICAgICAgIF9yZWYyJGFyZU93
blByb3BzRXF1YSA9IF9yZWYyLmFyZU93blByb3BzRXF1YWwsXG5cdCAgICAgICAgYXJlT3duUHJv
cHNFcXVhbCA9IF9yZWYyJGFyZU93blByb3BzRXF1YSA9PT0gdW5kZWZpbmVkID8gX3NoYWxsb3dF
cXVhbDIuZGVmYXVsdCA6IF9yZWYyJGFyZU93blByb3BzRXF1YSxcblx0ICAgICAgICBfcmVmMiRh
cmVTdGF0ZVByb3BzRXEgPSBfcmVmMi5hcmVTdGF0ZVByb3BzRXF1YWwsXG5cdCAgICAgICAgYXJl
U3RhdGVQcm9wc0VxdWFsID0gX3JlZjIkYXJlU3RhdGVQcm9wc0VxID09PSB1bmRlZmluZWQgPyBf
c2hhbGxvd0VxdWFsMi5kZWZhdWx0IDogX3JlZjIkYXJlU3RhdGVQcm9wc0VxLFxuXHQgICAgICAg
IF9yZWYyJGFyZU1lcmdlZFByb3BzRSA9IF9yZWYyLmFyZU1lcmdlZFByb3BzRXF1YWwsXG5cdCAg
ICAgICAgYXJlTWVyZ2VkUHJvcHNFcXVhbCA9IF9yZWYyJGFyZU1lcmdlZFByb3BzRSA9PT0gdW5k
ZWZpbmVkID8gX3NoYWxsb3dFcXVhbDIuZGVmYXVsdCA6IF9yZWYyJGFyZU1lcmdlZFByb3BzRSxc
blx0ICAgICAgICBleHRyYU9wdGlvbnMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZjIs
IFsncHVyZScsICdhcmVTdGF0ZXNFcXVhbCcsICdhcmVPd25Qcm9wc0VxdWFsJywgJ2FyZVN0YXRl
UHJvcHNFcXVhbCcsICdhcmVNZXJnZWRQcm9wc0VxdWFsJ10pO1xuXHRcblx0ICAgIHZhciBpbml0
TWFwU3RhdGVUb1Byb3BzID0gbWF0Y2gobWFwU3RhdGVUb1Byb3BzLCBtYXBTdGF0ZVRvUHJvcHNG
YWN0b3JpZXMsICdtYXBTdGF0ZVRvUHJvcHMnKTtcblx0ICAgIHZhciBpbml0TWFwRGlzcGF0Y2hU
b1Byb3BzID0gbWF0Y2gobWFwRGlzcGF0Y2hUb1Byb3BzLCBtYXBEaXNwYXRjaFRvUHJvcHNGYWN0
b3JpZXMsICdtYXBEaXNwYXRjaFRvUHJvcHMnKTtcblx0ICAgIHZhciBpbml0TWVyZ2VQcm9wcyA9
IG1hdGNoKG1lcmdlUHJvcHMsIG1lcmdlUHJvcHNGYWN0b3JpZXMsICdtZXJnZVByb3BzJyk7XG5c
dFxuXHQgICAgcmV0dXJuIGNvbm5lY3RIT0Moc2VsZWN0b3JGYWN0b3J5LCBfZXh0ZW5kcyh7XG5c
dCAgICAgIC8vIHVzZWQgaW4gZXJyb3IgbWVzc2FnZXNcblx0ICAgICAgbWV0aG9kTmFtZTogJ2Nv
bm5lY3QnLFxuXHRcblx0ICAgICAgLy8gdXNlZCB0byBjb21wdXRlIENvbm5lY3QncyBkaXNwbGF5
TmFtZSBmcm9tIHRoZSB3cmFwcGVkIGNvbXBvbmVudCdzIGRpc3BsYXlOYW1lLlxuXHQgICAgICBn
ZXREaXNwbGF5TmFtZTogZnVuY3Rpb24gZ2V0RGlzcGxheU5hbWUobmFtZSkge1xuXHQgICAgICAg
IHJldHVybiAnQ29ubmVjdCgnICsgbmFtZSArICcpJztcblx0ICAgICAgfSxcblx0XG5cdCAgICAg
IC8vIGlmIG1hcFN0YXRlVG9Qcm9wcyBpcyBmYWxzeSwgdGhlIENvbm5lY3QgY29tcG9uZW50IGRv
ZXNuJ3Qgc3Vic2NyaWJlIHRvIHN0b3JlIHN0YXRlIGNoYW5nZXNcblx0ICAgICAgc2hvdWxkSGFu
ZGxlU3RhdGVDaGFuZ2VzOiBCb29sZWFuKG1hcFN0YXRlVG9Qcm9wcyksXG5cdFxuXHQgICAgICAv
LyBwYXNzZWQgdGhyb3VnaCB0byBzZWxlY3RvckZhY3Rvcnlcblx0ICAgICAgaW5pdE1hcFN0YXRl
VG9Qcm9wczogaW5pdE1hcFN0YXRlVG9Qcm9wcyxcblx0ICAgICAgaW5pdE1hcERpc3BhdGNoVG9Q
cm9wczogaW5pdE1hcERpc3BhdGNoVG9Qcm9wcyxcblx0ICAgICAgaW5pdE1lcmdlUHJvcHM6IGlu
aXRNZXJnZVByb3BzLFxuXHQgICAgICBwdXJlOiBwdXJlLFxuXHQgICAgICBhcmVTdGF0ZXNFcXVh
bDogYXJlU3RhdGVzRXF1YWwsXG5cdCAgICAgIGFyZU93blByb3BzRXF1YWw6IGFyZU93blByb3Bz
RXF1YWwsXG5cdCAgICAgIGFyZVN0YXRlUHJvcHNFcXVhbDogYXJlU3RhdGVQcm9wc0VxdWFsLFxu
XHQgICAgICBhcmVNZXJnZWRQcm9wc0VxdWFsOiBhcmVNZXJnZWRQcm9wc0VxdWFsXG5cdFxuXHQg
ICAgfSwgZXh0cmFPcHRpb25zKSk7XG5cdCAgfTtcblx0fVxuXHRcblx0ZXhwb3J0cy5kZWZhdWx0
ID0gY3JlYXRlQ29ubmVjdCgpO1xuXG4vKioqLyB9LFxuLyogMTg5ICovXG4vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmlj
dCc7XG5cdFxuXHRleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXHRleHBvcnRzLndoZW5NYXBE
aXNwYXRjaFRvUHJvcHNJc0Z1bmN0aW9uID0gd2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lzRnVuY3Rp
b247XG5cdGV4cG9ydHMud2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lzTWlzc2luZyA9IHdoZW5NYXBE
aXNwYXRjaFRvUHJvcHNJc01pc3Npbmc7XG5cdGV4cG9ydHMud2hlbk1hcERpc3BhdGNoVG9Qcm9w
c0lzT2JqZWN0ID0gd2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lzT2JqZWN0O1xuXHRcblx0dmFyIF9y
ZWR1eCA9IF9fd2VicGFja19yZXF1aXJlX18oMzApO1xuXHRcblx0dmFyIF93cmFwTWFwVG9Qcm9w
cyA9IF9fd2VicGFja19yZXF1aXJlX18oODApO1xuXHRcblx0ZnVuY3Rpb24gd2hlbk1hcERpc3Bh
dGNoVG9Qcm9wc0lzRnVuY3Rpb24obWFwRGlzcGF0Y2hUb1Byb3BzKSB7XG5cdCAgcmV0dXJuIHR5
cGVvZiBtYXBEaXNwYXRjaFRvUHJvcHMgPT09ICdmdW5jdGlvbicgPyAoMCwgX3dyYXBNYXBUb1By
b3BzLndyYXBNYXBUb1Byb3BzRnVuYykobWFwRGlzcGF0Y2hUb1Byb3BzLCAnbWFwRGlzcGF0Y2hU
b1Byb3BzJykgOiB1bmRlZmluZWQ7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHdoZW5NYXBEaXNwYXRj
aFRvUHJvcHNJc01pc3NpbmcobWFwRGlzcGF0Y2hUb1Byb3BzKSB7XG5cdCAgcmV0dXJuICFtYXBE
aXNwYXRjaFRvUHJvcHMgPyAoMCwgX3dyYXBNYXBUb1Byb3BzLndyYXBNYXBUb1Byb3BzQ29uc3Rh
bnQpKGZ1bmN0aW9uIChkaXNwYXRjaCkge1xuXHQgICAgcmV0dXJuIHsgZGlzcGF0Y2g6IGRpc3Bh
dGNoIH07XG5cdCAgfSkgOiB1bmRlZmluZWQ7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHdoZW5NYXBE
aXNwYXRjaFRvUHJvcHNJc09iamVjdChtYXBEaXNwYXRjaFRvUHJvcHMpIHtcblx0ICByZXR1cm4g
bWFwRGlzcGF0Y2hUb1Byb3BzICYmIHR5cGVvZiBtYXBEaXNwYXRjaFRvUHJvcHMgPT09ICdvYmpl
Y3QnID8gKDAsIF93cmFwTWFwVG9Qcm9wcy53cmFwTWFwVG9Qcm9wc0NvbnN0YW50KShmdW5jdGlv
biAoZGlzcGF0Y2gpIHtcblx0ICAgIHJldHVybiAoMCwgX3JlZHV4LmJpbmRBY3Rpb25DcmVhdG9y
cykobWFwRGlzcGF0Y2hUb1Byb3BzLCBkaXNwYXRjaCk7XG5cdCAgfSkgOiB1bmRlZmluZWQ7XG5c
dH1cblx0XG5cdGV4cG9ydHMuZGVmYXVsdCA9IFt3aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNGdW5j
dGlvbiwgd2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lzTWlzc2luZywgd2hlbk1hcERpc3BhdGNoVG9Q
cm9wc0lzT2JqZWN0XTtcblxuLyoqKi8gfSxcbi8qIDE5MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9k
dWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xu
XHRcblx0ZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblx0ZXhwb3J0cy53aGVuTWFwU3RhdGVU
b1Byb3BzSXNGdW5jdGlvbiA9IHdoZW5NYXBTdGF0ZVRvUHJvcHNJc0Z1bmN0aW9uO1xuXHRleHBv
cnRzLndoZW5NYXBTdGF0ZVRvUHJvcHNJc01pc3NpbmcgPSB3aGVuTWFwU3RhdGVUb1Byb3BzSXNN
aXNzaW5nO1xuXHRcblx0dmFyIF93cmFwTWFwVG9Qcm9wcyA9IF9fd2VicGFja19yZXF1aXJlX18o
ODApO1xuXHRcblx0ZnVuY3Rpb24gd2hlbk1hcFN0YXRlVG9Qcm9wc0lzRnVuY3Rpb24obWFwU3Rh
dGVUb1Byb3BzKSB7XG5cdCAgcmV0dXJuIHR5cGVvZiBtYXBTdGF0ZVRvUHJvcHMgPT09ICdmdW5j
dGlvbicgPyAoMCwgX3dyYXBNYXBUb1Byb3BzLndyYXBNYXBUb1Byb3BzRnVuYykobWFwU3RhdGVU
b1Byb3BzLCAnbWFwU3RhdGVUb1Byb3BzJykgOiB1bmRlZmluZWQ7XG5cdH1cblx0XG5cdGZ1bmN0
aW9uIHdoZW5NYXBTdGF0ZVRvUHJvcHNJc01pc3NpbmcobWFwU3RhdGVUb1Byb3BzKSB7XG5cdCAg
cmV0dXJuICFtYXBTdGF0ZVRvUHJvcHMgPyAoMCwgX3dyYXBNYXBUb1Byb3BzLndyYXBNYXBUb1By
b3BzQ29uc3RhbnQpKGZ1bmN0aW9uICgpIHtcblx0ICAgIHJldHVybiB7fTtcblx0ICB9KSA6IHVu
ZGVmaW5lZDtcblx0fVxuXHRcblx0ZXhwb3J0cy5kZWZhdWx0ID0gW3doZW5NYXBTdGF0ZVRvUHJv
cHNJc0Z1bmN0aW9uLCB3aGVuTWFwU3RhdGVUb1Byb3BzSXNNaXNzaW5nXTtcblxuLyoqKi8gfSxc
bi8qIDE5MSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVx
dWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0ZXhwb3J0cy5fX2VzTW9kdWxlID0g
dHJ1ZTtcblx0XG5cdHZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRh
cmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIg
c291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmpl
Y3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtr
ZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cdFxuXHRleHBvcnRz
LmRlZmF1bHRNZXJnZVByb3BzID0gZGVmYXVsdE1lcmdlUHJvcHM7XG5cdGV4cG9ydHMud3JhcE1l
cmdlUHJvcHNGdW5jID0gd3JhcE1lcmdlUHJvcHNGdW5jO1xuXHRleHBvcnRzLndoZW5NZXJnZVBy
b3BzSXNGdW5jdGlvbiA9IHdoZW5NZXJnZVByb3BzSXNGdW5jdGlvbjtcblx0ZXhwb3J0cy53aGVu
TWVyZ2VQcm9wc0lzT21pdHRlZCA9IHdoZW5NZXJnZVByb3BzSXNPbWl0dGVkO1xuXHRcblx0dmFy
IF92ZXJpZnlQbGFpbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oODMpO1xuXHRcblx0dmFy
IF92ZXJpZnlQbGFpbk9iamVjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF92ZXJpZnlQbGFp
bk9iamVjdCk7XG5cdFxuXHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyBy
ZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxu
XHRcblx0ZnVuY3Rpb24gZGVmYXVsdE1lcmdlUHJvcHMoc3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9w
cywgb3duUHJvcHMpIHtcblx0ICByZXR1cm4gX2V4dGVuZHMoe30sIG93blByb3BzLCBzdGF0ZVBy
b3BzLCBkaXNwYXRjaFByb3BzKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gd3JhcE1lcmdlUHJvcHNG
dW5jKG1lcmdlUHJvcHMpIHtcblx0ICByZXR1cm4gZnVuY3Rpb24gaW5pdE1lcmdlUHJvcHNQcm94
eShkaXNwYXRjaCwgX3JlZikge1xuXHQgICAgdmFyIGRpc3BsYXlOYW1lID0gX3JlZi5kaXNwbGF5
TmFtZSxcblx0ICAgICAgICBwdXJlID0gX3JlZi5wdXJlLFxuXHQgICAgICAgIGFyZU1lcmdlZFBy
b3BzRXF1YWwgPSBfcmVmLmFyZU1lcmdlZFByb3BzRXF1YWw7XG5cdFxuXHQgICAgdmFyIGhhc1J1
bk9uY2UgPSBmYWxzZTtcblx0ICAgIHZhciBtZXJnZWRQcm9wcyA9IHZvaWQgMDtcblx0XG5cdCAg
ICByZXR1cm4gZnVuY3Rpb24gbWVyZ2VQcm9wc1Byb3h5KHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJv
cHMsIG93blByb3BzKSB7XG5cdCAgICAgIHZhciBuZXh0TWVyZ2VkUHJvcHMgPSBtZXJnZVByb3Bz
KHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJvcHMsIG93blByb3BzKTtcblx0XG5cdCAgICAgIGlmICho
YXNSdW5PbmNlKSB7XG5cdCAgICAgICAgaWYgKCFwdXJlIHx8ICFhcmVNZXJnZWRQcm9wc0VxdWFs
KG5leHRNZXJnZWRQcm9wcywgbWVyZ2VkUHJvcHMpKSBtZXJnZWRQcm9wcyA9IG5leHRNZXJnZWRQ
cm9wcztcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICBoYXNSdW5PbmNlID0gdHJ1ZTtcblx0
ICAgICAgICBtZXJnZWRQcm9wcyA9IG5leHRNZXJnZWRQcm9wcztcblx0XG5cdCAgICAgICAgaWYg
KGZhbHNlKSAoMCwgX3ZlcmlmeVBsYWluT2JqZWN0Mi5kZWZhdWx0KShtZXJnZWRQcm9wcywgZGlz
cGxheU5hbWUsICdtZXJnZVByb3BzJyk7XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHJldHVybiBt
ZXJnZWRQcm9wcztcblx0ICAgIH07XG5cdCAgfTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gd2hlbk1l
cmdlUHJvcHNJc0Z1bmN0aW9uKG1lcmdlUHJvcHMpIHtcblx0ICByZXR1cm4gdHlwZW9mIG1lcmdl
UHJvcHMgPT09ICdmdW5jdGlvbicgPyB3cmFwTWVyZ2VQcm9wc0Z1bmMobWVyZ2VQcm9wcykgOiB1
bmRlZmluZWQ7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHdoZW5NZXJnZVByb3BzSXNPbWl0dGVkKG1l
cmdlUHJvcHMpIHtcblx0ICByZXR1cm4gIW1lcmdlUHJvcHMgPyBmdW5jdGlvbiAoKSB7XG5cdCAg
ICByZXR1cm4gZGVmYXVsdE1lcmdlUHJvcHM7XG5cdCAgfSA6IHVuZGVmaW5lZDtcblx0fVxuXHRc
blx0ZXhwb3J0cy5kZWZhdWx0ID0gW3doZW5NZXJnZVByb3BzSXNGdW5jdGlvbiwgd2hlbk1lcmdl
UHJvcHNJc09taXR0ZWRdO1xuXG4vKioqLyB9LFxuLyogMTkyICovXG4vKioqLyBmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7
XG5cdFxuXHRleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXHRleHBvcnRzLmltcHVyZUZpbmFs
UHJvcHNTZWxlY3RvckZhY3RvcnkgPSBpbXB1cmVGaW5hbFByb3BzU2VsZWN0b3JGYWN0b3J5O1xu
XHRleHBvcnRzLnB1cmVGaW5hbFByb3BzU2VsZWN0b3JGYWN0b3J5ID0gcHVyZUZpbmFsUHJvcHNT
ZWxlY3RvckZhY3Rvcnk7XG5cdGV4cG9ydHMuZGVmYXVsdCA9IGZpbmFsUHJvcHNTZWxlY3RvckZh
Y3Rvcnk7XG5cdFxuXHR2YXIgX3ZlcmlmeVN1YnNlbGVjdG9ycyA9IF9fd2VicGFja19yZXF1aXJl
X18oMTkzKTtcblx0XG5cdHZhciBfdmVyaWZ5U3Vic2VsZWN0b3JzMiA9IF9pbnRlcm9wUmVxdWly
ZURlZmF1bHQoX3ZlcmlmeVN1YnNlbGVjdG9ycyk7XG5cdFxuXHRmdW5jdGlvbiBfaW50ZXJvcFJl
cXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDog
eyBkZWZhdWx0OiBvYmogfTsgfVxuXHRcblx0ZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0
aWVzKG9iaiwga2V5cykgeyB2YXIgdGFyZ2V0ID0ge307IGZvciAodmFyIGkgaW4gb2JqKSB7IGlm
IChrZXlzLmluZGV4T2YoaSkgPj0gMCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3RvdHlwZS5o
YXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgaSkpIGNvbnRpbnVlOyB0YXJnZXRbaV0gPSBvYmpbaV07
IH0gcmV0dXJuIHRhcmdldDsgfVxuXHRcblx0ZnVuY3Rpb24gaW1wdXJlRmluYWxQcm9wc1NlbGVj
dG9yRmFjdG9yeShtYXBTdGF0ZVRvUHJvcHMsIG1hcERpc3BhdGNoVG9Qcm9wcywgbWVyZ2VQcm9w
cywgZGlzcGF0Y2gpIHtcblx0ICByZXR1cm4gZnVuY3Rpb24gaW1wdXJlRmluYWxQcm9wc1NlbGVj
dG9yKHN0YXRlLCBvd25Qcm9wcykge1xuXHQgICAgcmV0dXJuIG1lcmdlUHJvcHMobWFwU3RhdGVU
b1Byb3BzKHN0YXRlLCBvd25Qcm9wcyksIG1hcERpc3BhdGNoVG9Qcm9wcyhkaXNwYXRjaCwgb3du
UHJvcHMpLCBvd25Qcm9wcyk7XG5cdCAgfTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gcHVyZUZpbmFs
UHJvcHNTZWxlY3RvckZhY3RvcnkobWFwU3RhdGVUb1Byb3BzLCBtYXBEaXNwYXRjaFRvUHJvcHMs
IG1lcmdlUHJvcHMsIGRpc3BhdGNoLCBfcmVmKSB7XG5cdCAgdmFyIGFyZVN0YXRlc0VxdWFsID0g
X3JlZi5hcmVTdGF0ZXNFcXVhbCxcblx0ICAgICAgYXJlT3duUHJvcHNFcXVhbCA9IF9yZWYuYXJl
T3duUHJvcHNFcXVhbCxcblx0ICAgICAgYXJlU3RhdGVQcm9wc0VxdWFsID0gX3JlZi5hcmVTdGF0
ZVByb3BzRXF1YWw7XG5cdFxuXHQgIHZhciBoYXNSdW5BdExlYXN0T25jZSA9IGZhbHNlO1xuXHQg
IHZhciBzdGF0ZSA9IHZvaWQgMDtcblx0ICB2YXIgb3duUHJvcHMgPSB2b2lkIDA7XG5cdCAgdmFy
IHN0YXRlUHJvcHMgPSB2b2lkIDA7XG5cdCAgdmFyIGRpc3BhdGNoUHJvcHMgPSB2b2lkIDA7XG5c
dCAgdmFyIG1lcmdlZFByb3BzID0gdm9pZCAwO1xuXHRcblx0ICBmdW5jdGlvbiBoYW5kbGVGaXJz
dENhbGwoZmlyc3RTdGF0ZSwgZmlyc3RPd25Qcm9wcykge1xuXHQgICAgc3RhdGUgPSBmaXJzdFN0
YXRlO1xuXHQgICAgb3duUHJvcHMgPSBmaXJzdE93blByb3BzO1xuXHQgICAgc3RhdGVQcm9wcyA9
IG1hcFN0YXRlVG9Qcm9wcyhzdGF0ZSwgb3duUHJvcHMpO1xuXHQgICAgZGlzcGF0Y2hQcm9wcyA9
IG1hcERpc3BhdGNoVG9Qcm9wcyhkaXNwYXRjaCwgb3duUHJvcHMpO1xuXHQgICAgbWVyZ2VkUHJv
cHMgPSBtZXJnZVByb3BzKHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJvcHMsIG93blByb3BzKTtcblx0
ICAgIGhhc1J1bkF0TGVhc3RPbmNlID0gdHJ1ZTtcblx0ICAgIHJldHVybiBtZXJnZWRQcm9wcztc
blx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIGhhbmRsZU5ld1Byb3BzQW5kTmV3U3RhdGUoKSB7XG5c
dCAgICBzdGF0ZVByb3BzID0gbWFwU3RhdGVUb1Byb3BzKHN0YXRlLCBvd25Qcm9wcyk7XG5cdFxu
XHQgICAgaWYgKG1hcERpc3BhdGNoVG9Qcm9wcy5kZXBlbmRzT25Pd25Qcm9wcykgZGlzcGF0Y2hQ
cm9wcyA9IG1hcERpc3BhdGNoVG9Qcm9wcyhkaXNwYXRjaCwgb3duUHJvcHMpO1xuXHRcblx0ICAg
IG1lcmdlZFByb3BzID0gbWVyZ2VQcm9wcyhzdGF0ZVByb3BzLCBkaXNwYXRjaFByb3BzLCBvd25Q
cm9wcyk7XG5cdCAgICByZXR1cm4gbWVyZ2VkUHJvcHM7XG5cdCAgfVxuXHRcblx0ICBmdW5jdGlv
biBoYW5kbGVOZXdQcm9wcygpIHtcblx0ICAgIGlmIChtYXBTdGF0ZVRvUHJvcHMuZGVwZW5kc09u
T3duUHJvcHMpIHN0YXRlUHJvcHMgPSBtYXBTdGF0ZVRvUHJvcHMoc3RhdGUsIG93blByb3BzKTtc
blx0XG5cdCAgICBpZiAobWFwRGlzcGF0Y2hUb1Byb3BzLmRlcGVuZHNPbk93blByb3BzKSBkaXNw
YXRjaFByb3BzID0gbWFwRGlzcGF0Y2hUb1Byb3BzKGRpc3BhdGNoLCBvd25Qcm9wcyk7XG5cdFxu
XHQgICAgbWVyZ2VkUHJvcHMgPSBtZXJnZVByb3BzKHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJvcHMs
IG93blByb3BzKTtcblx0ICAgIHJldHVybiBtZXJnZWRQcm9wcztcblx0ICB9XG5cdFxuXHQgIGZ1
bmN0aW9uIGhhbmRsZU5ld1N0YXRlKCkge1xuXHQgICAgdmFyIG5leHRTdGF0ZVByb3BzID0gbWFw
U3RhdGVUb1Byb3BzKHN0YXRlLCBvd25Qcm9wcyk7XG5cdCAgICB2YXIgc3RhdGVQcm9wc0NoYW5n
ZWQgPSAhYXJlU3RhdGVQcm9wc0VxdWFsKG5leHRTdGF0ZVByb3BzLCBzdGF0ZVByb3BzKTtcblx0
ICAgIHN0YXRlUHJvcHMgPSBuZXh0U3RhdGVQcm9wcztcblx0XG5cdCAgICBpZiAoc3RhdGVQcm9w
c0NoYW5nZWQpIG1lcmdlZFByb3BzID0gbWVyZ2VQcm9wcyhzdGF0ZVByb3BzLCBkaXNwYXRjaFBy
b3BzLCBvd25Qcm9wcyk7XG5cdFxuXHQgICAgcmV0dXJuIG1lcmdlZFByb3BzO1xuXHQgIH1cblx0
XG5cdCAgZnVuY3Rpb24gaGFuZGxlU3Vic2VxdWVudENhbGxzKG5leHRTdGF0ZSwgbmV4dE93blBy
b3BzKSB7XG5cdCAgICB2YXIgcHJvcHNDaGFuZ2VkID0gIWFyZU93blByb3BzRXF1YWwobmV4dE93
blByb3BzLCBvd25Qcm9wcyk7XG5cdCAgICB2YXIgc3RhdGVDaGFuZ2VkID0gIWFyZVN0YXRlc0Vx
dWFsKG5leHRTdGF0ZSwgc3RhdGUpO1xuXHQgICAgc3RhdGUgPSBuZXh0U3RhdGU7XG5cdCAgICBv
d25Qcm9wcyA9IG5leHRPd25Qcm9wcztcblx0XG5cdCAgICBpZiAocHJvcHNDaGFuZ2VkICYmIHN0
YXRlQ2hhbmdlZCkgcmV0dXJuIGhhbmRsZU5ld1Byb3BzQW5kTmV3U3RhdGUoKTtcblx0ICAgIGlm
IChwcm9wc0NoYW5nZWQpIHJldHVybiBoYW5kbGVOZXdQcm9wcygpO1xuXHQgICAgaWYgKHN0YXRl
Q2hhbmdlZCkgcmV0dXJuIGhhbmRsZU5ld1N0YXRlKCk7XG5cdCAgICByZXR1cm4gbWVyZ2VkUHJv
cHM7XG5cdCAgfVxuXHRcblx0ICByZXR1cm4gZnVuY3Rpb24gcHVyZUZpbmFsUHJvcHNTZWxlY3Rv
cihuZXh0U3RhdGUsIG5leHRPd25Qcm9wcykge1xuXHQgICAgcmV0dXJuIGhhc1J1bkF0TGVhc3RP
bmNlID8gaGFuZGxlU3Vic2VxdWVudENhbGxzKG5leHRTdGF0ZSwgbmV4dE93blByb3BzKSA6IGhh
bmRsZUZpcnN0Q2FsbChuZXh0U3RhdGUsIG5leHRPd25Qcm9wcyk7XG5cdCAgfTtcblx0fVxuXHRc
blx0Ly8gVE9ETzogQWRkIG1vcmUgY29tbWVudHNcblx0XG5cdC8vIElmIHB1cmUgaXMgdHJ1ZSwg
dGhlIHNlbGVjdG9yIHJldHVybmVkIGJ5IHNlbGVjdG9yRmFjdG9yeSB3aWxsIG1lbW9pemUgaXRz
IHJlc3VsdHMsXG5cdC8vIGFsbG93aW5nIGNvbm5lY3RBZHZhbmNlZCdzIHNob3VsZENvbXBvbmVu
dFVwZGF0ZSB0byByZXR1cm4gZmFsc2UgaWYgZmluYWxcblx0Ly8gcHJvcHMgaGF2ZSBub3QgY2hh
bmdlZC4gSWYgZmFsc2UsIHRoZSBzZWxlY3RvciB3aWxsIGFsd2F5cyByZXR1cm4gYSBuZXdcblx0
Ly8gb2JqZWN0IGFuZCBzaG91bGRDb21wb25lbnRVcGRhdGUgd2lsbCBhbHdheXMgcmV0dXJuIHRy
dWUuXG5cdFxuXHRmdW5jdGlvbiBmaW5hbFByb3BzU2VsZWN0b3JGYWN0b3J5KGRpc3BhdGNoLCBf
cmVmMikge1xuXHQgIHZhciBpbml0TWFwU3RhdGVUb1Byb3BzID0gX3JlZjIuaW5pdE1hcFN0YXRl
VG9Qcm9wcyxcblx0ICAgICAgaW5pdE1hcERpc3BhdGNoVG9Qcm9wcyA9IF9yZWYyLmluaXRNYXBE
aXNwYXRjaFRvUHJvcHMsXG5cdCAgICAgIGluaXRNZXJnZVByb3BzID0gX3JlZjIuaW5pdE1lcmdl
UHJvcHMsXG5cdCAgICAgIG9wdGlvbnMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZjIs
IFsnaW5pdE1hcFN0YXRlVG9Qcm9wcycsICdpbml0TWFwRGlzcGF0Y2hUb1Byb3BzJywgJ2luaXRN
ZXJnZVByb3BzJ10pO1xuXHRcblx0ICB2YXIgbWFwU3RhdGVUb1Byb3BzID0gaW5pdE1hcFN0YXRl
VG9Qcm9wcyhkaXNwYXRjaCwgb3B0aW9ucyk7XG5cdCAgdmFyIG1hcERpc3BhdGNoVG9Qcm9wcyA9
IGluaXRNYXBEaXNwYXRjaFRvUHJvcHMoZGlzcGF0Y2gsIG9wdGlvbnMpO1xuXHQgIHZhciBtZXJn
ZVByb3BzID0gaW5pdE1lcmdlUHJvcHMoZGlzcGF0Y2gsIG9wdGlvbnMpO1xuXHRcblx0ICBpZiAo
ZmFsc2UpIHtcblx0ICAgICgwLCBfdmVyaWZ5U3Vic2VsZWN0b3JzMi5kZWZhdWx0KShtYXBTdGF0
ZVRvUHJvcHMsIG1hcERpc3BhdGNoVG9Qcm9wcywgbWVyZ2VQcm9wcywgb3B0aW9ucy5kaXNwbGF5
TmFtZSk7XG5cdCAgfVxuXHRcblx0ICB2YXIgc2VsZWN0b3JGYWN0b3J5ID0gb3B0aW9ucy5wdXJl
ID8gcHVyZUZpbmFsUHJvcHNTZWxlY3RvckZhY3RvcnkgOiBpbXB1cmVGaW5hbFByb3BzU2VsZWN0
b3JGYWN0b3J5O1xuXHRcblx0ICByZXR1cm4gc2VsZWN0b3JGYWN0b3J5KG1hcFN0YXRlVG9Qcm9w
cywgbWFwRGlzcGF0Y2hUb1Byb3BzLCBtZXJnZVByb3BzLCBkaXNwYXRjaCwgb3B0aW9ucyk7XG5c
dH1cblxuLyoqKi8gfSxcbi8qIDE5MyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRz
LCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0ZXhwb3J0
cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblx0ZXhwb3J0cy5kZWZhdWx0ID0gdmVyaWZ5U3Vic2VsZWN0
b3JzO1xuXHRcblx0dmFyIF93YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1MCk7XG5cdFxu
XHR2YXIgX3dhcm5pbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfd2FybmluZyk7XG5cdFxu
XHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9i
ai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXHRcblx0ZnVuY3Rpb24g
dmVyaWZ5KHNlbGVjdG9yLCBtZXRob2ROYW1lLCBkaXNwbGF5TmFtZSkge1xuXHQgIGlmICghc2Vs
ZWN0b3IpIHtcblx0ICAgIHRocm93IG5ldyBFcnJvcignVW5leHBlY3RlZCB2YWx1ZSBmb3IgJyAr
IG1ldGhvZE5hbWUgKyAnIGluICcgKyBkaXNwbGF5TmFtZSArICcuJyk7XG5cdCAgfSBlbHNlIGlm
IChtZXRob2ROYW1lID09PSAnbWFwU3RhdGVUb1Byb3BzJyB8fCBtZXRob2ROYW1lID09PSAnbWFw
RGlzcGF0Y2hUb1Byb3BzJykge1xuXHQgICAgaWYgKCFzZWxlY3Rvci5oYXNPd25Qcm9wZXJ0eSgn
ZGVwZW5kc09uT3duUHJvcHMnKSkge1xuXHQgICAgICAoMCwgX3dhcm5pbmcyLmRlZmF1bHQpKCdU
aGUgc2VsZWN0b3IgZm9yICcgKyBtZXRob2ROYW1lICsgJyBvZiAnICsgZGlzcGxheU5hbWUgKyAn
IGRpZCBub3Qgc3BlY2lmeSBhIHZhbHVlIGZvciBkZXBlbmRzT25Pd25Qcm9wcy4nKTtcblx0ICAg
IH1cblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHZlcmlmeVN1YnNlbGVjdG9ycyhtYXBTdGF0
ZVRvUHJvcHMsIG1hcERpc3BhdGNoVG9Qcm9wcywgbWVyZ2VQcm9wcywgZGlzcGxheU5hbWUpIHtc
blx0ICB2ZXJpZnkobWFwU3RhdGVUb1Byb3BzLCAnbWFwU3RhdGVUb1Byb3BzJywgZGlzcGxheU5h
bWUpO1xuXHQgIHZlcmlmeShtYXBEaXNwYXRjaFRvUHJvcHMsICdtYXBEaXNwYXRjaFRvUHJvcHMn
LCBkaXNwbGF5TmFtZSk7XG5cdCAgdmVyaWZ5KG1lcmdlUHJvcHMsICdtZXJnZVByb3BzJywgZGlz
cGxheU5hbWUpO1xuXHR9XG5cbi8qKiovIH0sXG4vKiAxOTQgKi9cbi8qKiovIGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cykge1xuXG5cdFwidXNlIHN0cmljdFwiO1xuXHRcblx0ZXhwb3J0cy5fX2Vz
TW9kdWxlID0gdHJ1ZTtcblx0XG5cdGZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwg
Q29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsg
dGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwi
KTsgfSB9XG5cdFxuXHQvLyBlbmNhcHN1bGF0ZXMgdGhlIHN1YnNjcmlwdGlvbiBsb2dpYyBmb3Ig
Y29ubmVjdGluZyBhIGNvbXBvbmVudCB0byB0aGUgcmVkdXggc3RvcmUsIGFzXG5cdC8vIHdlbGwg
YXMgbmVzdGluZyBzdWJzY3JpcHRpb25zIG9mIGRlc2NlbmRhbnQgY29tcG9uZW50cywgc28gdGhh
dCB3ZSBjYW4gZW5zdXJlIHRoZVxuXHQvLyBhbmNlc3RvciBjb21wb25lbnRzIHJlLXJlbmRlciBi
ZWZvcmUgZGVzY2VuZGFudHNcblx0XG5cdHZhciBDTEVBUkVEID0gbnVsbDtcblx0dmFyIG51bGxM
aXN0ZW5lcnMgPSB7XG5cdCAgbm90aWZ5OiBmdW5jdGlvbiBub3RpZnkoKSB7fVxuXHR9O1xuXHRc
blx0ZnVuY3Rpb24gY3JlYXRlTGlzdGVuZXJDb2xsZWN0aW9uKCkge1xuXHQgIC8vIHRoZSBjdXJy
ZW50L25leHQgcGF0dGVybiBpcyBjb3BpZWQgZnJvbSByZWR1eCdzIGNyZWF0ZVN0b3JlIGNvZGUu
XG5cdCAgLy8gVE9ETzogcmVmYWN0b3IrZXhwb3NlIHRoYXQgY29kZSB0byBiZSByZXVzYWJsZSBo
ZXJlP1xuXHQgIHZhciBjdXJyZW50ID0gW107XG5cdCAgdmFyIG5leHQgPSBbXTtcblx0XG5cdCAg
cmV0dXJuIHtcblx0ICAgIGNsZWFyOiBmdW5jdGlvbiBjbGVhcigpIHtcblx0ICAgICAgbmV4dCA9
IENMRUFSRUQ7XG5cdCAgICAgIGN1cnJlbnQgPSBDTEVBUkVEO1xuXHQgICAgfSxcblx0ICAgIG5v
dGlmeTogZnVuY3Rpb24gbm90aWZ5KCkge1xuXHQgICAgICB2YXIgbGlzdGVuZXJzID0gY3VycmVu
dCA9IG5leHQ7XG5cdCAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdGVuZXJzLmxlbmd0aDsg
aSsrKSB7XG5cdCAgICAgICAgbGlzdGVuZXJzW2ldKCk7XG5cdCAgICAgIH1cblx0ICAgIH0sXG5c
dCAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcblx0ICAgICAgcmV0dXJuIG5leHQ7XG5cdCAgICB9
LFxuXHQgICAgc3Vic2NyaWJlOiBmdW5jdGlvbiBzdWJzY3JpYmUobGlzdGVuZXIpIHtcblx0ICAg
ICAgdmFyIGlzU3Vic2NyaWJlZCA9IHRydWU7XG5cdCAgICAgIGlmIChuZXh0ID09PSBjdXJyZW50
KSBuZXh0ID0gY3VycmVudC5zbGljZSgpO1xuXHQgICAgICBuZXh0LnB1c2gobGlzdGVuZXIpO1xu
XHRcblx0ICAgICAgcmV0dXJuIGZ1bmN0aW9uIHVuc3Vic2NyaWJlKCkge1xuXHQgICAgICAgIGlm
ICghaXNTdWJzY3JpYmVkIHx8IGN1cnJlbnQgPT09IENMRUFSRUQpIHJldHVybjtcblx0ICAgICAg
ICBpc1N1YnNjcmliZWQgPSBmYWxzZTtcblx0XG5cdCAgICAgICAgaWYgKG5leHQgPT09IGN1cnJl
bnQpIG5leHQgPSBjdXJyZW50LnNsaWNlKCk7XG5cdCAgICAgICAgbmV4dC5zcGxpY2UobmV4dC5p
bmRleE9mKGxpc3RlbmVyKSwgMSk7XG5cdCAgICAgIH07XG5cdCAgICB9XG5cdCAgfTtcblx0fVxu
XHRcblx0dmFyIFN1YnNjcmlwdGlvbiA9IGZ1bmN0aW9uICgpIHtcblx0ICBmdW5jdGlvbiBTdWJz
Y3JpcHRpb24oc3RvcmUsIHBhcmVudFN1Yiwgb25TdGF0ZUNoYW5nZSkge1xuXHQgICAgX2NsYXNz
Q2FsbENoZWNrKHRoaXMsIFN1YnNjcmlwdGlvbik7XG5cdFxuXHQgICAgdGhpcy5zdG9yZSA9IHN0
b3JlO1xuXHQgICAgdGhpcy5wYXJlbnRTdWIgPSBwYXJlbnRTdWI7XG5cdCAgICB0aGlzLm9uU3Rh
dGVDaGFuZ2UgPSBvblN0YXRlQ2hhbmdlO1xuXHQgICAgdGhpcy51bnN1YnNjcmliZSA9IG51bGw7
XG5cdCAgICB0aGlzLmxpc3RlbmVycyA9IG51bGxMaXN0ZW5lcnM7XG5cdCAgfVxuXHRcblx0ICBT
dWJzY3JpcHRpb24ucHJvdG90eXBlLmFkZE5lc3RlZFN1YiA9IGZ1bmN0aW9uIGFkZE5lc3RlZFN1
YihsaXN0ZW5lcikge1xuXHQgICAgdGhpcy50cnlTdWJzY3JpYmUoKTtcblx0ICAgIHJldHVybiB0
aGlzLmxpc3RlbmVycy5zdWJzY3JpYmUobGlzdGVuZXIpO1xuXHQgIH07XG5cdFxuXHQgIFN1YnNj
cmlwdGlvbi5wcm90b3R5cGUubm90aWZ5TmVzdGVkU3VicyA9IGZ1bmN0aW9uIG5vdGlmeU5lc3Rl
ZFN1YnMoKSB7XG5cdCAgICB0aGlzLmxpc3RlbmVycy5ub3RpZnkoKTtcblx0ICB9O1xuXHRcblx0
ICBTdWJzY3JpcHRpb24ucHJvdG90eXBlLmlzU3Vic2NyaWJlZCA9IGZ1bmN0aW9uIGlzU3Vic2Ny
aWJlZCgpIHtcblx0ICAgIHJldHVybiBCb29sZWFuKHRoaXMudW5zdWJzY3JpYmUpO1xuXHQgIH07
XG5cdFxuXHQgIFN1YnNjcmlwdGlvbi5wcm90b3R5cGUudHJ5U3Vic2NyaWJlID0gZnVuY3Rpb24g
dHJ5U3Vic2NyaWJlKCkge1xuXHQgICAgaWYgKCF0aGlzLnVuc3Vic2NyaWJlKSB7XG5cdCAgICAg
IHRoaXMudW5zdWJzY3JpYmUgPSB0aGlzLnBhcmVudFN1YiA/IHRoaXMucGFyZW50U3ViLmFkZE5l
c3RlZFN1Yih0aGlzLm9uU3RhdGVDaGFuZ2UpIDogdGhpcy5zdG9yZS5zdWJzY3JpYmUodGhpcy5v
blN0YXRlQ2hhbmdlKTtcblx0XG5cdCAgICAgIHRoaXMubGlzdGVuZXJzID0gY3JlYXRlTGlzdGVu
ZXJDb2xsZWN0aW9uKCk7XG5cdCAgICB9XG5cdCAgfTtcblx0XG5cdCAgU3Vic2NyaXB0aW9uLnBy
b3RvdHlwZS50cnlVbnN1YnNjcmliZSA9IGZ1bmN0aW9uIHRyeVVuc3Vic2NyaWJlKCkge1xuXHQg
ICAgaWYgKHRoaXMudW5zdWJzY3JpYmUpIHtcblx0ICAgICAgdGhpcy51bnN1YnNjcmliZSgpO1xu
XHQgICAgICB0aGlzLnVuc3Vic2NyaWJlID0gbnVsbDtcblx0ICAgICAgdGhpcy5saXN0ZW5lcnMu
Y2xlYXIoKTtcblx0ICAgICAgdGhpcy5saXN0ZW5lcnMgPSBudWxsTGlzdGVuZXJzO1xuXHQgICAg
fVxuXHQgIH07XG5cdFxuXHQgIHJldHVybiBTdWJzY3JpcHRpb247XG5cdH0oKTtcblx0XG5cdGV4
cG9ydHMuZGVmYXVsdCA9IFN1YnNjcmlwdGlvbjtcblxuLyoqKi8gfSxcbi8qIDE5NSAqL1xuLyoq
Ki8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0
ZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblx0ZXhwb3J0cy5kZWZhdWx0ID0gc2hhbGxvd0Vx
dWFsO1xuXHR2YXIgaGFzT3duID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblx0
XG5cdGZ1bmN0aW9uIGlzKHgsIHkpIHtcblx0ICBpZiAoeCA9PT0geSkge1xuXHQgICAgcmV0dXJu
IHggIT09IDAgfHwgeSAhPT0gMCB8fCAxIC8geCA9PT0gMSAvIHk7XG5cdCAgfSBlbHNlIHtcblx0
ICAgIHJldHVybiB4ICE9PSB4ICYmIHkgIT09IHk7XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlv
biBzaGFsbG93RXF1YWwob2JqQSwgb2JqQikge1xuXHQgIGlmIChpcyhvYmpBLCBvYmpCKSkgcmV0
dXJuIHRydWU7XG5cdFxuXHQgIGlmICh0eXBlb2Ygb2JqQSAhPT0gJ29iamVjdCcgfHwgb2JqQSA9
PT0gbnVsbCB8fCB0eXBlb2Ygb2JqQiAhPT0gJ29iamVjdCcgfHwgb2JqQiA9PT0gbnVsbCkge1xu
XHQgICAgcmV0dXJuIGZhbHNlO1xuXHQgIH1cblx0XG5cdCAgdmFyIGtleXNBID0gT2JqZWN0Lmtl
eXMob2JqQSk7XG5cdCAgdmFyIGtleXNCID0gT2JqZWN0LmtleXMob2JqQik7XG5cdFxuXHQgIGlm
IChrZXlzQS5sZW5ndGggIT09IGtleXNCLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXHRcblx0ICBm
b3IgKHZhciBpID0gMDsgaSA8IGtleXNBLmxlbmd0aDsgaSsrKSB7XG5cdCAgICBpZiAoIWhhc093
bi5jYWxsKG9iakIsIGtleXNBW2ldKSB8fCAhaXMob2JqQVtrZXlzQVtpXV0sIG9iakJba2V5c0Fb
aV1dKSkge1xuXHQgICAgICByZXR1cm4gZmFsc2U7XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0ICBy
ZXR1cm4gdHJ1ZTtcblx0fVxuXG4vKioqLyB9LFxuLyogMTk2ICovXG4vKioqLyBmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvLyBAcmVtb3ZlLW9u
LWVqZWN0LWJlZ2luXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgKGMpIDIwMTUtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0
ICovXG5cdC8vIEByZW1vdmUtb24tZWplY3QtZW5kXG5cdFxuXHRpZiAodHlwZW9mIFByb21pc2Ug
PT09ICd1bmRlZmluZWQnKSB7XG5cdCAgLy8gUmVqZWN0aW9uIHRyYWNraW5nIHByZXZlbnRzIGEg
Y29tbW9uIGlzc3VlIHdoZXJlIFJlYWN0IGdldHMgaW50byBhblxuXHQgIC8vIGluY29uc2lzdGVu
dCBzdGF0ZSBkdWUgdG8gYW4gZXJyb3IsIGJ1dCBpdCBnZXRzIHN3YWxsb3dlZCBieSBhIFByb21p
c2UsXG5cdCAgLy8gYW5kIHRoZSB1c2VyIGhhcyBubyBpZGVhIHdoYXQgY2F1c2VzIFJlYWN0J3Mg
ZXJyYXRpYyBmdXR1cmUgYmVoYXZpb3IuXG5cdCAgX193ZWJwYWNrX3JlcXVpcmVfXygyMTApLmVu
YWJsZSgpO1xuXHQgIHdpbmRvdy5Qcm9taXNlID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMDkpO1xu
XHR9XG5cdFxuXHQvLyBmZXRjaCgpIHBvbHlmaWxsIGZvciBtYWtpbmcgQVBJIGNhbGxzLlxuXHRf
X3dlYnBhY2tfcmVxdWlyZV9fKDIxMik7XG5cdFxuXHQvLyBPYmplY3QuYXNzaWduKCkgaXMgY29t
bW9ubHkgdXNlZCB3aXRoIFJlYWN0LlxuXHQvLyBJdCB3aWxsIHVzZSB0aGUgbmF0aXZlIGltcGxl
bWVudGF0aW9uIGlmIGl0J3MgcHJlc2VudCBhbmQgaXNuJ3QgYnVnZ3kuXG5cdE9iamVjdC5hc3Np
Z24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwOCk7XG5cblxuLyoqKi8gfSxcbi8qIDE5NyAqL1xu
LyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyogV0VCUEFDSyBWQVIgSU5K
RUNUSU9OICovKGZ1bmN0aW9uKGdsb2JhbCkge1widXNlIHN0cmljdFwiO1xuXHRcblx0Ly8gVXNl
IHRoZSBmYXN0ZXN0IG1lYW5zIHBvc3NpYmxlIHRvIGV4ZWN1dGUgYSB0YXNrIGluIGl0cyBvd24g
dHVybiwgd2l0aFxuXHQvLyBwcmlvcml0eSBvdmVyIG90aGVyIGV2ZW50cyBpbmNsdWRpbmcgSU8s
IGFuaW1hdGlvbiwgcmVmbG93LCBhbmQgcmVkcmF3XG5cdC8vIGV2ZW50cyBpbiBicm93c2Vycy5c
blx0Ly9cblx0Ly8gQW4gZXhjZXB0aW9uIHRocm93biBieSBhIHRhc2sgd2lsbCBwZXJtYW5lbnRs
eSBpbnRlcnJ1cHQgdGhlIHByb2Nlc3Npbmcgb2Zcblx0Ly8gc3Vic2VxdWVudCB0YXNrcy4gVGhl
IGhpZ2hlciBsZXZlbCBgYXNhcGAgZnVuY3Rpb24gZW5zdXJlcyB0aGF0IGlmIGFuXG5cdC8vIGV4
Y2VwdGlvbiBpcyB0aHJvd24gYnkgYSB0YXNrLCB0aGF0IHRoZSB0YXNrIHF1ZXVlIHdpbGwgY29u
dGludWUgZmx1c2hpbmcgYXNcblx0Ly8gc29vbiBhcyBwb3NzaWJsZSwgYnV0IGlmIHlvdSB1c2Ug
YHJhd0FzYXBgIGRpcmVjdGx5LCB5b3UgYXJlIHJlc3BvbnNpYmxlIHRvXG5cdC8vIGVpdGhlciBl
bnN1cmUgdGhhdCBubyBleGNlcHRpb25zIGFyZSB0aHJvd24gZnJvbSB5b3VyIHRhc2ssIG9yIHRv
IG1hbnVhbGx5XG5cdC8vIGNhbGwgYHJhd0FzYXAucmVxdWVzdEZsdXNoYCBpZiBhbiBleGNlcHRp
b24gaXMgdGhyb3duLlxuXHRtb2R1bGUuZXhwb3J0cyA9IHJhd0FzYXA7XG5cdGZ1bmN0aW9uIHJh
d0FzYXAodGFzaykge1xuXHQgICAgaWYgKCFxdWV1ZS5sZW5ndGgpIHtcblx0ICAgICAgICByZXF1
ZXN0Rmx1c2goKTtcblx0ICAgICAgICBmbHVzaGluZyA9IHRydWU7XG5cdCAgICB9XG5cdCAgICAv
LyBFcXVpdmFsZW50IHRvIHB1c2gsIGJ1dCBhdm9pZHMgYSBmdW5jdGlvbiBjYWxsLlxuXHQgICAg
cXVldWVbcXVldWUubGVuZ3RoXSA9IHRhc2s7XG5cdH1cblx0XG5cdHZhciBxdWV1ZSA9IFtdO1xu
XHQvLyBPbmNlIGEgZmx1c2ggaGFzIGJlZW4gcmVxdWVzdGVkLCBubyBmdXJ0aGVyIGNhbGxzIHRv
IGByZXF1ZXN0Rmx1c2hgIGFyZVxuXHQvLyBuZWNlc3NhcnkgdW50aWwgdGhlIG5leHQgYGZsdXNo
YCBjb21wbGV0ZXMuXG5cdHZhciBmbHVzaGluZyA9IGZhbHNlO1xuXHQvLyBgcmVxdWVzdEZsdXNo
YCBpcyBhbiBpbXBsZW1lbnRhdGlvbi1zcGVjaWZpYyBtZXRob2QgdGhhdCBhdHRlbXB0cyB0byBr
aWNrXG5cdC8vIG9mZiBhIGBmbHVzaGAgZXZlbnQgYXMgcXVpY2tseSBhcyBwb3NzaWJsZS4gYGZs
dXNoYCB3aWxsIGF0dGVtcHQgdG8gZXhoYXVzdFxuXHQvLyB0aGUgZXZlbnQgcXVldWUgYmVmb3Jl
IHlpZWxkaW5nIHRvIHRoZSBicm93c2VyJ3Mgb3duIGV2ZW50IGxvb3AuXG5cdHZhciByZXF1ZXN0
Rmx1c2g7XG5cdC8vIFRoZSBwb3NpdGlvbiBvZiB0aGUgbmV4dCB0YXNrIHRvIGV4ZWN1dGUgaW4g
dGhlIHRhc2sgcXVldWUuIFRoaXMgaXNcblx0Ly8gcHJlc2VydmVkIGJldHdlZW4gY2FsbHMgdG8g
YGZsdXNoYCBzbyB0aGF0IGl0IGNhbiBiZSByZXN1bWVkIGlmXG5cdC8vIGEgdGFzayB0aHJvd3Mg
YW4gZXhjZXB0aW9uLlxuXHR2YXIgaW5kZXggPSAwO1xuXHQvLyBJZiBhIHRhc2sgc2NoZWR1bGVz
IGFkZGl0aW9uYWwgdGFza3MgcmVjdXJzaXZlbHksIHRoZSB0YXNrIHF1ZXVlIGNhbiBncm93XG5c
dC8vIHVuYm91bmRlZC4gVG8gcHJldmVudCBtZW1vcnkgZXhoYXVzdGlvbiwgdGhlIHRhc2sgcXVl
dWUgd2lsbCBwZXJpb2RpY2FsbHlcblx0Ly8gdHJ1bmNhdGUgYWxyZWFkeS1jb21wbGV0ZWQgdGFz
a3MuXG5cdHZhciBjYXBhY2l0eSA9IDEwMjQ7XG5cdFxuXHQvLyBUaGUgZmx1c2ggZnVuY3Rpb24g
cHJvY2Vzc2VzIGFsbCB0YXNrcyB0aGF0IGhhdmUgYmVlbiBzY2hlZHVsZWQgd2l0aFxuXHQvLyBg
cmF3QXNhcGAgdW5sZXNzIGFuZCB1bnRpbCBvbmUgb2YgdGhvc2UgdGFza3MgdGhyb3dzIGFuIGV4
Y2VwdGlvbi5cblx0Ly8gSWYgYSB0YXNrIHRocm93cyBhbiBleGNlcHRpb24sIGBmbHVzaGAgZW5z
dXJlcyB0aGF0IGl0cyBzdGF0ZSB3aWxsIHJlbWFpblxuXHQvLyBjb25zaXN0ZW50IGFuZCB3aWxs
IHJlc3VtZSB3aGVyZSBpdCBsZWZ0IG9mZiB3aGVuIGNhbGxlZCBhZ2Fpbi5cblx0Ly8gSG93ZXZl
ciwgYGZsdXNoYCBkb2VzIG5vdCBtYWtlIGFueSBhcnJhbmdlbWVudHMgdG8gYmUgY2FsbGVkIGFn
YWluIGlmIGFuXG5cdC8vIGV4Y2VwdGlvbiBpcyB0aHJvd24uXG5cdGZ1bmN0aW9uIGZsdXNoKCkg
e1xuXHQgICAgd2hpbGUgKGluZGV4IDwgcXVldWUubGVuZ3RoKSB7XG5cdCAgICAgICAgdmFyIGN1
cnJlbnRJbmRleCA9IGluZGV4O1xuXHQgICAgICAgIC8vIEFkdmFuY2UgdGhlIGluZGV4IGJlZm9y
ZSBjYWxsaW5nIHRoZSB0YXNrLiBUaGlzIGVuc3VyZXMgdGhhdCB3ZSB3aWxsXG5cdCAgICAgICAg
Ly8gYmVnaW4gZmx1c2hpbmcgb24gdGhlIG5leHQgdGFzayB0aGUgdGFzayB0aHJvd3MgYW4gZXJy
b3IuXG5cdCAgICAgICAgaW5kZXggPSBpbmRleCArIDE7XG5cdCAgICAgICAgcXVldWVbY3VycmVu
dEluZGV4XS5jYWxsKCk7XG5cdCAgICAgICAgLy8gUHJldmVudCBsZWFraW5nIG1lbW9yeSBmb3Ig
bG9uZyBjaGFpbnMgb2YgcmVjdXJzaXZlIGNhbGxzIHRvIGBhc2FwYC5cblx0ICAgICAgICAvLyBJ
ZiB3ZSBjYWxsIGBhc2FwYCB3aXRoaW4gdGFza3Mgc2NoZWR1bGVkIGJ5IGBhc2FwYCwgdGhlIHF1
ZXVlIHdpbGxcblx0ICAgICAgICAvLyBncm93LCBidXQgdG8gYXZvaWQgYW4gTyhuKSB3YWxrIGZv
ciBldmVyeSB0YXNrIHdlIGV4ZWN1dGUsIHdlIGRvbid0XG5cdCAgICAgICAgLy8gc2hpZnQgdGFz
a3Mgb2ZmIHRoZSBxdWV1ZSBhZnRlciB0aGV5IGhhdmUgYmVlbiBleGVjdXRlZC5cblx0ICAgICAg
ICAvLyBJbnN0ZWFkLCB3ZSBwZXJpb2RpY2FsbHkgc2hpZnQgMTAyNCB0YXNrcyBvZmYgdGhlIHF1
ZXVlLlxuXHQgICAgICAgIGlmIChpbmRleCA+IGNhcGFjaXR5KSB7XG5cdCAgICAgICAgICAgIC8v
IE1hbnVhbGx5IHNoaWZ0IGFsbCB2YWx1ZXMgc3RhcnRpbmcgYXQgdGhlIGluZGV4IGJhY2sgdG8g
dGhlXG5cdCAgICAgICAgICAgIC8vIGJlZ2lubmluZyBvZiB0aGUgcXVldWUuXG5cdCAgICAgICAg
ICAgIGZvciAodmFyIHNjYW4gPSAwLCBuZXdMZW5ndGggPSBxdWV1ZS5sZW5ndGggLSBpbmRleDsg
c2NhbiA8IG5ld0xlbmd0aDsgc2NhbisrKSB7XG5cdCAgICAgICAgICAgICAgICBxdWV1ZVtzY2Fu
XSA9IHF1ZXVlW3NjYW4gKyBpbmRleF07XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAg
cXVldWUubGVuZ3RoIC09IGluZGV4O1xuXHQgICAgICAgICAgICBpbmRleCA9IDA7XG5cdCAgICAg
ICAgfVxuXHQgICAgfVxuXHQgICAgcXVldWUubGVuZ3RoID0gMDtcblx0ICAgIGluZGV4ID0gMDtc
blx0ICAgIGZsdXNoaW5nID0gZmFsc2U7XG5cdH1cblx0XG5cdC8vIGByZXF1ZXN0Rmx1c2hgIGlz
IGltcGxlbWVudGVkIHVzaW5nIGEgc3RyYXRlZ3kgYmFzZWQgb24gZGF0YSBjb2xsZWN0ZWQgZnJv
bVxuXHQvLyBldmVyeSBhdmFpbGFibGUgU2F1Y2VMYWJzIFNlbGVuaXVtIHdlYiBkcml2ZXIgd29y
a2VyIGF0IHRpbWUgb2Ygd3JpdGluZy5cblx0Ly8gaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vc3By
ZWFkc2hlZXRzL2QvMW1HLTVVWUd1cDVxeEdkRU1Xa2hQNkJXQ3owNTNOVWIyRTFRb1VUVTE2dUEv
ZWRpdCNnaWQ9NzgzNzI0NTkzXG5cdFxuXHQvLyBTYWZhcmkgNiBhbmQgNi4xIGZvciBkZXNrdG9w
LCBpUGFkLCBhbmQgaVBob25lIGFyZSB0aGUgb25seSBicm93c2VycyB0aGF0XG5cdC8vIGhhdmUg
V2ViS2l0TXV0YXRpb25PYnNlcnZlciBidXQgbm90IHVuLXByZWZpeGVkIE11dGF0aW9uT2JzZXJ2
ZXIuXG5cdC8vIE11c3QgdXNlIGBnbG9iYWxgIG9yIGBzZWxmYCBpbnN0ZWFkIG9mIGB3aW5kb3dg
IHRvIHdvcmsgaW4gYm90aCBmcmFtZXMgYW5kIHdlYlxuXHQvLyB3b3JrZXJzLiBgZ2xvYmFsYCBp
cyBhIHByb3Zpc2lvbiBvZiBCcm93c2VyaWZ5LCBNciwgTXJzLCBvciBNb3AuXG5cdFxuXHQvKiBn
bG9iYWxzIHNlbGYgKi9cblx0dmFyIHNjb3BlID0gdHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmlu
ZWRcIiA/IGdsb2JhbCA6IHNlbGY7XG5cdHZhciBCcm93c2VyTXV0YXRpb25PYnNlcnZlciA9IHNj
b3BlLk11dGF0aW9uT2JzZXJ2ZXIgfHwgc2NvcGUuV2ViS2l0TXV0YXRpb25PYnNlcnZlcjtcblx0
XG5cdC8vIE11dGF0aW9uT2JzZXJ2ZXJzIGFyZSBkZXNpcmFibGUgYmVjYXVzZSB0aGV5IGhhdmUg
aGlnaCBwcmlvcml0eSBhbmQgd29ya1xuXHQvLyByZWxpYWJseSBldmVyeXdoZXJlIHRoZXkgYXJl
IGltcGxlbWVudGVkLlxuXHQvLyBUaGV5IGFyZSBpbXBsZW1lbnRlZCBpbiBhbGwgbW9kZXJuIGJy
b3dzZXJzLlxuXHQvL1xuXHQvLyAtIEFuZHJvaWQgNC00LjNcblx0Ly8gLSBDaHJvbWUgMjYtMzRc
blx0Ly8gLSBGaXJlZm94IDE0LTI5XG5cdC8vIC0gSW50ZXJuZXQgRXhwbG9yZXIgMTFcblx0Ly8g
LSBpUGFkIFNhZmFyaSA2LTcuMVxuXHQvLyAtIGlQaG9uZSBTYWZhcmkgNy03LjFcblx0Ly8gLSBT
YWZhcmkgNi03XG5cdGlmICh0eXBlb2YgQnJvd3Nlck11dGF0aW9uT2JzZXJ2ZXIgPT09IFwiZnVu
Y3Rpb25cIikge1xuXHQgICAgcmVxdWVzdEZsdXNoID0gbWFrZVJlcXVlc3RDYWxsRnJvbU11dGF0
aW9uT2JzZXJ2ZXIoZmx1c2gpO1xuXHRcblx0Ly8gTWVzc2FnZUNoYW5uZWxzIGFyZSBkZXNpcmFi
bGUgYmVjYXVzZSB0aGV5IGdpdmUgZGlyZWN0IGFjY2VzcyB0byB0aGUgSFRNTFxuXHQvLyB0YXNr
IHF1ZXVlLCBhcmUgaW1wbGVtZW50ZWQgaW4gSW50ZXJuZXQgRXhwbG9yZXIgMTAsIFNhZmFyaSA1
LjAtMSwgYW5kIE9wZXJhXG5cdC8vIDExLTEyLCBhbmQgaW4gd2ViIHdvcmtlcnMgaW4gbWFueSBl
bmdpbmVzLlxuXHQvLyBBbHRob3VnaCBtZXNzYWdlIGNoYW5uZWxzIHlpZWxkIHRvIGFueSBxdWV1
ZWQgcmVuZGVyaW5nIGFuZCBJTyB0YXNrcywgdGhleVxuXHQvLyB3b3VsZCBiZSBiZXR0ZXIgdGhh
biBpbXBvc2luZyB0aGUgNG1zIGRlbGF5IG9mIHRpbWVycy5cblx0Ly8gSG93ZXZlciwgdGhleSBk
byBub3Qgd29yayByZWxpYWJseSBpbiBJbnRlcm5ldCBFeHBsb3JlciBvciBTYWZhcmkuXG5cdFxu
XHQvLyBJbnRlcm5ldCBFeHBsb3JlciAxMCBpcyB0aGUgb25seSBicm93c2VyIHRoYXQgaGFzIHNl
dEltbWVkaWF0ZSBidXQgZG9lc1xuXHQvLyBub3QgaGF2ZSBNdXRhdGlvbk9ic2VydmVycy5cblx0
Ly8gQWx0aG91Z2ggc2V0SW1tZWRpYXRlIHlpZWxkcyB0byB0aGUgYnJvd3NlcidzIHJlbmRlcmVy
LCBpdCB3b3VsZCBiZVxuXHQvLyBwcmVmZXJyYWJsZSB0byBmYWxsaW5nIGJhY2sgdG8gc2V0VGlt
ZW91dCBzaW5jZSBpdCBkb2VzIG5vdCBoYXZlXG5cdC8vIHRoZSBtaW5pbXVtIDRtcyBwZW5hbHR5
LlxuXHQvLyBVbmZvcnR1bmF0ZWx5IHRoZXJlIGFwcGVhcnMgdG8gYmUgYSBidWcgaW4gSW50ZXJu
ZXQgRXhwbG9yZXIgMTAgTW9iaWxlIChhbmRcblx0Ly8gRGVza3RvcCB0byBhIGxlc3NlciBleHRl
bnQpIHRoYXQgcmVuZGVycyBib3RoIHNldEltbWVkaWF0ZSBhbmRcblx0Ly8gTWVzc2FnZUNoYW5u
ZWwgdXNlbGVzcyBmb3IgdGhlIHB1cnBvc2VzIG9mIEFTQVAuXG5cdC8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS9rcmlza293YWwvcS9pc3N1ZXMvMzk2XG5cdFxuXHQvLyBUaW1lcnMgYXJlIGltcGxlbWVu
dGVkIHVuaXZlcnNhbGx5LlxuXHQvLyBXZSBmYWxsIGJhY2sgdG8gdGltZXJzIGluIHdvcmtlcnMg
aW4gbW9zdCBlbmdpbmVzLCBhbmQgaW4gZm9yZWdyb3VuZFxuXHQvLyBjb250ZXh0cyBpbiB0aGUg
Zm9sbG93aW5nIGJyb3dzZXJzLlxuXHQvLyBIb3dldmVyLCBub3RlIHRoYXQgZXZlbiB0aGlzIHNp
bXBsZSBjYXNlIHJlcXVpcmVzIG51YW5jZXMgdG8gb3BlcmF0ZSBpbiBhXG5cdC8vIGJyb2FkIHNw
ZWN0cnVtIG9mIGJyb3dzZXJzLlxuXHQvL1xuXHQvLyAtIEZpcmVmb3ggMy0xM1xuXHQvLyAtIElu
dGVybmV0IEV4cGxvcmVyIDYtOVxuXHQvLyAtIGlQYWQgU2FmYXJpIDQuM1xuXHQvLyAtIEx5bngg
Mi44Ljdcblx0fSBlbHNlIHtcblx0ICAgIHJlcXVlc3RGbHVzaCA9IG1ha2VSZXF1ZXN0Q2FsbEZy
b21UaW1lcihmbHVzaCk7XG5cdH1cblx0XG5cdC8vIGByZXF1ZXN0Rmx1c2hgIHJlcXVlc3RzIHRo
YXQgdGhlIGhpZ2ggcHJpb3JpdHkgZXZlbnQgcXVldWUgYmUgZmx1c2hlZCBhc1xuXHQvLyBzb29u
IGFzIHBvc3NpYmxlLlxuXHQvLyBUaGlzIGlzIHVzZWZ1bCB0byBwcmV2ZW50IGFuIGVycm9yIHRo
cm93biBpbiBhIHRhc2sgZnJvbSBzdGFsbGluZyB0aGUgZXZlbnRcblx0Ly8gcXVldWUgaWYgdGhl
IGV4Y2VwdGlvbiBoYW5kbGVkIGJ5IE5vZGUuanPigJlzXG5cdC8vIGBwcm9jZXNzLm9uKFwidW5j
YXVnaHRFeGNlcHRpb25cIilgIG9yIGJ5IGEgZG9tYWluLlxuXHRyYXdBc2FwLnJlcXVlc3RGbHVz
aCA9IHJlcXVlc3RGbHVzaDtcblx0XG5cdC8vIFRvIHJlcXVlc3QgYSBoaWdoIHByaW9yaXR5IGV2
ZW50LCB3ZSBpbmR1Y2UgYSBtdXRhdGlvbiBvYnNlcnZlciBieSB0b2dnbGluZ1xuXHQvLyB0aGUg
dGV4dCBvZiBhIHRleHQgbm9kZSBiZXR3ZWVuIFwiMVwiIGFuZCBcIi0xXCIuXG5cdGZ1bmN0aW9u
IG1ha2VSZXF1ZXN0Q2FsbEZyb21NdXRhdGlvbk9ic2VydmVyKGNhbGxiYWNrKSB7XG5cdCAgICB2
YXIgdG9nZ2xlID0gMTtcblx0ICAgIHZhciBvYnNlcnZlciA9IG5ldyBCcm93c2VyTXV0YXRpb25P
YnNlcnZlcihjYWxsYmFjayk7XG5cdCAgICB2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKFwiXCIpO1xuXHQgICAgb2JzZXJ2ZXIub2JzZXJ2ZShub2RlLCB7Y2hhcmFjdGVyRGF0YTog
dHJ1ZX0pO1xuXHQgICAgcmV0dXJuIGZ1bmN0aW9uIHJlcXVlc3RDYWxsKCkge1xuXHQgICAgICAg
IHRvZ2dsZSA9IC10b2dnbGU7XG5cdCAgICAgICAgbm9kZS5kYXRhID0gdG9nZ2xlO1xuXHQgICAg
fTtcblx0fVxuXHRcblx0Ly8gVGhlIG1lc3NhZ2UgY2hhbm5lbCB0ZWNobmlxdWUgd2FzIGRpc2Nv
dmVyZWQgYnkgTWFsdGUgVWJsIGFuZCB3YXMgdGhlXG5cdC8vIG9yaWdpbmFsIGZvdW5kYXRpb24g
Zm9yIHRoaXMgbGlicmFyeS5cblx0Ly8gaHR0cDovL3d3dy5ub25ibG9ja2luZy5pby8yMDExLzA2
L3dpbmRvd25leHR0aWNrLmh0bWxcblx0XG5cdC8vIFNhZmFyaSA2LjAuNSAoYXQgbGVhc3QpIGlu
dGVybWl0dGVudGx5IGZhaWxzIHRvIGNyZWF0ZSBtZXNzYWdlIHBvcnRzIG9uIGFcblx0Ly8gcGFn
ZSdzIGZpcnN0IGxvYWQuIFRoYW5rZnVsbHksIHRoaXMgdmVyc2lvbiBvZiBTYWZhcmkgc3VwcG9y
dHNcblx0Ly8gTXV0YXRpb25PYnNlcnZlcnMsIHNvIHdlIGRvbid0IG5lZWQgdG8gZmFsbCBiYWNr
IGluIHRoYXQgY2FzZS5cblx0XG5cdC8vIGZ1bmN0aW9uIG1ha2VSZXF1ZXN0Q2FsbEZyb21NZXNz
YWdlQ2hhbm5lbChjYWxsYmFjaykge1xuXHQvLyAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2Fn
ZUNoYW5uZWwoKTtcblx0Ly8gICAgIGNoYW5uZWwucG9ydDEub25tZXNzYWdlID0gY2FsbGJhY2s7
XG5cdC8vICAgICByZXR1cm4gZnVuY3Rpb24gcmVxdWVzdENhbGwoKSB7XG5cdC8vICAgICAgICAg
Y2hhbm5lbC5wb3J0Mi5wb3N0TWVzc2FnZSgwKTtcblx0Ly8gICAgIH07XG5cdC8vIH1cblx0XG5c
dC8vIEZvciByZWFzb25zIGV4cGxhaW5lZCBhYm92ZSwgd2UgYXJlIGFsc28gdW5hYmxlIHRvIHVz
ZSBgc2V0SW1tZWRpYXRlYFxuXHQvLyB1bmRlciBhbnkgY2lyY3Vtc3RhbmNlcy5cblx0Ly8gRXZl
biBpZiB3ZSB3ZXJlLCB0aGVyZSBpcyBhbm90aGVyIGJ1ZyBpbiBJbnRlcm5ldCBFeHBsb3JlciAx
MC5cblx0Ly8gSXQgaXMgbm90IHN1ZmZpY2llbnQgdG8gYXNzaWduIGBzZXRJbW1lZGlhdGVgIHRv
IGByZXF1ZXN0Rmx1c2hgIGJlY2F1c2Vcblx0Ly8gYHNldEltbWVkaWF0ZWAgbXVzdCBiZSBjYWxs
ZWQgKmJ5IG5hbWUqIGFuZCB0aGVyZWZvcmUgbXVzdCBiZSB3cmFwcGVkIGluIGFcblx0Ly8gY2xv
c3VyZS5cblx0Ly8gTmV2ZXIgZm9yZ2V0LlxuXHRcblx0Ly8gZnVuY3Rpb24gbWFrZVJlcXVlc3RD
YWxsRnJvbVNldEltbWVkaWF0ZShjYWxsYmFjaykge1xuXHQvLyAgICAgcmV0dXJuIGZ1bmN0aW9u
IHJlcXVlc3RDYWxsKCkge1xuXHQvLyAgICAgICAgIHNldEltbWVkaWF0ZShjYWxsYmFjayk7XG5c
dC8vICAgICB9O1xuXHQvLyB9XG5cdFxuXHQvLyBTYWZhcmkgNi4wIGhhcyBhIHByb2JsZW0gd2hl
cmUgdGltZXJzIHdpbGwgZ2V0IGxvc3Qgd2hpbGUgdGhlIHVzZXIgaXNcblx0Ly8gc2Nyb2xsaW5n
LiBUaGlzIHByb2JsZW0gZG9lcyBub3QgaW1wYWN0IEFTQVAgYmVjYXVzZSBTYWZhcmkgNi4wIHN1
cHBvcnRzXG5cdC8vIG11dGF0aW9uIG9ic2VydmVycywgc28gdGhhdCBpbXBsZW1lbnRhdGlvbiBp
cyB1c2VkIGluc3RlYWQuXG5cdC8vIEhvd2V2ZXIsIGlmIHdlIGV2ZXIgZWxlY3QgdG8gdXNlIHRp
bWVycyBpbiBTYWZhcmksIHRoZSBwcmV2YWxlbnQgd29yay1hcm91bmRcblx0Ly8gaXMgdG8gYWRk
IGEgc2Nyb2xsIGV2ZW50IGxpc3RlbmVyIHRoYXQgY2FsbHMgZm9yIGEgZmx1c2guXG5cdFxuXHQv
LyBgc2V0VGltZW91dGAgZG9lcyBub3QgY2FsbCB0aGUgcGFzc2VkIGNhbGxiYWNrIGlmIHRoZSBk
ZWxheSBpcyBsZXNzIHRoYW5cblx0Ly8gYXBwcm94aW1hdGVseSA3IGluIHdlYiB3b3JrZXJzIGlu
IEZpcmVmb3ggOCB0aHJvdWdoIDE4LCBhbmQgc29tZXRpbWVzIG5vdFxuXHQvLyBldmVuIHRoZW4u
XG5cdFxuXHRmdW5jdGlvbiBtYWtlUmVxdWVzdENhbGxGcm9tVGltZXIoY2FsbGJhY2spIHtcblx0
ICAgIHJldHVybiBmdW5jdGlvbiByZXF1ZXN0Q2FsbCgpIHtcblx0ICAgICAgICAvLyBXZSBkaXNw
YXRjaCBhIHRpbWVvdXQgd2l0aCBhIHNwZWNpZmllZCBkZWxheSBvZiAwIGZvciBlbmdpbmVzIHRo
YXRcblx0ICAgICAgICAvLyBjYW4gcmVsaWFibHkgYWNjb21tb2RhdGUgdGhhdCByZXF1ZXN0LiBU
aGlzIHdpbGwgdXN1YWxseSBiZSBzbmFwcGVkXG5cdCAgICAgICAgLy8gdG8gYSA0IG1pbGlzZWNv
bmQgZGVsYXksIGJ1dCBvbmNlIHdlJ3JlIGZsdXNoaW5nLCB0aGVyZSdzIG5vIGRlbGF5XG5cdCAg
ICAgICAgLy8gYmV0d2VlbiBldmVudHMuXG5cdCAgICAgICAgdmFyIHRpbWVvdXRIYW5kbGUgPSBz
ZXRUaW1lb3V0KGhhbmRsZVRpbWVyLCAwKTtcblx0ICAgICAgICAvLyBIb3dldmVyLCBzaW5jZSB0
aGlzIHRpbWVyIGdldHMgZnJlcXVlbnRseSBkcm9wcGVkIGluIEZpcmVmb3hcblx0ICAgICAgICAv
LyB3b3JrZXJzLCB3ZSBlbmxpc3QgYW4gaW50ZXJ2YWwgaGFuZGxlIHRoYXQgd2lsbCB0cnkgdG8g
ZmlyZVxuXHQgICAgICAgIC8vIGFuIGV2ZW50IDIwIHRpbWVzIHBlciBzZWNvbmQgdW50aWwgaXQg
c3VjY2VlZHMuXG5cdCAgICAgICAgdmFyIGludGVydmFsSGFuZGxlID0gc2V0SW50ZXJ2YWwoaGFu
ZGxlVGltZXIsIDUwKTtcblx0XG5cdCAgICAgICAgZnVuY3Rpb24gaGFuZGxlVGltZXIoKSB7XG5c
dCAgICAgICAgICAgIC8vIFdoaWNoZXZlciB0aW1lciBzdWNjZWVkcyB3aWxsIGNhbmNlbCBib3Ro
IHRpbWVycyBhbmRcblx0ICAgICAgICAgICAgLy8gZXhlY3V0ZSB0aGUgY2FsbGJhY2suXG5cdCAg
ICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SGFuZGxlKTtcblx0ICAgICAgICAgICAgY2xl
YXJJbnRlcnZhbChpbnRlcnZhbEhhbmRsZSk7XG5cdCAgICAgICAgICAgIGNhbGxiYWNrKCk7XG5c
dCAgICAgICAgfVxuXHQgICAgfTtcblx0fVxuXHRcblx0Ly8gVGhpcyBpcyBmb3IgYGFzYXAuanNg
IG9ubHkuXG5cdC8vIEl0cyBuYW1lIHdpbGwgYmUgcGVyaW9kaWNhbGx5IHJhbmRvbWl6ZWQgdG8g
YnJlYWsgYW55IGNvZGUgdGhhdCBkZXBlbmRzIG9uXG5cdC8vIGl0cyBleGlzdGVuY2UuXG5cdHJh
d0FzYXAubWFrZVJlcXVlc3RDYWxsRnJvbVRpbWVyID0gbWFrZVJlcXVlc3RDYWxsRnJvbVRpbWVy
O1xuXHRcblx0Ly8gQVNBUCB3YXMgb3JpZ2luYWxseSBhIG5leHRUaWNrIHNoaW0gaW5jbHVkZWQg
aW4gUS4gVGhpcyB3YXMgZmFjdG9yZWQgb3V0XG5cdC8vIGludG8gdGhpcyBBU0FQIHBhY2thZ2Uu
IEl0IHdhcyBsYXRlciBhZGFwdGVkIHRvIFJTVlAgd2hpY2ggbWFkZSBmdXJ0aGVyXG5cdC8vIGFt
ZW5kbWVudHMuIFRoZXNlIGRlY2lzaW9ucywgcGFydGljdWxhcmx5IHRvIG1hcmdpbmFsaXplIE1l
c3NhZ2VDaGFubmVsIGFuZFxuXHQvLyB0byBjYXB0dXJlIHRoZSBNdXRhdGlvbk9ic2VydmVyIGlt
cGxlbWVudGF0aW9uIGluIGEgY2xvc3VyZSwgd2VyZSBpbnRlZ3JhdGVkXG5cdC8vIGJhY2sgaW50
byBBU0FQIHByb3Blci5cblx0Ly8gaHR0cHM6Ly9naXRodWIuY29tL3RpbGRlaW8vcnN2cC5qcy9i
bG9iL2NkZGY3MjMyNTQ2YTljZjg1ODUyNGI3NWNkZTZmOWVkZjcyNjIwYTcvbGliL3JzdnAvYXNh
cC5qc1xuXHRcblx0LyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIChm
dW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0oKSkpKVxuXG4vKioqLyB9LFxuLyogMTk4ICovXG4v
KioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxu
XHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJf
X2VzTW9kdWxlXCIsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0ZXhwb3J0cy5jbGVhckNv
bXBsZXRlZCA9IGV4cG9ydHMuY29tcGxldGVBbGwgPSBleHBvcnRzLmNvbXBsZXRlVG9kbyA9IGV4
cG9ydHMuZWRpdFRvZG8gPSBleHBvcnRzLmRlbGV0ZVRvZG8gPSBleHBvcnRzLmFkZFRvZG8gPSB1
bmRlZmluZWQ7XG5cdFxuXHR2YXIgX0FjdGlvblR5cGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4
NSk7XG5cdFxuXHR2YXIgdHlwZXMgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChfQWN0aW9uVHlw
ZXMpO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQob2JqKSB7IGlmIChv
YmogJiYgb2JqLl9fZXNNb2R1bGUpIHsgcmV0dXJuIG9iajsgfSBlbHNlIHsgdmFyIG5ld09iaiA9
IHt9OyBpZiAob2JqICE9IG51bGwpIHsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoT2JqZWN0
LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgbmV3T2JqW2tleV0gPSBv
Ympba2V5XTsgfSB9IG5ld09iai5kZWZhdWx0ID0gb2JqOyByZXR1cm4gbmV3T2JqOyB9IH1cblx0
XG5cdHZhciBhZGRUb2RvID0gZXhwb3J0cy5hZGRUb2RvID0gZnVuY3Rpb24gYWRkVG9kbyh0ZXh0
KSB7XG5cdCAgcmV0dXJuIHsgdHlwZTogdHlwZXMuQUREX1RPRE8sIHRleHQ6IHRleHQgfTtcblx0
fTtcblx0dmFyIGRlbGV0ZVRvZG8gPSBleHBvcnRzLmRlbGV0ZVRvZG8gPSBmdW5jdGlvbiBkZWxl
dGVUb2RvKGlkKSB7XG5cdCAgcmV0dXJuIHsgdHlwZTogdHlwZXMuREVMRVRFX1RPRE8sIGlkOiBp
ZCB9O1xuXHR9O1xuXHR2YXIgZWRpdFRvZG8gPSBleHBvcnRzLmVkaXRUb2RvID0gZnVuY3Rpb24g
ZWRpdFRvZG8oaWQsIHRleHQpIHtcblx0ICByZXR1cm4geyB0eXBlOiB0eXBlcy5FRElUX1RPRE8s
IGlkOiBpZCwgdGV4dDogdGV4dCB9O1xuXHR9O1xuXHR2YXIgY29tcGxldGVUb2RvID0gZXhwb3J0
cy5jb21wbGV0ZVRvZG8gPSBmdW5jdGlvbiBjb21wbGV0ZVRvZG8oaWQpIHtcblx0ICByZXR1cm4g
eyB0eXBlOiB0eXBlcy5DT01QTEVURV9UT0RPLCBpZDogaWQgfTtcblx0fTtcblx0dmFyIGNvbXBs
ZXRlQWxsID0gZXhwb3J0cy5jb21wbGV0ZUFsbCA9IGZ1bmN0aW9uIGNvbXBsZXRlQWxsKCkge1xu
XHQgIHJldHVybiB7IHR5cGU6IHR5cGVzLkNPTVBMRVRFX0FMTCB9O1xuXHR9O1xuXHR2YXIgY2xl
YXJDb21wbGV0ZWQgPSBleHBvcnRzLmNsZWFyQ29tcGxldGVkID0gZnVuY3Rpb24gY2xlYXJDb21w
bGV0ZWQoKSB7XG5cdCAgcmV0dXJuIHsgdHlwZTogdHlwZXMuQ0xFQVJfQ09NUExFVEVEIH07XG5c
dH07XG5cbi8qKiovIH0sXG4vKiAxOTkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuXHQgIHZhbHVlOiB0
cnVlXG5cdH0pO1xuXHRcblx0dmFyIF9jcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsgZnVuY3Rp
b24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwg
cHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRv
ci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9y
LmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3Jp
cHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2Ny
aXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3Is
IHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0
aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykg
ZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3Ry
dWN0b3I7IH07IH0oKTtcblx0XG5cdHZhciBfRklMVEVSX1RJVExFUztcblx0XG5cdHZhciBfcmVh
Y3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTtcblx0XG5cdHZhciBfcmVhY3QyID0gX2ludGVy
b3BSZXF1aXJlRGVmYXVsdChfcmVhY3QpO1xuXHRcblx0dmFyIF9jbGFzc25hbWVzID0gX193ZWJw
YWNrX3JlcXVpcmVfXygzMSk7XG5cdFxuXHR2YXIgX2NsYXNzbmFtZXMyID0gX2ludGVyb3BSZXF1
aXJlRGVmYXVsdChfY2xhc3NuYW1lcyk7XG5cdFxuXHR2YXIgX1RvZG9GaWx0ZXJzID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg4Nik7XG5cdFxuXHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0
KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBv
YmogfTsgfVxuXHRcblx0ZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1
Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBu
ZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1c
blx0XG5cdGZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsg
aWYgKCFzZWxmKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4g
aW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gY2Fs
bCAmJiAodHlwZW9mIGNhbGwgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVu
Y3Rpb25cIikgPyBjYWxsIDogc2VsZjsgfVxuXHRcblx0ZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNs
YXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwi
ICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4
cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIgKyB0eXBl
b2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBl
ckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBz
dWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6
IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVj
dC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3Rv
X18gPSBzdXBlckNsYXNzOyB9XG5cdFxuXHRmdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBr
ZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmos
IGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1
ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJu
IG9iajsgfVxuXHRcblx0dmFyIEZJTFRFUl9USVRMRVMgPSAoX0ZJTFRFUl9USVRMRVMgPSB7fSwg
X2RlZmluZVByb3BlcnR5KF9GSUxURVJfVElUTEVTLCBfVG9kb0ZpbHRlcnMuU0hPV19BTEwsICdB
bGwnKSwgX2RlZmluZVByb3BlcnR5KF9GSUxURVJfVElUTEVTLCBfVG9kb0ZpbHRlcnMuU0hPV19B
Q1RJVkUsICdBY3RpdmUnKSwgX2RlZmluZVByb3BlcnR5KF9GSUxURVJfVElUTEVTLCBfVG9kb0Zp
bHRlcnMuU0hPV19DT01QTEVURUQsICdDb21wbGV0ZWQnKSwgX0ZJTFRFUl9USVRMRVMpO1xuXHRc
blx0dmFyIEZvb3RlciA9IGZ1bmN0aW9uIChfQ29tcG9uZW50KSB7XG5cdCAgX2luaGVyaXRzKEZv
b3RlciwgX0NvbXBvbmVudCk7XG5cdFxuXHQgIGZ1bmN0aW9uIEZvb3RlcigpIHtcblx0ICAgIF9j
bGFzc0NhbGxDaGVjayh0aGlzLCBGb290ZXIpO1xuXHRcblx0ICAgIHJldHVybiBfcG9zc2libGVD
b25zdHJ1Y3RvclJldHVybih0aGlzLCAoRm9vdGVyLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJv
dG90eXBlT2YoRm9vdGVyKSkuYXBwbHkodGhpcywgYXJndW1lbnRzKSk7XG5cdCAgfVxuXHRcblx0
ICBfY3JlYXRlQ2xhc3MoRm9vdGVyLCBbe1xuXHQgICAga2V5OiAncmVuZGVyVG9kb0NvdW50Jyxc
blx0ICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJUb2RvQ291bnQoKSB7XG5cdCAgICAgIHZhciBh
Y3RpdmVDb3VudCA9IHRoaXMucHJvcHMuYWN0aXZlQ291bnQ7XG5cdFxuXHQgICAgICB2YXIgaXRl
bVdvcmQgPSBhY3RpdmVDb3VudCA9PT0gMSA/ICdpdGVtJyA6ICdpdGVtcyc7XG5cdFxuXHQgICAg
ICByZXR1cm4gX3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXG5cdCAgICAgICAgJ3NwYW4n
LFxuXHQgICAgICAgIHsgY2xhc3NOYW1lOiAndG9kby1jb3VudCcgfSxcblx0ICAgICAgICBfcmVh
Y3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcblx0ICAgICAgICAgICdzdHJvbmcnLFxuXHQgICAg
ICAgICAgbnVsbCxcblx0ICAgICAgICAgIGFjdGl2ZUNvdW50IHx8ICdObydcblx0ICAgICAgICAp
LFxuXHQgICAgICAgICcgJyxcblx0ICAgICAgICBpdGVtV29yZCxcblx0ICAgICAgICAnIGxlZnQn
XG5cdCAgICAgICk7XG5cdCAgICB9XG5cdCAgfSwge1xuXHQgICAga2V5OiAncmVuZGVyRmlsdGVy
TGluaycsXG5cdCAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyRmlsdGVyTGluayhmaWx0ZXIpIHtc
blx0ICAgICAgdmFyIHRpdGxlID0gRklMVEVSX1RJVExFU1tmaWx0ZXJdO1xuXHQgICAgICB2YXIg
X3Byb3BzID0gdGhpcy5wcm9wcztcblx0ICAgICAgdmFyIHNlbGVjdGVkRmlsdGVyID0gX3Byb3Bz
LmZpbHRlcjtcblx0ICAgICAgdmFyIG9uU2hvdyA9IF9wcm9wcy5vblNob3c7XG5cdFxuXHRcblx0
ICAgICAgcmV0dXJuIF9yZWFjdDIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFxuXHQgICAgICAgICdh
Jyxcblx0ICAgICAgICB7IGNsYXNzTmFtZTogKDAsIF9jbGFzc25hbWVzMi5kZWZhdWx0KSh7IHNl
bGVjdGVkOiBmaWx0ZXIgPT09IHNlbGVjdGVkRmlsdGVyIH0pLFxuXHQgICAgICAgICAgc3R5bGU6
IHsgY3Vyc29yOiAncG9pbnRlcicgfSxcblx0ICAgICAgICAgIG9uQ2xpY2s6IGZ1bmN0aW9uIG9u
Q2xpY2soKSB7XG5cdCAgICAgICAgICAgIHJldHVybiBvblNob3coZmlsdGVyKTtcblx0ICAgICAg
ICAgIH0gfSxcblx0ICAgICAgICB0aXRsZVxuXHQgICAgICApO1xuXHQgICAgfVxuXHQgIH0sIHtc
blx0ICAgIGtleTogJ3JlbmRlckNsZWFyQnV0dG9uJyxcblx0ICAgIHZhbHVlOiBmdW5jdGlvbiBy
ZW5kZXJDbGVhckJ1dHRvbigpIHtcblx0ICAgICAgdmFyIF9wcm9wczIgPSB0aGlzLnByb3BzO1xu
XHQgICAgICB2YXIgY29tcGxldGVkQ291bnQgPSBfcHJvcHMyLmNvbXBsZXRlZENvdW50O1xuXHQg
ICAgICB2YXIgb25DbGVhckNvbXBsZXRlZCA9IF9wcm9wczIub25DbGVhckNvbXBsZXRlZDtcblx0
XG5cdCAgICAgIGlmIChjb21wbGV0ZWRDb3VudCA+IDApIHtcblx0ICAgICAgICByZXR1cm4gX3Jl
YWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXG5cdCAgICAgICAgICAnYnV0dG9uJyxcblx0ICAg
ICAgICAgIHsgY2xhc3NOYW1lOiAnY2xlYXItY29tcGxldGVkJyxcblx0ICAgICAgICAgICAgb25D
bGljazogb25DbGVhckNvbXBsZXRlZCB9LFxuXHQgICAgICAgICAgJ0NsZWFyIGNvbXBsZXRlZCdc
blx0ICAgICAgICApO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfSwge1xuXHQgICAga2V5OiAn
cmVuZGVyJyxcblx0ICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG5cdCAgICAgIHZhciBf
dGhpczIgPSB0aGlzO1xuXHRcblx0ICAgICAgcmV0dXJuIF9yZWFjdDIuZGVmYXVsdC5jcmVhdGVF
bGVtZW50KFxuXHQgICAgICAgICdmb290ZXInLFxuXHQgICAgICAgIHsgY2xhc3NOYW1lOiAnZm9v
dGVyJyB9LFxuXHQgICAgICAgIHRoaXMucmVuZGVyVG9kb0NvdW50KCksXG5cdCAgICAgICAgX3Jl
YWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXG5cdCAgICAgICAgICAndWwnLFxuXHQgICAgICAg
ICAgeyBjbGFzc05hbWU6ICdmaWx0ZXJzJyB9LFxuXHQgICAgICAgICAgW19Ub2RvRmlsdGVycy5T
SE9XX0FMTCwgX1RvZG9GaWx0ZXJzLlNIT1dfQUNUSVZFLCBfVG9kb0ZpbHRlcnMuU0hPV19DT01Q
TEVURURdLm1hcChmdW5jdGlvbiAoZmlsdGVyKSB7XG5cdCAgICAgICAgICAgIHJldHVybiBfcmVh
Y3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcblx0ICAgICAgICAgICAgICAnbGknLFxuXHQgICAg
ICAgICAgICAgIHsga2V5OiBmaWx0ZXIgfSxcblx0ICAgICAgICAgICAgICBfdGhpczIucmVuZGVy
RmlsdGVyTGluayhmaWx0ZXIpXG5cdCAgICAgICAgICAgICk7XG5cdCAgICAgICAgICB9KVxuXHQg
ICAgICAgICksXG5cdCAgICAgICAgdGhpcy5yZW5kZXJDbGVhckJ1dHRvbigpXG5cdCAgICAgICk7
XG5cdCAgICB9XG5cdCAgfV0pO1xuXHRcblx0ICByZXR1cm4gRm9vdGVyO1xuXHR9KF9yZWFjdC5D
b21wb25lbnQpO1xuXHRcblx0Rm9vdGVyLnByb3BUeXBlcyA9IHtcblx0ICBjb21wbGV0ZWRDb3Vu
dDogX3JlYWN0LlByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcblx0ICBhY3RpdmVDb3VudDog
X3JlYWN0LlByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxcblx0ICBmaWx0ZXI6IF9yZWFjdC5Q
cm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG5cdCAgb25DbGVhckNvbXBsZXRlZDogX3JlYWN0
LlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG5cdCAgb25TaG93OiBfcmVhY3QuUHJvcFR5cGVz
LmZ1bmMuaXNSZXF1aXJlZFxuXHR9O1xuXHRleHBvcnRzLmRlZmF1bHQgPSBGb290ZXI7XG5cbi8q
KiovIH0sXG4vKiAyMDAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJw
YWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuXHQgIHZhbHVlOiB0cnVlXG5cdH0p
O1xuXHRcblx0dmFyIF9jcmVhdGVDbGFzcyA9IGZ1bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5l
UHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVu
Z3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJh
YmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3Vy
YWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0
YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5
LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5jdGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJv
cHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0
cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJv
cGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07
IH0oKTtcblx0XG5cdHZhciBfcmVhY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTtcblx0XG5c
dHZhciBfcmVhY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfcmVhY3QpO1xuXHRcblx0dmFy
IF9Ub2RvVGV4dElucHV0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4NCk7XG5cdFxuXHR2YXIgX1Rv
ZG9UZXh0SW5wdXQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfVG9kb1RleHRJbnB1dCk7XG5c
dFxuXHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYm
IG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXHRcblx0ZnVuY3Rp
b24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5j
ZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90
IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblx0XG5cdGZ1bmN0aW9uIF9wb3Nz
aWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKCFzZWxmKSB7IHRocm93IG5l
dyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigp
IGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gY2FsbCAmJiAodHlwZW9mIGNhbGwgPT09
IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikgPyBjYWxsIDogc2Vs
ZjsgfVxuXHRcblx0ZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlm
ICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51
bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIg
YmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3Vi
Q2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3Mu
cHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTog
ZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVy
Q2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJD
bGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5c
dFxuXHR2YXIgSGVhZGVyID0gZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcblx0ICBfaW5oZXJpdHMo
SGVhZGVyLCBfQ29tcG9uZW50KTtcblx0XG5cdCAgZnVuY3Rpb24gSGVhZGVyKCkge1xuXHQgICAg
dmFyIF9yZWY7XG5cdFxuXHQgICAgdmFyIF90ZW1wLCBfdGhpcywgX3JldDtcblx0XG5cdCAgICBf
Y2xhc3NDYWxsQ2hlY2sodGhpcywgSGVhZGVyKTtcblx0XG5cdCAgICBmb3IgKHZhciBfbGVuID0g
YXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9s
ZW47IF9rZXkrKykge1xuXHQgICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuXHQg
ICAgfVxuXHRcblx0ICAgIHJldHVybiBfcmV0ID0gKF90ZW1wID0gKF90aGlzID0gX3Bvc3NpYmxl
Q29uc3RydWN0b3JSZXR1cm4odGhpcywgKF9yZWYgPSBIZWFkZXIuX19wcm90b19fIHx8IE9iamVj
dC5nZXRQcm90b3R5cGVPZihIZWFkZXIpKS5jYWxsLmFwcGx5KF9yZWYsIFt0aGlzXS5jb25jYXQo
YXJncykpKSwgX3RoaXMpLCBfdGhpcy5oYW5kbGVTYXZlID0gZnVuY3Rpb24gKHRleHQpIHtcblx0
ICAgICAgaWYgKHRleHQubGVuZ3RoICE9PSAwKSB7XG5cdCAgICAgICAgX3RoaXMucHJvcHMuYWRk
VG9kbyh0ZXh0KTtcblx0ICAgICAgfVxuXHQgICAgfSwgX3RlbXApLCBfcG9zc2libGVDb25zdHJ1
Y3RvclJldHVybihfdGhpcywgX3JldCk7XG5cdCAgfVxuXHRcblx0ICBfY3JlYXRlQ2xhc3MoSGVh
ZGVyLCBbe1xuXHQgICAga2V5OiAncmVuZGVyJyxcblx0ICAgIHZhbHVlOiBmdW5jdGlvbiByZW5k
ZXIoKSB7XG5cdCAgICAgIHJldHVybiBfcmVhY3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcblx0
ICAgICAgICAnaGVhZGVyJyxcblx0ICAgICAgICB7IGNsYXNzTmFtZTogJ2hlYWRlcicgfSxcblx0
ICAgICAgICBfcmVhY3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcblx0ICAgICAgICAgICdoMScs
XG5cdCAgICAgICAgICBudWxsLFxuXHQgICAgICAgICAgJ3RvZG9zJ1xuXHQgICAgICAgICksXG5c
dCAgICAgICAgX3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX1RvZG9UZXh0SW5wdXQyLmRl
ZmF1bHQsIHsgbmV3VG9kbzogdHJ1ZSxcblx0ICAgICAgICAgIG9uU2F2ZTogdGhpcy5oYW5kbGVT
YXZlLFxuXHQgICAgICAgICAgcGxhY2Vob2xkZXI6ICdXaGF0IG5lZWRzIHRvIGJlIGRvbmU/JyB9
KVxuXHQgICAgICApO1xuXHQgICAgfVxuXHQgIH1dKTtcblx0XG5cdCAgcmV0dXJuIEhlYWRlcjtc
blx0fShfcmVhY3QuQ29tcG9uZW50KTtcblx0XG5cdEhlYWRlci5wcm9wVHlwZXMgPSB7XG5cdCAg
YWRkVG9kbzogX3JlYWN0LlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcblx0fTtcblx0ZXhwb3J0
cy5kZWZhdWx0ID0gSGVhZGVyO1xuXG4vKioqLyB9LFxuLyogMjAxICovXG4vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmlj
dCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIs
IHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0XG5cdHZhciBfZXh0ZW5kcyA9IE9iamVjdC5h
c3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50
cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkg
aW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291
cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJn
ZXQ7IH07XG5cdFxuXHR2YXIgX2NyZWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBk
ZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9w
cy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVu
dW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29u
ZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9y
LndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRv
ci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJv
dG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMo
Q29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZp
bmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3Rv
cjsgfTsgfSgpO1xuXHRcblx0dmFyIF9UT0RPX0ZJTFRFUlM7XG5cdFxuXHR2YXIgX3JlYWN0ID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxMik7XG5cdFxuXHR2YXIgX3JlYWN0MiA9IF9pbnRlcm9wUmVx
dWlyZURlZmF1bHQoX3JlYWN0KTtcblx0XG5cdHZhciBfVG9kb0l0ZW0gPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDIwMik7XG5cdFxuXHR2YXIgX1RvZG9JdGVtMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1
bHQoX1RvZG9JdGVtKTtcblx0XG5cdHZhciBfRm9vdGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygx
OTkpO1xuXHRcblx0dmFyIF9Gb290ZXIyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfRm9vdGVy
KTtcblx0XG5cdHZhciBfVG9kb0ZpbHRlcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg2KTtcblx0
XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYg
b2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cdFxuXHRmdW5jdGlv
biBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNl
IGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qg
Y2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXHRcblx0ZnVuY3Rpb24gX3Bvc3Np
YmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoIXNlbGYpIHsgdGhyb3cgbmV3
IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkg
aGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBjYWxsICYmICh0eXBlb2YgY2FsbCA9PT0g
XCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSA/IGNhbGwgOiBzZWxm
OyB9XG5cdFxuXHRmdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYg
KHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVs
bCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBi
ZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJD
bGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5w
cm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBm
YWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJD
bGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1YkNs
YXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1cblx0
XG5cdGZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgdmFsdWUpIHsgaWYgKGtleSBp
biBvYmopIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7IHZhbHVlOiB2YWx1ZSwg
ZW51bWVyYWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlLCB3cml0YWJsZTogdHJ1ZSB9KTsg
fSBlbHNlIHsgb2JqW2tleV0gPSB2YWx1ZTsgfSByZXR1cm4gb2JqOyB9XG5cdFxuXHR2YXIgVE9E
T19GSUxURVJTID0gKF9UT0RPX0ZJTFRFUlMgPSB7fSwgX2RlZmluZVByb3BlcnR5KF9UT0RPX0ZJ
TFRFUlMsIF9Ub2RvRmlsdGVycy5TSE9XX0FMTCwgZnVuY3Rpb24gKCkge1xuXHQgIHJldHVybiB0
cnVlO1xuXHR9KSwgX2RlZmluZVByb3BlcnR5KF9UT0RPX0ZJTFRFUlMsIF9Ub2RvRmlsdGVycy5T
SE9XX0FDVElWRSwgZnVuY3Rpb24gKHRvZG8pIHtcblx0ICByZXR1cm4gIXRvZG8uY29tcGxldGVk
O1xuXHR9KSwgX2RlZmluZVByb3BlcnR5KF9UT0RPX0ZJTFRFUlMsIF9Ub2RvRmlsdGVycy5TSE9X
X0NPTVBMRVRFRCwgZnVuY3Rpb24gKHRvZG8pIHtcblx0ICByZXR1cm4gdG9kby5jb21wbGV0ZWQ7
XG5cdH0pLCBfVE9ET19GSUxURVJTKTtcblx0XG5cdHZhciBNYWluU2VjdGlvbiA9IGZ1bmN0aW9u
IChfQ29tcG9uZW50KSB7XG5cdCAgX2luaGVyaXRzKE1haW5TZWN0aW9uLCBfQ29tcG9uZW50KTtc
blx0XG5cdCAgZnVuY3Rpb24gTWFpblNlY3Rpb24oKSB7XG5cdCAgICB2YXIgX3JlZjtcblx0XG5c
dCAgICB2YXIgX3RlbXAsIF90aGlzLCBfcmV0O1xuXHRcblx0ICAgIF9jbGFzc0NhbGxDaGVjayh0
aGlzLCBNYWluU2VjdGlvbik7XG5cdFxuXHQgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5s
ZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5Kysp
IHtcblx0ICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcblx0ICAgIH1cblx0XG5c
dCAgICByZXR1cm4gX3JldCA9IChfdGVtcCA9IChfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9y
UmV0dXJuKHRoaXMsIChfcmVmID0gTWFpblNlY3Rpb24uX19wcm90b19fIHx8IE9iamVjdC5nZXRQ
cm90b3R5cGVPZihNYWluU2VjdGlvbikpLmNhbGwuYXBwbHkoX3JlZiwgW3RoaXNdLmNvbmNhdChh
cmdzKSkpLCBfdGhpcyksIF90aGlzLnN0YXRlID0geyBmaWx0ZXI6IF9Ub2RvRmlsdGVycy5TSE9X
X0FMTCB9LCBfdGhpcy5oYW5kbGVDbGVhckNvbXBsZXRlZCA9IGZ1bmN0aW9uICgpIHtcblx0ICAg
ICAgX3RoaXMucHJvcHMuYWN0aW9ucy5jbGVhckNvbXBsZXRlZCgpO1xuXHQgICAgfSwgX3RoaXMu
aGFuZGxlU2hvdyA9IGZ1bmN0aW9uIChmaWx0ZXIpIHtcblx0ICAgICAgX3RoaXMuc2V0U3RhdGUo
eyBmaWx0ZXI6IGZpbHRlciB9KTtcblx0ICAgIH0sIF90ZW1wKSwgX3Bvc3NpYmxlQ29uc3RydWN0
b3JSZXR1cm4oX3RoaXMsIF9yZXQpO1xuXHQgIH1cblx0XG5cdCAgX2NyZWF0ZUNsYXNzKE1haW5T
ZWN0aW9uLCBbe1xuXHQgICAga2V5OiAncmVuZGVyVG9nZ2xlQWxsJyxcblx0ICAgIHZhbHVlOiBm
dW5jdGlvbiByZW5kZXJUb2dnbGVBbGwoY29tcGxldGVkQ291bnQpIHtcblx0ICAgICAgdmFyIF9w
cm9wcyA9IHRoaXMucHJvcHM7XG5cdCAgICAgIHZhciB0b2RvcyA9IF9wcm9wcy50b2Rvcztcblx0
ICAgICAgdmFyIGFjdGlvbnMgPSBfcHJvcHMuYWN0aW9ucztcblx0XG5cdCAgICAgIGlmICh0b2Rv
cy5sZW5ndGggPiAwKSB7XG5cdCAgICAgICAgcmV0dXJuIF9yZWFjdDIuZGVmYXVsdC5jcmVhdGVF
bGVtZW50KCdpbnB1dCcsIHsgY2xhc3NOYW1lOiAndG9nZ2xlLWFsbCcsXG5cdCAgICAgICAgICB0
eXBlOiAnY2hlY2tib3gnLFxuXHQgICAgICAgICAgY2hlY2tlZDogY29tcGxldGVkQ291bnQgPT09
IHRvZG9zLmxlbmd0aCxcblx0ICAgICAgICAgIG9uQ2hhbmdlOiBhY3Rpb25zLmNvbXBsZXRlQWxs
IH0pO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfSwge1xuXHQgICAga2V5OiAncmVuZGVyRm9v
dGVyJyxcblx0ICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXJGb290ZXIoY29tcGxldGVkQ291bnQp
IHtcblx0ICAgICAgdmFyIHRvZG9zID0gdGhpcy5wcm9wcy50b2Rvcztcblx0ICAgICAgdmFyIGZp
bHRlciA9IHRoaXMuc3RhdGUuZmlsdGVyO1xuXHRcblx0ICAgICAgdmFyIGFjdGl2ZUNvdW50ID0g
dG9kb3MubGVuZ3RoIC0gY29tcGxldGVkQ291bnQ7XG5cdFxuXHQgICAgICBpZiAodG9kb3MubGVu
Z3RoKSB7XG5cdCAgICAgICAgcmV0dXJuIF9yZWFjdDIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9G
b290ZXIyLmRlZmF1bHQsIHsgY29tcGxldGVkQ291bnQ6IGNvbXBsZXRlZENvdW50LFxuXHQgICAg
ICAgICAgYWN0aXZlQ291bnQ6IGFjdGl2ZUNvdW50LFxuXHQgICAgICAgICAgZmlsdGVyOiBmaWx0
ZXIsXG5cdCAgICAgICAgICBvbkNsZWFyQ29tcGxldGVkOiB0aGlzLmhhbmRsZUNsZWFyQ29tcGxl
dGVkLmJpbmQodGhpcyksXG5cdCAgICAgICAgICBvblNob3c6IHRoaXMuaGFuZGxlU2hvdy5iaW5k
KHRoaXMpIH0pO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfSwge1xuXHQgICAga2V5OiAncmVu
ZGVyJyxcblx0ICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG5cdCAgICAgIHZhciBfcHJv
cHMyID0gdGhpcy5wcm9wcztcblx0ICAgICAgdmFyIHRvZG9zID0gX3Byb3BzMi50b2Rvcztcblx0
ICAgICAgdmFyIGFjdGlvbnMgPSBfcHJvcHMyLmFjdGlvbnM7XG5cdCAgICAgIHZhciBmaWx0ZXIg
PSB0aGlzLnN0YXRlLmZpbHRlcjtcblx0XG5cdFxuXHQgICAgICB2YXIgZmlsdGVyZWRUb2RvcyA9
IHRvZG9zLmZpbHRlcihUT0RPX0ZJTFRFUlNbZmlsdGVyXSk7XG5cdCAgICAgIHZhciBjb21wbGV0
ZWRDb3VudCA9IHRvZG9zLnJlZHVjZShmdW5jdGlvbiAoY291bnQsIHRvZG8pIHtcblx0ICAgICAg
ICByZXR1cm4gdG9kby5jb21wbGV0ZWQgPyBjb3VudCArIDEgOiBjb3VudDtcblx0ICAgICAgfSwg
MCk7XG5cdFxuXHQgICAgICByZXR1cm4gX3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXG5c
dCAgICAgICAgJ3NlY3Rpb24nLFxuXHQgICAgICAgIHsgY2xhc3NOYW1lOiAnbWFpbicgfSxcblx0
ICAgICAgICB0aGlzLnJlbmRlclRvZ2dsZUFsbChjb21wbGV0ZWRDb3VudCksXG5cdCAgICAgICAg
X3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXG5cdCAgICAgICAgICAndWwnLFxuXHQgICAg
ICAgICAgeyBjbGFzc05hbWU6ICd0b2RvLWxpc3QnIH0sXG5cdCAgICAgICAgICBmaWx0ZXJlZFRv
ZG9zLm1hcChmdW5jdGlvbiAodG9kbykge1xuXHQgICAgICAgICAgICByZXR1cm4gX3JlYWN0Mi5k
ZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX1RvZG9JdGVtMi5kZWZhdWx0LCBfZXh0ZW5kcyh7IGtleTog
dG9kby5pZCwgdG9kbzogdG9kbyB9LCBhY3Rpb25zKSk7XG5cdCAgICAgICAgICB9KVxuXHQgICAg
ICAgICksXG5cdCAgICAgICAgdGhpcy5yZW5kZXJGb290ZXIoY29tcGxldGVkQ291bnQpXG5cdCAg
ICAgICk7XG5cdCAgICB9XG5cdCAgfV0pO1xuXHRcblx0ICByZXR1cm4gTWFpblNlY3Rpb247XG5c
dH0oX3JlYWN0LkNvbXBvbmVudCk7XG5cdFxuXHRNYWluU2VjdGlvbi5wcm9wVHlwZXMgPSB7XG5c
dCAgdG9kb3M6IF9yZWFjdC5Qcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcblx0ICBhY3Rpb25z
OiBfcmVhY3QuUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkXG5cdH07XG5cdGV4cG9ydHMuZGVm
YXVsdCA9IE1haW5TZWN0aW9uO1xuXG4vKioqLyB9LFxuLyogMjAyICovXG4vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmlj
dCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIs
IHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0XG5cdHZhciBfY3JlYXRlQ2xhc3MgPSBmdW5j
dGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3Ig
KHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJv
cHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBm
YWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRl
c2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVy
dHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rp
b24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9w
cykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBp
ZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3Bz
KTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KCk7XG5cdFxuXHR2YXIgX3JlYWN0ID0gX193ZWJw
YWNrX3JlcXVpcmVfXygxMik7XG5cdFxuXHR2YXIgX3JlYWN0MiA9IF9pbnRlcm9wUmVxdWlyZURl
ZmF1bHQoX3JlYWN0KTtcblx0XG5cdHZhciBfY2xhc3NuYW1lcyA9IF9fd2VicGFja19yZXF1aXJl
X18oMzEpO1xuXHRcblx0dmFyIF9jbGFzc25hbWVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQo
X2NsYXNzbmFtZXMpO1xuXHRcblx0dmFyIF9Ub2RvVGV4dElucHV0ID0gX193ZWJwYWNrX3JlcXVp
cmVfXyg4NCk7XG5cdFxuXHR2YXIgX1RvZG9UZXh0SW5wdXQyID0gX2ludGVyb3BSZXF1aXJlRGVm
YXVsdChfVG9kb1RleHRJbnB1dCk7XG5cdFxuXHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZh
dWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0
OiBvYmogfTsgfVxuXHRcblx0ZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25z
dHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJv
dyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9
IH1cblx0XG5cdGZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwp
IHsgaWYgKCFzZWxmKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJl
ZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4g
Y2FsbCAmJiAodHlwZW9mIGNhbGwgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwi
ZnVuY3Rpb25cIikgPyBjYWxsIDogc2VsZjsgfVxuXHRcblx0ZnVuY3Rpb24gX2luaGVyaXRzKHN1
YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlv
blwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVy
IGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIgKyB0
eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShz
dXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVl
OiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFi
bGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9i
amVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3By
b3RvX18gPSBzdXBlckNsYXNzOyB9XG5cdFxuXHR2YXIgVG9kb0l0ZW0gPSBmdW5jdGlvbiAoX0Nv
bXBvbmVudCkge1xuXHQgIF9pbmhlcml0cyhUb2RvSXRlbSwgX0NvbXBvbmVudCk7XG5cdFxuXHQg
IGZ1bmN0aW9uIFRvZG9JdGVtKCkge1xuXHQgICAgdmFyIF9yZWY7XG5cdFxuXHQgICAgdmFyIF90
ZW1wLCBfdGhpcywgX3JldDtcblx0XG5cdCAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgVG9kb0l0
ZW0pO1xuXHRcblx0ICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0g
QXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG5cdCAgICAgIGFy
Z3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG5cdCAgICB9XG5cdFxuXHQgICAgcmV0dXJuIF9y
ZXQgPSAoX3RlbXAgPSAoX3RoaXMgPSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCAo
X3JlZiA9IFRvZG9JdGVtLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoVG9kb0l0
ZW0pKS5jYWxsLmFwcGx5KF9yZWYsIFt0aGlzXS5jb25jYXQoYXJncykpKSwgX3RoaXMpLCBfdGhp
cy5zdGF0ZSA9IHtcblx0ICAgICAgZWRpdGluZzogZmFsc2Vcblx0ICAgIH0sIF90aGlzLmhhbmRs
ZURvdWJsZUNsaWNrID0gZnVuY3Rpb24gKCkge1xuXHQgICAgICBfdGhpcy5zZXRTdGF0ZSh7IGVk
aXRpbmc6IHRydWUgfSk7XG5cdCAgICB9LCBfdGhpcy5oYW5kbGVTYXZlID0gZnVuY3Rpb24gKGlk
LCB0ZXh0KSB7XG5cdCAgICAgIGlmICh0ZXh0Lmxlbmd0aCA9PT0gMCkge1xuXHQgICAgICAgIF90
aGlzLnByb3BzLmRlbGV0ZVRvZG8oaWQpO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIF90
aGlzLnByb3BzLmVkaXRUb2RvKGlkLCB0ZXh0KTtcblx0ICAgICAgfVxuXHQgICAgICBfdGhpcy5z
ZXRTdGF0ZSh7IGVkaXRpbmc6IGZhbHNlIH0pO1xuXHQgICAgfSwgX3RlbXApLCBfcG9zc2libGVD
b25zdHJ1Y3RvclJldHVybihfdGhpcywgX3JldCk7XG5cdCAgfVxuXHRcblx0ICBfY3JlYXRlQ2xh
c3MoVG9kb0l0ZW0sIFt7XG5cdCAgICBrZXk6ICdyZW5kZXInLFxuXHQgICAgdmFsdWU6IGZ1bmN0
aW9uIHJlbmRlcigpIHtcblx0ICAgICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cdFxuXHQgICAgICB2
YXIgX3Byb3BzID0gdGhpcy5wcm9wcztcblx0ICAgICAgdmFyIHRvZG8gPSBfcHJvcHMudG9kbztc
blx0ICAgICAgdmFyIGNvbXBsZXRlVG9kbyA9IF9wcm9wcy5jb21wbGV0ZVRvZG87XG5cdCAgICAg
IHZhciBkZWxldGVUb2RvID0gX3Byb3BzLmRlbGV0ZVRvZG87XG5cdFxuXHRcblx0ICAgICAgdmFy
IGVsZW1lbnQgPSB2b2lkIDA7XG5cdCAgICAgIGlmICh0aGlzLnN0YXRlLmVkaXRpbmcpIHtcblx0
ICAgICAgICBlbGVtZW50ID0gX3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoX1RvZG9UZXh0
SW5wdXQyLmRlZmF1bHQsIHsgdGV4dDogdG9kby50ZXh0LFxuXHQgICAgICAgICAgZWRpdGluZzog
dGhpcy5zdGF0ZS5lZGl0aW5nLFxuXHQgICAgICAgICAgb25TYXZlOiBmdW5jdGlvbiBvblNhdmUo
dGV4dCkge1xuXHQgICAgICAgICAgICByZXR1cm4gX3RoaXMyLmhhbmRsZVNhdmUodG9kby5pZCwg
dGV4dCk7XG5cdCAgICAgICAgICB9IH0pO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIGVs
ZW1lbnQgPSBfcmVhY3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcblx0ICAgICAgICAgICdkaXYn
LFxuXHQgICAgICAgICAgeyBjbGFzc05hbWU6ICd2aWV3JyB9LFxuXHQgICAgICAgICAgX3JlYWN0
Mi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JywgeyBjbGFzc05hbWU6ICd0b2dnbGUnLFxu
XHQgICAgICAgICAgICB0eXBlOiAnY2hlY2tib3gnLFxuXHQgICAgICAgICAgICBjaGVja2VkOiB0
b2RvLmNvbXBsZXRlZCxcblx0ICAgICAgICAgICAgb25DaGFuZ2U6IGZ1bmN0aW9uIG9uQ2hhbmdl
KCkge1xuXHQgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0ZVRvZG8odG9kby5pZCk7XG5cdCAg
ICAgICAgICAgIH0gfSksXG5cdCAgICAgICAgICBfcmVhY3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVu
dChcblx0ICAgICAgICAgICAgJ2xhYmVsJyxcblx0ICAgICAgICAgICAgeyBvbkRvdWJsZUNsaWNr
OiB0aGlzLmhhbmRsZURvdWJsZUNsaWNrIH0sXG5cdCAgICAgICAgICAgIHRvZG8udGV4dFxuXHQg
ICAgICAgICAgKSxcblx0ICAgICAgICAgIF9yZWFjdDIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCdi
dXR0b24nLCB7IGNsYXNzTmFtZTogJ2Rlc3Ryb3knLFxuXHQgICAgICAgICAgICBvbkNsaWNrOiBm
dW5jdGlvbiBvbkNsaWNrKCkge1xuXHQgICAgICAgICAgICAgIHJldHVybiBkZWxldGVUb2RvKHRv
ZG8uaWQpO1xuXHQgICAgICAgICAgICB9IH0pXG5cdCAgICAgICAgKTtcblx0ICAgICAgfVxuXHRc
blx0ICAgICAgcmV0dXJuIF9yZWFjdDIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFxuXHQgICAgICAg
ICdsaScsXG5cdCAgICAgICAgeyBjbGFzc05hbWU6ICgwLCBfY2xhc3NuYW1lczIuZGVmYXVsdCko
e1xuXHQgICAgICAgICAgICBjb21wbGV0ZWQ6IHRvZG8uY29tcGxldGVkLFxuXHQgICAgICAgICAg
ICBlZGl0aW5nOiB0aGlzLnN0YXRlLmVkaXRpbmdcblx0ICAgICAgICAgIH0pIH0sXG5cdCAgICAg
ICAgZWxlbWVudFxuXHQgICAgICApO1xuXHQgICAgfVxuXHQgIH1dKTtcblx0XG5cdCAgcmV0dXJu
IFRvZG9JdGVtO1xuXHR9KF9yZWFjdC5Db21wb25lbnQpO1xuXHRcblx0VG9kb0l0ZW0ucHJvcFR5
cGVzID0ge1xuXHQgIHRvZG86IF9yZWFjdC5Qcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsXG5c
dCAgZWRpdFRvZG86IF9yZWFjdC5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuXHQgIGRlbGV0
ZVRvZG86IF9yZWFjdC5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuXHQgIGNvbXBsZXRlVG9k
bzogX3JlYWN0LlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcblx0fTtcblx0ZXhwb3J0cy5kZWZh
dWx0ID0gVG9kb0l0ZW07XG5cbi8qKiovIH0sXG4vKiAyMDMgKi9cbi8qKiovIGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztc
blx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xu
XHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHRcblx0dmFyIF9yZWFjdCA9IF9fd2VicGFja19yZXF1
aXJlX18oMTIpO1xuXHRcblx0dmFyIF9yZWFjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9y
ZWFjdCk7XG5cdFxuXHR2YXIgX3JlZHV4ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMCk7XG5cdFxu
XHR2YXIgX3JlYWN0UmVkdXggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgxKTtcblx0XG5cdHZhciBf
SGVhZGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMDApO1xuXHRcblx0dmFyIF9IZWFkZXIyID0g
X2ludGVyb3BSZXF1aXJlRGVmYXVsdChfSGVhZGVyKTtcblx0XG5cdHZhciBfTWFpblNlY3Rpb24g
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwMSk7XG5cdFxuXHR2YXIgX01haW5TZWN0aW9uMiA9IF9p
bnRlcm9wUmVxdWlyZURlZmF1bHQoX01haW5TZWN0aW9uKTtcblx0XG5cdHZhciBfYWN0aW9ucyA9
IF9fd2VicGFja19yZXF1aXJlX18oMTk4KTtcblx0XG5cdHZhciBUb2RvQWN0aW9ucyA9IF9pbnRl
cm9wUmVxdWlyZVdpbGRjYXJkKF9hY3Rpb25zKTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVx
dWlyZVdpbGRjYXJkKG9iaikgeyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBv
Ymo7IH0gZWxzZSB7IHZhciBuZXdPYmogPSB7fTsgaWYgKG9iaiAhPSBudWxsKSB7IGZvciAodmFy
IGtleSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChv
YmosIGtleSkpIG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSBuZXdPYmouZGVmYXVsdCA9IG9i
ajsgcmV0dXJuIG5ld09iajsgfSB9XG5cdFxuXHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZh
dWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0
OiBvYmogfTsgfVxuXHRcblx0dmFyIEFwcCA9IGZ1bmN0aW9uIEFwcChfcmVmKSB7XG5cdCAgdmFy
IHRvZG9zID0gX3JlZi50b2Rvcztcblx0ICB2YXIgYWN0aW9ucyA9IF9yZWYuYWN0aW9ucztcblx0
ICByZXR1cm4gX3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXG5cdCAgICAnZGl2Jyxcblx0
ICAgIG51bGwsXG5cdCAgICBfcmVhY3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChfSGVhZGVyMi5k
ZWZhdWx0LCB7IGFkZFRvZG86IGFjdGlvbnMuYWRkVG9kbyB9KSxcblx0ICAgIF9yZWFjdDIuZGVm
YXVsdC5jcmVhdGVFbGVtZW50KF9NYWluU2VjdGlvbjIuZGVmYXVsdCwgeyB0b2RvczogdG9kb3Ms
IGFjdGlvbnM6IGFjdGlvbnMgfSlcblx0ICApO1xuXHR9O1xuXHRcblx0QXBwLnByb3BUeXBlcyA9
IHtcblx0ICB0b2RvczogX3JlYWN0LlByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuXHQgIGFj
dGlvbnM6IF9yZWFjdC5Qcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWRcblx0fTtcblx0XG5cdHZh
ciBtYXBTdGF0ZVRvUHJvcHMgPSBmdW5jdGlvbiBtYXBTdGF0ZVRvUHJvcHMoc3RhdGUpIHtcblx0
ICByZXR1cm4ge1xuXHQgICAgdG9kb3M6IHN0YXRlLnRvZG9zXG5cdCAgfTtcblx0fTtcblx0XG5c
dHZhciBtYXBEaXNwYXRjaFRvUHJvcHMgPSBmdW5jdGlvbiBtYXBEaXNwYXRjaFRvUHJvcHMoZGlz
cGF0Y2gpIHtcblx0ICByZXR1cm4ge1xuXHQgICAgYWN0aW9uczogKDAsIF9yZWR1eC5iaW5kQWN0
aW9uQ3JlYXRvcnMpKFRvZG9BY3Rpb25zLCBkaXNwYXRjaClcblx0ICB9O1xuXHR9O1xuXHRcblx0
ZXhwb3J0cy5kZWZhdWx0ID0gKDAsIF9yZWFjdFJlZHV4LmNvbm5lY3QpKG1hcFN0YXRlVG9Qcm9w
cywgbWFwRGlzcGF0Y2hUb1Byb3BzKShBcHApO1xuXG4vKioqLyB9LFxuLyogMjA0ICovXG4vKioq
LyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQn
dXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3JlYWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7
XG5cdFxuXHR2YXIgX3JlYWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JlYWN0KTtcblx0
XG5cdHZhciBfcmVhY3REb20gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyMyk7XG5cdFxuXHR2YXIg
X3JlZHV4ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzMCk7XG5cdFxuXHR2YXIgX3JlYWN0UmVkdXgg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgxKTtcblx0XG5cdHZhciBfQXBwID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygyMDMpO1xuXHRcblx0dmFyIF9BcHAyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChf
QXBwKTtcblx0XG5cdHZhciBfcmVkdWNlcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwNSk7XG5c
dFxuXHR2YXIgX3JlZHVjZXJzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JlZHVjZXJzKTtc
blx0XG5cdF9fd2VicGFja19yZXF1aXJlX18oMjA3KTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9w
UmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmog
OiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cdFxuXHR2YXIgc3RvcmUgPSAoMCwgX3JlZHV4LmNyZWF0
ZVN0b3JlKShfcmVkdWNlcnMyLmRlZmF1bHQpO1xuXHRcblx0KDAsIF9yZWFjdERvbS5yZW5kZXIp
KF9yZWFjdDIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFxuXHQgIF9yZWFjdFJlZHV4LlByb3ZpZGVy
LFxuXHQgIHsgc3RvcmU6IHN0b3JlIH0sXG5cdCAgX3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1l
bnQoX0FwcDIuZGVmYXVsdCwgbnVsbClcblx0KSwgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jv
b3QnKSk7XG5cbi8qKiovIH0sXG4vKiAyMDUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdE9i
amVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuXHQgIHZhbHVl
OiB0cnVlXG5cdH0pO1xuXHRcblx0dmFyIF9yZWR1eCA9IF9fd2VicGFja19yZXF1aXJlX18oMzAp
O1xuXHRcblx0dmFyIF90b2RvcyA9IF9fd2VicGFja19yZXF1aXJlX18oMjA2KTtcblx0XG5cdHZh
ciBfdG9kb3MyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfdG9kb3MpO1xuXHRcblx0ZnVuY3Rp
b24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01v
ZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblx0XG5cdHZhciByb290UmVkdWNlciA9
ICgwLCBfcmVkdXguY29tYmluZVJlZHVjZXJzKSh7XG5cdCAgdG9kb3M6IF90b2RvczIuZGVmYXVs
dFxuXHR9KTtcblx0XG5cdGV4cG9ydHMuZGVmYXVsdCA9IHJvb3RSZWR1Y2VyO1xuXG4vKioqLyB9
LFxuLyogMjA2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19y
ZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVy
dHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0
XG5cdHZhciBfdHlwZW9mID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIHR5cGVv
ZiBTeW1ib2wuaXRlcmF0b3IgPT09IFwic3ltYm9sXCIgPyBmdW5jdGlvbiAob2JqKSB7IHJldHVy
biB0eXBlb2Ygb2JqOyB9IDogZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gb2JqICYmIHR5cGVvZiBT
eW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY29uc3RydWN0b3IgPT09IFN5bWJvbCA/IFwi
c3ltYm9sXCIgOiB0eXBlb2Ygb2JqOyB9O1xuXHRcblx0dmFyIF9leHRlbmRzID0gT2JqZWN0LmFz
c2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRz
Lmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBp
biBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3Vy
Y2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdl
dDsgfTtcblx0XG5cdGV4cG9ydHMuZGVmYXVsdCA9IHRvZG9zO1xuXHRcblx0dmFyIF9BY3Rpb25U
eXBlcyA9IF9fd2VicGFja19yZXF1aXJlX18oODUpO1xuXHRcblx0ZnVuY3Rpb24gX3RvQ29uc3Vt
YWJsZUFycmF5KGFycikgeyBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7IGZvciAodmFyIGkgPSAw
LCBhcnIyID0gQXJyYXkoYXJyLmxlbmd0aCk7IGkgPCBhcnIubGVuZ3RoOyBpKyspIHsgYXJyMltp
XSA9IGFycltpXTsgfSByZXR1cm4gYXJyMjsgfSBlbHNlIHsgcmV0dXJuIEFycmF5LmZyb20oYXJy
KTsgfSB9XG5cdFxuXHR2YXIgaW5pdGlhbFN0YXRlID0gW107XG5cdFxuXHRmdW5jdGlvbiB0b2Rv
cygpIHtcblx0ICB2YXIgc3RhdGUgPSBhcmd1bWVudHMubGVuZ3RoIDw9IDAgfHwgYXJndW1lbnRz
WzBdID09PSB1bmRlZmluZWQgPyBpbml0aWFsU3RhdGUgOiBhcmd1bWVudHNbMF07XG5cdCAgdmFy
IGFjdGlvbiA9IGFyZ3VtZW50c1sxXTtcblx0XG5cdCAgdmFyIF9yZXQgPSBmdW5jdGlvbiAoKSB7
XG5cdCAgICBzd2l0Y2ggKGFjdGlvbi50eXBlKSB7XG5cdCAgICAgIGNhc2UgX0FjdGlvblR5cGVz
LkFERF9UT0RPOlxuXHQgICAgICAgIHJldHVybiB7XG5cdCAgICAgICAgICB2OiBbe1xuXHQgICAg
ICAgICAgICBpZDogc3RhdGUucmVkdWNlKGZ1bmN0aW9uIChtYXhJZCwgdG9kbykge1xuXHQgICAg
ICAgICAgICAgIHJldHVybiBNYXRoLm1heCh0b2RvLmlkLCBtYXhJZCk7XG5cdCAgICAgICAgICAg
IH0sIC0xKSArIDEsXG5cdCAgICAgICAgICAgIGNvbXBsZXRlZDogZmFsc2UsXG5cdCAgICAgICAg
ICAgIHRleHQ6IGFjdGlvbi50ZXh0XG5cdCAgICAgICAgICB9XS5jb25jYXQoX3RvQ29uc3VtYWJs
ZUFycmF5KHN0YXRlKSlcblx0ICAgICAgICB9O1xuXHRcblx0ICAgICAgY2FzZSBfQWN0aW9uVHlw
ZXMuREVMRVRFX1RPRE86XG5cdCAgICAgICAgcmV0dXJuIHtcblx0ICAgICAgICAgIHY6IHN0YXRl
LmZpbHRlcihmdW5jdGlvbiAodG9kbykge1xuXHQgICAgICAgICAgICByZXR1cm4gdG9kby5pZCAh
PT0gYWN0aW9uLmlkO1xuXHQgICAgICAgICAgfSlcblx0ICAgICAgICB9O1xuXHRcblx0ICAgICAg
Y2FzZSBfQWN0aW9uVHlwZXMuRURJVF9UT0RPOlxuXHQgICAgICAgIHJldHVybiB7XG5cdCAgICAg
ICAgICB2OiBzdGF0ZS5tYXAoZnVuY3Rpb24gKHRvZG8pIHtcblx0ICAgICAgICAgICAgcmV0dXJu
IHRvZG8uaWQgPT09IGFjdGlvbi5pZCA/IF9leHRlbmRzKHt9LCB0b2RvLCB7IHRleHQ6IGFjdGlv
bi50ZXh0IH0pIDogdG9kbztcblx0ICAgICAgICAgIH0pXG5cdCAgICAgICAgfTtcblx0XG5cdCAg
ICAgIGNhc2UgX0FjdGlvblR5cGVzLkNPTVBMRVRFX1RPRE86XG5cdCAgICAgICAgcmV0dXJuIHtc
blx0ICAgICAgICAgIHY6IHN0YXRlLm1hcChmdW5jdGlvbiAodG9kbykge1xuXHQgICAgICAgICAg
ICByZXR1cm4gdG9kby5pZCA9PT0gYWN0aW9uLmlkID8gX2V4dGVuZHMoe30sIHRvZG8sIHsgY29t
cGxldGVkOiAhdG9kby5jb21wbGV0ZWQgfSkgOiB0b2RvO1xuXHQgICAgICAgICAgfSlcblx0ICAg
ICAgICB9O1xuXHRcblx0ICAgICAgY2FzZSBfQWN0aW9uVHlwZXMuQ09NUExFVEVfQUxMOlxuXHQg
ICAgICAgIHZhciBhcmVBbGxNYXJrZWQgPSBzdGF0ZS5ldmVyeShmdW5jdGlvbiAodG9kbykge1xu
XHQgICAgICAgICAgcmV0dXJuIHRvZG8uY29tcGxldGVkO1xuXHQgICAgICAgIH0pO1xuXHQgICAg
ICAgIHJldHVybiB7XG5cdCAgICAgICAgICB2OiBzdGF0ZS5tYXAoZnVuY3Rpb24gKHRvZG8pIHtc
blx0ICAgICAgICAgICAgcmV0dXJuIF9leHRlbmRzKHt9LCB0b2RvLCB7XG5cdCAgICAgICAgICAg
ICAgY29tcGxldGVkOiAhYXJlQWxsTWFya2VkXG5cdCAgICAgICAgICAgIH0pO1xuXHQgICAgICAg
ICAgfSlcblx0ICAgICAgICB9O1xuXHRcblx0ICAgICAgY2FzZSBfQWN0aW9uVHlwZXMuQ0xFQVJf
Q09NUExFVEVEOlxuXHQgICAgICAgIHJldHVybiB7XG5cdCAgICAgICAgICB2OiBzdGF0ZS5maWx0
ZXIoZnVuY3Rpb24gKHRvZG8pIHtcblx0ICAgICAgICAgICAgcmV0dXJuIHRvZG8uY29tcGxldGVk
ID09PSBmYWxzZTtcblx0ICAgICAgICAgIH0pXG5cdCAgICAgICAgfTtcblx0XG5cdCAgICAgIGRl
ZmF1bHQ6XG5cdCAgICAgICAgcmV0dXJuIHtcblx0ICAgICAgICAgIHY6IHN0YXRlXG5cdCAgICAg
ICAgfTtcblx0ICAgIH1cblx0ICB9KCk7XG5cdFxuXHQgIGlmICgodHlwZW9mIF9yZXQgPT09ICd1
bmRlZmluZWQnID8gJ3VuZGVmaW5lZCcgOiBfdHlwZW9mKF9yZXQpKSA9PT0gXCJvYmplY3RcIikg
cmV0dXJuIF9yZXQudjtcblx0fVxuXG4vKioqLyB9LFxuLyogMjA3ICovXG4vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvLyByZW1vdmVkIGJ5IGV4dHJhY3QtdGV4dC13ZWJw
YWNrLXBsdWdpblxuXG4vKioqLyB9LFxuLyogMjA4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMpIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdC8qIGVzbGludC1kaXNhYmxlIG5vLXVu
dXNlZC12YXJzICovXG5cdHZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFz
T3duUHJvcGVydHk7XG5cdHZhciBwcm9wSXNFbnVtZXJhYmxlID0gT2JqZWN0LnByb3RvdHlwZS5w
cm9wZXJ0eUlzRW51bWVyYWJsZTtcblx0XG5cdGZ1bmN0aW9uIHRvT2JqZWN0KHZhbCkge1xuXHRc
dGlmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHRocm93IG5l
dyBUeXBlRXJyb3IoJ09iamVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3Ig
dW5kZWZpbmVkJyk7XG5cdFx0fVxuXHRcblx0XHRyZXR1cm4gT2JqZWN0KHZhbCk7XG5cdH1cblx0
XG5cdGZ1bmN0aW9uIHNob3VsZFVzZU5hdGl2ZSgpIHtcblx0XHR0cnkge1xuXHRcdFx0aWYgKCFP
YmplY3QuYXNzaWduKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XG5cdFx0
XHQvLyBEZXRlY3QgYnVnZ3kgcHJvcGVydHkgZW51bWVyYXRpb24gb3JkZXIgaW4gb2xkZXIgVjgg
dmVyc2lvbnMuXG5cdFxuXHRcdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lz
c3Vlcy9kZXRhaWw/aWQ9NDExOFxuXHRcdFx0dmFyIHRlc3QxID0gbmV3IFN0cmluZygnYWJjJyk7
ICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lXG5cdFx0XHR0ZXN0MVs1XSA9ICdkZSc7XG5cdFx0XHRp
ZiAoT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGVzdDEpWzBdID09PSAnNScpIHtcblx0XHRc
dFx0cmV0dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcblx0XHRcdC8vIGh0dHBzOi8vYnVncy5jaHJv
bWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMwNTZcblx0XHRcdHZhciB0ZXN0MiA9IHt9
O1xuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgaSsrKSB7XG5cdFx0XHRcdHRlc3QyWydf
JyArIFN0cmluZy5mcm9tQ2hhckNvZGUoaSldID0gaTtcblx0XHRcdH1cblx0XHRcdHZhciBvcmRl
cjIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MikubWFwKGZ1bmN0aW9uIChuKSB7
XG5cdFx0XHRcdHJldHVybiB0ZXN0MltuXTtcblx0XHRcdH0pO1xuXHRcdFx0aWYgKG9yZGVyMi5q
b2luKCcnKSAhPT0gJzAxMjM0NTY3ODknKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRc
dH1cblx0XG5cdFx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2Rl
dGFpbD9pZD0zMDU2XG5cdFx0XHR2YXIgdGVzdDMgPSB7fTtcblx0XHRcdCdhYmNkZWZnaGlqa2xt
bm9wcXJzdCcuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGxldHRlcikge1xuXHRcdFx0XHR0
ZXN0M1tsZXR0ZXJdID0gbGV0dGVyO1xuXHRcdFx0fSk7XG5cdFx0XHRpZiAoT2JqZWN0LmtleXMo
T2JqZWN0LmFzc2lnbih7fSwgdGVzdDMpKS5qb2luKCcnKSAhPT1cblx0XHRcdFx0XHQnYWJjZGVm
Z2hpamtsbW5vcHFyc3QnKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XG5c
dFx0XHRyZXR1cm4gdHJ1ZTtcblx0XHR9IGNhdGNoIChlKSB7XG5cdFx0XHQvLyBXZSBkb24ndCBl
eHBlY3QgYW55IG9mIHRoZSBhYm92ZSB0byB0aHJvdywgYnV0IGJldHRlciB0byBiZSBzYWZlLlxu
XHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBz
aG91bGRVc2VOYXRpdmUoKSA/IE9iamVjdC5hc3NpZ24gOiBmdW5jdGlvbiAodGFyZ2V0LCBzb3Vy
Y2UpIHtcblx0XHR2YXIgZnJvbTtcblx0XHR2YXIgdG8gPSB0b09iamVjdCh0YXJnZXQpO1xuXHRc
dHZhciBzeW1ib2xzO1xuXHRcblx0XHRmb3IgKHZhciBzID0gMTsgcyA8IGFyZ3VtZW50cy5sZW5n
dGg7IHMrKykge1xuXHRcdFx0ZnJvbSA9IE9iamVjdChhcmd1bWVudHNbc10pO1xuXHRcblx0XHRc
dGZvciAodmFyIGtleSBpbiBmcm9tKSB7XG5cdFx0XHRcdGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxs
KGZyb20sIGtleSkpIHtcblx0XHRcdFx0XHR0b1trZXldID0gZnJvbVtrZXldO1xuXHRcdFx0XHR9
XG5cdFx0XHR9XG5cdFxuXHRcdFx0aWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtc
blx0XHRcdFx0c3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZnJvbSk7XG5c
dFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgc3ltYm9scy5sZW5ndGg7IGkrKykge1xuXHRcdFx0
XHRcdGlmIChwcm9wSXNFbnVtZXJhYmxlLmNhbGwoZnJvbSwgc3ltYm9sc1tpXSkpIHtcblx0XHRc
dFx0XHRcdHRvW3N5bWJvbHNbaV1dID0gZnJvbVtzeW1ib2xzW2ldXTtcblx0XHRcdFx0XHR9XG5c
dFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdFxuXHRcdHJldHVybiB0bztcblx0fTtcblxuXG4v
KioqLyB9LFxuLyogMjA5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQvL1RoaXMgZmlsZSBj
b250YWlucyB0aGUgRVM2IGV4dGVuc2lvbnMgdG8gdGhlIGNvcmUgUHJvbWlzZXMvQSsgQVBJXG5c
dFxuXHR2YXIgUHJvbWlzZSA9IF9fd2VicGFja19yZXF1aXJlX18oODgpO1xuXHRcblx0bW9kdWxl
LmV4cG9ydHMgPSBQcm9taXNlO1xuXHRcblx0LyogU3RhdGljIEZ1bmN0aW9ucyAqL1xuXHRcblx0
dmFyIFRSVUUgPSB2YWx1ZVByb21pc2UodHJ1ZSk7XG5cdHZhciBGQUxTRSA9IHZhbHVlUHJvbWlz
ZShmYWxzZSk7XG5cdHZhciBOVUxMID0gdmFsdWVQcm9taXNlKG51bGwpO1xuXHR2YXIgVU5ERUZJ
TkVEID0gdmFsdWVQcm9taXNlKHVuZGVmaW5lZCk7XG5cdHZhciBaRVJPID0gdmFsdWVQcm9taXNl
KDApO1xuXHR2YXIgRU1QVFlTVFJJTkcgPSB2YWx1ZVByb21pc2UoJycpO1xuXHRcblx0ZnVuY3Rp
b24gdmFsdWVQcm9taXNlKHZhbHVlKSB7XG5cdCAgdmFyIHAgPSBuZXcgUHJvbWlzZShQcm9taXNl
Ll82MSk7XG5cdCAgcC5fODEgPSAxO1xuXHQgIHAuXzY1ID0gdmFsdWU7XG5cdCAgcmV0dXJuIHA7
XG5cdH1cblx0UHJvbWlzZS5yZXNvbHZlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG5cdCAgaWYgKHZh
bHVlIGluc3RhbmNlb2YgUHJvbWlzZSkgcmV0dXJuIHZhbHVlO1xuXHRcblx0ICBpZiAodmFsdWUg
PT09IG51bGwpIHJldHVybiBOVUxMO1xuXHQgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1
cm4gVU5ERUZJTkVEO1xuXHQgIGlmICh2YWx1ZSA9PT0gdHJ1ZSkgcmV0dXJuIFRSVUU7XG5cdCAg
aWYgKHZhbHVlID09PSBmYWxzZSkgcmV0dXJuIEZBTFNFO1xuXHQgIGlmICh2YWx1ZSA9PT0gMCkg
cmV0dXJuIFpFUk87XG5cdCAgaWYgKHZhbHVlID09PSAnJykgcmV0dXJuIEVNUFRZU1RSSU5HO1xu
XHRcblx0ICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgdmFsdWUgPT09
ICdmdW5jdGlvbicpIHtcblx0ICAgIHRyeSB7XG5cdCAgICAgIHZhciB0aGVuID0gdmFsdWUudGhl
bjtcblx0ICAgICAgaWYgKHR5cGVvZiB0aGVuID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAgICAg
cmV0dXJuIG5ldyBQcm9taXNlKHRoZW4uYmluZCh2YWx1ZSkpO1xuXHQgICAgICB9XG5cdCAgICB9
IGNhdGNoIChleCkge1xuXHQgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29s
dmUsIHJlamVjdCkge1xuXHQgICAgICAgIHJlamVjdChleCk7XG5cdCAgICAgIH0pO1xuXHQgICAg
fVxuXHQgIH1cblx0ICByZXR1cm4gdmFsdWVQcm9taXNlKHZhbHVlKTtcblx0fTtcblx0XG5cdFBy
b21pc2UuYWxsID0gZnVuY3Rpb24gKGFycikge1xuXHQgIHZhciBhcmdzID0gQXJyYXkucHJvdG90
eXBlLnNsaWNlLmNhbGwoYXJyKTtcblx0XG5cdCAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9u
IChyZXNvbHZlLCByZWplY3QpIHtcblx0ICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkgcmV0dXJu
IHJlc29sdmUoW10pO1xuXHQgICAgdmFyIHJlbWFpbmluZyA9IGFyZ3MubGVuZ3RoO1xuXHQgICAg
ZnVuY3Rpb24gcmVzKGksIHZhbCkge1xuXHQgICAgICBpZiAodmFsICYmICh0eXBlb2YgdmFsID09
PSAnb2JqZWN0JyB8fCB0eXBlb2YgdmFsID09PSAnZnVuY3Rpb24nKSkge1xuXHQgICAgICAgIGlm
ICh2YWwgaW5zdGFuY2VvZiBQcm9taXNlICYmIHZhbC50aGVuID09PSBQcm9taXNlLnByb3RvdHlw
ZS50aGVuKSB7XG5cdCAgICAgICAgICB3aGlsZSAodmFsLl84MSA9PT0gMykge1xuXHQgICAgICAg
ICAgICB2YWwgPSB2YWwuXzY1O1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgaWYgKHZhbC5f
ODEgPT09IDEpIHJldHVybiByZXMoaSwgdmFsLl82NSk7XG5cdCAgICAgICAgICBpZiAodmFsLl84
MSA9PT0gMikgcmVqZWN0KHZhbC5fNjUpO1xuXHQgICAgICAgICAgdmFsLnRoZW4oZnVuY3Rpb24g
KHZhbCkge1xuXHQgICAgICAgICAgICByZXMoaSwgdmFsKTtcblx0ICAgICAgICAgIH0sIHJlamVj
dCk7XG5cdCAgICAgICAgICByZXR1cm47XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAg
IHZhciB0aGVuID0gdmFsLnRoZW47XG5cdCAgICAgICAgICBpZiAodHlwZW9mIHRoZW4gPT09ICdm
dW5jdGlvbicpIHtcblx0ICAgICAgICAgICAgdmFyIHAgPSBuZXcgUHJvbWlzZSh0aGVuLmJpbmQo
dmFsKSk7XG5cdCAgICAgICAgICAgIHAudGhlbihmdW5jdGlvbiAodmFsKSB7XG5cdCAgICAgICAg
ICAgICAgcmVzKGksIHZhbCk7XG5cdCAgICAgICAgICAgIH0sIHJlamVjdCk7XG5cdCAgICAgICAg
ICAgIHJldHVybjtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAg
ICAgYXJnc1tpXSA9IHZhbDtcblx0ICAgICAgaWYgKC0tcmVtYWluaW5nID09PSAwKSB7XG5cdCAg
ICAgICAgcmVzb2x2ZShhcmdzKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIHJlcyhpLCBhcmdzW2ldKTtc
blx0ICAgIH1cblx0ICB9KTtcblx0fTtcblx0XG5cdFByb21pc2UucmVqZWN0ID0gZnVuY3Rpb24g
KHZhbHVlKSB7XG5cdCAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWpl
Y3QpIHtcblx0ICAgIHJlamVjdCh2YWx1ZSk7XG5cdCAgfSk7XG5cdH07XG5cdFxuXHRQcm9taXNl
LnJhY2UgPSBmdW5jdGlvbiAodmFsdWVzKSB7XG5cdCAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0
aW9uIChyZXNvbHZlLCByZWplY3QpIHtcblx0ICAgIHZhbHVlcy5mb3JFYWNoKGZ1bmN0aW9uKHZh
bHVlKXtcblx0ICAgICAgUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKHJlc29sdmUsIHJlamVj
dCk7XG5cdCAgICB9KTtcblx0ICB9KTtcblx0fTtcblx0XG5cdC8qIFByb3RvdHlwZSBNZXRob2Rz
ICovXG5cdFxuXHRQcm9taXNlLnByb3RvdHlwZVsnY2F0Y2gnXSA9IGZ1bmN0aW9uIChvblJlamVj
dGVkKSB7XG5cdCAgcmV0dXJuIHRoaXMudGhlbihudWxsLCBvblJlamVjdGVkKTtcblx0fTtcblxu
XG4vKioqLyB9LFxuLyogMjEwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9f
d2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgUHJvbWlz
ZSA9IF9fd2VicGFja19yZXF1aXJlX18oODgpO1xuXHRcblx0dmFyIERFRkFVTFRfV0hJVEVMSVNU
ID0gW1xuXHQgIFJlZmVyZW5jZUVycm9yLFxuXHQgIFR5cGVFcnJvcixcblx0ICBSYW5nZUVycm9y
XG5cdF07XG5cdFxuXHR2YXIgZW5hYmxlZCA9IGZhbHNlO1xuXHRleHBvcnRzLmRpc2FibGUgPSBk
aXNhYmxlO1xuXHRmdW5jdGlvbiBkaXNhYmxlKCkge1xuXHQgIGVuYWJsZWQgPSBmYWxzZTtcblx0
ICBQcm9taXNlLl8xMCA9IG51bGw7XG5cdCAgUHJvbWlzZS5fOTcgPSBudWxsO1xuXHR9XG5cdFxu
XHRleHBvcnRzLmVuYWJsZSA9IGVuYWJsZTtcblx0ZnVuY3Rpb24gZW5hYmxlKG9wdGlvbnMpIHtc
blx0ICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblx0ICBpZiAoZW5hYmxlZCkgZGlzYWJsZSgp
O1xuXHQgIGVuYWJsZWQgPSB0cnVlO1xuXHQgIHZhciBpZCA9IDA7XG5cdCAgdmFyIGRpc3BsYXlJ
ZCA9IDA7XG5cdCAgdmFyIHJlamVjdGlvbnMgPSB7fTtcblx0ICBQcm9taXNlLl8xMCA9IGZ1bmN0
aW9uIChwcm9taXNlKSB7XG5cdCAgICBpZiAoXG5cdCAgICAgIHByb21pc2UuXzgxID09PSAyICYm
IC8vIElTIFJFSkVDVEVEXG5cdCAgICAgIHJlamVjdGlvbnNbcHJvbWlzZS5fNzJdXG5cdCAgICAp
IHtcblx0ICAgICAgaWYgKHJlamVjdGlvbnNbcHJvbWlzZS5fNzJdLmxvZ2dlZCkge1xuXHQgICAg
ICAgIG9uSGFuZGxlZChwcm9taXNlLl83Mik7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAg
Y2xlYXJUaW1lb3V0KHJlamVjdGlvbnNbcHJvbWlzZS5fNzJdLnRpbWVvdXQpO1xuXHQgICAgICB9
XG5cdCAgICAgIGRlbGV0ZSByZWplY3Rpb25zW3Byb21pc2UuXzcyXTtcblx0ICAgIH1cblx0ICB9
O1xuXHQgIFByb21pc2UuXzk3ID0gZnVuY3Rpb24gKHByb21pc2UsIGVycikge1xuXHQgICAgaWYg
KHByb21pc2UuXzQ1ID09PSAwKSB7IC8vIG5vdCB5ZXQgaGFuZGxlZFxuXHQgICAgICBwcm9taXNl
Ll83MiA9IGlkKys7XG5cdCAgICAgIHJlamVjdGlvbnNbcHJvbWlzZS5fNzJdID0ge1xuXHQgICAg
ICAgIGRpc3BsYXlJZDogbnVsbCxcblx0ICAgICAgICBlcnJvcjogZXJyLFxuXHQgICAgICAgIHRp
bWVvdXQ6IHNldFRpbWVvdXQoXG5cdCAgICAgICAgICBvblVuaGFuZGxlZC5iaW5kKG51bGwsIHBy
b21pc2UuXzcyKSxcblx0ICAgICAgICAgIC8vIEZvciByZWZlcmVuY2UgZXJyb3JzIGFuZCB0eXBl
IGVycm9ycywgdGhpcyBhbG1vc3QgYWx3YXlzXG5cdCAgICAgICAgICAvLyBtZWFucyB0aGUgcHJv
Z3JhbW1lciBtYWRlIGEgbWlzdGFrZSwgc28gbG9nIHRoZW0gYWZ0ZXIganVzdFxuXHQgICAgICAg
ICAgLy8gMTAwbXNcblx0ICAgICAgICAgIC8vIG90aGVyd2lzZSwgd2FpdCAyIHNlY29uZHMgdG8g
c2VlIGlmIHRoZXkgZ2V0IGhhbmRsZWRcblx0ICAgICAgICAgIG1hdGNoV2hpdGVsaXN0KGVyciwg
REVGQVVMVF9XSElURUxJU1QpXG5cdCAgICAgICAgICAgID8gMTAwXG5cdCAgICAgICAgICAgIDog
MjAwMFxuXHQgICAgICAgICksXG5cdCAgICAgICAgbG9nZ2VkOiBmYWxzZVxuXHQgICAgICB9O1xu
XHQgICAgfVxuXHQgIH07XG5cdCAgZnVuY3Rpb24gb25VbmhhbmRsZWQoaWQpIHtcblx0ICAgIGlm
IChcblx0ICAgICAgb3B0aW9ucy5hbGxSZWplY3Rpb25zIHx8XG5cdCAgICAgIG1hdGNoV2hpdGVs
aXN0KFxuXHQgICAgICAgIHJlamVjdGlvbnNbaWRdLmVycm9yLFxuXHQgICAgICAgIG9wdGlvbnMu
d2hpdGVsaXN0IHx8IERFRkFVTFRfV0hJVEVMSVNUXG5cdCAgICAgIClcblx0ICAgICkge1xuXHQg
ICAgICByZWplY3Rpb25zW2lkXS5kaXNwbGF5SWQgPSBkaXNwbGF5SWQrKztcblx0ICAgICAgaWYg
KG9wdGlvbnMub25VbmhhbmRsZWQpIHtcblx0ICAgICAgICByZWplY3Rpb25zW2lkXS5sb2dnZWQg
PSB0cnVlO1xuXHQgICAgICAgIG9wdGlvbnMub25VbmhhbmRsZWQoXG5cdCAgICAgICAgICByZWpl
Y3Rpb25zW2lkXS5kaXNwbGF5SWQsXG5cdCAgICAgICAgICByZWplY3Rpb25zW2lkXS5lcnJvclxu
XHQgICAgICAgICk7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgcmVqZWN0aW9uc1tpZF0u
bG9nZ2VkID0gdHJ1ZTtcblx0ICAgICAgICBsb2dFcnJvcihcblx0ICAgICAgICAgIHJlamVjdGlv
bnNbaWRdLmRpc3BsYXlJZCxcblx0ICAgICAgICAgIHJlamVjdGlvbnNbaWRdLmVycm9yXG5cdCAg
ICAgICAgKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0ICBmdW5jdGlvbiBvbkhhbmRs
ZWQoaWQpIHtcblx0ICAgIGlmIChyZWplY3Rpb25zW2lkXS5sb2dnZWQpIHtcblx0ICAgICAgaWYg
KG9wdGlvbnMub25IYW5kbGVkKSB7XG5cdCAgICAgICAgb3B0aW9ucy5vbkhhbmRsZWQocmVqZWN0
aW9uc1tpZF0uZGlzcGxheUlkLCByZWplY3Rpb25zW2lkXS5lcnJvcik7XG5cdCAgICAgIH0gZWxz
ZSBpZiAoIXJlamVjdGlvbnNbaWRdLm9uVW5oYW5kbGVkKSB7XG5cdCAgICAgICAgY29uc29sZS53
YXJuKFxuXHQgICAgICAgICAgJ1Byb21pc2UgUmVqZWN0aW9uIEhhbmRsZWQgKGlkOiAnICsgcmVq
ZWN0aW9uc1tpZF0uZGlzcGxheUlkICsgJyk6J1xuXHQgICAgICAgICk7XG5cdCAgICAgICAgY29u
c29sZS53YXJuKFxuXHQgICAgICAgICAgJyAgVGhpcyBtZWFucyB5b3UgY2FuIGlnbm9yZSBhbnkg
cHJldmlvdXMgbWVzc2FnZXMgb2YgdGhlIGZvcm0gXCJQb3NzaWJsZSBVbmhhbmRsZWQgUHJvbWlz
ZSBSZWplY3Rpb25cIiB3aXRoIGlkICcgK1xuXHQgICAgICAgICAgcmVqZWN0aW9uc1tpZF0uZGlz
cGxheUlkICsgJy4nXG5cdCAgICAgICAgKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0
fVxuXHRcblx0ZnVuY3Rpb24gbG9nRXJyb3IoaWQsIGVycm9yKSB7XG5cdCAgY29uc29sZS53YXJu
KCdQb3NzaWJsZSBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb24gKGlkOiAnICsgaWQgKyAnKTon
KTtcblx0ICB2YXIgZXJyU3RyID0gKGVycm9yICYmIChlcnJvci5zdGFjayB8fCBlcnJvcikpICsg
Jyc7XG5cdCAgZXJyU3RyLnNwbGl0KCdcXG4nKS5mb3JFYWNoKGZ1bmN0aW9uIChsaW5lKSB7XG5c
dCAgICBjb25zb2xlLndhcm4oJyAgJyArIGxpbmUpO1xuXHQgIH0pO1xuXHR9XG5cdFxuXHRmdW5j
dGlvbiBtYXRjaFdoaXRlbGlzdChlcnJvciwgbGlzdCkge1xuXHQgIHJldHVybiBsaXN0LnNvbWUo
ZnVuY3Rpb24gKGNscykge1xuXHQgICAgcmV0dXJuIGVycm9yIGluc3RhbmNlb2YgY2xzO1xuXHQg
IH0pO1xuXHR9XG5cbi8qKiovIH0sXG4vKiAyMTEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwg
ZXhwb3J0cykge1xuXG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24obW9kdWxlKSB7XHJcblx0
XHRpZighbW9kdWxlLndlYnBhY2tQb2x5ZmlsbCkge1xyXG5cdFx0XHRtb2R1bGUuZGVwcmVjYXRl
ID0gZnVuY3Rpb24oKSB7fTtcclxuXHRcdFx0bW9kdWxlLnBhdGhzID0gW107XHJcblx0XHRcdC8v
IG1vZHVsZS5wYXJlbnQgPSB1bmRlZmluZWQgYnkgZGVmYXVsdFxyXG5cdFx0XHRtb2R1bGUuY2hp
bGRyZW4gPSBbXTtcclxuXHRcdFx0bW9kdWxlLndlYnBhY2tQb2x5ZmlsbCA9IDE7XHJcblx0XHR9
XHJcblx0XHRyZXR1cm4gbW9kdWxlO1xyXG5cdH1cclxuXG5cbi8qKiovIH0sXG4vKiAyMTIgKi9c
bi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdChmdW5jdGlvbihzZWxmKSB7
XG5cdCAgJ3VzZSBzdHJpY3QnO1xuXHRcblx0ICBpZiAoc2VsZi5mZXRjaCkge1xuXHQgICAgcmV0
dXJuXG5cdCAgfVxuXHRcblx0ICB2YXIgc3VwcG9ydCA9IHtcblx0ICAgIHNlYXJjaFBhcmFtczog
J1VSTFNlYXJjaFBhcmFtcycgaW4gc2VsZixcblx0ICAgIGl0ZXJhYmxlOiAnU3ltYm9sJyBpbiBz
ZWxmICYmICdpdGVyYXRvcicgaW4gU3ltYm9sLFxuXHQgICAgYmxvYjogJ0ZpbGVSZWFkZXInIGlu
IHNlbGYgJiYgJ0Jsb2InIGluIHNlbGYgJiYgKGZ1bmN0aW9uKCkge1xuXHQgICAgICB0cnkge1xu
XHQgICAgICAgIG5ldyBCbG9iKClcblx0ICAgICAgICByZXR1cm4gdHJ1ZVxuXHQgICAgICB9IGNh
dGNoKGUpIHtcblx0ICAgICAgICByZXR1cm4gZmFsc2Vcblx0ICAgICAgfVxuXHQgICAgfSkoKSxc
blx0ICAgIGZvcm1EYXRhOiAnRm9ybURhdGEnIGluIHNlbGYsXG5cdCAgICBhcnJheUJ1ZmZlcjog
J0FycmF5QnVmZmVyJyBpbiBzZWxmXG5cdCAgfVxuXHRcblx0ICBmdW5jdGlvbiBub3JtYWxpemVO
YW1lKG5hbWUpIHtcblx0ICAgIGlmICh0eXBlb2YgbmFtZSAhPT0gJ3N0cmluZycpIHtcblx0ICAg
ICAgbmFtZSA9IFN0cmluZyhuYW1lKVxuXHQgICAgfVxuXHQgICAgaWYgKC9bXmEtejAtOVxcLSMk
JSYnKisuXFxeX2B8fl0vaS50ZXN0KG5hbWUpKSB7XG5cdCAgICAgIHRocm93IG5ldyBUeXBlRXJy
b3IoJ0ludmFsaWQgY2hhcmFjdGVyIGluIGhlYWRlciBmaWVsZCBuYW1lJylcblx0ICAgIH1cblx0
ICAgIHJldHVybiBuYW1lLnRvTG93ZXJDYXNlKClcblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIG5v
cm1hbGl6ZVZhbHVlKHZhbHVlKSB7XG5cdCAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5n
Jykge1xuXHQgICAgICB2YWx1ZSA9IFN0cmluZyh2YWx1ZSlcblx0ICAgIH1cblx0ICAgIHJldHVy
biB2YWx1ZVxuXHQgIH1cblx0XG5cdCAgLy8gQnVpbGQgYSBkZXN0cnVjdGl2ZSBpdGVyYXRvciBm
b3IgdGhlIHZhbHVlIGxpc3Rcblx0ICBmdW5jdGlvbiBpdGVyYXRvckZvcihpdGVtcykge1xuXHQg
ICAgdmFyIGl0ZXJhdG9yID0ge1xuXHQgICAgICBuZXh0OiBmdW5jdGlvbigpIHtcblx0ICAgICAg
ICB2YXIgdmFsdWUgPSBpdGVtcy5zaGlmdCgpXG5cdCAgICAgICAgcmV0dXJuIHtkb25lOiB2YWx1
ZSA9PT0gdW5kZWZpbmVkLCB2YWx1ZTogdmFsdWV9XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5c
dCAgICBpZiAoc3VwcG9ydC5pdGVyYWJsZSkge1xuXHQgICAgICBpdGVyYXRvcltTeW1ib2wuaXRl
cmF0b3JdID0gZnVuY3Rpb24oKSB7XG5cdCAgICAgICAgcmV0dXJuIGl0ZXJhdG9yXG5cdCAgICAg
IH1cblx0ICAgIH1cblx0XG5cdCAgICByZXR1cm4gaXRlcmF0b3Jcblx0ICB9XG5cdFxuXHQgIGZ1
bmN0aW9uIEhlYWRlcnMoaGVhZGVycykge1xuXHQgICAgdGhpcy5tYXAgPSB7fVxuXHRcblx0ICAg
IGlmIChoZWFkZXJzIGluc3RhbmNlb2YgSGVhZGVycykge1xuXHQgICAgICBoZWFkZXJzLmZvckVh
Y2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtcblx0ICAgICAgICB0aGlzLmFwcGVuZChuYW1lLCB2
YWx1ZSlcblx0ICAgICAgfSwgdGhpcylcblx0XG5cdCAgICB9IGVsc2UgaWYgKGhlYWRlcnMpIHtc
blx0ICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoaGVhZGVycykuZm9yRWFjaChmdW5j
dGlvbihuYW1lKSB7XG5cdCAgICAgICAgdGhpcy5hcHBlbmQobmFtZSwgaGVhZGVyc1tuYW1lXSlc
blx0ICAgICAgfSwgdGhpcylcblx0ICAgIH1cblx0ICB9XG5cdFxuXHQgIEhlYWRlcnMucHJvdG90
eXBlLmFwcGVuZCA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG5cdCAgICBuYW1lID0gbm9ybWFs
aXplTmFtZShuYW1lKVxuXHQgICAgdmFsdWUgPSBub3JtYWxpemVWYWx1ZSh2YWx1ZSlcblx0ICAg
IHZhciBsaXN0ID0gdGhpcy5tYXBbbmFtZV1cblx0ICAgIGlmICghbGlzdCkge1xuXHQgICAgICBs
aXN0ID0gW11cblx0ICAgICAgdGhpcy5tYXBbbmFtZV0gPSBsaXN0XG5cdCAgICB9XG5cdCAgICBs
aXN0LnB1c2godmFsdWUpXG5cdCAgfVxuXHRcblx0ICBIZWFkZXJzLnByb3RvdHlwZVsnZGVsZXRl
J10gPSBmdW5jdGlvbihuYW1lKSB7XG5cdCAgICBkZWxldGUgdGhpcy5tYXBbbm9ybWFsaXplTmFt
ZShuYW1lKV1cblx0ICB9XG5cdFxuXHQgIEhlYWRlcnMucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9u
KG5hbWUpIHtcblx0ICAgIHZhciB2YWx1ZXMgPSB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUp
XVxuXHQgICAgcmV0dXJuIHZhbHVlcyA/IHZhbHVlc1swXSA6IG51bGxcblx0ICB9XG5cdFxuXHQg
IEhlYWRlcnMucHJvdG90eXBlLmdldEFsbCA9IGZ1bmN0aW9uKG5hbWUpIHtcblx0ICAgIHJldHVy
biB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXSB8fCBbXVxuXHQgIH1cblx0XG5cdCAgSGVh
ZGVycy5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24obmFtZSkge1xuXHQgICAgcmV0dXJuIHRoaXMu
bWFwLmhhc093blByb3BlcnR5KG5vcm1hbGl6ZU5hbWUobmFtZSkpXG5cdCAgfVxuXHRcblx0ICBI
ZWFkZXJzLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuXHQgICAgdGhp
cy5tYXBbbm9ybWFsaXplTmFtZShuYW1lKV0gPSBbbm9ybWFsaXplVmFsdWUodmFsdWUpXVxuXHQg
IH1cblx0XG5cdCAgSGVhZGVycy5wcm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uKGNhbGxiYWNr
LCB0aGlzQXJnKSB7XG5cdCAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzLm1hcCku
Zm9yRWFjaChmdW5jdGlvbihuYW1lKSB7XG5cdCAgICAgIHRoaXMubWFwW25hbWVdLmZvckVhY2go
ZnVuY3Rpb24odmFsdWUpIHtcblx0ICAgICAgICBjYWxsYmFjay5jYWxsKHRoaXNBcmcsIHZhbHVl
LCBuYW1lLCB0aGlzKVxuXHQgICAgICB9LCB0aGlzKVxuXHQgICAgfSwgdGhpcylcblx0ICB9XG5c
dFxuXHQgIEhlYWRlcnMucHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbigpIHtcblx0ICAgIHZhciBp
dGVtcyA9IFtdXG5cdCAgICB0aGlzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHsgaXRl
bXMucHVzaChuYW1lKSB9KVxuXHQgICAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxuXHQgIH1c
blx0XG5cdCAgSGVhZGVycy5wcm90b3R5cGUudmFsdWVzID0gZnVuY3Rpb24oKSB7XG5cdCAgICB2
YXIgaXRlbXMgPSBbXVxuXHQgICAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7IGl0ZW1z
LnB1c2godmFsdWUpIH0pXG5cdCAgICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG5cdCAgfVxu
XHRcblx0ICBIZWFkZXJzLnByb3RvdHlwZS5lbnRyaWVzID0gZnVuY3Rpb24oKSB7XG5cdCAgICB2
YXIgaXRlbXMgPSBbXVxuXHQgICAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7
IGl0ZW1zLnB1c2goW25hbWUsIHZhbHVlXSkgfSlcblx0ICAgIHJldHVybiBpdGVyYXRvckZvcihp
dGVtcylcblx0ICB9XG5cdFxuXHQgIGlmIChzdXBwb3J0Lml0ZXJhYmxlKSB7XG5cdCAgICBIZWFk
ZXJzLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdID0gSGVhZGVycy5wcm90b3R5cGUuZW50cmll
c1xuXHQgIH1cblx0XG5cdCAgZnVuY3Rpb24gY29uc3VtZWQoYm9keSkge1xuXHQgICAgaWYgKGJv
ZHkuYm9keVVzZWQpIHtcblx0ICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBUeXBlRXJy
b3IoJ0FscmVhZHkgcmVhZCcpKVxuXHQgICAgfVxuXHQgICAgYm9keS5ib2R5VXNlZCA9IHRydWVc
blx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpIHtcblx0ICAg
IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcblx0ICAgICAg
cmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuXHQgICAgICAgIHJlc29sdmUocmVhZGVyLnJl
c3VsdClcblx0ICAgICAgfVxuXHQgICAgICByZWFkZXIub25lcnJvciA9IGZ1bmN0aW9uKCkge1xu
XHQgICAgICAgIHJlamVjdChyZWFkZXIuZXJyb3IpXG5cdCAgICAgIH1cblx0ICAgIH0pXG5cdCAg
fVxuXHRcblx0ICBmdW5jdGlvbiByZWFkQmxvYkFzQXJyYXlCdWZmZXIoYmxvYikge1xuXHQgICAg
dmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKClcblx0ICAgIHJlYWRlci5yZWFkQXNBcnJheUJ1
ZmZlcihibG9iKVxuXHQgICAgcmV0dXJuIGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpXG5cdCAgfVxu
XHRcblx0ICBmdW5jdGlvbiByZWFkQmxvYkFzVGV4dChibG9iKSB7XG5cdCAgICB2YXIgcmVhZGVy
ID0gbmV3IEZpbGVSZWFkZXIoKVxuXHQgICAgcmVhZGVyLnJlYWRBc1RleHQoYmxvYilcblx0ICAg
IHJldHVybiBmaWxlUmVhZGVyUmVhZHkocmVhZGVyKVxuXHQgIH1cblx0XG5cdCAgZnVuY3Rpb24g
Qm9keSgpIHtcblx0ICAgIHRoaXMuYm9keVVzZWQgPSBmYWxzZVxuXHRcblx0ICAgIHRoaXMuX2lu
aXRCb2R5ID0gZnVuY3Rpb24oYm9keSkge1xuXHQgICAgICB0aGlzLl9ib2R5SW5pdCA9IGJvZHlc
blx0ICAgICAgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuXHQgICAgICAgIHRoaXMu
X2JvZHlUZXh0ID0gYm9keVxuXHQgICAgICB9IGVsc2UgaWYgKHN1cHBvcnQuYmxvYiAmJiBCbG9i
LnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG5cdCAgICAgICAgdGhpcy5fYm9keUJs
b2IgPSBib2R5XG5cdCAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5mb3JtRGF0YSAmJiBGb3JtRGF0
YS5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuXHQgICAgICAgIHRoaXMuX2JvZHlG
b3JtRGF0YSA9IGJvZHlcblx0ICAgICAgfSBlbHNlIGlmIChzdXBwb3J0LnNlYXJjaFBhcmFtcyAm
JiBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcblx0ICAg
ICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHkudG9TdHJpbmcoKVxuXHQgICAgICB9IGVsc2UgaWYg
KCFib2R5KSB7XG5cdCAgICAgICAgdGhpcy5fYm9keVRleHQgPSAnJ1xuXHQgICAgICB9IGVsc2Ug
aWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIgJiYgQXJyYXlCdWZmZXIucHJvdG90eXBlLmlzUHJvdG90
eXBlT2YoYm9keSkpIHtcblx0ICAgICAgICAvLyBPbmx5IHN1cHBvcnQgQXJyYXlCdWZmZXJzIGZv
ciBQT1NUIG1ldGhvZC5cblx0ICAgICAgICAvLyBSZWNlaXZpbmcgQXJyYXlCdWZmZXJzIGhhcHBl
bnMgdmlhIEJsb2JzLCBpbnN0ZWFkLlxuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIHRocm93
IG5ldyBFcnJvcigndW5zdXBwb3J0ZWQgQm9keUluaXQgdHlwZScpXG5cdCAgICAgIH1cblx0XG5c
dCAgICAgIGlmICghdGhpcy5oZWFkZXJzLmdldCgnY29udGVudC10eXBlJykpIHtcblx0ICAgICAg
ICBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG5cdCAgICAgICAgICB0aGlzLmhlYWRl
cnMuc2V0KCdjb250ZW50LXR5cGUnLCAndGV4dC9wbGFpbjtjaGFyc2V0PVVURi04Jylcblx0ICAg
ICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlCbG9iICYmIHRoaXMuX2JvZHlCbG9iLnR5cGUpIHtc
blx0ICAgICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsIHRoaXMuX2JvZHlC
bG9iLnR5cGUpXG5cdCAgICAgICAgfSBlbHNlIGlmIChzdXBwb3J0LnNlYXJjaFBhcmFtcyAmJiBV
UkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtcblx0ICAgICAg
ICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsICdhcHBsaWNhdGlvbi94LXd3dy1m
b3JtLXVybGVuY29kZWQ7Y2hhcnNldD1VVEYtOCcpXG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5c
dCAgICB9XG5cdFxuXHQgICAgaWYgKHN1cHBvcnQuYmxvYikge1xuXHQgICAgICB0aGlzLmJsb2Ig
PSBmdW5jdGlvbigpIHtcblx0ICAgICAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlzKVxu
XHQgICAgICAgIGlmIChyZWplY3RlZCkge1xuXHQgICAgICAgICAgcmV0dXJuIHJlamVjdGVkXG5c
dCAgICAgICAgfVxuXHRcblx0ICAgICAgICBpZiAodGhpcy5fYm9keUJsb2IpIHtcblx0ICAgICAg
ICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keUJsb2IpXG5cdCAgICAgICAgfSBl
bHNlIGlmICh0aGlzLl9ib2R5Rm9ybURhdGEpIHtcblx0ICAgICAgICAgIHRocm93IG5ldyBFcnJv
cignY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyBibG9iJylcblx0ICAgICAgICB9IGVs
c2Uge1xuXHQgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgQmxvYihbdGhpcy5f
Ym9keVRleHRdKSlcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHRoaXMuYXJy
YXlCdWZmZXIgPSBmdW5jdGlvbigpIHtcblx0ICAgICAgICByZXR1cm4gdGhpcy5ibG9iKCkudGhl
bihyZWFkQmxvYkFzQXJyYXlCdWZmZXIpXG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHRoaXMudGV4
dCA9IGZ1bmN0aW9uKCkge1xuXHQgICAgICAgIHZhciByZWplY3RlZCA9IGNvbnN1bWVkKHRoaXMp
XG5cdCAgICAgICAgaWYgKHJlamVjdGVkKSB7XG5cdCAgICAgICAgICByZXR1cm4gcmVqZWN0ZWRc
blx0ICAgICAgICB9XG5cdFxuXHQgICAgICAgIGlmICh0aGlzLl9ib2R5QmxvYikge1xuXHQgICAg
ICAgICAgcmV0dXJuIHJlYWRCbG9iQXNUZXh0KHRoaXMuX2JvZHlCbG9iKVxuXHQgICAgICAgIH0g
ZWxzZSBpZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG5cdCAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ2NvdWxkIG5vdCByZWFkIEZvcm1EYXRhIGJvZHkgYXMgdGV4dCcpXG5cdCAgICAgICAgfSBl
bHNlIHtcblx0ICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keVRleHQp
XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB0aGlzLnRl
eHQgPSBmdW5jdGlvbigpIHtcblx0ICAgICAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlz
KVxuXHQgICAgICAgIHJldHVybiByZWplY3RlZCA/IHJlamVjdGVkIDogUHJvbWlzZS5yZXNvbHZl
KHRoaXMuX2JvZHlUZXh0KVxuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKHN1cHBv
cnQuZm9ybURhdGEpIHtcblx0ICAgICAgdGhpcy5mb3JtRGF0YSA9IGZ1bmN0aW9uKCkge1xuXHQg
ICAgICAgIHJldHVybiB0aGlzLnRleHQoKS50aGVuKGRlY29kZSlcblx0ICAgICAgfVxuXHQgICAg
fVxuXHRcblx0ICAgIHRoaXMuanNvbiA9IGZ1bmN0aW9uKCkge1xuXHQgICAgICByZXR1cm4gdGhp
cy50ZXh0KCkudGhlbihKU09OLnBhcnNlKVxuXHQgICAgfVxuXHRcblx0ICAgIHJldHVybiB0aGlz
XG5cdCAgfVxuXHRcblx0ICAvLyBIVFRQIG1ldGhvZHMgd2hvc2UgY2FwaXRhbGl6YXRpb24gc2hv
dWxkIGJlIG5vcm1hbGl6ZWRcblx0ICB2YXIgbWV0aG9kcyA9IFsnREVMRVRFJywgJ0dFVCcsICdI
RUFEJywgJ09QVElPTlMnLCAnUE9TVCcsICdQVVQnXVxuXHRcblx0ICBmdW5jdGlvbiBub3JtYWxp
emVNZXRob2QobWV0aG9kKSB7XG5cdCAgICB2YXIgdXBjYXNlZCA9IG1ldGhvZC50b1VwcGVyQ2Fz
ZSgpXG5cdCAgICByZXR1cm4gKG1ldGhvZHMuaW5kZXhPZih1cGNhc2VkKSA+IC0xKSA/IHVwY2Fz
ZWQgOiBtZXRob2Rcblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIFJlcXVlc3QoaW5wdXQsIG9wdGlv
bnMpIHtcblx0ICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9XG5cdCAgICB2YXIgYm9keSA9IG9w
dGlvbnMuYm9keVxuXHQgICAgaWYgKFJlcXVlc3QucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoaW5w
dXQpKSB7XG5cdCAgICAgIGlmIChpbnB1dC5ib2R5VXNlZCkge1xuXHQgICAgICAgIHRocm93IG5l
dyBUeXBlRXJyb3IoJ0FscmVhZHkgcmVhZCcpXG5cdCAgICAgIH1cblx0ICAgICAgdGhpcy51cmwg
PSBpbnB1dC51cmxcblx0ICAgICAgdGhpcy5jcmVkZW50aWFscyA9IGlucHV0LmNyZWRlbnRpYWxz
XG5cdCAgICAgIGlmICghb3B0aW9ucy5oZWFkZXJzKSB7XG5cdCAgICAgICAgdGhpcy5oZWFkZXJz
ID0gbmV3IEhlYWRlcnMoaW5wdXQuaGVhZGVycylcblx0ICAgICAgfVxuXHQgICAgICB0aGlzLm1l
dGhvZCA9IGlucHV0Lm1ldGhvZFxuXHQgICAgICB0aGlzLm1vZGUgPSBpbnB1dC5tb2RlXG5cdCAg
ICAgIGlmICghYm9keSkge1xuXHQgICAgICAgIGJvZHkgPSBpbnB1dC5fYm9keUluaXRcblx0ICAg
ICAgICBpbnB1dC5ib2R5VXNlZCA9IHRydWVcblx0ICAgICAgfVxuXHQgICAgfSBlbHNlIHtcblx0
ICAgICAgdGhpcy51cmwgPSBpbnB1dFxuXHQgICAgfVxuXHRcblx0ICAgIHRoaXMuY3JlZGVudGlh
bHMgPSBvcHRpb25zLmNyZWRlbnRpYWxzIHx8IHRoaXMuY3JlZGVudGlhbHMgfHwgJ29taXQnXG5c
dCAgICBpZiAob3B0aW9ucy5oZWFkZXJzIHx8ICF0aGlzLmhlYWRlcnMpIHtcblx0ICAgICAgdGhp
cy5oZWFkZXJzID0gbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuXHQgICAgfVxuXHQgICAg
dGhpcy5tZXRob2QgPSBub3JtYWxpemVNZXRob2Qob3B0aW9ucy5tZXRob2QgfHwgdGhpcy5tZXRo
b2QgfHwgJ0dFVCcpXG5cdCAgICB0aGlzLm1vZGUgPSBvcHRpb25zLm1vZGUgfHwgdGhpcy5tb2Rl
IHx8IG51bGxcblx0ICAgIHRoaXMucmVmZXJyZXIgPSBudWxsXG5cdFxuXHQgICAgaWYgKCh0aGlz
Lm1ldGhvZCA9PT0gJ0dFVCcgfHwgdGhpcy5tZXRob2QgPT09ICdIRUFEJykgJiYgYm9keSkge1xu
XHQgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCb2R5IG5vdCBhbGxvd2VkIGZvciBHRVQgb3Ig
SEVBRCByZXF1ZXN0cycpXG5cdCAgICB9XG5cdCAgICB0aGlzLl9pbml0Qm9keShib2R5KVxuXHQg
IH1cblx0XG5cdCAgUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlvbigpIHtcblx0ICAg
IHJldHVybiBuZXcgUmVxdWVzdCh0aGlzKVxuXHQgIH1cblx0XG5cdCAgZnVuY3Rpb24gZGVjb2Rl
KGJvZHkpIHtcblx0ICAgIHZhciBmb3JtID0gbmV3IEZvcm1EYXRhKClcblx0ICAgIGJvZHkudHJp
bSgpLnNwbGl0KCcmJykuZm9yRWFjaChmdW5jdGlvbihieXRlcykge1xuXHQgICAgICBpZiAoYnl0
ZXMpIHtcblx0ICAgICAgICB2YXIgc3BsaXQgPSBieXRlcy5zcGxpdCgnPScpXG5cdCAgICAgICAg
dmFyIG5hbWUgPSBzcGxpdC5zaGlmdCgpLnJlcGxhY2UoL1xcKy9nLCAnICcpXG5cdCAgICAgICAg
dmFyIHZhbHVlID0gc3BsaXQuam9pbignPScpLnJlcGxhY2UoL1xcKy9nLCAnICcpXG5cdCAgICAg
ICAgZm9ybS5hcHBlbmQoZGVjb2RlVVJJQ29tcG9uZW50KG5hbWUpLCBkZWNvZGVVUklDb21wb25l
bnQodmFsdWUpKVxuXHQgICAgICB9XG5cdCAgICB9KVxuXHQgICAgcmV0dXJuIGZvcm1cblx0ICB9
XG5cdFxuXHQgIGZ1bmN0aW9uIGhlYWRlcnMoeGhyKSB7XG5cdCAgICB2YXIgaGVhZCA9IG5ldyBI
ZWFkZXJzKClcblx0ICAgIHZhciBwYWlycyA9ICh4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkg
fHwgJycpLnRyaW0oKS5zcGxpdCgnXFxuJylcblx0ICAgIHBhaXJzLmZvckVhY2goZnVuY3Rpb24o
aGVhZGVyKSB7XG5cdCAgICAgIHZhciBzcGxpdCA9IGhlYWRlci50cmltKCkuc3BsaXQoJzonKVxu
XHQgICAgICB2YXIga2V5ID0gc3BsaXQuc2hpZnQoKS50cmltKClcblx0ICAgICAgdmFyIHZhbHVl
ID0gc3BsaXQuam9pbignOicpLnRyaW0oKVxuXHQgICAgICBoZWFkLmFwcGVuZChrZXksIHZhbHVl
KVxuXHQgICAgfSlcblx0ICAgIHJldHVybiBoZWFkXG5cdCAgfVxuXHRcblx0ICBCb2R5LmNhbGwo
UmVxdWVzdC5wcm90b3R5cGUpXG5cdFxuXHQgIGZ1bmN0aW9uIFJlc3BvbnNlKGJvZHlJbml0LCBv
cHRpb25zKSB7XG5cdCAgICBpZiAoIW9wdGlvbnMpIHtcblx0ICAgICAgb3B0aW9ucyA9IHt9XG5c
dCAgICB9XG5cdFxuXHQgICAgdGhpcy50eXBlID0gJ2RlZmF1bHQnXG5cdCAgICB0aGlzLnN0YXR1
cyA9IG9wdGlvbnMuc3RhdHVzXG5cdCAgICB0aGlzLm9rID0gdGhpcy5zdGF0dXMgPj0gMjAwICYm
IHRoaXMuc3RhdHVzIDwgMzAwXG5cdCAgICB0aGlzLnN0YXR1c1RleHQgPSBvcHRpb25zLnN0YXR1
c1RleHRcblx0ICAgIHRoaXMuaGVhZGVycyA9IG9wdGlvbnMuaGVhZGVycyBpbnN0YW5jZW9mIEhl
YWRlcnMgPyBvcHRpb25zLmhlYWRlcnMgOiBuZXcgSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpXG5c
dCAgICB0aGlzLnVybCA9IG9wdGlvbnMudXJsIHx8ICcnXG5cdCAgICB0aGlzLl9pbml0Qm9keShi
b2R5SW5pdClcblx0ICB9XG5cdFxuXHQgIEJvZHkuY2FsbChSZXNwb25zZS5wcm90b3R5cGUpXG5c
dFxuXHQgIFJlc3BvbnNlLnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uKCkge1xuXHQgICAgcmV0
dXJuIG5ldyBSZXNwb25zZSh0aGlzLl9ib2R5SW5pdCwge1xuXHQgICAgICBzdGF0dXM6IHRoaXMu
c3RhdHVzLFxuXHQgICAgICBzdGF0dXNUZXh0OiB0aGlzLnN0YXR1c1RleHQsXG5cdCAgICAgIGhl
YWRlcnM6IG5ldyBIZWFkZXJzKHRoaXMuaGVhZGVycyksXG5cdCAgICAgIHVybDogdGhpcy51cmxc
blx0ICAgIH0pXG5cdCAgfVxuXHRcblx0ICBSZXNwb25zZS5lcnJvciA9IGZ1bmN0aW9uKCkge1xu
XHQgICAgdmFyIHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKG51bGwsIHtzdGF0dXM6IDAsIHN0YXR1
c1RleHQ6ICcnfSlcblx0ICAgIHJlc3BvbnNlLnR5cGUgPSAnZXJyb3InXG5cdCAgICByZXR1cm4g
cmVzcG9uc2Vcblx0ICB9XG5cdFxuXHQgIHZhciByZWRpcmVjdFN0YXR1c2VzID0gWzMwMSwgMzAy
LCAzMDMsIDMwNywgMzA4XVxuXHRcblx0ICBSZXNwb25zZS5yZWRpcmVjdCA9IGZ1bmN0aW9uKHVy
bCwgc3RhdHVzKSB7XG5cdCAgICBpZiAocmVkaXJlY3RTdGF0dXNlcy5pbmRleE9mKHN0YXR1cykg
PT09IC0xKSB7XG5cdCAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHN0YXR1cyBj
b2RlJylcblx0ICAgIH1cblx0XG5cdCAgICByZXR1cm4gbmV3IFJlc3BvbnNlKG51bGwsIHtzdGF0
dXM6IHN0YXR1cywgaGVhZGVyczoge2xvY2F0aW9uOiB1cmx9fSlcblx0ICB9XG5cdFxuXHQgIHNl
bGYuSGVhZGVycyA9IEhlYWRlcnNcblx0ICBzZWxmLlJlcXVlc3QgPSBSZXF1ZXN0XG5cdCAgc2Vs
Zi5SZXNwb25zZSA9IFJlc3BvbnNlXG5cdFxuXHQgIHNlbGYuZmV0Y2ggPSBmdW5jdGlvbihpbnB1
dCwgaW5pdCkge1xuXHQgICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJl
amVjdCkge1xuXHQgICAgICB2YXIgcmVxdWVzdFxuXHQgICAgICBpZiAoUmVxdWVzdC5wcm90b3R5
cGUuaXNQcm90b3R5cGVPZihpbnB1dCkgJiYgIWluaXQpIHtcblx0ICAgICAgICByZXF1ZXN0ID0g
aW5wdXRcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICByZXF1ZXN0ID0gbmV3IFJlcXVlc3Qo
aW5wdXQsIGluaXQpXG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0
cFJlcXVlc3QoKVxuXHRcblx0ICAgICAgZnVuY3Rpb24gcmVzcG9uc2VVUkwoKSB7XG5cdCAgICAg
ICAgaWYgKCdyZXNwb25zZVVSTCcgaW4geGhyKSB7XG5cdCAgICAgICAgICByZXR1cm4geGhyLnJl
c3BvbnNlVVJMXG5cdCAgICAgICAgfVxuXHRcblx0ICAgICAgICAvLyBBdm9pZCBzZWN1cml0eSB3
YXJuaW5ncyBvbiBnZXRSZXNwb25zZUhlYWRlciB3aGVuIG5vdCBhbGxvd2VkIGJ5IENPUlNcblx0
ICAgICAgICBpZiAoL15YLVJlcXVlc3QtVVJMOi9tLnRlc3QoeGhyLmdldEFsbFJlc3BvbnNlSGVh
ZGVycygpKSkge1xuXHQgICAgICAgICAgcmV0dXJuIHhoci5nZXRSZXNwb25zZUhlYWRlcignWC1S
ZXF1ZXN0LVVSTCcpXG5cdCAgICAgICAgfVxuXHRcblx0ICAgICAgICByZXR1cm5cblx0ICAgICAg
fVxuXHRcblx0ICAgICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuXHQgICAgICAgIHZhciBv
cHRpb25zID0ge1xuXHQgICAgICAgICAgc3RhdHVzOiB4aHIuc3RhdHVzLFxuXHQgICAgICAgICAg
c3RhdHVzVGV4dDogeGhyLnN0YXR1c1RleHQsXG5cdCAgICAgICAgICBoZWFkZXJzOiBoZWFkZXJz
KHhociksXG5cdCAgICAgICAgICB1cmw6IHJlc3BvbnNlVVJMKClcblx0ICAgICAgICB9XG5cdCAg
ICAgICAgdmFyIGJvZHkgPSAncmVzcG9uc2UnIGluIHhociA/IHhoci5yZXNwb25zZSA6IHhoci5y
ZXNwb25zZVRleHRcblx0ICAgICAgICByZXNvbHZlKG5ldyBSZXNwb25zZShib2R5LCBvcHRpb25z
KSlcblx0ICAgICAgfVxuXHRcblx0ICAgICAgeGhyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcblx0
ICAgICAgICByZWplY3QobmV3IFR5cGVFcnJvcignTmV0d29yayByZXF1ZXN0IGZhaWxlZCcpKVxu
XHQgICAgICB9XG5cdFxuXHQgICAgICB4aHIub250aW1lb3V0ID0gZnVuY3Rpb24oKSB7XG5cdCAg
ICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ05ldHdvcmsgcmVxdWVzdCBmYWlsZWQnKSlcblx0
ICAgICAgfVxuXHRcblx0ICAgICAgeGhyLm9wZW4ocmVxdWVzdC5tZXRob2QsIHJlcXVlc3QudXJs
LCB0cnVlKVxuXHRcblx0ICAgICAgaWYgKHJlcXVlc3QuY3JlZGVudGlhbHMgPT09ICdpbmNsdWRl
Jykge1xuXHQgICAgICAgIHhoci53aXRoQ3JlZGVudGlhbHMgPSB0cnVlXG5cdCAgICAgIH1cblx0
XG5cdCAgICAgIGlmICgncmVzcG9uc2VUeXBlJyBpbiB4aHIgJiYgc3VwcG9ydC5ibG9iKSB7XG5c
dCAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdibG9iJ1xuXHQgICAgICB9XG5cdFxuXHQgICAg
ICByZXF1ZXN0LmhlYWRlcnMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuXHQgICAg
ICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKG5hbWUsIHZhbHVlKVxuXHQgICAgICB9KVxuXHRcblx0
ICAgICAgeGhyLnNlbmQodHlwZW9mIHJlcXVlc3QuX2JvZHlJbml0ID09PSAndW5kZWZpbmVkJyA/
IG51bGwgOiByZXF1ZXN0Ll9ib2R5SW5pdClcblx0ICAgIH0pXG5cdCAgfVxuXHQgIHNlbGYuZmV0
Y2gucG9seWZpbGwgPSB0cnVlXG5cdH0pKHR5cGVvZiBzZWxmICE9PSAndW5kZWZpbmVkJyA/IHNl
bGYgOiB0aGlzKTtcblxuXG4vKioqLyB9LFxuLyogMjEzICovXG4zOCxcbi8qIDIxNCAqL1xuWzIz
MSwgMjNdLFxuLyogMjE1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
blx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgUG9vbGVkQ2xhc3Mg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxNCk7XG5cdHZhciBSZWFjdEVsZW1lbnQgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDE4KTtcblx0XG5cdHZhciBlbXB0eUZ1bmN0aW9uID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg3KTtcblx0dmFyIHRyYXZlcnNlQWxsQ2hpbGRyZW4gPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDIyNCk7XG5cdFxuXHR2YXIgdHdvQXJndW1lbnRQb29sZXIgPSBQb29sZWRDbGFzcy50d29B
cmd1bWVudFBvb2xlcjtcblx0dmFyIGZvdXJBcmd1bWVudFBvb2xlciA9IFBvb2xlZENsYXNzLmZv
dXJBcmd1bWVudFBvb2xlcjtcblx0XG5cdHZhciB1c2VyUHJvdmlkZWRLZXlFc2NhcGVSZWdleCA9
IC9cXC8rL2c7XG5cdGZ1bmN0aW9uIGVzY2FwZVVzZXJQcm92aWRlZEtleSh0ZXh0KSB7XG5cdCAg
cmV0dXJuICgnJyArIHRleHQpLnJlcGxhY2UodXNlclByb3ZpZGVkS2V5RXNjYXBlUmVnZXgsICck
Ji8nKTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFBvb2xlZENsYXNzIHJlcHJlc2VudGluZyB0aGUg
Ym9va2tlZXBpbmcgYXNzb2NpYXRlZCB3aXRoIHBlcmZvcm1pbmcgYSBjaGlsZFxuXHQgKiB0cmF2
ZXJzYWwuIEFsbG93cyBhdm9pZGluZyBiaW5kaW5nIGNhbGxiYWNrcy5cblx0ICpcblx0ICogQGNv
bnN0cnVjdG9yIEZvckVhY2hCb29rS2VlcGluZ1xuXHQgKiBAcGFyYW0geyFmdW5jdGlvbn0gZm9y
RWFjaEZ1bmN0aW9uIEZ1bmN0aW9uIHRvIHBlcmZvcm0gdHJhdmVyc2FsIHdpdGguXG5cdCAqIEBw
YXJhbSB7Pyp9IGZvckVhY2hDb250ZXh0IENvbnRleHQgdG8gcGVyZm9ybSBjb250ZXh0IHdpdGgu
XG5cdCAqL1xuXHRmdW5jdGlvbiBGb3JFYWNoQm9va0tlZXBpbmcoZm9yRWFjaEZ1bmN0aW9uLCBm
b3JFYWNoQ29udGV4dCkge1xuXHQgIHRoaXMuZnVuYyA9IGZvckVhY2hGdW5jdGlvbjtcblx0ICB0
aGlzLmNvbnRleHQgPSBmb3JFYWNoQ29udGV4dDtcblx0ICB0aGlzLmNvdW50ID0gMDtcblx0fVxu
XHRGb3JFYWNoQm9va0tlZXBpbmcucHJvdG90eXBlLmRlc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7
XG5cdCAgdGhpcy5mdW5jID0gbnVsbDtcblx0ICB0aGlzLmNvbnRleHQgPSBudWxsO1xuXHQgIHRo
aXMuY291bnQgPSAwO1xuXHR9O1xuXHRQb29sZWRDbGFzcy5hZGRQb29saW5nVG8oRm9yRWFjaEJv
b2tLZWVwaW5nLCB0d29Bcmd1bWVudFBvb2xlcik7XG5cdFxuXHRmdW5jdGlvbiBmb3JFYWNoU2lu
Z2xlQ2hpbGQoYm9va0tlZXBpbmcsIGNoaWxkLCBuYW1lKSB7XG5cdCAgdmFyIGZ1bmMgPSBib29r
S2VlcGluZy5mdW5jLFxuXHQgICAgICBjb250ZXh0ID0gYm9va0tlZXBpbmcuY29udGV4dDtcblx0
XG5cdCAgZnVuYy5jYWxsKGNvbnRleHQsIGNoaWxkLCBib29rS2VlcGluZy5jb3VudCsrKTtcblx0
fVxuXHRcblx0LyoqXG5cdCAqIEl0ZXJhdGVzIHRocm91Z2ggY2hpbGRyZW4gdGhhdCBhcmUgdHlw
aWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gLlxuXHQgKlxuXHQgKiBTZWUgaHR0
cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVh
Y3QuY2hpbGRyZW4uZm9yZWFjaFxuXHQgKlxuXHQgKiBUaGUgcHJvdmlkZWQgZm9yRWFjaEZ1bmMo
Y2hpbGQsIGluZGV4KSB3aWxsIGJlIGNhbGxlZCBmb3IgZWFjaFxuXHQgKiBsZWFmIGNoaWxkLlxu
XHQgKlxuXHQgKiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRhaW5lci5c
blx0ICogQHBhcmFtIHtmdW5jdGlvbigqLCBpbnQpfSBmb3JFYWNoRnVuY1xuXHQgKiBAcGFyYW0g
eyp9IGZvckVhY2hDb250ZXh0IENvbnRleHQgZm9yIGZvckVhY2hDb250ZXh0LlxuXHQgKi9cblx0
ZnVuY3Rpb24gZm9yRWFjaENoaWxkcmVuKGNoaWxkcmVuLCBmb3JFYWNoRnVuYywgZm9yRWFjaENv
bnRleHQpIHtcblx0ICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkge1xuXHQgICAgcmV0dXJuIGNoaWxk
cmVuO1xuXHQgIH1cblx0ICB2YXIgdHJhdmVyc2VDb250ZXh0ID0gRm9yRWFjaEJvb2tLZWVwaW5n
LmdldFBvb2xlZChmb3JFYWNoRnVuYywgZm9yRWFjaENvbnRleHQpO1xuXHQgIHRyYXZlcnNlQWxs
Q2hpbGRyZW4oY2hpbGRyZW4sIGZvckVhY2hTaW5nbGVDaGlsZCwgdHJhdmVyc2VDb250ZXh0KTtc
blx0ICBGb3JFYWNoQm9va0tlZXBpbmcucmVsZWFzZSh0cmF2ZXJzZUNvbnRleHQpO1xuXHR9XG5c
dFxuXHQvKipcblx0ICogUG9vbGVkQ2xhc3MgcmVwcmVzZW50aW5nIHRoZSBib29ra2VlcGluZyBh
c3NvY2lhdGVkIHdpdGggcGVyZm9ybWluZyBhIGNoaWxkXG5cdCAqIG1hcHBpbmcuIEFsbG93cyBh
dm9pZGluZyBiaW5kaW5nIGNhbGxiYWNrcy5cblx0ICpcblx0ICogQGNvbnN0cnVjdG9yIE1hcEJv
b2tLZWVwaW5nXG5cdCAqIEBwYXJhbSB7ISp9IG1hcFJlc3VsdCBPYmplY3QgY29udGFpbmluZyB0
aGUgb3JkZXJlZCBtYXAgb2YgcmVzdWx0cy5cblx0ICogQHBhcmFtIHshZnVuY3Rpb259IG1hcEZ1
bmN0aW9uIEZ1bmN0aW9uIHRvIHBlcmZvcm0gbWFwcGluZyB3aXRoLlxuXHQgKiBAcGFyYW0gez8q
fSBtYXBDb250ZXh0IENvbnRleHQgdG8gcGVyZm9ybSBtYXBwaW5nIHdpdGguXG5cdCAqL1xuXHRm
dW5jdGlvbiBNYXBCb29rS2VlcGluZyhtYXBSZXN1bHQsIGtleVByZWZpeCwgbWFwRnVuY3Rpb24s
IG1hcENvbnRleHQpIHtcblx0ICB0aGlzLnJlc3VsdCA9IG1hcFJlc3VsdDtcblx0ICB0aGlzLmtl
eVByZWZpeCA9IGtleVByZWZpeDtcblx0ICB0aGlzLmZ1bmMgPSBtYXBGdW5jdGlvbjtcblx0ICB0
aGlzLmNvbnRleHQgPSBtYXBDb250ZXh0O1xuXHQgIHRoaXMuY291bnQgPSAwO1xuXHR9XG5cdE1h
cEJvb2tLZWVwaW5nLnByb3RvdHlwZS5kZXN0cnVjdG9yID0gZnVuY3Rpb24gKCkge1xuXHQgIHRo
aXMucmVzdWx0ID0gbnVsbDtcblx0ICB0aGlzLmtleVByZWZpeCA9IG51bGw7XG5cdCAgdGhpcy5m
dW5jID0gbnVsbDtcblx0ICB0aGlzLmNvbnRleHQgPSBudWxsO1xuXHQgIHRoaXMuY291bnQgPSAw
O1xuXHR9O1xuXHRQb29sZWRDbGFzcy5hZGRQb29saW5nVG8oTWFwQm9va0tlZXBpbmcsIGZvdXJB
cmd1bWVudFBvb2xlcik7XG5cdFxuXHRmdW5jdGlvbiBtYXBTaW5nbGVDaGlsZEludG9Db250ZXh0
KGJvb2tLZWVwaW5nLCBjaGlsZCwgY2hpbGRLZXkpIHtcblx0ICB2YXIgcmVzdWx0ID0gYm9va0tl
ZXBpbmcucmVzdWx0LFxuXHQgICAgICBrZXlQcmVmaXggPSBib29rS2VlcGluZy5rZXlQcmVmaXgs
XG5cdCAgICAgIGZ1bmMgPSBib29rS2VlcGluZy5mdW5jLFxuXHQgICAgICBjb250ZXh0ID0gYm9v
a0tlZXBpbmcuY29udGV4dDtcblx0XG5cdFxuXHQgIHZhciBtYXBwZWRDaGlsZCA9IGZ1bmMuY2Fs
bChjb250ZXh0LCBjaGlsZCwgYm9va0tlZXBpbmcuY291bnQrKyk7XG5cdCAgaWYgKEFycmF5Lmlz
QXJyYXkobWFwcGVkQ2hpbGQpKSB7XG5cdCAgICBtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFs
KG1hcHBlZENoaWxkLCByZXN1bHQsIGNoaWxkS2V5LCBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5z
QXJndW1lbnQpO1xuXHQgIH0gZWxzZSBpZiAobWFwcGVkQ2hpbGQgIT0gbnVsbCkge1xuXHQgICAg
aWYgKFJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChtYXBwZWRDaGlsZCkpIHtcblx0ICAgICAg
bWFwcGVkQ2hpbGQgPSBSZWFjdEVsZW1lbnQuY2xvbmVBbmRSZXBsYWNlS2V5KG1hcHBlZENoaWxk
LFxuXHQgICAgICAvLyBLZWVwIGJvdGggdGhlIChtYXBwZWQpIGFuZCBvbGQga2V5cyBpZiB0aGV5
IGRpZmZlciwganVzdCBhc1xuXHQgICAgICAvLyB0cmF2ZXJzZUFsbENoaWxkcmVuIHVzZWQgdG8g
ZG8gZm9yIG9iamVjdHMgYXMgY2hpbGRyZW5cblx0ICAgICAga2V5UHJlZml4ICsgKG1hcHBlZENo
aWxkLmtleSAmJiAoIWNoaWxkIHx8IGNoaWxkLmtleSAhPT0gbWFwcGVkQ2hpbGQua2V5KSA/IGVz
Y2FwZVVzZXJQcm92aWRlZEtleShtYXBwZWRDaGlsZC5rZXkpICsgJy8nIDogJycpICsgY2hpbGRL
ZXkpO1xuXHQgICAgfVxuXHQgICAgcmVzdWx0LnB1c2gobWFwcGVkQ2hpbGQpO1xuXHQgIH1cblx0
fVxuXHRcblx0ZnVuY3Rpb24gbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChjaGlsZHJlbiwg
YXJyYXksIHByZWZpeCwgZnVuYywgY29udGV4dCkge1xuXHQgIHZhciBlc2NhcGVkUHJlZml4ID0g
Jyc7XG5cdCAgaWYgKHByZWZpeCAhPSBudWxsKSB7XG5cdCAgICBlc2NhcGVkUHJlZml4ID0gZXNj
YXBlVXNlclByb3ZpZGVkS2V5KHByZWZpeCkgKyAnLyc7XG5cdCAgfVxuXHQgIHZhciB0cmF2ZXJz
ZUNvbnRleHQgPSBNYXBCb29rS2VlcGluZy5nZXRQb29sZWQoYXJyYXksIGVzY2FwZWRQcmVmaXgs
IGZ1bmMsIGNvbnRleHQpO1xuXHQgIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIG1hcFNp
bmdsZUNoaWxkSW50b0NvbnRleHQsIHRyYXZlcnNlQ29udGV4dCk7XG5cdCAgTWFwQm9va0tlZXBp
bmcucmVsZWFzZSh0cmF2ZXJzZUNvbnRleHQpO1xuXHR9XG5cdFxuXHQvKipcblx0ICogTWFwcyBj
aGlsZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAu
XG5cdCAqXG5cdCAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3Rv
cC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jaGlsZHJlbi5tYXBcblx0ICpcblx0ICogVGhlIHByb3Zp
ZGVkIG1hcEZ1bmN0aW9uKGNoaWxkLCBrZXksIGluZGV4KSB3aWxsIGJlIGNhbGxlZCBmb3IgZWFj
aFxuXHQgKiBsZWFmIGNoaWxkLlxuXHQgKlxuXHQgKiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGls
ZHJlbiB0cmVlIGNvbnRhaW5lci5cblx0ICogQHBhcmFtIHtmdW5jdGlvbigqLCBpbnQpfSBmdW5j
IFRoZSBtYXAgZnVuY3Rpb24uXG5cdCAqIEBwYXJhbSB7Kn0gY29udGV4dCBDb250ZXh0IGZvciBt
YXBGdW5jdGlvbi5cblx0ICogQHJldHVybiB7b2JqZWN0fSBPYmplY3QgY29udGFpbmluZyB0aGUg
b3JkZXJlZCBtYXAgb2YgcmVzdWx0cy5cblx0ICovXG5cdGZ1bmN0aW9uIG1hcENoaWxkcmVuKGNo
aWxkcmVuLCBmdW5jLCBjb250ZXh0KSB7XG5cdCAgaWYgKGNoaWxkcmVuID09IG51bGwpIHtcblx0
ICAgIHJldHVybiBjaGlsZHJlbjtcblx0ICB9XG5cdCAgdmFyIHJlc3VsdCA9IFtdO1xuXHQgIG1h
cEludG9XaXRoS2V5UHJlZml4SW50ZXJuYWwoY2hpbGRyZW4sIHJlc3VsdCwgbnVsbCwgZnVuYywg
Y29udGV4dCk7XG5cdCAgcmV0dXJuIHJlc3VsdDtcblx0fVxuXHRcblx0ZnVuY3Rpb24gZm9yRWFj
aFNpbmdsZUNoaWxkRHVtbXkodHJhdmVyc2VDb250ZXh0LCBjaGlsZCwgbmFtZSkge1xuXHQgIHJl
dHVybiBudWxsO1xuXHR9XG5cdFxuXHQvKipcblx0ICogQ291bnQgdGhlIG51bWJlciBvZiBjaGls
ZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzXG5cdCAqIGBwcm9wcy5jaGlsZHJl
bmAuXG5cdCAqXG5cdCAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2Nz
L3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jaGlsZHJlbi5jb3VudFxuXHQgKlxuXHQgKiBAcGFy
YW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRhaW5lci5cblx0ICogQHJldHVybiB7
bnVtYmVyfSBUaGUgbnVtYmVyIG9mIGNoaWxkcmVuLlxuXHQgKi9cblx0ZnVuY3Rpb24gY291bnRD
aGlsZHJlbihjaGlsZHJlbiwgY29udGV4dCkge1xuXHQgIHJldHVybiB0cmF2ZXJzZUFsbENoaWxk
cmVuKGNoaWxkcmVuLCBmb3JFYWNoU2luZ2xlQ2hpbGREdW1teSwgbnVsbCk7XG5cdH1cblx0XG5c
dC8qKlxuXHQgKiBGbGF0dGVuIGEgY2hpbGRyZW4gb2JqZWN0ICh0eXBpY2FsbHkgc3BlY2lmaWVk
IGFzIGBwcm9wcy5jaGlsZHJlbmApIGFuZFxuXHQgKiByZXR1cm4gYW4gYXJyYXkgd2l0aCBhcHBy
b3ByaWF0ZWx5IHJlLWtleWVkIGNoaWxkcmVuLlxuXHQgKlxuXHQgKiBTZWUgaHR0cHM6Ly9mYWNl
Ym9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY2hpbGRy
ZW4udG9hcnJheVxuXHQgKi9cblx0ZnVuY3Rpb24gdG9BcnJheShjaGlsZHJlbikge1xuXHQgIHZh
ciByZXN1bHQgPSBbXTtcblx0ICBtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsKGNoaWxkcmVu
LCByZXN1bHQsIG51bGwsIGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNBcmd1bWVudCk7XG5cdCAg
cmV0dXJuIHJlc3VsdDtcblx0fVxuXHRcblx0dmFyIFJlYWN0Q2hpbGRyZW4gPSB7XG5cdCAgZm9y
RWFjaDogZm9yRWFjaENoaWxkcmVuLFxuXHQgIG1hcDogbWFwQ2hpbGRyZW4sXG5cdCAgbWFwSW50
b1dpdGhLZXlQcmVmaXhJbnRlcm5hbDogbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbCxcblx0
ICBjb3VudDogY291bnRDaGlsZHJlbixcblx0ICB0b0FycmF5OiB0b0FycmF5XG5cdH07XG5cdFxu
XHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q2hpbGRyZW47XG5cbi8qKiovIH0sXG4vKiAyMTYgKi9c
bi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xu
XG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5c
dCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBSZWFjdEVsZW1lbnQgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDE4KTtcblx0XG5cdC8qKlxuXHQgKiBDcmVhdGUgYSBmYWN0b3J5IHRoYXQgY3JlYXRlcyBI
VE1MIHRhZyBlbGVtZW50cy5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICovXG5cdHZhciBjcmVh
dGVET01GYWN0b3J5ID0gUmVhY3RFbGVtZW50LmNyZWF0ZUZhY3Rvcnk7XG5cdGlmIChmYWxzZSkg
e1xuXHQgIHZhciBSZWFjdEVsZW1lbnRWYWxpZGF0b3IgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVu
dFZhbGlkYXRvcicpO1xuXHQgIGNyZWF0ZURPTUZhY3RvcnkgPSBSZWFjdEVsZW1lbnRWYWxpZGF0
b3IuY3JlYXRlRmFjdG9yeTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBtYXBwaW5n
IGZyb20gc3VwcG9ydGVkIEhUTUwgdGFncyB0byBgUmVhY3RET01Db21wb25lbnRgIGNsYXNzZXMu
XG5cdCAqXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdHZhciBSZWFjdERPTUZhY3RvcmllcyA9IHtc
blx0ICBhOiBjcmVhdGVET01GYWN0b3J5KCdhJyksXG5cdCAgYWJicjogY3JlYXRlRE9NRmFjdG9y
eSgnYWJicicpLFxuXHQgIGFkZHJlc3M6IGNyZWF0ZURPTUZhY3RvcnkoJ2FkZHJlc3MnKSxcblx0
ICBhcmVhOiBjcmVhdGVET01GYWN0b3J5KCdhcmVhJyksXG5cdCAgYXJ0aWNsZTogY3JlYXRlRE9N
RmFjdG9yeSgnYXJ0aWNsZScpLFxuXHQgIGFzaWRlOiBjcmVhdGVET01GYWN0b3J5KCdhc2lkZScp
LFxuXHQgIGF1ZGlvOiBjcmVhdGVET01GYWN0b3J5KCdhdWRpbycpLFxuXHQgIGI6IGNyZWF0ZURP
TUZhY3RvcnkoJ2InKSxcblx0ICBiYXNlOiBjcmVhdGVET01GYWN0b3J5KCdiYXNlJyksXG5cdCAg
YmRpOiBjcmVhdGVET01GYWN0b3J5KCdiZGknKSxcblx0ICBiZG86IGNyZWF0ZURPTUZhY3Rvcnko
J2JkbycpLFxuXHQgIGJpZzogY3JlYXRlRE9NRmFjdG9yeSgnYmlnJyksXG5cdCAgYmxvY2txdW90
ZTogY3JlYXRlRE9NRmFjdG9yeSgnYmxvY2txdW90ZScpLFxuXHQgIGJvZHk6IGNyZWF0ZURPTUZh
Y3RvcnkoJ2JvZHknKSxcblx0ICBicjogY3JlYXRlRE9NRmFjdG9yeSgnYnInKSxcblx0ICBidXR0
b246IGNyZWF0ZURPTUZhY3RvcnkoJ2J1dHRvbicpLFxuXHQgIGNhbnZhczogY3JlYXRlRE9NRmFj
dG9yeSgnY2FudmFzJyksXG5cdCAgY2FwdGlvbjogY3JlYXRlRE9NRmFjdG9yeSgnY2FwdGlvbicp
LFxuXHQgIGNpdGU6IGNyZWF0ZURPTUZhY3RvcnkoJ2NpdGUnKSxcblx0ICBjb2RlOiBjcmVhdGVE
T01GYWN0b3J5KCdjb2RlJyksXG5cdCAgY29sOiBjcmVhdGVET01GYWN0b3J5KCdjb2wnKSxcblx0
ICBjb2xncm91cDogY3JlYXRlRE9NRmFjdG9yeSgnY29sZ3JvdXAnKSxcblx0ICBkYXRhOiBjcmVh
dGVET01GYWN0b3J5KCdkYXRhJyksXG5cdCAgZGF0YWxpc3Q6IGNyZWF0ZURPTUZhY3RvcnkoJ2Rh
dGFsaXN0JyksXG5cdCAgZGQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2RkJyksXG5cdCAgZGVsOiBjcmVh
dGVET01GYWN0b3J5KCdkZWwnKSxcblx0ICBkZXRhaWxzOiBjcmVhdGVET01GYWN0b3J5KCdkZXRh
aWxzJyksXG5cdCAgZGZuOiBjcmVhdGVET01GYWN0b3J5KCdkZm4nKSxcblx0ICBkaWFsb2c6IGNy
ZWF0ZURPTUZhY3RvcnkoJ2RpYWxvZycpLFxuXHQgIGRpdjogY3JlYXRlRE9NRmFjdG9yeSgnZGl2
JyksXG5cdCAgZGw6IGNyZWF0ZURPTUZhY3RvcnkoJ2RsJyksXG5cdCAgZHQ6IGNyZWF0ZURPTUZh
Y3RvcnkoJ2R0JyksXG5cdCAgZW06IGNyZWF0ZURPTUZhY3RvcnkoJ2VtJyksXG5cdCAgZW1iZWQ6
IGNyZWF0ZURPTUZhY3RvcnkoJ2VtYmVkJyksXG5cdCAgZmllbGRzZXQ6IGNyZWF0ZURPTUZhY3Rv
cnkoJ2ZpZWxkc2V0JyksXG5cdCAgZmlnY2FwdGlvbjogY3JlYXRlRE9NRmFjdG9yeSgnZmlnY2Fw
dGlvbicpLFxuXHQgIGZpZ3VyZTogY3JlYXRlRE9NRmFjdG9yeSgnZmlndXJlJyksXG5cdCAgZm9v
dGVyOiBjcmVhdGVET01GYWN0b3J5KCdmb290ZXInKSxcblx0ICBmb3JtOiBjcmVhdGVET01GYWN0
b3J5KCdmb3JtJyksXG5cdCAgaDE6IGNyZWF0ZURPTUZhY3RvcnkoJ2gxJyksXG5cdCAgaDI6IGNy
ZWF0ZURPTUZhY3RvcnkoJ2gyJyksXG5cdCAgaDM6IGNyZWF0ZURPTUZhY3RvcnkoJ2gzJyksXG5c
dCAgaDQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2g0JyksXG5cdCAgaDU6IGNyZWF0ZURPTUZhY3Rvcnko
J2g1JyksXG5cdCAgaDY6IGNyZWF0ZURPTUZhY3RvcnkoJ2g2JyksXG5cdCAgaGVhZDogY3JlYXRl
RE9NRmFjdG9yeSgnaGVhZCcpLFxuXHQgIGhlYWRlcjogY3JlYXRlRE9NRmFjdG9yeSgnaGVhZGVy
JyksXG5cdCAgaGdyb3VwOiBjcmVhdGVET01GYWN0b3J5KCdoZ3JvdXAnKSxcblx0ICBocjogY3Jl
YXRlRE9NRmFjdG9yeSgnaHInKSxcblx0ICBodG1sOiBjcmVhdGVET01GYWN0b3J5KCdodG1sJyks
XG5cdCAgaTogY3JlYXRlRE9NRmFjdG9yeSgnaScpLFxuXHQgIGlmcmFtZTogY3JlYXRlRE9NRmFj
dG9yeSgnaWZyYW1lJyksXG5cdCAgaW1nOiBjcmVhdGVET01GYWN0b3J5KCdpbWcnKSxcblx0ICBp
bnB1dDogY3JlYXRlRE9NRmFjdG9yeSgnaW5wdXQnKSxcblx0ICBpbnM6IGNyZWF0ZURPTUZhY3Rv
cnkoJ2lucycpLFxuXHQgIGtiZDogY3JlYXRlRE9NRmFjdG9yeSgna2JkJyksXG5cdCAga2V5Z2Vu
OiBjcmVhdGVET01GYWN0b3J5KCdrZXlnZW4nKSxcblx0ICBsYWJlbDogY3JlYXRlRE9NRmFjdG9y
eSgnbGFiZWwnKSxcblx0ICBsZWdlbmQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2xlZ2VuZCcpLFxuXHQg
IGxpOiBjcmVhdGVET01GYWN0b3J5KCdsaScpLFxuXHQgIGxpbms6IGNyZWF0ZURPTUZhY3Rvcnko
J2xpbmsnKSxcblx0ICBtYWluOiBjcmVhdGVET01GYWN0b3J5KCdtYWluJyksXG5cdCAgbWFwOiBj
cmVhdGVET01GYWN0b3J5KCdtYXAnKSxcblx0ICBtYXJrOiBjcmVhdGVET01GYWN0b3J5KCdtYXJr
JyksXG5cdCAgbWVudTogY3JlYXRlRE9NRmFjdG9yeSgnbWVudScpLFxuXHQgIG1lbnVpdGVtOiBj
cmVhdGVET01GYWN0b3J5KCdtZW51aXRlbScpLFxuXHQgIG1ldGE6IGNyZWF0ZURPTUZhY3Rvcnko
J21ldGEnKSxcblx0ICBtZXRlcjogY3JlYXRlRE9NRmFjdG9yeSgnbWV0ZXInKSxcblx0ICBuYXY6
IGNyZWF0ZURPTUZhY3RvcnkoJ25hdicpLFxuXHQgIG5vc2NyaXB0OiBjcmVhdGVET01GYWN0b3J5
KCdub3NjcmlwdCcpLFxuXHQgIG9iamVjdDogY3JlYXRlRE9NRmFjdG9yeSgnb2JqZWN0JyksXG5c
dCAgb2w6IGNyZWF0ZURPTUZhY3RvcnkoJ29sJyksXG5cdCAgb3B0Z3JvdXA6IGNyZWF0ZURPTUZh
Y3RvcnkoJ29wdGdyb3VwJyksXG5cdCAgb3B0aW9uOiBjcmVhdGVET01GYWN0b3J5KCdvcHRpb24n
KSxcblx0ICBvdXRwdXQ6IGNyZWF0ZURPTUZhY3RvcnkoJ291dHB1dCcpLFxuXHQgIHA6IGNyZWF0
ZURPTUZhY3RvcnkoJ3AnKSxcblx0ICBwYXJhbTogY3JlYXRlRE9NRmFjdG9yeSgncGFyYW0nKSxc
blx0ICBwaWN0dXJlOiBjcmVhdGVET01GYWN0b3J5KCdwaWN0dXJlJyksXG5cdCAgcHJlOiBjcmVh
dGVET01GYWN0b3J5KCdwcmUnKSxcblx0ICBwcm9ncmVzczogY3JlYXRlRE9NRmFjdG9yeSgncHJv
Z3Jlc3MnKSxcblx0ICBxOiBjcmVhdGVET01GYWN0b3J5KCdxJyksXG5cdCAgcnA6IGNyZWF0ZURP
TUZhY3RvcnkoJ3JwJyksXG5cdCAgcnQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3J0JyksXG5cdCAgcnVi
eTogY3JlYXRlRE9NRmFjdG9yeSgncnVieScpLFxuXHQgIHM6IGNyZWF0ZURPTUZhY3RvcnkoJ3Mn
KSxcblx0ICBzYW1wOiBjcmVhdGVET01GYWN0b3J5KCdzYW1wJyksXG5cdCAgc2NyaXB0OiBjcmVh
dGVET01GYWN0b3J5KCdzY3JpcHQnKSxcblx0ICBzZWN0aW9uOiBjcmVhdGVET01GYWN0b3J5KCdz
ZWN0aW9uJyksXG5cdCAgc2VsZWN0OiBjcmVhdGVET01GYWN0b3J5KCdzZWxlY3QnKSxcblx0ICBz
bWFsbDogY3JlYXRlRE9NRmFjdG9yeSgnc21hbGwnKSxcblx0ICBzb3VyY2U6IGNyZWF0ZURPTUZh
Y3RvcnkoJ3NvdXJjZScpLFxuXHQgIHNwYW46IGNyZWF0ZURPTUZhY3RvcnkoJ3NwYW4nKSxcblx0
ICBzdHJvbmc6IGNyZWF0ZURPTUZhY3RvcnkoJ3N0cm9uZycpLFxuXHQgIHN0eWxlOiBjcmVhdGVE
T01GYWN0b3J5KCdzdHlsZScpLFxuXHQgIHN1YjogY3JlYXRlRE9NRmFjdG9yeSgnc3ViJyksXG5c
dCAgc3VtbWFyeTogY3JlYXRlRE9NRmFjdG9yeSgnc3VtbWFyeScpLFxuXHQgIHN1cDogY3JlYXRl
RE9NRmFjdG9yeSgnc3VwJyksXG5cdCAgdGFibGU6IGNyZWF0ZURPTUZhY3RvcnkoJ3RhYmxlJyks
XG5cdCAgdGJvZHk6IGNyZWF0ZURPTUZhY3RvcnkoJ3Rib2R5JyksXG5cdCAgdGQ6IGNyZWF0ZURP
TUZhY3RvcnkoJ3RkJyksXG5cdCAgdGV4dGFyZWE6IGNyZWF0ZURPTUZhY3RvcnkoJ3RleHRhcmVh
JyksXG5cdCAgdGZvb3Q6IGNyZWF0ZURPTUZhY3RvcnkoJ3Rmb290JyksXG5cdCAgdGg6IGNyZWF0
ZURPTUZhY3RvcnkoJ3RoJyksXG5cdCAgdGhlYWQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3RoZWFkJyks
XG5cdCAgdGltZTogY3JlYXRlRE9NRmFjdG9yeSgndGltZScpLFxuXHQgIHRpdGxlOiBjcmVhdGVE
T01GYWN0b3J5KCd0aXRsZScpLFxuXHQgIHRyOiBjcmVhdGVET01GYWN0b3J5KCd0cicpLFxuXHQg
IHRyYWNrOiBjcmVhdGVET01GYWN0b3J5KCd0cmFjaycpLFxuXHQgIHU6IGNyZWF0ZURPTUZhY3Rv
cnkoJ3UnKSxcblx0ICB1bDogY3JlYXRlRE9NRmFjdG9yeSgndWwnKSxcblx0ICAndmFyJzogY3Jl
YXRlRE9NRmFjdG9yeSgndmFyJyksXG5cdCAgdmlkZW86IGNyZWF0ZURPTUZhY3RvcnkoJ3ZpZGVv
JyksXG5cdCAgd2JyOiBjcmVhdGVET01GYWN0b3J5KCd3YnInKSxcblx0XG5cdCAgLy8gU1ZHXG5c
dCAgY2lyY2xlOiBjcmVhdGVET01GYWN0b3J5KCdjaXJjbGUnKSxcblx0ICBjbGlwUGF0aDogY3Jl
YXRlRE9NRmFjdG9yeSgnY2xpcFBhdGgnKSxcblx0ICBkZWZzOiBjcmVhdGVET01GYWN0b3J5KCdk
ZWZzJyksXG5cdCAgZWxsaXBzZTogY3JlYXRlRE9NRmFjdG9yeSgnZWxsaXBzZScpLFxuXHQgIGc6
IGNyZWF0ZURPTUZhY3RvcnkoJ2cnKSxcblx0ICBpbWFnZTogY3JlYXRlRE9NRmFjdG9yeSgnaW1h
Z2UnKSxcblx0ICBsaW5lOiBjcmVhdGVET01GYWN0b3J5KCdsaW5lJyksXG5cdCAgbGluZWFyR3Jh
ZGllbnQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2xpbmVhckdyYWRpZW50JyksXG5cdCAgbWFzazogY3Jl
YXRlRE9NRmFjdG9yeSgnbWFzaycpLFxuXHQgIHBhdGg6IGNyZWF0ZURPTUZhY3RvcnkoJ3BhdGgn
KSxcblx0ICBwYXR0ZXJuOiBjcmVhdGVET01GYWN0b3J5KCdwYXR0ZXJuJyksXG5cdCAgcG9seWdv
bjogY3JlYXRlRE9NRmFjdG9yeSgncG9seWdvbicpLFxuXHQgIHBvbHlsaW5lOiBjcmVhdGVET01G
YWN0b3J5KCdwb2x5bGluZScpLFxuXHQgIHJhZGlhbEdyYWRpZW50OiBjcmVhdGVET01GYWN0b3J5
KCdyYWRpYWxHcmFkaWVudCcpLFxuXHQgIHJlY3Q6IGNyZWF0ZURPTUZhY3RvcnkoJ3JlY3QnKSxc
blx0ICBzdG9wOiBjcmVhdGVET01GYWN0b3J5KCdzdG9wJyksXG5cdCAgc3ZnOiBjcmVhdGVET01G
YWN0b3J5KCdzdmcnKSxcblx0ICB0ZXh0OiBjcmVhdGVET01GYWN0b3J5KCd0ZXh0JyksXG5cdCAg
dHNwYW46IGNyZWF0ZURPTUZhY3RvcnkoJ3RzcGFuJylcblx0fTtcblx0XG5cdG1vZHVsZS5leHBv
cnRzID0gUmVhY3RET01GYWN0b3JpZXM7XG5cbi8qKiovIH0sXG4vKiAyMTcgKi9cbi8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxu
XHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdHZhciBfcmVxdWlyZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTgpLFxuXHQg
ICAgaXNWYWxpZEVsZW1lbnQgPSBfcmVxdWlyZS5pc1ZhbGlkRWxlbWVudDtcblx0XG5cdHZhciBm
YWN0b3J5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1NSk7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9
IGZhY3RvcnkoaXNWYWxpZEVsZW1lbnQpO1xuXG4vKioqLyB9LFxuLyogMjE4ICovXG4xNjMsXG4v
KiAyMTkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVp
cmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
blx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQg
Ki9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcmVxdWlyZSA9IF9fd2VicGFja19y
ZXF1aXJlX18oODkpLFxuXHQgICAgQ29tcG9uZW50ID0gX3JlcXVpcmUuQ29tcG9uZW50O1xuXHRc
blx0dmFyIF9yZXF1aXJlMiA9IF9fd2VicGFja19yZXF1aXJlX18oMTgpLFxuXHQgICAgaXNWYWxp
ZEVsZW1lbnQgPSBfcmVxdWlyZTIuaXNWYWxpZEVsZW1lbnQ7XG5cdFxuXHR2YXIgUmVhY3ROb29w
VXBkYXRlUXVldWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkyKTtcblx0dmFyIGZhY3RvcnkgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDk3KTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShD
b21wb25lbnQsIGlzVmFsaWRFbGVtZW50LCBSZWFjdE5vb3BVcGRhdGVRdWV1ZSk7XG5cbi8qKiov
IH0sXG4vKiAyMjAgKi9cbjE4Mixcbi8qIDIyMSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBl
eHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5c
dCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBuZXh0RGVidWdJRCA9
IDE7XG5cdFxuXHRmdW5jdGlvbiBnZXROZXh0RGVidWdJRCgpIHtcblx0ICByZXR1cm4gbmV4dERl
YnVnSUQrKztcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBnZXROZXh0RGVidWdJRDtcblxu
LyoqKi8gfSxcbi8qIDIyMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dl
YnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDE0LTIwMTUsIEZh
Y2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5c
dCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0LyoqXG5cdCAqIEZvcmtlZCBm
cm9tIGZianMvd2FybmluZzpcblx0ICogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2ZianMv
YmxvYi9lNjZiYTIwYWQ1YmU0MzNlYjU0NDIzZjJiMDk3ZDgyOTMyNGQ5ZGU2L3BhY2thZ2VzL2Zi
anMvc3JjL19fZm9ya3NfXy93YXJuaW5nLmpzXG5cdCAqXG5cdCAqIE9ubHkgY2hhbmdlIGlzIHdl
IHVzZSBjb25zb2xlLndhcm4gaW5zdGVhZCBvZiBjb25zb2xlLmVycm9yLFxuXHQgKiBhbmQgZG8g
bm90aGluZyB3aGVuICdjb25zb2xlJyBpcyBub3Qgc3VwcG9ydGVkLlxuXHQgKiBUaGlzIHJlYWxs
eSBzaW1wbGlmaWVzIHRoZSBjb2RlLlxuXHQgKiAtLS1cblx0ICogU2ltaWxhciB0byBpbnZhcmlh
bnQgYnV0IG9ubHkgbG9ncyBhIHdhcm5pbmcgaWYgdGhlIGNvbmRpdGlvbiBpcyBub3QgbWV0Llxu
XHQgKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGxvZyBpc3N1ZXMgaW4gZGV2ZWxvcG1lbnQgZW52aXJv
bm1lbnRzIGluIGNyaXRpY2FsXG5cdCAqIHBhdGhzLiBSZW1vdmluZyB0aGUgbG9nZ2luZyBjb2Rl
IGZvciBwcm9kdWN0aW9uIGVudmlyb25tZW50cyB3aWxsIGtlZXAgdGhlXG5cdCAqIHNhbWUgbG9n
aWMgYW5kIGZvbGxvdyB0aGUgc2FtZSBjb2RlIHBhdGhzLlxuXHQgKi9cblx0XG5cdHZhciBsb3dQ
cmlvcml0eVdhcm5pbmcgPSBmdW5jdGlvbiAoKSB7fTtcblx0XG5cdGlmIChmYWxzZSkge1xuXHQg
IHZhciBwcmludFdhcm5pbmcgPSBmdW5jdGlvbiAoZm9ybWF0KSB7XG5cdCAgICBmb3IgKHZhciBf
bGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEg
OiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcblx0ICAgICAgYXJnc1tfa2V5
IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIGFyZ0luZGV4
ID0gMDtcblx0ICAgIHZhciBtZXNzYWdlID0gJ1dhcm5pbmc6ICcgKyBmb3JtYXQucmVwbGFjZSgv
JXMvZywgZnVuY3Rpb24gKCkge1xuXHQgICAgICByZXR1cm4gYXJnc1thcmdJbmRleCsrXTtcblx0
ICAgIH0pO1xuXHQgICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuXHQg
ICAgICBjb25zb2xlLndhcm4obWVzc2FnZSk7XG5cdCAgICB9XG5cdCAgICB0cnkge1xuXHQgICAg
ICAvLyAtLS0gV2VsY29tZSB0byBkZWJ1Z2dpbmcgUmVhY3QgLS0tXG5cdCAgICAgIC8vIFRoaXMg
ZXJyb3Igd2FzIHRocm93biBhcyBhIGNvbnZlbmllbmNlIHNvIHRoYXQgeW91IGNhbiB1c2UgdGhp
cyBzdGFja1xuXHQgICAgICAvLyB0byBmaW5kIHRoZSBjYWxsc2l0ZSB0aGF0IGNhdXNlZCB0aGlz
IHdhcm5pbmcgdG8gZmlyZS5cblx0ICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuXHQg
ICAgfSBjYXRjaCAoeCkge31cblx0ICB9O1xuXHRcblx0ICBsb3dQcmlvcml0eVdhcm5pbmcgPSBm
dW5jdGlvbiAoY29uZGl0aW9uLCBmb3JtYXQpIHtcblx0ICAgIGlmIChmb3JtYXQgPT09IHVuZGVm
aW5lZCkge1xuXHQgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2B3YXJuaW5nKGNvbmRpdGlvbiwgZm9y
bWF0LCAuLi5hcmdzKWAgcmVxdWlyZXMgYSB3YXJuaW5nICcgKyAnbWVzc2FnZSBhcmd1bWVudCcp
O1xuXHQgICAgfVxuXHQgICAgaWYgKCFjb25kaXRpb24pIHtcblx0ICAgICAgZm9yICh2YXIgX2xl
bjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbjIgPiAyID8gX2xlbjIgLSAy
IDogMCksIF9rZXkyID0gMjsgX2tleTIgPCBfbGVuMjsgX2tleTIrKykge1xuXHQgICAgICAgIGFy
Z3NbX2tleTIgLSAyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG5cdCAgICAgIH1cblx0XG5cdCAgICAg
IHByaW50V2FybmluZy5hcHBseSh1bmRlZmluZWQsIFtmb3JtYXRdLmNvbmNhdChhcmdzKSk7XG5c
dCAgICB9XG5cdCAgfTtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBsb3dQcmlvcml0eVdh
cm5pbmc7XG5cbi8qKiovIH0sXG4vKiAyMjMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQg
KlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9k
SW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMyk7XG5cdFxuXHR2YXIgUmVhY3RFbGVt
ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOCk7XG5cdFxuXHR2YXIgaW52YXJpYW50ID0gX193
ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0XG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBmaXJzdCBj
aGlsZCBpbiBhIGNvbGxlY3Rpb24gb2YgY2hpbGRyZW4gYW5kIHZlcmlmaWVzIHRoYXQgdGhlcmVc
blx0ICogaXMgb25seSBvbmUgY2hpbGQgaW4gdGhlIGNvbGxlY3Rpb24uXG5cdCAqXG5cdCAqIFNl
ZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRt
bCNyZWFjdC5jaGlsZHJlbi5vbmx5XG5cdCAqXG5cdCAqIFRoZSBjdXJyZW50IGltcGxlbWVudGF0
aW9uIG9mIHRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0aGF0IGEgc2luZ2xlIGNoaWxkIGdldHNcblx0
ICogcGFzc2VkIHdpdGhvdXQgYSB3cmFwcGVyLCBidXQgdGhlIHB1cnBvc2Ugb2YgdGhpcyBoZWxw
ZXIgZnVuY3Rpb24gaXMgdG9cblx0ICogYWJzdHJhY3QgYXdheSB0aGUgcGFydGljdWxhciBzdHJ1
Y3R1cmUgb2YgY2hpbGRyZW4uXG5cdCAqXG5cdCAqIEBwYXJhbSB7P29iamVjdH0gY2hpbGRyZW4g
Q2hpbGQgY29sbGVjdGlvbiBzdHJ1Y3R1cmUuXG5cdCAqIEByZXR1cm4ge1JlYWN0RWxlbWVudH0g
VGhlIGZpcnN0IGFuZCBvbmx5IGBSZWFjdEVsZW1lbnRgIGNvbnRhaW5lZCBpbiB0aGVcblx0ICog
c3RydWN0dXJlLlxuXHQgKi9cblx0ZnVuY3Rpb24gb25seUNoaWxkKGNoaWxkcmVuKSB7XG5cdCAg
IVJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChjaGlsZHJlbikgPyAgZmFsc2UgPyBpbnZhcmlh
bnQoZmFsc2UsICdSZWFjdC5DaGlsZHJlbi5vbmx5IGV4cGVjdGVkIHRvIHJlY2VpdmUgYSBzaW5n
bGUgUmVhY3QgZWxlbWVudCBjaGlsZC4nKSA6IF9wcm9kSW52YXJpYW50KCcxNDMnKSA6IHZvaWQg
MDtcblx0ICByZXR1cm4gY2hpbGRyZW47XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gb25s
eUNoaWxkO1xuXG4vKioqLyB9LFxuLyogMjI0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4
cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0
ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIg
X3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzKTtcblx0XG5cdHZhciBSZWFj
dEN1cnJlbnRPd25lciA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpO1xuXHR2YXIgUkVBQ1RfRUxF
TUVOVF9UWVBFID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5MSk7XG5cdFxuXHR2YXIgZ2V0SXRlcmF0
b3JGbiA9IF9fd2VicGFja19yZXF1aXJlX18oMjIwKTtcblx0dmFyIGludmFyaWFudCA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMSk7XG5cdHZhciBLZXlFc2NhcGVVdGlscyA9IF9fd2VicGFja19yZXF1
aXJlX18oMjEzKTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHRc
blx0dmFyIFNFUEFSQVRPUiA9ICcuJztcblx0dmFyIFNVQlNFUEFSQVRPUiA9ICc6Jztcblx0XG5c
dC8qKlxuXHQgKiBUaGlzIGlzIGlubGluZWQgZnJvbSBSZWFjdEVsZW1lbnQgc2luY2UgdGhpcyBm
aWxlIGlzIHNoYXJlZCBiZXR3ZWVuXG5cdCAqIGlzb21vcnBoaWMgYW5kIHJlbmRlcmVycy4gV2Ug
Y291bGQgZXh0cmFjdCB0aGlzIHRvIGFcblx0ICpcblx0ICovXG5cdFxuXHQvKipcblx0ICogVE9E
TzogVGVzdCB0aGF0IGEgc2luZ2xlIGNoaWxkIGFuZCBhbiBhcnJheSB3aXRoIG9uZSBpdGVtIGhh
dmUgdGhlIHNhbWUga2V5XG5cdCAqIHBhdHRlcm4uXG5cdCAqL1xuXHRcblx0dmFyIGRpZFdhcm5B
Ym91dE1hcHMgPSBmYWxzZTtcblx0XG5cdC8qKlxuXHQgKiBHZW5lcmF0ZSBhIGtleSBzdHJpbmcg
dGhhdCBpZGVudGlmaWVzIGEgY29tcG9uZW50IHdpdGhpbiBhIHNldC5cblx0ICpcblx0ICogQHBh
cmFtIHsqfSBjb21wb25lbnQgQSBjb21wb25lbnQgdGhhdCBjb3VsZCBjb250YWluIGEgbWFudWFs
IGtleS5cblx0ICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IHRoYXQgaXMgdXNlZCBpZiBh
IG1hbnVhbCBrZXkgaXMgbm90IHByb3ZpZGVkLlxuXHQgKiBAcmV0dXJuIHtzdHJpbmd9XG5cdCAq
L1xuXHRmdW5jdGlvbiBnZXRDb21wb25lbnRLZXkoY29tcG9uZW50LCBpbmRleCkge1xuXHQgIC8v
IERvIHNvbWUgdHlwZWNoZWNraW5nIGhlcmUgc2luY2Ugd2UgY2FsbCB0aGlzIGJsaW5kbHkuIFdl
IHdhbnQgdG8gZW5zdXJlXG5cdCAgLy8gdGhhdCB3ZSBkb24ndCBibG9jayBwb3RlbnRpYWwgZnV0
dXJlIEVTIEFQSXMuXG5cdCAgaWYgKGNvbXBvbmVudCAmJiB0eXBlb2YgY29tcG9uZW50ID09PSAn
b2JqZWN0JyAmJiBjb21wb25lbnQua2V5ICE9IG51bGwpIHtcblx0ICAgIC8vIEV4cGxpY2l0IGtl
eVxuXHQgICAgcmV0dXJuIEtleUVzY2FwZVV0aWxzLmVzY2FwZShjb21wb25lbnQua2V5KTtcblx0
ICB9XG5cdCAgLy8gSW1wbGljaXQga2V5IGRldGVybWluZWQgYnkgdGhlIGluZGV4IGluIHRoZSBz
ZXRcblx0ICByZXR1cm4gaW5kZXgudG9TdHJpbmcoMzYpO1xuXHR9XG5cdFxuXHQvKipcblx0ICog
QHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIuXG5cdCAqIEBwYXJh
bSB7IXN0cmluZ30gbmFtZVNvRmFyIE5hbWUgb2YgdGhlIGtleSBwYXRoIHNvIGZhci5cblx0ICog
QHBhcmFtIHshZnVuY3Rpb259IGNhbGxiYWNrIENhbGxiYWNrIHRvIGludm9rZSB3aXRoIGVhY2gg
Y2hpbGQgZm91bmQuXG5cdCAqIEBwYXJhbSB7Pyp9IHRyYXZlcnNlQ29udGV4dCBVc2VkIHRvIHBh
c3MgaW5mb3JtYXRpb24gdGhyb3VnaG91dCB0aGUgdHJhdmVyc2FsXG5cdCAqIHByb2Nlc3MuXG5c
dCAqIEByZXR1cm4geyFudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhpcyBzdWJ0
cmVlLlxuXHQgKi9cblx0ZnVuY3Rpb24gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGRyZW4s
IG5hbWVTb0ZhciwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCkge1xuXHQgIHZhciB0eXBlID0g
dHlwZW9mIGNoaWxkcmVuO1xuXHRcblx0ICBpZiAodHlwZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlw
ZSA9PT0gJ2Jvb2xlYW4nKSB7XG5cdCAgICAvLyBBbGwgb2YgdGhlIGFib3ZlIGFyZSBwZXJjZWl2
ZWQgYXMgbnVsbC5cblx0ICAgIGNoaWxkcmVuID0gbnVsbDtcblx0ICB9XG5cdFxuXHQgIGlmIChj
aGlsZHJlbiA9PT0gbnVsbCB8fCB0eXBlID09PSAnc3RyaW5nJyB8fCB0eXBlID09PSAnbnVtYmVy
JyB8fFxuXHQgIC8vIFRoZSBmb2xsb3dpbmcgaXMgaW5saW5lZCBmcm9tIFJlYWN0RWxlbWVudC4g
VGhpcyBtZWFucyB3ZSBjYW4gb3B0aW1pemVcblx0ICAvLyBzb21lIGNoZWNrcy4gUmVhY3QgRmli
ZXIgYWxzbyBpbmxpbmVzIHRoaXMgbG9naWMgZm9yIHNpbWlsYXIgcHVycG9zZXMuXG5cdCAgdHlw
ZSA9PT0gJ29iamVjdCcgJiYgY2hpbGRyZW4uJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQ
RSkge1xuXHQgICAgY2FsbGJhY2sodHJhdmVyc2VDb250ZXh0LCBjaGlsZHJlbixcblx0ICAgIC8v
IElmIGl0J3MgdGhlIG9ubHkgY2hpbGQsIHRyZWF0IHRoZSBuYW1lIGFzIGlmIGl0IHdhcyB3cmFw
cGVkIGluIGFuIGFycmF5XG5cdCAgICAvLyBzbyB0aGF0IGl0J3MgY29uc2lzdGVudCBpZiB0aGUg
bnVtYmVyIG9mIGNoaWxkcmVuIGdyb3dzLlxuXHQgICAgbmFtZVNvRmFyID09PSAnJyA/IFNFUEFS
QVRPUiArIGdldENvbXBvbmVudEtleShjaGlsZHJlbiwgMCkgOiBuYW1lU29GYXIpO1xuXHQgICAg
cmV0dXJuIDE7XG5cdCAgfVxuXHRcblx0ICB2YXIgY2hpbGQ7XG5cdCAgdmFyIG5leHROYW1lO1xu
XHQgIHZhciBzdWJ0cmVlQ291bnQgPSAwOyAvLyBDb3VudCBvZiBjaGlsZHJlbiBmb3VuZCBpbiB0
aGUgY3VycmVudCBzdWJ0cmVlLlxuXHQgIHZhciBuZXh0TmFtZVByZWZpeCA9IG5hbWVTb0ZhciA9
PT0gJycgPyBTRVBBUkFUT1IgOiBuYW1lU29GYXIgKyBTVUJTRVBBUkFUT1I7XG5cdFxuXHQgIGlm
IChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuXHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBj
aGlsZHJlbi5sZW5ndGg7IGkrKykge1xuXHQgICAgICBjaGlsZCA9IGNoaWxkcmVuW2ldO1xuXHQg
ICAgICBuZXh0TmFtZSA9IG5leHROYW1lUHJlZml4ICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkLCBp
KTtcblx0ICAgICAgc3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxk
LCBuZXh0TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7XG5cdCAgICB9XG5cdCAgfSBl
bHNlIHtcblx0ICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihjaGlsZHJlbik7XG5c
dCAgICBpZiAoaXRlcmF0b3JGbikge1xuXHQgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZu
LmNhbGwoY2hpbGRyZW4pO1xuXHQgICAgICB2YXIgc3RlcDtcblx0ICAgICAgaWYgKGl0ZXJhdG9y
Rm4gIT09IGNoaWxkcmVuLmVudHJpZXMpIHtcblx0ICAgICAgICB2YXIgaWkgPSAwO1xuXHQgICAg
ICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAg
IGNoaWxkID0gc3RlcC52YWx1ZTtcblx0ICAgICAgICAgIG5leHROYW1lID0gbmV4dE5hbWVQcmVm
aXggKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIGlpKyspO1xuXHQgICAgICAgICAgc3VidHJlZUNv
dW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwgY2FsbGJhY2ss
IHRyYXZlcnNlQ29udGV4dCk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9IGVsc2Uge1xuXHQgICAg
ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgICAgdmFyIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0g
PSAnJztcblx0ICAgICAgICAgIGlmIChSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7XG5cdCAg
ICAgICAgICAgIHZhciBtYXBzQXNDaGlsZHJlbk93bmVyTmFtZSA9IFJlYWN0Q3VycmVudE93bmVy
LmN1cnJlbnQuZ2V0TmFtZSgpO1xuXHQgICAgICAgICAgICBpZiAobWFwc0FzQ2hpbGRyZW5Pd25l
ck5hbWUpIHtcblx0ICAgICAgICAgICAgICBtYXBzQXNDaGlsZHJlbkFkZGVuZHVtID0gJyBDaGVj
ayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG1hcHNBc0NoaWxkcmVuT3duZXJOYW1lICsgJ2Au
Jztcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZGlkV2FybkFib3V0TWFwcywg
J1VzaW5nIE1hcHMgYXMgY2hpbGRyZW4gaXMgbm90IHlldCBmdWxseSBzdXBwb3J0ZWQuIEl0IGlz
IGFuICcgKyAnZXhwZXJpbWVudGFsIGZlYXR1cmUgdGhhdCBtaWdodCBiZSByZW1vdmVkLiBDb252
ZXJ0IGl0IHRvIGEgJyArICdzZXF1ZW5jZSAvIGl0ZXJhYmxlIG9mIGtleWVkIFJlYWN0RWxlbWVu
dHMgaW5zdGVhZC4lcycsIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0pIDogdm9pZCAwO1xuXHQgICAg
ICAgICAgZGlkV2FybkFib3V0TWFwcyA9IHRydWU7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIC8v
IEl0ZXJhdG9yIHdpbGwgcHJvdmlkZSBlbnRyeSBbayx2XSB0dXBsZXMgcmF0aGVyIHRoYW4gdmFs
dWVzLlxuXHQgICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtc
blx0ICAgICAgICAgIHZhciBlbnRyeSA9IHN0ZXAudmFsdWU7XG5cdCAgICAgICAgICBpZiAoZW50
cnkpIHtcblx0ICAgICAgICAgICAgY2hpbGQgPSBlbnRyeVsxXTtcblx0ICAgICAgICAgICAgbmV4
dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIEtleUVzY2FwZVV0aWxzLmVzY2FwZShlbnRyeVswXSkg
KyBTVUJTRVBBUkFUT1IgKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIDApO1xuXHQgICAgICAgICAg
ICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1l
LCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9
XG5cdCAgICAgIH1cblx0ICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ29iamVjdCcpIHtcblx0ICAg
ICAgdmFyIGFkZGVuZHVtID0gJyc7XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIGFk
ZGVuZHVtID0gJyBJZiB5b3UgbWVhbnQgdG8gcmVuZGVyIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJl
biwgdXNlIGFuIGFycmF5ICcgKyAnaW5zdGVhZCBvciB3cmFwIHRoZSBvYmplY3QgdXNpbmcgY3Jl
YXRlRnJhZ21lbnQob2JqZWN0KSBmcm9tIHRoZSAnICsgJ1JlYWN0IGFkZC1vbnMuJztcblx0ICAg
ICAgICBpZiAoY2hpbGRyZW4uX2lzUmVhY3RFbGVtZW50KSB7XG5cdCAgICAgICAgICBhZGRlbmR1
bSA9IFwiIEl0IGxvb2tzIGxpa2UgeW91J3JlIHVzaW5nIGFuIGVsZW1lbnQgY3JlYXRlZCBieSBh
IGRpZmZlcmVudCBcIiArICd2ZXJzaW9uIG9mIFJlYWN0LiBNYWtlIHN1cmUgdG8gdXNlIG9ubHkg
b25lIGNvcHkgb2YgUmVhY3QuJztcblx0ICAgICAgICB9XG5cdCAgICAgICAgaWYgKFJlYWN0Q3Vy
cmVudE93bmVyLmN1cnJlbnQpIHtcblx0ICAgICAgICAgIHZhciBuYW1lID0gUmVhY3RDdXJyZW50
T3duZXIuY3VycmVudC5nZXROYW1lKCk7XG5cdCAgICAgICAgICBpZiAobmFtZSkge1xuXHQgICAg
ICAgICAgICBhZGRlbmR1bSArPSAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFt
ZSArICdgLic7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAg
IHZhciBjaGlsZHJlblN0cmluZyA9IFN0cmluZyhjaGlsZHJlbik7XG5cdCAgICAgICB0cnVlID8g
IGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVh
Y3QgY2hpbGQgKGZvdW5kOiAlcykuJXMnLCBjaGlsZHJlblN0cmluZyA9PT0gJ1tvYmplY3QgT2Jq
ZWN0XScgPyAnb2JqZWN0IHdpdGgga2V5cyB7JyArIE9iamVjdC5rZXlzKGNoaWxkcmVuKS5qb2lu
KCcsICcpICsgJ30nIDogY2hpbGRyZW5TdHJpbmcsIGFkZGVuZHVtKSA6IF9wcm9kSW52YXJpYW50
KCczMScsIGNoaWxkcmVuU3RyaW5nID09PSAnW29iamVjdCBPYmplY3RdJyA/ICdvYmplY3Qgd2l0
aCBrZXlzIHsnICsgT2JqZWN0LmtleXMoY2hpbGRyZW4pLmpvaW4oJywgJykgKyAnfScgOiBjaGls
ZHJlblN0cmluZywgYWRkZW5kdW0pIDogdm9pZCAwO1xuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAg
cmV0dXJuIHN1YnRyZWVDb3VudDtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFRyYXZlcnNlcyBjaGls
ZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAsIGJ1
dFxuXHQgKiBtaWdodCBhbHNvIGJlIHNwZWNpZmllZCB0aHJvdWdoIGF0dHJpYnV0ZXM6XG5cdCAq
XG5cdCAqIC0gYHRyYXZlcnNlQWxsQ2hpbGRyZW4odGhpcy5wcm9wcy5jaGlsZHJlbiwgLi4uKWBc
blx0ICogLSBgdHJhdmVyc2VBbGxDaGlsZHJlbih0aGlzLnByb3BzLmxlZnRQYW5lbENoaWxkcmVu
LCAuLi4pYFxuXHQgKlxuXHQgKiBUaGUgYHRyYXZlcnNlQ29udGV4dGAgaXMgYW4gb3B0aW9uYWwg
YXJndW1lbnQgdGhhdCBpcyBwYXNzZWQgdGhyb3VnaCB0aGVcblx0ICogZW50aXJlIHRyYXZlcnNh
bC4gSXQgY2FuIGJlIHVzZWQgdG8gc3RvcmUgYWNjdW11bGF0aW9ucyBvciBhbnl0aGluZyBlbHNl
IHRoYXRcblx0ICogdGhlIGNhbGxiYWNrIG1pZ2h0IGZpbmQgcmVsZXZhbnQuXG5cdCAqXG5cdCAq
IEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgb2JqZWN0LlxuXHQgKiBAcGFyYW0g
eyFmdW5jdGlvbn0gY2FsbGJhY2sgVG8gaW52b2tlIHVwb24gdHJhdmVyc2luZyBlYWNoIGNoaWxk
LlxuXHQgKiBAcGFyYW0gez8qfSB0cmF2ZXJzZUNvbnRleHQgQ29udGV4dCBmb3IgdHJhdmVyc2Fs
LlxuXHQgKiBAcmV0dXJuIHshbnVtYmVyfSBUaGUgbnVtYmVyIG9mIGNoaWxkcmVuIGluIHRoaXMg
c3VidHJlZS5cblx0ICovXG5cdGZ1bmN0aW9uIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4s
IGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpIHtcblx0ICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkg
e1xuXHQgICAgcmV0dXJuIDA7XG5cdCAgfVxuXHRcblx0ICByZXR1cm4gdHJhdmVyc2VBbGxDaGls
ZHJlbkltcGwoY2hpbGRyZW4sICcnLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcblx0fVxu
XHRcblx0bW9kdWxlLmV4cG9ydHMgPSB0cmF2ZXJzZUFsbENoaWxkcmVuO1xuXG4vKioqLyB9LFxu
LyogMjI1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1
aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRleHBvcnRzLl9fZXNNb2R1bGUgPSB0
cnVlO1xuXHRcblx0dmFyIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFy
Z2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBz
b3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVj
dC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tl
eV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblx0XG5cdGV4cG9ydHNb
J2RlZmF1bHQnXSA9IGFwcGx5TWlkZGxld2FyZTtcblx0XG5cdHZhciBfY29tcG9zZSA9IF9fd2Vi
cGFja19yZXF1aXJlX18oOTQpO1xuXHRcblx0dmFyIF9jb21wb3NlMiA9IF9pbnRlcm9wUmVxdWly
ZURlZmF1bHQoX2NvbXBvc2UpO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVs
dChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQn
OiBvYmogfTsgfVxuXHRcblx0LyoqXG5cdCAqIENyZWF0ZXMgYSBzdG9yZSBlbmhhbmNlciB0aGF0
IGFwcGxpZXMgbWlkZGxld2FyZSB0byB0aGUgZGlzcGF0Y2ggbWV0aG9kXG5cdCAqIG9mIHRoZSBS
ZWR1eCBzdG9yZS4gVGhpcyBpcyBoYW5keSBmb3IgYSB2YXJpZXR5IG9mIHRhc2tzLCBzdWNoIGFz
IGV4cHJlc3Npbmdcblx0ICogYXN5bmNocm9ub3VzIGFjdGlvbnMgaW4gYSBjb25jaXNlIG1hbm5l
ciwgb3IgbG9nZ2luZyBldmVyeSBhY3Rpb24gcGF5bG9hZC5cblx0ICpcblx0ICogU2VlIGByZWR1
eC10aHVua2AgcGFja2FnZSBhcyBhbiBleGFtcGxlIG9mIHRoZSBSZWR1eCBtaWRkbGV3YXJlLlxu
XHQgKlxuXHQgKiBCZWNhdXNlIG1pZGRsZXdhcmUgaXMgcG90ZW50aWFsbHkgYXN5bmNocm9ub3Vz
LCB0aGlzIHNob3VsZCBiZSB0aGUgZmlyc3Rcblx0ICogc3RvcmUgZW5oYW5jZXIgaW4gdGhlIGNv
bXBvc2l0aW9uIGNoYWluLlxuXHQgKlxuXHQgKiBOb3RlIHRoYXQgZWFjaCBtaWRkbGV3YXJlIHdp
bGwgYmUgZ2l2ZW4gdGhlIGBkaXNwYXRjaGAgYW5kIGBnZXRTdGF0ZWAgZnVuY3Rpb25zXG5cdCAq
IGFzIG5hbWVkIGFyZ3VtZW50cy5cblx0ICpcblx0ICogQHBhcmFtIHsuLi5GdW5jdGlvbn0gbWlk
ZGxld2FyZXMgVGhlIG1pZGRsZXdhcmUgY2hhaW4gdG8gYmUgYXBwbGllZC5cblx0ICogQHJldHVy
bnMge0Z1bmN0aW9ufSBBIHN0b3JlIGVuaGFuY2VyIGFwcGx5aW5nIHRoZSBtaWRkbGV3YXJlLlxu
XHQgKi9cblx0ZnVuY3Rpb24gYXBwbHlNaWRkbGV3YXJlKCkge1xuXHQgIGZvciAodmFyIF9sZW4g
PSBhcmd1bWVudHMubGVuZ3RoLCBtaWRkbGV3YXJlcyA9IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsg
X2tleSA8IF9sZW47IF9rZXkrKykge1xuXHQgICAgbWlkZGxld2FyZXNbX2tleV0gPSBhcmd1bWVu
dHNbX2tleV07XG5cdCAgfVxuXHRcblx0ICByZXR1cm4gZnVuY3Rpb24gKGNyZWF0ZVN0b3JlKSB7
XG5cdCAgICByZXR1cm4gZnVuY3Rpb24gKHJlZHVjZXIsIHByZWxvYWRlZFN0YXRlLCBlbmhhbmNl
cikge1xuXHQgICAgICB2YXIgc3RvcmUgPSBjcmVhdGVTdG9yZShyZWR1Y2VyLCBwcmVsb2FkZWRT
dGF0ZSwgZW5oYW5jZXIpO1xuXHQgICAgICB2YXIgX2Rpc3BhdGNoID0gc3RvcmUuZGlzcGF0Y2g7
XG5cdCAgICAgIHZhciBjaGFpbiA9IFtdO1xuXHRcblx0ICAgICAgdmFyIG1pZGRsZXdhcmVBUEkg
PSB7XG5cdCAgICAgICAgZ2V0U3RhdGU6IHN0b3JlLmdldFN0YXRlLFxuXHQgICAgICAgIGRpc3Bh
dGNoOiBmdW5jdGlvbiBkaXNwYXRjaChhY3Rpb24pIHtcblx0ICAgICAgICAgIHJldHVybiBfZGlz
cGF0Y2goYWN0aW9uKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH07XG5cdCAgICAgIGNoYWluID0g
bWlkZGxld2FyZXMubWFwKGZ1bmN0aW9uIChtaWRkbGV3YXJlKSB7XG5cdCAgICAgICAgcmV0dXJu
IG1pZGRsZXdhcmUobWlkZGxld2FyZUFQSSk7XG5cdCAgICAgIH0pO1xuXHQgICAgICBfZGlzcGF0
Y2ggPSBfY29tcG9zZTJbJ2RlZmF1bHQnXS5hcHBseSh1bmRlZmluZWQsIGNoYWluKShzdG9yZS5k
aXNwYXRjaCk7XG5cdFxuXHQgICAgICByZXR1cm4gX2V4dGVuZHMoe30sIHN0b3JlLCB7XG5cdCAg
ICAgICAgZGlzcGF0Y2g6IF9kaXNwYXRjaFxuXHQgICAgICB9KTtcblx0ICAgIH07XG5cdCAgfTtc
blx0fVxuXG4vKioqLyB9LFxuLyogMjI2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMpIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVl
O1xuXHRleHBvcnRzWydkZWZhdWx0J10gPSBiaW5kQWN0aW9uQ3JlYXRvcnM7XG5cdGZ1bmN0aW9u
IGJpbmRBY3Rpb25DcmVhdG9yKGFjdGlvbkNyZWF0b3IsIGRpc3BhdGNoKSB7XG5cdCAgcmV0dXJu
IGZ1bmN0aW9uICgpIHtcblx0ICAgIHJldHVybiBkaXNwYXRjaChhY3Rpb25DcmVhdG9yLmFwcGx5
KHVuZGVmaW5lZCwgYXJndW1lbnRzKSk7XG5cdCAgfTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFR1
cm5zIGFuIG9iamVjdCB3aG9zZSB2YWx1ZXMgYXJlIGFjdGlvbiBjcmVhdG9ycywgaW50byBhbiBv
YmplY3Qgd2l0aCB0aGVcblx0ICogc2FtZSBrZXlzLCBidXQgd2l0aCBldmVyeSBmdW5jdGlvbiB3
cmFwcGVkIGludG8gYSBgZGlzcGF0Y2hgIGNhbGwgc28gdGhleVxuXHQgKiBtYXkgYmUgaW52b2tl
ZCBkaXJlY3RseS4gVGhpcyBpcyBqdXN0IGEgY29udmVuaWVuY2UgbWV0aG9kLCBhcyB5b3UgY2Fu
IGNhbGxcblx0ICogYHN0b3JlLmRpc3BhdGNoKE15QWN0aW9uQ3JlYXRvcnMuZG9Tb21ldGhpbmco
KSlgIHlvdXJzZWxmIGp1c3QgZmluZS5cblx0ICpcblx0ICogRm9yIGNvbnZlbmllbmNlLCB5b3Ug
Y2FuIGFsc28gcGFzcyBhIHNpbmdsZSBmdW5jdGlvbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQsXG5c
dCAqIGFuZCBnZXQgYSBmdW5jdGlvbiBpbiByZXR1cm4uXG5cdCAqXG5cdCAqIEBwYXJhbSB7RnVu
Y3Rpb258T2JqZWN0fSBhY3Rpb25DcmVhdG9ycyBBbiBvYmplY3Qgd2hvc2UgdmFsdWVzIGFyZSBh
Y3Rpb25cblx0ICogY3JlYXRvciBmdW5jdGlvbnMuIE9uZSBoYW5keSB3YXkgdG8gb2J0YWluIGl0
IGlzIHRvIHVzZSBFUzYgYGltcG9ydCAqIGFzYFxuXHQgKiBzeW50YXguIFlvdSBtYXkgYWxzbyBw
YXNzIGEgc2luZ2xlIGZ1bmN0aW9uLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBkaXNw
YXRjaCBUaGUgYGRpc3BhdGNoYCBmdW5jdGlvbiBhdmFpbGFibGUgb24geW91ciBSZWR1eFxuXHQg
KiBzdG9yZS5cblx0ICpcblx0ICogQHJldHVybnMge0Z1bmN0aW9ufE9iamVjdH0gVGhlIG9iamVj
dCBtaW1pY2tpbmcgdGhlIG9yaWdpbmFsIG9iamVjdCwgYnV0IHdpdGhcblx0ICogZXZlcnkgYWN0
aW9uIGNyZWF0b3Igd3JhcHBlZCBpbnRvIHRoZSBgZGlzcGF0Y2hgIGNhbGwuIElmIHlvdSBwYXNz
ZWQgYVxuXHQgKiBmdW5jdGlvbiBhcyBgYWN0aW9uQ3JlYXRvcnNgLCB0aGUgcmV0dXJuIHZhbHVl
IHdpbGwgYWxzbyBiZSBhIHNpbmdsZVxuXHQgKiBmdW5jdGlvbi5cblx0ICovXG5cdGZ1bmN0aW9u
IGJpbmRBY3Rpb25DcmVhdG9ycyhhY3Rpb25DcmVhdG9ycywgZGlzcGF0Y2gpIHtcblx0ICBpZiAo
dHlwZW9mIGFjdGlvbkNyZWF0b3JzID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICByZXR1cm4gYmlu
ZEFjdGlvbkNyZWF0b3IoYWN0aW9uQ3JlYXRvcnMsIGRpc3BhdGNoKTtcblx0ICB9XG5cdFxuXHQg
IGlmICh0eXBlb2YgYWN0aW9uQ3JlYXRvcnMgIT09ICdvYmplY3QnIHx8IGFjdGlvbkNyZWF0b3Jz
ID09PSBudWxsKSB7XG5cdCAgICB0aHJvdyBuZXcgRXJyb3IoJ2JpbmRBY3Rpb25DcmVhdG9ycyBl
eHBlY3RlZCBhbiBvYmplY3Qgb3IgYSBmdW5jdGlvbiwgaW5zdGVhZCByZWNlaXZlZCAnICsgKGFj
dGlvbkNyZWF0b3JzID09PSBudWxsID8gJ251bGwnIDogdHlwZW9mIGFjdGlvbkNyZWF0b3JzKSAr
ICcuICcgKyAnRGlkIHlvdSB3cml0ZSBcImltcG9ydCBBY3Rpb25DcmVhdG9ycyBmcm9tXCIgaW5z
dGVhZCBvZiBcImltcG9ydCAqIGFzIEFjdGlvbkNyZWF0b3JzIGZyb21cIj8nKTtcblx0ICB9XG5c
dFxuXHQgIHZhciBrZXlzID0gT2JqZWN0LmtleXMoYWN0aW9uQ3JlYXRvcnMpO1xuXHQgIHZhciBi
b3VuZEFjdGlvbkNyZWF0b3JzID0ge307XG5cdCAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzLmxl
bmd0aDsgaSsrKSB7XG5cdCAgICB2YXIga2V5ID0ga2V5c1tpXTtcblx0ICAgIHZhciBhY3Rpb25D
cmVhdG9yID0gYWN0aW9uQ3JlYXRvcnNba2V5XTtcblx0ICAgIGlmICh0eXBlb2YgYWN0aW9uQ3Jl
YXRvciA9PT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICBib3VuZEFjdGlvbkNyZWF0b3JzW2tleV0g
PSBiaW5kQWN0aW9uQ3JlYXRvcihhY3Rpb25DcmVhdG9yLCBkaXNwYXRjaCk7XG5cdCAgICB9XG5c
dCAgfVxuXHQgIHJldHVybiBib3VuZEFjdGlvbkNyZWF0b3JzO1xuXHR9XG5cbi8qKiovIH0sXG4v
KiAyMjcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVp
cmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRy
dWU7XG5cdGV4cG9ydHNbJ2RlZmF1bHQnXSA9IGNvbWJpbmVSZWR1Y2Vycztcblx0XG5cdHZhciBf
Y3JlYXRlU3RvcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDk1KTtcblx0XG5cdHZhciBfaXNQbGFp
bk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMzMpO1xuXHRcblx0dmFyIF9pc1BsYWluT2Jq
ZWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzUGxhaW5PYmplY3QpO1xuXHRcblx0dmFy
IF93YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5Nik7XG5cdFxuXHR2YXIgX3dhcm5pbmcy
ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfd2FybmluZyk7XG5cdFxuXHRmdW5jdGlvbiBfaW50
ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8g
b2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cdFxuXHRmdW5jdGlvbiBnZXRVbmRlZmluZWRT
dGF0ZUVycm9yTWVzc2FnZShrZXksIGFjdGlvbikge1xuXHQgIHZhciBhY3Rpb25UeXBlID0gYWN0
aW9uICYmIGFjdGlvbi50eXBlO1xuXHQgIHZhciBhY3Rpb25OYW1lID0gYWN0aW9uVHlwZSAmJiAn
XCInICsgYWN0aW9uVHlwZS50b1N0cmluZygpICsgJ1wiJyB8fCAnYW4gYWN0aW9uJztcblx0XG5c
dCAgcmV0dXJuICdHaXZlbiBhY3Rpb24gJyArIGFjdGlvbk5hbWUgKyAnLCByZWR1Y2VyIFwiJyAr
IGtleSArICdcIiByZXR1cm5lZCB1bmRlZmluZWQuICcgKyAnVG8gaWdub3JlIGFuIGFjdGlvbiwg
eW91IG11c3QgZXhwbGljaXRseSByZXR1cm4gdGhlIHByZXZpb3VzIHN0YXRlLiAnICsgJ0lmIHlv
dSB3YW50IHRoaXMgcmVkdWNlciB0byBob2xkIG5vIHZhbHVlLCB5b3UgY2FuIHJldHVybiBudWxs
IGluc3RlYWQgb2YgdW5kZWZpbmVkLic7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGdldFVuZXhwZWN0
ZWRTdGF0ZVNoYXBlV2FybmluZ01lc3NhZ2UoaW5wdXRTdGF0ZSwgcmVkdWNlcnMsIGFjdGlvbiwg
dW5leHBlY3RlZEtleUNhY2hlKSB7XG5cdCAgdmFyIHJlZHVjZXJLZXlzID0gT2JqZWN0LmtleXMo
cmVkdWNlcnMpO1xuXHQgIHZhciBhcmd1bWVudE5hbWUgPSBhY3Rpb24gJiYgYWN0aW9uLnR5cGUg
PT09IF9jcmVhdGVTdG9yZS5BY3Rpb25UeXBlcy5JTklUID8gJ3ByZWxvYWRlZFN0YXRlIGFyZ3Vt
ZW50IHBhc3NlZCB0byBjcmVhdGVTdG9yZScgOiAncHJldmlvdXMgc3RhdGUgcmVjZWl2ZWQgYnkg
dGhlIHJlZHVjZXInO1xuXHRcblx0ICBpZiAocmVkdWNlcktleXMubGVuZ3RoID09PSAwKSB7XG5c
dCAgICByZXR1cm4gJ1N0b3JlIGRvZXMgbm90IGhhdmUgYSB2YWxpZCByZWR1Y2VyLiBNYWtlIHN1
cmUgdGhlIGFyZ3VtZW50IHBhc3NlZCAnICsgJ3RvIGNvbWJpbmVSZWR1Y2VycyBpcyBhbiBvYmpl
Y3Qgd2hvc2UgdmFsdWVzIGFyZSByZWR1Y2Vycy4nO1xuXHQgIH1cblx0XG5cdCAgaWYgKCEoMCwg
X2lzUGxhaW5PYmplY3QyWydkZWZhdWx0J10pKGlucHV0U3RhdGUpKSB7XG5cdCAgICByZXR1cm4g
J1RoZSAnICsgYXJndW1lbnROYW1lICsgJyBoYXMgdW5leHBlY3RlZCB0eXBlIG9mIFwiJyArIHt9
LnRvU3RyaW5nLmNhbGwoaW5wdXRTdGF0ZSkubWF0Y2goL1xccyhbYS16fEEtWl0rKS8pWzFdICsg
J1wiLiBFeHBlY3RlZCBhcmd1bWVudCB0byBiZSBhbiBvYmplY3Qgd2l0aCB0aGUgZm9sbG93aW5n
ICcgKyAoJ2tleXM6IFwiJyArIHJlZHVjZXJLZXlzLmpvaW4oJ1wiLCBcIicpICsgJ1wiJyk7XG5c
dCAgfVxuXHRcblx0ICB2YXIgdW5leHBlY3RlZEtleXMgPSBPYmplY3Qua2V5cyhpbnB1dFN0YXRl
KS5maWx0ZXIoZnVuY3Rpb24gKGtleSkge1xuXHQgICAgcmV0dXJuICFyZWR1Y2Vycy5oYXNPd25Q
cm9wZXJ0eShrZXkpICYmICF1bmV4cGVjdGVkS2V5Q2FjaGVba2V5XTtcblx0ICB9KTtcblx0XG5c
dCAgdW5leHBlY3RlZEtleXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG5cdCAgICB1bmV4cGVj
dGVkS2V5Q2FjaGVba2V5XSA9IHRydWU7XG5cdCAgfSk7XG5cdFxuXHQgIGlmICh1bmV4cGVjdGVk
S2V5cy5sZW5ndGggPiAwKSB7XG5cdCAgICByZXR1cm4gJ1VuZXhwZWN0ZWQgJyArICh1bmV4cGVj
dGVkS2V5cy5sZW5ndGggPiAxID8gJ2tleXMnIDogJ2tleScpICsgJyAnICsgKCdcIicgKyB1bmV4
cGVjdGVkS2V5cy5qb2luKCdcIiwgXCInKSArICdcIiBmb3VuZCBpbiAnICsgYXJndW1lbnROYW1l
ICsgJy4gJykgKyAnRXhwZWN0ZWQgdG8gZmluZCBvbmUgb2YgdGhlIGtub3duIHJlZHVjZXIga2V5
cyBpbnN0ZWFkOiAnICsgKCdcIicgKyByZWR1Y2VyS2V5cy5qb2luKCdcIiwgXCInKSArICdcIi4g
VW5leHBlY3RlZCBrZXlzIHdpbGwgYmUgaWdub3JlZC4nKTtcblx0ICB9XG5cdH1cblx0XG5cdGZ1
bmN0aW9uIGFzc2VydFJlZHVjZXJTaGFwZShyZWR1Y2Vycykge1xuXHQgIE9iamVjdC5rZXlzKHJl
ZHVjZXJzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcblx0ICAgIHZhciByZWR1Y2VyID0gcmVk
dWNlcnNba2V5XTtcblx0ICAgIHZhciBpbml0aWFsU3RhdGUgPSByZWR1Y2VyKHVuZGVmaW5lZCwg
eyB0eXBlOiBfY3JlYXRlU3RvcmUuQWN0aW9uVHlwZXMuSU5JVCB9KTtcblx0XG5cdCAgICBpZiAo
dHlwZW9mIGluaXRpYWxTdGF0ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcblx0ICAgICAgdGhyb3cgbmV3
IEVycm9yKCdSZWR1Y2VyIFwiJyArIGtleSArICdcIiByZXR1cm5lZCB1bmRlZmluZWQgZHVyaW5n
IGluaXRpYWxpemF0aW9uLiAnICsgJ0lmIHRoZSBzdGF0ZSBwYXNzZWQgdG8gdGhlIHJlZHVjZXIg
aXMgdW5kZWZpbmVkLCB5b3UgbXVzdCAnICsgJ2V4cGxpY2l0bHkgcmV0dXJuIHRoZSBpbml0aWFs
IHN0YXRlLiBUaGUgaW5pdGlhbCBzdGF0ZSBtYXkgJyArICdub3QgYmUgdW5kZWZpbmVkLiBJZiB5
b3UgZG9uXFwndCB3YW50IHRvIHNldCBhIHZhbHVlIGZvciB0aGlzIHJlZHVjZXIsICcgKyAneW91
IGNhbiB1c2UgbnVsbCBpbnN0ZWFkIG9mIHVuZGVmaW5lZC4nKTtcblx0ICAgIH1cblx0XG5cdCAg
ICB2YXIgdHlwZSA9ICdAQHJlZHV4L1BST0JFX1VOS05PV05fQUNUSU9OXycgKyBNYXRoLnJhbmRv
bSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoNykuc3BsaXQoJycpLmpvaW4oJy4nKTtcblx0ICAg
IGlmICh0eXBlb2YgcmVkdWNlcih1bmRlZmluZWQsIHsgdHlwZTogdHlwZSB9KSA9PT0gJ3VuZGVm
aW5lZCcpIHtcblx0ICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZWR1Y2VyIFwiJyArIGtleSArICdc
IiByZXR1cm5lZCB1bmRlZmluZWQgd2hlbiBwcm9iZWQgd2l0aCBhIHJhbmRvbSB0eXBlLiAnICsg
KCdEb25cXCd0IHRyeSB0byBoYW5kbGUgJyArIF9jcmVhdGVTdG9yZS5BY3Rpb25UeXBlcy5JTklU
ICsgJyBvciBvdGhlciBhY3Rpb25zIGluIFwicmVkdXgvKlwiICcpICsgJ25hbWVzcGFjZS4gVGhl
eSBhcmUgY29uc2lkZXJlZCBwcml2YXRlLiBJbnN0ZWFkLCB5b3UgbXVzdCByZXR1cm4gdGhlICcg
KyAnY3VycmVudCBzdGF0ZSBmb3IgYW55IHVua25vd24gYWN0aW9ucywgdW5sZXNzIGl0IGlzIHVu
ZGVmaW5lZCwgJyArICdpbiB3aGljaCBjYXNlIHlvdSBtdXN0IHJldHVybiB0aGUgaW5pdGlhbCBz
dGF0ZSwgcmVnYXJkbGVzcyBvZiB0aGUgJyArICdhY3Rpb24gdHlwZS4gVGhlIGluaXRpYWwgc3Rh
dGUgbWF5IG5vdCBiZSB1bmRlZmluZWQsIGJ1dCBjYW4gYmUgbnVsbC4nKTtcblx0ICAgIH1cblx0
ICB9KTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFR1cm5zIGFuIG9iamVjdCB3aG9zZSB2YWx1ZXMg
YXJlIGRpZmZlcmVudCByZWR1Y2VyIGZ1bmN0aW9ucywgaW50byBhIHNpbmdsZVxuXHQgKiByZWR1
Y2VyIGZ1bmN0aW9uLiBJdCB3aWxsIGNhbGwgZXZlcnkgY2hpbGQgcmVkdWNlciwgYW5kIGdhdGhl
ciB0aGVpciByZXN1bHRzXG5cdCAqIGludG8gYSBzaW5nbGUgc3RhdGUgb2JqZWN0LCB3aG9zZSBr
ZXlzIGNvcnJlc3BvbmQgdG8gdGhlIGtleXMgb2YgdGhlIHBhc3NlZFxuXHQgKiByZWR1Y2VyIGZ1
bmN0aW9ucy5cblx0ICpcblx0ICogQHBhcmFtIHtPYmplY3R9IHJlZHVjZXJzIEFuIG9iamVjdCB3
aG9zZSB2YWx1ZXMgY29ycmVzcG9uZCB0byBkaWZmZXJlbnRcblx0ICogcmVkdWNlciBmdW5jdGlv
bnMgdGhhdCBuZWVkIHRvIGJlIGNvbWJpbmVkIGludG8gb25lLiBPbmUgaGFuZHkgd2F5IHRvIG9i
dGFpblxuXHQgKiBpdCBpcyB0byB1c2UgRVM2IGBpbXBvcnQgKiBhcyByZWR1Y2Vyc2Agc3ludGF4
LiBUaGUgcmVkdWNlcnMgbWF5IG5ldmVyIHJldHVyblxuXHQgKiB1bmRlZmluZWQgZm9yIGFueSBh
Y3Rpb24uIEluc3RlYWQsIHRoZXkgc2hvdWxkIHJldHVybiB0aGVpciBpbml0aWFsIHN0YXRlXG5c
dCAqIGlmIHRoZSBzdGF0ZSBwYXNzZWQgdG8gdGhlbSB3YXMgdW5kZWZpbmVkLCBhbmQgdGhlIGN1
cnJlbnQgc3RhdGUgZm9yIGFueVxuXHQgKiB1bnJlY29nbml6ZWQgYWN0aW9uLlxuXHQgKlxuXHQg
KiBAcmV0dXJucyB7RnVuY3Rpb259IEEgcmVkdWNlciBmdW5jdGlvbiB0aGF0IGludm9rZXMgZXZl
cnkgcmVkdWNlciBpbnNpZGUgdGhlXG5cdCAqIHBhc3NlZCBvYmplY3QsIGFuZCBidWlsZHMgYSBz
dGF0ZSBvYmplY3Qgd2l0aCB0aGUgc2FtZSBzaGFwZS5cblx0ICovXG5cdGZ1bmN0aW9uIGNvbWJp
bmVSZWR1Y2VycyhyZWR1Y2Vycykge1xuXHQgIHZhciByZWR1Y2VyS2V5cyA9IE9iamVjdC5rZXlz
KHJlZHVjZXJzKTtcblx0ICB2YXIgZmluYWxSZWR1Y2VycyA9IHt9O1xuXHQgIGZvciAodmFyIGkg
PSAwOyBpIDwgcmVkdWNlcktleXMubGVuZ3RoOyBpKyspIHtcblx0ICAgIHZhciBrZXkgPSByZWR1
Y2VyS2V5c1tpXTtcblx0XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgaWYgKHR5cGVvZiBy
ZWR1Y2Vyc1trZXldID09PSAndW5kZWZpbmVkJykge1xuXHQgICAgICAgICgwLCBfd2FybmluZzJb
J2RlZmF1bHQnXSkoJ05vIHJlZHVjZXIgcHJvdmlkZWQgZm9yIGtleSBcIicgKyBrZXkgKyAnXCIn
KTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIGlmICh0eXBlb2YgcmVkdWNlcnNba2V5
XSA9PT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICBmaW5hbFJlZHVjZXJzW2tleV0gPSByZWR1Y2Vy
c1trZXldO1xuXHQgICAgfVxuXHQgIH1cblx0ICB2YXIgZmluYWxSZWR1Y2VyS2V5cyA9IE9iamVj
dC5rZXlzKGZpbmFsUmVkdWNlcnMpO1xuXHRcblx0ICB2YXIgdW5leHBlY3RlZEtleUNhY2hlID0g
dm9pZCAwO1xuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgdW5leHBlY3RlZEtleUNhY2hlID0ge307
XG5cdCAgfVxuXHRcblx0ICB2YXIgc2hhcGVBc3NlcnRpb25FcnJvciA9IHZvaWQgMDtcblx0ICB0
cnkge1xuXHQgICAgYXNzZXJ0UmVkdWNlclNoYXBlKGZpbmFsUmVkdWNlcnMpO1xuXHQgIH0gY2F0
Y2ggKGUpIHtcblx0ICAgIHNoYXBlQXNzZXJ0aW9uRXJyb3IgPSBlO1xuXHQgIH1cblx0XG5cdCAg
cmV0dXJuIGZ1bmN0aW9uIGNvbWJpbmF0aW9uKCkge1xuXHQgICAgdmFyIHN0YXRlID0gYXJndW1l
bnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNb
MF0gOiB7fTtcblx0ICAgIHZhciBhY3Rpb24gPSBhcmd1bWVudHNbMV07XG5cdFxuXHQgICAgaWYg
KHNoYXBlQXNzZXJ0aW9uRXJyb3IpIHtcblx0ICAgICAgdGhyb3cgc2hhcGVBc3NlcnRpb25FcnJv
cjtcblx0ICAgIH1cblx0XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgdmFyIHdhcm5pbmdN
ZXNzYWdlID0gZ2V0VW5leHBlY3RlZFN0YXRlU2hhcGVXYXJuaW5nTWVzc2FnZShzdGF0ZSwgZmlu
YWxSZWR1Y2VycywgYWN0aW9uLCB1bmV4cGVjdGVkS2V5Q2FjaGUpO1xuXHQgICAgICBpZiAod2Fy
bmluZ01lc3NhZ2UpIHtcblx0ICAgICAgICAoMCwgX3dhcm5pbmcyWydkZWZhdWx0J10pKHdhcm5p
bmdNZXNzYWdlKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIHZhciBoYXNDaGFuZ2Vk
ID0gZmFsc2U7XG5cdCAgICB2YXIgbmV4dFN0YXRlID0ge307XG5cdCAgICBmb3IgKHZhciBfaSA9
IDA7IF9pIDwgZmluYWxSZWR1Y2VyS2V5cy5sZW5ndGg7IF9pKyspIHtcblx0ICAgICAgdmFyIF9r
ZXkgPSBmaW5hbFJlZHVjZXJLZXlzW19pXTtcblx0ICAgICAgdmFyIHJlZHVjZXIgPSBmaW5hbFJl
ZHVjZXJzW19rZXldO1xuXHQgICAgICB2YXIgcHJldmlvdXNTdGF0ZUZvcktleSA9IHN0YXRlW19r
ZXldO1xuXHQgICAgICB2YXIgbmV4dFN0YXRlRm9yS2V5ID0gcmVkdWNlcihwcmV2aW91c1N0YXRl
Rm9yS2V5LCBhY3Rpb24pO1xuXHQgICAgICBpZiAodHlwZW9mIG5leHRTdGF0ZUZvcktleSA9PT0g
J3VuZGVmaW5lZCcpIHtcblx0ICAgICAgICB2YXIgZXJyb3JNZXNzYWdlID0gZ2V0VW5kZWZpbmVk
U3RhdGVFcnJvck1lc3NhZ2UoX2tleSwgYWN0aW9uKTtcblx0ICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoZXJyb3JNZXNzYWdlKTtcblx0ICAgICAgfVxuXHQgICAgICBuZXh0U3RhdGVbX2tleV0gPSBu
ZXh0U3RhdGVGb3JLZXk7XG5cdCAgICAgIGhhc0NoYW5nZWQgPSBoYXNDaGFuZ2VkIHx8IG5leHRT
dGF0ZUZvcktleSAhPT0gcHJldmlvdXNTdGF0ZUZvcktleTtcblx0ICAgIH1cblx0ICAgIHJldHVy
biBoYXNDaGFuZ2VkID8gbmV4dFN0YXRlIDogc3RhdGU7XG5cdCAgfTtcblx0fVxuXG4vKioqLyB9
LFxuLyogMjI4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19y
ZXF1aXJlX18pIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18oMjI5
KTtcblxuXG4vKioqLyB9LFxuLyogMjI5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04g
Ki8oZnVuY3Rpb24oZ2xvYmFsLCBtb2R1bGUpIHsndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3Qu
ZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcblx0ICB2YWx1ZTogdHJ1
ZVxuXHR9KTtcblx0XG5cdHZhciBfcG9ueWZpbGwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIzMCk7
XG5cdFxuXHR2YXIgX3BvbnlmaWxsMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3BvbnlmaWxs
KTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBv
YmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblx0XG5c
dHZhciByb290OyAvKiBnbG9iYWwgd2luZG93ICovXG5cdFxuXHRcblx0aWYgKHR5cGVvZiBzZWxm
ICE9PSAndW5kZWZpbmVkJykge1xuXHQgIHJvb3QgPSBzZWxmO1xuXHR9IGVsc2UgaWYgKHR5cGVv
ZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG5cdCAgcm9vdCA9IHdpbmRvdztcblx0fSBlbHNl
IGlmICh0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJykge1xuXHQgIHJvb3QgPSBnbG9iYWw7
XG5cdH0gZWxzZSBpZiAodHJ1ZSkge1xuXHQgIHJvb3QgPSBtb2R1bGU7XG5cdH0gZWxzZSB7XG5c
dCAgcm9vdCA9IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH1cblx0XG5cdHZhciByZXN1
bHQgPSAoMCwgX3BvbnlmaWxsMlsnZGVmYXVsdCddKShyb290KTtcblx0ZXhwb3J0c1snZGVmYXVs
dCddID0gcmVzdWx0O1xuXHQvKiBXRUJQQUNLIFZBUiBJTkpFQ1RJT04gKi99LmNhbGwoZXhwb3J0
cywgKGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSgpKSwgX193ZWJwYWNrX3JlcXVpcmVfXygy
MTEpKG1vZHVsZSkpKVxuXG4vKioqLyB9LFxuLyogMjMwICovXG4vKioqLyBmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMpIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJv
cGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcblx0XHR2YWx1ZTogdHJ1ZVxuXHR9KTtc
blx0ZXhwb3J0c1snZGVmYXVsdCddID0gc3ltYm9sT2JzZXJ2YWJsZVBvbnlmaWxsO1xuXHRmdW5j
dGlvbiBzeW1ib2xPYnNlcnZhYmxlUG9ueWZpbGwocm9vdCkge1xuXHRcdHZhciByZXN1bHQ7XG5c
dFx0dmFyIF9TeW1ib2wgPSByb290LlN5bWJvbDtcblx0XG5cdFx0aWYgKHR5cGVvZiBfU3ltYm9s
ID09PSAnZnVuY3Rpb24nKSB7XG5cdFx0XHRpZiAoX1N5bWJvbC5vYnNlcnZhYmxlKSB7XG5cdFx0
XHRcdHJlc3VsdCA9IF9TeW1ib2wub2JzZXJ2YWJsZTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRc
dHJlc3VsdCA9IF9TeW1ib2woJ29ic2VydmFibGUnKTtcblx0XHRcdFx0X1N5bWJvbC5vYnNlcnZh
YmxlID0gcmVzdWx0O1xuXHRcdFx0fVxuXHRcdH0gZWxzZSB7XG5cdFx0XHRyZXN1bHQgPSAnQEBv
YnNlcnZhYmxlJztcblx0XHR9XG5cdFxuXHRcdHJldHVybiByZXN1bHQ7XG5cdH07XG5cbi8qKiov
IH0sXG4vKiAyMzEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNr
X3JlcXVpcmVfXywgX193ZWJwYWNrX21vZHVsZV90ZW1wbGF0ZV9hcmd1bWVudF8wX18pIHtcblxu
XHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICog
QWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogXG5cdCAqL1xu
XHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNr
X3JlcXVpcmVfXyhfX3dlYnBhY2tfbW9kdWxlX3RlbXBsYXRlX2FyZ3VtZW50XzBfXyk7XG5cdFxu
XHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0XG5cdC8qKlxuXHQg
KiBTdGF0aWMgcG9vbGVycy4gU2V2ZXJhbCBjdXN0b20gdmVyc2lvbnMgZm9yIGVhY2ggcG90ZW50
aWFsIG51bWJlciBvZlxuXHQgKiBhcmd1bWVudHMuIEEgY29tcGxldGVseSBnZW5lcmljIHBvb2xl
ciBpcyBlYXN5IHRvIGltcGxlbWVudCwgYnV0IHdvdWxkXG5cdCAqIHJlcXVpcmUgYWNjZXNzaW5n
IHRoZSBgYXJndW1lbnRzYCBvYmplY3QuIEluIGVhY2ggb2YgdGhlc2UsIGB0aGlzYCByZWZlcnMg
dG9cblx0ICogdGhlIENsYXNzIGl0c2VsZiwgbm90IGFuIGluc3RhbmNlLiBJZiBhbnkgb3RoZXJz
IGFyZSBuZWVkZWQsIHNpbXBseSBhZGQgdGhlbVxuXHQgKiBoZXJlLCBvciBpbiB0aGVpciBvd24g
ZmlsZXMuXG5cdCAqL1xuXHR2YXIgb25lQXJndW1lbnRQb29sZXIgPSBmdW5jdGlvbiAoY29weUZp
ZWxkc0Zyb20pIHtcblx0ICB2YXIgS2xhc3MgPSB0aGlzO1xuXHQgIGlmIChLbGFzcy5pbnN0YW5j
ZVBvb2wubGVuZ3RoKSB7XG5cdCAgICB2YXIgaW5zdGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wu
cG9wKCk7XG5cdCAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBjb3B5RmllbGRzRnJvbSk7XG5cdCAg
ICByZXR1cm4gaW5zdGFuY2U7XG5cdCAgfSBlbHNlIHtcblx0ICAgIHJldHVybiBuZXcgS2xhc3Mo
Y29weUZpZWxkc0Zyb20pO1xuXHQgIH1cblx0fTtcblx0XG5cdHZhciB0d29Bcmd1bWVudFBvb2xl
ciA9IGZ1bmN0aW9uIChhMSwgYTIpIHtcblx0ICB2YXIgS2xhc3MgPSB0aGlzO1xuXHQgIGlmIChL
bGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7XG5cdCAgICB2YXIgaW5zdGFuY2UgPSBLbGFzcy5p
bnN0YW5jZVBvb2wucG9wKCk7XG5cdCAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBhMSwgYTIpO1xu
XHQgICAgcmV0dXJuIGluc3RhbmNlO1xuXHQgIH0gZWxzZSB7XG5cdCAgICByZXR1cm4gbmV3IEts
YXNzKGExLCBhMik7XG5cdCAgfVxuXHR9O1xuXHRcblx0dmFyIHRocmVlQXJndW1lbnRQb29sZXIg
PSBmdW5jdGlvbiAoYTEsIGEyLCBhMykge1xuXHQgIHZhciBLbGFzcyA9IHRoaXM7XG5cdCAgaWYg
KEtsYXNzLmluc3RhbmNlUG9vbC5sZW5ndGgpIHtcblx0ICAgIHZhciBpbnN0YW5jZSA9IEtsYXNz
Lmluc3RhbmNlUG9vbC5wb3AoKTtcblx0ICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBhMiwg
YTMpO1xuXHQgICAgcmV0dXJuIGluc3RhbmNlO1xuXHQgIH0gZWxzZSB7XG5cdCAgICByZXR1cm4g
bmV3IEtsYXNzKGExLCBhMiwgYTMpO1xuXHQgIH1cblx0fTtcblx0XG5cdHZhciBmb3VyQXJndW1l
bnRQb29sZXIgPSBmdW5jdGlvbiAoYTEsIGEyLCBhMywgYTQpIHtcblx0ICB2YXIgS2xhc3MgPSB0
aGlzO1xuXHQgIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7XG5cdCAgICB2YXIgaW5z
dGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wucG9wKCk7XG5cdCAgICBLbGFzcy5jYWxsKGluc3Rh
bmNlLCBhMSwgYTIsIGEzLCBhNCk7XG5cdCAgICByZXR1cm4gaW5zdGFuY2U7XG5cdCAgfSBlbHNl
IHtcblx0ICAgIHJldHVybiBuZXcgS2xhc3MoYTEsIGEyLCBhMywgYTQpO1xuXHQgIH1cblx0fTtc
blx0XG5cdHZhciBzdGFuZGFyZFJlbGVhc2VyID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7XG5cdCAg
dmFyIEtsYXNzID0gdGhpcztcblx0ICAhKGluc3RhbmNlIGluc3RhbmNlb2YgS2xhc3MpID8gIGZh
bHNlID8gaW52YXJpYW50KGZhbHNlLCAnVHJ5aW5nIHRvIHJlbGVhc2UgYW4gaW5zdGFuY2UgaW50
byBhIHBvb2wgb2YgYSBkaWZmZXJlbnQgdHlwZS4nKSA6IF9wcm9kSW52YXJpYW50KCcyNScpIDog
dm9pZCAwO1xuXHQgIGluc3RhbmNlLmRlc3RydWN0b3IoKTtcblx0ICBpZiAoS2xhc3MuaW5zdGFu
Y2VQb29sLmxlbmd0aCA8IEtsYXNzLnBvb2xTaXplKSB7XG5cdCAgICBLbGFzcy5pbnN0YW5jZVBv
b2wucHVzaChpbnN0YW5jZSk7XG5cdCAgfVxuXHR9O1xuXHRcblx0dmFyIERFRkFVTFRfUE9PTF9T
SVpFID0gMTA7XG5cdHZhciBERUZBVUxUX1BPT0xFUiA9IG9uZUFyZ3VtZW50UG9vbGVyO1xuXHRc
blx0LyoqXG5cdCAqIEF1Z21lbnRzIGBDb3B5Q29uc3RydWN0b3JgIHRvIGJlIGEgcG9vbGFibGUg
Y2xhc3MsIGF1Z21lbnRpbmcgb25seSB0aGUgY2xhc3Ncblx0ICogaXRzZWxmIChzdGF0aWNhbGx5
KSBub3QgYWRkaW5nIGFueSBwcm90b3R5cGljYWwgZmllbGRzLiBBbnkgQ29weUNvbnN0cnVjdG9y
XG5cdCAqIHlvdSBnaXZlIHRoaXMgbWF5IGhhdmUgYSBgcG9vbFNpemVgIHByb3BlcnR5LCBhbmQg
d2lsbCBsb29rIGZvciBhXG5cdCAqIHByb3RvdHlwaWNhbCBgZGVzdHJ1Y3RvcmAgb24gaW5zdGFu
Y2VzLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufSBDb3B5Q29uc3RydWN0b3IgQ29uc3Ry
dWN0b3IgdGhhdCBjYW4gYmUgdXNlZCB0byByZXNldC5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0g
cG9vbGVyIEN1c3RvbWl6YWJsZSBwb29sZXIuXG5cdCAqL1xuXHR2YXIgYWRkUG9vbGluZ1RvID0g
ZnVuY3Rpb24gKENvcHlDb25zdHJ1Y3RvciwgcG9vbGVyKSB7XG5cdCAgLy8gQ2FzdGluZyBhcyBh
bnkgc28gdGhhdCBmbG93IGlnbm9yZXMgdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBhbmQgdHJ1
c3RzXG5cdCAgLy8gaXQgdG8gbWF0Y2ggdGhlIHR5cGUgd2UgZGVjbGFyZWRcblx0ICB2YXIgTmV3
S2xhc3MgPSBDb3B5Q29uc3RydWN0b3I7XG5cdCAgTmV3S2xhc3MuaW5zdGFuY2VQb29sID0gW107
XG5cdCAgTmV3S2xhc3MuZ2V0UG9vbGVkID0gcG9vbGVyIHx8IERFRkFVTFRfUE9PTEVSO1xuXHQg
IGlmICghTmV3S2xhc3MucG9vbFNpemUpIHtcblx0ICAgIE5ld0tsYXNzLnBvb2xTaXplID0gREVG
QVVMVF9QT09MX1NJWkU7XG5cdCAgfVxuXHQgIE5ld0tsYXNzLnJlbGVhc2UgPSBzdGFuZGFyZFJl
bGVhc2VyO1xuXHQgIHJldHVybiBOZXdLbGFzcztcblx0fTtcblx0XG5cdHZhciBQb29sZWRDbGFz
cyA9IHtcblx0ICBhZGRQb29saW5nVG86IGFkZFBvb2xpbmdUbyxcblx0ICBvbmVBcmd1bWVudFBv
b2xlcjogb25lQXJndW1lbnRQb29sZXIsXG5cdCAgdHdvQXJndW1lbnRQb29sZXI6IHR3b0FyZ3Vt
ZW50UG9vbGVyLFxuXHQgIHRocmVlQXJndW1lbnRQb29sZXI6IHRocmVlQXJndW1lbnRQb29sZXIs
XG5cdCAgZm91ckFyZ3VtZW50UG9vbGVyOiBmb3VyQXJndW1lbnRQb29sZXJcblx0fTtcblx0XG5c
dG1vZHVsZS5leHBvcnRzID0gUG9vbGVkQ2xhc3M7XG5cbi8qKiovIH1cbi8qKioqKiovIF0pKSk7
XG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogc3RhdGljL2pzL21haW4uNDNhMDk0OGMu
anNcbiAqKi8iLCIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxl
cyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJw
YWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBp
biBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSlcbiBcdFx0XHRyZXR1
cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcblxuIFx0XHQvLyBDcmVhdGUg
YSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxl
ID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0ZXhwb3J0czoge30sXG4g
XHRcdFx0aWQ6IG1vZHVsZUlkLFxuIFx0XHRcdGxvYWRlZDogZmFsc2VcbiBcdFx0fTtcblxuIFx0
XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0u
Y2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3Jl
cXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1
bGUubG9hZGVkID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1v
ZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3Nl
IHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19y
ZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4g
XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBfX3dl
YnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCIuL1wiO1xu
XG4gXHQvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHNcbiBcdHJldHVybiBf
X3dlYnBhY2tfcmVxdWlyZV9fKDApO1xuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiog
d2VicGFjay9ib290c3RyYXAgNmEzYTY4MDdlMTJkMTU3ZTY5MGNcbiAqKi8iLCIvKipcbiAqIENv
cHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBVc2Ug
aW52YXJpYW50KCkgdG8gYXNzZXJ0IHN0YXRlIHdoaWNoIHlvdXIgcHJvZ3JhbSBhc3N1bWVzIHRv
IGJlIHRydWUuXG4gKlxuICogUHJvdmlkZSBzcHJpbnRmLXN0eWxlIGZvcm1hdCAob25seSAlcyBp
cyBzdXBwb3J0ZWQpIGFuZCBhcmd1bWVudHNcbiAqIHRvIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJv
dXQgd2hhdCBicm9rZSBhbmQgd2hhdCB5b3Ugd2VyZVxuICogZXhwZWN0aW5nLlxuICpcbiAqIFRo
ZSBpbnZhcmlhbnQgbWVzc2FnZSB3aWxsIGJlIHN0cmlwcGVkIGluIHByb2R1Y3Rpb24sIGJ1dCB0
aGUgaW52YXJpYW50XG4gKiB3aWxsIHJlbWFpbiB0byBlbnN1cmUgbG9naWMgZG9lcyBub3QgZGlm
ZmVyIGluIHByb2R1Y3Rpb24uXG4gKi9cblxudmFyIHZhbGlkYXRlRm9ybWF0ID0gZnVuY3Rpb24g
dmFsaWRhdGVGb3JtYXQoZm9ybWF0KSB7fTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicpIHtcbiAgdmFsaWRhdGVGb3JtYXQgPSBmdW5jdGlvbiB2YWxpZGF0ZUZv
cm1hdChmb3JtYXQpIHtcbiAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRo
cm93IG5ldyBFcnJvcignaW52YXJpYW50IHJlcXVpcmVzIGFuIGVycm9yIG1lc3NhZ2UgYXJndW1l
bnQnKTtcbiAgICB9XG4gIH07XG59XG5cbmZ1bmN0aW9uIGludmFyaWFudChjb25kaXRpb24sIGZv
cm1hdCwgYSwgYiwgYywgZCwgZSwgZikge1xuICB2YWxpZGF0ZUZvcm1hdChmb3JtYXQpO1xuXG4g
IGlmICghY29uZGl0aW9uKSB7XG4gICAgdmFyIGVycm9yO1xuICAgIGlmIChmb3JtYXQgPT09IHVu
ZGVmaW5lZCkge1xuICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoJ01pbmlmaWVkIGV4Y2VwdGlvbiBv
Y2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50ICcgKyAnZm9yIHRo
ZSBmdWxsIGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4nKTtc
biAgICB9IGVsc2Uge1xuICAgICAgdmFyIGFyZ3MgPSBbYSwgYiwgYywgZCwgZSwgZl07XG4gICAg
ICB2YXIgYXJnSW5kZXggPSAwO1xuICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoZm9ybWF0LnJlcGxh
Y2UoLyVzL2csIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107
XG4gICAgICB9KSk7XG4gICAgICBlcnJvci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xu
ICAgIH1cblxuICAgIGVycm9yLmZyYW1lc1RvUG9wID0gMTsgLy8gd2UgZG9uJ3QgY2FyZSBhYm91
dCBpbnZhcmlhbnQncyBvd24gZnJhbWVcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxufVxuXG5tb2R1
bGUuZXhwb3J0cyA9IGludmFyaWFudDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQ
QUNLIEZPT1RFUlxuICoqIC4vfi9mYmpzL2xpYi9pbnZhcmlhbnQuanNcbiAqKiBtb2R1bGUgaWQg
PSAxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDE0
LTIwMTUsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAq
XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoJy4v
ZW1wdHlGdW5jdGlvbicpO1xuXG4vKipcbiAqIFNpbWlsYXIgdG8gaW52YXJpYW50IGJ1dCBvbmx5
IGxvZ3MgYSB3YXJuaW5nIGlmIHRoZSBjb25kaXRpb24gaXMgbm90IG1ldC5cbiAqIFRoaXMgY2Fu
IGJlIHVzZWQgdG8gbG9nIGlzc3VlcyBpbiBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMgaW4gY3Jp
dGljYWxcbiAqIHBhdGhzLiBSZW1vdmluZyB0aGUgbG9nZ2luZyBjb2RlIGZvciBwcm9kdWN0aW9u
IGVudmlyb25tZW50cyB3aWxsIGtlZXAgdGhlXG4gKiBzYW1lIGxvZ2ljIGFuZCBmb2xsb3cgdGhl
IHNhbWUgY29kZSBwYXRocy5cbiAqL1xuXG52YXIgd2FybmluZyA9IGVtcHR5RnVuY3Rpb247XG5c
bmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBwcmlu
dFdhcm5pbmcgPSBmdW5jdGlvbiBwcmludFdhcm5pbmcoZm9ybWF0KSB7XG4gICAgZm9yICh2YXIg
X2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAx
IDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXkg
LSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICB2YXIgYXJnSW5kZXggPSAwO1xu
ICAgIHZhciBtZXNzYWdlID0gJ1dhcm5pbmc6ICcgKyBmb3JtYXQucmVwbGFjZSgvJXMvZywgZnVu
Y3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107XG4gICAgfSk7XG4gICAg
aWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc29sZS5lcnJv
cihtZXNzYWdlKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIC8vIC0tLSBXZWxjb21lIHRvIGRl
YnVnZ2luZyBSZWFjdCAtLS1cbiAgICAgIC8vIFRoaXMgZXJyb3Igd2FzIHRocm93biBhcyBhIGNv
bnZlbmllbmNlIHNvIHRoYXQgeW91IGNhbiB1c2UgdGhpcyBzdGFja1xuICAgICAgLy8gdG8gZmlu
ZCB0aGUgY2FsbHNpdGUgdGhhdCBjYXVzZWQgdGhpcyB3YXJuaW5nIHRvIGZpcmUuXG4gICAgICB0
aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfSBjYXRjaCAoeCkge31cbiAgfTtcblxuICB3
YXJuaW5nID0gZnVuY3Rpb24gd2FybmluZyhjb25kaXRpb24sIGZvcm1hdCkge1xuICAgIGlmIChm
b3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdgd2FybmluZyhj
b25kaXRpb24sIGZvcm1hdCwgLi4uYXJncylgIHJlcXVpcmVzIGEgd2FybmluZyAnICsgJ21lc3Nh
Z2UgYXJndW1lbnQnKTtcbiAgICB9XG5cbiAgICBpZiAoZm9ybWF0LmluZGV4T2YoJ0ZhaWxlZCBD
b21wb3NpdGUgcHJvcFR5cGU6ICcpID09PSAwKSB7XG4gICAgICByZXR1cm47IC8vIElnbm9yZSBD
b21wb3NpdGVDb21wb25lbnQgcHJvcHR5cGUgY2hlY2suXG4gICAgfVxuXG4gICAgaWYgKCFjb25k
aXRpb24pIHtcbiAgICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9
IEFycmF5KF9sZW4yID4gMiA/IF9sZW4yIC0gMiA6IDApLCBfa2V5MiA9IDI7IF9rZXkyIDwgX2xl
bjI7IF9rZXkyKyspIHtcbiAgICAgICAgYXJnc1tfa2V5MiAtIDJdID0gYXJndW1lbnRzW19rZXky
XTtcbiAgICAgIH1cblxuICAgICAgcHJpbnRXYXJuaW5nLmFwcGx5KHVuZGVmaW5lZCwgW2Zvcm1h
dF0uY29uY2F0KGFyZ3MpKTtcbiAgICB9XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gd2Fy
bmluZztcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4v
fi9mYmpzL2xpYi93YXJuaW5nLmpzXG4gKiogbW9kdWxlIGlkID0gMlxuICoqIG1vZHVsZSBjaHVu
a3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4g
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG4n
dXNlIHN0cmljdCc7XG5cbi8qKlxuICogV0FSTklORzogRE8gTk9UIG1hbnVhbGx5IHJlcXVpcmUg
dGhpcyBtb2R1bGUuXG4gKiBUaGlzIGlzIGEgcmVwbGFjZW1lbnQgZm9yIGBpbnZhcmlhbnQoLi4u
KWAgdXNlZCBieSB0aGUgZXJyb3IgY29kZSBzeXN0ZW1cbiAqIGFuZCB3aWxsIF9vbmx5XyBiZSBy
ZXF1aXJlZCBieSB0aGUgY29ycmVzcG9uZGluZyBiYWJlbCBwYXNzLlxuICogSXQgYWx3YXlzIHRo
cm93cy5cbiAqL1xuXG5mdW5jdGlvbiByZWFjdFByb2RJbnZhcmlhbnQoY29kZSkge1xuICB2YXIg
YXJnQ291bnQgPSBhcmd1bWVudHMubGVuZ3RoIC0gMTtcblxuICB2YXIgbWVzc2FnZSA9ICdNaW5p
ZmllZCBSZWFjdCBlcnJvciAjJyArIGNvZGUgKyAnOyB2aXNpdCAnICsgJ2h0dHA6Ly9mYWNlYm9v
ay5naXRodWIuaW8vcmVhY3QvZG9jcy9lcnJvci1kZWNvZGVyLmh0bWw/aW52YXJpYW50PScgKyBj
b2RlO1xuXG4gIGZvciAodmFyIGFyZ0lkeCA9IDA7IGFyZ0lkeCA8IGFyZ0NvdW50OyBhcmdJZHgr
Kykge1xuICAgIG1lc3NhZ2UgKz0gJyZhcmdzW109JyArIGVuY29kZVVSSUNvbXBvbmVudChhcmd1
bWVudHNbYXJnSWR4ICsgMV0pO1xuICB9XG5cbiAgbWVzc2FnZSArPSAnIGZvciB0aGUgZnVsbCBt
ZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCcgKyAnIGZvciBm
dWxsIGVycm9ycyBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLic7XG5cbiAgdmFyIGVy
cm9yID0gbmV3IEVycm9yKG1lc3NhZ2UpO1xuICBlcnJvci5uYW1lID0gJ0ludmFyaWFudCBWaW9s
YXRpb24nO1xuICBlcnJvci5mcmFtZXNUb1BvcCA9IDE7IC8vIHdlIGRvbid0IGNhcmUgYWJvdXQg
cmVhY3RQcm9kSW52YXJpYW50J3Mgb3duIGZyYW1lXG5cbiAgdGhyb3cgZXJyb3I7XG59XG5cbm1v
ZHVsZS5leHBvcnRzID0gcmVhY3RQcm9kSW52YXJpYW50O1xuXG5cbi8qKioqKioqKioqKioqKioq
KlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvcmVhY3RQcm9kSW52
YXJpYW50LmpzXG4gKiogbW9kdWxlIGlkID0gM1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiov
IiwiLypcbm9iamVjdC1hc3NpZ25cbihjKSBTaW5kcmUgU29yaHVzXG5AbGljZW5zZSBNSVRcbiov
XG5cbid1c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG52
YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztc
bnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52
YXIgcHJvcElzRW51bWVyYWJsZSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFi
bGU7XG5cbmZ1bmN0aW9uIHRvT2JqZWN0KHZhbCkge1xuXHRpZiAodmFsID09PSBudWxsIHx8IHZh
bCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignT2JqZWN0LmFzc2ln
biBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBvciB1bmRlZmluZWQnKTtcblx0fVxuXG5cdHJl
dHVybiBPYmplY3QodmFsKTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkVXNlTmF0aXZlKCkge1xuXHR0
cnkge1xuXHRcdGlmICghT2JqZWN0LmFzc2lnbikge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRc
dH1cblxuXHRcdC8vIERldGVjdCBidWdneSBwcm9wZXJ0eSBlbnVtZXJhdGlvbiBvcmRlciBpbiBv
bGRlciBWOCB2ZXJzaW9ucy5cblxuXHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92
OC9pc3N1ZXMvZGV0YWlsP2lkPTQxMThcblx0XHR2YXIgdGVzdDEgPSBuZXcgU3RyaW5nKCdhYmMn
KTsgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tbmV3LXdyYXBwZXJzXG5cdFx0dGVzdDFbNV0g
PSAnZGUnO1xuXHRcdGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MSlbMF0gPT09
ICc1Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIGh0dHBzOi8vYnVn
cy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMwNTZcblx0XHR2YXIgdGVzdDIg
PSB7fTtcblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHtcblx0XHRcdHRlc3QyWydf
JyArIFN0cmluZy5mcm9tQ2hhckNvZGUoaSldID0gaTtcblx0XHR9XG5cdFx0dmFyIG9yZGVyMiA9
IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QyKS5tYXAoZnVuY3Rpb24gKG4pIHtcblx0
XHRcdHJldHVybiB0ZXN0MltuXTtcblx0XHR9KTtcblx0XHRpZiAob3JkZXIyLmpvaW4oJycpICE9
PSAnMDEyMzQ1Njc4OScpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBo
dHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2XG5cdFx0
dmFyIHRlc3QzID0ge307XG5cdFx0J2FiY2RlZmdoaWprbG1ub3BxcnN0Jy5zcGxpdCgnJykuZm9y
RWFjaChmdW5jdGlvbiAobGV0dGVyKSB7XG5cdFx0XHR0ZXN0M1tsZXR0ZXJdID0gbGV0dGVyO1xu
XHRcdH0pO1xuXHRcdGlmIChPYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LCB0ZXN0MykpLmpv
aW4oJycpICE9PVxuXHRcdFx0XHQnYWJjZGVmZ2hpamtsbW5vcHFyc3QnKSB7XG5cdFx0XHRyZXR1
cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHRydWU7XG5cdH0gY2F0Y2ggKGVycikge1xu
XHRcdC8vIFdlIGRvbid0IGV4cGVjdCBhbnkgb2YgdGhlIGFib3ZlIHRvIHRocm93LCBidXQgYmV0
dGVyIHRvIGJlIHNhZmUuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59XG5cbm1vZHVsZS5leHBv
cnRzID0gc2hvdWxkVXNlTmF0aXZlKCkgPyBPYmplY3QuYXNzaWduIDogZnVuY3Rpb24gKHRhcmdl
dCwgc291cmNlKSB7XG5cdHZhciBmcm9tO1xuXHR2YXIgdG8gPSB0b09iamVjdCh0YXJnZXQpO1xu
XHR2YXIgc3ltYm9scztcblxuXHRmb3IgKHZhciBzID0gMTsgcyA8IGFyZ3VtZW50cy5sZW5ndGg7
IHMrKykge1xuXHRcdGZyb20gPSBPYmplY3QoYXJndW1lbnRzW3NdKTtcblxuXHRcdGZvciAodmFy
IGtleSBpbiBmcm9tKSB7XG5cdFx0XHRpZiAoaGFzT3duUHJvcGVydHkuY2FsbChmcm9tLCBrZXkp
KSB7XG5cdFx0XHRcdHRvW2tleV0gPSBmcm9tW2tleV07XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0
aWYgKGdldE93blByb3BlcnR5U3ltYm9scykge1xuXHRcdFx0c3ltYm9scyA9IGdldE93blByb3Bl
cnR5U3ltYm9scyhmcm9tKTtcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgc3ltYm9scy5sZW5n
dGg7IGkrKykge1xuXHRcdFx0XHRpZiAocHJvcElzRW51bWVyYWJsZS5jYWxsKGZyb20sIHN5bWJv
bHNbaV0pKSB7XG5cdFx0XHRcdFx0dG9bc3ltYm9sc1tpXV0gPSBmcm9tW3N5bWJvbHNbaV1dO1xu
XHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHRvO1xufTtcblxuXG5c
bi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L29iamVjdC1h
c3NpZ24vaW5kZXguanNcbiAqKiBtb2R1bGUgaWQgPSA0XG4gKiogbW9kdWxlIGNodW5rcyA9IDBc
biAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4g
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xu
XG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xu
XG52YXIgRE9NUHJvcGVydHkgPSByZXF1aXJlKCcuL0RPTVByb3BlcnR5Jyk7XG52YXIgUmVhY3RE
T01Db21wb25lbnRGbGFncyA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRGbGFncycpO1xu
XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbnZhciBB
VFRSX05BTUUgPSBET01Qcm9wZXJ0eS5JRF9BVFRSSUJVVEVfTkFNRTtcbnZhciBGbGFncyA9IFJl
YWN0RE9NQ29tcG9uZW50RmxhZ3M7XG5cbnZhciBpbnRlcm5hbEluc3RhbmNlS2V5ID0gJ19fcmVh
Y3RJbnRlcm5hbEluc3RhbmNlJCcgKyBNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgy
KTtcblxuLyoqXG4gKiBDaGVjayBpZiBhIGdpdmVuIG5vZGUgc2hvdWxkIGJlIGNhY2hlZC5cbiAq
L1xuZnVuY3Rpb24gc2hvdWxkUHJlY2FjaGVOb2RlKG5vZGUsIG5vZGVJRCkge1xuICByZXR1cm4g
bm9kZS5ub2RlVHlwZSA9PT0gMSAmJiBub2RlLmdldEF0dHJpYnV0ZShBVFRSX05BTUUpID09PSBT
dHJpbmcobm9kZUlEKSB8fCBub2RlLm5vZGVUeXBlID09PSA4ICYmIG5vZGUubm9kZVZhbHVlID09
PSAnIHJlYWN0LXRleHQ6ICcgKyBub2RlSUQgKyAnICcgfHwgbm9kZS5ub2RlVHlwZSA9PT0gOCAm
JiBub2RlLm5vZGVWYWx1ZSA9PT0gJyByZWFjdC1lbXB0eTogJyArIG5vZGVJRCArICcgJztcbn1c
blxuLyoqXG4gKiBEcmlsbCBkb3duICh0aHJvdWdoIGNvbXBvc2l0ZXMgYW5kIGVtcHR5IGNvbXBv
bmVudHMpIHVudGlsIHdlIGdldCBhIGhvc3Qgb3JcbiAqIGhvc3QgdGV4dCBjb21wb25lbnQuXG4g
KlxuICogVGhpcyBpcyBwcmV0dHkgcG9seW1vcnBoaWMgYnV0IHVuYXZvaWRhYmxlIHdpdGggdGhl
IGN1cnJlbnQgc3RydWN0dXJlIHdlIGhhdmVcbiAqIGZvciBgX3JlbmRlcmVkQ2hpbGRyZW5gLlxu
ICovXG5mdW5jdGlvbiBnZXRSZW5kZXJlZEhvc3RPclRleHRGcm9tQ29tcG9uZW50KGNvbXBvbmVu
dCkge1xuICB2YXIgcmVuZGVyZWQ7XG4gIHdoaWxlIChyZW5kZXJlZCA9IGNvbXBvbmVudC5fcmVu
ZGVyZWRDb21wb25lbnQpIHtcbiAgICBjb21wb25lbnQgPSByZW5kZXJlZDtcbiAgfVxuICByZXR1
cm4gY29tcG9uZW50O1xufVxuXG4vKipcbiAqIFBvcHVsYXRlIGBfaG9zdE5vZGVgIG9uIHRoZSBy
ZW5kZXJlZCBob3N0L3RleHQgY29tcG9uZW50IHdpdGggdGhlIGdpdmVuXG4gKiBET00gbm9kZS4g
VGhlIHBhc3NlZCBgaW5zdGAgY2FuIGJlIGEgY29tcG9zaXRlLlxuICovXG5mdW5jdGlvbiBwcmVj
YWNoZU5vZGUoaW5zdCwgbm9kZSkge1xuICB2YXIgaG9zdEluc3QgPSBnZXRSZW5kZXJlZEhvc3RP
clRleHRGcm9tQ29tcG9uZW50KGluc3QpO1xuICBob3N0SW5zdC5faG9zdE5vZGUgPSBub2RlO1xu
ICBub2RlW2ludGVybmFsSW5zdGFuY2VLZXldID0gaG9zdEluc3Q7XG59XG5cbmZ1bmN0aW9uIHVu
Y2FjaGVOb2RlKGluc3QpIHtcbiAgdmFyIG5vZGUgPSBpbnN0Ll9ob3N0Tm9kZTtcbiAgaWYgKG5v
ZGUpIHtcbiAgICBkZWxldGUgbm9kZVtpbnRlcm5hbEluc3RhbmNlS2V5XTtcbiAgICBpbnN0Ll9o
b3N0Tm9kZSA9IG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBQb3B1bGF0ZSBgX2hvc3ROb2RlYCBv
biBlYWNoIGNoaWxkIG9mIGBpbnN0YCwgYXNzdW1pbmcgdGhhdCB0aGUgY2hpbGRyZW5cbiAqIG1h
dGNoIHVwIHdpdGggdGhlIERPTSAoZWxlbWVudCkgY2hpbGRyZW4gb2YgYG5vZGVgLlxuICpcbiAq
IFdlIGNhY2hlIGVudGlyZSBsZXZlbHMgYXQgb25jZSB0byBhdm9pZCBhbiBuXjIgcHJvYmxlbSB3
aGVyZSB3ZSBhY2Nlc3MgdGhlXG4gKiBjaGlsZHJlbiBvZiBhIG5vZGUgc2VxdWVudGlhbGx5IGFu
ZCBoYXZlIHRvIHdhbGsgZnJvbSB0aGUgc3RhcnQgdG8gb3VyIHRhcmdldFxuICogbm9kZSBldmVy
eSB0aW1lLlxuICpcbiAqIFNpbmNlIHdlIHVwZGF0ZSBgX3JlbmRlcmVkQ2hpbGRyZW5gIGFuZCB0
aGUgYWN0dWFsIERPTSBhdCAoc2xpZ2h0bHkpXG4gKiBkaWZmZXJlbnQgdGltZXMsIHdlIGNvdWxk
IHJhY2UgaGVyZSBhbmQgc2VlIGEgbmV3ZXIgYF9yZW5kZXJlZENoaWxkcmVuYCB0aGFuXG4gKiB0
aGUgRE9NIG5vZGVzIHdlIHNlZS4gVG8gYXZvaWQgdGhpcywgUmVhY3RNdWx0aUNoaWxkIGNhbGxz
XG4gKiBgcHJlcGFyZVRvTWFuYWdlQ2hpbGRyZW5gIGJlZm9yZSB3ZSBjaGFuZ2UgYF9yZW5kZXJl
ZENoaWxkcmVuYCwgYXQgd2hpY2hcbiAqIHRpbWUgdGhlIGNvbnRhaW5lcidzIGNoaWxkIG5vZGVz
IGFyZSBhbHdheXMgY2FjaGVkICh1bnRpbCBpdCB1bm1vdW50cykuXG4gKi9cbmZ1bmN0aW9uIHBy
ZWNhY2hlQ2hpbGROb2RlcyhpbnN0LCBub2RlKSB7XG4gIGlmIChpbnN0Ll9mbGFncyAmIEZsYWdz
Lmhhc0NhY2hlZENoaWxkTm9kZXMpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdmFyIGNoaWxkcmVu
ID0gaW5zdC5fcmVuZGVyZWRDaGlsZHJlbjtcbiAgdmFyIGNoaWxkTm9kZSA9IG5vZGUuZmlyc3RD
aGlsZDtcbiAgb3V0ZXI6IGZvciAodmFyIG5hbWUgaW4gY2hpbGRyZW4pIHtcbiAgICBpZiAoIWNo
aWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4g
ICAgdmFyIGNoaWxkSW5zdCA9IGNoaWxkcmVuW25hbWVdO1xuICAgIHZhciBjaGlsZElEID0gZ2V0
UmVuZGVyZWRIb3N0T3JUZXh0RnJvbUNvbXBvbmVudChjaGlsZEluc3QpLl9kb21JRDtcbiAgICBp
ZiAoY2hpbGRJRCA9PT0gMCkge1xuICAgICAgLy8gV2UncmUgY3VycmVudGx5IHVubW91bnRpbmcg
dGhpcyBjaGlsZCBpbiBSZWFjdE11bHRpQ2hpbGQ7IHNraXAgaXQuXG4gICAgICBjb250aW51ZTtc
biAgICB9XG4gICAgLy8gV2UgYXNzdW1lIHRoZSBjaGlsZCBub2RlcyBhcmUgaW4gdGhlIHNhbWUg
b3JkZXIgYXMgdGhlIGNoaWxkIGluc3RhbmNlcy5cbiAgICBmb3IgKDsgY2hpbGROb2RlICE9PSBu
dWxsOyBjaGlsZE5vZGUgPSBjaGlsZE5vZGUubmV4dFNpYmxpbmcpIHtcbiAgICAgIGlmIChzaG91
bGRQcmVjYWNoZU5vZGUoY2hpbGROb2RlLCBjaGlsZElEKSkge1xuICAgICAgICBwcmVjYWNoZU5v
ZGUoY2hpbGRJbnN0LCBjaGlsZE5vZGUpO1xuICAgICAgICBjb250aW51ZSBvdXRlcjtcbiAgICAg
IH1cbiAgICB9XG4gICAgLy8gV2UgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBET00gY2hpbGRyZW4g
d2l0aG91dCBmaW5kaW5nIGFuIElEIG1hdGNoLlxuICAgICFmYWxzZSA/IHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdVbmFibGUgdG8gZmlu
ZCBlbGVtZW50IHdpdGggSUQgJXMuJywgY2hpbGRJRCkgOiBfcHJvZEludmFyaWFudCgnMzInLCBj
aGlsZElEKSA6IHZvaWQgMDtcbiAgfVxuICBpbnN0Ll9mbGFncyB8PSBGbGFncy5oYXNDYWNoZWRD
aGlsZE5vZGVzO1xufVxuXG4vKipcbiAqIEdpdmVuIGEgRE9NIG5vZGUsIHJldHVybiB0aGUgY2xv
c2VzdCBSZWFjdERPTUNvbXBvbmVudCBvclxuICogUmVhY3RET01UZXh0Q29tcG9uZW50IGluc3Rh
bmNlIGFuY2VzdG9yLlxuICovXG5mdW5jdGlvbiBnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZShu
b2RlKSB7XG4gIGlmIChub2RlW2ludGVybmFsSW5zdGFuY2VLZXldKSB7XG4gICAgcmV0dXJuIG5v
ZGVbaW50ZXJuYWxJbnN0YW5jZUtleV07XG4gIH1cblxuICAvLyBXYWxrIHVwIHRoZSB0cmVlIHVu
dGlsIHdlIGZpbmQgYW4gYW5jZXN0b3Igd2hvc2UgaW5zdGFuY2Ugd2UgaGF2ZSBjYWNoZWQuXG4g
IHZhciBwYXJlbnRzID0gW107XG4gIHdoaWxlICghbm9kZVtpbnRlcm5hbEluc3RhbmNlS2V5XSkg
e1xuICAgIHBhcmVudHMucHVzaChub2RlKTtcbiAgICBpZiAobm9kZS5wYXJlbnROb2RlKSB7XG4g
ICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBUb3Ag
b2YgdGhlIHRyZWUuIFRoaXMgbm9kZSBtdXN0IG5vdCBiZSBwYXJ0IG9mIGEgUmVhY3QgdHJlZSAo
b3IgaXNcbiAgICAgIC8vIHVubW91bnRlZCwgcG90ZW50aWFsbHkpLlxuICAgICAgcmV0dXJuIG51
bGw7XG4gICAgfVxuICB9XG5cbiAgdmFyIGNsb3Nlc3Q7XG4gIHZhciBpbnN0O1xuICBmb3IgKDsg
bm9kZSAmJiAoaW5zdCA9IG5vZGVbaW50ZXJuYWxJbnN0YW5jZUtleV0pOyBub2RlID0gcGFyZW50
cy5wb3AoKSkge1xuICAgIGNsb3Nlc3QgPSBpbnN0O1xuICAgIGlmIChwYXJlbnRzLmxlbmd0aCkg
e1xuICAgICAgcHJlY2FjaGVDaGlsZE5vZGVzKGluc3QsIG5vZGUpO1xuICAgIH1cbiAgfVxuXG4g
IHJldHVybiBjbG9zZXN0O1xufVxuXG4vKipcbiAqIEdpdmVuIGEgRE9NIG5vZGUsIHJldHVybiB0
aGUgUmVhY3RET01Db21wb25lbnQgb3IgUmVhY3RET01UZXh0Q29tcG9uZW50XG4gKiBpbnN0YW5j
ZSwgb3IgbnVsbCBpZiB0aGUgbm9kZSB3YXMgbm90IHJlbmRlcmVkIGJ5IHRoaXMgUmVhY3QuXG4g
Ki9cbmZ1bmN0aW9uIGdldEluc3RhbmNlRnJvbU5vZGUobm9kZSkge1xuICB2YXIgaW5zdCA9IGdl
dENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKG5vZGUpO1xuICBpZiAoaW5zdCAhPSBudWxsICYmIGlu
c3QuX2hvc3ROb2RlID09PSBub2RlKSB7XG4gICAgcmV0dXJuIGluc3Q7XG4gIH0gZWxzZSB7XG4g
ICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxuLyoqXG4gKiBHaXZlbiBhIFJlYWN0RE9NQ29tcG9u
ZW50IG9yIFJlYWN0RE9NVGV4dENvbXBvbmVudCwgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nXG4g
KiBET00gbm9kZS5cbiAqL1xuZnVuY3Rpb24gZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KSB7XG4g
IC8vIFdpdGhvdXQgdGhpcyBmaXJzdCBpbnZhcmlhbnQsIHBhc3NpbmcgYSBub24tRE9NLWNvbXBv
bmVudCB0cmlnZ2VycyB0aGUgbmV4dFxuICAvLyBpbnZhcmlhbnQgZm9yIGEgbWlzc2luZyBwYXJl
bnQsIHdoaWNoIGlzIHN1cGVyIGNvbmZ1c2luZy5cbiAgIShpbnN0Ll9ob3N0Tm9kZSAhPT0gdW5k
ZWZpbmVkKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlh
bnQoZmFsc2UsICdnZXROb2RlRnJvbUluc3RhbmNlOiBJbnZhbGlkIGFyZ3VtZW50LicpIDogX3By
b2RJbnZhcmlhbnQoJzMzJykgOiB2b2lkIDA7XG5cbiAgaWYgKGluc3QuX2hvc3ROb2RlKSB7XG4g
ICAgcmV0dXJuIGluc3QuX2hvc3ROb2RlO1xuICB9XG5cbiAgLy8gV2FsayB1cCB0aGUgdHJlZSB1
bnRpbCB3ZSBmaW5kIGFuIGFuY2VzdG9yIHdob3NlIERPTSBub2RlIHdlIGhhdmUgY2FjaGVkLlxu
ICB2YXIgcGFyZW50cyA9IFtdO1xuICB3aGlsZSAoIWluc3QuX2hvc3ROb2RlKSB7XG4gICAgcGFy
ZW50cy5wdXNoKGluc3QpO1xuICAgICFpbnN0Ll9ob3N0UGFyZW50ID8gcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0IERPTSB0cmVl
IHJvb3Qgc2hvdWxkIGFsd2F5cyBoYXZlIGEgbm9kZSByZWZlcmVuY2UuJykgOiBfcHJvZEludmFy
aWFudCgnMzQnKSA6IHZvaWQgMDtcbiAgICBpbnN0ID0gaW5zdC5faG9zdFBhcmVudDtcbiAgfVxu
XG4gIC8vIE5vdyBwYXJlbnRzIGNvbnRhaW5zIGVhY2ggYW5jZXN0b3IgdGhhdCBkb2VzICpub3Qq
IGhhdmUgYSBjYWNoZWQgbmF0aXZlXG4gIC8vIG5vZGUsIGFuZCBgaW5zdGAgaXMgdGhlIGRlZXBl
c3QgYW5jZXN0b3IgdGhhdCBkb2VzLlxuICBmb3IgKDsgcGFyZW50cy5sZW5ndGg7IGluc3QgPSBw
YXJlbnRzLnBvcCgpKSB7XG4gICAgcHJlY2FjaGVDaGlsZE5vZGVzKGluc3QsIGluc3QuX2hvc3RO
b2RlKTtcbiAgfVxuXG4gIHJldHVybiBpbnN0Ll9ob3N0Tm9kZTtcbn1cblxudmFyIFJlYWN0RE9N
Q29tcG9uZW50VHJlZSA9IHtcbiAgZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGU6IGdldENsb3Nl
c3RJbnN0YW5jZUZyb21Ob2RlLFxuICBnZXRJbnN0YW5jZUZyb21Ob2RlOiBnZXRJbnN0YW5jZUZy
b21Ob2RlLFxuICBnZXROb2RlRnJvbUluc3RhbmNlOiBnZXROb2RlRnJvbUluc3RhbmNlLFxuICBw
cmVjYWNoZUNoaWxkTm9kZXM6IHByZWNhY2hlQ2hpbGROb2RlcyxcbiAgcHJlY2FjaGVOb2RlOiBw
cmVjYWNoZU5vZGUsXG4gIHVuY2FjaGVOb2RlOiB1bmNhY2hlTm9kZVxufTtcblxubW9kdWxlLmV4
cG9ydHMgPSBSZWFjdERPTUNvbXBvbmVudFRyZWU7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4g
KiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTUNvbXBvbmVu
dFRyZWUuanNcbiAqKiBtb2R1bGUgaWQgPSA1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8i
LCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICog
QWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0Jztcblxu
dmFyIGNhblVzZURPTSA9ICEhKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRv
dy5kb2N1bWVudCAmJiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCk7XG5cbi8qKlxuICog
U2ltcGxlLCBsaWdodHdlaWdodCBtb2R1bGUgYXNzaXN0aW5nIHdpdGggdGhlIGRldGVjdGlvbiBh
bmQgY29udGV4dCBvZlxuICogV29ya2VyLiBIZWxwcyBhdm9pZCBjaXJjdWxhciBkZXBlbmRlbmNp
ZXMgYW5kIGFsbG93cyBjb2RlIHRvIHJlYXNvbiBhYm91dFxuICogd2hldGhlciBvciBub3QgdGhl
eSBhcmUgaW4gYSBXb3JrZXIsIGV2ZW4gaWYgdGhleSBuZXZlciBpbmNsdWRlIHRoZSBtYWluXG4g
KiBgUmVhY3RXb3JrZXJgIGRlcGVuZGVuY3kuXG4gKi9cbnZhciBFeGVjdXRpb25FbnZpcm9ubWVu
dCA9IHtcblxuICBjYW5Vc2VET006IGNhblVzZURPTSxcblxuICBjYW5Vc2VXb3JrZXJzOiB0eXBl
b2YgV29ya2VyICE9PSAndW5kZWZpbmVkJyxcblxuICBjYW5Vc2VFdmVudExpc3RlbmVyczogY2Fu
VXNlRE9NICYmICEhKHdpbmRvdy5hZGRFdmVudExpc3RlbmVyIHx8IHdpbmRvdy5hdHRhY2hFdmVu
dCksXG5cbiAgY2FuVXNlVmlld3BvcnQ6IGNhblVzZURPTSAmJiAhIXdpbmRvdy5zY3JlZW4sXG5c
biAgaXNJbldvcmtlcjogIWNhblVzZURPTSAvLyBGb3Igbm93LCB0aGlzIGlzIHRydWUgLSBtaWdo
dCBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS5cblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBFeGVjdXRp
b25FbnZpcm9ubWVudDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RF
UlxuICoqIC4vfi9mYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudC5qc1xuICoqIG1vZHVsZSBp
ZCA9IDZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xuXG4v
KipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuZnVuY3Rpb24gbWFrZUVt
cHR5RnVuY3Rpb24oYXJnKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGFy
ZztcbiAgfTtcbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGFjY2VwdHMgYW5kIGRpc2NhcmRz
IGlucHV0czsgaXQgaGFzIG5vIHNpZGUgZWZmZWN0cy4gVGhpcyBpc1xuICogcHJpbWFyaWx5IHVz
ZWZ1bCBpZGlvbWF0aWNhbGx5IGZvciBvdmVycmlkYWJsZSBmdW5jdGlvbiBlbmRwb2ludHMgd2hp
Y2hcbiAqIGFsd2F5cyBuZWVkIHRvIGJlIGNhbGxhYmxlLCBzaW5jZSBKUyBsYWNrcyBhIG51bGwt
Y2FsbCBpZGlvbSBhbGEgQ29jb2EuXG4gKi9cbnZhciBlbXB0eUZ1bmN0aW9uID0gZnVuY3Rpb24g
ZW1wdHlGdW5jdGlvbigpIHt9O1xuXG5lbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zID0gbWFrZUVt
cHR5RnVuY3Rpb247XG5lbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zRmFsc2UgPSBtYWtlRW1wdHlG
dW5jdGlvbihmYWxzZSk7XG5lbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZSA9IG1ha2VFbXB0
eUZ1bmN0aW9uKHRydWUpO1xuZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc051bGwgPSBtYWtlRW1w
dHlGdW5jdGlvbihudWxsKTtcbmVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNUaGlzID0gZnVuY3Rp
b24gKCkge1xuICByZXR1cm4gdGhpcztcbn07XG5lbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zQXJn
dW1lbnQgPSBmdW5jdGlvbiAoYXJnKSB7XG4gIHJldHVybiBhcmc7XG59O1xuXG5tb2R1bGUuZXhw
b3J0cyA9IGVtcHR5RnVuY3Rpb247XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFD
SyBGT09URVJcbiAqKiAuL34vZmJqcy9saWIvZW1wdHlGdW5jdGlvbi5qc1xuICoqIG1vZHVsZSBp
ZCA9IDdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIw
MTYtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxu
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLy8gVHJ1c3QgdGhlIGRldmVsb3Bl
ciB0byBvbmx5IHVzZSBSZWFjdEluc3RydW1lbnRhdGlvbiB3aXRoIGEgX19ERVZfXyBjaGVja1xu
XG52YXIgZGVidWdUb29sID0gbnVsbDtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHtcbiAgdmFyIFJlYWN0RGVidWdUb29sID0gcmVxdWlyZSgnLi9SZWFjdERl
YnVnVG9vbCcpO1xuICBkZWJ1Z1Rvb2wgPSBSZWFjdERlYnVnVG9vbDtcbn1cblxubW9kdWxlLmV4
cG9ydHMgPSB7IGRlYnVnVG9vbDogZGVidWdUb29sIH07XG5cblxuLyoqKioqKioqKioqKioqKioq
XG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdEluc3RydW1l
bnRhdGlvbi5qc1xuICoqIG1vZHVsZSBpZCA9IDhcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoq
LyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZh
ciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50JyksXG4gICAg
X2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIENhbGxiYWNrUXVldWUg
PSByZXF1aXJlKCcuL0NhbGxiYWNrUXVldWUnKTtcbnZhciBQb29sZWRDbGFzcyA9IHJlcXVpcmUo
Jy4vUG9vbGVkQ2xhc3MnKTtcbnZhciBSZWFjdEZlYXR1cmVGbGFncyA9IHJlcXVpcmUoJy4vUmVh
Y3RGZWF0dXJlRmxhZ3MnKTtcbnZhciBSZWFjdFJlY29uY2lsZXIgPSByZXF1aXJlKCcuL1JlYWN0
UmVjb25jaWxlcicpO1xudmFyIFRyYW5zYWN0aW9uID0gcmVxdWlyZSgnLi9UcmFuc2FjdGlvbicp
O1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbnZh
ciBkaXJ0eUNvbXBvbmVudHMgPSBbXTtcbnZhciB1cGRhdGVCYXRjaE51bWJlciA9IDA7XG52YXIg
YXNhcENhbGxiYWNrUXVldWUgPSBDYWxsYmFja1F1ZXVlLmdldFBvb2xlZCgpO1xudmFyIGFzYXBF
bnF1ZXVlZCA9IGZhbHNlO1xuXG52YXIgYmF0Y2hpbmdTdHJhdGVneSA9IG51bGw7XG5cbmZ1bmN0
aW9uIGVuc3VyZUluamVjdGVkKCkge1xuICAhKFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRy
YW5zYWN0aW9uICYmIGJhdGNoaW5nU3RyYXRlZ3kpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0VXBkYXRlczogbXVzdCBpbmpl
Y3QgYSByZWNvbmNpbGUgdHJhbnNhY3Rpb24gY2xhc3MgYW5kIGJhdGNoaW5nIHN0cmF0ZWd5Jykg
OiBfcHJvZEludmFyaWFudCgnMTIzJykgOiB2b2lkIDA7XG59XG5cbnZhciBORVNURURfVVBEQVRF
UyA9IHtcbiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZGlydHlDb21wb25l
bnRzTGVuZ3RoID0gZGlydHlDb21wb25lbnRzLmxlbmd0aDtcbiAgfSxcbiAgY2xvc2U6IGZ1bmN0
aW9uICgpIHtcbiAgICBpZiAodGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGggIT09IGRpcnR5Q29t
cG9uZW50cy5sZW5ndGgpIHtcbiAgICAgIC8vIEFkZGl0aW9uYWwgdXBkYXRlcyB3ZXJlIGVucXVl
dWVkIGJ5IGNvbXBvbmVudERpZFVwZGF0ZSBoYW5kbGVycyBvclxuICAgICAgLy8gc2ltaWxhcjsg
YmVmb3JlIG91ciBvd24gVVBEQVRFX1FVRVVFSU5HIHdyYXBwZXIgY2xvc2VzLCB3ZSB3YW50IHRv
IHJ1blxuICAgICAgLy8gdGhlc2UgbmV3IHVwZGF0ZXMgc28gdGhhdCBpZiBBJ3MgY29tcG9uZW50
RGlkVXBkYXRlIGNhbGxzIHNldFN0YXRlIG9uXG4gICAgICAvLyBCLCBCIHdpbGwgdXBkYXRlIGJl
Zm9yZSB0aGUgY2FsbGJhY2sgQSdzIHVwZGF0ZXIgcHJvdmlkZWQgd2hlbiBjYWxsaW5nXG4gICAg
ICAvLyBzZXRTdGF0ZS5cbiAgICAgIGRpcnR5Q29tcG9uZW50cy5zcGxpY2UoMCwgdGhpcy5kaXJ0
eUNvbXBvbmVudHNMZW5ndGgpO1xuICAgICAgZmx1c2hCYXRjaGVkVXBkYXRlcygpO1xuICAgIH0g
ZWxzZSB7XG4gICAgICBkaXJ0eUNvbXBvbmVudHMubGVuZ3RoID0gMDtcbiAgICB9XG4gIH1cbn07
XG5cbnZhciBVUERBVEVfUVVFVUVJTkcgPSB7XG4gIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHtc
biAgICB0aGlzLmNhbGxiYWNrUXVldWUucmVzZXQoKTtcbiAgfSxcbiAgY2xvc2U6IGZ1bmN0aW9u
ICgpIHtcbiAgICB0aGlzLmNhbGxiYWNrUXVldWUubm90aWZ5QWxsKCk7XG4gIH1cbn07XG5cbnZh
ciBUUkFOU0FDVElPTl9XUkFQUEVSUyA9IFtORVNURURfVVBEQVRFUywgVVBEQVRFX1FVRVVFSU5H
XTtcblxuZnVuY3Rpb24gUmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbigpIHtcbiAgdGhpcy5y
ZWluaXRpYWxpemVUcmFuc2FjdGlvbigpO1xuICB0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aCA9
IG51bGw7XG4gIHRoaXMuY2FsbGJhY2tRdWV1ZSA9IENhbGxiYWNrUXVldWUuZ2V0UG9vbGVkKCk7
XG4gIHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24gPSBSZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNp
bGVUcmFuc2FjdGlvbi5nZXRQb29sZWQoXG4gIC8qIHVzZUNyZWF0ZUVsZW1lbnQgKi90cnVlKTtc
bn1cblxuX2Fzc2lnbihSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uLnByb3RvdHlwZSwgVHJh
bnNhY3Rpb24sIHtcbiAgZ2V0VHJhbnNhY3Rpb25XcmFwcGVyczogZnVuY3Rpb24gKCkge1xuICAg
IHJldHVybiBUUkFOU0FDVElPTl9XUkFQUEVSUztcbiAgfSxcblxuICBkZXN0cnVjdG9yOiBmdW5j
dGlvbiAoKSB7XG4gICAgdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGggPSBudWxsO1xuICAgIENh
bGxiYWNrUXVldWUucmVsZWFzZSh0aGlzLmNhbGxiYWNrUXVldWUpO1xuICAgIHRoaXMuY2FsbGJh
Y2tRdWV1ZSA9IG51bGw7XG4gICAgUmVhY3RVcGRhdGVzLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rp
b24ucmVsZWFzZSh0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uKTtcbiAgICB0aGlzLnJlY29uY2ls
ZVRyYW5zYWN0aW9uID0gbnVsbDtcbiAgfSxcblxuICBwZXJmb3JtOiBmdW5jdGlvbiAobWV0aG9k
LCBzY29wZSwgYSkge1xuICAgIC8vIEVzc2VudGlhbGx5IGNhbGxzIGB0aGlzLnJlY29uY2lsZVRy
YW5zYWN0aW9uLnBlcmZvcm0obWV0aG9kLCBzY29wZSwgYSlgXG4gICAgLy8gd2l0aCB0aGlzIHRy
YW5zYWN0aW9uJ3Mgd3JhcHBlcnMgYXJvdW5kIGl0LlxuICAgIHJldHVybiBUcmFuc2FjdGlvbi5w
ZXJmb3JtLmNhbGwodGhpcywgdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbi5wZXJmb3JtLCB0aGlz
LnJlY29uY2lsZVRyYW5zYWN0aW9uLCBtZXRob2QsIHNjb3BlLCBhKTtcbiAgfVxufSk7XG5cblBv
b2xlZENsYXNzLmFkZFBvb2xpbmdUbyhSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uKTtcblxu
ZnVuY3Rpb24gYmF0Y2hlZFVwZGF0ZXMoY2FsbGJhY2ssIGEsIGIsIGMsIGQsIGUpIHtcbiAgZW5z
dXJlSW5qZWN0ZWQoKTtcbiAgcmV0dXJuIGJhdGNoaW5nU3RyYXRlZ3kuYmF0Y2hlZFVwZGF0ZXMo
Y2FsbGJhY2ssIGEsIGIsIGMsIGQsIGUpO1xufVxuXG4vKipcbiAqIEFycmF5IGNvbXBhcmF0b3Ig
Zm9yIFJlYWN0Q29tcG9uZW50cyBieSBtb3VudCBvcmRlcmluZy5cbiAqXG4gKiBAcGFyYW0ge1Jl
YWN0Q29tcG9uZW50fSBjMSBmaXJzdCBjb21wb25lbnQgeW91J3JlIGNvbXBhcmluZ1xuICogQHBh
cmFtIHtSZWFjdENvbXBvbmVudH0gYzIgc2Vjb25kIGNvbXBvbmVudCB5b3UncmUgY29tcGFyaW5n
XG4gKiBAcmV0dXJuIHtudW1iZXJ9IFJldHVybiB2YWx1ZSB1c2FibGUgYnkgQXJyYXkucHJvdG90
eXBlLnNvcnQoKS5cbiAqL1xuZnVuY3Rpb24gbW91bnRPcmRlckNvbXBhcmF0b3IoYzEsIGMyKSB7
XG4gIHJldHVybiBjMS5fbW91bnRPcmRlciAtIGMyLl9tb3VudE9yZGVyO1xufVxuXG5mdW5jdGlv
biBydW5CYXRjaGVkVXBkYXRlcyh0cmFuc2FjdGlvbikge1xuICB2YXIgbGVuID0gdHJhbnNhY3Rp
b24uZGlydHlDb21wb25lbnRzTGVuZ3RoO1xuICAhKGxlbiA9PT0gZGlydHlDb21wb25lbnRzLmxl
bmd0aCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAnRXhwZWN0ZWQgZmx1c2ggdHJhbnNhY3Rpb25cXCdzIHN0b3JlZCBkaXJ0eS1jb21w
b25lbnRzIGxlbmd0aCAoJXMpIHRvIG1hdGNoIGRpcnR5LWNvbXBvbmVudHMgYXJyYXkgbGVuZ3Ro
ICglcykuJywgbGVuLCBkaXJ0eUNvbXBvbmVudHMubGVuZ3RoKSA6IF9wcm9kSW52YXJpYW50KCcx
MjQnLCBsZW4sIGRpcnR5Q29tcG9uZW50cy5sZW5ndGgpIDogdm9pZCAwO1xuXG4gIC8vIFNpbmNl
IHJlY29uY2lsaW5nIGEgY29tcG9uZW50IGhpZ2hlciBpbiB0aGUgb3duZXIgaGllcmFyY2h5IHVz
dWFsbHkgKG5vdFxuICAvLyBhbHdheXMgLS0gc2VlIHNob3VsZENvbXBvbmVudFVwZGF0ZSgpKSB3
aWxsIHJlY29uY2lsZSBjaGlsZHJlbiwgcmVjb25jaWxlXG4gIC8vIHRoZW0gYmVmb3JlIHRoZWly
IGNoaWxkcmVuIGJ5IHNvcnRpbmcgdGhlIGFycmF5LlxuICBkaXJ0eUNvbXBvbmVudHMuc29ydCht
b3VudE9yZGVyQ29tcGFyYXRvcik7XG5cbiAgLy8gQW55IHVwZGF0ZXMgZW5xdWV1ZWQgd2hpbGUg
cmVjb25jaWxpbmcgbXVzdCBiZSBwZXJmb3JtZWQgYWZ0ZXIgdGhpcyBlbnRpcmVcbiAgLy8gYmF0
Y2guIE90aGVyd2lzZSwgaWYgZGlydHlDb21wb25lbnRzIGlzIFtBLCBCXSB3aGVyZSBBIGhhcyBj
aGlsZHJlbiBCIGFuZFxuICAvLyBDLCBCIGNvdWxkIHVwZGF0ZSB0d2ljZSBpbiBhIHNpbmdsZSBi
YXRjaCBpZiBDJ3MgcmVuZGVyIGVucXVldWVzIGFuIHVwZGF0ZVxuICAvLyB0byBCIChzaW5jZSBC
IHdvdWxkIGhhdmUgYWxyZWFkeSB1cGRhdGVkLCB3ZSBzaG91bGQgc2tpcCBpdCwgYW5kIHRoZSBv
bmx5XG4gIC8vIHdheSB3ZSBjYW4ga25vdyB0byBkbyBzbyBpcyBieSBjaGVja2luZyB0aGUgYmF0
Y2ggY291bnRlcikuXG4gIHVwZGF0ZUJhdGNoTnVtYmVyKys7XG5cbiAgZm9yICh2YXIgaSA9IDA7
IGkgPCBsZW47IGkrKykge1xuICAgIC8vIElmIGEgY29tcG9uZW50IGlzIHVubW91bnRlZCBiZWZv
cmUgcGVuZGluZyBjaGFuZ2VzIGFwcGx5LCBpdCB3aWxsIHN0aWxsXG4gICAgLy8gYmUgaGVyZSwg
YnV0IHdlIGFzc3VtZSB0aGF0IGl0IGhhcyBjbGVhcmVkIGl0cyBfcGVuZGluZ0NhbGxiYWNrcyBh
bmRcbiAgICAvLyB0aGF0IHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeSBpcyBhIG5vb3AuXG4gICAg
dmFyIGNvbXBvbmVudCA9IGRpcnR5Q29tcG9uZW50c1tpXTtcblxuICAgIC8vIElmIHBlcmZvcm1V
cGRhdGVJZk5lY2Vzc2FyeSBoYXBwZW5zIHRvIGVucXVldWUgYW55IG5ldyB1cGRhdGVzLCB3ZVxu
ICAgIC8vIHNob3VsZG4ndCBleGVjdXRlIHRoZSBjYWxsYmFja3MgdW50aWwgdGhlIG5leHQgcmVu
ZGVyIGhhcHBlbnMsIHNvXG4gICAgLy8gc3Rhc2ggdGhlIGNhbGxiYWNrcyBmaXJzdFxuICAgIHZh
ciBjYWxsYmFja3MgPSBjb21wb25lbnQuX3BlbmRpbmdDYWxsYmFja3M7XG4gICAgY29tcG9uZW50
Ll9wZW5kaW5nQ2FsbGJhY2tzID0gbnVsbDtcblxuICAgIHZhciBtYXJrZXJOYW1lO1xuICAgIGlm
IChSZWFjdEZlYXR1cmVGbGFncy5sb2dUb3BMZXZlbFJlbmRlcnMpIHtcbiAgICAgIHZhciBuYW1l
ZENvbXBvbmVudCA9IGNvbXBvbmVudDtcbiAgICAgIC8vIER1Y2sgdHlwZSBUb3BMZXZlbFdyYXBw
ZXIuIFRoaXMgaXMgcHJvYmFibHkgYWx3YXlzIHRydWUuXG4gICAgICBpZiAoY29tcG9uZW50Ll9j
dXJyZW50RWxlbWVudC50eXBlLmlzUmVhY3RUb3BMZXZlbFdyYXBwZXIpIHtcbiAgICAgICAgbmFt
ZWRDb21wb25lbnQgPSBjb21wb25lbnQuX3JlbmRlcmVkQ29tcG9uZW50O1xuICAgICAgfVxuICAg
ICAgbWFya2VyTmFtZSA9ICdSZWFjdCB1cGRhdGU6ICcgKyBuYW1lZENvbXBvbmVudC5nZXROYW1l
KCk7XG4gICAgICBjb25zb2xlLnRpbWUobWFya2VyTmFtZSk7XG4gICAgfVxuXG4gICAgUmVhY3RS
ZWNvbmNpbGVyLnBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeShjb21wb25lbnQsIHRyYW5zYWN0aW9u
LnJlY29uY2lsZVRyYW5zYWN0aW9uLCB1cGRhdGVCYXRjaE51bWJlcik7XG5cbiAgICBpZiAobWFy
a2VyTmFtZSkge1xuICAgICAgY29uc29sZS50aW1lRW5kKG1hcmtlck5hbWUpO1xuICAgIH1cblxu
ICAgIGlmIChjYWxsYmFja3MpIHtcbiAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgY2FsbGJhY2tz
Lmxlbmd0aDsgaisrKSB7XG4gICAgICAgIHRyYW5zYWN0aW9uLmNhbGxiYWNrUXVldWUuZW5xdWV1
ZShjYWxsYmFja3Nbal0sIGNvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpKTtcbiAgICAgIH1c
biAgICB9XG4gIH1cbn1cblxudmFyIGZsdXNoQmF0Y2hlZFVwZGF0ZXMgPSBmdW5jdGlvbiAoKSB7
XG4gIC8vIFJlYWN0VXBkYXRlc0ZsdXNoVHJhbnNhY3Rpb24ncyB3cmFwcGVycyB3aWxsIGNsZWFy
IHRoZSBkaXJ0eUNvbXBvbmVudHNcbiAgLy8gYXJyYXkgYW5kIHBlcmZvcm0gYW55IHVwZGF0ZXMg
ZW5xdWV1ZWQgYnkgbW91bnQtcmVhZHkgaGFuZGxlcnMgKGkuZS4sXG4gIC8vIGNvbXBvbmVudERp
ZFVwZGF0ZSkgYnV0IHdlIG5lZWQgdG8gY2hlY2sgaGVyZSB0b28gaW4gb3JkZXIgdG8gY2F0Y2hc
biAgLy8gdXBkYXRlcyBlbnF1ZXVlZCBieSBzZXRTdGF0ZSBjYWxsYmFja3MgYW5kIGFzYXAgY2Fs
bHMuXG4gIHdoaWxlIChkaXJ0eUNvbXBvbmVudHMubGVuZ3RoIHx8IGFzYXBFbnF1ZXVlZCkge1xu
ICAgIGlmIChkaXJ0eUNvbXBvbmVudHMubGVuZ3RoKSB7XG4gICAgICB2YXIgdHJhbnNhY3Rpb24g
PSBSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9uLmdldFBvb2xlZCgpO1xuICAgICAgdHJhbnNh
Y3Rpb24ucGVyZm9ybShydW5CYXRjaGVkVXBkYXRlcywgbnVsbCwgdHJhbnNhY3Rpb24pO1xuICAg
ICAgUmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbi5yZWxlYXNlKHRyYW5zYWN0aW9uKTtcbiAg
ICB9XG5cbiAgICBpZiAoYXNhcEVucXVldWVkKSB7XG4gICAgICBhc2FwRW5xdWV1ZWQgPSBmYWxz
ZTtcbiAgICAgIHZhciBxdWV1ZSA9IGFzYXBDYWxsYmFja1F1ZXVlO1xuICAgICAgYXNhcENhbGxi
YWNrUXVldWUgPSBDYWxsYmFja1F1ZXVlLmdldFBvb2xlZCgpO1xuICAgICAgcXVldWUubm90aWZ5
QWxsKCk7XG4gICAgICBDYWxsYmFja1F1ZXVlLnJlbGVhc2UocXVldWUpO1xuICAgIH1cbiAgfVxu
fTtcblxuLyoqXG4gKiBNYXJrIGEgY29tcG9uZW50IGFzIG5lZWRpbmcgYSByZXJlbmRlciwgYWRk
aW5nIGFuIG9wdGlvbmFsIGNhbGxiYWNrIHRvIGFcbiAqIGxpc3Qgb2YgZnVuY3Rpb25zIHdoaWNo
IHdpbGwgYmUgZXhlY3V0ZWQgb25jZSB0aGUgcmVyZW5kZXIgb2NjdXJzLlxuICovXG5mdW5jdGlv
biBlbnF1ZXVlVXBkYXRlKGNvbXBvbmVudCkge1xuICBlbnN1cmVJbmplY3RlZCgpO1xuXG4gIC8v
IFZhcmlvdXMgcGFydHMgb2Ygb3VyIGNvZGUgKHN1Y2ggYXMgUmVhY3RDb21wb3NpdGVDb21wb25l
bnQnc1xuICAvLyBfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KSBhc3N1bWUgdGhhdCBjYWxscyB0
byByZW5kZXIgYXJlbid0IG5lc3RlZDtcbiAgLy8gdmVyaWZ5IHRoYXQgdGhhdCdzIHRoZSBjYXNl
LiAoVGhpcyBpcyBjYWxsZWQgYnkgZWFjaCB0b3AtbGV2ZWwgdXBkYXRlXG4gIC8vIGZ1bmN0aW9u
LCBsaWtlIHNldFN0YXRlLCBmb3JjZVVwZGF0ZSwgZXRjLjsgY3JlYXRpb24gYW5kXG4gIC8vIGRl
c3RydWN0aW9uIG9mIHRvcC1sZXZlbCBjb21wb25lbnRzIGlzIGd1YXJkZWQgaW4gUmVhY3RNb3Vu
dC4pXG5cbiAgaWYgKCFiYXRjaGluZ1N0cmF0ZWd5LmlzQmF0Y2hpbmdVcGRhdGVzKSB7XG4gICAg
YmF0Y2hpbmdTdHJhdGVneS5iYXRjaGVkVXBkYXRlcyhlbnF1ZXVlVXBkYXRlLCBjb21wb25lbnQp
O1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGRpcnR5Q29tcG9uZW50cy5wdXNoKGNvbXBvbmVudCk7
XG4gIGlmIChjb21wb25lbnQuX3VwZGF0ZUJhdGNoTnVtYmVyID09IG51bGwpIHtcbiAgICBjb21w
b25lbnQuX3VwZGF0ZUJhdGNoTnVtYmVyID0gdXBkYXRlQmF0Y2hOdW1iZXIgKyAxO1xuICB9XG59
XG5cbi8qKlxuICogRW5xdWV1ZSBhIGNhbGxiYWNrIHRvIGJlIHJ1biBhdCB0aGUgZW5kIG9mIHRo
ZSBjdXJyZW50IGJhdGNoaW5nIGN5Y2xlLiBUaHJvd3NcbiAqIGlmIG5vIHVwZGF0ZXMgYXJlIGN1
cnJlbnRseSBiZWluZyBwZXJmb3JtZWQuXG4gKi9cbmZ1bmN0aW9uIGFzYXAoY2FsbGJhY2ssIGNv
bnRleHQpIHtcbiAgIWJhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXMgPyBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RV
cGRhdGVzLmFzYXA6IENhblxcJ3QgZW5xdWV1ZSBhbiBhc2FwIGNhbGxiYWNrIGluIGEgY29udGV4
dCB3aGVyZXVwZGF0ZXMgYXJlIG5vdCBiZWluZyBiYXRjaGVkLicpIDogX3Byb2RJbnZhcmlhbnQo
JzEyNScpIDogdm9pZCAwO1xuICBhc2FwQ2FsbGJhY2tRdWV1ZS5lbnF1ZXVlKGNhbGxiYWNrLCBj
b250ZXh0KTtcbiAgYXNhcEVucXVldWVkID0gdHJ1ZTtcbn1cblxudmFyIFJlYWN0VXBkYXRlc0lu
amVjdGlvbiA9IHtcbiAgaW5qZWN0UmVjb25jaWxlVHJhbnNhY3Rpb246IGZ1bmN0aW9uIChSZWNv
bmNpbGVUcmFuc2FjdGlvbikge1xuICAgICFSZWNvbmNpbGVUcmFuc2FjdGlvbiA/IHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVw
ZGF0ZXM6IG11c3QgcHJvdmlkZSBhIHJlY29uY2lsZSB0cmFuc2FjdGlvbiBjbGFzcycpIDogX3By
b2RJbnZhcmlhbnQoJzEyNicpIDogdm9pZCAwO1xuICAgIFJlYWN0VXBkYXRlcy5SZWFjdFJlY29u
Y2lsZVRyYW5zYWN0aW9uID0gUmVjb25jaWxlVHJhbnNhY3Rpb247XG4gIH0sXG5cbiAgaW5qZWN0
QmF0Y2hpbmdTdHJhdGVneTogZnVuY3Rpb24gKF9iYXRjaGluZ1N0cmF0ZWd5KSB7XG4gICAgIV9i
YXRjaGluZ1N0cmF0ZWd5ID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IGludmFyaWFudChmYWxzZSwgJ1JlYWN0VXBkYXRlczogbXVzdCBwcm92aWRlIGEgYmF0Y2hpbmcg
c3RyYXRlZ3knKSA6IF9wcm9kSW52YXJpYW50KCcxMjcnKSA6IHZvaWQgMDtcbiAgICAhKHR5cGVv
ZiBfYmF0Y2hpbmdTdHJhdGVneS5iYXRjaGVkVXBkYXRlcyA9PT0gJ2Z1bmN0aW9uJykgPyBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVh
Y3RVcGRhdGVzOiBtdXN0IHByb3ZpZGUgYSBiYXRjaGVkVXBkYXRlcygpIGZ1bmN0aW9uJykgOiBf
cHJvZEludmFyaWFudCgnMTI4JykgOiB2b2lkIDA7XG4gICAgISh0eXBlb2YgX2JhdGNoaW5nU3Ry
YXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXMgPT09ICdib29sZWFuJykgPyBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzOiBt
dXN0IHByb3ZpZGUgYW4gaXNCYXRjaGluZ1VwZGF0ZXMgYm9vbGVhbiBhdHRyaWJ1dGUnKSA6IF9w
cm9kSW52YXJpYW50KCcxMjknKSA6IHZvaWQgMDtcbiAgICBiYXRjaGluZ1N0cmF0ZWd5ID0gX2Jh
dGNoaW5nU3RyYXRlZ3k7XG4gIH1cbn07XG5cbnZhciBSZWFjdFVwZGF0ZXMgPSB7XG4gIC8qKlxu
ICAgKiBSZWFjdCByZWZlcmVuY2VzIGBSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uYCB1c2luZyB0
aGlzIHByb3BlcnR5IGluIG9yZGVyXG4gICAqIHRvIGFsbG93IGRlcGVuZGVuY3kgaW5qZWN0aW9u
LlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rp
b246IG51bGwsXG5cbiAgYmF0Y2hlZFVwZGF0ZXM6IGJhdGNoZWRVcGRhdGVzLFxuICBlbnF1ZXVl
VXBkYXRlOiBlbnF1ZXVlVXBkYXRlLFxuICBmbHVzaEJhdGNoZWRVcGRhdGVzOiBmbHVzaEJhdGNo
ZWRVcGRhdGVzLFxuICBpbmplY3Rpb246IFJlYWN0VXBkYXRlc0luamVjdGlvbixcbiAgYXNhcDog
YXNhcFxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFVwZGF0ZXM7XG5cblxuLyoqKioqKioq
KioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFj
dFVwZGF0ZXMuanNcbiAqKiBtb2R1bGUgaWQgPSA5XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAq
Ki8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52
YXIgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIFBvb2xlZENsYXNz
ID0gcmVxdWlyZSgnLi9Qb29sZWRDbGFzcycpO1xuXG52YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVp
cmUoJ2ZianMvbGliL2VtcHR5RnVuY3Rpb24nKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJq
cy9saWIvd2FybmluZycpO1xuXG52YXIgZGlkV2FybkZvckFkZGVkTmV3UHJvcGVydHkgPSBmYWxz
ZTtcbnZhciBpc1Byb3h5U3VwcG9ydGVkID0gdHlwZW9mIFByb3h5ID09PSAnZnVuY3Rpb24nO1xu
XG52YXIgc2hvdWxkQmVSZWxlYXNlZFByb3BlcnRpZXMgPSBbJ2Rpc3BhdGNoQ29uZmlnJywgJ190
YXJnZXRJbnN0JywgJ25hdGl2ZUV2ZW50JywgJ2lzRGVmYXVsdFByZXZlbnRlZCcsICdpc1Byb3Bh
Z2F0aW9uU3RvcHBlZCcsICdfZGlzcGF0Y2hMaXN0ZW5lcnMnLCAnX2Rpc3BhdGNoSW5zdGFuY2Vz
J107XG5cbi8qKlxuICogQGludGVyZmFjZSBFdmVudFxuICogQHNlZSBodHRwOi8vd3d3LnczLm9y
Zy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvXG4gKi9cbnZhciBFdmVudEludGVyZmFjZSA9IHtcbiAg
dHlwZTogbnVsbCxcbiAgdGFyZ2V0OiBudWxsLFxuICAvLyBjdXJyZW50VGFyZ2V0IGlzIHNldCB3
aGVuIGRpc3BhdGNoaW5nOyBubyB1c2UgaW4gY29weWluZyBpdCBoZXJlXG4gIGN1cnJlbnRUYXJn
ZXQ6IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxsLFxuICBldmVudFBoYXNlOiBudWxsLFxu
ICBidWJibGVzOiBudWxsLFxuICBjYW5jZWxhYmxlOiBudWxsLFxuICB0aW1lU3RhbXA6IGZ1bmN0
aW9uIChldmVudCkge1xuICAgIHJldHVybiBldmVudC50aW1lU3RhbXAgfHwgRGF0ZS5ub3coKTtc
biAgfSxcbiAgZGVmYXVsdFByZXZlbnRlZDogbnVsbCxcbiAgaXNUcnVzdGVkOiBudWxsXG59O1xu
XG4vKipcbiAqIFN5bnRoZXRpYyBldmVudHMgYXJlIGRpc3BhdGNoZWQgYnkgZXZlbnQgcGx1Z2lu
cywgdHlwaWNhbGx5IGluIHJlc3BvbnNlIHRvIGFcbiAqIHRvcC1sZXZlbCBldmVudCBkZWxlZ2F0
aW9uIGhhbmRsZXIuXG4gKlxuICogVGhlc2Ugc3lzdGVtcyBzaG91bGQgZ2VuZXJhbGx5IHVzZSBw
b29saW5nIHRvIHJlZHVjZSB0aGUgZnJlcXVlbmN5IG9mIGdhcmJhZ2VcbiAqIGNvbGxlY3Rpb24u
IFRoZSBzeXN0ZW0gc2hvdWxkIGNoZWNrIGBpc1BlcnNpc3RlbnRgIHRvIGRldGVybWluZSB3aGV0
aGVyIHRoZVxuICogZXZlbnQgc2hvdWxkIGJlIHJlbGVhc2VkIGludG8gdGhlIHBvb2wgYWZ0ZXIg
YmVpbmcgZGlzcGF0Y2hlZC4gVXNlcnMgdGhhdFxuICogbmVlZCBhIHBlcnNpc3RlZCBldmVudCBz
aG91bGQgaW52b2tlIGBwZXJzaXN0YC5cbiAqXG4gKiBTeW50aGV0aWMgZXZlbnRzIChhbmQgc3Vi
Y2xhc3NlcykgaW1wbGVtZW50IHRoZSBET00gTGV2ZWwgMyBFdmVudHMgQVBJIGJ5XG4gKiBub3Jt
YWxpemluZyBicm93c2VyIHF1aXJrcy4gU3ViY2xhc3NlcyBkbyBub3QgbmVjZXNzYXJpbHkgaGF2
ZSB0byBpbXBsZW1lbnQgYVxuICogRE9NIGludGVyZmFjZTsgY3VzdG9tIGFwcGxpY2F0aW9uLXNw
ZWNpZmljIGV2ZW50cyBjYW4gYWxzbyBzdWJjbGFzcyB0aGlzLlxuICpcbiAqIEBwYXJhbSB7b2Jq
ZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBl
dmVudC5cbiAqIEBwYXJhbSB7Kn0gdGFyZ2V0SW5zdCBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2
ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3Nl
ciBldmVudC5cbiAqIEBwYXJhbSB7RE9NRXZlbnRUYXJnZXR9IG5hdGl2ZUV2ZW50VGFyZ2V0IFRh
cmdldCBub2RlLlxuICovXG5mdW5jdGlvbiBTeW50aGV0aWNFdmVudChkaXNwYXRjaENvbmZpZywg
dGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIGlmIChwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgLy8gdGhlc2UgaGF2ZSBh
IGdldHRlci9zZXR0ZXIgZm9yIHdhcm5pbmdzXG4gICAgZGVsZXRlIHRoaXMubmF0aXZlRXZlbnQ7
XG4gICAgZGVsZXRlIHRoaXMucHJldmVudERlZmF1bHQ7XG4gICAgZGVsZXRlIHRoaXMuc3RvcFBy
b3BhZ2F0aW9uO1xuICB9XG5cbiAgdGhpcy5kaXNwYXRjaENvbmZpZyA9IGRpc3BhdGNoQ29uZmln
O1xuICB0aGlzLl90YXJnZXRJbnN0ID0gdGFyZ2V0SW5zdDtcbiAgdGhpcy5uYXRpdmVFdmVudCA9
IG5hdGl2ZUV2ZW50O1xuXG4gIHZhciBJbnRlcmZhY2UgPSB0aGlzLmNvbnN0cnVjdG9yLkludGVy
ZmFjZTtcbiAgZm9yICh2YXIgcHJvcE5hbWUgaW4gSW50ZXJmYWNlKSB7XG4gICAgaWYgKCFJbnRl
cmZhY2UuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICBjb250aW51ZTtcbiAgICB9
XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAg
IGRlbGV0ZSB0aGlzW3Byb3BOYW1lXTsgLy8gdGhpcyBoYXMgYSBnZXR0ZXIvc2V0dGVyIGZvciB3
YXJuaW5nc1xuICAgIH1cbiAgICB2YXIgbm9ybWFsaXplID0gSW50ZXJmYWNlW3Byb3BOYW1lXTtc
biAgICBpZiAobm9ybWFsaXplKSB7XG4gICAgICB0aGlzW3Byb3BOYW1lXSA9IG5vcm1hbGl6ZShu
YXRpdmVFdmVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwcm9wTmFtZSA9PT0gJ3Rhcmdl
dCcpIHtcbiAgICAgICAgdGhpcy50YXJnZXQgPSBuYXRpdmVFdmVudFRhcmdldDtcbiAgICAgIH0g
ZWxzZSB7XG4gICAgICAgIHRoaXNbcHJvcE5hbWVdID0gbmF0aXZlRXZlbnRbcHJvcE5hbWVdO1xu
ICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHZhciBkZWZhdWx0UHJldmVudGVkID0gbmF0aXZlRXZl
bnQuZGVmYXVsdFByZXZlbnRlZCAhPSBudWxsID8gbmF0aXZlRXZlbnQuZGVmYXVsdFByZXZlbnRl
ZCA6IG5hdGl2ZUV2ZW50LnJldHVyblZhbHVlID09PSBmYWxzZTtcbiAgaWYgKGRlZmF1bHRQcmV2
ZW50ZWQpIHtcbiAgICB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IGVtcHR5RnVuY3Rpb24udGhh
dFJldHVybnNUcnVlO1xuICB9IGVsc2Uge1xuICAgIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0g
ZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0ZhbHNlO1xuICB9XG4gIHRoaXMuaXNQcm9wYWdhdGlv
blN0b3BwZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zRmFsc2U7XG4gIHJldHVybiB0aGlz
O1xufVxuXG5fYXNzaWduKFN5bnRoZXRpY0V2ZW50LnByb3RvdHlwZSwge1xuICBwcmV2ZW50RGVm
YXVsdDogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZGVmYXVsdFByZXZlbnRlZCA9IHRydWU7XG4g
ICAgdmFyIGV2ZW50ID0gdGhpcy5uYXRpdmVFdmVudDtcbiAgICBpZiAoIWV2ZW50KSB7XG4gICAg
ICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LnByZXZlbnREZWZhdWx0KSB7XG4gICAg
ICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1s
aW5lIHZhbGlkLXR5cGVvZlxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGV2ZW50LnJldHVyblZhbHVl
ICE9PSAndW5rbm93bicpIHtcbiAgICAgIGV2ZW50LnJldHVyblZhbHVlID0gZmFsc2U7XG4gICAg
fVxuICAgIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkID0gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJu
c1RydWU7XG4gIH0sXG5cbiAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFy
IGV2ZW50ID0gdGhpcy5uYXRpdmVFdmVudDtcbiAgICBpZiAoIWV2ZW50KSB7XG4gICAgICByZXR1
cm47XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50LnN0b3BQcm9wYWdhdGlvbikge1xuICAgICAgZXZl
bnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUg
dmFsaWQtdHlwZW9mXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgZXZlbnQuY2FuY2VsQnViYmxlICE9
PSAndW5rbm93bicpIHtcbiAgICAgIC8vIFRoZSBDaGFuZ2VFdmVudFBsdWdpbiByZWdpc3RlcnMg
YSBcInByb3BlcnR5Y2hhbmdlXCIgZXZlbnQgZm9yXG4gICAgICAvLyBJRS4gVGhpcyBldmVudCBk
b2VzIG5vdCBzdXBwb3J0IGJ1YmJsaW5nIG9yIGNhbmNlbGxpbmcsIGFuZFxuICAgICAgLy8gYW55
IHJlZmVyZW5jZXMgdG8gY2FuY2VsQnViYmxlIHRocm93IFwiTWVtYmVyIG5vdCBmb3VuZFwiLiAg
QVxuICAgICAgLy8gdHlwZW9mIGNoZWNrIG9mIFwidW5rbm93blwiIGNpcmN1bXZlbnRzIHRoaXMg
aXNzdWUgKGFuZCBpcyBhbHNvXG4gICAgICAvLyBJRSBzcGVjaWZpYykuXG4gICAgICBldmVudC5j
YW5jZWxCdWJibGUgPSB0cnVlO1xuICAgIH1cblxuICAgIHRoaXMuaXNQcm9wYWdhdGlvblN0b3Bw
ZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZTtcbiAgfSxcblxuICAvKipcbiAgICog
V2UgcmVsZWFzZSBhbGwgZGlzcGF0Y2hlZCBgU3ludGhldGljRXZlbnRgcyBhZnRlciBlYWNoIGV2
ZW50IGxvb3AsIGFkZGluZ1xuICAgKiB0aGVtIGJhY2sgaW50byB0aGUgcG9vbC4gVGhpcyBhbGxv
d3MgYSB3YXkgdG8gaG9sZCBvbnRvIGEgcmVmZXJlbmNlIHRoYXRcbiAgICogd29uJ3QgYmUgYWRk
ZWQgYmFjayBpbnRvIHRoZSBwb29sLlxuICAgKi9cbiAgcGVyc2lzdDogZnVuY3Rpb24gKCkge1xu
ICAgIHRoaXMuaXNQZXJzaXN0ZW50ID0gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RydWU7XG4g
IH0sXG5cbiAgLyoqXG4gICAqIENoZWNrcyBpZiB0aGlzIGV2ZW50IHNob3VsZCBiZSByZWxlYXNl
ZCBiYWNrIGludG8gdGhlIHBvb2wuXG4gICAqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUg
aWYgdGhpcyBzaG91bGQgbm90IGJlIHJlbGVhc2VkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqL1xu
ICBpc1BlcnNpc3RlbnQ6IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNGYWxzZSxcblxuICAvKipc
biAgICogYFBvb2xlZENsYXNzYCBsb29rcyBmb3IgYGRlc3RydWN0b3JgIG9uIGVhY2ggaW5zdGFu
Y2UgaXQgcmVsZWFzZXMuXG4gICAqL1xuICBkZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7XG4gICAg
dmFyIEludGVyZmFjZSA9IHRoaXMuY29uc3RydWN0b3IuSW50ZXJmYWNlO1xuICAgIGZvciAodmFy
IHByb3BOYW1lIGluIEludGVyZmFjZSkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMs
IHByb3BOYW1lLCBnZXRQb29sZWRXYXJuaW5nUHJvcGVydHlEZWZpbml0aW9uKHByb3BOYW1lLCBJ
bnRlcmZhY2VbcHJvcE5hbWVdKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzW3Byb3BO
YW1lXSA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2hv
dWxkQmVSZWxlYXNlZFByb3BlcnRpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHRoaXNbc2hvdWxk
QmVSZWxlYXNlZFByb3BlcnRpZXNbaV1dID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0aGlzLCAnbmF0aXZlRXZlbnQnLCBnZXRQb29sZWRXYXJuaW5nUHJvcGVydHlEZWZpbml0
aW9uKCduYXRpdmVFdmVudCcsIG51bGwpKTtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0
aGlzLCAncHJldmVudERlZmF1bHQnLCBnZXRQb29sZWRXYXJuaW5nUHJvcGVydHlEZWZpbml0aW9u
KCdwcmV2ZW50RGVmYXVsdCcsIGVtcHR5RnVuY3Rpb24pKTtcbiAgICAgIE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eSh0aGlzLCAnc3RvcFByb3BhZ2F0aW9uJywgZ2V0UG9vbGVkV2FybmluZ1Byb3BlcnR5
RGVmaW5pdGlvbignc3RvcFByb3BhZ2F0aW9uJywgZW1wdHlGdW5jdGlvbikpO1xuICAgIH1cbiAg
fVxufSk7XG5cblN5bnRoZXRpY0V2ZW50LkludGVyZmFjZSA9IEV2ZW50SW50ZXJmYWNlO1xuXG5p
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBpZiAoaXNQcm94
eVN1cHBvcnRlZCkge1xuICAgIC8qZXNsaW50LWRpc2FibGUgbm8tZnVuYy1hc3NpZ24gKi9cbiAg
ICBTeW50aGV0aWNFdmVudCA9IG5ldyBQcm94eShTeW50aGV0aWNFdmVudCwge1xuICAgICAgY29u
c3RydWN0OiBmdW5jdGlvbiAodGFyZ2V0LCBhcmdzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmFw
cGx5KHRhcmdldCwgT2JqZWN0LmNyZWF0ZSh0YXJnZXQucHJvdG90eXBlKSwgYXJncyk7XG4gICAg
ICB9LFxuICAgICAgYXBwbHk6IGZ1bmN0aW9uIChjb25zdHJ1Y3RvciwgdGhhdCwgYXJncykge1xu
ICAgICAgICByZXR1cm4gbmV3IFByb3h5KGNvbnN0cnVjdG9yLmFwcGx5KHRoYXQsIGFyZ3MpLCB7
XG4gICAgICAgICAgc2V0OiBmdW5jdGlvbiAodGFyZ2V0LCBwcm9wLCB2YWx1ZSkge1xuICAgICAg
ICAgICAgaWYgKHByb3AgIT09ICdpc1BlcnNpc3RlbnQnICYmICF0YXJnZXQuY29uc3RydWN0b3Iu
SW50ZXJmYWNlLmhhc093blByb3BlcnR5KHByb3ApICYmIHNob3VsZEJlUmVsZWFzZWRQcm9wZXJ0
aWVzLmluZGV4T2YocHJvcCkgPT09IC0xKSB7XG4gICAgICAgICAgICAgIHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGRpZFdhcm5Gb3JBZGRlZE5ld1Byb3Bl
cnR5IHx8IHRhcmdldC5pc1BlcnNpc3RlbnQoKSwgXCJUaGlzIHN5bnRoZXRpYyBldmVudCBpcyBy
ZXVzZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuIElmIHlvdSdyZSBcIiArIFwic2VlaW5nIHRo
aXMsIHlvdSdyZSBhZGRpbmcgYSBuZXcgcHJvcGVydHkgaW4gdGhlIHN5bnRoZXRpYyBldmVudCBv
YmplY3QuIFwiICsgJ1RoZSBwcm9wZXJ0eSBpcyBuZXZlciByZWxlYXNlZC4gU2VlICcgKyAnaHR0
cHM6Ly9mYi5tZS9yZWFjdC1ldmVudC1wb29saW5nIGZvciBtb3JlIGluZm9ybWF0aW9uLicpIDog
dm9pZCAwO1xuICAgICAgICAgICAgICBkaWRXYXJuRm9yQWRkZWROZXdQcm9wZXJ0eSA9IHRydWU7
XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0YXJnZXRbcHJvcF0gPSB2YWx1ZTtcbiAgICAg
ICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9XG4g
ICAgfSk7XG4gICAgLyplc2xpbnQtZW5hYmxlIG5vLWZ1bmMtYXNzaWduICovXG4gIH1cbn1cbi8q
KlxuICogSGVscGVyIHRvIHJlZHVjZSBib2lsZXJwbGF0ZSB3aGVuIGNyZWF0aW5nIHN1YmNsYXNz
ZXMuXG4gKlxuICogQHBhcmFtIHtmdW5jdGlvbn0gQ2xhc3NcbiAqIEBwYXJhbSB7P29iamVjdH0g
SW50ZXJmYWNlXG4gKi9cblN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyA9IGZ1bmN0aW9uIChD
bGFzcywgSW50ZXJmYWNlKSB7XG4gIHZhciBTdXBlciA9IHRoaXM7XG5cbiAgdmFyIEUgPSBmdW5j
dGlvbiAoKSB7fTtcbiAgRS5wcm90b3R5cGUgPSBTdXBlci5wcm90b3R5cGU7XG4gIHZhciBwcm90
b3R5cGUgPSBuZXcgRSgpO1xuXG4gIF9hc3NpZ24ocHJvdG90eXBlLCBDbGFzcy5wcm90b3R5cGUp
O1xuICBDbGFzcy5wcm90b3R5cGUgPSBwcm90b3R5cGU7XG4gIENsYXNzLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciA9IENsYXNzO1xuXG4gIENsYXNzLkludGVyZmFjZSA9IF9hc3NpZ24oe30sIFN1cGVy
LkludGVyZmFjZSwgSW50ZXJmYWNlKTtcbiAgQ2xhc3MuYXVnbWVudENsYXNzID0gU3VwZXIuYXVn
bWVudENsYXNzO1xuXG4gIFBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhDbGFzcywgUG9vbGVkQ2xh
c3MuZm91ckFyZ3VtZW50UG9vbGVyKTtcbn07XG5cblBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhT
eW50aGV0aWNFdmVudCwgUG9vbGVkQ2xhc3MuZm91ckFyZ3VtZW50UG9vbGVyKTtcblxubW9kdWxl
LmV4cG9ydHMgPSBTeW50aGV0aWNFdmVudDtcblxuLyoqXG4gICogSGVscGVyIHRvIG51bGxpZnkg
c3ludGhldGljRXZlbnQgaW5zdGFuY2UgcHJvcGVydGllcyB3aGVuIGRlc3RydWN0aW5nXG4gICpc
biAgKiBAcGFyYW0ge29iamVjdH0gU3ludGhldGljRXZlbnRcbiAgKiBAcGFyYW0ge1N0cmluZ30g
cHJvcE5hbWVcbiAgKiBAcmV0dXJuIHtvYmplY3R9IGRlZmluZVByb3BlcnR5IG9iamVjdFxuICAq
L1xuZnVuY3Rpb24gZ2V0UG9vbGVkV2FybmluZ1Byb3BlcnR5RGVmaW5pdGlvbihwcm9wTmFtZSwg
Z2V0VmFsKSB7XG4gIHZhciBpc0Z1bmN0aW9uID0gdHlwZW9mIGdldFZhbCA9PT0gJ2Z1bmN0aW9u
JztcbiAgcmV0dXJuIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgc2V0OiBzZXQsXG4g
ICAgZ2V0OiBnZXRcbiAgfTtcblxuICBmdW5jdGlvbiBzZXQodmFsKSB7XG4gICAgdmFyIGFjdGlv
biA9IGlzRnVuY3Rpb24gPyAnc2V0dGluZyB0aGUgbWV0aG9kJyA6ICdzZXR0aW5nIHRoZSBwcm9w
ZXJ0eSc7XG4gICAgd2FybihhY3Rpb24sICdUaGlzIGlzIGVmZmVjdGl2ZWx5IGEgbm8tb3AnKTtc
biAgICByZXR1cm4gdmFsO1xuICB9XG5cbiAgZnVuY3Rpb24gZ2V0KCkge1xuICAgIHZhciBhY3Rp
b24gPSBpc0Z1bmN0aW9uID8gJ2FjY2Vzc2luZyB0aGUgbWV0aG9kJyA6ICdhY2Nlc3NpbmcgdGhl
IHByb3BlcnR5JztcbiAgICB2YXIgcmVzdWx0ID0gaXNGdW5jdGlvbiA/ICdUaGlzIGlzIGEgbm8t
b3AgZnVuY3Rpb24nIDogJ1RoaXMgaXMgc2V0IHRvIG51bGwnO1xuICAgIHdhcm4oYWN0aW9uLCBy
ZXN1bHQpO1xuICAgIHJldHVybiBnZXRWYWw7XG4gIH1cblxuICBmdW5jdGlvbiB3YXJuKGFjdGlv
biwgcmVzdWx0KSB7XG4gICAgdmFyIHdhcm5pbmdDb25kaXRpb24gPSBmYWxzZTtcbiAgICBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh3YXJuaW5nQ29uZGl0
aW9uLCBcIlRoaXMgc3ludGhldGljIGV2ZW50IGlzIHJldXNlZCBmb3IgcGVyZm9ybWFuY2UgcmVh
c29ucy4gSWYgeW91J3JlIHNlZWluZyB0aGlzLCBcIiArIFwieW91J3JlICVzIGAlc2Agb24gYSBy
ZWxlYXNlZC9udWxsaWZpZWQgc3ludGhldGljIGV2ZW50LiAlcy4gXCIgKyAnSWYgeW91IG11c3Qg
a2VlcCB0aGUgb3JpZ2luYWwgc3ludGhldGljIGV2ZW50IGFyb3VuZCwgdXNlIGV2ZW50LnBlcnNp
c3QoKS4gJyArICdTZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC1ldmVudC1wb29saW5nIGZvciBtb3Jl
IGluZm9ybWF0aW9uLicsIGFjdGlvbiwgcHJvcE5hbWUsIHJlc3VsdCkgOiB2b2lkIDA7XG4gIH1c
bn1cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9y
ZWFjdC1kb20vbGliL1N5bnRoZXRpY0V2ZW50LmpzXG4gKiogbW9kdWxlIGlkID0gMTBcbiAqKiBt
b2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxu
ICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBLZWVwcyB0cmFjayBvZiB0aGUgY3VycmVu
dCBvd25lci5cbiAqXG4gKiBUaGUgY3VycmVudCBvd25lciBpcyB0aGUgY29tcG9uZW50IHdobyBz
aG91bGQgb3duIGFueSBjb21wb25lbnRzIHRoYXQgYXJlXG4gKiBjdXJyZW50bHkgYmVpbmcgY29u
c3RydWN0ZWQuXG4gKi9cbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHtcbiAgLyoqXG4gICAqIEBp
bnRlcm5hbFxuICAgKiBAdHlwZSB7UmVhY3RDb21wb25lbnR9XG4gICAqL1xuICBjdXJyZW50OiBu
dWxsXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q3VycmVudE93bmVyO1xuXG5cbi8qKioq
KioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0L2xpYi9SZWFj
dEN1cnJlbnRPd25lci5qc1xuICoqIG1vZHVsZSBpZCA9IDExXG4gKiogbW9kdWxlIGNodW5rcyA9
IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9s
aWIvUmVhY3QnKTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVS
XG4gKiogLi9+L3JlYWN0L3JlYWN0LmpzXG4gKiogbW9kdWxlIGlkID0gMTJcbiAqKiBtb2R1bGUg
Y2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTUtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4g
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNl
IHN0cmljdCc7XG5cbnZhciBET01OYW1lc3BhY2VzID0gcmVxdWlyZSgnLi9ET01OYW1lc3BhY2Vz
Jyk7XG52YXIgc2V0SW5uZXJIVE1MID0gcmVxdWlyZSgnLi9zZXRJbm5lckhUTUwnKTtcblxudmFy
IGNyZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24gPSByZXF1aXJlKCcuL2NyZWF0ZU1p
Y3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24nKTtcbnZhciBzZXRUZXh0Q29udGVudCA9IHJlcXVp
cmUoJy4vc2V0VGV4dENvbnRlbnQnKTtcblxudmFyIEVMRU1FTlRfTk9ERV9UWVBFID0gMTtcbnZh
ciBET0NVTUVOVF9GUkFHTUVOVF9OT0RFX1RZUEUgPSAxMTtcblxuLyoqXG4gKiBJbiBJRSAoOC0x
MSkgYW5kIEVkZ2UsIGFwcGVuZGluZyBub2RlcyB3aXRoIG5vIGNoaWxkcmVuIGlzIGRyYW1hdGlj
YWxseVxuICogZmFzdGVyIHRoYW4gYXBwZW5kaW5nIGEgZnVsbCBzdWJ0cmVlLCBzbyB3ZSBlc3Nl
bnRpYWxseSBxdWV1ZSB1cCB0aGVcbiAqIC5hcHBlbmRDaGlsZCBjYWxscyBoZXJlIGFuZCBhcHBs
eSB0aGVtIHNvIGVhY2ggbm9kZSBpcyBhZGRlZCB0byBpdHMgcGFyZW50XG4gKiBiZWZvcmUgYW55
IGNoaWxkcmVuIGFyZSBhZGRlZC5cbiAqXG4gKiBJbiBvdGhlciBicm93c2VycywgZG9pbmcgc28g
aXMgc2xvd2VyIG9yIG5ldXRyYWwgY29tcGFyZWQgdG8gdGhlIG90aGVyIG9yZGVyXG4gKiAoaW4g
RmlyZWZveCwgdHdpY2UgYXMgc2xvdykgc28gd2Ugb25seSBkbyB0aGlzIGludmVyc2lvbiBpbiBJ
RS5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3NwaWN5ai9pbm5lcmh0bWwtdnMtY3Jl
YXRlZWxlbWVudC12cy1jbG9uZW5vZGUuXG4gKi9cbnZhciBlbmFibGVMYXp5ID0gdHlwZW9mIGRv
Y3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQuZG9jdW1lbnRNb2RlID09
PSAnbnVtYmVyJyB8fCB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Yg
bmF2aWdhdG9yLnVzZXJBZ2VudCA9PT0gJ3N0cmluZycgJiYgL1xcYkVkZ2VcXC9cXGQvLnRlc3Qo
bmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cbmZ1bmN0aW9uIGluc2VydFRyZWVDaGlsZHJlbih0cmVl
KSB7XG4gIGlmICghZW5hYmxlTGF6eSkge1xuICAgIHJldHVybjtcbiAgfVxuICB2YXIgbm9kZSA9
IHRyZWUubm9kZTtcbiAgdmFyIGNoaWxkcmVuID0gdHJlZS5jaGlsZHJlbjtcbiAgaWYgKGNoaWxk
cmVuLmxlbmd0aCkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBp
KyspIHtcbiAgICAgIGluc2VydFRyZWVCZWZvcmUobm9kZSwgY2hpbGRyZW5baV0sIG51bGwpO1xu
ICAgIH1cbiAgfSBlbHNlIGlmICh0cmVlLmh0bWwgIT0gbnVsbCkge1xuICAgIHNldElubmVySFRN
TChub2RlLCB0cmVlLmh0bWwpO1xuICB9IGVsc2UgaWYgKHRyZWUudGV4dCAhPSBudWxsKSB7XG4g
ICAgc2V0VGV4dENvbnRlbnQobm9kZSwgdHJlZS50ZXh0KTtcbiAgfVxufVxuXG52YXIgaW5zZXJ0
VHJlZUJlZm9yZSA9IGNyZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24g
KHBhcmVudE5vZGUsIHRyZWUsIHJlZmVyZW5jZU5vZGUpIHtcbiAgLy8gRG9jdW1lbnRGcmFnbWVu
dHMgYXJlbid0IGFjdHVhbGx5IHBhcnQgb2YgdGhlIERPTSBhZnRlciBpbnNlcnRpb24gc29cbiAg
Ly8gYXBwZW5kaW5nIGNoaWxkcmVuIHdvbid0IHVwZGF0ZSB0aGUgRE9NLiBXZSBuZWVkIHRvIGVu
c3VyZSB0aGUgZnJhZ21lbnRcbiAgLy8gaXMgcHJvcGVybHkgcG9wdWxhdGVkIGZpcnN0LCBicmVh
a2luZyBvdXQgb2Ygb3VyIGxhenkgYXBwcm9hY2ggZm9yIGp1c3RcbiAgLy8gdGhpcyBsZXZlbC4g
QWxzbywgc29tZSA8b2JqZWN0PiBwbHVnaW5zIChsaWtlIEZsYXNoIFBsYXllcikgd2lsbCByZWFk
XG4gIC8vIDxwYXJhbT4gbm9kZXMgaW1tZWRpYXRlbHkgdXBvbiBpbnNlcnRpb24gaW50byB0aGUg
RE9NLCBzbyA8b2JqZWN0PlxuICAvLyBtdXN0IGFsc28gYmUgcG9wdWxhdGVkIHByaW9yIHRvIGlu
c2VydGlvbiBpbnRvIHRoZSBET00uXG4gIGlmICh0cmVlLm5vZGUubm9kZVR5cGUgPT09IERPQ1VN
RU5UX0ZSQUdNRU5UX05PREVfVFlQRSB8fCB0cmVlLm5vZGUubm9kZVR5cGUgPT09IEVMRU1FTlRf
Tk9ERV9UWVBFICYmIHRyZWUubm9kZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnb2JqZWN0
JyAmJiAodHJlZS5ub2RlLm5hbWVzcGFjZVVSSSA9PSBudWxsIHx8IHRyZWUubm9kZS5uYW1lc3Bh
Y2VVUkkgPT09IERPTU5hbWVzcGFjZXMuaHRtbCkpIHtcbiAgICBpbnNlcnRUcmVlQ2hpbGRyZW4o
dHJlZSk7XG4gICAgcGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodHJlZS5ub2RlLCByZWZlcmVuY2VO
b2RlKTtcbiAgfSBlbHNlIHtcbiAgICBwYXJlbnROb2RlLmluc2VydEJlZm9yZSh0cmVlLm5vZGUs
IHJlZmVyZW5jZU5vZGUpO1xuICAgIGluc2VydFRyZWVDaGlsZHJlbih0cmVlKTtcbiAgfVxufSk7
XG5cbmZ1bmN0aW9uIHJlcGxhY2VDaGlsZFdpdGhUcmVlKG9sZE5vZGUsIG5ld1RyZWUpIHtcbiAg
b2xkTm9kZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChuZXdUcmVlLm5vZGUsIG9sZE5vZGUpO1xu
ICBpbnNlcnRUcmVlQ2hpbGRyZW4obmV3VHJlZSk7XG59XG5cbmZ1bmN0aW9uIHF1ZXVlQ2hpbGQo
cGFyZW50VHJlZSwgY2hpbGRUcmVlKSB7XG4gIGlmIChlbmFibGVMYXp5KSB7XG4gICAgcGFyZW50
VHJlZS5jaGlsZHJlbi5wdXNoKGNoaWxkVHJlZSk7XG4gIH0gZWxzZSB7XG4gICAgcGFyZW50VHJl
ZS5ub2RlLmFwcGVuZENoaWxkKGNoaWxkVHJlZS5ub2RlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBx
dWV1ZUhUTUwodHJlZSwgaHRtbCkge1xuICBpZiAoZW5hYmxlTGF6eSkge1xuICAgIHRyZWUuaHRt
bCA9IGh0bWw7XG4gIH0gZWxzZSB7XG4gICAgc2V0SW5uZXJIVE1MKHRyZWUubm9kZSwgaHRtbCk7
XG4gIH1cbn1cblxuZnVuY3Rpb24gcXVldWVUZXh0KHRyZWUsIHRleHQpIHtcbiAgaWYgKGVuYWJs
ZUxhenkpIHtcbiAgICB0cmVlLnRleHQgPSB0ZXh0O1xuICB9IGVsc2Uge1xuICAgIHNldFRleHRD
b250ZW50KHRyZWUubm9kZSwgdGV4dCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gdG9TdHJpbmcoKSB7
XG4gIHJldHVybiB0aGlzLm5vZGUubm9kZU5hbWU7XG59XG5cbmZ1bmN0aW9uIERPTUxhenlUcmVl
KG5vZGUpIHtcbiAgcmV0dXJuIHtcbiAgICBub2RlOiBub2RlLFxuICAgIGNoaWxkcmVuOiBbXSxc
biAgICBodG1sOiBudWxsLFxuICAgIHRleHQ6IG51bGwsXG4gICAgdG9TdHJpbmc6IHRvU3RyaW5n
XG4gIH07XG59XG5cbkRPTUxhenlUcmVlLmluc2VydFRyZWVCZWZvcmUgPSBpbnNlcnRUcmVlQmVm
b3JlO1xuRE9NTGF6eVRyZWUucmVwbGFjZUNoaWxkV2l0aFRyZWUgPSByZXBsYWNlQ2hpbGRXaXRo
VHJlZTtcbkRPTUxhenlUcmVlLnF1ZXVlQ2hpbGQgPSBxdWV1ZUNoaWxkO1xuRE9NTGF6eVRyZWUu
cXVldWVIVE1MID0gcXVldWVIVE1MO1xuRE9NTGF6eVRyZWUucXVldWVUZXh0ID0gcXVldWVUZXh0
O1xuXG5tb2R1bGUuZXhwb3J0cyA9IERPTUxhenlUcmVlO1xuXG5cbi8qKioqKioqKioqKioqKioq
KlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvRE9NTGF6eVRyZWUu
anNcbiAqKiBtb2R1bGUgaWQgPSAxNFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoq
XG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0
cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxu
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9k
SW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFyIGludmFy
aWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG5mdW5jdGlvbiBjaGVja01h
c2sodmFsdWUsIGJpdG1hc2spIHtcbiAgcmV0dXJuICh2YWx1ZSAmIGJpdG1hc2spID09PSBiaXRt
YXNrO1xufVxuXG52YXIgRE9NUHJvcGVydHlJbmplY3Rpb24gPSB7XG4gIC8qKlxuICAgKiBNYXBw
aW5nIGZyb20gbm9ybWFsaXplZCwgY2FtZWxjYXNlZCBwcm9wZXJ0eSBuYW1lcyB0byBhIGNvbmZp
Z3VyYXRpb24gdGhhdFxuICAgKiBzcGVjaWZpZXMgaG93IHRoZSBhc3NvY2lhdGVkIERPTSBwcm9w
ZXJ0eSBzaG91bGQgYmUgYWNjZXNzZWQgb3IgcmVuZGVyZWQuXG4gICAqL1xuICBNVVNUX1VTRV9Q
Uk9QRVJUWTogMHgxLFxuICBIQVNfQk9PTEVBTl9WQUxVRTogMHg0LFxuICBIQVNfTlVNRVJJQ19W
QUxVRTogMHg4LFxuICBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRTogMHgxMCB8IDB4OCxcbiAg
SEFTX09WRVJMT0FERURfQk9PTEVBTl9WQUxVRTogMHgyMCxcblxuICAvKipcbiAgICogSW5qZWN0
IHNvbWUgc3BlY2lhbGl6ZWQga25vd2xlZGdlIGFib3V0IHRoZSBET00uIFRoaXMgdGFrZXMgYSBj
b25maWcgb2JqZWN0XG4gICAqIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICAgKlxu
ICAgKiBpc0N1c3RvbUF0dHJpYnV0ZTogZnVuY3Rpb24gdGhhdCBnaXZlbiBhbiBhdHRyaWJ1dGUg
bmFtZSB3aWxsIHJldHVybiB0cnVlXG4gICAqIGlmIGl0IGNhbiBiZSBpbnNlcnRlZCBpbnRvIHRo
ZSBET00gdmVyYmF0aW0uIFVzZWZ1bCBmb3IgZGF0YS0qIG9yIGFyaWEtKlxuICAgKiBhdHRyaWJ1
dGVzIHdoZXJlIGl0J3MgaW1wb3NzaWJsZSB0byBlbnVtZXJhdGUgYWxsIG9mIHRoZSBwb3NzaWJs
ZVxuICAgKiBhdHRyaWJ1dGUgbmFtZXMsXG4gICAqXG4gICAqIFByb3BlcnRpZXM6IG9iamVjdCBt
YXBwaW5nIERPTSBwcm9wZXJ0eSBuYW1lIHRvIG9uZSBvZiB0aGVcbiAgICogRE9NUHJvcGVydHlJ
bmplY3Rpb24gY29uc3RhbnRzIG9yIG51bGwuIElmIHlvdXIgYXR0cmlidXRlIGlzbid0IGluIGhl
cmUsXG4gICAqIGl0IHdvbid0IGdldCB3cml0dGVuIHRvIHRoZSBET00uXG4gICAqXG4gICAqIERP
TUF0dHJpYnV0ZU5hbWVzOiBvYmplY3QgbWFwcGluZyBSZWFjdCBhdHRyaWJ1dGUgbmFtZSB0byB0
aGUgRE9NXG4gICAqIGF0dHJpYnV0ZSBuYW1lLiBBdHRyaWJ1dGUgbmFtZXMgbm90IHNwZWNpZmll
ZCB1c2UgdGhlICoqbG93ZXJjYXNlKipcbiAgICogbm9ybWFsaXplZCBuYW1lLlxuICAgKlxuICAg
KiBET01BdHRyaWJ1dGVOYW1lc3BhY2VzOiBvYmplY3QgbWFwcGluZyBSZWFjdCBhdHRyaWJ1dGUg
bmFtZSB0byB0aGUgRE9NXG4gICAqIGF0dHJpYnV0ZSBuYW1lc3BhY2UgVVJMLiAoQXR0cmlidXRl
IG5hbWVzIG5vdCBzcGVjaWZpZWQgdXNlIG5vIG5hbWVzcGFjZS4pXG4gICAqXG4gICAqIERPTVBy
b3BlcnR5TmFtZXM6IHNpbWlsYXIgdG8gRE9NQXR0cmlidXRlTmFtZXMgYnV0IGZvciBET00gcHJv
cGVydGllcy5cbiAgICogUHJvcGVydHkgbmFtZXMgbm90IHNwZWNpZmllZCB1c2UgdGhlIG5vcm1h
bGl6ZWQgbmFtZS5cbiAgICpcbiAgICogRE9NTXV0YXRpb25NZXRob2RzOiBQcm9wZXJ0aWVzIHRo
YXQgcmVxdWlyZSBzcGVjaWFsIG11dGF0aW9uIG1ldGhvZHMuIElmXG4gICAqIGB2YWx1ZWAgaXMg
dW5kZWZpbmVkLCB0aGUgbXV0YXRpb24gbWV0aG9kIHNob3VsZCB1bnNldCB0aGUgcHJvcGVydHku
XG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBkb21Qcm9wZXJ0eUNvbmZpZyB0aGUgY29uZmln
IGFzIGRlc2NyaWJlZCBhYm92ZS5cbiAgICovXG4gIGluamVjdERPTVByb3BlcnR5Q29uZmlnOiBm
dW5jdGlvbiAoZG9tUHJvcGVydHlDb25maWcpIHtcbiAgICB2YXIgSW5qZWN0aW9uID0gRE9NUHJv
cGVydHlJbmplY3Rpb247XG4gICAgdmFyIFByb3BlcnRpZXMgPSBkb21Qcm9wZXJ0eUNvbmZpZy5Q
cm9wZXJ0aWVzIHx8IHt9O1xuICAgIHZhciBET01BdHRyaWJ1dGVOYW1lc3BhY2VzID0gZG9tUHJv
cGVydHlDb25maWcuRE9NQXR0cmlidXRlTmFtZXNwYWNlcyB8fCB7fTtcbiAgICB2YXIgRE9NQXR0
cmlidXRlTmFtZXMgPSBkb21Qcm9wZXJ0eUNvbmZpZy5ET01BdHRyaWJ1dGVOYW1lcyB8fCB7fTtc
biAgICB2YXIgRE9NUHJvcGVydHlOYW1lcyA9IGRvbVByb3BlcnR5Q29uZmlnLkRPTVByb3BlcnR5
TmFtZXMgfHwge307XG4gICAgdmFyIERPTU11dGF0aW9uTWV0aG9kcyA9IGRvbVByb3BlcnR5Q29u
ZmlnLkRPTU11dGF0aW9uTWV0aG9kcyB8fCB7fTtcblxuICAgIGlmIChkb21Qcm9wZXJ0eUNvbmZp
Zy5pc0N1c3RvbUF0dHJpYnV0ZSkge1xuICAgICAgRE9NUHJvcGVydHkuX2lzQ3VzdG9tQXR0cmli
dXRlRnVuY3Rpb25zLnB1c2goZG9tUHJvcGVydHlDb25maWcuaXNDdXN0b21BdHRyaWJ1dGUpO1xu
ICAgIH1cblxuICAgIGZvciAodmFyIHByb3BOYW1lIGluIFByb3BlcnRpZXMpIHtcbiAgICAgICEh
RE9NUHJvcGVydHkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkgPyBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnaW5qZWN0
RE9NUHJvcGVydHlDb25maWcoLi4uKTogWW91XFwncmUgdHJ5aW5nIHRvIGluamVjdCBET00gcHJv
cGVydHkgXFwnJXNcXCcgd2hpY2ggaGFzIGFscmVhZHkgYmVlbiBpbmplY3RlZC4gWW91IG1heSBi
ZSBhY2NpZGVudGFsbHkgaW5qZWN0aW5nIHRoZSBzYW1lIERPTSBwcm9wZXJ0eSBjb25maWcgdHdp
Y2UsIG9yIHlvdSBtYXkgYmUgaW5qZWN0aW5nIHR3byBjb25maWdzIHRoYXQgaGF2ZSBjb25mbGlj
dGluZyBwcm9wZXJ0eSBuYW1lcy4nLCBwcm9wTmFtZSkgOiBfcHJvZEludmFyaWFudCgnNDgnLCBw
cm9wTmFtZSkgOiB2b2lkIDA7XG5cbiAgICAgIHZhciBsb3dlckNhc2VkID0gcHJvcE5hbWUudG9M
b3dlckNhc2UoKTtcbiAgICAgIHZhciBwcm9wQ29uZmlnID0gUHJvcGVydGllc1twcm9wTmFtZV07
XG5cbiAgICAgIHZhciBwcm9wZXJ0eUluZm8gPSB7XG4gICAgICAgIGF0dHJpYnV0ZU5hbWU6IGxv
d2VyQ2FzZWQsXG4gICAgICAgIGF0dHJpYnV0ZU5hbWVzcGFjZTogbnVsbCxcbiAgICAgICAgcHJv
cGVydHlOYW1lOiBwcm9wTmFtZSxcbiAgICAgICAgbXV0YXRpb25NZXRob2Q6IG51bGwsXG5cbiAg
ICAgICAgbXVzdFVzZVByb3BlcnR5OiBjaGVja01hc2socHJvcENvbmZpZywgSW5qZWN0aW9uLk1V
U1RfVVNFX1BST1BFUlRZKSxcbiAgICAgICAgaGFzQm9vbGVhblZhbHVlOiBjaGVja01hc2socHJv
cENvbmZpZywgSW5qZWN0aW9uLkhBU19CT09MRUFOX1ZBTFVFKSxcbiAgICAgICAgaGFzTnVtZXJp
Y1ZhbHVlOiBjaGVja01hc2socHJvcENvbmZpZywgSW5qZWN0aW9uLkhBU19OVU1FUklDX1ZBTFVF
KSxcbiAgICAgICAgaGFzUG9zaXRpdmVOdW1lcmljVmFsdWU6IGNoZWNrTWFzayhwcm9wQ29uZmln
LCBJbmplY3Rpb24uSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUpLFxuICAgICAgICBoYXNPdmVy
bG9hZGVkQm9vbGVhblZhbHVlOiBjaGVja01hc2socHJvcENvbmZpZywgSW5qZWN0aW9uLkhBU19P
VkVSTE9BREVEX0JPT0xFQU5fVkFMVUUpXG4gICAgICB9O1xuICAgICAgIShwcm9wZXJ0eUluZm8u
aGFzQm9vbGVhblZhbHVlICsgcHJvcGVydHlJbmZvLmhhc051bWVyaWNWYWx1ZSArIHByb3BlcnR5
SW5mby5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlIDw9IDEpID8gcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0RPTVByb3BlcnR5OiBWYWx1
ZSBjYW4gYmUgb25lIG9mIGJvb2xlYW4sIG92ZXJsb2FkZWQgYm9vbGVhbiwgb3IgbnVtZXJpYyB2
YWx1ZSwgYnV0IG5vdCBhIGNvbWJpbmF0aW9uOiAlcycsIHByb3BOYW1lKSA6IF9wcm9kSW52YXJp
YW50KCc1MCcsIHByb3BOYW1lKSA6IHZvaWQgMDtcblxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgRE9NUHJvcGVydHkuZ2V0UG9zc2li
bGVTdGFuZGFyZE5hbWVbbG93ZXJDYXNlZF0gPSBwcm9wTmFtZTtcbiAgICAgIH1cblxuICAgICAg
aWYgKERPTUF0dHJpYnV0ZU5hbWVzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAg
ICB2YXIgYXR0cmlidXRlTmFtZSA9IERPTUF0dHJpYnV0ZU5hbWVzW3Byb3BOYW1lXTtcbiAgICAg
ICAgcHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWUgPSBhdHRyaWJ1dGVOYW1lO1xuICAgICAgICBp
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIERP
TVByb3BlcnR5LmdldFBvc3NpYmxlU3RhbmRhcmROYW1lW2F0dHJpYnV0ZU5hbWVdID0gcHJvcE5h
bWU7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKERPTUF0dHJpYnV0ZU5hbWVzcGFj
ZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgIHByb3BlcnR5SW5mby5hdHRy
aWJ1dGVOYW1lc3BhY2UgPSBET01BdHRyaWJ1dGVOYW1lc3BhY2VzW3Byb3BOYW1lXTtcbiAgICAg
IH1cblxuICAgICAgaWYgKERPTVByb3BlcnR5TmFtZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUp
KSB7XG4gICAgICAgIHByb3BlcnR5SW5mby5wcm9wZXJ0eU5hbWUgPSBET01Qcm9wZXJ0eU5hbWVz
W3Byb3BOYW1lXTtcbiAgICAgIH1cblxuICAgICAgaWYgKERPTU11dGF0aW9uTWV0aG9kcy5oYXNP
d25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgcHJvcGVydHlJbmZvLm11dGF0aW9uTWV0
aG9kID0gRE9NTXV0YXRpb25NZXRob2RzW3Byb3BOYW1lXTtcbiAgICAgIH1cblxuICAgICAgRE9N
UHJvcGVydHkucHJvcGVydGllc1twcm9wTmFtZV0gPSBwcm9wZXJ0eUluZm87XG4gICAgfVxuICB9
XG59O1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG52YXIgQVRUUklCVVRFX05BTUVf
U1RBUlRfQ0hBUiA9ICc6QS1aX2EtelxcXFx1MDBDMC1cXFxcdTAwRDZcXFxcdTAwRDgtXFxcXHUw
MEY2XFxcXHUwMEY4LVxcXFx1MDJGRlxcXFx1MDM3MC1cXFxcdTAzN0RcXFxcdTAzN0YtXFxcXHUx
RkZGXFxcXHUyMDBDLVxcXFx1MjAwRFxcXFx1MjA3MC1cXFxcdTIxOEZcXFxcdTJDMDAtXFxcXHUy
RkVGXFxcXHUzMDAxLVxcXFx1RDdGRlxcXFx1RjkwMC1cXFxcdUZEQ0ZcXFxcdUZERjAtXFxcXHVG
RkZEJztcbi8qIGVzbGludC1lbmFibGUgbWF4LWxlbiAqL1xuXG4vKipcbiAqIERPTVByb3BlcnR5
IGV4cG9ydHMgbG9va3VwIG9iamVjdHMgdGhhdCBjYW4gYmUgdXNlZCBsaWtlIGZ1bmN0aW9uczpc
biAqXG4gKiAgID4gRE9NUHJvcGVydHkuaXNWYWxpZFsnaWQnXVxuICogICB0cnVlXG4gKiAgID4g
RE9NUHJvcGVydHkuaXNWYWxpZFsnZm9vYmFyJ11cbiAqICAgdW5kZWZpbmVkXG4gKlxuICogQWx0
aG91Z2ggdGhpcyBtYXkgYmUgY29uZnVzaW5nLCBpdCBwZXJmb3JtcyBiZXR0ZXIgaW4gZ2VuZXJh
bC5cbiAqXG4gKiBAc2VlIGh0dHA6Ly9qc3BlcmYuY29tL2tleS1leGlzdHNcbiAqIEBzZWUgaHR0
cDovL2pzcGVyZi5jb20va2V5LW1pc3NpbmdcbiAqL1xudmFyIERPTVByb3BlcnR5ID0ge1xuICBJ
RF9BVFRSSUJVVEVfTkFNRTogJ2RhdGEtcmVhY3RpZCcsXG4gIFJPT1RfQVRUUklCVVRFX05BTUU6
ICdkYXRhLXJlYWN0cm9vdCcsXG5cbiAgQVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUjogQVRUUklC
VVRFX05BTUVfU1RBUlRfQ0hBUixcbiAgQVRUUklCVVRFX05BTUVfQ0hBUjogQVRUUklCVVRFX05B
TUVfU1RBUlRfQ0hBUiArICdcXFxcLS4wLTlcXFxcdTAwQjdcXFxcdTAzMDAtXFxcXHUwMzZGXFxc
XHUyMDNGLVxcXFx1MjA0MCcsXG5cbiAgLyoqXG4gICAqIE1hcCBmcm9tIHByb3BlcnR5IFwic3Rh
bmRhcmQgbmFtZVwiIHRvIGFuIG9iamVjdCB3aXRoIGluZm8gYWJvdXQgaG93IHRvIHNldFxuICAg
KiB0aGUgcHJvcGVydHkgaW4gdGhlIERPTS4gRWFjaCBvYmplY3QgY29udGFpbnM6XG4gICAqXG4g
ICAqIGF0dHJpYnV0ZU5hbWU6XG4gICAqICAgVXNlZCB3aGVuIHJlbmRlcmluZyBtYXJrdXAgb3Ig
d2l0aCBgKkF0dHJpYnV0ZSgpYC5cbiAgICogYXR0cmlidXRlTmFtZXNwYWNlXG4gICAqIHByb3Bl
cnR5TmFtZTpcbiAgICogICBVc2VkIG9uIERPTSBub2RlIGluc3RhbmNlcy4gKFRoaXMgaW5jbHVk
ZXMgcHJvcGVydGllcyB0aGF0IG11dGF0ZSBkdWUgdG9cbiAgICogICBleHRlcm5hbCBmYWN0b3Jz
LilcbiAgICogbXV0YXRpb25NZXRob2Q6XG4gICAqICAgSWYgbm9uLW51bGwsIHVzZWQgaW5zdGVh
ZCBvZiB0aGUgcHJvcGVydHkgb3IgYHNldEF0dHJpYnV0ZSgpYCBhZnRlclxuICAgKiAgIGluaXRp
YWwgcmVuZGVyLlxuICAgKiBtdXN0VXNlUHJvcGVydHk6XG4gICAqICAgV2hldGhlciB0aGUgcHJv
cGVydHkgbXVzdCBiZSBhY2Nlc3NlZCBhbmQgbXV0YXRlZCBhcyBhbiBvYmplY3QgcHJvcGVydHku
XG4gICAqIGhhc0Jvb2xlYW5WYWx1ZTpcbiAgICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBzaG91
bGQgYmUgcmVtb3ZlZCB3aGVuIHNldCB0byBhIGZhbHNleSB2YWx1ZS5cbiAgICogaGFzTnVtZXJp
Y1ZhbHVlOlxuICAgKiAgIFdoZXRoZXIgdGhlIHByb3BlcnR5IG11c3QgYmUgbnVtZXJpYyBvciBw
YXJzZSBhcyBhIG51bWVyaWMgYW5kIHNob3VsZCBiZVxuICAgKiAgIHJlbW92ZWQgd2hlbiBzZXQg
dG8gYSBmYWxzZXkgdmFsdWUuXG4gICAqIGhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlOlxuICAgKiAg
IFdoZXRoZXIgdGhlIHByb3BlcnR5IG11c3QgYmUgcG9zaXRpdmUgbnVtZXJpYyBvciBwYXJzZSBh
cyBhIHBvc2l0aXZlXG4gICAqICAgbnVtZXJpYyBhbmQgc2hvdWxkIGJlIHJlbW92ZWQgd2hlbiBz
ZXQgdG8gYSBmYWxzZXkgdmFsdWUuXG4gICAqIGhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWU6XG4g
ICAqICAgV2hldGhlciB0aGUgcHJvcGVydHkgY2FuIGJlIHVzZWQgYXMgYSBmbGFnIGFzIHdlbGwg
YXMgd2l0aCBhIHZhbHVlLlxuICAgKiAgIFJlbW92ZWQgd2hlbiBzdHJpY3RseSBlcXVhbCB0byBm
YWxzZTsgcHJlc2VudCB3aXRob3V0IGEgdmFsdWUgd2hlblxuICAgKiAgIHN0cmljdGx5IGVxdWFs
IHRvIHRydWU7IHByZXNlbnQgd2l0aCBhIHZhbHVlIG90aGVyd2lzZS5cbiAgICovXG4gIHByb3Bl
cnRpZXM6IHt9LFxuXG4gIC8qKlxuICAgKiBNYXBwaW5nIGZyb20gbG93ZXJjYXNlIHByb3BlcnR5
IG5hbWVzIHRvIHRoZSBwcm9wZXJseSBjYXNlZCB2ZXJzaW9uLCB1c2VkXG4gICAqIHRvIHdhcm4g
aW4gdGhlIGNhc2Ugb2YgbWlzc2luZyBwcm9wZXJ0aWVzLiBBdmFpbGFibGUgb25seSBpbiBfX0RF
Vl9fLlxuICAgKlxuICAgKiBhdXRvZm9jdXMgaXMgcHJlZGVmaW5lZCwgYmVjYXVzZSBhZGRpbmcg
aXQgdG8gdGhlIHByb3BlcnR5IHdoaXRlbGlzdFxuICAgKiBjYXVzZXMgdW5pbnRlbmRlZCBzaWRl
IGVmZmVjdHMuXG4gICAqXG4gICAqIEB0eXBlIHtPYmplY3R9XG4gICAqL1xuICBnZXRQb3NzaWJs
ZVN0YW5kYXJkTmFtZTogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHsg
YXV0b2ZvY3VzOiAnYXV0b0ZvY3VzJyB9IDogbnVsbCxcblxuICAvKipcbiAgICogQWxsIG9mIHRo
ZSBpc0N1c3RvbUF0dHJpYnV0ZSgpIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBpbmplY3RlZC5c
biAgICovXG4gIF9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9uczogW10sXG5cbiAgLyoqXG4gICAq
IENoZWNrcyB3aGV0aGVyIGEgcHJvcGVydHkgbmFtZSBpcyBhIGN1c3RvbSBhdHRyaWJ1dGUuXG4g
ICAqIEBtZXRob2RcbiAgICovXG4gIGlzQ3VzdG9tQXR0cmlidXRlOiBmdW5jdGlvbiAoYXR0cmli
dXRlTmFtZSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgRE9NUHJvcGVydHkuX2lzQ3VzdG9t
QXR0cmlidXRlRnVuY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaXNDdXN0b21BdHRy
aWJ1dGVGbiA9IERPTVByb3BlcnR5Ll9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9uc1tpXTtcbiAg
ICAgIGlmIChpc0N1c3RvbUF0dHJpYnV0ZUZuKGF0dHJpYnV0ZU5hbWUpKSB7XG4gICAgICAgIHJl
dHVybiB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sXG5cbiAg
aW5qZWN0aW9uOiBET01Qcm9wZXJ0eUluamVjdGlvblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBE
T01Qcm9wZXJ0eTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxu
ICoqIC4vfi9yZWFjdC1kb20vbGliL0RPTVByb3BlcnR5LmpzXG4gKiogbW9kdWxlIGlkID0gMTVc
biAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpc
biAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFJlZiA9IHJlcXVpcmUoJy4vUmVhY3RS
ZWYnKTtcbnZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0cnVt
ZW50YXRpb24nKTtcblxudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7
XG5cbi8qKlxuICogSGVscGVyIHRvIGNhbGwgUmVhY3RSZWYuYXR0YWNoUmVmcyB3aXRoIHRoaXMg
Y29tcG9zaXRlIGNvbXBvbmVudCwgc3BsaXQgb3V0XG4gKiB0byBhdm9pZCBhbGxvY2F0aW9ucyBp
biB0aGUgdHJhbnNhY3Rpb24gbW91bnQtcmVhZHkgcXVldWUuXG4gKi9cbmZ1bmN0aW9uIGF0dGFj
aFJlZnMoKSB7XG4gIFJlYWN0UmVmLmF0dGFjaFJlZnModGhpcywgdGhpcy5fY3VycmVudEVsZW1l
bnQpO1xufVxuXG52YXIgUmVhY3RSZWNvbmNpbGVyID0ge1xuICAvKipcbiAgICogSW5pdGlhbGl6
ZXMgdGhlIGNvbXBvbmVudCwgcmVuZGVycyBtYXJrdXAsIGFuZCByZWdpc3RlcnMgZXZlbnQgbGlz
dGVuZXJzLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBpbnRlcm5hbEluc3Rh
bmNlXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNlcnZlclJl
bmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gez9vYmplY3R9IHRo
ZSBjb250YWluaW5nIGhvc3QgY29tcG9uZW50IGluc3RhbmNlXG4gICAqIEBwYXJhbSB7P29iamVj
dH0gaW5mbyBhYm91dCB0aGUgaG9zdCBjb250YWluZXJcbiAgICogQHJldHVybiB7P3N0cmluZ30g
UmVuZGVyZWQgbWFya3VwIHRvIGJlIGluc2VydGVkIGludG8gdGhlIERPTS5cbiAgICogQGZpbmFs
XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgbW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChpbnRl
cm5hbEluc3RhbmNlLCB0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8s
IGNvbnRleHQsIHBhcmVudERlYnVnSUQpIC8vIDAgaW4gcHJvZHVjdGlvbiBhbmQgZm9yIHJvb3Rz
XG4gIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xu
ICAgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHtcbiAgICAgICAgUmVh
Y3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uQmVmb3JlTW91bnRDb21wb25lbnQoaW50ZXJu
YWxJbnN0YW5jZS5fZGVidWdJRCwgaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQsIHBh
cmVudERlYnVnSUQpO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgbWFya3VwID0gaW50ZXJuYWxJ
bnN0YW5jZS5tb3VudENvbXBvbmVudCh0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRh
aW5lckluZm8sIGNvbnRleHQsIHBhcmVudERlYnVnSUQpO1xuICAgIGlmIChpbnRlcm5hbEluc3Rh
bmNlLl9jdXJyZW50RWxlbWVudCAmJiBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5y
ZWYgIT0gbnVsbCkge1xuICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5x
dWV1ZShhdHRhY2hSZWZzLCBpbnRlcm5hbEluc3RhbmNlKTtcbiAgICB9XG4gICAgaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChpbnRlcm5hbElu
c3RhbmNlLl9kZWJ1Z0lEICE9PSAwKSB7XG4gICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRl
YnVnVG9vbC5vbk1vdW50Q29tcG9uZW50KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQpO1xuICAg
ICAgfVxuICAgIH1cbiAgICByZXR1cm4gbWFya3VwO1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZXR1
cm5zIGEgdmFsdWUgdGhhdCBjYW4gYmUgcGFzc2VkIHRvXG4gICAqIFJlYWN0Q29tcG9uZW50RW52
aXJvbm1lbnQucmVwbGFjZU5vZGVXaXRoTWFya3VwLlxuICAgKi9cbiAgZ2V0SG9zdE5vZGU6IGZ1
bmN0aW9uIChpbnRlcm5hbEluc3RhbmNlKSB7XG4gICAgcmV0dXJuIGludGVybmFsSW5zdGFuY2Uu
Z2V0SG9zdE5vZGUoKTtcbiAgfSxcblxuICAvKipcbiAgICogUmVsZWFzZXMgYW55IHJlc291cmNl
cyBhbGxvY2F0ZWQgYnkgYG1vdW50Q29tcG9uZW50YC5cbiAgICpcbiAgICogQGZpbmFsXG4gICAq
IEBpbnRlcm5hbFxuICAgKi9cbiAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKGludGVybmFs
SW5zdGFuY2UsIHNhZmVseSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkg
e1xuICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVVbm1vdW50
Q29tcG9uZW50KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQpO1xuICAgICAgfVxuICAgIH1cbiAg
ICBSZWFjdFJlZi5kZXRhY2hSZWZzKGludGVybmFsSW5zdGFuY2UsIGludGVybmFsSW5zdGFuY2Uu
X2N1cnJlbnRFbGVtZW50KTtcbiAgICBpbnRlcm5hbEluc3RhbmNlLnVubW91bnRDb21wb25lbnQo
c2FmZWx5KTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykg
e1xuICAgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHtcbiAgICAgICAg
UmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uVW5tb3VudENvbXBvbmVudChpbnRlcm5h
bEluc3RhbmNlLl9kZWJ1Z0lEKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAq
IFVwZGF0ZSBhIGNvbXBvbmVudCB1c2luZyBhIG5ldyBlbGVtZW50LlxuICAgKlxuICAgKiBAcGFy
YW0ge1JlYWN0Q29tcG9uZW50fSBpbnRlcm5hbEluc3RhbmNlXG4gICAqIEBwYXJhbSB7UmVhY3RF
bGVtZW50fSBuZXh0RWxlbWVudFxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rp
b259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0XG4gICAqIEBpbnRl
cm5hbFxuICAgKi9cbiAgcmVjZWl2ZUNvbXBvbmVudDogZnVuY3Rpb24gKGludGVybmFsSW5zdGFu
Y2UsIG5leHRFbGVtZW50LCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgIHZhciBwcmV2RWxl
bWVudCA9IGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50O1xuXG4gICAgaWYgKG5leHRF
bGVtZW50ID09PSBwcmV2RWxlbWVudCAmJiBjb250ZXh0ID09PSBpbnRlcm5hbEluc3RhbmNlLl9j
b250ZXh0KSB7XG4gICAgICAvLyBTaW5jZSBlbGVtZW50cyBhcmUgaW1tdXRhYmxlIGFmdGVyIHRo
ZSBvd25lciBpcyByZW5kZXJlZCxcbiAgICAgIC8vIHdlIGNhbiBkbyBhIGNoZWFwIGlkZW50aXR5
IGNvbXBhcmUgaGVyZSB0byBkZXRlcm1pbmUgaWYgdGhpcyBpcyBhXG4gICAgICAvLyBzdXBlcmZs
dW91cyByZWNvbmNpbGUuIEl0J3MgcG9zc2libGUgZm9yIHN0YXRlIHRvIGJlIG11dGFibGUgYnV0
IHN1Y2hcbiAgICAgIC8vIGNoYW5nZSBzaG91bGQgdHJpZ2dlciBhbiB1cGRhdGUgb2YgdGhlIG93
bmVyIHdoaWNoIHdvdWxkIHJlY3JlYXRlXG4gICAgICAvLyB0aGUgZWxlbWVudC4gV2UgZXhwbGlj
aXRseSBjaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiBhbiBvd25lciBzaW5jZVxuICAgICAgLy8g
aXQncyBwb3NzaWJsZSBmb3IgYW4gZWxlbWVudCBjcmVhdGVkIG91dHNpZGUgYSBjb21wb3NpdGUg
dG8gYmVcbiAgICAgIC8vIGRlZXBseSBtdXRhdGVkIGFuZCByZXVzZWQuXG5cbiAgICAgIC8vIFRP
RE86IEJhaWxpbmcgb3V0IGVhcmx5IGlzIGp1c3QgYSBwZXJmIG9wdGltaXphdGlvbiByaWdodD9c
biAgICAgIC8vIFRPRE86IFJlbW92aW5nIHRoZSByZXR1cm4gc3RhdGVtZW50IHNob3VsZCBhZmZl
Y3QgY29ycmVjdG5lc3M/XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChpbnRlcm5hbEluc3Rh
bmNlLl9kZWJ1Z0lEICE9PSAwKSB7XG4gICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVn
VG9vbC5vbkJlZm9yZVVwZGF0ZUNvbXBvbmVudChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lELCBu
ZXh0RWxlbWVudCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHJlZnNDaGFuZ2VkID0gUmVh
Y3RSZWYuc2hvdWxkVXBkYXRlUmVmcyhwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQpO1xuXG4gICAg
aWYgKHJlZnNDaGFuZ2VkKSB7XG4gICAgICBSZWFjdFJlZi5kZXRhY2hSZWZzKGludGVybmFsSW5z
dGFuY2UsIHByZXZFbGVtZW50KTtcbiAgICB9XG5cbiAgICBpbnRlcm5hbEluc3RhbmNlLnJlY2Vp
dmVDb21wb25lbnQobmV4dEVsZW1lbnQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcblxuICAgIGlm
IChyZWZzQ2hhbmdlZCAmJiBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudCAmJiBpbnRl
cm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5yZWYgIT0gbnVsbCkge1xuICAgICAgdHJhbnNh
Y3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShhdHRhY2hSZWZzLCBpbnRlcm5hbElu
c3RhbmNlKTtcbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJykge1xuICAgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHtc
biAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uVXBkYXRlQ29tcG9uZW50
KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQpO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICAv
KipcbiAgICogRmx1c2ggYW55IGRpcnR5IGNoYW5nZXMgaW4gYSBjb21wb25lbnQuXG4gICAqXG4g
ICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGludGVybmFsSW5zdGFuY2VcbiAgICogQHBhcmFt
IHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAaW50ZXJuYWxc
biAgICovXG4gIHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeTogZnVuY3Rpb24gKGludGVybmFsSW5z
dGFuY2UsIHRyYW5zYWN0aW9uLCB1cGRhdGVCYXRjaE51bWJlcikge1xuICAgIGlmIChpbnRlcm5h
bEluc3RhbmNlLl91cGRhdGVCYXRjaE51bWJlciAhPT0gdXBkYXRlQmF0Y2hOdW1iZXIpIHtcbiAg
ICAgIC8vIFRoZSBjb21wb25lbnQncyBlbnF1ZXVlZCBiYXRjaCBudW1iZXIgc2hvdWxkIGFsd2F5
cyBiZSB0aGUgY3VycmVudFxuICAgICAgLy8gYmF0Y2ggb3IgdGhlIGZvbGxvd2luZyBvbmUuXG4g
ICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhpbnRl
cm5hbEluc3RhbmNlLl91cGRhdGVCYXRjaE51bWJlciA9PSBudWxsIHx8IGludGVybmFsSW5zdGFu
Y2UuX3VwZGF0ZUJhdGNoTnVtYmVyID09PSB1cGRhdGVCYXRjaE51bWJlciArIDEsICdwZXJmb3Jt
VXBkYXRlSWZOZWNlc3Nhcnk6IFVuZXhwZWN0ZWQgYmF0Y2ggbnVtYmVyIChjdXJyZW50ICVzLCAn
ICsgJ3BlbmRpbmcgJXMpJywgdXBkYXRlQmF0Y2hOdW1iZXIsIGludGVybmFsSW5zdGFuY2UuX3Vw
ZGF0ZUJhdGNoTnVtYmVyKSA6IHZvaWQgMDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYg
KHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChpbnRl
cm5hbEluc3RhbmNlLl9kZWJ1Z0lEICE9PSAwKSB7XG4gICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0
aW9uLmRlYnVnVG9vbC5vbkJlZm9yZVVwZGF0ZUNvbXBvbmVudChpbnRlcm5hbEluc3RhbmNlLl9k
ZWJ1Z0lELCBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudCk7XG4gICAgICB9XG4gICAg
fVxuICAgIGludGVybmFsSW5zdGFuY2UucGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5KHRyYW5zYWN0
aW9uKTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xu
ICAgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHtcbiAgICAgICAgUmVh
Y3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uVXBkYXRlQ29tcG9uZW50KGludGVybmFsSW5z
dGFuY2UuX2RlYnVnSUQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4cG9y
dHMgPSBSZWFjdFJlY29uY2lsZXI7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFD
SyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdFJlY29uY2lsZXIuanNcbiAqKiBt
b2R1bGUgaWQgPSAxNlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9hc3NpZ24gPSByZXF1
aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBSZWFjdEJhc2VDbGFzc2VzID0gcmVxdWlyZSgn
Li9SZWFjdEJhc2VDbGFzc2VzJyk7XG52YXIgUmVhY3RDaGlsZHJlbiA9IHJlcXVpcmUoJy4vUmVh
Y3RDaGlsZHJlbicpO1xudmFyIFJlYWN0RE9NRmFjdG9yaWVzID0gcmVxdWlyZSgnLi9SZWFjdERP
TUZhY3RvcmllcycpO1xudmFyIFJlYWN0RWxlbWVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50
Jyk7XG52YXIgUmVhY3RQcm9wVHlwZXMgPSByZXF1aXJlKCcuL1JlYWN0UHJvcFR5cGVzJyk7XG52
YXIgUmVhY3RWZXJzaW9uID0gcmVxdWlyZSgnLi9SZWFjdFZlcnNpb24nKTtcblxudmFyIGNyZWF0
ZVJlYWN0Q2xhc3MgPSByZXF1aXJlKCcuL2NyZWF0ZUNsYXNzJyk7XG52YXIgb25seUNoaWxkID0g
cmVxdWlyZSgnLi9vbmx5Q2hpbGQnKTtcblxudmFyIGNyZWF0ZUVsZW1lbnQgPSBSZWFjdEVsZW1l
bnQuY3JlYXRlRWxlbWVudDtcbnZhciBjcmVhdGVGYWN0b3J5ID0gUmVhY3RFbGVtZW50LmNyZWF0
ZUZhY3Rvcnk7XG52YXIgY2xvbmVFbGVtZW50ID0gUmVhY3RFbGVtZW50LmNsb25lRWxlbWVudDtc
blxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIGxv
d1ByaW9yaXR5V2FybmluZyA9IHJlcXVpcmUoJy4vbG93UHJpb3JpdHlXYXJuaW5nJyk7XG4gIHZh
ciBjYW5EZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vY2FuRGVmaW5lUHJvcGVydHknKTtcbiAg
dmFyIFJlYWN0RWxlbWVudFZhbGlkYXRvciA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50VmFsaWRh
dG9yJyk7XG4gIHZhciBkaWRXYXJuUHJvcFR5cGVzRGVwcmVjYXRlZCA9IGZhbHNlO1xuICBjcmVh
dGVFbGVtZW50ID0gUmVhY3RFbGVtZW50VmFsaWRhdG9yLmNyZWF0ZUVsZW1lbnQ7XG4gIGNyZWF0
ZUZhY3RvcnkgPSBSZWFjdEVsZW1lbnRWYWxpZGF0b3IuY3JlYXRlRmFjdG9yeTtcbiAgY2xvbmVF
bGVtZW50ID0gUmVhY3RFbGVtZW50VmFsaWRhdG9yLmNsb25lRWxlbWVudDtcbn1cblxudmFyIF9f
c3ByZWFkID0gX2Fzc2lnbjtcbnZhciBjcmVhdGVNaXhpbiA9IGZ1bmN0aW9uIChtaXhpbikge1xu
ICByZXR1cm4gbWl4aW47XG59O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJykge1xuICB2YXIgd2FybmVkRm9yU3ByZWFkID0gZmFsc2U7XG4gIHZhciB3YXJuZWRG
b3JDcmVhdGVNaXhpbiA9IGZhbHNlO1xuICBfX3NwcmVhZCA9IGZ1bmN0aW9uICgpIHtcbiAgICBs
b3dQcmlvcml0eVdhcm5pbmcod2FybmVkRm9yU3ByZWFkLCAnUmVhY3QuX19zcHJlYWQgaXMgZGVw
cmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLiBVc2UgJyArICdPYmplY3QuYXNzaWduIGRp
cmVjdGx5IG9yIGFub3RoZXIgaGVscGVyIGZ1bmN0aW9uIHdpdGggc2ltaWxhciAnICsgJ3NlbWFu
dGljcy4gWW91IG1heSBiZSBzZWVpbmcgdGhpcyB3YXJuaW5nIGR1ZSB0byB5b3VyIGNvbXBpbGVy
LiAnICsgJ1NlZSBodHRwczovL2ZiLm1lL3JlYWN0LXNwcmVhZC1kZXByZWNhdGlvbiBmb3IgbW9y
ZSBkZXRhaWxzLicpO1xuICAgIHdhcm5lZEZvclNwcmVhZCA9IHRydWU7XG4gICAgcmV0dXJuIF9h
c3NpZ24uYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgfTtcblxuICBjcmVhdGVNaXhpbiA9IGZ1
bmN0aW9uIChtaXhpbikge1xuICAgIGxvd1ByaW9yaXR5V2FybmluZyh3YXJuZWRGb3JDcmVhdGVN
aXhpbiwgJ1JlYWN0LmNyZWF0ZU1peGluIGlzIGRlcHJlY2F0ZWQgYW5kIHNob3VsZCBub3QgYmUg
dXNlZC4gJyArICdJbiBSZWFjdCB2MTYuMCwgaXQgd2lsbCBiZSByZW1vdmVkLiAnICsgJ1lvdSBj
YW4gdXNlIHRoaXMgbWl4aW4gZGlyZWN0bHkgaW5zdGVhZC4gJyArICdTZWUgaHR0cHM6Ly9mYi5t
ZS9jcmVhdGVtaXhpbi13YXMtbmV2ZXItaW1wbGVtZW50ZWQgZm9yIG1vcmUgaW5mby4nKTtcbiAg
ICB3YXJuZWRGb3JDcmVhdGVNaXhpbiA9IHRydWU7XG4gICAgcmV0dXJuIG1peGluO1xuICB9O1xu
fVxuXG52YXIgUmVhY3QgPSB7XG4gIC8vIE1vZGVyblxuXG4gIENoaWxkcmVuOiB7XG4gICAgbWFw
OiBSZWFjdENoaWxkcmVuLm1hcCxcbiAgICBmb3JFYWNoOiBSZWFjdENoaWxkcmVuLmZvckVhY2gs
XG4gICAgY291bnQ6IFJlYWN0Q2hpbGRyZW4uY291bnQsXG4gICAgdG9BcnJheTogUmVhY3RDaGls
ZHJlbi50b0FycmF5LFxuICAgIG9ubHk6IG9ubHlDaGlsZFxuICB9LFxuXG4gIENvbXBvbmVudDog
UmVhY3RCYXNlQ2xhc3Nlcy5Db21wb25lbnQsXG4gIFB1cmVDb21wb25lbnQ6IFJlYWN0QmFzZUNs
YXNzZXMuUHVyZUNvbXBvbmVudCxcblxuICBjcmVhdGVFbGVtZW50OiBjcmVhdGVFbGVtZW50LFxu
ICBjbG9uZUVsZW1lbnQ6IGNsb25lRWxlbWVudCxcbiAgaXNWYWxpZEVsZW1lbnQ6IFJlYWN0RWxl
bWVudC5pc1ZhbGlkRWxlbWVudCxcblxuICAvLyBDbGFzc2ljXG5cbiAgUHJvcFR5cGVzOiBSZWFj
dFByb3BUeXBlcyxcbiAgY3JlYXRlQ2xhc3M6IGNyZWF0ZVJlYWN0Q2xhc3MsXG4gIGNyZWF0ZUZh
Y3Rvcnk6IGNyZWF0ZUZhY3RvcnksXG4gIGNyZWF0ZU1peGluOiBjcmVhdGVNaXhpbixcblxuICAv
LyBUaGlzIGxvb2tzIERPTSBzcGVjaWZpYyBidXQgdGhlc2UgYXJlIGFjdHVhbGx5IGlzb21vcnBo
aWMgaGVscGVyc1xuICAvLyBzaW5jZSB0aGV5IGFyZSBqdXN0IGdlbmVyYXRpbmcgRE9NIHN0cmlu
Z3MuXG4gIERPTTogUmVhY3RET01GYWN0b3JpZXMsXG5cbiAgdmVyc2lvbjogUmVhY3RWZXJzaW9u
LFxuXG4gIC8vIERlcHJlY2F0ZWQgaG9vayBmb3IgSlNYIHNwcmVhZCwgZG9uJ3QgdXNlIHRoaXMg
Zm9yIGFueXRoaW5nLlxuICBfX3NwcmVhZDogX19zcHJlYWRcbn07XG5cbmlmIChwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciB3YXJuZWRGb3JDcmVhdGVDbGFz
cyA9IGZhbHNlO1xuICBpZiAoY2FuRGVmaW5lUHJvcGVydHkpIHtcbiAgICBPYmplY3QuZGVmaW5l
UHJvcGVydHkoUmVhY3QsICdQcm9wVHlwZXMnLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtc
biAgICAgICAgbG93UHJpb3JpdHlXYXJuaW5nKGRpZFdhcm5Qcm9wVHlwZXNEZXByZWNhdGVkLCAn
QWNjZXNzaW5nIFByb3BUeXBlcyB2aWEgdGhlIG1haW4gUmVhY3QgcGFja2FnZSBpcyBkZXByZWNh
dGVkLCcgKyAnIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gIFJlYWN0IHYxNi4wLicgKyAnIFVzZSB0
aGUgbGF0ZXN0IGF2YWlsYWJsZSB2MTUuKiBwcm9wLXR5cGVzIHBhY2thZ2UgZnJvbSBucG0gaW5z
dGVhZC4nICsgJyBGb3IgaW5mbyBvbiB1c2FnZSwgY29tcGF0aWJpbGl0eSwgbWlncmF0aW9uIGFu
ZCBtb3JlLCBzZWUgJyArICdodHRwczovL2ZiLm1lL3Byb3AtdHlwZXMtZG9jcycpO1xuICAgICAg
ICBkaWRXYXJuUHJvcFR5cGVzRGVwcmVjYXRlZCA9IHRydWU7XG4gICAgICAgIHJldHVybiBSZWFj
dFByb3BUeXBlcztcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0
eShSZWFjdCwgJ2NyZWF0ZUNsYXNzJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAg
ICAgIGxvd1ByaW9yaXR5V2FybmluZyh3YXJuZWRGb3JDcmVhdGVDbGFzcywgJ0FjY2Vzc2luZyBj
cmVhdGVDbGFzcyB2aWEgdGhlIG1haW4gUmVhY3QgcGFja2FnZSBpcyBkZXByZWNhdGVkLCcgKyAn
IGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gUmVhY3QgdjE2LjAuJyArIFwiIFVzZSBhIHBsYWluIEph
dmFTY3JpcHQgY2xhc3MgaW5zdGVhZC4gSWYgeW91J3JlIG5vdCB5ZXQgXCIgKyAncmVhZHkgdG8g
bWlncmF0ZSwgY3JlYXRlLXJlYWN0LWNsYXNzIHYxNS4qIGlzIGF2YWlsYWJsZSAnICsgJ29uIG5w
bSBhcyBhIHRlbXBvcmFyeSwgZHJvcC1pbiByZXBsYWNlbWVudC4gJyArICdGb3IgbW9yZSBpbmZv
IHNlZSBodHRwczovL2ZiLm1lL3JlYWN0LWNyZWF0ZS1jbGFzcycpO1xuICAgICAgICB3YXJuZWRG
b3JDcmVhdGVDbGFzcyA9IHRydWU7XG4gICAgICAgIHJldHVybiBjcmVhdGVSZWFjdENsYXNzO1xu
ICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgLy8gUmVhY3QuRE9NIGZhY3RvcmllcyBhcmUgZGVw
cmVjYXRlZC4gV3JhcCB0aGVzZSBtZXRob2RzIHNvIHRoYXRcbiAgLy8gaW52b2NhdGlvbnMgb2Yg
dGhlIFJlYWN0LkRPTSBuYW1lc3BhY2UgYW5kIGFsZXJ0IHVzZXJzIHRvIHN3aXRjaFxuICAvLyB0
byB0aGUgYHJlYWN0LWRvbS1mYWN0b3JpZXNgIHBhY2thZ2UuXG4gIFJlYWN0LkRPTSA9IHt9O1xu
ICB2YXIgd2FybmVkRm9yRmFjdG9yaWVzID0gZmFsc2U7XG4gIE9iamVjdC5rZXlzKFJlYWN0RE9N
RmFjdG9yaWVzKS5mb3JFYWNoKGZ1bmN0aW9uIChmYWN0b3J5KSB7XG4gICAgUmVhY3QuRE9NW2Zh
Y3RvcnldID0gZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCF3YXJuZWRGb3JGYWN0b3JpZXMpIHtc
biAgICAgICAgbG93UHJpb3JpdHlXYXJuaW5nKGZhbHNlLCAnQWNjZXNzaW5nIGZhY3RvcmllcyBs
aWtlIFJlYWN0LkRPTS4lcyBoYXMgYmVlbiBkZXByZWNhdGVkICcgKyAnYW5kIHdpbGwgYmUgcmVt
b3ZlZCBpbiB2MTYuMCsuIFVzZSB0aGUgJyArICdyZWFjdC1kb20tZmFjdG9yaWVzIHBhY2thZ2Ug
aW5zdGVhZC4gJyArICcgVmVyc2lvbiAxLjAgcHJvdmlkZXMgYSBkcm9wLWluIHJlcGxhY2VtZW50
LicgKyAnIEZvciBtb3JlIGluZm8sIHNlZSBodHRwczovL2ZiLm1lL3JlYWN0LWRvbS1mYWN0b3Jp
ZXMnLCBmYWN0b3J5KTtcbiAgICAgICAgd2FybmVkRm9yRmFjdG9yaWVzID0gdHJ1ZTtcbiAgICAg
IH1cbiAgICAgIHJldHVybiBSZWFjdERPTUZhY3Rvcmllc1tmYWN0b3J5XS5hcHBseShSZWFjdERP
TUZhY3RvcmllcywgYXJndW1lbnRzKTtcbiAgICB9O1xuICB9KTtcbn1cblxubW9kdWxlLmV4cG9y
dHMgPSBSZWFjdDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxu
ICoqIC4vfi9yZWFjdC9saWIvUmVhY3QuanNcbiAqKiBtb2R1bGUgaWQgPSAxN1xuICoqIG1vZHVs
ZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
biAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1
c2Ugc3RyaWN0JztcblxudmFyIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7XG5c
bnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHJlcXVpcmUoJy4vUmVhY3RDdXJyZW50T3duZXInKTtc
blxudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG52YXIgY2FuRGVm
aW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL2NhbkRlZmluZVByb3BlcnR5Jyk7XG52YXIgaGFzT3du
UHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG52YXIgUkVBQ1Rf
RUxFTUVOVF9UWVBFID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnRTeW1ib2wnKTtcblxudmFyIFJF
U0VSVkVEX1BST1BTID0ge1xuICBrZXk6IHRydWUsXG4gIHJlZjogdHJ1ZSxcbiAgX19zZWxmOiB0
cnVlLFxuICBfX3NvdXJjZTogdHJ1ZVxufTtcblxudmFyIHNwZWNpYWxQcm9wS2V5V2FybmluZ1No
b3duLCBzcGVjaWFsUHJvcFJlZldhcm5pbmdTaG93bjtcblxuZnVuY3Rpb24gaGFzVmFsaWRSZWYo
Y29uZmlnKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
XG4gICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCAncmVmJykpIHtcbiAgICAgIHZh
ciBnZXR0ZXIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbmZpZywgJ3JlZicp
LmdldDtcbiAgICAgIGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nKSB7XG4gICAg
ICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNvbmZpZy5y
ZWYgIT09IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gaGFzVmFsaWRLZXkoY29uZmlnKSB7XG4g
IGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKGhh
c093blByb3BlcnR5LmNhbGwoY29uZmlnLCAna2V5JykpIHtcbiAgICAgIHZhciBnZXR0ZXIgPSBP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGNvbmZpZywgJ2tleScpLmdldDtcbiAgICAg
IGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nKSB7XG4gICAgICAgIHJldHVybiBm
YWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNvbmZpZy5rZXkgIT09IHVuZGVm
aW5lZDtcbn1cblxuZnVuY3Rpb24gZGVmaW5lS2V5UHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMsIGRp
c3BsYXlOYW1lKSB7XG4gIHZhciB3YXJuQWJvdXRBY2Nlc3NpbmdLZXkgPSBmdW5jdGlvbiAoKSB7
XG4gICAgaWYgKCFzcGVjaWFsUHJvcEtleVdhcm5pbmdTaG93bikge1xuICAgICAgc3BlY2lhbFBy
b3BLZXlXYXJuaW5nU2hvd24gPSB0cnVlO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclczogYGtleWAgaXMgbm90IGEgcHJvcC4g
VHJ5aW5nIHRvIGFjY2VzcyBpdCB3aWxsIHJlc3VsdCAnICsgJ2luIGB1bmRlZmluZWRgIGJlaW5n
IHJldHVybmVkLiBJZiB5b3UgbmVlZCB0byBhY2Nlc3MgdGhlIHNhbWUgJyArICd2YWx1ZSB3aXRo
aW4gdGhlIGNoaWxkIGNvbXBvbmVudCwgeW91IHNob3VsZCBwYXNzIGl0IGFzIGEgZGlmZmVyZW50
ICcgKyAncHJvcC4gKGh0dHBzOi8vZmIubWUvcmVhY3Qtc3BlY2lhbC1wcm9wcyknLCBkaXNwbGF5
TmFtZSkgOiB2b2lkIDA7XG4gICAgfVxuICB9O1xuICB3YXJuQWJvdXRBY2Nlc3NpbmdLZXkuaXNS
ZWFjdFdhcm5pbmcgPSB0cnVlO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkocHJvcHMsICdrZXkn
LCB7XG4gICAgZ2V0OiB3YXJuQWJvdXRBY2Nlc3NpbmdLZXksXG4gICAgY29uZmlndXJhYmxlOiB0
cnVlXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBkZWZpbmVSZWZQcm9wV2FybmluZ0dldHRlcihwcm9w
cywgZGlzcGxheU5hbWUpIHtcbiAgdmFyIHdhcm5BYm91dEFjY2Vzc2luZ1JlZiA9IGZ1bmN0aW9u
ICgpIHtcbiAgICBpZiAoIXNwZWNpYWxQcm9wUmVmV2FybmluZ1Nob3duKSB7XG4gICAgICBzcGVj
aWFsUHJvcFJlZldhcm5pbmdTaG93biA9IHRydWU7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzOiBgcmVmYCBpcyBub3QgYSBw
cm9wLiBUcnlpbmcgdG8gYWNjZXNzIGl0IHdpbGwgcmVzdWx0ICcgKyAnaW4gYHVuZGVmaW5lZGAg
YmVpbmcgcmV0dXJuZWQuIElmIHlvdSBuZWVkIHRvIGFjY2VzcyB0aGUgc2FtZSAnICsgJ3ZhbHVl
IHdpdGhpbiB0aGUgY2hpbGQgY29tcG9uZW50LCB5b3Ugc2hvdWxkIHBhc3MgaXQgYXMgYSBkaWZm
ZXJlbnQgJyArICdwcm9wLiAoaHR0cHM6Ly9mYi5tZS9yZWFjdC1zcGVjaWFsLXByb3BzKScsIGRp
c3BsYXlOYW1lKSA6IHZvaWQgMDtcbiAgICB9XG4gIH07XG4gIHdhcm5BYm91dEFjY2Vzc2luZ1Jl
Zi5pc1JlYWN0V2FybmluZyA9IHRydWU7XG4gIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9wcywg
J3JlZicsIHtcbiAgICBnZXQ6IHdhcm5BYm91dEFjY2Vzc2luZ1JlZixcbiAgICBjb25maWd1cmFi
bGU6IHRydWVcbiAgfSk7XG59XG5cbi8qKlxuICogRmFjdG9yeSBtZXRob2QgdG8gY3JlYXRlIGEg
bmV3IFJlYWN0IGVsZW1lbnQuIFRoaXMgbm8gbG9uZ2VyIGFkaGVyZXMgdG9cbiAqIHRoZSBjbGFz
cyBwYXR0ZXJuLCBzbyBkbyBub3QgdXNlIG5ldyB0byBjYWxsIGl0LiBBbHNvLCBubyBpbnN0YW5j
ZW9mIGNoZWNrXG4gKiB3aWxsIHdvcmsuIEluc3RlYWQgdGVzdCAkJHR5cGVvZiBmaWVsZCBhZ2Fp
bnN0IFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1lbnQnKSB0byBjaGVja1xuICogaWYgc29tZXRoaW5n
IGlzIGEgUmVhY3QgRWxlbWVudC5cbiAqXG4gKiBAcGFyYW0geyp9IHR5cGVcbiAqIEBwYXJhbSB7
Kn0ga2V5XG4gKiBAcGFyYW0ge3N0cmluZ3xvYmplY3R9IHJlZlxuICogQHBhcmFtIHsqfSBzZWxm
IEEgKnRlbXBvcmFyeSogaGVscGVyIHRvIGRldGVjdCBwbGFjZXMgd2hlcmUgYHRoaXNgIGlzXG4g
KiBkaWZmZXJlbnQgZnJvbSB0aGUgYG93bmVyYCB3aGVuIFJlYWN0LmNyZWF0ZUVsZW1lbnQgaXMg
Y2FsbGVkLCBzbyB0aGF0IHdlXG4gKiBjYW4gd2Fybi4gV2Ugd2FudCB0byBnZXQgcmlkIG9mIG93
bmVyIGFuZCByZXBsYWNlIHN0cmluZyBgcmVmYHMgd2l0aCBhcnJvd1xuICogZnVuY3Rpb25zLCBh
bmQgYXMgbG9uZyBhcyBgdGhpc2AgYW5kIG93bmVyIGFyZSB0aGUgc2FtZSwgdGhlcmUgd2lsbCBi
ZSBub1xuICogY2hhbmdlIGluIGJlaGF2aW9yLlxuICogQHBhcmFtIHsqfSBzb3VyY2UgQW4gYW5u
b3RhdGlvbiBvYmplY3QgKGFkZGVkIGJ5IGEgdHJhbnNwaWxlciBvciBvdGhlcndpc2UpXG4gKiBp
bmRpY2F0aW5nIGZpbGVuYW1lLCBsaW5lIG51bWJlciwgYW5kL29yIG90aGVyIGluZm9ybWF0aW9u
LlxuICogQHBhcmFtIHsqfSBvd25lclxuICogQHBhcmFtIHsqfSBwcm9wc1xuICogQGludGVybmFs
XG4gKi9cbnZhciBSZWFjdEVsZW1lbnQgPSBmdW5jdGlvbiAodHlwZSwga2V5LCByZWYsIHNlbGYs
IHNvdXJjZSwgb3duZXIsIHByb3BzKSB7XG4gIHZhciBlbGVtZW50ID0ge1xuICAgIC8vIFRoaXMg
dGFnIGFsbG93IHVzIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IHRoaXMgYXMgYSBSZWFjdCBFbGVtZW50
XG4gICAgJCR0eXBlb2Y6IFJFQUNUX0VMRU1FTlRfVFlQRSxcblxuICAgIC8vIEJ1aWx0LWluIHBy
b3BlcnRpZXMgdGhhdCBiZWxvbmcgb24gdGhlIGVsZW1lbnRcbiAgICB0eXBlOiB0eXBlLFxuICAg
IGtleToga2V5LFxuICAgIHJlZjogcmVmLFxuICAgIHByb3BzOiBwcm9wcyxcblxuICAgIC8vIFJl
Y29yZCB0aGUgY29tcG9uZW50IHJlc3BvbnNpYmxlIGZvciBjcmVhdGluZyB0aGlzIGVsZW1lbnQu
XG4gICAgX293bmVyOiBvd25lclxuICB9O1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgLy8gVGhlIHZhbGlkYXRpb24gZmxhZyBpcyBjdXJyZW50
bHkgbXV0YXRpdmUuIFdlIHB1dCBpdCBvblxuICAgIC8vIGFuIGV4dGVybmFsIGJhY2tpbmcgc3Rv
cmUgc28gdGhhdCB3ZSBjYW4gZnJlZXplIHRoZSB3aG9sZSBvYmplY3QuXG4gICAgLy8gVGhpcyBj
YW4gYmUgcmVwbGFjZWQgd2l0aCBhIFdlYWtNYXAgb25jZSB0aGV5IGFyZSBpbXBsZW1lbnRlZCBp
blxuICAgIC8vIGNvbW1vbmx5IHVzZWQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzLlxuICAgIGVs
ZW1lbnQuX3N0b3JlID0ge307XG5cbiAgICAvLyBUbyBtYWtlIGNvbXBhcmluZyBSZWFjdEVsZW1l
bnRzIGVhc2llciBmb3IgdGVzdGluZyBwdXJwb3Nlcywgd2UgbWFrZVxuICAgIC8vIHRoZSB2YWxp
ZGF0aW9uIGZsYWcgbm9uLWVudW1lcmFibGUgKHdoZXJlIHBvc3NpYmxlLCB3aGljaCBzaG91bGRc
biAgICAvLyBpbmNsdWRlIGV2ZXJ5IGVudmlyb25tZW50IHdlIHJ1biB0ZXN0cyBpbiksIHNvIHRo
ZSB0ZXN0IGZyYW1ld29ya1xuICAgIC8vIGlnbm9yZXMgaXQuXG4gICAgaWYgKGNhbkRlZmluZVBy
b3BlcnR5KSB7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudC5fc3RvcmUsICd2
YWxpZGF0ZWQnLCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgIGVudW1l
cmFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IGZh
bHNlXG4gICAgICB9KTtcbiAgICAgIC8vIHNlbGYgYW5kIHNvdXJjZSBhcmUgREVWIG9ubHkgcHJv
cGVydGllcy5cbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LCAnX3NlbGYnLCB7
XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNl
LFxuICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgIHZhbHVlOiBzZWxmXG4gICAgICB9
KTtcbiAgICAgIC8vIFR3byBlbGVtZW50cyBjcmVhdGVkIGluIHR3byBkaWZmZXJlbnQgcGxhY2Vz
IHNob3VsZCBiZSBjb25zaWRlcmVkXG4gICAgICAvLyBlcXVhbCBmb3IgdGVzdGluZyBwdXJwb3Nl
cyBhbmQgdGhlcmVmb3JlIHdlIGhpZGUgaXQgZnJvbSBlbnVtZXJhdGlvbi5cbiAgICAgIE9iamVj
dC5kZWZpbmVQcm9wZXJ0eShlbGVtZW50LCAnX3NvdXJjZScsIHtcbiAgICAgICAgY29uZmlndXJh
YmxlOiBmYWxzZSxcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIHdyaXRhYmxl
OiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IHNvdXJjZVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtc
biAgICAgIGVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCA9IGZhbHNlO1xuICAgICAgZWxlbWVudC5f
c2VsZiA9IHNlbGY7XG4gICAgICBlbGVtZW50Ll9zb3VyY2UgPSBzb3VyY2U7XG4gICAgfVxuICAg
IGlmIChPYmplY3QuZnJlZXplKSB7XG4gICAgICBPYmplY3QuZnJlZXplKGVsZW1lbnQucHJvcHMp
O1xuICAgICAgT2JqZWN0LmZyZWV6ZShlbGVtZW50KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4g
ZWxlbWVudDtcbn07XG5cbi8qKlxuICogQ3JlYXRlIGFuZCByZXR1cm4gYSBuZXcgUmVhY3RFbGVt
ZW50IG9mIHRoZSBnaXZlbiB0eXBlLlxuICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlv
L3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNyZWF0ZWVsZW1lbnRcbiAqL1xu
UmVhY3RFbGVtZW50LmNyZWF0ZUVsZW1lbnQgPSBmdW5jdGlvbiAodHlwZSwgY29uZmlnLCBjaGls
ZHJlbikge1xuICB2YXIgcHJvcE5hbWU7XG5cbiAgLy8gUmVzZXJ2ZWQgbmFtZXMgYXJlIGV4dHJh
Y3RlZFxuICB2YXIgcHJvcHMgPSB7fTtcblxuICB2YXIga2V5ID0gbnVsbDtcbiAgdmFyIHJlZiA9
IG51bGw7XG4gIHZhciBzZWxmID0gbnVsbDtcbiAgdmFyIHNvdXJjZSA9IG51bGw7XG5cbiAgaWYg
KGNvbmZpZyAhPSBudWxsKSB7XG4gICAgaWYgKGhhc1ZhbGlkUmVmKGNvbmZpZykpIHtcbiAgICAg
IHJlZiA9IGNvbmZpZy5yZWY7XG4gICAgfVxuICAgIGlmIChoYXNWYWxpZEtleShjb25maWcpKSB7
XG4gICAgICBrZXkgPSAnJyArIGNvbmZpZy5rZXk7XG4gICAgfVxuXG4gICAgc2VsZiA9IGNvbmZp
Zy5fX3NlbGYgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBjb25maWcuX19zZWxmO1xuICAgIHNvdXJj
ZSA9IGNvbmZpZy5fX3NvdXJjZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGNvbmZpZy5fX3NvdXJj
ZTtcbiAgICAvLyBSZW1haW5pbmcgcHJvcGVydGllcyBhcmUgYWRkZWQgdG8gYSBuZXcgcHJvcHMg
b2JqZWN0XG4gICAgZm9yIChwcm9wTmFtZSBpbiBjb25maWcpIHtcbiAgICAgIGlmIChoYXNPd25Q
cm9wZXJ0eS5jYWxsKGNvbmZpZywgcHJvcE5hbWUpICYmICFSRVNFUlZFRF9QUk9QUy5oYXNPd25Q
cm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gY29uZmlnW3By
b3BOYW1lXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBDaGlsZHJlbiBjYW4gYmUgbW9y
ZSB0aGFuIG9uZSBhcmd1bWVudCwgYW5kIHRob3NlIGFyZSB0cmFuc2ZlcnJlZCBvbnRvXG4gIC8v
IHRoZSBuZXdseSBhbGxvY2F0ZWQgcHJvcHMgb2JqZWN0LlxuICB2YXIgY2hpbGRyZW5MZW5ndGgg
PSBhcmd1bWVudHMubGVuZ3RoIC0gMjtcbiAgaWYgKGNoaWxkcmVuTGVuZ3RoID09PSAxKSB7XG4g
ICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgfSBlbHNlIGlmIChjaGlsZHJlbkxlbmd0
aCA+IDEpIHtcbiAgICB2YXIgY2hpbGRBcnJheSA9IEFycmF5KGNoaWxkcmVuTGVuZ3RoKTtcbiAg
ICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuTGVuZ3RoOyBpKyspIHtcbiAgICAgIGNoaWxk
QXJyYXlbaV0gPSBhcmd1bWVudHNbaSArIDJdO1xuICAgIH1cbiAgICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKE9iamVjdC5mcmVlemUpIHtc
biAgICAgICAgT2JqZWN0LmZyZWV6ZShjaGlsZEFycmF5KTtcbiAgICAgIH1cbiAgICB9XG4gICAg
cHJvcHMuY2hpbGRyZW4gPSBjaGlsZEFycmF5O1xuICB9XG5cbiAgLy8gUmVzb2x2ZSBkZWZhdWx0
IHByb3BzXG4gIGlmICh0eXBlICYmIHR5cGUuZGVmYXVsdFByb3BzKSB7XG4gICAgdmFyIGRlZmF1
bHRQcm9wcyA9IHR5cGUuZGVmYXVsdFByb3BzO1xuICAgIGZvciAocHJvcE5hbWUgaW4gZGVmYXVs
dFByb3BzKSB7XG4gICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09PSB1bmRlZmluZWQpIHtcbiAg
ICAgICAgcHJvcHNbcHJvcE5hbWVdID0gZGVmYXVsdFByb3BzW3Byb3BOYW1lXTtcbiAgICAgIH1c
biAgICB9XG4gIH1cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicp
IHtcbiAgICBpZiAoa2V5IHx8IHJlZikge1xuICAgICAgaWYgKHR5cGVvZiBwcm9wcy4kJHR5cGVv
ZiA9PT0gJ3VuZGVmaW5lZCcgfHwgcHJvcHMuJCR0eXBlb2YgIT09IFJFQUNUX0VMRU1FTlRfVFlQ
RSkge1xuICAgICAgICB2YXIgZGlzcGxheU5hbWUgPSB0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9u
JyA/IHR5cGUuZGlzcGxheU5hbWUgfHwgdHlwZS5uYW1lIHx8ICdVbmtub3duJyA6IHR5cGU7XG4g
ICAgICAgIGlmIChrZXkpIHtcbiAgICAgICAgICBkZWZpbmVLZXlQcm9wV2FybmluZ0dldHRlcihw
cm9wcywgZGlzcGxheU5hbWUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChyZWYpIHtcbiAgICAg
ICAgICBkZWZpbmVSZWZQcm9wV2FybmluZ0dldHRlcihwcm9wcywgZGlzcGxheU5hbWUpO1xuICAg
ICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBSZWFjdEVsZW1lbnQodHlwZSwg
a2V5LCByZWYsIHNlbGYsIHNvdXJjZSwgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCwgcHJvcHMp
O1xufTtcblxuLyoqXG4gKiBSZXR1cm4gYSBmdW5jdGlvbiB0aGF0IHByb2R1Y2VzIFJlYWN0RWxl
bWVudHMgb2YgYSBnaXZlbiB0eXBlLlxuICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlv
L3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNyZWF0ZWZhY3RvcnlcbiAqL1xu
UmVhY3RFbGVtZW50LmNyZWF0ZUZhY3RvcnkgPSBmdW5jdGlvbiAodHlwZSkge1xuICB2YXIgZmFj
dG9yeSA9IFJlYWN0RWxlbWVudC5jcmVhdGVFbGVtZW50LmJpbmQobnVsbCwgdHlwZSk7XG4gIC8v
IEV4cG9zZSB0aGUgdHlwZSBvbiB0aGUgZmFjdG9yeSBhbmQgdGhlIHByb3RvdHlwZSBzbyB0aGF0
IGl0IGNhbiBiZVxuICAvLyBlYXNpbHkgYWNjZXNzZWQgb24gZWxlbWVudHMuIEUuZy4gYDxGb28g
Lz4udHlwZSA9PT0gRm9vYC5cbiAgLy8gVGhpcyBzaG91bGQgbm90IGJlIG5hbWVkIGBjb25zdHJ1
Y3RvcmAgc2luY2UgdGhpcyBtYXkgbm90IGJlIHRoZSBmdW5jdGlvblxuICAvLyB0aGF0IGNyZWF0
ZWQgdGhlIGVsZW1lbnQsIGFuZCBpdCBtYXkgbm90IGV2ZW4gYmUgYSBjb25zdHJ1Y3Rvci5cbiAg
Ly8gTGVnYWN5IGhvb2sgVE9ETzogV2FybiBpZiB0aGlzIGlzIGFjY2Vzc2VkXG4gIGZhY3Rvcnku
dHlwZSA9IHR5cGU7XG4gIHJldHVybiBmYWN0b3J5O1xufTtcblxuUmVhY3RFbGVtZW50LmNsb25l
QW5kUmVwbGFjZUtleSA9IGZ1bmN0aW9uIChvbGRFbGVtZW50LCBuZXdLZXkpIHtcbiAgdmFyIG5l
d0VsZW1lbnQgPSBSZWFjdEVsZW1lbnQob2xkRWxlbWVudC50eXBlLCBuZXdLZXksIG9sZEVsZW1l
bnQucmVmLCBvbGRFbGVtZW50Ll9zZWxmLCBvbGRFbGVtZW50Ll9zb3VyY2UsIG9sZEVsZW1lbnQu
X293bmVyLCBvbGRFbGVtZW50LnByb3BzKTtcblxuICByZXR1cm4gbmV3RWxlbWVudDtcbn07XG5c
bi8qKlxuICogQ2xvbmUgYW5kIHJldHVybiBhIG5ldyBSZWFjdEVsZW1lbnQgdXNpbmcgZWxlbWVu
dCBhcyB0aGUgc3RhcnRpbmcgcG9pbnQuXG4gKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIu
aW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY2xvbmVlbGVtZW50XG4gKi9c
blJlYWN0RWxlbWVudC5jbG9uZUVsZW1lbnQgPSBmdW5jdGlvbiAoZWxlbWVudCwgY29uZmlnLCBj
aGlsZHJlbikge1xuICB2YXIgcHJvcE5hbWU7XG5cbiAgLy8gT3JpZ2luYWwgcHJvcHMgYXJlIGNv
cGllZFxuICB2YXIgcHJvcHMgPSBfYXNzaWduKHt9LCBlbGVtZW50LnByb3BzKTtcblxuICAvLyBS
ZXNlcnZlZCBuYW1lcyBhcmUgZXh0cmFjdGVkXG4gIHZhciBrZXkgPSBlbGVtZW50LmtleTtcbiAg
dmFyIHJlZiA9IGVsZW1lbnQucmVmO1xuICAvLyBTZWxmIGlzIHByZXNlcnZlZCBzaW5jZSB0aGUg
b3duZXIgaXMgcHJlc2VydmVkLlxuICB2YXIgc2VsZiA9IGVsZW1lbnQuX3NlbGY7XG4gIC8vIFNv
dXJjZSBpcyBwcmVzZXJ2ZWQgc2luY2UgY2xvbmVFbGVtZW50IGlzIHVubGlrZWx5IHRvIGJlIHRh
cmdldGVkIGJ5IGFcbiAgLy8gdHJhbnNwaWxlciwgYW5kIHRoZSBvcmlnaW5hbCBzb3VyY2UgaXMg
cHJvYmFibHkgYSBiZXR0ZXIgaW5kaWNhdG9yIG9mIHRoZVxuICAvLyB0cnVlIG93bmVyLlxuICB2
YXIgc291cmNlID0gZWxlbWVudC5fc291cmNlO1xuXG4gIC8vIE93bmVyIHdpbGwgYmUgcHJlc2Vy
dmVkLCB1bmxlc3MgcmVmIGlzIG92ZXJyaWRkZW5cbiAgdmFyIG93bmVyID0gZWxlbWVudC5fb3du
ZXI7XG5cbiAgaWYgKGNvbmZpZyAhPSBudWxsKSB7XG4gICAgaWYgKGhhc1ZhbGlkUmVmKGNvbmZp
ZykpIHtcbiAgICAgIC8vIFNpbGVudGx5IHN0ZWFsIHRoZSByZWYgZnJvbSB0aGUgcGFyZW50Llxu
ICAgICAgcmVmID0gY29uZmlnLnJlZjtcbiAgICAgIG93bmVyID0gUmVhY3RDdXJyZW50T3duZXIu
Y3VycmVudDtcbiAgICB9XG4gICAgaWYgKGhhc1ZhbGlkS2V5KGNvbmZpZykpIHtcbiAgICAgIGtl
eSA9ICcnICsgY29uZmlnLmtleTtcbiAgICB9XG5cbiAgICAvLyBSZW1haW5pbmcgcHJvcGVydGll
cyBvdmVycmlkZSBleGlzdGluZyBwcm9wc1xuICAgIHZhciBkZWZhdWx0UHJvcHM7XG4gICAgaWYg
KGVsZW1lbnQudHlwZSAmJiBlbGVtZW50LnR5cGUuZGVmYXVsdFByb3BzKSB7XG4gICAgICBkZWZh
dWx0UHJvcHMgPSBlbGVtZW50LnR5cGUuZGVmYXVsdFByb3BzO1xuICAgIH1cbiAgICBmb3IgKHBy
b3BOYW1lIGluIGNvbmZpZykge1xuICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmln
LCBwcm9wTmFtZSkgJiYgIVJFU0VSVkVEX1BST1BTLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkg
e1xuICAgICAgICBpZiAoY29uZmlnW3Byb3BOYW1lXSA9PT0gdW5kZWZpbmVkICYmIGRlZmF1bHRQ
cm9wcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgLy8gUmVzb2x2ZSBkZWZhdWx0IHByb3Bz
XG4gICAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gZGVmYXVsdFByb3BzW3Byb3BOYW1lXTtcbiAg
ICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBjb25maWdbcHJvcE5h
bWVdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gQ2hpbGRyZW4gY2Fu
IGJlIG1vcmUgdGhhbiBvbmUgYXJndW1lbnQsIGFuZCB0aG9zZSBhcmUgdHJhbnNmZXJyZWQgb250
b1xuICAvLyB0aGUgbmV3bHkgYWxsb2NhdGVkIHByb3BzIG9iamVjdC5cbiAgdmFyIGNoaWxkcmVu
TGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7XG4gIGlmIChjaGlsZHJlbkxlbmd0aCA9PT0g
MSkge1xuICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gIH0gZWxzZSBpZiAoY2hpbGRy
ZW5MZW5ndGggPiAxKSB7XG4gICAgdmFyIGNoaWxkQXJyYXkgPSBBcnJheShjaGlsZHJlbkxlbmd0
aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbkxlbmd0aDsgaSsrKSB7XG4gICAg
ICBjaGlsZEFycmF5W2ldID0gYXJndW1lbnRzW2kgKyAyXTtcbiAgICB9XG4gICAgcHJvcHMuY2hp
bGRyZW4gPSBjaGlsZEFycmF5O1xuICB9XG5cbiAgcmV0dXJuIFJlYWN0RWxlbWVudChlbGVtZW50
LnR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIG93bmVyLCBwcm9wcyk7XG59O1xuXG4vKipc
biAqIFZlcmlmaWVzIHRoZSBvYmplY3QgaXMgYSBSZWFjdEVsZW1lbnQuXG4gKiBTZWUgaHR0cHM6
Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3Qu
aXN2YWxpZGVsZW1lbnRcbiAqIEBwYXJhbSB7P29iamVjdH0gb2JqZWN0XG4gKiBAcmV0dXJuIHti
b29sZWFufSBUcnVlIGlmIGBvYmplY3RgIGlzIGEgdmFsaWQgY29tcG9uZW50LlxuICogQGZpbmFs
XG4gKi9cblJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudCA9IGZ1bmN0aW9uIChvYmplY3QpIHtc
biAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmIG9iamVjdCAhPT0gbnVsbCAm
JiBvYmplY3QuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRTtcbn07XG5cbm1vZHVsZS5l
eHBvcnRzID0gUmVhY3RFbGVtZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBB
Q0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0L2xpYi9SZWFjdEVsZW1lbnQuanNcbiAqKiBtb2R1bGUg
aWQgPSAxOFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAq
XG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVx
dWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFyIEV2ZW50UGx1Z2luUmVnaXN0cnkg
PSByZXF1aXJlKCcuL0V2ZW50UGx1Z2luUmVnaXN0cnknKTtcbnZhciBFdmVudFBsdWdpblV0aWxz
ID0gcmVxdWlyZSgnLi9FdmVudFBsdWdpblV0aWxzJyk7XG52YXIgUmVhY3RFcnJvclV0aWxzID0g
cmVxdWlyZSgnLi9SZWFjdEVycm9yVXRpbHMnKTtcblxudmFyIGFjY3VtdWxhdGVJbnRvID0gcmVx
dWlyZSgnLi9hY2N1bXVsYXRlSW50bycpO1xudmFyIGZvckVhY2hBY2N1bXVsYXRlZCA9IHJlcXVp
cmUoJy4vZm9yRWFjaEFjY3VtdWxhdGVkJyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJq
cy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICogSW50ZXJuYWwgc3RvcmUgZm9yIGV2ZW50IGxp
c3RlbmVyc1xuICovXG52YXIgbGlzdGVuZXJCYW5rID0ge307XG5cbi8qKlxuICogSW50ZXJuYWwg
cXVldWUgb2YgZXZlbnRzIHRoYXQgaGF2ZSBhY2N1bXVsYXRlZCB0aGVpciBkaXNwYXRjaGVzIGFu
ZCBhcmVcbiAqIHdhaXRpbmcgdG8gaGF2ZSB0aGVpciBkaXNwYXRjaGVzIGV4ZWN1dGVkLlxuICov
XG52YXIgZXZlbnRRdWV1ZSA9IG51bGw7XG5cbi8qKlxuICogRGlzcGF0Y2hlcyBhbiBldmVudCBh
bmQgcmVsZWFzZXMgaXQgYmFjayBpbnRvIHRoZSBwb29sLCB1bmxlc3MgcGVyc2lzdGVudC5cbiAq
XG4gKiBAcGFyYW0gez9vYmplY3R9IGV2ZW50IFN5bnRoZXRpYyBldmVudCB0byBiZSBkaXNwYXRj
aGVkLlxuICogQHBhcmFtIHtib29sZWFufSBzaW11bGF0ZWQgSWYgdGhlIGV2ZW50IGlzIHNpbXVs
YXRlZCAoY2hhbmdlcyBleG4gYmVoYXZpb3IpXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgZXhlY3V0
ZURpc3BhdGNoZXNBbmRSZWxlYXNlID0gZnVuY3Rpb24gKGV2ZW50LCBzaW11bGF0ZWQpIHtcbiAg
aWYgKGV2ZW50KSB7XG4gICAgRXZlbnRQbHVnaW5VdGlscy5leGVjdXRlRGlzcGF0Y2hlc0luT3Jk
ZXIoZXZlbnQsIHNpbXVsYXRlZCk7XG5cbiAgICBpZiAoIWV2ZW50LmlzUGVyc2lzdGVudCgpKSB7
XG4gICAgICBldmVudC5jb25zdHJ1Y3Rvci5yZWxlYXNlKGV2ZW50KTtcbiAgICB9XG4gIH1cbn07
XG52YXIgZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlU2ltdWxhdGVkID0gZnVuY3Rpb24gKGUp
IHtcbiAgcmV0dXJuIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZShlLCB0cnVlKTtcbn07XG52
YXIgZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlVG9wTGV2ZWwgPSBmdW5jdGlvbiAoZSkge1xu
ICByZXR1cm4gZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlKGUsIGZhbHNlKTtcbn07XG5cbnZh
ciBnZXREaWN0aW9uYXJ5S2V5ID0gZnVuY3Rpb24gKGluc3QpIHtcbiAgLy8gUHJldmVudHMgVjgg
cGVyZm9ybWFuY2UgaXNzdWU6XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFj
dC9wdWxsLzcyMzJcbiAgcmV0dXJuICcuJyArIGluc3QuX3Jvb3ROb2RlSUQ7XG59O1xuXG5mdW5j
dGlvbiBpc0ludGVyYWN0aXZlKHRhZykge1xuICByZXR1cm4gdGFnID09PSAnYnV0dG9uJyB8fCB0
YWcgPT09ICdpbnB1dCcgfHwgdGFnID09PSAnc2VsZWN0JyB8fCB0YWcgPT09ICd0ZXh0YXJlYSc7
XG59XG5cbmZ1bmN0aW9uIHNob3VsZFByZXZlbnRNb3VzZUV2ZW50KG5hbWUsIHR5cGUsIHByb3Bz
KSB7XG4gIHN3aXRjaCAobmFtZSkge1xuICAgIGNhc2UgJ29uQ2xpY2snOlxuICAgIGNhc2UgJ29u
Q2xpY2tDYXB0dXJlJzpcbiAgICBjYXNlICdvbkRvdWJsZUNsaWNrJzpcbiAgICBjYXNlICdvbkRv
dWJsZUNsaWNrQ2FwdHVyZSc6XG4gICAgY2FzZSAnb25Nb3VzZURvd24nOlxuICAgIGNhc2UgJ29u
TW91c2VEb3duQ2FwdHVyZSc6XG4gICAgY2FzZSAnb25Nb3VzZU1vdmUnOlxuICAgIGNhc2UgJ29u
TW91c2VNb3ZlQ2FwdHVyZSc6XG4gICAgY2FzZSAnb25Nb3VzZVVwJzpcbiAgICBjYXNlICdvbk1v
dXNlVXBDYXB0dXJlJzpcbiAgICAgIHJldHVybiAhIShwcm9wcy5kaXNhYmxlZCAmJiBpc0ludGVy
YWN0aXZlKHR5cGUpKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG59
XG5cbi8qKlxuICogVGhpcyBpcyBhIHVuaWZpZWQgaW50ZXJmYWNlIGZvciBldmVudCBwbHVnaW5z
IHRvIGJlIGluc3RhbGxlZCBhbmQgY29uZmlndXJlZC5cbiAqXG4gKiBFdmVudCBwbHVnaW5zIGNh
biBpbXBsZW1lbnQgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxuICpcbiAqICAgYGV4dHJhY3RF
dmVudHNgIHtmdW5jdGlvbihzdHJpbmcsIERPTUV2ZW50VGFyZ2V0LCBzdHJpbmcsIG9iamVjdCk6
ICp9XG4gKiAgICAgUmVxdWlyZWQuIFdoZW4gYSB0b3AtbGV2ZWwgZXZlbnQgaXMgZmlyZWQsIHRo
aXMgbWV0aG9kIGlzIGV4cGVjdGVkIHRvXG4gKiAgICAgZXh0cmFjdCBzeW50aGV0aWMgZXZlbnRz
IHRoYXQgd2lsbCBpbiB0dXJuIGJlIHF1ZXVlZCBhbmQgZGlzcGF0Y2hlZC5cbiAqXG4gKiAgIGBl
dmVudFR5cGVzYCB7b2JqZWN0fVxuICogICAgIE9wdGlvbmFsLCBwbHVnaW5zIHRoYXQgZmlyZSBl
dmVudHMgbXVzdCBwdWJsaXNoIGEgbWFwcGluZyBvZiByZWdpc3RyYXRpb25cbiAqICAgICBuYW1l
cyB0aGF0IGFyZSB1c2VkIHRvIHJlZ2lzdGVyIGxpc3RlbmVycy4gVmFsdWVzIG9mIHRoaXMgbWFw
cGluZyBtdXN0XG4gKiAgICAgYmUgb2JqZWN0cyB0aGF0IGNvbnRhaW4gYHJlZ2lzdHJhdGlvbk5h
bWVgIG9yIGBwaGFzZWRSZWdpc3RyYXRpb25OYW1lc2AuXG4gKlxuICogICBgZXhlY3V0ZURpc3Bh
dGNoYCB7ZnVuY3Rpb24ob2JqZWN0LCBmdW5jdGlvbiwgc3RyaW5nKX1cbiAqICAgICBPcHRpb25h
bCwgYWxsb3dzIHBsdWdpbnMgdG8gb3ZlcnJpZGUgaG93IGFuIGV2ZW50IGdldHMgZGlzcGF0Y2hl
ZC4gQnlcbiAqICAgICBkZWZhdWx0LCB0aGUgbGlzdGVuZXIgaXMgc2ltcGx5IGludm9rZWQuXG4g
KlxuICogRWFjaCBwbHVnaW4gdGhhdCBpcyBpbmplY3RlZCBpbnRvIGBFdmVudHNQbHVnaW5IdWJg
IGlzIGltbWVkaWF0ZWx5IG9wZXJhYmxlLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xudmFyIEV2ZW50
UGx1Z2luSHViID0ge1xuICAvKipcbiAgICogTWV0aG9kcyBmb3IgaW5qZWN0aW5nIGRlcGVuZGVu
Y2llcy5cbiAgICovXG4gIGluamVjdGlvbjoge1xuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7YXJy
YXl9IEluamVjdGVkRXZlbnRQbHVnaW5PcmRlclxuICAgICAqIEBwdWJsaWNcbiAgICAgKi9cbiAg
ICBpbmplY3RFdmVudFBsdWdpbk9yZGVyOiBFdmVudFBsdWdpblJlZ2lzdHJ5LmluamVjdEV2ZW50
UGx1Z2luT3JkZXIsXG5cbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gaW5qZWN0ZWRO
YW1lc1RvUGx1Z2lucyBNYXAgZnJvbSBuYW1lcyB0byBwbHVnaW4gbW9kdWxlcy5cbiAgICAgKi9c
biAgICBpbmplY3RFdmVudFBsdWdpbnNCeU5hbWU6IEV2ZW50UGx1Z2luUmVnaXN0cnkuaW5qZWN0
RXZlbnRQbHVnaW5zQnlOYW1lXG4gIH0sXG5cbiAgLyoqXG4gICAqIFN0b3JlcyBgbGlzdGVuZXJg
IGF0IGBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV1ba2V5XWAuIElzIGlkZW1wb3RlbnQu
XG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBpbnN0IFRoZSBpbnN0YW5jZSwgd2hpY2ggaXMg
dGhlIHNvdXJjZSBvZiBldmVudHMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb25O
YW1lIE5hbWUgb2YgbGlzdGVuZXIgKGUuZy4gYG9uQ2xpY2tgKS5cbiAgICogQHBhcmFtIHtmdW5j
dGlvbn0gbGlzdGVuZXIgVGhlIGNhbGxiYWNrIHRvIHN0b3JlLlxuICAgKi9cbiAgcHV0TGlzdGVu
ZXI6IGZ1bmN0aW9uIChpbnN0LCByZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lcikge1xuICAgICEo
dHlwZW9mIGxpc3RlbmVyID09PSAnZnVuY3Rpb24nKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCAlcyBsaXN0ZW5lciB0
byBiZSBhIGZ1bmN0aW9uLCBpbnN0ZWFkIGdvdCB0eXBlICVzJywgcmVnaXN0cmF0aW9uTmFtZSwg
dHlwZW9mIGxpc3RlbmVyKSA6IF9wcm9kSW52YXJpYW50KCc5NCcsIHJlZ2lzdHJhdGlvbk5hbWUs
IHR5cGVvZiBsaXN0ZW5lcikgOiB2b2lkIDA7XG5cbiAgICB2YXIga2V5ID0gZ2V0RGljdGlvbmFy
eUtleShpbnN0KTtcbiAgICB2YXIgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUgPSBsaXN0ZW5lckJh
bmtbcmVnaXN0cmF0aW9uTmFtZV0gfHwgKGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXSA9
IHt9KTtcbiAgICBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZVtrZXldID0gbGlzdGVuZXI7XG5cbiAg
ICB2YXIgUGx1Z2luTW9kdWxlID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1l
TW9kdWxlc1tyZWdpc3RyYXRpb25OYW1lXTtcbiAgICBpZiAoUGx1Z2luTW9kdWxlICYmIFBsdWdp
bk1vZHVsZS5kaWRQdXRMaXN0ZW5lcikge1xuICAgICAgUGx1Z2luTW9kdWxlLmRpZFB1dExpc3Rl
bmVyKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyKTtcbiAgICB9XG4gIH0sXG5cbiAg
LyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBpbnN0IFRoZSBpbnN0YW5jZSwgd2hpY2ggaXMgdGhl
IHNvdXJjZSBvZiBldmVudHMuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb25OYW1l
IE5hbWUgb2YgbGlzdGVuZXIgKGUuZy4gYG9uQ2xpY2tgKS5cbiAgICogQHJldHVybiB7P2Z1bmN0
aW9ufSBUaGUgc3RvcmVkIGNhbGxiYWNrLlxuICAgKi9cbiAgZ2V0TGlzdGVuZXI6IGZ1bmN0aW9u
IChpbnN0LCByZWdpc3RyYXRpb25OYW1lKSB7XG4gICAgLy8gVE9ETzogc2hvdWxkUHJldmVudE1v
dXNlRXZlbnQgaXMgRE9NLXNwZWNpZmljIGFuZCBkZWZpbml0ZWx5IHNob3VsZCBub3RcbiAgICAv
LyBsaXZlIGhlcmU7IG5lZWRzIHRvIGJlIG1vdmVkIHRvIGEgYmV0dGVyIHBsYWNlIHNvb25cbiAg
ICB2YXIgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUgPSBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9u
TmFtZV07XG4gICAgaWYgKHNob3VsZFByZXZlbnRNb3VzZUV2ZW50KHJlZ2lzdHJhdGlvbk5hbWUs
IGluc3QuX2N1cnJlbnRFbGVtZW50LnR5cGUsIGluc3QuX2N1cnJlbnRFbGVtZW50LnByb3BzKSkg
e1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5
S2V5KGluc3QpO1xuICAgIHJldHVybiBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSAmJiBiYW5rRm9y
UmVnaXN0cmF0aW9uTmFtZVtrZXldO1xuICB9LFxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGEgbGlz
dGVuZXIgZnJvbSB0aGUgcmVnaXN0cmF0aW9uIGJhbmsuXG4gICAqXG4gICAqIEBwYXJhbSB7b2Jq
ZWN0fSBpbnN0IFRoZSBpbnN0YW5jZSwgd2hpY2ggaXMgdGhlIHNvdXJjZSBvZiBldmVudHMuXG4g
ICAqIEBwYXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb25OYW1lIE5hbWUgb2YgbGlzdGVuZXIgKGUu
Zy4gYG9uQ2xpY2tgKS5cbiAgICovXG4gIGRlbGV0ZUxpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwg
cmVnaXN0cmF0aW9uTmFtZSkge1xuICAgIHZhciBQbHVnaW5Nb2R1bGUgPSBFdmVudFBsdWdpblJl
Z2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdO1xuICAgIGlm
IChQbHVnaW5Nb2R1bGUgJiYgUGx1Z2luTW9kdWxlLndpbGxEZWxldGVMaXN0ZW5lcikge1xuICAg
ICAgUGx1Z2luTW9kdWxlLndpbGxEZWxldGVMaXN0ZW5lcihpbnN0LCByZWdpc3RyYXRpb25OYW1l
KTtcbiAgICB9XG5cbiAgICB2YXIgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUgPSBsaXN0ZW5lckJh
bmtbcmVnaXN0cmF0aW9uTmFtZV07XG4gICAgLy8gVE9ETzogVGhpcyBzaG91bGQgbmV2ZXIgYmUg
bnVsbCAtLSB3aGVuIGlzIGl0P1xuICAgIGlmIChiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSkge1xu
ICAgICAgdmFyIGtleSA9IGdldERpY3Rpb25hcnlLZXkoaW5zdCk7XG4gICAgICBkZWxldGUgYmFu
a0ZvclJlZ2lzdHJhdGlvbk5hbWVba2V5XTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIERl
bGV0ZXMgYWxsIGxpc3RlbmVycyBmb3IgdGhlIERPTSBlbGVtZW50IHdpdGggdGhlIHN1cHBsaWVk
IElELlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gaW5zdCBUaGUgaW5zdGFuY2UsIHdoaWNo
IGlzIHRoZSBzb3VyY2Ugb2YgZXZlbnRzLlxuICAgKi9cbiAgZGVsZXRlQWxsTGlzdGVuZXJzOiBm
dW5jdGlvbiAoaW5zdCkge1xuICAgIHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5S2V5KGluc3QpO1xu
ICAgIGZvciAodmFyIHJlZ2lzdHJhdGlvbk5hbWUgaW4gbGlzdGVuZXJCYW5rKSB7XG4gICAgICBp
ZiAoIWxpc3RlbmVyQmFuay5oYXNPd25Qcm9wZXJ0eShyZWdpc3RyYXRpb25OYW1lKSkge1xuICAg
ICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFsaXN0ZW5lckJhbmtbcmVnaXN0
cmF0aW9uTmFtZV1ba2V5XSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAg
dmFyIFBsdWdpbk1vZHVsZSA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1v
ZHVsZXNbcmVnaXN0cmF0aW9uTmFtZV07XG4gICAgICBpZiAoUGx1Z2luTW9kdWxlICYmIFBsdWdp
bk1vZHVsZS53aWxsRGVsZXRlTGlzdGVuZXIpIHtcbiAgICAgICAgUGx1Z2luTW9kdWxlLndpbGxE
ZWxldGVMaXN0ZW5lcihpbnN0LCByZWdpc3RyYXRpb25OYW1lKTtcbiAgICAgIH1cblxuICAgICAg
ZGVsZXRlIGxpc3RlbmVyQmFua1tyZWdpc3RyYXRpb25OYW1lXVtrZXldO1xuICAgIH1cbiAgfSxc
blxuICAvKipcbiAgICogQWxsb3dzIHJlZ2lzdGVyZWQgcGx1Z2lucyBhbiBvcHBvcnR1bml0eSB0
byBleHRyYWN0IGV2ZW50cyBmcm9tIHRvcC1sZXZlbFxuICAgKiBuYXRpdmUgYnJvd3NlciBldmVu
dHMuXG4gICAqXG4gICAqIEByZXR1cm4geyp9IEFuIGFjY3VtdWxhdGlvbiBvZiBzeW50aGV0aWMg
ZXZlbnRzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9u
ICh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdl
dCkge1xuICAgIHZhciBldmVudHM7XG4gICAgdmFyIHBsdWdpbnMgPSBFdmVudFBsdWdpblJlZ2lz
dHJ5LnBsdWdpbnM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwbHVnaW5zLmxlbmd0aDsgaSsr
KSB7XG4gICAgICAvLyBOb3QgZXZlcnkgcGx1Z2luIGluIHRoZSBvcmRlcmluZyBtYXkgYmUgbG9h
ZGVkIGF0IHJ1bnRpbWUuXG4gICAgICB2YXIgcG9zc2libGVQbHVnaW4gPSBwbHVnaW5zW2ldO1xu
ICAgICAgaWYgKHBvc3NpYmxlUGx1Z2luKSB7XG4gICAgICAgIHZhciBleHRyYWN0ZWRFdmVudHMg
PSBwb3NzaWJsZVBsdWdpbi5leHRyYWN0RXZlbnRzKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwg
bmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbiAgICAgICAgaWYgKGV4dHJhY3RlZEV2
ZW50cykge1xuICAgICAgICAgIGV2ZW50cyA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50cywgZXh0cmFj
dGVkRXZlbnRzKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZXZlbnRz
O1xuICB9LFxuXG4gIC8qKlxuICAgKiBFbnF1ZXVlcyBhIHN5bnRoZXRpYyBldmVudCB0aGF0IHNo
b3VsZCBiZSBkaXNwYXRjaGVkIHdoZW5cbiAgICogYHByb2Nlc3NFdmVudFF1ZXVlYCBpcyBpbnZv
a2VkLlxuICAgKlxuICAgKiBAcGFyYW0geyp9IGV2ZW50cyBBbiBhY2N1bXVsYXRpb24gb2Ygc3lu
dGhldGljIGV2ZW50cy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlRXZlbnRzOiBm
dW5jdGlvbiAoZXZlbnRzKSB7XG4gICAgaWYgKGV2ZW50cykge1xuICAgICAgZXZlbnRRdWV1ZSA9
IGFjY3VtdWxhdGVJbnRvKGV2ZW50UXVldWUsIGV2ZW50cyk7XG4gICAgfVxuICB9LFxuXG4gIC8q
KlxuICAgKiBEaXNwYXRjaGVzIGFsbCBzeW50aGV0aWMgZXZlbnRzIG9uIHRoZSBldmVudCBxdWV1
ZS5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcm9jZXNzRXZlbnRRdWV1ZTogZnVu
Y3Rpb24gKHNpbXVsYXRlZCkge1xuICAgIC8vIFNldCBgZXZlbnRRdWV1ZWAgdG8gbnVsbCBiZWZv
cmUgcHJvY2Vzc2luZyBpdCBzbyB0aGF0IHdlIGNhbiB0ZWxsIGlmIG1vcmVcbiAgICAvLyBldmVu
dHMgZ2V0IGVucXVldWVkIHdoaWxlIHByb2Nlc3NpbmcuXG4gICAgdmFyIHByb2Nlc3NpbmdFdmVu
dFF1ZXVlID0gZXZlbnRRdWV1ZTtcbiAgICBldmVudFF1ZXVlID0gbnVsbDtcbiAgICBpZiAoc2lt
dWxhdGVkKSB7XG4gICAgICBmb3JFYWNoQWNjdW11bGF0ZWQocHJvY2Vzc2luZ0V2ZW50UXVldWUs
IGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZVNpbXVsYXRlZCk7XG4gICAgfSBlbHNlIHtcbiAg
ICAgIGZvckVhY2hBY2N1bXVsYXRlZChwcm9jZXNzaW5nRXZlbnRRdWV1ZSwgZXhlY3V0ZURpc3Bh
dGNoZXNBbmRSZWxlYXNlVG9wTGV2ZWwpO1xuICAgIH1cbiAgICAhIWV2ZW50UXVldWUgPyBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAncHJv
Y2Vzc0V2ZW50UXVldWUoKTogQWRkaXRpb25hbCBldmVudHMgd2VyZSBlbnF1ZXVlZCB3aGlsZSBw
cm9jZXNzaW5nIGFuIGV2ZW50IHF1ZXVlLiBTdXBwb3J0IGZvciB0aGlzIGhhcyBub3QgeWV0IGJl
ZW4gaW1wbGVtZW50ZWQuJykgOiBfcHJvZEludmFyaWFudCgnOTUnKSA6IHZvaWQgMDtcbiAgICAv
LyBUaGlzIHdvdWxkIGJlIGEgZ29vZCB0aW1lIHRvIHJldGhyb3cgaWYgYW55IG9mIHRoZSBldmVu
dCBoYW5kbGVycyB0aHJldy5cbiAgICBSZWFjdEVycm9yVXRpbHMucmV0aHJvd0NhdWdodEVycm9y
KCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFRoZXNlIGFyZSBuZWVkZWQgZm9yIHRlc3RzIG9ubHku
IERvIG5vdCB1c2UhXG4gICAqL1xuICBfX3B1cmdlOiBmdW5jdGlvbiAoKSB7XG4gICAgbGlzdGVu
ZXJCYW5rID0ge307XG4gIH0sXG5cbiAgX19nZXRMaXN0ZW5lckJhbms6IGZ1bmN0aW9uICgpIHtc
biAgICByZXR1cm4gbGlzdGVuZXJCYW5rO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEV2
ZW50UGx1Z2luSHViO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVS
XG4gKiogLi9+L3JlYWN0LWRvbS9saWIvRXZlbnRQbHVnaW5IdWIuanNcbiAqKiBtb2R1bGUgaWQg
PSAxOVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4g
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV2ZW50UGx1Z2luSHViID0gcmVxdWly
ZSgnLi9FdmVudFBsdWdpbkh1YicpO1xudmFyIEV2ZW50UGx1Z2luVXRpbHMgPSByZXF1aXJlKCcu
L0V2ZW50UGx1Z2luVXRpbHMnKTtcblxudmFyIGFjY3VtdWxhdGVJbnRvID0gcmVxdWlyZSgnLi9h
Y2N1bXVsYXRlSW50bycpO1xudmFyIGZvckVhY2hBY2N1bXVsYXRlZCA9IHJlcXVpcmUoJy4vZm9y
RWFjaEFjY3VtdWxhdGVkJyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5p
bmcnKTtcblxudmFyIGdldExpc3RlbmVyID0gRXZlbnRQbHVnaW5IdWIuZ2V0TGlzdGVuZXI7XG5c
bi8qKlxuICogU29tZSBldmVudCB0eXBlcyBoYXZlIGEgbm90aW9uIG9mIGRpZmZlcmVudCByZWdp
c3RyYXRpb24gbmFtZXMgZm9yIGRpZmZlcmVudFxuICogXCJwaGFzZXNcIiBvZiBwcm9wYWdhdGlv
bi4gVGhpcyBmaW5kcyBsaXN0ZW5lcnMgYnkgYSBnaXZlbiBwaGFzZS5cbiAqL1xuZnVuY3Rpb24g
bGlzdGVuZXJBdFBoYXNlKGluc3QsIGV2ZW50LCBwcm9wYWdhdGlvblBoYXNlKSB7XG4gIHZhciBy
ZWdpc3RyYXRpb25OYW1lID0gZXZlbnQuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9u
TmFtZXNbcHJvcGFnYXRpb25QaGFzZV07XG4gIHJldHVybiBnZXRMaXN0ZW5lcihpbnN0LCByZWdp
c3RyYXRpb25OYW1lKTtcbn1cblxuLyoqXG4gKiBUYWdzIGEgYFN5bnRoZXRpY0V2ZW50YCB3aXRo
IGRpc3BhdGNoZWQgbGlzdGVuZXJzLiBDcmVhdGluZyB0aGlzIGZ1bmN0aW9uXG4gKiBoZXJlLCBh
bGxvd3MgdXMgdG8gbm90IGhhdmUgdG8gYmluZCBvciBjcmVhdGUgZnVuY3Rpb25zIGZvciBlYWNo
IGV2ZW50LlxuICogTXV0YXRpbmcgdGhlIGV2ZW50J3MgbWVtYmVycyBhbGxvd3MgdXMgdG8gbm90
IGhhdmUgdG8gY3JlYXRlIGEgd3JhcHBpbmdcbiAqIFwiZGlzcGF0Y2hcIiBvYmplY3QgdGhhdCBw
YWlycyB0aGUgZXZlbnQgd2l0aCB0aGUgbGlzdGVuZXIuXG4gKi9cbmZ1bmN0aW9uIGFjY3VtdWxh
dGVEaXJlY3Rpb25hbERpc3BhdGNoZXMoaW5zdCwgcGhhc2UsIGV2ZW50KSB7XG4gIGlmIChwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoaW5zdCwgJ0Rpc3BhdGNoaW5nIGluc3Qg
bXVzdCBub3QgYmUgbnVsbCcpIDogdm9pZCAwO1xuICB9XG4gIHZhciBsaXN0ZW5lciA9IGxpc3Rl
bmVyQXRQaGFzZShpbnN0LCBldmVudCwgcGhhc2UpO1xuICBpZiAobGlzdGVuZXIpIHtcbiAgICBl
dmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMgPSBhY2N1bXVsYXRlSW50byhldmVudC5fZGlzcGF0Y2hM
aXN0ZW5lcnMsIGxpc3RlbmVyKTtcbiAgICBldmVudC5fZGlzcGF0Y2hJbnN0YW5jZXMgPSBhY2N1
bXVsYXRlSW50byhldmVudC5fZGlzcGF0Y2hJbnN0YW5jZXMsIGluc3QpO1xuICB9XG59XG5cbi8q
KlxuICogQ29sbGVjdCBkaXNwYXRjaGVzIChtdXN0IGJlIGVudGlyZWx5IGNvbGxlY3RlZCBiZWZv
cmUgZGlzcGF0Y2hpbmcgLSBzZWUgdW5pdFxuICogdGVzdHMpLiBMYXppbHkgYWxsb2NhdGUgdGhl
IGFycmF5IHRvIGNvbnNlcnZlIG1lbW9yeS4gIFdlIG11c3QgbG9vcCB0aHJvdWdoXG4gKiBlYWNo
IGV2ZW50IGFuZCBwZXJmb3JtIHRoZSB0cmF2ZXJzYWwgZm9yIGVhY2ggb25lLiBXZSBjYW5ub3Qg
cGVyZm9ybSBhXG4gKiBzaW5nbGUgdHJhdmVyc2FsIGZvciB0aGUgZW50aXJlIGNvbGxlY3Rpb24g
b2YgZXZlbnRzIGJlY2F1c2UgZWFjaCBldmVudCBtYXlcbiAqIGhhdmUgYSBkaWZmZXJlbnQgdGFy
Z2V0LlxuICovXG5mdW5jdGlvbiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2luZ2xlKGV2
ZW50KSB7XG4gIGlmIChldmVudCAmJiBldmVudC5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3Ry
YXRpb25OYW1lcykge1xuICAgIEV2ZW50UGx1Z2luVXRpbHMudHJhdmVyc2VUd29QaGFzZShldmVu
dC5fdGFyZ2V0SW5zdCwgYWNjdW11bGF0ZURpcmVjdGlvbmFsRGlzcGF0Y2hlcywgZXZlbnQpO1xu
ICB9XG59XG5cbi8qKlxuICogU2FtZSBhcyBgYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1Np
bmdsZWAsIGJ1dCBza2lwcyBvdmVyIHRoZSB0YXJnZXRJRC5cbiAqL1xuZnVuY3Rpb24gYWNjdW11
bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZVNraXBUYXJnZXQoZXZlbnQpIHtcbiAgaWYgKGV2
ZW50ICYmIGV2ZW50LmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7XG4g
ICAgdmFyIHRhcmdldEluc3QgPSBldmVudC5fdGFyZ2V0SW5zdDtcbiAgICB2YXIgcGFyZW50SW5z
dCA9IHRhcmdldEluc3QgPyBFdmVudFBsdWdpblV0aWxzLmdldFBhcmVudEluc3RhbmNlKHRhcmdl
dEluc3QpIDogbnVsbDtcbiAgICBFdmVudFBsdWdpblV0aWxzLnRyYXZlcnNlVHdvUGhhc2UocGFy
ZW50SW5zdCwgYWNjdW11bGF0ZURpcmVjdGlvbmFsRGlzcGF0Y2hlcywgZXZlbnQpO1xuICB9XG59
XG5cbi8qKlxuICogQWNjdW11bGF0ZXMgd2l0aG91dCByZWdhcmQgdG8gZGlyZWN0aW9uLCBkb2Vz
IG5vdCBsb29rIGZvciBwaGFzZWRcbiAqIHJlZ2lzdHJhdGlvbiBuYW1lcy4gU2FtZSBhcyBgYWNj
dW11bGF0ZURpcmVjdERpc3BhdGNoZXNTaW5nbGVgIGJ1dCB3aXRob3V0XG4gKiByZXF1aXJpbmcg
dGhhdCB0aGUgYGRpc3BhdGNoTWFya2VyYCBiZSB0aGUgc2FtZSBhcyB0aGUgZGlzcGF0Y2hlZCBJ
RC5cbiAqL1xuZnVuY3Rpb24gYWNjdW11bGF0ZURpc3BhdGNoZXMoaW5zdCwgaWdub3JlZERpcmVj
dGlvbiwgZXZlbnQpIHtcbiAgaWYgKGV2ZW50ICYmIGV2ZW50LmRpc3BhdGNoQ29uZmlnLnJlZ2lz
dHJhdGlvbk5hbWUpIHtcbiAgICB2YXIgcmVnaXN0cmF0aW9uTmFtZSA9IGV2ZW50LmRpc3BhdGNo
Q29uZmlnLnJlZ2lzdHJhdGlvbk5hbWU7XG4gICAgdmFyIGxpc3RlbmVyID0gZ2V0TGlzdGVuZXIo
aW5zdCwgcmVnaXN0cmF0aW9uTmFtZSk7XG4gICAgaWYgKGxpc3RlbmVyKSB7XG4gICAgICBldmVu
dC5fZGlzcGF0Y2hMaXN0ZW5lcnMgPSBhY2N1bXVsYXRlSW50byhldmVudC5fZGlzcGF0Y2hMaXN0
ZW5lcnMsIGxpc3RlbmVyKTtcbiAgICAgIGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcyA9IGFjY3Vt
dWxhdGVJbnRvKGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcywgaW5zdCk7XG4gICAgfVxuICB9XG59
XG5cbi8qKlxuICogQWNjdW11bGF0ZXMgZGlzcGF0Y2hlcyBvbiBhbiBgU3ludGhldGljRXZlbnRg
LCBidXQgb25seSBmb3IgdGhlXG4gKiBgZGlzcGF0Y2hNYXJrZXJgLlxuICogQHBhcmFtIHtTeW50
aGV0aWNFdmVudH0gZXZlbnRcbiAqL1xuZnVuY3Rpb24gYWNjdW11bGF0ZURpcmVjdERpc3BhdGNo
ZXNTaW5nbGUoZXZlbnQpIHtcbiAgaWYgKGV2ZW50ICYmIGV2ZW50LmRpc3BhdGNoQ29uZmlnLnJl
Z2lzdHJhdGlvbk5hbWUpIHtcbiAgICBhY2N1bXVsYXRlRGlzcGF0Y2hlcyhldmVudC5fdGFyZ2V0
SW5zdCwgbnVsbCwgZXZlbnQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFjY3VtdWxhdGVUd29QaGFz
ZURpc3BhdGNoZXMoZXZlbnRzKSB7XG4gIGZvckVhY2hBY2N1bXVsYXRlZChldmVudHMsIGFjY3Vt
dWxhdGVUd29QaGFzZURpc3BhdGNoZXNTaW5nbGUpO1xufVxuXG5mdW5jdGlvbiBhY2N1bXVsYXRl
VHdvUGhhc2VEaXNwYXRjaGVzU2tpcFRhcmdldChldmVudHMpIHtcbiAgZm9yRWFjaEFjY3VtdWxh
dGVkKGV2ZW50cywgYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZVNraXBUYXJnZXQp
O1xufVxuXG5mdW5jdGlvbiBhY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXMobGVhdmUsIGVu
dGVyLCBmcm9tLCB0bykge1xuICBFdmVudFBsdWdpblV0aWxzLnRyYXZlcnNlRW50ZXJMZWF2ZShm
cm9tLCB0bywgYWNjdW11bGF0ZURpc3BhdGNoZXMsIGxlYXZlLCBlbnRlcik7XG59XG5cbmZ1bmN0
aW9uIGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzKGV2ZW50cykge1xuICBmb3JFYWNoQWNjdW11
bGF0ZWQoZXZlbnRzLCBhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlc1NpbmdsZSk7XG59XG5cbi8q
KlxuICogQSBzbWFsbCBzZXQgb2YgcHJvcGFnYXRpb24gcGF0dGVybnMsIGVhY2ggb2Ygd2hpY2gg
d2lsbCBhY2NlcHQgYSBzbWFsbCBhbW91bnRcbiAqIG9mIGluZm9ybWF0aW9uLCBhbmQgZ2VuZXJh
dGUgYSBzZXQgb2YgXCJkaXNwYXRjaCByZWFkeSBldmVudCBvYmplY3RzXCIgLSB3aGljaFxuICog
YXJlIHNldHMgb2YgZXZlbnRzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gYW5ub3RhdGVkIHdpdGgg
YSBzZXQgb2YgZGlzcGF0Y2hlZFxuICogbGlzdGVuZXIgZnVuY3Rpb25zL2lkcy4gVGhlIEFQSSBp
cyBkZXNpZ25lZCB0aGlzIHdheSB0byBkaXNjb3VyYWdlIHRoZXNlXG4gKiBwcm9wYWdhdGlvbiBz
dHJhdGVnaWVzIGZyb20gYWN0dWFsbHkgZXhlY3V0aW5nIHRoZSBkaXNwYXRjaGVzLCBzaW5jZSB3
ZVxuICogYWx3YXlzIHdhbnQgdG8gY29sbGVjdCB0aGUgZW50aXJlIHNldCBvZiBkaXNwYXRjaGVz
IGJlZm9yZSBleGVjdXRpbmcgZXZlbnQgYVxuICogc2luZ2xlIG9uZS5cbiAqXG4gKiBAY29uc3Ry
dWN0b3IgRXZlbnRQcm9wYWdhdG9yc1xuICovXG52YXIgRXZlbnRQcm9wYWdhdG9ycyA9IHtcbiAg
YWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlczogYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hl
cyxcbiAgYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NraXBUYXJnZXQ6IGFjY3VtdWxhdGVU
d29QaGFzZURpc3BhdGNoZXNTa2lwVGFyZ2V0LFxuICBhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hl
czogYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXMsXG4gIGFjY3VtdWxhdGVFbnRlckxlYXZlRGlz
cGF0Y2hlczogYWNjdW11bGF0ZUVudGVyTGVhdmVEaXNwYXRjaGVzXG59O1xuXG5tb2R1bGUuZXhw
b3J0cyA9IEV2ZW50UHJvcGFnYXRvcnM7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VC
UEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9FdmVudFByb3BhZ2F0b3JzLmpzXG4g
KiogbW9kdWxlIGlkID0gMjBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogYFJlYWN0
SW5zdGFuY2VNYXBgIG1haW50YWlucyBhIG1hcHBpbmcgZnJvbSBhIHB1YmxpYyBmYWNpbmcgc3Rh
dGVmdWxcbiAqIGluc3RhbmNlIChrZXkpIGFuZCB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb24g
KHZhbHVlKS4gVGhpcyBhbGxvd3MgcHVibGljXG4gKiBtZXRob2RzIHRvIGFjY2VwdCB0aGUgdXNl
ciBmYWNpbmcgaW5zdGFuY2UgYXMgYW4gYXJndW1lbnQgYW5kIG1hcCB0aGVtIGJhY2tcbiAqIHRv
IGludGVybmFsIG1ldGhvZHMuXG4gKi9cblxuLy8gVE9ETzogUmVwbGFjZSB0aGlzIHdpdGggRVM2
OiB2YXIgUmVhY3RJbnN0YW5jZU1hcCA9IG5ldyBNYXAoKTtcblxudmFyIFJlYWN0SW5zdGFuY2VN
YXAgPSB7XG4gIC8qKlxuICAgKiBUaGlzIEFQSSBzaG91bGQgYmUgY2FsbGVkIGBkZWxldGVgIGJ1
dCB3ZSdkIGhhdmUgdG8gbWFrZSBzdXJlIHRvIGFsd2F5c1xuICAgKiB0cmFuc2Zvcm0gdGhlc2Ug
dG8gc3RyaW5ncyBmb3IgSUUgc3VwcG9ydC4gV2hlbiB0aGlzIHRyYW5zZm9ybSBpcyBmdWxseVxu
ICAgKiBzdXBwb3J0ZWQgd2UgY2FuIHJlbmFtZSBpdC5cbiAgICovXG4gIHJlbW92ZTogZnVuY3Rp
b24gKGtleSkge1xuICAgIGtleS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlID0gdW5kZWZpbmVkO1xu
ICB9LFxuXG4gIGdldDogZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBrZXkuX3JlYWN0SW50
ZXJuYWxJbnN0YW5jZTtcbiAgfSxcblxuICBoYXM6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1
cm4ga2V5Ll9yZWFjdEludGVybmFsSW5zdGFuY2UgIT09IHVuZGVmaW5lZDtcbiAgfSxcblxuICBz
ZXQ6IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gICAga2V5Ll9yZWFjdEludGVybmFsSW5zdGFu
Y2UgPSB2YWx1ZTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEluc3RhbmNlTWFw
O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3Jl
YWN0LWRvbS9saWIvUmVhY3RJbnN0YW5jZU1hcC5qc1xuICoqIG1vZHVsZSBpZCA9IDIxXG4gKiog
bW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9c
blxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgU3ludGhldGljRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRo
ZXRpY0V2ZW50Jyk7XG5cbnZhciBnZXRFdmVudFRhcmdldCA9IHJlcXVpcmUoJy4vZ2V0RXZlbnRU
YXJnZXQnKTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIFVJRXZlbnRcbiAqIEBzZWUgaHR0cDovL3d3
dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzL1xuICovXG52YXIgVUlFdmVudEludGVyZmFj
ZSA9IHtcbiAgdmlldzogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgaWYgKGV2ZW50LnZpZXcpIHtc
biAgICAgIHJldHVybiBldmVudC52aWV3O1xuICAgIH1cblxuICAgIHZhciB0YXJnZXQgPSBnZXRF
dmVudFRhcmdldChldmVudCk7XG4gICAgaWYgKHRhcmdldC53aW5kb3cgPT09IHRhcmdldCkge1xu
ICAgICAgLy8gdGFyZ2V0IGlzIGEgd2luZG93IG9iamVjdFxuICAgICAgcmV0dXJuIHRhcmdldDtc
biAgICB9XG5cbiAgICB2YXIgZG9jID0gdGFyZ2V0Lm93bmVyRG9jdW1lbnQ7XG4gICAgLy8gVE9E
TzogRmlndXJlIG91dCB3aHkgYG93bmVyRG9jdW1lbnRgIGlzIHNvbWV0aW1lcyB1bmRlZmluZWQg
aW4gSUU4LlxuICAgIGlmIChkb2MpIHtcbiAgICAgIHJldHVybiBkb2MuZGVmYXVsdFZpZXcgfHwg
ZG9jLnBhcmVudFdpbmRvdztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHdpbmRvdztcbiAg
ICB9XG4gIH0sXG4gIGRldGFpbDogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgcmV0dXJuIGV2ZW50
LmRldGFpbCB8fCAwO1xuICB9XG59O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRj
aENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBw
YXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50
IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBl
dmVudC5cbiAqIEBleHRlbmRzIHtTeW50aGV0aWNFdmVudH1cbiAqL1xuZnVuY3Rpb24gU3ludGhl
dGljVUlFdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBu
YXRpdmVFdmVudFRhcmdldCkge1xuICByZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBk
aXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRh
cmdldCk7XG59XG5cblN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNVSUV2ZW50
LCBVSUV2ZW50SW50ZXJmYWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNVSUV2ZW50
O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3Jl
YWN0LWRvbS9saWIvU3ludGhldGljVUlFdmVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDIyXG4gKiog
bW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxu
ICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGVtcHR5T2JqZWN0ID0ge307XG5cbmlmIChwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIE9iamVjdC5mcmVlemUoZW1w
dHlPYmplY3QpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGVtcHR5T2JqZWN0O1xuXG5cbi8qKioq
KioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2ZianMvbGliL2VtcHR5
T2JqZWN0LmpzXG4gKiogbW9kdWxlIGlkID0gMjRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoq
LyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZh
ciBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuXG52YXIgRXZlbnRQbHVnaW5S
ZWdpc3RyeSA9IHJlcXVpcmUoJy4vRXZlbnRQbHVnaW5SZWdpc3RyeScpO1xudmFyIFJlYWN0RXZl
bnRFbWl0dGVyTWl4aW4gPSByZXF1aXJlKCcuL1JlYWN0RXZlbnRFbWl0dGVyTWl4aW4nKTtcbnZh
ciBWaWV3cG9ydE1ldHJpY3MgPSByZXF1aXJlKCcuL1ZpZXdwb3J0TWV0cmljcycpO1xuXG52YXIg
Z2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUgPSByZXF1aXJlKCcuL2dldFZlbmRvclByZWZpeGVk
RXZlbnROYW1lJyk7XG52YXIgaXNFdmVudFN1cHBvcnRlZCA9IHJlcXVpcmUoJy4vaXNFdmVudFN1
cHBvcnRlZCcpO1xuXG4vKipcbiAqIFN1bW1hcnkgb2YgYFJlYWN0QnJvd3NlckV2ZW50RW1pdHRl
cmAgZXZlbnQgaGFuZGxpbmc6XG4gKlxuICogIC0gVG9wLWxldmVsIGRlbGVnYXRpb24gaXMgdXNl
ZCB0byB0cmFwIG1vc3QgbmF0aXZlIGJyb3dzZXIgZXZlbnRzLiBUaGlzXG4gKiAgICBtYXkgb25s
eSBvY2N1ciBpbiB0aGUgbWFpbiB0aHJlYWQgYW5kIGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZlxu
ICogICAgUmVhY3RFdmVudExpc3RlbmVyLCB3aGljaCBpcyBpbmplY3RlZCBhbmQgY2FuIHRoZXJl
Zm9yZSBzdXBwb3J0IHBsdWdnYWJsZVxuICogICAgZXZlbnQgc291cmNlcy4gVGhpcyBpcyB0aGUg
b25seSB3b3JrIHRoYXQgb2NjdXJzIGluIHRoZSBtYWluIHRocmVhZC5cbiAqXG4gKiAgLSBXZSBu
b3JtYWxpemUgYW5kIGRlLWR1cGxpY2F0ZSBldmVudHMgdG8gYWNjb3VudCBmb3IgYnJvd3NlciBx
dWlya3MuIFRoaXNcbiAqICAgIG1heSBiZSBkb25lIGluIHRoZSB3b3JrZXIgdGhyZWFkLlxuICpc
biAqICAtIEZvcndhcmQgdGhlc2UgbmF0aXZlIGV2ZW50cyAod2l0aCB0aGUgYXNzb2NpYXRlZCB0
b3AtbGV2ZWwgdHlwZSB1c2VkIHRvXG4gKiAgICB0cmFwIGl0KSB0byBgRXZlbnRQbHVnaW5IdWJg
LCB3aGljaCBpbiB0dXJuIHdpbGwgYXNrIHBsdWdpbnMgaWYgdGhleSB3YW50XG4gKiAgICB0byBl
eHRyYWN0IGFueSBzeW50aGV0aWMgZXZlbnRzLlxuICpcbiAqICAtIFRoZSBgRXZlbnRQbHVnaW5I
dWJgIHdpbGwgdGhlbiBwcm9jZXNzIGVhY2ggZXZlbnQgYnkgYW5ub3RhdGluZyB0aGVtIHdpdGhc
biAqICAgIFwiZGlzcGF0Y2hlc1wiLCBhIHNlcXVlbmNlIG9mIGxpc3RlbmVycyBhbmQgSURzIHRo
YXQgY2FyZSBhYm91dCB0aGF0IGV2ZW50LlxuICpcbiAqICAtIFRoZSBgRXZlbnRQbHVnaW5IdWJg
IHRoZW4gZGlzcGF0Y2hlcyB0aGUgZXZlbnRzLlxuICpcbiAqIE92ZXJ2aWV3IG9mIFJlYWN0IGFu
ZCB0aGUgZXZlbnQgc3lzdGVtOlxuICpcbiAqICstLS0tLS0tLS0tLS0rICAgIC5cbiAqIHwgICAg
RE9NICAgICB8ICAgIC5cbiAqICstLS0tLS0tLS0tLS0rICAgIC5cbiAqICAgICAgIHwgICAgICAg
ICAgIC5cbiAqICAgICAgIHYgICAgICAgICAgIC5cbiAqICstLS0tLS0tLS0tLS0rICAgIC5cbiAq
IHwgUmVhY3RFdmVudCB8ICAgIC5cbiAqIHwgIExpc3RlbmVyICB8ICAgIC5cbiAqICstLS0tLS0t
LS0tLS0rICAgIC4gICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tK1xuICogICAg
ICAgfCAgICAgICAgICAgLiAgICAgICAgICAgICAgICstLS0tLS0tLSt8U2ltcGxlRXZlbnR8XG4g
KiAgICAgICB8ICAgICAgICAgICAuICAgICAgICAgICAgICAgfCAgICAgICAgIHxQbHVnaW4gICAg
IHxcbiAqICstLS0tLXwtLS0tLS0rICAgIC4gICAgICAgICAgICAgICB2ICAgICAgICAgKy0tLS0t
LS0tLS0tK1xuICogfCAgICAgfCAgICAgIHwgICAgLiAgICArLS0tLS0tLS0tLS0tLS0rICAgICAg
ICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tK1xuICogfCAgICAgKy0tLS0tLS0tLS0tLi0tLT58
RXZlbnRQbHVnaW5IdWJ8ICAgICAgICAgICAgICAgICAgICB8ICAgIEV2ZW50ICAgfFxuICogfCAg
ICAgICAgICAgIHwgICAgLiAgICB8ICAgICAgICAgICAgICB8ICAgICArLS0tLS0tLS0tLS0rICB8
IFByb3BhZ2F0b3JzfFxuICogfCBSZWFjdEV2ZW50IHwgICAgLiAgICB8ICAgICAgICAgICAgICB8
ICAgICB8VGFwRXZlbnQgICB8ICB8LS0tLS0tLS0tLS0tfFxuICogfCAgRW1pdHRlciAgIHwgICAg
LiAgICB8ICAgICAgICAgICAgICB8PC0tLSt8UGx1Z2luICAgICB8ICB8b3RoZXIgcGx1Z2lufFxu
ICogfCAgICAgICAgICAgIHwgICAgLiAgICB8ICAgICAgICAgICAgICB8ICAgICArLS0tLS0tLS0t
LS0rICB8ICB1dGlsaXRpZXMgfFxuICogfCAgICAgKy0tLS0tLS0tLS0tLi0tLT58ICAgICAgICAg
ICAgICB8ICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tK1xuICogfCAgICAgfCAgICAg
IHwgICAgLiAgICArLS0tLS0tLS0tLS0tLS0rXG4gKiArLS0tLS18LS0tLS0tKyAgICAuICAgICAg
ICAgICAgICAgIF4gICAgICAgICstLS0tLS0tLS0tLStcbiAqICAgICAgIHwgICAgICAgICAgIC4g
ICAgICAgICAgICAgICAgfCAgICAgICAgfEVudGVyL0xlYXZlfFxuICogICAgICAgKyAgICAgICAg
ICAgLiAgICAgICAgICAgICAgICArLS0tLS0tLSt8UGx1Z2luICAgICB8XG4gKiArLS0tLS0tLS0t
LS0tLSsgICAuICAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLStcbiAqIHwgYXBw
bGljYXRpb24gfCAgIC5cbiAqIHwtLS0tLS0tLS0tLS0tfCAgIC5cbiAqIHwgICAgICAgICAgICAg
fCAgIC5cbiAqIHwgICAgICAgICAgICAgfCAgIC5cbiAqICstLS0tLS0tLS0tLS0tKyAgIC5cbiAq
ICAgICAgICAgICAgICAgICAgIC5cbiAqICAgIFJlYWN0IENvcmUgICAgIC4gIEdlbmVyYWwgUHVy
cG9zZSBFdmVudCBQbHVnaW4gU3lzdGVtXG4gKi9cblxudmFyIGhhc0V2ZW50UGFnZVhZO1xudmFy
IGFscmVhZHlMaXN0ZW5pbmdUbyA9IHt9O1xudmFyIGlzTW9uaXRvcmluZ1Njcm9sbFZhbHVlID0g
ZmFsc2U7XG52YXIgcmVhY3RUb3BMaXN0ZW5lcnNDb3VudGVyID0gMDtcblxuLy8gRm9yIGV2ZW50
cyBsaWtlICdzdWJtaXQnIHdoaWNoIGRvbid0IGNvbnNpc3RlbnRseSBidWJibGUgKHdoaWNoIHdl
IHRyYXAgYXQgYVxuLy8gbG93ZXIgbm9kZSB0aGFuIGBkb2N1bWVudGApLCBiaW5kaW5nIGF0IGBk
b2N1bWVudGAgd291bGQgY2F1c2UgZHVwbGljYXRlXG4vLyBldmVudHMgc28gd2UgZG9uJ3QgaW5j
bHVkZSB0aGVtIGhlcmVcbnZhciB0b3BFdmVudE1hcHBpbmcgPSB7XG4gIHRvcEFib3J0OiAnYWJv
cnQnLFxuICB0b3BBbmltYXRpb25FbmQ6IGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lKCdhbmlt
YXRpb25lbmQnKSB8fCAnYW5pbWF0aW9uZW5kJyxcbiAgdG9wQW5pbWF0aW9uSXRlcmF0aW9uOiBn
ZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZSgnYW5pbWF0aW9uaXRlcmF0aW9uJykgfHwgJ2FuaW1h
dGlvbml0ZXJhdGlvbicsXG4gIHRvcEFuaW1hdGlvblN0YXJ0OiBnZXRWZW5kb3JQcmVmaXhlZEV2
ZW50TmFtZSgnYW5pbWF0aW9uc3RhcnQnKSB8fCAnYW5pbWF0aW9uc3RhcnQnLFxuICB0b3BCbHVy
OiAnYmx1cicsXG4gIHRvcENhblBsYXk6ICdjYW5wbGF5JyxcbiAgdG9wQ2FuUGxheVRocm91Z2g6
ICdjYW5wbGF5dGhyb3VnaCcsXG4gIHRvcENoYW5nZTogJ2NoYW5nZScsXG4gIHRvcENsaWNrOiAn
Y2xpY2snLFxuICB0b3BDb21wb3NpdGlvbkVuZDogJ2NvbXBvc2l0aW9uZW5kJyxcbiAgdG9wQ29t
cG9zaXRpb25TdGFydDogJ2NvbXBvc2l0aW9uc3RhcnQnLFxuICB0b3BDb21wb3NpdGlvblVwZGF0
ZTogJ2NvbXBvc2l0aW9udXBkYXRlJyxcbiAgdG9wQ29udGV4dE1lbnU6ICdjb250ZXh0bWVudScs
XG4gIHRvcENvcHk6ICdjb3B5JyxcbiAgdG9wQ3V0OiAnY3V0JyxcbiAgdG9wRG91YmxlQ2xpY2s6
ICdkYmxjbGljaycsXG4gIHRvcERyYWc6ICdkcmFnJyxcbiAgdG9wRHJhZ0VuZDogJ2RyYWdlbmQn
LFxuICB0b3BEcmFnRW50ZXI6ICdkcmFnZW50ZXInLFxuICB0b3BEcmFnRXhpdDogJ2RyYWdleGl0
JyxcbiAgdG9wRHJhZ0xlYXZlOiAnZHJhZ2xlYXZlJyxcbiAgdG9wRHJhZ092ZXI6ICdkcmFnb3Zl
cicsXG4gIHRvcERyYWdTdGFydDogJ2RyYWdzdGFydCcsXG4gIHRvcERyb3A6ICdkcm9wJyxcbiAg
dG9wRHVyYXRpb25DaGFuZ2U6ICdkdXJhdGlvbmNoYW5nZScsXG4gIHRvcEVtcHRpZWQ6ICdlbXB0
aWVkJyxcbiAgdG9wRW5jcnlwdGVkOiAnZW5jcnlwdGVkJyxcbiAgdG9wRW5kZWQ6ICdlbmRlZCcs
XG4gIHRvcEVycm9yOiAnZXJyb3InLFxuICB0b3BGb2N1czogJ2ZvY3VzJyxcbiAgdG9wSW5wdXQ6
ICdpbnB1dCcsXG4gIHRvcEtleURvd246ICdrZXlkb3duJyxcbiAgdG9wS2V5UHJlc3M6ICdrZXlw
cmVzcycsXG4gIHRvcEtleVVwOiAna2V5dXAnLFxuICB0b3BMb2FkZWREYXRhOiAnbG9hZGVkZGF0
YScsXG4gIHRvcExvYWRlZE1ldGFkYXRhOiAnbG9hZGVkbWV0YWRhdGEnLFxuICB0b3BMb2FkU3Rh
cnQ6ICdsb2Fkc3RhcnQnLFxuICB0b3BNb3VzZURvd246ICdtb3VzZWRvd24nLFxuICB0b3BNb3Vz
ZU1vdmU6ICdtb3VzZW1vdmUnLFxuICB0b3BNb3VzZU91dDogJ21vdXNlb3V0JyxcbiAgdG9wTW91
c2VPdmVyOiAnbW91c2VvdmVyJyxcbiAgdG9wTW91c2VVcDogJ21vdXNldXAnLFxuICB0b3BQYXN0
ZTogJ3Bhc3RlJyxcbiAgdG9wUGF1c2U6ICdwYXVzZScsXG4gIHRvcFBsYXk6ICdwbGF5JyxcbiAg
dG9wUGxheWluZzogJ3BsYXlpbmcnLFxuICB0b3BQcm9ncmVzczogJ3Byb2dyZXNzJyxcbiAgdG9w
UmF0ZUNoYW5nZTogJ3JhdGVjaGFuZ2UnLFxuICB0b3BTY3JvbGw6ICdzY3JvbGwnLFxuICB0b3BT
ZWVrZWQ6ICdzZWVrZWQnLFxuICB0b3BTZWVraW5nOiAnc2Vla2luZycsXG4gIHRvcFNlbGVjdGlv
bkNoYW5nZTogJ3NlbGVjdGlvbmNoYW5nZScsXG4gIHRvcFN0YWxsZWQ6ICdzdGFsbGVkJyxcbiAg
dG9wU3VzcGVuZDogJ3N1c3BlbmQnLFxuICB0b3BUZXh0SW5wdXQ6ICd0ZXh0SW5wdXQnLFxuICB0
b3BUaW1lVXBkYXRlOiAndGltZXVwZGF0ZScsXG4gIHRvcFRvdWNoQ2FuY2VsOiAndG91Y2hjYW5j
ZWwnLFxuICB0b3BUb3VjaEVuZDogJ3RvdWNoZW5kJyxcbiAgdG9wVG91Y2hNb3ZlOiAndG91Y2ht
b3ZlJyxcbiAgdG9wVG91Y2hTdGFydDogJ3RvdWNoc3RhcnQnLFxuICB0b3BUcmFuc2l0aW9uRW5k
OiBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZSgndHJhbnNpdGlvbmVuZCcpIHx8ICd0cmFuc2l0
aW9uZW5kJyxcbiAgdG9wVm9sdW1lQ2hhbmdlOiAndm9sdW1lY2hhbmdlJyxcbiAgdG9wV2FpdGlu
ZzogJ3dhaXRpbmcnLFxuICB0b3BXaGVlbDogJ3doZWVsJ1xufTtcblxuLyoqXG4gKiBUbyBlbnN1
cmUgbm8gY29uZmxpY3RzIHdpdGggb3RoZXIgcG90ZW50aWFsIFJlYWN0IGluc3RhbmNlcyBvbiB0
aGUgcGFnZVxuICovXG52YXIgdG9wTGlzdGVuZXJzSURLZXkgPSAnX3JlYWN0TGlzdGVuZXJzSUQn
ICsgU3RyaW5nKE1hdGgucmFuZG9tKCkpLnNsaWNlKDIpO1xuXG5mdW5jdGlvbiBnZXRMaXN0ZW5p
bmdGb3JEb2N1bWVudChtb3VudEF0KSB7XG4gIC8vIEluIElFOCwgYG1vdW50QXRgIGlzIGEgaG9z
dCBvYmplY3QgYW5kIGRvZXNuJ3QgaGF2ZSBgaGFzT3duUHJvcGVydHlgXG4gIC8vIGRpcmVjdGx5
LlxuICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb3VudEF0LCB0
b3BMaXN0ZW5lcnNJREtleSkpIHtcbiAgICBtb3VudEF0W3RvcExpc3RlbmVyc0lES2V5XSA9IHJl
YWN0VG9wTGlzdGVuZXJzQ291bnRlcisrO1xuICAgIGFscmVhZHlMaXN0ZW5pbmdUb1ttb3VudEF0
W3RvcExpc3RlbmVyc0lES2V5XV0gPSB7fTtcbiAgfVxuICByZXR1cm4gYWxyZWFkeUxpc3Rlbmlu
Z1RvW21vdW50QXRbdG9wTGlzdGVuZXJzSURLZXldXTtcbn1cblxuLyoqXG4gKiBgUmVhY3RCcm93
c2VyRXZlbnRFbWl0dGVyYCBpcyB1c2VkIHRvIGF0dGFjaCB0b3AtbGV2ZWwgZXZlbnQgbGlzdGVu
ZXJzLiBGb3JcbiAqIGV4YW1wbGU6XG4gKlxuICogICBFdmVudFBsdWdpbkh1Yi5wdXRMaXN0ZW5l
cignbXlJRCcsICdvbkNsaWNrJywgbXlGdW5jdGlvbik7XG4gKlxuICogVGhpcyB3b3VsZCBhbGxv
Y2F0ZSBhIFwicmVnaXN0cmF0aW9uXCIgb2YgYCgnb25DbGljaycsIG15RnVuY3Rpb24pYCBvbiAn
bXlJRCcuXG4gKlxuICogQGludGVybmFsXG4gKi9cbnZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0
ZXIgPSBfYXNzaWduKHt9LCBSZWFjdEV2ZW50RW1pdHRlck1peGluLCB7XG4gIC8qKlxuICAgKiBJ
bmplY3RhYmxlIGV2ZW50IGJhY2tlbmRcbiAgICovXG4gIFJlYWN0RXZlbnRMaXN0ZW5lcjogbnVs
bCxcblxuICBpbmplY3Rpb246IHtcbiAgICAvKipcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gUmVh
Y3RFdmVudExpc3RlbmVyXG4gICAgICovXG4gICAgaW5qZWN0UmVhY3RFdmVudExpc3RlbmVyOiBm
dW5jdGlvbiAoUmVhY3RFdmVudExpc3RlbmVyKSB7XG4gICAgICBSZWFjdEV2ZW50TGlzdGVuZXIu
c2V0SGFuZGxlVG9wTGV2ZWwoUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLmhhbmRsZVRvcExldmVs
KTtcbiAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIgPSBS
ZWFjdEV2ZW50TGlzdGVuZXI7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBTZXRzIHdoZXRo
ZXIgb3Igbm90IGFueSBjcmVhdGVkIGNhbGxiYWNrcyBzaG91bGQgYmUgZW5hYmxlZC5cbiAgICpc
biAgICogQHBhcmFtIHtib29sZWFufSBlbmFibGVkIFRydWUgaWYgY2FsbGJhY2tzIHNob3VsZCBi
ZSBlbmFibGVkLlxuICAgKi9cbiAgc2V0RW5hYmxlZDogZnVuY3Rpb24gKGVuYWJsZWQpIHtcbiAg
ICBpZiAoUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lcikge1xuICAg
ICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci5zZXRFbmFibGVk
KGVuYWJsZWQpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogQHJldHVybiB7Ym9vbGVhbn0g
VHJ1ZSBpZiBjYWxsYmFja3MgYXJlIGVuYWJsZWQuXG4gICAqL1xuICBpc0VuYWJsZWQ6IGZ1bmN0
aW9uICgpIHtcbiAgICByZXR1cm4gISEoUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZl
bnRMaXN0ZW5lciAmJiBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVy
LmlzRW5hYmxlZCgpKTtcbiAgfSxcblxuICAvKipcbiAgICogV2UgbGlzdGVuIGZvciBidWJibGVk
IHRvdWNoIGV2ZW50cyBvbiB0aGUgZG9jdW1lbnQgb2JqZWN0LlxuICAgKlxuICAgKiBGaXJlZm94
IHY4LjAxIChhbmQgcG9zc2libHkgb3RoZXJzKSBleGhpYml0ZWQgc3RyYW5nZSBiZWhhdmlvciB3
aGVuXG4gICAqIG1vdW50aW5nIGBvbm1vdXNlbW92ZWAgZXZlbnRzIGF0IHNvbWUgbm9kZSB0aGF0
IHdhcyBub3QgdGhlIGRvY3VtZW50XG4gICAqIGVsZW1lbnQuIFRoZSBzeW1wdG9tcyB3ZXJlIHRo
YXQgaWYgeW91ciBtb3VzZSBpcyBub3QgbW92aW5nIG92ZXIgc29tZXRoaW5nXG4gICAqIGNvbnRh
aW5lZCB3aXRoaW4gdGhhdCBtb3VudCBwb2ludCAoZm9yIGV4YW1wbGUgb24gdGhlIGJhY2tncm91
bmQpIHRoZVxuICAgKiB0b3AtbGV2ZWwgbGlzdGVuZXJzIGZvciBgb25tb3VzZW1vdmVgIHdvbid0
IGJlIGNhbGxlZC4gSG93ZXZlciwgaWYgeW91XG4gICAqIHJlZ2lzdGVyIHRoZSBgbW91c2Vtb3Zl
YCBvbiB0aGUgZG9jdW1lbnQgb2JqZWN0LCB0aGVuIGl0IHdpbGwgb2YgY291cnNlXG4gICAqIGNh
dGNoIGFsbCBgbW91c2Vtb3ZlYHMuIFRoaXMgYWxvbmcgd2l0aCBpT1MgcXVpcmtzLCBqdXN0aWZp
ZXMgcmVzdHJpY3RpbmdcbiAgICogdG9wLWxldmVsIGxpc3RlbmVycyB0byB0aGUgZG9jdW1lbnQg
b2JqZWN0IG9ubHksIGF0IGxlYXN0IGZvciB0aGVzZVxuICAgKiBtb3ZlbWVudCB0eXBlcyBvZiBl
dmVudHMgYW5kIHBvc3NpYmx5IGFsbCBldmVudHMuXG4gICAqXG4gICAqIEBzZWUgaHR0cDovL3d3
dy5xdWlya3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMTAvMDkvY2xpY2tfZXZlbnRfZGVsLmh0
bWxcbiAgICpcbiAgICogQWxzbywgYGtleXVwYC9ga2V5cHJlc3NgL2BrZXlkb3duYCBkbyBub3Qg
YnViYmxlIHRvIHRoZSB3aW5kb3cgb24gSUUsIGJ1dFxuICAgKiB0aGV5IGJ1YmJsZSB0byBkb2N1
bWVudC5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZ2lzdHJhdGlvbk5hbWUgTmFtZSBv
ZiBsaXN0ZW5lciAoZS5nLiBgb25DbGlja2ApLlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29udGVu
dERvY3VtZW50SGFuZGxlIERvY3VtZW50IHdoaWNoIG93bnMgdGhlIGNvbnRhaW5lclxuICAgKi9c
biAgbGlzdGVuVG86IGZ1bmN0aW9uIChyZWdpc3RyYXRpb25OYW1lLCBjb250ZW50RG9jdW1lbnRI
YW5kbGUpIHtcbiAgICB2YXIgbW91bnRBdCA9IGNvbnRlbnREb2N1bWVudEhhbmRsZTtcbiAgICB2
YXIgaXNMaXN0ZW5pbmcgPSBnZXRMaXN0ZW5pbmdGb3JEb2N1bWVudChtb3VudEF0KTtcbiAgICB2
YXIgZGVwZW5kZW5jaWVzID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lRGVw
ZW5kZW5jaWVzW3JlZ2lzdHJhdGlvbk5hbWVdO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBk
ZXBlbmRlbmNpZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBkZXBlbmRlbmN5ID0gZGVwZW5k
ZW5jaWVzW2ldO1xuICAgICAgaWYgKCEoaXNMaXN0ZW5pbmcuaGFzT3duUHJvcGVydHkoZGVwZW5k
ZW5jeSkgJiYgaXNMaXN0ZW5pbmdbZGVwZW5kZW5jeV0pKSB7XG4gICAgICAgIGlmIChkZXBlbmRl
bmN5ID09PSAndG9wV2hlZWwnKSB7XG4gICAgICAgICAgaWYgKGlzRXZlbnRTdXBwb3J0ZWQoJ3do
ZWVsJykpIHtcbiAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50
TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wV2hlZWwnLCAnd2hlZWwnLCBtb3VudEF0KTtc
biAgICAgICAgICB9IGVsc2UgaWYgKGlzRXZlbnRTdXBwb3J0ZWQoJ21vdXNld2hlZWwnKSkge1xu
ICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50
cmFwQnViYmxlZEV2ZW50KCd0b3BXaGVlbCcsICdtb3VzZXdoZWVsJywgbW91bnRBdCk7XG4gICAg
ICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIC8vIEZpcmVmb3ggbmVlZHMgdG8gY2FwdHVyZSBh
IGRpZmZlcmVudCBtb3VzZSBzY3JvbGwgZXZlbnQuXG4gICAgICAgICAgICAvLyBAc2VlIGh0dHA6
Ly93d3cucXVpcmtzbW9kZS5vcmcvZG9tL2V2ZW50cy90ZXN0cy9zY3JvbGwuaHRtbFxuICAgICAg
ICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnVi
YmxlZEV2ZW50KCd0b3BXaGVlbCcsICdET01Nb3VzZVNjcm9sbCcsIG1vdW50QXQpO1xuICAgICAg
ICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChkZXBlbmRlbmN5ID09PSAndG9wU2Nyb2xsJykge1xu
ICAgICAgICAgIGlmIChpc0V2ZW50U3VwcG9ydGVkKCdzY3JvbGwnLCB0cnVlKSkge1xuICAgICAg
ICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2Fw
dHVyZWRFdmVudCgndG9wU2Nyb2xsJywgJ3Njcm9sbCcsIG1vdW50QXQpO1xuICAgICAgICAgIH0g
ZWxzZSB7XG4gICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExp
c3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcFNjcm9sbCcsICdzY3JvbGwnLCBSZWFjdEJyb3dz
ZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLldJTkRPV19IQU5ETEUpO1xuICAgICAg
ICAgIH1cbiAgICAgICAgfSBlbHNlIGlmIChkZXBlbmRlbmN5ID09PSAndG9wRm9jdXMnIHx8IGRl
cGVuZGVuY3kgPT09ICd0b3BCbHVyJykge1xuICAgICAgICAgIGlmIChpc0V2ZW50U3VwcG9ydGVk
KCdmb2N1cycsIHRydWUpKSB7XG4gICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIu
UmVhY3RFdmVudExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50KCd0b3BGb2N1cycsICdmb2N1cycs
IG1vdW50QXQpO1xuICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZl
bnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCgndG9wQmx1cicsICdibHVyJywgbW91bnRBdCk7
XG4gICAgICAgICAgfSBlbHNlIGlmIChpc0V2ZW50U3VwcG9ydGVkKCdmb2N1c2luJykpIHtcbiAg
ICAgICAgICAgIC8vIElFIGhhcyBgZm9jdXNpbmAgYW5kIGBmb2N1c291dGAgZXZlbnRzIHdoaWNo
IGJ1YmJsZS5cbiAgICAgICAgICAgIC8vIEBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9i
bG9nL2FyY2hpdmVzLzIwMDgvMDQvZGVsZWdhdGluZ190aGUuaHRtbFxuICAgICAgICAgICAgUmVh
Y3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50
KCd0b3BGb2N1cycsICdmb2N1c2luJywgbW91bnRBdCk7XG4gICAgICAgICAgICBSZWFjdEJyb3dz
ZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcEJs
dXInLCAnZm9jdXNvdXQnLCBtb3VudEF0KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyB0
byBtYWtlIHN1cmUgYmx1ciBhbmQgZm9jdXMgZXZlbnQgbGlzdGVuZXJzIGFyZSBvbmx5IGF0dGFj
aGVkIG9uY2VcbiAgICAgICAgICBpc0xpc3RlbmluZy50b3BCbHVyID0gdHJ1ZTtcbiAgICAgICAg
ICBpc0xpc3RlbmluZy50b3BGb2N1cyA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAodG9wRXZl
bnRNYXBwaW5nLmhhc093blByb3BlcnR5KGRlcGVuZGVuY3kpKSB7XG4gICAgICAgICAgUmVhY3RC
cm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KGRl
cGVuZGVuY3ksIHRvcEV2ZW50TWFwcGluZ1tkZXBlbmRlbmN5XSwgbW91bnRBdCk7XG4gICAgICAg
IH1cblxuICAgICAgICBpc0xpc3RlbmluZ1tkZXBlbmRlbmN5XSA9IHRydWU7XG4gICAgICB9XG4g
ICAgfVxuICB9LFxuXG4gIHRyYXBCdWJibGVkRXZlbnQ6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUs
IGhhbmRsZXJCYXNlTmFtZSwgaGFuZGxlKSB7XG4gICAgcmV0dXJuIFJlYWN0QnJvd3NlckV2ZW50
RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCh0b3BMZXZlbFR5cGUs
IGhhbmRsZXJCYXNlTmFtZSwgaGFuZGxlKTtcbiAgfSxcblxuICB0cmFwQ2FwdHVyZWRFdmVudDog
ZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgaGFuZGxlckJhc2VOYW1lLCBoYW5kbGUpIHtcbiAgICBy
ZXR1cm4gUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2Fw
dHVyZWRFdmVudCh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgaGFuZGxlKTtcbiAgfSxc
blxuICAvKipcbiAgICogUHJvdGVjdCBhZ2FpbnN0IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCkgcmV0
dXJuaW5nIG51bGxcbiAgICogU29tZSBwb3B1cCBibG9ja2VyIGV4dGVuc2lvbnMgYXBwZWFyIHRv
IGRvIHRoaXM6XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMv
Njg4N1xuICAgKi9cbiAgc3VwcG9ydHNFdmVudFBhZ2VYWTogZnVuY3Rpb24gKCkge1xuICAgIGlm
ICghZG9jdW1lbnQuY3JlYXRlRXZlbnQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4g
ICAgdmFyIGV2ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ01vdXNlRXZlbnQnKTtcbiAgICByZXR1
cm4gZXYgIT0gbnVsbCAmJiAncGFnZVgnIGluIGV2O1xuICB9LFxuXG4gIC8qKlxuICAgKiBMaXN0
ZW5zIHRvIHdpbmRvdyBzY3JvbGwgYW5kIHJlc2l6ZSBldmVudHMuIFdlIGNhY2hlIHNjcm9sbCB2
YWx1ZXMgc28gdGhhdFxuICAgKiBhcHBsaWNhdGlvbiBjb2RlIGNhbiBhY2Nlc3MgdGhlbSB3aXRo
b3V0IHRyaWdnZXJpbmcgcmVmbG93cy5cbiAgICpcbiAgICogVmlld3BvcnRNZXRyaWNzIGlzIG9u
bHkgdXNlZCBieSBTeW50aGV0aWNNb3VzZS9Ub3VjaEV2ZW50IGFuZCBvbmx5IHdoZW5cbiAgICog
cGFnZVgvcGFnZVkgaXNuJ3Qgc3VwcG9ydGVkIChsZWdhY3kgYnJvd3NlcnMpLlxuICAgKlxuICAg
KiBOT1RFOiBTY3JvbGwgZXZlbnRzIGRvIG5vdCBidWJibGUuXG4gICAqXG4gICAqIEBzZWUgaHR0
cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9kb20vZXZlbnRzL3Njcm9sbC5odG1sXG4gICAqL1xuICBl
bnN1cmVTY3JvbGxWYWx1ZU1vbml0b3Jpbmc6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoaGFzRXZl
bnRQYWdlWFkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgaGFzRXZlbnRQYWdlWFkgPSBSZWFjdEJy
b3dzZXJFdmVudEVtaXR0ZXIuc3VwcG9ydHNFdmVudFBhZ2VYWSgpO1xuICAgIH1cbiAgICBpZiAo
IWhhc0V2ZW50UGFnZVhZICYmICFpc01vbml0b3JpbmdTY3JvbGxWYWx1ZSkge1xuICAgICAgdmFy
IHJlZnJlc2ggPSBWaWV3cG9ydE1ldHJpY3MucmVmcmVzaFNjcm9sbFZhbHVlcztcbiAgICAgIFJl
YWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIubW9uaXRvclNjcm9sbFZh
bHVlKHJlZnJlc2gpO1xuICAgICAgaXNNb25pdG9yaW5nU2Nyb2xsVmFsdWUgPSB0cnVlO1xuICAg
IH1cbiAgfVxufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVy
O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3Jl
YWN0LWRvbS9saWIvUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLmpzXG4gKiogbW9kdWxlIGlkID0g
MjVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
ICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBTeW50aGV0aWNVSUV2ZW50ID0gcmVxdWly
ZSgnLi9TeW50aGV0aWNVSUV2ZW50Jyk7XG52YXIgVmlld3BvcnRNZXRyaWNzID0gcmVxdWlyZSgn
Li9WaWV3cG9ydE1ldHJpY3MnKTtcblxudmFyIGdldEV2ZW50TW9kaWZpZXJTdGF0ZSA9IHJlcXVp
cmUoJy4vZ2V0RXZlbnRNb2RpZmllclN0YXRlJyk7XG5cbi8qKlxuICogQGludGVyZmFjZSBNb3Vz
ZUV2ZW50XG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy9c
biAqL1xudmFyIE1vdXNlRXZlbnRJbnRlcmZhY2UgPSB7XG4gIHNjcmVlblg6IG51bGwsXG4gIHNj
cmVlblk6IG51bGwsXG4gIGNsaWVudFg6IG51bGwsXG4gIGNsaWVudFk6IG51bGwsXG4gIGN0cmxL
ZXk6IG51bGwsXG4gIHNoaWZ0S2V5OiBudWxsLFxuICBhbHRLZXk6IG51bGwsXG4gIG1ldGFLZXk6
IG51bGwsXG4gIGdldE1vZGlmaWVyU3RhdGU6IGdldEV2ZW50TW9kaWZpZXJTdGF0ZSxcbiAgYnV0
dG9uOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAvLyBXZWJraXQsIEZpcmVmb3gsIElFOStcbiAg
ICAvLyB3aGljaDogIDEgMiAzXG4gICAgLy8gYnV0dG9uOiAwIDEgMiAoc3RhbmRhcmQpXG4gICAg
dmFyIGJ1dHRvbiA9IGV2ZW50LmJ1dHRvbjtcbiAgICBpZiAoJ3doaWNoJyBpbiBldmVudCkge1xu
ICAgICAgcmV0dXJuIGJ1dHRvbjtcbiAgICB9XG4gICAgLy8gSUU8OVxuICAgIC8vIHdoaWNoOiAg
dW5kZWZpbmVkXG4gICAgLy8gYnV0dG9uOiAwIDAgMFxuICAgIC8vIGJ1dHRvbjogMSA0IDIgKG9u
bW91c2V1cClcbiAgICByZXR1cm4gYnV0dG9uID09PSAyID8gMiA6IGJ1dHRvbiA9PT0gNCA/IDEg
OiAwO1xuICB9LFxuICBidXR0b25zOiBudWxsLFxuICByZWxhdGVkVGFyZ2V0OiBmdW5jdGlvbiAo
ZXZlbnQpIHtcbiAgICByZXR1cm4gZXZlbnQucmVsYXRlZFRhcmdldCB8fCAoZXZlbnQuZnJvbUVs
ZW1lbnQgPT09IGV2ZW50LnNyY0VsZW1lbnQgPyBldmVudC50b0VsZW1lbnQgOiBldmVudC5mcm9t
RWxlbWVudCk7XG4gIH0sXG4gIC8vIFwiUHJvcHJpZXRhcnlcIiBJbnRlcmZhY2UuXG4gIHBhZ2VY
OiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICByZXR1cm4gJ3BhZ2VYJyBpbiBldmVudCA/IGV2ZW50
LnBhZ2VYIDogZXZlbnQuY2xpZW50WCArIFZpZXdwb3J0TWV0cmljcy5jdXJyZW50U2Nyb2xsTGVm
dDtcbiAgfSxcbiAgcGFnZVk6IGZ1bmN0aW9uIChldmVudCkge1xuICAgIHJldHVybiAncGFnZVkn
IGluIGV2ZW50ID8gZXZlbnQucGFnZVkgOiBldmVudC5jbGllbnRZICsgVmlld3BvcnRNZXRyaWNz
LmN1cnJlbnRTY3JvbGxUb3A7XG4gIH1cbn07XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGRp
c3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50Llxu
ICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUg
ZXZlbnQgdGFyZ2V0LlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93
c2VyIGV2ZW50LlxuICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9XG4gKi9cbmZ1bmN0aW9u
IFN5bnRoZXRpY01vdXNlRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRp
dmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgcmV0dXJuIFN5bnRoZXRpY1VJRXZlbnQu
Y2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBu
YXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRpY1VJRXZlbnQuYXVnbWVudENsYXNzKFN5
bnRoZXRpY01vdXNlRXZlbnQsIE1vdXNlRXZlbnRJbnRlcmZhY2UpO1xuXG5tb2R1bGUuZXhwb3J0
cyA9IFN5bnRoZXRpY01vdXNlRXZlbnQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VC
UEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNNb3VzZUV2ZW50Lmpz
XG4gKiogbW9kdWxlIGlkID0gMjZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxu
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9w
cm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFyIGlu
dmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG52YXIgT0JTRVJWRURf
RVJST1IgPSB7fTtcblxuLyoqXG4gKiBgVHJhbnNhY3Rpb25gIGNyZWF0ZXMgYSBibGFjayBib3gg
dGhhdCBpcyBhYmxlIHRvIHdyYXAgYW55IG1ldGhvZCBzdWNoIHRoYXRcbiAqIGNlcnRhaW4gaW52
YXJpYW50cyBhcmUgbWFpbnRhaW5lZCBiZWZvcmUgYW5kIGFmdGVyIHRoZSBtZXRob2QgaXMgaW52
b2tlZFxuICogKEV2ZW4gaWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biB3aGlsZSBpbnZva2luZyB0
aGUgd3JhcHBlZCBtZXRob2QpLiBXaG9ldmVyXG4gKiBpbnN0YW50aWF0ZXMgYSB0cmFuc2FjdGlv
biBjYW4gcHJvdmlkZSBlbmZvcmNlcnMgb2YgdGhlIGludmFyaWFudHMgYXRcbiAqIGNyZWF0aW9u
IHRpbWUuIFRoZSBgVHJhbnNhY3Rpb25gIGNsYXNzIGl0c2VsZiB3aWxsIHN1cHBseSBvbmUgYWRk
aXRpb25hbFxuICogYXV0b21hdGljIGludmFyaWFudCBmb3IgeW91IC0gdGhlIGludmFyaWFudCB0
aGF0IGFueSB0cmFuc2FjdGlvbiBpbnN0YW5jZVxuICogc2hvdWxkIG5vdCBiZSBydW4gd2hpbGUg
aXQgaXMgYWxyZWFkeSBiZWluZyBydW4uIFlvdSB3b3VsZCB0eXBpY2FsbHkgY3JlYXRlIGFcbiAq
IHNpbmdsZSBpbnN0YW5jZSBvZiBhIGBUcmFuc2FjdGlvbmAgZm9yIHJldXNlIG11bHRpcGxlIHRp
bWVzLCB0aGF0IHBvdGVudGlhbGx5XG4gKiBpcyB1c2VkIHRvIHdyYXAgc2V2ZXJhbCBkaWZmZXJl
bnQgbWV0aG9kcy4gV3JhcHBlcnMgYXJlIGV4dHJlbWVseSBzaW1wbGUgLVxuICogdGhleSBvbmx5
IHJlcXVpcmUgaW1wbGVtZW50aW5nIHR3byBtZXRob2RzLlxuICpcbiAqIDxwcmU+XG4gKiAgICAg
ICAgICAgICAgICAgICAgICAgd3JhcHBlcnMgKGluamVjdGVkIGF0IGNyZWF0aW9uIHRpbWUpXG4g
KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAgICAgICAgK1xuICogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgIHxcbiAqICAgICAgICAg
ICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS18LS0tLS0tLS18LS0tLS0tLS0tLS0tLS0rXG4g
KiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgdiAgICAgICAgfCAgICAgICAg
ICAgICAgfFxuICogICAgICAgICAgICAgICAgICAgIHwgICAgICArLS0tLS0tLS0tLS0tLS0tKyAg
IHwgICAgICAgICAgICAgIHxcbiAqICAgICAgICAgICAgICAgICAgICB8ICAgKy0tfCAgICB3cmFw
cGVyMSAgIHwtLS18LS0tLSsgICAgICAgICB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCAgIHwg
ICstLS0tLS0tLS0tLS0tLS0rICAgdiAgICB8ICAgICAgICAgfFxuICogICAgICAgICAgICAgICAg
ICAgIHwgICB8ICAgICAgICAgICstLS0tLS0tLS0tLS0tKyAgfCAgICAgICAgIHxcbiAqICAgICAg
ICAgICAgICAgICAgICB8ICAgfCAgICAgKy0tLS18ICAgd3JhcHBlcjIgIHwtLS0tLS0tLSsgICB8
XG4gKiAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgIHwgICAgKy0tLS0tLS0tLS0tLS0rICB8
ICAgICB8ICAgfFxuICogICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICB8ICAgICAgICAgICAg
ICAgICAgICAgfCAgICAgfCAgIHxcbiAqICAgICAgICAgICAgICAgICAgICB8ICAgdiAgICAgdiAg
ICAgICAgICAgICAgICAgICAgIHYgICAgIHYgICB8IHdyYXBwZXJcbiAqICAgICAgICAgICAgICAg
ICAgICB8ICstLS0rICstLS0rICAgKy0tLS0tLS0tLSsgICArLS0tKyArLS0tKyB8IGludmFyaWFu
dHNcbiAqIHBlcmZvcm0oYW55TWV0aG9kKSB8IHwgICB8IHwgICB8ICAgfCAgICAgICAgIHwgICB8
ICAgfCB8ICAgfCB8IG1haW50YWluZWRcbiAqICstLS0tLS0tLS0tLS0tLS0tLT58LXwtLS18LXwt
LS18LS0+fGFueU1ldGhvZHwtLS18LS0tfC18LS0tfC18LS0tLS0tLS0+XG4gKiAgICAgICAgICAg
ICAgICAgICAgfCB8ICAgfCB8ICAgfCAgIHwgICAgICAgICB8ICAgfCAgIHwgfCAgIHwgfFxuICog
ICAgICAgICAgICAgICAgICAgIHwgfCAgIHwgfCAgIHwgICB8ICAgICAgICAgfCAgIHwgICB8IHwg
ICB8IHxcbiAqICAgICAgICAgICAgICAgICAgICB8IHwgICB8IHwgICB8ICAgfCAgICAgICAgIHwg
ICB8ICAgfCB8ICAgfCB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCArLS0tKyArLS0tKyAgICst
LS0tLS0tLS0rICAgKy0tLSsgKy0tLSsgfFxuICogICAgICAgICAgICAgICAgICAgIHwgIGluaXRp
YWxpemUgICAgICAgICAgICAgICAgICAgIGNsb3NlICAgIHxcbiAqICAgICAgICAgICAgICAgICAg
ICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gKiA8L3ByZT5c
biAqXG4gKiBVc2UgY2FzZXM6XG4gKiAtIFByZXNlcnZpbmcgdGhlIGlucHV0IHNlbGVjdGlvbiBy
YW5nZXMgYmVmb3JlL2FmdGVyIHJlY29uY2lsaWF0aW9uLlxuICogICBSZXN0b3Jpbmcgc2VsZWN0
aW9uIGV2ZW4gaW4gdGhlIGV2ZW50IG9mIGFuIHVuZXhwZWN0ZWQgZXJyb3IuXG4gKiAtIERlYWN0
aXZhdGluZyBldmVudHMgd2hpbGUgcmVhcnJhbmdpbmcgdGhlIERPTSwgcHJldmVudGluZyBibHVy
cy9mb2N1c2VzLFxuICogICB3aGlsZSBndWFyYW50ZWVpbmcgdGhhdCBhZnRlcndhcmRzLCB0aGUg
ZXZlbnQgc3lzdGVtIGlzIHJlYWN0aXZhdGVkLlxuICogLSBGbHVzaGluZyBhIHF1ZXVlIG9mIGNv
bGxlY3RlZCBET00gbXV0YXRpb25zIHRvIHRoZSBtYWluIFVJIHRocmVhZCBhZnRlciBhXG4gKiAg
IHJlY29uY2lsaWF0aW9uIHRha2VzIHBsYWNlIGluIGEgd29ya2VyIHRocmVhZC5cbiAqIC0gSW52
b2tpbmcgYW55IGNvbGxlY3RlZCBgY29tcG9uZW50RGlkVXBkYXRlYCBjYWxsYmFja3MgYWZ0ZXIg
cmVuZGVyaW5nIG5ld1xuICogICBjb250ZW50LlxuICogLSAoRnV0dXJlIHVzZSBjYXNlKTogV3Jh
cHBpbmcgcGFydGljdWxhciBmbHVzaGVzIG9mIHRoZSBgUmVhY3RXb3JrZXJgIHF1ZXVlXG4gKiAg
IHRvIHByZXNlcnZlIHRoZSBgc2Nyb2xsVG9wYCAoYW4gYXV0b21hdGljIHNjcm9sbCBhd2FyZSBE
T00pLlxuICogLSAoRnV0dXJlIHVzZSBjYXNlKTogTGF5b3V0IGNhbGN1bGF0aW9ucyBiZWZvcmUg
YW5kIGFmdGVyIERPTSB1cGRhdGVzLlxuICpcbiAqIFRyYW5zYWN0aW9uYWwgcGx1Z2luIEFQSTpc
biAqIC0gQSBtb2R1bGUgdGhhdCBoYXMgYW4gYGluaXRpYWxpemVgIG1ldGhvZCB0aGF0IHJldHVy
bnMgYW55IHByZWNvbXB1dGF0aW9uLlxuICogLSBhbmQgYSBgY2xvc2VgIG1ldGhvZCB0aGF0IGFj
Y2VwdHMgdGhlIHByZWNvbXB1dGF0aW9uLiBgY2xvc2VgIGlzIGludm9rZWRcbiAqICAgd2hlbiB0
aGUgd3JhcHBlZCBwcm9jZXNzIGlzIGNvbXBsZXRlZCwgb3IgaGFzIGZhaWxlZC5cbiAqXG4gKiBA
cGFyYW0ge0FycmF5PFRyYW5zYWN0aW9uYWxXcmFwcGVyPn0gdHJhbnNhY3Rpb25XcmFwcGVyIFdy
YXBwZXIgbW9kdWxlc1xuICogdGhhdCBpbXBsZW1lbnQgYGluaXRpYWxpemVgIGFuZCBgY2xvc2Vg
LlxuICogQHJldHVybiB7VHJhbnNhY3Rpb259IFNpbmdsZSB0cmFuc2FjdGlvbiBmb3IgcmV1c2Ug
aW4gdGhyZWFkLlxuICpcbiAqIEBjbGFzcyBUcmFuc2FjdGlvblxuICovXG52YXIgVHJhbnNhY3Rp
b25JbXBsID0ge1xuICAvKipcbiAgICogU2V0cyB1cCB0aGlzIGluc3RhbmNlIHNvIHRoYXQgaXQg
aXMgcHJlcGFyZWQgZm9yIGNvbGxlY3RpbmcgbWV0cmljcy4gRG9lc1xuICAgKiBzbyBzdWNoIHRo
YXQgdGhpcyBzZXR1cCBtZXRob2QgbWF5IGJlIHVzZWQgb24gYW4gaW5zdGFuY2UgdGhhdCBpcyBh
bHJlYWR5XG4gICAqIGluaXRpYWxpemVkLCBpbiBhIHdheSB0aGF0IGRvZXMgbm90IGNvbnN1bWUg
YWRkaXRpb25hbCBtZW1vcnkgdXBvbiByZXVzZS5cbiAgICogVGhhdCBjYW4gYmUgdXNlZnVsIGlm
IHlvdSBkZWNpZGUgdG8gbWFrZSB5b3VyIHN1YmNsYXNzIG9mIHRoaXMgbWl4aW4gYVxuICAgKiBc
IlBvb2xlZENsYXNzXCIuXG4gICAqL1xuICByZWluaXRpYWxpemVUcmFuc2FjdGlvbjogZnVuY3Rp
b24gKCkge1xuICAgIHRoaXMudHJhbnNhY3Rpb25XcmFwcGVycyA9IHRoaXMuZ2V0VHJhbnNhY3Rp
b25XcmFwcGVycygpO1xuICAgIGlmICh0aGlzLndyYXBwZXJJbml0RGF0YSkge1xuICAgICAgdGhp
cy53cmFwcGVySW5pdERhdGEubGVuZ3RoID0gMDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy53
cmFwcGVySW5pdERhdGEgPSBbXTtcbiAgICB9XG4gICAgdGhpcy5faXNJblRyYW5zYWN0aW9uID0g
ZmFsc2U7XG4gIH0sXG5cbiAgX2lzSW5UcmFuc2FjdGlvbjogZmFsc2UsXG5cbiAgLyoqXG4gICAq
IEBhYnN0cmFjdFxuICAgKiBAcmV0dXJuIHtBcnJheTxUcmFuc2FjdGlvbldyYXBwZXI+fSBBcnJh
eSBvZiB0cmFuc2FjdGlvbiB3cmFwcGVycy5cbiAgICovXG4gIGdldFRyYW5zYWN0aW9uV3JhcHBl
cnM6IG51bGwsXG5cbiAgaXNJblRyYW5zYWN0aW9uOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJu
ICEhdGhpcy5faXNJblRyYW5zYWN0aW9uO1xuICB9LFxuXG4gIC8qIGVzbGludC1kaXNhYmxlIHNw
YWNlLWJlZm9yZS1mdW5jdGlvbi1wYXJlbiAqL1xuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyB0aGUg
ZnVuY3Rpb24gd2l0aGluIGEgc2FmZXR5IHdpbmRvdy4gVXNlIHRoaXMgZm9yIHRoZSB0b3AgbGV2
ZWxcbiAgICogbWV0aG9kcyB0aGF0IHJlc3VsdCBpbiBsYXJnZSBhbW91bnRzIG9mIGNvbXB1dGF0
aW9uL211dGF0aW9ucyB0aGF0IHdvdWxkXG4gICAqIG5lZWQgdG8gYmUgc2FmZXR5IGNoZWNrZWQu
IFRoZSBvcHRpb25hbCBhcmd1bWVudHMgaGVscHMgcHJldmVudCB0aGUgbmVlZFxuICAgKiB0byBi
aW5kIGluIG1hbnkgY2FzZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IG1ldGhvZCBN
ZW1iZXIgb2Ygc2NvcGUgdG8gY2FsbC5cbiAgICogQHBhcmFtIHtPYmplY3R9IHNjb3BlIFNjb3Bl
IHRvIGludm9rZSBmcm9tLlxuICAgKiBAcGFyYW0ge09iamVjdD89fSBhIEFyZ3VtZW50IHRvIHBh
c3MgdG8gdGhlIG1ldGhvZC5cbiAgICogQHBhcmFtIHtPYmplY3Q/PX0gYiBBcmd1bWVudCB0byBw
YXNzIHRvIHRoZSBtZXRob2QuXG4gICAqIEBwYXJhbSB7T2JqZWN0Pz19IGMgQXJndW1lbnQgdG8g
cGFzcyB0byB0aGUgbWV0aG9kLlxuICAgKiBAcGFyYW0ge09iamVjdD89fSBkIEFyZ3VtZW50IHRv
IHBhc3MgdG8gdGhlIG1ldGhvZC5cbiAgICogQHBhcmFtIHtPYmplY3Q/PX0gZSBBcmd1bWVudCB0
byBwYXNzIHRvIHRoZSBtZXRob2QuXG4gICAqIEBwYXJhbSB7T2JqZWN0Pz19IGYgQXJndW1lbnQg
dG8gcGFzcyB0byB0aGUgbWV0aG9kLlxuICAgKlxuICAgKiBAcmV0dXJuIHsqfSBSZXR1cm4gdmFs
dWUgZnJvbSBgbWV0aG9kYC5cbiAgICovXG4gIHBlcmZvcm06IGZ1bmN0aW9uIChtZXRob2QsIHNj
b3BlLCBhLCBiLCBjLCBkLCBlLCBmKSB7XG4gICAgLyogZXNsaW50LWVuYWJsZSBzcGFjZS1iZWZv
cmUtZnVuY3Rpb24tcGFyZW4gKi9cbiAgICAhIXRoaXMuaXNJblRyYW5zYWN0aW9uKCkgPyBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnVHJh
bnNhY3Rpb24ucGVyZm9ybSguLi4pOiBDYW5ub3QgaW5pdGlhbGl6ZSBhIHRyYW5zYWN0aW9uIHdo
ZW4gdGhlcmUgaXMgYWxyZWFkeSBhbiBvdXRzdGFuZGluZyB0cmFuc2FjdGlvbi4nKSA6IF9wcm9k
SW52YXJpYW50KCcyNycpIDogdm9pZCAwO1xuICAgIHZhciBlcnJvclRocm93bjtcbiAgICB2YXIg
cmV0O1xuICAgIHRyeSB7XG4gICAgICB0aGlzLl9pc0luVHJhbnNhY3Rpb24gPSB0cnVlO1xuICAg
ICAgLy8gQ2F0Y2hpbmcgZXJyb3JzIG1ha2VzIGRlYnVnZ2luZyBtb3JlIGRpZmZpY3VsdCwgc28g
d2Ugc3RhcnQgd2l0aFxuICAgICAgLy8gZXJyb3JUaHJvd24gc2V0IHRvIHRydWUgYmVmb3JlIHNl
dHRpbmcgaXQgdG8gZmFsc2UgYWZ0ZXIgY2FsbGluZ1xuICAgICAgLy8gY2xvc2UgLS0gaWYgaXQn
cyBzdGlsbCBzZXQgdG8gdHJ1ZSBpbiB0aGUgZmluYWxseSBibG9jaywgaXQgbWVhbnNcbiAgICAg
IC8vIG9uZSBvZiB0aGVzZSBjYWxscyB0aHJldy5cbiAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTtc
biAgICAgIHRoaXMuaW5pdGlhbGl6ZUFsbCgwKTtcbiAgICAgIHJldCA9IG1ldGhvZC5jYWxsKHNj
b3BlLCBhLCBiLCBjLCBkLCBlLCBmKTtcbiAgICAgIGVycm9yVGhyb3duID0gZmFsc2U7XG4gICAg
fSBmaW5hbGx5IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGlmIChlcnJvclRocm93bikge1xuICAg
ICAgICAgIC8vIElmIGBtZXRob2RgIHRocm93cywgcHJlZmVyIHRvIHNob3cgdGhhdCBzdGFjayB0
cmFjZSBvdmVyIGFueSB0aHJvd25cbiAgICAgICAgICAvLyBieSBpbnZva2luZyBgY2xvc2VBbGxg
LlxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmNsb3NlQWxsKDApO1xuICAgICAg
ICAgIH0gY2F0Y2ggKGVycikge31cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBTaW5j
ZSBgbWV0aG9kYCBkaWRuJ3QgdGhyb3csIHdlIGRvbid0IHdhbnQgdG8gc2lsZW5jZSB0aGUgZXhj
ZXB0aW9uXG4gICAgICAgICAgLy8gaGVyZS5cbiAgICAgICAgICB0aGlzLmNsb3NlQWxsKDApO1xu
ICAgICAgICB9XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICB0aGlzLl9pc0luVHJhbnNhY3Rp
b24gPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfSxcblxuICBp
bml0aWFsaXplQWxsOiBmdW5jdGlvbiAoc3RhcnRJbmRleCkge1xuICAgIHZhciB0cmFuc2FjdGlv
bldyYXBwZXJzID0gdGhpcy50cmFuc2FjdGlvbldyYXBwZXJzO1xuICAgIGZvciAodmFyIGkgPSBz
dGFydEluZGV4OyBpIDwgdHJhbnNhY3Rpb25XcmFwcGVycy5sZW5ndGg7IGkrKykge1xuICAgICAg
dmFyIHdyYXBwZXIgPSB0cmFuc2FjdGlvbldyYXBwZXJzW2ldO1xuICAgICAgdHJ5IHtcbiAgICAg
ICAgLy8gQ2F0Y2hpbmcgZXJyb3JzIG1ha2VzIGRlYnVnZ2luZyBtb3JlIGRpZmZpY3VsdCwgc28g
d2Ugc3RhcnQgd2l0aCB0aGVcbiAgICAgICAgLy8gT0JTRVJWRURfRVJST1Igc3RhdGUgYmVmb3Jl
IG92ZXJ3cml0aW5nIGl0IHdpdGggdGhlIHJlYWwgcmV0dXJuIHZhbHVlXG4gICAgICAgIC8vIG9m
IGluaXRpYWxpemUgLS0gaWYgaXQncyBzdGlsbCBzZXQgdG8gT0JTRVJWRURfRVJST1IgaW4gdGhl
IGZpbmFsbHlcbiAgICAgICAgLy8gYmxvY2ssIGl0IG1lYW5zIHdyYXBwZXIuaW5pdGlhbGl6ZSB0
aHJldy5cbiAgICAgICAgdGhpcy53cmFwcGVySW5pdERhdGFbaV0gPSBPQlNFUlZFRF9FUlJPUjtc
biAgICAgICAgdGhpcy53cmFwcGVySW5pdERhdGFbaV0gPSB3cmFwcGVyLmluaXRpYWxpemUgPyB3
cmFwcGVyLmluaXRpYWxpemUuY2FsbCh0aGlzKSA6IG51bGw7XG4gICAgICB9IGZpbmFsbHkge1xu
ICAgICAgICBpZiAodGhpcy53cmFwcGVySW5pdERhdGFbaV0gPT09IE9CU0VSVkVEX0VSUk9SKSB7
XG4gICAgICAgICAgLy8gVGhlIGluaXRpYWxpemVyIGZvciB3cmFwcGVyIGkgdGhyZXcgYW4gZXJy
b3I7IGluaXRpYWxpemUgdGhlXG4gICAgICAgICAgLy8gcmVtYWluaW5nIHdyYXBwZXJzIGJ1dCBz
aWxlbmNlIGFueSBleGNlcHRpb25zIGZyb20gdGhlbSB0byBlbnN1cmVcbiAgICAgICAgICAvLyB0
aGF0IHRoZSBmaXJzdCBlcnJvciBpcyB0aGUgb25lIHRvIGJ1YmJsZSB1cC5cbiAgICAgICAgICB0
cnkge1xuICAgICAgICAgICAgdGhpcy5pbml0aWFsaXplQWxsKGkgKyAxKTtcbiAgICAgICAgICB9
IGNhdGNoIChlcnIpIHt9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgLyoq
XG4gICAqIEludm9rZXMgZWFjaCBvZiBgdGhpcy50cmFuc2FjdGlvbldyYXBwZXJzLmNsb3NlW2ld
YCBmdW5jdGlvbnMsIHBhc3NpbmcgaW50b1xuICAgKiB0aGVtIHRoZSByZXNwZWN0aXZlIHJldHVy
biB2YWx1ZXMgb2YgYHRoaXMudHJhbnNhY3Rpb25XcmFwcGVycy5pbml0W2ldYFxuICAgKiAoYGNs
b3NlYHJzIHRoYXQgY29ycmVzcG9uZCB0byBpbml0aWFsaXplcnMgdGhhdCBmYWlsZWQgd2lsbCBu
b3QgYmVcbiAgICogaW52b2tlZCkuXG4gICAqL1xuICBjbG9zZUFsbDogZnVuY3Rpb24gKHN0YXJ0
SW5kZXgpIHtcbiAgICAhdGhpcy5pc0luVHJhbnNhY3Rpb24oKSA/IHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdUcmFuc2FjdGlvbi5jbG9z
ZUFsbCgpOiBDYW5ub3QgY2xvc2UgdHJhbnNhY3Rpb24gd2hlbiBub25lIGFyZSBvcGVuLicpIDog
X3Byb2RJbnZhcmlhbnQoJzI4JykgOiB2b2lkIDA7XG4gICAgdmFyIHRyYW5zYWN0aW9uV3JhcHBl
cnMgPSB0aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnM7XG4gICAgZm9yICh2YXIgaSA9IHN0YXJ0SW5k
ZXg7IGkgPCB0cmFuc2FjdGlvbldyYXBwZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgd3Jh
cHBlciA9IHRyYW5zYWN0aW9uV3JhcHBlcnNbaV07XG4gICAgICB2YXIgaW5pdERhdGEgPSB0aGlz
LndyYXBwZXJJbml0RGF0YVtpXTtcbiAgICAgIHZhciBlcnJvclRocm93bjtcbiAgICAgIHRyeSB7
XG4gICAgICAgIC8vIENhdGNoaW5nIGVycm9ycyBtYWtlcyBkZWJ1Z2dpbmcgbW9yZSBkaWZmaWN1
bHQsIHNvIHdlIHN0YXJ0IHdpdGhcbiAgICAgICAgLy8gZXJyb3JUaHJvd24gc2V0IHRvIHRydWUg
YmVmb3JlIHNldHRpbmcgaXQgdG8gZmFsc2UgYWZ0ZXIgY2FsbGluZ1xuICAgICAgICAvLyBjbG9z
ZSAtLSBpZiBpdCdzIHN0aWxsIHNldCB0byB0cnVlIGluIHRoZSBmaW5hbGx5IGJsb2NrLCBpdCBt
ZWFuc1xuICAgICAgICAvLyB3cmFwcGVyLmNsb3NlIHRocmV3LlxuICAgICAgICBlcnJvclRocm93
biA9IHRydWU7XG4gICAgICAgIGlmIChpbml0RGF0YSAhPT0gT0JTRVJWRURfRVJST1IgJiYgd3Jh
cHBlci5jbG9zZSkge1xuICAgICAgICAgIHdyYXBwZXIuY2xvc2UuY2FsbCh0aGlzLCBpbml0RGF0
YSk7XG4gICAgICAgIH1cbiAgICAgICAgZXJyb3JUaHJvd24gPSBmYWxzZTtcbiAgICAgIH0gZmlu
YWxseSB7XG4gICAgICAgIGlmIChlcnJvclRocm93bikge1xuICAgICAgICAgIC8vIFRoZSBjbG9z
ZXIgZm9yIHdyYXBwZXIgaSB0aHJldyBhbiBlcnJvcjsgY2xvc2UgdGhlIHJlbWFpbmluZ1xuICAg
ICAgICAgIC8vIHdyYXBwZXJzIGJ1dCBzaWxlbmNlIGFueSBleGNlcHRpb25zIGZyb20gdGhlbSB0
byBlbnN1cmUgdGhhdCB0aGVcbiAgICAgICAgICAvLyBmaXJzdCBlcnJvciBpcyB0aGUgb25lIHRv
IGJ1YmJsZSB1cC5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhpcy5jbG9zZUFsbChp
ICsgMSk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgfVxuICAgICAgfVxuICAg
IH1cbiAgICB0aGlzLndyYXBwZXJJbml0RGF0YS5sZW5ndGggPSAwO1xuICB9XG59O1xuXG5tb2R1
bGUuZXhwb3J0cyA9IFRyYW5zYWN0aW9uSW1wbDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAq
KiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1RyYW5zYWN0aW9uLmpzXG4g
KiogbW9kdWxlIGlkID0gMjdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICog
Q29weXJpZ2h0IDIwMTYtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuICpcbiAqIEJhc2VkIG9uIHRoZSBlc2NhcGUtaHRtbCBsaWJyYXJ5LCB3
aGljaCBpcyB1c2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZSBiZWxvdzpcbiAqXG4gKiBDb3B5cmln
aHQgKGMpIDIwMTItMjAxMyBUSiBIb2xvd2F5Y2h1a1xuICogQ29weXJpZ2h0IChjKSAyMDE1IEFu
ZHJlYXMgTHViYmVcbiAqIENvcHlyaWdodCAoYykgMjAxNSBUaWFuY2hlbmcgXCJUaW1vdGh5XCIg
R3VcbiAqXG4gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwg
dG8gYW55IHBlcnNvbiBvYnRhaW5pbmdcbiAqIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBh
c3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuICogJ1NvZnR3YXJlJyksIHRvIGRl
YWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuICogd2l0
aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBw
dWJsaXNoLFxuICogZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9m
IHRoZSBTb2Z0d2FyZSwgYW5kIHRvXG4gKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0
d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG9cbiAqIHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9uczpcbiAqXG4gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBw
ZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZVxuICogaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBz
dWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4gKlxuICogVEhFIFNPRlRXQVJF
IElTIFBST1ZJREVEICdBUyBJUycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsXG4gKiBF
WFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJB
TlRJRVMgT0ZcbiAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC5cbiAqIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRI
T1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZXG4gKiBDTEFJTSwgREFN
QUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNU
LFxuICogVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5F
Q1RJT04gV0lUSCBUSEVcbiAqIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1Mg
SU4gVEhFIFNPRlRXQVJFLlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8vIGNvZGUgY29w
aWVkIGFuZCBtb2RpZmllZCBmcm9tIGVzY2FwZS1odG1sXG4vKipcbiAqIE1vZHVsZSB2YXJpYWJs
ZXMuXG4gKiBAcHJpdmF0ZVxuICovXG5cbnZhciBtYXRjaEh0bWxSZWdFeHAgPSAvW1wiJyY8Pl0v
O1xuXG4vKipcbiAqIEVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gdGhlIGdpdmVuIHN0cmlu
ZyBvZiBodG1sLlxuICpcbiAqIEBwYXJhbSAge3N0cmluZ30gc3RyaW5nIFRoZSBzdHJpbmcgdG8g
ZXNjYXBlIGZvciBpbnNlcnRpbmcgaW50byBIVE1MXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKiBA
cHVibGljXG4gKi9cblxuZnVuY3Rpb24gZXNjYXBlSHRtbChzdHJpbmcpIHtcbiAgdmFyIHN0ciA9
ICcnICsgc3RyaW5nO1xuICB2YXIgbWF0Y2ggPSBtYXRjaEh0bWxSZWdFeHAuZXhlYyhzdHIpO1xu
XG4gIGlmICghbWF0Y2gpIHtcbiAgICByZXR1cm4gc3RyO1xuICB9XG5cbiAgdmFyIGVzY2FwZTtc
biAgdmFyIGh0bWwgPSAnJztcbiAgdmFyIGluZGV4ID0gMDtcbiAgdmFyIGxhc3RJbmRleCA9IDA7
XG5cbiAgZm9yIChpbmRleCA9IG1hdGNoLmluZGV4OyBpbmRleCA8IHN0ci5sZW5ndGg7IGluZGV4
KyspIHtcbiAgICBzd2l0Y2ggKHN0ci5jaGFyQ29kZUF0KGluZGV4KSkge1xuICAgICAgY2FzZSAz
NDpcbiAgICAgICAgLy8gXCJcbiAgICAgICAgZXNjYXBlID0gJyZxdW90Oyc7XG4gICAgICAgIGJy
ZWFrO1xuICAgICAgY2FzZSAzODpcbiAgICAgICAgLy8gJlxuICAgICAgICBlc2NhcGUgPSAnJmFt
cDsnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzk6XG4gICAgICAgIC8vICdcbiAgICAg
ICAgZXNjYXBlID0gJyYjeDI3Oyc7IC8vIG1vZGlmaWVkIGZyb20gZXNjYXBlLWh0bWw7IHVzZWQg
dG8gYmUgJyYjMzknXG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA2MDpcbiAgICAgICAgLy8g
PFxuICAgICAgICBlc2NhcGUgPSAnJmx0Oyc7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSA2
MjpcbiAgICAgICAgLy8gPlxuICAgICAgICBlc2NhcGUgPSAnJmd0Oyc7XG4gICAgICAgIGJyZWFr
O1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgaWYgKGxh
c3RJbmRleCAhPT0gaW5kZXgpIHtcbiAgICAgIGh0bWwgKz0gc3RyLnN1YnN0cmluZyhsYXN0SW5k
ZXgsIGluZGV4KTtcbiAgICB9XG5cbiAgICBsYXN0SW5kZXggPSBpbmRleCArIDE7XG4gICAgaHRt
bCArPSBlc2NhcGU7XG4gIH1cblxuICByZXR1cm4gbGFzdEluZGV4ICE9PSBpbmRleCA/IGh0bWwg
KyBzdHIuc3Vic3RyaW5nKGxhc3RJbmRleCwgaW5kZXgpIDogaHRtbDtcbn1cbi8vIGVuZCBjb2Rl
IGNvcGllZCBhbmQgbW9kaWZpZWQgZnJvbSBlc2NhcGUtaHRtbFxuXG4vKipcbiAqIEVzY2FwZXMg
dGV4dCB0byBwcmV2ZW50IHNjcmlwdGluZyBhdHRhY2tzLlxuICpcbiAqIEBwYXJhbSB7Kn0gdGV4
dCBUZXh0IHZhbHVlIHRvIGVzY2FwZS5cbiAqIEByZXR1cm4ge3N0cmluZ30gQW4gZXNjYXBlZCBz
dHJpbmcuXG4gKi9cbmZ1bmN0aW9uIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlcih0ZXh0KSB7
XG4gIGlmICh0eXBlb2YgdGV4dCA9PT0gJ2Jvb2xlYW4nIHx8IHR5cGVvZiB0ZXh0ID09PSAnbnVt
YmVyJykge1xuICAgIC8vIHRoaXMgc2hvcnRjaXJjdWl0IGhlbHBzIHBlcmYgZm9yIHR5cGVzIHRo
YXQgd2Uga25vdyB3aWxsIG5ldmVyIGhhdmVcbiAgICAvLyBzcGVjaWFsIGNoYXJhY3RlcnMsIGVz
cGVjaWFsbHkgZ2l2ZW4gdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgb2Z0ZW5cbiAgICAvLyBm
b3IgbnVtZXJpYyBkb20gaWRzLlxuICAgIHJldHVybiAnJyArIHRleHQ7XG4gIH1cbiAgcmV0dXJu
IGVzY2FwZUh0bWwodGV4dCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZXNjYXBlVGV4dENvbnRl
bnRGb3JCcm93c2VyO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVS
XG4gKiogLi9+L3JlYWN0LWRvbS9saWIvZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyLmpzXG4g
KiogbW9kdWxlIGlkID0gMjhcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFeGVjdXRpb25F
bnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG52
YXIgRE9NTmFtZXNwYWNlcyA9IHJlcXVpcmUoJy4vRE9NTmFtZXNwYWNlcycpO1xuXG52YXIgV0hJ
VEVTUEFDRV9URVNUID0gL15bIFxcclxcblxcdFxcZl0vO1xudmFyIE5PTlZJU0lCTEVfVEVTVCA9
IC88KCEtLXxsaW5rfG5vc2NyaXB0fG1ldGF8c2NyaXB0fHN0eWxlKVsgXFxyXFxuXFx0XFxmXFwv
Pl0vO1xuXG52YXIgY3JlYXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbiA9IHJlcXVpcmUo
Jy4vY3JlYXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbicpO1xuXG4vLyBTVkcgdGVtcCBj
b250YWluZXIgZm9yIElFIGxhY2tpbmcgaW5uZXJIVE1MXG52YXIgcmV1c2FibGVTVkdDb250YWlu
ZXI7XG5cbi8qKlxuICogU2V0IHRoZSBpbm5lckhUTUwgcHJvcGVydHkgb2YgYSBub2RlLCBlbnN1
cmluZyB0aGF0IHdoaXRlc3BhY2UgaXMgcHJlc2VydmVkXG4gKiBldmVuIGluIElFOC5cbiAqXG4g
KiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVcbiAqIEBwYXJhbSB7c3RyaW5nfSBodG1sXG4gKiBA
aW50ZXJuYWxcbiAqL1xudmFyIHNldElubmVySFRNTCA9IGNyZWF0ZU1pY3Jvc29mdFVuc2FmZUxv
Y2FsRnVuY3Rpb24oZnVuY3Rpb24gKG5vZGUsIGh0bWwpIHtcbiAgLy8gSUUgZG9lcyBub3QgaGF2
ZSBpbm5lckhUTUwgZm9yIFNWRyBub2Rlcywgc28gaW5zdGVhZCB3ZSBpbmplY3QgdGhlXG4gIC8v
IG5ldyBtYXJrdXAgaW4gYSB0ZW1wIG5vZGUgYW5kIHRoZW4gbW92ZSB0aGUgY2hpbGQgbm9kZXMg
YWNyb3NzIGludG9cbiAgLy8gdGhlIHRhcmdldCBub2RlXG4gIGlmIChub2RlLm5hbWVzcGFjZVVS
SSA9PT0gRE9NTmFtZXNwYWNlcy5zdmcgJiYgISgnaW5uZXJIVE1MJyBpbiBub2RlKSkge1xuICAg
IHJldXNhYmxlU1ZHQ29udGFpbmVyID0gcmV1c2FibGVTVkdDb250YWluZXIgfHwgZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgcmV1c2FibGVTVkdDb250YWluZXIuaW5uZXJIVE1M
ID0gJzxzdmc+JyArIGh0bWwgKyAnPC9zdmc+JztcbiAgICB2YXIgc3ZnTm9kZSA9IHJldXNhYmxl
U1ZHQ29udGFpbmVyLmZpcnN0Q2hpbGQ7XG4gICAgd2hpbGUgKHN2Z05vZGUuZmlyc3RDaGlsZCkg
e1xuICAgICAgbm9kZS5hcHBlbmRDaGlsZChzdmdOb2RlLmZpcnN0Q2hpbGQpO1xuICAgIH1cbiAg
fSBlbHNlIHtcbiAgICBub2RlLmlubmVySFRNTCA9IGh0bWw7XG4gIH1cbn0pO1xuXG5pZiAoRXhl
Y3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG4gIC8vIElFODogV2hlbiB1cGRhdGluZyBh
IGp1c3QgY3JlYXRlZCBub2RlIHdpdGggaW5uZXJIVE1MIG9ubHkgbGVhZGluZ1xuICAvLyB3aGl0
ZXNwYWNlIGlzIHJlbW92ZWQuIFdoZW4gdXBkYXRpbmcgYW4gZXhpc3Rpbmcgbm9kZSB3aXRoIGlu
bmVySFRNTFxuICAvLyB3aGl0ZXNwYWNlIGluIHJvb3QgVGV4dE5vZGVzIGlzIGFsc28gY29sbGFw
c2VkLlxuICAvLyBAc2VlIHF1aXJrc21vZGUub3JnL2J1Z3JlcG9ydHMvYXJjaGl2ZXMvMjAwNC8x
MS9pbm5lcmh0bWxfYW5kX3QuaHRtbFxuXG4gIC8vIEZlYXR1cmUgZGV0ZWN0aW9uOyBvbmx5IElF
OCBpcyBrbm93biB0byBiZWhhdmUgaW1wcm9wZXJseSBsaWtlIHRoaXMuXG4gIHZhciB0ZXN0RWxl
bWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICB0ZXN0RWxlbWVudC5pbm5l
ckhUTUwgPSAnICc7XG4gIGlmICh0ZXN0RWxlbWVudC5pbm5lckhUTUwgPT09ICcnKSB7XG4gICAg
c2V0SW5uZXJIVE1MID0gZnVuY3Rpb24gKG5vZGUsIGh0bWwpIHtcbiAgICAgIC8vIE1hZ2ljIHRo
ZW9yeTogSUU4IHN1cHBvc2VkbHkgZGlmZmVyZW50aWF0ZXMgYmV0d2VlbiBhZGRlZCBhbmQgdXBk
YXRlZFxuICAgICAgLy8gbm9kZXMgd2hlbiBwcm9jZXNzaW5nIGlubmVySFRNTCwgaW5uZXJIVE1M
IG9uIHVwZGF0ZWQgbm9kZXMgc3VmZmVyc1xuICAgICAgLy8gZnJvbSB3b3JzZSB3aGl0ZXNwYWNl
IGJlaGF2aW9yLiBSZS1hZGRpbmcgYSBub2RlIGxpa2UgdGhpcyB0cmlnZ2Vyc1xuICAgICAgLy8g
dGhlIGluaXRpYWwgYW5kIG1vcmUgZmF2b3JhYmxlIHdoaXRlc3BhY2UgYmVoYXZpb3IuXG4gICAg
ICAvLyBUT0RPOiBXaGF0IHRvIGRvIG9uIGEgZGV0YWNoZWQgbm9kZT9cbiAgICAgIGlmIChub2Rl
LnBhcmVudE5vZGUpIHtcbiAgICAgICAgbm9kZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChub2Rl
LCBub2RlKTtcbiAgICAgIH1cblxuICAgICAgLy8gV2UgYWxzbyBpbXBsZW1lbnQgYSB3b3JrYXJv
dW5kIGZvciBub24tdmlzaWJsZSB0YWdzIGRpc2FwcGVhcmluZyBpbnRvXG4gICAgICAvLyB0aGlu
IGFpciBvbiBJRTgsIHRoaXMgb25seSBoYXBwZW5zIGlmIHRoZXJlIGlzIG5vIHZpc2libGUgdGV4
dFxuICAgICAgLy8gaW4tZnJvbnQgb2YgdGhlIG5vbi12aXNpYmxlIHRhZ3MuIFBpZ2d5YmFjayBv
biB0aGUgd2hpdGVzcGFjZSBmaXhcbiAgICAgIC8vIGFuZCBzaW1wbHkgY2hlY2sgaWYgYW55IG5v
bi12aXNpYmxlIHRhZ3MgYXBwZWFyIGluIHRoZSBzb3VyY2UuXG4gICAgICBpZiAoV0hJVEVTUEFD
RV9URVNULnRlc3QoaHRtbCkgfHwgaHRtbFswXSA9PT0gJzwnICYmIE5PTlZJU0lCTEVfVEVTVC50
ZXN0KGh0bWwpKSB7XG4gICAgICAgIC8vIFJlY292ZXIgbGVhZGluZyB3aGl0ZXNwYWNlIGJ5IHRl
bXBvcmFyaWx5IHByZXBlbmRpbmcgYW55IGNoYXJhY3Rlci5cbiAgICAgICAgLy8gXFx1RkVGRiBo
YXMgdGhlIHBvdGVudGlhbCBhZHZhbnRhZ2Ugb2YgYmVpbmcgemVyby13aWR0aC9pbnZpc2libGUu
XG4gICAgICAgIC8vIFVnbGlmeUpTIGRyb3BzIFUrRkVGRiBjaGFycyB3aGVuIHBhcnNpbmcsIHNv
IHVzZSBTdHJpbmcuZnJvbUNoYXJDb2RlXG4gICAgICAgIC8vIGluIGhvcGVzIHRoYXQgdGhpcyBp
cyBwcmVzZXJ2ZWQgZXZlbiBpZiBcIlxcdUZFRkZcIiBpcyB0cmFuc2Zvcm1lZCB0b1xuICAgICAg
ICAvLyB0aGUgYWN0dWFsIFVuaWNvZGUgY2hhcmFjdGVyIChieSBCYWJlbCwgZm9yIGV4YW1wbGUp
LlxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vbWlzaG9vL1VnbGlmeUpTMi9ibG9iL3Yy
LjQuMjAvbGliL3BhcnNlLmpzI0wyMTZcbiAgICAgICAgbm9kZS5pbm5lckhUTUwgPSBTdHJpbmcu
ZnJvbUNoYXJDb2RlKDB4ZmVmZikgKyBodG1sO1xuXG4gICAgICAgIC8vIGRlbGV0ZURhdGEgbGVh
dmVzIGFuIGVtcHR5IGBUZXh0Tm9kZWAgd2hpY2ggb2Zmc2V0cyB0aGUgaW5kZXggb2YgYWxsXG4g
ICAgICAgIC8vIGNoaWxkcmVuLiBEZWZpbml0ZWx5IHdhbnQgdG8gYXZvaWQgdGhpcy5cbiAgICAg
ICAgdmFyIHRleHROb2RlID0gbm9kZS5maXJzdENoaWxkO1xuICAgICAgICBpZiAodGV4dE5vZGUu
ZGF0YS5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgICBub2RlLnJlbW92ZUNoaWxkKHRleHROb2Rl
KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0ZXh0Tm9kZS5kZWxldGVEYXRhKDAsIDEp
O1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlLmlubmVySFRNTCA9IGh0
bWw7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuICB0ZXN0RWxlbWVudCA9IG51bGw7XG59XG5cbm1v
ZHVsZS5leHBvcnRzID0gc2V0SW5uZXJIVE1MO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoq
IFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvc2V0SW5uZXJIVE1MLmpzXG4g
KiogbW9kdWxlIGlkID0gMjlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3Ry
aWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuY29tcG9zZSA9IGV4
cG9ydHMuYXBwbHlNaWRkbGV3YXJlID0gZXhwb3J0cy5iaW5kQWN0aW9uQ3JlYXRvcnMgPSBleHBv
cnRzLmNvbWJpbmVSZWR1Y2VycyA9IGV4cG9ydHMuY3JlYXRlU3RvcmUgPSB1bmRlZmluZWQ7XG5c
bnZhciBfY3JlYXRlU3RvcmUgPSByZXF1aXJlKCcuL2NyZWF0ZVN0b3JlJyk7XG5cbnZhciBfY3Jl
YXRlU3RvcmUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY3JlYXRlU3RvcmUpO1xuXG52YXIg
X2NvbWJpbmVSZWR1Y2VycyA9IHJlcXVpcmUoJy4vY29tYmluZVJlZHVjZXJzJyk7XG5cbnZhciBf
Y29tYmluZVJlZHVjZXJzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NvbWJpbmVSZWR1Y2Vy
cyk7XG5cbnZhciBfYmluZEFjdGlvbkNyZWF0b3JzID0gcmVxdWlyZSgnLi9iaW5kQWN0aW9uQ3Jl
YXRvcnMnKTtcblxudmFyIF9iaW5kQWN0aW9uQ3JlYXRvcnMyID0gX2ludGVyb3BSZXF1aXJlRGVm
YXVsdChfYmluZEFjdGlvbkNyZWF0b3JzKTtcblxudmFyIF9hcHBseU1pZGRsZXdhcmUgPSByZXF1
aXJlKCcuL2FwcGx5TWlkZGxld2FyZScpO1xuXG52YXIgX2FwcGx5TWlkZGxld2FyZTIgPSBfaW50
ZXJvcFJlcXVpcmVEZWZhdWx0KF9hcHBseU1pZGRsZXdhcmUpO1xuXG52YXIgX2NvbXBvc2UgPSBy
ZXF1aXJlKCcuL2NvbXBvc2UnKTtcblxudmFyIF9jb21wb3NlMiA9IF9pbnRlcm9wUmVxdWlyZURl
ZmF1bHQoX2NvbXBvc2UpO1xuXG52YXIgX3dhcm5pbmcgPSByZXF1aXJlKCcuL3V0aWxzL3dhcm5p
bmcnKTtcblxudmFyIF93YXJuaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3dhcm5pbmcp
O1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYm
IG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbi8qXG4qIFRo
aXMgaXMgYSBkdW1teSBmdW5jdGlvbiB0byBjaGVjayBpZiB0aGUgZnVuY3Rpb24gbmFtZSBoYXMg
YmVlbiBhbHRlcmVkIGJ5IG1pbmlmaWNhdGlvbi5cbiogSWYgdGhlIGZ1bmN0aW9uIGhhcyBiZWVu
IG1pbmlmaWVkIGFuZCBOT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nLCB3YXJuIHRoZSB1c2VyLlxu
Ki9cbmZ1bmN0aW9uIGlzQ3J1c2hlZCgpIHt9XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nICYmIHR5cGVvZiBpc0NydXNoZWQubmFtZSA9PT0gJ3N0cmluZycgJiYg
aXNDcnVzaGVkLm5hbWUgIT09ICdpc0NydXNoZWQnKSB7XG4gICgwLCBfd2FybmluZzJbJ2RlZmF1
bHQnXSkoJ1lvdSBhcmUgY3VycmVudGx5IHVzaW5nIG1pbmlmaWVkIGNvZGUgb3V0c2lkZSBvZiBO
T0RFX0VOViA9PT0gXFwncHJvZHVjdGlvblxcJy4gJyArICdUaGlzIG1lYW5zIHRoYXQgeW91IGFy
ZSBydW5uaW5nIGEgc2xvd2VyIGRldmVsb3BtZW50IGJ1aWxkIG9mIFJlZHV4LiAnICsgJ1lvdSBj
YW4gdXNlIGxvb3NlLWVudmlmeSAoaHR0cHM6Ly9naXRodWIuY29tL3plcnRvc2gvbG9vc2UtZW52
aWZ5KSBmb3IgYnJvd3NlcmlmeSAnICsgJ29yIERlZmluZVBsdWdpbiBmb3Igd2VicGFjayAoaHR0
cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8zMDAzMDAzMSkgJyArICd0byBlbnN1cmUg
eW91IGhhdmUgdGhlIGNvcnJlY3QgY29kZSBmb3IgeW91ciBwcm9kdWN0aW9uIGJ1aWxkLicpO1xu
fVxuXG5leHBvcnRzLmNyZWF0ZVN0b3JlID0gX2NyZWF0ZVN0b3JlMlsnZGVmYXVsdCddO1xuZXhw
b3J0cy5jb21iaW5lUmVkdWNlcnMgPSBfY29tYmluZVJlZHVjZXJzMlsnZGVmYXVsdCddO1xuZXhw
b3J0cy5iaW5kQWN0aW9uQ3JlYXRvcnMgPSBfYmluZEFjdGlvbkNyZWF0b3JzMlsnZGVmYXVsdCdd
O1xuZXhwb3J0cy5hcHBseU1pZGRsZXdhcmUgPSBfYXBwbHlNaWRkbGV3YXJlMlsnZGVmYXVsdCdd
O1xuZXhwb3J0cy5jb21wb3NlID0gX2NvbXBvc2UyWydkZWZhdWx0J107XG5cblxuLyoqKioqKioq
KioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVkdXgvbGliL2luZGV4Lmpz
XG4gKiogbW9kdWxlIGlkID0gMzBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qIVxu
ICBDb3B5cmlnaHQgKGMpIDIwMTYgSmVkIFdhdHNvbi5cbiAgTGljZW5zZWQgdW5kZXIgdGhlIE1J
VCBMaWNlbnNlIChNSVQpLCBzZWVcbiAgaHR0cDovL2plZHdhdHNvbi5naXRodWIuaW8vY2xhc3Nu
YW1lc1xuKi9cbi8qIGdsb2JhbCBkZWZpbmUgKi9cblxuKGZ1bmN0aW9uICgpIHtcblx0J3VzZSBz
dHJpY3QnO1xuXG5cdHZhciBoYXNPd24gPSB7fS5oYXNPd25Qcm9wZXJ0eTtcblxuXHRmdW5jdGlv
biBjbGFzc05hbWVzICgpIHtcblx0XHR2YXIgY2xhc3NlcyA9IFtdO1xuXG5cdFx0Zm9yICh2YXIg
aSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdHZhciBhcmcgPSBhcmd1
bWVudHNbaV07XG5cdFx0XHRpZiAoIWFyZykgY29udGludWU7XG5cblx0XHRcdHZhciBhcmdUeXBl
ID0gdHlwZW9mIGFyZztcblxuXHRcdFx0aWYgKGFyZ1R5cGUgPT09ICdzdHJpbmcnIHx8IGFyZ1R5
cGUgPT09ICdudW1iZXInKSB7XG5cdFx0XHRcdGNsYXNzZXMucHVzaChhcmcpO1xuXHRcdFx0fSBl
bHNlIGlmIChBcnJheS5pc0FycmF5KGFyZykpIHtcblx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGNsYXNz
TmFtZXMuYXBwbHkobnVsbCwgYXJnKSk7XG5cdFx0XHR9IGVsc2UgaWYgKGFyZ1R5cGUgPT09ICdv
YmplY3QnKSB7XG5cdFx0XHRcdGZvciAodmFyIGtleSBpbiBhcmcpIHtcblx0XHRcdFx0XHRpZiAo
aGFzT3duLmNhbGwoYXJnLCBrZXkpICYmIGFyZ1trZXldKSB7XG5cdFx0XHRcdFx0XHRjbGFzc2Vz
LnB1c2goa2V5KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0
XHRyZXR1cm4gY2xhc3Nlcy5qb2luKCcgJyk7XG5cdH1cblxuXHRpZiAodHlwZW9mIG1vZHVsZSAh
PT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcblx0XHRtb2R1bGUuZXhwb3J0cyA9
IGNsYXNzTmFtZXM7XG5cdH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAm
JiB0eXBlb2YgZGVmaW5lLmFtZCA9PT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8v
IHJlZ2lzdGVyIGFzICdjbGFzc25hbWVzJywgY29uc2lzdGVudCB3aXRoIG5wbSBwYWNrYWdlIG5h
bWVcblx0XHRkZWZpbmUoJ2NsYXNzbmFtZXMnLCBbXSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0cmV0
dXJuIGNsYXNzTmFtZXM7XG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0d2luZG93LmNsYXNzTmFt
ZXMgPSBjbGFzc05hbWVzO1xuXHR9XG59KCkpO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4g
KiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vY2xhc3NuYW1lcy9pbmRleC5qc1xuICoqIG1vZHVs
ZSBpZCA9IDMxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdo
dCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG4gKlxuICogQHR5cGVjaGVja3NcbiAqIFxuICovXG5cbi8qZXNsaW50LWRpc2Fi
bGUgbm8tc2VsZi1jb21wYXJlICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGhhc093blByb3Bl
cnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqXG4gKiBpbmxpbmVk
IE9iamVjdC5pcyBwb2x5ZmlsbCB0byBhdm9pZCByZXF1aXJpbmcgY29uc3VtZXJzIHNoaXAgdGhl
aXIgb3duXG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9K
YXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0cy9PYmplY3QvaXNcbiAqL1xuZnVuY3Rp
b24gaXMoeCwgeSkge1xuICAvLyBTYW1lVmFsdWUgYWxnb3JpdGhtXG4gIGlmICh4ID09PSB5KSB7
XG4gICAgLy8gU3RlcHMgMS01LCA3LTEwXG4gICAgLy8gU3RlcHMgNi5iLTYuZTogKzAgIT0gLTBc
biAgICAvLyBBZGRlZCB0aGUgbm9uemVybyB5IGNoZWNrIHRvIG1ha2UgRmxvdyBoYXBweSwgYnV0
IGl0IGlzIHJlZHVuZGFudFxuICAgIHJldHVybiB4ICE9PSAwIHx8IHkgIT09IDAgfHwgMSAvIHgg
PT09IDEgLyB5O1xuICB9IGVsc2Uge1xuICAgIC8vIFN0ZXAgNi5hOiBOYU4gPT0gTmFOXG4gICAg
cmV0dXJuIHggIT09IHggJiYgeSAhPT0geTtcbiAgfVxufVxuXG4vKipcbiAqIFBlcmZvcm1zIGVx
dWFsaXR5IGJ5IGl0ZXJhdGluZyB0aHJvdWdoIGtleXMgb24gYW4gb2JqZWN0IGFuZCByZXR1cm5p
bmcgZmFsc2VcbiAqIHdoZW4gYW55IGtleSBoYXMgdmFsdWVzIHdoaWNoIGFyZSBub3Qgc3RyaWN0
bHkgZXF1YWwgYmV0d2VlbiB0aGUgYXJndW1lbnRzLlxuICogUmV0dXJucyB0cnVlIHdoZW4gdGhl
IHZhbHVlcyBvZiBhbGwga2V5cyBhcmUgc3RyaWN0bHkgZXF1YWwuXG4gKi9cbmZ1bmN0aW9uIHNo
YWxsb3dFcXVhbChvYmpBLCBvYmpCKSB7XG4gIGlmIChpcyhvYmpBLCBvYmpCKSkge1xuICAgIHJl
dHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKHR5cGVvZiBvYmpBICE9PSAnb2JqZWN0JyB8fCBvYmpB
ID09PSBudWxsIHx8IHR5cGVvZiBvYmpCICE9PSAnb2JqZWN0JyB8fCBvYmpCID09PSBudWxsKSB7
XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIGtleXNBID0gT2JqZWN0LmtleXMob2Jq
QSk7XG4gIHZhciBrZXlzQiA9IE9iamVjdC5rZXlzKG9iakIpO1xuXG4gIGlmIChrZXlzQS5sZW5n
dGggIT09IGtleXNCLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIFRl
c3QgZm9yIEEncyBrZXlzIGRpZmZlcmVudCBmcm9tIEIuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwg
a2V5c0EubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoIWhhc093blByb3BlcnR5LmNhbGwob2JqQiwg
a2V5c0FbaV0pIHx8ICFpcyhvYmpBW2tleXNBW2ldXSwgb2JqQltrZXlzQVtpXV0pKSB7XG4gICAg
ICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG5cbm1vZHVs
ZS5leHBvcnRzID0gc2hhbGxvd0VxdWFsO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdF
QlBBQ0sgRk9PVEVSXG4gKiogLi9+L2ZianMvbGliL3NoYWxsb3dFcXVhbC5qc1xuICoqIG1vZHVs
ZSBpZCA9IDMyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgYmFzZUdldFRhZyA9
IHJlcXVpcmUoJy4vX2Jhc2VHZXRUYWcnKSxcbiAgICBnZXRQcm90b3R5cGUgPSByZXF1aXJlKCcu
L19nZXRQcm90b3R5cGUnKSxcbiAgICBpc09iamVjdExpa2UgPSByZXF1aXJlKCcuL2lzT2JqZWN0
TGlrZScpO1xuXG4vKiogYE9iamVjdCN0b1N0cmluZ2AgcmVzdWx0IHJlZmVyZW5jZXMuICovXG52
YXIgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1p
biBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBmdW5jUHJvdG8gPSBGdW5jdGlvbi5wcm90b3R5
cGUsXG4gICAgb2JqZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKiogVXNlZCB0byBy
ZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlvbnMuICovXG52YXIgZnVuY1Rv
U3RyaW5nID0gZnVuY1Byb3RvLnRvU3RyaW5nO1xuXG4vKiogVXNlZCB0byBjaGVjayBvYmplY3Rz
IGZvciBvd24gcHJvcGVydGllcy4gKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3Rv
Lmhhc093blByb3BlcnR5O1xuXG4vKiogVXNlZCB0byBpbmZlciB0aGUgYE9iamVjdGAgY29uc3Ry
dWN0b3IuICovXG52YXIgb2JqZWN0Q3RvclN0cmluZyA9IGZ1bmNUb1N0cmluZy5jYWxsKE9iamVj
dCk7XG5cbi8qKlxuICogQ2hlY2tzIGlmIGB2YWx1ZWAgaXMgYSBwbGFpbiBvYmplY3QsIHRoYXQg
aXMsIGFuIG9iamVjdCBjcmVhdGVkIGJ5IHRoZVxuICogYE9iamVjdGAgY29uc3RydWN0b3Igb3Ig
b25lIHdpdGggYSBgW1tQcm90b3R5cGVdXWAgb2YgYG51bGxgLlxuICpcbiAqIEBzdGF0aWNcbiAq
IEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgMC44LjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFy
YW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBjaGVjay5cbiAqIEByZXR1cm5zIHtib29sZWFufSBS
ZXR1cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAu
XG4gKiBAZXhhbXBsZVxuICpcbiAqIGZ1bmN0aW9uIEZvbygpIHtcbiAqICAgdGhpcy5hID0gMTtc
biAqIH1cbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QobmV3IEZvbyk7XG4gKiAvLyA9PiBmYWxzZVxu
ICpcbiAqIF8uaXNQbGFpbk9iamVjdChbMSwgMiwgM10pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4g
KiBfLmlzUGxhaW5PYmplY3QoeyAneCc6IDAsICd5JzogMCB9KTtcbiAqIC8vID0+IHRydWVcbiAq
XG4gKiBfLmlzUGxhaW5PYmplY3QoT2JqZWN0LmNyZWF0ZShudWxsKSk7XG4gKiAvLyA9PiB0cnVl
XG4gKi9cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3QodmFsdWUpIHtcbiAgaWYgKCFpc09iamVjdExp
a2UodmFsdWUpIHx8IGJhc2VHZXRUYWcodmFsdWUpICE9IG9iamVjdFRhZykge1xuICAgIHJldHVy
biBmYWxzZTtcbiAgfVxuICB2YXIgcHJvdG8gPSBnZXRQcm90b3R5cGUodmFsdWUpO1xuICBpZiAo
cHJvdG8gPT09IG51bGwpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICB2YXIgQ3RvciA9IGhh
c093blByb3BlcnR5LmNhbGwocHJvdG8sICdjb25zdHJ1Y3RvcicpICYmIHByb3RvLmNvbnN0cnVj
dG9yO1xuICByZXR1cm4gdHlwZW9mIEN0b3IgPT0gJ2Z1bmN0aW9uJyAmJiBDdG9yIGluc3RhbmNl
b2YgQ3RvciAmJlxuICAgIGZ1bmNUb1N0cmluZy5jYWxsKEN0b3IpID09IG9iamVjdEN0b3JTdHJp
bmc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNQbGFpbk9iamVjdDtcblxuXG5cbi8qKioqKioq
KioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9pc1BsYWluT2Jq
ZWN0LmpzXG4gKiogbW9kdWxlIGlkID0gMzNcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIs
Ii8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBE
T01MYXp5VHJlZSA9IHJlcXVpcmUoJy4vRE9NTGF6eVRyZWUnKTtcbnZhciBEYW5nZXIgPSByZXF1
aXJlKCcuL0RhbmdlcicpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4v
UmVhY3RET01Db21wb25lbnRUcmVlJyk7XG52YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSByZXF1
aXJlKCcuL1JlYWN0SW5zdHJ1bWVudGF0aW9uJyk7XG5cbnZhciBjcmVhdGVNaWNyb3NvZnRVbnNh
ZmVMb2NhbEZ1bmN0aW9uID0gcmVxdWlyZSgnLi9jcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1
bmN0aW9uJyk7XG52YXIgc2V0SW5uZXJIVE1MID0gcmVxdWlyZSgnLi9zZXRJbm5lckhUTUwnKTtc
bnZhciBzZXRUZXh0Q29udGVudCA9IHJlcXVpcmUoJy4vc2V0VGV4dENvbnRlbnQnKTtcblxuZnVu
Y3Rpb24gZ2V0Tm9kZUFmdGVyKHBhcmVudE5vZGUsIG5vZGUpIHtcbiAgLy8gU3BlY2lhbCBjYXNl
IGZvciB0ZXh0IGNvbXBvbmVudHMsIHdoaWNoIHJldHVybiBbb3BlbiwgY2xvc2VdIGNvbW1lbnRz
XG4gIC8vIGZyb20gZ2V0SG9zdE5vZGUuXG4gIGlmIChBcnJheS5pc0FycmF5KG5vZGUpKSB7XG4g
ICAgbm9kZSA9IG5vZGVbMV07XG4gIH1cbiAgcmV0dXJuIG5vZGUgPyBub2RlLm5leHRTaWJsaW5n
IDogcGFyZW50Tm9kZS5maXJzdENoaWxkO1xufVxuXG4vKipcbiAqIEluc2VydHMgYGNoaWxkTm9k
ZWAgYXMgYSBjaGlsZCBvZiBgcGFyZW50Tm9kZWAgYXQgdGhlIGBpbmRleGAuXG4gKlxuICogQHBh
cmFtIHtET01FbGVtZW50fSBwYXJlbnROb2RlIFBhcmVudCBub2RlIGluIHdoaWNoIHRvIGluc2Vy
dC5cbiAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY2hpbGROb2RlIENoaWxkIG5vZGUgdG8gaW5zZXJ0
LlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IGF0IHdoaWNoIHRvIGluc2VydCB0aGUg
Y2hpbGQuXG4gKiBAaW50ZXJuYWxcbiAqL1xudmFyIGluc2VydENoaWxkQXQgPSBjcmVhdGVNaWNy
b3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uIChwYXJlbnROb2RlLCBjaGlsZE5vZGUs
IHJlZmVyZW5jZU5vZGUpIHtcbiAgLy8gV2UgcmVseSBleGNsdXNpdmVseSBvbiBgaW5zZXJ0QmVm
b3JlKG5vZGUsIG51bGwpYCBpbnN0ZWFkIG9mIGFsc28gdXNpbmdcbiAgLy8gYGFwcGVuZENoaWxk
KG5vZGUpYC4gKFVzaW5nIGB1bmRlZmluZWRgIGlzIG5vdCBhbGxvd2VkIGJ5IGFsbCBicm93c2Vy
cyBzb1xuICAvLyB3ZSBhcmUgY2FyZWZ1bCB0byB1c2UgYG51bGxgLilcbiAgcGFyZW50Tm9kZS5p
bnNlcnRCZWZvcmUoY2hpbGROb2RlLCByZWZlcmVuY2VOb2RlKTtcbn0pO1xuXG5mdW5jdGlvbiBp
bnNlcnRMYXp5VHJlZUNoaWxkQXQocGFyZW50Tm9kZSwgY2hpbGRUcmVlLCByZWZlcmVuY2VOb2Rl
KSB7XG4gIERPTUxhenlUcmVlLmluc2VydFRyZWVCZWZvcmUocGFyZW50Tm9kZSwgY2hpbGRUcmVl
LCByZWZlcmVuY2VOb2RlKTtcbn1cblxuZnVuY3Rpb24gbW92ZUNoaWxkKHBhcmVudE5vZGUsIGNo
aWxkTm9kZSwgcmVmZXJlbmNlTm9kZSkge1xuICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZE5vZGUp
KSB7XG4gICAgbW92ZURlbGltaXRlZFRleHQocGFyZW50Tm9kZSwgY2hpbGROb2RlWzBdLCBjaGls
ZE5vZGVbMV0sIHJlZmVyZW5jZU5vZGUpO1xuICB9IGVsc2Uge1xuICAgIGluc2VydENoaWxkQXQo
cGFyZW50Tm9kZSwgY2hpbGROb2RlLCByZWZlcmVuY2VOb2RlKTtcbiAgfVxufVxuXG5mdW5jdGlv
biByZW1vdmVDaGlsZChwYXJlbnROb2RlLCBjaGlsZE5vZGUpIHtcbiAgaWYgKEFycmF5LmlzQXJy
YXkoY2hpbGROb2RlKSkge1xuICAgIHZhciBjbG9zaW5nQ29tbWVudCA9IGNoaWxkTm9kZVsxXTtc
biAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGVbMF07XG4gICAgcmVtb3ZlRGVsaW1pdGVkVGV4dChw
YXJlbnROb2RlLCBjaGlsZE5vZGUsIGNsb3NpbmdDb21tZW50KTtcbiAgICBwYXJlbnROb2RlLnJl
bW92ZUNoaWxkKGNsb3NpbmdDb21tZW50KTtcbiAgfVxuICBwYXJlbnROb2RlLnJlbW92ZUNoaWxk
KGNoaWxkTm9kZSk7XG59XG5cbmZ1bmN0aW9uIG1vdmVEZWxpbWl0ZWRUZXh0KHBhcmVudE5vZGUs
IG9wZW5pbmdDb21tZW50LCBjbG9zaW5nQ29tbWVudCwgcmVmZXJlbmNlTm9kZSkge1xuICB2YXIg
bm9kZSA9IG9wZW5pbmdDb21tZW50O1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIHZhciBuZXh0Tm9k
ZSA9IG5vZGUubmV4dFNpYmxpbmc7XG4gICAgaW5zZXJ0Q2hpbGRBdChwYXJlbnROb2RlLCBub2Rl
LCByZWZlcmVuY2VOb2RlKTtcbiAgICBpZiAobm9kZSA9PT0gY2xvc2luZ0NvbW1lbnQpIHtcbiAg
ICAgIGJyZWFrO1xuICAgIH1cbiAgICBub2RlID0gbmV4dE5vZGU7XG4gIH1cbn1cblxuZnVuY3Rp
b24gcmVtb3ZlRGVsaW1pdGVkVGV4dChwYXJlbnROb2RlLCBzdGFydE5vZGUsIGNsb3NpbmdDb21t
ZW50KSB7XG4gIHdoaWxlICh0cnVlKSB7XG4gICAgdmFyIG5vZGUgPSBzdGFydE5vZGUubmV4dFNp
Ymxpbmc7XG4gICAgaWYgKG5vZGUgPT09IGNsb3NpbmdDb21tZW50KSB7XG4gICAgICAvLyBUaGUg
Y2xvc2luZyBjb21tZW50IGlzIHJlbW92ZWQgYnkgUmVhY3RNdWx0aUNoaWxkLlxuICAgICAgYnJl
YWs7XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcmVudE5vZGUucmVtb3ZlQ2hpbGQobm9kZSk7XG4g
ICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VEZWxpbWl0ZWRUZXh0KG9wZW5pbmdDb21t
ZW50LCBjbG9zaW5nQ29tbWVudCwgc3RyaW5nVGV4dCkge1xuICB2YXIgcGFyZW50Tm9kZSA9IG9w
ZW5pbmdDb21tZW50LnBhcmVudE5vZGU7XG4gIHZhciBub2RlQWZ0ZXJDb21tZW50ID0gb3Blbmlu
Z0NvbW1lbnQubmV4dFNpYmxpbmc7XG4gIGlmIChub2RlQWZ0ZXJDb21tZW50ID09PSBjbG9zaW5n
Q29tbWVudCkge1xuICAgIC8vIFRoZXJlIGFyZSBubyB0ZXh0IG5vZGVzIGJldHdlZW4gdGhlIG9w
ZW5pbmcgYW5kIGNsb3NpbmcgY29tbWVudHM7IGluc2VydFxuICAgIC8vIGEgbmV3IG9uZSBpZiBz
dHJpbmdUZXh0IGlzbid0IGVtcHR5LlxuICAgIGlmIChzdHJpbmdUZXh0KSB7XG4gICAgICBpbnNl
cnRDaGlsZEF0KHBhcmVudE5vZGUsIGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0cmluZ1RleHQp
LCBub2RlQWZ0ZXJDb21tZW50KTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgaWYgKHN0cmluZ1Rl
eHQpIHtcbiAgICAgIC8vIFNldCB0aGUgdGV4dCBjb250ZW50IG9mIHRoZSBmaXJzdCBub2RlIGFm
dGVyIHRoZSBvcGVuaW5nIGNvbW1lbnQsIGFuZFxuICAgICAgLy8gcmVtb3ZlIGFsbCBmb2xsb3dp
bmcgbm9kZXMgdXAgdW50aWwgdGhlIGNsb3NpbmcgY29tbWVudC5cbiAgICAgIHNldFRleHRDb250
ZW50KG5vZGVBZnRlckNvbW1lbnQsIHN0cmluZ1RleHQpO1xuICAgICAgcmVtb3ZlRGVsaW1pdGVk
VGV4dChwYXJlbnROb2RlLCBub2RlQWZ0ZXJDb21tZW50LCBjbG9zaW5nQ29tbWVudCk7XG4gICAg
fSBlbHNlIHtcbiAgICAgIHJlbW92ZURlbGltaXRlZFRleHQocGFyZW50Tm9kZSwgb3BlbmluZ0Nv
bW1lbnQsIGNsb3NpbmdDb21tZW50KTtcbiAgICB9XG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRl
YnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuICAgICAgaW5zdGFuY2VJRDogUmVhY3RET01Db21w
b25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUob3BlbmluZ0NvbW1lbnQpLl9kZWJ1Z0lELFxu
ICAgICAgdHlwZTogJ3JlcGxhY2UgdGV4dCcsXG4gICAgICBwYXlsb2FkOiBzdHJpbmdUZXh0XG4g
ICAgfSk7XG4gIH1cbn1cblxudmFyIGRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwID0g
RGFuZ2VyLmRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwO1xuaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdp
dGhNYXJrdXAgPSBmdW5jdGlvbiAob2xkQ2hpbGQsIG1hcmt1cCwgcHJldkluc3RhbmNlKSB7XG4g
ICAgRGFuZ2VyLmRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwKG9sZENoaWxkLCBtYXJr
dXApO1xuICAgIGlmIChwcmV2SW5zdGFuY2UuX2RlYnVnSUQgIT09IDApIHtcbiAgICAgIFJlYWN0
SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuICAgICAgICBpbnN0
YW5jZUlEOiBwcmV2SW5zdGFuY2UuX2RlYnVnSUQsXG4gICAgICAgIHR5cGU6ICdyZXBsYWNlIHdp
dGgnLFxuICAgICAgICBwYXlsb2FkOiBtYXJrdXAudG9TdHJpbmcoKVxuICAgICAgfSk7XG4gICAg
fSBlbHNlIHtcbiAgICAgIHZhciBuZXh0SW5zdGFuY2UgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUu
Z2V0SW5zdGFuY2VGcm9tTm9kZShtYXJrdXAubm9kZSk7XG4gICAgICBpZiAobmV4dEluc3RhbmNl
Ll9kZWJ1Z0lEICE9PSAwKSB7XG4gICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9v
bC5vbkhvc3RPcGVyYXRpb24oe1xuICAgICAgICAgIGluc3RhbmNlSUQ6IG5leHRJbnN0YW5jZS5f
ZGVidWdJRCxcbiAgICAgICAgICB0eXBlOiAnbW91bnQnLFxuICAgICAgICAgIHBheWxvYWQ6IG1h
cmt1cC50b1N0cmluZygpXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxu
LyoqXG4gKiBPcGVyYXRpb25zIGZvciB1cGRhdGluZyB3aXRoIERPTSBjaGlsZHJlbi5cbiAqL1xu
dmFyIERPTUNoaWxkcmVuT3BlcmF0aW9ucyA9IHtcbiAgZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdp
dGhNYXJrdXA6IGRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwLFxuXG4gIHJlcGxhY2VE
ZWxpbWl0ZWRUZXh0OiByZXBsYWNlRGVsaW1pdGVkVGV4dCxcblxuICAvKipcbiAgICogVXBkYXRl
cyBhIGNvbXBvbmVudCdzIGNoaWxkcmVuIGJ5IHByb2Nlc3NpbmcgYSBzZXJpZXMgb2YgdXBkYXRl
cy4gVGhlXG4gICAqIHVwZGF0ZSBjb25maWd1cmF0aW9ucyBhcmUgZWFjaCBleHBlY3RlZCB0byBo
YXZlIGEgYHBhcmVudE5vZGVgIHByb3BlcnR5LlxuICAgKlxuICAgKiBAcGFyYW0ge2FycmF5PG9i
amVjdD59IHVwZGF0ZXMgTGlzdCBvZiB1cGRhdGUgY29uZmlndXJhdGlvbnMuXG4gICAqIEBpbnRl
cm5hbFxuICAgKi9cbiAgcHJvY2Vzc1VwZGF0ZXM6IGZ1bmN0aW9uIChwYXJlbnROb2RlLCB1cGRh
dGVzKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtc
biAgICAgIHZhciBwYXJlbnROb2RlRGVidWdJRCA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJ
bnN0YW5jZUZyb21Ob2RlKHBhcmVudE5vZGUpLl9kZWJ1Z0lEO1xuICAgIH1cblxuICAgIGZvciAo
dmFyIGsgPSAwOyBrIDwgdXBkYXRlcy5sZW5ndGg7IGsrKykge1xuICAgICAgdmFyIHVwZGF0ZSA9
IHVwZGF0ZXNba107XG4gICAgICBzd2l0Y2ggKHVwZGF0ZS50eXBlKSB7XG4gICAgICAgIGNhc2Ug
J0lOU0VSVF9NQVJLVVAnOlxuICAgICAgICAgIGluc2VydExhenlUcmVlQ2hpbGRBdChwYXJlbnRO
b2RlLCB1cGRhdGUuY29udGVudCwgZ2V0Tm9kZUFmdGVyKHBhcmVudE5vZGUsIHVwZGF0ZS5hZnRl
ck5vZGUpKTtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJykge1xuICAgICAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9z
dE9wZXJhdGlvbih7XG4gICAgICAgICAgICAgIGluc3RhbmNlSUQ6IHBhcmVudE5vZGVEZWJ1Z0lE
LFxuICAgICAgICAgICAgICB0eXBlOiAnaW5zZXJ0IGNoaWxkJyxcbiAgICAgICAgICAgICAgcGF5
bG9hZDoge1xuICAgICAgICAgICAgICAgIHRvSW5kZXg6IHVwZGF0ZS50b0luZGV4LFxuICAgICAg
ICAgICAgICAgIGNvbnRlbnQ6IHVwZGF0ZS5jb250ZW50LnRvU3RyaW5nKClcbiAgICAgICAgICAg
ICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAg
ICAgICBjYXNlICdNT1ZFX0VYSVNUSU5HJzpcbiAgICAgICAgICBtb3ZlQ2hpbGQocGFyZW50Tm9k
ZSwgdXBkYXRlLmZyb21Ob2RlLCBnZXROb2RlQWZ0ZXIocGFyZW50Tm9kZSwgdXBkYXRlLmFmdGVy
Tm9kZSkpO1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0
T3BlcmF0aW9uKHtcbiAgICAgICAgICAgICAgaW5zdGFuY2VJRDogcGFyZW50Tm9kZURlYnVnSUQs
XG4gICAgICAgICAgICAgIHR5cGU6ICdtb3ZlIGNoaWxkJyxcbiAgICAgICAgICAgICAgcGF5bG9h
ZDogeyBmcm9tSW5kZXg6IHVwZGF0ZS5mcm9tSW5kZXgsIHRvSW5kZXg6IHVwZGF0ZS50b0luZGV4
IH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAg
ICAgY2FzZSAnU0VUX01BUktVUCc6XG4gICAgICAgICAgc2V0SW5uZXJIVE1MKHBhcmVudE5vZGUs
IHVwZGF0ZS5jb250ZW50KTtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdU
b29sLm9uSG9zdE9wZXJhdGlvbih7XG4gICAgICAgICAgICAgIGluc3RhbmNlSUQ6IHBhcmVudE5v
ZGVEZWJ1Z0lELFxuICAgICAgICAgICAgICB0eXBlOiAncmVwbGFjZSBjaGlsZHJlbicsXG4gICAg
ICAgICAgICAgIHBheWxvYWQ6IHVwZGF0ZS5jb250ZW50LnRvU3RyaW5nKClcbiAgICAgICAgICAg
IH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnVEVYVF9D
T05URU5UJzpcbiAgICAgICAgICBzZXRUZXh0Q29udGVudChwYXJlbnROb2RlLCB1cGRhdGUuY29u
dGVudCk7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicpIHtcbiAgICAgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RP
cGVyYXRpb24oe1xuICAgICAgICAgICAgICBpbnN0YW5jZUlEOiBwYXJlbnROb2RlRGVidWdJRCxc
biAgICAgICAgICAgICAgdHlwZTogJ3JlcGxhY2UgdGV4dCcsXG4gICAgICAgICAgICAgIHBheWxv
YWQ6IHVwZGF0ZS5jb250ZW50LnRvU3RyaW5nKClcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAg
IH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnUkVNT1ZFX05PREUnOlxuICAgICAg
ICAgIHJlbW92ZUNoaWxkKHBhcmVudE5vZGUsIHVwZGF0ZS5mcm9tTm9kZSk7XG4gICAgICAgICAg
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAg
IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuICAgICAg
ICAgICAgICBpbnN0YW5jZUlEOiBwYXJlbnROb2RlRGVidWdJRCxcbiAgICAgICAgICAgICAgdHlw
ZTogJ3JlbW92ZSBjaGlsZCcsXG4gICAgICAgICAgICAgIHBheWxvYWQ6IHsgZnJvbUluZGV4OiB1
cGRhdGUuZnJvbUluZGV4IH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAg
ICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRE9N
Q2hpbGRyZW5PcGVyYXRpb25zO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sg
Rk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvRE9NQ2hpbGRyZW5PcGVyYXRpb25zLmpzXG4g
KiogbW9kdWxlIGlkID0gMzRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBET01OYW1lc3Bh
Y2VzID0ge1xuICBodG1sOiAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcsXG4gIG1hdGht
bDogJ2h0dHA6Ly93d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwnLFxuICBzdmc6ICdodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2Zydcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRE9NTmFtZXNwYWNl
cztcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9y
ZWFjdC1kb20vbGliL0RPTU5hbWVzcGFjZXMuanNcbiAqKiBtb2R1bGUgaWQgPSAzNVxuICoqIG1v
ZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4g
Ki9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3Jl
YWN0UHJvZEludmFyaWFudCcpO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIv
aW52YXJpYW50Jyk7XG5cbi8qKlxuICogSW5qZWN0YWJsZSBvcmRlcmluZyBvZiBldmVudCBwbHVn
aW5zLlxuICovXG52YXIgZXZlbnRQbHVnaW5PcmRlciA9IG51bGw7XG5cbi8qKlxuICogSW5qZWN0
YWJsZSBtYXBwaW5nIGZyb20gbmFtZXMgdG8gZXZlbnQgcGx1Z2luIG1vZHVsZXMuXG4gKi9cbnZh
ciBuYW1lc1RvUGx1Z2lucyA9IHt9O1xuXG4vKipcbiAqIFJlY29tcHV0ZXMgdGhlIHBsdWdpbiBs
aXN0IHVzaW5nIHRoZSBpbmplY3RlZCBwbHVnaW5zIGFuZCBwbHVnaW4gb3JkZXJpbmcuXG4gKlxu
ICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gcmVjb21wdXRlUGx1Z2luT3JkZXJpbmcoKSB7XG4g
IGlmICghZXZlbnRQbHVnaW5PcmRlcikge1xuICAgIC8vIFdhaXQgdW50aWwgYW4gYGV2ZW50UGx1
Z2luT3JkZXJgIGlzIGluamVjdGVkLlxuICAgIHJldHVybjtcbiAgfVxuICBmb3IgKHZhciBwbHVn
aW5OYW1lIGluIG5hbWVzVG9QbHVnaW5zKSB7XG4gICAgdmFyIHBsdWdpbk1vZHVsZSA9IG5hbWVz
VG9QbHVnaW5zW3BsdWdpbk5hbWVdO1xuICAgIHZhciBwbHVnaW5JbmRleCA9IGV2ZW50UGx1Z2lu
T3JkZXIuaW5kZXhPZihwbHVnaW5OYW1lKTtcbiAgICAhKHBsdWdpbkluZGV4ID4gLTEpID8gcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V2
ZW50UGx1Z2luUmVnaXN0cnk6IENhbm5vdCBpbmplY3QgZXZlbnQgcGx1Z2lucyB0aGF0IGRvIG5v
dCBleGlzdCBpbiB0aGUgcGx1Z2luIG9yZGVyaW5nLCBgJXNgLicsIHBsdWdpbk5hbWUpIDogX3By
b2RJbnZhcmlhbnQoJzk2JywgcGx1Z2luTmFtZSkgOiB2b2lkIDA7XG4gICAgaWYgKEV2ZW50UGx1
Z2luUmVnaXN0cnkucGx1Z2luc1twbHVnaW5JbmRleF0pIHtcbiAgICAgIGNvbnRpbnVlO1xuICAg
IH1cbiAgICAhcGx1Z2luTW9kdWxlLmV4dHJhY3RFdmVudHMgPyBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXZlbnRQbHVnaW5SZWdpc3Ry
eTogRXZlbnQgcGx1Z2lucyBtdXN0IGltcGxlbWVudCBhbiBgZXh0cmFjdEV2ZW50c2AgbWV0aG9k
LCBidXQgYCVzYCBkb2VzIG5vdC4nLCBwbHVnaW5OYW1lKSA6IF9wcm9kSW52YXJpYW50KCc5Nycs
IHBsdWdpbk5hbWUpIDogdm9pZCAwO1xuICAgIEV2ZW50UGx1Z2luUmVnaXN0cnkucGx1Z2luc1tw
bHVnaW5JbmRleF0gPSBwbHVnaW5Nb2R1bGU7XG4gICAgdmFyIHB1Ymxpc2hlZEV2ZW50cyA9IHBs
dWdpbk1vZHVsZS5ldmVudFR5cGVzO1xuICAgIGZvciAodmFyIGV2ZW50TmFtZSBpbiBwdWJsaXNo
ZWRFdmVudHMpIHtcbiAgICAgICFwdWJsaXNoRXZlbnRGb3JQbHVnaW4ocHVibGlzaGVkRXZlbnRz
W2V2ZW50TmFtZV0sIHBsdWdpbk1vZHVsZSwgZXZlbnROYW1lKSA/IHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVudFBsdWdpblJlZ2lz
dHJ5OiBGYWlsZWQgdG8gcHVibGlzaCBldmVudCBgJXNgIGZvciBwbHVnaW4gYCVzYC4nLCBldmVu
dE5hbWUsIHBsdWdpbk5hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzk4JywgZXZlbnROYW1lLCBwbHVn
aW5OYW1lKSA6IHZvaWQgMDtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBQdWJsaXNoZXMgYW4g
ZXZlbnQgc28gdGhhdCBpdCBjYW4gYmUgZGlzcGF0Y2hlZCBieSB0aGUgc3VwcGxpZWQgcGx1Z2lu
LlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBEaXNwYXRjaCBjb25maWd1
cmF0aW9uIGZvciB0aGUgZXZlbnQuXG4gKiBAcGFyYW0ge29iamVjdH0gUGx1Z2luTW9kdWxlIFBs
dWdpbiBwdWJsaXNoaW5nIHRoZSBldmVudC5cbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYg
dGhlIGV2ZW50IHdhcyBzdWNjZXNzZnVsbHkgcHVibGlzaGVkLlxuICogQHByaXZhdGVcbiAqL1xu
ZnVuY3Rpb24gcHVibGlzaEV2ZW50Rm9yUGx1Z2luKGRpc3BhdGNoQ29uZmlnLCBwbHVnaW5Nb2R1
bGUsIGV2ZW50TmFtZSkge1xuICAhIUV2ZW50UGx1Z2luUmVnaXN0cnkuZXZlbnROYW1lRGlzcGF0
Y2hDb25maWdzLmhhc093blByb3BlcnR5KGV2ZW50TmFtZSkgPyBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXZlbnRQbHVnaW5IdWI6IE1v
cmUgdGhhbiBvbmUgcGx1Z2luIGF0dGVtcHRlZCB0byBwdWJsaXNoIHRoZSBzYW1lIGV2ZW50IG5h
bWUsIGAlc2AuJywgZXZlbnROYW1lKSA6IF9wcm9kSW52YXJpYW50KCc5OScsIGV2ZW50TmFtZSkg
OiB2b2lkIDA7XG4gIEV2ZW50UGx1Z2luUmVnaXN0cnkuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdz
W2V2ZW50TmFtZV0gPSBkaXNwYXRjaENvbmZpZztcblxuICB2YXIgcGhhc2VkUmVnaXN0cmF0aW9u
TmFtZXMgPSBkaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcztcbiAgaWYgKHBo
YXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7XG4gICAgZm9yICh2YXIgcGhhc2VOYW1lIGluIHBoYXNl
ZFJlZ2lzdHJhdGlvbk5hbWVzKSB7XG4gICAgICBpZiAocGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMu
aGFzT3duUHJvcGVydHkocGhhc2VOYW1lKSkge1xuICAgICAgICB2YXIgcGhhc2VkUmVnaXN0cmF0
aW9uTmFtZSA9IHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW3BoYXNlTmFtZV07XG4gICAgICAgIHB1
Ymxpc2hSZWdpc3RyYXRpb25OYW1lKHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWUsIHBsdWdpbk1vZHVs
ZSwgZXZlbnROYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gZWxz
ZSBpZiAoZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSkge1xuICAgIHB1Ymxpc2hSZWdp
c3RyYXRpb25OYW1lKGRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUsIHBsdWdpbk1vZHVs
ZSwgZXZlbnROYW1lKTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59
XG5cbi8qKlxuICogUHVibGlzaGVzIGEgcmVnaXN0cmF0aW9uIG5hbWUgdGhhdCBpcyB1c2VkIHRv
IGlkZW50aWZ5IGRpc3BhdGNoZWQgZXZlbnRzIGFuZFxuICogY2FuIGJlIHVzZWQgd2l0aCBgRXZl
bnRQbHVnaW5IdWIucHV0TGlzdGVuZXJgIHRvIHJlZ2lzdGVyIGxpc3RlbmVycy5cbiAqXG4gKiBA
cGFyYW0ge3N0cmluZ30gcmVnaXN0cmF0aW9uTmFtZSBSZWdpc3RyYXRpb24gbmFtZSB0byBhZGQu
XG4gKiBAcGFyYW0ge29iamVjdH0gUGx1Z2luTW9kdWxlIFBsdWdpbiBwdWJsaXNoaW5nIHRoZSBl
dmVudC5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIHB1Ymxpc2hSZWdpc3RyYXRpb25OYW1l
KHJlZ2lzdHJhdGlvbk5hbWUsIHBsdWdpbk1vZHVsZSwgZXZlbnROYW1lKSB7XG4gICEhRXZlbnRQ
bHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25OYW1lXSA/
IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2Us
ICdFdmVudFBsdWdpbkh1YjogTW9yZSB0aGFuIG9uZSBwbHVnaW4gYXR0ZW1wdGVkIHRvIHB1Ymxp
c2ggdGhlIHNhbWUgcmVnaXN0cmF0aW9uIG5hbWUsIGAlc2AuJywgcmVnaXN0cmF0aW9uTmFtZSkg
OiBfcHJvZEludmFyaWFudCgnMTAwJywgcmVnaXN0cmF0aW9uTmFtZSkgOiB2b2lkIDA7XG4gIEV2
ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbcmVnaXN0cmF0aW9uTmFt
ZV0gPSBwbHVnaW5Nb2R1bGU7XG4gIEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFt
ZURlcGVuZGVuY2llc1tyZWdpc3RyYXRpb25OYW1lXSA9IHBsdWdpbk1vZHVsZS5ldmVudFR5cGVz
W2V2ZW50TmFtZV0uZGVwZW5kZW5jaWVzO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgdmFyIGxvd2VyQ2FzZWROYW1lID0gcmVnaXN0cmF0aW9u
TmFtZS50b0xvd2VyQ2FzZSgpO1xuICAgIEV2ZW50UGx1Z2luUmVnaXN0cnkucG9zc2libGVSZWdp
c3RyYXRpb25OYW1lc1tsb3dlckNhc2VkTmFtZV0gPSByZWdpc3RyYXRpb25OYW1lO1xuXG4gICAg
aWYgKHJlZ2lzdHJhdGlvbk5hbWUgPT09ICdvbkRvdWJsZUNsaWNrJykge1xuICAgICAgRXZlbnRQ
bHVnaW5SZWdpc3RyeS5wb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzLm9uZGJsY2xpY2sgPSByZWdp
c3RyYXRpb25OYW1lO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFJlZ2lzdGVycyBwbHVnaW5z
IHNvIHRoYXQgdGhleSBjYW4gZXh0cmFjdCBhbmQgZGlzcGF0Y2ggZXZlbnRzLlxuICpcbiAqIEBz
ZWUge0V2ZW50UGx1Z2luSHVifVxuICovXG52YXIgRXZlbnRQbHVnaW5SZWdpc3RyeSA9IHtcbiAg
LyoqXG4gICAqIE9yZGVyZWQgbGlzdCBvZiBpbmplY3RlZCBwbHVnaW5zLlxuICAgKi9cbiAgcGx1
Z2luczogW10sXG5cbiAgLyoqXG4gICAqIE1hcHBpbmcgZnJvbSBldmVudCBuYW1lIHRvIGRpc3Bh
dGNoIGNvbmZpZ1xuICAgKi9cbiAgZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzOiB7fSxcblxuICAv
KipcbiAgICogTWFwcGluZyBmcm9tIHJlZ2lzdHJhdGlvbiBuYW1lIHRvIHBsdWdpbiBtb2R1bGVc
biAgICovXG4gIHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzOiB7fSxcblxuICAvKipcbiAgICogTWFw
cGluZyBmcm9tIHJlZ2lzdHJhdGlvbiBuYW1lIHRvIGV2ZW50IG5hbWVcbiAgICovXG4gIHJlZ2lz
dHJhdGlvbk5hbWVEZXBlbmRlbmNpZXM6IHt9LFxuXG4gIC8qKlxuICAgKiBNYXBwaW5nIGZyb20g
bG93ZXJjYXNlIHJlZ2lzdHJhdGlvbiBuYW1lcyB0byB0aGUgcHJvcGVybHkgY2FzZWQgdmVyc2lv
bixcbiAgICogdXNlZCB0byB3YXJuIGluIHRoZSBjYXNlIG9mIG1pc3NpbmcgZXZlbnQgaGFuZGxl
cnMuIEF2YWlsYWJsZVxuICAgKiBvbmx5IGluIF9fREVWX18uXG4gICAqIEB0eXBlIHtPYmplY3R9
XG4gICAqL1xuICBwb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzOiBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8ge30gOiBudWxsLFxuICAvLyBUcnVzdCB0aGUgZGV2ZWxvcGVy
IHRvIG9ubHkgdXNlIHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXMgaW4gX19ERVZfX1xuXG4gIC8q
KlxuICAgKiBJbmplY3RzIGFuIG9yZGVyaW5nIG9mIHBsdWdpbnMgKGJ5IHBsdWdpbiBuYW1lKS4g
VGhpcyBhbGxvd3MgdGhlIG9yZGVyaW5nXG4gICAqIHRvIGJlIGRlY291cGxlZCBmcm9tIGluamVj
dGlvbiBvZiB0aGUgYWN0dWFsIHBsdWdpbnMgc28gdGhhdCBvcmRlcmluZyBpc1xuICAgKiBhbHdh
eXMgZGV0ZXJtaW5pc3RpYyByZWdhcmRsZXNzIG9mIHBhY2thZ2luZywgb24tdGhlLWZseSBpbmpl
Y3Rpb24sIGV0Yy5cbiAgICpcbiAgICogQHBhcmFtIHthcnJheX0gSW5qZWN0ZWRFdmVudFBsdWdp
bk9yZGVyXG4gICAqIEBpbnRlcm5hbFxuICAgKiBAc2VlIHtFdmVudFBsdWdpbkh1Yi5pbmplY3Rp
b24uaW5qZWN0RXZlbnRQbHVnaW5PcmRlcn1cbiAgICovXG4gIGluamVjdEV2ZW50UGx1Z2luT3Jk
ZXI6IGZ1bmN0aW9uIChpbmplY3RlZEV2ZW50UGx1Z2luT3JkZXIpIHtcbiAgICAhIWV2ZW50UGx1
Z2luT3JkZXIgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJp
YW50KGZhbHNlLCAnRXZlbnRQbHVnaW5SZWdpc3RyeTogQ2Fubm90IGluamVjdCBldmVudCBwbHVn
aW4gb3JkZXJpbmcgbW9yZSB0aGFuIG9uY2UuIFlvdSBhcmUgbGlrZWx5IHRyeWluZyB0byBsb2Fk
IG1vcmUgdGhhbiBvbmUgY29weSBvZiBSZWFjdC4nKSA6IF9wcm9kSW52YXJpYW50KCcxMDEnKSA6
IHZvaWQgMDtcbiAgICAvLyBDbG9uZSB0aGUgb3JkZXJpbmcgc28gaXQgY2Fubm90IGJlIGR5bmFt
aWNhbGx5IG11dGF0ZWQuXG4gICAgZXZlbnRQbHVnaW5PcmRlciA9IEFycmF5LnByb3RvdHlwZS5z
bGljZS5jYWxsKGluamVjdGVkRXZlbnRQbHVnaW5PcmRlcik7XG4gICAgcmVjb21wdXRlUGx1Z2lu
T3JkZXJpbmcoKTtcbiAgfSxcblxuICAvKipcbiAgICogSW5qZWN0cyBwbHVnaW5zIHRvIGJlIHVz
ZWQgYnkgYEV2ZW50UGx1Z2luSHViYC4gVGhlIHBsdWdpbiBuYW1lcyBtdXN0IGJlXG4gICAqIGlu
IHRoZSBvcmRlcmluZyBpbmplY3RlZCBieSBgaW5qZWN0RXZlbnRQbHVnaW5PcmRlcmAuXG4gICAq
XG4gICAqIFBsdWdpbnMgY2FuIGJlIGluamVjdGVkIGFzIHBhcnQgb2YgcGFnZSBpbml0aWFsaXph
dGlvbiBvciBvbi10aGUtZmx5LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gaW5qZWN0ZWRO
YW1lc1RvUGx1Z2lucyBNYXAgZnJvbSBuYW1lcyB0byBwbHVnaW4gbW9kdWxlcy5cbiAgICogQGlu
dGVybmFsXG4gICAqIEBzZWUge0V2ZW50UGx1Z2luSHViLmluamVjdGlvbi5pbmplY3RFdmVudFBs
dWdpbnNCeU5hbWV9XG4gICAqL1xuICBpbmplY3RFdmVudFBsdWdpbnNCeU5hbWU6IGZ1bmN0aW9u
IChpbmplY3RlZE5hbWVzVG9QbHVnaW5zKSB7XG4gICAgdmFyIGlzT3JkZXJpbmdEaXJ0eSA9IGZh
bHNlO1xuICAgIGZvciAodmFyIHBsdWdpbk5hbWUgaW4gaW5qZWN0ZWROYW1lc1RvUGx1Z2lucykg
e1xuICAgICAgaWYgKCFpbmplY3RlZE5hbWVzVG9QbHVnaW5zLmhhc093blByb3BlcnR5KHBsdWdp
bk5hbWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdmFyIHBsdWdpbk1v
ZHVsZSA9IGluamVjdGVkTmFtZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV07XG4gICAgICBpZiAoIW5h
bWVzVG9QbHVnaW5zLmhhc093blByb3BlcnR5KHBsdWdpbk5hbWUpIHx8IG5hbWVzVG9QbHVnaW5z
W3BsdWdpbk5hbWVdICE9PSBwbHVnaW5Nb2R1bGUpIHtcbiAgICAgICAgISFuYW1lc1RvUGx1Z2lu
c1twbHVnaW5OYW1lXSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBp
bnZhcmlhbnQoZmFsc2UsICdFdmVudFBsdWdpblJlZ2lzdHJ5OiBDYW5ub3QgaW5qZWN0IHR3byBk
aWZmZXJlbnQgZXZlbnQgcGx1Z2lucyB1c2luZyB0aGUgc2FtZSBuYW1lLCBgJXNgLicsIHBsdWdp
bk5hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzEwMicsIHBsdWdpbk5hbWUpIDogdm9pZCAwO1xuICAg
ICAgICBuYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXSA9IHBsdWdpbk1vZHVsZTtcbiAgICAgICAg
aXNPcmRlcmluZ0RpcnR5ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGlzT3JkZXJp
bmdEaXJ0eSkge1xuICAgICAgcmVjb21wdXRlUGx1Z2luT3JkZXJpbmcoKTtcbiAgICB9XG4gIH0s
XG5cbiAgLyoqXG4gICAqIExvb2tzIHVwIHRoZSBwbHVnaW4gZm9yIHRoZSBzdXBwbGllZCBldmVu
dC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGV2ZW50IEEgc3ludGhldGljIGV2ZW50Llxu
ICAgKiBAcmV0dXJuIHs/b2JqZWN0fSBUaGUgcGx1Z2luIHRoYXQgY3JlYXRlZCB0aGUgc3VwcGxp
ZWQgZXZlbnQuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0UGx1Z2luTW9kdWxlRm9yRXZl
bnQ6IGZ1bmN0aW9uIChldmVudCkge1xuICAgIHZhciBkaXNwYXRjaENvbmZpZyA9IGV2ZW50LmRp
c3BhdGNoQ29uZmlnO1xuICAgIGlmIChkaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKSB7
XG4gICAgICByZXR1cm4gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxl
c1tkaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lXSB8fCBudWxsO1xuICAgIH1cbiAgICBp
ZiAoZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMgIT09IHVuZGVmaW5lZCkg
e1xuICAgICAgLy8gcHVsbGluZyBwaGFzZWRSZWdpc3RyYXRpb25OYW1lcyBvdXQgb2YgZGlzcGF0
Y2hDb25maWcgaGVscHMgRmxvdyBzZWVcbiAgICAgIC8vIHRoYXQgaXQgaXMgbm90IHVuZGVmaW5l
ZC5cbiAgICAgIHZhciBwaGFzZWRSZWdpc3RyYXRpb25OYW1lcyA9IGRpc3BhdGNoQ29uZmlnLnBo
YXNlZFJlZ2lzdHJhdGlvbk5hbWVzO1xuXG4gICAgICBmb3IgKHZhciBwaGFzZSBpbiBwaGFzZWRS
ZWdpc3RyYXRpb25OYW1lcykge1xuICAgICAgICBpZiAoIXBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVz
Lmhhc093blByb3BlcnR5KHBoYXNlKSkge1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9
XG4gICAgICAgIHZhciBwbHVnaW5Nb2R1bGUgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJh
dGlvbk5hbWVNb2R1bGVzW3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW3BoYXNlXV07XG4gICAgICAg
IGlmIChwbHVnaW5Nb2R1bGUpIHtcbiAgICAgICAgICByZXR1cm4gcGx1Z2luTW9kdWxlO1xuICAg
ICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9LFxuXG4gIC8qKlxu
ICAgKiBFeHBvc2VkIGZvciB1bml0IHRlc3RpbmcuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBf
cmVzZXRFdmVudFBsdWdpbnM6IGZ1bmN0aW9uICgpIHtcbiAgICBldmVudFBsdWdpbk9yZGVyID0g
bnVsbDtcbiAgICBmb3IgKHZhciBwbHVnaW5OYW1lIGluIG5hbWVzVG9QbHVnaW5zKSB7XG4gICAg
ICBpZiAobmFtZXNUb1BsdWdpbnMuaGFzT3duUHJvcGVydHkocGx1Z2luTmFtZSkpIHtcbiAgICAg
ICAgZGVsZXRlIG5hbWVzVG9QbHVnaW5zW3BsdWdpbk5hbWVdO1xuICAgICAgfVxuICAgIH1cbiAg
ICBFdmVudFBsdWdpblJlZ2lzdHJ5LnBsdWdpbnMubGVuZ3RoID0gMDtcblxuICAgIHZhciBldmVu
dE5hbWVEaXNwYXRjaENvbmZpZ3MgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LmV2ZW50TmFtZURpc3Bh
dGNoQ29uZmlncztcbiAgICBmb3IgKHZhciBldmVudE5hbWUgaW4gZXZlbnROYW1lRGlzcGF0Y2hD
b25maWdzKSB7XG4gICAgICBpZiAoZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzLmhhc093blByb3Bl
cnR5KGV2ZW50TmFtZSkpIHtcbiAgICAgICAgZGVsZXRlIGV2ZW50TmFtZURpc3BhdGNoQ29uZmln
c1tldmVudE5hbWVdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZWdpc3RyYXRpb25OYW1l
TW9kdWxlcyA9IEV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXM7XG4g
ICAgZm9yICh2YXIgcmVnaXN0cmF0aW9uTmFtZSBpbiByZWdpc3RyYXRpb25OYW1lTW9kdWxlcykg
e1xuICAgICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzLmhhc093blByb3BlcnR5KHJlZ2lz
dHJhdGlvbk5hbWUpKSB7XG4gICAgICAgIGRlbGV0ZSByZWdpc3RyYXRpb25OYW1lTW9kdWxlc1ty
ZWdpc3RyYXRpb25OYW1lXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIHBvc3NpYmxlUmVnaXN0cmF0
aW9uTmFtZXMgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXM7
XG4gICAgICBmb3IgKHZhciBsb3dlckNhc2VkTmFtZSBpbiBwb3NzaWJsZVJlZ2lzdHJhdGlvbk5h
bWVzKSB7XG4gICAgICAgIGlmIChwb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzLmhhc093blByb3Bl
cnR5KGxvd2VyQ2FzZWROYW1lKSkge1xuICAgICAgICAgIGRlbGV0ZSBwb3NzaWJsZVJlZ2lzdHJh
dGlvbk5hbWVzW2xvd2VyQ2FzZWROYW1lXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAg
fVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBFdmVudFBsdWdpblJlZ2lzdHJ5O1xuXG5cbi8qKioq
KioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIv
RXZlbnRQbHVnaW5SZWdpc3RyeS5qc1xuICoqIG1vZHVsZSBpZCA9IDM2XG4gKiogbW9kdWxlIGNo
dW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBz
dHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFy
aWFudCcpO1xuXG52YXIgUmVhY3RFcnJvclV0aWxzID0gcmVxdWlyZSgnLi9SZWFjdEVycm9yVXRp
bHMnKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xu
dmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbi8qKlxuICogSW5q
ZWN0ZWQgZGVwZW5kZW5jaWVzOlxuICovXG5cbi8qKlxuICogLSBgQ29tcG9uZW50VHJlZWA6IFty
ZXF1aXJlZF0gTW9kdWxlIHRoYXQgY2FuIGNvbnZlcnQgYmV0d2VlbiBSZWFjdCBpbnN0YW5jZXNc
biAqICAgYW5kIGFjdHVhbCBub2RlIHJlZmVyZW5jZXMuXG4gKi9cbnZhciBDb21wb25lbnRUcmVl
O1xudmFyIFRyZWVUcmF2ZXJzYWw7XG52YXIgaW5qZWN0aW9uID0ge1xuICBpbmplY3RDb21wb25l
bnRUcmVlOiBmdW5jdGlvbiAoSW5qZWN0ZWQpIHtcbiAgICBDb21wb25lbnRUcmVlID0gSW5qZWN0
ZWQ7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAg
ICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKEluamVj
dGVkICYmIEluamVjdGVkLmdldE5vZGVGcm9tSW5zdGFuY2UgJiYgSW5qZWN0ZWQuZ2V0SW5zdGFu
Y2VGcm9tTm9kZSwgJ0V2ZW50UGx1Z2luVXRpbHMuaW5qZWN0aW9uLmluamVjdENvbXBvbmVudFRy
ZWUoLi4uKTogSW5qZWN0ZWQgJyArICdtb2R1bGUgaXMgbWlzc2luZyBnZXROb2RlRnJvbUluc3Rh
bmNlIG9yIGdldEluc3RhbmNlRnJvbU5vZGUuJykgOiB2b2lkIDA7XG4gICAgfVxuICB9LFxuICBp
bmplY3RUcmVlVHJhdmVyc2FsOiBmdW5jdGlvbiAoSW5qZWN0ZWQpIHtcbiAgICBUcmVlVHJhdmVy
c2FsID0gSW5qZWN0ZWQ7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3
YXJuaW5nKEluamVjdGVkICYmIEluamVjdGVkLmlzQW5jZXN0b3IgJiYgSW5qZWN0ZWQuZ2V0TG93
ZXN0Q29tbW9uQW5jZXN0b3IsICdFdmVudFBsdWdpblV0aWxzLmluamVjdGlvbi5pbmplY3RUcmVl
VHJhdmVyc2FsKC4uLik6IEluamVjdGVkICcgKyAnbW9kdWxlIGlzIG1pc3NpbmcgaXNBbmNlc3Rv
ciBvciBnZXRMb3dlc3RDb21tb25BbmNlc3Rvci4nKSA6IHZvaWQgMDtcbiAgICB9XG4gIH1cbn07
XG5cbmZ1bmN0aW9uIGlzRW5kaXNoKHRvcExldmVsVHlwZSkge1xuICByZXR1cm4gdG9wTGV2ZWxU
eXBlID09PSAndG9wTW91c2VVcCcgfHwgdG9wTGV2ZWxUeXBlID09PSAndG9wVG91Y2hFbmQnIHx8
IHRvcExldmVsVHlwZSA9PT0gJ3RvcFRvdWNoQ2FuY2VsJztcbn1cblxuZnVuY3Rpb24gaXNNb3Zl
aXNoKHRvcExldmVsVHlwZSkge1xuICByZXR1cm4gdG9wTGV2ZWxUeXBlID09PSAndG9wTW91c2VN
b3ZlJyB8fCB0b3BMZXZlbFR5cGUgPT09ICd0b3BUb3VjaE1vdmUnO1xufVxuZnVuY3Rpb24gaXNT
dGFydGlzaCh0b3BMZXZlbFR5cGUpIHtcbiAgcmV0dXJuIHRvcExldmVsVHlwZSA9PT0gJ3RvcE1v
dXNlRG93bicgfHwgdG9wTGV2ZWxUeXBlID09PSAndG9wVG91Y2hTdGFydCc7XG59XG5cbnZhciB2
YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlcztcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nKSB7XG4gIHZhbGlkYXRlRXZlbnREaXNwYXRjaGVzID0gZnVuY3Rpb24gKGV2ZW50
KSB7XG4gICAgdmFyIGRpc3BhdGNoTGlzdGVuZXJzID0gZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJz
O1xuICAgIHZhciBkaXNwYXRjaEluc3RhbmNlcyA9IGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcztc
blxuICAgIHZhciBsaXN0ZW5lcnNJc0FyciA9IEFycmF5LmlzQXJyYXkoZGlzcGF0Y2hMaXN0ZW5l
cnMpO1xuICAgIHZhciBsaXN0ZW5lcnNMZW4gPSBsaXN0ZW5lcnNJc0FyciA/IGRpc3BhdGNoTGlz
dGVuZXJzLmxlbmd0aCA6IGRpc3BhdGNoTGlzdGVuZXJzID8gMSA6IDA7XG5cbiAgICB2YXIgaW5z
dGFuY2VzSXNBcnIgPSBBcnJheS5pc0FycmF5KGRpc3BhdGNoSW5zdGFuY2VzKTtcbiAgICB2YXIg
aW5zdGFuY2VzTGVuID0gaW5zdGFuY2VzSXNBcnIgPyBkaXNwYXRjaEluc3RhbmNlcy5sZW5ndGgg
OiBkaXNwYXRjaEluc3RhbmNlcyA/IDEgOiAwO1xuXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoaW5zdGFuY2VzSXNBcnIgPT09IGxpc3RlbmVyc0lz
QXJyICYmIGluc3RhbmNlc0xlbiA9PT0gbGlzdGVuZXJzTGVuLCAnRXZlbnRQbHVnaW5VdGlsczog
SW52YWxpZCBgZXZlbnRgLicpIDogdm9pZCAwO1xuICB9O1xufVxuXG4vKipcbiAqIERpc3BhdGNo
IHRoZSBldmVudCB0byB0aGUgbGlzdGVuZXIuXG4gKiBAcGFyYW0ge1N5bnRoZXRpY0V2ZW50fSBl
dmVudCBTeW50aGV0aWNFdmVudCB0byBoYW5kbGVcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gc2ltdWxh
dGVkIElmIHRoZSBldmVudCBpcyBzaW11bGF0ZWQgKGNoYW5nZXMgZXhuIGJlaGF2aW9yKVxuICog
QHBhcmFtIHtmdW5jdGlvbn0gbGlzdGVuZXIgQXBwbGljYXRpb24tbGV2ZWwgY2FsbGJhY2tcbiAq
IEBwYXJhbSB7Kn0gaW5zdCBJbnRlcm5hbCBjb21wb25lbnQgaW5zdGFuY2VcbiAqL1xuZnVuY3Rp
b24gZXhlY3V0ZURpc3BhdGNoKGV2ZW50LCBzaW11bGF0ZWQsIGxpc3RlbmVyLCBpbnN0KSB7XG4g
IHZhciB0eXBlID0gZXZlbnQudHlwZSB8fCAndW5rbm93bi1ldmVudCc7XG4gIGV2ZW50LmN1cnJl
bnRUYXJnZXQgPSBFdmVudFBsdWdpblV0aWxzLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7XG4g
IGlmIChzaW11bGF0ZWQpIHtcbiAgICBSZWFjdEVycm9yVXRpbHMuaW52b2tlR3VhcmRlZENhbGxi
YWNrV2l0aENhdGNoKHR5cGUsIGxpc3RlbmVyLCBldmVudCk7XG4gIH0gZWxzZSB7XG4gICAgUmVh
Y3RFcnJvclV0aWxzLmludm9rZUd1YXJkZWRDYWxsYmFjayh0eXBlLCBsaXN0ZW5lciwgZXZlbnQp
O1xuICB9XG4gIGV2ZW50LmN1cnJlbnRUYXJnZXQgPSBudWxsO1xufVxuXG4vKipcbiAqIFN0YW5k
YXJkL3NpbXBsZSBpdGVyYXRpb24gdGhyb3VnaCBhbiBldmVudCdzIGNvbGxlY3RlZCBkaXNwYXRj
aGVzLlxuICovXG5mdW5jdGlvbiBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIoZXZlbnQsIHNpbXVs
YXRlZCkge1xuICB2YXIgZGlzcGF0Y2hMaXN0ZW5lcnMgPSBldmVudC5fZGlzcGF0Y2hMaXN0ZW5l
cnM7XG4gIHZhciBkaXNwYXRjaEluc3RhbmNlcyA9IGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcztc
biAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB2YWxp
ZGF0ZUV2ZW50RGlzcGF0Y2hlcyhldmVudCk7XG4gIH1cbiAgaWYgKEFycmF5LmlzQXJyYXkoZGlz
cGF0Y2hMaXN0ZW5lcnMpKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXNwYXRjaExpc3Rl
bmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKGV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVk
KCkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICAvLyBMaXN0ZW5lcnMgYW5kIElu
c3RhbmNlcyBhcmUgdHdvIHBhcmFsbGVsIGFycmF5cyB0aGF0IGFyZSBhbHdheXMgaW4gc3luYy5c
biAgICAgIGV4ZWN1dGVEaXNwYXRjaChldmVudCwgc2ltdWxhdGVkLCBkaXNwYXRjaExpc3RlbmVy
c1tpXSwgZGlzcGF0Y2hJbnN0YW5jZXNbaV0pO1xuICAgIH1cbiAgfSBlbHNlIGlmIChkaXNwYXRj
aExpc3RlbmVycykge1xuICAgIGV4ZWN1dGVEaXNwYXRjaChldmVudCwgc2ltdWxhdGVkLCBkaXNw
YXRjaExpc3RlbmVycywgZGlzcGF0Y2hJbnN0YW5jZXMpO1xuICB9XG4gIGV2ZW50Ll9kaXNwYXRj
aExpc3RlbmVycyA9IG51bGw7XG4gIGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcyA9IG51bGw7XG59
XG5cbi8qKlxuICogU3RhbmRhcmQvc2ltcGxlIGl0ZXJhdGlvbiB0aHJvdWdoIGFuIGV2ZW50J3Mg
Y29sbGVjdGVkIGRpc3BhdGNoZXMsIGJ1dCBzdG9wc1xuICogYXQgdGhlIGZpcnN0IGRpc3BhdGNo
IGV4ZWN1dGlvbiByZXR1cm5pbmcgdHJ1ZSwgYW5kIHJldHVybnMgdGhhdCBpZC5cbiAqXG4gKiBA
cmV0dXJuIHs/c3RyaW5nfSBpZCBvZiB0aGUgZmlyc3QgZGlzcGF0Y2ggZXhlY3V0aW9uIHdobydz
IGxpc3RlbmVyIHJldHVybnNcbiAqIHRydWUsIG9yIG51bGwgaWYgbm8gbGlzdGVuZXIgcmV0dXJu
ZWQgdHJ1ZS5cbiAqL1xuZnVuY3Rpb24gZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1
ZUltcGwoZXZlbnQpIHtcbiAgdmFyIGRpc3BhdGNoTGlzdGVuZXJzID0gZXZlbnQuX2Rpc3BhdGNo
TGlzdGVuZXJzO1xuICB2YXIgZGlzcGF0Y2hJbnN0YW5jZXMgPSBldmVudC5fZGlzcGF0Y2hJbnN0
YW5jZXM7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
ICAgdmFsaWRhdGVFdmVudERpc3BhdGNoZXMoZXZlbnQpO1xuICB9XG4gIGlmIChBcnJheS5pc0Fy
cmF5KGRpc3BhdGNoTGlzdGVuZXJzKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGlzcGF0
Y2hMaXN0ZW5lcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChldmVudC5pc1Byb3BhZ2F0aW9u
U3RvcHBlZCgpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgLy8gTGlzdGVuZXJz
IGFuZCBJbnN0YW5jZXMgYXJlIHR3byBwYXJhbGxlbCBhcnJheXMgdGhhdCBhcmUgYWx3YXlzIGlu
IHN5bmMuXG4gICAgICBpZiAoZGlzcGF0Y2hMaXN0ZW5lcnNbaV0oZXZlbnQsIGRpc3BhdGNoSW5z
dGFuY2VzW2ldKSkge1xuICAgICAgICByZXR1cm4gZGlzcGF0Y2hJbnN0YW5jZXNbaV07XG4gICAg
ICB9XG4gICAgfVxuICB9IGVsc2UgaWYgKGRpc3BhdGNoTGlzdGVuZXJzKSB7XG4gICAgaWYgKGRp
c3BhdGNoTGlzdGVuZXJzKGV2ZW50LCBkaXNwYXRjaEluc3RhbmNlcykpIHtcbiAgICAgIHJldHVy
biBkaXNwYXRjaEluc3RhbmNlcztcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8q
KlxuICogQHNlZSBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlSW1wbFxuICovXG5m
dW5jdGlvbiBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlKGV2ZW50KSB7XG4gIHZh
ciByZXQgPSBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlSW1wbChldmVudCk7XG4g
IGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcyA9IG51bGw7XG4gIGV2ZW50Ll9kaXNwYXRjaExpc3Rl
bmVycyA9IG51bGw7XG4gIHJldHVybiByZXQ7XG59XG5cbi8qKlxuICogRXhlY3V0aW9uIG9mIGEg
XCJkaXJlY3RcIiBkaXNwYXRjaCAtIHRoZXJlIG11c3QgYmUgYXQgbW9zdCBvbmUgZGlzcGF0Y2hc
biAqIGFjY3VtdWxhdGVkIG9uIHRoZSBldmVudCBvciBpdCBpcyBjb25zaWRlcmVkIGFuIGVycm9y
LiBJdCBkb2Vzbid0IHJlYWxseSBtYWtlXG4gKiBzZW5zZSBmb3IgYW4gZXZlbnQgd2l0aCBtdWx0
aXBsZSBkaXNwYXRjaGVzIChidWJibGVkKSB0byBrZWVwIHRyYWNrIG9mIHRoZVxuICogcmV0dXJu
IHZhbHVlcyBhdCBlYWNoIGRpc3BhdGNoIGV4ZWN1dGlvbiwgYnV0IGl0IGRvZXMgdGVuZCB0byBt
YWtlIHNlbnNlIHdoZW5cbiAqIGRlYWxpbmcgd2l0aCBcImRpcmVjdFwiIGRpc3BhdGNoZXMuXG4g
KlxuICogQHJldHVybiB7Kn0gVGhlIHJldHVybiB2YWx1ZSBvZiBleGVjdXRpbmcgdGhlIHNpbmds
ZSBkaXNwYXRjaC5cbiAqL1xuZnVuY3Rpb24gZXhlY3V0ZURpcmVjdERpc3BhdGNoKGV2ZW50KSB7
XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgdmFs
aWRhdGVFdmVudERpc3BhdGNoZXMoZXZlbnQpO1xuICB9XG4gIHZhciBkaXNwYXRjaExpc3RlbmVy
ID0gZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzO1xuICB2YXIgZGlzcGF0Y2hJbnN0YW5jZSA9IGV2
ZW50Ll9kaXNwYXRjaEluc3RhbmNlcztcbiAgISFBcnJheS5pc0FycmF5KGRpc3BhdGNoTGlzdGVu
ZXIpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChm
YWxzZSwgJ2V4ZWN1dGVEaXJlY3REaXNwYXRjaCguLi4pOiBJbnZhbGlkIGBldmVudGAuJykgOiBf
cHJvZEludmFyaWFudCgnMTAzJykgOiB2b2lkIDA7XG4gIGV2ZW50LmN1cnJlbnRUYXJnZXQgPSBk
aXNwYXRjaExpc3RlbmVyID8gRXZlbnRQbHVnaW5VdGlscy5nZXROb2RlRnJvbUluc3RhbmNlKGRp
c3BhdGNoSW5zdGFuY2UpIDogbnVsbDtcbiAgdmFyIHJlcyA9IGRpc3BhdGNoTGlzdGVuZXIgPyBk
aXNwYXRjaExpc3RlbmVyKGV2ZW50KSA6IG51bGw7XG4gIGV2ZW50LmN1cnJlbnRUYXJnZXQgPSBu
dWxsO1xuICBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMgPSBudWxsO1xuICBldmVudC5fZGlzcGF0
Y2hJbnN0YW5jZXMgPSBudWxsO1xuICByZXR1cm4gcmVzO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7
U3ludGhldGljRXZlbnR9IGV2ZW50XG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmZiBudW1i
ZXIgb2YgZGlzcGF0Y2hlcyBhY2N1bXVsYXRlZCBpcyBncmVhdGVyIHRoYW4gMC5cbiAqL1xuZnVu
Y3Rpb24gaGFzRGlzcGF0Y2hlcyhldmVudCkge1xuICByZXR1cm4gISFldmVudC5fZGlzcGF0Y2hM
aXN0ZW5lcnM7XG59XG5cbi8qKlxuICogR2VuZXJhbCB1dGlsaXRpZXMgdGhhdCBhcmUgdXNlZnVs
IGluIGNyZWF0aW5nIGN1c3RvbSBFdmVudCBQbHVnaW5zLlxuICovXG52YXIgRXZlbnRQbHVnaW5V
dGlscyA9IHtcbiAgaXNFbmRpc2g6IGlzRW5kaXNoLFxuICBpc01vdmVpc2g6IGlzTW92ZWlzaCxc
biAgaXNTdGFydGlzaDogaXNTdGFydGlzaCxcblxuICBleGVjdXRlRGlyZWN0RGlzcGF0Y2g6IGV4
ZWN1dGVEaXJlY3REaXNwYXRjaCxcbiAgZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyOiBleGVjdXRl
RGlzcGF0Y2hlc0luT3JkZXIsXG4gIGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWU6
IGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWUsXG4gIGhhc0Rpc3BhdGNoZXM6IGhh
c0Rpc3BhdGNoZXMsXG5cbiAgZ2V0SW5zdGFuY2VGcm9tTm9kZTogZnVuY3Rpb24gKG5vZGUpIHtc
biAgICByZXR1cm4gQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG5vZGUpO1xuICB9
LFxuICBnZXROb2RlRnJvbUluc3RhbmNlOiBmdW5jdGlvbiAobm9kZSkge1xuICAgIHJldHVybiBD
b21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2Uobm9kZSk7XG4gIH0sXG4gIGlzQW5jZXN0
b3I6IGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIFRyZWVUcmF2ZXJzYWwuaXNBbmNlc3Rv
cihhLCBiKTtcbiAgfSxcbiAgZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3I6IGZ1bmN0aW9uIChhLCBi
KSB7XG4gICAgcmV0dXJuIFRyZWVUcmF2ZXJzYWwuZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3IoYSwg
Yik7XG4gIH0sXG4gIGdldFBhcmVudEluc3RhbmNlOiBmdW5jdGlvbiAoaW5zdCkge1xuICAgIHJl
dHVybiBUcmVlVHJhdmVyc2FsLmdldFBhcmVudEluc3RhbmNlKGluc3QpO1xuICB9LFxuICB0cmF2
ZXJzZVR3b1BoYXNlOiBmdW5jdGlvbiAodGFyZ2V0LCBmbiwgYXJnKSB7XG4gICAgcmV0dXJuIFRy
ZWVUcmF2ZXJzYWwudHJhdmVyc2VUd29QaGFzZSh0YXJnZXQsIGZuLCBhcmcpO1xuICB9LFxuICB0
cmF2ZXJzZUVudGVyTGVhdmU6IGZ1bmN0aW9uIChmcm9tLCB0bywgZm4sIGFyZ0Zyb20sIGFyZ1Rv
KSB7XG4gICAgcmV0dXJuIFRyZWVUcmF2ZXJzYWwudHJhdmVyc2VFbnRlckxlYXZlKGZyb20sIHRv
LCBmbiwgYXJnRnJvbSwgYXJnVG8pO1xuICB9LFxuXG4gIGluamVjdGlvbjogaW5qZWN0aW9uXG59
O1xuXG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50UGx1Z2luVXRpbHM7XG5cblxuLyoqKioqKioqKioq
KioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9FdmVudFBs
dWdpblV0aWxzLmpzXG4gKiogbW9kdWxlIGlkID0gMzdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxu
ICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0
JztcblxuLyoqXG4gKiBFc2NhcGUgYW5kIHdyYXAga2V5IHNvIGl0IGlzIHNhZmUgdG8gdXNlIGFz
IGEgcmVhY3RpZFxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgdG8gYmUgZXNjYXBlZC5cbiAq
IEByZXR1cm4ge3N0cmluZ30gdGhlIGVzY2FwZWQga2V5LlxuICovXG5cbmZ1bmN0aW9uIGVzY2Fw
ZShrZXkpIHtcbiAgdmFyIGVzY2FwZVJlZ2V4ID0gL1s9Ol0vZztcbiAgdmFyIGVzY2FwZXJMb29r
dXAgPSB7XG4gICAgJz0nOiAnPTAnLFxuICAgICc6JzogJz0yJ1xuICB9O1xuICB2YXIgZXNjYXBl
ZFN0cmluZyA9ICgnJyArIGtleSkucmVwbGFjZShlc2NhcGVSZWdleCwgZnVuY3Rpb24gKG1hdGNo
KSB7XG4gICAgcmV0dXJuIGVzY2FwZXJMb29rdXBbbWF0Y2hdO1xuICB9KTtcblxuICByZXR1cm4g
JyQnICsgZXNjYXBlZFN0cmluZztcbn1cblxuLyoqXG4gKiBVbmVzY2FwZSBhbmQgdW53cmFwIGtl
eSBmb3IgaHVtYW4tcmVhZGFibGUgZGlzcGxheVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBrZXkg
dG8gdW5lc2NhcGUuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IHRoZSB1bmVzY2FwZWQga2V5LlxuICov
XG5mdW5jdGlvbiB1bmVzY2FwZShrZXkpIHtcbiAgdmFyIHVuZXNjYXBlUmVnZXggPSAvKD0wfD0y
KS9nO1xuICB2YXIgdW5lc2NhcGVyTG9va3VwID0ge1xuICAgICc9MCc6ICc9JyxcbiAgICAnPTIn
OiAnOidcbiAgfTtcbiAgdmFyIGtleVN1YnN0cmluZyA9IGtleVswXSA9PT0gJy4nICYmIGtleVsx
XSA9PT0gJyQnID8ga2V5LnN1YnN0cmluZygyKSA6IGtleS5zdWJzdHJpbmcoMSk7XG5cbiAgcmV0
dXJuICgnJyArIGtleVN1YnN0cmluZykucmVwbGFjZSh1bmVzY2FwZVJlZ2V4LCBmdW5jdGlvbiAo
bWF0Y2gpIHtcbiAgICByZXR1cm4gdW5lc2NhcGVyTG9va3VwW21hdGNoXTtcbiAgfSk7XG59XG5c
bnZhciBLZXlFc2NhcGVVdGlscyA9IHtcbiAgZXNjYXBlOiBlc2NhcGUsXG4gIHVuZXNjYXBlOiB1
bmVzY2FwZVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBLZXlFc2NhcGVVdGlscztcblxuXG4vKioq
KioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGli
L0tleUVzY2FwZVV0aWxzLmpzXG4gKiogbW9kdWxlIGlkID0gMzhcbiAqKiBtb2R1bGUgY2h1bmtz
ID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmlj
dCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50
Jyk7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vUmVhY3RQcm9wVHlw
ZXNTZWNyZXQnKTtcbnZhciBwcm9wVHlwZXNGYWN0b3J5ID0gcmVxdWlyZSgncHJvcC10eXBlcy9m
YWN0b3J5Jyk7XG5cbnZhciBSZWFjdCA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9SZWFjdCcpO1xudmFy
IFByb3BUeXBlcyA9IHByb3BUeXBlc0ZhY3RvcnkoUmVhY3QuaXNWYWxpZEVsZW1lbnQpO1xuXG52
YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIgd2Fybmlu
ZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxudmFyIGhhc1JlYWRPbmx5VmFsdWUg
PSB7XG4gIGJ1dHRvbjogdHJ1ZSxcbiAgY2hlY2tib3g6IHRydWUsXG4gIGltYWdlOiB0cnVlLFxu
ICBoaWRkZW46IHRydWUsXG4gIHJhZGlvOiB0cnVlLFxuICByZXNldDogdHJ1ZSxcbiAgc3VibWl0
OiB0cnVlXG59O1xuXG5mdW5jdGlvbiBfYXNzZXJ0U2luZ2xlTGluayhpbnB1dFByb3BzKSB7XG4g
ICEoaW5wdXRQcm9wcy5jaGVja2VkTGluayA9PSBudWxsIHx8IGlucHV0UHJvcHMudmFsdWVMaW5r
ID09IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFy
aWFudChmYWxzZSwgJ0Nhbm5vdCBwcm92aWRlIGEgY2hlY2tlZExpbmsgYW5kIGEgdmFsdWVMaW5r
LiBJZiB5b3Ugd2FudCB0byB1c2UgY2hlY2tlZExpbmssIHlvdSBwcm9iYWJseSBkb25cXCd0IHdh
bnQgdG8gdXNlIHZhbHVlTGluayBhbmQgdmljZSB2ZXJzYS4nKSA6IF9wcm9kSW52YXJpYW50KCc4
NycpIDogdm9pZCAwO1xufVxuZnVuY3Rpb24gX2Fzc2VydFZhbHVlTGluayhpbnB1dFByb3BzKSB7
XG4gIF9hc3NlcnRTaW5nbGVMaW5rKGlucHV0UHJvcHMpO1xuICAhKGlucHV0UHJvcHMudmFsdWUg
PT0gbnVsbCAmJiBpbnB1dFByb3BzLm9uQ2hhbmdlID09IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBwcm92aWRl
IGEgdmFsdWVMaW5rIGFuZCBhIHZhbHVlIG9yIG9uQ2hhbmdlIGV2ZW50LiBJZiB5b3Ugd2FudCB0
byB1c2UgdmFsdWUgb3Igb25DaGFuZ2UsIHlvdSBwcm9iYWJseSBkb25cXCd0IHdhbnQgdG8gdXNl
IHZhbHVlTGluay4nKSA6IF9wcm9kSW52YXJpYW50KCc4OCcpIDogdm9pZCAwO1xufVxuXG5mdW5j
dGlvbiBfYXNzZXJ0Q2hlY2tlZExpbmsoaW5wdXRQcm9wcykge1xuICBfYXNzZXJ0U2luZ2xlTGlu
ayhpbnB1dFByb3BzKTtcbiAgIShpbnB1dFByb3BzLmNoZWNrZWQgPT0gbnVsbCAmJiBpbnB1dFBy
b3BzLm9uQ2hhbmdlID09IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBwcm92aWRlIGEgY2hlY2tlZExpbmsgYW5k
IGEgY2hlY2tlZCBwcm9wZXJ0eSBvciBvbkNoYW5nZSBldmVudC4gSWYgeW91IHdhbnQgdG8gdXNl
IGNoZWNrZWQgb3Igb25DaGFuZ2UsIHlvdSBwcm9iYWJseSBkb25cXCd0IHdhbnQgdG8gdXNlIGNo
ZWNrZWRMaW5rJykgOiBfcHJvZEludmFyaWFudCgnODknKSA6IHZvaWQgMDtcbn1cblxudmFyIHBy
b3BUeXBlcyA9IHtcbiAgdmFsdWU6IGZ1bmN0aW9uIChwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVu
dE5hbWUpIHtcbiAgICBpZiAoIXByb3BzW3Byb3BOYW1lXSB8fCBoYXNSZWFkT25seVZhbHVlW3By
b3BzLnR5cGVdIHx8IHByb3BzLm9uQ2hhbmdlIHx8IHByb3BzLnJlYWRPbmx5IHx8IHByb3BzLmRp
c2FibGVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBFcnJv
cignWW91IHByb3ZpZGVkIGEgYHZhbHVlYCBwcm9wIHRvIGEgZm9ybSBmaWVsZCB3aXRob3V0IGFu
ICcgKyAnYG9uQ2hhbmdlYCBoYW5kbGVyLiBUaGlzIHdpbGwgcmVuZGVyIGEgcmVhZC1vbmx5IGZp
ZWxkLiBJZiAnICsgJ3RoZSBmaWVsZCBzaG91bGQgYmUgbXV0YWJsZSB1c2UgYGRlZmF1bHRWYWx1
ZWAuIE90aGVyd2lzZSwgJyArICdzZXQgZWl0aGVyIGBvbkNoYW5nZWAgb3IgYHJlYWRPbmx5YC4n
KTtcbiAgfSxcbiAgY2hlY2tlZDogZnVuY3Rpb24gKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50
TmFtZSkge1xuICAgIGlmICghcHJvcHNbcHJvcE5hbWVdIHx8IHByb3BzLm9uQ2hhbmdlIHx8IHBy
b3BzLnJlYWRPbmx5IHx8IHByb3BzLmRpc2FibGVkKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAg
ICB9XG4gICAgcmV0dXJuIG5ldyBFcnJvcignWW91IHByb3ZpZGVkIGEgYGNoZWNrZWRgIHByb3Ag
dG8gYSBmb3JtIGZpZWxkIHdpdGhvdXQgYW4gJyArICdgb25DaGFuZ2VgIGhhbmRsZXIuIFRoaXMg
d2lsbCByZW5kZXIgYSByZWFkLW9ubHkgZmllbGQuIElmICcgKyAndGhlIGZpZWxkIHNob3VsZCBi
ZSBtdXRhYmxlIHVzZSBgZGVmYXVsdENoZWNrZWRgLiBPdGhlcndpc2UsICcgKyAnc2V0IGVpdGhl
ciBgb25DaGFuZ2VgIG9yIGByZWFkT25seWAuJyk7XG4gIH0sXG4gIG9uQ2hhbmdlOiBQcm9wVHlw
ZXMuZnVuY1xufTtcblxudmFyIGxvZ2dlZFR5cGVGYWlsdXJlcyA9IHt9O1xuZnVuY3Rpb24gZ2V0
RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKSB7XG4gIGlmIChvd25lcikge1xuICAgIHZh
ciBuYW1lID0gb3duZXIuZ2V0TmFtZSgpO1xuICAgIGlmIChuYW1lKSB7XG4gICAgICByZXR1cm4g
JyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xuICAgIH1cbiAg
fVxuICByZXR1cm4gJyc7XG59XG5cbi8qKlxuICogUHJvdmlkZSBhIGxpbmtlZCBgdmFsdWVgIGF0
dHJpYnV0ZSBmb3IgY29udHJvbGxlZCBmb3Jtcy4gWW91IHNob3VsZCBub3QgdXNlXG4gKiB0aGlz
IG91dHNpZGUgb2YgdGhlIFJlYWN0RE9NIGNvbnRyb2xsZWQgZm9ybSBjb21wb25lbnRzLlxuICov
XG52YXIgTGlua2VkVmFsdWVVdGlscyA9IHtcbiAgY2hlY2tQcm9wVHlwZXM6IGZ1bmN0aW9uICh0
YWdOYW1lLCBwcm9wcywgb3duZXIpIHtcbiAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBwcm9wVHlw
ZXMpIHtcbiAgICAgIGlmIChwcm9wVHlwZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4g
ICAgICAgIHZhciBlcnJvciA9IHByb3BUeXBlc1twcm9wTmFtZV0ocHJvcHMsIHByb3BOYW1lLCB0
YWdOYW1lLCAncHJvcCcsIG51bGwsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcbiAgICAgIH1cbiAg
ICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmICEoZXJyb3IubWVzc2FnZSBpbiBsb2dn
ZWRUeXBlRmFpbHVyZXMpKSB7XG4gICAgICAgIC8vIE9ubHkgbW9uaXRvciB0aGlzIGZhaWx1cmUg
b25jZSBiZWNhdXNlIHRoZXJlIHRlbmRzIHRvIGJlIGEgbG90IG9mIHRoZVxuICAgICAgICAvLyBz
YW1lIGVycm9yLlxuICAgICAgICBsb2dnZWRUeXBlRmFpbHVyZXNbZXJyb3IubWVzc2FnZV0gPSB0
cnVlO1xuXG4gICAgICAgIHZhciBhZGRlbmR1bSA9IGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1
bShvd25lcik7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKGZhbHNlLCAnRmFpbGVkIGZvcm0gcHJvcFR5cGU6ICVzJXMnLCBlcnJvci5tZXNz
YWdlLCBhZGRlbmR1bSkgOiB2b2lkIDA7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIC8qKlxu
ICAgKiBAcGFyYW0ge29iamVjdH0gaW5wdXRQcm9wcyBQcm9wcyBmb3IgZm9ybSBjb21wb25lbnRc
biAgICogQHJldHVybiB7Kn0gY3VycmVudCB2YWx1ZSBvZiB0aGUgaW5wdXQgZWl0aGVyIGZyb20g
dmFsdWUgcHJvcCBvciBsaW5rLlxuICAgKi9cbiAgZ2V0VmFsdWU6IGZ1bmN0aW9uIChpbnB1dFBy
b3BzKSB7XG4gICAgaWYgKGlucHV0UHJvcHMudmFsdWVMaW5rKSB7XG4gICAgICBfYXNzZXJ0VmFs
dWVMaW5rKGlucHV0UHJvcHMpO1xuICAgICAgcmV0dXJuIGlucHV0UHJvcHMudmFsdWVMaW5rLnZh
bHVlO1xuICAgIH1cbiAgICByZXR1cm4gaW5wdXRQcm9wcy52YWx1ZTtcbiAgfSxcblxuICAvKipc
biAgICogQHBhcmFtIHtvYmplY3R9IGlucHV0UHJvcHMgUHJvcHMgZm9yIGZvcm0gY29tcG9uZW50
XG4gICAqIEByZXR1cm4geyp9IGN1cnJlbnQgY2hlY2tlZCBzdGF0dXMgb2YgdGhlIGlucHV0IGVp
dGhlciBmcm9tIGNoZWNrZWQgcHJvcFxuICAgKiAgICAgICAgICAgICBvciBsaW5rLlxuICAgKi9c
biAgZ2V0Q2hlY2tlZDogZnVuY3Rpb24gKGlucHV0UHJvcHMpIHtcbiAgICBpZiAoaW5wdXRQcm9w
cy5jaGVja2VkTGluaykge1xuICAgICAgX2Fzc2VydENoZWNrZWRMaW5rKGlucHV0UHJvcHMpO1xu
ICAgICAgcmV0dXJuIGlucHV0UHJvcHMuY2hlY2tlZExpbmsudmFsdWU7XG4gICAgfVxuICAgIHJl
dHVybiBpbnB1dFByb3BzLmNoZWNrZWQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2Jq
ZWN0fSBpbnB1dFByb3BzIFByb3BzIGZvciBmb3JtIGNvbXBvbmVudFxuICAgKiBAcGFyYW0ge1N5
bnRoZXRpY0V2ZW50fSBldmVudCBjaGFuZ2UgZXZlbnQgdG8gaGFuZGxlXG4gICAqL1xuICBleGVj
dXRlT25DaGFuZ2U6IGZ1bmN0aW9uIChpbnB1dFByb3BzLCBldmVudCkge1xuICAgIGlmIChpbnB1
dFByb3BzLnZhbHVlTGluaykge1xuICAgICAgX2Fzc2VydFZhbHVlTGluayhpbnB1dFByb3BzKTtc
biAgICAgIHJldHVybiBpbnB1dFByb3BzLnZhbHVlTGluay5yZXF1ZXN0Q2hhbmdlKGV2ZW50LnRh
cmdldC52YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChpbnB1dFByb3BzLmNoZWNrZWRMaW5rKSB7XG4g
ICAgICBfYXNzZXJ0Q2hlY2tlZExpbmsoaW5wdXRQcm9wcyk7XG4gICAgICByZXR1cm4gaW5wdXRQ
cm9wcy5jaGVja2VkTGluay5yZXF1ZXN0Q2hhbmdlKGV2ZW50LnRhcmdldC5jaGVja2VkKTtcbiAg
ICB9IGVsc2UgaWYgKGlucHV0UHJvcHMub25DaGFuZ2UpIHtcbiAgICAgIHJldHVybiBpbnB1dFBy
b3BzLm9uQ2hhbmdlLmNhbGwodW5kZWZpbmVkLCBldmVudCk7XG4gICAgfVxuICB9XG59O1xuXG5t
b2R1bGUuZXhwb3J0cyA9IExpbmtlZFZhbHVlVXRpbHM7XG5cblxuLyoqKioqKioqKioqKioqKioq
XG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9MaW5rZWRWYWx1ZVV0
aWxzLmpzXG4gKiogbW9kdWxlIGlkID0gMzlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIs
Ii8qKlxuICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0Jztcblxu
dmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxu
dmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG52YXIgaW5q
ZWN0ZWQgPSBmYWxzZTtcblxudmFyIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQgPSB7XG4gIC8q
KlxuICAgKiBPcHRpb25hbGx5IGluamVjdGFibGUgaG9vayBmb3Igc3dhcHBpbmcgb3V0IG1vdW50
IGltYWdlcyBpbiB0aGUgbWlkZGxlIG9mXG4gICAqIHRoZSB0cmVlLlxuICAgKi9cbiAgcmVwbGFj
ZU5vZGVXaXRoTWFya3VwOiBudWxsLFxuXG4gIC8qKlxuICAgKiBPcHRpb25hbGx5IGluamVjdGFi
bGUgaG9vayBmb3IgcHJvY2Vzc2luZyBhIHF1ZXVlIG9mIGNoaWxkIHVwZGF0ZXMuIFdpbGxcbiAg
ICogbGF0ZXIgbW92ZSBpbnRvIE11bHRpQ2hpbGRDb21wb25lbnRzLlxuICAgKi9cbiAgcHJvY2Vz
c0NoaWxkcmVuVXBkYXRlczogbnVsbCxcblxuICBpbmplY3Rpb246IHtcbiAgICBpbmplY3RFbnZp
cm9ubWVudDogZnVuY3Rpb24gKGVudmlyb25tZW50KSB7XG4gICAgICAhIWluamVjdGVkID8gcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1Jl
YWN0Q29tcG9zaXRlQ29tcG9uZW50OiBpbmplY3RFbnZpcm9ubWVudCgpIGNhbiBvbmx5IGJlIGNh
bGxlZCBvbmNlLicpIDogX3Byb2RJbnZhcmlhbnQoJzEwNCcpIDogdm9pZCAwO1xuICAgICAgUmVh
Y3RDb21wb25lbnRFbnZpcm9ubWVudC5yZXBsYWNlTm9kZVdpdGhNYXJrdXAgPSBlbnZpcm9ubWVu
dC5yZXBsYWNlTm9kZVdpdGhNYXJrdXA7XG4gICAgICBSZWFjdENvbXBvbmVudEVudmlyb25tZW50
LnByb2Nlc3NDaGlsZHJlblVwZGF0ZXMgPSBlbnZpcm9ubWVudC5wcm9jZXNzQ2hpbGRyZW5VcGRh
dGVzO1xuICAgICAgaW5qZWN0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4
cG9ydHMgPSBSZWFjdENvbXBvbmVudEVudmlyb25tZW50O1xuXG5cbi8qKioqKioqKioqKioqKioq
KlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RDb21wb25l
bnRFbnZpcm9ubWVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDQwXG4gKiogbW9kdWxlIGNodW5rcyA9
IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMu
XG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0
cmljdCc7XG5cbnZhciBjYXVnaHRFcnJvciA9IG51bGw7XG5cbi8qKlxuICogQ2FsbCBhIGZ1bmN0
aW9uIHdoaWxlIGd1YXJkaW5nIGFnYWluc3QgZXJyb3JzIHRoYXQgaGFwcGVucyB3aXRoaW4gaXQu
XG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgb2YgdGhlIGd1YXJkIHRvIHVzZSBmb3IgbG9n
Z2luZyBvciBkZWJ1Z2dpbmdcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9u
IHRvIGludm9rZVxuICogQHBhcmFtIHsqfSBhIEZpcnN0IGFyZ3VtZW50XG4gKiBAcGFyYW0geyp9
IGIgU2Vjb25kIGFyZ3VtZW50XG4gKi9cbmZ1bmN0aW9uIGludm9rZUd1YXJkZWRDYWxsYmFjayhu
YW1lLCBmdW5jLCBhKSB7XG4gIHRyeSB7XG4gICAgZnVuYyhhKTtcbiAgfSBjYXRjaCAoeCkge1xu
ICAgIGlmIChjYXVnaHRFcnJvciA9PT0gbnVsbCkge1xuICAgICAgY2F1Z2h0RXJyb3IgPSB4O1xu
ICAgIH1cbiAgfVxufVxuXG52YXIgUmVhY3RFcnJvclV0aWxzID0ge1xuICBpbnZva2VHdWFyZGVk
Q2FsbGJhY2s6IGludm9rZUd1YXJkZWRDYWxsYmFjayxcblxuICAvKipcbiAgICogSW52b2tlZCBi
eSBSZWFjdFRlc3RVdGlscy5TaW11bGF0ZSBzbyB0aGF0IGFueSBlcnJvcnMgdGhyb3duIGJ5IHRo
ZSBldmVudFxuICAgKiBoYW5kbGVyIGFyZSBzdXJlIHRvIGJlIHJldGhyb3duIGJ5IHJldGhyb3dD
YXVnaHRFcnJvci5cbiAgICovXG4gIGludm9rZUd1YXJkZWRDYWxsYmFja1dpdGhDYXRjaDogaW52
b2tlR3VhcmRlZENhbGxiYWNrLFxuXG4gIC8qKlxuICAgKiBEdXJpbmcgZXhlY3V0aW9uIG9mIGd1
YXJkZWQgZnVuY3Rpb25zIHdlIHdpbGwgY2FwdHVyZSB0aGUgZmlyc3QgZXJyb3Igd2hpY2hcbiAg
ICogd2Ugd2lsbCByZXRocm93IHRvIGJlIGhhbmRsZWQgYnkgdGhlIHRvcCBsZXZlbCBlcnJvciBo
YW5kbGVyLlxuICAgKi9cbiAgcmV0aHJvd0NhdWdodEVycm9yOiBmdW5jdGlvbiAoKSB7XG4gICAg
aWYgKGNhdWdodEVycm9yKSB7XG4gICAgICB2YXIgZXJyb3IgPSBjYXVnaHRFcnJvcjtcbiAgICAg
IGNhdWdodEVycm9yID0gbnVsbDtcbiAgICAgIHRocm93IGVycm9yO1xuICAgIH1cbiAgfVxufTtc
blxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgLyoqXG4g
ICAqIFRvIGhlbHAgZGV2ZWxvcG1lbnQgd2UgY2FuIGdldCBiZXR0ZXIgZGV2dG9vbHMgaW50ZWdy
YXRpb24gYnkgc2ltdWxhdGluZyBhXG4gICAqIHJlYWwgYnJvd3NlciBldmVudC5cbiAgICovXG4g
IGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Ygd2luZG93LmRpc3Bh
dGNoRXZlbnQgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVk
JyAmJiB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRXZlbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICB2
YXIgZmFrZU5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdyZWFjdCcpO1xuICAgIFJlYWN0
RXJyb3JVdGlscy5pbnZva2VHdWFyZGVkQ2FsbGJhY2sgPSBmdW5jdGlvbiAobmFtZSwgZnVuYywg
YSkge1xuICAgICAgdmFyIGJvdW5kRnVuYyA9IGZ1bmMuYmluZChudWxsLCBhKTtcbiAgICAgIHZh
ciBldnRUeXBlID0gJ3JlYWN0LScgKyBuYW1lO1xuICAgICAgZmFrZU5vZGUuYWRkRXZlbnRMaXN0
ZW5lcihldnRUeXBlLCBib3VuZEZ1bmMsIGZhbHNlKTtcbiAgICAgIHZhciBldnQgPSBkb2N1bWVu
dC5jcmVhdGVFdmVudCgnRXZlbnQnKTtcbiAgICAgIGV2dC5pbml0RXZlbnQoZXZ0VHlwZSwgZmFs
c2UsIGZhbHNlKTtcbiAgICAgIGZha2VOb2RlLmRpc3BhdGNoRXZlbnQoZXZ0KTtcbiAgICAgIGZh
a2VOb2RlLnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZ0VHlwZSwgYm91bmRGdW5jLCBmYWxzZSk7XG4g
ICAgfTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RXJyb3JVdGlscztcblxuXG4v
KioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20v
bGliL1JlYWN0RXJyb3JVdGlscy5qc1xuICoqIG1vZHVsZSBpZCA9IDQxXG4gKiogbW9kdWxlIGNo
dW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBz
dHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFy
aWFudCcpO1xuXG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSByZXF1aXJlKCdyZWFjdC9saWIvUmVh
Y3RDdXJyZW50T3duZXInKTtcbnZhciBSZWFjdEluc3RhbmNlTWFwID0gcmVxdWlyZSgnLi9SZWFj
dEluc3RhbmNlTWFwJyk7XG52YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSByZXF1aXJlKCcuL1Jl
YWN0SW5zdHJ1bWVudGF0aW9uJyk7XG52YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgnLi9SZWFj
dFVwZGF0ZXMnKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFu
dCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbmZ1bmN0
aW9uIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSkge1xuICBSZWFjdFVwZGF0ZXMuZW5x
dWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTtcbn1cblxuZnVuY3Rpb24gZm9ybWF0VW5leHBl
Y3RlZEFyZ3VtZW50KGFyZykge1xuICB2YXIgdHlwZSA9IHR5cGVvZiBhcmc7XG4gIGlmICh0eXBl
ICE9PSAnb2JqZWN0Jykge1xuICAgIHJldHVybiB0eXBlO1xuICB9XG4gIHZhciBkaXNwbGF5TmFt
ZSA9IGFyZy5jb25zdHJ1Y3RvciAmJiBhcmcuY29uc3RydWN0b3IubmFtZSB8fCB0eXBlO1xuICB2
YXIga2V5cyA9IE9iamVjdC5rZXlzKGFyZyk7XG4gIGlmIChrZXlzLmxlbmd0aCA+IDAgJiYga2V5
cy5sZW5ndGggPCAyMCkge1xuICAgIHJldHVybiBkaXNwbGF5TmFtZSArICcgKGtleXM6ICcgKyBr
ZXlzLmpvaW4oJywgJykgKyAnKSc7XG4gIH1cbiAgcmV0dXJuIGRpc3BsYXlOYW1lO1xufVxuXG5m
dW5jdGlvbiBnZXRJbnRlcm5hbEluc3RhbmNlUmVhZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2Us
IGNhbGxlck5hbWUpIHtcbiAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBSZWFjdEluc3RhbmNlTWFw
LmdldChwdWJsaWNJbnN0YW5jZSk7XG4gIGlmICghaW50ZXJuYWxJbnN0YW5jZSkge1xuICAgIGlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgY3Rv
ciA9IHB1YmxpY0luc3RhbmNlLmNvbnN0cnVjdG9yO1xuICAgICAgLy8gT25seSB3YXJuIHdoZW4g
d2UgaGF2ZSBhIGNhbGxlck5hbWUuIE90aGVyd2lzZSB3ZSBzaG91bGQgYmUgc2lsZW50LlxuICAg
ICAgLy8gV2UncmUgcHJvYmFibHkgY2FsbGluZyBmcm9tIGVucXVldWVDYWxsYmFjay4gV2UgZG9u
J3Qgd2FudCB0byB3YXJuXG4gICAgICAvLyB0aGVyZSBiZWNhdXNlIHdlIGFscmVhZHkgd2FybmVk
IGZvciB0aGUgY29ycmVzcG9uZGluZyBsaWZlY3ljbGUgbWV0aG9kLlxuICAgICAgcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWNhbGxlck5hbWUsICclcygu
Li4pOiBDYW4gb25seSB1cGRhdGUgYSBtb3VudGVkIG9yIG1vdW50aW5nIGNvbXBvbmVudC4gJyAr
ICdUaGlzIHVzdWFsbHkgbWVhbnMgeW91IGNhbGxlZCAlcygpIG9uIGFuIHVubW91bnRlZCBjb21w
b25lbnQuICcgKyAnVGhpcyBpcyBhIG5vLW9wLiBQbGVhc2UgY2hlY2sgdGhlIGNvZGUgZm9yIHRo
ZSAlcyBjb21wb25lbnQuJywgY2FsbGVyTmFtZSwgY2FsbGVyTmFtZSwgY3RvciAmJiAoY3Rvci5k
aXNwbGF5TmFtZSB8fCBjdG9yLm5hbWUpIHx8ICdSZWFjdENsYXNzJykgOiB2b2lkIDA7XG4gICAg
fVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gd2FybmluZyhSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID09IG51bGwsICclcyguLi4p
OiBDYW5ub3QgdXBkYXRlIGR1cmluZyBhbiBleGlzdGluZyBzdGF0ZSB0cmFuc2l0aW9uIChzdWNo
IGFzICcgKyBcIndpdGhpbiBgcmVuZGVyYCBvciBhbm90aGVyIGNvbXBvbmVudCdzIGNvbnN0cnVj
dG9yKS4gUmVuZGVyIG1ldGhvZHMgXCIgKyAnc2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlvbiBvZiBw
cm9wcyBhbmQgc3RhdGU7IGNvbnN0cnVjdG9yICcgKyAnc2lkZS1lZmZlY3RzIGFyZSBhbiBhbnRp
LXBhdHRlcm4sIGJ1dCBjYW4gYmUgbW92ZWQgdG8gJyArICdgY29tcG9uZW50V2lsbE1vdW50YC4n
LCBjYWxsZXJOYW1lKSA6IHZvaWQgMDtcbiAgfVxuXG4gIHJldHVybiBpbnRlcm5hbEluc3RhbmNl
O1xufVxuXG4vKipcbiAqIFJlYWN0VXBkYXRlUXVldWUgYWxsb3dzIGZvciBzdGF0ZSB1cGRhdGVz
IHRvIGJlIHNjaGVkdWxlZCBpbnRvIGEgbGF0ZXJcbiAqIHJlY29uY2lsaWF0aW9uIHN0ZXAuXG4g
Ki9cbnZhciBSZWFjdFVwZGF0ZVF1ZXVlID0ge1xuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIg
b3Igbm90IHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCBpcyBtb3VudGVkLlxuICAgKiBAcGFyYW0g
e1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB3ZSB3YW50IHRvIHRlc3Qu
XG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgbW91bnRlZCwgZmFsc2Ugb3RoZXJ3aXNl
LlxuICAgKiBAcHJvdGVjdGVkXG4gICAqIEBmaW5hbFxuICAgKi9cbiAgaXNNb3VudGVkOiBmdW5j
dGlvbiAocHVibGljSW5zdGFuY2UpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIG93bmVyID0gUmVhY3RDdXJyZW50T3duZXIuY3Vy
cmVudDtcbiAgICAgIGlmIChvd25lciAhPT0gbnVsbCkge1xuICAgICAgICBwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhvd25lci5fd2FybmVkQWJvdXRSZWZz
SW5SZW5kZXIsICclcyBpcyBhY2Nlc3NpbmcgaXNNb3VudGVkIGluc2lkZSBpdHMgcmVuZGVyKCkg
ZnVuY3Rpb24uICcgKyAncmVuZGVyKCkgc2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlvbiBvZiBwcm9w
cyBhbmQgc3RhdGUuIEl0IHNob3VsZCAnICsgJ25ldmVyIGFjY2VzcyBzb21ldGhpbmcgdGhhdCBy
ZXF1aXJlcyBzdGFsZSBkYXRhIGZyb20gdGhlIHByZXZpb3VzICcgKyAncmVuZGVyLCBzdWNoIGFz
IHJlZnMuIE1vdmUgdGhpcyBsb2dpYyB0byBjb21wb25lbnREaWRNb3VudCBhbmQgJyArICdjb21w
b25lbnREaWRVcGRhdGUgaW5zdGVhZC4nLCBvd25lci5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50
JykgOiB2b2lkIDA7XG4gICAgICAgIG93bmVyLl93YXJuZWRBYm91dFJlZnNJblJlbmRlciA9IHRy
dWU7XG4gICAgICB9XG4gICAgfVxuICAgIHZhciBpbnRlcm5hbEluc3RhbmNlID0gUmVhY3RJbnN0
YW5jZU1hcC5nZXQocHVibGljSW5zdGFuY2UpO1xuICAgIGlmIChpbnRlcm5hbEluc3RhbmNlKSB7
XG4gICAgICAvLyBEdXJpbmcgY29tcG9uZW50V2lsbE1vdW50IGFuZCByZW5kZXIgdGhpcyB3aWxs
IHN0aWxsIGJlIG51bGwgYnV0IGFmdGVyXG4gICAgICAvLyB0aGF0IHdpbGwgYWx3YXlzIHJlbmRl
ciB0byBzb21ldGhpbmcuIEF0IGxlYXN0IGZvciBub3cuIFNvIHdlIGNhbiB1c2VcbiAgICAgIC8v
IHRoaXMgaGFjay5cbiAgICAgIHJldHVybiAhIWludGVybmFsSW5zdGFuY2UuX3JlbmRlcmVkQ29t
cG9uZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9LFxu
XG4gIC8qKlxuICAgKiBFbnF1ZXVlIGEgY2FsbGJhY2sgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIGFm
dGVyIGFsbCB0aGUgcGVuZGluZyB1cGRhdGVzXG4gICAqIGhhdmUgcHJvY2Vzc2VkLlxuICAgKlxu
ICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0byB1
c2UgYXMgYHRoaXNgIGNvbnRleHQuXG4gICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBD
YWxsZWQgYWZ0ZXIgc3RhdGUgaXMgdXBkYXRlZC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGNhbGxl
ck5hbWUgTmFtZSBvZiB0aGUgY2FsbGluZyBmdW5jdGlvbiBpbiB0aGUgcHVibGljIEFQSS5cbiAg
ICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlQ2FsbGJhY2s6IGZ1bmN0aW9uIChwdWJsaWNJ
bnN0YW5jZSwgY2FsbGJhY2ssIGNhbGxlck5hbWUpIHtcbiAgICBSZWFjdFVwZGF0ZVF1ZXVlLnZh
bGlkYXRlQ2FsbGJhY2soY2FsbGJhY2ssIGNhbGxlck5hbWUpO1xuICAgIHZhciBpbnRlcm5hbElu
c3RhbmNlID0gZ2V0SW50ZXJuYWxJbnN0YW5jZVJlYWR5Rm9yVXBkYXRlKHB1YmxpY0luc3RhbmNl
KTtcblxuICAgIC8vIFByZXZpb3VzbHkgd2Ugd291bGQgdGhyb3cgYW4gZXJyb3IgaWYgd2UgZGlk
bid0IGhhdmUgYW4gaW50ZXJuYWxcbiAgICAvLyBpbnN0YW5jZS4gU2luY2Ugd2Ugd2FudCB0byBt
YWtlIGl0IGEgbm8tb3AgaW5zdGVhZCwgd2UgbWlycm9yIHRoZSBzYW1lXG4gICAgLy8gYmVoYXZp
b3Igd2UgaGF2ZSBpbiBvdGhlciBlbnF1ZXVlKiBtZXRob2RzLlxuICAgIC8vIFdlIGFsc28gbmVl
ZCB0byBpZ25vcmUgY2FsbGJhY2tzIGluIGNvbXBvbmVudFdpbGxNb3VudC4gU2VlXG4gICAgLy8g
ZW5xdWV1ZVVwZGF0ZXMuXG4gICAgaWYgKCFpbnRlcm5hbEluc3RhbmNlKSB7XG4gICAgICByZXR1
cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxi
YWNrcykge1xuICAgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcy5wdXNoKGNh
bGxiYWNrKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0Nh
bGxiYWNrcyA9IFtjYWxsYmFja107XG4gICAgfVxuICAgIC8vIFRPRE86IFRoZSBjYWxsYmFjayBo
ZXJlIGlzIGlnbm9yZWQgd2hlbiBzZXRTdGF0ZSBpcyBjYWxsZWQgZnJvbVxuICAgIC8vIGNvbXBv
bmVudFdpbGxNb3VudC4gRWl0aGVyIGZpeCBpdCBvciBkaXNhbGxvdyBkb2luZyBzbyBjb21wbGV0
ZWx5IGluXG4gICAgLy8gZmF2b3Igb2YgZ2V0SW5pdGlhbFN0YXRlLiBBbHRlcm5hdGl2ZWx5LCB3
ZSBjYW4gZGlzYWxsb3dcbiAgICAvLyBjb21wb25lbnRXaWxsTW91bnQgZHVyaW5nIHNlcnZlci1z
aWRlIHJlbmRlcmluZy5cbiAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpO1xuICB9
LFxuXG4gIGVucXVldWVDYWxsYmFja0ludGVybmFsOiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5j
ZSwgY2FsbGJhY2spIHtcbiAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNr
cykge1xuICAgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcy5wdXNoKGNhbGxi
YWNrKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxi
YWNrcyA9IFtjYWxsYmFja107XG4gICAgfVxuICAgIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0
YW5jZSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEZvcmNlcyBhbiB1cGRhdGUuIFRoaXMgc2hvdWxk
IG9ubHkgYmUgaW52b2tlZCB3aGVuIGl0IGlzIGtub3duIHdpdGhcbiAgICogY2VydGFpbnR5IHRo
YXQgd2UgYXJlICoqbm90KiogaW4gYSBET00gdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIFlvdSBt
YXkgd2FudCB0byBjYWxsIHRoaXMgd2hlbiB5b3Uga25vdyB0aGF0IHNvbWUgZGVlcGVyIGFzcGVj
dCBvZiB0aGVcbiAgICogY29tcG9uZW50J3Mgc3RhdGUgaGFzIGNoYW5nZWQgYnV0IGBzZXRTdGF0
ZWAgd2FzIG5vdCBjYWxsZWQuXG4gICAqXG4gICAqIFRoaXMgd2lsbCBub3QgaW52b2tlIGBzaG91
bGRDb21wb25lbnRVcGRhdGVgLCBidXQgaXQgd2lsbCBpbnZva2VcbiAgICogYGNvbXBvbmVudFdp
bGxVcGRhdGVgIGFuZCBgY29tcG9uZW50RGlkVXBkYXRlYC5cbiAgICpcbiAgICogQHBhcmFtIHtS
ZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5k
ZXIuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZUZvcmNlVXBkYXRlOiBmdW5jdGlv
biAocHVibGljSW5zdGFuY2UpIHtcbiAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IGdldEludGVy
bmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShwdWJsaWNJbnN0YW5jZSwgJ2ZvcmNlVXBkYXRlJyk7
XG5cbiAgICBpZiAoIWludGVybmFsSW5zdGFuY2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5c
biAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nRm9yY2VVcGRhdGUgPSB0cnVlO1xuXG4gICAg
ZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTtcbiAgfSxcblxuICAvKipcbiAgICogUmVw
bGFjZXMgYWxsIG9mIHRoZSBzdGF0ZS4gQWx3YXlzIHVzZSB0aGlzIG9yIGBzZXRTdGF0ZWAgdG8g
bXV0YXRlIHN0YXRlLlxuICAgKiBZb3Ugc2hvdWxkIHRyZWF0IGB0aGlzLnN0YXRlYCBhcyBpbW11
dGFibGUuXG4gICAqXG4gICAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGB0aGlzLnN0YXRl
YCB3aWxsIGJlIGltbWVkaWF0ZWx5IHVwZGF0ZWQsIHNvXG4gICAqIGFjY2Vzc2luZyBgdGhpcy5z
dGF0ZWAgYWZ0ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBvbGQgdmFsdWUu
XG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3Rh
bmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29tcGxldGVT
dGF0ZSBOZXh0IHN0YXRlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVSZXBsYWNl
U3RhdGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgY29tcGxldGVTdGF0ZSwgY2FsbGJhY2sp
IHtcbiAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZv
clVwZGF0ZShwdWJsaWNJbnN0YW5jZSwgJ3JlcGxhY2VTdGF0ZScpO1xuXG4gICAgaWYgKCFpbnRl
cm5hbEluc3RhbmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaW50ZXJuYWxJbnN0
YW5jZS5fcGVuZGluZ1N0YXRlUXVldWUgPSBbY29tcGxldGVTdGF0ZV07XG4gICAgaW50ZXJuYWxJ
bnN0YW5jZS5fcGVuZGluZ1JlcGxhY2VTdGF0ZSA9IHRydWU7XG5cbiAgICAvLyBGdXR1cmUtcHJv
b2YgMTUuNVxuICAgIGlmIChjYWxsYmFjayAhPT0gdW5kZWZpbmVkICYmIGNhbGxiYWNrICE9PSBu
dWxsKSB7XG4gICAgICBSZWFjdFVwZGF0ZVF1ZXVlLnZhbGlkYXRlQ2FsbGJhY2soY2FsbGJhY2ss
ICdyZXBsYWNlU3RhdGUnKTtcbiAgICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2Fs
bGJhY2tzKSB7XG4gICAgICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MucHVz
aChjYWxsYmFjayk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbnRlcm5hbEluc3RhbmNlLl9w
ZW5kaW5nQ2FsbGJhY2tzID0gW2NhbGxiYWNrXTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBlbnF1
ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTZXRzIGEg
c3Vic2V0IG9mIHRoZSBzdGF0ZS4gVGhpcyBvbmx5IGV4aXN0cyBiZWNhdXNlIF9wZW5kaW5nU3Rh
dGUgaXNcbiAgICogaW50ZXJuYWwuIFRoaXMgcHJvdmlkZXMgYSBtZXJnaW5nIHN0cmF0ZWd5IHRo
YXQgaXMgbm90IGF2YWlsYWJsZSB0byBkZWVwXG4gICAqIHByb3BlcnRpZXMgd2hpY2ggaXMgY29u
ZnVzaW5nLiBUT0RPOiBFeHBvc2UgcGVuZGluZ1N0YXRlIG9yIGRvbid0IHVzZSBpdFxuICAgKiBk
dXJpbmcgdGhlIG1lcmdlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0lu
c3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICogQHBhcmFtIHtv
YmplY3R9IHBhcnRpYWxTdGF0ZSBOZXh0IHBhcnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGgg
c3RhdGUuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZVNldFN0YXRlOiBmdW5jdGlv
biAocHVibGljSW5zdGFuY2UsIHBhcnRpYWxTdGF0ZSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5k
ZWJ1Z1Rvb2wub25TZXRTdGF0ZSgpO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IHdhcm5pbmcocGFydGlhbFN0YXRlICE9IG51bGwsICdzZXRTdGF0ZSguLi4p
OiBZb3UgcGFzc2VkIGFuIHVuZGVmaW5lZCBvciBudWxsIHN0YXRlIG9iamVjdDsgJyArICdpbnN0
ZWFkLCB1c2UgZm9yY2VVcGRhdGUoKS4nKSA6IHZvaWQgMDtcbiAgICB9XG5cbiAgICB2YXIgaW50
ZXJuYWxJbnN0YW5jZSA9IGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZShwdWJsaWNJ
bnN0YW5jZSwgJ3NldFN0YXRlJyk7XG5cbiAgICBpZiAoIWludGVybmFsSW5zdGFuY2UpIHtcbiAg
ICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgcXVldWUgPSBpbnRlcm5hbEluc3RhbmNlLl9w
ZW5kaW5nU3RhdGVRdWV1ZSB8fCAoaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ1N0YXRlUXVldWUg
PSBbXSk7XG4gICAgcXVldWUucHVzaChwYXJ0aWFsU3RhdGUpO1xuXG4gICAgZW5xdWV1ZVVwZGF0
ZShpbnRlcm5hbEluc3RhbmNlKTtcbiAgfSxcblxuICBlbnF1ZXVlRWxlbWVudEludGVybmFsOiBm
dW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSwgbmV4dEVsZW1lbnQsIG5leHRDb250ZXh0KSB7XG4g
ICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0VsZW1lbnQgPSBuZXh0RWxlbWVudDtcbiAgICAv
LyBUT0RPOiBpbnRyb2R1Y2UgX3BlbmRpbmdDb250ZXh0IGluc3RlYWQgb2Ygc2V0dGluZyBpdCBk
aXJlY3RseS5cbiAgICBpbnRlcm5hbEluc3RhbmNlLl9jb250ZXh0ID0gbmV4dENvbnRleHQ7XG4g
ICAgZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTtcbiAgfSxcblxuICB2YWxpZGF0ZUNh
bGxiYWNrOiBmdW5jdGlvbiAoY2FsbGJhY2ssIGNhbGxlck5hbWUpIHtcbiAgICAhKCFjYWxsYmFj
ayB8fCB0eXBlb2YgY2FsbGJhY2sgPT09ICdmdW5jdGlvbicpID8gcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzKC4uLik6IEV4cGVjdGVk
IHRoZSBsYXN0IG9wdGlvbmFsIGBjYWxsYmFja2AgYXJndW1lbnQgdG8gYmUgYSBmdW5jdGlvbi4g
SW5zdGVhZCByZWNlaXZlZDogJXMuJywgY2FsbGVyTmFtZSwgZm9ybWF0VW5leHBlY3RlZEFyZ3Vt
ZW50KGNhbGxiYWNrKSkgOiBfcHJvZEludmFyaWFudCgnMTIyJywgY2FsbGVyTmFtZSwgZm9ybWF0
VW5leHBlY3RlZEFyZ3VtZW50KGNhbGxiYWNrKSkgOiB2b2lkIDA7XG4gIH1cbn07XG5cbm1vZHVs
ZS5leHBvcnRzID0gUmVhY3RVcGRhdGVRdWV1ZTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAq
KiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0VXBkYXRlUXVldWUu
anNcbiAqKiBtb2R1bGUgaWQgPSA0MlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoq
XG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0
cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxu
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbi8qIGdsb2JhbHMgTVNBcHAgKi9cblxuJ3Vz
ZSBzdHJpY3QnO1xuXG4vKipcbiAqIENyZWF0ZSBhIGZ1bmN0aW9uIHdoaWNoIGhhcyAndW5zYWZl
JyBwcml2aWxlZ2VzIChyZXF1aXJlZCBieSB3aW5kb3dzOCBhcHBzKVxuICovXG5cbnZhciBjcmVh
dGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uID0gZnVuY3Rpb24gKGZ1bmMpIHtcbiAgaWYg
KHR5cGVvZiBNU0FwcCAhPT0gJ3VuZGVmaW5lZCcgJiYgTVNBcHAuZXhlY1Vuc2FmZUxvY2FsRnVu
Y3Rpb24pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGFyZzAsIGFyZzEsIGFyZzIsIGFyZzMpIHtc
biAgICAgIE1TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uICgpIHtcbiAgICAg
ICAgcmV0dXJuIGZ1bmMoYXJnMCwgYXJnMSwgYXJnMiwgYXJnMyk7XG4gICAgICB9KTtcbiAgICB9
O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmdW5jO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0
cyA9IGNyZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb247XG5cblxuLyoqKioqKioqKioq
KioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9jcmVhdGVN
aWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uLmpzXG4gKiogbW9kdWxlIGlkID0gNDNcbiAqKiBt
b2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xu
XG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogYGNoYXJDb2RlYCByZXByZXNlbnRzIHRoZSBhY3R1
YWwgXCJjaGFyYWN0ZXIgY29kZVwiIGFuZCBpcyBzYWZlIHRvIHVzZSB3aXRoXG4gKiBgU3RyaW5n
LmZyb21DaGFyQ29kZWAuIEFzIHN1Y2gsIG9ubHkga2V5cyB0aGF0IGNvcnJlc3BvbmQgdG8gcHJp
bnRhYmxlXG4gKiBjaGFyYWN0ZXJzIHByb2R1Y2UgYSB2YWxpZCBgY2hhckNvZGVgLCB0aGUgb25s
eSBleGNlcHRpb24gdG8gdGhpcyBpcyBFbnRlci5cbiAqIFRoZSBUYWIta2V5IGlzIGNvbnNpZGVy
ZWQgbm9uLXByaW50YWJsZSBhbmQgZG9lcyBub3QgaGF2ZSBhIGBjaGFyQ29kZWAsXG4gKiBwcmVz
dW1hYmx5IGJlY2F1c2UgaXQgZG9lcyBub3QgcHJvZHVjZSBhIHRhYi1jaGFyYWN0ZXIgaW4gYnJv
d3NlcnMuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2Vy
IGV2ZW50LlxuICogQHJldHVybiB7bnVtYmVyfSBOb3JtYWxpemVkIGBjaGFyQ29kZWAgcHJvcGVy
dHkuXG4gKi9cblxuZnVuY3Rpb24gZ2V0RXZlbnRDaGFyQ29kZShuYXRpdmVFdmVudCkge1xuICB2
YXIgY2hhckNvZGU7XG4gIHZhciBrZXlDb2RlID0gbmF0aXZlRXZlbnQua2V5Q29kZTtcblxuICBp
ZiAoJ2NoYXJDb2RlJyBpbiBuYXRpdmVFdmVudCkge1xuICAgIGNoYXJDb2RlID0gbmF0aXZlRXZl
bnQuY2hhckNvZGU7XG5cbiAgICAvLyBGRiBkb2VzIG5vdCBzZXQgYGNoYXJDb2RlYCBmb3IgdGhl
IEVudGVyLWtleSwgY2hlY2sgYWdhaW5zdCBga2V5Q29kZWAuXG4gICAgaWYgKGNoYXJDb2RlID09
PSAwICYmIGtleUNvZGUgPT09IDEzKSB7XG4gICAgICBjaGFyQ29kZSA9IDEzO1xuICAgIH1cbiAg
fSBlbHNlIHtcbiAgICAvLyBJRTggZG9lcyBub3QgaW1wbGVtZW50IGBjaGFyQ29kZWAsIGJ1dCBg
a2V5Q29kZWAgaGFzIHRoZSBjb3JyZWN0IHZhbHVlLlxuICAgIGNoYXJDb2RlID0ga2V5Q29kZTtc
biAgfVxuXG4gIC8vIFNvbWUgbm9uLXByaW50YWJsZSBrZXlzIGFyZSByZXBvcnRlZCBpbiBgY2hh
ckNvZGVgL2BrZXlDb2RlYCwgZGlzY2FyZCB0aGVtLlxuICAvLyBNdXN0IG5vdCBkaXNjYXJkIHRo
ZSAobm9uLSlwcmludGFibGUgRW50ZXIta2V5LlxuICBpZiAoY2hhckNvZGUgPj0gMzIgfHwgY2hh
ckNvZGUgPT09IDEzKSB7XG4gICAgcmV0dXJuIGNoYXJDb2RlO1xuICB9XG5cbiAgcmV0dXJuIDA7
XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0RXZlbnRDaGFyQ29kZTtcblxuXG4vKioqKioqKioq
KioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL2dldEV2
ZW50Q2hhckNvZGUuanNcbiAqKiBtb2R1bGUgaWQgPSA0NFxuICoqIG1vZHVsZSBjaHVua3MgPSAw
XG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0Jztc
blxuLyoqXG4gKiBUcmFuc2xhdGlvbiBmcm9tIG1vZGlmaWVyIGtleSB0byB0aGUgYXNzb2NpYXRl
ZCBwcm9wZXJ0eSBpbiB0aGUgZXZlbnQuXG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RP
TS1MZXZlbC0zLUV2ZW50cy8ja2V5cy1Nb2RpZmllcnNcbiAqL1xuXG52YXIgbW9kaWZpZXJLZXlU
b1Byb3AgPSB7XG4gIEFsdDogJ2FsdEtleScsXG4gIENvbnRyb2w6ICdjdHJsS2V5JyxcbiAgTWV0
YTogJ21ldGFLZXknLFxuICBTaGlmdDogJ3NoaWZ0S2V5J1xufTtcblxuLy8gSUU4IGRvZXMgbm90
IGltcGxlbWVudCBnZXRNb2RpZmllclN0YXRlIHNvIHdlIHNpbXBseSBtYXAgaXQgdG8gdGhlIG9u
bHlcbi8vIG1vZGlmaWVyIGtleXMgZXhwb3NlZCBieSB0aGUgZXZlbnQgaXRzZWxmLCBkb2VzIG5v
dCBzdXBwb3J0IExvY2sta2V5cy5cbi8vIEN1cnJlbnRseSwgYWxsIG1ham9yIGJyb3dzZXJzIGV4
Y2VwdCBDaHJvbWUgc2VlbXMgdG8gc3VwcG9ydCBMb2NrLWtleXMuXG5mdW5jdGlvbiBtb2RpZmll
clN0YXRlR2V0dGVyKGtleUFyZykge1xuICB2YXIgc3ludGhldGljRXZlbnQgPSB0aGlzO1xuICB2
YXIgbmF0aXZlRXZlbnQgPSBzeW50aGV0aWNFdmVudC5uYXRpdmVFdmVudDtcbiAgaWYgKG5hdGl2
ZUV2ZW50LmdldE1vZGlmaWVyU3RhdGUpIHtcbiAgICByZXR1cm4gbmF0aXZlRXZlbnQuZ2V0TW9k
aWZpZXJTdGF0ZShrZXlBcmcpO1xuICB9XG4gIHZhciBrZXlQcm9wID0gbW9kaWZpZXJLZXlUb1By
b3Bba2V5QXJnXTtcbiAgcmV0dXJuIGtleVByb3AgPyAhIW5hdGl2ZUV2ZW50W2tleVByb3BdIDog
ZmFsc2U7XG59XG5cbmZ1bmN0aW9uIGdldEV2ZW50TW9kaWZpZXJTdGF0ZShuYXRpdmVFdmVudCkg
e1xuICByZXR1cm4gbW9kaWZpZXJTdGF0ZUdldHRlcjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBn
ZXRFdmVudE1vZGlmaWVyU3RhdGU7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFD
SyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9nZXRFdmVudE1vZGlmaWVyU3RhdGUuanNc
biAqKiBtb2R1bGUgaWQgPSA0NVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4g
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBHZXRz
IHRoZSB0YXJnZXQgbm9kZSBmcm9tIGEgbmF0aXZlIGJyb3dzZXIgZXZlbnQgYnkgYWNjb3VudGlu
ZyBmb3JcbiAqIGluY29uc2lzdGVuY2llcyBpbiBicm93c2VyIERPTSBBUElzLlxuICpcbiAqIEBw
YXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEByZXR1
cm4ge0RPTUV2ZW50VGFyZ2V0fSBUYXJnZXQgbm9kZS5cbiAqL1xuXG5mdW5jdGlvbiBnZXRFdmVu
dFRhcmdldChuYXRpdmVFdmVudCkge1xuICB2YXIgdGFyZ2V0ID0gbmF0aXZlRXZlbnQudGFyZ2V0
IHx8IG5hdGl2ZUV2ZW50LnNyY0VsZW1lbnQgfHwgd2luZG93O1xuXG4gIC8vIE5vcm1hbGl6ZSBT
VkcgPHVzZT4gZWxlbWVudCBldmVudHMgIzQ5NjNcbiAgaWYgKHRhcmdldC5jb3JyZXNwb25kaW5n
VXNlRWxlbWVudCkge1xuICAgIHRhcmdldCA9IHRhcmdldC5jb3JyZXNwb25kaW5nVXNlRWxlbWVu
dDtcbiAgfVxuXG4gIC8vIFNhZmFyaSBtYXkgZmlyZSBldmVudHMgb24gdGV4dCBub2RlcyAoTm9k
ZS5URVhUX05PREUgaXMgMykuXG4gIC8vIEBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9q
cy9ldmVudHNfcHJvcGVydGllcy5odG1sXG4gIHJldHVybiB0YXJnZXQubm9kZVR5cGUgPT09IDMg
PyB0YXJnZXQucGFyZW50Tm9kZSA6IHRhcmdldDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRF
dmVudFRhcmdldDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxu
ICoqIC4vfi9yZWFjdC1kb20vbGliL2dldEV2ZW50VGFyZ2V0LmpzXG4gKiogbW9kdWxlIGlkID0g
NDZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
ICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJl
cXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG5cbnZhciB1c2VIYXNGZWF0
dXJlO1xuaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkge1xuICB1c2VIYXNGZWF0
dXJlID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24gJiYgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24u
aGFzRmVhdHVyZSAmJlxuICAvLyBhbHdheXMgcmV0dXJucyB0cnVlIGluIG5ld2VyIGJyb3dzZXJz
IGFzIHBlciB0aGUgc3RhbmRhcmQuXG4gIC8vIEBzZWUgaHR0cDovL2RvbS5zcGVjLndoYXR3Zy5v
cmcvI2RvbS1kb21pbXBsZW1lbnRhdGlvbi1oYXNmZWF0dXJlXG4gIGRvY3VtZW50LmltcGxlbWVu
dGF0aW9uLmhhc0ZlYXR1cmUoJycsICcnKSAhPT0gdHJ1ZTtcbn1cblxuLyoqXG4gKiBDaGVja3Mg
aWYgYW4gZXZlbnQgaXMgc3VwcG9ydGVkIGluIHRoZSBjdXJyZW50IGV4ZWN1dGlvbiBlbnZpcm9u
bWVudC5cbiAqXG4gKiBOT1RFOiBUaGlzIHdpbGwgbm90IHdvcmsgY29ycmVjdGx5IGZvciBub24t
Z2VuZXJpYyBldmVudHMgc3VjaCBhcyBgY2hhbmdlYCxcbiAqIGByZXNldGAsIGBsb2FkYCwgYGVy
cm9yYCwgYW5kIGBzZWxlY3RgLlxuICpcbiAqIEJvcnJvd3MgZnJvbSBNb2Rlcm5penIuXG4gKlxu
ICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50TmFtZVN1ZmZpeCBFdmVudCBuYW1lLCBlLmcuIFwiY2xp
Y2tcIi5cbiAqIEBwYXJhbSB7P2Jvb2xlYW59IGNhcHR1cmUgQ2hlY2sgaWYgdGhlIGNhcHR1cmUg
cGhhc2UgaXMgc3VwcG9ydGVkLlxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgZXZl
bnQgaXMgc3VwcG9ydGVkLlxuICogQGludGVybmFsXG4gKiBAbGljZW5zZSBNb2Rlcm5penIgMy4w
LjBwcmUgKEN1c3RvbSBCdWlsZCkgfCBNSVRcbiAqL1xuZnVuY3Rpb24gaXNFdmVudFN1cHBvcnRl
ZChldmVudE5hbWVTdWZmaXgsIGNhcHR1cmUpIHtcbiAgaWYgKCFFeGVjdXRpb25FbnZpcm9ubWVu
dC5jYW5Vc2VET00gfHwgY2FwdHVyZSAmJiAhKCdhZGRFdmVudExpc3RlbmVyJyBpbiBkb2N1bWVu
dCkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgZXZlbnROYW1lID0gJ29uJyAr
IGV2ZW50TmFtZVN1ZmZpeDtcbiAgdmFyIGlzU3VwcG9ydGVkID0gZXZlbnROYW1lIGluIGRvY3Vt
ZW50O1xuXG4gIGlmICghaXNTdXBwb3J0ZWQpIHtcbiAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKGV2ZW50TmFt
ZSwgJ3JldHVybjsnKTtcbiAgICBpc1N1cHBvcnRlZCA9IHR5cGVvZiBlbGVtZW50W2V2ZW50TmFt
ZV0gPT09ICdmdW5jdGlvbic7XG4gIH1cblxuICBpZiAoIWlzU3VwcG9ydGVkICYmIHVzZUhhc0Zl
YXR1cmUgJiYgZXZlbnROYW1lU3VmZml4ID09PSAnd2hlZWwnKSB7XG4gICAgLy8gVGhpcyBpcyB0
aGUgb25seSB3YXkgdG8gdGVzdCBzdXBwb3J0IGZvciB0aGUgYHdoZWVsYCBldmVudCBpbiBJRTkr
LlxuICAgIGlzU3VwcG9ydGVkID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSgn
RXZlbnRzLndoZWVsJywgJzMuMCcpO1xuICB9XG5cbiAgcmV0dXJuIGlzU3VwcG9ydGVkO1xufVxu
XG5tb2R1bGUuZXhwb3J0cyA9IGlzRXZlbnRTdXBwb3J0ZWQ7XG5cblxuLyoqKioqKioqKioqKioq
KioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9pc0V2ZW50U3Vw
cG9ydGVkLmpzXG4gKiogbW9kdWxlIGlkID0gNDdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoq
LyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8q
KlxuICogR2l2ZW4gYSBgcHJldkVsZW1lbnRgIGFuZCBgbmV4dEVsZW1lbnRgLCBkZXRlcm1pbmVz
IGlmIHRoZSBleGlzdGluZ1xuICogaW5zdGFuY2Ugc2hvdWxkIGJlIHVwZGF0ZWQgYXMgb3Bwb3Nl
ZCB0byBiZWluZyBkZXN0cm95ZWQgb3IgcmVwbGFjZWQgYnkgYSBuZXdcbiAqIGluc3RhbmNlLiBC
b3RoIGFyZ3VtZW50cyBhcmUgZWxlbWVudHMuIFRoaXMgZW5zdXJlcyB0aGF0IHRoaXMgbG9naWMg
Y2FuXG4gKiBvcGVyYXRlIG9uIHN0YXRlbGVzcyB0cmVlcyB3aXRob3V0IGFueSBiYWNraW5nIGlu
c3RhbmNlLlxuICpcbiAqIEBwYXJhbSB7P29iamVjdH0gcHJldkVsZW1lbnRcbiAqIEBwYXJhbSB7
P29iamVjdH0gbmV4dEVsZW1lbnRcbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIGV4
aXN0aW5nIGluc3RhbmNlIHNob3VsZCBiZSB1cGRhdGVkLlxuICogQHByb3RlY3RlZFxuICovXG5c
bmZ1bmN0aW9uIHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50KHByZXZFbGVtZW50LCBuZXh0RWxl
bWVudCkge1xuICB2YXIgcHJldkVtcHR5ID0gcHJldkVsZW1lbnQgPT09IG51bGwgfHwgcHJldkVs
ZW1lbnQgPT09IGZhbHNlO1xuICB2YXIgbmV4dEVtcHR5ID0gbmV4dEVsZW1lbnQgPT09IG51bGwg
fHwgbmV4dEVsZW1lbnQgPT09IGZhbHNlO1xuICBpZiAocHJldkVtcHR5IHx8IG5leHRFbXB0eSkg
e1xuICAgIHJldHVybiBwcmV2RW1wdHkgPT09IG5leHRFbXB0eTtcbiAgfVxuXG4gIHZhciBwcmV2
VHlwZSA9IHR5cGVvZiBwcmV2RWxlbWVudDtcbiAgdmFyIG5leHRUeXBlID0gdHlwZW9mIG5leHRF
bGVtZW50O1xuICBpZiAocHJldlR5cGUgPT09ICdzdHJpbmcnIHx8IHByZXZUeXBlID09PSAnbnVt
YmVyJykge1xuICAgIHJldHVybiBuZXh0VHlwZSA9PT0gJ3N0cmluZycgfHwgbmV4dFR5cGUgPT09
ICdudW1iZXInO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXh0VHlwZSA9PT0gJ29iamVjdCcg
JiYgcHJldkVsZW1lbnQudHlwZSA9PT0gbmV4dEVsZW1lbnQudHlwZSAmJiBwcmV2RWxlbWVudC5r
ZXkgPT09IG5leHRFbGVtZW50LmtleTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNob3Vs
ZFVwZGF0ZVJlYWN0Q29tcG9uZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBB
Q0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvc2hvdWxkVXBkYXRlUmVhY3RDb21wb25l
bnQuanNcbiAqKiBtb2R1bGUgaWQgPSA0OFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwi
LyoqXG4gKiBDb3B5cmlnaHQgMjAxNS1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJp
Z2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9h
c3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBlbXB0eUZ1bmN0aW9uID0g
cmVxdWlyZSgnZmJqcy9saWIvZW1wdHlGdW5jdGlvbicpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJl
KCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciB2YWxpZGF0ZURPTU5lc3RpbmcgPSBlbXB0eUZ1
bmN0aW9uO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xu
ICAvLyBUaGlzIHZhbGlkYXRpb24gY29kZSB3YXMgd3JpdHRlbiBiYXNlZCBvbiB0aGUgSFRNTDUg
cGFyc2luZyBzcGVjOlxuICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFn
ZS9zeW50YXguaHRtbCNoYXMtYW4tZWxlbWVudC1pbi1zY29wZVxuICAvL1xuICAvLyBOb3RlOiB0
aGlzIGRvZXMgbm90IGNhdGNoIGFsbCBpbnZhbGlkIG5lc3RpbmcsIG5vciBkb2VzIGl0IHRyeSB0
byAoYXMgaXQnc1xuICAvLyBub3QgY2xlYXIgd2hhdCBwcmFjdGljYWwgYmVuZWZpdCBkb2luZyBz
byBwcm92aWRlcyk7IGluc3RlYWQsIHdlIHdhcm4gb25seVxuICAvLyBmb3IgY2FzZXMgd2hlcmUg
dGhlIHBhcnNlciB3aWxsIGdpdmUgYSBwYXJzZSB0cmVlIGRpZmZlcmluZyBmcm9tIHdoYXQgUmVh
Y3RcbiAgLy8gaW50ZW5kZWQuIEZvciBleGFtcGxlLCA8Yj48ZGl2PjwvZGl2PjwvYj4gaXMgaW52
YWxpZCBidXQgd2UgZG9uJ3Qgd2FyblxuICAvLyBiZWNhdXNlIGl0IHN0aWxsIHBhcnNlcyBjb3Jy
ZWN0bHk7IHdlIGRvIHdhcm4gZm9yIG90aGVyIGNhc2VzIGxpa2UgbmVzdGVkXG4gIC8vIDxwPiB0
YWdzIHdoZXJlIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHNlY29uZCBlbGVtZW50IGltcGxpY2l0bHkg
Y2xvc2VzIHRoZVxuICAvLyBmaXJzdCwgY2F1c2luZyBhIGNvbmZ1c2luZyBtZXNzLlxuXG4gIC8v
IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3NwZWNp
YWxcbiAgdmFyIHNwZWNpYWxUYWdzID0gWydhZGRyZXNzJywgJ2FwcGxldCcsICdhcmVhJywgJ2Fy
dGljbGUnLCAnYXNpZGUnLCAnYmFzZScsICdiYXNlZm9udCcsICdiZ3NvdW5kJywgJ2Jsb2NrcXVv
dGUnLCAnYm9keScsICdicicsICdidXR0b24nLCAnY2FwdGlvbicsICdjZW50ZXInLCAnY29sJywg
J2NvbGdyb3VwJywgJ2RkJywgJ2RldGFpbHMnLCAnZGlyJywgJ2RpdicsICdkbCcsICdkdCcsICdl
bWJlZCcsICdmaWVsZHNldCcsICdmaWdjYXB0aW9uJywgJ2ZpZ3VyZScsICdmb290ZXInLCAnZm9y
bScsICdmcmFtZScsICdmcmFtZXNldCcsICdoMScsICdoMicsICdoMycsICdoNCcsICdoNScsICdo
NicsICdoZWFkJywgJ2hlYWRlcicsICdoZ3JvdXAnLCAnaHInLCAnaHRtbCcsICdpZnJhbWUnLCAn
aW1nJywgJ2lucHV0JywgJ2lzaW5kZXgnLCAnbGknLCAnbGluaycsICdsaXN0aW5nJywgJ21haW4n
LCAnbWFycXVlZScsICdtZW51JywgJ21lbnVpdGVtJywgJ21ldGEnLCAnbmF2JywgJ25vZW1iZWQn
LCAnbm9mcmFtZXMnLCAnbm9zY3JpcHQnLCAnb2JqZWN0JywgJ29sJywgJ3AnLCAncGFyYW0nLCAn
cGxhaW50ZXh0JywgJ3ByZScsICdzY3JpcHQnLCAnc2VjdGlvbicsICdzZWxlY3QnLCAnc291cmNl
JywgJ3N0eWxlJywgJ3N1bW1hcnknLCAndGFibGUnLCAndGJvZHknLCAndGQnLCAndGVtcGxhdGUn
LCAndGV4dGFyZWEnLCAndGZvb3QnLCAndGgnLCAndGhlYWQnLCAndGl0bGUnLCAndHInLCAndHJh
Y2snLCAndWwnLCAnd2JyJywgJ3htcCddO1xuXG4gIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3
Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2hhcy1hbi1lbGVtZW50LWluLXNjb3BlXG4gIHZh
ciBpblNjb3BlVGFncyA9IFsnYXBwbGV0JywgJ2NhcHRpb24nLCAnaHRtbCcsICd0YWJsZScsICd0
ZCcsICd0aCcsICdtYXJxdWVlJywgJ29iamVjdCcsICd0ZW1wbGF0ZScsXG5cbiAgLy8gaHR0cHM6
Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjaHRtbC1pbnRlZ3Jh
dGlvbi1wb2ludFxuICAvLyBUT0RPOiBEaXN0aW5ndWlzaCBieSBuYW1lc3BhY2UgaGVyZSAtLSBm
b3IgPHRpdGxlPiwgaW5jbHVkaW5nIGl0IGhlcmVcbiAgLy8gZXJycyBvbiB0aGUgc2lkZSBvZiBm
ZXdlciB3YXJuaW5nc1xuICAnZm9yZWlnbk9iamVjdCcsICdkZXNjJywgJ3RpdGxlJ107XG5cbiAg
Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjaGFz
LWFuLWVsZW1lbnQtaW4tYnV0dG9uLXNjb3BlXG4gIHZhciBidXR0b25TY29wZVRhZ3MgPSBpblNj
b3BlVGFncy5jb25jYXQoWydidXR0b24nXSk7XG5cbiAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hh
dHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjZ2VuZXJhdGUtaW1wbGllZC1lbmQtdGFnc1xu
ICB2YXIgaW1wbGllZEVuZFRhZ3MgPSBbJ2RkJywgJ2R0JywgJ2xpJywgJ29wdGlvbicsICdvcHRn
cm91cCcsICdwJywgJ3JwJywgJ3J0J107XG5cbiAgdmFyIGVtcHR5QW5jZXN0b3JJbmZvID0ge1xu
ICAgIGN1cnJlbnQ6IG51bGwsXG5cbiAgICBmb3JtVGFnOiBudWxsLFxuICAgIGFUYWdJblNjb3Bl
OiBudWxsLFxuICAgIGJ1dHRvblRhZ0luU2NvcGU6IG51bGwsXG4gICAgbm9iclRhZ0luU2NvcGU6
IG51bGwsXG4gICAgcFRhZ0luQnV0dG9uU2NvcGU6IG51bGwsXG5cbiAgICBsaXN0SXRlbVRhZ0F1
dG9jbG9zaW5nOiBudWxsLFxuICAgIGRsSXRlbVRhZ0F1dG9jbG9zaW5nOiBudWxsXG4gIH07XG5c
biAgdmFyIHVwZGF0ZWRBbmNlc3RvckluZm8gPSBmdW5jdGlvbiAob2xkSW5mbywgdGFnLCBpbnN0
YW5jZSkge1xuICAgIHZhciBhbmNlc3RvckluZm8gPSBfYXNzaWduKHt9LCBvbGRJbmZvIHx8IGVt
cHR5QW5jZXN0b3JJbmZvKTtcbiAgICB2YXIgaW5mbyA9IHsgdGFnOiB0YWcsIGluc3RhbmNlOiBp
bnN0YW5jZSB9O1xuXG4gICAgaWYgKGluU2NvcGVUYWdzLmluZGV4T2YodGFnKSAhPT0gLTEpIHtc
biAgICAgIGFuY2VzdG9ySW5mby5hVGFnSW5TY29wZSA9IG51bGw7XG4gICAgICBhbmNlc3Rvcklu
Zm8uYnV0dG9uVGFnSW5TY29wZSA9IG51bGw7XG4gICAgICBhbmNlc3RvckluZm8ubm9iclRhZ0lu
U2NvcGUgPSBudWxsO1xuICAgIH1cbiAgICBpZiAoYnV0dG9uU2NvcGVUYWdzLmluZGV4T2YodGFn
KSAhPT0gLTEpIHtcbiAgICAgIGFuY2VzdG9ySW5mby5wVGFnSW5CdXR0b25TY29wZSA9IG51bGw7
XG4gICAgfVxuXG4gICAgLy8gU2VlIHJ1bGVzIGZvciAnbGknLCAnZGQnLCAnZHQnIHN0YXJ0IHRh
Z3MgaW5cbiAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50
YXguaHRtbCNwYXJzaW5nLW1haW4taW5ib2R5XG4gICAgaWYgKHNwZWNpYWxUYWdzLmluZGV4T2Yo
dGFnKSAhPT0gLTEgJiYgdGFnICE9PSAnYWRkcmVzcycgJiYgdGFnICE9PSAnZGl2JyAmJiB0YWcg
IT09ICdwJykge1xuICAgICAgYW5jZXN0b3JJbmZvLmxpc3RJdGVtVGFnQXV0b2Nsb3NpbmcgPSBu
dWxsO1xuICAgICAgYW5jZXN0b3JJbmZvLmRsSXRlbVRhZ0F1dG9jbG9zaW5nID0gbnVsbDtcbiAg
ICB9XG5cbiAgICBhbmNlc3RvckluZm8uY3VycmVudCA9IGluZm87XG5cbiAgICBpZiAodGFnID09
PSAnZm9ybScpIHtcbiAgICAgIGFuY2VzdG9ySW5mby5mb3JtVGFnID0gaW5mbztcbiAgICB9XG4g
ICAgaWYgKHRhZyA9PT0gJ2EnKSB7XG4gICAgICBhbmNlc3RvckluZm8uYVRhZ0luU2NvcGUgPSBp
bmZvO1xuICAgIH1cbiAgICBpZiAodGFnID09PSAnYnV0dG9uJykge1xuICAgICAgYW5jZXN0b3JJ
bmZvLmJ1dHRvblRhZ0luU2NvcGUgPSBpbmZvO1xuICAgIH1cbiAgICBpZiAodGFnID09PSAnbm9i
cicpIHtcbiAgICAgIGFuY2VzdG9ySW5mby5ub2JyVGFnSW5TY29wZSA9IGluZm87XG4gICAgfVxu
ICAgIGlmICh0YWcgPT09ICdwJykge1xuICAgICAgYW5jZXN0b3JJbmZvLnBUYWdJbkJ1dHRvblNj
b3BlID0gaW5mbztcbiAgICB9XG4gICAgaWYgKHRhZyA9PT0gJ2xpJykge1xuICAgICAgYW5jZXN0
b3JJbmZvLmxpc3RJdGVtVGFnQXV0b2Nsb3NpbmcgPSBpbmZvO1xuICAgIH1cbiAgICBpZiAodGFn
ID09PSAnZGQnIHx8IHRhZyA9PT0gJ2R0Jykge1xuICAgICAgYW5jZXN0b3JJbmZvLmRsSXRlbVRh
Z0F1dG9jbG9zaW5nID0gaW5mbztcbiAgICB9XG5cbiAgICByZXR1cm4gYW5jZXN0b3JJbmZvO1xu
ICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXJcbiAgICovXG4gIHZhciBpc1RhZ1Zh
bGlkV2l0aFBhcmVudCA9IGZ1bmN0aW9uICh0YWcsIHBhcmVudFRhZykge1xuICAgIC8vIEZpcnN0
LCBsZXQncyBjaGVjayBpZiB3ZSdyZSBpbiBhbiB1bnVzdWFsIHBhcnNpbmcgbW9kZS4uLlxuICAg
IHN3aXRjaCAocGFyZW50VGFnKSB7XG4gICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cu
b3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5zZWxlY3RcbiAgICAgIGNh
c2UgJ3NlbGVjdCc6XG4gICAgICAgIHJldHVybiB0YWcgPT09ICdvcHRpb24nIHx8IHRhZyA9PT0g
J29wdGdyb3VwJyB8fCB0YWcgPT09ICcjdGV4dCc7XG4gICAgICBjYXNlICdvcHRncm91cCc6XG4g
ICAgICAgIHJldHVybiB0YWcgPT09ICdvcHRpb24nIHx8IHRhZyA9PT0gJyN0ZXh0JztcbiAgICAg
IC8vIFN0cmljdGx5IHNwZWFraW5nLCBzZWVpbmcgYW4gPG9wdGlvbj4gZG9lc24ndCBtZWFuIHdl
J3JlIGluIGEgPHNlbGVjdD5cbiAgICAgIC8vIGJ1dFxuICAgICAgY2FzZSAnb3B0aW9uJzpcbiAg
ICAgICAgcmV0dXJuIHRhZyA9PT0gJyN0ZXh0JztcbiAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVj
LndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbnRkXG4gICAg
ICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNw
YXJzaW5nLW1haW4taW5jYXB0aW9uXG4gICAgICAvLyBObyBzcGVjaWFsIGJlaGF2aW9yIHNpbmNl
IHRoZXNlIHJ1bGVzIGZhbGwgYmFjayB0byBcImluIGJvZHlcIiBtb2RlIGZvclxuICAgICAgLy8g
YWxsIGV4Y2VwdCBzcGVjaWFsIHRhYmxlIG5vZGVzIHdoaWNoIGNhdXNlIGJhZCBwYXJzaW5nIGJl
aGF2aW9yIGFueXdheS5cblxuICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9t
dWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWludHJcbiAgICAgIGNhc2UgJ3RyJzpc
biAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ3RoJyB8fCB0YWcgPT09ICd0ZCcgfHwgdGFnID09PSAn
c3R5bGUnIHx8IHRhZyA9PT0gJ3NjcmlwdCcgfHwgdGFnID09PSAndGVtcGxhdGUnO1xuICAgICAg
Ly8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFy
c2luZy1tYWluLWludGJvZHlcbiAgICAgIGNhc2UgJ3Rib2R5JzpcbiAgICAgIGNhc2UgJ3RoZWFk
JzpcbiAgICAgIGNhc2UgJ3Rmb290JzpcbiAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ3RyJyB8fCB0
YWcgPT09ICdzdHlsZScgfHwgdGFnID09PSAnc2NyaXB0JyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7
XG4gICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXgu
aHRtbCNwYXJzaW5nLW1haW4taW5jb2xncm91cFxuICAgICAgY2FzZSAnY29sZ3JvdXAnOlxuICAg
ICAgICByZXR1cm4gdGFnID09PSAnY29sJyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7XG4gICAgICAv
LyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJz
aW5nLW1haW4taW50YWJsZVxuICAgICAgY2FzZSAndGFibGUnOlxuICAgICAgICByZXR1cm4gdGFn
ID09PSAnY2FwdGlvbicgfHwgdGFnID09PSAnY29sZ3JvdXAnIHx8IHRhZyA9PT0gJ3Rib2R5JyB8
fCB0YWcgPT09ICd0Zm9vdCcgfHwgdGFnID09PSAndGhlYWQnIHx8IHRhZyA9PT0gJ3N0eWxlJyB8
fCB0YWcgPT09ICdzY3JpcHQnIHx8IHRhZyA9PT0gJ3RlbXBsYXRlJztcbiAgICAgIC8vIGh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFp
bi1pbmhlYWRcbiAgICAgIGNhc2UgJ2hlYWQnOlxuICAgICAgICByZXR1cm4gdGFnID09PSAnYmFz
ZScgfHwgdGFnID09PSAnYmFzZWZvbnQnIHx8IHRhZyA9PT0gJ2Jnc291bmQnIHx8IHRhZyA9PT0g
J2xpbmsnIHx8IHRhZyA9PT0gJ21ldGEnIHx8IHRhZyA9PT0gJ3RpdGxlJyB8fCB0YWcgPT09ICdu
b3NjcmlwdCcgfHwgdGFnID09PSAnbm9mcmFtZXMnIHx8IHRhZyA9PT0gJ3N0eWxlJyB8fCB0YWcg
PT09ICdzY3JpcHQnIHx8IHRhZyA9PT0gJ3RlbXBsYXRlJztcbiAgICAgIC8vIGh0dHBzOi8vaHRt
bC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3NlbWFudGljcy5odG1sI3RoZS1odG1sLWVsZW1l
bnRcbiAgICAgIGNhc2UgJ2h0bWwnOlxuICAgICAgICByZXR1cm4gdGFnID09PSAnaGVhZCcgfHwg
dGFnID09PSAnYm9keSc7XG4gICAgICBjYXNlICcjZG9jdW1lbnQnOlxuICAgICAgICByZXR1cm4g
dGFnID09PSAnaHRtbCc7XG4gICAgfVxuXG4gICAgLy8gUHJvYmFibHkgaW4gdGhlIFwiaW4gYm9k
eVwiIHBhcnNpbmcgbW9kZSwgc28gd2Ugb3V0bGF3IG9ubHkgdGFnIGNvbWJvc1xuICAgIC8vIHdo
ZXJlIHRoZSBwYXJzaW5nIHJ1bGVzIGNhdXNlIGltcGxpY2l0IG9wZW5zIG9yIGNsb3NlcyB0byBi
ZSBhZGRlZC5cbiAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9z
eW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5ib2R5XG4gICAgc3dpdGNoICh0YWcpIHtcbiAgICAg
IGNhc2UgJ2gxJzpcbiAgICAgIGNhc2UgJ2gyJzpcbiAgICAgIGNhc2UgJ2gzJzpcbiAgICAgIGNh
c2UgJ2g0JzpcbiAgICAgIGNhc2UgJ2g1JzpcbiAgICAgIGNhc2UgJ2g2JzpcbiAgICAgICAgcmV0
dXJuIHBhcmVudFRhZyAhPT0gJ2gxJyAmJiBwYXJlbnRUYWcgIT09ICdoMicgJiYgcGFyZW50VGFn
ICE9PSAnaDMnICYmIHBhcmVudFRhZyAhPT0gJ2g0JyAmJiBwYXJlbnRUYWcgIT09ICdoNScgJiYg
cGFyZW50VGFnICE9PSAnaDYnO1xuXG4gICAgICBjYXNlICdycCc6XG4gICAgICBjYXNlICdydCc6
XG4gICAgICAgIHJldHVybiBpbXBsaWVkRW5kVGFncy5pbmRleE9mKHBhcmVudFRhZykgPT09IC0x
O1xuXG4gICAgICBjYXNlICdib2R5JzpcbiAgICAgIGNhc2UgJ2NhcHRpb24nOlxuICAgICAgY2Fz
ZSAnY29sJzpcbiAgICAgIGNhc2UgJ2NvbGdyb3VwJzpcbiAgICAgIGNhc2UgJ2ZyYW1lJzpcbiAg
ICAgIGNhc2UgJ2hlYWQnOlxuICAgICAgY2FzZSAnaHRtbCc6XG4gICAgICBjYXNlICd0Ym9keSc6
XG4gICAgICBjYXNlICd0ZCc6XG4gICAgICBjYXNlICd0Zm9vdCc6XG4gICAgICBjYXNlICd0aCc6
XG4gICAgICBjYXNlICd0aGVhZCc6XG4gICAgICBjYXNlICd0cic6XG4gICAgICAgIC8vIFRoZXNl
IHRhZ3MgYXJlIG9ubHkgdmFsaWQgd2l0aCBhIGZldyBwYXJlbnRzIHRoYXQgaGF2ZSBzcGVjaWFs
IGNoaWxkXG4gICAgICAgIC8vIHBhcnNpbmcgcnVsZXMgLS0gaWYgd2UncmUgZG93biBoZXJlLCB0
aGVuIG5vbmUgb2YgdGhvc2UgbWF0Y2hlZCBhbmRcbiAgICAgICAgLy8gc28gd2UgYWxsb3cgaXQg
b25seSBpZiB3ZSBkb24ndCBrbm93IHdoYXQgdGhlIHBhcmVudCBpcywgYXMgYWxsIG90aGVyXG4g
ICAgICAgIC8vIGNhc2VzIGFyZSBpbnZhbGlkLlxuICAgICAgICByZXR1cm4gcGFyZW50VGFnID09
IG51bGw7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgLyoqXG4gICAqIFJl
dHVybnMgd2hldGhlclxuICAgKi9cbiAgdmFyIGZpbmRJbnZhbGlkQW5jZXN0b3JGb3JUYWcgPSBm
dW5jdGlvbiAodGFnLCBhbmNlc3RvckluZm8pIHtcbiAgICBzd2l0Y2ggKHRhZykge1xuICAgICAg
Y2FzZSAnYWRkcmVzcyc6XG4gICAgICBjYXNlICdhcnRpY2xlJzpcbiAgICAgIGNhc2UgJ2FzaWRl
JzpcbiAgICAgIGNhc2UgJ2Jsb2NrcXVvdGUnOlxuICAgICAgY2FzZSAnY2VudGVyJzpcbiAgICAg
IGNhc2UgJ2RldGFpbHMnOlxuICAgICAgY2FzZSAnZGlhbG9nJzpcbiAgICAgIGNhc2UgJ2Rpcic6
XG4gICAgICBjYXNlICdkaXYnOlxuICAgICAgY2FzZSAnZGwnOlxuICAgICAgY2FzZSAnZmllbGRz
ZXQnOlxuICAgICAgY2FzZSAnZmlnY2FwdGlvbic6XG4gICAgICBjYXNlICdmaWd1cmUnOlxuICAg
ICAgY2FzZSAnZm9vdGVyJzpcbiAgICAgIGNhc2UgJ2hlYWRlcic6XG4gICAgICBjYXNlICdoZ3Jv
dXAnOlxuICAgICAgY2FzZSAnbWFpbic6XG4gICAgICBjYXNlICdtZW51JzpcbiAgICAgIGNhc2Ug
J25hdic6XG4gICAgICBjYXNlICdvbCc6XG4gICAgICBjYXNlICdwJzpcbiAgICAgIGNhc2UgJ3Nl
Y3Rpb24nOlxuICAgICAgY2FzZSAnc3VtbWFyeSc6XG4gICAgICBjYXNlICd1bCc6XG4gICAgICBj
YXNlICdwcmUnOlxuICAgICAgY2FzZSAnbGlzdGluZyc6XG4gICAgICBjYXNlICd0YWJsZSc6XG4g
ICAgICBjYXNlICdocic6XG4gICAgICBjYXNlICd4bXAnOlxuICAgICAgY2FzZSAnaDEnOlxuICAg
ICAgY2FzZSAnaDInOlxuICAgICAgY2FzZSAnaDMnOlxuICAgICAgY2FzZSAnaDQnOlxuICAgICAg
Y2FzZSAnaDUnOlxuICAgICAgY2FzZSAnaDYnOlxuICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZv
LnBUYWdJbkJ1dHRvblNjb3BlO1xuXG4gICAgICBjYXNlICdmb3JtJzpcbiAgICAgICAgcmV0dXJu
IGFuY2VzdG9ySW5mby5mb3JtVGFnIHx8IGFuY2VzdG9ySW5mby5wVGFnSW5CdXR0b25TY29wZTtc
blxuICAgICAgY2FzZSAnbGknOlxuICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLmxpc3RJdGVt
VGFnQXV0b2Nsb3Npbmc7XG5cbiAgICAgIGNhc2UgJ2RkJzpcbiAgICAgIGNhc2UgJ2R0JzpcbiAg
ICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5kbEl0ZW1UYWdBdXRvY2xvc2luZztcblxuICAgICAg
Y2FzZSAnYnV0dG9uJzpcbiAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5idXR0b25UYWdJblNj
b3BlO1xuXG4gICAgICBjYXNlICdhJzpcbiAgICAgICAgLy8gU3BlYyBzYXlzIHNvbWV0aGluZyBh
Ym91dCBzdG9yaW5nIGEgbGlzdCBvZiBtYXJrZXJzLCBidXQgaXQgc291bmRzXG4gICAgICAgIC8v
IGVxdWl2YWxlbnQgdG8gdGhpcyBjaGVjay5cbiAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5h
VGFnSW5TY29wZTtcblxuICAgICAgY2FzZSAnbm9icic6XG4gICAgICAgIHJldHVybiBhbmNlc3Rv
ckluZm8ubm9iclRhZ0luU2NvcGU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGw7XG4gIH07XG5c
biAgLyoqXG4gICAqIEdpdmVuIGEgUmVhY3RDb21wb3NpdGVDb21wb25lbnQgaW5zdGFuY2UsIHJl
dHVybiBhIGxpc3Qgb2YgaXRzIHJlY3Vyc2l2ZVxuICAgKiBvd25lcnMsIHN0YXJ0aW5nIGF0IHRo
ZSByb290IGFuZCBlbmRpbmcgd2l0aCB0aGUgaW5zdGFuY2UgaXRzZWxmLlxuICAgKi9cbiAgdmFy
IGZpbmRPd25lclN0YWNrID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7XG4gICAgaWYgKCFpbnN0YW5j
ZSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIHZhciBzdGFjayA9IFtdO1xuICAg
IGRvIHtcbiAgICAgIHN0YWNrLnB1c2goaW5zdGFuY2UpO1xuICAgIH0gd2hpbGUgKGluc3RhbmNl
ID0gaW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50Ll9vd25lcik7XG4gICAgc3RhY2sucmV2ZXJzZSgp
O1xuICAgIHJldHVybiBzdGFjaztcbiAgfTtcblxuICB2YXIgZGlkV2FybiA9IHt9O1xuXG4gIHZh
bGlkYXRlRE9NTmVzdGluZyA9IGZ1bmN0aW9uIChjaGlsZFRhZywgY2hpbGRUZXh0LCBjaGlsZElu
c3RhbmNlLCBhbmNlc3RvckluZm8pIHtcbiAgICBhbmNlc3RvckluZm8gPSBhbmNlc3RvckluZm8g
fHwgZW1wdHlBbmNlc3RvckluZm87XG4gICAgdmFyIHBhcmVudEluZm8gPSBhbmNlc3RvckluZm8u
Y3VycmVudDtcbiAgICB2YXIgcGFyZW50VGFnID0gcGFyZW50SW5mbyAmJiBwYXJlbnRJbmZvLnRh
ZztcblxuICAgIGlmIChjaGlsZFRleHQgIT0gbnVsbCkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoY2hpbGRUYWcgPT0gbnVsbCwgJ3ZhbGlk
YXRlRE9NTmVzdGluZzogd2hlbiBjaGlsZFRleHQgaXMgcGFzc2VkLCBjaGlsZFRhZyBzaG91bGQg
YmUgbnVsbCcpIDogdm9pZCAwO1xuICAgICAgY2hpbGRUYWcgPSAnI3RleHQnO1xuICAgIH1cblxu
ICAgIHZhciBpbnZhbGlkUGFyZW50ID0gaXNUYWdWYWxpZFdpdGhQYXJlbnQoY2hpbGRUYWcsIHBh
cmVudFRhZykgPyBudWxsIDogcGFyZW50SW5mbztcbiAgICB2YXIgaW52YWxpZEFuY2VzdG9yID0g
aW52YWxpZFBhcmVudCA/IG51bGwgOiBmaW5kSW52YWxpZEFuY2VzdG9yRm9yVGFnKGNoaWxkVGFn
LCBhbmNlc3RvckluZm8pO1xuICAgIHZhciBwcm9ibGVtYXRpYyA9IGludmFsaWRQYXJlbnQgfHwg
aW52YWxpZEFuY2VzdG9yO1xuXG4gICAgaWYgKHByb2JsZW1hdGljKSB7XG4gICAgICB2YXIgYW5j
ZXN0b3JUYWcgPSBwcm9ibGVtYXRpYy50YWc7XG4gICAgICB2YXIgYW5jZXN0b3JJbnN0YW5jZSA9
IHByb2JsZW1hdGljLmluc3RhbmNlO1xuXG4gICAgICB2YXIgY2hpbGRPd25lciA9IGNoaWxkSW5z
dGFuY2UgJiYgY2hpbGRJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuICAgICAgdmFy
IGFuY2VzdG9yT3duZXIgPSBhbmNlc3Rvckluc3RhbmNlICYmIGFuY2VzdG9ySW5zdGFuY2UuX2N1
cnJlbnRFbGVtZW50Ll9vd25lcjtcblxuICAgICAgdmFyIGNoaWxkT3duZXJzID0gZmluZE93bmVy
U3RhY2soY2hpbGRPd25lcik7XG4gICAgICB2YXIgYW5jZXN0b3JPd25lcnMgPSBmaW5kT3duZXJT
dGFjayhhbmNlc3Rvck93bmVyKTtcblxuICAgICAgdmFyIG1pblN0YWNrTGVuID0gTWF0aC5taW4o
Y2hpbGRPd25lcnMubGVuZ3RoLCBhbmNlc3Rvck93bmVycy5sZW5ndGgpO1xuICAgICAgdmFyIGk7
XG5cbiAgICAgIHZhciBkZWVwZXN0Q29tbW9uID0gLTE7XG4gICAgICBmb3IgKGkgPSAwOyBpIDwg
bWluU3RhY2tMZW47IGkrKykge1xuICAgICAgICBpZiAoY2hpbGRPd25lcnNbaV0gPT09IGFuY2Vz
dG9yT3duZXJzW2ldKSB7XG4gICAgICAgICAgZGVlcGVzdENvbW1vbiA9IGk7XG4gICAgICAgIH0g
ZWxzZSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdmFy
IFVOS05PV04gPSAnKHVua25vd24pJztcbiAgICAgIHZhciBjaGlsZE93bmVyTmFtZXMgPSBjaGls
ZE93bmVycy5zbGljZShkZWVwZXN0Q29tbW9uICsgMSkubWFwKGZ1bmN0aW9uIChpbnN0KSB7XG4g
ICAgICAgIHJldHVybiBpbnN0LmdldE5hbWUoKSB8fCBVTktOT1dOO1xuICAgICAgfSk7XG4gICAg
ICB2YXIgYW5jZXN0b3JPd25lck5hbWVzID0gYW5jZXN0b3JPd25lcnMuc2xpY2UoZGVlcGVzdENv
bW1vbiArIDEpLm1hcChmdW5jdGlvbiAoaW5zdCkge1xuICAgICAgICByZXR1cm4gaW5zdC5nZXRO
YW1lKCkgfHwgVU5LTk9XTjtcbiAgICAgIH0pO1xuICAgICAgdmFyIG93bmVySW5mbyA9IFtdLmNv
bmNhdChcbiAgICAgIC8vIElmIHRoZSBwYXJlbnQgYW5kIGNoaWxkIGluc3RhbmNlcyBoYXZlIGEg
Y29tbW9uIG93bmVyIGFuY2VzdG9yLCBzdGFydFxuICAgICAgLy8gd2l0aCB0aGF0IC0tIG90aGVy
d2lzZSB3ZSBqdXN0IHN0YXJ0IHdpdGggdGhlIHBhcmVudCdzIG93bmVycy5cbiAgICAgIGRlZXBl
c3RDb21tb24gIT09IC0xID8gY2hpbGRPd25lcnNbZGVlcGVzdENvbW1vbl0uZ2V0TmFtZSgpIHx8
IFVOS05PV04gOiBbXSwgYW5jZXN0b3JPd25lck5hbWVzLCBhbmNlc3RvclRhZyxcbiAgICAgIC8v
IElmIHdlJ3JlIHdhcm5pbmcgYWJvdXQgYW4gaW52YWxpZCAobm9uLXBhcmVudCkgYW5jZXN0cnks
IGFkZCAnLi4uJ1xuICAgICAgaW52YWxpZEFuY2VzdG9yID8gWycuLi4nXSA6IFtdLCBjaGlsZE93
bmVyTmFtZXMsIGNoaWxkVGFnKS5qb2luKCcgPiAnKTtcblxuICAgICAgdmFyIHdhcm5LZXkgPSAh
IWludmFsaWRQYXJlbnQgKyAnfCcgKyBjaGlsZFRhZyArICd8JyArIGFuY2VzdG9yVGFnICsgJ3wn
ICsgb3duZXJJbmZvO1xuICAgICAgaWYgKGRpZFdhcm5bd2FybktleV0pIHtcbiAgICAgICAgcmV0
dXJuO1xuICAgICAgfVxuICAgICAgZGlkV2Fyblt3YXJuS2V5XSA9IHRydWU7XG5cbiAgICAgIHZh
ciB0YWdEaXNwbGF5TmFtZSA9IGNoaWxkVGFnO1xuICAgICAgdmFyIHdoaXRlc3BhY2VJbmZvID0g
Jyc7XG4gICAgICBpZiAoY2hpbGRUYWcgPT09ICcjdGV4dCcpIHtcbiAgICAgICAgaWYgKC9cXFMv
LnRlc3QoY2hpbGRUZXh0KSkge1xuICAgICAgICAgIHRhZ0Rpc3BsYXlOYW1lID0gJ1RleHQgbm9k
ZXMnO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRhZ0Rpc3BsYXlOYW1lID0gJ1doaXRl
c3BhY2UgdGV4dCBub2Rlcyc7XG4gICAgICAgICAgd2hpdGVzcGFjZUluZm8gPSBcIiBNYWtlIHN1
cmUgeW91IGRvbid0IGhhdmUgYW55IGV4dHJhIHdoaXRlc3BhY2UgYmV0d2VlbiB0YWdzIG9uIFwi
ICsgJ2VhY2ggbGluZSBvZiB5b3VyIHNvdXJjZSBjb2RlLic7XG4gICAgICAgIH1cbiAgICAgIH0g
ZWxzZSB7XG4gICAgICAgIHRhZ0Rpc3BsYXlOYW1lID0gJzwnICsgY2hpbGRUYWcgKyAnPic7XG4g
ICAgICB9XG5cbiAgICAgIGlmIChpbnZhbGlkUGFyZW50KSB7XG4gICAgICAgIHZhciBpbmZvID0g
Jyc7XG4gICAgICAgIGlmIChhbmNlc3RvclRhZyA9PT0gJ3RhYmxlJyAmJiBjaGlsZFRhZyA9PT0g
J3RyJykge1xuICAgICAgICAgIGluZm8gKz0gJyBBZGQgYSA8dGJvZHk+IHRvIHlvdXIgY29kZSB0
byBtYXRjaCB0aGUgRE9NIHRyZWUgZ2VuZXJhdGVkIGJ5ICcgKyAndGhlIGJyb3dzZXIuJztcbiAg
ICAgICAgfVxuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8g
d2FybmluZyhmYWxzZSwgJ3ZhbGlkYXRlRE9NTmVzdGluZyguLi4pOiAlcyBjYW5ub3QgYXBwZWFy
IGFzIGEgY2hpbGQgb2YgPCVzPi4lcyAnICsgJ1NlZSAlcy4lcycsIHRhZ0Rpc3BsYXlOYW1lLCBh
bmNlc3RvclRhZywgd2hpdGVzcGFjZUluZm8sIG93bmVySW5mbywgaW5mbykgOiB2b2lkIDA7XG4g
ICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gd2FybmluZyhmYWxzZSwgJ3ZhbGlkYXRlRE9NTmVzdGluZyguLi4pOiAlcyBjYW5ub3Qg
YXBwZWFyIGFzIGEgZGVzY2VuZGFudCBvZiAnICsgJzwlcz4uIFNlZSAlcy4nLCB0YWdEaXNwbGF5
TmFtZSwgYW5jZXN0b3JUYWcsIG93bmVySW5mbykgOiB2b2lkIDA7XG4gICAgICB9XG4gICAgfVxu
ICB9O1xuXG4gIHZhbGlkYXRlRE9NTmVzdGluZy51cGRhdGVkQW5jZXN0b3JJbmZvID0gdXBkYXRl
ZEFuY2VzdG9ySW5mbztcblxuICAvLyBGb3IgdGVzdGluZ1xuICB2YWxpZGF0ZURPTU5lc3Rpbmcu
aXNUYWdWYWxpZEluQ29udGV4dCA9IGZ1bmN0aW9uICh0YWcsIGFuY2VzdG9ySW5mbykge1xuICAg
IGFuY2VzdG9ySW5mbyA9IGFuY2VzdG9ySW5mbyB8fCBlbXB0eUFuY2VzdG9ySW5mbztcbiAgICB2
YXIgcGFyZW50SW5mbyA9IGFuY2VzdG9ySW5mby5jdXJyZW50O1xuICAgIHZhciBwYXJlbnRUYWcg
PSBwYXJlbnRJbmZvICYmIHBhcmVudEluZm8udGFnO1xuICAgIHJldHVybiBpc1RhZ1ZhbGlkV2l0
aFBhcmVudCh0YWcsIHBhcmVudFRhZykgJiYgIWZpbmRJbnZhbGlkQW5jZXN0b3JGb3JUYWcodGFn
LCBhbmNlc3RvckluZm8pO1xuICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHZhbGlkYXRlRE9N
TmVzdGluZztcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoq
IC4vfi9yZWFjdC1kb20vbGliL3ZhbGlkYXRlRE9NTmVzdGluZy5qc1xuICoqIG1vZHVsZSBpZCA9
IDQ5XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9y
dHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLmRlZmF1bHQgPSB3YXJuaW5nO1xuLyoqXG4g
KiBQcmludHMgYSB3YXJuaW5nIGluIHRoZSBjb25zb2xlIGlmIGl0IGV4aXN0cy5cbiAqXG4gKiBA
cGFyYW0ge1N0cmluZ30gbWVzc2FnZSBUaGUgd2FybmluZyBtZXNzYWdlLlxuICogQHJldHVybnMg
e3ZvaWR9XG4gKi9cbmZ1bmN0aW9uIHdhcm5pbmcobWVzc2FnZSkge1xuICAvKiBlc2xpbnQtZGlz
YWJsZSBuby1jb25zb2xlICovXG4gIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcg
JiYgdHlwZW9mIGNvbnNvbGUuZXJyb3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjb25zb2xlLmVy
cm9yKG1lc3NhZ2UpO1xuICB9XG4gIC8qIGVzbGludC1lbmFibGUgbm8tY29uc29sZSAqL1xuICB0
cnkge1xuICAgIC8vIFRoaXMgZXJyb3Igd2FzIHRocm93biBhcyBhIGNvbnZlbmllbmNlIHNvIHRo
YXQgaWYgeW91IGVuYWJsZVxuICAgIC8vIFwiYnJlYWsgb24gYWxsIGV4Y2VwdGlvbnNcIiBpbiB5
b3VyIGNvbnNvbGUsXG4gICAgLy8gaXQgd291bGQgcGF1c2UgdGhlIGV4ZWN1dGlvbiBhdCB0aGlz
IGxpbmUuXG4gICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIC8qIGVzbGludC1kaXNh
YmxlIG5vLWVtcHR5ICovXG4gIH0gY2F0Y2ggKGUpIHt9XG4gIC8qIGVzbGludC1lbmFibGUgbm8t
ZW1wdHkgKi9cbn1cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxu
ICoqIC4vfi9yZWFjdC1yZWR1eC9saWIvdXRpbHMvd2FybmluZy5qc1xuICoqIG1vZHVsZSBpZCA9
IDUwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxu
ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbnZhciBlbXB0
eUZ1bmN0aW9uID0gcmVxdWlyZSgnLi9lbXB0eUZ1bmN0aW9uJyk7XG5cbi8qKlxuICogVXBzdHJl
YW0gdmVyc2lvbiBvZiBldmVudCBsaXN0ZW5lci4gRG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQg
c3BlY2lmaWNcbiAqIG5hdHVyZSBvZiBwbGF0Zm9ybS5cbiAqL1xudmFyIEV2ZW50TGlzdGVuZXIg
PSB7XG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8gRE9NIGV2ZW50cyBkdXJpbmcgdGhlIGJ1YmJsZSBw
aGFzZS5cbiAgICpcbiAgICogQHBhcmFtIHtET01FdmVudFRhcmdldH0gdGFyZ2V0IERPTSBlbGVt
ZW50IHRvIHJlZ2lzdGVyIGxpc3RlbmVyIG9uLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnRU
eXBlIEV2ZW50IHR5cGUsIGUuZy4gJ2NsaWNrJyBvciAnbW91c2VvdmVyJy5cbiAgICogQHBhcmFt
IHtmdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGJhY2sgZnVuY3Rpb24uXG4gICAqIEByZXR1cm4ge29i
amVjdH0gT2JqZWN0IHdpdGggYSBgcmVtb3ZlYCBtZXRob2QuXG4gICAqL1xuICBsaXN0ZW46IGZ1
bmN0aW9uIGxpc3Rlbih0YXJnZXQsIGV2ZW50VHlwZSwgY2FsbGJhY2spIHtcbiAgICBpZiAodGFy
Z2V0LmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICAgIHRhcmdldC5hZGRFdmVudExpc3RlbmVyKGV2
ZW50VHlwZSwgY2FsbGJhY2ssIGZhbHNlKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlbW92
ZTogZnVuY3Rpb24gcmVtb3ZlKCkge1xuICAgICAgICAgIHRhcmdldC5yZW1vdmVFdmVudExpc3Rl
bmVyKGV2ZW50VHlwZSwgY2FsbGJhY2ssIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAg
ICB9IGVsc2UgaWYgKHRhcmdldC5hdHRhY2hFdmVudCkge1xuICAgICAgdGFyZ2V0LmF0dGFjaEV2
ZW50KCdvbicgKyBldmVudFR5cGUsIGNhbGxiYWNrKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAg
IHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge1xuICAgICAgICAgIHRhcmdldC5kZXRhY2hFdmVu
dCgnb24nICsgZXZlbnRUeXBlLCBjYWxsYmFjayk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAg
fVxuICB9LFxuXG4gIC8qKlxuICAgKiBMaXN0ZW4gdG8gRE9NIGV2ZW50cyBkdXJpbmcgdGhlIGNh
cHR1cmUgcGhhc2UuXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRXZlbnRUYXJnZXR9IHRhcmdldCBE
T00gZWxlbWVudCB0byByZWdpc3RlciBsaXN0ZW5lciBvbi5cbiAgICogQHBhcmFtIHtzdHJpbmd9
IGV2ZW50VHlwZSBFdmVudCB0eXBlLCBlLmcuICdjbGljaycgb3IgJ21vdXNlb3ZlcicuXG4gICAq
IEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxiYWNrIGZ1bmN0aW9uLlxuICAgKiBAcmV0
dXJuIHtvYmplY3R9IE9iamVjdCB3aXRoIGEgYHJlbW92ZWAgbWV0aG9kLlxuICAgKi9cbiAgY2Fw
dHVyZTogZnVuY3Rpb24gY2FwdHVyZSh0YXJnZXQsIGV2ZW50VHlwZSwgY2FsbGJhY2spIHtcbiAg
ICBpZiAodGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIpIHtcbiAgICAgIHRhcmdldC5hZGRFdmVudExp
c3RlbmVyKGV2ZW50VHlwZSwgY2FsbGJhY2ssIHRydWUpO1xuICAgICAgcmV0dXJuIHtcbiAgICAg
ICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7XG4gICAgICAgICAgdGFyZ2V0LnJlbW92ZUV2
ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBjYWxsYmFjaywgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAg
IH07XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0F0dGVtcHRlZCB0byBsaXN0ZW4g
dG8gZXZlbnRzIGR1cmluZyB0aGUgY2FwdHVyZSBwaGFzZSBvbiBhICcgKyAnYnJvd3NlciB0aGF0
IGRvZXMgbm90IHN1cHBvcnQgdGhlIGNhcHR1cmUgcGhhc2UuIFlvdXIgYXBwbGljYXRpb24gJyAr
ICd3aWxsIG5vdCByZWNlaXZlIHNvbWUgZXZlbnRzLicpO1xuICAgICAgfVxuICAgICAgcmV0dXJu
IHtcbiAgICAgICAgcmVtb3ZlOiBlbXB0eUZ1bmN0aW9uXG4gICAgICB9O1xuICAgIH1cbiAgfSxc
blxuICByZWdpc3RlckRlZmF1bHQ6IGZ1bmN0aW9uIHJlZ2lzdGVyRGVmYXVsdCgpIHt9XG59O1xu
XG5tb2R1bGUuZXhwb3J0cyA9IEV2ZW50TGlzdGVuZXI7XG5cblxuLyoqKioqKioqKioqKioqKioq
XG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vZmJqcy9saWIvRXZlbnRMaXN0ZW5lci5qc1xu
ICoqIG1vZHVsZSBpZCA9IDUxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAq
IENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0
cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxu
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBA
cGFyYW0ge0RPTUVsZW1lbnR9IG5vZGUgaW5wdXQvdGV4dGFyZWEgdG8gZm9jdXNcbiAqL1xuXG5m
dW5jdGlvbiBmb2N1c05vZGUobm9kZSkge1xuICAvLyBJRTggY2FuIHRocm93IFwiQ2FuJ3QgbW92
ZSBmb2N1cyB0byB0aGUgY29udHJvbCBiZWNhdXNlIGl0IGlzIGludmlzaWJsZSxcbiAgLy8gbm90
IGVuYWJsZWQsIG9yIG9mIGEgdHlwZSB0aGF0IGRvZXMgbm90IGFjY2VwdCB0aGUgZm9jdXMuXCIg
Zm9yIGFsbCBraW5kcyBvZlxuICAvLyByZWFzb25zIHRoYXQgYXJlIHRvbyBleHBlbnNpdmUgYW5k
IGZyYWdpbGUgdG8gdGVzdC5cbiAgdHJ5IHtcbiAgICBub2RlLmZvY3VzKCk7XG4gIH0gY2F0Y2gg
KGUpIHt9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZm9jdXNOb2RlO1xuXG5cbi8qKioqKioqKioq
KioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2ZianMvbGliL2ZvY3VzTm9kZS5q
c1xuICoqIG1vZHVsZSBpZCA9IDUyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNl
IHN0cmljdCc7XG5cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAdHlwZWNoZWNr
c1xuICovXG5cbi8qIGVzbGludC1kaXNhYmxlIGZiLXd3dy90eXBlb2YtdW5kZWZpbmVkICovXG5c
bi8qKlxuICogU2FtZSBhcyBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGJ1dCB3cmFwcyBpbiBhIHRy
eS1jYXRjaCBibG9jay4gSW4gSUUgaXQgaXNcbiAqIG5vdCBzYWZlIHRvIGNhbGwgZG9jdW1lbnQu
YWN0aXZlRWxlbWVudCBpZiB0aGVyZSBpcyBub3RoaW5nIGZvY3VzZWQuXG4gKlxuICogVGhlIGFj
dGl2ZUVsZW1lbnQgd2lsbCBiZSBudWxsIG9ubHkgaWYgdGhlIGRvY3VtZW50IG9yIGRvY3VtZW50
IGJvZHkgaXMgbm90XG4gKiB5ZXQgZGVmaW5lZC5cbiAqXG4gKiBAcGFyYW0gez9ET01Eb2N1bWVu
dH0gZG9jIERlZmF1bHRzIHRvIGN1cnJlbnQgZG9jdW1lbnQuXG4gKiBAcmV0dXJuIHs/RE9NRWxl
bWVudH1cbiAqL1xuZnVuY3Rpb24gZ2V0QWN0aXZlRWxlbWVudChkb2MpIC8qP0RPTUVsZW1lbnQq
L3tcbiAgZG9jID0gZG9jIHx8ICh0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnID8gZG9j
dW1lbnQgOiB1bmRlZmluZWQpO1xuICBpZiAodHlwZW9mIGRvYyA9PT0gJ3VuZGVmaW5lZCcpIHtc
biAgICByZXR1cm4gbnVsbDtcbiAgfVxuICB0cnkge1xuICAgIHJldHVybiBkb2MuYWN0aXZlRWxl
bWVudCB8fCBkb2MuYm9keTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBkb2MuYm9keTtc
biAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEFjdGl2ZUVsZW1lbnQ7XG5cblxuLyoqKioq
KioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vZmJqcy9saWIvZ2V0QWN0
aXZlRWxlbWVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDUzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBc
biAqKi8iLCJ2YXIgcm9vdCA9IHJlcXVpcmUoJy4vX3Jvb3QnKTtcblxuLyoqIEJ1aWx0LWluIHZh
bHVlIHJlZmVyZW5jZXMuICovXG52YXIgU3ltYm9sID0gcm9vdC5TeW1ib2w7XG5cbm1vZHVsZS5l
eHBvcnRzID0gU3ltYm9sO1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBG
T09URVJcbiAqKiAuL34vbG9kYXNoL19TeW1ib2wuanNcbiAqKiBtb2R1bGUgaWQgPSA1NFxuICoq
IG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKi9cblxu
J3VzZSBzdHJpY3QnO1xuXG4vLyBSZWFjdCAxNS41IHJlZmVyZW5jZXMgdGhpcyBtb2R1bGUsIGFu
ZCBhc3N1bWVzIFByb3BUeXBlcyBhcmUgc3RpbGwgY2FsbGFibGUgaW4gcHJvZHVjdGlvbi5cbi8v
IFRoZXJlZm9yZSB3ZSByZS1leHBvcnQgZGV2ZWxvcG1lbnQtb25seSB2ZXJzaW9uIHdpdGggYWxs
IHRoZSBQcm9wVHlwZXMgY2hlY2tzIGhlcmUuXG4vLyBIb3dldmVyIGlmIG9uZSBpcyBtaWdyYXRp
bmcgdG8gdGhlIGBwcm9wLXR5cGVzYCBucG0gbGlicmFyeSwgdGhleSB3aWxsIGdvIHRocm91Z2gg
dGhlXG4vLyBgaW5kZXguanNgIGVudHJ5IHBvaW50LCBhbmQgaXQgd2lsbCBicmFuY2ggZGVwZW5k
aW5nIG9uIHRoZSBlbnZpcm9ubWVudC5cbnZhciBmYWN0b3J5ID0gcmVxdWlyZSgnLi9mYWN0b3J5
V2l0aFR5cGVDaGVja2VycycpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihpc1ZhbGlkRWxl
bWVudCkge1xuICAvLyBJdCBpcyBzdGlsbCBhbGxvd2VkIGluIDE1LjUuXG4gIHZhciB0aHJvd09u
RGlyZWN0QWNjZXNzID0gZmFsc2U7XG4gIHJldHVybiBmYWN0b3J5KGlzVmFsaWRFbGVtZW50LCB0
aHJvd09uRGlyZWN0QWNjZXNzKTtcbn07XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBX
RUJQQUNLIEZPT1RFUlxuICoqIC4vfi9wcm9wLXR5cGVzL2ZhY3RvcnkuanNcbiAqKiBtb2R1bGUg
aWQgPSA1NVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAq
XG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG4gKi9cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtc
biAgdmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9ICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24n
ICYmXG4gICAgU3ltYm9sLmZvciAmJlxuICAgIFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1lbnQnKSkg
fHxcbiAgICAweGVhYzc7XG5cbiAgdmFyIGlzVmFsaWRFbGVtZW50ID0gZnVuY3Rpb24ob2JqZWN0
KSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmXG4gICAgICBvYmpl
Y3QgIT09IG51bGwgJiZcbiAgICAgIG9iamVjdC4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9U
WVBFO1xuICB9O1xuXG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBh
cmUgb3B0aW5nIGludG8gbmV3IGRldmVsb3BtZW50IGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIu
bWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIHZhciB0aHJvd09uRGlyZWN0QWNjZXNzID0gdHJ1ZTtc
biAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzJyko
aXNWYWxpZEVsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpO1xufSBlbHNlIHtcbiAgLy8gQnkg
ZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgcHJv
ZHVjdGlvbiBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxu
ICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zJyko
KTtcbn1cblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiog
Li9+L3Byb3AtdHlwZXMvaW5kZXguanNcbiAqKiBtb2R1bGUgaWQgPSA1NlxuICoqIG1vZHVsZSBj
aHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKi9cblxuJ3VzZSBzdHJp
Y3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RI
SVNfT1JfWU9VX1dJTExfQkVfRklSRUQnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5
cGVzU2VjcmV0O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJc
biAqKiAuL34vcHJvcC10eXBlcy9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQuanNcbiAqKiBtb2R1
bGUgaWQgPSA1N1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
biAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBDU1MgcHJvcGVydGll
cyB3aGljaCBhY2NlcHQgbnVtYmVycyBidXQgYXJlIG5vdCBpbiB1bml0cyBvZiBcInB4XCIuXG4g
Ki9cblxudmFyIGlzVW5pdGxlc3NOdW1iZXIgPSB7XG4gIGFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50
OiB0cnVlLFxuICBib3JkZXJJbWFnZU91dHNldDogdHJ1ZSxcbiAgYm9yZGVySW1hZ2VTbGljZTog
dHJ1ZSxcbiAgYm9yZGVySW1hZ2VXaWR0aDogdHJ1ZSxcbiAgYm94RmxleDogdHJ1ZSxcbiAgYm94
RmxleEdyb3VwOiB0cnVlLFxuICBib3hPcmRpbmFsR3JvdXA6IHRydWUsXG4gIGNvbHVtbkNvdW50
OiB0cnVlLFxuICBmbGV4OiB0cnVlLFxuICBmbGV4R3JvdzogdHJ1ZSxcbiAgZmxleFBvc2l0aXZl
OiB0cnVlLFxuICBmbGV4U2hyaW5rOiB0cnVlLFxuICBmbGV4TmVnYXRpdmU6IHRydWUsXG4gIGZs
ZXhPcmRlcjogdHJ1ZSxcbiAgZ3JpZFJvdzogdHJ1ZSxcbiAgZ3JpZFJvd0VuZDogdHJ1ZSxcbiAg
Z3JpZFJvd1NwYW46IHRydWUsXG4gIGdyaWRSb3dTdGFydDogdHJ1ZSxcbiAgZ3JpZENvbHVtbjog
dHJ1ZSxcbiAgZ3JpZENvbHVtbkVuZDogdHJ1ZSxcbiAgZ3JpZENvbHVtblNwYW46IHRydWUsXG4g
IGdyaWRDb2x1bW5TdGFydDogdHJ1ZSxcbiAgZm9udFdlaWdodDogdHJ1ZSxcbiAgbGluZUNsYW1w
OiB0cnVlLFxuICBsaW5lSGVpZ2h0OiB0cnVlLFxuICBvcGFjaXR5OiB0cnVlLFxuICBvcmRlcjog
dHJ1ZSxcbiAgb3JwaGFuczogdHJ1ZSxcbiAgdGFiU2l6ZTogdHJ1ZSxcbiAgd2lkb3dzOiB0cnVl
LFxuICB6SW5kZXg6IHRydWUsXG4gIHpvb206IHRydWUsXG5cbiAgLy8gU1ZHLXJlbGF0ZWQgcHJv
cGVydGllc1xuICBmaWxsT3BhY2l0eTogdHJ1ZSxcbiAgZmxvb2RPcGFjaXR5OiB0cnVlLFxuICBz
dG9wT3BhY2l0eTogdHJ1ZSxcbiAgc3Ryb2tlRGFzaGFycmF5OiB0cnVlLFxuICBzdHJva2VEYXNo
b2Zmc2V0OiB0cnVlLFxuICBzdHJva2VNaXRlcmxpbWl0OiB0cnVlLFxuICBzdHJva2VPcGFjaXR5
OiB0cnVlLFxuICBzdHJva2VXaWR0aDogdHJ1ZVxufTtcblxuLyoqXG4gKiBAcGFyYW0ge3N0cmlu
Z30gcHJlZml4IHZlbmRvci1zcGVjaWZpYyBwcmVmaXgsIGVnOiBXZWJraXRcbiAqIEBwYXJhbSB7
c3RyaW5nfSBrZXkgc3R5bGUgbmFtZSwgZWc6IHRyYW5zaXRpb25EdXJhdGlvblxuICogQHJldHVy
biB7c3RyaW5nfSBzdHlsZSBuYW1lIHByZWZpeGVkIHdpdGggYHByZWZpeGAsIHByb3Blcmx5IGNh
bWVsQ2FzZWQsIGVnOlxuICogV2Via2l0VHJhbnNpdGlvbkR1cmF0aW9uXG4gKi9cbmZ1bmN0aW9u
IHByZWZpeEtleShwcmVmaXgsIGtleSkge1xuICByZXR1cm4gcHJlZml4ICsga2V5LmNoYXJBdCgw
KS50b1VwcGVyQ2FzZSgpICsga2V5LnN1YnN0cmluZygxKTtcbn1cblxuLyoqXG4gKiBTdXBwb3J0
IHN0eWxlIG5hbWVzIHRoYXQgbWF5IGNvbWUgcGFzc2VkIGluIHByZWZpeGVkIGJ5IGFkZGluZyBw
ZXJtdXRhdGlvbnNcbiAqIG9mIHZlbmRvciBwcmVmaXhlcy5cbiAqL1xudmFyIHByZWZpeGVzID0g
WydXZWJraXQnLCAnbXMnLCAnTW96JywgJ08nXTtcblxuLy8gVXNpbmcgT2JqZWN0LmtleXMgaGVy
ZSwgb3IgZWxzZSB0aGUgdmFuaWxsYSBmb3ItaW4gbG9vcCBtYWtlcyBJRTggZ28gaW50byBhblxu
Ly8gaW5maW5pdGUgbG9vcCwgYmVjYXVzZSBpdCBpdGVyYXRlcyBvdmVyIHRoZSBuZXdseSBhZGRl
ZCBwcm9wcyB0b28uXG5PYmplY3Qua2V5cyhpc1VuaXRsZXNzTnVtYmVyKS5mb3JFYWNoKGZ1bmN0
aW9uIChwcm9wKSB7XG4gIHByZWZpeGVzLmZvckVhY2goZnVuY3Rpb24gKHByZWZpeCkge1xuICAg
IGlzVW5pdGxlc3NOdW1iZXJbcHJlZml4S2V5KHByZWZpeCwgcHJvcCldID0gaXNVbml0bGVzc051
bWJlcltwcm9wXTtcbiAgfSk7XG59KTtcblxuLyoqXG4gKiBNb3N0IHN0eWxlIHByb3BlcnRpZXMg
Y2FuIGJlIHVuc2V0IGJ5IGRvaW5nIC5zdHlsZVtwcm9wXSA9ICcnIGJ1dCBJRThcbiAqIGRvZXNu
J3QgbGlrZSBkb2luZyB0aGF0IHdpdGggc2hvcnRoYW5kIHByb3BlcnRpZXMgc28gZm9yIHRoZSBw
cm9wZXJ0aWVzIHRoYXRcbiAqIElFOCBicmVha3Mgb24sIHdoaWNoIGFyZSBsaXN0ZWQgaGVyZSwg
d2UgaW5zdGVhZCB1bnNldCBlYWNoIG9mIHRoZVxuICogaW5kaXZpZHVhbCBwcm9wZXJ0aWVzLiBT
ZWUgaHR0cDovL2J1Z3MuanF1ZXJ5LmNvbS90aWNrZXQvMTIzODUuXG4gKiBUaGUgNC12YWx1ZSAn
Y2xvY2snIHByb3BlcnRpZXMgbGlrZSBtYXJnaW4sIHBhZGRpbmcsIGJvcmRlci13aWR0aCBzZWVt
IHRvXG4gKiBiZWhhdmUgd2l0aG91dCBhbnkgcHJvYmxlbXMuIEN1cmlvdXNseSwgbGlzdC1zdHls
ZSB3b3JrcyB0b28gd2l0aG91dCBhbnlcbiAqIHNwZWNpYWwgcHJvZGRpbmcuXG4gKi9cbnZhciBz
aG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lvbnMgPSB7XG4gIGJhY2tncm91bmQ6IHtcbiAgICBiYWNr
Z3JvdW5kQXR0YWNobWVudDogdHJ1ZSxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IHRydWUsXG4gICAg
YmFja2dyb3VuZEltYWdlOiB0cnVlLFxuICAgIGJhY2tncm91bmRQb3NpdGlvblg6IHRydWUsXG4g
ICAgYmFja2dyb3VuZFBvc2l0aW9uWTogdHJ1ZSxcbiAgICBiYWNrZ3JvdW5kUmVwZWF0OiB0cnVl
XG4gIH0sXG4gIGJhY2tncm91bmRQb3NpdGlvbjoge1xuICAgIGJhY2tncm91bmRQb3NpdGlvblg6
IHRydWUsXG4gICAgYmFja2dyb3VuZFBvc2l0aW9uWTogdHJ1ZVxuICB9LFxuICBib3JkZXI6IHtc
biAgICBib3JkZXJXaWR0aDogdHJ1ZSxcbiAgICBib3JkZXJTdHlsZTogdHJ1ZSxcbiAgICBib3Jk
ZXJDb2xvcjogdHJ1ZVxuICB9LFxuICBib3JkZXJCb3R0b206IHtcbiAgICBib3JkZXJCb3R0b21X
aWR0aDogdHJ1ZSxcbiAgICBib3JkZXJCb3R0b21TdHlsZTogdHJ1ZSxcbiAgICBib3JkZXJCb3R0
b21Db2xvcjogdHJ1ZVxuICB9LFxuICBib3JkZXJMZWZ0OiB7XG4gICAgYm9yZGVyTGVmdFdpZHRo
OiB0cnVlLFxuICAgIGJvcmRlckxlZnRTdHlsZTogdHJ1ZSxcbiAgICBib3JkZXJMZWZ0Q29sb3I6
IHRydWVcbiAgfSxcbiAgYm9yZGVyUmlnaHQ6IHtcbiAgICBib3JkZXJSaWdodFdpZHRoOiB0cnVl
LFxuICAgIGJvcmRlclJpZ2h0U3R5bGU6IHRydWUsXG4gICAgYm9yZGVyUmlnaHRDb2xvcjogdHJ1
ZVxuICB9LFxuICBib3JkZXJUb3A6IHtcbiAgICBib3JkZXJUb3BXaWR0aDogdHJ1ZSxcbiAgICBi
b3JkZXJUb3BTdHlsZTogdHJ1ZSxcbiAgICBib3JkZXJUb3BDb2xvcjogdHJ1ZVxuICB9LFxuICBm
b250OiB7XG4gICAgZm9udFN0eWxlOiB0cnVlLFxuICAgIGZvbnRWYXJpYW50OiB0cnVlLFxuICAg
IGZvbnRXZWlnaHQ6IHRydWUsXG4gICAgZm9udFNpemU6IHRydWUsXG4gICAgbGluZUhlaWdodDog
dHJ1ZSxcbiAgICBmb250RmFtaWx5OiB0cnVlXG4gIH0sXG4gIG91dGxpbmU6IHtcbiAgICBvdXRs
aW5lV2lkdGg6IHRydWUsXG4gICAgb3V0bGluZVN0eWxlOiB0cnVlLFxuICAgIG91dGxpbmVDb2xv
cjogdHJ1ZVxuICB9XG59O1xuXG52YXIgQ1NTUHJvcGVydHkgPSB7XG4gIGlzVW5pdGxlc3NOdW1i
ZXI6IGlzVW5pdGxlc3NOdW1iZXIsXG4gIHNob3J0aGFuZFByb3BlcnR5RXhwYW5zaW9uczogc2hv
cnRoYW5kUHJvcGVydHlFeHBhbnNpb25zXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IENTU1Byb3Bl
cnR5O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+
L3JlYWN0LWRvbS9saWIvQ1NTUHJvcGVydHkuanNcbiAqKiBtb2R1bGUgaWQgPSA1OFxuICoqIG1v
ZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4g
Ki9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3Jl
YWN0UHJvZEludmFyaWFudCcpO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2Us
IENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7
IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25c
Iik7IH0gfVxuXG52YXIgUG9vbGVkQ2xhc3MgPSByZXF1aXJlKCcuL1Bvb2xlZENsYXNzJyk7XG5c
bnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxuLyoqXG4g
KiBBIHNwZWNpYWxpemVkIHBzZXVkby1ldmVudCBtb2R1bGUgdG8gaGVscCBrZWVwIHRyYWNrIG9m
IGNvbXBvbmVudHMgd2FpdGluZyB0b1xuICogYmUgbm90aWZpZWQgd2hlbiB0aGVpciBET00gcmVw
cmVzZW50YXRpb25zIGFyZSBhdmFpbGFibGUgZm9yIHVzZS5cbiAqXG4gKiBUaGlzIGltcGxlbWVu
dHMgYFBvb2xlZENsYXNzYCwgc28geW91IHNob3VsZCBuZXZlciBuZWVkIHRvIGluc3RhbnRpYXRl
IHRoaXMuXG4gKiBJbnN0ZWFkLCB1c2UgYENhbGxiYWNrUXVldWUuZ2V0UG9vbGVkKClgLlxuICpc
biAqIEBjbGFzcyBSZWFjdE1vdW50UmVhZHlcbiAqIEBpbXBsZW1lbnRzIFBvb2xlZENsYXNzXG4g
KiBAaW50ZXJuYWxcbiAqL1xuXG52YXIgQ2FsbGJhY2tRdWV1ZSA9IGZ1bmN0aW9uICgpIHtcbiAg
ZnVuY3Rpb24gQ2FsbGJhY2tRdWV1ZShhcmcpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywg
Q2FsbGJhY2tRdWV1ZSk7XG5cbiAgICB0aGlzLl9jYWxsYmFja3MgPSBudWxsO1xuICAgIHRoaXMu
X2NvbnRleHRzID0gbnVsbDtcbiAgICB0aGlzLl9hcmcgPSBhcmc7XG4gIH1cblxuICAvKipcbiAg
ICogRW5xdWV1ZXMgYSBjYWxsYmFjayB0byBiZSBpbnZva2VkIHdoZW4gYG5vdGlmeUFsbGAgaXMg
aW52b2tlZC5cbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gY2FsbGJhY2sgSW52b2tlZCB3
aGVuIGBub3RpZnlBbGxgIGlzIGludm9rZWQuXG4gICAqIEBwYXJhbSB7P29iamVjdH0gY29udGV4
dCBDb250ZXh0IHRvIGNhbGwgYGNhbGxiYWNrYCB3aXRoLlxuICAgKiBAaW50ZXJuYWxcbiAgICov
XG5cblxuICBDYWxsYmFja1F1ZXVlLnByb3RvdHlwZS5lbnF1ZXVlID0gZnVuY3Rpb24gZW5xdWV1
ZShjYWxsYmFjaywgY29udGV4dCkge1xuICAgIHRoaXMuX2NhbGxiYWNrcyA9IHRoaXMuX2NhbGxi
YWNrcyB8fCBbXTtcbiAgICB0aGlzLl9jYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG4gICAgdGhp
cy5fY29udGV4dHMgPSB0aGlzLl9jb250ZXh0cyB8fCBbXTtcbiAgICB0aGlzLl9jb250ZXh0cy5w
dXNoKGNvbnRleHQpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBJbnZva2VzIGFsbCBlbnF1ZXVlZCBj
YWxsYmFja3MgYW5kIGNsZWFycyB0aGUgcXVldWUuIFRoaXMgaXMgaW52b2tlZCBhZnRlclxuICAg
KiB0aGUgRE9NIHJlcHJlc2VudGF0aW9uIG9mIGEgY29tcG9uZW50IGhhcyBiZWVuIGNyZWF0ZWQg
b3IgdXBkYXRlZC5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuXG5cbiAgQ2FsbGJhY2tR
dWV1ZS5wcm90b3R5cGUubm90aWZ5QWxsID0gZnVuY3Rpb24gbm90aWZ5QWxsKCkge1xuICAgIHZh
ciBjYWxsYmFja3MgPSB0aGlzLl9jYWxsYmFja3M7XG4gICAgdmFyIGNvbnRleHRzID0gdGhpcy5f
Y29udGV4dHM7XG4gICAgdmFyIGFyZyA9IHRoaXMuX2FyZztcbiAgICBpZiAoY2FsbGJhY2tzICYm
IGNvbnRleHRzKSB7XG4gICAgICAhKGNhbGxiYWNrcy5sZW5ndGggPT09IGNvbnRleHRzLmxlbmd0
aCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZh
bHNlLCAnTWlzbWF0Y2hlZCBsaXN0IG9mIGNvbnRleHRzIGluIGNhbGxiYWNrIHF1ZXVlJykgOiBf
cHJvZEludmFyaWFudCgnMjQnKSA6IHZvaWQgMDtcbiAgICAgIHRoaXMuX2NhbGxiYWNrcyA9IG51
bGw7XG4gICAgICB0aGlzLl9jb250ZXh0cyA9IG51bGw7XG4gICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGNhbGxiYWNrcy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjYWxsYmFja3NbaV0uY2FsbChj
b250ZXh0c1tpXSwgYXJnKTtcbiAgICAgIH1cbiAgICAgIGNhbGxiYWNrcy5sZW5ndGggPSAwO1xu
ICAgICAgY29udGV4dHMubGVuZ3RoID0gMDtcbiAgICB9XG4gIH07XG5cbiAgQ2FsbGJhY2tRdWV1
ZS5wcm90b3R5cGUuY2hlY2twb2ludCA9IGZ1bmN0aW9uIGNoZWNrcG9pbnQoKSB7XG4gICAgcmV0
dXJuIHRoaXMuX2NhbGxiYWNrcyA/IHRoaXMuX2NhbGxiYWNrcy5sZW5ndGggOiAwO1xuICB9O1xu
XG4gIENhbGxiYWNrUXVldWUucHJvdG90eXBlLnJvbGxiYWNrID0gZnVuY3Rpb24gcm9sbGJhY2so
bGVuKSB7XG4gICAgaWYgKHRoaXMuX2NhbGxiYWNrcyAmJiB0aGlzLl9jb250ZXh0cykge1xuICAg
ICAgdGhpcy5fY2FsbGJhY2tzLmxlbmd0aCA9IGxlbjtcbiAgICAgIHRoaXMuX2NvbnRleHRzLmxl
bmd0aCA9IGxlbjtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIFJlc2V0cyB0aGUgaW50ZXJu
YWwgcXVldWUuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cblxuXG4gIENhbGxiYWNrUXVl
dWUucHJvdG90eXBlLnJlc2V0ID0gZnVuY3Rpb24gcmVzZXQoKSB7XG4gICAgdGhpcy5fY2FsbGJh
Y2tzID0gbnVsbDtcbiAgICB0aGlzLl9jb250ZXh0cyA9IG51bGw7XG4gIH07XG5cbiAgLyoqXG4g
ICAqIGBQb29sZWRDbGFzc2AgbG9va3MgZm9yIHRoaXMuXG4gICAqL1xuXG5cbiAgQ2FsbGJhY2tR
dWV1ZS5wcm90b3R5cGUuZGVzdHJ1Y3RvciA9IGZ1bmN0aW9uIGRlc3RydWN0b3IoKSB7XG4gICAg
dGhpcy5yZXNldCgpO1xuICB9O1xuXG4gIHJldHVybiBDYWxsYmFja1F1ZXVlO1xufSgpO1xuXG5t
b2R1bGUuZXhwb3J0cyA9IFBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhDYWxsYmFja1F1ZXVlKTtc
blxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFj
dC1kb20vbGliL0NhbGxiYWNrUXVldWUuanNcbiAqKiBtb2R1bGUgaWQgPSA1OVxuICoqIG1vZHVs
ZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
biAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1
c2Ugc3RyaWN0JztcblxudmFyIERPTVByb3BlcnR5ID0gcmVxdWlyZSgnLi9ET01Qcm9wZXJ0eScp
O1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25l
bnRUcmVlJyk7XG52YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSByZXF1aXJlKCcuL1JlYWN0SW5z
dHJ1bWVudGF0aW9uJyk7XG5cbnZhciBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3NlciA9IHJl
cXVpcmUoJy4vcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXInKTtcbnZhciB3YXJuaW5nID0g
cmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgVkFMSURfQVRUUklCVVRFX05BTUVf
UkVHRVggPSBuZXcgUmVnRXhwKCdeWycgKyBET01Qcm9wZXJ0eS5BVFRSSUJVVEVfTkFNRV9TVEFS
VF9DSEFSICsgJ11bJyArIERPTVByb3BlcnR5LkFUVFJJQlVURV9OQU1FX0NIQVIgKyAnXSokJyk7
XG52YXIgaWxsZWdhbEF0dHJpYnV0ZU5hbWVDYWNoZSA9IHt9O1xudmFyIHZhbGlkYXRlZEF0dHJp
YnV0ZU5hbWVDYWNoZSA9IHt9O1xuXG5mdW5jdGlvbiBpc0F0dHJpYnV0ZU5hbWVTYWZlKGF0dHJp
YnV0ZU5hbWUpIHtcbiAgaWYgKHZhbGlkYXRlZEF0dHJpYnV0ZU5hbWVDYWNoZS5oYXNPd25Qcm9w
ZXJ0eShhdHRyaWJ1dGVOYW1lKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChpbGxl
Z2FsQXR0cmlidXRlTmFtZUNhY2hlLmhhc093blByb3BlcnR5KGF0dHJpYnV0ZU5hbWUpKSB7XG4g
ICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmIChWQUxJRF9BVFRSSUJVVEVfTkFNRV9SRUdFWC50
ZXN0KGF0dHJpYnV0ZU5hbWUpKSB7XG4gICAgdmFsaWRhdGVkQXR0cmlidXRlTmFtZUNhY2hlW2F0
dHJpYnV0ZU5hbWVdID0gdHJ1ZTtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpbGxlZ2FsQXR0
cmlidXRlTmFtZUNhY2hlW2F0dHJpYnV0ZU5hbWVdID0gdHJ1ZTtcbiAgcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdJbnZhbGlkIGF0dHJpYnV0
ZSBuYW1lOiBgJXNgJywgYXR0cmlidXRlTmFtZSkgOiB2b2lkIDA7XG4gIHJldHVybiBmYWxzZTtc
bn1cblxuZnVuY3Rpb24gc2hvdWxkSWdub3JlVmFsdWUocHJvcGVydHlJbmZvLCB2YWx1ZSkge1xu
ICByZXR1cm4gdmFsdWUgPT0gbnVsbCB8fCBwcm9wZXJ0eUluZm8uaGFzQm9vbGVhblZhbHVlICYm
ICF2YWx1ZSB8fCBwcm9wZXJ0eUluZm8uaGFzTnVtZXJpY1ZhbHVlICYmIGlzTmFOKHZhbHVlKSB8
fCBwcm9wZXJ0eUluZm8uaGFzUG9zaXRpdmVOdW1lcmljVmFsdWUgJiYgdmFsdWUgPCAxIHx8IHBy
b3BlcnR5SW5mby5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlICYmIHZhbHVlID09PSBmYWxzZTtc
bn1cblxuLyoqXG4gKiBPcGVyYXRpb25zIGZvciBkZWFsaW5nIHdpdGggRE9NIHByb3BlcnRpZXMu
XG4gKi9cbnZhciBET01Qcm9wZXJ0eU9wZXJhdGlvbnMgPSB7XG4gIC8qKlxuICAgKiBDcmVhdGVz
IG1hcmt1cCBmb3IgdGhlIElEIHByb3BlcnR5LlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30g
aWQgVW5lc2NhcGVkIElELlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1hcmt1cCBzdHJpbmcuXG4g
ICAqL1xuICBjcmVhdGVNYXJrdXBGb3JJRDogZnVuY3Rpb24gKGlkKSB7XG4gICAgcmV0dXJuIERP
TVByb3BlcnR5LklEX0FUVFJJQlVURV9OQU1FICsgJz0nICsgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZv
ckJyb3dzZXIoaWQpO1xuICB9LFxuXG4gIHNldEF0dHJpYnV0ZUZvcklEOiBmdW5jdGlvbiAobm9k
ZSwgaWQpIHtcbiAgICBub2RlLnNldEF0dHJpYnV0ZShET01Qcm9wZXJ0eS5JRF9BVFRSSUJVVEVf
TkFNRSwgaWQpO1xuICB9LFxuXG4gIGNyZWF0ZU1hcmt1cEZvclJvb3Q6IGZ1bmN0aW9uICgpIHtc
biAgICByZXR1cm4gRE9NUHJvcGVydHkuUk9PVF9BVFRSSUJVVEVfTkFNRSArICc9XCJcIic7XG4g
IH0sXG5cbiAgc2V0QXR0cmlidXRlRm9yUm9vdDogZnVuY3Rpb24gKG5vZGUpIHtcbiAgICBub2Rl
LnNldEF0dHJpYnV0ZShET01Qcm9wZXJ0eS5ST09UX0FUVFJJQlVURV9OQU1FLCAnJyk7XG4gIH0s
XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgbWFya3VwIGZvciBhIHByb3BlcnR5LlxuICAgKlxuICAg
KiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFyYW0geyp9IHZhbHVlXG4gICAqIEByZXR1
cm4gez9zdHJpbmd9IE1hcmt1cCBzdHJpbmcsIG9yIG51bGwgaWYgdGhlIHByb3BlcnR5IHdhcyBp
bnZhbGlkLlxuICAgKi9cbiAgY3JlYXRlTWFya3VwRm9yUHJvcGVydHk6IGZ1bmN0aW9uIChuYW1l
LCB2YWx1ZSkge1xuICAgIHZhciBwcm9wZXJ0eUluZm8gPSBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVz
Lmhhc093blByb3BlcnR5KG5hbWUpID8gRE9NUHJvcGVydHkucHJvcGVydGllc1tuYW1lXSA6IG51
bGw7XG4gICAgaWYgKHByb3BlcnR5SW5mbykge1xuICAgICAgaWYgKHNob3VsZElnbm9yZVZhbHVl
KHByb3BlcnR5SW5mbywgdmFsdWUpKSB7XG4gICAgICAgIHJldHVybiAnJztcbiAgICAgIH1cbiAg
ICAgIHZhciBhdHRyaWJ1dGVOYW1lID0gcHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWU7XG4gICAg
ICBpZiAocHJvcGVydHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSB8fCBwcm9wZXJ0eUluZm8uaGFzT3Zl
cmxvYWRlZEJvb2xlYW5WYWx1ZSAmJiB2YWx1ZSA9PT0gdHJ1ZSkge1xuICAgICAgICByZXR1cm4g
YXR0cmlidXRlTmFtZSArICc9XCJcIic7XG4gICAgICB9XG4gICAgICByZXR1cm4gYXR0cmlidXRl
TmFtZSArICc9JyArIHF1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyKHZhbHVlKTtcbiAgICB9
IGVsc2UgaWYgKERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0cmlidXRlKG5hbWUpKSB7XG4gICAgICBp
ZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4gICAgICBy
ZXR1cm4gbmFtZSArICc9JyArIHF1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyKHZhbHVlKTtc
biAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH0sXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgbWFy
a3VwIGZvciBhIGN1c3RvbSBwcm9wZXJ0eS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5h
bWVcbiAgICogQHBhcmFtIHsqfSB2YWx1ZVxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1hcmt1cCBz
dHJpbmcsIG9yIGVtcHR5IHN0cmluZyBpZiB0aGUgcHJvcGVydHkgd2FzIGludmFsaWQuXG4gICAq
L1xuICBjcmVhdGVNYXJrdXBGb3JDdXN0b21BdHRyaWJ1dGU6IGZ1bmN0aW9uIChuYW1lLCB2YWx1
ZSkge1xuICAgIGlmICghaXNBdHRyaWJ1dGVOYW1lU2FmZShuYW1lKSB8fCB2YWx1ZSA9PSBudWxs
KSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfVxuICAgIHJldHVybiBuYW1lICsgJz0nICsgcXVv
dGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIodmFsdWUpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBT
ZXRzIHRoZSB2YWx1ZSBmb3IgYSBwcm9wZXJ0eSBvbiBhIG5vZGUuXG4gICAqXG4gICAqIEBwYXJh
bSB7RE9NRWxlbWVudH0gbm9kZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKiBAcGFy
YW0geyp9IHZhbHVlXG4gICAqL1xuICBzZXRWYWx1ZUZvclByb3BlcnR5OiBmdW5jdGlvbiAobm9k
ZSwgbmFtZSwgdmFsdWUpIHtcbiAgICB2YXIgcHJvcGVydHlJbmZvID0gRE9NUHJvcGVydHkucHJv
cGVydGllcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSA/IERPTVByb3BlcnR5LnByb3BlcnRpZXNbbmFt
ZV0gOiBudWxsO1xuICAgIGlmIChwcm9wZXJ0eUluZm8pIHtcbiAgICAgIHZhciBtdXRhdGlvbk1l
dGhvZCA9IHByb3BlcnR5SW5mby5tdXRhdGlvbk1ldGhvZDtcbiAgICAgIGlmIChtdXRhdGlvbk1l
dGhvZCkge1xuICAgICAgICBtdXRhdGlvbk1ldGhvZChub2RlLCB2YWx1ZSk7XG4gICAgICB9IGVs
c2UgaWYgKHNob3VsZElnbm9yZVZhbHVlKHByb3BlcnR5SW5mbywgdmFsdWUpKSB7XG4gICAgICAg
IHRoaXMuZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eShub2RlLCBuYW1lKTtcbiAgICAgICAgcmV0dXJu
O1xuICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eUluZm8ubXVzdFVzZVByb3BlcnR5KSB7XG4gICAg
ICAgIC8vIENvbnRyYXJ5IHRvIGBzZXRBdHRyaWJ1dGVgLCBvYmplY3QgcHJvcGVydGllcyBhcmUg
cHJvcGVybHlcbiAgICAgICAgLy8gYHRvU3RyaW5nYGVkIGJ5IElFOC85LlxuICAgICAgICBub2Rl
W3Byb3BlcnR5SW5mby5wcm9wZXJ0eU5hbWVdID0gdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAg
ICAgICB2YXIgYXR0cmlidXRlTmFtZSA9IHByb3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1lO1xuICAg
ICAgICB2YXIgbmFtZXNwYWNlID0gcHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWVzcGFjZTtcbiAg
ICAgICAgLy8gYHNldEF0dHJpYnV0ZWAgd2l0aCBvYmplY3RzIGJlY29tZXMgb25seSBgW29iamVj
dF1gIGluIElFOC85LFxuICAgICAgICAvLyAoJycgKyB2YWx1ZSkgbWFrZXMgaXQgb3V0cHV0IHRo
ZSBjb3JyZWN0IHRvU3RyaW5nKCktdmFsdWUuXG4gICAgICAgIGlmIChuYW1lc3BhY2UpIHtcbiAg
ICAgICAgICBub2RlLnNldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgYXR0cmlidXRlTmFtZSwgJycg
KyB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvcGVydHlJbmZvLmhhc0Jvb2xlYW5WYWx1
ZSB8fCBwcm9wZXJ0eUluZm8uaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSAmJiB2YWx1ZSA9PT0g
dHJ1ZSkge1xuICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsICcnKTtc
biAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGVO
YW1lLCAnJyArIHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoRE9N
UHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgIERPTVByb3BlcnR5T3Bl
cmF0aW9ucy5zZXRWYWx1ZUZvckF0dHJpYnV0ZShub2RlLCBuYW1lLCB2YWx1ZSk7XG4gICAgICBy
ZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicpIHtcbiAgICAgIHZhciBwYXlsb2FkID0ge307XG4gICAgICBwYXlsb2FkW25hbWVdID0g
dmFsdWU7XG4gICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0
aW9uKHtcbiAgICAgICAgaW5zdGFuY2VJRDogUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3Rh
bmNlRnJvbU5vZGUobm9kZSkuX2RlYnVnSUQsXG4gICAgICAgIHR5cGU6ICd1cGRhdGUgYXR0cmli
dXRlJyxcbiAgICAgICAgcGF5bG9hZDogcGF5bG9hZFxuICAgICAgfSk7XG4gICAgfVxuICB9LFxu
XG4gIHNldFZhbHVlRm9yQXR0cmlidXRlOiBmdW5jdGlvbiAobm9kZSwgbmFtZSwgdmFsdWUpIHtc
biAgICBpZiAoIWlzQXR0cmlidXRlTmFtZVNhZmUobmFtZSkpIHtcbiAgICAgIHJldHVybjtcbiAg
ICB9XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRl
KG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShuYW1lLCAnJyAr
IHZhbHVlKTtcbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJykge1xuICAgICAgdmFyIHBheWxvYWQgPSB7fTtcbiAgICAgIHBheWxvYWRbbmFtZV0g
PSB2YWx1ZTtcbiAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVy
YXRpb24oe1xuICAgICAgICBpbnN0YW5jZUlEOiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5z
dGFuY2VGcm9tTm9kZShub2RlKS5fZGVidWdJRCxcbiAgICAgICAgdHlwZTogJ3VwZGF0ZSBhdHRy
aWJ1dGUnLFxuICAgICAgICBwYXlsb2FkOiBwYXlsb2FkXG4gICAgICB9KTtcbiAgICB9XG4gIH0s
XG5cbiAgLyoqXG4gICAqIERlbGV0ZXMgYW4gYXR0cmlidXRlcyBmcm9tIGEgbm9kZS5cbiAgICpc
biAgICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1l
XG4gICAqL1xuICBkZWxldGVWYWx1ZUZvckF0dHJpYnV0ZTogZnVuY3Rpb24gKG5vZGUsIG5hbWUp
IHtcbiAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24u
ZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7XG4gICAgICAgIGluc3RhbmNlSUQ6IFJlYWN0RE9N
Q29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG5vZGUpLl9kZWJ1Z0lELFxuICAgICAg
ICB0eXBlOiAncmVtb3ZlIGF0dHJpYnV0ZScsXG4gICAgICAgIHBheWxvYWQ6IG5hbWVcbiAgICAg
IH0pO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogRGVsZXRlcyB0aGUgdmFsdWUgZm9yIGEg
cHJvcGVydHkgb24gYSBub2RlLlxuICAgKlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVc
biAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICovXG4gIGRlbGV0ZVZhbHVlRm9yUHJvcGVy
dHk6IGZ1bmN0aW9uIChub2RlLCBuYW1lKSB7XG4gICAgdmFyIHByb3BlcnR5SW5mbyA9IERPTVBy
b3BlcnR5LnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkobmFtZSkgPyBET01Qcm9wZXJ0eS5wcm9w
ZXJ0aWVzW25hbWVdIDogbnVsbDtcbiAgICBpZiAocHJvcGVydHlJbmZvKSB7XG4gICAgICB2YXIg
bXV0YXRpb25NZXRob2QgPSBwcm9wZXJ0eUluZm8ubXV0YXRpb25NZXRob2Q7XG4gICAgICBpZiAo
bXV0YXRpb25NZXRob2QpIHtcbiAgICAgICAgbXV0YXRpb25NZXRob2Qobm9kZSwgdW5kZWZpbmVk
KTtcbiAgICAgIH0gZWxzZSBpZiAocHJvcGVydHlJbmZvLm11c3RVc2VQcm9wZXJ0eSkge1xuICAg
ICAgICB2YXIgcHJvcE5hbWUgPSBwcm9wZXJ0eUluZm8ucHJvcGVydHlOYW1lO1xuICAgICAgICBp
ZiAocHJvcGVydHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSkge1xuICAgICAgICAgIG5vZGVbcHJvcE5h
bWVdID0gZmFsc2U7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbm9kZVtwcm9wTmFtZV0g
PSAnJztcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZS5yZW1vdmVBdHRy
aWJ1dGUocHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSBp
ZiAoRE9NUHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUobmFtZSkpIHtcbiAgICAgIG5vZGUucmVt
b3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rv
b2wub25Ib3N0T3BlcmF0aW9uKHtcbiAgICAgICAgaW5zdGFuY2VJRDogUmVhY3RET01Db21wb25l
bnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUobm9kZSkuX2RlYnVnSUQsXG4gICAgICAgIHR5cGU6
ICdyZW1vdmUgYXR0cmlidXRlJyxcbiAgICAgICAgcGF5bG9hZDogbmFtZVxuICAgICAgfSk7XG4g
ICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IERPTVByb3BlcnR5T3BlcmF0aW9ucztc
blxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFj
dC1kb20vbGliL0RPTVByb3BlcnR5T3BlcmF0aW9ucy5qc1xuICoqIG1vZHVsZSBpZCA9IDYwXG4g
KiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDE1LXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4g
Ki9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RET01Db21wb25lbnRGbGFncyA9IHtcbiAg
aGFzQ2FjaGVkQ2hpbGROb2RlczogMSA8PCAwXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0
RE9NQ29tcG9uZW50RmxhZ3M7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBG
T09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTUNvbXBvbmVudEZsYWdzLmpzXG4g
KiogbW9kdWxlIGlkID0gNjFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfYXNzaWduID0g
cmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuXG52YXIgTGlua2VkVmFsdWVVdGlscyA9IHJlcXVp
cmUoJy4vTGlua2VkVmFsdWVVdGlscycpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJl
cXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7XG52YXIgUmVhY3RVcGRhdGVzID0gcmVx
dWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTtcblxudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xp
Yi93YXJuaW5nJyk7XG5cbnZhciBkaWRXYXJuVmFsdWVMaW5rID0gZmFsc2U7XG52YXIgZGlkV2Fy
blZhbHVlRGVmYXVsdFZhbHVlID0gZmFsc2U7XG5cbmZ1bmN0aW9uIHVwZGF0ZU9wdGlvbnNJZlBl
bmRpbmdVcGRhdGVBbmRNb3VudGVkKCkge1xuICBpZiAodGhpcy5fcm9vdE5vZGVJRCAmJiB0aGlz
Ll93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZSkge1xuICAgIHRoaXMuX3dyYXBwZXJTdGF0ZS5w
ZW5kaW5nVXBkYXRlID0gZmFsc2U7XG5cbiAgICB2YXIgcHJvcHMgPSB0aGlzLl9jdXJyZW50RWxl
bWVudC5wcm9wcztcbiAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHBy
b3BzKTtcblxuICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICB1cGRhdGVPcHRpb25zKHRo
aXMsIEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpLCB2YWx1ZSk7XG4gICAgfVxuICB9XG59XG5cbmZ1
bmN0aW9uIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShvd25lcikge1xuICBpZiAob3duZXIp
IHtcbiAgICB2YXIgbmFtZSA9IG93bmVyLmdldE5hbWUoKTtcbiAgICBpZiAobmFtZSkge1xuICAg
ICAgcmV0dXJuICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBuYW1lICsgJ2AuJztc
biAgICB9XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG52YXIgdmFsdWVQcm9wTmFtZXMgPSBbJ3Zh
bHVlJywgJ2RlZmF1bHRWYWx1ZSddO1xuXG4vKipcbiAqIFZhbGlkYXRpb24gZnVuY3Rpb24gZm9y
IGB2YWx1ZWAgYW5kIGBkZWZhdWx0VmFsdWVgLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24g
Y2hlY2tTZWxlY3RQcm9wVHlwZXMoaW5zdCwgcHJvcHMpIHtcbiAgdmFyIG93bmVyID0gaW5zdC5f
Y3VycmVudEVsZW1lbnQuX293bmVyO1xuICBMaW5rZWRWYWx1ZVV0aWxzLmNoZWNrUHJvcFR5cGVz
KCdzZWxlY3QnLCBwcm9wcywgb3duZXIpO1xuXG4gIGlmIChwcm9wcy52YWx1ZUxpbmsgIT09IHVu
ZGVmaW5lZCAmJiAhZGlkV2FyblZhbHVlTGluaykge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnYHZhbHVlTGlua2AgcHJvcCBvbiBg
c2VsZWN0YCBpcyBkZXByZWNhdGVkOyBzZXQgYHZhbHVlYCBhbmQgYG9uQ2hhbmdlYCBpbnN0ZWFk
LicpIDogdm9pZCAwO1xuICAgIGRpZFdhcm5WYWx1ZUxpbmsgPSB0cnVlO1xuICB9XG5cbiAgZm9y
ICh2YXIgaSA9IDA7IGkgPCB2YWx1ZVByb3BOYW1lcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBw
cm9wTmFtZSA9IHZhbHVlUHJvcE5hbWVzW2ldO1xuICAgIGlmIChwcm9wc1twcm9wTmFtZV0gPT0g
bnVsbCkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIHZhciBpc0FycmF5ID0gQXJyYXku
aXNBcnJheShwcm9wc1twcm9wTmFtZV0pO1xuICAgIGlmIChwcm9wcy5tdWx0aXBsZSAmJiAhaXNB
cnJheSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdh
cm5pbmcoZmFsc2UsICdUaGUgYCVzYCBwcm9wIHN1cHBsaWVkIHRvIDxzZWxlY3Q+IG11c3QgYmUg
YW4gYXJyYXkgaWYgJyArICdgbXVsdGlwbGVgIGlzIHRydWUuJXMnLCBwcm9wTmFtZSwgZ2V0RGVj
bGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKSkgOiB2b2lkIDA7XG4gICAgfSBlbHNlIGlmICgh
cHJvcHMubXVsdGlwbGUgJiYgaXNBcnJheSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdUaGUgYCVzYCBwcm9wIHN1cHBsaWVk
IHRvIDxzZWxlY3Q+IG11c3QgYmUgYSBzY2FsYXIgJyArICd2YWx1ZSBpZiBgbXVsdGlwbGVgIGlz
IGZhbHNlLiVzJywgcHJvcE5hbWUsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShvd25lcikp
IDogdm9pZCAwO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEBwYXJhbSB7UmVhY3RET01Db21w
b25lbnR9IGluc3RcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gbXVsdGlwbGVcbiAqIEBwYXJhbSB7Kn0g
cHJvcFZhbHVlIEEgc3RyaW5nYWJsZSAod2l0aCBgbXVsdGlwbGVgLCBhIGxpc3Qgb2Ygc3RyaW5n
YWJsZXMpLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gdXBkYXRlT3B0aW9ucyhpbnN0LCBt
dWx0aXBsZSwgcHJvcFZhbHVlKSB7XG4gIHZhciBzZWxlY3RlZFZhbHVlLCBpO1xuICB2YXIgb3B0
aW9ucyA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpLm9w
dGlvbnM7XG5cbiAgaWYgKG11bHRpcGxlKSB7XG4gICAgc2VsZWN0ZWRWYWx1ZSA9IHt9O1xuICAg
IGZvciAoaSA9IDA7IGkgPCBwcm9wVmFsdWUubGVuZ3RoOyBpKyspIHtcbiAgICAgIHNlbGVjdGVk
VmFsdWVbJycgKyBwcm9wVmFsdWVbaV1dID0gdHJ1ZTtcbiAgICB9XG4gICAgZm9yIChpID0gMDsg
aSA8IG9wdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzZWxlY3RlZCA9IHNlbGVjdGVk
VmFsdWUuaGFzT3duUHJvcGVydHkob3B0aW9uc1tpXS52YWx1ZSk7XG4gICAgICBpZiAob3B0aW9u
c1tpXS5zZWxlY3RlZCAhPT0gc2VsZWN0ZWQpIHtcbiAgICAgICAgb3B0aW9uc1tpXS5zZWxlY3Rl
ZCA9IHNlbGVjdGVkO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICAvLyBEbyBub3Qg
c2V0IGBzZWxlY3QudmFsdWVgIGFzIGV4YWN0IGJlaGF2aW9yIGlzbid0IGNvbnNpc3RlbnQgYWNy
b3NzIGFsbFxuICAgIC8vIGJyb3dzZXJzIGZvciBhbGwgY2FzZXMuXG4gICAgc2VsZWN0ZWRWYWx1
ZSA9ICcnICsgcHJvcFZhbHVlO1xuICAgIGZvciAoaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsg
aSsrKSB7XG4gICAgICBpZiAob3B0aW9uc1tpXS52YWx1ZSA9PT0gc2VsZWN0ZWRWYWx1ZSkge1xu
ICAgICAgICBvcHRpb25zW2ldLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgcmV0dXJuO1xuICAg
ICAgfVxuICAgIH1cbiAgICBpZiAob3B0aW9ucy5sZW5ndGgpIHtcbiAgICAgIG9wdGlvbnNbMF0u
c2VsZWN0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEltcGxlbWVudHMgYSA8
c2VsZWN0PiBob3N0IGNvbXBvbmVudCB0aGF0IGFsbG93cyBvcHRpb25hbGx5IHNldHRpbmcgdGhl
XG4gKiBwcm9wcyBgdmFsdWVgIGFuZCBgZGVmYXVsdFZhbHVlYC4gSWYgYG11bHRpcGxlYCBpcyBm
YWxzZSwgdGhlIHByb3AgbXVzdCBiZSBhXG4gKiBzdHJpbmdhYmxlLiBJZiBgbXVsdGlwbGVgIGlz
IHRydWUsIHRoZSBwcm9wIG11c3QgYmUgYW4gYXJyYXkgb2Ygc3RyaW5nYWJsZXMuXG4gKlxuICog
SWYgYHZhbHVlYCBpcyBub3Qgc3VwcGxpZWQgKG9yIG51bGwvdW5kZWZpbmVkKSwgdXNlciBhY3Rp
b25zIHRoYXQgY2hhbmdlIHRoZVxuICogc2VsZWN0ZWQgb3B0aW9uIHdpbGwgdHJpZ2dlciB1cGRh
dGVzIHRvIHRoZSByZW5kZXJlZCBvcHRpb25zLlxuICpcbiAqIElmIGl0IGlzIHN1cHBsaWVkIChh
bmQgbm90IG51bGwvdW5kZWZpbmVkKSwgdGhlIHJlbmRlcmVkIG9wdGlvbnMgd2lsbCBub3RcbiAq
IHVwZGF0ZSBpbiByZXNwb25zZSB0byB1c2VyIGFjdGlvbnMuIEluc3RlYWQsIHRoZSBgdmFsdWVg
IHByb3AgbXVzdCBjaGFuZ2UgaW5cbiAqIG9yZGVyIGZvciB0aGUgcmVuZGVyZWQgb3B0aW9ucyB0
byB1cGRhdGUuXG4gKlxuICogSWYgYGRlZmF1bHRWYWx1ZWAgaXMgcHJvdmlkZWQsIGFueSBvcHRp
b25zIHdpdGggdGhlIHN1cHBsaWVkIHZhbHVlcyB3aWxsIGJlXG4gKiBzZWxlY3RlZC5cbiAqL1xu
dmFyIFJlYWN0RE9NU2VsZWN0ID0ge1xuICBnZXRIb3N0UHJvcHM6IGZ1bmN0aW9uIChpbnN0LCBw
cm9wcykge1xuICAgIHJldHVybiBfYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgb25DaGFuZ2U6
IGluc3QuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZSxcbiAgICAgIHZhbHVlOiB1bmRlZmluZWRcbiAg
ICB9KTtcbiAgfSxcblxuICBtb3VudFdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcykge1xu
ICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBj
aGVja1NlbGVjdFByb3BUeXBlcyhpbnN0LCBwcm9wcyk7XG4gICAgfVxuXG4gICAgdmFyIHZhbHVl
ID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7XG4gICAgaW5zdC5fd3JhcHBlclN0
YXRlID0ge1xuICAgICAgcGVuZGluZ1VwZGF0ZTogZmFsc2UsXG4gICAgICBpbml0aWFsVmFsdWU6
IHZhbHVlICE9IG51bGwgPyB2YWx1ZSA6IHByb3BzLmRlZmF1bHRWYWx1ZSxcbiAgICAgIGxpc3Rl
bmVyczogbnVsbCxcbiAgICAgIG9uQ2hhbmdlOiBfaGFuZGxlQ2hhbmdlLmJpbmQoaW5zdCksXG4g
ICAgICB3YXNNdWx0aXBsZTogQm9vbGVhbihwcm9wcy5tdWx0aXBsZSlcbiAgICB9O1xuXG4gICAg
aWYgKHByb3BzLnZhbHVlICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuZGVmYXVsdFZhbHVlICE9PSB1
bmRlZmluZWQgJiYgIWRpZFdhcm5WYWx1ZURlZmF1bHRWYWx1ZSkge1xuICAgICAgcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdTZWxlY3QgZWxl
bWVudHMgbXVzdCBiZSBlaXRoZXIgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgJyArICcoc3Bl
Y2lmeSBlaXRoZXIgdGhlIHZhbHVlIHByb3AsIG9yIHRoZSBkZWZhdWx0VmFsdWUgcHJvcCwgYnV0
IG5vdCAnICsgJ2JvdGgpLiBEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5j
b250cm9sbGVkIHNlbGVjdCAnICsgJ2VsZW1lbnQgYW5kIHJlbW92ZSBvbmUgb2YgdGhlc2UgcHJv
cHMuIE1vcmUgaW5mbzogJyArICdodHRwczovL2ZiLm1lL3JlYWN0LWNvbnRyb2xsZWQtY29tcG9u
ZW50cycpIDogdm9pZCAwO1xuICAgICAgZGlkV2FyblZhbHVlRGVmYXVsdFZhbHVlID0gdHJ1ZTtc
biAgICB9XG4gIH0sXG5cbiAgZ2V0U2VsZWN0VmFsdWVDb250ZXh0OiBmdW5jdGlvbiAoaW5zdCkg
e1xuICAgIC8vIFJlYWN0RE9NT3B0aW9uIGxvb2tzIGF0IHRoaXMgaW5pdGlhbCB2YWx1ZSBzbyB0
aGUgaW5pdGlhbCBnZW5lcmF0ZWRcbiAgICAvLyBtYXJrdXAgaGFzIGNvcnJlY3QgYHNlbGVjdGVk
YCBhdHRyaWJ1dGVzXG4gICAgcmV0dXJuIGluc3QuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWU7
XG4gIH0sXG5cbiAgcG9zdFVwZGF0ZVdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgdmFy
IHByb3BzID0gaW5zdC5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cbiAgICAvLyBBZnRlciB0aGUg
aW5pdGlhbCBtb3VudCwgd2UgY29udHJvbCBzZWxlY3RlZC1uZXNzIG1hbnVhbGx5IHNvIGRvbid0
IHBhc3NcbiAgICAvLyB0aGlzIHZhbHVlIGRvd25cbiAgICBpbnN0Ll93cmFwcGVyU3RhdGUuaW5p
dGlhbFZhbHVlID0gdW5kZWZpbmVkO1xuXG4gICAgdmFyIHdhc011bHRpcGxlID0gaW5zdC5fd3Jh
cHBlclN0YXRlLndhc011bHRpcGxlO1xuICAgIGluc3QuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBs
ZSA9IEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpO1xuXG4gICAgdmFyIHZhbHVlID0gTGlua2VkVmFs
dWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7XG4gICAgaWYgKHZhbHVlICE9IG51bGwpIHtcbiAgICAg
IGluc3QuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlID0gZmFsc2U7XG4gICAgICB1cGRhdGVP
cHRpb25zKGluc3QsIEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpLCB2YWx1ZSk7XG4gICAgfSBlbHNl
IGlmICh3YXNNdWx0aXBsZSAhPT0gQm9vbGVhbihwcm9wcy5tdWx0aXBsZSkpIHtcbiAgICAgIC8v
IEZvciBzaW1wbGljaXR5LCByZWFwcGx5IGBkZWZhdWx0VmFsdWVgIGlmIGBtdWx0aXBsZWAgaXMg
dG9nZ2xlZC5cbiAgICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWUgIT0gbnVsbCkge1xuICAgICAg
ICB1cGRhdGVPcHRpb25zKGluc3QsIEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpLCBwcm9wcy5kZWZh
dWx0VmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gUmV2ZXJ0IHRoZSBzZWxlY3Qg
YmFjayB0byBpdHMgZGVmYXVsdCB1bnNlbGVjdGVkIHN0YXRlLlxuICAgICAgICB1cGRhdGVPcHRp
b25zKGluc3QsIEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpLCBwcm9wcy5tdWx0aXBsZSA/IFtdIDog
JycpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gX2hhbmRsZUNoYW5nZShl
dmVudCkge1xuICB2YXIgcHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztcbiAgdmFy
IHJldHVyblZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5leGVjdXRlT25DaGFuZ2UocHJvcHMsIGV2
ZW50KTtcblxuICBpZiAodGhpcy5fcm9vdE5vZGVJRCkge1xuICAgIHRoaXMuX3dyYXBwZXJTdGF0
ZS5wZW5kaW5nVXBkYXRlID0gdHJ1ZTtcbiAgfVxuICBSZWFjdFVwZGF0ZXMuYXNhcCh1cGRhdGVP
cHRpb25zSWZQZW5kaW5nVXBkYXRlQW5kTW91bnRlZCwgdGhpcyk7XG4gIHJldHVybiByZXR1cm5W
YWx1ZTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVNlbGVjdDtcblxuXG4vKioqKioq
KioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1Jl
YWN0RE9NU2VsZWN0LmpzXG4gKiogbW9kdWxlIGlkID0gNjJcbiAqKiBtb2R1bGUgY2h1bmtzID0g
MFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5c
biAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7
XG5cbnZhciBlbXB0eUNvbXBvbmVudEZhY3Rvcnk7XG5cbnZhciBSZWFjdEVtcHR5Q29tcG9uZW50
SW5qZWN0aW9uID0ge1xuICBpbmplY3RFbXB0eUNvbXBvbmVudEZhY3Rvcnk6IGZ1bmN0aW9uIChm
YWN0b3J5KSB7XG4gICAgZW1wdHlDb21wb25lbnRGYWN0b3J5ID0gZmFjdG9yeTtcbiAgfVxufTtc
blxudmFyIFJlYWN0RW1wdHlDb21wb25lbnQgPSB7XG4gIGNyZWF0ZTogZnVuY3Rpb24gKGluc3Rh
bnRpYXRlKSB7XG4gICAgcmV0dXJuIGVtcHR5Q29tcG9uZW50RmFjdG9yeShpbnN0YW50aWF0ZSk7
XG4gIH1cbn07XG5cblJlYWN0RW1wdHlDb21wb25lbnQuaW5qZWN0aW9uID0gUmVhY3RFbXB0eUNv
bXBvbmVudEluamVjdGlvbjtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEVtcHR5Q29tcG9uZW50
O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3Jl
YWN0LWRvbS9saWIvUmVhY3RFbXB0eUNvbXBvbmVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDYzXG4g
KiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4g
KiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdEZlYXR1cmVGbGFncyA9IHtcbiAg
Ly8gV2hlbiB0cnVlLCBjYWxsIGNvbnNvbGUudGltZSgpIGJlZm9yZSBhbmQgLnRpbWVFbmQoKSBh
ZnRlciBlYWNoIHRvcC1sZXZlbFxuICAvLyByZW5kZXIgKGJvdGggaW5pdGlhbCByZW5kZXJzIGFu
ZCB1cGRhdGVzKS4gVXNlZnVsIHdoZW4gbG9va2luZyBhdCBwcm9kLW1vZGVcbiAgLy8gdGltZWxp
bmUgcHJvZmlsZXMgaW4gQ2hyb21lLCBmb3IgZXhhbXBsZS5cbiAgbG9nVG9wTGV2ZWxSZW5kZXJz
OiBmYWxzZVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEZlYXR1cmVGbGFncztcblxuXG4v
KioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20v
bGliL1JlYWN0RmVhdHVyZUZsYWdzLmpzXG4gKiogbW9kdWxlIGlkID0gNjRcbiAqKiBtb2R1bGUg
Y2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4g
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNl
IHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52
YXJpYW50Jyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQn
KTtcblxudmFyIGdlbmVyaWNDb21wb25lbnRDbGFzcyA9IG51bGw7XG52YXIgdGV4dENvbXBvbmVu
dENsYXNzID0gbnVsbDtcblxudmFyIFJlYWN0SG9zdENvbXBvbmVudEluamVjdGlvbiA9IHtcbiAg
Ly8gVGhpcyBhY2NlcHRzIGEgY2xhc3MgdGhhdCByZWNlaXZlcyB0aGUgdGFnIHN0cmluZy4gVGhp
cyBpcyBhIGNhdGNoIGFsbFxuICAvLyB0aGF0IGNhbiByZW5kZXIgYW55IGtpbmQgb2YgdGFnLlxu
ICBpbmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3M6IGZ1bmN0aW9uIChjb21wb25lbnRDbGFzcykg
e1xuICAgIGdlbmVyaWNDb21wb25lbnRDbGFzcyA9IGNvbXBvbmVudENsYXNzO1xuICB9LFxuICAv
LyBUaGlzIGFjY2VwdHMgYSB0ZXh0IGNvbXBvbmVudCBjbGFzcyB0aGF0IHRha2VzIHRoZSB0ZXh0
IHN0cmluZyB0byBiZVxuICAvLyByZW5kZXJlZCBhcyBwcm9wcy5cbiAgaW5qZWN0VGV4dENvbXBv
bmVudENsYXNzOiBmdW5jdGlvbiAoY29tcG9uZW50Q2xhc3MpIHtcbiAgICB0ZXh0Q29tcG9uZW50
Q2xhc3MgPSBjb21wb25lbnRDbGFzcztcbiAgfVxufTtcblxuLyoqXG4gKiBHZXQgYSBob3N0IGlu
dGVybmFsIGNvbXBvbmVudCBjbGFzcyBmb3IgYSBzcGVjaWZpYyB0YWcuXG4gKlxuICogQHBhcmFt
IHtSZWFjdEVsZW1lbnR9IGVsZW1lbnQgVGhlIGVsZW1lbnQgdG8gY3JlYXRlLlxuICogQHJldHVy
biB7ZnVuY3Rpb259IFRoZSBpbnRlcm5hbCBjbGFzcyBjb25zdHJ1Y3RvciBmdW5jdGlvbi5cbiAq
L1xuZnVuY3Rpb24gY3JlYXRlSW50ZXJuYWxDb21wb25lbnQoZWxlbWVudCkge1xuICAhZ2VuZXJp
Y0NvbXBvbmVudENsYXNzID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IGludmFyaWFudChmYWxzZSwgJ1RoZXJlIGlzIG5vIHJlZ2lzdGVyZWQgY29tcG9uZW50IGZvciB0
aGUgdGFnICVzJywgZWxlbWVudC50eXBlKSA6IF9wcm9kSW52YXJpYW50KCcxMTEnLCBlbGVtZW50
LnR5cGUpIDogdm9pZCAwO1xuICByZXR1cm4gbmV3IGdlbmVyaWNDb21wb25lbnRDbGFzcyhlbGVt
ZW50KTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge1JlYWN0VGV4dH0gdGV4dFxuICogQHJldHVybiB7
UmVhY3RDb21wb25lbnR9XG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlRm9yVGV4dCh0ZXh0
KSB7XG4gIHJldHVybiBuZXcgdGV4dENvbXBvbmVudENsYXNzKHRleHQpO1xufVxuXG4vKipcbiAq
IEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNvbXBvbmVudFxuICogQHJldHVybiB7Ym9vbGVhbn1c
biAqL1xuZnVuY3Rpb24gaXNUZXh0Q29tcG9uZW50KGNvbXBvbmVudCkge1xuICByZXR1cm4gY29t
cG9uZW50IGluc3RhbmNlb2YgdGV4dENvbXBvbmVudENsYXNzO1xufVxuXG52YXIgUmVhY3RIb3N0
Q29tcG9uZW50ID0ge1xuICBjcmVhdGVJbnRlcm5hbENvbXBvbmVudDogY3JlYXRlSW50ZXJuYWxD
b21wb25lbnQsXG4gIGNyZWF0ZUluc3RhbmNlRm9yVGV4dDogY3JlYXRlSW5zdGFuY2VGb3JUZXh0
LFxuICBpc1RleHRDb21wb25lbnQ6IGlzVGV4dENvbXBvbmVudCxcbiAgaW5qZWN0aW9uOiBSZWFj
dEhvc3RDb21wb25lbnRJbmplY3Rpb25cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RIb3N0
Q29tcG9uZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4g
KiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RIb3N0Q29tcG9uZW50LmpzXG4gKiogbW9kdWxlIGlk
ID0gNjVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxu
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdERPTVNlbGVjdGlvbiA9IHJl
cXVpcmUoJy4vUmVhY3RET01TZWxlY3Rpb24nKTtcblxudmFyIGNvbnRhaW5zTm9kZSA9IHJlcXVp
cmUoJ2ZianMvbGliL2NvbnRhaW5zTm9kZScpO1xudmFyIGZvY3VzTm9kZSA9IHJlcXVpcmUoJ2Zi
anMvbGliL2ZvY3VzTm9kZScpO1xudmFyIGdldEFjdGl2ZUVsZW1lbnQgPSByZXF1aXJlKCdmYmpz
L2xpYi9nZXRBY3RpdmVFbGVtZW50Jyk7XG5cbmZ1bmN0aW9uIGlzSW5Eb2N1bWVudChub2RlKSB7
XG4gIHJldHVybiBjb250YWluc05vZGUoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LCBub2RlKTtc
bn1cblxuLyoqXG4gKiBAUmVhY3RJbnB1dFNlbGVjdGlvbjogUmVhY3QgaW5wdXQgc2VsZWN0aW9u
IG1vZHVsZS4gQmFzZWQgb24gU2VsZWN0aW9uLmpzLFxuICogYnV0IG1vZGlmaWVkIHRvIGJlIHN1
aXRhYmxlIGZvciByZWFjdCBhbmQgaGFzIGEgY291cGxlIG9mIGJ1ZyBmaXhlcyAoZG9lc24ndFxu
ICogYXNzdW1lIGJ1dHRvbnMgaGF2ZSByYW5nZSBzZWxlY3Rpb25zIGFsbG93ZWQpLlxuICogSW5w
dXQgc2VsZWN0aW9uIG1vZHVsZSBmb3IgUmVhY3QuXG4gKi9cbnZhciBSZWFjdElucHV0U2VsZWN0
aW9uID0ge1xuICBoYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXM6IGZ1bmN0aW9uIChlbGVtKSB7XG4g
ICAgdmFyIG5vZGVOYW1lID0gZWxlbSAmJiBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUu
dG9Mb3dlckNhc2UoKTtcbiAgICByZXR1cm4gbm9kZU5hbWUgJiYgKG5vZGVOYW1lID09PSAnaW5w
dXQnICYmIGVsZW0udHlwZSA9PT0gJ3RleHQnIHx8IG5vZGVOYW1lID09PSAndGV4dGFyZWEnIHx8
IGVsZW0uY29udGVudEVkaXRhYmxlID09PSAndHJ1ZScpO1xuICB9LFxuXG4gIGdldFNlbGVjdGlv
bkluZm9ybWF0aW9uOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGZvY3VzZWRFbGVtID0gZ2V0QWN0
aXZlRWxlbWVudCgpO1xuICAgIHJldHVybiB7XG4gICAgICBmb2N1c2VkRWxlbTogZm9jdXNlZEVs
ZW0sXG4gICAgICBzZWxlY3Rpb25SYW5nZTogUmVhY3RJbnB1dFNlbGVjdGlvbi5oYXNTZWxlY3Rp
b25DYXBhYmlsaXRpZXMoZm9jdXNlZEVsZW0pID8gUmVhY3RJbnB1dFNlbGVjdGlvbi5nZXRTZWxl
Y3Rpb24oZm9jdXNlZEVsZW0pIDogbnVsbFxuICAgIH07XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBy
ZXN0b3JlU2VsZWN0aW9uOiBJZiBhbnkgc2VsZWN0aW9uIGluZm9ybWF0aW9uIHdhcyBwb3RlbnRp
YWxseSBsb3N0LFxuICAgKiByZXN0b3JlIGl0LiBUaGlzIGlzIHVzZWZ1bCB3aGVuIHBlcmZvcm1p
bmcgb3BlcmF0aW9ucyB0aGF0IGNvdWxkIHJlbW92ZSBkb21cbiAgICogbm9kZXMgYW5kIHBsYWNl
IHRoZW0gYmFjayBpbiwgcmVzdWx0aW5nIGluIGZvY3VzIGJlaW5nIGxvc3QuXG4gICAqL1xuICBy
ZXN0b3JlU2VsZWN0aW9uOiBmdW5jdGlvbiAocHJpb3JTZWxlY3Rpb25JbmZvcm1hdGlvbikge1xu
ICAgIHZhciBjdXJGb2N1c2VkRWxlbSA9IGdldEFjdGl2ZUVsZW1lbnQoKTtcbiAgICB2YXIgcHJp
b3JGb2N1c2VkRWxlbSA9IHByaW9yU2VsZWN0aW9uSW5mb3JtYXRpb24uZm9jdXNlZEVsZW07XG4g
ICAgdmFyIHByaW9yU2VsZWN0aW9uUmFuZ2UgPSBwcmlvclNlbGVjdGlvbkluZm9ybWF0aW9uLnNl
bGVjdGlvblJhbmdlO1xuICAgIGlmIChjdXJGb2N1c2VkRWxlbSAhPT0gcHJpb3JGb2N1c2VkRWxl
bSAmJiBpc0luRG9jdW1lbnQocHJpb3JGb2N1c2VkRWxlbSkpIHtcbiAgICAgIGlmIChSZWFjdElu
cHV0U2VsZWN0aW9uLmhhc1NlbGVjdGlvbkNhcGFiaWxpdGllcyhwcmlvckZvY3VzZWRFbGVtKSkg
e1xuICAgICAgICBSZWFjdElucHV0U2VsZWN0aW9uLnNldFNlbGVjdGlvbihwcmlvckZvY3VzZWRF
bGVtLCBwcmlvclNlbGVjdGlvblJhbmdlKTtcbiAgICAgIH1cbiAgICAgIGZvY3VzTm9kZShwcmlv
ckZvY3VzZWRFbGVtKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBnZXRTZWxlY3Rpb246
IEdldHMgdGhlIHNlbGVjdGlvbiBib3VuZHMgb2YgYSBmb2N1c2VkIHRleHRhcmVhLCBpbnB1dCBv
clxuICAgKiBjb250ZW50RWRpdGFibGUgbm9kZS5cbiAgICogLUBpbnB1dDogTG9vayB1cCBzZWxl
Y3Rpb24gYm91bmRzIG9mIHRoaXMgaW5wdXRcbiAgICogLUByZXR1cm4ge3N0YXJ0OiBzZWxlY3Rp
b25TdGFydCwgZW5kOiBzZWxlY3Rpb25FbmR9XG4gICAqL1xuICBnZXRTZWxlY3Rpb246IGZ1bmN0
aW9uIChpbnB1dCkge1xuICAgIHZhciBzZWxlY3Rpb247XG5cbiAgICBpZiAoJ3NlbGVjdGlvblN0
YXJ0JyBpbiBpbnB1dCkge1xuICAgICAgLy8gTW9kZXJuIGJyb3dzZXIgd2l0aCBpbnB1dCBvciB0
ZXh0YXJlYS5cbiAgICAgIHNlbGVjdGlvbiA9IHtcbiAgICAgICAgc3RhcnQ6IGlucHV0LnNlbGVj
dGlvblN0YXJ0LFxuICAgICAgICBlbmQ6IGlucHV0LnNlbGVjdGlvbkVuZFxuICAgICAgfTtcbiAg
ICB9IGVsc2UgaWYgKGRvY3VtZW50LnNlbGVjdGlvbiAmJiBpbnB1dC5ub2RlTmFtZSAmJiBpbnB1
dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnKSB7XG4gICAgICAvLyBJRTggaW5w
dXQuXG4gICAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTtc
biAgICAgIC8vIFRoZXJlIGNhbiBvbmx5IGJlIG9uZSBzZWxlY3Rpb24gcGVyIGRvY3VtZW50IGlu
IElFLCBzbyBpdCBtdXN0XG4gICAgICAvLyBiZSBpbiBvdXIgZWxlbWVudC5cbiAgICAgIGlmIChy
YW5nZS5wYXJlbnRFbGVtZW50KCkgPT09IGlucHV0KSB7XG4gICAgICAgIHNlbGVjdGlvbiA9IHtc
biAgICAgICAgICBzdGFydDogLXJhbmdlLm1vdmVTdGFydCgnY2hhcmFjdGVyJywgLWlucHV0LnZh
bHVlLmxlbmd0aCksXG4gICAgICAgICAgZW5kOiAtcmFuZ2UubW92ZUVuZCgnY2hhcmFjdGVyJywg
LWlucHV0LnZhbHVlLmxlbmd0aClcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xu
ICAgICAgLy8gQ29udGVudCBlZGl0YWJsZSBvciBvbGQgSUUgdGV4dGFyZWEuXG4gICAgICBzZWxl
Y3Rpb24gPSBSZWFjdERPTVNlbGVjdGlvbi5nZXRPZmZzZXRzKGlucHV0KTtcbiAgICB9XG5cbiAg
ICByZXR1cm4gc2VsZWN0aW9uIHx8IHsgc3RhcnQ6IDAsIGVuZDogMCB9O1xuICB9LFxuXG4gIC8q
KlxuICAgKiBAc2V0U2VsZWN0aW9uOiBTZXRzIHRoZSBzZWxlY3Rpb24gYm91bmRzIG9mIGEgdGV4
dGFyZWEgb3IgaW5wdXQgYW5kIGZvY3VzZXNcbiAgICogdGhlIGlucHV0LlxuICAgKiAtQGlucHV0
ICAgICBTZXQgc2VsZWN0aW9uIGJvdW5kcyBvZiB0aGlzIGlucHV0IG9yIHRleHRhcmVhXG4gICAq
IC1Ab2Zmc2V0cyAgIE9iamVjdCBvZiBzYW1lIGZvcm0gdGhhdCBpcyByZXR1cm5lZCBmcm9tIGdl
dCpcbiAgICovXG4gIHNldFNlbGVjdGlvbjogZnVuY3Rpb24gKGlucHV0LCBvZmZzZXRzKSB7XG4g
ICAgdmFyIHN0YXJ0ID0gb2Zmc2V0cy5zdGFydDtcbiAgICB2YXIgZW5kID0gb2Zmc2V0cy5lbmQ7
XG4gICAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBlbmQgPSBzdGFydDtcbiAgICB9
XG5cbiAgICBpZiAoJ3NlbGVjdGlvblN0YXJ0JyBpbiBpbnB1dCkge1xuICAgICAgaW5wdXQuc2Vs
ZWN0aW9uU3RhcnQgPSBzdGFydDtcbiAgICAgIGlucHV0LnNlbGVjdGlvbkVuZCA9IE1hdGgubWlu
KGVuZCwgaW5wdXQudmFsdWUubGVuZ3RoKTtcbiAgICB9IGVsc2UgaWYgKGRvY3VtZW50LnNlbGVj
dGlvbiAmJiBpbnB1dC5ub2RlTmFtZSAmJiBpbnB1dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09
PSAnaW5wdXQnKSB7XG4gICAgICB2YXIgcmFuZ2UgPSBpbnB1dC5jcmVhdGVUZXh0UmFuZ2UoKTtc
biAgICAgIHJhbmdlLmNvbGxhcHNlKHRydWUpO1xuICAgICAgcmFuZ2UubW92ZVN0YXJ0KCdjaGFy
YWN0ZXInLCBzdGFydCk7XG4gICAgICByYW5nZS5tb3ZlRW5kKCdjaGFyYWN0ZXInLCBlbmQgLSBz
dGFydCk7XG4gICAgICByYW5nZS5zZWxlY3QoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgUmVhY3RE
T01TZWxlY3Rpb24uc2V0T2Zmc2V0cyhpbnB1dCwgb2Zmc2V0cyk7XG4gICAgfVxuICB9XG59O1xu
XG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0SW5wdXRTZWxlY3Rpb247XG5cblxuLyoqKioqKioqKioq
KioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdElu
cHV0U2VsZWN0aW9uLmpzXG4gKiogbW9kdWxlIGlkID0gNjZcbiAqKiBtb2R1bGUgY2h1bmtzID0g
MFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5c
biAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7
XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50Jyk7
XG5cbnZhciBET01MYXp5VHJlZSA9IHJlcXVpcmUoJy4vRE9NTGF6eVRyZWUnKTtcbnZhciBET01Q
cm9wZXJ0eSA9IHJlcXVpcmUoJy4vRE9NUHJvcGVydHknKTtcbnZhciBSZWFjdCA9IHJlcXVpcmUo
J3JlYWN0L2xpYi9SZWFjdCcpO1xudmFyIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlciA9IHJlcXVp
cmUoJy4vUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyJyk7XG52YXIgUmVhY3RDdXJyZW50T3duZXIg
PSByZXF1aXJlKCdyZWFjdC9saWIvUmVhY3RDdXJyZW50T3duZXInKTtcbnZhciBSZWFjdERPTUNv
bXBvbmVudFRyZWUgPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpO1xudmFyIFJl
YWN0RE9NQ29udGFpbmVySW5mbyA9IHJlcXVpcmUoJy4vUmVhY3RET01Db250YWluZXJJbmZvJyk7
XG52YXIgUmVhY3RET01GZWF0dXJlRmxhZ3MgPSByZXF1aXJlKCcuL1JlYWN0RE9NRmVhdHVyZUZs
YWdzJyk7XG52YXIgUmVhY3RGZWF0dXJlRmxhZ3MgPSByZXF1aXJlKCcuL1JlYWN0RmVhdHVyZUZs
YWdzJyk7XG52YXIgUmVhY3RJbnN0YW5jZU1hcCA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0YW5jZU1h
cCcpO1xudmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gcmVxdWlyZSgnLi9SZWFjdEluc3RydW1l
bnRhdGlvbicpO1xudmFyIFJlYWN0TWFya3VwQ2hlY2tzdW0gPSByZXF1aXJlKCcuL1JlYWN0TWFy
a3VwQ2hlY2tzdW0nKTtcbnZhciBSZWFjdFJlY29uY2lsZXIgPSByZXF1aXJlKCcuL1JlYWN0UmVj
b25jaWxlcicpO1xudmFyIFJlYWN0VXBkYXRlUXVldWUgPSByZXF1aXJlKCcuL1JlYWN0VXBkYXRl
UXVldWUnKTtcbnZhciBSZWFjdFVwZGF0ZXMgPSByZXF1aXJlKCcuL1JlYWN0VXBkYXRlcycpO1xu
XG52YXIgZW1wdHlPYmplY3QgPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eU9iamVjdCcpO1xudmFy
IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQgPSByZXF1aXJlKCcuL2luc3RhbnRpYXRlUmVhY3RD
b21wb25lbnQnKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQn
KTtcbnZhciBzZXRJbm5lckhUTUwgPSByZXF1aXJlKCcuL3NldElubmVySFRNTCcpO1xudmFyIHNo
b3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9zaG91bGRVcGRhdGVSZWFjdENv
bXBvbmVudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5c
bnZhciBBVFRSX05BTUUgPSBET01Qcm9wZXJ0eS5JRF9BVFRSSUJVVEVfTkFNRTtcbnZhciBST09U
X0FUVFJfTkFNRSA9IERPTVByb3BlcnR5LlJPT1RfQVRUUklCVVRFX05BTUU7XG5cbnZhciBFTEVN
RU5UX05PREVfVFlQRSA9IDE7XG52YXIgRE9DX05PREVfVFlQRSA9IDk7XG52YXIgRE9DVU1FTlRf
RlJBR01FTlRfTk9ERV9UWVBFID0gMTE7XG5cbnZhciBpbnN0YW5jZXNCeVJlYWN0Um9vdElEID0g
e307XG5cbi8qKlxuICogRmluZHMgdGhlIGluZGV4IG9mIHRoZSBmaXJzdCBjaGFyYWN0ZXJcbiAq
IHRoYXQncyBub3QgY29tbW9uIGJldHdlZW4gdGhlIHR3byBnaXZlbiBzdHJpbmdzLlxuICpcbiAq
IEByZXR1cm4ge251bWJlcn0gdGhlIGluZGV4IG9mIHRoZSBjaGFyYWN0ZXIgd2hlcmUgdGhlIHN0
cmluZ3MgZGl2ZXJnZVxuICovXG5mdW5jdGlvbiBmaXJzdERpZmZlcmVuY2VJbmRleChzdHJpbmcx
LCBzdHJpbmcyKSB7XG4gIHZhciBtaW5MZW4gPSBNYXRoLm1pbihzdHJpbmcxLmxlbmd0aCwgc3Ry
aW5nMi5sZW5ndGgpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IG1pbkxlbjsgaSsrKSB7XG4gICAg
aWYgKHN0cmluZzEuY2hhckF0KGkpICE9PSBzdHJpbmcyLmNoYXJBdChpKSkge1xuICAgICAgcmV0
dXJuIGk7XG4gICAgfVxuICB9XG4gIHJldHVybiBzdHJpbmcxLmxlbmd0aCA9PT0gc3RyaW5nMi5s
ZW5ndGggPyAtMSA6IG1pbkxlbjtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9N
RG9jdW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCB0aGF0IG1heSBjb250YWluXG4gKiBhIFJl
YWN0IGNvbXBvbmVudFxuICogQHJldHVybiB7Pyp9IERPTSBlbGVtZW50IHRoYXQgbWF5IGhhdmUg
dGhlIHJlYWN0Um9vdCBJRCwgb3IgbnVsbC5cbiAqL1xuZnVuY3Rpb24gZ2V0UmVhY3RSb290RWxl
bWVudEluQ29udGFpbmVyKGNvbnRhaW5lcikge1xuICBpZiAoIWNvbnRhaW5lcikge1xuICAgIHJl
dHVybiBudWxsO1xuICB9XG5cbiAgaWYgKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRE9DX05PREVf
VFlQRSkge1xuICAgIHJldHVybiBjb250YWluZXIuZG9jdW1lbnRFbGVtZW50O1xuICB9IGVsc2Ug
e1xuICAgIHJldHVybiBjb250YWluZXIuZmlyc3RDaGlsZDtcbiAgfVxufVxuXG5mdW5jdGlvbiBp
bnRlcm5hbEdldElEKG5vZGUpIHtcbiAgLy8gSWYgbm9kZSBpcyBzb21ldGhpbmcgbGlrZSBhIHdp
bmRvdywgZG9jdW1lbnQsIG9yIHRleHQgbm9kZSwgbm9uZSBvZlxuICAvLyB3aGljaCBzdXBwb3J0
IGF0dHJpYnV0ZXMgb3IgYSAuZ2V0QXR0cmlidXRlIG1ldGhvZCwgZ3JhY2VmdWxseSByZXR1cm5c
biAgLy8gdGhlIGVtcHR5IHN0cmluZywgYXMgaWYgdGhlIGF0dHJpYnV0ZSB3ZXJlIG1pc3Npbmcu
XG4gIHJldHVybiBub2RlLmdldEF0dHJpYnV0ZSAmJiBub2RlLmdldEF0dHJpYnV0ZShBVFRSX05B
TUUpIHx8ICcnO1xufVxuXG4vKipcbiAqIE1vdW50cyB0aGlzIGNvbXBvbmVudCBhbmQgaW5zZXJ0
cyBpdCBpbnRvIHRoZSBET00uXG4gKlxuICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY29tcG9u
ZW50SW5zdGFuY2UgVGhlIGluc3RhbmNlIHRvIG1vdW50LlxuICogQHBhcmFtIHtET01FbGVtZW50
fSBjb250YWluZXIgRE9NIGVsZW1lbnQgdG8gbW91bnQgaW50by5cbiAqIEBwYXJhbSB7UmVhY3RS
ZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hv
dWxkUmV1c2VNYXJrdXAgSWYgdHJ1ZSwgZG8gbm90IGluc2VydCBtYXJrdXBcbiAqL1xuZnVuY3Rp
b24gbW91bnRDb21wb25lbnRJbnRvTm9kZSh3cmFwcGVySW5zdGFuY2UsIGNvbnRhaW5lciwgdHJh
bnNhY3Rpb24sIHNob3VsZFJldXNlTWFya3VwLCBjb250ZXh0KSB7XG4gIHZhciBtYXJrZXJOYW1l
O1xuICBpZiAoUmVhY3RGZWF0dXJlRmxhZ3MubG9nVG9wTGV2ZWxSZW5kZXJzKSB7XG4gICAgdmFy
IHdyYXBwZWRFbGVtZW50ID0gd3JhcHBlckluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5wcm9wcy5j
aGlsZDtcbiAgICB2YXIgdHlwZSA9IHdyYXBwZWRFbGVtZW50LnR5cGU7XG4gICAgbWFya2VyTmFt
ZSA9ICdSZWFjdCBtb3VudDogJyArICh0eXBlb2YgdHlwZSA9PT0gJ3N0cmluZycgPyB0eXBlIDog
dHlwZS5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUpO1xuICAgIGNvbnNvbGUudGltZShtYXJrZXJO
YW1lKTtcbiAgfVxuXG4gIHZhciBtYXJrdXAgPSBSZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25l
bnQod3JhcHBlckluc3RhbmNlLCB0cmFuc2FjdGlvbiwgbnVsbCwgUmVhY3RET01Db250YWluZXJJ
bmZvKHdyYXBwZXJJbnN0YW5jZSwgY29udGFpbmVyKSwgY29udGV4dCwgMCAvKiBwYXJlbnREZWJ1
Z0lEICovXG4gICk7XG5cbiAgaWYgKG1hcmtlck5hbWUpIHtcbiAgICBjb25zb2xlLnRpbWVFbmQo
bWFya2VyTmFtZSk7XG4gIH1cblxuICB3cmFwcGVySW5zdGFuY2UuX3JlbmRlcmVkQ29tcG9uZW50
Ll90b3BMZXZlbFdyYXBwZXIgPSB3cmFwcGVySW5zdGFuY2U7XG4gIFJlYWN0TW91bnQuX21vdW50
SW1hZ2VJbnRvTm9kZShtYXJrdXAsIGNvbnRhaW5lciwgd3JhcHBlckluc3RhbmNlLCBzaG91bGRS
ZXVzZU1hcmt1cCwgdHJhbnNhY3Rpb24pO1xufVxuXG4vKipcbiAqIEJhdGNoZWQgbW91bnQuXG4g
KlxuICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY29tcG9uZW50SW5zdGFuY2UgVGhlIGluc3Rh
bmNlIHRvIG1vdW50LlxuICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgRE9NIGVsZW1l
bnQgdG8gbW91bnQgaW50by5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hvdWxkUmV1c2VNYXJrdXAg
SWYgdHJ1ZSwgZG8gbm90IGluc2VydCBtYXJrdXBcbiAqL1xuZnVuY3Rpb24gYmF0Y2hlZE1vdW50
Q29tcG9uZW50SW50b05vZGUoY29tcG9uZW50SW5zdGFuY2UsIGNvbnRhaW5lciwgc2hvdWxkUmV1
c2VNYXJrdXAsIGNvbnRleHQpIHtcbiAgdmFyIHRyYW5zYWN0aW9uID0gUmVhY3RVcGRhdGVzLlJl
YWN0UmVjb25jaWxlVHJhbnNhY3Rpb24uZ2V0UG9vbGVkKFxuICAvKiB1c2VDcmVhdGVFbGVtZW50
ICovXG4gICFzaG91bGRSZXVzZU1hcmt1cCAmJiBSZWFjdERPTUZlYXR1cmVGbGFncy51c2VDcmVh
dGVFbGVtZW50KTtcbiAgdHJhbnNhY3Rpb24ucGVyZm9ybShtb3VudENvbXBvbmVudEludG9Ob2Rl
LCBudWxsLCBjb21wb25lbnRJbnN0YW5jZSwgY29udGFpbmVyLCB0cmFuc2FjdGlvbiwgc2hvdWxk
UmV1c2VNYXJrdXAsIGNvbnRleHQpO1xuICBSZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNpbGVUcmFu
c2FjdGlvbi5yZWxlYXNlKHRyYW5zYWN0aW9uKTtcbn1cblxuLyoqXG4gKiBVbm1vdW50cyBhIGNv
bXBvbmVudCBhbmQgcmVtb3ZlcyBpdCBmcm9tIHRoZSBET00uXG4gKlxuICogQHBhcmFtIHtSZWFj
dENvbXBvbmVudH0gaW5zdGFuY2UgUmVhY3QgY29tcG9uZW50IGluc3RhbmNlLlxuICogQHBhcmFt
IHtET01FbGVtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgdG8gdW5tb3VudCBmcm9tLlxuICog
QGZpbmFsXG4gKiBAaW50ZXJuYWxcbiAqIEBzZWUge1JlYWN0TW91bnQudW5tb3VudENvbXBvbmVu
dEF0Tm9kZX1cbiAqL1xuZnVuY3Rpb24gdW5tb3VudENvbXBvbmVudEZyb21Ob2RlKGluc3RhbmNl
LCBjb250YWluZXIsIHNhZmVseSkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJykge1xuICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZ2lu
Rmx1c2goKTtcbiAgfVxuICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENvbXBvbmVudChpbnN0YW5j
ZSwgc2FmZWx5KTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicp
IHtcbiAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25FbmRGbHVzaCgpO1xuICB9
XG5cbiAgaWYgKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRE9DX05PREVfVFlQRSkge1xuICAgIGNv
bnRhaW5lciA9IGNvbnRhaW5lci5kb2N1bWVudEVsZW1lbnQ7XG4gIH1cblxuICAvLyBodHRwOi8v
anNwZXJmLmNvbS9lbXB0eWluZy1hLW5vZGVcbiAgd2hpbGUgKGNvbnRhaW5lci5sYXN0Q2hpbGQp
IHtcbiAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQoY29udGFpbmVyLmxhc3RDaGlsZCk7XG4gIH1c
bn1cblxuLyoqXG4gKiBUcnVlIGlmIHRoZSBzdXBwbGllZCBET00gbm9kZSBoYXMgYSBkaXJlY3Qg
UmVhY3QtcmVuZGVyZWQgY2hpbGQgdGhhdCBpc1xuICogbm90IGEgUmVhY3Qgcm9vdCBlbGVtZW50
LiBVc2VmdWwgZm9yIHdhcm5pbmcgaW4gYHJlbmRlcmAsXG4gKiBgdW5tb3VudENvbXBvbmVudEF0
Tm9kZWAsIGV0Yy5cbiAqXG4gKiBAcGFyYW0gez9ET01FbGVtZW50fSBub2RlIFRoZSBjYW5kaWRh
dGUgRE9NIG5vZGUuXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBET00gZWxlbWVu
dCBjb250YWlucyBhIGRpcmVjdCBjaGlsZCB0aGF0IHdhc1xuICogcmVuZGVyZWQgYnkgUmVhY3Qg
YnV0IGlzIG5vdCBhIHJvb3QgZWxlbWVudC5cbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiBo
YXNOb25Sb290UmVhY3RDaGlsZChjb250YWluZXIpIHtcbiAgdmFyIHJvb3RFbCA9IGdldFJlYWN0
Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpO1xuICBpZiAocm9vdEVsKSB7XG4gICAg
dmFyIGluc3QgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShyb290
RWwpO1xuICAgIHJldHVybiAhIShpbnN0ICYmIGluc3QuX2hvc3RQYXJlbnQpO1xuICB9XG59XG5c
bi8qKlxuICogVHJ1ZSBpZiB0aGUgc3VwcGxpZWQgRE9NIG5vZGUgaXMgYSBSZWFjdCBET00gZWxl
bWVudCBhbmRcbiAqIGl0IGhhcyBiZWVuIHJlbmRlcmVkIGJ5IGFub3RoZXIgY29weSBvZiBSZWFj
dC5cbiAqXG4gKiBAcGFyYW0gez9ET01FbGVtZW50fSBub2RlIFRoZSBjYW5kaWRhdGUgRE9NIG5v
ZGUuXG4gKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBET00gaGFzIGJlZW4gcmVuZGVy
ZWQgYnkgYW5vdGhlciBjb3B5IG9mIFJlYWN0XG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24g
bm9kZUlzUmVuZGVyZWRCeU90aGVySW5zdGFuY2UoY29udGFpbmVyKSB7XG4gIHZhciByb290RWwg
PSBnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIoY29udGFpbmVyKTtcbiAgcmV0dXJuICEh
KHJvb3RFbCAmJiBpc1JlYWN0Tm9kZShyb290RWwpICYmICFSZWFjdERPTUNvbXBvbmVudFRyZWUu
Z2V0SW5zdGFuY2VGcm9tTm9kZShyb290RWwpKTtcbn1cblxuLyoqXG4gKiBUcnVlIGlmIHRoZSBz
dXBwbGllZCBET00gbm9kZSBpcyBhIHZhbGlkIG5vZGUgZWxlbWVudC5cbiAqXG4gKiBAcGFyYW0g
ez9ET01FbGVtZW50fSBub2RlIFRoZSBjYW5kaWRhdGUgRE9NIG5vZGUuXG4gKiBAcmV0dXJuIHti
b29sZWFufSBUcnVlIGlmIHRoZSBET00gaXMgYSB2YWxpZCBET00gbm9kZS5cbiAqIEBpbnRlcm5h
bFxuICovXG5mdW5jdGlvbiBpc1ZhbGlkQ29udGFpbmVyKG5vZGUpIHtcbiAgcmV0dXJuICEhKG5v
ZGUgJiYgKG5vZGUubm9kZVR5cGUgPT09IEVMRU1FTlRfTk9ERV9UWVBFIHx8IG5vZGUubm9kZVR5
cGUgPT09IERPQ19OT0RFX1RZUEUgfHwgbm9kZS5ub2RlVHlwZSA9PT0gRE9DVU1FTlRfRlJBR01F
TlRfTk9ERV9UWVBFKSk7XG59XG5cbi8qKlxuICogVHJ1ZSBpZiB0aGUgc3VwcGxpZWQgRE9NIG5v
ZGUgaXMgYSB2YWxpZCBSZWFjdCBub2RlIGVsZW1lbnQuXG4gKlxuICogQHBhcmFtIHs/RE9NRWxl
bWVudH0gbm9kZSBUaGUgY2FuZGlkYXRlIERPTSBub2RlLlxuICogQHJldHVybiB7Ym9vbGVhbn0g
VHJ1ZSBpZiB0aGUgRE9NIGlzIGEgdmFsaWQgUmVhY3QgRE9NIG5vZGUuXG4gKiBAaW50ZXJuYWxc
biAqL1xuZnVuY3Rpb24gaXNSZWFjdE5vZGUobm9kZSkge1xuICByZXR1cm4gaXNWYWxpZENvbnRh
aW5lcihub2RlKSAmJiAobm9kZS5oYXNBdHRyaWJ1dGUoUk9PVF9BVFRSX05BTUUpIHx8IG5vZGUu
aGFzQXR0cmlidXRlKEFUVFJfTkFNRSkpO1xufVxuXG5mdW5jdGlvbiBnZXRIb3N0Um9vdEluc3Rh
bmNlSW5Db250YWluZXIoY29udGFpbmVyKSB7XG4gIHZhciByb290RWwgPSBnZXRSZWFjdFJvb3RF
bGVtZW50SW5Db250YWluZXIoY29udGFpbmVyKTtcbiAgdmFyIHByZXZIb3N0SW5zdGFuY2UgPSBy
b290RWwgJiYgUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUocm9vdEVs
KTtcbiAgcmV0dXJuIHByZXZIb3N0SW5zdGFuY2UgJiYgIXByZXZIb3N0SW5zdGFuY2UuX2hvc3RQ
YXJlbnQgPyBwcmV2SG9zdEluc3RhbmNlIDogbnVsbDtcbn1cblxuZnVuY3Rpb24gZ2V0VG9wTGV2
ZWxXcmFwcGVySW5Db250YWluZXIoY29udGFpbmVyKSB7XG4gIHZhciByb290ID0gZ2V0SG9zdFJv
b3RJbnN0YW5jZUluQ29udGFpbmVyKGNvbnRhaW5lcik7XG4gIHJldHVybiByb290ID8gcm9vdC5f
aG9zdENvbnRhaW5lckluZm8uX3RvcExldmVsV3JhcHBlciA6IG51bGw7XG59XG5cbi8qKlxuICog
VGVtcG9yYXJ5ICg/KSBoYWNrIHNvIHRoYXQgd2UgY2FuIHN0b3JlIGFsbCB0b3AtbGV2ZWwgcGVu
ZGluZyB1cGRhdGVzIG9uXG4gKiBjb21wb3NpdGVzIGluc3RlYWQgb2YgaGF2aW5nIHRvIHdvcnJ5
IGFib3V0IGRpZmZlcmVudCB0eXBlcyBvZiBjb21wb25lbnRzXG4gKiBoZXJlLlxuICovXG52YXIg
dG9wTGV2ZWxSb290Q291bnRlciA9IDE7XG52YXIgVG9wTGV2ZWxXcmFwcGVyID0gZnVuY3Rpb24g
KCkge1xuICB0aGlzLnJvb3RJRCA9IHRvcExldmVsUm9vdENvdW50ZXIrKztcbn07XG5Ub3BMZXZl
bFdyYXBwZXIucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQgPSB7fTtcbmlmIChwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIFRvcExldmVsV3JhcHBlci5kaXNwbGF5
TmFtZSA9ICdUb3BMZXZlbFdyYXBwZXInO1xufVxuVG9wTGV2ZWxXcmFwcGVyLnByb3RvdHlwZS5y
ZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0aGlzLnByb3BzLmNoaWxkO1xufTtcblRv
cExldmVsV3JhcHBlci5pc1JlYWN0VG9wTGV2ZWxXcmFwcGVyID0gdHJ1ZTtcblxuLyoqXG4gKiBN
b3VudGluZyBpcyB0aGUgcHJvY2VzcyBvZiBpbml0aWFsaXppbmcgYSBSZWFjdCBjb21wb25lbnQg
YnkgY3JlYXRpbmcgaXRzXG4gKiByZXByZXNlbnRhdGl2ZSBET00gZWxlbWVudHMgYW5kIGluc2Vy
dGluZyB0aGVtIGludG8gYSBzdXBwbGllZCBgY29udGFpbmVyYC5cbiAqIEFueSBwcmlvciBjb250
ZW50IGluc2lkZSBgY29udGFpbmVyYCBpcyBkZXN0cm95ZWQgaW4gdGhlIHByb2Nlc3MuXG4gKlxu
ICogICBSZWFjdE1vdW50LnJlbmRlcihcbiAqICAgICBjb21wb25lbnQsXG4gKiAgICAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnRhaW5lcicpXG4gKiAgICk7XG4gKlxuICogICA8ZGl2IGlk
PVwiY29udGFpbmVyXCI+ICAgICAgICAgICAgICAgICAgIDwtLSBTdXBwbGllZCBgY29udGFpbmVy
YC5cbiAqICAgICA8ZGl2IGRhdGEtcmVhY3RpZD1cIi4zXCI+ICAgICAgICAgICAgICA8LS0gUmVu
ZGVyZWQgcmVhY3RSb290IG9mIFJlYWN0XG4gKiAgICAgICAvLyAuLi4gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb21wb25lbnQuXG4gKiAgICAgPC9kaXY+XG4gKiAgIDwvZGl2Plxu
ICpcbiAqIEluc2lkZSBvZiBgY29udGFpbmVyYCwgdGhlIGZpcnN0IGVsZW1lbnQgcmVuZGVyZWQg
aXMgdGhlIFwicmVhY3RSb290XCIuXG4gKi9cbnZhciBSZWFjdE1vdW50ID0ge1xuICBUb3BMZXZl
bFdyYXBwZXI6IFRvcExldmVsV3JhcHBlcixcblxuICAvKipcbiAgICogVXNlZCBieSBkZXZ0b29s
cy4gVGhlIGtleXMgYXJlIG5vdCBpbXBvcnRhbnQuXG4gICAqL1xuICBfaW5zdGFuY2VzQnlSZWFj
dFJvb3RJRDogaW5zdGFuY2VzQnlSZWFjdFJvb3RJRCxcblxuICAvKipcbiAgICogVGhpcyBpcyBh
IGhvb2sgcHJvdmlkZWQgdG8gc3VwcG9ydCByZW5kZXJpbmcgUmVhY3QgY29tcG9uZW50cyB3aGls
ZVxuICAgKiBlbnN1cmluZyB0aGF0IHRoZSBhcHBhcmVudCBzY3JvbGwgcG9zaXRpb24gb2YgaXRz
IGBjb250YWluZXJgIGRvZXMgbm90XG4gICAqIGNoYW5nZS5cbiAgICpcbiAgICogQHBhcmFtIHtE
T01FbGVtZW50fSBjb250YWluZXIgVGhlIGBjb250YWluZXJgIGJlaW5nIHJlbmRlcmVkIGludG8u
XG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IHJlbmRlckNhbGxiYWNrIFRoaXMgbXVzdCBiZSBjYWxs
ZWQgb25jZSB0byBkbyB0aGUgcmVuZGVyLlxuICAgKi9cbiAgc2Nyb2xsTW9uaXRvcjogZnVuY3Rp
b24gKGNvbnRhaW5lciwgcmVuZGVyQ2FsbGJhY2spIHtcbiAgICByZW5kZXJDYWxsYmFjaygpO1xu
ICB9LFxuXG4gIC8qKlxuICAgKiBUYWtlIGEgY29tcG9uZW50IHRoYXQncyBhbHJlYWR5IG1vdW50
ZWQgaW50byB0aGUgRE9NIGFuZCByZXBsYWNlIGl0cyBwcm9wc1xuICAgKiBAcGFyYW0ge1JlYWN0
Q29tcG9uZW50fSBwcmV2Q29tcG9uZW50IGNvbXBvbmVudCBpbnN0YW5jZSBhbHJlYWR5IGluIHRo
ZSBET01cbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50IGNvbXBvbmVudCBp
bnN0YW5jZSB0byByZW5kZXJcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgY29u
dGFpbmVyIHRvIHJlbmRlciBpbnRvXG4gICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBm
dW5jdGlvbiB0cmlnZ2VyZWQgb24gY29tcGxldGlvblxuICAgKi9cbiAgX3VwZGF0ZVJvb3RDb21w
b25lbnQ6IGZ1bmN0aW9uIChwcmV2Q29tcG9uZW50LCBuZXh0RWxlbWVudCwgbmV4dENvbnRleHQs
IGNvbnRhaW5lciwgY2FsbGJhY2spIHtcbiAgICBSZWFjdE1vdW50LnNjcm9sbE1vbml0b3IoY29u
dGFpbmVyLCBmdW5jdGlvbiAoKSB7XG4gICAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVFbGVt
ZW50SW50ZXJuYWwocHJldkNvbXBvbmVudCwgbmV4dEVsZW1lbnQsIG5leHRDb250ZXh0KTtcbiAg
ICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVDYWxs
YmFja0ludGVybmFsKHByZXZDb21wb25lbnQsIGNhbGxiYWNrKTtcbiAgICAgIH1cbiAgICB9KTtc
blxuICAgIHJldHVybiBwcmV2Q29tcG9uZW50O1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZW5kZXIg
YSBuZXcgY29tcG9uZW50IGludG8gdGhlIERPTS4gSG9va2VkIGJ5IGhvb2tzIVxuICAgKlxuICAg
KiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnQgZWxlbWVudCB0byByZW5kZXJcbiAg
ICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgY29udGFpbmVyIHRvIHJlbmRlciBpbnRv
XG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hvdWxkUmV1c2VNYXJrdXAgaWYgd2Ugc2hvdWxkIHNr
aXAgdGhlIG1hcmt1cCBpbnNlcnRpb25cbiAgICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9IG5l
eHRDb21wb25lbnRcbiAgICovXG4gIF9yZW5kZXJOZXdSb290Q29tcG9uZW50OiBmdW5jdGlvbiAo
bmV4dEVsZW1lbnQsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXAsIGNvbnRleHQpIHtcbiAg
ICAvLyBWYXJpb3VzIHBhcnRzIG9mIG91ciBjb2RlIChzdWNoIGFzIFJlYWN0Q29tcG9zaXRlQ29t
cG9uZW50J3NcbiAgICAvLyBfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KSBhc3N1bWUgdGhhdCBj
YWxscyB0byByZW5kZXIgYXJlbid0IG5lc3RlZDtcbiAgICAvLyB2ZXJpZnkgdGhhdCB0aGF0J3Mg
dGhlIGNhc2UuXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdh
cm5pbmcoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9PSBudWxsLCAnX3JlbmRlck5ld1Jvb3RD
b21wb25lbnQoKTogUmVuZGVyIG1ldGhvZHMgc2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlvbiAnICsg
J29mIHByb3BzIGFuZCBzdGF0ZTsgdHJpZ2dlcmluZyBuZXN0ZWQgY29tcG9uZW50IHVwZGF0ZXMg
ZnJvbSAnICsgJ3JlbmRlciBpcyBub3QgYWxsb3dlZC4gSWYgbmVjZXNzYXJ5LCB0cmlnZ2VyIG5l
c3RlZCB1cGRhdGVzIGluICcgKyAnY29tcG9uZW50RGlkVXBkYXRlLiBDaGVjayB0aGUgcmVuZGVy
IG1ldGhvZCBvZiAlcy4nLCBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ICYmIFJlYWN0Q3VycmVu
dE93bmVyLmN1cnJlbnQuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDog
dm9pZCAwO1xuXG4gICAgIWlzVmFsaWRDb250YWluZXIoY29udGFpbmVyKSA/IHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdfcmVnaXN0ZXJD
b21wb25lbnQoLi4uKTogVGFyZ2V0IGNvbnRhaW5lciBpcyBub3QgYSBET00gZWxlbWVudC4nKSA6
IF9wcm9kSW52YXJpYW50KCczNycpIDogdm9pZCAwO1xuXG4gICAgUmVhY3RCcm93c2VyRXZlbnRF
bWl0dGVyLmVuc3VyZVNjcm9sbFZhbHVlTW9uaXRvcmluZygpO1xuICAgIHZhciBjb21wb25lbnRJ
bnN0YW5jZSA9IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQobmV4dEVsZW1lbnQsIGZhbHNlKTtc
blxuICAgIC8vIFRoZSBpbml0aWFsIHJlbmRlciBpcyBzeW5jaHJvbm91cyBidXQgYW55IHVwZGF0
ZXMgdGhhdCBoYXBwZW4gZHVyaW5nXG4gICAgLy8gcmVuZGVyaW5nLCBpbiBjb21wb25lbnRXaWxs
TW91bnQgb3IgY29tcG9uZW50RGlkTW91bnQsIHdpbGwgYmUgYmF0Y2hlZFxuICAgIC8vIGFjY29y
ZGluZyB0byB0aGUgY3VycmVudCBiYXRjaGluZyBzdHJhdGVneS5cblxuICAgIFJlYWN0VXBkYXRl
cy5iYXRjaGVkVXBkYXRlcyhiYXRjaGVkTW91bnRDb21wb25lbnRJbnRvTm9kZSwgY29tcG9uZW50
SW5zdGFuY2UsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXAsIGNvbnRleHQpO1xuXG4gICAg
dmFyIHdyYXBwZXJJRCA9IGNvbXBvbmVudEluc3RhbmNlLl9pbnN0YW5jZS5yb290SUQ7XG4gICAg
aW5zdGFuY2VzQnlSZWFjdFJvb3RJRFt3cmFwcGVySURdID0gY29tcG9uZW50SW5zdGFuY2U7XG5c
biAgICByZXR1cm4gY29tcG9uZW50SW5zdGFuY2U7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFJlbmRl
cnMgYSBSZWFjdCBjb21wb25lbnQgaW50byB0aGUgRE9NIGluIHRoZSBzdXBwbGllZCBgY29udGFp
bmVyYC5cbiAgICpcbiAgICogSWYgdGhlIFJlYWN0IGNvbXBvbmVudCB3YXMgcHJldmlvdXNseSBy
ZW5kZXJlZCBpbnRvIGBjb250YWluZXJgLCB0aGlzIHdpbGxcbiAgICogcGVyZm9ybSBhbiB1cGRh
dGUgb24gaXQgYW5kIG9ubHkgbXV0YXRlIHRoZSBET00gYXMgbmVjZXNzYXJ5IHRvIHJlZmxlY3Qg
dGhlXG4gICAqIGxhdGVzdCBSZWFjdCBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVh
Y3RDb21wb25lbnR9IHBhcmVudENvbXBvbmVudCBUaGUgY29uY2VwdHVhbCBwYXJlbnQgb2YgdGhp
cyByZW5kZXIgdHJlZS5cbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50IENv
bXBvbmVudCBlbGVtZW50IHRvIHJlbmRlci5cbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBjb250
YWluZXIgRE9NIGVsZW1lbnQgdG8gcmVuZGVyIGludG8uXG4gICAqIEBwYXJhbSB7P2Z1bmN0aW9u
fSBjYWxsYmFjayBmdW5jdGlvbiB0cmlnZ2VyZWQgb24gY29tcGxldGlvblxuICAgKiBAcmV0dXJu
IHtSZWFjdENvbXBvbmVudH0gQ29tcG9uZW50IGluc3RhbmNlIHJlbmRlcmVkIGluIGBjb250YWlu
ZXJgLlxuICAgKi9cbiAgcmVuZGVyU3VidHJlZUludG9Db250YWluZXI6IGZ1bmN0aW9uIChwYXJl
bnRDb21wb25lbnQsIG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKSB7XG4gICAgIShw
YXJlbnRDb21wb25lbnQgIT0gbnVsbCAmJiBSZWFjdEluc3RhbmNlTWFwLmhhcyhwYXJlbnRDb21w
b25lbnQpKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlh
bnQoZmFsc2UsICdwYXJlbnRDb21wb25lbnQgbXVzdCBiZSBhIHZhbGlkIFJlYWN0IENvbXBvbmVu
dCcpIDogX3Byb2RJbnZhcmlhbnQoJzM4JykgOiB2b2lkIDA7XG4gICAgcmV0dXJuIFJlYWN0TW91
bnQuX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyKHBhcmVudENvbXBvbmVudCwgbmV4dEVsZW1l
bnQsIGNvbnRhaW5lciwgY2FsbGJhY2spO1xuICB9LFxuXG4gIF9yZW5kZXJTdWJ0cmVlSW50b0Nv
bnRhaW5lcjogZnVuY3Rpb24gKHBhcmVudENvbXBvbmVudCwgbmV4dEVsZW1lbnQsIGNvbnRhaW5l
ciwgY2FsbGJhY2spIHtcbiAgICBSZWFjdFVwZGF0ZVF1ZXVlLnZhbGlkYXRlQ2FsbGJhY2soY2Fs
bGJhY2ssICdSZWFjdERPTS5yZW5kZXInKTtcbiAgICAhUmVhY3QuaXNWYWxpZEVsZW1lbnQobmV4
dEVsZW1lbnQpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFy
aWFudChmYWxzZSwgJ1JlYWN0RE9NLnJlbmRlcigpOiBJbnZhbGlkIGNvbXBvbmVudCBlbGVtZW50
LiVzJywgdHlwZW9mIG5leHRFbGVtZW50ID09PSAnc3RyaW5nJyA/IFwiIEluc3RlYWQgb2YgcGFz
c2luZyBhIHN0cmluZyBsaWtlICdkaXYnLCBwYXNzIFwiICsgXCJSZWFjdC5jcmVhdGVFbGVtZW50
KCdkaXYnKSBvciA8ZGl2IC8+LlwiIDogdHlwZW9mIG5leHRFbGVtZW50ID09PSAnZnVuY3Rpb24n
ID8gJyBJbnN0ZWFkIG9mIHBhc3NpbmcgYSBjbGFzcyBsaWtlIEZvbywgcGFzcyAnICsgJ1JlYWN0
LmNyZWF0ZUVsZW1lbnQoRm9vKSBvciA8Rm9vIC8+LicgOiAvLyBDaGVjayBpZiBpdCBxdWFja3Mg
bGlrZSBhbiBlbGVtZW50XG4gICAgbmV4dEVsZW1lbnQgIT0gbnVsbCAmJiBuZXh0RWxlbWVudC5w
cm9wcyAhPT0gdW5kZWZpbmVkID8gJyBUaGlzIG1heSBiZSBjYXVzZWQgYnkgdW5pbnRlbnRpb25h
bGx5IGxvYWRpbmcgdHdvIGluZGVwZW5kZW50ICcgKyAnY29waWVzIG9mIFJlYWN0LicgOiAnJykg
OiBfcHJvZEludmFyaWFudCgnMzknLCB0eXBlb2YgbmV4dEVsZW1lbnQgPT09ICdzdHJpbmcnID8g
XCIgSW5zdGVhZCBvZiBwYXNzaW5nIGEgc3RyaW5nIGxpa2UgJ2RpdicsIHBhc3MgXCIgKyBcIlJl
YWN0LmNyZWF0ZUVsZW1lbnQoJ2RpdicpIG9yIDxkaXYgLz4uXCIgOiB0eXBlb2YgbmV4dEVsZW1l
bnQgPT09ICdmdW5jdGlvbicgPyAnIEluc3RlYWQgb2YgcGFzc2luZyBhIGNsYXNzIGxpa2UgRm9v
LCBwYXNzICcgKyAnUmVhY3QuY3JlYXRlRWxlbWVudChGb28pIG9yIDxGb28gLz4uJyA6IG5leHRF
bGVtZW50ICE9IG51bGwgJiYgbmV4dEVsZW1lbnQucHJvcHMgIT09IHVuZGVmaW5lZCA/ICcgVGhp
cyBtYXkgYmUgY2F1c2VkIGJ5IHVuaW50ZW50aW9uYWxseSBsb2FkaW5nIHR3byBpbmRlcGVuZGVu
dCAnICsgJ2NvcGllcyBvZiBSZWFjdC4nIDogJycpIDogdm9pZCAwO1xuXG4gICAgcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWNvbnRhaW5lciB8fCAhY29u
dGFpbmVyLnRhZ05hbWUgfHwgY29udGFpbmVyLnRhZ05hbWUudG9VcHBlckNhc2UoKSAhPT0gJ0JP
RFknLCAncmVuZGVyKCk6IFJlbmRlcmluZyBjb21wb25lbnRzIGRpcmVjdGx5IGludG8gZG9jdW1l
bnQuYm9keSBpcyAnICsgJ2Rpc2NvdXJhZ2VkLCBzaW5jZSBpdHMgY2hpbGRyZW4gYXJlIG9mdGVu
IG1hbmlwdWxhdGVkIGJ5IHRoaXJkLXBhcnR5ICcgKyAnc2NyaXB0cyBhbmQgYnJvd3NlciBleHRl
bnNpb25zLiBUaGlzIG1heSBsZWFkIHRvIHN1YnRsZSAnICsgJ3JlY29uY2lsaWF0aW9uIGlzc3Vl
cy4gVHJ5IHJlbmRlcmluZyBpbnRvIGEgY29udGFpbmVyIGVsZW1lbnQgY3JlYXRlZCAnICsgJ2Zv
ciB5b3VyIGFwcC4nKSA6IHZvaWQgMDtcblxuICAgIHZhciBuZXh0V3JhcHBlZEVsZW1lbnQgPSBS
ZWFjdC5jcmVhdGVFbGVtZW50KFRvcExldmVsV3JhcHBlciwge1xuICAgICAgY2hpbGQ6IG5leHRF
bGVtZW50XG4gICAgfSk7XG5cbiAgICB2YXIgbmV4dENvbnRleHQ7XG4gICAgaWYgKHBhcmVudENv
bXBvbmVudCkge1xuICAgICAgdmFyIHBhcmVudEluc3QgPSBSZWFjdEluc3RhbmNlTWFwLmdldChw
YXJlbnRDb21wb25lbnQpO1xuICAgICAgbmV4dENvbnRleHQgPSBwYXJlbnRJbnN0Ll9wcm9jZXNz
Q2hpbGRDb250ZXh0KHBhcmVudEluc3QuX2NvbnRleHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBu
ZXh0Q29udGV4dCA9IGVtcHR5T2JqZWN0O1xuICAgIH1cblxuICAgIHZhciBwcmV2Q29tcG9uZW50
ID0gZ2V0VG9wTGV2ZWxXcmFwcGVySW5Db250YWluZXIoY29udGFpbmVyKTtcblxuICAgIGlmIChw
cmV2Q29tcG9uZW50KSB7XG4gICAgICB2YXIgcHJldldyYXBwZWRFbGVtZW50ID0gcHJldkNvbXBv
bmVudC5fY3VycmVudEVsZW1lbnQ7XG4gICAgICB2YXIgcHJldkVsZW1lbnQgPSBwcmV2V3JhcHBl
ZEVsZW1lbnQucHJvcHMuY2hpbGQ7XG4gICAgICBpZiAoc2hvdWxkVXBkYXRlUmVhY3RDb21wb25l
bnQocHJldkVsZW1lbnQsIG5leHRFbGVtZW50KSkge1xuICAgICAgICB2YXIgcHVibGljSW5zdCA9
IHByZXZDb21wb25lbnQuX3JlbmRlcmVkQ29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCk7XG4g
ICAgICAgIHZhciB1cGRhdGVkQ2FsbGJhY2sgPSBjYWxsYmFjayAmJiBmdW5jdGlvbiAoKSB7XG4g
ICAgICAgICAgY2FsbGJhY2suY2FsbChwdWJsaWNJbnN0KTtcbiAgICAgICAgfTtcbiAgICAgICAg
UmVhY3RNb3VudC5fdXBkYXRlUm9vdENvbXBvbmVudChwcmV2Q29tcG9uZW50LCBuZXh0V3JhcHBl
ZEVsZW1lbnQsIG5leHRDb250ZXh0LCBjb250YWluZXIsIHVwZGF0ZWRDYWxsYmFjayk7XG4gICAg
ICAgIHJldHVybiBwdWJsaWNJbnN0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgUmVhY3RNb3Vu
dC51bm1vdW50Q29tcG9uZW50QXROb2RlKGNvbnRhaW5lcik7XG4gICAgICB9XG4gICAgfVxuXG4g
ICAgdmFyIHJlYWN0Um9vdEVsZW1lbnQgPSBnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIo
Y29udGFpbmVyKTtcbiAgICB2YXIgY29udGFpbmVySGFzUmVhY3RNYXJrdXAgPSByZWFjdFJvb3RF
bGVtZW50ICYmICEhaW50ZXJuYWxHZXRJRChyZWFjdFJvb3RFbGVtZW50KTtcbiAgICB2YXIgY29u
dGFpbmVySGFzTm9uUm9vdFJlYWN0Q2hpbGQgPSBoYXNOb25Sb290UmVhY3RDaGlsZChjb250YWlu
ZXIpO1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtc
biAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFj
b250YWluZXJIYXNOb25Sb290UmVhY3RDaGlsZCwgJ3JlbmRlciguLi4pOiBSZXBsYWNpbmcgUmVh
Y3QtcmVuZGVyZWQgY2hpbGRyZW4gd2l0aCBhIG5ldyByb290ICcgKyAnY29tcG9uZW50LiBJZiB5
b3UgaW50ZW5kZWQgdG8gdXBkYXRlIHRoZSBjaGlsZHJlbiBvZiB0aGlzIG5vZGUsICcgKyAneW91
IHNob3VsZCBpbnN0ZWFkIGhhdmUgdGhlIGV4aXN0aW5nIGNoaWxkcmVuIHVwZGF0ZSB0aGVpciBz
dGF0ZSAnICsgJ2FuZCByZW5kZXIgdGhlIG5ldyBjb21wb25lbnRzIGluc3RlYWQgb2YgY2FsbGlu
ZyBSZWFjdERPTS5yZW5kZXIuJykgOiB2b2lkIDA7XG5cbiAgICAgIGlmICghY29udGFpbmVySGFz
UmVhY3RNYXJrdXAgfHwgcmVhY3RSb290RWxlbWVudC5uZXh0U2libGluZykge1xuICAgICAgICB2
YXIgcm9vdEVsZW1lbnRTaWJsaW5nID0gcmVhY3RSb290RWxlbWVudDtcbiAgICAgICAgd2hpbGUg
KHJvb3RFbGVtZW50U2libGluZykge1xuICAgICAgICAgIGlmIChpbnRlcm5hbEdldElEKHJvb3RF
bGVtZW50U2libGluZykpIHtcbiAgICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAncmVuZGVyKCk6IFRhcmdldCBub2RlIGhhcyBt
YXJrdXAgcmVuZGVyZWQgYnkgUmVhY3QsIGJ1dCB0aGVyZSAnICsgJ2FyZSB1bnJlbGF0ZWQgbm9k
ZXMgYXMgd2VsbC4gVGhpcyBpcyBtb3N0IGNvbW1vbmx5IGNhdXNlZCBieSAnICsgJ3doaXRlLXNw
YWNlIGluc2VydGVkIGFyb3VuZCBzZXJ2ZXItcmVuZGVyZWQgbWFya3VwLicpIDogdm9pZCAwO1xu
ICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJvb3RFbGVtZW50U2li
bGluZyA9IHJvb3RFbGVtZW50U2libGluZy5uZXh0U2libGluZztcbiAgICAgICAgfVxuICAgICAg
fVxuICAgIH1cblxuICAgIHZhciBzaG91bGRSZXVzZU1hcmt1cCA9IGNvbnRhaW5lckhhc1JlYWN0
TWFya3VwICYmICFwcmV2Q29tcG9uZW50ICYmICFjb250YWluZXJIYXNOb25Sb290UmVhY3RDaGls
ZDtcbiAgICB2YXIgY29tcG9uZW50ID0gUmVhY3RNb3VudC5fcmVuZGVyTmV3Um9vdENvbXBvbmVu
dChuZXh0V3JhcHBlZEVsZW1lbnQsIGNvbnRhaW5lciwgc2hvdWxkUmV1c2VNYXJrdXAsIG5leHRD
b250ZXh0KS5fcmVuZGVyZWRDb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKTtcbiAgICBpZiAo
Y2FsbGJhY2spIHtcbiAgICAgIGNhbGxiYWNrLmNhbGwoY29tcG9uZW50KTtcbiAgICB9XG4gICAg
cmV0dXJuIGNvbXBvbmVudDtcbiAgfSxcblxuICAvKipcbiAgICogUmVuZGVycyBhIFJlYWN0IGNv
bXBvbmVudCBpbnRvIHRoZSBET00gaW4gdGhlIHN1cHBsaWVkIGBjb250YWluZXJgLlxuICAgKiBT
ZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0
bWwjcmVhY3Rkb20ucmVuZGVyXG4gICAqXG4gICAqIElmIHRoZSBSZWFjdCBjb21wb25lbnQgd2Fz
IHByZXZpb3VzbHkgcmVuZGVyZWQgaW50byBgY29udGFpbmVyYCwgdGhpcyB3aWxsXG4gICAqIHBl
cmZvcm0gYW4gdXBkYXRlIG9uIGl0IGFuZCBvbmx5IG11dGF0ZSB0aGUgRE9NIGFzIG5lY2Vzc2Fy
eSB0byByZWZsZWN0IHRoZVxuICAgKiBsYXRlc3QgUmVhY3QgY29tcG9uZW50LlxuICAgKlxuICAg
KiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnQgQ29tcG9uZW50IGVsZW1lbnQgdG8g
cmVuZGVyLlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRhaW5lciBET00gZWxlbWVudCB0
byByZW5kZXIgaW50by5cbiAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIGZ1bmN0aW9u
IHRyaWdnZXJlZCBvbiBjb21wbGV0aW9uXG4gICAqIEByZXR1cm4ge1JlYWN0Q29tcG9uZW50fSBD
b21wb25lbnQgaW5zdGFuY2UgcmVuZGVyZWQgaW4gYGNvbnRhaW5lcmAuXG4gICAqL1xuICByZW5k
ZXI6IGZ1bmN0aW9uIChuZXh0RWxlbWVudCwgY29udGFpbmVyLCBjYWxsYmFjaykge1xuICAgIHJl
dHVybiBSZWFjdE1vdW50Ll9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcihudWxsLCBuZXh0RWxl
bWVudCwgY29udGFpbmVyLCBjYWxsYmFjayk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFVubW91bnRz
IGFuZCBkZXN0cm95cyB0aGUgUmVhY3QgY29tcG9uZW50IHJlbmRlcmVkIGluIHRoZSBgY29udGFp
bmVyYC5cbiAgICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9w
LWxldmVsLWFwaS5odG1sI3JlYWN0ZG9tLnVubW91bnRjb21wb25lbnRhdG5vZGVcbiAgICpcbiAg
ICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgY29udGFpbmluZyBh
IFJlYWN0IGNvbXBvbmVudC5cbiAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBhIGNvbXBv
bmVudCB3YXMgZm91bmQgaW4gYW5kIHVubW91bnRlZCBmcm9tXG4gICAqICAgICAgICAgICAgICAg
ICAgIGBjb250YWluZXJgXG4gICAqL1xuICB1bm1vdW50Q29tcG9uZW50QXROb2RlOiBmdW5jdGlv
biAoY29udGFpbmVyKSB7XG4gICAgLy8gVmFyaW91cyBwYXJ0cyBvZiBvdXIgY29kZSAoc3VjaCBh
cyBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCdzXG4gICAgLy8gX3JlbmRlclZhbGlkYXRlZENvbXBv
bmVudCkgYXNzdW1lIHRoYXQgY2FsbHMgdG8gcmVuZGVyIGFyZW4ndCBuZXN0ZWQ7XG4gICAgLy8g
dmVyaWZ5IHRoYXQgdGhhdCdzIHRoZSBjYXNlLiAoU3RyaWN0bHkgc3BlYWtpbmcsIHVubW91bnRp
bmcgd29uJ3QgY2F1c2UgYVxuICAgIC8vIHJlbmRlciBidXQgd2Ugc3RpbGwgZG9uJ3QgZXhwZWN0
IHRvIGJlIGluIGEgcmVuZGVyIGNhbGwgaGVyZS4pXG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9PSBu
dWxsLCAndW5tb3VudENvbXBvbmVudEF0Tm9kZSgpOiBSZW5kZXIgbWV0aG9kcyBzaG91bGQgYmUg
YSBwdXJlIGZ1bmN0aW9uICcgKyAnb2YgcHJvcHMgYW5kIHN0YXRlOyB0cmlnZ2VyaW5nIG5lc3Rl
ZCBjb21wb25lbnQgdXBkYXRlcyBmcm9tIHJlbmRlciAnICsgJ2lzIG5vdCBhbGxvd2VkLiBJZiBu
ZWNlc3NhcnksIHRyaWdnZXIgbmVzdGVkIHVwZGF0ZXMgaW4gJyArICdjb21wb25lbnREaWRVcGRh
dGUuIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mICVzLicsIFJlYWN0Q3VycmVudE93bmVyLmN1
cnJlbnQgJiYgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5nZXROYW1lKCkgfHwgJ1JlYWN0Q29t
cG9zaXRlQ29tcG9uZW50JykgOiB2b2lkIDA7XG5cbiAgICAhaXNWYWxpZENvbnRhaW5lcihjb250
YWluZXIpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFu
dChmYWxzZSwgJ3VubW91bnRDb21wb25lbnRBdE5vZGUoLi4uKTogVGFyZ2V0IGNvbnRhaW5lciBp
cyBub3QgYSBET00gZWxlbWVudC4nKSA6IF9wcm9kSW52YXJpYW50KCc0MCcpIDogdm9pZCAwO1xu
XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAg
IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFub2RlSXNS
ZW5kZXJlZEJ5T3RoZXJJbnN0YW5jZShjb250YWluZXIpLCBcInVubW91bnRDb21wb25lbnRBdE5v
ZGUoKTogVGhlIG5vZGUgeW91J3JlIGF0dGVtcHRpbmcgdG8gdW5tb3VudCBcIiArICd3YXMgcmVu
ZGVyZWQgYnkgYW5vdGhlciBjb3B5IG9mIFJlYWN0LicpIDogdm9pZCAwO1xuICAgIH1cblxuICAg
IHZhciBwcmV2Q29tcG9uZW50ID0gZ2V0VG9wTGV2ZWxXcmFwcGVySW5Db250YWluZXIoY29udGFp
bmVyKTtcbiAgICBpZiAoIXByZXZDb21wb25lbnQpIHtcbiAgICAgIC8vIENoZWNrIGlmIHRoZSBu
b2RlIGJlaW5nIHVubW91bnRlZCB3YXMgcmVuZGVyZWQgYnkgUmVhY3QsIGJ1dCBpc24ndCBhXG4g
ICAgICAvLyByb290IG5vZGUuXG4gICAgICB2YXIgY29udGFpbmVySGFzTm9uUm9vdFJlYWN0Q2hp
bGQgPSBoYXNOb25Sb290UmVhY3RDaGlsZChjb250YWluZXIpO1xuXG4gICAgICAvLyBDaGVjayBp
ZiB0aGUgY29udGFpbmVyIGl0c2VsZiBpcyBhIFJlYWN0IHJvb3Qgbm9kZS5cbiAgICAgIHZhciBp
c0NvbnRhaW5lclJlYWN0Um9vdCA9IGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gMSAmJiBjb250YWlu
ZXIuaGFzQXR0cmlidXRlKFJPT1RfQVRUUl9OQU1FKTtcblxuICAgICAgaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWNvbnRhaW5lckhhc05vblJvb3RSZWFjdENo
aWxkLCBcInVubW91bnRDb21wb25lbnRBdE5vZGUoKTogVGhlIG5vZGUgeW91J3JlIGF0dGVtcHRp
bmcgdG8gdW5tb3VudCBcIiArICd3YXMgcmVuZGVyZWQgYnkgUmVhY3QgYW5kIGlzIG5vdCBhIHRv
cC1sZXZlbCBjb250YWluZXIuICVzJywgaXNDb250YWluZXJSZWFjdFJvb3QgPyAnWW91IG1heSBo
YXZlIGFjY2lkZW50YWxseSBwYXNzZWQgaW4gYSBSZWFjdCByb290IG5vZGUgaW5zdGVhZCAnICsg
J29mIGl0cyBjb250YWluZXIuJyA6ICdJbnN0ZWFkLCBoYXZlIHRoZSBwYXJlbnQgY29tcG9uZW50
IHVwZGF0ZSBpdHMgc3RhdGUgYW5kICcgKyAncmVyZW5kZXIgaW4gb3JkZXIgdG8gcmVtb3ZlIHRo
aXMgY29tcG9uZW50LicpIDogdm9pZCAwO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZmFsc2U7
XG4gICAgfVxuICAgIGRlbGV0ZSBpbnN0YW5jZXNCeVJlYWN0Um9vdElEW3ByZXZDb21wb25lbnQu
X2luc3RhbmNlLnJvb3RJRF07XG4gICAgUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzKHVubW91
bnRDb21wb25lbnRGcm9tTm9kZSwgcHJldkNvbXBvbmVudCwgY29udGFpbmVyLCBmYWxzZSk7XG4g
ICAgcmV0dXJuIHRydWU7XG4gIH0sXG5cbiAgX21vdW50SW1hZ2VJbnRvTm9kZTogZnVuY3Rpb24g
KG1hcmt1cCwgY29udGFpbmVyLCBpbnN0YW5jZSwgc2hvdWxkUmV1c2VNYXJrdXAsIHRyYW5zYWN0
aW9uKSB7XG4gICAgIWlzVmFsaWRDb250YWluZXIoY29udGFpbmVyKSA/IHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdtb3VudENvbXBvbmVu
dEludG9Ob2RlKC4uLik6IFRhcmdldCBjb250YWluZXIgaXMgbm90IHZhbGlkLicpIDogX3Byb2RJ
bnZhcmlhbnQoJzQxJykgOiB2b2lkIDA7XG5cbiAgICBpZiAoc2hvdWxkUmV1c2VNYXJrdXApIHtc
biAgICAgIHZhciByb290RWxlbWVudCA9IGdldFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihj
b250YWluZXIpO1xuICAgICAgaWYgKFJlYWN0TWFya3VwQ2hlY2tzdW0uY2FuUmV1c2VNYXJrdXAo
bWFya3VwLCByb290RWxlbWVudCkpIHtcbiAgICAgICAgUmVhY3RET01Db21wb25lbnRUcmVlLnBy
ZWNhY2hlTm9kZShpbnN0YW5jZSwgcm9vdEVsZW1lbnQpO1xuICAgICAgICByZXR1cm47XG4gICAg
ICB9IGVsc2Uge1xuICAgICAgICB2YXIgY2hlY2tzdW0gPSByb290RWxlbWVudC5nZXRBdHRyaWJ1
dGUoUmVhY3RNYXJrdXBDaGVja3N1bS5DSEVDS1NVTV9BVFRSX05BTUUpO1xuICAgICAgICByb290
RWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoUmVhY3RNYXJrdXBDaGVja3N1bS5DSEVDS1NVTV9BVFRS
X05BTUUpO1xuXG4gICAgICAgIHZhciByb290TWFya3VwID0gcm9vdEVsZW1lbnQub3V0ZXJIVE1M
O1xuICAgICAgICByb290RWxlbWVudC5zZXRBdHRyaWJ1dGUoUmVhY3RNYXJrdXBDaGVja3N1bS5D
SEVDS1NVTV9BVFRSX05BTUUsIGNoZWNrc3VtKTtcblxuICAgICAgICB2YXIgbm9ybWFsaXplZE1h
cmt1cCA9IG1hcmt1cDtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicpIHtcbiAgICAgICAgICAvLyBiZWNhdXNlIHJvb3RNYXJrdXAgaXMgcmV0cmlldmVk
IGZyb20gdGhlIERPTSwgdmFyaW91cyBub3JtYWxpemF0aW9uc1xuICAgICAgICAgIC8vIHdpbGwg
aGF2ZSBvY2N1cnJlZCB3aGljaCB3aWxsIG5vdCBiZSBwcmVzZW50IGluIGBtYXJrdXBgLiBIZXJl
LFxuICAgICAgICAgIC8vIGluc2VydCBtYXJrdXAgaW50byBhIDxkaXY+IG9yIDxpZnJhbWU+IGRl
cGVuZGluZyBvbiB0aGUgY29udGFpbmVyXG4gICAgICAgICAgLy8gdHlwZSB0byBwZXJmb3JtIHRo
ZSBzYW1lIG5vcm1hbGl6YXRpb25zIGJlZm9yZSBjb21wYXJpbmcuXG4gICAgICAgICAgdmFyIG5v
cm1hbGl6ZXI7XG4gICAgICAgICAgaWYgKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRUxFTUVOVF9O
T0RFX1RZUEUpIHtcbiAgICAgICAgICAgIG5vcm1hbGl6ZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTtcbiAgICAgICAgICAgIG5vcm1hbGl6ZXIuaW5uZXJIVE1MID0gbWFya3VwO1xu
ICAgICAgICAgICAgbm9ybWFsaXplZE1hcmt1cCA9IG5vcm1hbGl6ZXIuaW5uZXJIVE1MO1xuICAg
ICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBub3JtYWxpemVyID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnaWZyYW1lJyk7XG4gICAgICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxk
KG5vcm1hbGl6ZXIpO1xuICAgICAgICAgICAgbm9ybWFsaXplci5jb250ZW50RG9jdW1lbnQud3Jp
dGUobWFya3VwKTtcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRNYXJrdXAgPSBub3JtYWxpemVyLmNv
bnRlbnREb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub3V0ZXJIVE1MO1xuICAgICAgICAgICAgZG9j
dW1lbnQuYm9keS5yZW1vdmVDaGlsZChub3JtYWxpemVyKTtcbiAgICAgICAgICB9XG4gICAgICAg
IH1cblxuICAgICAgICB2YXIgZGlmZkluZGV4ID0gZmlyc3REaWZmZXJlbmNlSW5kZXgobm9ybWFs
aXplZE1hcmt1cCwgcm9vdE1hcmt1cCk7XG4gICAgICAgIHZhciBkaWZmZXJlbmNlID0gJyAoY2xp
ZW50KSAnICsgbm9ybWFsaXplZE1hcmt1cC5zdWJzdHJpbmcoZGlmZkluZGV4IC0gMjAsIGRpZmZJ
bmRleCArIDIwKSArICdcXG4gKHNlcnZlcikgJyArIHJvb3RNYXJrdXAuc3Vic3RyaW5nKGRpZmZJ
bmRleCAtIDIwLCBkaWZmSW5kZXggKyAyMCk7XG5cbiAgICAgICAgIShjb250YWluZXIubm9kZVR5
cGUgIT09IERPQ19OT0RFX1RZUEUpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1lvdVxcJ3JlIHRyeWluZyB0byByZW5kZXIgYSBjb21w
b25lbnQgdG8gdGhlIGRvY3VtZW50IHVzaW5nIHNlcnZlciByZW5kZXJpbmcgYnV0IHRoZSBjaGVj
a3N1bSB3YXMgaW52YWxpZC4gVGhpcyB1c3VhbGx5IG1lYW5zIHlvdSByZW5kZXJlZCBhIGRpZmZl
cmVudCBjb21wb25lbnQgdHlwZSBvciBwcm9wcyBvbiB0aGUgY2xpZW50IGZyb20gdGhlIG9uZSBv
biB0aGUgc2VydmVyLCBvciB5b3VyIHJlbmRlcigpIG1ldGhvZHMgYXJlIGltcHVyZS4gUmVhY3Qg
Y2Fubm90IGhhbmRsZSB0aGlzIGNhc2UgZHVlIHRvIGNyb3NzLWJyb3dzZXIgcXVpcmtzIGJ5IHJl
bmRlcmluZyBhdCB0aGUgZG9jdW1lbnQgcm9vdC4gWW91IHNob3VsZCBsb29rIGZvciBlbnZpcm9u
bWVudCBkZXBlbmRlbnQgY29kZSBpbiB5b3VyIGNvbXBvbmVudHMgYW5kIGVuc3VyZSB0aGUgcHJv
cHMgYXJlIHRoZSBzYW1lIGNsaWVudCBhbmQgc2VydmVyIHNpZGU6XFxuJXMnLCBkaWZmZXJlbmNl
KSA6IF9wcm9kSW52YXJpYW50KCc0MicsIGRpZmZlcmVuY2UpIDogdm9pZCAwO1xuXG4gICAgICAg
IGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAg
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdS
ZWFjdCBhdHRlbXB0ZWQgdG8gcmV1c2UgbWFya3VwIGluIGEgY29udGFpbmVyIGJ1dCB0aGUgJyAr
ICdjaGVja3N1bSB3YXMgaW52YWxpZC4gVGhpcyBnZW5lcmFsbHkgbWVhbnMgdGhhdCB5b3UgYXJl
ICcgKyAndXNpbmcgc2VydmVyIHJlbmRlcmluZyBhbmQgdGhlIG1hcmt1cCBnZW5lcmF0ZWQgb24g
dGhlICcgKyAnc2VydmVyIHdhcyBub3Qgd2hhdCB0aGUgY2xpZW50IHdhcyBleHBlY3RpbmcuIFJl
YWN0IGluamVjdGVkICcgKyAnbmV3IG1hcmt1cCB0byBjb21wZW5zYXRlIHdoaWNoIHdvcmtzIGJ1
dCB5b3UgaGF2ZSBsb3N0IG1hbnkgJyArICdvZiB0aGUgYmVuZWZpdHMgb2Ygc2VydmVyIHJlbmRl
cmluZy4gSW5zdGVhZCwgZmlndXJlIG91dCAnICsgJ3doeSB0aGUgbWFya3VwIGJlaW5nIGdlbmVy
YXRlZCBpcyBkaWZmZXJlbnQgb24gdGhlIGNsaWVudCAnICsgJ29yIHNlcnZlcjpcXG4lcycsIGRp
ZmZlcmVuY2UpIDogdm9pZCAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgIShj
b250YWluZXIubm9kZVR5cGUgIT09IERPQ19OT0RFX1RZUEUpID8gcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1lvdVxcJ3JlIHRyeWluZyB0
byByZW5kZXIgYSBjb21wb25lbnQgdG8gdGhlIGRvY3VtZW50IGJ1dCB5b3UgZGlkblxcJ3QgdXNl
IHNlcnZlciByZW5kZXJpbmcuIFdlIGNhblxcJ3QgZG8gdGhpcyB3aXRob3V0IHVzaW5nIHNlcnZl
ciByZW5kZXJpbmcgZHVlIHRvIGNyb3NzLWJyb3dzZXIgcXVpcmtzLiBTZWUgUmVhY3RET01TZXJ2
ZXIucmVuZGVyVG9TdHJpbmcoKSBmb3Igc2VydmVyIHJlbmRlcmluZy4nKSA6IF9wcm9kSW52YXJp
YW50KCc0MycpIDogdm9pZCAwO1xuXG4gICAgaWYgKHRyYW5zYWN0aW9uLnVzZUNyZWF0ZUVsZW1l
bnQpIHtcbiAgICAgIHdoaWxlIChjb250YWluZXIubGFzdENoaWxkKSB7XG4gICAgICAgIGNvbnRh
aW5lci5yZW1vdmVDaGlsZChjb250YWluZXIubGFzdENoaWxkKTtcbiAgICAgIH1cbiAgICAgIERP
TUxhenlUcmVlLmluc2VydFRyZWVCZWZvcmUoY29udGFpbmVyLCBtYXJrdXAsIG51bGwpO1xuICAg
IH0gZWxzZSB7XG4gICAgICBzZXRJbm5lckhUTUwoY29udGFpbmVyLCBtYXJrdXApO1xuICAgICAg
UmVhY3RET01Db21wb25lbnRUcmVlLnByZWNhY2hlTm9kZShpbnN0YW5jZSwgY29udGFpbmVyLmZp
cnN0Q2hpbGQpO1xuICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgaG9zdE5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUu
Z2V0SW5zdGFuY2VGcm9tTm9kZShjb250YWluZXIuZmlyc3RDaGlsZCk7XG4gICAgICBpZiAoaG9z
dE5vZGUuX2RlYnVnSUQgIT09IDApIHtcbiAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVi
dWdUb29sLm9uSG9zdE9wZXJhdGlvbih7XG4gICAgICAgICAgaW5zdGFuY2VJRDogaG9zdE5vZGUu
X2RlYnVnSUQsXG4gICAgICAgICAgdHlwZTogJ21vdW50JyxcbiAgICAgICAgICBwYXlsb2FkOiBt
YXJrdXAudG9TdHJpbmcoKVxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5c
bm1vZHVsZS5leHBvcnRzID0gUmVhY3RNb3VudDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAq
KiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0TW91bnQuanNcbiAq
KiBtb2R1bGUgaWQgPSA2N1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJ
bnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52YXIgUmVhY3Qg
PSByZXF1aXJlKCdyZWFjdC9saWIvUmVhY3QnKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUo
J2ZianMvbGliL2ludmFyaWFudCcpO1xuXG52YXIgUmVhY3ROb2RlVHlwZXMgPSB7XG4gIEhPU1Q6
IDAsXG4gIENPTVBPU0lURTogMSxcbiAgRU1QVFk6IDIsXG5cbiAgZ2V0VHlwZTogZnVuY3Rpb24g
KG5vZGUpIHtcbiAgICBpZiAobm9kZSA9PT0gbnVsbCB8fCBub2RlID09PSBmYWxzZSkge1xuICAg
ICAgcmV0dXJuIFJlYWN0Tm9kZVR5cGVzLkVNUFRZO1xuICAgIH0gZWxzZSBpZiAoUmVhY3QuaXNW
YWxpZEVsZW1lbnQobm9kZSkpIHtcbiAgICAgIGlmICh0eXBlb2Ygbm9kZS50eXBlID09PSAnZnVu
Y3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBSZWFjdE5vZGVUeXBlcy5DT01QT1NJVEU7XG4gICAg
ICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gUmVhY3ROb2RlVHlwZXMuSE9TVDtcbiAgICAgIH1c
biAgICB9XG4gICAgIWZhbHNlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IGludmFyaWFudChmYWxzZSwgJ1VuZXhwZWN0ZWQgbm9kZTogJXMnLCBub2RlKSA6IF9wcm9k
SW52YXJpYW50KCcyNicsIG5vZGUpIDogdm9pZCAwO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0
cyA9IFJlYWN0Tm9kZVR5cGVzO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sg
Rk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3ROb2RlVHlwZXMuanNcbiAqKiBtb2R1
bGUgaWQgPSA2OFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
biAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFZpZXdwb3J0TWV0cmljcyA9
IHtcbiAgY3VycmVudFNjcm9sbExlZnQ6IDAsXG5cbiAgY3VycmVudFNjcm9sbFRvcDogMCxcblxu
ICByZWZyZXNoU2Nyb2xsVmFsdWVzOiBmdW5jdGlvbiAoc2Nyb2xsUG9zaXRpb24pIHtcbiAgICBW
aWV3cG9ydE1ldHJpY3MuY3VycmVudFNjcm9sbExlZnQgPSBzY3JvbGxQb3NpdGlvbi54O1xuICAg
IFZpZXdwb3J0TWV0cmljcy5jdXJyZW50U2Nyb2xsVG9wID0gc2Nyb2xsUG9zaXRpb24ueTtcbiAg
fVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBWaWV3cG9ydE1ldHJpY3M7XG5cblxuLyoqKioqKioq
KioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9WaWV3
cG9ydE1ldHJpY3MuanNcbiAqKiBtb2R1bGUgaWQgPSA2OVxuICoqIG1vZHVsZSBjaHVua3MgPSAw
XG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNC1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJp
Y3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFu
dCcpO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5c
bi8qKlxuICogQWNjdW11bGF0ZXMgaXRlbXMgdGhhdCBtdXN0IG5vdCBiZSBudWxsIG9yIHVuZGVm
aW5lZCBpbnRvIHRoZSBmaXJzdCBvbmUuIFRoaXNcbiAqIGlzIHVzZWQgdG8gY29uc2VydmUgbWVt
b3J5IGJ5IGF2b2lkaW5nIGFycmF5IGFsbG9jYXRpb25zLCBhbmQgdGh1cyBzYWNyaWZpY2VzXG4g
KiBBUEkgY2xlYW5uZXNzLiBTaW5jZSBgY3VycmVudGAgY2FuIGJlIG51bGwgYmVmb3JlIGJlaW5n
IHBhc3NlZCBpbiBhbmQgbm90XG4gKiBudWxsIGFmdGVyIHRoaXMgZnVuY3Rpb24sIG1ha2Ugc3Vy
ZSB0byBhc3NpZ24gaXQgYmFjayB0byBgY3VycmVudGA6XG4gKlxuICogYGEgPSBhY2N1bXVsYXRl
SW50byhhLCBiKTtgXG4gKlxuICogVGhpcyBBUEkgc2hvdWxkIGJlIHNwYXJpbmdseSB1c2VkLiBU
cnkgYGFjY3VtdWxhdGVgIGZvciBzb21ldGhpbmcgY2xlYW5lci5cbiAqXG4gKiBAcmV0dXJuIHsq
fGFycmF5PCo+fSBBbiBhY2N1bXVsYXRpb24gb2YgaXRlbXMuXG4gKi9cblxuZnVuY3Rpb24gYWNj
dW11bGF0ZUludG8oY3VycmVudCwgbmV4dCkge1xuICAhKG5leHQgIT0gbnVsbCkgPyBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnYWNjdW11
bGF0ZUludG8oLi4uKTogQWNjdW11bGF0ZWQgaXRlbXMgbXVzdCBub3QgYmUgbnVsbCBvciB1bmRl
ZmluZWQuJykgOiBfcHJvZEludmFyaWFudCgnMzAnKSA6IHZvaWQgMDtcblxuICBpZiAoY3VycmVu
dCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIG5leHQ7XG4gIH1cblxuICAvLyBCb3RoIGFyZSBub3Qg
ZW1wdHkuIFdhcm5pbmc6IE5ldmVyIGNhbGwgeC5jb25jYXQoeSkgd2hlbiB5b3UgYXJlIG5vdFxu
ICAvLyBjZXJ0YWluIHRoYXQgeCBpcyBhbiBBcnJheSAoeCBjb3VsZCBiZSBhIHN0cmluZyB3aXRo
IGNvbmNhdCBtZXRob2QpLlxuICBpZiAoQXJyYXkuaXNBcnJheShjdXJyZW50KSkge1xuICAgIGlm
IChBcnJheS5pc0FycmF5KG5leHQpKSB7XG4gICAgICBjdXJyZW50LnB1c2guYXBwbHkoY3VycmVu
dCwgbmV4dCk7XG4gICAgICByZXR1cm4gY3VycmVudDtcbiAgICB9XG4gICAgY3VycmVudC5wdXNo
KG5leHQpO1xuICAgIHJldHVybiBjdXJyZW50O1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXko
bmV4dCkpIHtcbiAgICAvLyBBIGJpdCB0b28gZGFuZ2Vyb3VzIHRvIG11dGF0ZSBgbmV4dGAuXG4g
ICAgcmV0dXJuIFtjdXJyZW50XS5jb25jYXQobmV4dCk7XG4gIH1cblxuICByZXR1cm4gW2N1cnJl
bnQsIG5leHRdO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGFjY3VtdWxhdGVJbnRvO1xuXG5cbi8q
KioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9s
aWIvYWNjdW11bGF0ZUludG8uanNcbiAqKiBtb2R1bGUgaWQgPSA3MFxuICoqIG1vZHVsZSBjaHVu
a3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3Vz
ZSBzdHJpY3QnO1xuXG4vKipcbiAqIEBwYXJhbSB7YXJyYXl9IGFyciBhbiBcImFjY3VtdWxhdGlv
blwiIG9mIGl0ZW1zIHdoaWNoIGlzIGVpdGhlciBhbiBBcnJheSBvclxuICogYSBzaW5nbGUgaXRl
bS4gVXNlZnVsIHdoZW4gcGFpcmVkIHdpdGggdGhlIGBhY2N1bXVsYXRlYCBtb2R1bGUuIFRoaXMg
aXMgYVxuICogc2ltcGxlIHV0aWxpdHkgdGhhdCBhbGxvd3MgdXMgdG8gcmVhc29uIGFib3V0IGEg
Y29sbGVjdGlvbiBvZiBpdGVtcywgYnV0XG4gKiBoYW5kbGluZyB0aGUgY2FzZSB3aGVuIHRoZXJl
IGlzIGV4YWN0bHkgb25lIGl0ZW0gKGFuZCB3ZSBkbyBub3QgbmVlZCB0b1xuICogYWxsb2NhdGUg
YW4gYXJyYXkpLlxuICovXG5cbmZ1bmN0aW9uIGZvckVhY2hBY2N1bXVsYXRlZChhcnIsIGNiLCBz
Y29wZSkge1xuICBpZiAoQXJyYXkuaXNBcnJheShhcnIpKSB7XG4gICAgYXJyLmZvckVhY2goY2Is
IHNjb3BlKTtcbiAgfSBlbHNlIGlmIChhcnIpIHtcbiAgICBjYi5jYWxsKHNjb3BlLCBhcnIpO1xu
ICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZm9yRWFjaEFjY3VtdWxhdGVkO1xuXG5cbi8qKioq
KioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIv
Zm9yRWFjaEFjY3VtdWxhdGVkLmpzXG4gKiogbW9kdWxlIGlkID0gNzFcbiAqKiBtb2R1bGUgY2h1
bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0
cmljdCc7XG5cbnZhciBSZWFjdE5vZGVUeXBlcyA9IHJlcXVpcmUoJy4vUmVhY3ROb2RlVHlwZXMn
KTtcblxuZnVuY3Rpb24gZ2V0SG9zdENvbXBvbmVudEZyb21Db21wb3NpdGUoaW5zdCkge1xuICB2
YXIgdHlwZTtcblxuICB3aGlsZSAoKHR5cGUgPSBpbnN0Ll9yZW5kZXJlZE5vZGVUeXBlKSA9PT0g
UmVhY3ROb2RlVHlwZXMuQ09NUE9TSVRFKSB7XG4gICAgaW5zdCA9IGluc3QuX3JlbmRlcmVkQ29t
cG9uZW50O1xuICB9XG5cbiAgaWYgKHR5cGUgPT09IFJlYWN0Tm9kZVR5cGVzLkhPU1QpIHtcbiAg
ICByZXR1cm4gaW5zdC5fcmVuZGVyZWRDb21wb25lbnQ7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0g
UmVhY3ROb2RlVHlwZXMuRU1QVFkpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG5tb2R1
bGUuZXhwb3J0cyA9IGdldEhvc3RDb21wb25lbnRGcm9tQ29tcG9zaXRlO1xuXG5cbi8qKioqKioq
KioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvZ2V0
SG9zdENvbXBvbmVudEZyb21Db21wb3NpdGUuanNcbiAqKiBtb2R1bGUgaWQgPSA3MlxuICoqIG1v
ZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5c
bid1c2Ugc3RyaWN0JztcblxudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnZmJq
cy9saWIvRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcblxudmFyIGNvbnRlbnRLZXkgPSBudWxsO1xu
XG4vKipcbiAqIEdldHMgdGhlIGtleSB1c2VkIHRvIGFjY2VzcyB0ZXh0IGNvbnRlbnQgb24gYSBE
T00gbm9kZS5cbiAqXG4gKiBAcmV0dXJuIHs/c3RyaW5nfSBLZXkgdXNlZCB0byBhY2Nlc3MgdGV4
dCBjb250ZW50LlxuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIGdldFRleHRDb250ZW50QWNj
ZXNzb3IoKSB7XG4gIGlmICghY29udGVudEtleSAmJiBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5V
c2VET00pIHtcbiAgICAvLyBQcmVmZXIgdGV4dENvbnRlbnQgdG8gaW5uZXJUZXh0IGJlY2F1c2Ug
bWFueSBicm93c2VycyBzdXBwb3J0IGJvdGggYnV0XG4gICAgLy8gU1ZHIDx0ZXh0PiBlbGVtZW50
cyBkb24ndCBzdXBwb3J0IGlubmVyVGV4dCBldmVuIHdoZW4gPGRpdj4gZG9lcy5cbiAgICBjb250
ZW50S2V5ID0gJ3RleHRDb250ZW50JyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgPyAndGV4
dENvbnRlbnQnIDogJ2lubmVyVGV4dCc7XG4gIH1cbiAgcmV0dXJuIGNvbnRlbnRLZXk7XG59XG5c
bm1vZHVsZS5leHBvcnRzID0gZ2V0VGV4dENvbnRlbnRBY2Nlc3NvcjtcblxuXG4vKioqKioqKioq
KioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL2dldFRl
eHRDb250ZW50QWNjZXNzb3IuanNcbiAqKiBtb2R1bGUgaWQgPSA3M1xuICoqIG1vZHVsZSBjaHVu
a3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3Ry
aWN0JztcblxudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01D
b21wb25lbnRUcmVlJyk7XG5cbmZ1bmN0aW9uIGlzQ2hlY2thYmxlKGVsZW0pIHtcbiAgdmFyIHR5
cGUgPSBlbGVtLnR5cGU7XG4gIHZhciBub2RlTmFtZSA9IGVsZW0ubm9kZU5hbWU7XG4gIHJldHVy
biBub2RlTmFtZSAmJiBub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnICYmICh0eXBl
ID09PSAnY2hlY2tib3gnIHx8IHR5cGUgPT09ICdyYWRpbycpO1xufVxuXG5mdW5jdGlvbiBnZXRU
cmFja2VyKGluc3QpIHtcbiAgcmV0dXJuIGluc3QuX3dyYXBwZXJTdGF0ZS52YWx1ZVRyYWNrZXI7
XG59XG5cbmZ1bmN0aW9uIGF0dGFjaFRyYWNrZXIoaW5zdCwgdHJhY2tlcikge1xuICBpbnN0Ll93
cmFwcGVyU3RhdGUudmFsdWVUcmFja2VyID0gdHJhY2tlcjtcbn1cblxuZnVuY3Rpb24gZGV0YWNo
VHJhY2tlcihpbnN0KSB7XG4gIGRlbGV0ZSBpbnN0Ll93cmFwcGVyU3RhdGUudmFsdWVUcmFja2Vy
O1xufVxuXG5mdW5jdGlvbiBnZXRWYWx1ZUZyb21Ob2RlKG5vZGUpIHtcbiAgdmFyIHZhbHVlO1xu
ICBpZiAobm9kZSkge1xuICAgIHZhbHVlID0gaXNDaGVja2FibGUobm9kZSkgPyAnJyArIG5vZGUu
Y2hlY2tlZCA6IG5vZGUudmFsdWU7XG4gIH1cbiAgcmV0dXJuIHZhbHVlO1xufVxuXG52YXIgaW5w
dXRWYWx1ZVRyYWNraW5nID0ge1xuICAvLyBleHBvc2VkIGZvciB0ZXN0aW5nXG4gIF9nZXRUcmFj
a2VyRnJvbU5vZGU6IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgcmV0dXJuIGdldFRyYWNrZXIoUmVh
Y3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUobm9kZSkpO1xuICB9LFxuXG5c
biAgdHJhY2s6IGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgaWYgKGdldFRyYWNrZXIoaW5zdCkpIHtc
biAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgbm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50
VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpO1xuICAgIHZhciB2YWx1ZUZpZWxkID0gaXND
aGVja2FibGUobm9kZSkgPyAnY2hlY2tlZCcgOiAndmFsdWUnO1xuICAgIHZhciBkZXNjcmlwdG9y
ID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihub2RlLmNvbnN0cnVjdG9yLnByb3Rv
dHlwZSwgdmFsdWVGaWVsZCk7XG5cbiAgICB2YXIgY3VycmVudFZhbHVlID0gJycgKyBub2RlW3Zh
bHVlRmllbGRdO1xuXG4gICAgLy8gaWYgc29tZW9uZSBoYXMgYWxyZWFkeSBkZWZpbmVkIGEgdmFs
dWUgb3IgU2FmYXJpLCB0aGVuIGJhaWxcbiAgICAvLyBhbmQgZG9uJ3QgdHJhY2sgdmFsdWUgd2ls
bCBjYXVzZSBvdmVyIHJlcG9ydGluZyBvZiBjaGFuZ2VzLFxuICAgIC8vIGJ1dCBpdCdzIGJldHRl
ciB0aGVuIGEgaGFyZCBmYWlsdXJlXG4gICAgLy8gKG5lZWRlZCBmb3IgY2VydGFpbiB0ZXN0cyB0
aGF0IHNweU9uIGlucHV0IHZhbHVlcyBhbmQgU2FmYXJpKVxuICAgIGlmIChub2RlLmhhc093blBy
b3BlcnR5KHZhbHVlRmllbGQpIHx8IHR5cGVvZiBkZXNjcmlwdG9yLmdldCAhPT0gJ2Z1bmN0aW9u
JyB8fCB0eXBlb2YgZGVzY3JpcHRvci5zZXQgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVy
bjtcbiAgICB9XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobm9kZSwgdmFsdWVGaWVsZCwg
e1xuICAgICAgZW51bWVyYWJsZTogZGVzY3JpcHRvci5lbnVtZXJhYmxlLFxuICAgICAgY29uZmln
dXJhYmxlOiB0cnVlLFxuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBk
ZXNjcmlwdG9yLmdldC5jYWxsKHRoaXMpO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24g
KHZhbHVlKSB7XG4gICAgICAgIGN1cnJlbnRWYWx1ZSA9ICcnICsgdmFsdWU7XG4gICAgICAgIGRl
c2NyaXB0b3Iuc2V0LmNhbGwodGhpcywgdmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAg
YXR0YWNoVHJhY2tlcihpbnN0LCB7XG4gICAgICBnZXRWYWx1ZTogZnVuY3Rpb24gKCkge1xuICAg
ICAgICByZXR1cm4gY3VycmVudFZhbHVlO1xuICAgICAgfSxcbiAgICAgIHNldFZhbHVlOiBmdW5j
dGlvbiAodmFsdWUpIHtcbiAgICAgICAgY3VycmVudFZhbHVlID0gJycgKyB2YWx1ZTtcbiAgICAg
IH0sXG4gICAgICBzdG9wVHJhY2tpbmc6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZGV0YWNoVHJh
Y2tlcihpbnN0KTtcbiAgICAgICAgZGVsZXRlIG5vZGVbdmFsdWVGaWVsZF07XG4gICAgICB9XG4g
ICAgfSk7XG4gIH0sXG5cbiAgdXBkYXRlVmFsdWVJZkNoYW5nZWQ6IGZ1bmN0aW9uIChpbnN0KSB7
XG4gICAgaWYgKCFpbnN0KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHZhciB0
cmFja2VyID0gZ2V0VHJhY2tlcihpbnN0KTtcblxuICAgIGlmICghdHJhY2tlcikge1xuICAgICAg
aW5wdXRWYWx1ZVRyYWNraW5nLnRyYWNrKGluc3QpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAg
fVxuXG4gICAgdmFyIGxhc3RWYWx1ZSA9IHRyYWNrZXIuZ2V0VmFsdWUoKTtcbiAgICB2YXIgbmV4
dFZhbHVlID0gZ2V0VmFsdWVGcm9tTm9kZShSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZy
b21JbnN0YW5jZShpbnN0KSk7XG5cbiAgICBpZiAobmV4dFZhbHVlICE9PSBsYXN0VmFsdWUpIHtc
biAgICAgIHRyYWNrZXIuc2V0VmFsdWUobmV4dFZhbHVlKTtcbiAgICAgIHJldHVybiB0cnVlO1xu
ICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfSxcbiAgc3RvcFRyYWNraW5nOiBmdW5jdGlv
biAoaW5zdCkge1xuICAgIHZhciB0cmFja2VyID0gZ2V0VHJhY2tlcihpbnN0KTtcbiAgICBpZiAo
dHJhY2tlcikge1xuICAgICAgdHJhY2tlci5zdG9wVHJhY2tpbmcoKTtcbiAgICB9XG4gIH1cbn07
XG5cbm1vZHVsZS5leHBvcnRzID0gaW5wdXRWYWx1ZVRyYWNraW5nO1xuXG5cbi8qKioqKioqKioq
KioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvaW5wdXRW
YWx1ZVRyYWNraW5nLmpzXG4gKiogbW9kdWxlIGlkID0gNzRcbiAqKiBtb2R1bGUgY2h1bmtzID0g
MFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5c
biAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7
XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50Jyks
XG4gICAgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIFJlYWN0Q29t
cG9zaXRlQ29tcG9uZW50ID0gcmVxdWlyZSgnLi9SZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpO1xu
dmFyIFJlYWN0RW1wdHlDb21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0RW1wdHlDb21wb25lbnQn
KTtcbnZhciBSZWFjdEhvc3RDb21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0SG9zdENvbXBvbmVu
dCcpO1xuXG52YXIgZ2V0TmV4dERlYnVnSUQgPSByZXF1aXJlKCdyZWFjdC9saWIvZ2V0TmV4dERl
YnVnSUQnKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtc
bnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG4vLyBUbyBhdm9p
ZCBhIGN5Y2xpYyBkZXBlbmRlbmN5LCB3ZSBjcmVhdGUgdGhlIGZpbmFsIGNsYXNzIGluIHRoaXMg
bW9kdWxlXG52YXIgUmVhY3RDb21wb3NpdGVDb21wb25lbnRXcmFwcGVyID0gZnVuY3Rpb24gKGVs
ZW1lbnQpIHtcbiAgdGhpcy5jb25zdHJ1Y3QoZWxlbWVudCk7XG59O1xuXG5mdW5jdGlvbiBnZXRE
ZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0ob3duZXIpIHtcbiAgaWYgKG93bmVyKSB7XG4gICAgdmFy
IG5hbWUgPSBvd25lci5nZXROYW1lKCk7XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIHJldHVybiAn
IENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7XG4gICAgfVxuICB9
XG4gIHJldHVybiAnJztcbn1cblxuLyoqXG4gKiBDaGVjayBpZiB0aGUgdHlwZSByZWZlcmVuY2Ug
aXMgYSBrbm93biBpbnRlcm5hbCB0eXBlLiBJLmUuIG5vdCBhIHVzZXJcbiAqIHByb3ZpZGVkIGNv
bXBvc2l0ZSB0eXBlLlxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHR5cGVcbiAqIEByZXR1cm4g
e2Jvb2xlYW59IFJldHVybnMgdHJ1ZSBpZiB0aGlzIGlzIGEgdmFsaWQgaW50ZXJuYWwgdHlwZS5c
biAqL1xuZnVuY3Rpb24gaXNJbnRlcm5hbENvbXBvbmVudFR5cGUodHlwZSkge1xuICByZXR1cm4g
dHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHR5cGUucHJvdG90eXBlICE9PSAn
dW5kZWZpbmVkJyAmJiB0eXBlb2YgdHlwZS5wcm90b3R5cGUubW91bnRDb21wb25lbnQgPT09ICdm
dW5jdGlvbicgJiYgdHlwZW9mIHR5cGUucHJvdG90eXBlLnJlY2VpdmVDb21wb25lbnQgPT09ICdm
dW5jdGlvbic7XG59XG5cbi8qKlxuICogR2l2ZW4gYSBSZWFjdE5vZGUsIGNyZWF0ZSBhbiBpbnN0
YW5jZSB0aGF0IHdpbGwgYWN0dWFsbHkgYmUgbW91bnRlZC5cbiAqXG4gKiBAcGFyYW0ge1JlYWN0
Tm9kZX0gbm9kZVxuICogQHBhcmFtIHtib29sZWFufSBzaG91bGRIYXZlRGVidWdJRFxuICogQHJl
dHVybiB7b2JqZWN0fSBBIG5ldyBpbnN0YW5jZSBvZiB0aGUgZWxlbWVudCdzIGNvbnN0cnVjdG9y
LlxuICogQHByb3RlY3RlZFxuICovXG5mdW5jdGlvbiBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50
KG5vZGUsIHNob3VsZEhhdmVEZWJ1Z0lEKSB7XG4gIHZhciBpbnN0YW5jZTtcblxuICBpZiAobm9k
ZSA9PT0gbnVsbCB8fCBub2RlID09PSBmYWxzZSkge1xuICAgIGluc3RhbmNlID0gUmVhY3RFbXB0
eUNvbXBvbmVudC5jcmVhdGUoaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCk7XG4gIH0gZWxzZSBp
ZiAodHlwZW9mIG5vZGUgPT09ICdvYmplY3QnKSB7XG4gICAgdmFyIGVsZW1lbnQgPSBub2RlO1xu
ICAgIHZhciB0eXBlID0gZWxlbWVudC50eXBlO1xuICAgIGlmICh0eXBlb2YgdHlwZSAhPT0gJ2Z1
bmN0aW9uJyAmJiB0eXBlb2YgdHlwZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHZhciBpbmZvID0g
Jyc7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xu
ICAgICAgICBpZiAodHlwZSA9PT0gdW5kZWZpbmVkIHx8IHR5cGVvZiB0eXBlID09PSAnb2JqZWN0
JyAmJiB0eXBlICE9PSBudWxsICYmIE9iamVjdC5rZXlzKHR5cGUpLmxlbmd0aCA9PT0gMCkge1xu
ICAgICAgICAgIGluZm8gKz0gJyBZb3UgbGlrZWx5IGZvcmdvdCB0byBleHBvcnQgeW91ciBjb21w
b25lbnQgZnJvbSB0aGUgZmlsZSAnICsgXCJpdCdzIGRlZmluZWQgaW4uXCI7XG4gICAgICAgIH1c
biAgICAgIH1cbiAgICAgIGluZm8gKz0gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKGVsZW1l
bnQuX293bmVyKTtcbiAgICAgICFmYWxzZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFbGVtZW50IHR5cGUgaXMgaW52YWxpZDogZXhw
ZWN0ZWQgYSBzdHJpbmcgKGZvciBidWlsdC1pbiBjb21wb25lbnRzKSBvciBhIGNsYXNzL2Z1bmN0
aW9uIChmb3IgY29tcG9zaXRlIGNvbXBvbmVudHMpIGJ1dCBnb3Q6ICVzLiVzJywgdHlwZSA9PSBu
dWxsID8gdHlwZSA6IHR5cGVvZiB0eXBlLCBpbmZvKSA6IF9wcm9kSW52YXJpYW50KCcxMzAnLCB0
eXBlID09IG51bGwgPyB0eXBlIDogdHlwZW9mIHR5cGUsIGluZm8pIDogdm9pZCAwO1xuICAgIH1c
blxuICAgIC8vIFNwZWNpYWwgY2FzZSBzdHJpbmcgdmFsdWVzXG4gICAgaWYgKHR5cGVvZiBlbGVt
ZW50LnR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgICBpbnN0YW5jZSA9IFJlYWN0SG9zdENvbXBv
bmVudC5jcmVhdGVJbnRlcm5hbENvbXBvbmVudChlbGVtZW50KTtcbiAgICB9IGVsc2UgaWYgKGlz
SW50ZXJuYWxDb21wb25lbnRUeXBlKGVsZW1lbnQudHlwZSkpIHtcbiAgICAgIC8vIFRoaXMgaXMg
dGVtcG9yYXJpbHkgYXZhaWxhYmxlIGZvciBjdXN0b20gY29tcG9uZW50cyB0aGF0IGFyZSBub3Qg
c3RyaW5nXG4gICAgICAvLyByZXByZXNlbnRhdGlvbnMuIEkuZS4gQVJULiBPbmNlIHRob3NlIGFy
ZSB1cGRhdGVkIHRvIHVzZSB0aGUgc3RyaW5nXG4gICAgICAvLyByZXByZXNlbnRhdGlvbiwgd2Ug
Y2FuIGRyb3AgdGhpcyBjb2RlIHBhdGguXG4gICAgICBpbnN0YW5jZSA9IG5ldyBlbGVtZW50LnR5
cGUoZWxlbWVudCk7XG5cbiAgICAgIC8vIFdlIHJlbmFtZWQgdGhpcy4gQWxsb3cgdGhlIG9sZCBu
YW1lIGZvciBjb21wYXQuIDooXG4gICAgICBpZiAoIWluc3RhbmNlLmdldEhvc3ROb2RlKSB7XG4g
ICAgICAgIGluc3RhbmNlLmdldEhvc3ROb2RlID0gaW5zdGFuY2UuZ2V0TmF0aXZlTm9kZTtcbiAg
ICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaW5zdGFuY2UgPSBuZXcgUmVhY3RDb21wb3NpdGVD
b21wb25lbnRXcmFwcGVyKGVsZW1lbnQpO1xuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2Ygbm9k
ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIG5vZGUgPT09ICdudW1iZXInKSB7XG4gICAgaW5zdGFu
Y2UgPSBSZWFjdEhvc3RDb21wb25lbnQuY3JlYXRlSW5zdGFuY2VGb3JUZXh0KG5vZGUpO1xuICB9
IGVsc2Uge1xuICAgICFmYWxzZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicgPyBpbnZhcmlhbnQoZmFsc2UsICdFbmNvdW50ZXJlZCBpbnZhbGlkIFJlYWN0IG5vZGUgb2Yg
dHlwZSAlcycsIHR5cGVvZiBub2RlKSA6IF9wcm9kSW52YXJpYW50KCcxMzEnLCB0eXBlb2Ygbm9k
ZSkgOiB2b2lkIDA7XG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJykge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3
YXJuaW5nKHR5cGVvZiBpbnN0YW5jZS5tb3VudENvbXBvbmVudCA9PT0gJ2Z1bmN0aW9uJyAmJiB0
eXBlb2YgaW5zdGFuY2UucmVjZWl2ZUNvbXBvbmVudCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2Yg
aW5zdGFuY2UuZ2V0SG9zdE5vZGUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGluc3RhbmNlLnVu
bW91bnRDb21wb25lbnQgPT09ICdmdW5jdGlvbicsICdPbmx5IFJlYWN0IENvbXBvbmVudHMgY2Fu
IGJlIG1vdW50ZWQuJykgOiB2b2lkIDA7XG4gIH1cblxuICAvLyBUaGVzZSB0d28gZmllbGRzIGFy
ZSB1c2VkIGJ5IHRoZSBET00gYW5kIEFSVCBkaWZmaW5nIGFsZ29yaXRobXNcbiAgLy8gcmVzcGVj
dGl2ZWx5LiBJbnN0ZWFkIG9mIHVzaW5nIGV4cGFuZG9zIG9uIGNvbXBvbmVudHMsIHdlIHNob3Vs
ZCBiZVxuICAvLyBzdG9yaW5nIHRoZSBzdGF0ZSBuZWVkZWQgYnkgdGhlIGRpZmZpbmcgYWxnb3Jp
dGhtcyBlbHNld2hlcmUuXG4gIGluc3RhbmNlLl9tb3VudEluZGV4ID0gMDtcbiAgaW5zdGFuY2Uu
X21vdW50SW1hZ2UgPSBudWxsO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nKSB7XG4gICAgaW5zdGFuY2UuX2RlYnVnSUQgPSBzaG91bGRIYXZlRGVidWdJRCA/
IGdldE5leHREZWJ1Z0lEKCkgOiAwO1xuICB9XG5cbiAgLy8gSW50ZXJuYWwgaW5zdGFuY2VzIHNo
b3VsZCBmdWxseSBjb25zdHJ1Y3RlZCBhdCB0aGlzIHBvaW50LCBzbyB0aGV5IHNob3VsZFxuICAv
LyBub3QgZ2V0IGFueSBuZXcgZmllbGRzIGFkZGVkIHRvIHRoZW0gYXQgdGhpcyBwb2ludC5cbiAg
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpZiAoT2Jq
ZWN0LnByZXZlbnRFeHRlbnNpb25zKSB7XG4gICAgICBPYmplY3QucHJldmVudEV4dGVuc2lvbnMo
aW5zdGFuY2UpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBpbnN0YW5jZTtcbn1cblxuX2Fzc2ln
bihSZWFjdENvbXBvc2l0ZUNvbXBvbmVudFdyYXBwZXIucHJvdG90eXBlLCBSZWFjdENvbXBvc2l0
ZUNvbXBvbmVudCwge1xuICBfaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudDogaW5zdGFudGlhdGVS
ZWFjdENvbXBvbmVudFxufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gaW5zdGFudGlhdGVSZWFjdENv
bXBvbmVudDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoq
IC4vfi9yZWFjdC1kb20vbGliL2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQuanNcbiAqKiBtb2R1
bGUgaWQgPSA3NVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
biAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEBzZWUgaHR0
cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2Uv
dGhlLWlucHV0LWVsZW1lbnQuaHRtbCNpbnB1dC10eXBlLWF0dHItc3VtbWFyeVxuICovXG5cbnZh
ciBzdXBwb3J0ZWRJbnB1dFR5cGVzID0ge1xuICBjb2xvcjogdHJ1ZSxcbiAgZGF0ZTogdHJ1ZSxc
biAgZGF0ZXRpbWU6IHRydWUsXG4gICdkYXRldGltZS1sb2NhbCc6IHRydWUsXG4gIGVtYWlsOiB0
cnVlLFxuICBtb250aDogdHJ1ZSxcbiAgbnVtYmVyOiB0cnVlLFxuICBwYXNzd29yZDogdHJ1ZSxc
biAgcmFuZ2U6IHRydWUsXG4gIHNlYXJjaDogdHJ1ZSxcbiAgdGVsOiB0cnVlLFxuICB0ZXh0OiB0
cnVlLFxuICB0aW1lOiB0cnVlLFxuICB1cmw6IHRydWUsXG4gIHdlZWs6IHRydWVcbn07XG5cbmZ1
bmN0aW9uIGlzVGV4dElucHV0RWxlbWVudChlbGVtKSB7XG4gIHZhciBub2RlTmFtZSA9IGVsZW0g
JiYgZWxlbS5ub2RlTmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgaWYg
KG5vZGVOYW1lID09PSAnaW5wdXQnKSB7XG4gICAgcmV0dXJuICEhc3VwcG9ydGVkSW5wdXRUeXBl
c1tlbGVtLnR5cGVdO1xuICB9XG5cbiAgaWYgKG5vZGVOYW1lID09PSAndGV4dGFyZWEnKSB7XG4g
ICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG5cbm1vZHVsZS5leHBv
cnRzID0gaXNUZXh0SW5wdXRFbGVtZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdF
QlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvaXNUZXh0SW5wdXRFbGVtZW50Lmpz
XG4gKiogbW9kdWxlIGlkID0gNzZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxu
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFeGVjdXRp
b25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7
XG52YXIgZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyID0gcmVxdWlyZSgnLi9lc2NhcGVUZXh0
Q29udGVudEZvckJyb3dzZXInKTtcbnZhciBzZXRJbm5lckhUTUwgPSByZXF1aXJlKCcuL3NldElu
bmVySFRNTCcpO1xuXG4vKipcbiAqIFNldCB0aGUgdGV4dENvbnRlbnQgcHJvcGVydHkgb2YgYSBu
b2RlLCBlbnN1cmluZyB0aGF0IHdoaXRlc3BhY2UgaXMgcHJlc2VydmVkXG4gKiBldmVuIGluIElF
OC4gaW5uZXJUZXh0IGlzIGEgcG9vciBzdWJzdGl0dXRlIGZvciB0ZXh0Q29udGVudCBhbmQsIGFt
b25nIG1hbnlcbiAqIGlzc3VlcywgaW5zZXJ0cyA8YnI+IGluc3RlYWQgb2YgdGhlIGxpdGVyYWwg
bmV3bGluZSBjaGFycy4gaW5uZXJIVE1MIGJlaGF2ZXNcbiAqIGFzIGl0IHNob3VsZC5cbiAqXG4g
KiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVcbiAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0XG4gKiBA
aW50ZXJuYWxcbiAqL1xudmFyIHNldFRleHRDb250ZW50ID0gZnVuY3Rpb24gKG5vZGUsIHRleHQp
IHtcbiAgaWYgKHRleHQpIHtcbiAgICB2YXIgZmlyc3RDaGlsZCA9IG5vZGUuZmlyc3RDaGlsZDtc
blxuICAgIGlmIChmaXJzdENoaWxkICYmIGZpcnN0Q2hpbGQgPT09IG5vZGUubGFzdENoaWxkICYm
IGZpcnN0Q2hpbGQubm9kZVR5cGUgPT09IDMpIHtcbiAgICAgIGZpcnN0Q2hpbGQubm9kZVZhbHVl
ID0gdGV4dDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAgbm9kZS50ZXh0Q29udGVudCA9
IHRleHQ7XG59O1xuXG5pZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG4gIGlm
ICghKCd0ZXh0Q29udGVudCcgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSkge1xuICAgIHNl
dFRleHRDb250ZW50ID0gZnVuY3Rpb24gKG5vZGUsIHRleHQpIHtcbiAgICAgIGlmIChub2RlLm5v
ZGVUeXBlID09PSAzKSB7XG4gICAgICAgIG5vZGUubm9kZVZhbHVlID0gdGV4dDtcbiAgICAgICAg
cmV0dXJuO1xuICAgICAgfVxuICAgICAgc2V0SW5uZXJIVE1MKG5vZGUsIGVzY2FwZVRleHRDb250
ZW50Rm9yQnJvd3Nlcih0ZXh0KSk7XG4gICAgfTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9
IHNldFRleHRDb250ZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9P
VEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvc2V0VGV4dENvbnRlbnQuanNcbiAqKiBtb2R1bGUg
aWQgPSA3N1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAq
XG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVx
dWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFyIFJlYWN0Q3VycmVudE93bmVyID0g
cmVxdWlyZSgncmVhY3QvbGliL1JlYWN0Q3VycmVudE93bmVyJyk7XG52YXIgUkVBQ1RfRUxFTUVO
VF9UWVBFID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnRTeW1ib2wnKTtcblxudmFyIGdldEl0ZXJh
dG9yRm4gPSByZXF1aXJlKCcuL2dldEl0ZXJhdG9yRm4nKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1
aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciBLZXlFc2NhcGVVdGlscyA9IHJlcXVpcmUo
Jy4vS2V5RXNjYXBlVXRpbHMnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2Fy
bmluZycpO1xuXG52YXIgU0VQQVJBVE9SID0gJy4nO1xudmFyIFNVQlNFUEFSQVRPUiA9ICc6Jztc
blxuLyoqXG4gKiBUaGlzIGlzIGlubGluZWQgZnJvbSBSZWFjdEVsZW1lbnQgc2luY2UgdGhpcyBm
aWxlIGlzIHNoYXJlZCBiZXR3ZWVuXG4gKiBpc29tb3JwaGljIGFuZCByZW5kZXJlcnMuIFdlIGNv
dWxkIGV4dHJhY3QgdGhpcyB0byBhXG4gKlxuICovXG5cbi8qKlxuICogVE9ETzogVGVzdCB0aGF0
IGEgc2luZ2xlIGNoaWxkIGFuZCBhbiBhcnJheSB3aXRoIG9uZSBpdGVtIGhhdmUgdGhlIHNhbWUg
a2V5XG4gKiBwYXR0ZXJuLlxuICovXG5cbnZhciBkaWRXYXJuQWJvdXRNYXBzID0gZmFsc2U7XG5c
bi8qKlxuICogR2VuZXJhdGUgYSBrZXkgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyBhIGNvbXBvbmVu
dCB3aXRoaW4gYSBzZXQuXG4gKlxuICogQHBhcmFtIHsqfSBjb21wb25lbnQgQSBjb21wb25lbnQg
dGhhdCBjb3VsZCBjb250YWluIGEgbWFudWFsIGtleS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRl
eCBJbmRleCB0aGF0IGlzIHVzZWQgaWYgYSBtYW51YWwga2V5IGlzIG5vdCBwcm92aWRlZC5cbiAq
IEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZ2V0Q29tcG9uZW50S2V5KGNvbXBvbmVu
dCwgaW5kZXgpIHtcbiAgLy8gRG8gc29tZSB0eXBlY2hlY2tpbmcgaGVyZSBzaW5jZSB3ZSBjYWxs
IHRoaXMgYmxpbmRseS4gV2Ugd2FudCB0byBlbnN1cmVcbiAgLy8gdGhhdCB3ZSBkb24ndCBibG9j
ayBwb3RlbnRpYWwgZnV0dXJlIEVTIEFQSXMuXG4gIGlmIChjb21wb25lbnQgJiYgdHlwZW9mIGNv
bXBvbmVudCA9PT0gJ29iamVjdCcgJiYgY29tcG9uZW50LmtleSAhPSBudWxsKSB7XG4gICAgLy8g
RXhwbGljaXQga2V5XG4gICAgcmV0dXJuIEtleUVzY2FwZVV0aWxzLmVzY2FwZShjb21wb25lbnQu
a2V5KTtcbiAgfVxuICAvLyBJbXBsaWNpdCBrZXkgZGV0ZXJtaW5lZCBieSB0aGUgaW5kZXggaW4g
dGhlIHNldFxuICByZXR1cm4gaW5kZXgudG9TdHJpbmcoMzYpO1xufVxuXG4vKipcbiAqIEBwYXJh
bSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgY29udGFpbmVyLlxuICogQHBhcmFtIHshc3Ry
aW5nfSBuYW1lU29GYXIgTmFtZSBvZiB0aGUga2V5IHBhdGggc28gZmFyLlxuICogQHBhcmFtIHsh
ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxiYWNrIHRvIGludm9rZSB3aXRoIGVhY2ggY2hpbGQgZm91
bmQuXG4gKiBAcGFyYW0gez8qfSB0cmF2ZXJzZUNvbnRleHQgVXNlZCB0byBwYXNzIGluZm9ybWF0
aW9uIHRocm91Z2hvdXQgdGhlIHRyYXZlcnNhbFxuICogcHJvY2Vzcy5cbiAqIEByZXR1cm4geyFu
dW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRyZW4gaW4gdGhpcyBzdWJ0cmVlLlxuICovXG5mdW5j
dGlvbiB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZHJlbiwgbmFtZVNvRmFyLCBjYWxsYmFj
aywgdHJhdmVyc2VDb250ZXh0KSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIGNoaWxkcmVuO1xuXG4g
IGlmICh0eXBlID09PSAndW5kZWZpbmVkJyB8fCB0eXBlID09PSAnYm9vbGVhbicpIHtcbiAgICAv
LyBBbGwgb2YgdGhlIGFib3ZlIGFyZSBwZXJjZWl2ZWQgYXMgbnVsbC5cbiAgICBjaGlsZHJlbiA9
IG51bGw7XG4gIH1cblxuICBpZiAoY2hpbGRyZW4gPT09IG51bGwgfHwgdHlwZSA9PT0gJ3N0cmlu
ZycgfHwgdHlwZSA9PT0gJ251bWJlcicgfHxcbiAgLy8gVGhlIGZvbGxvd2luZyBpcyBpbmxpbmVk
IGZyb20gUmVhY3RFbGVtZW50LiBUaGlzIG1lYW5zIHdlIGNhbiBvcHRpbWl6ZVxuICAvLyBzb21l
IGNoZWNrcy4gUmVhY3QgRmliZXIgYWxzbyBpbmxpbmVzIHRoaXMgbG9naWMgZm9yIHNpbWlsYXIg
cHVycG9zZXMuXG4gIHR5cGUgPT09ICdvYmplY3QnICYmIGNoaWxkcmVuLiQkdHlwZW9mID09PSBS
RUFDVF9FTEVNRU5UX1RZUEUpIHtcbiAgICBjYWxsYmFjayh0cmF2ZXJzZUNvbnRleHQsIGNoaWxk
cmVuLFxuICAgIC8vIElmIGl0J3MgdGhlIG9ubHkgY2hpbGQsIHRyZWF0IHRoZSBuYW1lIGFzIGlm
IGl0IHdhcyB3cmFwcGVkIGluIGFuIGFycmF5XG4gICAgLy8gc28gdGhhdCBpdCdzIGNvbnNpc3Rl
bnQgaWYgdGhlIG51bWJlciBvZiBjaGlsZHJlbiBncm93cy5cbiAgICBuYW1lU29GYXIgPT09ICcn
ID8gU0VQQVJBVE9SICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkcmVuLCAwKSA6IG5hbWVTb0Zhcik7
XG4gICAgcmV0dXJuIDE7XG4gIH1cblxuICB2YXIgY2hpbGQ7XG4gIHZhciBuZXh0TmFtZTtcbiAg
dmFyIHN1YnRyZWVDb3VudCA9IDA7IC8vIENvdW50IG9mIGNoaWxkcmVuIGZvdW5kIGluIHRoZSBj
dXJyZW50IHN1YnRyZWUuXG4gIHZhciBuZXh0TmFtZVByZWZpeCA9IG5hbWVTb0ZhciA9PT0gJycg
PyBTRVBBUkFUT1IgOiBuYW1lU29GYXIgKyBTVUJTRVBBUkFUT1I7XG5cbiAgaWYgKEFycmF5Lmlz
QXJyYXkoY2hpbGRyZW4pKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbi5sZW5n
dGg7IGkrKykge1xuICAgICAgY2hpbGQgPSBjaGlsZHJlbltpXTtcbiAgICAgIG5leHROYW1lID0g
bmV4dE5hbWVQcmVmaXggKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIGkpO1xuICAgICAgc3VidHJl
ZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwgY2FsbGJh
Y2ssIHRyYXZlcnNlQ29udGV4dCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHZhciBpdGVyYXRv
ckZuID0gZ2V0SXRlcmF0b3JGbihjaGlsZHJlbik7XG4gICAgaWYgKGl0ZXJhdG9yRm4pIHtcbiAg
ICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9yRm4uY2FsbChjaGlsZHJlbik7XG4gICAgICB2YXIg
c3RlcDtcbiAgICAgIGlmIChpdGVyYXRvckZuICE9PSBjaGlsZHJlbi5lbnRyaWVzKSB7XG4gICAg
ICAgIHZhciBpaSA9IDA7XG4gICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkp
LmRvbmUpIHtcbiAgICAgICAgICBjaGlsZCA9IHN0ZXAudmFsdWU7XG4gICAgICAgICAgbmV4dE5h
bWUgPSBuZXh0TmFtZVByZWZpeCArIGdldENvbXBvbmVudEtleShjaGlsZCwgaWkrKyk7XG4gICAg
ICAgICAgc3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBuZXh0
TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxz
ZSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
XG4gICAgICAgICAgdmFyIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0gPSAnJztcbiAgICAgICAgICBp
ZiAoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCkge1xuICAgICAgICAgICAgdmFyIG1hcHNBc0No
aWxkcmVuT3duZXJOYW1lID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5nZXROYW1lKCk7XG4g
ICAgICAgICAgICBpZiAobWFwc0FzQ2hpbGRyZW5Pd25lck5hbWUpIHtcbiAgICAgICAgICAgICAg
bWFwc0FzQ2hpbGRyZW5BZGRlbmR1bSA9ICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcg
KyBtYXBzQXNDaGlsZHJlbk93bmVyTmFtZSArICdgLic7XG4gICAgICAgICAgICB9XG4gICAgICAg
ICAgfVxuICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3
YXJuaW5nKGRpZFdhcm5BYm91dE1hcHMsICdVc2luZyBNYXBzIGFzIGNoaWxkcmVuIGlzIG5vdCB5
ZXQgZnVsbHkgc3VwcG9ydGVkLiBJdCBpcyBhbiAnICsgJ2V4cGVyaW1lbnRhbCBmZWF0dXJlIHRo
YXQgbWlnaHQgYmUgcmVtb3ZlZC4gQ29udmVydCBpdCB0byBhICcgKyAnc2VxdWVuY2UgLyBpdGVy
YWJsZSBvZiBrZXllZCBSZWFjdEVsZW1lbnRzIGluc3RlYWQuJXMnLCBtYXBzQXNDaGlsZHJlbkFk
ZGVuZHVtKSA6IHZvaWQgMDtcbiAgICAgICAgICBkaWRXYXJuQWJvdXRNYXBzID0gdHJ1ZTtcbiAg
ICAgICAgfVxuICAgICAgICAvLyBJdGVyYXRvciB3aWxsIHByb3ZpZGUgZW50cnkgW2ssdl0gdHVw
bGVzIHJhdGhlciB0aGFuIHZhbHVlcy5cbiAgICAgICAgd2hpbGUgKCEoc3RlcCA9IGl0ZXJhdG9y
Lm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgIHZhciBlbnRyeSA9IHN0ZXAudmFsdWU7XG4gICAg
ICAgICAgaWYgKGVudHJ5KSB7XG4gICAgICAgICAgICBjaGlsZCA9IGVudHJ5WzFdO1xuICAgICAg
ICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIEtleUVzY2FwZVV0aWxzLmVzY2FwZShl
bnRyeVswXSkgKyBTVUJTRVBBUkFUT1IgKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIDApO1xuICAg
ICAgICAgICAgc3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkLCBu
ZXh0TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7XG4gICAgICAgICAgfVxuICAgICAg
ICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnb2JqZWN0Jykge1xuICAgICAg
dmFyIGFkZGVuZHVtID0gJyc7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJykge1xuICAgICAgICBhZGRlbmR1bSA9ICcgSWYgeW91IG1lYW50IHRvIHJlbmRl
ciBhIGNvbGxlY3Rpb24gb2YgY2hpbGRyZW4sIHVzZSBhbiBhcnJheSAnICsgJ2luc3RlYWQgb3Ig
d3JhcCB0aGUgb2JqZWN0IHVzaW5nIGNyZWF0ZUZyYWdtZW50KG9iamVjdCkgZnJvbSB0aGUgJyAr
ICdSZWFjdCBhZGQtb25zLic7XG4gICAgICAgIGlmIChjaGlsZHJlbi5faXNSZWFjdEVsZW1lbnQp
IHtcbiAgICAgICAgICBhZGRlbmR1bSA9IFwiIEl0IGxvb2tzIGxpa2UgeW91J3JlIHVzaW5nIGFu
IGVsZW1lbnQgY3JlYXRlZCBieSBhIGRpZmZlcmVudCBcIiArICd2ZXJzaW9uIG9mIFJlYWN0LiBN
YWtlIHN1cmUgdG8gdXNlIG9ubHkgb25lIGNvcHkgb2YgUmVhY3QuJztcbiAgICAgICAgfVxuICAg
ICAgICBpZiAoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCkge1xuICAgICAgICAgIHZhciBuYW1l
ID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5nZXROYW1lKCk7XG4gICAgICAgICAgaWYgKG5h
bWUpIHtcbiAgICAgICAgICAgIGFkZGVuZHVtICs9ICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qg
b2YgYCcgKyBuYW1lICsgJ2AuJztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAg
ICAgIHZhciBjaGlsZHJlblN0cmluZyA9IFN0cmluZyhjaGlsZHJlbik7XG4gICAgICAhZmFsc2Ug
PyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNl
LCAnT2JqZWN0cyBhcmUgbm90IHZhbGlkIGFzIGEgUmVhY3QgY2hpbGQgKGZvdW5kOiAlcykuJXMn
LCBjaGlsZHJlblN0cmluZyA9PT0gJ1tvYmplY3QgT2JqZWN0XScgPyAnb2JqZWN0IHdpdGgga2V5
cyB7JyArIE9iamVjdC5rZXlzKGNoaWxkcmVuKS5qb2luKCcsICcpICsgJ30nIDogY2hpbGRyZW5T
dHJpbmcsIGFkZGVuZHVtKSA6IF9wcm9kSW52YXJpYW50KCczMScsIGNoaWxkcmVuU3RyaW5nID09
PSAnW29iamVjdCBPYmplY3RdJyA/ICdvYmplY3Qgd2l0aCBrZXlzIHsnICsgT2JqZWN0LmtleXMo
Y2hpbGRyZW4pLmpvaW4oJywgJykgKyAnfScgOiBjaGlsZHJlblN0cmluZywgYWRkZW5kdW0pIDog
dm9pZCAwO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdWJ0cmVlQ291bnQ7XG59XG5cbi8qKlxu
ICogVHJhdmVyc2VzIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHBy
b3BzLmNoaWxkcmVuYCwgYnV0XG4gKiBtaWdodCBhbHNvIGJlIHNwZWNpZmllZCB0aHJvdWdoIGF0
dHJpYnV0ZXM6XG4gKlxuICogLSBgdHJhdmVyc2VBbGxDaGlsZHJlbih0aGlzLnByb3BzLmNoaWxk
cmVuLCAuLi4pYFxuICogLSBgdHJhdmVyc2VBbGxDaGlsZHJlbih0aGlzLnByb3BzLmxlZnRQYW5l
bENoaWxkcmVuLCAuLi4pYFxuICpcbiAqIFRoZSBgdHJhdmVyc2VDb250ZXh0YCBpcyBhbiBvcHRp
b25hbCBhcmd1bWVudCB0aGF0IGlzIHBhc3NlZCB0aHJvdWdoIHRoZVxuICogZW50aXJlIHRyYXZl
cnNhbC4gSXQgY2FuIGJlIHVzZWQgdG8gc3RvcmUgYWNjdW11bGF0aW9ucyBvciBhbnl0aGluZyBl
bHNlIHRoYXRcbiAqIHRoZSBjYWxsYmFjayBtaWdodCBmaW5kIHJlbGV2YW50LlxuICpcbiAqIEBw
YXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgb2JqZWN0LlxuICogQHBhcmFtIHshZnVu
Y3Rpb259IGNhbGxiYWNrIFRvIGludm9rZSB1cG9uIHRyYXZlcnNpbmcgZWFjaCBjaGlsZC5cbiAq
IEBwYXJhbSB7Pyp9IHRyYXZlcnNlQ29udGV4dCBDb250ZXh0IGZvciB0cmF2ZXJzYWwuXG4gKiBA
cmV0dXJuIHshbnVtYmVyfSBUaGUgbnVtYmVyIG9mIGNoaWxkcmVuIGluIHRoaXMgc3VidHJlZS5c
biAqL1xuZnVuY3Rpb24gdHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgY2FsbGJhY2ssIHRy
YXZlcnNlQ29udGV4dCkge1xuICBpZiAoY2hpbGRyZW4gPT0gbnVsbCkge1xuICAgIHJldHVybiAw
O1xuICB9XG5cbiAgcmV0dXJuIHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkcmVuLCAnJywg
Y2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdHJhdmVy
c2VBbGxDaGlsZHJlbjtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RF
UlxuICoqIC4vfi9yZWFjdC1kb20vbGliL3RyYXZlcnNlQWxsQ2hpbGRyZW4uanNcbiAqKiBtb2R1
bGUgaWQgPSA3OFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xu
XG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNz
aWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMu
bGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGlu
IHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJj
ZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0
OyB9O1xuXG5leHBvcnRzLmRlZmF1bHQgPSBjb25uZWN0QWR2YW5jZWQ7XG5cbnZhciBfaG9pc3RO
b25SZWFjdFN0YXRpY3MgPSByZXF1aXJlKCdob2lzdC1ub24tcmVhY3Qtc3RhdGljcycpO1xuXG52
YXIgX2hvaXN0Tm9uUmVhY3RTdGF0aWNzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hvaXN0
Tm9uUmVhY3RTdGF0aWNzKTtcblxudmFyIF9pbnZhcmlhbnQgPSByZXF1aXJlKCdpbnZhcmlhbnQn
KTtcblxudmFyIF9pbnZhcmlhbnQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaW52YXJpYW50
KTtcblxudmFyIF9yZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG5cbnZhciBfU3Vic2NyaXB0aW9u
ID0gcmVxdWlyZSgnLi4vdXRpbHMvU3Vic2NyaXB0aW9uJyk7XG5cbnZhciBfU3Vic2NyaXB0aW9u
MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX1N1YnNjcmlwdGlvbik7XG5cbnZhciBfUHJvcFR5
cGVzID0gcmVxdWlyZSgnLi4vdXRpbHMvUHJvcFR5cGVzJyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9w
UmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmog
OiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5j
ZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3Rvcikp
IHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlv
blwiKTsgfSB9XG5cbmZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNh
bGwpIHsgaWYgKCFzZWxmKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0
IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1
cm4gY2FsbCAmJiAodHlwZW9mIGNhbGwgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09
IFwiZnVuY3Rpb25cIikgPyBjYWxsIDogc2VsZjsgfVxuXG5mdW5jdGlvbiBfaW5oZXJpdHMoc3Vi
Q2xhc3MsIHN1cGVyQ2xhc3MpIHsgaWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9u
XCIgJiYgc3VwZXJDbGFzcyAhPT0gbnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIg
ZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArIHR5
cGVvZiBzdXBlckNsYXNzKTsgfSBzdWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1
cGVyQ2xhc3MgJiYgc3VwZXJDbGFzcy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6
IHN1YkNsYXNzLCBlbnVtZXJhYmxlOiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJs
ZTogdHJ1ZSB9IH0pOyBpZiAoc3VwZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2Jq
ZWN0LnNldFByb3RvdHlwZU9mKHN1YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJv
dG9fXyA9IHN1cGVyQ2xhc3M7IH1cblxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVz
KG9iaiwga2V5cykgeyB2YXIgdGFyZ2V0ID0ge307IGZvciAodmFyIGkgaW4gb2JqKSB7IGlmIChr
ZXlzLmluZGV4T2YoaSkgPj0gMCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNP
d25Qcm9wZXJ0eS5jYWxsKG9iaiwgaSkpIGNvbnRpbnVlOyB0YXJnZXRbaV0gPSBvYmpbaV07IH0g
cmV0dXJuIHRhcmdldDsgfVxuXG52YXIgaG90UmVsb2FkaW5nVmVyc2lvbiA9IDA7XG52YXIgZHVt
bXlTdGF0ZSA9IHt9O1xuZnVuY3Rpb24gbm9vcCgpIHt9XG5mdW5jdGlvbiBtYWtlU2VsZWN0b3JT
dGF0ZWZ1bChzb3VyY2VTZWxlY3Rvciwgc3RvcmUpIHtcbiAgLy8gd3JhcCB0aGUgc2VsZWN0b3Ig
aW4gYW4gb2JqZWN0IHRoYXQgdHJhY2tzIGl0cyByZXN1bHRzIGJldHdlZW4gcnVucy5cbiAgdmFy
IHNlbGVjdG9yID0ge1xuICAgIHJ1bjogZnVuY3Rpb24gcnVuQ29tcG9uZW50U2VsZWN0b3IocHJv
cHMpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBuZXh0UHJvcHMgPSBzb3VyY2VTZWxlY3Rv
cihzdG9yZS5nZXRTdGF0ZSgpLCBwcm9wcyk7XG4gICAgICAgIGlmIChuZXh0UHJvcHMgIT09IHNl
bGVjdG9yLnByb3BzIHx8IHNlbGVjdG9yLmVycm9yKSB7XG4gICAgICAgICAgc2VsZWN0b3Iuc2hv
dWxkQ29tcG9uZW50VXBkYXRlID0gdHJ1ZTtcbiAgICAgICAgICBzZWxlY3Rvci5wcm9wcyA9IG5l
eHRQcm9wcztcbiAgICAgICAgICBzZWxlY3Rvci5lcnJvciA9IG51bGw7XG4gICAgICAgIH1cbiAg
ICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHNlbGVjdG9yLnNob3VsZENvbXBvbmVudFVw
ZGF0ZSA9IHRydWU7XG4gICAgICAgIHNlbGVjdG9yLmVycm9yID0gZXJyb3I7XG4gICAgICB9XG4g
ICAgfVxuICB9O1xuXG4gIHJldHVybiBzZWxlY3Rvcjtcbn1cblxuZnVuY3Rpb24gY29ubmVjdEFk
dmFuY2VkKFxuLypcbiAgc2VsZWN0b3JGYWN0b3J5IGlzIGEgZnVuYyB0aGF0IGlzIHJlc3BvbnNp
YmxlIGZvciByZXR1cm5pbmcgdGhlIHNlbGVjdG9yIGZ1bmN0aW9uIHVzZWQgdG9cbiAgY29tcHV0
ZSBuZXcgcHJvcHMgZnJvbSBzdGF0ZSwgcHJvcHMsIGFuZCBkaXNwYXRjaC4gRm9yIGV4YW1wbGU6
XG4gICAgIGV4cG9ydCBkZWZhdWx0IGNvbm5lY3RBZHZhbmNlZCgoZGlzcGF0Y2gsIG9wdGlvbnMp
ID0+IChzdGF0ZSwgcHJvcHMpID0+ICh7XG4gICAgICB0aGluZzogc3RhdGUudGhpbmdzW3Byb3Bz
LnRoaW5nSWRdLFxuICAgICAgc2F2ZVRoaW5nOiBmaWVsZHMgPT4gZGlzcGF0Y2goYWN0aW9uQ3Jl
YXRvcnMuc2F2ZVRoaW5nKHByb3BzLnRoaW5nSWQsIGZpZWxkcykpLFxuICAgIH0pKShZb3VyQ29t
cG9uZW50KVxuICAgQWNjZXNzIHRvIGRpc3BhdGNoIGlzIHByb3ZpZGVkIHRvIHRoZSBmYWN0b3J5
IHNvIHNlbGVjdG9yRmFjdG9yaWVzIGNhbiBiaW5kIGFjdGlvbkNyZWF0b3JzXG4gIG91dHNpZGUg
b2YgdGhlaXIgc2VsZWN0b3IgYXMgYW4gb3B0aW1pemF0aW9uLiBPcHRpb25zIHBhc3NlZCB0byBj
b25uZWN0QWR2YW5jZWQgYXJlIHBhc3NlZCB0b1xuICB0aGUgc2VsZWN0b3JGYWN0b3J5LCBhbG9u
ZyB3aXRoIGRpc3BsYXlOYW1lIGFuZCBXcmFwcGVkQ29tcG9uZW50LCBhcyB0aGUgc2Vjb25kIGFy
Z3VtZW50LlxuICAgTm90ZSB0aGF0IHNlbGVjdG9yRmFjdG9yeSBpcyByZXNwb25zaWJsZSBmb3Ig
YWxsIGNhY2hpbmcvbWVtb2l6YXRpb24gb2YgaW5ib3VuZCBhbmQgb3V0Ym91bmRcbiAgcHJvcHMu
IERvIG5vdCB1c2UgY29ubmVjdEFkdmFuY2VkIGRpcmVjdGx5IHdpdGhvdXQgbWVtb2l6aW5nIHJl
c3VsdHMgYmV0d2VlbiBjYWxscyB0byB5b3VyXG4gIHNlbGVjdG9yLCBvdGhlcndpc2UgdGhlIENv
bm5lY3QgY29tcG9uZW50IHdpbGwgcmUtcmVuZGVyIG9uIGV2ZXJ5IHN0YXRlIG9yIHByb3BzIGNo
YW5nZS5cbiovXG5zZWxlY3RvckZhY3RvcnkpIHtcbiAgdmFyIF9jb250ZXh0VHlwZXMsIF9jaGls
ZENvbnRleHRUeXBlcztcblxuICB2YXIgX3JlZiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFy
Z3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge30sXG4gICAgICBfcmVm
JGdldERpc3BsYXlOYW1lID0gX3JlZi5nZXREaXNwbGF5TmFtZSxcbiAgICAgIGdldERpc3BsYXlO
YW1lID0gX3JlZiRnZXREaXNwbGF5TmFtZSA9PT0gdW5kZWZpbmVkID8gZnVuY3Rpb24gKG5hbWUp
IHtcbiAgICByZXR1cm4gJ0Nvbm5lY3RBZHZhbmNlZCgnICsgbmFtZSArICcpJztcbiAgfSA6IF9y
ZWYkZ2V0RGlzcGxheU5hbWUsXG4gICAgICBfcmVmJG1ldGhvZE5hbWUgPSBfcmVmLm1ldGhvZE5h
bWUsXG4gICAgICBtZXRob2ROYW1lID0gX3JlZiRtZXRob2ROYW1lID09PSB1bmRlZmluZWQgPyAn
Y29ubmVjdEFkdmFuY2VkJyA6IF9yZWYkbWV0aG9kTmFtZSxcbiAgICAgIF9yZWYkcmVuZGVyQ291
bnRQcm9wID0gX3JlZi5yZW5kZXJDb3VudFByb3AsXG4gICAgICByZW5kZXJDb3VudFByb3AgPSBf
cmVmJHJlbmRlckNvdW50UHJvcCA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogX3JlZiRyZW5k
ZXJDb3VudFByb3AsXG4gICAgICBfcmVmJHNob3VsZEhhbmRsZVN0YXQgPSBfcmVmLnNob3VsZEhh
bmRsZVN0YXRlQ2hhbmdlcyxcbiAgICAgIHNob3VsZEhhbmRsZVN0YXRlQ2hhbmdlcyA9IF9yZWYk
c2hvdWxkSGFuZGxlU3RhdCA9PT0gdW5kZWZpbmVkID8gdHJ1ZSA6IF9yZWYkc2hvdWxkSGFuZGxl
U3RhdCxcbiAgICAgIF9yZWYkc3RvcmVLZXkgPSBfcmVmLnN0b3JlS2V5LFxuICAgICAgc3RvcmVL
ZXkgPSBfcmVmJHN0b3JlS2V5ID09PSB1bmRlZmluZWQgPyAnc3RvcmUnIDogX3JlZiRzdG9yZUtl
eSxcbiAgICAgIF9yZWYkd2l0aFJlZiA9IF9yZWYud2l0aFJlZixcbiAgICAgIHdpdGhSZWYgPSBf
cmVmJHdpdGhSZWYgPT09IHVuZGVmaW5lZCA/IGZhbHNlIDogX3JlZiR3aXRoUmVmLFxuICAgICAg
Y29ubmVjdE9wdGlvbnMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgWydnZXREaXNw
bGF5TmFtZScsICdtZXRob2ROYW1lJywgJ3JlbmRlckNvdW50UHJvcCcsICdzaG91bGRIYW5kbGVT
dGF0ZUNoYW5nZXMnLCAnc3RvcmVLZXknLCAnd2l0aFJlZiddKTtcblxuICB2YXIgc3Vic2NyaXB0
aW9uS2V5ID0gc3RvcmVLZXkgKyAnU3Vic2NyaXB0aW9uJztcbiAgdmFyIHZlcnNpb24gPSBob3RS
ZWxvYWRpbmdWZXJzaW9uKys7XG5cbiAgdmFyIGNvbnRleHRUeXBlcyA9IChfY29udGV4dFR5cGVz
ID0ge30sIF9jb250ZXh0VHlwZXNbc3RvcmVLZXldID0gX1Byb3BUeXBlcy5zdG9yZVNoYXBlLCBf
Y29udGV4dFR5cGVzW3N1YnNjcmlwdGlvbktleV0gPSBfUHJvcFR5cGVzLnN1YnNjcmlwdGlvblNo
YXBlLCBfY29udGV4dFR5cGVzKTtcbiAgdmFyIGNoaWxkQ29udGV4dFR5cGVzID0gKF9jaGlsZENv
bnRleHRUeXBlcyA9IHt9LCBfY2hpbGRDb250ZXh0VHlwZXNbc3Vic2NyaXB0aW9uS2V5XSA9IF9Q
cm9wVHlwZXMuc3Vic2NyaXB0aW9uU2hhcGUsIF9jaGlsZENvbnRleHRUeXBlcyk7XG5cbiAgcmV0
dXJuIGZ1bmN0aW9uIHdyYXBXaXRoQ29ubmVjdChXcmFwcGVkQ29tcG9uZW50KSB7XG4gICAgKDAs
IF9pbnZhcmlhbnQyLmRlZmF1bHQpKHR5cGVvZiBXcmFwcGVkQ29tcG9uZW50ID09ICdmdW5jdGlv
bicsICdZb3UgbXVzdCBwYXNzIGEgY29tcG9uZW50IHRvIHRoZSBmdW5jdGlvbiByZXR1cm5lZCBi
eSAnICsgKCdjb25uZWN0LiBJbnN0ZWFkIHJlY2VpdmVkICcgKyBKU09OLnN0cmluZ2lmeShXcmFw
cGVkQ29tcG9uZW50KSkpO1xuXG4gICAgdmFyIHdyYXBwZWRDb21wb25lbnROYW1lID0gV3JhcHBl
ZENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBXcmFwcGVkQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBv
bmVudCc7XG5cbiAgICB2YXIgZGlzcGxheU5hbWUgPSBnZXREaXNwbGF5TmFtZSh3cmFwcGVkQ29t
cG9uZW50TmFtZSk7XG5cbiAgICB2YXIgc2VsZWN0b3JGYWN0b3J5T3B0aW9ucyA9IF9leHRlbmRz
KHt9LCBjb25uZWN0T3B0aW9ucywge1xuICAgICAgZ2V0RGlzcGxheU5hbWU6IGdldERpc3BsYXlO
YW1lLFxuICAgICAgbWV0aG9kTmFtZTogbWV0aG9kTmFtZSxcbiAgICAgIHJlbmRlckNvdW50UHJv
cDogcmVuZGVyQ291bnRQcm9wLFxuICAgICAgc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzOiBzaG91
bGRIYW5kbGVTdGF0ZUNoYW5nZXMsXG4gICAgICBzdG9yZUtleTogc3RvcmVLZXksXG4gICAgICB3
aXRoUmVmOiB3aXRoUmVmLFxuICAgICAgZGlzcGxheU5hbWU6IGRpc3BsYXlOYW1lLFxuICAgICAg
d3JhcHBlZENvbXBvbmVudE5hbWU6IHdyYXBwZWRDb21wb25lbnROYW1lLFxuICAgICAgV3JhcHBl
ZENvbXBvbmVudDogV3JhcHBlZENvbXBvbmVudFxuICAgIH0pO1xuXG4gICAgdmFyIENvbm5lY3Qg
PSBmdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICAgICAgX2luaGVyaXRzKENvbm5lY3QsIF9Db21w
b25lbnQpO1xuXG4gICAgICBmdW5jdGlvbiBDb25uZWN0KHByb3BzLCBjb250ZXh0KSB7XG4gICAg
ICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBDb25uZWN0KTtcblxuICAgICAgICB2YXIgX3RoaXMg
PSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCBfQ29tcG9uZW50LmNhbGwodGhpcywg
cHJvcHMsIGNvbnRleHQpKTtcblxuICAgICAgICBfdGhpcy52ZXJzaW9uID0gdmVyc2lvbjtcbiAg
ICAgICAgX3RoaXMuc3RhdGUgPSB7fTtcbiAgICAgICAgX3RoaXMucmVuZGVyQ291bnQgPSAwO1xu
ICAgICAgICBfdGhpcy5zdG9yZSA9IHByb3BzW3N0b3JlS2V5XSB8fCBjb250ZXh0W3N0b3JlS2V5
XTtcbiAgICAgICAgX3RoaXMucHJvcHNNb2RlID0gQm9vbGVhbihwcm9wc1tzdG9yZUtleV0pO1xu
ICAgICAgICBfdGhpcy5zZXRXcmFwcGVkSW5zdGFuY2UgPSBfdGhpcy5zZXRXcmFwcGVkSW5zdGFu
Y2UuYmluZChfdGhpcyk7XG5cbiAgICAgICAgKDAsIF9pbnZhcmlhbnQyLmRlZmF1bHQpKF90aGlz
LnN0b3JlLCAnQ291bGQgbm90IGZpbmQgXCInICsgc3RvcmVLZXkgKyAnXCIgaW4gZWl0aGVyIHRo
ZSBjb250ZXh0IG9yIHByb3BzIG9mICcgKyAoJ1wiJyArIGRpc3BsYXlOYW1lICsgJ1wiLiBFaXRo
ZXIgd3JhcCB0aGUgcm9vdCBjb21wb25lbnQgaW4gYSA8UHJvdmlkZXI+LCAnKSArICgnb3IgZXhw
bGljaXRseSBwYXNzIFwiJyArIHN0b3JlS2V5ICsgJ1wiIGFzIGEgcHJvcCB0byBcIicgKyBkaXNw
bGF5TmFtZSArICdcIi4nKSk7XG5cbiAgICAgICAgX3RoaXMuaW5pdFNlbGVjdG9yKCk7XG4gICAg
ICAgIF90aGlzLmluaXRTdWJzY3JpcHRpb24oKTtcbiAgICAgICAgcmV0dXJuIF90aGlzO1xuICAg
ICAgfVxuXG4gICAgICBDb25uZWN0LnByb3RvdHlwZS5nZXRDaGlsZENvbnRleHQgPSBmdW5jdGlv
biBnZXRDaGlsZENvbnRleHQoKSB7XG4gICAgICAgIHZhciBfcmVmMjtcblxuICAgICAgICAvLyBJ
ZiB0aGlzIGNvbXBvbmVudCByZWNlaXZlZCBzdG9yZSBmcm9tIHByb3BzLCBpdHMgc3Vic2NyaXB0
aW9uIHNob3VsZCBiZSB0cmFuc3BhcmVudFxuICAgICAgICAvLyB0byBhbnkgZGVzY2VuZGFudHMg
cmVjZWl2aW5nIHN0b3JlK3N1YnNjcmlwdGlvbiBmcm9tIGNvbnRleHQ7IGl0IHBhc3NlcyBhbG9u
Z1xuICAgICAgICAvLyBzdWJzY3JpcHRpb24gcGFzc2VkIHRvIGl0LiBPdGhlcndpc2UsIGl0IHNo
YWRvd3MgdGhlIHBhcmVudCBzdWJzY3JpcHRpb24sIHdoaWNoIGFsbG93c1xuICAgICAgICAvLyBD
b25uZWN0IHRvIGNvbnRyb2wgb3JkZXJpbmcgb2Ygbm90aWZpY2F0aW9ucyB0byBmbG93IHRvcC1k
b3duLlxuICAgICAgICB2YXIgc3Vic2NyaXB0aW9uID0gdGhpcy5wcm9wc01vZGUgPyBudWxsIDog
dGhpcy5zdWJzY3JpcHRpb247XG4gICAgICAgIHJldHVybiBfcmVmMiA9IHt9LCBfcmVmMltzdWJz
Y3JpcHRpb25LZXldID0gc3Vic2NyaXB0aW9uIHx8IHRoaXMuY29udGV4dFtzdWJzY3JpcHRpb25L
ZXldLCBfcmVmMjtcbiAgICAgIH07XG5cbiAgICAgIENvbm5lY3QucHJvdG90eXBlLmNvbXBvbmVu
dERpZE1vdW50ID0gZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgICAgIGlmICgh
c2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzKSByZXR1cm47XG5cbiAgICAgICAgLy8gY29tcG9uZW50
V2lsbE1vdW50IGZpcmVzIGR1cmluZyBzZXJ2ZXIgc2lkZSByZW5kZXJpbmcsIGJ1dCBjb21wb25l
bnREaWRNb3VudCBhbmRcbiAgICAgICAgLy8gY29tcG9uZW50V2lsbFVubW91bnQgZG8gbm90LiBC
ZWNhdXNlIG9mIHRoaXMsIHRyeVN1YnNjcmliZSBoYXBwZW5zIGR1cmluZyAuLi5kaWRNb3VudC5c
biAgICAgICAgLy8gT3RoZXJ3aXNlLCB1bnN1YnNjcmlwdGlvbiB3b3VsZCBuZXZlciB0YWtlIHBs
YWNlIGR1cmluZyBTU1IsIGNhdXNpbmcgYSBtZW1vcnkgbGVhay5cbiAgICAgICAgLy8gVG8gaGFu
ZGxlIHRoZSBjYXNlIHdoZXJlIGEgY2hpbGQgY29tcG9uZW50IG1heSBoYXZlIHRyaWdnZXJlZCBh
IHN0YXRlIGNoYW5nZSBieVxuICAgICAgICAvLyBkaXNwYXRjaGluZyBhbiBhY3Rpb24gaW4gaXRz
IGNvbXBvbmVudFdpbGxNb3VudCwgd2UgaGF2ZSB0byByZS1ydW4gdGhlIHNlbGVjdCBhbmQgbWF5
YmVcbiAgICAgICAgLy8gcmUtcmVuZGVyLlxuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi50cnlT
dWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rvci5ydW4odGhpcy5wcm9wcyk7XG4gICAg
ICAgIGlmICh0aGlzLnNlbGVjdG9yLnNob3VsZENvbXBvbmVudFVwZGF0ZSkgdGhpcy5mb3JjZVVw
ZGF0ZSgpO1xuICAgICAgfTtcblxuICAgICAgQ29ubmVjdC5wcm90b3R5cGUuY29tcG9uZW50V2ls
bFJlY2VpdmVQcm9wcyA9IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV4dFBy
b3BzKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0b3IucnVuKG5leHRQcm9wcyk7XG4gICAgICB9O1xu
XG4gICAgICBDb25uZWN0LnByb3RvdHlwZS5zaG91bGRDb21wb25lbnRVcGRhdGUgPSBmdW5jdGlv
biBzaG91bGRDb21wb25lbnRVcGRhdGUoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnNlbGVjdG9y
LnNob3VsZENvbXBvbmVudFVwZGF0ZTtcbiAgICAgIH07XG5cbiAgICAgIENvbm5lY3QucHJvdG90
eXBlLmNvbXBvbmVudFdpbGxVbm1vdW50ID0gZnVuY3Rpb24gY29tcG9uZW50V2lsbFVubW91bnQo
KSB7XG4gICAgICAgIGlmICh0aGlzLnN1YnNjcmlwdGlvbikgdGhpcy5zdWJzY3JpcHRpb24udHJ5
VW5zdWJzY3JpYmUoKTtcbiAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSBudWxsO1xuICAgICAg
ICB0aGlzLm5vdGlmeU5lc3RlZFN1YnMgPSBub29wO1xuICAgICAgICB0aGlzLnN0b3JlID0gbnVs
bDtcbiAgICAgICAgdGhpcy5zZWxlY3Rvci5ydW4gPSBub29wO1xuICAgICAgICB0aGlzLnNlbGVj
dG9yLnNob3VsZENvbXBvbmVudFVwZGF0ZSA9IGZhbHNlO1xuICAgICAgfTtcblxuICAgICAgQ29u
bmVjdC5wcm90b3R5cGUuZ2V0V3JhcHBlZEluc3RhbmNlID0gZnVuY3Rpb24gZ2V0V3JhcHBlZElu
c3RhbmNlKCkge1xuICAgICAgICAoMCwgX2ludmFyaWFudDIuZGVmYXVsdCkod2l0aFJlZiwgJ1Rv
IGFjY2VzcyB0aGUgd3JhcHBlZCBpbnN0YW5jZSwgeW91IG5lZWQgdG8gc3BlY2lmeSAnICsgKCd7
IHdpdGhSZWY6IHRydWUgfSBpbiB0aGUgb3B0aW9ucyBhcmd1bWVudCBvZiB0aGUgJyArIG1ldGhv
ZE5hbWUgKyAnKCkgY2FsbC4nKSk7XG4gICAgICAgIHJldHVybiB0aGlzLndyYXBwZWRJbnN0YW5j
ZTtcbiAgICAgIH07XG5cbiAgICAgIENvbm5lY3QucHJvdG90eXBlLnNldFdyYXBwZWRJbnN0YW5j
ZSA9IGZ1bmN0aW9uIHNldFdyYXBwZWRJbnN0YW5jZShyZWYpIHtcbiAgICAgICAgdGhpcy53cmFw
cGVkSW5zdGFuY2UgPSByZWY7XG4gICAgICB9O1xuXG4gICAgICBDb25uZWN0LnByb3RvdHlwZS5p
bml0U2VsZWN0b3IgPSBmdW5jdGlvbiBpbml0U2VsZWN0b3IoKSB7XG4gICAgICAgIHZhciBzb3Vy
Y2VTZWxlY3RvciA9IHNlbGVjdG9yRmFjdG9yeSh0aGlzLnN0b3JlLmRpc3BhdGNoLCBzZWxlY3Rv
ckZhY3RvcnlPcHRpb25zKTtcbiAgICAgICAgdGhpcy5zZWxlY3RvciA9IG1ha2VTZWxlY3RvclN0
YXRlZnVsKHNvdXJjZVNlbGVjdG9yLCB0aGlzLnN0b3JlKTtcbiAgICAgICAgdGhpcy5zZWxlY3Rv
ci5ydW4odGhpcy5wcm9wcyk7XG4gICAgICB9O1xuXG4gICAgICBDb25uZWN0LnByb3RvdHlwZS5p
bml0U3Vic2NyaXB0aW9uID0gZnVuY3Rpb24gaW5pdFN1YnNjcmlwdGlvbigpIHtcbiAgICAgICAg
aWYgKCFzaG91bGRIYW5kbGVTdGF0ZUNoYW5nZXMpIHJldHVybjtcblxuICAgICAgICAvLyBwYXJl
bnRTdWIncyBzb3VyY2Ugc2hvdWxkIG1hdGNoIHdoZXJlIHN0b3JlIGNhbWUgZnJvbTogcHJvcHMg
dnMuIGNvbnRleHQuIEEgY29tcG9uZW50XG4gICAgICAgIC8vIGNvbm5lY3RlZCB0byB0aGUgc3Rv
cmUgdmlhIHByb3BzIHNob3VsZG4ndCB1c2Ugc3Vic2NyaXB0aW9uIGZyb20gY29udGV4dCwgb3Ig
dmljZSB2ZXJzYS5cbiAgICAgICAgdmFyIHBhcmVudFN1YiA9ICh0aGlzLnByb3BzTW9kZSA/IHRo
aXMucHJvcHMgOiB0aGlzLmNvbnRleHQpW3N1YnNjcmlwdGlvbktleV07XG4gICAgICAgIHRoaXMu
c3Vic2NyaXB0aW9uID0gbmV3IF9TdWJzY3JpcHRpb24yLmRlZmF1bHQodGhpcy5zdG9yZSwgcGFy
ZW50U3ViLCB0aGlzLm9uU3RhdGVDaGFuZ2UuYmluZCh0aGlzKSk7XG5cbiAgICAgICAgLy8gYG5v
dGlmeU5lc3RlZFN1YnNgIGlzIGR1cGxpY2F0ZWQgdG8gaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRo
ZSBjb21wb25lbnQgaXMgIHVubW91bnRlZCBpblxuICAgICAgICAvLyB0aGUgbWlkZGxlIG9mIHRo
ZSBub3RpZmljYXRpb24gbG9vcCwgd2hlcmUgYHRoaXMuc3Vic2NyaXB0aW9uYCB3aWxsIHRoZW4g
YmUgbnVsbC4gQW5cbiAgICAgICAgLy8gZXh0cmEgbnVsbCBjaGVjayBldmVyeSBjaGFuZ2UgY2Fu
IGJlIGF2b2lkZWQgYnkgY29weWluZyB0aGUgbWV0aG9kIG9udG8gYHRoaXNgIGFuZCB0aGVuXG4g
ICAgICAgIC8vIHJlcGxhY2luZyBpdCB3aXRoIGEgbm8tb3Agb24gdW5tb3VudC4gVGhpcyBjYW4g
cHJvYmFibHkgYmUgYXZvaWRlZCBpZiBTdWJzY3JpcHRpb24nc1xuICAgICAgICAvLyBsaXN0ZW5l
cnMgbG9naWMgaXMgY2hhbmdlZCB0byBub3QgY2FsbCBsaXN0ZW5lcnMgdGhhdCBoYXZlIGJlZW4g
dW5zdWJzY3JpYmVkIGluIHRoZVxuICAgICAgICAvLyBtaWRkbGUgb2YgdGhlIG5vdGlmaWNhdGlv
biBsb29wLlxuICAgICAgICB0aGlzLm5vdGlmeU5lc3RlZFN1YnMgPSB0aGlzLnN1YnNjcmlwdGlv
bi5ub3RpZnlOZXN0ZWRTdWJzLmJpbmQodGhpcy5zdWJzY3JpcHRpb24pO1xuICAgICAgfTtcblxu
ICAgICAgQ29ubmVjdC5wcm90b3R5cGUub25TdGF0ZUNoYW5nZSA9IGZ1bmN0aW9uIG9uU3RhdGVD
aGFuZ2UoKSB7XG4gICAgICAgIHRoaXMuc2VsZWN0b3IucnVuKHRoaXMucHJvcHMpO1xuXG4gICAg
ICAgIGlmICghdGhpcy5zZWxlY3Rvci5zaG91bGRDb21wb25lbnRVcGRhdGUpIHtcbiAgICAgICAg
ICB0aGlzLm5vdGlmeU5lc3RlZFN1YnMoKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0
aGlzLmNvbXBvbmVudERpZFVwZGF0ZSA9IHRoaXMubm90aWZ5TmVzdGVkU3Vic09uQ29tcG9uZW50
RGlkVXBkYXRlO1xuICAgICAgICAgIHRoaXMuc2V0U3RhdGUoZHVtbXlTdGF0ZSk7XG4gICAgICAg
IH1cbiAgICAgIH07XG5cbiAgICAgIENvbm5lY3QucHJvdG90eXBlLm5vdGlmeU5lc3RlZFN1YnNP
bkNvbXBvbmVudERpZFVwZGF0ZSA9IGZ1bmN0aW9uIG5vdGlmeU5lc3RlZFN1YnNPbkNvbXBvbmVu
dERpZFVwZGF0ZSgpIHtcbiAgICAgICAgLy8gYGNvbXBvbmVudERpZFVwZGF0ZWAgaXMgY29uZGl0
aW9uYWxseSBpbXBsZW1lbnRlZCB3aGVuIGBvblN0YXRlQ2hhbmdlYCBkZXRlcm1pbmVzIGl0XG4g
ICAgICAgIC8vIG5lZWRzIHRvIG5vdGlmeSBuZXN0ZWQgc3Vicy4gT25jZSBjYWxsZWQsIGl0IHVu
aW1wbGVtZW50cyBpdHNlbGYgdW50aWwgZnVydGhlciBzdGF0ZVxuICAgICAgICAvLyBjaGFuZ2Vz
IG9jY3VyLiBEb2luZyBpdCB0aGlzIHdheSB2cyBoYXZpbmcgYSBwZXJtYW5lbnQgYGNvbXBvbmVu
dERpZFVwZGF0ZWAgdGhhdCBkb2VzXG4gICAgICAgIC8vIGEgYm9vbGVhbiBjaGVjayBldmVyeSB0
aW1lIGF2b2lkcyBhbiBleHRyYSBtZXRob2QgY2FsbCBtb3N0IG9mIHRoZSB0aW1lLCByZXN1bHRp
bmdcbiAgICAgICAgLy8gaW4gc29tZSBwZXJmIGJvb3N0LlxuICAgICAgICB0aGlzLmNvbXBvbmVu
dERpZFVwZGF0ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5ub3RpZnlOZXN0ZWRTdWJzKCk7
XG4gICAgICB9O1xuXG4gICAgICBDb25uZWN0LnByb3RvdHlwZS5pc1N1YnNjcmliZWQgPSBmdW5j
dGlvbiBpc1N1YnNjcmliZWQoKSB7XG4gICAgICAgIHJldHVybiBCb29sZWFuKHRoaXMuc3Vic2Ny
aXB0aW9uKSAmJiB0aGlzLnN1YnNjcmlwdGlvbi5pc1N1YnNjcmliZWQoKTtcbiAgICAgIH07XG5c
biAgICAgIENvbm5lY3QucHJvdG90eXBlLmFkZEV4dHJhUHJvcHMgPSBmdW5jdGlvbiBhZGRFeHRy
YVByb3BzKHByb3BzKSB7XG4gICAgICAgIGlmICghd2l0aFJlZiAmJiAhcmVuZGVyQ291bnRQcm9w
ICYmICEodGhpcy5wcm9wc01vZGUgJiYgdGhpcy5zdWJzY3JpcHRpb24pKSByZXR1cm4gcHJvcHM7
XG4gICAgICAgIC8vIG1ha2UgYSBzaGFsbG93IGNvcHkgc28gdGhhdCBmaWVsZHMgYWRkZWQgZG9u
J3QgbGVhayB0byB0aGUgb3JpZ2luYWwgc2VsZWN0b3IuXG4gICAgICAgIC8vIHRoaXMgaXMgZXNw
ZWNpYWxseSBpbXBvcnRhbnQgZm9yICdyZWYnIHNpbmNlIHRoYXQncyBhIHJlZmVyZW5jZSBiYWNr
IHRvIHRoZSBjb21wb25lbnRcbiAgICAgICAgLy8gaW5zdGFuY2UuIGEgc2luZ2xldG9uIG1lbW9p
emVkIHNlbGVjdG9yIHdvdWxkIHRoZW4gYmUgaG9sZGluZyBhIHJlZmVyZW5jZSB0byB0aGVcbiAg
ICAgICAgLy8gaW5zdGFuY2UsIHByZXZlbnRpbmcgdGhlIGluc3RhbmNlIGZyb20gYmVpbmcgZ2Fy
YmFnZSBjb2xsZWN0ZWQsIGFuZCB0aGF0IHdvdWxkIGJlIGJhZFxuICAgICAgICB2YXIgd2l0aEV4
dHJhcyA9IF9leHRlbmRzKHt9LCBwcm9wcyk7XG4gICAgICAgIGlmICh3aXRoUmVmKSB3aXRoRXh0
cmFzLnJlZiA9IHRoaXMuc2V0V3JhcHBlZEluc3RhbmNlO1xuICAgICAgICBpZiAocmVuZGVyQ291
bnRQcm9wKSB3aXRoRXh0cmFzW3JlbmRlckNvdW50UHJvcF0gPSB0aGlzLnJlbmRlckNvdW50Kys7
XG4gICAgICAgIGlmICh0aGlzLnByb3BzTW9kZSAmJiB0aGlzLnN1YnNjcmlwdGlvbikgd2l0aEV4
dHJhc1tzdWJzY3JpcHRpb25LZXldID0gdGhpcy5zdWJzY3JpcHRpb247XG4gICAgICAgIHJldHVy
biB3aXRoRXh0cmFzO1xuICAgICAgfTtcblxuICAgICAgQ29ubmVjdC5wcm90b3R5cGUucmVuZGVy
ID0gZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgICAgICB2YXIgc2VsZWN0b3IgPSB0aGlzLnNlbGVj
dG9yO1xuICAgICAgICBzZWxlY3Rvci5zaG91bGRDb21wb25lbnRVcGRhdGUgPSBmYWxzZTtcblxu
ICAgICAgICBpZiAoc2VsZWN0b3IuZXJyb3IpIHtcbiAgICAgICAgICB0aHJvdyBzZWxlY3Rvci5l
cnJvcjtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gKDAsIF9yZWFjdC5jcmVh
dGVFbGVtZW50KShXcmFwcGVkQ29tcG9uZW50LCB0aGlzLmFkZEV4dHJhUHJvcHMoc2VsZWN0b3Iu
cHJvcHMpKTtcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIENvbm5lY3Q7XG4g
ICAgfShfcmVhY3QuQ29tcG9uZW50KTtcblxuICAgIENvbm5lY3QuV3JhcHBlZENvbXBvbmVudCA9
IFdyYXBwZWRDb21wb25lbnQ7XG4gICAgQ29ubmVjdC5kaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1l
O1xuICAgIENvbm5lY3QuY2hpbGRDb250ZXh0VHlwZXMgPSBjaGlsZENvbnRleHRUeXBlcztcbiAg
ICBDb25uZWN0LmNvbnRleHRUeXBlcyA9IGNvbnRleHRUeXBlcztcbiAgICBDb25uZWN0LnByb3BU
eXBlcyA9IGNvbnRleHRUeXBlcztcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nKSB7XG4gICAgICBDb25uZWN0LnByb3RvdHlwZS5jb21wb25lbnRXaWxsVXBk
YXRlID0gZnVuY3Rpb24gY29tcG9uZW50V2lsbFVwZGF0ZSgpIHtcbiAgICAgICAgdmFyIF90aGlz
MiA9IHRoaXM7XG5cbiAgICAgICAgLy8gV2UgYXJlIGhvdCByZWxvYWRpbmchXG4gICAgICAgIGlm
ICh0aGlzLnZlcnNpb24gIT09IHZlcnNpb24pIHtcbiAgICAgICAgICB0aGlzLnZlcnNpb24gPSB2
ZXJzaW9uO1xuICAgICAgICAgIHRoaXMuaW5pdFNlbGVjdG9yKCk7XG5cbiAgICAgICAgICAvLyBJ
ZiBhbnkgY29ubmVjdGVkIGRlc2NlbmRhbnRzIGRvbid0IGhvdCByZWxvYWQgKGFuZCByZXN1YnNj
cmliZSBpbiB0aGUgcHJvY2VzcyksIHRoZWlyXG4gICAgICAgICAgLy8gbGlzdGVuZXJzIHdpbGwg
YmUgbG9zdCB3aGVuIHdlIHVuc3Vic2NyaWJlLiBVbmZvcnR1bmF0ZWx5LCBieSBjb3B5aW5nIG92
ZXIgYWxsXG4gICAgICAgICAgLy8gbGlzdGVuZXJzLCB0aGlzIGRvZXMgbWVhbiB0aGF0IHRoZSBv
bGQgdmVyc2lvbnMgb2YgY29ubmVjdGVkIGRlc2NlbmRhbnRzIHdpbGwgc3RpbGwgYmVcbiAgICAg
ICAgICAvLyBub3RpZmllZCBvZiBzdGF0ZSBjaGFuZ2VzOyBob3dldmVyLCB0aGVpciBvblN0YXRl
Q2hhbmdlIGZ1bmN0aW9uIGlzIGEgbm8tb3Agc28gdGhpc1xuICAgICAgICAgIC8vIGlzbid0IGEg
aHVnZSBkZWFsLlxuICAgICAgICAgIHZhciBvbGRMaXN0ZW5lcnMgPSBbXTtcblxuICAgICAgICAg
IGlmICh0aGlzLnN1YnNjcmlwdGlvbikge1xuICAgICAgICAgICAgb2xkTGlzdGVuZXJzID0gdGhp
cy5zdWJzY3JpcHRpb24ubGlzdGVuZXJzLmdldCgpO1xuICAgICAgICAgICAgdGhpcy5zdWJzY3Jp
cHRpb24udHJ5VW5zdWJzY3JpYmUoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5pbml0
U3Vic2NyaXB0aW9uKCk7XG4gICAgICAgICAgaWYgKHNob3VsZEhhbmRsZVN0YXRlQ2hhbmdlcykg
e1xuICAgICAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24udHJ5U3Vic2NyaWJlKCk7XG4gICAgICAg
ICAgICBvbGRMaXN0ZW5lcnMuZm9yRWFjaChmdW5jdGlvbiAobGlzdGVuZXIpIHtcbiAgICAgICAg
ICAgICAgcmV0dXJuIF90aGlzMi5zdWJzY3JpcHRpb24ubGlzdGVuZXJzLnN1YnNjcmliZShsaXN0
ZW5lcik7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07
XG4gICAgfVxuXG4gICAgcmV0dXJuICgwLCBfaG9pc3ROb25SZWFjdFN0YXRpY3MyLmRlZmF1bHQp
KENvbm5lY3QsIFdyYXBwZWRDb21wb25lbnQpO1xuICB9O1xufVxuXG5cbi8qKioqKioqKioqKioq
KioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LXJlZHV4L2xpYi9jb21wb25l
bnRzL2Nvbm5lY3RBZHZhbmNlZC5qc1xuICoqIG1vZHVsZSBpZCA9IDc5XG4gKiogbW9kdWxlIGNo
dW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRy
dWU7XG5leHBvcnRzLndyYXBNYXBUb1Byb3BzQ29uc3RhbnQgPSB3cmFwTWFwVG9Qcm9wc0NvbnN0
YW50O1xuZXhwb3J0cy5nZXREZXBlbmRzT25Pd25Qcm9wcyA9IGdldERlcGVuZHNPbk93blByb3Bz
O1xuZXhwb3J0cy53cmFwTWFwVG9Qcm9wc0Z1bmMgPSB3cmFwTWFwVG9Qcm9wc0Z1bmM7XG5cbnZh
ciBfdmVyaWZ5UGxhaW5PYmplY3QgPSByZXF1aXJlKCcuLi91dGlscy92ZXJpZnlQbGFpbk9iamVj
dCcpO1xuXG52YXIgX3ZlcmlmeVBsYWluT2JqZWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQo
X3ZlcmlmeVBsYWluT2JqZWN0KTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChv
YmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2Jq
IH07IH1cblxuZnVuY3Rpb24gd3JhcE1hcFRvUHJvcHNDb25zdGFudChnZXRDb25zdGFudCkge1xu
ICByZXR1cm4gZnVuY3Rpb24gaW5pdENvbnN0YW50U2VsZWN0b3IoZGlzcGF0Y2gsIG9wdGlvbnMp
IHtcbiAgICB2YXIgY29uc3RhbnQgPSBnZXRDb25zdGFudChkaXNwYXRjaCwgb3B0aW9ucyk7XG5c
biAgICBmdW5jdGlvbiBjb25zdGFudFNlbGVjdG9yKCkge1xuICAgICAgcmV0dXJuIGNvbnN0YW50
O1xuICAgIH1cbiAgICBjb25zdGFudFNlbGVjdG9yLmRlcGVuZHNPbk93blByb3BzID0gZmFsc2U7
XG4gICAgcmV0dXJuIGNvbnN0YW50U2VsZWN0b3I7XG4gIH07XG59XG5cbi8vIGRlcGVuZHNPbk93
blByb3BzIGlzIHVzZWQgYnkgY3JlYXRlTWFwVG9Qcm9wc1Byb3h5IHRvIGRldGVybWluZSB3aGV0
aGVyIHRvIHBhc3MgcHJvcHMgYXMgYXJnc1xuLy8gdG8gdGhlIG1hcFRvUHJvcHMgZnVuY3Rpb24g
YmVpbmcgd3JhcHBlZC4gSXQgaXMgYWxzbyB1c2VkIGJ5IG1ha2VQdXJlUHJvcHNTZWxlY3RvciB0
byBkZXRlcm1pbmVcbi8vIHdoZXRoZXIgbWFwVG9Qcm9wcyBuZWVkcyB0byBiZSBpbnZva2VkIHdo
ZW4gcHJvcHMgaGF2ZSBjaGFuZ2VkLlxuLy8gXG4vLyBBIGxlbmd0aCBvZiBvbmUgc2lnbmFscyB0
aGF0IG1hcFRvUHJvcHMgZG9lcyBub3QgZGVwZW5kIG9uIHByb3BzIGZyb20gdGhlIHBhcmVudCBj
b21wb25lbnQuXG4vLyBBIGxlbmd0aCBvZiB6ZXJvIGlzIGFzc3VtZWQgdG8gbWVhbiBtYXBUb1By
b3BzIGlzIGdldHRpbmcgYXJncyB2aWEgYXJndW1lbnRzIG9yIC4uLmFyZ3MgYW5kXG4vLyB0aGVy
ZWZvcmUgbm90IHJlcG9ydGluZyBpdHMgbGVuZ3RoIGFjY3VyYXRlbHkuLlxuZnVuY3Rpb24gZ2V0
RGVwZW5kc09uT3duUHJvcHMobWFwVG9Qcm9wcykge1xuICByZXR1cm4gbWFwVG9Qcm9wcy5kZXBl
bmRzT25Pd25Qcm9wcyAhPT0gbnVsbCAmJiBtYXBUb1Byb3BzLmRlcGVuZHNPbk93blByb3BzICE9
PSB1bmRlZmluZWQgPyBCb29sZWFuKG1hcFRvUHJvcHMuZGVwZW5kc09uT3duUHJvcHMpIDogbWFw
VG9Qcm9wcy5sZW5ndGggIT09IDE7XG59XG5cbi8vIFVzZWQgYnkgd2hlbk1hcFN0YXRlVG9Qcm9w
c0lzRnVuY3Rpb24gYW5kIHdoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc0Z1bmN0aW9uLFxuLy8gdGhp
cyBmdW5jdGlvbiB3cmFwcyBtYXBUb1Byb3BzIGluIGEgcHJveHkgZnVuY3Rpb24gd2hpY2ggZG9l
cyBzZXZlcmFsIHRoaW5nczpcbi8vIFxuLy8gICogRGV0ZWN0cyB3aGV0aGVyIHRoZSBtYXBUb1By
b3BzIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCBkZXBlbmRzIG9uIHByb3BzLCB3aGljaFxuLy8gICAg
aXMgdXNlZCBieSBzZWxlY3RvckZhY3RvcnkgdG8gZGVjaWRlIGlmIGl0IHNob3VsZCByZWludm9r
ZSBvbiBwcm9wcyBjaGFuZ2VzLlxuLy8gICAgXG4vLyAgKiBPbiBmaXJzdCBjYWxsLCBoYW5kbGVz
IG1hcFRvUHJvcHMgaWYgcmV0dXJucyBhbm90aGVyIGZ1bmN0aW9uLCBhbmQgdHJlYXRzIHRoYXRc
bi8vICAgIG5ldyBmdW5jdGlvbiBhcyB0aGUgdHJ1ZSBtYXBUb1Byb3BzIGZvciBzdWJzZXF1ZW50
IGNhbGxzLlxuLy8gICAgXG4vLyAgKiBPbiBmaXJzdCBjYWxsLCB2ZXJpZmllcyB0aGUgZmlyc3Qg
cmVzdWx0IGlzIGEgcGxhaW4gb2JqZWN0LCBpbiBvcmRlciB0byB3YXJuXG4vLyAgICB0aGUgZGV2
ZWxvcGVyIHRoYXQgdGhlaXIgbWFwVG9Qcm9wcyBmdW5jdGlvbiBpcyBub3QgcmV0dXJuaW5nIGEg
dmFsaWQgcmVzdWx0LlxuLy8gICAgXG5mdW5jdGlvbiB3cmFwTWFwVG9Qcm9wc0Z1bmMobWFwVG9Q
cm9wcywgbWV0aG9kTmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24gaW5pdFByb3h5U2VsZWN0b3Io
ZGlzcGF0Y2gsIF9yZWYpIHtcbiAgICB2YXIgZGlzcGxheU5hbWUgPSBfcmVmLmRpc3BsYXlOYW1l
O1xuXG4gICAgdmFyIHByb3h5ID0gZnVuY3Rpb24gbWFwVG9Qcm9wc1Byb3h5KHN0YXRlT3JEaXNw
YXRjaCwgb3duUHJvcHMpIHtcbiAgICAgIHJldHVybiBwcm94eS5kZXBlbmRzT25Pd25Qcm9wcyA/
IHByb3h5Lm1hcFRvUHJvcHMoc3RhdGVPckRpc3BhdGNoLCBvd25Qcm9wcykgOiBwcm94eS5tYXBU
b1Byb3BzKHN0YXRlT3JEaXNwYXRjaCk7XG4gICAgfTtcblxuICAgIC8vIGFsbG93IGRldGVjdEZh
Y3RvcnlBbmRWZXJpZnkgdG8gZ2V0IG93blByb3BzXG4gICAgcHJveHkuZGVwZW5kc09uT3duUHJv
cHMgPSB0cnVlO1xuXG4gICAgcHJveHkubWFwVG9Qcm9wcyA9IGZ1bmN0aW9uIGRldGVjdEZhY3Rv
cnlBbmRWZXJpZnkoc3RhdGVPckRpc3BhdGNoLCBvd25Qcm9wcykge1xuICAgICAgcHJveHkubWFw
VG9Qcm9wcyA9IG1hcFRvUHJvcHM7XG4gICAgICBwcm94eS5kZXBlbmRzT25Pd25Qcm9wcyA9IGdl
dERlcGVuZHNPbk93blByb3BzKG1hcFRvUHJvcHMpO1xuICAgICAgdmFyIHByb3BzID0gcHJveHko
c3RhdGVPckRpc3BhdGNoLCBvd25Qcm9wcyk7XG5cbiAgICAgIGlmICh0eXBlb2YgcHJvcHMgPT09
ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcHJveHkubWFwVG9Qcm9wcyA9IHByb3BzO1xuICAgICAg
ICBwcm94eS5kZXBlbmRzT25Pd25Qcm9wcyA9IGdldERlcGVuZHNPbk93blByb3BzKHByb3BzKTtc
biAgICAgICAgcHJvcHMgPSBwcm94eShzdGF0ZU9yRGlzcGF0Y2gsIG93blByb3BzKTtcbiAgICAg
IH1cblxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpICgw
LCBfdmVyaWZ5UGxhaW5PYmplY3QyLmRlZmF1bHQpKHByb3BzLCBkaXNwbGF5TmFtZSwgbWV0aG9k
TmFtZSk7XG5cbiAgICAgIHJldHVybiBwcm9wcztcbiAgICB9O1xuXG4gICAgcmV0dXJuIHByb3h5
O1xuICB9O1xufVxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4g
KiogLi9+L3JlYWN0LXJlZHV4L2xpYi9jb25uZWN0L3dyYXBNYXBUb1Byb3BzLmpzXG4gKiogbW9k
dWxlIGlkID0gODBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0Jztc
blxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuY29ubmVjdCA9IGV4cG9ydHMu
Y29ubmVjdEFkdmFuY2VkID0gZXhwb3J0cy5jcmVhdGVQcm92aWRlciA9IGV4cG9ydHMuUHJvdmlk
ZXIgPSB1bmRlZmluZWQ7XG5cbnZhciBfUHJvdmlkZXIgPSByZXF1aXJlKCcuL2NvbXBvbmVudHMv
UHJvdmlkZXInKTtcblxudmFyIF9Qcm92aWRlcjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9Q
cm92aWRlcik7XG5cbnZhciBfY29ubmVjdEFkdmFuY2VkID0gcmVxdWlyZSgnLi9jb21wb25lbnRz
L2Nvbm5lY3RBZHZhbmNlZCcpO1xuXG52YXIgX2Nvbm5lY3RBZHZhbmNlZDIgPSBfaW50ZXJvcFJl
cXVpcmVEZWZhdWx0KF9jb25uZWN0QWR2YW5jZWQpO1xuXG52YXIgX2Nvbm5lY3QgPSByZXF1aXJl
KCcuL2Nvbm5lY3QvY29ubmVjdCcpO1xuXG52YXIgX2Nvbm5lY3QyID0gX2ludGVyb3BSZXF1aXJl
RGVmYXVsdChfY29ubmVjdCk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2Jq
KSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9
OyB9XG5cbmV4cG9ydHMuUHJvdmlkZXIgPSBfUHJvdmlkZXIyLmRlZmF1bHQ7XG5leHBvcnRzLmNy
ZWF0ZVByb3ZpZGVyID0gX1Byb3ZpZGVyLmNyZWF0ZVByb3ZpZGVyO1xuZXhwb3J0cy5jb25uZWN0
QWR2YW5jZWQgPSBfY29ubmVjdEFkdmFuY2VkMi5kZWZhdWx0O1xuZXhwb3J0cy5jb25uZWN0ID0g
X2Nvbm5lY3QyLmRlZmF1bHQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBG
T09URVJcbiAqKiAuL34vcmVhY3QtcmVkdXgvbGliL2luZGV4LmpzXG4gKiogbW9kdWxlIGlkID0g
ODFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0
cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuc3RvcmVTaGFwZSA9IGV4cG9ydHMuc3Vic2Ny
aXB0aW9uU2hhcGUgPSB1bmRlZmluZWQ7XG5cbnZhciBfcHJvcFR5cGVzID0gcmVxdWlyZSgncHJv
cC10eXBlcycpO1xuXG52YXIgX3Byb3BUeXBlczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9w
cm9wVHlwZXMpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1
cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG52
YXIgc3Vic2NyaXB0aW9uU2hhcGUgPSBleHBvcnRzLnN1YnNjcmlwdGlvblNoYXBlID0gX3Byb3BU
eXBlczIuZGVmYXVsdC5zaGFwZSh7XG4gIHRyeVN1YnNjcmliZTogX3Byb3BUeXBlczIuZGVmYXVs
dC5mdW5jLmlzUmVxdWlyZWQsXG4gIHRyeVVuc3Vic2NyaWJlOiBfcHJvcFR5cGVzMi5kZWZhdWx0
LmZ1bmMuaXNSZXF1aXJlZCxcbiAgbm90aWZ5TmVzdGVkU3ViczogX3Byb3BUeXBlczIuZGVmYXVs
dC5mdW5jLmlzUmVxdWlyZWQsXG4gIGlzU3Vic2NyaWJlZDogX3Byb3BUeXBlczIuZGVmYXVsdC5m
dW5jLmlzUmVxdWlyZWRcbn0pO1xuXG52YXIgc3RvcmVTaGFwZSA9IGV4cG9ydHMuc3RvcmVTaGFw
ZSA9IF9wcm9wVHlwZXMyLmRlZmF1bHQuc2hhcGUoe1xuICBzdWJzY3JpYmU6IF9wcm9wVHlwZXMy
LmRlZmF1bHQuZnVuYy5pc1JlcXVpcmVkLFxuICBkaXNwYXRjaDogX3Byb3BUeXBlczIuZGVmYXVs
dC5mdW5jLmlzUmVxdWlyZWQsXG4gIGdldFN0YXRlOiBfcHJvcFR5cGVzMi5kZWZhdWx0LmZ1bmMu
aXNSZXF1aXJlZFxufSk7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09U
RVJcbiAqKiAuL34vcmVhY3QtcmVkdXgvbGliL3V0aWxzL1Byb3BUeXBlcy5qc1xuICoqIG1vZHVs
ZSBpZCA9IDgyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5c
bmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLmRlZmF1bHQgPSB2ZXJpZnlQbGFp
bk9iamVjdDtcblxudmFyIF9pc1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnbG9kYXNoL2lzUGxhaW5P
YmplY3QnKTtcblxudmFyIF9pc1BsYWluT2JqZWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQo
X2lzUGxhaW5PYmplY3QpO1xuXG52YXIgX3dhcm5pbmcgPSByZXF1aXJlKCcuL3dhcm5pbmcnKTtc
blxudmFyIF93YXJuaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3dhcm5pbmcpO1xuXG5m
dW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5f
X2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiB2ZXJpZnlQ
bGFpbk9iamVjdCh2YWx1ZSwgZGlzcGxheU5hbWUsIG1ldGhvZE5hbWUpIHtcbiAgaWYgKCEoMCwg
X2lzUGxhaW5PYmplY3QyLmRlZmF1bHQpKHZhbHVlKSkge1xuICAgICgwLCBfd2FybmluZzIuZGVm
YXVsdCkobWV0aG9kTmFtZSArICcoKSBpbiAnICsgZGlzcGxheU5hbWUgKyAnIG11c3QgcmV0dXJu
IGEgcGxhaW4gb2JqZWN0LiBJbnN0ZWFkIHJlY2VpdmVkICcgKyB2YWx1ZSArICcuJyk7XG4gIH1c
bn1cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9y
ZWFjdC1yZWR1eC9saWIvdXRpbHMvdmVyaWZ5UGxhaW5PYmplY3QuanNcbiAqKiBtb2R1bGUgaWQg
PSA4M1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiaW1wb3J0IFJlYWN0LCB7IENvbXBv
bmVudCwgUHJvcFR5cGVzIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdj
bGFzc25hbWVzJ1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBUb2RvVGV4dElucHV0IGV4dGVuZHMg
Q29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBvblNhdmU6IFByb3BUeXBl
cy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgdGV4dDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBwbGFj
ZWhvbGRlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBlZGl0aW5nOiBQcm9wVHlwZXMuYm9vbCxc
biAgICBuZXdUb2RvOiBQcm9wVHlwZXMuYm9vbFxuICB9XG5cbiAgc3RhdGUgPSB7XG4gICAgdGV4
dDogdGhpcy5wcm9wcy50ZXh0IHx8ICcnXG4gIH1cblxuICBoYW5kbGVTdWJtaXQgPSBlID0+IHtc
biAgICBjb25zdCB0ZXh0ID0gZS50YXJnZXQudmFsdWUudHJpbSgpXG4gICAgaWYgKGUud2hpY2gg
PT09IDEzKSB7XG4gICAgICB0aGlzLnByb3BzLm9uU2F2ZSh0ZXh0KVxuICAgICAgaWYgKHRoaXMu
cHJvcHMubmV3VG9kbykge1xuICAgICAgICB0aGlzLnNldFN0YXRlKHsgdGV4dDogJycgfSlcbiAg
ICAgIH1cbiAgICB9XG4gIH1cblxuICBoYW5kbGVDaGFuZ2UgPSBlID0+IHtcbiAgICB0aGlzLnNl
dFN0YXRlKHsgdGV4dDogZS50YXJnZXQudmFsdWUgfSlcbiAgfVxuXG4gIGhhbmRsZUJsdXIgPSBl
ID0+IHtcbiAgICBpZiAoIXRoaXMucHJvcHMubmV3VG9kbykge1xuICAgICAgdGhpcy5wcm9wcy5v
blNhdmUoZS50YXJnZXQudmFsdWUpXG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIHJl
dHVybiAoXG4gICAgICA8aW5wdXQgY2xhc3NOYW1lPXtcbiAgICAgICAgY2xhc3NuYW1lcyh7XG4g
ICAgICAgICAgZWRpdDogdGhpcy5wcm9wcy5lZGl0aW5nLFxuICAgICAgICAgICduZXctdG9kbyc6
IHRoaXMucHJvcHMubmV3VG9kb1xuICAgICAgICB9KX1cbiAgICAgICAgdHlwZT1cInRleHRcIlxu
ICAgICAgICBwbGFjZWhvbGRlcj17dGhpcy5wcm9wcy5wbGFjZWhvbGRlcn1cbiAgICAgICAgYXV0
b0ZvY3VzPVwidHJ1ZVwiXG4gICAgICAgIHZhbHVlPXt0aGlzLnN0YXRlLnRleHR9XG4gICAgICAg
IG9uQmx1cj17dGhpcy5oYW5kbGVCbHVyfVxuICAgICAgICBvbkNoYW5nZT17dGhpcy5oYW5kbGVD
aGFuZ2V9XG4gICAgICAgIG9uS2V5RG93bj17dGhpcy5oYW5kbGVTdWJtaXR9IC8+XG4gICAgKVxu
ICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9jb21wb25lbnRz
L1RvZG9UZXh0SW5wdXQuanNcbiAqKi8iLCJleHBvcnQgY29uc3QgQUREX1RPRE8gPSAnQUREX1RP
RE8nXG5leHBvcnQgY29uc3QgREVMRVRFX1RPRE8gPSAnREVMRVRFX1RPRE8nXG5leHBvcnQgY29u
c3QgRURJVF9UT0RPID0gJ0VESVRfVE9ETydcbmV4cG9ydCBjb25zdCBDT01QTEVURV9UT0RPID0g
J0NPTVBMRVRFX1RPRE8nXG5leHBvcnQgY29uc3QgQ09NUExFVEVfQUxMID0gJ0NPTVBMRVRFX0FM
TCdcbmV4cG9ydCBjb25zdCBDTEVBUl9DT01QTEVURUQgPSAnQ0xFQVJfQ09NUExFVEVEJ1xuXG5c
blxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvY29uc3RhbnRzL0FjdGlvblR5cGVz
LmpzXG4gKiovIiwiZXhwb3J0IGNvbnN0IFNIT1dfQUxMID0gJ3Nob3dfYWxsJ1xuZXhwb3J0IGNv
bnN0IFNIT1dfQ09NUExFVEVEID0gJ3Nob3dfY29tcGxldGVkJ1xuZXhwb3J0IGNvbnN0IFNIT1df
QUNUSVZFID0gJ3Nob3dfYWN0aXZlJ1xuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiog
Li9zcmMvY29uc3RhbnRzL1RvZG9GaWx0ZXJzLmpzXG4gKiovIiwiLy8gc2hpbSBmb3IgdXNpbmcg
cHJvY2VzcyBpbiBicm93c2VyXG52YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5c
bi8vIGNhY2hlZCBmcm9tIHdoYXRldmVyIGdsb2JhbCBpcyBwcmVzZW50IHNvIHRoYXQgdGVzdCBy
dW5uZXJzIHRoYXQgc3R1YiBpdFxuLy8gZG9uJ3QgYnJlYWsgdGhpbmdzLiAgQnV0IHdlIG5lZWQg
dG8gd3JhcCBpdCBpbiBhIHRyeSBjYXRjaCBpbiBjYXNlIGl0IGlzXG4vLyB3cmFwcGVkIGluIHN0
cmljdCBtb2RlIGNvZGUgd2hpY2ggZG9lc24ndCBkZWZpbmUgYW55IGdsb2JhbHMuICBJdCdzIGlu
c2lkZSBhXG4vLyBmdW5jdGlvbiBiZWNhdXNlIHRyeS9jYXRjaGVzIGRlb3B0aW1pemUgaW4gY2Vy
dGFpbiBlbmdpbmVzLlxuXG52YXIgY2FjaGVkU2V0VGltZW91dDtcbnZhciBjYWNoZWRDbGVhclRp
bWVvdXQ7XG5cbmZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cgbmV3IEVy
cm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlvbiBkZWZh
dWx0Q2xlYXJUaW1lb3V0ICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBo
YXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAg
ICAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAg
IGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAg
ICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgICAgIH1cbiAg
ICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGlt
b3V0O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIGNsZWFyVGltZW91dCA9
PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJU
aW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0
ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAg
ICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICB9XG59
ICgpKVxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91
dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5l
IHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4g
ICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmlu
ZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNh
Y2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91
dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAg
fVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3
aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hl
ZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAg
ICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBl
dmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVk
IG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGws
IGZ1biwgMCk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFi
b3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGds
b2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhl
cndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNh
Y2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5c
bn1cbmZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xl
YXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVu
dHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2Vy
KTtcbiAgICB9XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdh
cyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0
Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xu
ICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVy
biBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hl
biB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBt
YWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAg
fSBjYXRjaCAoZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBp
biBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRy
dXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICBy
ZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBj
YXRjaCAoZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2
ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlz
JywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBh
IGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZl
IGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAg
ICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAg
ICB9XG4gICAgfVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxz
ZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBj
bGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7
XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAo
Y3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25j
YXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9
XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxu
fVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAg
ICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4
dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5n
dGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAg
ICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4g
ICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1
ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAg
IHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAg
ICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xl
YXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuXG5wcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1
bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAg
ICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkg
PCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJn
dW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVu
LCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAg
ICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59O1xuXG4vLyB2OCBsaWtlcyBw
cmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlz
LmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5y
dW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7
XG59O1xucHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJztcbnByb2Nlc3MuYnJvd3NlciA9IHRydWU7
XG5wcm9jZXNzLmVudiA9IHt9O1xucHJvY2Vzcy5hcmd2ID0gW107XG5wcm9jZXNzLnZlcnNpb24g
PSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcbnByb2Nlc3MudmVy
c2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnByb2Nlc3Mub24gPSBub29wO1xu
cHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLm9uY2UgPSBub29wO1xucHJvY2Vz
cy5vZmYgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnJl
bW92ZUFsbExpc3RlbmVycyA9IG5vb3A7XG5wcm9jZXNzLmVtaXQgPSBub29wO1xuXG5wcm9jZXNz
LmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vz
cy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5cbnByb2Nlc3MuY3dkID0gZnVuY3Rp
b24gKCkgeyByZXR1cm4gJy8nIH07XG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xu
ICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59
O1xucHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcblxuXG5cbi8qKioq
KioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LXNjcmlwdHMv
fi9wcm9jZXNzL2Jyb3dzZXIuanNcbiAqKiBtb2R1bGUgaWQgPSA4N1xuICoqIG1vZHVsZSBjaHVu
a3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgYXNhcCA9IHJlcXVpcmUoJ2FzYXAv
cmF3Jyk7XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxuXG4vLyBTdGF0ZXM6XG4vL1xuLy8gMCAtIHBl
bmRpbmdcbi8vIDEgLSBmdWxmaWxsZWQgd2l0aCBfdmFsdWVcbi8vIDIgLSByZWplY3RlZCB3aXRo
IF92YWx1ZVxuLy8gMyAtIGFkb3B0ZWQgdGhlIHN0YXRlIG9mIGFub3RoZXIgcHJvbWlzZSwgX3Zh
bHVlXG4vL1xuLy8gb25jZSB0aGUgc3RhdGUgaXMgbm8gbG9uZ2VyIHBlbmRpbmcgKDApIGl0IGlz
IGltbXV0YWJsZVxuXG4vLyBBbGwgYF9gIHByZWZpeGVkIHByb3BlcnRpZXMgd2lsbCBiZSByZWR1
Y2VkIHRvIGBfe3JhbmRvbSBudW1iZXJ9YFxuLy8gYXQgYnVpbGQgdGltZSB0byBvYmZ1c2NhdGUg
dGhlbSBhbmQgZGlzY291cmFnZSB0aGVpciB1c2UuXG4vLyBXZSBkb24ndCB1c2Ugc3ltYm9scyBv
ciBPYmplY3QuZGVmaW5lUHJvcGVydHkgdG8gZnVsbHkgaGlkZSB0aGVtXG4vLyBiZWNhdXNlIHRo
ZSBwZXJmb3JtYW5jZSBpc24ndCBnb29kIGVub3VnaC5cblxuXG4vLyB0byBhdm9pZCB1c2luZyB0
cnkvY2F0Y2ggaW5zaWRlIGNyaXRpY2FsIGZ1bmN0aW9ucywgd2Vcbi8vIGV4dHJhY3QgdGhlbSB0
byBoZXJlLlxudmFyIExBU1RfRVJST1IgPSBudWxsO1xudmFyIElTX0VSUk9SID0ge307XG5mdW5j
dGlvbiBnZXRUaGVuKG9iaikge1xuICB0cnkge1xuICAgIHJldHVybiBvYmoudGhlbjtcbiAgfSBj
YXRjaCAoZXgpIHtcbiAgICBMQVNUX0VSUk9SID0gZXg7XG4gICAgcmV0dXJuIElTX0VSUk9SO1xu
ICB9XG59XG5cbmZ1bmN0aW9uIHRyeUNhbGxPbmUoZm4sIGEpIHtcbiAgdHJ5IHtcbiAgICByZXR1
cm4gZm4oYSk7XG4gIH0gY2F0Y2ggKGV4KSB7XG4gICAgTEFTVF9FUlJPUiA9IGV4O1xuICAgIHJl
dHVybiBJU19FUlJPUjtcbiAgfVxufVxuZnVuY3Rpb24gdHJ5Q2FsbFR3byhmbiwgYSwgYikge1xu
ICB0cnkge1xuICAgIGZuKGEsIGIpO1xuICB9IGNhdGNoIChleCkge1xuICAgIExBU1RfRVJST1Ig
PSBleDtcbiAgICByZXR1cm4gSVNfRVJST1I7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBQ
cm9taXNlO1xuXG5mdW5jdGlvbiBQcm9taXNlKGZuKSB7XG4gIGlmICh0eXBlb2YgdGhpcyAhPT0g
J29iamVjdCcpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdQcm9taXNlcyBtdXN0IGJlIGNv
bnN0cnVjdGVkIHZpYSBuZXcnKTtcbiAgfVxuICBpZiAodHlwZW9mIGZuICE9PSAnZnVuY3Rpb24n
KSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignbm90IGEgZnVuY3Rpb24nKTtcbiAgfVxuICB0
aGlzLl80NSA9IDA7XG4gIHRoaXMuXzgxID0gMDtcbiAgdGhpcy5fNjUgPSBudWxsO1xuICB0aGlz
Ll81NCA9IG51bGw7XG4gIGlmIChmbiA9PT0gbm9vcCkgcmV0dXJuO1xuICBkb1Jlc29sdmUoZm4s
IHRoaXMpO1xufVxuUHJvbWlzZS5fMTAgPSBudWxsO1xuUHJvbWlzZS5fOTcgPSBudWxsO1xuUHJv
bWlzZS5fNjEgPSBub29wO1xuXG5Qcm9taXNlLnByb3RvdHlwZS50aGVuID0gZnVuY3Rpb24ob25G
dWxmaWxsZWQsIG9uUmVqZWN0ZWQpIHtcbiAgaWYgKHRoaXMuY29uc3RydWN0b3IgIT09IFByb21p
c2UpIHtcbiAgICByZXR1cm4gc2FmZVRoZW4odGhpcywgb25GdWxmaWxsZWQsIG9uUmVqZWN0ZWQp
O1xuICB9XG4gIHZhciByZXMgPSBuZXcgUHJvbWlzZShub29wKTtcbiAgaGFuZGxlKHRoaXMsIG5l
dyBIYW5kbGVyKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkLCByZXMpKTtcbiAgcmV0dXJuIHJlcztc
bn07XG5cbmZ1bmN0aW9uIHNhZmVUaGVuKHNlbGYsIG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7
XG4gIHJldHVybiBuZXcgc2VsZi5jb25zdHJ1Y3RvcihmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0
KSB7XG4gICAgdmFyIHJlcyA9IG5ldyBQcm9taXNlKG5vb3ApO1xuICAgIHJlcy50aGVuKHJlc29s
dmUsIHJlamVjdCk7XG4gICAgaGFuZGxlKHNlbGYsIG5ldyBIYW5kbGVyKG9uRnVsZmlsbGVkLCBv
blJlamVjdGVkLCByZXMpKTtcbiAgfSk7XG59O1xuZnVuY3Rpb24gaGFuZGxlKHNlbGYsIGRlZmVy
cmVkKSB7XG4gIHdoaWxlIChzZWxmLl84MSA9PT0gMykge1xuICAgIHNlbGYgPSBzZWxmLl82NTtc
biAgfVxuICBpZiAoUHJvbWlzZS5fMTApIHtcbiAgICBQcm9taXNlLl8xMChzZWxmKTtcbiAgfVxu
ICBpZiAoc2VsZi5fODEgPT09IDApIHtcbiAgICBpZiAoc2VsZi5fNDUgPT09IDApIHtcbiAgICAg
IHNlbGYuXzQ1ID0gMTtcbiAgICAgIHNlbGYuXzU0ID0gZGVmZXJyZWQ7XG4gICAgICByZXR1cm47
XG4gICAgfVxuICAgIGlmIChzZWxmLl80NSA9PT0gMSkge1xuICAgICAgc2VsZi5fNDUgPSAyO1xu
ICAgICAgc2VsZi5fNTQgPSBbc2VsZi5fNTQsIGRlZmVycmVkXTtcbiAgICAgIHJldHVybjtcbiAg
ICB9XG4gICAgc2VsZi5fNTQucHVzaChkZWZlcnJlZCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGhh
bmRsZVJlc29sdmVkKHNlbGYsIGRlZmVycmVkKTtcbn1cblxuZnVuY3Rpb24gaGFuZGxlUmVzb2x2
ZWQoc2VsZiwgZGVmZXJyZWQpIHtcbiAgYXNhcChmdW5jdGlvbigpIHtcbiAgICB2YXIgY2IgPSBz
ZWxmLl84MSA9PT0gMSA/IGRlZmVycmVkLm9uRnVsZmlsbGVkIDogZGVmZXJyZWQub25SZWplY3Rl
ZDtcbiAgICBpZiAoY2IgPT09IG51bGwpIHtcbiAgICAgIGlmIChzZWxmLl84MSA9PT0gMSkge1xu
ICAgICAgICByZXNvbHZlKGRlZmVycmVkLnByb21pc2UsIHNlbGYuXzY1KTtcbiAgICAgIH0gZWxz
ZSB7XG4gICAgICAgIHJlamVjdChkZWZlcnJlZC5wcm9taXNlLCBzZWxmLl82NSk7XG4gICAgICB9
XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciByZXQgPSB0cnlDYWxsT25lKGNiLCBzZWxm
Ll82NSk7XG4gICAgaWYgKHJldCA9PT0gSVNfRVJST1IpIHtcbiAgICAgIHJlamVjdChkZWZlcnJl
ZC5wcm9taXNlLCBMQVNUX0VSUk9SKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzb2x2ZShkZWZl
cnJlZC5wcm9taXNlLCByZXQpO1xuICAgIH1cbiAgfSk7XG59XG5mdW5jdGlvbiByZXNvbHZlKHNl
bGYsIG5ld1ZhbHVlKSB7XG4gIC8vIFByb21pc2UgUmVzb2x1dGlvbiBQcm9jZWR1cmU6IGh0dHBz
Oi8vZ2l0aHViLmNvbS9wcm9taXNlcy1hcGx1cy9wcm9taXNlcy1zcGVjI3RoZS1wcm9taXNlLXJl
c29sdXRpb24tcHJvY2VkdXJlXG4gIGlmIChuZXdWYWx1ZSA9PT0gc2VsZikge1xuICAgIHJldHVy
biByZWplY3QoXG4gICAgICBzZWxmLFxuICAgICAgbmV3IFR5cGVFcnJvcignQSBwcm9taXNlIGNh
bm5vdCBiZSByZXNvbHZlZCB3aXRoIGl0c2VsZi4nKVxuICAgICk7XG4gIH1cbiAgaWYgKFxuICAg
IG5ld1ZhbHVlICYmXG4gICAgKHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ29iamVjdCcgfHwgdHlwZW9m
IG5ld1ZhbHVlID09PSAnZnVuY3Rpb24nKVxuICApIHtcbiAgICB2YXIgdGhlbiA9IGdldFRoZW4o
bmV3VmFsdWUpO1xuICAgIGlmICh0aGVuID09PSBJU19FUlJPUikge1xuICAgICAgcmV0dXJuIHJl
amVjdChzZWxmLCBMQVNUX0VSUk9SKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgdGhlbiA9PT0g
c2VsZi50aGVuICYmXG4gICAgICBuZXdWYWx1ZSBpbnN0YW5jZW9mIFByb21pc2VcbiAgICApIHtc
biAgICAgIHNlbGYuXzgxID0gMztcbiAgICAgIHNlbGYuXzY1ID0gbmV3VmFsdWU7XG4gICAgICBm
aW5hbGUoc2VsZik7XG4gICAgICByZXR1cm47XG4gICAgfSBlbHNlIGlmICh0eXBlb2YgdGhlbiA9
PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgZG9SZXNvbHZlKHRoZW4uYmluZChuZXdWYWx1ZSksIHNl
bGYpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICBzZWxmLl84MSA9IDE7XG4gIHNlbGYu
XzY1ID0gbmV3VmFsdWU7XG4gIGZpbmFsZShzZWxmKTtcbn1cblxuZnVuY3Rpb24gcmVqZWN0KHNl
bGYsIG5ld1ZhbHVlKSB7XG4gIHNlbGYuXzgxID0gMjtcbiAgc2VsZi5fNjUgPSBuZXdWYWx1ZTtc
biAgaWYgKFByb21pc2UuXzk3KSB7XG4gICAgUHJvbWlzZS5fOTcoc2VsZiwgbmV3VmFsdWUpO1xu
ICB9XG4gIGZpbmFsZShzZWxmKTtcbn1cbmZ1bmN0aW9uIGZpbmFsZShzZWxmKSB7XG4gIGlmIChz
ZWxmLl80NSA9PT0gMSkge1xuICAgIGhhbmRsZShzZWxmLCBzZWxmLl81NCk7XG4gICAgc2VsZi5f
NTQgPSBudWxsO1xuICB9XG4gIGlmIChzZWxmLl80NSA9PT0gMikge1xuICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgc2VsZi5fNTQubGVuZ3RoOyBpKyspIHtcbiAgICAgIGhhbmRsZShzZWxmLCBzZWxm
Ll81NFtpXSk7XG4gICAgfVxuICAgIHNlbGYuXzU0ID0gbnVsbDtcbiAgfVxufVxuXG5mdW5jdGlv
biBIYW5kbGVyKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkLCBwcm9taXNlKXtcbiAgdGhpcy5vbkZ1
bGZpbGxlZCA9IHR5cGVvZiBvbkZ1bGZpbGxlZCA9PT0gJ2Z1bmN0aW9uJyA/IG9uRnVsZmlsbGVk
IDogbnVsbDtcbiAgdGhpcy5vblJlamVjdGVkID0gdHlwZW9mIG9uUmVqZWN0ZWQgPT09ICdmdW5j
dGlvbicgPyBvblJlamVjdGVkIDogbnVsbDtcbiAgdGhpcy5wcm9taXNlID0gcHJvbWlzZTtcbn1c
blxuLyoqXG4gKiBUYWtlIGEgcG90ZW50aWFsbHkgbWlzYmVoYXZpbmcgcmVzb2x2ZXIgZnVuY3Rp
b24gYW5kIG1ha2Ugc3VyZVxuICogb25GdWxmaWxsZWQgYW5kIG9uUmVqZWN0ZWQgYXJlIG9ubHkg
Y2FsbGVkIG9uY2UuXG4gKlxuICogTWFrZXMgbm8gZ3VhcmFudGVlcyBhYm91dCBhc3luY2hyb255
LlxuICovXG5mdW5jdGlvbiBkb1Jlc29sdmUoZm4sIHByb21pc2UpIHtcbiAgdmFyIGRvbmUgPSBm
YWxzZTtcbiAgdmFyIHJlcyA9IHRyeUNhbGxUd28oZm4sIGZ1bmN0aW9uICh2YWx1ZSkge1xuICAg
IGlmIChkb25lKSByZXR1cm47XG4gICAgZG9uZSA9IHRydWU7XG4gICAgcmVzb2x2ZShwcm9taXNl
LCB2YWx1ZSk7XG4gIH0sIGZ1bmN0aW9uIChyZWFzb24pIHtcbiAgICBpZiAoZG9uZSkgcmV0dXJu
O1xuICAgIGRvbmUgPSB0cnVlO1xuICAgIHJlamVjdChwcm9taXNlLCByZWFzb24pO1xuICB9KVxu
ICBpZiAoIWRvbmUgJiYgcmVzID09PSBJU19FUlJPUikge1xuICAgIGRvbmUgPSB0cnVlO1xuICAg
IHJlamVjdChwcm9taXNlLCBMQVNUX0VSUk9SKTtcbiAgfVxufVxuXG5cblxuLyoqKioqKioqKioq
KioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3Qtc2NyaXB0cy9+L3Byb21p
c2UvbGliL2NvcmUuanNcbiAqKiBtb2R1bGUgaWQgPSA4OFxuICoqIG1vZHVsZSBjaHVua3MgPSAw
XG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0Jztc
blxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKSxc
biAgICBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuXG52YXIgUmVhY3ROb29w
VXBkYXRlUXVldWUgPSByZXF1aXJlKCcuL1JlYWN0Tm9vcFVwZGF0ZVF1ZXVlJyk7XG5cbnZhciBj
YW5EZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vY2FuRGVmaW5lUHJvcGVydHknKTtcbnZhciBl
bXB0eU9iamVjdCA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5T2JqZWN0Jyk7XG52YXIgaW52YXJp
YW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIgbG93UHJpb3JpdHlXYXJu
aW5nID0gcmVxdWlyZSgnLi9sb3dQcmlvcml0eVdhcm5pbmcnKTtcblxuLyoqXG4gKiBCYXNlIGNs
YXNzIGhlbHBlcnMgZm9yIHRoZSB1cGRhdGluZyBzdGF0ZSBvZiBhIGNvbXBvbmVudC5cbiAqL1xu
ZnVuY3Rpb24gUmVhY3RDb21wb25lbnQocHJvcHMsIGNvbnRleHQsIHVwZGF0ZXIpIHtcbiAgdGhp
cy5wcm9wcyA9IHByb3BzO1xuICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICB0aGlzLnJlZnMg
PSBlbXB0eU9iamVjdDtcbiAgLy8gV2UgaW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCB1cGRhdGVyIGJ1
dCB0aGUgcmVhbCBvbmUgZ2V0cyBpbmplY3RlZCBieSB0aGVcbiAgLy8gcmVuZGVyZXIuXG4gIHRo
aXMudXBkYXRlciA9IHVwZGF0ZXIgfHwgUmVhY3ROb29wVXBkYXRlUXVldWU7XG59XG5cblJlYWN0
Q29tcG9uZW50LnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50ID0ge307XG5cbi8qKlxuICogU2V0
cyBhIHN1YnNldCBvZiB0aGUgc3RhdGUuIEFsd2F5cyB1c2UgdGhpcyB0byBtdXRhdGVcbiAqIHN0
YXRlLiBZb3Ugc2hvdWxkIHRyZWF0IGB0aGlzLnN0YXRlYCBhcyBpbW11dGFibGUuXG4gKlxuICog
VGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgYHRoaXMuc3RhdGVgIHdpbGwgYmUgaW1tZWRpYXRl
bHkgdXBkYXRlZCwgc29cbiAqIGFjY2Vzc2luZyBgdGhpcy5zdGF0ZWAgYWZ0ZXIgY2FsbGluZyB0
aGlzIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBvbGQgdmFsdWUuXG4gKlxuICogVGhlcmUgaXMgbm8g
Z3VhcmFudGVlIHRoYXQgY2FsbHMgdG8gYHNldFN0YXRlYCB3aWxsIHJ1biBzeW5jaHJvbm91c2x5
LFxuICogYXMgdGhleSBtYXkgZXZlbnR1YWxseSBiZSBiYXRjaGVkIHRvZ2V0aGVyLiAgWW91IGNh
biBwcm92aWRlIGFuIG9wdGlvbmFsXG4gKiBjYWxsYmFjayB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQg
d2hlbiB0aGUgY2FsbCB0byBzZXRTdGF0ZSBpcyBhY3R1YWxseVxuICogY29tcGxldGVkLlxuICpc
biAqIFdoZW4gYSBmdW5jdGlvbiBpcyBwcm92aWRlZCB0byBzZXRTdGF0ZSwgaXQgd2lsbCBiZSBj
YWxsZWQgYXQgc29tZSBwb2ludCBpblxuICogdGhlIGZ1dHVyZSAobm90IHN5bmNocm9ub3VzbHkp
LiBJdCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZSB1cCB0byBkYXRlXG4gKiBjb21wb25lbnQgYXJn
dW1lbnRzIChzdGF0ZSwgcHJvcHMsIGNvbnRleHQpLiBUaGVzZSB2YWx1ZXMgY2FuIGJlIGRpZmZl
cmVudFxuICogZnJvbSB0aGlzLiogYmVjYXVzZSB5b3VyIGZ1bmN0aW9uIG1heSBiZSBjYWxsZWQg
YWZ0ZXIgcmVjZWl2ZVByb3BzIGJ1dCBiZWZvcmVcbiAqIHNob3VsZENvbXBvbmVudFVwZGF0ZSwg
YW5kIHRoaXMgbmV3IHN0YXRlLCBwcm9wcywgYW5kIGNvbnRleHQgd2lsbCBub3QgeWV0IGJlXG4g
KiBhc3NpZ25lZCB0byB0aGlzLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fGZ1bmN0aW9ufSBwYXJ0
aWFsU3RhdGUgTmV4dCBwYXJ0aWFsIHN0YXRlIG9yIGZ1bmN0aW9uIHRvXG4gKiAgICAgICAgcHJv
ZHVjZSBuZXh0IHBhcnRpYWwgc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggY3VycmVudCBzdGF0ZS5c
biAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgc3RhdGUgaXMgdXBk
YXRlZC5cbiAqIEBmaW5hbFxuICogQHByb3RlY3RlZFxuICovXG5SZWFjdENvbXBvbmVudC5wcm90
b3R5cGUuc2V0U3RhdGUgPSBmdW5jdGlvbiAocGFydGlhbFN0YXRlLCBjYWxsYmFjaykge1xuICAh
KHR5cGVvZiBwYXJ0aWFsU3RhdGUgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBwYXJ0aWFsU3RhdGUg
PT09ICdmdW5jdGlvbicgfHwgcGFydGlhbFN0YXRlID09IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3NldFN0YXRlKC4uLik6
IHRha2VzIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMgdG8gdXBkYXRlIG9yIGEgZnVuY3Rp
b24gd2hpY2ggcmV0dXJucyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVzLicpIDogX3Byb2RJ
bnZhcmlhbnQoJzg1JykgOiB2b2lkIDA7XG4gIHRoaXMudXBkYXRlci5lbnF1ZXVlU2V0U3RhdGUo
dGhpcywgcGFydGlhbFN0YXRlKTtcbiAgaWYgKGNhbGxiYWNrKSB7XG4gICAgdGhpcy51cGRhdGVy
LmVucXVldWVDYWxsYmFjayh0aGlzLCBjYWxsYmFjaywgJ3NldFN0YXRlJyk7XG4gIH1cbn07XG5c
bi8qKlxuICogRm9yY2VzIGFuIHVwZGF0ZS4gVGhpcyBzaG91bGQgb25seSBiZSBpbnZva2VkIHdo
ZW4gaXQgaXMga25vd24gd2l0aFxuICogY2VydGFpbnR5IHRoYXQgd2UgYXJlICoqbm90KiogaW4g
YSBET00gdHJhbnNhY3Rpb24uXG4gKlxuICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3aGVu
IHlvdSBrbm93IHRoYXQgc29tZSBkZWVwZXIgYXNwZWN0IG9mIHRoZVxuICogY29tcG9uZW50J3Mg
c3RhdGUgaGFzIGNoYW5nZWQgYnV0IGBzZXRTdGF0ZWAgd2FzIG5vdCBjYWxsZWQuXG4gKlxuICog
VGhpcyB3aWxsIG5vdCBpbnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxs
IGludm9rZVxuICogYGNvbXBvbmVudFdpbGxVcGRhdGVgIGFuZCBgY29tcG9uZW50RGlkVXBkYXRl
YC5cbiAqXG4gKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHVwZGF0
ZSBpcyBjb21wbGV0ZS5cbiAqIEBmaW5hbFxuICogQHByb3RlY3RlZFxuICovXG5SZWFjdENvbXBv
bmVudC5wcm90b3R5cGUuZm9yY2VVcGRhdGUgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgdGhp
cy51cGRhdGVyLmVucXVldWVGb3JjZVVwZGF0ZSh0aGlzKTtcbiAgaWYgKGNhbGxiYWNrKSB7XG4g
ICAgdGhpcy51cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLCBjYWxsYmFjaywgJ2ZvcmNlVXBk
YXRlJyk7XG4gIH1cbn07XG5cbi8qKlxuICogRGVwcmVjYXRlZCBBUElzLiBUaGVzZSBBUElzIHVz
ZWQgdG8gZXhpc3Qgb24gY2xhc3NpYyBSZWFjdCBjbGFzc2VzIGJ1dCBzaW5jZVxuICogd2Ugd291
bGQgbGlrZSB0byBkZXByZWNhdGUgdGhlbSwgd2UncmUgbm90IGdvaW5nIHRvIG1vdmUgdGhlbSBv
dmVyIHRvIHRoaXNcbiAqIG1vZGVybiBiYXNlIGNsYXNzLiBJbnN0ZWFkLCB3ZSBkZWZpbmUgYSBn
ZXR0ZXIgdGhhdCB3YXJucyBpZiBpdCdzIGFjY2Vzc2VkLlxuICovXG5pZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgZGVwcmVjYXRlZEFQSXMgPSB7XG4g
ICAgaXNNb3VudGVkOiBbJ2lzTW91bnRlZCcsICdJbnN0ZWFkLCBtYWtlIHN1cmUgdG8gY2xlYW4g
dXAgc3Vic2NyaXB0aW9ucyBhbmQgcGVuZGluZyByZXF1ZXN0cyBpbiAnICsgJ2NvbXBvbmVudFdp
bGxVbm1vdW50IHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzLiddLFxuICAgIHJlcGxhY2VTdGF0ZTog
WydyZXBsYWNlU3RhdGUnLCAnUmVmYWN0b3IgeW91ciBjb2RlIHRvIHVzZSBzZXRTdGF0ZSBpbnN0
ZWFkIChzZWUgJyArICdodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzMy
MzYpLiddXG4gIH07XG4gIHZhciBkZWZpbmVEZXByZWNhdGlvbldhcm5pbmcgPSBmdW5jdGlvbiAo
bWV0aG9kTmFtZSwgaW5mbykge1xuICAgIGlmIChjYW5EZWZpbmVQcm9wZXJ0eSkge1xuICAgICAg
T2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWN0Q29tcG9uZW50LnByb3RvdHlwZSwgbWV0aG9kTmFt
ZSwge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBsb3dQcmlvcml0eVdh
cm5pbmcoZmFsc2UsICclcyguLi4pIGlzIGRlcHJlY2F0ZWQgaW4gcGxhaW4gSmF2YVNjcmlwdCBS
ZWFjdCBjbGFzc2VzLiAlcycsIGluZm9bMF0sIGluZm9bMV0pO1xuICAgICAgICAgIHJldHVybiB1
bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfTtcbiAgZm9yICh2YXIg
Zm5OYW1lIGluIGRlcHJlY2F0ZWRBUElzKSB7XG4gICAgaWYgKGRlcHJlY2F0ZWRBUElzLmhhc093
blByb3BlcnR5KGZuTmFtZSkpIHtcbiAgICAgIGRlZmluZURlcHJlY2F0aW9uV2FybmluZyhmbk5h
bWUsIGRlcHJlY2F0ZWRBUElzW2ZuTmFtZV0pO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEJh
c2UgY2xhc3MgaGVscGVycyBmb3IgdGhlIHVwZGF0aW5nIHN0YXRlIG9mIGEgY29tcG9uZW50Llxu
ICovXG5mdW5jdGlvbiBSZWFjdFB1cmVDb21wb25lbnQocHJvcHMsIGNvbnRleHQsIHVwZGF0ZXIp
IHtcbiAgLy8gRHVwbGljYXRlZCBmcm9tIFJlYWN0Q29tcG9uZW50LlxuICB0aGlzLnByb3BzID0g
cHJvcHM7XG4gIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gIHRoaXMucmVmcyA9IGVtcHR5T2Jq
ZWN0O1xuICAvLyBXZSBpbml0aWFsaXplIHRoZSBkZWZhdWx0IHVwZGF0ZXIgYnV0IHRoZSByZWFs
IG9uZSBnZXRzIGluamVjdGVkIGJ5IHRoZVxuICAvLyByZW5kZXJlci5cbiAgdGhpcy51cGRhdGVy
ID0gdXBkYXRlciB8fCBSZWFjdE5vb3BVcGRhdGVRdWV1ZTtcbn1cblxuZnVuY3Rpb24gQ29tcG9u
ZW50RHVtbXkoKSB7fVxuQ29tcG9uZW50RHVtbXkucHJvdG90eXBlID0gUmVhY3RDb21wb25lbnQu
cHJvdG90eXBlO1xuUmVhY3RQdXJlQ29tcG9uZW50LnByb3RvdHlwZSA9IG5ldyBDb21wb25lbnRE
dW1teSgpO1xuUmVhY3RQdXJlQ29tcG9uZW50LnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9IFJlYWN0
UHVyZUNvbXBvbmVudDtcbi8vIEF2b2lkIGFuIGV4dHJhIHByb3RvdHlwZSBqdW1wIGZvciB0aGVz
ZSBtZXRob2RzLlxuX2Fzc2lnbihSZWFjdFB1cmVDb21wb25lbnQucHJvdG90eXBlLCBSZWFjdENv
bXBvbmVudC5wcm90b3R5cGUpO1xuUmVhY3RQdXJlQ29tcG9uZW50LnByb3RvdHlwZS5pc1B1cmVS
ZWFjdENvbXBvbmVudCA9IHRydWU7XG5cbm1vZHVsZS5leHBvcnRzID0ge1xuICBDb21wb25lbnQ6
IFJlYWN0Q29tcG9uZW50LFxuICBQdXJlQ29tcG9uZW50OiBSZWFjdFB1cmVDb21wb25lbnRcbn07
XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVh
Y3QvbGliL1JlYWN0QmFzZUNsYXNzZXMuanNcbiAqKiBtb2R1bGUgaWQgPSA4OVxuICoqIG1vZHVs
ZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNi1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
biAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9c
blxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0
UHJvZEludmFyaWFudCcpO1xuXG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSByZXF1aXJlKCcuL1Jl
YWN0Q3VycmVudE93bmVyJyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9p
bnZhcmlhbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xu
XG5mdW5jdGlvbiBpc05hdGl2ZShmbikge1xuICAvLyBCYXNlZCBvbiBpc05hdGl2ZSgpIGZyb20g
TG9kYXNoXG4gIHZhciBmdW5jVG9TdHJpbmcgPSBGdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmc7
XG4gIHZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7
XG4gIHZhciByZUlzTmF0aXZlID0gUmVnRXhwKCdeJyArIGZ1bmNUb1N0cmluZ1xuICAvLyBUYWtl
IGFuIGV4YW1wbGUgbmF0aXZlIGZ1bmN0aW9uIHNvdXJjZSBmb3IgY29tcGFyaXNvblxuICAuY2Fs
bChoYXNPd25Qcm9wZXJ0eVxuICAvLyBTdHJpcCByZWdleCBjaGFyYWN0ZXJzIHNvIHdlIGNhbiB1
c2UgaXQgZm9yIHJlZ2V4XG4gICkucmVwbGFjZSgvW1xcXFxeJC4qKz8oKVtcXF17fXxdL2csICdc
XFxcJCYnXG4gIC8vIFJlbW92ZSBoYXNPd25Qcm9wZXJ0eSBmcm9tIHRoZSB0ZW1wbGF0ZSB0byBt
YWtlIGl0IGdlbmVyaWNcbiAgKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rpb24pLio/
KD89XFxcXFxcKCl8IGZvciAuKz8oPz1cXFxcXFxdKS9nLCAnJDEuKj8nKSArICckJyk7XG4gIHRy
eSB7XG4gICAgdmFyIHNvdXJjZSA9IGZ1bmNUb1N0cmluZy5jYWxsKGZuKTtcbiAgICByZXR1cm4g
cmVJc05hdGl2ZS50ZXN0KHNvdXJjZSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJldHVybiBm
YWxzZTtcbiAgfVxufVxuXG52YXIgY2FuVXNlQ29sbGVjdGlvbnMgPVxuLy8gQXJyYXkuZnJvbVxu
dHlwZW9mIEFycmF5LmZyb20gPT09ICdmdW5jdGlvbicgJiZcbi8vIE1hcFxudHlwZW9mIE1hcCA9
PT0gJ2Z1bmN0aW9uJyAmJiBpc05hdGl2ZShNYXApICYmXG4vLyBNYXAucHJvdG90eXBlLmtleXNc
bk1hcC5wcm90b3R5cGUgIT0gbnVsbCAmJiB0eXBlb2YgTWFwLnByb3RvdHlwZS5rZXlzID09PSAn
ZnVuY3Rpb24nICYmIGlzTmF0aXZlKE1hcC5wcm90b3R5cGUua2V5cykgJiZcbi8vIFNldFxudHlw
ZW9mIFNldCA9PT0gJ2Z1bmN0aW9uJyAmJiBpc05hdGl2ZShTZXQpICYmXG4vLyBTZXQucHJvdG90
eXBlLmtleXNcblNldC5wcm90b3R5cGUgIT0gbnVsbCAmJiB0eXBlb2YgU2V0LnByb3RvdHlwZS5r
ZXlzID09PSAnZnVuY3Rpb24nICYmIGlzTmF0aXZlKFNldC5wcm90b3R5cGUua2V5cyk7XG5cbnZh
ciBzZXRJdGVtO1xudmFyIGdldEl0ZW07XG52YXIgcmVtb3ZlSXRlbTtcbnZhciBnZXRJdGVtSURz
O1xudmFyIGFkZFJvb3Q7XG52YXIgcmVtb3ZlUm9vdDtcbnZhciBnZXRSb290SURzO1xuXG5pZiAo
Y2FuVXNlQ29sbGVjdGlvbnMpIHtcbiAgdmFyIGl0ZW1NYXAgPSBuZXcgTWFwKCk7XG4gIHZhciBy
b290SURTZXQgPSBuZXcgU2V0KCk7XG5cbiAgc2V0SXRlbSA9IGZ1bmN0aW9uIChpZCwgaXRlbSkg
e1xuICAgIGl0ZW1NYXAuc2V0KGlkLCBpdGVtKTtcbiAgfTtcbiAgZ2V0SXRlbSA9IGZ1bmN0aW9u
IChpZCkge1xuICAgIHJldHVybiBpdGVtTWFwLmdldChpZCk7XG4gIH07XG4gIHJlbW92ZUl0ZW0g
PSBmdW5jdGlvbiAoaWQpIHtcbiAgICBpdGVtTWFwWydkZWxldGUnXShpZCk7XG4gIH07XG4gIGdl
dEl0ZW1JRHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20oaXRlbU1hcC5r
ZXlzKCkpO1xuICB9O1xuXG4gIGFkZFJvb3QgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICByb290SURT
ZXQuYWRkKGlkKTtcbiAgfTtcbiAgcmVtb3ZlUm9vdCA9IGZ1bmN0aW9uIChpZCkge1xuICAgIHJv
b3RJRFNldFsnZGVsZXRlJ10oaWQpO1xuICB9O1xuICBnZXRSb290SURzID0gZnVuY3Rpb24gKCkg
e1xuICAgIHJldHVybiBBcnJheS5mcm9tKHJvb3RJRFNldC5rZXlzKCkpO1xuICB9O1xufSBlbHNl
IHtcbiAgdmFyIGl0ZW1CeUtleSA9IHt9O1xuICB2YXIgcm9vdEJ5S2V5ID0ge307XG5cbiAgLy8g
VXNlIG5vbi1udW1lcmljIGtleXMgdG8gcHJldmVudCBWOCBwZXJmb3JtYW5jZSBpc3N1ZXM6XG4g
IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzcyMzJcbiAgdmFyIGdl
dEtleUZyb21JRCA9IGZ1bmN0aW9uIChpZCkge1xuICAgIHJldHVybiAnLicgKyBpZDtcbiAgfTtc
biAgdmFyIGdldElERnJvbUtleSA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgICByZXR1cm4gcGFyc2VJ
bnQoa2V5LnN1YnN0cigxKSwgMTApO1xuICB9O1xuXG4gIHNldEl0ZW0gPSBmdW5jdGlvbiAoaWQs
IGl0ZW0pIHtcbiAgICB2YXIga2V5ID0gZ2V0S2V5RnJvbUlEKGlkKTtcbiAgICBpdGVtQnlLZXlb
a2V5XSA9IGl0ZW07XG4gIH07XG4gIGdldEl0ZW0gPSBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIg
a2V5ID0gZ2V0S2V5RnJvbUlEKGlkKTtcbiAgICByZXR1cm4gaXRlbUJ5S2V5W2tleV07XG4gIH07
XG4gIHJlbW92ZUl0ZW0gPSBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIga2V5ID0gZ2V0S2V5RnJv
bUlEKGlkKTtcbiAgICBkZWxldGUgaXRlbUJ5S2V5W2tleV07XG4gIH07XG4gIGdldEl0ZW1JRHMg
PSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGl0ZW1CeUtleSkubWFwKGdl
dElERnJvbUtleSk7XG4gIH07XG5cbiAgYWRkUm9vdCA9IGZ1bmN0aW9uIChpZCkge1xuICAgIHZh
ciBrZXkgPSBnZXRLZXlGcm9tSUQoaWQpO1xuICAgIHJvb3RCeUtleVtrZXldID0gdHJ1ZTtcbiAg
fTtcbiAgcmVtb3ZlUm9vdCA9IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBrZXkgPSBnZXRLZXlG
cm9tSUQoaWQpO1xuICAgIGRlbGV0ZSByb290QnlLZXlba2V5XTtcbiAgfTtcbiAgZ2V0Um9vdElE
cyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gT2JqZWN0LmtleXMocm9vdEJ5S2V5KS5tYXAo
Z2V0SURGcm9tS2V5KTtcbiAgfTtcbn1cblxudmFyIHVubW91bnRlZElEcyA9IFtdO1xuXG5mdW5j
dGlvbiBwdXJnZURlZXAoaWQpIHtcbiAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcbiAgaWYgKGl0
ZW0pIHtcbiAgICB2YXIgY2hpbGRJRHMgPSBpdGVtLmNoaWxkSURzO1xuXG4gICAgcmVtb3ZlSXRl
bShpZCk7XG4gICAgY2hpbGRJRHMuZm9yRWFjaChwdXJnZURlZXApO1xuICB9XG59XG5cbmZ1bmN0
aW9uIGRlc2NyaWJlQ29tcG9uZW50RnJhbWUobmFtZSwgc291cmNlLCBvd25lck5hbWUpIHtcbiAg
cmV0dXJuICdcXG4gICAgaW4gJyArIChuYW1lIHx8ICdVbmtub3duJykgKyAoc291cmNlID8gJyAo
YXQgJyArIHNvdXJjZS5maWxlTmFtZS5yZXBsYWNlKC9eLipbXFxcXFxcL10vLCAnJykgKyAnOicg
KyBzb3VyY2UubGluZU51bWJlciArICcpJyA6IG93bmVyTmFtZSA/ICcgKGNyZWF0ZWQgYnkgJyAr
IG93bmVyTmFtZSArICcpJyA6ICcnKTtcbn1cblxuZnVuY3Rpb24gZ2V0RGlzcGxheU5hbWUoZWxl
bWVudCkge1xuICBpZiAoZWxlbWVudCA9PSBudWxsKSB7XG4gICAgcmV0dXJuICcjZW1wdHknO1xu
ICB9IGVsc2UgaWYgKHR5cGVvZiBlbGVtZW50ID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgZWxlbWVu
dCA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gJyN0ZXh0JztcbiAgfSBlbHNlIGlmICh0eXBl
b2YgZWxlbWVudC50eXBlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBlbGVtZW50LnR5cGU7
XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGVsZW1lbnQudHlwZS5kaXNwbGF5TmFtZSB8fCBlbGVt
ZW50LnR5cGUubmFtZSB8fCAnVW5rbm93bic7XG4gIH1cbn1cblxuZnVuY3Rpb24gZGVzY3JpYmVJ
RChpZCkge1xuICB2YXIgbmFtZSA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RGlzcGxheU5h
bWUoaWQpO1xuICB2YXIgZWxlbWVudCA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RWxlbWVu
dChpZCk7XG4gIHZhciBvd25lcklEID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRPd25lcklE
KGlkKTtcbiAgdmFyIG93bmVyTmFtZTtcbiAgaWYgKG93bmVySUQpIHtcbiAgICBvd25lck5hbWUg
PSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldERpc3BsYXlOYW1lKG93bmVySUQpO1xuICB9XG4g
IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGVsZW1lbnQs
ICdSZWFjdENvbXBvbmVudFRyZWVIb29rOiBNaXNzaW5nIFJlYWN0IGVsZW1lbnQgZm9yIGRlYnVn
SUQgJXMgd2hlbiAnICsgJ2J1aWxkaW5nIHN0YWNrJywgaWQpIDogdm9pZCAwO1xuICByZXR1cm4g
ZGVzY3JpYmVDb21wb25lbnRGcmFtZShuYW1lLCBlbGVtZW50ICYmIGVsZW1lbnQuX3NvdXJjZSwg
b3duZXJOYW1lKTtcbn1cblxudmFyIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSB7XG4gIG9uU2V0
Q2hpbGRyZW46IGZ1bmN0aW9uIChpZCwgbmV4dENoaWxkSURzKSB7XG4gICAgdmFyIGl0ZW0gPSBn
ZXRJdGVtKGlkKTtcbiAgICAhaXRlbSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdJdGVtIG11c3QgaGF2ZSBiZWVuIHNldCcpIDogX3By
b2RJbnZhcmlhbnQoJzE0NCcpIDogdm9pZCAwO1xuICAgIGl0ZW0uY2hpbGRJRHMgPSBuZXh0Q2hp
bGRJRHM7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5leHRDaGlsZElEcy5sZW5ndGg7IGkr
Kykge1xuICAgICAgdmFyIG5leHRDaGlsZElEID0gbmV4dENoaWxkSURzW2ldO1xuICAgICAgdmFy
IG5leHRDaGlsZCA9IGdldEl0ZW0obmV4dENoaWxkSUQpO1xuICAgICAgIW5leHRDaGlsZCA/IHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdF
eHBlY3RlZCBob29rIGV2ZW50cyB0byBmaXJlIGZvciB0aGUgY2hpbGQgYmVmb3JlIGl0cyBwYXJl
bnQgaW5jbHVkZXMgaXQgaW4gb25TZXRDaGlsZHJlbigpLicpIDogX3Byb2RJbnZhcmlhbnQoJzE0
MCcpIDogdm9pZCAwO1xuICAgICAgIShuZXh0Q2hpbGQuY2hpbGRJRHMgIT0gbnVsbCB8fCB0eXBl
b2YgbmV4dENoaWxkLmVsZW1lbnQgIT09ICdvYmplY3QnIHx8IG5leHRDaGlsZC5lbGVtZW50ID09
IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFu
dChmYWxzZSwgJ0V4cGVjdGVkIG9uU2V0Q2hpbGRyZW4oKSB0byBmaXJlIGZvciBhIGNvbnRhaW5l
ciBjaGlsZCBiZWZvcmUgaXRzIHBhcmVudCBpbmNsdWRlcyBpdCBpbiBvblNldENoaWxkcmVuKCku
JykgOiBfcHJvZEludmFyaWFudCgnMTQxJykgOiB2b2lkIDA7XG4gICAgICAhbmV4dENoaWxkLmlz
TW91bnRlZCA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlh
bnQoZmFsc2UsICdFeHBlY3RlZCBvbk1vdW50Q29tcG9uZW50KCkgdG8gZmlyZSBmb3IgdGhlIGNo
aWxkIGJlZm9yZSBpdHMgcGFyZW50IGluY2x1ZGVzIGl0IGluIG9uU2V0Q2hpbGRyZW4oKS4nKSA6
IF9wcm9kSW52YXJpYW50KCc3MScpIDogdm9pZCAwO1xuICAgICAgaWYgKG5leHRDaGlsZC5wYXJl
bnRJRCA9PSBudWxsKSB7XG4gICAgICAgIG5leHRDaGlsZC5wYXJlbnRJRCA9IGlkO1xuICAgICAg
ICAvLyBUT0RPOiBUaGlzIHNob3VsZG4ndCBiZSBuZWNlc3NhcnkgYnV0IG1vdW50aW5nIGEgbmV3
IHJvb3QgZHVyaW5nIGluXG4gICAgICAgIC8vIGNvbXBvbmVudFdpbGxNb3VudCBjdXJyZW50bHkg
Y2F1c2VzIG5vdC15ZXQtbW91bnRlZCBjb21wb25lbnRzIHRvXG4gICAgICAgIC8vIGJlIHB1cmdl
ZCBmcm9tIG91ciB0cmVlIGRhdGEgc28gdGhlaXIgcGFyZW50IGlkIGlzIG1pc3NpbmcuXG4gICAg
ICB9XG4gICAgICAhKG5leHRDaGlsZC5wYXJlbnRJRCA9PT0gaWQpID8gcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V4cGVjdGVkIG9uQmVm
b3JlTW91bnRDb21wb25lbnQoKSBwYXJlbnQgYW5kIG9uU2V0Q2hpbGRyZW4oKSB0byBiZSBjb25z
aXN0ZW50ICglcyBoYXMgcGFyZW50cyAlcyBhbmQgJXMpLicsIG5leHRDaGlsZElELCBuZXh0Q2hp
bGQucGFyZW50SUQsIGlkKSA6IF9wcm9kSW52YXJpYW50KCcxNDInLCBuZXh0Q2hpbGRJRCwgbmV4
dENoaWxkLnBhcmVudElELCBpZCkgOiB2b2lkIDA7XG4gICAgfVxuICB9LFxuICBvbkJlZm9yZU1v
dW50Q29tcG9uZW50OiBmdW5jdGlvbiAoaWQsIGVsZW1lbnQsIHBhcmVudElEKSB7XG4gICAgdmFy
IGl0ZW0gPSB7XG4gICAgICBlbGVtZW50OiBlbGVtZW50LFxuICAgICAgcGFyZW50SUQ6IHBhcmVu
dElELFxuICAgICAgdGV4dDogbnVsbCxcbiAgICAgIGNoaWxkSURzOiBbXSxcbiAgICAgIGlzTW91
bnRlZDogZmFsc2UsXG4gICAgICB1cGRhdGVDb3VudDogMFxuICAgIH07XG4gICAgc2V0SXRlbShp
ZCwgaXRlbSk7XG4gIH0sXG4gIG9uQmVmb3JlVXBkYXRlQ29tcG9uZW50OiBmdW5jdGlvbiAoaWQs
IGVsZW1lbnQpIHtcbiAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuICAgIGlmICghaXRlbSB8
fCAhaXRlbS5pc01vdW50ZWQpIHtcbiAgICAgIC8vIFdlIG1heSBlbmQgdXAgaGVyZSBhcyBhIHJl
c3VsdCBvZiBzZXRTdGF0ZSgpIGluIGNvbXBvbmVudFdpbGxVbm1vdW50KCkuXG4gICAgICAvLyBJ
biB0aGlzIGNhc2UsIGlnbm9yZSB0aGUgZWxlbWVudC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4g
ICAgaXRlbS5lbGVtZW50ID0gZWxlbWVudDtcbiAgfSxcbiAgb25Nb3VudENvbXBvbmVudDogZnVu
Y3Rpb24gKGlkKSB7XG4gICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcbiAgICAhaXRlbSA/IHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdJ
dGVtIG11c3QgaGF2ZSBiZWVuIHNldCcpIDogX3Byb2RJbnZhcmlhbnQoJzE0NCcpIDogdm9pZCAw
O1xuICAgIGl0ZW0uaXNNb3VudGVkID0gdHJ1ZTtcbiAgICB2YXIgaXNSb290ID0gaXRlbS5wYXJl
bnRJRCA9PT0gMDtcbiAgICBpZiAoaXNSb290KSB7XG4gICAgICBhZGRSb290KGlkKTtcbiAgICB9
XG4gIH0sXG4gIG9uVXBkYXRlQ29tcG9uZW50OiBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIgaXRl
bSA9IGdldEl0ZW0oaWQpO1xuICAgIGlmICghaXRlbSB8fCAhaXRlbS5pc01vdW50ZWQpIHtcbiAg
ICAgIC8vIFdlIG1heSBlbmQgdXAgaGVyZSBhcyBhIHJlc3VsdCBvZiBzZXRTdGF0ZSgpIGluIGNv
bXBvbmVudFdpbGxVbm1vdW50KCkuXG4gICAgICAvLyBJbiB0aGlzIGNhc2UsIGlnbm9yZSB0aGUg
ZWxlbWVudC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaXRlbS51cGRhdGVDb3VudCsrO1xu
ICB9LFxuICBvblVubW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBpdGVt
ID0gZ2V0SXRlbShpZCk7XG4gICAgaWYgKGl0ZW0pIHtcbiAgICAgIC8vIFdlIG5lZWQgdG8gY2hl
Y2sgaWYgaXQgZXhpc3RzLlxuICAgICAgLy8gYGl0ZW1gIG1pZ2h0IG5vdCBleGlzdCBpZiBpdCBp
cyBpbnNpZGUgYW4gZXJyb3IgYm91bmRhcnksIGFuZCBhIHNpYmxpbmdcbiAgICAgIC8vIGVycm9y
IGJvdW5kYXJ5IGNoaWxkIHRocmV3IHdoaWxlIG1vdW50aW5nLiBUaGVuIHRoaXMgaW5zdGFuY2Ug
bmV2ZXJcbiAgICAgIC8vIGdvdCBhIGNoYW5jZSB0byBtb3VudCwgYnV0IGl0IHN0aWxsIGdldHMg
YW4gdW5tb3VudGluZyBldmVudCBkdXJpbmdcbiAgICAgIC8vIHRoZSBlcnJvciBib3VuZGFyeSBj
bGVhbnVwLlxuICAgICAgaXRlbS5pc01vdW50ZWQgPSBmYWxzZTtcbiAgICAgIHZhciBpc1Jvb3Qg
PSBpdGVtLnBhcmVudElEID09PSAwO1xuICAgICAgaWYgKGlzUm9vdCkge1xuICAgICAgICByZW1v
dmVSb290KGlkKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdW5tb3VudGVkSURzLnB1c2goaWQpO1xu
ICB9LFxuICBwdXJnZVVubW91bnRlZENvbXBvbmVudHM6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAo
UmVhY3RDb21wb25lbnRUcmVlSG9vay5fcHJldmVudFB1cmdpbmcpIHtcbiAgICAgIC8vIFNob3Vs
ZCBvbmx5IGJlIHVzZWQgZm9yIHRlc3RpbmcuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCB1bm1vdW50ZWRJRHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZh
ciBpZCA9IHVubW91bnRlZElEc1tpXTtcbiAgICAgIHB1cmdlRGVlcChpZCk7XG4gICAgfVxuICAg
IHVubW91bnRlZElEcy5sZW5ndGggPSAwO1xuICB9LFxuICBpc01vdW50ZWQ6IGZ1bmN0aW9uIChp
ZCkge1xuICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG4gICAgcmV0dXJuIGl0ZW0gPyBpdGVt
LmlzTW91bnRlZCA6IGZhbHNlO1xuICB9LFxuICBnZXRDdXJyZW50U3RhY2tBZGRlbmR1bTogZnVu
Y3Rpb24gKHRvcEVsZW1lbnQpIHtcbiAgICB2YXIgaW5mbyA9ICcnO1xuICAgIGlmICh0b3BFbGVt
ZW50KSB7XG4gICAgICB2YXIgbmFtZSA9IGdldERpc3BsYXlOYW1lKHRvcEVsZW1lbnQpO1xuICAg
ICAgdmFyIG93bmVyID0gdG9wRWxlbWVudC5fb3duZXI7XG4gICAgICBpbmZvICs9IGRlc2NyaWJl
Q29tcG9uZW50RnJhbWUobmFtZSwgdG9wRWxlbWVudC5fc291cmNlLCBvd25lciAmJiBvd25lci5n
ZXROYW1lKCkpO1xuICAgIH1cblxuICAgIHZhciBjdXJyZW50T3duZXIgPSBSZWFjdEN1cnJlbnRP
d25lci5jdXJyZW50O1xuICAgIHZhciBpZCA9IGN1cnJlbnRPd25lciAmJiBjdXJyZW50T3duZXIu
X2RlYnVnSUQ7XG5cbiAgICBpbmZvICs9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0U3RhY2tB
ZGRlbmR1bUJ5SUQoaWQpO1xuICAgIHJldHVybiBpbmZvO1xuICB9LFxuICBnZXRTdGFja0FkZGVu
ZHVtQnlJRDogZnVuY3Rpb24gKGlkKSB7XG4gICAgdmFyIGluZm8gPSAnJztcbiAgICB3aGlsZSAo
aWQpIHtcbiAgICAgIGluZm8gKz0gZGVzY3JpYmVJRChpZCk7XG4gICAgICBpZCA9IFJlYWN0Q29t
cG9uZW50VHJlZUhvb2suZ2V0UGFyZW50SUQoaWQpO1xuICAgIH1cbiAgICByZXR1cm4gaW5mbztc
biAgfSxcbiAgZ2V0Q2hpbGRJRHM6IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBpdGVtID0gZ2V0
SXRlbShpZCk7XG4gICAgcmV0dXJuIGl0ZW0gPyBpdGVtLmNoaWxkSURzIDogW107XG4gIH0sXG4g
IGdldERpc3BsYXlOYW1lOiBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIgZWxlbWVudCA9IFJlYWN0
Q29tcG9uZW50VHJlZUhvb2suZ2V0RWxlbWVudChpZCk7XG4gICAgaWYgKCFlbGVtZW50KSB7XG4g
ICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGdldERpc3BsYXlOYW1lKGVsZW1l
bnQpO1xuICB9LFxuICBnZXRFbGVtZW50OiBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIgaXRlbSA9
IGdldEl0ZW0oaWQpO1xuICAgIHJldHVybiBpdGVtID8gaXRlbS5lbGVtZW50IDogbnVsbDtcbiAg
fSxcbiAgZ2V0T3duZXJJRDogZnVuY3Rpb24gKGlkKSB7XG4gICAgdmFyIGVsZW1lbnQgPSBSZWFj
dENvbXBvbmVudFRyZWVIb29rLmdldEVsZW1lbnQoaWQpO1xuICAgIGlmICghZWxlbWVudCB8fCAh
ZWxlbWVudC5fb3duZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4g
ZWxlbWVudC5fb3duZXIuX2RlYnVnSUQ7XG4gIH0sXG4gIGdldFBhcmVudElEOiBmdW5jdGlvbiAo
aWQpIHtcbiAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuICAgIHJldHVybiBpdGVtID8gaXRl
bS5wYXJlbnRJRCA6IG51bGw7XG4gIH0sXG4gIGdldFNvdXJjZTogZnVuY3Rpb24gKGlkKSB7XG4g
ICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcbiAgICB2YXIgZWxlbWVudCA9IGl0ZW0gPyBpdGVt
LmVsZW1lbnQgOiBudWxsO1xuICAgIHZhciBzb3VyY2UgPSBlbGVtZW50ICE9IG51bGwgPyBlbGVt
ZW50Ll9zb3VyY2UgOiBudWxsO1xuICAgIHJldHVybiBzb3VyY2U7XG4gIH0sXG4gIGdldFRleHQ6
IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBlbGVtZW50ID0gUmVhY3RDb21wb25lbnRUcmVlSG9v
ay5nZXRFbGVtZW50KGlkKTtcbiAgICBpZiAodHlwZW9mIGVsZW1lbnQgPT09ICdzdHJpbmcnKSB7
XG4gICAgICByZXR1cm4gZWxlbWVudDtcbiAgICB9IGVsc2UgaWYgKHR5cGVvZiBlbGVtZW50ID09
PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuICcnICsgZWxlbWVudDtcbiAgICB9IGVsc2Uge1xu
ICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9LFxuICBnZXRVcGRhdGVDb3VudDogZnVuY3Rp
b24gKGlkKSB7XG4gICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcbiAgICByZXR1cm4gaXRlbSA/
IGl0ZW0udXBkYXRlQ291bnQgOiAwO1xuICB9LFxuXG5cbiAgZ2V0Um9vdElEczogZ2V0Um9vdElE
cyxcbiAgZ2V0UmVnaXN0ZXJlZElEczogZ2V0SXRlbUlEcyxcblxuICBwdXNoTm9uU3RhbmRhcmRX
YXJuaW5nU3RhY2s6IGZ1bmN0aW9uIChpc0NyZWF0aW5nRWxlbWVudCwgY3VycmVudFNvdXJjZSkg
e1xuICAgIGlmICh0eXBlb2YgY29uc29sZS5yZWFjdFN0YWNrICE9PSAnZnVuY3Rpb24nKSB7XG4g
ICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHN0YWNrID0gW107XG4gICAgdmFyIGN1cnJl
bnRPd25lciA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQ7XG4gICAgdmFyIGlkID0gY3VycmVu
dE93bmVyICYmIGN1cnJlbnRPd25lci5fZGVidWdJRDtcblxuICAgIHRyeSB7XG4gICAgICBpZiAo
aXNDcmVhdGluZ0VsZW1lbnQpIHtcbiAgICAgICAgc3RhY2sucHVzaCh7XG4gICAgICAgICAgbmFt
ZTogaWQgPyBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldERpc3BsYXlOYW1lKGlkKSA6IG51bGws
XG4gICAgICAgICAgZmlsZU5hbWU6IGN1cnJlbnRTb3VyY2UgPyBjdXJyZW50U291cmNlLmZpbGVO
YW1lIDogbnVsbCxcbiAgICAgICAgICBsaW5lTnVtYmVyOiBjdXJyZW50U291cmNlID8gY3VycmVu
dFNvdXJjZS5saW5lTnVtYmVyIDogbnVsbFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAg
d2hpbGUgKGlkKSB7XG4gICAgICAgIHZhciBlbGVtZW50ID0gUmVhY3RDb21wb25lbnRUcmVlSG9v
ay5nZXRFbGVtZW50KGlkKTtcbiAgICAgICAgdmFyIHBhcmVudElEID0gUmVhY3RDb21wb25lbnRU
cmVlSG9vay5nZXRQYXJlbnRJRChpZCk7XG4gICAgICAgIHZhciBvd25lcklEID0gUmVhY3RDb21w
b25lbnRUcmVlSG9vay5nZXRPd25lcklEKGlkKTtcbiAgICAgICAgdmFyIG93bmVyTmFtZSA9IG93
bmVySUQgPyBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldERpc3BsYXlOYW1lKG93bmVySUQpIDog
bnVsbDtcbiAgICAgICAgdmFyIHNvdXJjZSA9IGVsZW1lbnQgJiYgZWxlbWVudC5fc291cmNlO1xu
ICAgICAgICBzdGFjay5wdXNoKHtcbiAgICAgICAgICBuYW1lOiBvd25lck5hbWUsXG4gICAgICAg
ICAgZmlsZU5hbWU6IHNvdXJjZSA/IHNvdXJjZS5maWxlTmFtZSA6IG51bGwsXG4gICAgICAgICAg
bGluZU51bWJlcjogc291cmNlID8gc291cmNlLmxpbmVOdW1iZXIgOiBudWxsXG4gICAgICAgIH0p
O1xuICAgICAgICBpZCA9IHBhcmVudElEO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGVycikge1xu
ICAgICAgLy8gSW50ZXJuYWwgc3RhdGUgaXMgbWVzc2VkIHVwLlxuICAgICAgLy8gU3RvcCBidWls
ZGluZyB0aGUgc3RhY2sgKGl0J3MganVzdCBhIG5pY2UgdG8gaGF2ZSkuXG4gICAgfVxuXG4gICAg
Y29uc29sZS5yZWFjdFN0YWNrKHN0YWNrKTtcbiAgfSxcbiAgcG9wTm9uU3RhbmRhcmRXYXJuaW5n
U3RhY2s6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUucmVhY3RTdGFja0Vu
ZCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zb2xlLnJl
YWN0U3RhY2tFbmQoKTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdENvbXBvbmVu
dFRyZWVIb29rO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4g
KiogLi9+L3JlYWN0L2xpYi9SZWFjdENvbXBvbmVudFRyZWVIb29rLmpzXG4gKiogbW9kdWxlIGlk
ID0gOTBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIw
MTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxu
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLy8gVGhlIFN5bWJvbCB1c2VkIHRv
IHRhZyB0aGUgUmVhY3RFbGVtZW50IHR5cGUuIElmIHRoZXJlIGlzIG5vIG5hdGl2ZSBTeW1ib2xc
bi8vIG5vciBwb2x5ZmlsbCwgdGhlbiBhIHBsYWluIG51bWJlciBpcyB1c2VkIGZvciBwZXJmb3Jt
YW5jZS5cblxudmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5j
dGlvbicgJiYgU3ltYm9sWydmb3InXSAmJiBTeW1ib2xbJ2ZvciddKCdyZWFjdC5lbGVtZW50Jykg
fHwgMHhlYWM3O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJFQUNUX0VMRU1FTlRfVFlQRTtcblxuXG4v
KioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC9saWIv
UmVhY3RFbGVtZW50U3ltYm9sLmpzXG4gKiogbW9kdWxlIGlkID0gOTFcbiAqKiBtb2R1bGUgY2h1
bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTUtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0
cmljdCc7XG5cbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG5m
dW5jdGlvbiB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgY2FsbGVyTmFtZSkge1xuICBpZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHZhciBjb25zdHJ1Y3Rv
ciA9IHB1YmxpY0luc3RhbmNlLmNvbnN0cnVjdG9yO1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMoLi4uKTogQ2FuIG9ubHkgdXBk
YXRlIGEgbW91bnRlZCBvciBtb3VudGluZyBjb21wb25lbnQuICcgKyAnVGhpcyB1c3VhbGx5IG1l
YW5zIHlvdSBjYWxsZWQgJXMoKSBvbiBhbiB1bm1vdW50ZWQgY29tcG9uZW50LiAnICsgJ1RoaXMg
aXMgYSBuby1vcC4gUGxlYXNlIGNoZWNrIHRoZSBjb2RlIGZvciB0aGUgJXMgY29tcG9uZW50Lics
IGNhbGxlck5hbWUsIGNhbGxlck5hbWUsIGNvbnN0cnVjdG9yICYmIChjb25zdHJ1Y3Rvci5kaXNw
bGF5TmFtZSB8fCBjb25zdHJ1Y3Rvci5uYW1lKSB8fCAnUmVhY3RDbGFzcycpIDogdm9pZCAwO1xu
ICB9XG59XG5cbi8qKlxuICogVGhpcyBpcyB0aGUgYWJzdHJhY3QgQVBJIGZvciBhbiB1cGRhdGUg
cXVldWUuXG4gKi9cbnZhciBSZWFjdE5vb3BVcGRhdGVRdWV1ZSA9IHtcbiAgLyoqXG4gICAqIENo
ZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGNvbXBvc2l0ZSBjb21wb25lbnQgaXMgbW91bnRlZC5c
biAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2Ugd2Ug
d2FudCB0byB0ZXN0LlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIG1vdW50ZWQsIGZh
bHNlIG90aGVyd2lzZS5cbiAgICogQHByb3RlY3RlZFxuICAgKiBAZmluYWxcbiAgICovXG4gIGlz
TW91bnRlZDogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xu
ICB9LFxuXG4gIC8qKlxuICAgKiBFbnF1ZXVlIGEgY2FsbGJhY2sgdGhhdCB3aWxsIGJlIGV4ZWN1
dGVkIGFmdGVyIGFsbCB0aGUgcGVuZGluZyB1cGRhdGVzXG4gICAqIGhhdmUgcHJvY2Vzc2VkLlxu
ICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5j
ZSB0byB1c2UgYXMgYHRoaXNgIGNvbnRleHQuXG4gICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxs
YmFjayBDYWxsZWQgYWZ0ZXIgc3RhdGUgaXMgdXBkYXRlZC5cbiAgICogQGludGVybmFsXG4gICAq
L1xuICBlbnF1ZXVlQ2FsbGJhY2s6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgY2FsbGJhY2sp
IHt9LFxuXG4gIC8qKlxuICAgKiBGb3JjZXMgYW4gdXBkYXRlLiBUaGlzIHNob3VsZCBvbmx5IGJl
IGludm9rZWQgd2hlbiBpdCBpcyBrbm93biB3aXRoXG4gICAqIGNlcnRhaW50eSB0aGF0IHdlIGFy
ZSAqKm5vdCoqIGluIGEgRE9NIHRyYW5zYWN0aW9uLlxuICAgKlxuICAgKiBZb3UgbWF5IHdhbnQg
dG8gY2FsbCB0aGlzIHdoZW4geW91IGtub3cgdGhhdCBzb21lIGRlZXBlciBhc3BlY3Qgb2YgdGhl
XG4gICAqIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBjaGFuZ2VkIGJ1dCBgc2V0U3RhdGVgIHdhcyBu
b3QgY2FsbGVkLlxuICAgKlxuICAgKiBUaGlzIHdpbGwgbm90IGludm9rZSBgc2hvdWxkQ29tcG9u
ZW50VXBkYXRlYCwgYnV0IGl0IHdpbGwgaW52b2tlXG4gICAqIGBjb21wb25lbnRXaWxsVXBkYXRl
YCBhbmQgYGNvbXBvbmVudERpZFVwZGF0ZWAuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFz
c30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAg
KiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVGb3JjZVVwZGF0ZTogZnVuY3Rpb24gKHB1Ymxp
Y0luc3RhbmNlKSB7XG4gICAgd2Fybk5vb3AocHVibGljSW5zdGFuY2UsICdmb3JjZVVwZGF0ZScp
O1xuICB9LFxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyBhbGwgb2YgdGhlIHN0YXRlLiBBbHdheXMg
dXNlIHRoaXMgb3IgYHNldFN0YXRlYCB0byBtdXRhdGUgc3RhdGUuXG4gICAqIFlvdSBzaG91bGQg
dHJlYXQgYHRoaXMuc3RhdGVgIGFzIGltbXV0YWJsZS5cbiAgICpcbiAgICogVGhlcmUgaXMgbm8g
Z3VhcmFudGVlIHRoYXQgYHRoaXMuc3RhdGVgIHdpbGwgYmUgaW1tZWRpYXRlbHkgdXBkYXRlZCwg
c29cbiAgICogYWNjZXNzaW5nIGB0aGlzLnN0YXRlYCBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9k
IG1heSByZXR1cm4gdGhlIG9sZCB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNz
fSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG4gICAq
IEBwYXJhbSB7b2JqZWN0fSBjb21wbGV0ZVN0YXRlIE5leHQgc3RhdGUuXG4gICAqIEBpbnRlcm5h
bFxuICAgKi9cbiAgZW5xdWV1ZVJlcGxhY2VTdGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNl
LCBjb21wbGV0ZVN0YXRlKSB7XG4gICAgd2Fybk5vb3AocHVibGljSW5zdGFuY2UsICdyZXBsYWNl
U3RhdGUnKTtcbiAgfSxcblxuICAvKipcbiAgICogU2V0cyBhIHN1YnNldCBvZiB0aGUgc3RhdGUu
IFRoaXMgb25seSBleGlzdHMgYmVjYXVzZSBfcGVuZGluZ1N0YXRlIGlzXG4gICAqIGludGVybmFs
LiBUaGlzIHByb3ZpZGVzIGEgbWVyZ2luZyBzdHJhdGVneSB0aGF0IGlzIG5vdCBhdmFpbGFibGUg
dG8gZGVlcFxuICAgKiBwcm9wZXJ0aWVzIHdoaWNoIGlzIGNvbmZ1c2luZy4gVE9ETzogRXhwb3Nl
IHBlbmRpbmdTdGF0ZSBvciBkb24ndCB1c2UgaXRcbiAgICogZHVyaW5nIHRoZSBtZXJnZS5cbiAg
ICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2Ug
dGhhdCBzaG91bGQgcmVyZW5kZXIuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWFsU3RhdGUg
TmV4dCBwYXJ0aWFsIHN0YXRlIHRvIGJlIG1lcmdlZCB3aXRoIHN0YXRlLlxuICAgKiBAaW50ZXJu
YWxcbiAgICovXG4gIGVucXVldWVTZXRTdGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBw
YXJ0aWFsU3RhdGUpIHtcbiAgICB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ3NldFN0YXRlJyk7
XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3ROb29wVXBkYXRlUXVldWU7XG5cblxu
LyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QvbGli
L1JlYWN0Tm9vcFVwZGF0ZVF1ZXVlLmpzXG4gKiogbW9kdWxlIGlkID0gOTJcbiAqKiBtb2R1bGUg
Y2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4g
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5c
bid1c2Ugc3RyaWN0JztcblxudmFyIGNhbkRlZmluZVByb3BlcnR5ID0gZmFsc2U7XG5pZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB0cnkge1xuICAgIC8vICRG
bG93Rml4TWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzI4NVxuICAg
IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ3gnLCB7IGdldDogZnVuY3Rpb24gKCkge30gfSk7
XG4gICAgY2FuRGVmaW5lUHJvcGVydHkgPSB0cnVlO1xuICB9IGNhdGNoICh4KSB7XG4gICAgLy8g
SUUgd2lsbCBmYWlsIG9uIGRlZmluZVByb3BlcnR5XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMg
PSBjYW5EZWZpbmVQcm9wZXJ0eTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNL
IEZPT1RFUlxuICoqIC4vfi9yZWFjdC9saWIvY2FuRGVmaW5lUHJvcGVydHkuanNcbiAqKiBtb2R1
bGUgaWQgPSA5M1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7
XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzW1wiZGVmYXVsdFwiXSA9IGNv
bXBvc2U7XG4vKipcbiAqIENvbXBvc2VzIHNpbmdsZS1hcmd1bWVudCBmdW5jdGlvbnMgZnJvbSBy
aWdodCB0byBsZWZ0LiBUaGUgcmlnaHRtb3N0XG4gKiBmdW5jdGlvbiBjYW4gdGFrZSBtdWx0aXBs
ZSBhcmd1bWVudHMgYXMgaXQgcHJvdmlkZXMgdGhlIHNpZ25hdHVyZSBmb3JcbiAqIHRoZSByZXN1
bHRpbmcgY29tcG9zaXRlIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSB7Li4uRnVuY3Rpb259IGZ1
bmNzIFRoZSBmdW5jdGlvbnMgdG8gY29tcG9zZS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gQSBm
dW5jdGlvbiBvYnRhaW5lZCBieSBjb21wb3NpbmcgdGhlIGFyZ3VtZW50IGZ1bmN0aW9uc1xuICog
ZnJvbSByaWdodCB0byBsZWZ0LiBGb3IgZXhhbXBsZSwgY29tcG9zZShmLCBnLCBoKSBpcyBpZGVu
dGljYWwgdG8gZG9pbmdcbiAqICguLi5hcmdzKSA9PiBmKGcoaCguLi5hcmdzKSkpLlxuICovXG5c
bmZ1bmN0aW9uIGNvbXBvc2UoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3Ro
LCBmdW5jcyA9IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xu
ICAgIGZ1bmNzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgaWYgKGZ1bmNzLmxl
bmd0aCA9PT0gMCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoYXJnKSB7XG4gICAgICByZXR1cm4g
YXJnO1xuICAgIH07XG4gIH1cblxuICBpZiAoZnVuY3MubGVuZ3RoID09PSAxKSB7XG4gICAgcmV0
dXJuIGZ1bmNzWzBdO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmNzLnJlZHVjZShmdW5jdGlvbiAoYSwg
Yikge1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gYShiLmFwcGx5KHVu
ZGVmaW5lZCwgYXJndW1lbnRzKSk7XG4gICAgfTtcbiAgfSk7XG59XG5cblxuLyoqKioqKioqKioq
KioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVkdXgvbGliL2NvbXBvc2UuanNc
biAqKiBtb2R1bGUgaWQgPSA5NFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBz
dHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5BY3Rpb25UeXBl
cyA9IHVuZGVmaW5lZDtcbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IGNyZWF0ZVN0b3JlO1xuXG52YXIg
X2lzUGxhaW5PYmplY3QgPSByZXF1aXJlKCdsb2Rhc2gvaXNQbGFpbk9iamVjdCcpO1xuXG52YXIg
X2lzUGxhaW5PYmplY3QyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaXNQbGFpbk9iamVjdCk7
XG5cbnZhciBfc3ltYm9sT2JzZXJ2YWJsZSA9IHJlcXVpcmUoJ3N5bWJvbC1vYnNlcnZhYmxlJyk7
XG5cbnZhciBfc3ltYm9sT2JzZXJ2YWJsZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zeW1i
b2xPYnNlcnZhYmxlKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsg
cmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsg
fVxuXG4vKipcbiAqIFRoZXNlIGFyZSBwcml2YXRlIGFjdGlvbiB0eXBlcyByZXNlcnZlZCBieSBS
ZWR1eC5cbiAqIEZvciBhbnkgdW5rbm93biBhY3Rpb25zLCB5b3UgbXVzdCByZXR1cm4gdGhlIGN1
cnJlbnQgc3RhdGUuXG4gKiBJZiB0aGUgY3VycmVudCBzdGF0ZSBpcyB1bmRlZmluZWQsIHlvdSBt
dXN0IHJldHVybiB0aGUgaW5pdGlhbCBzdGF0ZS5cbiAqIERvIG5vdCByZWZlcmVuY2UgdGhlc2Ug
YWN0aW9uIHR5cGVzIGRpcmVjdGx5IGluIHlvdXIgY29kZS5cbiAqL1xudmFyIEFjdGlvblR5cGVz
ID0gZXhwb3J0cy5BY3Rpb25UeXBlcyA9IHtcbiAgSU5JVDogJ0BAcmVkdXgvSU5JVCdcblxuICAv
KipcbiAgICogQ3JlYXRlcyBhIFJlZHV4IHN0b3JlIHRoYXQgaG9sZHMgdGhlIHN0YXRlIHRyZWUu
XG4gICAqIFRoZSBvbmx5IHdheSB0byBjaGFuZ2UgdGhlIGRhdGEgaW4gdGhlIHN0b3JlIGlzIHRv
IGNhbGwgYGRpc3BhdGNoKClgIG9uIGl0LlxuICAgKlxuICAgKiBUaGVyZSBzaG91bGQgb25seSBi
ZSBhIHNpbmdsZSBzdG9yZSBpbiB5b3VyIGFwcC4gVG8gc3BlY2lmeSBob3cgZGlmZmVyZW50XG4g
ICAqIHBhcnRzIG9mIHRoZSBzdGF0ZSB0cmVlIHJlc3BvbmQgdG8gYWN0aW9ucywgeW91IG1heSBj
b21iaW5lIHNldmVyYWwgcmVkdWNlcnNcbiAgICogaW50byBhIHNpbmdsZSByZWR1Y2VyIGZ1bmN0
aW9uIGJ5IHVzaW5nIGBjb21iaW5lUmVkdWNlcnNgLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0
aW9ufSByZWR1Y2VyIEEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBuZXh0IHN0YXRlIHRyZWUs
IGdpdmVuXG4gICAqIHRoZSBjdXJyZW50IHN0YXRlIHRyZWUgYW5kIHRoZSBhY3Rpb24gdG8gaGFu
ZGxlLlxuICAgKlxuICAgKiBAcGFyYW0ge2FueX0gW3ByZWxvYWRlZFN0YXRlXSBUaGUgaW5pdGlh
bCBzdGF0ZS4gWW91IG1heSBvcHRpb25hbGx5IHNwZWNpZnkgaXRcbiAgICogdG8gaHlkcmF0ZSB0
aGUgc3RhdGUgZnJvbSB0aGUgc2VydmVyIGluIHVuaXZlcnNhbCBhcHBzLCBvciB0byByZXN0b3Jl
IGFcbiAgICogcHJldmlvdXNseSBzZXJpYWxpemVkIHVzZXIgc2Vzc2lvbi5cbiAgICogSWYgeW91
IHVzZSBgY29tYmluZVJlZHVjZXJzYCB0byBwcm9kdWNlIHRoZSByb290IHJlZHVjZXIgZnVuY3Rp
b24sIHRoaXMgbXVzdCBiZVxuICAgKiBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSBzaGFwZSBhcyBg
Y29tYmluZVJlZHVjZXJzYCBrZXlzLlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBbZW5o
YW5jZXJdIFRoZSBzdG9yZSBlbmhhbmNlci4gWW91IG1heSBvcHRpb25hbGx5IHNwZWNpZnkgaXRc
biAgICogdG8gZW5oYW5jZSB0aGUgc3RvcmUgd2l0aCB0aGlyZC1wYXJ0eSBjYXBhYmlsaXRpZXMg
c3VjaCBhcyBtaWRkbGV3YXJlLFxuICAgKiB0aW1lIHRyYXZlbCwgcGVyc2lzdGVuY2UsIGV0Yy4g
VGhlIG9ubHkgc3RvcmUgZW5oYW5jZXIgdGhhdCBzaGlwcyB3aXRoIFJlZHV4XG4gICAqIGlzIGBh
cHBseU1pZGRsZXdhcmUoKWAuXG4gICAqXG4gICAqIEByZXR1cm5zIHtTdG9yZX0gQSBSZWR1eCBz
dG9yZSB0aGF0IGxldHMgeW91IHJlYWQgdGhlIHN0YXRlLCBkaXNwYXRjaCBhY3Rpb25zXG4gICAq
IGFuZCBzdWJzY3JpYmUgdG8gY2hhbmdlcy5cbiAgICovXG59O2Z1bmN0aW9uIGNyZWF0ZVN0b3Jl
KHJlZHVjZXIsIHByZWxvYWRlZFN0YXRlLCBlbmhhbmNlcikge1xuICB2YXIgX3JlZjI7XG5cbiAg
aWYgKHR5cGVvZiBwcmVsb2FkZWRTdGF0ZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZW5oYW5j
ZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgZW5oYW5jZXIgPSBwcmVsb2FkZWRTdGF0ZTtcbiAg
ICBwcmVsb2FkZWRTdGF0ZSA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgZW5oYW5j
ZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgaWYgKHR5cGVvZiBlbmhhbmNlciAhPT0gJ2Z1bmN0
aW9uJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFeHBlY3RlZCB0aGUgZW5oYW5jZXIgdG8g
YmUgYSBmdW5jdGlvbi4nKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZW5oYW5jZXIoY3JlYXRlU3Rv
cmUpKHJlZHVjZXIsIHByZWxvYWRlZFN0YXRlKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgcmVkdWNl
ciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgdGhlIHJl
ZHVjZXIgdG8gYmUgYSBmdW5jdGlvbi4nKTtcbiAgfVxuXG4gIHZhciBjdXJyZW50UmVkdWNlciA9
IHJlZHVjZXI7XG4gIHZhciBjdXJyZW50U3RhdGUgPSBwcmVsb2FkZWRTdGF0ZTtcbiAgdmFyIGN1
cnJlbnRMaXN0ZW5lcnMgPSBbXTtcbiAgdmFyIG5leHRMaXN0ZW5lcnMgPSBjdXJyZW50TGlzdGVu
ZXJzO1xuICB2YXIgaXNEaXNwYXRjaGluZyA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIGVuc3VyZUNh
bk11dGF0ZU5leHRMaXN0ZW5lcnMoKSB7XG4gICAgaWYgKG5leHRMaXN0ZW5lcnMgPT09IGN1cnJl
bnRMaXN0ZW5lcnMpIHtcbiAgICAgIG5leHRMaXN0ZW5lcnMgPSBjdXJyZW50TGlzdGVuZXJzLnNs
aWNlKCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlYWRzIHRoZSBzdGF0ZSB0cmVlIG1h
bmFnZWQgYnkgdGhlIHN0b3JlLlxuICAgKlxuICAgKiBAcmV0dXJucyB7YW55fSBUaGUgY3VycmVu
dCBzdGF0ZSB0cmVlIG9mIHlvdXIgYXBwbGljYXRpb24uXG4gICAqL1xuICBmdW5jdGlvbiBnZXRT
dGF0ZSgpIHtcbiAgICByZXR1cm4gY3VycmVudFN0YXRlO1xuICB9XG5cbiAgLyoqXG4gICAqIEFk
ZHMgYSBjaGFuZ2UgbGlzdGVuZXIuIEl0IHdpbGwgYmUgY2FsbGVkIGFueSB0aW1lIGFuIGFjdGlv
biBpcyBkaXNwYXRjaGVkLFxuICAgKiBhbmQgc29tZSBwYXJ0IG9mIHRoZSBzdGF0ZSB0cmVlIG1h
eSBwb3RlbnRpYWxseSBoYXZlIGNoYW5nZWQuIFlvdSBtYXkgdGhlblxuICAgKiBjYWxsIGBnZXRT
dGF0ZSgpYCB0byByZWFkIHRoZSBjdXJyZW50IHN0YXRlIHRyZWUgaW5zaWRlIHRoZSBjYWxsYmFj
ay5cbiAgICpcbiAgICogWW91IG1heSBjYWxsIGBkaXNwYXRjaCgpYCBmcm9tIGEgY2hhbmdlIGxp
c3RlbmVyLCB3aXRoIHRoZSBmb2xsb3dpbmdcbiAgICogY2F2ZWF0czpcbiAgICpcbiAgICogMS4g
VGhlIHN1YnNjcmlwdGlvbnMgYXJlIHNuYXBzaG90dGVkIGp1c3QgYmVmb3JlIGV2ZXJ5IGBkaXNw
YXRjaCgpYCBjYWxsLlxuICAgKiBJZiB5b3Ugc3Vic2NyaWJlIG9yIHVuc3Vic2NyaWJlIHdoaWxl
IHRoZSBsaXN0ZW5lcnMgYXJlIGJlaW5nIGludm9rZWQsIHRoaXNcbiAgICogd2lsbCBub3QgaGF2
ZSBhbnkgZWZmZWN0IG9uIHRoZSBgZGlzcGF0Y2goKWAgdGhhdCBpcyBjdXJyZW50bHkgaW4gcHJv
Z3Jlc3MuXG4gICAqIEhvd2V2ZXIsIHRoZSBuZXh0IGBkaXNwYXRjaCgpYCBjYWxsLCB3aGV0aGVy
IG5lc3RlZCBvciBub3QsIHdpbGwgdXNlIGEgbW9yZVxuICAgKiByZWNlbnQgc25hcHNob3Qgb2Yg
dGhlIHN1YnNjcmlwdGlvbiBsaXN0LlxuICAgKlxuICAgKiAyLiBUaGUgbGlzdGVuZXIgc2hvdWxk
IG5vdCBleHBlY3QgdG8gc2VlIGFsbCBzdGF0ZSBjaGFuZ2VzLCBhcyB0aGUgc3RhdGVcbiAgICog
bWlnaHQgaGF2ZSBiZWVuIHVwZGF0ZWQgbXVsdGlwbGUgdGltZXMgZHVyaW5nIGEgbmVzdGVkIGBk
aXNwYXRjaCgpYCBiZWZvcmVcbiAgICogdGhlIGxpc3RlbmVyIGlzIGNhbGxlZC4gSXQgaXMsIGhv
d2V2ZXIsIGd1YXJhbnRlZWQgdGhhdCBhbGwgc3Vic2NyaWJlcnNcbiAgICogcmVnaXN0ZXJlZCBi
ZWZvcmUgdGhlIGBkaXNwYXRjaCgpYCBzdGFydGVkIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlIGxh
dGVzdFxuICAgKiBzdGF0ZSBieSB0aGUgdGltZSBpdCBleGl0cy5cbiAgICpcbiAgICogQHBhcmFt
IHtGdW5jdGlvbn0gbGlzdGVuZXIgQSBjYWxsYmFjayB0byBiZSBpbnZva2VkIG9uIGV2ZXJ5IGRp
c3BhdGNoLlxuICAgKiBAcmV0dXJucyB7RnVuY3Rpb259IEEgZnVuY3Rpb24gdG8gcmVtb3ZlIHRo
aXMgY2hhbmdlIGxpc3RlbmVyLlxuICAgKi9cbiAgZnVuY3Rpb24gc3Vic2NyaWJlKGxpc3RlbmVy
KSB7XG4gICAgaWYgKHR5cGVvZiBsaXN0ZW5lciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhy
b3cgbmV3IEVycm9yKCdFeHBlY3RlZCBsaXN0ZW5lciB0byBiZSBhIGZ1bmN0aW9uLicpO1xuICAg
IH1cblxuICAgIHZhciBpc1N1YnNjcmliZWQgPSB0cnVlO1xuXG4gICAgZW5zdXJlQ2FuTXV0YXRl
TmV4dExpc3RlbmVycygpO1xuICAgIG5leHRMaXN0ZW5lcnMucHVzaChsaXN0ZW5lcik7XG5cbiAg
ICByZXR1cm4gZnVuY3Rpb24gdW5zdWJzY3JpYmUoKSB7XG4gICAgICBpZiAoIWlzU3Vic2NyaWJl
ZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlzU3Vic2NyaWJlZCA9IGZh
bHNlO1xuXG4gICAgICBlbnN1cmVDYW5NdXRhdGVOZXh0TGlzdGVuZXJzKCk7XG4gICAgICB2YXIg
aW5kZXggPSBuZXh0TGlzdGVuZXJzLmluZGV4T2YobGlzdGVuZXIpO1xuICAgICAgbmV4dExpc3Rl
bmVycy5zcGxpY2UoaW5kZXgsIDEpO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRGlzcGF0
Y2hlcyBhbiBhY3Rpb24uIEl0IGlzIHRoZSBvbmx5IHdheSB0byB0cmlnZ2VyIGEgc3RhdGUgY2hh
bmdlLlxuICAgKlxuICAgKiBUaGUgYHJlZHVjZXJgIGZ1bmN0aW9uLCB1c2VkIHRvIGNyZWF0ZSB0
aGUgc3RvcmUsIHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlXG4gICAqIGN1cnJlbnQgc3RhdGUgdHJl
ZSBhbmQgdGhlIGdpdmVuIGBhY3Rpb25gLiBJdHMgcmV0dXJuIHZhbHVlIHdpbGxcbiAgICogYmUg
Y29uc2lkZXJlZCB0aGUgKipuZXh0Kiogc3RhdGUgb2YgdGhlIHRyZWUsIGFuZCB0aGUgY2hhbmdl
IGxpc3RlbmVyc1xuICAgKiB3aWxsIGJlIG5vdGlmaWVkLlxuICAgKlxuICAgKiBUaGUgYmFzZSBp
bXBsZW1lbnRhdGlvbiBvbmx5IHN1cHBvcnRzIHBsYWluIG9iamVjdCBhY3Rpb25zLiBJZiB5b3Ug
d2FudCB0b1xuICAgKiBkaXNwYXRjaCBhIFByb21pc2UsIGFuIE9ic2VydmFibGUsIGEgdGh1bmss
IG9yIHNvbWV0aGluZyBlbHNlLCB5b3UgbmVlZCB0b1xuICAgKiB3cmFwIHlvdXIgc3RvcmUgY3Jl
YXRpbmcgZnVuY3Rpb24gaW50byB0aGUgY29ycmVzcG9uZGluZyBtaWRkbGV3YXJlLiBGb3JcbiAg
ICogZXhhbXBsZSwgc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgYHJlZHV4LXRodW5rYCBw
YWNrYWdlLiBFdmVuIHRoZVxuICAgKiBtaWRkbGV3YXJlIHdpbGwgZXZlbnR1YWxseSBkaXNwYXRj
aCBwbGFpbiBvYmplY3QgYWN0aW9ucyB1c2luZyB0aGlzIG1ldGhvZC5cbiAgICpcbiAgICogQHBh
cmFtIHtPYmplY3R9IGFjdGlvbiBBIHBsYWluIG9iamVjdCByZXByZXNlbnRpbmcg4oCcd2hhdCBj
aGFuZ2Vk4oCdLiBJdCBpc1xuICAgKiBhIGdvb2QgaWRlYSB0byBrZWVwIGFjdGlvbnMgc2VyaWFs
aXphYmxlIHNvIHlvdSBjYW4gcmVjb3JkIGFuZCByZXBsYXkgdXNlclxuICAgKiBzZXNzaW9ucywg
b3IgdXNlIHRoZSB0aW1lIHRyYXZlbGxpbmcgYHJlZHV4LWRldnRvb2xzYC4gQW4gYWN0aW9uIG11
c3QgaGF2ZVxuICAgKiBhIGB0eXBlYCBwcm9wZXJ0eSB3aGljaCBtYXkgbm90IGJlIGB1bmRlZmlu
ZWRgLiBJdCBpcyBhIGdvb2QgaWRlYSB0byB1c2VcbiAgICogc3RyaW5nIGNvbnN0YW50cyBmb3Ig
YWN0aW9uIHR5cGVzLlxuICAgKlxuICAgKiBAcmV0dXJucyB7T2JqZWN0fSBGb3IgY29udmVuaWVu
Y2UsIHRoZSBzYW1lIGFjdGlvbiBvYmplY3QgeW91IGRpc3BhdGNoZWQuXG4gICAqXG4gICAqIE5v
dGUgdGhhdCwgaWYgeW91IHVzZSBhIGN1c3RvbSBtaWRkbGV3YXJlLCBpdCBtYXkgd3JhcCBgZGlz
cGF0Y2goKWAgdG9cbiAgICogcmV0dXJuIHNvbWV0aGluZyBlbHNlIChmb3IgZXhhbXBsZSwgYSBQ
cm9taXNlIHlvdSBjYW4gYXdhaXQpLlxuICAgKi9cbiAgZnVuY3Rpb24gZGlzcGF0Y2goYWN0aW9u
KSB7XG4gICAgaWYgKCEoMCwgX2lzUGxhaW5PYmplY3QyWydkZWZhdWx0J10pKGFjdGlvbikpIHtc
biAgICAgIHRocm93IG5ldyBFcnJvcignQWN0aW9ucyBtdXN0IGJlIHBsYWluIG9iamVjdHMuICcg
KyAnVXNlIGN1c3RvbSBtaWRkbGV3YXJlIGZvciBhc3luYyBhY3Rpb25zLicpO1xuICAgIH1cblxu
ICAgIGlmICh0eXBlb2YgYWN0aW9uLnR5cGUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aHJv
dyBuZXcgRXJyb3IoJ0FjdGlvbnMgbWF5IG5vdCBoYXZlIGFuIHVuZGVmaW5lZCBcInR5cGVcIiBw
cm9wZXJ0eS4gJyArICdIYXZlIHlvdSBtaXNzcGVsbGVkIGEgY29uc3RhbnQ/Jyk7XG4gICAgfVxu
XG4gICAgaWYgKGlzRGlzcGF0Y2hpbmcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUmVkdWNl
cnMgbWF5IG5vdCBkaXNwYXRjaCBhY3Rpb25zLicpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAg
ICBpc0Rpc3BhdGNoaW5nID0gdHJ1ZTtcbiAgICAgIGN1cnJlbnRTdGF0ZSA9IGN1cnJlbnRSZWR1
Y2VyKGN1cnJlbnRTdGF0ZSwgYWN0aW9uKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgaXNEaXNw
YXRjaGluZyA9IGZhbHNlO1xuICAgIH1cblxuICAgIHZhciBsaXN0ZW5lcnMgPSBjdXJyZW50TGlz
dGVuZXJzID0gbmV4dExpc3RlbmVycztcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3RlbmVy
cy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGxpc3RlbmVyID0gbGlzdGVuZXJzW2ldO1xuICAg
ICAgbGlzdGVuZXIoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYWN0aW9uO1xuICB9XG5cbiAgLyoq
XG4gICAqIFJlcGxhY2VzIHRoZSByZWR1Y2VyIGN1cnJlbnRseSB1c2VkIGJ5IHRoZSBzdG9yZSB0
byBjYWxjdWxhdGUgdGhlIHN0YXRlLlxuICAgKlxuICAgKiBZb3UgbWlnaHQgbmVlZCB0aGlzIGlm
IHlvdXIgYXBwIGltcGxlbWVudHMgY29kZSBzcGxpdHRpbmcgYW5kIHlvdSB3YW50IHRvXG4gICAq
IGxvYWQgc29tZSBvZiB0aGUgcmVkdWNlcnMgZHluYW1pY2FsbHkuIFlvdSBtaWdodCBhbHNvIG5l
ZWQgdGhpcyBpZiB5b3VcbiAgICogaW1wbGVtZW50IGEgaG90IHJlbG9hZGluZyBtZWNoYW5pc20g
Zm9yIFJlZHV4LlxuICAgKlxuICAgKiBAcGFyYW0ge0Z1bmN0aW9ufSBuZXh0UmVkdWNlciBUaGUg
cmVkdWNlciBmb3IgdGhlIHN0b3JlIHRvIHVzZSBpbnN0ZWFkLlxuICAgKiBAcmV0dXJucyB7dm9p
ZH1cbiAgICovXG4gIGZ1bmN0aW9uIHJlcGxhY2VSZWR1Y2VyKG5leHRSZWR1Y2VyKSB7XG4gICAg
aWYgKHR5cGVvZiBuZXh0UmVkdWNlciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgdGhyb3cgbmV3
IEVycm9yKCdFeHBlY3RlZCB0aGUgbmV4dFJlZHVjZXIgdG8gYmUgYSBmdW5jdGlvbi4nKTtcbiAg
ICB9XG5cbiAgICBjdXJyZW50UmVkdWNlciA9IG5leHRSZWR1Y2VyO1xuICAgIGRpc3BhdGNoKHsg
dHlwZTogQWN0aW9uVHlwZXMuSU5JVCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnRlcm9wZXJh
YmlsaXR5IHBvaW50IGZvciBvYnNlcnZhYmxlL3JlYWN0aXZlIGxpYnJhcmllcy5cbiAgICogQHJl
dHVybnMge29ic2VydmFibGV9IEEgbWluaW1hbCBvYnNlcnZhYmxlIG9mIHN0YXRlIGNoYW5nZXMu
XG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIG9ic2VydmFibGUgcHJvcG9zYWw6
XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLW9ic2VydmFibGVcbiAgICov
XG4gIGZ1bmN0aW9uIG9ic2VydmFibGUoKSB7XG4gICAgdmFyIF9yZWY7XG5cbiAgICB2YXIgb3V0
ZXJTdWJzY3JpYmUgPSBzdWJzY3JpYmU7XG4gICAgcmV0dXJuIF9yZWYgPSB7XG4gICAgICAvKipc
biAgICAgICAqIFRoZSBtaW5pbWFsIG9ic2VydmFibGUgc3Vic2NyaXB0aW9uIG1ldGhvZC5cbiAg
ICAgICAqIEBwYXJhbSB7T2JqZWN0fSBvYnNlcnZlciBBbnkgb2JqZWN0IHRoYXQgY2FuIGJlIHVz
ZWQgYXMgYW4gb2JzZXJ2ZXIuXG4gICAgICAgKiBUaGUgb2JzZXJ2ZXIgb2JqZWN0IHNob3VsZCBo
YXZlIGEgYG5leHRgIG1ldGhvZC5cbiAgICAgICAqIEByZXR1cm5zIHtzdWJzY3JpcHRpb259IEFu
IG9iamVjdCB3aXRoIGFuIGB1bnN1YnNjcmliZWAgbWV0aG9kIHRoYXQgY2FuXG4gICAgICAgKiBi
ZSB1c2VkIHRvIHVuc3Vic2NyaWJlIHRoZSBvYnNlcnZhYmxlIGZyb20gdGhlIHN0b3JlLCBhbmQg
cHJldmVudCBmdXJ0aGVyXG4gICAgICAgKiBlbWlzc2lvbiBvZiB2YWx1ZXMgZnJvbSB0aGUgb2Jz
ZXJ2YWJsZS5cbiAgICAgICAqL1xuICAgICAgc3Vic2NyaWJlOiBmdW5jdGlvbiBzdWJzY3JpYmUo
b2JzZXJ2ZXIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvYnNlcnZlciAhPT0gJ29iamVjdCcpIHtc
biAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCB0aGUgb2JzZXJ2ZXIgdG8g
YmUgYW4gb2JqZWN0LicpO1xuICAgICAgICB9XG5cbiAgICAgICAgZnVuY3Rpb24gb2JzZXJ2ZVN0
YXRlKCkge1xuICAgICAgICAgIGlmIChvYnNlcnZlci5uZXh0KSB7XG4gICAgICAgICAgICBvYnNl
cnZlci5uZXh0KGdldFN0YXRlKCkpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAg
IG9ic2VydmVTdGF0ZSgpO1xuICAgICAgICB2YXIgdW5zdWJzY3JpYmUgPSBvdXRlclN1YnNjcmli
ZShvYnNlcnZlU3RhdGUpO1xuICAgICAgICByZXR1cm4geyB1bnN1YnNjcmliZTogdW5zdWJzY3Jp
YmUgfTtcbiAgICAgIH1cbiAgICB9LCBfcmVmW19zeW1ib2xPYnNlcnZhYmxlMlsnZGVmYXVsdCdd
XSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH0sIF9yZWY7XG4gIH1c
blxuICAvLyBXaGVuIGEgc3RvcmUgaXMgY3JlYXRlZCwgYW4gXCJJTklUXCIgYWN0aW9uIGlzIGRp
c3BhdGNoZWQgc28gdGhhdCBldmVyeVxuICAvLyByZWR1Y2VyIHJldHVybnMgdGhlaXIgaW5pdGlh
bCBzdGF0ZS4gVGhpcyBlZmZlY3RpdmVseSBwb3B1bGF0ZXNcbiAgLy8gdGhlIGluaXRpYWwgc3Rh
dGUgdHJlZS5cbiAgZGlzcGF0Y2goeyB0eXBlOiBBY3Rpb25UeXBlcy5JTklUIH0pO1xuXG4gIHJl
dHVybiBfcmVmMiA9IHtcbiAgICBkaXNwYXRjaDogZGlzcGF0Y2gsXG4gICAgc3Vic2NyaWJlOiBz
dWJzY3JpYmUsXG4gICAgZ2V0U3RhdGU6IGdldFN0YXRlLFxuICAgIHJlcGxhY2VSZWR1Y2VyOiBy
ZXBsYWNlUmVkdWNlclxuICB9LCBfcmVmMltfc3ltYm9sT2JzZXJ2YWJsZTJbJ2RlZmF1bHQnXV0g
PSBvYnNlcnZhYmxlLCBfcmVmMjtcbn1cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQ
QUNLIEZPT1RFUlxuICoqIC4vfi9yZWR1eC9saWIvY3JlYXRlU3RvcmUuanNcbiAqKiBtb2R1bGUg
aWQgPSA5NVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG5l
eHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0c1snZGVmYXVsdCddID0gd2FybmluZztc
bi8qKlxuICogUHJpbnRzIGEgd2FybmluZyBpbiB0aGUgY29uc29sZSBpZiBpdCBleGlzdHMuXG4g
KlxuICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2UgVGhlIHdhcm5pbmcgbWVzc2FnZS5cbiAqIEBy
ZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiB3YXJuaW5nKG1lc3NhZ2UpIHtcbiAgLyogZXNs
aW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRl
ZmluZWQnICYmIHR5cGVvZiBjb25zb2xlLmVycm9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY29u
c29sZS5lcnJvcihtZXNzYWdlKTtcbiAgfVxuICAvKiBlc2xpbnQtZW5hYmxlIG5vLWNvbnNvbGUg
Ki9cbiAgdHJ5IHtcbiAgICAvLyBUaGlzIGVycm9yIHdhcyB0aHJvd24gYXMgYSBjb252ZW5pZW5j
ZSBzbyB0aGF0IGlmIHlvdSBlbmFibGVcbiAgICAvLyBcImJyZWFrIG9uIGFsbCBleGNlcHRpb25z
XCIgaW4geW91ciBjb25zb2xlLFxuICAgIC8vIGl0IHdvdWxkIHBhdXNlIHRoZSBleGVjdXRpb24g
YXQgdGhpcyBsaW5lLlxuICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICAvKiBlc2xp
bnQtZGlzYWJsZSBuby1lbXB0eSAqL1xuICB9IGNhdGNoIChlKSB7fVxuICAvKiBlc2xpbnQtZW5h
YmxlIG5vLWVtcHR5ICovXG59XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBG
T09URVJcbiAqKiAuL34vcmVkdXgvbGliL3V0aWxzL3dhcm5pbmcuanNcbiAqKiBtb2R1bGUgaWQg
PSA5NlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4g
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9hc3NpZ24gPSByZXF1aXJlKCdvYmpl
Y3QtYXNzaWduJyk7XG5cbnZhciBlbXB0eU9iamVjdCA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5
T2JqZWN0Jyk7XG52YXIgX2ludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcp
O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIg
d2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcbn1cblxudmFyIE1JWElOU19L
RVkgPSAnbWl4aW5zJztcblxuLy8gSGVscGVyIGZ1bmN0aW9uIHRvIGFsbG93IHRoZSBjcmVhdGlv
biBvZiBhbm9ueW1vdXMgZnVuY3Rpb25zIHdoaWNoIGRvIG5vdFxuLy8gaGF2ZSAubmFtZSBzZXQg
dG8gdGhlIG5hbWUgb2YgdGhlIHZhcmlhYmxlIGJlaW5nIGFzc2lnbmVkIHRvLlxuZnVuY3Rpb24g
aWRlbnRpdHkoZm4pIHtcbiAgcmV0dXJuIGZuO1xufVxuXG52YXIgUmVhY3RQcm9wVHlwZUxvY2F0
aW9uTmFtZXM7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xu
ICBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcyA9IHtcbiAgICBwcm9wOiAncHJvcCcsXG4gICAg
Y29udGV4dDogJ2NvbnRleHQnLFxuICAgIGNoaWxkQ29udGV4dDogJ2NoaWxkIGNvbnRleHQnXG4g
IH07XG59IGVsc2Uge1xuICBSZWFjdFByb3BUeXBlTG9jYXRpb25OYW1lcyA9IHt9O1xufVxuXG5m
dW5jdGlvbiBmYWN0b3J5KFJlYWN0Q29tcG9uZW50LCBpc1ZhbGlkRWxlbWVudCwgUmVhY3ROb29w
VXBkYXRlUXVldWUpIHtcbiAgLyoqXG4gICAqIFBvbGljaWVzIHRoYXQgZGVzY3JpYmUgbWV0aG9k
cyBpbiBgUmVhY3RDbGFzc0ludGVyZmFjZWAuXG4gICAqL1xuXG4gIHZhciBpbmplY3RlZE1peGlu
cyA9IFtdO1xuXG4gIC8qKlxuICAgKiBDb21wb3NpdGUgY29tcG9uZW50cyBhcmUgaGlnaGVyLWxl
dmVsIGNvbXBvbmVudHMgdGhhdCBjb21wb3NlIG90aGVyIGNvbXBvc2l0ZVxuICAgKiBvciBob3N0
IGNvbXBvbmVudHMuXG4gICAqXG4gICAqIFRvIGNyZWF0ZSBhIG5ldyB0eXBlIG9mIGBSZWFjdENs
YXNzYCwgcGFzcyBhIHNwZWNpZmljYXRpb24gb2ZcbiAgICogeW91ciBuZXcgY2xhc3MgdG8gYFJl
YWN0LmNyZWF0ZUNsYXNzYC4gVGhlIG9ubHkgcmVxdWlyZW1lbnQgb2YgeW91ciBjbGFzc1xuICAg
KiBzcGVjaWZpY2F0aW9uIGlzIHRoYXQgeW91IGltcGxlbWVudCBhIGByZW5kZXJgIG1ldGhvZC5c
biAgICpcbiAgICogICB2YXIgTXlDb21wb25lbnQgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG4gICAq
ICAgICByZW5kZXI6IGZ1bmN0aW9uKCkge1xuICAgKiAgICAgICByZXR1cm4gPGRpdj5IZWxsbyBX
b3JsZDwvZGl2PjtcbiAgICogICAgIH1cbiAgICogICB9KTtcbiAgICpcbiAgICogVGhlIGNsYXNz
IHNwZWNpZmljYXRpb24gc3VwcG9ydHMgYSBzcGVjaWZpYyBwcm90b2NvbCBvZiBtZXRob2RzIHRo
YXQgaGF2ZVxuICAgKiBzcGVjaWFsIG1lYW5pbmcgKGUuZy4gYHJlbmRlcmApLiBTZWUgYFJlYWN0
Q2xhc3NJbnRlcmZhY2VgIGZvclxuICAgKiBtb3JlIHRoZSBjb21wcmVoZW5zaXZlIHByb3RvY29s
LiBBbnkgb3RoZXIgcHJvcGVydGllcyBhbmQgbWV0aG9kcyBpbiB0aGVcbiAgICogY2xhc3Mgc3Bl
Y2lmaWNhdGlvbiB3aWxsIGJlIGF2YWlsYWJsZSBvbiB0aGUgcHJvdG90eXBlLlxuICAgKlxuICAg
KiBAaW50ZXJmYWNlIFJlYWN0Q2xhc3NJbnRlcmZhY2VcbiAgICogQGludGVybmFsXG4gICAqL1xu
ICB2YXIgUmVhY3RDbGFzc0ludGVyZmFjZSA9IHtcbiAgICAvKipcbiAgICAgKiBBbiBhcnJheSBv
ZiBNaXhpbiBvYmplY3RzIHRvIGluY2x1ZGUgd2hlbiBkZWZpbmluZyB5b3VyIGNvbXBvbmVudC5c
biAgICAgKlxuICAgICAqIEB0eXBlIHthcnJheX1cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9c
biAgICBtaXhpbnM6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBBbiBvYmplY3Qg
Y29udGFpbmluZyBwcm9wZXJ0aWVzIGFuZCBtZXRob2RzIHRoYXQgc2hvdWxkIGJlIGRlZmluZWQg
b25cbiAgICAgKiB0aGUgY29tcG9uZW50J3MgY29uc3RydWN0b3IgaW5zdGVhZCBvZiBpdHMgcHJv
dG90eXBlIChzdGF0aWMgbWV0aG9kcykuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7b2JqZWN0fVxu
ICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIHN0YXRpY3M6ICdERUZJTkVfTUFOWScsXG5c
biAgICAvKipcbiAgICAgKiBEZWZpbml0aW9uIG9mIHByb3AgdHlwZXMgZm9yIHRoaXMgY29tcG9u
ZW50LlxuICAgICAqXG4gICAgICogQHR5cGUge29iamVjdH1cbiAgICAgKiBAb3B0aW9uYWxcbiAg
ICAgKi9cbiAgICBwcm9wVHlwZXM6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBE
ZWZpbml0aW9uIG9mIGNvbnRleHQgdHlwZXMgZm9yIHRoaXMgY29tcG9uZW50LlxuICAgICAqXG4g
ICAgICogQHR5cGUge29iamVjdH1cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBjb250
ZXh0VHlwZXM6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipcbiAgICAgKiBEZWZpbml0aW9uIG9m
IGNvbnRleHQgdHlwZXMgdGhpcyBjb21wb25lbnQgc2V0cyBmb3IgaXRzIGNoaWxkcmVuLlxuICAg
ICAqXG4gICAgICogQHR5cGUge29iamVjdH1cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAg
ICBjaGlsZENvbnRleHRUeXBlczogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8vID09PT0gRGVmaW5p
dGlvbiBtZXRob2RzID09PT1cblxuICAgIC8qKlxuICAgICAqIEludm9rZWQgd2hlbiB0aGUgY29t
cG9uZW50IGlzIG1vdW50ZWQuIFZhbHVlcyBpbiB0aGUgbWFwcGluZyB3aWxsIGJlIHNldCBvblxu
ICAgICAqIGB0aGlzLnByb3BzYCBpZiB0aGF0IHByb3AgaXMgbm90IHNwZWNpZmllZCAoaS5lLiB1
c2luZyBhbiBgaW5gIGNoZWNrKS5cbiAgICAgKlxuICAgICAqIFRoaXMgbWV0aG9kIGlzIGludm9r
ZWQgYmVmb3JlIGBnZXRJbml0aWFsU3RhdGVgIGFuZCB0aGVyZWZvcmUgY2Fubm90IHJlbHlcbiAg
ICAgKiBvbiBgdGhpcy5zdGF0ZWAgb3IgdXNlIGB0aGlzLnNldFN0YXRlYC5cbiAgICAgKlxuICAg
ICAqIEByZXR1cm4ge29iamVjdH1cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBnZXRE
ZWZhdWx0UHJvcHM6ICdERUZJTkVfTUFOWV9NRVJHRUQnLFxuXG4gICAgLyoqXG4gICAgICogSW52
b2tlZCBvbmNlIGJlZm9yZSB0aGUgY29tcG9uZW50IGlzIG1vdW50ZWQuIFRoZSByZXR1cm4gdmFs
dWUgd2lsbCBiZSB1c2VkXG4gICAgICogYXMgdGhlIGluaXRpYWwgdmFsdWUgb2YgYHRoaXMuc3Rh
dGVgLlxuICAgICAqXG4gICAgICogICBnZXRJbml0aWFsU3RhdGU6IGZ1bmN0aW9uKCkge1xuICAg
ICAqICAgICByZXR1cm4ge1xuICAgICAqICAgICAgIGlzT246IGZhbHNlLFxuICAgICAqICAgICAg
IGZvb0JhejogbmV3IEJhekZvbygpXG4gICAgICogICAgIH1cbiAgICAgKiAgIH1cbiAgICAgKlxu
ICAgICAqIEByZXR1cm4ge29iamVjdH1cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBn
ZXRJbml0aWFsU3RhdGU6ICdERUZJTkVfTUFOWV9NRVJHRUQnLFxuXG4gICAgLyoqXG4gICAgICog
QHJldHVybiB7b2JqZWN0fVxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAgIGdldENoaWxk
Q29udGV4dDogJ0RFRklORV9NQU5ZX01FUkdFRCcsXG5cbiAgICAvKipcbiAgICAgKiBVc2VzIHBy
b3BzIGZyb20gYHRoaXMucHJvcHNgIGFuZCBzdGF0ZSBmcm9tIGB0aGlzLnN0YXRlYCB0byByZW5k
ZXIgdGhlXG4gICAgICogc3RydWN0dXJlIG9mIHRoZSBjb21wb25lbnQuXG4gICAgICpcbiAgICAg
KiBObyBndWFyYW50ZWVzIGFyZSBtYWRlIGFib3V0IHdoZW4gb3IgaG93IG9mdGVuIHRoaXMgbWV0
aG9kIGlzIGludm9rZWQsIHNvXG4gICAgICogaXQgbXVzdCBub3QgaGF2ZSBzaWRlIGVmZmVjdHMu
XG4gICAgICpcbiAgICAgKiAgIHJlbmRlcjogZnVuY3Rpb24oKSB7XG4gICAgICogICAgIHZhciBu
YW1lID0gdGhpcy5wcm9wcy5uYW1lO1xuICAgICAqICAgICByZXR1cm4gPGRpdj5IZWxsbywge25h
bWV9ITwvZGl2PjtcbiAgICAgKiAgIH1cbiAgICAgKlxuICAgICAqIEByZXR1cm4ge1JlYWN0Q29t
cG9uZW50fVxuICAgICAqIEByZXF1aXJlZFxuICAgICAqL1xuICAgIHJlbmRlcjogJ0RFRklORV9P
TkNFJyxcblxuICAgIC8vID09PT0gRGVsZWdhdGUgbWV0aG9kcyA9PT09XG5cbiAgICAvKipcbiAg
ICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBpbml0aWFsbHkgY3JlYXRlZCBhbmQg
YWJvdXQgdG8gYmUgbW91bnRlZC5cbiAgICAgKiBUaGlzIG1heSBoYXZlIHNpZGUgZWZmZWN0cywg
YnV0IGFueSBleHRlcm5hbCBzdWJzY3JpcHRpb25zIG9yIGRhdGEgY3JlYXRlZFxuICAgICAqIGJ5
IHRoaXMgbWV0aG9kIG11c3QgYmUgY2xlYW5lZCB1cCBpbiBgY29tcG9uZW50V2lsbFVubW91bnRg
LlxuICAgICAqXG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgY29tcG9uZW50V2lsbE1v
dW50OiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCB3aGVuIHRoZSBj
b21wb25lbnQgaGFzIGJlZW4gbW91bnRlZCBhbmQgaGFzIGEgRE9NIHJlcHJlc2VudGF0aW9uLlxu
ICAgICAqIEhvd2V2ZXIsIHRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZSBET00gbm9kZSBp
cyBpbiB0aGUgZG9jdW1lbnQuXG4gICAgICpcbiAgICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1
bml0eSB0byBvcGVyYXRlIG9uIHRoZSBET00gd2hlbiB0aGUgY29tcG9uZW50IGhhc1xuICAgICAq
IGJlZW4gbW91bnRlZCAoaW5pdGlhbGl6ZWQgYW5kIHJlbmRlcmVkKSBmb3IgdGhlIGZpcnN0IHRp
bWUuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IHJvb3ROb2RlIERPTSBlbGVt
ZW50IHJlcHJlc2VudGluZyB0aGUgY29tcG9uZW50LlxuICAgICAqIEBvcHRpb25hbFxuICAgICAq
L1xuICAgIGNvbXBvbmVudERpZE1vdW50OiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAg
ICogSW52b2tlZCBiZWZvcmUgdGhlIGNvbXBvbmVudCByZWNlaXZlcyBuZXcgcHJvcHMuXG4gICAg
ICpcbiAgICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byByZWFjdCB0byBhIHByb3Ag
dHJhbnNpdGlvbiBieSB1cGRhdGluZyB0aGVcbiAgICAgKiBzdGF0ZSB1c2luZyBgdGhpcy5zZXRT
dGF0ZWAuIEN1cnJlbnQgcHJvcHMgYXJlIGFjY2Vzc2VkIHZpYSBgdGhpcy5wcm9wc2AuXG4gICAg
ICpcbiAgICAgKiAgIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHM6IGZ1bmN0aW9uKG5leHRQcm9w
cywgbmV4dENvbnRleHQpIHtcbiAgICAgKiAgICAgdGhpcy5zZXRTdGF0ZSh7XG4gICAgICogICAg
ICAgbGlrZXNJbmNyZWFzaW5nOiBuZXh0UHJvcHMubGlrZUNvdW50ID4gdGhpcy5wcm9wcy5saWtl
Q291bnRcbiAgICAgKiAgICAgfSk7XG4gICAgICogICB9XG4gICAgICpcbiAgICAgKiBOT1RFOiBU
aGVyZSBpcyBubyBlcXVpdmFsZW50IGBjb21wb25lbnRXaWxsUmVjZWl2ZVN0YXRlYC4gQW4gaW5j
b21pbmcgcHJvcFxuICAgICAqIHRyYW5zaXRpb24gbWF5IGNhdXNlIGEgc3RhdGUgY2hhbmdlLCBi
dXQgdGhlIG9wcG9zaXRlIGlzIG5vdCB0cnVlLiBJZiB5b3VcbiAgICAgKiBuZWVkIGl0LCB5b3Ug
YXJlIHByb2JhYmx5IGxvb2tpbmcgZm9yIGBjb21wb25lbnRXaWxsVXBkYXRlYC5cbiAgICAgKlxu
ICAgICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHNcbiAgICAgKiBAb3B0aW9uYWxcbiAgICAg
Ki9cbiAgICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzOiAnREVGSU5FX01BTlknLFxuXG4gICAg
LyoqXG4gICAgICogSW52b2tlZCB3aGlsZSBkZWNpZGluZyBpZiB0aGUgY29tcG9uZW50IHNob3Vs
ZCBiZSB1cGRhdGVkIGFzIGEgcmVzdWx0IG9mXG4gICAgICogcmVjZWl2aW5nIG5ldyBwcm9wcywg
c3RhdGUgYW5kL29yIGNvbnRleHQuXG4gICAgICpcbiAgICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBv
cnR1bml0eSB0byBgcmV0dXJuIGZhbHNlYCB3aGVuIHlvdSdyZSBjZXJ0YWluIHRoYXQgdGhlXG4g
ICAgICogdHJhbnNpdGlvbiB0byB0aGUgbmV3IHByb3BzL3N0YXRlL2NvbnRleHQgd2lsbCBub3Qg
cmVxdWlyZSBhIGNvbXBvbmVudFxuICAgICAqIHVwZGF0ZS5cbiAgICAgKlxuICAgICAqICAgc2hv
dWxkQ29tcG9uZW50VXBkYXRlOiBmdW5jdGlvbihuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENv
bnRleHQpIHtcbiAgICAgKiAgICAgcmV0dXJuICFlcXVhbChuZXh0UHJvcHMsIHRoaXMucHJvcHMp
IHx8XG4gICAgICogICAgICAgIWVxdWFsKG5leHRTdGF0ZSwgdGhpcy5zdGF0ZSkgfHxcbiAgICAg
KiAgICAgICAhZXF1YWwobmV4dENvbnRleHQsIHRoaXMuY29udGV4dCk7XG4gICAgICogICB9XG4g
ICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzXG4gICAgICogQHBhcmFtIHs/
b2JqZWN0fSBuZXh0U3RhdGVcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRDb250ZXh0XG4g
ICAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgY29tcG9uZW50IHNob3VsZCB1cGRh
dGUuXG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgc2hvdWxkQ29tcG9uZW50VXBkYXRl
OiAnREVGSU5FX09OQ0UnLFxuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCB3aGVuIHRoZSBjb21w
b25lbnQgaXMgYWJvdXQgdG8gdXBkYXRlIGR1ZSB0byBhIHRyYW5zaXRpb24gZnJvbVxuICAgICAq
IGB0aGlzLnByb3BzYCwgYHRoaXMuc3RhdGVgIGFuZCBgdGhpcy5jb250ZXh0YCB0byBgbmV4dFBy
b3BzYCwgYG5leHRTdGF0ZWBcbiAgICAgKiBhbmQgYG5leHRDb250ZXh0YC5cbiAgICAgKlxuICAg
ICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIHBlcmZvcm0gcHJlcGFyYXRpb24gYmVm
b3JlIGFuIHVwZGF0ZSBvY2N1cnMuXG4gICAgICpcbiAgICAgKiBOT1RFOiBZb3UgKipjYW5ub3Qq
KiB1c2UgYHRoaXMuc2V0U3RhdGUoKWAgaW4gdGhpcyBtZXRob2QuXG4gICAgICpcbiAgICAgKiBA
cGFyYW0ge29iamVjdH0gbmV4dFByb3BzXG4gICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0U3Rh
dGVcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRDb250ZXh0XG4gICAgICogQHBhcmFtIHtS
ZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgICAqIEBvcHRpb25hbFxu
ICAgICAqL1xuICAgIGNvbXBvbmVudFdpbGxVcGRhdGU6ICdERUZJTkVfTUFOWScsXG5cbiAgICAv
KipcbiAgICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCdzIERPTSByZXByZXNlbnRhdGlv
biBoYXMgYmVlbiB1cGRhdGVkLlxuICAgICAqXG4gICAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0
dW5pdHkgdG8gb3BlcmF0ZSBvbiB0aGUgRE9NIHdoZW4gdGhlIGNvbXBvbmVudCBoYXNcbiAgICAg
KiBiZWVuIHVwZGF0ZWQuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gcHJldlByb3Bz
XG4gICAgICogQHBhcmFtIHs/b2JqZWN0fSBwcmV2U3RhdGVcbiAgICAgKiBAcGFyYW0gez9vYmpl
Y3R9IHByZXZDb250ZXh0XG4gICAgICogQHBhcmFtIHtET01FbGVtZW50fSByb290Tm9kZSBET00g
ZWxlbWVudCByZXByZXNlbnRpbmcgdGhlIGNvbXBvbmVudC5cbiAgICAgKiBAb3B0aW9uYWxcbiAg
ICAgKi9cbiAgICBjb21wb25lbnREaWRVcGRhdGU6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvKipc
biAgICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBhYm91dCB0byBiZSByZW1vdmVk
IGZyb20gaXRzIHBhcmVudCBhbmQgaGF2ZVxuICAgICAqIGl0cyBET00gcmVwcmVzZW50YXRpb24g
ZGVzdHJveWVkLlxuICAgICAqXG4gICAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8g
ZGVhbGxvY2F0ZSBhbnkgZXh0ZXJuYWwgcmVzb3VyY2VzLlxuICAgICAqXG4gICAgICogTk9URTog
VGhlcmUgaXMgbm8gYGNvbXBvbmVudERpZFVubW91bnRgIHNpbmNlIHlvdXIgY29tcG9uZW50IHdp
bGwgaGF2ZSBiZWVuXG4gICAgICogZGVzdHJveWVkIGJ5IHRoYXQgcG9pbnQuXG4gICAgICpcbiAg
ICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBjb21wb25lbnRXaWxsVW5tb3VudDogJ0RFRklO
RV9NQU5ZJyxcblxuICAgIC8vID09PT0gQWR2YW5jZWQgbWV0aG9kcyA9PT09XG5cbiAgICAvKipc
biAgICAgKiBVcGRhdGVzIHRoZSBjb21wb25lbnQncyBjdXJyZW50bHkgbW91bnRlZCBET00gcmVw
cmVzZW50YXRpb24uXG4gICAgICpcbiAgICAgKiBCeSBkZWZhdWx0LCB0aGlzIGltcGxlbWVudHMg
UmVhY3QncyByZW5kZXJpbmcgYW5kIHJlY29uY2lsaWF0aW9uIGFsZ29yaXRobS5cbiAgICAgKiBT
b3BoaXN0aWNhdGVkIGNsaWVudHMgbWF5IHdpc2ggdG8gb3ZlcnJpZGUgdGhpcy5cbiAgICAgKlxu
ICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAg
ICAgKiBAaW50ZXJuYWxcbiAgICAgKiBAb3ZlcnJpZGFibGVcbiAgICAgKi9cbiAgICB1cGRhdGVD
b21wb25lbnQ6ICdPVkVSUklERV9CQVNFJ1xuICB9O1xuXG4gIC8qKlxuICAgKiBNYXBwaW5nIGZy
b20gY2xhc3Mgc3BlY2lmaWNhdGlvbiBrZXlzIHRvIHNwZWNpYWwgcHJvY2Vzc2luZyBmdW5jdGlv
bnMuXG4gICAqXG4gICAqIEFsdGhvdWdoIHRoZXNlIGFyZSBkZWNsYXJlZCBsaWtlIGluc3RhbmNl
IHByb3BlcnRpZXMgaW4gdGhlIHNwZWNpZmljYXRpb25cbiAgICogd2hlbiBkZWZpbmluZyBjbGFz
c2VzIHVzaW5nIGBSZWFjdC5jcmVhdGVDbGFzc2AsIHRoZXkgYXJlIGFjdHVhbGx5IHN0YXRpY1xu
ICAgKiBhbmQgYXJlIGFjY2Vzc2libGUgb24gdGhlIGNvbnN0cnVjdG9yIGluc3RlYWQgb2YgdGhl
IHByb3RvdHlwZS4gRGVzcGl0ZVxuICAgKiBiZWluZyBzdGF0aWMsIHRoZXkgbXVzdCBiZSBkZWZp
bmVkIG91dHNpZGUgb2YgdGhlIFwic3RhdGljc1wiIGtleSB1bmRlclxuICAgKiB3aGljaCBhbGwg
b3RoZXIgc3RhdGljIG1ldGhvZHMgYXJlIGRlZmluZWQuXG4gICAqL1xuICB2YXIgUkVTRVJWRURf
U1BFQ19LRVlTID0ge1xuICAgIGRpc3BsYXlOYW1lOiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgZGlz
cGxheU5hbWUpIHtcbiAgICAgIENvbnN0cnVjdG9yLmRpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7
XG4gICAgfSxcbiAgICBtaXhpbnM6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBtaXhpbnMpIHtcbiAg
ICAgIGlmIChtaXhpbnMpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtaXhpbnMubGVu
Z3RoOyBpKyspIHtcbiAgICAgICAgICBtaXhTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwg
bWl4aW5zW2ldKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgY2hpbGRDb250ZXh0
VHlwZXM6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBjaGlsZENvbnRleHRUeXBlcykge1xuICAgICAg
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFs
aWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCBjaGlsZENvbnRleHRUeXBlcywgJ2NoaWxkQ29udGV4
dCcpO1xuICAgICAgfVxuICAgICAgQ29uc3RydWN0b3IuY2hpbGRDb250ZXh0VHlwZXMgPSBfYXNz
aWduKFxuICAgICAgICB7fSxcbiAgICAgICAgQ29uc3RydWN0b3IuY2hpbGRDb250ZXh0VHlwZXMs
XG4gICAgICAgIGNoaWxkQ29udGV4dFR5cGVzXG4gICAgICApO1xuICAgIH0sXG4gICAgY29udGV4
dFR5cGVzOiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgY29udGV4dFR5cGVzKSB7XG4gICAgICBpZiAo
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB2YWxpZGF0
ZVR5cGVEZWYoQ29uc3RydWN0b3IsIGNvbnRleHRUeXBlcywgJ2NvbnRleHQnKTtcbiAgICAgIH1c
biAgICAgIENvbnN0cnVjdG9yLmNvbnRleHRUeXBlcyA9IF9hc3NpZ24oXG4gICAgICAgIHt9LFxu
ICAgICAgICBDb25zdHJ1Y3Rvci5jb250ZXh0VHlwZXMsXG4gICAgICAgIGNvbnRleHRUeXBlc1xu
ICAgICAgKTtcbiAgICB9LFxuICAgIC8qKlxuICAgICAqIFNwZWNpYWwgY2FzZSBnZXREZWZhdWx0
UHJvcHMgd2hpY2ggc2hvdWxkIG1vdmUgaW50byBzdGF0aWNzIGJ1dCByZXF1aXJlc1xuICAgICAq
IGF1dG9tYXRpYyBtZXJnaW5nLlxuICAgICAqL1xuICAgIGdldERlZmF1bHRQcm9wczogZnVuY3Rp
b24oQ29uc3RydWN0b3IsIGdldERlZmF1bHRQcm9wcykge1xuICAgICAgaWYgKENvbnN0cnVjdG9y
LmdldERlZmF1bHRQcm9wcykge1xuICAgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMg
PSBjcmVhdGVNZXJnZWRSZXN1bHRGdW5jdGlvbihcbiAgICAgICAgICBDb25zdHJ1Y3Rvci5nZXRE
ZWZhdWx0UHJvcHMsXG4gICAgICAgICAgZ2V0RGVmYXVsdFByb3BzXG4gICAgICAgICk7XG4gICAg
ICB9IGVsc2Uge1xuICAgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMgPSBnZXREZWZh
dWx0UHJvcHM7XG4gICAgICB9XG4gICAgfSxcbiAgICBwcm9wVHlwZXM6IGZ1bmN0aW9uKENvbnN0
cnVjdG9yLCBwcm9wVHlwZXMpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHZhbGlkYXRlVHlwZURlZihDb25zdHJ1Y3RvciwgcHJv
cFR5cGVzLCAncHJvcCcpO1xuICAgICAgfVxuICAgICAgQ29uc3RydWN0b3IucHJvcFR5cGVzID0g
X2Fzc2lnbih7fSwgQ29uc3RydWN0b3IucHJvcFR5cGVzLCBwcm9wVHlwZXMpO1xuICAgIH0sXG4g
ICAgc3RhdGljczogZnVuY3Rpb24oQ29uc3RydWN0b3IsIHN0YXRpY3MpIHtcbiAgICAgIG1peFN0
YXRpY1NwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBzdGF0aWNzKTtcbiAgICB9LFxuICAg
IGF1dG9iaW5kOiBmdW5jdGlvbigpIHt9XG4gIH07XG5cbiAgZnVuY3Rpb24gdmFsaWRhdGVUeXBl
RGVmKENvbnN0cnVjdG9yLCB0eXBlRGVmLCBsb2NhdGlvbikge1xuICAgIGZvciAodmFyIHByb3BO
YW1lIGluIHR5cGVEZWYpIHtcbiAgICAgIGlmICh0eXBlRGVmLmhhc093blByb3BlcnR5KHByb3BO
YW1lKSkge1xuICAgICAgICAvLyB1c2UgYSB3YXJuaW5nIGluc3RlYWQgb2YgYW4gX2ludmFyaWFu
dCBzbyBjb21wb25lbnRzXG4gICAgICAgIC8vIGRvbid0IHNob3cgdXAgaW4gcHJvZCBidXQgb25s
eSBpbiBfX0RFVl9fXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nKSB7XG4gICAgICAgICAgd2FybmluZyhcbiAgICAgICAgICAgIHR5cGVvZiB0eXBlRGVm
W3Byb3BOYW1lXSA9PT0gJ2Z1bmN0aW9uJyxcbiAgICAgICAgICAgICclczogJXMgdHlwZSBgJXNg
IGlzIGludmFsaWQ7IGl0IG11c3QgYmUgYSBmdW5jdGlvbiwgdXN1YWxseSBmcm9tICcgK1xuICAg
ICAgICAgICAgICAnUmVhY3QuUHJvcFR5cGVzLicsXG4gICAgICAgICAgICBDb25zdHJ1Y3Rvci5k
aXNwbGF5TmFtZSB8fCAnUmVhY3RDbGFzcycsXG4gICAgICAgICAgICBSZWFjdFByb3BUeXBlTG9j
YXRpb25OYW1lc1tsb2NhdGlvbl0sXG4gICAgICAgICAgICBwcm9wTmFtZVxuICAgICAgICAgICk7
XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiB2YWxpZGF0ZU1l
dGhvZE92ZXJyaWRlKGlzQWxyZWFkeURlZmluZWQsIG5hbWUpIHtcbiAgICB2YXIgc3BlY1BvbGlj
eSA9IFJlYWN0Q2xhc3NJbnRlcmZhY2UuaGFzT3duUHJvcGVydHkobmFtZSlcbiAgICAgID8gUmVh
Y3RDbGFzc0ludGVyZmFjZVtuYW1lXVxuICAgICAgOiBudWxsO1xuXG4gICAgLy8gRGlzYWxsb3cg
b3ZlcnJpZGluZyBvZiBiYXNlIGNsYXNzIG1ldGhvZHMgdW5sZXNzIGV4cGxpY2l0bHkgYWxsb3dl
ZC5cbiAgICBpZiAoUmVhY3RDbGFzc01peGluLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAg
ICBfaW52YXJpYW50KFxuICAgICAgICBzcGVjUG9saWN5ID09PSAnT1ZFUlJJREVfQkFTRScsXG4g
ICAgICAgICdSZWFjdENsYXNzSW50ZXJmYWNlOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gb3ZlcnJp
ZGUgJyArXG4gICAgICAgICAgJ2Alc2AgZnJvbSB5b3VyIGNsYXNzIHNwZWNpZmljYXRpb24uIEVu
c3VyZSB0aGF0IHlvdXIgbWV0aG9kIG5hbWVzICcgK1xuICAgICAgICAgICdkbyBub3Qgb3Zlcmxh
cCB3aXRoIFJlYWN0IG1ldGhvZHMuJyxcbiAgICAgICAgbmFtZVxuICAgICAgKTtcbiAgICB9XG5c
biAgICAvLyBEaXNhbGxvdyBkZWZpbmluZyBtZXRob2RzIG1vcmUgdGhhbiBvbmNlIHVubGVzcyBl
eHBsaWNpdGx5IGFsbG93ZWQuXG4gICAgaWYgKGlzQWxyZWFkeURlZmluZWQpIHtcbiAgICAgIF9p
bnZhcmlhbnQoXG4gICAgICAgIHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWScgfHwgc3BlY1Bv
bGljeSA9PT0gJ0RFRklORV9NQU5ZX01FUkdFRCcsXG4gICAgICAgICdSZWFjdENsYXNzSW50ZXJm
YWNlOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gZGVmaW5lICcgK1xuICAgICAgICAgICdgJXNgIG9u
IHlvdXIgY29tcG9uZW50IG1vcmUgdGhhbiBvbmNlLiBUaGlzIGNvbmZsaWN0IG1heSBiZSBkdWUg
JyArXG4gICAgICAgICAgJ3RvIGEgbWl4aW4uJyxcbiAgICAgICAgbmFtZVxuICAgICAgKTtcbiAg
ICB9XG4gIH1cblxuICAvKipcbiAgICogTWl4aW4gaGVscGVyIHdoaWNoIGhhbmRsZXMgcG9saWN5
IHZhbGlkYXRpb24gYW5kIHJlc2VydmVkXG4gICAqIHNwZWNpZmljYXRpb24ga2V5cyB3aGVuIGJ1
aWxkaW5nIFJlYWN0IGNsYXNzZXMuXG4gICAqL1xuICBmdW5jdGlvbiBtaXhTcGVjSW50b0NvbXBv
bmVudChDb25zdHJ1Y3Rvciwgc3BlYykge1xuICAgIGlmICghc3BlYykge1xuICAgICAgaWYgKHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdmFyIHR5cGVv
ZlNwZWMgPSB0eXBlb2Ygc3BlYztcbiAgICAgICAgdmFyIGlzTWl4aW5WYWxpZCA9IHR5cGVvZlNw
ZWMgPT09ICdvYmplY3QnICYmIHNwZWMgIT09IG51bGw7XG5cbiAgICAgICAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB3YXJuaW5nKFxuICAg
ICAgICAgICAgaXNNaXhpblZhbGlkLFxuICAgICAgICAgICAgXCIlczogWW91J3JlIGF0dGVtcHRp
bmcgdG8gaW5jbHVkZSBhIG1peGluIHRoYXQgaXMgZWl0aGVyIG51bGwgXCIgK1xuICAgICAgICAg
ICAgICAnb3Igbm90IGFuIG9iamVjdC4gQ2hlY2sgdGhlIG1peGlucyBpbmNsdWRlZCBieSB0aGUg
Y29tcG9uZW50LCAnICtcbiAgICAgICAgICAgICAgJ2FzIHdlbGwgYXMgYW55IG1peGlucyB0aGV5
IGluY2x1ZGUgdGhlbXNlbHZlcy4gJyArXG4gICAgICAgICAgICAgICdFeHBlY3RlZCBvYmplY3Qg
YnV0IGdvdCAlcy4nLFxuICAgICAgICAgICAgQ29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgJ1Jl
YWN0Q2xhc3MnLFxuICAgICAgICAgICAgc3BlYyA9PT0gbnVsbCA/IG51bGwgOiB0eXBlb2ZTcGVj
XG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAg
fVxuXG4gICAgX2ludmFyaWFudChcbiAgICAgIHR5cGVvZiBzcGVjICE9PSAnZnVuY3Rpb24nLFxu
ICAgICAgXCJSZWFjdENsYXNzOiBZb3UncmUgYXR0ZW1wdGluZyB0byBcIiArXG4gICAgICAgICd1
c2UgYSBjb21wb25lbnQgY2xhc3Mgb3IgZnVuY3Rpb24gYXMgYSBtaXhpbi4gSW5zdGVhZCwganVz
dCB1c2UgYSAnICtcbiAgICAgICAgJ3JlZ3VsYXIgb2JqZWN0LidcbiAgICApO1xuICAgIF9pbnZh
cmlhbnQoXG4gICAgICAhaXNWYWxpZEVsZW1lbnQoc3BlYyksXG4gICAgICBcIlJlYWN0Q2xhc3M6
IFlvdSdyZSBhdHRlbXB0aW5nIHRvIFwiICtcbiAgICAgICAgJ3VzZSBhIGNvbXBvbmVudCBhcyBh
IG1peGluLiBJbnN0ZWFkLCBqdXN0IHVzZSBhIHJlZ3VsYXIgb2JqZWN0LidcbiAgICApO1xuXG4g
ICAgdmFyIHByb3RvID0gQ29uc3RydWN0b3IucHJvdG90eXBlO1xuICAgIHZhciBhdXRvQmluZFBh
aXJzID0gcHJvdG8uX19yZWFjdEF1dG9CaW5kUGFpcnM7XG5cbiAgICAvLyBCeSBoYW5kbGluZyBt
aXhpbnMgYmVmb3JlIGFueSBvdGhlciBwcm9wZXJ0aWVzLCB3ZSBlbnN1cmUgdGhlIHNhbWVcbiAg
ICAvLyBjaGFpbmluZyBvcmRlciBpcyBhcHBsaWVkIHRvIG1ldGhvZHMgd2l0aCBERUZJTkVfTUFO
WSBwb2xpY3ksIHdoZXRoZXJcbiAgICAvLyBtaXhpbnMgYXJlIGxpc3RlZCBiZWZvcmUgb3IgYWZ0
ZXIgdGhlc2UgbWV0aG9kcyBpbiB0aGUgc3BlYy5cbiAgICBpZiAoc3BlYy5oYXNPd25Qcm9wZXJ0
eShNSVhJTlNfS0VZKSkge1xuICAgICAgUkVTRVJWRURfU1BFQ19LRVlTLm1peGlucyhDb25zdHJ1
Y3Rvciwgc3BlYy5taXhpbnMpO1xuICAgIH1cblxuICAgIGZvciAodmFyIG5hbWUgaW4gc3BlYykg
e1xuICAgICAgaWYgKCFzcGVjLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgIGNvbnRp
bnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAobmFtZSA9PT0gTUlYSU5TX0tFWSkge1xuICAgICAg
ICAvLyBXZSBoYXZlIGFscmVhZHkgaGFuZGxlZCBtaXhpbnMgaW4gYSBzcGVjaWFsIGNhc2UgYWJv
dmUuXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgcHJvcGVydHkgPSBz
cGVjW25hbWVdO1xuICAgICAgdmFyIGlzQWxyZWFkeURlZmluZWQgPSBwcm90by5oYXNPd25Qcm9w
ZXJ0eShuYW1lKTtcbiAgICAgIHZhbGlkYXRlTWV0aG9kT3ZlcnJpZGUoaXNBbHJlYWR5RGVmaW5l
ZCwgbmFtZSk7XG5cbiAgICAgIGlmIChSRVNFUlZFRF9TUEVDX0tFWVMuaGFzT3duUHJvcGVydHko
bmFtZSkpIHtcbiAgICAgICAgUkVTRVJWRURfU1BFQ19LRVlTW25hbWVdKENvbnN0cnVjdG9yLCBw
cm9wZXJ0eSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBTZXR1cCBtZXRob2RzIG9uIHBy
b3RvdHlwZTpcbiAgICAgICAgLy8gVGhlIGZvbGxvd2luZyBtZW1iZXIgbWV0aG9kcyBzaG91bGQg
bm90IGJlIGF1dG9tYXRpY2FsbHkgYm91bmQ6XG4gICAgICAgIC8vIDEuIEV4cGVjdGVkIFJlYWN0
Q2xhc3MgbWV0aG9kcyAoaW4gdGhlIFwiaW50ZXJmYWNlXCIpLlxuICAgICAgICAvLyAyLiBPdmVy
cmlkZGVuIG1ldGhvZHMgKHRoYXQgd2VyZSBtaXhlZCBpbikuXG4gICAgICAgIHZhciBpc1JlYWN0
Q2xhc3NNZXRob2QgPSBSZWFjdENsYXNzSW50ZXJmYWNlLmhhc093blByb3BlcnR5KG5hbWUpO1xu
ICAgICAgICB2YXIgaXNGdW5jdGlvbiA9IHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ2Z1bmN0aW9uJztc
biAgICAgICAgdmFyIHNob3VsZEF1dG9CaW5kID1cbiAgICAgICAgICBpc0Z1bmN0aW9uICYmXG4g
ICAgICAgICAgIWlzUmVhY3RDbGFzc01ldGhvZCAmJlxuICAgICAgICAgICFpc0FscmVhZHlEZWZp
bmVkICYmXG4gICAgICAgICAgc3BlYy5hdXRvYmluZCAhPT0gZmFsc2U7XG5cbiAgICAgICAgaWYg
KHNob3VsZEF1dG9CaW5kKSB7XG4gICAgICAgICAgYXV0b0JpbmRQYWlycy5wdXNoKG5hbWUsIHBy
b3BlcnR5KTtcbiAgICAgICAgICBwcm90b1tuYW1lXSA9IHByb3BlcnR5O1xuICAgICAgICB9IGVs
c2Uge1xuICAgICAgICAgIGlmIChpc0FscmVhZHlEZWZpbmVkKSB7XG4gICAgICAgICAgICB2YXIg
c3BlY1BvbGljeSA9IFJlYWN0Q2xhc3NJbnRlcmZhY2VbbmFtZV07XG5cbiAgICAgICAgICAgIC8v
IFRoZXNlIGNhc2VzIHNob3VsZCBhbHJlYWR5IGJlIGNhdWdodCBieSB2YWxpZGF0ZU1ldGhvZE92
ZXJyaWRlLlxuICAgICAgICAgICAgX2ludmFyaWFudChcbiAgICAgICAgICAgICAgaXNSZWFjdENs
YXNzTWV0aG9kICYmXG4gICAgICAgICAgICAgICAgKHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFO
WV9NRVJHRUQnIHx8XG4gICAgICAgICAgICAgICAgICBzcGVjUG9saWN5ID09PSAnREVGSU5FX01B
TlknKSxcbiAgICAgICAgICAgICAgJ1JlYWN0Q2xhc3M6IFVuZXhwZWN0ZWQgc3BlYyBwb2xpY3kg
JXMgZm9yIGtleSAlcyAnICtcbiAgICAgICAgICAgICAgICAnd2hlbiBtaXhpbmcgaW4gY29tcG9u
ZW50IHNwZWNzLicsXG4gICAgICAgICAgICAgIHNwZWNQb2xpY3ksXG4gICAgICAgICAgICAgIG5h
bWVcbiAgICAgICAgICAgICk7XG5cbiAgICAgICAgICAgIC8vIEZvciBtZXRob2RzIHdoaWNoIGFy
ZSBkZWZpbmVkIG1vcmUgdGhhbiBvbmNlLCBjYWxsIHRoZSBleGlzdGluZ1xuICAgICAgICAgICAg
Ly8gbWV0aG9kcyBiZWZvcmUgY2FsbGluZyB0aGUgbmV3IHByb3BlcnR5LCBtZXJnaW5nIGlmIGFw
cHJvcHJpYXRlLlxuICAgICAgICAgICAgaWYgKHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWV9N
RVJHRUQnKSB7XG4gICAgICAgICAgICAgIHByb3RvW25hbWVdID0gY3JlYXRlTWVyZ2VkUmVzdWx0
RnVuY3Rpb24ocHJvdG9bbmFtZV0sIHByb3BlcnR5KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAo
c3BlY1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZJykge1xuICAgICAgICAgICAgICBwcm90b1tuYW1l
XSA9IGNyZWF0ZUNoYWluZWRGdW5jdGlvbihwcm90b1tuYW1lXSwgcHJvcGVydHkpO1xuICAgICAg
ICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBwcm90b1tuYW1lXSA9IHBy
b3BlcnR5O1xuICAgICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicpIHtcbiAgICAgICAgICAgICAgLy8gQWRkIHZlcmJvc2UgZGlzcGxheU5hbWUgdG8gdGhl
IGZ1bmN0aW9uLCB3aGljaCBoZWxwcyB3aGVuIGxvb2tpbmdcbiAgICAgICAgICAgICAgLy8gYXQg
cHJvZmlsaW5nIHRvb2xzLlxuICAgICAgICAgICAgICBpZiAodHlwZW9mIHByb3BlcnR5ID09PSAn
ZnVuY3Rpb24nICYmIHNwZWMuZGlzcGxheU5hbWUpIHtcbiAgICAgICAgICAgICAgICBwcm90b1tu
YW1lXS5kaXNwbGF5TmFtZSA9IHNwZWMuZGlzcGxheU5hbWUgKyAnXycgKyBuYW1lO1xuICAgICAg
ICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9
XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gbWl4U3RhdGljU3BlY0ludG9Db21wb25lbnQoQ29u
c3RydWN0b3IsIHN0YXRpY3MpIHtcbiAgICBpZiAoIXN0YXRpY3MpIHtcbiAgICAgIHJldHVybjtc
biAgICB9XG4gICAgZm9yICh2YXIgbmFtZSBpbiBzdGF0aWNzKSB7XG4gICAgICB2YXIgcHJvcGVy
dHkgPSBzdGF0aWNzW25hbWVdO1xuICAgICAgaWYgKCFzdGF0aWNzLmhhc093blByb3BlcnR5KG5h
bWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgaXNSZXNlcnZl
ZCA9IG5hbWUgaW4gUkVTRVJWRURfU1BFQ19LRVlTO1xuICAgICAgX2ludmFyaWFudChcbiAgICAg
ICAgIWlzUmVzZXJ2ZWQsXG4gICAgICAgICdSZWFjdENsYXNzOiBZb3UgYXJlIGF0dGVtcHRpbmcg
dG8gZGVmaW5lIGEgcmVzZXJ2ZWQgJyArXG4gICAgICAgICAgJ3Byb3BlcnR5LCBgJXNgLCB0aGF0
IHNob3VsZG5cXCd0IGJlIG9uIHRoZSBcInN0YXRpY3NcIiBrZXkuIERlZmluZSBpdCAnICtcbiAg
ICAgICAgICAnYXMgYW4gaW5zdGFuY2UgcHJvcGVydHkgaW5zdGVhZDsgaXQgd2lsbCBzdGlsbCBi
ZSBhY2Nlc3NpYmxlIG9uIHRoZSAnICtcbiAgICAgICAgICAnY29uc3RydWN0b3IuJyxcbiAgICAg
ICAgbmFtZVxuICAgICAgKTtcblxuICAgICAgdmFyIGlzSW5oZXJpdGVkID0gbmFtZSBpbiBDb25z
dHJ1Y3RvcjtcbiAgICAgIF9pbnZhcmlhbnQoXG4gICAgICAgICFpc0luaGVyaXRlZCxcbiAgICAg
ICAgJ1JlYWN0Q2xhc3M6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBkZWZpbmUgJyArXG4gICAgICAg
ICAgJ2Alc2Agb24geW91ciBjb21wb25lbnQgbW9yZSB0aGFuIG9uY2UuIFRoaXMgY29uZmxpY3Qg
bWF5IGJlICcgK1xuICAgICAgICAgICdkdWUgdG8gYSBtaXhpbi4nLFxuICAgICAgICBuYW1lXG4g
ICAgICApO1xuICAgICAgQ29uc3RydWN0b3JbbmFtZV0gPSBwcm9wZXJ0eTtcbiAgICB9XG4gIH1c
blxuICAvKipcbiAgICogTWVyZ2UgdHdvIG9iamVjdHMsIGJ1dCB0aHJvdyBpZiBib3RoIGNvbnRh
aW4gdGhlIHNhbWUga2V5LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gb25lIFRoZSBmaXJz
dCBvYmplY3QsIHdoaWNoIGlzIG11dGF0ZWQuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSB0d28gVGhl
IHNlY29uZCBvYmplY3RcbiAgICogQHJldHVybiB7b2JqZWN0fSBvbmUgYWZ0ZXIgaXQgaGFzIGJl
ZW4gbXV0YXRlZCB0byBjb250YWluIGV2ZXJ5dGhpbmcgaW4gdHdvLlxuICAgKi9cbiAgZnVuY3Rp
b24gbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cyhvbmUsIHR3bykge1xuICAgIF9pbnZhcmlh
bnQoXG4gICAgICBvbmUgJiYgdHdvICYmIHR5cGVvZiBvbmUgPT09ICdvYmplY3QnICYmIHR5cGVv
ZiB0d28gPT09ICdvYmplY3QnLFxuICAgICAgJ21lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMo
KTogQ2Fubm90IG1lcmdlIG5vbi1vYmplY3RzLidcbiAgICApO1xuXG4gICAgZm9yICh2YXIga2V5
IGluIHR3bykge1xuICAgICAgaWYgKHR3by5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAg
IF9pbnZhcmlhbnQoXG4gICAgICAgICAgb25lW2tleV0gPT09IHVuZGVmaW5lZCxcbiAgICAgICAg
ICAnbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cygpOiAnICtcbiAgICAgICAgICAgICdUcmll
ZCB0byBtZXJnZSB0d28gb2JqZWN0cyB3aXRoIHRoZSBzYW1lIGtleTogYCVzYC4gVGhpcyBjb25m
bGljdCAnICtcbiAgICAgICAgICAgICdtYXkgYmUgZHVlIHRvIGEgbWl4aW47IGluIHBhcnRpY3Vs
YXIsIHRoaXMgbWF5IGJlIGNhdXNlZCBieSB0d28gJyArXG4gICAgICAgICAgICAnZ2V0SW5pdGlh
bFN0YXRlKCkgb3IgZ2V0RGVmYXVsdFByb3BzKCkgbWV0aG9kcyByZXR1cm5pbmcgb2JqZWN0cyAn
ICtcbiAgICAgICAgICAgICd3aXRoIGNsYXNoaW5nIGtleXMuJyxcbiAgICAgICAgICBrZXlcbiAg
ICAgICAgKTtcbiAgICAgICAgb25lW2tleV0gPSB0d29ba2V5XTtcbiAgICAgIH1cbiAgICB9XG4g
ICAgcmV0dXJuIG9uZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhh
dCBpbnZva2VzIHR3byBmdW5jdGlvbnMgYW5kIG1lcmdlcyB0aGVpciByZXR1cm4gdmFsdWVzLlxu
ICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvbmUgRnVuY3Rpb24gdG8gaW52b2tlIGZpcnN0
LlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSB0d28gRnVuY3Rpb24gdG8gaW52b2tlIHNlY29uZC5c
biAgICogQHJldHVybiB7ZnVuY3Rpb259IEZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgdHdvIGFy
Z3VtZW50IGZ1bmN0aW9ucy5cbiAgICogQHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIGNyZWF0
ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uKG9uZSwgdHdvKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIG1l
cmdlZFJlc3VsdCgpIHtcbiAgICAgIHZhciBhID0gb25lLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7
XG4gICAgICB2YXIgYiA9IHR3by5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgaWYgKGEg
PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gYjtcbiAgICAgIH0gZWxzZSBpZiAoYiA9PSBudWxs
KSB7XG4gICAgICAgIHJldHVybiBhO1xuICAgICAgfVxuICAgICAgdmFyIGMgPSB7fTtcbiAgICAg
IG1lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMoYywgYSk7XG4gICAgICBtZXJnZUludG9XaXRo
Tm9EdXBsaWNhdGVLZXlzKGMsIGIpO1xuICAgICAgcmV0dXJuIGM7XG4gICAgfTtcbiAgfVxuXG4g
IC8qKlxuICAgKiBDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCBpbnZva2VzIHR3byBmdW5jdGlvbnMg
YW5kIGlnbm9yZXMgdGhlaXIgcmV0dXJuIHZhbGVzLlxuICAgKlxuICAgKiBAcGFyYW0ge2Z1bmN0
aW9ufSBvbmUgRnVuY3Rpb24gdG8gaW52b2tlIGZpcnN0LlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9u
fSB0d28gRnVuY3Rpb24gdG8gaW52b2tlIHNlY29uZC5cbiAgICogQHJldHVybiB7ZnVuY3Rpb259
IEZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0aGUgdHdvIGFyZ3VtZW50IGZ1bmN0aW9ucy5cbiAgICog
QHByaXZhdGVcbiAgICovXG4gIGZ1bmN0aW9uIGNyZWF0ZUNoYWluZWRGdW5jdGlvbihvbmUsIHR3
bykge1xuICAgIHJldHVybiBmdW5jdGlvbiBjaGFpbmVkRnVuY3Rpb24oKSB7XG4gICAgICBvbmUu
YXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgIHR3by5hcHBseSh0aGlzLCBhcmd1bWVudHMp
O1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQmluZHMgYSBtZXRob2QgdG8gdGhlIGNvbXBv
bmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbXBvbmVudCBDb21wb25lbnQgd2hv
c2UgbWV0aG9kIGlzIGdvaW5nIHRvIGJlIGJvdW5kLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBt
ZXRob2QgTWV0aG9kIHRvIGJlIGJvdW5kLlxuICAgKiBAcmV0dXJuIHtmdW5jdGlvbn0gVGhlIGJv
dW5kIG1ldGhvZC5cbiAgICovXG4gIGZ1bmN0aW9uIGJpbmRBdXRvQmluZE1ldGhvZChjb21wb25l
bnQsIG1ldGhvZCkge1xuICAgIHZhciBib3VuZE1ldGhvZCA9IG1ldGhvZC5iaW5kKGNvbXBvbmVu
dCk7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAg
ICAgIGJvdW5kTWV0aG9kLl9fcmVhY3RCb3VuZENvbnRleHQgPSBjb21wb25lbnQ7XG4gICAgICBi
b3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRNZXRob2QgPSBtZXRob2Q7XG4gICAgICBib3VuZE1ldGhv
ZC5fX3JlYWN0Qm91bmRBcmd1bWVudHMgPSBudWxsO1xuICAgICAgdmFyIGNvbXBvbmVudE5hbWUg
PSBjb21wb25lbnQuY29uc3RydWN0b3IuZGlzcGxheU5hbWU7XG4gICAgICB2YXIgX2JpbmQgPSBi
b3VuZE1ldGhvZC5iaW5kO1xuICAgICAgYm91bmRNZXRob2QuYmluZCA9IGZ1bmN0aW9uKG5ld1Ro
aXMpIHtcbiAgICAgICAgZm9yIChcbiAgICAgICAgICB2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5n
dGgsXG4gICAgICAgICAgICBhcmdzID0gQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLFxu
ICAgICAgICAgICAgX2tleSA9IDE7XG4gICAgICAgICAgX2tleSA8IF9sZW47XG4gICAgICAgICAg
X2tleSsrXG4gICAgICAgICkge1xuICAgICAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRz
W19rZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVXNlciBpcyB0cnlpbmcgdG8gYmluZCgp
IGFuIGF1dG9ib3VuZCBtZXRob2Q7IHdlIGVmZmVjdGl2ZWx5IHdpbGxcbiAgICAgICAgLy8gaWdu
b3JlIHRoZSB2YWx1ZSBvZiBcInRoaXNcIiB0aGF0IHRoZSB1c2VyIGlzIHRyeWluZyB0byB1c2Us
IHNvXG4gICAgICAgIC8vIGxldCdzIHdhcm4uXG4gICAgICAgIGlmIChuZXdUaGlzICE9PSBjb21w
b25lbnQgJiYgbmV3VGhpcyAhPT0gbnVsbCkge1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICB3YXJuaW5nKFxuICAgICAg
ICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgJ2JpbmQoKTogUmVhY3QgY29tcG9uZW50IG1l
dGhvZHMgbWF5IG9ubHkgYmUgYm91bmQgdG8gdGhlICcgK1xuICAgICAgICAgICAgICAgICdjb21w
b25lbnQgaW5zdGFuY2UuIFNlZSAlcycsXG4gICAgICAgICAgICAgIGNvbXBvbmVudE5hbWVcbiAg
ICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKCFhcmdzLmxlbmd0
aCkge1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
KSB7XG4gICAgICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAg
ICAgICAgJ2JpbmQoKTogWW91IGFyZSBiaW5kaW5nIGEgY29tcG9uZW50IG1ldGhvZCB0byB0aGUg
Y29tcG9uZW50LiAnICtcbiAgICAgICAgICAgICAgICAnUmVhY3QgZG9lcyB0aGlzIGZvciB5b3Ug
YXV0b21hdGljYWxseSBpbiBhIGhpZ2gtcGVyZm9ybWFuY2UgJyArXG4gICAgICAgICAgICAgICAg
J3dheSwgc28geW91IGNhbiBzYWZlbHkgcmVtb3ZlIHRoaXMgY2FsbC4gU2VlICVzJyxcbiAgICAg
ICAgICAgICAgY29tcG9uZW50TmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAg
ICAgICAgcmV0dXJuIGJvdW5kTWV0aG9kO1xuICAgICAgICB9XG4gICAgICAgIHZhciByZWJvdW5k
TWV0aG9kID0gX2JpbmQuYXBwbHkoYm91bmRNZXRob2QsIGFyZ3VtZW50cyk7XG4gICAgICAgIHJl
Ym91bmRNZXRob2QuX19yZWFjdEJvdW5kQ29udGV4dCA9IGNvbXBvbmVudDtcbiAgICAgICAgcmVi
b3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRNZXRob2QgPSBtZXRob2Q7XG4gICAgICAgIHJlYm91bmRN
ZXRob2QuX19yZWFjdEJvdW5kQXJndW1lbnRzID0gYXJncztcbiAgICAgICAgcmV0dXJuIHJlYm91
bmRNZXRob2Q7XG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gYm91bmRNZXRob2Q7XG4gIH1c
blxuICAvKipcbiAgICogQmluZHMgYWxsIGF1dG8tYm91bmQgbWV0aG9kcyBpbiBhIGNvbXBvbmVu
dC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbXBvbmVudCBDb21wb25lbnQgd2hvc2Ug
bWV0aG9kIGlzIGdvaW5nIHRvIGJlIGJvdW5kLlxuICAgKi9cbiAgZnVuY3Rpb24gYmluZEF1dG9C
aW5kTWV0aG9kcyhjb21wb25lbnQpIHtcbiAgICB2YXIgcGFpcnMgPSBjb21wb25lbnQuX19yZWFj
dEF1dG9CaW5kUGFpcnM7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwYWlycy5sZW5ndGg7IGkg
Kz0gMikge1xuICAgICAgdmFyIGF1dG9CaW5kS2V5ID0gcGFpcnNbaV07XG4gICAgICB2YXIgbWV0
aG9kID0gcGFpcnNbaSArIDFdO1xuICAgICAgY29tcG9uZW50W2F1dG9CaW5kS2V5XSA9IGJpbmRB
dXRvQmluZE1ldGhvZChjb21wb25lbnQsIG1ldGhvZCk7XG4gICAgfVxuICB9XG5cbiAgdmFyIElz
TW91bnRlZFByZU1peGluID0ge1xuICAgIGNvbXBvbmVudERpZE1vdW50OiBmdW5jdGlvbigpIHtc
biAgICAgIHRoaXMuX19pc01vdW50ZWQgPSB0cnVlO1xuICAgIH1cbiAgfTtcblxuICB2YXIgSXNN
b3VudGVkUG9zdE1peGluID0ge1xuICAgIGNvbXBvbmVudFdpbGxVbm1vdW50OiBmdW5jdGlvbigp
IHtcbiAgICAgIHRoaXMuX19pc01vdW50ZWQgPSBmYWxzZTtcbiAgICB9XG4gIH07XG5cbiAgLyoq
XG4gICAqIEFkZCBtb3JlIHRvIHRoZSBSZWFjdENsYXNzIGJhc2UgY2xhc3MuIFRoZXNlIGFyZSBh
bGwgbGVnYWN5IGZlYXR1cmVzIGFuZFxuICAgKiB0aGVyZWZvcmUgbm90IGFscmVhZHkgcGFydCBv
ZiB0aGUgbW9kZXJuIFJlYWN0Q29tcG9uZW50LlxuICAgKi9cbiAgdmFyIFJlYWN0Q2xhc3NNaXhp
biA9IHtcbiAgICAvKipcbiAgICAgKiBUT0RPOiBUaGlzIHdpbGwgYmUgZGVwcmVjYXRlZCBiZWNh
dXNlIHN0YXRlIHNob3VsZCBhbHdheXMga2VlcCBhIGNvbnNpc3RlbnRcbiAgICAgKiB0eXBlIHNp
Z25hdHVyZSBhbmQgdGhlIG9ubHkgdXNlIGNhc2UgZm9yIHRoaXMsIGlzIHRvIGF2b2lkIHRoYXQu
XG4gICAgICovXG4gICAgcmVwbGFjZVN0YXRlOiBmdW5jdGlvbihuZXdTdGF0ZSwgY2FsbGJhY2sp
IHtcbiAgICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlUmVwbGFjZVN0YXRlKHRoaXMsIG5ld1N0YXRl
LCBjYWxsYmFjayk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIENoZWNrcyB3aGV0aGVyIG9y
IG5vdCB0aGlzIGNvbXBvc2l0ZSBjb21wb25lbnQgaXMgbW91bnRlZC5cbiAgICAgKiBAcmV0dXJu
IHtib29sZWFufSBUcnVlIGlmIG1vdW50ZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICAgKiBAcHJv
dGVjdGVkXG4gICAgICogQGZpbmFsXG4gICAgICovXG4gICAgaXNNb3VudGVkOiBmdW5jdGlvbigp
IHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
ICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgdGhpcy5fX2RpZFdhcm5Jc01vdW50ZWQsXG4gICAg
ICAgICAgJyVzOiBpc01vdW50ZWQgaXMgZGVwcmVjYXRlZC4gSW5zdGVhZCwgbWFrZSBzdXJlIHRv
IGNsZWFuIHVwICcgK1xuICAgICAgICAgICAgJ3N1YnNjcmlwdGlvbnMgYW5kIHBlbmRpbmcgcmVx
dWVzdHMgaW4gY29tcG9uZW50V2lsbFVubW91bnQgdG8gJyArXG4gICAgICAgICAgICAncHJldmVu
dCBtZW1vcnkgbGVha3MuJyxcbiAgICAgICAgICAodGhpcy5jb25zdHJ1Y3RvciAmJiB0aGlzLmNv
bnN0cnVjdG9yLmRpc3BsYXlOYW1lKSB8fFxuICAgICAgICAgICAgdGhpcy5uYW1lIHx8XG4gICAg
ICAgICAgICAnQ29tcG9uZW50J1xuICAgICAgICApO1xuICAgICAgICB0aGlzLl9fZGlkV2Fybklz
TW91bnRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gISF0aGlzLl9faXNNb3VudGVk
O1xuICAgIH1cbiAgfTtcblxuICB2YXIgUmVhY3RDbGFzc0NvbXBvbmVudCA9IGZ1bmN0aW9uKCkg
e307XG4gIF9hc3NpZ24oXG4gICAgUmVhY3RDbGFzc0NvbXBvbmVudC5wcm90b3R5cGUsXG4gICAg
UmVhY3RDb21wb25lbnQucHJvdG90eXBlLFxuICAgIFJlYWN0Q2xhc3NNaXhpblxuICApO1xuXG4g
IC8qKlxuICAgKiBDcmVhdGVzIGEgY29tcG9zaXRlIGNvbXBvbmVudCBjbGFzcyBnaXZlbiBhIGNs
YXNzIHNwZWNpZmljYXRpb24uXG4gICAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9y
ZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jcmVhdGVjbGFzc1xuICAgKlxuICAg
KiBAcGFyYW0ge29iamVjdH0gc3BlYyBDbGFzcyBzcGVjaWZpY2F0aW9uICh3aGljaCBtdXN0IGRl
ZmluZSBgcmVuZGVyYCkuXG4gICAqIEByZXR1cm4ge2Z1bmN0aW9ufSBDb21wb25lbnQgY29uc3Ry
dWN0b3IgZnVuY3Rpb24uXG4gICAqIEBwdWJsaWNcbiAgICovXG4gIGZ1bmN0aW9uIGNyZWF0ZUNs
YXNzKHNwZWMpIHtcbiAgICAvLyBUbyBrZWVwIG91ciB3YXJuaW5ncyBtb3JlIHVuZGVyc3RhbmRh
YmxlLCB3ZSdsbCB1c2UgYSBsaXR0bGUgaGFjayBoZXJlIHRvXG4gICAgLy8gZW5zdXJlIHRoYXQg
Q29uc3RydWN0b3IubmFtZSAhPT0gJ0NvbnN0cnVjdG9yJy4gVGhpcyBtYWtlcyBzdXJlIHdlIGRv
bid0XG4gICAgLy8gdW5uZWNlc3NhcmlseSBpZGVudGlmeSBhIGNsYXNzIHdpdGhvdXQgZGlzcGxh
eU5hbWUgYXMgJ0NvbnN0cnVjdG9yJy5cbiAgICB2YXIgQ29uc3RydWN0b3IgPSBpZGVudGl0eShm
dW5jdGlvbihwcm9wcywgY29udGV4dCwgdXBkYXRlcikge1xuICAgICAgLy8gVGhpcyBjb25zdHJ1
Y3RvciBnZXRzIG92ZXJyaWRkZW4gYnkgbW9ja3MuIFRoZSBhcmd1bWVudCBpcyB1c2VkXG4gICAg
ICAvLyBieSBtb2NrcyB0byBhc3NlcnQgb24gd2hhdCBnZXRzIG1vdW50ZWQuXG5cbiAgICAgIGlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHdhcm5p
bmcoXG4gICAgICAgICAgdGhpcyBpbnN0YW5jZW9mIENvbnN0cnVjdG9yLFxuICAgICAgICAgICdT
b21ldGhpbmcgaXMgY2FsbGluZyBhIFJlYWN0IGNvbXBvbmVudCBkaXJlY3RseS4gVXNlIGEgZmFj
dG9yeSBvciAnICtcbiAgICAgICAgICAgICdKU1ggaW5zdGVhZC4gU2VlOiBodHRwczovL2ZiLm1l
L3JlYWN0LWxlZ2FjeWZhY3RvcnknXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIFdp
cmUgdXAgYXV0by1iaW5kaW5nXG4gICAgICBpZiAodGhpcy5fX3JlYWN0QXV0b0JpbmRQYWlycy5s
ZW5ndGgpIHtcbiAgICAgICAgYmluZEF1dG9CaW5kTWV0aG9kcyh0aGlzKTtcbiAgICAgIH1cblxu
ICAgICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICAgICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtc
biAgICAgIHRoaXMucmVmcyA9IGVtcHR5T2JqZWN0O1xuICAgICAgdGhpcy51cGRhdGVyID0gdXBk
YXRlciB8fCBSZWFjdE5vb3BVcGRhdGVRdWV1ZTtcblxuICAgICAgdGhpcy5zdGF0ZSA9IG51bGw7
XG5cbiAgICAgIC8vIFJlYWN0Q2xhc3NlcyBkb2Vzbid0IGhhdmUgY29uc3RydWN0b3JzLiBJbnN0
ZWFkLCB0aGV5IHVzZSB0aGVcbiAgICAgIC8vIGdldEluaXRpYWxTdGF0ZSBhbmQgY29tcG9uZW50
V2lsbE1vdW50IG1ldGhvZHMgZm9yIGluaXRpYWxpemF0aW9uLlxuXG4gICAgICB2YXIgaW5pdGlh
bFN0YXRlID0gdGhpcy5nZXRJbml0aWFsU3RhdGUgPyB0aGlzLmdldEluaXRpYWxTdGF0ZSgpIDog
bnVsbDtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
XG4gICAgICAgIC8vIFdlIGFsbG93IGF1dG8tbW9ja3MgdG8gcHJvY2VlZCBhcyBpZiB0aGV5J3Jl
IHJldHVybmluZyBudWxsLlxuICAgICAgICBpZiAoXG4gICAgICAgICAgaW5pdGlhbFN0YXRlID09
PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICB0aGlzLmdldEluaXRpYWxTdGF0ZS5faXNNb2NrRnVu
Y3Rpb25cbiAgICAgICAgKSB7XG4gICAgICAgICAgLy8gVGhpcyBpcyBwcm9iYWJseSBiYWQgcHJh
Y3RpY2UuIENvbnNpZGVyIHdhcm5pbmcgaGVyZSBhbmRcbiAgICAgICAgICAvLyBkZXByZWNhdGlu
ZyB0aGlzIGNvbnZlbmllbmNlLlxuICAgICAgICAgIGluaXRpYWxTdGF0ZSA9IG51bGw7XG4gICAg
ICAgIH1cbiAgICAgIH1cbiAgICAgIF9pbnZhcmlhbnQoXG4gICAgICAgIHR5cGVvZiBpbml0aWFs
U3RhdGUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGluaXRpYWxTdGF0ZSksXG4gICAg
ICAgICclcy5nZXRJbml0aWFsU3RhdGUoKTogbXVzdCByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwn
LFxuICAgICAgICBDb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCAnUmVhY3RDb21wb3NpdGVDb21w
b25lbnQnXG4gICAgICApO1xuXG4gICAgICB0aGlzLnN0YXRlID0gaW5pdGlhbFN0YXRlO1xuICAg
IH0pO1xuICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZSA9IG5ldyBSZWFjdENsYXNzQ29tcG9uZW50
KCk7XG4gICAgQ29uc3RydWN0b3IucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gQ29uc3RydWN0b3I7
XG4gICAgQ29uc3RydWN0b3IucHJvdG90eXBlLl9fcmVhY3RBdXRvQmluZFBhaXJzID0gW107XG5c
biAgICBpbmplY3RlZE1peGlucy5mb3JFYWNoKG1peFNwZWNJbnRvQ29tcG9uZW50LmJpbmQobnVs
bCwgQ29uc3RydWN0b3IpKTtcblxuICAgIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9y
LCBJc01vdW50ZWRQcmVNaXhpbik7XG4gICAgbWl4U3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0
b3IsIHNwZWMpO1xuICAgIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBJc01vdW50
ZWRQb3N0TWl4aW4pO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgZGVmYXVsdFByb3BzIHByb3Bl
cnR5IGFmdGVyIGFsbCBtaXhpbnMgaGF2ZSBiZWVuIG1lcmdlZC5cbiAgICBpZiAoQ29uc3RydWN0
b3IuZ2V0RGVmYXVsdFByb3BzKSB7XG4gICAgICBDb25zdHJ1Y3Rvci5kZWZhdWx0UHJvcHMgPSBD
b25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMoKTtcbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gVGhpcyBpcyBhIHRhZyB0
byBpbmRpY2F0ZSB0aGF0IHRoZSB1c2Ugb2YgdGhlc2UgbWV0aG9kIG5hbWVzIGlzIG9rLFxuICAg
ICAgLy8gc2luY2UgaXQncyB1c2VkIHdpdGggY3JlYXRlQ2xhc3MuIElmIGl0J3Mgbm90LCB0aGVu
IGl0J3MgbGlrZWx5IGFcbiAgICAgIC8vIG1pc3Rha2Ugc28gd2UnbGwgd2FybiB5b3UgdG8gdXNl
IHRoZSBzdGF0aWMgcHJvcGVydHksIHByb3BlcnR5XG4gICAgICAvLyBpbml0aWFsaXplciBvciBj
b25zdHJ1Y3RvciByZXNwZWN0aXZlbHkuXG4gICAgICBpZiAoQ29uc3RydWN0b3IuZ2V0RGVmYXVs
dFByb3BzKSB7XG4gICAgICAgIENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcy5pc1JlYWN0Q2xh
c3NBcHByb3ZlZCA9IHt9O1xuICAgICAgfVxuICAgICAgaWYgKENvbnN0cnVjdG9yLnByb3RvdHlw
ZS5nZXRJbml0aWFsU3RhdGUpIHtcbiAgICAgICAgQ29uc3RydWN0b3IucHJvdG90eXBlLmdldElu
aXRpYWxTdGF0ZS5pc1JlYWN0Q2xhc3NBcHByb3ZlZCA9IHt9O1xuICAgICAgfVxuICAgIH1cblxu
ICAgIF9pbnZhcmlhbnQoXG4gICAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUucmVuZGVyLFxuICAg
ICAgJ2NyZWF0ZUNsYXNzKC4uLik6IENsYXNzIHNwZWNpZmljYXRpb24gbXVzdCBpbXBsZW1lbnQg
YSBgcmVuZGVyYCBtZXRob2QuJ1xuICAgICk7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgd2FybmluZyhcbiAgICAgICAgIUNvbnN0cnVj
dG9yLnByb3RvdHlwZS5jb21wb25lbnRTaG91bGRVcGRhdGUsXG4gICAgICAgICclcyBoYXMgYSBt
ZXRob2QgY2FsbGVkICcgK1xuICAgICAgICAgICdjb21wb25lbnRTaG91bGRVcGRhdGUoKS4gRGlk
IHlvdSBtZWFuIHNob3VsZENvbXBvbmVudFVwZGF0ZSgpPyAnICtcbiAgICAgICAgICAnVGhlIG5h
bWUgaXMgcGhyYXNlZCBhcyBhIHF1ZXN0aW9uIGJlY2F1c2UgdGhlIGZ1bmN0aW9uIGlzICcgK1xu
ICAgICAgICAgICdleHBlY3RlZCB0byByZXR1cm4gYSB2YWx1ZS4nLFxuICAgICAgICBzcGVjLmRp
c3BsYXlOYW1lIHx8ICdBIGNvbXBvbmVudCdcbiAgICAgICk7XG4gICAgICB3YXJuaW5nKFxuICAg
ICAgICAhQ29uc3RydWN0b3IucHJvdG90eXBlLmNvbXBvbmVudFdpbGxSZWNpZXZlUHJvcHMsXG4g
ICAgICAgICclcyBoYXMgYSBtZXRob2QgY2FsbGVkICcgK1xuICAgICAgICAgICdjb21wb25lbnRX
aWxsUmVjaWV2ZVByb3BzKCkuIERpZCB5b3UgbWVhbiBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3Bz
KCk/JyxcbiAgICAgICAgc3BlYy5kaXNwbGF5TmFtZSB8fCAnQSBjb21wb25lbnQnXG4gICAgICAp
O1xuICAgIH1cblxuICAgIC8vIFJlZHVjZSB0aW1lIHNwZW50IGRvaW5nIGxvb2t1cHMgYnkgc2V0
dGluZyB0aGVzZSBvbiB0aGUgcHJvdG90eXBlLlxuICAgIGZvciAodmFyIG1ldGhvZE5hbWUgaW4g
UmVhY3RDbGFzc0ludGVyZmFjZSkge1xuICAgICAgaWYgKCFDb25zdHJ1Y3Rvci5wcm90b3R5cGVb
bWV0aG9kTmFtZV0pIHtcbiAgICAgICAgQ29uc3RydWN0b3IucHJvdG90eXBlW21ldGhvZE5hbWVd
ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gQ29uc3RydWN0b3I7XG4gIH1c
blxuICByZXR1cm4gY3JlYXRlQ2xhc3M7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZmFjdG9yeTtc
blxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2Ny
ZWF0ZS1yZWFjdC1jbGFzcy9mYWN0b3J5LmpzXG4gKiogbW9kdWxlIGlkID0gOTdcbiAqKiBtb2R1
bGUgY2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKipcbiAqIENvcHlyaWdo
dCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG4gKlxuICogQHR5cGVjaGVja3NcbiAqL1xuXG52YXIgX2h5cGhlblBhdHRlcm4g
PSAvLSguKS9nO1xuXG4vKipcbiAqIENhbWVsY2FzZXMgYSBoeXBoZW5hdGVkIHN0cmluZywgZm9y
IGV4YW1wbGU6XG4gKlxuICogICA+IGNhbWVsaXplKCdiYWNrZ3JvdW5kLWNvbG9yJylcbiAqICAg
PCBcImJhY2tncm91bmRDb2xvclwiXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuICog
QHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBjYW1lbGl6ZShzdHJpbmcpIHtcbiAgcmV0
dXJuIHN0cmluZy5yZXBsYWNlKF9oeXBoZW5QYXR0ZXJuLCBmdW5jdGlvbiAoXywgY2hhcmFjdGVy
KSB7XG4gICAgcmV0dXJuIGNoYXJhY3Rlci50b1VwcGVyQ2FzZSgpO1xuICB9KTtcbn1cblxubW9k
dWxlLmV4cG9ydHMgPSBjYW1lbGl6ZTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQ
QUNLIEZPT1RFUlxuICoqIC4vfi9mYmpzL2xpYi9jYW1lbGl6ZS5qc1xuICoqIG1vZHVsZSBpZCA9
IDk4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAoYykg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAq
XG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG4gKlxuICogQHR5cGVjaGVja3NcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBjYW1l
bGl6ZSA9IHJlcXVpcmUoJy4vY2FtZWxpemUnKTtcblxudmFyIG1zUGF0dGVybiA9IC9eLW1zLS87
XG5cbi8qKlxuICogQ2FtZWxjYXNlcyBhIGh5cGhlbmF0ZWQgQ1NTIHByb3BlcnR5IG5hbWUsIGZv
ciBleGFtcGxlOlxuICpcbiAqICAgPiBjYW1lbGl6ZVN0eWxlTmFtZSgnYmFja2dyb3VuZC1jb2xv
cicpXG4gKiAgIDwgXCJiYWNrZ3JvdW5kQ29sb3JcIlxuICogICA+IGNhbWVsaXplU3R5bGVOYW1l
KCctbW96LXRyYW5zaXRpb24nKVxuICogICA8IFwiTW96VHJhbnNpdGlvblwiXG4gKiAgID4gY2Ft
ZWxpemVTdHlsZU5hbWUoJy1tcy10cmFuc2l0aW9uJylcbiAqICAgPCBcIm1zVHJhbnNpdGlvblwi
XG4gKlxuICogQXMgQW5kaSBTbWl0aCBzdWdnZXN0c1xuICogKGh0dHA6Ly93d3cuYW5kaXNtaXRo
LmNvbS9ibG9nLzIwMTIvMDIvbW9kZXJuaXpyLXByZWZpeGVkLyksIGFuIGAtbXNgIHByZWZpeFxu
ICogaXMgY29udmVydGVkIHRvIGxvd2VyY2FzZSBgbXNgLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5n
fSBzdHJpbmdcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gY2FtZWxpemVTdHls
ZU5hbWUoc3RyaW5nKSB7XG4gIHJldHVybiBjYW1lbGl6ZShzdHJpbmcucmVwbGFjZShtc1BhdHRl
cm4sICdtcy0nKSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2FtZWxpemVTdHlsZU5hbWU7XG5c
blxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vZmJqcy9s
aWIvY2FtZWxpemVTdHlsZU5hbWUuanNcbiAqKiBtb2R1bGUgaWQgPSA5OVxuICoqIG1vZHVsZSBj
aHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIENvcHlyaWdodCAoYykg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAq
XG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG4gKlxuICogXG4gKi9cblxudmFyIGlzVGV4dE5vZGUgPSByZXF1aXJlKCcuL2lzVGV4dE5v
ZGUnKTtcblxuLyplc2xpbnQtZGlzYWJsZSBuby1iaXR3aXNlICovXG5cbi8qKlxuICogQ2hlY2tz
IGlmIGEgZ2l2ZW4gRE9NIG5vZGUgY29udGFpbnMgb3IgaXMgYW5vdGhlciBET00gbm9kZS5cbiAq
L1xuZnVuY3Rpb24gY29udGFpbnNOb2RlKG91dGVyTm9kZSwgaW5uZXJOb2RlKSB7XG4gIGlmICgh
b3V0ZXJOb2RlIHx8ICFpbm5lck5vZGUpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSBp
ZiAob3V0ZXJOb2RlID09PSBpbm5lck5vZGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSBlbHNl
IGlmIChpc1RleHROb2RlKG91dGVyTm9kZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxz
ZSBpZiAoaXNUZXh0Tm9kZShpbm5lck5vZGUpKSB7XG4gICAgcmV0dXJuIGNvbnRhaW5zTm9kZShv
dXRlck5vZGUsIGlubmVyTm9kZS5wYXJlbnROb2RlKTtcbiAgfSBlbHNlIGlmICgnY29udGFpbnMn
IGluIG91dGVyTm9kZSkge1xuICAgIHJldHVybiBvdXRlck5vZGUuY29udGFpbnMoaW5uZXJOb2Rl
KTtcbiAgfSBlbHNlIGlmIChvdXRlck5vZGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24pIHtcbiAg
ICByZXR1cm4gISEob3V0ZXJOb2RlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGlubmVyTm9kZSkg
JiAxNik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbm1vZHVsZS5l
eHBvcnRzID0gY29udGFpbnNOb2RlO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBB
Q0sgRk9PVEVSXG4gKiogLi9+L2ZianMvbGliL2NvbnRhaW5zTm9kZS5qc1xuICoqIG1vZHVsZSBp
ZCA9IDEwMFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG4v
KipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHR5cGVjaGVja3NcbiAqL1xuXG52YXIg
aW52YXJpYW50ID0gcmVxdWlyZSgnLi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKiBDb252ZXJ0IGFy
cmF5LWxpa2Ugb2JqZWN0cyB0byBhcnJheXMuXG4gKlxuICogVGhpcyBBUEkgYXNzdW1lcyB0aGUg
Y2FsbGVyIGtub3dzIHRoZSBjb250ZW50cyBvZiB0aGUgZGF0YSB0eXBlLiBGb3IgbGVzc1xuICog
d2VsbCBkZWZpbmVkIGlucHV0cyB1c2UgY3JlYXRlQXJyYXlGcm9tTWl4ZWQuXG4gKlxuICogQHBh
cmFtIHtvYmplY3R8ZnVuY3Rpb258ZmlsZWxpc3R9IG9ialxuICogQHJldHVybiB7YXJyYXl9XG4g
Ki9cbmZ1bmN0aW9uIHRvQXJyYXkob2JqKSB7XG4gIHZhciBsZW5ndGggPSBvYmoubGVuZ3RoO1xu
XG4gIC8vIFNvbWUgYnJvd3NlcnMgYnVpbHRpbiBvYmplY3RzIGNhbiByZXBvcnQgdHlwZW9mICdm
dW5jdGlvbicgKGUuZy4gTm9kZUxpc3RcbiAgLy8gaW4gb2xkIHZlcnNpb25zIG9mIFNhZmFyaSku
XG4gICEoIUFycmF5LmlzQXJyYXkob2JqKSAmJiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgfHwg
dHlwZW9mIG9iaiA9PT0gJ2Z1bmN0aW9uJykpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3RvQXJyYXk6IEFycmF5LWxpa2Ugb2JqZWN0
IGV4cGVjdGVkJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuXG4gICEodHlwZW9mIGxl
bmd0aCA9PT0gJ251bWJlcicpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IGludmFyaWFudChmYWxzZSwgJ3RvQXJyYXk6IE9iamVjdCBuZWVkcyBhIGxlbmd0aCBwcm9w
ZXJ0eScpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcblxuICAhKGxlbmd0aCA9PT0gMCB8
fCBsZW5ndGggLSAxIGluIG9iaikgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gaW52YXJpYW50KGZhbHNlLCAndG9BcnJheTogT2JqZWN0IHNob3VsZCBoYXZlIGtleXMg
Zm9yIGluZGljZXMnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG5cbiAgISh0eXBlb2Yg
b2JqLmNhbGxlZSAhPT0gJ2Z1bmN0aW9uJykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAndG9BcnJheTogT2JqZWN0IGNhblxcJ3QgYmUg
YGFyZ3VtZW50c2AuIFVzZSByZXN0IHBhcmFtcyAnICsgJyhmdW5jdGlvbiguLi5hcmdzKSB7fSkg
b3IgQXJyYXkuZnJvbSgpIGluc3RlYWQuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xu
XG4gIC8vIE9sZCBJRSBkb2Vzbid0IGdpdmUgY29sbGVjdGlvbnMgYWNjZXNzIHRvIGhhc093blBy
b3BlcnR5LiBBc3N1bWUgaW5wdXRzXG4gIC8vIHdpdGhvdXQgbWV0aG9kIHdpbGwgdGhyb3cgZHVy
aW5nIHRoZSBzbGljZSBjYWxsIGFuZCBza2lwIHN0cmFpZ2h0IHRvIHRoZVxuICAvLyBmYWxsYmFj
ay5cbiAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eSkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4g
QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwob2JqKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAg
ICAvLyBJRSA8IDkgZG9lcyBub3Qgc3VwcG9ydCBBcnJheSNzbGljZSBvbiBjb2xsZWN0aW9ucyBv
YmplY3RzXG4gICAgfVxuICB9XG5cbiAgLy8gRmFsbCBiYWNrIHRvIGNvcHlpbmcga2V5IGJ5IGtl
eS4gVGhpcyBhc3N1bWVzIGFsbCBrZXlzIGhhdmUgYSB2YWx1ZSxcbiAgLy8gc28gd2lsbCBub3Qg
cHJlc2VydmUgc3BhcnNlbHkgcG9wdWxhdGVkIGlucHV0cy5cbiAgdmFyIHJldCA9IEFycmF5KGxl
bmd0aCk7XG4gIGZvciAodmFyIGlpID0gMDsgaWkgPCBsZW5ndGg7IGlpKyspIHtcbiAgICByZXRb
aWldID0gb2JqW2lpXTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIFBlcmZvcm0g
YSBoZXVyaXN0aWMgdGVzdCB0byBkZXRlcm1pbmUgaWYgYW4gb2JqZWN0IGlzIFwiYXJyYXktbGlr
ZVwiLlxuICpcbiAqICAgQSBtb25rIGFza2VkIEpvc2h1LCBhIFplbiBtYXN0ZXIsIFwiSGFzIGEg
ZG9nIEJ1ZGRoYSBuYXR1cmU/XCJcbiAqICAgSm9zaHUgcmVwbGllZDogXCJNdS5cIlxuICpcbiAq
IFRoaXMgZnVuY3Rpb24gZGV0ZXJtaW5lcyBpZiBpdHMgYXJndW1lbnQgaGFzIFwiYXJyYXkgbmF0
dXJlXCI6IGl0IHJldHVybnNcbiAqIHRydWUgaWYgdGhlIGFyZ3VtZW50IGlzIGFuIGFjdHVhbCBh
cnJheSwgYW4gYGFyZ3VtZW50cycgb2JqZWN0LCBvciBhblxuICogSFRNTENvbGxlY3Rpb24gKGUu
Zy4gbm9kZS5jaGlsZE5vZGVzIG9yIG5vZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoKSkuXG4gKlxu
ICogSXQgd2lsbCByZXR1cm4gZmFsc2UgZm9yIG90aGVyIGFycmF5LWxpa2Ugb2JqZWN0cyBsaWtl
IEZpbGVsaXN0LlxuICpcbiAqIEBwYXJhbSB7Kn0gb2JqXG4gKiBAcmV0dXJuIHtib29sZWFufVxu
ICovXG5mdW5jdGlvbiBoYXNBcnJheU5hdHVyZShvYmopIHtcbiAgcmV0dXJuIChcbiAgICAvLyBu
b3QgbnVsbC9mYWxzZVxuICAgICEhb2JqICYmIChcbiAgICAvLyBhcnJheXMgYXJlIG9iamVjdHMs
IE5vZGVMaXN0cyBhcmUgZnVuY3Rpb25zIGluIFNhZmFyaVxuICAgIHR5cGVvZiBvYmogPT0gJ29i
amVjdCcgfHwgdHlwZW9mIG9iaiA9PSAnZnVuY3Rpb24nKSAmJlxuICAgIC8vIHF1YWNrcyBsaWtl
IGFuIGFycmF5XG4gICAgJ2xlbmd0aCcgaW4gb2JqICYmXG4gICAgLy8gbm90IHdpbmRvd1xuICAg
ICEoJ3NldEludGVydmFsJyBpbiBvYmopICYmXG4gICAgLy8gbm8gRE9NIG5vZGUgc2hvdWxkIGJl
IGNvbnNpZGVyZWQgYW4gYXJyYXktbGlrZVxuICAgIC8vIGEgJ3NlbGVjdCcgZWxlbWVudCBoYXMg
J2xlbmd0aCcgYW5kICdpdGVtJyBwcm9wZXJ0aWVzIG9uIElFOFxuICAgIHR5cGVvZiBvYmoubm9k
ZVR5cGUgIT0gJ251bWJlcicgJiYgKFxuICAgIC8vIGEgcmVhbCBhcnJheVxuICAgIEFycmF5Lmlz
QXJyYXkob2JqKSB8fFxuICAgIC8vIGFyZ3VtZW50c1xuICAgICdjYWxsZWUnIGluIG9iaiB8fFxu
ICAgIC8vIEhUTUxDb2xsZWN0aW9uL05vZGVMaXN0XG4gICAgJ2l0ZW0nIGluIG9iailcbiAgKTtc
bn1cblxuLyoqXG4gKiBFbnN1cmUgdGhhdCB0aGUgYXJndW1lbnQgaXMgYW4gYXJyYXkgYnkgd3Jh
cHBpbmcgaXQgaW4gYW4gYXJyYXkgaWYgaXQgaXMgbm90LlxuICogQ3JlYXRlcyBhIGNvcHkgb2Yg
dGhlIGFyZ3VtZW50IGlmIGl0IGlzIGFscmVhZHkgYW4gYXJyYXkuXG4gKlxuICogVGhpcyBpcyBt
b3N0bHkgdXNlZnVsIGlkaW9tYXRpY2FsbHk6XG4gKlxuICogICB2YXIgY3JlYXRlQXJyYXlGcm9t
TWl4ZWQgPSByZXF1aXJlKCdjcmVhdGVBcnJheUZyb21NaXhlZCcpO1xuICpcbiAqICAgZnVuY3Rp
b24gdGFrZXNPbmVPck1vcmVUaGluZ3ModGhpbmdzKSB7XG4gKiAgICAgdGhpbmdzID0gY3JlYXRl
QXJyYXlGcm9tTWl4ZWQodGhpbmdzKTtcbiAqICAgICAuLi5cbiAqICAgfVxuICpcbiAqIFRoaXMg
YWxsb3dzIHlvdSB0byB0cmVhdCBgdGhpbmdzJyBhcyBhbiBhcnJheSwgYnV0IGFjY2VwdCBzY2Fs
YXJzIGluIHRoZSBBUEkuXG4gKlxuICogSWYgeW91IG5lZWQgdG8gY29udmVydCBhbiBhcnJheS1s
aWtlIG9iamVjdCwgbGlrZSBgYXJndW1lbnRzYCwgaW50byBhbiBhcnJheVxuICogdXNlIHRvQXJy
YXkgaW5zdGVhZC5cbiAqXG4gKiBAcGFyYW0geyp9IG9ialxuICogQHJldHVybiB7YXJyYXl9XG4g
Ki9cbmZ1bmN0aW9uIGNyZWF0ZUFycmF5RnJvbU1peGVkKG9iaikge1xuICBpZiAoIWhhc0FycmF5
TmF0dXJlKG9iaikpIHtcbiAgICByZXR1cm4gW29ial07XG4gIH0gZWxzZSBpZiAoQXJyYXkuaXNB
cnJheShvYmopKSB7XG4gICAgcmV0dXJuIG9iai5zbGljZSgpO1xuICB9IGVsc2Uge1xuICAgIHJl
dHVybiB0b0FycmF5KG9iaik7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVBcnJh
eUZyb21NaXhlZDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxu
ICoqIC4vfi9mYmpzL2xpYi9jcmVhdGVBcnJheUZyb21NaXhlZC5qc1xuICoqIG1vZHVsZSBpZCA9
IDEwMVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipc
biAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJp
Z2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHR5cGVjaGVja3NcbiAqL1xuXG4vKmVzbGlu
dC1kaXNhYmxlIGZiLXd3dy91bnNhZmUtaHRtbCovXG5cbnZhciBFeGVjdXRpb25FbnZpcm9ubWVu
dCA9IHJlcXVpcmUoJy4vRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcblxudmFyIGNyZWF0ZUFycmF5
RnJvbU1peGVkID0gcmVxdWlyZSgnLi9jcmVhdGVBcnJheUZyb21NaXhlZCcpO1xudmFyIGdldE1h
cmt1cFdyYXAgPSByZXF1aXJlKCcuL2dldE1hcmt1cFdyYXAnKTtcbnZhciBpbnZhcmlhbnQgPSBy
ZXF1aXJlKCcuL2ludmFyaWFudCcpO1xuXG4vKipcbiAqIER1bW15IGNvbnRhaW5lciB1c2VkIHRv
IHJlbmRlciBhbGwgbWFya3VwLlxuICovXG52YXIgZHVtbXlOb2RlID0gRXhlY3V0aW9uRW52aXJv
bm1lbnQuY2FuVXNlRE9NID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykgOiBudWxsO1xu
XG4vKipcbiAqIFBhdHRlcm4gdXNlZCBieSBgZ2V0Tm9kZU5hbWVgLlxuICovXG52YXIgbm9kZU5h
bWVQYXR0ZXJuID0gL15cXHMqPChcXHcrKS87XG5cbi8qKlxuICogRXh0cmFjdHMgdGhlIGBub2Rl
TmFtZWAgb2YgdGhlIGZpcnN0IGVsZW1lbnQgaW4gYSBzdHJpbmcgb2YgbWFya3VwLlxuICpcbiAq
IEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgU3RyaW5nIG9mIG1hcmt1cC5cbiAqIEByZXR1cm4gez9z
dHJpbmd9IE5vZGUgbmFtZSBvZiB0aGUgc3VwcGxpZWQgbWFya3VwLlxuICovXG5mdW5jdGlvbiBn
ZXROb2RlTmFtZShtYXJrdXApIHtcbiAgdmFyIG5vZGVOYW1lTWF0Y2ggPSBtYXJrdXAubWF0Y2go
bm9kZU5hbWVQYXR0ZXJuKTtcbiAgcmV0dXJuIG5vZGVOYW1lTWF0Y2ggJiYgbm9kZU5hbWVNYXRj
aFsxXS50b0xvd2VyQ2FzZSgpO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXJyYXkgY29udGFp
bmluZyB0aGUgbm9kZXMgcmVuZGVyZWQgZnJvbSB0aGUgc3VwcGxpZWQgbWFya3VwLiBUaGVcbiAq
IG9wdGlvbmFsbHkgc3VwcGxpZWQgYGhhbmRsZVNjcmlwdGAgZnVuY3Rpb24gd2lsbCBiZSBpbnZv
a2VkIG9uY2UgZm9yIGVhY2hcbiAqIDxzY3JpcHQ+IGVsZW1lbnQgdGhhdCBpcyByZW5kZXJlZC4g
SWYgbm8gYGhhbmRsZVNjcmlwdGAgZnVuY3Rpb24gaXMgc3VwcGxpZWQsXG4gKiBhbiBleGNlcHRp
b24gaXMgdGhyb3duIGlmIGFueSA8c2NyaXB0PiBlbGVtZW50cyBhcmUgcmVuZGVyZWQuXG4gKlxu
ICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBBIHN0cmluZyBvZiB2YWxpZCBIVE1MIG1hcmt1cC5c
biAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBoYW5kbGVTY3JpcHQgSW52b2tlZCBvbmNlIGZvciBlYWNo
IHJlbmRlcmVkIDxzY3JpcHQ+LlxuICogQHJldHVybiB7YXJyYXk8RE9NRWxlbWVudHxET01UZXh0
Tm9kZT59IEFuIGFycmF5IG9mIHJlbmRlcmVkIG5vZGVzLlxuICovXG5mdW5jdGlvbiBjcmVhdGVO
b2Rlc0Zyb21NYXJrdXAobWFya3VwLCBoYW5kbGVTY3JpcHQpIHtcbiAgdmFyIG5vZGUgPSBkdW1t
eU5vZGU7XG4gICEhIWR1bW15Tm9kZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdjcmVhdGVOb2Rlc0Zyb21NYXJrdXAgZHVtbXkgbm90
IGluaXRpYWxpemVkJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICB2YXIgbm9kZU5h
bWUgPSBnZXROb2RlTmFtZShtYXJrdXApO1xuXG4gIHZhciB3cmFwID0gbm9kZU5hbWUgJiYgZ2V0
TWFya3VwV3JhcChub2RlTmFtZSk7XG4gIGlmICh3cmFwKSB7XG4gICAgbm9kZS5pbm5lckhUTUwg
PSB3cmFwWzFdICsgbWFya3VwICsgd3JhcFsyXTtcblxuICAgIHZhciB3cmFwRGVwdGggPSB3cmFw
WzBdO1xuICAgIHdoaWxlICh3cmFwRGVwdGgtLSkge1xuICAgICAgbm9kZSA9IG5vZGUubGFzdENo
aWxkO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBub2RlLmlubmVySFRNTCA9IG1hcmt1cDtcbiAg
fVxuXG4gIHZhciBzY3JpcHRzID0gbm9kZS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0Jyk7
XG4gIGlmIChzY3JpcHRzLmxlbmd0aCkge1xuICAgICFoYW5kbGVTY3JpcHQgPyBwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnY3JlYXRlTm9k
ZXNGcm9tTWFya3VwKC4uLik6IFVuZXhwZWN0ZWQgPHNjcmlwdD4gZWxlbWVudCByZW5kZXJlZC4n
KSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gICAgY3JlYXRlQXJyYXlGcm9tTWl4ZWQo
c2NyaXB0cykuZm9yRWFjaChoYW5kbGVTY3JpcHQpO1xuICB9XG5cbiAgdmFyIG5vZGVzID0gQXJy
YXkuZnJvbShub2RlLmNoaWxkTm9kZXMpO1xuICB3aGlsZSAobm9kZS5sYXN0Q2hpbGQpIHtcbiAg
ICBub2RlLnJlbW92ZUNoaWxkKG5vZGUubGFzdENoaWxkKTtcbiAgfVxuICByZXR1cm4gbm9kZXM7
XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY3JlYXRlTm9kZXNGcm9tTWFya3VwO1xuXG5cbi8qKioq
KioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2ZianMvbGliL2NyZWF0
ZU5vZGVzRnJvbU1hcmt1cC5qc1xuICoqIG1vZHVsZSBpZCA9IDEwMlxuICoqIG1vZHVsZSBjaHVu
a3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4g
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG4gKlxuICovXG5cbi8qZXNsaW50LWRpc2FibGUgZmItd3d3L3Vuc2FmZS1odG1sICovXG5cbnZh
ciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJy4vRXhlY3V0aW9uRW52aXJvbm1lbnQn
KTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJy4vaW52YXJpYW50Jyk7XG5cbi8qKlxuICog
RHVtbXkgY29udGFpbmVyIHVzZWQgdG8gZGV0ZWN0IHdoaWNoIHdyYXBzIGFyZSBuZWNlc3Nhcnku
XG4gKi9cbnZhciBkdW1teU5vZGUgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gPyBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSA6IG51bGw7XG5cbi8qKlxuICogU29tZSBicm93
c2VycyBjYW5ub3QgdXNlIGBpbm5lckhUTUxgIHRvIHJlbmRlciBjZXJ0YWluIGVsZW1lbnRzIHN0
YW5kYWxvbmUsXG4gKiBzbyB3ZSB3cmFwIHRoZW0sIHJlbmRlciB0aGUgd3JhcHBlZCBub2Rlcywg
dGhlbiBleHRyYWN0IHRoZSBkZXNpcmVkIG5vZGUuXG4gKlxuICogSW4gSUU4LCBjZXJ0YWluIGVs
ZW1lbnRzIGNhbm5vdCByZW5kZXIgYWxvbmUsIHNvIHdyYXAgYWxsIGVsZW1lbnRzICgnKicpLlxu
ICovXG5cbnZhciBzaG91bGRXcmFwID0ge307XG5cbnZhciBzZWxlY3RXcmFwID0gWzEsICc8c2Vs
ZWN0IG11bHRpcGxlPVwidHJ1ZVwiPicsICc8L3NlbGVjdD4nXTtcbnZhciB0YWJsZVdyYXAgPSBb
MSwgJzx0YWJsZT4nLCAnPC90YWJsZT4nXTtcbnZhciB0cldyYXAgPSBbMywgJzx0YWJsZT48dGJv
ZHk+PHRyPicsICc8L3RyPjwvdGJvZHk+PC90YWJsZT4nXTtcblxudmFyIHN2Z1dyYXAgPSBbMSwg
JzxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPicsICc8L3N2Zz4nXTtc
blxudmFyIG1hcmt1cFdyYXAgPSB7XG4gICcqJzogWzEsICc/PGRpdj4nLCAnPC9kaXY+J10sXG5c
biAgJ2FyZWEnOiBbMSwgJzxtYXA+JywgJzwvbWFwPiddLFxuICAnY29sJzogWzIsICc8dGFibGU+
PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPicsICc8L2NvbGdyb3VwPjwvdGFibGU+J10sXG4gICds
ZWdlbmQnOiBbMSwgJzxmaWVsZHNldD4nLCAnPC9maWVsZHNldD4nXSxcbiAgJ3BhcmFtJzogWzEs
ICc8b2JqZWN0PicsICc8L29iamVjdD4nXSxcbiAgJ3RyJzogWzIsICc8dGFibGU+PHRib2R5Pics
ICc8L3Rib2R5PjwvdGFibGU+J10sXG5cbiAgJ29wdGdyb3VwJzogc2VsZWN0V3JhcCxcbiAgJ29w
dGlvbic6IHNlbGVjdFdyYXAsXG5cbiAgJ2NhcHRpb24nOiB0YWJsZVdyYXAsXG4gICdjb2xncm91
cCc6IHRhYmxlV3JhcCxcbiAgJ3Rib2R5JzogdGFibGVXcmFwLFxuICAndGZvb3QnOiB0YWJsZVdy
YXAsXG4gICd0aGVhZCc6IHRhYmxlV3JhcCxcblxuICAndGQnOiB0cldyYXAsXG4gICd0aCc6IHRy
V3JhcFxufTtcblxuLy8gSW5pdGlhbGl6ZSB0aGUgU1ZHIGVsZW1lbnRzIHNpbmNlIHdlIGtub3cg
dGhleSdsbCBhbHdheXMgbmVlZCB0byBiZSB3cmFwcGVkXG4vLyBjb25zaXN0ZW50bHkuIElmIHRo
ZXkgYXJlIGNyZWF0ZWQgaW5zaWRlIGEgPGRpdj4gdGhleSB3aWxsIGJlIGluaXRpYWxpemVkIGlu
XG4vLyB0aGUgd3JvbmcgbmFtZXNwYWNlIChhbmQgd2lsbCBub3QgZGlzcGxheSkuXG52YXIgc3Zn
RWxlbWVudHMgPSBbJ2NpcmNsZScsICdjbGlwUGF0aCcsICdkZWZzJywgJ2VsbGlwc2UnLCAnZycs
ICdpbWFnZScsICdsaW5lJywgJ2xpbmVhckdyYWRpZW50JywgJ21hc2snLCAncGF0aCcsICdwYXR0
ZXJuJywgJ3BvbHlnb24nLCAncG9seWxpbmUnLCAncmFkaWFsR3JhZGllbnQnLCAncmVjdCcsICdz
dG9wJywgJ3RleHQnLCAndHNwYW4nXTtcbnN2Z0VsZW1lbnRzLmZvckVhY2goZnVuY3Rpb24gKG5v
ZGVOYW1lKSB7XG4gIG1hcmt1cFdyYXBbbm9kZU5hbWVdID0gc3ZnV3JhcDtcbiAgc2hvdWxkV3Jh
cFtub2RlTmFtZV0gPSB0cnVlO1xufSk7XG5cbi8qKlxuICogR2V0cyB0aGUgbWFya3VwIHdyYXAg
Y29uZmlndXJhdGlvbiBmb3IgdGhlIHN1cHBsaWVkIGBub2RlTmFtZWAuXG4gKlxuICogTk9URTog
VGhpcyBsYXppbHkgZGV0ZWN0cyB3aGljaCB3cmFwcyBhcmUgbmVjZXNzYXJ5IGZvciB0aGUgY3Vy
cmVudCBicm93c2VyLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBub2RlTmFtZSBMb3dlcmNhc2Ug
YG5vZGVOYW1lYC5cbiAqIEByZXR1cm4gez9hcnJheX0gTWFya3VwIHdyYXAgY29uZmlndXJhdGlv
biwgaWYgYXBwbGljYWJsZS5cbiAqL1xuZnVuY3Rpb24gZ2V0TWFya3VwV3JhcChub2RlTmFtZSkg
e1xuICAhISFkdW1teU5vZGUgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ID8gaW52YXJpYW50KGZhbHNlLCAnTWFya3VwIHdyYXBwaW5nIG5vZGUgbm90IGluaXRpYWxpemVk
JykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICBpZiAoIW1hcmt1cFdyYXAuaGFzT3du
UHJvcGVydHkobm9kZU5hbWUpKSB7XG4gICAgbm9kZU5hbWUgPSAnKic7XG4gIH1cbiAgaWYgKCFz
aG91bGRXcmFwLmhhc093blByb3BlcnR5KG5vZGVOYW1lKSkge1xuICAgIGlmIChub2RlTmFtZSA9
PT0gJyonKSB7XG4gICAgICBkdW1teU5vZGUuaW5uZXJIVE1MID0gJzxsaW5rIC8+JztcbiAgICB9
IGVsc2Uge1xuICAgICAgZHVtbXlOb2RlLmlubmVySFRNTCA9ICc8JyArIG5vZGVOYW1lICsgJz48
LycgKyBub2RlTmFtZSArICc+JztcbiAgICB9XG4gICAgc2hvdWxkV3JhcFtub2RlTmFtZV0gPSAh
ZHVtbXlOb2RlLmZpcnN0Q2hpbGQ7XG4gIH1cbiAgcmV0dXJuIHNob3VsZFdyYXBbbm9kZU5hbWVd
ID8gbWFya3VwV3JhcFtub2RlTmFtZV0gOiBudWxsO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdl
dE1hcmt1cFdyYXA7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJc
biAqKiAuL34vZmJqcy9saWIvZ2V0TWFya3VwV3JhcC5qc1xuICoqIG1vZHVsZSBpZCA9IDEwM1xu
ICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
ICpcbiAqIEB0eXBlY2hlY2tzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEdldHMg
dGhlIHNjcm9sbCBwb3NpdGlvbiBvZiB0aGUgc3VwcGxpZWQgZWxlbWVudCBvciB3aW5kb3cuXG4g
KlxuICogVGhlIHJldHVybiB2YWx1ZXMgYXJlIHVuYm91bmRlZCwgdW5saWtlIGBnZXRTY3JvbGxQ
b3NpdGlvbmAuIFRoaXMgbWVhbnMgdGhleVxuICogbWF5IGJlIG5lZ2F0aXZlIG9yIGV4Y2VlZCB0
aGUgZWxlbWVudCBib3VuZGFyaWVzICh3aGljaCBpcyBwb3NzaWJsZSB1c2luZ1xuICogaW5lcnRp
YWwgc2Nyb2xsaW5nKS5cbiAqXG4gKiBAcGFyYW0ge0RPTVdpbmRvd3xET01FbGVtZW50fSBzY3Jv
bGxhYmxlXG4gKiBAcmV0dXJuIHtvYmplY3R9IE1hcCB3aXRoIGB4YCBhbmQgYHlgIGtleXMuXG4g
Ki9cblxuZnVuY3Rpb24gZ2V0VW5ib3VuZGVkU2Nyb2xsUG9zaXRpb24oc2Nyb2xsYWJsZSkge1xu
ICBpZiAoc2Nyb2xsYWJsZS5XaW5kb3cgJiYgc2Nyb2xsYWJsZSBpbnN0YW5jZW9mIHNjcm9sbGFi
bGUuV2luZG93KSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHg6IHNjcm9sbGFibGUucGFnZVhPZmZz
ZXQgfHwgc2Nyb2xsYWJsZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsTGVmdCxcbiAg
ICAgIHk6IHNjcm9sbGFibGUucGFnZVlPZmZzZXQgfHwgc2Nyb2xsYWJsZS5kb2N1bWVudC5kb2N1
bWVudEVsZW1lbnQuc2Nyb2xsVG9wXG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHg6IHNj
cm9sbGFibGUuc2Nyb2xsTGVmdCxcbiAgICB5OiBzY3JvbGxhYmxlLnNjcm9sbFRvcFxuICB9O1xu
fVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFVuYm91bmRlZFNjcm9sbFBvc2l0aW9uO1xuXG5cbi8q
KioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2ZianMvbGliL2dl
dFVuYm91bmRlZFNjcm9sbFBvc2l0aW9uLmpzXG4gKiogbW9kdWxlIGlkID0gMTA0XG4gKiogbW9k
dWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQ29weXJpZ2h0
IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cbiAqXG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbnZhciBfdXBwZXJjYXNlUGF0dGVy
biA9IC8oW0EtWl0pL2c7XG5cbi8qKlxuICogSHlwaGVuYXRlcyBhIGNhbWVsY2FzZWQgc3RyaW5n
LCBmb3IgZXhhbXBsZTpcbiAqXG4gKiAgID4gaHlwaGVuYXRlKCdiYWNrZ3JvdW5kQ29sb3InKVxu
ICogICA8IFwiYmFja2dyb3VuZC1jb2xvclwiXG4gKlxuICogRm9yIENTUyBzdHlsZSBuYW1lcywg
dXNlIGBoeXBoZW5hdGVTdHlsZU5hbWVgIGluc3RlYWQgd2hpY2ggd29ya3MgcHJvcGVybHlcbiAq
IHdpdGggYWxsIHZlbmRvciBwcmVmaXhlcywgaW5jbHVkaW5nIGBtc2AuXG4gKlxuICogQHBhcmFt
IHtzdHJpbmd9IHN0cmluZ1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBoeXBo
ZW5hdGUoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcucmVwbGFjZShfdXBwZXJjYXNlUGF0dGVy
biwgJy0kMScpLnRvTG93ZXJDYXNlKCk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaHlwaGVuYXRl
O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2Zi
anMvbGliL2h5cGhlbmF0ZS5qc1xuICoqIG1vZHVsZSBpZCA9IDEwNVxuICoqIG1vZHVsZSBjaHVu
a3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4g
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEB0eXBlY2hl
Y2tzXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgaHlwaGVuYXRlID0gcmVxdWlyZSgnLi9o
eXBoZW5hdGUnKTtcblxudmFyIG1zUGF0dGVybiA9IC9ebXMtLztcblxuLyoqXG4gKiBIeXBoZW5h
dGVzIGEgY2FtZWxjYXNlZCBDU1MgcHJvcGVydHkgbmFtZSwgZm9yIGV4YW1wbGU6XG4gKlxuICog
ICA+IGh5cGhlbmF0ZVN0eWxlTmFtZSgnYmFja2dyb3VuZENvbG9yJylcbiAqICAgPCBcImJhY2tn
cm91bmQtY29sb3JcIlxuICogICA+IGh5cGhlbmF0ZVN0eWxlTmFtZSgnTW96VHJhbnNpdGlvbicp
XG4gKiAgIDwgXCItbW96LXRyYW5zaXRpb25cIlxuICogICA+IGh5cGhlbmF0ZVN0eWxlTmFtZSgn
bXNUcmFuc2l0aW9uJylcbiAqICAgPCBcIi1tcy10cmFuc2l0aW9uXCJcbiAqXG4gKiBBcyBNb2Rl
cm5penIgc3VnZ2VzdHMgKGh0dHA6Ly9tb2Rlcm5penIuY29tL2RvY3MvI3ByZWZpeGVkKSwgYW4g
YG1zYCBwcmVmaXhcbiAqIGlzIGNvbnZlcnRlZCB0byBgLW1zLWAuXG4gKlxuICogQHBhcmFtIHtz
dHJpbmd9IHN0cmluZ1xuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBoeXBoZW5h
dGVTdHlsZU5hbWUoc3RyaW5nKSB7XG4gIHJldHVybiBoeXBoZW5hdGUoc3RyaW5nKS5yZXBsYWNl
KG1zUGF0dGVybiwgJy1tcy0nKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBoeXBoZW5hdGVTdHls
ZU5hbWU7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAu
L34vZmJqcy9saWIvaHlwaGVuYXRlU3R5bGVOYW1lLmpzXG4gKiogbW9kdWxlIGlkID0gMTA2XG4g
KiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbi8qKlxuICogQ29w
eXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbi8qKlxuICogQHBhcmFt
IHsqfSBvYmplY3QgVGhlIG9iamVjdCB0byBjaGVjay5cbiAqIEByZXR1cm4ge2Jvb2xlYW59IFdo
ZXRoZXIgb3Igbm90IHRoZSBvYmplY3QgaXMgYSBET00gbm9kZS5cbiAqL1xuZnVuY3Rpb24gaXNO
b2RlKG9iamVjdCkge1xuICB2YXIgZG9jID0gb2JqZWN0ID8gb2JqZWN0Lm93bmVyRG9jdW1lbnQg
fHwgb2JqZWN0IDogZG9jdW1lbnQ7XG4gIHZhciBkZWZhdWx0VmlldyA9IGRvYy5kZWZhdWx0Vmll
dyB8fCB3aW5kb3c7XG4gIHJldHVybiAhIShvYmplY3QgJiYgKHR5cGVvZiBkZWZhdWx0Vmlldy5O
b2RlID09PSAnZnVuY3Rpb24nID8gb2JqZWN0IGluc3RhbmNlb2YgZGVmYXVsdFZpZXcuTm9kZSA6
IHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmIHR5cGVvZiBvYmplY3Qubm9kZVR5cGUgPT09
ICdudW1iZXInICYmIHR5cGVvZiBvYmplY3Qubm9kZU5hbWUgPT09ICdzdHJpbmcnKSk7XG59XG5c
bm1vZHVsZS5leHBvcnRzID0gaXNOb2RlO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdF
QlBBQ0sgRk9PVEVSXG4gKiogLi9+L2ZianMvbGliL2lzTm9kZS5qc1xuICoqIG1vZHVsZSBpZCA9
IDEwN1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipc
biAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJp
Z2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHR5cGVjaGVja3NcbiAqL1xuXG52YXIgaXNO
b2RlID0gcmVxdWlyZSgnLi9pc05vZGUnKTtcblxuLyoqXG4gKiBAcGFyYW0geyp9IG9iamVjdCBU
aGUgb2JqZWN0IHRvIGNoZWNrLlxuICogQHJldHVybiB7Ym9vbGVhbn0gV2hldGhlciBvciBub3Qg
dGhlIG9iamVjdCBpcyBhIERPTSB0ZXh0IG5vZGUuXG4gKi9cbmZ1bmN0aW9uIGlzVGV4dE5vZGUo
b2JqZWN0KSB7XG4gIHJldHVybiBpc05vZGUob2JqZWN0KSAmJiBvYmplY3Qubm9kZVR5cGUgPT0g
Mztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc1RleHROb2RlO1xuXG5cbi8qKioqKioqKioqKioq
KioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2ZianMvbGliL2lzVGV4dE5vZGUuanNc
biAqKiBtb2R1bGUgaWQgPSAxMDhcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxu
ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5
XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIE1lbW9pemVzIHRoZSByZXR1cm4gdmFs
dWUgb2YgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgb25lIHN0cmluZyBhcmd1bWVudC5cbiAqL1xu
XG5mdW5jdGlvbiBtZW1vaXplU3RyaW5nT25seShjYWxsYmFjaykge1xuICB2YXIgY2FjaGUgPSB7
fTtcbiAgcmV0dXJuIGZ1bmN0aW9uIChzdHJpbmcpIHtcbiAgICBpZiAoIWNhY2hlLmhhc093blBy
b3BlcnR5KHN0cmluZykpIHtcbiAgICAgIGNhY2hlW3N0cmluZ10gPSBjYWxsYmFjay5jYWxsKHRo
aXMsIHN0cmluZyk7XG4gICAgfVxuICAgIHJldHVybiBjYWNoZVtzdHJpbmddO1xuICB9O1xufVxu
XG5tb2R1bGUuZXhwb3J0cyA9IG1lbW9pemVTdHJpbmdPbmx5O1xuXG5cbi8qKioqKioqKioqKioq
KioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2ZianMvbGliL21lbW9pemVTdHJpbmdP
bmx5LmpzXG4gKiogbW9kdWxlIGlkID0gMTA5XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8i
LCIvKipcbiAqIENvcHlyaWdodCAyMDE1LCBZYWhvbyEgSW5jLlxuICogQ29weXJpZ2h0cyBsaWNl
bnNlZCB1bmRlciB0aGUgTmV3IEJTRCBMaWNlbnNlLiBTZWUgdGhlIGFjY29tcGFueWluZyBMSUNF
TlNFIGZpbGUgZm9yIHRlcm1zLlxuICovXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSRUFDVF9TVEFU
SUNTID0ge1xuICAgIGNoaWxkQ29udGV4dFR5cGVzOiB0cnVlLFxuICAgIGNvbnRleHRUeXBlczog
dHJ1ZSxcbiAgICBkZWZhdWx0UHJvcHM6IHRydWUsXG4gICAgZGlzcGxheU5hbWU6IHRydWUsXG4g
ICAgZ2V0RGVmYXVsdFByb3BzOiB0cnVlLFxuICAgIG1peGluczogdHJ1ZSxcbiAgICBwcm9wVHlw
ZXM6IHRydWUsXG4gICAgdHlwZTogdHJ1ZVxufTtcblxudmFyIEtOT1dOX1NUQVRJQ1MgPSB7XG4g
IG5hbWU6IHRydWUsXG4gIGxlbmd0aDogdHJ1ZSxcbiAgcHJvdG90eXBlOiB0cnVlLFxuICBjYWxs
ZXI6IHRydWUsXG4gIGNhbGxlZTogdHJ1ZSxcbiAgYXJndW1lbnRzOiB0cnVlLFxuICBhcml0eTog
dHJ1ZVxufTtcblxudmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eVN5bWJvbHM7XG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093
blByb3BlcnR5O1xudmFyIHByb3BJc0VudW1lcmFibGUgPSBPYmplY3QucHJvdG90eXBlLnByb3Bl
cnR5SXNFbnVtZXJhYmxlO1xudmFyIGdldFByb3RvdHlwZU9mID0gT2JqZWN0LmdldFByb3RvdHlw
ZU9mO1xudmFyIG9iamVjdFByb3RvdHlwZSA9IGdldFByb3RvdHlwZU9mICYmIGdldFByb3RvdHlw
ZU9mKE9iamVjdCk7XG52YXIgZ2V0T3duUHJvcGVydHlOYW1lcyA9IE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eU5hbWVzO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGhvaXN0Tm9uUmVhY3RTdGF0
aWNzKHRhcmdldENvbXBvbmVudCwgc291cmNlQ29tcG9uZW50LCBibGFja2xpc3QpIHtcbiAgICBp
ZiAodHlwZW9mIHNvdXJjZUNvbXBvbmVudCAhPT0gJ3N0cmluZycpIHsgLy8gZG9uJ3QgaG9pc3Qg
b3ZlciBzdHJpbmcgKGh0bWwpIGNvbXBvbmVudHNcblxuICAgICAgICBpZiAob2JqZWN0UHJvdG90
eXBlKSB7XG4gICAgICAgICAgICB2YXIgaW5oZXJpdGVkQ29tcG9uZW50ID0gZ2V0UHJvdG90eXBl
T2Yoc291cmNlQ29tcG9uZW50KTtcbiAgICAgICAgICAgIGlmIChpbmhlcml0ZWRDb21wb25lbnQg
JiYgaW5oZXJpdGVkQ29tcG9uZW50ICE9PSBvYmplY3RQcm90b3R5cGUpIHtcbiAgICAgICAgICAg
ICAgICBob2lzdE5vblJlYWN0U3RhdGljcyh0YXJnZXRDb21wb25lbnQsIGluaGVyaXRlZENvbXBv
bmVudCwgYmxhY2tsaXN0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHZh
ciBrZXlzID0gZ2V0T3duUHJvcGVydHlOYW1lcyhzb3VyY2VDb21wb25lbnQpO1xuXG4gICAgICAg
IGlmIChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcbiAgICAgICAgICAgIGtleXMgPSBrZXlzLmNv
bmNhdChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlQ29tcG9uZW50KSk7XG4gICAgICAgIH1c
blxuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyArK2kpIHtcbiAgICAg
ICAgICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAgICAgICAgICAgaWYgKCFSRUFDVF9TVEFUSUNT
W2tleV0gJiYgIUtOT1dOX1NUQVRJQ1Nba2V5XSAmJiAoIWJsYWNrbGlzdCB8fCAhYmxhY2tsaXN0
W2tleV0pKSB7XG4gICAgICAgICAgICAgICAgLy8gT25seSBob2lzdCBlbnVtZXJhYmxlcyBhbmQg
bm9uLWVudW1lcmFibGUgZnVuY3Rpb25zXG4gICAgICAgICAgICAgICAgaWYocHJvcElzRW51bWVy
YWJsZS5jYWxsKHNvdXJjZUNvbXBvbmVudCwga2V5KSB8fCB0eXBlb2Ygc291cmNlQ29tcG9uZW50
W2tleV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICAgICAgdHJ5IHsgLy8gQXZv
aWQgZmFpbHVyZXMgZnJvbSByZWFkLW9ubHkgcHJvcGVydGllc1xuICAgICAgICAgICAgICAgICAg
ICAgICAgdGFyZ2V0Q29tcG9uZW50W2tleV0gPSBzb3VyY2VDb21wb25lbnRba2V5XTtcbiAgICAg
ICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgICAgICAgICB9XG4gICAgICAg
ICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGFyZ2V0Q29tcG9uZW50O1xuICAg
IH1cblxuICAgIHJldHVybiB0YXJnZXRDb21wb25lbnQ7XG59O1xuXG5cblxuLyoqKioqKioqKioq
KioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vaG9pc3Qtbm9uLXJlYWN0LXN0YXRp
Y3MvaW5kZXguanNcbiAqKiBtb2R1bGUgaWQgPSAxMTBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxu
ICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4g
KiBVc2UgaW52YXJpYW50KCkgdG8gYXNzZXJ0IHN0YXRlIHdoaWNoIHlvdXIgcHJvZ3JhbSBhc3N1
bWVzIHRvIGJlIHRydWUuXG4gKlxuICogUHJvdmlkZSBzcHJpbnRmLXN0eWxlIGZvcm1hdCAob25s
eSAlcyBpcyBzdXBwb3J0ZWQpIGFuZCBhcmd1bWVudHNcbiAqIHRvIHByb3ZpZGUgaW5mb3JtYXRp
b24gYWJvdXQgd2hhdCBicm9rZSBhbmQgd2hhdCB5b3Ugd2VyZVxuICogZXhwZWN0aW5nLlxuICpc
biAqIFRoZSBpbnZhcmlhbnQgbWVzc2FnZSB3aWxsIGJlIHN0cmlwcGVkIGluIHByb2R1Y3Rpb24s
IGJ1dCB0aGUgaW52YXJpYW50XG4gKiB3aWxsIHJlbWFpbiB0byBlbnN1cmUgbG9naWMgZG9lcyBu
b3QgZGlmZmVyIGluIHByb2R1Y3Rpb24uXG4gKi9cblxudmFyIGludmFyaWFudCA9IGZ1bmN0aW9u
KGNvbmRpdGlvbiwgZm9ybWF0LCBhLCBiLCBjLCBkLCBlLCBmKSB7XG4gIGlmIChwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZp
bmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFyaWFudCByZXF1aXJlcyBhbiBlcnJv
ciBtZXNzYWdlIGFyZ3VtZW50Jyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKCFjb25kaXRpb24pIHtc
biAgICB2YXIgZXJyb3I7XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBl
cnJvciA9IG5ldyBFcnJvcihcbiAgICAgICAgJ01pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1cnJlZDsg
dXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50ICcgK1xuICAgICAgICAnZm9yIHRo
ZSBmdWxsIGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4nXG4g
ICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgYXJncyA9IFthLCBiLCBjLCBkLCBlLCBm
XTtcbiAgICAgIHZhciBhcmdJbmRleCA9IDA7XG4gICAgICBlcnJvciA9IG5ldyBFcnJvcihcbiAg
ICAgICAgZm9ybWF0LnJlcGxhY2UoLyVzL2csIGZ1bmN0aW9uKCkgeyByZXR1cm4gYXJnc1thcmdJ
bmRleCsrXTsgfSlcbiAgICAgICk7XG4gICAgICBlcnJvci5uYW1lID0gJ0ludmFyaWFudCBWaW9s
YXRpb24nO1xuICAgIH1cblxuICAgIGVycm9yLmZyYW1lc1RvUG9wID0gMTsgLy8gd2UgZG9uJ3Qg
Y2FyZSBhYm91dCBpbnZhcmlhbnQncyBvd24gZnJhbWVcbiAgICB0aHJvdyBlcnJvcjtcbiAgfVxu
fTtcblxubW9kdWxlLmV4cG9ydHMgPSBpbnZhcmlhbnQ7XG5cblxuXG4vKioqKioqKioqKioqKioq
KipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9pbnZhcmlhbnQvYnJvd3Nlci5qc1xuICoq
IG1vZHVsZSBpZCA9IDExMVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIFN5bWJv
bCA9IHJlcXVpcmUoJy4vX1N5bWJvbCcpLFxuICAgIGdldFJhd1RhZyA9IHJlcXVpcmUoJy4vX2dl
dFJhd1RhZycpLFxuICAgIG9iamVjdFRvU3RyaW5nID0gcmVxdWlyZSgnLi9fb2JqZWN0VG9TdHJp
bmcnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAqL1xudmFy
IG51bGxUYWcgPSAnW29iamVjdCBOdWxsXScsXG4gICAgdW5kZWZpbmVkVGFnID0gJ1tvYmplY3Qg
VW5kZWZpbmVkXSc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIHN5
bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5kZWZpbmVkO1xu
XG4vKipcbiAqIFRoZSBiYXNlIGltcGxlbWVudGF0aW9uIG9mIGBnZXRUYWdgIHdpdGhvdXQgZmFs
bGJhY2tzIGZvciBidWdneSBlbnZpcm9ubWVudHMuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJh
bSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMge3N0cmluZ30gUmV0
dXJucyB0aGUgYHRvU3RyaW5nVGFnYC5cbiAqL1xuZnVuY3Rpb24gYmFzZUdldFRhZyh2YWx1ZSkg
e1xuICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgIHJldHVybiB2YWx1ZSA9PT0gdW5kZWZpbmVk
ID8gdW5kZWZpbmVkVGFnIDogbnVsbFRhZztcbiAgfVxuICByZXR1cm4gKHN5bVRvU3RyaW5nVGFn
ICYmIHN5bVRvU3RyaW5nVGFnIGluIE9iamVjdCh2YWx1ZSkpXG4gICAgPyBnZXRSYXdUYWcodmFs
dWUpXG4gICAgOiBvYmplY3RUb1N0cmluZyh2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0g
YmFzZUdldFRhZztcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVS
XG4gKiogLi9+L2xvZGFzaC9fYmFzZUdldFRhZy5qc1xuICoqIG1vZHVsZSBpZCA9IDExMlxuICoq
IG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBnbG9i
YWxgIGZyb20gTm9kZS5qcy4gKi9cbnZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAn
b2JqZWN0JyAmJiBnbG9iYWwgJiYgZ2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0ICYmIGdsb2JhbDtc
blxubW9kdWxlLmV4cG9ydHMgPSBmcmVlR2xvYmFsO1xuXG5cblxuLyoqKioqKioqKioqKioqKioq
XG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19mcmVlR2xvYmFsLmpzXG4gKiog
bW9kdWxlIGlkID0gMTEzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgb3ZlckFy
ZyA9IHJlcXVpcmUoJy4vX292ZXJBcmcnKTtcblxuLyoqIEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5j
ZXMuICovXG52YXIgZ2V0UHJvdG90eXBlID0gb3ZlckFyZyhPYmplY3QuZ2V0UHJvdG90eXBlT2Ys
IE9iamVjdCk7XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0UHJvdG90eXBlO1xuXG5cblxuLyoqKioq
KioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL19nZXRQcm90
b3R5cGUuanNcbiAqKiBtb2R1bGUgaWQgPSAxMTRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoq
LyIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKTtcblxuLyoqIFVzZWQgZm9yIGJ1
aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnBy
b3RvdHlwZTtcblxuLyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMu
ICovXG52YXIgaGFzT3duUHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxu
LyoqXG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2Vj
bWEtaW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50
b3N0cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0g
b2JqZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAq
L1xudmFyIHN5bVRvU3RyaW5nVGFnID0gU3ltYm9sID8gU3ltYm9sLnRvU3RyaW5nVGFnIDogdW5k
ZWZpbmVkO1xuXG4vKipcbiAqIEEgc3BlY2lhbGl6ZWQgdmVyc2lvbiBvZiBgYmFzZUdldFRhZ2Ag
d2hpY2ggaWdub3JlcyBgU3ltYm9sLnRvU3RyaW5nVGFnYCB2YWx1ZXMuXG4gKlxuICogQHByaXZh
dGVcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIHF1ZXJ5LlxuICogQHJldHVybnMg
e3N0cmluZ30gUmV0dXJucyB0aGUgcmF3IGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0aW9uIGdl
dFJhd1RhZyh2YWx1ZSkge1xuICB2YXIgaXNPd24gPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVl
LCBzeW1Ub1N0cmluZ1RhZyksXG4gICAgICB0YWcgPSB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ107XG5c
biAgdHJ5IHtcbiAgICB2YWx1ZVtzeW1Ub1N0cmluZ1RhZ10gPSB1bmRlZmluZWQ7XG4gICAgdmFy
IHVubWFza2VkID0gdHJ1ZTtcbiAgfSBjYXRjaCAoZSkge31cblxuICB2YXIgcmVzdWx0ID0gbmF0
aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1ZSk7XG4gIGlmICh1bm1hc2tlZCkge1xuICAgIGlm
IChpc093bikge1xuICAgICAgdmFsdWVbc3ltVG9TdHJpbmdUYWddID0gdGFnO1xuICAgIH0gZWxz
ZSB7XG4gICAgICBkZWxldGUgdmFsdWVbc3ltVG9TdHJpbmdUYWddO1xuICAgIH1cbiAgfVxuICBy
ZXR1cm4gcmVzdWx0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFJhd1RhZztcblxuXG5cbi8q
KioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fZ2V0
UmF3VGFnLmpzXG4gKiogbW9kdWxlIGlkID0gMTE1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAq
Ki8iLCIvKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgb2Jq
ZWN0UHJvdG8gPSBPYmplY3QucHJvdG90eXBlO1xuXG4vKipcbiAqIFVzZWQgdG8gcmVzb2x2ZSB0
aGVcbiAqIFtgdG9TdHJpbmdUYWdgXShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21h
LTI2Mi83LjAvI3NlYy1vYmplY3QucHJvdG90eXBlLnRvc3RyaW5nKVxuICogb2YgdmFsdWVzLlxu
ICovXG52YXIgbmF0aXZlT2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblxu
LyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIHVzaW5nIGBPYmplY3QucHJvdG90
eXBlLnRvU3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUg
dmFsdWUgdG8gY29udmVydC5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGNvbnZl
cnRlZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKHZhbHVlKSB7XG4gIHJl
dHVybiBuYXRpdmVPYmplY3RUb1N0cmluZy5jYWxsKHZhbHVlKTtcbn1cblxubW9kdWxlLmV4cG9y
dHMgPSBvYmplY3RUb1N0cmluZztcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBB
Q0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fb2JqZWN0VG9TdHJpbmcuanNcbiAqKiBtb2R1bGUg
aWQgPSAxMTZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ3JlYXRlcyBh
IHVuYXJ5IGZ1bmN0aW9uIHRoYXQgaW52b2tlcyBgZnVuY2Agd2l0aCBpdHMgYXJndW1lbnQgdHJh
bnNmb3JtZWQuXG4gKlxuICogQHByaXZhdGVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhl
IGZ1bmN0aW9uIHRvIHdyYXAuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSB0cmFuc2Zvcm0gVGhlIGFy
Z3VtZW50IHRyYW5zZm9ybS5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3
IGZ1bmN0aW9uLlxuICovXG5mdW5jdGlvbiBvdmVyQXJnKGZ1bmMsIHRyYW5zZm9ybSkge1xuICBy
ZXR1cm4gZnVuY3Rpb24oYXJnKSB7XG4gICAgcmV0dXJuIGZ1bmModHJhbnNmb3JtKGFyZykpO1xu
ICB9O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IG92ZXJBcmc7XG5cblxuXG4vKioqKioqKioqKioq
KioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX292ZXJBcmcuanNcbiAq
KiBtb2R1bGUgaWQgPSAxMTdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsInZhciBmcmVl
R2xvYmFsID0gcmVxdWlyZSgnLi9fZnJlZUdsb2JhbCcpO1xuXG4vKiogRGV0ZWN0IGZyZWUgdmFy
aWFibGUgYHNlbGZgLiAqL1xudmFyIGZyZWVTZWxmID0gdHlwZW9mIHNlbGYgPT0gJ29iamVjdCcg
JiYgc2VsZiAmJiBzZWxmLk9iamVjdCA9PT0gT2JqZWN0ICYmIHNlbGY7XG5cbi8qKiBVc2VkIGFz
IGEgcmVmZXJlbmNlIHRvIHRoZSBnbG9iYWwgb2JqZWN0LiAqL1xudmFyIHJvb3QgPSBmcmVlR2xv
YmFsIHx8IGZyZWVTZWxmIHx8IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cbm1vZHVsZS5l
eHBvcnRzID0gcm9vdDtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9P
VEVSXG4gKiogLi9+L2xvZGFzaC9fcm9vdC5qc1xuICoqIG1vZHVsZSBpZCA9IDExOFxuICoqIG1v
ZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDaGVja3MgaWYgYHZhbHVlYCBpcyBvYmpl
Y3QtbGlrZS4gQSB2YWx1ZSBpcyBvYmplY3QtbGlrZSBpZiBpdCdzIG5vdCBgbnVsbGBcbiAqIGFu
ZCBoYXMgYSBgdHlwZW9mYCByZXN1bHQgb2YgXCJvYmplY3RcIi5cbiAqXG4gKiBAc3RhdGljXG4g
KiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDQuMC4wXG4gKiBAY2F0ZWdvcnkgTGFuZ1xuICogQHBh
cmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4gKiBAcmV0dXJucyB7Ym9vbGVhbn0g
UmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBvYmplY3QtbGlrZSwgZWxzZSBgZmFsc2VgLlxu
ICogQGV4YW1wbGVcbiAqXG4gKiBfLmlzT2JqZWN0TGlrZSh7fSk7XG4gKiAvLyA9PiB0cnVlXG4g
KlxuICogXy5pc09iamVjdExpa2UoWzEsIDIsIDNdKTtcbiAqIC8vID0+IHRydWVcbiAqXG4gKiBf
LmlzT2JqZWN0TGlrZShfLm5vb3ApO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzT2JqZWN0
TGlrZShudWxsKTtcbiAqIC8vID0+IGZhbHNlXG4gKi9cbmZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2
YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgIT0gbnVsbCAmJiB0eXBlb2YgdmFsdWUgPT0gJ29iamVj
dCc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNPYmplY3RMaWtlO1xuXG5cblxuLyoqKioqKioq
KioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vbG9kYXNoL2lzT2JqZWN0TGlr
ZS5qc1xuICoqIG1vZHVsZSBpZCA9IDExOVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwi
LyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJp
Z2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgaW52YXJpYW50ID0gcmVx
dWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG4gIHZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJq
cy9saWIvd2FybmluZycpO1xuICB2YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcu
L2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldCcpO1xuICB2YXIgbG9nZ2VkVHlwZUZhaWx1cmVzID0g
e307XG59XG5cbi8qKlxuICogQXNzZXJ0IHRoYXQgdGhlIHZhbHVlcyBtYXRjaCB3aXRoIHRoZSB0
eXBlIHNwZWNzLlxuICogRXJyb3IgbWVzc2FnZXMgYXJlIG1lbW9yaXplZCBhbmQgd2lsbCBvbmx5
IGJlIHNob3duIG9uY2UuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9IHR5cGVTcGVjcyBNYXAgb2Yg
bmFtZSB0byBhIFJlYWN0UHJvcFR5cGVcbiAqIEBwYXJhbSB7b2JqZWN0fSB2YWx1ZXMgUnVudGlt
ZSB2YWx1ZXMgdGhhdCBuZWVkIHRvIGJlIHR5cGUtY2hlY2tlZFxuICogQHBhcmFtIHtzdHJpbmd9
IGxvY2F0aW9uIGUuZy4gXCJwcm9wXCIsIFwiY29udGV4dFwiLCBcImNoaWxkIGNvbnRleHRcIlxu
ICogQHBhcmFtIHtzdHJpbmd9IGNvbXBvbmVudE5hbWUgTmFtZSBvZiB0aGUgY29tcG9uZW50IGZv
ciBlcnJvciBtZXNzYWdlcy5cbiAqIEBwYXJhbSB7P0Z1bmN0aW9ufSBnZXRTdGFjayBSZXR1cm5z
IHRoZSBjb21wb25lbnQgc3RhY2suXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBjaGVja1By
b3BUeXBlcyh0eXBlU3BlY3MsIHZhbHVlcywgbG9jYXRpb24sIGNvbXBvbmVudE5hbWUsIGdldFN0
YWNrKSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
ICAgZm9yICh2YXIgdHlwZVNwZWNOYW1lIGluIHR5cGVTcGVjcykge1xuICAgICAgaWYgKHR5cGVT
cGVjcy5oYXNPd25Qcm9wZXJ0eSh0eXBlU3BlY05hbWUpKSB7XG4gICAgICAgIHZhciBlcnJvcjtc
biAgICAgICAgLy8gUHJvcCB0eXBlIHZhbGlkYXRpb24gbWF5IHRocm93LiBJbiBjYXNlIHRoZXkg
ZG8sIHdlIGRvbid0IHdhbnQgdG9cbiAgICAgICAgLy8gZmFpbCB0aGUgcmVuZGVyIHBoYXNlIHdo
ZXJlIGl0IGRpZG4ndCBmYWlsIGJlZm9yZS4gU28gd2UgbG9nIGl0LlxuICAgICAgICAvLyBBZnRl
ciB0aGVzZSBoYXZlIGJlZW4gY2xlYW5lZCB1cCwgd2UnbGwgbGV0IHRoZW0gdGhyb3cuXG4gICAg
ICAgIHRyeSB7XG4gICAgICAgICAgLy8gVGhpcyBpcyBpbnRlbnRpb25hbGx5IGFuIGludmFyaWFu
dCB0aGF0IGdldHMgY2F1Z2h0LiBJdCdzIHRoZSBzYW1lXG4gICAgICAgICAgLy8gYmVoYXZpb3Ig
YXMgd2l0aG91dCB0aGlzIHN0YXRlbWVudCBleGNlcHQgd2l0aCBhIGJldHRlciBtZXNzYWdlLlxu
ICAgICAgICAgIGludmFyaWFudCh0eXBlb2YgdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0gPT09ICdm
dW5jdGlvbicsICclczogJXMgdHlwZSBgJXNgIGlzIGludmFsaWQ7IGl0IG11c3QgYmUgYSBmdW5j
dGlvbiwgdXN1YWxseSBmcm9tICcgKyAnUmVhY3QuUHJvcFR5cGVzLicsIGNvbXBvbmVudE5hbWUg
fHwgJ1JlYWN0IGNsYXNzJywgbG9jYXRpb24sIHR5cGVTcGVjTmFtZSk7XG4gICAgICAgICAgZXJy
b3IgPSB0eXBlU3BlY3NbdHlwZVNwZWNOYW1lXSh2YWx1ZXMsIHR5cGVTcGVjTmFtZSwgY29tcG9u
ZW50TmFtZSwgbG9jYXRpb24sIG51bGwsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcbiAgICAgICAg
fSBjYXRjaCAoZXgpIHtcbiAgICAgICAgICBlcnJvciA9IGV4O1xuICAgICAgICB9XG4gICAgICAg
IHdhcm5pbmcoIWVycm9yIHx8IGVycm9yIGluc3RhbmNlb2YgRXJyb3IsICclczogdHlwZSBzcGVj
aWZpY2F0aW9uIG9mICVzIGAlc2AgaXMgaW52YWxpZDsgdGhlIHR5cGUgY2hlY2tlciAnICsgJ2Z1
bmN0aW9uIG11c3QgcmV0dXJuIGBudWxsYCBvciBhbiBgRXJyb3JgIGJ1dCByZXR1cm5lZCBhICVz
LiAnICsgJ1lvdSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gcGFzcyBhbiBhcmd1bWVudCB0byB0aGUg
dHlwZSBjaGVja2VyICcgKyAnY3JlYXRvciAoYXJyYXlPZiwgaW5zdGFuY2VPZiwgb2JqZWN0T2Ys
IG9uZU9mLCBvbmVPZlR5cGUsIGFuZCAnICsgJ3NoYXBlIGFsbCByZXF1aXJlIGFuIGFyZ3VtZW50
KS4nLCBjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycsIGxvY2F0aW9uLCB0eXBlU3BlY05h
bWUsIHR5cGVvZiBlcnJvcik7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYm
ICEoZXJyb3IubWVzc2FnZSBpbiBsb2dnZWRUeXBlRmFpbHVyZXMpKSB7XG4gICAgICAgICAgLy8g
T25seSBtb25pdG9yIHRoaXMgZmFpbHVyZSBvbmNlIGJlY2F1c2UgdGhlcmUgdGVuZHMgdG8gYmUg
YSBsb3Qgb2YgdGhlXG4gICAgICAgICAgLy8gc2FtZSBlcnJvci5cbiAgICAgICAgICBsb2dnZWRU
eXBlRmFpbHVyZXNbZXJyb3IubWVzc2FnZV0gPSB0cnVlO1xuXG4gICAgICAgICAgdmFyIHN0YWNr
ID0gZ2V0U3RhY2sgPyBnZXRTdGFjaygpIDogJyc7XG5cbiAgICAgICAgICB3YXJuaW5nKGZhbHNl
LCAnRmFpbGVkICVzIHR5cGU6ICVzJXMnLCBsb2NhdGlvbiwgZXJyb3IubWVzc2FnZSwgc3RhY2sg
IT0gbnVsbCA/IHN0YWNrIDogJycpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59
XG5cbm1vZHVsZS5leHBvcnRzID0gY2hlY2tQcm9wVHlwZXM7XG5cblxuXG4vKioqKioqKioqKioq
KioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9wcm9wLXR5cGVzL2NoZWNrUHJvcFR5
cGVzLmpzXG4gKiogbW9kdWxlIGlkID0gMTIwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8i
LCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwg
cmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBlbXB0
eUZ1bmN0aW9uID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlGdW5jdGlvbicpO1xudmFyIGludmFy
aWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIFJlYWN0UHJvcFR5cGVz
U2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcblxubW9kdWxl
LmV4cG9ydHMgPSBmdW5jdGlvbigpIHtcbiAgZnVuY3Rpb24gc2hpbShwcm9wcywgcHJvcE5hbWUs
IGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgIGlm
IChzZWNyZXQgPT09IFJlYWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAvLyBJdCBpcyBzdGls
bCBzYWZlIHdoZW4gY2FsbGVkIGZyb20gUmVhY3QuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAg
IGludmFyaWFudChcbiAgICAgIGZhbHNlLFxuICAgICAgJ0NhbGxpbmcgUHJvcFR5cGVzIHZhbGlk
YXRvcnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2th
Z2UuICcgK1xuICAgICAgJ1VzZSBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKSB0byBjYWxsIHRo
ZW0uICcgK1xuICAgICAgJ1JlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3At
dHlwZXMnXG4gICAgKTtcbiAgfTtcbiAgc2hpbS5pc1JlcXVpcmVkID0gc2hpbTtcbiAgZnVuY3Rp
b24gZ2V0U2hpbSgpIHtcbiAgICByZXR1cm4gc2hpbTtcbiAgfTtcbiAgLy8gSW1wb3J0YW50IVxu
ICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBzeW5jIHdpdGggcHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAu
L2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpzYC5cbiAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xu
ICAgIGFycmF5OiBzaGltLFxuICAgIGJvb2w6IHNoaW0sXG4gICAgZnVuYzogc2hpbSxcbiAgICBu
dW1iZXI6IHNoaW0sXG4gICAgb2JqZWN0OiBzaGltLFxuICAgIHN0cmluZzogc2hpbSxcbiAgICBz
eW1ib2w6IHNoaW0sXG5cbiAgICBhbnk6IHNoaW0sXG4gICAgYXJyYXlPZjogZ2V0U2hpbSxcbiAg
ICBlbGVtZW50OiBzaGltLFxuICAgIGluc3RhbmNlT2Y6IGdldFNoaW0sXG4gICAgbm9kZTogc2hp
bSxcbiAgICBvYmplY3RPZjogZ2V0U2hpbSxcbiAgICBvbmVPZjogZ2V0U2hpbSxcbiAgICBvbmVP
ZlR5cGU6IGdldFNoaW0sXG4gICAgc2hhcGU6IGdldFNoaW1cbiAgfTtcblxuICBSZWFjdFByb3BU
eXBlcy5jaGVja1Byb3BUeXBlcyA9IGVtcHR5RnVuY3Rpb247XG4gIFJlYWN0UHJvcFR5cGVzLlBy
b3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xuXG4gIHJldHVybiBSZWFjdFByb3BUeXBlcztcbn07
XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9w
cm9wLXR5cGVzL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcy5qc1xuICoqIG1vZHVsZSBpZCA9IDEy
MVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4g
Ki9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoJ2ZianMv
bGliL2VtcHR5RnVuY3Rpb24nKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9p
bnZhcmlhbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xu
XG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSByZXF1aXJlKCcuL2xpYi9SZWFjdFByb3BUeXBl
c1NlY3JldCcpO1xudmFyIGNoZWNrUHJvcFR5cGVzID0gcmVxdWlyZSgnLi9jaGVja1Byb3BUeXBl
cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKGlzVmFsaWRFbGVtZW50LCB0aHJvd09u
RGlyZWN0QWNjZXNzKSB7XG4gIC8qIGdsb2JhbCBTeW1ib2wgKi9cbiAgdmFyIElURVJBVE9SX1NZ
TUJPTCA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLml0ZXJhdG9yO1xu
ICB2YXIgRkFVWF9JVEVSQVRPUl9TWU1CT0wgPSAnQEBpdGVyYXRvcic7IC8vIEJlZm9yZSBTeW1i
b2wgc3BlYy5cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgaXRlcmF0b3IgbWV0aG9kIGZ1bmN0
aW9uIGNvbnRhaW5lZCBvbiB0aGUgaXRlcmFibGUgb2JqZWN0LlxuICAgKlxuICAgKiBCZSBzdXJl
IHRvIGludm9rZSB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgaXRlcmFibGUgYXMgY29udGV4dDpcbiAg
ICpcbiAgICogICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihteUl0ZXJhYmxlKTtc
biAgICogICAgIGlmIChpdGVyYXRvckZuKSB7XG4gICAqICAgICAgIHZhciBpdGVyYXRvciA9IGl0
ZXJhdG9yRm4uY2FsbChteUl0ZXJhYmxlKTtcbiAgICogICAgICAgLi4uXG4gICAqICAgICB9XG4g
ICAqXG4gICAqIEBwYXJhbSB7P29iamVjdH0gbWF5YmVJdGVyYWJsZVxuICAgKiBAcmV0dXJuIHs/
ZnVuY3Rpb259XG4gICAqL1xuICBmdW5jdGlvbiBnZXRJdGVyYXRvckZuKG1heWJlSXRlcmFibGUp
IHtcbiAgICB2YXIgaXRlcmF0b3JGbiA9IG1heWJlSXRlcmFibGUgJiYgKElURVJBVE9SX1NZTUJP
TCAmJiBtYXliZUl0ZXJhYmxlW0lURVJBVE9SX1NZTUJPTF0gfHwgbWF5YmVJdGVyYWJsZVtGQVVY
X0lURVJBVE9SX1NZTUJPTF0pO1xuICAgIGlmICh0eXBlb2YgaXRlcmF0b3JGbiA9PT0gJ2Z1bmN0
aW9uJykge1xuICAgICAgcmV0dXJuIGl0ZXJhdG9yRm47XG4gICAgfVxuICB9XG5cbiAgLyoqXG4g
ICAqIENvbGxlY3Rpb24gb2YgbWV0aG9kcyB0aGF0IGFsbG93IGRlY2xhcmF0aW9uIGFuZCB2YWxp
ZGF0aW9uIG9mIHByb3BzIHRoYXQgYXJlXG4gICAqIHN1cHBsaWVkIHRvIFJlYWN0IGNvbXBvbmVu
dHMuIEV4YW1wbGUgdXNhZ2U6XG4gICAqXG4gICAqICAgdmFyIFByb3BzID0gcmVxdWlyZSgnUmVh
Y3RQcm9wVHlwZXMnKTtcbiAgICogICB2YXIgTXlBcnRpY2xlID0gUmVhY3QuY3JlYXRlQ2xhc3Mo
e1xuICAgKiAgICAgcHJvcFR5cGVzOiB7XG4gICAqICAgICAgIC8vIEFuIG9wdGlvbmFsIHN0cmlu
ZyBwcm9wIG5hbWVkIFwiZGVzY3JpcHRpb25cIi5cbiAgICogICAgICAgZGVzY3JpcHRpb246IFBy
b3BzLnN0cmluZyxcbiAgICpcbiAgICogICAgICAgLy8gQSByZXF1aXJlZCBlbnVtIHByb3AgbmFt
ZWQgXCJjYXRlZ29yeVwiLlxuICAgKiAgICAgICBjYXRlZ29yeTogUHJvcHMub25lT2YoWydOZXdz
JywnUGhvdG9zJ10pLmlzUmVxdWlyZWQsXG4gICAqXG4gICAqICAgICAgIC8vIEEgcHJvcCBuYW1l
ZCBcImRpYWxvZ1wiIHRoYXQgcmVxdWlyZXMgYW4gaW5zdGFuY2Ugb2YgRGlhbG9nLlxuICAgKiAg
ICAgICBkaWFsb2c6IFByb3BzLmluc3RhbmNlT2YoRGlhbG9nKS5pc1JlcXVpcmVkXG4gICAqICAg
ICB9LFxuICAgKiAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHsgLi4uIH1cbiAgICogICB9KTtcbiAg
ICpcbiAgICogQSBtb3JlIGZvcm1hbCBzcGVjaWZpY2F0aW9uIG9mIGhvdyB0aGVzZSBtZXRob2Rz
IGFyZSB1c2VkOlxuICAgKlxuICAgKiAgIHR5cGUgOj0gYXJyYXl8Ym9vbHxmdW5jfG9iamVjdHxu
dW1iZXJ8c3RyaW5nfG9uZU9mKFsuLi5dKXxpbnN0YW5jZU9mKC4uLilcbiAgICogICBkZWNsIDo9
IFJlYWN0UHJvcFR5cGVzLnt0eXBlfSguaXNSZXF1aXJlZCk/XG4gICAqXG4gICAqIEVhY2ggYW5k
IGV2ZXJ5IGRlY2xhcmF0aW9uIHByb2R1Y2VzIGEgZnVuY3Rpb24gd2l0aCB0aGUgc2FtZSBzaWdu
YXR1cmUuIFRoaXNcbiAgICogYWxsb3dzIHRoZSBjcmVhdGlvbiBvZiBjdXN0b20gdmFsaWRhdGlv
biBmdW5jdGlvbnMuIEZvciBleGFtcGxlOlxuICAgKlxuICAgKiAgdmFyIE15TGluayA9IFJlYWN0
LmNyZWF0ZUNsYXNzKHtcbiAgICogICAgcHJvcFR5cGVzOiB7XG4gICAqICAgICAgLy8gQW4gb3B0
aW9uYWwgc3RyaW5nIG9yIFVSSSBwcm9wIG5hbWVkIFwiaHJlZlwiLlxuICAgKiAgICAgIGhyZWY6
IGZ1bmN0aW9uKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSkge1xuICAgKiAgICAgICAg
dmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICogICAgICAgIGlmIChwcm9wVmFs
dWUgIT0gbnVsbCAmJiB0eXBlb2YgcHJvcFZhbHVlICE9PSAnc3RyaW5nJyAmJlxuICAgKiAgICAg
ICAgICAgICEocHJvcFZhbHVlIGluc3RhbmNlb2YgVVJJKSkge1xuICAgKiAgICAgICAgICByZXR1
cm4gbmV3IEVycm9yKFxuICAgKiAgICAgICAgICAgICdFeHBlY3RlZCBhIHN0cmluZyBvciBhbiBV
UkkgZm9yICcgKyBwcm9wTmFtZSArICcgaW4gJyArXG4gICAqICAgICAgICAgICAgY29tcG9uZW50
TmFtZVxuICAgKiAgICAgICAgICApO1xuICAgKiAgICAgICAgfVxuICAgKiAgICAgIH1cbiAgICog
ICAgfSxcbiAgICogICAgcmVuZGVyOiBmdW5jdGlvbigpIHsuLi59XG4gICAqICB9KTtcbiAgICpc
biAgICogQGludGVybmFsXG4gICAqL1xuXG4gIHZhciBBTk9OWU1PVVMgPSAnPDxhbm9ueW1vdXM+
Pic7XG5cbiAgLy8gSW1wb3J0YW50IVxuICAvLyBLZWVwIHRoaXMgbGlzdCBpbiBzeW5jIHdpdGgg
cHJvZHVjdGlvbiB2ZXJzaW9uIGluIGAuL2ZhY3RvcnlXaXRoVGhyb3dpbmdTaGltcy5qc2AuXG4g
IHZhciBSZWFjdFByb3BUeXBlcyA9IHtcbiAgICBhcnJheTogY3JlYXRlUHJpbWl0aXZlVHlwZUNo
ZWNrZXIoJ2FycmF5JyksXG4gICAgYm9vbDogY3JlYXRlUHJpbWl0aXZlVHlwZUNoZWNrZXIoJ2Jv
b2xlYW4nKSxcbiAgICBmdW5jOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignZnVuY3Rpb24n
KSxcbiAgICBudW1iZXI6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdudW1iZXInKSxcbiAg
ICBvYmplY3Q6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdvYmplY3QnKSxcbiAgICBzdHJp
bmc6IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdzdHJpbmcnKSxcbiAgICBzeW1ib2w6IGNy
ZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdzeW1ib2wnKSxcblxuICAgIGFueTogY3JlYXRlQW55
VHlwZUNoZWNrZXIoKSxcbiAgICBhcnJheU9mOiBjcmVhdGVBcnJheU9mVHlwZUNoZWNrZXIsXG4g
ICAgZWxlbWVudDogY3JlYXRlRWxlbWVudFR5cGVDaGVja2VyKCksXG4gICAgaW5zdGFuY2VPZjog
Y3JlYXRlSW5zdGFuY2VUeXBlQ2hlY2tlcixcbiAgICBub2RlOiBjcmVhdGVOb2RlQ2hlY2tlcigp
LFxuICAgIG9iamVjdE9mOiBjcmVhdGVPYmplY3RPZlR5cGVDaGVja2VyLFxuICAgIG9uZU9mOiBj
cmVhdGVFbnVtVHlwZUNoZWNrZXIsXG4gICAgb25lT2ZUeXBlOiBjcmVhdGVVbmlvblR5cGVDaGVj
a2VyLFxuICAgIHNoYXBlOiBjcmVhdGVTaGFwZVR5cGVDaGVja2VyXG4gIH07XG5cbiAgLyoqXG4g
ICAqIGlubGluZWQgT2JqZWN0LmlzIHBvbHlmaWxsIHRvIGF2b2lkIHJlcXVpcmluZyBjb25zdW1l
cnMgc2hpcCB0aGVpciBvd25cbiAgICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4t
VVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2lz
XG4gICAqL1xuICAvKmVzbGludC1kaXNhYmxlIG5vLXNlbGYtY29tcGFyZSovXG4gIGZ1bmN0aW9u
IGlzKHgsIHkpIHtcbiAgICAvLyBTYW1lVmFsdWUgYWxnb3JpdGhtXG4gICAgaWYgKHggPT09IHkp
IHtcbiAgICAgIC8vIFN0ZXBzIDEtNSwgNy0xMFxuICAgICAgLy8gU3RlcHMgNi5iLTYuZTogKzAg
IT0gLTBcbiAgICAgIHJldHVybiB4ICE9PSAwIHx8IDEgLyB4ID09PSAxIC8geTtcbiAgICB9IGVs
c2Uge1xuICAgICAgLy8gU3RlcCA2LmE6IE5hTiA9PSBOYU5cbiAgICAgIHJldHVybiB4ICE9PSB4
ICYmIHkgIT09IHk7XG4gICAgfVxuICB9XG4gIC8qZXNsaW50LWVuYWJsZSBuby1zZWxmLWNvbXBh
cmUqL1xuXG4gIC8qKlxuICAgKiBXZSB1c2UgYW4gRXJyb3ItbGlrZSBvYmplY3QgZm9yIGJhY2t3
YXJkIGNvbXBhdGliaWxpdHkgYXMgcGVvcGxlIG1heSBjYWxsXG4gICAqIFByb3BUeXBlcyBkaXJl
Y3RseSBhbmQgaW5zcGVjdCB0aGVpciBvdXRwdXQuIEhvd2V2ZXIsIHdlIGRvbid0IHVzZSByZWFs
XG4gICAqIEVycm9ycyBhbnltb3JlLiBXZSBkb24ndCBpbnNwZWN0IHRoZWlyIHN0YWNrIGFueXdh
eSwgYW5kIGNyZWF0aW5nIHRoZW1cbiAgICogaXMgcHJvaGliaXRpdmVseSBleHBlbnNpdmUgaWYg
dGhleSBhcmUgY3JlYXRlZCB0b28gb2Z0ZW4sIHN1Y2ggYXMgd2hhdFxuICAgKiBoYXBwZW5zIGlu
IG9uZU9mVHlwZSgpIGZvciBhbnkgdHlwZSBiZWZvcmUgdGhlIG9uZSB0aGF0IG1hdGNoZWQuXG4g
ICAqL1xuICBmdW5jdGlvbiBQcm9wVHlwZUVycm9yKG1lc3NhZ2UpIHtcbiAgICB0aGlzLm1lc3Nh
Z2UgPSBtZXNzYWdlO1xuICAgIHRoaXMuc3RhY2sgPSAnJztcbiAgfVxuICAvLyBNYWtlIGBpbnN0
YW5jZW9mIEVycm9yYCBzdGlsbCB3b3JrIGZvciByZXR1cm5lZCBlcnJvcnMuXG4gIFByb3BUeXBl
RXJyb3IucHJvdG90eXBlID0gRXJyb3IucHJvdG90eXBlO1xuXG4gIGZ1bmN0aW9uIGNyZWF0ZUNo
YWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBtYW51YWxQcm9wVHlwZUNhbGxDYWNo
ZSA9IHt9O1xuICAgICAgdmFyIG1hbnVhbFByb3BUeXBlV2FybmluZ0NvdW50ID0gMDtcbiAgICB9
XG4gICAgZnVuY3Rpb24gY2hlY2tUeXBlKGlzUmVxdWlyZWQsIHByb3BzLCBwcm9wTmFtZSwgY29t
cG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgICBjb21w
b25lbnROYW1lID0gY29tcG9uZW50TmFtZSB8fCBBTk9OWU1PVVM7XG4gICAgICBwcm9wRnVsbE5h
bWUgPSBwcm9wRnVsbE5hbWUgfHwgcHJvcE5hbWU7XG5cbiAgICAgIGlmIChzZWNyZXQgIT09IFJl
YWN0UHJvcFR5cGVzU2VjcmV0KSB7XG4gICAgICAgIGlmICh0aHJvd09uRGlyZWN0QWNjZXNzKSB7
XG4gICAgICAgICAgLy8gTmV3IGJlaGF2aW9yIG9ubHkgZm9yIHVzZXJzIG9mIGBwcm9wLXR5cGVz
YCBwYWNrYWdlXG4gICAgICAgICAgaW52YXJpYW50KFxuICAgICAgICAgICAgZmFsc2UsXG4gICAg
ICAgICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3Vw
cG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAgICAgICAnVXNl
IGBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKWAgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICAg
ICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAg
ICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyAmJiB0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAg
ICAvLyBPbGQgYmVoYXZpb3IgZm9yIHBlb3BsZSB1c2luZyBSZWFjdC5Qcm9wVHlwZXNcbiAgICAg
ICAgICB2YXIgY2FjaGVLZXkgPSBjb21wb25lbnROYW1lICsgJzonICsgcHJvcE5hbWU7XG4gICAg
ICAgICAgaWYgKFxuICAgICAgICAgICAgIW1hbnVhbFByb3BUeXBlQ2FsbENhY2hlW2NhY2hlS2V5
XSAmJlxuICAgICAgICAgICAgLy8gQXZvaWQgc3BhbW1pbmcgdGhlIGNvbnNvbGUgYmVjYXVzZSB0
aGV5IGFyZSBvZnRlbiBub3QgYWN0aW9uYWJsZSBleGNlcHQgZm9yIGxpYiBhdXRob3JzXG4gICAg
ICAgICAgICBtYW51YWxQcm9wVHlwZVdhcm5pbmdDb3VudCA8IDNcbiAgICAgICAgICApIHtcbiAg
ICAgICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAn
WW91IGFyZSBtYW51YWxseSBjYWxsaW5nIGEgUmVhY3QuUHJvcFR5cGVzIHZhbGlkYXRpb24gJyAr
XG4gICAgICAgICAgICAgICdmdW5jdGlvbiBmb3IgdGhlIGAlc2AgcHJvcCBvbiBgJXNgLiBUaGlz
IGlzIGRlcHJlY2F0ZWQgJyArXG4gICAgICAgICAgICAgICdhbmQgd2lsbCB0aHJvdyBpbiB0aGUg
c3RhbmRhbG9uZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG4gICAgICAgICAgICAgICdZb3Ug
bWF5IGJlIHNlZWluZyB0aGlzIHdhcm5pbmcgZHVlIHRvIGEgdGhpcmQtcGFydHkgUHJvcFR5cGVz
ICcgK1xuICAgICAgICAgICAgICAnbGlicmFyeS4gU2VlIGh0dHBzOi8vZmIubWUvcmVhY3Qtd2Fy
bmluZy1kb250LWNhbGwtcHJvcHR5cGVzICcgKyAnZm9yIGRldGFpbHMuJyxcbiAgICAgICAgICAg
ICAgcHJvcEZ1bGxOYW1lLFxuICAgICAgICAgICAgICBjb21wb25lbnROYW1lXG4gICAgICAgICAg
ICApO1xuICAgICAgICAgICAgbWFudWFsUHJvcFR5cGVDYWxsQ2FjaGVbY2FjaGVLZXldID0gdHJ1
ZTtcbiAgICAgICAgICAgIG1hbnVhbFByb3BUeXBlV2FybmluZ0NvdW50Kys7XG4gICAgICAgICAg
fVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocHJvcHNbcHJvcE5hbWVdID09IG51bGwp
IHtcbiAgICAgICAgaWYgKGlzUmVxdWlyZWQpIHtcbiAgICAgICAgICBpZiAocHJvcHNbcHJvcE5h
bWVdID09PSBudWxsKSB7XG4gICAgICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1Ro
ZSAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2AgaXMgbWFya2VkIGFzIHJl
cXVpcmVkICcgKyAoJ2luIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBidXQgaXRzIHZhbHVlIGlz
IGBudWxsYC4nKSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVF
cnJvcignVGhlICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBpcyBtYXJr
ZWQgYXMgcmVxdWlyZWQgaW4gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGJ1dCBpdHMg
dmFsdWUgaXMgYHVuZGVmaW5lZGAuJykpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBudWxs
O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFt
ZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSk7XG4gICAgICB9XG4gICAg
fVxuXG4gICAgdmFyIGNoYWluZWRDaGVja1R5cGUgPSBjaGVja1R5cGUuYmluZChudWxsLCBmYWxz
ZSk7XG4gICAgY2hhaW5lZENoZWNrVHlwZS5pc1JlcXVpcmVkID0gY2hlY2tUeXBlLmJpbmQobnVs
bCwgdHJ1ZSk7XG5cbiAgICByZXR1cm4gY2hhaW5lZENoZWNrVHlwZTtcbiAgfVxuXG4gIGZ1bmN0
aW9uIGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKGV4cGVjdGVkVHlwZSkge1xuICAgIGZ1bmN0
aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHBy
b3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJvcE5h
bWVdO1xuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAg
IGlmIChwcm9wVHlwZSAhPT0gZXhwZWN0ZWRUeXBlKSB7XG4gICAgICAgIC8vIGBwcm9wVmFsdWVg
IGJlaW5nIGluc3RhbmNlIG9mLCBzYXksIGRhdGUvcmVnZXhwLCBwYXNzIHRoZSAnb2JqZWN0J1xu
ICAgICAgICAvLyBjaGVjaywgYnV0IHdlIGNhbiBvZmZlciBhIG1vcmUgcHJlY2lzZSBlcnJvciBt
ZXNzYWdlIGhlcmUgcmF0aGVyIHRoYW5cbiAgICAgICAgLy8gJ29mIHR5cGUgYG9iamVjdGAnLlxu
ICAgICAgICB2YXIgcHJlY2lzZVR5cGUgPSBnZXRQcmVjaXNlVHlwZShwcm9wVmFsdWUpO1xuXG4g
ICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAn
IGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIHByZWNpc2VUeXBlICsg
J2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkICcpICsgKCdg
JyArIGV4cGVjdGVkVHlwZSArICdgLicpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xu
ICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xu
ICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlQW55VHlwZUNoZWNrZXIoKSB7XG4gICAgcmV0dXJuIGNy
ZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxsKTtc
biAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUFycmF5T2ZUeXBlQ2hlY2tlcih0eXBlQ2hlY2tlcikg
e1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwg
bG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgaWYgKHR5cGVvZiB0eXBlQ2hlY2tlciAh
PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1Byb3Bl
cnR5IGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgY29tcG9uZW50IGAnICsgY29tcG9uZW50TmFt
ZSArICdgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0aW9uIGluc2lkZSBhcnJheU9mLicpO1xu
ICAgICAgfVxuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGlm
ICghQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7XG4gICAgICAgIHZhciBwcm9wVHlwZSA9IGdl
dFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcign
SW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAn
ICsgKCdgJyArIHByb3BUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsg
J2AsIGV4cGVjdGVkIGFuIGFycmF5LicpKTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgcHJvcFZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBlcnJvciA9IHR5cGVD
aGVja2VyKHByb3BWYWx1ZSwgaSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFt
ZSArICdbJyArIGkgKyAnXScsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcbiAgICAgICAgaWYgKGVy
cm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gZXJyb3I7XG4gICAgICAg
IH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRl
Q2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRl
RWxlbWVudFR5cGVDaGVja2VyKCkge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9w
TmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgdmFy
IHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGlmICghaXNWYWxpZEVsZW1lbnQo
cHJvcFZhbHVlKSkge1xuICAgICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFs
dWUpO1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0
aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlw
ZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhIHNp
bmdsZSBSZWFjdEVsZW1lbnQuJykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAg
fVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1c
blxuICBmdW5jdGlvbiBjcmVhdGVJbnN0YW5jZVR5cGVDaGVja2VyKGV4cGVjdGVkQ2xhc3MpIHtc
biAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxv
Y2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIGlmICghKHByb3BzW3Byb3BOYW1lXSBpbnN0
YW5jZW9mIGV4cGVjdGVkQ2xhc3MpKSB7XG4gICAgICAgIHZhciBleHBlY3RlZENsYXNzTmFtZSA9
IGV4cGVjdGVkQ2xhc3MubmFtZSB8fCBBTk9OWU1PVVM7XG4gICAgICAgIHZhciBhY3R1YWxDbGFz
c05hbWUgPSBnZXRDbGFzc05hbWUocHJvcHNbcHJvcE5hbWVdKTtcbiAgICAgICAgcmV0dXJuIG5l
dyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5h
bWUgKyAnYCBvZiB0eXBlICcgKyAoJ2AnICsgYWN0dWFsQ2xhc3NOYW1lICsgJ2Agc3VwcGxpZWQg
dG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVjdGVkICcpICsgKCdpbnN0YW5jZSBvZiBg
JyArIGV4cGVjdGVkQ2xhc3NOYW1lICsgJ2AuJykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51
bGw7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0
ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVFbnVtVHlwZUNoZWNrZXIoZXhwZWN0ZWRWYWx1
ZXMpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoZXhwZWN0ZWRWYWx1ZXMpKSB7XG4gICAgICBw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ0lu
dmFsaWQgYXJndW1lbnQgc3VwcGxpZWQgdG8gb25lT2YsIGV4cGVjdGVkIGFuIGluc3RhbmNlIG9m
IGFycmF5LicpIDogdm9pZCAwO1xuICAgICAgcmV0dXJuIGVtcHR5RnVuY3Rpb24udGhhdFJldHVy
bnNOdWxsO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9wTmFtZSwg
Y29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgdmFyIHByb3BW
YWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0
ZWRWYWx1ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGlzKHByb3BWYWx1ZSwgZXhwZWN0
ZWRWYWx1ZXNbaV0pKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAg
IH1cblxuICAgICAgdmFyIHZhbHVlc1N0cmluZyA9IEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkVmFs
dWVzKTtcbiAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRp
b24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdmFsdWUgYCcgKyBwcm9wVmFsdWUgKyAn
YCAnICsgKCdzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgb25l
IG9mICcgKyB2YWx1ZXNTdHJpbmcgKyAnLicpKTtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNo
YWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZU9i
amVjdE9mVHlwZUNoZWNrZXIodHlwZUNoZWNrZXIpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShw
cm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtc
biAgICAgIGlmICh0eXBlb2YgdHlwZUNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAg
cmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdQcm9wZXJ0eSBgJyArIHByb3BGdWxsTmFtZSArICdg
IG9mIGNvbXBvbmVudCBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCBoYXMgaW52YWxpZCBQcm9wVHlw
ZSBub3RhdGlvbiBpbnNpZGUgb2JqZWN0T2YuJyk7XG4gICAgICB9XG4gICAgICB2YXIgcHJvcFZh
bHVlID0gcHJvcHNbcHJvcE5hbWVdO1xuICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUo
cHJvcFZhbHVlKTtcbiAgICAgIGlmIChwcm9wVHlwZSAhPT0gJ29iamVjdCcpIHtcbiAgICAgICAg
cmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBw
cm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcgKyAoJ2AnICsgcHJvcFR5cGUgKyAnYCBzdXBwbGll
ZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgYW4gb2JqZWN0LicpKTtcbiAg
ICAgIH1cbiAgICAgIGZvciAodmFyIGtleSBpbiBwcm9wVmFsdWUpIHtcbiAgICAgICAgaWYgKHBy
b3BWYWx1ZS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgdmFyIGVycm9yID0gdHlw
ZUNoZWNrZXIocHJvcFZhbHVlLCBrZXksIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVs
bE5hbWUgKyAnLicgKyBrZXksIFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcbiAgICAgICAgICBpZiAo
ZXJyb3IgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICAgICAgcmV0dXJuIGVycm9yO1xuICAg
ICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxu
ICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxu
ICBmdW5jdGlvbiBjcmVhdGVVbmlvblR5cGVDaGVja2VyKGFycmF5T2ZUeXBlQ2hlY2tlcnMpIHtc
biAgICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyYXlPZlR5cGVDaGVja2VycykpIHtcbiAgICAgIHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnSW52
YWxpZCBhcmd1bWVudCBzdXBwbGllZCB0byBvbmVPZlR5cGUsIGV4cGVjdGVkIGFuIGluc3RhbmNl
IG9mIGFycmF5LicpIDogdm9pZCAwO1xuICAgICAgcmV0dXJuIGVtcHR5RnVuY3Rpb24udGhhdFJl
dHVybnNOdWxsO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXlPZlR5cGVD
aGVja2Vycy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGNoZWNrZXIgPSBhcnJheU9mVHlwZUNo
ZWNrZXJzW2ldO1xuICAgICAgaWYgKHR5cGVvZiBjaGVja2VyICE9PSAnZnVuY3Rpb24nKSB7XG4g
ICAgICAgIHdhcm5pbmcoXG4gICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgJ0ludmFsaWQgYXJn
dW1lbnQgc3VwcGxpZCB0byBvbmVPZlR5cGUuIEV4cGVjdGVkIGFuIGFycmF5IG9mIGNoZWNrIGZ1
bmN0aW9ucywgYnV0ICcgK1xuICAgICAgICAgICdyZWNlaXZlZCAlcyBhdCBpbmRleCAlcy4nLFxu
ICAgICAgICAgIGdldFBvc3RmaXhGb3JUeXBlV2FybmluZyhjaGVja2VyKSxcbiAgICAgICAgICBp
XG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVs
bDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5h
bWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgYXJyYXlPZlR5cGVDaGVja2Vycy5sZW5ndGg7IGkrKykge1xuICAgICAg
ICB2YXIgY2hlY2tlciA9IGFycmF5T2ZUeXBlQ2hlY2tlcnNbaV07XG4gICAgICAgIGlmIChjaGVj
a2VyKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFt
ZSwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpID09IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gbnVs
bDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3Io
J0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIHN1cHBsaWVk
IHRvICcgKyAoJ2AnICsgY29tcG9uZW50TmFtZSArICdgLicpKTtcbiAgICB9XG4gICAgcmV0dXJu
IGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9u
IGNyZWF0ZU5vZGVDaGVja2VyKCkge1xuICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHByb3BzLCBwcm9w
TmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xuICAgICAgaWYg
KCFpc05vZGUocHJvcHNbcHJvcE5hbWVdKSkge1xuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBl
RXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIHN1
cHBsaWVkIHRvICcgKyAoJ2AnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhIFJlYWN0
Tm9kZS4nKSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJu
IGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9u
IGNyZWF0ZVNoYXBlVHlwZUNoZWNrZXIoc2hhcGVUeXBlcykge1xuICAgIGZ1bmN0aW9uIHZhbGlk
YXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFt
ZSkge1xuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIHZhciBw
cm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gICAgICBpZiAocHJvcFR5cGUgIT09
ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAn
ICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSBgJyArIHByb3BU
eXBlICsgJ2AgJyArICgnc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVj
dGVkIGBvYmplY3RgLicpKTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIGtleSBpbiBzaGFwZVR5
cGVzKSB7XG4gICAgICAgIHZhciBjaGVja2VyID0gc2hhcGVUeXBlc1trZXldO1xuICAgICAgICBp
ZiAoIWNoZWNrZXIpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB2
YXIgZXJyb3IgPSBjaGVja2VyKHByb3BWYWx1ZSwga2V5LCBjb21wb25lbnROYW1lLCBsb2NhdGlv
biwgcHJvcEZ1bGxOYW1lICsgJy4nICsga2V5LCBSZWFjdFByb3BUeXBlc1NlY3JldCk7XG4gICAg
ICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgfVxuICAg
ICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFi
bGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBpc05vZGUocHJvcFZh
bHVlKSB7XG4gICAgc3dpdGNoICh0eXBlb2YgcHJvcFZhbHVlKSB7XG4gICAgICBjYXNlICdudW1i
ZXInOlxuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIGNhc2UgJ3VuZGVmaW5lZCc6XG4gICAg
ICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICAgIHJldHVybiAh
cHJvcFZhbHVlO1xuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgICAgaWYgKEFycmF5LmlzQXJy
YXkocHJvcFZhbHVlKSkge1xuICAgICAgICAgIHJldHVybiBwcm9wVmFsdWUuZXZlcnkoaXNOb2Rl
KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocHJvcFZhbHVlID09PSBudWxsIHx8IGlzVmFsaWRF
bGVtZW50KHByb3BWYWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxu
XG4gICAgICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihwcm9wVmFsdWUpO1xuICAg
ICAgICBpZiAoaXRlcmF0b3JGbikge1xuICAgICAgICAgIHZhciBpdGVyYXRvciA9IGl0ZXJhdG9y
Rm4uY2FsbChwcm9wVmFsdWUpO1xuICAgICAgICAgIHZhciBzdGVwO1xuICAgICAgICAgIGlmIChp
dGVyYXRvckZuICE9PSBwcm9wVmFsdWUuZW50cmllcykge1xuICAgICAgICAgICAgd2hpbGUgKCEo
c3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgICAgICBpZiAoIWlzTm9k
ZShzdGVwLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAg
ICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAv
LyBJdGVyYXRvciB3aWxsIHByb3ZpZGUgZW50cnkgW2ssdl0gdHVwbGVzIHJhdGhlciB0aGFuIHZh
bHVlcy5cbiAgICAgICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUp
IHtcbiAgICAgICAgICAgICAgdmFyIGVudHJ5ID0gc3RlcC52YWx1ZTtcbiAgICAgICAgICAgICAg
aWYgKGVudHJ5KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFpc05vZGUoZW50cnlbMV0pKSB7XG4g
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAg
ICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xu
ICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0cnVl
O1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4g
IGZ1bmN0aW9uIGlzU3ltYm9sKHByb3BUeXBlLCBwcm9wVmFsdWUpIHtcbiAgICAvLyBOYXRpdmUg
U3ltYm9sLlxuICAgIGlmIChwcm9wVHlwZSA9PT0gJ3N5bWJvbCcpIHtcbiAgICAgIHJldHVybiB0
cnVlO1xuICAgIH1cblxuICAgIC8vIDE5LjQuMy41IFN5bWJvbC5wcm90b3R5cGVbQEB0b1N0cmlu
Z1RhZ10gPT09ICdTeW1ib2wnXG4gICAgaWYgKHByb3BWYWx1ZVsnQEB0b1N0cmluZ1RhZyddID09
PSAnU3ltYm9sJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgLy8gRmFsbGJh
Y2sgZm9yIG5vbi1zcGVjIGNvbXBsaWFudCBTeW1ib2xzIHdoaWNoIGFyZSBwb2x5ZmlsbGVkLlxu
ICAgIGlmICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIHByb3BWYWx1ZSBpbnN0YW5j
ZW9mIFN5bWJvbCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZh
bHNlO1xuICB9XG5cbiAgLy8gRXF1aXZhbGVudCBvZiBgdHlwZW9mYCBidXQgd2l0aCBzcGVjaWFs
IGhhbmRsaW5nIGZvciBhcnJheSBhbmQgcmVnZXhwLlxuICBmdW5jdGlvbiBnZXRQcm9wVHlwZShw
cm9wVmFsdWUpIHtcbiAgICB2YXIgcHJvcFR5cGUgPSB0eXBlb2YgcHJvcFZhbHVlO1xuICAgIGlm
IChBcnJheS5pc0FycmF5KHByb3BWYWx1ZSkpIHtcbiAgICAgIHJldHVybiAnYXJyYXknO1xuICAg
IH1cbiAgICBpZiAocHJvcFZhbHVlIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICAvLyBPbGQg
d2Via2l0cyAoYXQgbGVhc3QgdW50aWwgQW5kcm9pZCA0LjApIHJldHVybiAnZnVuY3Rpb24nIHJh
dGhlciB0aGFuXG4gICAgICAvLyAnb2JqZWN0JyBmb3IgdHlwZW9mIGEgUmVnRXhwLiBXZSdsbCBu
b3JtYWxpemUgdGhpcyBoZXJlIHNvIHRoYXQgL2JsYS9cbiAgICAgIC8vIHBhc3NlcyBQcm9wVHlw
ZXMub2JqZWN0LlxuICAgICAgcmV0dXJuICdvYmplY3QnO1xuICAgIH1cbiAgICBpZiAoaXNTeW1i
b2wocHJvcFR5cGUsIHByb3BWYWx1ZSkpIHtcbiAgICAgIHJldHVybiAnc3ltYm9sJztcbiAgICB9
XG4gICAgcmV0dXJuIHByb3BUeXBlO1xuICB9XG5cbiAgLy8gVGhpcyBoYW5kbGVzIG1vcmUgdHlw
ZXMgdGhhbiBgZ2V0UHJvcFR5cGVgLiBPbmx5IHVzZWQgZm9yIGVycm9yIG1lc3NhZ2VzLlxuICAv
LyBTZWUgYGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyYC5cbiAgZnVuY3Rpb24gZ2V0UHJlY2lz
ZVR5cGUocHJvcFZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiBwcm9wVmFsdWUgPT09ICd1bmRlZmlu
ZWQnIHx8IHByb3BWYWx1ZSA9PT0gbnVsbCkge1xuICAgICAgcmV0dXJuICcnICsgcHJvcFZhbHVl
O1xuICAgIH1cbiAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAg
IGlmIChwcm9wVHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChwcm9wVmFsdWUgaW5zdGFu
Y2VvZiBEYXRlKSB7XG4gICAgICAgIHJldHVybiAnZGF0ZSc7XG4gICAgICB9IGVsc2UgaWYgKHBy
b3BWYWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuICAgICAgICByZXR1cm4gJ3JlZ2V4cCc7XG4g
ICAgICB9XG4gICAgfVxuICAgIHJldHVybiBwcm9wVHlwZTtcbiAgfVxuXG4gIC8vIFJldHVybnMg
YSBzdHJpbmcgdGhhdCBpcyBwb3N0Zml4ZWQgdG8gYSB3YXJuaW5nIGFib3V0IGFuIGludmFsaWQg
dHlwZS5cbiAgLy8gRm9yIGV4YW1wbGUsIFwidW5kZWZpbmVkXCIgb3IgXCJvZiB0eXBlIGFycmF5
XCJcbiAgZnVuY3Rpb24gZ2V0UG9zdGZpeEZvclR5cGVXYXJuaW5nKHZhbHVlKSB7XG4gICAgdmFy
IHR5cGUgPSBnZXRQcmVjaXNlVHlwZSh2YWx1ZSk7XG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAg
ICBjYXNlICdhcnJheSc6XG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgICByZXR1cm4gJ2Fu
ICcgKyB0eXBlO1xuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICBjYXNlICdkYXRlJzpcbiAg
ICAgIGNhc2UgJ3JlZ2V4cCc6XG4gICAgICAgIHJldHVybiAnYSAnICsgdHlwZTtcbiAgICAgIGRl
ZmF1bHQ6XG4gICAgICAgIHJldHVybiB0eXBlO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJldHVybnMg
Y2xhc3MgbmFtZSBvZiB0aGUgb2JqZWN0LCBpZiBhbnkuXG4gIGZ1bmN0aW9uIGdldENsYXNzTmFt
ZShwcm9wVmFsdWUpIHtcbiAgICBpZiAoIXByb3BWYWx1ZS5jb25zdHJ1Y3RvciB8fCAhcHJvcFZh
bHVlLmNvbnN0cnVjdG9yLm5hbWUpIHtcbiAgICAgIHJldHVybiBBTk9OWU1PVVM7XG4gICAgfVxu
ICAgIHJldHVybiBwcm9wVmFsdWUuY29uc3RydWN0b3IubmFtZTtcbiAgfVxuXG4gIFJlYWN0UHJv
cFR5cGVzLmNoZWNrUHJvcFR5cGVzID0gY2hlY2tQcm9wVHlwZXM7XG4gIFJlYWN0UHJvcFR5cGVz
LlByb3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xuXG4gIHJldHVybiBSZWFjdFByb3BUeXBlcztc
bn07XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4v
fi9wcm9wLXR5cGVzL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzLmpzXG4gKiogbW9kdWxlIGlkID0g
MTIyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbm1vZHVs
ZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvUmVhY3RET00nKTtcblxuXG5cbi8qKioqKioqKioq
KioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9pbmRleC5qc1xu
ICoqIG1vZHVsZSBpZCA9IDEyM1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4g
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEFSSUFET01Q
cm9wZXJ0eUNvbmZpZyA9IHtcbiAgUHJvcGVydGllczoge1xuICAgIC8vIEdsb2JhbCBTdGF0ZXMg
YW5kIFByb3BlcnRpZXNcbiAgICAnYXJpYS1jdXJyZW50JzogMCwgLy8gc3RhdGVcbiAgICAnYXJp
YS1kZXRhaWxzJzogMCxcbiAgICAnYXJpYS1kaXNhYmxlZCc6IDAsIC8vIHN0YXRlXG4gICAgJ2Fy
aWEtaGlkZGVuJzogMCwgLy8gc3RhdGVcbiAgICAnYXJpYS1pbnZhbGlkJzogMCwgLy8gc3RhdGVc
biAgICAnYXJpYS1rZXlzaG9ydGN1dHMnOiAwLFxuICAgICdhcmlhLWxhYmVsJzogMCxcbiAgICAn
YXJpYS1yb2xlZGVzY3JpcHRpb24nOiAwLFxuICAgIC8vIFdpZGdldCBBdHRyaWJ1dGVzXG4gICAg
J2FyaWEtYXV0b2NvbXBsZXRlJzogMCxcbiAgICAnYXJpYS1jaGVja2VkJzogMCxcbiAgICAnYXJp
YS1leHBhbmRlZCc6IDAsXG4gICAgJ2FyaWEtaGFzcG9wdXAnOiAwLFxuICAgICdhcmlhLWxldmVs
JzogMCxcbiAgICAnYXJpYS1tb2RhbCc6IDAsXG4gICAgJ2FyaWEtbXVsdGlsaW5lJzogMCxcbiAg
ICAnYXJpYS1tdWx0aXNlbGVjdGFibGUnOiAwLFxuICAgICdhcmlhLW9yaWVudGF0aW9uJzogMCxc
biAgICAnYXJpYS1wbGFjZWhvbGRlcic6IDAsXG4gICAgJ2FyaWEtcHJlc3NlZCc6IDAsXG4gICAg
J2FyaWEtcmVhZG9ubHknOiAwLFxuICAgICdhcmlhLXJlcXVpcmVkJzogMCxcbiAgICAnYXJpYS1z
ZWxlY3RlZCc6IDAsXG4gICAgJ2FyaWEtc29ydCc6IDAsXG4gICAgJ2FyaWEtdmFsdWVtYXgnOiAw
LFxuICAgICdhcmlhLXZhbHVlbWluJzogMCxcbiAgICAnYXJpYS12YWx1ZW5vdyc6IDAsXG4gICAg
J2FyaWEtdmFsdWV0ZXh0JzogMCxcbiAgICAvLyBMaXZlIFJlZ2lvbiBBdHRyaWJ1dGVzXG4gICAg
J2FyaWEtYXRvbWljJzogMCxcbiAgICAnYXJpYS1idXN5JzogMCxcbiAgICAnYXJpYS1saXZlJzog
MCxcbiAgICAnYXJpYS1yZWxldmFudCc6IDAsXG4gICAgLy8gRHJhZy1hbmQtRHJvcCBBdHRyaWJ1
dGVzXG4gICAgJ2FyaWEtZHJvcGVmZmVjdCc6IDAsXG4gICAgJ2FyaWEtZ3JhYmJlZCc6IDAsXG4g
ICAgLy8gUmVsYXRpb25zaGlwIEF0dHJpYnV0ZXNcbiAgICAnYXJpYS1hY3RpdmVkZXNjZW5kYW50
JzogMCxcbiAgICAnYXJpYS1jb2xjb3VudCc6IDAsXG4gICAgJ2FyaWEtY29saW5kZXgnOiAwLFxu
ICAgICdhcmlhLWNvbHNwYW4nOiAwLFxuICAgICdhcmlhLWNvbnRyb2xzJzogMCxcbiAgICAnYXJp
YS1kZXNjcmliZWRieSc6IDAsXG4gICAgJ2FyaWEtZXJyb3JtZXNzYWdlJzogMCxcbiAgICAnYXJp
YS1mbG93dG8nOiAwLFxuICAgICdhcmlhLWxhYmVsbGVkYnknOiAwLFxuICAgICdhcmlhLW93bnMn
OiAwLFxuICAgICdhcmlhLXBvc2luc2V0JzogMCxcbiAgICAnYXJpYS1yb3djb3VudCc6IDAsXG4g
ICAgJ2FyaWEtcm93aW5kZXgnOiAwLFxuICAgICdhcmlhLXJvd3NwYW4nOiAwLFxuICAgICdhcmlh
LXNldHNpemUnOiAwXG4gIH0sXG4gIERPTUF0dHJpYnV0ZU5hbWVzOiB7fSxcbiAgRE9NUHJvcGVy
dHlOYW1lczoge31cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQVJJQURPTVByb3BlcnR5Q29uZmln
O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3Jl
YWN0LWRvbS9saWIvQVJJQURPTVByb3BlcnR5Q29uZmlnLmpzXG4gKiogbW9kdWxlIGlkID0gMTI0
XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAq
XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gcmVx
dWlyZSgnLi9SZWFjdERPTUNvbXBvbmVudFRyZWUnKTtcblxudmFyIGZvY3VzTm9kZSA9IHJlcXVp
cmUoJ2ZianMvbGliL2ZvY3VzTm9kZScpO1xuXG52YXIgQXV0b0ZvY3VzVXRpbHMgPSB7XG4gIGZv
Y3VzRE9NQ29tcG9uZW50OiBmdW5jdGlvbiAoKSB7XG4gICAgZm9jdXNOb2RlKFJlYWN0RE9NQ29t
cG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKHRoaXMpKTtcbiAgfVxufTtcblxubW9kdWxl
LmV4cG9ydHMgPSBBdXRvRm9jdXNVdGlscztcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBX
RUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL0F1dG9Gb2N1c1V0aWxzLmpzXG4g
KiogbW9kdWxlIGlkID0gMTI1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFdmVudFByb3Bh
Z2F0b3JzID0gcmVxdWlyZSgnLi9FdmVudFByb3BhZ2F0b3JzJyk7XG52YXIgRXhlY3V0aW9uRW52
aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xudmFy
IEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZSA9IHJlcXVpcmUoJy4vRmFsbGJhY2tDb21wb3NpdGlv
blN0YXRlJyk7XG52YXIgU3ludGhldGljQ29tcG9zaXRpb25FdmVudCA9IHJlcXVpcmUoJy4vU3lu
dGhldGljQ29tcG9zaXRpb25FdmVudCcpO1xudmFyIFN5bnRoZXRpY0lucHV0RXZlbnQgPSByZXF1
aXJlKCcuL1N5bnRoZXRpY0lucHV0RXZlbnQnKTtcblxudmFyIEVORF9LRVlDT0RFUyA9IFs5LCAx
MywgMjcsIDMyXTsgLy8gVGFiLCBSZXR1cm4sIEVzYywgU3BhY2VcbnZhciBTVEFSVF9LRVlDT0RF
ID0gMjI5O1xuXG52YXIgY2FuVXNlQ29tcG9zaXRpb25FdmVudCA9IEV4ZWN1dGlvbkVudmlyb25t
ZW50LmNhblVzZURPTSAmJiAnQ29tcG9zaXRpb25FdmVudCcgaW4gd2luZG93O1xuXG52YXIgZG9j
dW1lbnRNb2RlID0gbnVsbDtcbmlmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYg
J2RvY3VtZW50TW9kZScgaW4gZG9jdW1lbnQpIHtcbiAgZG9jdW1lbnRNb2RlID0gZG9jdW1lbnQu
ZG9jdW1lbnRNb2RlO1xufVxuXG4vLyBXZWJraXQgb2ZmZXJzIGEgdmVyeSB1c2VmdWwgYHRleHRJ
bnB1dGAgZXZlbnQgdGhhdCBjYW4gYmUgdXNlZCB0b1xuLy8gZGlyZWN0bHkgcmVwcmVzZW50IGBi
ZWZvcmVJbnB1dGAuIFRoZSBJRSBgdGV4dGlucHV0YCBldmVudCBpcyBub3QgYXNcbi8vIHVzZWZ1
bCwgc28gd2UgZG9uJ3QgdXNlIGl0LlxudmFyIGNhblVzZVRleHRJbnB1dEV2ZW50ID0gRXhlY3V0
aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYmICdUZXh0RXZlbnQnIGluIHdpbmRvdyAmJiAhZG9j
dW1lbnRNb2RlICYmICFpc1ByZXN0bygpO1xuXG4vLyBJbiBJRTkrLCB3ZSBoYXZlIGFjY2VzcyB0
byBjb21wb3NpdGlvbiBldmVudHMsIGJ1dCB0aGUgZGF0YSBzdXBwbGllZFxuLy8gYnkgdGhlIG5h
dGl2ZSBjb21wb3NpdGlvbmVuZCBldmVudCBtYXkgYmUgaW5jb3JyZWN0LiBKYXBhbmVzZSBpZGVv
Z3JhcGhpY1xuLy8gc3BhY2VzLCBmb3IgaW5zdGFuY2UgKFxcdTMwMDApIGFyZSBub3QgcmVjb3Jk
ZWQgY29ycmVjdGx5LlxudmFyIHVzZUZhbGxiYWNrQ29tcG9zaXRpb25EYXRhID0gRXhlY3V0aW9u
RW52aXJvbm1lbnQuY2FuVXNlRE9NICYmICghY2FuVXNlQ29tcG9zaXRpb25FdmVudCB8fCBkb2N1
bWVudE1vZGUgJiYgZG9jdW1lbnRNb2RlID4gOCAmJiBkb2N1bWVudE1vZGUgPD0gMTEpO1xuXG4v
KipcbiAqIE9wZXJhIDw9IDEyIGluY2x1ZGVzIFRleHRFdmVudCBpbiB3aW5kb3csIGJ1dCBkb2Vz
IG5vdCBmaXJlXG4gKiB0ZXh0IGlucHV0IGV2ZW50cy4gUmVseSBvbiBrZXlwcmVzcyBpbnN0ZWFk
LlxuICovXG5mdW5jdGlvbiBpc1ByZXN0bygpIHtcbiAgdmFyIG9wZXJhID0gd2luZG93Lm9wZXJh
O1xuICByZXR1cm4gdHlwZW9mIG9wZXJhID09PSAnb2JqZWN0JyAmJiB0eXBlb2Ygb3BlcmEudmVy
c2lvbiA9PT0gJ2Z1bmN0aW9uJyAmJiBwYXJzZUludChvcGVyYS52ZXJzaW9uKCksIDEwKSA8PSAx
Mjtcbn1cblxudmFyIFNQQUNFQkFSX0NPREUgPSAzMjtcbnZhciBTUEFDRUJBUl9DSEFSID0gU3Ry
aW5nLmZyb21DaGFyQ29kZShTUEFDRUJBUl9DT0RFKTtcblxuLy8gRXZlbnRzIGFuZCB0aGVpciBj
b3JyZXNwb25kaW5nIHByb3BlcnR5IG5hbWVzLlxudmFyIGV2ZW50VHlwZXMgPSB7XG4gIGJlZm9y
ZUlucHV0OiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6
ICdvbkJlZm9yZUlucHV0JyxcbiAgICAgIGNhcHR1cmVkOiAnb25CZWZvcmVJbnB1dENhcHR1cmUn
XG4gICAgfSxcbiAgICBkZXBlbmRlbmNpZXM6IFsndG9wQ29tcG9zaXRpb25FbmQnLCAndG9wS2V5
UHJlc3MnLCAndG9wVGV4dElucHV0JywgJ3RvcFBhc3RlJ11cbiAgfSxcbiAgY29tcG9zaXRpb25F
bmQ6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDogJ29u
Q29tcG9zaXRpb25FbmQnLFxuICAgICAgY2FwdHVyZWQ6ICdvbkNvbXBvc2l0aW9uRW5kQ2FwdHVy
ZSdcbiAgICB9LFxuICAgIGRlcGVuZGVuY2llczogWyd0b3BCbHVyJywgJ3RvcENvbXBvc2l0aW9u
RW5kJywgJ3RvcEtleURvd24nLCAndG9wS2V5UHJlc3MnLCAndG9wS2V5VXAnLCAndG9wTW91c2VE
b3duJ11cbiAgfSxcbiAgY29tcG9zaXRpb25TdGFydDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlv
bk5hbWVzOiB7XG4gICAgICBidWJibGVkOiAnb25Db21wb3NpdGlvblN0YXJ0JyxcbiAgICAgIGNh
cHR1cmVkOiAnb25Db21wb3NpdGlvblN0YXJ0Q2FwdHVyZSdcbiAgICB9LFxuICAgIGRlcGVuZGVu
Y2llczogWyd0b3BCbHVyJywgJ3RvcENvbXBvc2l0aW9uU3RhcnQnLCAndG9wS2V5RG93bicsICd0
b3BLZXlQcmVzcycsICd0b3BLZXlVcCcsICd0b3BNb3VzZURvd24nXVxuICB9LFxuICBjb21wb3Np
dGlvblVwZGF0ZToge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gICAgICBidWJi
bGVkOiAnb25Db21wb3NpdGlvblVwZGF0ZScsXG4gICAgICBjYXB0dXJlZDogJ29uQ29tcG9zaXRp
b25VcGRhdGVDYXB0dXJlJ1xuICAgIH0sXG4gICAgZGVwZW5kZW5jaWVzOiBbJ3RvcEJsdXInLCAn
dG9wQ29tcG9zaXRpb25VcGRhdGUnLCAndG9wS2V5RG93bicsICd0b3BLZXlQcmVzcycsICd0b3BL
ZXlVcCcsICd0b3BNb3VzZURvd24nXVxuICB9XG59O1xuXG4vLyBUcmFjayB3aGV0aGVyIHdlJ3Zl
IGV2ZXIgaGFuZGxlZCBhIGtleXByZXNzIG9uIHRoZSBzcGFjZSBrZXkuXG52YXIgaGFzU3BhY2VL
ZXlwcmVzcyA9IGZhbHNlO1xuXG4vKipcbiAqIFJldHVybiB3aGV0aGVyIGEgbmF0aXZlIGtleXBy
ZXNzIGV2ZW50IGlzIGFzc3VtZWQgdG8gYmUgYSBjb21tYW5kLlxuICogVGhpcyBpcyByZXF1aXJl
ZCBiZWNhdXNlIEZpcmVmb3ggZmlyZXMgYGtleXByZXNzYCBldmVudHMgZm9yIGtleSBjb21tYW5k
c1xuICogKGN1dCwgY29weSwgc2VsZWN0LWFsbCwgZXRjLikgZXZlbiB0aG91Z2ggbm8gY2hhcmFj
dGVyIGlzIGluc2VydGVkLlxuICovXG5mdW5jdGlvbiBpc0tleXByZXNzQ29tbWFuZChuYXRpdmVF
dmVudCkge1xuICByZXR1cm4gKG5hdGl2ZUV2ZW50LmN0cmxLZXkgfHwgbmF0aXZlRXZlbnQuYWx0
S2V5IHx8IG5hdGl2ZUV2ZW50Lm1ldGFLZXkpICYmXG4gIC8vIGN0cmxLZXkgJiYgYWx0S2V5IGlz
IGVxdWl2YWxlbnQgdG8gQWx0R3IsIGFuZCBpcyBub3QgYSBjb21tYW5kLlxuICAhKG5hdGl2ZUV2
ZW50LmN0cmxLZXkgJiYgbmF0aXZlRXZlbnQuYWx0S2V5KTtcbn1cblxuLyoqXG4gKiBUcmFuc2xh
dGUgbmF0aXZlIHRvcCBsZXZlbCBldmVudHMgaW50byBldmVudCB0eXBlcy5cbiAqXG4gKiBAcGFy
YW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlXG4gKiBAcmV0dXJuIHtvYmplY3R9XG4gKi9cbmZ1bmN0
aW9uIGdldENvbXBvc2l0aW9uRXZlbnRUeXBlKHRvcExldmVsVHlwZSkge1xuICBzd2l0Y2ggKHRv
cExldmVsVHlwZSkge1xuICAgIGNhc2UgJ3RvcENvbXBvc2l0aW9uU3RhcnQnOlxuICAgICAgcmV0
dXJuIGV2ZW50VHlwZXMuY29tcG9zaXRpb25TdGFydDtcbiAgICBjYXNlICd0b3BDb21wb3NpdGlv
bkVuZCc6XG4gICAgICByZXR1cm4gZXZlbnRUeXBlcy5jb21wb3NpdGlvbkVuZDtcbiAgICBjYXNl
ICd0b3BDb21wb3NpdGlvblVwZGF0ZSc6XG4gICAgICByZXR1cm4gZXZlbnRUeXBlcy5jb21wb3Np
dGlvblVwZGF0ZTtcbiAgfVxufVxuXG4vKipcbiAqIERvZXMgb3VyIGZhbGxiYWNrIGJlc3QtZ3Vl
c3MgbW9kZWwgdGhpbmsgdGhpcyBldmVudCBzaWduaWZpZXMgdGhhdFxuICogY29tcG9zaXRpb24g
aGFzIGJlZ3VuP1xuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGVcbiAqIEBwYXJh
bSB7b2JqZWN0fSBuYXRpdmVFdmVudFxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rp
b24gaXNGYWxsYmFja0NvbXBvc2l0aW9uU3RhcnQodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkg
e1xuICByZXR1cm4gdG9wTGV2ZWxUeXBlID09PSAndG9wS2V5RG93bicgJiYgbmF0aXZlRXZlbnQu
a2V5Q29kZSA9PT0gU1RBUlRfS0VZQ09ERTtcbn1cblxuLyoqXG4gKiBEb2VzIG91ciBmYWxsYmFj
ayBtb2RlIHRoaW5rIHRoYXQgdGhpcyBldmVudCBpcyB0aGUgZW5kIG9mIGNvbXBvc2l0aW9uP1xu
ICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGVcbiAqIEBwYXJhbSB7b2JqZWN0fSBu
YXRpdmVFdmVudFxuICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaXNGYWxsYmFj
a0NvbXBvc2l0aW9uRW5kKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpIHtcbiAgc3dpdGNoICh0
b3BMZXZlbFR5cGUpIHtcbiAgICBjYXNlICd0b3BLZXlVcCc6XG4gICAgICAvLyBDb21tYW5kIGtl
eXMgaW5zZXJ0IG9yIGNsZWFyIElNRSBpbnB1dC5cbiAgICAgIHJldHVybiBFTkRfS0VZQ09ERVMu
aW5kZXhPZihuYXRpdmVFdmVudC5rZXlDb2RlKSAhPT0gLTE7XG4gICAgY2FzZSAndG9wS2V5RG93
bic6XG4gICAgICAvLyBFeHBlY3QgSU1FIGtleUNvZGUgb24gZWFjaCBrZXlkb3duLiBJZiB3ZSBn
ZXQgYW55IG90aGVyXG4gICAgICAvLyBjb2RlIHdlIG11c3QgaGF2ZSBleGl0ZWQgZWFybGllci5c
biAgICAgIHJldHVybiBuYXRpdmVFdmVudC5rZXlDb2RlICE9PSBTVEFSVF9LRVlDT0RFO1xuICAg
IGNhc2UgJ3RvcEtleVByZXNzJzpcbiAgICBjYXNlICd0b3BNb3VzZURvd24nOlxuICAgIGNhc2Ug
J3RvcEJsdXInOlxuICAgICAgLy8gRXZlbnRzIGFyZSBub3QgcG9zc2libGUgd2l0aG91dCBjYW5j
ZWxsaW5nIElNRS5cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1
cm4gZmFsc2U7XG4gIH1cbn1cblxuLyoqXG4gKiBHb29nbGUgSW5wdXQgVG9vbHMgcHJvdmlkZXMg
Y29tcG9zaXRpb24gZGF0YSB2aWEgYSBDdXN0b21FdmVudCxcbiAqIHdpdGggdGhlIGBkYXRhYCBw
cm9wZXJ0eSBwb3B1bGF0ZWQgaW4gdGhlIGBkZXRhaWxgIG9iamVjdC4gSWYgdGhpc1xuICogaXMg
YXZhaWxhYmxlIG9uIHRoZSBldmVudCBvYmplY3QsIHVzZSBpdC4gSWYgbm90LCB0aGlzIGlzIGEg
cGxhaW5cbiAqIGNvbXBvc2l0aW9uIGV2ZW50IGFuZCB3ZSBoYXZlIG5vdGhpbmcgc3BlY2lhbCB0
byBleHRyYWN0LlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudFxuICogQHJldHVy
biB7P3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gZ2V0RGF0YUZyb21DdXN0b21FdmVudChuYXRpdmVF
dmVudCkge1xuICB2YXIgZGV0YWlsID0gbmF0aXZlRXZlbnQuZGV0YWlsO1xuICBpZiAodHlwZW9m
IGRldGFpbCA9PT0gJ29iamVjdCcgJiYgJ2RhdGEnIGluIGRldGFpbCkge1xuICAgIHJldHVybiBk
ZXRhaWwuZGF0YTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLy8gVHJhY2sgdGhlIGN1cnJl
bnQgSU1FIGNvbXBvc2l0aW9uIGZhbGxiYWNrIG9iamVjdCwgaWYgYW55LlxudmFyIGN1cnJlbnRD
b21wb3NpdGlvbiA9IG51bGw7XG5cbi8qKlxuICogQHJldHVybiB7P29iamVjdH0gQSBTeW50aGV0
aWNDb21wb3NpdGlvbkV2ZW50LlxuICovXG5mdW5jdGlvbiBleHRyYWN0Q29tcG9zaXRpb25FdmVu
dCh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdl
dCkge1xuICB2YXIgZXZlbnRUeXBlO1xuICB2YXIgZmFsbGJhY2tEYXRhO1xuXG4gIGlmIChjYW5V
c2VDb21wb3NpdGlvbkV2ZW50KSB7XG4gICAgZXZlbnRUeXBlID0gZ2V0Q29tcG9zaXRpb25FdmVu
dFR5cGUodG9wTGV2ZWxUeXBlKTtcbiAgfSBlbHNlIGlmICghY3VycmVudENvbXBvc2l0aW9uKSB7
XG4gICAgaWYgKGlzRmFsbGJhY2tDb21wb3NpdGlvblN0YXJ0KHRvcExldmVsVHlwZSwgbmF0aXZl
RXZlbnQpKSB7XG4gICAgICBldmVudFR5cGUgPSBldmVudFR5cGVzLmNvbXBvc2l0aW9uU3RhcnQ7
XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzRmFsbGJhY2tDb21wb3NpdGlvbkVuZCh0b3BMZXZlbFR5
cGUsIG5hdGl2ZUV2ZW50KSkge1xuICAgIGV2ZW50VHlwZSA9IGV2ZW50VHlwZXMuY29tcG9zaXRp
b25FbmQ7XG4gIH1cblxuICBpZiAoIWV2ZW50VHlwZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9
XG5cbiAgaWYgKHVzZUZhbGxiYWNrQ29tcG9zaXRpb25EYXRhKSB7XG4gICAgLy8gVGhlIGN1cnJl
bnQgY29tcG9zaXRpb24gaXMgc3RvcmVkIHN0YXRpY2FsbHkgYW5kIG11c3Qgbm90IGJlXG4gICAg
Ly8gb3ZlcndyaXR0ZW4gd2hpbGUgY29tcG9zaXRpb24gY29udGludWVzLlxuICAgIGlmICghY3Vy
cmVudENvbXBvc2l0aW9uICYmIGV2ZW50VHlwZSA9PT0gZXZlbnRUeXBlcy5jb21wb3NpdGlvblN0
YXJ0KSB7XG4gICAgICBjdXJyZW50Q29tcG9zaXRpb24gPSBGYWxsYmFja0NvbXBvc2l0aW9uU3Rh
dGUuZ2V0UG9vbGVkKG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbiAgICB9IGVsc2UgaWYgKGV2ZW50VHlw
ZSA9PT0gZXZlbnRUeXBlcy5jb21wb3NpdGlvbkVuZCkge1xuICAgICAgaWYgKGN1cnJlbnRDb21w
b3NpdGlvbikge1xuICAgICAgICBmYWxsYmFja0RhdGEgPSBjdXJyZW50Q29tcG9zaXRpb24uZ2V0
RGF0YSgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHZhciBldmVudCA9IFN5bnRoZXRpY0Nv
bXBvc2l0aW9uRXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZl
bnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcblxuICBpZiAoZmFsbGJhY2tEYXRhKSB7XG4gICAgLy8g
SW5qZWN0IGRhdGEgZ2VuZXJhdGVkIGZyb20gZmFsbGJhY2sgcGF0aCBpbnRvIHRoZSBzeW50aGV0
aWMgZXZlbnQuXG4gICAgLy8gVGhpcyBtYXRjaGVzIHRoZSBwcm9wZXJ0eSBvZiBuYXRpdmUgQ29t
cG9zaXRpb25FdmVudEludGVyZmFjZS5cbiAgICBldmVudC5kYXRhID0gZmFsbGJhY2tEYXRhO1xu
ICB9IGVsc2Uge1xuICAgIHZhciBjdXN0b21EYXRhID0gZ2V0RGF0YUZyb21DdXN0b21FdmVudChu
YXRpdmVFdmVudCk7XG4gICAgaWYgKGN1c3RvbURhdGEgIT09IG51bGwpIHtcbiAgICAgIGV2ZW50
LmRhdGEgPSBjdXN0b21EYXRhO1xuICAgIH1cbiAgfVxuXG4gIEV2ZW50UHJvcGFnYXRvcnMuYWNj
dW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhldmVudCk7XG4gIHJldHVybiBldmVudDtcbn1cblxu
LyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBFdmVudENv
bnN0YW50c2AuXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIg
ZXZlbnQuXG4gKiBAcmV0dXJuIHs/c3RyaW5nfSBUaGUgc3RyaW5nIGNvcnJlc3BvbmRpbmcgdG8g
dGhpcyBgYmVmb3JlSW5wdXRgIGV2ZW50LlxuICovXG5mdW5jdGlvbiBnZXROYXRpdmVCZWZvcmVJ
bnB1dENoYXJzKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpIHtcbiAgc3dpdGNoICh0b3BMZXZl
bFR5cGUpIHtcbiAgICBjYXNlICd0b3BDb21wb3NpdGlvbkVuZCc6XG4gICAgICByZXR1cm4gZ2V0
RGF0YUZyb21DdXN0b21FdmVudChuYXRpdmVFdmVudCk7XG4gICAgY2FzZSAndG9wS2V5UHJlc3Mn
OlxuICAgICAgLyoqXG4gICAgICAgKiBJZiBuYXRpdmUgYHRleHRJbnB1dGAgZXZlbnRzIGFyZSBh
dmFpbGFibGUsIG91ciBnb2FsIGlzIHRvIG1ha2VcbiAgICAgICAqIHVzZSBvZiB0aGVtLiBIb3dl
dmVyLCB0aGVyZSBpcyBhIHNwZWNpYWwgY2FzZTogdGhlIHNwYWNlYmFyIGtleS5cbiAgICAgICAq
IEluIFdlYmtpdCwgcHJldmVudGluZyBkZWZhdWx0IG9uIGEgc3BhY2ViYXIgYHRleHRJbnB1dGAg
ZXZlbnRcbiAgICAgICAqIGNhbmNlbHMgY2hhcmFjdGVyIGluc2VydGlvbiwgYnV0IGl0ICphbHNv
KiBjYXVzZXMgdGhlIGJyb3dzZXJcbiAgICAgICAqIHRvIGZhbGwgYmFjayB0byBpdHMgZGVmYXVs
dCBzcGFjZWJhciBiZWhhdmlvciBvZiBzY3JvbGxpbmcgdGhlXG4gICAgICAgKiBwYWdlLlxuICAg
ICAgICpcbiAgICAgICAqIFRyYWNraW5nIGF0OlxuICAgICAgICogaHR0cHM6Ly9jb2RlLmdvb2ds
ZS5jb20vcC9jaHJvbWl1bS9pc3N1ZXMvZGV0YWlsP2lkPTM1NTEwM1xuICAgICAgICpcbiAgICAg
ICAqIFRvIGF2b2lkIHRoaXMgaXNzdWUsIHVzZSB0aGUga2V5cHJlc3MgZXZlbnQgYXMgaWYgbm8g
YHRleHRJbnB1dGBcbiAgICAgICAqIGV2ZW50IGlzIGF2YWlsYWJsZS5cbiAgICAgICAqL1xuICAg
ICAgdmFyIHdoaWNoID0gbmF0aXZlRXZlbnQud2hpY2g7XG4gICAgICBpZiAod2hpY2ggIT09IFNQ
QUNFQkFSX0NPREUpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG5cbiAgICAgIGhh
c1NwYWNlS2V5cHJlc3MgPSB0cnVlO1xuICAgICAgcmV0dXJuIFNQQUNFQkFSX0NIQVI7XG5cbiAg
ICBjYXNlICd0b3BUZXh0SW5wdXQnOlxuICAgICAgLy8gUmVjb3JkIHRoZSBjaGFyYWN0ZXJzIHRv
IGJlIGFkZGVkIHRvIHRoZSBET00uXG4gICAgICB2YXIgY2hhcnMgPSBuYXRpdmVFdmVudC5kYXRh
O1xuXG4gICAgICAvLyBJZiBpdCdzIGEgc3BhY2ViYXIgY2hhcmFjdGVyLCBhc3N1bWUgdGhhdCB3
ZSBoYXZlIGFscmVhZHkgaGFuZGxlZFxuICAgICAgLy8gaXQgYXQgdGhlIGtleXByZXNzIGxldmVs
IGFuZCBiYWlsIGltbWVkaWF0ZWx5LiBBbmRyb2lkIENocm9tZVxuICAgICAgLy8gZG9lc24ndCBn
aXZlIHVzIGtleWNvZGVzLCBzbyB3ZSBuZWVkIHRvIGJsYWNrbGlzdCBpdC5cbiAgICAgIGlmIChj
aGFycyA9PT0gU1BBQ0VCQVJfQ0hBUiAmJiBoYXNTcGFjZUtleXByZXNzKSB7XG4gICAgICAgIHJl
dHVybiBudWxsO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY2hhcnM7XG5cbiAgICBkZWZhdWx0
OlxuICAgICAgLy8gRm9yIG90aGVyIG5hdGl2ZSBldmVudCB0eXBlcywgZG8gbm90aGluZy5cbiAg
ICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qKlxuICogRm9yIGJyb3dzZXJzIHRoYXQgZG8g
bm90IHByb3ZpZGUgdGhlIGB0ZXh0SW5wdXRgIGV2ZW50LCBleHRyYWN0IHRoZVxuICogYXBwcm9w
cmlhdGUgc3RyaW5nIHRvIHVzZSBmb3IgU3ludGhldGljSW5wdXRFdmVudC5cbiAqXG4gKiBAcGFy
YW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuXG4g
KiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBA
cmV0dXJuIHs/c3RyaW5nfSBUaGUgZmFsbGJhY2sgc3RyaW5nIGZvciB0aGlzIGBiZWZvcmVJbnB1
dGAgZXZlbnQuXG4gKi9cbmZ1bmN0aW9uIGdldEZhbGxiYWNrQmVmb3JlSW5wdXRDaGFycyh0b3BM
ZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSB7XG4gIC8vIElmIHdlIGFyZSBjdXJyZW50bHkgY29tcG9z
aW5nIChJTUUpIGFuZCB1c2luZyBhIGZhbGxiYWNrIHRvIGRvIHNvLFxuICAvLyB0cnkgdG8gZXh0
cmFjdCB0aGUgY29tcG9zZWQgY2hhcmFjdGVycyBmcm9tIHRoZSBmYWxsYmFjayBvYmplY3QuXG4g
IC8vIElmIGNvbXBvc2l0aW9uIGV2ZW50IGlzIGF2YWlsYWJsZSwgd2UgZXh0cmFjdCBhIHN0cmlu
ZyBvbmx5IGF0XG4gIC8vIGNvbXBvc2l0aW9uZXZlbnQsIG90aGVyd2lzZSBleHRyYWN0IGl0IGF0
IGZhbGxiYWNrIGV2ZW50cy5cbiAgaWYgKGN1cnJlbnRDb21wb3NpdGlvbikge1xuICAgIGlmICh0
b3BMZXZlbFR5cGUgPT09ICd0b3BDb21wb3NpdGlvbkVuZCcgfHwgIWNhblVzZUNvbXBvc2l0aW9u
RXZlbnQgJiYgaXNGYWxsYmFja0NvbXBvc2l0aW9uRW5kKHRvcExldmVsVHlwZSwgbmF0aXZlRXZl
bnQpKSB7XG4gICAgICB2YXIgY2hhcnMgPSBjdXJyZW50Q29tcG9zaXRpb24uZ2V0RGF0YSgpO1xu
ICAgICAgRmFsbGJhY2tDb21wb3NpdGlvblN0YXRlLnJlbGVhc2UoY3VycmVudENvbXBvc2l0aW9u
KTtcbiAgICAgIGN1cnJlbnRDb21wb3NpdGlvbiA9IG51bGw7XG4gICAgICByZXR1cm4gY2hhcnM7
XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgc3dpdGNoICh0b3BMZXZlbFR5cGUp
IHtcbiAgICBjYXNlICd0b3BQYXN0ZSc6XG4gICAgICAvLyBJZiBhIHBhc3RlIGV2ZW50IG9jY3Vy
cyBhZnRlciBhIGtleXByZXNzLCB0aHJvdyBvdXQgdGhlIGlucHV0XG4gICAgICAvLyBjaGFycy4g
UGFzdGUgZXZlbnRzIHNob3VsZCBub3QgbGVhZCB0byBCZWZvcmVJbnB1dCBldmVudHMuXG4gICAg
ICByZXR1cm4gbnVsbDtcbiAgICBjYXNlICd0b3BLZXlQcmVzcyc6XG4gICAgICAvKipcbiAgICAg
ICAqIEFzIG9mIHYyNywgRmlyZWZveCBtYXkgZmlyZSBrZXlwcmVzcyBldmVudHMgZXZlbiB3aGVu
IG5vIGNoYXJhY3RlclxuICAgICAgICogd2lsbCBiZSBpbnNlcnRlZC4gQSBmZXcgcG9zc2liaWxp
dGllczpcbiAgICAgICAqXG4gICAgICAgKiAtIGB3aGljaGAgaXMgYDBgLiBBcnJvdyBrZXlzLCBF
c2Mga2V5LCBldGMuXG4gICAgICAgKlxuICAgICAgICogLSBgd2hpY2hgIGlzIHRoZSBwcmVzc2Vk
IGtleSBjb2RlLCBidXQgbm8gY2hhciBpcyBhdmFpbGFibGUuXG4gICAgICAgKiAgIEV4OiAnQWx0
R3IgKyBkYCBpbiBQb2xpc2guIFRoZXJlIGlzIG5vIG1vZGlmaWVkIGNoYXJhY3RlciBmb3JcbiAg
ICAgICAqICAgdGhpcyBrZXkgY29tYmluYXRpb24gYW5kIG5vIGNoYXJhY3RlciBpcyBpbnNlcnRl
ZCBpbnRvIHRoZVxuICAgICAgICogICBkb2N1bWVudCwgYnV0IEZGIGZpcmVzIHRoZSBrZXlwcmVz
cyBmb3IgY2hhciBjb2RlIGAxMDBgIGFueXdheS5cbiAgICAgICAqICAgTm8gYGlucHV0YCBldmVu
dCB3aWxsIG9jY3VyLlxuICAgICAgICpcbiAgICAgICAqIC0gYHdoaWNoYCBpcyB0aGUgcHJlc3Nl
ZCBrZXkgY29kZSwgYnV0IGEgY29tbWFuZCBjb21iaW5hdGlvbiBpc1xuICAgICAgICogICBiZWlu
ZyB1c2VkLiBFeDogYENtZCtDYC4gTm8gY2hhcmFjdGVyIGlzIGluc2VydGVkLCBhbmQgbm9cbiAg
ICAgICAqICAgYGlucHV0YCBldmVudCB3aWxsIG9jY3VyLlxuICAgICAgICovXG4gICAgICBpZiAo
bmF0aXZlRXZlbnQud2hpY2ggJiYgIWlzS2V5cHJlc3NDb21tYW5kKG5hdGl2ZUV2ZW50KSkge1xu
ICAgICAgICByZXR1cm4gU3RyaW5nLmZyb21DaGFyQ29kZShuYXRpdmVFdmVudC53aGljaCk7XG4g
ICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICBjYXNlICd0b3BDb21wb3NpdGlvbkVuZCc6
XG4gICAgICByZXR1cm4gdXNlRmFsbGJhY2tDb21wb3NpdGlvbkRhdGEgPyBudWxsIDogbmF0aXZl
RXZlbnQuZGF0YTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cblxu
LyoqXG4gKiBFeHRyYWN0IGEgU3ludGhldGljSW5wdXRFdmVudCBmb3IgYGJlZm9yZUlucHV0YCwg
YmFzZWQgb24gZWl0aGVyIG5hdGl2ZVxuICogYHRleHRJbnB1dGAgb3IgZmFsbGJhY2sgYmVoYXZp
b3IuXG4gKlxuICogQHJldHVybiB7P29iamVjdH0gQSBTeW50aGV0aWNJbnB1dEV2ZW50LlxuICov
XG5mdW5jdGlvbiBleHRyYWN0QmVmb3JlSW5wdXRFdmVudCh0b3BMZXZlbFR5cGUsIHRhcmdldElu
c3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICB2YXIgY2hhcnM7XG5cbiAg
aWYgKGNhblVzZVRleHRJbnB1dEV2ZW50KSB7XG4gICAgY2hhcnMgPSBnZXROYXRpdmVCZWZvcmVJ
bnB1dENoYXJzKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpO1xuICB9IGVsc2Uge1xuICAgIGNo
YXJzID0gZ2V0RmFsbGJhY2tCZWZvcmVJbnB1dENoYXJzKHRvcExldmVsVHlwZSwgbmF0aXZlRXZl
bnQpO1xuICB9XG5cbiAgLy8gSWYgbm8gY2hhcmFjdGVycyBhcmUgYmVpbmcgaW5zZXJ0ZWQsIG5v
IEJlZm9yZUlucHV0IGV2ZW50IHNob3VsZFxuICAvLyBiZSBmaXJlZC5cbiAgaWYgKCFjaGFycykg
e1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgdmFyIGV2ZW50ID0gU3ludGhldGljSW5wdXRF
dmVudC5nZXRQb29sZWQoZXZlbnRUeXBlcy5iZWZvcmVJbnB1dCwgdGFyZ2V0SW5zdCwgbmF0aXZl
RXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcblxuICBldmVudC5kYXRhID0gY2hhcnM7XG4gIEV2
ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhldmVudCk7XG4gIHJl
dHVybiBldmVudDtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYW4gYG9uQmVmb3JlSW5wdXRgIGV2ZW50
IHRvIG1hdGNoXG4gKiBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDEzL1dELURPTS1MZXZlbC0zLUV2
ZW50cy0yMDEzMTEwNS8jZXZlbnRzLWlucHV0ZXZlbnRzLlxuICpcbiAqIFRoaXMgZXZlbnQgcGx1
Z2luIGlzIGJhc2VkIG9uIHRoZSBuYXRpdmUgYHRleHRJbnB1dGAgZXZlbnRcbiAqIGF2YWlsYWJs
ZSBpbiBDaHJvbWUsIFNhZmFyaSwgT3BlcmEsIGFuZCBJRS4gVGhpcyBldmVudCBmaXJlcyBhZnRl
clxuICogYG9uS2V5UHJlc3NgIGFuZCBgb25Db21wb3NpdGlvbkVuZGAsIGJ1dCBiZWZvcmUgYG9u
SW5wdXRgLlxuICpcbiAqIGBiZWZvcmVJbnB1dGAgaXMgc3BlYydkIGJ1dCBub3QgaW1wbGVtZW50
ZWQgaW4gYW55IGJyb3dzZXJzLCBhbmRcbiAqIHRoZSBgaW5wdXRgIGV2ZW50IGRvZXMgbm90IHBy
b3ZpZGUgYW55IHVzZWZ1bCBpbmZvcm1hdGlvbiBhYm91dCB3aGF0IGhhc1xuICogYWN0dWFsbHkg
YmVlbiBhZGRlZCwgY29udHJhcnkgdG8gdGhlIHNwZWMuIFRodXMsIGB0ZXh0SW5wdXRgIGlzIHRo
ZSBiZXN0XG4gKiBhdmFpbGFibGUgZXZlbnQgdG8gaWRlbnRpZnkgdGhlIGNoYXJhY3RlcnMgdGhh
dCBoYXZlIGFjdHVhbGx5IGJlZW4gaW5zZXJ0ZWRcbiAqIGludG8gdGhlIHRhcmdldCBub2RlLlxu
ICpcbiAqIFRoaXMgcGx1Z2luIGlzIGFsc28gcmVzcG9uc2libGUgZm9yIGVtaXR0aW5nIGBjb21w
b3NpdGlvbmAgZXZlbnRzLCB0aHVzXG4gKiBhbGxvd2luZyB1cyB0byBzaGFyZSBjb21wb3NpdGlv
biBmYWxsYmFjayBjb2RlIGZvciBib3RoIGBiZWZvcmVJbnB1dGAgYW5kXG4gKiBgY29tcG9zaXRp
b25gIGV2ZW50IHR5cGVzLlxuICovXG52YXIgQmVmb3JlSW5wdXRFdmVudFBsdWdpbiA9IHtcbiAg
ZXZlbnRUeXBlczogZXZlbnRUeXBlcyxcblxuICBleHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9w
TGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtc
biAgICByZXR1cm4gW2V4dHJhY3RDb21wb3NpdGlvbkV2ZW50KHRvcExldmVsVHlwZSwgdGFyZ2V0
SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSwgZXh0cmFjdEJlZm9yZUlucHV0
RXZlbnQodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRU
YXJnZXQpXTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBCZWZvcmVJbnB1dEV2ZW50UGx1
Z2luO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+
L3JlYWN0LWRvbS9saWIvQmVmb3JlSW5wdXRFdmVudFBsdWdpbi5qc1xuICoqIG1vZHVsZSBpZCA9
IDEyNlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4g
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIENTU1Byb3BlcnR5ID0gcmVxdWlyZSgn
Li9DU1NQcm9wZXJ0eScpO1xudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnZmJq
cy9saWIvRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcbnZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9
IHJlcXVpcmUoJy4vUmVhY3RJbnN0cnVtZW50YXRpb24nKTtcblxudmFyIGNhbWVsaXplU3R5bGVO
YW1lID0gcmVxdWlyZSgnZmJqcy9saWIvY2FtZWxpemVTdHlsZU5hbWUnKTtcbnZhciBkYW5nZXJv
dXNTdHlsZVZhbHVlID0gcmVxdWlyZSgnLi9kYW5nZXJvdXNTdHlsZVZhbHVlJyk7XG52YXIgaHlw
aGVuYXRlU3R5bGVOYW1lID0gcmVxdWlyZSgnZmJqcy9saWIvaHlwaGVuYXRlU3R5bGVOYW1lJyk7
XG52YXIgbWVtb2l6ZVN0cmluZ09ubHkgPSByZXF1aXJlKCdmYmpzL2xpYi9tZW1vaXplU3RyaW5n
T25seScpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZh
ciBwcm9jZXNzU3R5bGVOYW1lID0gbWVtb2l6ZVN0cmluZ09ubHkoZnVuY3Rpb24gKHN0eWxlTmFt
ZSkge1xuICByZXR1cm4gaHlwaGVuYXRlU3R5bGVOYW1lKHN0eWxlTmFtZSk7XG59KTtcblxudmFy
IGhhc1Nob3J0aGFuZFByb3BlcnR5QnVnID0gZmFsc2U7XG52YXIgc3R5bGVGbG9hdEFjY2Vzc29y
ID0gJ2Nzc0Zsb2F0JztcbmlmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHtcbiAg
dmFyIHRlbXBTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLnN0eWxlO1xuICB0
cnkge1xuICAgIC8vIElFOCB0aHJvd3MgXCJJbnZhbGlkIGFyZ3VtZW50LlwiIGlmIHJlc2V0dGlu
ZyBzaG9ydGhhbmQgc3R5bGUgcHJvcGVydGllcy5cbiAgICB0ZW1wU3R5bGUuZm9udCA9ICcnO1xu
ICB9IGNhdGNoIChlKSB7XG4gICAgaGFzU2hvcnRoYW5kUHJvcGVydHlCdWcgPSB0cnVlO1xuICB9
XG4gIC8vIElFOCBvbmx5IHN1cHBvcnRzIGFjY2Vzc2luZyBjc3NGbG9hdCAoc3RhbmRhcmQpIGFz
IHN0eWxlRmxvYXRcbiAgaWYgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5jc3NGbG9h
dCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgc3R5bGVGbG9hdEFjY2Vzc29yID0gJ3N0eWxlRmxvYXQn
O1xuICB9XG59XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
XG4gIC8vICdtc1RyYW5zZm9ybScgaXMgY29ycmVjdCwgYnV0IHRoZSBvdGhlciBwcmVmaXhlcyBz
aG91bGQgYmUgY2FwaXRhbGl6ZWRcbiAgdmFyIGJhZFZlbmRvcmVkU3R5bGVOYW1lUGF0dGVybiA9
IC9eKD86d2Via2l0fG1venxvKVtBLVpdLztcblxuICAvLyBzdHlsZSB2YWx1ZXMgc2hvdWxkbid0
IGNvbnRhaW4gYSBzZW1pY29sb25cbiAgdmFyIGJhZFN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uUGF0
dGVybiA9IC87XFxzKiQvO1xuXG4gIHZhciB3YXJuZWRTdHlsZU5hbWVzID0ge307XG4gIHZhciB3
YXJuZWRTdHlsZVZhbHVlcyA9IHt9O1xuICB2YXIgd2FybmVkRm9yTmFOVmFsdWUgPSBmYWxzZTtc
blxuICB2YXIgd2Fybkh5cGhlbmF0ZWRTdHlsZU5hbWUgPSBmdW5jdGlvbiAobmFtZSwgb3duZXIp
IHtcbiAgICBpZiAod2FybmVkU3R5bGVOYW1lcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJiB3YXJu
ZWRTdHlsZU5hbWVzW25hbWVdKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgd2FybmVk
U3R5bGVOYW1lc1tuYW1lXSA9IHRydWU7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdVbnN1cHBvcnRlZCBzdHlsZSBwcm9wZXJ0eSAl
cy4gRGlkIHlvdSBtZWFuICVzPyVzJywgbmFtZSwgY2FtZWxpemVTdHlsZU5hbWUobmFtZSksIGNo
ZWNrUmVuZGVyTWVzc2FnZShvd25lcikpIDogdm9pZCAwO1xuICB9O1xuXG4gIHZhciB3YXJuQmFk
VmVuZG9yZWRTdHlsZU5hbWUgPSBmdW5jdGlvbiAobmFtZSwgb3duZXIpIHtcbiAgICBpZiAod2Fy
bmVkU3R5bGVOYW1lcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSAmJiB3YXJuZWRTdHlsZU5hbWVzW25h
bWVdKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgd2FybmVkU3R5bGVOYW1lc1tuYW1l
XSA9IHRydWU7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdh
cm5pbmcoZmFsc2UsICdVbnN1cHBvcnRlZCB2ZW5kb3ItcHJlZml4ZWQgc3R5bGUgcHJvcGVydHkg
JXMuIERpZCB5b3UgbWVhbiAlcz8lcycsIG5hbWUsIG5hbWUuY2hhckF0KDApLnRvVXBwZXJDYXNl
KCkgKyBuYW1lLnNsaWNlKDEpLCBjaGVja1JlbmRlck1lc3NhZ2Uob3duZXIpKSA6IHZvaWQgMDtc
biAgfTtcblxuICB2YXIgd2FyblN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uID0gZnVuY3Rpb24gKG5h
bWUsIHZhbHVlLCBvd25lcikge1xuICAgIGlmICh3YXJuZWRTdHlsZVZhbHVlcy5oYXNPd25Qcm9w
ZXJ0eSh2YWx1ZSkgJiYgd2FybmVkU3R5bGVWYWx1ZXNbdmFsdWVdKSB7XG4gICAgICByZXR1cm47
XG4gICAgfVxuXG4gICAgd2FybmVkU3R5bGVWYWx1ZXNbdmFsdWVdID0gdHJ1ZTtcbiAgICBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgXCJTdHls
ZSBwcm9wZXJ0eSB2YWx1ZXMgc2hvdWxkbid0IGNvbnRhaW4gYSBzZW1pY29sb24uJXMgXCIgKyAn
VHJ5IFwiJXM6ICVzXCIgaW5zdGVhZC4nLCBjaGVja1JlbmRlck1lc3NhZ2Uob3duZXIpLCBuYW1l
LCB2YWx1ZS5yZXBsYWNlKGJhZFN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uUGF0dGVybiwgJycpKSA6
IHZvaWQgMDtcbiAgfTtcblxuICB2YXIgd2FyblN0eWxlVmFsdWVJc05hTiA9IGZ1bmN0aW9uIChu
YW1lLCB2YWx1ZSwgb3duZXIpIHtcbiAgICBpZiAod2FybmVkRm9yTmFOVmFsdWUpIHtcbiAgICAg
IHJldHVybjtcbiAgICB9XG5cbiAgICB3YXJuZWRGb3JOYU5WYWx1ZSA9IHRydWU7XG4gICAgcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdgTmFO
YCBpcyBhbiBpbnZhbGlkIHZhbHVlIGZvciB0aGUgYCVzYCBjc3Mgc3R5bGUgcHJvcGVydHkuJXMn
LCBuYW1lLCBjaGVja1JlbmRlck1lc3NhZ2Uob3duZXIpKSA6IHZvaWQgMDtcbiAgfTtcblxuICB2
YXIgY2hlY2tSZW5kZXJNZXNzYWdlID0gZnVuY3Rpb24gKG93bmVyKSB7XG4gICAgaWYgKG93bmVy
KSB7XG4gICAgICB2YXIgbmFtZSA9IG93bmVyLmdldE5hbWUoKTtcbiAgICAgIGlmIChuYW1lKSB7
XG4gICAgICAgIHJldHVybiAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSAr
ICdgLic7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiAnJztcbiAgfTtcblxuICAvKipcbiAg
ICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICogQHBhcmFtIHsqfSB2YWx1ZVxuICAgKiBAcGFy
YW0ge1JlYWN0RE9NQ29tcG9uZW50fSBjb21wb25lbnRcbiAgICovXG4gIHZhciB3YXJuVmFsaWRT
dHlsZSA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwgY29tcG9uZW50KSB7XG4gICAgdmFyIG93bmVy
O1xuICAgIGlmIChjb21wb25lbnQpIHtcbiAgICAgIG93bmVyID0gY29tcG9uZW50Ll9jdXJyZW50
RWxlbWVudC5fb3duZXI7XG4gICAgfVxuICAgIGlmIChuYW1lLmluZGV4T2YoJy0nKSA+IC0xKSB7
XG4gICAgICB3YXJuSHlwaGVuYXRlZFN0eWxlTmFtZShuYW1lLCBvd25lcik7XG4gICAgfSBlbHNl
IGlmIChiYWRWZW5kb3JlZFN0eWxlTmFtZVBhdHRlcm4udGVzdChuYW1lKSkge1xuICAgICAgd2Fy
bkJhZFZlbmRvcmVkU3R5bGVOYW1lKG5hbWUsIG93bmVyKTtcbiAgICB9IGVsc2UgaWYgKGJhZFN0
eWxlVmFsdWVXaXRoU2VtaWNvbG9uUGF0dGVybi50ZXN0KHZhbHVlKSkge1xuICAgICAgd2FyblN0
eWxlVmFsdWVXaXRoU2VtaWNvbG9uKG5hbWUsIHZhbHVlLCBvd25lcik7XG4gICAgfVxuXG4gICAg
aWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicgJiYgaXNOYU4odmFsdWUpKSB7XG4gICAgICB3
YXJuU3R5bGVWYWx1ZUlzTmFOKG5hbWUsIHZhbHVlLCBvd25lcik7XG4gICAgfVxuICB9O1xufVxu
XG4vKipcbiAqIE9wZXJhdGlvbnMgZm9yIGRlYWxpbmcgd2l0aCBDU1MgcHJvcGVydGllcy5cbiAq
L1xudmFyIENTU1Byb3BlcnR5T3BlcmF0aW9ucyA9IHtcbiAgLyoqXG4gICAqIFNlcmlhbGl6ZXMg
YSBtYXBwaW5nIG9mIHN0eWxlIHByb3BlcnRpZXMgZm9yIHVzZSBhcyBpbmxpbmUgc3R5bGVzOlxu
ICAgKlxuICAgKiAgID4gY3JlYXRlTWFya3VwRm9yU3R5bGVzKHt3aWR0aDogJzIwMHB4JywgaGVp
Z2h0OiAwfSlcbiAgICogICBcIndpZHRoOjIwMHB4O2hlaWdodDowO1wiXG4gICAqXG4gICAqIFVu
ZGVmaW5lZCB2YWx1ZXMgYXJlIGlnbm9yZWQgc28gdGhhdCBkZWNsYXJhdGl2ZSBwcm9ncmFtbWlu
ZyBpcyBlYXNpZXIuXG4gICAqIFRoZSByZXN1bHQgc2hvdWxkIGJlIEhUTUwtZXNjYXBlZCBiZWZv
cmUgaW5zZXJ0aW9uIGludG8gdGhlIERPTS5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IHN0
eWxlc1xuICAgKiBAcGFyYW0ge1JlYWN0RE9NQ29tcG9uZW50fSBjb21wb25lbnRcbiAgICogQHJl
dHVybiB7P3N0cmluZ31cbiAgICovXG4gIGNyZWF0ZU1hcmt1cEZvclN0eWxlczogZnVuY3Rpb24g
KHN0eWxlcywgY29tcG9uZW50KSB7XG4gICAgdmFyIHNlcmlhbGl6ZWQgPSAnJztcbiAgICBmb3Ig
KHZhciBzdHlsZU5hbWUgaW4gc3R5bGVzKSB7XG4gICAgICBpZiAoIXN0eWxlcy5oYXNPd25Qcm9w
ZXJ0eShzdHlsZU5hbWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdmFy
IGlzQ3VzdG9tUHJvcGVydHkgPSBzdHlsZU5hbWUuaW5kZXhPZignLS0nKSA9PT0gMDtcbiAgICAg
IHZhciBzdHlsZVZhbHVlID0gc3R5bGVzW3N0eWxlTmFtZV07XG4gICAgICBpZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBpZiAoIWlzQ3VzdG9tUHJv
cGVydHkpIHtcbiAgICAgICAgICB3YXJuVmFsaWRTdHlsZShzdHlsZU5hbWUsIHN0eWxlVmFsdWUs
IGNvbXBvbmVudCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChzdHlsZVZhbHVlICE9
IG51bGwpIHtcbiAgICAgICAgc2VyaWFsaXplZCArPSBwcm9jZXNzU3R5bGVOYW1lKHN0eWxlTmFt
ZSkgKyAnOic7XG4gICAgICAgIHNlcmlhbGl6ZWQgKz0gZGFuZ2Vyb3VzU3R5bGVWYWx1ZShzdHls
ZU5hbWUsIHN0eWxlVmFsdWUsIGNvbXBvbmVudCwgaXNDdXN0b21Qcm9wZXJ0eSkgKyAnOyc7XG4g
ICAgICB9XG4gICAgfVxuICAgIHJldHVybiBzZXJpYWxpemVkIHx8IG51bGw7XG4gIH0sXG5cbiAg
LyoqXG4gICAqIFNldHMgdGhlIHZhbHVlIGZvciBtdWx0aXBsZSBzdHlsZXMgb24gYSBub2RlLiAg
SWYgYSB2YWx1ZSBpcyBzcGVjaWZpZWQgYXNcbiAgICogJycgKGVtcHR5IHN0cmluZyksIHRoZSBj
b3JyZXNwb25kaW5nIHN0eWxlIHByb3BlcnR5IHdpbGwgYmUgdW5zZXQuXG4gICAqXG4gICAqIEBw
YXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuICAgKiBAcGFyYW0ge29iamVjdH0gc3R5bGVzXG4gICAq
IEBwYXJhbSB7UmVhY3RET01Db21wb25lbnR9IGNvbXBvbmVudFxuICAgKi9cbiAgc2V0VmFsdWVG
b3JTdHlsZXM6IGZ1bmN0aW9uIChub2RlLCBzdHlsZXMsIGNvbXBvbmVudCkge1xuICAgIGlmIChw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBSZWFjdEluc3Ry
dW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtcbiAgICAgICAgaW5zdGFuY2VJ
RDogY29tcG9uZW50Ll9kZWJ1Z0lELFxuICAgICAgICB0eXBlOiAndXBkYXRlIHN0eWxlcycsXG4g
ICAgICAgIHBheWxvYWQ6IHN0eWxlc1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmFyIHN0eWxl
ID0gbm9kZS5zdHlsZTtcbiAgICBmb3IgKHZhciBzdHlsZU5hbWUgaW4gc3R5bGVzKSB7XG4gICAg
ICBpZiAoIXN0eWxlcy5oYXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUpKSB7XG4gICAgICAgIGNvbnRp
bnVlO1xuICAgICAgfVxuICAgICAgdmFyIGlzQ3VzdG9tUHJvcGVydHkgPSBzdHlsZU5hbWUuaW5k
ZXhPZignLS0nKSA9PT0gMDtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nKSB7XG4gICAgICAgIGlmICghaXNDdXN0b21Qcm9wZXJ0eSkge1xuICAgICAgICAg
IHdhcm5WYWxpZFN0eWxlKHN0eWxlTmFtZSwgc3R5bGVzW3N0eWxlTmFtZV0sIGNvbXBvbmVudCk7
XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHZhciBzdHlsZVZhbHVlID0gZGFuZ2Vyb3VzU3R5
bGVWYWx1ZShzdHlsZU5hbWUsIHN0eWxlc1tzdHlsZU5hbWVdLCBjb21wb25lbnQsIGlzQ3VzdG9t
UHJvcGVydHkpO1xuICAgICAgaWYgKHN0eWxlTmFtZSA9PT0gJ2Zsb2F0JyB8fCBzdHlsZU5hbWUg
PT09ICdjc3NGbG9hdCcpIHtcbiAgICAgICAgc3R5bGVOYW1lID0gc3R5bGVGbG9hdEFjY2Vzc29y
O1xuICAgICAgfVxuICAgICAgaWYgKGlzQ3VzdG9tUHJvcGVydHkpIHtcbiAgICAgICAgc3R5bGUu
c2V0UHJvcGVydHkoc3R5bGVOYW1lLCBzdHlsZVZhbHVlKTtcbiAgICAgIH0gZWxzZSBpZiAoc3R5
bGVWYWx1ZSkge1xuICAgICAgICBzdHlsZVtzdHlsZU5hbWVdID0gc3R5bGVWYWx1ZTtcbiAgICAg
IH0gZWxzZSB7XG4gICAgICAgIHZhciBleHBhbnNpb24gPSBoYXNTaG9ydGhhbmRQcm9wZXJ0eUJ1
ZyAmJiBDU1NQcm9wZXJ0eS5zaG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lvbnNbc3R5bGVOYW1lXTtc
biAgICAgICAgaWYgKGV4cGFuc2lvbikge1xuICAgICAgICAgIC8vIFNob3J0aGFuZCBwcm9wZXJ0
eSB0aGF0IElFOCB3b24ndCBsaWtlIHVuc2V0dGluZywgc28gdW5zZXQgZWFjaFxuICAgICAgICAg
IC8vIGNvbXBvbmVudCB0byBwbGFjYXRlIGl0XG4gICAgICAgICAgZm9yICh2YXIgaW5kaXZpZHVh
bFN0eWxlTmFtZSBpbiBleHBhbnNpb24pIHtcbiAgICAgICAgICAgIHN0eWxlW2luZGl2aWR1YWxT
dHlsZU5hbWVdID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAg
IHN0eWxlW3N0eWxlTmFtZV0gPSAnJztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxu
fTtcblxubW9kdWxlLmV4cG9ydHMgPSBDU1NQcm9wZXJ0eU9wZXJhdGlvbnM7XG5cblxuLyoqKioq
KioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9D
U1NQcm9wZXJ0eU9wZXJhdGlvbnMuanNcbiAqKiBtb2R1bGUgaWQgPSAxMjdcbiAqKiBtb2R1bGUg
Y2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4g
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNl
IHN0cmljdCc7XG5cbnZhciBFdmVudFBsdWdpbkh1YiA9IHJlcXVpcmUoJy4vRXZlbnRQbHVnaW5I
dWInKTtcbnZhciBFdmVudFByb3BhZ2F0b3JzID0gcmVxdWlyZSgnLi9FdmVudFByb3BhZ2F0b3Jz
Jyk7XG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVjdXRp
b25FbnZpcm9ubWVudCcpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4v
UmVhY3RET01Db21wb25lbnRUcmVlJyk7XG52YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgnLi9S
ZWFjdFVwZGF0ZXMnKTtcbnZhciBTeW50aGV0aWNFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGlj
RXZlbnQnKTtcblxudmFyIGlucHV0VmFsdWVUcmFja2luZyA9IHJlcXVpcmUoJy4vaW5wdXRWYWx1
ZVRyYWNraW5nJyk7XG52YXIgZ2V0RXZlbnRUYXJnZXQgPSByZXF1aXJlKCcuL2dldEV2ZW50VGFy
Z2V0Jyk7XG52YXIgaXNFdmVudFN1cHBvcnRlZCA9IHJlcXVpcmUoJy4vaXNFdmVudFN1cHBvcnRl
ZCcpO1xudmFyIGlzVGV4dElucHV0RWxlbWVudCA9IHJlcXVpcmUoJy4vaXNUZXh0SW5wdXRFbGVt
ZW50Jyk7XG5cbnZhciBldmVudFR5cGVzID0ge1xuICBjaGFuZ2U6IHtcbiAgICBwaGFzZWRSZWdp
c3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDogJ29uQ2hhbmdlJyxcbiAgICAgIGNhcHR1
cmVkOiAnb25DaGFuZ2VDYXB0dXJlJ1xuICAgIH0sXG4gICAgZGVwZW5kZW5jaWVzOiBbJ3RvcEJs
dXInLCAndG9wQ2hhbmdlJywgJ3RvcENsaWNrJywgJ3RvcEZvY3VzJywgJ3RvcElucHV0JywgJ3Rv
cEtleURvd24nLCAndG9wS2V5VXAnLCAndG9wU2VsZWN0aW9uQ2hhbmdlJ11cbiAgfVxufTtcblxu
ZnVuY3Rpb24gY3JlYXRlQW5kQWNjdW11bGF0ZUNoYW5nZUV2ZW50KGluc3QsIG5hdGl2ZUV2ZW50
LCB0YXJnZXQpIHtcbiAgdmFyIGV2ZW50ID0gU3ludGhldGljRXZlbnQuZ2V0UG9vbGVkKGV2ZW50
VHlwZXMuY2hhbmdlLCBpbnN0LCBuYXRpdmVFdmVudCwgdGFyZ2V0KTtcbiAgZXZlbnQudHlwZSA9
ICdjaGFuZ2UnO1xuICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNo
ZXMoZXZlbnQpO1xuICByZXR1cm4gZXZlbnQ7XG59XG4vKipcbiAqIEZvciBJRSBzaGltc1xuICov
XG52YXIgYWN0aXZlRWxlbWVudCA9IG51bGw7XG52YXIgYWN0aXZlRWxlbWVudEluc3QgPSBudWxs
O1xuXG4vKipcbiAqIFNFQ1RJT046IGhhbmRsZSBgY2hhbmdlYCBldmVudFxuICovXG5mdW5jdGlv
biBzaG91bGRVc2VDaGFuZ2VFdmVudChlbGVtKSB7XG4gIHZhciBub2RlTmFtZSA9IGVsZW0ubm9k
ZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gbm9kZU5hbWUg
PT09ICdzZWxlY3QnIHx8IG5vZGVOYW1lID09PSAnaW5wdXQnICYmIGVsZW0udHlwZSA9PT0gJ2Zp
bGUnO1xufVxuXG52YXIgZG9lc0NoYW5nZUV2ZW50QnViYmxlID0gZmFsc2U7XG5pZiAoRXhlY3V0
aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG4gIC8vIFNlZSBgaGFuZGxlQ2hhbmdlYCBjb21t
ZW50IGJlbG93XG4gIGRvZXNDaGFuZ2VFdmVudEJ1YmJsZSA9IGlzRXZlbnRTdXBwb3J0ZWQoJ2No
YW5nZScpICYmICghZG9jdW1lbnQuZG9jdW1lbnRNb2RlIHx8IGRvY3VtZW50LmRvY3VtZW50TW9k
ZSA+IDgpO1xufVxuXG5mdW5jdGlvbiBtYW51YWxEaXNwYXRjaENoYW5nZUV2ZW50KG5hdGl2ZUV2
ZW50KSB7XG4gIHZhciBldmVudCA9IGNyZWF0ZUFuZEFjY3VtdWxhdGVDaGFuZ2VFdmVudChhY3Rp
dmVFbGVtZW50SW5zdCwgbmF0aXZlRXZlbnQsIGdldEV2ZW50VGFyZ2V0KG5hdGl2ZUV2ZW50KSk7
XG5cbiAgLy8gSWYgY2hhbmdlIGFuZCBwcm9wZXJ0eWNoYW5nZSBidWJibGVkLCB3ZSdkIGp1c3Qg
YmluZCB0byBpdCBsaWtlIGFsbCB0aGVcbiAgLy8gb3RoZXIgZXZlbnRzIGFuZCBoYXZlIGl0IGdv
IHRocm91Z2ggUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLiBTaW5jZSBpdFxuICAvLyBkb2Vzbid0
LCB3ZSBtYW51YWxseSBsaXN0ZW4gZm9yIHRoZSBldmVudHMgYW5kIHNvIHdlIGhhdmUgdG8gZW5x
dWV1ZSBhbmRcbiAgLy8gcHJvY2VzcyB0aGUgYWJzdHJhY3QgZXZlbnQgbWFudWFsbHkuXG4gIC8v
XG4gIC8vIEJhdGNoaW5nIGlzIG5lY2Vzc2FyeSBoZXJlIGluIG9yZGVyIHRvIGVuc3VyZSB0aGF0
IGFsbCBldmVudCBoYW5kbGVycyBydW5cbiAgLy8gYmVmb3JlIHRoZSBuZXh0IHJlcmVuZGVyIChp
bmNsdWRpbmcgZXZlbnQgaGFuZGxlcnMgYXR0YWNoZWQgdG8gYW5jZXN0b3JcbiAgLy8gZWxlbWVu
dHMgaW5zdGVhZCBvZiBkaXJlY3RseSBvbiB0aGUgaW5wdXQpLiBXaXRob3V0IHRoaXMsIGNvbnRy
b2xsZWRcbiAgLy8gY29tcG9uZW50cyBkb24ndCB3b3JrIHByb3Blcmx5IGluIGNvbmp1bmN0aW9u
IHdpdGggZXZlbnQgYnViYmxpbmcgYmVjYXVzZVxuICAvLyB0aGUgY29tcG9uZW50IGlzIHJlcmVu
ZGVyZWQgYW5kIHRoZSB2YWx1ZSByZXZlcnRlZCBiZWZvcmUgYWxsIHRoZSBldmVudFxuICAvLyBo
YW5kbGVycyBjYW4gcnVuLiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lz
c3Vlcy83MDguXG4gIFJlYWN0VXBkYXRlcy5iYXRjaGVkVXBkYXRlcyhydW5FdmVudEluQmF0Y2gs
IGV2ZW50KTtcbn1cblxuZnVuY3Rpb24gcnVuRXZlbnRJbkJhdGNoKGV2ZW50KSB7XG4gIEV2ZW50
UGx1Z2luSHViLmVucXVldWVFdmVudHMoZXZlbnQpO1xuICBFdmVudFBsdWdpbkh1Yi5wcm9jZXNz
RXZlbnRRdWV1ZShmYWxzZSk7XG59XG5cbmZ1bmN0aW9uIHN0YXJ0V2F0Y2hpbmdGb3JDaGFuZ2VF
dmVudElFOCh0YXJnZXQsIHRhcmdldEluc3QpIHtcbiAgYWN0aXZlRWxlbWVudCA9IHRhcmdldDtc
biAgYWN0aXZlRWxlbWVudEluc3QgPSB0YXJnZXRJbnN0O1xuICBhY3RpdmVFbGVtZW50LmF0dGFj
aEV2ZW50KCdvbmNoYW5nZScsIG1hbnVhbERpc3BhdGNoQ2hhbmdlRXZlbnQpO1xufVxuXG5mdW5j
dGlvbiBzdG9wV2F0Y2hpbmdGb3JDaGFuZ2VFdmVudElFOCgpIHtcbiAgaWYgKCFhY3RpdmVFbGVt
ZW50KSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGFjdGl2ZUVsZW1lbnQuZGV0YWNoRXZlbnQoJ29u
Y2hhbmdlJywgbWFudWFsRGlzcGF0Y2hDaGFuZ2VFdmVudCk7XG4gIGFjdGl2ZUVsZW1lbnQgPSBu
dWxsO1xuICBhY3RpdmVFbGVtZW50SW5zdCA9IG51bGw7XG59XG5cbmZ1bmN0aW9uIGdldEluc3RJ
ZlZhbHVlQ2hhbmdlZCh0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCkge1xuICB2YXIgdXBkYXRlZCA9
IGlucHV0VmFsdWVUcmFja2luZy51cGRhdGVWYWx1ZUlmQ2hhbmdlZCh0YXJnZXRJbnN0KTtcbiAg
dmFyIHNpbXVsYXRlZCA9IG5hdGl2ZUV2ZW50LnNpbXVsYXRlZCA9PT0gdHJ1ZSAmJiBDaGFuZ2VF
dmVudFBsdWdpbi5fYWxsb3dTaW11bGF0ZWRQYXNzVGhyb3VnaDtcblxuICBpZiAodXBkYXRlZCB8
fCBzaW11bGF0ZWQpIHtcbiAgICByZXR1cm4gdGFyZ2V0SW5zdDtcbiAgfVxufVxuXG5mdW5jdGlv
biBnZXRUYXJnZXRJbnN0Rm9yQ2hhbmdlRXZlbnQodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0KSB7
XG4gIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BDaGFuZ2UnKSB7XG4gICAgcmV0dXJuIHRhcmdl
dEluc3Q7XG4gIH1cbn1cblxuZnVuY3Rpb24gaGFuZGxlRXZlbnRzRm9yQ2hhbmdlRXZlbnRJRTgo
dG9wTGV2ZWxUeXBlLCB0YXJnZXQsIHRhcmdldEluc3QpIHtcbiAgaWYgKHRvcExldmVsVHlwZSA9
PT0gJ3RvcEZvY3VzJykge1xuICAgIC8vIHN0b3BXYXRjaGluZygpIHNob3VsZCBiZSBhIG5vb3Ag
aGVyZSBidXQgd2UgY2FsbCBpdCBqdXN0IGluIGNhc2Ugd2VcbiAgICAvLyBtaXNzZWQgYSBibHVy
IGV2ZW50IHNvbWVob3cuXG4gICAgc3RvcFdhdGNoaW5nRm9yQ2hhbmdlRXZlbnRJRTgoKTtcbiAg
ICBzdGFydFdhdGNoaW5nRm9yQ2hhbmdlRXZlbnRJRTgodGFyZ2V0LCB0YXJnZXRJbnN0KTtcbiAg
fSBlbHNlIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BCbHVyJykge1xuICAgIHN0b3BXYXRjaGlu
Z0ZvckNoYW5nZUV2ZW50SUU4KCk7XG4gIH1cbn1cblxuLyoqXG4gKiBTRUNUSU9OOiBoYW5kbGUg
YGlucHV0YCBldmVudFxuICovXG52YXIgaXNJbnB1dEV2ZW50U3VwcG9ydGVkID0gZmFsc2U7XG5p
ZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG4gIC8vIElFOSBjbGFpbXMgdG8g
c3VwcG9ydCB0aGUgaW5wdXQgZXZlbnQgYnV0IGZhaWxzIHRvIHRyaWdnZXIgaXQgd2hlblxuICAv
LyBkZWxldGluZyB0ZXh0LCBzbyB3ZSBpZ25vcmUgaXRzIGlucHV0IGV2ZW50cy5cblxuICBpc0lu
cHV0RXZlbnRTdXBwb3J0ZWQgPSBpc0V2ZW50U3VwcG9ydGVkKCdpbnB1dCcpICYmICghKCdkb2N1
bWVudE1vZGUnIGluIGRvY3VtZW50KSB8fCBkb2N1bWVudC5kb2N1bWVudE1vZGUgPiA5KTtcbn1c
blxuLyoqXG4gKiAoRm9yIElFIDw9OSkgU3RhcnRzIHRyYWNraW5nIHByb3BlcnR5Y2hhbmdlIGV2
ZW50cyBvbiB0aGUgcGFzc2VkLWluIGVsZW1lbnRcbiAqIGFuZCBvdmVycmlkZSB0aGUgdmFsdWUg
cHJvcGVydHkgc28gdGhhdCB3ZSBjYW4gZGlzdGluZ3Vpc2ggdXNlciBldmVudHMgZnJvbVxuICog
dmFsdWUgY2hhbmdlcyBpbiBKUy5cbiAqL1xuZnVuY3Rpb24gc3RhcnRXYXRjaGluZ0ZvclZhbHVl
Q2hhbmdlKHRhcmdldCwgdGFyZ2V0SW5zdCkge1xuICBhY3RpdmVFbGVtZW50ID0gdGFyZ2V0O1xu
ICBhY3RpdmVFbGVtZW50SW5zdCA9IHRhcmdldEluc3Q7XG4gIGFjdGl2ZUVsZW1lbnQuYXR0YWNo
RXZlbnQoJ29ucHJvcGVydHljaGFuZ2UnLCBoYW5kbGVQcm9wZXJ0eUNoYW5nZSk7XG59XG5cbi8q
KlxuICogKEZvciBJRSA8PTkpIFJlbW92ZXMgdGhlIGV2ZW50IGxpc3RlbmVycyBmcm9tIHRoZSBj
dXJyZW50bHktdHJhY2tlZCBlbGVtZW50LFxuICogaWYgYW55IGV4aXN0cy5cbiAqL1xuZnVuY3Rp
b24gc3RvcFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UoKSB7XG4gIGlmICghYWN0aXZlRWxlbWVudCkg
e1xuICAgIHJldHVybjtcbiAgfVxuICBhY3RpdmVFbGVtZW50LmRldGFjaEV2ZW50KCdvbnByb3Bl
cnR5Y2hhbmdlJywgaGFuZGxlUHJvcGVydHlDaGFuZ2UpO1xuXG4gIGFjdGl2ZUVsZW1lbnQgPSBu
dWxsO1xuICBhY3RpdmVFbGVtZW50SW5zdCA9IG51bGw7XG59XG5cbi8qKlxuICogKEZvciBJRSA8
PTkpIEhhbmRsZXMgYSBwcm9wZXJ0eWNoYW5nZSBldmVudCwgc2VuZGluZyBhIGBjaGFuZ2VgIGV2
ZW50IGlmXG4gKiB0aGUgdmFsdWUgb2YgdGhlIGFjdGl2ZSBlbGVtZW50IGhhcyBjaGFuZ2VkLlxu
ICovXG5mdW5jdGlvbiBoYW5kbGVQcm9wZXJ0eUNoYW5nZShuYXRpdmVFdmVudCkge1xuICBpZiAo
bmF0aXZlRXZlbnQucHJvcGVydHlOYW1lICE9PSAndmFsdWUnKSB7XG4gICAgcmV0dXJuO1xuICB9
XG4gIGlmIChnZXRJbnN0SWZWYWx1ZUNoYW5nZWQoYWN0aXZlRWxlbWVudEluc3QsIG5hdGl2ZUV2
ZW50KSkge1xuICAgIG1hbnVhbERpc3BhdGNoQ2hhbmdlRXZlbnQobmF0aXZlRXZlbnQpO1xuICB9
XG59XG5cbmZ1bmN0aW9uIGhhbmRsZUV2ZW50c0ZvcklucHV0RXZlbnRQb2x5ZmlsbCh0b3BMZXZl
bFR5cGUsIHRhcmdldCwgdGFyZ2V0SW5zdCkge1xuICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9w
Rm9jdXMnKSB7XG4gICAgLy8gSW4gSUU4LCB3ZSBjYW4gY2FwdHVyZSBhbG1vc3QgYWxsIC52YWx1
ZSBjaGFuZ2VzIGJ5IGFkZGluZyBhXG4gICAgLy8gcHJvcGVydHljaGFuZ2UgaGFuZGxlciBhbmQg
bG9va2luZyBmb3IgZXZlbnRzIHdpdGggcHJvcGVydHlOYW1lXG4gICAgLy8gZXF1YWwgdG8gJ3Zh
bHVlJ1xuICAgIC8vIEluIElFOSwgcHJvcGVydHljaGFuZ2UgZmlyZXMgZm9yIG1vc3QgaW5wdXQg
ZXZlbnRzIGJ1dCBpcyBidWdneSBhbmRcbiAgICAvLyBkb2Vzbid0IGZpcmUgd2hlbiB0ZXh0IGlz
IGRlbGV0ZWQsIGJ1dCBjb252ZW5pZW50bHksIHNlbGVjdGlvbmNoYW5nZVxuICAgIC8vIGFwcGVh
cnMgdG8gZmlyZSBpbiBhbGwgb2YgdGhlIHJlbWFpbmluZyBjYXNlcyBzbyB3ZSBjYXRjaCB0aG9z
ZSBhbmRcbiAgICAvLyBmb3J3YXJkIHRoZSBldmVudCBpZiB0aGUgdmFsdWUgaGFzIGNoYW5nZWRc
biAgICAvLyBJbiBlaXRoZXIgY2FzZSwgd2UgZG9uJ3Qgd2FudCB0byBjYWxsIHRoZSBldmVudCBo
YW5kbGVyIGlmIHRoZSB2YWx1ZVxuICAgIC8vIGlzIGNoYW5nZWQgZnJvbSBKUyBzbyB3ZSByZWRl
ZmluZSBhIHNldHRlciBmb3IgYC52YWx1ZWAgdGhhdCB1cGRhdGVzXG4gICAgLy8gb3VyIGFjdGl2
ZUVsZW1lbnRWYWx1ZSB2YXJpYWJsZSwgYWxsb3dpbmcgdXMgdG8gaWdub3JlIHRob3NlIGNoYW5n
ZXNcbiAgICAvL1xuICAgIC8vIHN0b3BXYXRjaGluZygpIHNob3VsZCBiZSBhIG5vb3AgaGVyZSBi
dXQgd2UgY2FsbCBpdCBqdXN0IGluIGNhc2Ugd2VcbiAgICAvLyBtaXNzZWQgYSBibHVyIGV2ZW50
IHNvbWVob3cuXG4gICAgc3RvcFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UoKTtcbiAgICBzdGFydFdh
dGNoaW5nRm9yVmFsdWVDaGFuZ2UodGFyZ2V0LCB0YXJnZXRJbnN0KTtcbiAgfSBlbHNlIGlmICh0
b3BMZXZlbFR5cGUgPT09ICd0b3BCbHVyJykge1xuICAgIHN0b3BXYXRjaGluZ0ZvclZhbHVlQ2hh
bmdlKCk7XG4gIH1cbn1cblxuLy8gRm9yIElFOCBhbmQgSUU5LlxuZnVuY3Rpb24gZ2V0VGFyZ2V0
SW5zdEZvcklucHV0RXZlbnRQb2x5ZmlsbCh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2
ZUV2ZW50KSB7XG4gIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BTZWxlY3Rpb25DaGFuZ2UnIHx8
IHRvcExldmVsVHlwZSA9PT0gJ3RvcEtleVVwJyB8fCB0b3BMZXZlbFR5cGUgPT09ICd0b3BLZXlE
b3duJykge1xuICAgIC8vIE9uIHRoZSBzZWxlY3Rpb25jaGFuZ2UgZXZlbnQsIHRoZSB0YXJnZXQg
aXMganVzdCBkb2N1bWVudCB3aGljaCBpc24ndFxuICAgIC8vIGhlbHBmdWwgZm9yIHVzIHNvIGp1
c3QgY2hlY2sgYWN0aXZlRWxlbWVudCBpbnN0ZWFkLlxuICAgIC8vXG4gICAgLy8gOTklIG9mIHRo
ZSB0aW1lLCBrZXlkb3duIGFuZCBrZXl1cCBhcmVuJ3QgbmVjZXNzYXJ5LiBJRTggZmFpbHMgdG8g
ZmlyZVxuICAgIC8vIHByb3BlcnR5Y2hhbmdlIG9uIHRoZSBmaXJzdCBpbnB1dCBldmVudCBhZnRl
ciBzZXR0aW5nIGB2YWx1ZWAgZnJvbSBhXG4gICAgLy8gc2NyaXB0IGFuZCBmaXJlcyBvbmx5IGtl
eWRvd24sIGtleXByZXNzLCBrZXl1cC4gQ2F0Y2hpbmcga2V5dXAgdXN1YWxseVxuICAgIC8vIGdl
dHMgaXQgYW5kIGNhdGNoaW5nIGtleWRvd24gbGV0cyB1cyBmaXJlIGFuIGV2ZW50IGZvciB0aGUg
Zmlyc3RcbiAgICAvLyBrZXlzdHJva2UgaWYgdXNlciBkb2VzIGEga2V5IHJlcGVhdCAoaXQnbGwg
YmUgYSBsaXR0bGUgZGVsYXllZDogcmlnaHRcbiAgICAvLyBiZWZvcmUgdGhlIHNlY29uZCBrZXlz
dHJva2UpLiBPdGhlciBpbnB1dCBtZXRob2RzIChlLmcuLCBwYXN0ZSkgc2VlbSB0b1xuICAgIC8v
IGZpcmUgc2VsZWN0aW9uY2hhbmdlIG5vcm1hbGx5LlxuICAgIHJldHVybiBnZXRJbnN0SWZWYWx1
ZUNoYW5nZWQoYWN0aXZlRWxlbWVudEluc3QsIG5hdGl2ZUV2ZW50KTtcbiAgfVxufVxuXG4vKipc
biAqIFNFQ1RJT046IGhhbmRsZSBgY2xpY2tgIGV2ZW50XG4gKi9cbmZ1bmN0aW9uIHNob3VsZFVz
ZUNsaWNrRXZlbnQoZWxlbSkge1xuICAvLyBVc2UgdGhlIGBjbGlja2AgZXZlbnQgdG8gZGV0ZWN0
IGNoYW5nZXMgdG8gY2hlY2tib3ggYW5kIHJhZGlvIGlucHV0cy5cbiAgLy8gVGhpcyBhcHByb2Fj
aCB3b3JrcyBhY3Jvc3MgYWxsIGJyb3dzZXJzLCB3aGVyZWFzIGBjaGFuZ2VgIGRvZXMgbm90IGZp
cmVcbiAgLy8gdW50aWwgYGJsdXJgIGluIElFOC5cbiAgdmFyIG5vZGVOYW1lID0gZWxlbS5ub2Rl
TmFtZTtcbiAgcmV0dXJuIG5vZGVOYW1lICYmIG5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdp
bnB1dCcgJiYgKGVsZW0udHlwZSA9PT0gJ2NoZWNrYm94JyB8fCBlbGVtLnR5cGUgPT09ICdyYWRp
bycpO1xufVxuXG5mdW5jdGlvbiBnZXRUYXJnZXRJbnN0Rm9yQ2xpY2tFdmVudCh0b3BMZXZlbFR5
cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50KSB7XG4gIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0
b3BDbGljaycpIHtcbiAgICByZXR1cm4gZ2V0SW5zdElmVmFsdWVDaGFuZ2VkKHRhcmdldEluc3Qs
IG5hdGl2ZUV2ZW50KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBnZXRUYXJnZXRJbnN0Rm9ySW5wdXRP
ckNoYW5nZUV2ZW50KHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQpIHtcbiAg
aWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcElucHV0JyB8fCB0b3BMZXZlbFR5cGUgPT09ICd0b3BD
aGFuZ2UnKSB7XG4gICAgcmV0dXJuIGdldEluc3RJZlZhbHVlQ2hhbmdlZCh0YXJnZXRJbnN0LCBu
YXRpdmVFdmVudCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gaGFuZGxlQ29udHJvbGxlZElucHV0Qmx1
cihpbnN0LCBub2RlKSB7XG4gIC8vIFRPRE86IEluIElFLCBpbnN0IGlzIG9jY2FzaW9uYWxseSBu
dWxsLiBXaHk/XG4gIGlmIChpbnN0ID09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAv
LyBGaWJlciBhbmQgUmVhY3RET00ga2VlcCB3cmFwcGVyIHN0YXRlIGluIHNlcGFyYXRlIHBsYWNl
c1xuICB2YXIgc3RhdGUgPSBpbnN0Ll93cmFwcGVyU3RhdGUgfHwgbm9kZS5fd3JhcHBlclN0YXRl
O1xuXG4gIGlmICghc3RhdGUgfHwgIXN0YXRlLmNvbnRyb2xsZWQgfHwgbm9kZS50eXBlICE9PSAn
bnVtYmVyJykge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIC8vIElmIGNvbnRyb2xsZWQsIGFzc2ln
biB0aGUgdmFsdWUgYXR0cmlidXRlIHRvIHRoZSBjdXJyZW50IHZhbHVlIG9uIGJsdXJcbiAgdmFy
IHZhbHVlID0gJycgKyBub2RlLnZhbHVlO1xuICBpZiAobm9kZS5nZXRBdHRyaWJ1dGUoJ3ZhbHVl
JykgIT09IHZhbHVlKSB7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgdmFsdWUpO1xu
ICB9XG59XG5cbi8qKlxuICogVGhpcyBwbHVnaW4gY3JlYXRlcyBhbiBgb25DaGFuZ2VgIGV2ZW50
IHRoYXQgbm9ybWFsaXplcyBjaGFuZ2UgZXZlbnRzXG4gKiBhY3Jvc3MgZm9ybSBlbGVtZW50cy4g
VGhpcyBldmVudCBmaXJlcyBhdCBhIHRpbWUgd2hlbiBpdCdzIHBvc3NpYmxlIHRvXG4gKiBjaGFu
Z2UgdGhlIGVsZW1lbnQncyB2YWx1ZSB3aXRob3V0IHNlZWluZyBhIGZsaWNrZXIuXG4gKlxuICog
U3VwcG9ydGVkIGVsZW1lbnRzIGFyZTpcbiAqIC0gaW5wdXQgKHNlZSBgaXNUZXh0SW5wdXRFbGVt
ZW50YClcbiAqIC0gdGV4dGFyZWFcbiAqIC0gc2VsZWN0XG4gKi9cbnZhciBDaGFuZ2VFdmVudFBs
dWdpbiA9IHtcbiAgZXZlbnRUeXBlczogZXZlbnRUeXBlcyxcblxuICBfYWxsb3dTaW11bGF0ZWRQ
YXNzVGhyb3VnaDogdHJ1ZSxcbiAgX2lzSW5wdXRFdmVudFN1cHBvcnRlZDogaXNJbnB1dEV2ZW50
U3VwcG9ydGVkLFxuXG4gIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRh
cmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICAgIHZhciB0YXJn
ZXROb2RlID0gdGFyZ2V0SW5zdCA/IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUlu
c3RhbmNlKHRhcmdldEluc3QpIDogd2luZG93O1xuXG4gICAgdmFyIGdldFRhcmdldEluc3RGdW5j
LCBoYW5kbGVFdmVudEZ1bmM7XG4gICAgaWYgKHNob3VsZFVzZUNoYW5nZUV2ZW50KHRhcmdldE5v
ZGUpKSB7XG4gICAgICBpZiAoZG9lc0NoYW5nZUV2ZW50QnViYmxlKSB7XG4gICAgICAgIGdldFRh
cmdldEluc3RGdW5jID0gZ2V0VGFyZ2V0SW5zdEZvckNoYW5nZUV2ZW50O1xuICAgICAgfSBlbHNl
IHtcbiAgICAgICAgaGFuZGxlRXZlbnRGdW5jID0gaGFuZGxlRXZlbnRzRm9yQ2hhbmdlRXZlbnRJ
RTg7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChpc1RleHRJbnB1dEVsZW1lbnQodGFyZ2V0Tm9k
ZSkpIHtcbiAgICAgIGlmIChpc0lucHV0RXZlbnRTdXBwb3J0ZWQpIHtcbiAgICAgICAgZ2V0VGFy
Z2V0SW5zdEZ1bmMgPSBnZXRUYXJnZXRJbnN0Rm9ySW5wdXRPckNoYW5nZUV2ZW50O1xuICAgICAg
fSBlbHNlIHtcbiAgICAgICAgZ2V0VGFyZ2V0SW5zdEZ1bmMgPSBnZXRUYXJnZXRJbnN0Rm9ySW5w
dXRFdmVudFBvbHlmaWxsO1xuICAgICAgICBoYW5kbGVFdmVudEZ1bmMgPSBoYW5kbGVFdmVudHNG
b3JJbnB1dEV2ZW50UG9seWZpbGw7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChzaG91bGRVc2VD
bGlja0V2ZW50KHRhcmdldE5vZGUpKSB7XG4gICAgICBnZXRUYXJnZXRJbnN0RnVuYyA9IGdldFRh
cmdldEluc3RGb3JDbGlja0V2ZW50O1xuICAgIH1cblxuICAgIGlmIChnZXRUYXJnZXRJbnN0RnVu
Yykge1xuICAgICAgdmFyIGluc3QgPSBnZXRUYXJnZXRJbnN0RnVuYyh0b3BMZXZlbFR5cGUsIHRh
cmdldEluc3QsIG5hdGl2ZUV2ZW50KTtcbiAgICAgIGlmIChpbnN0KSB7XG4gICAgICAgIHZhciBl
dmVudCA9IGNyZWF0ZUFuZEFjY3VtdWxhdGVDaGFuZ2VFdmVudChpbnN0LCBuYXRpdmVFdmVudCwg
bmF0aXZlRXZlbnRUYXJnZXQpO1xuICAgICAgICByZXR1cm4gZXZlbnQ7XG4gICAgICB9XG4gICAg
fVxuXG4gICAgaWYgKGhhbmRsZUV2ZW50RnVuYykge1xuICAgICAgaGFuZGxlRXZlbnRGdW5jKHRv
cExldmVsVHlwZSwgdGFyZ2V0Tm9kZSwgdGFyZ2V0SW5zdCk7XG4gICAgfVxuXG4gICAgLy8gV2hl
biBibHVycmluZywgc2V0IHRoZSB2YWx1ZSBhdHRyaWJ1dGUgZm9yIG51bWJlciBpbnB1dHNcbiAg
ICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wQmx1cicpIHtcbiAgICAgIGhhbmRsZUNvbnRyb2xs
ZWRJbnB1dEJsdXIodGFyZ2V0SW5zdCwgdGFyZ2V0Tm9kZSk7XG4gICAgfVxuICB9XG59O1xuXG5t
b2R1bGUuZXhwb3J0cyA9IENoYW5nZUV2ZW50UGx1Z2luO1xuXG5cbi8qKioqKioqKioqKioqKioq
KlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvQ2hhbmdlRXZlbnRQ
bHVnaW4uanNcbiAqKiBtb2R1bGUgaWQgPSAxMjhcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoq
LyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZh
ciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50Jyk7XG5cbnZh
ciBET01MYXp5VHJlZSA9IHJlcXVpcmUoJy4vRE9NTGF6eVRyZWUnKTtcbnZhciBFeGVjdXRpb25F
bnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG5c
bnZhciBjcmVhdGVOb2Rlc0Zyb21NYXJrdXAgPSByZXF1aXJlKCdmYmpzL2xpYi9jcmVhdGVOb2Rl
c0Zyb21NYXJrdXAnKTtcbnZhciBlbXB0eUZ1bmN0aW9uID0gcmVxdWlyZSgnZmJqcy9saWIvZW1w
dHlGdW5jdGlvbicpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFu
dCcpO1xuXG52YXIgRGFuZ2VyID0ge1xuICAvKipcbiAgICogUmVwbGFjZXMgYSBub2RlIHdpdGgg
YSBzdHJpbmcgb2YgbWFya3VwIGF0IGl0cyBjdXJyZW50IHBvc2l0aW9uIHdpdGhpbiBpdHNcbiAg
ICogcGFyZW50LiBUaGUgbWFya3VwIG11c3QgcmVuZGVyIGludG8gYSBzaW5nbGUgcm9vdCBub2Rl
LlxuICAgKlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG9sZENoaWxkIENoaWxkIG5vZGUgdG8g
cmVwbGFjZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBNYXJrdXAgdG8gcmVuZGVyIGlu
IHBsYWNlIG9mIHRoZSBjaGlsZCBub2RlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGRhbmdl
cm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwOiBmdW5jdGlvbiAob2xkQ2hpbGQsIG1hcmt1cCkg
e1xuICAgICFFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gPyBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZGFuZ2Vyb3VzbHlSZXBs
YWNlTm9kZVdpdGhNYXJrdXAoLi4uKTogQ2Fubm90IHJlbmRlciBtYXJrdXAgaW4gYSB3b3JrZXIg
dGhyZWFkLiBNYWtlIHN1cmUgYHdpbmRvd2AgYW5kIGBkb2N1bWVudGAgYXJlIGF2YWlsYWJsZSBn
bG9iYWxseSBiZWZvcmUgcmVxdWlyaW5nIFJlYWN0IHdoZW4gdW5pdCB0ZXN0aW5nIG9yIHVzZSBS
ZWFjdERPTVNlcnZlci5yZW5kZXJUb1N0cmluZygpIGZvciBzZXJ2ZXIgcmVuZGVyaW5nLicpIDog
X3Byb2RJbnZhcmlhbnQoJzU2JykgOiB2b2lkIDA7XG4gICAgIW1hcmt1cCA/IHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdkYW5nZXJvdXNs
eVJlcGxhY2VOb2RlV2l0aE1hcmt1cCguLi4pOiBNaXNzaW5nIG1hcmt1cC4nKSA6IF9wcm9kSW52
YXJpYW50KCc1NycpIDogdm9pZCAwO1xuICAgICEob2xkQ2hpbGQubm9kZU5hbWUgIT09ICdIVE1M
JykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZh
bHNlLCAnZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAoLi4uKTogQ2Fubm90IHJlcGxh
Y2UgbWFya3VwIG9mIHRoZSA8aHRtbD4gbm9kZS4gVGhpcyBpcyBiZWNhdXNlIGJyb3dzZXIgcXVp
cmtzIG1ha2UgdGhpcyB1bnJlbGlhYmxlIGFuZC9vciBzbG93LiBJZiB5b3Ugd2FudCB0byByZW5k
ZXIgdG8gdGhlIHJvb3QgeW91IG11c3QgdXNlIHNlcnZlciByZW5kZXJpbmcuIFNlZSBSZWFjdERP
TVNlcnZlci5yZW5kZXJUb1N0cmluZygpLicpIDogX3Byb2RJbnZhcmlhbnQoJzU4JykgOiB2b2lk
IDA7XG5cbiAgICBpZiAodHlwZW9mIG1hcmt1cCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHZhciBu
ZXdDaGlsZCA9IGNyZWF0ZU5vZGVzRnJvbU1hcmt1cChtYXJrdXAsIGVtcHR5RnVuY3Rpb24pWzBd
O1xuICAgICAgb2xkQ2hpbGQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3Q2hpbGQsIG9sZENo
aWxkKTtcbiAgICB9IGVsc2Uge1xuICAgICAgRE9NTGF6eVRyZWUucmVwbGFjZUNoaWxkV2l0aFRy
ZWUob2xkQ2hpbGQsIG1hcmt1cCk7XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9
IERhbmdlcjtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoq
IC4vfi9yZWFjdC1kb20vbGliL0Rhbmdlci5qc1xuICoqIG1vZHVsZSBpZCA9IDEyOVxuICoqIG1v
ZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5c
bid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBNb2R1bGUgdGhhdCBpcyBpbmplY3RhYmxlIGludG8g
YEV2ZW50UGx1Z2luSHViYCwgdGhhdCBzcGVjaWZpZXMgYVxuICogZGV0ZXJtaW5pc3RpYyBvcmRl
cmluZyBvZiBgRXZlbnRQbHVnaW5gcy4gQSBjb252ZW5pZW50IHdheSB0byByZWFzb24gYWJvdXRc
biAqIHBsdWdpbnMsIHdpdGhvdXQgaGF2aW5nIHRvIHBhY2thZ2UgZXZlcnkgb25lIG9mIHRoZW0u
IFRoaXMgaXMgYmV0dGVyIHRoYW5cbiAqIGhhdmluZyBwbHVnaW5zIGJlIG9yZGVyZWQgaW4gdGhl
IHNhbWUgb3JkZXIgdGhhdCB0aGV5IGFyZSBpbmplY3RlZCBiZWNhdXNlXG4gKiB0aGF0IG9yZGVy
aW5nIHdvdWxkIGJlIGluZmx1ZW5jZWQgYnkgdGhlIHBhY2thZ2luZyBvcmRlci5cbiAqIGBSZXNw
b25kZXJFdmVudFBsdWdpbmAgbXVzdCBvY2N1ciBiZWZvcmUgYFNpbXBsZUV2ZW50UGx1Z2luYCBz
byB0aGF0XG4gKiBwcmV2ZW50aW5nIGRlZmF1bHQgb24gZXZlbnRzIGlzIGNvbnZlbmllbnQgaW4g
YFNpbXBsZUV2ZW50UGx1Z2luYCBoYW5kbGVycy5cbiAqL1xuXG52YXIgRGVmYXVsdEV2ZW50UGx1
Z2luT3JkZXIgPSBbJ1Jlc3BvbmRlckV2ZW50UGx1Z2luJywgJ1NpbXBsZUV2ZW50UGx1Z2luJywg
J1RhcEV2ZW50UGx1Z2luJywgJ0VudGVyTGVhdmVFdmVudFBsdWdpbicsICdDaGFuZ2VFdmVudFBs
dWdpbicsICdTZWxlY3RFdmVudFBsdWdpbicsICdCZWZvcmVJbnB1dEV2ZW50UGx1Z2luJ107XG5c
bm1vZHVsZS5leHBvcnRzID0gRGVmYXVsdEV2ZW50UGx1Z2luT3JkZXI7XG5cblxuLyoqKioqKioq
KioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9EZWZh
dWx0RXZlbnRQbHVnaW5PcmRlci5qc1xuICoqIG1vZHVsZSBpZCA9IDEzMFxuICoqIG1vZHVsZSBj
aHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ug
c3RyaWN0JztcblxudmFyIEV2ZW50UHJvcGFnYXRvcnMgPSByZXF1aXJlKCcuL0V2ZW50UHJvcGFn
YXRvcnMnKTtcbnZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSByZXF1aXJlKCcuL1JlYWN0RE9N
Q29tcG9uZW50VHJlZScpO1xudmFyIFN5bnRoZXRpY01vdXNlRXZlbnQgPSByZXF1aXJlKCcuL1N5
bnRoZXRpY01vdXNlRXZlbnQnKTtcblxudmFyIGV2ZW50VHlwZXMgPSB7XG4gIG1vdXNlRW50ZXI6
IHtcbiAgICByZWdpc3RyYXRpb25OYW1lOiAnb25Nb3VzZUVudGVyJyxcbiAgICBkZXBlbmRlbmNp
ZXM6IFsndG9wTW91c2VPdXQnLCAndG9wTW91c2VPdmVyJ11cbiAgfSxcbiAgbW91c2VMZWF2ZTog
e1xuICAgIHJlZ2lzdHJhdGlvbk5hbWU6ICdvbk1vdXNlTGVhdmUnLFxuICAgIGRlcGVuZGVuY2ll
czogWyd0b3BNb3VzZU91dCcsICd0b3BNb3VzZU92ZXInXVxuICB9XG59O1xuXG52YXIgRW50ZXJM
ZWF2ZUV2ZW50UGx1Z2luID0ge1xuICBldmVudFR5cGVzOiBldmVudFR5cGVzLFxuXG4gIC8qKlxu
ICAgKiBGb3IgYWxtb3N0IGV2ZXJ5IGludGVyYWN0aW9uIHdlIGNhcmUgYWJvdXQsIHRoZXJlIHdp
bGwgYmUgYm90aCBhIHRvcC1sZXZlbFxuICAgKiBgbW91c2VvdmVyYCBhbmQgYG1vdXNlb3V0YCBl
dmVudCB0aGF0IG9jY3Vycy4gT25seSB1c2UgYG1vdXNlb3V0YCBzbyB0aGF0XG4gICAqIHdlIGRv
IG5vdCBleHRyYWN0IGR1cGxpY2F0ZSBldmVudHMuIEhvd2V2ZXIsIG1vdmluZyB0aGUgbW91c2Ug
aW50byB0aGVcbiAgICogYnJvd3NlciBmcm9tIG91dHNpZGUgd2lsbCBub3QgZmlyZSBhIGBtb3Vz
ZW91dGAgZXZlbnQuIEluIHRoaXMgY2FzZSwgd2UgdXNlXG4gICAqIHRoZSBgbW91c2VvdmVyYCB0
b3AtbGV2ZWwgZXZlbnQuXG4gICAqL1xuICBleHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9wTGV2
ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAg
ICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wTW91c2VPdmVyJyAmJiAobmF0aXZlRXZlbnQucmVs
YXRlZFRhcmdldCB8fCBuYXRpdmVFdmVudC5mcm9tRWxlbWVudCkpIHtcbiAgICAgIHJldHVybiBu
dWxsO1xuICAgIH1cbiAgICBpZiAodG9wTGV2ZWxUeXBlICE9PSAndG9wTW91c2VPdXQnICYmIHRv
cExldmVsVHlwZSAhPT0gJ3RvcE1vdXNlT3ZlcicpIHtcbiAgICAgIC8vIE11c3Qgbm90IGJlIGEg
bW91c2UgaW4gb3IgbW91c2Ugb3V0IC0gaWdub3JpbmcuXG4gICAgICByZXR1cm4gbnVsbDtcbiAg
ICB9XG5cbiAgICB2YXIgd2luO1xuICAgIGlmIChuYXRpdmVFdmVudFRhcmdldC53aW5kb3cgPT09
IG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gICAgICAvLyBgbmF0aXZlRXZlbnRUYXJnZXRgIGlzIHBy
b2JhYmx5IGEgd2luZG93IG9iamVjdC5cbiAgICAgIHdpbiA9IG5hdGl2ZUV2ZW50VGFyZ2V0O1xu
ICAgIH0gZWxzZSB7XG4gICAgICAvLyBUT0RPOiBGaWd1cmUgb3V0IHdoeSBgb3duZXJEb2N1bWVu
dGAgaXMgc29tZXRpbWVzIHVuZGVmaW5lZCBpbiBJRTguXG4gICAgICB2YXIgZG9jID0gbmF0aXZl
RXZlbnRUYXJnZXQub3duZXJEb2N1bWVudDtcbiAgICAgIGlmIChkb2MpIHtcbiAgICAgICAgd2lu
ID0gZG9jLmRlZmF1bHRWaWV3IHx8IGRvYy5wYXJlbnRXaW5kb3c7XG4gICAgICB9IGVsc2Uge1xu
ICAgICAgICB3aW4gPSB3aW5kb3c7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIGZyb207XG4g
ICAgdmFyIHRvO1xuICAgIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BNb3VzZU91dCcpIHtcbiAg
ICAgIGZyb20gPSB0YXJnZXRJbnN0O1xuICAgICAgdmFyIHJlbGF0ZWQgPSBuYXRpdmVFdmVudC5y
ZWxhdGVkVGFyZ2V0IHx8IG5hdGl2ZUV2ZW50LnRvRWxlbWVudDtcbiAgICAgIHRvID0gcmVsYXRl
ZCA/IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZShyZWxh
dGVkKSA6IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIE1vdmluZyB0byBhIG5vZGUgZnJv
bSBvdXRzaWRlIHRoZSB3aW5kb3cuXG4gICAgICBmcm9tID0gbnVsbDtcbiAgICAgIHRvID0gdGFy
Z2V0SW5zdDtcbiAgICB9XG5cbiAgICBpZiAoZnJvbSA9PT0gdG8pIHtcbiAgICAgIC8vIE5vdGhp
bmcgcGVydGFpbnMgdG8gb3VyIG1hbmFnZWQgY29tcG9uZW50cy5cbiAgICAgIHJldHVybiBudWxs
O1xuICAgIH1cblxuICAgIHZhciBmcm9tTm9kZSA9IGZyb20gPT0gbnVsbCA/IHdpbiA6IFJlYWN0
RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGZyb20pO1xuICAgIHZhciB0b05v
ZGUgPSB0byA9PSBudWxsID8gd2luIDogUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9t
SW5zdGFuY2UodG8pO1xuXG4gICAgdmFyIGxlYXZlID0gU3ludGhldGljTW91c2VFdmVudC5nZXRQ
b29sZWQoZXZlbnRUeXBlcy5tb3VzZUxlYXZlLCBmcm9tLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZl
bnRUYXJnZXQpO1xuICAgIGxlYXZlLnR5cGUgPSAnbW91c2VsZWF2ZSc7XG4gICAgbGVhdmUudGFy
Z2V0ID0gZnJvbU5vZGU7XG4gICAgbGVhdmUucmVsYXRlZFRhcmdldCA9IHRvTm9kZTtcblxuICAg
IHZhciBlbnRlciA9IFN5bnRoZXRpY01vdXNlRXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMubW91
c2VFbnRlciwgdG8sIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG4gICAgZW50ZXIu
dHlwZSA9ICdtb3VzZWVudGVyJztcbiAgICBlbnRlci50YXJnZXQgPSB0b05vZGU7XG4gICAgZW50
ZXIucmVsYXRlZFRhcmdldCA9IGZyb21Ob2RlO1xuXG4gICAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1
bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXMobGVhdmUsIGVudGVyLCBmcm9tLCB0byk7XG5cbiAg
ICByZXR1cm4gW2xlYXZlLCBlbnRlcl07XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRW50
ZXJMZWF2ZUV2ZW50UGx1Z2luO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sg
Rk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvRW50ZXJMZWF2ZUV2ZW50UGx1Z2luLmpzXG4g
KiogbW9kdWxlIGlkID0gMTMxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX2Fzc2lnbiA9
IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIFBvb2xlZENsYXNzID0gcmVxdWlyZSgn
Li9Qb29sZWRDbGFzcycpO1xuXG52YXIgZ2V0VGV4dENvbnRlbnRBY2Nlc3NvciA9IHJlcXVpcmUo
Jy4vZ2V0VGV4dENvbnRlbnRBY2Nlc3NvcicpO1xuXG4vKipcbiAqIFRoaXMgaGVscGVyIGNsYXNz
IHN0b3JlcyBpbmZvcm1hdGlvbiBhYm91dCB0ZXh0IGNvbnRlbnQgb2YgYSB0YXJnZXQgbm9kZSxc
biAqIGFsbG93aW5nIGNvbXBhcmlzb24gb2YgY29udGVudCBiZWZvcmUgYW5kIGFmdGVyIGEgZ2l2
ZW4gZXZlbnQuXG4gKlxuICogSWRlbnRpZnkgdGhlIG5vZGUgd2hlcmUgc2VsZWN0aW9uIGN1cnJl
bnRseSBiZWdpbnMsIHRoZW4gb2JzZXJ2ZVxuICogYm90aCBpdHMgdGV4dCBjb250ZW50IGFuZCBp
dHMgY3VycmVudCBwb3NpdGlvbiBpbiB0aGUgRE9NLiBTaW5jZSB0aGVcbiAqIGJyb3dzZXIgbWF5
IG5hdGl2ZWx5IHJlcGxhY2UgdGhlIHRhcmdldCBub2RlIGR1cmluZyBjb21wb3NpdGlvbiwgd2Ug
Y2FuXG4gKiB1c2UgaXRzIHBvc2l0aW9uIHRvIGZpbmQgaXRzIHJlcGxhY2VtZW50LlxuICpcbiAq
IEBwYXJhbSB7RE9NRXZlbnRUYXJnZXR9IHJvb3RcbiAqL1xuZnVuY3Rpb24gRmFsbGJhY2tDb21w
b3NpdGlvblN0YXRlKHJvb3QpIHtcbiAgdGhpcy5fcm9vdCA9IHJvb3Q7XG4gIHRoaXMuX3N0YXJ0
VGV4dCA9IHRoaXMuZ2V0VGV4dCgpO1xuICB0aGlzLl9mYWxsYmFja1RleHQgPSBudWxsO1xufVxu
XG5fYXNzaWduKEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZS5wcm90b3R5cGUsIHtcbiAgZGVzdHJ1
Y3RvcjogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuX3Jvb3QgPSBudWxsO1xuICAgIHRoaXMuX3N0
YXJ0VGV4dCA9IG51bGw7XG4gICAgdGhpcy5fZmFsbGJhY2tUZXh0ID0gbnVsbDtcbiAgfSxcblxu
ICAvKipcbiAgICogR2V0IGN1cnJlbnQgdGV4dCBvZiBpbnB1dC5cbiAgICpcbiAgICogQHJldHVy
biB7c3RyaW5nfVxuICAgKi9cbiAgZ2V0VGV4dDogZnVuY3Rpb24gKCkge1xuICAgIGlmICgndmFs
dWUnIGluIHRoaXMuX3Jvb3QpIHtcbiAgICAgIHJldHVybiB0aGlzLl9yb290LnZhbHVlO1xuICAg
IH1cbiAgICByZXR1cm4gdGhpcy5fcm9vdFtnZXRUZXh0Q29udGVudEFjY2Vzc29yKCldO1xuICB9
LFxuXG4gIC8qKlxuICAgKiBEZXRlcm1pbmUgdGhlIGRpZmZlcmluZyBzdWJzdHJpbmcgYmV0d2Vl
biB0aGUgaW5pdGlhbGx5IHN0b3JlZFxuICAgKiB0ZXh0IGNvbnRlbnQgYW5kIHRoZSBjdXJyZW50
IGNvbnRlbnQuXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIGdldERhdGE6
IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5fZmFsbGJhY2tUZXh0KSB7XG4gICAgICByZXR1
cm4gdGhpcy5fZmFsbGJhY2tUZXh0O1xuICAgIH1cblxuICAgIHZhciBzdGFydDtcbiAgICB2YXIg
c3RhcnRWYWx1ZSA9IHRoaXMuX3N0YXJ0VGV4dDtcbiAgICB2YXIgc3RhcnRMZW5ndGggPSBzdGFy
dFZhbHVlLmxlbmd0aDtcbiAgICB2YXIgZW5kO1xuICAgIHZhciBlbmRWYWx1ZSA9IHRoaXMuZ2V0
VGV4dCgpO1xuICAgIHZhciBlbmRMZW5ndGggPSBlbmRWYWx1ZS5sZW5ndGg7XG5cbiAgICBmb3Ig
KHN0YXJ0ID0gMDsgc3RhcnQgPCBzdGFydExlbmd0aDsgc3RhcnQrKykge1xuICAgICAgaWYgKHN0
YXJ0VmFsdWVbc3RhcnRdICE9PSBlbmRWYWx1ZVtzdGFydF0pIHtcbiAgICAgICAgYnJlYWs7XG4g
ICAgICB9XG4gICAgfVxuXG4gICAgdmFyIG1pbkVuZCA9IHN0YXJ0TGVuZ3RoIC0gc3RhcnQ7XG4g
ICAgZm9yIChlbmQgPSAxOyBlbmQgPD0gbWluRW5kOyBlbmQrKykge1xuICAgICAgaWYgKHN0YXJ0
VmFsdWVbc3RhcnRMZW5ndGggLSBlbmRdICE9PSBlbmRWYWx1ZVtlbmRMZW5ndGggLSBlbmRdKSB7
XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBzbGljZVRhaWwgPSBl
bmQgPiAxID8gMSAtIGVuZCA6IHVuZGVmaW5lZDtcbiAgICB0aGlzLl9mYWxsYmFja1RleHQgPSBl
bmRWYWx1ZS5zbGljZShzdGFydCwgc2xpY2VUYWlsKTtcbiAgICByZXR1cm4gdGhpcy5fZmFsbGJh
Y2tUZXh0O1xuICB9XG59KTtcblxuUG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1RvKEZhbGxiYWNrQ29t
cG9zaXRpb25TdGF0ZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gRmFsbGJhY2tDb21wb3NpdGlvblN0
YXRlO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+
L3JlYWN0LWRvbS9saWIvRmFsbGJhY2tDb21wb3NpdGlvblN0YXRlLmpzXG4gKiogbW9kdWxlIGlk
ID0gMTMyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpc
biAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRE9NUHJvcGVydHkgPSByZXF1aXJl
KCcuL0RPTVByb3BlcnR5Jyk7XG5cbnZhciBNVVNUX1VTRV9QUk9QRVJUWSA9IERPTVByb3BlcnR5
LmluamVjdGlvbi5NVVNUX1VTRV9QUk9QRVJUWTtcbnZhciBIQVNfQk9PTEVBTl9WQUxVRSA9IERP
TVByb3BlcnR5LmluamVjdGlvbi5IQVNfQk9PTEVBTl9WQUxVRTtcbnZhciBIQVNfTlVNRVJJQ19W
QUxVRSA9IERPTVByb3BlcnR5LmluamVjdGlvbi5IQVNfTlVNRVJJQ19WQUxVRTtcbnZhciBIQVNf
UE9TSVRJVkVfTlVNRVJJQ19WQUxVRSA9IERPTVByb3BlcnR5LmluamVjdGlvbi5IQVNfUE9TSVRJ
VkVfTlVNRVJJQ19WQUxVRTtcbnZhciBIQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFID0gRE9N
UHJvcGVydHkuaW5qZWN0aW9uLkhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUU7XG5cbnZhciBI
VE1MRE9NUHJvcGVydHlDb25maWcgPSB7XG4gIGlzQ3VzdG9tQXR0cmlidXRlOiBSZWdFeHAucHJv
dG90eXBlLnRlc3QuYmluZChuZXcgUmVnRXhwKCdeKGRhdGF8YXJpYSktWycgKyBET01Qcm9wZXJ0
eS5BVFRSSUJVVEVfTkFNRV9DSEFSICsgJ10qJCcpKSxcbiAgUHJvcGVydGllczoge1xuICAgIC8q
KlxuICAgICAqIFN0YW5kYXJkIFByb3BlcnRpZXNcbiAgICAgKi9cbiAgICBhY2NlcHQ6IDAsXG4g
ICAgYWNjZXB0Q2hhcnNldDogMCxcbiAgICBhY2Nlc3NLZXk6IDAsXG4gICAgYWN0aW9uOiAwLFxu
ICAgIGFsbG93RnVsbFNjcmVlbjogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgYWxsb3dUcmFuc3Bh
cmVuY3k6IDAsXG4gICAgYWx0OiAwLFxuICAgIC8vIHNwZWNpZmllcyB0YXJnZXQgY29udGV4dCBm
b3IgbGlua3Mgd2l0aCBgcHJlbG9hZGAgdHlwZVxuICAgIGFzOiAwLFxuICAgIGFzeW5jOiBIQVNf
Qk9PTEVBTl9WQUxVRSxcbiAgICBhdXRvQ29tcGxldGU6IDAsXG4gICAgLy8gYXV0b0ZvY3VzIGlz
IHBvbHlmaWxsZWQvbm9ybWFsaXplZCBieSBBdXRvRm9jdXNVdGlsc1xuICAgIC8vIGF1dG9Gb2N1
czogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgYXV0b1BsYXk6IEhBU19CT09MRUFOX1ZBTFVFLFxu
ICAgIGNhcHR1cmU6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGNlbGxQYWRkaW5nOiAwLFxuICAg
IGNlbGxTcGFjaW5nOiAwLFxuICAgIGNoYXJTZXQ6IDAsXG4gICAgY2hhbGxlbmdlOiAwLFxuICAg
IGNoZWNrZWQ6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgY2l0
ZTogMCxcbiAgICBjbGFzc0lEOiAwLFxuICAgIGNsYXNzTmFtZTogMCxcbiAgICBjb2xzOiBIQVNf
UE9TSVRJVkVfTlVNRVJJQ19WQUxVRSxcbiAgICBjb2xTcGFuOiAwLFxuICAgIGNvbnRlbnQ6IDAs
XG4gICAgY29udGVudEVkaXRhYmxlOiAwLFxuICAgIGNvbnRleHRNZW51OiAwLFxuICAgIGNvbnRy
b2xzOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBjb29yZHM6IDAsXG4gICAgY3Jvc3NPcmlnaW46
IDAsXG4gICAgZGF0YTogMCwgLy8gRm9yIGA8b2JqZWN0IC8+YCBhY3RzIGFzIGBzcmNgLlxuICAg
IGRhdGVUaW1lOiAwLFxuICAgICdkZWZhdWx0JzogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgZGVm
ZXI6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGRpcjogMCxcbiAgICBkaXNhYmxlZDogSEFTX0JP
T0xFQU5fVkFMVUUsXG4gICAgZG93bmxvYWQ6IEhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUUs
XG4gICAgZHJhZ2dhYmxlOiAwLFxuICAgIGVuY1R5cGU6IDAsXG4gICAgZm9ybTogMCxcbiAgICBm
b3JtQWN0aW9uOiAwLFxuICAgIGZvcm1FbmNUeXBlOiAwLFxuICAgIGZvcm1NZXRob2Q6IDAsXG4g
ICAgZm9ybU5vVmFsaWRhdGU6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGZvcm1UYXJnZXQ6IDAs
XG4gICAgZnJhbWVCb3JkZXI6IDAsXG4gICAgaGVhZGVyczogMCxcbiAgICBoZWlnaHQ6IDAsXG4g
ICAgaGlkZGVuOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBoaWdoOiAwLFxuICAgIGhyZWY6IDAs
XG4gICAgaHJlZkxhbmc6IDAsXG4gICAgaHRtbEZvcjogMCxcbiAgICBodHRwRXF1aXY6IDAsXG4g
ICAgaWNvbjogMCxcbiAgICBpZDogMCxcbiAgICBpbnB1dE1vZGU6IDAsXG4gICAgaW50ZWdyaXR5
OiAwLFxuICAgIGlzOiAwLFxuICAgIGtleVBhcmFtczogMCxcbiAgICBrZXlUeXBlOiAwLFxuICAg
IGtpbmQ6IDAsXG4gICAgbGFiZWw6IDAsXG4gICAgbGFuZzogMCxcbiAgICBsaXN0OiAwLFxuICAg
IGxvb3A6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGxvdzogMCxcbiAgICBtYW5pZmVzdDogMCxc
biAgICBtYXJnaW5IZWlnaHQ6IDAsXG4gICAgbWFyZ2luV2lkdGg6IDAsXG4gICAgbWF4OiAwLFxu
ICAgIG1heExlbmd0aDogMCxcbiAgICBtZWRpYTogMCxcbiAgICBtZWRpYUdyb3VwOiAwLFxuICAg
IG1ldGhvZDogMCxcbiAgICBtaW46IDAsXG4gICAgbWluTGVuZ3RoOiAwLFxuICAgIC8vIENhdXRp
b247IGBvcHRpb24uc2VsZWN0ZWRgIGlzIG5vdCB1cGRhdGVkIGlmIGBzZWxlY3QubXVsdGlwbGVg
IGlzXG4gICAgLy8gZGlzYWJsZWQgd2l0aCBgcmVtb3ZlQXR0cmlidXRlYC5cbiAgICBtdWx0aXBs
ZTogTVVTVF9VU0VfUFJPUEVSVFkgfCBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBtdXRlZDogTVVT
VF9VU0VfUFJPUEVSVFkgfCBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBuYW1lOiAwLFxuICAgIG5v
bmNlOiAwLFxuICAgIG5vVmFsaWRhdGU6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIG9wZW46IEhB
U19CT09MRUFOX1ZBTFVFLFxuICAgIG9wdGltdW06IDAsXG4gICAgcGF0dGVybjogMCxcbiAgICBw
bGFjZWhvbGRlcjogMCxcbiAgICBwbGF5c0lubGluZTogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAg
cG9zdGVyOiAwLFxuICAgIHByZWxvYWQ6IDAsXG4gICAgcHJvZmlsZTogMCxcbiAgICByYWRpb0dy
b3VwOiAwLFxuICAgIHJlYWRPbmx5OiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICByZWZlcnJlclBv
bGljeTogMCxcbiAgICByZWw6IDAsXG4gICAgcmVxdWlyZWQ6IEhBU19CT09MRUFOX1ZBTFVFLFxu
ICAgIHJldmVyc2VkOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICByb2xlOiAwLFxuICAgIHJvd3M6
IEhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFLFxuICAgIHJvd1NwYW46IEhBU19OVU1FUklDX1ZB
TFVFLFxuICAgIHNhbmRib3g6IDAsXG4gICAgc2NvcGU6IDAsXG4gICAgc2NvcGVkOiBIQVNfQk9P
TEVBTl9WQUxVRSxcbiAgICBzY3JvbGxpbmc6IDAsXG4gICAgc2VhbWxlc3M6IEhBU19CT09MRUFO
X1ZBTFVFLFxuICAgIHNlbGVjdGVkOiBNVVNUX1VTRV9QUk9QRVJUWSB8IEhBU19CT09MRUFOX1ZB
TFVFLFxuICAgIHNoYXBlOiAwLFxuICAgIHNpemU6IEhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVF
LFxuICAgIHNpemVzOiAwLFxuICAgIHNwYW46IEhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFLFxu
ICAgIHNwZWxsQ2hlY2s6IDAsXG4gICAgc3JjOiAwLFxuICAgIHNyY0RvYzogMCxcbiAgICBzcmNM
YW5nOiAwLFxuICAgIHNyY1NldDogMCxcbiAgICBzdGFydDogSEFTX05VTUVSSUNfVkFMVUUsXG4g
ICAgc3RlcDogMCxcbiAgICBzdHlsZTogMCxcbiAgICBzdW1tYXJ5OiAwLFxuICAgIHRhYkluZGV4
OiAwLFxuICAgIHRhcmdldDogMCxcbiAgICB0aXRsZTogMCxcbiAgICAvLyBTZXR0aW5nIC50eXBl
IHRocm93cyBvbiBub24tPGlucHV0PiB0YWdzXG4gICAgdHlwZTogMCxcbiAgICB1c2VNYXA6IDAs
XG4gICAgdmFsdWU6IDAsXG4gICAgd2lkdGg6IDAsXG4gICAgd21vZGU6IDAsXG4gICAgd3JhcDog
MCxcblxuICAgIC8qKlxuICAgICAqIFJERmEgUHJvcGVydGllc1xuICAgICAqL1xuICAgIGFib3V0
OiAwLFxuICAgIGRhdGF0eXBlOiAwLFxuICAgIGlubGlzdDogMCxcbiAgICBwcmVmaXg6IDAsXG4g
ICAgLy8gcHJvcGVydHkgaXMgYWxzbyBzdXBwb3J0ZWQgZm9yIE9wZW5HcmFwaCBpbiBtZXRhIHRh
Z3MuXG4gICAgcHJvcGVydHk6IDAsXG4gICAgcmVzb3VyY2U6IDAsXG4gICAgJ3R5cGVvZic6IDAs
XG4gICAgdm9jYWI6IDAsXG5cbiAgICAvKipcbiAgICAgKiBOb24tc3RhbmRhcmQgUHJvcGVydGll
c1xuICAgICAqL1xuICAgIC8vIGF1dG9DYXBpdGFsaXplIGFuZCBhdXRvQ29ycmVjdCBhcmUgc3Vw
cG9ydGVkIGluIE1vYmlsZSBTYWZhcmkgZm9yXG4gICAgLy8ga2V5Ym9hcmQgaGludHMuXG4gICAg
YXV0b0NhcGl0YWxpemU6IDAsXG4gICAgYXV0b0NvcnJlY3Q6IDAsXG4gICAgLy8gYXV0b1NhdmUg
YWxsb3dzIFdlYktpdC9CbGluayB0byBwZXJzaXN0IHZhbHVlcyBvZiBpbnB1dCBmaWVsZHMgb24g
cGFnZSByZWxvYWRzXG4gICAgYXV0b1NhdmU6IDAsXG4gICAgLy8gY29sb3IgaXMgZm9yIFNhZmFy
aSBtYXNrLWljb24gbGlua1xuICAgIGNvbG9yOiAwLFxuICAgIC8vIGl0ZW1Qcm9wLCBpdGVtU2Nv
cGUsIGl0ZW1UeXBlIGFyZSBmb3JcbiAgICAvLyBNaWNyb2RhdGEgc3VwcG9ydC4gU2VlIGh0dHA6
Ly9zY2hlbWEub3JnL2RvY3MvZ3MuaHRtbFxuICAgIGl0ZW1Qcm9wOiAwLFxuICAgIGl0ZW1TY29w
ZTogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgaXRlbVR5cGU6IDAsXG4gICAgLy8gaXRlbUlEIGFu
ZCBpdGVtUmVmIGFyZSBmb3IgTWljcm9kYXRhIHN1cHBvcnQgYXMgd2VsbCBidXRcbiAgICAvLyBv
bmx5IHNwZWNpZmllZCBpbiB0aGUgV0hBVFdHIHNwZWMgZG9jdW1lbnQuIFNlZVxuICAgIC8vIGh0
dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL21pY3JvZGF0YS5odG1sI21pY3Jv
ZGF0YS1kb20tYXBpXG4gICAgaXRlbUlEOiAwLFxuICAgIGl0ZW1SZWY6IDAsXG4gICAgLy8gcmVz
dWx0cyBzaG93IGxvb2tpbmcgZ2xhc3MgaWNvbiBhbmQgcmVjZW50IHNlYXJjaGVzIG9uIGlucHV0
XG4gICAgLy8gc2VhcmNoIGZpZWxkcyBpbiBXZWJLaXQvQmxpbmtcbiAgICByZXN1bHRzOiAwLFxu
ICAgIC8vIElFLW9ubHkgYXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHNlY3VyaXR5IHJlc3RyaWN0
aW9ucyBvbiBhbiBpZnJhbWVcbiAgICAvLyBhcyBhbiBhbHRlcm5hdGl2ZSB0byB0aGUgc2FuZGJv
eCBhdHRyaWJ1dGUgb24gSUU8MTBcbiAgICBzZWN1cml0eTogMCxcbiAgICAvLyBJRS1vbmx5IGF0
dHJpYnV0ZSB0aGF0IGNvbnRyb2xzIGZvY3VzIGJlaGF2aW9yXG4gICAgdW5zZWxlY3RhYmxlOiAw
XG4gIH0sXG4gIERPTUF0dHJpYnV0ZU5hbWVzOiB7XG4gICAgYWNjZXB0Q2hhcnNldDogJ2FjY2Vw
dC1jaGFyc2V0JyxcbiAgICBjbGFzc05hbWU6ICdjbGFzcycsXG4gICAgaHRtbEZvcjogJ2Zvcics
XG4gICAgaHR0cEVxdWl2OiAnaHR0cC1lcXVpdidcbiAgfSxcbiAgRE9NUHJvcGVydHlOYW1lczog
e30sXG4gIERPTU11dGF0aW9uTWV0aG9kczoge1xuICAgIHZhbHVlOiBmdW5jdGlvbiAobm9kZSwg
dmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBub2Rl
LnJlbW92ZUF0dHJpYnV0ZSgndmFsdWUnKTtcbiAgICAgIH1cblxuICAgICAgLy8gTnVtYmVyIGlu
cHV0cyBnZXQgc3BlY2lhbCB0cmVhdG1lbnQgZHVlIHRvIHNvbWUgZWRnZSBjYXNlcyBpblxuICAg
ICAgLy8gQ2hyb21lLiBMZXQgZXZlcnl0aGluZyBlbHNlIGFzc2lnbiB0aGUgdmFsdWUgYXR0cmli
dXRlIGFzIG5vcm1hbC5cbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFj
dC9pc3N1ZXMvNzI1MyNpc3N1ZWNvbW1lbnQtMjM2MDc0MzI2XG4gICAgICBpZiAobm9kZS50eXBl
ICE9PSAnbnVtYmVyJyB8fCBub2RlLmhhc0F0dHJpYnV0ZSgndmFsdWUnKSA9PT0gZmFsc2UpIHtc
biAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgJycgKyB2YWx1ZSk7XG4gICAgICB9
IGVsc2UgaWYgKG5vZGUudmFsaWRpdHkgJiYgIW5vZGUudmFsaWRpdHkuYmFkSW5wdXQgJiYgbm9k
ZS5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IG5vZGUpIHtcbiAgICAgICAgLy8gRG9u
J3QgYXNzaWduIGFuIGF0dHJpYnV0ZSBpZiB2YWxpZGF0aW9uIHJlcG9ydHMgYmFkXG4gICAgICAg
IC8vIGlucHV0LiBDaHJvbWUgd2lsbCBjbGVhciB0aGUgdmFsdWUuIEFkZGl0aW9uYWxseSwgZG9u
J3RcbiAgICAgICAgLy8gb3BlcmF0ZSBvbiBpbnB1dHMgdGhhdCBoYXZlIGZvY3VzLCBvdGhlcndp
c2UgQ2hyb21lIG1pZ2h0XG4gICAgICAgIC8vIHN0cmlwIG9mZiB0cmFpbGluZyBkZWNpbWFsIHBs
YWNlcyBhbmQgY2F1c2UgdGhlIHVzZXInc1xuICAgICAgICAvLyBjdXJzb3IgcG9zaXRpb24gdG8g
anVtcCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBpbnB1dC5cbiAgICAgICAgLy9cbiAgICAgICAg
Ly8gSW4gUmVhY3RET01JbnB1dCwgd2UgaGF2ZSBhbiBvbkJsdXIgZXZlbnQgdGhhdCB3aWxsIHRy
aWdnZXJcbiAgICAgICAgLy8gdGhpcyBmdW5jdGlvbiBhZ2FpbiB3aGVuIGZvY3VzIGlzIGxvc3Qu
XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCd2YWx1ZScsICcnICsgdmFsdWUpO1xuICAgICAg
fVxuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBIVE1MRE9NUHJvcGVydHlDb25m
aWc7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34v
cmVhY3QtZG9tL2xpYi9IVE1MRE9NUHJvcGVydHlDb25maWcuanNcbiAqKiBtb2R1bGUgaWQgPSAx
MzNcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTQt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
ICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFJlY29uY2lsZXIgPSByZXF1aXJl
KCcuL1JlYWN0UmVjb25jaWxlcicpO1xuXG52YXIgaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCA9
IHJlcXVpcmUoJy4vaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudCcpO1xudmFyIEtleUVzY2FwZVV0
aWxzID0gcmVxdWlyZSgnLi9LZXlFc2NhcGVVdGlscycpO1xudmFyIHNob3VsZFVwZGF0ZVJlYWN0
Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9zaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudCcpO1xudmFy
IHRyYXZlcnNlQWxsQ2hpbGRyZW4gPSByZXF1aXJlKCcuL3RyYXZlcnNlQWxsQ2hpbGRyZW4nKTtc
bnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgUmVhY3RD
b21wb25lbnRUcmVlSG9vaztcblxuaWYgKHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAm
JiBwcm9jZXNzLmVudiAmJiBwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Rlc3QnKSB7XG4gIC8v
IFRlbXBvcmFyeSBoYWNrLlxuICAvLyBJbmxpbmUgcmVxdWlyZXMgZG9uJ3Qgd29yayB3ZWxsIHdp
dGggSmVzdDpcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy83
MjQwXG4gIC8vIFJlbW92ZSB0aGUgaW5saW5lIHJlcXVpcmVzIHdoZW4gd2UgZG9uJ3QgbmVlZCB0
aGVtIGFueW1vcmU6XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxs
LzcxNzhcbiAgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9SZWFj
dENvbXBvbmVudFRyZWVIb29rJyk7XG59XG5cbmZ1bmN0aW9uIGluc3RhbnRpYXRlQ2hpbGQoY2hp
bGRJbnN0YW5jZXMsIGNoaWxkLCBuYW1lLCBzZWxmRGVidWdJRCkge1xuICAvLyBXZSBmb3VuZCBh
IGNvbXBvbmVudCBpbnN0YW5jZS5cbiAgdmFyIGtleVVuaXF1ZSA9IGNoaWxkSW5zdGFuY2VzW25h
bWVdID09PSB1bmRlZmluZWQ7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nKSB7XG4gICAgaWYgKCFSZWFjdENvbXBvbmVudFRyZWVIb29rKSB7XG4gICAgICBSZWFj
dENvbXBvbmVudFRyZWVIb29rID0gcmVxdWlyZSgncmVhY3QvbGliL1JlYWN0Q29tcG9uZW50VHJl
ZUhvb2snKTtcbiAgICB9XG4gICAgaWYgKCFrZXlVbmlxdWUpIHtcbiAgICAgIHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnZmxhdHRlbkNoaWxk
cmVuKC4uLik6IEVuY291bnRlcmVkIHR3byBjaGlsZHJlbiB3aXRoIHRoZSBzYW1lIGtleSwgJyAr
ICdgJXNgLiBDaGlsZCBrZXlzIG11c3QgYmUgdW5pcXVlOyB3aGVuIHR3byBjaGlsZHJlbiBzaGFy
ZSBhIGtleSwgb25seSAnICsgJ3RoZSBmaXJzdCBjaGlsZCB3aWxsIGJlIHVzZWQuJXMnLCBLZXlF
c2NhcGVVdGlscy51bmVzY2FwZShuYW1lKSwgUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRTdGFj
a0FkZGVuZHVtQnlJRChzZWxmRGVidWdJRCkpIDogdm9pZCAwO1xuICAgIH1cbiAgfVxuICBpZiAo
Y2hpbGQgIT0gbnVsbCAmJiBrZXlVbmlxdWUpIHtcbiAgICBjaGlsZEluc3RhbmNlc1tuYW1lXSA9
IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQoY2hpbGQsIHRydWUpO1xuICB9XG59XG5cbi8qKlxu
ICogUmVhY3RDaGlsZFJlY29uY2lsZXIgcHJvdmlkZXMgaGVscGVycyBmb3IgaW5pdGlhbGl6aW5n
IG9yIHVwZGF0aW5nIGEgc2V0IG9mXG4gKiBjaGlsZHJlbi4gSXRzIG91dHB1dCBpcyBzdWl0YWJs
ZSBmb3IgcGFzc2luZyBpdCBvbnRvIFJlYWN0TXVsdGlDaGlsZCB3aGljaFxuICogZG9lcyBkaWZm
ZWQgcmVvcmRlcmluZyBhbmQgaW5zZXJ0aW9uLlxuICovXG52YXIgUmVhY3RDaGlsZFJlY29uY2ls
ZXIgPSB7XG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgYSBcIm1vdW50IGltYWdlXCIgZm9yIGVhY2gg
b2YgdGhlIHN1cHBsaWVkIGNoaWxkcmVuLiBJbiB0aGUgY2FzZVxuICAgKiBvZiBgUmVhY3RET01D
b21wb25lbnRgLCBhIG1vdW50IGltYWdlIGlzIGEgc3RyaW5nIG9mIG1hcmt1cC5cbiAgICpcbiAg
ICogQHBhcmFtIHs/b2JqZWN0fSBuZXN0ZWRDaGlsZE5vZGVzIE5lc3RlZCBjaGlsZCBtYXBzLlxu
ICAgKiBAcmV0dXJuIHs/b2JqZWN0fSBBIHNldCBvZiBjaGlsZCBpbnN0YW5jZXMuXG4gICAqIEBp
bnRlcm5hbFxuICAgKi9cbiAgaW5zdGFudGlhdGVDaGlsZHJlbjogZnVuY3Rpb24gKG5lc3RlZENo
aWxkTm9kZXMsIHRyYW5zYWN0aW9uLCBjb250ZXh0LCBzZWxmRGVidWdJRCkgLy8gMCBpbiBwcm9k
dWN0aW9uIGFuZCBmb3Igcm9vdHNcbiAge1xuICAgIGlmIChuZXN0ZWRDaGlsZE5vZGVzID09IG51
bGwpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2YXIgY2hpbGRJbnN0YW5jZXMg
PSB7fTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
XG4gICAgICB0cmF2ZXJzZUFsbENoaWxkcmVuKG5lc3RlZENoaWxkTm9kZXMsIGZ1bmN0aW9uIChj
aGlsZEluc3RzLCBjaGlsZCwgbmFtZSkge1xuICAgICAgICByZXR1cm4gaW5zdGFudGlhdGVDaGls
ZChjaGlsZEluc3RzLCBjaGlsZCwgbmFtZSwgc2VsZkRlYnVnSUQpO1xuICAgICAgfSwgY2hpbGRJ
bnN0YW5jZXMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0cmF2ZXJzZUFsbENoaWxkcmVuKG5lc3Rl
ZENoaWxkTm9kZXMsIGluc3RhbnRpYXRlQ2hpbGQsIGNoaWxkSW5zdGFuY2VzKTtcbiAgICB9XG4g
ICAgcmV0dXJuIGNoaWxkSW5zdGFuY2VzO1xuICB9LFxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRo
ZSByZW5kZXJlZCBjaGlsZHJlbiBhbmQgcmV0dXJucyBhIG5ldyBzZXQgb2YgY2hpbGRyZW4uXG4g
ICAqXG4gICAqIEBwYXJhbSB7P29iamVjdH0gcHJldkNoaWxkcmVuIFByZXZpb3VzbHkgaW5pdGlh
bGl6ZWQgc2V0IG9mIGNoaWxkcmVuLlxuICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRDaGlsZHJl
biBGbGF0IGNoaWxkIGVsZW1lbnQgbWFwcy5cbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRy
YW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge29iamVjdH0gY29udGV4dFxuICAg
KiBAcmV0dXJuIHs/b2JqZWN0fSBBIG5ldyBzZXQgb2YgY2hpbGQgaW5zdGFuY2VzLlxuICAgKiBA
aW50ZXJuYWxcbiAgICovXG4gIHVwZGF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAocHJldkNoaWxkcmVu
LCBuZXh0Q2hpbGRyZW4sIG1vdW50SW1hZ2VzLCByZW1vdmVkTm9kZXMsIHRyYW5zYWN0aW9uLCBo
b3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgY29udGV4dCwgc2VsZkRlYnVnSUQpIC8vIDAg
aW4gcHJvZHVjdGlvbiBhbmQgZm9yIHJvb3RzXG4gIHtcbiAgICAvLyBXZSBjdXJyZW50bHkgZG9u
J3QgaGF2ZSBhIHdheSB0byB0cmFjayBtb3ZlcyBoZXJlIGJ1dCBpZiB3ZSB1c2UgaXRlcmF0b3Jz
XG4gICAgLy8gaW5zdGVhZCBvZiBmb3IuLmluIHdlIGNhbiB6aXAgdGhlIGl0ZXJhdG9ycyBhbmQg
Y2hlY2sgaWYgYW4gaXRlbSBoYXNcbiAgICAvLyBtb3ZlZC5cbiAgICAvLyBUT0RPOiBJZiBub3Ro
aW5nIGhhcyBjaGFuZ2VkLCByZXR1cm4gdGhlIHByZXZDaGlsZHJlbiBvYmplY3Qgc28gdGhhdCB3
ZVxuICAgIC8vIGNhbiBxdWlja2x5IGJhaWxvdXQgaWYgbm90aGluZyBoYXMgY2hhbmdlZC5cbiAg
ICBpZiAoIW5leHRDaGlsZHJlbiAmJiAhcHJldkNoaWxkcmVuKSB7XG4gICAgICByZXR1cm47XG4g
ICAgfVxuICAgIHZhciBuYW1lO1xuICAgIHZhciBwcmV2Q2hpbGQ7XG4gICAgZm9yIChuYW1lIGlu
IG5leHRDaGlsZHJlbikge1xuICAgICAgaWYgKCFuZXh0Q2hpbGRyZW4uaGFzT3duUHJvcGVydHko
bmFtZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBwcmV2Q2hpbGQgPSBw
cmV2Q2hpbGRyZW4gJiYgcHJldkNoaWxkcmVuW25hbWVdO1xuICAgICAgdmFyIHByZXZFbGVtZW50
ID0gcHJldkNoaWxkICYmIHByZXZDaGlsZC5fY3VycmVudEVsZW1lbnQ7XG4gICAgICB2YXIgbmV4
dEVsZW1lbnQgPSBuZXh0Q2hpbGRyZW5bbmFtZV07XG4gICAgICBpZiAocHJldkNoaWxkICE9IG51
bGwgJiYgc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQocHJldkVsZW1lbnQsIG5leHRFbGVtZW50
KSkge1xuICAgICAgICBSZWFjdFJlY29uY2lsZXIucmVjZWl2ZUNvbXBvbmVudChwcmV2Q2hpbGQs
IG5leHRFbGVtZW50LCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgICAgIG5leHRDaGlsZHJl
bltuYW1lXSA9IHByZXZDaGlsZDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChwcmV2Q2hp
bGQpIHtcbiAgICAgICAgICByZW1vdmVkTm9kZXNbbmFtZV0gPSBSZWFjdFJlY29uY2lsZXIuZ2V0
SG9zdE5vZGUocHJldkNoaWxkKTtcbiAgICAgICAgICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENv
bXBvbmVudChwcmV2Q2hpbGQsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUaGUgY2hp
bGQgbXVzdCBiZSBpbnN0YW50aWF0ZWQgYmVmb3JlIGl0J3MgbW91bnRlZC5cbiAgICAgICAgdmFy
IG5leHRDaGlsZEluc3RhbmNlID0gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChuZXh0RWxlbWVu
dCwgdHJ1ZSk7XG4gICAgICAgIG5leHRDaGlsZHJlbltuYW1lXSA9IG5leHRDaGlsZEluc3RhbmNl
O1xuICAgICAgICAvLyBDcmVhdGluZyBtb3VudCBpbWFnZSBub3cgZW5zdXJlcyByZWZzIGFyZSBy
ZXNvbHZlZCBpbiByaWdodCBvcmRlclxuICAgICAgICAvLyAoc2VlIGh0dHBzOi8vZ2l0aHViLmNv
bS9mYWNlYm9vay9yZWFjdC9wdWxsLzcxMDEgZm9yIGV4cGxhbmF0aW9uKS5cbiAgICAgICAgdmFy
IG5leHRDaGlsZE1vdW50SW1hZ2UgPSBSZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQobmV4
dENoaWxkSW5zdGFuY2UsIHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5m
bywgY29udGV4dCwgc2VsZkRlYnVnSUQpO1xuICAgICAgICBtb3VudEltYWdlcy5wdXNoKG5leHRD
aGlsZE1vdW50SW1hZ2UpO1xuICAgICAgfVxuICAgIH1cbiAgICAvLyBVbm1vdW50IGNoaWxkcmVu
IHRoYXQgYXJlIG5vIGxvbmdlciBwcmVzZW50LlxuICAgIGZvciAobmFtZSBpbiBwcmV2Q2hpbGRy
ZW4pIHtcbiAgICAgIGlmIChwcmV2Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkgJiYgIShu
ZXh0Q2hpbGRyZW4gJiYgbmV4dENoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSkge1xuICAg
ICAgICBwcmV2Q2hpbGQgPSBwcmV2Q2hpbGRyZW5bbmFtZV07XG4gICAgICAgIHJlbW92ZWROb2Rl
c1tuYW1lXSA9IFJlYWN0UmVjb25jaWxlci5nZXRIb3N0Tm9kZShwcmV2Q2hpbGQpO1xuICAgICAg
ICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENvbXBvbmVudChwcmV2Q2hpbGQsIGZhbHNlKTtcbiAg
ICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIFVubW91bnRzIGFsbCByZW5kZXJlZCBj
aGlsZHJlbi4gVGhpcyBzaG91bGQgYmUgdXNlZCB0byBjbGVhbiB1cCBjaGlsZHJlblxuICAgKiB3
aGVuIHRoaXMgY29tcG9uZW50IGlzIHVubW91bnRlZC5cbiAgICpcbiAgICogQHBhcmFtIHs/b2Jq
ZWN0fSByZW5kZXJlZENoaWxkcmVuIFByZXZpb3VzbHkgaW5pdGlhbGl6ZWQgc2V0IG9mIGNoaWxk
cmVuLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHVubW91bnRDaGlsZHJlbjogZnVuY3Rpb24g
KHJlbmRlcmVkQ2hpbGRyZW4sIHNhZmVseSkge1xuICAgIGZvciAodmFyIG5hbWUgaW4gcmVuZGVy
ZWRDaGlsZHJlbikge1xuICAgICAgaWYgKHJlbmRlcmVkQ2hpbGRyZW4uaGFzT3duUHJvcGVydHko
bmFtZSkpIHtcbiAgICAgICAgdmFyIHJlbmRlcmVkQ2hpbGQgPSByZW5kZXJlZENoaWxkcmVuW25h
bWVdO1xuICAgICAgICBSZWFjdFJlY29uY2lsZXIudW5tb3VudENvbXBvbmVudChyZW5kZXJlZENo
aWxkLCBzYWZlbHkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMg
PSBSZWFjdENoaWxkUmVjb25jaWxlcjtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQ
QUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0Q2hpbGRSZWNvbmNpbGVyLmpz
XG4gKiogbW9kdWxlIGlkID0gMTM0XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipc
biAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4g
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRE9NQ2hp
bGRyZW5PcGVyYXRpb25zID0gcmVxdWlyZSgnLi9ET01DaGlsZHJlbk9wZXJhdGlvbnMnKTtcbnZh
ciBSZWFjdERPTUlET3BlcmF0aW9ucyA9IHJlcXVpcmUoJy4vUmVhY3RET01JRE9wZXJhdGlvbnMn
KTtcblxuLyoqXG4gKiBBYnN0cmFjdHMgYXdheSBhbGwgZnVuY3Rpb25hbGl0eSBvZiB0aGUgcmVj
b25jaWxlciB0aGF0IHJlcXVpcmVzIGtub3dsZWRnZSBvZlxuICogdGhlIGJyb3dzZXIgY29udGV4
dC4gVE9ETzogVGhlc2UgY2FsbGVycyBzaG91bGQgYmUgcmVmYWN0b3JlZCB0byBhdm9pZCB0aGVc
biAqIG5lZWQgZm9yIHRoaXMgaW5qZWN0aW9uLlxuICovXG52YXIgUmVhY3RDb21wb25lbnRCcm93
c2VyRW52aXJvbm1lbnQgPSB7XG4gIHByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6IFJlYWN0RE9NSURP
cGVyYXRpb25zLmRhbmdlcm91c2x5UHJvY2Vzc0NoaWxkcmVuVXBkYXRlcyxcblxuICByZXBsYWNl
Tm9kZVdpdGhNYXJrdXA6IERPTUNoaWxkcmVuT3BlcmF0aW9ucy5kYW5nZXJvdXNseVJlcGxhY2VO
b2RlV2l0aE1hcmt1cFxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdENvbXBvbmVudEJyb3dz
ZXJFbnZpcm9ubWVudDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RF
UlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50
LmpzXG4gKiogbW9kdWxlIGlkID0gMTM1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIv
KipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3By
b2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpLFxuICAgIF9hc3Np
Z24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBSZWFjdCA9IHJlcXVpcmUoJ3Jl
YWN0L2xpYi9SZWFjdCcpO1xudmFyIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQgPSByZXF1aXJl
KCcuL1JlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQnKTtcbnZhciBSZWFjdEN1cnJlbnRPd25lciA9
IHJlcXVpcmUoJ3JlYWN0L2xpYi9SZWFjdEN1cnJlbnRPd25lcicpO1xudmFyIFJlYWN0RXJyb3JV
dGlscyA9IHJlcXVpcmUoJy4vUmVhY3RFcnJvclV0aWxzJyk7XG52YXIgUmVhY3RJbnN0YW5jZU1h
cCA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0YW5jZU1hcCcpO1xudmFyIFJlYWN0SW5zdHJ1bWVudGF0
aW9uID0gcmVxdWlyZSgnLi9SZWFjdEluc3RydW1lbnRhdGlvbicpO1xudmFyIFJlYWN0Tm9kZVR5
cGVzID0gcmVxdWlyZSgnLi9SZWFjdE5vZGVUeXBlcycpO1xudmFyIFJlYWN0UmVjb25jaWxlciA9
IHJlcXVpcmUoJy4vUmVhY3RSZWNvbmNpbGVyJyk7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBjaGVja1JlYWN0VHlwZVNwZWMgPSByZXF1aXJl
KCcuL2NoZWNrUmVhY3RUeXBlU3BlYycpO1xufVxuXG52YXIgZW1wdHlPYmplY3QgPSByZXF1aXJl
KCdmYmpzL2xpYi9lbXB0eU9iamVjdCcpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMv
bGliL2ludmFyaWFudCcpO1xudmFyIHNoYWxsb3dFcXVhbCA9IHJlcXVpcmUoJ2ZianMvbGliL3No
YWxsb3dFcXVhbCcpO1xudmFyIHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50ID0gcmVxdWlyZSgn
Li9zaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdm
YmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBDb21wb3NpdGVUeXBlcyA9IHtcbiAgSW1wdXJlQ2xh
c3M6IDAsXG4gIFB1cmVDbGFzczogMSxcbiAgU3RhdGVsZXNzRnVuY3Rpb25hbDogMlxufTtcblxu
ZnVuY3Rpb24gU3RhdGVsZXNzQ29tcG9uZW50KENvbXBvbmVudCkge31cblN0YXRlbGVzc0NvbXBv
bmVudC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICB2YXIgQ29tcG9uZW50ID0g
UmVhY3RJbnN0YW5jZU1hcC5nZXQodGhpcykuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG4gIHZhciBl
bGVtZW50ID0gQ29tcG9uZW50KHRoaXMucHJvcHMsIHRoaXMuY29udGV4dCwgdGhpcy51cGRhdGVy
KTtcbiAgd2FybklmSW52YWxpZEVsZW1lbnQoQ29tcG9uZW50LCBlbGVtZW50KTtcbiAgcmV0dXJu
IGVsZW1lbnQ7XG59O1xuXG5mdW5jdGlvbiB3YXJuSWZJbnZhbGlkRWxlbWVudChDb21wb25lbnQs
IGVsZW1lbnQpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicp
IHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhl
bGVtZW50ID09PSBudWxsIHx8IGVsZW1lbnQgPT09IGZhbHNlIHx8IFJlYWN0LmlzVmFsaWRFbGVt
ZW50KGVsZW1lbnQpLCAnJXMoLi4uKTogQSB2YWxpZCBSZWFjdCBlbGVtZW50IChvciBudWxsKSBt
dXN0IGJlIHJldHVybmVkLiBZb3UgbWF5IGhhdmUgJyArICdyZXR1cm5lZCB1bmRlZmluZWQsIGFu
IGFycmF5IG9yIHNvbWUgb3RoZXIgaW52YWxpZCBvYmplY3QuJywgQ29tcG9uZW50LmRpc3BsYXlO
YW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdDb21wb25lbnQnKSA6IHZvaWQgMDtcbiAgICBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghQ29tcG9uZW50LmNo
aWxkQ29udGV4dFR5cGVzLCAnJXMoLi4uKTogY2hpbGRDb250ZXh0VHlwZXMgY2Fubm90IGJlIGRl
ZmluZWQgb24gYSBmdW5jdGlvbmFsIGNvbXBvbmVudC4nLCBDb21wb25lbnQuZGlzcGxheU5hbWUg
fHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCcpIDogdm9pZCAwO1xuICB9XG59XG5cbmZ1
bmN0aW9uIHNob3VsZENvbnN0cnVjdChDb21wb25lbnQpIHtcbiAgcmV0dXJuICEhKENvbXBvbmVu
dC5wcm90b3R5cGUgJiYgQ29tcG9uZW50LnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50KTtcbn1c
blxuZnVuY3Rpb24gaXNQdXJlQ29tcG9uZW50KENvbXBvbmVudCkge1xuICByZXR1cm4gISEoQ29t
cG9uZW50LnByb3RvdHlwZSAmJiBDb21wb25lbnQucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9u
ZW50KTtcbn1cblxuLy8gU2VwYXJhdGVkIGludG8gYSBmdW5jdGlvbiB0byBjb250YWluIGRlb3B0
aW1pemF0aW9ucyBjYXVzZWQgYnkgdHJ5L2ZpbmFsbHkuXG5mdW5jdGlvbiBtZWFzdXJlTGlmZUN5
Y2xlUGVyZihmbiwgZGVidWdJRCwgdGltZXJUeXBlKSB7XG4gIGlmIChkZWJ1Z0lEID09PSAwKSB7
XG4gICAgLy8gVG9wLWxldmVsIHdyYXBwZXJzIChzZWUgUmVhY3RNb3VudCkgYW5kIGVtcHR5IGNv
bXBvbmVudHMgKHNlZVxuICAgIC8vIFJlYWN0RE9NRW1wdHlDb21wb25lbnQpIGFyZSBpbnZpc2li
bGUgdG8gaG9va3MgYW5kIGRldnRvb2xzLlxuICAgIC8vIEJvdGggYXJlIGltcGxlbWVudGF0aW9u
IGRldGFpbHMgdGhhdCBzaG91bGQgZ28gYXdheSBpbiB0aGUgZnV0dXJlLlxuICAgIHJldHVybiBm
bigpO1xuICB9XG5cbiAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uQmVnaW5MaWZl
Q3ljbGVUaW1lcihkZWJ1Z0lELCB0aW1lclR5cGUpO1xuICB0cnkge1xuICAgIHJldHVybiBmbigp
O1xuICB9IGZpbmFsbHkge1xuICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkVu
ZExpZmVDeWNsZVRpbWVyKGRlYnVnSUQsIHRpbWVyVHlwZSk7XG4gIH1cbn1cblxuLyoqXG4gKiAt
LS0tLS0tLS0tLS0tLS0tLS0gVGhlIExpZmUtQ3ljbGUgb2YgYSBDb21wb3NpdGUgQ29tcG9uZW50
IC0tLS0tLS0tLS0tLS0tLS0tLVxuICpcbiAqIC0gY29uc3RydWN0b3I6IEluaXRpYWxpemF0aW9u
IG9mIHN0YXRlLiBUaGUgaW5zdGFuY2UgaXMgbm93IHJldGFpbmVkLlxuICogICAtIGNvbXBvbmVu
dFdpbGxNb3VudFxuICogICAtIHJlbmRlclxuICogICAtIFtjaGlsZHJlbidzIGNvbnN0cnVjdG9y
c11cbiAqICAgICAtIFtjaGlsZHJlbidzIGNvbXBvbmVudFdpbGxNb3VudCBhbmQgcmVuZGVyXVxu
ICogICAgIC0gW2NoaWxkcmVuJ3MgY29tcG9uZW50RGlkTW91bnRdXG4gKiAgICAgLSBjb21wb25l
bnREaWRNb3VudFxuICpcbiAqICAgICAgIFVwZGF0ZSBQaGFzZXM6XG4gKiAgICAgICAtIGNvbXBv
bmVudFdpbGxSZWNlaXZlUHJvcHMgKG9ubHkgY2FsbGVkIGlmIHBhcmVudCB1cGRhdGVkKVxuICog
ICAgICAgLSBzaG91bGRDb21wb25lbnRVcGRhdGVcbiAqICAgICAgICAgLSBjb21wb25lbnRXaWxs
VXBkYXRlXG4gKiAgICAgICAgICAgLSByZW5kZXJcbiAqICAgICAgICAgICAtIFtjaGlsZHJlbidz
IGNvbnN0cnVjdG9ycyBvciByZWNlaXZlIHByb3BzIHBoYXNlc11cbiAqICAgICAgICAgLSBjb21w
b25lbnREaWRVcGRhdGVcbiAqXG4gKiAgICAgLSBjb21wb25lbnRXaWxsVW5tb3VudFxuICogICAg
IC0gW2NoaWxkcmVuJ3MgY29tcG9uZW50V2lsbFVubW91bnRdXG4gKiAgIC0gW2NoaWxkcmVuIGRl
c3Ryb3llZF1cbiAqIC0gKGRlc3Ryb3llZCk6IFRoZSBpbnN0YW5jZSBpcyBub3cgYmxhbmssIHJl
bGVhc2VkIGJ5IFJlYWN0IGFuZCByZWFkeSBmb3IgR0MuXG4gKlxuICogLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS1cbiAqL1xuXG4vKipcbiAqIEFuIGluY3JlbWVudGluZyBJRCBhc3NpZ25lZCB0byBlYWNo
IGNvbXBvbmVudCB3aGVuIGl0IGlzIG1vdW50ZWQuIFRoaXMgaXNcbiAqIHVzZWQgdG8gZW5mb3Jj
ZSB0aGUgb3JkZXIgaW4gd2hpY2ggYFJlYWN0VXBkYXRlc2AgdXBkYXRlcyBkaXJ0eSBjb21wb25l
bnRzLlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbnZhciBuZXh0TW91bnRJRCA9IDE7XG5cbi8qKlxu
ICogQGxlbmRzIHtSZWFjdENvbXBvc2l0ZUNvbXBvbmVudC5wcm90b3R5cGV9XG4gKi9cbnZhciBS
ZWFjdENvbXBvc2l0ZUNvbXBvbmVudCA9IHtcbiAgLyoqXG4gICAqIEJhc2UgY29uc3RydWN0b3Ig
Zm9yIGFsbCBjb21wb3NpdGUgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0RWxl
bWVudH0gZWxlbWVudFxuICAgKiBAZmluYWxcbiAgICogQGludGVybmFsXG4gICAqL1xuICBjb25z
dHJ1Y3Q6IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBl
bGVtZW50O1xuICAgIHRoaXMuX3Jvb3ROb2RlSUQgPSAwO1xuICAgIHRoaXMuX2NvbXBvc2l0ZVR5
cGUgPSBudWxsO1xuICAgIHRoaXMuX2luc3RhbmNlID0gbnVsbDtcbiAgICB0aGlzLl9ob3N0UGFy
ZW50ID0gbnVsbDtcbiAgICB0aGlzLl9ob3N0Q29udGFpbmVySW5mbyA9IG51bGw7XG5cbiAgICAv
LyBTZWUgUmVhY3RVcGRhdGVRdWV1ZVxuICAgIHRoaXMuX3VwZGF0ZUJhdGNoTnVtYmVyID0gbnVs
bDtcbiAgICB0aGlzLl9wZW5kaW5nRWxlbWVudCA9IG51bGw7XG4gICAgdGhpcy5fcGVuZGluZ1N0
YXRlUXVldWUgPSBudWxsO1xuICAgIHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGUgPSBmYWxzZTtc
biAgICB0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUgPSBmYWxzZTtcblxuICAgIHRoaXMuX3JlbmRl
cmVkTm9kZVR5cGUgPSBudWxsO1xuICAgIHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50ID0gbnVsbDtc
biAgICB0aGlzLl9jb250ZXh0ID0gbnVsbDtcbiAgICB0aGlzLl9tb3VudE9yZGVyID0gMDtcbiAg
ICB0aGlzLl90b3BMZXZlbFdyYXBwZXIgPSBudWxsO1xuXG4gICAgLy8gU2VlIFJlYWN0VXBkYXRl
cyBhbmQgUmVhY3RVcGRhdGVRdWV1ZS5cbiAgICB0aGlzLl9wZW5kaW5nQ2FsbGJhY2tzID0gbnVs
bDtcblxuICAgIC8vIENvbXBvbmVudFdpbGxVbm1vdW50IHNoYWxsIG9ubHkgYmUgY2FsbGVkIG9u
Y2VcbiAgICB0aGlzLl9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3VudCA9IGZhbHNlO1xuXG4gICAg
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHRoaXMu
X3dhcm5lZEFib3V0UmVmc0luUmVuZGVyID0gZmFsc2U7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxu
ICAgKiBJbml0aWFsaXplcyB0aGUgY29tcG9uZW50LCByZW5kZXJzIG1hcmt1cCwgYW5kIHJlZ2lz
dGVycyBldmVudCBsaXN0ZW5lcnMuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVU
cmFuc2FjdGlvbnxSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxu
ICAgKiBAcGFyYW0gez9vYmplY3R9IGhvc3RQYXJlbnRcbiAgICogQHBhcmFtIHs/b2JqZWN0fSBo
b3N0Q29udGFpbmVySW5mb1xuICAgKiBAcGFyYW0gez9vYmplY3R9IGNvbnRleHRcbiAgICogQHJl
dHVybiB7P3N0cmluZ30gUmVuZGVyZWQgbWFya3VwIHRvIGJlIGluc2VydGVkIGludG8gdGhlIERP
TS5cbiAgICogQGZpbmFsXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgbW91bnRDb21wb25lbnQ6
IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIGNv
bnRleHQpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgdGhpcy5fY29udGV4dCA9IGNv
bnRleHQ7XG4gICAgdGhpcy5fbW91bnRPcmRlciA9IG5leHRNb3VudElEKys7XG4gICAgdGhpcy5f
aG9zdFBhcmVudCA9IGhvc3RQYXJlbnQ7XG4gICAgdGhpcy5faG9zdENvbnRhaW5lckluZm8gPSBo
b3N0Q29udGFpbmVySW5mbztcblxuICAgIHZhciBwdWJsaWNQcm9wcyA9IHRoaXMuX2N1cnJlbnRF
bGVtZW50LnByb3BzO1xuICAgIHZhciBwdWJsaWNDb250ZXh0ID0gdGhpcy5fcHJvY2Vzc0NvbnRl
eHQoY29udGV4dCk7XG5cbiAgICB2YXIgQ29tcG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQu
dHlwZTtcblxuICAgIHZhciB1cGRhdGVRdWV1ZSA9IHRyYW5zYWN0aW9uLmdldFVwZGF0ZVF1ZXVl
KCk7XG5cbiAgICAvLyBJbml0aWFsaXplIHRoZSBwdWJsaWMgY2xhc3NcbiAgICB2YXIgZG9Db25z
dHJ1Y3QgPSBzaG91bGRDb25zdHJ1Y3QoQ29tcG9uZW50KTtcbiAgICB2YXIgaW5zdCA9IHRoaXMu
X2NvbnN0cnVjdENvbXBvbmVudChkb0NvbnN0cnVjdCwgcHVibGljUHJvcHMsIHB1YmxpY0NvbnRl
eHQsIHVwZGF0ZVF1ZXVlKTtcbiAgICB2YXIgcmVuZGVyZWRFbGVtZW50O1xuXG4gICAgLy8gU3Vw
cG9ydCBmdW5jdGlvbmFsIGNvbXBvbmVudHNcbiAgICBpZiAoIWRvQ29uc3RydWN0ICYmIChpbnN0
ID09IG51bGwgfHwgaW5zdC5yZW5kZXIgPT0gbnVsbCkpIHtcbiAgICAgIHJlbmRlcmVkRWxlbWVu
dCA9IGluc3Q7XG4gICAgICB3YXJuSWZJbnZhbGlkRWxlbWVudChDb21wb25lbnQsIHJlbmRlcmVk
RWxlbWVudCk7XG4gICAgICAhKGluc3QgPT09IG51bGwgfHwgaW5zdCA9PT0gZmFsc2UgfHwgUmVh
Y3QuaXNWYWxpZEVsZW1lbnQoaW5zdCkpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzKC4uLik6IEEgdmFsaWQgUmVhY3QgZWxlbWVu
dCAob3IgbnVsbCkgbXVzdCBiZSByZXR1cm5lZC4gWW91IG1heSBoYXZlIHJldHVybmVkIHVuZGVm
aW5lZCwgYW4gYXJyYXkgb3Igc29tZSBvdGhlciBpbnZhbGlkIG9iamVjdC4nLCBDb21wb25lbnQu
ZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCcpIDogX3Byb2RJbnZh
cmlhbnQoJzEwNScsIENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZSB8fCAn
Q29tcG9uZW50JykgOiB2b2lkIDA7XG4gICAgICBpbnN0ID0gbmV3IFN0YXRlbGVzc0NvbXBvbmVu
dChDb21wb25lbnQpO1xuICAgICAgdGhpcy5fY29tcG9zaXRlVHlwZSA9IENvbXBvc2l0ZVR5cGVz
LlN0YXRlbGVzc0Z1bmN0aW9uYWw7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChpc1B1cmVDb21w
b25lbnQoQ29tcG9uZW50KSkge1xuICAgICAgICB0aGlzLl9jb21wb3NpdGVUeXBlID0gQ29tcG9z
aXRlVHlwZXMuUHVyZUNsYXNzO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5fY29tcG9z
aXRlVHlwZSA9IENvbXBvc2l0ZVR5cGVzLkltcHVyZUNsYXNzO1xuICAgICAgfVxuICAgIH1cblxu
ICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAv
LyBUaGlzIHdpbGwgdGhyb3cgbGF0ZXIgaW4gX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCwgYnV0
IGFkZCBhbiBlYXJseVxuICAgICAgLy8gd2FybmluZyBub3cgdG8gaGVscCBkZWJ1Z2dpbmdcbiAg
ICAgIGlmIChpbnN0LnJlbmRlciA9PSBudWxsKSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMoLi4uKTogTm8gYHJlbmRl
cmAgbWV0aG9kIGZvdW5kIG9uIHRoZSByZXR1cm5lZCBjb21wb25lbnQgJyArICdpbnN0YW5jZTog
eW91IG1heSBoYXZlIGZvcmdvdHRlbiB0byBkZWZpbmUgYHJlbmRlcmAuJywgQ29tcG9uZW50LmRp
c3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdDb21wb25lbnQnKSA6IHZvaWQgMDtcbiAg
ICAgIH1cblxuICAgICAgdmFyIHByb3BzTXV0YXRlZCA9IGluc3QucHJvcHMgIT09IHB1YmxpY1By
b3BzO1xuICAgICAgdmFyIGNvbXBvbmVudE5hbWUgPSBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwg
Q29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCc7XG5cbiAgICAgIHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGluc3QucHJvcHMgPT09IHVuZGVmaW5lZCB8
fCAhcHJvcHNNdXRhdGVkLCAnJXMoLi4uKTogV2hlbiBjYWxsaW5nIHN1cGVyKCkgaW4gYCVzYCwg
bWFrZSBzdXJlIHRvIHBhc3MgJyArIFwidXAgdGhlIHNhbWUgcHJvcHMgdGhhdCB5b3VyIGNvbXBv
bmVudCdzIGNvbnN0cnVjdG9yIHdhcyBwYXNzZWQuXCIsIGNvbXBvbmVudE5hbWUsIGNvbXBvbmVu
dE5hbWUpIDogdm9pZCAwO1xuICAgIH1cblxuICAgIC8vIFRoZXNlIHNob3VsZCBiZSBzZXQgdXAg
aW4gdGhlIGNvbnN0cnVjdG9yLCBidXQgYXMgYSBjb252ZW5pZW5jZSBmb3JcbiAgICAvLyBzaW1w
bGVyIGNsYXNzIGFic3RyYWN0aW9ucywgd2Ugc2V0IHRoZW0gdXAgYWZ0ZXIgdGhlIGZhY3QuXG4g
ICAgaW5zdC5wcm9wcyA9IHB1YmxpY1Byb3BzO1xuICAgIGluc3QuY29udGV4dCA9IHB1YmxpY0Nv
bnRleHQ7XG4gICAgaW5zdC5yZWZzID0gZW1wdHlPYmplY3Q7XG4gICAgaW5zdC51cGRhdGVyID0g
dXBkYXRlUXVldWU7XG5cbiAgICB0aGlzLl9pbnN0YW5jZSA9IGluc3Q7XG5cbiAgICAvLyBTdG9y
ZSBhIHJlZmVyZW5jZSBmcm9tIHRoZSBpbnN0YW5jZSBiYWNrIHRvIHRoZSBpbnRlcm5hbCByZXBy
ZXNlbnRhdGlvblxuICAgIFJlYWN0SW5zdGFuY2VNYXAuc2V0KGluc3QsIHRoaXMpO1xuXG4gICAg
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIC8vIFNp
bmNlIHBsYWluIEpTIGNsYXNzZXMgYXJlIGRlZmluZWQgd2l0aG91dCBhbnkgc3BlY2lhbCBpbml0
aWFsaXphdGlvblxuICAgICAgLy8gbG9naWMsIHdlIGNhbiBub3QgY2F0Y2ggY29tbW9uIGVycm9y
cyBlYXJseS4gVGhlcmVmb3JlLCB3ZSBoYXZlIHRvXG4gICAgICAvLyBjYXRjaCB0aGVtIGhlcmUs
IGF0IGluaXRpYWxpemF0aW9uIHRpbWUsIGluc3RlYWQuXG4gICAgICBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghaW5zdC5nZXRJbml0aWFsU3RhdGUgfHwg
aW5zdC5nZXRJbml0aWFsU3RhdGUuaXNSZWFjdENsYXNzQXBwcm92ZWQgfHwgaW5zdC5zdGF0ZSwg
J2dldEluaXRpYWxTdGF0ZSB3YXMgZGVmaW5lZCBvbiAlcywgYSBwbGFpbiBKYXZhU2NyaXB0IGNs
YXNzLiAnICsgJ1RoaXMgaXMgb25seSBzdXBwb3J0ZWQgZm9yIGNsYXNzZXMgY3JlYXRlZCB1c2lu
ZyBSZWFjdC5jcmVhdGVDbGFzcy4gJyArICdEaWQgeW91IG1lYW4gdG8gZGVmaW5lIGEgc3RhdGUg
cHJvcGVydHkgaW5zdGVhZD8nLCB0aGlzLmdldE5hbWUoKSB8fCAnYSBjb21wb25lbnQnKSA6IHZv
aWQgMDtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKCFpbnN0LmdldERlZmF1bHRQcm9wcyB8fCBpbnN0LmdldERlZmF1bHRQcm9wcy5pc1JlYWN0
Q2xhc3NBcHByb3ZlZCwgJ2dldERlZmF1bHRQcm9wcyB3YXMgZGVmaW5lZCBvbiAlcywgYSBwbGFp
biBKYXZhU2NyaXB0IGNsYXNzLiAnICsgJ1RoaXMgaXMgb25seSBzdXBwb3J0ZWQgZm9yIGNsYXNz
ZXMgY3JlYXRlZCB1c2luZyBSZWFjdC5jcmVhdGVDbGFzcy4gJyArICdVc2UgYSBzdGF0aWMgcHJv
cGVydHkgdG8gZGVmaW5lIGRlZmF1bHRQcm9wcyBpbnN0ZWFkLicsIHRoaXMuZ2V0TmFtZSgpIHx8
ICdhIGNvbXBvbmVudCcpIDogdm9pZCAwO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWluc3QucHJvcFR5cGVzLCAncHJvcFR5cGVzIHdhcyBk
ZWZpbmVkIGFzIGFuIGluc3RhbmNlIHByb3BlcnR5IG9uICVzLiBVc2UgYSBzdGF0aWMgJyArICdw
cm9wZXJ0eSB0byBkZWZpbmUgcHJvcFR5cGVzIGluc3RlYWQuJywgdGhpcy5nZXROYW1lKCkgfHwg
J2EgY29tcG9uZW50JykgOiB2b2lkIDA7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nID8gd2FybmluZyghaW5zdC5jb250ZXh0VHlwZXMsICdjb250ZXh0VHlwZXMg
d2FzIGRlZmluZWQgYXMgYW4gaW5zdGFuY2UgcHJvcGVydHkgb24gJXMuIFVzZSBhICcgKyAnc3Rh
dGljIHByb3BlcnR5IHRvIGRlZmluZSBjb250ZXh0VHlwZXMgaW5zdGVhZC4nLCB0aGlzLmdldE5h
bWUoKSB8fCAnYSBjb21wb25lbnQnKSA6IHZvaWQgMDtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHR5cGVvZiBpbnN0LmNvbXBvbmVudFNob3Vs
ZFVwZGF0ZSAhPT0gJ2Z1bmN0aW9uJywgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21w
b25lbnRTaG91bGRVcGRhdGUoKS4gRGlkIHlvdSBtZWFuIHNob3VsZENvbXBvbmVudFVwZGF0ZSgp
PyAnICsgJ1RoZSBuYW1lIGlzIHBocmFzZWQgYXMgYSBxdWVzdGlvbiBiZWNhdXNlIHRoZSBmdW5j
dGlvbiBpcyAnICsgJ2V4cGVjdGVkIHRvIHJldHVybiBhIHZhbHVlLicsIHRoaXMuZ2V0TmFtZSgp
IHx8ICdBIGNvbXBvbmVudCcpIDogdm9pZCAwO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodHlwZW9mIGluc3QuY29tcG9uZW50RGlkVW5tb3Vu
dCAhPT0gJ2Z1bmN0aW9uJywgJyVzIGhhcyBhIG1ldGhvZCBjYWxsZWQgJyArICdjb21wb25lbnRE
aWRVbm1vdW50KCkuIEJ1dCB0aGVyZSBpcyBubyBzdWNoIGxpZmVjeWNsZSBtZXRob2QuICcgKyAn
RGlkIHlvdSBtZWFuIGNvbXBvbmVudFdpbGxVbm1vdW50KCk/JywgdGhpcy5nZXROYW1lKCkgfHwg
J0EgY29tcG9uZW50JykgOiB2b2lkIDA7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nID8gd2FybmluZyh0eXBlb2YgaW5zdC5jb21wb25lbnRXaWxsUmVjaWV2ZVBy
b3BzICE9PSAnZnVuY3Rpb24nLCAnJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCAnICsgJ2NvbXBvbmVu
dFdpbGxSZWNpZXZlUHJvcHMoKS4gRGlkIHlvdSBtZWFuIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJv
cHMoKT8nLCB0aGlzLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnKSA6IHZvaWQgMDtcbiAgICB9
XG5cbiAgICB2YXIgaW5pdGlhbFN0YXRlID0gaW5zdC5zdGF0ZTtcbiAgICBpZiAoaW5pdGlhbFN0
YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGluc3Quc3RhdGUgPSBpbml0aWFsU3RhdGUgPSBu
dWxsO1xuICAgIH1cbiAgICAhKHR5cGVvZiBpbml0aWFsU3RhdGUgPT09ICdvYmplY3QnICYmICFB
cnJheS5pc0FycmF5KGluaXRpYWxTdGF0ZSkpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzLnN0YXRlOiBtdXN0IGJlIHNldCB0byBh
biBvYmplY3Qgb3IgbnVsbCcsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBv
bmVudCcpIDogX3Byb2RJbnZhcmlhbnQoJzEwNicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENv
bXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwO1xuXG4gICAgdGhpcy5fcGVuZGluZ1N0YXRlUXVl
dWUgPSBudWxsO1xuICAgIHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGUgPSBmYWxzZTtcbiAgICB0
aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUgPSBmYWxzZTtcblxuICAgIHZhciBtYXJrdXA7XG4gICAg
aWYgKGluc3QudW5zdGFibGVfaGFuZGxlRXJyb3IpIHtcbiAgICAgIG1hcmt1cCA9IHRoaXMucGVy
Zm9ybUluaXRpYWxNb3VudFdpdGhFcnJvckhhbmRsaW5nKHJlbmRlcmVkRWxlbWVudCwgaG9zdFBh
cmVudCwgaG9zdENvbnRhaW5lckluZm8sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICB9IGVs
c2Uge1xuICAgICAgbWFya3VwID0gdGhpcy5wZXJmb3JtSW5pdGlhbE1vdW50KHJlbmRlcmVkRWxl
bWVudCwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIHRyYW5zYWN0aW9uLCBjb250ZXh0
KTtcbiAgICB9XG5cbiAgICBpZiAoaW5zdC5jb21wb25lbnREaWRNb3VudCkge1xuICAgICAgaWYg
KHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdHJhbnNh
Y3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShmdW5jdGlvbiAoKSB7XG4gICAgICAg
ICAgbWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJu
IGluc3QuY29tcG9uZW50RGlkTW91bnQoKTtcbiAgICAgICAgICB9LCBfdGhpcy5fZGVidWdJRCwg
J2NvbXBvbmVudERpZE1vdW50Jyk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAg
ICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShpbnN0LmNvbXBvbmVu
dERpZE1vdW50LCBpbnN0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbWFya3VwO1xu
ICB9LFxuXG4gIF9jb25zdHJ1Y3RDb21wb25lbnQ6IGZ1bmN0aW9uIChkb0NvbnN0cnVjdCwgcHVi
bGljUHJvcHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0ZVF1ZXVlKSB7XG4gICAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIFJlYWN0Q3VycmVudE93bmVy
LmN1cnJlbnQgPSB0aGlzO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnN0
cnVjdENvbXBvbmVudFdpdGhvdXRPd25lcihkb0NvbnN0cnVjdCwgcHVibGljUHJvcHMsIHB1Ymxp
Y0NvbnRleHQsIHVwZGF0ZVF1ZXVlKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIFJlYWN0
Q3VycmVudE93bmVyLmN1cnJlbnQgPSBudWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAg
ICByZXR1cm4gdGhpcy5fY29uc3RydWN0Q29tcG9uZW50V2l0aG91dE93bmVyKGRvQ29uc3RydWN0
LCBwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpO1xuICAgIH1cbiAgfSxc
blxuICBfY29uc3RydWN0Q29tcG9uZW50V2l0aG91dE93bmVyOiBmdW5jdGlvbiAoZG9Db25zdHJ1
Y3QsIHB1YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCB1cGRhdGVRdWV1ZSkge1xuICAgIHZhciBD
b21wb25lbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlO1xuXG4gICAgaWYgKGRvQ29uc3Ry
dWN0KSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykg
e1xuICAgICAgICByZXR1cm4gbWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rpb24gKCkge1xuICAg
ICAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50KHB1YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCB1
cGRhdGVRdWV1ZSk7XG4gICAgICAgIH0sIHRoaXMuX2RlYnVnSUQsICdjdG9yJyk7XG4gICAgICB9
IGVsc2Uge1xuICAgICAgICByZXR1cm4gbmV3IENvbXBvbmVudChwdWJsaWNQcm9wcywgcHVibGlj
Q29udGV4dCwgdXBkYXRlUXVldWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRoaXMgY2Fu
IHN0aWxsIGJlIGFuIGluc3RhbmNlIGluIGNhc2Ugb2YgZmFjdG9yeSBjb21wb25lbnRzXG4gICAg
Ly8gYnV0IHdlJ2xsIGNvdW50IHRoaXMgYXMgdGltZSBzcGVudCByZW5kZXJpbmcgYXMgdGhlIG1v
cmUgY29tbW9uIGNhc2UuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicpIHtcbiAgICAgIHJldHVybiBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAoKSB7
XG4gICAgICAgIHJldHVybiBDb21wb25lbnQocHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQsIHVw
ZGF0ZVF1ZXVlKTtcbiAgICAgIH0sIHRoaXMuX2RlYnVnSUQsICdyZW5kZXInKTtcbiAgICB9IGVs
c2Uge1xuICAgICAgcmV0dXJuIENvbXBvbmVudChwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwg
dXBkYXRlUXVldWUpO1xuICAgIH1cbiAgfSxcblxuICBwZXJmb3JtSW5pdGlhbE1vdW50V2l0aEVy
cm9ySGFuZGxpbmc6IGZ1bmN0aW9uIChyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhvc3RD
b250YWluZXJJbmZvLCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgIHZhciBtYXJrdXA7XG4g
ICAgdmFyIGNoZWNrcG9pbnQgPSB0cmFuc2FjdGlvbi5jaGVja3BvaW50KCk7XG4gICAgdHJ5IHtc
biAgICAgIG1hcmt1cCA9IHRoaXMucGVyZm9ybUluaXRpYWxNb3VudChyZW5kZXJlZEVsZW1lbnQs
IGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4g
ICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gUm9sbCBiYWNrIHRvIGNoZWNrcG9pbnQsIGhhbmRs
ZSBlcnJvciAod2hpY2ggbWF5IGFkZCBpdGVtcyB0byB0aGUgdHJhbnNhY3Rpb24pLCBhbmQgdGFr
ZSBhIG5ldyBjaGVja3BvaW50XG4gICAgICB0cmFuc2FjdGlvbi5yb2xsYmFjayhjaGVja3BvaW50
KTtcbiAgICAgIHRoaXMuX2luc3RhbmNlLnVuc3RhYmxlX2hhbmRsZUVycm9yKGUpO1xuICAgICAg
aWYgKHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlKSB7XG4gICAgICAgIHRoaXMuX2luc3RhbmNlLnN0
YXRlID0gdGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZSh0aGlzLl9pbnN0YW5jZS5wcm9wcywgdGhp
cy5faW5zdGFuY2UuY29udGV4dCk7XG4gICAgICB9XG4gICAgICBjaGVja3BvaW50ID0gdHJhbnNh
Y3Rpb24uY2hlY2twb2ludCgpO1xuXG4gICAgICB0aGlzLl9yZW5kZXJlZENvbXBvbmVudC51bm1v
dW50Q29tcG9uZW50KHRydWUpO1xuICAgICAgdHJhbnNhY3Rpb24ucm9sbGJhY2soY2hlY2twb2lu
dCk7XG5cbiAgICAgIC8vIFRyeSBhZ2FpbiAtIHdlJ3ZlIGluZm9ybWVkIHRoZSBjb21wb25lbnQg
YWJvdXQgdGhlIGVycm9yLCBzbyB0aGV5IGNhbiByZW5kZXIgYW4gZXJyb3IgbWVzc2FnZSB0aGlz
IHRpbWUuXG4gICAgICAvLyBJZiB0aGlzIHRocm93cyBhZ2FpbiwgdGhlIGVycm9yIHdpbGwgYnVi
YmxlIHVwIChhbmQgY2FuIGJlIGNhdWdodCBieSBhIGhpZ2hlciBlcnJvciBib3VuZGFyeSkuXG4g
ICAgICBtYXJrdXAgPSB0aGlzLnBlcmZvcm1Jbml0aWFsTW91bnQocmVuZGVyZWRFbGVtZW50LCBo
b3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAg
IH1cbiAgICByZXR1cm4gbWFya3VwO1xuICB9LFxuXG4gIHBlcmZvcm1Jbml0aWFsTW91bnQ6IGZ1
bmN0aW9uIChyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCB0
cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7XG5c
biAgICB2YXIgZGVidWdJRCA9IDA7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHtcbiAgICAgIGRlYnVnSUQgPSB0aGlzLl9kZWJ1Z0lEO1xuICAgIH1cblxu
ICAgIGlmIChpbnN0LmNvbXBvbmVudFdpbGxNb3VudCkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgbWVhc3VyZUxpZmVDeWNsZVBl
cmYoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBpbnN0LmNvbXBvbmVudFdpbGxNb3Vu
dCgpO1xuICAgICAgICB9LCBkZWJ1Z0lELCAnY29tcG9uZW50V2lsbE1vdW50Jyk7XG4gICAgICB9
IGVsc2Uge1xuICAgICAgICBpbnN0LmNvbXBvbmVudFdpbGxNb3VudCgpO1xuICAgICAgfVxuICAg
ICAgLy8gV2hlbiBtb3VudGluZywgY2FsbHMgdG8gYHNldFN0YXRlYCBieSBgY29tcG9uZW50V2ls
bE1vdW50YCB3aWxsIHNldFxuICAgICAgLy8gYHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlYCB3aXRo
b3V0IHRyaWdnZXJpbmcgYSByZS1yZW5kZXIuXG4gICAgICBpZiAodGhpcy5fcGVuZGluZ1N0YXRl
UXVldWUpIHtcbiAgICAgICAgaW5zdC5zdGF0ZSA9IHRoaXMuX3Byb2Nlc3NQZW5kaW5nU3RhdGUo
aW5zdC5wcm9wcywgaW5zdC5jb250ZXh0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBJZiBu
b3QgYSBzdGF0ZWxlc3MgY29tcG9uZW50LCB3ZSBub3cgcmVuZGVyXG4gICAgaWYgKHJlbmRlcmVk
RWxlbWVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZW5kZXJlZEVsZW1lbnQgPSB0aGlzLl9y
ZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQoKTtcbiAgICB9XG5cbiAgICB2YXIgbm9kZVR5cGUgPSBS
ZWFjdE5vZGVUeXBlcy5nZXRUeXBlKHJlbmRlcmVkRWxlbWVudCk7XG4gICAgdGhpcy5fcmVuZGVy
ZWROb2RlVHlwZSA9IG5vZGVUeXBlO1xuICAgIHZhciBjaGlsZCA9IHRoaXMuX2luc3RhbnRpYXRl
UmVhY3RDb21wb25lbnQocmVuZGVyZWRFbGVtZW50LCBub2RlVHlwZSAhPT0gUmVhY3ROb2RlVHlw
ZXMuRU1QVFkgLyogc2hvdWxkSGF2ZURlYnVnSUQgKi9cbiAgICApO1xuICAgIHRoaXMuX3JlbmRl
cmVkQ29tcG9uZW50ID0gY2hpbGQ7XG5cbiAgICB2YXIgbWFya3VwID0gUmVhY3RSZWNvbmNpbGVy
Lm1vdW50Q29tcG9uZW50KGNoaWxkLCB0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRh
aW5lckluZm8sIHRoaXMuX3Byb2Nlc3NDaGlsZENvbnRleHQoY29udGV4dCksIGRlYnVnSUQpO1xu
XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAg
IGlmIChkZWJ1Z0lEICE9PSAwKSB7XG4gICAgICAgIHZhciBjaGlsZERlYnVnSURzID0gY2hpbGQu
X2RlYnVnSUQgIT09IDAgPyBbY2hpbGQuX2RlYnVnSURdIDogW107XG4gICAgICAgIFJlYWN0SW5z
dHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblNldENoaWxkcmVuKGRlYnVnSUQsIGNoaWxkRGVidWdJ
RHMpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBtYXJrdXA7XG4gIH0sXG5cbiAgZ2V0
SG9zdE5vZGU6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gUmVhY3RSZWNvbmNpbGVyLmdldEhv
c3ROb2RlKHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50KTtcbiAgfSxcblxuICAvKipcbiAgICogUmVs
ZWFzZXMgYW55IHJlc291cmNlcyBhbGxvY2F0ZWQgYnkgYG1vdW50Q29tcG9uZW50YC5cbiAgICpc
biAgICogQGZpbmFsXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgdW5tb3VudENvbXBvbmVudDog
ZnVuY3Rpb24gKHNhZmVseSkge1xuICAgIGlmICghdGhpcy5fcmVuZGVyZWRDb21wb25lbnQpIHtc
biAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlO1xu
XG4gICAgaWYgKGluc3QuY29tcG9uZW50V2lsbFVubW91bnQgJiYgIWluc3QuX2NhbGxlZENvbXBv
bmVudFdpbGxVbm1vdW50KSB7XG4gICAgICBpbnN0Ll9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3Vu
dCA9IHRydWU7XG5cbiAgICAgIGlmIChzYWZlbHkpIHtcbiAgICAgICAgdmFyIG5hbWUgPSB0aGlz
LmdldE5hbWUoKSArICcuY29tcG9uZW50V2lsbFVubW91bnQoKSc7XG4gICAgICAgIFJlYWN0RXJy
b3JVdGlscy5pbnZva2VHdWFyZGVkQ2FsbGJhY2sobmFtZSwgaW5zdC5jb21wb25lbnRXaWxsVW5t
b3VudC5iaW5kKGluc3QpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgbWVhc3VyZUxpZmVDeWNs
ZVBlcmYoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIGluc3QuY29tcG9uZW50V2ls
bFVubW91bnQoKTtcbiAgICAgICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAnY29tcG9uZW50V2lsbFVu
bW91bnQnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpbnN0LmNvbXBvbmVudFdpbGxV
bm1vdW50KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcmVu
ZGVyZWRDb21wb25lbnQpIHtcbiAgICAgIFJlYWN0UmVjb25jaWxlci51bm1vdW50Q29tcG9uZW50
KHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50LCBzYWZlbHkpO1xuICAgICAgdGhpcy5fcmVuZGVyZWRO
b2RlVHlwZSA9IG51bGw7XG4gICAgICB0aGlzLl9yZW5kZXJlZENvbXBvbmVudCA9IG51bGw7XG4g
ICAgICB0aGlzLl9pbnN0YW5jZSA9IG51bGw7XG4gICAgfVxuXG4gICAgLy8gUmVzZXQgcGVuZGlu
ZyBmaWVsZHNcbiAgICAvLyBFdmVuIGlmIHRoaXMgY29tcG9uZW50IGlzIHNjaGVkdWxlZCBmb3Ig
YW5vdGhlciB1cGRhdGUgaW4gUmVhY3RVcGRhdGVzLFxuICAgIC8vIGl0IHdvdWxkIHN0aWxsIGJl
IGlnbm9yZWQgYmVjYXVzZSB0aGVzZSBmaWVsZHMgYXJlIHJlc2V0LlxuICAgIHRoaXMuX3BlbmRp
bmdTdGF0ZVF1ZXVlID0gbnVsbDtcbiAgICB0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlID0gZmFs
c2U7XG4gICAgdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlID0gZmFsc2U7XG4gICAgdGhpcy5fcGVu
ZGluZ0NhbGxiYWNrcyA9IG51bGw7XG4gICAgdGhpcy5fcGVuZGluZ0VsZW1lbnQgPSBudWxsO1xu
XG4gICAgLy8gVGhlc2UgZmllbGRzIGRvIG5vdCByZWFsbHkgbmVlZCB0byBiZSByZXNldCBzaW5j
ZSB0aGlzIG9iamVjdCBpcyBub1xuICAgIC8vIGxvbmdlciBhY2Nlc3NpYmxlLlxuICAgIHRoaXMu
X2NvbnRleHQgPSBudWxsO1xuICAgIHRoaXMuX3Jvb3ROb2RlSUQgPSAwO1xuICAgIHRoaXMuX3Rv
cExldmVsV3JhcHBlciA9IG51bGw7XG5cbiAgICAvLyBEZWxldGUgdGhlIHJlZmVyZW5jZSBmcm9t
IHRoZSBpbnN0YW5jZSB0byB0aGlzIGludGVybmFsIHJlcHJlc2VudGF0aW9uXG4gICAgLy8gd2hp
Y2ggYWxsb3cgdGhlIGludGVybmFscyB0byBiZSBwcm9wZXJseSBjbGVhbmVkIHVwIGV2ZW4gaWYg
dGhlIHVzZXJcbiAgICAvLyBsZWFrcyBhIHJlZmVyZW5jZSB0byB0aGUgcHVibGljIGluc3RhbmNl
LlxuICAgIFJlYWN0SW5zdGFuY2VNYXAucmVtb3ZlKGluc3QpO1xuXG4gICAgLy8gU29tZSBleGlz
dGluZyBjb21wb25lbnRzIHJlbHkgb24gaW5zdC5wcm9wcyBldmVuIGFmdGVyIHRoZXkndmUgYmVl
blxuICAgIC8vIGRlc3Ryb3llZCAoaW4gZXZlbnQgaGFuZGxlcnMpLlxuICAgIC8vIFRPRE86IGlu
c3QucHJvcHMgPSBudWxsO1xuICAgIC8vIFRPRE86IGluc3Quc3RhdGUgPSBudWxsO1xuICAgIC8v
IFRPRE86IGluc3QuY29udGV4dCA9IG51bGw7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEZpbHRlcnMg
dGhlIGNvbnRleHQgb2JqZWN0IHRvIG9ubHkgY29udGFpbiBrZXlzIHNwZWNpZmllZCBpblxuICAg
KiBgY29udGV4dFR5cGVzYFxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29udGV4dFxuICAg
KiBAcmV0dXJuIHs/b2JqZWN0fVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX21hc2tDb250ZXh0
OiBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIHZhciBDb21wb25lbnQgPSB0aGlzLl9jdXJyZW50
RWxlbWVudC50eXBlO1xuICAgIHZhciBjb250ZXh0VHlwZXMgPSBDb21wb25lbnQuY29udGV4dFR5
cGVzO1xuICAgIGlmICghY29udGV4dFR5cGVzKSB7XG4gICAgICByZXR1cm4gZW1wdHlPYmplY3Q7
XG4gICAgfVxuICAgIHZhciBtYXNrZWRDb250ZXh0ID0ge307XG4gICAgZm9yICh2YXIgY29udGV4
dE5hbWUgaW4gY29udGV4dFR5cGVzKSB7XG4gICAgICBtYXNrZWRDb250ZXh0W2NvbnRleHROYW1l
XSA9IGNvbnRleHRbY29udGV4dE5hbWVdO1xuICAgIH1cbiAgICByZXR1cm4gbWFza2VkQ29udGV4
dDtcbiAgfSxcblxuICAvKipcbiAgICogRmlsdGVycyB0aGUgY29udGV4dCBvYmplY3QgdG8gb25s
eSBjb250YWluIGtleXMgc3BlY2lmaWVkIGluXG4gICAqIGBjb250ZXh0VHlwZXNgLCBhbmQgYXNz
ZXJ0cyB0aGF0IHRoZXkgYXJlIHZhbGlkLlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29u
dGV4dFxuICAgKiBAcmV0dXJuIHs/b2JqZWN0fVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3By
b2Nlc3NDb250ZXh0OiBmdW5jdGlvbiAoY29udGV4dCkge1xuICAgIHZhciBtYXNrZWRDb250ZXh0
ID0gdGhpcy5fbWFza0NvbnRleHQoY29udGV4dCk7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBDb21wb25lbnQgPSB0aGlzLl9jdXJy
ZW50RWxlbWVudC50eXBlO1xuICAgICAgaWYgKENvbXBvbmVudC5jb250ZXh0VHlwZXMpIHtcbiAg
ICAgICAgdGhpcy5fY2hlY2tDb250ZXh0VHlwZXMoQ29tcG9uZW50LmNvbnRleHRUeXBlcywgbWFz
a2VkQ29udGV4dCwgJ2NvbnRleHQnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1hc2tl
ZENvbnRleHQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjdXJyZW50Q29u
dGV4dFxuICAgKiBAcmV0dXJuIHtvYmplY3R9XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBfcHJv
Y2Vzc0NoaWxkQ29udGV4dDogZnVuY3Rpb24gKGN1cnJlbnRDb250ZXh0KSB7XG4gICAgdmFyIENv
bXBvbmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG4gICAgdmFyIGluc3QgPSB0aGlz
Ll9pbnN0YW5jZTtcbiAgICB2YXIgY2hpbGRDb250ZXh0O1xuXG4gICAgaWYgKGluc3QuZ2V0Q2hp
bGRDb250ZXh0KSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJykge1xuICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWdpblBy
b2Nlc3NpbmdDaGlsZENvbnRleHQoKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjaGlsZENv
bnRleHQgPSBpbnN0LmdldENoaWxkQ29udGV4dCgpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAg
ICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkVuZFByb2Nlc3NpbmdDaGls
ZENvbnRleHQoKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2hpbGRDb250
ZXh0ID0gaW5zdC5nZXRDaGlsZENvbnRleHQoKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAo
Y2hpbGRDb250ZXh0KSB7XG4gICAgICAhKHR5cGVvZiBDb21wb25lbnQuY2hpbGRDb250ZXh0VHlw
ZXMgPT09ICdvYmplY3QnKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
PyBpbnZhcmlhbnQoZmFsc2UsICclcy5nZXRDaGlsZENvbnRleHQoKTogY2hpbGRDb250ZXh0VHlw
ZXMgbXVzdCBiZSBkZWZpbmVkIGluIG9yZGVyIHRvIHVzZSBnZXRDaGlsZENvbnRleHQoKS4nLCB0
aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IF9wcm9kSW52YXJp
YW50KCcxMDcnLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6
IHZvaWQgMDtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
KSB7XG4gICAgICAgIHRoaXMuX2NoZWNrQ29udGV4dFR5cGVzKENvbXBvbmVudC5jaGlsZENvbnRl
eHRUeXBlcywgY2hpbGRDb250ZXh0LCAnY2hpbGQgY29udGV4dCcpO1xuICAgICAgfVxuICAgICAg
Zm9yICh2YXIgbmFtZSBpbiBjaGlsZENvbnRleHQpIHtcbiAgICAgICAgIShuYW1lIGluIENvbXBv
bmVudC5jaGlsZENvbnRleHRUeXBlcykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnJXMuZ2V0Q2hpbGRDb250ZXh0KCk6IGtleSBcIiVz
XCIgaXMgbm90IGRlZmluZWQgaW4gY2hpbGRDb250ZXh0VHlwZXMuJywgdGhpcy5nZXROYW1lKCkg
fHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JywgbmFtZSkgOiBfcHJvZEludmFyaWFudCgnMTA4
JywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JywgbmFtZSkgOiB2
b2lkIDA7XG4gICAgICB9XG4gICAgICByZXR1cm4gX2Fzc2lnbih7fSwgY3VycmVudENvbnRleHQs
IGNoaWxkQ29udGV4dCk7XG4gICAgfVxuICAgIHJldHVybiBjdXJyZW50Q29udGV4dDtcbiAgfSxc
blxuICAvKipcbiAgICogQXNzZXJ0IHRoYXQgdGhlIGNvbnRleHQgdHlwZXMgYXJlIHZhbGlkXG4g
ICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSB0eXBlU3BlY3MgTWFwIG9mIGNvbnRleHQgZmllbGQg
dG8gYSBSZWFjdFByb3BUeXBlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSB2YWx1ZXMgUnVudGltZSB2
YWx1ZXMgdGhhdCBuZWVkIHRvIGJlIHR5cGUtY2hlY2tlZFxuICAgKiBAcGFyYW0ge3N0cmluZ30g
bG9jYXRpb24gZS5nLiBcInByb3BcIiwgXCJjb250ZXh0XCIsIFwiY2hpbGQgY29udGV4dFwiXG4g
ICAqIEBwcml2YXRlXG4gICAqL1xuICBfY2hlY2tDb250ZXh0VHlwZXM6IGZ1bmN0aW9uICh0eXBl
U3BlY3MsIHZhbHVlcywgbG9jYXRpb24pIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgY2hlY2tSZWFjdFR5cGVTcGVjKHR5cGVTcGVjcywg
dmFsdWVzLCBsb2NhdGlvbiwgdGhpcy5nZXROYW1lKCksIG51bGwsIHRoaXMuX2RlYnVnSUQpO1xu
ICAgIH1cbiAgfSxcblxuICByZWNlaXZlQ29tcG9uZW50OiBmdW5jdGlvbiAobmV4dEVsZW1lbnQs
IHRyYW5zYWN0aW9uLCBuZXh0Q29udGV4dCkge1xuICAgIHZhciBwcmV2RWxlbWVudCA9IHRoaXMu
X2N1cnJlbnRFbGVtZW50O1xuICAgIHZhciBwcmV2Q29udGV4dCA9IHRoaXMuX2NvbnRleHQ7XG5c
biAgICB0aGlzLl9wZW5kaW5nRWxlbWVudCA9IG51bGw7XG5cbiAgICB0aGlzLnVwZGF0ZUNvbXBv
bmVudCh0cmFuc2FjdGlvbiwgcHJldkVsZW1lbnQsIG5leHRFbGVtZW50LCBwcmV2Q29udGV4dCwg
bmV4dENvbnRleHQpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBJZiBhbnkgb2YgYF9wZW5kaW5nRWxl
bWVudGAsIGBfcGVuZGluZ1N0YXRlUXVldWVgLCBvciBgX3BlbmRpbmdGb3JjZVVwZGF0ZWBcbiAg
ICogaXMgc2V0LCB1cGRhdGUgdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFj
dFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAaW50ZXJuYWxcbiAgICov
XG4gIHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeTogZnVuY3Rpb24gKHRyYW5zYWN0aW9uKSB7XG4g
ICAgaWYgKHRoaXMuX3BlbmRpbmdFbGVtZW50ICE9IG51bGwpIHtcbiAgICAgIFJlYWN0UmVjb25j
aWxlci5yZWNlaXZlQ29tcG9uZW50KHRoaXMsIHRoaXMuX3BlbmRpbmdFbGVtZW50LCB0cmFuc2Fj
dGlvbiwgdGhpcy5fY29udGV4dCk7XG4gICAgfSBlbHNlIGlmICh0aGlzLl9wZW5kaW5nU3RhdGVR
dWV1ZSAhPT0gbnVsbCB8fCB0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUpIHtcbiAgICAgIHRoaXMu
dXBkYXRlQ29tcG9uZW50KHRyYW5zYWN0aW9uLCB0aGlzLl9jdXJyZW50RWxlbWVudCwgdGhpcy5f
Y3VycmVudEVsZW1lbnQsIHRoaXMuX2NvbnRleHQsIHRoaXMuX2NvbnRleHQpO1xuICAgIH0gZWxz
ZSB7XG4gICAgICB0aGlzLl91cGRhdGVCYXRjaE51bWJlciA9IG51bGw7XG4gICAgfVxuICB9LFxu
XG4gIC8qKlxuICAgKiBQZXJmb3JtIGFuIHVwZGF0ZSB0byBhIG1vdW50ZWQgY29tcG9uZW50LiBU
aGUgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyBhbmRcbiAgICogc2hvdWxkQ29tcG9uZW50VXBk
YXRlIG1ldGhvZHMgYXJlIGNhbGxlZCwgdGhlbiAoYXNzdW1pbmcgdGhlIHVwZGF0ZSBpc24ndFxu
ICAgKiBza2lwcGVkKSB0aGUgcmVtYWluaW5nIHVwZGF0ZSBsaWZlY3ljbGUgbWV0aG9kcyBhcmUg
Y2FsbGVkIGFuZCB0aGUgRE9NXG4gICAqIHJlcHJlc2VudGF0aW9uIGlzIHVwZGF0ZWQuXG4gICAq
XG4gICAqIEJ5IGRlZmF1bHQsIHRoaXMgaW1wbGVtZW50cyBSZWFjdCdzIHJlbmRlcmluZyBhbmQg
cmVjb25jaWxpYXRpb24gYWxnb3JpdGhtLlxuICAgKiBTb3BoaXN0aWNhdGVkIGNsaWVudHMgbWF5
IHdpc2ggdG8gb3ZlcnJpZGUgdGhpcy5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2ls
ZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gcHJl
dlBhcmVudEVsZW1lbnRcbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRQYXJlbnRFbGVt
ZW50XG4gICAqIEBpbnRlcm5hbFxuICAgKiBAb3ZlcnJpZGFibGVcbiAgICovXG4gIHVwZGF0ZUNv
bXBvbmVudDogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBwcmV2UGFyZW50RWxlbWVudCwgbmV4dFBh
cmVudEVsZW1lbnQsIHByZXZVbm1hc2tlZENvbnRleHQsIG5leHRVbm1hc2tlZENvbnRleHQpIHtc
biAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlO1xuICAgICEoaW5zdCAhPSBudWxsKSA/IHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdB
dHRlbXB0ZWQgdG8gdXBkYXRlIGNvbXBvbmVudCBgJXNgIHRoYXQgaGFzIGFscmVhZHkgYmVlbiB1
bm1vdW50ZWQgKG9yIGZhaWxlZCB0byBtb3VudCkuJywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0
Q29tcG9zaXRlQ29tcG9uZW50JykgOiBfcHJvZEludmFyaWFudCgnMTM2JywgdGhpcy5nZXROYW1l
KCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiB2b2lkIDA7XG5cbiAgICB2YXIgd2ls
bFJlY2VpdmUgPSBmYWxzZTtcbiAgICB2YXIgbmV4dENvbnRleHQ7XG5cbiAgICAvLyBEZXRlcm1p
bmUgaWYgdGhlIGNvbnRleHQgaGFzIGNoYW5nZWQgb3Igbm90XG4gICAgaWYgKHRoaXMuX2NvbnRl
eHQgPT09IG5leHRVbm1hc2tlZENvbnRleHQpIHtcbiAgICAgIG5leHRDb250ZXh0ID0gaW5zdC5j
b250ZXh0O1xuICAgIH0gZWxzZSB7XG4gICAgICBuZXh0Q29udGV4dCA9IHRoaXMuX3Byb2Nlc3ND
b250ZXh0KG5leHRVbm1hc2tlZENvbnRleHQpO1xuICAgICAgd2lsbFJlY2VpdmUgPSB0cnVlO1xu
ICAgIH1cblxuICAgIHZhciBwcmV2UHJvcHMgPSBwcmV2UGFyZW50RWxlbWVudC5wcm9wcztcbiAg
ICB2YXIgbmV4dFByb3BzID0gbmV4dFBhcmVudEVsZW1lbnQucHJvcHM7XG5cbiAgICAvLyBOb3Qg
YSBzaW1wbGUgc3RhdGUgdXBkYXRlIGJ1dCBhIHByb3BzIHVwZGF0ZVxuICAgIGlmIChwcmV2UGFy
ZW50RWxlbWVudCAhPT0gbmV4dFBhcmVudEVsZW1lbnQpIHtcbiAgICAgIHdpbGxSZWNlaXZlID0g
dHJ1ZTtcbiAgICB9XG5cbiAgICAvLyBBbiB1cGRhdGUgaGVyZSB3aWxsIHNjaGVkdWxlIGFuIHVw
ZGF0ZSBidXQgaW1tZWRpYXRlbHkgc2V0XG4gICAgLy8gX3BlbmRpbmdTdGF0ZVF1ZXVlIHdoaWNo
IHdpbGwgZW5zdXJlIHRoYXQgYW55IHN0YXRlIHVwZGF0ZXMgZ2V0c1xuICAgIC8vIGltbWVkaWF0
ZWx5IHJlY29uY2lsZWQgaW5zdGVhZCBvZiB3YWl0aW5nIGZvciB0aGUgbmV4dCBiYXRjaC5cbiAg
ICBpZiAod2lsbFJlY2VpdmUgJiYgaW5zdC5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKSB7XG4g
ICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAg
ICBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIGlu
c3QuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMsIG5leHRDb250ZXh0KTtcbiAg
ICAgICAgfSwgdGhpcy5fZGVidWdJRCwgJ2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMnKTtcbiAg
ICAgIH0gZWxzZSB7XG4gICAgICAgIGluc3QuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0
UHJvcHMsIG5leHRDb250ZXh0KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgbmV4dFN0YXRl
ID0gdGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZShuZXh0UHJvcHMsIG5leHRDb250ZXh0KTtcbiAg
ICB2YXIgc2hvdWxkVXBkYXRlID0gdHJ1ZTtcblxuICAgIGlmICghdGhpcy5fcGVuZGluZ0ZvcmNl
VXBkYXRlKSB7XG4gICAgICBpZiAoaW5zdC5zaG91bGRDb21wb25lbnRVcGRhdGUpIHtcbiAgICAg
ICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAg
ICBzaG91bGRVcGRhdGUgPSBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAoKSB7XG4gICAg
ICAgICAgICByZXR1cm4gaW5zdC5zaG91bGRDb21wb25lbnRVcGRhdGUobmV4dFByb3BzLCBuZXh0
U3RhdGUsIG5leHRDb250ZXh0KTtcbiAgICAgICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAnc2hvdWxk
Q29tcG9uZW50VXBkYXRlJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2hvdWxkVXBk
YXRlID0gaW5zdC5zaG91bGRDb21wb25lbnRVcGRhdGUobmV4dFByb3BzLCBuZXh0U3RhdGUsIG5l
eHRDb250ZXh0KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHRoaXMu
X2NvbXBvc2l0ZVR5cGUgPT09IENvbXBvc2l0ZVR5cGVzLlB1cmVDbGFzcykge1xuICAgICAgICAg
IHNob3VsZFVwZGF0ZSA9ICFzaGFsbG93RXF1YWwocHJldlByb3BzLCBuZXh0UHJvcHMpIHx8ICFz
aGFsbG93RXF1YWwoaW5zdC5zdGF0ZSwgbmV4dFN0YXRlKTtcbiAgICAgICAgfVxuICAgICAgfVxu
ICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhz
aG91bGRVcGRhdGUgIT09IHVuZGVmaW5lZCwgJyVzLnNob3VsZENvbXBvbmVudFVwZGF0ZSgpOiBS
ZXR1cm5lZCB1bmRlZmluZWQgaW5zdGVhZCBvZiBhICcgKyAnYm9vbGVhbiB2YWx1ZS4gTWFrZSBz
dXJlIHRvIHJldHVybiB0cnVlIG9yIGZhbHNlLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENv
bXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwO1xuICAgIH1cblxuICAgIHRoaXMuX3VwZGF0ZUJh
dGNoTnVtYmVyID0gbnVsbDtcbiAgICBpZiAoc2hvdWxkVXBkYXRlKSB7XG4gICAgICB0aGlzLl9w
ZW5kaW5nRm9yY2VVcGRhdGUgPSBmYWxzZTtcbiAgICAgIC8vIFdpbGwgc2V0IGB0aGlzLnByb3Bz
YCwgYHRoaXMuc3RhdGVgIGFuZCBgdGhpcy5jb250ZXh0YC5cbiAgICAgIHRoaXMuX3BlcmZvcm1D
b21wb25lbnRVcGRhdGUobmV4dFBhcmVudEVsZW1lbnQsIG5leHRQcm9wcywgbmV4dFN0YXRlLCBu
ZXh0Q29udGV4dCwgdHJhbnNhY3Rpb24sIG5leHRVbm1hc2tlZENvbnRleHQpO1xuICAgIH0gZWxz
ZSB7XG4gICAgICAvLyBJZiBpdCdzIGRldGVybWluZWQgdGhhdCBhIGNvbXBvbmVudCBzaG91bGQg
bm90IHVwZGF0ZSwgd2Ugc3RpbGwgd2FudFxuICAgICAgLy8gdG8gc2V0IHByb3BzIGFuZCBzdGF0
ZSBidXQgd2Ugc2hvcnRjdXQgdGhlIHJlc3Qgb2YgdGhlIHVwZGF0ZS5cbiAgICAgIHRoaXMuX2N1
cnJlbnRFbGVtZW50ID0gbmV4dFBhcmVudEVsZW1lbnQ7XG4gICAgICB0aGlzLl9jb250ZXh0ID0g
bmV4dFVubWFza2VkQ29udGV4dDtcbiAgICAgIGluc3QucHJvcHMgPSBuZXh0UHJvcHM7XG4gICAg
ICBpbnN0LnN0YXRlID0gbmV4dFN0YXRlO1xuICAgICAgaW5zdC5jb250ZXh0ID0gbmV4dENvbnRl
eHQ7XG4gICAgfVxuICB9LFxuXG4gIF9wcm9jZXNzUGVuZGluZ1N0YXRlOiBmdW5jdGlvbiAocHJv
cHMsIGNvbnRleHQpIHtcbiAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlO1xuICAgIHZhciBx
dWV1ZSA9IHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlO1xuICAgIHZhciByZXBsYWNlID0gdGhpcy5f
cGVuZGluZ1JlcGxhY2VTdGF0ZTtcbiAgICB0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlID0gZmFs
c2U7XG4gICAgdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUgPSBudWxsO1xuXG4gICAgaWYgKCFxdWV1
ZSkge1xuICAgICAgcmV0dXJuIGluc3Quc3RhdGU7XG4gICAgfVxuXG4gICAgaWYgKHJlcGxhY2Ug
JiYgcXVldWUubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4gcXVldWVbMF07XG4gICAgfVxu
XG4gICAgdmFyIG5leHRTdGF0ZSA9IF9hc3NpZ24oe30sIHJlcGxhY2UgPyBxdWV1ZVswXSA6IGlu
c3Quc3RhdGUpO1xuICAgIGZvciAodmFyIGkgPSByZXBsYWNlID8gMSA6IDA7IGkgPCBxdWV1ZS5s
ZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHBhcnRpYWwgPSBxdWV1ZVtpXTtcbiAgICAgIF9hc3Np
Z24obmV4dFN0YXRlLCB0eXBlb2YgcGFydGlhbCA9PT0gJ2Z1bmN0aW9uJyA/IHBhcnRpYWwuY2Fs
bChpbnN0LCBuZXh0U3RhdGUsIHByb3BzLCBjb250ZXh0KSA6IHBhcnRpYWwpO1xuICAgIH1cblxu
ICAgIHJldHVybiBuZXh0U3RhdGU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIE1lcmdlcyBuZXcgcHJv
cHMgYW5kIHN0YXRlLCBub3RpZmllcyBkZWxlZ2F0ZSBtZXRob2RzIG9mIHVwZGF0ZSBhbmRcbiAg
ICogcGVyZm9ybXMgdXBkYXRlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4
dEVsZW1lbnQgTmV4dCBlbGVtZW50XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHMgTmV4
dCBwdWJsaWMgb2JqZWN0IHRvIHNldCBhcyBwcm9wZXJ0aWVzLlxuICAgKiBAcGFyYW0gez9vYmpl
Y3R9IG5leHRTdGF0ZSBOZXh0IG9iamVjdCB0byBzZXQgYXMgc3RhdGUuXG4gICAqIEBwYXJhbSB7
P29iamVjdH0gbmV4dENvbnRleHQgTmV4dCBwdWJsaWMgb2JqZWN0IHRvIHNldCBhcyBjb250ZXh0
LlxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4g
ICAqIEBwYXJhbSB7P29iamVjdH0gdW5tYXNrZWRDb250ZXh0XG4gICAqIEBwcml2YXRlXG4gICAq
L1xuICBfcGVyZm9ybUNvbXBvbmVudFVwZGF0ZTogZnVuY3Rpb24gKG5leHRFbGVtZW50LCBuZXh0
UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQsIHRyYW5zYWN0aW9uLCB1bm1hc2tlZENvbnRl
eHQpIHtcbiAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgIHZhciBpbnN0ID0gdGhpcy5faW5z
dGFuY2U7XG5cbiAgICB2YXIgaGFzQ29tcG9uZW50RGlkVXBkYXRlID0gQm9vbGVhbihpbnN0LmNv
bXBvbmVudERpZFVwZGF0ZSk7XG4gICAgdmFyIHByZXZQcm9wcztcbiAgICB2YXIgcHJldlN0YXRl
O1xuICAgIHZhciBwcmV2Q29udGV4dDtcbiAgICBpZiAoaGFzQ29tcG9uZW50RGlkVXBkYXRlKSB7
XG4gICAgICBwcmV2UHJvcHMgPSBpbnN0LnByb3BzO1xuICAgICAgcHJldlN0YXRlID0gaW5zdC5z
dGF0ZTtcbiAgICAgIHByZXZDb250ZXh0ID0gaW5zdC5jb250ZXh0O1xuICAgIH1cblxuICAgIGlm
IChpbnN0LmNvbXBvbmVudFdpbGxVcGRhdGUpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1
bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gaW5zdC5jb21wb25lbnRXaWxsVXBkYXRlKG5l
eHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCk7XG4gICAgICAgIH0sIHRoaXMuX2RlYnVn
SUQsICdjb21wb25lbnRXaWxsVXBkYXRlJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbnN0
LmNvbXBvbmVudFdpbGxVcGRhdGUobmV4dFByb3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0KTtc
biAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IG5leHRFbGVtZW50
O1xuICAgIHRoaXMuX2NvbnRleHQgPSB1bm1hc2tlZENvbnRleHQ7XG4gICAgaW5zdC5wcm9wcyA9
IG5leHRQcm9wcztcbiAgICBpbnN0LnN0YXRlID0gbmV4dFN0YXRlO1xuICAgIGluc3QuY29udGV4
dCA9IG5leHRDb250ZXh0O1xuXG4gICAgdGhpcy5fdXBkYXRlUmVuZGVyZWRDb21wb25lbnQodHJh
bnNhY3Rpb24sIHVubWFza2VkQ29udGV4dCk7XG5cbiAgICBpZiAoaGFzQ29tcG9uZW50RGlkVXBk
YXRlKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykg
e1xuICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGZ1bmN0
aW9uICgpIHtcbiAgICAgICAgICBtZWFzdXJlTGlmZUN5Y2xlUGVyZihpbnN0LmNvbXBvbmVudERp
ZFVwZGF0ZS5iaW5kKGluc3QsIHByZXZQcm9wcywgcHJldlN0YXRlLCBwcmV2Q29udGV4dCksIF90
aGlzMi5fZGVidWdJRCwgJ2NvbXBvbmVudERpZFVwZGF0ZScpO1xuICAgICAgICB9KTtcbiAgICAg
IH0gZWxzZSB7XG4gICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVl
dWUoaW5zdC5jb21wb25lbnREaWRVcGRhdGUuYmluZChpbnN0LCBwcmV2UHJvcHMsIHByZXZTdGF0
ZSwgcHJldkNvbnRleHQpLCBpbnN0KTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4g
ICAqIENhbGwgdGhlIGNvbXBvbmVudCdzIGByZW5kZXJgIG1ldGhvZCBhbmQgdXBkYXRlIHRoZSBE
T00gYWNjb3JkaW5nbHkuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2Fj
dGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQGludGVybmFsXG4gICAqL1xuICBfdXBkYXRlUmVuZGVy
ZWRDb21wb25lbnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgIHZhciBw
cmV2Q29tcG9uZW50SW5zdGFuY2UgPSB0aGlzLl9yZW5kZXJlZENvbXBvbmVudDtcbiAgICB2YXIg
cHJldlJlbmRlcmVkRWxlbWVudCA9IHByZXZDb21wb25lbnRJbnN0YW5jZS5fY3VycmVudEVsZW1l
bnQ7XG4gICAgdmFyIG5leHRSZW5kZXJlZEVsZW1lbnQgPSB0aGlzLl9yZW5kZXJWYWxpZGF0ZWRD
b21wb25lbnQoKTtcblxuICAgIHZhciBkZWJ1Z0lEID0gMDtcbiAgICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgZGVidWdJRCA9IHRoaXMuX2RlYnVn
SUQ7XG4gICAgfVxuXG4gICAgaWYgKHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50KHByZXZSZW5k
ZXJlZEVsZW1lbnQsIG5leHRSZW5kZXJlZEVsZW1lbnQpKSB7XG4gICAgICBSZWFjdFJlY29uY2ls
ZXIucmVjZWl2ZUNvbXBvbmVudChwcmV2Q29tcG9uZW50SW5zdGFuY2UsIG5leHRSZW5kZXJlZEVs
ZW1lbnQsIHRyYW5zYWN0aW9uLCB0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KGNvbnRleHQpKTtc
biAgICB9IGVsc2Uge1xuICAgICAgdmFyIG9sZEhvc3ROb2RlID0gUmVhY3RSZWNvbmNpbGVyLmdl
dEhvc3ROb2RlKHByZXZDb21wb25lbnRJbnN0YW5jZSk7XG4gICAgICBSZWFjdFJlY29uY2lsZXIu
dW5tb3VudENvbXBvbmVudChwcmV2Q29tcG9uZW50SW5zdGFuY2UsIGZhbHNlKTtcblxuICAgICAg
dmFyIG5vZGVUeXBlID0gUmVhY3ROb2RlVHlwZXMuZ2V0VHlwZShuZXh0UmVuZGVyZWRFbGVtZW50
KTtcbiAgICAgIHRoaXMuX3JlbmRlcmVkTm9kZVR5cGUgPSBub2RlVHlwZTtcbiAgICAgIHZhciBj
aGlsZCA9IHRoaXMuX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQobmV4dFJlbmRlcmVkRWxlbWVu
dCwgbm9kZVR5cGUgIT09IFJlYWN0Tm9kZVR5cGVzLkVNUFRZIC8qIHNob3VsZEhhdmVEZWJ1Z0lE
ICovXG4gICAgICApO1xuICAgICAgdGhpcy5fcmVuZGVyZWRDb21wb25lbnQgPSBjaGlsZDtcblxu
ICAgICAgdmFyIG5leHRNYXJrdXAgPSBSZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQoY2hp
bGQsIHRyYW5zYWN0aW9uLCB0aGlzLl9ob3N0UGFyZW50LCB0aGlzLl9ob3N0Q29udGFpbmVySW5m
bywgdGhpcy5fcHJvY2Vzc0NoaWxkQ29udGV4dChjb250ZXh0KSwgZGVidWdJRCk7XG5cbiAgICAg
IGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGlm
IChkZWJ1Z0lEICE9PSAwKSB7XG4gICAgICAgICAgdmFyIGNoaWxkRGVidWdJRHMgPSBjaGlsZC5f
ZGVidWdJRCAhPT0gMCA/IFtjaGlsZC5fZGVidWdJRF0gOiBbXTtcbiAgICAgICAgICBSZWFjdElu
c3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25TZXRDaGlsZHJlbihkZWJ1Z0lELCBjaGlsZERlYnVn
SURzKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLl9yZXBsYWNlTm9kZVdpdGhN
YXJrdXAob2xkSG9zdE5vZGUsIG5leHRNYXJrdXAsIHByZXZDb21wb25lbnRJbnN0YW5jZSk7XG4g
ICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBPdmVycmlkZGVuIGluIHNoYWxsb3cgcmVuZGVyaW5n
LlxuICAgKlxuICAgKiBAcHJvdGVjdGVkXG4gICAqL1xuICBfcmVwbGFjZU5vZGVXaXRoTWFya3Vw
OiBmdW5jdGlvbiAob2xkSG9zdE5vZGUsIG5leHRNYXJrdXAsIHByZXZJbnN0YW5jZSkge1xuICAg
IFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQucmVwbGFjZU5vZGVXaXRoTWFya3VwKG9sZEhvc3RO
b2RlLCBuZXh0TWFya3VwLCBwcmV2SW5zdGFuY2UpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBAcHJv
dGVjdGVkXG4gICAqL1xuICBfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50V2l0aG91dE93bmVyT3JD
b250ZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTtcbiAg
ICB2YXIgcmVuZGVyZWRFbGVtZW50O1xuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHJlbmRlcmVkRWxlbWVudCA9IG1lYXN1cmVMaWZlQ3lj
bGVQZXJmKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGluc3QucmVuZGVyKCk7XG4gICAg
ICB9LCB0aGlzLl9kZWJ1Z0lELCAncmVuZGVyJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbmRl
cmVkRWxlbWVudCA9IGluc3QucmVuZGVyKCk7XG4gICAgfVxuXG4gICAgaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIC8vIFdlIGFsbG93IGF1dG8tbW9j
a3MgdG8gcHJvY2VlZCBhcyBpZiB0aGV5J3JlIHJldHVybmluZyBudWxsLlxuICAgICAgaWYgKHJl
bmRlcmVkRWxlbWVudCA9PT0gdW5kZWZpbmVkICYmIGluc3QucmVuZGVyLl9pc01vY2tGdW5jdGlv
bikge1xuICAgICAgICAvLyBUaGlzIGlzIHByb2JhYmx5IGJhZCBwcmFjdGljZS4gQ29uc2lkZXIg
d2FybmluZyBoZXJlIGFuZFxuICAgICAgICAvLyBkZXByZWNhdGluZyB0aGlzIGNvbnZlbmllbmNl
LlxuICAgICAgICByZW5kZXJlZEVsZW1lbnQgPSBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAg
IHJldHVybiByZW5kZXJlZEVsZW1lbnQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwcml2YXRlXG4g
ICAqL1xuICBfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50OiBmdW5jdGlvbiAoKSB7XG4gICAgdmFy
IHJlbmRlcmVkRWxlbWVudDtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyB8fCB0aGlzLl9jb21wb3NpdGVUeXBlICE9PSBDb21wb3NpdGVUeXBlcy5TdGF0ZWxl
c3NGdW5jdGlvbmFsKSB7XG4gICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gdGhpcztc
biAgICAgIHRyeSB7XG4gICAgICAgIHJlbmRlcmVkRWxlbWVudCA9IHRoaXMuX3JlbmRlclZhbGlk
YXRlZENvbXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4dCgpO1xuICAgICAgfSBmaW5hbGx5IHtc
biAgICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IG51bGw7XG4gICAgICB9XG4gICAg
fSBlbHNlIHtcbiAgICAgIHJlbmRlcmVkRWxlbWVudCA9IHRoaXMuX3JlbmRlclZhbGlkYXRlZENv
bXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4dCgpO1xuICAgIH1cbiAgICAhKFxuICAgIC8vIFRP
RE86IEFuIGBpc1ZhbGlkTm9kZWAgZnVuY3Rpb24gd291bGQgcHJvYmFibHkgYmUgbW9yZSBhcHBy
b3ByaWF0ZVxuICAgIHJlbmRlcmVkRWxlbWVudCA9PT0gbnVsbCB8fCByZW5kZXJlZEVsZW1lbnQg
PT09IGZhbHNlIHx8IFJlYWN0LmlzVmFsaWRFbGVtZW50KHJlbmRlcmVkRWxlbWVudCkpID8gcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVz
LnJlbmRlcigpOiBBIHZhbGlkIFJlYWN0IGVsZW1lbnQgKG9yIG51bGwpIG11c3QgYmUgcmV0dXJu
ZWQuIFlvdSBtYXkgaGF2ZSByZXR1cm5lZCB1bmRlZmluZWQsIGFuIGFycmF5IG9yIHNvbWUgb3Ro
ZXIgaW52YWxpZCBvYmplY3QuJywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29t
cG9uZW50JykgOiBfcHJvZEludmFyaWFudCgnMTA5JywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0
Q29tcG9zaXRlQ29tcG9uZW50JykgOiB2b2lkIDA7XG5cbiAgICByZXR1cm4gcmVuZGVyZWRFbGVt
ZW50O1xuICB9LFxuXG4gIC8qKlxuICAgKiBMYXppbHkgYWxsb2NhdGVzIHRoZSByZWZzIG9iamVj
dCBhbmQgc3RvcmVzIGBjb21wb25lbnRgIGFzIGByZWZgLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0
cmluZ30gcmVmIFJlZmVyZW5jZSBuYW1lLlxuICAgKiBAcGFyYW0ge2NvbXBvbmVudH0gY29tcG9u
ZW50IENvbXBvbmVudCB0byBzdG9yZSBhcyBgcmVmYC5cbiAgICogQGZpbmFsXG4gICAqIEBwcml2
YXRlXG4gICAqL1xuICBhdHRhY2hSZWY6IGZ1bmN0aW9uIChyZWYsIGNvbXBvbmVudCkge1xuICAg
IHZhciBpbnN0ID0gdGhpcy5nZXRQdWJsaWNJbnN0YW5jZSgpO1xuICAgICEoaW5zdCAhPSBudWxs
KSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICdTdGF0ZWxlc3MgZnVuY3Rpb24gY29tcG9uZW50cyBjYW5ub3QgaGF2ZSByZWZzLicpIDog
X3Byb2RJbnZhcmlhbnQoJzExMCcpIDogdm9pZCAwO1xuICAgIHZhciBwdWJsaWNDb21wb25lbnRJ
bnN0YW5jZSA9IGNvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpO1xuICAgIGlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgY29tcG9uZW50TmFt
ZSA9IGNvbXBvbmVudCAmJiBjb21wb25lbnQuZ2V0TmFtZSA/IGNvbXBvbmVudC5nZXROYW1lKCkg
OiAnYSBjb21wb25lbnQnO1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IHdhcm5pbmcocHVibGljQ29tcG9uZW50SW5zdGFuY2UgIT0gbnVsbCB8fCBjb21wb25l
bnQuX2NvbXBvc2l0ZVR5cGUgIT09IENvbXBvc2l0ZVR5cGVzLlN0YXRlbGVzc0Z1bmN0aW9uYWws
ICdTdGF0ZWxlc3MgZnVuY3Rpb24gY29tcG9uZW50cyBjYW5ub3QgYmUgZ2l2ZW4gcmVmcyAnICsg
JyhTZWUgcmVmIFwiJXNcIiBpbiAlcyBjcmVhdGVkIGJ5ICVzKS4gJyArICdBdHRlbXB0cyB0byBh
Y2Nlc3MgdGhpcyByZWYgd2lsbCBmYWlsLicsIHJlZiwgY29tcG9uZW50TmFtZSwgdGhpcy5nZXRO
YW1lKCkpIDogdm9pZCAwO1xuICAgIH1cbiAgICB2YXIgcmVmcyA9IGluc3QucmVmcyA9PT0gZW1w
dHlPYmplY3QgPyBpbnN0LnJlZnMgPSB7fSA6IGluc3QucmVmcztcbiAgICByZWZzW3JlZl0gPSBw
dWJsaWNDb21wb25lbnRJbnN0YW5jZTtcbiAgfSxcblxuICAvKipcbiAgICogRGV0YWNoZXMgYSBy
ZWZlcmVuY2UgbmFtZS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZiBOYW1lIHRvIGRl
cmVmZXJlbmNlLlxuICAgKiBAZmluYWxcbiAgICogQHByaXZhdGVcbiAgICovXG4gIGRldGFjaFJl
ZjogZnVuY3Rpb24gKHJlZikge1xuICAgIHZhciByZWZzID0gdGhpcy5nZXRQdWJsaWNJbnN0YW5j
ZSgpLnJlZnM7XG4gICAgZGVsZXRlIHJlZnNbcmVmXTtcbiAgfSxcblxuICAvKipcbiAgICogR2V0
IGEgdGV4dCBkZXNjcmlwdGlvbiBvZiB0aGUgY29tcG9uZW50IHRoYXQgY2FuIGJlIHVzZWQgdG8g
aWRlbnRpZnkgaXRcbiAgICogaW4gZXJyb3IgbWVzc2FnZXMuXG4gICAqIEByZXR1cm4ge3N0cmlu
Z30gVGhlIG5hbWUgb3IgbnVsbC5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBnZXROYW1lOiBm
dW5jdGlvbiAoKSB7XG4gICAgdmFyIHR5cGUgPSB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlO1xu
ICAgIHZhciBjb25zdHJ1Y3RvciA9IHRoaXMuX2luc3RhbmNlICYmIHRoaXMuX2luc3RhbmNlLmNv
bnN0cnVjdG9yO1xuICAgIHJldHVybiB0eXBlLmRpc3BsYXlOYW1lIHx8IGNvbnN0cnVjdG9yICYm
IGNvbnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8IHR5cGUubmFtZSB8fCBjb25zdHJ1Y3RvciAmJiBj
b25zdHJ1Y3Rvci5uYW1lIHx8IG51bGw7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCB0aGUgcHVi
bGljbHkgYWNjZXNzaWJsZSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGNvbXBvbmVudCAtIGkuZS4g
d2hhdFxuICAgKiBpcyBleHBvc2VkIGJ5IHJlZnMgYW5kIHJldHVybmVkIGJ5IHJlbmRlci4gQ2Fu
IGJlIG51bGwgZm9yIHN0YXRlbGVzc1xuICAgKiBjb21wb25lbnRzLlxuICAgKlxuICAgKiBAcmV0
dXJuIHtSZWFjdENvbXBvbmVudH0gdGhlIHB1YmxpYyBjb21wb25lbnQgaW5zdGFuY2UuXG4gICAq
IEBpbnRlcm5hbFxuICAgKi9cbiAgZ2V0UHVibGljSW5zdGFuY2U6IGZ1bmN0aW9uICgpIHtcbiAg
ICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlO1xuICAgIGlmICh0aGlzLl9jb21wb3NpdGVUeXBl
ID09PSBDb21wb3NpdGVUeXBlcy5TdGF0ZWxlc3NGdW5jdGlvbmFsKSB7XG4gICAgICByZXR1cm4g
bnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGluc3Q7XG4gIH0sXG5cbiAgLy8gU3R1YlxuICBfaW5z
dGFudGlhdGVSZWFjdENvbXBvbmVudDogbnVsbFxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFj
dENvbXBvc2l0ZUNvbXBvbmVudDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNL
IEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50Lmpz
XG4gKiogbW9kdWxlIGlkID0gMTM2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipc
biAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4g
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuLyogZ2xvYmFscyBfX1JFQUNUX0RFVlRPT0xT
X0dMT0JBTF9IT09LX18qL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdERPTUNvbXBvbmVu
dFRyZWUgPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpO1xudmFyIFJlYWN0RGVm
YXVsdEluamVjdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3REZWZhdWx0SW5qZWN0aW9uJyk7XG52YXIg
UmVhY3RNb3VudCA9IHJlcXVpcmUoJy4vUmVhY3RNb3VudCcpO1xudmFyIFJlYWN0UmVjb25jaWxl
ciA9IHJlcXVpcmUoJy4vUmVhY3RSZWNvbmNpbGVyJyk7XG52YXIgUmVhY3RVcGRhdGVzID0gcmVx
dWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTtcbnZhciBSZWFjdFZlcnNpb24gPSByZXF1aXJlKCcuL1Jl
YWN0VmVyc2lvbicpO1xuXG52YXIgZmluZERPTU5vZGUgPSByZXF1aXJlKCcuL2ZpbmRET01Ob2Rl
Jyk7XG52YXIgZ2V0SG9zdENvbXBvbmVudEZyb21Db21wb3NpdGUgPSByZXF1aXJlKCcuL2dldEhv
c3RDb21wb25lbnRGcm9tQ29tcG9zaXRlJyk7XG52YXIgcmVuZGVyU3VidHJlZUludG9Db250YWlu
ZXIgPSByZXF1aXJlKCcuL3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyJyk7XG52YXIgd2Fybmlu
ZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxuUmVhY3REZWZhdWx0SW5qZWN0aW9u
LmluamVjdCgpO1xuXG52YXIgUmVhY3RET00gPSB7XG4gIGZpbmRET01Ob2RlOiBmaW5kRE9NTm9k
ZSxcbiAgcmVuZGVyOiBSZWFjdE1vdW50LnJlbmRlcixcbiAgdW5tb3VudENvbXBvbmVudEF0Tm9k
ZTogUmVhY3RNb3VudC51bm1vdW50Q29tcG9uZW50QXROb2RlLFxuICB2ZXJzaW9uOiBSZWFjdFZl
cnNpb24sXG5cbiAgLyogZXNsaW50LWRpc2FibGUgY2FtZWxjYXNlICovXG4gIHVuc3RhYmxlX2Jh
dGNoZWRVcGRhdGVzOiBSZWFjdFVwZGF0ZXMuYmF0Y2hlZFVwZGF0ZXMsXG4gIHVuc3RhYmxlX3Jl
bmRlclN1YnRyZWVJbnRvQ29udGFpbmVyOiByZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lclxuICAv
KiBlc2xpbnQtZW5hYmxlIGNhbWVsY2FzZSAqL1xufTtcblxuLy8gSW5qZWN0IHRoZSBydW50aW1l
IGludG8gYSBkZXZ0b29scyBnbG9iYWwgaG9vayByZWdhcmRsZXNzIG9mIGJyb3dzZXIuXG4vLyBB
bGxvd3MgZm9yIGRlYnVnZ2luZyB3aGVuIHRoZSBob29rIGlzIGluamVjdGVkIG9uIHRoZSBwYWdl
LlxuaWYgKHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gIT09ICd1bmRlZmlu
ZWQnICYmIHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uaW5qZWN0ID09PSAn
ZnVuY3Rpb24nKSB7XG4gIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5pbmplY3Qoe1xu
ICAgIENvbXBvbmVudFRyZWU6IHtcbiAgICAgIGdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlOiBS
ZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUsXG4gICAgICBn
ZXROb2RlRnJvbUluc3RhbmNlOiBmdW5jdGlvbiAoaW5zdCkge1xuICAgICAgICAvLyBpbnN0IGlz
IGFuIGludGVybmFsIGluc3RhbmNlIChidXQgY291bGQgYmUgYSBjb21wb3NpdGUpXG4gICAgICAg
IGlmIChpbnN0Ll9yZW5kZXJlZENvbXBvbmVudCkge1xuICAgICAgICAgIGluc3QgPSBnZXRIb3N0
Q29tcG9uZW50RnJvbUNvbXBvc2l0ZShpbnN0KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5z
dCkge1xuICAgICAgICAgIHJldHVybiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21J
bnN0YW5jZShpbnN0KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtc
biAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgTW91bnQ6IFJlYWN0TW91bnQsXG4gICAg
UmVjb25jaWxlcjogUmVhY3RSZWNvbmNpbGVyXG4gIH0pO1xufVxuXG5pZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQg
PSByZXF1aXJlKCdmYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xuICBpZiAoRXhlY3V0
aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYmIHdpbmRvdy50b3AgPT09IHdpbmRvdy5zZWxmKSB7
XG4gICAgLy8gRmlyc3QgY2hlY2sgaWYgZGV2dG9vbHMgaXMgbm90IGluc3RhbGxlZFxuICAgIGlm
ICh0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fID09PSAndW5kZWZpbmVkJykg
e1xuICAgICAgLy8gSWYgd2UncmUgaW4gQ2hyb21lIG9yIEZpcmVmb3gsIHByb3ZpZGUgYSBkb3du
bG9hZCBsaW5rIGlmIG5vdCBpbnN0YWxsZWQuXG4gICAgICBpZiAobmF2aWdhdG9yLnVzZXJBZ2Vu
dC5pbmRleE9mKCdDaHJvbWUnKSA+IC0xICYmIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZign
RWRnZScpID09PSAtMSB8fCBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0ZpcmVmb3gnKSA+
IC0xKSB7XG4gICAgICAgIC8vIEZpcmVmb3ggZG9lcyBub3QgaGF2ZSB0aGUgaXNzdWUgd2l0aCBk
ZXZ0b29scyBsb2FkZWQgb3ZlciBmaWxlOi8vXG4gICAgICAgIHZhciBzaG93RmlsZVVybE1lc3Nh
Z2UgPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wuaW5kZXhPZignaHR0cCcpID09PSAtMSAmJiBu
YXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0ZpcmVmb3gnKSA9PT0gLTE7XG4gICAgICAgIGNv
bnNvbGUuZGVidWcoJ0Rvd25sb2FkIHRoZSBSZWFjdCBEZXZUb29scyAnICsgKHNob3dGaWxlVXJs
TWVzc2FnZSA/ICdhbmQgdXNlIGFuIEhUVFAgc2VydmVyIChpbnN0ZWFkIG9mIGEgZmlsZTogVVJM
KSAnIDogJycpICsgJ2ZvciBhIGJldHRlciBkZXZlbG9wbWVudCBleHBlcmllbmNlOiAnICsgJ2h0
dHBzOi8vZmIubWUvcmVhY3QtZGV2dG9vbHMnKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIg
dGVzdEZ1bmMgPSBmdW5jdGlvbiB0ZXN0Rm4oKSB7fTtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZygodGVzdEZ1bmMubmFtZSB8fCB0ZXN0RnVuYy50
b1N0cmluZygpKS5pbmRleE9mKCd0ZXN0Rm4nKSAhPT0gLTEsIFwiSXQgbG9va3MgbGlrZSB5b3Un
cmUgdXNpbmcgYSBtaW5pZmllZCBjb3B5IG9mIHRoZSBkZXZlbG9wbWVudCBidWlsZCBcIiArICdv
ZiBSZWFjdC4gV2hlbiBkZXBsb3lpbmcgUmVhY3QgYXBwcyB0byBwcm9kdWN0aW9uLCBtYWtlIHN1
cmUgdG8gdXNlICcgKyAndGhlIHByb2R1Y3Rpb24gYnVpbGQgd2hpY2ggc2tpcHMgZGV2ZWxvcG1l
bnQgd2FybmluZ3MgYW5kIGlzIGZhc3Rlci4gJyArICdTZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC1t
aW5pZmljYXRpb24gZm9yIG1vcmUgZGV0YWlscy4nKSA6IHZvaWQgMDtcblxuICAgIC8vIElmIHdl
J3JlIGluIElFOCwgY2hlY2sgdG8gc2VlIGlmIHdlIGFyZSBpbiBjb21wYXRpYmlsaXR5IG1vZGUg
YW5kIHByb3ZpZGVcbiAgICAvLyBpbmZvcm1hdGlvbiBvbiBwcmV2ZW50aW5nIGNvbXBhdGliaWxp
dHkgbW9kZVxuICAgIHZhciBpZUNvbXBhdGliaWxpdHlNb2RlID0gZG9jdW1lbnQuZG9jdW1lbnRN
b2RlICYmIGRvY3VtZW50LmRvY3VtZW50TW9kZSA8IDg7XG5cbiAgICBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghaWVDb21wYXRpYmlsaXR5TW9kZSwgJ0lu
dGVybmV0IEV4cGxvcmVyIGlzIHJ1bm5pbmcgaW4gY29tcGF0aWJpbGl0eSBtb2RlOyBwbGVhc2Ug
YWRkIHRoZSAnICsgJ2ZvbGxvd2luZyB0YWcgdG8geW91ciBIVE1MIHRvIHByZXZlbnQgdGhpcyBm
cm9tIGhhcHBlbmluZzogJyArICc8bWV0YSBodHRwLWVxdWl2PVwiWC1VQS1Db21wYXRpYmxlXCIg
Y29udGVudD1cIklFPWVkZ2VcIiAvPicpIDogdm9pZCAwO1xuXG4gICAgdmFyIGV4cGVjdGVkRmVh
dHVyZXMgPSBbXG4gICAgLy8gc2hpbXNcbiAgICBBcnJheS5pc0FycmF5LCBBcnJheS5wcm90b3R5
cGUuZXZlcnksIEFycmF5LnByb3RvdHlwZS5mb3JFYWNoLCBBcnJheS5wcm90b3R5cGUuaW5kZXhP
ZiwgQXJyYXkucHJvdG90eXBlLm1hcCwgRGF0ZS5ub3csIEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5k
LCBPYmplY3Qua2V5cywgU3RyaW5nLnByb3RvdHlwZS50cmltXTtcblxuICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgZXhwZWN0ZWRGZWF0dXJlcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKCFleHBl
Y3RlZEZlYXR1cmVzW2ldKSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnT25lIG9yIG1vcmUgRVM1IHNoaW1zIGV4cGVjdGVk
IGJ5IFJlYWN0IGFyZSBub3QgYXZhaWxhYmxlOiAnICsgJ2h0dHBzOi8vZmIubWUvcmVhY3Qtd2Fy
bmluZy1wb2x5ZmlsbHMnKSA6IHZvaWQgMDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAg
fVxuICB9XG59XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
XG4gIHZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0cnVtZW50
YXRpb24nKTtcbiAgdmFyIFJlYWN0RE9NVW5rbm93blByb3BlcnR5SG9vayA9IHJlcXVpcmUoJy4v
UmVhY3RET01Vbmtub3duUHJvcGVydHlIb29rJyk7XG4gIHZhciBSZWFjdERPTU51bGxJbnB1dFZh
bHVlUHJvcEhvb2sgPSByZXF1aXJlKCcuL1JlYWN0RE9NTnVsbElucHV0VmFsdWVQcm9wSG9vaycp
O1xuICB2YXIgUmVhY3RET01JbnZhbGlkQVJJQUhvb2sgPSByZXF1aXJlKCcuL1JlYWN0RE9NSW52
YWxpZEFSSUFIb29rJyk7XG5cbiAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLmFkZEhv
b2soUmVhY3RET01Vbmtub3duUHJvcGVydHlIb29rKTtcbiAgUmVhY3RJbnN0cnVtZW50YXRpb24u
ZGVidWdUb29sLmFkZEhvb2soUmVhY3RET01OdWxsSW5wdXRWYWx1ZVByb3BIb29rKTtcbiAgUmVh
Y3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLmFkZEhvb2soUmVhY3RET01JbnZhbGlkQVJJQUhv
b2spO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NO1xuXG5cbi8qKioqKioqKioqKioq
KioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RET00u
anNcbiAqKiBtb2R1bGUgaWQgPSAxMzdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8q
KlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4vKiBnbG9iYWwgaGFzT3duUHJvcGVydHk6
dHJ1ZSAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUo
Jy4vcmVhY3RQcm9kSW52YXJpYW50JyksXG4gICAgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1h
c3NpZ24nKTtcblxudmFyIEF1dG9Gb2N1c1V0aWxzID0gcmVxdWlyZSgnLi9BdXRvRm9jdXNVdGls
cycpO1xudmFyIENTU1Byb3BlcnR5T3BlcmF0aW9ucyA9IHJlcXVpcmUoJy4vQ1NTUHJvcGVydHlP
cGVyYXRpb25zJyk7XG52YXIgRE9NTGF6eVRyZWUgPSByZXF1aXJlKCcuL0RPTUxhenlUcmVlJyk7
XG52YXIgRE9NTmFtZXNwYWNlcyA9IHJlcXVpcmUoJy4vRE9NTmFtZXNwYWNlcycpO1xudmFyIERP
TVByb3BlcnR5ID0gcmVxdWlyZSgnLi9ET01Qcm9wZXJ0eScpO1xudmFyIERPTVByb3BlcnR5T3Bl
cmF0aW9ucyA9IHJlcXVpcmUoJy4vRE9NUHJvcGVydHlPcGVyYXRpb25zJyk7XG52YXIgRXZlbnRQ
bHVnaW5IdWIgPSByZXF1aXJlKCcuL0V2ZW50UGx1Z2luSHViJyk7XG52YXIgRXZlbnRQbHVnaW5S
ZWdpc3RyeSA9IHJlcXVpcmUoJy4vRXZlbnRQbHVnaW5SZWdpc3RyeScpO1xudmFyIFJlYWN0QnJv
d3NlckV2ZW50RW1pdHRlciA9IHJlcXVpcmUoJy4vUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyJyk7
XG52YXIgUmVhY3RET01Db21wb25lbnRGbGFncyA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25l
bnRGbGFncycpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RE
T01Db21wb25lbnRUcmVlJyk7XG52YXIgUmVhY3RET01JbnB1dCA9IHJlcXVpcmUoJy4vUmVhY3RE
T01JbnB1dCcpO1xudmFyIFJlYWN0RE9NT3B0aW9uID0gcmVxdWlyZSgnLi9SZWFjdERPTU9wdGlv
bicpO1xudmFyIFJlYWN0RE9NU2VsZWN0ID0gcmVxdWlyZSgnLi9SZWFjdERPTVNlbGVjdCcpO1xu
dmFyIFJlYWN0RE9NVGV4dGFyZWEgPSByZXF1aXJlKCcuL1JlYWN0RE9NVGV4dGFyZWEnKTtcbnZh
ciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0cnVtZW50YXRpb24n
KTtcbnZhciBSZWFjdE11bHRpQ2hpbGQgPSByZXF1aXJlKCcuL1JlYWN0TXVsdGlDaGlsZCcpO1xu
dmFyIFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24gPSByZXF1aXJlKCcuL1JlYWN0U2Vy
dmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24nKTtcblxudmFyIGVtcHR5RnVuY3Rpb24gPSByZXF1aXJl
KCdmYmpzL2xpYi9lbXB0eUZ1bmN0aW9uJyk7XG52YXIgZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93
c2VyID0gcmVxdWlyZSgnLi9lc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXInKTtcbnZhciBpbnZh
cmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciBpc0V2ZW50U3VwcG9y
dGVkID0gcmVxdWlyZSgnLi9pc0V2ZW50U3VwcG9ydGVkJyk7XG52YXIgc2hhbGxvd0VxdWFsID0g
cmVxdWlyZSgnZmJqcy9saWIvc2hhbGxvd0VxdWFsJyk7XG52YXIgaW5wdXRWYWx1ZVRyYWNraW5n
ID0gcmVxdWlyZSgnLi9pbnB1dFZhbHVlVHJhY2tpbmcnKTtcbnZhciB2YWxpZGF0ZURPTU5lc3Rp
bmcgPSByZXF1aXJlKCcuL3ZhbGlkYXRlRE9NTmVzdGluZycpO1xudmFyIHdhcm5pbmcgPSByZXF1
aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBGbGFncyA9IFJlYWN0RE9NQ29tcG9uZW50
RmxhZ3M7XG52YXIgZGVsZXRlTGlzdGVuZXIgPSBFdmVudFBsdWdpbkh1Yi5kZWxldGVMaXN0ZW5l
cjtcbnZhciBnZXROb2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFu
Y2U7XG52YXIgbGlzdGVuVG8gPSBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIubGlzdGVuVG87XG52
YXIgcmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJh
dGlvbk5hbWVNb2R1bGVzO1xuXG4vLyBGb3IgcXVpY2tseSBtYXRjaGluZyBjaGlsZHJlbiB0eXBl
LCB0byB0ZXN0IGlmIGNhbiBiZSB0cmVhdGVkIGFzIGNvbnRlbnQuXG52YXIgQ09OVEVOVF9UWVBF
UyA9IHsgc3RyaW5nOiB0cnVlLCBudW1iZXI6IHRydWUgfTtcblxudmFyIFNUWUxFID0gJ3N0eWxl
JztcbnZhciBIVE1MID0gJ19faHRtbCc7XG52YXIgUkVTRVJWRURfUFJPUFMgPSB7XG4gIGNoaWxk
cmVuOiBudWxsLFxuICBkYW5nZXJvdXNseVNldElubmVySFRNTDogbnVsbCxcbiAgc3VwcHJlc3ND
b250ZW50RWRpdGFibGVXYXJuaW5nOiBudWxsXG59O1xuXG4vLyBOb2RlIHR5cGUgZm9yIGRvY3Vt
ZW50IGZyYWdtZW50cyAoTm9kZS5ET0NVTUVOVF9GUkFHTUVOVF9OT0RFKS5cbnZhciBET0NfRlJB
R01FTlRfVFlQRSA9IDExO1xuXG5mdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0o
aW50ZXJuYWxJbnN0YW5jZSkge1xuICBpZiAoaW50ZXJuYWxJbnN0YW5jZSkge1xuICAgIHZhciBv
d25lciA9IGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50Ll9vd25lciB8fCBudWxsO1xu
ICAgIGlmIChvd25lcikge1xuICAgICAgdmFyIG5hbWUgPSBvd25lci5nZXROYW1lKCk7XG4gICAg
ICBpZiAobmFtZSkge1xuICAgICAgICByZXR1cm4gJyBUaGlzIERPTSBub2RlIHdhcyByZW5kZXJl
ZCBieSBgJyArIG5hbWUgKyAnYC4nO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gJyc7
XG59XG5cbmZ1bmN0aW9uIGZyaWVuZGx5U3RyaW5naWZ5KG9iaikge1xuICBpZiAodHlwZW9mIG9i
aiA9PT0gJ29iamVjdCcpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICBy
ZXR1cm4gJ1snICsgb2JqLm1hcChmcmllbmRseVN0cmluZ2lmeSkuam9pbignLCAnKSArICddJztc
biAgICB9IGVsc2Uge1xuICAgICAgdmFyIHBhaXJzID0gW107XG4gICAgICBmb3IgKHZhciBrZXkg
aW4gb2JqKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNh
bGwob2JqLCBrZXkpKSB7XG4gICAgICAgICAgdmFyIGtleUVzY2FwZWQgPSAvXlthLXokX11bXFx3
JF9dKiQvaS50ZXN0KGtleSkgPyBrZXkgOiBKU09OLnN0cmluZ2lmeShrZXkpO1xuICAgICAgICAg
IHBhaXJzLnB1c2goa2V5RXNjYXBlZCArICc6ICcgKyBmcmllbmRseVN0cmluZ2lmeShvYmpba2V5
XSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gJ3snICsgcGFpcnMuam9pbign
LCAnKSArICd9JztcbiAgICB9XG4gIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gJ3N0cmluZycp
IHtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkob2JqKTtcbiAgfSBlbHNlIGlmICh0eXBlb2Yg
b2JqID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuICdbZnVuY3Rpb24gb2JqZWN0XSc7XG4g
IH1cbiAgLy8gRGlmZmVycyBmcm9tIEpTT04uc3RyaW5naWZ5IGluIHRoYXQgdW5kZWZpbmVkIGJl
Y2F1c2UgdW5kZWZpbmVkIGFuZCB0aGF0XG4gIC8vIGluZiBhbmQgbmFuIGRvbid0IGJlY29tZSBu
dWxsXG4gIHJldHVybiBTdHJpbmcob2JqKTtcbn1cblxudmFyIHN0eWxlTXV0YXRpb25XYXJuaW5n
ID0ge307XG5cbmZ1bmN0aW9uIGNoZWNrQW5kV2FybkZvck11dGF0ZWRTdHlsZShzdHlsZTEsIHN0
eWxlMiwgY29tcG9uZW50KSB7XG4gIGlmIChzdHlsZTEgPT0gbnVsbCB8fCBzdHlsZTIgPT0gbnVs
bCkge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoc2hhbGxvd0VxdWFsKHN0eWxlMSwgc3R5bGUy
KSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBjb21wb25lbnROYW1lID0gY29tcG9uZW50
Ll90YWc7XG4gIHZhciBvd25lciA9IGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQuX293bmVyO1xu
ICB2YXIgb3duZXJOYW1lO1xuICBpZiAob3duZXIpIHtcbiAgICBvd25lck5hbWUgPSBvd25lci5n
ZXROYW1lKCk7XG4gIH1cblxuICB2YXIgaGFzaCA9IG93bmVyTmFtZSArICd8JyArIGNvbXBvbmVu
dE5hbWU7XG5cbiAgaWYgKHN0eWxlTXV0YXRpb25XYXJuaW5nLmhhc093blByb3BlcnR5KGhhc2gp
KSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgc3R5bGVNdXRhdGlvbldhcm5pbmdbaGFzaF0gPSB0
cnVlO1xuXG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5n
KGZhbHNlLCAnYCVzYCB3YXMgcGFzc2VkIGEgc3R5bGUgb2JqZWN0IHRoYXQgaGFzIHByZXZpb3Vz
bHkgYmVlbiBtdXRhdGVkLiAnICsgJ011dGF0aW5nIGBzdHlsZWAgaXMgZGVwcmVjYXRlZC4gQ29u
c2lkZXIgY2xvbmluZyBpdCBiZWZvcmVoYW5kLiBDaGVjayAnICsgJ3RoZSBgcmVuZGVyYCAlcy4g
UHJldmlvdXMgc3R5bGU6ICVzLiBNdXRhdGVkIHN0eWxlOiAlcy4nLCBjb21wb25lbnROYW1lLCBv
d25lciA/ICdvZiBgJyArIG93bmVyTmFtZSArICdgJyA6ICd1c2luZyA8JyArIGNvbXBvbmVudE5h
bWUgKyAnPicsIGZyaWVuZGx5U3RyaW5naWZ5KHN0eWxlMSksIGZyaWVuZGx5U3RyaW5naWZ5KHN0
eWxlMikpIDogdm9pZCAwO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBjb21wb25lbnRc
biAqIEBwYXJhbSB7P29iamVjdH0gcHJvcHNcbiAqL1xuZnVuY3Rpb24gYXNzZXJ0VmFsaWRQcm9w
cyhjb21wb25lbnQsIHByb3BzKSB7XG4gIGlmICghcHJvcHMpIHtcbiAgICByZXR1cm47XG4gIH1c
biAgLy8gTm90ZSB0aGUgdXNlIG9mIGA9PWAgd2hpY2ggY2hlY2tzIGZvciBudWxsIG9yIHVuZGVm
aW5lZC5cbiAgaWYgKHZvaWRFbGVtZW50VGFnc1tjb21wb25lbnQuX3RhZ10pIHtcbiAgICAhKHBy
b3BzLmNoaWxkcmVuID09IG51bGwgJiYgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgPT0g
bnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAnJXMgaXMgYSB2b2lkIGVsZW1lbnQgdGFnIGFuZCBtdXN0IG5laXRoZXIgaGF2ZSBg
Y2hpbGRyZW5gIG5vciB1c2UgYGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYC4lcycsIGNvbXBvbmVu
dC5fdGFnLCBjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50Ll9vd25lciA/ICcgQ2hlY2sgdGhlIHJl
bmRlciBtZXRob2Qgb2YgJyArIGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQuX293bmVyLmdldE5h
bWUoKSArICcuJyA6ICcnKSA6IF9wcm9kSW52YXJpYW50KCcxMzcnLCBjb21wb25lbnQuX3RhZywg
Y29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXIgPyAnIENoZWNrIHRoZSByZW5kZXIgbWV0
aG9kIG9mICcgKyBjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50Ll9vd25lci5nZXROYW1lKCkgKyAn
LicgOiAnJykgOiB2b2lkIDA7XG4gIH1cbiAgaWYgKHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJI
VE1MICE9IG51bGwpIHtcbiAgICAhKHByb3BzLmNoaWxkcmVuID09IG51bGwpID8gcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0NhbiBvbmx5
IHNldCBvbmUgb2YgYGNoaWxkcmVuYCBvciBgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxg
LicpIDogX3Byb2RJbnZhcmlhbnQoJzYwJykgOiB2b2lkIDA7XG4gICAgISh0eXBlb2YgcHJvcHMu
ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgPT09ICdvYmplY3QnICYmIEhUTUwgaW4gcHJvcHMuZGFu
Z2Vyb3VzbHlTZXRJbm5lckhUTUwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2Bwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTGAg
bXVzdCBiZSBpbiB0aGUgZm9ybSBge19faHRtbDogLi4ufWAuIFBsZWFzZSB2aXNpdCBodHRwczov
L2ZiLm1lL3JlYWN0LWludmFyaWFudC1kYW5nZXJvdXNseS1zZXQtaW5uZXItaHRtbCBmb3IgbW9y
ZSBpbmZvcm1hdGlvbi4nKSA6IF9wcm9kSW52YXJpYW50KCc2MScpIDogdm9pZCAwO1xuICB9XG4g
IGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcocHJvcHMuaW5uZXJIVE1M
ID09IG51bGwsICdEaXJlY3RseSBzZXR0aW5nIHByb3BlcnR5IGBpbm5lckhUTUxgIGlzIG5vdCBw
ZXJtaXR0ZWQuICcgKyAnRm9yIG1vcmUgaW5mb3JtYXRpb24sIGxvb2t1cCBkb2N1bWVudGF0aW9u
IG9uIGBkYW5nZXJvdXNseVNldElubmVySFRNTGAuJykgOiB2b2lkIDA7XG4gICAgcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcocHJvcHMuc3VwcHJlc3NDb250
ZW50RWRpdGFibGVXYXJuaW5nIHx8ICFwcm9wcy5jb250ZW50RWRpdGFibGUgfHwgcHJvcHMuY2hp
bGRyZW4gPT0gbnVsbCwgJ0EgY29tcG9uZW50IGlzIGBjb250ZW50RWRpdGFibGVgIGFuZCBjb250
YWlucyBgY2hpbGRyZW5gIG1hbmFnZWQgYnkgJyArICdSZWFjdC4gSXQgaXMgbm93IHlvdXIgcmVz
cG9uc2liaWxpdHkgdG8gZ3VhcmFudGVlIHRoYXQgbm9uZSBvZiAnICsgJ3Rob3NlIG5vZGVzIGFy
ZSB1bmV4cGVjdGVkbHkgbW9kaWZpZWQgb3IgZHVwbGljYXRlZC4gVGhpcyBpcyAnICsgJ3Byb2Jh
Ymx5IG5vdCBpbnRlbnRpb25hbC4nKSA6IHZvaWQgMDtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhwcm9wcy5vbkZvY3VzSW4gPT0gbnVsbCAmJiBw
cm9wcy5vbkZvY3VzT3V0ID09IG51bGwsICdSZWFjdCB1c2VzIG9uRm9jdXMgYW5kIG9uQmx1ciBp
bnN0ZWFkIG9mIG9uRm9jdXNJbiBhbmQgb25Gb2N1c091dC4gJyArICdBbGwgUmVhY3QgZXZlbnRz
IGFyZSBub3JtYWxpemVkIHRvIGJ1YmJsZSwgc28gb25Gb2N1c0luIGFuZCBvbkZvY3VzT3V0ICcg
KyAnYXJlIG5vdCBuZWVkZWQvc3VwcG9ydGVkIGJ5IFJlYWN0LicpIDogdm9pZCAwO1xuICB9XG4g
ICEocHJvcHMuc3R5bGUgPT0gbnVsbCB8fCB0eXBlb2YgcHJvcHMuc3R5bGUgPT09ICdvYmplY3Qn
KSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICdUaGUgYHN0eWxlYCBwcm9wIGV4cGVjdHMgYSBtYXBwaW5nIGZyb20gc3R5bGUgcHJvcGVy
dGllcyB0byB2YWx1ZXMsIG5vdCBhIHN0cmluZy4gRm9yIGV4YW1wbGUsIHN0eWxlPXt7bWFyZ2lu
UmlnaHQ6IHNwYWNpbmcgKyBcXCdlbVxcJ319IHdoZW4gdXNpbmcgSlNYLiVzJywgZ2V0RGVjbGFy
YXRpb25FcnJvckFkZGVuZHVtKGNvbXBvbmVudCkpIDogX3Byb2RJbnZhcmlhbnQoJzYyJywgZ2V0
RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKGNvbXBvbmVudCkpIDogdm9pZCAwO1xufVxuXG5mdW5j
dGlvbiBlbnF1ZXVlUHV0TGlzdGVuZXIoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSwgbGlzdGVuZXIs
IHRyYW5zYWN0aW9uKSB7XG4gIGlmICh0cmFuc2FjdGlvbiBpbnN0YW5jZW9mIFJlYWN0U2VydmVy
UmVuZGVyaW5nVHJhbnNhY3Rpb24pIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAvLyBJRTggaGFzIG5vIEFQSSBm
b3IgZXZlbnQgY2FwdHVyaW5nIGFuZCB0aGUgYG9uU2Nyb2xsYCBldmVudCBkb2Vzbid0XG4gICAg
Ly8gYnViYmxlLlxuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3
YXJuaW5nKHJlZ2lzdHJhdGlvbk5hbWUgIT09ICdvblNjcm9sbCcgfHwgaXNFdmVudFN1cHBvcnRl
ZCgnc2Nyb2xsJywgdHJ1ZSksIFwiVGhpcyBicm93c2VyIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgYG9u
U2Nyb2xsYCBldmVudFwiKSA6IHZvaWQgMDtcbiAgfVxuICB2YXIgY29udGFpbmVySW5mbyA9IGlu
c3QuX2hvc3RDb250YWluZXJJbmZvO1xuICB2YXIgaXNEb2N1bWVudEZyYWdtZW50ID0gY29udGFp
bmVySW5mby5fbm9kZSAmJiBjb250YWluZXJJbmZvLl9ub2RlLm5vZGVUeXBlID09PSBET0NfRlJB
R01FTlRfVFlQRTtcbiAgdmFyIGRvYyA9IGlzRG9jdW1lbnRGcmFnbWVudCA/IGNvbnRhaW5lcklu
Zm8uX25vZGUgOiBjb250YWluZXJJbmZvLl9vd25lckRvY3VtZW50O1xuICBsaXN0ZW5UbyhyZWdp
c3RyYXRpb25OYW1lLCBkb2MpO1xuICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5l
bnF1ZXVlKHB1dExpc3RlbmVyLCB7XG4gICAgaW5zdDogaW5zdCxcbiAgICByZWdpc3RyYXRpb25O
YW1lOiByZWdpc3RyYXRpb25OYW1lLFxuICAgIGxpc3RlbmVyOiBsaXN0ZW5lclxuICB9KTtcbn1c
blxuZnVuY3Rpb24gcHV0TGlzdGVuZXIoKSB7XG4gIHZhciBsaXN0ZW5lclRvUHV0ID0gdGhpcztc
biAgRXZlbnRQbHVnaW5IdWIucHV0TGlzdGVuZXIobGlzdGVuZXJUb1B1dC5pbnN0LCBsaXN0ZW5l
clRvUHV0LnJlZ2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyVG9QdXQubGlzdGVuZXIpO1xufVxuXG5m
dW5jdGlvbiBpbnB1dFBvc3RNb3VudCgpIHtcbiAgdmFyIGluc3QgPSB0aGlzO1xuICBSZWFjdERP
TUlucHV0LnBvc3RNb3VudFdyYXBwZXIoaW5zdCk7XG59XG5cbmZ1bmN0aW9uIHRleHRhcmVhUG9z
dE1vdW50KCkge1xuICB2YXIgaW5zdCA9IHRoaXM7XG4gIFJlYWN0RE9NVGV4dGFyZWEucG9zdE1v
dW50V3JhcHBlcihpbnN0KTtcbn1cblxuZnVuY3Rpb24gb3B0aW9uUG9zdE1vdW50KCkge1xuICB2
YXIgaW5zdCA9IHRoaXM7XG4gIFJlYWN0RE9NT3B0aW9uLnBvc3RNb3VudFdyYXBwZXIoaW5zdCk7
XG59XG5cbnZhciBzZXRBbmRWYWxpZGF0ZUNvbnRlbnRDaGlsZERldiA9IGVtcHR5RnVuY3Rpb247
XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBzZXRBbmRW
YWxpZGF0ZUNvbnRlbnRDaGlsZERldiA9IGZ1bmN0aW9uIChjb250ZW50KSB7XG4gICAgdmFyIGhh
c0V4aXN0aW5nQ29udGVudCA9IHRoaXMuX2NvbnRlbnREZWJ1Z0lEICE9IG51bGw7XG4gICAgdmFy
IGRlYnVnSUQgPSB0aGlzLl9kZWJ1Z0lEO1xuICAgIC8vIFRoaXMgSUQgcmVwcmVzZW50cyB0aGUg
aW5saW5lZCBjaGlsZCB0aGF0IGhhcyBubyBiYWNraW5nIGluc3RhbmNlOlxuICAgIHZhciBjb250
ZW50RGVidWdJRCA9IC1kZWJ1Z0lEO1xuXG4gICAgaWYgKGNvbnRlbnQgPT0gbnVsbCkge1xuICAg
ICAgaWYgKGhhc0V4aXN0aW5nQ29udGVudCkge1xuICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlv
bi5kZWJ1Z1Rvb2wub25Vbm1vdW50Q29tcG9uZW50KHRoaXMuX2NvbnRlbnREZWJ1Z0lEKTtcbiAg
ICAgIH1cbiAgICAgIHRoaXMuX2NvbnRlbnREZWJ1Z0lEID0gbnVsbDtcbiAgICAgIHJldHVybjtc
biAgICB9XG5cbiAgICB2YWxpZGF0ZURPTU5lc3RpbmcobnVsbCwgU3RyaW5nKGNvbnRlbnQpLCB0
aGlzLCB0aGlzLl9hbmNlc3RvckluZm8pO1xuICAgIHRoaXMuX2NvbnRlbnREZWJ1Z0lEID0gY29u
dGVudERlYnVnSUQ7XG4gICAgaWYgKGhhc0V4aXN0aW5nQ29udGVudCkge1xuICAgICAgUmVhY3RJ
bnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uQmVmb3JlVXBkYXRlQ29tcG9uZW50KGNvbnRlbnRE
ZWJ1Z0lELCBjb250ZW50KTtcbiAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5v
blVwZGF0ZUNvbXBvbmVudChjb250ZW50RGVidWdJRCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIFJl
YWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZm9yZU1vdW50Q29tcG9uZW50KGNvbnRl
bnREZWJ1Z0lELCBjb250ZW50LCBkZWJ1Z0lEKTtcbiAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9u
LmRlYnVnVG9vbC5vbk1vdW50Q29tcG9uZW50KGNvbnRlbnREZWJ1Z0lEKTtcbiAgICAgIFJlYWN0
SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblNldENoaWxkcmVuKGRlYnVnSUQsIFtjb250ZW50
RGVidWdJRF0pO1xuICAgIH1cbiAgfTtcbn1cblxuLy8gVGhlcmUgYXJlIHNvIG1hbnkgbWVkaWEg
ZXZlbnRzLCBpdCBtYWtlcyBzZW5zZSB0byBqdXN0XG4vLyBtYWludGFpbiBhIGxpc3QgcmF0aGVy
IHRoYW4gY3JlYXRlIGEgYHRyYXBCdWJibGVkRXZlbnRgIGZvciBlYWNoXG52YXIgbWVkaWFFdmVu
dHMgPSB7XG4gIHRvcEFib3J0OiAnYWJvcnQnLFxuICB0b3BDYW5QbGF5OiAnY2FucGxheScsXG4g
IHRvcENhblBsYXlUaHJvdWdoOiAnY2FucGxheXRocm91Z2gnLFxuICB0b3BEdXJhdGlvbkNoYW5n
ZTogJ2R1cmF0aW9uY2hhbmdlJyxcbiAgdG9wRW1wdGllZDogJ2VtcHRpZWQnLFxuICB0b3BFbmNy
eXB0ZWQ6ICdlbmNyeXB0ZWQnLFxuICB0b3BFbmRlZDogJ2VuZGVkJyxcbiAgdG9wRXJyb3I6ICdl
cnJvcicsXG4gIHRvcExvYWRlZERhdGE6ICdsb2FkZWRkYXRhJyxcbiAgdG9wTG9hZGVkTWV0YWRh
dGE6ICdsb2FkZWRtZXRhZGF0YScsXG4gIHRvcExvYWRTdGFydDogJ2xvYWRzdGFydCcsXG4gIHRv
cFBhdXNlOiAncGF1c2UnLFxuICB0b3BQbGF5OiAncGxheScsXG4gIHRvcFBsYXlpbmc6ICdwbGF5
aW5nJyxcbiAgdG9wUHJvZ3Jlc3M6ICdwcm9ncmVzcycsXG4gIHRvcFJhdGVDaGFuZ2U6ICdyYXRl
Y2hhbmdlJyxcbiAgdG9wU2Vla2VkOiAnc2Vla2VkJyxcbiAgdG9wU2Vla2luZzogJ3NlZWtpbmcn
LFxuICB0b3BTdGFsbGVkOiAnc3RhbGxlZCcsXG4gIHRvcFN1c3BlbmQ6ICdzdXNwZW5kJyxcbiAg
dG9wVGltZVVwZGF0ZTogJ3RpbWV1cGRhdGUnLFxuICB0b3BWb2x1bWVDaGFuZ2U6ICd2b2x1bWVj
aGFuZ2UnLFxuICB0b3BXYWl0aW5nOiAnd2FpdGluZydcbn07XG5cbmZ1bmN0aW9uIHRyYWNrSW5w
dXRWYWx1ZSgpIHtcbiAgaW5wdXRWYWx1ZVRyYWNraW5nLnRyYWNrKHRoaXMpO1xufVxuXG5mdW5j
dGlvbiB0cmFwQnViYmxlZEV2ZW50c0xvY2FsKCkge1xuICB2YXIgaW5zdCA9IHRoaXM7XG4gIC8v
IElmIGEgY29tcG9uZW50IHJlbmRlcnMgdG8gbnVsbCBvciBpZiBhbm90aGVyIGNvbXBvbmVudCBm
YXRhbHMgYW5kIGNhdXNlc1xuICAvLyB0aGUgc3RhdGUgb2YgdGhlIHRyZWUgdG8gYmUgY29ycnVw
dGVkLCBgbm9kZWAgaGVyZSBjYW4gYmUgbnVsbC5cbiAgIWluc3QuX3Jvb3ROb2RlSUQgPyBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnTXVz
dCBiZSBtb3VudGVkIHRvIHRyYXAgZXZlbnRzJykgOiBfcHJvZEludmFyaWFudCgnNjMnKSA6IHZv
aWQgMDtcbiAgdmFyIG5vZGUgPSBnZXROb2RlKGluc3QpO1xuICAhbm9kZSA/IHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd0cmFwQnViYmxl
ZEV2ZW50KC4uLik6IFJlcXVpcmVzIG5vZGUgdG8gYmUgcmVuZGVyZWQuJykgOiBfcHJvZEludmFy
aWFudCgnNjQnKSA6IHZvaWQgMDtcblxuICBzd2l0Y2ggKGluc3QuX3RhZykge1xuICAgIGNhc2Ug
J2lmcmFtZSc6XG4gICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5s
aXN0ZW5lcnMgPSBbUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoJ3Rv
cExvYWQnLCAnbG9hZCcsIG5vZGUpXTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3ZpZGVvJzpc
biAgICBjYXNlICdhdWRpbyc6XG4gICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0g
W107XG4gICAgICAvLyBDcmVhdGUgbGlzdGVuZXIgZm9yIGVhY2ggbWVkaWEgZXZlbnRcbiAgICAg
IGZvciAodmFyIGV2ZW50IGluIG1lZGlhRXZlbnRzKSB7XG4gICAgICAgIGlmIChtZWRpYUV2ZW50
cy5oYXNPd25Qcm9wZXJ0eShldmVudCkpIHtcbiAgICAgICAgICBpbnN0Ll93cmFwcGVyU3RhdGUu
bGlzdGVuZXJzLnB1c2goUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQo
ZXZlbnQsIG1lZGlhRXZlbnRzW2V2ZW50XSwgbm9kZSkpO1xuICAgICAgICB9XG4gICAgICB9XG4g
ICAgICBicmVhaztcbiAgICBjYXNlICdzb3VyY2UnOlxuICAgICAgaW5zdC5fd3JhcHBlclN0YXRl
Lmxpc3RlbmVycyA9IFtSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudCgn
dG9wRXJyb3InLCAnZXJyb3InLCBub2RlKV07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdpbWcn
OlxuICAgICAgaW5zdC5fd3JhcHBlclN0YXRlLmxpc3RlbmVycyA9IFtSZWFjdEJyb3dzZXJFdmVu
dEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wRXJyb3InLCAnZXJyb3InLCBub2RlKSwgUmVh
Y3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcExvYWQnLCAnbG9hZCcs
IG5vZGUpXTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2Zvcm0nOlxuICAgICAgaW5zdC5fd3Jh
cHBlclN0YXRlLmxpc3RlbmVycyA9IFtSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJs
ZWRFdmVudCgndG9wUmVzZXQnLCAncmVzZXQnLCBub2RlKSwgUmVhY3RCcm93c2VyRXZlbnRFbWl0
dGVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcFN1Ym1pdCcsICdzdWJtaXQnLCBub2RlKV07XG4gICAg
ICBicmVhaztcbiAgICBjYXNlICdpbnB1dCc6XG4gICAgY2FzZSAnc2VsZWN0JzpcbiAgICBjYXNl
ICd0ZXh0YXJlYSc6XG4gICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0gW1JlYWN0
QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KCd0b3BJbnZhbGlkJywgJ2ludmFs
aWQnLCBub2RlKV07XG4gICAgICBicmVhaztcbiAgfVxufVxuXG5mdW5jdGlvbiBwb3N0VXBkYXRl
U2VsZWN0V3JhcHBlcigpIHtcbiAgUmVhY3RET01TZWxlY3QucG9zdFVwZGF0ZVdyYXBwZXIodGhp
cyk7XG59XG5cbi8vIEZvciBIVE1MLCBjZXJ0YWluIHRhZ3Mgc2hvdWxkIG9taXQgdGhlaXIgY2xv
c2UgdGFnLiBXZSBrZWVwIGEgd2hpdGVsaXN0IGZvclxuLy8gdGhvc2Ugc3BlY2lhbC1jYXNlIHRh
Z3MuXG5cbnZhciBvbWl0dGVkQ2xvc2VUYWdzID0ge1xuICBhcmVhOiB0cnVlLFxuICBiYXNlOiB0
cnVlLFxuICBicjogdHJ1ZSxcbiAgY29sOiB0cnVlLFxuICBlbWJlZDogdHJ1ZSxcbiAgaHI6IHRy
dWUsXG4gIGltZzogdHJ1ZSxcbiAgaW5wdXQ6IHRydWUsXG4gIGtleWdlbjogdHJ1ZSxcbiAgbGlu
azogdHJ1ZSxcbiAgbWV0YTogdHJ1ZSxcbiAgcGFyYW06IHRydWUsXG4gIHNvdXJjZTogdHJ1ZSxc
biAgdHJhY2s6IHRydWUsXG4gIHdicjogdHJ1ZVxuICAvLyBOT1RFOiBtZW51aXRlbSdzIGNsb3Nl
IHRhZyBzaG91bGQgYmUgb21pdHRlZCwgYnV0IHRoYXQgY2F1c2VzIHByb2JsZW1zLlxufTtcblxu
dmFyIG5ld2xpbmVFYXRpbmdUYWdzID0ge1xuICBsaXN0aW5nOiB0cnVlLFxuICBwcmU6IHRydWUs
XG4gIHRleHRhcmVhOiB0cnVlXG59O1xuXG4vLyBGb3IgSFRNTCwgY2VydGFpbiB0YWdzIGNhbm5v
dCBoYXZlIGNoaWxkcmVuLiBUaGlzIGhhcyB0aGUgc2FtZSBwdXJwb3NlIGFzXG4vLyBgb21pdHRl
ZENsb3NlVGFnc2AgZXhjZXB0IHRoYXQgYG1lbnVpdGVtYCBzaG91bGQgc3RpbGwgaGF2ZSBpdHMg
Y2xvc2luZyB0YWcuXG5cbnZhciB2b2lkRWxlbWVudFRhZ3MgPSBfYXNzaWduKHtcbiAgbWVudWl0
ZW06IHRydWVcbn0sIG9taXR0ZWRDbG9zZVRhZ3MpO1xuXG4vLyBXZSBhY2NlcHQgYW55IHRhZyB0
byBiZSByZW5kZXJlZCBidXQgc2luY2UgdGhpcyBnZXRzIGluamVjdGVkIGludG8gYXJiaXRyYXJ5
XG4vLyBIVE1MLCB3ZSB3YW50IHRvIG1ha2Ugc3VyZSB0aGF0IGl0J3MgYSBzYWZlIHRhZy5cbi8v
IGh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy14bWwvI05ULU5hbWVcblxudmFyIFZBTElEX1RBR19S
RUdFWCA9IC9eW2EtekEtWl1bYS16QS1aOl9cXC5cXC1cXGRdKiQvOyAvLyBTaW1wbGlmaWVkIHN1
YnNldFxudmFyIHZhbGlkYXRlZFRhZ0NhY2hlID0ge307XG52YXIgaGFzT3duUHJvcGVydHkgPSB7
fS5oYXNPd25Qcm9wZXJ0eTtcblxuZnVuY3Rpb24gdmFsaWRhdGVEYW5nZXJvdXNUYWcodGFnKSB7
XG4gIGlmICghaGFzT3duUHJvcGVydHkuY2FsbCh2YWxpZGF0ZWRUYWdDYWNoZSwgdGFnKSkge1xu
ICAgICFWQUxJRF9UQUdfUkVHRVgudGVzdCh0YWcpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0ludmFsaWQgdGFnOiAlcycsIHRhZykg
OiBfcHJvZEludmFyaWFudCgnNjUnLCB0YWcpIDogdm9pZCAwO1xuICAgIHZhbGlkYXRlZFRhZ0Nh
Y2hlW3RhZ10gPSB0cnVlO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzQ3VzdG9tQ29tcG9uZW50KHRh
Z05hbWUsIHByb3BzKSB7XG4gIHJldHVybiB0YWdOYW1lLmluZGV4T2YoJy0nKSA+PSAwIHx8IHBy
b3BzLmlzICE9IG51bGw7XG59XG5cbnZhciBnbG9iYWxJZENvdW50ZXIgPSAxO1xuXG4vKipcbiAq
IENyZWF0ZXMgYSBuZXcgUmVhY3QgY2xhc3MgdGhhdCBpcyBpZGVtcG90ZW50IGFuZCBjYXBhYmxl
IG9mIGNvbnRhaW5pbmcgb3RoZXJcbiAqIFJlYWN0IGNvbXBvbmVudHMuIEl0IGFjY2VwdHMgZXZl
bnQgbGlzdGVuZXJzIGFuZCBET00gcHJvcGVydGllcyB0aGF0IGFyZVxuICogdmFsaWQgYWNjb3Jk
aW5nIHRvIGBET01Qcm9wZXJ0eWAuXG4gKlxuICogIC0gRXZlbnQgbGlzdGVuZXJzOiBgb25DbGlj
a2AsIGBvbk1vdXNlRG93bmAsIGV0Yy5cbiAqICAtIERPTSBwcm9wZXJ0aWVzOiBgY2xhc3NOYW1l
YCwgYG5hbWVgLCBgdGl0bGVgLCBldGMuXG4gKlxuICogVGhlIGBzdHlsZWAgcHJvcGVydHkgZnVu
Y3Rpb25zIGRpZmZlcmVudGx5IGZyb20gdGhlIERPTSBBUEkuIEl0IGFjY2VwdHMgYW5cbiAqIG9i
amVjdCBtYXBwaW5nIG9mIHN0eWxlIHByb3BlcnRpZXMgdG8gdmFsdWVzLlxuICpcbiAqIEBjb25z
dHJ1Y3RvciBSZWFjdERPTUNvbXBvbmVudFxuICogQGV4dGVuZHMgUmVhY3RNdWx0aUNoaWxkXG4g
Ki9cbmZ1bmN0aW9uIFJlYWN0RE9NQ29tcG9uZW50KGVsZW1lbnQpIHtcbiAgdmFyIHRhZyA9IGVs
ZW1lbnQudHlwZTtcbiAgdmFsaWRhdGVEYW5nZXJvdXNUYWcodGFnKTtcbiAgdGhpcy5fY3VycmVu
dEVsZW1lbnQgPSBlbGVtZW50O1xuICB0aGlzLl90YWcgPSB0YWcudG9Mb3dlckNhc2UoKTtcbiAg
dGhpcy5fbmFtZXNwYWNlVVJJID0gbnVsbDtcbiAgdGhpcy5fcmVuZGVyZWRDaGlsZHJlbiA9IG51
bGw7XG4gIHRoaXMuX3ByZXZpb3VzU3R5bGUgPSBudWxsO1xuICB0aGlzLl9wcmV2aW91c1N0eWxl
Q29weSA9IG51bGw7XG4gIHRoaXMuX2hvc3ROb2RlID0gbnVsbDtcbiAgdGhpcy5faG9zdFBhcmVu
dCA9IG51bGw7XG4gIHRoaXMuX3Jvb3ROb2RlSUQgPSAwO1xuICB0aGlzLl9kb21JRCA9IDA7XG4g
IHRoaXMuX2hvc3RDb250YWluZXJJbmZvID0gbnVsbDtcbiAgdGhpcy5fd3JhcHBlclN0YXRlID0g
bnVsbDtcbiAgdGhpcy5fdG9wTGV2ZWxXcmFwcGVyID0gbnVsbDtcbiAgdGhpcy5fZmxhZ3MgPSAw
O1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHRo
aXMuX2FuY2VzdG9ySW5mbyA9IG51bGw7XG4gICAgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hpbGRE
ZXYuY2FsbCh0aGlzLCBudWxsKTtcbiAgfVxufVxuXG5SZWFjdERPTUNvbXBvbmVudC5kaXNwbGF5
TmFtZSA9ICdSZWFjdERPTUNvbXBvbmVudCc7XG5cblJlYWN0RE9NQ29tcG9uZW50Lk1peGluID0g
e1xuICAvKipcbiAgICogR2VuZXJhdGVzIHJvb3QgdGFnIG1hcmt1cCB0aGVuIHJlY3Vyc2VzLiBU
aGlzIG1ldGhvZCBoYXMgc2lkZSBlZmZlY3RzIGFuZFxuICAgKiBpcyBub3QgaWRlbXBvdGVudC5c
biAgICpcbiAgICogQGludGVybmFsXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2Fj
dGlvbnxSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBA
cGFyYW0gez9SZWFjdERPTUNvbXBvbmVudH0gdGhlIHBhcmVudCBjb21wb25lbnQgaW5zdGFuY2Vc
biAgICogQHBhcmFtIHs/b2JqZWN0fSBpbmZvIGFib3V0IHRoZSBob3N0IGNvbnRhaW5lclxuICAg
KiBAcGFyYW0ge29iamVjdH0gY29udGV4dFxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBjb21w
dXRlZCBtYXJrdXAuXG4gICAqL1xuICBtb3VudENvbXBvbmVudDogZnVuY3Rpb24gKHRyYW5zYWN0
aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgY29udGV4dCkge1xuICAgIHRoaXMu
X3Jvb3ROb2RlSUQgPSBnbG9iYWxJZENvdW50ZXIrKztcbiAgICB0aGlzLl9kb21JRCA9IGhvc3RD
b250YWluZXJJbmZvLl9pZENvdW50ZXIrKztcbiAgICB0aGlzLl9ob3N0UGFyZW50ID0gaG9zdFBh
cmVudDtcbiAgICB0aGlzLl9ob3N0Q29udGFpbmVySW5mbyA9IGhvc3RDb250YWluZXJJbmZvO1xu
XG4gICAgdmFyIHByb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cbiAgICBzd2l0
Y2ggKHRoaXMuX3RhZykge1xuICAgICAgY2FzZSAnYXVkaW8nOlxuICAgICAgY2FzZSAnZm9ybSc6
XG4gICAgICBjYXNlICdpZnJhbWUnOlxuICAgICAgY2FzZSAnaW1nJzpcbiAgICAgIGNhc2UgJ2xp
bmsnOlxuICAgICAgY2FzZSAnb2JqZWN0JzpcbiAgICAgIGNhc2UgJ3NvdXJjZSc6XG4gICAgICBj
YXNlICd2aWRlbyc6XG4gICAgICAgIHRoaXMuX3dyYXBwZXJTdGF0ZSA9IHtcbiAgICAgICAgICBs
aXN0ZW5lcnM6IG51bGxcbiAgICAgICAgfTtcbiAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RN
b3VudFJlYWR5KCkuZW5xdWV1ZSh0cmFwQnViYmxlZEV2ZW50c0xvY2FsLCB0aGlzKTtcbiAgICAg
ICAgYnJlYWs7XG4gICAgICBjYXNlICdpbnB1dCc6XG4gICAgICAgIFJlYWN0RE9NSW5wdXQubW91
bnRXcmFwcGVyKHRoaXMsIHByb3BzLCBob3N0UGFyZW50KTtcbiAgICAgICAgcHJvcHMgPSBSZWFj
dERPTUlucHV0LmdldEhvc3RQcm9wcyh0aGlzLCBwcm9wcyk7XG4gICAgICAgIHRyYW5zYWN0aW9u
LmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodHJhY2tJbnB1dFZhbHVlLCB0aGlzKTtcbiAg
ICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZSh0cmFwQnViYmxl
ZEV2ZW50c0xvY2FsLCB0aGlzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvcHRpb24n
OlxuICAgICAgICBSZWFjdERPTU9wdGlvbi5tb3VudFdyYXBwZXIodGhpcywgcHJvcHMsIGhvc3RQ
YXJlbnQpO1xuICAgICAgICBwcm9wcyA9IFJlYWN0RE9NT3B0aW9uLmdldEhvc3RQcm9wcyh0aGlz
LCBwcm9wcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc2VsZWN0JzpcbiAgICAgICAg
UmVhY3RET01TZWxlY3QubW91bnRXcmFwcGVyKHRoaXMsIHByb3BzLCBob3N0UGFyZW50KTtcbiAg
ICAgICAgcHJvcHMgPSBSZWFjdERPTVNlbGVjdC5nZXRIb3N0UHJvcHModGhpcywgcHJvcHMpO1xu
ICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHRyYXBCdWJi
bGVkRXZlbnRzTG9jYWwsIHRoaXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RleHRh
cmVhJzpcbiAgICAgICAgUmVhY3RET01UZXh0YXJlYS5tb3VudFdyYXBwZXIodGhpcywgcHJvcHMs
IGhvc3RQYXJlbnQpO1xuICAgICAgICBwcm9wcyA9IFJlYWN0RE9NVGV4dGFyZWEuZ2V0SG9zdFBy
b3BzKHRoaXMsIHByb3BzKTtcbiAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5
KCkuZW5xdWV1ZSh0cmFja0lucHV0VmFsdWUsIHRoaXMpO1xuICAgICAgICB0cmFuc2FjdGlvbi5n
ZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHRyYXBCdWJibGVkRXZlbnRzTG9jYWwsIHRoaXMp
O1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBhc3NlcnRWYWxpZFByb3BzKHRoaXMsIHBy
b3BzKTtcblxuICAgIC8vIFdlIGNyZWF0ZSB0YWdzIGluIHRoZSBuYW1lc3BhY2Ugb2YgdGhlaXIg
cGFyZW50IGNvbnRhaW5lciwgZXhjZXB0IEhUTUxcbiAgICAvLyB0YWdzIGdldCBubyBuYW1lc3Bh
Y2UuXG4gICAgdmFyIG5hbWVzcGFjZVVSSTtcbiAgICB2YXIgcGFyZW50VGFnO1xuICAgIGlmICho
b3N0UGFyZW50ICE9IG51bGwpIHtcbiAgICAgIG5hbWVzcGFjZVVSSSA9IGhvc3RQYXJlbnQuX25h
bWVzcGFjZVVSSTtcbiAgICAgIHBhcmVudFRhZyA9IGhvc3RQYXJlbnQuX3RhZztcbiAgICB9IGVs
c2UgaWYgKGhvc3RDb250YWluZXJJbmZvLl90YWcpIHtcbiAgICAgIG5hbWVzcGFjZVVSSSA9IGhv
c3RDb250YWluZXJJbmZvLl9uYW1lc3BhY2VVUkk7XG4gICAgICBwYXJlbnRUYWcgPSBob3N0Q29u
dGFpbmVySW5mby5fdGFnO1xuICAgIH1cbiAgICBpZiAobmFtZXNwYWNlVVJJID09IG51bGwgfHwg
bmFtZXNwYWNlVVJJID09PSBET01OYW1lc3BhY2VzLnN2ZyAmJiBwYXJlbnRUYWcgPT09ICdmb3Jl
aWdub2JqZWN0Jykge1xuICAgICAgbmFtZXNwYWNlVVJJID0gRE9NTmFtZXNwYWNlcy5odG1sO1xu
ICAgIH1cbiAgICBpZiAobmFtZXNwYWNlVVJJID09PSBET01OYW1lc3BhY2VzLmh0bWwpIHtcbiAg
ICAgIGlmICh0aGlzLl90YWcgPT09ICdzdmcnKSB7XG4gICAgICAgIG5hbWVzcGFjZVVSSSA9IERP
TU5hbWVzcGFjZXMuc3ZnO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLl90YWcgPT09ICdtYXRoJykg
e1xuICAgICAgICBuYW1lc3BhY2VVUkkgPSBET01OYW1lc3BhY2VzLm1hdGhtbDtcbiAgICAgIH1c
biAgICB9XG4gICAgdGhpcy5fbmFtZXNwYWNlVVJJID0gbmFtZXNwYWNlVVJJO1xuXG4gICAgaWYg
KHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBwYXJl
bnRJbmZvO1xuICAgICAgaWYgKGhvc3RQYXJlbnQgIT0gbnVsbCkge1xuICAgICAgICBwYXJlbnRJ
bmZvID0gaG9zdFBhcmVudC5fYW5jZXN0b3JJbmZvO1xuICAgICAgfSBlbHNlIGlmIChob3N0Q29u
dGFpbmVySW5mby5fdGFnKSB7XG4gICAgICAgIHBhcmVudEluZm8gPSBob3N0Q29udGFpbmVySW5m
by5fYW5jZXN0b3JJbmZvO1xuICAgICAgfVxuICAgICAgaWYgKHBhcmVudEluZm8pIHtcbiAgICAg
ICAgLy8gcGFyZW50SW5mbyBzaG91bGQgYWx3YXlzIGJlIHByZXNlbnQgZXhjZXB0IGZvciB0aGUg
dG9wLWxldmVsXG4gICAgICAgIC8vIGNvbXBvbmVudCB3aGVuIHNlcnZlciByZW5kZXJpbmdcbiAg
ICAgICAgdmFsaWRhdGVET01OZXN0aW5nKHRoaXMuX3RhZywgbnVsbCwgdGhpcywgcGFyZW50SW5m
byk7XG4gICAgICB9XG4gICAgICB0aGlzLl9hbmNlc3RvckluZm8gPSB2YWxpZGF0ZURPTU5lc3Rp
bmcudXBkYXRlZEFuY2VzdG9ySW5mbyhwYXJlbnRJbmZvLCB0aGlzLl90YWcsIHRoaXMpO1xuICAg
IH1cblxuICAgIHZhciBtb3VudEltYWdlO1xuICAgIGlmICh0cmFuc2FjdGlvbi51c2VDcmVhdGVF
bGVtZW50KSB7XG4gICAgICB2YXIgb3duZXJEb2N1bWVudCA9IGhvc3RDb250YWluZXJJbmZvLl9v
d25lckRvY3VtZW50O1xuICAgICAgdmFyIGVsO1xuICAgICAgaWYgKG5hbWVzcGFjZVVSSSA9PT0g
RE9NTmFtZXNwYWNlcy5odG1sKSB7XG4gICAgICAgIGlmICh0aGlzLl90YWcgPT09ICdzY3JpcHQn
KSB7XG4gICAgICAgICAgLy8gQ3JlYXRlIHRoZSBzY3JpcHQgdmlhIC5pbm5lckhUTUwgc28gaXRz
IFwicGFyc2VyLWluc2VydGVkXCIgZmxhZyBpc1xuICAgICAgICAgIC8vIHNldCB0byB0cnVlIGFu
ZCBpdCBkb2VzIG5vdCBleGVjdXRlXG4gICAgICAgICAgdmFyIGRpdiA9IG93bmVyRG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgdmFyIHR5cGUgPSB0aGlzLl9jdXJyZW50
RWxlbWVudC50eXBlO1xuICAgICAgICAgIGRpdi5pbm5lckhUTUwgPSAnPCcgKyB0eXBlICsgJz48
LycgKyB0eXBlICsgJz4nO1xuICAgICAgICAgIGVsID0gZGl2LnJlbW92ZUNoaWxkKGRpdi5maXJz
dENoaWxkKTtcbiAgICAgICAgfSBlbHNlIGlmIChwcm9wcy5pcykge1xuICAgICAgICAgIGVsID0g
b3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUsIHBy
b3BzLmlzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBTZXBhcmF0ZSBlbHNlIGJy
YW5jaCBpbnN0ZWFkIG9mIHVzaW5nIGBwcm9wcy5pcyB8fCB1bmRlZmluZWRgIGFib3ZlIGJlY3Vh
c2Ugb2YgYSBGaXJlZm94IGJ1Zy5cbiAgICAgICAgICAvLyBTZWUgZGlzY3Vzc2lvbiBpbiBodHRw
czovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC82ODk2XG4gICAgICAgICAgLy8gYW5k
IGRpc2N1c3Npb24gaW4gaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTI3NjI0MFxuICAgICAgICAgIGVsID0gb3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KHRo
aXMuX2N1cnJlbnRFbGVtZW50LnR5cGUpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAg
ICAgICBlbCA9IG93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG5hbWVzcGFjZVVSSSwgdGhp
cy5fY3VycmVudEVsZW1lbnQudHlwZSk7XG4gICAgICB9XG4gICAgICBSZWFjdERPTUNvbXBvbmVu
dFRyZWUucHJlY2FjaGVOb2RlKHRoaXMsIGVsKTtcbiAgICAgIHRoaXMuX2ZsYWdzIHw9IEZsYWdz
Lmhhc0NhY2hlZENoaWxkTm9kZXM7XG4gICAgICBpZiAoIXRoaXMuX2hvc3RQYXJlbnQpIHtcbiAg
ICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldEF0dHJpYnV0ZUZvclJvb3QoZWwpO1xuICAg
ICAgfVxuICAgICAgdGhpcy5fdXBkYXRlRE9NUHJvcGVydGllcyhudWxsLCBwcm9wcywgdHJhbnNh
Y3Rpb24pO1xuICAgICAgdmFyIGxhenlUcmVlID0gRE9NTGF6eVRyZWUoZWwpO1xuICAgICAgdGhp
cy5fY3JlYXRlSW5pdGlhbENoaWxkcmVuKHRyYW5zYWN0aW9uLCBwcm9wcywgY29udGV4dCwgbGF6
eVRyZWUpO1xuICAgICAgbW91bnRJbWFnZSA9IGxhenlUcmVlO1xuICAgIH0gZWxzZSB7XG4gICAg
ICB2YXIgdGFnT3BlbiA9IHRoaXMuX2NyZWF0ZU9wZW5UYWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnMo
dHJhbnNhY3Rpb24sIHByb3BzKTtcbiAgICAgIHZhciB0YWdDb250ZW50ID0gdGhpcy5fY3JlYXRl
Q29udGVudE1hcmt1cCh0cmFuc2FjdGlvbiwgcHJvcHMsIGNvbnRleHQpO1xuICAgICAgaWYgKCF0
YWdDb250ZW50ICYmIG9taXR0ZWRDbG9zZVRhZ3NbdGhpcy5fdGFnXSkge1xuICAgICAgICBtb3Vu
dEltYWdlID0gdGFnT3BlbiArICcvPic7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtb3VudElt
YWdlID0gdGFnT3BlbiArICc+JyArIHRhZ0NvbnRlbnQgKyAnPC8nICsgdGhpcy5fY3VycmVudEVs
ZW1lbnQudHlwZSArICc+JztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzd2l0Y2ggKHRoaXMuX3Rh
Zykge1xuICAgICAgY2FzZSAnaW5wdXQnOlxuICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1v
dW50UmVhZHkoKS5lbnF1ZXVlKGlucHV0UG9zdE1vdW50LCB0aGlzKTtcbiAgICAgICAgaWYgKHBy
b3BzLmF1dG9Gb2N1cykge1xuICAgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFk
eSgpLmVucXVldWUoQXV0b0ZvY3VzVXRpbHMuZm9jdXNET01Db21wb25lbnQsIHRoaXMpO1xuICAg
ICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndGV4dGFyZWEnOlxuICAgICAgICB0
cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHRleHRhcmVhUG9zdE1vdW50
LCB0aGlzKTtcbiAgICAgICAgaWYgKHByb3BzLmF1dG9Gb2N1cykge1xuICAgICAgICAgIHRyYW5z
YWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoQXV0b0ZvY3VzVXRpbHMuZm9jdXNE
T01Db21wb25lbnQsIHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2Fz
ZSAnc2VsZWN0JzpcbiAgICAgICAgaWYgKHByb3BzLmF1dG9Gb2N1cykge1xuICAgICAgICAgIHRy
YW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoQXV0b0ZvY3VzVXRpbHMuZm9j
dXNET01Db21wb25lbnQsIHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAg
Y2FzZSAnYnV0dG9uJzpcbiAgICAgICAgaWYgKHByb3BzLmF1dG9Gb2N1cykge1xuICAgICAgICAg
IHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoQXV0b0ZvY3VzVXRpbHMu
Zm9jdXNET01Db21wb25lbnQsIHRoaXMpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAg
ICAgY2FzZSAnb3B0aW9uJzpcbiAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5
KCkuZW5xdWV1ZShvcHRpb25Qb3N0TW91bnQsIHRoaXMpO1xuICAgICAgICBicmVhaztcbiAgICB9
XG5cbiAgICByZXR1cm4gbW91bnRJbWFnZTtcbiAgfSxcblxuICAvKipcbiAgICogQ3JlYXRlcyBt
YXJrdXAgZm9yIHRoZSBvcGVuIHRhZyBhbmQgYWxsIGF0dHJpYnV0ZXMuXG4gICAqXG4gICAqIFRo
aXMgbWV0aG9kIGhhcyBzaWRlIGVmZmVjdHMgYmVjYXVzZSBldmVudHMgZ2V0IHJlZ2lzdGVyZWQu
XG4gICAqXG4gICAqIEl0ZXJhdGluZyBvdmVyIG9iamVjdCBwcm9wZXJ0aWVzIGlzIGZhc3RlciB0
aGFuIGl0ZXJhdGluZyBvdmVyIGFycmF5cy5cbiAgICogQHNlZSBodHRwOi8vanNwZXJmLmNvbS9v
YmotdnMtYXJyLWl0ZXJhdGlvblxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge1Jl
YWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0g
dHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtvYmplY3R9IHByb3BzXG4gICAqIEByZXR1cm4ge3N0
cmluZ30gTWFya3VwIG9mIG9wZW5pbmcgdGFnLlxuICAgKi9cbiAgX2NyZWF0ZU9wZW5UYWdNYXJr
dXBBbmRQdXRMaXN0ZW5lcnM6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgcHJvcHMpIHtcbiAgICB2
YXIgcmV0ID0gJzwnICsgdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcblxuICAgIGZvciAodmFy
IHByb3BLZXkgaW4gcHJvcHMpIHtcbiAgICAgIGlmICghcHJvcHMuaGFzT3duUHJvcGVydHkocHJv
cEtleSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICB2YXIgcHJvcFZhbHVl
ID0gcHJvcHNbcHJvcEtleV07XG4gICAgICBpZiAocHJvcFZhbHVlID09IG51bGwpIHtcbiAgICAg
ICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAocmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMu
aGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtcbiAgICAgICAgaWYgKHByb3BWYWx1ZSkge1xuICAg
ICAgICAgIGVucXVldWVQdXRMaXN0ZW5lcih0aGlzLCBwcm9wS2V5LCBwcm9wVmFsdWUsIHRyYW5z
YWN0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHByb3BLZXkg
PT09IFNUWUxFKSB7XG4gICAgICAgICAgaWYgKHByb3BWYWx1ZSkge1xuICAgICAgICAgICAgaWYg
KHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgICAg
Ly8gU2VlIGBfdXBkYXRlRE9NUHJvcGVydGllc2AuIHN0eWxlIGJsb2NrXG4gICAgICAgICAgICAg
IHRoaXMuX3ByZXZpb3VzU3R5bGUgPSBwcm9wVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAg
ICAgICBwcm9wVmFsdWUgPSB0aGlzLl9wcmV2aW91c1N0eWxlQ29weSA9IF9hc3NpZ24oe30sIHBy
b3BzLnN0eWxlKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcHJvcFZhbHVlID0gQ1NTUHJvcGVy
dHlPcGVyYXRpb25zLmNyZWF0ZU1hcmt1cEZvclN0eWxlcyhwcm9wVmFsdWUsIHRoaXMpO1xuICAg
ICAgICB9XG4gICAgICAgIHZhciBtYXJrdXAgPSBudWxsO1xuICAgICAgICBpZiAodGhpcy5fdGFn
ICE9IG51bGwgJiYgaXNDdXN0b21Db21wb25lbnQodGhpcy5fdGFnLCBwcm9wcykpIHtcbiAgICAg
ICAgICBpZiAoIVJFU0VSVkVEX1BST1BTLmhhc093blByb3BlcnR5KHByb3BLZXkpKSB7XG4gICAg
ICAgICAgICBtYXJrdXAgPSBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9yQ3Vz
dG9tQXR0cmlidXRlKHByb3BLZXksIHByb3BWYWx1ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9
IGVsc2Uge1xuICAgICAgICAgIG1hcmt1cCA9IERPTVByb3BlcnR5T3BlcmF0aW9ucy5jcmVhdGVN
YXJrdXBGb3JQcm9wZXJ0eShwcm9wS2V5LCBwcm9wVmFsdWUpO1xuICAgICAgICB9XG4gICAgICAg
IGlmIChtYXJrdXApIHtcbiAgICAgICAgICByZXQgKz0gJyAnICsgbWFya3VwO1xuICAgICAgICB9
XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gRm9yIHN0YXRpYyBwYWdlcywgbm8gbmVlZCB0byBw
dXQgUmVhY3QgSUQgYW5kIGNoZWNrc3VtLiBTYXZlcyBsb3RzIG9mXG4gICAgLy8gYnl0ZXMuXG4g
ICAgaWYgKHRyYW5zYWN0aW9uLnJlbmRlclRvU3RhdGljTWFya3VwKSB7XG4gICAgICByZXR1cm4g
cmV0O1xuICAgIH1cblxuICAgIGlmICghdGhpcy5faG9zdFBhcmVudCkge1xuICAgICAgcmV0ICs9
ICcgJyArIERPTVByb3BlcnR5T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JSb290KCk7XG4gICAg
fVxuICAgIHJldCArPSAnICcgKyBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9y
SUQodGhpcy5fZG9tSUQpO1xuICAgIHJldHVybiByZXQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIENy
ZWF0ZXMgbWFya3VwIGZvciB0aGUgY29udGVudCBiZXR3ZWVuIHRoZSB0YWdzLlxuICAgKlxuICAg
KiBAcHJpdmF0ZVxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RT
ZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtvYmpl
Y3R9IHByb3BzXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0XG4gICAqIEByZXR1cm4ge3N0
cmluZ30gQ29udGVudCBtYXJrdXAuXG4gICAqL1xuICBfY3JlYXRlQ29udGVudE1hcmt1cDogZnVu
Y3Rpb24gKHRyYW5zYWN0aW9uLCBwcm9wcywgY29udGV4dCkge1xuICAgIHZhciByZXQgPSAnJztc
blxuICAgIC8vIEludGVudGlvbmFsIHVzZSBvZiAhPSB0byBhdm9pZCBjYXRjaGluZyB6ZXJvL2Zh
bHNlLlxuICAgIHZhciBpbm5lckhUTUwgPSBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTDtc
biAgICBpZiAoaW5uZXJIVE1MICE9IG51bGwpIHtcbiAgICAgIGlmIChpbm5lckhUTUwuX19odG1s
ICE9IG51bGwpIHtcbiAgICAgICAgcmV0ID0gaW5uZXJIVE1MLl9faHRtbDtcbiAgICAgIH1cbiAg
ICB9IGVsc2Uge1xuICAgICAgdmFyIGNvbnRlbnRUb1VzZSA9IENPTlRFTlRfVFlQRVNbdHlwZW9m
IHByb3BzLmNoaWxkcmVuXSA/IHByb3BzLmNoaWxkcmVuIDogbnVsbDtcbiAgICAgIHZhciBjaGls
ZHJlblRvVXNlID0gY29udGVudFRvVXNlICE9IG51bGwgPyBudWxsIDogcHJvcHMuY2hpbGRyZW47
XG4gICAgICBpZiAoY29udGVudFRvVXNlICE9IG51bGwpIHtcbiAgICAgICAgLy8gVE9ETzogVmFs
aWRhdGUgdGhhdCB0ZXh0IGlzIGFsbG93ZWQgYXMgYSBjaGlsZCBvZiB0aGlzIG5vZGVcbiAgICAg
ICAgcmV0ID0gZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyKGNvbnRlbnRUb1VzZSk7XG4gICAg
ICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAg
ICAgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYuY2FsbCh0aGlzLCBjb250ZW50VG9Vc2Up
O1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGNoaWxkcmVuVG9Vc2UgIT0gbnVsbCkge1xu
ICAgICAgICB2YXIgbW91bnRJbWFnZXMgPSB0aGlzLm1vdW50Q2hpbGRyZW4oY2hpbGRyZW5Ub1Vz
ZSwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgICAgICByZXQgPSBtb3VudEltYWdlcy5qb2lu
KCcnKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG5ld2xpbmVFYXRpbmdUYWdzW3RoaXMuX3Rh
Z10gJiYgcmV0LmNoYXJBdCgwKSA9PT0gJ1xcbicpIHtcbiAgICAgIC8vIHRleHQvaHRtbCBpZ25v
cmVzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlc2UgdGFncyBpZiBpdCdzIGEgbmV3bGluZVxu
ICAgICAgLy8gUHJlZmVyIHRvIGJyZWFrIGFwcGxpY2F0aW9uL3htbCBvdmVyIHRleHQvaHRtbCAo
Zm9yIG5vdykgYnkgYWRkaW5nXG4gICAgICAvLyBhIG5ld2xpbmUgc3BlY2lmaWNhbGx5IHRvIGdl
dCBlYXRlbiBieSB0aGUgcGFyc2VyLiAoQWx0ZXJuYXRlbHkgZm9yXG4gICAgICAvLyB0ZXh0YXJl
YXMsIHJlcGxhY2luZyBcIl5cXG5cIiB3aXRoIFwiXFxyXFxuXCIgZG9lc24ndCBnZXQgZWF0ZW4s
IGFuZCB0aGUgZmlyc3RcbiAgICAgIC8vIFxcciBpcyBub3JtYWxpemVkIG91dCBieSBIVE1MVGV4
dEFyZWFFbGVtZW50I3ZhbHVlLilcbiAgICAgIC8vIFNlZTogPGh0dHA6Ly93d3cudzMub3JnL1RS
L2h0bWwtcG9seWdsb3QvI25ld2xpbmVzLWluLXRleHRhcmVhLWFuZC1wcmU+XG4gICAgICAvLyBT
ZWU6IDxodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9zeW50YXguaHRtbCNlbGVtZW50LXJlc3Ry
aWN0aW9ucz5cbiAgICAgIC8vIFNlZTogPGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3N5bnRh
eC5odG1sI25ld2xpbmVzPlxuICAgICAgLy8gU2VlOiBQYXJzaW5nIG9mIFwidGV4dGFyZWFcIiBc
Imxpc3RpbmdcIiBhbmQgXCJwcmVcIiBlbGVtZW50c1xuICAgICAgLy8gIGZyb20gPGh0dHA6Ly93
d3cudzMub3JnL1RSL2h0bWw1L3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmJvZHk+XG4gICAg
ICByZXR1cm4gJ1xcbicgKyByZXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiByZXQ7XG4g
ICAgfVxuICB9LFxuXG4gIF9jcmVhdGVJbml0aWFsQ2hpbGRyZW46IGZ1bmN0aW9uICh0cmFuc2Fj
dGlvbiwgcHJvcHMsIGNvbnRleHQsIGxhenlUcmVlKSB7XG4gICAgLy8gSW50ZW50aW9uYWwgdXNl
IG9mICE9IHRvIGF2b2lkIGNhdGNoaW5nIHplcm8vZmFsc2UuXG4gICAgdmFyIGlubmVySFRNTCA9
IHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MO1xuICAgIGlmIChpbm5lckhUTUwgIT0gbnVs
bCkge1xuICAgICAgaWYgKGlubmVySFRNTC5fX2h0bWwgIT0gbnVsbCkge1xuICAgICAgICBET01M
YXp5VHJlZS5xdWV1ZUhUTUwobGF6eVRyZWUsIGlubmVySFRNTC5fX2h0bWwpO1xuICAgICAgfVxu
ICAgIH0gZWxzZSB7XG4gICAgICB2YXIgY29udGVudFRvVXNlID0gQ09OVEVOVF9UWVBFU1t0eXBl
b2YgcHJvcHMuY2hpbGRyZW5dID8gcHJvcHMuY2hpbGRyZW4gOiBudWxsO1xuICAgICAgdmFyIGNo
aWxkcmVuVG9Vc2UgPSBjb250ZW50VG9Vc2UgIT0gbnVsbCA/IG51bGwgOiBwcm9wcy5jaGlsZHJl
bjtcbiAgICAgIC8vIFRPRE86IFZhbGlkYXRlIHRoYXQgdGV4dCBpcyBhbGxvd2VkIGFzIGEgY2hp
bGQgb2YgdGhpcyBub2RlXG4gICAgICBpZiAoY29udGVudFRvVXNlICE9IG51bGwpIHtcbiAgICAg
ICAgLy8gQXZvaWQgc2V0dGluZyB0ZXh0Q29udGVudCB3aGVuIHRoZSB0ZXh0IGlzIGVtcHR5LiBJ
biBJRTExIHNldHRpbmdcbiAgICAgICAgLy8gdGV4dENvbnRlbnQgb24gYSB0ZXh0IGFyZWEgd2ls
bCBjYXVzZSB0aGUgcGxhY2Vob2xkZXIgdG8gbm90XG4gICAgICAgIC8vIHNob3cgd2l0aGluIHRo
ZSB0ZXh0YXJlYSB1bnRpbCBpdCBoYXMgYmVlbiBmb2N1c2VkIGFuZCBibHVycmVkIGFnYWluLlxu
ICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzY3MzEj
aXNzdWVjb21tZW50LTI1NDg3NDU1M1xuICAgICAgICBpZiAoY29udGVudFRvVXNlICE9PSAnJykg
e1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
XG4gICAgICAgICAgICBzZXRBbmRWYWxpZGF0ZUNvbnRlbnRDaGlsZERldi5jYWxsKHRoaXMsIGNv
bnRlbnRUb1VzZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIERPTUxhenlUcmVlLnF1ZXVlVGV4
dChsYXp5VHJlZSwgY29udGVudFRvVXNlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChj
aGlsZHJlblRvVXNlICE9IG51bGwpIHtcbiAgICAgICAgdmFyIG1vdW50SW1hZ2VzID0gdGhpcy5t
b3VudENoaWxkcmVuKGNoaWxkcmVuVG9Vc2UsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtb3VudEltYWdlcy5sZW5ndGg7IGkrKykge1xuICAgICAg
ICAgIERPTUxhenlUcmVlLnF1ZXVlQ2hpbGQobGF6eVRyZWUsIG1vdW50SW1hZ2VzW2ldKTtcbiAg
ICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogUmVjZWl2ZXMgYSBu
ZXh0IGVsZW1lbnQgYW5kIHVwZGF0ZXMgdGhlIGNvbXBvbmVudC5cbiAgICpcbiAgICogQGludGVy
bmFsXG4gICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudFxuICAgKiBAcGFyYW0g
e1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlv
bn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcbiAgICovXG4gIHJl
Y2VpdmVDb21wb25lbnQ6IGZ1bmN0aW9uIChuZXh0RWxlbWVudCwgdHJhbnNhY3Rpb24sIGNvbnRl
eHQpIHtcbiAgICB2YXIgcHJldkVsZW1lbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudDtcbiAgICB0
aGlzLl9jdXJyZW50RWxlbWVudCA9IG5leHRFbGVtZW50O1xuICAgIHRoaXMudXBkYXRlQ29tcG9u
ZW50KHRyYW5zYWN0aW9uLCBwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQsIGNvbnRleHQpO1xuICB9
LFxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIGEgRE9NIGNvbXBvbmVudCBhZnRlciBpdCBoYXMgYWxy
ZWFkeSBiZWVuIGFsbG9jYXRlZCBhbmRcbiAgICogYXR0YWNoZWQgdG8gdGhlIERPTS4gUmVjb25j
aWxlcyB0aGUgcm9vdCBET00gbm9kZSwgdGhlbiByZWN1cnNlcy5cbiAgICpcbiAgICogQHBhcmFt
IHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge1Jl
YWN0RWxlbWVudH0gcHJldkVsZW1lbnRcbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRF
bGVtZW50XG4gICAqIEBpbnRlcm5hbFxuICAgKiBAb3ZlcnJpZGFibGVcbiAgICovXG4gIHVwZGF0
ZUNvbXBvbmVudDogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBwcmV2RWxlbWVudCwgbmV4dEVsZW1l
bnQsIGNvbnRleHQpIHtcbiAgICB2YXIgbGFzdFByb3BzID0gcHJldkVsZW1lbnQucHJvcHM7XG4g
ICAgdmFyIG5leHRQcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXG4gICAgc3dp
dGNoICh0aGlzLl90YWcpIHtcbiAgICAgIGNhc2UgJ2lucHV0JzpcbiAgICAgICAgbGFzdFByb3Bz
ID0gUmVhY3RET01JbnB1dC5nZXRIb3N0UHJvcHModGhpcywgbGFzdFByb3BzKTtcbiAgICAgICAg
bmV4dFByb3BzID0gUmVhY3RET01JbnB1dC5nZXRIb3N0UHJvcHModGhpcywgbmV4dFByb3BzKTtc
biAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdvcHRpb24nOlxuICAgICAgICBsYXN0UHJvcHMg
PSBSZWFjdERPTU9wdGlvbi5nZXRIb3N0UHJvcHModGhpcywgbGFzdFByb3BzKTtcbiAgICAgICAg
bmV4dFByb3BzID0gUmVhY3RET01PcHRpb24uZ2V0SG9zdFByb3BzKHRoaXMsIG5leHRQcm9wcyk7
XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnc2VsZWN0JzpcbiAgICAgICAgbGFzdFByb3Bz
ID0gUmVhY3RET01TZWxlY3QuZ2V0SG9zdFByb3BzKHRoaXMsIGxhc3RQcm9wcyk7XG4gICAgICAg
IG5leHRQcm9wcyA9IFJlYWN0RE9NU2VsZWN0LmdldEhvc3RQcm9wcyh0aGlzLCBuZXh0UHJvcHMp
O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RleHRhcmVhJzpcbiAgICAgICAgbGFzdFBy
b3BzID0gUmVhY3RET01UZXh0YXJlYS5nZXRIb3N0UHJvcHModGhpcywgbGFzdFByb3BzKTtcbiAg
ICAgICAgbmV4dFByb3BzID0gUmVhY3RET01UZXh0YXJlYS5nZXRIb3N0UHJvcHModGhpcywgbmV4
dFByb3BzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgYXNzZXJ0VmFsaWRQcm9wcyh0
aGlzLCBuZXh0UHJvcHMpO1xuICAgIHRoaXMuX3VwZGF0ZURPTVByb3BlcnRpZXMobGFzdFByb3Bz
LCBuZXh0UHJvcHMsIHRyYW5zYWN0aW9uKTtcbiAgICB0aGlzLl91cGRhdGVET01DaGlsZHJlbihs
YXN0UHJvcHMsIG5leHRQcm9wcywgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuXG4gICAgc3dpdGNo
ICh0aGlzLl90YWcpIHtcbiAgICAgIGNhc2UgJ2lucHV0JzpcbiAgICAgICAgLy8gVXBkYXRlIHRo
ZSB3cmFwcGVyIGFyb3VuZCBpbnB1dHMgKmFmdGVyKiB1cGRhdGluZyBwcm9wcy4gVGhpcyBoYXMg
dG9cbiAgICAgICAgLy8gaGFwcGVuIGFmdGVyIGBfdXBkYXRlRE9NUHJvcGVydGllc2AuIE90aGVy
d2lzZSBIVE1MNSBpbnB1dCB2YWxpZGF0aW9uc1xuICAgICAgICAvLyByYWlzZSB3YXJuaW5ncyBh
bmQgcHJldmVudCB0aGUgbmV3IHZhbHVlIGZyb20gYmVpbmcgYXNzaWduZWQuXG4gICAgICAgIFJl
YWN0RE9NSW5wdXQudXBkYXRlV3JhcHBlcih0aGlzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBj
YXNlICd0ZXh0YXJlYSc6XG4gICAgICAgIFJlYWN0RE9NVGV4dGFyZWEudXBkYXRlV3JhcHBlcih0
aGlzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgICAvLyA8
c2VsZWN0PiB2YWx1ZSB1cGRhdGUgbmVlZHMgdG8gb2NjdXIgYWZ0ZXIgPG9wdGlvbj4gY2hpbGRy
ZW5cbiAgICAgICAgLy8gcmVjb25jaWxpYXRpb25cbiAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVh
Y3RNb3VudFJlYWR5KCkuZW5xdWV1ZShwb3N0VXBkYXRlU2VsZWN0V3JhcHBlciwgdGhpcyk7XG4g
ICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogUmVjb25jaWxlcyB0aGUg
cHJvcGVydGllcyBieSBkZXRlY3RpbmcgZGlmZmVyZW5jZXMgaW4gcHJvcGVydHkgdmFsdWVzIGFu
ZFxuICAgKiB1cGRhdGluZyB0aGUgRE9NIGFzIG5lY2Vzc2FyeS4gVGhpcyBmdW5jdGlvbiBpcyBw
cm9iYWJseSB0aGUgc2luZ2xlIG1vc3RcbiAgICogY3JpdGljYWwgcGF0aCBmb3IgcGVyZm9ybWFu
Y2Ugb3B0aW1pemF0aW9uLlxuICAgKlxuICAgKiBUT0RPOiBCZW5jaG1hcmsgd2hldGhlciBjaGVj
a2luZyBmb3IgY2hhbmdlZCB2YWx1ZXMgaW4gbWVtb3J5IGFjdHVhbGx5XG4gICAqICAgICAgIGlt
cHJvdmVzIHBlcmZvcm1hbmNlIChlc3BlY2lhbGx5IHN0YXRpY2FsbHkgcG9zaXRpb25lZCBlbGVt
ZW50cykuXG4gICAqIFRPRE86IEJlbmNobWFyayB0aGUgZWZmZWN0cyBvZiBwdXR0aW5nIHRoaXMg
YXQgdGhlIHRvcCBzaW5jZSA5OSUgb2YgcHJvcHNcbiAgICogICAgICAgZG8gbm90IGNoYW5nZSBm
b3IgYSBnaXZlbiByZWNvbmNpbGlhdGlvbi5cbiAgICogVE9ETzogQmVuY2htYXJrIGFyZWFzIHRo
YXQgY2FuIGJlIGltcHJvdmVkIHdpdGggY2FjaGluZy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAg
ICogQHBhcmFtIHtvYmplY3R9IGxhc3RQcm9wc1xuICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFBy
b3BzXG4gICAqIEBwYXJhbSB7P0RPTUVsZW1lbnR9IG5vZGVcbiAgICovXG4gIF91cGRhdGVET01Q
cm9wZXJ0aWVzOiBmdW5jdGlvbiAobGFzdFByb3BzLCBuZXh0UHJvcHMsIHRyYW5zYWN0aW9uKSB7
XG4gICAgdmFyIHByb3BLZXk7XG4gICAgdmFyIHN0eWxlTmFtZTtcbiAgICB2YXIgc3R5bGVVcGRh
dGVzO1xuICAgIGZvciAocHJvcEtleSBpbiBsYXN0UHJvcHMpIHtcbiAgICAgIGlmIChuZXh0UHJv
cHMuaGFzT3duUHJvcGVydHkocHJvcEtleSkgfHwgIWxhc3RQcm9wcy5oYXNPd25Qcm9wZXJ0eShw
cm9wS2V5KSB8fCBsYXN0UHJvcHNbcHJvcEtleV0gPT0gbnVsbCkge1xuICAgICAgICBjb250aW51
ZTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wS2V5ID09PSBTVFlMRSkge1xuICAgICAgICB2YXIg
bGFzdFN0eWxlID0gdGhpcy5fcHJldmlvdXNTdHlsZUNvcHk7XG4gICAgICAgIGZvciAoc3R5bGVO
YW1lIGluIGxhc3RTdHlsZSkge1xuICAgICAgICAgIGlmIChsYXN0U3R5bGUuaGFzT3duUHJvcGVy
dHkoc3R5bGVOYW1lKSkge1xuICAgICAgICAgICAgc3R5bGVVcGRhdGVzID0gc3R5bGVVcGRhdGVz
IHx8IHt9O1xuICAgICAgICAgICAgc3R5bGVVcGRhdGVzW3N0eWxlTmFtZV0gPSAnJztcbiAgICAg
ICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5fcHJldmlvdXNTdHlsZUNvcHkgPSBudWxs
O1xuICAgICAgfSBlbHNlIGlmIChyZWdpc3RyYXRpb25OYW1lTW9kdWxlcy5oYXNPd25Qcm9wZXJ0
eShwcm9wS2V5KSkge1xuICAgICAgICBpZiAobGFzdFByb3BzW3Byb3BLZXldKSB7XG4gICAgICAg
ICAgLy8gT25seSBjYWxsIGRlbGV0ZUxpc3RlbmVyIGlmIHRoZXJlIHdhcyBhIGxpc3RlbmVyIHBy
ZXZpb3VzbHkgb3JcbiAgICAgICAgICAvLyBlbHNlIHdpbGxEZWxldGVMaXN0ZW5lciBnZXRzIGNh
bGxlZCB3aGVuIHRoZXJlIHdhc24ndCBhY3R1YWxseSBhXG4gICAgICAgICAgLy8gbGlzdGVuZXIg
KGUuZy4sIG9uQ2xpY2s9e251bGx9KVxuICAgICAgICAgIGRlbGV0ZUxpc3RlbmVyKHRoaXMsIHBy
b3BLZXkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlzQ3VzdG9tQ29tcG9uZW50KHRo
aXMuX3RhZywgbGFzdFByb3BzKSkge1xuICAgICAgICBpZiAoIVJFU0VSVkVEX1BST1BTLmhhc093
blByb3BlcnR5KHByb3BLZXkpKSB7XG4gICAgICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLmRl
bGV0ZVZhbHVlRm9yQXR0cmlidXRlKGdldE5vZGUodGhpcyksIHByb3BLZXkpO1xuICAgICAgICB9
XG4gICAgICB9IGVsc2UgaWYgKERPTVByb3BlcnR5LnByb3BlcnRpZXNbcHJvcEtleV0gfHwgRE9N
UHJvcGVydHkuaXNDdXN0b21BdHRyaWJ1dGUocHJvcEtleSkpIHtcbiAgICAgICAgRE9NUHJvcGVy
dHlPcGVyYXRpb25zLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkoZ2V0Tm9kZSh0aGlzKSwgcHJvcEtl
eSk7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAocHJvcEtleSBpbiBuZXh0UHJvcHMpIHtcbiAg
ICAgIHZhciBuZXh0UHJvcCA9IG5leHRQcm9wc1twcm9wS2V5XTtcbiAgICAgIHZhciBsYXN0UHJv
cCA9IHByb3BLZXkgPT09IFNUWUxFID8gdGhpcy5fcHJldmlvdXNTdHlsZUNvcHkgOiBsYXN0UHJv
cHMgIT0gbnVsbCA/IGxhc3RQcm9wc1twcm9wS2V5XSA6IHVuZGVmaW5lZDtcbiAgICAgIGlmICgh
bmV4dFByb3BzLmhhc093blByb3BlcnR5KHByb3BLZXkpIHx8IG5leHRQcm9wID09PSBsYXN0UHJv
cCB8fCBuZXh0UHJvcCA9PSBudWxsICYmIGxhc3RQcm9wID09IG51bGwpIHtcbiAgICAgICAgY29u
dGludWU7XG4gICAgICB9XG4gICAgICBpZiAocHJvcEtleSA9PT0gU1RZTEUpIHtcbiAgICAgICAg
aWYgKG5leHRQcm9wKSB7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIGNoZWNrQW5kV2FybkZvck11dGF0ZWRTdHlsZSh0
aGlzLl9wcmV2aW91c1N0eWxlQ29weSwgdGhpcy5fcHJldmlvdXNTdHlsZSwgdGhpcyk7XG4gICAg
ICAgICAgICB0aGlzLl9wcmV2aW91c1N0eWxlID0gbmV4dFByb3A7XG4gICAgICAgICAgfVxuICAg
ICAgICAgIG5leHRQcm9wID0gdGhpcy5fcHJldmlvdXNTdHlsZUNvcHkgPSBfYXNzaWduKHt9LCBu
ZXh0UHJvcCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5fcHJldmlvdXNTdHls
ZUNvcHkgPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGlmIChsYXN0UHJvcCkge1xuICAgICAg
ICAgIC8vIFVuc2V0IHN0eWxlcyBvbiBgbGFzdFByb3BgIGJ1dCBub3Qgb24gYG5leHRQcm9wYC5c
biAgICAgICAgICBmb3IgKHN0eWxlTmFtZSBpbiBsYXN0UHJvcCkge1xuICAgICAgICAgICAgaWYg
KGxhc3RQcm9wLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkgJiYgKCFuZXh0UHJvcCB8fCAhbmV4
dFByb3AuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSkpIHtcbiAgICAgICAgICAgICAgc3R5bGVV
cGRhdGVzID0gc3R5bGVVcGRhdGVzIHx8IHt9O1xuICAgICAgICAgICAgICBzdHlsZVVwZGF0ZXNb
c3R5bGVOYW1lXSA9ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICAv
LyBVcGRhdGUgc3R5bGVzIHRoYXQgY2hhbmdlZCBzaW5jZSBgbGFzdFByb3BgLlxuICAgICAgICAg
IGZvciAoc3R5bGVOYW1lIGluIG5leHRQcm9wKSB7XG4gICAgICAgICAgICBpZiAobmV4dFByb3Au
aGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSAmJiBsYXN0UHJvcFtzdHlsZU5hbWVdICE9PSBuZXh0
UHJvcFtzdHlsZU5hbWVdKSB7XG4gICAgICAgICAgICAgIHN0eWxlVXBkYXRlcyA9IHN0eWxlVXBk
YXRlcyB8fCB7fTtcbiAgICAgICAgICAgICAgc3R5bGVVcGRhdGVzW3N0eWxlTmFtZV0gPSBuZXh0
UHJvcFtzdHlsZU5hbWVdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSBl
bHNlIHtcbiAgICAgICAgICAvLyBSZWxpZXMgb24gYHVwZGF0ZVN0eWxlc0J5SURgIG5vdCBtdXRh
dGluZyBgc3R5bGVVcGRhdGVzYC5cbiAgICAgICAgICBzdHlsZVVwZGF0ZXMgPSBuZXh0UHJvcDtc
biAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChyZWdpc3RyYXRpb25OYW1lTW9kdWxlcy5oYXNP
d25Qcm9wZXJ0eShwcm9wS2V5KSkge1xuICAgICAgICBpZiAobmV4dFByb3ApIHtcbiAgICAgICAg
ICBlbnF1ZXVlUHV0TGlzdGVuZXIodGhpcywgcHJvcEtleSwgbmV4dFByb3AsIHRyYW5zYWN0aW9u
KTtcbiAgICAgICAgfSBlbHNlIGlmIChsYXN0UHJvcCkge1xuICAgICAgICAgIGRlbGV0ZUxpc3Rl
bmVyKHRoaXMsIHByb3BLZXkpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKGlzQ3VzdG9t
Q29tcG9uZW50KHRoaXMuX3RhZywgbmV4dFByb3BzKSkge1xuICAgICAgICBpZiAoIVJFU0VSVkVE
X1BST1BTLmhhc093blByb3BlcnR5KHByb3BLZXkpKSB7XG4gICAgICAgICAgRE9NUHJvcGVydHlP
cGVyYXRpb25zLnNldFZhbHVlRm9yQXR0cmlidXRlKGdldE5vZGUodGhpcyksIHByb3BLZXksIG5l
eHRQcm9wKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChET01Qcm9wZXJ0eS5wcm9wZXJ0
aWVzW3Byb3BLZXldIHx8IERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0cmlidXRlKHByb3BLZXkpKSB7
XG4gICAgICAgIHZhciBub2RlID0gZ2V0Tm9kZSh0aGlzKTtcbiAgICAgICAgLy8gSWYgd2UncmUg
dXBkYXRpbmcgdG8gbnVsbCBvciB1bmRlZmluZWQsIHdlIHNob3VsZCByZW1vdmUgdGhlIHByb3Bl
cnR5XG4gICAgICAgIC8vIGZyb20gdGhlIERPTSBub2RlIGluc3RlYWQgb2YgaW5hZHZlcnRlbnRs
eSBzZXR0aW5nIHRvIGEgc3RyaW5nLiBUaGlzXG4gICAgICAgIC8vIGJyaW5ncyB1cyBpbiBsaW5l
IHdpdGggdGhlIHNhbWUgYmVoYXZpb3Igd2UgaGF2ZSBvbiBpbml0aWFsIHJlbmRlci5cbiAgICAg
ICAgaWYgKG5leHRQcm9wICE9IG51bGwpIHtcbiAgICAgICAgICBET01Qcm9wZXJ0eU9wZXJhdGlv
bnMuc2V0VmFsdWVGb3JQcm9wZXJ0eShub2RlLCBwcm9wS2V5LCBuZXh0UHJvcCk7XG4gICAgICAg
IH0gZWxzZSB7XG4gICAgICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLmRlbGV0ZVZhbHVlRm9y
UHJvcGVydHkobm9kZSwgcHJvcEtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAg
aWYgKHN0eWxlVXBkYXRlcykge1xuICAgICAgQ1NTUHJvcGVydHlPcGVyYXRpb25zLnNldFZhbHVl
Rm9yU3R5bGVzKGdldE5vZGUodGhpcyksIHN0eWxlVXBkYXRlcywgdGhpcyk7XG4gICAgfVxuICB9
LFxuXG4gIC8qKlxuICAgKiBSZWNvbmNpbGVzIHRoZSBjaGlsZHJlbiB3aXRoIHRoZSB2YXJpb3Vz
IHByb3BlcnRpZXMgdGhhdCBhZmZlY3QgdGhlXG4gICAqIGNoaWxkcmVuIGNvbnRlbnQuXG4gICAq
XG4gICAqIEBwYXJhbSB7b2JqZWN0fSBsYXN0UHJvcHNcbiAgICogQHBhcmFtIHtvYmplY3R9IG5l
eHRQcm9wc1xuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0
aW9uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0XG4gICAqL1xuICBfdXBkYXRlRE9NQ2hp
bGRyZW46IGZ1bmN0aW9uIChsYXN0UHJvcHMsIG5leHRQcm9wcywgdHJhbnNhY3Rpb24sIGNvbnRl
eHQpIHtcbiAgICB2YXIgbGFzdENvbnRlbnQgPSBDT05URU5UX1RZUEVTW3R5cGVvZiBsYXN0UHJv
cHMuY2hpbGRyZW5dID8gbGFzdFByb3BzLmNoaWxkcmVuIDogbnVsbDtcbiAgICB2YXIgbmV4dENv
bnRlbnQgPSBDT05URU5UX1RZUEVTW3R5cGVvZiBuZXh0UHJvcHMuY2hpbGRyZW5dID8gbmV4dFBy
b3BzLmNoaWxkcmVuIDogbnVsbDtcblxuICAgIHZhciBsYXN0SHRtbCA9IGxhc3RQcm9wcy5kYW5n
ZXJvdXNseVNldElubmVySFRNTCAmJiBsYXN0UHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwu
X19odG1sO1xuICAgIHZhciBuZXh0SHRtbCA9IG5leHRQcm9wcy5kYW5nZXJvdXNseVNldElubmVy
SFRNTCAmJiBuZXh0UHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sO1xuXG4gICAg
Ly8gTm90ZSB0aGUgdXNlIG9mIGAhPWAgd2hpY2ggY2hlY2tzIGZvciBudWxsIG9yIHVuZGVmaW5l
ZC5cbiAgICB2YXIgbGFzdENoaWxkcmVuID0gbGFzdENvbnRlbnQgIT0gbnVsbCA/IG51bGwgOiBs
YXN0UHJvcHMuY2hpbGRyZW47XG4gICAgdmFyIG5leHRDaGlsZHJlbiA9IG5leHRDb250ZW50ICE9
IG51bGwgPyBudWxsIDogbmV4dFByb3BzLmNoaWxkcmVuO1xuXG4gICAgLy8gSWYgd2UncmUgc3dp
dGNoaW5nIGZyb20gY2hpbGRyZW4gdG8gY29udGVudC9odG1sIG9yIHZpY2UgdmVyc2EsIHJlbW92
ZVxuICAgIC8vIHRoZSBvbGQgY29udGVudFxuICAgIHZhciBsYXN0SGFzQ29udGVudE9ySHRtbCA9
IGxhc3RDb250ZW50ICE9IG51bGwgfHwgbGFzdEh0bWwgIT0gbnVsbDtcbiAgICB2YXIgbmV4dEhh
c0NvbnRlbnRPckh0bWwgPSBuZXh0Q29udGVudCAhPSBudWxsIHx8IG5leHRIdG1sICE9IG51bGw7
XG4gICAgaWYgKGxhc3RDaGlsZHJlbiAhPSBudWxsICYmIG5leHRDaGlsZHJlbiA9PSBudWxsKSB7
XG4gICAgICB0aGlzLnVwZGF0ZUNoaWxkcmVuKG51bGwsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtc
biAgICB9IGVsc2UgaWYgKGxhc3RIYXNDb250ZW50T3JIdG1sICYmICFuZXh0SGFzQ29udGVudE9y
SHRtbCkge1xuICAgICAgdGhpcy51cGRhdGVUZXh0Q29udGVudCgnJyk7XG4gICAgICBpZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBSZWFjdEluc3Ry
dW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25TZXRDaGlsZHJlbih0aGlzLl9kZWJ1Z0lELCBbXSk7XG4g
ICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5leHRDb250ZW50ICE9IG51bGwpIHtcbiAgICAgIGlm
IChsYXN0Q29udGVudCAhPT0gbmV4dENvbnRlbnQpIHtcbiAgICAgICAgdGhpcy51cGRhdGVUZXh0
Q29udGVudCgnJyArIG5leHRDb250ZW50KTtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBzZXRBbmRWYWxpZGF0ZUNvbnRlbnRD
aGlsZERldi5jYWxsKHRoaXMsIG5leHRDb250ZW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAg
IH0gZWxzZSBpZiAobmV4dEh0bWwgIT0gbnVsbCkge1xuICAgICAgaWYgKGxhc3RIdG1sICE9PSBu
ZXh0SHRtbCkge1xuICAgICAgICB0aGlzLnVwZGF0ZU1hcmt1cCgnJyArIG5leHRIdG1sKTtcbiAg
ICAgIH1cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
XG4gICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblNldENoaWxkcmVuKHRo
aXMuX2RlYnVnSUQsIFtdKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5leHRDaGlsZHJlbiAh
PSBudWxsKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
Jykge1xuICAgICAgICBzZXRBbmRWYWxpZGF0ZUNvbnRlbnRDaGlsZERldi5jYWxsKHRoaXMsIG51
bGwpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnVwZGF0ZUNoaWxkcmVuKG5leHRDaGlsZHJlbiwg
dHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgIH1cbiAgfSxcblxuICBnZXRIb3N0Tm9kZTogZnVu
Y3Rpb24gKCkge1xuICAgIHJldHVybiBnZXROb2RlKHRoaXMpO1xuICB9LFxuXG4gIC8qKlxuICAg
KiBEZXN0cm95cyBhbGwgZXZlbnQgcmVnaXN0cmF0aW9ucyBmb3IgdGhpcyBpbnN0YW5jZS4gRG9l
cyBub3QgcmVtb3ZlIGZyb21cbiAgICogdGhlIERPTS4gVGhhdCBtdXN0IGJlIGRvbmUgYnkgdGhl
IHBhcmVudC5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICB1bm1vdW50Q29tcG9uZW50
OiBmdW5jdGlvbiAoc2FmZWx5KSB7XG4gICAgc3dpdGNoICh0aGlzLl90YWcpIHtcbiAgICAgIGNh
c2UgJ2F1ZGlvJzpcbiAgICAgIGNhc2UgJ2Zvcm0nOlxuICAgICAgY2FzZSAnaWZyYW1lJzpcbiAg
ICAgIGNhc2UgJ2ltZyc6XG4gICAgICBjYXNlICdsaW5rJzpcbiAgICAgIGNhc2UgJ29iamVjdCc6
XG4gICAgICBjYXNlICdzb3VyY2UnOlxuICAgICAgY2FzZSAndmlkZW8nOlxuICAgICAgICB2YXIg
bGlzdGVuZXJzID0gdGhpcy5fd3JhcHBlclN0YXRlLmxpc3RlbmVycztcbiAgICAgICAgaWYgKGxp
c3RlbmVycykge1xuICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdGVuZXJzLmxlbmd0
aDsgaSsrKSB7XG4gICAgICAgICAgICBsaXN0ZW5lcnNbaV0ucmVtb3ZlKCk7XG4gICAgICAgICAg
fVxuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaW5wdXQnOlxuICAgICAg
Y2FzZSAndGV4dGFyZWEnOlxuICAgICAgICBpbnB1dFZhbHVlVHJhY2tpbmcuc3RvcFRyYWNraW5n
KHRoaXMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2h0bWwnOlxuICAgICAgY2FzZSAn
aGVhZCc6XG4gICAgICBjYXNlICdib2R5JzpcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENvbXBv
bmVudHMgbGlrZSA8aHRtbD4gPGhlYWQ+IGFuZCA8Ym9keT4gY2FuJ3QgYmUgcmVtb3ZlZCBvciBh
ZGRlZFxuICAgICAgICAgKiBlYXNpbHkgaW4gYSBjcm9zcy1icm93c2VyIHdheSwgaG93ZXZlciBp
dCdzIHZhbHVhYmxlIHRvIGJlIGFibGUgdG9cbiAgICAgICAgICogdGFrZSBhZHZhbnRhZ2Ugb2Yg
UmVhY3QncyByZWNvbmNpbGlhdGlvbiBmb3Igc3R5bGluZyBhbmQgPHRpdGxlPlxuICAgICAgICAg
KiBtYW5hZ2VtZW50LiBTbyB3ZSBqdXN0IGRvY3VtZW50IGl0IGFuZCB0aHJvdyBpbiBkYW5nZXJv
dXMgY2FzZXMuXG4gICAgICAgICAqL1xuICAgICAgICAhZmFsc2UgPyBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnPCVzPiB0cmllZCB0byB1
bm1vdW50LiBCZWNhdXNlIG9mIGNyb3NzLWJyb3dzZXIgcXVpcmtzIGl0IGlzIGltcG9zc2libGUg
dG8gdW5tb3VudCBzb21lIHRvcC1sZXZlbCBjb21wb25lbnRzIChlZyA8aHRtbD4sIDxoZWFkPiwg
YW5kIDxib2R5PikgcmVsaWFibHkgYW5kIGVmZmljaWVudGx5LiBUbyBmaXggdGhpcywgaGF2ZSBh
IHNpbmdsZSB0b3AtbGV2ZWwgY29tcG9uZW50IHRoYXQgbmV2ZXIgdW5tb3VudHMgcmVuZGVyIHRo
ZXNlIGVsZW1lbnRzLicsIHRoaXMuX3RhZykgOiBfcHJvZEludmFyaWFudCgnNjYnLCB0aGlzLl90
YWcpIDogdm9pZCAwO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICB0aGlzLnVubW91bnRD
aGlsZHJlbihzYWZlbHkpO1xuICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS51bmNhY2hlTm9kZSh0
aGlzKTtcbiAgICBFdmVudFBsdWdpbkh1Yi5kZWxldGVBbGxMaXN0ZW5lcnModGhpcyk7XG4gICAg
dGhpcy5fcm9vdE5vZGVJRCA9IDA7XG4gICAgdGhpcy5fZG9tSUQgPSAwO1xuICAgIHRoaXMuX3dy
YXBwZXJTdGF0ZSA9IG51bGw7XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJykge1xuICAgICAgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYuY2FsbCh0
aGlzLCBudWxsKTtcbiAgICB9XG4gIH0sXG5cbiAgZ2V0UHVibGljSW5zdGFuY2U6IGZ1bmN0aW9u
ICgpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZSh0aGlzKTtcbiAgfVxufTtcblxuX2Fzc2lnbihSZWFj
dERPTUNvbXBvbmVudC5wcm90b3R5cGUsIFJlYWN0RE9NQ29tcG9uZW50Lk1peGluLCBSZWFjdE11
bHRpQ2hpbGQuTWl4aW4pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NQ29tcG9uZW50O1xu
XG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0
LWRvbS9saWIvUmVhY3RET01Db21wb25lbnQuanNcbiAqKiBtb2R1bGUgaWQgPSAxMzhcbiAqKiBt
b2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xu
XG4ndXNlIHN0cmljdCc7XG5cbnZhciB2YWxpZGF0ZURPTU5lc3RpbmcgPSByZXF1aXJlKCcuL3Zh
bGlkYXRlRE9NTmVzdGluZycpO1xuXG52YXIgRE9DX05PREVfVFlQRSA9IDk7XG5cbmZ1bmN0aW9u
IFJlYWN0RE9NQ29udGFpbmVySW5mbyh0b3BMZXZlbFdyYXBwZXIsIG5vZGUpIHtcbiAgdmFyIGlu
Zm8gPSB7XG4gICAgX3RvcExldmVsV3JhcHBlcjogdG9wTGV2ZWxXcmFwcGVyLFxuICAgIF9pZENv
dW50ZXI6IDEsXG4gICAgX293bmVyRG9jdW1lbnQ6IG5vZGUgPyBub2RlLm5vZGVUeXBlID09PSBE
T0NfTk9ERV9UWVBFID8gbm9kZSA6IG5vZGUub3duZXJEb2N1bWVudCA6IG51bGwsXG4gICAgX25v
ZGU6IG5vZGUsXG4gICAgX3RhZzogbm9kZSA/IG5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA6
IG51bGwsXG4gICAgX25hbWVzcGFjZVVSSTogbm9kZSA/IG5vZGUubmFtZXNwYWNlVVJJIDogbnVs
bFxuICB9O1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xu
ICAgIGluZm8uX2FuY2VzdG9ySW5mbyA9IG5vZGUgPyB2YWxpZGF0ZURPTU5lc3RpbmcudXBkYXRl
ZEFuY2VzdG9ySW5mbyhudWxsLCBpbmZvLl90YWcsIG51bGwpIDogbnVsbDtcbiAgfVxuICByZXR1
cm4gaW5mbztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUNvbnRhaW5lckluZm87XG5c
blxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3Qt
ZG9tL2xpYi9SZWFjdERPTUNvbnRhaW5lckluZm8uanNcbiAqKiBtb2R1bGUgaWQgPSAxMzlcbiAq
KiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTQtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAq
L1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2ln
bicpO1xuXG52YXIgRE9NTGF6eVRyZWUgPSByZXF1aXJlKCcuL0RPTUxhenlUcmVlJyk7XG52YXIg
UmVhY3RET01Db21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVudFRyZWUn
KTtcblxudmFyIFJlYWN0RE9NRW1wdHlDb21wb25lbnQgPSBmdW5jdGlvbiAoaW5zdGFudGlhdGUp
IHtcbiAgLy8gUmVhY3RDb21wb3NpdGVDb21wb25lbnQgdXNlcyB0aGlzOlxuICB0aGlzLl9jdXJy
ZW50RWxlbWVudCA9IG51bGw7XG4gIC8vIFJlYWN0RE9NQ29tcG9uZW50VHJlZSB1c2VzIHRoZXNl
OlxuICB0aGlzLl9ob3N0Tm9kZSA9IG51bGw7XG4gIHRoaXMuX2hvc3RQYXJlbnQgPSBudWxsO1xu
ICB0aGlzLl9ob3N0Q29udGFpbmVySW5mbyA9IG51bGw7XG4gIHRoaXMuX2RvbUlEID0gMDtcbn07
XG5fYXNzaWduKFJlYWN0RE9NRW1wdHlDb21wb25lbnQucHJvdG90eXBlLCB7XG4gIG1vdW50Q29t
cG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJ
bmZvLCBjb250ZXh0KSB7XG4gICAgdmFyIGRvbUlEID0gaG9zdENvbnRhaW5lckluZm8uX2lkQ291
bnRlcisrO1xuICAgIHRoaXMuX2RvbUlEID0gZG9tSUQ7XG4gICAgdGhpcy5faG9zdFBhcmVudCA9
IGhvc3RQYXJlbnQ7XG4gICAgdGhpcy5faG9zdENvbnRhaW5lckluZm8gPSBob3N0Q29udGFpbmVy
SW5mbztcblxuICAgIHZhciBub2RlVmFsdWUgPSAnIHJlYWN0LWVtcHR5OiAnICsgdGhpcy5fZG9t
SUQgKyAnICc7XG4gICAgaWYgKHRyYW5zYWN0aW9uLnVzZUNyZWF0ZUVsZW1lbnQpIHtcbiAgICAg
IHZhciBvd25lckRvY3VtZW50ID0gaG9zdENvbnRhaW5lckluZm8uX293bmVyRG9jdW1lbnQ7XG4g
ICAgICB2YXIgbm9kZSA9IG93bmVyRG9jdW1lbnQuY3JlYXRlQ29tbWVudChub2RlVmFsdWUpO1xu
ICAgICAgUmVhY3RET01Db21wb25lbnRUcmVlLnByZWNhY2hlTm9kZSh0aGlzLCBub2RlKTtcbiAg
ICAgIHJldHVybiBET01MYXp5VHJlZShub2RlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHRy
YW5zYWN0aW9uLnJlbmRlclRvU3RhdGljTWFya3VwKSB7XG4gICAgICAgIC8vIE5vcm1hbGx5IHdl
J2QgaW5zZXJ0IGEgY29tbWVudCBub2RlLCBidXQgc2luY2UgdGhpcyBpcyBhIHNpdHVhdGlvblxu
ICAgICAgICAvLyB3aGVyZSBSZWFjdCB3b24ndCB0YWtlIG92ZXIgKHN0YXRpYyBwYWdlcyksIHdl
IGNhbiBzaW1wbHkgcmV0dXJuXG4gICAgICAgIC8vIG5vdGhpbmcuXG4gICAgICAgIHJldHVybiAn
JztcbiAgICAgIH1cbiAgICAgIHJldHVybiAnPCEtLScgKyBub2RlVmFsdWUgKyAnLS0+JztcbiAg
ICB9XG4gIH0sXG4gIHJlY2VpdmVDb21wb25lbnQ6IGZ1bmN0aW9uICgpIHt9LFxuICBnZXRIb3N0
Tm9kZTogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0
Tm9kZUZyb21JbnN0YW5jZSh0aGlzKTtcbiAgfSxcbiAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rp
b24gKCkge1xuICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS51bmNhY2hlTm9kZSh0aGlzKTtcbiAg
fVxufSk7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01FbXB0eUNvbXBvbmVudDtcblxuXG4v
KioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20v
bGliL1JlYWN0RE9NRW1wdHlDb21wb25lbnQuanNcbiAqKiBtb2R1bGUgaWQgPSAxNDBcbiAqKiBt
b2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xu
XG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdERPTUZlYXR1cmVGbGFncyA9IHtcbiAgdXNlQ3Jl
YXRlRWxlbWVudDogdHJ1ZSxcbiAgdXNlRmliZXI6IGZhbHNlXG59O1xuXG5tb2R1bGUuZXhwb3J0
cyA9IFJlYWN0RE9NRmVhdHVyZUZsYWdzO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdF
QlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RET01GZWF0dXJlRmxhZ3Mu
anNcbiAqKiBtb2R1bGUgaWQgPSAxNDFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8q
KlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBET01D
aGlsZHJlbk9wZXJhdGlvbnMgPSByZXF1aXJlKCcuL0RPTUNoaWxkcmVuT3BlcmF0aW9ucycpO1xu
dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRU
cmVlJyk7XG5cbi8qKlxuICogT3BlcmF0aW9ucyB1c2VkIHRvIHByb2Nlc3MgdXBkYXRlcyB0byBE
T00gbm9kZXMuXG4gKi9cbnZhciBSZWFjdERPTUlET3BlcmF0aW9ucyA9IHtcbiAgLyoqXG4gICAq
IFVwZGF0ZXMgYSBjb21wb25lbnQncyBjaGlsZHJlbiBieSBwcm9jZXNzaW5nIGEgc2VyaWVzIG9m
IHVwZGF0ZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7YXJyYXk8b2JqZWN0Pn0gdXBkYXRlcyBMaXN0
IG9mIHVwZGF0ZSBjb25maWd1cmF0aW9ucy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBkYW5n
ZXJvdXNseVByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6IGZ1bmN0aW9uIChwYXJlbnRJbnN0LCB1cGRh
dGVzKSB7XG4gICAgdmFyIG5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21J
bnN0YW5jZShwYXJlbnRJbnN0KTtcbiAgICBET01DaGlsZHJlbk9wZXJhdGlvbnMucHJvY2Vzc1Vw
ZGF0ZXMobm9kZSwgdXBkYXRlcyk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RE
T01JRE9wZXJhdGlvbnM7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09U
RVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTUlET3BlcmF0aW9ucy5qc1xuICoqIG1v
ZHVsZSBpZCA9IDE0MlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50
ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKSxcbiAgICBfYXNzaWduID0gcmVxdWly
ZSgnb2JqZWN0LWFzc2lnbicpO1xuXG52YXIgRE9NUHJvcGVydHlPcGVyYXRpb25zID0gcmVxdWly
ZSgnLi9ET01Qcm9wZXJ0eU9wZXJhdGlvbnMnKTtcbnZhciBMaW5rZWRWYWx1ZVV0aWxzID0gcmVx
dWlyZSgnLi9MaW5rZWRWYWx1ZVV0aWxzJyk7XG52YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0g
cmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVudFRyZWUnKTtcbnZhciBSZWFjdFVwZGF0ZXMgPSBy
ZXF1aXJlKCcuL1JlYWN0VXBkYXRlcycpO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJq
cy9saWIvaW52YXJpYW50Jyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5p
bmcnKTtcblxudmFyIGRpZFdhcm5WYWx1ZUxpbmsgPSBmYWxzZTtcbnZhciBkaWRXYXJuQ2hlY2tl
ZExpbmsgPSBmYWxzZTtcbnZhciBkaWRXYXJuVmFsdWVEZWZhdWx0VmFsdWUgPSBmYWxzZTtcbnZh
ciBkaWRXYXJuQ2hlY2tlZERlZmF1bHRDaGVja2VkID0gZmFsc2U7XG52YXIgZGlkV2FybkNvbnRy
b2xsZWRUb1VuY29udHJvbGxlZCA9IGZhbHNlO1xudmFyIGRpZFdhcm5VbmNvbnRyb2xsZWRUb0Nv
bnRyb2xsZWQgPSBmYWxzZTtcblxuZnVuY3Rpb24gZm9yY2VVcGRhdGVJZk1vdW50ZWQoKSB7XG4g
IGlmICh0aGlzLl9yb290Tm9kZUlEKSB7XG4gICAgLy8gRE9NIGNvbXBvbmVudCBpcyBzdGlsbCBt
b3VudGVkOyB1cGRhdGVcbiAgICBSZWFjdERPTUlucHV0LnVwZGF0ZVdyYXBwZXIodGhpcyk7XG4g
IH1cbn1cblxuZnVuY3Rpb24gaXNDb250cm9sbGVkKHByb3BzKSB7XG4gIHZhciB1c2VzQ2hlY2tl
ZCA9IHByb3BzLnR5cGUgPT09ICdjaGVja2JveCcgfHwgcHJvcHMudHlwZSA9PT0gJ3JhZGlvJztc
biAgcmV0dXJuIHVzZXNDaGVja2VkID8gcHJvcHMuY2hlY2tlZCAhPSBudWxsIDogcHJvcHMudmFs
dWUgIT0gbnVsbDtcbn1cblxuLyoqXG4gKiBJbXBsZW1lbnRzIGFuIDxpbnB1dD4gaG9zdCBjb21w
b25lbnQgdGhhdCBhbGxvd3Mgc2V0dGluZyB0aGVzZSBvcHRpb25hbFxuICogcHJvcHM6IGBjaGVj
a2VkYCwgYHZhbHVlYCwgYGRlZmF1bHRDaGVja2VkYCwgYW5kIGBkZWZhdWx0VmFsdWVgLlxuICpc
biAqIElmIGBjaGVja2VkYCBvciBgdmFsdWVgIGFyZSBub3Qgc3VwcGxpZWQgKG9yIG51bGwvdW5k
ZWZpbmVkKSwgdXNlciBhY3Rpb25zXG4gKiB0aGF0IGFmZmVjdCB0aGUgY2hlY2tlZCBzdGF0ZSBv
ciB2YWx1ZSB3aWxsIHRyaWdnZXIgdXBkYXRlcyB0byB0aGUgZWxlbWVudC5cbiAqXG4gKiBJZiB0
aGV5IGFyZSBzdXBwbGllZCAoYW5kIG5vdCBudWxsL3VuZGVmaW5lZCksIHRoZSByZW5kZXJlZCBl
bGVtZW50IHdpbGwgbm90XG4gKiB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQuIEluc3Rl
YWQsIHRoZSBwcm9wcyBtdXN0IGNoYW5nZSBpbiBvcmRlciBmb3JcbiAqIHRoZSByZW5kZXJlZCBl
bGVtZW50IHRvIGJlIHVwZGF0ZWQuXG4gKlxuICogVGhlIHJlbmRlcmVkIGVsZW1lbnQgd2lsbCBi
ZSBpbml0aWFsaXplZCBhcyB1bmNoZWNrZWQgKG9yIGBkZWZhdWx0Q2hlY2tlZGApXG4gKiB3aXRo
IGFuIGVtcHR5IHZhbHVlIChvciBgZGVmYXVsdFZhbHVlYCkuXG4gKlxuICogQHNlZSBodHRwOi8v
d3d3LnczLm9yZy9UUi8yMDEyL1dELWh0bWw1LTIwMTIxMDI1L3RoZS1pbnB1dC1lbGVtZW50Lmh0
bWxcbiAqL1xudmFyIFJlYWN0RE9NSW5wdXQgPSB7XG4gIGdldEhvc3RQcm9wczogZnVuY3Rpb24g
KGluc3QsIHByb3BzKSB7XG4gICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1
ZShwcm9wcyk7XG4gICAgdmFyIGNoZWNrZWQgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldENoZWNrZWQo
cHJvcHMpO1xuXG4gICAgdmFyIGhvc3RQcm9wcyA9IF9hc3NpZ24oe1xuICAgICAgLy8gTWFrZSBz
dXJlIHdlIHNldCAudHlwZSBiZWZvcmUgYW55IG90aGVyIHByb3BlcnRpZXMgKHNldHRpbmcgLnZh
bHVlXG4gICAgICAvLyBiZWZvcmUgLnR5cGUgbWVhbnMgLnZhbHVlIGlzIGxvc3QgaW4gSUUxMSBh
bmQgYmVsb3cpXG4gICAgICB0eXBlOiB1bmRlZmluZWQsXG4gICAgICAvLyBNYWtlIHN1cmUgd2Ug
c2V0IC5zdGVwIGJlZm9yZSAudmFsdWUgKHNldHRpbmcgLnZhbHVlIGJlZm9yZSAuc3RlcFxuICAg
ICAgLy8gbWVhbnMgLnZhbHVlIGlzIHJvdW5kZWQgb24gbW91bnQsIGJhc2VkIHVwb24gc3RlcCBw
cmVjaXNpb24pXG4gICAgICBzdGVwOiB1bmRlZmluZWQsXG4gICAgICAvLyBNYWtlIHN1cmUgd2Ug
c2V0IC5taW4gJiAubWF4IGJlZm9yZSAudmFsdWUgKHRvIGVuc3VyZSBwcm9wZXIgb3JkZXJcbiAg
ICAgIC8vIGluIGNvcm5lciBjYXNlcyBzdWNoIGFzIG1pbiBvciBtYXggZGVyaXZpbmcgZnJvbSB2
YWx1ZSwgZS5nLiBJc3N1ZSAjNzE3MClcbiAgICAgIG1pbjogdW5kZWZpbmVkLFxuICAgICAgbWF4
OiB1bmRlZmluZWRcbiAgICB9LCBwcm9wcywge1xuICAgICAgZGVmYXVsdENoZWNrZWQ6IHVuZGVm
aW5lZCxcbiAgICAgIGRlZmF1bHRWYWx1ZTogdW5kZWZpbmVkLFxuICAgICAgdmFsdWU6IHZhbHVl
ICE9IG51bGwgPyB2YWx1ZSA6IGluc3QuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUsXG4gICAg
ICBjaGVja2VkOiBjaGVja2VkICE9IG51bGwgPyBjaGVja2VkIDogaW5zdC5fd3JhcHBlclN0YXRl
LmluaXRpYWxDaGVja2VkLFxuICAgICAgb25DaGFuZ2U6IGluc3QuX3dyYXBwZXJTdGF0ZS5vbkNo
YW5nZVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGhvc3RQcm9wcztcbiAgfSxcblxuICBtb3VudFdy
YXBwZXI6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcykge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBMaW5rZWRWYWx1ZVV0aWxzLmNoZWNrUHJv
cFR5cGVzKCdpbnB1dCcsIHByb3BzLCBpbnN0Ll9jdXJyZW50RWxlbWVudC5fb3duZXIpO1xuXG4g
ICAgICB2YXIgb3duZXIgPSBpbnN0Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7XG5cbiAgICAgIGlm
IChwcm9wcy52YWx1ZUxpbmsgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2FyblZhbHVlTGluaykge1xu
ICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhm
YWxzZSwgJ2B2YWx1ZUxpbmtgIHByb3Agb24gYGlucHV0YCBpcyBkZXByZWNhdGVkOyBzZXQgYHZh
bHVlYCBhbmQgYG9uQ2hhbmdlYCBpbnN0ZWFkLicpIDogdm9pZCAwO1xuICAgICAgICBkaWRXYXJu
VmFsdWVMaW5rID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcy5jaGVja2VkTGluayAh
PT0gdW5kZWZpbmVkICYmICFkaWRXYXJuQ2hlY2tlZExpbmspIHtcbiAgICAgICAgcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdgY2hlY2tlZExp
bmtgIHByb3Agb24gYGlucHV0YCBpcyBkZXByZWNhdGVkOyBzZXQgYHZhbHVlYCBhbmQgYG9uQ2hh
bmdlYCBpbnN0ZWFkLicpIDogdm9pZCAwO1xuICAgICAgICBkaWRXYXJuQ2hlY2tlZExpbmsgPSB0
cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzLmNoZWNrZWQgIT09IHVuZGVmaW5lZCAmJiBw
cm9wcy5kZWZhdWx0Q2hlY2tlZCAhPT0gdW5kZWZpbmVkICYmICFkaWRXYXJuQ2hlY2tlZERlZmF1
bHRDaGVja2VkKSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicgPyB3YXJuaW5nKGZhbHNlLCAnJXMgY29udGFpbnMgYW4gaW5wdXQgb2YgdHlwZSAlcyB3aXRo
IGJvdGggY2hlY2tlZCBhbmQgZGVmYXVsdENoZWNrZWQgcHJvcHMuICcgKyAnSW5wdXQgZWxlbWVu
dHMgbXVzdCBiZSBlaXRoZXIgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgJyArICcoc3BlY2lm
eSBlaXRoZXIgdGhlIGNoZWNrZWQgcHJvcCwgb3IgdGhlIGRlZmF1bHRDaGVja2VkIHByb3AsIGJ1
dCBub3QgJyArICdib3RoKS4gRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVu
Y29udHJvbGxlZCBpbnB1dCAnICsgJ2VsZW1lbnQgYW5kIHJlbW92ZSBvbmUgb2YgdGhlc2UgcHJv
cHMuIE1vcmUgaW5mbzogJyArICdodHRwczovL2ZiLm1lL3JlYWN0LWNvbnRyb2xsZWQtY29tcG9u
ZW50cycsIG93bmVyICYmIG93bmVyLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnLCBwcm9wcy50
eXBlKSA6IHZvaWQgMDtcbiAgICAgICAgZGlkV2FybkNoZWNrZWREZWZhdWx0Q2hlY2tlZCA9IHRy
dWU7XG4gICAgICB9XG4gICAgICBpZiAocHJvcHMudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBwcm9w
cy5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2FyblZhbHVlRGVmYXVsdFZhbHVl
KSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKGZhbHNlLCAnJXMgY29udGFpbnMgYW4gaW5wdXQgb2YgdHlwZSAlcyB3aXRoIGJvdGggdmFs
dWUgYW5kIGRlZmF1bHRWYWx1ZSBwcm9wcy4gJyArICdJbnB1dCBlbGVtZW50cyBtdXN0IGJlIGVp
dGhlciBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCAnICsgJyhzcGVjaWZ5IGVpdGhlciB0aGUg
dmFsdWUgcHJvcCwgb3IgdGhlIGRlZmF1bHRWYWx1ZSBwcm9wLCBidXQgbm90ICcgKyAnYm90aCku
IERlY2lkZSBiZXR3ZWVuIHVzaW5nIGEgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgaW5wdXQg
JyArICdlbGVtZW50IGFuZCByZW1vdmUgb25lIG9mIHRoZXNlIHByb3BzLiBNb3JlIGluZm86ICcg
KyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC1jb250cm9sbGVkLWNvbXBvbmVudHMnLCBvd25lciAmJiBv
d25lci5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JywgcHJvcHMudHlwZSkgOiB2b2lkIDA7XG4g
ICAgICAgIGRpZFdhcm5WYWx1ZURlZmF1bHRWYWx1ZSA9IHRydWU7XG4gICAgICB9XG4gICAgfVxu
XG4gICAgdmFyIGRlZmF1bHRWYWx1ZSA9IHByb3BzLmRlZmF1bHRWYWx1ZTtcbiAgICBpbnN0Ll93
cmFwcGVyU3RhdGUgPSB7XG4gICAgICBpbml0aWFsQ2hlY2tlZDogcHJvcHMuY2hlY2tlZCAhPSBu
dWxsID8gcHJvcHMuY2hlY2tlZCA6IHByb3BzLmRlZmF1bHRDaGVja2VkLFxuICAgICAgaW5pdGlh
bFZhbHVlOiBwcm9wcy52YWx1ZSAhPSBudWxsID8gcHJvcHMudmFsdWUgOiBkZWZhdWx0VmFsdWUs
XG4gICAgICBsaXN0ZW5lcnM6IG51bGwsXG4gICAgICBvbkNoYW5nZTogX2hhbmRsZUNoYW5nZS5i
aW5kKGluc3QpLFxuICAgICAgY29udHJvbGxlZDogaXNDb250cm9sbGVkKHByb3BzKVxuICAgIH07
XG4gIH0sXG5cbiAgdXBkYXRlV3JhcHBlcjogZnVuY3Rpb24gKGluc3QpIHtcbiAgICB2YXIgcHJv
cHMgPSBpbnN0Ll9jdXJyZW50RWxlbWVudC5wcm9wcztcblxuICAgIGlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgY29udHJvbGxlZCA9IGlzQ29u
dHJvbGxlZChwcm9wcyk7XG4gICAgICB2YXIgb3duZXIgPSBpbnN0Ll9jdXJyZW50RWxlbWVudC5f
b3duZXI7XG5cbiAgICAgIGlmICghaW5zdC5fd3JhcHBlclN0YXRlLmNvbnRyb2xsZWQgJiYgY29u
dHJvbGxlZCAmJiAhZGlkV2FyblVuY29udHJvbGxlZFRvQ29udHJvbGxlZCkge1xuICAgICAgICBw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVz
IGlzIGNoYW5naW5nIGFuIHVuY29udHJvbGxlZCBpbnB1dCBvZiB0eXBlICVzIHRvIGJlIGNvbnRy
b2xsZWQuICcgKyAnSW5wdXQgZWxlbWVudHMgc2hvdWxkIG5vdCBzd2l0Y2ggZnJvbSB1bmNvbnRy
b2xsZWQgdG8gY29udHJvbGxlZCAob3IgdmljZSB2ZXJzYSkuICcgKyAnRGVjaWRlIGJldHdlZW4g
dXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCBpbnB1dCAnICsgJ2VsZW1lbnQgZm9y
IHRoZSBsaWZldGltZSBvZiB0aGUgY29tcG9uZW50LiBNb3JlIGluZm86IGh0dHBzOi8vZmIubWUv
cmVhY3QtY29udHJvbGxlZC1jb21wb25lbnRzJywgb3duZXIgJiYgb3duZXIuZ2V0TmFtZSgpIHx8
ICdBIGNvbXBvbmVudCcsIHByb3BzLnR5cGUpIDogdm9pZCAwO1xuICAgICAgICBkaWRXYXJuVW5j
b250cm9sbGVkVG9Db250cm9sbGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChpbnN0Ll93
cmFwcGVyU3RhdGUuY29udHJvbGxlZCAmJiAhY29udHJvbGxlZCAmJiAhZGlkV2FybkNvbnRyb2xs
ZWRUb1VuY29udHJvbGxlZCkge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzIGlzIGNoYW5naW5nIGEgY29udHJvbGxlZCBp
bnB1dCBvZiB0eXBlICVzIHRvIGJlIHVuY29udHJvbGxlZC4gJyArICdJbnB1dCBlbGVtZW50cyBz
aG91bGQgbm90IHN3aXRjaCBmcm9tIGNvbnRyb2xsZWQgdG8gdW5jb250cm9sbGVkIChvciB2aWNl
IHZlcnNhKS4gJyArICdEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250
cm9sbGVkIGlucHV0ICcgKyAnZWxlbWVudCBmb3IgdGhlIGxpZmV0aW1lIG9mIHRoZSBjb21wb25l
bnQuIE1vcmUgaW5mbzogaHR0cHM6Ly9mYi5tZS9yZWFjdC1jb250cm9sbGVkLWNvbXBvbmVudHMn
LCBvd25lciAmJiBvd25lci5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JywgcHJvcHMudHlwZSkg
OiB2b2lkIDA7XG4gICAgICAgIGRpZFdhcm5Db250cm9sbGVkVG9VbmNvbnRyb2xsZWQgPSB0cnVl
O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFRPRE86IFNob3VsZG4ndCB0aGlzIGJlIGdldENo
ZWNrZWQocHJvcHMpP1xuICAgIHZhciBjaGVja2VkID0gcHJvcHMuY2hlY2tlZDtcbiAgICBpZiAo
Y2hlY2tlZCAhPSBudWxsKSB7XG4gICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVG
b3JQcm9wZXJ0eShSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0
KSwgJ2NoZWNrZWQnLCBjaGVja2VkIHx8IGZhbHNlKTtcbiAgICB9XG5cbiAgICB2YXIgbm9kZSA9
IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpO1xuICAgIHZh
ciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpO1xuICAgIGlmICh2YWx1
ZSAhPSBudWxsKSB7XG4gICAgICBpZiAodmFsdWUgPT09IDAgJiYgbm9kZS52YWx1ZSA9PT0gJycp
IHtcbiAgICAgICAgbm9kZS52YWx1ZSA9ICcwJztcbiAgICAgICAgLy8gTm90ZTogSUU5IHJlcG9y
dHMgYSBudW1iZXIgaW5wdXRzIGFzICd0ZXh0Jywgc28gY2hlY2sgcHJvcHMgaW5zdGVhZC5cbiAg
ICAgIH0gZWxzZSBpZiAocHJvcHMudHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgLy8gU2lt
dWxhdGUgYGlucHV0LnZhbHVlQXNOdW1iZXJgLiBJRTkgZG9lcyBub3Qgc3VwcG9ydCBpdFxuICAg
ICAgICB2YXIgdmFsdWVBc051bWJlciA9IHBhcnNlRmxvYXQobm9kZS52YWx1ZSwgMTApIHx8IDA7
XG5cbiAgICAgICAgaWYgKFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAg
ICAgICAgdmFsdWUgIT0gdmFsdWVBc051bWJlciB8fFxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJs
ZS1uZXh0LWxpbmVcbiAgICAgICAgdmFsdWUgPT0gdmFsdWVBc051bWJlciAmJiBub2RlLnZhbHVl
ICE9IHZhbHVlKSB7XG4gICAgICAgICAgLy8gQ2FzdCBgdmFsdWVgIHRvIGEgc3RyaW5nIHRvIGVu
c3VyZSB0aGUgdmFsdWUgaXMgc2V0IGNvcnJlY3RseS4gV2hpbGVcbiAgICAgICAgICAvLyBicm93
c2VycyB0eXBpY2FsbHkgZG8gdGhpcyBhcyBuZWNlc3NhcnksIGpzZG9tIGRvZXNuJ3QuXG4gICAg
ICAgICAgbm9kZS52YWx1ZSA9ICcnICsgdmFsdWU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBp
ZiAobm9kZS52YWx1ZSAhPT0gJycgKyB2YWx1ZSkge1xuICAgICAgICAvLyBDYXN0IGB2YWx1ZWAg
dG8gYSBzdHJpbmcgdG8gZW5zdXJlIHRoZSB2YWx1ZSBpcyBzZXQgY29ycmVjdGx5LiBXaGlsZVxu
ICAgICAgICAvLyBicm93c2VycyB0eXBpY2FsbHkgZG8gdGhpcyBhcyBuZWNlc3NhcnksIGpzZG9t
IGRvZXNuJ3QuXG4gICAgICAgIG5vZGUudmFsdWUgPSAnJyArIHZhbHVlO1xuICAgICAgfVxuICAg
IH0gZWxzZSB7XG4gICAgICBpZiAocHJvcHMudmFsdWUgPT0gbnVsbCAmJiBwcm9wcy5kZWZhdWx0
VmFsdWUgIT0gbnVsbCkge1xuICAgICAgICAvLyBJbiBDaHJvbWUsIGFzc2lnbmluZyBkZWZhdWx0
VmFsdWUgdG8gY2VydGFpbiBpbnB1dCB0eXBlcyB0cmlnZ2VycyBpbnB1dCB2YWxpZGF0aW9uLlxu
ICAgICAgICAvLyBGb3IgbnVtYmVyIGlucHV0cywgdGhlIGRpc3BsYXkgdmFsdWUgbG9zZXMgdHJh
aWxpbmcgZGVjaW1hbCBwb2ludHMuIEZvciBlbWFpbCBpbnB1dHMsXG4gICAgICAgIC8vIENocm9t
ZSByYWlzZXMgXCJUaGUgc3BlY2lmaWVkIHZhbHVlIDx4PiBpcyBub3QgYSB2YWxpZCBlbWFpbCBh
ZGRyZXNzXCIuXG4gICAgICAgIC8vXG4gICAgICAgIC8vIEhlcmUgd2UgY2hlY2sgdG8gc2VlIGlm
IHRoZSBkZWZhdWx0VmFsdWUgaGFzIGFjdHVhbGx5IGNoYW5nZWQsIGF2b2lkaW5nIHRoZXNlIHBy
b2JsZW1zXG4gICAgICAgIC8vIHdoZW4gdGhlIHVzZXIgaXMgaW5wdXR0aW5nIHRleHRcbiAgICAg
ICAgLy9cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vl
cy83MjUzXG4gICAgICAgIGlmIChub2RlLmRlZmF1bHRWYWx1ZSAhPT0gJycgKyBwcm9wcy5kZWZh
dWx0VmFsdWUpIHtcbiAgICAgICAgICBub2RlLmRlZmF1bHRWYWx1ZSA9ICcnICsgcHJvcHMuZGVm
YXVsdFZhbHVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAocHJvcHMuY2hlY2tlZCA9
PSBudWxsICYmIHByb3BzLmRlZmF1bHRDaGVja2VkICE9IG51bGwpIHtcbiAgICAgICAgbm9kZS5k
ZWZhdWx0Q2hlY2tlZCA9ICEhcHJvcHMuZGVmYXVsdENoZWNrZWQ7XG4gICAgICB9XG4gICAgfVxu
ICB9LFxuXG4gIHBvc3RNb3VudFdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgdmFyIHBy
b3BzID0gaW5zdC5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cbiAgICAvLyBUaGlzIGlzIGluIHBv
c3RNb3VudCBiZWNhdXNlIHdlIG5lZWQgYWNjZXNzIHRvIHRoZSBET00gbm9kZSwgd2hpY2ggaXMg
bm90XG4gICAgLy8gYXZhaWxhYmxlIHVudGlsIGFmdGVyIHRoZSBjb21wb25lbnQgaGFzIG1vdW50
ZWQuXG4gICAgdmFyIG5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0
YW5jZShpbnN0KTtcblxuICAgIC8vIERldGFjaCB2YWx1ZSBmcm9tIGRlZmF1bHRWYWx1ZS4gV2Ug
d29uJ3QgZG8gYW55dGhpbmcgaWYgd2UncmUgd29ya2luZyBvblxuICAgIC8vIHN1Ym1pdCBvciBy
ZXNldCBpbnB1dHMgYXMgdGhvc2UgdmFsdWVzICYgZGVmYXVsdFZhbHVlcyBhcmUgbGlua2VkLiBU
aGV5XG4gICAgLy8gYXJlIG5vdCByZXNldGFibGUgbm9kZXMgc28gdGhpcyBvcGVyYXRpb24gZG9l
c24ndCBtYXR0ZXIgYW5kIGFjdHVhbGx5XG4gICAgLy8gcmVtb3ZlcyBicm93c2VyLWRlZmF1bHQg
dmFsdWVzIChlZyBcIlN1Ym1pdCBRdWVyeVwiKSB3aGVuIG5vIHZhbHVlIGlzXG4gICAgLy8gcHJv
dmlkZWQuXG5cbiAgICBzd2l0Y2ggKHByb3BzLnR5cGUpIHtcbiAgICAgIGNhc2UgJ3N1Ym1pdCc6
XG4gICAgICBjYXNlICdyZXNldCc6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnY29sb3In
OlxuICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICBjYXNlICdkYXRldGltZSc6XG4gICAgICBjYXNl
ICdkYXRldGltZS1sb2NhbCc6XG4gICAgICBjYXNlICdtb250aCc6XG4gICAgICBjYXNlICd0aW1l
JzpcbiAgICAgIGNhc2UgJ3dlZWsnOlxuICAgICAgICAvLyBUaGlzIGZpeGVzIHRoZSBuby1zaG93
IGlzc3VlIG9uIGlPUyBTYWZhcmkgYW5kIEFuZHJvaWQgQ2hyb21lOlxuICAgICAgICAvLyBodHRw
czovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzcyMzNcbiAgICAgICAgbm9kZS52
YWx1ZSA9ICcnO1xuICAgICAgICBub2RlLnZhbHVlID0gbm9kZS5kZWZhdWx0VmFsdWU7XG4gICAg
ICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgbm9kZS52YWx1ZSA9IG5vZGUudmFs
dWU7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIC8vIE5vcm1hbGx5LCB3ZSdkIGp1c3Qg
ZG8gYG5vZGUuY2hlY2tlZCA9IG5vZGUuY2hlY2tlZGAgdXBvbiBpbml0aWFsIG1vdW50LCBsZXNz
IHRoaXMgYnVnXG4gICAgLy8gdGhpcyBpcyBuZWVkZWQgdG8gd29yayBhcm91bmQgYSBjaHJvbWUg
YnVnIHdoZXJlIHNldHRpbmcgZGVmYXVsdENoZWNrZWRcbiAgICAvLyB3aWxsIHNvbWV0aW1lcyBp
bmZsdWVuY2UgdGhlIHZhbHVlIG9mIGNoZWNrZWQgKGV2ZW4gYWZ0ZXIgZGV0YWNobWVudCkuXG4g
ICAgLy8gUmVmZXJlbmNlOiBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNz
dWVzL2RldGFpbD9pZD02MDg0MTZcbiAgICAvLyBXZSBuZWVkIHRvIHRlbXBvcmFyaWx5IHVuc2V0
IG5hbWUgdG8gYXZvaWQgZGlzcnVwdGluZyByYWRpbyBidXR0b24gZ3JvdXBzLlxuICAgIHZhciBu
YW1lID0gbm9kZS5uYW1lO1xuICAgIGlmIChuYW1lICE9PSAnJykge1xuICAgICAgbm9kZS5uYW1l
ID0gJyc7XG4gICAgfVxuICAgIG5vZGUuZGVmYXVsdENoZWNrZWQgPSAhbm9kZS5kZWZhdWx0Q2hl
Y2tlZDtcbiAgICBub2RlLmRlZmF1bHRDaGVja2VkID0gIW5vZGUuZGVmYXVsdENoZWNrZWQ7XG4g
ICAgaWYgKG5hbWUgIT09ICcnKSB7XG4gICAgICBub2RlLm5hbWUgPSBuYW1lO1xuICAgIH1cbiAg
fVxufTtcblxuZnVuY3Rpb24gX2hhbmRsZUNoYW5nZShldmVudCkge1xuICB2YXIgcHJvcHMgPSB0
aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztcblxuICB2YXIgcmV0dXJuVmFsdWUgPSBMaW5rZWRW
YWx1ZVV0aWxzLmV4ZWN1dGVPbkNoYW5nZShwcm9wcywgZXZlbnQpO1xuXG4gIC8vIEhlcmUgd2Ug
dXNlIGFzYXAgdG8gd2FpdCB1bnRpbCBhbGwgdXBkYXRlcyBoYXZlIHByb3BhZ2F0ZWQsIHdoaWNo
XG4gIC8vIGlzIGltcG9ydGFudCB3aGVuIHVzaW5nIGNvbnRyb2xsZWQgY29tcG9uZW50cyB3aXRo
aW4gbGF5ZXJzOlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVz
LzE2OThcbiAgUmVhY3RVcGRhdGVzLmFzYXAoZm9yY2VVcGRhdGVJZk1vdW50ZWQsIHRoaXMpO1xu
XG4gIHZhciBuYW1lID0gcHJvcHMubmFtZTtcbiAgaWYgKHByb3BzLnR5cGUgPT09ICdyYWRpbycg
JiYgbmFtZSAhPSBudWxsKSB7XG4gICAgdmFyIHJvb3ROb2RlID0gUmVhY3RET01Db21wb25lbnRU
cmVlLmdldE5vZGVGcm9tSW5zdGFuY2UodGhpcyk7XG4gICAgdmFyIHF1ZXJ5Um9vdCA9IHJvb3RO
b2RlO1xuXG4gICAgd2hpbGUgKHF1ZXJ5Um9vdC5wYXJlbnROb2RlKSB7XG4gICAgICBxdWVyeVJv
b3QgPSBxdWVyeVJvb3QucGFyZW50Tm9kZTtcbiAgICB9XG5cbiAgICAvLyBJZiBgcm9vdE5vZGUu
Zm9ybWAgd2FzIG5vbi1udWxsLCB0aGVuIHdlIGNvdWxkIHRyeSBgZm9ybS5lbGVtZW50c2AsXG4g
ICAgLy8gYnV0IHRoYXQgc29tZXRpbWVzIGJlaGF2ZXMgc3RyYW5nZWx5IGluIElFOC4gV2UgY291
bGQgYWxzbyB0cnkgdXNpbmdcbiAgICAvLyBgZm9ybS5nZXRFbGVtZW50c0J5TmFtZWAsIGJ1dCB0
aGF0IHdpbGwgb25seSByZXR1cm4gZGlyZWN0IGNoaWxkcmVuXG4gICAgLy8gYW5kIHdvbid0IGlu
Y2x1ZGUgaW5wdXRzIHRoYXQgdXNlIHRoZSBIVE1MNSBgZm9ybT1gIGF0dHJpYnV0ZS4gU2luY2Vc
biAgICAvLyB0aGUgaW5wdXQgbWlnaHQgbm90IGV2ZW4gYmUgaW4gYSBmb3JtLCBsZXQncyBqdXN0
IHVzZSB0aGUgZ2xvYmFsXG4gICAgLy8gYHF1ZXJ5U2VsZWN0b3JBbGxgIHRvIGVuc3VyZSB3ZSBk
b24ndCBtaXNzIGFueXRoaW5nLlxuICAgIHZhciBncm91cCA9IHF1ZXJ5Um9vdC5xdWVyeVNlbGVj
dG9yQWxsKCdpbnB1dFtuYW1lPScgKyBKU09OLnN0cmluZ2lmeSgnJyArIG5hbWUpICsgJ11bdHlw
ZT1cInJhZGlvXCJdJyk7XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGdyb3VwLmxlbmd0aDsg
aSsrKSB7XG4gICAgICB2YXIgb3RoZXJOb2RlID0gZ3JvdXBbaV07XG4gICAgICBpZiAob3RoZXJO
b2RlID09PSByb290Tm9kZSB8fCBvdGhlck5vZGUuZm9ybSAhPT0gcm9vdE5vZGUuZm9ybSkge1xu
ICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIC8vIFRoaXMgd2lsbCB0aHJvdyBpZiBy
YWRpbyBidXR0b25zIHJlbmRlcmVkIGJ5IGRpZmZlcmVudCBjb3BpZXMgb2YgUmVhY3RcbiAgICAg
IC8vIGFuZCB0aGUgc2FtZSBuYW1lIGFyZSByZW5kZXJlZCBpbnRvIHRoZSBzYW1lIGZvcm0gKHNh
bWUgYXMgIzE5MzkpLlxuICAgICAgLy8gVGhhdCdzIHByb2JhYmx5IG9rYXk7IHdlIGRvbid0IHN1
cHBvcnQgaXQganVzdCBhcyB3ZSBkb24ndCBzdXBwb3J0XG4gICAgICAvLyBtaXhpbmcgUmVhY3Qg
cmFkaW8gYnV0dG9ucyB3aXRoIG5vbi1SZWFjdCBvbmVzLlxuICAgICAgdmFyIG90aGVySW5zdGFu
Y2UgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShvdGhlck5vZGUp
O1xuICAgICAgIW90aGVySW5zdGFuY2UgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RET01JbnB1dDogTWl4aW5nIFJlYWN0IGFu
ZCBub24tUmVhY3QgcmFkaW8gaW5wdXRzIHdpdGggdGhlIHNhbWUgYG5hbWVgIGlzIG5vdCBzdXBw
b3J0ZWQuJykgOiBfcHJvZEludmFyaWFudCgnOTAnKSA6IHZvaWQgMDtcbiAgICAgIC8vIElmIHRo
aXMgaXMgYSBjb250cm9sbGVkIHJhZGlvIGJ1dHRvbiBncm91cCwgZm9yY2luZyB0aGUgaW5wdXQg
dGhhdFxuICAgICAgLy8gd2FzIHByZXZpb3VzbHkgY2hlY2tlZCB0byB1cGRhdGUgd2lsbCBjYXVz
ZSBpdCB0byBiZSBjb21lIHJlLWNoZWNrZWRcbiAgICAgIC8vIGFzIGFwcHJvcHJpYXRlLlxuICAg
ICAgUmVhY3RVcGRhdGVzLmFzYXAoZm9yY2VVcGRhdGVJZk1vdW50ZWQsIG90aGVySW5zdGFuY2Up
O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXR1cm5WYWx1ZTtcbn1cblxubW9kdWxlLmV4cG9y
dHMgPSBSZWFjdERPTUlucHV0O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sg
Rk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RET01JbnB1dC5qc1xuICoqIG1vZHVs
ZSBpZCA9IDE0M1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
biAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9hc3NpZ24gPSByZXF1aXJl
KCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBSZWFjdCA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9SZWFj
dCcpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21w
b25lbnRUcmVlJyk7XG52YXIgUmVhY3RET01TZWxlY3QgPSByZXF1aXJlKCcuL1JlYWN0RE9NU2Vs
ZWN0Jyk7XG5cbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xudmFy
IGRpZFdhcm5JbnZhbGlkT3B0aW9uQ2hpbGRyZW4gPSBmYWxzZTtcblxuZnVuY3Rpb24gZmxhdHRl
bkNoaWxkcmVuKGNoaWxkcmVuKSB7XG4gIHZhciBjb250ZW50ID0gJyc7XG5cbiAgLy8gRmxhdHRl
biBjaGlsZHJlbiBhbmQgd2FybiBpZiB0aGV5IGFyZW4ndCBzdHJpbmdzIG9yIG51bWJlcnM7XG4g
IC8vIGludmFsaWQgdHlwZXMgYXJlIGlnbm9yZWQuXG4gIFJlYWN0LkNoaWxkcmVuLmZvckVhY2go
Y2hpbGRyZW4sIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIGlmIChjaGlsZCA9PSBudWxsKSB7XG4g
ICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0eXBlb2YgY2hpbGQgPT09ICdzdHJpbmcnIHx8
IHR5cGVvZiBjaGlsZCA9PT0gJ251bWJlcicpIHtcbiAgICAgIGNvbnRlbnQgKz0gY2hpbGQ7XG4g
ICAgfSBlbHNlIGlmICghZGlkV2FybkludmFsaWRPcHRpb25DaGlsZHJlbikge1xuICAgICAgZGlk
V2FybkludmFsaWRPcHRpb25DaGlsZHJlbiA9IHRydWU7XG4gICAgICBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ09ubHkgc3RyaW5ncyBhbmQg
bnVtYmVycyBhcmUgc3VwcG9ydGVkIGFzIDxvcHRpb24+IGNoaWxkcmVuLicpIDogdm9pZCAwO1xu
ICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIGNvbnRlbnQ7XG59XG5cbi8qKlxuICogSW1wbGVtZW50
cyBhbiA8b3B0aW9uPiBob3N0IGNvbXBvbmVudCB0aGF0IHdhcm5zIHdoZW4gYHNlbGVjdGVkYCBp
cyBzZXQuXG4gKi9cbnZhciBSZWFjdERPTU9wdGlvbiA9IHtcbiAgbW91bnRXcmFwcGVyOiBmdW5j
dGlvbiAoaW5zdCwgcHJvcHMsIGhvc3RQYXJlbnQpIHtcbiAgICAvLyBUT0RPICh5dW5nc3RlcnMp
OiBSZW1vdmUgc3VwcG9ydCBmb3IgYHNlbGVjdGVkYCBpbiA8b3B0aW9uPi5cbiAgICBpZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcocHJvcHMuc2VsZWN0ZWQgPT0gbnVs
bCwgJ1VzZSB0aGUgYGRlZmF1bHRWYWx1ZWAgb3IgYHZhbHVlYCBwcm9wcyBvbiA8c2VsZWN0PiBp
bnN0ZWFkIG9mICcgKyAnc2V0dGluZyBgc2VsZWN0ZWRgIG9uIDxvcHRpb24+LicpIDogdm9pZCAw
O1xuICAgIH1cblxuICAgIC8vIExvb2sgdXAgd2hldGhlciB0aGlzIG9wdGlvbiBpcyAnc2VsZWN0
ZWQnXG4gICAgdmFyIHNlbGVjdFZhbHVlID0gbnVsbDtcbiAgICBpZiAoaG9zdFBhcmVudCAhPSBu
dWxsKSB7XG4gICAgICB2YXIgc2VsZWN0UGFyZW50ID0gaG9zdFBhcmVudDtcblxuICAgICAgaWYg
KHNlbGVjdFBhcmVudC5fdGFnID09PSAnb3B0Z3JvdXAnKSB7XG4gICAgICAgIHNlbGVjdFBhcmVu
dCA9IHNlbGVjdFBhcmVudC5faG9zdFBhcmVudDtcbiAgICAgIH1cblxuICAgICAgaWYgKHNlbGVj
dFBhcmVudCAhPSBudWxsICYmIHNlbGVjdFBhcmVudC5fdGFnID09PSAnc2VsZWN0Jykge1xuICAg
ICAgICBzZWxlY3RWYWx1ZSA9IFJlYWN0RE9NU2VsZWN0LmdldFNlbGVjdFZhbHVlQ29udGV4dChz
ZWxlY3RQYXJlbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIElmIHRoZSB2YWx1ZSBpcyBu
dWxsIChlLmcuLCBubyBzcGVjaWZpZWQgdmFsdWUgb3IgYWZ0ZXIgaW5pdGlhbCBtb3VudClcbiAg
ICAvLyBvciBtaXNzaW5nIChlLmcuLCBmb3IgPGRhdGFsaXN0PiksIHdlIGRvbid0IGNoYW5nZSBw
cm9wcy5zZWxlY3RlZFxuICAgIHZhciBzZWxlY3RlZCA9IG51bGw7XG4gICAgaWYgKHNlbGVjdFZh
bHVlICE9IG51bGwpIHtcbiAgICAgIHZhciB2YWx1ZTtcbiAgICAgIGlmIChwcm9wcy52YWx1ZSAh
PSBudWxsKSB7XG4gICAgICAgIHZhbHVlID0gcHJvcHMudmFsdWUgKyAnJztcbiAgICAgIH0gZWxz
ZSB7XG4gICAgICAgIHZhbHVlID0gZmxhdHRlbkNoaWxkcmVuKHByb3BzLmNoaWxkcmVuKTtcbiAg
ICAgIH1cbiAgICAgIHNlbGVjdGVkID0gZmFsc2U7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShz
ZWxlY3RWYWx1ZSkpIHtcbiAgICAgICAgLy8gbXVsdGlwbGVcbiAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBzZWxlY3RWYWx1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGlmICgnJyArIHNl
bGVjdFZhbHVlW2ldID09PSB2YWx1ZSkge1xuICAgICAgICAgICAgc2VsZWN0ZWQgPSB0cnVlO1xu
ICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Ug
e1xuICAgICAgICBzZWxlY3RlZCA9ICcnICsgc2VsZWN0VmFsdWUgPT09IHZhbHVlO1xuICAgICAg
fVxuICAgIH1cblxuICAgIGluc3QuX3dyYXBwZXJTdGF0ZSA9IHsgc2VsZWN0ZWQ6IHNlbGVjdGVk
IH07XG4gIH0sXG5cbiAgcG9zdE1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QpIHtcbiAgICAv
LyB2YWx1ZT1cIlwiIHNob3VsZCBtYWtlIGEgdmFsdWUgYXR0cmlidXRlICgjNjIxOSlcbiAgICB2
YXIgcHJvcHMgPSBpbnN0Ll9jdXJyZW50RWxlbWVudC5wcm9wcztcbiAgICBpZiAocHJvcHMudmFs
dWUgIT0gbnVsbCkge1xuICAgICAgdmFyIG5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0
Tm9kZUZyb21JbnN0YW5jZShpbnN0KTtcbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCd2YWx1ZScs
IHByb3BzLnZhbHVlKTtcbiAgICB9XG4gIH0sXG5cbiAgZ2V0SG9zdFByb3BzOiBmdW5jdGlvbiAo
aW5zdCwgcHJvcHMpIHtcbiAgICB2YXIgaG9zdFByb3BzID0gX2Fzc2lnbih7IHNlbGVjdGVkOiB1
bmRlZmluZWQsIGNoaWxkcmVuOiB1bmRlZmluZWQgfSwgcHJvcHMpO1xuXG4gICAgLy8gUmVhZCBz
dGF0ZSBvbmx5IGZyb20gaW5pdGlhbCBtb3VudCBiZWNhdXNlIDxzZWxlY3Q+IHVwZGF0ZXMgdmFs
dWVcbiAgICAvLyBtYW51YWxseTsgd2UgbmVlZCB0aGUgaW5pdGlhbCBzdGF0ZSBvbmx5IGZvciBz
ZXJ2ZXIgcmVuZGVyaW5nXG4gICAgaWYgKGluc3QuX3dyYXBwZXJTdGF0ZS5zZWxlY3RlZCAhPSBu
dWxsKSB7XG4gICAgICBob3N0UHJvcHMuc2VsZWN0ZWQgPSBpbnN0Ll93cmFwcGVyU3RhdGUuc2Vs
ZWN0ZWQ7XG4gICAgfVxuXG4gICAgdmFyIGNvbnRlbnQgPSBmbGF0dGVuQ2hpbGRyZW4ocHJvcHMu
Y2hpbGRyZW4pO1xuXG4gICAgaWYgKGNvbnRlbnQpIHtcbiAgICAgIGhvc3RQcm9wcy5jaGlsZHJl
biA9IGNvbnRlbnQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGhvc3RQcm9wcztcbiAgfVxufTtcblxu
bW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTU9wdGlvbjtcblxuXG4vKioqKioqKioqKioqKioqKipc
biAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0RE9NT3B0aW9u
LmpzXG4gKiogbW9kdWxlIGlkID0gMTQ0XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIv
KipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXhl
Y3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVu
dCcpO1xuXG52YXIgZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldCA9IHJlcXVpcmUoJy4vZ2V0Tm9k
ZUZvckNoYXJhY3Rlck9mZnNldCcpO1xudmFyIGdldFRleHRDb250ZW50QWNjZXNzb3IgPSByZXF1
aXJlKCcuL2dldFRleHRDb250ZW50QWNjZXNzb3InKTtcblxuLyoqXG4gKiBXaGlsZSBgaXNDb2xs
YXBzZWRgIGlzIGF2YWlsYWJsZSBvbiB0aGUgU2VsZWN0aW9uIG9iamVjdCBhbmQgYGNvbGxhcHNl
ZGBcbiAqIGlzIGF2YWlsYWJsZSBvbiB0aGUgUmFuZ2Ugb2JqZWN0LCBJRTExIHNvbWV0aW1lcyBn
ZXRzIHRoZW0gd3JvbmcuXG4gKiBJZiB0aGUgYW5jaG9yL2ZvY3VzIG5vZGVzIGFuZCBvZmZzZXRz
IGFyZSB0aGUgc2FtZSwgdGhlIHJhbmdlIGlzIGNvbGxhcHNlZC5cbiAqL1xuZnVuY3Rpb24gaXND
b2xsYXBzZWQoYW5jaG9yTm9kZSwgYW5jaG9yT2Zmc2V0LCBmb2N1c05vZGUsIGZvY3VzT2Zmc2V0
KSB7XG4gIHJldHVybiBhbmNob3JOb2RlID09PSBmb2N1c05vZGUgJiYgYW5jaG9yT2Zmc2V0ID09
PSBmb2N1c09mZnNldDtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIGFwcHJvcHJpYXRlIGFuY2hvciBh
bmQgZm9jdXMgbm9kZS9vZmZzZXQgcGFpcnMgZm9yIElFLlxuICpcbiAqIFRoZSBjYXRjaCBoZXJl
IGlzIHRoYXQgSUUncyBzZWxlY3Rpb24gQVBJIGRvZXNuJ3QgcHJvdmlkZSBpbmZvcm1hdGlvblxu
ICogYWJvdXQgd2hldGhlciB0aGUgc2VsZWN0aW9uIGlzIGZvcndhcmQgb3IgYmFja3dhcmQsIHNv
IHdlIGhhdmUgdG9cbiAqIGJlaGF2ZSBhcyB0aG91Z2ggaXQncyBhbHdheXMgZm9yd2FyZC5cbiAq
XG4gKiBJRSB0ZXh0IGRpZmZlcnMgZnJvbSBtb2Rlcm4gc2VsZWN0aW9uIGluIHRoYXQgaXQgYmVo
YXZlcyBhcyB0aG91Z2hcbiAqIGJsb2NrIGVsZW1lbnRzIGVuZCB3aXRoIGEgbmV3IGxpbmUuIFRo
aXMgbWVhbnMgY2hhcmFjdGVyIG9mZnNldHMgd2lsbFxuICogZGlmZmVyIGJldHdlZW4gdGhlIHR3
byBBUElzLlxuICpcbiAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuICogQHJldHVybiB7b2Jq
ZWN0fVxuICovXG5mdW5jdGlvbiBnZXRJRU9mZnNldHMobm9kZSkge1xuICB2YXIgc2VsZWN0aW9u
ID0gZG9jdW1lbnQuc2VsZWN0aW9uO1xuICB2YXIgc2VsZWN0ZWRSYW5nZSA9IHNlbGVjdGlvbi5j
cmVhdGVSYW5nZSgpO1xuICB2YXIgc2VsZWN0ZWRMZW5ndGggPSBzZWxlY3RlZFJhbmdlLnRleHQu
bGVuZ3RoO1xuXG4gIC8vIER1cGxpY2F0ZSBzZWxlY3Rpb24gc28gd2UgY2FuIG1vdmUgcmFuZ2Ug
d2l0aG91dCBicmVha2luZyB1c2VyIHNlbGVjdGlvbi5cbiAgdmFyIGZyb21TdGFydCA9IHNlbGVj
dGVkUmFuZ2UuZHVwbGljYXRlKCk7XG4gIGZyb21TdGFydC5tb3ZlVG9FbGVtZW50VGV4dChub2Rl
KTtcbiAgZnJvbVN0YXJ0LnNldEVuZFBvaW50KCdFbmRUb1N0YXJ0Jywgc2VsZWN0ZWRSYW5nZSk7
XG5cbiAgdmFyIHN0YXJ0T2Zmc2V0ID0gZnJvbVN0YXJ0LnRleHQubGVuZ3RoO1xuICB2YXIgZW5k
T2Zmc2V0ID0gc3RhcnRPZmZzZXQgKyBzZWxlY3RlZExlbmd0aDtcblxuICByZXR1cm4ge1xuICAg
IHN0YXJ0OiBzdGFydE9mZnNldCxcbiAgICBlbmQ6IGVuZE9mZnNldFxuICB9O1xufVxuXG4vKipc
biAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuICogQHJldHVybiB7P29iamVjdH1cbiAqL1xu
ZnVuY3Rpb24gZ2V0TW9kZXJuT2Zmc2V0cyhub2RlKSB7XG4gIHZhciBzZWxlY3Rpb24gPSB3aW5k
b3cuZ2V0U2VsZWN0aW9uICYmIHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcblxuICBpZiAoIXNlbGVj
dGlvbiB8fCBzZWxlY3Rpb24ucmFuZ2VDb3VudCA9PT0gMCkge1xuICAgIHJldHVybiBudWxsO1xu
ICB9XG5cbiAgdmFyIGFuY2hvck5vZGUgPSBzZWxlY3Rpb24uYW5jaG9yTm9kZTtcbiAgdmFyIGFu
Y2hvck9mZnNldCA9IHNlbGVjdGlvbi5hbmNob3JPZmZzZXQ7XG4gIHZhciBmb2N1c05vZGUgPSBz
ZWxlY3Rpb24uZm9jdXNOb2RlO1xuICB2YXIgZm9jdXNPZmZzZXQgPSBzZWxlY3Rpb24uZm9jdXNP
ZmZzZXQ7XG5cbiAgdmFyIGN1cnJlbnRSYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApO1xu
XG4gIC8vIEluIEZpcmVmb3gsIHJhbmdlLnN0YXJ0Q29udGFpbmVyIGFuZCByYW5nZS5lbmRDb250
YWluZXIgY2FuIGJlIFwiYW5vbnltb3VzXG4gIC8vIGRpdnNcIiwgZS5nLiB0aGUgdXAvZG93biBi
dXR0b25zIG9uIGFuIDxpbnB1dCB0eXBlPVwibnVtYmVyXCI+LiBBbm9ueW1vdXNcbiAgLy8gZGl2
cyBkbyBub3Qgc2VlbSB0byBleHBvc2UgcHJvcGVydGllcywgdHJpZ2dlcmluZyBhIFwiUGVybWlz
c2lvbiBkZW5pZWRcbiAgLy8gZXJyb3JcIiBpZiBhbnkgb2YgaXRzIHByb3BlcnRpZXMgYXJlIGFj
Y2Vzc2VkLiBUaGUgb25seSBzZWVtaW5nbHkgcG9zc2libGVcbiAgLy8gd2F5IHRvIGF2b2lkIGVy
cm9yaW5nIGlzIHRvIGFjY2VzcyBhIHByb3BlcnR5IHRoYXQgdHlwaWNhbGx5IHdvcmtzIGZvclxu
ICAvLyBub24tYW5vbnltb3VzIGRpdnMgYW5kIGNhdGNoIGFueSBlcnJvciB0aGF0IG1heSBvdGhl
cndpc2UgYXJpc2UuIFNlZVxuICAvLyBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDg0MjdcbiAgdHJ5IHtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby11bnVz
ZWQtZXhwcmVzc2lvbnMgKi9cbiAgICBjdXJyZW50UmFuZ2Uuc3RhcnRDb250YWluZXIubm9kZVR5
cGU7XG4gICAgY3VycmVudFJhbmdlLmVuZENvbnRhaW5lci5ub2RlVHlwZTtcbiAgICAvKiBlc2xp
bnQtZW5hYmxlIG5vLXVudXNlZC1leHByZXNzaW9ucyAqL1xuICB9IGNhdGNoIChlKSB7XG4gICAg
cmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBJZiB0aGUgbm9kZSBhbmQgb2Zmc2V0IHZhbHVlcyBh
cmUgdGhlIHNhbWUsIHRoZSBzZWxlY3Rpb24gaXMgY29sbGFwc2VkLlxuICAvLyBgU2VsZWN0aW9u
LmlzQ29sbGFwc2VkYCBpcyBhdmFpbGFibGUgbmF0aXZlbHksIGJ1dCBJRSBzb21ldGltZXMgZ2V0
c1xuICAvLyB0aGlzIHZhbHVlIHdyb25nLlxuICB2YXIgaXNTZWxlY3Rpb25Db2xsYXBzZWQgPSBp
c0NvbGxhcHNlZChzZWxlY3Rpb24uYW5jaG9yTm9kZSwgc2VsZWN0aW9uLmFuY2hvck9mZnNldCwg
c2VsZWN0aW9uLmZvY3VzTm9kZSwgc2VsZWN0aW9uLmZvY3VzT2Zmc2V0KTtcblxuICB2YXIgcmFu
Z2VMZW5ndGggPSBpc1NlbGVjdGlvbkNvbGxhcHNlZCA/IDAgOiBjdXJyZW50UmFuZ2UudG9TdHJp
bmcoKS5sZW5ndGg7XG5cbiAgdmFyIHRlbXBSYW5nZSA9IGN1cnJlbnRSYW5nZS5jbG9uZVJhbmdl
KCk7XG4gIHRlbXBSYW5nZS5zZWxlY3ROb2RlQ29udGVudHMobm9kZSk7XG4gIHRlbXBSYW5nZS5z
ZXRFbmQoY3VycmVudFJhbmdlLnN0YXJ0Q29udGFpbmVyLCBjdXJyZW50UmFuZ2Uuc3RhcnRPZmZz
ZXQpO1xuXG4gIHZhciBpc1RlbXBSYW5nZUNvbGxhcHNlZCA9IGlzQ29sbGFwc2VkKHRlbXBSYW5n
ZS5zdGFydENvbnRhaW5lciwgdGVtcFJhbmdlLnN0YXJ0T2Zmc2V0LCB0ZW1wUmFuZ2UuZW5kQ29u
dGFpbmVyLCB0ZW1wUmFuZ2UuZW5kT2Zmc2V0KTtcblxuICB2YXIgc3RhcnQgPSBpc1RlbXBSYW5n
ZUNvbGxhcHNlZCA/IDAgOiB0ZW1wUmFuZ2UudG9TdHJpbmcoKS5sZW5ndGg7XG4gIHZhciBlbmQg
PSBzdGFydCArIHJhbmdlTGVuZ3RoO1xuXG4gIC8vIERldGVjdCB3aGV0aGVyIHRoZSBzZWxlY3Rp
b24gaXMgYmFja3dhcmQuXG4gIHZhciBkZXRlY3Rpb25SYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJh
bmdlKCk7XG4gIGRldGVjdGlvblJhbmdlLnNldFN0YXJ0KGFuY2hvck5vZGUsIGFuY2hvck9mZnNl
dCk7XG4gIGRldGVjdGlvblJhbmdlLnNldEVuZChmb2N1c05vZGUsIGZvY3VzT2Zmc2V0KTtcbiAg
dmFyIGlzQmFja3dhcmQgPSBkZXRlY3Rpb25SYW5nZS5jb2xsYXBzZWQ7XG5cbiAgcmV0dXJuIHtc
biAgICBzdGFydDogaXNCYWNrd2FyZCA/IGVuZCA6IHN0YXJ0LFxuICAgIGVuZDogaXNCYWNrd2Fy
ZCA/IHN0YXJ0IDogZW5kXG4gIH07XG59XG5cbi8qKlxuICogQHBhcmFtIHtET01FbGVtZW50fERP
TVRleHROb2RlfSBub2RlXG4gKiBAcGFyYW0ge29iamVjdH0gb2Zmc2V0c1xuICovXG5mdW5jdGlv
biBzZXRJRU9mZnNldHMobm9kZSwgb2Zmc2V0cykge1xuICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5z
ZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKS5kdXBsaWNhdGUoKTtcbiAgdmFyIHN0YXJ0LCBlbmQ7XG5c
biAgaWYgKG9mZnNldHMuZW5kID09PSB1bmRlZmluZWQpIHtcbiAgICBzdGFydCA9IG9mZnNldHMu
c3RhcnQ7XG4gICAgZW5kID0gc3RhcnQ7XG4gIH0gZWxzZSBpZiAob2Zmc2V0cy5zdGFydCA+IG9m
ZnNldHMuZW5kKSB7XG4gICAgc3RhcnQgPSBvZmZzZXRzLmVuZDtcbiAgICBlbmQgPSBvZmZzZXRz
LnN0YXJ0O1xuICB9IGVsc2Uge1xuICAgIHN0YXJ0ID0gb2Zmc2V0cy5zdGFydDtcbiAgICBlbmQg
PSBvZmZzZXRzLmVuZDtcbiAgfVxuXG4gIHJhbmdlLm1vdmVUb0VsZW1lbnRUZXh0KG5vZGUpO1xu
ICByYW5nZS5tb3ZlU3RhcnQoJ2NoYXJhY3RlcicsIHN0YXJ0KTtcbiAgcmFuZ2Uuc2V0RW5kUG9p
bnQoJ0VuZFRvU3RhcnQnLCByYW5nZSk7XG4gIHJhbmdlLm1vdmVFbmQoJ2NoYXJhY3RlcicsIGVu
ZCAtIHN0YXJ0KTtcbiAgcmFuZ2Uuc2VsZWN0KCk7XG59XG5cbi8qKlxuICogSW4gbW9kZXJuIG5v
bi1JRSBicm93c2Vycywgd2UgY2FuIHN1cHBvcnQgYm90aCBmb3J3YXJkIGFuZCBiYWNrd2FyZFxu
ICogc2VsZWN0aW9ucy5cbiAqXG4gKiBOb3RlOiBJRTEwKyBzdXBwb3J0cyB0aGUgU2VsZWN0aW9u
IG9iamVjdCwgYnV0IGl0IGRvZXMgbm90IHN1cHBvcnRcbiAqIHRoZSBgZXh0ZW5kYCBtZXRob2Qs
IHdoaWNoIG1lYW5zIHRoYXQgZXZlbiBpbiBtb2Rlcm4gSUUsIGl0J3Mgbm90IHBvc3NpYmxlXG4g
KiB0byBwcm9ncmFtbWF0aWNhbGx5IGNyZWF0ZSBhIGJhY2t3YXJkIHNlbGVjdGlvbi4gVGh1cywg
Zm9yIGFsbCBJRVxuICogdmVyc2lvbnMsIHdlIHVzZSB0aGUgb2xkIElFIEFQSSB0byBjcmVhdGUg
b3VyIHNlbGVjdGlvbnMuXG4gKlxuICogQHBhcmFtIHtET01FbGVtZW50fERPTVRleHROb2RlfSBu
b2RlXG4gKiBAcGFyYW0ge29iamVjdH0gb2Zmc2V0c1xuICovXG5mdW5jdGlvbiBzZXRNb2Rlcm5P
ZmZzZXRzKG5vZGUsIG9mZnNldHMpIHtcbiAgaWYgKCF3aW5kb3cuZ2V0U2VsZWN0aW9uKSB7XG4g
ICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24o
KTtcbiAgdmFyIGxlbmd0aCA9IG5vZGVbZ2V0VGV4dENvbnRlbnRBY2Nlc3NvcigpXS5sZW5ndGg7
XG4gIHZhciBzdGFydCA9IE1hdGgubWluKG9mZnNldHMuc3RhcnQsIGxlbmd0aCk7XG4gIHZhciBl
bmQgPSBvZmZzZXRzLmVuZCA9PT0gdW5kZWZpbmVkID8gc3RhcnQgOiBNYXRoLm1pbihvZmZzZXRz
LmVuZCwgbGVuZ3RoKTtcblxuICAvLyBJRSAxMSB1c2VzIG1vZGVybiBzZWxlY3Rpb24sIGJ1dCBk
b2Vzbid0IHN1cHBvcnQgdGhlIGV4dGVuZCBtZXRob2QuXG4gIC8vIEZsaXAgYmFja3dhcmQgc2Vs
ZWN0aW9ucywgc28gd2UgY2FuIHNldCB3aXRoIGEgc2luZ2xlIHJhbmdlLlxuICBpZiAoIXNlbGVj
dGlvbi5leHRlbmQgJiYgc3RhcnQgPiBlbmQpIHtcbiAgICB2YXIgdGVtcCA9IGVuZDtcbiAgICBl
bmQgPSBzdGFydDtcbiAgICBzdGFydCA9IHRlbXA7XG4gIH1cblxuICB2YXIgc3RhcnRNYXJrZXIg
PSBnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0KG5vZGUsIHN0YXJ0KTtcbiAgdmFyIGVuZE1hcmtl
ciA9IGdldE5vZGVGb3JDaGFyYWN0ZXJPZmZzZXQobm9kZSwgZW5kKTtcblxuICBpZiAoc3RhcnRN
YXJrZXIgJiYgZW5kTWFya2VyKSB7XG4gICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTtcbiAgICByYW5nZS5zZXRTdGFydChzdGFydE1hcmtlci5ub2RlLCBzdGFydE1hcmtlci5v
ZmZzZXQpO1xuICAgIHNlbGVjdGlvbi5yZW1vdmVBbGxSYW5nZXMoKTtcblxuICAgIGlmIChzdGFy
dCA+IGVuZCkge1xuICAgICAgc2VsZWN0aW9uLmFkZFJhbmdlKHJhbmdlKTtcbiAgICAgIHNlbGVj
dGlvbi5leHRlbmQoZW5kTWFya2VyLm5vZGUsIGVuZE1hcmtlci5vZmZzZXQpO1xuICAgIH0gZWxz
ZSB7XG4gICAgICByYW5nZS5zZXRFbmQoZW5kTWFya2VyLm5vZGUsIGVuZE1hcmtlci5vZmZzZXQp
O1xuICAgICAgc2VsZWN0aW9uLmFkZFJhbmdlKHJhbmdlKTtcbiAgICB9XG4gIH1cbn1cblxudmFy
IHVzZUlFT2Zmc2V0cyA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAmJiAnc2VsZWN0
aW9uJyBpbiBkb2N1bWVudCAmJiAhKCdnZXRTZWxlY3Rpb24nIGluIHdpbmRvdyk7XG5cbnZhciBS
ZWFjdERPTVNlbGVjdGlvbiA9IHtcbiAgLyoqXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9k
ZVxuICAgKi9cbiAgZ2V0T2Zmc2V0czogdXNlSUVPZmZzZXRzID8gZ2V0SUVPZmZzZXRzIDogZ2V0
TW9kZXJuT2Zmc2V0cyxcblxuICAvKipcbiAgICogQHBhcmFtIHtET01FbGVtZW50fERPTVRleHRO
b2RlfSBub2RlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBvZmZzZXRzXG4gICAqL1xuICBzZXRPZmZz
ZXRzOiB1c2VJRU9mZnNldHMgPyBzZXRJRU9mZnNldHMgOiBzZXRNb2Rlcm5PZmZzZXRzXG59O1xu
XG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NU2VsZWN0aW9uO1xuXG5cbi8qKioqKioqKioqKioq
KioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RET01T
ZWxlY3Rpb24uanNcbiAqKiBtb2R1bGUgaWQgPSAxNDVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxu
ICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5c
bnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50JyksXG4g
ICAgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIERPTUNoaWxkcmVu
T3BlcmF0aW9ucyA9IHJlcXVpcmUoJy4vRE9NQ2hpbGRyZW5PcGVyYXRpb25zJyk7XG52YXIgRE9N
TGF6eVRyZWUgPSByZXF1aXJlKCcuL0RPTUxhenlUcmVlJyk7XG52YXIgUmVhY3RET01Db21wb25l
bnRUcmVlID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVudFRyZWUnKTtcblxudmFyIGVzY2Fw
ZVRleHRDb250ZW50Rm9yQnJvd3NlciA9IHJlcXVpcmUoJy4vZXNjYXBlVGV4dENvbnRlbnRGb3JC
cm93c2VyJyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7
XG52YXIgdmFsaWRhdGVET01OZXN0aW5nID0gcmVxdWlyZSgnLi92YWxpZGF0ZURPTU5lc3Rpbmcn
KTtcblxuLyoqXG4gKiBUZXh0IG5vZGVzIHZpb2xhdGUgYSBjb3VwbGUgYXNzdW1wdGlvbnMgdGhh
dCBSZWFjdCBtYWtlcyBhYm91dCBjb21wb25lbnRzOlxuICpcbiAqICAtIFdoZW4gbW91bnRpbmcg
dGV4dCBpbnRvIHRoZSBET00sIGFkamFjZW50IHRleHQgbm9kZXMgYXJlIG1lcmdlZC5cbiAqICAt
IFRleHQgbm9kZXMgY2Fubm90IGJlIGFzc2lnbmVkIGEgUmVhY3Qgcm9vdCBJRC5cbiAqXG4gKiBU
aGlzIGNvbXBvbmVudCBpcyB1c2VkIHRvIHdyYXAgc3RyaW5ncyBiZXR3ZWVuIGNvbW1lbnQgbm9k
ZXMgc28gdGhhdCB0aGV5XG4gKiBjYW4gdW5kZXJnbyB0aGUgc2FtZSByZWNvbmNpbGlhdGlvbiB0
aGF0IGlzIGFwcGxpZWQgdG8gZWxlbWVudHMuXG4gKlxuICogVE9ETzogSW52ZXN0aWdhdGUgcmVw
cmVzZW50aW5nIFJlYWN0IGNvbXBvbmVudHMgaW4gdGhlIERPTSB3aXRoIHRleHQgbm9kZXMuXG4g
KlxuICogQGNsYXNzIFJlYWN0RE9NVGV4dENvbXBvbmVudFxuICogQGV4dGVuZHMgUmVhY3RDb21w
b25lbnRcbiAqIEBpbnRlcm5hbFxuICovXG52YXIgUmVhY3RET01UZXh0Q29tcG9uZW50ID0gZnVu
Y3Rpb24gKHRleHQpIHtcbiAgLy8gVE9ETzogVGhpcyBpcyByZWFsbHkgYSBSZWFjdFRleHQgKFJl
YWN0Tm9kZSksIG5vdCBhIFJlYWN0RWxlbWVudFxuICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IHRl
eHQ7XG4gIHRoaXMuX3N0cmluZ1RleHQgPSAnJyArIHRleHQ7XG4gIC8vIFJlYWN0RE9NQ29tcG9u
ZW50VHJlZSB1c2VzIHRoZXNlOlxuICB0aGlzLl9ob3N0Tm9kZSA9IG51bGw7XG4gIHRoaXMuX2hv
c3RQYXJlbnQgPSBudWxsO1xuXG4gIC8vIFByb3BlcnRpZXNcbiAgdGhpcy5fZG9tSUQgPSAwO1xu
ICB0aGlzLl9tb3VudEluZGV4ID0gMDtcbiAgdGhpcy5fY2xvc2luZ0NvbW1lbnQgPSBudWxsO1xu
ICB0aGlzLl9jb21tZW50Tm9kZXMgPSBudWxsO1xufTtcblxuX2Fzc2lnbihSZWFjdERPTVRleHRD
b21wb25lbnQucHJvdG90eXBlLCB7XG4gIC8qKlxuICAgKiBDcmVhdGVzIHRoZSBtYXJrdXAgZm9y
IHRoaXMgdGV4dCBub2RlLiBUaGlzIG5vZGUgaXMgbm90IGludGVuZGVkIHRvIGhhdmVcbiAgICog
YW55IGZlYXR1cmVzIGJlc2lkZXMgY29udGFpbmluZyB0ZXh0IGNvbnRlbnQuXG4gICAqXG4gICAq
IEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNlcnZlclJlbmRlcmluZ1Ry
YW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1hcmt1cCBmb3Ig
dGhpcyB0ZXh0IG5vZGUuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgbW91bnRDb21wb25lbnQ6
IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIGNv
bnRleHQpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykg
e1xuICAgICAgdmFyIHBhcmVudEluZm87XG4gICAgICBpZiAoaG9zdFBhcmVudCAhPSBudWxsKSB7
XG4gICAgICAgIHBhcmVudEluZm8gPSBob3N0UGFyZW50Ll9hbmNlc3RvckluZm87XG4gICAgICB9
IGVsc2UgaWYgKGhvc3RDb250YWluZXJJbmZvICE9IG51bGwpIHtcbiAgICAgICAgcGFyZW50SW5m
byA9IGhvc3RDb250YWluZXJJbmZvLl9hbmNlc3RvckluZm87XG4gICAgICB9XG4gICAgICBpZiAo
cGFyZW50SW5mbykge1xuICAgICAgICAvLyBwYXJlbnRJbmZvIHNob3VsZCBhbHdheXMgYmUgcHJl
c2VudCBleGNlcHQgZm9yIHRoZSB0b3AtbGV2ZWxcbiAgICAgICAgLy8gY29tcG9uZW50IHdoZW4g
c2VydmVyIHJlbmRlcmluZ1xuICAgICAgICB2YWxpZGF0ZURPTU5lc3RpbmcobnVsbCwgdGhpcy5f
c3RyaW5nVGV4dCwgdGhpcywgcGFyZW50SW5mbyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFy
IGRvbUlEID0gaG9zdENvbnRhaW5lckluZm8uX2lkQ291bnRlcisrO1xuICAgIHZhciBvcGVuaW5n
VmFsdWUgPSAnIHJlYWN0LXRleHQ6ICcgKyBkb21JRCArICcgJztcbiAgICB2YXIgY2xvc2luZ1Zh
bHVlID0gJyAvcmVhY3QtdGV4dCAnO1xuICAgIHRoaXMuX2RvbUlEID0gZG9tSUQ7XG4gICAgdGhp
cy5faG9zdFBhcmVudCA9IGhvc3RQYXJlbnQ7XG4gICAgaWYgKHRyYW5zYWN0aW9uLnVzZUNyZWF0
ZUVsZW1lbnQpIHtcbiAgICAgIHZhciBvd25lckRvY3VtZW50ID0gaG9zdENvbnRhaW5lckluZm8u
X293bmVyRG9jdW1lbnQ7XG4gICAgICB2YXIgb3BlbmluZ0NvbW1lbnQgPSBvd25lckRvY3VtZW50
LmNyZWF0ZUNvbW1lbnQob3BlbmluZ1ZhbHVlKTtcbiAgICAgIHZhciBjbG9zaW5nQ29tbWVudCA9
IG93bmVyRG9jdW1lbnQuY3JlYXRlQ29tbWVudChjbG9zaW5nVmFsdWUpO1xuICAgICAgdmFyIGxh
enlUcmVlID0gRE9NTGF6eVRyZWUob3duZXJEb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50
KCkpO1xuICAgICAgRE9NTGF6eVRyZWUucXVldWVDaGlsZChsYXp5VHJlZSwgRE9NTGF6eVRyZWUo
b3BlbmluZ0NvbW1lbnQpKTtcbiAgICAgIGlmICh0aGlzLl9zdHJpbmdUZXh0KSB7XG4gICAgICAg
IERPTUxhenlUcmVlLnF1ZXVlQ2hpbGQobGF6eVRyZWUsIERPTUxhenlUcmVlKG93bmVyRG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUodGhpcy5fc3RyaW5nVGV4dCkpKTtcbiAgICAgIH1cbiAgICAgIERP
TUxhenlUcmVlLnF1ZXVlQ2hpbGQobGF6eVRyZWUsIERPTUxhenlUcmVlKGNsb3NpbmdDb21tZW50
KSk7XG4gICAgICBSZWFjdERPTUNvbXBvbmVudFRyZWUucHJlY2FjaGVOb2RlKHRoaXMsIG9wZW5p
bmdDb21tZW50KTtcbiAgICAgIHRoaXMuX2Nsb3NpbmdDb21tZW50ID0gY2xvc2luZ0NvbW1lbnQ7
XG4gICAgICByZXR1cm4gbGF6eVRyZWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBlc2NhcGVk
VGV4dCA9IGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlcih0aGlzLl9zdHJpbmdUZXh0KTtcblxu
ICAgICAgaWYgKHRyYW5zYWN0aW9uLnJlbmRlclRvU3RhdGljTWFya3VwKSB7XG4gICAgICAgIC8v
IE5vcm1hbGx5IHdlJ2Qgd3JhcCB0aGlzIGJldHdlZW4gY29tbWVudCBub2RlcyBmb3IgdGhlIHJl
YXNvbnMgc3RhdGVkXG4gICAgICAgIC8vIGFib3ZlLCBidXQgc2luY2UgdGhpcyBpcyBhIHNpdHVh
dGlvbiB3aGVyZSBSZWFjdCB3b24ndCB0YWtlIG92ZXJcbiAgICAgICAgLy8gKHN0YXRpYyBwYWdl
cyksIHdlIGNhbiBzaW1wbHkgcmV0dXJuIHRoZSB0ZXh0IGFzIGl0IGlzLlxuICAgICAgICByZXR1
cm4gZXNjYXBlZFRleHQ7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiAnPCEtLScgKyBvcGVuaW5n
VmFsdWUgKyAnLS0+JyArIGVzY2FwZWRUZXh0ICsgJzwhLS0nICsgY2xvc2luZ1ZhbHVlICsgJy0t
Pic7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBVcGRhdGVzIHRoaXMgY29tcG9uZW50IGJ5
IHVwZGF0aW5nIHRoZSB0ZXh0IGNvbnRlbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RUZXh0
fSBuZXh0VGV4dCBUaGUgbmV4dCB0ZXh0IGNvbnRlbnRcbiAgICogQHBhcmFtIHtSZWFjdFJlY29u
Y2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHJl
Y2VpdmVDb21wb25lbnQ6IGZ1bmN0aW9uIChuZXh0VGV4dCwgdHJhbnNhY3Rpb24pIHtcbiAgICBp
ZiAobmV4dFRleHQgIT09IHRoaXMuX2N1cnJlbnRFbGVtZW50KSB7XG4gICAgICB0aGlzLl9jdXJy
ZW50RWxlbWVudCA9IG5leHRUZXh0O1xuICAgICAgdmFyIG5leHRTdHJpbmdUZXh0ID0gJycgKyBu
ZXh0VGV4dDtcbiAgICAgIGlmIChuZXh0U3RyaW5nVGV4dCAhPT0gdGhpcy5fc3RyaW5nVGV4dCkg
e1xuICAgICAgICAvLyBUT0RPOiBTYXZlIHRoaXMgYXMgcGVuZGluZyBwcm9wcyBhbmQgdXNlIHBl
cmZvcm1VcGRhdGVJZk5lY2Vzc2FyeVxuICAgICAgICAvLyBhbmQvb3IgdXBkYXRlQ29tcG9uZW50
IHRvIGRvIHRoZSBhY3R1YWwgdXBkYXRlIGZvciBjb25zaXN0ZW5jeSB3aXRoXG4gICAgICAgIC8v
IG90aGVyIGNvbXBvbmVudCB0eXBlcz9cbiAgICAgICAgdGhpcy5fc3RyaW5nVGV4dCA9IG5leHRT
dHJpbmdUZXh0O1xuICAgICAgICB2YXIgY29tbWVudE5vZGVzID0gdGhpcy5nZXRIb3N0Tm9kZSgp
O1xuICAgICAgICBET01DaGlsZHJlbk9wZXJhdGlvbnMucmVwbGFjZURlbGltaXRlZFRleHQoY29t
bWVudE5vZGVzWzBdLCBjb21tZW50Tm9kZXNbMV0sIG5leHRTdHJpbmdUZXh0KTtcbiAgICAgIH1c
biAgICB9XG4gIH0sXG5cbiAgZ2V0SG9zdE5vZGU6IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaG9z
dE5vZGUgPSB0aGlzLl9jb21tZW50Tm9kZXM7XG4gICAgaWYgKGhvc3ROb2RlKSB7XG4gICAgICBy
ZXR1cm4gaG9zdE5vZGU7XG4gICAgfVxuICAgIGlmICghdGhpcy5fY2xvc2luZ0NvbW1lbnQpIHtc
biAgICAgIHZhciBvcGVuaW5nQ29tbWVudCA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2Rl
RnJvbUluc3RhbmNlKHRoaXMpO1xuICAgICAgdmFyIG5vZGUgPSBvcGVuaW5nQ29tbWVudC5uZXh0
U2libGluZztcbiAgICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICAgICEobm9kZSAhPSBudWxsKSA/
IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2Us
ICdNaXNzaW5nIGNsb3NpbmcgY29tbWVudCBmb3IgdGV4dCBjb21wb25lbnQgJXMnLCB0aGlzLl9k
b21JRCkgOiBfcHJvZEludmFyaWFudCgnNjcnLCB0aGlzLl9kb21JRCkgOiB2b2lkIDA7XG4gICAg
ICAgIGlmIChub2RlLm5vZGVUeXBlID09PSA4ICYmIG5vZGUubm9kZVZhbHVlID09PSAnIC9yZWFj
dC10ZXh0ICcpIHtcbiAgICAgICAgICB0aGlzLl9jbG9zaW5nQ29tbWVudCA9IG5vZGU7XG4gICAg
ICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgbm9kZSA9IG5vZGUubmV4dFNpYmxpbmc7
XG4gICAgICB9XG4gICAgfVxuICAgIGhvc3ROb2RlID0gW3RoaXMuX2hvc3ROb2RlLCB0aGlzLl9j
bG9zaW5nQ29tbWVudF07XG4gICAgdGhpcy5fY29tbWVudE5vZGVzID0gaG9zdE5vZGU7XG4gICAg
cmV0dXJuIGhvc3ROb2RlO1xuICB9LFxuXG4gIHVubW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uICgp
IHtcbiAgICB0aGlzLl9jbG9zaW5nQ29tbWVudCA9IG51bGw7XG4gICAgdGhpcy5fY29tbWVudE5v
ZGVzID0gbnVsbDtcbiAgICBSZWFjdERPTUNvbXBvbmVudFRyZWUudW5jYWNoZU5vZGUodGhpcyk7
XG4gIH1cbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NVGV4dENvbXBvbmVudDtcblxu
XG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1k
b20vbGliL1JlYWN0RE9NVGV4dENvbXBvbmVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDE0NlxuICoq
IG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICov
XG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFj
dFByb2RJbnZhcmlhbnQnKSxcbiAgICBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicp
O1xuXG52YXIgTGlua2VkVmFsdWVVdGlscyA9IHJlcXVpcmUoJy4vTGlua2VkVmFsdWVVdGlscycp
O1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25l
bnRUcmVlJyk7XG52YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTtc
blxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHdh
cm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBkaWRXYXJuVmFsdWVM
aW5rID0gZmFsc2U7XG52YXIgZGlkV2FyblZhbERlZmF1bHRWYWwgPSBmYWxzZTtcblxuZnVuY3Rp
b24gZm9yY2VVcGRhdGVJZk1vdW50ZWQoKSB7XG4gIGlmICh0aGlzLl9yb290Tm9kZUlEKSB7XG4g
ICAgLy8gRE9NIGNvbXBvbmVudCBpcyBzdGlsbCBtb3VudGVkOyB1cGRhdGVcbiAgICBSZWFjdERP
TVRleHRhcmVhLnVwZGF0ZVdyYXBwZXIodGhpcyk7XG4gIH1cbn1cblxuLyoqXG4gKiBJbXBsZW1l
bnRzIGEgPHRleHRhcmVhPiBob3N0IGNvbXBvbmVudCB0aGF0IGFsbG93cyBzZXR0aW5nIGB2YWx1
ZWAsIGFuZFxuICogYGRlZmF1bHRWYWx1ZWAuIFRoaXMgZGlmZmVycyBmcm9tIHRoZSB0cmFkaXRp
b25hbCBET00gQVBJIGJlY2F1c2UgdmFsdWUgaXNcbiAqIHVzdWFsbHkgc2V0IGFzIFBDREFUQSBj
aGlsZHJlbi5cbiAqXG4gKiBJZiBgdmFsdWVgIGlzIG5vdCBzdXBwbGllZCAob3IgbnVsbC91bmRl
ZmluZWQpLCB1c2VyIGFjdGlvbnMgdGhhdCBhZmZlY3QgdGhlXG4gKiB2YWx1ZSB3aWxsIHRyaWdn
ZXIgdXBkYXRlcyB0byB0aGUgZWxlbWVudC5cbiAqXG4gKiBJZiBgdmFsdWVgIGlzIHN1cHBsaWVk
IChhbmQgbm90IG51bGwvdW5kZWZpbmVkKSwgdGhlIHJlbmRlcmVkIGVsZW1lbnQgd2lsbFxuICog
bm90IHRyaWdnZXIgdXBkYXRlcyB0byB0aGUgZWxlbWVudC4gSW5zdGVhZCwgdGhlIGB2YWx1ZWAg
cHJvcCBtdXN0IGNoYW5nZSBpblxuICogb3JkZXIgZm9yIHRoZSByZW5kZXJlZCBlbGVtZW50IHRv
IGJlIHVwZGF0ZWQuXG4gKlxuICogVGhlIHJlbmRlcmVkIGVsZW1lbnQgd2lsbCBiZSBpbml0aWFs
aXplZCB3aXRoIGFuIGVtcHR5IHZhbHVlLCB0aGUgcHJvcFxuICogYGRlZmF1bHRWYWx1ZWAgaWYg
c3BlY2lmaWVkLCBvciB0aGUgY2hpbGRyZW4gY29udGVudCAoZGVwcmVjYXRlZCkuXG4gKi9cbnZh
ciBSZWFjdERPTVRleHRhcmVhID0ge1xuICBnZXRIb3N0UHJvcHM6IGZ1bmN0aW9uIChpbnN0LCBw
cm9wcykge1xuICAgICEocHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgPT0gbnVsbCkgPyBw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAn
YGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYCBkb2VzIG5vdCBtYWtlIHNlbnNlIG9uIDx0ZXh0YXJl
YT4uJykgOiBfcHJvZEludmFyaWFudCgnOTEnKSA6IHZvaWQgMDtcblxuICAgIC8vIEFsd2F5cyBz
ZXQgY2hpbGRyZW4gdG8gdGhlIHNhbWUgdGhpbmcuIEluIElFOSwgdGhlIHNlbGVjdGlvbiByYW5n
ZSB3aWxsXG4gICAgLy8gZ2V0IHJlc2V0IGlmIGB0ZXh0Q29udGVudGAgaXMgbXV0YXRlZC4gIFdl
IGNvdWxkIGFkZCBhIGNoZWNrIGluIHNldFRleHRDb250ZW50XG4gICAgLy8gdG8gb25seSBzZXQg
dGhlIHZhbHVlIGlmL3doZW4gdGhlIHZhbHVlIGRpZmZlcnMgZnJvbSB0aGUgbm9kZSB2YWx1ZSAo
d2hpY2ggd291bGRcbiAgICAvLyBjb21wbGV0ZWx5IHNvbHZlIHRoaXMgSUU5IGJ1ZyksIGJ1dCBT
ZWJhc3RpYW4rQmVuIHNlZW1lZCB0byBsaWtlIHRoaXMgc29sdXRpb24uXG4gICAgLy8gVGhlIHZh
bHVlIGNhbiBiZSBhIGJvb2xlYW4gb3Igb2JqZWN0IHNvIHRoYXQncyB3aHkgaXQncyBmb3JjZWQg
dG8gYmUgYSBzdHJpbmcuXG4gICAgdmFyIGhvc3RQcm9wcyA9IF9hc3NpZ24oe30sIHByb3BzLCB7
XG4gICAgICB2YWx1ZTogdW5kZWZpbmVkLFxuICAgICAgZGVmYXVsdFZhbHVlOiB1bmRlZmluZWQs
XG4gICAgICBjaGlsZHJlbjogJycgKyBpbnN0Ll93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlLFxu
ICAgICAgb25DaGFuZ2U6IGluc3QuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZVxuICAgIH0pO1xuXG4g
ICAgcmV0dXJuIGhvc3RQcm9wcztcbiAgfSxcblxuICBtb3VudFdyYXBwZXI6IGZ1bmN0aW9uIChp
bnN0LCBwcm9wcykge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgICBMaW5rZWRWYWx1ZVV0aWxzLmNoZWNrUHJvcFR5cGVzKCd0ZXh0YXJlYScs
IHByb3BzLCBpbnN0Ll9jdXJyZW50RWxlbWVudC5fb3duZXIpO1xuICAgICAgaWYgKHByb3BzLnZh
bHVlTGluayAhPT0gdW5kZWZpbmVkICYmICFkaWRXYXJuVmFsdWVMaW5rKSB7XG4gICAgICAgIHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnYHZh
bHVlTGlua2AgcHJvcCBvbiBgdGV4dGFyZWFgIGlzIGRlcHJlY2F0ZWQ7IHNldCBgdmFsdWVgIGFu
ZCBgb25DaGFuZ2VgIGluc3RlYWQuJykgOiB2b2lkIDA7XG4gICAgICAgIGRpZFdhcm5WYWx1ZUxp
bmsgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzLnZhbHVlICE9PSB1bmRlZmluZWQg
JiYgcHJvcHMuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5WYWxEZWZhdWx0
VmFsKSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3
YXJuaW5nKGZhbHNlLCAnVGV4dGFyZWEgZWxlbWVudHMgbXVzdCBiZSBlaXRoZXIgY29udHJvbGxl
ZCBvciB1bmNvbnRyb2xsZWQgJyArICcoc3BlY2lmeSBlaXRoZXIgdGhlIHZhbHVlIHByb3AsIG9y
IHRoZSBkZWZhdWx0VmFsdWUgcHJvcCwgYnV0IG5vdCAnICsgJ2JvdGgpLiBEZWNpZGUgYmV0d2Vl
biB1c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIHRleHRhcmVhICcgKyAnYW5kIHJl
bW92ZSBvbmUgb2YgdGhlc2UgcHJvcHMuIE1vcmUgaW5mbzogJyArICdodHRwczovL2ZiLm1lL3Jl
YWN0LWNvbnRyb2xsZWQtY29tcG9uZW50cycpIDogdm9pZCAwO1xuICAgICAgICBkaWRXYXJuVmFs
RGVmYXVsdFZhbCA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyIHZhbHVlID0gTGlu
a2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7XG4gICAgdmFyIGluaXRpYWxWYWx1ZSA9IHZh
bHVlO1xuXG4gICAgLy8gT25seSBib3RoZXIgZmV0Y2hpbmcgZGVmYXVsdCB2YWx1ZSBpZiB3ZSdy
ZSBnb2luZyB0byB1c2UgaXRcbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgdmFyIGRl
ZmF1bHRWYWx1ZSA9IHByb3BzLmRlZmF1bHRWYWx1ZTtcbiAgICAgIC8vIFRPRE8gKHl1bmdzdGVy
cyk6IFJlbW92ZSBzdXBwb3J0IGZvciBjaGlsZHJlbiBjb250ZW50IGluIDx0ZXh0YXJlYT4uXG4g
ICAgICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbjtcbiAgICAgIGlmIChjaGlsZHJlbiAh
PSBudWxsKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IHdhcm5pbmcoZmFsc2UsICdVc2UgdGhlIGBkZWZhdWx0VmFsdWVgIG9yIGB2YWx1ZWAgcHJvcHMg
aW5zdGVhZCBvZiBzZXR0aW5nICcgKyAnY2hpbGRyZW4gb24gPHRleHRhcmVhPi4nKSA6IHZvaWQg
MDtcbiAgICAgICAgfVxuICAgICAgICAhKGRlZmF1bHRWYWx1ZSA9PSBudWxsKSA/IHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdJZiB5b3Ug
c3VwcGx5IGBkZWZhdWx0VmFsdWVgIG9uIGEgPHRleHRhcmVhPiwgZG8gbm90IHBhc3MgY2hpbGRy
ZW4uJykgOiBfcHJvZEludmFyaWFudCgnOTInKSA6IHZvaWQgMDtcbiAgICAgICAgaWYgKEFycmF5
LmlzQXJyYXkoY2hpbGRyZW4pKSB7XG4gICAgICAgICAgIShjaGlsZHJlbi5sZW5ndGggPD0gMSkg
PyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNl
LCAnPHRleHRhcmVhPiBjYW4gb25seSBoYXZlIGF0IG1vc3Qgb25lIGNoaWxkLicpIDogX3Byb2RJ
bnZhcmlhbnQoJzkzJykgOiB2b2lkIDA7XG4gICAgICAgICAgY2hpbGRyZW4gPSBjaGlsZHJlblsw
XTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9ICcnICsgY2hpbGRyZW47XG4g
ICAgICB9XG4gICAgICBpZiAoZGVmYXVsdFZhbHVlID09IG51bGwpIHtcbiAgICAgICAgZGVmYXVs
dFZhbHVlID0gJyc7XG4gICAgICB9XG4gICAgICBpbml0aWFsVmFsdWUgPSBkZWZhdWx0VmFsdWU7
XG4gICAgfVxuXG4gICAgaW5zdC5fd3JhcHBlclN0YXRlID0ge1xuICAgICAgaW5pdGlhbFZhbHVl
OiAnJyArIGluaXRpYWxWYWx1ZSxcbiAgICAgIGxpc3RlbmVyczogbnVsbCxcbiAgICAgIG9uQ2hh
bmdlOiBfaGFuZGxlQ2hhbmdlLmJpbmQoaW5zdClcbiAgICB9O1xuICB9LFxuXG4gIHVwZGF0ZVdy
YXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgdmFyIHByb3BzID0gaW5zdC5fY3VycmVudEVs
ZW1lbnQucHJvcHM7XG5cbiAgICB2YXIgbm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRO
b2RlRnJvbUluc3RhbmNlKGluc3QpO1xuICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMu
Z2V0VmFsdWUocHJvcHMpO1xuICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7XG4gICAgICAvLyBDYXN0
IGB2YWx1ZWAgdG8gYSBzdHJpbmcgdG8gZW5zdXJlIHRoZSB2YWx1ZSBpcyBzZXQgY29ycmVjdGx5
LiBXaGlsZVxuICAgICAgLy8gYnJvd3NlcnMgdHlwaWNhbGx5IGRvIHRoaXMgYXMgbmVjZXNzYXJ5
LCBqc2RvbSBkb2Vzbid0LlxuICAgICAgdmFyIG5ld1ZhbHVlID0gJycgKyB2YWx1ZTtcblxuICAg
ICAgLy8gVG8gYXZvaWQgc2lkZSBlZmZlY3RzIChzdWNoIGFzIGxvc2luZyB0ZXh0IHNlbGVjdGlv
biksIG9ubHkgc2V0IHZhbHVlIGlmIGNoYW5nZWRcbiAgICAgIGlmIChuZXdWYWx1ZSAhPT0gbm9k
ZS52YWx1ZSkge1xuICAgICAgICBub2RlLnZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAg
ICBpZiAocHJvcHMuZGVmYXVsdFZhbHVlID09IG51bGwpIHtcbiAgICAgICAgbm9kZS5kZWZhdWx0
VmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHByb3BzLmRlZmF1bHRW
YWx1ZSAhPSBudWxsKSB7XG4gICAgICBub2RlLmRlZmF1bHRWYWx1ZSA9IHByb3BzLmRlZmF1bHRW
YWx1ZTtcbiAgICB9XG4gIH0sXG5cbiAgcG9zdE1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3Qp
IHtcbiAgICAvLyBUaGlzIGlzIGluIHBvc3RNb3VudCBiZWNhdXNlIHdlIG5lZWQgYWNjZXNzIHRv
IHRoZSBET00gbm9kZSwgd2hpY2ggaXMgbm90XG4gICAgLy8gYXZhaWxhYmxlIHVudGlsIGFmdGVy
IHRoZSBjb21wb25lbnQgaGFzIG1vdW50ZWQuXG4gICAgdmFyIG5vZGUgPSBSZWFjdERPTUNvbXBv
bmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KTtcbiAgICB2YXIgdGV4dENvbnRlbnQg
PSBub2RlLnRleHRDb250ZW50O1xuXG4gICAgLy8gT25seSBzZXQgbm9kZS52YWx1ZSBpZiB0ZXh0
Q29udGVudCBpcyBlcXVhbCB0byB0aGUgZXhwZWN0ZWRcbiAgICAvLyBpbml0aWFsIHZhbHVlLiBJ
biBJRTEwL0lFMTEgdGhlcmUgaXMgYSBidWcgd2hlcmUgdGhlIHBsYWNlaG9sZGVyIGF0dHJpYnV0
ZVxuICAgIC8vIHdpbGwgcG9wdWxhdGUgdGV4dENvbnRlbnQgYXMgd2VsbC5cbiAgICAvLyBodHRw
czovL2RldmVsb3Blci5taWNyb3NvZnQuY29tL21pY3Jvc29mdC1lZGdlL3BsYXRmb3JtL2lzc3Vl
cy8xMDE1MjUvXG4gICAgaWYgKHRleHRDb250ZW50ID09PSBpbnN0Ll93cmFwcGVyU3RhdGUuaW5p
dGlhbFZhbHVlKSB7XG4gICAgICBub2RlLnZhbHVlID0gdGV4dENvbnRlbnQ7XG4gICAgfVxuICB9
XG59O1xuXG5mdW5jdGlvbiBfaGFuZGxlQ2hhbmdlKGV2ZW50KSB7XG4gIHZhciBwcm9wcyA9IHRo
aXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuICB2YXIgcmV0dXJuVmFsdWUgPSBMaW5rZWRWYWx1
ZVV0aWxzLmV4ZWN1dGVPbkNoYW5nZShwcm9wcywgZXZlbnQpO1xuICBSZWFjdFVwZGF0ZXMuYXNh
cChmb3JjZVVwZGF0ZUlmTW91bnRlZCwgdGhpcyk7XG4gIHJldHVybiByZXR1cm5WYWx1ZTtcbn1c
blxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVRleHRhcmVhO1xuXG5cbi8qKioqKioqKioqKioq
KioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RET01U
ZXh0YXJlYS5qc1xuICoqIG1vZHVsZSBpZCA9IDE0N1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4g
KiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNS1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICog
QWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0Jztcblxu
dmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxu
dmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG4vKipcbiAq
IFJldHVybiB0aGUgbG93ZXN0IGNvbW1vbiBhbmNlc3RvciBvZiBBIGFuZCBCLCBvciBudWxsIGlm
IHRoZXkgYXJlIGluXG4gKiBkaWZmZXJlbnQgdHJlZXMuXG4gKi9cbmZ1bmN0aW9uIGdldExvd2Vz
dENvbW1vbkFuY2VzdG9yKGluc3RBLCBpbnN0Qikge1xuICAhKCdfaG9zdE5vZGUnIGluIGluc3RB
KSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICdnZXROb2RlRnJvbUluc3RhbmNlOiBJbnZhbGlkIGFyZ3VtZW50LicpIDogX3Byb2RJbnZh
cmlhbnQoJzMzJykgOiB2b2lkIDA7XG4gICEoJ19ob3N0Tm9kZScgaW4gaW5zdEIpID8gcHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2dldE5v
ZGVGcm9tSW5zdGFuY2U6IEludmFsaWQgYXJndW1lbnQuJykgOiBfcHJvZEludmFyaWFudCgnMzMn
KSA6IHZvaWQgMDtcblxuICB2YXIgZGVwdGhBID0gMDtcbiAgZm9yICh2YXIgdGVtcEEgPSBpbnN0
QTsgdGVtcEE7IHRlbXBBID0gdGVtcEEuX2hvc3RQYXJlbnQpIHtcbiAgICBkZXB0aEErKztcbiAg
fVxuICB2YXIgZGVwdGhCID0gMDtcbiAgZm9yICh2YXIgdGVtcEIgPSBpbnN0QjsgdGVtcEI7IHRl
bXBCID0gdGVtcEIuX2hvc3RQYXJlbnQpIHtcbiAgICBkZXB0aEIrKztcbiAgfVxuXG4gIC8vIElm
IEEgaXMgZGVlcGVyLCBjcmF3bCB1cC5cbiAgd2hpbGUgKGRlcHRoQSAtIGRlcHRoQiA+IDApIHtc
biAgICBpbnN0QSA9IGluc3RBLl9ob3N0UGFyZW50O1xuICAgIGRlcHRoQS0tO1xuICB9XG5cbiAg
Ly8gSWYgQiBpcyBkZWVwZXIsIGNyYXdsIHVwLlxuICB3aGlsZSAoZGVwdGhCIC0gZGVwdGhBID4g
MCkge1xuICAgIGluc3RCID0gaW5zdEIuX2hvc3RQYXJlbnQ7XG4gICAgZGVwdGhCLS07XG4gIH1c
blxuICAvLyBXYWxrIGluIGxvY2tzdGVwIHVudGlsIHdlIGZpbmQgYSBtYXRjaC5cbiAgdmFyIGRl
cHRoID0gZGVwdGhBO1xuICB3aGlsZSAoZGVwdGgtLSkge1xuICAgIGlmIChpbnN0QSA9PT0gaW5z
dEIpIHtcbiAgICAgIHJldHVybiBpbnN0QTtcbiAgICB9XG4gICAgaW5zdEEgPSBpbnN0QS5faG9z
dFBhcmVudDtcbiAgICBpbnN0QiA9IGluc3RCLl9ob3N0UGFyZW50O1xuICB9XG4gIHJldHVybiBu
dWxsO1xufVxuXG4vKipcbiAqIFJldHVybiBpZiBBIGlzIGFuIGFuY2VzdG9yIG9mIEIuXG4gKi9c
bmZ1bmN0aW9uIGlzQW5jZXN0b3IoaW5zdEEsIGluc3RCKSB7XG4gICEoJ19ob3N0Tm9kZScgaW4g
aW5zdEEpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFu
dChmYWxzZSwgJ2lzQW5jZXN0b3I6IEludmFsaWQgYXJndW1lbnQuJykgOiBfcHJvZEludmFyaWFu
dCgnMzUnKSA6IHZvaWQgMDtcbiAgISgnX2hvc3ROb2RlJyBpbiBpbnN0QikgPyBwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnaXNBbmNlc3Rv
cjogSW52YWxpZCBhcmd1bWVudC4nKSA6IF9wcm9kSW52YXJpYW50KCczNScpIDogdm9pZCAwO1xu
XG4gIHdoaWxlIChpbnN0Qikge1xuICAgIGlmIChpbnN0QiA9PT0gaW5zdEEpIHtcbiAgICAgIHJl
dHVybiB0cnVlO1xuICAgIH1cbiAgICBpbnN0QiA9IGluc3RCLl9ob3N0UGFyZW50O1xuICB9XG4g
IHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIHBhcmVudCBpbnN0YW5jZSBv
ZiB0aGUgcGFzc2VkLWluIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBnZXRQYXJlbnRJbnN0YW5j
ZShpbnN0KSB7XG4gICEoJ19ob3N0Tm9kZScgaW4gaW5zdCkgPyBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZ2V0UGFyZW50SW5zdGFuY2U6
IEludmFsaWQgYXJndW1lbnQuJykgOiBfcHJvZEludmFyaWFudCgnMzYnKSA6IHZvaWQgMDtcblxu
ICByZXR1cm4gaW5zdC5faG9zdFBhcmVudDtcbn1cblxuLyoqXG4gKiBTaW11bGF0ZXMgdGhlIHRy
YXZlcnNhbCBvZiBhIHR3by1waGFzZSwgY2FwdHVyZS9idWJibGUgZXZlbnQgZGlzcGF0Y2guXG4g
Ki9cbmZ1bmN0aW9uIHRyYXZlcnNlVHdvUGhhc2UoaW5zdCwgZm4sIGFyZykge1xuICB2YXIgcGF0
aCA9IFtdO1xuICB3aGlsZSAoaW5zdCkge1xuICAgIHBhdGgucHVzaChpbnN0KTtcbiAgICBpbnN0
ID0gaW5zdC5faG9zdFBhcmVudDtcbiAgfVxuICB2YXIgaTtcbiAgZm9yIChpID0gcGF0aC5sZW5n
dGg7IGktLSA+IDA7KSB7XG4gICAgZm4ocGF0aFtpXSwgJ2NhcHR1cmVkJywgYXJnKTtcbiAgfVxu
ICBmb3IgKGkgPSAwOyBpIDwgcGF0aC5sZW5ndGg7IGkrKykge1xuICAgIGZuKHBhdGhbaV0sICdi
dWJibGVkJywgYXJnKTtcbiAgfVxufVxuXG4vKipcbiAqIFRyYXZlcnNlcyB0aGUgSUQgaGllcmFy
Y2h5IGFuZCBpbnZva2VzIHRoZSBzdXBwbGllZCBgY2JgIG9uIGFueSBJRHMgdGhhdFxuICogc2hv
dWxkIHdvdWxkIHJlY2VpdmUgYSBgbW91c2VFbnRlcmAgb3IgYG1vdXNlTGVhdmVgIGV2ZW50Llxu
ICpcbiAqIERvZXMgbm90IGludm9rZSB0aGUgY2FsbGJhY2sgb24gdGhlIG5lYXJlc3QgY29tbW9u
IGFuY2VzdG9yIGJlY2F1c2Ugbm90aGluZ1xuICogXCJlbnRlcmVkXCIgb3IgXCJsZWZ0XCIgdGhh
dCBlbGVtZW50LlxuICovXG5mdW5jdGlvbiB0cmF2ZXJzZUVudGVyTGVhdmUoZnJvbSwgdG8sIGZu
LCBhcmdGcm9tLCBhcmdUbykge1xuICB2YXIgY29tbW9uID0gZnJvbSAmJiB0byA/IGdldExvd2Vz
dENvbW1vbkFuY2VzdG9yKGZyb20sIHRvKSA6IG51bGw7XG4gIHZhciBwYXRoRnJvbSA9IFtdO1xu
ICB3aGlsZSAoZnJvbSAmJiBmcm9tICE9PSBjb21tb24pIHtcbiAgICBwYXRoRnJvbS5wdXNoKGZy
b20pO1xuICAgIGZyb20gPSBmcm9tLl9ob3N0UGFyZW50O1xuICB9XG4gIHZhciBwYXRoVG8gPSBb
XTtcbiAgd2hpbGUgKHRvICYmIHRvICE9PSBjb21tb24pIHtcbiAgICBwYXRoVG8ucHVzaCh0byk7
XG4gICAgdG8gPSB0by5faG9zdFBhcmVudDtcbiAgfVxuICB2YXIgaTtcbiAgZm9yIChpID0gMDsg
aSA8IHBhdGhGcm9tLmxlbmd0aDsgaSsrKSB7XG4gICAgZm4ocGF0aEZyb21baV0sICdidWJibGVk
JywgYXJnRnJvbSk7XG4gIH1cbiAgZm9yIChpID0gcGF0aFRvLmxlbmd0aDsgaS0tID4gMDspIHtc
biAgICBmbihwYXRoVG9baV0sICdjYXB0dXJlZCcsIGFyZ1RvKTtcbiAgfVxufVxuXG5tb2R1bGUu
ZXhwb3J0cyA9IHtcbiAgaXNBbmNlc3RvcjogaXNBbmNlc3RvcixcbiAgZ2V0TG93ZXN0Q29tbW9u
QW5jZXN0b3I6IGdldExvd2VzdENvbW1vbkFuY2VzdG9yLFxuICBnZXRQYXJlbnRJbnN0YW5jZTog
Z2V0UGFyZW50SW5zdGFuY2UsXG4gIHRyYXZlcnNlVHdvUGhhc2U6IHRyYXZlcnNlVHdvUGhhc2Us
XG4gIHRyYXZlcnNlRW50ZXJMZWF2ZTogdHJhdmVyc2VFbnRlckxlYXZlXG59O1xuXG5cbi8qKioq
KioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIv
UmVhY3RET01UcmVlVHJhdmVyc2FsLmpzXG4gKiogbW9kdWxlIGlkID0gMTQ4XG4gKiogbW9kdWxl
IGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3Vz
ZSBzdHJpY3QnO1xuXG52YXIgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxu
dmFyIFJlYWN0VXBkYXRlcyA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVzJyk7XG52YXIgVHJhbnNh
Y3Rpb24gPSByZXF1aXJlKCcuL1RyYW5zYWN0aW9uJyk7XG5cbnZhciBlbXB0eUZ1bmN0aW9uID0g
cmVxdWlyZSgnZmJqcy9saWIvZW1wdHlGdW5jdGlvbicpO1xuXG52YXIgUkVTRVRfQkFUQ0hFRF9V
UERBVEVTID0ge1xuICBpbml0aWFsaXplOiBlbXB0eUZ1bmN0aW9uLFxuICBjbG9zZTogZnVuY3Rp
b24gKCkge1xuICAgIFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0
ZXMgPSBmYWxzZTtcbiAgfVxufTtcblxudmFyIEZMVVNIX0JBVENIRURfVVBEQVRFUyA9IHtcbiAg
aW5pdGlhbGl6ZTogZW1wdHlGdW5jdGlvbixcbiAgY2xvc2U6IFJlYWN0VXBkYXRlcy5mbHVzaEJh
dGNoZWRVcGRhdGVzLmJpbmQoUmVhY3RVcGRhdGVzKVxufTtcblxudmFyIFRSQU5TQUNUSU9OX1dS
QVBQRVJTID0gW0ZMVVNIX0JBVENIRURfVVBEQVRFUywgUkVTRVRfQkFUQ0hFRF9VUERBVEVTXTtc
blxuZnVuY3Rpb24gUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneVRyYW5zYWN0aW9uKCkge1xu
ICB0aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCk7XG59XG5cbl9hc3NpZ24oUmVhY3REZWZh
dWx0QmF0Y2hpbmdTdHJhdGVneVRyYW5zYWN0aW9uLnByb3RvdHlwZSwgVHJhbnNhY3Rpb24sIHtc
biAgZ2V0VHJhbnNhY3Rpb25XcmFwcGVyczogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBUUkFO
U0FDVElPTl9XUkFQUEVSUztcbiAgfVxufSk7XG5cbnZhciB0cmFuc2FjdGlvbiA9IG5ldyBSZWFj
dERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5VHJhbnNhY3Rpb24oKTtcblxudmFyIFJlYWN0RGVmYXVs
dEJhdGNoaW5nU3RyYXRlZ3kgPSB7XG4gIGlzQmF0Y2hpbmdVcGRhdGVzOiBmYWxzZSxcblxuICAv
KipcbiAgICogQ2FsbCB0aGUgcHJvdmlkZWQgZnVuY3Rpb24gaW4gYSBjb250ZXh0IHdpdGhpbiB3
aGljaCBjYWxscyB0byBgc2V0U3RhdGVgXG4gICAqIGFuZCBmcmllbmRzIGFyZSBiYXRjaGVkIHN1
Y2ggdGhhdCBjb21wb25lbnRzIGFyZW4ndCB1cGRhdGVkIHVubmVjZXNzYXJpbHkuXG4gICAqL1xu
ICBiYXRjaGVkVXBkYXRlczogZnVuY3Rpb24gKGNhbGxiYWNrLCBhLCBiLCBjLCBkLCBlKSB7XG4g
ICAgdmFyIGFscmVhZHlCYXRjaGluZ1VwZGF0ZXMgPSBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0
ZWd5LmlzQmF0Y2hpbmdVcGRhdGVzO1xuXG4gICAgUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVn
eS5pc0JhdGNoaW5nVXBkYXRlcyA9IHRydWU7XG5cbiAgICAvLyBUaGUgY29kZSBpcyB3cml0dGVu
IHRoaXMgd2F5IHRvIGF2b2lkIGV4dHJhIGFsbG9jYXRpb25zXG4gICAgaWYgKGFscmVhZHlCYXRj
aGluZ1VwZGF0ZXMpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhhLCBiLCBjLCBkLCBlKTtcbiAg
ICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRyYW5zYWN0aW9uLnBlcmZvcm0oY2FsbGJhY2ssIG51
bGwsIGEsIGIsIGMsIGQsIGUpO1xuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBS
ZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoq
IFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3REZWZhdWx0QmF0Y2hp
bmdTdHJhdGVneS5qc1xuICoqIG1vZHVsZSBpZCA9IDE0OVxuICoqIG1vZHVsZSBjaHVua3MgPSAw
XG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0Jztc
blxudmFyIEFSSUFET01Qcm9wZXJ0eUNvbmZpZyA9IHJlcXVpcmUoJy4vQVJJQURPTVByb3BlcnR5
Q29uZmlnJyk7XG52YXIgQmVmb3JlSW5wdXRFdmVudFBsdWdpbiA9IHJlcXVpcmUoJy4vQmVmb3Jl
SW5wdXRFdmVudFBsdWdpbicpO1xudmFyIENoYW5nZUV2ZW50UGx1Z2luID0gcmVxdWlyZSgnLi9D
aGFuZ2VFdmVudFBsdWdpbicpO1xudmFyIERlZmF1bHRFdmVudFBsdWdpbk9yZGVyID0gcmVxdWly
ZSgnLi9EZWZhdWx0RXZlbnRQbHVnaW5PcmRlcicpO1xudmFyIEVudGVyTGVhdmVFdmVudFBsdWdp
biA9IHJlcXVpcmUoJy4vRW50ZXJMZWF2ZUV2ZW50UGx1Z2luJyk7XG52YXIgSFRNTERPTVByb3Bl
cnR5Q29uZmlnID0gcmVxdWlyZSgnLi9IVE1MRE9NUHJvcGVydHlDb25maWcnKTtcbnZhciBSZWFj
dENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudCA9IHJlcXVpcmUoJy4vUmVhY3RDb21wb25lbnRC
cm93c2VyRW52aXJvbm1lbnQnKTtcbnZhciBSZWFjdERPTUNvbXBvbmVudCA9IHJlcXVpcmUoJy4v
UmVhY3RET01Db21wb25lbnQnKTtcbnZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSByZXF1aXJl
KCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpO1xudmFyIFJlYWN0RE9NRW1wdHlDb21wb25lbnQg
PSByZXF1aXJlKCcuL1JlYWN0RE9NRW1wdHlDb21wb25lbnQnKTtcbnZhciBSZWFjdERPTVRyZWVU
cmF2ZXJzYWwgPSByZXF1aXJlKCcuL1JlYWN0RE9NVHJlZVRyYXZlcnNhbCcpO1xudmFyIFJlYWN0
RE9NVGV4dENvbXBvbmVudCA9IHJlcXVpcmUoJy4vUmVhY3RET01UZXh0Q29tcG9uZW50Jyk7XG52
YXIgUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneSA9IHJlcXVpcmUoJy4vUmVhY3REZWZhdWx0
QmF0Y2hpbmdTdHJhdGVneScpO1xudmFyIFJlYWN0RXZlbnRMaXN0ZW5lciA9IHJlcXVpcmUoJy4v
UmVhY3RFdmVudExpc3RlbmVyJyk7XG52YXIgUmVhY3RJbmplY3Rpb24gPSByZXF1aXJlKCcuL1Jl
YWN0SW5qZWN0aW9uJyk7XG52YXIgUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbiA9IHJlcXVpcmUo
Jy4vUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbicpO1xudmFyIFNWR0RPTVByb3BlcnR5Q29uZmln
ID0gcmVxdWlyZSgnLi9TVkdET01Qcm9wZXJ0eUNvbmZpZycpO1xudmFyIFNlbGVjdEV2ZW50UGx1
Z2luID0gcmVxdWlyZSgnLi9TZWxlY3RFdmVudFBsdWdpbicpO1xudmFyIFNpbXBsZUV2ZW50UGx1
Z2luID0gcmVxdWlyZSgnLi9TaW1wbGVFdmVudFBsdWdpbicpO1xuXG52YXIgYWxyZWFkeUluamVj
dGVkID0gZmFsc2U7XG5cbmZ1bmN0aW9uIGluamVjdCgpIHtcbiAgaWYgKGFscmVhZHlJbmplY3Rl
ZCkge1xuICAgIC8vIFRPRE86IFRoaXMgaXMgY3VycmVudGx5IHRydWUgYmVjYXVzZSB0aGVzZSBp
bmplY3Rpb25zIGFyZSBzaGFyZWQgYmV0d2VlblxuICAgIC8vIHRoZSBjbGllbnQgYW5kIHRoZSBz
ZXJ2ZXIgcGFja2FnZS4gVGhleSBzaG91bGQgYmUgYnVpbHQgaW5kZXBlbmRlbnRseVxuICAgIC8v
IGFuZCBub3Qgc2hhcmUgYW55IGluamVjdGlvbiBzdGF0ZS4gVGhlbiB0aGlzIHByb2JsZW0gd2ls
bCBiZSBzb2x2ZWQuXG4gICAgcmV0dXJuO1xuICB9XG4gIGFscmVhZHlJbmplY3RlZCA9IHRydWU7
XG5cbiAgUmVhY3RJbmplY3Rpb24uRXZlbnRFbWl0dGVyLmluamVjdFJlYWN0RXZlbnRMaXN0ZW5l
cihSZWFjdEV2ZW50TGlzdGVuZXIpO1xuXG4gIC8qKlxuICAgKiBJbmplY3QgbW9kdWxlcyBmb3Ig
cmVzb2x2aW5nIERPTSBoaWVyYXJjaHkgYW5kIHBsdWdpbiBvcmRlcmluZy5cbiAgICovXG4gIFJl
YWN0SW5qZWN0aW9uLkV2ZW50UGx1Z2luSHViLmluamVjdEV2ZW50UGx1Z2luT3JkZXIoRGVmYXVs
dEV2ZW50UGx1Z2luT3JkZXIpO1xuICBSZWFjdEluamVjdGlvbi5FdmVudFBsdWdpblV0aWxzLmlu
amVjdENvbXBvbmVudFRyZWUoUmVhY3RET01Db21wb25lbnRUcmVlKTtcbiAgUmVhY3RJbmplY3Rp
b24uRXZlbnRQbHVnaW5VdGlscy5pbmplY3RUcmVlVHJhdmVyc2FsKFJlYWN0RE9NVHJlZVRyYXZl
cnNhbCk7XG5cbiAgLyoqXG4gICAqIFNvbWUgaW1wb3J0YW50IGV2ZW50IHBsdWdpbnMgaW5jbHVk
ZWQgYnkgZGVmYXVsdCAod2l0aG91dCBoYXZpbmcgdG8gcmVxdWlyZVxuICAgKiB0aGVtKS5cbiAg
ICovXG4gIFJlYWN0SW5qZWN0aW9uLkV2ZW50UGx1Z2luSHViLmluamVjdEV2ZW50UGx1Z2luc0J5
TmFtZSh7XG4gICAgU2ltcGxlRXZlbnRQbHVnaW46IFNpbXBsZUV2ZW50UGx1Z2luLFxuICAgIEVu
dGVyTGVhdmVFdmVudFBsdWdpbjogRW50ZXJMZWF2ZUV2ZW50UGx1Z2luLFxuICAgIENoYW5nZUV2
ZW50UGx1Z2luOiBDaGFuZ2VFdmVudFBsdWdpbixcbiAgICBTZWxlY3RFdmVudFBsdWdpbjogU2Vs
ZWN0RXZlbnRQbHVnaW4sXG4gICAgQmVmb3JlSW5wdXRFdmVudFBsdWdpbjogQmVmb3JlSW5wdXRF
dmVudFBsdWdpblxuICB9KTtcblxuICBSZWFjdEluamVjdGlvbi5Ib3N0Q29tcG9uZW50LmluamVj
dEdlbmVyaWNDb21wb25lbnRDbGFzcyhSZWFjdERPTUNvbXBvbmVudCk7XG5cbiAgUmVhY3RJbmpl
Y3Rpb24uSG9zdENvbXBvbmVudC5pbmplY3RUZXh0Q29tcG9uZW50Q2xhc3MoUmVhY3RET01UZXh0
Q29tcG9uZW50KTtcblxuICBSZWFjdEluamVjdGlvbi5ET01Qcm9wZXJ0eS5pbmplY3RET01Qcm9w
ZXJ0eUNvbmZpZyhBUklBRE9NUHJvcGVydHlDb25maWcpO1xuICBSZWFjdEluamVjdGlvbi5ET01Q
cm9wZXJ0eS5pbmplY3RET01Qcm9wZXJ0eUNvbmZpZyhIVE1MRE9NUHJvcGVydHlDb25maWcpO1xu
ICBSZWFjdEluamVjdGlvbi5ET01Qcm9wZXJ0eS5pbmplY3RET01Qcm9wZXJ0eUNvbmZpZyhTVkdE
T01Qcm9wZXJ0eUNvbmZpZyk7XG5cbiAgUmVhY3RJbmplY3Rpb24uRW1wdHlDb21wb25lbnQuaW5q
ZWN0RW1wdHlDb21wb25lbnRGYWN0b3J5KGZ1bmN0aW9uIChpbnN0YW50aWF0ZSkge1xuICAgIHJl
dHVybiBuZXcgUmVhY3RET01FbXB0eUNvbXBvbmVudChpbnN0YW50aWF0ZSk7XG4gIH0pO1xuXG4g
IFJlYWN0SW5qZWN0aW9uLlVwZGF0ZXMuaW5qZWN0UmVjb25jaWxlVHJhbnNhY3Rpb24oUmVhY3RS
ZWNvbmNpbGVUcmFuc2FjdGlvbik7XG4gIFJlYWN0SW5qZWN0aW9uLlVwZGF0ZXMuaW5qZWN0QmF0
Y2hpbmdTdHJhdGVneShSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5KTtcblxuICBSZWFjdElu
amVjdGlvbi5Db21wb25lbnQuaW5qZWN0RW52aXJvbm1lbnQoUmVhY3RDb21wb25lbnRCcm93c2Vy
RW52aXJvbm1lbnQpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgaW5qZWN0OiBpbmplY3Rc
bn07XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34v
cmVhY3QtZG9tL2xpYi9SZWFjdERlZmF1bHRJbmplY3Rpb24uanNcbiAqKiBtb2R1bGUgaWQgPSAx
NTBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
ICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFdmVudFBsdWdpbkh1YiA9IHJlcXVpcmUo
Jy4vRXZlbnRQbHVnaW5IdWInKTtcblxuZnVuY3Rpb24gcnVuRXZlbnRRdWV1ZUluQmF0Y2goZXZl
bnRzKSB7XG4gIEV2ZW50UGx1Z2luSHViLmVucXVldWVFdmVudHMoZXZlbnRzKTtcbiAgRXZlbnRQ
bHVnaW5IdWIucHJvY2Vzc0V2ZW50UXVldWUoZmFsc2UpO1xufVxuXG52YXIgUmVhY3RFdmVudEVt
aXR0ZXJNaXhpbiA9IHtcbiAgLyoqXG4gICAqIFN0cmVhbXMgYSBmaXJlZCB0b3AtbGV2ZWwgZXZl
bnQgdG8gYEV2ZW50UGx1Z2luSHViYCB3aGVyZSBwbHVnaW5zIGhhdmUgdGhlXG4gICAqIG9wcG9y
dHVuaXR5IHRvIGNyZWF0ZSBgUmVhY3RFdmVudGBzIHRvIGJlIGRpc3BhdGNoZWQuXG4gICAqL1xu
ICBoYW5kbGVUb3BMZXZlbDogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0
aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gICAgdmFyIGV2ZW50cyA9IEV2ZW50UGx1
Z2luSHViLmV4dHJhY3RFdmVudHModG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVu
dCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuICAgIHJ1bkV2ZW50UXVldWVJbkJhdGNoKGV2ZW50cyk7
XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RFdmVudEVtaXR0ZXJNaXhpbjtcblxu
XG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1k
b20vbGliL1JlYWN0RXZlbnRFbWl0dGVyTWl4aW4uanNcbiAqKiBtb2R1bGUgaWQgPSAxNTJcbiAq
KiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAq
L1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2ln
bicpO1xuXG52YXIgRXZlbnRMaXN0ZW5lciA9IHJlcXVpcmUoJ2ZianMvbGliL0V2ZW50TGlzdGVu
ZXInKTtcbnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1
dGlvbkVudmlyb25tZW50Jyk7XG52YXIgUG9vbGVkQ2xhc3MgPSByZXF1aXJlKCcuL1Bvb2xlZENs
YXNzJyk7XG52YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9SZWFjdERPTUNv
bXBvbmVudFRyZWUnKTtcbnZhciBSZWFjdFVwZGF0ZXMgPSByZXF1aXJlKCcuL1JlYWN0VXBkYXRl
cycpO1xuXG52YXIgZ2V0RXZlbnRUYXJnZXQgPSByZXF1aXJlKCcuL2dldEV2ZW50VGFyZ2V0Jyk7
XG52YXIgZ2V0VW5ib3VuZGVkU2Nyb2xsUG9zaXRpb24gPSByZXF1aXJlKCdmYmpzL2xpYi9nZXRV
bmJvdW5kZWRTY3JvbGxQb3NpdGlvbicpO1xuXG4vKipcbiAqIEZpbmQgdGhlIGRlZXBlc3QgUmVh
Y3QgY29tcG9uZW50IGNvbXBsZXRlbHkgY29udGFpbmluZyB0aGUgcm9vdCBvZiB0aGVcbiAqIHBh
c3NlZC1pbiBpbnN0YW5jZSAoZm9yIHVzZSB3aGVuIGVudGlyZSBSZWFjdCB0cmVlcyBhcmUgbmVz
dGVkIHdpdGhpbiBlYWNoXG4gKiBvdGhlcikuIElmIFJlYWN0IHRyZWVzIGFyZSBub3QgbmVzdGVk
LCByZXR1cm5zIG51bGwuXG4gKi9cbmZ1bmN0aW9uIGZpbmRQYXJlbnQoaW5zdCkge1xuICAvLyBU
T0RPOiBJdCBtYXkgYmUgYSBnb29kIGlkZWEgdG8gY2FjaGUgdGhpcyB0byBwcmV2ZW50IHVubmVj
ZXNzYXJ5IERPTVxuICAvLyB0cmF2ZXJzYWwsIGJ1dCBjYWNoaW5nIGlzIGRpZmZpY3VsdCB0byBk
byBjb3JyZWN0bHkgd2l0aG91dCB1c2luZyBhXG4gIC8vIG11dGF0aW9uIG9ic2VydmVyIHRvIGxp
c3RlbiBmb3IgYWxsIERPTSBjaGFuZ2VzLlxuICB3aGlsZSAoaW5zdC5faG9zdFBhcmVudCkge1xu
ICAgIGluc3QgPSBpbnN0Ll9ob3N0UGFyZW50O1xuICB9XG4gIHZhciByb290Tm9kZSA9IFJlYWN0
RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpO1xuICB2YXIgY29udGFp
bmVyID0gcm9vdE5vZGUucGFyZW50Tm9kZTtcbiAgcmV0dXJuIFJlYWN0RE9NQ29tcG9uZW50VHJl
ZS5nZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZShjb250YWluZXIpO1xufVxuXG4vLyBVc2VkIHRv
IHN0b3JlIGFuY2VzdG9yIGhpZXJhcmNoeSBpbiB0b3AgbGV2ZWwgY2FsbGJhY2tcbmZ1bmN0aW9u
IFRvcExldmVsQ2FsbGJhY2tCb29rS2VlcGluZyh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSB7
XG4gIHRoaXMudG9wTGV2ZWxUeXBlID0gdG9wTGV2ZWxUeXBlO1xuICB0aGlzLm5hdGl2ZUV2ZW50
ID0gbmF0aXZlRXZlbnQ7XG4gIHRoaXMuYW5jZXN0b3JzID0gW107XG59XG5fYXNzaWduKFRvcExl
dmVsQ2FsbGJhY2tCb29rS2VlcGluZy5wcm90b3R5cGUsIHtcbiAgZGVzdHJ1Y3RvcjogZnVuY3Rp
b24gKCkge1xuICAgIHRoaXMudG9wTGV2ZWxUeXBlID0gbnVsbDtcbiAgICB0aGlzLm5hdGl2ZUV2
ZW50ID0gbnVsbDtcbiAgICB0aGlzLmFuY2VzdG9ycy5sZW5ndGggPSAwO1xuICB9XG59KTtcblBv
b2xlZENsYXNzLmFkZFBvb2xpbmdUbyhUb3BMZXZlbENhbGxiYWNrQm9va0tlZXBpbmcsIFBvb2xl
ZENsYXNzLnR3b0FyZ3VtZW50UG9vbGVyKTtcblxuZnVuY3Rpb24gaGFuZGxlVG9wTGV2ZWxJbXBs
KGJvb2tLZWVwaW5nKSB7XG4gIHZhciBuYXRpdmVFdmVudFRhcmdldCA9IGdldEV2ZW50VGFyZ2V0
KGJvb2tLZWVwaW5nLm5hdGl2ZUV2ZW50KTtcbiAgdmFyIHRhcmdldEluc3QgPSBSZWFjdERPTUNv
bXBvbmVudFRyZWUuZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUobmF0aXZlRXZlbnRUYXJnZXQp
O1xuXG4gIC8vIExvb3AgdGhyb3VnaCB0aGUgaGllcmFyY2h5LCBpbiBjYXNlIHRoZXJlJ3MgYW55
IG5lc3RlZCBjb21wb25lbnRzLlxuICAvLyBJdCdzIGltcG9ydGFudCB0aGF0IHdlIGJ1aWxkIHRo
ZSBhcnJheSBvZiBhbmNlc3RvcnMgYmVmb3JlIGNhbGxpbmcgYW55XG4gIC8vIGV2ZW50IGhhbmRs
ZXJzLCBiZWNhdXNlIGV2ZW50IGhhbmRsZXJzIGNhbiBtb2RpZnkgdGhlIERPTSwgbGVhZGluZyB0
b1xuICAvLyBpbmNvbnNpc3RlbmNpZXMgd2l0aCBSZWFjdE1vdW50J3Mgbm9kZSBjYWNoZS4gU2Vl
ICMxMTA1LlxuICB2YXIgYW5jZXN0b3IgPSB0YXJnZXRJbnN0O1xuICBkbyB7XG4gICAgYm9va0tl
ZXBpbmcuYW5jZXN0b3JzLnB1c2goYW5jZXN0b3IpO1xuICAgIGFuY2VzdG9yID0gYW5jZXN0b3Ig
JiYgZmluZFBhcmVudChhbmNlc3Rvcik7XG4gIH0gd2hpbGUgKGFuY2VzdG9yKTtcblxuICBmb3Ig
KHZhciBpID0gMDsgaSA8IGJvb2tLZWVwaW5nLmFuY2VzdG9ycy5sZW5ndGg7IGkrKykge1xuICAg
IHRhcmdldEluc3QgPSBib29rS2VlcGluZy5hbmNlc3RvcnNbaV07XG4gICAgUmVhY3RFdmVudExp
c3RlbmVyLl9oYW5kbGVUb3BMZXZlbChib29rS2VlcGluZy50b3BMZXZlbFR5cGUsIHRhcmdldElu
c3QsIGJvb2tLZWVwaW5nLm5hdGl2ZUV2ZW50LCBnZXRFdmVudFRhcmdldChib29rS2VlcGluZy5u
YXRpdmVFdmVudCkpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNjcm9sbFZhbHVlTW9uaXRvcihjYikg
e1xuICB2YXIgc2Nyb2xsUG9zaXRpb24gPSBnZXRVbmJvdW5kZWRTY3JvbGxQb3NpdGlvbih3aW5k
b3cpO1xuICBjYihzY3JvbGxQb3NpdGlvbik7XG59XG5cbnZhciBSZWFjdEV2ZW50TGlzdGVuZXIg
PSB7XG4gIF9lbmFibGVkOiB0cnVlLFxuICBfaGFuZGxlVG9wTGV2ZWw6IG51bGwsXG5cbiAgV0lO
RE9XX0hBTkRMRTogRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NID8gd2luZG93IDogbnVs
bCxcblxuICBzZXRIYW5kbGVUb3BMZXZlbDogZnVuY3Rpb24gKGhhbmRsZVRvcExldmVsKSB7XG4g
ICAgUmVhY3RFdmVudExpc3RlbmVyLl9oYW5kbGVUb3BMZXZlbCA9IGhhbmRsZVRvcExldmVsO1xu
ICB9LFxuXG4gIHNldEVuYWJsZWQ6IGZ1bmN0aW9uIChlbmFibGVkKSB7XG4gICAgUmVhY3RFdmVu
dExpc3RlbmVyLl9lbmFibGVkID0gISFlbmFibGVkO1xuICB9LFxuXG4gIGlzRW5hYmxlZDogZnVu
Y3Rpb24gKCkge1xuICAgIHJldHVybiBSZWFjdEV2ZW50TGlzdGVuZXIuX2VuYWJsZWQ7XG4gIH0s
XG5cbiAgLyoqXG4gICAqIFRyYXBzIHRvcC1sZXZlbCBldmVudHMgYnkgdXNpbmcgZXZlbnQgYnVi
YmxpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUgUmVjb3JkIGZy
b20gYEV2ZW50Q29uc3RhbnRzYC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGhhbmRsZXJCYXNlTmFt
ZSBFdmVudCBuYW1lIChlLmcuIFwiY2xpY2tcIikuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBlbGVt
ZW50IEVsZW1lbnQgb24gd2hpY2ggdG8gYXR0YWNoIGxpc3RlbmVyLlxuICAgKiBAcmV0dXJuIHs/
b2JqZWN0fSBBbiBvYmplY3Qgd2l0aCBhIHJlbW92ZSBmdW5jdGlvbiB3aGljaCB3aWxsIGZvcmNl
ZnVsbHlcbiAgICogICAgICAgICAgICAgICAgICByZW1vdmUgdGhlIGxpc3RlbmVyLlxuICAgKiBA
aW50ZXJuYWxcbiAgICovXG4gIHRyYXBCdWJibGVkRXZlbnQ6IGZ1bmN0aW9uICh0b3BMZXZlbFR5
cGUsIGhhbmRsZXJCYXNlTmFtZSwgZWxlbWVudCkge1xuICAgIGlmICghZWxlbWVudCkge1xuICAg
ICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBFdmVudExpc3RlbmVyLmxpc3Rlbihl
bGVtZW50LCBoYW5kbGVyQmFzZU5hbWUsIFJlYWN0RXZlbnRMaXN0ZW5lci5kaXNwYXRjaEV2ZW50
LmJpbmQobnVsbCwgdG9wTGV2ZWxUeXBlKSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFRyYXBzIGEg
dG9wLWxldmVsIGV2ZW50IGJ5IHVzaW5nIGV2ZW50IGNhcHR1cmluZy5cbiAgICpcbiAgICogQHBh
cmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZSBSZWNvcmQgZnJvbSBgRXZlbnRDb25zdGFudHNgLlxu
ICAgKiBAcGFyYW0ge3N0cmluZ30gaGFuZGxlckJhc2VOYW1lIEV2ZW50IG5hbWUgKGUuZy4gXCJj
bGlja1wiKS5cbiAgICogQHBhcmFtIHtvYmplY3R9IGVsZW1lbnQgRWxlbWVudCBvbiB3aGljaCB0
byBhdHRhY2ggbGlzdGVuZXIuXG4gICAqIEByZXR1cm4gez9vYmplY3R9IEFuIG9iamVjdCB3aXRo
IGEgcmVtb3ZlIGZ1bmN0aW9uIHdoaWNoIHdpbGwgZm9yY2VmdWxseVxuICAgKiAgICAgICAgICAg
ICAgICAgIHJlbW92ZSB0aGUgbGlzdGVuZXIuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgdHJh
cENhcHR1cmVkRXZlbnQ6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwg
ZWxlbWVudCkge1xuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAg
fVxuICAgIHJldHVybiBFdmVudExpc3RlbmVyLmNhcHR1cmUoZWxlbWVudCwgaGFuZGxlckJhc2VO
YW1lLCBSZWFjdEV2ZW50TGlzdGVuZXIuZGlzcGF0Y2hFdmVudC5iaW5kKG51bGwsIHRvcExldmVs
VHlwZSkpO1xuICB9LFxuXG4gIG1vbml0b3JTY3JvbGxWYWx1ZTogZnVuY3Rpb24gKHJlZnJlc2gp
IHtcbiAgICB2YXIgY2FsbGJhY2sgPSBzY3JvbGxWYWx1ZU1vbml0b3IuYmluZChudWxsLCByZWZy
ZXNoKTtcbiAgICBFdmVudExpc3RlbmVyLmxpc3Rlbih3aW5kb3csICdzY3JvbGwnLCBjYWxsYmFj
ayk7XG4gIH0sXG5cbiAgZGlzcGF0Y2hFdmVudDogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgbmF0
aXZlRXZlbnQpIHtcbiAgICBpZiAoIVJlYWN0RXZlbnRMaXN0ZW5lci5fZW5hYmxlZCkge1xuICAg
ICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBib29rS2VlcGluZyA9IFRvcExldmVsQ2FsbGJh
Y2tCb29rS2VlcGluZy5nZXRQb29sZWQodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCk7XG4gICAg
dHJ5IHtcbiAgICAgIC8vIEV2ZW50IHF1ZXVlIGJlaW5nIHByb2Nlc3NlZCBpbiB0aGUgc2FtZSBj
eWNsZSBhbGxvd3NcbiAgICAgIC8vIGBwcmV2ZW50RGVmYXVsdGAuXG4gICAgICBSZWFjdFVwZGF0
ZXMuYmF0Y2hlZFVwZGF0ZXMoaGFuZGxlVG9wTGV2ZWxJbXBsLCBib29rS2VlcGluZyk7XG4gICAg
fSBmaW5hbGx5IHtcbiAgICAgIFRvcExldmVsQ2FsbGJhY2tCb29rS2VlcGluZy5yZWxlYXNlKGJv
b2tLZWVwaW5nKTtcbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RFdmVu
dExpc3RlbmVyO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4g
KiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RFdmVudExpc3RlbmVyLmpzXG4gKiogbW9kdWxlIGlk
ID0gMTUzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpc
biAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRE9NUHJvcGVydHkgPSByZXF1aXJl
KCcuL0RPTVByb3BlcnR5Jyk7XG52YXIgRXZlbnRQbHVnaW5IdWIgPSByZXF1aXJlKCcuL0V2ZW50
UGx1Z2luSHViJyk7XG52YXIgRXZlbnRQbHVnaW5VdGlscyA9IHJlcXVpcmUoJy4vRXZlbnRQbHVn
aW5VdGlscycpO1xudmFyIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQgPSByZXF1aXJlKCcuL1Jl
YWN0Q29tcG9uZW50RW52aXJvbm1lbnQnKTtcbnZhciBSZWFjdEVtcHR5Q29tcG9uZW50ID0gcmVx
dWlyZSgnLi9SZWFjdEVtcHR5Q29tcG9uZW50Jyk7XG52YXIgUmVhY3RCcm93c2VyRXZlbnRFbWl0
dGVyID0gcmVxdWlyZSgnLi9SZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXInKTtcbnZhciBSZWFjdEhv
c3RDb21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0SG9zdENvbXBvbmVudCcpO1xudmFyIFJlYWN0
VXBkYXRlcyA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVzJyk7XG5cbnZhciBSZWFjdEluamVjdGlv
biA9IHtcbiAgQ29tcG9uZW50OiBSZWFjdENvbXBvbmVudEVudmlyb25tZW50LmluamVjdGlvbixc
biAgRE9NUHJvcGVydHk6IERPTVByb3BlcnR5LmluamVjdGlvbixcbiAgRW1wdHlDb21wb25lbnQ6
IFJlYWN0RW1wdHlDb21wb25lbnQuaW5qZWN0aW9uLFxuICBFdmVudFBsdWdpbkh1YjogRXZlbnRQ
bHVnaW5IdWIuaW5qZWN0aW9uLFxuICBFdmVudFBsdWdpblV0aWxzOiBFdmVudFBsdWdpblV0aWxz
LmluamVjdGlvbixcbiAgRXZlbnRFbWl0dGVyOiBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuaW5q
ZWN0aW9uLFxuICBIb3N0Q29tcG9uZW50OiBSZWFjdEhvc3RDb21wb25lbnQuaW5qZWN0aW9uLFxu
ICBVcGRhdGVzOiBSZWFjdFVwZGF0ZXMuaW5qZWN0aW9uXG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9
IFJlYWN0SW5qZWN0aW9uO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9P
VEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RJbmplY3Rpb24uanNcbiAqKiBtb2R1bGUg
aWQgPSAxNTRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4g
KlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBhZGxlcjMyID0gcmVxdWlyZSgn
Li9hZGxlcjMyJyk7XG5cbnZhciBUQUdfRU5EID0gL1xcLz8+LztcbnZhciBDT01NRU5UX1NUQVJU
ID0gL148XFwhXFwtXFwtLztcblxudmFyIFJlYWN0TWFya3VwQ2hlY2tzdW0gPSB7XG4gIENIRUNL
U1VNX0FUVFJfTkFNRTogJ2RhdGEtcmVhY3QtY2hlY2tzdW0nLFxuXG4gIC8qKlxuICAgKiBAcGFy
YW0ge3N0cmluZ30gbWFya3VwIE1hcmt1cCBzdHJpbmdcbiAgICogQHJldHVybiB7c3RyaW5nfSBN
YXJrdXAgc3RyaW5nIHdpdGggY2hlY2tzdW0gYXR0cmlidXRlIGF0dGFjaGVkXG4gICAqL1xuICBh
ZGRDaGVja3N1bVRvTWFya3VwOiBmdW5jdGlvbiAobWFya3VwKSB7XG4gICAgdmFyIGNoZWNrc3Vt
ID0gYWRsZXIzMihtYXJrdXApO1xuXG4gICAgLy8gQWRkIGNoZWNrc3VtIChoYW5kbGUgYm90aCBw
YXJlbnQgdGFncywgY29tbWVudHMgYW5kIHNlbGYtY2xvc2luZyB0YWdzKVxuICAgIGlmIChDT01N
RU5UX1NUQVJULnRlc3QobWFya3VwKSkge1xuICAgICAgcmV0dXJuIG1hcmt1cDtcbiAgICB9IGVs
c2Uge1xuICAgICAgcmV0dXJuIG1hcmt1cC5yZXBsYWNlKFRBR19FTkQsICcgJyArIFJlYWN0TWFy
a3VwQ2hlY2tzdW0uQ0hFQ0tTVU1fQVRUUl9OQU1FICsgJz1cIicgKyBjaGVja3N1bSArICdcIiQm
Jyk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIHRv
IHVzZVxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGVsZW1lbnQgcm9vdCBSZWFjdCBlbGVtZW50
XG4gICAqIEByZXR1cm5zIHtib29sZWFufSB3aGV0aGVyIG9yIG5vdCB0aGUgbWFya3VwIGlzIHRo
ZSBzYW1lXG4gICAqL1xuICBjYW5SZXVzZU1hcmt1cDogZnVuY3Rpb24gKG1hcmt1cCwgZWxlbWVu
dCkge1xuICAgIHZhciBleGlzdGluZ0NoZWNrc3VtID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoUmVh
Y3RNYXJrdXBDaGVja3N1bS5DSEVDS1NVTV9BVFRSX05BTUUpO1xuICAgIGV4aXN0aW5nQ2hlY2tz
dW0gPSBleGlzdGluZ0NoZWNrc3VtICYmIHBhcnNlSW50KGV4aXN0aW5nQ2hlY2tzdW0sIDEwKTtc
biAgICB2YXIgbWFya3VwQ2hlY2tzdW0gPSBhZGxlcjMyKG1hcmt1cCk7XG4gICAgcmV0dXJuIG1h
cmt1cENoZWNrc3VtID09PSBleGlzdGluZ0NoZWNrc3VtO1xuICB9XG59O1xuXG5tb2R1bGUuZXhw
b3J0cyA9IFJlYWN0TWFya3VwQ2hlY2tzdW07XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiog
V0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdE1hcmt1cENoZWNrc3Vt
LmpzXG4gKiogbW9kdWxlIGlkID0gMTU1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIv
KipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3By
b2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52YXIgUmVh
Y3RDb21wb25lbnRFbnZpcm9ubWVudCA9IHJlcXVpcmUoJy4vUmVhY3RDb21wb25lbnRFbnZpcm9u
bWVudCcpO1xudmFyIFJlYWN0SW5zdGFuY2VNYXAgPSByZXF1aXJlKCcuL1JlYWN0SW5zdGFuY2VN
YXAnKTtcbnZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0cnVt
ZW50YXRpb24nKTtcblxudmFyIFJlYWN0Q3VycmVudE93bmVyID0gcmVxdWlyZSgncmVhY3QvbGli
L1JlYWN0Q3VycmVudE93bmVyJyk7XG52YXIgUmVhY3RSZWNvbmNpbGVyID0gcmVxdWlyZSgnLi9S
ZWFjdFJlY29uY2lsZXInKTtcbnZhciBSZWFjdENoaWxkUmVjb25jaWxlciA9IHJlcXVpcmUoJy4v
UmVhY3RDaGlsZFJlY29uY2lsZXInKTtcblxudmFyIGVtcHR5RnVuY3Rpb24gPSByZXF1aXJlKCdm
YmpzL2xpYi9lbXB0eUZ1bmN0aW9uJyk7XG52YXIgZmxhdHRlbkNoaWxkcmVuID0gcmVxdWlyZSgn
Li9mbGF0dGVuQ2hpbGRyZW4nKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9p
bnZhcmlhbnQnKTtcblxuLyoqXG4gKiBNYWtlIGFuIHVwZGF0ZSBmb3IgbWFya3VwIHRvIGJlIHJl
bmRlcmVkIGFuZCBpbnNlcnRlZCBhdCBhIHN1cHBsaWVkIGluZGV4LlxuICpcbiAqIEBwYXJhbSB7
c3RyaW5nfSBtYXJrdXAgTWFya3VwIHRoYXQgcmVuZGVycyBpbnRvIGFuIGVsZW1lbnQuXG4gKiBA
cGFyYW0ge251bWJlcn0gdG9JbmRleCBEZXN0aW5hdGlvbiBpbmRleC5cbiAqIEBwcml2YXRlXG4g
Ki9cbmZ1bmN0aW9uIG1ha2VJbnNlcnRNYXJrdXAobWFya3VwLCBhZnRlck5vZGUsIHRvSW5kZXgp
IHtcbiAgLy8gTk9URTogTnVsbCB2YWx1ZXMgcmVkdWNlIGhpZGRlbiBjbGFzc2VzLlxuICByZXR1
cm4ge1xuICAgIHR5cGU6ICdJTlNFUlRfTUFSS1VQJyxcbiAgICBjb250ZW50OiBtYXJrdXAsXG4g
ICAgZnJvbUluZGV4OiBudWxsLFxuICAgIGZyb21Ob2RlOiBudWxsLFxuICAgIHRvSW5kZXg6IHRv
SW5kZXgsXG4gICAgYWZ0ZXJOb2RlOiBhZnRlck5vZGVcbiAgfTtcbn1cblxuLyoqXG4gKiBNYWtl
IGFuIHVwZGF0ZSBmb3IgbW92aW5nIGFuIGV4aXN0aW5nIGVsZW1lbnQgdG8gYW5vdGhlciBpbmRl
eC5cbiAqXG4gKiBAcGFyYW0ge251bWJlcn0gZnJvbUluZGV4IFNvdXJjZSBpbmRleCBvZiB0aGUg
ZXhpc3RpbmcgZWxlbWVudC5cbiAqIEBwYXJhbSB7bnVtYmVyfSB0b0luZGV4IERlc3RpbmF0aW9u
IGluZGV4IG9mIHRoZSBlbGVtZW50LlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gbWFrZU1v
dmUoY2hpbGQsIGFmdGVyTm9kZSwgdG9JbmRleCkge1xuICAvLyBOT1RFOiBOdWxsIHZhbHVlcyBy
ZWR1Y2UgaGlkZGVuIGNsYXNzZXMuXG4gIHJldHVybiB7XG4gICAgdHlwZTogJ01PVkVfRVhJU1RJ
TkcnLFxuICAgIGNvbnRlbnQ6IG51bGwsXG4gICAgZnJvbUluZGV4OiBjaGlsZC5fbW91bnRJbmRl
eCxcbiAgICBmcm9tTm9kZTogUmVhY3RSZWNvbmNpbGVyLmdldEhvc3ROb2RlKGNoaWxkKSxcbiAg
ICB0b0luZGV4OiB0b0luZGV4LFxuICAgIGFmdGVyTm9kZTogYWZ0ZXJOb2RlXG4gIH07XG59XG5c
bi8qKlxuICogTWFrZSBhbiB1cGRhdGUgZm9yIHJlbW92aW5nIGFuIGVsZW1lbnQgYXQgYW4gaW5k
ZXguXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRleCBJbmRleCBvZiB0aGUgZWxlbWVu
dCB0byByZW1vdmUuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBtYWtlUmVtb3ZlKGNoaWxk
LCBub2RlKSB7XG4gIC8vIE5PVEU6IE51bGwgdmFsdWVzIHJlZHVjZSBoaWRkZW4gY2xhc3Nlcy5c
biAgcmV0dXJuIHtcbiAgICB0eXBlOiAnUkVNT1ZFX05PREUnLFxuICAgIGNvbnRlbnQ6IG51bGws
XG4gICAgZnJvbUluZGV4OiBjaGlsZC5fbW91bnRJbmRleCxcbiAgICBmcm9tTm9kZTogbm9kZSxc
biAgICB0b0luZGV4OiBudWxsLFxuICAgIGFmdGVyTm9kZTogbnVsbFxuICB9O1xufVxuXG4vKipc
biAqIE1ha2UgYW4gdXBkYXRlIGZvciBzZXR0aW5nIHRoZSBtYXJrdXAgb2YgYSBub2RlLlxuICpc
biAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgTWFya3VwIHRoYXQgcmVuZGVycyBpbnRvIGFuIGVs
ZW1lbnQuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBtYWtlU2V0TWFya3VwKG1hcmt1cCkg
e1xuICAvLyBOT1RFOiBOdWxsIHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNzZXMuXG4gIHJldHVy
biB7XG4gICAgdHlwZTogJ1NFVF9NQVJLVVAnLFxuICAgIGNvbnRlbnQ6IG1hcmt1cCxcbiAgICBm
cm9tSW5kZXg6IG51bGwsXG4gICAgZnJvbU5vZGU6IG51bGwsXG4gICAgdG9JbmRleDogbnVsbCxc
biAgICBhZnRlck5vZGU6IG51bGxcbiAgfTtcbn1cblxuLyoqXG4gKiBNYWtlIGFuIHVwZGF0ZSBm
b3Igc2V0dGluZyB0aGUgdGV4dCBjb250ZW50LlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0
Q29udGVudCBUZXh0IGNvbnRlbnQgdG8gc2V0LlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24g
bWFrZVRleHRDb250ZW50KHRleHRDb250ZW50KSB7XG4gIC8vIE5PVEU6IE51bGwgdmFsdWVzIHJl
ZHVjZSBoaWRkZW4gY2xhc3Nlcy5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnVEVYVF9DT05URU5U
JyxcbiAgICBjb250ZW50OiB0ZXh0Q29udGVudCxcbiAgICBmcm9tSW5kZXg6IG51bGwsXG4gICAg
ZnJvbU5vZGU6IG51bGwsXG4gICAgdG9JbmRleDogbnVsbCxcbiAgICBhZnRlck5vZGU6IG51bGxc
biAgfTtcbn1cblxuLyoqXG4gKiBQdXNoIGFuIHVwZGF0ZSwgaWYgYW55LCBvbnRvIHRoZSBxdWV1
ZS4gQ3JlYXRlcyBhIG5ldyBxdWV1ZSBpZiBub25lIGlzXG4gKiBwYXNzZWQgYW5kIGFsd2F5cyBy
ZXR1cm5zIHRoZSBxdWV1ZS4gTXV0YXRpdmUuXG4gKi9cbmZ1bmN0aW9uIGVucXVldWUocXVldWUs
IHVwZGF0ZSkge1xuICBpZiAodXBkYXRlKSB7XG4gICAgcXVldWUgPSBxdWV1ZSB8fCBbXTtcbiAg
ICBxdWV1ZS5wdXNoKHVwZGF0ZSk7XG4gIH1cbiAgcmV0dXJuIHF1ZXVlO1xufVxuXG4vKipcbiAq
IFByb2Nlc3NlcyBhbnkgZW5xdWV1ZWQgdXBkYXRlcy5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG5m
dW5jdGlvbiBwcm9jZXNzUXVldWUoaW5zdCwgdXBkYXRlUXVldWUpIHtcbiAgUmVhY3RDb21wb25l
bnRFbnZpcm9ubWVudC5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzKGluc3QsIHVwZGF0ZVF1ZXVlKTtc
bn1cblxudmFyIHNldENoaWxkcmVuRm9ySW5zdHJ1bWVudGF0aW9uID0gZW1wdHlGdW5jdGlvbjtc
bmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBnZXRE
ZWJ1Z0lEID0gZnVuY3Rpb24gKGluc3QpIHtcbiAgICBpZiAoIWluc3QuX2RlYnVnSUQpIHtcbiAg
ICAgIC8vIENoZWNrIGZvciBBUlQtbGlrZSBpbnN0YW5jZXMuIFRPRE86IFRoaXMgaXMgc2lsbHkv
Z3Jvc3MuXG4gICAgICB2YXIgaW50ZXJuYWw7XG4gICAgICBpZiAoaW50ZXJuYWwgPSBSZWFjdElu
c3RhbmNlTWFwLmdldChpbnN0KSkge1xuICAgICAgICBpbnN0ID0gaW50ZXJuYWw7XG4gICAgICB9
XG4gICAgfVxuICAgIHJldHVybiBpbnN0Ll9kZWJ1Z0lEO1xuICB9O1xuICBzZXRDaGlsZHJlbkZv
ckluc3RydW1lbnRhdGlvbiA9IGZ1bmN0aW9uIChjaGlsZHJlbikge1xuICAgIHZhciBkZWJ1Z0lE
ID0gZ2V0RGVidWdJRCh0aGlzKTtcbiAgICAvLyBUT0RPOiBSZWFjdCBOYXRpdmUgZW1wdHkgY29t
cG9uZW50cyBhcmUgYWxzbyBtdWx0aWNoaWxkLlxuICAgIC8vIFRoaXMgbWVhbnMgdGhleSBzdGls
bCBnZXQgaW50byB0aGlzIG1ldGhvZCBidXQgZG9uJ3QgaGF2ZSBfZGVidWdJRC5cbiAgICBpZiAo
ZGVidWdJRCAhPT0gMCkge1xuICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9u
U2V0Q2hpbGRyZW4oZGVidWdJRCwgY2hpbGRyZW4gPyBPYmplY3Qua2V5cyhjaGlsZHJlbikubWFw
KGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgICAgcmV0dXJuIGNoaWxkcmVuW2tleV0uX2RlYnVnSUQ7
XG4gICAgICB9KSA6IFtdKTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogUmVhY3RNdWx0aUNo
aWxkIGFyZSBjYXBhYmxlIG9mIHJlY29uY2lsaW5nIG11bHRpcGxlIGNoaWxkcmVuLlxuICpcbiAq
IEBjbGFzcyBSZWFjdE11bHRpQ2hpbGRcbiAqIEBpbnRlcm5hbFxuICovXG52YXIgUmVhY3RNdWx0
aUNoaWxkID0ge1xuICAvKipcbiAgICogUHJvdmlkZXMgY29tbW9uIGZ1bmN0aW9uYWxpdHkgZm9y
IGNvbXBvbmVudHMgdGhhdCBtdXN0IHJlY29uY2lsZSBtdWx0aXBsZVxuICAgKiBjaGlsZHJlbi4g
VGhpcyBpcyB1c2VkIGJ5IGBSZWFjdERPTUNvbXBvbmVudGAgdG8gbW91bnQsIHVwZGF0ZSwgYW5k
XG4gICAqIHVubW91bnQgY2hpbGQgY29tcG9uZW50cy5cbiAgICpcbiAgICogQGxlbmRzIHtSZWFj
dE11bHRpQ2hpbGQucHJvdG90eXBlfVxuICAgKi9cbiAgTWl4aW46IHtcbiAgICBfcmVjb25jaWxl
ckluc3RhbnRpYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChuZXN0ZWRDaGlsZHJlbiwgdHJhbnNhY3Rp
b24sIGNvbnRleHQpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nKSB7XG4gICAgICAgIHZhciBzZWxmRGVidWdJRCA9IGdldERlYnVnSUQodGhpcyk7XG4g
ICAgICAgIGlmICh0aGlzLl9jdXJyZW50RWxlbWVudCkge1xuICAgICAgICAgIHRyeSB7XG4gICAg
ICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQu
X293bmVyO1xuICAgICAgICAgICAgcmV0dXJuIFJlYWN0Q2hpbGRSZWNvbmNpbGVyLmluc3RhbnRp
YXRlQ2hpbGRyZW4obmVzdGVkQ2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0LCBzZWxmRGVi
dWdJRCk7XG4gICAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIFJlYWN0Q3VycmVudE93
bmVyLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAg
ICAgcmV0dXJuIFJlYWN0Q2hpbGRSZWNvbmNpbGVyLmluc3RhbnRpYXRlQ2hpbGRyZW4obmVzdGVk
Q2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICB9LFxuXG4gICAgX3JlY29uY2ls
ZXJVcGRhdGVDaGlsZHJlbjogZnVuY3Rpb24gKHByZXZDaGlsZHJlbiwgbmV4dE5lc3RlZENoaWxk
cmVuRWxlbWVudHMsIG1vdW50SW1hZ2VzLCByZW1vdmVkTm9kZXMsIHRyYW5zYWN0aW9uLCBjb250
ZXh0KSB7XG4gICAgICB2YXIgbmV4dENoaWxkcmVuO1xuICAgICAgdmFyIHNlbGZEZWJ1Z0lEID0g
MDtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
ICAgICAgIHNlbGZEZWJ1Z0lEID0gZ2V0RGVidWdJRCh0aGlzKTtcbiAgICAgICAgaWYgKHRoaXMu
X2N1cnJlbnRFbGVtZW50KSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIFJlYWN0Q3Vy
cmVudE93bmVyLmN1cnJlbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5fb3duZXI7XG4gICAgICAg
ICAgICBuZXh0Q2hpbGRyZW4gPSBmbGF0dGVuQ2hpbGRyZW4obmV4dE5lc3RlZENoaWxkcmVuRWxl
bWVudHMsIHNlbGZEZWJ1Z0lEKTtcbiAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAg
UmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IG51bGw7XG4gICAgICAgICAgfVxuICAgICAgICAg
IFJlYWN0Q2hpbGRSZWNvbmNpbGVyLnVwZGF0ZUNoaWxkcmVuKHByZXZDaGlsZHJlbiwgbmV4dENo
aWxkcmVuLCBtb3VudEltYWdlcywgcmVtb3ZlZE5vZGVzLCB0cmFuc2FjdGlvbiwgdGhpcywgdGhp
cy5faG9zdENvbnRhaW5lckluZm8sIGNvbnRleHQsIHNlbGZEZWJ1Z0lEKTtcbiAgICAgICAgICBy
ZXR1cm4gbmV4dENoaWxkcmVuO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBuZXh0Q2hpbGRy
ZW4gPSBmbGF0dGVuQ2hpbGRyZW4obmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIHNlbGZEZWJ1
Z0lEKTtcbiAgICAgIFJlYWN0Q2hpbGRSZWNvbmNpbGVyLnVwZGF0ZUNoaWxkcmVuKHByZXZDaGls
ZHJlbiwgbmV4dENoaWxkcmVuLCBtb3VudEltYWdlcywgcmVtb3ZlZE5vZGVzLCB0cmFuc2FjdGlv
biwgdGhpcywgdGhpcy5faG9zdENvbnRhaW5lckluZm8sIGNvbnRleHQsIHNlbGZEZWJ1Z0lEKTtc
biAgICAgIHJldHVybiBuZXh0Q2hpbGRyZW47XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEdl
bmVyYXRlcyBhIFwibW91bnQgaW1hZ2VcIiBmb3IgZWFjaCBvZiB0aGUgc3VwcGxpZWQgY2hpbGRy
ZW4uIEluIHRoZSBjYXNlXG4gICAgICogb2YgYFJlYWN0RE9NQ29tcG9uZW50YCwgYSBtb3VudCBp
bWFnZSBpcyBhIHN0cmluZyBvZiBtYXJrdXAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0gez9vYmpl
Y3R9IG5lc3RlZENoaWxkcmVuIE5lc3RlZCBjaGlsZCBtYXBzLlxuICAgICAqIEByZXR1cm4ge2Fy
cmF5fSBBbiBhcnJheSBvZiBtb3VudGVkIHJlcHJlc2VudGF0aW9ucy5cbiAgICAgKiBAaW50ZXJu
YWxcbiAgICAgKi9cbiAgICBtb3VudENoaWxkcmVuOiBmdW5jdGlvbiAobmVzdGVkQ2hpbGRyZW4s
IHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgICB2YXIgY2hpbGRyZW4gPSB0aGlzLl9yZWNv
bmNpbGVySW5zdGFudGlhdGVDaGlsZHJlbihuZXN0ZWRDaGlsZHJlbiwgdHJhbnNhY3Rpb24sIGNv
bnRleHQpO1xuICAgICAgdGhpcy5fcmVuZGVyZWRDaGlsZHJlbiA9IGNoaWxkcmVuO1xuXG4gICAg
ICB2YXIgbW91bnRJbWFnZXMgPSBbXTtcbiAgICAgIHZhciBpbmRleCA9IDA7XG4gICAgICBmb3Ig
KHZhciBuYW1lIGluIGNoaWxkcmVuKSB7XG4gICAgICAgIGlmIChjaGlsZHJlbi5oYXNPd25Qcm9w
ZXJ0eShuYW1lKSkge1xuICAgICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW25hbWVdO1xuICAg
ICAgICAgIHZhciBzZWxmRGVidWdJRCA9IDA7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIHNlbGZEZWJ1Z0lEID0gZ2V0
RGVidWdJRCh0aGlzKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdmFyIG1vdW50SW1hZ2UgPSBS
ZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQoY2hpbGQsIHRyYW5zYWN0aW9uLCB0aGlzLCB0
aGlzLl9ob3N0Q29udGFpbmVySW5mbywgY29udGV4dCwgc2VsZkRlYnVnSUQpO1xuICAgICAgICAg
IGNoaWxkLl9tb3VudEluZGV4ID0gaW5kZXgrKztcbiAgICAgICAgICBtb3VudEltYWdlcy5wdXNo
KG1vdW50SW1hZ2UpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHNldENoaWxkcmVuRm9ySW5z
dHJ1bWVudGF0aW9uLmNhbGwodGhpcywgY2hpbGRyZW4pO1xuICAgICAgfVxuXG4gICAgICByZXR1
cm4gbW91bnRJbWFnZXM7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIFJlcGxhY2VzIGFueSBy
ZW5kZXJlZCBjaGlsZHJlbiB3aXRoIGEgdGV4dCBjb250ZW50IHN0cmluZy5cbiAgICAgKlxuICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBuZXh0Q29udGVudCBTdHJpbmcgb2YgY29udGVudC5cbiAgICAg
KiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICB1cGRhdGVUZXh0Q29udGVudDogZnVuY3Rpb24gKG5l
eHRDb250ZW50KSB7XG4gICAgICB2YXIgcHJldkNoaWxkcmVuID0gdGhpcy5fcmVuZGVyZWRDaGls
ZHJlbjtcbiAgICAgIC8vIFJlbW92ZSBhbnkgcmVuZGVyZWQgY2hpbGRyZW4uXG4gICAgICBSZWFj
dENoaWxkUmVjb25jaWxlci51bm1vdW50Q2hpbGRyZW4ocHJldkNoaWxkcmVuLCBmYWxzZSk7XG4g
ICAgICBmb3IgKHZhciBuYW1lIGluIHByZXZDaGlsZHJlbikge1xuICAgICAgICBpZiAocHJldkNo
aWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgICAgIWZhbHNlID8gcHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3VwZGF0
ZVRleHRDb250ZW50IGNhbGxlZCBvbiBub24tZW1wdHkgY29tcG9uZW50LicpIDogX3Byb2RJbnZh
cmlhbnQoJzExOCcpIDogdm9pZCAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICAvLyBTZXQg
bmV3IHRleHQgY29udGVudC5cbiAgICAgIHZhciB1cGRhdGVzID0gW21ha2VUZXh0Q29udGVudChu
ZXh0Q29udGVudCldO1xuICAgICAgcHJvY2Vzc1F1ZXVlKHRoaXMsIHVwZGF0ZXMpO1xuICAgIH0s
XG5cbiAgICAvKipcbiAgICAgKiBSZXBsYWNlcyBhbnkgcmVuZGVyZWQgY2hpbGRyZW4gd2l0aCBh
IG1hcmt1cCBzdHJpbmcuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmV4dE1hcmt1
cCBTdHJpbmcgb2YgbWFya3VwLlxuICAgICAqIEBpbnRlcm5hbFxuICAgICAqL1xuICAgIHVwZGF0
ZU1hcmt1cDogZnVuY3Rpb24gKG5leHRNYXJrdXApIHtcbiAgICAgIHZhciBwcmV2Q2hpbGRyZW4g
PSB0aGlzLl9yZW5kZXJlZENoaWxkcmVuO1xuICAgICAgLy8gUmVtb3ZlIGFueSByZW5kZXJlZCBj
aGlsZHJlbi5cbiAgICAgIFJlYWN0Q2hpbGRSZWNvbmNpbGVyLnVubW91bnRDaGlsZHJlbihwcmV2
Q2hpbGRyZW4sIGZhbHNlKTtcbiAgICAgIGZvciAodmFyIG5hbWUgaW4gcHJldkNoaWxkcmVuKSB7
XG4gICAgICAgIGlmIChwcmV2Q2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAg
ICAgICAhZmFsc2UgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52
YXJpYW50KGZhbHNlLCAndXBkYXRlVGV4dENvbnRlbnQgY2FsbGVkIG9uIG5vbi1lbXB0eSBjb21w
b25lbnQuJykgOiBfcHJvZEludmFyaWFudCgnMTE4JykgOiB2b2lkIDA7XG4gICAgICAgIH1cbiAg
ICAgIH1cbiAgICAgIHZhciB1cGRhdGVzID0gW21ha2VTZXRNYXJrdXAobmV4dE1hcmt1cCldO1xu
ICAgICAgcHJvY2Vzc1F1ZXVlKHRoaXMsIHVwZGF0ZXMpO1xuICAgIH0sXG5cbiAgICAvKipcbiAg
ICAgKiBVcGRhdGVzIHRoZSByZW5kZXJlZCBjaGlsZHJlbiB3aXRoIG5ldyBjaGlsZHJlbi5cbiAg
ICAgKlxuICAgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMg
TmVzdGVkIGNoaWxkIGVsZW1lbnQgbWFwcy5cbiAgICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxl
VHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAg
dXBkYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cywgdHJh
bnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICAgIC8vIEhvb2sgdXNlZCBieSBSZWFjdCBBUlRcbiAg
ICAgIHRoaXMuX3VwZGF0ZUNoaWxkcmVuKG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCB0cmFu
c2FjdGlvbiwgY29udGV4dCk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIEBwYXJhbSB7P29i
amVjdH0gbmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMgTmVzdGVkIGNoaWxkIGVsZW1lbnQgbWFw
cy5cbiAgICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9u
XG4gICAgICogQGZpbmFsXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqL1xuICAgIF91cGRhdGVD
aGlsZHJlbjogZnVuY3Rpb24gKG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCB0cmFuc2FjdGlv
biwgY29udGV4dCkge1xuICAgICAgdmFyIHByZXZDaGlsZHJlbiA9IHRoaXMuX3JlbmRlcmVkQ2hp
bGRyZW47XG4gICAgICB2YXIgcmVtb3ZlZE5vZGVzID0ge307XG4gICAgICB2YXIgbW91bnRJbWFn
ZXMgPSBbXTtcbiAgICAgIHZhciBuZXh0Q2hpbGRyZW4gPSB0aGlzLl9yZWNvbmNpbGVyVXBkYXRl
Q2hpbGRyZW4ocHJldkNoaWxkcmVuLCBuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cywgbW91bnRJ
bWFnZXMsIHJlbW92ZWROb2RlcywgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgICAgaWYgKCFu
ZXh0Q2hpbGRyZW4gJiYgIXByZXZDaGlsZHJlbikge1xuICAgICAgICByZXR1cm47XG4gICAgICB9
XG4gICAgICB2YXIgdXBkYXRlcyA9IG51bGw7XG4gICAgICB2YXIgbmFtZTtcbiAgICAgIC8vIGBu
ZXh0SW5kZXhgIHdpbGwgaW5jcmVtZW50IGZvciBlYWNoIGNoaWxkIGluIGBuZXh0Q2hpbGRyZW5g
LCBidXRcbiAgICAgIC8vIGBsYXN0SW5kZXhgIHdpbGwgYmUgdGhlIGxhc3QgaW5kZXggdmlzaXRl
ZCBpbiBgcHJldkNoaWxkcmVuYC5cbiAgICAgIHZhciBuZXh0SW5kZXggPSAwO1xuICAgICAgdmFy
IGxhc3RJbmRleCA9IDA7XG4gICAgICAvLyBgbmV4dE1vdW50SW5kZXhgIHdpbGwgaW5jcmVtZW50
IGZvciBlYWNoIG5ld2x5IG1vdW50ZWQgY2hpbGQuXG4gICAgICB2YXIgbmV4dE1vdW50SW5kZXgg
PSAwO1xuICAgICAgdmFyIGxhc3RQbGFjZWROb2RlID0gbnVsbDtcbiAgICAgIGZvciAobmFtZSBp
biBuZXh0Q2hpbGRyZW4pIHtcbiAgICAgICAgaWYgKCFuZXh0Q2hpbGRyZW4uaGFzT3duUHJvcGVy
dHkobmFtZSkpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIg
cHJldkNoaWxkID0gcHJldkNoaWxkcmVuICYmIHByZXZDaGlsZHJlbltuYW1lXTtcbiAgICAgICAg
dmFyIG5leHRDaGlsZCA9IG5leHRDaGlsZHJlbltuYW1lXTtcbiAgICAgICAgaWYgKHByZXZDaGls
ZCA9PT0gbmV4dENoaWxkKSB7XG4gICAgICAgICAgdXBkYXRlcyA9IGVucXVldWUodXBkYXRlcywg
dGhpcy5tb3ZlQ2hpbGQocHJldkNoaWxkLCBsYXN0UGxhY2VkTm9kZSwgbmV4dEluZGV4LCBsYXN0
SW5kZXgpKTtcbiAgICAgICAgICBsYXN0SW5kZXggPSBNYXRoLm1heChwcmV2Q2hpbGQuX21vdW50
SW5kZXgsIGxhc3RJbmRleCk7XG4gICAgICAgICAgcHJldkNoaWxkLl9tb3VudEluZGV4ID0gbmV4
dEluZGV4O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGlmIChwcmV2Q2hpbGQpIHtcbiAg
ICAgICAgICAgIC8vIFVwZGF0ZSBgbGFzdEluZGV4YCBiZWZvcmUgYF9tb3VudEluZGV4YCBnZXRz
IHVuc2V0IGJ5IHVubW91bnRpbmcuXG4gICAgICAgICAgICBsYXN0SW5kZXggPSBNYXRoLm1heChw
cmV2Q2hpbGQuX21vdW50SW5kZXgsIGxhc3RJbmRleCk7XG4gICAgICAgICAgICAvLyBUaGUgYHJl
bW92ZWROb2Rlc2AgbG9vcCBiZWxvdyB3aWxsIGFjdHVhbGx5IHJlbW92ZSB0aGUgY2hpbGQuXG4g
ICAgICAgICAgfVxuICAgICAgICAgIC8vIFRoZSBjaGlsZCBtdXN0IGJlIGluc3RhbnRpYXRlZCBi
ZWZvcmUgaXQncyBtb3VudGVkLlxuICAgICAgICAgIHVwZGF0ZXMgPSBlbnF1ZXVlKHVwZGF0ZXMs
IHRoaXMuX21vdW50Q2hpbGRBdEluZGV4KG5leHRDaGlsZCwgbW91bnRJbWFnZXNbbmV4dE1vdW50
SW5kZXhdLCBsYXN0UGxhY2VkTm9kZSwgbmV4dEluZGV4LCB0cmFuc2FjdGlvbiwgY29udGV4dCkp
O1xuICAgICAgICAgIG5leHRNb3VudEluZGV4Kys7XG4gICAgICAgIH1cbiAgICAgICAgbmV4dElu
ZGV4Kys7XG4gICAgICAgIGxhc3RQbGFjZWROb2RlID0gUmVhY3RSZWNvbmNpbGVyLmdldEhvc3RO
b2RlKG5leHRDaGlsZCk7XG4gICAgICB9XG4gICAgICAvLyBSZW1vdmUgY2hpbGRyZW4gdGhhdCBh
cmUgbm8gbG9uZ2VyIHByZXNlbnQuXG4gICAgICBmb3IgKG5hbWUgaW4gcmVtb3ZlZE5vZGVzKSB7
XG4gICAgICAgIGlmIChyZW1vdmVkTm9kZXMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAg
ICAgICB1cGRhdGVzID0gZW5xdWV1ZSh1cGRhdGVzLCB0aGlzLl91bm1vdW50Q2hpbGQocHJldkNo
aWxkcmVuW25hbWVdLCByZW1vdmVkTm9kZXNbbmFtZV0pKTtcbiAgICAgICAgfVxuICAgICAgfVxu
ICAgICAgaWYgKHVwZGF0ZXMpIHtcbiAgICAgICAgcHJvY2Vzc1F1ZXVlKHRoaXMsIHVwZGF0ZXMp
O1xuICAgICAgfVxuICAgICAgdGhpcy5fcmVuZGVyZWRDaGlsZHJlbiA9IG5leHRDaGlsZHJlbjtc
blxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAg
ICAgICAgc2V0Q2hpbGRyZW5Gb3JJbnN0cnVtZW50YXRpb24uY2FsbCh0aGlzLCBuZXh0Q2hpbGRy
ZW4pO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBVbm1vdW50cyBhbGwgcmVu
ZGVyZWQgY2hpbGRyZW4uIFRoaXMgc2hvdWxkIGJlIHVzZWQgdG8gY2xlYW4gdXAgY2hpbGRyZW5c
biAgICAgKiB3aGVuIHRoaXMgY29tcG9uZW50IGlzIHVubW91bnRlZC4gSXQgZG9lcyBub3QgYWN0
dWFsbHkgcGVyZm9ybSBhbnlcbiAgICAgKiBiYWNrZW5kIG9wZXJhdGlvbnMuXG4gICAgICpcbiAg
ICAgKiBAaW50ZXJuYWxcbiAgICAgKi9cbiAgICB1bm1vdW50Q2hpbGRyZW46IGZ1bmN0aW9uIChz
YWZlbHkpIHtcbiAgICAgIHZhciByZW5kZXJlZENoaWxkcmVuID0gdGhpcy5fcmVuZGVyZWRDaGls
ZHJlbjtcbiAgICAgIFJlYWN0Q2hpbGRSZWNvbmNpbGVyLnVubW91bnRDaGlsZHJlbihyZW5kZXJl
ZENoaWxkcmVuLCBzYWZlbHkpO1xuICAgICAgdGhpcy5fcmVuZGVyZWRDaGlsZHJlbiA9IG51bGw7
XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIE1vdmVzIGEgY2hpbGQgY29tcG9uZW50IHRvIHRo
ZSBzdXBwbGllZCBpbmRleC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9
IGNoaWxkIENvbXBvbmVudCB0byBtb3ZlLlxuICAgICAqIEBwYXJhbSB7bnVtYmVyfSB0b0luZGV4
IERlc3RpbmF0aW9uIGluZGV4IG9mIHRoZSBlbGVtZW50LlxuICAgICAqIEBwYXJhbSB7bnVtYmVy
fSBsYXN0SW5kZXggTGFzdCBpbmRleCB2aXNpdGVkIG9mIHRoZSBzaWJsaW5ncyBvZiBgY2hpbGRg
LlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBtb3ZlQ2hpbGQ6IGZ1bmN0aW9uIChj
aGlsZCwgYWZ0ZXJOb2RlLCB0b0luZGV4LCBsYXN0SW5kZXgpIHtcbiAgICAgIC8vIElmIHRoZSBp
bmRleCBvZiBgY2hpbGRgIGlzIGxlc3MgdGhhbiBgbGFzdEluZGV4YCwgdGhlbiBpdCBuZWVkcyB0
b1xuICAgICAgLy8gYmUgbW92ZWQuIE90aGVyd2lzZSwgd2UgZG8gbm90IG5lZWQgdG8gbW92ZSBp
dCBiZWNhdXNlIGEgY2hpbGQgd2lsbCBiZVxuICAgICAgLy8gaW5zZXJ0ZWQgb3IgbW92ZWQgYmVm
b3JlIGBjaGlsZGAuXG4gICAgICBpZiAoY2hpbGQuX21vdW50SW5kZXggPCBsYXN0SW5kZXgpIHtc
biAgICAgICAgcmV0dXJuIG1ha2VNb3ZlKGNoaWxkLCBhZnRlck5vZGUsIHRvSW5kZXgpO1xuICAg
ICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGVzIGEgY2hpbGQgY29tcG9uZW50
LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY2hpbGQgQ29tcG9uZW50
IHRvIGNyZWF0ZS5cbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbW91bnRJbWFnZSBNYXJrdXAgdG8g
aW5zZXJ0LlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICBjcmVhdGVDaGlsZDogZnVu
Y3Rpb24gKGNoaWxkLCBhZnRlck5vZGUsIG1vdW50SW1hZ2UpIHtcbiAgICAgIHJldHVybiBtYWtl
SW5zZXJ0TWFya3VwKG1vdW50SW1hZ2UsIGFmdGVyTm9kZSwgY2hpbGQuX21vdW50SW5kZXgpO1xu
ICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBSZW1vdmVzIGEgY2hpbGQgY29tcG9uZW50LlxuICAg
ICAqXG4gICAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY2hpbGQgQ2hpbGQgdG8gcmVtb3Zl
LlxuICAgICAqIEBwcm90ZWN0ZWRcbiAgICAgKi9cbiAgICByZW1vdmVDaGlsZDogZnVuY3Rpb24g
KGNoaWxkLCBub2RlKSB7XG4gICAgICByZXR1cm4gbWFrZVJlbW92ZShjaGlsZCwgbm9kZSk7XG4g
ICAgfSxcblxuICAgIC8qKlxuICAgICAqIE1vdW50cyBhIGNoaWxkIHdpdGggdGhlIHN1cHBsaWVk
IG5hbWUuXG4gICAgICpcbiAgICAgKiBOT1RFOiBUaGlzIGlzIHBhcnQgb2YgYHVwZGF0ZUNoaWxk
cmVuYCBhbmQgaXMgaGVyZSBmb3IgcmVhZGFiaWxpdHkuXG4gICAgICpcbiAgICAgKiBAcGFyYW0g
e1JlYWN0Q29tcG9uZW50fSBjaGlsZCBDb21wb25lbnQgdG8gbW91bnQuXG4gICAgICogQHBhcmFt
IHtzdHJpbmd9IG5hbWUgTmFtZSBvZiB0aGUgY2hpbGQuXG4gICAgICogQHBhcmFtIHtudW1iZXJ9
IGluZGV4IEluZGV4IGF0IHdoaWNoIHRvIGluc2VydCB0aGUgY2hpbGQuXG4gICAgICogQHBhcmFt
IHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgICAqIEBwcml2YXRl
XG4gICAgICovXG4gICAgX21vdW50Q2hpbGRBdEluZGV4OiBmdW5jdGlvbiAoY2hpbGQsIG1vdW50
SW1hZ2UsIGFmdGVyTm9kZSwgaW5kZXgsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgICBj
aGlsZC5fbW91bnRJbmRleCA9IGluZGV4O1xuICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlQ2hpbGQo
Y2hpbGQsIGFmdGVyTm9kZSwgbW91bnRJbWFnZSk7XG4gICAgfSxcblxuICAgIC8qKlxuICAgICAq
IFVubW91bnRzIGEgcmVuZGVyZWQgY2hpbGQuXG4gICAgICpcbiAgICAgKiBOT1RFOiBUaGlzIGlz
IHBhcnQgb2YgYHVwZGF0ZUNoaWxkcmVuYCBhbmQgaXMgaGVyZSBmb3IgcmVhZGFiaWxpdHkuXG4g
ICAgICpcbiAgICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjaGlsZCBDb21wb25lbnQgdG8g
dW5tb3VudC5cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIF91bm1vdW50Q2hpbGQ6IGZ1
bmN0aW9uIChjaGlsZCwgbm9kZSkge1xuICAgICAgdmFyIHVwZGF0ZSA9IHRoaXMucmVtb3ZlQ2hp
bGQoY2hpbGQsIG5vZGUpO1xuICAgICAgY2hpbGQuX21vdW50SW5kZXggPSBudWxsO1xuICAgICAg
cmV0dXJuIHVwZGF0ZTtcbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RN
dWx0aUNoaWxkO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4g
KiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RNdWx0aUNoaWxkLmpzXG4gKiogbW9kdWxlIGlkID0g
MTU2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
biAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJl
cXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50Jyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJl
KCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKiBAcGFyYW0gez9vYmplY3R9IG9iamVj
dFxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBgb2JqZWN0YCBpcyBhIHZhbGlkIG93bmVy
LlxuICogQGZpbmFsXG4gKi9cbmZ1bmN0aW9uIGlzVmFsaWRPd25lcihvYmplY3QpIHtcbiAgcmV0
dXJuICEhKG9iamVjdCAmJiB0eXBlb2Ygb2JqZWN0LmF0dGFjaFJlZiA9PT0gJ2Z1bmN0aW9uJyAm
JiB0eXBlb2Ygb2JqZWN0LmRldGFjaFJlZiA9PT0gJ2Z1bmN0aW9uJyk7XG59XG5cbi8qKlxuICog
UmVhY3RPd25lcnMgYXJlIGNhcGFibGUgb2Ygc3RvcmluZyByZWZlcmVuY2VzIHRvIG93bmVkIGNv
bXBvbmVudHMuXG4gKlxuICogQWxsIGNvbXBvbmVudHMgYXJlIGNhcGFibGUgb2YgLy9iZWluZy8v
IHJlZmVyZW5jZWQgYnkgb3duZXIgY29tcG9uZW50cywgYnV0XG4gKiBvbmx5IFJlYWN0T3duZXIg
Y29tcG9uZW50cyBhcmUgY2FwYWJsZSBvZiAvL3JlZmVyZW5jaW5nLy8gb3duZWQgY29tcG9uZW50
cy5cbiAqIFRoZSBuYW1lZCByZWZlcmVuY2UgaXMga25vd24gYXMgYSBcInJlZlwiLlxuICpcbiAq
IFJlZnMgYXJlIGF2YWlsYWJsZSB3aGVuIG1vdW50ZWQgYW5kIHVwZGF0ZWQgZHVyaW5nIHJlY29u
Y2lsaWF0aW9uLlxuICpcbiAqICAgdmFyIE15Q29tcG9uZW50ID0gUmVhY3QuY3JlYXRlQ2xhc3Mo
e1xuICogICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7XG4gKiAgICAgICByZXR1cm4gKFxuICogICAg
ICAgICA8ZGl2IG9uQ2xpY2s9e3RoaXMuaGFuZGxlQ2xpY2t9PlxuICogICAgICAgICAgIDxDdXN0
b21Db21wb25lbnQgcmVmPVwiY3VzdG9tXCIgLz5cbiAqICAgICAgICAgPC9kaXY+XG4gKiAgICAg
ICApO1xuICogICAgIH0sXG4gKiAgICAgaGFuZGxlQ2xpY2s6IGZ1bmN0aW9uKCkge1xuICogICAg
ICAgdGhpcy5yZWZzLmN1c3RvbS5oYW5kbGVDbGljaygpO1xuICogICAgIH0sXG4gKiAgICAgY29t
cG9uZW50RGlkTW91bnQ6IGZ1bmN0aW9uKCkge1xuICogICAgICAgdGhpcy5yZWZzLmN1c3RvbS5p
bml0aWFsaXplKCk7XG4gKiAgICAgfVxuICogICB9KTtcbiAqXG4gKiBSZWZzIHNob3VsZCByYXJl
bHkgYmUgdXNlZC4gV2hlbiByZWZzIGFyZSB1c2VkLCB0aGV5IHNob3VsZCBvbmx5IGJlIGRvbmUg
dG9cbiAqIGNvbnRyb2wgZGF0YSB0aGF0IGlzIG5vdCBoYW5kbGVkIGJ5IFJlYWN0J3MgZGF0YSBm
bG93LlxuICpcbiAqIEBjbGFzcyBSZWFjdE93bmVyXG4gKi9cbnZhciBSZWFjdE93bmVyID0ge1xu
ICAvKipcbiAgICogQWRkcyBhIGNvbXBvbmVudCBieSByZWYgdG8gYW4gb3duZXIgY29tcG9uZW50
LlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjb21wb25lbnQgQ29tcG9uZW50
IHRvIHJlZmVyZW5jZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZiBOYW1lIGJ5IHdoaWNoIHRv
IHJlZmVyIHRvIHRoZSBjb21wb25lbnQuXG4gICAqIEBwYXJhbSB7UmVhY3RPd25lcn0gb3duZXIg
Q29tcG9uZW50IG9uIHdoaWNoIHRvIHJlY29yZCB0aGUgcmVmLlxuICAgKiBAZmluYWxcbiAgICog
QGludGVybmFsXG4gICAqL1xuICBhZGRDb21wb25lbnRBc1JlZlRvOiBmdW5jdGlvbiAoY29tcG9u
ZW50LCByZWYsIG93bmVyKSB7XG4gICAgIWlzVmFsaWRPd25lcihvd25lcikgPyBwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnYWRkQ29tcG9u
ZW50QXNSZWZUbyguLi4pOiBPbmx5IGEgUmVhY3RPd25lciBjYW4gaGF2ZSByZWZzLiBZb3UgbWln
aHQgYmUgYWRkaW5nIGEgcmVmIHRvIGEgY29tcG9uZW50IHRoYXQgd2FzIG5vdCBjcmVhdGVkIGlu
c2lkZSBhIGNvbXBvbmVudFxcJ3MgYHJlbmRlcmAgbWV0aG9kLCBvciB5b3UgaGF2ZSBtdWx0aXBs
ZSBjb3BpZXMgb2YgUmVhY3QgbG9hZGVkIChkZXRhaWxzOiBodHRwczovL2ZiLm1lL3JlYWN0LXJl
ZnMtbXVzdC1oYXZlLW93bmVyKS4nKSA6IF9wcm9kSW52YXJpYW50KCcxMTknKSA6IHZvaWQgMDtc
biAgICBvd25lci5hdHRhY2hSZWYocmVmLCBjb21wb25lbnQpO1xuICB9LFxuXG4gIC8qKlxuICAg
KiBSZW1vdmVzIGEgY29tcG9uZW50IGJ5IHJlZiBmcm9tIGFuIG93bmVyIGNvbXBvbmVudC5cbiAg
ICpcbiAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY29tcG9uZW50IENvbXBvbmVudCB0byBk
ZXJlZmVyZW5jZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZiBOYW1lIG9mIHRoZSByZWYgdG8g
cmVtb3ZlLlxuICAgKiBAcGFyYW0ge1JlYWN0T3duZXJ9IG93bmVyIENvbXBvbmVudCBvbiB3aGlj
aCB0aGUgcmVmIGlzIHJlY29yZGVkLlxuICAgKiBAZmluYWxcbiAgICogQGludGVybmFsXG4gICAq
L1xuICByZW1vdmVDb21wb25lbnRBc1JlZkZyb206IGZ1bmN0aW9uIChjb21wb25lbnQsIHJlZiwg
b3duZXIpIHtcbiAgICAhaXNWYWxpZE93bmVyKG93bmVyKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdyZW1vdmVDb21wb25lbnRBc1Jl
ZkZyb20oLi4uKTogT25seSBhIFJlYWN0T3duZXIgY2FuIGhhdmUgcmVmcy4gWW91IG1pZ2h0IGJl
IHJlbW92aW5nIGEgcmVmIHRvIGEgY29tcG9uZW50IHRoYXQgd2FzIG5vdCBjcmVhdGVkIGluc2lk
ZSBhIGNvbXBvbmVudFxcJ3MgYHJlbmRlcmAgbWV0aG9kLCBvciB5b3UgaGF2ZSBtdWx0aXBsZSBj
b3BpZXMgb2YgUmVhY3QgbG9hZGVkIChkZXRhaWxzOiBodHRwczovL2ZiLm1lL3JlYWN0LXJlZnMt
bXVzdC1oYXZlLW93bmVyKS4nKSA6IF9wcm9kSW52YXJpYW50KCcxMjAnKSA6IHZvaWQgMDtcbiAg
ICB2YXIgb3duZXJQdWJsaWNJbnN0YW5jZSA9IG93bmVyLmdldFB1YmxpY0luc3RhbmNlKCk7XG4g
ICAgLy8gQ2hlY2sgdGhhdCBgY29tcG9uZW50YCdzIG93bmVyIGlzIHN0aWxsIGFsaXZlIGFuZCB0
aGF0IGBjb21wb25lbnRgIGlzIHN0aWxsIHRoZSBjdXJyZW50IHJlZlxuICAgIC8vIGJlY2F1c2Ug
d2UgZG8gbm90IHdhbnQgdG8gZGV0YWNoIHRoZSByZWYgaWYgYW5vdGhlciBjb21wb25lbnQgc3Rv
bGUgaXQuXG4gICAgaWYgKG93bmVyUHVibGljSW5zdGFuY2UgJiYgb3duZXJQdWJsaWNJbnN0YW5j
ZS5yZWZzW3JlZl0gPT09IGNvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpKSB7XG4gICAgICBv
d25lci5kZXRhY2hSZWYocmVmKTtcbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0g
UmVhY3RPd25lcjtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxu
ICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0T3duZXIuanNcbiAqKiBtb2R1bGUgaWQgPSAxNTdc
biAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpc
biAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0g
J1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJztcblxubW9kdWxl
LmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtcblxuXG4vKioqKioqKioqKioqKioqKipc
biAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0UHJvcFR5cGVz
U2VjcmV0LmpzXG4gKiogbW9kdWxlIGlkID0gMTU4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAq
Ki8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52
YXIgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIENhbGxiYWNrUXVl
dWUgPSByZXF1aXJlKCcuL0NhbGxiYWNrUXVldWUnKTtcbnZhciBQb29sZWRDbGFzcyA9IHJlcXVp
cmUoJy4vUG9vbGVkQ2xhc3MnKTtcbnZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIgPSByZXF1
aXJlKCcuL1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlcicpO1xudmFyIFJlYWN0SW5wdXRTZWxlY3Rp
b24gPSByZXF1aXJlKCcuL1JlYWN0SW5wdXRTZWxlY3Rpb24nKTtcbnZhciBSZWFjdEluc3RydW1l
bnRhdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0cnVtZW50YXRpb24nKTtcbnZhciBUcmFuc2Fj
dGlvbiA9IHJlcXVpcmUoJy4vVHJhbnNhY3Rpb24nKTtcbnZhciBSZWFjdFVwZGF0ZVF1ZXVlID0g
cmVxdWlyZSgnLi9SZWFjdFVwZGF0ZVF1ZXVlJyk7XG5cbi8qKlxuICogRW5zdXJlcyB0aGF0LCB3
aGVuIHBvc3NpYmxlLCB0aGUgc2VsZWN0aW9uIHJhbmdlIChjdXJyZW50bHkgc2VsZWN0ZWQgdGV4
dFxuICogaW5wdXQpIGlzIG5vdCBkaXN0dXJiZWQgYnkgcGVyZm9ybWluZyB0aGUgdHJhbnNhY3Rp
b24uXG4gKi9cbnZhciBTRUxFQ1RJT05fUkVTVE9SQVRJT04gPSB7XG4gIC8qKlxuICAgKiBAcmV0
dXJuIHtTZWxlY3Rpb259IFNlbGVjdGlvbiBpbmZvcm1hdGlvbi5cbiAgICovXG4gIGluaXRpYWxp
emU6IFJlYWN0SW5wdXRTZWxlY3Rpb24uZ2V0U2VsZWN0aW9uSW5mb3JtYXRpb24sXG4gIC8qKlxu
ICAgKiBAcGFyYW0ge1NlbGVjdGlvbn0gc2VsIFNlbGVjdGlvbiBpbmZvcm1hdGlvbiByZXR1cm5l
ZCBmcm9tIGBpbml0aWFsaXplYC5cbiAgICovXG4gIGNsb3NlOiBSZWFjdElucHV0U2VsZWN0aW9u
LnJlc3RvcmVTZWxlY3Rpb25cbn07XG5cbi8qKlxuICogU3VwcHJlc3NlcyBldmVudHMgKGJsdXIv
Zm9jdXMpIHRoYXQgY291bGQgYmUgaW5hZHZlcnRlbnRseSBkaXNwYXRjaGVkIGR1ZSB0b1xuICog
aGlnaCBsZXZlbCBET00gbWFuaXB1bGF0aW9ucyAobGlrZSB0ZW1wb3JhcmlseSByZW1vdmluZyBh
IHRleHQgaW5wdXQgZnJvbSB0aGVcbiAqIERPTSkuXG4gKi9cbnZhciBFVkVOVF9TVVBQUkVTU0lP
TiA9IHtcbiAgLyoqXG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRoZSBlbmFibGVkIHN0YXR1cyBv
ZiBgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyYCBiZWZvcmVcbiAgICogdGhlIHJlY29uY2lsaWF0
aW9uLlxuICAgKi9cbiAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gKCkge1xuICAgIHZhciBjdXJyZW50
bHlFbmFibGVkID0gUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLmlzRW5hYmxlZCgpO1xuICAgIFJl
YWN0QnJvd3NlckV2ZW50RW1pdHRlci5zZXRFbmFibGVkKGZhbHNlKTtcbiAgICByZXR1cm4gY3Vy
cmVudGx5RW5hYmxlZDtcbiAgfSxcblxuICAvKipcbiAgICogQHBhcmFtIHtib29sZWFufSBwcmV2
aW91c2x5RW5hYmxlZCBFbmFibGVkIHN0YXR1cyBvZlxuICAgKiAgIGBSZWFjdEJyb3dzZXJFdmVu
dEVtaXR0ZXJgIGJlZm9yZSB0aGUgcmVjb25jaWxpYXRpb24gb2NjdXJyZWQuIGBjbG9zZWBcbiAg
ICogICByZXN0b3JlcyB0aGUgcHJldmlvdXMgdmFsdWUuXG4gICAqL1xuICBjbG9zZTogZnVuY3Rp
b24gKHByZXZpb3VzbHlFbmFibGVkKSB7XG4gICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnNl
dEVuYWJsZWQocHJldmlvdXNseUVuYWJsZWQpO1xuICB9XG59O1xuXG4vKipcbiAqIFByb3ZpZGVz
IGEgcXVldWUgZm9yIGNvbGxlY3RpbmcgYGNvbXBvbmVudERpZE1vdW50YCBhbmRcbiAqIGBjb21w
b25lbnREaWRVcGRhdGVgIGNhbGxiYWNrcyBkdXJpbmcgdGhlIHRyYW5zYWN0aW9uLlxuICovXG52
YXIgT05fRE9NX1JFQURZX1FVRVVFSU5HID0ge1xuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhl
IGludGVybmFsIGBvbkRPTVJlYWR5YCBxdWV1ZS5cbiAgICovXG4gIGluaXRpYWxpemU6IGZ1bmN0
aW9uICgpIHtcbiAgICB0aGlzLnJlYWN0TW91bnRSZWFkeS5yZXNldCgpO1xuICB9LFxuXG4gIC8q
KlxuICAgKiBBZnRlciBET00gaXMgZmx1c2hlZCwgaW52b2tlIGFsbCByZWdpc3RlcmVkIGBvbkRP
TVJlYWR5YCBjYWxsYmFja3MuXG4gICAqL1xuICBjbG9zZTogZnVuY3Rpb24gKCkge1xuICAgIHRo
aXMucmVhY3RNb3VudFJlYWR5Lm5vdGlmeUFsbCgpO1xuICB9XG59O1xuXG4vKipcbiAqIEV4ZWN1
dGVkIHdpdGhpbiB0aGUgc2NvcGUgb2YgdGhlIGBUcmFuc2FjdGlvbmAgaW5zdGFuY2UuIENvbnNp
ZGVyIHRoZXNlIGFzXG4gKiBiZWluZyBtZW1iZXIgbWV0aG9kcywgYnV0IHdpdGggYW4gaW1wbGll
ZCBvcmRlcmluZyB3aGlsZSBiZWluZyBpc29sYXRlZCBmcm9tXG4gKiBlYWNoIG90aGVyLlxuICov
XG52YXIgVFJBTlNBQ1RJT05fV1JBUFBFUlMgPSBbU0VMRUNUSU9OX1JFU1RPUkFUSU9OLCBFVkVO
VF9TVVBQUkVTU0lPTiwgT05fRE9NX1JFQURZX1FVRVVFSU5HXTtcblxuaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgVFJBTlNBQ1RJT05fV1JBUFBFUlMucHVz
aCh7XG4gICAgaW5pdGlhbGl6ZTogUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uQmVn
aW5GbHVzaCxcbiAgICBjbG9zZTogUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uRW5k
Rmx1c2hcbiAgfSk7XG59XG5cbi8qKlxuICogQ3VycmVudGx5OlxuICogLSBUaGUgb3JkZXIgdGhh
dCB0aGVzZSBhcmUgbGlzdGVkIGluIHRoZSB0cmFuc2FjdGlvbiBpcyBjcml0aWNhbDpcbiAqIC0g
U3VwcHJlc3NlcyBldmVudHMuXG4gKiAtIFJlc3RvcmVzIHNlbGVjdGlvbiByYW5nZS5cbiAqXG4g
KiBGdXR1cmU6XG4gKiAtIFJlc3RvcmUgZG9jdW1lbnQvb3ZlcmZsb3cgc2Nyb2xsIHBvc2l0aW9u
cyB0aGF0IHdlcmUgdW5pbnRlbnRpb25hbGx5XG4gKiAgIG1vZGlmaWVkIHZpYSBET00gaW5zZXJ0
aW9ucyBhYm92ZSB0aGUgdG9wIHZpZXdwb3J0IGJvdW5kYXJ5LlxuICogLSBJbXBsZW1lbnQvaW50
ZWdyYXRlIHdpdGggY3VzdG9taXplZCBjb25zdHJhaW50IGJhc2VkIGxheW91dCBzeXN0ZW0gYW5k
IGtlZXBcbiAqICAgdHJhY2sgb2Ygd2hpY2ggZGltZW5zaW9ucyBtdXN0IGJlIHJlbWVhc3VyZWQu
XG4gKlxuICogQGNsYXNzIFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb25cbiAqL1xuZnVuY3Rpb24g
UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbih1c2VDcmVhdGVFbGVtZW50KSB7XG4gIHRoaXMucmVp
bml0aWFsaXplVHJhbnNhY3Rpb24oKTtcbiAgLy8gT25seSBzZXJ2ZXItc2lkZSByZW5kZXJpbmcg
cmVhbGx5IG5lZWRzIHRoaXMgb3B0aW9uIChzZWVcbiAgLy8gYFJlYWN0U2VydmVyUmVuZGVyaW5n
YCksIGJ1dCBzZXJ2ZXItc2lkZSB1c2VzXG4gIC8vIGBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5z
YWN0aW9uYCBpbnN0ZWFkLiBUaGlzIG9wdGlvbiBpcyBoZXJlIHNvIHRoYXQgaXQnc1xuICAvLyBh
Y2Nlc3NpYmxlIGFuZCBkZWZhdWx0cyB0byBmYWxzZSB3aGVuIGBSZWFjdERPTUNvbXBvbmVudGAg
YW5kXG4gIC8vIGBSZWFjdERPTVRleHRDb21wb25lbnRgIGNoZWNrcyBpdCBpbiBgbW91bnRDb21w
b25lbnRgLmBcbiAgdGhpcy5yZW5kZXJUb1N0YXRpY01hcmt1cCA9IGZhbHNlO1xuICB0aGlzLnJl
YWN0TW91bnRSZWFkeSA9IENhbGxiYWNrUXVldWUuZ2V0UG9vbGVkKG51bGwpO1xuICB0aGlzLnVz
ZUNyZWF0ZUVsZW1lbnQgPSB1c2VDcmVhdGVFbGVtZW50O1xufVxuXG52YXIgTWl4aW4gPSB7XG4g
IC8qKlxuICAgKiBAc2VlIFRyYW5zYWN0aW9uXG4gICAqIEBhYnN0cmFjdFxuICAgKiBAZmluYWxc
biAgICogQHJldHVybiB7YXJyYXk8b2JqZWN0Pn0gTGlzdCBvZiBvcGVyYXRpb24gd3JhcCBwcm9j
ZWR1cmVzLlxuICAgKiAgIFRPRE86IGNvbnZlcnQgdG8gYXJyYXk8VHJhbnNhY3Rpb25XcmFwcGVy
PlxuICAgKi9cbiAgZ2V0VHJhbnNhY3Rpb25XcmFwcGVyczogZnVuY3Rpb24gKCkge1xuICAgIHJl
dHVybiBUUkFOU0FDVElPTl9XUkFQUEVSUztcbiAgfSxcblxuICAvKipcbiAgICogQHJldHVybiB7
b2JqZWN0fSBUaGUgcXVldWUgdG8gY29sbGVjdCBgb25ET01SZWFkeWAgY2FsbGJhY2tzIHdpdGgu
XG4gICAqL1xuICBnZXRSZWFjdE1vdW50UmVhZHk6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4g
dGhpcy5yZWFjdE1vdW50UmVhZHk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge29iamVj
dH0gVGhlIHF1ZXVlIHRvIGNvbGxlY3QgUmVhY3QgYXN5bmMgZXZlbnRzLlxuICAgKi9cbiAgZ2V0
VXBkYXRlUXVldWU6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gUmVhY3RVcGRhdGVRdWV1ZTtc
biAgfSxcblxuICAvKipcbiAgICogU2F2ZSBjdXJyZW50IHRyYW5zYWN0aW9uIHN0YXRlIC0tIGlm
IHRoZSByZXR1cm4gdmFsdWUgZnJvbSB0aGlzIG1ldGhvZCBpc1xuICAgKiBwYXNzZWQgdG8gYHJv
bGxiYWNrYCwgdGhlIHRyYW5zYWN0aW9uIHdpbGwgYmUgcmVzZXQgdG8gdGhhdCBzdGF0ZS5cbiAg
ICovXG4gIGNoZWNrcG9pbnQ6IGZ1bmN0aW9uICgpIHtcbiAgICAvLyByZWFjdE1vdW50UmVhZHkg
aXMgdGhlIG91ciBvbmx5IHN0YXRlZnVsIHdyYXBwZXJcbiAgICByZXR1cm4gdGhpcy5yZWFjdE1v
dW50UmVhZHkuY2hlY2twb2ludCgpO1xuICB9LFxuXG4gIHJvbGxiYWNrOiBmdW5jdGlvbiAoY2hl
Y2twb2ludCkge1xuICAgIHRoaXMucmVhY3RNb3VudFJlYWR5LnJvbGxiYWNrKGNoZWNrcG9pbnQp
O1xuICB9LFxuXG4gIC8qKlxuICAgKiBgUG9vbGVkQ2xhc3NgIGxvb2tzIGZvciB0aGlzLCBhbmQg
d2lsbCBpbnZva2UgdGhpcyBiZWZvcmUgYWxsb3dpbmcgdGhpc1xuICAgKiBpbnN0YW5jZSB0byBi
ZSByZXVzZWQuXG4gICAqL1xuICBkZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7XG4gICAgQ2FsbGJh
Y2tRdWV1ZS5yZWxlYXNlKHRoaXMucmVhY3RNb3VudFJlYWR5KTtcbiAgICB0aGlzLnJlYWN0TW91
bnRSZWFkeSA9IG51bGw7XG4gIH1cbn07XG5cbl9hc3NpZ24oUmVhY3RSZWNvbmNpbGVUcmFuc2Fj
dGlvbi5wcm90b3R5cGUsIFRyYW5zYWN0aW9uLCBNaXhpbik7XG5cblBvb2xlZENsYXNzLmFkZFBv
b2xpbmdUbyhSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uKTtcblxubW9kdWxlLmV4cG9ydHMgPSBS
ZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdF
QlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RSZWNvbmNpbGVUcmFuc2Fj
dGlvbi5qc1xuICoqIG1vZHVsZSBpZCA9IDE1OVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiov
IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xu
XG52YXIgUmVhY3RPd25lciA9IHJlcXVpcmUoJy4vUmVhY3RPd25lcicpO1xuXG52YXIgUmVhY3RS
ZWYgPSB7fTtcblxuZnVuY3Rpb24gYXR0YWNoUmVmKHJlZiwgY29tcG9uZW50LCBvd25lcikge1xu
ICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJlZihjb21wb25lbnQuZ2V0
UHVibGljSW5zdGFuY2UoKSk7XG4gIH0gZWxzZSB7XG4gICAgLy8gTGVnYWN5IHJlZlxuICAgIFJl
YWN0T3duZXIuYWRkQ29tcG9uZW50QXNSZWZUbyhjb21wb25lbnQsIHJlZiwgb3duZXIpO1xuICB9
XG59XG5cbmZ1bmN0aW9uIGRldGFjaFJlZihyZWYsIGNvbXBvbmVudCwgb3duZXIpIHtcbiAgaWYg
KHR5cGVvZiByZWYgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZWYobnVsbCk7XG4gIH0gZWxzZSB7
XG4gICAgLy8gTGVnYWN5IHJlZlxuICAgIFJlYWN0T3duZXIucmVtb3ZlQ29tcG9uZW50QXNSZWZG
cm9tKGNvbXBvbmVudCwgcmVmLCBvd25lcik7XG4gIH1cbn1cblxuUmVhY3RSZWYuYXR0YWNoUmVm
cyA9IGZ1bmN0aW9uIChpbnN0YW5jZSwgZWxlbWVudCkge1xuICBpZiAoZWxlbWVudCA9PT0gbnVs
bCB8fCB0eXBlb2YgZWxlbWVudCAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm47XG4gIH1cbiAg
dmFyIHJlZiA9IGVsZW1lbnQucmVmO1xuICBpZiAocmVmICE9IG51bGwpIHtcbiAgICBhdHRhY2hS
ZWYocmVmLCBpbnN0YW5jZSwgZWxlbWVudC5fb3duZXIpO1xuICB9XG59O1xuXG5SZWFjdFJlZi5z
aG91bGRVcGRhdGVSZWZzID0gZnVuY3Rpb24gKHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCkge1xu
ICAvLyBJZiBlaXRoZXIgdGhlIG93bmVyIG9yIGEgYHJlZmAgaGFzIGNoYW5nZWQsIG1ha2Ugc3Vy
ZSB0aGUgbmV3ZXN0IG93bmVyXG4gIC8vIGhhcyBzdG9yZWQgYSByZWZlcmVuY2UgdG8gYHRoaXNg
LCBhbmQgdGhlIHByZXZpb3VzIG93bmVyIChpZiBkaWZmZXJlbnQpXG4gIC8vIGhhcyBmb3Jnb3R0
ZW4gdGhlIHJlZmVyZW5jZSB0byBgdGhpc2AuIFdlIHVzZSB0aGUgZWxlbWVudCBpbnN0ZWFkXG4g
IC8vIG9mIHRoZSBwdWJsaWMgdGhpcy5wcm9wcyBiZWNhdXNlIHRoZSBwb3N0IHByb2Nlc3Npbmcg
Y2Fubm90IGRldGVybWluZVxuICAvLyBhIHJlZi4gVGhlIHJlZiBjb25jZXB0dWFsbHkgbGl2ZXMg
b24gdGhlIGVsZW1lbnQuXG5cbiAgLy8gVE9ETzogU2hvdWxkIHRoaXMgZXZlbiBiZSBwb3NzaWJs
ZT8gVGhlIG93bmVyIGNhbm5vdCBjaGFuZ2UgYmVjYXVzZVxuICAvLyBpdCdzIGZvcmJpZGRlbiBi
eSBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudC4gVGhlIHJlZiBjYW4gY2hhbmdlXG4gIC8vIGlm
IHlvdSBzd2FwIHRoZSBrZXlzIG9mIGJ1dCBub3QgdGhlIHJlZnMuIFJlY29uc2lkZXIgd2hlcmUg
dGhpcyBjaGVja1xuICAvLyBpcyBtYWRlLiBJdCBwcm9iYWJseSBiZWxvbmdzIHdoZXJlIHRoZSBr
ZXkgY2hlY2tpbmcgYW5kXG4gIC8vIGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQgaXMgZG9uZS5c
blxuICB2YXIgcHJldlJlZiA9IG51bGw7XG4gIHZhciBwcmV2T3duZXIgPSBudWxsO1xuICBpZiAo
cHJldkVsZW1lbnQgIT09IG51bGwgJiYgdHlwZW9mIHByZXZFbGVtZW50ID09PSAnb2JqZWN0Jykg
e1xuICAgIHByZXZSZWYgPSBwcmV2RWxlbWVudC5yZWY7XG4gICAgcHJldk93bmVyID0gcHJldkVs
ZW1lbnQuX293bmVyO1xuICB9XG5cbiAgdmFyIG5leHRSZWYgPSBudWxsO1xuICB2YXIgbmV4dE93
bmVyID0gbnVsbDtcbiAgaWYgKG5leHRFbGVtZW50ICE9PSBudWxsICYmIHR5cGVvZiBuZXh0RWxl
bWVudCA9PT0gJ29iamVjdCcpIHtcbiAgICBuZXh0UmVmID0gbmV4dEVsZW1lbnQucmVmO1xuICAg
IG5leHRPd25lciA9IG5leHRFbGVtZW50Ll9vd25lcjtcbiAgfVxuXG4gIHJldHVybiBwcmV2UmVm
ICE9PSBuZXh0UmVmIHx8XG4gIC8vIElmIG93bmVyIGNoYW5nZXMgYnV0IHdlIGhhdmUgYW4gdW5j
aGFuZ2VkIGZ1bmN0aW9uIHJlZiwgZG9uJ3QgdXBkYXRlIHJlZnNcbiAgdHlwZW9mIG5leHRSZWYg
PT09ICdzdHJpbmcnICYmIG5leHRPd25lciAhPT0gcHJldk93bmVyO1xufTtcblxuUmVhY3RSZWYu
ZGV0YWNoUmVmcyA9IGZ1bmN0aW9uIChpbnN0YW5jZSwgZWxlbWVudCkge1xuICBpZiAoZWxlbWVu
dCA9PT0gbnVsbCB8fCB0eXBlb2YgZWxlbWVudCAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm47
XG4gIH1cbiAgdmFyIHJlZiA9IGVsZW1lbnQucmVmO1xuICBpZiAocmVmICE9IG51bGwpIHtcbiAg
ICBkZXRhY2hSZWYocmVmLCBpbnN0YW5jZSwgZWxlbWVudC5fb3duZXIpO1xuICB9XG59O1xuXG5t
b2R1bGUuZXhwb3J0cyA9IFJlYWN0UmVmO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdF
QlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RSZWYuanNcbiAqKiBtb2R1
bGUgaWQgPSAxNjBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJp
Z2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfYXNzaWduID0gcmVxdWly
ZSgnb2JqZWN0LWFzc2lnbicpO1xuXG52YXIgUG9vbGVkQ2xhc3MgPSByZXF1aXJlKCcuL1Bvb2xl
ZENsYXNzJyk7XG52YXIgVHJhbnNhY3Rpb24gPSByZXF1aXJlKCcuL1RyYW5zYWN0aW9uJyk7XG52
YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSByZXF1aXJlKCcuL1JlYWN0SW5zdHJ1bWVudGF0aW9u
Jyk7XG52YXIgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZSA9IHJlcXVpcmUoJy4vUmVhY3RTZXJ2ZXJV
cGRhdGVRdWV1ZScpO1xuXG4vKipcbiAqIEV4ZWN1dGVkIHdpdGhpbiB0aGUgc2NvcGUgb2YgdGhl
IGBUcmFuc2FjdGlvbmAgaW5zdGFuY2UuIENvbnNpZGVyIHRoZXNlIGFzXG4gKiBiZWluZyBtZW1i
ZXIgbWV0aG9kcywgYnV0IHdpdGggYW4gaW1wbGllZCBvcmRlcmluZyB3aGlsZSBiZWluZyBpc29s
YXRlZCBmcm9tXG4gKiBlYWNoIG90aGVyLlxuICovXG52YXIgVFJBTlNBQ1RJT05fV1JBUFBFUlMg
PSBbXTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAg
VFJBTlNBQ1RJT05fV1JBUFBFUlMucHVzaCh7XG4gICAgaW5pdGlhbGl6ZTogUmVhY3RJbnN0cnVt
ZW50YXRpb24uZGVidWdUb29sLm9uQmVnaW5GbHVzaCxcbiAgICBjbG9zZTogUmVhY3RJbnN0cnVt
ZW50YXRpb24uZGVidWdUb29sLm9uRW5kRmx1c2hcbiAgfSk7XG59XG5cbnZhciBub29wQ2FsbGJh
Y2tRdWV1ZSA9IHtcbiAgZW5xdWV1ZTogZnVuY3Rpb24gKCkge31cbn07XG5cbi8qKlxuICogQGNs
YXNzIFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb25cbiAqIEBwYXJhbSB7Ym9vbGVhbn0g
cmVuZGVyVG9TdGF0aWNNYXJrdXBcbiAqL1xuZnVuY3Rpb24gUmVhY3RTZXJ2ZXJSZW5kZXJpbmdU
cmFuc2FjdGlvbihyZW5kZXJUb1N0YXRpY01hcmt1cCkge1xuICB0aGlzLnJlaW5pdGlhbGl6ZVRy
YW5zYWN0aW9uKCk7XG4gIHRoaXMucmVuZGVyVG9TdGF0aWNNYXJrdXAgPSByZW5kZXJUb1N0YXRp
Y01hcmt1cDtcbiAgdGhpcy51c2VDcmVhdGVFbGVtZW50ID0gZmFsc2U7XG4gIHRoaXMudXBkYXRl
UXVldWUgPSBuZXcgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZSh0aGlzKTtcbn1cblxudmFyIE1peGlu
ID0ge1xuICAvKipcbiAgICogQHNlZSBUcmFuc2FjdGlvblxuICAgKiBAYWJzdHJhY3RcbiAgICog
QGZpbmFsXG4gICAqIEByZXR1cm4ge2FycmF5fSBFbXB0eSBsaXN0IG9mIG9wZXJhdGlvbiB3cmFw
IHByb2NlZHVyZXMuXG4gICAqL1xuICBnZXRUcmFuc2FjdGlvbldyYXBwZXJzOiBmdW5jdGlvbiAo
KSB7XG4gICAgcmV0dXJuIFRSQU5TQUNUSU9OX1dSQVBQRVJTO1xuICB9LFxuXG4gIC8qKlxuICAg
KiBAcmV0dXJuIHtvYmplY3R9IFRoZSBxdWV1ZSB0byBjb2xsZWN0IGBvbkRPTVJlYWR5YCBjYWxs
YmFja3Mgd2l0aC5cbiAgICovXG4gIGdldFJlYWN0TW91bnRSZWFkeTogZnVuY3Rpb24gKCkge1xu
ICAgIHJldHVybiBub29wQ2FsbGJhY2tRdWV1ZTtcbiAgfSxcblxuICAvKipcbiAgICogQHJldHVy
biB7b2JqZWN0fSBUaGUgcXVldWUgdG8gY29sbGVjdCBSZWFjdCBhc3luYyBldmVudHMuXG4gICAq
L1xuICBnZXRVcGRhdGVRdWV1ZTogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLnVwZGF0
ZVF1ZXVlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBgUG9vbGVkQ2xhc3NgIGxvb2tzIGZvciB0aGlz
LCBhbmQgd2lsbCBpbnZva2UgdGhpcyBiZWZvcmUgYWxsb3dpbmcgdGhpc1xuICAgKiBpbnN0YW5j
ZSB0byBiZSByZXVzZWQuXG4gICAqL1xuICBkZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7fSxcblxu
ICBjaGVja3BvaW50OiBmdW5jdGlvbiAoKSB7fSxcblxuICByb2xsYmFjazogZnVuY3Rpb24gKCkg
e31cbn07XG5cbl9hc3NpZ24oUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbi5wcm90b3R5
cGUsIFRyYW5zYWN0aW9uLCBNaXhpbik7XG5cblBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhSZWFj
dFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uKTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFNl
cnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdF
QlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RTZXJ2ZXJSZW5kZXJpbmdU
cmFuc2FjdGlvbi5qc1xuICoqIG1vZHVsZSBpZCA9IDE2MVxuICoqIG1vZHVsZSBjaHVua3MgPSAw
XG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNS1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJp
Y3QnO1xuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7
IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBl
RXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG52YXIg
UmVhY3RVcGRhdGVRdWV1ZSA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVRdWV1ZScpO1xuXG52YXIg
d2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxuZnVuY3Rpb24gd2Fybk5v
b3AocHVibGljSW5zdGFuY2UsIGNhbGxlck5hbWUpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICB2YXIgY29uc3RydWN0b3IgPSBwdWJsaWNJbnN0
YW5jZS5jb25zdHJ1Y3RvcjtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gd2FybmluZyhmYWxzZSwgJyVzKC4uLik6IENhbiBvbmx5IHVwZGF0ZSBhIG1vdW50aW5n
IGNvbXBvbmVudC4gJyArICdUaGlzIHVzdWFsbHkgbWVhbnMgeW91IGNhbGxlZCAlcygpIG91dHNp
ZGUgY29tcG9uZW50V2lsbE1vdW50KCkgb24gdGhlIHNlcnZlci4gJyArICdUaGlzIGlzIGEgbm8t
b3AuIFBsZWFzZSBjaGVjayB0aGUgY29kZSBmb3IgdGhlICVzIGNvbXBvbmVudC4nLCBjYWxsZXJO
YW1lLCBjYWxsZXJOYW1lLCBjb25zdHJ1Y3RvciAmJiAoY29uc3RydWN0b3IuZGlzcGxheU5hbWUg
fHwgY29uc3RydWN0b3IubmFtZSkgfHwgJ1JlYWN0Q2xhc3MnKSA6IHZvaWQgMDtcbiAgfVxufVxu
XG4vKipcbiAqIFRoaXMgaXMgdGhlIHVwZGF0ZSBxdWV1ZSB1c2VkIGZvciBzZXJ2ZXIgcmVuZGVy
aW5nLlxuICogSXQgZGVsZWdhdGVzIHRvIFJlYWN0VXBkYXRlUXVldWUgd2hpbGUgc2VydmVyIHJl
bmRlcmluZyBpcyBpbiBwcm9ncmVzcyBhbmRcbiAqIHN3aXRjaGVzIHRvIFJlYWN0Tm9vcFVwZGF0
ZVF1ZXVlIGFmdGVyIHRoZSB0cmFuc2FjdGlvbiBoYXMgY29tcGxldGVkLlxuICogQGNsYXNzIFJl
YWN0U2VydmVyVXBkYXRlUXVldWVcbiAqIEBwYXJhbSB7VHJhbnNhY3Rpb259IHRyYW5zYWN0aW9u
XG4gKi9cblxudmFyIFJlYWN0U2VydmVyVXBkYXRlUXVldWUgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1
bmN0aW9uIFJlYWN0U2VydmVyVXBkYXRlUXVldWUodHJhbnNhY3Rpb24pIHtcbiAgICBfY2xhc3ND
YWxsQ2hlY2sodGhpcywgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZSk7XG5cbiAgICB0aGlzLnRyYW5z
YWN0aW9uID0gdHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2tzIHdoZXRoZXIg
b3Igbm90IHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCBpcyBtb3VudGVkLlxuICAgKiBAcGFyYW0g
e1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB3ZSB3YW50IHRvIHRlc3Qu
XG4gICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgbW91bnRlZCwgZmFsc2Ugb3RoZXJ3aXNl
LlxuICAgKiBAcHJvdGVjdGVkXG4gICAqIEBmaW5hbFxuICAgKi9cblxuXG4gIFJlYWN0U2VydmVy
VXBkYXRlUXVldWUucHJvdG90eXBlLmlzTW91bnRlZCA9IGZ1bmN0aW9uIGlzTW91bnRlZChwdWJs
aWNJbnN0YW5jZSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICAvKipcbiAgICogRW5x
dWV1ZSBhIGNhbGxiYWNrIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBhZnRlciBhbGwgdGhlIHBlbmRp
bmcgdXBkYXRlc1xuICAgKiBoYXZlIHByb2Nlc3NlZC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFj
dENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdG8gdXNlIGFzIGB0aGlzYCBjb250
ZXh0LlxuICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHN0YXRl
IGlzIHVwZGF0ZWQuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cblxuXG4gIFJlYWN0U2VydmVyVXBk
YXRlUXVldWUucHJvdG90eXBlLmVucXVldWVDYWxsYmFjayA9IGZ1bmN0aW9uIGVucXVldWVDYWxs
YmFjayhwdWJsaWNJbnN0YW5jZSwgY2FsbGJhY2ssIGNhbGxlck5hbWUpIHtcbiAgICBpZiAodGhp
cy50cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24oKSkge1xuICAgICAgUmVhY3RVcGRhdGVRdWV1
ZS5lbnF1ZXVlQ2FsbGJhY2socHVibGljSW5zdGFuY2UsIGNhbGxiYWNrLCBjYWxsZXJOYW1lKTtc
biAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIEZvcmNlcyBhbiB1cGRhdGUuIFRoaXMgc2hvdWxk
IG9ubHkgYmUgaW52b2tlZCB3aGVuIGl0IGlzIGtub3duIHdpdGhcbiAgICogY2VydGFpbnR5IHRo
YXQgd2UgYXJlICoqbm90KiogaW4gYSBET00gdHJhbnNhY3Rpb24uXG4gICAqXG4gICAqIFlvdSBt
YXkgd2FudCB0byBjYWxsIHRoaXMgd2hlbiB5b3Uga25vdyB0aGF0IHNvbWUgZGVlcGVyIGFzcGVj
dCBvZiB0aGVcbiAgICogY29tcG9uZW50J3Mgc3RhdGUgaGFzIGNoYW5nZWQgYnV0IGBzZXRTdGF0
ZWAgd2FzIG5vdCBjYWxsZWQuXG4gICAqXG4gICAqIFRoaXMgd2lsbCBub3QgaW52b2tlIGBzaG91
bGRDb21wb25lbnRVcGRhdGVgLCBidXQgaXQgd2lsbCBpbnZva2VcbiAgICogYGNvbXBvbmVudFdp
bGxVcGRhdGVgIGFuZCBgY29tcG9uZW50RGlkVXBkYXRlYC5cbiAgICpcbiAgICogQHBhcmFtIHtS
ZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5k
ZXIuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cblxuXG4gIFJlYWN0U2VydmVyVXBkYXRlUXVldWUu
cHJvdG90eXBlLmVucXVldWVGb3JjZVVwZGF0ZSA9IGZ1bmN0aW9uIGVucXVldWVGb3JjZVVwZGF0
ZShwdWJsaWNJbnN0YW5jZSkge1xuICAgIGlmICh0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2Fj
dGlvbigpKSB7XG4gICAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVGb3JjZVVwZGF0ZShwdWJs
aWNJbnN0YW5jZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNl
LCAnZm9yY2VVcGRhdGUnKTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIGFs
bCBvZiB0aGUgc3RhdGUuIEFsd2F5cyB1c2UgdGhpcyBvciBgc2V0U3RhdGVgIHRvIG11dGF0ZSBz
dGF0ZS5cbiAgICogWW91IHNob3VsZCB0cmVhdCBgdGhpcy5zdGF0ZWAgYXMgaW1tdXRhYmxlLlxu
ICAgKlxuICAgKiBUaGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBgdGhpcy5zdGF0ZWAgd2lsbCBi
ZSBpbW1lZGlhdGVseSB1cGRhdGVkLCBzb1xuICAgKiBhY2Nlc3NpbmcgYHRoaXMuc3RhdGVgIGFm
dGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgbWF5IHJldHVybiB0aGUgb2xkIHZhbHVlLlxuICAgKlxu
ICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0
IHNob3VsZCByZXJlbmRlci5cbiAgICogQHBhcmFtIHtvYmplY3R8ZnVuY3Rpb259IGNvbXBsZXRl
U3RhdGUgTmV4dCBzdGF0ZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuXG5cbiAgUmVhY3RTZXJ2
ZXJVcGRhdGVRdWV1ZS5wcm90b3R5cGUuZW5xdWV1ZVJlcGxhY2VTdGF0ZSA9IGZ1bmN0aW9uIGVu
cXVldWVSZXBsYWNlU3RhdGUocHVibGljSW5zdGFuY2UsIGNvbXBsZXRlU3RhdGUpIHtcbiAgICBp
ZiAodGhpcy50cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24oKSkge1xuICAgICAgUmVhY3RVcGRh
dGVRdWV1ZS5lbnF1ZXVlUmVwbGFjZVN0YXRlKHB1YmxpY0luc3RhbmNlLCBjb21wbGV0ZVN0YXRl
KTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2Fybk5vb3AocHVibGljSW5zdGFuY2UsICdyZXBsYWNl
U3RhdGUnKTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIFNldHMgYSBzdWJzZXQgb2YgdGhl
IHN0YXRlLiBUaGlzIG9ubHkgZXhpc3RzIGJlY2F1c2UgX3BlbmRpbmdTdGF0ZSBpc1xuICAgKiBp
bnRlcm5hbC4gVGhpcyBwcm92aWRlcyBhIG1lcmdpbmcgc3RyYXRlZ3kgdGhhdCBpcyBub3QgYXZh
aWxhYmxlIHRvIGRlZXBcbiAgICogcHJvcGVydGllcyB3aGljaCBpcyBjb25mdXNpbmcuIFRPRE86
IEV4cG9zZSBwZW5kaW5nU3RhdGUgb3IgZG9uJ3QgdXNlIGl0XG4gICAqIGR1cmluZyB0aGUgbWVy
Z2UuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGlu
c3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAcGFyYW0ge29iamVjdHxmdW5jdGlv
bn0gcGFydGlhbFN0YXRlIE5leHQgcGFydGlhbCBzdGF0ZSB0byBiZSBtZXJnZWQgd2l0aCBzdGF0
ZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuXG5cbiAgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZS5w
cm90b3R5cGUuZW5xdWV1ZVNldFN0YXRlID0gZnVuY3Rpb24gZW5xdWV1ZVNldFN0YXRlKHB1Ymxp
Y0luc3RhbmNlLCBwYXJ0aWFsU3RhdGUpIHtcbiAgICBpZiAodGhpcy50cmFuc2FjdGlvbi5pc0lu
VHJhbnNhY3Rpb24oKSkge1xuICAgICAgUmVhY3RVcGRhdGVRdWV1ZS5lbnF1ZXVlU2V0U3RhdGUo
cHVibGljSW5zdGFuY2UsIHBhcnRpYWxTdGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdhcm5O
b29wKHB1YmxpY0luc3RhbmNlLCAnc2V0U3RhdGUnKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJu
IFJlYWN0U2VydmVyVXBkYXRlUXVldWU7XG59KCk7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RT
ZXJ2ZXJVcGRhdGVRdWV1ZTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZP
T1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0U2VydmVyVXBkYXRlUXVldWUuanNcbiAq
KiBtb2R1bGUgaWQgPSAxNjJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbm1vZHVsZS5leHBvcnRz
ID0gJzE1LjYuMSc7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJc
biAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdFZlcnNpb24uanNcbiAqKiBtb2R1bGUgaWQgPSAx
NjNcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
ICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBOUyA9IHtcbiAgeGxpbms6ICdodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hsaW5rJyxcbiAgeG1sOiAnaHR0cDovL3d3dy53My5vcmcvWE1MLzE5
OTgvbmFtZXNwYWNlJ1xufTtcblxuLy8gV2UgdXNlIGF0dHJpYnV0ZXMgZm9yIGV2ZXJ5dGhpbmcg
U1ZHIHNvIGxldCdzIGF2b2lkIHNvbWUgZHVwbGljYXRpb24gYW5kIHJ1blxuLy8gY29kZSBpbnN0
ZWFkLlxuLy8gVGhlIGZvbGxvd2luZyBhcmUgYWxsIHNwZWNpZmllZCBpbiB0aGUgSFRNTCBjb25m
aWcgYWxyZWFkeSBzbyB3ZSBleGNsdWRlIGhlcmUuXG4vLyAtIGNsYXNzIChhcyBjbGFzc05hbWUp
XG4vLyAtIGNvbG9yXG4vLyAtIGhlaWdodFxuLy8gLSBpZFxuLy8gLSBsYW5nXG4vLyAtIG1heFxu
Ly8gLSBtZWRpYVxuLy8gLSBtZXRob2Rcbi8vIC0gbWluXG4vLyAtIG5hbWVcbi8vIC0gc3R5bGVc
bi8vIC0gdGFyZ2V0XG4vLyAtIHR5cGVcbi8vIC0gd2lkdGhcbnZhciBBVFRSUyA9IHtcbiAgYWNj
ZW50SGVpZ2h0OiAnYWNjZW50LWhlaWdodCcsXG4gIGFjY3VtdWxhdGU6IDAsXG4gIGFkZGl0aXZl
OiAwLFxuICBhbGlnbm1lbnRCYXNlbGluZTogJ2FsaWdubWVudC1iYXNlbGluZScsXG4gIGFsbG93
UmVvcmRlcjogJ2FsbG93UmVvcmRlcicsXG4gIGFscGhhYmV0aWM6IDAsXG4gIGFtcGxpdHVkZTog
MCxcbiAgYXJhYmljRm9ybTogJ2FyYWJpYy1mb3JtJyxcbiAgYXNjZW50OiAwLFxuICBhdHRyaWJ1
dGVOYW1lOiAnYXR0cmlidXRlTmFtZScsXG4gIGF0dHJpYnV0ZVR5cGU6ICdhdHRyaWJ1dGVUeXBl
JyxcbiAgYXV0b1JldmVyc2U6ICdhdXRvUmV2ZXJzZScsXG4gIGF6aW11dGg6IDAsXG4gIGJhc2VG
cmVxdWVuY3k6ICdiYXNlRnJlcXVlbmN5JyxcbiAgYmFzZVByb2ZpbGU6ICdiYXNlUHJvZmlsZScs
XG4gIGJhc2VsaW5lU2hpZnQ6ICdiYXNlbGluZS1zaGlmdCcsXG4gIGJib3g6IDAsXG4gIGJlZ2lu
OiAwLFxuICBiaWFzOiAwLFxuICBieTogMCxcbiAgY2FsY01vZGU6ICdjYWxjTW9kZScsXG4gIGNh
cEhlaWdodDogJ2NhcC1oZWlnaHQnLFxuICBjbGlwOiAwLFxuICBjbGlwUGF0aDogJ2NsaXAtcGF0
aCcsXG4gIGNsaXBSdWxlOiAnY2xpcC1ydWxlJyxcbiAgY2xpcFBhdGhVbml0czogJ2NsaXBQYXRo
VW5pdHMnLFxuICBjb2xvckludGVycG9sYXRpb246ICdjb2xvci1pbnRlcnBvbGF0aW9uJyxcbiAg
Y29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczogJ2NvbG9yLWludGVycG9sYXRpb24tZmlsdGVycycs
XG4gIGNvbG9yUHJvZmlsZTogJ2NvbG9yLXByb2ZpbGUnLFxuICBjb2xvclJlbmRlcmluZzogJ2Nv
bG9yLXJlbmRlcmluZycsXG4gIGNvbnRlbnRTY3JpcHRUeXBlOiAnY29udGVudFNjcmlwdFR5cGUn
LFxuICBjb250ZW50U3R5bGVUeXBlOiAnY29udGVudFN0eWxlVHlwZScsXG4gIGN1cnNvcjogMCxc
biAgY3g6IDAsXG4gIGN5OiAwLFxuICBkOiAwLFxuICBkZWNlbGVyYXRlOiAwLFxuICBkZXNjZW50
OiAwLFxuICBkaWZmdXNlQ29uc3RhbnQ6ICdkaWZmdXNlQ29uc3RhbnQnLFxuICBkaXJlY3Rpb246
IDAsXG4gIGRpc3BsYXk6IDAsXG4gIGRpdmlzb3I6IDAsXG4gIGRvbWluYW50QmFzZWxpbmU6ICdk
b21pbmFudC1iYXNlbGluZScsXG4gIGR1cjogMCxcbiAgZHg6IDAsXG4gIGR5OiAwLFxuICBlZGdl
TW9kZTogJ2VkZ2VNb2RlJyxcbiAgZWxldmF0aW9uOiAwLFxuICBlbmFibGVCYWNrZ3JvdW5kOiAn
ZW5hYmxlLWJhY2tncm91bmQnLFxuICBlbmQ6IDAsXG4gIGV4cG9uZW50OiAwLFxuICBleHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkOiAnZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCcsXG4gIGZpbGw6
IDAsXG4gIGZpbGxPcGFjaXR5OiAnZmlsbC1vcGFjaXR5JyxcbiAgZmlsbFJ1bGU6ICdmaWxsLXJ1
bGUnLFxuICBmaWx0ZXI6IDAsXG4gIGZpbHRlclJlczogJ2ZpbHRlclJlcycsXG4gIGZpbHRlclVu
aXRzOiAnZmlsdGVyVW5pdHMnLFxuICBmbG9vZENvbG9yOiAnZmxvb2QtY29sb3InLFxuICBmbG9v
ZE9wYWNpdHk6ICdmbG9vZC1vcGFjaXR5JyxcbiAgZm9jdXNhYmxlOiAwLFxuICBmb250RmFtaWx5
OiAnZm9udC1mYW1pbHknLFxuICBmb250U2l6ZTogJ2ZvbnQtc2l6ZScsXG4gIGZvbnRTaXplQWRq
dXN0OiAnZm9udC1zaXplLWFkanVzdCcsXG4gIGZvbnRTdHJldGNoOiAnZm9udC1zdHJldGNoJyxc
biAgZm9udFN0eWxlOiAnZm9udC1zdHlsZScsXG4gIGZvbnRWYXJpYW50OiAnZm9udC12YXJpYW50
JyxcbiAgZm9udFdlaWdodDogJ2ZvbnQtd2VpZ2h0JyxcbiAgZm9ybWF0OiAwLFxuICBmcm9tOiAw
LFxuICBmeDogMCxcbiAgZnk6IDAsXG4gIGcxOiAwLFxuICBnMjogMCxcbiAgZ2x5cGhOYW1lOiAn
Z2x5cGgtbmFtZScsXG4gIGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsOiAnZ2x5cGgtb3JpZW50
YXRpb24taG9yaXpvbnRhbCcsXG4gIGdseXBoT3JpZW50YXRpb25WZXJ0aWNhbDogJ2dseXBoLW9y
aWVudGF0aW9uLXZlcnRpY2FsJyxcbiAgZ2x5cGhSZWY6ICdnbHlwaFJlZicsXG4gIGdyYWRpZW50
VHJhbnNmb3JtOiAnZ3JhZGllbnRUcmFuc2Zvcm0nLFxuICBncmFkaWVudFVuaXRzOiAnZ3JhZGll
bnRVbml0cycsXG4gIGhhbmdpbmc6IDAsXG4gIGhvcml6QWR2WDogJ2hvcml6LWFkdi14JyxcbiAg
aG9yaXpPcmlnaW5YOiAnaG9yaXotb3JpZ2luLXgnLFxuICBpZGVvZ3JhcGhpYzogMCxcbiAgaW1h
Z2VSZW5kZXJpbmc6ICdpbWFnZS1yZW5kZXJpbmcnLFxuICAnaW4nOiAwLFxuICBpbjI6IDAsXG4g
IGludGVyY2VwdDogMCxcbiAgazogMCxcbiAgazE6IDAsXG4gIGsyOiAwLFxuICBrMzogMCxcbiAg
azQ6IDAsXG4gIGtlcm5lbE1hdHJpeDogJ2tlcm5lbE1hdHJpeCcsXG4gIGtlcm5lbFVuaXRMZW5n
dGg6ICdrZXJuZWxVbml0TGVuZ3RoJyxcbiAga2VybmluZzogMCxcbiAga2V5UG9pbnRzOiAna2V5
UG9pbnRzJyxcbiAga2V5U3BsaW5lczogJ2tleVNwbGluZXMnLFxuICBrZXlUaW1lczogJ2tleVRp
bWVzJyxcbiAgbGVuZ3RoQWRqdXN0OiAnbGVuZ3RoQWRqdXN0JyxcbiAgbGV0dGVyU3BhY2luZzog
J2xldHRlci1zcGFjaW5nJyxcbiAgbGlnaHRpbmdDb2xvcjogJ2xpZ2h0aW5nLWNvbG9yJyxcbiAg
bGltaXRpbmdDb25lQW5nbGU6ICdsaW1pdGluZ0NvbmVBbmdsZScsXG4gIGxvY2FsOiAwLFxuICBt
YXJrZXJFbmQ6ICdtYXJrZXItZW5kJyxcbiAgbWFya2VyTWlkOiAnbWFya2VyLW1pZCcsXG4gIG1h
cmtlclN0YXJ0OiAnbWFya2VyLXN0YXJ0JyxcbiAgbWFya2VySGVpZ2h0OiAnbWFya2VySGVpZ2h0
JyxcbiAgbWFya2VyVW5pdHM6ICdtYXJrZXJVbml0cycsXG4gIG1hcmtlcldpZHRoOiAnbWFya2Vy
V2lkdGgnLFxuICBtYXNrOiAwLFxuICBtYXNrQ29udGVudFVuaXRzOiAnbWFza0NvbnRlbnRVbml0
cycsXG4gIG1hc2tVbml0czogJ21hc2tVbml0cycsXG4gIG1hdGhlbWF0aWNhbDogMCxcbiAgbW9k
ZTogMCxcbiAgbnVtT2N0YXZlczogJ251bU9jdGF2ZXMnLFxuICBvZmZzZXQ6IDAsXG4gIG9wYWNp
dHk6IDAsXG4gIG9wZXJhdG9yOiAwLFxuICBvcmRlcjogMCxcbiAgb3JpZW50OiAwLFxuICBvcmll
bnRhdGlvbjogMCxcbiAgb3JpZ2luOiAwLFxuICBvdmVyZmxvdzogMCxcbiAgb3ZlcmxpbmVQb3Np
dGlvbjogJ292ZXJsaW5lLXBvc2l0aW9uJyxcbiAgb3ZlcmxpbmVUaGlja25lc3M6ICdvdmVybGlu
ZS10aGlja25lc3MnLFxuICBwYWludE9yZGVyOiAncGFpbnQtb3JkZXInLFxuICBwYW5vc2UxOiAn
cGFub3NlLTEnLFxuICBwYXRoTGVuZ3RoOiAncGF0aExlbmd0aCcsXG4gIHBhdHRlcm5Db250ZW50
VW5pdHM6ICdwYXR0ZXJuQ29udGVudFVuaXRzJyxcbiAgcGF0dGVyblRyYW5zZm9ybTogJ3BhdHRl
cm5UcmFuc2Zvcm0nLFxuICBwYXR0ZXJuVW5pdHM6ICdwYXR0ZXJuVW5pdHMnLFxuICBwb2ludGVy
RXZlbnRzOiAncG9pbnRlci1ldmVudHMnLFxuICBwb2ludHM6IDAsXG4gIHBvaW50c0F0WDogJ3Bv
aW50c0F0WCcsXG4gIHBvaW50c0F0WTogJ3BvaW50c0F0WScsXG4gIHBvaW50c0F0WjogJ3BvaW50
c0F0WicsXG4gIHByZXNlcnZlQWxwaGE6ICdwcmVzZXJ2ZUFscGhhJyxcbiAgcHJlc2VydmVBc3Bl
Y3RSYXRpbzogJ3ByZXNlcnZlQXNwZWN0UmF0aW8nLFxuICBwcmltaXRpdmVVbml0czogJ3ByaW1p
dGl2ZVVuaXRzJyxcbiAgcjogMCxcbiAgcmFkaXVzOiAwLFxuICByZWZYOiAncmVmWCcsXG4gIHJl
Zlk6ICdyZWZZJyxcbiAgcmVuZGVyaW5nSW50ZW50OiAncmVuZGVyaW5nLWludGVudCcsXG4gIHJl
cGVhdENvdW50OiAncmVwZWF0Q291bnQnLFxuICByZXBlYXREdXI6ICdyZXBlYXREdXInLFxuICBy
ZXF1aXJlZEV4dGVuc2lvbnM6ICdyZXF1aXJlZEV4dGVuc2lvbnMnLFxuICByZXF1aXJlZEZlYXR1
cmVzOiAncmVxdWlyZWRGZWF0dXJlcycsXG4gIHJlc3RhcnQ6IDAsXG4gIHJlc3VsdDogMCxcbiAg
cm90YXRlOiAwLFxuICByeDogMCxcbiAgcnk6IDAsXG4gIHNjYWxlOiAwLFxuICBzZWVkOiAwLFxu
ICBzaGFwZVJlbmRlcmluZzogJ3NoYXBlLXJlbmRlcmluZycsXG4gIHNsb3BlOiAwLFxuICBzcGFj
aW5nOiAwLFxuICBzcGVjdWxhckNvbnN0YW50OiAnc3BlY3VsYXJDb25zdGFudCcsXG4gIHNwZWN1
bGFyRXhwb25lbnQ6ICdzcGVjdWxhckV4cG9uZW50JyxcbiAgc3BlZWQ6IDAsXG4gIHNwcmVhZE1l
dGhvZDogJ3NwcmVhZE1ldGhvZCcsXG4gIHN0YXJ0T2Zmc2V0OiAnc3RhcnRPZmZzZXQnLFxuICBz
dGREZXZpYXRpb246ICdzdGREZXZpYXRpb24nLFxuICBzdGVtaDogMCxcbiAgc3RlbXY6IDAsXG4g
IHN0aXRjaFRpbGVzOiAnc3RpdGNoVGlsZXMnLFxuICBzdG9wQ29sb3I6ICdzdG9wLWNvbG9yJyxc
biAgc3RvcE9wYWNpdHk6ICdzdG9wLW9wYWNpdHknLFxuICBzdHJpa2V0aHJvdWdoUG9zaXRpb246
ICdzdHJpa2V0aHJvdWdoLXBvc2l0aW9uJyxcbiAgc3RyaWtldGhyb3VnaFRoaWNrbmVzczogJ3N0
cmlrZXRocm91Z2gtdGhpY2tuZXNzJyxcbiAgc3RyaW5nOiAwLFxuICBzdHJva2U6IDAsXG4gIHN0
cm9rZURhc2hhcnJheTogJ3N0cm9rZS1kYXNoYXJyYXknLFxuICBzdHJva2VEYXNob2Zmc2V0OiAn
c3Ryb2tlLWRhc2hvZmZzZXQnLFxuICBzdHJva2VMaW5lY2FwOiAnc3Ryb2tlLWxpbmVjYXAnLFxu
ICBzdHJva2VMaW5lam9pbjogJ3N0cm9rZS1saW5lam9pbicsXG4gIHN0cm9rZU1pdGVybGltaXQ6
ICdzdHJva2UtbWl0ZXJsaW1pdCcsXG4gIHN0cm9rZU9wYWNpdHk6ICdzdHJva2Utb3BhY2l0eScs
XG4gIHN0cm9rZVdpZHRoOiAnc3Ryb2tlLXdpZHRoJyxcbiAgc3VyZmFjZVNjYWxlOiAnc3VyZmFj
ZVNjYWxlJyxcbiAgc3lzdGVtTGFuZ3VhZ2U6ICdzeXN0ZW1MYW5ndWFnZScsXG4gIHRhYmxlVmFs
dWVzOiAndGFibGVWYWx1ZXMnLFxuICB0YXJnZXRYOiAndGFyZ2V0WCcsXG4gIHRhcmdldFk6ICd0
YXJnZXRZJyxcbiAgdGV4dEFuY2hvcjogJ3RleHQtYW5jaG9yJyxcbiAgdGV4dERlY29yYXRpb246
ICd0ZXh0LWRlY29yYXRpb24nLFxuICB0ZXh0UmVuZGVyaW5nOiAndGV4dC1yZW5kZXJpbmcnLFxu
ICB0ZXh0TGVuZ3RoOiAndGV4dExlbmd0aCcsXG4gIHRvOiAwLFxuICB0cmFuc2Zvcm06IDAsXG4g
IHUxOiAwLFxuICB1MjogMCxcbiAgdW5kZXJsaW5lUG9zaXRpb246ICd1bmRlcmxpbmUtcG9zaXRp
b24nLFxuICB1bmRlcmxpbmVUaGlja25lc3M6ICd1bmRlcmxpbmUtdGhpY2tuZXNzJyxcbiAgdW5p
Y29kZTogMCxcbiAgdW5pY29kZUJpZGk6ICd1bmljb2RlLWJpZGknLFxuICB1bmljb2RlUmFuZ2U6
ICd1bmljb2RlLXJhbmdlJyxcbiAgdW5pdHNQZXJFbTogJ3VuaXRzLXBlci1lbScsXG4gIHZBbHBo
YWJldGljOiAndi1hbHBoYWJldGljJyxcbiAgdkhhbmdpbmc6ICd2LWhhbmdpbmcnLFxuICB2SWRl
b2dyYXBoaWM6ICd2LWlkZW9ncmFwaGljJyxcbiAgdk1hdGhlbWF0aWNhbDogJ3YtbWF0aGVtYXRp
Y2FsJyxcbiAgdmFsdWVzOiAwLFxuICB2ZWN0b3JFZmZlY3Q6ICd2ZWN0b3ItZWZmZWN0JyxcbiAg
dmVyc2lvbjogMCxcbiAgdmVydEFkdlk6ICd2ZXJ0LWFkdi15JyxcbiAgdmVydE9yaWdpblg6ICd2
ZXJ0LW9yaWdpbi14JyxcbiAgdmVydE9yaWdpblk6ICd2ZXJ0LW9yaWdpbi15JyxcbiAgdmlld0Jv
eDogJ3ZpZXdCb3gnLFxuICB2aWV3VGFyZ2V0OiAndmlld1RhcmdldCcsXG4gIHZpc2liaWxpdHk6
IDAsXG4gIHdpZHRoczogMCxcbiAgd29yZFNwYWNpbmc6ICd3b3JkLXNwYWNpbmcnLFxuICB3cml0
aW5nTW9kZTogJ3dyaXRpbmctbW9kZScsXG4gIHg6IDAsXG4gIHhIZWlnaHQ6ICd4LWhlaWdodCcs
XG4gIHgxOiAwLFxuICB4MjogMCxcbiAgeENoYW5uZWxTZWxlY3RvcjogJ3hDaGFubmVsU2VsZWN0
b3InLFxuICB4bGlua0FjdHVhdGU6ICd4bGluazphY3R1YXRlJyxcbiAgeGxpbmtBcmNyb2xlOiAn
eGxpbms6YXJjcm9sZScsXG4gIHhsaW5rSHJlZjogJ3hsaW5rOmhyZWYnLFxuICB4bGlua1JvbGU6
ICd4bGluazpyb2xlJyxcbiAgeGxpbmtTaG93OiAneGxpbms6c2hvdycsXG4gIHhsaW5rVGl0bGU6
ICd4bGluazp0aXRsZScsXG4gIHhsaW5rVHlwZTogJ3hsaW5rOnR5cGUnLFxuICB4bWxCYXNlOiAn
eG1sOmJhc2UnLFxuICB4bWxuczogMCxcbiAgeG1sbnNYbGluazogJ3htbG5zOnhsaW5rJyxcbiAg
eG1sTGFuZzogJ3htbDpsYW5nJyxcbiAgeG1sU3BhY2U6ICd4bWw6c3BhY2UnLFxuICB5OiAwLFxu
ICB5MTogMCxcbiAgeTI6IDAsXG4gIHlDaGFubmVsU2VsZWN0b3I6ICd5Q2hhbm5lbFNlbGVjdG9y
JyxcbiAgejogMCxcbiAgem9vbUFuZFBhbjogJ3pvb21BbmRQYW4nXG59O1xuXG52YXIgU1ZHRE9N
UHJvcGVydHlDb25maWcgPSB7XG4gIFByb3BlcnRpZXM6IHt9LFxuICBET01BdHRyaWJ1dGVOYW1l
c3BhY2VzOiB7XG4gICAgeGxpbmtBY3R1YXRlOiBOUy54bGluayxcbiAgICB4bGlua0FyY3JvbGU6
IE5TLnhsaW5rLFxuICAgIHhsaW5rSHJlZjogTlMueGxpbmssXG4gICAgeGxpbmtSb2xlOiBOUy54
bGluayxcbiAgICB4bGlua1Nob3c6IE5TLnhsaW5rLFxuICAgIHhsaW5rVGl0bGU6IE5TLnhsaW5r
LFxuICAgIHhsaW5rVHlwZTogTlMueGxpbmssXG4gICAgeG1sQmFzZTogTlMueG1sLFxuICAgIHht
bExhbmc6IE5TLnhtbCxcbiAgICB4bWxTcGFjZTogTlMueG1sXG4gIH0sXG4gIERPTUF0dHJpYnV0
ZU5hbWVzOiB7fVxufTtcblxuT2JqZWN0LmtleXMoQVRUUlMpLmZvckVhY2goZnVuY3Rpb24gKGtl
eSkge1xuICBTVkdET01Qcm9wZXJ0eUNvbmZpZy5Qcm9wZXJ0aWVzW2tleV0gPSAwO1xuICBpZiAo
QVRUUlNba2V5XSkge1xuICAgIFNWR0RPTVByb3BlcnR5Q29uZmlnLkRPTUF0dHJpYnV0ZU5hbWVz
W2tleV0gPSBBVFRSU1trZXldO1xuICB9XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBTVkdET01Q
cm9wZXJ0eUNvbmZpZztcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RF
UlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1NWR0RPTVByb3BlcnR5Q29uZmlnLmpzXG4gKiogbW9k
dWxlIGlkID0gMTY0XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXZlbnRQcm9wYWdhdG9y
cyA9IHJlcXVpcmUoJy4vRXZlbnRQcm9wYWdhdG9ycycpO1xudmFyIEV4ZWN1dGlvbkVudmlyb25t
ZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcbnZhciBSZWFj
dERPTUNvbXBvbmVudFRyZWUgPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpO1xu
dmFyIFJlYWN0SW5wdXRTZWxlY3Rpb24gPSByZXF1aXJlKCcuL1JlYWN0SW5wdXRTZWxlY3Rpb24n
KTtcbnZhciBTeW50aGV0aWNFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljRXZlbnQnKTtcblxu
dmFyIGdldEFjdGl2ZUVsZW1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9nZXRBY3RpdmVFbGVtZW50
Jyk7XG52YXIgaXNUZXh0SW5wdXRFbGVtZW50ID0gcmVxdWlyZSgnLi9pc1RleHRJbnB1dEVsZW1l
bnQnKTtcbnZhciBzaGFsbG93RXF1YWwgPSByZXF1aXJlKCdmYmpzL2xpYi9zaGFsbG93RXF1YWwn
KTtcblxudmFyIHNraXBTZWxlY3Rpb25DaGFuZ2VFdmVudCA9IEV4ZWN1dGlvbkVudmlyb25tZW50
LmNhblVzZURPTSAmJiAnZG9jdW1lbnRNb2RlJyBpbiBkb2N1bWVudCAmJiBkb2N1bWVudC5kb2N1
bWVudE1vZGUgPD0gMTE7XG5cbnZhciBldmVudFR5cGVzID0ge1xuICBzZWxlY3Q6IHtcbiAgICBw
aGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDogJ29uU2VsZWN0JyxcbiAg
ICAgIGNhcHR1cmVkOiAnb25TZWxlY3RDYXB0dXJlJ1xuICAgIH0sXG4gICAgZGVwZW5kZW5jaWVz
OiBbJ3RvcEJsdXInLCAndG9wQ29udGV4dE1lbnUnLCAndG9wRm9jdXMnLCAndG9wS2V5RG93bics
ICd0b3BLZXlVcCcsICd0b3BNb3VzZURvd24nLCAndG9wTW91c2VVcCcsICd0b3BTZWxlY3Rpb25D
aGFuZ2UnXVxuICB9XG59O1xuXG52YXIgYWN0aXZlRWxlbWVudCA9IG51bGw7XG52YXIgYWN0aXZl
RWxlbWVudEluc3QgPSBudWxsO1xudmFyIGxhc3RTZWxlY3Rpb24gPSBudWxsO1xudmFyIG1vdXNl
RG93biA9IGZhbHNlO1xuXG4vLyBUcmFjayB3aGV0aGVyIGEgbGlzdGVuZXIgZXhpc3RzIGZvciB0
aGlzIHBsdWdpbi4gSWYgbm9uZSBleGlzdCwgd2UgZG9cbi8vIG5vdCBleHRyYWN0IGV2ZW50cy4g
U2VlICMzNjM5LlxudmFyIGhhc0xpc3RlbmVyID0gZmFsc2U7XG5cbi8qKlxuICogR2V0IGFuIG9i
amVjdCB3aGljaCBpcyBhIHVuaXF1ZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgY3VycmVudCBzZWxl
Y3Rpb24uXG4gKlxuICogVGhlIHJldHVybiB2YWx1ZSB3aWxsIG5vdCBiZSBjb25zaXN0ZW50IGFj
cm9zcyBub2RlcyBvciBicm93c2VycywgYnV0XG4gKiB0d28gaWRlbnRpY2FsIHNlbGVjdGlvbnMg
b24gdGhlIHNhbWUgbm9kZSB3aWxsIHJldHVybiBpZGVudGljYWwgb2JqZWN0cy5cbiAqXG4gKiBA
cGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZnVuY3Rp
b24gZ2V0U2VsZWN0aW9uKG5vZGUpIHtcbiAgaWYgKCdzZWxlY3Rpb25TdGFydCcgaW4gbm9kZSAm
JiBSZWFjdElucHV0U2VsZWN0aW9uLmhhc1NlbGVjdGlvbkNhcGFiaWxpdGllcyhub2RlKSkge1xu
ICAgIHJldHVybiB7XG4gICAgICBzdGFydDogbm9kZS5zZWxlY3Rpb25TdGFydCxcbiAgICAgIGVu
ZDogbm9kZS5zZWxlY3Rpb25FbmRcbiAgICB9O1xuICB9IGVsc2UgaWYgKHdpbmRvdy5nZXRTZWxl
Y3Rpb24pIHtcbiAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAg
IHJldHVybiB7XG4gICAgICBhbmNob3JOb2RlOiBzZWxlY3Rpb24uYW5jaG9yTm9kZSxcbiAgICAg
IGFuY2hvck9mZnNldDogc2VsZWN0aW9uLmFuY2hvck9mZnNldCxcbiAgICAgIGZvY3VzTm9kZTog
c2VsZWN0aW9uLmZvY3VzTm9kZSxcbiAgICAgIGZvY3VzT2Zmc2V0OiBzZWxlY3Rpb24uZm9jdXNP
ZmZzZXRcbiAgICB9O1xuICB9IGVsc2UgaWYgKGRvY3VtZW50LnNlbGVjdGlvbikge1xuICAgIHZh
ciByYW5nZSA9IGRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpO1xuICAgIHJldHVybiB7
XG4gICAgICBwYXJlbnRFbGVtZW50OiByYW5nZS5wYXJlbnRFbGVtZW50KCksXG4gICAgICB0ZXh0
OiByYW5nZS50ZXh0LFxuICAgICAgdG9wOiByYW5nZS5ib3VuZGluZ1RvcCxcbiAgICAgIGxlZnQ6
IHJhbmdlLmJvdW5kaW5nTGVmdFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBQb2xsIHNlbGVj
dGlvbiB0byBzZWUgd2hldGhlciBpdCdzIGNoYW5nZWQuXG4gKlxuICogQHBhcmFtIHtvYmplY3R9
IG5hdGl2ZUV2ZW50XG4gKiBAcmV0dXJuIHs/U3ludGhldGljRXZlbnR9XG4gKi9cbmZ1bmN0aW9u
IGNvbnN0cnVjdFNlbGVjdEV2ZW50KG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xu
ICAvLyBFbnN1cmUgd2UgaGF2ZSB0aGUgcmlnaHQgZWxlbWVudCwgYW5kIHRoYXQgdGhlIHVzZXIg
aXMgbm90IGRyYWdnaW5nIGFcbiAgLy8gc2VsZWN0aW9uICh0aGlzIG1hdGNoZXMgbmF0aXZlIGBz
ZWxlY3RgIGV2ZW50IGJlaGF2aW9yKS4gSW4gSFRNTDUsIHNlbGVjdFxuICAvLyBmaXJlcyBvbmx5
IG9uIGlucHV0IGFuZCB0ZXh0YXJlYSB0aHVzIGlmIHRoZXJlJ3Mgbm8gZm9jdXNlZCBlbGVtZW50
IHdlXG4gIC8vIHdvbid0IGRpc3BhdGNoLlxuICBpZiAobW91c2VEb3duIHx8IGFjdGl2ZUVsZW1l
bnQgPT0gbnVsbCB8fCBhY3RpdmVFbGVtZW50ICE9PSBnZXRBY3RpdmVFbGVtZW50KCkpIHtcbiAg
ICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIC8vIE9ubHkgZmlyZSB3aGVuIHNlbGVjdGlvbiBoYXMg
YWN0dWFsbHkgY2hhbmdlZC5cbiAgdmFyIGN1cnJlbnRTZWxlY3Rpb24gPSBnZXRTZWxlY3Rpb24o
YWN0aXZlRWxlbWVudCk7XG4gIGlmICghbGFzdFNlbGVjdGlvbiB8fCAhc2hhbGxvd0VxdWFsKGxh
c3RTZWxlY3Rpb24sIGN1cnJlbnRTZWxlY3Rpb24pKSB7XG4gICAgbGFzdFNlbGVjdGlvbiA9IGN1
cnJlbnRTZWxlY3Rpb247XG5cbiAgICB2YXIgc3ludGhldGljRXZlbnQgPSBTeW50aGV0aWNFdmVu
dC5nZXRQb29sZWQoZXZlbnRUeXBlcy5zZWxlY3QsIGFjdGl2ZUVsZW1lbnRJbnN0LCBuYXRpdmVF
dmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuXG4gICAgc3ludGhldGljRXZlbnQudHlwZSA9ICdz
ZWxlY3QnO1xuICAgIHN5bnRoZXRpY0V2ZW50LnRhcmdldCA9IGFjdGl2ZUVsZW1lbnQ7XG5cbiAg
ICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoc3ludGhldGlj
RXZlbnQpO1xuXG4gICAgcmV0dXJuIHN5bnRoZXRpY0V2ZW50O1xuICB9XG5cbiAgcmV0dXJuIG51
bGw7XG59XG5cbi8qKlxuICogVGhpcyBwbHVnaW4gY3JlYXRlcyBhbiBgb25TZWxlY3RgIGV2ZW50
IHRoYXQgbm9ybWFsaXplcyBzZWxlY3QgZXZlbnRzXG4gKiBhY3Jvc3MgZm9ybSBlbGVtZW50cy5c
biAqXG4gKiBTdXBwb3J0ZWQgZWxlbWVudHMgYXJlOlxuICogLSBpbnB1dCAoc2VlIGBpc1RleHRJ
bnB1dEVsZW1lbnRgKVxuICogLSB0ZXh0YXJlYVxuICogLSBjb250ZW50RWRpdGFibGVcbiAqXG4g
KiBUaGlzIGRpZmZlcnMgZnJvbSBuYXRpdmUgYnJvd3NlciBpbXBsZW1lbnRhdGlvbnMgaW4gdGhl
IGZvbGxvd2luZyB3YXlzOlxuICogLSBGaXJlcyBvbiBjb250ZW50RWRpdGFibGUgZmllbGRzIGFz
IHdlbGwgYXMgaW5wdXRzLlxuICogLSBGaXJlcyBmb3IgY29sbGFwc2VkIHNlbGVjdGlvbi5cbiAq
IC0gRmlyZXMgYWZ0ZXIgdXNlciBpbnB1dC5cbiAqL1xudmFyIFNlbGVjdEV2ZW50UGx1Z2luID0g
e1xuICBldmVudFR5cGVzOiBldmVudFR5cGVzLFxuXG4gIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9u
ICh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdl
dCkge1xuICAgIGlmICghaGFzTGlzdGVuZXIpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1c
blxuICAgIHZhciB0YXJnZXROb2RlID0gdGFyZ2V0SW5zdCA/IFJlYWN0RE9NQ29tcG9uZW50VHJl
ZS5nZXROb2RlRnJvbUluc3RhbmNlKHRhcmdldEluc3QpIDogd2luZG93O1xuXG4gICAgc3dpdGNo
ICh0b3BMZXZlbFR5cGUpIHtcbiAgICAgIC8vIFRyYWNrIHRoZSBpbnB1dCBub2RlIHRoYXQgaGFz
IGZvY3VzLlxuICAgICAgY2FzZSAndG9wRm9jdXMnOlxuICAgICAgICBpZiAoaXNUZXh0SW5wdXRF
bGVtZW50KHRhcmdldE5vZGUpIHx8IHRhcmdldE5vZGUuY29udGVudEVkaXRhYmxlID09PSAndHJ1
ZScpIHtcbiAgICAgICAgICBhY3RpdmVFbGVtZW50ID0gdGFyZ2V0Tm9kZTtcbiAgICAgICAgICBh
Y3RpdmVFbGVtZW50SW5zdCA9IHRhcmdldEluc3Q7XG4gICAgICAgICAgbGFzdFNlbGVjdGlvbiA9
IG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0b3BCbHVyJzpc
biAgICAgICAgYWN0aXZlRWxlbWVudCA9IG51bGw7XG4gICAgICAgIGFjdGl2ZUVsZW1lbnRJbnN0
ID0gbnVsbDtcbiAgICAgICAgbGFzdFNlbGVjdGlvbiA9IG51bGw7XG4gICAgICAgIGJyZWFrO1xu
ICAgICAgLy8gRG9uJ3QgZmlyZSB0aGUgZXZlbnQgd2hpbGUgdGhlIHVzZXIgaXMgZHJhZ2dpbmcu
IFRoaXMgbWF0Y2hlcyB0aGVcbiAgICAgIC8vIHNlbWFudGljcyBvZiB0aGUgbmF0aXZlIHNlbGVj
dCBldmVudC5cbiAgICAgIGNhc2UgJ3RvcE1vdXNlRG93bic6XG4gICAgICAgIG1vdXNlRG93biA9
IHRydWU7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9wQ29udGV4dE1lbnUnOlxuICAg
ICAgY2FzZSAndG9wTW91c2VVcCc6XG4gICAgICAgIG1vdXNlRG93biA9IGZhbHNlO1xuICAgICAg
ICByZXR1cm4gY29uc3RydWN0U2VsZWN0RXZlbnQobmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFy
Z2V0KTtcbiAgICAgIC8vIENocm9tZSBhbmQgSUUgZmlyZSBub24tc3RhbmRhcmQgZXZlbnQgd2hl
biBzZWxlY3Rpb24gaXMgY2hhbmdlZCAoYW5kXG4gICAgICAvLyBzb21ldGltZXMgd2hlbiBpdCBo
YXNuJ3QpLiBJRSdzIGV2ZW50IGZpcmVzIG91dCBvZiBvcmRlciB3aXRoIHJlc3BlY3RcbiAgICAg
IC8vIHRvIGtleSBhbmQgaW5wdXQgZXZlbnRzIG9uIGRlbGV0aW9uLCBzbyB3ZSBkaXNjYXJkIGl0
LlxuICAgICAgLy9cbiAgICAgIC8vIEZpcmVmb3ggZG9lc24ndCBzdXBwb3J0IHNlbGVjdGlvbmNo
YW5nZSwgc28gY2hlY2sgc2VsZWN0aW9uIHN0YXR1c1xuICAgICAgLy8gYWZ0ZXIgZWFjaCBrZXkg
ZW50cnkuIFRoZSBzZWxlY3Rpb24gY2hhbmdlcyBhZnRlciBrZXlkb3duIGFuZCBiZWZvcmVcbiAg
ICAgIC8vIGtleXVwLCBidXQgd2UgY2hlY2sgb24ga2V5ZG93biBhcyB3ZWxsIGluIHRoZSBjYXNl
IG9mIGhvbGRpbmcgZG93biBhXG4gICAgICAvLyBrZXksIHdoZW4gbXVsdGlwbGUga2V5ZG93biBl
dmVudHMgYXJlIGZpcmVkIGJ1dCBvbmx5IG9uZSBrZXl1cCBpcy5cbiAgICAgIC8vIFRoaXMgaXMg
YWxzbyBvdXIgYXBwcm9hY2ggZm9yIElFIGhhbmRsaW5nLCBmb3IgdGhlIHJlYXNvbiBhYm92ZS5c
biAgICAgIGNhc2UgJ3RvcFNlbGVjdGlvbkNoYW5nZSc6XG4gICAgICAgIGlmIChza2lwU2VsZWN0
aW9uQ2hhbmdlRXZlbnQpIHtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgLy8g
ZmFsbHMgdGhyb3VnaFxuICAgICAgY2FzZSAndG9wS2V5RG93bic6XG4gICAgICBjYXNlICd0b3BL
ZXlVcCc6XG4gICAgICAgIHJldHVybiBjb25zdHJ1Y3RTZWxlY3RFdmVudChuYXRpdmVFdmVudCwg
bmF0aXZlRXZlbnRUYXJnZXQpO1xuICAgIH1cblxuICAgIHJldHVybiBudWxsO1xuICB9LFxuXG4g
IGRpZFB1dExpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSwgbGlzdGVu
ZXIpIHtcbiAgICBpZiAocmVnaXN0cmF0aW9uTmFtZSA9PT0gJ29uU2VsZWN0Jykge1xuICAgICAg
aGFzTGlzdGVuZXIgPSB0cnVlO1xuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBT
ZWxlY3RFdmVudFBsdWdpbjtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZP
T1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1NlbGVjdEV2ZW50UGx1Z2luLmpzXG4gKiogbW9k
dWxlIGlkID0gMTY1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFy
aWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50Jyk7XG5cbnZhciBFdmVudExpc3Rl
bmVyID0gcmVxdWlyZSgnZmJqcy9saWIvRXZlbnRMaXN0ZW5lcicpO1xudmFyIEV2ZW50UHJvcGFn
YXRvcnMgPSByZXF1aXJlKCcuL0V2ZW50UHJvcGFnYXRvcnMnKTtcbnZhciBSZWFjdERPTUNvbXBv
bmVudFRyZWUgPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpO1xudmFyIFN5bnRo
ZXRpY0FuaW1hdGlvbkV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNBbmltYXRpb25FdmVudCcp
O1xudmFyIFN5bnRoZXRpY0NsaXBib2FyZEV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNDbGlw
Ym9hcmRFdmVudCcpO1xudmFyIFN5bnRoZXRpY0V2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNF
dmVudCcpO1xudmFyIFN5bnRoZXRpY0ZvY3VzRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0Zv
Y3VzRXZlbnQnKTtcbnZhciBTeW50aGV0aWNLZXlib2FyZEV2ZW50ID0gcmVxdWlyZSgnLi9TeW50
aGV0aWNLZXlib2FyZEV2ZW50Jyk7XG52YXIgU3ludGhldGljTW91c2VFdmVudCA9IHJlcXVpcmUo
Jy4vU3ludGhldGljTW91c2VFdmVudCcpO1xudmFyIFN5bnRoZXRpY0RyYWdFdmVudCA9IHJlcXVp
cmUoJy4vU3ludGhldGljRHJhZ0V2ZW50Jyk7XG52YXIgU3ludGhldGljVG91Y2hFdmVudCA9IHJl
cXVpcmUoJy4vU3ludGhldGljVG91Y2hFdmVudCcpO1xudmFyIFN5bnRoZXRpY1RyYW5zaXRpb25F
dmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljVHJhbnNpdGlvbkV2ZW50Jyk7XG52YXIgU3ludGhl
dGljVUlFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljVUlFdmVudCcpO1xudmFyIFN5bnRoZXRp
Y1doZWVsRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY1doZWVsRXZlbnQnKTtcblxudmFyIGVt
cHR5RnVuY3Rpb24gPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eUZ1bmN0aW9uJyk7XG52YXIgZ2V0
RXZlbnRDaGFyQ29kZSA9IHJlcXVpcmUoJy4vZ2V0RXZlbnRDaGFyQ29kZScpO1xudmFyIGludmFy
aWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG4vKipcbiAqIFR1cm5zXG4g
KiBbJ2Fib3J0JywgLi4uXVxuICogaW50b1xuICogZXZlbnRUeXBlcyA9IHtcbiAqICAgJ2Fib3J0
Jzoge1xuICogICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG4gKiAgICAgICBidWJibGVk
OiAnb25BYm9ydCcsXG4gKiAgICAgICBjYXB0dXJlZDogJ29uQWJvcnRDYXB0dXJlJyxcbiAqICAg
ICB9LFxuICogICAgIGRlcGVuZGVuY2llczogWyd0b3BBYm9ydCddLFxuICogICB9LFxuICogICAu
Li5cbiAqIH07XG4gKiB0b3BMZXZlbEV2ZW50c1RvRGlzcGF0Y2hDb25maWcgPSB7XG4gKiAgICd0
b3BBYm9ydCc6IHsgc2FtZUNvbmZpZyB9XG4gKiB9O1xuICovXG52YXIgZXZlbnRUeXBlcyA9IHt9
O1xudmFyIHRvcExldmVsRXZlbnRzVG9EaXNwYXRjaENvbmZpZyA9IHt9O1xuWydhYm9ydCcsICdh
bmltYXRpb25FbmQnLCAnYW5pbWF0aW9uSXRlcmF0aW9uJywgJ2FuaW1hdGlvblN0YXJ0JywgJ2Js
dXInLCAnY2FuUGxheScsICdjYW5QbGF5VGhyb3VnaCcsICdjbGljaycsICdjb250ZXh0TWVudScs
ICdjb3B5JywgJ2N1dCcsICdkb3VibGVDbGljaycsICdkcmFnJywgJ2RyYWdFbmQnLCAnZHJhZ0Vu
dGVyJywgJ2RyYWdFeGl0JywgJ2RyYWdMZWF2ZScsICdkcmFnT3ZlcicsICdkcmFnU3RhcnQnLCAn
ZHJvcCcsICdkdXJhdGlvbkNoYW5nZScsICdlbXB0aWVkJywgJ2VuY3J5cHRlZCcsICdlbmRlZCcs
ICdlcnJvcicsICdmb2N1cycsICdpbnB1dCcsICdpbnZhbGlkJywgJ2tleURvd24nLCAna2V5UHJl
c3MnLCAna2V5VXAnLCAnbG9hZCcsICdsb2FkZWREYXRhJywgJ2xvYWRlZE1ldGFkYXRhJywgJ2xv
YWRTdGFydCcsICdtb3VzZURvd24nLCAnbW91c2VNb3ZlJywgJ21vdXNlT3V0JywgJ21vdXNlT3Zl
cicsICdtb3VzZVVwJywgJ3Bhc3RlJywgJ3BhdXNlJywgJ3BsYXknLCAncGxheWluZycsICdwcm9n
cmVzcycsICdyYXRlQ2hhbmdlJywgJ3Jlc2V0JywgJ3Njcm9sbCcsICdzZWVrZWQnLCAnc2Vla2lu
ZycsICdzdGFsbGVkJywgJ3N1Ym1pdCcsICdzdXNwZW5kJywgJ3RpbWVVcGRhdGUnLCAndG91Y2hD
YW5jZWwnLCAndG91Y2hFbmQnLCAndG91Y2hNb3ZlJywgJ3RvdWNoU3RhcnQnLCAndHJhbnNpdGlv
bkVuZCcsICd2b2x1bWVDaGFuZ2UnLCAnd2FpdGluZycsICd3aGVlbCddLmZvckVhY2goZnVuY3Rp
b24gKGV2ZW50KSB7XG4gIHZhciBjYXBpdGFsaXplZEV2ZW50ID0gZXZlbnRbMF0udG9VcHBlckNh
c2UoKSArIGV2ZW50LnNsaWNlKDEpO1xuICB2YXIgb25FdmVudCA9ICdvbicgKyBjYXBpdGFsaXpl
ZEV2ZW50O1xuICB2YXIgdG9wRXZlbnQgPSAndG9wJyArIGNhcGl0YWxpemVkRXZlbnQ7XG5cbiAg
dmFyIHR5cGUgPSB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJs
ZWQ6IG9uRXZlbnQsXG4gICAgICBjYXB0dXJlZDogb25FdmVudCArICdDYXB0dXJlJ1xuICAgIH0s
XG4gICAgZGVwZW5kZW5jaWVzOiBbdG9wRXZlbnRdXG4gIH07XG4gIGV2ZW50VHlwZXNbZXZlbnRd
ID0gdHlwZTtcbiAgdG9wTGV2ZWxFdmVudHNUb0Rpc3BhdGNoQ29uZmlnW3RvcEV2ZW50XSA9IHR5
cGU7XG59KTtcblxudmFyIG9uQ2xpY2tMaXN0ZW5lcnMgPSB7fTtcblxuZnVuY3Rpb24gZ2V0RGlj
dGlvbmFyeUtleShpbnN0KSB7XG4gIC8vIFByZXZlbnRzIFY4IHBlcmZvcm1hbmNlIGlzc3VlOlxu
ICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC83MjMyXG4gIHJldHVy
biAnLicgKyBpbnN0Ll9yb290Tm9kZUlEO1xufVxuXG5mdW5jdGlvbiBpc0ludGVyYWN0aXZlKHRh
Zykge1xuICByZXR1cm4gdGFnID09PSAnYnV0dG9uJyB8fCB0YWcgPT09ICdpbnB1dCcgfHwgdGFn
ID09PSAnc2VsZWN0JyB8fCB0YWcgPT09ICd0ZXh0YXJlYSc7XG59XG5cbnZhciBTaW1wbGVFdmVu
dFBsdWdpbiA9IHtcbiAgZXZlbnRUeXBlczogZXZlbnRUeXBlcyxcblxuICBleHRyYWN0RXZlbnRz
OiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZl
RXZlbnRUYXJnZXQpIHtcbiAgICB2YXIgZGlzcGF0Y2hDb25maWcgPSB0b3BMZXZlbEV2ZW50c1Rv
RGlzcGF0Y2hDb25maWdbdG9wTGV2ZWxUeXBlXTtcbiAgICBpZiAoIWRpc3BhdGNoQ29uZmlnKSB7
XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIEV2ZW50Q29uc3RydWN0b3I7XG4g
ICAgc3dpdGNoICh0b3BMZXZlbFR5cGUpIHtcbiAgICAgIGNhc2UgJ3RvcEFib3J0JzpcbiAgICAg
IGNhc2UgJ3RvcENhblBsYXknOlxuICAgICAgY2FzZSAndG9wQ2FuUGxheVRocm91Z2gnOlxuICAg
ICAgY2FzZSAndG9wRHVyYXRpb25DaGFuZ2UnOlxuICAgICAgY2FzZSAndG9wRW1wdGllZCc6XG4g
ICAgICBjYXNlICd0b3BFbmNyeXB0ZWQnOlxuICAgICAgY2FzZSAndG9wRW5kZWQnOlxuICAgICAg
Y2FzZSAndG9wRXJyb3InOlxuICAgICAgY2FzZSAndG9wSW5wdXQnOlxuICAgICAgY2FzZSAndG9w
SW52YWxpZCc6XG4gICAgICBjYXNlICd0b3BMb2FkJzpcbiAgICAgIGNhc2UgJ3RvcExvYWRlZERh
dGEnOlxuICAgICAgY2FzZSAndG9wTG9hZGVkTWV0YWRhdGEnOlxuICAgICAgY2FzZSAndG9wTG9h
ZFN0YXJ0JzpcbiAgICAgIGNhc2UgJ3RvcFBhdXNlJzpcbiAgICAgIGNhc2UgJ3RvcFBsYXknOlxu
ICAgICAgY2FzZSAndG9wUGxheWluZyc6XG4gICAgICBjYXNlICd0b3BQcm9ncmVzcyc6XG4gICAg
ICBjYXNlICd0b3BSYXRlQ2hhbmdlJzpcbiAgICAgIGNhc2UgJ3RvcFJlc2V0JzpcbiAgICAgIGNh
c2UgJ3RvcFNlZWtlZCc6XG4gICAgICBjYXNlICd0b3BTZWVraW5nJzpcbiAgICAgIGNhc2UgJ3Rv
cFN0YWxsZWQnOlxuICAgICAgY2FzZSAndG9wU3VibWl0JzpcbiAgICAgIGNhc2UgJ3RvcFN1c3Bl
bmQnOlxuICAgICAgY2FzZSAndG9wVGltZVVwZGF0ZSc6XG4gICAgICBjYXNlICd0b3BWb2x1bWVD
aGFuZ2UnOlxuICAgICAgY2FzZSAndG9wV2FpdGluZyc6XG4gICAgICAgIC8vIEhUTUwgRXZlbnRz
XG4gICAgICAgIC8vIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvaW5kZXguaHRtbCNl
dmVudHMtMFxuICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljRXZlbnQ7XG4gICAg
ICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9wS2V5UHJlc3MnOlxuICAgICAgICAvLyBGaXJlZm94
IGNyZWF0ZXMgYSBrZXlwcmVzcyBldmVudCBmb3IgZnVuY3Rpb24ga2V5cyB0b28uIFRoaXMgcmVt
b3Zlc1xuICAgICAgICAvLyB0aGUgdW53YW50ZWQga2V5cHJlc3MgZXZlbnRzLiBFbnRlciBpcyBo
b3dldmVyIGJvdGggcHJpbnRhYmxlIGFuZFxuICAgICAgICAvLyBub24tcHJpbnRhYmxlLiBPbmUg
d291bGQgZXhwZWN0IFRhYiB0byBiZSBhcyB3ZWxsIChidXQgaXQgaXNuJ3QpLlxuICAgICAgICBp
ZiAoZ2V0RXZlbnRDaGFyQ29kZShuYXRpdmVFdmVudCkgPT09IDApIHtcbiAgICAgICAgICByZXR1
cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuICAgICAgY2Fz
ZSAndG9wS2V5RG93bic6XG4gICAgICBjYXNlICd0b3BLZXlVcCc6XG4gICAgICAgIEV2ZW50Q29u
c3RydWN0b3IgPSBTeW50aGV0aWNLZXlib2FyZEV2ZW50O1xuICAgICAgICBicmVhaztcbiAgICAg
IGNhc2UgJ3RvcEJsdXInOlxuICAgICAgY2FzZSAndG9wRm9jdXMnOlxuICAgICAgICBFdmVudENv
bnN0cnVjdG9yID0gU3ludGhldGljRm9jdXNFdmVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBj
YXNlICd0b3BDbGljayc6XG4gICAgICAgIC8vIEZpcmVmb3ggY3JlYXRlcyBhIGNsaWNrIGV2ZW50
IG9uIHJpZ2h0IG1vdXNlIGNsaWNrcy4gVGhpcyByZW1vdmVzIHRoZVxuICAgICAgICAvLyB1bndh
bnRlZCBjbGljayBldmVudHMuXG4gICAgICAgIGlmIChuYXRpdmVFdmVudC5idXR0b24gPT09IDIp
IHtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgLyogZmFsbHMgdGhy
b3VnaCAqL1xuICAgICAgY2FzZSAndG9wRG91YmxlQ2xpY2snOlxuICAgICAgY2FzZSAndG9wTW91
c2VEb3duJzpcbiAgICAgIGNhc2UgJ3RvcE1vdXNlTW92ZSc6XG4gICAgICBjYXNlICd0b3BNb3Vz
ZVVwJzpcbiAgICAgIC8vIFRPRE86IERpc2FibGVkIGVsZW1lbnRzIHNob3VsZCBub3QgcmVzcG9u
ZCB0byBtb3VzZSBldmVudHNcbiAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2Ug
J3RvcE1vdXNlT3V0JzpcbiAgICAgIGNhc2UgJ3RvcE1vdXNlT3Zlcic6XG4gICAgICBjYXNlICd0
b3BDb250ZXh0TWVudSc6XG4gICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNNb3Vz
ZUV2ZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvcERyYWcnOlxuICAgICAgY2Fz
ZSAndG9wRHJhZ0VuZCc6XG4gICAgICBjYXNlICd0b3BEcmFnRW50ZXInOlxuICAgICAgY2FzZSAn
dG9wRHJhZ0V4aXQnOlxuICAgICAgY2FzZSAndG9wRHJhZ0xlYXZlJzpcbiAgICAgIGNhc2UgJ3Rv
cERyYWdPdmVyJzpcbiAgICAgIGNhc2UgJ3RvcERyYWdTdGFydCc6XG4gICAgICBjYXNlICd0b3BE
cm9wJzpcbiAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY0RyYWdFdmVudDtcbiAg
ICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0b3BUb3VjaENhbmNlbCc6XG4gICAgICBjYXNlICd0
b3BUb3VjaEVuZCc6XG4gICAgICBjYXNlICd0b3BUb3VjaE1vdmUnOlxuICAgICAgY2FzZSAndG9w
VG91Y2hTdGFydCc6XG4gICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNUb3VjaEV2
ZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvcEFuaW1hdGlvbkVuZCc6XG4gICAg
ICBjYXNlICd0b3BBbmltYXRpb25JdGVyYXRpb24nOlxuICAgICAgY2FzZSAndG9wQW5pbWF0aW9u
U3RhcnQnOlxuICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljQW5pbWF0aW9uRXZl
bnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9wVHJhbnNpdGlvbkVuZCc6XG4gICAg
ICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNUcmFuc2l0aW9uRXZlbnQ7XG4gICAgICAg
IGJyZWFrO1xuICAgICAgY2FzZSAndG9wU2Nyb2xsJzpcbiAgICAgICAgRXZlbnRDb25zdHJ1Y3Rv
ciA9IFN5bnRoZXRpY1VJRXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9wV2hl
ZWwnOlxuICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljV2hlZWxFdmVudDtcbiAg
ICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0b3BDb3B5JzpcbiAgICAgIGNhc2UgJ3RvcEN1dCc6
XG4gICAgICBjYXNlICd0b3BQYXN0ZSc6XG4gICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50
aGV0aWNDbGlwYm9hcmRFdmVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuICAgICFFdmVudENv
bnN0cnVjdG9yID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFy
aWFudChmYWxzZSwgJ1NpbXBsZUV2ZW50UGx1Z2luOiBVbmhhbmRsZWQgZXZlbnQgdHlwZSwgYCVz
YC4nLCB0b3BMZXZlbFR5cGUpIDogX3Byb2RJbnZhcmlhbnQoJzg2JywgdG9wTGV2ZWxUeXBlKSA6
IHZvaWQgMDtcbiAgICB2YXIgZXZlbnQgPSBFdmVudENvbnN0cnVjdG9yLmdldFBvb2xlZChkaXNw
YXRjaENvbmZpZywgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtc
biAgICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoZXZlbnQp
O1xuICAgIHJldHVybiBldmVudDtcbiAgfSxcblxuICBkaWRQdXRMaXN0ZW5lcjogZnVuY3Rpb24g
KGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyKSB7XG4gICAgLy8gTW9iaWxlIFNhZmFy
aSBkb2VzIG5vdCBmaXJlIHByb3Blcmx5IGJ1YmJsZSBjbGljayBldmVudHMgb25cbiAgICAvLyBu
b24taW50ZXJhY3RpdmUgZWxlbWVudHMsIHdoaWNoIG1lYW5zIGRlbGVnYXRlZCBjbGljayBsaXN0
ZW5lcnMgZG8gbm90XG4gICAgLy8gZmlyZS4gVGhlIHdvcmthcm91bmQgZm9yIHRoaXMgYnVnIGlu
dm9sdmVzIGF0dGFjaGluZyBhbiBlbXB0eSBjbGlja1xuICAgIC8vIGxpc3RlbmVyIG9uIHRoZSB0
YXJnZXQgbm9kZS5cbiAgICAvLyBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJjaGl2
ZXMvMjAxMC8wOS9jbGlja19ldmVudF9kZWwuaHRtbFxuICAgIGlmIChyZWdpc3RyYXRpb25OYW1l
ID09PSAnb25DbGljaycgJiYgIWlzSW50ZXJhY3RpdmUoaW5zdC5fdGFnKSkge1xuICAgICAgdmFy
IGtleSA9IGdldERpY3Rpb25hcnlLZXkoaW5zdCk7XG4gICAgICB2YXIgbm9kZSA9IFJlYWN0RE9N
Q29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpO1xuICAgICAgaWYgKCFvbkNs
aWNrTGlzdGVuZXJzW2tleV0pIHtcbiAgICAgICAgb25DbGlja0xpc3RlbmVyc1trZXldID0gRXZl
bnRMaXN0ZW5lci5saXN0ZW4obm9kZSwgJ2NsaWNrJywgZW1wdHlGdW5jdGlvbik7XG4gICAgICB9
XG4gICAgfVxuICB9LFxuXG4gIHdpbGxEZWxldGVMaXN0ZW5lcjogZnVuY3Rpb24gKGluc3QsIHJl
Z2lzdHJhdGlvbk5hbWUpIHtcbiAgICBpZiAocmVnaXN0cmF0aW9uTmFtZSA9PT0gJ29uQ2xpY2sn
ICYmICFpc0ludGVyYWN0aXZlKGluc3QuX3RhZykpIHtcbiAgICAgIHZhciBrZXkgPSBnZXREaWN0
aW9uYXJ5S2V5KGluc3QpO1xuICAgICAgb25DbGlja0xpc3RlbmVyc1trZXldLnJlbW92ZSgpO1xu
ICAgICAgZGVsZXRlIG9uQ2xpY2tMaXN0ZW5lcnNba2V5XTtcbiAgICB9XG4gIH1cbn07XG5cbm1v
ZHVsZS5leHBvcnRzID0gU2ltcGxlRXZlbnRQbHVnaW47XG5cblxuLyoqKioqKioqKioqKioqKioq
XG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9TaW1wbGVFdmVudFBs
dWdpbi5qc1xuICoqIG1vZHVsZSBpZCA9IDE2NlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiov
IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFy
IFN5bnRoZXRpY0V2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNFdmVudCcpO1xuXG4vKipcbiAq
IEBpbnRlcmZhY2UgRXZlbnRcbiAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1hbmlt
YXRpb25zLyNBbmltYXRpb25FdmVudC1pbnRlcmZhY2VcbiAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9w
ZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0FuaW1hdGlvbkV2ZW50XG4gKi9cbnZh
ciBBbmltYXRpb25FdmVudEludGVyZmFjZSA9IHtcbiAgYW5pbWF0aW9uTmFtZTogbnVsbCxcbiAg
ZWxhcHNlZFRpbWU6IG51bGwsXG4gIHBzZXVkb0VsZW1lbnQ6IG51bGxcbn07XG5cbi8qKlxuICog
QHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNw
YXRjaCB0aGlzIGV2ZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtl
ciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2
ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQGV4dGVuZHMge1N5bnRoZXRpY0V2ZW50
fVxuICovXG5mdW5jdGlvbiBTeW50aGV0aWNBbmltYXRpb25FdmVudChkaXNwYXRjaENvbmZpZywg
ZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICByZXR1
cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJr
ZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRpY0V2ZW50
LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNBbmltYXRpb25FdmVudCwgQW5pbWF0aW9uRXZlbnRJbnRl
cmZhY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0FuaW1hdGlvbkV2ZW50O1xuXG5c
bi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRv
bS9saWIvU3ludGhldGljQW5pbWF0aW9uRXZlbnQuanNcbiAqKiBtb2R1bGUgaWQgPSAxNjdcbiAq
KiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAq
L1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBTeW50aGV0aWNFdmVudCA9IHJlcXVpcmUoJy4vU3lu
dGhldGljRXZlbnQnKTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIEV2ZW50XG4gKiBAc2VlIGh0dHA6
Ly93d3cudzMub3JnL1RSL2NsaXBib2FyZC1hcGlzL1xuICovXG52YXIgQ2xpcGJvYXJkRXZlbnRJ
bnRlcmZhY2UgPSB7XG4gIGNsaXBib2FyZERhdGE6IGZ1bmN0aW9uIChldmVudCkge1xuICAgIHJl
dHVybiAnY2xpcGJvYXJkRGF0YScgaW4gZXZlbnQgPyBldmVudC5jbGlwYm9hcmREYXRhIDogd2lu
ZG93LmNsaXBib2FyZERhdGE7XG4gIH1cbn07XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGRp
c3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50Llxu
ICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUg
ZXZlbnQgdGFyZ2V0LlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93
c2VyIGV2ZW50LlxuICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9XG4gKi9cbmZ1bmN0aW9u
IFN5bnRoZXRpY0NsaXBib2FyZEV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwg
bmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIHJldHVybiBTeW50aGV0aWNFdmVu
dC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQs
IG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbn1cblxuU3ludGhldGljRXZlbnQuYXVnbWVudENsYXNzKFN5
bnRoZXRpY0NsaXBib2FyZEV2ZW50LCBDbGlwYm9hcmRFdmVudEludGVyZmFjZSk7XG5cbm1vZHVs
ZS5leHBvcnRzID0gU3ludGhldGljQ2xpcGJvYXJkRXZlbnQ7XG5cblxuLyoqKioqKioqKioqKioq
KioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9TeW50aGV0aWND
bGlwYm9hcmRFdmVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDE2OFxuICoqIG1vZHVsZSBjaHVua3Mg
PSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0
JztcblxudmFyIFN5bnRoZXRpY0V2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNFdmVudCcpO1xu
XG4vKipcbiAqIEBpbnRlcmZhY2UgRXZlbnRcbiAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIv
RE9NLUxldmVsLTMtRXZlbnRzLyNldmVudHMtY29tcG9zaXRpb25ldmVudHNcbiAqL1xudmFyIENv
bXBvc2l0aW9uRXZlbnRJbnRlcmZhY2UgPSB7XG4gIGRhdGE6IG51bGxcbn07XG5cbi8qKlxuICog
QHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNw
YXRjaCB0aGlzIGV2ZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtl
ciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2
ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZl
bnR9XG4gKi9cbmZ1bmN0aW9uIFN5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQoZGlzcGF0Y2hDb25m
aWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAg
cmV0dXJuIFN5bnRoZXRpY0V2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNo
TWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xufVxuXG5TeW50aGV0aWNF
dmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljQ29tcG9zaXRpb25FdmVudCwgQ29tcG9zaXRpb25F
dmVudEludGVyZmFjZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ludGhldGljQ29tcG9zaXRpb25F
dmVudDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4v
fi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQuanNcbiAqKiBtb2R1bGUg
aWQgPSAxNjlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4g
KlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBTeW50aGV0aWNNb3VzZUV2ZW50
ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNNb3VzZUV2ZW50Jyk7XG5cbi8qKlxuICogQGludGVyZmFj
ZSBEcmFnRXZlbnRcbiAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZl
bnRzL1xuICovXG52YXIgRHJhZ0V2ZW50SW50ZXJmYWNlID0ge1xuICBkYXRhVHJhbnNmZXI6IG51
bGxcbn07XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3Vy
YXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IGRp
c3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuICogQHBh
cmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQGV4dGVu
ZHMge1N5bnRoZXRpY1VJRXZlbnR9XG4gKi9cbmZ1bmN0aW9uIFN5bnRoZXRpY0RyYWdFdmVudChk
aXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRh
cmdldCkge1xuICByZXR1cm4gU3ludGhldGljTW91c2VFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNo
Q29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtc
bn1cblxuU3ludGhldGljTW91c2VFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljRHJhZ0V2ZW50
LCBEcmFnRXZlbnRJbnRlcmZhY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0RyYWdF
dmVudDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4v
fi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0RyYWdFdmVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDE3
MFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4g
KlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFN5bnRoZXRpY1VJRXZlbnQgPSByZXF1aXJl
KCcuL1N5bnRoZXRpY1VJRXZlbnQnKTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIEZvY3VzRXZlbnRc
biAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzL1xuICovXG52
YXIgRm9jdXNFdmVudEludGVyZmFjZSA9IHtcbiAgcmVsYXRlZFRhcmdldDogbnVsbFxufTtcblxu
LyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2Vk
IHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJr
ZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG4gKiBAcGFyYW0ge29iamVj
dH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBAZXh0ZW5kcyB7U3ludGhl
dGljVUlFdmVudH1cbiAqL1xuZnVuY3Rpb24gU3ludGhldGljRm9jdXNFdmVudChkaXNwYXRjaENv
bmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xu
ICByZXR1cm4gU3ludGhldGljVUlFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNw
YXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbn1cblxuU3ludGhl
dGljVUlFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljRm9jdXNFdmVudCwgRm9jdXNFdmVudElu
dGVyZmFjZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ludGhldGljRm9jdXNFdmVudDtcblxuXG4v
KioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20v
bGliL1N5bnRoZXRpY0ZvY3VzRXZlbnQuanNcbiAqKiBtb2R1bGUgaWQgPSAxNzFcbiAqKiBtb2R1
bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
XG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4n
dXNlIHN0cmljdCc7XG5cbnZhciBTeW50aGV0aWNFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGlj
RXZlbnQnKTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIEV2ZW50XG4gKiBAc2VlIGh0dHA6Ly93d3cu
dzMub3JnL1RSLzIwMTMvV0QtRE9NLUxldmVsLTMtRXZlbnRzLTIwMTMxMTA1XG4gKiAgICAgIC8j
ZXZlbnRzLWlucHV0ZXZlbnRzXG4gKi9cbnZhciBJbnB1dEV2ZW50SW50ZXJmYWNlID0ge1xuICBk
YXRhOiBudWxsXG59O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBD
b25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBwYXJhbSB7c3Ry
aW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5c
biAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAq
IEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fVxuICovXG5mdW5jdGlvbiBTeW50aGV0aWNJbnB1
dEV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2
ZUV2ZW50VGFyZ2V0KSB7XG4gIHJldHVybiBTeW50aGV0aWNFdmVudC5jYWxsKHRoaXMsIGRpc3Bh
dGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0
KTtcbn1cblxuU3ludGhldGljRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY0lucHV0RXZlbnQs
IElucHV0RXZlbnRJbnRlcmZhY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0lucHV0
RXZlbnQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAu
L34vcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNJbnB1dEV2ZW50LmpzXG4gKiogbW9kdWxlIGlkID0g
MTcyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
biAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgU3ludGhldGljVUlFdmVudCA9IHJlcXVp
cmUoJy4vU3ludGhldGljVUlFdmVudCcpO1xuXG52YXIgZ2V0RXZlbnRDaGFyQ29kZSA9IHJlcXVp
cmUoJy4vZ2V0RXZlbnRDaGFyQ29kZScpO1xudmFyIGdldEV2ZW50S2V5ID0gcmVxdWlyZSgnLi9n
ZXRFdmVudEtleScpO1xudmFyIGdldEV2ZW50TW9kaWZpZXJTdGF0ZSA9IHJlcXVpcmUoJy4vZ2V0
RXZlbnRNb2RpZmllclN0YXRlJyk7XG5cbi8qKlxuICogQGludGVyZmFjZSBLZXlib2FyZEV2ZW50
XG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy9cbiAqL1xu
dmFyIEtleWJvYXJkRXZlbnRJbnRlcmZhY2UgPSB7XG4gIGtleTogZ2V0RXZlbnRLZXksXG4gIGxv
Y2F0aW9uOiBudWxsLFxuICBjdHJsS2V5OiBudWxsLFxuICBzaGlmdEtleTogbnVsbCxcbiAgYWx0
S2V5OiBudWxsLFxuICBtZXRhS2V5OiBudWxsLFxuICByZXBlYXQ6IG51bGwsXG4gIGxvY2FsZTog
bnVsbCxcbiAgZ2V0TW9kaWZpZXJTdGF0ZTogZ2V0RXZlbnRNb2RpZmllclN0YXRlLFxuICAvLyBM
ZWdhY3kgSW50ZXJmYWNlXG4gIGNoYXJDb2RlOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAvLyBg
Y2hhckNvZGVgIGlzIHRoZSByZXN1bHQgb2YgYSBLZXlQcmVzcyBldmVudCBhbmQgcmVwcmVzZW50
cyB0aGUgdmFsdWUgb2ZcbiAgICAvLyB0aGUgYWN0dWFsIHByaW50YWJsZSBjaGFyYWN0ZXIuXG5c
biAgICAvLyBLZXlQcmVzcyBpcyBkZXByZWNhdGVkLCBidXQgaXRzIHJlcGxhY2VtZW50IGlzIG5v
dCB5ZXQgZmluYWwgYW5kIG5vdFxuICAgIC8vIGltcGxlbWVudGVkIGluIGFueSBtYWpvciBicm93
c2VyLiBPbmx5IEtleVByZXNzIGhhcyBjaGFyQ29kZS5cbiAgICBpZiAoZXZlbnQudHlwZSA9PT0g
J2tleXByZXNzJykge1xuICAgICAgcmV0dXJuIGdldEV2ZW50Q2hhckNvZGUoZXZlbnQpO1xuICAg
IH1cbiAgICByZXR1cm4gMDtcbiAgfSxcbiAga2V5Q29kZTogZnVuY3Rpb24gKGV2ZW50KSB7XG4g
ICAgLy8gYGtleUNvZGVgIGlzIHRoZSByZXN1bHQgb2YgYSBLZXlEb3duL1VwIGV2ZW50IGFuZCBy
ZXByZXNlbnRzIHRoZSB2YWx1ZSBvZlxuICAgIC8vIHBoeXNpY2FsIGtleWJvYXJkIGtleS5cblxu
ICAgIC8vIFRoZSBhY3R1YWwgbWVhbmluZyBvZiB0aGUgdmFsdWUgZGVwZW5kcyBvbiB0aGUgdXNl
cnMnIGtleWJvYXJkIGxheW91dFxuICAgIC8vIHdoaWNoIGNhbm5vdCBiZSBkZXRlY3RlZC4gQXNz
dW1pbmcgdGhhdCBpdCBpcyBhIFVTIGtleWJvYXJkIGxheW91dFxuICAgIC8vIHByb3ZpZGVzIGEg
c3VycHJpc2luZ2x5IGFjY3VyYXRlIG1hcHBpbmcgZm9yIFVTIGFuZCBFdXJvcGVhbiB1c2Vycy5c
biAgICAvLyBEdWUgdG8gdGhpcywgaXQgaXMgbGVmdCB0byB0aGUgdXNlciB0byBpbXBsZW1lbnQg
YXQgdGhpcyB0aW1lLlxuICAgIGlmIChldmVudC50eXBlID09PSAna2V5ZG93bicgfHwgZXZlbnQu
dHlwZSA9PT0gJ2tleXVwJykge1xuICAgICAgcmV0dXJuIGV2ZW50LmtleUNvZGU7XG4gICAgfVxu
ICAgIHJldHVybiAwO1xuICB9LFxuICB3aGljaDogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgLy8g
YHdoaWNoYCBpcyBhbiBhbGlhcyBmb3IgZWl0aGVyIGBrZXlDb2RlYCBvciBgY2hhckNvZGVgIGRl
cGVuZGluZyBvbiB0aGVcbiAgICAvLyB0eXBlIG9mIHRoZSBldmVudC5cbiAgICBpZiAoZXZlbnQu
dHlwZSA9PT0gJ2tleXByZXNzJykge1xuICAgICAgcmV0dXJuIGdldEV2ZW50Q2hhckNvZGUoZXZl
bnQpO1xuICAgIH1cbiAgICBpZiAoZXZlbnQudHlwZSA9PT0gJ2tleWRvd24nIHx8IGV2ZW50LnR5
cGUgPT09ICdrZXl1cCcpIHtcbiAgICAgIHJldHVybiBldmVudC5rZXlDb2RlO1xuICAgIH1cbiAg
ICByZXR1cm4gMDtcbiAgfVxufTtcblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hD
b25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG4gKiBAcGFy
YW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0
YXJnZXQuXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZl
bnQuXG4gKiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH1cbiAqL1xuZnVuY3Rpb24gU3ludGhl
dGljS2V5Ym9hcmRFdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2
ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICByZXR1cm4gU3ludGhldGljVUlFdmVudC5jYWxs
KHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2
ZUV2ZW50VGFyZ2V0KTtcbn1cblxuU3ludGhldGljVUlFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhl
dGljS2V5Ym9hcmRFdmVudCwgS2V5Ym9hcmRFdmVudEludGVyZmFjZSk7XG5cbm1vZHVsZS5leHBv
cnRzID0gU3ludGhldGljS2V5Ym9hcmRFdmVudDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAq
KiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0tleWJvYXJk
RXZlbnQuanNcbiAqKiBtb2R1bGUgaWQgPSAxNzNcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoq
LyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZh
ciBTeW50aGV0aWNVSUV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNVSUV2ZW50Jyk7XG5cbnZh
ciBnZXRFdmVudE1vZGlmaWVyU3RhdGUgPSByZXF1aXJlKCcuL2dldEV2ZW50TW9kaWZpZXJTdGF0
ZScpO1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgVG91Y2hFdmVudFxuICogQHNlZSBodHRwOi8vd3d3
LnczLm9yZy9UUi90b3VjaC1ldmVudHMvXG4gKi9cbnZhciBUb3VjaEV2ZW50SW50ZXJmYWNlID0g
e1xuICB0b3VjaGVzOiBudWxsLFxuICB0YXJnZXRUb3VjaGVzOiBudWxsLFxuICBjaGFuZ2VkVG91
Y2hlczogbnVsbCxcbiAgYWx0S2V5OiBudWxsLFxuICBtZXRhS2V5OiBudWxsLFxuICBjdHJsS2V5
OiBudWxsLFxuICBzaGlmdEtleTogbnVsbCxcbiAgZ2V0TW9kaWZpZXJTdGF0ZTogZ2V0RXZlbnRN
b2RpZmllclN0YXRlXG59O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZp
ZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBwYXJhbSB7
c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdl
dC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5c
biAqIEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fVxuICovXG5mdW5jdGlvbiBTeW50aGV0aWNU
b3VjaEV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5h
dGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIHJldHVybiBTeW50aGV0aWNVSUV2ZW50LmNhbGwodGhpcywg
ZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRU
YXJnZXQpO1xufVxuXG5TeW50aGV0aWNVSUV2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNUb3Vj
aEV2ZW50LCBUb3VjaEV2ZW50SW50ZXJmYWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0
aWNUb3VjaEV2ZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVS
XG4gKiogLi9+L3JlYWN0LWRvbS9saWIvU3ludGhldGljVG91Y2hFdmVudC5qc1xuICoqIG1vZHVs
ZSBpZCA9IDE3NFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
biAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFN5bnRoZXRpY0V2ZW50ID0g
cmVxdWlyZSgnLi9TeW50aGV0aWNFdmVudCcpO1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgRXZlbnRc
biAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMjAwOS9XRC1jc3MzLXRyYW5zaXRpb25zLTIw
MDkwMzIwLyN0cmFuc2l0aW9uLWV2ZW50cy1cbiAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96
aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1RyYW5zaXRpb25FdmVudFxuICovXG52YXIgVHJh
bnNpdGlvbkV2ZW50SW50ZXJmYWNlID0ge1xuICBwcm9wZXJ0eU5hbWU6IG51bGwsXG4gIGVsYXBz
ZWRUaW1lOiBudWxsLFxuICBwc2V1ZG9FbGVtZW50OiBudWxsXG59O1xuXG4vKipcbiAqIEBwYXJh
bSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2gg
dGhpcyBldmVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRl
bnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVu
dCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEBleHRlbmRzIHtTeW50aGV0aWNFdmVudH1cbiAq
L1xuZnVuY3Rpb24gU3ludGhldGljVHJhbnNpdGlvbkV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNw
YXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIHJldHVybiBT
eW50aGV0aWNFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwg
bmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbn1cblxuU3ludGhldGljRXZlbnQuYXVn
bWVudENsYXNzKFN5bnRoZXRpY1RyYW5zaXRpb25FdmVudCwgVHJhbnNpdGlvbkV2ZW50SW50ZXJm
YWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNUcmFuc2l0aW9uRXZlbnQ7XG5cblxu
LyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9t
L2xpYi9TeW50aGV0aWNUcmFuc2l0aW9uRXZlbnQuanNcbiAqKiBtb2R1bGUgaWQgPSAxNzVcbiAq
KiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAq
L1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBTeW50aGV0aWNNb3VzZUV2ZW50ID0gcmVxdWlyZSgn
Li9TeW50aGV0aWNNb3VzZUV2ZW50Jyk7XG5cbi8qKlxuICogQGludGVyZmFjZSBXaGVlbEV2ZW50
XG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy9cbiAqL1xu
dmFyIFdoZWVsRXZlbnRJbnRlcmZhY2UgPSB7XG4gIGRlbHRhWDogZnVuY3Rpb24gKGV2ZW50KSB7
XG4gICAgcmV0dXJuICdkZWx0YVgnIGluIGV2ZW50ID8gZXZlbnQuZGVsdGFYIDogLy8gRmFsbGJh
Y2sgdG8gYHdoZWVsRGVsdGFYYCBmb3IgV2Via2l0IGFuZCBub3JtYWxpemUgKHJpZ2h0IGlzIHBv
c2l0aXZlKS5cbiAgICAnd2hlZWxEZWx0YVgnIGluIGV2ZW50ID8gLWV2ZW50LndoZWVsRGVsdGFY
IDogMDtcbiAgfSxcbiAgZGVsdGFZOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICByZXR1cm4gJ2Rl
bHRhWScgaW4gZXZlbnQgPyBldmVudC5kZWx0YVkgOiAvLyBGYWxsYmFjayB0byBgd2hlZWxEZWx0
YVlgIGZvciBXZWJraXQgYW5kIG5vcm1hbGl6ZSAoZG93biBpcyBwb3NpdGl2ZSkuXG4gICAgJ3do
ZWVsRGVsdGFZJyBpbiBldmVudCA/IC1ldmVudC53aGVlbERlbHRhWSA6IC8vIEZhbGxiYWNrIHRv
IGB3aGVlbERlbHRhYCBmb3IgSUU8OSBhbmQgbm9ybWFsaXplIChkb3duIGlzIHBvc2l0aXZlKS5c
biAgICAnd2hlZWxEZWx0YScgaW4gZXZlbnQgPyAtZXZlbnQud2hlZWxEZWx0YSA6IDA7XG4gIH0s
XG4gIGRlbHRhWjogbnVsbCxcblxuICAvLyBCcm93c2VycyB3aXRob3V0IFwiZGVsdGFNb2RlXCIg
aXMgcmVwb3J0aW5nIGluIHJhdyB3aGVlbCBkZWx0YSB3aGVyZSBvbmVcbiAgLy8gbm90Y2ggb24g
dGhlIHNjcm9sbCBpcyBhbHdheXMgKy8tIDEyMCwgcm91Z2hseSBlcXVpdmFsZW50IHRvIHBpeGVs
cy5cbiAgLy8gQSBnb29kIGFwcHJveGltYXRpb24gb2YgRE9NX0RFTFRBX0xJTkUgKDEpIGlzIDUl
IG9mIHZpZXdwb3J0IHNpemUgb3JcbiAgLy8gfjQwIHBpeGVscywgZm9yIERPTV9ERUxUQV9TQ1JF
RU4gKDIpIGl0IGlzIDg3LjUlIG9mIHZpZXdwb3J0IHNpemUuXG4gIGRlbHRhTW9kZTogbnVsbFxu
fTtcblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlv
biB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0
Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG4gKiBAcGFyYW0g
e29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBAZXh0ZW5kcyB7
U3ludGhldGljTW91c2VFdmVudH1cbiAqL1xuZnVuY3Rpb24gU3ludGhldGljV2hlZWxFdmVudChk
aXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRh
cmdldCkge1xuICByZXR1cm4gU3ludGhldGljTW91c2VFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNo
Q29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtc
bn1cblxuU3ludGhldGljTW91c2VFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljV2hlZWxFdmVu
dCwgV2hlZWxFdmVudEludGVyZmFjZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ludGhldGljV2hl
ZWxFdmVudDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoq
IC4vfi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY1doZWVsRXZlbnQuanNcbiAqKiBtb2R1bGUgaWQg
PSAxNzZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxu
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIE1PRCA9IDY1NTIxO1xuXG4v
LyBhZGxlcjMyIGlzIG5vdCBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcsIGFuZCBpcyBvbmx5IHVz
ZWQgdG8gc2FuaXR5IGNoZWNrIHRoYXRcbi8vIG1hcmt1cCBnZW5lcmF0ZWQgb24gdGhlIHNlcnZl
ciBtYXRjaGVzIHRoZSBtYXJrdXAgZ2VuZXJhdGVkIG9uIHRoZSBjbGllbnQuXG4vLyBUaGlzIGlt
cGxlbWVudGF0aW9uIChhIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIFNoZWV0SlMgdmVyc2lvbikg
aGFzIGJlZW4gb3B0aW1pemVkXG4vLyBmb3Igb3VyIHVzZSBjYXNlLCBhdCB0aGUgZXhwZW5zZSBv
ZiBjb25mb3JtaW5nIHRvIHRoZSBhZGxlcjMyIHNwZWNpZmljYXRpb25cbi8vIGZvciBub24tYXNj
aWkgaW5wdXRzLlxuZnVuY3Rpb24gYWRsZXIzMihkYXRhKSB7XG4gIHZhciBhID0gMTtcbiAgdmFy
IGIgPSAwO1xuICB2YXIgaSA9IDA7XG4gIHZhciBsID0gZGF0YS5sZW5ndGg7XG4gIHZhciBtID0g
bCAmIH4weDM7XG4gIHdoaWxlIChpIDwgbSkge1xuICAgIHZhciBuID0gTWF0aC5taW4oaSArIDQw
OTYsIG0pO1xuICAgIGZvciAoOyBpIDwgbjsgaSArPSA0KSB7XG4gICAgICBiICs9IChhICs9IGRh
dGEuY2hhckNvZGVBdChpKSkgKyAoYSArPSBkYXRhLmNoYXJDb2RlQXQoaSArIDEpKSArIChhICs9
IGRhdGEuY2hhckNvZGVBdChpICsgMikpICsgKGEgKz0gZGF0YS5jaGFyQ29kZUF0KGkgKyAzKSk7
XG4gICAgfVxuICAgIGEgJT0gTU9EO1xuICAgIGIgJT0gTU9EO1xuICB9XG4gIGZvciAoOyBpIDwg
bDsgaSsrKSB7XG4gICAgYiArPSBhICs9IGRhdGEuY2hhckNvZGVBdChpKTtcbiAgfVxuICBhICU9
IE1PRDtcbiAgYiAlPSBNT0Q7XG4gIHJldHVybiBhIHwgYiA8PCAxNjtcbn1cblxubW9kdWxlLmV4
cG9ydHMgPSBhZGxlcjMyO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9P
VEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvYWRsZXIzMi5qc1xuICoqIG1vZHVsZSBpZCA9IDE3
N1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4g
KlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIENTU1Byb3BlcnR5ID0gcmVxdWlyZSgnLi9D
U1NQcm9wZXJ0eScpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7
XG5cbnZhciBpc1VuaXRsZXNzTnVtYmVyID0gQ1NTUHJvcGVydHkuaXNVbml0bGVzc051bWJlcjtc
bnZhciBzdHlsZVdhcm5pbmdzID0ge307XG5cbi8qKlxuICogQ29udmVydCBhIHZhbHVlIGludG8g
dGhlIHByb3BlciBjc3Mgd3JpdGFibGUgdmFsdWUuIFRoZSBzdHlsZSBuYW1lIGBuYW1lYFxuICog
c2hvdWxkIGJlIGxvZ2ljYWwgKG5vIGh5cGhlbnMpLCBhcyBzcGVjaWZpZWRcbiAqIGluIGBDU1NQ
cm9wZXJ0eS5pc1VuaXRsZXNzTnVtYmVyYC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbmFtZSBD
U1MgcHJvcGVydHkgbmFtZSBzdWNoIGFzIGB0b3BNYXJnaW5gLlxuICogQHBhcmFtIHsqfSB2YWx1
ZSBDU1MgcHJvcGVydHkgdmFsdWUgc3VjaCBhcyBgMTBweGAuXG4gKiBAcGFyYW0ge1JlYWN0RE9N
Q29tcG9uZW50fSBjb21wb25lbnRcbiAqIEByZXR1cm4ge3N0cmluZ30gTm9ybWFsaXplZCBzdHls
ZSB2YWx1ZSB3aXRoIGRpbWVuc2lvbnMgYXBwbGllZC5cbiAqL1xuZnVuY3Rpb24gZGFuZ2Vyb3Vz
U3R5bGVWYWx1ZShuYW1lLCB2YWx1ZSwgY29tcG9uZW50LCBpc0N1c3RvbVByb3BlcnR5KSB7XG4g
IC8vIE5vdGUgdGhhdCB3ZSd2ZSByZW1vdmVkIGVzY2FwZVRleHRGb3JCcm93c2VyKCkgY2FsbHMg
aGVyZSBzaW5jZSB0aGVcbiAgLy8gd2hvbGUgc3RyaW5nIHdpbGwgYmUgZXNjYXBlZCB3aGVuIHRo
ZSBhdHRyaWJ1dGUgaXMgaW5qZWN0ZWQgaW50b1xuICAvLyB0aGUgbWFya3VwLiBJZiB5b3UgcHJv
dmlkZSB1bnNhZmUgdXNlciBkYXRhIGhlcmUgdGhleSBjYW4gaW5qZWN0XG4gIC8vIGFyYml0cmFy
eSBDU1Mgd2hpY2ggbWF5IGJlIHByb2JsZW1hdGljIChJIGNvdWxkbid0IHJlcHJvIHRoaXMpOlxu
ICAvLyBodHRwczovL3d3dy5vd2FzcC5vcmcvaW5kZXgucGhwL1hTU19GaWx0ZXJfRXZhc2lvbl9D
aGVhdF9TaGVldFxuICAvLyBodHRwOi8vd3d3LnRoZXNwYW5uZXIuY28udWsvMjAwNy8xMS8yNi91
bHRpbWF0ZS14c3MtY3NzLWluamVjdGlvbi9cbiAgLy8gVGhpcyBpcyBub3QgYW4gWFNTIGhvbGUg
YnV0IGluc3RlYWQgYSBwb3RlbnRpYWwgQ1NTIGluamVjdGlvbiBpc3N1ZVxuICAvLyB3aGljaCBo
YXMgbGVhZCB0byBhIGdyZWF0ZXIgZGlzY3Vzc2lvbiBhYm91dCBob3cgd2UncmUgZ29pbmcgdG9c
biAgLy8gdHJ1c3QgVVJMcyBtb3ZpbmcgZm9yd2FyZC4gU2VlICMyMTE1OTAxXG5cbiAgdmFyIGlz
RW1wdHkgPSB2YWx1ZSA9PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nIHx8IHZh
bHVlID09PSAnJztcbiAgaWYgKGlzRW1wdHkpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICB2
YXIgaXNOb25OdW1lcmljID0gaXNOYU4odmFsdWUpO1xuICBpZiAoaXNDdXN0b21Qcm9wZXJ0eSB8
fCBpc05vbk51bWVyaWMgfHwgdmFsdWUgPT09IDAgfHwgaXNVbml0bGVzc051bWJlci5oYXNPd25Q
cm9wZXJ0eShuYW1lKSAmJiBpc1VuaXRsZXNzTnVtYmVyW25hbWVdKSB7XG4gICAgcmV0dXJuICcn
ICsgdmFsdWU7IC8vIGNhc3QgdG8gc3RyaW5nXG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09
PSAnc3RyaW5nJykge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgICAvLyBBbGxvdyAnMCcgdG8gcGFzcyB0aHJvdWdoIHdpdGhvdXQgd2Fybmlu
Zy4gMCBpcyBhbHJlYWR5IHNwZWNpYWwgYW5kXG4gICAgICAvLyBkb2Vzbid0IHJlcXVpcmUgdW5p
dHMsIHNvIHdlIGRvbid0IG5lZWQgdG8gd2FybiBhYm91dCBpdC5cbiAgICAgIGlmIChjb21wb25l
bnQgJiYgdmFsdWUgIT09ICcwJykge1xuICAgICAgICB2YXIgb3duZXIgPSBjb21wb25lbnQuX2N1
cnJlbnRFbGVtZW50Ll9vd25lcjtcbiAgICAgICAgdmFyIG93bmVyTmFtZSA9IG93bmVyID8gb3du
ZXIuZ2V0TmFtZSgpIDogbnVsbDtcbiAgICAgICAgaWYgKG93bmVyTmFtZSAmJiAhc3R5bGVXYXJu
aW5nc1tvd25lck5hbWVdKSB7XG4gICAgICAgICAgc3R5bGVXYXJuaW5nc1tvd25lck5hbWVdID0g
e307XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHdhcm5lZCA9IGZhbHNlO1xuICAgICAgICBpZiAo
b3duZXJOYW1lKSB7XG4gICAgICAgICAgdmFyIHdhcm5pbmdzID0gc3R5bGVXYXJuaW5nc1tvd25l
ck5hbWVdO1xuICAgICAgICAgIHdhcm5lZCA9IHdhcm5pbmdzW25hbWVdO1xuICAgICAgICAgIGlm
ICghd2FybmVkKSB7XG4gICAgICAgICAgICB3YXJuaW5nc1tuYW1lXSA9IHRydWU7XG4gICAgICAg
ICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICghd2FybmVkKSB7XG4gICAgICAgICAgcHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdhIGAlc2Ag
dGFnIChvd25lcjogYCVzYCkgd2FzIHBhc3NlZCBhIG51bWVyaWMgc3RyaW5nIHZhbHVlICcgKyAn
Zm9yIENTUyBwcm9wZXJ0eSBgJXNgICh2YWx1ZTogYCVzYCkgd2hpY2ggd2lsbCBiZSB0cmVhdGVk
ICcgKyAnYXMgYSB1bml0bGVzcyBudW1iZXIgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBSZWFjdC4n
LCBjb21wb25lbnQuX2N1cnJlbnRFbGVtZW50LnR5cGUsIG93bmVyTmFtZSB8fCAndW5rbm93bics
IG5hbWUsIHZhbHVlKSA6IHZvaWQgMDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICB2
YWx1ZSA9IHZhbHVlLnRyaW0oKTtcbiAgfVxuICByZXR1cm4gdmFsdWUgKyAncHgnO1xufVxuXG5t
b2R1bGUuZXhwb3J0cyA9IGRhbmdlcm91c1N0eWxlVmFsdWU7XG5cblxuLyoqKioqKioqKioqKioq
KioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9kYW5nZXJvdXNT
dHlsZVZhbHVlLmpzXG4gKiogbW9kdWxlIGlkID0gMTc4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBc
biAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4g
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xu
XG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xu
XG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSByZXF1aXJlKCdyZWFjdC9saWIvUmVhY3RDdXJyZW50
T3duZXInKTtcbnZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSByZXF1aXJlKCcuL1JlYWN0RE9N
Q29tcG9uZW50VHJlZScpO1xudmFyIFJlYWN0SW5zdGFuY2VNYXAgPSByZXF1aXJlKCcuL1JlYWN0
SW5zdGFuY2VNYXAnKTtcblxudmFyIGdldEhvc3RDb21wb25lbnRGcm9tQ29tcG9zaXRlID0gcmVx
dWlyZSgnLi9nZXRIb3N0Q29tcG9uZW50RnJvbUNvbXBvc2l0ZScpO1xudmFyIGludmFyaWFudCA9
IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdm
YmpzL2xpYi93YXJuaW5nJyk7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgRE9NIG5vZGUgcmVuZGVy
ZWQgYnkgdGhpcyBlbGVtZW50LlxuICpcbiAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5p
by9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdGRvbS5maW5kZG9tbm9kZVxuICpc
biAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR8RE9NRWxlbWVudH0gY29tcG9uZW50T3JFbGVtZW50
XG4gKiBAcmV0dXJuIHs/RE9NRWxlbWVudH0gVGhlIHJvb3Qgbm9kZSBvZiB0aGlzIGVsZW1lbnQu
XG4gKi9cbmZ1bmN0aW9uIGZpbmRET01Ob2RlKGNvbXBvbmVudE9yRWxlbWVudCkge1xuICBpZiAo
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHZhciBvd25lciA9
IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQ7XG4gICAgaWYgKG93bmVyICE9PSBudWxsKSB7XG4g
ICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhvd25l
ci5fd2FybmVkQWJvdXRSZWZzSW5SZW5kZXIsICclcyBpcyBhY2Nlc3NpbmcgZmluZERPTU5vZGUg
aW5zaWRlIGl0cyByZW5kZXIoKS4gJyArICdyZW5kZXIoKSBzaG91bGQgYmUgYSBwdXJlIGZ1bmN0
aW9uIG9mIHByb3BzIGFuZCBzdGF0ZS4gSXQgc2hvdWxkICcgKyAnbmV2ZXIgYWNjZXNzIHNvbWV0
aGluZyB0aGF0IHJlcXVpcmVzIHN0YWxlIGRhdGEgZnJvbSB0aGUgcHJldmlvdXMgJyArICdyZW5k
ZXIsIHN1Y2ggYXMgcmVmcy4gTW92ZSB0aGlzIGxvZ2ljIHRvIGNvbXBvbmVudERpZE1vdW50IGFu
ZCAnICsgJ2NvbXBvbmVudERpZFVwZGF0ZSBpbnN0ZWFkLicsIG93bmVyLmdldE5hbWUoKSB8fCAn
QSBjb21wb25lbnQnKSA6IHZvaWQgMDtcbiAgICAgIG93bmVyLl93YXJuZWRBYm91dFJlZnNJblJl
bmRlciA9IHRydWU7XG4gICAgfVxuICB9XG4gIGlmIChjb21wb25lbnRPckVsZW1lbnQgPT0gbnVs
bCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGlmIChjb21wb25lbnRPckVsZW1lbnQubm9k
ZVR5cGUgPT09IDEpIHtcbiAgICByZXR1cm4gY29tcG9uZW50T3JFbGVtZW50O1xuICB9XG5cbiAg
dmFyIGluc3QgPSBSZWFjdEluc3RhbmNlTWFwLmdldChjb21wb25lbnRPckVsZW1lbnQpO1xuICBp
ZiAoaW5zdCkge1xuICAgIGluc3QgPSBnZXRIb3N0Q29tcG9uZW50RnJvbUNvbXBvc2l0ZShpbnN0
KTtcbiAgICByZXR1cm4gaW5zdCA/IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUlu
c3RhbmNlKGluc3QpIDogbnVsbDtcbiAgfVxuXG4gIGlmICh0eXBlb2YgY29tcG9uZW50T3JFbGVt
ZW50LnJlbmRlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICFmYWxzZSA/IHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdmaW5kRE9NTm9kZSB3
YXMgY2FsbGVkIG9uIGFuIHVubW91bnRlZCBjb21wb25lbnQuJykgOiBfcHJvZEludmFyaWFudCgn
NDQnKSA6IHZvaWQgMDtcbiAgfSBlbHNlIHtcbiAgICAhZmFsc2UgPyBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRWxlbWVudCBhcHBlYXJz
IHRvIGJlIG5laXRoZXIgUmVhY3RDb21wb25lbnQgbm9yIERPTU5vZGUgKGtleXM6ICVzKScsIE9i
amVjdC5rZXlzKGNvbXBvbmVudE9yRWxlbWVudCkpIDogX3Byb2RJbnZhcmlhbnQoJzQ1JywgT2Jq
ZWN0LmtleXMoY29tcG9uZW50T3JFbGVtZW50KSkgOiB2b2lkIDA7XG4gIH1cbn1cblxubW9kdWxl
LmV4cG9ydHMgPSBmaW5kRE9NTm9kZTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQ
QUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL2ZpbmRET01Ob2RlLmpzXG4gKiogbW9k
dWxlIGlkID0gMTc5XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBLZXlFc2NhcGVV
dGlscyA9IHJlcXVpcmUoJy4vS2V5RXNjYXBlVXRpbHMnKTtcbnZhciB0cmF2ZXJzZUFsbENoaWxk
cmVuID0gcmVxdWlyZSgnLi90cmF2ZXJzZUFsbENoaWxkcmVuJyk7XG52YXIgd2FybmluZyA9IHJl
cXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxudmFyIFJlYWN0Q29tcG9uZW50VHJlZUhvb2s7
XG5cbmlmICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy5lbnYgJiYg
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICd0ZXN0Jykge1xuICAvLyBUZW1wb3JhcnkgaGFjay5c
biAgLy8gSW5saW5lIHJlcXVpcmVzIGRvbid0IHdvcmsgd2VsbCB3aXRoIEplc3Q6XG4gIC8vIGh0
dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzI0MFxuICAvLyBSZW1vdmUg
dGhlIGlubGluZSByZXF1aXJlcyB3aGVuIHdlIGRvbid0IG5lZWQgdGhlbSBhbnltb3JlOlxuICAv
LyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC83MTc4XG4gIFJlYWN0Q29t
cG9uZW50VHJlZUhvb2sgPSByZXF1aXJlKCdyZWFjdC9saWIvUmVhY3RDb21wb25lbnRUcmVlSG9v
aycpO1xufVxuXG4vKipcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IHRyYXZlcnNlQ29udGV4dCBDb250
ZXh0IHBhc3NlZCB0aHJvdWdoIHRyYXZlcnNhbC5cbiAqIEBwYXJhbSB7P1JlYWN0Q29tcG9uZW50
fSBjaGlsZCBSZWFjdCBjaGlsZCBjb21wb25lbnQuXG4gKiBAcGFyYW0geyFzdHJpbmd9IG5hbWUg
U3RyaW5nIG5hbWUgb2Yga2V5IHBhdGggdG8gY2hpbGQuXG4gKiBAcGFyYW0ge251bWJlcj19IHNl
bGZEZWJ1Z0lEIE9wdGlvbmFsIGRlYnVnSUQgb2YgdGhlIGN1cnJlbnQgaW50ZXJuYWwgaW5zdGFu
Y2UuXG4gKi9cbmZ1bmN0aW9uIGZsYXR0ZW5TaW5nbGVDaGlsZEludG9Db250ZXh0KHRyYXZlcnNl
Q29udGV4dCwgY2hpbGQsIG5hbWUsIHNlbGZEZWJ1Z0lEKSB7XG4gIC8vIFdlIGZvdW5kIGEgY29t
cG9uZW50IGluc3RhbmNlLlxuICBpZiAodHJhdmVyc2VDb250ZXh0ICYmIHR5cGVvZiB0cmF2ZXJz
ZUNvbnRleHQgPT09ICdvYmplY3QnKSB7XG4gICAgdmFyIHJlc3VsdCA9IHRyYXZlcnNlQ29udGV4
dDtcbiAgICB2YXIga2V5VW5pcXVlID0gcmVzdWx0W25hbWVdID09PSB1bmRlZmluZWQ7XG4gICAg
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmICgh
UmVhY3RDb21wb25lbnRUcmVlSG9vaykge1xuICAgICAgICBSZWFjdENvbXBvbmVudFRyZWVIb29r
ID0gcmVxdWlyZSgncmVhY3QvbGliL1JlYWN0Q29tcG9uZW50VHJlZUhvb2snKTtcbiAgICAgIH1c
biAgICAgIGlmICgha2V5VW5pcXVlKSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnZmxhdHRlbkNoaWxkcmVuKC4uLik6IEVu
Y291bnRlcmVkIHR3byBjaGlsZHJlbiB3aXRoIHRoZSBzYW1lIGtleSwgJyArICdgJXNgLiBDaGls
ZCBrZXlzIG11c3QgYmUgdW5pcXVlOyB3aGVuIHR3byBjaGlsZHJlbiBzaGFyZSBhIGtleSwgb25s
eSAnICsgJ3RoZSBmaXJzdCBjaGlsZCB3aWxsIGJlIHVzZWQuJXMnLCBLZXlFc2NhcGVVdGlscy51
bmVzY2FwZShuYW1lKSwgUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRTdGFja0FkZGVuZHVtQnlJ
RChzZWxmRGVidWdJRCkpIDogdm9pZCAwO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoa2V5VW5p
cXVlICYmIGNoaWxkICE9IG51bGwpIHtcbiAgICAgIHJlc3VsdFtuYW1lXSA9IGNoaWxkO1xuICAg
IH1cbiAgfVxufVxuXG4vKipcbiAqIEZsYXR0ZW5zIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxs
eSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVuYC4gQW55IG51bGxcbiAqIGNoaWxkcmVuIHdp
bGwgbm90IGJlIGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgb2JqZWN0LlxuICogQHJldHVybiB7
IW9iamVjdH0gZmxhdHRlbmVkIGNoaWxkcmVuIGtleWVkIGJ5IG5hbWUuXG4gKi9cbmZ1bmN0aW9u
IGZsYXR0ZW5DaGlsZHJlbihjaGlsZHJlbiwgc2VsZkRlYnVnSUQpIHtcbiAgaWYgKGNoaWxkcmVu
ID09IG51bGwpIHtcbiAgICByZXR1cm4gY2hpbGRyZW47XG4gIH1cbiAgdmFyIHJlc3VsdCA9IHt9
O1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAg
dHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgZnVuY3Rpb24gKHRyYXZlcnNlQ29udGV4dCwg
Y2hpbGQsIG5hbWUpIHtcbiAgICAgIHJldHVybiBmbGF0dGVuU2luZ2xlQ2hpbGRJbnRvQ29udGV4
dCh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkLCBuYW1lLCBzZWxmRGVidWdJRCk7XG4gICAgfSwgcmVz
dWx0KTtcbiAgfSBlbHNlIHtcbiAgICB0cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBmbGF0
dGVuU2luZ2xlQ2hpbGRJbnRvQ29udGV4dCwgcmVzdWx0KTtcbiAgfVxuICByZXR1cm4gcmVzdWx0
O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZsYXR0ZW5DaGlsZHJlbjtcblxuXG4vKioqKioqKioq
KioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL2ZsYXR0
ZW5DaGlsZHJlbi5qc1xuICoqIG1vZHVsZSBpZCA9IDE4MFxuICoqIG1vZHVsZSBjaHVua3MgPSAw
XG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0Jztc
blxudmFyIGdldEV2ZW50Q2hhckNvZGUgPSByZXF1aXJlKCcuL2dldEV2ZW50Q2hhckNvZGUnKTtc
blxuLyoqXG4gKiBOb3JtYWxpemF0aW9uIG9mIGRlcHJlY2F0ZWQgSFRNTDUgYGtleWAgdmFsdWVz
XG4gKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQ
SS9LZXlib2FyZEV2ZW50I0tleV9uYW1lc1xuICovXG52YXIgbm9ybWFsaXplS2V5ID0ge1xuICBF
c2M6ICdFc2NhcGUnLFxuICBTcGFjZWJhcjogJyAnLFxuICBMZWZ0OiAnQXJyb3dMZWZ0JyxcbiAg
VXA6ICdBcnJvd1VwJyxcbiAgUmlnaHQ6ICdBcnJvd1JpZ2h0JyxcbiAgRG93bjogJ0Fycm93RG93
bicsXG4gIERlbDogJ0RlbGV0ZScsXG4gIFdpbjogJ09TJyxcbiAgTWVudTogJ0NvbnRleHRNZW51
JyxcbiAgQXBwczogJ0NvbnRleHRNZW51JyxcbiAgU2Nyb2xsOiAnU2Nyb2xsTG9jaycsXG4gIE1v
elByaW50YWJsZUtleTogJ1VuaWRlbnRpZmllZCdcbn07XG5cbi8qKlxuICogVHJhbnNsYXRpb24g
ZnJvbSBsZWdhY3kgYGtleUNvZGVgIHRvIEhUTUw1IGBrZXlgXG4gKiBPbmx5IHNwZWNpYWwga2V5
cyBzdXBwb3J0ZWQsIGFsbCBvdGhlcnMgZGVwZW5kIG9uIGtleWJvYXJkIGxheW91dCBvciBicm93
c2VyXG4gKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2Vi
L0FQSS9LZXlib2FyZEV2ZW50I0tleV9uYW1lc1xuICovXG52YXIgdHJhbnNsYXRlVG9LZXkgPSB7
XG4gIDg6ICdCYWNrc3BhY2UnLFxuICA5OiAnVGFiJyxcbiAgMTI6ICdDbGVhcicsXG4gIDEzOiAn
RW50ZXInLFxuICAxNjogJ1NoaWZ0JyxcbiAgMTc6ICdDb250cm9sJyxcbiAgMTg6ICdBbHQnLFxu
ICAxOTogJ1BhdXNlJyxcbiAgMjA6ICdDYXBzTG9jaycsXG4gIDI3OiAnRXNjYXBlJyxcbiAgMzI6
ICcgJyxcbiAgMzM6ICdQYWdlVXAnLFxuICAzNDogJ1BhZ2VEb3duJyxcbiAgMzU6ICdFbmQnLFxu
ICAzNjogJ0hvbWUnLFxuICAzNzogJ0Fycm93TGVmdCcsXG4gIDM4OiAnQXJyb3dVcCcsXG4gIDM5
OiAnQXJyb3dSaWdodCcsXG4gIDQwOiAnQXJyb3dEb3duJyxcbiAgNDU6ICdJbnNlcnQnLFxuICA0
NjogJ0RlbGV0ZScsXG4gIDExMjogJ0YxJyxcbiAgMTEzOiAnRjInLFxuICAxMTQ6ICdGMycsXG4g
IDExNTogJ0Y0JyxcbiAgMTE2OiAnRjUnLFxuICAxMTc6ICdGNicsXG4gIDExODogJ0Y3JyxcbiAg
MTE5OiAnRjgnLFxuICAxMjA6ICdGOScsXG4gIDEyMTogJ0YxMCcsXG4gIDEyMjogJ0YxMScsXG4g
IDEyMzogJ0YxMicsXG4gIDE0NDogJ051bUxvY2snLFxuICAxNDU6ICdTY3JvbGxMb2NrJyxcbiAg
MjI0OiAnTWV0YSdcbn07XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5h
dGl2ZSBicm93c2VyIGV2ZW50LlxuICogQHJldHVybiB7c3RyaW5nfSBOb3JtYWxpemVkIGBrZXlg
IHByb3BlcnR5LlxuICovXG5mdW5jdGlvbiBnZXRFdmVudEtleShuYXRpdmVFdmVudCkge1xuICBp
ZiAobmF0aXZlRXZlbnQua2V5KSB7XG4gICAgLy8gTm9ybWFsaXplIGluY29uc2lzdGVudCB2YWx1
ZXMgcmVwb3J0ZWQgYnkgYnJvd3NlcnMgZHVlIHRvXG4gICAgLy8gaW1wbGVtZW50YXRpb25zIG9m
IGEgd29ya2luZyBkcmFmdCBzcGVjaWZpY2F0aW9uLlxuXG4gICAgLy8gRmlyZUZveCBpbXBsZW1l
bnRzIGBrZXlgIGJ1dCByZXR1cm5zIGBNb3pQcmludGFibGVLZXlgIGZvciBhbGxcbiAgICAvLyBw
cmludGFibGUgY2hhcmFjdGVycyAobm9ybWFsaXplZCB0byBgVW5pZGVudGlmaWVkYCksIGlnbm9y
ZSBpdC5cbiAgICB2YXIga2V5ID0gbm9ybWFsaXplS2V5W25hdGl2ZUV2ZW50LmtleV0gfHwgbmF0
aXZlRXZlbnQua2V5O1xuICAgIGlmIChrZXkgIT09ICdVbmlkZW50aWZpZWQnKSB7XG4gICAgICBy
ZXR1cm4ga2V5O1xuICAgIH1cbiAgfVxuXG4gIC8vIEJyb3dzZXIgZG9lcyBub3QgaW1wbGVtZW50
IGBrZXlgLCBwb2x5ZmlsbCBhcyBtdWNoIG9mIGl0IGFzIHdlIGNhbi5cbiAgaWYgKG5hdGl2ZUV2
ZW50LnR5cGUgPT09ICdrZXlwcmVzcycpIHtcbiAgICB2YXIgY2hhckNvZGUgPSBnZXRFdmVudENo
YXJDb2RlKG5hdGl2ZUV2ZW50KTtcblxuICAgIC8vIFRoZSBlbnRlci1rZXkgaXMgdGVjaG5pY2Fs
bHkgYm90aCBwcmludGFibGUgYW5kIG5vbi1wcmludGFibGUgYW5kIGNhblxuICAgIC8vIHRodXMg
YmUgY2FwdHVyZWQgYnkgYGtleXByZXNzYCwgbm8gb3RoZXIgbm9uLXByaW50YWJsZSBrZXkgc2hv
dWxkLlxuICAgIHJldHVybiBjaGFyQ29kZSA9PT0gMTMgPyAnRW50ZXInIDogU3RyaW5nLmZyb21D
aGFyQ29kZShjaGFyQ29kZSk7XG4gIH1cbiAgaWYgKG5hdGl2ZUV2ZW50LnR5cGUgPT09ICdrZXlk
b3duJyB8fCBuYXRpdmVFdmVudC50eXBlID09PSAna2V5dXAnKSB7XG4gICAgLy8gV2hpbGUgdXNl
ciBrZXlib2FyZCBsYXlvdXQgZGV0ZXJtaW5lcyB0aGUgYWN0dWFsIG1lYW5pbmcgb2YgZWFjaFxu
ICAgIC8vIGBrZXlDb2RlYCB2YWx1ZSwgYWxtb3N0IGFsbCBmdW5jdGlvbiBrZXlzIGhhdmUgYSB1
bml2ZXJzYWwgdmFsdWUuXG4gICAgcmV0dXJuIHRyYW5zbGF0ZVRvS2V5W25hdGl2ZUV2ZW50Lmtl
eUNvZGVdIHx8ICdVbmlkZW50aWZpZWQnO1xuICB9XG4gIHJldHVybiAnJztcbn1cblxubW9kdWxl
LmV4cG9ydHMgPSBnZXRFdmVudEtleTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQ
QUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL2dldEV2ZW50S2V5LmpzXG4gKiogbW9k
dWxlIGlkID0gMTgxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qIGdsb2JhbCBTeW1i
b2wgKi9cblxudmFyIElURVJBVE9SX1NZTUJPTCA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlv
bicgJiYgU3ltYm9sLml0ZXJhdG9yO1xudmFyIEZBVVhfSVRFUkFUT1JfU1lNQk9MID0gJ0BAaXRl
cmF0b3InOyAvLyBCZWZvcmUgU3ltYm9sIHNwZWMuXG5cbi8qKlxuICogUmV0dXJucyB0aGUgaXRl
cmF0b3IgbWV0aG9kIGZ1bmN0aW9uIGNvbnRhaW5lZCBvbiB0aGUgaXRlcmFibGUgb2JqZWN0Llxu
ICpcbiAqIEJlIHN1cmUgdG8gaW52b2tlIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBpdGVyYWJsZSBh
cyBjb250ZXh0OlxuICpcbiAqICAgICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0ZXJhdG9yRm4obXlJ
dGVyYWJsZSk7XG4gKiAgICAgaWYgKGl0ZXJhdG9yRm4pIHtcbiAqICAgICAgIHZhciBpdGVyYXRv
ciA9IGl0ZXJhdG9yRm4uY2FsbChteUl0ZXJhYmxlKTtcbiAqICAgICAgIC4uLlxuICogICAgIH1c
biAqXG4gKiBAcGFyYW0gez9vYmplY3R9IG1heWJlSXRlcmFibGVcbiAqIEByZXR1cm4gez9mdW5j
dGlvbn1cbiAqL1xuZnVuY3Rpb24gZ2V0SXRlcmF0b3JGbihtYXliZUl0ZXJhYmxlKSB7XG4gIHZh
ciBpdGVyYXRvckZuID0gbWF5YmVJdGVyYWJsZSAmJiAoSVRFUkFUT1JfU1lNQk9MICYmIG1heWJl
SXRlcmFibGVbSVRFUkFUT1JfU1lNQk9MXSB8fCBtYXliZUl0ZXJhYmxlW0ZBVVhfSVRFUkFUT1Jf
U1lNQk9MXSk7XG4gIGlmICh0eXBlb2YgaXRlcmF0b3JGbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAg
IHJldHVybiBpdGVyYXRvckZuO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0SXRlcmF0
b3JGbjtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4v
fi9yZWFjdC1kb20vbGliL2dldEl0ZXJhdG9yRm4uanNcbiAqKiBtb2R1bGUgaWQgPSAxODJcbiAq
KiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAq
L1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogR2l2ZW4gYW55IG5vZGUgcmV0dXJuIHRoZSBm
aXJzdCBsZWFmIG5vZGUgd2l0aG91dCBjaGlsZHJlbi5cbiAqXG4gKiBAcGFyYW0ge0RPTUVsZW1l
bnR8RE9NVGV4dE5vZGV9IG5vZGVcbiAqIEByZXR1cm4ge0RPTUVsZW1lbnR8RE9NVGV4dE5vZGV9
XG4gKi9cblxuZnVuY3Rpb24gZ2V0TGVhZk5vZGUobm9kZSkge1xuICB3aGlsZSAobm9kZSAmJiBu
b2RlLmZpcnN0Q2hpbGQpIHtcbiAgICBub2RlID0gbm9kZS5maXJzdENoaWxkO1xuICB9XG4gIHJl
dHVybiBub2RlO1xufVxuXG4vKipcbiAqIEdldCB0aGUgbmV4dCBzaWJsaW5nIHdpdGhpbiBhIGNv
bnRhaW5lci4gVGhpcyB3aWxsIHdhbGsgdXAgdGhlXG4gKiBET00gaWYgYSBub2RlJ3Mgc2libGlu
Z3MgaGF2ZSBiZWVuIGV4aGF1c3RlZC5cbiAqXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9NVGV4
dE5vZGV9IG5vZGVcbiAqIEByZXR1cm4gez9ET01FbGVtZW50fERPTVRleHROb2RlfVxuICovXG5m
dW5jdGlvbiBnZXRTaWJsaW5nTm9kZShub2RlKSB7XG4gIHdoaWxlIChub2RlKSB7XG4gICAgaWYg
KG5vZGUubmV4dFNpYmxpbmcpIHtcbiAgICAgIHJldHVybiBub2RlLm5leHRTaWJsaW5nO1xuICAg
IH1cbiAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICB9XG59XG5cbi8qKlxuICogR2V0IG9i
amVjdCBkZXNjcmliaW5nIHRoZSBub2RlcyB3aGljaCBjb250YWluIGNoYXJhY3RlcnMgYXQgb2Zm
c2V0LlxuICpcbiAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gcm9vdFxuICogQHBh
cmFtIHtudW1iZXJ9IG9mZnNldFxuICogQHJldHVybiB7P29iamVjdH1cbiAqL1xuZnVuY3Rpb24g
Z2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldChyb290LCBvZmZzZXQpIHtcbiAgdmFyIG5vZGUgPSBn
ZXRMZWFmTm9kZShyb290KTtcbiAgdmFyIG5vZGVTdGFydCA9IDA7XG4gIHZhciBub2RlRW5kID0g
MDtcblxuICB3aGlsZSAobm9kZSkge1xuICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAzKSB7XG4g
ICAgICBub2RlRW5kID0gbm9kZVN0YXJ0ICsgbm9kZS50ZXh0Q29udGVudC5sZW5ndGg7XG5cbiAg
ICAgIGlmIChub2RlU3RhcnQgPD0gb2Zmc2V0ICYmIG5vZGVFbmQgPj0gb2Zmc2V0KSB7XG4gICAg
ICAgIHJldHVybiB7XG4gICAgICAgICAgbm9kZTogbm9kZSxcbiAgICAgICAgICBvZmZzZXQ6IG9m
ZnNldCAtIG5vZGVTdGFydFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICBub2RlU3RhcnQg
PSBub2RlRW5kO1xuICAgIH1cblxuICAgIG5vZGUgPSBnZXRMZWFmTm9kZShnZXRTaWJsaW5nTm9k
ZShub2RlKSk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXROb2RlRm9yQ2hhcmFjdGVy
T2Zmc2V0O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiog
Li9+L3JlYWN0LWRvbS9saWIvZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldC5qc1xuICoqIG1vZHVs
ZSBpZCA9IDE4M1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
biAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIEV4ZWN1dGlvbkVudmlyb25t
ZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcblxuLyoqXG4g
KiBHZW5lcmF0ZSBhIG1hcHBpbmcgb2Ygc3RhbmRhcmQgdmVuZG9yIHByZWZpeGVzIHVzaW5nIHRo
ZSBkZWZpbmVkIHN0eWxlIHByb3BlcnR5IGFuZCBldmVudCBuYW1lLlxuICpcbiAqIEBwYXJhbSB7
c3RyaW5nfSBzdHlsZVByb3BcbiAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWVcbiAqIEByZXR1
cm5zIHtvYmplY3R9XG4gKi9cbmZ1bmN0aW9uIG1ha2VQcmVmaXhNYXAoc3R5bGVQcm9wLCBldmVu
dE5hbWUpIHtcbiAgdmFyIHByZWZpeGVzID0ge307XG5cbiAgcHJlZml4ZXNbc3R5bGVQcm9wLnRv
TG93ZXJDYXNlKCldID0gZXZlbnROYW1lLnRvTG93ZXJDYXNlKCk7XG4gIHByZWZpeGVzWydXZWJr
aXQnICsgc3R5bGVQcm9wXSA9ICd3ZWJraXQnICsgZXZlbnROYW1lO1xuICBwcmVmaXhlc1snTW96
JyArIHN0eWxlUHJvcF0gPSAnbW96JyArIGV2ZW50TmFtZTtcbiAgcHJlZml4ZXNbJ21zJyArIHN0
eWxlUHJvcF0gPSAnTVMnICsgZXZlbnROYW1lO1xuICBwcmVmaXhlc1snTycgKyBzdHlsZVByb3Bd
ID0gJ28nICsgZXZlbnROYW1lLnRvTG93ZXJDYXNlKCk7XG5cbiAgcmV0dXJuIHByZWZpeGVzO1xu
fVxuXG4vKipcbiAqIEEgbGlzdCBvZiBldmVudCBuYW1lcyB0byBhIGNvbmZpZ3VyYWJsZSBsaXN0
IG9mIHZlbmRvciBwcmVmaXhlcy5cbiAqL1xudmFyIHZlbmRvclByZWZpeGVzID0ge1xuICBhbmlt
YXRpb25lbmQ6IG1ha2VQcmVmaXhNYXAoJ0FuaW1hdGlvbicsICdBbmltYXRpb25FbmQnKSxcbiAg
YW5pbWF0aW9uaXRlcmF0aW9uOiBtYWtlUHJlZml4TWFwKCdBbmltYXRpb24nLCAnQW5pbWF0aW9u
SXRlcmF0aW9uJyksXG4gIGFuaW1hdGlvbnN0YXJ0OiBtYWtlUHJlZml4TWFwKCdBbmltYXRpb24n
LCAnQW5pbWF0aW9uU3RhcnQnKSxcbiAgdHJhbnNpdGlvbmVuZDogbWFrZVByZWZpeE1hcCgnVHJh
bnNpdGlvbicsICdUcmFuc2l0aW9uRW5kJylcbn07XG5cbi8qKlxuICogRXZlbnQgbmFtZXMgdGhh
dCBoYXZlIGFscmVhZHkgYmVlbiBkZXRlY3RlZCBhbmQgcHJlZml4ZWQgKGlmIGFwcGxpY2FibGUp
LlxuICovXG52YXIgcHJlZml4ZWRFdmVudE5hbWVzID0ge307XG5cbi8qKlxuICogRWxlbWVudCB0
byBjaGVjayBmb3IgcHJlZml4ZXMgb24uXG4gKi9cbnZhciBzdHlsZSA9IHt9O1xuXG4vKipcbiAq
IEJvb3RzdHJhcCBpZiBhIERPTSBleGlzdHMuXG4gKi9cbmlmIChFeGVjdXRpb25FbnZpcm9ubWVu
dC5jYW5Vc2VET00pIHtcbiAgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKS5z
dHlsZTtcblxuICAvLyBPbiBzb21lIHBsYXRmb3JtcywgaW4gcGFydGljdWxhciBzb21lIHJlbGVh
c2VzIG9mIEFuZHJvaWQgNC54LFxuICAvLyB0aGUgdW4tcHJlZml4ZWQgXCJhbmltYXRpb25cIiBh
bmQgXCJ0cmFuc2l0aW9uXCIgcHJvcGVydGllcyBhcmUgZGVmaW5lZCBvbiB0aGVcbiAgLy8gc3R5
bGUgb2JqZWN0IGJ1dCB0aGUgZXZlbnRzIHRoYXQgZmlyZSB3aWxsIHN0aWxsIGJlIHByZWZpeGVk
LCBzbyB3ZSBuZWVkXG4gIC8vIHRvIGNoZWNrIGlmIHRoZSB1bi1wcmVmaXhlZCBldmVudHMgYXJl
IHVzYWJsZSwgYW5kIGlmIG5vdCByZW1vdmUgdGhlbSBmcm9tIHRoZSBtYXAuXG4gIGlmICghKCdB
bmltYXRpb25FdmVudCcgaW4gd2luZG93KSkge1xuICAgIGRlbGV0ZSB2ZW5kb3JQcmVmaXhlcy5h
bmltYXRpb25lbmQuYW5pbWF0aW9uO1xuICAgIGRlbGV0ZSB2ZW5kb3JQcmVmaXhlcy5hbmltYXRp
b25pdGVyYXRpb24uYW5pbWF0aW9uO1xuICAgIGRlbGV0ZSB2ZW5kb3JQcmVmaXhlcy5hbmltYXRp
b25zdGFydC5hbmltYXRpb247XG4gIH1cblxuICAvLyBTYW1lIGFzIGFib3ZlXG4gIGlmICghKCdU
cmFuc2l0aW9uRXZlbnQnIGluIHdpbmRvdykpIHtcbiAgICBkZWxldGUgdmVuZG9yUHJlZml4ZXMu
dHJhbnNpdGlvbmVuZC50cmFuc2l0aW9uO1xuICB9XG59XG5cbi8qKlxuICogQXR0ZW1wdHMgdG8g
ZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IHZlbmRvciBwcmVmaXhlZCBldmVudCBuYW1lLlxuICpcbiAq
IEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWVcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1
bmN0aW9uIGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lKGV2ZW50TmFtZSkge1xuICBpZiAocHJl
Zml4ZWRFdmVudE5hbWVzW2V2ZW50TmFtZV0pIHtcbiAgICByZXR1cm4gcHJlZml4ZWRFdmVudE5h
bWVzW2V2ZW50TmFtZV07XG4gIH0gZWxzZSBpZiAoIXZlbmRvclByZWZpeGVzW2V2ZW50TmFtZV0p
IHtcbiAgICByZXR1cm4gZXZlbnROYW1lO1xuICB9XG5cbiAgdmFyIHByZWZpeE1hcCA9IHZlbmRv
clByZWZpeGVzW2V2ZW50TmFtZV07XG5cbiAgZm9yICh2YXIgc3R5bGVQcm9wIGluIHByZWZpeE1h
cCkge1xuICAgIGlmIChwcmVmaXhNYXAuaGFzT3duUHJvcGVydHkoc3R5bGVQcm9wKSAmJiBzdHls
ZVByb3AgaW4gc3R5bGUpIHtcbiAgICAgIHJldHVybiBwcmVmaXhlZEV2ZW50TmFtZXNbZXZlbnRO
YW1lXSA9IHByZWZpeE1hcFtzdHlsZVByb3BdO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAnJztc
bn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZTtcblxuXG4v
KioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20v
bGliL2dldFZlbmRvclByZWZpeGVkRXZlbnROYW1lLmpzXG4gKiogbW9kdWxlIGlkID0gMTg0XG4g
KiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4g
Ki9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyID0g
cmVxdWlyZSgnLi9lc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXInKTtcblxuLyoqXG4gKiBFc2Nh
cGVzIGF0dHJpYnV0ZSB2YWx1ZSB0byBwcmV2ZW50IHNjcmlwdGluZyBhdHRhY2tzLlxuICpcbiAq
IEBwYXJhbSB7Kn0gdmFsdWUgVmFsdWUgdG8gZXNjYXBlLlxuICogQHJldHVybiB7c3RyaW5nfSBB
biBlc2NhcGVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJy
b3dzZXIodmFsdWUpIHtcbiAgcmV0dXJuICdcIicgKyBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dz
ZXIodmFsdWUpICsgJ1wiJztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBxdW90ZUF0dHJpYnV0ZVZh
bHVlRm9yQnJvd3NlcjtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RF
UlxuICoqIC4vfi9yZWFjdC1kb20vbGliL3F1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyLmpz
XG4gKiogbW9kdWxlIGlkID0gMTg1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipc
biAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4g
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RN
b3VudCA9IHJlcXVpcmUoJy4vUmVhY3RNb3VudCcpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0
TW91bnQucmVuZGVyU3VidHJlZUludG9Db250YWluZXI7XG5cblxuLyoqKioqKioqKioqKioqKioq
XG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9yZW5kZXJTdWJ0cmVl
SW50b0NvbnRhaW5lci5qc1xuICoqIG1vZHVsZSBpZCA9IDE4NlxuICoqIG1vZHVsZSBjaHVua3Mg
PSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xu
ZXhwb3J0cy5jcmVhdGVQcm92aWRlciA9IGNyZWF0ZVByb3ZpZGVyO1xuXG52YXIgX3JlYWN0ID0g
cmVxdWlyZSgncmVhY3QnKTtcblxudmFyIF9wcm9wVHlwZXMgPSByZXF1aXJlKCdwcm9wLXR5cGVz
Jyk7XG5cbnZhciBfcHJvcFR5cGVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Byb3BUeXBl
cyk7XG5cbnZhciBfUHJvcFR5cGVzID0gcmVxdWlyZSgnLi4vdXRpbHMvUHJvcFR5cGVzJyk7XG5c
bnZhciBfd2FybmluZyA9IHJlcXVpcmUoJy4uL3V0aWxzL3dhcm5pbmcnKTtcblxudmFyIF93YXJu
aW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3dhcm5pbmcpO1xuXG5mdW5jdGlvbiBfaW50
ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8g
b2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5z
dGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0
b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVu
Y3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxm
LCBjYWxsKSB7IGlmICghc2VsZikgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhh
c24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0g
cmV0dXJuIGNhbGwgJiYgKHR5cGVvZiBjYWxsID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxs
ID09PSBcImZ1bmN0aW9uXCIpID8gY2FsbCA6IHNlbGY7IH1cblxuZnVuY3Rpb24gX2luaGVyaXRz
KHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5j
dGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1
cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIg
KyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0
ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZh
bHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1
cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/
IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5f
X3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbnZhciBkaWRXYXJuQWJvdXRSZWNlaXZpbmdTdG9y
ZSA9IGZhbHNlO1xuZnVuY3Rpb24gd2FybkFib3V0UmVjZWl2aW5nU3RvcmUoKSB7XG4gIGlmIChk
aWRXYXJuQWJvdXRSZWNlaXZpbmdTdG9yZSkge1xuICAgIHJldHVybjtcbiAgfVxuICBkaWRXYXJu
QWJvdXRSZWNlaXZpbmdTdG9yZSA9IHRydWU7XG5cbiAgKDAsIF93YXJuaW5nMi5kZWZhdWx0KSgn
PFByb3ZpZGVyPiBkb2VzIG5vdCBzdXBwb3J0IGNoYW5naW5nIGBzdG9yZWAgb24gdGhlIGZseS4g
JyArICdJdCBpcyBtb3N0IGxpa2VseSB0aGF0IHlvdSBzZWUgdGhpcyBlcnJvciBiZWNhdXNlIHlv
dSB1cGRhdGVkIHRvICcgKyAnUmVkdXggMi54IGFuZCBSZWFjdCBSZWR1eCAyLnggd2hpY2ggbm8g
bG9uZ2VyIGhvdCByZWxvYWQgcmVkdWNlcnMgJyArICdhdXRvbWF0aWNhbGx5LiBTZWUgaHR0cHM6
Ly9naXRodWIuY29tL3JlYWN0anMvcmVhY3QtcmVkdXgvcmVsZWFzZXMvJyArICd0YWcvdjIuMC4w
IGZvciB0aGUgbWlncmF0aW9uIGluc3RydWN0aW9ucy4nKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRl
UHJvdmlkZXIoKSB7XG4gIHZhciBfUHJvdmlkZXIkY2hpbGRDb250ZXg7XG5cbiAgdmFyIHN0b3Jl
S2V5ID0gYXJndW1lbnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQg
PyBhcmd1bWVudHNbMF0gOiAnc3RvcmUnO1xuICB2YXIgc3ViS2V5ID0gYXJndW1lbnRzWzFdO1xu
XG4gIHZhciBzdWJzY3JpcHRpb25LZXkgPSBzdWJLZXkgfHwgc3RvcmVLZXkgKyAnU3Vic2NyaXB0
aW9uJztcblxuICB2YXIgUHJvdmlkZXIgPSBmdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICAgIF9p
bmhlcml0cyhQcm92aWRlciwgX0NvbXBvbmVudCk7XG5cbiAgICBQcm92aWRlci5wcm90b3R5cGUu
Z2V0Q2hpbGRDb250ZXh0ID0gZnVuY3Rpb24gZ2V0Q2hpbGRDb250ZXh0KCkge1xuICAgICAgdmFy
IF9yZWY7XG5cbiAgICAgIHJldHVybiBfcmVmID0ge30sIF9yZWZbc3RvcmVLZXldID0gdGhpc1tz
dG9yZUtleV0sIF9yZWZbc3Vic2NyaXB0aW9uS2V5XSA9IG51bGwsIF9yZWY7XG4gICAgfTtcblxu
ICAgIGZ1bmN0aW9uIFByb3ZpZGVyKHByb3BzLCBjb250ZXh0KSB7XG4gICAgICBfY2xhc3NDYWxs
Q2hlY2sodGhpcywgUHJvdmlkZXIpO1xuXG4gICAgICB2YXIgX3RoaXMgPSBfcG9zc2libGVDb25z
dHJ1Y3RvclJldHVybih0aGlzLCBfQ29tcG9uZW50LmNhbGwodGhpcywgcHJvcHMsIGNvbnRleHQp
KTtcblxuICAgICAgX3RoaXNbc3RvcmVLZXldID0gcHJvcHMuc3RvcmU7XG4gICAgICByZXR1cm4g
X3RoaXM7XG4gICAgfVxuXG4gICAgUHJvdmlkZXIucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9u
IHJlbmRlcigpIHtcbiAgICAgIHJldHVybiBfcmVhY3QuQ2hpbGRyZW4ub25seSh0aGlzLnByb3Bz
LmNoaWxkcmVuKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIFByb3ZpZGVyO1xuICB9KF9yZWFjdC5D
b21wb25lbnQpO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
KSB7XG4gICAgUHJvdmlkZXIucHJvdG90eXBlLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgPSBm
dW5jdGlvbiAobmV4dFByb3BzKSB7XG4gICAgICBpZiAodGhpc1tzdG9yZUtleV0gIT09IG5leHRQ
cm9wcy5zdG9yZSkge1xuICAgICAgICB3YXJuQWJvdXRSZWNlaXZpbmdTdG9yZSgpO1xuICAgICAg
fVxuICAgIH07XG4gIH1cblxuICBQcm92aWRlci5wcm9wVHlwZXMgPSB7XG4gICAgc3RvcmU6IF9Q
cm9wVHlwZXMuc3RvcmVTaGFwZS5pc1JlcXVpcmVkLFxuICAgIGNoaWxkcmVuOiBfcHJvcFR5cGVz
Mi5kZWZhdWx0LmVsZW1lbnQuaXNSZXF1aXJlZFxuICB9O1xuICBQcm92aWRlci5jaGlsZENvbnRl
eHRUeXBlcyA9IChfUHJvdmlkZXIkY2hpbGRDb250ZXggPSB7fSwgX1Byb3ZpZGVyJGNoaWxkQ29u
dGV4W3N0b3JlS2V5XSA9IF9Qcm9wVHlwZXMuc3RvcmVTaGFwZS5pc1JlcXVpcmVkLCBfUHJvdmlk
ZXIkY2hpbGRDb250ZXhbc3Vic2NyaXB0aW9uS2V5XSA9IF9Qcm9wVHlwZXMuc3Vic2NyaXB0aW9u
U2hhcGUsIF9Qcm92aWRlciRjaGlsZENvbnRleCk7XG5cbiAgcmV0dXJuIFByb3ZpZGVyO1xufVxu
XG5leHBvcnRzLmRlZmF1bHQgPSBjcmVhdGVQcm92aWRlcigpO1xuXG5cbi8qKioqKioqKioqKioq
KioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LXJlZHV4L2xpYi9jb21wb25l
bnRzL1Byb3ZpZGVyLmpzXG4gKiogbW9kdWxlIGlkID0gMTg3XG4gKiogbW9kdWxlIGNodW5rcyA9
IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5c
bnZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3Ig
KHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJn
dW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBl
Lmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNl
W2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cbmV4cG9ydHMuY3JlYXRlQ29ubmVjdCA9
IGNyZWF0ZUNvbm5lY3Q7XG5cbnZhciBfY29ubmVjdEFkdmFuY2VkID0gcmVxdWlyZSgnLi4vY29t
cG9uZW50cy9jb25uZWN0QWR2YW5jZWQnKTtcblxudmFyIF9jb25uZWN0QWR2YW5jZWQyID0gX2lu
dGVyb3BSZXF1aXJlRGVmYXVsdChfY29ubmVjdEFkdmFuY2VkKTtcblxudmFyIF9zaGFsbG93RXF1
YWwgPSByZXF1aXJlKCcuLi91dGlscy9zaGFsbG93RXF1YWwnKTtcblxudmFyIF9zaGFsbG93RXF1
YWwyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfc2hhbGxvd0VxdWFsKTtcblxudmFyIF9tYXBE
aXNwYXRjaFRvUHJvcHMgPSByZXF1aXJlKCcuL21hcERpc3BhdGNoVG9Qcm9wcycpO1xuXG52YXIg
X21hcERpc3BhdGNoVG9Qcm9wczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9tYXBEaXNwYXRj
aFRvUHJvcHMpO1xuXG52YXIgX21hcFN0YXRlVG9Qcm9wcyA9IHJlcXVpcmUoJy4vbWFwU3RhdGVU
b1Byb3BzJyk7XG5cbnZhciBfbWFwU3RhdGVUb1Byb3BzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1
bHQoX21hcFN0YXRlVG9Qcm9wcyk7XG5cbnZhciBfbWVyZ2VQcm9wcyA9IHJlcXVpcmUoJy4vbWVy
Z2VQcm9wcycpO1xuXG52YXIgX21lcmdlUHJvcHMyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChf
bWVyZ2VQcm9wcyk7XG5cbnZhciBfc2VsZWN0b3JGYWN0b3J5ID0gcmVxdWlyZSgnLi9zZWxlY3Rv
ckZhY3RvcnknKTtcblxudmFyIF9zZWxlY3RvckZhY3RvcnkyID0gX2ludGVyb3BSZXF1aXJlRGVm
YXVsdChfc2VsZWN0b3JGYWN0b3J5KTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVs
dChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDog
b2JqIH07IH1cblxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKG9iaiwga2V5cykg
eyB2YXIgdGFyZ2V0ID0ge307IGZvciAodmFyIGkgaW4gb2JqKSB7IGlmIChrZXlzLmluZGV4T2Yo
aSkgPj0gMCkgY29udGludWU7IGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5j
YWxsKG9iaiwgaSkpIGNvbnRpbnVlOyB0YXJnZXRbaV0gPSBvYmpbaV07IH0gcmV0dXJuIHRhcmdl
dDsgfVxuXG4vKlxuICBjb25uZWN0IGlzIGEgZmFjYWRlIG92ZXIgY29ubmVjdEFkdmFuY2VkLiBJ
dCB0dXJucyBpdHMgYXJncyBpbnRvIGEgY29tcGF0aWJsZVxuICBzZWxlY3RvckZhY3RvcnksIHdo
aWNoIGhhcyB0aGUgc2lnbmF0dXJlOlxuXG4gICAgKGRpc3BhdGNoLCBvcHRpb25zKSA9PiAobmV4
dFN0YXRlLCBuZXh0T3duUHJvcHMpID0+IG5leHRGaW5hbFByb3BzXG4gIFxuICBjb25uZWN0IHBh
c3NlcyBpdHMgYXJncyB0byBjb25uZWN0QWR2YW5jZWQgYXMgb3B0aW9ucywgd2hpY2ggd2lsbCBp
biB0dXJuIHBhc3MgdGhlbSB0b1xuICBzZWxlY3RvckZhY3RvcnkgZWFjaCB0aW1lIGEgQ29ubmVj
dCBjb21wb25lbnQgaW5zdGFuY2UgaXMgaW5zdGFudGlhdGVkIG9yIGhvdCByZWxvYWRlZC5cblxu
ICBzZWxlY3RvckZhY3RvcnkgcmV0dXJucyBhIGZpbmFsIHByb3BzIHNlbGVjdG9yIGZyb20gaXRz
IG1hcFN0YXRlVG9Qcm9wcyxcbiAgbWFwU3RhdGVUb1Byb3BzRmFjdG9yaWVzLCBtYXBEaXNwYXRj
aFRvUHJvcHMsIG1hcERpc3BhdGNoVG9Qcm9wc0ZhY3RvcmllcywgbWVyZ2VQcm9wcyxcbiAgbWVy
Z2VQcm9wc0ZhY3RvcmllcywgYW5kIHB1cmUgYXJncy5cblxuICBUaGUgcmVzdWx0aW5nIGZpbmFs
IHByb3BzIHNlbGVjdG9yIGlzIGNhbGxlZCBieSB0aGUgQ29ubmVjdCBjb21wb25lbnQgaW5zdGFu
Y2Ugd2hlbmV2ZXJcbiAgaXQgcmVjZWl2ZXMgbmV3IHByb3BzIG9yIHN0b3JlIHN0YXRlLlxuICov
XG5cbmZ1bmN0aW9uIG1hdGNoKGFyZywgZmFjdG9yaWVzLCBuYW1lKSB7XG4gIGZvciAodmFyIGkg
PSBmYWN0b3JpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgcmVzdWx0ID0g
ZmFjdG9yaWVzW2ldKGFyZyk7XG4gICAgaWYgKHJlc3VsdCkgcmV0dXJuIHJlc3VsdDtcbiAgfVxu
XG4gIHJldHVybiBmdW5jdGlvbiAoZGlzcGF0Y2gsIG9wdGlvbnMpIHtcbiAgICB0aHJvdyBuZXcg
RXJyb3IoJ0ludmFsaWQgdmFsdWUgb2YgdHlwZSAnICsgdHlwZW9mIGFyZyArICcgZm9yICcgKyBu
YW1lICsgJyBhcmd1bWVudCB3aGVuIGNvbm5lY3RpbmcgY29tcG9uZW50ICcgKyBvcHRpb25zLndy
YXBwZWRDb21wb25lbnROYW1lICsgJy4nKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gc3RyaWN0RXF1
YWwoYSwgYikge1xuICByZXR1cm4gYSA9PT0gYjtcbn1cblxuLy8gY3JlYXRlQ29ubmVjdCB3aXRo
IGRlZmF1bHQgYXJncyBidWlsZHMgdGhlICdvZmZpY2lhbCcgY29ubmVjdCBiZWhhdmlvci4gQ2Fs
bGluZyBpdCB3aXRoXG4vLyBkaWZmZXJlbnQgb3B0aW9ucyBvcGVucyB1cCBzb21lIHRlc3Rpbmcg
YW5kIGV4dGVuc2liaWxpdHkgc2NlbmFyaW9zXG5mdW5jdGlvbiBjcmVhdGVDb25uZWN0KCkge1xu
ICB2YXIgX3JlZiA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5k
ZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge30sXG4gICAgICBfcmVmJGNvbm5lY3RIT0MgPSBfcmVm
LmNvbm5lY3RIT0MsXG4gICAgICBjb25uZWN0SE9DID0gX3JlZiRjb25uZWN0SE9DID09PSB1bmRl
ZmluZWQgPyBfY29ubmVjdEFkdmFuY2VkMi5kZWZhdWx0IDogX3JlZiRjb25uZWN0SE9DLFxuICAg
ICAgX3JlZiRtYXBTdGF0ZVRvUHJvcHNGID0gX3JlZi5tYXBTdGF0ZVRvUHJvcHNGYWN0b3JpZXMs
XG4gICAgICBtYXBTdGF0ZVRvUHJvcHNGYWN0b3JpZXMgPSBfcmVmJG1hcFN0YXRlVG9Qcm9wc0Yg
PT09IHVuZGVmaW5lZCA/IF9tYXBTdGF0ZVRvUHJvcHMyLmRlZmF1bHQgOiBfcmVmJG1hcFN0YXRl
VG9Qcm9wc0YsXG4gICAgICBfcmVmJG1hcERpc3BhdGNoVG9Qcm8gPSBfcmVmLm1hcERpc3BhdGNo
VG9Qcm9wc0ZhY3RvcmllcyxcbiAgICAgIG1hcERpc3BhdGNoVG9Qcm9wc0ZhY3RvcmllcyA9IF9y
ZWYkbWFwRGlzcGF0Y2hUb1BybyA9PT0gdW5kZWZpbmVkID8gX21hcERpc3BhdGNoVG9Qcm9wczIu
ZGVmYXVsdCA6IF9yZWYkbWFwRGlzcGF0Y2hUb1BybyxcbiAgICAgIF9yZWYkbWVyZ2VQcm9wc0Zh
Y3RvciA9IF9yZWYubWVyZ2VQcm9wc0ZhY3RvcmllcyxcbiAgICAgIG1lcmdlUHJvcHNGYWN0b3Jp
ZXMgPSBfcmVmJG1lcmdlUHJvcHNGYWN0b3IgPT09IHVuZGVmaW5lZCA/IF9tZXJnZVByb3BzMi5k
ZWZhdWx0IDogX3JlZiRtZXJnZVByb3BzRmFjdG9yLFxuICAgICAgX3JlZiRzZWxlY3RvckZhY3Rv
cnkgPSBfcmVmLnNlbGVjdG9yRmFjdG9yeSxcbiAgICAgIHNlbGVjdG9yRmFjdG9yeSA9IF9yZWYk
c2VsZWN0b3JGYWN0b3J5ID09PSB1bmRlZmluZWQgPyBfc2VsZWN0b3JGYWN0b3J5Mi5kZWZhdWx0
IDogX3JlZiRzZWxlY3RvckZhY3Rvcnk7XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIGNvbm5lY3QobWFw
U3RhdGVUb1Byb3BzLCBtYXBEaXNwYXRjaFRvUHJvcHMsIG1lcmdlUHJvcHMpIHtcbiAgICB2YXIg
X3JlZjIgPSBhcmd1bWVudHMubGVuZ3RoID4gMyAmJiBhcmd1bWVudHNbM10gIT09IHVuZGVmaW5l
ZCA/IGFyZ3VtZW50c1szXSA6IHt9LFxuICAgICAgICBfcmVmMiRwdXJlID0gX3JlZjIucHVyZSxc
biAgICAgICAgcHVyZSA9IF9yZWYyJHB1cmUgPT09IHVuZGVmaW5lZCA/IHRydWUgOiBfcmVmMiRw
dXJlLFxuICAgICAgICBfcmVmMiRhcmVTdGF0ZXNFcXVhbCA9IF9yZWYyLmFyZVN0YXRlc0VxdWFs
LFxuICAgICAgICBhcmVTdGF0ZXNFcXVhbCA9IF9yZWYyJGFyZVN0YXRlc0VxdWFsID09PSB1bmRl
ZmluZWQgPyBzdHJpY3RFcXVhbCA6IF9yZWYyJGFyZVN0YXRlc0VxdWFsLFxuICAgICAgICBfcmVm
MiRhcmVPd25Qcm9wc0VxdWEgPSBfcmVmMi5hcmVPd25Qcm9wc0VxdWFsLFxuICAgICAgICBhcmVP
d25Qcm9wc0VxdWFsID0gX3JlZjIkYXJlT3duUHJvcHNFcXVhID09PSB1bmRlZmluZWQgPyBfc2hh
bGxvd0VxdWFsMi5kZWZhdWx0IDogX3JlZjIkYXJlT3duUHJvcHNFcXVhLFxuICAgICAgICBfcmVm
MiRhcmVTdGF0ZVByb3BzRXEgPSBfcmVmMi5hcmVTdGF0ZVByb3BzRXF1YWwsXG4gICAgICAgIGFy
ZVN0YXRlUHJvcHNFcXVhbCA9IF9yZWYyJGFyZVN0YXRlUHJvcHNFcSA9PT0gdW5kZWZpbmVkID8g
X3NoYWxsb3dFcXVhbDIuZGVmYXVsdCA6IF9yZWYyJGFyZVN0YXRlUHJvcHNFcSxcbiAgICAgICAg
X3JlZjIkYXJlTWVyZ2VkUHJvcHNFID0gX3JlZjIuYXJlTWVyZ2VkUHJvcHNFcXVhbCxcbiAgICAg
ICAgYXJlTWVyZ2VkUHJvcHNFcXVhbCA9IF9yZWYyJGFyZU1lcmdlZFByb3BzRSA9PT0gdW5kZWZp
bmVkID8gX3NoYWxsb3dFcXVhbDIuZGVmYXVsdCA6IF9yZWYyJGFyZU1lcmdlZFByb3BzRSxcbiAg
ICAgICAgZXh0cmFPcHRpb25zID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYyLCBbJ3B1
cmUnLCAnYXJlU3RhdGVzRXF1YWwnLCAnYXJlT3duUHJvcHNFcXVhbCcsICdhcmVTdGF0ZVByb3Bz
RXF1YWwnLCAnYXJlTWVyZ2VkUHJvcHNFcXVhbCddKTtcblxuICAgIHZhciBpbml0TWFwU3RhdGVU
b1Byb3BzID0gbWF0Y2gobWFwU3RhdGVUb1Byb3BzLCBtYXBTdGF0ZVRvUHJvcHNGYWN0b3JpZXMs
ICdtYXBTdGF0ZVRvUHJvcHMnKTtcbiAgICB2YXIgaW5pdE1hcERpc3BhdGNoVG9Qcm9wcyA9IG1h
dGNoKG1hcERpc3BhdGNoVG9Qcm9wcywgbWFwRGlzcGF0Y2hUb1Byb3BzRmFjdG9yaWVzLCAnbWFw
RGlzcGF0Y2hUb1Byb3BzJyk7XG4gICAgdmFyIGluaXRNZXJnZVByb3BzID0gbWF0Y2gobWVyZ2VQ
cm9wcywgbWVyZ2VQcm9wc0ZhY3RvcmllcywgJ21lcmdlUHJvcHMnKTtcblxuICAgIHJldHVybiBj
b25uZWN0SE9DKHNlbGVjdG9yRmFjdG9yeSwgX2V4dGVuZHMoe1xuICAgICAgLy8gdXNlZCBpbiBl
cnJvciBtZXNzYWdlc1xuICAgICAgbWV0aG9kTmFtZTogJ2Nvbm5lY3QnLFxuXG4gICAgICAvLyB1
c2VkIHRvIGNvbXB1dGUgQ29ubmVjdCdzIGRpc3BsYXlOYW1lIGZyb20gdGhlIHdyYXBwZWQgY29t
cG9uZW50J3MgZGlzcGxheU5hbWUuXG4gICAgICBnZXREaXNwbGF5TmFtZTogZnVuY3Rpb24gZ2V0
RGlzcGxheU5hbWUobmFtZSkge1xuICAgICAgICByZXR1cm4gJ0Nvbm5lY3QoJyArIG5hbWUgKyAn
KSc7XG4gICAgICB9LFxuXG4gICAgICAvLyBpZiBtYXBTdGF0ZVRvUHJvcHMgaXMgZmFsc3ksIHRo
ZSBDb25uZWN0IGNvbXBvbmVudCBkb2Vzbid0IHN1YnNjcmliZSB0byBzdG9yZSBzdGF0ZSBjaGFu
Z2VzXG4gICAgICBzaG91bGRIYW5kbGVTdGF0ZUNoYW5nZXM6IEJvb2xlYW4obWFwU3RhdGVUb1By
b3BzKSxcblxuICAgICAgLy8gcGFzc2VkIHRocm91Z2ggdG8gc2VsZWN0b3JGYWN0b3J5XG4gICAg
ICBpbml0TWFwU3RhdGVUb1Byb3BzOiBpbml0TWFwU3RhdGVUb1Byb3BzLFxuICAgICAgaW5pdE1h
cERpc3BhdGNoVG9Qcm9wczogaW5pdE1hcERpc3BhdGNoVG9Qcm9wcyxcbiAgICAgIGluaXRNZXJn
ZVByb3BzOiBpbml0TWVyZ2VQcm9wcyxcbiAgICAgIHB1cmU6IHB1cmUsXG4gICAgICBhcmVTdGF0
ZXNFcXVhbDogYXJlU3RhdGVzRXF1YWwsXG4gICAgICBhcmVPd25Qcm9wc0VxdWFsOiBhcmVPd25Q
cm9wc0VxdWFsLFxuICAgICAgYXJlU3RhdGVQcm9wc0VxdWFsOiBhcmVTdGF0ZVByb3BzRXF1YWws
XG4gICAgICBhcmVNZXJnZWRQcm9wc0VxdWFsOiBhcmVNZXJnZWRQcm9wc0VxdWFsXG5cbiAgICB9
LCBleHRyYU9wdGlvbnMpKTtcbiAgfTtcbn1cblxuZXhwb3J0cy5kZWZhdWx0ID0gY3JlYXRlQ29u
bmVjdCgpO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiog
Li9+L3JlYWN0LXJlZHV4L2xpYi9jb25uZWN0L2Nvbm5lY3QuanNcbiAqKiBtb2R1bGUgaWQgPSAx
ODhcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0
cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMud2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lzRnVu
Y3Rpb24gPSB3aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNGdW5jdGlvbjtcbmV4cG9ydHMud2hlbk1h
cERpc3BhdGNoVG9Qcm9wc0lzTWlzc2luZyA9IHdoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc01pc3Np
bmc7XG5leHBvcnRzLndoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc09iamVjdCA9IHdoZW5NYXBEaXNw
YXRjaFRvUHJvcHNJc09iamVjdDtcblxudmFyIF9yZWR1eCA9IHJlcXVpcmUoJ3JlZHV4Jyk7XG5c
bnZhciBfd3JhcE1hcFRvUHJvcHMgPSByZXF1aXJlKCcuL3dyYXBNYXBUb1Byb3BzJyk7XG5cbmZ1
bmN0aW9uIHdoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc0Z1bmN0aW9uKG1hcERpc3BhdGNoVG9Qcm9w
cykge1xuICByZXR1cm4gdHlwZW9mIG1hcERpc3BhdGNoVG9Qcm9wcyA9PT0gJ2Z1bmN0aW9uJyA/
ICgwLCBfd3JhcE1hcFRvUHJvcHMud3JhcE1hcFRvUHJvcHNGdW5jKShtYXBEaXNwYXRjaFRvUHJv
cHMsICdtYXBEaXNwYXRjaFRvUHJvcHMnKSA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gd2hl
bk1hcERpc3BhdGNoVG9Qcm9wc0lzTWlzc2luZyhtYXBEaXNwYXRjaFRvUHJvcHMpIHtcbiAgcmV0
dXJuICFtYXBEaXNwYXRjaFRvUHJvcHMgPyAoMCwgX3dyYXBNYXBUb1Byb3BzLndyYXBNYXBUb1By
b3BzQ29uc3RhbnQpKGZ1bmN0aW9uIChkaXNwYXRjaCkge1xuICAgIHJldHVybiB7IGRpc3BhdGNo
OiBkaXNwYXRjaCB9O1xuICB9KSA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gd2hlbk1hcERp
c3BhdGNoVG9Qcm9wc0lzT2JqZWN0KG1hcERpc3BhdGNoVG9Qcm9wcykge1xuICByZXR1cm4gbWFw
RGlzcGF0Y2hUb1Byb3BzICYmIHR5cGVvZiBtYXBEaXNwYXRjaFRvUHJvcHMgPT09ICdvYmplY3Qn
ID8gKDAsIF93cmFwTWFwVG9Qcm9wcy53cmFwTWFwVG9Qcm9wc0NvbnN0YW50KShmdW5jdGlvbiAo
ZGlzcGF0Y2gpIHtcbiAgICByZXR1cm4gKDAsIF9yZWR1eC5iaW5kQWN0aW9uQ3JlYXRvcnMpKG1h
cERpc3BhdGNoVG9Qcm9wcywgZGlzcGF0Y2gpO1xuICB9KSA6IHVuZGVmaW5lZDtcbn1cblxuZXhw
b3J0cy5kZWZhdWx0ID0gW3doZW5NYXBEaXNwYXRjaFRvUHJvcHNJc0Z1bmN0aW9uLCB3aGVuTWFw
RGlzcGF0Y2hUb1Byb3BzSXNNaXNzaW5nLCB3aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNPYmplY3Rd
O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3Jl
YWN0LXJlZHV4L2xpYi9jb25uZWN0L21hcERpc3BhdGNoVG9Qcm9wcy5qc1xuICoqIG1vZHVsZSBp
ZCA9IDE4OVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG5l
eHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy53aGVuTWFwU3RhdGVUb1Byb3BzSXNG
dW5jdGlvbiA9IHdoZW5NYXBTdGF0ZVRvUHJvcHNJc0Z1bmN0aW9uO1xuZXhwb3J0cy53aGVuTWFw
U3RhdGVUb1Byb3BzSXNNaXNzaW5nID0gd2hlbk1hcFN0YXRlVG9Qcm9wc0lzTWlzc2luZztcblxu
dmFyIF93cmFwTWFwVG9Qcm9wcyA9IHJlcXVpcmUoJy4vd3JhcE1hcFRvUHJvcHMnKTtcblxuZnVu
Y3Rpb24gd2hlbk1hcFN0YXRlVG9Qcm9wc0lzRnVuY3Rpb24obWFwU3RhdGVUb1Byb3BzKSB7XG4g
IHJldHVybiB0eXBlb2YgbWFwU3RhdGVUb1Byb3BzID09PSAnZnVuY3Rpb24nID8gKDAsIF93cmFw
TWFwVG9Qcm9wcy53cmFwTWFwVG9Qcm9wc0Z1bmMpKG1hcFN0YXRlVG9Qcm9wcywgJ21hcFN0YXRl
VG9Qcm9wcycpIDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiB3aGVuTWFwU3RhdGVUb1Byb3Bz
SXNNaXNzaW5nKG1hcFN0YXRlVG9Qcm9wcykge1xuICByZXR1cm4gIW1hcFN0YXRlVG9Qcm9wcyA/
ICgwLCBfd3JhcE1hcFRvUHJvcHMud3JhcE1hcFRvUHJvcHNDb25zdGFudCkoZnVuY3Rpb24gKCkg
e1xuICAgIHJldHVybiB7fTtcbiAgfSkgOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydHMuZGVmYXVs
dCA9IFt3aGVuTWFwU3RhdGVUb1Byb3BzSXNGdW5jdGlvbiwgd2hlbk1hcFN0YXRlVG9Qcm9wc0lz
TWlzc2luZ107XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAq
KiAuL34vcmVhY3QtcmVkdXgvbGliL2Nvbm5lY3QvbWFwU3RhdGVUb1Byb3BzLmpzXG4gKiogbW9k
dWxlIGlkID0gMTkwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7
XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfZXh0ZW5kcyA9IE9iamVjdC5h
c3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50
cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkg
aW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291
cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJn
ZXQ7IH07XG5cbmV4cG9ydHMuZGVmYXVsdE1lcmdlUHJvcHMgPSBkZWZhdWx0TWVyZ2VQcm9wcztc
bmV4cG9ydHMud3JhcE1lcmdlUHJvcHNGdW5jID0gd3JhcE1lcmdlUHJvcHNGdW5jO1xuZXhwb3J0
cy53aGVuTWVyZ2VQcm9wc0lzRnVuY3Rpb24gPSB3aGVuTWVyZ2VQcm9wc0lzRnVuY3Rpb247XG5l
eHBvcnRzLndoZW5NZXJnZVByb3BzSXNPbWl0dGVkID0gd2hlbk1lcmdlUHJvcHNJc09taXR0ZWQ7
XG5cbnZhciBfdmVyaWZ5UGxhaW5PYmplY3QgPSByZXF1aXJlKCcuLi91dGlscy92ZXJpZnlQbGFp
bk9iamVjdCcpO1xuXG52YXIgX3ZlcmlmeVBsYWluT2JqZWN0MiA9IF9pbnRlcm9wUmVxdWlyZURl
ZmF1bHQoX3ZlcmlmeVBsYWluT2JqZWN0KTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVm
YXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVs
dDogb2JqIH07IH1cblxuZnVuY3Rpb24gZGVmYXVsdE1lcmdlUHJvcHMoc3RhdGVQcm9wcywgZGlz
cGF0Y2hQcm9wcywgb3duUHJvcHMpIHtcbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBvd25Qcm9wcywg
c3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9wcyk7XG59XG5cbmZ1bmN0aW9uIHdyYXBNZXJnZVByb3Bz
RnVuYyhtZXJnZVByb3BzKSB7XG4gIHJldHVybiBmdW5jdGlvbiBpbml0TWVyZ2VQcm9wc1Byb3h5
KGRpc3BhdGNoLCBfcmVmKSB7XG4gICAgdmFyIGRpc3BsYXlOYW1lID0gX3JlZi5kaXNwbGF5TmFt
ZSxcbiAgICAgICAgcHVyZSA9IF9yZWYucHVyZSxcbiAgICAgICAgYXJlTWVyZ2VkUHJvcHNFcXVh
bCA9IF9yZWYuYXJlTWVyZ2VkUHJvcHNFcXVhbDtcblxuICAgIHZhciBoYXNSdW5PbmNlID0gZmFs
c2U7XG4gICAgdmFyIG1lcmdlZFByb3BzID0gdm9pZCAwO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9u
IG1lcmdlUHJvcHNQcm94eShzdGF0ZVByb3BzLCBkaXNwYXRjaFByb3BzLCBvd25Qcm9wcykge1xu
ICAgICAgdmFyIG5leHRNZXJnZWRQcm9wcyA9IG1lcmdlUHJvcHMoc3RhdGVQcm9wcywgZGlzcGF0
Y2hQcm9wcywgb3duUHJvcHMpO1xuXG4gICAgICBpZiAoaGFzUnVuT25jZSkge1xuICAgICAgICBp
ZiAoIXB1cmUgfHwgIWFyZU1lcmdlZFByb3BzRXF1YWwobmV4dE1lcmdlZFByb3BzLCBtZXJnZWRQ
cm9wcykpIG1lcmdlZFByb3BzID0gbmV4dE1lcmdlZFByb3BzO1xuICAgICAgfSBlbHNlIHtcbiAg
ICAgICAgaGFzUnVuT25jZSA9IHRydWU7XG4gICAgICAgIG1lcmdlZFByb3BzID0gbmV4dE1lcmdl
ZFByb3BzO1xuXG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSAoMCwgX3ZlcmlmeVBsYWluT2JqZWN0Mi5kZWZhdWx0KShtZXJnZWRQcm9wcywgZGlzcGxh
eU5hbWUsICdtZXJnZVByb3BzJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBtZXJnZWRQcm9w
cztcbiAgICB9O1xuICB9O1xufVxuXG5mdW5jdGlvbiB3aGVuTWVyZ2VQcm9wc0lzRnVuY3Rpb24o
bWVyZ2VQcm9wcykge1xuICByZXR1cm4gdHlwZW9mIG1lcmdlUHJvcHMgPT09ICdmdW5jdGlvbicg
PyB3cmFwTWVyZ2VQcm9wc0Z1bmMobWVyZ2VQcm9wcykgOiB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0
aW9uIHdoZW5NZXJnZVByb3BzSXNPbWl0dGVkKG1lcmdlUHJvcHMpIHtcbiAgcmV0dXJuICFtZXJn
ZVByb3BzID8gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBkZWZhdWx0TWVyZ2VQcm9wcztcbiAg
fSA6IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0cy5kZWZhdWx0ID0gW3doZW5NZXJnZVByb3BzSXNG
dW5jdGlvbiwgd2hlbk1lcmdlUHJvcHNJc09taXR0ZWRdO1xuXG5cbi8qKioqKioqKioqKioqKioq
KlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LXJlZHV4L2xpYi9jb25uZWN0L21l
cmdlUHJvcHMuanNcbiAqKiBtb2R1bGUgaWQgPSAxOTFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxu
ICoqLyIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9y
dHMuaW1wdXJlRmluYWxQcm9wc1NlbGVjdG9yRmFjdG9yeSA9IGltcHVyZUZpbmFsUHJvcHNTZWxl
Y3RvckZhY3Rvcnk7XG5leHBvcnRzLnB1cmVGaW5hbFByb3BzU2VsZWN0b3JGYWN0b3J5ID0gcHVy
ZUZpbmFsUHJvcHNTZWxlY3RvckZhY3Rvcnk7XG5leHBvcnRzLmRlZmF1bHQgPSBmaW5hbFByb3Bz
U2VsZWN0b3JGYWN0b3J5O1xuXG52YXIgX3ZlcmlmeVN1YnNlbGVjdG9ycyA9IHJlcXVpcmUoJy4v
dmVyaWZ5U3Vic2VsZWN0b3JzJyk7XG5cbnZhciBfdmVyaWZ5U3Vic2VsZWN0b3JzMiA9IF9pbnRl
cm9wUmVxdWlyZURlZmF1bHQoX3ZlcmlmeVN1YnNlbGVjdG9ycyk7XG5cbmZ1bmN0aW9uIF9pbnRl
cm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBv
YmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVy
dGllcyhvYmosIGtleXMpIHsgdmFyIHRhcmdldCA9IHt9OyBmb3IgKHZhciBpIGluIG9iaikgeyBp
ZiAoa2V5cy5pbmRleE9mKGkpID49IDApIGNvbnRpbnVlOyBpZiAoIU9iamVjdC5wcm90b3R5cGUu
aGFzT3duUHJvcGVydHkuY2FsbChvYmosIGkpKSBjb250aW51ZTsgdGFyZ2V0W2ldID0gb2JqW2ld
OyB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gaW1wdXJlRmluYWxQcm9wc1NlbGVjdG9y
RmFjdG9yeShtYXBTdGF0ZVRvUHJvcHMsIG1hcERpc3BhdGNoVG9Qcm9wcywgbWVyZ2VQcm9wcywg
ZGlzcGF0Y2gpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGltcHVyZUZpbmFsUHJvcHNTZWxlY3Rvcihz
dGF0ZSwgb3duUHJvcHMpIHtcbiAgICByZXR1cm4gbWVyZ2VQcm9wcyhtYXBTdGF0ZVRvUHJvcHMo
c3RhdGUsIG93blByb3BzKSwgbWFwRGlzcGF0Y2hUb1Byb3BzKGRpc3BhdGNoLCBvd25Qcm9wcyks
IG93blByb3BzKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gcHVyZUZpbmFsUHJvcHNTZWxlY3RvckZh
Y3RvcnkobWFwU3RhdGVUb1Byb3BzLCBtYXBEaXNwYXRjaFRvUHJvcHMsIG1lcmdlUHJvcHMsIGRp
c3BhdGNoLCBfcmVmKSB7XG4gIHZhciBhcmVTdGF0ZXNFcXVhbCA9IF9yZWYuYXJlU3RhdGVzRXF1
YWwsXG4gICAgICBhcmVPd25Qcm9wc0VxdWFsID0gX3JlZi5hcmVPd25Qcm9wc0VxdWFsLFxuICAg
ICAgYXJlU3RhdGVQcm9wc0VxdWFsID0gX3JlZi5hcmVTdGF0ZVByb3BzRXF1YWw7XG5cbiAgdmFy
IGhhc1J1bkF0TGVhc3RPbmNlID0gZmFsc2U7XG4gIHZhciBzdGF0ZSA9IHZvaWQgMDtcbiAgdmFy
IG93blByb3BzID0gdm9pZCAwO1xuICB2YXIgc3RhdGVQcm9wcyA9IHZvaWQgMDtcbiAgdmFyIGRp
c3BhdGNoUHJvcHMgPSB2b2lkIDA7XG4gIHZhciBtZXJnZWRQcm9wcyA9IHZvaWQgMDtcblxuICBm
dW5jdGlvbiBoYW5kbGVGaXJzdENhbGwoZmlyc3RTdGF0ZSwgZmlyc3RPd25Qcm9wcykge1xuICAg
IHN0YXRlID0gZmlyc3RTdGF0ZTtcbiAgICBvd25Qcm9wcyA9IGZpcnN0T3duUHJvcHM7XG4gICAg
c3RhdGVQcm9wcyA9IG1hcFN0YXRlVG9Qcm9wcyhzdGF0ZSwgb3duUHJvcHMpO1xuICAgIGRpc3Bh
dGNoUHJvcHMgPSBtYXBEaXNwYXRjaFRvUHJvcHMoZGlzcGF0Y2gsIG93blByb3BzKTtcbiAgICBt
ZXJnZWRQcm9wcyA9IG1lcmdlUHJvcHMoc3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9wcywgb3duUHJv
cHMpO1xuICAgIGhhc1J1bkF0TGVhc3RPbmNlID0gdHJ1ZTtcbiAgICByZXR1cm4gbWVyZ2VkUHJv
cHM7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVOZXdQcm9wc0FuZE5ld1N0YXRlKCkge1xuICAg
IHN0YXRlUHJvcHMgPSBtYXBTdGF0ZVRvUHJvcHMoc3RhdGUsIG93blByb3BzKTtcblxuICAgIGlm
IChtYXBEaXNwYXRjaFRvUHJvcHMuZGVwZW5kc09uT3duUHJvcHMpIGRpc3BhdGNoUHJvcHMgPSBt
YXBEaXNwYXRjaFRvUHJvcHMoZGlzcGF0Y2gsIG93blByb3BzKTtcblxuICAgIG1lcmdlZFByb3Bz
ID0gbWVyZ2VQcm9wcyhzdGF0ZVByb3BzLCBkaXNwYXRjaFByb3BzLCBvd25Qcm9wcyk7XG4gICAg
cmV0dXJuIG1lcmdlZFByb3BzO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlTmV3UHJvcHMoKSB7
XG4gICAgaWYgKG1hcFN0YXRlVG9Qcm9wcy5kZXBlbmRzT25Pd25Qcm9wcykgc3RhdGVQcm9wcyA9
IG1hcFN0YXRlVG9Qcm9wcyhzdGF0ZSwgb3duUHJvcHMpO1xuXG4gICAgaWYgKG1hcERpc3BhdGNo
VG9Qcm9wcy5kZXBlbmRzT25Pd25Qcm9wcykgZGlzcGF0Y2hQcm9wcyA9IG1hcERpc3BhdGNoVG9Q
cm9wcyhkaXNwYXRjaCwgb3duUHJvcHMpO1xuXG4gICAgbWVyZ2VkUHJvcHMgPSBtZXJnZVByb3Bz
KHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJvcHMsIG93blByb3BzKTtcbiAgICByZXR1cm4gbWVyZ2Vk
UHJvcHM7XG4gIH1cblxuICBmdW5jdGlvbiBoYW5kbGVOZXdTdGF0ZSgpIHtcbiAgICB2YXIgbmV4
dFN0YXRlUHJvcHMgPSBtYXBTdGF0ZVRvUHJvcHMoc3RhdGUsIG93blByb3BzKTtcbiAgICB2YXIg
c3RhdGVQcm9wc0NoYW5nZWQgPSAhYXJlU3RhdGVQcm9wc0VxdWFsKG5leHRTdGF0ZVByb3BzLCBz
dGF0ZVByb3BzKTtcbiAgICBzdGF0ZVByb3BzID0gbmV4dFN0YXRlUHJvcHM7XG5cbiAgICBpZiAo
c3RhdGVQcm9wc0NoYW5nZWQpIG1lcmdlZFByb3BzID0gbWVyZ2VQcm9wcyhzdGF0ZVByb3BzLCBk
aXNwYXRjaFByb3BzLCBvd25Qcm9wcyk7XG5cbiAgICByZXR1cm4gbWVyZ2VkUHJvcHM7XG4gIH1c
blxuICBmdW5jdGlvbiBoYW5kbGVTdWJzZXF1ZW50Q2FsbHMobmV4dFN0YXRlLCBuZXh0T3duUHJv
cHMpIHtcbiAgICB2YXIgcHJvcHNDaGFuZ2VkID0gIWFyZU93blByb3BzRXF1YWwobmV4dE93blBy
b3BzLCBvd25Qcm9wcyk7XG4gICAgdmFyIHN0YXRlQ2hhbmdlZCA9ICFhcmVTdGF0ZXNFcXVhbChu
ZXh0U3RhdGUsIHN0YXRlKTtcbiAgICBzdGF0ZSA9IG5leHRTdGF0ZTtcbiAgICBvd25Qcm9wcyA9
IG5leHRPd25Qcm9wcztcblxuICAgIGlmIChwcm9wc0NoYW5nZWQgJiYgc3RhdGVDaGFuZ2VkKSBy
ZXR1cm4gaGFuZGxlTmV3UHJvcHNBbmROZXdTdGF0ZSgpO1xuICAgIGlmIChwcm9wc0NoYW5nZWQp
IHJldHVybiBoYW5kbGVOZXdQcm9wcygpO1xuICAgIGlmIChzdGF0ZUNoYW5nZWQpIHJldHVybiBo
YW5kbGVOZXdTdGF0ZSgpO1xuICAgIHJldHVybiBtZXJnZWRQcm9wcztcbiAgfVxuXG4gIHJldHVy
biBmdW5jdGlvbiBwdXJlRmluYWxQcm9wc1NlbGVjdG9yKG5leHRTdGF0ZSwgbmV4dE93blByb3Bz
KSB7XG4gICAgcmV0dXJuIGhhc1J1bkF0TGVhc3RPbmNlID8gaGFuZGxlU3Vic2VxdWVudENhbGxz
KG5leHRTdGF0ZSwgbmV4dE93blByb3BzKSA6IGhhbmRsZUZpcnN0Q2FsbChuZXh0U3RhdGUsIG5l
eHRPd25Qcm9wcyk7XG4gIH07XG59XG5cbi8vIFRPRE86IEFkZCBtb3JlIGNvbW1lbnRzXG5cbi8v
IElmIHB1cmUgaXMgdHJ1ZSwgdGhlIHNlbGVjdG9yIHJldHVybmVkIGJ5IHNlbGVjdG9yRmFjdG9y
eSB3aWxsIG1lbW9pemUgaXRzIHJlc3VsdHMsXG4vLyBhbGxvd2luZyBjb25uZWN0QWR2YW5jZWQn
cyBzaG91bGRDb21wb25lbnRVcGRhdGUgdG8gcmV0dXJuIGZhbHNlIGlmIGZpbmFsXG4vLyBwcm9w
cyBoYXZlIG5vdCBjaGFuZ2VkLiBJZiBmYWxzZSwgdGhlIHNlbGVjdG9yIHdpbGwgYWx3YXlzIHJl
dHVybiBhIG5ld1xuLy8gb2JqZWN0IGFuZCBzaG91bGRDb21wb25lbnRVcGRhdGUgd2lsbCBhbHdh
eXMgcmV0dXJuIHRydWUuXG5cbmZ1bmN0aW9uIGZpbmFsUHJvcHNTZWxlY3RvckZhY3RvcnkoZGlz
cGF0Y2gsIF9yZWYyKSB7XG4gIHZhciBpbml0TWFwU3RhdGVUb1Byb3BzID0gX3JlZjIuaW5pdE1h
cFN0YXRlVG9Qcm9wcyxcbiAgICAgIGluaXRNYXBEaXNwYXRjaFRvUHJvcHMgPSBfcmVmMi5pbml0
TWFwRGlzcGF0Y2hUb1Byb3BzLFxuICAgICAgaW5pdE1lcmdlUHJvcHMgPSBfcmVmMi5pbml0TWVy
Z2VQcm9wcyxcbiAgICAgIG9wdGlvbnMgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZjIs
IFsnaW5pdE1hcFN0YXRlVG9Qcm9wcycsICdpbml0TWFwRGlzcGF0Y2hUb1Byb3BzJywgJ2luaXRN
ZXJnZVByb3BzJ10pO1xuXG4gIHZhciBtYXBTdGF0ZVRvUHJvcHMgPSBpbml0TWFwU3RhdGVUb1By
b3BzKGRpc3BhdGNoLCBvcHRpb25zKTtcbiAgdmFyIG1hcERpc3BhdGNoVG9Qcm9wcyA9IGluaXRN
YXBEaXNwYXRjaFRvUHJvcHMoZGlzcGF0Y2gsIG9wdGlvbnMpO1xuICB2YXIgbWVyZ2VQcm9wcyA9
IGluaXRNZXJnZVByb3BzKGRpc3BhdGNoLCBvcHRpb25zKTtcblxuICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICgwLCBfdmVyaWZ5U3Vic2VsZWN0b3Jz
Mi5kZWZhdWx0KShtYXBTdGF0ZVRvUHJvcHMsIG1hcERpc3BhdGNoVG9Qcm9wcywgbWVyZ2VQcm9w
cywgb3B0aW9ucy5kaXNwbGF5TmFtZSk7XG4gIH1cblxuICB2YXIgc2VsZWN0b3JGYWN0b3J5ID0g
b3B0aW9ucy5wdXJlID8gcHVyZUZpbmFsUHJvcHNTZWxlY3RvckZhY3RvcnkgOiBpbXB1cmVGaW5h
bFByb3BzU2VsZWN0b3JGYWN0b3J5O1xuXG4gIHJldHVybiBzZWxlY3RvckZhY3RvcnkobWFwU3Rh
dGVUb1Byb3BzLCBtYXBEaXNwYXRjaFRvUHJvcHMsIG1lcmdlUHJvcHMsIGRpc3BhdGNoLCBvcHRp
b25zKTtcbn1cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoq
IC4vfi9yZWFjdC1yZWR1eC9saWIvY29ubmVjdC9zZWxlY3RvckZhY3RvcnkuanNcbiAqKiBtb2R1
bGUgaWQgPSAxOTJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0Jztc
blxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZlcmlmeVN1
YnNlbGVjdG9ycztcblxudmFyIF93YXJuaW5nID0gcmVxdWlyZSgnLi4vdXRpbHMvd2FybmluZycp
O1xuXG52YXIgX3dhcm5pbmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfd2FybmluZyk7XG5c
bmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2Jq
Ll9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIHZlcmlm
eShzZWxlY3RvciwgbWV0aG9kTmFtZSwgZGlzcGxheU5hbWUpIHtcbiAgaWYgKCFzZWxlY3Rvcikg
e1xuICAgIHRocm93IG5ldyBFcnJvcignVW5leHBlY3RlZCB2YWx1ZSBmb3IgJyArIG1ldGhvZE5h
bWUgKyAnIGluICcgKyBkaXNwbGF5TmFtZSArICcuJyk7XG4gIH0gZWxzZSBpZiAobWV0aG9kTmFt
ZSA9PT0gJ21hcFN0YXRlVG9Qcm9wcycgfHwgbWV0aG9kTmFtZSA9PT0gJ21hcERpc3BhdGNoVG9Q
cm9wcycpIHtcbiAgICBpZiAoIXNlbGVjdG9yLmhhc093blByb3BlcnR5KCdkZXBlbmRzT25Pd25Q
cm9wcycpKSB7XG4gICAgICAoMCwgX3dhcm5pbmcyLmRlZmF1bHQpKCdUaGUgc2VsZWN0b3IgZm9y
ICcgKyBtZXRob2ROYW1lICsgJyBvZiAnICsgZGlzcGxheU5hbWUgKyAnIGRpZCBub3Qgc3BlY2lm
eSBhIHZhbHVlIGZvciBkZXBlbmRzT25Pd25Qcm9wcy4nKTtcbiAgICB9XG4gIH1cbn1cblxuZnVu
Y3Rpb24gdmVyaWZ5U3Vic2VsZWN0b3JzKG1hcFN0YXRlVG9Qcm9wcywgbWFwRGlzcGF0Y2hUb1By
b3BzLCBtZXJnZVByb3BzLCBkaXNwbGF5TmFtZSkge1xuICB2ZXJpZnkobWFwU3RhdGVUb1Byb3Bz
LCAnbWFwU3RhdGVUb1Byb3BzJywgZGlzcGxheU5hbWUpO1xuICB2ZXJpZnkobWFwRGlzcGF0Y2hU
b1Byb3BzLCAnbWFwRGlzcGF0Y2hUb1Byb3BzJywgZGlzcGxheU5hbWUpO1xuICB2ZXJpZnkobWVy
Z2VQcm9wcywgJ21lcmdlUHJvcHMnLCBkaXNwbGF5TmFtZSk7XG59XG5cblxuLyoqKioqKioqKioq
KioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtcmVkdXgvbGliL2Nvbm5l
Y3QvdmVyaWZ5U3Vic2VsZWN0b3JzLmpzXG4gKiogbW9kdWxlIGlkID0gMTkzXG4gKiogbW9kdWxl
IGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxl
ID0gdHJ1ZTtcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3Rv
cikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcg
VHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxu
Ly8gZW5jYXBzdWxhdGVzIHRoZSBzdWJzY3JpcHRpb24gbG9naWMgZm9yIGNvbm5lY3RpbmcgYSBj
b21wb25lbnQgdG8gdGhlIHJlZHV4IHN0b3JlLCBhc1xuLy8gd2VsbCBhcyBuZXN0aW5nIHN1YnNj
cmlwdGlvbnMgb2YgZGVzY2VuZGFudCBjb21wb25lbnRzLCBzbyB0aGF0IHdlIGNhbiBlbnN1cmUg
dGhlXG4vLyBhbmNlc3RvciBjb21wb25lbnRzIHJlLXJlbmRlciBiZWZvcmUgZGVzY2VuZGFudHNc
blxudmFyIENMRUFSRUQgPSBudWxsO1xudmFyIG51bGxMaXN0ZW5lcnMgPSB7XG4gIG5vdGlmeTog
ZnVuY3Rpb24gbm90aWZ5KCkge31cbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZUxpc3RlbmVyQ29sbGVj
dGlvbigpIHtcbiAgLy8gdGhlIGN1cnJlbnQvbmV4dCBwYXR0ZXJuIGlzIGNvcGllZCBmcm9tIHJl
ZHV4J3MgY3JlYXRlU3RvcmUgY29kZS5cbiAgLy8gVE9ETzogcmVmYWN0b3IrZXhwb3NlIHRoYXQg
Y29kZSB0byBiZSByZXVzYWJsZSBoZXJlP1xuICB2YXIgY3VycmVudCA9IFtdO1xuICB2YXIgbmV4
dCA9IFtdO1xuXG4gIHJldHVybiB7XG4gICAgY2xlYXI6IGZ1bmN0aW9uIGNsZWFyKCkge1xuICAg
ICAgbmV4dCA9IENMRUFSRUQ7XG4gICAgICBjdXJyZW50ID0gQ0xFQVJFRDtcbiAgICB9LFxuICAg
IG5vdGlmeTogZnVuY3Rpb24gbm90aWZ5KCkge1xuICAgICAgdmFyIGxpc3RlbmVycyA9IGN1cnJl
bnQgPSBuZXh0O1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVuZ3RoOyBp
KyspIHtcbiAgICAgICAgbGlzdGVuZXJzW2ldKCk7XG4gICAgICB9XG4gICAgfSxcbiAgICBnZXQ6
IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiBuZXh0O1xuICAgIH0sXG4gICAgc3Vic2Ny
aWJlOiBmdW5jdGlvbiBzdWJzY3JpYmUobGlzdGVuZXIpIHtcbiAgICAgIHZhciBpc1N1YnNjcmli
ZWQgPSB0cnVlO1xuICAgICAgaWYgKG5leHQgPT09IGN1cnJlbnQpIG5leHQgPSBjdXJyZW50LnNs
aWNlKCk7XG4gICAgICBuZXh0LnB1c2gobGlzdGVuZXIpO1xuXG4gICAgICByZXR1cm4gZnVuY3Rp
b24gdW5zdWJzY3JpYmUoKSB7XG4gICAgICAgIGlmICghaXNTdWJzY3JpYmVkIHx8IGN1cnJlbnQg
PT09IENMRUFSRUQpIHJldHVybjtcbiAgICAgICAgaXNTdWJzY3JpYmVkID0gZmFsc2U7XG5cbiAg
ICAgICAgaWYgKG5leHQgPT09IGN1cnJlbnQpIG5leHQgPSBjdXJyZW50LnNsaWNlKCk7XG4gICAg
ICAgIG5leHQuc3BsaWNlKG5leHQuaW5kZXhPZihsaXN0ZW5lciksIDEpO1xuICAgICAgfTtcbiAg
ICB9XG4gIH07XG59XG5cbnZhciBTdWJzY3JpcHRpb24gPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0
aW9uIFN1YnNjcmlwdGlvbihzdG9yZSwgcGFyZW50U3ViLCBvblN0YXRlQ2hhbmdlKSB7XG4gICAg
X2NsYXNzQ2FsbENoZWNrKHRoaXMsIFN1YnNjcmlwdGlvbik7XG5cbiAgICB0aGlzLnN0b3JlID0g
c3RvcmU7XG4gICAgdGhpcy5wYXJlbnRTdWIgPSBwYXJlbnRTdWI7XG4gICAgdGhpcy5vblN0YXRl
Q2hhbmdlID0gb25TdGF0ZUNoYW5nZTtcbiAgICB0aGlzLnVuc3Vic2NyaWJlID0gbnVsbDtcbiAg
ICB0aGlzLmxpc3RlbmVycyA9IG51bGxMaXN0ZW5lcnM7XG4gIH1cblxuICBTdWJzY3JpcHRpb24u
cHJvdG90eXBlLmFkZE5lc3RlZFN1YiA9IGZ1bmN0aW9uIGFkZE5lc3RlZFN1YihsaXN0ZW5lcikg
e1xuICAgIHRoaXMudHJ5U3Vic2NyaWJlKCk7XG4gICAgcmV0dXJuIHRoaXMubGlzdGVuZXJzLnN1
YnNjcmliZShsaXN0ZW5lcik7XG4gIH07XG5cbiAgU3Vic2NyaXB0aW9uLnByb3RvdHlwZS5ub3Rp
ZnlOZXN0ZWRTdWJzID0gZnVuY3Rpb24gbm90aWZ5TmVzdGVkU3VicygpIHtcbiAgICB0aGlzLmxp
c3RlbmVycy5ub3RpZnkoKTtcbiAgfTtcblxuICBTdWJzY3JpcHRpb24ucHJvdG90eXBlLmlzU3Vi
c2NyaWJlZCA9IGZ1bmN0aW9uIGlzU3Vic2NyaWJlZCgpIHtcbiAgICByZXR1cm4gQm9vbGVhbih0
aGlzLnVuc3Vic2NyaWJlKTtcbiAgfTtcblxuICBTdWJzY3JpcHRpb24ucHJvdG90eXBlLnRyeVN1
YnNjcmliZSA9IGZ1bmN0aW9uIHRyeVN1YnNjcmliZSgpIHtcbiAgICBpZiAoIXRoaXMudW5zdWJz
Y3JpYmUpIHtcbiAgICAgIHRoaXMudW5zdWJzY3JpYmUgPSB0aGlzLnBhcmVudFN1YiA/IHRoaXMu
cGFyZW50U3ViLmFkZE5lc3RlZFN1Yih0aGlzLm9uU3RhdGVDaGFuZ2UpIDogdGhpcy5zdG9yZS5z
dWJzY3JpYmUodGhpcy5vblN0YXRlQ2hhbmdlKTtcblxuICAgICAgdGhpcy5saXN0ZW5lcnMgPSBj
cmVhdGVMaXN0ZW5lckNvbGxlY3Rpb24oKTtcbiAgICB9XG4gIH07XG5cbiAgU3Vic2NyaXB0aW9u
LnByb3RvdHlwZS50cnlVbnN1YnNjcmliZSA9IGZ1bmN0aW9uIHRyeVVuc3Vic2NyaWJlKCkge1xu
ICAgIGlmICh0aGlzLnVuc3Vic2NyaWJlKSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlKCk7XG4g
ICAgICB0aGlzLnVuc3Vic2NyaWJlID0gbnVsbDtcbiAgICAgIHRoaXMubGlzdGVuZXJzLmNsZWFy
KCk7XG4gICAgICB0aGlzLmxpc3RlbmVycyA9IG51bGxMaXN0ZW5lcnM7XG4gICAgfVxuICB9O1xu
XG4gIHJldHVybiBTdWJzY3JpcHRpb247XG59KCk7XG5cbmV4cG9ydHMuZGVmYXVsdCA9IFN1YnNj
cmlwdGlvbjtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoq
IC4vfi9yZWFjdC1yZWR1eC9saWIvdXRpbHMvU3Vic2NyaXB0aW9uLmpzXG4gKiogbW9kdWxlIGlk
ID0gMTk0XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbmV4
cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLmRlZmF1bHQgPSBzaGFsbG93RXF1YWw7
XG52YXIgaGFzT3duID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblxuZnVuY3Rp
b24gaXMoeCwgeSkge1xuICBpZiAoeCA9PT0geSkge1xuICAgIHJldHVybiB4ICE9PSAwIHx8IHkg
IT09IDAgfHwgMSAvIHggPT09IDEgLyB5O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiB4ICE9PSB4
ICYmIHkgIT09IHk7XG4gIH1cbn1cblxuZnVuY3Rpb24gc2hhbGxvd0VxdWFsKG9iakEsIG9iakIp
IHtcbiAgaWYgKGlzKG9iakEsIG9iakIpKSByZXR1cm4gdHJ1ZTtcblxuICBpZiAodHlwZW9mIG9i
akEgIT09ICdvYmplY3QnIHx8IG9iakEgPT09IG51bGwgfHwgdHlwZW9mIG9iakIgIT09ICdvYmpl
Y3QnIHx8IG9iakIgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIg
a2V5c0EgPSBPYmplY3Qua2V5cyhvYmpBKTtcbiAgdmFyIGtleXNCID0gT2JqZWN0LmtleXMob2Jq
Qik7XG5cbiAgaWYgKGtleXNBLmxlbmd0aCAhPT0ga2V5c0IubGVuZ3RoKSByZXR1cm4gZmFsc2U7
XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzQS5sZW5ndGg7IGkrKykge1xuICAgIGlmICgh
aGFzT3duLmNhbGwob2JqQiwga2V5c0FbaV0pIHx8ICFpcyhvYmpBW2tleXNBW2ldXSwgb2JqQltr
ZXlzQVtpXV0pKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJu
IHRydWU7XG59XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAq
KiAuL34vcmVhY3QtcmVkdXgvbGliL3V0aWxzL3NoYWxsb3dFcXVhbC5qc1xuICoqIG1vZHVsZSBp
ZCA9IDE5NVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLy8gQHJlbW92ZS1vbi1lamVj
dC1iZWdpblxuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICovXG4vLyBAcmVtb3ZlLW9uLWVq
ZWN0LWVuZFxuXG5pZiAodHlwZW9mIFByb21pc2UgPT09ICd1bmRlZmluZWQnKSB7XG4gIC8vIFJl
amVjdGlvbiB0cmFja2luZyBwcmV2ZW50cyBhIGNvbW1vbiBpc3N1ZSB3aGVyZSBSZWFjdCBnZXRz
IGludG8gYW5cbiAgLy8gaW5jb25zaXN0ZW50IHN0YXRlIGR1ZSB0byBhbiBlcnJvciwgYnV0IGl0
IGdldHMgc3dhbGxvd2VkIGJ5IGEgUHJvbWlzZSxcbiAgLy8gYW5kIHRoZSB1c2VyIGhhcyBubyBp
ZGVhIHdoYXQgY2F1c2VzIFJlYWN0J3MgZXJyYXRpYyBmdXR1cmUgYmVoYXZpb3IuXG4gIHJlcXVp
cmUoJ3Byb21pc2UvbGliL3JlamVjdGlvbi10cmFja2luZycpLmVuYWJsZSgpO1xuICB3aW5kb3cu
UHJvbWlzZSA9IHJlcXVpcmUoJ3Byb21pc2UvbGliL2VzNi1leHRlbnNpb25zLmpzJyk7XG59XG5c
bi8vIGZldGNoKCkgcG9seWZpbGwgZm9yIG1ha2luZyBBUEkgY2FsbHMuXG5yZXF1aXJlKCd3aGF0
d2ctZmV0Y2gnKTtcblxuLy8gT2JqZWN0LmFzc2lnbigpIGlzIGNvbW1vbmx5IHVzZWQgd2l0aCBS
ZWFjdC5cbi8vIEl0IHdpbGwgdXNlIHRoZSBuYXRpdmUgaW1wbGVtZW50YXRpb24gaWYgaXQncyBw
cmVzZW50IGFuZCBpc24ndCBidWdneS5cbk9iamVjdC5hc3NpZ24gPSByZXF1aXJlKCdvYmplY3Qt
YXNzaWduJyk7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxu
ICoqIC4vfi9yZWFjdC1zY3JpcHRzL2NvbmZpZy9wb2x5ZmlsbHMuanNcbiAqKiBtb2R1bGUgaWQg
PSAxOTZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIlwidXNlIHN0cmljdFwiO1xuXG4v
LyBVc2UgdGhlIGZhc3Rlc3QgbWVhbnMgcG9zc2libGUgdG8gZXhlY3V0ZSBhIHRhc2sgaW4gaXRz
IG93biB0dXJuLCB3aXRoXG4vLyBwcmlvcml0eSBvdmVyIG90aGVyIGV2ZW50cyBpbmNsdWRpbmcg
SU8sIGFuaW1hdGlvbiwgcmVmbG93LCBhbmQgcmVkcmF3XG4vLyBldmVudHMgaW4gYnJvd3NlcnMu
XG4vL1xuLy8gQW4gZXhjZXB0aW9uIHRocm93biBieSBhIHRhc2sgd2lsbCBwZXJtYW5lbnRseSBp
bnRlcnJ1cHQgdGhlIHByb2Nlc3Npbmcgb2Zcbi8vIHN1YnNlcXVlbnQgdGFza3MuIFRoZSBoaWdo
ZXIgbGV2ZWwgYGFzYXBgIGZ1bmN0aW9uIGVuc3VyZXMgdGhhdCBpZiBhblxuLy8gZXhjZXB0aW9u
IGlzIHRocm93biBieSBhIHRhc2ssIHRoYXQgdGhlIHRhc2sgcXVldWUgd2lsbCBjb250aW51ZSBm
bHVzaGluZyBhc1xuLy8gc29vbiBhcyBwb3NzaWJsZSwgYnV0IGlmIHlvdSB1c2UgYHJhd0FzYXBg
IGRpcmVjdGx5LCB5b3UgYXJlIHJlc3BvbnNpYmxlIHRvXG4vLyBlaXRoZXIgZW5zdXJlIHRoYXQg
bm8gZXhjZXB0aW9ucyBhcmUgdGhyb3duIGZyb20geW91ciB0YXNrLCBvciB0byBtYW51YWxseVxu
Ly8gY2FsbCBgcmF3QXNhcC5yZXF1ZXN0Rmx1c2hgIGlmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24u
XG5tb2R1bGUuZXhwb3J0cyA9IHJhd0FzYXA7XG5mdW5jdGlvbiByYXdBc2FwKHRhc2spIHtcbiAg
ICBpZiAoIXF1ZXVlLmxlbmd0aCkge1xuICAgICAgICByZXF1ZXN0Rmx1c2goKTtcbiAgICAgICAg
Zmx1c2hpbmcgPSB0cnVlO1xuICAgIH1cbiAgICAvLyBFcXVpdmFsZW50IHRvIHB1c2gsIGJ1dCBh
dm9pZHMgYSBmdW5jdGlvbiBjYWxsLlxuICAgIHF1ZXVlW3F1ZXVlLmxlbmd0aF0gPSB0YXNrO1xu
fVxuXG52YXIgcXVldWUgPSBbXTtcbi8vIE9uY2UgYSBmbHVzaCBoYXMgYmVlbiByZXF1ZXN0ZWQs
IG5vIGZ1cnRoZXIgY2FsbHMgdG8gYHJlcXVlc3RGbHVzaGAgYXJlXG4vLyBuZWNlc3NhcnkgdW50
aWwgdGhlIG5leHQgYGZsdXNoYCBjb21wbGV0ZXMuXG52YXIgZmx1c2hpbmcgPSBmYWxzZTtcbi8v
IGByZXF1ZXN0Rmx1c2hgIGlzIGFuIGltcGxlbWVudGF0aW9uLXNwZWNpZmljIG1ldGhvZCB0aGF0
IGF0dGVtcHRzIHRvIGtpY2tcbi8vIG9mZiBhIGBmbHVzaGAgZXZlbnQgYXMgcXVpY2tseSBhcyBw
b3NzaWJsZS4gYGZsdXNoYCB3aWxsIGF0dGVtcHQgdG8gZXhoYXVzdFxuLy8gdGhlIGV2ZW50IHF1
ZXVlIGJlZm9yZSB5aWVsZGluZyB0byB0aGUgYnJvd3NlcidzIG93biBldmVudCBsb29wLlxudmFy
IHJlcXVlc3RGbHVzaDtcbi8vIFRoZSBwb3NpdGlvbiBvZiB0aGUgbmV4dCB0YXNrIHRvIGV4ZWN1
dGUgaW4gdGhlIHRhc2sgcXVldWUuIFRoaXMgaXNcbi8vIHByZXNlcnZlZCBiZXR3ZWVuIGNhbGxz
IHRvIGBmbHVzaGAgc28gdGhhdCBpdCBjYW4gYmUgcmVzdW1lZCBpZlxuLy8gYSB0YXNrIHRocm93
cyBhbiBleGNlcHRpb24uXG52YXIgaW5kZXggPSAwO1xuLy8gSWYgYSB0YXNrIHNjaGVkdWxlcyBh
ZGRpdGlvbmFsIHRhc2tzIHJlY3Vyc2l2ZWx5LCB0aGUgdGFzayBxdWV1ZSBjYW4gZ3Jvd1xuLy8g
dW5ib3VuZGVkLiBUbyBwcmV2ZW50IG1lbW9yeSBleGhhdXN0aW9uLCB0aGUgdGFzayBxdWV1ZSB3
aWxsIHBlcmlvZGljYWxseVxuLy8gdHJ1bmNhdGUgYWxyZWFkeS1jb21wbGV0ZWQgdGFza3MuXG52
YXIgY2FwYWNpdHkgPSAxMDI0O1xuXG4vLyBUaGUgZmx1c2ggZnVuY3Rpb24gcHJvY2Vzc2VzIGFs
bCB0YXNrcyB0aGF0IGhhdmUgYmVlbiBzY2hlZHVsZWQgd2l0aFxuLy8gYHJhd0FzYXBgIHVubGVz
cyBhbmQgdW50aWwgb25lIG9mIHRob3NlIHRhc2tzIHRocm93cyBhbiBleGNlcHRpb24uXG4vLyBJ
ZiBhIHRhc2sgdGhyb3dzIGFuIGV4Y2VwdGlvbiwgYGZsdXNoYCBlbnN1cmVzIHRoYXQgaXRzIHN0
YXRlIHdpbGwgcmVtYWluXG4vLyBjb25zaXN0ZW50IGFuZCB3aWxsIHJlc3VtZSB3aGVyZSBpdCBs
ZWZ0IG9mZiB3aGVuIGNhbGxlZCBhZ2Fpbi5cbi8vIEhvd2V2ZXIsIGBmbHVzaGAgZG9lcyBub3Qg
bWFrZSBhbnkgYXJyYW5nZW1lbnRzIHRvIGJlIGNhbGxlZCBhZ2FpbiBpZiBhblxuLy8gZXhjZXB0
aW9uIGlzIHRocm93bi5cbmZ1bmN0aW9uIGZsdXNoKCkge1xuICAgIHdoaWxlIChpbmRleCA8IHF1
ZXVlLmxlbmd0aCkge1xuICAgICAgICB2YXIgY3VycmVudEluZGV4ID0gaW5kZXg7XG4gICAgICAg
IC8vIEFkdmFuY2UgdGhlIGluZGV4IGJlZm9yZSBjYWxsaW5nIHRoZSB0YXNrLiBUaGlzIGVuc3Vy
ZXMgdGhhdCB3ZSB3aWxsXG4gICAgICAgIC8vIGJlZ2luIGZsdXNoaW5nIG9uIHRoZSBuZXh0IHRh
c2sgdGhlIHRhc2sgdGhyb3dzIGFuIGVycm9yLlxuICAgICAgICBpbmRleCA9IGluZGV4ICsgMTtc
biAgICAgICAgcXVldWVbY3VycmVudEluZGV4XS5jYWxsKCk7XG4gICAgICAgIC8vIFByZXZlbnQg
bGVha2luZyBtZW1vcnkgZm9yIGxvbmcgY2hhaW5zIG9mIHJlY3Vyc2l2ZSBjYWxscyB0byBgYXNh
cGAuXG4gICAgICAgIC8vIElmIHdlIGNhbGwgYGFzYXBgIHdpdGhpbiB0YXNrcyBzY2hlZHVsZWQg
YnkgYGFzYXBgLCB0aGUgcXVldWUgd2lsbFxuICAgICAgICAvLyBncm93LCBidXQgdG8gYXZvaWQg
YW4gTyhuKSB3YWxrIGZvciBldmVyeSB0YXNrIHdlIGV4ZWN1dGUsIHdlIGRvbid0XG4gICAgICAg
IC8vIHNoaWZ0IHRhc2tzIG9mZiB0aGUgcXVldWUgYWZ0ZXIgdGhleSBoYXZlIGJlZW4gZXhlY3V0
ZWQuXG4gICAgICAgIC8vIEluc3RlYWQsIHdlIHBlcmlvZGljYWxseSBzaGlmdCAxMDI0IHRhc2tz
IG9mZiB0aGUgcXVldWUuXG4gICAgICAgIGlmIChpbmRleCA+IGNhcGFjaXR5KSB7XG4gICAgICAg
ICAgICAvLyBNYW51YWxseSBzaGlmdCBhbGwgdmFsdWVzIHN0YXJ0aW5nIGF0IHRoZSBpbmRleCBi
YWNrIHRvIHRoZVxuICAgICAgICAgICAgLy8gYmVnaW5uaW5nIG9mIHRoZSBxdWV1ZS5cbiAgICAg
ICAgICAgIGZvciAodmFyIHNjYW4gPSAwLCBuZXdMZW5ndGggPSBxdWV1ZS5sZW5ndGggLSBpbmRl
eDsgc2NhbiA8IG5ld0xlbmd0aDsgc2NhbisrKSB7XG4gICAgICAgICAgICAgICAgcXVldWVbc2Nh
bl0gPSBxdWV1ZVtzY2FuICsgaW5kZXhdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcXVl
dWUubGVuZ3RoIC09IGluZGV4O1xuICAgICAgICAgICAgaW5kZXggPSAwO1xuICAgICAgICB9XG4g
ICAgfVxuICAgIHF1ZXVlLmxlbmd0aCA9IDA7XG4gICAgaW5kZXggPSAwO1xuICAgIGZsdXNoaW5n
ID0gZmFsc2U7XG59XG5cbi8vIGByZXF1ZXN0Rmx1c2hgIGlzIGltcGxlbWVudGVkIHVzaW5nIGEg
c3RyYXRlZ3kgYmFzZWQgb24gZGF0YSBjb2xsZWN0ZWQgZnJvbVxuLy8gZXZlcnkgYXZhaWxhYmxl
IFNhdWNlTGFicyBTZWxlbml1bSB3ZWIgZHJpdmVyIHdvcmtlciBhdCB0aW1lIG9mIHdyaXRpbmcu
XG4vLyBodHRwczovL2RvY3MuZ29vZ2xlLmNvbS9zcHJlYWRzaGVldHMvZC8xbUctNVVZR3VwNXF4
R2RFTVdraFA2QldDejA1M05VYjJFMVFvVVRVMTZ1QS9lZGl0I2dpZD03ODM3MjQ1OTNcblxuLy8g
U2FmYXJpIDYgYW5kIDYuMSBmb3IgZGVza3RvcCwgaVBhZCwgYW5kIGlQaG9uZSBhcmUgdGhlIG9u
bHkgYnJvd3NlcnMgdGhhdFxuLy8gaGF2ZSBXZWJLaXRNdXRhdGlvbk9ic2VydmVyIGJ1dCBub3Qg
dW4tcHJlZml4ZWQgTXV0YXRpb25PYnNlcnZlci5cbi8vIE11c3QgdXNlIGBnbG9iYWxgIG9yIGBz
ZWxmYCBpbnN0ZWFkIG9mIGB3aW5kb3dgIHRvIHdvcmsgaW4gYm90aCBmcmFtZXMgYW5kIHdlYlxu
Ly8gd29ya2Vycy4gYGdsb2JhbGAgaXMgYSBwcm92aXNpb24gb2YgQnJvd3NlcmlmeSwgTXIsIE1y
cywgb3IgTW9wLlxuXG4vKiBnbG9iYWxzIHNlbGYgKi9cbnZhciBzY29wZSA9IHR5cGVvZiBnbG9i
YWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWwgOiBzZWxmO1xudmFyIEJyb3dzZXJNdXRhdGlv
bk9ic2VydmVyID0gc2NvcGUuTXV0YXRpb25PYnNlcnZlciB8fCBzY29wZS5XZWJLaXRNdXRhdGlv
bk9ic2VydmVyO1xuXG4vLyBNdXRhdGlvbk9ic2VydmVycyBhcmUgZGVzaXJhYmxlIGJlY2F1c2Ug
dGhleSBoYXZlIGhpZ2ggcHJpb3JpdHkgYW5kIHdvcmtcbi8vIHJlbGlhYmx5IGV2ZXJ5d2hlcmUg
dGhleSBhcmUgaW1wbGVtZW50ZWQuXG4vLyBUaGV5IGFyZSBpbXBsZW1lbnRlZCBpbiBhbGwgbW9k
ZXJuIGJyb3dzZXJzLlxuLy9cbi8vIC0gQW5kcm9pZCA0LTQuM1xuLy8gLSBDaHJvbWUgMjYtMzRc
bi8vIC0gRmlyZWZveCAxNC0yOVxuLy8gLSBJbnRlcm5ldCBFeHBsb3JlciAxMVxuLy8gLSBpUGFk
IFNhZmFyaSA2LTcuMVxuLy8gLSBpUGhvbmUgU2FmYXJpIDctNy4xXG4vLyAtIFNhZmFyaSA2LTdc
bmlmICh0eXBlb2YgQnJvd3Nlck11dGF0aW9uT2JzZXJ2ZXIgPT09IFwiZnVuY3Rpb25cIikge1xu
ICAgIHJlcXVlc3RGbHVzaCA9IG1ha2VSZXF1ZXN0Q2FsbEZyb21NdXRhdGlvbk9ic2VydmVyKGZs
dXNoKTtcblxuLy8gTWVzc2FnZUNoYW5uZWxzIGFyZSBkZXNpcmFibGUgYmVjYXVzZSB0aGV5IGdp
dmUgZGlyZWN0IGFjY2VzcyB0byB0aGUgSFRNTFxuLy8gdGFzayBxdWV1ZSwgYXJlIGltcGxlbWVu
dGVkIGluIEludGVybmV0IEV4cGxvcmVyIDEwLCBTYWZhcmkgNS4wLTEsIGFuZCBPcGVyYVxuLy8g
MTEtMTIsIGFuZCBpbiB3ZWIgd29ya2VycyBpbiBtYW55IGVuZ2luZXMuXG4vLyBBbHRob3VnaCBt
ZXNzYWdlIGNoYW5uZWxzIHlpZWxkIHRvIGFueSBxdWV1ZWQgcmVuZGVyaW5nIGFuZCBJTyB0YXNr
cywgdGhleVxuLy8gd291bGQgYmUgYmV0dGVyIHRoYW4gaW1wb3NpbmcgdGhlIDRtcyBkZWxheSBv
ZiB0aW1lcnMuXG4vLyBIb3dldmVyLCB0aGV5IGRvIG5vdCB3b3JrIHJlbGlhYmx5IGluIEludGVy
bmV0IEV4cGxvcmVyIG9yIFNhZmFyaS5cblxuLy8gSW50ZXJuZXQgRXhwbG9yZXIgMTAgaXMgdGhl
IG9ubHkgYnJvd3NlciB0aGF0IGhhcyBzZXRJbW1lZGlhdGUgYnV0IGRvZXNcbi8vIG5vdCBoYXZl
IE11dGF0aW9uT2JzZXJ2ZXJzLlxuLy8gQWx0aG91Z2ggc2V0SW1tZWRpYXRlIHlpZWxkcyB0byB0
aGUgYnJvd3NlcidzIHJlbmRlcmVyLCBpdCB3b3VsZCBiZVxuLy8gcHJlZmVycmFibGUgdG8gZmFs
bGluZyBiYWNrIHRvIHNldFRpbWVvdXQgc2luY2UgaXQgZG9lcyBub3QgaGF2ZVxuLy8gdGhlIG1p
bmltdW0gNG1zIHBlbmFsdHkuXG4vLyBVbmZvcnR1bmF0ZWx5IHRoZXJlIGFwcGVhcnMgdG8gYmUg
YSBidWcgaW4gSW50ZXJuZXQgRXhwbG9yZXIgMTAgTW9iaWxlIChhbmRcbi8vIERlc2t0b3AgdG8g
YSBsZXNzZXIgZXh0ZW50KSB0aGF0IHJlbmRlcnMgYm90aCBzZXRJbW1lZGlhdGUgYW5kXG4vLyBN
ZXNzYWdlQ2hhbm5lbCB1c2VsZXNzIGZvciB0aGUgcHVycG9zZXMgb2YgQVNBUC5cbi8vIGh0dHBz
Oi8vZ2l0aHViLmNvbS9rcmlza293YWwvcS9pc3N1ZXMvMzk2XG5cbi8vIFRpbWVycyBhcmUgaW1w
bGVtZW50ZWQgdW5pdmVyc2FsbHkuXG4vLyBXZSBmYWxsIGJhY2sgdG8gdGltZXJzIGluIHdvcmtl
cnMgaW4gbW9zdCBlbmdpbmVzLCBhbmQgaW4gZm9yZWdyb3VuZFxuLy8gY29udGV4dHMgaW4gdGhl
IGZvbGxvd2luZyBicm93c2Vycy5cbi8vIEhvd2V2ZXIsIG5vdGUgdGhhdCBldmVuIHRoaXMgc2lt
cGxlIGNhc2UgcmVxdWlyZXMgbnVhbmNlcyB0byBvcGVyYXRlIGluIGFcbi8vIGJyb2FkIHNwZWN0
cnVtIG9mIGJyb3dzZXJzLlxuLy9cbi8vIC0gRmlyZWZveCAzLTEzXG4vLyAtIEludGVybmV0IEV4
cGxvcmVyIDYtOVxuLy8gLSBpUGFkIFNhZmFyaSA0LjNcbi8vIC0gTHlueCAyLjguN1xufSBlbHNl
IHtcbiAgICByZXF1ZXN0Rmx1c2ggPSBtYWtlUmVxdWVzdENhbGxGcm9tVGltZXIoZmx1c2gpO1xu
fVxuXG4vLyBgcmVxdWVzdEZsdXNoYCByZXF1ZXN0cyB0aGF0IHRoZSBoaWdoIHByaW9yaXR5IGV2
ZW50IHF1ZXVlIGJlIGZsdXNoZWQgYXNcbi8vIHNvb24gYXMgcG9zc2libGUuXG4vLyBUaGlzIGlz
IHVzZWZ1bCB0byBwcmV2ZW50IGFuIGVycm9yIHRocm93biBpbiBhIHRhc2sgZnJvbSBzdGFsbGlu
ZyB0aGUgZXZlbnRcbi8vIHF1ZXVlIGlmIHRoZSBleGNlcHRpb24gaGFuZGxlZCBieSBOb2RlLmpz
4oCZc1xuLy8gYHByb2Nlc3Mub24oXCJ1bmNhdWdodEV4Y2VwdGlvblwiKWAgb3IgYnkgYSBkb21h
aW4uXG5yYXdBc2FwLnJlcXVlc3RGbHVzaCA9IHJlcXVlc3RGbHVzaDtcblxuLy8gVG8gcmVxdWVz
dCBhIGhpZ2ggcHJpb3JpdHkgZXZlbnQsIHdlIGluZHVjZSBhIG11dGF0aW9uIG9ic2VydmVyIGJ5
IHRvZ2dsaW5nXG4vLyB0aGUgdGV4dCBvZiBhIHRleHQgbm9kZSBiZXR3ZWVuIFwiMVwiIGFuZCBc
Ii0xXCIuXG5mdW5jdGlvbiBtYWtlUmVxdWVzdENhbGxGcm9tTXV0YXRpb25PYnNlcnZlcihjYWxs
YmFjaykge1xuICAgIHZhciB0b2dnbGUgPSAxO1xuICAgIHZhciBvYnNlcnZlciA9IG5ldyBCcm93
c2VyTXV0YXRpb25PYnNlcnZlcihjYWxsYmFjayk7XG4gICAgdmFyIG5vZGUgPSBkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZShcIlwiKTtcbiAgICBvYnNlcnZlci5vYnNlcnZlKG5vZGUsIHtjaGFyYWN0
ZXJEYXRhOiB0cnVlfSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHJlcXVlc3RDYWxsKCkge1xuICAg
ICAgICB0b2dnbGUgPSAtdG9nZ2xlO1xuICAgICAgICBub2RlLmRhdGEgPSB0b2dnbGU7XG4gICAg
fTtcbn1cblxuLy8gVGhlIG1lc3NhZ2UgY2hhbm5lbCB0ZWNobmlxdWUgd2FzIGRpc2NvdmVyZWQg
YnkgTWFsdGUgVWJsIGFuZCB3YXMgdGhlXG4vLyBvcmlnaW5hbCBmb3VuZGF0aW9uIGZvciB0aGlz
IGxpYnJhcnkuXG4vLyBodHRwOi8vd3d3Lm5vbmJsb2NraW5nLmlvLzIwMTEvMDYvd2luZG93bmV4
dHRpY2suaHRtbFxuXG4vLyBTYWZhcmkgNi4wLjUgKGF0IGxlYXN0KSBpbnRlcm1pdHRlbnRseSBm
YWlscyB0byBjcmVhdGUgbWVzc2FnZSBwb3J0cyBvbiBhXG4vLyBwYWdlJ3MgZmlyc3QgbG9hZC4g
VGhhbmtmdWxseSwgdGhpcyB2ZXJzaW9uIG9mIFNhZmFyaSBzdXBwb3J0c1xuLy8gTXV0YXRpb25P
YnNlcnZlcnMsIHNvIHdlIGRvbid0IG5lZWQgdG8gZmFsbCBiYWNrIGluIHRoYXQgY2FzZS5cblxu
Ly8gZnVuY3Rpb24gbWFrZVJlcXVlc3RDYWxsRnJvbU1lc3NhZ2VDaGFubmVsKGNhbGxiYWNrKSB7
XG4vLyAgICAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTtcbi8vICAgICBjaGFu
bmVsLnBvcnQxLm9ubWVzc2FnZSA9IGNhbGxiYWNrO1xuLy8gICAgIHJldHVybiBmdW5jdGlvbiBy
ZXF1ZXN0Q2FsbCgpIHtcbi8vICAgICAgICAgY2hhbm5lbC5wb3J0Mi5wb3N0TWVzc2FnZSgwKTtc
bi8vICAgICB9O1xuLy8gfVxuXG4vLyBGb3IgcmVhc29ucyBleHBsYWluZWQgYWJvdmUsIHdlIGFy
ZSBhbHNvIHVuYWJsZSB0byB1c2UgYHNldEltbWVkaWF0ZWBcbi8vIHVuZGVyIGFueSBjaXJjdW1z
dGFuY2VzLlxuLy8gRXZlbiBpZiB3ZSB3ZXJlLCB0aGVyZSBpcyBhbm90aGVyIGJ1ZyBpbiBJbnRl
cm5ldCBFeHBsb3JlciAxMC5cbi8vIEl0IGlzIG5vdCBzdWZmaWNpZW50IHRvIGFzc2lnbiBgc2V0
SW1tZWRpYXRlYCB0byBgcmVxdWVzdEZsdXNoYCBiZWNhdXNlXG4vLyBgc2V0SW1tZWRpYXRlYCBt
dXN0IGJlIGNhbGxlZCAqYnkgbmFtZSogYW5kIHRoZXJlZm9yZSBtdXN0IGJlIHdyYXBwZWQgaW4g
YVxuLy8gY2xvc3VyZS5cbi8vIE5ldmVyIGZvcmdldC5cblxuLy8gZnVuY3Rpb24gbWFrZVJlcXVl
c3RDYWxsRnJvbVNldEltbWVkaWF0ZShjYWxsYmFjaykge1xuLy8gICAgIHJldHVybiBmdW5jdGlv
biByZXF1ZXN0Q2FsbCgpIHtcbi8vICAgICAgICAgc2V0SW1tZWRpYXRlKGNhbGxiYWNrKTtcbi8v
ICAgICB9O1xuLy8gfVxuXG4vLyBTYWZhcmkgNi4wIGhhcyBhIHByb2JsZW0gd2hlcmUgdGltZXJz
IHdpbGwgZ2V0IGxvc3Qgd2hpbGUgdGhlIHVzZXIgaXNcbi8vIHNjcm9sbGluZy4gVGhpcyBwcm9i
bGVtIGRvZXMgbm90IGltcGFjdCBBU0FQIGJlY2F1c2UgU2FmYXJpIDYuMCBzdXBwb3J0c1xuLy8g
bXV0YXRpb24gb2JzZXJ2ZXJzLCBzbyB0aGF0IGltcGxlbWVudGF0aW9uIGlzIHVzZWQgaW5zdGVh
ZC5cbi8vIEhvd2V2ZXIsIGlmIHdlIGV2ZXIgZWxlY3QgdG8gdXNlIHRpbWVycyBpbiBTYWZhcmks
IHRoZSBwcmV2YWxlbnQgd29yay1hcm91bmRcbi8vIGlzIHRvIGFkZCBhIHNjcm9sbCBldmVudCBs
aXN0ZW5lciB0aGF0IGNhbGxzIGZvciBhIGZsdXNoLlxuXG4vLyBgc2V0VGltZW91dGAgZG9lcyBu
b3QgY2FsbCB0aGUgcGFzc2VkIGNhbGxiYWNrIGlmIHRoZSBkZWxheSBpcyBsZXNzIHRoYW5cbi8v
IGFwcHJveGltYXRlbHkgNyBpbiB3ZWIgd29ya2VycyBpbiBGaXJlZm94IDggdGhyb3VnaCAxOCwg
YW5kIHNvbWV0aW1lcyBub3Rcbi8vIGV2ZW4gdGhlbi5cblxuZnVuY3Rpb24gbWFrZVJlcXVlc3RD
YWxsRnJvbVRpbWVyKGNhbGxiYWNrKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIHJlcXVlc3RDYWxs
KCkge1xuICAgICAgICAvLyBXZSBkaXNwYXRjaCBhIHRpbWVvdXQgd2l0aCBhIHNwZWNpZmllZCBk
ZWxheSBvZiAwIGZvciBlbmdpbmVzIHRoYXRcbiAgICAgICAgLy8gY2FuIHJlbGlhYmx5IGFjY29t
bW9kYXRlIHRoYXQgcmVxdWVzdC4gVGhpcyB3aWxsIHVzdWFsbHkgYmUgc25hcHBlZFxuICAgICAg
ICAvLyB0byBhIDQgbWlsaXNlY29uZCBkZWxheSwgYnV0IG9uY2Ugd2UncmUgZmx1c2hpbmcsIHRo
ZXJlJ3Mgbm8gZGVsYXlcbiAgICAgICAgLy8gYmV0d2VlbiBldmVudHMuXG4gICAgICAgIHZhciB0
aW1lb3V0SGFuZGxlID0gc2V0VGltZW91dChoYW5kbGVUaW1lciwgMCk7XG4gICAgICAgIC8vIEhv
d2V2ZXIsIHNpbmNlIHRoaXMgdGltZXIgZ2V0cyBmcmVxdWVudGx5IGRyb3BwZWQgaW4gRmlyZWZv
eFxuICAgICAgICAvLyB3b3JrZXJzLCB3ZSBlbmxpc3QgYW4gaW50ZXJ2YWwgaGFuZGxlIHRoYXQg
d2lsbCB0cnkgdG8gZmlyZVxuICAgICAgICAvLyBhbiBldmVudCAyMCB0aW1lcyBwZXIgc2Vjb25k
IHVudGlsIGl0IHN1Y2NlZWRzLlxuICAgICAgICB2YXIgaW50ZXJ2YWxIYW5kbGUgPSBzZXRJbnRl
cnZhbChoYW5kbGVUaW1lciwgNTApO1xuXG4gICAgICAgIGZ1bmN0aW9uIGhhbmRsZVRpbWVyKCkg
e1xuICAgICAgICAgICAgLy8gV2hpY2hldmVyIHRpbWVyIHN1Y2NlZWRzIHdpbGwgY2FuY2VsIGJv
dGggdGltZXJzIGFuZFxuICAgICAgICAgICAgLy8gZXhlY3V0ZSB0aGUgY2FsbGJhY2suXG4gICAg
ICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dEhhbmRsZSk7XG4gICAgICAgICAgICBjbGVhcklu
dGVydmFsKGludGVydmFsSGFuZGxlKTtcbiAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAg
IH1cbiAgICB9O1xufVxuXG4vLyBUaGlzIGlzIGZvciBgYXNhcC5qc2Agb25seS5cbi8vIEl0cyBu
YW1lIHdpbGwgYmUgcGVyaW9kaWNhbGx5IHJhbmRvbWl6ZWQgdG8gYnJlYWsgYW55IGNvZGUgdGhh
dCBkZXBlbmRzIG9uXG4vLyBpdHMgZXhpc3RlbmNlLlxucmF3QXNhcC5tYWtlUmVxdWVzdENhbGxG
cm9tVGltZXIgPSBtYWtlUmVxdWVzdENhbGxGcm9tVGltZXI7XG5cbi8vIEFTQVAgd2FzIG9yaWdp
bmFsbHkgYSBuZXh0VGljayBzaGltIGluY2x1ZGVkIGluIFEuIFRoaXMgd2FzIGZhY3RvcmVkIG91
dFxuLy8gaW50byB0aGlzIEFTQVAgcGFja2FnZS4gSXQgd2FzIGxhdGVyIGFkYXB0ZWQgdG8gUlNW
UCB3aGljaCBtYWRlIGZ1cnRoZXJcbi8vIGFtZW5kbWVudHMuIFRoZXNlIGRlY2lzaW9ucywgcGFy
dGljdWxhcmx5IHRvIG1hcmdpbmFsaXplIE1lc3NhZ2VDaGFubmVsIGFuZFxuLy8gdG8gY2FwdHVy
ZSB0aGUgTXV0YXRpb25PYnNlcnZlciBpbXBsZW1lbnRhdGlvbiBpbiBhIGNsb3N1cmUsIHdlcmUg
aW50ZWdyYXRlZFxuLy8gYmFjayBpbnRvIEFTQVAgcHJvcGVyLlxuLy8gaHR0cHM6Ly9naXRodWIu
Y29tL3RpbGRlaW8vcnN2cC5qcy9ibG9iL2NkZGY3MjMyNTQ2YTljZjg1ODUyNGI3NWNkZTZmOWVk
ZjcyNjIwYTcvbGliL3JzdnAvYXNhcC5qc1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiog
V0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3Qtc2NyaXB0cy9+L2FzYXAvYnJvd3Nlci1yYXcu
anNcbiAqKiBtb2R1bGUgaWQgPSAxOTdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsImlt
cG9ydCAqIGFzIHR5cGVzIGZyb20gJy4uL2NvbnN0YW50cy9BY3Rpb25UeXBlcydcblxuZXhwb3J0
IGNvbnN0IGFkZFRvZG8gPSB0ZXh0ID0+ICh7IHR5cGU6IHR5cGVzLkFERF9UT0RPLCB0ZXh0IH0p
XG5leHBvcnQgY29uc3QgZGVsZXRlVG9kbyA9IGlkID0+ICh7IHR5cGU6IHR5cGVzLkRFTEVURV9U
T0RPLCBpZCB9KVxuZXhwb3J0IGNvbnN0IGVkaXRUb2RvID0gKGlkLCB0ZXh0KSA9PiAoeyB0eXBl
OiB0eXBlcy5FRElUX1RPRE8sIGlkLCB0ZXh0IH0pXG5leHBvcnQgY29uc3QgY29tcGxldGVUb2Rv
ID0gaWQgPT4gKHsgdHlwZTogdHlwZXMuQ09NUExFVEVfVE9ETywgaWQgfSlcbmV4cG9ydCBjb25z
dCBjb21wbGV0ZUFsbCA9ICgpID0+ICh7IHR5cGU6IHR5cGVzLkNPTVBMRVRFX0FMTCB9KVxuZXhw
b3J0IGNvbnN0IGNsZWFyQ29tcGxldGVkID0gKCkgPT4gKHsgdHlwZTogdHlwZXMuQ0xFQVJfQ09N
UExFVEVEIH0pXG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9hY3Rpb25z
L2luZGV4LmpzXG4gKiovIiwiaW1wb3J0IFJlYWN0LCB7IFByb3BUeXBlcywgQ29tcG9uZW50IH0g
ZnJvbSAncmVhY3QnXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJ1xuaW1wb3J0
IHsgU0hPV19BTEwsIFNIT1dfQ09NUExFVEVELCBTSE9XX0FDVElWRSB9IGZyb20gJy4uL2NvbnN0
YW50cy9Ub2RvRmlsdGVycydcblxuY29uc3QgRklMVEVSX1RJVExFUyA9IHtcbiAgW1NIT1dfQUxM
XTogJ0FsbCcsXG4gIFtTSE9XX0FDVElWRV06ICdBY3RpdmUnLFxuICBbU0hPV19DT01QTEVURURd
OiAnQ29tcGxldGVkJ1xufVxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGb290ZXIgZXh0ZW5kcyBD
b21wb25lbnQge1xuICBzdGF0aWMgcHJvcFR5cGVzID0ge1xuICAgIGNvbXBsZXRlZENvdW50OiBQ
cm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gICAgYWN0aXZlQ291bnQ6IFByb3BUeXBlcy5u
dW1iZXIuaXNSZXF1aXJlZCxcbiAgICBmaWx0ZXI6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJl
ZCxcbiAgICBvbkNsZWFyQ29tcGxldGVkOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAg
IG9uU2hvdzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxuICB9XG5cbiAgcmVuZGVyVG9kb0Nv
dW50KCkge1xuICAgIGNvbnN0IHsgYWN0aXZlQ291bnQgfSA9IHRoaXMucHJvcHNcbiAgICBjb25z
dCBpdGVtV29yZCA9IGFjdGl2ZUNvdW50ID09PSAxID8gJ2l0ZW0nIDogJ2l0ZW1zJ1xuXG4gICAg
cmV0dXJuIChcbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRvZG8tY291bnRcIj5cbiAgICAgICAg
PHN0cm9uZz57YWN0aXZlQ291bnQgfHwgJ05vJ308L3N0cm9uZz4ge2l0ZW1Xb3JkfSBsZWZ0XG4g
ICAgICA8L3NwYW4+XG4gICAgKVxuICB9XG5cbiAgcmVuZGVyRmlsdGVyTGluayhmaWx0ZXIpIHtc
biAgICBjb25zdCB0aXRsZSA9IEZJTFRFUl9USVRMRVNbZmlsdGVyXVxuICAgIGNvbnN0IHsgZmls
dGVyOiBzZWxlY3RlZEZpbHRlciwgb25TaG93IH0gPSB0aGlzLnByb3BzXG5cbiAgICByZXR1cm4g
KFxuICAgICAgPGEgY2xhc3NOYW1lPXtjbGFzc25hbWVzKHsgc2VsZWN0ZWQ6IGZpbHRlciA9PT0g
c2VsZWN0ZWRGaWx0ZXIgfSl9XG4gICAgICAgICBzdHlsZT17eyBjdXJzb3I6ICdwb2ludGVyJyB9
fVxuICAgICAgICAgb25DbGljaz17KCkgPT4gb25TaG93KGZpbHRlcil9PlxuICAgICAgICB7dGl0
bGV9XG4gICAgICA8L2E+XG4gICAgKVxuICB9XG5cbiAgcmVuZGVyQ2xlYXJCdXR0b24oKSB7XG4g
ICAgY29uc3QgeyBjb21wbGV0ZWRDb3VudCwgb25DbGVhckNvbXBsZXRlZCB9ID0gdGhpcy5wcm9w
c1xuICAgIGlmIChjb21wbGV0ZWRDb3VudCA+IDApIHtcbiAgICAgIHJldHVybiAoXG4gICAgICAg
IDxidXR0b24gY2xhc3NOYW1lPVwiY2xlYXItY29tcGxldGVkXCJcbiAgICAgICAgICAgICAgICBv
bkNsaWNrPXtvbkNsZWFyQ29tcGxldGVkfSA+XG4gICAgICAgICAgQ2xlYXIgY29tcGxldGVkXG4g
ICAgICAgIDwvYnV0dG9uPlxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAg
ICByZXR1cm4gKFxuICAgICAgPGZvb3RlciBjbGFzc05hbWU9XCJmb290ZXJcIj5cbiAgICAgICAg
e3RoaXMucmVuZGVyVG9kb0NvdW50KCl9XG4gICAgICAgIDx1bCBjbGFzc05hbWU9XCJmaWx0ZXJz
XCI+XG4gICAgICAgICAge1sgU0hPV19BTEwsIFNIT1dfQUNUSVZFLCBTSE9XX0NPTVBMRVRFRCBd
Lm1hcChmaWx0ZXIgPT5cbiAgICAgICAgICAgIDxsaSBrZXk9e2ZpbHRlcn0+XG4gICAgICAgICAg
ICAgIHt0aGlzLnJlbmRlckZpbHRlckxpbmsoZmlsdGVyKX1cbiAgICAgICAgICAgIDwvbGk+XG4g
ICAgICAgICAgKX1cbiAgICAgICAgPC91bD5cbiAgICAgICAge3RoaXMucmVuZGVyQ2xlYXJCdXR0
b24oKX1cbiAgICAgIDwvZm9vdGVyPlxuICAgIClcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sg
Rk9PVEVSICoqXG4gKiogLi9zcmMvY29tcG9uZW50cy9Gb290ZXIuanNcbiAqKi8iLCJpbXBvcnQg
UmVhY3QsIHsgUHJvcFR5cGVzLCBDb21wb25lbnQgfSBmcm9tICdyZWFjdCdcbmltcG9ydCBUb2Rv
VGV4dElucHV0IGZyb20gJy4vVG9kb1RleHRJbnB1dCdcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3Mg
SGVhZGVyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICBh
ZGRUb2RvOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkXG4gIH1cblxuICBoYW5kbGVTYXZlID0g
dGV4dCA9PiB7XG4gICAgaWYgKHRleHQubGVuZ3RoICE9PSAwKSB7XG4gICAgICB0aGlzLnByb3Bz
LmFkZFRvZG8odGV4dClcbiAgICB9XG4gIH1cblxuICByZW5kZXIoKSB7XG4gICAgcmV0dXJuIChc
biAgICAgIDxoZWFkZXIgY2xhc3NOYW1lPVwiaGVhZGVyXCI+XG4gICAgICAgIDxoMT50b2Rvczwv
aDE+XG4gICAgICAgIDxUb2RvVGV4dElucHV0IG5ld1RvZG9cbiAgICAgICAgICAgICAgICAgICAg
ICAgb25TYXZlPXt0aGlzLmhhbmRsZVNhdmV9XG4gICAgICAgICAgICAgICAgICAgICAgIHBsYWNl
aG9sZGVyPVwiV2hhdCBuZWVkcyB0byBiZSBkb25lP1wiIC8+XG4gICAgICA8L2hlYWRlcj5cbiAg
ICApXG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4vc3JjL2NvbXBv
bmVudHMvSGVhZGVyLmpzXG4gKiovIiwiaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCwgUHJvcFR5
cGVzIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgVG9kb0l0ZW0gZnJvbSAnLi9Ub2RvSXRlbSdcbmlt
cG9ydCBGb290ZXIgZnJvbSAnLi9Gb290ZXInXG5pbXBvcnQgeyBTSE9XX0FMTCwgU0hPV19DT01Q
TEVURUQsIFNIT1dfQUNUSVZFIH0gZnJvbSAnLi4vY29uc3RhbnRzL1RvZG9GaWx0ZXJzJ1xuXG5j
b25zdCBUT0RPX0ZJTFRFUlMgPSB7XG4gIFtTSE9XX0FMTF06ICgpID0+IHRydWUsXG4gIFtTSE9X
X0FDVElWRV06IHRvZG8gPT4gIXRvZG8uY29tcGxldGVkLFxuICBbU0hPV19DT01QTEVURURdOiB0
b2RvID0+IHRvZG8uY29tcGxldGVkXG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1haW5TZWN0
aW9uIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICB0b2Rv
czogUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsXG4gICAgYWN0aW9uczogUHJvcFR5cGVzLm9i
amVjdC5pc1JlcXVpcmVkXG4gIH1cblxuICBzdGF0ZSA9IHsgZmlsdGVyOiBTSE9XX0FMTCB9XG5c
biAgaGFuZGxlQ2xlYXJDb21wbGV0ZWQgPSAoKSA9PiB7XG4gICAgdGhpcy5wcm9wcy5hY3Rpb25z
LmNsZWFyQ29tcGxldGVkKClcbiAgfVxuXG4gIGhhbmRsZVNob3cgPSBmaWx0ZXIgPT4ge1xuICAg
IHRoaXMuc2V0U3RhdGUoeyBmaWx0ZXIgfSlcbiAgfVxuXG4gIHJlbmRlclRvZ2dsZUFsbChjb21w
bGV0ZWRDb3VudCkge1xuICAgIGNvbnN0IHsgdG9kb3MsIGFjdGlvbnMgfSA9IHRoaXMucHJvcHNc
biAgICBpZiAodG9kb3MubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPGlu
cHV0IGNsYXNzTmFtZT1cInRvZ2dsZS1hbGxcIlxuICAgICAgICAgICAgICAgdHlwZT1cImNoZWNr
Ym94XCJcbiAgICAgICAgICAgICAgIGNoZWNrZWQ9e2NvbXBsZXRlZENvdW50ID09PSB0b2Rvcy5s
ZW5ndGh9XG4gICAgICAgICAgICAgICBvbkNoYW5nZT17YWN0aW9ucy5jb21wbGV0ZUFsbH0gLz5c
biAgICAgIClcbiAgICB9XG4gIH1cblxuICByZW5kZXJGb290ZXIoY29tcGxldGVkQ291bnQpIHtc
biAgICBjb25zdCB7IHRvZG9zIH0gPSB0aGlzLnByb3BzXG4gICAgY29uc3QgeyBmaWx0ZXIgfSA9
IHRoaXMuc3RhdGVcbiAgICBjb25zdCBhY3RpdmVDb3VudCA9IHRvZG9zLmxlbmd0aCAtIGNvbXBs
ZXRlZENvdW50XG5cbiAgICBpZiAodG9kb3MubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gKFxuICAg
ICAgICA8Rm9vdGVyIGNvbXBsZXRlZENvdW50PXtjb21wbGV0ZWRDb3VudH1cbiAgICAgICAgICAg
ICAgICBhY3RpdmVDb3VudD17YWN0aXZlQ291bnR9XG4gICAgICAgICAgICAgICAgZmlsdGVyPXtm
aWx0ZXJ9XG4gICAgICAgICAgICAgICAgb25DbGVhckNvbXBsZXRlZD17dGhpcy5oYW5kbGVDbGVh
ckNvbXBsZXRlZC5iaW5kKHRoaXMpfVxuICAgICAgICAgICAgICAgIG9uU2hvdz17dGhpcy5oYW5k
bGVTaG93LmJpbmQodGhpcyl9IC8+XG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkg
e1xuICAgIGNvbnN0IHsgdG9kb3MsIGFjdGlvbnMgfSA9IHRoaXMucHJvcHNcbiAgICBjb25zdCB7
IGZpbHRlciB9ID0gdGhpcy5zdGF0ZVxuXG4gICAgY29uc3QgZmlsdGVyZWRUb2RvcyA9IHRvZG9z
LmZpbHRlcihUT0RPX0ZJTFRFUlNbZmlsdGVyXSlcbiAgICBjb25zdCBjb21wbGV0ZWRDb3VudCA9
IHRvZG9zLnJlZHVjZSgoY291bnQsIHRvZG8pID0+XG4gICAgICB0b2RvLmNvbXBsZXRlZCA/IGNv
dW50ICsgMSA6IGNvdW50LFxuICAgICAgMFxuICAgIClcblxuICAgIHJldHVybiAoXG4gICAgICA8
c2VjdGlvbiBjbGFzc05hbWU9XCJtYWluXCI+XG4gICAgICAgIHt0aGlzLnJlbmRlclRvZ2dsZUFs
bChjb21wbGV0ZWRDb3VudCl9XG4gICAgICAgIDx1bCBjbGFzc05hbWU9XCJ0b2RvLWxpc3RcIj5c
biAgICAgICAgICB7ZmlsdGVyZWRUb2Rvcy5tYXAodG9kbyA9PlxuICAgICAgICAgICAgPFRvZG9J
dGVtIGtleT17dG9kby5pZH0gdG9kbz17dG9kb30gey4uLmFjdGlvbnN9IC8+XG4gICAgICAgICAg
KX1cbiAgICAgICAgPC91bD5cbiAgICAgICAge3RoaXMucmVuZGVyRm9vdGVyKGNvbXBsZXRlZENv
dW50KX1cbiAgICAgIDwvc2VjdGlvbj5cbiAgICApXG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNL
IEZPT1RFUiAqKlxuICoqIC4vc3JjL2NvbXBvbmVudHMvTWFpblNlY3Rpb24uanNcbiAqKi8iLCJp
bXBvcnQgUmVhY3QsIHsgQ29tcG9uZW50LCBQcm9wVHlwZXMgfSBmcm9tICdyZWFjdCdcbmltcG9y
dCBjbGFzc25hbWVzIGZyb20gJ2NsYXNzbmFtZXMnXG5pbXBvcnQgVG9kb1RleHRJbnB1dCBmcm9t
ICcuL1RvZG9UZXh0SW5wdXQnXG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFRvZG9JdGVtIGV4dGVu
ZHMgQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtcbiAgICB0b2RvOiBQcm9wVHlw
ZXMub2JqZWN0LmlzUmVxdWlyZWQsXG4gICAgZWRpdFRvZG86IFByb3BUeXBlcy5mdW5jLmlzUmVx
dWlyZWQsXG4gICAgZGVsZXRlVG9kbzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBj
b21wbGV0ZVRvZG86IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbiAgfVxuXG4gIHN0YXRlID0g
e1xuICAgIGVkaXRpbmc6IGZhbHNlXG4gIH1cblxuICBoYW5kbGVEb3VibGVDbGljayA9ICgpID0+
IHtcbiAgICB0aGlzLnNldFN0YXRlKHsgZWRpdGluZzogdHJ1ZSB9KVxuICB9XG5cbiAgaGFuZGxl
U2F2ZSA9IChpZCwgdGV4dCkgPT4ge1xuICAgIGlmICh0ZXh0Lmxlbmd0aCA9PT0gMCkge1xuICAg
ICAgdGhpcy5wcm9wcy5kZWxldGVUb2RvKGlkKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnBy
b3BzLmVkaXRUb2RvKGlkLCB0ZXh0KVxuICAgIH1cbiAgICB0aGlzLnNldFN0YXRlKHsgZWRpdGlu
ZzogZmFsc2UgfSlcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IHRvZG8sIGNvbXBs
ZXRlVG9kbywgZGVsZXRlVG9kbyB9ID0gdGhpcy5wcm9wc1xuXG4gICAgbGV0IGVsZW1lbnRcbiAg
ICBpZiAodGhpcy5zdGF0ZS5lZGl0aW5nKSB7XG4gICAgICBlbGVtZW50ID0gKFxuICAgICAgICA8
VG9kb1RleHRJbnB1dCB0ZXh0PXt0b2RvLnRleHR9XG4gICAgICAgICAgICAgICAgICAgICAgIGVk
aXRpbmc9e3RoaXMuc3RhdGUuZWRpdGluZ31cbiAgICAgICAgICAgICAgICAgICAgICAgb25TYXZl
PXsodGV4dCkgPT4gdGhpcy5oYW5kbGVTYXZlKHRvZG8uaWQsIHRleHQpfSAvPlxuICAgICAgKVxu
ICAgIH0gZWxzZSB7XG4gICAgICBlbGVtZW50ID0gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1c
InZpZXdcIj5cbiAgICAgICAgICA8aW5wdXQgY2xhc3NOYW1lPVwidG9nZ2xlXCJcbiAgICAgICAg
ICAgICAgICAgdHlwZT1cImNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgY2hlY2tlZD17dG9k
by5jb21wbGV0ZWR9XG4gICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoKSA9PiBjb21wbGV0ZVRv
ZG8odG9kby5pZCl9IC8+XG4gICAgICAgICAgPGxhYmVsIG9uRG91YmxlQ2xpY2s9e3RoaXMuaGFu
ZGxlRG91YmxlQ2xpY2t9PlxuICAgICAgICAgICAge3RvZG8udGV4dH1cbiAgICAgICAgICA8L2xh
YmVsPlxuICAgICAgICAgIDxidXR0b24gY2xhc3NOYW1lPVwiZGVzdHJveVwiXG4gICAgICAgICAg
ICAgICAgICBvbkNsaWNrPXsoKSA9PiBkZWxldGVUb2RvKHRvZG8uaWQpfSAvPlxuICAgICAgICA8
L2Rpdj5cbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGxpIGNsYXNzTmFt
ZT17Y2xhc3NuYW1lcyh7XG4gICAgICAgIGNvbXBsZXRlZDogdG9kby5jb21wbGV0ZWQsXG4gICAg
ICAgIGVkaXRpbmc6IHRoaXMuc3RhdGUuZWRpdGluZ1xuICAgICAgfSl9PlxuICAgICAgICB7ZWxl
bWVudH1cbiAgICAgIDwvbGk+XG4gICAgKVxuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09U
RVIgKipcbiAqKiAuL3NyYy9jb21wb25lbnRzL1RvZG9JdGVtLmpzXG4gKiovIiwiaW1wb3J0IFJl
YWN0LCB7IFByb3BUeXBlcyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgYmluZEFjdGlvbkNyZWF0
b3JzIH0gZnJvbSAncmVkdXgnXG5pbXBvcnQgeyBjb25uZWN0IH0gZnJvbSAncmVhY3QtcmVkdXgn
XG5pbXBvcnQgSGVhZGVyIGZyb20gJy4uL2NvbXBvbmVudHMvSGVhZGVyJ1xuaW1wb3J0IE1haW5T
ZWN0aW9uIGZyb20gJy4uL2NvbXBvbmVudHMvTWFpblNlY3Rpb24nXG5pbXBvcnQgKiBhcyBUb2Rv
QWN0aW9ucyBmcm9tICcuLi9hY3Rpb25zJ1xuXG5jb25zdCBBcHAgPSAoe3RvZG9zLCBhY3Rpb25z
fSkgPT4gKFxuICA8ZGl2PlxuICAgIDxIZWFkZXIgYWRkVG9kbz17YWN0aW9ucy5hZGRUb2RvfSAv
PlxuICAgIDxNYWluU2VjdGlvbiB0b2Rvcz17dG9kb3N9IGFjdGlvbnM9e2FjdGlvbnN9IC8+XG4g
IDwvZGl2PlxuKVxuXG5BcHAucHJvcFR5cGVzID0ge1xuICB0b2RvczogUHJvcFR5cGVzLmFycmF5
LmlzUmVxdWlyZWQsXG4gIGFjdGlvbnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZFxufVxu
XG5jb25zdCBtYXBTdGF0ZVRvUHJvcHMgPSBzdGF0ZSA9PiAoe1xuICB0b2Rvczogc3RhdGUudG9k
b3Ncbn0pXG5cbmNvbnN0IG1hcERpc3BhdGNoVG9Qcm9wcyA9IGRpc3BhdGNoID0+ICh7XG4gICAg
YWN0aW9uczogYmluZEFjdGlvbkNyZWF0b3JzKFRvZG9BY3Rpb25zLCBkaXNwYXRjaClcbn0pXG5c
bmV4cG9ydCBkZWZhdWx0IGNvbm5lY3QoXG4gIG1hcFN0YXRlVG9Qcm9wcyxcbiAgbWFwRGlzcGF0
Y2hUb1Byb3BzXG4pKEFwcClcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4vc3Jj
L2NvbnRhaW5lcnMvQXBwLmpzXG4gKiovIiwiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0J1xuaW1w
b3J0IHsgcmVuZGVyIH0gZnJvbSAncmVhY3QtZG9tJ1xuaW1wb3J0IHsgY3JlYXRlU3RvcmUgfSBm
cm9tICdyZWR1eCdcbmltcG9ydCB7IFByb3ZpZGVyIH0gZnJvbSAncmVhY3QtcmVkdXgnXG5pbXBv
cnQgQXBwIGZyb20gJy4vY29udGFpbmVycy9BcHAnXG5pbXBvcnQgcmVkdWNlciBmcm9tICcuL3Jl
ZHVjZXJzJ1xuaW1wb3J0ICd0b2RvbXZjLWFwcC1jc3MvaW5kZXguY3NzJ1xuXG5jb25zdCBzdG9y
ZSA9IGNyZWF0ZVN0b3JlKHJlZHVjZXIpXG5cbnJlbmRlcihcbiAgPFByb3ZpZGVyIHN0b3JlPXtz
dG9yZX0+XG4gICAgPEFwcCAvPlxuICA8L1Byb3ZpZGVyPixcbiAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Jvb3QnKVxuKVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMv
aW5kZXguanNcbiAqKi8iLCJpbXBvcnQgeyBjb21iaW5lUmVkdWNlcnMgfSBmcm9tICdyZWR1eCdc
bmltcG9ydCB0b2RvcyBmcm9tICcuL3RvZG9zJ1xuXG5jb25zdCByb290UmVkdWNlciA9IGNvbWJp
bmVSZWR1Y2Vycyh7XG4gIHRvZG9zXG59KVxuXG5leHBvcnQgZGVmYXVsdCByb290UmVkdWNlclxu
XG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvcmVkdWNlcnMvaW5kZXguanNc
biAqKi8iLCJpbXBvcnQgeyBBRERfVE9ETywgREVMRVRFX1RPRE8sIEVESVRfVE9ETywgQ09NUExF
VEVfVE9ETywgQ09NUExFVEVfQUxMLCBDTEVBUl9DT01QTEVURUQgfSBmcm9tICcuLi9jb25zdGFu
dHMvQWN0aW9uVHlwZXMnXG5cbmNvbnN0IGluaXRpYWxTdGF0ZSA9IFtdXG5cbmV4cG9ydCBkZWZh
dWx0IGZ1bmN0aW9uIHRvZG9zKHN0YXRlID0gaW5pdGlhbFN0YXRlLCBhY3Rpb24pIHtcbiAgc3dp
dGNoIChhY3Rpb24udHlwZSkge1xuICAgIGNhc2UgQUREX1RPRE86XG4gICAgICByZXR1cm4gW1xu
ICAgICAgICB7XG4gICAgICAgICAgaWQ6IHN0YXRlLnJlZHVjZSgobWF4SWQsIHRvZG8pID0+IE1h
dGgubWF4KHRvZG8uaWQsIG1heElkKSwgLTEpICsgMSxcbiAgICAgICAgICBjb21wbGV0ZWQ6IGZh
bHNlLFxuICAgICAgICAgIHRleHQ6IGFjdGlvbi50ZXh0XG4gICAgICAgIH0sXG4gICAgICAgIC4u
LnN0YXRlXG4gICAgICBdXG5cbiAgICBjYXNlIERFTEVURV9UT0RPOlxuICAgICAgcmV0dXJuIHN0
YXRlLmZpbHRlcih0b2RvID0+XG4gICAgICAgIHRvZG8uaWQgIT09IGFjdGlvbi5pZFxuICAgICAg
KVxuXG4gICAgY2FzZSBFRElUX1RPRE86XG4gICAgICByZXR1cm4gc3RhdGUubWFwKHRvZG8gPT5c
biAgICAgICAgdG9kby5pZCA9PT0gYWN0aW9uLmlkID9cbiAgICAgICAgICB7IC4uLnRvZG8sIHRl
eHQ6IGFjdGlvbi50ZXh0IH0gOlxuICAgICAgICAgIHRvZG9cbiAgICAgIClcblxuICAgIGNhc2Ug
Q09NUExFVEVfVE9ETzpcbiAgICAgIHJldHVybiBzdGF0ZS5tYXAodG9kbyA9PlxuICAgICAgICB0
b2RvLmlkID09PSBhY3Rpb24uaWQgP1xuICAgICAgICAgIHsgLi4udG9kbywgY29tcGxldGVkOiAh
dG9kby5jb21wbGV0ZWQgfSA6XG4gICAgICAgICAgdG9kb1xuICAgICAgKVxuXG4gICAgY2FzZSBD
T01QTEVURV9BTEw6XG4gICAgICBjb25zdCBhcmVBbGxNYXJrZWQgPSBzdGF0ZS5ldmVyeSh0b2Rv
ID0+IHRvZG8uY29tcGxldGVkKVxuICAgICAgcmV0dXJuIHN0YXRlLm1hcCh0b2RvID0+ICh7XG4g
ICAgICAgIC4uLnRvZG8sXG4gICAgICAgIGNvbXBsZXRlZDogIWFyZUFsbE1hcmtlZFxuICAgICAg
fSkpXG5cbiAgICBjYXNlIENMRUFSX0NPTVBMRVRFRDpcbiAgICAgIHJldHVybiBzdGF0ZS5maWx0
ZXIodG9kbyA9PiB0b2RvLmNvbXBsZXRlZCA9PT0gZmFsc2UpXG5cbiAgICBkZWZhdWx0OlxuICAg
ICAgcmV0dXJuIHN0YXRlXG4gIH1cbn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoq
IC4vc3JjL3JlZHVjZXJzL3RvZG9zLmpzXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuLyogZXNsaW50
LWRpc2FibGUgbm8tdW51c2VkLXZhcnMgKi9cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5w
cm90b3R5cGUuaGFzT3duUHJvcGVydHk7XG52YXIgcHJvcElzRW51bWVyYWJsZSA9IE9iamVjdC5w
cm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG5cbmZ1bmN0aW9uIHRvT2JqZWN0KHZhbCkg
e1xuXHRpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0dGhyb3cg
bmV3IFR5cGVFcnJvcignT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGggbnVsbCBv
ciB1bmRlZmluZWQnKTtcblx0fVxuXG5cdHJldHVybiBPYmplY3QodmFsKTtcbn1cblxuZnVuY3Rp
b24gc2hvdWxkVXNlTmF0aXZlKCkge1xuXHR0cnkge1xuXHRcdGlmICghT2JqZWN0LmFzc2lnbikg
e1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdC8vIERldGVjdCBidWdneSBwcm9w
ZXJ0eSBlbnVtZXJhdGlvbiBvcmRlciBpbiBvbGRlciBWOCB2ZXJzaW9ucy5cblxuXHRcdC8vIGh0
dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTQxMThcblx0XHR2
YXIgdGVzdDEgPSBuZXcgU3RyaW5nKCdhYmMnKTsgIC8vIGVzbGludC1kaXNhYmxlLWxpbmVcblx0
XHR0ZXN0MVs1XSA9ICdkZSc7XG5cdFx0aWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRl
c3QxKVswXSA9PT0gJzUnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0Ly8g
aHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzA1NlxuXHRc
dHZhciB0ZXN0MiA9IHt9O1xuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkrKykge1xuXHRc
dFx0dGVzdDJbJ18nICsgU3RyaW5nLmZyb21DaGFyQ29kZShpKV0gPSBpO1xuXHRcdH1cblx0XHR2
YXIgb3JkZXIyID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGVzdDIpLm1hcChmdW5jdGlv
biAobikge1xuXHRcdFx0cmV0dXJuIHRlc3QyW25dO1xuXHRcdH0pO1xuXHRcdGlmIChvcmRlcjIu
am9pbignJykgIT09ICcwMTIzNDU2Nzg5Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1c
blxuXHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lk
PTMwNTZcblx0XHR2YXIgdGVzdDMgPSB7fTtcblx0XHQnYWJjZGVmZ2hpamtsbW5vcHFyc3QnLnNw
bGl0KCcnKS5mb3JFYWNoKGZ1bmN0aW9uIChsZXR0ZXIpIHtcblx0XHRcdHRlc3QzW2xldHRlcl0g
PSBsZXR0ZXI7XG5cdFx0fSk7XG5cdFx0aWYgKE9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30s
IHRlc3QzKSkuam9pbignJykgIT09XG5cdFx0XHRcdCdhYmNkZWZnaGlqa2xtbm9wcXJzdCcpIHtc
blx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHRyZXR1cm4gdHJ1ZTtcblx0fSBjYXRj
aCAoZSkge1xuXHRcdC8vIFdlIGRvbid0IGV4cGVjdCBhbnkgb2YgdGhlIGFib3ZlIHRvIHRocm93
LCBidXQgYmV0dGVyIHRvIGJlIHNhZmUuXG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG59XG5cbm1v
ZHVsZS5leHBvcnRzID0gc2hvdWxkVXNlTmF0aXZlKCkgPyBPYmplY3QuYXNzaWduIDogZnVuY3Rp
b24gKHRhcmdldCwgc291cmNlKSB7XG5cdHZhciBmcm9tO1xuXHR2YXIgdG8gPSB0b09iamVjdCh0
YXJnZXQpO1xuXHR2YXIgc3ltYm9scztcblxuXHRmb3IgKHZhciBzID0gMTsgcyA8IGFyZ3VtZW50
cy5sZW5ndGg7IHMrKykge1xuXHRcdGZyb20gPSBPYmplY3QoYXJndW1lbnRzW3NdKTtcblxuXHRc
dGZvciAodmFyIGtleSBpbiBmcm9tKSB7XG5cdFx0XHRpZiAoaGFzT3duUHJvcGVydHkuY2FsbChm
cm9tLCBrZXkpKSB7XG5cdFx0XHRcdHRvW2tleV0gPSBmcm9tW2tleV07XG5cdFx0XHR9XG5cdFx0
fVxuXG5cdFx0aWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcblx0XHRcdHN5bWJv
bHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKGZyb20pO1xuXHRcdFx0Zm9yICh2YXIg
aSA9IDA7IGkgPCBzeW1ib2xzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGlmIChwcm9wSXNFbnVt
ZXJhYmxlLmNhbGwoZnJvbSwgc3ltYm9sc1tpXSkpIHtcblx0XHRcdFx0XHR0b1tzeW1ib2xzW2ld
XSA9IGZyb21bc3ltYm9sc1tpXV07XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxu
XHRyZXR1cm4gdG87XG59O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBG
T09URVJcbiAqKiAuL34vcmVhY3Qtc2NyaXB0cy9+L29iamVjdC1hc3NpZ24vaW5kZXguanNcbiAq
KiBtb2R1bGUgaWQgPSAyMDhcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3Ry
aWN0JztcblxuLy9UaGlzIGZpbGUgY29udGFpbnMgdGhlIEVTNiBleHRlbnNpb25zIHRvIHRoZSBj
b3JlIFByb21pc2VzL0ErIEFQSVxuXG52YXIgUHJvbWlzZSA9IHJlcXVpcmUoJy4vY29yZS5qcycp
O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFByb21pc2U7XG5cbi8qIFN0YXRpYyBGdW5jdGlvbnMgKi9c
blxudmFyIFRSVUUgPSB2YWx1ZVByb21pc2UodHJ1ZSk7XG52YXIgRkFMU0UgPSB2YWx1ZVByb21p
c2UoZmFsc2UpO1xudmFyIE5VTEwgPSB2YWx1ZVByb21pc2UobnVsbCk7XG52YXIgVU5ERUZJTkVE
ID0gdmFsdWVQcm9taXNlKHVuZGVmaW5lZCk7XG52YXIgWkVSTyA9IHZhbHVlUHJvbWlzZSgwKTtc
bnZhciBFTVBUWVNUUklORyA9IHZhbHVlUHJvbWlzZSgnJyk7XG5cbmZ1bmN0aW9uIHZhbHVlUHJv
bWlzZSh2YWx1ZSkge1xuICB2YXIgcCA9IG5ldyBQcm9taXNlKFByb21pc2UuXzYxKTtcbiAgcC5f
ODEgPSAxO1xuICBwLl82NSA9IHZhbHVlO1xuICByZXR1cm4gcDtcbn1cblByb21pc2UucmVzb2x2
ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICBpZiAodmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlKSBy
ZXR1cm4gdmFsdWU7XG5cbiAgaWYgKHZhbHVlID09PSBudWxsKSByZXR1cm4gTlVMTDtcbiAgaWYg
KHZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiBVTkRFRklORUQ7XG4gIGlmICh2YWx1ZSA9PT0g
dHJ1ZSkgcmV0dXJuIFRSVUU7XG4gIGlmICh2YWx1ZSA9PT0gZmFsc2UpIHJldHVybiBGQUxTRTtc
biAgaWYgKHZhbHVlID09PSAwKSByZXR1cm4gWkVSTztcbiAgaWYgKHZhbHVlID09PSAnJykgcmV0
dXJuIEVNUFRZU1RSSU5HO1xuXG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnIHx8IHR5
cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRyeSB7XG4gICAgICB2YXIgdGhlbiA9
IHZhbHVlLnRoZW47XG4gICAgICBpZiAodHlwZW9mIHRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAg
ICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKHRoZW4uYmluZCh2YWx1ZSkpO1xuICAgICAgfVxuICAg
IH0gY2F0Y2ggKGV4KSB7XG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29s
dmUsIHJlamVjdCkge1xuICAgICAgICByZWplY3QoZXgpO1xuICAgICAgfSk7XG4gICAgfVxuICB9
XG4gIHJldHVybiB2YWx1ZVByb21pc2UodmFsdWUpO1xufTtcblxuUHJvbWlzZS5hbGwgPSBmdW5j
dGlvbiAoYXJyKSB7XG4gIHZhciBhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJy
KTtcblxuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xu
ICAgIGlmIChhcmdzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHJlc29sdmUoW10pO1xuICAgIHZhciBy
ZW1haW5pbmcgPSBhcmdzLmxlbmd0aDtcbiAgICBmdW5jdGlvbiByZXMoaSwgdmFsKSB7XG4gICAg
ICBpZiAodmFsICYmICh0eXBlb2YgdmFsID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgdmFsID09PSAn
ZnVuY3Rpb24nKSkge1xuICAgICAgICBpZiAodmFsIGluc3RhbmNlb2YgUHJvbWlzZSAmJiB2YWwu
dGhlbiA9PT0gUHJvbWlzZS5wcm90b3R5cGUudGhlbikge1xuICAgICAgICAgIHdoaWxlICh2YWwu
XzgxID09PSAzKSB7XG4gICAgICAgICAgICB2YWwgPSB2YWwuXzY1O1xuICAgICAgICAgIH1cbiAg
ICAgICAgICBpZiAodmFsLl84MSA9PT0gMSkgcmV0dXJuIHJlcyhpLCB2YWwuXzY1KTtcbiAgICAg
ICAgICBpZiAodmFsLl84MSA9PT0gMikgcmVqZWN0KHZhbC5fNjUpO1xuICAgICAgICAgIHZhbC50
aGVuKGZ1bmN0aW9uICh2YWwpIHtcbiAgICAgICAgICAgIHJlcyhpLCB2YWwpO1xuICAgICAgICAg
IH0sIHJlamVjdCk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAg
ICAgIHZhciB0aGVuID0gdmFsLnRoZW47XG4gICAgICAgICAgaWYgKHR5cGVvZiB0aGVuID09PSAn
ZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB2YXIgcCA9IG5ldyBQcm9taXNlKHRoZW4uYmluZCh2
YWwpKTtcbiAgICAgICAgICAgIHAudGhlbihmdW5jdGlvbiAodmFsKSB7XG4gICAgICAgICAgICAg
IHJlcyhpLCB2YWwpO1xuICAgICAgICAgICAgfSwgcmVqZWN0KTtcbiAgICAgICAgICAgIHJldHVy
bjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGFyZ3NbaV0gPSB2YWw7
XG4gICAgICBpZiAoLS1yZW1haW5pbmcgPT09IDApIHtcbiAgICAgICAgcmVzb2x2ZShhcmdzKTtc
biAgICAgIH1cbiAgICB9XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsr
KSB7XG4gICAgICByZXMoaSwgYXJnc1tpXSk7XG4gICAgfVxuICB9KTtcbn07XG5cblByb21pc2Uu
cmVqZWN0ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlv
biAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgcmVqZWN0KHZhbHVlKTtcbiAgfSk7XG59O1xuXG5Q
cm9taXNlLnJhY2UgPSBmdW5jdGlvbiAodmFsdWVzKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShm
dW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgdmFsdWVzLmZvckVhY2goZnVuY3Rpb24o
dmFsdWUpe1xuICAgICAgUHJvbWlzZS5yZXNvbHZlKHZhbHVlKS50aGVuKHJlc29sdmUsIHJlamVj
dCk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuLyogUHJvdG90eXBlIE1ldGhvZHMgKi9cblxuUHJv
bWlzZS5wcm90b3R5cGVbJ2NhdGNoJ10gPSBmdW5jdGlvbiAob25SZWplY3RlZCkge1xuICByZXR1
cm4gdGhpcy50aGVuKG51bGwsIG9uUmVqZWN0ZWQpO1xufTtcblxuXG5cbi8qKioqKioqKioqKioq
KioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LXNjcmlwdHMvfi9wcm9taXNl
L2xpYi9lczYtZXh0ZW5zaW9ucy5qc1xuICoqIG1vZHVsZSBpZCA9IDIwOVxuICoqIG1vZHVsZSBj
aHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG52YXIgUHJvbWlzZSA9IHJlcXVpcmUo
Jy4vY29yZScpO1xuXG52YXIgREVGQVVMVF9XSElURUxJU1QgPSBbXG4gIFJlZmVyZW5jZUVycm9y
LFxuICBUeXBlRXJyb3IsXG4gIFJhbmdlRXJyb3Jcbl07XG5cbnZhciBlbmFibGVkID0gZmFsc2U7
XG5leHBvcnRzLmRpc2FibGUgPSBkaXNhYmxlO1xuZnVuY3Rpb24gZGlzYWJsZSgpIHtcbiAgZW5h
YmxlZCA9IGZhbHNlO1xuICBQcm9taXNlLl8xMCA9IG51bGw7XG4gIFByb21pc2UuXzk3ID0gbnVs
bDtcbn1cblxuZXhwb3J0cy5lbmFibGUgPSBlbmFibGU7XG5mdW5jdGlvbiBlbmFibGUob3B0aW9u
cykge1xuICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcbiAgaWYgKGVuYWJsZWQpIGRpc2FibGUo
KTtcbiAgZW5hYmxlZCA9IHRydWU7XG4gIHZhciBpZCA9IDA7XG4gIHZhciBkaXNwbGF5SWQgPSAw
O1xuICB2YXIgcmVqZWN0aW9ucyA9IHt9O1xuICBQcm9taXNlLl8xMCA9IGZ1bmN0aW9uIChwcm9t
aXNlKSB7XG4gICAgaWYgKFxuICAgICAgcHJvbWlzZS5fODEgPT09IDIgJiYgLy8gSVMgUkVKRUNU
RURcbiAgICAgIHJlamVjdGlvbnNbcHJvbWlzZS5fNzJdXG4gICAgKSB7XG4gICAgICBpZiAocmVq
ZWN0aW9uc1twcm9taXNlLl83Ml0ubG9nZ2VkKSB7XG4gICAgICAgIG9uSGFuZGxlZChwcm9taXNl
Ll83Mik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjbGVhclRpbWVvdXQocmVqZWN0aW9uc1tw
cm9taXNlLl83Ml0udGltZW91dCk7XG4gICAgICB9XG4gICAgICBkZWxldGUgcmVqZWN0aW9uc1tw
cm9taXNlLl83Ml07XG4gICAgfVxuICB9O1xuICBQcm9taXNlLl85NyA9IGZ1bmN0aW9uIChwcm9t
aXNlLCBlcnIpIHtcbiAgICBpZiAocHJvbWlzZS5fNDUgPT09IDApIHsgLy8gbm90IHlldCBoYW5k
bGVkXG4gICAgICBwcm9taXNlLl83MiA9IGlkKys7XG4gICAgICByZWplY3Rpb25zW3Byb21pc2Uu
XzcyXSA9IHtcbiAgICAgICAgZGlzcGxheUlkOiBudWxsLFxuICAgICAgICBlcnJvcjogZXJyLFxu
ICAgICAgICB0aW1lb3V0OiBzZXRUaW1lb3V0KFxuICAgICAgICAgIG9uVW5oYW5kbGVkLmJpbmQo
bnVsbCwgcHJvbWlzZS5fNzIpLFxuICAgICAgICAgIC8vIEZvciByZWZlcmVuY2UgZXJyb3JzIGFu
ZCB0eXBlIGVycm9ycywgdGhpcyBhbG1vc3QgYWx3YXlzXG4gICAgICAgICAgLy8gbWVhbnMgdGhl
IHByb2dyYW1tZXIgbWFkZSBhIG1pc3Rha2UsIHNvIGxvZyB0aGVtIGFmdGVyIGp1c3RcbiAgICAg
ICAgICAvLyAxMDBtc1xuICAgICAgICAgIC8vIG90aGVyd2lzZSwgd2FpdCAyIHNlY29uZHMgdG8g
c2VlIGlmIHRoZXkgZ2V0IGhhbmRsZWRcbiAgICAgICAgICBtYXRjaFdoaXRlbGlzdChlcnIsIERF
RkFVTFRfV0hJVEVMSVNUKVxuICAgICAgICAgICAgPyAxMDBcbiAgICAgICAgICAgIDogMjAwMFxu
ICAgICAgICApLFxuICAgICAgICBsb2dnZWQ6IGZhbHNlXG4gICAgICB9O1xuICAgIH1cbiAgfTtc
biAgZnVuY3Rpb24gb25VbmhhbmRsZWQoaWQpIHtcbiAgICBpZiAoXG4gICAgICBvcHRpb25zLmFs
bFJlamVjdGlvbnMgfHxcbiAgICAgIG1hdGNoV2hpdGVsaXN0KFxuICAgICAgICByZWplY3Rpb25z
W2lkXS5lcnJvcixcbiAgICAgICAgb3B0aW9ucy53aGl0ZWxpc3QgfHwgREVGQVVMVF9XSElURUxJ
U1RcbiAgICAgIClcbiAgICApIHtcbiAgICAgIHJlamVjdGlvbnNbaWRdLmRpc3BsYXlJZCA9IGRp
c3BsYXlJZCsrO1xuICAgICAgaWYgKG9wdGlvbnMub25VbmhhbmRsZWQpIHtcbiAgICAgICAgcmVq
ZWN0aW9uc1tpZF0ubG9nZ2VkID0gdHJ1ZTtcbiAgICAgICAgb3B0aW9ucy5vblVuaGFuZGxlZChc
biAgICAgICAgICByZWplY3Rpb25zW2lkXS5kaXNwbGF5SWQsXG4gICAgICAgICAgcmVqZWN0aW9u
c1tpZF0uZXJyb3JcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlamVjdGlv
bnNbaWRdLmxvZ2dlZCA9IHRydWU7XG4gICAgICAgIGxvZ0Vycm9yKFxuICAgICAgICAgIHJlamVj
dGlvbnNbaWRdLmRpc3BsYXlJZCxcbiAgICAgICAgICByZWplY3Rpb25zW2lkXS5lcnJvclxuICAg
ICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBmdW5jdGlvbiBvbkhhbmRsZWQoaWQpIHtc
biAgICBpZiAocmVqZWN0aW9uc1tpZF0ubG9nZ2VkKSB7XG4gICAgICBpZiAob3B0aW9ucy5vbkhh
bmRsZWQpIHtcbiAgICAgICAgb3B0aW9ucy5vbkhhbmRsZWQocmVqZWN0aW9uc1tpZF0uZGlzcGxh
eUlkLCByZWplY3Rpb25zW2lkXS5lcnJvcik7XG4gICAgICB9IGVsc2UgaWYgKCFyZWplY3Rpb25z
W2lkXS5vblVuaGFuZGxlZCkge1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgJ1By
b21pc2UgUmVqZWN0aW9uIEhhbmRsZWQgKGlkOiAnICsgcmVqZWN0aW9uc1tpZF0uZGlzcGxheUlk
ICsgJyk6J1xuICAgICAgICApO1xuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgJyAg
VGhpcyBtZWFucyB5b3UgY2FuIGlnbm9yZSBhbnkgcHJldmlvdXMgbWVzc2FnZXMgb2YgdGhlIGZv
cm0gXCJQb3NzaWJsZSBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb25cIiB3aXRoIGlkICcgK1xu
ICAgICAgICAgIHJlamVjdGlvbnNbaWRdLmRpc3BsYXlJZCArICcuJ1xuICAgICAgICApO1xuICAg
ICAgfVxuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBsb2dFcnJvcihpZCwgZXJyb3IpIHtcbiAg
Y29uc29sZS53YXJuKCdQb3NzaWJsZSBVbmhhbmRsZWQgUHJvbWlzZSBSZWplY3Rpb24gKGlkOiAn
ICsgaWQgKyAnKTonKTtcbiAgdmFyIGVyclN0ciA9IChlcnJvciAmJiAoZXJyb3Iuc3RhY2sgfHwg
ZXJyb3IpKSArICcnO1xuICBlcnJTdHIuc3BsaXQoJ1xcbicpLmZvckVhY2goZnVuY3Rpb24gKGxp
bmUpIHtcbiAgICBjb25zb2xlLndhcm4oJyAgJyArIGxpbmUpO1xuICB9KTtcbn1cblxuZnVuY3Rp
b24gbWF0Y2hXaGl0ZWxpc3QoZXJyb3IsIGxpc3QpIHtcbiAgcmV0dXJuIGxpc3Quc29tZShmdW5j
dGlvbiAoY2xzKSB7XG4gICAgcmV0dXJuIGVycm9yIGluc3RhbmNlb2YgY2xzO1xuICB9KTtcbn1c
blxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFj
dC1zY3JpcHRzL34vcHJvbWlzZS9saWIvcmVqZWN0aW9uLXRyYWNraW5nLmpzXG4gKiogbW9kdWxl
IGlkID0gMjEwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJtb2R1bGUuZXhwb3J0cyA9
IGZ1bmN0aW9uKG1vZHVsZSkge1xyXG5cdGlmKCFtb2R1bGUud2VicGFja1BvbHlmaWxsKSB7XHJc
blx0XHRtb2R1bGUuZGVwcmVjYXRlID0gZnVuY3Rpb24oKSB7fTtcclxuXHRcdG1vZHVsZS5wYXRo
cyA9IFtdO1xyXG5cdFx0Ly8gbW9kdWxlLnBhcmVudCA9IHVuZGVmaW5lZCBieSBkZWZhdWx0XHJc
blx0XHRtb2R1bGUuY2hpbGRyZW4gPSBbXTtcclxuXHRcdG1vZHVsZS53ZWJwYWNrUG9seWZpbGwg
PSAxO1xyXG5cdH1cclxuXHRyZXR1cm4gbW9kdWxlO1xyXG59XHJcblxuXG5cbi8qKioqKioqKioq
KioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogKHdlYnBhY2spL2J1aWxkaW4vbW9kdWxl
LmpzXG4gKiogbW9kdWxlIGlkID0gMjExXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIo
ZnVuY3Rpb24oc2VsZikge1xuICAndXNlIHN0cmljdCc7XG5cbiAgaWYgKHNlbGYuZmV0Y2gpIHtc
biAgICByZXR1cm5cbiAgfVxuXG4gIHZhciBzdXBwb3J0ID0ge1xuICAgIHNlYXJjaFBhcmFtczog
J1VSTFNlYXJjaFBhcmFtcycgaW4gc2VsZixcbiAgICBpdGVyYWJsZTogJ1N5bWJvbCcgaW4gc2Vs
ZiAmJiAnaXRlcmF0b3InIGluIFN5bWJvbCxcbiAgICBibG9iOiAnRmlsZVJlYWRlcicgaW4gc2Vs
ZiAmJiAnQmxvYicgaW4gc2VsZiAmJiAoZnVuY3Rpb24oKSB7XG4gICAgICB0cnkge1xuICAgICAg
ICBuZXcgQmxvYigpXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICB9IGNhdGNoKGUpIHtcbiAg
ICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfSkoKSxcbiAgICBmb3JtRGF0YTogJ0Zv
cm1EYXRhJyBpbiBzZWxmLFxuICAgIGFycmF5QnVmZmVyOiAnQXJyYXlCdWZmZXInIGluIHNlbGZc
biAgfVxuXG4gIGZ1bmN0aW9uIG5vcm1hbGl6ZU5hbWUobmFtZSkge1xuICAgIGlmICh0eXBlb2Yg
bmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIG5hbWUgPSBTdHJpbmcobmFtZSlcbiAgICB9XG4g
ICAgaWYgKC9bXmEtejAtOVxcLSMkJSYnKisuXFxeX2B8fl0vaS50ZXN0KG5hbWUpKSB7XG4gICAg
ICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGNoYXJhY3RlciBpbiBoZWFkZXIgZmllbGQg
bmFtZScpXG4gICAgfVxuICAgIHJldHVybiBuYW1lLnRvTG93ZXJDYXNlKClcbiAgfVxuXG4gIGZ1
bmN0aW9uIG5vcm1hbGl6ZVZhbHVlKHZhbHVlKSB7XG4gICAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0g
J3N0cmluZycpIHtcbiAgICAgIHZhbHVlID0gU3RyaW5nKHZhbHVlKVxuICAgIH1cbiAgICByZXR1
cm4gdmFsdWVcbiAgfVxuXG4gIC8vIEJ1aWxkIGEgZGVzdHJ1Y3RpdmUgaXRlcmF0b3IgZm9yIHRo
ZSB2YWx1ZSBsaXN0XG4gIGZ1bmN0aW9uIGl0ZXJhdG9yRm9yKGl0ZW1zKSB7XG4gICAgdmFyIGl0
ZXJhdG9yID0ge1xuICAgICAgbmV4dDogZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9
IGl0ZW1zLnNoaWZ0KClcbiAgICAgICAgcmV0dXJuIHtkb25lOiB2YWx1ZSA9PT0gdW5kZWZpbmVk
LCB2YWx1ZTogdmFsdWV9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHN1cHBvcnQuaXRlcmFi
bGUpIHtcbiAgICAgIGl0ZXJhdG9yW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHtcbiAg
ICAgICAgcmV0dXJuIGl0ZXJhdG9yXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGl0ZXJh
dG9yXG4gIH1cblxuICBmdW5jdGlvbiBIZWFkZXJzKGhlYWRlcnMpIHtcbiAgICB0aGlzLm1hcCA9
IHt9XG5cbiAgICBpZiAoaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnMpIHtcbiAgICAgIGhlYWRl
cnMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgICAgICB0aGlzLmFwcGVuZChu
YW1lLCB2YWx1ZSlcbiAgICAgIH0sIHRoaXMpXG5cbiAgICB9IGVsc2UgaWYgKGhlYWRlcnMpIHtc
biAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGhlYWRlcnMpLmZvckVhY2goZnVuY3Rp
b24obmFtZSkge1xuICAgICAgICB0aGlzLmFwcGVuZChuYW1lLCBoZWFkZXJzW25hbWVdKVxuICAg
ICAgfSwgdGhpcylcbiAgICB9XG4gIH1cblxuICBIZWFkZXJzLnByb3RvdHlwZS5hcHBlbmQgPSBm
dW5jdGlvbihuYW1lLCB2YWx1ZSkge1xuICAgIG5hbWUgPSBub3JtYWxpemVOYW1lKG5hbWUpXG4g
ICAgdmFsdWUgPSBub3JtYWxpemVWYWx1ZSh2YWx1ZSlcbiAgICB2YXIgbGlzdCA9IHRoaXMubWFw
W25hbWVdXG4gICAgaWYgKCFsaXN0KSB7XG4gICAgICBsaXN0ID0gW11cbiAgICAgIHRoaXMubWFw
W25hbWVdID0gbGlzdFxuICAgIH1cbiAgICBsaXN0LnB1c2godmFsdWUpXG4gIH1cblxuICBIZWFk
ZXJzLnByb3RvdHlwZVsnZGVsZXRlJ10gPSBmdW5jdGlvbihuYW1lKSB7XG4gICAgZGVsZXRlIHRo
aXMubWFwW25vcm1hbGl6ZU5hbWUobmFtZSldXG4gIH1cblxuICBIZWFkZXJzLnByb3RvdHlwZS5n
ZXQgPSBmdW5jdGlvbihuYW1lKSB7XG4gICAgdmFyIHZhbHVlcyA9IHRoaXMubWFwW25vcm1hbGl6
ZU5hbWUobmFtZSldXG4gICAgcmV0dXJuIHZhbHVlcyA/IHZhbHVlc1swXSA6IG51bGxcbiAgfVxu
XG4gIEhlYWRlcnMucHJvdG90eXBlLmdldEFsbCA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICByZXR1
cm4gdGhpcy5tYXBbbm9ybWFsaXplTmFtZShuYW1lKV0gfHwgW11cbiAgfVxuXG4gIEhlYWRlcnMu
cHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICByZXR1cm4gdGhpcy5tYXAuaGFz
T3duUHJvcGVydHkobm9ybWFsaXplTmFtZShuYW1lKSlcbiAgfVxuXG4gIEhlYWRlcnMucHJvdG90
eXBlLnNldCA9IGZ1bmN0aW9uKG5hbWUsIHZhbHVlKSB7XG4gICAgdGhpcy5tYXBbbm9ybWFsaXpl
TmFtZShuYW1lKV0gPSBbbm9ybWFsaXplVmFsdWUodmFsdWUpXVxuICB9XG5cbiAgSGVhZGVycy5w
cm90b3R5cGUuZm9yRWFjaCA9IGZ1bmN0aW9uKGNhbGxiYWNrLCB0aGlzQXJnKSB7XG4gICAgT2Jq
ZWN0LmdldE93blByb3BlcnR5TmFtZXModGhpcy5tYXApLmZvckVhY2goZnVuY3Rpb24obmFtZSkg
e1xuICAgICAgdGhpcy5tYXBbbmFtZV0uZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkge1xuICAgICAg
ICBjYWxsYmFjay5jYWxsKHRoaXNBcmcsIHZhbHVlLCBuYW1lLCB0aGlzKVxuICAgICAgfSwgdGhp
cylcbiAgICB9LCB0aGlzKVxuICB9XG5cbiAgSGVhZGVycy5wcm90b3R5cGUua2V5cyA9IGZ1bmN0
aW9uKCkge1xuICAgIHZhciBpdGVtcyA9IFtdXG4gICAgdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHZh
bHVlLCBuYW1lKSB7IGl0ZW1zLnB1c2gobmFtZSkgfSlcbiAgICByZXR1cm4gaXRlcmF0b3JGb3Io
aXRlbXMpXG4gIH1cblxuICBIZWFkZXJzLnByb3RvdHlwZS52YWx1ZXMgPSBmdW5jdGlvbigpIHtc
biAgICB2YXIgaXRlbXMgPSBbXVxuICAgIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSkgeyBp
dGVtcy5wdXNoKHZhbHVlKSB9KVxuICAgIHJldHVybiBpdGVyYXRvckZvcihpdGVtcylcbiAgfVxu
XG4gIEhlYWRlcnMucHJvdG90eXBlLmVudHJpZXMgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgaXRl
bXMgPSBbXVxuICAgIHRoaXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkgeyBpdGVtcy5w
dXNoKFtuYW1lLCB2YWx1ZV0pIH0pXG4gICAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxuICB9
XG5cbiAgaWYgKHN1cHBvcnQuaXRlcmFibGUpIHtcbiAgICBIZWFkZXJzLnByb3RvdHlwZVtTeW1i
b2wuaXRlcmF0b3JdID0gSGVhZGVycy5wcm90b3R5cGUuZW50cmllc1xuICB9XG5cbiAgZnVuY3Rp
b24gY29uc3VtZWQoYm9keSkge1xuICAgIGlmIChib2R5LmJvZHlVc2VkKSB7XG4gICAgICByZXR1
cm4gUHJvbWlzZS5yZWplY3QobmV3IFR5cGVFcnJvcignQWxyZWFkeSByZWFkJykpXG4gICAgfVxu
ICAgIGJvZHkuYm9keVVzZWQgPSB0cnVlXG4gIH1cblxuICBmdW5jdGlvbiBmaWxlUmVhZGVyUmVh
ZHkocmVhZGVyKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJl
amVjdCkge1xuICAgICAgcmVhZGVyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXNv
bHZlKHJlYWRlci5yZXN1bHQpXG4gICAgICB9XG4gICAgICByZWFkZXIub25lcnJvciA9IGZ1bmN0
aW9uKCkge1xuICAgICAgICByZWplY3QocmVhZGVyLmVycm9yKVxuICAgICAgfVxuICAgIH0pXG4g
IH1cblxuICBmdW5jdGlvbiByZWFkQmxvYkFzQXJyYXlCdWZmZXIoYmxvYikge1xuICAgIHZhciBy
ZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpXG4gICAgcmVhZGVyLnJlYWRBc0FycmF5QnVmZmVyKGJs
b2IpXG4gICAgcmV0dXJuIGZpbGVSZWFkZXJSZWFkeShyZWFkZXIpXG4gIH1cblxuICBmdW5jdGlv
biByZWFkQmxvYkFzVGV4dChibG9iKSB7XG4gICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVy
KClcbiAgICByZWFkZXIucmVhZEFzVGV4dChibG9iKVxuICAgIHJldHVybiBmaWxlUmVhZGVyUmVh
ZHkocmVhZGVyKVxuICB9XG5cbiAgZnVuY3Rpb24gQm9keSgpIHtcbiAgICB0aGlzLmJvZHlVc2Vk
ID0gZmFsc2VcblxuICAgIHRoaXMuX2luaXRCb2R5ID0gZnVuY3Rpb24oYm9keSkge1xuICAgICAg
dGhpcy5fYm9keUluaXQgPSBib2R5XG4gICAgICBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcn
KSB7XG4gICAgICAgIHRoaXMuX2JvZHlUZXh0ID0gYm9keVxuICAgICAgfSBlbHNlIGlmIChzdXBw
b3J0LmJsb2IgJiYgQmxvYi5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAg
ICB0aGlzLl9ib2R5QmxvYiA9IGJvZHlcbiAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5mb3JtRGF0
YSAmJiBGb3JtRGF0YS5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xuICAgICAgICB0
aGlzLl9ib2R5Rm9ybURhdGEgPSBib2R5XG4gICAgICB9IGVsc2UgaWYgKHN1cHBvcnQuc2VhcmNo
UGFyYW1zICYmIFVSTFNlYXJjaFBhcmFtcy5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkg
e1xuICAgICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHkudG9TdHJpbmcoKVxuICAgICAgfSBlbHNl
IGlmICghYm9keSkge1xuICAgICAgICB0aGlzLl9ib2R5VGV4dCA9ICcnXG4gICAgICB9IGVsc2Ug
aWYgKHN1cHBvcnQuYXJyYXlCdWZmZXIgJiYgQXJyYXlCdWZmZXIucHJvdG90eXBlLmlzUHJvdG90
eXBlT2YoYm9keSkpIHtcbiAgICAgICAgLy8gT25seSBzdXBwb3J0IEFycmF5QnVmZmVycyBmb3Ig
UE9TVCBtZXRob2QuXG4gICAgICAgIC8vIFJlY2VpdmluZyBBcnJheUJ1ZmZlcnMgaGFwcGVucyB2
aWEgQmxvYnMsIGluc3RlYWQuXG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ3Vuc3VwcG9ydGVkIEJvZHlJbml0IHR5cGUnKVxuICAgICAgfVxuXG4gICAgICBpZiAoIXRo
aXMuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpKSB7XG4gICAgICAgIGlmICh0eXBlb2YgYm9k
eSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0aGlzLmhlYWRlcnMuc2V0KCdjb250ZW50LXR5
cGUnLCAndGV4dC9wbGFpbjtjaGFyc2V0PVVURi04JylcbiAgICAgICAgfSBlbHNlIGlmICh0aGlz
Ll9ib2R5QmxvYiAmJiB0aGlzLl9ib2R5QmxvYi50eXBlKSB7XG4gICAgICAgICAgdGhpcy5oZWFk
ZXJzLnNldCgnY29udGVudC10eXBlJywgdGhpcy5fYm9keUJsb2IudHlwZSlcbiAgICAgICAgfSBl
bHNlIGlmIChzdXBwb3J0LnNlYXJjaFBhcmFtcyAmJiBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBl
LmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgICAgICB0aGlzLmhlYWRlcnMuc2V0KCdjb250
ZW50LXR5cGUnLCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9VVRG
LTgnKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHN1cHBvcnQuYmxvYikg
e1xuICAgICAgdGhpcy5ibG9iID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHZhciByZWplY3RlZCA9
IGNvbnN1bWVkKHRoaXMpXG4gICAgICAgIGlmIChyZWplY3RlZCkge1xuICAgICAgICAgIHJldHVy
biByZWplY3RlZFxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2JvZHlCbG9iKSB7XG4g
ICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5QmxvYilcbiAgICAgICAg
fSBlbHNlIGlmICh0aGlzLl9ib2R5Rm9ybURhdGEpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoJ2NvdWxkIG5vdCByZWFkIEZvcm1EYXRhIGJvZHkgYXMgYmxvYicpXG4gICAgICAgIH0gZWxz
ZSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShuZXcgQmxvYihbdGhpcy5fYm9k
eVRleHRdKSlcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLmFycmF5QnVmZmVyID0g
ZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmJsb2IoKS50aGVuKHJlYWRCbG9iQXNB
cnJheUJ1ZmZlcilcbiAgICAgIH1cblxuICAgICAgdGhpcy50ZXh0ID0gZnVuY3Rpb24oKSB7XG4g
ICAgICAgIHZhciByZWplY3RlZCA9IGNvbnN1bWVkKHRoaXMpXG4gICAgICAgIGlmIChyZWplY3Rl
ZCkge1xuICAgICAgICAgIHJldHVybiByZWplY3RlZFxuICAgICAgICB9XG5cbiAgICAgICAgaWYg
KHRoaXMuX2JvZHlCbG9iKSB7XG4gICAgICAgICAgcmV0dXJuIHJlYWRCbG9iQXNUZXh0KHRoaXMu
X2JvZHlCbG9iKVxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlGb3JtRGF0YSkge1xuICAg
ICAgICAgIHRocm93IG5ldyBFcnJvcignY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyB0
ZXh0JylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZl
KHRoaXMuX2JvZHlUZXh0KVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAg
IHRoaXMudGV4dCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1l
ZCh0aGlzKVxuICAgICAgICByZXR1cm4gcmVqZWN0ZWQgPyByZWplY3RlZCA6IFByb21pc2UucmVz
b2x2ZSh0aGlzLl9ib2R5VGV4dClcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc3VwcG9ydC5m
b3JtRGF0YSkge1xuICAgICAgdGhpcy5mb3JtRGF0YSA9IGZ1bmN0aW9uKCkge1xuICAgICAgICBy
ZXR1cm4gdGhpcy50ZXh0KCkudGhlbihkZWNvZGUpXG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhp
cy5qc29uID0gZnVuY3Rpb24oKSB7XG4gICAgICByZXR1cm4gdGhpcy50ZXh0KCkudGhlbihKU09O
LnBhcnNlKVxuICAgIH1cblxuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICAvLyBIVFRQIG1ldGhv
ZHMgd2hvc2UgY2FwaXRhbGl6YXRpb24gc2hvdWxkIGJlIG5vcm1hbGl6ZWRcbiAgdmFyIG1ldGhv
ZHMgPSBbJ0RFTEVURScsICdHRVQnLCAnSEVBRCcsICdPUFRJT05TJywgJ1BPU1QnLCAnUFVUJ11c
blxuICBmdW5jdGlvbiBub3JtYWxpemVNZXRob2QobWV0aG9kKSB7XG4gICAgdmFyIHVwY2FzZWQg
PSBtZXRob2QudG9VcHBlckNhc2UoKVxuICAgIHJldHVybiAobWV0aG9kcy5pbmRleE9mKHVwY2Fz
ZWQpID4gLTEpID8gdXBjYXNlZCA6IG1ldGhvZFxuICB9XG5cbiAgZnVuY3Rpb24gUmVxdWVzdChp
bnB1dCwgb3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9XG4gICAgdmFyIGJv
ZHkgPSBvcHRpb25zLmJvZHlcbiAgICBpZiAoUmVxdWVzdC5wcm90b3R5cGUuaXNQcm90b3R5cGVP
ZihpbnB1dCkpIHtcbiAgICAgIGlmIChpbnB1dC5ib2R5VXNlZCkge1xuICAgICAgICB0aHJvdyBu
ZXcgVHlwZUVycm9yKCdBbHJlYWR5IHJlYWQnKVxuICAgICAgfVxuICAgICAgdGhpcy51cmwgPSBp
bnB1dC51cmxcbiAgICAgIHRoaXMuY3JlZGVudGlhbHMgPSBpbnB1dC5jcmVkZW50aWFsc1xuICAg
ICAgaWYgKCFvcHRpb25zLmhlYWRlcnMpIHtcbiAgICAgICAgdGhpcy5oZWFkZXJzID0gbmV3IEhl
YWRlcnMoaW5wdXQuaGVhZGVycylcbiAgICAgIH1cbiAgICAgIHRoaXMubWV0aG9kID0gaW5wdXQu
bWV0aG9kXG4gICAgICB0aGlzLm1vZGUgPSBpbnB1dC5tb2RlXG4gICAgICBpZiAoIWJvZHkpIHtc
biAgICAgICAgYm9keSA9IGlucHV0Ll9ib2R5SW5pdFxuICAgICAgICBpbnB1dC5ib2R5VXNlZCA9
IHRydWVcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy51cmwgPSBpbnB1dFxuICAg
IH1cblxuICAgIHRoaXMuY3JlZGVudGlhbHMgPSBvcHRpb25zLmNyZWRlbnRpYWxzIHx8IHRoaXMu
Y3JlZGVudGlhbHMgfHwgJ29taXQnXG4gICAgaWYgKG9wdGlvbnMuaGVhZGVycyB8fCAhdGhpcy5o
ZWFkZXJzKSB7XG4gICAgICB0aGlzLmhlYWRlcnMgPSBuZXcgSGVhZGVycyhvcHRpb25zLmhlYWRl
cnMpXG4gICAgfVxuICAgIHRoaXMubWV0aG9kID0gbm9ybWFsaXplTWV0aG9kKG9wdGlvbnMubWV0
aG9kIHx8IHRoaXMubWV0aG9kIHx8ICdHRVQnKVxuICAgIHRoaXMubW9kZSA9IG9wdGlvbnMubW9k
ZSB8fCB0aGlzLm1vZGUgfHwgbnVsbFxuICAgIHRoaXMucmVmZXJyZXIgPSBudWxsXG5cbiAgICBp
ZiAoKHRoaXMubWV0aG9kID09PSAnR0VUJyB8fCB0aGlzLm1ldGhvZCA9PT0gJ0hFQUQnKSAmJiBi
b2R5KSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCb2R5IG5vdCBhbGxvd2VkIGZvciBH
RVQgb3IgSEVBRCByZXF1ZXN0cycpXG4gICAgfVxuICAgIHRoaXMuX2luaXRCb2R5KGJvZHkpXG4g
IH1cblxuICBSZXF1ZXN0LnByb3RvdHlwZS5jbG9uZSA9IGZ1bmN0aW9uKCkge1xuICAgIHJldHVy
biBuZXcgUmVxdWVzdCh0aGlzKVxuICB9XG5cbiAgZnVuY3Rpb24gZGVjb2RlKGJvZHkpIHtcbiAg
ICB2YXIgZm9ybSA9IG5ldyBGb3JtRGF0YSgpXG4gICAgYm9keS50cmltKCkuc3BsaXQoJyYnKS5m
b3JFYWNoKGZ1bmN0aW9uKGJ5dGVzKSB7XG4gICAgICBpZiAoYnl0ZXMpIHtcbiAgICAgICAgdmFy
IHNwbGl0ID0gYnl0ZXMuc3BsaXQoJz0nKVxuICAgICAgICB2YXIgbmFtZSA9IHNwbGl0LnNoaWZ0
KCkucmVwbGFjZSgvXFwrL2csICcgJylcbiAgICAgICAgdmFyIHZhbHVlID0gc3BsaXQuam9pbign
PScpLnJlcGxhY2UoL1xcKy9nLCAnICcpXG4gICAgICAgIGZvcm0uYXBwZW5kKGRlY29kZVVSSUNv
bXBvbmVudChuYW1lKSwgZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKSlcbiAgICAgIH1cbiAgICB9
KVxuICAgIHJldHVybiBmb3JtXG4gIH1cblxuICBmdW5jdGlvbiBoZWFkZXJzKHhocikge1xuICAg
IHZhciBoZWFkID0gbmV3IEhlYWRlcnMoKVxuICAgIHZhciBwYWlycyA9ICh4aHIuZ2V0QWxsUmVz
cG9uc2VIZWFkZXJzKCkgfHwgJycpLnRyaW0oKS5zcGxpdCgnXFxuJylcbiAgICBwYWlycy5mb3JF
YWNoKGZ1bmN0aW9uKGhlYWRlcikge1xuICAgICAgdmFyIHNwbGl0ID0gaGVhZGVyLnRyaW0oKS5z
cGxpdCgnOicpXG4gICAgICB2YXIga2V5ID0gc3BsaXQuc2hpZnQoKS50cmltKClcbiAgICAgIHZh
ciB2YWx1ZSA9IHNwbGl0LmpvaW4oJzonKS50cmltKClcbiAgICAgIGhlYWQuYXBwZW5kKGtleSwg
dmFsdWUpXG4gICAgfSlcbiAgICByZXR1cm4gaGVhZFxuICB9XG5cbiAgQm9keS5jYWxsKFJlcXVl
c3QucHJvdG90eXBlKVxuXG4gIGZ1bmN0aW9uIFJlc3BvbnNlKGJvZHlJbml0LCBvcHRpb25zKSB7
XG4gICAgaWYgKCFvcHRpb25zKSB7XG4gICAgICBvcHRpb25zID0ge31cbiAgICB9XG5cbiAgICB0
aGlzLnR5cGUgPSAnZGVmYXVsdCdcbiAgICB0aGlzLnN0YXR1cyA9IG9wdGlvbnMuc3RhdHVzXG4g
ICAgdGhpcy5vayA9IHRoaXMuc3RhdHVzID49IDIwMCAmJiB0aGlzLnN0YXR1cyA8IDMwMFxuICAg
IHRoaXMuc3RhdHVzVGV4dCA9IG9wdGlvbnMuc3RhdHVzVGV4dFxuICAgIHRoaXMuaGVhZGVycyA9
IG9wdGlvbnMuaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnMgPyBvcHRpb25zLmhlYWRlcnMgOiBu
ZXcgSGVhZGVycyhvcHRpb25zLmhlYWRlcnMpXG4gICAgdGhpcy51cmwgPSBvcHRpb25zLnVybCB8
fCAnJ1xuICAgIHRoaXMuX2luaXRCb2R5KGJvZHlJbml0KVxuICB9XG5cbiAgQm9keS5jYWxsKFJl
c3BvbnNlLnByb3RvdHlwZSlcblxuICBSZXNwb25zZS5wcm90b3R5cGUuY2xvbmUgPSBmdW5jdGlv
bigpIHtcbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKHRoaXMuX2JvZHlJbml0LCB7XG4gICAgICBz
dGF0dXM6IHRoaXMuc3RhdHVzLFxuICAgICAgc3RhdHVzVGV4dDogdGhpcy5zdGF0dXNUZXh0LFxu
ICAgICAgaGVhZGVyczogbmV3IEhlYWRlcnModGhpcy5oZWFkZXJzKSxcbiAgICAgIHVybDogdGhp
cy51cmxcbiAgICB9KVxuICB9XG5cbiAgUmVzcG9uc2UuZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAg
ICB2YXIgcmVzcG9uc2UgPSBuZXcgUmVzcG9uc2UobnVsbCwge3N0YXR1czogMCwgc3RhdHVzVGV4
dDogJyd9KVxuICAgIHJlc3BvbnNlLnR5cGUgPSAnZXJyb3InXG4gICAgcmV0dXJuIHJlc3BvbnNl
XG4gIH1cblxuICB2YXIgcmVkaXJlY3RTdGF0dXNlcyA9IFszMDEsIDMwMiwgMzAzLCAzMDcsIDMw
OF1cblxuICBSZXNwb25zZS5yZWRpcmVjdCA9IGZ1bmN0aW9uKHVybCwgc3RhdHVzKSB7XG4gICAg
aWYgKHJlZGlyZWN0U3RhdHVzZXMuaW5kZXhPZihzdGF0dXMpID09PSAtMSkge1xuICAgICAgdGhy
b3cgbmV3IFJhbmdlRXJyb3IoJ0ludmFsaWQgc3RhdHVzIGNvZGUnKVxuICAgIH1cblxuICAgIHJl
dHVybiBuZXcgUmVzcG9uc2UobnVsbCwge3N0YXR1czogc3RhdHVzLCBoZWFkZXJzOiB7bG9jYXRp
b246IHVybH19KVxuICB9XG5cbiAgc2VsZi5IZWFkZXJzID0gSGVhZGVyc1xuICBzZWxmLlJlcXVl
c3QgPSBSZXF1ZXN0XG4gIHNlbGYuUmVzcG9uc2UgPSBSZXNwb25zZVxuXG4gIHNlbGYuZmV0Y2gg
PSBmdW5jdGlvbihpbnB1dCwgaW5pdCkge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlv
bihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciByZXF1ZXN0XG4gICAgICBpZiAoUmVxdWVz
dC5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihpbnB1dCkgJiYgIWluaXQpIHtcbiAgICAgICAgcmVx
dWVzdCA9IGlucHV0XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXF1ZXN0ID0gbmV3IFJlcXVl
c3QoaW5wdXQsIGluaXQpXG4gICAgICB9XG5cbiAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJl
cXVlc3QoKVxuXG4gICAgICBmdW5jdGlvbiByZXNwb25zZVVSTCgpIHtcbiAgICAgICAgaWYgKCdy
ZXNwb25zZVVSTCcgaW4geGhyKSB7XG4gICAgICAgICAgcmV0dXJuIHhoci5yZXNwb25zZVVSTFxu
ICAgICAgICB9XG5cbiAgICAgICAgLy8gQXZvaWQgc2VjdXJpdHkgd2FybmluZ3Mgb24gZ2V0UmVz
cG9uc2VIZWFkZXIgd2hlbiBub3QgYWxsb3dlZCBieSBDT1JTXG4gICAgICAgIGlmICgvXlgtUmVx
dWVzdC1VUkw6L20udGVzdCh4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpKSB7XG4gICAgICAg
ICAgcmV0dXJuIHhoci5nZXRSZXNwb25zZUhlYWRlcignWC1SZXF1ZXN0LVVSTCcpXG4gICAgICAg
IH1cblxuICAgICAgICByZXR1cm5cbiAgICAgIH1cblxuICAgICAgeGhyLm9ubG9hZCA9IGZ1bmN0
aW9uKCkge1xuICAgICAgICB2YXIgb3B0aW9ucyA9IHtcbiAgICAgICAgICBzdGF0dXM6IHhoci5z
dGF0dXMsXG4gICAgICAgICAgc3RhdHVzVGV4dDogeGhyLnN0YXR1c1RleHQsXG4gICAgICAgICAg
aGVhZGVyczogaGVhZGVycyh4aHIpLFxuICAgICAgICAgIHVybDogcmVzcG9uc2VVUkwoKVxuICAg
ICAgICB9XG4gICAgICAgIHZhciBib2R5ID0gJ3Jlc3BvbnNlJyBpbiB4aHIgPyB4aHIucmVzcG9u
c2UgOiB4aHIucmVzcG9uc2VUZXh0XG4gICAgICAgIHJlc29sdmUobmV3IFJlc3BvbnNlKGJvZHks
IG9wdGlvbnMpKVxuICAgICAgfVxuXG4gICAgICB4aHIub25lcnJvciA9IGZ1bmN0aW9uKCkge1xu
ICAgICAgICByZWplY3QobmV3IFR5cGVFcnJvcignTmV0d29yayByZXF1ZXN0IGZhaWxlZCcpKVxu
ICAgICAgfVxuXG4gICAgICB4aHIub250aW1lb3V0ID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJl
amVjdChuZXcgVHlwZUVycm9yKCdOZXR3b3JrIHJlcXVlc3QgZmFpbGVkJykpXG4gICAgICB9XG5c
biAgICAgIHhoci5vcGVuKHJlcXVlc3QubWV0aG9kLCByZXF1ZXN0LnVybCwgdHJ1ZSlcblxuICAg
ICAgaWYgKHJlcXVlc3QuY3JlZGVudGlhbHMgPT09ICdpbmNsdWRlJykge1xuICAgICAgICB4aHIu
d2l0aENyZWRlbnRpYWxzID0gdHJ1ZVxuICAgICAgfVxuXG4gICAgICBpZiAoJ3Jlc3BvbnNlVHlw
ZScgaW4geGhyICYmIHN1cHBvcnQuYmxvYikge1xuICAgICAgICB4aHIucmVzcG9uc2VUeXBlID0g
J2Jsb2InXG4gICAgICB9XG5cbiAgICAgIHJlcXVlc3QuaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9u
KHZhbHVlLCBuYW1lKSB7XG4gICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKG5hbWUsIHZhbHVl
KVxuICAgICAgfSlcblxuICAgICAgeGhyLnNlbmQodHlwZW9mIHJlcXVlc3QuX2JvZHlJbml0ID09
PSAndW5kZWZpbmVkJyA/IG51bGwgOiByZXF1ZXN0Ll9ib2R5SW5pdClcbiAgICB9KVxuICB9XG4g
IHNlbGYuZmV0Y2gucG9seWZpbGwgPSB0cnVlXG59KSh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5l
ZCcgPyBzZWxmIDogdGhpcyk7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNL
IEZPT1RFUlxuICoqIC4vfi9yZWFjdC1zY3JpcHRzL34vd2hhdHdnLWZldGNoL2ZldGNoLmpzXG4g
KiogbW9kdWxlIGlkID0gMjEyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUG9vbGVkQ2xh
c3MgPSByZXF1aXJlKCcuL1Bvb2xlZENsYXNzJyk7XG52YXIgUmVhY3RFbGVtZW50ID0gcmVxdWly
ZSgnLi9SZWFjdEVsZW1lbnQnKTtcblxudmFyIGVtcHR5RnVuY3Rpb24gPSByZXF1aXJlKCdmYmpz
L2xpYi9lbXB0eUZ1bmN0aW9uJyk7XG52YXIgdHJhdmVyc2VBbGxDaGlsZHJlbiA9IHJlcXVpcmUo
Jy4vdHJhdmVyc2VBbGxDaGlsZHJlbicpO1xuXG52YXIgdHdvQXJndW1lbnRQb29sZXIgPSBQb29s
ZWRDbGFzcy50d29Bcmd1bWVudFBvb2xlcjtcbnZhciBmb3VyQXJndW1lbnRQb29sZXIgPSBQb29s
ZWRDbGFzcy5mb3VyQXJndW1lbnRQb29sZXI7XG5cbnZhciB1c2VyUHJvdmlkZWRLZXlFc2NhcGVS
ZWdleCA9IC9cXC8rL2c7XG5mdW5jdGlvbiBlc2NhcGVVc2VyUHJvdmlkZWRLZXkodGV4dCkge1xu
ICByZXR1cm4gKCcnICsgdGV4dCkucmVwbGFjZSh1c2VyUHJvdmlkZWRLZXlFc2NhcGVSZWdleCwg
JyQmLycpO1xufVxuXG4vKipcbiAqIFBvb2xlZENsYXNzIHJlcHJlc2VudGluZyB0aGUgYm9va2tl
ZXBpbmcgYXNzb2NpYXRlZCB3aXRoIHBlcmZvcm1pbmcgYSBjaGlsZFxuICogdHJhdmVyc2FsLiBB
bGxvd3MgYXZvaWRpbmcgYmluZGluZyBjYWxsYmFja3MuXG4gKlxuICogQGNvbnN0cnVjdG9yIEZv
ckVhY2hCb29rS2VlcGluZ1xuICogQHBhcmFtIHshZnVuY3Rpb259IGZvckVhY2hGdW5jdGlvbiBG
dW5jdGlvbiB0byBwZXJmb3JtIHRyYXZlcnNhbCB3aXRoLlxuICogQHBhcmFtIHs/Kn0gZm9yRWFj
aENvbnRleHQgQ29udGV4dCB0byBwZXJmb3JtIGNvbnRleHQgd2l0aC5cbiAqL1xuZnVuY3Rpb24g
Rm9yRWFjaEJvb2tLZWVwaW5nKGZvckVhY2hGdW5jdGlvbiwgZm9yRWFjaENvbnRleHQpIHtcbiAg
dGhpcy5mdW5jID0gZm9yRWFjaEZ1bmN0aW9uO1xuICB0aGlzLmNvbnRleHQgPSBmb3JFYWNoQ29u
dGV4dDtcbiAgdGhpcy5jb3VudCA9IDA7XG59XG5Gb3JFYWNoQm9va0tlZXBpbmcucHJvdG90eXBl
LmRlc3RydWN0b3IgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuZnVuYyA9IG51bGw7XG4gIHRoaXMu
Y29udGV4dCA9IG51bGw7XG4gIHRoaXMuY291bnQgPSAwO1xufTtcblBvb2xlZENsYXNzLmFkZFBv
b2xpbmdUbyhGb3JFYWNoQm9va0tlZXBpbmcsIHR3b0FyZ3VtZW50UG9vbGVyKTtcblxuZnVuY3Rp
b24gZm9yRWFjaFNpbmdsZUNoaWxkKGJvb2tLZWVwaW5nLCBjaGlsZCwgbmFtZSkge1xuICB2YXIg
ZnVuYyA9IGJvb2tLZWVwaW5nLmZ1bmMsXG4gICAgICBjb250ZXh0ID0gYm9va0tlZXBpbmcuY29u
dGV4dDtcblxuICBmdW5jLmNhbGwoY29udGV4dCwgY2hpbGQsIGJvb2tLZWVwaW5nLmNvdW50Kysp
O1xufVxuXG4vKipcbiAqIEl0ZXJhdGVzIHRocm91Z2ggY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNh
bGx5IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gLlxuICpcbiAqIFNlZSBodHRwczovL2Zh
Y2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jaGls
ZHJlbi5mb3JlYWNoXG4gKlxuICogVGhlIHByb3ZpZGVkIGZvckVhY2hGdW5jKGNoaWxkLCBpbmRl
eCkgd2lsbCBiZSBjYWxsZWQgZm9yIGVhY2hcbiAqIGxlYWYgY2hpbGQuXG4gKlxuICogQHBhcmFt
IHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIuXG4gKiBAcGFyYW0ge2Z1bmN0
aW9uKCosIGludCl9IGZvckVhY2hGdW5jXG4gKiBAcGFyYW0geyp9IGZvckVhY2hDb250ZXh0IENv
bnRleHQgZm9yIGZvckVhY2hDb250ZXh0LlxuICovXG5mdW5jdGlvbiBmb3JFYWNoQ2hpbGRyZW4o
Y2hpbGRyZW4sIGZvckVhY2hGdW5jLCBmb3JFYWNoQ29udGV4dCkge1xuICBpZiAoY2hpbGRyZW4g
PT0gbnVsbCkge1xuICAgIHJldHVybiBjaGlsZHJlbjtcbiAgfVxuICB2YXIgdHJhdmVyc2VDb250
ZXh0ID0gRm9yRWFjaEJvb2tLZWVwaW5nLmdldFBvb2xlZChmb3JFYWNoRnVuYywgZm9yRWFjaENv
bnRleHQpO1xuICB0cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBmb3JFYWNoU2luZ2xlQ2hp
bGQsIHRyYXZlcnNlQ29udGV4dCk7XG4gIEZvckVhY2hCb29rS2VlcGluZy5yZWxlYXNlKHRyYXZl
cnNlQ29udGV4dCk7XG59XG5cbi8qKlxuICogUG9vbGVkQ2xhc3MgcmVwcmVzZW50aW5nIHRoZSBi
b29ra2VlcGluZyBhc3NvY2lhdGVkIHdpdGggcGVyZm9ybWluZyBhIGNoaWxkXG4gKiBtYXBwaW5n
LiBBbGxvd3MgYXZvaWRpbmcgYmluZGluZyBjYWxsYmFja3MuXG4gKlxuICogQGNvbnN0cnVjdG9y
IE1hcEJvb2tLZWVwaW5nXG4gKiBAcGFyYW0geyEqfSBtYXBSZXN1bHQgT2JqZWN0IGNvbnRhaW5p
bmcgdGhlIG9yZGVyZWQgbWFwIG9mIHJlc3VsdHMuXG4gKiBAcGFyYW0geyFmdW5jdGlvbn0gbWFw
RnVuY3Rpb24gRnVuY3Rpb24gdG8gcGVyZm9ybSBtYXBwaW5nIHdpdGguXG4gKiBAcGFyYW0gez8q
fSBtYXBDb250ZXh0IENvbnRleHQgdG8gcGVyZm9ybSBtYXBwaW5nIHdpdGguXG4gKi9cbmZ1bmN0
aW9uIE1hcEJvb2tLZWVwaW5nKG1hcFJlc3VsdCwga2V5UHJlZml4LCBtYXBGdW5jdGlvbiwgbWFw
Q29udGV4dCkge1xuICB0aGlzLnJlc3VsdCA9IG1hcFJlc3VsdDtcbiAgdGhpcy5rZXlQcmVmaXgg
PSBrZXlQcmVmaXg7XG4gIHRoaXMuZnVuYyA9IG1hcEZ1bmN0aW9uO1xuICB0aGlzLmNvbnRleHQg
PSBtYXBDb250ZXh0O1xuICB0aGlzLmNvdW50ID0gMDtcbn1cbk1hcEJvb2tLZWVwaW5nLnByb3Rv
dHlwZS5kZXN0cnVjdG9yID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLnJlc3VsdCA9IG51bGw7XG4g
IHRoaXMua2V5UHJlZml4ID0gbnVsbDtcbiAgdGhpcy5mdW5jID0gbnVsbDtcbiAgdGhpcy5jb250
ZXh0ID0gbnVsbDtcbiAgdGhpcy5jb3VudCA9IDA7XG59O1xuUG9vbGVkQ2xhc3MuYWRkUG9vbGlu
Z1RvKE1hcEJvb2tLZWVwaW5nLCBmb3VyQXJndW1lbnRQb29sZXIpO1xuXG5mdW5jdGlvbiBtYXBT
aW5nbGVDaGlsZEludG9Db250ZXh0KGJvb2tLZWVwaW5nLCBjaGlsZCwgY2hpbGRLZXkpIHtcbiAg
dmFyIHJlc3VsdCA9IGJvb2tLZWVwaW5nLnJlc3VsdCxcbiAgICAgIGtleVByZWZpeCA9IGJvb2tL
ZWVwaW5nLmtleVByZWZpeCxcbiAgICAgIGZ1bmMgPSBib29rS2VlcGluZy5mdW5jLFxuICAgICAg
Y29udGV4dCA9IGJvb2tLZWVwaW5nLmNvbnRleHQ7XG5cblxuICB2YXIgbWFwcGVkQ2hpbGQgPSBm
dW5jLmNhbGwoY29udGV4dCwgY2hpbGQsIGJvb2tLZWVwaW5nLmNvdW50KyspO1xuICBpZiAoQXJy
YXkuaXNBcnJheShtYXBwZWRDaGlsZCkpIHtcbiAgICBtYXBJbnRvV2l0aEtleVByZWZpeEludGVy
bmFsKG1hcHBlZENoaWxkLCByZXN1bHQsIGNoaWxkS2V5LCBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1
cm5zQXJndW1lbnQpO1xuICB9IGVsc2UgaWYgKG1hcHBlZENoaWxkICE9IG51bGwpIHtcbiAgICBp
ZiAoUmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50KG1hcHBlZENoaWxkKSkge1xuICAgICAgbWFw
cGVkQ2hpbGQgPSBSZWFjdEVsZW1lbnQuY2xvbmVBbmRSZXBsYWNlS2V5KG1hcHBlZENoaWxkLFxu
ICAgICAgLy8gS2VlcCBib3RoIHRoZSAobWFwcGVkKSBhbmQgb2xkIGtleXMgaWYgdGhleSBkaWZm
ZXIsIGp1c3QgYXNcbiAgICAgIC8vIHRyYXZlcnNlQWxsQ2hpbGRyZW4gdXNlZCB0byBkbyBmb3Ig
b2JqZWN0cyBhcyBjaGlsZHJlblxuICAgICAga2V5UHJlZml4ICsgKG1hcHBlZENoaWxkLmtleSAm
JiAoIWNoaWxkIHx8IGNoaWxkLmtleSAhPT0gbWFwcGVkQ2hpbGQua2V5KSA/IGVzY2FwZVVzZXJQ
cm92aWRlZEtleShtYXBwZWRDaGlsZC5rZXkpICsgJy8nIDogJycpICsgY2hpbGRLZXkpO1xuICAg
IH1cbiAgICByZXN1bHQucHVzaChtYXBwZWRDaGlsZCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbWFw
SW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChjaGlsZHJlbiwgYXJyYXksIHByZWZpeCwgZnVuYywg
Y29udGV4dCkge1xuICB2YXIgZXNjYXBlZFByZWZpeCA9ICcnO1xuICBpZiAocHJlZml4ICE9IG51
bGwpIHtcbiAgICBlc2NhcGVkUHJlZml4ID0gZXNjYXBlVXNlclByb3ZpZGVkS2V5KHByZWZpeCkg
KyAnLyc7XG4gIH1cbiAgdmFyIHRyYXZlcnNlQ29udGV4dCA9IE1hcEJvb2tLZWVwaW5nLmdldFBv
b2xlZChhcnJheSwgZXNjYXBlZFByZWZpeCwgZnVuYywgY29udGV4dCk7XG4gIHRyYXZlcnNlQWxs
Q2hpbGRyZW4oY2hpbGRyZW4sIG1hcFNpbmdsZUNoaWxkSW50b0NvbnRleHQsIHRyYXZlcnNlQ29u
dGV4dCk7XG4gIE1hcEJvb2tLZWVwaW5nLnJlbGVhc2UodHJhdmVyc2VDb250ZXh0KTtcbn1cblxu
LyoqXG4gKiBNYXBzIGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHBy
b3BzLmNoaWxkcmVuYC5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVh
Y3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY2hpbGRyZW4ubWFwXG4gKlxuICogVGhl
IHByb3ZpZGVkIG1hcEZ1bmN0aW9uKGNoaWxkLCBrZXksIGluZGV4KSB3aWxsIGJlIGNhbGxlZCBm
b3IgZWFjaFxuICogbGVhZiBjaGlsZC5cbiAqXG4gKiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGls
ZHJlbiB0cmVlIGNvbnRhaW5lci5cbiAqIEBwYXJhbSB7ZnVuY3Rpb24oKiwgaW50KX0gZnVuYyBU
aGUgbWFwIGZ1bmN0aW9uLlxuICogQHBhcmFtIHsqfSBjb250ZXh0IENvbnRleHQgZm9yIG1hcEZ1
bmN0aW9uLlxuICogQHJldHVybiB7b2JqZWN0fSBPYmplY3QgY29udGFpbmluZyB0aGUgb3JkZXJl
ZCBtYXAgb2YgcmVzdWx0cy5cbiAqL1xuZnVuY3Rpb24gbWFwQ2hpbGRyZW4oY2hpbGRyZW4sIGZ1
bmMsIGNvbnRleHQpIHtcbiAgaWYgKGNoaWxkcmVuID09IG51bGwpIHtcbiAgICByZXR1cm4gY2hp
bGRyZW47XG4gIH1cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBtYXBJbnRvV2l0aEtleVByZWZpeElu
dGVybmFsKGNoaWxkcmVuLCByZXN1bHQsIG51bGwsIGZ1bmMsIGNvbnRleHQpO1xuICByZXR1cm4g
cmVzdWx0O1xufVxuXG5mdW5jdGlvbiBmb3JFYWNoU2luZ2xlQ2hpbGREdW1teSh0cmF2ZXJzZUNv
bnRleHQsIGNoaWxkLCBuYW1lKSB7XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIENvdW50
IHRoZSBudW1iZXIgb2YgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhc1xu
ICogYHByb3BzLmNoaWxkcmVuYC5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIu
aW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY2hpbGRyZW4uY291bnRcbiAq
XG4gKiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRhaW5lci5cbiAqIEBy
ZXR1cm4ge251bWJlcn0gVGhlIG51bWJlciBvZiBjaGlsZHJlbi5cbiAqL1xuZnVuY3Rpb24gY291
bnRDaGlsZHJlbihjaGlsZHJlbiwgY29udGV4dCkge1xuICByZXR1cm4gdHJhdmVyc2VBbGxDaGls
ZHJlbihjaGlsZHJlbiwgZm9yRWFjaFNpbmdsZUNoaWxkRHVtbXksIG51bGwpO1xufVxuXG4vKipc
biAqIEZsYXR0ZW4gYSBjaGlsZHJlbiBvYmplY3QgKHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHBy
b3BzLmNoaWxkcmVuYCkgYW5kXG4gKiByZXR1cm4gYW4gYXJyYXkgd2l0aCBhcHByb3ByaWF0ZWx5
IHJlLWtleWVkIGNoaWxkcmVuLlxuICpcbiAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5p
by9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jaGlsZHJlbi50b2FycmF5XG4g
Ki9cbmZ1bmN0aW9uIHRvQXJyYXkoY2hpbGRyZW4pIHtcbiAgdmFyIHJlc3VsdCA9IFtdO1xuICBt
YXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsKGNoaWxkcmVuLCByZXN1bHQsIG51bGwsIGVtcHR5
RnVuY3Rpb24udGhhdFJldHVybnNBcmd1bWVudCk7XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbnZh
ciBSZWFjdENoaWxkcmVuID0ge1xuICBmb3JFYWNoOiBmb3JFYWNoQ2hpbGRyZW4sXG4gIG1hcDog
bWFwQ2hpbGRyZW4sXG4gIG1hcEludG9XaXRoS2V5UHJlZml4SW50ZXJuYWw6IG1hcEludG9XaXRo
S2V5UHJlZml4SW50ZXJuYWwsXG4gIGNvdW50OiBjb3VudENoaWxkcmVuLFxuICB0b0FycmF5OiB0
b0FycmF5XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q2hpbGRyZW47XG5cblxuLyoqKioq
KioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QvbGliL1JlYWN0
Q2hpbGRyZW4uanNcbiAqKiBtb2R1bGUgaWQgPSAyMTVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxu
ICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5c
bnZhciBSZWFjdEVsZW1lbnQgPSByZXF1aXJlKCcuL1JlYWN0RWxlbWVudCcpO1xuXG4vKipcbiAq
IENyZWF0ZSBhIGZhY3RvcnkgdGhhdCBjcmVhdGVzIEhUTUwgdGFnIGVsZW1lbnRzLlxuICpcbiAq
IEBwcml2YXRlXG4gKi9cbnZhciBjcmVhdGVET01GYWN0b3J5ID0gUmVhY3RFbGVtZW50LmNyZWF0
ZUZhY3Rvcnk7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xu
ICB2YXIgUmVhY3RFbGVtZW50VmFsaWRhdG9yID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnRWYWxp
ZGF0b3InKTtcbiAgY3JlYXRlRE9NRmFjdG9yeSA9IFJlYWN0RWxlbWVudFZhbGlkYXRvci5jcmVh
dGVGYWN0b3J5O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBtYXBwaW5nIGZyb20gc3VwcG9ydGVk
IEhUTUwgdGFncyB0byBgUmVhY3RET01Db21wb25lbnRgIGNsYXNzZXMuXG4gKlxuICogQHB1Ymxp
Y1xuICovXG52YXIgUmVhY3RET01GYWN0b3JpZXMgPSB7XG4gIGE6IGNyZWF0ZURPTUZhY3Rvcnko
J2EnKSxcbiAgYWJicjogY3JlYXRlRE9NRmFjdG9yeSgnYWJicicpLFxuICBhZGRyZXNzOiBjcmVh
dGVET01GYWN0b3J5KCdhZGRyZXNzJyksXG4gIGFyZWE6IGNyZWF0ZURPTUZhY3RvcnkoJ2FyZWEn
KSxcbiAgYXJ0aWNsZTogY3JlYXRlRE9NRmFjdG9yeSgnYXJ0aWNsZScpLFxuICBhc2lkZTogY3Jl
YXRlRE9NRmFjdG9yeSgnYXNpZGUnKSxcbiAgYXVkaW86IGNyZWF0ZURPTUZhY3RvcnkoJ2F1ZGlv
JyksXG4gIGI6IGNyZWF0ZURPTUZhY3RvcnkoJ2InKSxcbiAgYmFzZTogY3JlYXRlRE9NRmFjdG9y
eSgnYmFzZScpLFxuICBiZGk6IGNyZWF0ZURPTUZhY3RvcnkoJ2JkaScpLFxuICBiZG86IGNyZWF0
ZURPTUZhY3RvcnkoJ2JkbycpLFxuICBiaWc6IGNyZWF0ZURPTUZhY3RvcnkoJ2JpZycpLFxuICBi
bG9ja3F1b3RlOiBjcmVhdGVET01GYWN0b3J5KCdibG9ja3F1b3RlJyksXG4gIGJvZHk6IGNyZWF0
ZURPTUZhY3RvcnkoJ2JvZHknKSxcbiAgYnI6IGNyZWF0ZURPTUZhY3RvcnkoJ2JyJyksXG4gIGJ1
dHRvbjogY3JlYXRlRE9NRmFjdG9yeSgnYnV0dG9uJyksXG4gIGNhbnZhczogY3JlYXRlRE9NRmFj
dG9yeSgnY2FudmFzJyksXG4gIGNhcHRpb246IGNyZWF0ZURPTUZhY3RvcnkoJ2NhcHRpb24nKSxc
biAgY2l0ZTogY3JlYXRlRE9NRmFjdG9yeSgnY2l0ZScpLFxuICBjb2RlOiBjcmVhdGVET01GYWN0
b3J5KCdjb2RlJyksXG4gIGNvbDogY3JlYXRlRE9NRmFjdG9yeSgnY29sJyksXG4gIGNvbGdyb3Vw
OiBjcmVhdGVET01GYWN0b3J5KCdjb2xncm91cCcpLFxuICBkYXRhOiBjcmVhdGVET01GYWN0b3J5
KCdkYXRhJyksXG4gIGRhdGFsaXN0OiBjcmVhdGVET01GYWN0b3J5KCdkYXRhbGlzdCcpLFxuICBk
ZDogY3JlYXRlRE9NRmFjdG9yeSgnZGQnKSxcbiAgZGVsOiBjcmVhdGVET01GYWN0b3J5KCdkZWwn
KSxcbiAgZGV0YWlsczogY3JlYXRlRE9NRmFjdG9yeSgnZGV0YWlscycpLFxuICBkZm46IGNyZWF0
ZURPTUZhY3RvcnkoJ2RmbicpLFxuICBkaWFsb2c6IGNyZWF0ZURPTUZhY3RvcnkoJ2RpYWxvZycp
LFxuICBkaXY6IGNyZWF0ZURPTUZhY3RvcnkoJ2RpdicpLFxuICBkbDogY3JlYXRlRE9NRmFjdG9y
eSgnZGwnKSxcbiAgZHQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2R0JyksXG4gIGVtOiBjcmVhdGVET01G
YWN0b3J5KCdlbScpLFxuICBlbWJlZDogY3JlYXRlRE9NRmFjdG9yeSgnZW1iZWQnKSxcbiAgZmll
bGRzZXQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2ZpZWxkc2V0JyksXG4gIGZpZ2NhcHRpb246IGNyZWF0
ZURPTUZhY3RvcnkoJ2ZpZ2NhcHRpb24nKSxcbiAgZmlndXJlOiBjcmVhdGVET01GYWN0b3J5KCdm
aWd1cmUnKSxcbiAgZm9vdGVyOiBjcmVhdGVET01GYWN0b3J5KCdmb290ZXInKSxcbiAgZm9ybTog
Y3JlYXRlRE9NRmFjdG9yeSgnZm9ybScpLFxuICBoMTogY3JlYXRlRE9NRmFjdG9yeSgnaDEnKSxc
biAgaDI6IGNyZWF0ZURPTUZhY3RvcnkoJ2gyJyksXG4gIGgzOiBjcmVhdGVET01GYWN0b3J5KCdo
MycpLFxuICBoNDogY3JlYXRlRE9NRmFjdG9yeSgnaDQnKSxcbiAgaDU6IGNyZWF0ZURPTUZhY3Rv
cnkoJ2g1JyksXG4gIGg2OiBjcmVhdGVET01GYWN0b3J5KCdoNicpLFxuICBoZWFkOiBjcmVhdGVE
T01GYWN0b3J5KCdoZWFkJyksXG4gIGhlYWRlcjogY3JlYXRlRE9NRmFjdG9yeSgnaGVhZGVyJyks
XG4gIGhncm91cDogY3JlYXRlRE9NRmFjdG9yeSgnaGdyb3VwJyksXG4gIGhyOiBjcmVhdGVET01G
YWN0b3J5KCdocicpLFxuICBodG1sOiBjcmVhdGVET01GYWN0b3J5KCdodG1sJyksXG4gIGk6IGNy
ZWF0ZURPTUZhY3RvcnkoJ2knKSxcbiAgaWZyYW1lOiBjcmVhdGVET01GYWN0b3J5KCdpZnJhbWUn
KSxcbiAgaW1nOiBjcmVhdGVET01GYWN0b3J5KCdpbWcnKSxcbiAgaW5wdXQ6IGNyZWF0ZURPTUZh
Y3RvcnkoJ2lucHV0JyksXG4gIGluczogY3JlYXRlRE9NRmFjdG9yeSgnaW5zJyksXG4gIGtiZDog
Y3JlYXRlRE9NRmFjdG9yeSgna2JkJyksXG4gIGtleWdlbjogY3JlYXRlRE9NRmFjdG9yeSgna2V5
Z2VuJyksXG4gIGxhYmVsOiBjcmVhdGVET01GYWN0b3J5KCdsYWJlbCcpLFxuICBsZWdlbmQ6IGNy
ZWF0ZURPTUZhY3RvcnkoJ2xlZ2VuZCcpLFxuICBsaTogY3JlYXRlRE9NRmFjdG9yeSgnbGknKSxc
biAgbGluazogY3JlYXRlRE9NRmFjdG9yeSgnbGluaycpLFxuICBtYWluOiBjcmVhdGVET01GYWN0
b3J5KCdtYWluJyksXG4gIG1hcDogY3JlYXRlRE9NRmFjdG9yeSgnbWFwJyksXG4gIG1hcms6IGNy
ZWF0ZURPTUZhY3RvcnkoJ21hcmsnKSxcbiAgbWVudTogY3JlYXRlRE9NRmFjdG9yeSgnbWVudScp
LFxuICBtZW51aXRlbTogY3JlYXRlRE9NRmFjdG9yeSgnbWVudWl0ZW0nKSxcbiAgbWV0YTogY3Jl
YXRlRE9NRmFjdG9yeSgnbWV0YScpLFxuICBtZXRlcjogY3JlYXRlRE9NRmFjdG9yeSgnbWV0ZXIn
KSxcbiAgbmF2OiBjcmVhdGVET01GYWN0b3J5KCduYXYnKSxcbiAgbm9zY3JpcHQ6IGNyZWF0ZURP
TUZhY3RvcnkoJ25vc2NyaXB0JyksXG4gIG9iamVjdDogY3JlYXRlRE9NRmFjdG9yeSgnb2JqZWN0
JyksXG4gIG9sOiBjcmVhdGVET01GYWN0b3J5KCdvbCcpLFxuICBvcHRncm91cDogY3JlYXRlRE9N
RmFjdG9yeSgnb3B0Z3JvdXAnKSxcbiAgb3B0aW9uOiBjcmVhdGVET01GYWN0b3J5KCdvcHRpb24n
KSxcbiAgb3V0cHV0OiBjcmVhdGVET01GYWN0b3J5KCdvdXRwdXQnKSxcbiAgcDogY3JlYXRlRE9N
RmFjdG9yeSgncCcpLFxuICBwYXJhbTogY3JlYXRlRE9NRmFjdG9yeSgncGFyYW0nKSxcbiAgcGlj
dHVyZTogY3JlYXRlRE9NRmFjdG9yeSgncGljdHVyZScpLFxuICBwcmU6IGNyZWF0ZURPTUZhY3Rv
cnkoJ3ByZScpLFxuICBwcm9ncmVzczogY3JlYXRlRE9NRmFjdG9yeSgncHJvZ3Jlc3MnKSxcbiAg
cTogY3JlYXRlRE9NRmFjdG9yeSgncScpLFxuICBycDogY3JlYXRlRE9NRmFjdG9yeSgncnAnKSxc
biAgcnQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3J0JyksXG4gIHJ1Ynk6IGNyZWF0ZURPTUZhY3Rvcnko
J3J1YnknKSxcbiAgczogY3JlYXRlRE9NRmFjdG9yeSgncycpLFxuICBzYW1wOiBjcmVhdGVET01G
YWN0b3J5KCdzYW1wJyksXG4gIHNjcmlwdDogY3JlYXRlRE9NRmFjdG9yeSgnc2NyaXB0JyksXG4g
IHNlY3Rpb246IGNyZWF0ZURPTUZhY3RvcnkoJ3NlY3Rpb24nKSxcbiAgc2VsZWN0OiBjcmVhdGVE
T01GYWN0b3J5KCdzZWxlY3QnKSxcbiAgc21hbGw6IGNyZWF0ZURPTUZhY3RvcnkoJ3NtYWxsJyks
XG4gIHNvdXJjZTogY3JlYXRlRE9NRmFjdG9yeSgnc291cmNlJyksXG4gIHNwYW46IGNyZWF0ZURP
TUZhY3RvcnkoJ3NwYW4nKSxcbiAgc3Ryb25nOiBjcmVhdGVET01GYWN0b3J5KCdzdHJvbmcnKSxc
biAgc3R5bGU6IGNyZWF0ZURPTUZhY3RvcnkoJ3N0eWxlJyksXG4gIHN1YjogY3JlYXRlRE9NRmFj
dG9yeSgnc3ViJyksXG4gIHN1bW1hcnk6IGNyZWF0ZURPTUZhY3RvcnkoJ3N1bW1hcnknKSxcbiAg
c3VwOiBjcmVhdGVET01GYWN0b3J5KCdzdXAnKSxcbiAgdGFibGU6IGNyZWF0ZURPTUZhY3Rvcnko
J3RhYmxlJyksXG4gIHRib2R5OiBjcmVhdGVET01GYWN0b3J5KCd0Ym9keScpLFxuICB0ZDogY3Jl
YXRlRE9NRmFjdG9yeSgndGQnKSxcbiAgdGV4dGFyZWE6IGNyZWF0ZURPTUZhY3RvcnkoJ3RleHRh
cmVhJyksXG4gIHRmb290OiBjcmVhdGVET01GYWN0b3J5KCd0Zm9vdCcpLFxuICB0aDogY3JlYXRl
RE9NRmFjdG9yeSgndGgnKSxcbiAgdGhlYWQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3RoZWFkJyksXG4g
IHRpbWU6IGNyZWF0ZURPTUZhY3RvcnkoJ3RpbWUnKSxcbiAgdGl0bGU6IGNyZWF0ZURPTUZhY3Rv
cnkoJ3RpdGxlJyksXG4gIHRyOiBjcmVhdGVET01GYWN0b3J5KCd0cicpLFxuICB0cmFjazogY3Jl
YXRlRE9NRmFjdG9yeSgndHJhY2snKSxcbiAgdTogY3JlYXRlRE9NRmFjdG9yeSgndScpLFxuICB1
bDogY3JlYXRlRE9NRmFjdG9yeSgndWwnKSxcbiAgJ3Zhcic6IGNyZWF0ZURPTUZhY3RvcnkoJ3Zh
cicpLFxuICB2aWRlbzogY3JlYXRlRE9NRmFjdG9yeSgndmlkZW8nKSxcbiAgd2JyOiBjcmVhdGVE
T01GYWN0b3J5KCd3YnInKSxcblxuICAvLyBTVkdcbiAgY2lyY2xlOiBjcmVhdGVET01GYWN0b3J5
KCdjaXJjbGUnKSxcbiAgY2xpcFBhdGg6IGNyZWF0ZURPTUZhY3RvcnkoJ2NsaXBQYXRoJyksXG4g
IGRlZnM6IGNyZWF0ZURPTUZhY3RvcnkoJ2RlZnMnKSxcbiAgZWxsaXBzZTogY3JlYXRlRE9NRmFj
dG9yeSgnZWxsaXBzZScpLFxuICBnOiBjcmVhdGVET01GYWN0b3J5KCdnJyksXG4gIGltYWdlOiBj
cmVhdGVET01GYWN0b3J5KCdpbWFnZScpLFxuICBsaW5lOiBjcmVhdGVET01GYWN0b3J5KCdsaW5l
JyksXG4gIGxpbmVhckdyYWRpZW50OiBjcmVhdGVET01GYWN0b3J5KCdsaW5lYXJHcmFkaWVudCcp
LFxuICBtYXNrOiBjcmVhdGVET01GYWN0b3J5KCdtYXNrJyksXG4gIHBhdGg6IGNyZWF0ZURPTUZh
Y3RvcnkoJ3BhdGgnKSxcbiAgcGF0dGVybjogY3JlYXRlRE9NRmFjdG9yeSgncGF0dGVybicpLFxu
ICBwb2x5Z29uOiBjcmVhdGVET01GYWN0b3J5KCdwb2x5Z29uJyksXG4gIHBvbHlsaW5lOiBjcmVh
dGVET01GYWN0b3J5KCdwb2x5bGluZScpLFxuICByYWRpYWxHcmFkaWVudDogY3JlYXRlRE9NRmFj
dG9yeSgncmFkaWFsR3JhZGllbnQnKSxcbiAgcmVjdDogY3JlYXRlRE9NRmFjdG9yeSgncmVjdCcp
LFxuICBzdG9wOiBjcmVhdGVET01GYWN0b3J5KCdzdG9wJyksXG4gIHN2ZzogY3JlYXRlRE9NRmFj
dG9yeSgnc3ZnJyksXG4gIHRleHQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3RleHQnKSxcbiAgdHNwYW46
IGNyZWF0ZURPTUZhY3RvcnkoJ3RzcGFuJylcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RE
T01GYWN0b3JpZXM7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJc
biAqKiAuL34vcmVhY3QvbGliL1JlYWN0RE9NRmFjdG9yaWVzLmpzXG4gKiogbW9kdWxlIGlkID0g
MjE2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
biAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3JlcXVpcmUgPSByZXF1aXJlKCcuL1Jl
YWN0RWxlbWVudCcpLFxuICAgIGlzVmFsaWRFbGVtZW50ID0gX3JlcXVpcmUuaXNWYWxpZEVsZW1l
bnQ7XG5cbnZhciBmYWN0b3J5ID0gcmVxdWlyZSgncHJvcC10eXBlcy9mYWN0b3J5Jyk7XG5cbm1v
ZHVsZS5leHBvcnRzID0gZmFjdG9yeShpc1ZhbGlkRWxlbWVudCk7XG5cblxuLyoqKioqKioqKioq
KioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QvbGliL1JlYWN0UHJvcFR5
cGVzLmpzXG4gKiogbW9kdWxlIGlkID0gMjE3XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8i
LCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwg
cmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIg
X3JlcXVpcmUgPSByZXF1aXJlKCcuL1JlYWN0QmFzZUNsYXNzZXMnKSxcbiAgICBDb21wb25lbnQg
PSBfcmVxdWlyZS5Db21wb25lbnQ7XG5cbnZhciBfcmVxdWlyZTIgPSByZXF1aXJlKCcuL1JlYWN0
RWxlbWVudCcpLFxuICAgIGlzVmFsaWRFbGVtZW50ID0gX3JlcXVpcmUyLmlzVmFsaWRFbGVtZW50
O1xuXG52YXIgUmVhY3ROb29wVXBkYXRlUXVldWUgPSByZXF1aXJlKCcuL1JlYWN0Tm9vcFVwZGF0
ZVF1ZXVlJyk7XG52YXIgZmFjdG9yeSA9IHJlcXVpcmUoJ2NyZWF0ZS1yZWFjdC1jbGFzcy9mYWN0
b3J5Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZmFjdG9yeShDb21wb25lbnQsIGlzVmFsaWRFbGVt
ZW50LCBSZWFjdE5vb3BVcGRhdGVRdWV1ZSk7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiog
V0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QvbGliL2NyZWF0ZUNsYXNzLmpzXG4gKiogbW9k
dWxlIGlkID0gMjE5XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBuZXh0RGVidWdJ
RCA9IDE7XG5cbmZ1bmN0aW9uIGdldE5leHREZWJ1Z0lEKCkge1xuICByZXR1cm4gbmV4dERlYnVn
SUQrKztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXROZXh0RGVidWdJRDtcblxuXG4vKioqKioq
KioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC9saWIvZ2V0TmV4
dERlYnVnSUQuanNcbiAqKiBtb2R1bGUgaWQgPSAyMjFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxu
ICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTQtMjAxNSwgRmFjZWJvb2ssIEluYy5cbiAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8q
KlxuICogRm9ya2VkIGZyb20gZmJqcy93YXJuaW5nOlxuICogaHR0cHM6Ly9naXRodWIuY29tL2Zh
Y2Vib29rL2ZianMvYmxvYi9lNjZiYTIwYWQ1YmU0MzNlYjU0NDIzZjJiMDk3ZDgyOTMyNGQ5ZGU2
L3BhY2thZ2VzL2ZianMvc3JjL19fZm9ya3NfXy93YXJuaW5nLmpzXG4gKlxuICogT25seSBjaGFu
Z2UgaXMgd2UgdXNlIGNvbnNvbGUud2FybiBpbnN0ZWFkIG9mIGNvbnNvbGUuZXJyb3IsXG4gKiBh
bmQgZG8gbm90aGluZyB3aGVuICdjb25zb2xlJyBpcyBub3Qgc3VwcG9ydGVkLlxuICogVGhpcyBy
ZWFsbHkgc2ltcGxpZmllcyB0aGUgY29kZS5cbiAqIC0tLVxuICogU2ltaWxhciB0byBpbnZhcmlh
bnQgYnV0IG9ubHkgbG9ncyBhIHdhcm5pbmcgaWYgdGhlIGNvbmRpdGlvbiBpcyBub3QgbWV0Llxu
ICogVGhpcyBjYW4gYmUgdXNlZCB0byBsb2cgaXNzdWVzIGluIGRldmVsb3BtZW50IGVudmlyb25t
ZW50cyBpbiBjcml0aWNhbFxuICogcGF0aHMuIFJlbW92aW5nIHRoZSBsb2dnaW5nIGNvZGUgZm9y
IHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzIHdpbGwga2VlcCB0aGVcbiAqIHNhbWUgbG9naWMgYW5k
IGZvbGxvdyB0aGUgc2FtZSBjb2RlIHBhdGhzLlxuICovXG5cbnZhciBsb3dQcmlvcml0eVdhcm5p
bmcgPSBmdW5jdGlvbiAoKSB7fTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicpIHtcbiAgdmFyIHByaW50V2FybmluZyA9IGZ1bmN0aW9uIChmb3JtYXQpIHtcbiAg
ICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4gPiAx
ID8gX2xlbiAtIDEgOiAwKSwgX2tleSA9IDE7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAg
IGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICAgIH1cblxuICAgIHZhciBhcmdJ
bmRleCA9IDA7XG4gICAgdmFyIG1lc3NhZ2UgPSAnV2FybmluZzogJyArIGZvcm1hdC5yZXBsYWNl
KC8lcy9nLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gYXJnc1thcmdJbmRleCsrXTtcbiAg
ICB9KTtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBj
b25zb2xlLndhcm4obWVzc2FnZSk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAvLyAtLS0gV2Vs
Y29tZSB0byBkZWJ1Z2dpbmcgUmVhY3QgLS0tXG4gICAgICAvLyBUaGlzIGVycm9yIHdhcyB0aHJv
d24gYXMgYSBjb252ZW5pZW5jZSBzbyB0aGF0IHlvdSBjYW4gdXNlIHRoaXMgc3RhY2tcbiAgICAg
IC8vIHRvIGZpbmQgdGhlIGNhbGxzaXRlIHRoYXQgY2F1c2VkIHRoaXMgd2FybmluZyB0byBmaXJl
LlxuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gY2F0Y2ggKHgpIHt9XG4g
IH07XG5cbiAgbG93UHJpb3JpdHlXYXJuaW5nID0gZnVuY3Rpb24gKGNvbmRpdGlvbiwgZm9ybWF0
KSB7XG4gICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJy
b3IoJ2B3YXJuaW5nKGNvbmRpdGlvbiwgZm9ybWF0LCAuLi5hcmdzKWAgcmVxdWlyZXMgYSB3YXJu
aW5nICcgKyAnbWVzc2FnZSBhcmd1bWVudCcpO1xuICAgIH1cbiAgICBpZiAoIWNvbmRpdGlvbikg
e1xuICAgICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXko
X2xlbjIgPiAyID8gX2xlbjIgLSAyIDogMCksIF9rZXkyID0gMjsgX2tleTIgPCBfbGVuMjsgX2tl
eTIrKykge1xuICAgICAgICBhcmdzW19rZXkyIC0gMl0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAg
ICAgfVxuXG4gICAgICBwcmludFdhcm5pbmcuYXBwbHkodW5kZWZpbmVkLCBbZm9ybWF0XS5jb25j
YXQoYXJncykpO1xuICAgIH1cbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBsb3dQcmlvcml0
eVdhcm5pbmc7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAq
KiAuL34vcmVhY3QvbGliL2xvd1ByaW9yaXR5V2FybmluZy5qc1xuICoqIG1vZHVsZSBpZCA9IDIy
MlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4g
KlxuICovXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4v
cmVhY3RQcm9kSW52YXJpYW50Jyk7XG5cbnZhciBSZWFjdEVsZW1lbnQgPSByZXF1aXJlKCcuL1Jl
YWN0RWxlbWVudCcpO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJp
YW50Jyk7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgZmlyc3QgY2hpbGQgaW4gYSBjb2xsZWN0aW9u
IG9mIGNoaWxkcmVuIGFuZCB2ZXJpZmllcyB0aGF0IHRoZXJlXG4gKiBpcyBvbmx5IG9uZSBjaGls
ZCBpbiB0aGUgY29sbGVjdGlvbi5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIu
aW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY2hpbGRyZW4ub25seVxuICpc
biAqIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIHRoaXMgZnVuY3Rpb24gYXNzdW1lcyB0
aGF0IGEgc2luZ2xlIGNoaWxkIGdldHNcbiAqIHBhc3NlZCB3aXRob3V0IGEgd3JhcHBlciwgYnV0
IHRoZSBwdXJwb3NlIG9mIHRoaXMgaGVscGVyIGZ1bmN0aW9uIGlzIHRvXG4gKiBhYnN0cmFjdCBh
d2F5IHRoZSBwYXJ0aWN1bGFyIHN0cnVjdHVyZSBvZiBjaGlsZHJlbi5cbiAqXG4gKiBAcGFyYW0g
ez9vYmplY3R9IGNoaWxkcmVuIENoaWxkIGNvbGxlY3Rpb24gc3RydWN0dXJlLlxuICogQHJldHVy
biB7UmVhY3RFbGVtZW50fSBUaGUgZmlyc3QgYW5kIG9ubHkgYFJlYWN0RWxlbWVudGAgY29udGFp
bmVkIGluIHRoZVxuICogc3RydWN0dXJlLlxuICovXG5mdW5jdGlvbiBvbmx5Q2hpbGQoY2hpbGRy
ZW4pIHtcbiAgIVJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChjaGlsZHJlbikgPyBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3Qu
Q2hpbGRyZW4ub25seSBleHBlY3RlZCB0byByZWNlaXZlIGEgc2luZ2xlIFJlYWN0IGVsZW1lbnQg
Y2hpbGQuJykgOiBfcHJvZEludmFyaWFudCgnMTQzJykgOiB2b2lkIDA7XG4gIHJldHVybiBjaGls
ZHJlbjtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBvbmx5Q2hpbGQ7XG5cblxuLyoqKioqKioqKioq
KioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QvbGliL29ubHlDaGlsZC5q
c1xuICoqIG1vZHVsZSBpZCA9IDIyM1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoq
XG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0
cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxu
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9k
SW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFyIFJlYWN0
Q3VycmVudE93bmVyID0gcmVxdWlyZSgnLi9SZWFjdEN1cnJlbnRPd25lcicpO1xudmFyIFJFQUNU
X0VMRU1FTlRfVFlQRSA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50U3ltYm9sJyk7XG5cbnZhciBn
ZXRJdGVyYXRvckZuID0gcmVxdWlyZSgnLi9nZXRJdGVyYXRvckZuJyk7XG52YXIgaW52YXJpYW50
ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIgS2V5RXNjYXBlVXRpbHMgPSBy
ZXF1aXJlKCcuL0tleUVzY2FwZVV0aWxzJyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMv
bGliL3dhcm5pbmcnKTtcblxudmFyIFNFUEFSQVRPUiA9ICcuJztcbnZhciBTVUJTRVBBUkFUT1Ig
PSAnOic7XG5cbi8qKlxuICogVGhpcyBpcyBpbmxpbmVkIGZyb20gUmVhY3RFbGVtZW50IHNpbmNl
IHRoaXMgZmlsZSBpcyBzaGFyZWQgYmV0d2VlblxuICogaXNvbW9ycGhpYyBhbmQgcmVuZGVyZXJz
LiBXZSBjb3VsZCBleHRyYWN0IHRoaXMgdG8gYVxuICpcbiAqL1xuXG4vKipcbiAqIFRPRE86IFRl
c3QgdGhhdCBhIHNpbmdsZSBjaGlsZCBhbmQgYW4gYXJyYXkgd2l0aCBvbmUgaXRlbSBoYXZlIHRo
ZSBzYW1lIGtleVxuICogcGF0dGVybi5cbiAqL1xuXG52YXIgZGlkV2FybkFib3V0TWFwcyA9IGZh
bHNlO1xuXG4vKipcbiAqIEdlbmVyYXRlIGEga2V5IHN0cmluZyB0aGF0IGlkZW50aWZpZXMgYSBj
b21wb25lbnQgd2l0aGluIGEgc2V0LlxuICpcbiAqIEBwYXJhbSB7Kn0gY29tcG9uZW50IEEgY29t
cG9uZW50IHRoYXQgY291bGQgY29udGFpbiBhIG1hbnVhbCBrZXkuXG4gKiBAcGFyYW0ge251bWJl
cn0gaW5kZXggSW5kZXggdGhhdCBpcyB1c2VkIGlmIGEgbWFudWFsIGtleSBpcyBub3QgcHJvdmlk
ZWQuXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGdldENvbXBvbmVudEtleShj
b21wb25lbnQsIGluZGV4KSB7XG4gIC8vIERvIHNvbWUgdHlwZWNoZWNraW5nIGhlcmUgc2luY2Ug
d2UgY2FsbCB0aGlzIGJsaW5kbHkuIFdlIHdhbnQgdG8gZW5zdXJlXG4gIC8vIHRoYXQgd2UgZG9u
J3QgYmxvY2sgcG90ZW50aWFsIGZ1dHVyZSBFUyBBUElzLlxuICBpZiAoY29tcG9uZW50ICYmIHR5
cGVvZiBjb21wb25lbnQgPT09ICdvYmplY3QnICYmIGNvbXBvbmVudC5rZXkgIT0gbnVsbCkge1xu
ICAgIC8vIEV4cGxpY2l0IGtleVxuICAgIHJldHVybiBLZXlFc2NhcGVVdGlscy5lc2NhcGUoY29t
cG9uZW50LmtleSk7XG4gIH1cbiAgLy8gSW1wbGljaXQga2V5IGRldGVybWluZWQgYnkgdGhlIGlu
ZGV4IGluIHRoZSBzZXRcbiAgcmV0dXJuIGluZGV4LnRvU3RyaW5nKDM2KTtcbn1cblxuLyoqXG4g
KiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRhaW5lci5cbiAqIEBwYXJh
bSB7IXN0cmluZ30gbmFtZVNvRmFyIE5hbWUgb2YgdGhlIGtleSBwYXRoIHNvIGZhci5cbiAqIEBw
YXJhbSB7IWZ1bmN0aW9ufSBjYWxsYmFjayBDYWxsYmFjayB0byBpbnZva2Ugd2l0aCBlYWNoIGNo
aWxkIGZvdW5kLlxuICogQHBhcmFtIHs/Kn0gdHJhdmVyc2VDb250ZXh0IFVzZWQgdG8gcGFzcyBp
bmZvcm1hdGlvbiB0aHJvdWdob3V0IHRoZSB0cmF2ZXJzYWxcbiAqIHByb2Nlc3MuXG4gKiBAcmV0
dXJuIHshbnVtYmVyfSBUaGUgbnVtYmVyIG9mIGNoaWxkcmVuIGluIHRoaXMgc3VidHJlZS5cbiAq
L1xuZnVuY3Rpb24gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGRyZW4sIG5hbWVTb0Zhciwg
Y2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCkge1xuICB2YXIgdHlwZSA9IHR5cGVvZiBjaGlsZHJl
bjtcblxuICBpZiAodHlwZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZSA9PT0gJ2Jvb2xlYW4nKSB7
XG4gICAgLy8gQWxsIG9mIHRoZSBhYm92ZSBhcmUgcGVyY2VpdmVkIGFzIG51bGwuXG4gICAgY2hp
bGRyZW4gPSBudWxsO1xuICB9XG5cbiAgaWYgKGNoaWxkcmVuID09PSBudWxsIHx8IHR5cGUgPT09
ICdzdHJpbmcnIHx8IHR5cGUgPT09ICdudW1iZXInIHx8XG4gIC8vIFRoZSBmb2xsb3dpbmcgaXMg
aW5saW5lZCBmcm9tIFJlYWN0RWxlbWVudC4gVGhpcyBtZWFucyB3ZSBjYW4gb3B0aW1pemVcbiAg
Ly8gc29tZSBjaGVja3MuIFJlYWN0IEZpYmVyIGFsc28gaW5saW5lcyB0aGlzIGxvZ2ljIGZvciBz
aW1pbGFyIHB1cnBvc2VzLlxuICB0eXBlID09PSAnb2JqZWN0JyAmJiBjaGlsZHJlbi4kJHR5cGVv
ZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFKSB7XG4gICAgY2FsbGJhY2sodHJhdmVyc2VDb250ZXh0
LCBjaGlsZHJlbixcbiAgICAvLyBJZiBpdCdzIHRoZSBvbmx5IGNoaWxkLCB0cmVhdCB0aGUgbmFt
ZSBhcyBpZiBpdCB3YXMgd3JhcHBlZCBpbiBhbiBhcnJheVxuICAgIC8vIHNvIHRoYXQgaXQncyBj
b25zaXN0ZW50IGlmIHRoZSBudW1iZXIgb2YgY2hpbGRyZW4gZ3Jvd3MuXG4gICAgbmFtZVNvRmFy
ID09PSAnJyA/IFNFUEFSQVRPUiArIGdldENvbXBvbmVudEtleShjaGlsZHJlbiwgMCkgOiBuYW1l
U29GYXIpO1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgdmFyIGNoaWxkO1xuICB2YXIgbmV4dE5h
bWU7XG4gIHZhciBzdWJ0cmVlQ291bnQgPSAwOyAvLyBDb3VudCBvZiBjaGlsZHJlbiBmb3VuZCBp
biB0aGUgY3VycmVudCBzdWJ0cmVlLlxuICB2YXIgbmV4dE5hbWVQcmVmaXggPSBuYW1lU29GYXIg
PT09ICcnID8gU0VQQVJBVE9SIDogbmFtZVNvRmFyICsgU1VCU0VQQVJBVE9SO1xuXG4gIGlmIChB
cnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRy
ZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNoaWxkID0gY2hpbGRyZW5baV07XG4gICAgICBuZXh0
TmFtZSA9IG5leHROYW1lUHJlZml4ICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkLCBpKTtcbiAgICAg
IHN1YnRyZWVDb3VudCArPSB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZCwgbmV4dE5hbWUs
IGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICB2YXIg
aXRlcmF0b3JGbiA9IGdldEl0ZXJhdG9yRm4oY2hpbGRyZW4pO1xuICAgIGlmIChpdGVyYXRvckZu
KSB7XG4gICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwoY2hpbGRyZW4pO1xuICAg
ICAgdmFyIHN0ZXA7XG4gICAgICBpZiAoaXRlcmF0b3JGbiAhPT0gY2hpbGRyZW4uZW50cmllcykg
e1xuICAgICAgICB2YXIgaWkgPSAwO1xuICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3Iu
bmV4dCgpKS5kb25lKSB7XG4gICAgICAgICAgY2hpbGQgPSBzdGVwLnZhbHVlO1xuICAgICAgICAg
IG5leHROYW1lID0gbmV4dE5hbWVQcmVmaXggKyBnZXRDb21wb25lbnRLZXkoY2hpbGQsIGlpKysp
O1xuICAgICAgICAgIHN1YnRyZWVDb3VudCArPSB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGls
ZCwgbmV4dE5hbWUsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpO1xuICAgICAgICB9XG4gICAg
ICB9IGVsc2Uge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJykge1xuICAgICAgICAgIHZhciBtYXBzQXNDaGlsZHJlbkFkZGVuZHVtID0gJyc7XG4gICAg
ICAgICAgaWYgKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHZhciBt
YXBzQXNDaGlsZHJlbk93bmVyTmFtZSA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQuZ2V0TmFt
ZSgpO1xuICAgICAgICAgICAgaWYgKG1hcHNBc0NoaWxkcmVuT3duZXJOYW1lKSB7XG4gICAgICAg
ICAgICAgIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0gPSAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9k
IG9mIGAnICsgbWFwc0FzQ2hpbGRyZW5Pd25lck5hbWUgKyAnYC4nO1xuICAgICAgICAgICAgfVxu
ICAgICAgICAgIH1cbiAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gd2FybmluZyhkaWRXYXJuQWJvdXRNYXBzLCAnVXNpbmcgTWFwcyBhcyBjaGlsZHJlbiBp
cyBub3QgeWV0IGZ1bGx5IHN1cHBvcnRlZC4gSXQgaXMgYW4gJyArICdleHBlcmltZW50YWwgZmVh
dHVyZSB0aGF0IG1pZ2h0IGJlIHJlbW92ZWQuIENvbnZlcnQgaXQgdG8gYSAnICsgJ3NlcXVlbmNl
IC8gaXRlcmFibGUgb2Yga2V5ZWQgUmVhY3RFbGVtZW50cyBpbnN0ZWFkLiVzJywgbWFwc0FzQ2hp
bGRyZW5BZGRlbmR1bSkgOiB2b2lkIDA7XG4gICAgICAgICAgZGlkV2FybkFib3V0TWFwcyA9IHRy
dWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSXRlcmF0b3Igd2lsbCBwcm92aWRlIGVudHJ5IFtr
LHZdIHR1cGxlcyByYXRoZXIgdGhhbiB2YWx1ZXMuXG4gICAgICAgIHdoaWxlICghKHN0ZXAgPSBp
dGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcbiAgICAgICAgICB2YXIgZW50cnkgPSBzdGVwLnZhbHVl
O1xuICAgICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgICAgY2hpbGQgPSBlbnRyeVsxXTtc
biAgICAgICAgICAgIG5leHROYW1lID0gbmV4dE5hbWVQcmVmaXggKyBLZXlFc2NhcGVVdGlscy5l
c2NhcGUoZW50cnlbMF0pICsgU1VCU0VQQVJBVE9SICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkLCAw
KTtcbiAgICAgICAgICAgIHN1YnRyZWVDb3VudCArPSB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChj
aGlsZCwgbmV4dE5hbWUsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpO1xuICAgICAgICAgIH1c
biAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ29iamVjdCcpIHtc
biAgICAgIHZhciBhZGRlbmR1bSA9ICcnO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgYWRkZW5kdW0gPSAnIElmIHlvdSBtZWFudCB0
byByZW5kZXIgYSBjb2xsZWN0aW9uIG9mIGNoaWxkcmVuLCB1c2UgYW4gYXJyYXkgJyArICdpbnN0
ZWFkIG9yIHdyYXAgdGhlIG9iamVjdCB1c2luZyBjcmVhdGVGcmFnbWVudChvYmplY3QpIGZyb20g
dGhlICcgKyAnUmVhY3QgYWRkLW9ucy4nO1xuICAgICAgICBpZiAoY2hpbGRyZW4uX2lzUmVhY3RF
bGVtZW50KSB7XG4gICAgICAgICAgYWRkZW5kdW0gPSBcIiBJdCBsb29rcyBsaWtlIHlvdSdyZSB1
c2luZyBhbiBlbGVtZW50IGNyZWF0ZWQgYnkgYSBkaWZmZXJlbnQgXCIgKyAndmVyc2lvbiBvZiBS
ZWFjdC4gTWFrZSBzdXJlIHRvIHVzZSBvbmx5IG9uZSBjb3B5IG9mIFJlYWN0Lic7XG4gICAgICAg
IH1cbiAgICAgICAgaWYgKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQpIHtcbiAgICAgICAgICB2
YXIgbmFtZSA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQuZ2V0TmFtZSgpO1xuICAgICAgICAg
IGlmIChuYW1lKSB7XG4gICAgICAgICAgICBhZGRlbmR1bSArPSAnIENoZWNrIHRoZSByZW5kZXIg
bWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAg
ICB9XG4gICAgICB2YXIgY2hpbGRyZW5TdHJpbmcgPSBTdHJpbmcoY2hpbGRyZW4pO1xuICAgICAg
IWZhbHNlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFu
dChmYWxzZSwgJ09iamVjdHMgYXJlIG5vdCB2YWxpZCBhcyBhIFJlYWN0IGNoaWxkIChmb3VuZDog
JXMpLiVzJywgY2hpbGRyZW5TdHJpbmcgPT09ICdbb2JqZWN0IE9iamVjdF0nID8gJ29iamVjdCB3
aXRoIGtleXMgeycgKyBPYmplY3Qua2V5cyhjaGlsZHJlbikuam9pbignLCAnKSArICd9JyA6IGNo
aWxkcmVuU3RyaW5nLCBhZGRlbmR1bSkgOiBfcHJvZEludmFyaWFudCgnMzEnLCBjaGlsZHJlblN0
cmluZyA9PT0gJ1tvYmplY3QgT2JqZWN0XScgPyAnb2JqZWN0IHdpdGgga2V5cyB7JyArIE9iamVj
dC5rZXlzKGNoaWxkcmVuKS5qb2luKCcsICcpICsgJ30nIDogY2hpbGRyZW5TdHJpbmcsIGFkZGVu
ZHVtKSA6IHZvaWQgMDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3VidHJlZUNvdW50O1xufVxu
XG4vKipcbiAqIFRyYXZlcnNlcyBjaGlsZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVk
IGFzIGBwcm9wcy5jaGlsZHJlbmAsIGJ1dFxuICogbWlnaHQgYWxzbyBiZSBzcGVjaWZpZWQgdGhy
b3VnaCBhdHRyaWJ1dGVzOlxuICpcbiAqIC0gYHRyYXZlcnNlQWxsQ2hpbGRyZW4odGhpcy5wcm9w
cy5jaGlsZHJlbiwgLi4uKWBcbiAqIC0gYHRyYXZlcnNlQWxsQ2hpbGRyZW4odGhpcy5wcm9wcy5s
ZWZ0UGFuZWxDaGlsZHJlbiwgLi4uKWBcbiAqXG4gKiBUaGUgYHRyYXZlcnNlQ29udGV4dGAgaXMg
YW4gb3B0aW9uYWwgYXJndW1lbnQgdGhhdCBpcyBwYXNzZWQgdGhyb3VnaCB0aGVcbiAqIGVudGly
ZSB0cmF2ZXJzYWwuIEl0IGNhbiBiZSB1c2VkIHRvIHN0b3JlIGFjY3VtdWxhdGlvbnMgb3IgYW55
dGhpbmcgZWxzZSB0aGF0XG4gKiB0aGUgY2FsbGJhY2sgbWlnaHQgZmluZCByZWxldmFudC5cbiAq
XG4gKiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIG9iamVjdC5cbiAqIEBwYXJh
bSB7IWZ1bmN0aW9ufSBjYWxsYmFjayBUbyBpbnZva2UgdXBvbiB0cmF2ZXJzaW5nIGVhY2ggY2hp
bGQuXG4gKiBAcGFyYW0gez8qfSB0cmF2ZXJzZUNvbnRleHQgQ29udGV4dCBmb3IgdHJhdmVyc2Fs
LlxuICogQHJldHVybiB7IW51bWJlcn0gVGhlIG51bWJlciBvZiBjaGlsZHJlbiBpbiB0aGlzIHN1
YnRyZWUuXG4gKi9cbmZ1bmN0aW9uIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGNhbGxi
YWNrLCB0cmF2ZXJzZUNvbnRleHQpIHtcbiAgaWYgKGNoaWxkcmVuID09IG51bGwpIHtcbiAgICBy
ZXR1cm4gMDtcbiAgfVxuXG4gIHJldHVybiB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZHJl
biwgJycsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9
IHRyYXZlcnNlQWxsQ2hpbGRyZW47XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFD
SyBGT09URVJcbiAqKiAuL34vcmVhY3QvbGliL3RyYXZlcnNlQWxsQ2hpbGRyZW4uanNcbiAqKiBt
b2R1bGUgaWQgPSAyMjRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0
JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFyIF9leHRlbmRzID0gT2JqZWN0
LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1l
bnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtl
eSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChz
b3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRh
cmdldDsgfTtcblxuZXhwb3J0c1snZGVmYXVsdCddID0gYXBwbHlNaWRkbGV3YXJlO1xuXG52YXIg
X2NvbXBvc2UgPSByZXF1aXJlKCcuL2NvbXBvc2UnKTtcblxudmFyIF9jb21wb3NlMiA9IF9pbnRl
cm9wUmVxdWlyZURlZmF1bHQoX2NvbXBvc2UpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVE
ZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVm
YXVsdCc6IG9iaiB9OyB9XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN0b3JlIGVuaGFuY2VyIHRoYXQg
YXBwbGllcyBtaWRkbGV3YXJlIHRvIHRoZSBkaXNwYXRjaCBtZXRob2RcbiAqIG9mIHRoZSBSZWR1
eCBzdG9yZS4gVGhpcyBpcyBoYW5keSBmb3IgYSB2YXJpZXR5IG9mIHRhc2tzLCBzdWNoIGFzIGV4
cHJlc3NpbmdcbiAqIGFzeW5jaHJvbm91cyBhY3Rpb25zIGluIGEgY29uY2lzZSBtYW5uZXIsIG9y
IGxvZ2dpbmcgZXZlcnkgYWN0aW9uIHBheWxvYWQuXG4gKlxuICogU2VlIGByZWR1eC10aHVua2Ag
cGFja2FnZSBhcyBhbiBleGFtcGxlIG9mIHRoZSBSZWR1eCBtaWRkbGV3YXJlLlxuICpcbiAqIEJl
Y2F1c2UgbWlkZGxld2FyZSBpcyBwb3RlbnRpYWxseSBhc3luY2hyb25vdXMsIHRoaXMgc2hvdWxk
IGJlIHRoZSBmaXJzdFxuICogc3RvcmUgZW5oYW5jZXIgaW4gdGhlIGNvbXBvc2l0aW9uIGNoYWlu
LlxuICpcbiAqIE5vdGUgdGhhdCBlYWNoIG1pZGRsZXdhcmUgd2lsbCBiZSBnaXZlbiB0aGUgYGRp
c3BhdGNoYCBhbmQgYGdldFN0YXRlYCBmdW5jdGlvbnNcbiAqIGFzIG5hbWVkIGFyZ3VtZW50cy5c
biAqXG4gKiBAcGFyYW0gey4uLkZ1bmN0aW9ufSBtaWRkbGV3YXJlcyBUaGUgbWlkZGxld2FyZSBj
aGFpbiB0byBiZSBhcHBsaWVkLlxuICogQHJldHVybnMge0Z1bmN0aW9ufSBBIHN0b3JlIGVuaGFu
Y2VyIGFwcGx5aW5nIHRoZSBtaWRkbGV3YXJlLlxuICovXG5mdW5jdGlvbiBhcHBseU1pZGRsZXdh
cmUoKSB7XG4gIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBtaWRkbGV3YXJlcyA9
IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIG1pZGRs
ZXdhcmVzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9u
IChjcmVhdGVTdG9yZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiAocmVkdWNlciwgcHJlbG9hZGVk
U3RhdGUsIGVuaGFuY2VyKSB7XG4gICAgICB2YXIgc3RvcmUgPSBjcmVhdGVTdG9yZShyZWR1Y2Vy
LCBwcmVsb2FkZWRTdGF0ZSwgZW5oYW5jZXIpO1xuICAgICAgdmFyIF9kaXNwYXRjaCA9IHN0b3Jl
LmRpc3BhdGNoO1xuICAgICAgdmFyIGNoYWluID0gW107XG5cbiAgICAgIHZhciBtaWRkbGV3YXJl
QVBJID0ge1xuICAgICAgICBnZXRTdGF0ZTogc3RvcmUuZ2V0U3RhdGUsXG4gICAgICAgIGRpc3Bh
dGNoOiBmdW5jdGlvbiBkaXNwYXRjaChhY3Rpb24pIHtcbiAgICAgICAgICByZXR1cm4gX2Rpc3Bh
dGNoKGFjdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBjaGFpbiA9IG1pZGRsZXdh
cmVzLm1hcChmdW5jdGlvbiAobWlkZGxld2FyZSkge1xuICAgICAgICByZXR1cm4gbWlkZGxld2Fy
ZShtaWRkbGV3YXJlQVBJKTtcbiAgICAgIH0pO1xuICAgICAgX2Rpc3BhdGNoID0gX2NvbXBvc2Uy
WydkZWZhdWx0J10uYXBwbHkodW5kZWZpbmVkLCBjaGFpbikoc3RvcmUuZGlzcGF0Y2gpO1xuXG4g
ICAgICByZXR1cm4gX2V4dGVuZHMoe30sIHN0b3JlLCB7XG4gICAgICAgIGRpc3BhdGNoOiBfZGlz
cGF0Y2hcbiAgICAgIH0pO1xuICAgIH07XG4gIH07XG59XG5cblxuLyoqKioqKioqKioqKioqKioq
XG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVkdXgvbGliL2FwcGx5TWlkZGxld2FyZS5q
c1xuICoqIG1vZHVsZSBpZCA9IDIyNVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3Vz
ZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0c1snZGVmYXVs
dCddID0gYmluZEFjdGlvbkNyZWF0b3JzO1xuZnVuY3Rpb24gYmluZEFjdGlvbkNyZWF0b3IoYWN0
aW9uQ3JlYXRvciwgZGlzcGF0Y2gpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1
cm4gZGlzcGF0Y2goYWN0aW9uQ3JlYXRvci5hcHBseSh1bmRlZmluZWQsIGFyZ3VtZW50cykpO1xu
ICB9O1xufVxuXG4vKipcbiAqIFR1cm5zIGFuIG9iamVjdCB3aG9zZSB2YWx1ZXMgYXJlIGFjdGlv
biBjcmVhdG9ycywgaW50byBhbiBvYmplY3Qgd2l0aCB0aGVcbiAqIHNhbWUga2V5cywgYnV0IHdp
dGggZXZlcnkgZnVuY3Rpb24gd3JhcHBlZCBpbnRvIGEgYGRpc3BhdGNoYCBjYWxsIHNvIHRoZXlc
biAqIG1heSBiZSBpbnZva2VkIGRpcmVjdGx5LiBUaGlzIGlzIGp1c3QgYSBjb252ZW5pZW5jZSBt
ZXRob2QsIGFzIHlvdSBjYW4gY2FsbFxuICogYHN0b3JlLmRpc3BhdGNoKE15QWN0aW9uQ3JlYXRv
cnMuZG9Tb21ldGhpbmcoKSlgIHlvdXJzZWxmIGp1c3QgZmluZS5cbiAqXG4gKiBGb3IgY29udmVu
aWVuY2UsIHlvdSBjYW4gYWxzbyBwYXNzIGEgc2luZ2xlIGZ1bmN0aW9uIGFzIHRoZSBmaXJzdCBh
cmd1bWVudCxcbiAqIGFuZCBnZXQgYSBmdW5jdGlvbiBpbiByZXR1cm4uXG4gKlxuICogQHBhcmFt
IHtGdW5jdGlvbnxPYmplY3R9IGFjdGlvbkNyZWF0b3JzIEFuIG9iamVjdCB3aG9zZSB2YWx1ZXMg
YXJlIGFjdGlvblxuICogY3JlYXRvciBmdW5jdGlvbnMuIE9uZSBoYW5keSB3YXkgdG8gb2J0YWlu
IGl0IGlzIHRvIHVzZSBFUzYgYGltcG9ydCAqIGFzYFxuICogc3ludGF4LiBZb3UgbWF5IGFsc28g
cGFzcyBhIHNpbmdsZSBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBkaXNwYXRj
aCBUaGUgYGRpc3BhdGNoYCBmdW5jdGlvbiBhdmFpbGFibGUgb24geW91ciBSZWR1eFxuICogc3Rv
cmUuXG4gKlxuICogQHJldHVybnMge0Z1bmN0aW9ufE9iamVjdH0gVGhlIG9iamVjdCBtaW1pY2tp
bmcgdGhlIG9yaWdpbmFsIG9iamVjdCwgYnV0IHdpdGhcbiAqIGV2ZXJ5IGFjdGlvbiBjcmVhdG9y
IHdyYXBwZWQgaW50byB0aGUgYGRpc3BhdGNoYCBjYWxsLiBJZiB5b3UgcGFzc2VkIGFcbiAqIGZ1
bmN0aW9uIGFzIGBhY3Rpb25DcmVhdG9yc2AsIHRoZSByZXR1cm4gdmFsdWUgd2lsbCBhbHNvIGJl
IGEgc2luZ2xlXG4gKiBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gYmluZEFjdGlvbkNyZWF0b3Jz
KGFjdGlvbkNyZWF0b3JzLCBkaXNwYXRjaCkge1xuICBpZiAodHlwZW9mIGFjdGlvbkNyZWF0b3Jz
ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgcmV0dXJuIGJpbmRBY3Rpb25DcmVhdG9yKGFjdGlvbkNy
ZWF0b3JzLCBkaXNwYXRjaCk7XG4gIH1cblxuICBpZiAodHlwZW9mIGFjdGlvbkNyZWF0b3JzICE9
PSAnb2JqZWN0JyB8fCBhY3Rpb25DcmVhdG9ycyA9PT0gbnVsbCkge1xuICAgIHRocm93IG5ldyBF
cnJvcignYmluZEFjdGlvbkNyZWF0b3JzIGV4cGVjdGVkIGFuIG9iamVjdCBvciBhIGZ1bmN0aW9u
LCBpbnN0ZWFkIHJlY2VpdmVkICcgKyAoYWN0aW9uQ3JlYXRvcnMgPT09IG51bGwgPyAnbnVsbCcg
OiB0eXBlb2YgYWN0aW9uQ3JlYXRvcnMpICsgJy4gJyArICdEaWQgeW91IHdyaXRlIFwiaW1wb3J0
IEFjdGlvbkNyZWF0b3JzIGZyb21cIiBpbnN0ZWFkIG9mIFwiaW1wb3J0ICogYXMgQWN0aW9uQ3Jl
YXRvcnMgZnJvbVwiPycpO1xuICB9XG5cbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhhY3Rpb25D
cmVhdG9ycyk7XG4gIHZhciBib3VuZEFjdGlvbkNyZWF0b3JzID0ge307XG4gIGZvciAodmFyIGkg
PSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSBrZXlzW2ldO1xuICAg
IHZhciBhY3Rpb25DcmVhdG9yID0gYWN0aW9uQ3JlYXRvcnNba2V5XTtcbiAgICBpZiAodHlwZW9m
IGFjdGlvbkNyZWF0b3IgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGJvdW5kQWN0aW9uQ3JlYXRv
cnNba2V5XSA9IGJpbmRBY3Rpb25DcmVhdG9yKGFjdGlvbkNyZWF0b3IsIGRpc3BhdGNoKTtcbiAg
ICB9XG4gIH1cbiAgcmV0dXJuIGJvdW5kQWN0aW9uQ3JlYXRvcnM7XG59XG5cblxuLyoqKioqKioq
KioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVkdXgvbGliL2JpbmRBY3Rp
b25DcmVhdG9ycy5qc1xuICoqIG1vZHVsZSBpZCA9IDIyNlxuICoqIG1vZHVsZSBjaHVua3MgPSAw
XG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhw
b3J0c1snZGVmYXVsdCddID0gY29tYmluZVJlZHVjZXJzO1xuXG52YXIgX2NyZWF0ZVN0b3JlID0g
cmVxdWlyZSgnLi9jcmVhdGVTdG9yZScpO1xuXG52YXIgX2lzUGxhaW5PYmplY3QgPSByZXF1aXJl
KCdsb2Rhc2gvaXNQbGFpbk9iamVjdCcpO1xuXG52YXIgX2lzUGxhaW5PYmplY3QyID0gX2ludGVy
b3BSZXF1aXJlRGVmYXVsdChfaXNQbGFpbk9iamVjdCk7XG5cbnZhciBfd2FybmluZyA9IHJlcXVp
cmUoJy4vdXRpbHMvd2FybmluZycpO1xuXG52YXIgX3dhcm5pbmcyID0gX2ludGVyb3BSZXF1aXJl
RGVmYXVsdChfd2FybmluZyk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2Jq
KSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2Jq
IH07IH1cblxuZnVuY3Rpb24gZ2V0VW5kZWZpbmVkU3RhdGVFcnJvck1lc3NhZ2Uoa2V5LCBhY3Rp
b24pIHtcbiAgdmFyIGFjdGlvblR5cGUgPSBhY3Rpb24gJiYgYWN0aW9uLnR5cGU7XG4gIHZhciBh
Y3Rpb25OYW1lID0gYWN0aW9uVHlwZSAmJiAnXCInICsgYWN0aW9uVHlwZS50b1N0cmluZygpICsg
J1wiJyB8fCAnYW4gYWN0aW9uJztcblxuICByZXR1cm4gJ0dpdmVuIGFjdGlvbiAnICsgYWN0aW9u
TmFtZSArICcsIHJlZHVjZXIgXCInICsga2V5ICsgJ1wiIHJldHVybmVkIHVuZGVmaW5lZC4gJyAr
ICdUbyBpZ25vcmUgYW4gYWN0aW9uLCB5b3UgbXVzdCBleHBsaWNpdGx5IHJldHVybiB0aGUgcHJl
dmlvdXMgc3RhdGUuICcgKyAnSWYgeW91IHdhbnQgdGhpcyByZWR1Y2VyIHRvIGhvbGQgbm8gdmFs
dWUsIHlvdSBjYW4gcmV0dXJuIG51bGwgaW5zdGVhZCBvZiB1bmRlZmluZWQuJztcbn1cblxuZnVu
Y3Rpb24gZ2V0VW5leHBlY3RlZFN0YXRlU2hhcGVXYXJuaW5nTWVzc2FnZShpbnB1dFN0YXRlLCBy
ZWR1Y2VycywgYWN0aW9uLCB1bmV4cGVjdGVkS2V5Q2FjaGUpIHtcbiAgdmFyIHJlZHVjZXJLZXlz
ID0gT2JqZWN0LmtleXMocmVkdWNlcnMpO1xuICB2YXIgYXJndW1lbnROYW1lID0gYWN0aW9uICYm
IGFjdGlvbi50eXBlID09PSBfY3JlYXRlU3RvcmUuQWN0aW9uVHlwZXMuSU5JVCA/ICdwcmVsb2Fk
ZWRTdGF0ZSBhcmd1bWVudCBwYXNzZWQgdG8gY3JlYXRlU3RvcmUnIDogJ3ByZXZpb3VzIHN0YXRl
IHJlY2VpdmVkIGJ5IHRoZSByZWR1Y2VyJztcblxuICBpZiAocmVkdWNlcktleXMubGVuZ3RoID09
PSAwKSB7XG4gICAgcmV0dXJuICdTdG9yZSBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgcmVkdWNlci4g
TWFrZSBzdXJlIHRoZSBhcmd1bWVudCBwYXNzZWQgJyArICd0byBjb21iaW5lUmVkdWNlcnMgaXMg
YW4gb2JqZWN0IHdob3NlIHZhbHVlcyBhcmUgcmVkdWNlcnMuJztcbiAgfVxuXG4gIGlmICghKDAs
IF9pc1BsYWluT2JqZWN0MlsnZGVmYXVsdCddKShpbnB1dFN0YXRlKSkge1xuICAgIHJldHVybiAn
VGhlICcgKyBhcmd1bWVudE5hbWUgKyAnIGhhcyB1bmV4cGVjdGVkIHR5cGUgb2YgXCInICsge30u
dG9TdHJpbmcuY2FsbChpbnB1dFN0YXRlKS5tYXRjaCgvXFxzKFthLXp8QS1aXSspLylbMV0gKyAn
XCIuIEV4cGVjdGVkIGFyZ3VtZW50IHRvIGJlIGFuIG9iamVjdCB3aXRoIHRoZSBmb2xsb3dpbmcg
JyArICgna2V5czogXCInICsgcmVkdWNlcktleXMuam9pbignXCIsIFwiJykgKyAnXCInKTtcbiAg
fVxuXG4gIHZhciB1bmV4cGVjdGVkS2V5cyA9IE9iamVjdC5rZXlzKGlucHV0U3RhdGUpLmZpbHRl
cihmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuICFyZWR1Y2Vycy5oYXNPd25Qcm9wZXJ0eShr
ZXkpICYmICF1bmV4cGVjdGVkS2V5Q2FjaGVba2V5XTtcbiAgfSk7XG5cbiAgdW5leHBlY3RlZEtl
eXMuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4gICAgdW5leHBlY3RlZEtleUNhY2hlW2tleV0g
PSB0cnVlO1xuICB9KTtcblxuICBpZiAodW5leHBlY3RlZEtleXMubGVuZ3RoID4gMCkge1xuICAg
IHJldHVybiAnVW5leHBlY3RlZCAnICsgKHVuZXhwZWN0ZWRLZXlzLmxlbmd0aCA+IDEgPyAna2V5
cycgOiAna2V5JykgKyAnICcgKyAoJ1wiJyArIHVuZXhwZWN0ZWRLZXlzLmpvaW4oJ1wiLCBcIicp
ICsgJ1wiIGZvdW5kIGluICcgKyBhcmd1bWVudE5hbWUgKyAnLiAnKSArICdFeHBlY3RlZCB0byBm
aW5kIG9uZSBvZiB0aGUga25vd24gcmVkdWNlciBrZXlzIGluc3RlYWQ6ICcgKyAoJ1wiJyArIHJl
ZHVjZXJLZXlzLmpvaW4oJ1wiLCBcIicpICsgJ1wiLiBVbmV4cGVjdGVkIGtleXMgd2lsbCBiZSBp
Z25vcmVkLicpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFzc2VydFJlZHVjZXJTaGFwZShyZWR1Y2Vy
cykge1xuICBPYmplY3Qua2V5cyhyZWR1Y2VycykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG4g
ICAgdmFyIHJlZHVjZXIgPSByZWR1Y2Vyc1trZXldO1xuICAgIHZhciBpbml0aWFsU3RhdGUgPSBy
ZWR1Y2VyKHVuZGVmaW5lZCwgeyB0eXBlOiBfY3JlYXRlU3RvcmUuQWN0aW9uVHlwZXMuSU5JVCB9
KTtcblxuICAgIGlmICh0eXBlb2YgaW5pdGlhbFN0YXRlID09PSAndW5kZWZpbmVkJykge1xuICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdSZWR1Y2VyIFwiJyArIGtleSArICdcIiByZXR1cm5lZCB1bmRl
ZmluZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLiAnICsgJ0lmIHRoZSBzdGF0ZSBwYXNzZWQgdG8g
dGhlIHJlZHVjZXIgaXMgdW5kZWZpbmVkLCB5b3UgbXVzdCAnICsgJ2V4cGxpY2l0bHkgcmV0dXJu
IHRoZSBpbml0aWFsIHN0YXRlLiBUaGUgaW5pdGlhbCBzdGF0ZSBtYXkgJyArICdub3QgYmUgdW5k
ZWZpbmVkLiBJZiB5b3UgZG9uXFwndCB3YW50IHRvIHNldCBhIHZhbHVlIGZvciB0aGlzIHJlZHVj
ZXIsICcgKyAneW91IGNhbiB1c2UgbnVsbCBpbnN0ZWFkIG9mIHVuZGVmaW5lZC4nKTtcbiAgICB9
XG5cbiAgICB2YXIgdHlwZSA9ICdAQHJlZHV4L1BST0JFX1VOS05PV05fQUNUSU9OXycgKyBNYXRo
LnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoNykuc3BsaXQoJycpLmpvaW4oJy4nKTtc
biAgICBpZiAodHlwZW9mIHJlZHVjZXIodW5kZWZpbmVkLCB7IHR5cGU6IHR5cGUgfSkgPT09ICd1
bmRlZmluZWQnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlZHVjZXIgXCInICsga2V5ICsg
J1wiIHJldHVybmVkIHVuZGVmaW5lZCB3aGVuIHByb2JlZCB3aXRoIGEgcmFuZG9tIHR5cGUuICcg
KyAoJ0RvblxcJ3QgdHJ5IHRvIGhhbmRsZSAnICsgX2NyZWF0ZVN0b3JlLkFjdGlvblR5cGVzLklO
SVQgKyAnIG9yIG90aGVyIGFjdGlvbnMgaW4gXCJyZWR1eC8qXCIgJykgKyAnbmFtZXNwYWNlLiBU
aGV5IGFyZSBjb25zaWRlcmVkIHByaXZhdGUuIEluc3RlYWQsIHlvdSBtdXN0IHJldHVybiB0aGUg
JyArICdjdXJyZW50IHN0YXRlIGZvciBhbnkgdW5rbm93biBhY3Rpb25zLCB1bmxlc3MgaXQgaXMg
dW5kZWZpbmVkLCAnICsgJ2luIHdoaWNoIGNhc2UgeW91IG11c3QgcmV0dXJuIHRoZSBpbml0aWFs
IHN0YXRlLCByZWdhcmRsZXNzIG9mIHRoZSAnICsgJ2FjdGlvbiB0eXBlLiBUaGUgaW5pdGlhbCBz
dGF0ZSBtYXkgbm90IGJlIHVuZGVmaW5lZCwgYnV0IGNhbiBiZSBudWxsLicpO1xuICAgIH1cbiAg
fSk7XG59XG5cbi8qKlxuICogVHVybnMgYW4gb2JqZWN0IHdob3NlIHZhbHVlcyBhcmUgZGlmZmVy
ZW50IHJlZHVjZXIgZnVuY3Rpb25zLCBpbnRvIGEgc2luZ2xlXG4gKiByZWR1Y2VyIGZ1bmN0aW9u
LiBJdCB3aWxsIGNhbGwgZXZlcnkgY2hpbGQgcmVkdWNlciwgYW5kIGdhdGhlciB0aGVpciByZXN1
bHRzXG4gKiBpbnRvIGEgc2luZ2xlIHN0YXRlIG9iamVjdCwgd2hvc2Uga2V5cyBjb3JyZXNwb25k
IHRvIHRoZSBrZXlzIG9mIHRoZSBwYXNzZWRcbiAqIHJlZHVjZXIgZnVuY3Rpb25zLlxuICpcbiAq
IEBwYXJhbSB7T2JqZWN0fSByZWR1Y2VycyBBbiBvYmplY3Qgd2hvc2UgdmFsdWVzIGNvcnJlc3Bv
bmQgdG8gZGlmZmVyZW50XG4gKiByZWR1Y2VyIGZ1bmN0aW9ucyB0aGF0IG5lZWQgdG8gYmUgY29t
YmluZWQgaW50byBvbmUuIE9uZSBoYW5keSB3YXkgdG8gb2J0YWluXG4gKiBpdCBpcyB0byB1c2Ug
RVM2IGBpbXBvcnQgKiBhcyByZWR1Y2Vyc2Agc3ludGF4LiBUaGUgcmVkdWNlcnMgbWF5IG5ldmVy
IHJldHVyblxuICogdW5kZWZpbmVkIGZvciBhbnkgYWN0aW9uLiBJbnN0ZWFkLCB0aGV5IHNob3Vs
ZCByZXR1cm4gdGhlaXIgaW5pdGlhbCBzdGF0ZVxuICogaWYgdGhlIHN0YXRlIHBhc3NlZCB0byB0
aGVtIHdhcyB1bmRlZmluZWQsIGFuZCB0aGUgY3VycmVudCBzdGF0ZSBmb3IgYW55XG4gKiB1bnJl
Y29nbml6ZWQgYWN0aW9uLlxuICpcbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gQSByZWR1Y2VyIGZ1
bmN0aW9uIHRoYXQgaW52b2tlcyBldmVyeSByZWR1Y2VyIGluc2lkZSB0aGVcbiAqIHBhc3NlZCBv
YmplY3QsIGFuZCBidWlsZHMgYSBzdGF0ZSBvYmplY3Qgd2l0aCB0aGUgc2FtZSBzaGFwZS5cbiAq
L1xuZnVuY3Rpb24gY29tYmluZVJlZHVjZXJzKHJlZHVjZXJzKSB7XG4gIHZhciByZWR1Y2VyS2V5
cyA9IE9iamVjdC5rZXlzKHJlZHVjZXJzKTtcbiAgdmFyIGZpbmFsUmVkdWNlcnMgPSB7fTtcbiAg
Zm9yICh2YXIgaSA9IDA7IGkgPCByZWR1Y2VyS2V5cy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBr
ZXkgPSByZWR1Y2VyS2V5c1tpXTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAodHlwZW9mIHJlZHVjZXJzW2tleV0gPT09ICd1bmRl
ZmluZWQnKSB7XG4gICAgICAgICgwLCBfd2FybmluZzJbJ2RlZmF1bHQnXSkoJ05vIHJlZHVjZXIg
cHJvdmlkZWQgZm9yIGtleSBcIicgKyBrZXkgKyAnXCInKTtcbiAgICAgIH1cbiAgICB9XG5cbiAg
ICBpZiAodHlwZW9mIHJlZHVjZXJzW2tleV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGZpbmFs
UmVkdWNlcnNba2V5XSA9IHJlZHVjZXJzW2tleV07XG4gICAgfVxuICB9XG4gIHZhciBmaW5hbFJl
ZHVjZXJLZXlzID0gT2JqZWN0LmtleXMoZmluYWxSZWR1Y2Vycyk7XG5cbiAgdmFyIHVuZXhwZWN0
ZWRLZXlDYWNoZSA9IHZvaWQgMDtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicpIHtcbiAgICB1bmV4cGVjdGVkS2V5Q2FjaGUgPSB7fTtcbiAgfVxuXG4gIHZhciBz
aGFwZUFzc2VydGlvbkVycm9yID0gdm9pZCAwO1xuICB0cnkge1xuICAgIGFzc2VydFJlZHVjZXJT
aGFwZShmaW5hbFJlZHVjZXJzKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHNoYXBlQXNzZXJ0aW9u
RXJyb3IgPSBlO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIGNvbWJpbmF0aW9uKCkge1xuICAg
IHZhciBzdGF0ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5k
ZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge307XG4gICAgdmFyIGFjdGlvbiA9IGFyZ3VtZW50c1sx
XTtcblxuICAgIGlmIChzaGFwZUFzc2VydGlvbkVycm9yKSB7XG4gICAgICB0aHJvdyBzaGFwZUFz
c2VydGlvbkVycm9yO1xuICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgd2FybmluZ01lc3NhZ2UgPSBnZXRVbmV4cGVjdGVk
U3RhdGVTaGFwZVdhcm5pbmdNZXNzYWdlKHN0YXRlLCBmaW5hbFJlZHVjZXJzLCBhY3Rpb24sIHVu
ZXhwZWN0ZWRLZXlDYWNoZSk7XG4gICAgICBpZiAod2FybmluZ01lc3NhZ2UpIHtcbiAgICAgICAg
KDAsIF93YXJuaW5nMlsnZGVmYXVsdCddKSh3YXJuaW5nTWVzc2FnZSk7XG4gICAgICB9XG4gICAg
fVxuXG4gICAgdmFyIGhhc0NoYW5nZWQgPSBmYWxzZTtcbiAgICB2YXIgbmV4dFN0YXRlID0ge307
XG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGZpbmFsUmVkdWNlcktleXMubGVuZ3RoOyBfaSsr
KSB7XG4gICAgICB2YXIgX2tleSA9IGZpbmFsUmVkdWNlcktleXNbX2ldO1xuICAgICAgdmFyIHJl
ZHVjZXIgPSBmaW5hbFJlZHVjZXJzW19rZXldO1xuICAgICAgdmFyIHByZXZpb3VzU3RhdGVGb3JL
ZXkgPSBzdGF0ZVtfa2V5XTtcbiAgICAgIHZhciBuZXh0U3RhdGVGb3JLZXkgPSByZWR1Y2VyKHBy
ZXZpb3VzU3RhdGVGb3JLZXksIGFjdGlvbik7XG4gICAgICBpZiAodHlwZW9mIG5leHRTdGF0ZUZv
cktleSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdmFyIGVycm9yTWVzc2FnZSA9IGdldFVu
ZGVmaW5lZFN0YXRlRXJyb3JNZXNzYWdlKF9rZXksIGFjdGlvbik7XG4gICAgICAgIHRocm93IG5l
dyBFcnJvcihlcnJvck1lc3NhZ2UpO1xuICAgICAgfVxuICAgICAgbmV4dFN0YXRlW19rZXldID0g
bmV4dFN0YXRlRm9yS2V5O1xuICAgICAgaGFzQ2hhbmdlZCA9IGhhc0NoYW5nZWQgfHwgbmV4dFN0
YXRlRm9yS2V5ICE9PSBwcmV2aW91c1N0YXRlRm9yS2V5O1xuICAgIH1cbiAgICByZXR1cm4gaGFz
Q2hhbmdlZCA/IG5leHRTdGF0ZSA6IHN0YXRlO1xuICB9O1xufVxuXG5cbi8qKioqKioqKioqKioq
KioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlZHV4L2xpYi9jb21iaW5lUmVkdWNl
cnMuanNcbiAqKiBtb2R1bGUgaWQgPSAyMjdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIs
Im1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvaW5kZXgnKTtcblxuXG5cbi8qKioqKioq
KioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3N5bWJvbC1vYnNlcnZhYmxl
L2luZGV4LmpzXG4gKiogbW9kdWxlIGlkID0gMjI4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAq
Ki8iLCIndXNlIHN0cmljdCc7XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9f
ZXNNb2R1bGVcIiwge1xuICB2YWx1ZTogdHJ1ZVxufSk7XG5cbnZhciBfcG9ueWZpbGwgPSByZXF1
aXJlKCcuL3BvbnlmaWxsJyk7XG5cbnZhciBfcG9ueWZpbGwyID0gX2ludGVyb3BSZXF1aXJlRGVm
YXVsdChfcG9ueWZpbGwpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikg
eyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9
OyB9XG5cbnZhciByb290OyAvKiBnbG9iYWwgd2luZG93ICovXG5cblxuaWYgKHR5cGVvZiBzZWxm
ICE9PSAndW5kZWZpbmVkJykge1xuICByb290ID0gc2VsZjtcbn0gZWxzZSBpZiAodHlwZW9mIHdp
bmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgcm9vdCA9IHdpbmRvdztcbn0gZWxzZSBpZiAodHlw
ZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgcm9vdCA9IGdsb2JhbDtcbn0gZWxzZSBp
ZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgcm9vdCA9IG1vZHVsZTtcbn0g
ZWxzZSB7XG4gIHJvb3QgPSBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgpO1xufVxuXG52YXIgcmVz
dWx0ID0gKDAsIF9wb255ZmlsbDJbJ2RlZmF1bHQnXSkocm9vdCk7XG5leHBvcnRzWydkZWZhdWx0
J10gPSByZXN1bHQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJc
biAqKiAuL34vc3ltYm9sLW9ic2VydmFibGUvbGliL2luZGV4LmpzXG4gKiogbW9kdWxlIGlkID0g
MjI5XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbk9iamVj
dC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuXHR2YWx1ZTogdHJ1
ZVxufSk7XG5leHBvcnRzWydkZWZhdWx0J10gPSBzeW1ib2xPYnNlcnZhYmxlUG9ueWZpbGw7XG5m
dW5jdGlvbiBzeW1ib2xPYnNlcnZhYmxlUG9ueWZpbGwocm9vdCkge1xuXHR2YXIgcmVzdWx0O1xu
XHR2YXIgX1N5bWJvbCA9IHJvb3QuU3ltYm9sO1xuXG5cdGlmICh0eXBlb2YgX1N5bWJvbCA9PT0g
J2Z1bmN0aW9uJykge1xuXHRcdGlmIChfU3ltYm9sLm9ic2VydmFibGUpIHtcblx0XHRcdHJlc3Vs
dCA9IF9TeW1ib2wub2JzZXJ2YWJsZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0cmVzdWx0ID0gX1N5
bWJvbCgnb2JzZXJ2YWJsZScpO1xuXHRcdFx0X1N5bWJvbC5vYnNlcnZhYmxlID0gcmVzdWx0O1xu
XHRcdH1cblx0fSBlbHNlIHtcblx0XHRyZXN1bHQgPSAnQEBvYnNlcnZhYmxlJztcblx0fVxuXG5c
dHJldHVybiByZXN1bHQ7XG59O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sg
Rk9PVEVSXG4gKiogLi9+L3N5bWJvbC1vYnNlcnZhYmxlL2xpYi9wb255ZmlsbC5qc1xuICoqIG1v
ZHVsZSBpZCA9IDIzMFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5
cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZh
cmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52YXIgaW52YXJpYW50
ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICogU3RhdGljIHBvb2xl
cnMuIFNldmVyYWwgY3VzdG9tIHZlcnNpb25zIGZvciBlYWNoIHBvdGVudGlhbCBudW1iZXIgb2Zc
biAqIGFyZ3VtZW50cy4gQSBjb21wbGV0ZWx5IGdlbmVyaWMgcG9vbGVyIGlzIGVhc3kgdG8gaW1w
bGVtZW50LCBidXQgd291bGRcbiAqIHJlcXVpcmUgYWNjZXNzaW5nIHRoZSBgYXJndW1lbnRzYCBv
YmplY3QuIEluIGVhY2ggb2YgdGhlc2UsIGB0aGlzYCByZWZlcnMgdG9cbiAqIHRoZSBDbGFzcyBp
dHNlbGYsIG5vdCBhbiBpbnN0YW5jZS4gSWYgYW55IG90aGVycyBhcmUgbmVlZGVkLCBzaW1wbHkg
YWRkIHRoZW1cbiAqIGhlcmUsIG9yIGluIHRoZWlyIG93biBmaWxlcy5cbiAqL1xudmFyIG9uZUFy
Z3VtZW50UG9vbGVyID0gZnVuY3Rpb24gKGNvcHlGaWVsZHNGcm9tKSB7XG4gIHZhciBLbGFzcyA9
IHRoaXM7XG4gIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7XG4gICAgdmFyIGluc3Rh
bmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpO1xuICAgIEtsYXNzLmNhbGwoaW5zdGFuY2Us
IGNvcHlGaWVsZHNGcm9tKTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH0gZWxzZSB7XG4gICAg
cmV0dXJuIG5ldyBLbGFzcyhjb3B5RmllbGRzRnJvbSk7XG4gIH1cbn07XG5cbnZhciB0d29Bcmd1
bWVudFBvb2xlciA9IGZ1bmN0aW9uIChhMSwgYTIpIHtcbiAgdmFyIEtsYXNzID0gdGhpcztcbiAg
aWYgKEtsYXNzLmluc3RhbmNlUG9vbC5sZW5ndGgpIHtcbiAgICB2YXIgaW5zdGFuY2UgPSBLbGFz
cy5pbnN0YW5jZVBvb2wucG9wKCk7XG4gICAgS2xhc3MuY2FsbChpbnN0YW5jZSwgYTEsIGEyKTtc
biAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBLbGFzcyhh
MSwgYTIpO1xuICB9XG59O1xuXG52YXIgdGhyZWVBcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChh
MSwgYTIsIGEzKSB7XG4gIHZhciBLbGFzcyA9IHRoaXM7XG4gIGlmIChLbGFzcy5pbnN0YW5jZVBv
b2wubGVuZ3RoKSB7XG4gICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgp
O1xuICAgIEtsYXNzLmNhbGwoaW5zdGFuY2UsIGExLCBhMiwgYTMpO1xuICAgIHJldHVybiBpbnN0
YW5jZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gbmV3IEtsYXNzKGExLCBhMiwgYTMpO1xuICB9
XG59O1xuXG52YXIgZm91ckFyZ3VtZW50UG9vbGVyID0gZnVuY3Rpb24gKGExLCBhMiwgYTMsIGE0
KSB7XG4gIHZhciBLbGFzcyA9IHRoaXM7XG4gIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3Ro
KSB7XG4gICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpO1xuICAgIEts
YXNzLmNhbGwoaW5zdGFuY2UsIGExLCBhMiwgYTMsIGE0KTtcbiAgICByZXR1cm4gaW5zdGFuY2U7
XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBLbGFzcyhhMSwgYTIsIGEzLCBhNCk7XG4gIH1c
bn07XG5cbnZhciBzdGFuZGFyZFJlbGVhc2VyID0gZnVuY3Rpb24gKGluc3RhbmNlKSB7XG4gIHZh
ciBLbGFzcyA9IHRoaXM7XG4gICEoaW5zdGFuY2UgaW5zdGFuY2VvZiBLbGFzcykgPyBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnVHJ5aW5n
IHRvIHJlbGVhc2UgYW4gaW5zdGFuY2UgaW50byBhIHBvb2wgb2YgYSBkaWZmZXJlbnQgdHlwZS4n
KSA6IF9wcm9kSW52YXJpYW50KCcyNScpIDogdm9pZCAwO1xuICBpbnN0YW5jZS5kZXN0cnVjdG9y
KCk7XG4gIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoIDwgS2xhc3MucG9vbFNpemUpIHtc
biAgICBLbGFzcy5pbnN0YW5jZVBvb2wucHVzaChpbnN0YW5jZSk7XG4gIH1cbn07XG5cbnZhciBE
RUZBVUxUX1BPT0xfU0laRSA9IDEwO1xudmFyIERFRkFVTFRfUE9PTEVSID0gb25lQXJndW1lbnRQ
b29sZXI7XG5cbi8qKlxuICogQXVnbWVudHMgYENvcHlDb25zdHJ1Y3RvcmAgdG8gYmUgYSBwb29s
YWJsZSBjbGFzcywgYXVnbWVudGluZyBvbmx5IHRoZSBjbGFzc1xuICogaXRzZWxmIChzdGF0aWNh
bGx5KSBub3QgYWRkaW5nIGFueSBwcm90b3R5cGljYWwgZmllbGRzLiBBbnkgQ29weUNvbnN0cnVj
dG9yXG4gKiB5b3UgZ2l2ZSB0aGlzIG1heSBoYXZlIGEgYHBvb2xTaXplYCBwcm9wZXJ0eSwgYW5k
IHdpbGwgbG9vayBmb3IgYVxuICogcHJvdG90eXBpY2FsIGBkZXN0cnVjdG9yYCBvbiBpbnN0YW5j
ZXMuXG4gKlxuICogQHBhcmFtIHtGdW5jdGlvbn0gQ29weUNvbnN0cnVjdG9yIENvbnN0cnVjdG9y
IHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVzZXQuXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBwb29sZXIg
Q3VzdG9taXphYmxlIHBvb2xlci5cbiAqL1xudmFyIGFkZFBvb2xpbmdUbyA9IGZ1bmN0aW9uIChD
b3B5Q29uc3RydWN0b3IsIHBvb2xlcikge1xuICAvLyBDYXN0aW5nIGFzIGFueSBzbyB0aGF0IGZs
b3cgaWdub3JlcyB0aGUgYWN0dWFsIGltcGxlbWVudGF0aW9uIGFuZCB0cnVzdHNcbiAgLy8gaXQg
dG8gbWF0Y2ggdGhlIHR5cGUgd2UgZGVjbGFyZWRcbiAgdmFyIE5ld0tsYXNzID0gQ29weUNvbnN0
cnVjdG9yO1xuICBOZXdLbGFzcy5pbnN0YW5jZVBvb2wgPSBbXTtcbiAgTmV3S2xhc3MuZ2V0UG9v
bGVkID0gcG9vbGVyIHx8IERFRkFVTFRfUE9PTEVSO1xuICBpZiAoIU5ld0tsYXNzLnBvb2xTaXpl
KSB7XG4gICAgTmV3S2xhc3MucG9vbFNpemUgPSBERUZBVUxUX1BPT0xfU0laRTtcbiAgfVxuICBO
ZXdLbGFzcy5yZWxlYXNlID0gc3RhbmRhcmRSZWxlYXNlcjtcbiAgcmV0dXJuIE5ld0tsYXNzO1xu
fTtcblxudmFyIFBvb2xlZENsYXNzID0ge1xuICBhZGRQb29saW5nVG86IGFkZFBvb2xpbmdUbyxc
biAgb25lQXJndW1lbnRQb29sZXI6IG9uZUFyZ3VtZW50UG9vbGVyLFxuICB0d29Bcmd1bWVudFBv
b2xlcjogdHdvQXJndW1lbnRQb29sZXIsXG4gIHRocmVlQXJndW1lbnRQb29sZXI6IHRocmVlQXJn
dW1lbnRQb29sZXIsXG4gIGZvdXJBcmd1bWVudFBvb2xlcjogZm91ckFyZ3VtZW50UG9vbGVyXG59
O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBvb2xlZENsYXNzO1xuXG5cbi8qKioqKioqKioqKioqKioq
KlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0L2xpYi9Qb29sZWRDbGFzcy5qc1xu
ICoqIG1vZHVsZSBpZCA9IDIxNFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIl0sInNvdXJj
ZVJvb3QiOiIifQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3Qvc3RhdGljL2pzL21haW4uOTQ2MjY5ZmYuanMgYi9QZXJm
b3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1l
eGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L3N0YXRpYy9qcy9tYWluLjk0NjI2OWZmLmpzCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5M2VkZWY2OTIwNGM3ZThlM2Y4NjJiODRjYTQwZWI3
ZDU3ZTFmN2Q3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3Qvc3RhdGljL2pzL21haW4uOTQ2MjY5ZmYuanMK
KysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLSFmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIp
e2lmKG5bcl0pcmV0dXJuIG5bcl0uZXhwb3J0czt2YXIgbz1uW3JdPXtleHBvcnRzOnt9LGlkOnIs
bG9hZGVkOiExfTtyZXR1cm4gZVtyXS5jYWxsKG8uZXhwb3J0cyxvLG8uZXhwb3J0cyx0KSxvLmxv
YWRlZD0hMCxvLmV4cG9ydHN9dmFyIG49e307cmV0dXJuIHQubT1lLHQuYz1uLHQucD0iLyIsdCgw
KX0oZnVuY3Rpb24oZSl7Zm9yKHZhciB0IGluIGUpaWYoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Q
cm9wZXJ0eS5jYWxsKGUsdCkpc3dpdGNoKHR5cGVvZiBlW3RdKXtjYXNlImZ1bmN0aW9uIjpicmVh
aztjYXNlIm9iamVjdCI6ZVt0XT1mdW5jdGlvbih0KXt2YXIgbj10LnNsaWNlKDEpLHI9ZVt0WzBd
XTtyZXR1cm4gZnVuY3Rpb24oZSx0LG8pe3IuYXBwbHkodGhpcyxbZSx0LG9dLmNvbmNhdChuKSl9
fShlW3RdKTticmVhaztkZWZhdWx0OmVbdF09ZVtlW3RdXX1yZXR1cm4gZX0oW2Z1bmN0aW9uKGUs
dCxuKXtuKDEyMSksZS5leHBvcnRzPW4oMTI5KX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUsdCxuLHIsbyxpLGEsdSl7aWYoIWUpe3ZhciBzO2lmKHZvaWQgMD09PXQp
cz1uZXcgRXJyb3IoIk1pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWlu
aWZpZWQgZGV2IGVudmlyb25tZW50IGZvciB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRp
dGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuIik7ZWxzZXt2YXIgbD1bbixyLG8saSxhLHVdLGM9MDtz
PW5ldyBFcnJvcih0LnJlcGxhY2UoLyVzL2csZnVuY3Rpb24oKXtyZXR1cm4gbFtjKytdfSkpLHMu
bmFtZT0iSW52YXJpYW50IFZpb2xhdGlvbiJ9dGhyb3cgcy5mcmFtZXNUb1BvcD0xLHN9fWUuZXhw
b3J0cz1yfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe2Zvcih2YXIg
dD1hcmd1bWVudHMubGVuZ3RoLTEsbj0iTWluaWZpZWQgUmVhY3QgZXJyb3IgIyIrZSsiOyB2aXNp
dCBodHRwOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvZXJyb3ItZGVjb2Rlci5odG1s
P2ludmFyaWFudD0iK2Uscj0wO3I8dDtyKyspbis9IiZhcmdzW109IitlbmNvZGVVUklDb21wb25l
bnQoYXJndW1lbnRzW3IrMV0pO24rPSIgZm9yIHRoZSBmdWxsIG1lc3NhZ2Ugb3IgdXNlIHRoZSBu
b24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciBmdWxsIGVycm9ycyBhbmQgYWRkaXRpb25h
bCBoZWxwZnVsIHdhcm5pbmdzLiI7dmFyIG89bmV3IEVycm9yKG4pO3Rocm93IG8ubmFtZT0iSW52
YXJpYW50IFZpb2xhdGlvbiIsby5mcmFtZXNUb1BvcD0xLG99ZS5leHBvcnRzPW59LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big3KSxvPXI7ZS5leHBvcnRzPW99LGZ1bmN0aW9u
KGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7aWYobnVsbD09PWV8fHZvaWQgMD09PWUp
dGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdpdGgg
bnVsbCBvciB1bmRlZmluZWQiKTtyZXR1cm4gT2JqZWN0KGUpfWZ1bmN0aW9uIHIoKXt0cnl7aWYo
IU9iamVjdC5hc3NpZ24pcmV0dXJuITE7dmFyIGU9bmV3IFN0cmluZygiYWJjIik7aWYoZVs1XT0i
ZGUiLCI1Ij09PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpWzBdKXJldHVybiExO2Zvcih2
YXIgdD17fSxuPTA7bjwxMDtuKyspdFsiXyIrU3RyaW5nLmZyb21DaGFyQ29kZShuKV09bjt2YXIg
cj1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIHRb
ZV19KTtpZigiMDEyMzQ1Njc4OSIhPT1yLmpvaW4oIiIpKXJldHVybiExO3ZhciBvPXt9O3JldHVy
biJhYmNkZWZnaGlqa2xtbm9wcXJzdCIuc3BsaXQoIiIpLmZvckVhY2goZnVuY3Rpb24oZSl7b1tl
XT1lfSksImFiY2RlZmdoaWprbG1ub3BxcnN0Ij09PU9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24o
e30sbykpLmpvaW4oIiIpfWNhdGNoKGkpe3JldHVybiExfX12YXIgbz1PYmplY3QucHJvdG90eXBl
Lmhhc093blByb3BlcnR5LGk9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtl
LmV4cG9ydHM9cigpP09iamVjdC5hc3NpZ246ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIsYSx1PW4o
ZSkscz0xO3M8YXJndW1lbnRzLmxlbmd0aDtzKyspe3I9T2JqZWN0KGFyZ3VtZW50c1tzXSk7Zm9y
KHZhciBsIGluIHIpby5jYWxsKHIsbCkmJih1W2xdPXJbbF0pO2lmKE9iamVjdC5nZXRPd25Qcm9w
ZXJ0eVN5bWJvbHMpe2E9T2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhyKTtmb3IodmFyIGM9
MDtjPGEubGVuZ3RoO2MrKylpLmNhbGwocixhW2NdKSYmKHVbYVtjXV09clthW2NdXSl9fXJldHVy
biB1fX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2Zvcih2YXIg
dDt0PWUuX3JlbmRlcmVkQ29tcG9uZW50OyllPXQ7cmV0dXJuIGV9ZnVuY3Rpb24gbyhlLHQpe3Zh
ciBuPXIoZSk7bi5faG9zdE5vZGU9dCx0W3ZdPW59ZnVuY3Rpb24gaShlKXt2YXIgdD1lLl9ob3N0
Tm9kZTt0JiYoZGVsZXRlIHRbdl0sZS5faG9zdE5vZGU9bnVsbCl9ZnVuY3Rpb24gYShlLHQpe2lm
KCEoZS5fZmxhZ3MmaC5oYXNDYWNoZWRDaGlsZE5vZGVzKSl7dmFyIG49ZS5fcmVuZGVyZWRDaGls
ZHJlbixpPXQuZmlyc3RDaGlsZDtlOmZvcih2YXIgYSBpbiBuKWlmKG4uaGFzT3duUHJvcGVydHko
YSkpe3ZhciB1PW5bYV0scz1yKHUpLl9kb21JRDtpZigwIT09cyl7Zm9yKDtudWxsIT09aTtpPWku
bmV4dFNpYmxpbmcpaWYoMT09PWkubm9kZVR5cGUmJmkuZ2V0QXR0cmlidXRlKGYpPT09U3RyaW5n
KHMpfHw4PT09aS5ub2RlVHlwZSYmaS5ub2RlVmFsdWU9PT0iIHJlYWN0LXRleHQ6ICIrcysiICJ8
fDg9PT1pLm5vZGVUeXBlJiZpLm5vZGVWYWx1ZT09PSIgcmVhY3QtZW1wdHk6ICIrcysiICIpe28o
dSxpKTtjb250aW51ZSBlfWMoIjMyIixzKX19ZS5fZmxhZ3N8PWguaGFzQ2FjaGVkQ2hpbGROb2Rl
c319ZnVuY3Rpb24gdShlKXtpZihlW3ZdKXJldHVybiBlW3ZdO2Zvcih2YXIgdD1bXTshZVt2XTsp
e2lmKHQucHVzaChlKSwhZS5wYXJlbnROb2RlKXJldHVybiBudWxsO2U9ZS5wYXJlbnROb2RlfWZv
cih2YXIgbixyO2UmJihyPWVbdl0pO2U9dC5wb3AoKSluPXIsdC5sZW5ndGgmJmEocixlKTtyZXR1
cm4gbn1mdW5jdGlvbiBzKGUpe3ZhciB0PXUoZSk7cmV0dXJuIG51bGwhPXQmJnQuX2hvc3ROb2Rl
PT09ZT90Om51bGx9ZnVuY3Rpb24gbChlKXtpZih2b2lkIDA9PT1lLl9ob3N0Tm9kZT9jKCIzMyIp
OnZvaWQgMCxlLl9ob3N0Tm9kZSlyZXR1cm4gZS5faG9zdE5vZGU7Zm9yKHZhciB0PVtdOyFlLl9o
b3N0Tm9kZTspdC5wdXNoKGUpLGUuX2hvc3RQYXJlbnQ/dm9pZCAwOmMoIjM0IiksZT1lLl9ob3N0
UGFyZW50O2Zvcig7dC5sZW5ndGg7ZT10LnBvcCgpKWEoZSxlLl9ob3N0Tm9kZSk7cmV0dXJuIGUu
X2hvc3ROb2RlfXZhciBjPW4oMikscD1uKDE4KSxkPW4oNzUpLGY9KG4oMSkscC5JRF9BVFRSSUJV
VEVfTkFNRSksaD1kLHY9Il9fcmVhY3RJbnRlcm5hbEluc3RhbmNlJCIrTWF0aC5yYW5kb20oKS50
b1N0cmluZygzNikuc2xpY2UoMiksbT17Z2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGU6dSxnZXRJ
bnN0YW5jZUZyb21Ob2RlOnMsZ2V0Tm9kZUZyb21JbnN0YW5jZTpsLHByZWNhY2hlQ2hpbGROb2Rl
czphLHByZWNhY2hlTm9kZTpvLHVuY2FjaGVOb2RlOml9O2UuZXhwb3J0cz1tfSxmdW5jdGlvbihl
LHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj0hKCJ1bmRlZmluZWQiPT10eXBlb2Ygd2luZG93fHwhd2lu
ZG93LmRvY3VtZW50fHwhd2luZG93LmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQpLHI9e2NhblVzZURP
TTpuLGNhblVzZVdvcmtlcnM6InVuZGVmaW5lZCIhPXR5cGVvZiBXb3JrZXIsY2FuVXNlRXZlbnRM
aXN0ZW5lcnM6biYmISghd2luZG93LmFkZEV2ZW50TGlzdGVuZXImJiF3aW5kb3cuYXR0YWNoRXZl
bnQpLGNhblVzZVZpZXdwb3J0Om4mJiEhd2luZG93LnNjcmVlbixpc0luV29ya2VyOiFufTtlLmV4
cG9ydHM9cn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXtyZXR1cm4g
ZnVuY3Rpb24oKXtyZXR1cm4gZX19dmFyIHI9ZnVuY3Rpb24oKXt9O3IudGhhdFJldHVybnM9bixy
LnRoYXRSZXR1cm5zRmFsc2U9bighMSksci50aGF0UmV0dXJuc1RydWU9bighMCksci50aGF0UmV0
dXJuc051bGw9bihudWxsKSxyLnRoYXRSZXR1cm5zVGhpcz1mdW5jdGlvbigpe3JldHVybiB0aGlz
fSxyLnRoYXRSZXR1cm5zQXJndW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIGV9LGUuZXhwb3J0cz1y
fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW51bGw7ZS5leHBvcnRzPXtkZWJ1
Z1Rvb2w6cn19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1
cm4gdm9pZCAwIT09ZS5yZWZ9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gdm9pZCAwIT09ZS5rZXl9dmFy
IGk9big0KSxhPW4oMTYpLHU9KG4oMyksbig4OCksT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9w
ZXJ0eSkscz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yJiZTeW1ib2wuZm9y
KCJyZWFjdC5lbGVtZW50Iil8fDYwMTAzLGw9e2tleTohMCxyZWY6ITAsX19zZWxmOiEwLF9fc291
cmNlOiEwfSxjPWZ1bmN0aW9uKGUsdCxuLHIsbyxpLGEpe3ZhciB1PXskJHR5cGVvZjpzLHR5cGU6
ZSxrZXk6dCxyZWY6bixwcm9wczphLF9vd25lcjppfTtyZXR1cm4gdX07Yy5jcmVhdGVFbGVtZW50
PWZ1bmN0aW9uKGUsdCxuKXt2YXIgaSxzPXt9LHA9bnVsbCxkPW51bGwsZj1udWxsLGg9bnVsbDtp
ZihudWxsIT10KXtyKHQpJiYoZD10LnJlZiksbyh0KSYmKHA9IiIrdC5rZXkpLGY9dm9pZCAwPT09
dC5fX3NlbGY/bnVsbDp0Ll9fc2VsZixoPXZvaWQgMD09PXQuX19zb3VyY2U/bnVsbDp0Ll9fc291
cmNlO2ZvcihpIGluIHQpdS5jYWxsKHQsaSkmJiFsLmhhc093blByb3BlcnR5KGkpJiYoc1tpXT10
W2ldKX12YXIgdj1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PXYpcy5jaGlsZHJlbj1uO2Vsc2Ug
aWYodj4xKXtmb3IodmFyIG09QXJyYXkodikseT0wO3k8djt5KyspbVt5XT1hcmd1bWVudHNbeSsy
XTtzLmNoaWxkcmVuPW19aWYoZSYmZS5kZWZhdWx0UHJvcHMpe3ZhciBnPWUuZGVmYXVsdFByb3Bz
O2ZvcihpIGluIGcpdm9pZCAwPT09c1tpXSYmKHNbaV09Z1tpXSl9cmV0dXJuIGMoZSxwLGQsZixo
LGEuY3VycmVudCxzKX0sYy5jcmVhdGVGYWN0b3J5PWZ1bmN0aW9uKGUpe3ZhciB0PWMuY3JlYXRl
RWxlbWVudC5iaW5kKG51bGwsZSk7cmV0dXJuIHQudHlwZT1lLHR9LGMuY2xvbmVBbmRSZXBsYWNl
S2V5PWZ1bmN0aW9uKGUsdCl7dmFyIG49YyhlLnR5cGUsdCxlLnJlZixlLl9zZWxmLGUuX3NvdXJj
ZSxlLl9vd25lcixlLnByb3BzKTtyZXR1cm4gbn0sYy5jbG9uZUVsZW1lbnQ9ZnVuY3Rpb24oZSx0
LG4pe3ZhciBzLHA9aSh7fSxlLnByb3BzKSxkPWUua2V5LGY9ZS5yZWYsaD1lLl9zZWxmLHY9ZS5f
c291cmNlLG09ZS5fb3duZXI7aWYobnVsbCE9dCl7cih0KSYmKGY9dC5yZWYsbT1hLmN1cnJlbnQp
LG8odCkmJihkPSIiK3Qua2V5KTt2YXIgeTtlLnR5cGUmJmUudHlwZS5kZWZhdWx0UHJvcHMmJih5
PWUudHlwZS5kZWZhdWx0UHJvcHMpO2ZvcihzIGluIHQpdS5jYWxsKHQscykmJiFsLmhhc093blBy
b3BlcnR5KHMpJiYodm9pZCAwPT09dFtzXSYmdm9pZCAwIT09eT9wW3NdPXlbc106cFtzXT10W3Nd
KX12YXIgZz1hcmd1bWVudHMubGVuZ3RoLTI7aWYoMT09PWcpcC5jaGlsZHJlbj1uO2Vsc2UgaWYo
Zz4xKXtmb3IodmFyIGI9QXJyYXkoZyksXz0wO188ZztfKyspYltfXT1hcmd1bWVudHNbXysyXTtw
LmNoaWxkcmVuPWJ9cmV0dXJuIGMoZS50eXBlLGQsZixoLHYsbSxwKX0sYy5pc1ZhbGlkRWxlbWVu
dD1mdW5jdGlvbihlKXtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPT1lJiZlLiQkdHlw
ZW9mPT09c30sYy5SRUFDVF9FTEVNRU5UX1RZUEU9cyxlLmV4cG9ydHM9Y30sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7Ty5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9u
JiZDP3ZvaWQgMDpjKCIxMjMiKX1mdW5jdGlvbiBvKCl7dGhpcy5yZWluaXRpYWxpemVUcmFuc2Fj
dGlvbigpLHRoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoPW51bGwsdGhpcy5jYWxsYmFja1F1ZXVl
PWQuZ2V0UG9vbGVkKCksdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbj1PLlJlYWN0UmVjb25jaWxl
VHJhbnNhY3Rpb24uZ2V0UG9vbGVkKCEwKX1mdW5jdGlvbiBpKGUsdCxuLG8saSxhKXtyKCksQy5i
YXRjaGVkVXBkYXRlcyhlLHQsbixvLGksYSl9ZnVuY3Rpb24gYShlLHQpe3JldHVybiBlLl9tb3Vu
dE9yZGVyLXQuX21vdW50T3JkZXJ9ZnVuY3Rpb24gdShlKXt2YXIgdD1lLmRpcnR5Q29tcG9uZW50
c0xlbmd0aDt0IT09eS5sZW5ndGg/YygiMTI0Iix0LHkubGVuZ3RoKTp2b2lkIDAseS5zb3J0KGEp
LGcrKztmb3IodmFyIG49MDtuPHQ7bisrKXt2YXIgcj15W25dLG89ci5fcGVuZGluZ0NhbGxiYWNr
cztyLl9wZW5kaW5nQ2FsbGJhY2tzPW51bGw7dmFyIGk7aWYoaC5sb2dUb3BMZXZlbFJlbmRlcnMp
e3ZhciB1PXI7ci5fY3VycmVudEVsZW1lbnQucHJvcHM9PT1yLl9yZW5kZXJlZENvbXBvbmVudC5f
Y3VycmVudEVsZW1lbnQmJih1PXIuX3JlbmRlcmVkQ29tcG9uZW50KSxpPSJSZWFjdCB1cGRhdGU6
ICIrdS5nZXROYW1lKCksY29uc29sZS50aW1lKGkpfWlmKHYucGVyZm9ybVVwZGF0ZUlmTmVjZXNz
YXJ5KHIsZS5yZWNvbmNpbGVUcmFuc2FjdGlvbixnKSxpJiZjb25zb2xlLnRpbWVFbmQoaSksbylm
b3IodmFyIHM9MDtzPG8ubGVuZ3RoO3MrKyllLmNhbGxiYWNrUXVldWUuZW5xdWV1ZShvW3NdLHIu
Z2V0UHVibGljSW5zdGFuY2UoKSl9fWZ1bmN0aW9uIHMoZSl7cmV0dXJuIHIoKSxDLmlzQmF0Y2hp
bmdVcGRhdGVzPyh5LnB1c2goZSksdm9pZChudWxsPT1lLl91cGRhdGVCYXRjaE51bWJlciYmKGUu
X3VwZGF0ZUJhdGNoTnVtYmVyPWcrMSkpKTp2b2lkIEMuYmF0Y2hlZFVwZGF0ZXMocyxlKX1mdW5j
dGlvbiBsKGUsdCl7Qy5pc0JhdGNoaW5nVXBkYXRlcz92b2lkIDA6YygiMTI1IiksYi5lbnF1ZXVl
KGUsdCksXz0hMH12YXIgYz1uKDIpLHA9big0KSxkPW4oNzEpLGY9bigxNSksaD1uKDc4KSx2PW4o
MTkpLG09bigyNSkseT0obigxKSxbXSksZz0wLGI9ZC5nZXRQb29sZWQoKSxfPSExLEM9bnVsbCxF
PXtpbml0aWFsaXplOmZ1bmN0aW9uKCl7dGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGg9eS5sZW5n
dGh9LGNsb3NlOmZ1bmN0aW9uKCl7dGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGghPT15Lmxlbmd0
aD8oeS5zcGxpY2UoMCx0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aCksUCgpKTp5Lmxlbmd0aD0w
fX0sdz17aW5pdGlhbGl6ZTpmdW5jdGlvbigpe3RoaXMuY2FsbGJhY2tRdWV1ZS5yZXNldCgpfSxj
bG9zZTpmdW5jdGlvbigpe3RoaXMuY2FsbGJhY2tRdWV1ZS5ub3RpZnlBbGwoKX19LFQ9W0Usd107
cChvLnByb3RvdHlwZSxtLk1peGluLHtnZXRUcmFuc2FjdGlvbldyYXBwZXJzOmZ1bmN0aW9uKCl7
cmV0dXJuIFR9LGRlc3RydWN0b3I6ZnVuY3Rpb24oKXt0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0
aD1udWxsLGQucmVsZWFzZSh0aGlzLmNhbGxiYWNrUXVldWUpLHRoaXMuY2FsbGJhY2tRdWV1ZT1u
dWxsLE8uUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5yZWxlYXNlKHRoaXMucmVjb25jaWxlVHJh
bnNhY3Rpb24pLHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb249bnVsbH0scGVyZm9ybTpmdW5jdGlv
bihlLHQsbil7cmV0dXJuIG0uTWl4aW4ucGVyZm9ybS5jYWxsKHRoaXMsdGhpcy5yZWNvbmNpbGVU
cmFuc2FjdGlvbi5wZXJmb3JtLHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24sZSx0LG4pfX0pLGYu
YWRkUG9vbGluZ1RvKG8pO3ZhciBQPWZ1bmN0aW9uKCl7Zm9yKDt5Lmxlbmd0aHx8Xzspe2lmKHku
bGVuZ3RoKXt2YXIgZT1vLmdldFBvb2xlZCgpO2UucGVyZm9ybSh1LG51bGwsZSksby5yZWxlYXNl
KGUpfWlmKF8pe189ITE7dmFyIHQ9YjtiPWQuZ2V0UG9vbGVkKCksdC5ub3RpZnlBbGwoKSxkLnJl
bGVhc2UodCl9fX0seD17aW5qZWN0UmVjb25jaWxlVHJhbnNhY3Rpb246ZnVuY3Rpb24oZSl7ZT92
b2lkIDA6YygiMTI2IiksTy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uPWV9LGluamVjdEJhdGNo
aW5nU3RyYXRlZ3k6ZnVuY3Rpb24oZSl7ZT92b2lkIDA6YygiMTI3IiksImZ1bmN0aW9uIiE9dHlw
ZW9mIGUuYmF0Y2hlZFVwZGF0ZXM/YygiMTI4Iik6dm9pZCAwLCJib29sZWFuIiE9dHlwZW9mIGUu
aXNCYXRjaGluZ1VwZGF0ZXM/YygiMTI5Iik6dm9pZCAwLEM9ZX19LE89e1JlYWN0UmVjb25jaWxl
VHJhbnNhY3Rpb246bnVsbCxiYXRjaGVkVXBkYXRlczppLGVucXVldWVVcGRhdGU6cyxmbHVzaEJh
dGNoZWRVcGRhdGVzOlAsaW5qZWN0aW9uOngsYXNhcDpsfTtlLmV4cG9ydHM9T30sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9bigxNDcpfSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO3ZhciByPW4oMjYpLG89cih7YnViYmxlZDpudWxsLGNhcHR1cmVkOm51bGx9KSxp
PXIoe3RvcEFib3J0Om51bGwsdG9wQW5pbWF0aW9uRW5kOm51bGwsdG9wQW5pbWF0aW9uSXRlcmF0
aW9uOm51bGwsdG9wQW5pbWF0aW9uU3RhcnQ6bnVsbCx0b3BCbHVyOm51bGwsdG9wQ2FuUGxheTpu
dWxsLHRvcENhblBsYXlUaHJvdWdoOm51bGwsdG9wQ2hhbmdlOm51bGwsdG9wQ2xpY2s6bnVsbCx0
b3BDb21wb3NpdGlvbkVuZDpudWxsLHRvcENvbXBvc2l0aW9uU3RhcnQ6bnVsbCx0b3BDb21wb3Np
dGlvblVwZGF0ZTpudWxsLHRvcENvbnRleHRNZW51Om51bGwsdG9wQ29weTpudWxsLHRvcEN1dDpu
dWxsLHRvcERvdWJsZUNsaWNrOm51bGwsdG9wRHJhZzpudWxsLHRvcERyYWdFbmQ6bnVsbCx0b3BE
cmFnRW50ZXI6bnVsbCx0b3BEcmFnRXhpdDpudWxsLHRvcERyYWdMZWF2ZTpudWxsLHRvcERyYWdP
dmVyOm51bGwsdG9wRHJhZ1N0YXJ0Om51bGwsdG9wRHJvcDpudWxsLHRvcER1cmF0aW9uQ2hhbmdl
Om51bGwsdG9wRW1wdGllZDpudWxsLHRvcEVuY3J5cHRlZDpudWxsLHRvcEVuZGVkOm51bGwsdG9w
RXJyb3I6bnVsbCx0b3BGb2N1czpudWxsLHRvcElucHV0Om51bGwsdG9wSW52YWxpZDpudWxsLHRv
cEtleURvd246bnVsbCx0b3BLZXlQcmVzczpudWxsLHRvcEtleVVwOm51bGwsdG9wTG9hZDpudWxs
LHRvcExvYWRlZERhdGE6bnVsbCx0b3BMb2FkZWRNZXRhZGF0YTpudWxsLHRvcExvYWRTdGFydDpu
dWxsLHRvcE1vdXNlRG93bjpudWxsLHRvcE1vdXNlTW92ZTpudWxsLHRvcE1vdXNlT3V0Om51bGws
dG9wTW91c2VPdmVyOm51bGwsdG9wTW91c2VVcDpudWxsLHRvcFBhc3RlOm51bGwsdG9wUGF1c2U6
bnVsbCx0b3BQbGF5Om51bGwsdG9wUGxheWluZzpudWxsLHRvcFByb2dyZXNzOm51bGwsdG9wUmF0
ZUNoYW5nZTpudWxsLHRvcFJlc2V0Om51bGwsdG9wU2Nyb2xsOm51bGwsdG9wU2Vla2VkOm51bGws
dG9wU2Vla2luZzpudWxsLHRvcFNlbGVjdGlvbkNoYW5nZTpudWxsLHRvcFN0YWxsZWQ6bnVsbCx0
b3BTdWJtaXQ6bnVsbCx0b3BTdXNwZW5kOm51bGwsdG9wVGV4dElucHV0Om51bGwsdG9wVGltZVVw
ZGF0ZTpudWxsLHRvcFRvdWNoQ2FuY2VsOm51bGwsdG9wVG91Y2hFbmQ6bnVsbCx0b3BUb3VjaE1v
dmU6bnVsbCx0b3BUb3VjaFN0YXJ0Om51bGwsdG9wVHJhbnNpdGlvbkVuZDpudWxsLHRvcFZvbHVt
ZUNoYW5nZTpudWxsLHRvcFdhaXRpbmc6bnVsbCx0b3BXaGVlbDpudWxsfSksYT17dG9wTGV2ZWxU
eXBlczppLFByb3BhZ2F0aW9uUGhhc2VzOm99O2UuZXhwb3J0cz1hfSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7dGhpcy5kaXNwYXRjaENvbmZpZz1lLHRo
aXMuX3RhcmdldEluc3Q9dCx0aGlzLm5hdGl2ZUV2ZW50PW47dmFyIG89dGhpcy5jb25zdHJ1Y3Rv
ci5JbnRlcmZhY2U7Zm9yKHZhciBpIGluIG8paWYoby5oYXNPd25Qcm9wZXJ0eShpKSl7dmFyIHU9
b1tpXTt1P3RoaXNbaV09dShuKToidGFyZ2V0Ij09PWk/dGhpcy50YXJnZXQ9cjp0aGlzW2ldPW5b
aV19dmFyIHM9bnVsbCE9bi5kZWZhdWx0UHJldmVudGVkP24uZGVmYXVsdFByZXZlbnRlZDpuLnJl
dHVyblZhbHVlPT09ITE7cmV0dXJuIHM/dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9YS50aGF0UmV0
dXJuc1RydWU6dGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQ9YS50aGF0UmV0dXJuc0ZhbHNlLHRoaXMu
aXNQcm9wYWdhdGlvblN0b3BwZWQ9YS50aGF0UmV0dXJuc0ZhbHNlLHRoaXN9dmFyIG89big0KSxp
PW4oMTUpLGE9big3KSx1PShuKDMpLCJmdW5jdGlvbiI9PXR5cGVvZiBQcm94eSxbImRpc3BhdGNo
Q29uZmlnIiwiX3RhcmdldEluc3QiLCJuYXRpdmVFdmVudCIsImlzRGVmYXVsdFByZXZlbnRlZCIs
ImlzUHJvcGFnYXRpb25TdG9wcGVkIiwiX2Rpc3BhdGNoTGlzdGVuZXJzIiwiX2Rpc3BhdGNoSW5z
dGFuY2VzIl0pLHM9e3R5cGU6bnVsbCx0YXJnZXQ6bnVsbCxjdXJyZW50VGFyZ2V0OmEudGhhdFJl
dHVybnNOdWxsLGV2ZW50UGhhc2U6bnVsbCxidWJibGVzOm51bGwsY2FuY2VsYWJsZTpudWxsLHRp
bWVTdGFtcDpmdW5jdGlvbihlKXtyZXR1cm4gZS50aW1lU3RhbXB8fERhdGUubm93KCl9LGRlZmF1
bHRQcmV2ZW50ZWQ6bnVsbCxpc1RydXN0ZWQ6bnVsbH07byhyLnByb3RvdHlwZSx7cHJldmVudERl
ZmF1bHQ6ZnVuY3Rpb24oKXt0aGlzLmRlZmF1bHRQcmV2ZW50ZWQ9ITA7dmFyIGU9dGhpcy5uYXRp
dmVFdmVudDtlJiYoZS5wcmV2ZW50RGVmYXVsdD9lLnByZXZlbnREZWZhdWx0KCk6InVua25vd24i
IT10eXBlb2YgZS5yZXR1cm5WYWx1ZSYmKGUucmV0dXJuVmFsdWU9ITEpLHRoaXMuaXNEZWZhdWx0
UHJldmVudGVkPWEudGhhdFJldHVybnNUcnVlKX0sc3RvcFByb3BhZ2F0aW9uOmZ1bmN0aW9uKCl7
dmFyIGU9dGhpcy5uYXRpdmVFdmVudDtlJiYoZS5zdG9wUHJvcGFnYXRpb24/ZS5zdG9wUHJvcGFn
YXRpb24oKToidW5rbm93biIhPXR5cGVvZiBlLmNhbmNlbEJ1YmJsZSYmKGUuY2FuY2VsQnViYmxl
PSEwKSx0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPWEudGhhdFJldHVybnNUcnVlKX0scGVyc2lz
dDpmdW5jdGlvbigpe3RoaXMuaXNQZXJzaXN0ZW50PWEudGhhdFJldHVybnNUcnVlfSxpc1BlcnNp
c3RlbnQ6YS50aGF0UmV0dXJuc0ZhbHNlLGRlc3RydWN0b3I6ZnVuY3Rpb24oKXt2YXIgZT10aGlz
LmNvbnN0cnVjdG9yLkludGVyZmFjZTtmb3IodmFyIHQgaW4gZSl0aGlzW3RdPW51bGw7Zm9yKHZh
ciBuPTA7bjx1Lmxlbmd0aDtuKyspdGhpc1t1W25dXT1udWxsfX0pLHIuSW50ZXJmYWNlPXMsci5h
dWdtZW50Q2xhc3M9ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLHI9ZnVuY3Rpb24oKXt9O3IucHJv
dG90eXBlPW4ucHJvdG90eXBlO3ZhciBhPW5ldyByO28oYSxlLnByb3RvdHlwZSksZS5wcm90b3R5
cGU9YSxlLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1lLGUuSW50ZXJmYWNlPW8oe30sbi5JbnRlcmZh
Y2UsdCksZS5hdWdtZW50Q2xhc3M9bi5hdWdtZW50Q2xhc3MsaS5hZGRQb29saW5nVG8oZSxpLmZv
dXJBcmd1bWVudFBvb2xlcil9LGkuYWRkUG9vbGluZ1RvKHIsaS5mb3VyQXJndW1lbnRQb29sZXIp
LGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1mdW5jdGlvbihl
KXt2YXIgdDtmb3IodCBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkodCkpcmV0dXJuIHQ7cmV0dXJu
IG51bGx9O2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4o
Miksbz0obigxKSxmdW5jdGlvbihlKXt2YXIgdD10aGlzO2lmKHQuaW5zdGFuY2VQb29sLmxlbmd0
aCl7dmFyIG49dC5pbnN0YW5jZVBvb2wucG9wKCk7cmV0dXJuIHQuY2FsbChuLGUpLG59cmV0dXJu
IG5ldyB0KGUpfSksaT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7aWYobi5pbnN0YW5jZVBvb2wu
bGVuZ3RoKXt2YXIgcj1uLmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gbi5jYWxsKHIsZSx0KSxy
fXJldHVybiBuZXcgbihlLHQpfSxhPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzO2lmKHIuaW5z
dGFuY2VQb29sLmxlbmd0aCl7dmFyIG89ci5pbnN0YW5jZVBvb2wucG9wKCk7cmV0dXJuIHIuY2Fs
bChvLGUsdCxuKSxvfXJldHVybiBuZXcgcihlLHQsbil9LHU9ZnVuY3Rpb24oZSx0LG4scil7dmFy
IG89dGhpcztpZihvLmluc3RhbmNlUG9vbC5sZW5ndGgpe3ZhciBpPW8uaW5zdGFuY2VQb29sLnBv
cCgpO3JldHVybiBvLmNhbGwoaSxlLHQsbixyKSxpfXJldHVybiBuZXcgbyhlLHQsbixyKX0scz1m
dW5jdGlvbihlLHQsbixyLG8pe3ZhciBpPXRoaXM7aWYoaS5pbnN0YW5jZVBvb2wubGVuZ3RoKXt2
YXIgYT1pLmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gaS5jYWxsKGEsZSx0LG4scixvKSxhfXJl
dHVybiBuZXcgaShlLHQsbixyLG8pfSxsPWZ1bmN0aW9uKGUpe3ZhciB0PXRoaXM7ZSBpbnN0YW5j
ZW9mIHQ/dm9pZCAwOnIoIjI1IiksZS5kZXN0cnVjdG9yKCksdC5pbnN0YW5jZVBvb2wubGVuZ3Ro
PHQucG9vbFNpemUmJnQuaW5zdGFuY2VQb29sLnB1c2goZSl9LGM9MTAscD1vLGQ9ZnVuY3Rpb24o
ZSx0KXt2YXIgbj1lO3JldHVybiBuLmluc3RhbmNlUG9vbD1bXSxuLmdldFBvb2xlZD10fHxwLG4u
cG9vbFNpemV8fChuLnBvb2xTaXplPWMpLG4ucmVsZWFzZT1sLG59LGY9e2FkZFBvb2xpbmdUbzpk
LG9uZUFyZ3VtZW50UG9vbGVyOm8sdHdvQXJndW1lbnRQb29sZXI6aSx0aHJlZUFyZ3VtZW50UG9v
bGVyOmEsZm91ckFyZ3VtZW50UG9vbGVyOnUsZml2ZUFyZ3VtZW50UG9vbGVyOnN9O2UuZXhwb3J0
cz1mfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17Y3VycmVudDpudWxsfTtlLmV4
cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKG0p
e3ZhciB0PWUubm9kZSxuPWUuY2hpbGRyZW47aWYobi5sZW5ndGgpZm9yKHZhciByPTA7cjxuLmxl
bmd0aDtyKyspeSh0LG5bcl0sbnVsbCk7ZWxzZSBudWxsIT1lLmh0bWw/cCh0LGUuaHRtbCk6bnVs
bCE9ZS50ZXh0JiZmKHQsZS50ZXh0KX19ZnVuY3Rpb24gbyhlLHQpe2UucGFyZW50Tm9kZS5yZXBs
YWNlQ2hpbGQodC5ub2RlLGUpLHIodCl9ZnVuY3Rpb24gaShlLHQpe20/ZS5jaGlsZHJlbi5wdXNo
KHQpOmUubm9kZS5hcHBlbmRDaGlsZCh0Lm5vZGUpfWZ1bmN0aW9uIGEoZSx0KXttP2UuaHRtbD10
OnAoZS5ub2RlLHQpfWZ1bmN0aW9uIHUoZSx0KXttP2UudGV4dD10OmYoZS5ub2RlLHQpfWZ1bmN0
aW9uIHMoKXtyZXR1cm4gdGhpcy5ub2RlLm5vZGVOYW1lfWZ1bmN0aW9uIGwoZSl7cmV0dXJue25v
ZGU6ZSxjaGlsZHJlbjpbXSxodG1sOm51bGwsdGV4dDpudWxsLHRvU3RyaW5nOnN9fXZhciBjPW4o
MzgpLHA9bigzMSksZD1uKDUyKSxmPW4oOTUpLGg9MSx2PTExLG09InVuZGVmaW5lZCIhPXR5cGVv
ZiBkb2N1bWVudCYmIm51bWJlciI9PXR5cGVvZiBkb2N1bWVudC5kb2N1bWVudE1vZGV8fCJ1bmRl
ZmluZWQiIT10eXBlb2YgbmF2aWdhdG9yJiYic3RyaW5nIj09dHlwZW9mIG5hdmlnYXRvci51c2Vy
QWdlbnQmJi9cYkVkZ2VcL1xkLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpLHk9ZChmdW5jdGlv
bihlLHQsbil7dC5ub2RlLm5vZGVUeXBlPT09dnx8dC5ub2RlLm5vZGVUeXBlPT09aCYmIm9iamVj
dCI9PT10Lm5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmKG51bGw9PXQubm9kZS5uYW1lc3Bh
Y2VVUkl8fHQubm9kZS5uYW1lc3BhY2VVUkk9PT1jLmh0bWwpPyhyKHQpLGUuaW5zZXJ0QmVmb3Jl
KHQubm9kZSxuKSk6KGUuaW5zZXJ0QmVmb3JlKHQubm9kZSxuKSxyKHQpKX0pO2wuaW5zZXJ0VHJl
ZUJlZm9yZT15LGwucmVwbGFjZUNoaWxkV2l0aFRyZWU9byxsLnF1ZXVlQ2hpbGQ9aSxsLnF1ZXVl
SFRNTD1hLGwucXVldWVUZXh0PXUsZS5leHBvcnRzPWx9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybihlJnQpPT09dH12YXIgbz1uKDIpLGk9KG4oMSks
e01VU1RfVVNFX1BST1BFUlRZOjEsSEFTX0JPT0xFQU5fVkFMVUU6NCxIQVNfTlVNRVJJQ19WQUxV
RTo4LEhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFOjI0LEhBU19PVkVSTE9BREVEX0JPT0xFQU5f
VkFMVUU6MzIsaW5qZWN0RE9NUHJvcGVydHlDb25maWc6ZnVuY3Rpb24oZSl7dmFyIHQ9aSxuPWUu
UHJvcGVydGllc3x8e30sYT1lLkRPTUF0dHJpYnV0ZU5hbWVzcGFjZXN8fHt9LHM9ZS5ET01BdHRy
aWJ1dGVOYW1lc3x8e30sbD1lLkRPTVByb3BlcnR5TmFtZXN8fHt9LGM9ZS5ET01NdXRhdGlvbk1l
dGhvZHN8fHt9O2UuaXNDdXN0b21BdHRyaWJ1dGUmJnUuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rp
b25zLnB1c2goZS5pc0N1c3RvbUF0dHJpYnV0ZSk7Zm9yKHZhciBwIGluIG4pe3UucHJvcGVydGll
cy5oYXNPd25Qcm9wZXJ0eShwKT9vKCI0OCIscCk6dm9pZCAwO3ZhciBkPXAudG9Mb3dlckNhc2Uo
KSxmPW5bcF0saD17YXR0cmlidXRlTmFtZTpkLGF0dHJpYnV0ZU5hbWVzcGFjZTpudWxsLHByb3Bl
cnR5TmFtZTpwLG11dGF0aW9uTWV0aG9kOm51bGwsbXVzdFVzZVByb3BlcnR5OnIoZix0Lk1VU1Rf
VVNFX1BST1BFUlRZKSxoYXNCb29sZWFuVmFsdWU6cihmLHQuSEFTX0JPT0xFQU5fVkFMVUUpLGhh
c051bWVyaWNWYWx1ZTpyKGYsdC5IQVNfTlVNRVJJQ19WQUxVRSksaGFzUG9zaXRpdmVOdW1lcmlj
VmFsdWU6cihmLHQuSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUpLGhhc092ZXJsb2FkZWRCb29s
ZWFuVmFsdWU6cihmLHQuSEFTX09WRVJMT0FERURfQk9PTEVBTl9WQUxVRSl9O2lmKGguaGFzQm9v
bGVhblZhbHVlK2guaGFzTnVtZXJpY1ZhbHVlK2guaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZTw9
MT92b2lkIDA6bygiNTAiLHApLHMuaGFzT3duUHJvcGVydHkocCkpe3ZhciB2PXNbcF07aC5hdHRy
aWJ1dGVOYW1lPXZ9YS5oYXNPd25Qcm9wZXJ0eShwKSYmKGguYXR0cmlidXRlTmFtZXNwYWNlPWFb
cF0pLGwuaGFzT3duUHJvcGVydHkocCkmJihoLnByb3BlcnR5TmFtZT1sW3BdKSxjLmhhc093blBy
b3BlcnR5KHApJiYoaC5tdXRhdGlvbk1ldGhvZD1jW3BdKSx1LnByb3BlcnRpZXNbcF09aH19fSks
YT0iOkEtWl9hLXpcXHUwMEMwLVxcdTAwRDZcXHUwMEQ4LVxcdTAwRjZcXHUwMEY4LVxcdTAyRkZc
XHUwMzcwLVxcdTAzN0RcXHUwMzdGLVxcdTFGRkZcXHUyMDBDLVxcdTIwMERcXHUyMDcwLVxcdTIx
OEZcXHUyQzAwLVxcdTJGRUZcXHUzMDAxLVxcdUQ3RkZcXHVGOTAwLVxcdUZEQ0ZcXHVGREYwLVxc
dUZGRkQiLHU9e0lEX0FUVFJJQlVURV9OQU1FOiJkYXRhLXJlYWN0aWQiLFJPT1RfQVRUUklCVVRF
X05BTUU6ImRhdGEtcmVhY3Ryb290IixBVFRSSUJVVEVfTkFNRV9TVEFSVF9DSEFSOmEsQVRUUklC
VVRFX05BTUVfQ0hBUjphKyJcXC0uMC05XFx1MDBCN1xcdTAzMDAtXFx1MDM2RlxcdTIwM0YtXFx1
MjA0MCIscHJvcGVydGllczp7fSxnZXRQb3NzaWJsZVN0YW5kYXJkTmFtZTpudWxsLF9pc0N1c3Rv
bUF0dHJpYnV0ZUZ1bmN0aW9uczpbXSxpc0N1c3RvbUF0dHJpYnV0ZTpmdW5jdGlvbihlKXtmb3Io
dmFyIHQ9MDt0PHUuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zLmxlbmd0aDt0Kyspe3ZhciBu
PXUuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zW3RdO2lmKG4oZSkpcmV0dXJuITB9cmV0dXJu
ITF9LGluamVjdGlvbjppfTtlLmV4cG9ydHM9dX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKCl7by5hdHRhY2hSZWZzKHRoaXMsdGhpcy5fY3VycmVudEVsZW1lbnQpfXZh
ciBvPW4oMTc1KSxpPShuKDgpLG4oMykse21vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLG8s
aSxhKXt2YXIgdT1lLm1vdW50Q29tcG9uZW50KHQsbixvLGksYSk7cmV0dXJuIGUuX2N1cnJlbnRF
bGVtZW50JiZudWxsIT1lLl9jdXJyZW50RWxlbWVudC5yZWYmJnQuZ2V0UmVhY3RNb3VudFJlYWR5
KCkuZW5xdWV1ZShyLGUpLHV9LGdldEhvc3ROb2RlOmZ1bmN0aW9uKGUpe3JldHVybiBlLmdldEhv
c3ROb2RlKCl9LHVubW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSx0KXtvLmRldGFjaFJlZnMoZSxl
Ll9jdXJyZW50RWxlbWVudCksZS51bm1vdW50Q29tcG9uZW50KHQpfSxyZWNlaXZlQ29tcG9uZW50
OmZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBhPWUuX2N1cnJlbnRFbGVtZW50O2lmKHQhPT1hfHxpIT09
ZS5fY29udGV4dCl7dmFyIHU9by5zaG91bGRVcGRhdGVSZWZzKGEsdCk7dSYmby5kZXRhY2hSZWZz
KGUsYSksZS5yZWNlaXZlQ29tcG9uZW50KHQsbixpKSx1JiZlLl9jdXJyZW50RWxlbWVudCYmbnVs
bCE9ZS5fY3VycmVudEVsZW1lbnQucmVmJiZuLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUo
cixlKX19LHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeTpmdW5jdGlvbihlLHQsbil7ZS5fdXBkYXRl
QmF0Y2hOdW1iZXI9PT1uJiZlLnBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeSh0KX19KTtlLmV4cG9y
dHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17fTtlLmV4cG9ydHM9cn0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDIpLG89bigzOSksaT1uKDQwKSxh
PW4oNDYpLHU9big4Nykscz1uKDg5KSxsPShuKDEpLHt9KSxjPW51bGwscD1mdW5jdGlvbihlLHQp
e2UmJihpLmV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlcihlLHQpLGUuaXNQZXJzaXN0ZW50KCl8fGUu
Y29uc3RydWN0b3IucmVsZWFzZShlKSl9LGQ9ZnVuY3Rpb24oZSl7cmV0dXJuIHAoZSwhMCl9LGY9
ZnVuY3Rpb24oZSl7cmV0dXJuIHAoZSwhMSl9LGg9ZnVuY3Rpb24oZSl7cmV0dXJuIi4iK2UuX3Jv
b3ROb2RlSUR9LHY9e2luamVjdGlvbjp7aW5qZWN0RXZlbnRQbHVnaW5PcmRlcjpvLmluamVjdEV2
ZW50UGx1Z2luT3JkZXIsaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lOm8uaW5qZWN0RXZlbnRQbHVn
aW5zQnlOYW1lfSxwdXRMaXN0ZW5lcjpmdW5jdGlvbihlLHQsbil7ImZ1bmN0aW9uIiE9dHlwZW9m
IG4/cigiOTQiLHQsdHlwZW9mIG4pOnZvaWQgMDt2YXIgaT1oKGUpLGE9bFt0XXx8KGxbdF09e30p
O2FbaV09bjt2YXIgdT1vLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3RdO3UmJnUuZGlkUHV0TGlz
dGVuZXImJnUuZGlkUHV0TGlzdGVuZXIoZSx0LG4pfSxnZXRMaXN0ZW5lcjpmdW5jdGlvbihlLHQp
e3ZhciBuPWxbdF0scj1oKGUpO3JldHVybiBuJiZuW3JdfSxkZWxldGVMaXN0ZW5lcjpmdW5jdGlv
bihlLHQpe3ZhciBuPW8ucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbdF07biYmbi53aWxsRGVsZXRl
TGlzdGVuZXImJm4ud2lsbERlbGV0ZUxpc3RlbmVyKGUsdCk7dmFyIHI9bFt0XTtpZihyKXt2YXIg
aT1oKGUpO2RlbGV0ZSByW2ldfX0sZGVsZXRlQWxsTGlzdGVuZXJzOmZ1bmN0aW9uKGUpe3ZhciB0
PWgoZSk7Zm9yKHZhciBuIGluIGwpaWYobC5oYXNPd25Qcm9wZXJ0eShuKSYmbFtuXVt0XSl7dmFy
IHI9by5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tuXTtyJiZyLndpbGxEZWxldGVMaXN0ZW5lciYm
ci53aWxsRGVsZXRlTGlzdGVuZXIoZSxuKSxkZWxldGUgbFtuXVt0XX19LGV4dHJhY3RFdmVudHM6
ZnVuY3Rpb24oZSx0LG4scil7Zm9yKHZhciBpLGE9by5wbHVnaW5zLHM9MDtzPGEubGVuZ3RoO3Mr
Kyl7dmFyIGw9YVtzXTtpZihsKXt2YXIgYz1sLmV4dHJhY3RFdmVudHMoZSx0LG4scik7YyYmKGk9
dShpLGMpKX19cmV0dXJuIGl9LGVucXVldWVFdmVudHM6ZnVuY3Rpb24oZSl7ZSYmKGM9dShjLGUp
KX0scHJvY2Vzc0V2ZW50UXVldWU6ZnVuY3Rpb24oZSl7dmFyIHQ9YztjPW51bGwsZT9zKHQsZCk6
cyh0LGYpLGM/cigiOTUiKTp2b2lkIDAsYS5yZXRocm93Q2F1Z2h0RXJyb3IoKX0sX19wdXJnZTpm
dW5jdGlvbigpe2w9e319LF9fZ2V0TGlzdGVuZXJCYW5rOmZ1bmN0aW9uKCl7cmV0dXJuIGx9fTtl
LmV4cG9ydHM9dn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxu
KXt2YXIgcj10LmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW25dO3JldHVy
biBiKGUscil9ZnVuY3Rpb24gbyhlLHQsbil7dmFyIG89dD9nLmJ1YmJsZWQ6Zy5jYXB0dXJlZCxp
PXIoZSxuLG8pO2kmJihuLl9kaXNwYXRjaExpc3RlbmVycz1tKG4uX2Rpc3BhdGNoTGlzdGVuZXJz
LGkpLG4uX2Rpc3BhdGNoSW5zdGFuY2VzPW0obi5fZGlzcGF0Y2hJbnN0YW5jZXMsZSkpfWZ1bmN0
aW9uIGkoZSl7ZSYmZS5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcyYmdi50
cmF2ZXJzZVR3b1BoYXNlKGUuX3RhcmdldEluc3QsbyxlKX1mdW5jdGlvbiBhKGUpe2lmKGUmJmUu
ZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpe3ZhciB0PWUuX3RhcmdldElu
c3Qsbj10P3YuZ2V0UGFyZW50SW5zdGFuY2UodCk6bnVsbDt2LnRyYXZlcnNlVHdvUGhhc2Uobixv
LGUpfX1mdW5jdGlvbiB1KGUsdCxuKXtpZihuJiZuLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlv
bk5hbWUpe3ZhciByPW4uZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSxvPWIoZSxyKTtv
JiYobi5fZGlzcGF0Y2hMaXN0ZW5lcnM9bShuLl9kaXNwYXRjaExpc3RlbmVycyxvKSxuLl9kaXNw
YXRjaEluc3RhbmNlcz1tKG4uX2Rpc3BhdGNoSW5zdGFuY2VzLGUpKX19ZnVuY3Rpb24gcyhlKXtl
JiZlLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUmJnUoZS5fdGFyZ2V0SW5zdCxudWxs
LGUpfWZ1bmN0aW9uIGwoZSl7eShlLGkpfWZ1bmN0aW9uIGMoZSl7eShlLGEpfWZ1bmN0aW9uIHAo
ZSx0LG4scil7di50cmF2ZXJzZUVudGVyTGVhdmUobixyLHUsZSx0KX1mdW5jdGlvbiBkKGUpe3ko
ZSxzKX12YXIgZj1uKDEyKSxoPW4oMjEpLHY9big0MCksbT1uKDg3KSx5PW4oODkpLGc9KG4oMyks
Zi5Qcm9wYWdhdGlvblBoYXNlcyksYj1oLmdldExpc3RlbmVyLF89e2FjY3VtdWxhdGVUd29QaGFz
ZURpc3BhdGNoZXM6bCxhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2tpcFRhcmdldDpjLGFj
Y3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzOmQsYWNjdW11bGF0ZUVudGVyTGVhdmVEaXNwYXRjaGVz
OnB9O2UuZXhwb3J0cz1ffSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17cmVtb3Zl
OmZ1bmN0aW9uKGUpe2UuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZT12b2lkIDB9LGdldDpmdW5jdGlv
bihlKXtyZXR1cm4gZS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlfSxoYXM6ZnVuY3Rpb24oZSl7cmV0
dXJuIHZvaWQgMCE9PWUuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZX0sc2V0OmZ1bmN0aW9uKGUsdCl7
ZS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlPXR9fTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQs
bixyKX12YXIgbz1uKDEzKSxpPW4oNTUpLGE9e3ZpZXc6ZnVuY3Rpb24oZSl7aWYoZS52aWV3KXJl
dHVybiBlLnZpZXc7dmFyIHQ9aShlKTtpZih0LndpbmRvdz09PXQpcmV0dXJuIHQ7dmFyIG49dC5v
d25lckRvY3VtZW50O3JldHVybiBuP24uZGVmYXVsdFZpZXd8fG4ucGFyZW50V2luZG93OndpbmRv
d30sZGV0YWlsOmZ1bmN0aW9uKGUpe3JldHVybiBlLmRldGFpbHx8MH19O28uYXVnbWVudENsYXNz
KHIsYSksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigy
KSxvPShuKDEpLHtyZWluaXRpYWxpemVUcmFuc2FjdGlvbjpmdW5jdGlvbigpe3RoaXMudHJhbnNh
Y3Rpb25XcmFwcGVycz10aGlzLmdldFRyYW5zYWN0aW9uV3JhcHBlcnMoKSx0aGlzLndyYXBwZXJJ
bml0RGF0YT90aGlzLndyYXBwZXJJbml0RGF0YS5sZW5ndGg9MDp0aGlzLndyYXBwZXJJbml0RGF0
YT1bXSx0aGlzLl9pc0luVHJhbnNhY3Rpb249ITF9LF9pc0luVHJhbnNhY3Rpb246ITEsZ2V0VHJh
bnNhY3Rpb25XcmFwcGVyczpudWxsLGlzSW5UcmFuc2FjdGlvbjpmdW5jdGlvbigpe3JldHVybiEh
dGhpcy5faXNJblRyYW5zYWN0aW9ufSxwZXJmb3JtOmZ1bmN0aW9uKGUsdCxuLG8saSxhLHUscyl7
dGhpcy5pc0luVHJhbnNhY3Rpb24oKT9yKCIyNyIpOnZvaWQgMDt2YXIgbCxjO3RyeXt0aGlzLl9p
c0luVHJhbnNhY3Rpb249ITAsbD0hMCx0aGlzLmluaXRpYWxpemVBbGwoMCksYz1lLmNhbGwodCxu
LG8saSxhLHUscyksbD0hMX1maW5hbGx5e3RyeXtpZihsKXRyeXt0aGlzLmNsb3NlQWxsKDApfWNh
dGNoKHApe31lbHNlIHRoaXMuY2xvc2VBbGwoMCl9ZmluYWxseXt0aGlzLl9pc0luVHJhbnNhY3Rp
b249ITF9fXJldHVybiBjfSxpbml0aWFsaXplQWxsOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlz
LnRyYW5zYWN0aW9uV3JhcHBlcnMsbj1lO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3RyeXt0
aGlzLndyYXBwZXJJbml0RGF0YVtuXT1pLk9CU0VSVkVEX0VSUk9SLHRoaXMud3JhcHBlckluaXRE
YXRhW25dPXIuaW5pdGlhbGl6ZT9yLmluaXRpYWxpemUuY2FsbCh0aGlzKTpudWxsfWZpbmFsbHl7
aWYodGhpcy53cmFwcGVySW5pdERhdGFbbl09PT1pLk9CU0VSVkVEX0VSUk9SKXRyeXt0aGlzLmlu
aXRpYWxpemVBbGwobisxKX1jYXRjaChvKXt9fX19LGNsb3NlQWxsOmZ1bmN0aW9uKGUpe3RoaXMu
aXNJblRyYW5zYWN0aW9uKCk/dm9pZCAwOnIoIjI4Iik7Zm9yKHZhciB0PXRoaXMudHJhbnNhY3Rp
b25XcmFwcGVycyxuPWU7bjx0Lmxlbmd0aDtuKyspe3ZhciBvLGE9dFtuXSx1PXRoaXMud3JhcHBl
ckluaXREYXRhW25dO3RyeXtvPSEwLHUhPT1pLk9CU0VSVkVEX0VSUk9SJiZhLmNsb3NlJiZhLmNs
b3NlLmNhbGwodGhpcyx1KSxvPSExfWZpbmFsbHl7aWYobyl0cnl7dGhpcy5jbG9zZUFsbChuKzEp
fWNhdGNoKHMpe319fXRoaXMud3JhcHBlckluaXREYXRhLmxlbmd0aD0wfX0pLGk9e01peGluOm8s
T0JTRVJWRURfRVJST1I6e319O2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3ZhciByPW4oMSksbz1mdW5jdGlvbihlKXt2YXIgdCxuPXt9O2UgaW5zdGFuY2VvZiBPYmpl
Y3QmJiFBcnJheS5pc0FycmF5KGUpP3ZvaWQgMDpyKCExKTtmb3IodCBpbiBlKWUuaGFzT3duUHJv
cGVydHkodCkmJihuW3RdPXQpO3JldHVybiBufTtlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0KXsi
dXNlIHN0cmljdCI7dmFyIG49e29uQ2xpY2s6ITAsb25Eb3VibGVDbGljazohMCxvbk1vdXNlRG93
bjohMCxvbk1vdXNlTW92ZTohMCxvbk1vdXNlVXA6ITAsb25DbGlja0NhcHR1cmU6ITAsb25Eb3Vi
bGVDbGlja0NhcHR1cmU6ITAsb25Nb3VzZURvd25DYXB0dXJlOiEwLG9uTW91c2VNb3ZlQ2FwdHVy
ZTohMCxvbk1vdXNlVXBDYXB0dXJlOiEwfSxyPXtnZXRIb3N0UHJvcHM6ZnVuY3Rpb24oZSx0KXtp
ZighdC5kaXNhYmxlZClyZXR1cm4gdDt2YXIgcj17fTtmb3IodmFyIG8gaW4gdCkhbltvXSYmdC5o
YXNPd25Qcm9wZXJ0eShvKSYmKHJbb109dFtvXSk7cmV0dXJuIHJ9fTtlLmV4cG9ydHM9cn0sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBPYmplY3QucHJv
dG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxtKXx8KGVbbV09aCsrLGRbZVttXV09e30pLGRb
ZVttXV19dmFyIG8saT1uKDQpLGE9bigxMiksdT1uKDM5KSxzPW4oMTY3KSxsPW4oODYpLGM9bigx
OTgpLHA9big1NiksZD17fSxmPSExLGg9MCx2PXt0b3BBYm9ydDoiYWJvcnQiLHRvcEFuaW1hdGlv
bkVuZDpjKCJhbmltYXRpb25lbmQiKXx8ImFuaW1hdGlvbmVuZCIsdG9wQW5pbWF0aW9uSXRlcmF0
aW9uOmMoImFuaW1hdGlvbml0ZXJhdGlvbiIpfHwiYW5pbWF0aW9uaXRlcmF0aW9uIix0b3BBbmlt
YXRpb25TdGFydDpjKCJhbmltYXRpb25zdGFydCIpfHwiYW5pbWF0aW9uc3RhcnQiLHRvcEJsdXI6
ImJsdXIiLHRvcENhblBsYXk6ImNhbnBsYXkiLHRvcENhblBsYXlUaHJvdWdoOiJjYW5wbGF5dGhy
b3VnaCIsdG9wQ2hhbmdlOiJjaGFuZ2UiLHRvcENsaWNrOiJjbGljayIsdG9wQ29tcG9zaXRpb25F
bmQ6ImNvbXBvc2l0aW9uZW5kIix0b3BDb21wb3NpdGlvblN0YXJ0OiJjb21wb3NpdGlvbnN0YXJ0
Iix0b3BDb21wb3NpdGlvblVwZGF0ZToiY29tcG9zaXRpb251cGRhdGUiLHRvcENvbnRleHRNZW51
OiJjb250ZXh0bWVudSIsdG9wQ29weToiY29weSIsdG9wQ3V0OiJjdXQiLHRvcERvdWJsZUNsaWNr
OiJkYmxjbGljayIsdG9wRHJhZzoiZHJhZyIsdG9wRHJhZ0VuZDoiZHJhZ2VuZCIsdG9wRHJhZ0Vu
dGVyOiJkcmFnZW50ZXIiLHRvcERyYWdFeGl0OiJkcmFnZXhpdCIsdG9wRHJhZ0xlYXZlOiJkcmFn
bGVhdmUiLHRvcERyYWdPdmVyOiJkcmFnb3ZlciIsdG9wRHJhZ1N0YXJ0OiJkcmFnc3RhcnQiLHRv
cERyb3A6ImRyb3AiLHRvcER1cmF0aW9uQ2hhbmdlOiJkdXJhdGlvbmNoYW5nZSIsdG9wRW1wdGll
ZDoiZW1wdGllZCIsdG9wRW5jcnlwdGVkOiJlbmNyeXB0ZWQiLHRvcEVuZGVkOiJlbmRlZCIsdG9w
RXJyb3I6ImVycm9yIix0b3BGb2N1czoiZm9jdXMiLHRvcElucHV0OiJpbnB1dCIsdG9wS2V5RG93
bjoia2V5ZG93biIsdG9wS2V5UHJlc3M6ImtleXByZXNzIix0b3BLZXlVcDoia2V5dXAiLHRvcExv
YWRlZERhdGE6ImxvYWRlZGRhdGEiLHRvcExvYWRlZE1ldGFkYXRhOiJsb2FkZWRtZXRhZGF0YSIs
dG9wTG9hZFN0YXJ0OiJsb2Fkc3RhcnQiLHRvcE1vdXNlRG93bjoibW91c2Vkb3duIix0b3BNb3Vz
ZU1vdmU6Im1vdXNlbW92ZSIsdG9wTW91c2VPdXQ6Im1vdXNlb3V0Iix0b3BNb3VzZU92ZXI6Im1v
dXNlb3ZlciIsdG9wTW91c2VVcDoibW91c2V1cCIsdG9wUGFzdGU6InBhc3RlIix0b3BQYXVzZToi
cGF1c2UiLHRvcFBsYXk6InBsYXkiLHRvcFBsYXlpbmc6InBsYXlpbmciLHRvcFByb2dyZXNzOiJw
cm9ncmVzcyIsdG9wUmF0ZUNoYW5nZToicmF0ZWNoYW5nZSIsdG9wU2Nyb2xsOiJzY3JvbGwiLHRv
cFNlZWtlZDoic2Vla2VkIix0b3BTZWVraW5nOiJzZWVraW5nIix0b3BTZWxlY3Rpb25DaGFuZ2U6
InNlbGVjdGlvbmNoYW5nZSIsdG9wU3RhbGxlZDoic3RhbGxlZCIsdG9wU3VzcGVuZDoic3VzcGVu
ZCIsdG9wVGV4dElucHV0OiJ0ZXh0SW5wdXQiLHRvcFRpbWVVcGRhdGU6InRpbWV1cGRhdGUiLHRv
cFRvdWNoQ2FuY2VsOiJ0b3VjaGNhbmNlbCIsdG9wVG91Y2hFbmQ6InRvdWNoZW5kIix0b3BUb3Vj
aE1vdmU6InRvdWNobW92ZSIsdG9wVG91Y2hTdGFydDoidG91Y2hzdGFydCIsdG9wVHJhbnNpdGlv
bkVuZDpjKCJ0cmFuc2l0aW9uZW5kIil8fCJ0cmFuc2l0aW9uZW5kIix0b3BWb2x1bWVDaGFuZ2U6
InZvbHVtZWNoYW5nZSIsdG9wV2FpdGluZzoid2FpdGluZyIsdG9wV2hlZWw6IndoZWVsIn0sbT0i
X3JlYWN0TGlzdGVuZXJzSUQiK1N0cmluZyhNYXRoLnJhbmRvbSgpKS5zbGljZSgyKSx5PWkoe30s
cyx7UmVhY3RFdmVudExpc3RlbmVyOm51bGwsaW5qZWN0aW9uOntpbmplY3RSZWFjdEV2ZW50TGlz
dGVuZXI6ZnVuY3Rpb24oZSl7ZS5zZXRIYW5kbGVUb3BMZXZlbCh5LmhhbmRsZVRvcExldmVsKSx5
LlJlYWN0RXZlbnRMaXN0ZW5lcj1lfX0sc2V0RW5hYmxlZDpmdW5jdGlvbihlKXt5LlJlYWN0RXZl
bnRMaXN0ZW5lciYmeS5SZWFjdEV2ZW50TGlzdGVuZXIuc2V0RW5hYmxlZChlKX0saXNFbmFibGVk
OmZ1bmN0aW9uKCl7cmV0dXJuISgheS5SZWFjdEV2ZW50TGlzdGVuZXJ8fCF5LlJlYWN0RXZlbnRM
aXN0ZW5lci5pc0VuYWJsZWQoKSl9LGxpc3RlblRvOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuPXQs
bz1yKG4pLGk9dS5yZWdpc3RyYXRpb25OYW1lRGVwZW5kZW5jaWVzW2VdLHM9YS50b3BMZXZlbFR5
cGVzLGw9MDtsPGkubGVuZ3RoO2wrKyl7dmFyIGM9aVtsXTtvLmhhc093blByb3BlcnR5KGMpJiZv
W2NdfHwoYz09PXMudG9wV2hlZWw/cCgid2hlZWwiKT95LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFw
QnViYmxlZEV2ZW50KHMudG9wV2hlZWwsIndoZWVsIixuKTpwKCJtb3VzZXdoZWVsIik/eS5SZWFj
dEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudChzLnRvcFdoZWVsLCJtb3VzZXdoZWVsIixu
KTp5LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KHMudG9wV2hlZWwsIkRPTU1v
dXNlU2Nyb2xsIixuKTpjPT09cy50b3BTY3JvbGw/cCgic2Nyb2xsIiwhMCk/eS5SZWFjdEV2ZW50
TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQocy50b3BTY3JvbGwsInNjcm9sbCIsbik6eS5SZWFj
dEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudChzLnRvcFNjcm9sbCwic2Nyb2xsIix5LlJl
YWN0RXZlbnRMaXN0ZW5lci5XSU5ET1dfSEFORExFKTpjPT09cy50b3BGb2N1c3x8Yz09PXMudG9w
Qmx1cj8ocCgiZm9jdXMiLCEwKT8oeS5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZl
bnQocy50b3BGb2N1cywiZm9jdXMiLG4pLHkuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBDYXB0dXJl
ZEV2ZW50KHMudG9wQmx1ciwiYmx1ciIsbikpOnAoImZvY3VzaW4iKSYmKHkuUmVhY3RFdmVudExp
c3RlbmVyLnRyYXBCdWJibGVkRXZlbnQocy50b3BGb2N1cywiZm9jdXNpbiIsbikseS5SZWFjdEV2
ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudChzLnRvcEJsdXIsImZvY3Vzb3V0IixuKSksb1tz
LnRvcEJsdXJdPSEwLG9bcy50b3BGb2N1c109ITApOnYuaGFzT3duUHJvcGVydHkoYykmJnkuUmVh
Y3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoYyx2W2NdLG4pLG9bY109ITApfX0sdHJh
cEJ1YmJsZWRFdmVudDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHkuUmVhY3RFdmVudExpc3RlbmVy
LnRyYXBCdWJibGVkRXZlbnQoZSx0LG4pfSx0cmFwQ2FwdHVyZWRFdmVudDpmdW5jdGlvbihlLHQs
bil7cmV0dXJuIHkuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50KGUsdCxuKX0s
c3VwcG9ydHNFdmVudFBhZ2VYWTpmdW5jdGlvbigpe2lmKCFkb2N1bWVudC5jcmVhdGVFdmVudCly
ZXR1cm4hMTt2YXIgZT1kb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudCIpO3JldHVybiBu
dWxsIT1lJiYicGFnZVgiaW4gZX0sZW5zdXJlU2Nyb2xsVmFsdWVNb25pdG9yaW5nOmZ1bmN0aW9u
KCl7aWYodm9pZCAwPT09byYmKG89eS5zdXBwb3J0c0V2ZW50UGFnZVhZKCkpLCFvJiYhZil7dmFy
IGU9bC5yZWZyZXNoU2Nyb2xsVmFsdWVzO3kuUmVhY3RFdmVudExpc3RlbmVyLm1vbml0b3JTY3Jv
bGxWYWx1ZShlKSxmPSEwfX19KTtlLmV4cG9ydHM9eX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIg
bz1uKDI0KSxpPW4oODYpLGE9big1NCksdT17c2NyZWVuWDpudWxsLHNjcmVlblk6bnVsbCxjbGll
bnRYOm51bGwsY2xpZW50WTpudWxsLGN0cmxLZXk6bnVsbCxzaGlmdEtleTpudWxsLGFsdEtleTpu
dWxsLG1ldGFLZXk6bnVsbCxnZXRNb2RpZmllclN0YXRlOmEsYnV0dG9uOmZ1bmN0aW9uKGUpe3Zh
ciB0PWUuYnV0dG9uO3JldHVybiJ3aGljaCJpbiBlP3Q6Mj09PXQ/Mjo0PT09dD8xOjB9LGJ1dHRv
bnM6bnVsbCxyZWxhdGVkVGFyZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiBlLnJlbGF0ZWRUYXJnZXR8
fChlLmZyb21FbGVtZW50PT09ZS5zcmNFbGVtZW50P2UudG9FbGVtZW50OmUuZnJvbUVsZW1lbnQp
fSxwYWdlWDpmdW5jdGlvbihlKXtyZXR1cm4icGFnZVgiaW4gZT9lLnBhZ2VYOmUuY2xpZW50WCtp
LmN1cnJlbnRTY3JvbGxMZWZ0fSxwYWdlWTpmdW5jdGlvbihlKXtyZXR1cm4icGFnZVkiaW4gZT9l
LnBhZ2VZOmUuY2xpZW50WStpLmN1cnJlbnRTY3JvbGxUb3B9fTtvLmF1Z21lbnRDbGFzcyhyLHUp
LGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3Zh
ciB0PSIiK2Usbj1vLmV4ZWModCk7aWYoIW4pcmV0dXJuIHQ7dmFyIHIsaT0iIixhPTAsdT0wO2Zv
cihhPW4uaW5kZXg7YTx0Lmxlbmd0aDthKyspe3N3aXRjaCh0LmNoYXJDb2RlQXQoYSkpe2Nhc2Ug
MzQ6cj0iJnF1b3Q7IjticmVhaztjYXNlIDM4OnI9IiZhbXA7IjticmVhaztjYXNlIDM5OnI9IiYj
eDI3OyI7YnJlYWs7Y2FzZSA2MDpyPSImbHQ7IjticmVhaztjYXNlIDYyOnI9IiZndDsiO2JyZWFr
O2RlZmF1bHQ6Y29udGludWV9dSE9PWEmJihpKz10LnN1YnN0cmluZyh1LGEpKSx1PWErMSxpKz1y
fXJldHVybiB1IT09YT9pK3Quc3Vic3RyaW5nKHUsYSk6aX1mdW5jdGlvbiByKGUpe3JldHVybiJi
b29sZWFuIj09dHlwZW9mIGV8fCJudW1iZXIiPT10eXBlb2YgZT8iIitlOm4oZSl9dmFyIG89L1si
JyY8Pl0vO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByLG89
big2KSxpPW4oMzgpLGE9L15bIFxyXG5cdFxmXS8sdT0vPCghLS18bGlua3xub3NjcmlwdHxtZXRh
fHNjcmlwdHxzdHlsZSlbIFxyXG5cdFxmXC8+XS8scz1uKDUyKSxsPXMoZnVuY3Rpb24oZSx0KXtp
ZihlLm5hbWVzcGFjZVVSSSE9PWkuc3ZnfHwiaW5uZXJIVE1MImluIGUpZS5pbm5lckhUTUw9dDtl
bHNle3I9cnx8ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iiksci5pbm5lckhUTUw9Ijxzdmc+
Iit0KyI8L3N2Zz4iO2Zvcih2YXIgbj1yLmZpcnN0Q2hpbGQ7bi5maXJzdENoaWxkOyllLmFwcGVu
ZENoaWxkKG4uZmlyc3RDaGlsZCl9fSk7aWYoby5jYW5Vc2VET00pe3ZhciBjPWRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpO2MuaW5uZXJIVE1MPSIgIiwiIj09PWMuaW5uZXJIVE1MJiYobD1m
dW5jdGlvbihlLHQpe2lmKGUucGFyZW50Tm9kZSYmZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChl
LGUpLGEudGVzdCh0KXx8IjwiPT09dFswXSYmdS50ZXN0KHQpKXtlLmlubmVySFRNTD1TdHJpbmcu
ZnJvbUNoYXJDb2RlKDY1Mjc5KSt0O3ZhciBuPWUuZmlyc3RDaGlsZDsxPT09bi5kYXRhLmxlbmd0
aD9lLnJlbW92ZUNoaWxkKG4pOm4uZGVsZXRlRGF0YSgwLDEpfWVsc2UgZS5pbm5lckhUTUw9dH0p
LGM9bnVsbH1lLmV4cG9ydHM9bH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX10Ll9fZXNNb2R1bGU9
ITAsdC5jb21wb3NlPXQuYXBwbHlNaWRkbGV3YXJlPXQuYmluZEFjdGlvbkNyZWF0b3JzPXQuY29t
YmluZVJlZHVjZXJzPXQuY3JlYXRlU3RvcmU9dm9pZCAwO3ZhciBvPW4oOTcpLGk9cihvKSxhPW4o
MjA0KSx1PXIoYSkscz1uKDIwMyksbD1yKHMpLGM9bigyMDIpLHA9cihjKSxkPW4oOTYpLGY9cihk
KSxoPW4oOTgpO3IoaCk7dC5jcmVhdGVTdG9yZT1pLmRlZmF1bHQsdC5jb21iaW5lUmVkdWNlcnM9
dS5kZWZhdWx0LHQuYmluZEFjdGlvbkNyZWF0b3JzPWwuZGVmYXVsdCx0LmFwcGx5TWlkZGxld2Fy
ZT1wLmRlZmF1bHQsdC5jb21wb3NlPWYuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LG4pe3ZhciByLG87
IWZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oKXtmb3IodmFyIGU9W10sdD0wO3Q8
YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciByPWFyZ3VtZW50c1t0XTtpZihyKXt2YXIgbz10eXBl
b2YgcjtpZigic3RyaW5nIj09PW98fCJudW1iZXIiPT09byllLnB1c2gocik7ZWxzZSBpZihBcnJh
eS5pc0FycmF5KHIpKWUucHVzaChuLmFwcGx5KG51bGwscikpO2Vsc2UgaWYoIm9iamVjdCI9PT1v
KWZvcih2YXIgYSBpbiByKWkuY2FsbChyLGEpJiZyW2FdJiZlLnB1c2goYSl9fXJldHVybiBlLmpv
aW4oIiAiKX12YXIgaT17fS5oYXNPd25Qcm9wZXJ0eTsidW5kZWZpbmVkIiE9dHlwZW9mIGUmJmUu
ZXhwb3J0cz9lLmV4cG9ydHM9bjoocj1bXSxvPWZ1bmN0aW9uKCl7cmV0dXJuIG59LmFwcGx5KHQs
ciksISh2b2lkIDAhPT1vJiYoZS5leHBvcnRzPW8pKSl9KCl9LGZ1bmN0aW9uKGUsdCl7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIG4oZSx0KXtyZXR1cm4gZT09PXQ/MCE9PWV8fDAhPT10fHwxL2U9PT0x
L3Q6ZSE9PWUmJnQhPT10fWZ1bmN0aW9uIHIoZSx0KXtpZihuKGUsdCkpcmV0dXJuITA7aWYoIm9i
amVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZXx8Im9iamVjdCIhPXR5cGVvZiB0fHxudWxsPT09dCly
ZXR1cm4hMTt2YXIgcj1PYmplY3Qua2V5cyhlKSxpPU9iamVjdC5rZXlzKHQpO2lmKHIubGVuZ3Ro
IT09aS5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBhPTA7YTxyLmxlbmd0aDthKyspaWYoIW8uY2Fs
bCh0LHJbYV0pfHwhbihlW3JbYV1dLHRbclthXV0pKXJldHVybiExO3JldHVybiEwfXZhciBvPU9i
amVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHk7ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxu
KXtmdW5jdGlvbiByKGUpe2lmKCFpKGUpfHxkLmNhbGwoZSkhPWEpcmV0dXJuITE7dmFyIHQ9byhl
KTtpZihudWxsPT09dClyZXR1cm4hMDt2YXIgbj1jLmNhbGwodCwiY29uc3RydWN0b3IiKSYmdC5j
b25zdHJ1Y3RvcjtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgbiYmbiBpbnN0YW5jZW9mIG4mJmwu
Y2FsbChuKT09cH12YXIgbz1uKDExMyksaT1uKDExNSksYT0iW29iamVjdCBPYmplY3RdIix1PUZ1
bmN0aW9uLnByb3RvdHlwZSxzPU9iamVjdC5wcm90b3R5cGUsbD11LnRvU3RyaW5nLGM9cy5oYXNP
d25Qcm9wZXJ0eSxwPWwuY2FsbChPYmplY3QpLGQ9cy50b1N0cmluZztlLmV4cG9ydHM9cn0sZnVu
Y3Rpb24oZSx0KXtmdW5jdGlvbiBuKCl7dGhyb3cgbmV3IEVycm9yKCJzZXRUaW1lb3V0IGhhcyBu
b3QgYmVlbiBkZWZpbmVkIil9ZnVuY3Rpb24gcigpe3Rocm93IG5ldyBFcnJvcigiY2xlYXJUaW1l
b3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkIil9ZnVuY3Rpb24gbyhlKXtpZihjPT09c2V0VGltZW91
dClyZXR1cm4gc2V0VGltZW91dChlLDApO2lmKChjPT09bnx8IWMpJiZzZXRUaW1lb3V0KXJldHVy
biBjPXNldFRpbWVvdXQsc2V0VGltZW91dChlLDApO3RyeXtyZXR1cm4gYyhlLDApfWNhdGNoKHQp
e3RyeXtyZXR1cm4gYy5jYWxsKG51bGwsZSwwKX1jYXRjaCh0KXtyZXR1cm4gYy5jYWxsKHRoaXMs
ZSwwKX19fWZ1bmN0aW9uIGkoZSl7aWYocD09PWNsZWFyVGltZW91dClyZXR1cm4gY2xlYXJUaW1l
b3V0KGUpO2lmKChwPT09cnx8IXApJiZjbGVhclRpbWVvdXQpcmV0dXJuIHA9Y2xlYXJUaW1lb3V0
LGNsZWFyVGltZW91dChlKTt0cnl7cmV0dXJuIHAoZSl9Y2F0Y2godCl7dHJ5e3JldHVybiBwLmNh
bGwobnVsbCxlKX1jYXRjaCh0KXtyZXR1cm4gcC5jYWxsKHRoaXMsZSl9fX1mdW5jdGlvbiBhKCl7
diYmZiYmKHY9ITEsZi5sZW5ndGg/aD1mLmNvbmNhdChoKTptPS0xLGgubGVuZ3RoJiZ1KCkpfWZ1
bmN0aW9uIHUoKXtpZighdil7dmFyIGU9byhhKTt2PSEwO2Zvcih2YXIgdD1oLmxlbmd0aDt0Oyl7
Zm9yKGY9aCxoPVtdOysrbTx0OylmJiZmW21dLnJ1bigpO209LTEsdD1oLmxlbmd0aH1mPW51bGws
dj0hMSxpKGUpfX1mdW5jdGlvbiBzKGUsdCl7dGhpcy5mdW49ZSx0aGlzLmFycmF5PXR9ZnVuY3Rp
b24gbCgpe312YXIgYyxwLGQ9ZS5leHBvcnRzPXt9OyFmdW5jdGlvbigpe3RyeXtjPSJmdW5jdGlv
biI9PXR5cGVvZiBzZXRUaW1lb3V0P3NldFRpbWVvdXQ6bn1jYXRjaChlKXtjPW59dHJ5e3A9ImZ1
bmN0aW9uIj09dHlwZW9mIGNsZWFyVGltZW91dD9jbGVhclRpbWVvdXQ6cn1jYXRjaChlKXtwPXJ9
fSgpO3ZhciBmLGg9W10sdj0hMSxtPS0xO2QubmV4dFRpY2s9ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3
IEFycmF5KGFyZ3VtZW50cy5sZW5ndGgtMSk7aWYoYXJndW1lbnRzLmxlbmd0aD4xKWZvcih2YXIg
bj0xO248YXJndW1lbnRzLmxlbmd0aDtuKyspdFtuLTFdPWFyZ3VtZW50c1tuXTtoLnB1c2gobmV3
IHMoZSx0KSksMSE9PWgubGVuZ3RofHx2fHxvKHUpfSxzLnByb3RvdHlwZS5ydW49ZnVuY3Rpb24o
KXt0aGlzLmZ1bi5hcHBseShudWxsLHRoaXMuYXJyYXkpfSxkLnRpdGxlPSJicm93c2VyIixkLmJy
b3dzZXI9ITAsZC5lbnY9e30sZC5hcmd2PVtdLGQudmVyc2lvbj0iIixkLnZlcnNpb25zPXt9LGQu
b249bCxkLmFkZExpc3RlbmVyPWwsZC5vbmNlPWwsZC5vZmY9bCxkLnJlbW92ZUxpc3RlbmVyPWws
ZC5yZW1vdmVBbGxMaXN0ZW5lcnM9bCxkLmVtaXQ9bCxkLmJpbmRpbmc9ZnVuY3Rpb24oZSl7dGhy
b3cgbmV3IEVycm9yKCJwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCIpfSxkLmN3ZD1m
dW5jdGlvbigpe3JldHVybiIvIn0sZC5jaGRpcj1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3Io
InByb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCIpfSxkLnVtYXNrPWZ1bmN0aW9uKCl7cmV0
dXJuIDB9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1
cm4gQXJyYXkuaXNBcnJheSh0KSYmKHQ9dFsxXSksdD90Lm5leHRTaWJsaW5nOmUuZmlyc3RDaGls
ZH1mdW5jdGlvbiBvKGUsdCxuKXtjLmluc2VydFRyZWVCZWZvcmUoZSx0LG4pfWZ1bmN0aW9uIGko
ZSx0LG4pe0FycmF5LmlzQXJyYXkodCk/dShlLHRbMF0sdFsxXSxuKTptKGUsdCxuKX1mdW5jdGlv
biBhKGUsdCl7aWYoQXJyYXkuaXNBcnJheSh0KSl7dmFyIG49dFsxXTt0PXRbMF0scyhlLHQsbiks
ZS5yZW1vdmVDaGlsZChuKX1lLnJlbW92ZUNoaWxkKHQpfWZ1bmN0aW9uIHUoZSx0LG4scil7Zm9y
KHZhciBvPXQ7Oyl7dmFyIGk9by5uZXh0U2libGluZztpZihtKGUsbyxyKSxvPT09bilicmVhaztv
PWl9fWZ1bmN0aW9uIHMoZSx0LG4pe2Zvcig7Oyl7dmFyIHI9dC5uZXh0U2libGluZztpZihyPT09
bilicmVhaztlLnJlbW92ZUNoaWxkKHIpfX1mdW5jdGlvbiBsKGUsdCxuKXt2YXIgcj1lLnBhcmVu
dE5vZGUsbz1lLm5leHRTaWJsaW5nO289PT10P24mJm0ocixkb2N1bWVudC5jcmVhdGVUZXh0Tm9k
ZShuKSxvKTpuPyh2KG8sbikscyhyLG8sdCkpOnMocixlLHQpfXZhciBjPW4oMTcpLHA9bigxNDIp
LGQ9big4MiksZj0obig1KSxuKDgpLG4oNTIpKSxoPW4oMzEpLHY9big5NSksbT1mKGZ1bmN0aW9u
KGUsdCxuKXtlLmluc2VydEJlZm9yZSh0LG4pfSkseT1wLmRhbmdlcm91c2x5UmVwbGFjZU5vZGVX
aXRoTWFya3VwLGc9e2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwOnkscmVwbGFjZURl
bGltaXRlZFRleHQ6bCxwcm9jZXNzVXBkYXRlczpmdW5jdGlvbihlLHQpe2Zvcih2YXIgbj0wO248
dC5sZW5ndGg7bisrKXt2YXIgdT10W25dO3N3aXRjaCh1LnR5cGUpe2Nhc2UgZC5JTlNFUlRfTUFS
S1VQOm8oZSx1LmNvbnRlbnQscihlLHUuYWZ0ZXJOb2RlKSk7YnJlYWs7Y2FzZSBkLk1PVkVfRVhJ
U1RJTkc6aShlLHUuZnJvbU5vZGUscihlLHUuYWZ0ZXJOb2RlKSk7YnJlYWs7Y2FzZSBkLlNFVF9N
QVJLVVA6aChlLHUuY29udGVudCk7YnJlYWs7Y2FzZSBkLlRFWFRfQ09OVEVOVDp2KGUsdS5jb250
ZW50KTticmVhaztjYXNlIGQuUkVNT1ZFX05PREU6YShlLHUuZnJvbU5vZGUpfX19fTtlLmV4cG9y
dHM9Z30sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49e2h0bWw6Imh0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGh0bWwiLG1hdGhtbDoiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01h
dGhNTCIsc3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9O2UuZXhwb3J0cz1ufSxmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtpZih1KWZvcih2YXIgZSBpbiBz
KXt2YXIgdD1zW2VdLG49dS5pbmRleE9mKGUpO2lmKG4+LTE/dm9pZCAwOmEoIjk2IixlKSwhbC5w
bHVnaW5zW25dKXt0LmV4dHJhY3RFdmVudHM/dm9pZCAwOmEoIjk3IixlKSxsLnBsdWdpbnNbbl09
dDt2YXIgcj10LmV2ZW50VHlwZXM7Zm9yKHZhciBpIGluIHIpbyhyW2ldLHQsaSk/dm9pZCAwOmEo
Ijk4IixpLGUpfX19ZnVuY3Rpb24gbyhlLHQsbil7bC5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3Mu
aGFzT3duUHJvcGVydHkobik/YSgiOTkiLG4pOnZvaWQgMCxsLmV2ZW50TmFtZURpc3BhdGNoQ29u
Zmlnc1tuXT1lO3ZhciByPWUucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM7aWYocil7Zm9yKHZhciBv
IGluIHIpaWYoci5oYXNPd25Qcm9wZXJ0eShvKSl7dmFyIHU9cltvXTtpKHUsdCxuKX1yZXR1cm4h
MH1yZXR1cm4hIWUucmVnaXN0cmF0aW9uTmFtZSYmKGkoZS5yZWdpc3RyYXRpb25OYW1lLHQsbiks
ITApfWZ1bmN0aW9uIGkoZSx0LG4pe2wucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbZV0/YSgiMTAw
IixlKTp2b2lkIDAsbC5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tlXT10LGwucmVnaXN0cmF0aW9u
TmFtZURlcGVuZGVuY2llc1tlXT10LmV2ZW50VHlwZXNbbl0uZGVwZW5kZW5jaWVzOwotfXZhciBh
PW4oMiksdT0obigxKSxudWxsKSxzPXt9LGw9e3BsdWdpbnM6W10sZXZlbnROYW1lRGlzcGF0Y2hD
b25maWdzOnt9LHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzOnt9LHJlZ2lzdHJhdGlvbk5hbWVEZXBl
bmRlbmNpZXM6e30scG9zc2libGVSZWdpc3RyYXRpb25OYW1lczpudWxsLGluamVjdEV2ZW50UGx1
Z2luT3JkZXI6ZnVuY3Rpb24oZSl7dT9hKCIxMDEiKTp2b2lkIDAsdT1BcnJheS5wcm90b3R5cGUu
c2xpY2UuY2FsbChlKSxyKCl9LGluamVjdEV2ZW50UGx1Z2luc0J5TmFtZTpmdW5jdGlvbihlKXt2
YXIgdD0hMTtmb3IodmFyIG4gaW4gZSlpZihlLmhhc093blByb3BlcnR5KG4pKXt2YXIgbz1lW25d
O3MuaGFzT3duUHJvcGVydHkobikmJnNbbl09PT1vfHwoc1tuXT9hKCIxMDIiLG4pOnZvaWQgMCxz
W25dPW8sdD0hMCl9dCYmcigpfSxnZXRQbHVnaW5Nb2R1bGVGb3JFdmVudDpmdW5jdGlvbihlKXt2
YXIgdD1lLmRpc3BhdGNoQ29uZmlnO2lmKHQucmVnaXN0cmF0aW9uTmFtZSlyZXR1cm4gbC5yZWdp
c3RyYXRpb25OYW1lTW9kdWxlc1t0LnJlZ2lzdHJhdGlvbk5hbWVdfHxudWxsO2Zvcih2YXIgbiBp
biB0LnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKWlmKHQucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMu
aGFzT3duUHJvcGVydHkobikpe3ZhciByPWwucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbdC5waGFz
ZWRSZWdpc3RyYXRpb25OYW1lc1tuXV07aWYocilyZXR1cm4gcn1yZXR1cm4gbnVsbH0sX3Jlc2V0
RXZlbnRQbHVnaW5zOmZ1bmN0aW9uKCl7dT1udWxsO2Zvcih2YXIgZSBpbiBzKXMuaGFzT3duUHJv
cGVydHkoZSkmJmRlbGV0ZSBzW2VdO2wucGx1Z2lucy5sZW5ndGg9MDt2YXIgdD1sLmV2ZW50TmFt
ZURpc3BhdGNoQ29uZmlncztmb3IodmFyIG4gaW4gdCl0Lmhhc093blByb3BlcnR5KG4pJiZkZWxl
dGUgdFtuXTt2YXIgcj1sLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzO2Zvcih2YXIgbyBpbiByKXIu
aGFzT3duUHJvcGVydHkobykmJmRlbGV0ZSByW29dfX07ZS5leHBvcnRzPWx9LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZT09PWcudG9wTW91c2VVcHx8
ZT09PWcudG9wVG91Y2hFbmR8fGU9PT1nLnRvcFRvdWNoQ2FuY2VsfWZ1bmN0aW9uIG8oZSl7cmV0
dXJuIGU9PT1nLnRvcE1vdXNlTW92ZXx8ZT09PWcudG9wVG91Y2hNb3ZlfWZ1bmN0aW9uIGkoZSl7
cmV0dXJuIGU9PT1nLnRvcE1vdXNlRG93bnx8ZT09PWcudG9wVG91Y2hTdGFydH1mdW5jdGlvbiBh
KGUsdCxuLHIpe3ZhciBvPWUudHlwZXx8InVua25vd24tZXZlbnQiO2UuY3VycmVudFRhcmdldD1i
LmdldE5vZGVGcm9tSW5zdGFuY2UociksdD9tLmludm9rZUd1YXJkZWRDYWxsYmFja1dpdGhDYXRj
aChvLG4sZSk6bS5pbnZva2VHdWFyZGVkQ2FsbGJhY2sobyxuLGUpLGUuY3VycmVudFRhcmdldD1u
dWxsfWZ1bmN0aW9uIHUoZSx0KXt2YXIgbj1lLl9kaXNwYXRjaExpc3RlbmVycyxyPWUuX2Rpc3Bh
dGNoSW5zdGFuY2VzO2lmKEFycmF5LmlzQXJyYXkobikpZm9yKHZhciBvPTA7bzxuLmxlbmd0aCYm
IWUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTtvKyspYShlLHQsbltvXSxyW29dKTtlbHNlIG4mJmEo
ZSx0LG4scik7ZS5fZGlzcGF0Y2hMaXN0ZW5lcnM9bnVsbCxlLl9kaXNwYXRjaEluc3RhbmNlcz1u
dWxsfWZ1bmN0aW9uIHMoZSl7dmFyIHQ9ZS5fZGlzcGF0Y2hMaXN0ZW5lcnMsbj1lLl9kaXNwYXRj
aEluc3RhbmNlcztpZihBcnJheS5pc0FycmF5KHQpKXtmb3IodmFyIHI9MDtyPHQubGVuZ3RoJiYh
ZS5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpO3IrKylpZih0W3JdKGUsbltyXSkpcmV0dXJuIG5bcl19
ZWxzZSBpZih0JiZ0KGUsbikpcmV0dXJuIG47cmV0dXJuIG51bGx9ZnVuY3Rpb24gbChlKXt2YXIg
dD1zKGUpO3JldHVybiBlLl9kaXNwYXRjaEluc3RhbmNlcz1udWxsLGUuX2Rpc3BhdGNoTGlzdGVu
ZXJzPW51bGwsdH1mdW5jdGlvbiBjKGUpe3ZhciB0PWUuX2Rpc3BhdGNoTGlzdGVuZXJzLG49ZS5f
ZGlzcGF0Y2hJbnN0YW5jZXM7QXJyYXkuaXNBcnJheSh0KT9oKCIxMDMiKTp2b2lkIDAsZS5jdXJy
ZW50VGFyZ2V0PXQ/Yi5nZXROb2RlRnJvbUluc3RhbmNlKG4pOm51bGw7dmFyIHI9dD90KGUpOm51
bGw7cmV0dXJuIGUuY3VycmVudFRhcmdldD1udWxsLGUuX2Rpc3BhdGNoTGlzdGVuZXJzPW51bGws
ZS5fZGlzcGF0Y2hJbnN0YW5jZXM9bnVsbCxyfWZ1bmN0aW9uIHAoZSl7cmV0dXJuISFlLl9kaXNw
YXRjaExpc3RlbmVyc312YXIgZCxmLGg9bigyKSx2PW4oMTIpLG09big0NikseT0obigxKSxuKDMp
LHtpbmplY3RDb21wb25lbnRUcmVlOmZ1bmN0aW9uKGUpe2Q9ZX0saW5qZWN0VHJlZVRyYXZlcnNh
bDpmdW5jdGlvbihlKXtmPWV9fSksZz12LnRvcExldmVsVHlwZXMsYj17aXNFbmRpc2g6cixpc01v
dmVpc2g6byxpc1N0YXJ0aXNoOmksZXhlY3V0ZURpcmVjdERpc3BhdGNoOmMsZXhlY3V0ZURpc3Bh
dGNoZXNJbk9yZGVyOnUsZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZTpsLGhhc0Rp
c3BhdGNoZXM6cCxnZXRJbnN0YW5jZUZyb21Ob2RlOmZ1bmN0aW9uKGUpe3JldHVybiBkLmdldElu
c3RhbmNlRnJvbU5vZGUoZSl9LGdldE5vZGVGcm9tSW5zdGFuY2U6ZnVuY3Rpb24oZSl7cmV0dXJu
IGQuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKX0saXNBbmNlc3RvcjpmdW5jdGlvbihlLHQpe3JldHVy
biBmLmlzQW5jZXN0b3IoZSx0KX0sZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3I6ZnVuY3Rpb24oZSx0
KXtyZXR1cm4gZi5nZXRMb3dlc3RDb21tb25BbmNlc3RvcihlLHQpfSxnZXRQYXJlbnRJbnN0YW5j
ZTpmdW5jdGlvbihlKXtyZXR1cm4gZi5nZXRQYXJlbnRJbnN0YW5jZShlKX0sdHJhdmVyc2VUd29Q
aGFzZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGYudHJhdmVyc2VUd29QaGFzZShlLHQsbil9LHRy
YXZlcnNlRW50ZXJMZWF2ZTpmdW5jdGlvbihlLHQsbixyLG8pe3JldHVybiBmLnRyYXZlcnNlRW50
ZXJMZWF2ZShlLHQsbixyLG8pfSxpbmplY3Rpb246eX07ZS5leHBvcnRzPWJ9LGZ1bmN0aW9uKGUs
dCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7dmFyIHQ9L1s9Ol0vZyxuPXsiPSI6Ij0wIiwi
OiI6Ij0yIn0scj0oIiIrZSkucmVwbGFjZSh0LGZ1bmN0aW9uKGUpe3JldHVybiBuW2VdfSk7cmV0
dXJuIiQiK3J9ZnVuY3Rpb24gcihlKXt2YXIgdD0vKD0wfD0yKS9nLG49eyI9MCI6Ij0iLCI9MiI6
IjoifSxyPSIuIj09PWVbMF0mJiIkIj09PWVbMV0/ZS5zdWJzdHJpbmcoMik6ZS5zdWJzdHJpbmco
MSk7cmV0dXJuKCIiK3IpLnJlcGxhY2UodCxmdW5jdGlvbihlKXtyZXR1cm4gbltlXX0pfXZhciBv
PXtlc2NhcGU6bix1bmVzY2FwZTpyfTtlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUpe251bGwhPWUuY2hlY2tlZExpbmsmJm51bGwhPWUudmFsdWVM
aW5rP3UoIjg3Iik6dm9pZCAwfWZ1bmN0aW9uIG8oZSl7cihlKSxudWxsIT1lLnZhbHVlfHxudWxs
IT1lLm9uQ2hhbmdlP3UoIjg4Iik6dm9pZCAwfWZ1bmN0aW9uIGkoZSl7cihlKSxudWxsIT1lLmNo
ZWNrZWR8fG51bGwhPWUub25DaGFuZ2U/dSgiODkiKTp2b2lkIDB9ZnVuY3Rpb24gYShlKXtpZihl
KXt2YXIgdD1lLmdldE5hbWUoKTtpZih0KXJldHVybiIgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qg
b2YgYCIrdCsiYC4ifXJldHVybiIifXZhciB1PW4oMikscz1uKDg0KSxsPW4oNDkpLGM9big1MCks
cD0obigxKSxuKDMpLHtidXR0b246ITAsY2hlY2tib3g6ITAsaW1hZ2U6ITAsaGlkZGVuOiEwLHJh
ZGlvOiEwLHJlc2V0OiEwLHN1Ym1pdDohMH0pLGQ9e3ZhbHVlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1
cm4hZVt0XXx8cFtlLnR5cGVdfHxlLm9uQ2hhbmdlfHxlLnJlYWRPbmx5fHxlLmRpc2FibGVkP251
bGw6bmV3IEVycm9yKCJZb3UgcHJvdmlkZWQgYSBgdmFsdWVgIHByb3AgdG8gYSBmb3JtIGZpZWxk
IHdpdGhvdXQgYW4gYG9uQ2hhbmdlYCBoYW5kbGVyLiBUaGlzIHdpbGwgcmVuZGVyIGEgcmVhZC1v
bmx5IGZpZWxkLiBJZiB0aGUgZmllbGQgc2hvdWxkIGJlIG11dGFibGUgdXNlIGBkZWZhdWx0VmFs
dWVgLiBPdGhlcndpc2UsIHNldCBlaXRoZXIgYG9uQ2hhbmdlYCBvciBgcmVhZE9ubHlgLiIpfSxj
aGVja2VkOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4hZVt0XXx8ZS5vbkNoYW5nZXx8ZS5yZWFkT25s
eXx8ZS5kaXNhYmxlZD9udWxsOm5ldyBFcnJvcigiWW91IHByb3ZpZGVkIGEgYGNoZWNrZWRgIHBy
b3AgdG8gYSBmb3JtIGZpZWxkIHdpdGhvdXQgYW4gYG9uQ2hhbmdlYCBoYW5kbGVyLiBUaGlzIHdp
bGwgcmVuZGVyIGEgcmVhZC1vbmx5IGZpZWxkLiBJZiB0aGUgZmllbGQgc2hvdWxkIGJlIG11dGFi
bGUgdXNlIGBkZWZhdWx0Q2hlY2tlZGAuIE90aGVyd2lzZSwgc2V0IGVpdGhlciBgb25DaGFuZ2Vg
IG9yIGByZWFkT25seWAuIil9LG9uQ2hhbmdlOnMuZnVuY30sZj17fSxoPXtjaGVja1Byb3BUeXBl
czpmdW5jdGlvbihlLHQsbil7Zm9yKHZhciByIGluIGQpe2lmKGQuaGFzT3duUHJvcGVydHkocikp
dmFyIG89ZFtyXSh0LHIsZSxsLnByb3AsbnVsbCxjKTtpZihvIGluc3RhbmNlb2YgRXJyb3ImJiEo
by5tZXNzYWdlIGluIGYpKXtmW28ubWVzc2FnZV09ITA7YShuKX19fSxnZXRWYWx1ZTpmdW5jdGlv
bihlKXtyZXR1cm4gZS52YWx1ZUxpbms/KG8oZSksZS52YWx1ZUxpbmsudmFsdWUpOmUudmFsdWV9
LGdldENoZWNrZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuY2hlY2tlZExpbms/KGkoZSksZS5jaGVj
a2VkTGluay52YWx1ZSk6ZS5jaGVja2VkfSxleGVjdXRlT25DaGFuZ2U6ZnVuY3Rpb24oZSx0KXty
ZXR1cm4gZS52YWx1ZUxpbms/KG8oZSksZS52YWx1ZUxpbmsucmVxdWVzdENoYW5nZSh0LnRhcmdl
dC52YWx1ZSkpOmUuY2hlY2tlZExpbms/KGkoZSksZS5jaGVja2VkTGluay5yZXF1ZXN0Q2hhbmdl
KHQudGFyZ2V0LmNoZWNrZWQpKTplLm9uQ2hhbmdlP2Uub25DaGFuZ2UuY2FsbCh2b2lkIDAsdCk6
dm9pZCAwfX07ZS5leHBvcnRzPWh9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlLHQsbil7dGhpcy5wcm9wcz1lLHRoaXMuY29udGV4dD10LHRoaXMucmVmcz1hLHRoaXMu
dXBkYXRlcj1ufHxpfXZhciBvPW4oMiksaT1uKDQ3KSxhPShuKDg4KSxuKDIwKSk7bigxKSxuKDMp
O3IucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQ9e30sci5wcm90b3R5cGUuc2V0U3RhdGU9ZnVu
Y3Rpb24oZSx0KXsib2JqZWN0IiE9dHlwZW9mIGUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlJiZudWxs
IT1lP28oIjg1Iik6dm9pZCAwLHRoaXMudXBkYXRlci5lbnF1ZXVlU2V0U3RhdGUodGhpcyxlKSx0
JiZ0aGlzLnVwZGF0ZXIuZW5xdWV1ZUNhbGxiYWNrKHRoaXMsdCwic2V0U3RhdGUiKX0sci5wcm90
b3R5cGUuZm9yY2VVcGRhdGU9ZnVuY3Rpb24oZSl7dGhpcy51cGRhdGVyLmVucXVldWVGb3JjZVVw
ZGF0ZSh0aGlzKSxlJiZ0aGlzLnVwZGF0ZXIuZW5xdWV1ZUNhbGxiYWNrKHRoaXMsZSwiZm9yY2VV
cGRhdGUiKX07ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9
bigyKSxvPShuKDEpLCExKSxpPXtyZXBsYWNlTm9kZVdpdGhNYXJrdXA6bnVsbCxwcm9jZXNzQ2hp
bGRyZW5VcGRhdGVzOm51bGwsaW5qZWN0aW9uOntpbmplY3RFbnZpcm9ubWVudDpmdW5jdGlvbihl
KXtvP3IoIjEwNCIpOnZvaWQgMCxpLnJlcGxhY2VOb2RlV2l0aE1hcmt1cD1lLnJlcGxhY2VOb2Rl
V2l0aE1hcmt1cCxpLnByb2Nlc3NDaGlsZHJlblVwZGF0ZXM9ZS5wcm9jZXNzQ2hpbGRyZW5VcGRh
dGVzLG89ITB9fX07ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlKXt2YXIgdD1GdW5jdGlvbi5wcm90b3R5cGUudG9TdHJpbmcsbj1PYmplY3QucHJv
dG90eXBlLmhhc093blByb3BlcnR5LHI9UmVnRXhwKCJeIit0LmNhbGwobikucmVwbGFjZSgvW1xc
XiQuKis/KClbXF17fXxdL2csIlxcJCYiKS5yZXBsYWNlKC9oYXNPd25Qcm9wZXJ0eXwoZnVuY3Rp
b24pLio/KD89XFxcKCl8IGZvciAuKz8oPz1cXFxdKS9nLCIkMS4qPyIpKyIkIik7dHJ5e3ZhciBv
PXQuY2FsbChlKTtyZXR1cm4gci50ZXN0KG8pfWNhdGNoKGkpe3JldHVybiExfX1mdW5jdGlvbiBv
KGUpe3JldHVybiIuIitlfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIHBhcnNlSW50KGUuc3Vic3RyKDEp
LDEwKX1mdW5jdGlvbiBhKGUpe2lmKHcpcmV0dXJuIHkuZ2V0KGUpO3ZhciB0PW8oZSk7cmV0dXJu
IGJbdF19ZnVuY3Rpb24gdShlKXtpZih3KXkuZGVsZXRlKGUpO2Vsc2V7dmFyIHQ9byhlKTtkZWxl
dGUgYlt0XX19ZnVuY3Rpb24gcyhlLHQsbil7dmFyIHI9e2VsZW1lbnQ6dCxwYXJlbnRJRDpuLHRl
eHQ6bnVsbCxjaGlsZElEczpbXSxpc01vdW50ZWQ6ITEsdXBkYXRlQ291bnQ6MH07aWYodyl5LnNl
dChlLHIpO2Vsc2V7dmFyIGk9byhlKTtiW2ldPXJ9fWZ1bmN0aW9uIGwoZSl7aWYodylnLmFkZChl
KTtlbHNle3ZhciB0PW8oZSk7X1t0XT0hMH19ZnVuY3Rpb24gYyhlKXtpZih3KWcuZGVsZXRlKGUp
O2Vsc2V7dmFyIHQ9byhlKTtkZWxldGUgX1t0XX19ZnVuY3Rpb24gcCgpe3JldHVybiB3P0FycmF5
LmZyb20oeS5rZXlzKCkpOk9iamVjdC5rZXlzKGIpLm1hcChpKX1mdW5jdGlvbiBkKCl7cmV0dXJu
IHc/QXJyYXkuZnJvbShnLmtleXMoKSk6T2JqZWN0LmtleXMoXykubWFwKGkpfWZ1bmN0aW9uIGYo
ZSl7dmFyIHQ9YShlKTtpZih0KXt2YXIgbj10LmNoaWxkSURzO3UoZSksbi5mb3JFYWNoKGYpfX1m
dW5jdGlvbiBoKGUsdCxuKXtyZXR1cm4iXG4gICAgaW4gIitlKyh0PyIgKGF0ICIrdC5maWxlTmFt
ZS5yZXBsYWNlKC9eLipbXFxcL10vLCIiKSsiOiIrdC5saW5lTnVtYmVyKyIpIjpuPyIgKGNyZWF0
ZWQgYnkgIituKyIpIjoiIil9ZnVuY3Rpb24gdihlKXtyZXR1cm4gbnVsbD09ZT8iI2VtcHR5Ijoi
c3RyaW5nIj09dHlwZW9mIGV8fCJudW1iZXIiPT10eXBlb2YgZT8iI3RleHQiOiJzdHJpbmciPT10
eXBlb2YgZS50eXBlP2UudHlwZTplLnR5cGUuZGlzcGxheU5hbWV8fGUudHlwZS5uYW1lfHwiVW5r
bm93biJ9ZnVuY3Rpb24gbShlKXt2YXIgdCxuPVAuZ2V0RGlzcGxheU5hbWUoZSkscj1QLmdldEVs
ZW1lbnQoZSksbz1QLmdldE93bmVySUQoZSk7cmV0dXJuIG8mJih0PVAuZ2V0RGlzcGxheU5hbWUo
bykpLGgobixyJiZyLl9zb3VyY2UsdCl9dmFyIHksZyxiLF8sQz1uKDIpLEU9bigxNiksdz0obigx
KSxuKDMpLCJmdW5jdGlvbiI9PXR5cGVvZiBBcnJheS5mcm9tJiYiZnVuY3Rpb24iPT10eXBlb2Yg
TWFwJiZyKE1hcCkmJm51bGwhPU1hcC5wcm90b3R5cGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBNYXAu
cHJvdG90eXBlLmtleXMmJnIoTWFwLnByb3RvdHlwZS5rZXlzKSYmImZ1bmN0aW9uIj09dHlwZW9m
IFNldCYmcihTZXQpJiZudWxsIT1TZXQucHJvdG90eXBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU2V0
LnByb3RvdHlwZS5rZXlzJiZyKFNldC5wcm90b3R5cGUua2V5cykpO3c/KHk9bmV3IE1hcCxnPW5l
dyBTZXQpOihiPXt9LF89e30pO3ZhciBUPVtdLFA9e29uU2V0Q2hpbGRyZW46ZnVuY3Rpb24oZSx0
KXt2YXIgbj1hKGUpO24uY2hpbGRJRHM9dDtmb3IodmFyIHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFy
IG89dFtyXSxpPWEobyk7aT92b2lkIDA6QygiMTQwIiksbnVsbD09aS5jaGlsZElEcyYmIm9iamVj
dCI9PXR5cGVvZiBpLmVsZW1lbnQmJm51bGwhPWkuZWxlbWVudD9DKCIxNDEiKTp2b2lkIDAsaS5p
c01vdW50ZWQ/dm9pZCAwOkMoIjcxIiksbnVsbD09aS5wYXJlbnRJRCYmKGkucGFyZW50SUQ9ZSks
aS5wYXJlbnRJRCE9PWU/QygiMTQyIixvLGkucGFyZW50SUQsZSk6dm9pZCAwfX0sb25CZWZvcmVN
b3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQsbil7cyhlLHQsbil9LG9uQmVmb3JlVXBkYXRlQ29t
cG9uZW50OmZ1bmN0aW9uKGUsdCl7dmFyIG49YShlKTtuJiZuLmlzTW91bnRlZCYmKG4uZWxlbWVu
dD10KX0sb25Nb3VudENvbXBvbmVudDpmdW5jdGlvbihlKXt2YXIgdD1hKGUpO3QuaXNNb3VudGVk
PSEwO3ZhciBuPTA9PT10LnBhcmVudElEO24mJmwoZSl9LG9uVXBkYXRlQ29tcG9uZW50OmZ1bmN0
aW9uKGUpe3ZhciB0PWEoZSk7dCYmdC5pc01vdW50ZWQmJnQudXBkYXRlQ291bnQrK30sb25Vbm1v
dW50Q29tcG9uZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWEoZSk7aWYodCl7dC5pc01vdW50ZWQ9ITE7
dmFyIG49MD09PXQucGFyZW50SUQ7biYmYyhlKX1ULnB1c2goZSl9LHB1cmdlVW5tb3VudGVkQ29t
cG9uZW50czpmdW5jdGlvbigpe2lmKCFQLl9wcmV2ZW50UHVyZ2luZyl7Zm9yKHZhciBlPTA7ZTxU
Lmxlbmd0aDtlKyspe3ZhciB0PVRbZV07Zih0KX1ULmxlbmd0aD0wfX0saXNNb3VudGVkOmZ1bmN0
aW9uKGUpe3ZhciB0PWEoZSk7cmV0dXJuISF0JiZ0LmlzTW91bnRlZH0sZ2V0Q3VycmVudFN0YWNr
QWRkZW5kdW06ZnVuY3Rpb24oZSl7dmFyIHQ9IiI7aWYoZSl7dmFyIG49ZS50eXBlLHI9ImZ1bmN0
aW9uIj09dHlwZW9mIG4/bi5kaXNwbGF5TmFtZXx8bi5uYW1lOm4sbz1lLl9vd25lcjt0Kz1oKHJ8
fCJVbmtub3duIixlLl9zb3VyY2UsbyYmby5nZXROYW1lKCkpfXZhciBpPUUuY3VycmVudCxhPWkm
JmkuX2RlYnVnSUQ7cmV0dXJuIHQrPVAuZ2V0U3RhY2tBZGRlbmR1bUJ5SUQoYSl9LGdldFN0YWNr
QWRkZW5kdW1CeUlEOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0iIjtlOyl0Kz1tKGUpLGU9UC5nZXRQ
YXJlbnRJRChlKTtyZXR1cm4gdH0sZ2V0Q2hpbGRJRHM6ZnVuY3Rpb24oZSl7dmFyIHQ9YShlKTty
ZXR1cm4gdD90LmNoaWxkSURzOltdfSxnZXREaXNwbGF5TmFtZTpmdW5jdGlvbihlKXt2YXIgdD1Q
LmdldEVsZW1lbnQoZSk7cmV0dXJuIHQ/dih0KTpudWxsfSxnZXRFbGVtZW50OmZ1bmN0aW9uKGUp
e3ZhciB0PWEoZSk7cmV0dXJuIHQ/dC5lbGVtZW50Om51bGx9LGdldE93bmVySUQ6ZnVuY3Rpb24o
ZSl7dmFyIHQ9UC5nZXRFbGVtZW50KGUpO3JldHVybiB0JiZ0Ll9vd25lcj90Ll9vd25lci5fZGVi
dWdJRDpudWxsfSxnZXRQYXJlbnRJRDpmdW5jdGlvbihlKXt2YXIgdD1hKGUpO3JldHVybiB0P3Qu
cGFyZW50SUQ6bnVsbH0sZ2V0U291cmNlOmZ1bmN0aW9uKGUpe3ZhciB0PWEoZSksbj10P3QuZWxl
bWVudDpudWxsLHI9bnVsbCE9bj9uLl9zb3VyY2U6bnVsbDtyZXR1cm4gcn0sZ2V0VGV4dDpmdW5j
dGlvbihlKXt2YXIgdD1QLmdldEVsZW1lbnQoZSk7cmV0dXJuInN0cmluZyI9PXR5cGVvZiB0P3Q6
Im51bWJlciI9PXR5cGVvZiB0PyIiK3Q6bnVsbH0sZ2V0VXBkYXRlQ291bnQ6ZnVuY3Rpb24oZSl7
dmFyIHQ9YShlKTtyZXR1cm4gdD90LnVwZGF0ZUNvdW50OjB9LGdldFJlZ2lzdGVyZWRJRHM6cCxn
ZXRSb290SURzOmR9O2UuZXhwb3J0cz1QfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSx0LG4scil7dHJ5e3JldHVybiB0KG4scil9Y2F0Y2goaSl7cmV0dXJuIHZvaWQo
bnVsbD09PW8mJihvPWkpKX19dmFyIG89bnVsbCxpPXtpbnZva2VHdWFyZGVkQ2FsbGJhY2s6cixp
bnZva2VHdWFyZGVkQ2FsbGJhY2tXaXRoQ2F0Y2g6cixyZXRocm93Q2F1Z2h0RXJyb3I6ZnVuY3Rp
b24oKXtpZihvKXt2YXIgZT1vO3Rocm93IG89bnVsbCxlfX19O2UuZXhwb3J0cz1pfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXt9dmFyIG89KG4oMykse2lzTW91
bnRlZDpmdW5jdGlvbihlKXtyZXR1cm4hMX0sZW5xdWV1ZUNhbGxiYWNrOmZ1bmN0aW9uKGUsdCl7
fSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVuY3Rpb24oZSl7cihlLCJmb3JjZVVwZGF0ZSIpfSxlbnF1
ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9uKGUsdCl7cihlLCJyZXBsYWNlU3RhdGUiKX0sZW5xdWV1
ZVNldFN0YXRlOmZ1bmN0aW9uKGUsdCl7cihlLCJzZXRTdGF0ZSIpfX0pO2UuZXhwb3J0cz1vfSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXt9O2UuZXhwb3J0cz1yfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMjYpLG89cih7cHJvcDpudWxsLGNvbnRleHQ6
bnVsbCxjaGlsZENvbnRleHQ6bnVsbH0pO2UuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQpeyJ1c2Ug
c3RyaWN0Ijt2YXIgbj0iU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklS
RUQiO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSl7cy5lbnF1ZXVlVXBkYXRlKGUpfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9dHlwZW9mIGU7aWYoIm9i
amVjdCIhPT10KXJldHVybiB0O3ZhciBuPWUuY29uc3RydWN0b3ImJmUuY29uc3RydWN0b3IubmFt
ZXx8dCxyPU9iamVjdC5rZXlzKGUpO3JldHVybiByLmxlbmd0aD4wJiZyLmxlbmd0aDwyMD9uKyIg
KGtleXM6ICIrci5qb2luKCIsICIpKyIpIjpufWZ1bmN0aW9uIGkoZSx0KXt2YXIgbj11LmdldChl
KTtpZighbil7cmV0dXJuIG51bGx9cmV0dXJuIG59dmFyIGE9bigyKSx1PShuKDE2KSxuKDIzKSks
cz0obig4KSxuKDEwKSksbD0obigxKSxuKDMpLHtpc01vdW50ZWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9
dS5nZXQoZSk7cmV0dXJuISF0JiYhIXQuX3JlbmRlcmVkQ29tcG9uZW50fSxlbnF1ZXVlQ2FsbGJh
Y2s6ZnVuY3Rpb24oZSx0LG4pe2wudmFsaWRhdGVDYWxsYmFjayh0LG4pO3ZhciBvPWkoZSk7cmV0
dXJuIG8/KG8uX3BlbmRpbmdDYWxsYmFja3M/by5fcGVuZGluZ0NhbGxiYWNrcy5wdXNoKHQpOm8u
X3BlbmRpbmdDYWxsYmFja3M9W3RdLHZvaWQgcihvKSk6bnVsbH0sZW5xdWV1ZUNhbGxiYWNrSW50
ZXJuYWw6ZnVuY3Rpb24oZSx0KXtlLl9wZW5kaW5nQ2FsbGJhY2tzP2UuX3BlbmRpbmdDYWxsYmFj
a3MucHVzaCh0KTplLl9wZW5kaW5nQ2FsbGJhY2tzPVt0XSxyKGUpfSxlbnF1ZXVlRm9yY2VVcGRh
dGU6ZnVuY3Rpb24oZSl7dmFyIHQ9aShlLCJmb3JjZVVwZGF0ZSIpO3QmJih0Ll9wZW5kaW5nRm9y
Y2VVcGRhdGU9ITAscih0KSl9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oZSx0KXt2YXIg
bj1pKGUsInJlcGxhY2VTdGF0ZSIpO24mJihuLl9wZW5kaW5nU3RhdGVRdWV1ZT1bdF0sbi5fcGVu
ZGluZ1JlcGxhY2VTdGF0ZT0hMCxyKG4pKX0sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKGUsdCl7
dmFyIG49aShlLCJzZXRTdGF0ZSIpO2lmKG4pe3ZhciBvPW4uX3BlbmRpbmdTdGF0ZVF1ZXVlfHwo
bi5fcGVuZGluZ1N0YXRlUXVldWU9W10pO28ucHVzaCh0KSxyKG4pfX0sZW5xdWV1ZUVsZW1lbnRJ
bnRlcm5hbDpmdW5jdGlvbihlLHQsbil7ZS5fcGVuZGluZ0VsZW1lbnQ9dCxlLl9jb250ZXh0PW4s
cihlKX0sdmFsaWRhdGVDYWxsYmFjazpmdW5jdGlvbihlLHQpe2UmJiJmdW5jdGlvbiIhPXR5cGVv
ZiBlP2EoIjEyMiIsdCxvKGUpKTp2b2lkIDB9fSk7ZS5leHBvcnRzPWx9LGZ1bmN0aW9uKGUsdCl7
InVzZSBzdHJpY3QiO3ZhciBuPWZ1bmN0aW9uKGUpe3JldHVybiJ1bmRlZmluZWQiIT10eXBlb2Yg
TVNBcHAmJk1TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uP2Z1bmN0aW9uKHQsbixyLG8pe01T
QXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uKCl7cmV0dXJuIGUodCxuLHIsbyl9
KX06ZX07ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4o
ZSl7dmFyIHQsbj1lLmtleUNvZGU7cmV0dXJuImNoYXJDb2RlImluIGU/KHQ9ZS5jaGFyQ29kZSww
PT09dCYmMTM9PT1uJiYodD0xMykpOnQ9bix0Pj0zMnx8MTM9PT10P3Q6MH1lLmV4cG9ydHM9bn0s
ZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXt2YXIgdD10aGlzLG49dC5u
YXRpdmVFdmVudDtpZihuLmdldE1vZGlmaWVyU3RhdGUpcmV0dXJuIG4uZ2V0TW9kaWZpZXJTdGF0
ZShlKTt2YXIgcj1vW2VdO3JldHVybiEhciYmISFuW3JdfWZ1bmN0aW9uIHIoZSl7cmV0dXJuIG59
dmFyIG89e0FsdDoiYWx0S2V5IixDb250cm9sOiJjdHJsS2V5IixNZXRhOiJtZXRhS2V5IixTaGlm
dDoic2hpZnRLZXkifTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gbihlKXt2YXIgdD1lLnRhcmdldHx8ZS5zcmNFbGVtZW50fHx3aW5kb3c7cmV0dXJuIHQu
Y29ycmVzcG9uZGluZ1VzZUVsZW1lbnQmJih0PXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQpLDM9
PT10Lm5vZGVUeXBlP3QucGFyZW50Tm9kZTp0fWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtpZighaS5jYW5Vc2VET018fHQmJiEoImFkZEV2
ZW50TGlzdGVuZXIiaW4gZG9jdW1lbnQpKXJldHVybiExO3ZhciBuPSJvbiIrZSxyPW4gaW4gZG9j
dW1lbnQ7aWYoIXIpe3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Euc2V0QXR0
cmlidXRlKG4sInJldHVybjsiKSxyPSJmdW5jdGlvbiI9PXR5cGVvZiBhW25dfXJldHVybiFyJiZv
JiYid2hlZWwiPT09ZSYmKHI9ZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSgiRXZl
bnRzLndoZWVsIiwiMy4wIikpLHJ9dmFyIG8saT1uKDYpO2kuY2FuVXNlRE9NJiYobz1kb2N1bWVu
dC5pbXBsZW1lbnRhdGlvbiYmZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSYmZG9j
dW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSgiIiwiIikhPT0hMCksZS5leHBvcnRzPXJ9
LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0KXt2YXIgbj1udWxsPT09
ZXx8ZT09PSExLHI9bnVsbD09PXR8fHQ9PT0hMTtpZihufHxyKXJldHVybiBuPT09cjt2YXIgbz10
eXBlb2YgZSxpPXR5cGVvZiB0O3JldHVybiJzdHJpbmciPT09b3x8Im51bWJlciI9PT1vPyJzdHJp
bmciPT09aXx8Im51bWJlciI9PT1pOiJvYmplY3QiPT09aSYmZS50eXBlPT09dC50eXBlJiZlLmtl
eT09PXQua2V5fWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSx0KXtyZXR1cm4gZSYmIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT1lLmtleT9sLmVz
Y2FwZShlLmtleSk6dC50b1N0cmluZygzNil9ZnVuY3Rpb24gbyhlLHQsbixpKXt2YXIgZD10eXBl
b2YgZTtpZigidW5kZWZpbmVkIiE9PWQmJiJib29sZWFuIiE9PWR8fChlPW51bGwpLG51bGw9PT1l
fHwic3RyaW5nIj09PWR8fCJudW1iZXIiPT09ZHx8dS5pc1ZhbGlkRWxlbWVudChlKSlyZXR1cm4g
bihpLGUsIiI9PT10P2MrcihlLDApOnQpLDE7dmFyIGYsaCx2PTAsbT0iIj09PXQ/Yzp0K3A7aWYo
QXJyYXkuaXNBcnJheShlKSlmb3IodmFyIHk9MDt5PGUubGVuZ3RoO3krKylmPWVbeV0saD1tK3Io
Zix5KSx2Kz1vKGYsaCxuLGkpO2Vsc2V7dmFyIGc9cyhlKTtpZihnKXt2YXIgYixfPWcuY2FsbChl
KTtpZihnIT09ZS5lbnRyaWVzKWZvcih2YXIgQz0wOyEoYj1fLm5leHQoKSkuZG9uZTspZj1iLnZh
bHVlLGg9bStyKGYsQysrKSx2Kz1vKGYsaCxuLGkpO2Vsc2UgZm9yKDshKGI9Xy5uZXh0KCkpLmRv
bmU7KXt2YXIgRT1iLnZhbHVlO0UmJihmPUVbMV0saD1tK2wuZXNjYXBlKEVbMF0pK3ArcihmLDAp
LHYrPW8oZixoLG4saSkpfX1lbHNlIGlmKCJvYmplY3QiPT09ZCl7dmFyIHc9IiIsVD1TdHJpbmco
ZSk7YSgiMzEiLCJbb2JqZWN0IE9iamVjdF0iPT09VD8ib2JqZWN0IHdpdGgga2V5cyB7IitPYmpl
Y3Qua2V5cyhlKS5qb2luKCIsICIpKyJ9IjpULHcpfX1yZXR1cm4gdn1mdW5jdGlvbiBpKGUsdCxu
KXtyZXR1cm4gbnVsbD09ZT8wOm8oZSwiIix0LG4pfXZhciBhPW4oMiksdT0obigxNiksbig5KSks
cz1uKDkxKSxsPShuKDEpLG4oNDEpKSxjPShuKDMpLCIuIikscD0iOiI7ZS5leHBvcnRzPWl9LGZ1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9KG4oNCksbig3KSksbz0obigzKSxyKTtl
LmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDcpLG89e2xp
c3RlbjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcj8oZS5hZGRFdmVu
dExpc3RlbmVyKHQsbiwhMSkse3JlbW92ZTpmdW5jdGlvbigpe2UucmVtb3ZlRXZlbnRMaXN0ZW5l
cih0LG4sITEpfX0pOmUuYXR0YWNoRXZlbnQ/KGUuYXR0YWNoRXZlbnQoIm9uIit0LG4pLHtyZW1v
dmU6ZnVuY3Rpb24oKXtlLmRldGFjaEV2ZW50KCJvbiIrdCxuKX19KTp2b2lkIDB9LGNhcHR1cmU6
ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlLmFkZEV2ZW50TGlzdGVuZXI/KGUuYWRkRXZlbnRMaXN0
ZW5lcih0LG4sITApLHtyZW1vdmU6ZnVuY3Rpb24oKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxu
LCEwKX19KTp7cmVtb3ZlOnJ9fSxyZWdpc3RlckRlZmF1bHQ6ZnVuY3Rpb24oKXt9fTtlLmV4cG9y
dHM9b30sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXt0cnl7ZS5mb2N1
cygpfWNhdGNoKHQpe319ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIG4oKXtpZigidW5kZWZpbmVkIj09dHlwZW9mIGRvY3VtZW50KXJldHVybiBudWxsO3Ry
eXtyZXR1cm4gZG9jdW1lbnQuYWN0aXZlRWxlbWVudHx8ZG9jdW1lbnQuYm9keX1jYXRjaChlKXty
ZXR1cm4gZG9jdW1lbnQuYm9keX19ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19
dC5fX2VzTW9kdWxlPSEwLHQuY29ubmVjdD10LlByb3ZpZGVyPXZvaWQgMDt2YXIgbz1uKDExNyks
aT1yKG8pLGE9bigxMTgpLHU9cihhKTt0LlByb3ZpZGVyPWkuZGVmYXVsdCx0LmNvbm5lY3Q9dS5k
ZWZhdWx0fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3QuX19lc01vZHVsZT0hMDt2YXIg
cj1uKDExKTt0LmRlZmF1bHQ9ci5Qcm9wVHlwZXMuc2hhcGUoe3N1YnNjcmliZTpyLlByb3BUeXBl
cy5mdW5jLmlzUmVxdWlyZWQsZGlzcGF0Y2g6ci5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLGdl
dFN0YXRlOnIuUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZH0pfSxmdW5jdGlvbihlLHQpeyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiBuKGUpeyJ1bmRlZmluZWQiIT10eXBlb2YgY29uc29sZSYmImZ1bmN0
aW9uIj09dHlwZW9mIGNvbnNvbGUuZXJyb3ImJmNvbnNvbGUuZXJyb3IoZSk7dHJ5e3Rocm93IG5l
dyBFcnJvcihlKX1jYXRjaCh0KXt9fXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9bn0sZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1
bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBvKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhy
b3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVu
Y3Rpb24gaShlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3Qg
YmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8
fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fWZ1bmN0aW9uIGEo
ZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJv
cigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5v
dCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtj
b25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJs
ZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihl
LHQpOmUuX19wcm90b19fPXQpfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7
dmFsdWU6ITB9KTt2YXIgdT1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtu
PHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxy
LmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZp
bmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZl
KHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxzPW4oMTEpLGw9cihzKSxjPW4oMzMpLHA9
cihjKSxkPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgZSxuLHIsYTtvKHRoaXMsdCk7Zm9y
KHZhciB1PWFyZ3VtZW50cy5sZW5ndGgscz1BcnJheSh1KSxsPTA7bDx1O2wrKylzW2xdPWFyZ3Vt
ZW50c1tsXTtyZXR1cm4gbj1yPWkodGhpcywoZT10Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3Rv
dHlwZU9mKHQpKS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChzKSkpLHIuc3RhdGU9e3RleHQ6
ci5wcm9wcy50ZXh0fHwiIn0sci5oYW5kbGVTdWJtaXQ9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50YXJn
ZXQudmFsdWUudHJpbSgpOzEzPT09ZS53aGljaCYmKHIucHJvcHMub25TYXZlKHQpLHIucHJvcHMu
bmV3VG9kbyYmci5zZXRTdGF0ZSh7dGV4dDoiIn0pKX0sci5oYW5kbGVDaGFuZ2U9ZnVuY3Rpb24o
ZSl7ci5zZXRTdGF0ZSh7dGV4dDplLnRhcmdldC52YWx1ZX0pfSxyLmhhbmRsZUJsdXI9ZnVuY3Rp
b24oZSl7ci5wcm9wcy5uZXdUb2RvfHxyLnByb3BzLm9uU2F2ZShlLnRhcmdldC52YWx1ZSl9LGE9
bixpKHIsYSl9cmV0dXJuIGEodCxlKSx1KHQsW3trZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24o
KXtyZXR1cm4gbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7Y2xhc3NOYW1lOigwLHAu
ZGVmYXVsdCkoe2VkaXQ6dGhpcy5wcm9wcy5lZGl0aW5nLCJuZXctdG9kbyI6dGhpcy5wcm9wcy5u
ZXdUb2RvfSksdHlwZToidGV4dCIscGxhY2Vob2xkZXI6dGhpcy5wcm9wcy5wbGFjZWhvbGRlcixh
dXRvRm9jdXM6InRydWUiLHZhbHVlOnRoaXMuc3RhdGUudGV4dCxvbkJsdXI6dGhpcy5oYW5kbGVC
bHVyLG9uQ2hhbmdlOnRoaXMuaGFuZGxlQ2hhbmdlLG9uS2V5RG93bjp0aGlzLmhhbmRsZVN1Ym1p
dH0pfX1dKSx0fShzLkNvbXBvbmVudCk7ZC5wcm9wVHlwZXM9e29uU2F2ZTpzLlByb3BUeXBlcy5m
dW5jLmlzUmVxdWlyZWQsdGV4dDpzLlByb3BUeXBlcy5zdHJpbmcscGxhY2Vob2xkZXI6cy5Qcm9w
VHlwZXMuc3RyaW5nLGVkaXRpbmc6cy5Qcm9wVHlwZXMuYm9vbCxuZXdUb2RvOnMuUHJvcFR5cGVz
LmJvb2x9LHQuZGVmYXVsdD1kfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtPYmplY3QuZGVm
aW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dC5BRERfVE9ETz0iQUREX1RP
RE8iLHQuREVMRVRFX1RPRE89IkRFTEVURV9UT0RPIix0LkVESVRfVE9ETz0iRURJVF9UT0RPIix0
LkNPTVBMRVRFX1RPRE89IkNPTVBMRVRFX1RPRE8iLHQuQ09NUExFVEVfQUxMPSJDT01QTEVURV9B
TEwiLHQuQ0xFQVJfQ09NUExFVEVEPSJDTEVBUl9DT01QTEVURUQifSxmdW5jdGlvbihlLHQpeyJ1
c2Ugc3RyaWN0IjtPYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEw
fSk7dC5TSE9XX0FMTD0ic2hvd19hbGwiLHQuU0hPV19DT01QTEVURUQ9InNob3dfY29tcGxldGVk
Iix0LlNIT1dfQUNUSVZFPSJzaG93X2FjdGl2ZSJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcigpe31mdW5jdGlvbiBvKGUpe3RyeXtyZXR1cm4gZS50aGVufWNhdGNoKHQp
e3JldHVybiB5PXQsZ319ZnVuY3Rpb24gaShlLHQpe3RyeXtyZXR1cm4gZSh0KX1jYXRjaChuKXty
ZXR1cm4geT1uLGd9fWZ1bmN0aW9uIGEoZSx0LG4pe3RyeXtlKHQsbil9Y2F0Y2gocil7cmV0dXJu
IHk9cixnfX1mdW5jdGlvbiB1KGUpe2lmKCJvYmplY3QiIT10eXBlb2YgdGhpcyl0aHJvdyBuZXcg
VHlwZUVycm9yKCJQcm9taXNlcyBtdXN0IGJlIGNvbnN0cnVjdGVkIHZpYSBuZXciKTtpZigiZnVu
Y3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJub3QgYSBmdW5jdGlvbiIpO3Ro
aXMuXzQ1PTAsdGhpcy5fODE9MCx0aGlzLl82NT1udWxsLHRoaXMuXzU0PW51bGwsZSE9PXImJnYo
ZSx0aGlzKX1mdW5jdGlvbiBzKGUsdCxuKXtyZXR1cm4gbmV3IGUuY29uc3RydWN0b3IoZnVuY3Rp
b24obyxpKXt2YXIgYT1uZXcgdShyKTthLnRoZW4obyxpKSxsKGUsbmV3IGgodCxuLGEpKX0pfWZ1
bmN0aW9uIGwoZSx0KXtmb3IoOzM9PT1lLl84MTspZT1lLl82NTtyZXR1cm4gdS5fMTAmJnUuXzEw
KGUpLDA9PT1lLl84MT8wPT09ZS5fNDU/KGUuXzQ1PTEsdm9pZChlLl81ND10KSk6MT09PWUuXzQ1
PyhlLl80NT0yLHZvaWQoZS5fNTQ9W2UuXzU0LHRdKSk6dm9pZCBlLl81NC5wdXNoKHQpOnZvaWQg
YyhlLHQpfWZ1bmN0aW9uIGMoZSx0KXttKGZ1bmN0aW9uKCl7dmFyIG49MT09PWUuXzgxP3Qub25G
dWxmaWxsZWQ6dC5vblJlamVjdGVkO2lmKG51bGw9PT1uKXJldHVybiB2b2lkKDE9PT1lLl84MT9w
KHQucHJvbWlzZSxlLl82NSk6ZCh0LnByb21pc2UsZS5fNjUpKTt2YXIgcj1pKG4sZS5fNjUpO3I9
PT1nP2QodC5wcm9taXNlLHkpOnAodC5wcm9taXNlLHIpfSl9ZnVuY3Rpb24gcChlLHQpe2lmKHQ9
PT1lKXJldHVybiBkKGUsbmV3IFR5cGVFcnJvcigiQSBwcm9taXNlIGNhbm5vdCBiZSByZXNvbHZl
ZCB3aXRoIGl0c2VsZi4iKSk7aWYodCYmKCJvYmplY3QiPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09
dHlwZW9mIHQpKXt2YXIgbj1vKHQpO2lmKG49PT1nKXJldHVybiBkKGUseSk7aWYobj09PWUudGhl
biYmdCBpbnN0YW5jZW9mIHUpcmV0dXJuIGUuXzgxPTMsZS5fNjU9dCx2b2lkIGYoZSk7aWYoImZ1
bmN0aW9uIj09dHlwZW9mIG4pcmV0dXJuIHZvaWQgdihuLmJpbmQodCksZSl9ZS5fODE9MSxlLl82
NT10LGYoZSl9ZnVuY3Rpb24gZChlLHQpe2UuXzgxPTIsZS5fNjU9dCx1Ll85NyYmdS5fOTcoZSx0
KSxmKGUpfWZ1bmN0aW9uIGYoZSl7aWYoMT09PWUuXzQ1JiYobChlLGUuXzU0KSxlLl81ND1udWxs
KSwyPT09ZS5fNDUpe2Zvcih2YXIgdD0wO3Q8ZS5fNTQubGVuZ3RoO3QrKylsKGUsZS5fNTRbdF0p
O2UuXzU0PW51bGx9fWZ1bmN0aW9uIGgoZSx0LG4pe3RoaXMub25GdWxmaWxsZWQ9ImZ1bmN0aW9u
Ij09dHlwZW9mIGU/ZTpudWxsLHRoaXMub25SZWplY3RlZD0iZnVuY3Rpb24iPT10eXBlb2YgdD90
Om51bGwsdGhpcy5wcm9taXNlPW59ZnVuY3Rpb24gdihlLHQpe3ZhciBuPSExLHI9YShlLGZ1bmN0
aW9uKGUpe258fChuPSEwLHAodCxlKSl9LGZ1bmN0aW9uKGUpe258fChuPSEwLGQodCxlKSl9KTtu
fHxyIT09Z3x8KG49ITAsZCh0LHkpKX12YXIgbT1uKDEyMikseT1udWxsLGc9e307ZS5leHBvcnRz
PXUsdS5fMTA9bnVsbCx1Ll85Nz1udWxsLHUuXzYxPXIsdS5wcm90b3R5cGUudGhlbj1mdW5jdGlv
bihlLHQpe2lmKHRoaXMuY29uc3RydWN0b3IhPT11KXJldHVybiBzKHRoaXMsZSx0KTt2YXIgbj1u
ZXcgdShyKTtyZXR1cm4gbCh0aGlzLG5ldyBoKGUsdCxuKSksbn19LGZ1bmN0aW9uKGUsdCl7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSx0KXtyZXR1cm4gZSt0LmNoYXJBdCgwKS50b1VwcGVyQ2Fz
ZSgpK3Quc3Vic3RyaW5nKDEpfXZhciByPXthbmltYXRpb25JdGVyYXRpb25Db3VudDohMCxib3Jk
ZXJJbWFnZU91dHNldDohMCxib3JkZXJJbWFnZVNsaWNlOiEwLGJvcmRlckltYWdlV2lkdGg6ITAs
Ym94RmxleDohMCxib3hGbGV4R3JvdXA6ITAsYm94T3JkaW5hbEdyb3VwOiEwLGNvbHVtbkNvdW50
OiEwLGZsZXg6ITAsZmxleEdyb3c6ITAsZmxleFBvc2l0aXZlOiEwLGZsZXhTaHJpbms6ITAsZmxl
eE5lZ2F0aXZlOiEwLGZsZXhPcmRlcjohMCxncmlkUm93OiEwLGdyaWRDb2x1bW46ITAsZm9udFdl
aWdodDohMCxsaW5lQ2xhbXA6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5OiEwLG9yZGVyOiEwLG9y
cGhhbnM6ITAsdGFiU2l6ZTohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206ITAsZmlsbE9wYWNp
dHk6ITAsZmxvb2RPcGFjaXR5OiEwLHN0b3BPcGFjaXR5OiEwLHN0cm9rZURhc2hhcnJheTohMCxz
dHJva2VEYXNob2Zmc2V0OiEwLHN0cm9rZU1pdGVybGltaXQ6ITAsc3Ryb2tlT3BhY2l0eTohMCxz
dHJva2VXaWR0aDohMH0sbz1bIldlYmtpdCIsIm1zIiwiTW96IiwiTyJdO09iamVjdC5rZXlzKHIp
LmZvckVhY2goZnVuY3Rpb24oZSl7by5mb3JFYWNoKGZ1bmN0aW9uKHQpe3Jbbih0LGUpXT1yW2Vd
fSl9KTt2YXIgaT17YmFja2dyb3VuZDp7YmFja2dyb3VuZEF0dGFjaG1lbnQ6ITAsYmFja2dyb3Vu
ZENvbG9yOiEwLGJhY2tncm91bmRJbWFnZTohMCxiYWNrZ3JvdW5kUG9zaXRpb25YOiEwLGJhY2tn
cm91bmRQb3NpdGlvblk6ITAsYmFja2dyb3VuZFJlcGVhdDohMH0sYmFja2dyb3VuZFBvc2l0aW9u
OntiYWNrZ3JvdW5kUG9zaXRpb25YOiEwLGJhY2tncm91bmRQb3NpdGlvblk6ITB9LGJvcmRlcjp7
Ym9yZGVyV2lkdGg6ITAsYm9yZGVyU3R5bGU6ITAsYm9yZGVyQ29sb3I6ITB9LGJvcmRlckJvdHRv
bTp7Ym9yZGVyQm90dG9tV2lkdGg6ITAsYm9yZGVyQm90dG9tU3R5bGU6ITAsYm9yZGVyQm90dG9t
Q29sb3I6ITB9LGJvcmRlckxlZnQ6e2JvcmRlckxlZnRXaWR0aDohMCxib3JkZXJMZWZ0U3R5bGU6
ITAsYm9yZGVyTGVmdENvbG9yOiEwfSxib3JkZXJSaWdodDp7Ym9yZGVyUmlnaHRXaWR0aDohMCxi
b3JkZXJSaWdodFN0eWxlOiEwLGJvcmRlclJpZ2h0Q29sb3I6ITB9LGJvcmRlclRvcDp7Ym9yZGVy
VG9wV2lkdGg6ITAsYm9yZGVyVG9wU3R5bGU6ITAsYm9yZGVyVG9wQ29sb3I6ITB9LGZvbnQ6e2Zv
bnRTdHlsZTohMCxmb250VmFyaWFudDohMCxmb250V2VpZ2h0OiEwLGZvbnRTaXplOiEwLGxpbmVI
ZWlnaHQ6ITAsZm9udEZhbWlseTohMH0sb3V0bGluZTp7b3V0bGluZVdpZHRoOiEwLG91dGxpbmVT
dHlsZTohMCxvdXRsaW5lQ29sb3I6ITB9fSxhPXtpc1VuaXRsZXNzTnVtYmVyOnIsc2hvcnRoYW5k
UHJvcGVydHlFeHBhbnNpb25zOml9O2UuZXhwb3J0cz1hfSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoKXt0aGlzLl9jYWxsYmFja3M9bnVsbCx0aGlzLl9jb250ZXh0cz1u
dWxsfXZhciBvPW4oMiksaT1uKDQpLGE9bigxNSk7bigxKTtpKHIucHJvdG90eXBlLHtlbnF1ZXVl
OmZ1bmN0aW9uKGUsdCl7dGhpcy5fY2FsbGJhY2tzPXRoaXMuX2NhbGxiYWNrc3x8W10sdGhpcy5f
Y29udGV4dHM9dGhpcy5fY29udGV4dHN8fFtdLHRoaXMuX2NhbGxiYWNrcy5wdXNoKGUpLHRoaXMu
X2NvbnRleHRzLnB1c2godCl9LG5vdGlmeUFsbDpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2NhbGxi
YWNrcyx0PXRoaXMuX2NvbnRleHRzO2lmKGUpe2UubGVuZ3RoIT09dC5sZW5ndGg/bygiMjQiKTp2
b2lkIDAsdGhpcy5fY2FsbGJhY2tzPW51bGwsdGhpcy5fY29udGV4dHM9bnVsbDtmb3IodmFyIG49
MDtuPGUubGVuZ3RoO24rKyllW25dLmNhbGwodFtuXSk7ZS5sZW5ndGg9MCx0Lmxlbmd0aD0wfX0s
Y2hlY2twb2ludDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl9jYWxsYmFja3M/dGhpcy5fY2FsbGJh
Y2tzLmxlbmd0aDowfSxyb2xsYmFjazpmdW5jdGlvbihlKXt0aGlzLl9jYWxsYmFja3MmJih0aGlz
Ll9jYWxsYmFja3MubGVuZ3RoPWUsdGhpcy5fY29udGV4dHMubGVuZ3RoPWUpfSxyZXNldDpmdW5j
dGlvbigpe3RoaXMuX2NhbGxiYWNrcz1udWxsLHRoaXMuX2NvbnRleHRzPW51bGx9LGRlc3RydWN0
b3I6ZnVuY3Rpb24oKXt0aGlzLnJlc2V0KCl9fSksYS5hZGRQb29saW5nVG8ociksZS5leHBvcnRz
PXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4hIWwu
aGFzT3duUHJvcGVydHkoZSl8fCFzLmhhc093blByb3BlcnR5KGUpJiYodS50ZXN0KGUpPyhsW2Vd
PSEwLCEwKTooc1tlXT0hMCwhMSkpfWZ1bmN0aW9uIG8oZSx0KXtyZXR1cm4gbnVsbD09dHx8ZS5o
YXNCb29sZWFuVmFsdWUmJiF0fHxlLmhhc051bWVyaWNWYWx1ZSYmaXNOYU4odCl8fGUuaGFzUG9z
aXRpdmVOdW1lcmljVmFsdWUmJnQ8MXx8ZS5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlJiZ0PT09
ITF9dmFyIGk9bigxOCksYT0obig1KSxuKDgpLG4oMjAwKSksdT0obigzKSxuZXcgUmVnRXhwKCJe
WyIraS5BVFRSSUJVVEVfTkFNRV9TVEFSVF9DSEFSKyJdWyIraS5BVFRSSUJVVEVfTkFNRV9DSEFS
KyJdKiQiKSkscz17fSxsPXt9LGM9e2NyZWF0ZU1hcmt1cEZvcklEOmZ1bmN0aW9uKGUpe3JldHVy
biBpLklEX0FUVFJJQlVURV9OQU1FKyI9IithKGUpfSxzZXRBdHRyaWJ1dGVGb3JJRDpmdW5jdGlv
bihlLHQpe2Uuc2V0QXR0cmlidXRlKGkuSURfQVRUUklCVVRFX05BTUUsdCl9LGNyZWF0ZU1hcmt1
cEZvclJvb3Q6ZnVuY3Rpb24oKXtyZXR1cm4gaS5ST09UX0FUVFJJQlVURV9OQU1FKyc9IiInfSxz
ZXRBdHRyaWJ1dGVGb3JSb290OmZ1bmN0aW9uKGUpe2Uuc2V0QXR0cmlidXRlKGkuUk9PVF9BVFRS
SUJVVEVfTkFNRSwiIil9LGNyZWF0ZU1hcmt1cEZvclByb3BlcnR5OmZ1bmN0aW9uKGUsdCl7dmFy
IG49aS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KGUpP2kucHJvcGVydGllc1tlXTpudWxsO2lm
KG4pe2lmKG8obix0KSlyZXR1cm4iIjt2YXIgcj1uLmF0dHJpYnV0ZU5hbWU7cmV0dXJuIG4uaGFz
Qm9vbGVhblZhbHVlfHxuLmhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWUmJnQ9PT0hMD9yKyc9IiIn
OnIrIj0iK2EodCl9cmV0dXJuIGkuaXNDdXN0b21BdHRyaWJ1dGUoZSk/bnVsbD09dD8iIjplKyI9
IithKHQpOm51bGx9LGNyZWF0ZU1hcmt1cEZvckN1c3RvbUF0dHJpYnV0ZTpmdW5jdGlvbihlLHQp
e3JldHVybiByKGUpJiZudWxsIT10P2UrIj0iK2EodCk6IiJ9LHNldFZhbHVlRm9yUHJvcGVydHk6
ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eSh0KT9pLnBy
b3BlcnRpZXNbdF06bnVsbDtpZihyKXt2YXIgYT1yLm11dGF0aW9uTWV0aG9kO2lmKGEpYShlLG4p
O2Vsc2V7aWYobyhyLG4pKXJldHVybiB2b2lkIHRoaXMuZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eShl
LHQpO2lmKHIubXVzdFVzZVByb3BlcnR5KWVbci5wcm9wZXJ0eU5hbWVdPW47ZWxzZXt2YXIgdT1y
LmF0dHJpYnV0ZU5hbWUscz1yLmF0dHJpYnV0ZU5hbWVzcGFjZTtzP2Uuc2V0QXR0cmlidXRlTlMo
cyx1LCIiK24pOnIuaGFzQm9vbGVhblZhbHVlfHxyLmhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWUm
Jm49PT0hMD9lLnNldEF0dHJpYnV0ZSh1LCIiKTplLnNldEF0dHJpYnV0ZSh1LCIiK24pfX19ZWxz
ZSBpZihpLmlzQ3VzdG9tQXR0cmlidXRlKHQpKXJldHVybiB2b2lkIGMuc2V0VmFsdWVGb3JBdHRy
aWJ1dGUoZSx0LG4pfSxzZXRWYWx1ZUZvckF0dHJpYnV0ZTpmdW5jdGlvbihlLHQsbil7aWYocih0
KSl7bnVsbD09bj9lLnJlbW92ZUF0dHJpYnV0ZSh0KTplLnNldEF0dHJpYnV0ZSh0LCIiK24pfX0s
ZGVsZXRlVmFsdWVGb3JBdHRyaWJ1dGU6ZnVuY3Rpb24oZSx0KXtlLnJlbW92ZUF0dHJpYnV0ZSh0
KX0sZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eTpmdW5jdGlvbihlLHQpe3ZhciBuPWkucHJvcGVydGll
cy5oYXNPd25Qcm9wZXJ0eSh0KT9pLnByb3BlcnRpZXNbdF06bnVsbDtpZihuKXt2YXIgcj1uLm11
dGF0aW9uTWV0aG9kO2lmKHIpcihlLHZvaWQgMCk7ZWxzZSBpZihuLm11c3RVc2VQcm9wZXJ0eSl7
dmFyIG89bi5wcm9wZXJ0eU5hbWU7bi5oYXNCb29sZWFuVmFsdWU/ZVtvXT0hMTplW29dPSIifWVs
c2UgZS5yZW1vdmVBdHRyaWJ1dGUobi5hdHRyaWJ1dGVOYW1lKX1lbHNlIGkuaXNDdXN0b21BdHRy
aWJ1dGUodCkmJmUucmVtb3ZlQXR0cmlidXRlKHQpfX07ZS5leHBvcnRzPWN9LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4oIiIrZSkucmVwbGFjZShfLCIk
Ji8iKX1mdW5jdGlvbiBvKGUsdCl7dGhpcy5mdW5jPWUsdGhpcy5jb250ZXh0PXQsdGhpcy5jb3Vu
dD0wfWZ1bmN0aW9uIGkoZSx0LG4pe3ZhciByPWUuZnVuYyxvPWUuY29udGV4dDtyLmNhbGwobyx0
LGUuY291bnQrKyl9ZnVuY3Rpb24gYShlLHQsbil7aWYobnVsbD09ZSlyZXR1cm4gZTt2YXIgcj1v
LmdldFBvb2xlZCh0LG4pO3koZSxpLHIpLG8ucmVsZWFzZShyKX1mdW5jdGlvbiB1KGUsdCxuLHIp
e3RoaXMucmVzdWx0PWUsdGhpcy5rZXlQcmVmaXg9dCx0aGlzLmZ1bmM9bix0aGlzLmNvbnRleHQ9
cix0aGlzLmNvdW50PTB9ZnVuY3Rpb24gcyhlLHQsbil7dmFyIG89ZS5yZXN1bHQsaT1lLmtleVBy
ZWZpeCxhPWUuZnVuYyx1PWUuY29udGV4dCxzPWEuY2FsbCh1LHQsZS5jb3VudCsrKTtBcnJheS5p
c0FycmF5KHMpP2wocyxvLG4sbS50aGF0UmV0dXJuc0FyZ3VtZW50KTpudWxsIT1zJiYodi5pc1Zh
bGlkRWxlbWVudChzKSYmKHM9di5jbG9uZUFuZFJlcGxhY2VLZXkocyxpKyghcy5rZXl8fHQmJnQu
a2V5PT09cy5rZXk/IiI6cihzLmtleSkrIi8iKStuKSksby5wdXNoKHMpKX1mdW5jdGlvbiBsKGUs
dCxuLG8saSl7dmFyIGE9IiI7bnVsbCE9biYmKGE9cihuKSsiLyIpO3ZhciBsPXUuZ2V0UG9vbGVk
KHQsYSxvLGkpO3koZSxzLGwpLHUucmVsZWFzZShsKX1mdW5jdGlvbiBjKGUsdCxuKXtpZihudWxs
PT1lKXJldHVybiBlO3ZhciByPVtdO3JldHVybiBsKGUscixudWxsLHQsbikscn1mdW5jdGlvbiBw
KGUsdCxuKXtyZXR1cm4gbnVsbH1mdW5jdGlvbiBkKGUsdCl7cmV0dXJuIHkoZSxwLG51bGwpfWZ1
bmN0aW9uIGYoZSl7dmFyIHQ9W107cmV0dXJuIGwoZSx0LG51bGwsbS50aGF0UmV0dXJuc0FyZ3Vt
ZW50KSx0fXZhciBoPW4oMTUpLHY9big5KSxtPW4oNykseT1uKDU4KSxnPWgudHdvQXJndW1lbnRQ
b29sZXIsYj1oLmZvdXJBcmd1bWVudFBvb2xlcixfPS9cLysvZztvLnByb3RvdHlwZS5kZXN0cnVj
dG9yPWZ1bmN0aW9uKCl7dGhpcy5mdW5jPW51bGwsdGhpcy5jb250ZXh0PW51bGwsdGhpcy5jb3Vu
dD0wfSxoLmFkZFBvb2xpbmdUbyhvLGcpLHUucHJvdG90eXBlLmRlc3RydWN0b3I9ZnVuY3Rpb24o
KXt0aGlzLnJlc3VsdD1udWxsLHRoaXMua2V5UHJlZml4PW51bGwsdGhpcy5mdW5jPW51bGwsdGhp
cy5jb250ZXh0PW51bGwsdGhpcy5jb3VudD0wfSxoLmFkZFBvb2xpbmdUbyh1LGIpO3ZhciBDPXtm
b3JFYWNoOmEsbWFwOmMsbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbDpsLGNvdW50OmQsdG9B
cnJheTpmfTtlLmV4cG9ydHM9Q30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUsdCl7dmFyIG49RS5oYXNPd25Qcm9wZXJ0eSh0KT9FW3RdOm51bGw7VC5oYXNPd25Qcm9w
ZXJ0eSh0KSYmKG4hPT1fLk9WRVJSSURFX0JBU0U/cCgiNzMiLHQpOnZvaWQgMCksZSYmKG4hPT1f
LkRFRklORV9NQU5ZJiZuIT09Xy5ERUZJTkVfTUFOWV9NRVJHRUQ/cCgiNzQiLHQpOnZvaWQgMCl9
ZnVuY3Rpb24gbyhlLHQpe2lmKHQpeyJmdW5jdGlvbiI9PXR5cGVvZiB0P3AoIjc1Iik6dm9pZCAw
LGguaXNWYWxpZEVsZW1lbnQodCk/cCgiNzYiKTp2b2lkIDA7dmFyIG49ZS5wcm90b3R5cGUsbz1u
Ll9fcmVhY3RBdXRvQmluZFBhaXJzO3QuaGFzT3duUHJvcGVydHkoYikmJncubWl4aW5zKGUsdC5t
aXhpbnMpO2Zvcih2YXIgaSBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkoaSkmJmkhPT1iKXt2YXIg
YT10W2ldLGw9bi5oYXNPd25Qcm9wZXJ0eShpKTtpZihyKGwsaSksdy5oYXNPd25Qcm9wZXJ0eShp
KSl3W2ldKGUsYSk7ZWxzZXt2YXIgYz1FLmhhc093blByb3BlcnR5KGkpLGQ9ImZ1bmN0aW9uIj09
dHlwZW9mIGEsZj1kJiYhYyYmIWwmJnQuYXV0b2JpbmQhPT0hMTtpZihmKW8ucHVzaChpLGEpLG5b
aV09YTtlbHNlIGlmKGwpe3ZhciB2PUVbaV07IWN8fHYhPT1fLkRFRklORV9NQU5ZX01FUkdFRCYm
diE9PV8uREVGSU5FX01BTlk/cCgiNzciLHYsaSk6dm9pZCAwLHY9PT1fLkRFRklORV9NQU5ZX01F
UkdFRD9uW2ldPXUobltpXSxhKTp2PT09Xy5ERUZJTkVfTUFOWSYmKG5baV09cyhuW2ldLGEpKX1l
bHNlIG5baV09YX19fWVsc2U7fWZ1bmN0aW9uIGkoZSx0KXtpZih0KWZvcih2YXIgbiBpbiB0KXt2
YXIgcj10W25dO2lmKHQuaGFzT3duUHJvcGVydHkobikpe3ZhciBvPW4gaW4gdztvP3AoIjc4Iixu
KTp2b2lkIDA7dmFyIGk9biBpbiBlO2k/cCgiNzkiLG4pOnZvaWQgMCxlW25dPXJ9fX1mdW5jdGlv
biBhKGUsdCl7ZSYmdCYmIm9iamVjdCI9PXR5cGVvZiBlJiYib2JqZWN0Ij09dHlwZW9mIHQ/dm9p
ZCAwOnAoIjgwIik7Zm9yKHZhciBuIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShuKSYmKHZvaWQgMCE9
PWVbbl0/cCgiODEiLG4pOnZvaWQgMCxlW25dPXRbbl0pO3JldHVybiBlfWZ1bmN0aW9uIHUoZSx0
KXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgbj1lLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxyPXQuYXBw
bHkodGhpcyxhcmd1bWVudHMpO2lmKG51bGw9PW4pcmV0dXJuIHI7aWYobnVsbD09cilyZXR1cm4g
bjt2YXIgbz17fTtyZXR1cm4gYShvLG4pLGEobyxyKSxvfX1mdW5jdGlvbiBzKGUsdCl7cmV0dXJu
IGZ1bmN0aW9uKCl7ZS5hcHBseSh0aGlzLGFyZ3VtZW50cyksdC5hcHBseSh0aGlzLGFyZ3VtZW50
cyl9fWZ1bmN0aW9uIGwoZSx0KXt2YXIgbj10LmJpbmQoZSk7cmV0dXJuIG59ZnVuY3Rpb24gYyhl
KXtmb3IodmFyIHQ9ZS5fX3JlYWN0QXV0b0JpbmRQYWlycyxuPTA7bjx0Lmxlbmd0aDtuKz0yKXt2
YXIgcj10W25dLG89dFtuKzFdO2Vbcl09bChlLG8pfX12YXIgcD1uKDIpLGQ9big0KSxmPW4oNDMp
LGg9big5KSx2PShuKDQ5KSxuKDQ4KSxuKDQ3KSksbT1uKDIwKSx5PShuKDEpLG4oMjYpKSxnPW4o
MTQpLGI9KG4oMyksZyh7bWl4aW5zOm51bGx9KSksXz15KHtERUZJTkVfT05DRTpudWxsLERFRklO
RV9NQU5ZOm51bGwsT1ZFUlJJREVfQkFTRTpudWxsLERFRklORV9NQU5ZX01FUkdFRDpudWxsfSks
Qz1bXSxFPXttaXhpbnM6Xy5ERUZJTkVfTUFOWSxzdGF0aWNzOl8uREVGSU5FX01BTlkscHJvcFR5
cGVzOl8uREVGSU5FX01BTlksY29udGV4dFR5cGVzOl8uREVGSU5FX01BTlksY2hpbGRDb250ZXh0
VHlwZXM6Xy5ERUZJTkVfTUFOWSxnZXREZWZhdWx0UHJvcHM6Xy5ERUZJTkVfTUFOWV9NRVJHRUQs
Z2V0SW5pdGlhbFN0YXRlOl8uREVGSU5FX01BTllfTUVSR0VELGdldENoaWxkQ29udGV4dDpfLkRF
RklORV9NQU5ZX01FUkdFRCxyZW5kZXI6Xy5ERUZJTkVfT05DRSxjb21wb25lbnRXaWxsTW91bnQ6
Xy5ERUZJTkVfTUFOWSxjb21wb25lbnREaWRNb3VudDpfLkRFRklORV9NQU5ZLGNvbXBvbmVudFdp
bGxSZWNlaXZlUHJvcHM6Xy5ERUZJTkVfTUFOWSxzaG91bGRDb21wb25lbnRVcGRhdGU6Xy5ERUZJ
TkVfT05DRSxjb21wb25lbnRXaWxsVXBkYXRlOl8uREVGSU5FX01BTlksY29tcG9uZW50RGlkVXBk
YXRlOl8uREVGSU5FX01BTlksY29tcG9uZW50V2lsbFVubW91bnQ6Xy5ERUZJTkVfTUFOWSx1cGRh
dGVDb21wb25lbnQ6Xy5PVkVSUklERV9CQVNFfSx3PXtkaXNwbGF5TmFtZTpmdW5jdGlvbihlLHQp
e2UuZGlzcGxheU5hbWU9dH0sbWl4aW5zOmZ1bmN0aW9uKGUsdCl7aWYodClmb3IodmFyIG49MDtu
PHQubGVuZ3RoO24rKylvKGUsdFtuXSl9LGNoaWxkQ29udGV4dFR5cGVzOmZ1bmN0aW9uKGUsdCl7
ZS5jaGlsZENvbnRleHRUeXBlcz1kKHt9LGUuY2hpbGRDb250ZXh0VHlwZXMsdCl9LGNvbnRleHRU
eXBlczpmdW5jdGlvbihlLHQpe2UuY29udGV4dFR5cGVzPWQoe30sZS5jb250ZXh0VHlwZXMsdCl9
LGdldERlZmF1bHRQcm9wczpmdW5jdGlvbihlLHQpe2UuZ2V0RGVmYXVsdFByb3BzP2UuZ2V0RGVm
YXVsdFByb3BzPXUoZS5nZXREZWZhdWx0UHJvcHMsdCk6ZS5nZXREZWZhdWx0UHJvcHM9dH0scHJv
cFR5cGVzOmZ1bmN0aW9uKGUsdCl7ZS5wcm9wVHlwZXM9ZCh7fSxlLnByb3BUeXBlcyx0KX0sc3Rh
dGljczpmdW5jdGlvbihlLHQpe2koZSx0KX0sYXV0b2JpbmQ6ZnVuY3Rpb24oKXt9fSxUPXtyZXBs
YWNlU3RhdGU6ZnVuY3Rpb24oZSx0KXt0aGlzLnVwZGF0ZXIuZW5xdWV1ZVJlcGxhY2VTdGF0ZSh0
aGlzLGUpLHQmJnRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2sodGhpcyx0LCJyZXBsYWNlU3Rh
dGUiKX0saXNNb3VudGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudXBkYXRlci5pc01vdW50ZWQo
dGhpcyl9fSxQPWZ1bmN0aW9uKCl7fTtkKFAucHJvdG90eXBlLGYucHJvdG90eXBlLFQpO3ZhciB4
PXtjcmVhdGVDbGFzczpmdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlLG4scil7dGhpcy5fX3Jl
YWN0QXV0b0JpbmRQYWlycy5sZW5ndGgmJmModGhpcyksdGhpcy5wcm9wcz1lLHRoaXMuY29udGV4
dD1uLHRoaXMucmVmcz1tLHRoaXMudXBkYXRlcj1yfHx2LHRoaXMuc3RhdGU9bnVsbDt2YXIgbz10
aGlzLmdldEluaXRpYWxTdGF0ZT90aGlzLmdldEluaXRpYWxTdGF0ZSgpOm51bGw7Im9iamVjdCIh
PXR5cGVvZiBvfHxBcnJheS5pc0FycmF5KG8pP3AoIjgyIix0LmRpc3BsYXlOYW1lfHwiUmVhY3RD
b21wb3NpdGVDb21wb25lbnQiKTp2b2lkIDAsdGhpcy5zdGF0ZT1vfTt0LnByb3RvdHlwZT1uZXcg
UCx0LnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj10LHQucHJvdG90eXBlLl9fcmVhY3RBdXRvQmluZFBh
aXJzPVtdLEMuZm9yRWFjaChvLmJpbmQobnVsbCx0KSksbyh0LGUpLHQuZ2V0RGVmYXVsdFByb3Bz
JiYodC5kZWZhdWx0UHJvcHM9dC5nZXREZWZhdWx0UHJvcHMoKSksdC5wcm90b3R5cGUucmVuZGVy
P3ZvaWQgMDpwKCI4MyIpO2Zvcih2YXIgbiBpbiBFKXQucHJvdG90eXBlW25dfHwodC5wcm90b3R5
cGVbbl09bnVsbCk7cmV0dXJuIHR9LGluamVjdGlvbjp7aW5qZWN0TWl4aW46ZnVuY3Rpb24oZSl7
Qy5wdXNoKGUpfX19O2UuZXhwb3J0cz14fSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIg
bj17aGFzQ2FjaGVkQ2hpbGROb2RlczoxfTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7aWYodGhpcy5fcm9vdE5vZGVJRCYmdGhpcy5fd3JhcHBl
clN0YXRlLnBlbmRpbmdVcGRhdGUpe3RoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlPSEx
O3ZhciBlPXRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzLHQ9cy5nZXRWYWx1ZShlKTtudWxsIT10
JiZvKHRoaXMsQm9vbGVhbihlLm11bHRpcGxlKSx0KX19ZnVuY3Rpb24gbyhlLHQsbil7dmFyIHIs
byxpPWwuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKS5vcHRpb25zO2lmKHQpe2ZvcihyPXt9LG89MDtv
PG4ubGVuZ3RoO28rKylyWyIiK25bb11dPSEwO2ZvcihvPTA7bzxpLmxlbmd0aDtvKyspe3ZhciBh
PXIuaGFzT3duUHJvcGVydHkoaVtvXS52YWx1ZSk7aVtvXS5zZWxlY3RlZCE9PWEmJihpW29dLnNl
bGVjdGVkPWEpfX1lbHNle2ZvcihyPSIiK24sbz0wO288aS5sZW5ndGg7bysrKWlmKGlbb10udmFs
dWU9PT1yKXJldHVybiB2b2lkKGlbb10uc2VsZWN0ZWQ9ITApO2kubGVuZ3RoJiYoaVswXS5zZWxl
Y3RlZD0hMCl9fWZ1bmN0aW9uIGkoZSl7dmFyIHQ9dGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHMs
bj1zLmV4ZWN1dGVPbkNoYW5nZSh0LGUpO3JldHVybiB0aGlzLl9yb290Tm9kZUlEJiYodGhpcy5f
d3JhcHBlclN0YXRlLnBlbmRpbmdVcGRhdGU9ITApLGMuYXNhcChyLHRoaXMpLG59dmFyIGE9big0
KSx1PW4oMjcpLHM9big0MiksbD1uKDUpLGM9bigxMCkscD0obigzKSwhMSksZD17Z2V0SG9zdFBy
b3BzOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGEoe30sdS5nZXRIb3N0UHJvcHMoZSx0KSx7b25DaGFu
Z2U6ZS5fd3JhcHBlclN0YXRlLm9uQ2hhbmdlLHZhbHVlOnZvaWQgMH0pfSxtb3VudFdyYXBwZXI6
ZnVuY3Rpb24oZSx0KXt2YXIgbj1zLmdldFZhbHVlKHQpO2UuX3dyYXBwZXJTdGF0ZT17cGVuZGlu
Z1VwZGF0ZTohMSxpbml0aWFsVmFsdWU6bnVsbCE9bj9uOnQuZGVmYXVsdFZhbHVlLGxpc3RlbmVy
czpudWxsLG9uQ2hhbmdlOmkuYmluZChlKSx3YXNNdWx0aXBsZTpCb29sZWFuKHQubXVsdGlwbGUp
fSx2b2lkIDA9PT10LnZhbHVlfHx2b2lkIDA9PT10LmRlZmF1bHRWYWx1ZXx8cHx8KHA9ITApfSxn
ZXRTZWxlY3RWYWx1ZUNvbnRleHQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX3dyYXBwZXJTdGF0ZS5p
bml0aWFsVmFsdWV9LHBvc3RVcGRhdGVXcmFwcGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWUuX2N1cnJl
bnRFbGVtZW50LnByb3BzO2UuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWU9dm9pZCAwO3ZhciBu
PWUuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZTtlLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU9
Qm9vbGVhbih0Lm11bHRpcGxlKTt2YXIgcj1zLmdldFZhbHVlKHQpO251bGwhPXI/KGUuX3dyYXBw
ZXJTdGF0ZS5wZW5kaW5nVXBkYXRlPSExLG8oZSxCb29sZWFuKHQubXVsdGlwbGUpLHIpKTpuIT09
Qm9vbGVhbih0Lm11bHRpcGxlKSYmKG51bGwhPXQuZGVmYXVsdFZhbHVlP28oZSxCb29sZWFuKHQu
bXVsdGlwbGUpLHQuZGVmYXVsdFZhbHVlKTpvKGUsQm9vbGVhbih0Lm11bHRpcGxlKSx0Lm11bHRp
cGxlP1tdOiIiKSl9fTtlLmV4cG9ydHM9ZH0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFy
IG4scj17aW5qZWN0RW1wdHlDb21wb25lbnRGYWN0b3J5OmZ1bmN0aW9uKGUpe249ZX19LG89e2Ny
ZWF0ZTpmdW5jdGlvbihlKXtyZXR1cm4gbihlKX19O28uaW5qZWN0aW9uPXIsZS5leHBvcnRzPW99
LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXtsb2dUb3BMZXZlbFJlbmRlcnM6ITF9
O2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7
cmV0dXJuIHM/dm9pZCAwOmEoIjExMSIsZS50eXBlKSxuZXcgcyhlKX1mdW5jdGlvbiBvKGUpe3Jl
dHVybiBuZXcgYyhlKX1mdW5jdGlvbiBpKGUpe3JldHVybiBlIGluc3RhbmNlb2YgY312YXIgYT1u
KDIpLHU9big0KSxzPShuKDEpLG51bGwpLGw9e30sYz1udWxsLHA9e2luamVjdEdlbmVyaWNDb21w
b25lbnRDbGFzczpmdW5jdGlvbihlKXtzPWV9LGluamVjdFRleHRDb21wb25lbnRDbGFzczpmdW5j
dGlvbihlKXtjPWV9LGluamVjdENvbXBvbmVudENsYXNzZXM6ZnVuY3Rpb24oZSl7dShsLGUpfX0s
ZD17Y3JlYXRlSW50ZXJuYWxDb21wb25lbnQ6cixjcmVhdGVJbnN0YW5jZUZvclRleHQ6byxpc1Rl
eHRDb21wb25lbnQ6aSxpbmplY3Rpb246cH07ZS5leHBvcnRzPWR9LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gaShkb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQsZSl9dmFyIG89bigxNjEpLGk9bigxMDEpLGE9big2MSksdT1uKDYyKSxzPXtoYXNTZWxlY3Rp
b25DYXBhYmlsaXRpZXM6ZnVuY3Rpb24oZSl7dmFyIHQ9ZSYmZS5ub2RlTmFtZSYmZS5ub2RlTmFt
ZS50b0xvd2VyQ2FzZSgpO3JldHVybiB0JiYoImlucHV0Ij09PXQmJiJ0ZXh0Ij09PWUudHlwZXx8
InRleHRhcmVhIj09PXR8fCJ0cnVlIj09PWUuY29udGVudEVkaXRhYmxlKX0sZ2V0U2VsZWN0aW9u
SW5mb3JtYXRpb246ZnVuY3Rpb24oKXt2YXIgZT11KCk7cmV0dXJue2ZvY3VzZWRFbGVtOmUsc2Vs
ZWN0aW9uUmFuZ2U6cy5oYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXMoZSk/cy5nZXRTZWxlY3Rpb24o
ZSk6bnVsbH19LHJlc3RvcmVTZWxlY3Rpb246ZnVuY3Rpb24oZSl7dmFyIHQ9dSgpLG49ZS5mb2N1
c2VkRWxlbSxvPWUuc2VsZWN0aW9uUmFuZ2U7dCE9PW4mJnIobikmJihzLmhhc1NlbGVjdGlvbkNh
cGFiaWxpdGllcyhuKSYmcy5zZXRTZWxlY3Rpb24obixvKSxhKG4pKX0sZ2V0U2VsZWN0aW9uOmZ1
bmN0aW9uKGUpe3ZhciB0O2lmKCJzZWxlY3Rpb25TdGFydCJpbiBlKXQ9e3N0YXJ0OmUuc2VsZWN0
aW9uU3RhcnQsZW5kOmUuc2VsZWN0aW9uRW5kfTtlbHNlIGlmKGRvY3VtZW50LnNlbGVjdGlvbiYm
ZS5ub2RlTmFtZSYmImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7dmFyIG49ZG9j
dW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCk7bi5wYXJlbnRFbGVtZW50KCk9PT1lJiYodD17
c3RhcnQ6LW4ubW92ZVN0YXJ0KCJjaGFyYWN0ZXIiLC1lLnZhbHVlLmxlbmd0aCksZW5kOi1uLm1v
dmVFbmQoImNoYXJhY3RlciIsLWUudmFsdWUubGVuZ3RoKX0pfWVsc2UgdD1vLmdldE9mZnNldHMo
ZSk7cmV0dXJuIHR8fHtzdGFydDowLGVuZDowfX0sc2V0U2VsZWN0aW9uOmZ1bmN0aW9uKGUsdCl7
dmFyIG49dC5zdGFydCxyPXQuZW5kO2lmKHZvaWQgMD09PXImJihyPW4pLCJzZWxlY3Rpb25TdGFy
dCJpbiBlKWUuc2VsZWN0aW9uU3RhcnQ9bixlLnNlbGVjdGlvbkVuZD1NYXRoLm1pbihyLGUudmFs
dWUubGVuZ3RoKTtlbHNlIGlmKGRvY3VtZW50LnNlbGVjdGlvbiYmZS5ub2RlTmFtZSYmImlucHV0
Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7Ci12YXIgaT1lLmNyZWF0ZVRleHRSYW5nZSgp
O2kuY29sbGFwc2UoITApLGkubW92ZVN0YXJ0KCJjaGFyYWN0ZXIiLG4pLGkubW92ZUVuZCgiY2hh
cmFjdGVyIixyLW4pLGkuc2VsZWN0KCl9ZWxzZSBvLnNldE9mZnNldHMoZSx0KX19O2UuZXhwb3J0
cz1zfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtmb3IodmFy
IG49TWF0aC5taW4oZS5sZW5ndGgsdC5sZW5ndGgpLHI9MDtyPG47cisrKWlmKGUuY2hhckF0KHIp
IT09dC5jaGFyQXQocikpcmV0dXJuIHI7cmV0dXJuIGUubGVuZ3RoPT09dC5sZW5ndGg/LTE6bn1m
dW5jdGlvbiBvKGUpe3JldHVybiBlP2Uubm9kZVR5cGU9PT1JP2UuZG9jdW1lbnRFbGVtZW50OmUu
Zmlyc3RDaGlsZDpudWxsfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGUuZ2V0QXR0cmlidXRlJiZlLmdl
dEF0dHJpYnV0ZShrKXx8IiJ9ZnVuY3Rpb24gYShlLHQsbixyLG8pe3ZhciBpO2lmKEMubG9nVG9w
TGV2ZWxSZW5kZXJzKXt2YXIgYT1lLl9jdXJyZW50RWxlbWVudC5wcm9wcyx1PWEudHlwZTtpPSJS
ZWFjdCBtb3VudDogIisoInN0cmluZyI9PXR5cGVvZiB1P3U6dS5kaXNwbGF5TmFtZXx8dS5uYW1l
KSxjb25zb2xlLnRpbWUoaSl9dmFyIHM9VC5tb3VudENvbXBvbmVudChlLG4sbnVsbCxnKGUsdCks
bywwKTtpJiZjb25zb2xlLnRpbWVFbmQoaSksZS5fcmVuZGVyZWRDb21wb25lbnQuX3RvcExldmVs
V3JhcHBlcj1lLEYuX21vdW50SW1hZ2VJbnRvTm9kZShzLHQsZSxyLG4pfWZ1bmN0aW9uIHUoZSx0
LG4scil7dmFyIG89eC5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLmdldFBvb2xlZCghbiYmYi51
c2VDcmVhdGVFbGVtZW50KTtvLnBlcmZvcm0oYSxudWxsLGUsdCxvLG4scikseC5SZWFjdFJlY29u
Y2lsZVRyYW5zYWN0aW9uLnJlbGVhc2Uobyl9ZnVuY3Rpb24gcyhlLHQsbil7Zm9yKFQudW5tb3Vu
dENvbXBvbmVudChlLG4pLHQubm9kZVR5cGU9PT1JJiYodD10LmRvY3VtZW50RWxlbWVudCk7dC5s
YXN0Q2hpbGQ7KXQucmVtb3ZlQ2hpbGQodC5sYXN0Q2hpbGQpfWZ1bmN0aW9uIGwoZSl7dmFyIHQ9
byhlKTtpZih0KXt2YXIgbj15LmdldEluc3RhbmNlRnJvbU5vZGUodCk7cmV0dXJuISghbnx8IW4u
X2hvc3RQYXJlbnQpfX1mdW5jdGlvbiBjKGUpe3JldHVybiEoIWV8fGUubm9kZVR5cGUhPT1EJiZl
Lm5vZGVUeXBlIT09SSYmZS5ub2RlVHlwZSE9PUEpfWZ1bmN0aW9uIHAoZSl7dmFyIHQ9byhlKSxu
PXQmJnkuZ2V0SW5zdGFuY2VGcm9tTm9kZSh0KTtyZXR1cm4gbiYmIW4uX2hvc3RQYXJlbnQ/bjpu
dWxsfWZ1bmN0aW9uIGQoZSl7dmFyIHQ9cChlKTtyZXR1cm4gdD90Ll9ob3N0Q29udGFpbmVySW5m
by5fdG9wTGV2ZWxXcmFwcGVyOm51bGx9dmFyIGY9bigyKSxoPW4oMTcpLHY9bigxOCksbT1uKDI4
KSx5PShuKDE2KSxuKDUpKSxnPW4oMTU0KSxiPW4oMTU3KSxfPW4oOSksQz1uKDc4KSxFPW4oMjMp
LHc9KG4oOCksbigxNzApKSxUPW4oMTkpLFA9big1MSkseD1uKDEwKSxPPW4oMjApLFM9big5Myks
TT0obigxKSxuKDMxKSksTj1uKDU3KSxrPShuKDMpLHYuSURfQVRUUklCVVRFX05BTUUpLFI9di5S
T09UX0FUVFJJQlVURV9OQU1FLEQ9MSxJPTksQT0xMSxMPXt9LFU9MSxqPWZ1bmN0aW9uKCl7dGhp
cy5yb290SUQ9VSsrfTtqLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PXt9LGoucHJvdG90eXBl
LnJlbmRlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLnByb3BzfTt2YXIgRj17VG9wTGV2ZWxXcmFw
cGVyOmosX2luc3RhbmNlc0J5UmVhY3RSb290SUQ6TCxzY3JvbGxNb25pdG9yOmZ1bmN0aW9uKGUs
dCl7dCgpfSxfdXBkYXRlUm9vdENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyLG8pe3JldHVybiBG
LnNjcm9sbE1vbml0b3IocixmdW5jdGlvbigpe1AuZW5xdWV1ZUVsZW1lbnRJbnRlcm5hbChlLHQs
biksbyYmUC5lbnF1ZXVlQ2FsbGJhY2tJbnRlcm5hbChlLG8pfSksZX0sX3JlbmRlck5ld1Jvb3RD
b21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scil7Yyh0KT92b2lkIDA6ZigiMzciKSxtLmVuc3VyZVNj
cm9sbFZhbHVlTW9uaXRvcmluZygpO3ZhciBvPVMoZSwhMSk7eC5iYXRjaGVkVXBkYXRlcyh1LG8s
dCxuLHIpO3ZhciBpPW8uX2luc3RhbmNlLnJvb3RJRDtyZXR1cm4gTFtpXT1vLG99LHJlbmRlclN1
YnRyZWVJbnRvQ29udGFpbmVyOmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybiBudWxsIT1lJiZFLmhh
cyhlKT92b2lkIDA6ZigiMzgiKSxGLl9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcihlLHQsbixy
KX0sX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyOmZ1bmN0aW9uKGUsdCxuLHIpe1AudmFsaWRh
dGVDYWxsYmFjayhyLCJSZWFjdERPTS5yZW5kZXIiKSxfLmlzVmFsaWRFbGVtZW50KHQpP3ZvaWQg
MDpmKCIzOSIsInN0cmluZyI9PXR5cGVvZiB0PyIgSW5zdGVhZCBvZiBwYXNzaW5nIGEgc3RyaW5n
IGxpa2UgJ2RpdicsIHBhc3MgUmVhY3QuY3JlYXRlRWxlbWVudCgnZGl2Jykgb3IgPGRpdiAvPi4i
OiJmdW5jdGlvbiI9PXR5cGVvZiB0PyIgSW5zdGVhZCBvZiBwYXNzaW5nIGEgY2xhc3MgbGlrZSBG
b28sIHBhc3MgUmVhY3QuY3JlYXRlRWxlbWVudChGb28pIG9yIDxGb28gLz4uIjpudWxsIT10JiZ2
b2lkIDAhPT10LnByb3BzPyIgVGhpcyBtYXkgYmUgY2F1c2VkIGJ5IHVuaW50ZW50aW9uYWxseSBs
b2FkaW5nIHR3byBpbmRlcGVuZGVudCBjb3BpZXMgb2YgUmVhY3QuIjoiIik7dmFyIGEsdT1fKGos
bnVsbCxudWxsLG51bGwsbnVsbCxudWxsLHQpO2lmKGUpe3ZhciBzPUUuZ2V0KGUpO2E9cy5fcHJv
Y2Vzc0NoaWxkQ29udGV4dChzLl9jb250ZXh0KX1lbHNlIGE9Tzt2YXIgYz1kKG4pO2lmKGMpe3Zh
ciBwPWMuX2N1cnJlbnRFbGVtZW50LGg9cC5wcm9wcztpZihOKGgsdCkpe3ZhciB2PWMuX3JlbmRl
cmVkQ29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCksbT1yJiZmdW5jdGlvbigpe3IuY2FsbCh2
KX07cmV0dXJuIEYuX3VwZGF0ZVJvb3RDb21wb25lbnQoYyx1LGEsbixtKSx2fUYudW5tb3VudENv
bXBvbmVudEF0Tm9kZShuKX12YXIgeT1vKG4pLGc9eSYmISFpKHkpLGI9bChuKSxDPWcmJiFjJiYh
Yix3PUYuX3JlbmRlck5ld1Jvb3RDb21wb25lbnQodSxuLEMsYSkuX3JlbmRlcmVkQ29tcG9uZW50
LmdldFB1YmxpY0luc3RhbmNlKCk7cmV0dXJuIHImJnIuY2FsbCh3KSx3fSxyZW5kZXI6ZnVuY3Rp
b24oZSx0LG4pe3JldHVybiBGLl9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcihudWxsLGUsdCxu
KX0sdW5tb3VudENvbXBvbmVudEF0Tm9kZTpmdW5jdGlvbihlKXtjKGUpP3ZvaWQgMDpmKCI0MCIp
O3ZhciB0PWQoZSk7aWYoIXQpe2woZSksMT09PWUubm9kZVR5cGUmJmUuaGFzQXR0cmlidXRlKFIp
O3JldHVybiExfXJldHVybiBkZWxldGUgTFt0Ll9pbnN0YW5jZS5yb290SURdLHguYmF0Y2hlZFVw
ZGF0ZXMocyx0LGUsITEpLCEwfSxfbW91bnRJbWFnZUludG9Ob2RlOmZ1bmN0aW9uKGUsdCxuLGks
YSl7aWYoYyh0KT92b2lkIDA6ZigiNDEiKSxpKXt2YXIgdT1vKHQpO2lmKHcuY2FuUmV1c2VNYXJr
dXAoZSx1KSlyZXR1cm4gdm9pZCB5LnByZWNhY2hlTm9kZShuLHUpO3ZhciBzPXUuZ2V0QXR0cmli
dXRlKHcuQ0hFQ0tTVU1fQVRUUl9OQU1FKTt1LnJlbW92ZUF0dHJpYnV0ZSh3LkNIRUNLU1VNX0FU
VFJfTkFNRSk7dmFyIGw9dS5vdXRlckhUTUw7dS5zZXRBdHRyaWJ1dGUody5DSEVDS1NVTV9BVFRS
X05BTUUscyk7dmFyIHA9ZSxkPXIocCxsKSx2PSIgKGNsaWVudCkgIitwLnN1YnN0cmluZyhkLTIw
LGQrMjApKyJcbiAoc2VydmVyKSAiK2wuc3Vic3RyaW5nKGQtMjAsZCsyMCk7dC5ub2RlVHlwZT09
PUk/ZigiNDIiLHYpOnZvaWQgMH1pZih0Lm5vZGVUeXBlPT09ST9mKCI0MyIpOnZvaWQgMCxhLnVz
ZUNyZWF0ZUVsZW1lbnQpe2Zvcig7dC5sYXN0Q2hpbGQ7KXQucmVtb3ZlQ2hpbGQodC5sYXN0Q2hp
bGQpO2guaW5zZXJ0VHJlZUJlZm9yZSh0LGUsbnVsbCl9ZWxzZSBNKHQsZSkseS5wcmVjYWNoZU5v
ZGUobix0LmZpcnN0Q2hpbGQpfX07ZS5leHBvcnRzPUZ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7dmFyIHI9bigyNiksbz1yKHtJTlNFUlRfTUFSS1VQOm51bGwsTU9WRV9FWElTVElORzpu
dWxsLFJFTU9WRV9OT0RFOm51bGwsU0VUX01BUktVUDpudWxsLFRFWFRfQ09OVEVOVDpudWxsfSk7
ZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigyKSxvPW4o
OSksaT0obigxKSx7SE9TVDowLENPTVBPU0lURToxLEVNUFRZOjIsZ2V0VHlwZTpmdW5jdGlvbihl
KXtyZXR1cm4gbnVsbD09PWV8fGU9PT0hMT9pLkVNUFRZOm8uaXNWYWxpZEVsZW1lbnQoZSk/ImZ1
bmN0aW9uIj09dHlwZW9mIGUudHlwZT9pLkNPTVBPU0lURTppLkhPU1Q6dm9pZCByKCIyNiIsZSl9
fSk7ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
LHQpe3JldHVybiBlPT09dD8wIT09ZXx8MS9lPT09MS90OmUhPT1lJiZ0IT09dH1mdW5jdGlvbiBv
KGUpe3RoaXMubWVzc2FnZT1lLHRoaXMuc3RhY2s9IiJ9ZnVuY3Rpb24gaShlKXtmdW5jdGlvbiB0
KHQsbixyLGksYSx1LHMpe2k9aXx8eCx1PXV8fHI7aWYobnVsbD09bltyXSl7dmFyIGw9RVthXTty
ZXR1cm4gdD9uZXcgbygiUmVxdWlyZWQgIitsKyIgYCIrdSsiYCB3YXMgbm90IHNwZWNpZmllZCBp
biAiKygiYCIraSsiYC4iKSk6bnVsbH1yZXR1cm4gZShuLHIsaSxhLHUpfXZhciBuPXQuYmluZChu
dWxsLCExKTtyZXR1cm4gbi5pc1JlcXVpcmVkPXQuYmluZChudWxsLCEwKSxufWZ1bmN0aW9uIGEo
ZSl7ZnVuY3Rpb24gdCh0LG4scixpLGEsdSl7dmFyIHM9dFtuXSxsPWcocyk7aWYobCE9PWUpe3Zh
ciBjPUVbaV0scD1iKHMpO3JldHVybiBuZXcgbygiSW52YWxpZCAiK2MrIiBgIithKyJgIG9mIHR5
cGUgIisoImAiK3ArImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgIikrKCJgIitlKyJg
LiIpKX1yZXR1cm4gbnVsbH1yZXR1cm4gaSh0KX1mdW5jdGlvbiB1KCl7cmV0dXJuIGkoVC50aGF0
UmV0dXJucyhudWxsKSl9ZnVuY3Rpb24gcyhlKXtmdW5jdGlvbiB0KHQsbixyLGksYSl7aWYoImZ1
bmN0aW9uIiE9dHlwZW9mIGUpcmV0dXJuIG5ldyBvKCJQcm9wZXJ0eSBgIithKyJgIG9mIGNvbXBv
bmVudCBgIityKyJgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0aW9uIGluc2lkZSBhcnJheU9m
LiIpO3ZhciB1PXRbbl07aWYoIUFycmF5LmlzQXJyYXkodSkpe3ZhciBzPUVbaV0sbD1nKHUpO3Jl
dHVybiBuZXcgbygiSW52YWxpZCAiK3MrIiBgIithKyJgIG9mIHR5cGUgIisoImAiK2wrImAgc3Vw
cGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgYW4gYXJyYXkuIikpfWZvcih2YXIgYz0wO2M8dS5s
ZW5ndGg7YysrKXt2YXIgcD1lKHUsYyxyLGksYSsiWyIrYysiXSIsdyk7aWYocCBpbnN0YW5jZW9m
IEVycm9yKXJldHVybiBwfXJldHVybiBudWxsfXJldHVybiBpKHQpfWZ1bmN0aW9uIGwoKXtmdW5j
dGlvbiBlKGUsdCxuLHIsaSl7dmFyIGE9ZVt0XTtpZighQy5pc1ZhbGlkRWxlbWVudChhKSl7dmFy
IHU9RVtyXSxzPWcoYSk7cmV0dXJuIG5ldyBvKCJJbnZhbGlkICIrdSsiIGAiK2krImAgb2YgdHlw
ZSAiKygiYCIrcysiYCBzdXBwbGllZCB0byBgIituKyJgLCBleHBlY3RlZCBhIHNpbmdsZSBSZWFj
dEVsZW1lbnQuIikpfXJldHVybiBudWxsfXJldHVybiBpKGUpfWZ1bmN0aW9uIGMoZSl7ZnVuY3Rp
b24gdCh0LG4scixpLGEpe2lmKCEodFtuXWluc3RhbmNlb2YgZSkpe3ZhciB1PUVbaV0scz1lLm5h
bWV8fHgsbD1fKHRbbl0pO3JldHVybiBuZXcgbygiSW52YWxpZCAiK3UrIiBgIithKyJgIG9mIHR5
cGUgIisoImAiK2wrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgIikrKCJpbnN0YW5j
ZSBvZiBgIitzKyJgLiIpKX1yZXR1cm4gbnVsbH1yZXR1cm4gaSh0KX1mdW5jdGlvbiBwKGUpe2Z1
bmN0aW9uIHQodCxuLGksYSx1KXtmb3IodmFyIHM9dFtuXSxsPTA7bDxlLmxlbmd0aDtsKyspaWYo
cihzLGVbbF0pKXJldHVybiBudWxsO3ZhciBjPUVbYV0scD1KU09OLnN0cmluZ2lmeShlKTtyZXR1
cm4gbmV3IG8oIkludmFsaWQgIitjKyIgYCIrdSsiYCBvZiB2YWx1ZSBgIitzKyJgICIrKCJzdXBw
bGllZCB0byBgIitpKyJgLCBleHBlY3RlZCBvbmUgb2YgIitwKyIuIikpfXJldHVybiBBcnJheS5p
c0FycmF5KGUpP2kodCk6VC50aGF0UmV0dXJuc051bGx9ZnVuY3Rpb24gZChlKXtmdW5jdGlvbiB0
KHQsbixyLGksYSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpcmV0dXJuIG5ldyBvKCJQcm9wZXJ0
eSBgIithKyJgIG9mIGNvbXBvbmVudCBgIityKyJgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0
aW9uIGluc2lkZSBvYmplY3RPZi4iKTt2YXIgdT10W25dLHM9Zyh1KTtpZigib2JqZWN0IiE9PXMp
e3ZhciBsPUVbaV07cmV0dXJuIG5ldyBvKCJJbnZhbGlkICIrbCsiIGAiK2ErImAgb2YgdHlwZSAi
KygiYCIrcysiYCBzdXBwbGllZCB0byBgIityKyJgLCBleHBlY3RlZCBhbiBvYmplY3QuIikpfWZv
cih2YXIgYyBpbiB1KWlmKHUuaGFzT3duUHJvcGVydHkoYykpe3ZhciBwPWUodSxjLHIsaSxhKyIu
IitjLHcpO2lmKHAgaW5zdGFuY2VvZiBFcnJvcilyZXR1cm4gcH1yZXR1cm4gbnVsbH1yZXR1cm4g
aSh0KX1mdW5jdGlvbiBmKGUpe2Z1bmN0aW9uIHQodCxuLHIsaSxhKXtmb3IodmFyIHU9MDt1PGUu
bGVuZ3RoO3UrKyl7dmFyIHM9ZVt1XTtpZihudWxsPT1zKHQsbixyLGksYSx3KSlyZXR1cm4gbnVs
bH12YXIgbD1FW2ldO3JldHVybiBuZXcgbygiSW52YWxpZCAiK2wrIiBgIithKyJgIHN1cHBsaWVk
IHRvICIrKCJgIityKyJgLiIpKX1yZXR1cm4gQXJyYXkuaXNBcnJheShlKT9pKHQpOlQudGhhdFJl
dHVybnNOdWxsfWZ1bmN0aW9uIGgoKXtmdW5jdGlvbiBlKGUsdCxuLHIsaSl7aWYoIW0oZVt0XSkp
e3ZhciBhPUVbcl07cmV0dXJuIG5ldyBvKCJJbnZhbGlkICIrYSsiIGAiK2krImAgc3VwcGxpZWQg
dG8gIisoImAiK24rImAsIGV4cGVjdGVkIGEgUmVhY3ROb2RlLiIpKX1yZXR1cm4gbnVsbH1yZXR1
cm4gaShlKX1mdW5jdGlvbiB2KGUpe2Z1bmN0aW9uIHQodCxuLHIsaSxhKXt2YXIgdT10W25dLHM9
Zyh1KTtpZigib2JqZWN0IiE9PXMpe3ZhciBsPUVbaV07cmV0dXJuIG5ldyBvKCJJbnZhbGlkICIr
bCsiIGAiK2ErImAgb2YgdHlwZSBgIitzKyJgICIrKCJzdXBwbGllZCB0byBgIityKyJgLCBleHBl
Y3RlZCBgb2JqZWN0YC4iKSl9Zm9yKHZhciBjIGluIGUpe3ZhciBwPWVbY107aWYocCl7dmFyIGQ9
cCh1LGMscixpLGErIi4iK2Msdyk7aWYoZClyZXR1cm4gZH19cmV0dXJuIG51bGx9cmV0dXJuIGko
dCl9ZnVuY3Rpb24gbShlKXtzd2l0Y2godHlwZW9mIGUpe2Nhc2UibnVtYmVyIjpjYXNlInN0cmlu
ZyI6Y2FzZSJ1bmRlZmluZWQiOnJldHVybiEwO2Nhc2UiYm9vbGVhbiI6cmV0dXJuIWU7Y2FzZSJv
YmplY3QiOmlmKEFycmF5LmlzQXJyYXkoZSkpcmV0dXJuIGUuZXZlcnkobSk7aWYobnVsbD09PWV8
fEMuaXNWYWxpZEVsZW1lbnQoZSkpcmV0dXJuITA7dmFyIHQ9UChlKTtpZighdClyZXR1cm4hMTt2
YXIgbixyPXQuY2FsbChlKTtpZih0IT09ZS5lbnRyaWVzKXtmb3IoOyEobj1yLm5leHQoKSkuZG9u
ZTspaWYoIW0obi52YWx1ZSkpcmV0dXJuITF9ZWxzZSBmb3IoOyEobj1yLm5leHQoKSkuZG9uZTsp
e3ZhciBvPW4udmFsdWU7aWYobyYmIW0ob1sxXSkpcmV0dXJuITF9cmV0dXJuITA7ZGVmYXVsdDpy
ZXR1cm4hMX19ZnVuY3Rpb24geShlLHQpe3JldHVybiJzeW1ib2wiPT09ZXx8KCJTeW1ib2wiPT09
dFsiQEB0b1N0cmluZ1RhZyJdfHwiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZ0IGluc3RhbmNl
b2YgU3ltYm9sKX1mdW5jdGlvbiBnKGUpe3ZhciB0PXR5cGVvZiBlO3JldHVybiBBcnJheS5pc0Fy
cmF5KGUpPyJhcnJheSI6ZSBpbnN0YW5jZW9mIFJlZ0V4cD8ib2JqZWN0Ijp5KHQsZSk/InN5bWJv
bCI6dH1mdW5jdGlvbiBiKGUpe3ZhciB0PWcoZSk7aWYoIm9iamVjdCI9PT10KXtpZihlIGluc3Rh
bmNlb2YgRGF0ZSlyZXR1cm4iZGF0ZSI7aWYoZSBpbnN0YW5jZW9mIFJlZ0V4cClyZXR1cm4icmVn
ZXhwIn1yZXR1cm4gdH1mdW5jdGlvbiBfKGUpe3JldHVybiBlLmNvbnN0cnVjdG9yJiZlLmNvbnN0
cnVjdG9yLm5hbWU/ZS5jb25zdHJ1Y3Rvci5uYW1lOnh9dmFyIEM9big5KSxFPW4oNDgpLHc9big1
MCksVD1uKDcpLFA9big5MSkseD0obigzKSwiPDxhbm9ueW1vdXM+PiIpLE89e2FycmF5OmEoImFy
cmF5IiksYm9vbDphKCJib29sZWFuIiksZnVuYzphKCJmdW5jdGlvbiIpLG51bWJlcjphKCJudW1i
ZXIiKSxvYmplY3Q6YSgib2JqZWN0Iiksc3RyaW5nOmEoInN0cmluZyIpLHN5bWJvbDphKCJzeW1i
b2wiKSxhbnk6dSgpLGFycmF5T2Y6cyxlbGVtZW50OmwoKSxpbnN0YW5jZU9mOmMsbm9kZTpoKCks
b2JqZWN0T2Y6ZCxvbmVPZjpwLG9uZU9mVHlwZTpmLHNoYXBlOnZ9O28ucHJvdG90eXBlPUVycm9y
LnByb3RvdHlwZSxlLmV4cG9ydHM9T30sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZS5leHBv
cnRzPSIxNS4zLjIifSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17Y3VycmVudFNj
cm9sbExlZnQ6MCxjdXJyZW50U2Nyb2xsVG9wOjAscmVmcmVzaFNjcm9sbFZhbHVlczpmdW5jdGlv
bihlKXtuLmN1cnJlbnRTY3JvbGxMZWZ0PWUueCxuLmN1cnJlbnRTY3JvbGxUb3A9ZS55fX07ZS5l
eHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3Jl
dHVybiBudWxsPT10P28oIjMwIik6dm9pZCAwLG51bGw9PWU/dDpBcnJheS5pc0FycmF5KGUpP0Fy
cmF5LmlzQXJyYXkodCk/KGUucHVzaC5hcHBseShlLHQpLGUpOihlLnB1c2godCksZSk6QXJyYXku
aXNBcnJheSh0KT9bZV0uY29uY2F0KHQpOltlLHRdfXZhciBvPW4oMik7bigxKTtlLmV4cG9ydHM9
cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj0hMTtlLmV4cG9ydHM9cn0sZnVu
Y3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLHQsbil7QXJyYXkuaXNBcnJheShl
KT9lLmZvckVhY2godCxuKTplJiZ0LmNhbGwobixlKX1lLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2Zvcih2YXIgdDsodD1lLl9yZW5kZXJlZE5v
ZGVUeXBlKT09PW8uQ09NUE9TSVRFOyllPWUuX3JlbmRlcmVkQ29tcG9uZW50O3JldHVybiB0PT09
by5IT1NUP2UuX3JlbmRlcmVkQ29tcG9uZW50OnQ9PT1vLkVNUFRZP251bGw6dm9pZCAwfXZhciBv
PW4oODMpO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBu
KGUpe3ZhciB0PWUmJihyJiZlW3JdfHxlW29dKTtpZigiZnVuY3Rpb24iPT10eXBlb2YgdClyZXR1
cm4gdH12YXIgcj0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3Isbz0i
QEBpdGVyYXRvciI7ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcigpe3JldHVybiFpJiZvLmNhblVzZURPTSYmKGk9InRleHRDb250ZW50ImluIGRvY3Vt
ZW50LmRvY3VtZW50RWxlbWVudD8idGV4dENvbnRlbnQiOiJpbm5lclRleHQiKSxpfXZhciBvPW4o
NiksaT1udWxsO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSl7aWYoZSl7dmFyIHQ9ZS5nZXROYW1lKCk7aWYodClyZXR1cm4iIENoZWNrIHRoZSBy
ZW5kZXIgbWV0aG9kIG9mIGAiK3QrImAuIn1yZXR1cm4iIn1mdW5jdGlvbiBvKGUpe3JldHVybiJm
dW5jdGlvbiI9PXR5cGVvZiBlJiYidW5kZWZpbmVkIiE9dHlwZW9mIGUucHJvdG90eXBlJiYiZnVu
Y3Rpb24iPT10eXBlb2YgZS5wcm90b3R5cGUubW91bnRDb21wb25lbnQmJiJmdW5jdGlvbiI9PXR5
cGVvZiBlLnByb3RvdHlwZS5yZWNlaXZlQ29tcG9uZW50fWZ1bmN0aW9uIGkoZSx0KXt2YXIgbjtp
ZihudWxsPT09ZXx8ZT09PSExKW49bC5jcmVhdGUoaSk7ZWxzZSBpZigib2JqZWN0Ij09dHlwZW9m
IGUpe3ZhciB1PWU7IXV8fCJmdW5jdGlvbiIhPXR5cGVvZiB1LnR5cGUmJiJzdHJpbmciIT10eXBl
b2YgdS50eXBlP2EoIjEzMCIsbnVsbD09dS50eXBlP3UudHlwZTp0eXBlb2YgdS50eXBlLHIodS5f
b3duZXIpKTp2b2lkIDAsInN0cmluZyI9PXR5cGVvZiB1LnR5cGU/bj1jLmNyZWF0ZUludGVybmFs
Q29tcG9uZW50KHUpOm8odS50eXBlKT8obj1uZXcgdS50eXBlKHUpLG4uZ2V0SG9zdE5vZGV8fChu
LmdldEhvc3ROb2RlPW4uZ2V0TmF0aXZlTm9kZSkpOm49bmV3IHAodSl9ZWxzZSJzdHJpbmciPT10
eXBlb2YgZXx8Im51bWJlciI9PXR5cGVvZiBlP249Yy5jcmVhdGVJbnN0YW5jZUZvclRleHQoZSk6
YSgiMTMxIix0eXBlb2YgZSk7cmV0dXJuIG4uX21vdW50SW5kZXg9MCxuLl9tb3VudEltYWdlPW51
bGwsbn12YXIgYT1uKDIpLHU9big0KSxzPW4oMTUwKSxsPW4oNzcpLGM9big3OSkscD0obigxKSxu
KDMpLGZ1bmN0aW9uKGUpe3RoaXMuY29uc3RydWN0KGUpfSk7dShwLnByb3RvdHlwZSxzLk1peGlu
LHtfaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudDppfSk7ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUs
dCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7dmFyIHQ9ZSYmZS5ub2RlTmFtZSYmZS5ub2Rl
TmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybiJpbnB1dCI9PT10PyEhcltlLnR5cGVdOiJ0ZXh0YXJl
YSI9PT10fXZhciByPXtjb2xvcjohMCxkYXRlOiEwLGRhdGV0aW1lOiEwLCJkYXRldGltZS1sb2Nh
bCI6ITAsZW1haWw6ITAsbW9udGg6ITAsbnVtYmVyOiEwLHBhc3N3b3JkOiEwLHJhbmdlOiEwLHNl
YXJjaDohMCx0ZWw6ITAsdGV4dDohMCx0aW1lOiEwLHVybDohMCx3ZWVrOiEwfTtlLmV4cG9ydHM9
bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDYpLG89bigzMCksaT1uKDMx
KSxhPWZ1bmN0aW9uKGUsdCl7aWYodCl7dmFyIG49ZS5maXJzdENoaWxkO2lmKG4mJm49PT1lLmxh
c3RDaGlsZCYmMz09PW4ubm9kZVR5cGUpcmV0dXJuIHZvaWQobi5ub2RlVmFsdWU9dCl9ZS50ZXh0
Q29udGVudD10fTtyLmNhblVzZURPTSYmKCJ0ZXh0Q29udGVudCJpbiBkb2N1bWVudC5kb2N1bWVu
dEVsZW1lbnR8fChhPWZ1bmN0aW9uKGUsdCl7aShlLG8odCkpfSkpLGUuZXhwb3J0cz1hfSxmdW5j
dGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5s
ZW5ndGgsdD1BcnJheShlKSxuPTA7bjxlO24rKyl0W25dPWFyZ3VtZW50c1tuXTtpZigwPT09dC5s
ZW5ndGgpcmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBlfTtpZigxPT09dC5sZW5ndGgpcmV0dXJu
IHRbMF07dmFyIHI9dFt0Lmxlbmd0aC0xXSxvPXQuc2xpY2UoMCwtMSk7cmV0dXJuIGZ1bmN0aW9u
KCl7cmV0dXJuIG8ucmVkdWNlUmlnaHQoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdChlKX0sci5hcHBs
eSh2b2lkIDAsYXJndW1lbnRzKSl9fXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9bn0sZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1
bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBvKGUsdCxuKXtmdW5jdGlvbiByKCl7eT09PW0mJih5
PW0uc2xpY2UoKSl9ZnVuY3Rpb24gaSgpe3JldHVybiB2fWZ1bmN0aW9uIHUoZSl7aWYoImZ1bmN0
aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCBsaXN0ZW5lciB0byBiZSBh
IGZ1bmN0aW9uLiIpO3ZhciB0PSEwO3JldHVybiByKCkseS5wdXNoKGUpLGZ1bmN0aW9uKCl7aWYo
dCl7dD0hMSxyKCk7dmFyIG49eS5pbmRleE9mKGUpO3kuc3BsaWNlKG4sMSl9fX1mdW5jdGlvbiBj
KGUpe2lmKCEoMCxhLmRlZmF1bHQpKGUpKXRocm93IG5ldyBFcnJvcigiQWN0aW9ucyBtdXN0IGJl
IHBsYWluIG9iamVjdHMuIFVzZSBjdXN0b20gbWlkZGxld2FyZSBmb3IgYXN5bmMgYWN0aW9ucy4i
KTtpZigidW5kZWZpbmVkIj09dHlwZW9mIGUudHlwZSl0aHJvdyBuZXcgRXJyb3IoJ0FjdGlvbnMg
bWF5IG5vdCBoYXZlIGFuIHVuZGVmaW5lZCAidHlwZSIgcHJvcGVydHkuIEhhdmUgeW91IG1pc3Nw
ZWxsZWQgYSBjb25zdGFudD8nKTtpZihnKXRocm93IG5ldyBFcnJvcigiUmVkdWNlcnMgbWF5IG5v
dCBkaXNwYXRjaCBhY3Rpb25zLiIpO3RyeXtnPSEwLHY9aCh2LGUpfWZpbmFsbHl7Zz0hMX1mb3Io
dmFyIHQ9bT15LG49MDtuPHQubGVuZ3RoO24rKyl0W25dKCk7cmV0dXJuIGV9ZnVuY3Rpb24gcChl
KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRoZSBu
ZXh0UmVkdWNlciB0byBiZSBhIGZ1bmN0aW9uLiIpO2g9ZSxjKHt0eXBlOmwuSU5JVH0pfWZ1bmN0
aW9uIGQoKXt2YXIgZSx0PXU7cmV0dXJuIGU9e3N1YnNjcmliZTpmdW5jdGlvbihlKXtmdW5jdGlv
biBuKCl7ZS5uZXh0JiZlLm5leHQoaSgpKX1pZigib2JqZWN0IiE9dHlwZW9mIGUpdGhyb3cgbmV3
IFR5cGVFcnJvcigiRXhwZWN0ZWQgdGhlIG9ic2VydmVyIHRvIGJlIGFuIG9iamVjdC4iKTtuKCk7
dmFyIHI9dChuKTtyZXR1cm57dW5zdWJzY3JpYmU6cn19fSxlW3MuZGVmYXVsdF09ZnVuY3Rpb24o
KXtyZXR1cm4gdGhpc30sZX12YXIgZjtpZigiZnVuY3Rpb24iPT10eXBlb2YgdCYmInVuZGVmaW5l
ZCI9PXR5cGVvZiBuJiYobj10LHQ9dm9pZCAwKSwidW5kZWZpbmVkIiE9dHlwZW9mIG4pe2lmKCJm
dW5jdGlvbiIhPXR5cGVvZiBuKXRocm93IG5ldyBFcnJvcigiRXhwZWN0ZWQgdGhlIGVuaGFuY2Vy
IHRvIGJlIGEgZnVuY3Rpb24uIik7cmV0dXJuIG4obykoZSx0KX1pZigiZnVuY3Rpb24iIT10eXBl
b2YgZSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRoZSByZWR1Y2VyIHRvIGJlIGEgZnVuY3Rp
b24uIik7dmFyIGg9ZSx2PXQsbT1bXSx5PW0sZz0hMTtyZXR1cm4gYyh7dHlwZTpsLklOSVR9KSxm
PXtkaXNwYXRjaDpjLHN1YnNjcmliZTp1LGdldFN0YXRlOmkscmVwbGFjZVJlZHVjZXI6cH0sZltz
LmRlZmF1bHRdPWQsZn10Ll9fZXNNb2R1bGU9ITAsdC5BY3Rpb25UeXBlcz12b2lkIDAsdC5kZWZh
dWx0PW87dmFyIGk9bigzNSksYT1yKGkpLHU9bigyMDUpLHM9cih1KSxsPXQuQWN0aW9uVHlwZXM9
e0lOSVQ6IkBAcmVkdXgvSU5JVCJ9fSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biBuKGUpeyJ1bmRlZmluZWQiIT10eXBlb2YgY29uc29sZSYmImZ1bmN0aW9uIj09dHlwZW9mIGNv
bnNvbGUuZXJyb3ImJmNvbnNvbGUuZXJyb3IoZSk7dHJ5e3Rocm93IG5ldyBFcnJvcihlKX1jYXRj
aCh0KXt9fXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9bn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gbihlKXtyZXR1cm4gZS5yZXBsYWNlKHIsZnVuY3Rpb24oZSx0KXtyZXR1
cm4gdC50b1VwcGVyQ2FzZSgpfSl9dmFyIHI9Ly0oLikvZztlLmV4cG9ydHM9bn0sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBvKGUucmVwbGFjZShpLCJt
cy0iKSl9dmFyIG89big5OSksaT0vXi1tcy0vO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4hKCFlfHwhdCkmJihlPT09dHx8IW8o
ZSkmJihvKHQpP3IoZSx0LnBhcmVudE5vZGUpOiJjb250YWlucyJpbiBlP2UuY29udGFpbnModCk6
ISFlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYhISgxNiZlLmNvbXBhcmVEb2N1bWVudFBvc2l0
aW9uKHQpKSkpfXZhciBvPW4oMTA5KTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PWUubGVuZ3RoO2lmKEFycmF5LmlzQXJyYXkoZSl8
fCJvYmplY3QiIT10eXBlb2YgZSYmImZ1bmN0aW9uIiE9dHlwZW9mIGU/YSghMSk6dm9pZCAwLCJu
dW1iZXIiIT10eXBlb2YgdD9hKCExKTp2b2lkIDAsMD09PXR8fHQtMSBpbiBlP3ZvaWQgMDphKCEx
KSwiZnVuY3Rpb24iPT10eXBlb2YgZS5jYWxsZWU/YSghMSk6dm9pZCAwLGUuaGFzT3duUHJvcGVy
dHkpdHJ5e3JldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlKX1jYXRjaChuKXt9Zm9y
KHZhciByPUFycmF5KHQpLG89MDtvPHQ7bysrKXJbb109ZVtvXTtyZXR1cm4gcn1mdW5jdGlvbiBv
KGUpe3JldHVybiEhZSYmKCJvYmplY3QiPT10eXBlb2YgZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGUp
JiYibGVuZ3RoImluIGUmJiEoInNldEludGVydmFsImluIGUpJiYibnVtYmVyIiE9dHlwZW9mIGUu
bm9kZVR5cGUmJihBcnJheS5pc0FycmF5KGUpfHwiY2FsbGVlImluIGV8fCJpdGVtImluIGUpfWZ1
bmN0aW9uIGkoZSl7cmV0dXJuIG8oZSk/QXJyYXkuaXNBcnJheShlKT9lLnNsaWNlKCk6cihlKTpb
ZV19dmFyIGE9bigxKTtlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUpe3ZhciB0PWUubWF0Y2goYyk7cmV0dXJuIHQmJnRbMV0udG9Mb3dlckNhc2Uo
KX1mdW5jdGlvbiBvKGUsdCl7dmFyIG49bDtsP3ZvaWQgMDpzKCExKTt2YXIgbz1yKGUpLGk9byYm
dShvKTtpZihpKXtuLmlubmVySFRNTD1pWzFdK2UraVsyXTtmb3IodmFyIGM9aVswXTtjLS07KW49
bi5sYXN0Q2hpbGR9ZWxzZSBuLmlubmVySFRNTD1lO3ZhciBwPW4uZ2V0RWxlbWVudHNCeVRhZ05h
bWUoInNjcmlwdCIpO3AubGVuZ3RoJiYodD92b2lkIDA6cyghMSksYShwKS5mb3JFYWNoKHQpKTtm
b3IodmFyIGQ9QXJyYXkuZnJvbShuLmNoaWxkTm9kZXMpO24ubGFzdENoaWxkOyluLnJlbW92ZUNo
aWxkKG4ubGFzdENoaWxkKTtyZXR1cm4gZH12YXIgaT1uKDYpLGE9bigxMDIpLHU9bigxMDQpLHM9
bigxKSxsPWkuY2FuVXNlRE9NP2RvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOm51bGwsYz0v
XlxzKjwoXHcrKS87ZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlKXtyZXR1cm4gYT92b2lkIDA6aSghMSksZC5oYXNPd25Qcm9wZXJ0eShlKXx8KGU9
IioiKSx1Lmhhc093blByb3BlcnR5KGUpfHwoIioiPT09ZT9hLmlubmVySFRNTD0iPGxpbmsgLz4i
OmEuaW5uZXJIVE1MPSI8IitlKyI+PC8iK2UrIj4iLHVbZV09IWEuZmlyc3RDaGlsZCksdVtlXT9k
W2VdOm51bGx9dmFyIG89big2KSxpPW4oMSksYT1vLmNhblVzZURPTT9kb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTpudWxsLHU9e30scz1bMSwnPHNlbGVjdCBtdWx0aXBsZT0idHJ1ZSI+Jywi
PC9zZWxlY3Q+Il0sbD1bMSwiPHRhYmxlPiIsIjwvdGFibGU+Il0sYz1bMywiPHRhYmxlPjx0Ym9k
eT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0scD1bMSwnPHN2ZyB4bWxucz0iaHR0cDov
L3d3dy53My5vcmcvMjAwMC9zdmciPicsIjwvc3ZnPiJdLGQ9eyIqIjpbMSwiPzxkaXY+IiwiPC9k
aXY+Il0sYXJlYTpbMSwiPG1hcD4iLCI8L21hcD4iXSxjb2w6WzIsIjx0YWJsZT48dGJvZHk+PC90
Ym9keT48Y29sZ3JvdXA+IiwiPC9jb2xncm91cD48L3RhYmxlPiJdLGxlZ2VuZDpbMSwiPGZpZWxk
c2V0PiIsIjwvZmllbGRzZXQ+Il0scGFyYW06WzEsIjxvYmplY3Q+IiwiPC9vYmplY3Q+Il0sdHI6
WzIsIjx0YWJsZT48dGJvZHk+IiwiPC90Ym9keT48L3RhYmxlPiJdLG9wdGdyb3VwOnMsb3B0aW9u
OnMsY2FwdGlvbjpsLGNvbGdyb3VwOmwsdGJvZHk6bCx0Zm9vdDpsLHRoZWFkOmwsdGQ6Yyx0aDpj
fSxmPVsiY2lyY2xlIiwiY2xpcFBhdGgiLCJkZWZzIiwiZWxsaXBzZSIsImciLCJpbWFnZSIsImxp
bmUiLCJsaW5lYXJHcmFkaWVudCIsIm1hc2siLCJwYXRoIiwicGF0dGVybiIsInBvbHlnb24iLCJw
b2x5bGluZSIsInJhZGlhbEdyYWRpZW50IiwicmVjdCIsInN0b3AiLCJ0ZXh0IiwidHNwYW4iXTtm
LmZvckVhY2goZnVuY3Rpb24oZSl7ZFtlXT1wLHVbZV09ITB9KSxlLmV4cG9ydHM9cn0sZnVuY3Rp
b24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXtyZXR1cm4gZT09PXdpbmRvdz97eDp3
aW5kb3cucGFnZVhPZmZzZXR8fGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0LHk6
d2luZG93LnBhZ2VZT2Zmc2V0fHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wfTp7
eDplLnNjcm9sbExlZnQseTplLnNjcm9sbFRvcH19ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCl7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7cmV0dXJuIGUucmVwbGFjZShyLCItJDEiKS50b0xv
d2VyQ2FzZSgpfXZhciByPS8oW0EtWl0pL2c7ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gbyhlKS5yZXBsYWNlKGksIi1tcy0iKX12
YXIgbz1uKDEwNiksaT0vXm1zLS87ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIG4oZSl7cmV0dXJuISghZXx8ISgiZnVuY3Rpb24iPT10eXBlb2YgTm9kZT9l
IGluc3RhbmNlb2YgTm9kZToib2JqZWN0Ij09dHlwZW9mIGUmJiJudW1iZXIiPT10eXBlb2YgZS5u
b2RlVHlwZSYmInN0cmluZyI9PXR5cGVvZiBlLm5vZGVOYW1lKSl9ZS5leHBvcnRzPW59LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gbyhlKSYmMz09ZS5u
b2RlVHlwZX12YXIgbz1uKDEwOCk7ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIG4oZSl7dmFyIHQ9e307cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiB0Lmhh
c093blByb3BlcnR5KG4pfHwodFtuXT1lLmNhbGwodGhpcyxuKSksdFtuXX19ZS5leHBvcnRzPW59
LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXtjaGlsZENvbnRleHRUeXBlczohMCxj
b250ZXh0VHlwZXM6ITAsZGVmYXVsdFByb3BzOiEwLGRpc3BsYXlOYW1lOiEwLGdldERlZmF1bHRQ
cm9wczohMCxtaXhpbnM6ITAscHJvcFR5cGVzOiEwLHR5cGU6ITB9LHI9e25hbWU6ITAsbGVuZ3Ro
OiEwLHByb3RvdHlwZTohMCxjYWxsZXI6ITAsYXJndW1lbnRzOiEwLGFyaXR5OiEwfSxvPSJmdW5j
dGlvbiI9PXR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO2UuZXhwb3J0cz1mdW5j
dGlvbihlLHQsaSl7aWYoInN0cmluZyIhPXR5cGVvZiB0KXt2YXIgYT1PYmplY3QuZ2V0T3duUHJv
cGVydHlOYW1lcyh0KTtvJiYoYT1hLmNvbmNhdChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xz
KHQpKSk7Zm9yKHZhciB1PTA7dTxhLmxlbmd0aDsrK3UpaWYoIShuW2FbdV1dfHxyW2FbdV1dfHxp
JiZpW2FbdV1dKSl0cnl7ZVthW3VdXT10W2FbdV1dfWNhdGNoKHMpe319cmV0dXJuIGV9fSxmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWZ1bmN0aW9uKGUsdCxuLHIsbyxpLGEsdSl7
aWYoIWUpe3ZhciBzO2lmKHZvaWQgMD09PXQpcz1uZXcgRXJyb3IoIk1pbmlmaWVkIGV4Y2VwdGlv
biBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciB0aGUg
ZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuIik7ZWxz
ZXt2YXIgbD1bbixyLG8saSxhLHVdLGM9MDtzPW5ldyBFcnJvcih0LnJlcGxhY2UoLyVzL2csZnVu
Y3Rpb24oKXtyZXR1cm4gbFtjKytdfSkpLHMubmFtZT0iSW52YXJpYW50IFZpb2xhdGlvbiJ9dGhy
b3cgcy5mcmFtZXNUb1BvcD0xLHN9fTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4pe3ZhciBy
PW4oMTE0KSxvPXIoT2JqZWN0LmdldFByb3RvdHlwZU9mLE9iamVjdCk7ZS5leHBvcnRzPW99LGZ1
bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbihlLHQpe3JldHVybiBmdW5jdGlvbihuKXtyZXR1cm4gZSh0
KG4pKX19ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbihlKXtyZXR1cm4gbnVs
bCE9ZSYmIm9iamVjdCI9PXR5cGVvZiBlfWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2UuZXhwb3J0cz1uKDE1MSl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rp
b24gbyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5v
dCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGkoZSx0KXtpZighZSl0aHJv
dyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBl
cigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJm
dW5jdGlvbiIhPXR5cGVvZiB0P2U6dH1mdW5jdGlvbiBhKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlw
ZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVz
dCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5
cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51
bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQ
cm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX10Ll9f
ZXNNb2R1bGU9ITAsdC5kZWZhdWx0PXZvaWQgMDt2YXIgdT1uKDExKSxzPW4oNjQpLGw9cihzKSxj
PW4oNjUpLHA9KHIoYyksZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChuLHIpe28odGhpcyx0KTt2YXIg
YT1pKHRoaXMsZS5jYWxsKHRoaXMsbixyKSk7cmV0dXJuIGEuc3RvcmU9bi5zdG9yZSxhfXJldHVy
biBhKHQsZSksdC5wcm90b3R5cGUuZ2V0Q2hpbGRDb250ZXh0PWZ1bmN0aW9uKCl7cmV0dXJue3N0
b3JlOnRoaXMuc3RvcmV9fSx0LnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIgZT10aGlz
LnByb3BzLmNoaWxkcmVuO3JldHVybiB1LkNoaWxkcmVuLm9ubHkoZSl9LHR9KHUuQ29tcG9uZW50
KSk7dC5kZWZhdWx0PXAscC5wcm9wVHlwZXM9e3N0b3JlOmwuZGVmYXVsdC5pc1JlcXVpcmVkLGNo
aWxkcmVuOnUuUHJvcFR5cGVzLmVsZW1lbnQuaXNSZXF1aXJlZH0scC5jaGlsZENvbnRleHRUeXBl
cz17c3RvcmU6bC5kZWZhdWx0LmlzUmVxdWlyZWR9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1
bmN0aW9uIG8oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJD
YW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBpKGUsdCl7aWYoIWUp
dGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0g
c3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0
JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24gYShlLHQpe2lmKCJmdW5jdGlvbiIh
PXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9u
IG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJv
dG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTpl
LGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Qu
c2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9
ZnVuY3Rpb24gdShlKXtyZXR1cm4gZS5kaXNwbGF5TmFtZXx8ZS5uYW1lfHwiQ29tcG9uZW50In1m
dW5jdGlvbiBzKGUsdCl7dHJ5e3JldHVybiBlLmFwcGx5KHQpfWNhdGNoKG4pe3JldHVybiBPLnZh
bHVlPW4sT319ZnVuY3Rpb24gbChlLHQsbil7dmFyIHI9YXJndW1lbnRzLmxlbmd0aDw9M3x8dm9p
ZCAwPT09YXJndW1lbnRzWzNdP3t9OmFyZ3VtZW50c1szXSxsPUJvb2xlYW4oZSksZD1lfHxULGg9
dm9pZCAwO2g9ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDp0PygwLHkuZGVmYXVsdCkodCk6UDt2YXIg
bT1ufHx4LGc9ci5wdXJlLGI9dm9pZCAwPT09Z3x8ZyxfPXIud2l0aFJlZixFPXZvaWQgMCE9PV8m
Jl8sTT1iJiZtIT09eCxOPVMrKztyZXR1cm4gZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdChlLHQsbil7
dmFyIHI9bShlLHQsbik7cmV0dXJuIHJ9dmFyIG49IkNvbm5lY3QoIit1KGUpKyIpIixyPWZ1bmN0
aW9uKHIpe2Z1bmN0aW9uIHUoZSx0KXtvKHRoaXMsdSk7dmFyIGE9aSh0aGlzLHIuY2FsbCh0aGlz
LGUsdCkpO2EudmVyc2lvbj1OLGEuc3RvcmU9ZS5zdG9yZXx8dC5zdG9yZSwoMCx3LmRlZmF1bHQp
KGEuc3RvcmUsJ0NvdWxkIG5vdCBmaW5kICJzdG9yZSIgaW4gZWl0aGVyIHRoZSBjb250ZXh0IG9y
ICcrKCdwcm9wcyBvZiAiJytuKyciLiAnKSsiRWl0aGVyIHdyYXAgdGhlIHJvb3QgY29tcG9uZW50
IGluIGEgPFByb3ZpZGVyPiwgIisoJ29yIGV4cGxpY2l0bHkgcGFzcyAic3RvcmUiIGFzIGEgcHJv
cCB0byAiJytuKyciLicpKTt2YXIgcz1hLnN0b3JlLmdldFN0YXRlKCk7cmV0dXJuIGEuc3RhdGU9
e3N0b3JlU3RhdGU6c30sYS5jbGVhckNhY2hlKCksYX1yZXR1cm4gYSh1LHIpLHUucHJvdG90eXBl
LnNob3VsZENvbXBvbmVudFVwZGF0ZT1mdW5jdGlvbigpe3JldHVybiFifHx0aGlzLmhhdmVPd25Q
cm9wc0NoYW5nZWR8fHRoaXMuaGFzU3RvcmVTdGF0ZUNoYW5nZWR9LHUucHJvdG90eXBlLmNvbXB1
dGVTdGF0ZVByb3BzPWZ1bmN0aW9uKGUsdCl7aWYoIXRoaXMuZmluYWxNYXBTdGF0ZVRvUHJvcHMp
cmV0dXJuIHRoaXMuY29uZmlndXJlRmluYWxNYXBTdGF0ZShlLHQpO3ZhciBuPWUuZ2V0U3RhdGUo
KSxyPXRoaXMuZG9TdGF0ZVByb3BzRGVwZW5kT25Pd25Qcm9wcz90aGlzLmZpbmFsTWFwU3RhdGVU
b1Byb3BzKG4sdCk6dGhpcy5maW5hbE1hcFN0YXRlVG9Qcm9wcyhuKTtyZXR1cm4gcn0sdS5wcm90
b3R5cGUuY29uZmlndXJlRmluYWxNYXBTdGF0ZT1mdW5jdGlvbihlLHQpe3ZhciBuPWQoZS5nZXRT
dGF0ZSgpLHQpLHI9ImZ1bmN0aW9uIj09dHlwZW9mIG47cmV0dXJuIHRoaXMuZmluYWxNYXBTdGF0
ZVRvUHJvcHM9cj9uOmQsdGhpcy5kb1N0YXRlUHJvcHNEZXBlbmRPbk93blByb3BzPTEhPT10aGlz
LmZpbmFsTWFwU3RhdGVUb1Byb3BzLmxlbmd0aCxyP3RoaXMuY29tcHV0ZVN0YXRlUHJvcHMoZSx0
KTpufSx1LnByb3RvdHlwZS5jb21wdXRlRGlzcGF0Y2hQcm9wcz1mdW5jdGlvbihlLHQpe2lmKCF0
aGlzLmZpbmFsTWFwRGlzcGF0Y2hUb1Byb3BzKXJldHVybiB0aGlzLmNvbmZpZ3VyZUZpbmFsTWFw
RGlzcGF0Y2goZSx0KTt2YXIgbj1lLmRpc3BhdGNoLHI9dGhpcy5kb0Rpc3BhdGNoUHJvcHNEZXBl
bmRPbk93blByb3BzP3RoaXMuZmluYWxNYXBEaXNwYXRjaFRvUHJvcHMobix0KTp0aGlzLmZpbmFs
TWFwRGlzcGF0Y2hUb1Byb3BzKG4pO3JldHVybiByfSx1LnByb3RvdHlwZS5jb25maWd1cmVGaW5h
bE1hcERpc3BhdGNoPWZ1bmN0aW9uKGUsdCl7dmFyIG49aChlLmRpc3BhdGNoLHQpLHI9ImZ1bmN0
aW9uIj09dHlwZW9mIG47cmV0dXJuIHRoaXMuZmluYWxNYXBEaXNwYXRjaFRvUHJvcHM9cj9uOmgs
dGhpcy5kb0Rpc3BhdGNoUHJvcHNEZXBlbmRPbk93blByb3BzPTEhPT10aGlzLmZpbmFsTWFwRGlz
cGF0Y2hUb1Byb3BzLmxlbmd0aCxyP3RoaXMuY29tcHV0ZURpc3BhdGNoUHJvcHMoZSx0KTpufSx1
LnByb3RvdHlwZS51cGRhdGVTdGF0ZVByb3BzSWZOZWVkZWQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlz
LmNvbXB1dGVTdGF0ZVByb3BzKHRoaXMuc3RvcmUsdGhpcy5wcm9wcyk7cmV0dXJuKCF0aGlzLnN0
YXRlUHJvcHN8fCEoMCx2LmRlZmF1bHQpKGUsdGhpcy5zdGF0ZVByb3BzKSkmJih0aGlzLnN0YXRl
UHJvcHM9ZSwhMCl9LHUucHJvdG90eXBlLnVwZGF0ZURpc3BhdGNoUHJvcHNJZk5lZWRlZD1mdW5j
dGlvbigpe3ZhciBlPXRoaXMuY29tcHV0ZURpc3BhdGNoUHJvcHModGhpcy5zdG9yZSx0aGlzLnBy
b3BzKTtyZXR1cm4oIXRoaXMuZGlzcGF0Y2hQcm9wc3x8ISgwLHYuZGVmYXVsdCkoZSx0aGlzLmRp
c3BhdGNoUHJvcHMpKSYmKHRoaXMuZGlzcGF0Y2hQcm9wcz1lLCEwKX0sdS5wcm90b3R5cGUudXBk
YXRlTWVyZ2VkUHJvcHNJZk5lZWRlZD1mdW5jdGlvbigpe3ZhciBlPXQodGhpcy5zdGF0ZVByb3Bz
LHRoaXMuZGlzcGF0Y2hQcm9wcyx0aGlzLnByb3BzKTtyZXR1cm4hKHRoaXMubWVyZ2VkUHJvcHMm
Jk0mJigwLHYuZGVmYXVsdCkoZSx0aGlzLm1lcmdlZFByb3BzKSkmJih0aGlzLm1lcmdlZFByb3Bz
PWUsITApfSx1LnByb3RvdHlwZS5pc1N1YnNjcmliZWQ9ZnVuY3Rpb24oKXtyZXR1cm4iZnVuY3Rp
b24iPT10eXBlb2YgdGhpcy51bnN1YnNjcmliZX0sdS5wcm90b3R5cGUudHJ5U3Vic2NyaWJlPWZ1
bmN0aW9uKCl7bCYmIXRoaXMudW5zdWJzY3JpYmUmJih0aGlzLnVuc3Vic2NyaWJlPXRoaXMuc3Rv
cmUuc3Vic2NyaWJlKHRoaXMuaGFuZGxlQ2hhbmdlLmJpbmQodGhpcykpLHRoaXMuaGFuZGxlQ2hh
bmdlKCkpfSx1LnByb3RvdHlwZS50cnlVbnN1YnNjcmliZT1mdW5jdGlvbigpe3RoaXMudW5zdWJz
Y3JpYmUmJih0aGlzLnVuc3Vic2NyaWJlKCksdGhpcy51bnN1YnNjcmliZT1udWxsKX0sdS5wcm90
b3R5cGUuY29tcG9uZW50RGlkTW91bnQ9ZnVuY3Rpb24oKXt0aGlzLnRyeVN1YnNjcmliZSgpfSx1
LnByb3RvdHlwZS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzPWZ1bmN0aW9uKGUpe2ImJigwLHYu
ZGVmYXVsdCkoZSx0aGlzLnByb3BzKXx8KHRoaXMuaGF2ZU93blByb3BzQ2hhbmdlZD0hMCl9LHUu
cHJvdG90eXBlLmNvbXBvbmVudFdpbGxVbm1vdW50PWZ1bmN0aW9uKCl7dGhpcy50cnlVbnN1YnNj
cmliZSgpLHRoaXMuY2xlYXJDYWNoZSgpfSx1LnByb3RvdHlwZS5jbGVhckNhY2hlPWZ1bmN0aW9u
KCl7dGhpcy5kaXNwYXRjaFByb3BzPW51bGwsdGhpcy5zdGF0ZVByb3BzPW51bGwsdGhpcy5tZXJn
ZWRQcm9wcz1udWxsLHRoaXMuaGF2ZU93blByb3BzQ2hhbmdlZD0hMCx0aGlzLmhhc1N0b3JlU3Rh
dGVDaGFuZ2VkPSEwLHRoaXMuaGF2ZVN0YXRlUHJvcHNCZWVuUHJlY2FsY3VsYXRlZD0hMSx0aGlz
LnN0YXRlUHJvcHNQcmVjYWxjdWxhdGlvbkVycm9yPW51bGwsdGhpcy5yZW5kZXJlZEVsZW1lbnQ9
bnVsbCx0aGlzLmZpbmFsTWFwRGlzcGF0Y2hUb1Byb3BzPW51bGwsdGhpcy5maW5hbE1hcFN0YXRl
VG9Qcm9wcz1udWxsfSx1LnByb3RvdHlwZS5oYW5kbGVDaGFuZ2U9ZnVuY3Rpb24oKXtpZih0aGlz
LnVuc3Vic2NyaWJlKXt2YXIgZT10aGlzLnN0b3JlLmdldFN0YXRlKCksdD10aGlzLnN0YXRlLnN0
b3JlU3RhdGU7aWYoIWJ8fHQhPT1lKXtpZihiJiYhdGhpcy5kb1N0YXRlUHJvcHNEZXBlbmRPbk93
blByb3BzKXt2YXIgbj1zKHRoaXMudXBkYXRlU3RhdGVQcm9wc0lmTmVlZGVkLHRoaXMpO2lmKCFu
KXJldHVybjtuPT09TyYmKHRoaXMuc3RhdGVQcm9wc1ByZWNhbGN1bGF0aW9uRXJyb3I9Ty52YWx1
ZSksdGhpcy5oYXZlU3RhdGVQcm9wc0JlZW5QcmVjYWxjdWxhdGVkPSEwfXRoaXMuaGFzU3RvcmVT
dGF0ZUNoYW5nZWQ9ITAsdGhpcy5zZXRTdGF0ZSh7c3RvcmVTdGF0ZTplfSl9fX0sdS5wcm90b3R5
cGUuZ2V0V3JhcHBlZEluc3RhbmNlPWZ1bmN0aW9uKCl7cmV0dXJuKDAsdy5kZWZhdWx0KShFLCJU
byBhY2Nlc3MgdGhlIHdyYXBwZWQgaW5zdGFuY2UsIHlvdSBuZWVkIHRvIHNwZWNpZnkgeyB3aXRo
UmVmOiB0cnVlIH0gYXMgdGhlIGZvdXJ0aCBhcmd1bWVudCBvZiB0aGUgY29ubmVjdCgpIGNhbGwu
IiksdGhpcy5yZWZzLndyYXBwZWRJbnN0YW5jZX0sdS5wcm90b3R5cGUucmVuZGVyPWZ1bmN0aW9u
KCl7dmFyIHQ9dGhpcy5oYXZlT3duUHJvcHNDaGFuZ2VkLG49dGhpcy5oYXNTdG9yZVN0YXRlQ2hh
bmdlZCxyPXRoaXMuaGF2ZVN0YXRlUHJvcHNCZWVuUHJlY2FsY3VsYXRlZCxvPXRoaXMuc3RhdGVQ
cm9wc1ByZWNhbGN1bGF0aW9uRXJyb3IsaT10aGlzLnJlbmRlcmVkRWxlbWVudDtpZih0aGlzLmhh
dmVPd25Qcm9wc0NoYW5nZWQ9ITEsdGhpcy5oYXNTdG9yZVN0YXRlQ2hhbmdlZD0hMSx0aGlzLmhh
dmVTdGF0ZVByb3BzQmVlblByZWNhbGN1bGF0ZWQ9ITEsdGhpcy5zdGF0ZVByb3BzUHJlY2FsY3Vs
YXRpb25FcnJvcj1udWxsLG8pdGhyb3cgbzt2YXIgYT0hMCx1PSEwO2ImJmkmJihhPW58fHQmJnRo
aXMuZG9TdGF0ZVByb3BzRGVwZW5kT25Pd25Qcm9wcyx1PXQmJnRoaXMuZG9EaXNwYXRjaFByb3Bz
RGVwZW5kT25Pd25Qcm9wcyk7dmFyIHM9ITEsbD0hMTtyP3M9ITA6YSYmKHM9dGhpcy51cGRhdGVT
dGF0ZVByb3BzSWZOZWVkZWQoKSksdSYmKGw9dGhpcy51cGRhdGVEaXNwYXRjaFByb3BzSWZOZWVk
ZWQoKSk7dmFyIGQ9ITA7cmV0dXJuIGQ9ISEoc3x8bHx8dCkmJnRoaXMudXBkYXRlTWVyZ2VkUHJv
cHNJZk5lZWRlZCgpLCFkJiZpP2k6KEU/dGhpcy5yZW5kZXJlZEVsZW1lbnQ9KDAscC5jcmVhdGVF
bGVtZW50KShlLGMoe30sdGhpcy5tZXJnZWRQcm9wcyx7cmVmOiJ3cmFwcGVkSW5zdGFuY2UifSkp
OnRoaXMucmVuZGVyZWRFbGVtZW50PSgwLHAuY3JlYXRlRWxlbWVudCkoZSx0aGlzLm1lcmdlZFBy
b3BzKSx0aGlzLnJlbmRlcmVkRWxlbWVudCl9LHV9KHAuQ29tcG9uZW50KTtyZXR1cm4gci5kaXNw
bGF5TmFtZT1uLHIuV3JhcHBlZENvbXBvbmVudD1lLHIuY29udGV4dFR5cGVzPXtzdG9yZTpmLmRl
ZmF1bHR9LHIucHJvcFR5cGVzPXtzdG9yZTpmLmRlZmF1bHR9LCgwLEMuZGVmYXVsdCkocixlKX19
dmFyIGM9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMu
bGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90
b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX07dC5f
X2VzTW9kdWxlPSEwLHQuZGVmYXVsdD1sO3ZhciBwPW4oMTEpLGQ9big2NCksZj1yKGQpLGg9bigx
MTkpLHY9cihoKSxtPW4oMTIwKSx5PXIobSksZz1uKDY1KSxiPShyKGcpLG4oMzUpKSxfPShyKGIp
LG4oMTExKSksQz1yKF8pLEU9bigxMTIpLHc9cihFKSxUPWZ1bmN0aW9uKGUpe3JldHVybnt9fSxQ
PWZ1bmN0aW9uKGUpe3JldHVybntkaXNwYXRjaDplfX0seD1mdW5jdGlvbihlLHQsbil7cmV0dXJu
IGMoe30sbixlLHQpfSxPPXt2YWx1ZTpudWxsfSxTPTB9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIG4oZSx0KXtpZihlPT09dClyZXR1cm4hMDt2YXIgbj1PYmplY3Qua2V5cyhl
KSxyPU9iamVjdC5rZXlzKHQpO2lmKG4ubGVuZ3RoIT09ci5sZW5ndGgpcmV0dXJuITE7Zm9yKHZh
ciBvPU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHksaT0wO2k8bi5sZW5ndGg7aSsrKWlm
KCFvLmNhbGwodCxuW2ldKXx8ZVtuW2ldXSE9PXRbbltpXV0pcmV0dXJuITE7cmV0dXJuITB9dC5f
X2VzTW9kdWxlPSEwLHQuZGVmYXVsdD1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybigwLG8uYmluZEFjdGlvbkNyZWF0
b3JzKShlLHQpfX10Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PXI7dmFyIG89bigzMil9LGZ1bmN0
aW9uKGUsdCxuKXsidW5kZWZpbmVkIj09dHlwZW9mIFByb21pc2UmJihuKDEzNSkuZW5hYmxlKCks
d2luZG93LlByb21pc2U9bigxMzQpKSxuKDEzNyksT2JqZWN0LmFzc2lnbj1uKDEzMyl9LGZ1bmN0
aW9uKGUsdCl7KGZ1bmN0aW9uKHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3UubGVuZ3Ro
fHwoYSgpLHM9ITApLHVbdS5sZW5ndGhdPWV9ZnVuY3Rpb24gcigpe2Zvcig7bDx1Lmxlbmd0aDsp
e3ZhciBlPWw7aWYobCs9MSx1W2VdLmNhbGwoKSxsPmMpe2Zvcih2YXIgdD0wLG49dS5sZW5ndGgt
bDt0PG47dCsrKXVbdF09dVt0K2xdO3UubGVuZ3RoLT1sLGw9MH19dS5sZW5ndGg9MCxsPTAscz0h
MX1mdW5jdGlvbiBvKGUpe3ZhciB0PTEsbj1uZXcgZChlKSxyPWRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCIiKTtyZXR1cm4gbi5vYnNlcnZlKHIse2NoYXJhY3RlckRhdGE6ITB9KSxmdW5jdGlvbigp
e3Q9LXQsci5kYXRhPXR9fWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGZ1bmN0aW9uKCl7ZnVuY3Rpb24g
dCgpe2NsZWFyVGltZW91dChuKSxjbGVhckludGVydmFsKHIpLGUoKX12YXIgbj1zZXRUaW1lb3V0
KHQsMCkscj1zZXRJbnRlcnZhbCh0LDUwKX19ZS5leHBvcnRzPW47dmFyIGEsdT1bXSxzPSExLGw9
MCxjPTEwMjQscD0idW5kZWZpbmVkIiE9dHlwZW9mIHQ/dDpzZWxmLGQ9cC5NdXRhdGlvbk9ic2Vy
dmVyfHxwLldlYktpdE11dGF0aW9uT2JzZXJ2ZXI7YT0iZnVuY3Rpb24iPT10eXBlb2YgZD9vKHIp
Omkociksbi5yZXF1ZXN0Rmx1c2g9YSxuLm1ha2VSZXF1ZXN0Q2FsbEZyb21UaW1lcj1pfSkuY2Fs
bCh0LGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9KCkpfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lm
KG51bGwhPWUpZm9yKHZhciBuIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5j
YWxsKGUsbikmJih0W25dPWVbbl0pO3JldHVybiB0LmRlZmF1bHQ9ZSx0fU9iamVjdC5kZWZpbmVQ
cm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmNsZWFyQ29tcGxldGVkPXQuY29t
cGxldGVBbGw9dC5jb21wbGV0ZVRvZG89dC5lZGl0VG9kbz10LmRlbGV0ZVRvZG89dC5hZGRUb2Rv
PXZvaWQgMDt2YXIgbz1uKDY3KSxpPXIobyk7dC5hZGRUb2RvPWZ1bmN0aW9uKGUpe3JldHVybnt0
eXBlOmkuQUREX1RPRE8sdGV4dDplfX0sdC5kZWxldGVUb2RvPWZ1bmN0aW9uKGUpe3JldHVybnt0
eXBlOmkuREVMRVRFX1RPRE8saWQ6ZX19LHQuZWRpdFRvZG89ZnVuY3Rpb24oZSx0KXtyZXR1cm57
dHlwZTppLkVESVRfVE9ETyxpZDplLHRleHQ6dH19LHQuY29tcGxldGVUb2RvPWZ1bmN0aW9uKGUp
e3JldHVybnt0eXBlOmkuQ09NUExFVEVfVE9ETyxpZDplfX0sdC5jb21wbGV0ZUFsbD1mdW5jdGlv
bigpe3JldHVybnt0eXBlOmkuQ09NUExFVEVfQUxMfX0sdC5jbGVhckNvbXBsZXRlZD1mdW5jdGlv
bigpe3JldHVybnt0eXBlOmkuQ0xFQVJfQ09NUExFVEVEfX19LGZ1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6
ZX19ZnVuY3Rpb24gbyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJy
b3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGkoZSx0KXtp
ZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlz
ZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlw
ZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH1mdW5jdGlvbiBhKGUsdCl7aWYoImZ1bmN0
aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJl
c3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7
ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3Zh
bHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9i
amVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9f
Xz10KX1mdW5jdGlvbiB1KGUsdCxuKXtyZXR1cm4gdCBpbiBlP09iamVjdC5kZWZpbmVQcm9wZXJ0
eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1cmFibGU6ITAsd3JpdGFibGU6ITB9
KTplW3RdPW4sZX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEw
fSk7dmFyIHMsbD1mdW5jdGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVu
Z3RoO24rKyl7dmFyIHI9dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZp
Z3VyYWJsZT0hMCwidmFsdWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eShlLHIua2V5LHIpfX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJv
dG90eXBlLG4pLHImJmUodCxyKSx0fX0oKSxjPW4oMTEpLHA9cihjKSxkPW4oMzMpLGY9cihkKSxo
PW4oNjgpLHY9KHM9e30sdShzLGguU0hPV19BTEwsIkFsbCIpLHUocyxoLlNIT1dfQUNUSVZFLCJB
Y3RpdmUiKSx1KHMsaC5TSE9XX0NPTVBMRVRFRCwiQ29tcGxldGVkIikscyksbT1mdW5jdGlvbihl
KXtmdW5jdGlvbiB0KCl7cmV0dXJuIG8odGhpcyx0KSxpKHRoaXMsKHQuX19wcm90b19ffHxPYmpl
Y3QuZ2V0UHJvdG90eXBlT2YodCkpLmFwcGx5KHRoaXMsYXJndW1lbnRzKSl9cmV0dXJuIGEodCxl
KSxsKHQsW3trZXk6InJlbmRlclRvZG9Db3VudCIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlz
LnByb3BzLmFjdGl2ZUNvdW50LHQ9MT09PWU/Iml0ZW0iOiJpdGVtcyI7cmV0dXJuIHAuZGVmYXVs
dC5jcmVhdGVFbGVtZW50KCJzcGFuIix7Y2xhc3NOYW1lOiJ0b2RvLWNvdW50In0scC5kZWZhdWx0
LmNyZWF0ZUVsZW1lbnQoInN0cm9uZyIsbnVsbCxlfHwiTm8iKSwiICIsdCwiIGxlZnQiKX19LHtr
ZXk6InJlbmRlckZpbHRlckxpbmsiLHZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PXZbZV0sbj10aGlz
LnByb3BzLHI9bi5maWx0ZXIsbz1uLm9uU2hvdztyZXR1cm4gcC5kZWZhdWx0LmNyZWF0ZUVsZW1l
bnQoImEiLHtjbGFzc05hbWU6KDAsZi5kZWZhdWx0KSh7c2VsZWN0ZWQ6ZT09PXJ9KSxzdHlsZTp7
Y3Vyc29yOiJwb2ludGVyIn0sb25DbGljazpmdW5jdGlvbigpe3JldHVybiBvKGUpfX0sdCl9fSx7
a2V5OiJyZW5kZXJDbGVhckJ1dHRvbiIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3Bz
LHQ9ZS5jb21wbGV0ZWRDb3VudCxuPWUub25DbGVhckNvbXBsZXRlZDtpZih0PjApcmV0dXJuIHAu
ZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJidXR0b24iLHtjbGFzc05hbWU6ImNsZWFyLWNvbXBsZXRl
ZCIsb25DbGljazpufSwiQ2xlYXIgY29tcGxldGVkIil9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1
bmN0aW9uKCl7dmFyIGU9dGhpcztyZXR1cm4gcC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImZvb3Rl
ciIse2NsYXNzTmFtZToiZm9vdGVyIn0sdGhpcy5yZW5kZXJUb2RvQ291bnQoKSxwLmRlZmF1bHQu
Y3JlYXRlRWxlbWVudCgidWwiLHtjbGFzc05hbWU6ImZpbHRlcnMifSxbaC5TSE9XX0FMTCxoLlNI
T1dfQUNUSVZFLGguU0hPV19DT01QTEVURURdLm1hcChmdW5jdGlvbih0KXtyZXR1cm4gcC5kZWZh
dWx0LmNyZWF0ZUVsZW1lbnQoImxpIix7a2V5OnR9LGUucmVuZGVyRmlsdGVyTGluayh0KSl9KSks
dGhpcy5yZW5kZXJDbGVhckJ1dHRvbigpKX19XSksdH0oYy5Db21wb25lbnQpO20ucHJvcFR5cGVz
PXtjb21wbGV0ZWRDb3VudDpjLlByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxhY3RpdmVDb3Vu
dDpjLlByb3BUeXBlcy5udW1iZXIuaXNSZXF1aXJlZCxmaWx0ZXI6Yy5Qcm9wVHlwZXMuc3RyaW5n
LmlzUmVxdWlyZWQsb25DbGVhckNvbXBsZXRlZDpjLlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQs
b25TaG93OmMuUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZH0sdC5kZWZhdWx0PW19LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxl
P2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93
IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0
aW9uIGkoZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJl
ZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwi
b2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH1mdW5jdGlvbiBhKGUs
dCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3Io
IlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3Qg
Iit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29u
c3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6
ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0
KTplLl9fcHJvdG9fXz10KX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3Zh
bHVlOiEwfSk7dmFyIHU9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0
Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5j
b25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5l
UHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0
LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCkscz1uKDExKSxsPXIocyksYz1uKDY2KSxwPXIo
YyksZD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFyIGUsbixyLGE7byh0aGlzLHQpO2Zvcih2
YXIgdT1hcmd1bWVudHMubGVuZ3RoLHM9QXJyYXkodSksbD0wO2w8dTtsKyspc1tsXT1hcmd1bWVu
dHNbbF07cmV0dXJuIG49cj1pKHRoaXMsKGU9dC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5
cGVPZih0KSkuY2FsbC5hcHBseShlLFt0aGlzXS5jb25jYXQocykpKSxyLmhhbmRsZVNhdmU9ZnVu
Y3Rpb24oZSl7MCE9PWUubGVuZ3RoJiZyLnByb3BzLmFkZFRvZG8oZSl9LGE9bixpKHIsYSl9cmV0
dXJuIGEodCxlKSx1KHQsW3trZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gbC5k
ZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImhlYWRlciIse2NsYXNzTmFtZToiaGVhZGVyIn0sbC5kZWZh
dWx0LmNyZWF0ZUVsZW1lbnQoImgxIixudWxsLCJ0b2RvcyIpLGwuZGVmYXVsdC5jcmVhdGVFbGVt
ZW50KHAuZGVmYXVsdCx7bmV3VG9kbzohMCxvblNhdmU6dGhpcy5oYW5kbGVTYXZlLHBsYWNlaG9s
ZGVyOiJXaGF0IG5lZWRzIHRvIGJlIGRvbmU/In0pKX19XSksdH0ocy5Db21wb25lbnQpO2QucHJv
cFR5cGVzPXthZGRUb2RvOnMuUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZH0sdC5kZWZhdWx0PWR9
LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5f
X2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9m
IHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlv
biIpfWZ1bmN0aW9uIGkoZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMg
aGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3Jl
dHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH1mdW5j
dGlvbiBhKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBU
eXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0
aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3Rv
dHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25m
aWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90
eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX1mdW5jdGlvbiB1KGUsdCxuKXtyZXR1cm4gdCBpbiBl
P09iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHQse3ZhbHVlOm4sZW51bWVyYWJsZTohMCxjb25maWd1
cmFibGU6ITAsd3JpdGFibGU6ITB9KTplW3RdPW4sZX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwi
X19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHMsbD1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihl
KXsKLWZvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0
XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixy
KSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LGM9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9y
KHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVy
YWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxP
YmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXty
ZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCkscD1uKDExKSxkPXIocCks
Zj1uKDEyNyksaD1yKGYpLHY9bigxMjQpLG09cih2KSx5PW4oNjgpLGc9KHM9e30sdShzLHkuU0hP
V19BTEwsZnVuY3Rpb24oKXtyZXR1cm4hMH0pLHUocyx5LlNIT1dfQUNUSVZFLGZ1bmN0aW9uKGUp
e3JldHVybiFlLmNvbXBsZXRlZH0pLHUocyx5LlNIT1dfQ09NUExFVEVELGZ1bmN0aW9uKGUpe3Jl
dHVybiBlLmNvbXBsZXRlZH0pLHMpLGI9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlLG4s
cixhO28odGhpcyx0KTtmb3IodmFyIHU9YXJndW1lbnRzLmxlbmd0aCxzPUFycmF5KHUpLGw9MDts
PHU7bCsrKXNbbF09YXJndW1lbnRzW2xdO3JldHVybiBuPXI9aSh0aGlzLChlPXQuX19wcm90b19f
fHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KHMp
KSksci5zdGF0ZT17ZmlsdGVyOnkuU0hPV19BTEx9LHIuaGFuZGxlQ2xlYXJDb21wbGV0ZWQ9ZnVu
Y3Rpb24oKXtyLnByb3BzLmFjdGlvbnMuY2xlYXJDb21wbGV0ZWQoKX0sci5oYW5kbGVTaG93PWZ1
bmN0aW9uKGUpe3Iuc2V0U3RhdGUoe2ZpbHRlcjplfSl9LGE9bixpKHIsYSl9cmV0dXJuIGEodCxl
KSxjKHQsW3trZXk6InJlbmRlclRvZ2dsZUFsbCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhp
cy5wcm9wcyxuPXQudG9kb3Mscj10LmFjdGlvbnM7aWYobi5sZW5ndGg+MClyZXR1cm4gZC5kZWZh
dWx0LmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7Y2xhc3NOYW1lOiJ0b2dnbGUtYWxsIix0eXBlOiJj
aGVja2JveCIsY2hlY2tlZDplPT09bi5sZW5ndGgsb25DaGFuZ2U6ci5jb21wbGV0ZUFsbH0pfX0s
e2tleToicmVuZGVyRm9vdGVyIix2YWx1ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLnByb3BzLnRv
ZG9zLG49dGhpcy5zdGF0ZS5maWx0ZXIscj10Lmxlbmd0aC1lO2lmKHQubGVuZ3RoKXJldHVybiBk
LmRlZmF1bHQuY3JlYXRlRWxlbWVudChtLmRlZmF1bHQse2NvbXBsZXRlZENvdW50OmUsYWN0aXZl
Q291bnQ6cixmaWx0ZXI6bixvbkNsZWFyQ29tcGxldGVkOnRoaXMuaGFuZGxlQ2xlYXJDb21wbGV0
ZWQuYmluZCh0aGlzKSxvblNob3c6dGhpcy5oYW5kbGVTaG93LmJpbmQodGhpcyl9KX19LHtrZXk6
InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnByb3BzLHQ9ZS50b2RvcyxuPWUu
YWN0aW9ucyxyPXRoaXMuc3RhdGUuZmlsdGVyLG89dC5maWx0ZXIoZ1tyXSksaT10LnJlZHVjZShm
dW5jdGlvbihlLHQpe3JldHVybiB0LmNvbXBsZXRlZD9lKzE6ZX0sMCk7cmV0dXJuIGQuZGVmYXVs
dC5jcmVhdGVFbGVtZW50KCJzZWN0aW9uIix7Y2xhc3NOYW1lOiJtYWluIn0sdGhpcy5yZW5kZXJU
b2dnbGVBbGwoaSksZC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInVsIix7Y2xhc3NOYW1lOiJ0b2Rv
LWxpc3QifSxvLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQo
aC5kZWZhdWx0LGwoe2tleTplLmlkLHRvZG86ZX0sbikpfSkpLHRoaXMucmVuZGVyRm9vdGVyKGkp
KX19XSksdH0ocC5Db21wb25lbnQpO2IucHJvcFR5cGVzPXt0b2RvczpwLlByb3BUeXBlcy5hcnJh
eS5pc1JlcXVpcmVkLGFjdGlvbnM6cC5Qcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWR9LHQuZGVm
YXVsdD1ifSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJu
IGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIG8oZSx0KXtpZighKGUgaW5z
dGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEg
ZnVuY3Rpb24iKX1mdW5jdGlvbiBpKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9y
KCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxs
ZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9l
OnR9ZnVuY3Rpb24gYShlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJv
dyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3Ig
YSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYm
dC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6
ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNl
dFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQs
Il9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQp
e2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVu
dW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0h
MCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4s
cil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLHM9bigxMSksbD1y
KHMpLGM9bigzMykscD1yKGMpLGQ9big2NiksZj1yKGQpLGg9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24g
dCgpe3ZhciBlLG4scixhO28odGhpcyx0KTtmb3IodmFyIHU9YXJndW1lbnRzLmxlbmd0aCxzPUFy
cmF5KHUpLGw9MDtsPHU7bCsrKXNbbF09YXJndW1lbnRzW2xdO3JldHVybiBuPXI9aSh0aGlzLChl
PXQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwuYXBwbHkoZSxbdGhp
c10uY29uY2F0KHMpKSksci5zdGF0ZT17ZWRpdGluZzohMX0sci5oYW5kbGVEb3VibGVDbGljaz1m
dW5jdGlvbigpe3Iuc2V0U3RhdGUoe2VkaXRpbmc6ITB9KX0sci5oYW5kbGVTYXZlPWZ1bmN0aW9u
KGUsdCl7MD09PXQubGVuZ3RoP3IucHJvcHMuZGVsZXRlVG9kbyhlKTpyLnByb3BzLmVkaXRUb2Rv
KGUsdCksci5zZXRTdGF0ZSh7ZWRpdGluZzohMX0pfSxhPW4saShyLGEpfXJldHVybiBhKHQsZSks
dSh0LFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJv
cHMsbj10LnRvZG8scj10LmNvbXBsZXRlVG9kbyxvPXQuZGVsZXRlVG9kbyxpPXZvaWQgMDtyZXR1
cm4gaT10aGlzLnN0YXRlLmVkaXRpbmc/bC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoZi5kZWZhdWx0
LHt0ZXh0Om4udGV4dCxlZGl0aW5nOnRoaXMuc3RhdGUuZWRpdGluZyxvblNhdmU6ZnVuY3Rpb24o
dCl7cmV0dXJuIGUuaGFuZGxlU2F2ZShuLmlkLHQpfX0pOmwuZGVmYXVsdC5jcmVhdGVFbGVtZW50
KCJkaXYiLHtjbGFzc05hbWU6InZpZXcifSxsLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiaW5wdXQi
LHtjbGFzc05hbWU6InRvZ2dsZSIsdHlwZToiY2hlY2tib3giLGNoZWNrZWQ6bi5jb21wbGV0ZWQs
b25DaGFuZ2U6ZnVuY3Rpb24oKXtyZXR1cm4gcihuLmlkKX19KSxsLmRlZmF1bHQuY3JlYXRlRWxl
bWVudCgibGFiZWwiLHtvbkRvdWJsZUNsaWNrOnRoaXMuaGFuZGxlRG91YmxlQ2xpY2t9LG4udGV4
dCksbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImJ1dHRvbiIse2NsYXNzTmFtZToiZGVzdHJveSIs
b25DbGljazpmdW5jdGlvbigpe3JldHVybiBvKG4uaWQpfX0pKSxsLmRlZmF1bHQuY3JlYXRlRWxl
bWVudCgibGkiLHtjbGFzc05hbWU6KDAscC5kZWZhdWx0KSh7Y29tcGxldGVkOm4uY29tcGxldGVk
LGVkaXRpbmc6dGhpcy5zdGF0ZS5lZGl0aW5nfSl9LGkpfX1dKSx0fShzLkNvbXBvbmVudCk7aC5w
cm9wVHlwZXM9e3RvZG86cy5Qcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWQsZWRpdFRvZG86cy5Q
cm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLGRlbGV0ZVRvZG86cy5Qcm9wVHlwZXMuZnVuYy5pc1Jl
cXVpcmVkLGNvbXBsZXRlVG9kbzpzLlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWR9LHQuZGVmYXVs
dD1ofSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYoZSYmZS5f
X2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpT2Jq
ZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbikmJih0W25dPWVbbl0pO3JldHVy
biB0LmRlZmF1bHQ9ZSx0fWZ1bmN0aW9uIG8oZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntk
ZWZhdWx0OmV9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9
KTt2YXIgaT1uKDExKSxhPW8oaSksdT1uKDMyKSxzPW4oNjMpLGw9bigxMjUpLGM9byhsKSxwPW4o
MTI2KSxkPW8ocCksZj1uKDEyMyksaD1yKGYpLHY9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50b2Rvcyxu
PWUuYWN0aW9ucztyZXR1cm4gYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImRpdiIsbnVsbCxhLmRl
ZmF1bHQuY3JlYXRlRWxlbWVudChjLmRlZmF1bHQse2FkZFRvZG86bi5hZGRUb2RvfSksYS5kZWZh
dWx0LmNyZWF0ZUVsZW1lbnQoZC5kZWZhdWx0LHt0b2Rvczp0LGFjdGlvbnM6bn0pKX07di5wcm9w
VHlwZXM9e3RvZG9zOmkuUHJvcFR5cGVzLmFycmF5LmlzUmVxdWlyZWQsYWN0aW9uczppLlByb3BU
eXBlcy5vYmplY3QuaXNSZXF1aXJlZH07dmFyIG09ZnVuY3Rpb24oZSl7cmV0dXJue3RvZG9zOmUu
dG9kb3N9fSx5PWZ1bmN0aW9uKGUpe3JldHVybnthY3Rpb25zOigwLHUuYmluZEFjdGlvbkNyZWF0
b3JzKShoLGUpfX07dC5kZWZhdWx0PSgwLHMuY29ubmVjdCkobSx5KSh2KX0sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7
ZGVmYXVsdDplfX12YXIgbz1uKDExKSxpPXIobyksYT1uKDExNiksdT1uKDMyKSxzPW4oNjMpLGw9
bigxMjgpLGM9cihsKSxwPW4oMTMwKSxkPXIocCk7bigxMzIpO3ZhciBmPSgwLHUuY3JlYXRlU3Rv
cmUpKGQuZGVmYXVsdCk7KDAsYS5yZW5kZXIpKGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHMuUHJv
dmlkZXIse3N0b3JlOmZ9LGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGMuZGVmYXVsdCxudWxsKSks
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJvb3QiKSl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19
T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvPW4o
MzIpLGk9bigxMzEpLGE9cihpKSx1PSgwLG8uY29tYmluZVJlZHVjZXJzKSh7dG9kb3M6YS5kZWZh
dWx0fSk7dC5kZWZhdWx0PXV9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlKXtpZihBcnJheS5pc0FycmF5KGUpKXtmb3IodmFyIHQ9MCxuPUFycmF5KGUubGVuZ3RoKTt0
PGUubGVuZ3RoO3QrKyluW3RdPWVbdF07cmV0dXJuIG59cmV0dXJuIEFycmF5LmZyb20oZSl9ZnVu
Y3Rpb24gbygpe3ZhciBlPWFyZ3VtZW50cy5sZW5ndGg8PTB8fHZvaWQgMD09PWFyZ3VtZW50c1sw
XT9zOmFyZ3VtZW50c1swXSx0PWFyZ3VtZW50c1sxXSxuPWZ1bmN0aW9uKCl7c3dpdGNoKHQudHlw
ZSl7Y2FzZSB1LkFERF9UT0RPOnJldHVybnt2Olt7aWQ6ZS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXty
ZXR1cm4gTWF0aC5tYXgodC5pZCxlKX0sLTEpKzEsY29tcGxldGVkOiExLHRleHQ6dC50ZXh0fV0u
Y29uY2F0KHIoZSkpfTtjYXNlIHUuREVMRVRFX1RPRE86cmV0dXJue3Y6ZS5maWx0ZXIoZnVuY3Rp
b24oZSl7cmV0dXJuIGUuaWQhPT10LmlkfSl9O2Nhc2UgdS5FRElUX1RPRE86cmV0dXJue3Y6ZS5t
YXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWQ9PT10LmlkP2Eoe30sZSx7dGV4dDp0LnRleHR9KTpl
fSl9O2Nhc2UgdS5DT01QTEVURV9UT0RPOnJldHVybnt2OmUubWFwKGZ1bmN0aW9uKGUpe3JldHVy
biBlLmlkPT09dC5pZD9hKHt9LGUse2NvbXBsZXRlZDohZS5jb21wbGV0ZWR9KTplfSl9O2Nhc2Ug
dS5DT01QTEVURV9BTEw6dmFyIG49ZS5ldmVyeShmdW5jdGlvbihlKXtyZXR1cm4gZS5jb21wbGV0
ZWR9KTtyZXR1cm57djplLm1hcChmdW5jdGlvbihlKXtyZXR1cm4gYSh7fSxlLHtjb21wbGV0ZWQ6
IW59KX0pfTtjYXNlIHUuQ0xFQVJfQ09NUExFVEVEOnJldHVybnt2OmUuZmlsdGVyKGZ1bmN0aW9u
KGUpe3JldHVybiBlLmNvbXBsZXRlZD09PSExfSl9O2RlZmF1bHQ6cmV0dXJue3Y6ZX19fSgpO2lm
KCJvYmplY3QiPT09KCJ1bmRlZmluZWQiPT10eXBlb2Ygbj8idW5kZWZpbmVkIjppKG4pKSlyZXR1
cm4gbi52fU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2
YXIgaT0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5p
dGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBl
JiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sPyJzeW1i
b2wiOnR5cGVvZiBlfSxhPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8
YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilP
YmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0
dXJuIGV9O3QuZGVmYXVsdD1vO3ZhciB1PW4oNjcpLHM9W119LGZ1bmN0aW9uKGUsdCl7fSw0LGZ1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1uZXcgbyhvLl82
MSk7cmV0dXJuIHQuXzgxPTEsdC5fNjU9ZSx0fXZhciBvPW4oNjkpO2UuZXhwb3J0cz1vO3ZhciBp
PXIoITApLGE9cighMSksdT1yKG51bGwpLHM9cih2b2lkIDApLGw9cigwKSxjPXIoIiIpO28ucmVz
b2x2ZT1mdW5jdGlvbihlKXtpZihlIGluc3RhbmNlb2YgbylyZXR1cm4gZTtpZihudWxsPT09ZSly
ZXR1cm4gdTtpZih2b2lkIDA9PT1lKXJldHVybiBzO2lmKGU9PT0hMClyZXR1cm4gaTtpZihlPT09
ITEpcmV0dXJuIGE7aWYoMD09PWUpcmV0dXJuIGw7aWYoIiI9PT1lKXJldHVybiBjO2lmKCJvYmpl
Y3QiPT10eXBlb2YgZXx8ImZ1bmN0aW9uIj09dHlwZW9mIGUpdHJ5e3ZhciB0PWUudGhlbjtpZigi
ZnVuY3Rpb24iPT10eXBlb2YgdClyZXR1cm4gbmV3IG8odC5iaW5kKGUpKX1jYXRjaChuKXtyZXR1
cm4gbmV3IG8oZnVuY3Rpb24oZSx0KXt0KG4pfSl9cmV0dXJuIHIoZSl9LG8uYWxsPWZ1bmN0aW9u
KGUpe3ZhciB0PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpO3JldHVybiBuZXcgbyhmdW5j
dGlvbihlLG4pe2Z1bmN0aW9uIHIoYSx1KXtpZih1JiYoIm9iamVjdCI9PXR5cGVvZiB1fHwiZnVu
Y3Rpb24iPT10eXBlb2YgdSkpe2lmKHUgaW5zdGFuY2VvZiBvJiZ1LnRoZW49PT1vLnByb3RvdHlw
ZS50aGVuKXtmb3IoOzM9PT11Ll84MTspdT11Ll82NTtyZXR1cm4gMT09PXUuXzgxP3IoYSx1Ll82
NSk6KDI9PT11Ll84MSYmbih1Ll82NSksdm9pZCB1LnRoZW4oZnVuY3Rpb24oZSl7cihhLGUpfSxu
KSl9dmFyIHM9dS50aGVuO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBzKXt2YXIgbD1uZXcgbyhzLmJp
bmQodSkpO3JldHVybiB2b2lkIGwudGhlbihmdW5jdGlvbihlKXtyKGEsZSl9LG4pfX10W2FdPXUs
MD09PS0taSYmZSh0KX1pZigwPT09dC5sZW5ndGgpcmV0dXJuIGUoW10pO2Zvcih2YXIgaT10Lmxl
bmd0aCxhPTA7YTx0Lmxlbmd0aDthKyspcihhLHRbYV0pfSl9LG8ucmVqZWN0PWZ1bmN0aW9uKGUp
e3JldHVybiBuZXcgbyhmdW5jdGlvbih0LG4pe24oZSl9KX0sby5yYWNlPWZ1bmN0aW9uKGUpe3Jl
dHVybiBuZXcgbyhmdW5jdGlvbih0LG4pe2UuZm9yRWFjaChmdW5jdGlvbihlKXtvLnJlc29sdmUo
ZSkudGhlbih0LG4pfSl9KX0sby5wcm90b3R5cGUuY2F0Y2g9ZnVuY3Rpb24oZSl7cmV0dXJuIHRo
aXMudGhlbihudWxsLGUpfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KCl7bD0hMSx1Ll8xMD1udWxsLHUuXzk3PW51bGx9ZnVuY3Rpb24gbyhlKXtmdW5jdGlvbiB0KHQp
eyhlLmFsbFJlamVjdGlvbnN8fGEocFt0XS5lcnJvcixlLndoaXRlbGlzdHx8cykpJiYocFt0XS5k
aXNwbGF5SWQ9YysrLGUub25VbmhhbmRsZWQ/KHBbdF0ubG9nZ2VkPSEwLGUub25VbmhhbmRsZWQo
cFt0XS5kaXNwbGF5SWQscFt0XS5lcnJvcikpOihwW3RdLmxvZ2dlZD0hMCxpKHBbdF0uZGlzcGxh
eUlkLHBbdF0uZXJyb3IpKSl9ZnVuY3Rpb24gbih0KXtwW3RdLmxvZ2dlZCYmKGUub25IYW5kbGVk
P2Uub25IYW5kbGVkKHBbdF0uZGlzcGxheUlkLHBbdF0uZXJyb3IpOnBbdF0ub25VbmhhbmRsZWR8
fChjb25zb2xlLndhcm4oIlByb21pc2UgUmVqZWN0aW9uIEhhbmRsZWQgKGlkOiAiK3BbdF0uZGlz
cGxheUlkKyIpOiIpLGNvbnNvbGUud2FybignICBUaGlzIG1lYW5zIHlvdSBjYW4gaWdub3JlIGFu
eSBwcmV2aW91cyBtZXNzYWdlcyBvZiB0aGUgZm9ybSAiUG9zc2libGUgVW5oYW5kbGVkIFByb21p
c2UgUmVqZWN0aW9uIiB3aXRoIGlkICcrcFt0XS5kaXNwbGF5SWQrIi4iKSkpfWU9ZXx8e30sbCYm
cigpLGw9ITA7dmFyIG89MCxjPTAscD17fTt1Ll8xMD1mdW5jdGlvbihlKXsyPT09ZS5fODEmJnBb
ZS5fNzJdJiYocFtlLl83Ml0ubG9nZ2VkP24oZS5fNzIpOmNsZWFyVGltZW91dChwW2UuXzcyXS50
aW1lb3V0KSxkZWxldGUgcFtlLl83Ml0pfSx1Ll85Nz1mdW5jdGlvbihlLG4pezA9PT1lLl80NSYm
KGUuXzcyPW8rKyxwW2UuXzcyXT17ZGlzcGxheUlkOm51bGwsZXJyb3I6bix0aW1lb3V0OnNldFRp
bWVvdXQodC5iaW5kKG51bGwsZS5fNzIpLGEobixzKT8xMDA6MmUzKSxsb2dnZWQ6ITF9KX19ZnVu
Y3Rpb24gaShlLHQpe2NvbnNvbGUud2FybigiUG9zc2libGUgVW5oYW5kbGVkIFByb21pc2UgUmVq
ZWN0aW9uIChpZDogIitlKyIpOiIpO3ZhciBuPSh0JiYodC5zdGFja3x8dCkpKyIiO24uc3BsaXQo
IlxuIikuZm9yRWFjaChmdW5jdGlvbihlKXtjb25zb2xlLndhcm4oIiAgIitlKX0pfWZ1bmN0aW9u
IGEoZSx0KXtyZXR1cm4gdC5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiBlIGluc3RhbmNlb2YgdH0p
fXZhciB1PW4oNjkpLHM9W1JlZmVyZW5jZUVycm9yLFR5cGVFcnJvcixSYW5nZUVycm9yXSxsPSEx
O3QuZGlzYWJsZT1yLHQuZW5hYmxlPW99LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9u
KGUpe3JldHVybiBlLndlYnBhY2tQb2x5ZmlsbHx8KGUuZGVwcmVjYXRlPWZ1bmN0aW9uKCl7fSxl
LnBhdGhzPVtdLGUuY2hpbGRyZW49W10sZS53ZWJwYWNrUG9seWZpbGw9MSksZX19LGZ1bmN0aW9u
KGUsdCl7IWZ1bmN0aW9uKGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUpe2lmKCJzdHJpbmci
IT10eXBlb2YgZSYmKGU9U3RyaW5nKGUpKSwvW15hLXowLTlcLSMkJSYnKisuXF5fYHx+XS9pLnRl
c3QoZSkpdGhyb3cgbmV3IFR5cGVFcnJvcigiSW52YWxpZCBjaGFyYWN0ZXIgaW4gaGVhZGVyIGZp
ZWxkIG5hbWUiKTtyZXR1cm4gZS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIG4oZSl7cmV0dXJuInN0
cmluZyIhPXR5cGVvZiBlJiYoZT1TdHJpbmcoZSkpLGV9ZnVuY3Rpb24gcihlKXt2YXIgdD17bmV4
dDpmdW5jdGlvbigpe3ZhciB0PWUuc2hpZnQoKTtyZXR1cm57ZG9uZTp2b2lkIDA9PT10LHZhbHVl
OnR9fX07cmV0dXJuIHYuaXRlcmFibGUmJih0W1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXty
ZXR1cm4gdH0pLHR9ZnVuY3Rpb24gbyhlKXt0aGlzLm1hcD17fSxlIGluc3RhbmNlb2Ygbz9lLmZv
ckVhY2goZnVuY3Rpb24oZSx0KXt0aGlzLmFwcGVuZCh0LGUpfSx0aGlzKTplJiZPYmplY3QuZ2V0
T3duUHJvcGVydHlOYW1lcyhlKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3RoaXMuYXBwZW5kKHQsZVt0
XSl9LHRoaXMpfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIGUuYm9keVVzZWQ/UHJvbWlzZS5yZWplY3Qo
bmV3IFR5cGVFcnJvcigiQWxyZWFkeSByZWFkIikpOnZvaWQoZS5ib2R5VXNlZD0hMCl9ZnVuY3Rp
b24gYShlKXtyZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24odCxuKXtlLm9ubG9hZD1mdW5jdGlv
bigpe3QoZS5yZXN1bHQpfSxlLm9uZXJyb3I9ZnVuY3Rpb24oKXtuKGUuZXJyb3IpfX0pfWZ1bmN0
aW9uIHUoZSl7dmFyIHQ9bmV3IEZpbGVSZWFkZXI7cmV0dXJuIHQucmVhZEFzQXJyYXlCdWZmZXIo
ZSksYSh0KX1mdW5jdGlvbiBzKGUpe3ZhciB0PW5ldyBGaWxlUmVhZGVyO3JldHVybiB0LnJlYWRB
c1RleHQoZSksYSh0KX1mdW5jdGlvbiBsKCl7cmV0dXJuIHRoaXMuYm9keVVzZWQ9ITEsdGhpcy5f
aW5pdEJvZHk9ZnVuY3Rpb24oZSl7aWYodGhpcy5fYm9keUluaXQ9ZSwic3RyaW5nIj09dHlwZW9m
IGUpdGhpcy5fYm9keVRleHQ9ZTtlbHNlIGlmKHYuYmxvYiYmQmxvYi5wcm90b3R5cGUuaXNQcm90
b3R5cGVPZihlKSl0aGlzLl9ib2R5QmxvYj1lO2Vsc2UgaWYodi5mb3JtRGF0YSYmRm9ybURhdGEu
cHJvdG90eXBlLmlzUHJvdG90eXBlT2YoZSkpdGhpcy5fYm9keUZvcm1EYXRhPWU7ZWxzZSBpZih2
LnNlYXJjaFBhcmFtcyYmVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGUp
KXRoaXMuX2JvZHlUZXh0PWUudG9TdHJpbmcoKTtlbHNlIGlmKGUpe2lmKCF2LmFycmF5QnVmZmVy
fHwhQXJyYXlCdWZmZXIucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoZSkpdGhyb3cgbmV3IEVycm9y
KCJ1bnN1cHBvcnRlZCBCb2R5SW5pdCB0eXBlIil9ZWxzZSB0aGlzLl9ib2R5VGV4dD0iIjt0aGlz
LmhlYWRlcnMuZ2V0KCJjb250ZW50LXR5cGUiKXx8KCJzdHJpbmciPT10eXBlb2YgZT90aGlzLmhl
YWRlcnMuc2V0KCJjb250ZW50LXR5cGUiLCJ0ZXh0L3BsYWluO2NoYXJzZXQ9VVRGLTgiKTp0aGlz
Ll9ib2R5QmxvYiYmdGhpcy5fYm9keUJsb2IudHlwZT90aGlzLmhlYWRlcnMuc2V0KCJjb250ZW50
LXR5cGUiLHRoaXMuX2JvZHlCbG9iLnR5cGUpOnYuc2VhcmNoUGFyYW1zJiZVUkxTZWFyY2hQYXJh
bXMucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoZSkmJnRoaXMuaGVhZGVycy5zZXQoImNvbnRlbnQt
dHlwZSIsImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04Iikp
fSx2LmJsb2I/KHRoaXMuYmxvYj1mdW5jdGlvbigpe3ZhciBlPWkodGhpcyk7aWYoZSlyZXR1cm4g
ZTtpZih0aGlzLl9ib2R5QmxvYilyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlCbG9i
KTtpZih0aGlzLl9ib2R5Rm9ybURhdGEpdGhyb3cgbmV3IEVycm9yKCJjb3VsZCBub3QgcmVhZCBG
b3JtRGF0YSBib2R5IGFzIGJsb2IiKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBCbG9iKFt0
aGlzLl9ib2R5VGV4dF0pKX0sdGhpcy5hcnJheUJ1ZmZlcj1mdW5jdGlvbigpe3JldHVybiB0aGlz
LmJsb2IoKS50aGVuKHUpfSx0aGlzLnRleHQ9ZnVuY3Rpb24oKXt2YXIgZT1pKHRoaXMpO2lmKGUp
cmV0dXJuIGU7aWYodGhpcy5fYm9keUJsb2IpcmV0dXJuIHModGhpcy5fYm9keUJsb2IpO2lmKHRo
aXMuX2JvZHlGb3JtRGF0YSl0aHJvdyBuZXcgRXJyb3IoImNvdWxkIG5vdCByZWFkIEZvcm1EYXRh
IGJvZHkgYXMgdGV4dCIpO3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keVRleHQpfSk6
dGhpcy50ZXh0PWZ1bmN0aW9uKCl7dmFyIGU9aSh0aGlzKTtyZXR1cm4gZT9lOlByb21pc2UucmVz
b2x2ZSh0aGlzLl9ib2R5VGV4dCl9LHYuZm9ybURhdGEmJih0aGlzLmZvcm1EYXRhPWZ1bmN0aW9u
KCl7cmV0dXJuIHRoaXMudGV4dCgpLnRoZW4oZCl9KSx0aGlzLmpzb249ZnVuY3Rpb24oKXtyZXR1
cm4gdGhpcy50ZXh0KCkudGhlbihKU09OLnBhcnNlKX0sdGhpc31mdW5jdGlvbiBjKGUpe3ZhciB0
PWUudG9VcHBlckNhc2UoKTtyZXR1cm4gbS5pbmRleE9mKHQpPi0xP3Q6ZX1mdW5jdGlvbiBwKGUs
dCl7dD10fHx7fTt2YXIgbj10LmJvZHk7aWYocC5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihlKSl7
aWYoZS5ib2R5VXNlZCl0aHJvdyBuZXcgVHlwZUVycm9yKCJBbHJlYWR5IHJlYWQiKTt0aGlzLnVy
bD1lLnVybCx0aGlzLmNyZWRlbnRpYWxzPWUuY3JlZGVudGlhbHMsdC5oZWFkZXJzfHwodGhpcy5o
ZWFkZXJzPW5ldyBvKGUuaGVhZGVycykpLHRoaXMubWV0aG9kPWUubWV0aG9kLHRoaXMubW9kZT1l
Lm1vZGUsbnx8KG49ZS5fYm9keUluaXQsZS5ib2R5VXNlZD0hMCl9ZWxzZSB0aGlzLnVybD1lO2lm
KHRoaXMuY3JlZGVudGlhbHM9dC5jcmVkZW50aWFsc3x8dGhpcy5jcmVkZW50aWFsc3x8Im9taXQi
LCF0LmhlYWRlcnMmJnRoaXMuaGVhZGVyc3x8KHRoaXMuaGVhZGVycz1uZXcgbyh0LmhlYWRlcnMp
KSx0aGlzLm1ldGhvZD1jKHQubWV0aG9kfHx0aGlzLm1ldGhvZHx8IkdFVCIpLHRoaXMubW9kZT10
Lm1vZGV8fHRoaXMubW9kZXx8bnVsbCx0aGlzLnJlZmVycmVyPW51bGwsKCJHRVQiPT09dGhpcy5t
ZXRob2R8fCJIRUFEIj09PXRoaXMubWV0aG9kKSYmbil0aHJvdyBuZXcgVHlwZUVycm9yKCJCb2R5
IG5vdCBhbGxvd2VkIGZvciBHRVQgb3IgSEVBRCByZXF1ZXN0cyIpO3RoaXMuX2luaXRCb2R5KG4p
fWZ1bmN0aW9uIGQoZSl7dmFyIHQ9bmV3IEZvcm1EYXRhO3JldHVybiBlLnRyaW0oKS5zcGxpdCgi
JiIpLmZvckVhY2goZnVuY3Rpb24oZSl7aWYoZSl7dmFyIG49ZS5zcGxpdCgiPSIpLHI9bi5zaGlm
dCgpLnJlcGxhY2UoL1wrL2csIiAiKSxvPW4uam9pbigiPSIpLnJlcGxhY2UoL1wrL2csIiAiKTt0
LmFwcGVuZChkZWNvZGVVUklDb21wb25lbnQociksZGVjb2RlVVJJQ29tcG9uZW50KG8pKX19KSx0
fWZ1bmN0aW9uIGYoZSl7dmFyIHQ9bmV3IG8sbj0oZS5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKXx8
IiIpLnRyaW0oKS5zcGxpdCgiXG4iKTtyZXR1cm4gbi5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciBu
PWUudHJpbSgpLnNwbGl0KCI6Iikscj1uLnNoaWZ0KCkudHJpbSgpLG89bi5qb2luKCI6IikudHJp
bSgpO3QuYXBwZW5kKHIsbyl9KSx0fWZ1bmN0aW9uIGgoZSx0KXt0fHwodD17fSksdGhpcy50eXBl
PSJkZWZhdWx0Iix0aGlzLnN0YXR1cz10LnN0YXR1cyx0aGlzLm9rPXRoaXMuc3RhdHVzPj0yMDAm
JnRoaXMuc3RhdHVzPDMwMCx0aGlzLnN0YXR1c1RleHQ9dC5zdGF0dXNUZXh0LHRoaXMuaGVhZGVy
cz10LmhlYWRlcnMgaW5zdGFuY2VvZiBvP3QuaGVhZGVyczpuZXcgbyh0LmhlYWRlcnMpLHRoaXMu
dXJsPXQudXJsfHwiIix0aGlzLl9pbml0Qm9keShlKX1pZighZS5mZXRjaCl7dmFyIHY9e3NlYXJj
aFBhcmFtczoiVVJMU2VhcmNoUGFyYW1zImluIGUsaXRlcmFibGU6IlN5bWJvbCJpbiBlJiYiaXRl
cmF0b3IiaW4gU3ltYm9sLGJsb2I6IkZpbGVSZWFkZXIiaW4gZSYmIkJsb2IiaW4gZSYmZnVuY3Rp
b24oKXt0cnl7cmV0dXJuIG5ldyBCbG9iLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKSxmb3JtRGF0
YToiRm9ybURhdGEiaW4gZSxhcnJheUJ1ZmZlcjoiQXJyYXlCdWZmZXIiaW4gZX07by5wcm90b3R5
cGUuYXBwZW5kPWZ1bmN0aW9uKGUscil7ZT10KGUpLHI9bihyKTt2YXIgbz10aGlzLm1hcFtlXTtv
fHwobz1bXSx0aGlzLm1hcFtlXT1vKSxvLnB1c2gocil9LG8ucHJvdG90eXBlLmRlbGV0ZT1mdW5j
dGlvbihlKXtkZWxldGUgdGhpcy5tYXBbdChlKV19LG8ucHJvdG90eXBlLmdldD1mdW5jdGlvbihl
KXt2YXIgbj10aGlzLm1hcFt0KGUpXTtyZXR1cm4gbj9uWzBdOm51bGx9LG8ucHJvdG90eXBlLmdl
dEFsbD1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy5tYXBbdChlKV18fFtdfSxvLnByb3RvdHlwZS5o
YXM9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMubWFwLmhhc093blByb3BlcnR5KHQoZSkpfSxvLnBy
b3RvdHlwZS5zZXQ9ZnVuY3Rpb24oZSxyKXt0aGlzLm1hcFt0KGUpXT1bbihyKV19LG8ucHJvdG90
eXBlLmZvckVhY2g9ZnVuY3Rpb24oZSx0KXtPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlz
Lm1hcCkuZm9yRWFjaChmdW5jdGlvbihuKXt0aGlzLm1hcFtuXS5mb3JFYWNoKGZ1bmN0aW9uKHIp
e2UuY2FsbCh0LHIsbix0aGlzKX0sdGhpcyl9LHRoaXMpfSxvLnByb3RvdHlwZS5rZXlzPWZ1bmN0
aW9uKCl7dmFyIGU9W107cmV0dXJuIHRoaXMuZm9yRWFjaChmdW5jdGlvbih0LG4pe2UucHVzaChu
KX0pLHIoZSl9LG8ucHJvdG90eXBlLnZhbHVlcz1mdW5jdGlvbigpe3ZhciBlPVtdO3JldHVybiB0
aGlzLmZvckVhY2goZnVuY3Rpb24odCl7ZS5wdXNoKHQpfSkscihlKX0sby5wcm90b3R5cGUuZW50
cmllcz1mdW5jdGlvbigpe3ZhciBlPVtdO3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rpb24odCxu
KXtlLnB1c2goW24sdF0pfSkscihlKX0sdi5pdGVyYWJsZSYmKG8ucHJvdG90eXBlW1N5bWJvbC5p
dGVyYXRvcl09by5wcm90b3R5cGUuZW50cmllcyk7dmFyIG09WyJERUxFVEUiLCJHRVQiLCJIRUFE
IiwiT1BUSU9OUyIsIlBPU1QiLCJQVVQiXTtwLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3Jl
dHVybiBuZXcgcCh0aGlzKX0sbC5jYWxsKHAucHJvdG90eXBlKSxsLmNhbGwoaC5wcm90b3R5cGUp
LGgucHJvdG90eXBlLmNsb25lPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBoKHRoaXMuX2JvZHlJbml0
LHtzdGF0dXM6dGhpcy5zdGF0dXMsc3RhdHVzVGV4dDp0aGlzLnN0YXR1c1RleHQsaGVhZGVyczpu
ZXcgbyh0aGlzLmhlYWRlcnMpLHVybDp0aGlzLnVybH0pfSxoLmVycm9yPWZ1bmN0aW9uKCl7dmFy
IGU9bmV3IGgobnVsbCx7c3RhdHVzOjAsc3RhdHVzVGV4dDoiIn0pO3JldHVybiBlLnR5cGU9ImVy
cm9yIixlfTt2YXIgeT1bMzAxLDMwMiwzMDMsMzA3LDMwOF07aC5yZWRpcmVjdD1mdW5jdGlvbihl
LHQpe2lmKHkuaW5kZXhPZih0KT09PS0xKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIHN0
YXR1cyBjb2RlIik7cmV0dXJuIG5ldyBoKG51bGwse3N0YXR1czp0LGhlYWRlcnM6e2xvY2F0aW9u
OmV9fSl9LGUuSGVhZGVycz1vLGUuUmVxdWVzdD1wLGUuUmVzcG9uc2U9aCxlLmZldGNoPWZ1bmN0
aW9uKGUsdCl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uKG4scil7ZnVuY3Rpb24gbygpe3Jl
dHVybiJyZXNwb25zZVVSTCJpbiBhP2EucmVzcG9uc2VVUkw6L15YLVJlcXVlc3QtVVJMOi9tLnRl
c3QoYS5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSk/YS5nZXRSZXNwb25zZUhlYWRlcigiWC1SZXF1
ZXN0LVVSTCIpOnZvaWQgMH12YXIgaTtpPXAucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoZSkmJiF0
P2U6bmV3IHAoZSx0KTt2YXIgYT1uZXcgWE1MSHR0cFJlcXVlc3Q7YS5vbmxvYWQ9ZnVuY3Rpb24o
KXt2YXIgZT17c3RhdHVzOmEuc3RhdHVzLHN0YXR1c1RleHQ6YS5zdGF0dXNUZXh0LGhlYWRlcnM6
ZihhKSx1cmw6bygpfSx0PSJyZXNwb25zZSJpbiBhP2EucmVzcG9uc2U6YS5yZXNwb25zZVRleHQ7
bihuZXcgaCh0LGUpKX0sYS5vbmVycm9yPWZ1bmN0aW9uKCl7cihuZXcgVHlwZUVycm9yKCJOZXR3
b3JrIHJlcXVlc3QgZmFpbGVkIikpfSxhLm9udGltZW91dD1mdW5jdGlvbigpe3IobmV3IFR5cGVF
cnJvcigiTmV0d29yayByZXF1ZXN0IGZhaWxlZCIpKX0sYS5vcGVuKGkubWV0aG9kLGkudXJsLCEw
KSwiaW5jbHVkZSI9PT1pLmNyZWRlbnRpYWxzJiYoYS53aXRoQ3JlZGVudGlhbHM9ITApLCJyZXNw
b25zZVR5cGUiaW4gYSYmdi5ibG9iJiYoYS5yZXNwb25zZVR5cGU9ImJsb2IiKSxpLmhlYWRlcnMu
Zm9yRWFjaChmdW5jdGlvbihlLHQpe2Euc2V0UmVxdWVzdEhlYWRlcih0LGUpfSksYS5zZW5kKCJ1
bmRlZmluZWQiPT10eXBlb2YgaS5fYm9keUluaXQ/bnVsbDppLl9ib2R5SW5pdCl9KX0sZS5mZXRj
aC5wb2x5ZmlsbD0hMH19KCJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMpfSxmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNSksbz1uKDYxKSxpPXtmb2N1c0RPTUNv
bXBvbmVudDpmdW5jdGlvbigpe28oci5nZXROb2RlRnJvbUluc3RhbmNlKHRoaXMpKX19O2UuZXhw
b3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt2YXIgZT13
aW5kb3cub3BlcmE7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlJiYiZnVuY3Rpb24iPT10eXBlb2Yg
ZS52ZXJzaW9uJiZwYXJzZUludChlLnZlcnNpb24oKSwxMCk8PTEyfWZ1bmN0aW9uIG8oZSl7cmV0
dXJuKGUuY3RybEtleXx8ZS5hbHRLZXl8fGUubWV0YUtleSkmJiEoZS5jdHJsS2V5JiZlLmFsdEtl
eSl9ZnVuY3Rpb24gaShlKXtzd2l0Y2goZSl7Y2FzZSBTLnRvcENvbXBvc2l0aW9uU3RhcnQ6cmV0
dXJuIE0uY29tcG9zaXRpb25TdGFydDtjYXNlIFMudG9wQ29tcG9zaXRpb25FbmQ6cmV0dXJuIE0u
Y29tcG9zaXRpb25FbmQ7Y2FzZSBTLnRvcENvbXBvc2l0aW9uVXBkYXRlOnJldHVybiBNLmNvbXBv
c2l0aW9uVXBkYXRlfX1mdW5jdGlvbiBhKGUsdCl7cmV0dXJuIGU9PT1TLnRvcEtleURvd24mJnQu
a2V5Q29kZT09PUN9ZnVuY3Rpb24gdShlLHQpe3N3aXRjaChlKXtjYXNlIFMudG9wS2V5VXA6cmV0
dXJuIF8uaW5kZXhPZih0LmtleUNvZGUpIT09LTE7Y2FzZSBTLnRvcEtleURvd246cmV0dXJuIHQu
a2V5Q29kZSE9PUM7Y2FzZSBTLnRvcEtleVByZXNzOmNhc2UgUy50b3BNb3VzZURvd246Y2FzZSBT
LnRvcEJsdXI6cmV0dXJuITA7ZGVmYXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gcyhlKXt2YXIgdD1l
LmRldGFpbDtyZXR1cm4ib2JqZWN0Ij09dHlwZW9mIHQmJiJkYXRhImluIHQ/dC5kYXRhOm51bGx9
ZnVuY3Rpb24gbChlLHQsbixyKXt2YXIgbyxsO2lmKEU/bz1pKGUpOms/dShlLG4pJiYobz1NLmNv
bXBvc2l0aW9uRW5kKTphKGUsbikmJihvPU0uY29tcG9zaXRpb25TdGFydCksIW8pcmV0dXJuIG51
bGw7UCYmKGt8fG8hPT1NLmNvbXBvc2l0aW9uU3RhcnQ/bz09PU0uY29tcG9zaXRpb25FbmQmJmsm
JihsPWsuZ2V0RGF0YSgpKTprPW0uZ2V0UG9vbGVkKHIpKTt2YXIgYz15LmdldFBvb2xlZChvLHQs
bixyKTtpZihsKWMuZGF0YT1sO2Vsc2V7dmFyIHA9cyhuKTtudWxsIT09cCYmKGMuZGF0YT1wKX1y
ZXR1cm4gaC5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGMpLGN9ZnVuY3Rpb24gYyhlLHQp
e3N3aXRjaChlKXtjYXNlIFMudG9wQ29tcG9zaXRpb25FbmQ6cmV0dXJuIHModCk7Y2FzZSBTLnRv
cEtleVByZXNzOnZhciBuPXQud2hpY2g7cmV0dXJuIG4hPT14P251bGw6KE49ITAsTyk7Y2FzZSBT
LnRvcFRleHRJbnB1dDp2YXIgcj10LmRhdGE7cmV0dXJuIHI9PT1PJiZOP251bGw6cjtkZWZhdWx0
OnJldHVybiBudWxsfX1mdW5jdGlvbiBwKGUsdCl7aWYoayl7aWYoZT09PVMudG9wQ29tcG9zaXRp
b25FbmR8fCFFJiZ1KGUsdCkpe3ZhciBuPWsuZ2V0RGF0YSgpO3JldHVybiBtLnJlbGVhc2Uoayks
az1udWxsLG59cmV0dXJuIG51bGx9c3dpdGNoKGUpe2Nhc2UgUy50b3BQYXN0ZTpyZXR1cm4gbnVs
bDtjYXNlIFMudG9wS2V5UHJlc3M6cmV0dXJuIHQud2hpY2gmJiFvKHQpP1N0cmluZy5mcm9tQ2hh
ckNvZGUodC53aGljaCk6bnVsbDtjYXNlIFMudG9wQ29tcG9zaXRpb25FbmQ6cmV0dXJuIFA/bnVs
bDp0LmRhdGE7ZGVmYXVsdDpyZXR1cm4gbnVsbH19ZnVuY3Rpb24gZChlLHQsbixyKXt2YXIgbztp
ZihvPVQ/YyhlLG4pOnAoZSxuKSwhbylyZXR1cm4gbnVsbDt2YXIgaT1nLmdldFBvb2xlZChNLmJl
Zm9yZUlucHV0LHQsbixyKTtyZXR1cm4gaS5kYXRhPW8saC5hY2N1bXVsYXRlVHdvUGhhc2VEaXNw
YXRjaGVzKGkpLGl9dmFyIGY9bigxMiksaD1uKDIyKSx2PW4oNiksbT1uKDE0NSkseT1uKDE4Myks
Zz1uKDE4NiksYj1uKDE0KSxfPVs5LDEzLDI3LDMyXSxDPTIyOSxFPXYuY2FuVXNlRE9NJiYiQ29t
cG9zaXRpb25FdmVudCJpbiB3aW5kb3csdz1udWxsO3YuY2FuVXNlRE9NJiYiZG9jdW1lbnRNb2Rl
ImluIGRvY3VtZW50JiYodz1kb2N1bWVudC5kb2N1bWVudE1vZGUpO3ZhciBUPXYuY2FuVXNlRE9N
JiYiVGV4dEV2ZW50ImluIHdpbmRvdyYmIXcmJiFyKCksUD12LmNhblVzZURPTSYmKCFFfHx3JiZ3
PjgmJnc8PTExKSx4PTMyLE89U3RyaW5nLmZyb21DaGFyQ29kZSh4KSxTPWYudG9wTGV2ZWxUeXBl
cyxNPXtiZWZvcmVJbnB1dDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Yih7b25C
ZWZvcmVJbnB1dDpudWxsfSksY2FwdHVyZWQ6Yih7b25CZWZvcmVJbnB1dENhcHR1cmU6bnVsbH0p
fSxkZXBlbmRlbmNpZXM6W1MudG9wQ29tcG9zaXRpb25FbmQsUy50b3BLZXlQcmVzcyxTLnRvcFRl
eHRJbnB1dCxTLnRvcFBhc3RlXX0sY29tcG9zaXRpb25FbmQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5h
bWVzOntidWJibGVkOmIoe29uQ29tcG9zaXRpb25FbmQ6bnVsbH0pLGNhcHR1cmVkOmIoe29uQ29t
cG9zaXRpb25FbmRDYXB0dXJlOm51bGx9KX0sZGVwZW5kZW5jaWVzOltTLnRvcEJsdXIsUy50b3BD
b21wb3NpdGlvbkVuZCxTLnRvcEtleURvd24sUy50b3BLZXlQcmVzcyxTLnRvcEtleVVwLFMudG9w
TW91c2VEb3duXX0sY29tcG9zaXRpb25TdGFydDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1
YmJsZWQ6Yih7b25Db21wb3NpdGlvblN0YXJ0Om51bGx9KSxjYXB0dXJlZDpiKHtvbkNvbXBvc2l0
aW9uU3RhcnRDYXB0dXJlOm51bGx9KX0sZGVwZW5kZW5jaWVzOltTLnRvcEJsdXIsUy50b3BDb21w
b3NpdGlvblN0YXJ0LFMudG9wS2V5RG93bixTLnRvcEtleVByZXNzLFMudG9wS2V5VXAsUy50b3BN
b3VzZURvd25dfSxjb21wb3NpdGlvblVwZGF0ZTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1
YmJsZWQ6Yih7b25Db21wb3NpdGlvblVwZGF0ZTpudWxsfSksY2FwdHVyZWQ6Yih7b25Db21wb3Np
dGlvblVwZGF0ZUNhcHR1cmU6bnVsbH0pfSxkZXBlbmRlbmNpZXM6W1MudG9wQmx1cixTLnRvcENv
bXBvc2l0aW9uVXBkYXRlLFMudG9wS2V5RG93bixTLnRvcEtleVByZXNzLFMudG9wS2V5VXAsUy50
b3BNb3VzZURvd25dfX0sTj0hMSxrPW51bGwsUj17ZXZlbnRUeXBlczpNLGV4dHJhY3RFdmVudHM6
ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuW2woZSx0LG4sciksZChlLHQsbixyKV19fTtlLmV4cG9y
dHM9Un0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDcwKSxvPW4oNiksaT0o
big4KSxuKDEwMCksbigxOTMpKSxhPW4oMTA3KSx1PW4oMTEwKSxzPShuKDMpLHUoZnVuY3Rpb24o
ZSl7cmV0dXJuIGEoZSl9KSksbD0hMSxjPSJjc3NGbG9hdCI7aWYoby5jYW5Vc2VET00pe3ZhciBw
PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlO3RyeXtwLmZvbnQ9IiJ9Y2F0Y2go
ZCl7bD0hMH12b2lkIDA9PT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuY3NzRmxvYXQm
JihjPSJzdHlsZUZsb2F0Iil9dmFyIGY9e2NyZWF0ZU1hcmt1cEZvclN0eWxlczpmdW5jdGlvbihl
LHQpe3ZhciBuPSIiO2Zvcih2YXIgciBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkocikpe3ZhciBv
PWVbcl07bnVsbCE9byYmKG4rPXMocikrIjoiLG4rPWkocixvLHQpKyI7Iil9cmV0dXJuIG58fG51
bGx9LHNldFZhbHVlRm9yU3R5bGVzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgbz1lLnN0eWxlO2Zvcih2
YXIgYSBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkoYSkpe3ZhciB1PWkoYSx0W2FdLG4pO2lmKCJm
bG9hdCIhPT1hJiYiY3NzRmxvYXQiIT09YXx8KGE9YyksdSlvW2FdPXU7ZWxzZXt2YXIgcz1sJiZy
LnNob3J0aGFuZFByb3BlcnR5RXhwYW5zaW9uc1thXTtpZihzKWZvcih2YXIgcCBpbiBzKW9bcF09
IiI7ZWxzZSBvW2FdPSIifX19fTtlLmV4cG9ydHM9Zn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PWUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNh
c2UoKTtyZXR1cm4ic2VsZWN0Ij09PXR8fCJpbnB1dCI9PT10JiYiZmlsZSI9PT1lLnR5cGV9ZnVu
Y3Rpb24gbyhlKXt2YXIgdD1ULmdldFBvb2xlZChOLmNoYW5nZSxSLGUsUChlKSk7Xy5hY2N1bXVs
YXRlVHdvUGhhc2VEaXNwYXRjaGVzKHQpLHcuYmF0Y2hlZFVwZGF0ZXMoaSx0KX1mdW5jdGlvbiBp
KGUpe2IuZW5xdWV1ZUV2ZW50cyhlKSxiLnByb2Nlc3NFdmVudFF1ZXVlKCExKX1mdW5jdGlvbiBh
KGUsdCl7az1lLFI9dCxrLmF0dGFjaEV2ZW50KCJvbmNoYW5nZSIsbyl9ZnVuY3Rpb24gdSgpe2sm
JihrLmRldGFjaEV2ZW50KCJvbmNoYW5nZSIsbyksaz1udWxsLFI9bnVsbCl9ZnVuY3Rpb24gcyhl
LHQpe2lmKGU9PT1NLnRvcENoYW5nZSlyZXR1cm4gdH1mdW5jdGlvbiBsKGUsdCxuKXtlPT09TS50
b3BGb2N1cz8odSgpLGEodCxuKSk6ZT09PU0udG9wQmx1ciYmdSgpfWZ1bmN0aW9uIGMoZSx0KXtr
PWUsUj10LEQ9ZS52YWx1ZSxJPU9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZS5jb25z
dHJ1Y3Rvci5wcm90b3R5cGUsInZhbHVlIiksT2JqZWN0LmRlZmluZVByb3BlcnR5KGssInZhbHVl
IixVKSxrLmF0dGFjaEV2ZW50P2suYXR0YWNoRXZlbnQoIm9ucHJvcGVydHljaGFuZ2UiLGQpOmsu
YWRkRXZlbnRMaXN0ZW5lcigicHJvcGVydHljaGFuZ2UiLGQsITEpfWZ1bmN0aW9uIHAoKXtrJiYo
ZGVsZXRlIGsudmFsdWUsay5kZXRhY2hFdmVudD9rLmRldGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hh
bmdlIixkKTprLnJlbW92ZUV2ZW50TGlzdGVuZXIoInByb3BlcnR5Y2hhbmdlIixkLCExKSxrPW51
bGwsUj1udWxsLEQ9bnVsbCxJPW51bGwpfWZ1bmN0aW9uIGQoZSl7aWYoInZhbHVlIj09PWUucHJv
cGVydHlOYW1lKXt2YXIgdD1lLnNyY0VsZW1lbnQudmFsdWU7dCE9PUQmJihEPXQsbyhlKSl9fWZ1
bmN0aW9uIGYoZSx0KXtpZihlPT09TS50b3BJbnB1dClyZXR1cm4gdH1mdW5jdGlvbiBoKGUsdCxu
KXtlPT09TS50b3BGb2N1cz8ocCgpLGModCxuKSk6ZT09PU0udG9wQmx1ciYmcCgpfWZ1bmN0aW9u
IHYoZSx0KXtpZigoZT09PU0udG9wU2VsZWN0aW9uQ2hhbmdlfHxlPT09TS50b3BLZXlVcHx8ZT09
PU0udG9wS2V5RG93bikmJmsmJmsudmFsdWUhPT1EKXJldHVybiBEPWsudmFsdWUsUn1mdW5jdGlv
biBtKGUpe3JldHVybiBlLm5vZGVOYW1lJiYiaW5wdXQiPT09ZS5ub2RlTmFtZS50b0xvd2VyQ2Fz
ZSgpJiYoImNoZWNrYm94Ij09PWUudHlwZXx8InJhZGlvIj09PWUudHlwZSl9ZnVuY3Rpb24geShl
LHQpe2lmKGU9PT1NLnRvcENsaWNrKXJldHVybiB0fXZhciBnPW4oMTIpLGI9bigyMSksXz1uKDIy
KSxDPW4oNiksRT1uKDUpLHc9bigxMCksVD1uKDEzKSxQPW4oNTUpLHg9big1NiksTz1uKDk0KSxT
PW4oMTQpLE09Zy50b3BMZXZlbFR5cGVzLE49e2NoYW5nZTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFt
ZXM6e2J1YmJsZWQ6Uyh7b25DaGFuZ2U6bnVsbH0pLGNhcHR1cmVkOlMoe29uQ2hhbmdlQ2FwdHVy
ZTpudWxsfSl9LGRlcGVuZGVuY2llczpbTS50b3BCbHVyLE0udG9wQ2hhbmdlLE0udG9wQ2xpY2ss
TS50b3BGb2N1cyxNLnRvcElucHV0LE0udG9wS2V5RG93bixNLnRvcEtleVVwLE0udG9wU2VsZWN0
aW9uQ2hhbmdlXX19LGs9bnVsbCxSPW51bGwsRD1udWxsLEk9bnVsbCxBPSExO0MuY2FuVXNlRE9N
JiYoQT14KCJjaGFuZ2UiKSYmKCFkb2N1bWVudC5kb2N1bWVudE1vZGV8fGRvY3VtZW50LmRvY3Vt
ZW50TW9kZT44KSk7dmFyIEw9ITE7Qy5jYW5Vc2VET00mJihMPXgoImlucHV0IikmJighZG9jdW1l
bnQuZG9jdW1lbnRNb2RlfHxkb2N1bWVudC5kb2N1bWVudE1vZGU+MTEpKTt2YXIgVT17Z2V0OmZ1
bmN0aW9uKCl7cmV0dXJuIEkuZ2V0LmNhbGwodGhpcyl9LHNldDpmdW5jdGlvbihlKXtEPSIiK2Us
SS5zZXQuY2FsbCh0aGlzLGUpfX0saj17ZXZlbnRUeXBlczpOLGV4dHJhY3RFdmVudHM6ZnVuY3Rp
b24oZSx0LG4sbyl7dmFyIGksYSx1PXQ/RS5nZXROb2RlRnJvbUluc3RhbmNlKHQpOndpbmRvdztp
ZihyKHUpP0E/aT1zOmE9bDpPKHUpP0w/aT1mOihpPXYsYT1oKTptKHUpJiYoaT15KSxpKXt2YXIg
Yz1pKGUsdCk7aWYoYyl7dmFyIHA9VC5nZXRQb29sZWQoTi5jaGFuZ2UsYyxuLG8pO3JldHVybiBw
LnR5cGU9ImNoYW5nZSIsXy5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKHApLHB9fWEmJmEo
ZSx1LHQpfX07ZS5leHBvcnRzPWp9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9
bigyKSxvPW4oMTcpLGk9big2KSxhPW4oMTAzKSx1PW4oNykscz0obigxKSx7ZGFuZ2Vyb3VzbHlS
ZXBsYWNlTm9kZVdpdGhNYXJrdXA6ZnVuY3Rpb24oZSx0KXtpZihpLmNhblVzZURPTT92b2lkIDA6
cigiNTYiKSx0P3ZvaWQgMDpyKCI1NyIpLCJIVE1MIj09PWUubm9kZU5hbWU/cigiNTgiKTp2b2lk
IDAsInN0cmluZyI9PXR5cGVvZiB0KXt2YXIgbj1hKHQsdSlbMF07ZS5wYXJlbnROb2RlLnJlcGxh
Y2VDaGlsZChuLGUpfWVsc2Ugby5yZXBsYWNlQ2hpbGRXaXRoVHJlZShlLHQpfX0pO2UuZXhwb3J0
cz1zfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMTQpLG89W3Ioe1Jlc3Bv
bmRlckV2ZW50UGx1Z2luOm51bGx9KSxyKHtTaW1wbGVFdmVudFBsdWdpbjpudWxsfSkscih7VGFw
RXZlbnRQbHVnaW46bnVsbH0pLHIoe0VudGVyTGVhdmVFdmVudFBsdWdpbjpudWxsfSkscih7Q2hh
bmdlRXZlbnRQbHVnaW46bnVsbH0pLHIoe1NlbGVjdEV2ZW50UGx1Z2luOm51bGx9KSxyKHtCZWZv
cmVJbnB1dEV2ZW50UGx1Z2luOm51bGx9KV07ZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7dmFyIHI9bigxMiksbz1uKDIyKSxpPW4oNSksYT1uKDI5KSx1PW4oMTQpLHM9
ci50b3BMZXZlbFR5cGVzLGw9e21vdXNlRW50ZXI6e3JlZ2lzdHJhdGlvbk5hbWU6dSh7b25Nb3Vz
ZUVudGVyOm51bGx9KSxkZXBlbmRlbmNpZXM6W3MudG9wTW91c2VPdXQscy50b3BNb3VzZU92ZXJd
fSxtb3VzZUxlYXZlOntyZWdpc3RyYXRpb25OYW1lOnUoe29uTW91c2VMZWF2ZTpudWxsfSksZGVw
ZW5kZW5jaWVzOltzLnRvcE1vdXNlT3V0LHMudG9wTW91c2VPdmVyXX19LGM9e2V2ZW50VHlwZXM6
bCxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe2lmKGU9PT1zLnRvcE1vdXNlT3ZlciYm
KG4ucmVsYXRlZFRhcmdldHx8bi5mcm9tRWxlbWVudCkpcmV0dXJuIG51bGw7aWYoZSE9PXMudG9w
TW91c2VPdXQmJmUhPT1zLnRvcE1vdXNlT3ZlcilyZXR1cm4gbnVsbDt2YXIgdTtpZihyLndpbmRv
dz09PXIpdT1yO2Vsc2V7dmFyIGM9ci5vd25lckRvY3VtZW50O3U9Yz9jLmRlZmF1bHRWaWV3fHxj
LnBhcmVudFdpbmRvdzp3aW5kb3d9dmFyIHAsZDtpZihlPT09cy50b3BNb3VzZU91dCl7cD10O3Zh
ciBmPW4ucmVsYXRlZFRhcmdldHx8bi50b0VsZW1lbnQ7ZD1mP2kuZ2V0Q2xvc2VzdEluc3RhbmNl
RnJvbU5vZGUoZik6bnVsbH1lbHNlIHA9bnVsbCxkPXQ7aWYocD09PWQpcmV0dXJuIG51bGw7dmFy
IGg9bnVsbD09cD91OmkuZ2V0Tm9kZUZyb21JbnN0YW5jZShwKSx2PW51bGw9PWQ/dTppLmdldE5v
ZGVGcm9tSW5zdGFuY2UoZCksbT1hLmdldFBvb2xlZChsLm1vdXNlTGVhdmUscCxuLHIpO20udHlw
ZT0ibW91c2VsZWF2ZSIsbS50YXJnZXQ9aCxtLnJlbGF0ZWRUYXJnZXQ9djt2YXIgeT1hLmdldFBv
b2xlZChsLm1vdXNlRW50ZXIsZCxuLHIpO3JldHVybiB5LnR5cGU9Im1vdXNlZW50ZXIiLHkudGFy
Z2V0PXYseS5yZWxhdGVkVGFyZ2V0PWgsby5hY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXMo
bSx5LHAsZCksW20seV19fTtlLmV4cG9ydHM9Y30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe3RoaXMuX3Jvb3Q9ZSx0aGlzLl9zdGFydFRleHQ9dGhpcy5nZXRUZXh0
KCksdGhpcy5fZmFsbGJhY2tUZXh0PW51bGx9dmFyIG89big0KSxpPW4oMTUpLGE9big5Mik7byhy
LnByb3RvdHlwZSx7ZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe3RoaXMuX3Jvb3Q9bnVsbCx0aGlzLl9z
dGFydFRleHQ9bnVsbCx0aGlzLl9mYWxsYmFja1RleHQ9bnVsbH0sZ2V0VGV4dDpmdW5jdGlvbigp
e3JldHVybiJ2YWx1ZSJpbiB0aGlzLl9yb290P3RoaXMuX3Jvb3QudmFsdWU6dGhpcy5fcm9vdFth
KCldfSxnZXREYXRhOmZ1bmN0aW9uKCl7aWYodGhpcy5fZmFsbGJhY2tUZXh0KXJldHVybiB0aGlz
Ll9mYWxsYmFja1RleHQ7dmFyIGUsdCxuPXRoaXMuX3N0YXJ0VGV4dCxyPW4ubGVuZ3RoLG89dGhp
cy5nZXRUZXh0KCksaT1vLmxlbmd0aDtmb3IoZT0wO2U8ciYmbltlXT09PW9bZV07ZSsrKTt2YXIg
YT1yLWU7Zm9yKHQ9MTt0PD1hJiZuW3ItdF09PT1vW2ktdF07dCsrKTt2YXIgdT10PjE/MS10OnZv
aWQgMDtyZXR1cm4gdGhpcy5fZmFsbGJhY2tUZXh0PW8uc2xpY2UoZSx1KSx0aGlzLl9mYWxsYmFj
a1RleHR9fSksaS5hZGRQb29saW5nVG8ociksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7dmFyIHI9bigxOCksbz1yLmluamVjdGlvbi5NVVNUX1VTRV9QUk9QRVJUWSxp
PXIuaW5qZWN0aW9uLkhBU19CT09MRUFOX1ZBTFVFLGE9ci5pbmplY3Rpb24uSEFTX05VTUVSSUNf
VkFMVUUsdT1yLmluamVjdGlvbi5IQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSxzPXIuaW5qZWN0
aW9uLkhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUUsbD17aXNDdXN0b21BdHRyaWJ1dGU6UmVn
RXhwLnByb3RvdHlwZS50ZXN0LmJpbmQobmV3IFJlZ0V4cCgiXihkYXRhfGFyaWEpLVsiK3IuQVRU
UklCVVRFX05BTUVfQ0hBUisiXSokIikpLFByb3BlcnRpZXM6e2FjY2VwdDowLGFjY2VwdENoYXJz
ZXQ6MCxhY2Nlc3NLZXk6MCxhY3Rpb246MCxhbGxvd0Z1bGxTY3JlZW46aSxhbGxvd1RyYW5zcGFy
ZW5jeTowLGFsdDowLGFzOjAsYXN5bmM6aSxhdXRvQ29tcGxldGU6MCxhdXRvUGxheTppLGNhcHR1
cmU6aSxjZWxsUGFkZGluZzowLGNlbGxTcGFjaW5nOjAsY2hhclNldDowLGNoYWxsZW5nZTowLGNo
ZWNrZWQ6b3xpLGNpdGU6MCxjbGFzc0lEOjAsY2xhc3NOYW1lOjAsY29sczp1LGNvbFNwYW46MCxj
b250ZW50OjAsY29udGVudEVkaXRhYmxlOjAsY29udGV4dE1lbnU6MCxjb250cm9sczppLGNvb3Jk
czowLGNyb3NzT3JpZ2luOjAsZGF0YTowLGRhdGVUaW1lOjAsZGVmYXVsdDppLGRlZmVyOmksZGly
OjAsZGlzYWJsZWQ6aSxkb3dubG9hZDpzLGRyYWdnYWJsZTowLGVuY1R5cGU6MCxmb3JtOjAsZm9y
bUFjdGlvbjowLGZvcm1FbmNUeXBlOjAsZm9ybU1ldGhvZDowLGZvcm1Ob1ZhbGlkYXRlOmksZm9y
bVRhcmdldDowLGZyYW1lQm9yZGVyOjAsaGVhZGVyczowLGhlaWdodDowLGhpZGRlbjppLGhpZ2g6
MCxocmVmOjAsaHJlZkxhbmc6MCxodG1sRm9yOjAsaHR0cEVxdWl2OjAsaWNvbjowLGlkOjAsaW5w
dXRNb2RlOjAsaW50ZWdyaXR5OjAsaXM6MCxrZXlQYXJhbXM6MCxrZXlUeXBlOjAsa2luZDowLGxh
YmVsOjAsbGFuZzowLGxpc3Q6MCxsb29wOmksbG93OjAsbWFuaWZlc3Q6MCxtYXJnaW5IZWlnaHQ6
MCxtYXJnaW5XaWR0aDowLG1heDowLG1heExlbmd0aDowLG1lZGlhOjAsbWVkaWFHcm91cDowLG1l
dGhvZDowLG1pbjowLG1pbkxlbmd0aDowLG11bHRpcGxlOm98aSxtdXRlZDpvfGksbmFtZTowLG5v
bmNlOjAsbm9WYWxpZGF0ZTppLG9wZW46aSxvcHRpbXVtOjAscGF0dGVybjowLHBsYWNlaG9sZGVy
OjAscGxheXNJbmxpbmU6aSxwb3N0ZXI6MCxwcmVsb2FkOjAscHJvZmlsZTowLHJhZGlvR3JvdXA6
MCxyZWFkT25seTppLHJlZmVycmVyUG9saWN5OjAscmVsOjAscmVxdWlyZWQ6aSxyZXZlcnNlZDpp
LHJvbGU6MCxyb3dzOnUscm93U3BhbjphLHNhbmRib3g6MCxzY29wZTowLHNjb3BlZDppLHNjcm9s
bGluZzowLHNlYW1sZXNzOmksc2VsZWN0ZWQ6b3xpLHNoYXBlOjAsc2l6ZTp1LHNpemVzOjAsc3Bh
bjp1LHNwZWxsQ2hlY2s6MCxzcmM6MCxzcmNEb2M6MCxzcmNMYW5nOjAsc3JjU2V0OjAsc3RhcnQ6
YSxzdGVwOjAsc3R5bGU6MCxzdW1tYXJ5OjAsdGFiSW5kZXg6MCx0YXJnZXQ6MCx0aXRsZTowLHR5
cGU6MCx1c2VNYXA6MCx2YWx1ZTowLHdpZHRoOjAsd21vZGU6MCx3cmFwOjAsYWJvdXQ6MCxkYXRh
dHlwZTowLGlubGlzdDowLHByZWZpeDowLHByb3BlcnR5OjAscmVzb3VyY2U6MCx0eXBlb2Y6MCx2
b2NhYjowLGF1dG9DYXBpdGFsaXplOjAsYXV0b0NvcnJlY3Q6MCxhdXRvU2F2ZTowLGNvbG9yOjAs
aXRlbVByb3A6MCxpdGVtU2NvcGU6aSxpdGVtVHlwZTowLGl0ZW1JRDowLGl0ZW1SZWY6MCxyZXN1
bHRzOjAsc2VjdXJpdHk6MCx1bnNlbGVjdGFibGU6MH0sRE9NQXR0cmlidXRlTmFtZXM6e2FjY2Vw
dENoYXJzZXQ6ImFjY2VwdC1jaGFyc2V0IixjbGFzc05hbWU6ImNsYXNzIixodG1sRm9yOiJmb3Ii
LGh0dHBFcXVpdjoiaHR0cC1lcXVpdiJ9LERPTVByb3BlcnR5TmFtZXM6e319O2UuZXhwb3J0cz1s
fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNCksbz1uKDczKSxpPW4oNDMp
LGE9bigxNzMpLHU9big3NCkscz1uKDE1NiksbD1uKDkpLGM9big4NCkscD1uKDg1KSxkPW4oMTk5
KSxmPShuKDMpLGwuY3JlYXRlRWxlbWVudCksaD1sLmNyZWF0ZUZhY3Rvcnksdj1sLmNsb25lRWxl
bWVudCxtPXIseT17Q2hpbGRyZW46e21hcDpvLm1hcCxmb3JFYWNoOm8uZm9yRWFjaCxjb3VudDpv
LmNvdW50LHRvQXJyYXk6by50b0FycmF5LG9ubHk6ZH0sQ29tcG9uZW50OmksUHVyZUNvbXBvbmVu
dDphLGNyZWF0ZUVsZW1lbnQ6ZixjbG9uZUVsZW1lbnQ6dixpc1ZhbGlkRWxlbWVudDpsLmlzVmFs
aWRFbGVtZW50LFByb3BUeXBlczpjLGNyZWF0ZUNsYXNzOnUuY3JlYXRlQ2xhc3MsY3JlYXRlRmFj
dG9yeTpoLGNyZWF0ZU1peGluOmZ1bmN0aW9uKGUpe3JldHVybiBlfSxET006cyx2ZXJzaW9uOnAs
X19zcHJlYWQ6bX07ZS5leHBvcnRzPXl9LGZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24odCl7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7dmFyIG89dm9pZCAwPT09ZVtuXTtudWxsIT10
JiZvJiYoZVtuXT1pKHQsITApKX12YXIgbz1uKDE5KSxpPW4oOTMpLGE9KG4oNDEpLG4oNTcpKSx1
PW4oNTgpO24oMyk7InVuZGVmaW5lZCIhPXR5cGVvZiB0JiZ0LmVudiwxO3ZhciBzPXtpbnN0YW50
aWF0ZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuLG8pe2lmKG51bGw9PWUpcmV0dXJuIG51bGw7dmFy
IGk9e307cmV0dXJuIHUoZSxyLGkpLGl9LHVwZGF0ZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuLHIs
dSxzLGwsYyxwKXtpZih0fHxlKXt2YXIgZCxmO2ZvcihkIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0
eShkKSl7Zj1lJiZlW2RdO3ZhciBoPWYmJmYuX2N1cnJlbnRFbGVtZW50LHY9dFtkXTtpZihudWxs
IT1mJiZhKGgsdikpby5yZWNlaXZlQ29tcG9uZW50KGYsdix1LGMpLHRbZF09ZjtlbHNle2YmJihy
W2RdPW8uZ2V0SG9zdE5vZGUoZiksby51bm1vdW50Q29tcG9uZW50KGYsITEpKTt2YXIgbT1pKHYs
ITApO3RbZF09bTt2YXIgeT1vLm1vdW50Q29tcG9uZW50KG0sdSxzLGwsYyxwKTtuLnB1c2goeSl9
fWZvcihkIGluIGUpIWUuaGFzT3duUHJvcGVydHkoZCl8fHQmJnQuaGFzT3duUHJvcGVydHkoZCl8
fChmPWVbZF0scltkXT1vLmdldEhvc3ROb2RlKGYpLG8udW5tb3VudENvbXBvbmVudChmLCExKSl9
fSx1bm1vdW50Q2hpbGRyZW46ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG4gaW4gZSlpZihlLmhhc093
blByb3BlcnR5KG4pKXt2YXIgcj1lW25dO28udW5tb3VudENvbXBvbmVudChyLHQpfX19O2UuZXhw
b3J0cz1zfSkuY2FsbCh0LG4oMzYpKX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIg
cj1uKDM3KSxvPW4oMTU4KSxpPXtwcm9jZXNzQ2hpbGRyZW5VcGRhdGVzOm8uZGFuZ2Vyb3VzbHlQ
cm9jZXNzQ2hpbGRyZW5VcGRhdGVzLHJlcGxhY2VOb2RlV2l0aE1hcmt1cDpyLmRhbmdlcm91c2x5
UmVwbGFjZU5vZGVXaXRoTWFya3VwfTtlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUpe31mdW5jdGlvbiBvKGUsdCl7fWZ1bmN0aW9uIGkoZSl7cmV0
dXJuISghZS5wcm90b3R5cGV8fCFlLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50KX1mdW5jdGlv
biBhKGUpe3JldHVybiEoIWUucHJvdG90eXBlfHwhZS5wcm90b3R5cGUuaXNQdXJlUmVhY3RDb21w
b25lbnQpfXZhciB1PW4oMikscz1uKDQpLGw9big0NCksYz1uKDE2KSxwPW4oOSksZD1uKDQ2KSxm
PW4oMjMpLGg9KG4oOCksbig4MykpLHY9KG4oNDkpLG4oMTkpKSxtPW4oMTkyKSx5PW4oMjApLGc9
KG4oMSksbigzNCkpLGI9big1NyksXz0obigzKSx7SW1wdXJlQ2xhc3M6MCxQdXJlQ2xhc3M6MSxT
dGF0ZWxlc3NGdW5jdGlvbmFsOjJ9KTtyLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXt2YXIg
ZT1mLmdldCh0aGlzKS5fY3VycmVudEVsZW1lbnQudHlwZSx0PWUodGhpcy5wcm9wcyx0aGlzLmNv
bnRleHQsdGhpcy51cGRhdGVyKTtyZXR1cm4gbyhlLHQpLHR9O3ZhciBDPTEsRT17Y29uc3RydWN0
OmZ1bmN0aW9uKGUpe3RoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fcm9vdE5vZGVJRD0wLHRo
aXMuX2NvbXBvc2l0ZVR5cGU9bnVsbCx0aGlzLl9pbnN0YW5jZT1udWxsLHRoaXMuX2hvc3RQYXJl
bnQ9bnVsbCx0aGlzLl9ob3N0Q29udGFpbmVySW5mbz1udWxsLHRoaXMuX3VwZGF0ZUJhdGNoTnVt
YmVyPW51bGwsdGhpcy5fcGVuZGluZ0VsZW1lbnQ9bnVsbCx0aGlzLl9wZW5kaW5nU3RhdGVRdWV1
ZT1udWxsLHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU9ITEsdGhpcy5fcGVuZGluZ0ZvcmNlVXBk
YXRlPSExLHRoaXMuX3JlbmRlcmVkTm9kZVR5cGU9bnVsbCx0aGlzLl9yZW5kZXJlZENvbXBvbmVu
dD1udWxsLHRoaXMuX2NvbnRleHQ9bnVsbCx0aGlzLl9tb3VudE9yZGVyPTAsdGhpcy5fdG9wTGV2
ZWxXcmFwcGVyPW51bGwsdGhpcy5fcGVuZGluZ0NhbGxiYWNrcz1udWxsLHRoaXMuX2NhbGxlZENv
bXBvbmVudFdpbGxVbm1vdW50PSExfSxtb3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixzKXt0
aGlzLl9jb250ZXh0PXMsdGhpcy5fbW91bnRPcmRlcj1DKyssdGhpcy5faG9zdFBhcmVudD10LHRo
aXMuX2hvc3RDb250YWluZXJJbmZvPW47dmFyIGwsYz10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9w
cyxkPXRoaXMuX3Byb2Nlc3NDb250ZXh0KHMpLGg9dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSx2
PWUuZ2V0VXBkYXRlUXVldWUoKSxtPWkoaCksZz10aGlzLl9jb25zdHJ1Y3RDb21wb25lbnQobSxj
LGQsdik7bXx8bnVsbCE9ZyYmbnVsbCE9Zy5yZW5kZXI/YShoKT90aGlzLl9jb21wb3NpdGVUeXBl
PV8uUHVyZUNsYXNzOnRoaXMuX2NvbXBvc2l0ZVR5cGU9Xy5JbXB1cmVDbGFzczoobD1nLG8oaCxs
KSxudWxsPT09Z3x8Zz09PSExfHxwLmlzVmFsaWRFbGVtZW50KGcpP3ZvaWQgMDp1KCIxMDUiLGgu
ZGlzcGxheU5hbWV8fGgubmFtZXx8IkNvbXBvbmVudCIpLGc9bmV3IHIoaCksdGhpcy5fY29tcG9z
aXRlVHlwZT1fLlN0YXRlbGVzc0Z1bmN0aW9uYWwpO2cucHJvcHM9YyxnLmNvbnRleHQ9ZCxnLnJl
ZnM9eSxnLnVwZGF0ZXI9dix0aGlzLl9pbnN0YW5jZT1nLGYuc2V0KGcsdGhpcyk7dmFyIGI9Zy5z
dGF0ZTt2b2lkIDA9PT1iJiYoZy5zdGF0ZT1iPW51bGwpLCJvYmplY3QiIT10eXBlb2YgYnx8QXJy
YXkuaXNBcnJheShiKT91KCIxMDYiLHRoaXMuZ2V0TmFtZSgpfHwiUmVhY3RDb21wb3NpdGVDb21w
b25lbnQiKTp2b2lkIDAsdGhpcy5fcGVuZGluZ1N0YXRlUXVldWU9bnVsbCx0aGlzLl9wZW5kaW5n
UmVwbGFjZVN0YXRlPSExLHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZT0hMTt2YXIgRTtyZXR1cm4g
RT1nLnVuc3RhYmxlX2hhbmRsZUVycm9yP3RoaXMucGVyZm9ybUluaXRpYWxNb3VudFdpdGhFcnJv
ckhhbmRsaW5nKGwsdCxuLGUscyk6dGhpcy5wZXJmb3JtSW5pdGlhbE1vdW50KGwsdCxuLGUscyks
Zy5jb21wb25lbnREaWRNb3VudCYmZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGcuY29t
cG9uZW50RGlkTW91bnQsZyksRX0sX2NvbnN0cnVjdENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixy
KXtyZXR1cm4gdGhpcy5fY29uc3RydWN0Q29tcG9uZW50V2l0aG91dE93bmVyKGUsdCxuLHIpfSxf
Y29uc3RydWN0Q29tcG9uZW50V2l0aG91dE93bmVyOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXRo
aXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7cmV0dXJuIGU/bmV3IG8odCxuLHIpOm8odCxuLHIpfSxw
ZXJmb3JtSW5pdGlhbE1vdW50V2l0aEVycm9ySGFuZGxpbmc6ZnVuY3Rpb24oZSx0LG4scixvKXt2
YXIgaSxhPXIuY2hlY2twb2ludCgpO3RyeXtpPXRoaXMucGVyZm9ybUluaXRpYWxNb3VudChlLHQs
bixyLG8pfWNhdGNoKHUpe3Iucm9sbGJhY2soYSksdGhpcy5faW5zdGFuY2UudW5zdGFibGVfaGFu
ZGxlRXJyb3IodSksdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUmJih0aGlzLl9pbnN0YW5jZS5zdGF0
ZT10aGlzLl9wcm9jZXNzUGVuZGluZ1N0YXRlKHRoaXMuX2luc3RhbmNlLnByb3BzLHRoaXMuX2lu
c3RhbmNlLmNvbnRleHQpKSxhPXIuY2hlY2twb2ludCgpLHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50
LnVubW91bnRDb21wb25lbnQoITApLHIucm9sbGJhY2soYSksaT10aGlzLnBlcmZvcm1Jbml0aWFs
TW91bnQoZSx0LG4scixvKX1yZXR1cm4gaX0scGVyZm9ybUluaXRpYWxNb3VudDpmdW5jdGlvbihl
LHQsbixyLG8pe3ZhciBpPXRoaXMuX2luc3RhbmNlLGE9MDtpLmNvbXBvbmVudFdpbGxNb3VudCYm
KGkuY29tcG9uZW50V2lsbE1vdW50KCksdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUmJihpLnN0YXRl
PXRoaXMuX3Byb2Nlc3NQZW5kaW5nU3RhdGUoaS5wcm9wcyxpLmNvbnRleHQpKSksdm9pZCAwPT09
ZSYmKGU9dGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KCkpO3ZhciB1PWguZ2V0VHlwZShl
KTt0aGlzLl9yZW5kZXJlZE5vZGVUeXBlPXU7dmFyIHM9dGhpcy5faW5zdGFudGlhdGVSZWFjdENv
bXBvbmVudChlLHUhPT1oLkVNUFRZKTt0aGlzLl9yZW5kZXJlZENvbXBvbmVudD1zO3ZhciBsPXYu
bW91bnRDb21wb25lbnQocyxyLHQsbix0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KG8pLGEpO3Jl
dHVybiBsfSxnZXRIb3N0Tm9kZTpmdW5jdGlvbigpe3JldHVybiB2LmdldEhvc3ROb2RlKHRoaXMu
X3JlbmRlcmVkQ29tcG9uZW50KX0sdW5tb3VudENvbXBvbmVudDpmdW5jdGlvbihlKXtpZih0aGlz
Ll9yZW5kZXJlZENvbXBvbmVudCl7dmFyIHQ9dGhpcy5faW5zdGFuY2U7aWYodC5jb21wb25lbnRX
aWxsVW5tb3VudCYmIXQuX2NhbGxlZENvbXBvbmVudFdpbGxVbm1vdW50KWlmKHQuX2NhbGxlZENv
bXBvbmVudFdpbGxVbm1vdW50PSEwLGUpe3ZhciBuPXRoaXMuZ2V0TmFtZSgpKyIuY29tcG9uZW50
V2lsbFVubW91bnQoKSI7ZC5pbnZva2VHdWFyZGVkQ2FsbGJhY2sobix0LmNvbXBvbmVudFdpbGxV
bm1vdW50LmJpbmQodCkpfWVsc2UgdC5jb21wb25lbnRXaWxsVW5tb3VudCgpO3RoaXMuX3JlbmRl
cmVkQ29tcG9uZW50JiYodi51bm1vdW50Q29tcG9uZW50KHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50
LGUpLHRoaXMuX3JlbmRlcmVkTm9kZVR5cGU9bnVsbCx0aGlzLl9yZW5kZXJlZENvbXBvbmVudD1u
dWxsLHRoaXMuX2luc3RhbmNlPW51bGwpLHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlPW51bGwsdGhp
cy5fcGVuZGluZ1JlcGxhY2VTdGF0ZT0hMSx0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGU9ITEsdGhp
cy5fcGVuZGluZ0NhbGxiYWNrcz1udWxsLHRoaXMuX3BlbmRpbmdFbGVtZW50PW51bGwsdGhpcy5f
Y29udGV4dD1udWxsLHRoaXMuX3Jvb3ROb2RlSUQ9MCx0aGlzLl90b3BMZXZlbFdyYXBwZXI9bnVs
bCxmLnJlbW92ZSh0KX19LF9tYXNrQ29udGV4dDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jdXJy
ZW50RWxlbWVudC50eXBlLG49dC5jb250ZXh0VHlwZXM7aWYoIW4pcmV0dXJuIHk7dmFyIHI9e307
Zm9yKHZhciBvIGluIG4pcltvXT1lW29dO3JldHVybiByfSxfcHJvY2Vzc0NvbnRleHQ6ZnVuY3Rp
b24oZSl7dmFyIHQ9dGhpcy5fbWFza0NvbnRleHQoZSk7cmV0dXJuIHR9LF9wcm9jZXNzQ2hpbGRD
b250ZXh0OmZ1bmN0aW9uKGUpe3ZhciB0LG49dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSxyPXRo
aXMuX2luc3RhbmNlOwotaWYoci5nZXRDaGlsZENvbnRleHQmJih0PXIuZ2V0Q2hpbGRDb250ZXh0
KCkpLHQpeyJvYmplY3QiIT10eXBlb2Ygbi5jaGlsZENvbnRleHRUeXBlcz91KCIxMDciLHRoaXMu
Z2V0TmFtZSgpfHwiUmVhY3RDb21wb3NpdGVDb21wb25lbnQiKTp2b2lkIDA7Zm9yKHZhciBvIGlu
IHQpbyBpbiBuLmNoaWxkQ29udGV4dFR5cGVzP3ZvaWQgMDp1KCIxMDgiLHRoaXMuZ2V0TmFtZSgp
fHwiUmVhY3RDb21wb3NpdGVDb21wb25lbnQiLG8pO3JldHVybiBzKHt9LGUsdCl9cmV0dXJuIGV9
LF9jaGVja0NvbnRleHRUeXBlczpmdW5jdGlvbihlLHQsbil7bShlLHQsbix0aGlzLmdldE5hbWUo
KSxudWxsLHRoaXMuX2RlYnVnSUQpfSxyZWNlaXZlQ29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuKXt2
YXIgcj10aGlzLl9jdXJyZW50RWxlbWVudCxvPXRoaXMuX2NvbnRleHQ7dGhpcy5fcGVuZGluZ0Vs
ZW1lbnQ9bnVsbCx0aGlzLnVwZGF0ZUNvbXBvbmVudCh0LHIsZSxvLG4pfSxwZXJmb3JtVXBkYXRl
SWZOZWNlc3Nhcnk6ZnVuY3Rpb24oZSl7bnVsbCE9dGhpcy5fcGVuZGluZ0VsZW1lbnQ/di5yZWNl
aXZlQ29tcG9uZW50KHRoaXMsdGhpcy5fcGVuZGluZ0VsZW1lbnQsZSx0aGlzLl9jb250ZXh0KTpu
dWxsIT09dGhpcy5fcGVuZGluZ1N0YXRlUXVldWV8fHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZT90
aGlzLnVwZGF0ZUNvbXBvbmVudChlLHRoaXMuX2N1cnJlbnRFbGVtZW50LHRoaXMuX2N1cnJlbnRF
bGVtZW50LHRoaXMuX2NvbnRleHQsdGhpcy5fY29udGV4dCk6dGhpcy5fdXBkYXRlQmF0Y2hOdW1i
ZXI9bnVsbH0sdXBkYXRlQ29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGk9dGhpcy5f
aW5zdGFuY2U7bnVsbD09aT91KCIxMzYiLHRoaXMuZ2V0TmFtZSgpfHwiUmVhY3RDb21wb3NpdGVD
b21wb25lbnQiKTp2b2lkIDA7dmFyIGEscz0hMTt0aGlzLl9jb250ZXh0PT09bz9hPWkuY29udGV4
dDooYT10aGlzLl9wcm9jZXNzQ29udGV4dChvKSxzPSEwKTt2YXIgbD10LnByb3BzLGM9bi5wcm9w
czt0IT09biYmKHM9ITApLHMmJmkuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyYmaS5jb21wb25l
bnRXaWxsUmVjZWl2ZVByb3BzKGMsYSk7dmFyIHA9dGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZShj
LGEpLGQ9ITA7dGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlfHwoaS5zaG91bGRDb21wb25lbnRVcGRh
dGU/ZD1pLnNob3VsZENvbXBvbmVudFVwZGF0ZShjLHAsYSk6dGhpcy5fY29tcG9zaXRlVHlwZT09
PV8uUHVyZUNsYXNzJiYoZD0hZyhsLGMpfHwhZyhpLnN0YXRlLHApKSksdGhpcy5fdXBkYXRlQmF0
Y2hOdW1iZXI9bnVsbCxkPyh0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGU9ITEsdGhpcy5fcGVyZm9y
bUNvbXBvbmVudFVwZGF0ZShuLGMscCxhLGUsbykpOih0aGlzLl9jdXJyZW50RWxlbWVudD1uLHRo
aXMuX2NvbnRleHQ9byxpLnByb3BzPWMsaS5zdGF0ZT1wLGkuY29udGV4dD1hKX0sX3Byb2Nlc3NQ
ZW5kaW5nU3RhdGU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9pbnN0YW5jZSxyPXRoaXMuX3Bl
bmRpbmdTdGF0ZVF1ZXVlLG89dGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZTtpZih0aGlzLl9wZW5k
aW5nUmVwbGFjZVN0YXRlPSExLHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlPW51bGwsIXIpcmV0dXJu
IG4uc3RhdGU7aWYobyYmMT09PXIubGVuZ3RoKXJldHVybiByWzBdO2Zvcih2YXIgaT1zKHt9LG8/
clswXTpuLnN0YXRlKSxhPW8/MTowO2E8ci5sZW5ndGg7YSsrKXt2YXIgdT1yW2FdO3MoaSwiZnVu
Y3Rpb24iPT10eXBlb2YgdT91LmNhbGwobixpLGUsdCk6dSl9cmV0dXJuIGl9LF9wZXJmb3JtQ29t
cG9uZW50VXBkYXRlOmZ1bmN0aW9uKGUsdCxuLHIsbyxpKXt2YXIgYSx1LHMsbD10aGlzLl9pbnN0
YW5jZSxjPUJvb2xlYW4obC5jb21wb25lbnREaWRVcGRhdGUpO2MmJihhPWwucHJvcHMsdT1sLnN0
YXRlLHM9bC5jb250ZXh0KSxsLmNvbXBvbmVudFdpbGxVcGRhdGUmJmwuY29tcG9uZW50V2lsbFVw
ZGF0ZSh0LG4sciksdGhpcy5fY3VycmVudEVsZW1lbnQ9ZSx0aGlzLl9jb250ZXh0PWksbC5wcm9w
cz10LGwuc3RhdGU9bixsLmNvbnRleHQ9cix0aGlzLl91cGRhdGVSZW5kZXJlZENvbXBvbmVudChv
LGkpLGMmJm8uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShsLmNvbXBvbmVudERpZFVwZGF0
ZS5iaW5kKGwsYSx1LHMpLGwpfSxfdXBkYXRlUmVuZGVyZWRDb21wb25lbnQ6ZnVuY3Rpb24oZSx0
KXt2YXIgbj10aGlzLl9yZW5kZXJlZENvbXBvbmVudCxyPW4uX2N1cnJlbnRFbGVtZW50LG89dGhp
cy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KCksaT0wO2lmKGIocixvKSl2LnJlY2VpdmVDb21w
b25lbnQobixvLGUsdGhpcy5fcHJvY2Vzc0NoaWxkQ29udGV4dCh0KSk7ZWxzZXt2YXIgYT12Lmdl
dEhvc3ROb2RlKG4pO3YudW5tb3VudENvbXBvbmVudChuLCExKTt2YXIgdT1oLmdldFR5cGUobyk7
dGhpcy5fcmVuZGVyZWROb2RlVHlwZT11O3ZhciBzPXRoaXMuX2luc3RhbnRpYXRlUmVhY3RDb21w
b25lbnQobyx1IT09aC5FTVBUWSk7dGhpcy5fcmVuZGVyZWRDb21wb25lbnQ9czt2YXIgbD12Lm1v
dW50Q29tcG9uZW50KHMsZSx0aGlzLl9ob3N0UGFyZW50LHRoaXMuX2hvc3RDb250YWluZXJJbmZv
LHRoaXMuX3Byb2Nlc3NDaGlsZENvbnRleHQodCksaSk7dGhpcy5fcmVwbGFjZU5vZGVXaXRoTWFy
a3VwKGEsbCxuKX19LF9yZXBsYWNlTm9kZVdpdGhNYXJrdXA6ZnVuY3Rpb24oZSx0LG4pe2wucmVw
bGFjZU5vZGVXaXRoTWFya3VwKGUsdCxuKX0sX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhv
dXRPd25lck9yQ29udGV4dDpmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy5faW5zdGFuY2U7cmV0dXJu
IGU9dC5yZW5kZXIoKX0sX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudDpmdW5jdGlvbigpe3ZhciBl
O2lmKHRoaXMuX2NvbXBvc2l0ZVR5cGUhPT1fLlN0YXRlbGVzc0Z1bmN0aW9uYWwpe2MuY3VycmVu
dD10aGlzO3RyeXtlPXRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhvdXRPd25lck9y
Q29udGV4dCgpfWZpbmFsbHl7Yy5jdXJyZW50PW51bGx9fWVsc2UgZT10aGlzLl9yZW5kZXJWYWxp
ZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQoKTtyZXR1cm4gbnVsbD09PWV8fGU9
PT0hMXx8cC5pc1ZhbGlkRWxlbWVudChlKT92b2lkIDA6dSgiMTA5Iix0aGlzLmdldE5hbWUoKXx8
IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50IiksZX0sYXR0YWNoUmVmOmZ1bmN0aW9uKGUsdCl7dmFy
IG49dGhpcy5nZXRQdWJsaWNJbnN0YW5jZSgpO251bGw9PW4/dSgiMTEwIik6dm9pZCAwO3ZhciBy
PXQuZ2V0UHVibGljSW5zdGFuY2UoKSxvPW4ucmVmcz09PXk/bi5yZWZzPXt9Om4ucmVmcztvW2Vd
PXJ9LGRldGFjaFJlZjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmdldFB1YmxpY0luc3RhbmNlKCku
cmVmcztkZWxldGUgdFtlXX0sZ2V0TmFtZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2N1cnJlbnRF
bGVtZW50LnR5cGUsdD10aGlzLl9pbnN0YW5jZSYmdGhpcy5faW5zdGFuY2UuY29uc3RydWN0b3I7
cmV0dXJuIGUuZGlzcGxheU5hbWV8fHQmJnQuZGlzcGxheU5hbWV8fGUubmFtZXx8dCYmdC5uYW1l
fHxudWxsfSxnZXRQdWJsaWNJbnN0YW5jZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2luc3RhbmNl
O3JldHVybiB0aGlzLl9jb21wb3NpdGVUeXBlPT09Xy5TdGF0ZWxlc3NGdW5jdGlvbmFsP251bGw6
ZX0sX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQ6bnVsbH0sdz17TWl4aW46RX07ZS5leHBvcnRz
PXd9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big1KSxvPW4oMTY2KSxpPW4o
ODEpLGE9bigxOSksdT1uKDEwKSxzPW4oODUpLGw9bigxOTQpLGM9big5MCkscD1uKDIwMSk7bigz
KTtvLmluamVjdCgpO3ZhciBkPXtmaW5kRE9NTm9kZTpsLHJlbmRlcjppLnJlbmRlcix1bm1vdW50
Q29tcG9uZW50QXROb2RlOmkudW5tb3VudENvbXBvbmVudEF0Tm9kZSx2ZXJzaW9uOnMsdW5zdGFi
bGVfYmF0Y2hlZFVwZGF0ZXM6dS5iYXRjaGVkVXBkYXRlcyx1bnN0YWJsZV9yZW5kZXJTdWJ0cmVl
SW50b0NvbnRhaW5lcjpwfTsidW5kZWZpbmVkIiE9dHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xP
QkFMX0hPT0tfXyYmImZ1bmN0aW9uIj09dHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hP
T0tfXy5pbmplY3QmJl9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5pbmplY3Qoe0NvbXBv
bmVudFRyZWU6e2dldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlOnIuZ2V0Q2xvc2VzdEluc3RhbmNl
RnJvbU5vZGUsZ2V0Tm9kZUZyb21JbnN0YW5jZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5fcmVuZGVy
ZWRDb21wb25lbnQmJihlPWMoZSkpLGU/ci5nZXROb2RlRnJvbUluc3RhbmNlKGUpOm51bGx9fSxN
b3VudDppLFJlY29uY2lsZXI6YX0pO2UuZXhwb3J0cz1kfSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO3ZhciByPW4oMjcpLG89e2dldEhvc3RQcm9wczpyLmdldEhvc3RQcm9wc307ZS5leHBv
cnRzPW99LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihlKXt2
YXIgdD1lLl9jdXJyZW50RWxlbWVudC5fb3duZXJ8fG51bGw7aWYodCl7dmFyIG49dC5nZXROYW1l
KCk7aWYobilyZXR1cm4iIFRoaXMgRE9NIG5vZGUgd2FzIHJlbmRlcmVkIGJ5IGAiK24rImAuIn19
cmV0dXJuIiJ9ZnVuY3Rpb24gbyhlLHQpe3QmJigkW2UuX3RhZ10mJihudWxsIT10LmNoaWxkcmVu
fHxudWxsIT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MP3YoIjEzNyIsZS5fdGFnLGUuX2N1cnJl
bnRFbGVtZW50Ll9vd25lcj8iIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mICIrZS5fY3VycmVu
dEVsZW1lbnQuX293bmVyLmdldE5hbWUoKSsiLiI6IiIpOnZvaWQgMCksbnVsbCE9dC5kYW5nZXJv
dXNseVNldElubmVySFRNTCYmKG51bGwhPXQuY2hpbGRyZW4/digiNjAiKTp2b2lkIDAsIm9iamVj
dCI9PXR5cGVvZiB0LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZLIGluIHQuZGFuZ2Vyb3VzbHlT
ZXRJbm5lckhUTUw/dm9pZCAwOnYoIjYxIikpLG51bGwhPXQuc3R5bGUmJiJvYmplY3QiIT10eXBl
b2YgdC5zdHlsZT92KCI2MiIscihlKSk6dm9pZCAwKX1mdW5jdGlvbiBpKGUsdCxuLHIpe2lmKCEo
ciBpbnN0YW5jZW9mIEEpKXt2YXIgbz1lLl9ob3N0Q29udGFpbmVySW5mbyxpPW8uX25vZGUmJm8u
X25vZGUubm9kZVR5cGU9PT16LHU9aT9vLl9ub2RlOm8uX293bmVyRG9jdW1lbnQ7Vih0LHUpLHIu
Z2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShhLHtpbnN0OmUscmVnaXN0cmF0aW9uTmFtZTp0
LGxpc3RlbmVyOm59KX19ZnVuY3Rpb24gYSgpe3ZhciBlPXRoaXM7VC5wdXRMaXN0ZW5lcihlLmlu
c3QsZS5yZWdpc3RyYXRpb25OYW1lLGUubGlzdGVuZXIpfWZ1bmN0aW9uIHUoKXt2YXIgZT10aGlz
O04ucG9zdE1vdW50V3JhcHBlcihlKX1mdW5jdGlvbiBzKCl7dmFyIGU9dGhpcztELnBvc3RNb3Vu
dFdyYXBwZXIoZSl9ZnVuY3Rpb24gbCgpe3ZhciBlPXRoaXM7ay5wb3N0TW91bnRXcmFwcGVyKGUp
fWZ1bmN0aW9uIGMoKXt2YXIgZT10aGlzO2UuX3Jvb3ROb2RlSUQ/dm9pZCAwOnYoIjYzIik7dmFy
IHQ9QihlKTtzd2l0Y2godD92b2lkIDA6digiNjQiKSxlLl90YWcpe2Nhc2UiaWZyYW1lIjpjYXNl
Im9iamVjdCI6ZS5fd3JhcHBlclN0YXRlLmxpc3RlbmVycz1beC50cmFwQnViYmxlZEV2ZW50KHcu
dG9wTGV2ZWxUeXBlcy50b3BMb2FkLCJsb2FkIix0KV07YnJlYWs7Y2FzZSJ2aWRlbyI6Y2FzZSJh
dWRpbyI6ZS5fd3JhcHBlclN0YXRlLmxpc3RlbmVycz1bXTtmb3IodmFyIG4gaW4gWClYLmhhc093
blByb3BlcnR5KG4pJiZlLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzLnB1c2goeC50cmFwQnViYmxl
ZEV2ZW50KHcudG9wTGV2ZWxUeXBlc1tuXSxYW25dLHQpKTticmVhaztjYXNlInNvdXJjZSI6ZS5f
d3JhcHBlclN0YXRlLmxpc3RlbmVycz1beC50cmFwQnViYmxlZEV2ZW50KHcudG9wTGV2ZWxUeXBl
cy50b3BFcnJvciwiZXJyb3IiLHQpXTticmVhaztjYXNlImltZyI6ZS5fd3JhcHBlclN0YXRlLmxp
c3RlbmVycz1beC50cmFwQnViYmxlZEV2ZW50KHcudG9wTGV2ZWxUeXBlcy50b3BFcnJvciwiZXJy
b3IiLHQpLHgudHJhcEJ1YmJsZWRFdmVudCh3LnRvcExldmVsVHlwZXMudG9wTG9hZCwibG9hZCIs
dCldO2JyZWFrO2Nhc2UiZm9ybSI6ZS5fd3JhcHBlclN0YXRlLmxpc3RlbmVycz1beC50cmFwQnVi
YmxlZEV2ZW50KHcudG9wTGV2ZWxUeXBlcy50b3BSZXNldCwicmVzZXQiLHQpLHgudHJhcEJ1YmJs
ZWRFdmVudCh3LnRvcExldmVsVHlwZXMudG9wU3VibWl0LCJzdWJtaXQiLHQpXTticmVhaztjYXNl
ImlucHV0IjpjYXNlInNlbGVjdCI6Y2FzZSJ0ZXh0YXJlYSI6ZS5fd3JhcHBlclN0YXRlLmxpc3Rl
bmVycz1beC50cmFwQnViYmxlZEV2ZW50KHcudG9wTGV2ZWxUeXBlcy50b3BJbnZhbGlkLCJpbnZh
bGlkIix0KV19fWZ1bmN0aW9uIHAoKXtSLnBvc3RVcGRhdGVXcmFwcGVyKHRoaXMpfWZ1bmN0aW9u
IGQoZSl7ZWUuY2FsbChKLGUpfHwoWi50ZXN0KGUpP3ZvaWQgMDp2KCI2NSIsZSksSltlXT0hMCl9
ZnVuY3Rpb24gZihlLHQpe3JldHVybiBlLmluZGV4T2YoIi0iKT49MHx8bnVsbCE9dC5pc31mdW5j
dGlvbiBoKGUpe3ZhciB0PWUudHlwZTtkKHQpLHRoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5f
dGFnPXQudG9Mb3dlckNhc2UoKSx0aGlzLl9uYW1lc3BhY2VVUkk9bnVsbCx0aGlzLl9yZW5kZXJl
ZENoaWxkcmVuPW51bGwsdGhpcy5fcHJldmlvdXNTdHlsZT1udWxsLHRoaXMuX3ByZXZpb3VzU3R5
bGVDb3B5PW51bGwsdGhpcy5faG9zdE5vZGU9bnVsbCx0aGlzLl9ob3N0UGFyZW50PW51bGwsdGhp
cy5fcm9vdE5vZGVJRD0wLHRoaXMuX2RvbUlEPTAsdGhpcy5faG9zdENvbnRhaW5lckluZm89bnVs
bCx0aGlzLl93cmFwcGVyU3RhdGU9bnVsbCx0aGlzLl90b3BMZXZlbFdyYXBwZXI9bnVsbCx0aGlz
Ll9mbGFncz0wfXZhciB2PW4oMiksbT1uKDQpLHk9bigxMzgpLGc9bigxNDApLGI9bigxNyksXz1u
KDM4KSxDPW4oMTgpLEU9big3Miksdz1uKDEyKSxUPW4oMjEpLFA9bigzOSkseD1uKDI4KSxPPW4o
MTUyKSxTPW4oNzUpLE09big1KSxOPW4oMTU5KSxrPW4oMTYwKSxSPW4oNzYpLEQ9bigxNjMpLEk9
KG4oOCksbigxNzEpKSxBPW4oMTc2KSxMPShuKDcpLG4oMzApKSxVPShuKDEpLG4oNTYpLG4oMTQp
KSxqPShuKDM0KSxuKDU5KSxuKDMpLFMpLEY9VC5kZWxldGVMaXN0ZW5lcixCPU0uZ2V0Tm9kZUZy
b21JbnN0YW5jZSxWPXgubGlzdGVuVG8sSD1QLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzLFc9e3N0
cmluZzohMCxudW1iZXI6ITB9LHE9VSh7c3R5bGU6bnVsbH0pLEs9VSh7X19odG1sOm51bGx9KSxZ
PXtjaGlsZHJlbjpudWxsLGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOm51bGwsc3VwcHJlc3NDb250
ZW50RWRpdGFibGVXYXJuaW5nOm51bGx9LHo9MTEsWD17dG9wQWJvcnQ6ImFib3J0Iix0b3BDYW5Q
bGF5OiJjYW5wbGF5Iix0b3BDYW5QbGF5VGhyb3VnaDoiY2FucGxheXRocm91Z2giLHRvcER1cmF0
aW9uQ2hhbmdlOiJkdXJhdGlvbmNoYW5nZSIsdG9wRW1wdGllZDoiZW1wdGllZCIsdG9wRW5jcnlw
dGVkOiJlbmNyeXB0ZWQiLHRvcEVuZGVkOiJlbmRlZCIsdG9wRXJyb3I6ImVycm9yIix0b3BMb2Fk
ZWREYXRhOiJsb2FkZWRkYXRhIix0b3BMb2FkZWRNZXRhZGF0YToibG9hZGVkbWV0YWRhdGEiLHRv
cExvYWRTdGFydDoibG9hZHN0YXJ0Iix0b3BQYXVzZToicGF1c2UiLHRvcFBsYXk6InBsYXkiLHRv
cFBsYXlpbmc6InBsYXlpbmciLHRvcFByb2dyZXNzOiJwcm9ncmVzcyIsdG9wUmF0ZUNoYW5nZToi
cmF0ZWNoYW5nZSIsdG9wU2Vla2VkOiJzZWVrZWQiLHRvcFNlZWtpbmc6InNlZWtpbmciLHRvcFN0
YWxsZWQ6InN0YWxsZWQiLHRvcFN1c3BlbmQ6InN1c3BlbmQiLHRvcFRpbWVVcGRhdGU6InRpbWV1
cGRhdGUiLHRvcFZvbHVtZUNoYW5nZToidm9sdW1lY2hhbmdlIix0b3BXYWl0aW5nOiJ3YWl0aW5n
In0sRz17YXJlYTohMCxiYXNlOiEwLGJyOiEwLGNvbDohMCxlbWJlZDohMCxocjohMCxpbWc6ITAs
aW5wdXQ6ITAsa2V5Z2VuOiEwLGxpbms6ITAsbWV0YTohMCxwYXJhbTohMCxzb3VyY2U6ITAsdHJh
Y2s6ITAsd2JyOiEwfSxRPXtsaXN0aW5nOiEwLHByZTohMCx0ZXh0YXJlYTohMH0sJD1tKHttZW51
aXRlbTohMH0sRyksWj0vXlthLXpBLVpdW2EtekEtWjpfXC5cLVxkXSokLyxKPXt9LGVlPXt9Lmhh
c093blByb3BlcnR5LHRlPTE7aC5kaXNwbGF5TmFtZT0iUmVhY3RET01Db21wb25lbnQiLGguTWl4
aW49e21vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe3RoaXMuX3Jvb3ROb2RlSUQ9dGUr
Kyx0aGlzLl9kb21JRD1uLl9pZENvdW50ZXIrKyx0aGlzLl9ob3N0UGFyZW50PXQsdGhpcy5faG9z
dENvbnRhaW5lckluZm89bjt2YXIgaT10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztzd2l0Y2go
dGhpcy5fdGFnKXtjYXNlImF1ZGlvIjpjYXNlImZvcm0iOmNhc2UiaWZyYW1lIjpjYXNlImltZyI6
Y2FzZSJsaW5rIjpjYXNlIm9iamVjdCI6Y2FzZSJzb3VyY2UiOmNhc2UidmlkZW8iOnRoaXMuX3dy
YXBwZXJTdGF0ZT17bGlzdGVuZXJzOm51bGx9LGUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1
ZShjLHRoaXMpO2JyZWFrO2Nhc2UiYnV0dG9uIjppPU8uZ2V0SG9zdFByb3BzKHRoaXMsaSx0KTti
cmVhaztjYXNlImlucHV0IjpOLm1vdW50V3JhcHBlcih0aGlzLGksdCksaT1OLmdldEhvc3RQcm9w
cyh0aGlzLGkpLGUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShjLHRoaXMpO2JyZWFrO2Nh
c2Uib3B0aW9uIjprLm1vdW50V3JhcHBlcih0aGlzLGksdCksaT1rLmdldEhvc3RQcm9wcyh0aGlz
LGkpO2JyZWFrO2Nhc2Uic2VsZWN0IjpSLm1vdW50V3JhcHBlcih0aGlzLGksdCksaT1SLmdldEhv
c3RQcm9wcyh0aGlzLGkpLGUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShjLHRoaXMpO2Jy
ZWFrO2Nhc2UidGV4dGFyZWEiOkQubW91bnRXcmFwcGVyKHRoaXMsaSx0KSxpPUQuZ2V0SG9zdFBy
b3BzKHRoaXMsaSksZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGMsdGhpcyl9byh0aGlz
LGkpO3ZhciBhLHA7bnVsbCE9dD8oYT10Ll9uYW1lc3BhY2VVUkkscD10Ll90YWcpOm4uX3RhZyYm
KGE9bi5fbmFtZXNwYWNlVVJJLHA9bi5fdGFnKSwobnVsbD09YXx8YT09PV8uc3ZnJiYiZm9yZWln
bm9iamVjdCI9PT1wKSYmKGE9Xy5odG1sKSxhPT09Xy5odG1sJiYoInN2ZyI9PT10aGlzLl90YWc/
YT1fLnN2ZzoibWF0aCI9PT10aGlzLl90YWcmJihhPV8ubWF0aG1sKSksdGhpcy5fbmFtZXNwYWNl
VVJJPWE7dmFyIGQ7aWYoZS51c2VDcmVhdGVFbGVtZW50KXt2YXIgZixoPW4uX293bmVyRG9jdW1l
bnQ7aWYoYT09PV8uaHRtbClpZigic2NyaXB0Ij09PXRoaXMuX3RhZyl7dmFyIHY9aC5jcmVhdGVF
bGVtZW50KCJkaXYiKSxtPXRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7di5pbm5lckhUTUw9Ijwi
K20rIj48LyIrbSsiPiIsZj12LnJlbW92ZUNoaWxkKHYuZmlyc3RDaGlsZCl9ZWxzZSBmPWkuaXM/
aC5jcmVhdGVFbGVtZW50KHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUsaS5pcyk6aC5jcmVhdGVF
bGVtZW50KHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUpO2Vsc2UgZj1oLmNyZWF0ZUVsZW1lbnRO
UyhhLHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUpO00ucHJlY2FjaGVOb2RlKHRoaXMsZiksdGhp
cy5fZmxhZ3N8PWouaGFzQ2FjaGVkQ2hpbGROb2Rlcyx0aGlzLl9ob3N0UGFyZW50fHxFLnNldEF0
dHJpYnV0ZUZvclJvb3QoZiksdGhpcy5fdXBkYXRlRE9NUHJvcGVydGllcyhudWxsLGksZSk7dmFy
IGc9YihmKTt0aGlzLl9jcmVhdGVJbml0aWFsQ2hpbGRyZW4oZSxpLHIsZyksZD1nfWVsc2V7dmFy
IEM9dGhpcy5fY3JlYXRlT3BlblRhZ01hcmt1cEFuZFB1dExpc3RlbmVycyhlLGkpLHc9dGhpcy5f
Y3JlYXRlQ29udGVudE1hcmt1cChlLGkscik7ZD0hdyYmR1t0aGlzLl90YWddP0MrIi8+IjpDKyI+
Iit3KyI8LyIrdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSsiPiJ9c3dpdGNoKHRoaXMuX3RhZyl7
Y2FzZSJpbnB1dCI6ZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHUsdGhpcyksaS5hdXRv
Rm9jdXMmJmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZSh5LmZvY3VzRE9NQ29tcG9uZW50
LHRoaXMpO2JyZWFrO2Nhc2UidGV4dGFyZWEiOmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1
ZShzLHRoaXMpLGkuYXV0b0ZvY3VzJiZlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoeS5m
b2N1c0RPTUNvbXBvbmVudCx0aGlzKTticmVhaztjYXNlInNlbGVjdCI6aS5hdXRvRm9jdXMmJmUu
Z2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZSh5LmZvY3VzRE9NQ29tcG9uZW50LHRoaXMpO2Jy
ZWFrO2Nhc2UiYnV0dG9uIjppLmF1dG9Gb2N1cyYmZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1
ZXVlKHkuZm9jdXNET01Db21wb25lbnQsdGhpcyk7YnJlYWs7Y2FzZSJvcHRpb24iOmUuZ2V0UmVh
Y3RNb3VudFJlYWR5KCkuZW5xdWV1ZShsLHRoaXMpfXJldHVybiBkfSxfY3JlYXRlT3BlblRhZ01h
cmt1cEFuZFB1dExpc3RlbmVyczpmdW5jdGlvbihlLHQpe3ZhciBuPSI8Iit0aGlzLl9jdXJyZW50
RWxlbWVudC50eXBlO2Zvcih2YXIgciBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkocikpe3ZhciBv
PXRbcl07aWYobnVsbCE9bylpZihILmhhc093blByb3BlcnR5KHIpKW8mJmkodGhpcyxyLG8sZSk7
ZWxzZXtyPT09cSYmKG8mJihvPXRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5PW0oe30sdC5zdHlsZSkp
LG89Zy5jcmVhdGVNYXJrdXBGb3JTdHlsZXMobyx0aGlzKSk7dmFyIGE9bnVsbDtudWxsIT10aGlz
Ll90YWcmJmYodGhpcy5fdGFnLHQpP1kuaGFzT3duUHJvcGVydHkocil8fChhPUUuY3JlYXRlTWFy
a3VwRm9yQ3VzdG9tQXR0cmlidXRlKHIsbykpOmE9RS5jcmVhdGVNYXJrdXBGb3JQcm9wZXJ0eShy
LG8pLGEmJihuKz0iICIrYSl9fXJldHVybiBlLnJlbmRlclRvU3RhdGljTWFya3VwP246KHRoaXMu
X2hvc3RQYXJlbnR8fChuKz0iICIrRS5jcmVhdGVNYXJrdXBGb3JSb290KCkpLG4rPSIgIitFLmNy
ZWF0ZU1hcmt1cEZvcklEKHRoaXMuX2RvbUlEKSl9LF9jcmVhdGVDb250ZW50TWFya3VwOmZ1bmN0
aW9uKGUsdCxuKXt2YXIgcj0iIixvPXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw7aWYobnVsbCE9
byludWxsIT1vLl9faHRtbCYmKHI9by5fX2h0bWwpO2Vsc2V7dmFyIGk9V1t0eXBlb2YgdC5jaGls
ZHJlbl0/dC5jaGlsZHJlbjpudWxsLGE9bnVsbCE9aT9udWxsOnQuY2hpbGRyZW47aWYobnVsbCE9
aSlyPUwoaSk7ZWxzZSBpZihudWxsIT1hKXt2YXIgdT10aGlzLm1vdW50Q2hpbGRyZW4oYSxlLG4p
O3I9dS5qb2luKCIiKX19cmV0dXJuIFFbdGhpcy5fdGFnXSYmIlxuIj09PXIuY2hhckF0KDApPyJc
biIrcjpyfSxfY3JlYXRlSW5pdGlhbENoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXQu
ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw7aWYobnVsbCE9byludWxsIT1vLl9faHRtbCYmYi5xdWV1
ZUhUTUwocixvLl9faHRtbCk7ZWxzZXt2YXIgaT1XW3R5cGVvZiB0LmNoaWxkcmVuXT90LmNoaWxk
cmVuOm51bGwsYT1udWxsIT1pP251bGw6dC5jaGlsZHJlbjtpZihudWxsIT1pKWIucXVldWVUZXh0
KHIsaSk7ZWxzZSBpZihudWxsIT1hKWZvcih2YXIgdT10aGlzLm1vdW50Q2hpbGRyZW4oYSxlLG4p
LHM9MDtzPHUubGVuZ3RoO3MrKyliLnF1ZXVlQ2hpbGQocix1W3NdKX19LHJlY2VpdmVDb21wb25l
bnQ6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX2N1cnJlbnRFbGVtZW50O3RoaXMuX2N1cnJl
bnRFbGVtZW50PWUsdGhpcy51cGRhdGVDb21wb25lbnQodCxyLGUsbil9LHVwZGF0ZUNvbXBvbmVu
dDpmdW5jdGlvbihlLHQsbixyKXt2YXIgaT10LnByb3BzLGE9dGhpcy5fY3VycmVudEVsZW1lbnQu
cHJvcHM7c3dpdGNoKHRoaXMuX3RhZyl7Y2FzZSJidXR0b24iOmk9Ty5nZXRIb3N0UHJvcHModGhp
cyxpKSxhPU8uZ2V0SG9zdFByb3BzKHRoaXMsYSk7YnJlYWs7Y2FzZSJpbnB1dCI6aT1OLmdldEhv
c3RQcm9wcyh0aGlzLGkpLGE9Ti5nZXRIb3N0UHJvcHModGhpcyxhKTticmVhaztjYXNlIm9wdGlv
biI6aT1rLmdldEhvc3RQcm9wcyh0aGlzLGkpLGE9ay5nZXRIb3N0UHJvcHModGhpcyxhKTticmVh
aztjYXNlInNlbGVjdCI6aT1SLmdldEhvc3RQcm9wcyh0aGlzLGkpLGE9Ui5nZXRIb3N0UHJvcHMo
dGhpcyxhKTticmVhaztjYXNlInRleHRhcmVhIjppPUQuZ2V0SG9zdFByb3BzKHRoaXMsaSksYT1E
LmdldEhvc3RQcm9wcyh0aGlzLGEpfXN3aXRjaChvKHRoaXMsYSksdGhpcy5fdXBkYXRlRE9NUHJv
cGVydGllcyhpLGEsZSksdGhpcy5fdXBkYXRlRE9NQ2hpbGRyZW4oaSxhLGUsciksdGhpcy5fdGFn
KXtjYXNlImlucHV0IjpOLnVwZGF0ZVdyYXBwZXIodGhpcyk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6
RC51cGRhdGVXcmFwcGVyKHRoaXMpO2JyZWFrO2Nhc2Uic2VsZWN0IjplLmdldFJlYWN0TW91bnRS
ZWFkeSgpLmVucXVldWUocCx0aGlzKX19LF91cGRhdGVET01Qcm9wZXJ0aWVzOmZ1bmN0aW9uKGUs
dCxuKXt2YXIgcixvLGE7Zm9yKHIgaW4gZSlpZighdC5oYXNPd25Qcm9wZXJ0eShyKSYmZS5oYXNP
d25Qcm9wZXJ0eShyKSYmbnVsbCE9ZVtyXSlpZihyPT09cSl7dmFyIHU9dGhpcy5fcHJldmlvdXNT
dHlsZUNvcHk7Zm9yKG8gaW4gdSl1Lmhhc093blByb3BlcnR5KG8pJiYoYT1hfHx7fSxhW29dPSIi
KTt0aGlzLl9wcmV2aW91c1N0eWxlQ29weT1udWxsfWVsc2UgSC5oYXNPd25Qcm9wZXJ0eShyKT9l
W3JdJiZGKHRoaXMscik6Zih0aGlzLl90YWcsZSk/WS5oYXNPd25Qcm9wZXJ0eShyKXx8RS5kZWxl
dGVWYWx1ZUZvckF0dHJpYnV0ZShCKHRoaXMpLHIpOihDLnByb3BlcnRpZXNbcl18fEMuaXNDdXN0
b21BdHRyaWJ1dGUocikpJiZFLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkoQih0aGlzKSxyKTtmb3Io
ciBpbiB0KXt2YXIgcz10W3JdLGw9cj09PXE/dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk6bnVsbCE9
ZT9lW3JdOnZvaWQgMDtpZih0Lmhhc093blByb3BlcnR5KHIpJiZzIT09bCYmKG51bGwhPXN8fG51
bGwhPWwpKWlmKHI9PT1xKWlmKHM/cz10aGlzLl9wcmV2aW91c1N0eWxlQ29weT1tKHt9LHMpOnRo
aXMuX3ByZXZpb3VzU3R5bGVDb3B5PW51bGwsbCl7Zm9yKG8gaW4gbCkhbC5oYXNPd25Qcm9wZXJ0
eShvKXx8cyYmcy5oYXNPd25Qcm9wZXJ0eShvKXx8KGE9YXx8e30sYVtvXT0iIik7Zm9yKG8gaW4g
cylzLmhhc093blByb3BlcnR5KG8pJiZsW29dIT09c1tvXSYmKGE9YXx8e30sYVtvXT1zW29dKX1l
bHNlIGE9cztlbHNlIGlmKEguaGFzT3duUHJvcGVydHkocikpcz9pKHRoaXMscixzLG4pOmwmJkYo
dGhpcyxyKTtlbHNlIGlmKGYodGhpcy5fdGFnLHQpKVkuaGFzT3duUHJvcGVydHkocil8fEUuc2V0
VmFsdWVGb3JBdHRyaWJ1dGUoQih0aGlzKSxyLHMpO2Vsc2UgaWYoQy5wcm9wZXJ0aWVzW3JdfHxD
LmlzQ3VzdG9tQXR0cmlidXRlKHIpKXt2YXIgYz1CKHRoaXMpO251bGwhPXM/RS5zZXRWYWx1ZUZv
clByb3BlcnR5KGMscixzKTpFLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkoYyxyKX19YSYmZy5zZXRW
YWx1ZUZvclN0eWxlcyhCKHRoaXMpLGEsdGhpcyl9LF91cGRhdGVET01DaGlsZHJlbjpmdW5jdGlv
bihlLHQsbixyKXt2YXIgbz1XW3R5cGVvZiBlLmNoaWxkcmVuXT9lLmNoaWxkcmVuOm51bGwsaT1X
W3R5cGVvZiB0LmNoaWxkcmVuXT90LmNoaWxkcmVuOm51bGwsYT1lLmRhbmdlcm91c2x5U2V0SW5u
ZXJIVE1MJiZlLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbCx1PXQuZGFuZ2Vyb3VzbHlT
ZXRJbm5lckhUTUwmJnQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sLHM9bnVsbCE9bz9u
dWxsOmUuY2hpbGRyZW4sbD1udWxsIT1pP251bGw6dC5jaGlsZHJlbixjPW51bGwhPW98fG51bGwh
PWEscD1udWxsIT1pfHxudWxsIT11O251bGwhPXMmJm51bGw9PWw/dGhpcy51cGRhdGVDaGlsZHJl
bihudWxsLG4scik6YyYmIXAmJnRoaXMudXBkYXRlVGV4dENvbnRlbnQoIiIpLG51bGwhPWk/byE9
PWkmJnRoaXMudXBkYXRlVGV4dENvbnRlbnQoIiIraSk6bnVsbCE9dT9hIT09dSYmdGhpcy51cGRh
dGVNYXJrdXAoIiIrdSk6bnVsbCE9bCYmdGhpcy51cGRhdGVDaGlsZHJlbihsLG4scil9LGdldEhv
c3ROb2RlOmZ1bmN0aW9uKCl7cmV0dXJuIEIodGhpcyl9LHVubW91bnRDb21wb25lbnQ6ZnVuY3Rp
b24oZSl7c3dpdGNoKHRoaXMuX3RhZyl7Y2FzZSJhdWRpbyI6Y2FzZSJmb3JtIjpjYXNlImlmcmFt
ZSI6Y2FzZSJpbWciOmNhc2UibGluayI6Y2FzZSJvYmplY3QiOmNhc2Uic291cmNlIjpjYXNlInZp
ZGVvIjp2YXIgdD10aGlzLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzO2lmKHQpZm9yKHZhciBuPTA7
bjx0Lmxlbmd0aDtuKyspdFtuXS5yZW1vdmUoKTticmVhaztjYXNlImh0bWwiOmNhc2UiaGVhZCI6
Y2FzZSJib2R5Ijp2KCI2NiIsdGhpcy5fdGFnKX10aGlzLnVubW91bnRDaGlsZHJlbihlKSxNLnVu
Y2FjaGVOb2RlKHRoaXMpLFQuZGVsZXRlQWxsTGlzdGVuZXJzKHRoaXMpLHRoaXMuX3Jvb3ROb2Rl
SUQ9MCx0aGlzLl9kb21JRD0wLHRoaXMuX3dyYXBwZXJTdGF0ZT1udWxsfSxnZXRQdWJsaWNJbnN0
YW5jZTpmdW5jdGlvbigpe3JldHVybiBCKHRoaXMpfX0sbShoLnByb3RvdHlwZSxoLk1peGluLEku
TWl4aW4pLGUuZXhwb3J0cz1ofSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSx0KXt2YXIgbj17X3RvcExldmVsV3JhcHBlcjplLF9pZENvdW50ZXI6MSxfb3duZXJEb2N1
bWVudDp0P3Qubm9kZVR5cGU9PT1vP3Q6dC5vd25lckRvY3VtZW50Om51bGwsX25vZGU6dCxfdGFn
OnQ/dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOm51bGwsX25hbWVzcGFjZVVSSTp0P3QubmFtZXNw
YWNlVVJJOm51bGx9O3JldHVybiBufXZhciBvPShuKDU5KSw5KTtlLmV4cG9ydHM9cn0sZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDQpLG89bigxNyksaT1uKDUpLGE9ZnVuY3Rp
b24oZSl7dGhpcy5fY3VycmVudEVsZW1lbnQ9bnVsbCx0aGlzLl9ob3N0Tm9kZT1udWxsLHRoaXMu
X2hvc3RQYXJlbnQ9bnVsbCx0aGlzLl9ob3N0Q29udGFpbmVySW5mbz1udWxsLHRoaXMuX2RvbUlE
PTB9O3IoYS5wcm90b3R5cGUse21vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBh
PW4uX2lkQ291bnRlcisrO3RoaXMuX2RvbUlEPWEsdGhpcy5faG9zdFBhcmVudD10LHRoaXMuX2hv
c3RDb250YWluZXJJbmZvPW47dmFyIHU9IiByZWFjdC1lbXB0eTogIit0aGlzLl9kb21JRCsiICI7
aWYoZS51c2VDcmVhdGVFbGVtZW50KXt2YXIgcz1uLl9vd25lckRvY3VtZW50LGw9cy5jcmVhdGVD
b21tZW50KHUpO3JldHVybiBpLnByZWNhY2hlTm9kZSh0aGlzLGwpLG8obCl9cmV0dXJuIGUucmVu
ZGVyVG9TdGF0aWNNYXJrdXA/IiI6IjwhLS0iK3UrIi0tPiJ9LHJlY2VpdmVDb21wb25lbnQ6ZnVu
Y3Rpb24oKXt9LGdldEhvc3ROb2RlOmZ1bmN0aW9uKCl7cmV0dXJuIGkuZ2V0Tm9kZUZyb21JbnN0
YW5jZSh0aGlzKX0sdW5tb3VudENvbXBvbmVudDpmdW5jdGlvbigpe2kudW5jYWNoZU5vZGUodGhp
cyl9fSksZS5leHBvcnRzPWF9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big5
KSxvPXIuY3JlYXRlRmFjdG9yeSxpPXthOm8oImEiKSxhYmJyOm8oImFiYnIiKSxhZGRyZXNzOm8o
ImFkZHJlc3MiKSxhcmVhOm8oImFyZWEiKSxhcnRpY2xlOm8oImFydGljbGUiKSxhc2lkZTpvKCJh
c2lkZSIpLGF1ZGlvOm8oImF1ZGlvIiksYjpvKCJiIiksYmFzZTpvKCJiYXNlIiksYmRpOm8oImJk
aSIpLGJkbzpvKCJiZG8iKSxiaWc6bygiYmlnIiksYmxvY2txdW90ZTpvKCJibG9ja3F1b3RlIiks
Ym9keTpvKCJib2R5IiksYnI6bygiYnIiKSxidXR0b246bygiYnV0dG9uIiksY2FudmFzOm8oImNh
bnZhcyIpLGNhcHRpb246bygiY2FwdGlvbiIpLGNpdGU6bygiY2l0ZSIpLGNvZGU6bygiY29kZSIp
LGNvbDpvKCJjb2wiKSxjb2xncm91cDpvKCJjb2xncm91cCIpLGRhdGE6bygiZGF0YSIpLGRhdGFs
aXN0Om8oImRhdGFsaXN0IiksZGQ6bygiZGQiKSxkZWw6bygiZGVsIiksZGV0YWlsczpvKCJkZXRh
aWxzIiksZGZuOm8oImRmbiIpLGRpYWxvZzpvKCJkaWFsb2ciKSxkaXY6bygiZGl2IiksZGw6bygi
ZGwiKSxkdDpvKCJkdCIpLGVtOm8oImVtIiksZW1iZWQ6bygiZW1iZWQiKSxmaWVsZHNldDpvKCJm
aWVsZHNldCIpLGZpZ2NhcHRpb246bygiZmlnY2FwdGlvbiIpLGZpZ3VyZTpvKCJmaWd1cmUiKSxm
b290ZXI6bygiZm9vdGVyIiksZm9ybTpvKCJmb3JtIiksaDE6bygiaDEiKSxoMjpvKCJoMiIpLGgz
Om8oImgzIiksaDQ6bygiaDQiKSxoNTpvKCJoNSIpLGg2Om8oImg2IiksaGVhZDpvKCJoZWFkIiks
aGVhZGVyOm8oImhlYWRlciIpLGhncm91cDpvKCJoZ3JvdXAiKSxocjpvKCJociIpLGh0bWw6bygi
aHRtbCIpLGk6bygiaSIpLGlmcmFtZTpvKCJpZnJhbWUiKSxpbWc6bygiaW1nIiksaW5wdXQ6bygi
aW5wdXQiKSxpbnM6bygiaW5zIiksa2JkOm8oImtiZCIpLGtleWdlbjpvKCJrZXlnZW4iKSxsYWJl
bDpvKCJsYWJlbCIpLGxlZ2VuZDpvKCJsZWdlbmQiKSxsaTpvKCJsaSIpLGxpbms6bygibGluayIp
LG1haW46bygibWFpbiIpLG1hcDpvKCJtYXAiKSxtYXJrOm8oIm1hcmsiKSxtZW51Om8oIm1lbnUi
KSxtZW51aXRlbTpvKCJtZW51aXRlbSIpLG1ldGE6bygibWV0YSIpLG1ldGVyOm8oIm1ldGVyIiks
bmF2Om8oIm5hdiIpLG5vc2NyaXB0Om8oIm5vc2NyaXB0Iiksb2JqZWN0Om8oIm9iamVjdCIpLG9s
Om8oIm9sIiksb3B0Z3JvdXA6bygib3B0Z3JvdXAiKSxvcHRpb246bygib3B0aW9uIiksb3V0cHV0
Om8oIm91dHB1dCIpLHA6bygicCIpLHBhcmFtOm8oInBhcmFtIikscGljdHVyZTpvKCJwaWN0dXJl
IikscHJlOm8oInByZSIpLHByb2dyZXNzOm8oInByb2dyZXNzIikscTpvKCJxIikscnA6bygicnAi
KSxydDpvKCJydCIpLHJ1Ynk6bygicnVieSIpLHM6bygicyIpLHNhbXA6bygic2FtcCIpLHNjcmlw
dDpvKCJzY3JpcHQiKSxzZWN0aW9uOm8oInNlY3Rpb24iKSxzZWxlY3Q6bygic2VsZWN0Iiksc21h
bGw6bygic21hbGwiKSxzb3VyY2U6bygic291cmNlIiksc3BhbjpvKCJzcGFuIiksc3Ryb25nOm8o
InN0cm9uZyIpLHN0eWxlOm8oInN0eWxlIiksc3ViOm8oInN1YiIpLHN1bW1hcnk6bygic3VtbWFy
eSIpLHN1cDpvKCJzdXAiKSx0YWJsZTpvKCJ0YWJsZSIpLHRib2R5Om8oInRib2R5IiksdGQ6bygi
dGQiKSx0ZXh0YXJlYTpvKCJ0ZXh0YXJlYSIpLHRmb290Om8oInRmb290IiksdGg6bygidGgiKSx0
aGVhZDpvKCJ0aGVhZCIpLHRpbWU6bygidGltZSIpLHRpdGxlOm8oInRpdGxlIiksdHI6bygidHIi
KSx0cmFjazpvKCJ0cmFjayIpLHU6bygidSIpLHVsOm8oInVsIiksdmFyOm8oInZhciIpLHZpZGVv
Om8oInZpZGVvIiksd2JyOm8oIndiciIpLGNpcmNsZTpvKCJjaXJjbGUiKSxjbGlwUGF0aDpvKCJj
bGlwUGF0aCIpLGRlZnM6bygiZGVmcyIpLGVsbGlwc2U6bygiZWxsaXBzZSIpLGc6bygiZyIpLGlt
YWdlOm8oImltYWdlIiksbGluZTpvKCJsaW5lIiksbGluZWFyR3JhZGllbnQ6bygibGluZWFyR3Jh
ZGllbnQiKSxtYXNrOm8oIm1hc2siKSxwYXRoOm8oInBhdGgiKSxwYXR0ZXJuOm8oInBhdHRlcm4i
KSxwb2x5Z29uOm8oInBvbHlnb24iKSxwb2x5bGluZTpvKCJwb2x5bGluZSIpLHJhZGlhbEdyYWRp
ZW50Om8oInJhZGlhbEdyYWRpZW50IikscmVjdDpvKCJyZWN0Iiksc3RvcDpvKCJzdG9wIiksc3Zn
Om8oInN2ZyIpLHRleHQ6bygidGV4dCIpLHRzcGFuOm8oInRzcGFuIil9O2UuZXhwb3J0cz1pfSxm
dW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17dXNlQ3JlYXRlRWxlbWVudDohMH07ZS5l
eHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigzNyksbz1uKDUp
LGk9e2Rhbmdlcm91c2x5UHJvY2Vzc0NoaWxkcmVuVXBkYXRlczpmdW5jdGlvbihlLHQpe3ZhciBu
PW8uZ2V0Tm9kZUZyb21JbnN0YW5jZShlKTtyLnByb2Nlc3NVcGRhdGVzKG4sdCl9fTtlLmV4cG9y
dHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7dGhpcy5fcm9v
dE5vZGVJRCYmZC51cGRhdGVXcmFwcGVyKHRoaXMpfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9dGhpcy5f
Y3VycmVudEVsZW1lbnQucHJvcHMsbj1sLmV4ZWN1dGVPbkNoYW5nZSh0LGUpO3AuYXNhcChyLHRo
aXMpO3ZhciBvPXQubmFtZTtpZigicmFkaW8iPT09dC50eXBlJiZudWxsIT1vKXtmb3IodmFyIGE9
Yy5nZXROb2RlRnJvbUluc3RhbmNlKHRoaXMpLHU9YTt1LnBhcmVudE5vZGU7KXU9dS5wYXJlbnRO
b2RlO2Zvcih2YXIgcz11LnF1ZXJ5U2VsZWN0b3JBbGwoImlucHV0W25hbWU9IitKU09OLnN0cmlu
Z2lmeSgiIitvKSsnXVt0eXBlPSJyYWRpbyJdJyksZD0wO2Q8cy5sZW5ndGg7ZCsrKXt2YXIgZj1z
W2RdO2lmKGYhPT1hJiZmLmZvcm09PT1hLmZvcm0pe3ZhciBoPWMuZ2V0SW5zdGFuY2VGcm9tTm9k
ZShmKTtoP3ZvaWQgMDppKCI5MCIpLHAuYXNhcChyLGgpfX19cmV0dXJuIG59dmFyIGk9bigyKSxh
PW4oNCksdT1uKDI3KSxzPW4oNzIpLGw9big0MiksYz1uKDUpLHA9bigxMCksZD0obigxKSxuKDMp
LHtnZXRIb3N0UHJvcHM6ZnVuY3Rpb24oZSx0KXt2YXIgbj1sLmdldFZhbHVlKHQpLHI9bC5nZXRD
aGVja2VkKHQpLG89YSh7dHlwZTp2b2lkIDAsc3RlcDp2b2lkIDAsbWluOnZvaWQgMCxtYXg6dm9p
ZCAwfSx1LmdldEhvc3RQcm9wcyhlLHQpLHtkZWZhdWx0Q2hlY2tlZDp2b2lkIDAsZGVmYXVsdFZh
bHVlOnZvaWQgMCx2YWx1ZTpudWxsIT1uP246ZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSxj
aGVja2VkOm51bGwhPXI/cjplLl93cmFwcGVyU3RhdGUuaW5pdGlhbENoZWNrZWQsb25DaGFuZ2U6
ZS5fd3JhcHBlclN0YXRlLm9uQ2hhbmdlfSk7cmV0dXJuIG99LG1vdW50V3JhcHBlcjpmdW5jdGlv
bihlLHQpe3ZhciBuPXQuZGVmYXVsdFZhbHVlO2UuX3dyYXBwZXJTdGF0ZT17aW5pdGlhbENoZWNr
ZWQ6bnVsbCE9dC5jaGVja2VkP3QuY2hlY2tlZDp0LmRlZmF1bHRDaGVja2VkLGluaXRpYWxWYWx1
ZTpudWxsIT10LnZhbHVlP3QudmFsdWU6bixsaXN0ZW5lcnM6bnVsbCxvbkNoYW5nZTpvLmJpbmQo
ZSl9fSx1cGRhdGVXcmFwcGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50LnBy
b3BzLG49dC5jaGVja2VkO251bGwhPW4mJnMuc2V0VmFsdWVGb3JQcm9wZXJ0eShjLmdldE5vZGVG
cm9tSW5zdGFuY2UoZSksImNoZWNrZWQiLG58fCExKTt2YXIgcj1jLmdldE5vZGVGcm9tSW5zdGFu
Y2UoZSksbz1sLmdldFZhbHVlKHQpO2lmKG51bGwhPW8pe3ZhciBpPSIiK287aSE9PXIudmFsdWUm
JihyLnZhbHVlPWkpfWVsc2UgbnVsbD09dC52YWx1ZSYmbnVsbCE9dC5kZWZhdWx0VmFsdWUmJihy
LmRlZmF1bHRWYWx1ZT0iIit0LmRlZmF1bHRWYWx1ZSksbnVsbD09dC5jaGVja2VkJiZudWxsIT10
LmRlZmF1bHRDaGVja2VkJiYoci5kZWZhdWx0Q2hlY2tlZD0hIXQuZGVmYXVsdENoZWNrZWQpfSxw
b3N0TW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50LnByb3Bz
LG49Yy5nZXROb2RlRnJvbUluc3RhbmNlKGUpO3N3aXRjaCh0LnR5cGUpe2Nhc2Uic3VibWl0Ijpj
YXNlInJlc2V0IjpicmVhaztjYXNlImNvbG9yIjpjYXNlImRhdGUiOmNhc2UiZGF0ZXRpbWUiOmNh
c2UiZGF0ZXRpbWUtbG9jYWwiOmNhc2UibW9udGgiOmNhc2UidGltZSI6Y2FzZSJ3ZWVrIjpuLnZh
bHVlPSIiLG4udmFsdWU9bi5kZWZhdWx0VmFsdWU7YnJlYWs7ZGVmYXVsdDpuLnZhbHVlPW4udmFs
dWV9dmFyIHI9bi5uYW1lOyIiIT09ciYmKG4ubmFtZT0iIiksbi5kZWZhdWx0Q2hlY2tlZD0hbi5k
ZWZhdWx0Q2hlY2tlZCxuLmRlZmF1bHRDaGVja2VkPSFuLmRlZmF1bHRDaGVja2VkLCIiIT09ciYm
KG4ubmFtZT1yKX19KTtlLmV4cG9ydHM9ZH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUpe3ZhciB0PSIiO3JldHVybiBpLmZvckVhY2goZSxmdW5jdGlvbihlKXtudWxs
IT1lJiYoInN0cmluZyI9PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9mIGU/dCs9ZTpzfHwocz0h
MCkpfSksdH12YXIgbz1uKDQpLGk9big3MyksYT1uKDUpLHU9big3Nikscz0obigzKSwhMSksbD17
bW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUsdCxuKXt2YXIgbz1udWxsO2lmKG51bGwhPW4pe3ZhciBp
PW47Im9wdGdyb3VwIj09PWkuX3RhZyYmKGk9aS5faG9zdFBhcmVudCksbnVsbCE9aSYmInNlbGVj
dCI9PT1pLl90YWcmJihvPXUuZ2V0U2VsZWN0VmFsdWVDb250ZXh0KGkpKX12YXIgYT1udWxsO2lm
KG51bGwhPW8pe3ZhciBzO2lmKHM9bnVsbCE9dC52YWx1ZT90LnZhbHVlKyIiOnIodC5jaGlsZHJl
biksYT0hMSxBcnJheS5pc0FycmF5KG8pKXtmb3IodmFyIGw9MDtsPG8ubGVuZ3RoO2wrKylpZigi
IitvW2xdPT09cyl7YT0hMDticmVha319ZWxzZSBhPSIiK289PT1zfWUuX3dyYXBwZXJTdGF0ZT17
c2VsZWN0ZWQ6YX19LHBvc3RNb3VudFdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5fY3VycmVu
dEVsZW1lbnQucHJvcHM7aWYobnVsbCE9dC52YWx1ZSl7dmFyIG49YS5nZXROb2RlRnJvbUluc3Rh
bmNlKGUpO24uc2V0QXR0cmlidXRlKCJ2YWx1ZSIsdC52YWx1ZSl9fSxnZXRIb3N0UHJvcHM6ZnVu
Y3Rpb24oZSx0KXt2YXIgbj1vKHtzZWxlY3RlZDp2b2lkIDAsY2hpbGRyZW46dm9pZCAwfSx0KTtu
dWxsIT1lLl93cmFwcGVyU3RhdGUuc2VsZWN0ZWQmJihuLnNlbGVjdGVkPWUuX3dyYXBwZXJTdGF0
ZS5zZWxlY3RlZCk7dmFyIGk9cih0LmNoaWxkcmVuKTtyZXR1cm4gaSYmKG4uY2hpbGRyZW49aSks
bn19O2UuZXhwb3J0cz1sfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSx0LG4scil7cmV0dXJuIGU9PT1uJiZ0PT09cn1mdW5jdGlvbiBvKGUpe3ZhciB0PWRvY3VtZW50
LnNlbGVjdGlvbixuPXQuY3JlYXRlUmFuZ2UoKSxyPW4udGV4dC5sZW5ndGgsbz1uLmR1cGxpY2F0
ZSgpO28ubW92ZVRvRWxlbWVudFRleHQoZSksby5zZXRFbmRQb2ludCgiRW5kVG9TdGFydCIsbik7
dmFyIGk9by50ZXh0Lmxlbmd0aCxhPWkrcjtyZXR1cm57c3RhcnQ6aSxlbmQ6YX19ZnVuY3Rpb24g
aShlKXt2YXIgdD13aW5kb3cuZ2V0U2VsZWN0aW9uJiZ3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7aWYo
IXR8fDA9PT10LnJhbmdlQ291bnQpcmV0dXJuIG51bGw7dmFyIG49dC5hbmNob3JOb2RlLG89dC5h
bmNob3JPZmZzZXQsaT10LmZvY3VzTm9kZSxhPXQuZm9jdXNPZmZzZXQsdT10LmdldFJhbmdlQXQo
MCk7dHJ5e3Uuc3RhcnRDb250YWluZXIubm9kZVR5cGUsdS5lbmRDb250YWluZXIubm9kZVR5cGV9
Y2F0Y2gocyl7cmV0dXJuIG51bGx9dmFyIGw9cih0LmFuY2hvck5vZGUsdC5hbmNob3JPZmZzZXQs
dC5mb2N1c05vZGUsdC5mb2N1c09mZnNldCksYz1sPzA6dS50b1N0cmluZygpLmxlbmd0aCxwPXUu
Y2xvbmVSYW5nZSgpO3Auc2VsZWN0Tm9kZUNvbnRlbnRzKGUpLHAuc2V0RW5kKHUuc3RhcnRDb250
YWluZXIsdS5zdGFydE9mZnNldCk7dmFyIGQ9cihwLnN0YXJ0Q29udGFpbmVyLHAuc3RhcnRPZmZz
ZXQscC5lbmRDb250YWluZXIscC5lbmRPZmZzZXQpLGY9ZD8wOnAudG9TdHJpbmcoKS5sZW5ndGgs
aD1mK2Msdj1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO3Yuc2V0U3RhcnQobixvKSx2LnNldEVuZChp
LGEpO3ZhciBtPXYuY29sbGFwc2VkO3JldHVybntzdGFydDptP2g6ZixlbmQ6bT9mOmh9fWZ1bmN0
aW9uIGEoZSx0KXt2YXIgbixyLG89ZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCkuZHVw
bGljYXRlKCk7dm9pZCAwPT09dC5lbmQ/KG49dC5zdGFydCxyPW4pOnQuc3RhcnQ+dC5lbmQ/KG49
dC5lbmQscj10LnN0YXJ0KToobj10LnN0YXJ0LHI9dC5lbmQpLG8ubW92ZVRvRWxlbWVudFRleHQo
ZSksby5tb3ZlU3RhcnQoImNoYXJhY3RlciIsbiksby5zZXRFbmRQb2ludCgiRW5kVG9TdGFydCIs
byksby5tb3ZlRW5kKCJjaGFyYWN0ZXIiLHItbiksby5zZWxlY3QoKX1mdW5jdGlvbiB1KGUsdCl7
aWYod2luZG93LmdldFNlbGVjdGlvbil7dmFyIG49d2luZG93LmdldFNlbGVjdGlvbigpLHI9ZVtj
KCldLmxlbmd0aCxvPU1hdGgubWluKHQuc3RhcnQsciksaT12b2lkIDA9PT10LmVuZD9vOk1hdGgu
bWluKHQuZW5kLHIpO2lmKCFuLmV4dGVuZCYmbz5pKXt2YXIgYT1pO2k9byxvPWF9dmFyIHU9bChl
LG8pLHM9bChlLGkpO2lmKHUmJnMpe3ZhciBwPWRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7cC5zZXRT
dGFydCh1Lm5vZGUsdS5vZmZzZXQpLG4ucmVtb3ZlQWxsUmFuZ2VzKCksbz5pPyhuLmFkZFJhbmdl
KHApLG4uZXh0ZW5kKHMubm9kZSxzLm9mZnNldCkpOihwLnNldEVuZChzLm5vZGUscy5vZmZzZXQp
LG4uYWRkUmFuZ2UocCkpfX19dmFyIHM9big2KSxsPW4oMTk3KSxjPW4oOTIpLHA9cy5jYW5Vc2VE
T00mJiJzZWxlY3Rpb24iaW4gZG9jdW1lbnQmJiEoImdldFNlbGVjdGlvbiJpbiB3aW5kb3cpLGQ9
e2dldE9mZnNldHM6cD9vOmksc2V0T2Zmc2V0czpwP2E6dX07ZS5leHBvcnRzPWR9LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigyKSxvPW4oNCksaT1uKDM3KSxhPW4oMTcpLHU9
big1KSxzPW4oMzApLGw9KG4oMSksbig1OSksZnVuY3Rpb24oZSl7dGhpcy5fY3VycmVudEVsZW1l
bnQ9ZSx0aGlzLl9zdHJpbmdUZXh0PSIiK2UsdGhpcy5faG9zdE5vZGU9bnVsbCx0aGlzLl9ob3N0
UGFyZW50PW51bGwsdGhpcy5fZG9tSUQ9MCx0aGlzLl9tb3VudEluZGV4PTAsdGhpcy5fY2xvc2lu
Z0NvbW1lbnQ9bnVsbCx0aGlzLl9jb21tZW50Tm9kZXM9bnVsbH0pO28obC5wcm90b3R5cGUse21v
dW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPW4uX2lkQ291bnRlcisrLGk9IiBy
ZWFjdC10ZXh0OiAiK28rIiAiLGw9IiAvcmVhY3QtdGV4dCAiO2lmKHRoaXMuX2RvbUlEPW8sdGhp
cy5faG9zdFBhcmVudD10LGUudXNlQ3JlYXRlRWxlbWVudCl7dmFyIGM9bi5fb3duZXJEb2N1bWVu
dCxwPWMuY3JlYXRlQ29tbWVudChpKSxkPWMuY3JlYXRlQ29tbWVudChsKSxmPWEoYy5jcmVhdGVE
b2N1bWVudEZyYWdtZW50KCkpO3JldHVybiBhLnF1ZXVlQ2hpbGQoZixhKHApKSx0aGlzLl9zdHJp
bmdUZXh0JiZhLnF1ZXVlQ2hpbGQoZixhKGMuY3JlYXRlVGV4dE5vZGUodGhpcy5fc3RyaW5nVGV4
dCkpKSxhLnF1ZXVlQ2hpbGQoZixhKGQpKSx1LnByZWNhY2hlTm9kZSh0aGlzLHApLHRoaXMuX2Ns
b3NpbmdDb21tZW50PWQsZn12YXIgaD1zKHRoaXMuX3N0cmluZ1RleHQpO3JldHVybiBlLnJlbmRl
clRvU3RhdGljTWFya3VwP2g6IjwhLS0iK2krIi0tPiIraCsiPCEtLSIrbCsiLS0+In0scmVjZWl2
ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQpe2lmKGUhPT10aGlzLl9jdXJyZW50RWxlbWVudCl7dGhp
cy5fY3VycmVudEVsZW1lbnQ9ZTt2YXIgbj0iIitlO2lmKG4hPT10aGlzLl9zdHJpbmdUZXh0KXt0
aGlzLl9zdHJpbmdUZXh0PW47dmFyIHI9dGhpcy5nZXRIb3N0Tm9kZSgpO2kucmVwbGFjZURlbGlt
aXRlZFRleHQoclswXSxyWzFdLG4pfX19LGdldEhvc3ROb2RlOmZ1bmN0aW9uKCl7dmFyIGU9dGhp
cy5fY29tbWVudE5vZGVzO2lmKGUpcmV0dXJuIGU7aWYoIXRoaXMuX2Nsb3NpbmdDb21tZW50KWZv
cih2YXIgdD11LmdldE5vZGVGcm9tSW5zdGFuY2UodGhpcyksbj10Lm5leHRTaWJsaW5nOzspe2lm
KG51bGw9PW4/cigiNjciLHRoaXMuX2RvbUlEKTp2b2lkIDAsOD09PW4ubm9kZVR5cGUmJiIgL3Jl
YWN0LXRleHQgIj09PW4ubm9kZVZhbHVlKXt0aGlzLl9jbG9zaW5nQ29tbWVudD1uO2JyZWFrfW49
bi5uZXh0U2libGluZ31yZXR1cm4gZT1bdGhpcy5faG9zdE5vZGUsdGhpcy5fY2xvc2luZ0NvbW1l
bnRdLHRoaXMuX2NvbW1lbnROb2Rlcz1lLGV9LHVubW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oKXt0
aGlzLl9jbG9zaW5nQ29tbWVudD1udWxsLHRoaXMuX2NvbW1lbnROb2Rlcz1udWxsLHUudW5jYWNo
ZU5vZGUodGhpcyl9fSksZS5leHBvcnRzPWx9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcigpe3RoaXMuX3Jvb3ROb2RlSUQmJnAudXBkYXRlV3JhcHBlcih0aGlzKX1mdW5j
dGlvbiBvKGUpe3ZhciB0PXRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzLG49cy5leGVjdXRlT25D
aGFuZ2UodCxlKTtyZXR1cm4gYy5hc2FwKHIsdGhpcyksbn12YXIgaT1uKDIpLGE9big0KSx1PW4o
MjcpLHM9big0MiksbD1uKDUpLGM9bigxMCkscD0obigxKSxuKDMpLHtnZXRIb3N0UHJvcHM6ZnVu
Y3Rpb24oZSx0KXtudWxsIT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MP2koIjkxIik6dm9pZCAw
O3ZhciBuPWEoe30sdS5nZXRIb3N0UHJvcHMoZSx0KSx7dmFsdWU6dm9pZCAwLGRlZmF1bHRWYWx1
ZTp2b2lkIDAsY2hpbGRyZW46IiIrZS5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSxvbkNoYW5n
ZTplLl93cmFwcGVyU3RhdGUub25DaGFuZ2V9KTtyZXR1cm4gbn0sbW91bnRXcmFwcGVyOmZ1bmN0
aW9uKGUsdCl7dmFyIG49cy5nZXRWYWx1ZSh0KSxyPW47aWYobnVsbD09bil7dmFyIGE9dC5kZWZh
dWx0VmFsdWUsdT10LmNoaWxkcmVuO251bGwhPXUmJihudWxsIT1hP2koIjkyIik6dm9pZCAwLEFy
cmF5LmlzQXJyYXkodSkmJih1Lmxlbmd0aDw9MT92b2lkIDA6aSgiOTMiKSx1PXVbMF0pLGE9IiIr
dSksbnVsbD09YSYmKGE9IiIpLHI9YX1lLl93cmFwcGVyU3RhdGU9e2luaXRpYWxWYWx1ZToiIity
LGxpc3RlbmVyczpudWxsLG9uQ2hhbmdlOm8uYmluZChlKX19LHVwZGF0ZVdyYXBwZXI6ZnVuY3Rp
b24oZSl7dmFyIHQ9ZS5fY3VycmVudEVsZW1lbnQucHJvcHMsbj1sLmdldE5vZGVGcm9tSW5zdGFu
Y2UoZSkscj1zLmdldFZhbHVlKHQpO2lmKG51bGwhPXIpe3ZhciBvPSIiK3I7byE9PW4udmFsdWUm
JihuLnZhbHVlPW8pLG51bGw9PXQuZGVmYXVsdFZhbHVlJiYobi5kZWZhdWx0VmFsdWU9byl9bnVs
bCE9dC5kZWZhdWx0VmFsdWUmJihuLmRlZmF1bHRWYWx1ZT10LmRlZmF1bHRWYWx1ZSl9LHBvc3RN
b3VudFdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9bC5nZXROb2RlRnJvbUluc3RhbmNlKGUpO3Qu
dmFsdWU9dC50ZXh0Q29udGVudH19KTtlLmV4cG9ydHM9cH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7Il9ob3N0Tm9kZSJpbiBlP3ZvaWQgMDpzKCIzMyIpLCJf
aG9zdE5vZGUiaW4gdD92b2lkIDA6cygiMzMiKTtmb3IodmFyIG49MCxyPWU7cjtyPXIuX2hvc3RQ
YXJlbnQpbisrO2Zvcih2YXIgbz0wLGk9dDtpO2k9aS5faG9zdFBhcmVudClvKys7Zm9yKDtuLW8+
MDspZT1lLl9ob3N0UGFyZW50LG4tLTtmb3IoO28tbj4wOyl0PXQuX2hvc3RQYXJlbnQsby0tO2Zv
cih2YXIgYT1uO2EtLTspe2lmKGU9PT10KXJldHVybiBlO2U9ZS5faG9zdFBhcmVudCx0PXQuX2hv
c3RQYXJlbnR9cmV0dXJuIG51bGx9ZnVuY3Rpb24gbyhlLHQpeyJfaG9zdE5vZGUiaW4gZT92b2lk
IDA6cygiMzUiKSwiX2hvc3ROb2RlImluIHQ/dm9pZCAwOnMoIjM1Iik7Zm9yKDt0Oyl7aWYodD09
PWUpcmV0dXJuITA7dD10Ll9ob3N0UGFyZW50fXJldHVybiExfWZ1bmN0aW9uIGkoZSl7cmV0dXJu
Il9ob3N0Tm9kZSJpbiBlP3ZvaWQgMDpzKCIzNiIpLGUuX2hvc3RQYXJlbnR9ZnVuY3Rpb24gYShl
LHQsbil7Zm9yKHZhciByPVtdO2U7KXIucHVzaChlKSxlPWUuX2hvc3RQYXJlbnQ7dmFyIG87Zm9y
KG89ci5sZW5ndGg7by0tID4wOyl0KHJbb10sITEsbik7Zm9yKG89MDtvPHIubGVuZ3RoO28rKyl0
KHJbb10sITAsbil9ZnVuY3Rpb24gdShlLHQsbixvLGkpe2Zvcih2YXIgYT1lJiZ0P3IoZSx0KTpu
dWxsLHU9W107ZSYmZSE9PWE7KXUucHVzaChlKSxlPWUuX2hvc3RQYXJlbnQ7Zm9yKHZhciBzPVtd
O3QmJnQhPT1hOylzLnB1c2godCksdD10Ll9ob3N0UGFyZW50O3ZhciBsO2ZvcihsPTA7bDx1Lmxl
bmd0aDtsKyspbih1W2xdLCEwLG8pO2ZvcihsPXMubGVuZ3RoO2wtLSA+MDspbihzW2xdLCExLGkp
fXZhciBzPW4oMik7bigxKTtlLmV4cG9ydHM9e2lzQW5jZXN0b3I6byxnZXRMb3dlc3RDb21tb25B
bmNlc3RvcjpyLGdldFBhcmVudEluc3RhbmNlOmksdHJhdmVyc2VUd29QaGFzZTphLHRyYXZlcnNl
RW50ZXJMZWF2ZTp1fX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7
dGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpfXZhciBvPW4oNCksaT1uKDEwKSxhPW4oMjUp
LHU9big3KSxzPXtpbml0aWFsaXplOnUsY2xvc2U6ZnVuY3Rpb24oKXtkLmlzQmF0Y2hpbmdVcGRh
dGVzPSExfX0sbD17aW5pdGlhbGl6ZTp1LGNsb3NlOmkuZmx1c2hCYXRjaGVkVXBkYXRlcy5iaW5k
KGkpfSxjPVtsLHNdO28oci5wcm90b3R5cGUsYS5NaXhpbix7Z2V0VHJhbnNhY3Rpb25XcmFwcGVy
czpmdW5jdGlvbigpe3JldHVybiBjfX0pO3ZhciBwPW5ldyByLGQ9e2lzQmF0Y2hpbmdVcGRhdGVz
OiExLGJhdGNoZWRVcGRhdGVzOmZ1bmN0aW9uKGUsdCxuLHIsbyxpKXt2YXIgYT1kLmlzQmF0Y2hp
bmdVcGRhdGVzO2QuaXNCYXRjaGluZ1VwZGF0ZXM9ITAsYT9lKHQsbixyLG8saSk6cC5wZXJmb3Jt
KGUsbnVsbCx0LG4scixvLGkpfX07ZS5leHBvcnRzPWR9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcigpe0V8fChFPSEwLHkuRXZlbnRFbWl0dGVyLmluamVjdFJlYWN0RXZl
bnRMaXN0ZW5lcihtKSx5LkV2ZW50UGx1Z2luSHViLmluamVjdEV2ZW50UGx1Z2luT3JkZXIoYSks
eS5FdmVudFBsdWdpblV0aWxzLmluamVjdENvbXBvbmVudFRyZWUocCkseS5FdmVudFBsdWdpblV0
aWxzLmluamVjdFRyZWVUcmF2ZXJzYWwoZikseS5FdmVudFBsdWdpbkh1Yi5pbmplY3RFdmVudFBs
dWdpbnNCeU5hbWUoe1NpbXBsZUV2ZW50UGx1Z2luOkMsRW50ZXJMZWF2ZUV2ZW50UGx1Z2luOnUs
Q2hhbmdlRXZlbnRQbHVnaW46aSxTZWxlY3RFdmVudFBsdWdpbjpfLEJlZm9yZUlucHV0RXZlbnRQ
bHVnaW46b30pLHkuSG9zdENvbXBvbmVudC5pbmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3MoYyks
eS5Ib3N0Q29tcG9uZW50LmluamVjdFRleHRDb21wb25lbnRDbGFzcyhoKSx5LkRPTVByb3BlcnR5
LmluamVjdERPTVByb3BlcnR5Q29uZmlnKHMpLHkuRE9NUHJvcGVydHkuaW5qZWN0RE9NUHJvcGVy
dHlDb25maWcoYikseS5FbXB0eUNvbXBvbmVudC5pbmplY3RFbXB0eUNvbXBvbmVudEZhY3Rvcnko
ZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBkKGUpfSkseS5VcGRhdGVzLmluamVjdFJlY29uY2lsZVRy
YW5zYWN0aW9uKGcpLHkuVXBkYXRlcy5pbmplY3RCYXRjaGluZ1N0cmF0ZWd5KHYpLHkuQ29tcG9u
ZW50LmluamVjdEVudmlyb25tZW50KGwpKX12YXIgbz1uKDEzOSksaT1uKDE0MSksYT1uKDE0Myks
dT1uKDE0NCkscz1uKDE0NiksbD1uKDE0OSksYz1uKDE1MykscD1uKDUpLGQ9bigxNTUpLGY9bigx
NjQpLGg9bigxNjIpLHY9bigxNjUpLG09bigxNjgpLHk9bigxNjkpLGc9bigxNzQpLGI9bigxNzgp
LF89bigxNzkpLEM9bigxODApLEU9ITE7ZS5leHBvcnRzPXtpbmplY3Q6cn19LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtvLmVucXVldWVFdmVudHMoZSksby5wcm9j
ZXNzRXZlbnRRdWV1ZSghMSl9dmFyIG89bigyMSksaT17aGFuZGxlVG9wTGV2ZWw6ZnVuY3Rpb24o
ZSx0LG4saSl7dmFyIGE9by5leHRyYWN0RXZlbnRzKGUsdCxuLGkpO3IoYSl9fTtlLmV4cG9ydHM9
aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2Zvcig7ZS5faG9z
dFBhcmVudDspZT1lLl9ob3N0UGFyZW50O3ZhciB0PXAuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKSxu
PXQucGFyZW50Tm9kZTtyZXR1cm4gcC5nZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZShuKX1mdW5j
dGlvbiBvKGUsdCl7dGhpcy50b3BMZXZlbFR5cGU9ZSx0aGlzLm5hdGl2ZUV2ZW50PXQsdGhpcy5h
bmNlc3RvcnM9W119ZnVuY3Rpb24gaShlKXt2YXIgdD1mKGUubmF0aXZlRXZlbnQpLG49cC5nZXRD
bG9zZXN0SW5zdGFuY2VGcm9tTm9kZSh0KSxvPW47ZG8gZS5hbmNlc3RvcnMucHVzaChvKSxvPW8m
JnIobyk7d2hpbGUobyk7Zm9yKHZhciBpPTA7aTxlLmFuY2VzdG9ycy5sZW5ndGg7aSsrKW49ZS5h
bmNlc3RvcnNbaV0sdi5faGFuZGxlVG9wTGV2ZWwoZS50b3BMZXZlbFR5cGUsbixlLm5hdGl2ZUV2
ZW50LGYoZS5uYXRpdmVFdmVudCkpfWZ1bmN0aW9uIGEoZSl7dmFyIHQ9aCh3aW5kb3cpO2UodCl9
dmFyIHU9big0KSxzPW4oNjApLGw9big2KSxjPW4oMTUpLHA9big1KSxkPW4oMTApLGY9big1NSks
aD1uKDEwNSk7dShvLnByb3RvdHlwZSx7ZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe3RoaXMudG9wTGV2
ZWxUeXBlPW51bGwsdGhpcy5uYXRpdmVFdmVudD1udWxsLHRoaXMuYW5jZXN0b3JzLmxlbmd0aD0w
fX0pLGMuYWRkUG9vbGluZ1RvKG8sYy50d29Bcmd1bWVudFBvb2xlcik7dmFyIHY9e19lbmFibGVk
OiEwLF9oYW5kbGVUb3BMZXZlbDpudWxsLFdJTkRPV19IQU5ETEU6bC5jYW5Vc2VET00/d2luZG93
Om51bGwsc2V0SGFuZGxlVG9wTGV2ZWw6ZnVuY3Rpb24oZSl7di5faGFuZGxlVG9wTGV2ZWw9ZX0s
c2V0RW5hYmxlZDpmdW5jdGlvbihlKXt2Ll9lbmFibGVkPSEhZX0saXNFbmFibGVkOmZ1bmN0aW9u
KCl7cmV0dXJuIHYuX2VuYWJsZWR9LHRyYXBCdWJibGVkRXZlbnQ6ZnVuY3Rpb24oZSx0LG4pe3Zh
ciByPW47cmV0dXJuIHI/cy5saXN0ZW4ocix0LHYuZGlzcGF0Y2hFdmVudC5iaW5kKG51bGwsZSkp
Om51bGx9LHRyYXBDYXB0dXJlZEV2ZW50OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uO3JldHVybiBy
P3MuY2FwdHVyZShyLHQsdi5kaXNwYXRjaEV2ZW50LmJpbmQobnVsbCxlKSk6bnVsbH0sbW9uaXRv
clNjcm9sbFZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0PWEuYmluZChudWxsLGUpO3MubGlzdGVuKHdp
bmRvdywic2Nyb2xsIix0KX0sZGlzcGF0Y2hFdmVudDpmdW5jdGlvbihlLHQpe2lmKHYuX2VuYWJs
ZWQpe3ZhciBuPW8uZ2V0UG9vbGVkKGUsdCk7dHJ5e2QuYmF0Y2hlZFVwZGF0ZXMoaSxuKX1maW5h
bGx5e28ucmVsZWFzZShuKX19fX07ZS5leHBvcnRzPXZ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7dmFyIHI9bigxOCksbz1uKDIxKSxpPW4oNDApLGE9big0NCksdT1uKDc0KSxzPW4oNzcp
LGw9bigyOCksYz1uKDc5KSxwPW4oMTApLGQ9e0NvbXBvbmVudDphLmluamVjdGlvbixDbGFzczp1
LmluamVjdGlvbixET01Qcm9wZXJ0eTpyLmluamVjdGlvbixFbXB0eUNvbXBvbmVudDpzLmluamVj
dGlvbixFdmVudFBsdWdpbkh1YjpvLmluamVjdGlvbixFdmVudFBsdWdpblV0aWxzOmkuaW5qZWN0
aW9uLEV2ZW50RW1pdHRlcjpsLmluamVjdGlvbixIb3N0Q29tcG9uZW50OmMuaW5qZWN0aW9uLFVw
ZGF0ZXM6cC5pbmplY3Rpb259O2UuZXhwb3J0cz1kfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3ZhciByPW4oMTkxKSxvPS9cLz8+LyxpPS9ePFwhXC1cLS8sYT17Q0hFQ0tTVU1fQVRUUl9O
QU1FOiJkYXRhLXJlYWN0LWNoZWNrc3VtIixhZGRDaGVja3N1bVRvTWFya3VwOmZ1bmN0aW9uKGUp
e3ZhciB0PXIoZSk7cmV0dXJuIGkudGVzdChlKT9lOmUucmVwbGFjZShvLCIgIithLkNIRUNLU1VN
X0FUVFJfTkFNRSsnPSInK3QrJyIkJicpfSxjYW5SZXVzZU1hcmt1cDpmdW5jdGlvbihlLHQpe3Zh
ciBuPXQuZ2V0QXR0cmlidXRlKGEuQ0hFQ0tTVU1fQVRUUl9OQU1FKTtuPW4mJnBhcnNlSW50KG4s
MTApO3ZhciBvPXIoZSk7cmV0dXJuIG89PT1ufX07ZS5leHBvcnRzPWF9LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7cmV0dXJue3R5cGU6ZC5JTlNFUlRfTUFS
S1VQLGNvbnRlbnQ6ZSxmcm9tSW5kZXg6bnVsbCxmcm9tTm9kZTpudWxsLHRvSW5kZXg6bixhZnRl
ck5vZGU6dH19ZnVuY3Rpb24gbyhlLHQsbil7cmV0dXJue3R5cGU6ZC5NT1ZFX0VYSVNUSU5HLGNv
bnRlbnQ6bnVsbCxmcm9tSW5kZXg6ZS5fbW91bnRJbmRleCxmcm9tTm9kZTpmLmdldEhvc3ROb2Rl
KGUpLHRvSW5kZXg6bixhZnRlck5vZGU6dH19ZnVuY3Rpb24gaShlLHQpe3JldHVybnt0eXBlOmQu
UkVNT1ZFX05PREUsY29udGVudDpudWxsLGZyb21JbmRleDplLl9tb3VudEluZGV4LGZyb21Ob2Rl
OnQsdG9JbmRleDpudWxsLGFmdGVyTm9kZTpudWxsfX1mdW5jdGlvbiBhKGUpe3JldHVybnt0eXBl
OmQuU0VUX01BUktVUCxjb250ZW50OmUsZnJvbUluZGV4Om51bGwsZnJvbU5vZGU6bnVsbCx0b0lu
ZGV4Om51bGwsYWZ0ZXJOb2RlOm51bGx9fWZ1bmN0aW9uIHUoZSl7cmV0dXJue3R5cGU6ZC5URVhU
X0NPTlRFTlQsY29udGVudDplLGZyb21JbmRleDpudWxsLGZyb21Ob2RlOm51bGwsdG9JbmRleDpu
dWxsLGFmdGVyTm9kZTpudWxsfX1mdW5jdGlvbiBzKGUsdCl7cmV0dXJuIHQmJihlPWV8fFtdLGUu
cHVzaCh0KSksZX1mdW5jdGlvbiBsKGUsdCl7cC5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzKGUsdCl9
dmFyIGM9bigyKSxwPW4oNDQpLGQ9KG4oMjMpLG4oOCksbig4MikpLGY9KG4oMTYpLG4oMTkpKSxo
PW4oMTQ4KSx2PShuKDcpLG4oMTk1KSksbT0obigxKSx7TWl4aW46e19yZWNvbmNpbGVySW5zdGFu
dGlhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGguaW5zdGFudGlhdGVDaGlsZHJl
bihlLHQsbil9LF9yZWNvbmNpbGVyVXBkYXRlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4scixvLGkp
e3ZhciBhLHU9MDtyZXR1cm4gYT12KHQsdSksaC51cGRhdGVDaGlsZHJlbihlLGEsbixyLG8sdGhp
cyx0aGlzLl9ob3N0Q29udGFpbmVySW5mbyxpLHUpLGF9LG1vdW50Q2hpbGRyZW46ZnVuY3Rpb24o
ZSx0LG4pe3ZhciByPXRoaXMuX3JlY29uY2lsZXJJbnN0YW50aWF0ZUNoaWxkcmVuKGUsdCxuKTt0
aGlzLl9yZW5kZXJlZENoaWxkcmVuPXI7dmFyIG89W10saT0wO2Zvcih2YXIgYSBpbiByKWlmKHIu
aGFzT3duUHJvcGVydHkoYSkpe3ZhciB1PXJbYV0scz0wLGw9Zi5tb3VudENvbXBvbmVudCh1LHQs
dGhpcyx0aGlzLl9ob3N0Q29udGFpbmVySW5mbyxuLHMpO3UuX21vdW50SW5kZXg9aSsrLG8ucHVz
aChsKX1yZXR1cm4gb30sdXBkYXRlVGV4dENvbnRlbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5f
cmVuZGVyZWRDaGlsZHJlbjtoLnVubW91bnRDaGlsZHJlbih0LCExKTtmb3IodmFyIG4gaW4gdCl0
Lmhhc093blByb3BlcnR5KG4pJiZjKCIxMTgiKTt2YXIgcj1bdShlKV07bCh0aGlzLHIpfSx1cGRh
dGVNYXJrdXA6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fcmVuZGVyZWRDaGlsZHJlbjtoLnVubW91
bnRDaGlsZHJlbih0LCExKTtmb3IodmFyIG4gaW4gdCl0Lmhhc093blByb3BlcnR5KG4pJiZjKCIx
MTgiKTt2YXIgcj1bYShlKV07bCh0aGlzLHIpfSx1cGRhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQs
bil7dGhpcy5fdXBkYXRlQ2hpbGRyZW4oZSx0LG4pfSxfdXBkYXRlQ2hpbGRyZW46ZnVuY3Rpb24o
ZSx0LG4pe3ZhciByPXRoaXMuX3JlbmRlcmVkQ2hpbGRyZW4sbz17fSxpPVtdLGE9dGhpcy5fcmVj
b25jaWxlclVwZGF0ZUNoaWxkcmVuKHIsZSxpLG8sdCxuKTtpZihhfHxyKXt2YXIgdSxjPW51bGws
cD0wLGQ9MCxoPTAsdj1udWxsO2Zvcih1IGluIGEpaWYoYS5oYXNPd25Qcm9wZXJ0eSh1KSl7dmFy
IG09ciYmclt1XSx5PWFbdV07bT09PXk/KGM9cyhjLHRoaXMubW92ZUNoaWxkKG0sdixwLGQpKSxk
PU1hdGgubWF4KG0uX21vdW50SW5kZXgsZCksbS5fbW91bnRJbmRleD1wKToobSYmKGQ9TWF0aC5t
YXgobS5fbW91bnRJbmRleCxkKSksYz1zKGMsdGhpcy5fbW91bnRDaGlsZEF0SW5kZXgoeSxpW2hd
LHYscCx0LG4pKSxoKyspLHArKyx2PWYuZ2V0SG9zdE5vZGUoeSl9Zm9yKHUgaW4gbylvLmhhc093
blByb3BlcnR5KHUpJiYoYz1zKGMsdGhpcy5fdW5tb3VudENoaWxkKHJbdV0sb1t1XSkpKTtjJiZs
KHRoaXMsYyksdGhpcy5fcmVuZGVyZWRDaGlsZHJlbj1hfX0sdW5tb3VudENoaWxkcmVuOmZ1bmN0
aW9uKGUpe3ZhciB0PXRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47aC51bm1vdW50Q2hpbGRyZW4odCxl
KSx0aGlzLl9yZW5kZXJlZENoaWxkcmVuPW51bGx9LG1vdmVDaGlsZDpmdW5jdGlvbihlLHQsbixy
KXtpZihlLl9tb3VudEluZGV4PHIpcmV0dXJuIG8oZSx0LG4pfSxjcmVhdGVDaGlsZDpmdW5jdGlv
bihlLHQsbil7Ci1yZXR1cm4gcihuLHQsZS5fbW91bnRJbmRleCl9LHJlbW92ZUNoaWxkOmZ1bmN0
aW9uKGUsdCl7cmV0dXJuIGkoZSx0KX0sX21vdW50Q2hpbGRBdEluZGV4OmZ1bmN0aW9uKGUsdCxu
LHIsbyxpKXtyZXR1cm4gZS5fbW91bnRJbmRleD1yLHRoaXMuY3JlYXRlQ2hpbGQoZSxuLHQpfSxf
dW5tb3VudENoaWxkOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5yZW1vdmVDaGlsZChlLHQpO3Jl
dHVybiBlLl9tb3VudEluZGV4PW51bGwsbn19fSk7ZS5leHBvcnRzPW19LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7dmFyIHI9bigyKSxvPShuKDEpLHtpc1ZhbGlkT3duZXI6ZnVuY3Rpb24o
ZSl7cmV0dXJuISghZXx8ImZ1bmN0aW9uIiE9dHlwZW9mIGUuYXR0YWNoUmVmfHwiZnVuY3Rpb24i
IT10eXBlb2YgZS5kZXRhY2hSZWYpfSxhZGRDb21wb25lbnRBc1JlZlRvOmZ1bmN0aW9uKGUsdCxu
KXtvLmlzVmFsaWRPd25lcihuKT92b2lkIDA6cigiMTE5Iiksbi5hdHRhY2hSZWYodCxlKX0scmVt
b3ZlQ29tcG9uZW50QXNSZWZGcm9tOmZ1bmN0aW9uKGUsdCxuKXtvLmlzVmFsaWRPd25lcihuKT92
b2lkIDA6cigiMTIwIik7dmFyIGk9bi5nZXRQdWJsaWNJbnN0YW5jZSgpO2kmJmkucmVmc1t0XT09
PWUuZ2V0UHVibGljSW5zdGFuY2UoKSYmbi5kZXRhY2hSZWYodCl9fSk7ZS5leHBvcnRzPW99LGZ1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7dGhpcy5wcm9wcz1l
LHRoaXMuY29udGV4dD10LHRoaXMucmVmcz1zLHRoaXMudXBkYXRlcj1ufHx1fWZ1bmN0aW9uIG8o
KXt9dmFyIGk9big0KSxhPW4oNDMpLHU9big0Nykscz1uKDIwKTtvLnByb3RvdHlwZT1hLnByb3Rv
dHlwZSxyLnByb3RvdHlwZT1uZXcgbyxyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1yLGkoci5wcm90
b3R5cGUsYS5wcm90b3R5cGUpLHIucHJvdG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50PSEwLGUu
ZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dGhp
cy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpLHRoaXMucmVuZGVyVG9TdGF0aWNNYXJrdXA9ITEs
dGhpcy5yZWFjdE1vdW50UmVhZHk9aS5nZXRQb29sZWQobnVsbCksdGhpcy51c2VDcmVhdGVFbGVt
ZW50PWV9dmFyIG89big0KSxpPW4oNzEpLGE9bigxNSksdT1uKDI4KSxzPW4oODApLGw9KG4oOCks
bigyNSkpLGM9big1MSkscD17aW5pdGlhbGl6ZTpzLmdldFNlbGVjdGlvbkluZm9ybWF0aW9uLGNs
b3NlOnMucmVzdG9yZVNlbGVjdGlvbn0sZD17aW5pdGlhbGl6ZTpmdW5jdGlvbigpe3ZhciBlPXUu
aXNFbmFibGVkKCk7cmV0dXJuIHUuc2V0RW5hYmxlZCghMSksZX0sY2xvc2U6ZnVuY3Rpb24oZSl7
dS5zZXRFbmFibGVkKGUpfX0sZj17aW5pdGlhbGl6ZTpmdW5jdGlvbigpe3RoaXMucmVhY3RNb3Vu
dFJlYWR5LnJlc2V0KCl9LGNsb3NlOmZ1bmN0aW9uKCl7dGhpcy5yZWFjdE1vdW50UmVhZHkubm90
aWZ5QWxsKCl9fSxoPVtwLGQsZl0sdj17Z2V0VHJhbnNhY3Rpb25XcmFwcGVyczpmdW5jdGlvbigp
e3JldHVybiBofSxnZXRSZWFjdE1vdW50UmVhZHk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFj
dE1vdW50UmVhZHl9LGdldFVwZGF0ZVF1ZXVlOmZ1bmN0aW9uKCl7cmV0dXJuIGN9LGNoZWNrcG9p
bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFjdE1vdW50UmVhZHkuY2hlY2twb2ludCgpfSxy
b2xsYmFjazpmdW5jdGlvbihlKXt0aGlzLnJlYWN0TW91bnRSZWFkeS5yb2xsYmFjayhlKX0sZGVz
dHJ1Y3RvcjpmdW5jdGlvbigpe2kucmVsZWFzZSh0aGlzLnJlYWN0TW91bnRSZWFkeSksdGhpcy5y
ZWFjdE1vdW50UmVhZHk9bnVsbH19O28oci5wcm90b3R5cGUsbC5NaXhpbix2KSxhLmFkZFBvb2xp
bmdUbyhyKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUsdCxuKXsiZnVuY3Rpb24iPT10eXBlb2YgZT9lKHQuZ2V0UHVibGljSW5zdGFuY2UoKSk6
aS5hZGRDb21wb25lbnRBc1JlZlRvKHQsZSxuKX1mdW5jdGlvbiBvKGUsdCxuKXsiZnVuY3Rpb24i
PT10eXBlb2YgZT9lKG51bGwpOmkucmVtb3ZlQ29tcG9uZW50QXNSZWZGcm9tKHQsZSxuKX12YXIg
aT1uKDE3MiksYT17fTthLmF0dGFjaFJlZnM9ZnVuY3Rpb24oZSx0KXtpZihudWxsIT09dCYmdCE9
PSExKXt2YXIgbj10LnJlZjtudWxsIT1uJiZyKG4sZSx0Ll9vd25lcil9fSxhLnNob3VsZFVwZGF0
ZVJlZnM9ZnVuY3Rpb24oZSx0KXt2YXIgbj1udWxsPT09ZXx8ZT09PSExLHI9bnVsbD09PXR8fHQ9
PT0hMTtyZXR1cm4gbnx8cnx8dC5yZWYhPT1lLnJlZnx8InN0cmluZyI9PXR5cGVvZiB0LnJlZiYm
dC5fb3duZXIhPT1lLl9vd25lcn0sYS5kZXRhY2hSZWZzPWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9
PXQmJnQhPT0hMSl7dmFyIG49dC5yZWY7bnVsbCE9biYmbyhuLGUsdC5fb3duZXIpfX0sZS5leHBv
cnRzPWF9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt0aGlzLnJl
aW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCksdGhpcy5yZW5kZXJUb1N0YXRpY01hcmt1cD1lLHRoaXMu
dXNlQ3JlYXRlRWxlbWVudD0hMSx0aGlzLnVwZGF0ZVF1ZXVlPW5ldyB1KHRoaXMpfXZhciBvPW4o
NCksaT1uKDE1KSxhPW4oMjUpLHU9KG4oOCksbigxNzcpKSxzPVtdLGw9e2VucXVldWU6ZnVuY3Rp
b24oKXt9fSxjPXtnZXRUcmFuc2FjdGlvbldyYXBwZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIHN9LGdl
dFJlYWN0TW91bnRSZWFkeTpmdW5jdGlvbigpe3JldHVybiBsfSxnZXRVcGRhdGVRdWV1ZTpmdW5j
dGlvbigpe3JldHVybiB0aGlzLnVwZGF0ZVF1ZXVlfSxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7fSxj
aGVja3BvaW50OmZ1bmN0aW9uKCl7fSxyb2xsYmFjazpmdW5jdGlvbigpe319O28oci5wcm90b3R5
cGUsYS5NaXhpbixjKSxpLmFkZFBvb2xpbmdUbyhyKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhy
b3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVu
Y3Rpb24gbyhlLHQpe312YXIgaT1uKDUxKSxhPShuKDI1KSxuKDMpLGZ1bmN0aW9uKCl7ZnVuY3Rp
b24gZSh0KXtyKHRoaXMsZSksdGhpcy50cmFuc2FjdGlvbj10fXJldHVybiBlLnByb3RvdHlwZS5p
c01vdW50ZWQ9ZnVuY3Rpb24oZSl7cmV0dXJuITF9LGUucHJvdG90eXBlLmVucXVldWVDYWxsYmFj
az1mdW5jdGlvbihlLHQsbil7dGhpcy50cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24oKSYmaS5l
bnF1ZXVlQ2FsbGJhY2soZSx0LG4pfSxlLnByb3RvdHlwZS5lbnF1ZXVlRm9yY2VVcGRhdGU9ZnVu
Y3Rpb24oZSl7dGhpcy50cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24oKT9pLmVucXVldWVGb3Jj
ZVVwZGF0ZShlKTpvKGUsImZvcmNlVXBkYXRlIil9LGUucHJvdG90eXBlLmVucXVldWVSZXBsYWNl
U3RhdGU9ZnVuY3Rpb24oZSx0KXt0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpP2ku
ZW5xdWV1ZVJlcGxhY2VTdGF0ZShlLHQpOm8oZSwicmVwbGFjZVN0YXRlIil9LGUucHJvdG90eXBl
LmVucXVldWVTZXRTdGF0ZT1mdW5jdGlvbihlLHQpe3RoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5z
YWN0aW9uKCk/aS5lbnF1ZXVlU2V0U3RhdGUoZSx0KTpvKGUsInNldFN0YXRlIil9LGV9KCkpO2Uu
ZXhwb3J0cz1hfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17eGxpbms6Imh0dHA6
Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgv
bmFtZXNwYWNlIn0scj17YWNjZW50SGVpZ2h0OiJhY2NlbnQtaGVpZ2h0IixhY2N1bXVsYXRlOjAs
YWRkaXRpdmU6MCxhbGlnbm1lbnRCYXNlbGluZToiYWxpZ25tZW50LWJhc2VsaW5lIixhbGxvd1Jl
b3JkZXI6ImFsbG93UmVvcmRlciIsYWxwaGFiZXRpYzowLGFtcGxpdHVkZTowLGFyYWJpY0Zvcm06
ImFyYWJpYy1mb3JtIixhc2NlbnQ6MCxhdHRyaWJ1dGVOYW1lOiJhdHRyaWJ1dGVOYW1lIixhdHRy
aWJ1dGVUeXBlOiJhdHRyaWJ1dGVUeXBlIixhdXRvUmV2ZXJzZToiYXV0b1JldmVyc2UiLGF6aW11
dGg6MCxiYXNlRnJlcXVlbmN5OiJiYXNlRnJlcXVlbmN5IixiYXNlUHJvZmlsZToiYmFzZVByb2Zp
bGUiLGJhc2VsaW5lU2hpZnQ6ImJhc2VsaW5lLXNoaWZ0IixiYm94OjAsYmVnaW46MCxiaWFzOjAs
Ynk6MCxjYWxjTW9kZToiY2FsY01vZGUiLGNhcEhlaWdodDoiY2FwLWhlaWdodCIsY2xpcDowLGNs
aXBQYXRoOiJjbGlwLXBhdGgiLGNsaXBSdWxlOiJjbGlwLXJ1bGUiLGNsaXBQYXRoVW5pdHM6ImNs
aXBQYXRoVW5pdHMiLGNvbG9ySW50ZXJwb2xhdGlvbjoiY29sb3ItaW50ZXJwb2xhdGlvbiIsY29s
b3JJbnRlcnBvbGF0aW9uRmlsdGVyczoiY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzIixjb2xv
clByb2ZpbGU6ImNvbG9yLXByb2ZpbGUiLGNvbG9yUmVuZGVyaW5nOiJjb2xvci1yZW5kZXJpbmci
LGNvbnRlbnRTY3JpcHRUeXBlOiJjb250ZW50U2NyaXB0VHlwZSIsY29udGVudFN0eWxlVHlwZToi
Y29udGVudFN0eWxlVHlwZSIsY3Vyc29yOjAsY3g6MCxjeTowLGQ6MCxkZWNlbGVyYXRlOjAsZGVz
Y2VudDowLGRpZmZ1c2VDb25zdGFudDoiZGlmZnVzZUNvbnN0YW50IixkaXJlY3Rpb246MCxkaXNw
bGF5OjAsZGl2aXNvcjowLGRvbWluYW50QmFzZWxpbmU6ImRvbWluYW50LWJhc2VsaW5lIixkdXI6
MCxkeDowLGR5OjAsZWRnZU1vZGU6ImVkZ2VNb2RlIixlbGV2YXRpb246MCxlbmFibGVCYWNrZ3Jv
dW5kOiJlbmFibGUtYmFja2dyb3VuZCIsZW5kOjAsZXhwb25lbnQ6MCxleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkOiJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIixmaWxsOjAsZmlsbE9wYWNpdHk6
ImZpbGwtb3BhY2l0eSIsZmlsbFJ1bGU6ImZpbGwtcnVsZSIsZmlsdGVyOjAsZmlsdGVyUmVzOiJm
aWx0ZXJSZXMiLGZpbHRlclVuaXRzOiJmaWx0ZXJVbml0cyIsZmxvb2RDb2xvcjoiZmxvb2QtY29s
b3IiLGZsb29kT3BhY2l0eToiZmxvb2Qtb3BhY2l0eSIsZm9jdXNhYmxlOjAsZm9udEZhbWlseToi
Zm9udC1mYW1pbHkiLGZvbnRTaXplOiJmb250LXNpemUiLGZvbnRTaXplQWRqdXN0OiJmb250LXNp
emUtYWRqdXN0Iixmb250U3RyZXRjaDoiZm9udC1zdHJldGNoIixmb250U3R5bGU6ImZvbnQtc3R5
bGUiLGZvbnRWYXJpYW50OiJmb250LXZhcmlhbnQiLGZvbnRXZWlnaHQ6ImZvbnQtd2VpZ2h0Iixm
b3JtYXQ6MCxmcm9tOjAsZng6MCxmeTowLGcxOjAsZzI6MCxnbHlwaE5hbWU6ImdseXBoLW5hbWUi
LGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsOiJnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFs
IixnbHlwaE9yaWVudGF0aW9uVmVydGljYWw6ImdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsIixn
bHlwaFJlZjoiZ2x5cGhSZWYiLGdyYWRpZW50VHJhbnNmb3JtOiJncmFkaWVudFRyYW5zZm9ybSIs
Z3JhZGllbnRVbml0czoiZ3JhZGllbnRVbml0cyIsaGFuZ2luZzowLGhvcml6QWR2WDoiaG9yaXot
YWR2LXgiLGhvcml6T3JpZ2luWDoiaG9yaXotb3JpZ2luLXgiLGlkZW9ncmFwaGljOjAsaW1hZ2VS
ZW5kZXJpbmc6ImltYWdlLXJlbmRlcmluZyIsaW46MCxpbjI6MCxpbnRlcmNlcHQ6MCxrOjAsazE6
MCxrMjowLGszOjAsazQ6MCxrZXJuZWxNYXRyaXg6Imtlcm5lbE1hdHJpeCIsa2VybmVsVW5pdExl
bmd0aDoia2VybmVsVW5pdExlbmd0aCIsa2VybmluZzowLGtleVBvaW50czoia2V5UG9pbnRzIixr
ZXlTcGxpbmVzOiJrZXlTcGxpbmVzIixrZXlUaW1lczoia2V5VGltZXMiLGxlbmd0aEFkanVzdDoi
bGVuZ3RoQWRqdXN0IixsZXR0ZXJTcGFjaW5nOiJsZXR0ZXItc3BhY2luZyIsbGlnaHRpbmdDb2xv
cjoibGlnaHRpbmctY29sb3IiLGxpbWl0aW5nQ29uZUFuZ2xlOiJsaW1pdGluZ0NvbmVBbmdsZSIs
bG9jYWw6MCxtYXJrZXJFbmQ6Im1hcmtlci1lbmQiLG1hcmtlck1pZDoibWFya2VyLW1pZCIsbWFy
a2VyU3RhcnQ6Im1hcmtlci1zdGFydCIsbWFya2VySGVpZ2h0OiJtYXJrZXJIZWlnaHQiLG1hcmtl
clVuaXRzOiJtYXJrZXJVbml0cyIsbWFya2VyV2lkdGg6Im1hcmtlcldpZHRoIixtYXNrOjAsbWFz
a0NvbnRlbnRVbml0czoibWFza0NvbnRlbnRVbml0cyIsbWFza1VuaXRzOiJtYXNrVW5pdHMiLG1h
dGhlbWF0aWNhbDowLG1vZGU6MCxudW1PY3RhdmVzOiJudW1PY3RhdmVzIixvZmZzZXQ6MCxvcGFj
aXR5OjAsb3BlcmF0b3I6MCxvcmRlcjowLG9yaWVudDowLG9yaWVudGF0aW9uOjAsb3JpZ2luOjAs
b3ZlcmZsb3c6MCxvdmVybGluZVBvc2l0aW9uOiJvdmVybGluZS1wb3NpdGlvbiIsb3ZlcmxpbmVU
aGlja25lc3M6Im92ZXJsaW5lLXRoaWNrbmVzcyIscGFpbnRPcmRlcjoicGFpbnQtb3JkZXIiLHBh
bm9zZTE6InBhbm9zZS0xIixwYXRoTGVuZ3RoOiJwYXRoTGVuZ3RoIixwYXR0ZXJuQ29udGVudFVu
aXRzOiJwYXR0ZXJuQ29udGVudFVuaXRzIixwYXR0ZXJuVHJhbnNmb3JtOiJwYXR0ZXJuVHJhbnNm
b3JtIixwYXR0ZXJuVW5pdHM6InBhdHRlcm5Vbml0cyIscG9pbnRlckV2ZW50czoicG9pbnRlci1l
dmVudHMiLHBvaW50czowLHBvaW50c0F0WDoicG9pbnRzQXRYIixwb2ludHNBdFk6InBvaW50c0F0
WSIscG9pbnRzQXRaOiJwb2ludHNBdFoiLHByZXNlcnZlQWxwaGE6InByZXNlcnZlQWxwaGEiLHBy
ZXNlcnZlQXNwZWN0UmF0aW86InByZXNlcnZlQXNwZWN0UmF0aW8iLHByaW1pdGl2ZVVuaXRzOiJw
cmltaXRpdmVVbml0cyIscjowLHJhZGl1czowLHJlZlg6InJlZlgiLHJlZlk6InJlZlkiLHJlbmRl
cmluZ0ludGVudDoicmVuZGVyaW5nLWludGVudCIscmVwZWF0Q291bnQ6InJlcGVhdENvdW50Iixy
ZXBlYXREdXI6InJlcGVhdER1ciIscmVxdWlyZWRFeHRlbnNpb25zOiJyZXF1aXJlZEV4dGVuc2lv
bnMiLHJlcXVpcmVkRmVhdHVyZXM6InJlcXVpcmVkRmVhdHVyZXMiLHJlc3RhcnQ6MCxyZXN1bHQ6
MCxyb3RhdGU6MCxyeDowLHJ5OjAsc2NhbGU6MCxzZWVkOjAsc2hhcGVSZW5kZXJpbmc6InNoYXBl
LXJlbmRlcmluZyIsc2xvcGU6MCxzcGFjaW5nOjAsc3BlY3VsYXJDb25zdGFudDoic3BlY3VsYXJD
b25zdGFudCIsc3BlY3VsYXJFeHBvbmVudDoic3BlY3VsYXJFeHBvbmVudCIsc3BlZWQ6MCxzcHJl
YWRNZXRob2Q6InNwcmVhZE1ldGhvZCIsc3RhcnRPZmZzZXQ6InN0YXJ0T2Zmc2V0IixzdGREZXZp
YXRpb246InN0ZERldmlhdGlvbiIsc3RlbWg6MCxzdGVtdjowLHN0aXRjaFRpbGVzOiJzdGl0Y2hU
aWxlcyIsc3RvcENvbG9yOiJzdG9wLWNvbG9yIixzdG9wT3BhY2l0eToic3RvcC1vcGFjaXR5Iixz
dHJpa2V0aHJvdWdoUG9zaXRpb246InN0cmlrZXRocm91Z2gtcG9zaXRpb24iLHN0cmlrZXRocm91
Z2hUaGlja25lc3M6InN0cmlrZXRocm91Z2gtdGhpY2tuZXNzIixzdHJpbmc6MCxzdHJva2U6MCxz
dHJva2VEYXNoYXJyYXk6InN0cm9rZS1kYXNoYXJyYXkiLHN0cm9rZURhc2hvZmZzZXQ6InN0cm9r
ZS1kYXNob2Zmc2V0IixzdHJva2VMaW5lY2FwOiJzdHJva2UtbGluZWNhcCIsc3Ryb2tlTGluZWpv
aW46InN0cm9rZS1saW5lam9pbiIsc3Ryb2tlTWl0ZXJsaW1pdDoic3Ryb2tlLW1pdGVybGltaXQi
LHN0cm9rZU9wYWNpdHk6InN0cm9rZS1vcGFjaXR5IixzdHJva2VXaWR0aDoic3Ryb2tlLXdpZHRo
IixzdXJmYWNlU2NhbGU6InN1cmZhY2VTY2FsZSIsc3lzdGVtTGFuZ3VhZ2U6InN5c3RlbUxhbmd1
YWdlIix0YWJsZVZhbHVlczoidGFibGVWYWx1ZXMiLHRhcmdldFg6InRhcmdldFgiLHRhcmdldFk6
InRhcmdldFkiLHRleHRBbmNob3I6InRleHQtYW5jaG9yIix0ZXh0RGVjb3JhdGlvbjoidGV4dC1k
ZWNvcmF0aW9uIix0ZXh0UmVuZGVyaW5nOiJ0ZXh0LXJlbmRlcmluZyIsdGV4dExlbmd0aDoidGV4
dExlbmd0aCIsdG86MCx0cmFuc2Zvcm06MCx1MTowLHUyOjAsdW5kZXJsaW5lUG9zaXRpb246InVu
ZGVybGluZS1wb3NpdGlvbiIsdW5kZXJsaW5lVGhpY2tuZXNzOiJ1bmRlcmxpbmUtdGhpY2tuZXNz
Iix1bmljb2RlOjAsdW5pY29kZUJpZGk6InVuaWNvZGUtYmlkaSIsdW5pY29kZVJhbmdlOiJ1bmlj
b2RlLXJhbmdlIix1bml0c1BlckVtOiJ1bml0cy1wZXItZW0iLHZBbHBoYWJldGljOiJ2LWFscGhh
YmV0aWMiLHZIYW5naW5nOiJ2LWhhbmdpbmciLHZJZGVvZ3JhcGhpYzoidi1pZGVvZ3JhcGhpYyIs
dk1hdGhlbWF0aWNhbDoidi1tYXRoZW1hdGljYWwiLHZhbHVlczowLHZlY3RvckVmZmVjdDoidmVj
dG9yLWVmZmVjdCIsdmVyc2lvbjowLHZlcnRBZHZZOiJ2ZXJ0LWFkdi15Iix2ZXJ0T3JpZ2luWDoi
dmVydC1vcmlnaW4teCIsdmVydE9yaWdpblk6InZlcnQtb3JpZ2luLXkiLHZpZXdCb3g6InZpZXdC
b3giLHZpZXdUYXJnZXQ6InZpZXdUYXJnZXQiLHZpc2liaWxpdHk6MCx3aWR0aHM6MCx3b3JkU3Bh
Y2luZzoid29yZC1zcGFjaW5nIix3cml0aW5nTW9kZToid3JpdGluZy1tb2RlIix4OjAseEhlaWdo
dDoieC1oZWlnaHQiLHgxOjAseDI6MCx4Q2hhbm5lbFNlbGVjdG9yOiJ4Q2hhbm5lbFNlbGVjdG9y
Iix4bGlua0FjdHVhdGU6InhsaW5rOmFjdHVhdGUiLHhsaW5rQXJjcm9sZToieGxpbms6YXJjcm9s
ZSIseGxpbmtIcmVmOiJ4bGluazpocmVmIix4bGlua1JvbGU6InhsaW5rOnJvbGUiLHhsaW5rU2hv
dzoieGxpbms6c2hvdyIseGxpbmtUaXRsZToieGxpbms6dGl0bGUiLHhsaW5rVHlwZToieGxpbms6
dHlwZSIseG1sQmFzZToieG1sOmJhc2UiLHhtbG5zOjAseG1sbnNYbGluazoieG1sbnM6eGxpbmsi
LHhtbExhbmc6InhtbDpsYW5nIix4bWxTcGFjZToieG1sOnNwYWNlIix5OjAseTE6MCx5MjowLHlD
aGFubmVsU2VsZWN0b3I6InlDaGFubmVsU2VsZWN0b3IiLHo6MCx6b29tQW5kUGFuOiJ6b29tQW5k
UGFuIn0sbz17UHJvcGVydGllczp7fSxET01BdHRyaWJ1dGVOYW1lc3BhY2VzOnt4bGlua0FjdHVh
dGU6bi54bGluayx4bGlua0FyY3JvbGU6bi54bGluayx4bGlua0hyZWY6bi54bGluayx4bGlua1Jv
bGU6bi54bGluayx4bGlua1Nob3c6bi54bGluayx4bGlua1RpdGxlOm4ueGxpbmsseGxpbmtUeXBl
Om4ueGxpbmsseG1sQmFzZTpuLnhtbCx4bWxMYW5nOm4ueG1sLHhtbFNwYWNlOm4ueG1sfSxET01B
dHRyaWJ1dGVOYW1lczp7fX07T2JqZWN0LmtleXMocikuZm9yRWFjaChmdW5jdGlvbihlKXtvLlBy
b3BlcnRpZXNbZV09MCxyW2VdJiYoby5ET01BdHRyaWJ1dGVOYW1lc1tlXT1yW2VdKX0pLGUuZXhw
b3J0cz1vfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYoInNl
bGVjdGlvblN0YXJ0ImluIGUmJmwuaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKGUpKXJldHVybntz
dGFydDplLnNlbGVjdGlvblN0YXJ0LGVuZDplLnNlbGVjdGlvbkVuZH07aWYod2luZG93LmdldFNl
bGVjdGlvbil7dmFyIHQ9d2luZG93LmdldFNlbGVjdGlvbigpO3JldHVybnthbmNob3JOb2RlOnQu
YW5jaG9yTm9kZSxhbmNob3JPZmZzZXQ6dC5hbmNob3JPZmZzZXQsZm9jdXNOb2RlOnQuZm9jdXNO
b2RlLGZvY3VzT2Zmc2V0OnQuZm9jdXNPZmZzZXR9fWlmKGRvY3VtZW50LnNlbGVjdGlvbil7dmFy
IG49ZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCk7cmV0dXJue3BhcmVudEVsZW1lbnQ6
bi5wYXJlbnRFbGVtZW50KCksdGV4dDpuLnRleHQsdG9wOm4uYm91bmRpbmdUb3AsbGVmdDpuLmJv
dW5kaW5nTGVmdH19fWZ1bmN0aW9uIG8oZSx0KXtpZihDfHxudWxsPT1nfHxnIT09cCgpKXJldHVy
biBudWxsO3ZhciBuPXIoZyk7aWYoIV98fCFoKF8sbikpe189bjt2YXIgbz1jLmdldFBvb2xlZCh5
LnNlbGVjdCxiLGUsdCk7cmV0dXJuIG8udHlwZT0ic2VsZWN0IixvLnRhcmdldD1nLGEuYWNjdW11
bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhvKSxvfXJldHVybiBudWxsfXZhciBpPW4oMTIpLGE9bigy
MiksdT1uKDYpLHM9big1KSxsPW4oODApLGM9bigxMykscD1uKDYyKSxkPW4oOTQpLGY9bigxNCks
aD1uKDM0KSx2PWkudG9wTGV2ZWxUeXBlcyxtPXUuY2FuVXNlRE9NJiYiZG9jdW1lbnRNb2RlImlu
IGRvY3VtZW50JiZkb2N1bWVudC5kb2N1bWVudE1vZGU8PTExLHk9e3NlbGVjdDp7cGhhc2VkUmVn
aXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Zih7b25TZWxlY3Q6bnVsbH0pLGNhcHR1cmVkOmYoe29u
U2VsZWN0Q2FwdHVyZTpudWxsfSl9LGRlcGVuZGVuY2llczpbdi50b3BCbHVyLHYudG9wQ29udGV4
dE1lbnUsdi50b3BGb2N1cyx2LnRvcEtleURvd24sdi50b3BLZXlVcCx2LnRvcE1vdXNlRG93bix2
LnRvcE1vdXNlVXAsdi50b3BTZWxlY3Rpb25DaGFuZ2VdfX0sZz1udWxsLGI9bnVsbCxfPW51bGws
Qz0hMSxFPSExLHc9Zih7b25TZWxlY3Q6bnVsbH0pLFQ9e2V2ZW50VHlwZXM6eSxleHRyYWN0RXZl
bnRzOmZ1bmN0aW9uKGUsdCxuLHIpe2lmKCFFKXJldHVybiBudWxsO3ZhciBpPXQ/cy5nZXROb2Rl
RnJvbUluc3RhbmNlKHQpOndpbmRvdztzd2l0Y2goZSl7Y2FzZSB2LnRvcEZvY3VzOihkKGkpfHwi
dHJ1ZSI9PT1pLmNvbnRlbnRFZGl0YWJsZSkmJihnPWksYj10LF89bnVsbCk7YnJlYWs7Y2FzZSB2
LnRvcEJsdXI6Zz1udWxsLGI9bnVsbCxfPW51bGw7YnJlYWs7Y2FzZSB2LnRvcE1vdXNlRG93bjpD
PSEwO2JyZWFrO2Nhc2Ugdi50b3BDb250ZXh0TWVudTpjYXNlIHYudG9wTW91c2VVcDpyZXR1cm4g
Qz0hMSxvKG4scik7Y2FzZSB2LnRvcFNlbGVjdGlvbkNoYW5nZTppZihtKWJyZWFrO2Nhc2Ugdi50
b3BLZXlEb3duOmNhc2Ugdi50b3BLZXlVcDpyZXR1cm4gbyhuLHIpfXJldHVybiBudWxsfSxkaWRQ
dXRMaXN0ZW5lcjpmdW5jdGlvbihlLHQsbil7dD09PXcmJihFPSEwKX19O2UuZXhwb3J0cz1UfSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIi4iK2UuX3Jv
b3ROb2RlSUR9dmFyIG89bigyKSxpPW4oMTIpLGE9big2MCksdT1uKDIyKSxzPW4oNSksbD1uKDE4
MSksYz1uKDE4MikscD1uKDEzKSxkPW4oMTg1KSxmPW4oMTg3KSxoPW4oMjkpLHY9bigxODQpLG09
bigxODgpLHk9bigxODkpLGc9bigyNCksYj1uKDE5MCksXz1uKDcpLEM9big1MyksRT0obigxKSxu
KDE0KSksdz1pLnRvcExldmVsVHlwZXMsVD17YWJvcnQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVz
OntidWJibGVkOkUoe29uQWJvcnQ6ITB9KSxjYXB0dXJlZDpFKHtvbkFib3J0Q2FwdHVyZTohMH0p
fX0sYW5pbWF0aW9uRW5kOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbkFu
aW1hdGlvbkVuZDohMH0pLGNhcHR1cmVkOkUoe29uQW5pbWF0aW9uRW5kQ2FwdHVyZTohMH0pfX0s
YW5pbWF0aW9uSXRlcmF0aW9uOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtv
bkFuaW1hdGlvbkl0ZXJhdGlvbjohMH0pLGNhcHR1cmVkOkUoe29uQW5pbWF0aW9uSXRlcmF0aW9u
Q2FwdHVyZTohMH0pfX0sYW5pbWF0aW9uU3RhcnQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOnti
dWJibGVkOkUoe29uQW5pbWF0aW9uU3RhcnQ6ITB9KSxjYXB0dXJlZDpFKHtvbkFuaW1hdGlvblN0
YXJ0Q2FwdHVyZTohMH0pfX0sYmx1cjp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6
RSh7b25CbHVyOiEwfSksY2FwdHVyZWQ6RSh7b25CbHVyQ2FwdHVyZTohMH0pfX0sY2FuUGxheTp7
cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25DYW5QbGF5OiEwfSksY2FwdHVy
ZWQ6RSh7b25DYW5QbGF5Q2FwdHVyZTohMH0pfX0sY2FuUGxheVRocm91Z2g6e3BoYXNlZFJlZ2lz
dHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uQ2FuUGxheVRocm91Z2g6ITB9KSxjYXB0dXJlZDpF
KHtvbkNhblBsYXlUaHJvdWdoQ2FwdHVyZTohMH0pfX0sY2xpY2s6e3BoYXNlZFJlZ2lzdHJhdGlv
bk5hbWVzOntidWJibGVkOkUoe29uQ2xpY2s6ITB9KSxjYXB0dXJlZDpFKHtvbkNsaWNrQ2FwdHVy
ZTohMH0pfX0sY29udGV4dE1lbnU6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUo
e29uQ29udGV4dE1lbnU6ITB9KSxjYXB0dXJlZDpFKHtvbkNvbnRleHRNZW51Q2FwdHVyZTohMH0p
fX0sY29weTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25Db3B5OiEwfSks
Y2FwdHVyZWQ6RSh7b25Db3B5Q2FwdHVyZTohMH0pfX0sY3V0OntwaGFzZWRSZWdpc3RyYXRpb25O
YW1lczp7YnViYmxlZDpFKHtvbkN1dDohMH0pLGNhcHR1cmVkOkUoe29uQ3V0Q2FwdHVyZTohMH0p
fX0sZG91YmxlQ2xpY2s6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uRG91
YmxlQ2xpY2s6ITB9KSxjYXB0dXJlZDpFKHtvbkRvdWJsZUNsaWNrQ2FwdHVyZTohMH0pfX0sZHJh
Zzp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25EcmFnOiEwfSksY2FwdHVy
ZWQ6RSh7b25EcmFnQ2FwdHVyZTohMH0pfX0sZHJhZ0VuZDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFt
ZXM6e2J1YmJsZWQ6RSh7b25EcmFnRW5kOiEwfSksY2FwdHVyZWQ6RSh7b25EcmFnRW5kQ2FwdHVy
ZTohMH0pfX0sZHJhZ0VudGVyOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtv
bkRyYWdFbnRlcjohMH0pLGNhcHR1cmVkOkUoe29uRHJhZ0VudGVyQ2FwdHVyZTohMH0pfX0sZHJh
Z0V4aXQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uRHJhZ0V4aXQ6ITB9
KSxjYXB0dXJlZDpFKHtvbkRyYWdFeGl0Q2FwdHVyZTohMH0pfX0sZHJhZ0xlYXZlOntwaGFzZWRS
ZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbkRyYWdMZWF2ZTohMH0pLGNhcHR1cmVkOkUo
e29uRHJhZ0xlYXZlQ2FwdHVyZTohMH0pfX0sZHJhZ092ZXI6e3BoYXNlZFJlZ2lzdHJhdGlvbk5h
bWVzOntidWJibGVkOkUoe29uRHJhZ092ZXI6ITB9KSxjYXB0dXJlZDpFKHtvbkRyYWdPdmVyQ2Fw
dHVyZTohMH0pfX0sZHJhZ1N0YXJ0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpF
KHtvbkRyYWdTdGFydDohMH0pLGNhcHR1cmVkOkUoe29uRHJhZ1N0YXJ0Q2FwdHVyZTohMH0pfX0s
ZHJvcDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25Ecm9wOiEwfSksY2Fw
dHVyZWQ6RSh7b25Ecm9wQ2FwdHVyZTohMH0pfX0sZHVyYXRpb25DaGFuZ2U6e3BoYXNlZFJlZ2lz
dHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uRHVyYXRpb25DaGFuZ2U6ITB9KSxjYXB0dXJlZDpF
KHtvbkR1cmF0aW9uQ2hhbmdlQ2FwdHVyZTohMH0pfX0sZW1wdGllZDp7cGhhc2VkUmVnaXN0cmF0
aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25FbXB0aWVkOiEwfSksY2FwdHVyZWQ6RSh7b25FbXB0aWVk
Q2FwdHVyZTohMH0pfX0sZW5jcnlwdGVkOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxl
ZDpFKHtvbkVuY3J5cHRlZDohMH0pLGNhcHR1cmVkOkUoe29uRW5jcnlwdGVkQ2FwdHVyZTohMH0p
fX0sZW5kZWQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uRW5kZWQ6ITB9
KSxjYXB0dXJlZDpFKHtvbkVuZGVkQ2FwdHVyZTohMH0pfX0sZXJyb3I6e3BoYXNlZFJlZ2lzdHJh
dGlvbk5hbWVzOntidWJibGVkOkUoe29uRXJyb3I6ITB9KSxjYXB0dXJlZDpFKHtvbkVycm9yQ2Fw
dHVyZTohMH0pfX0sZm9jdXM6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29u
Rm9jdXM6ITB9KSxjYXB0dXJlZDpFKHtvbkZvY3VzQ2FwdHVyZTohMH0pfX0saW5wdXQ6e3BoYXNl
ZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uSW5wdXQ6ITB9KSxjYXB0dXJlZDpFKHtv
bklucHV0Q2FwdHVyZTohMH0pfX0saW52YWxpZDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1
YmJsZWQ6RSh7b25JbnZhbGlkOiEwfSksY2FwdHVyZWQ6RSh7b25JbnZhbGlkQ2FwdHVyZTohMH0p
fX0sa2V5RG93bjp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25LZXlEb3du
OiEwfSksY2FwdHVyZWQ6RSh7b25LZXlEb3duQ2FwdHVyZTohMH0pfX0sa2V5UHJlc3M6e3BoYXNl
ZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uS2V5UHJlc3M6ITB9KSxjYXB0dXJlZDpF
KHtvbktleVByZXNzQ2FwdHVyZTohMH0pfX0sa2V5VXA6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVz
OntidWJibGVkOkUoe29uS2V5VXA6ITB9KSxjYXB0dXJlZDpFKHtvbktleVVwQ2FwdHVyZTohMH0p
fX0sbG9hZDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25Mb2FkOiEwfSks
Y2FwdHVyZWQ6RSh7b25Mb2FkQ2FwdHVyZTohMH0pfX0sbG9hZGVkRGF0YTp7cGhhc2VkUmVnaXN0
cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25Mb2FkZWREYXRhOiEwfSksY2FwdHVyZWQ6RSh7b25M
b2FkZWREYXRhQ2FwdHVyZTohMH0pfX0sbG9hZGVkTWV0YWRhdGE6e3BoYXNlZFJlZ2lzdHJhdGlv
bk5hbWVzOntidWJibGVkOkUoe29uTG9hZGVkTWV0YWRhdGE6ITB9KSxjYXB0dXJlZDpFKHtvbkxv
YWRlZE1ldGFkYXRhQ2FwdHVyZTohMH0pfX0sbG9hZFN0YXJ0OntwaGFzZWRSZWdpc3RyYXRpb25O
YW1lczp7YnViYmxlZDpFKHtvbkxvYWRTdGFydDohMH0pLGNhcHR1cmVkOkUoe29uTG9hZFN0YXJ0
Q2FwdHVyZTohMH0pfX0sbW91c2VEb3duOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxl
ZDpFKHtvbk1vdXNlRG93bjohMH0pLGNhcHR1cmVkOkUoe29uTW91c2VEb3duQ2FwdHVyZTohMH0p
fX0sbW91c2VNb3ZlOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbk1vdXNl
TW92ZTohMH0pLGNhcHR1cmVkOkUoe29uTW91c2VNb3ZlQ2FwdHVyZTohMH0pfX0sbW91c2VPdXQ6
e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uTW91c2VPdXQ6ITB9KSxjYXB0
dXJlZDpFKHtvbk1vdXNlT3V0Q2FwdHVyZTohMH0pfX0sbW91c2VPdmVyOntwaGFzZWRSZWdpc3Ry
YXRpb25OYW1lczp7YnViYmxlZDpFKHtvbk1vdXNlT3ZlcjohMH0pLGNhcHR1cmVkOkUoe29uTW91
c2VPdmVyQ2FwdHVyZTohMH0pfX0sbW91c2VVcDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1
YmJsZWQ6RSh7b25Nb3VzZVVwOiEwfSksY2FwdHVyZWQ6RSh7b25Nb3VzZVVwQ2FwdHVyZTohMH0p
fX0scGFzdGU6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uUGFzdGU6ITB9
KSxjYXB0dXJlZDpFKHtvblBhc3RlQ2FwdHVyZTohMH0pfX0scGF1c2U6e3BoYXNlZFJlZ2lzdHJh
dGlvbk5hbWVzOntidWJibGVkOkUoe29uUGF1c2U6ITB9KSxjYXB0dXJlZDpFKHtvblBhdXNlQ2Fw
dHVyZTohMH0pfX0scGxheTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25Q
bGF5OiEwfSksY2FwdHVyZWQ6RSh7b25QbGF5Q2FwdHVyZTohMH0pfX0scGxheWluZzp7cGhhc2Vk
UmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25QbGF5aW5nOiEwfSksY2FwdHVyZWQ6RSh7
b25QbGF5aW5nQ2FwdHVyZTohMH0pfX0scHJvZ3Jlc3M6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVz
OntidWJibGVkOkUoe29uUHJvZ3Jlc3M6ITB9KSxjYXB0dXJlZDpFKHtvblByb2dyZXNzQ2FwdHVy
ZTohMH0pfX0scmF0ZUNoYW5nZTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7
b25SYXRlQ2hhbmdlOiEwfSksY2FwdHVyZWQ6RSh7b25SYXRlQ2hhbmdlQ2FwdHVyZTohMH0pfX0s
cmVzZXQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uUmVzZXQ6ITB9KSxj
YXB0dXJlZDpFKHtvblJlc2V0Q2FwdHVyZTohMH0pfX0sc2Nyb2xsOntwaGFzZWRSZWdpc3RyYXRp
b25OYW1lczp7YnViYmxlZDpFKHtvblNjcm9sbDohMH0pLGNhcHR1cmVkOkUoe29uU2Nyb2xsQ2Fw
dHVyZTohMH0pfX0sc2Vla2VkOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtv
blNlZWtlZDohMH0pLGNhcHR1cmVkOkUoe29uU2Vla2VkQ2FwdHVyZTohMH0pfX0sc2Vla2luZzp7
cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25TZWVraW5nOiEwfSksY2FwdHVy
ZWQ6RSh7b25TZWVraW5nQ2FwdHVyZTohMH0pfX0sc3RhbGxlZDp7cGhhc2VkUmVnaXN0cmF0aW9u
TmFtZXM6e2J1YmJsZWQ6RSh7b25TdGFsbGVkOiEwfSksY2FwdHVyZWQ6RSh7b25TdGFsbGVkQ2Fw
dHVyZTohMH0pfX0sc3VibWl0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtv
blN1Ym1pdDohMH0pLGNhcHR1cmVkOkUoe29uU3VibWl0Q2FwdHVyZTohMH0pfX0sc3VzcGVuZDp7
cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25TdXNwZW5kOiEwfSksY2FwdHVy
ZWQ6RSh7b25TdXNwZW5kQ2FwdHVyZTohMH0pfX0sdGltZVVwZGF0ZTp7cGhhc2VkUmVnaXN0cmF0
aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25UaW1lVXBkYXRlOiEwfSksY2FwdHVyZWQ6RSh7b25UaW1l
VXBkYXRlQ2FwdHVyZTohMH0pfX0sdG91Y2hDYW5jZWw6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVz
OntidWJibGVkOkUoe29uVG91Y2hDYW5jZWw6ITB9KSxjYXB0dXJlZDpFKHtvblRvdWNoQ2FuY2Vs
Q2FwdHVyZTohMH0pfX0sdG91Y2hFbmQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVk
OkUoe29uVG91Y2hFbmQ6ITB9KSxjYXB0dXJlZDpFKHtvblRvdWNoRW5kQ2FwdHVyZTohMH0pfX0s
dG91Y2hNb3ZlOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvblRvdWNoTW92
ZTohMH0pLGNhcHR1cmVkOkUoe29uVG91Y2hNb3ZlQ2FwdHVyZTohMH0pfX0sdG91Y2hTdGFydDp7
cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25Ub3VjaFN0YXJ0OiEwfSksY2Fw
dHVyZWQ6RSh7b25Ub3VjaFN0YXJ0Q2FwdHVyZTohMH0pfX0sdHJhbnNpdGlvbkVuZDp7cGhhc2Vk
UmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25UcmFuc2l0aW9uRW5kOiEwfSksY2FwdHVy
ZWQ6RSh7b25UcmFuc2l0aW9uRW5kQ2FwdHVyZTohMH0pfX0sdm9sdW1lQ2hhbmdlOntwaGFzZWRS
ZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvblZvbHVtZUNoYW5nZTohMH0pLGNhcHR1cmVk
OkUoe29uVm9sdW1lQ2hhbmdlQ2FwdHVyZTohMH0pfX0sd2FpdGluZzp7cGhhc2VkUmVnaXN0cmF0
aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25XYWl0aW5nOiEwfSksY2FwdHVyZWQ6RSh7b25XYWl0aW5n
Q2FwdHVyZTohMH0pfX0sd2hlZWw6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUo
e29uV2hlZWw6ITB9KSxjYXB0dXJlZDpFKHtvbldoZWVsQ2FwdHVyZTohMH0pfX19LFA9e3RvcEFi
b3J0OlQuYWJvcnQsdG9wQW5pbWF0aW9uRW5kOlQuYW5pbWF0aW9uRW5kLHRvcEFuaW1hdGlvbkl0
ZXJhdGlvbjpULmFuaW1hdGlvbkl0ZXJhdGlvbix0b3BBbmltYXRpb25TdGFydDpULmFuaW1hdGlv
blN0YXJ0LHRvcEJsdXI6VC5ibHVyLHRvcENhblBsYXk6VC5jYW5QbGF5LHRvcENhblBsYXlUaHJv
dWdoOlQuY2FuUGxheVRocm91Z2gsdG9wQ2xpY2s6VC5jbGljayx0b3BDb250ZXh0TWVudTpULmNv
bnRleHRNZW51LHRvcENvcHk6VC5jb3B5LHRvcEN1dDpULmN1dCx0b3BEb3VibGVDbGljazpULmRv
dWJsZUNsaWNrLHRvcERyYWc6VC5kcmFnLHRvcERyYWdFbmQ6VC5kcmFnRW5kLHRvcERyYWdFbnRl
cjpULmRyYWdFbnRlcix0b3BEcmFnRXhpdDpULmRyYWdFeGl0LHRvcERyYWdMZWF2ZTpULmRyYWdM
ZWF2ZSx0b3BEcmFnT3ZlcjpULmRyYWdPdmVyLHRvcERyYWdTdGFydDpULmRyYWdTdGFydCx0b3BE
cm9wOlQuZHJvcCx0b3BEdXJhdGlvbkNoYW5nZTpULmR1cmF0aW9uQ2hhbmdlLHRvcEVtcHRpZWQ6
VC5lbXB0aWVkLHRvcEVuY3J5cHRlZDpULmVuY3J5cHRlZCx0b3BFbmRlZDpULmVuZGVkLHRvcEVy
cm9yOlQuZXJyb3IsdG9wRm9jdXM6VC5mb2N1cyx0b3BJbnB1dDpULmlucHV0LHRvcEludmFsaWQ6
VC5pbnZhbGlkLHRvcEtleURvd246VC5rZXlEb3duLHRvcEtleVByZXNzOlQua2V5UHJlc3MsdG9w
S2V5VXA6VC5rZXlVcCx0b3BMb2FkOlQubG9hZCx0b3BMb2FkZWREYXRhOlQubG9hZGVkRGF0YSx0
b3BMb2FkZWRNZXRhZGF0YTpULmxvYWRlZE1ldGFkYXRhLHRvcExvYWRTdGFydDpULmxvYWRTdGFy
dCx0b3BNb3VzZURvd246VC5tb3VzZURvd24sdG9wTW91c2VNb3ZlOlQubW91c2VNb3ZlLHRvcE1v
dXNlT3V0OlQubW91c2VPdXQsdG9wTW91c2VPdmVyOlQubW91c2VPdmVyLHRvcE1vdXNlVXA6VC5t
b3VzZVVwLHRvcFBhc3RlOlQucGFzdGUsdG9wUGF1c2U6VC5wYXVzZSx0b3BQbGF5OlQucGxheSx0
b3BQbGF5aW5nOlQucGxheWluZyx0b3BQcm9ncmVzczpULnByb2dyZXNzLHRvcFJhdGVDaGFuZ2U6
VC5yYXRlQ2hhbmdlLHRvcFJlc2V0OlQucmVzZXQsdG9wU2Nyb2xsOlQuc2Nyb2xsLHRvcFNlZWtl
ZDpULnNlZWtlZCx0b3BTZWVraW5nOlQuc2Vla2luZyx0b3BTdGFsbGVkOlQuc3RhbGxlZCx0b3BT
dWJtaXQ6VC5zdWJtaXQsdG9wU3VzcGVuZDpULnN1c3BlbmQsdG9wVGltZVVwZGF0ZTpULnRpbWVV
cGRhdGUsdG9wVG91Y2hDYW5jZWw6VC50b3VjaENhbmNlbCx0b3BUb3VjaEVuZDpULnRvdWNoRW5k
LHRvcFRvdWNoTW92ZTpULnRvdWNoTW92ZSx0b3BUb3VjaFN0YXJ0OlQudG91Y2hTdGFydCx0b3BU
cmFuc2l0aW9uRW5kOlQudHJhbnNpdGlvbkVuZCx0b3BWb2x1bWVDaGFuZ2U6VC52b2x1bWVDaGFu
Z2UsdG9wV2FpdGluZzpULndhaXRpbmcsdG9wV2hlZWw6VC53aGVlbH07Zm9yKHZhciB4IGluIFAp
UFt4XS5kZXBlbmRlbmNpZXM9W3hdO3ZhciBPPUUoe29uQ2xpY2s6bnVsbH0pLFM9e30sTT17ZXZl
bnRUeXBlczpULGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9UFtlXTtpZigh
aSlyZXR1cm4gbnVsbDt2YXIgYTtzd2l0Y2goZSl7Y2FzZSB3LnRvcEFib3J0OmNhc2Ugdy50b3BD
YW5QbGF5OmNhc2Ugdy50b3BDYW5QbGF5VGhyb3VnaDpjYXNlIHcudG9wRHVyYXRpb25DaGFuZ2U6
Y2FzZSB3LnRvcEVtcHRpZWQ6Y2FzZSB3LnRvcEVuY3J5cHRlZDpjYXNlIHcudG9wRW5kZWQ6Y2Fz
ZSB3LnRvcEVycm9yOmNhc2Ugdy50b3BJbnB1dDpjYXNlIHcudG9wSW52YWxpZDpjYXNlIHcudG9w
TG9hZDpjYXNlIHcudG9wTG9hZGVkRGF0YTpjYXNlIHcudG9wTG9hZGVkTWV0YWRhdGE6Y2FzZSB3
LnRvcExvYWRTdGFydDpjYXNlIHcudG9wUGF1c2U6Y2FzZSB3LnRvcFBsYXk6Y2FzZSB3LnRvcFBs
YXlpbmc6Y2FzZSB3LnRvcFByb2dyZXNzOmNhc2Ugdy50b3BSYXRlQ2hhbmdlOmNhc2Ugdy50b3BS
ZXNldDpjYXNlIHcudG9wU2Vla2VkOmNhc2Ugdy50b3BTZWVraW5nOmNhc2Ugdy50b3BTdGFsbGVk
OmNhc2Ugdy50b3BTdWJtaXQ6Y2FzZSB3LnRvcFN1c3BlbmQ6Y2FzZSB3LnRvcFRpbWVVcGRhdGU6
Y2FzZSB3LnRvcFZvbHVtZUNoYW5nZTpjYXNlIHcudG9wV2FpdGluZzphPXA7YnJlYWs7Y2FzZSB3
LnRvcEtleVByZXNzOmlmKDA9PT1DKG4pKXJldHVybiBudWxsO2Nhc2Ugdy50b3BLZXlEb3duOmNh
c2Ugdy50b3BLZXlVcDphPWY7YnJlYWs7Y2FzZSB3LnRvcEJsdXI6Y2FzZSB3LnRvcEZvY3VzOmE9
ZDticmVhaztjYXNlIHcudG9wQ2xpY2s6aWYoMj09PW4uYnV0dG9uKXJldHVybiBudWxsO2Nhc2Ug
dy50b3BDb250ZXh0TWVudTpjYXNlIHcudG9wRG91YmxlQ2xpY2s6Y2FzZSB3LnRvcE1vdXNlRG93
bjpjYXNlIHcudG9wTW91c2VNb3ZlOmNhc2Ugdy50b3BNb3VzZU91dDpjYXNlIHcudG9wTW91c2VP
dmVyOmNhc2Ugdy50b3BNb3VzZVVwOmE9aDticmVhaztjYXNlIHcudG9wRHJhZzpjYXNlIHcudG9w
RHJhZ0VuZDpjYXNlIHcudG9wRHJhZ0VudGVyOmNhc2Ugdy50b3BEcmFnRXhpdDpjYXNlIHcudG9w
RHJhZ0xlYXZlOmNhc2Ugdy50b3BEcmFnT3ZlcjpjYXNlIHcudG9wRHJhZ1N0YXJ0OmNhc2Ugdy50
b3BEcm9wOmE9djticmVhaztjYXNlIHcudG9wVG91Y2hDYW5jZWw6Y2FzZSB3LnRvcFRvdWNoRW5k
OmNhc2Ugdy50b3BUb3VjaE1vdmU6Y2FzZSB3LnRvcFRvdWNoU3RhcnQ6YT1tO2JyZWFrO2Nhc2Ug
dy50b3BBbmltYXRpb25FbmQ6Y2FzZSB3LnRvcEFuaW1hdGlvbkl0ZXJhdGlvbjpjYXNlIHcudG9w
QW5pbWF0aW9uU3RhcnQ6YT1sO2JyZWFrO2Nhc2Ugdy50b3BUcmFuc2l0aW9uRW5kOmE9eTticmVh
aztjYXNlIHcudG9wU2Nyb2xsOmE9ZzticmVhaztjYXNlIHcudG9wV2hlZWw6YT1iO2JyZWFrO2Nh
c2Ugdy50b3BDb3B5OmNhc2Ugdy50b3BDdXQ6Y2FzZSB3LnRvcFBhc3RlOmE9Y31hP3ZvaWQgMDpv
KCI4NiIsZSk7dmFyIHM9YS5nZXRQb29sZWQoaSx0LG4scik7cmV0dXJuIHUuYWNjdW11bGF0ZVR3
b1BoYXNlRGlzcGF0Y2hlcyhzKSxzfSxkaWRQdXRMaXN0ZW5lcjpmdW5jdGlvbihlLHQsbil7aWYo
dD09PU8pe3ZhciBvPXIoZSksaT1zLmdldE5vZGVGcm9tSW5zdGFuY2UoZSk7U1tvXXx8KFNbb109
YS5saXN0ZW4oaSwiY2xpY2siLF8pKX19LHdpbGxEZWxldGVMaXN0ZW5lcjpmdW5jdGlvbihlLHQp
e2lmKHQ9PT1PKXt2YXIgbj1yKGUpO1Nbbl0ucmVtb3ZlKCksZGVsZXRlIFNbbl19fX07ZS5leHBv
cnRzPU19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXty
ZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89bigxMyksaT17YW5pbWF0aW9uTmFtZTpu
dWxsLGVsYXBzZWRUaW1lOm51bGwscHNldWRvRWxlbWVudDpudWxsfTtvLmF1Z21lbnRDbGFzcyhy
LGkpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPW4oMTMpLGk9e2NsaXBi
b2FyZERhdGE6ZnVuY3Rpb24oZSl7cmV0dXJuImNsaXBib2FyZERhdGEiaW4gZT9lLmNsaXBib2Fy
ZERhdGE6d2luZG93LmNsaXBib2FyZERhdGF9fTtvLmF1Z21lbnRDbGFzcyhyLGkpLGUuZXhwb3J0
cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0
dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPW4oMTMpLGk9e2RhdGE6bnVsbH07by5hdWdt
ZW50Q2xhc3MocixpKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDI5
KSxpPXtkYXRhVHJhbnNmZXI6bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSxlLmV4cG9ydHM9cn0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBv
LmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDI0KSxpPXtyZWxhdGVkVGFyZ2V0Om51bGx9O28u
YXVnbWVudENsYXNzKHIsaSksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89
bigxMyksaT17ZGF0YTpudWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkpLGUuZXhwb3J0cz1yfSxmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2Fs
bCh0aGlzLGUsdCxuLHIpfXZhciBvPW4oMjQpLGk9big1MyksYT1uKDE5NiksdT1uKDU0KSxzPXtr
ZXk6YSxsb2NhdGlvbjpudWxsLGN0cmxLZXk6bnVsbCxzaGlmdEtleTpudWxsLGFsdEtleTpudWxs
LG1ldGFLZXk6bnVsbCxyZXBlYXQ6bnVsbCxsb2NhbGU6bnVsbCxnZXRNb2RpZmllclN0YXRlOnUs
Y2hhckNvZGU6ZnVuY3Rpb24oZSl7cmV0dXJuImtleXByZXNzIj09PWUudHlwZT9pKGUpOjB9LGtl
eUNvZGU6ZnVuY3Rpb24oZSl7cmV0dXJuImtleWRvd24iPT09ZS50eXBlfHwia2V5dXAiPT09ZS50
eXBlP2Uua2V5Q29kZTowfSx3aGljaDpmdW5jdGlvbihlKXtyZXR1cm4ia2V5cHJlc3MiPT09ZS50
eXBlP2koZSk6ImtleWRvd24iPT09ZS50eXBlfHwia2V5dXAiPT09ZS50eXBlP2Uua2V5Q29kZTow
fX07by5hdWdtZW50Q2xhc3MocixzKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12
YXIgbz1uKDI0KSxpPW4oNTQpLGE9e3RvdWNoZXM6bnVsbCx0YXJnZXRUb3VjaGVzOm51bGwsY2hh
bmdlZFRvdWNoZXM6bnVsbCxhbHRLZXk6bnVsbCxtZXRhS2V5Om51bGwsY3RybEtleTpudWxsLHNo
aWZ0S2V5Om51bGwsZ2V0TW9kaWZpZXJTdGF0ZTppfTtvLmF1Z21lbnRDbGFzcyhyLGEpLGUuZXhw
b3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7
cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPW4oMTMpLGk9e3Byb3BlcnR5TmFtZTpu
dWxsLGVsYXBzZWRUaW1lOm51bGwscHNldWRvRWxlbWVudDpudWxsfTtvLmF1Z21lbnRDbGFzcyhy
LGkpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPW4oMjkpLGk9e2RlbHRh
WDpmdW5jdGlvbihlKXtyZXR1cm4iZGVsdGFYImluIGU/ZS5kZWx0YVg6IndoZWVsRGVsdGFYImlu
IGU/LWUud2hlZWxEZWx0YVg6MH0sZGVsdGFZOmZ1bmN0aW9uKGUpe3JldHVybiJkZWx0YVkiaW4g
ZT9lLmRlbHRhWToid2hlZWxEZWx0YVkiaW4gZT8tZS53aGVlbERlbHRhWToid2hlZWxEZWx0YSJp
biBlPy1lLndoZWVsRGVsdGE6MH0sZGVsdGFaOm51bGwsZGVsdGFNb2RlOm51bGx9O28uYXVnbWVu
dENsYXNzKHIsaSksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIG4oZSl7Zm9yKHZhciB0PTEsbj0wLG89MCxpPWUubGVuZ3RoLGE9aSYtNDtvPGE7KXtmb3Io
dmFyIHU9TWF0aC5taW4obys0MDk2LGEpO288dTtvKz00KW4rPSh0Kz1lLmNoYXJDb2RlQXQobykp
Kyh0Kz1lLmNoYXJDb2RlQXQobysxKSkrKHQrPWUuY2hhckNvZGVBdChvKzIpKSsodCs9ZS5jaGFy
Q29kZUF0KG8rMykpO3QlPXIsbiU9cn1mb3IoO288aTtvKyspbis9dCs9ZS5jaGFyQ29kZUF0KG8p
O3JldHVybiB0JT1yLG4lPXIsdHxuPDwxNn12YXIgcj02NTUyMTtlLmV4cG9ydHM9bn0sZnVuY3Rp
b24oZSx0LG4peyhmdW5jdGlvbih0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyLHMs
bCl7Zm9yKHZhciBjIGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eShjKSl7dmFyIHA7dHJ5eyJmdW5j
dGlvbiIhPXR5cGVvZiBlW2NdP28oIjg0IixyfHwiUmVhY3QgY2xhc3MiLGlbbl0sYyk6dm9pZCAw
LHA9ZVtjXSh0LGMscixuLG51bGwsYSl9Y2F0Y2goZCl7cD1kfWlmKHAgaW5zdGFuY2VvZiBFcnJv
ciYmIShwLm1lc3NhZ2UgaW4gdSkpe3VbcC5tZXNzYWdlXT0hMH19fXZhciBvPW4oMiksaT1uKDQ4
KSxhPW4oNTApO24oMSksbigzKTsidW5kZWZpbmVkIiE9dHlwZW9mIHQmJnQuZW52LDE7dmFyIHU9
e307ZS5leHBvcnRzPXJ9KS5jYWxsKHQsbigzNikpfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSx0LG4pe3ZhciByPW51bGw9PXR8fCJib29sZWFuIj09dHlwZW9mIHR8
fCIiPT09dDtpZihyKXJldHVybiIiO3ZhciBvPWlzTmFOKHQpO2lmKG98fDA9PT10fHxpLmhhc093
blByb3BlcnR5KGUpJiZpW2VdKXJldHVybiIiK3Q7aWYoInN0cmluZyI9PXR5cGVvZiB0KXt0PXQu
dHJpbSgpfXJldHVybiB0KyJweCJ9dmFyIG89big3MCksaT0obigzKSxvLmlzVW5pdGxlc3NOdW1i
ZXIpO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSl7aWYobnVsbD09ZSlyZXR1cm4gbnVsbDtpZigxPT09ZS5ub2RlVHlwZSlyZXR1cm4gZTt2YXIg
dD1hLmdldChlKTtyZXR1cm4gdD8odD11KHQpLHQ/aS5nZXROb2RlRnJvbUluc3RhbmNlKHQpOm51
bGwpOnZvaWQoImZ1bmN0aW9uIj09dHlwZW9mIGUucmVuZGVyP28oIjQ0Iik6bygiNDUiLE9iamVj
dC5rZXlzKGUpKSl9dmFyIG89bigyKSxpPShuKDE2KSxuKDUpKSxhPW4oMjMpLHU9big5MCk7bigx
KSxuKDMpO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKHQpeyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe2lmKGUmJiJvYmplY3QiPT10eXBlb2YgZSl7dmFyIG89
ZSxpPXZvaWQgMD09PW9bbl07aSYmbnVsbCE9dCYmKG9bbl09dCl9fWZ1bmN0aW9uIG8oZSx0KXtp
ZihudWxsPT1lKXJldHVybiBlO3ZhciBuPXt9O3JldHVybiBpKGUscixuKSxufXZhciBpPShuKDQx
KSxuKDU4KSk7bigzKTsidW5kZWZpbmVkIiE9dHlwZW9mIHQmJnQuZW52LDEsZS5leHBvcnRzPW99
KS5jYWxsKHQsbigzNikpfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSl7aWYoZS5rZXkpe3ZhciB0PWlbZS5rZXldfHxlLmtleTtpZigiVW5pZGVudGlmaWVkIiE9PXQp
cmV0dXJuIHR9aWYoImtleXByZXNzIj09PWUudHlwZSl7dmFyIG49byhlKTtyZXR1cm4gMTM9PT1u
PyJFbnRlciI6U3RyaW5nLmZyb21DaGFyQ29kZShuKX1yZXR1cm4ia2V5ZG93biI9PT1lLnR5cGV8
fCJrZXl1cCI9PT1lLnR5cGU/YVtlLmtleUNvZGVdfHwiVW5pZGVudGlmaWVkIjoiIn12YXIgbz1u
KDUzKSxpPXtFc2M6IkVzY2FwZSIsU3BhY2ViYXI6IiAiLExlZnQ6IkFycm93TGVmdCIsVXA6IkFy
cm93VXAiLFJpZ2h0OiJBcnJvd1JpZ2h0IixEb3duOiJBcnJvd0Rvd24iLERlbDoiRGVsZXRlIixX
aW46Ik9TIixNZW51OiJDb250ZXh0TWVudSIsQXBwczoiQ29udGV4dE1lbnUiLFNjcm9sbDoiU2Ny
b2xsTG9jayIsTW96UHJpbnRhYmxlS2V5OiJVbmlkZW50aWZpZWQifSxhPXs4OiJCYWNrc3BhY2Ui
LDk6IlRhYiIsMTI6IkNsZWFyIiwxMzoiRW50ZXIiLDE2OiJTaGlmdCIsMTc6IkNvbnRyb2wiLDE4
OiJBbHQiLDE5OiJQYXVzZSIsMjA6IkNhcHNMb2NrIiwyNzoiRXNjYXBlIiwzMjoiICIsMzM6IlBh
Z2VVcCIsMzQ6IlBhZ2VEb3duIiwzNToiRW5kIiwzNjoiSG9tZSIsMzc6IkFycm93TGVmdCIsMzg6
IkFycm93VXAiLDM5OiJBcnJvd1JpZ2h0Iiw0MDoiQXJyb3dEb3duIiw0NToiSW5zZXJ0Iiw0Njoi
RGVsZXRlIiwxMTI6IkYxIiwxMTM6IkYyIiwxMTQ6IkYzIiwxMTU6IkY0IiwxMTY6IkY1IiwxMTc6
IkY2IiwxMTg6IkY3IiwxMTk6IkY4IiwxMjA6IkY5IiwxMjE6IkYxMCIsMTIyOiJGMTEiLDEyMzoi
RjEyIiwxNDQ6Ik51bUxvY2siLDE0NToiU2Nyb2xsTG9jayIsMjI0OiJNZXRhIn07ZS5leHBvcnRz
PXJ9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7Zm9yKDtlJiZlLmZp
cnN0Q2hpbGQ7KWU9ZS5maXJzdENoaWxkO3JldHVybiBlfWZ1bmN0aW9uIHIoZSl7Zm9yKDtlOyl7
aWYoZS5uZXh0U2libGluZylyZXR1cm4gZS5uZXh0U2libGluZztlPWUucGFyZW50Tm9kZX19ZnVu
Y3Rpb24gbyhlLHQpe2Zvcih2YXIgbz1uKGUpLGk9MCxhPTA7bzspe2lmKDM9PT1vLm5vZGVUeXBl
KXtpZihhPWkrby50ZXh0Q29udGVudC5sZW5ndGgsaTw9dCYmYT49dClyZXR1cm57bm9kZTpvLG9m
ZnNldDp0LWl9O2k9YX1vPW4ocihvKSl9fWUuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXt2YXIgbj17fTtyZXR1cm4gbltlLnRvTG93ZXJDYXNl
KCldPXQudG9Mb3dlckNhc2UoKSxuWyJXZWJraXQiK2VdPSJ3ZWJraXQiK3QsblsiTW96IitlXT0i
bW96Iit0LG5bIm1zIitlXT0iTVMiK3QsblsiTyIrZV09Im8iK3QudG9Mb3dlckNhc2UoKSxufWZ1
bmN0aW9uIG8oZSl7aWYodVtlXSlyZXR1cm4gdVtlXTtpZighYVtlXSlyZXR1cm4gZTt2YXIgdD1h
W2VdO2Zvcih2YXIgbiBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkobikmJm4gaW4gcylyZXR1cm4g
dVtlXT10W25dO3JldHVybiIifXZhciBpPW4oNiksYT17YW5pbWF0aW9uZW5kOnIoIkFuaW1hdGlv
biIsIkFuaW1hdGlvbkVuZCIpLGFuaW1hdGlvbml0ZXJhdGlvbjpyKCJBbmltYXRpb24iLCJBbmlt
YXRpb25JdGVyYXRpb24iKSxhbmltYXRpb25zdGFydDpyKCJBbmltYXRpb24iLCJBbmltYXRpb25T
dGFydCIpLHRyYW5zaXRpb25lbmQ6cigiVHJhbnNpdGlvbiIsIlRyYW5zaXRpb25FbmQiKX0sdT17
fSxzPXt9O2kuY2FuVXNlRE9NJiYocz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHls
ZSwiQW5pbWF0aW9uRXZlbnQiaW4gd2luZG93fHwoZGVsZXRlIGEuYW5pbWF0aW9uZW5kLmFuaW1h
dGlvbixkZWxldGUgYS5hbmltYXRpb25pdGVyYXRpb24uYW5pbWF0aW9uLGRlbGV0ZSBhLmFuaW1h
dGlvbnN0YXJ0LmFuaW1hdGlvbiksIlRyYW5zaXRpb25FdmVudCJpbiB3aW5kb3d8fGRlbGV0ZSBh
LnRyYW5zaXRpb25lbmQudHJhbnNpdGlvbiksZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gaS5pc1ZhbGlkRWxlbWVudChlKT92b2lk
IDA6bygiMTQzIiksZX12YXIgbz1uKDIpLGk9big5KTtuKDEpO2UuZXhwb3J0cz1yfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuJyInK28oZSkrJyInfXZh
ciBvPW4oMzApO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBy
PW4oODEpO2UuZXhwb3J0cz1yLnJlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyfSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9l
OntkZWZhdWx0OmV9fWZ1bmN0aW9uIG8oKXtmb3IodmFyIGU9YXJndW1lbnRzLmxlbmd0aCx0PUFy
cmF5KGUpLG49MDtuPGU7bisrKXRbbl09YXJndW1lbnRzW25dO3JldHVybiBmdW5jdGlvbihlKXty
ZXR1cm4gZnVuY3Rpb24obixyLG8pe3ZhciBhPWUobixyLG8pLHM9YS5kaXNwYXRjaCxsPVtdLGM9
e2dldFN0YXRlOmEuZ2V0U3RhdGUsZGlzcGF0Y2g6ZnVuY3Rpb24oZSl7cmV0dXJuIHMoZSl9fTty
ZXR1cm4gbD10Lm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZShjKX0pLHM9dS5kZWZhdWx0LmFwcGx5
KHZvaWQgMCxsKShhLmRpc3BhdGNoKSxpKHt9LGEse2Rpc3BhdGNoOnN9KX19fXQuX19lc01vZHVs
ZT0hMDt2YXIgaT1PYmplY3QuYXNzaWdufHxmdW5jdGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3Vt
ZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0
LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBl
fTt0LmRlZmF1bHQ9bzt2YXIgYT1uKDk2KSx1PXIoYSl9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIG4oZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gdChlLmFwcGx5KHZv
aWQgMCxhcmd1bWVudHMpKX19ZnVuY3Rpb24gcihlLHQpe2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBl
KXJldHVybiBuKGUsdCk7aWYoIm9iamVjdCIhPXR5cGVvZiBlfHxudWxsPT09ZSl0aHJvdyBuZXcg
RXJyb3IoImJpbmRBY3Rpb25DcmVhdG9ycyBleHBlY3RlZCBhbiBvYmplY3Qgb3IgYSBmdW5jdGlv
biwgaW5zdGVhZCByZWNlaXZlZCAiKyhudWxsPT09ZT8ibnVsbCI6dHlwZW9mIGUpKycuIERpZCB5
b3Ugd3JpdGUgImltcG9ydCBBY3Rpb25DcmVhdG9ycyBmcm9tIiBpbnN0ZWFkIG9mICJpbXBvcnQg
KiBhcyBBY3Rpb25DcmVhdG9ycyBmcm9tIj8nKTtmb3IodmFyIHI9T2JqZWN0LmtleXMoZSksbz17
fSxpPTA7aTxyLmxlbmd0aDtpKyspe3ZhciBhPXJbaV0sdT1lW2FdOyJmdW5jdGlvbiI9PXR5cGVv
ZiB1JiYob1thXT1uKHUsdCkpfXJldHVybiBvfXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9cn0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9f
ZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBvKGUsdCl7dmFyIG49dCYmdC50eXBlLHI9
biYmJyInK24udG9TdHJpbmcoKSsnIid8fCJhbiBhY3Rpb24iO3JldHVybiJHaXZlbiBhY3Rpb24g
IityKycsIHJlZHVjZXIgIicrZSsnIiByZXR1cm5lZCB1bmRlZmluZWQuIFRvIGlnbm9yZSBhbiBh
Y3Rpb24sIHlvdSBtdXN0IGV4cGxpY2l0bHkgcmV0dXJuIHRoZSBwcmV2aW91cyBzdGF0ZS4nfWZ1
bmN0aW9uIGkoZSl7T2JqZWN0LmtleXMoZSkuZm9yRWFjaChmdW5jdGlvbih0KXt2YXIgbj1lW3Rd
LHI9bih2b2lkIDAse3R5cGU6dS5BY3Rpb25UeXBlcy5JTklUfSk7aWYoInVuZGVmaW5lZCI9PXR5
cGVvZiByKXRocm93IG5ldyBFcnJvcignUmVkdWNlciAiJyt0KyciIHJldHVybmVkIHVuZGVmaW5l
ZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uIElmIHRoZSBzdGF0ZSBwYXNzZWQgdG8gdGhlIHJlZHVj
ZXIgaXMgdW5kZWZpbmVkLCB5b3UgbXVzdCBleHBsaWNpdGx5IHJldHVybiB0aGUgaW5pdGlhbCBz
dGF0ZS4gVGhlIGluaXRpYWwgc3RhdGUgbWF5IG5vdCBiZSB1bmRlZmluZWQuJyk7dmFyIG89IkBA
cmVkdXgvUFJPQkVfVU5LTk9XTl9BQ1RJT05fIitNYXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5z
dWJzdHJpbmcoNykuc3BsaXQoIiIpLmpvaW4oIi4iKTtpZigidW5kZWZpbmVkIj09dHlwZW9mIG4o
dm9pZCAwLHt0eXBlOm99KSl0aHJvdyBuZXcgRXJyb3IoJ1JlZHVjZXIgIicrdCsnIiByZXR1cm5l
ZCB1bmRlZmluZWQgd2hlbiBwcm9iZWQgd2l0aCBhIHJhbmRvbSB0eXBlLiAnKygiRG9uJ3QgdHJ5
IHRvIGhhbmRsZSAiK3UuQWN0aW9uVHlwZXMuSU5JVCsnIG9yIG90aGVyIGFjdGlvbnMgaW4gInJl
ZHV4LyoiICcpKyJuYW1lc3BhY2UuIFRoZXkgYXJlIGNvbnNpZGVyZWQgcHJpdmF0ZS4gSW5zdGVh
ZCwgeW91IG11c3QgcmV0dXJuIHRoZSBjdXJyZW50IHN0YXRlIGZvciBhbnkgdW5rbm93biBhY3Rp
b25zLCB1bmxlc3MgaXQgaXMgdW5kZWZpbmVkLCBpbiB3aGljaCBjYXNlIHlvdSBtdXN0IHJldHVy
biB0aGUgaW5pdGlhbCBzdGF0ZSwgcmVnYXJkbGVzcyBvZiB0aGUgYWN0aW9uIHR5cGUuIFRoZSBp
bml0aWFsIHN0YXRlIG1heSBub3QgYmUgdW5kZWZpbmVkLiIpfSl9ZnVuY3Rpb24gYShlKXtmb3Io
dmFyIHQ9T2JqZWN0LmtleXMoZSksbj17fSxyPTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBhPXRbcl07
ImZ1bmN0aW9uIj09dHlwZW9mIGVbYV0mJihuW2FdPWVbYV0pfXZhciB1LHM9T2JqZWN0LmtleXMo
bik7dHJ5e2kobil9Y2F0Y2gobCl7dT1sfXJldHVybiBmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50
cy5sZW5ndGg8PTB8fHZvaWQgMD09PWFyZ3VtZW50c1swXT97fTphcmd1bWVudHNbMF0sdD1hcmd1
bWVudHNbMV07aWYodSl0aHJvdyB1O2Zvcih2YXIgcj0hMSxpPXt9LGE9MDthPHMubGVuZ3RoO2Er
Kyl7dmFyIGw9c1thXSxjPW5bbF0scD1lW2xdLGQ9YyhwLHQpO2lmKCJ1bmRlZmluZWQiPT10eXBl
b2YgZCl7dmFyIGY9byhsLHQpO3Rocm93IG5ldyBFcnJvcihmKX1pW2xdPWQscj1yfHxkIT09cH1y
ZXR1cm4gcj9pOmV9fXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9YTt2YXIgdT1uKDk3KSxzPW4o
MzUpLGw9KHIocyksbig5OCkpO3IobCl9LGZ1bmN0aW9uKGUsdCxuKXtlLmV4cG9ydHM9bigyMDYp
fSxmdW5jdGlvbihlLHQsbil7KGZ1bmN0aW9uKGUscil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG8o
ZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fU9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1uKDIwNyksYT1vKGkpLHU9ZTt1
PSJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93
P3dpbmRvdzoidW5kZWZpbmVkIiE9dHlwZW9mIHI/cjpGdW5jdGlvbigicmV0dXJuIHRoaXMiKSgp
O3ZhciBzPSgwLGEuZGVmYXVsdCkodSk7dC5kZWZhdWx0PXN9KS5jYWxsKHQsbigxMzYpKGUpLGZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXN9KCkpfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiBuKGUpe3ZhciB0LG49ZS5TeW1ib2w7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5v
YnNlcnZhYmxlP3Q9bi5vYnNlcnZhYmxlOih0PW4oIm9ic2VydmFibGUiKSxuLm9ic2VydmFibGU9
dCk6dD0iQEBvYnNlcnZhYmxlIix0fU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxl
Iix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9bn1dKSk7Ci0vLyMgc291cmNlTWFwcGluZ1VSTD1tYWlu
Ljk0NjI2OWZmLmpzLm1hcApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0
dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3BhY2thZ2UtbG9jay5qc29uIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3QtcmVkdXgvcGFja2FnZS1sb2NrLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzEyNTUzNjczYjgxZmFl
MDQ4YTY1N2FmYWU1NTYyNTZkZmEzNmZlNQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0LXJlZHV4L3BhY2thZ2UtbG9jay5qc29uCkBAIC0wLDAgKzEsOTYyNyBAQAoreworICAi
cmVxdWlyZXMiOiB0cnVlLAorICAibG9ja2ZpbGVWZXJzaW9uIjogMSwKKyAgImRlcGVuZGVuY2ll
cyI6IHsKKyAgICAiYXNhcCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMC42IiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hc2FwLy0vYXNhcC0yLjAuNi50
Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTVRTkhZUjErYVFsRElJdTlyK3ZMd3Z1R2JV
WT0iCisgICAgfSwKKyAgICAiYm9vbGJhc2UiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIs
CisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYm9vbGJhc2Uv
LS9ib29sYmFzZS0xLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWFOLzErK1lN
VWVzM2NsNnA0KzB4RGN3ZWQyND0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJj
aGVlcmlvIjogeworICAgICAgInZlcnNpb24iOiAiMC4yMi4wIiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jaGVlcmlvLy0vY2hlZXJpby0wLjIyLjAudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1xYnFvWUtQNXRaV211QnNhaG9jeEllMDZKcDQ9
IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiY3Nz
LXNlbGVjdCI6ICIxLjIuMCIsCisgICAgICAgICJkb20tc2VyaWFsaXplciI6ICIwLjEuMCIsCisg
ICAgICAgICJlbnRpdGllcyI6ICIxLjEuMSIsCisgICAgICAgICJodG1scGFyc2VyMiI6ICIzLjku
MiIsCisgICAgICAgICJsb2Rhc2guYXNzaWduaW4iOiAiNC4yLjAiLAorICAgICAgICAibG9kYXNo
LmJpbmQiOiAiNC4yLjEiLAorICAgICAgICAibG9kYXNoLmRlZmF1bHRzIjogIjQuMi4wIiwKKyAg
ICAgICAgImxvZGFzaC5maWx0ZXIiOiAiNC42LjAiLAorICAgICAgICAibG9kYXNoLmZsYXR0ZW4i
OiAiNC40LjAiLAorICAgICAgICAibG9kYXNoLmZvcmVhY2giOiAiNC41LjAiLAorICAgICAgICAi
bG9kYXNoLm1hcCI6ICI0LjYuMCIsCisgICAgICAgICJsb2Rhc2gubWVyZ2UiOiAiNC42LjAiLAor
ICAgICAgICAibG9kYXNoLnBpY2siOiAiNC40LjAiLAorICAgICAgICAibG9kYXNoLnJlZHVjZSI6
ICI0LjYuMCIsCisgICAgICAgICJsb2Rhc2gucmVqZWN0IjogIjQuNi4wIiwKKyAgICAgICAgImxv
ZGFzaC5zb21lIjogIjQuNi4wIgorICAgICAgfQorICAgIH0sCisgICAgImNsYXNzbmFtZXMiOiB7
CisgICAgICAidmVyc2lvbiI6ICIyLjIuNSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvY2xhc3NuYW1lcy8tL2NsYXNzbmFtZXMtMi4yLjUudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS0remdCMUZOR2RrbnZOZ1BIMWhvQ3ZSS2IzbTA9IgorICAg
IH0sCisgICAgImNvcmUtanMiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjIuNyIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY29yZS1qcy8tL2NvcmUtanMt
MS4yLjcudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1aU0tVd1VaUjJ5ajZrNzB0WC9L
WU9rOEl4alk9IgorICAgIH0sCisgICAgImNvcmUtdXRpbC1pcyI6IHsKKyAgICAgICJ2ZXJzaW9u
IjogIjEuMC4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9jb3JlLXV0aWwtaXMvLS9jb3JlLXV0aWwtaXMtMS4wLjIudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS10ZjFVSWdxaXZGcTFlcXR4UU1sQWRVVUR3YWM9IiwKKyAgICAgICJkZXYiOiB0
cnVlCisgICAgfSwKKyAgICAiY3JlYXRlLXJlYWN0LWNsYXNzIjogeworICAgICAgInZlcnNpb24i
OiAiMTUuNi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9jcmVhdGUtcmVhY3QtY2xhc3MvLS9jcmVhdGUtcmVhY3QtY2xhc3MtMTUuNi4wLnRneiIsCisg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtcTBTRWw4SmxadUhpbEJQb2d5QjlWOC9udnRRPSIsCisg
ICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJmYmpzIjogIjAuOC4xNCIsCisgICAgICAgICJs
b29zZS1lbnZpZnkiOiAiMS4zLjEiLAorICAgICAgICAib2JqZWN0LWFzc2lnbiI6ICI0LjEuMSIK
KyAgICAgIH0KKyAgICB9LAorICAgICJjc3Mtc2VsZWN0IjogeworICAgICAgInZlcnNpb24iOiAi
MS4yLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Nz
cy1zZWxlY3QvLS9jc3Mtc2VsZWN0LTEuMi4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtS3pvUkJUbkZOVjhjMk5NVVlqNkhDeElleUZnPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImJvb2xiYXNlIjogIjEuMC4wIiwKKyAgICAgICAg
ImNzcy13aGF0IjogIjIuMS4wIiwKKyAgICAgICAgImRvbXV0aWxzIjogIjEuNS4xIiwKKyAgICAg
ICAgIm50aC1jaGVjayI6ICIxLjAuMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJjc3Mtd2hhdCI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMS4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jc3Mtd2hhdC8tL2Nzcy13aGF0LTIuMS4wLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtbEdmUU1zT00rdSs1OHRlVkFTVXdZdmgvb2IwPSIsCisgICAg
ICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImRlZmluZS1wcm9wZXJ0aWVzIjogeworICAgICAg
InZlcnNpb24iOiAiMS4xLjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL2RlZmluZS1wcm9wZXJ0aWVzLy0vZGVmaW5lLXByb3BlcnRpZXMtMS4xLjIudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1nNmMvTCtwV21KajdjM0dUeVBoenl2YlVYSlE9
IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiZm9y
ZWFjaCI6ICIyLjAuNSIsCisgICAgICAgICJvYmplY3Qta2V5cyI6ICIxLjAuMTEiCisgICAgICB9
CisgICAgfSwKKyAgICAiZG9tLXNlcmlhbGl6ZXIiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjEu
MCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZG9tLXNl
cmlhbGl6ZXIvLS9kb20tc2VyaWFsaXplci0wLjEuMC50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLUJ6eHBkVWJPQjRET0k3NUtLT0tUNUF2RERJST0iLAorICAgICAgImRldiI6IHRydWUs
CisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJkb21lbGVtZW50dHlwZSI6ICIxLjEuMyIs
CisgICAgICAgICJlbnRpdGllcyI6ICIxLjEuMSIKKyAgICAgIH0sCisgICAgICAiZGVwZW5kZW5j
aWVzIjogeworICAgICAgICAiZG9tZWxlbWVudHR5cGUiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMS4xLjMiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9kb21lbGVtZW50dHlwZS8tL2RvbWVsZW1lbnR0eXBlLTEuMS4zLnRneiIsCisgICAgICAg
ICAgImludGVncml0eSI6ICJzaGExLXZTaDNQaVpDaUJyc1VWUkpKQ21jWE5naUdGcz0iLAorICAg
ICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJkb21l
bGVtZW50dHlwZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMy4wIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9kb21lbGVtZW50dHlwZS8tL2RvbWVsZW1l
bnR0eXBlLTEuMy4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtc1hydGd1aXJXZVV0
MmNHYkYxYmcvQmh5Qk1JPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImRvbWhh
bmRsZXIiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjQuMSIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZG9taGFuZGxlci8tL2RvbWhhbmRsZXItMi40LjEu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1pUzVIQUFxWnZsVzc4M2RQL3FCV0hZaDV3
bGs9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAi
ZG9tZWxlbWVudHR5cGUiOiAiMS4zLjAiCisgICAgICB9CisgICAgfSwKKyAgICAiZG9tdXRpbHMi
OiB7CisgICAgICAidmVyc2lvbiI6ICIxLjUuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZG9tdXRpbHMvLS9kb211dGlscy0xLjUuMS50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLTNOaElpaWIxWTlZUWVlU01uM3QrTWpjMmdzOD0iLAorICAg
ICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJkb20tc2VyaWFs
aXplciI6ICIwLjEuMCIsCisgICAgICAgICJkb21lbGVtZW50dHlwZSI6ICIxLjMuMCIKKyAgICAg
IH0KKyAgICB9LAorICAgICJlbmNvZGluZyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMS4xMiIs
CisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZW5jb2Rpbmcv
LS9lbmNvZGluZy0wLjEuMTIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1VNHRtOCs1
aXpScTFIc01qZ3AwZmxJREhTK3M9IiwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImlj
b252LWxpdGUiOiAiMC40LjE4IgorICAgICAgfQorICAgIH0sCisgICAgImVudGl0aWVzIjogewor
ICAgICAgInZlcnNpb24iOiAiMS4xLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2VudGl0aWVzLy0vZW50aXRpZXMtMS4xLjEudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1ibHd0Q2xZaHRkcmE3TytBdVE3ZnRjMTNjdkE9IiwKKyAgICAgICJk
ZXYiOiB0cnVlCisgICAgfSwKKyAgICAiZW56eW1lIjogeworICAgICAgInZlcnNpb24iOiAiMi45
LjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Vuenlt
ZS8tL2VuenltZS0yLjkuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUI5WE9hUkpC
SkErNEY3OHNTeGpXNVRBa0RmWT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICJjaGVlcmlvIjogIjAuMjIuMCIsCisgICAgICAgICJmdW5jdGlvbi5w
cm90b3R5cGUubmFtZSI6ICIxLjAuMyIsCisgICAgICAgICJpcy1zdWJzZXQiOiAiMC4xLjEiLAor
ICAgICAgICAibG9kYXNoIjogIjQuMTcuNCIsCisgICAgICAgICJvYmplY3QtaXMiOiAiMS4wLjEi
LAorICAgICAgICAib2JqZWN0LmFzc2lnbiI6ICI0LjAuNCIsCisgICAgICAgICJvYmplY3QuZW50
cmllcyI6ICIxLjAuNCIsCisgICAgICAgICJvYmplY3QudmFsdWVzIjogIjEuMC40IiwKKyAgICAg
ICAgInByb3AtdHlwZXMiOiAiMTUuNS4xMCIsCisgICAgICAgICJ1dWlkIjogIjMuMS4wIgorICAg
ICAgfQorICAgIH0sCisgICAgImVzLWFic3RyYWN0IjogeworICAgICAgInZlcnNpb24iOiAiMS44
LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VzLWFi
c3RyYWN0Ly0vZXMtYWJzdHJhY3QtMS44LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
NTEyLUNmOS9oNU1yWHRFeE0yMGdTUzU1WUZyR0tDeVByUkJqSVZCdFZ5eTh2bWxzRGZlME5QS01X
ajY1dFBMZ3p5ZlB1YXBXeGg1d2hwWEN0VzQrQVc1bVJnPT0iLAorICAgICAgImRldiI6IHRydWUs
CisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJlcy10by1wcmltaXRpdmUiOiAiMS4xLjEi
LAorICAgICAgICAiZnVuY3Rpb24tYmluZCI6ICIxLjEuMCIsCisgICAgICAgICJoYXMiOiAiMS4w
LjEiLAorICAgICAgICAiaXMtY2FsbGFibGUiOiAiMS4xLjMiLAorICAgICAgICAiaXMtcmVnZXgi
OiAiMS4wLjQiCisgICAgICB9CisgICAgfSwKKyAgICAiZXMtdG8tcHJpbWl0aXZlIjogeworICAg
ICAgInZlcnNpb24iOiAiMS4xLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2VzLXRvLXByaW1pdGl2ZS8tL2VzLXRvLXByaW1pdGl2ZS0xLjEuMS50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLVJUVlNTS2lKZVFOTFo1TGhtN2dmSzNsMTNRMD0i
LAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJpcy1j
YWxsYWJsZSI6ICIxLjEuMyIsCisgICAgICAgICJpcy1kYXRlLW9iamVjdCI6ICIxLjAuMSIsCisg
ICAgICAgICJpcy1zeW1ib2wiOiAiMS4wLjEiCisgICAgICB9CisgICAgfSwKKyAgICAiZmJqcyI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuOC4xNCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZmJqcy8tL2ZianMtMC44LjE0LnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtMGR2aXZpVk1OYWtlQ2ZNZm5OVUtRTEtnN1J3PSIsCisgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICJjb3JlLWpzIjogIjEuMi43IiwKKyAgICAgICAgImlzb21vcnBo
aWMtZmV0Y2giOiAiMi4yLjEiLAorICAgICAgICAibG9vc2UtZW52aWZ5IjogIjEuMy4xIiwKKyAg
ICAgICAgIm9iamVjdC1hc3NpZ24iOiAiNC4xLjEiLAorICAgICAgICAicHJvbWlzZSI6ICI3LjMu
MSIsCisgICAgICAgICJzZXRpbW1lZGlhdGUiOiAiMS4wLjUiLAorICAgICAgICAidWEtcGFyc2Vy
LWpzIjogIjAuNy4xNCIKKyAgICAgIH0KKyAgICB9LAorICAgICJmb3JlYWNoIjogeworICAgICAg
InZlcnNpb24iOiAiMi4wLjUiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL2ZvcmVhY2gvLS9mb3JlYWNoLTIuMC41LnRneiIsCisgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtQys0QVVCaXVzbURRbzY4NjVsamRBVGJzRzVrPSIsCisgICAgICAiZGV2IjogdHJ1
ZQorICAgIH0sCisgICAgImZzZXZlbnRzIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjE0IiwK
KyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9mc2V2ZW50cy8t
L2ZzZXZlbnRzLTEuMC4xNC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVZZNk13NFpE
Mk85QS9rVVZoSWJRMGxkWTd1UT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAib3B0aW9u
YWwiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAibmFuIjogIjIuNi4yIiwK
KyAgICAgICAgIm5vZGUtcHJlLWd5cCI6ICIwLjYuMjkiCisgICAgICB9LAorICAgICAgImRlcGVu
ZGVuY2llcyI6IHsKKyAgICAgICAgImFiYnJldiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIx
LjAuOSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImFuc2kt
cmVnZXgiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAi
YW5zaS1zdHlsZXMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4yLjEiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0
aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJhcHJvYmEiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMS4wLjQiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisg
ICAgICAgICJhcmUtd2UtdGhlcmUteWV0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4y
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisg
ICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICAgICAiZGVsZWdhdGVzIjogIjEuMC4wIiwKKyAgICAgICAgICAgICJyZWFkYWJsZS1zdHJl
YW0iOiAiMi4xLjQiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYXNuMSI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIwLjIuMyIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAg
ICAgICAgfSwKKyAgICAgICAgImFzc2VydC1wbHVzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjAuMi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiYXN5
bmMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS41LjIiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0
cnVlCisgICAgICAgIH0sCisgICAgICAgICJhd3Mtc2lnbjIiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMC42LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAg
ICJhd3M0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuNC4xIiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFs
IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiYmFsYW5jZWQtbWF0Y2giOiB7CisgICAgICAg
ICAgInZlcnNpb24iOiAiMC40LjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiYmwiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMS4xLjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICJy
ZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJyZWFkYWJsZS1zdHJlYW0iOiAiMi4wLjYiCisgICAg
ICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAgICAgInJlYWRh
YmxlLXN0cmVhbSI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjYiLAorICAgICAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7
CisgICAgICAgICAgICAgICAgImNvcmUtdXRpbC1pcyI6ICIxLjAuMiIsCisgICAgICAgICAgICAg
ICAgImluaGVyaXRzIjogIjIuMC4xIiwKKyAgICAgICAgICAgICAgICAiaXNhcnJheSI6ICIxLjAu
MCIsCisgICAgICAgICAgICAgICAgInByb2Nlc3MtbmV4dGljay1hcmdzIjogIjEuMC43IiwKKyAg
ICAgICAgICAgICAgICAic3RyaW5nX2RlY29kZXIiOiAiMC4xMC4zMSIsCisgICAgICAgICAgICAg
ICAgInV0aWwtZGVwcmVjYXRlIjogIjEuMC4yIgorICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYmxvY2stc3RyZWFtIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC45IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAgICAgImluaGVyaXRzIjogIjIuMC4xIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg
ICAgImJvb20iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4xMC4xIiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAgICAgImhvZWsiOiAiMi4xNi4zIgorICAgICAgICAgIH0KKyAgICAg
ICAgfSwKKyAgICAgICAgImJyYWNlLWV4cGFuc2lvbiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIxLjEuNSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJiYWxhbmNlZC1tYXRj
aCI6ICIwLjQuMiIsCisgICAgICAgICAgICAiY29uY2F0LW1hcCI6ICIwLjAuMSIKKyAgICAgICAg
ICB9CisgICAgICAgIH0sCisgICAgICAgICJidWZmZXItc2hpbXMiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiY2FzZWxlc3MiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMC4xMS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAor
ICAgICAgICAiY2hhbGsiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjMiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAi
b3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJh
bnNpLXN0eWxlcyI6ICIyLjIuMSIsCisgICAgICAgICAgICAiZXNjYXBlLXN0cmluZy1yZWdleHAi
OiAiMS4wLjUiLAorICAgICAgICAgICAgImhhcy1hbnNpIjogIjIuMC4wIiwKKyAgICAgICAgICAg
ICJzdHJpcC1hbnNpIjogIjMuMC4xIiwKKyAgICAgICAgICAgICJzdXBwb3J0cy1jb2xvciI6ICIy
LjAuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJjb2RlLXBvaW50LWF0Ijog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAgICAgIm51bWJlci1pcy1uYW4iOiAiMS4wLjAiCisgICAgICAgICAgfQorICAgICAgICB9
LAorICAgICAgICAiY29tYmluZWQtc3RyZWFtIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
MC41IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImRlbGF5ZWQtc3RyZWFtIjog
IjEuMC4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImNvbW1hbmRlciI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIyLjkuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisg
ICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImdyYWNlZnVsLXJlYWRsaW5rIjog
IjEuMC4xIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImNvbmNhdC1tYXAiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMC4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiY29uc29sZS1j
b250cm9sLXN0cmluZ3MiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjAiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAor
ICAgICAgICAiY29yZS11dGlsLWlzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAg
ICAgfSwKKyAgICAgICAgImNyeXB0aWxlcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAu
NSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAor
ICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAgICAgImJvb20iOiAiMi4xMC4xIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg
ICAgImRhc2hkYXNoIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMTQuMCIsCisgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJv
cHRpb25hbCI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImFz
c2VydC1wbHVzIjogIjEuMC4wIgorICAgICAgICAgIH0sCisgICAgICAgICAgImRlcGVuZGVuY2ll
cyI6IHsKKyAgICAgICAgICAgICJhc3NlcnQtcGx1cyI6IHsKKyAgICAgICAgICAgICAgInZlcnNp
b24iOiAiMS4wLjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAg
ICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZGVidWciOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMi4yLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJtcyI6ICIwLjcuMSIKKyAgICAgICAgICB9
CisgICAgICAgIH0sCisgICAgICAgICJkZWVwLWV4dGVuZCI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIwLjQuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAg
ImRlbGF5ZWQtc3RyZWFtIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwK
KyAgICAgICAgImRlbGVnYXRlcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
ICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImVjYy1qc2JuIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAg
ICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAianNibiI6ICIwLjEuMCIKKyAgICAg
ICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJlc2NhcGUtc3RyaW5nLXJlZ2V4cCI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjAuNSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAg
ICAgfSwKKyAgICAgICAgImV4dGVuZCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjAuMCIs
CisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImV4dHNwcmludGYi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZm9yZXZl
ci1hZ2VudCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjYuMSIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25h
bCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImZvcm0tZGF0YSI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjAuMC1yYzQiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJhc3luYyI6ICIxLjUuMiIsCisgICAgICAgICAg
ICAiY29tYmluZWQtc3RyZWFtIjogIjEuMC41IiwKKyAgICAgICAgICAgICJtaW1lLXR5cGVzIjog
IjIuMS4xMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcy5yZWFscGF0aCI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJmc3RyZWFt
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4xMCIsCisgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgICAgICJncmFjZWZ1bC1mcyI6ICI0LjEuNCIsCisgICAgICAgICAgICAiaW5oZXJp
dHMiOiAiMi4wLjEiLAorICAgICAgICAgICAgIm1rZGlycCI6ICIwLjUuMSIsCisgICAgICAgICAg
ICAicmltcmFmIjogIjIuNS4zIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZz
dHJlYW0taWdub3JlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC41IiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9w
dGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiZnN0
cmVhbSI6ICIxLjAuMTAiLAorICAgICAgICAgICAgImluaGVyaXRzIjogIjIuMC4xIiwKKyAgICAg
ICAgICAgICJtaW5pbWF0Y2giOiAiMy4wLjIiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAiZ2F1Z2UiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi42LjAiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0
aW9uYWwiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJhcHJv
YmEiOiAiMS4wLjQiLAorICAgICAgICAgICAgImNvbnNvbGUtY29udHJvbC1zdHJpbmdzIjogIjEu
MS4wIiwKKyAgICAgICAgICAgICJoYXMtY29sb3IiOiAiMC4xLjciLAorICAgICAgICAgICAgImhh
cy11bmljb2RlIjogIjIuMC4xIiwKKyAgICAgICAgICAgICJvYmplY3QtYXNzaWduIjogIjQuMS4w
IiwKKyAgICAgICAgICAgICJzaWduYWwtZXhpdCI6ICIzLjAuMCIsCisgICAgICAgICAgICAic3Ry
aW5nLXdpZHRoIjogIjEuMC4xIiwKKyAgICAgICAgICAgICJzdHJpcC1hbnNpIjogIjMuMC4xIiwK
KyAgICAgICAgICAgICJ3aWRlLWFsaWduIjogIjEuMS4wIgorICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgImdlbmVyYXRlLWZ1bmN0aW9uIjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjIuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZ2Vu
ZXJhdGUtb2JqZWN0LXByb3BlcnR5IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMi4wIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICAgICAiaXMtcHJvcGVydHkiOiAiMS4wLjIiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAiZ2V0cGFzcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuNiIsCisgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJv
cHRpb25hbCI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImFz
c2VydC1wbHVzIjogIjEuMC4wIgorICAgICAgICAgIH0sCisgICAgICAgICAgImRlcGVuZGVuY2ll
cyI6IHsKKyAgICAgICAgICAgICJhc3NlcnQtcGx1cyI6IHsKKyAgICAgICAgICAgICAgInZlcnNp
b24iOiAiMS4wLjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAg
ICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZ2xvYiI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICI3LjAuNSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAg
ICJmcy5yZWFscGF0aCI6ICIxLjAuMCIsCisgICAgICAgICAgICAiaW5mbGlnaHQiOiAiMS4wLjUi
LAorICAgICAgICAgICAgImluaGVyaXRzIjogIjIuMC4xIiwKKyAgICAgICAgICAgICJtaW5pbWF0
Y2giOiAiMy4wLjIiLAorICAgICAgICAgICAgIm9uY2UiOiAiMS4zLjMiLAorICAgICAgICAgICAg
InBhdGgtaXMtYWJzb2x1dGUiOiAiMS4wLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAiZ3JhY2VmdWwtZnMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNC4xLjQiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9
LAorICAgICAgICAiZ3JhY2VmdWwtcmVhZGxpbmsiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
MS4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJoYXIt
dmFsaWRhdG9yIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC42IiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlv
bmFsIjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiY2hhbGsi
OiAiMS4xLjMiLAorICAgICAgICAgICAgImNvbW1hbmRlciI6ICIyLjkuMCIsCisgICAgICAgICAg
ICAiaXMtbXktanNvbi12YWxpZCI6ICIyLjEzLjEiLAorICAgICAgICAgICAgInBpbmtpZS1wcm9t
aXNlIjogIjIuMC4xIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImhhcy1hbnNp
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1
ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYW5zaS1yZWdleCI6ICIy
LjAuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJoYXMtY29sb3IiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMC4xLjciLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAg
ICAgIH0sCisgICAgICAgICJoYXMtdW5pY29kZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIy
LjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImhhd2si
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4xLjMiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVl
LAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJib29tIjogIjIuMTAuMSIs
CisgICAgICAgICAgICAiY3J5cHRpbGVzIjogIjIuMC41IiwKKyAgICAgICAgICAgICJob2VrIjog
IjIuMTYuMyIsCisgICAgICAgICAgICAic250cCI6ICIxLjAuOSIKKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJob2VrIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMTYuMyIs
CisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAg
ICAgIH0sCisgICAgICAgICJodHRwLXNpZ25hdHVyZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIxLjEuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAgICAgImFzc2VydC1wbHVzIjogIjAuMi4wIiwKKyAgICAgICAgICAgICJqc3By
aW0iOiAiMS4zLjAiLAorICAgICAgICAgICAgInNzaHBrIjogIjEuOC4zIgorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgImluZmxpZ2h0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjEuMC41IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgIm9uY2UiOiAiMS4zLjMi
LAorICAgICAgICAgICAgIndyYXBweSI6ICIxLjAuMiIKKyAgICAgICAgICB9CisgICAgICAgIH0s
CisgICAgICAgICJpbmhlcml0cyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMSIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAg
IH0sCisgICAgICAgICJpbmkiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4zLjQiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJpcy1mdWxsd2lkdGgtY29k
ZS1wb2ludCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgICAgICJudW1iZXItaXMtbmFuIjogIjEuMC4wIgorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgImlzLW15LWpzb24tdmFsaWQiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMi4xMy4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICAgICAiZ2VuZXJhdGUtZnVuY3Rpb24iOiAiMi4wLjAiLAorICAg
ICAgICAgICAgImdlbmVyYXRlLW9iamVjdC1wcm9wZXJ0eSI6ICIxLjIuMCIsCisgICAgICAgICAg
ICAianNvbnBvaW50ZXIiOiAiMi4wLjAiLAorICAgICAgICAgICAgInh0ZW5kIjogIjQuMC4xIgor
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlzLXByb3BlcnR5IjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9
LAorICAgICAgICAiaXMtdHlwZWRhcnJheSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAu
MCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAor
ICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImlzYXJyYXki
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiaXNzdHJl
YW0iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjIiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0
cnVlCisgICAgICAgIH0sCisgICAgICAgICJqb2RpZDI1NTE5IjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjEuMC4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICAgICAianNibiI6ICIwLjEuMCIKKyAgICAgICAgICB9CisgICAgICAg
IH0sCisgICAgICAgICJqc2JuIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS4wIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAianNvbi1zY2hlbWEiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMC4yLjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisg
ICAgICAgIH0sCisgICAgICAgICJqc29uLXN0cmluZ2lmeS1zYWZlIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjUuMC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAg
ICAgICAianNvbnBvaW50ZXIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJqc3ByaW0iOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMS4zLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJleHRzcHJpbnRmIjogIjEuMC4yIiwKKyAg
ICAgICAgICAgICJqc29uLXNjaGVtYSI6ICIwLjIuMiIsCisgICAgICAgICAgICAidmVycm9yIjog
IjEuMy42IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm1pbWUtZGIiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMS4yMy4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgIm1pbWUtdHlwZXMi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4xLjExIiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAgICAgIm1pbWUtZGIiOiAiMS4yMy4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgIm1pbmltYXRjaCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjAuMiIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJicmFjZS1leHBhbnNpb24iOiAiMS4xLjUi
CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibWluaW1pc3QiOiB7CisgICAgICAg
ICAgInZlcnNpb24iOiAiMC4wLjgiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAibWtkaXJwIjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjAuNS4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAg
Im1pbmltaXN0IjogIjAuMC44IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm1z
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNy4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1
ZQorICAgICAgICB9LAorICAgICAgICAibm9kZS1wcmUtZ3lwIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjAuNi4yOSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAgICAgIm1rZGlycCI6ICIwLjUuMSIsCisgICAgICAgICAgICAibm9w
dCI6ICIzLjAuNiIsCisgICAgICAgICAgICAibnBtbG9nIjogIjMuMS4yIiwKKyAgICAgICAgICAg
ICJyYyI6ICIxLjEuNiIsCisgICAgICAgICAgICAicmVxdWVzdCI6ICIyLjczLjAiLAorICAgICAg
ICAgICAgInJpbXJhZiI6ICIyLjUuMyIsCisgICAgICAgICAgICAic2VtdmVyIjogIjUuMi4wIiwK
KyAgICAgICAgICAgICJ0YXIiOiAiMi4yLjEiLAorICAgICAgICAgICAgInRhci1wYWNrIjogIjMu
MS40IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm5vZGUtdXVpZCI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjQuNyIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAg
ICAgfSwKKyAgICAgICAgIm5vcHQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4wLjYiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
ICAgICJhYmJyZXYiOiAiMS4wLjkiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAi
bnBtbG9nIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMS4yIiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFs
IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYXJlLXdlLXRo
ZXJlLXlldCI6ICIxLjEuMiIsCisgICAgICAgICAgICAiY29uc29sZS1jb250cm9sLXN0cmluZ3Mi
OiAiMS4xLjAiLAorICAgICAgICAgICAgImdhdWdlIjogIjIuNi4wIiwKKyAgICAgICAgICAgICJz
ZXQtYmxvY2tpbmciOiAiMi4wLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAi
bnVtYmVyLWlzLW5hbiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisg
ICAgICAgICJvYXV0aC1zaWduIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuOC4yIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAib2JqZWN0LWFzc2lnbiI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI0LjEuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUK
KyAgICAgICAgfSwKKyAgICAgICAgIm9uY2UiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4z
LjMiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAid3JhcHB5IjogIjEuMC4yIgor
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInBhdGgtaXMtYWJzb2x1dGUiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAicGlua2llIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC40IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAg
ICAgICB9LAorICAgICAgICAicGlua2llLXByb21pc2UiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMi4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgICAgICJwaW5raWUiOiAiMi4wLjQiCisgICAgICAgICAgfQorICAgICAgICB9
LAorICAgICAgICAicHJvY2Vzcy1uZXh0aWNrLWFyZ3MiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMS4wLjciLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZQorICAgICAgICB9LAorICAgICAgICAicXMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
Ni4yLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJyYyI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuNiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUs
CisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImRlZXAtZXh0ZW5kIjogIjAu
NC4xIiwKKyAgICAgICAgICAgICJpbmkiOiAiMS4zLjQiLAorICAgICAgICAgICAgIm1pbmltaXN0
IjogIjEuMi4wIiwKKyAgICAgICAgICAgICJzdHJpcC1qc29uLWNvbW1lbnRzIjogIjEuMC40Igor
ICAgICAgICAgIH0sCisgICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgICAgICJt
aW5pbWlzdCI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4yLjAiLAorICAgICAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
ICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAg
ICAgICB9LAorICAgICAgICAicmVhZGFibGUtc3RyZWFtIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjIuMS40IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJ1ZmZlci1zaGlt
cyI6ICIxLjAuMCIsCisgICAgICAgICAgICAiY29yZS11dGlsLWlzIjogIjEuMC4yIiwKKyAgICAg
ICAgICAgICJpbmhlcml0cyI6ICIyLjAuMSIsCisgICAgICAgICAgICAiaXNhcnJheSI6ICIxLjAu
MCIsCisgICAgICAgICAgICAicHJvY2Vzcy1uZXh0aWNrLWFyZ3MiOiAiMS4wLjciLAorICAgICAg
ICAgICAgInN0cmluZ19kZWNvZGVyIjogIjAuMTAuMzEiLAorICAgICAgICAgICAgInV0aWwtZGVw
cmVjYXRlIjogIjEuMC4yIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInJlcXVl
c3QiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi43My4wIiwKKyAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjog
dHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYXdzLXNpZ24yIjog
IjAuNi4wIiwKKyAgICAgICAgICAgICJhd3M0IjogIjEuNC4xIiwKKyAgICAgICAgICAgICJibCI6
ICIxLjEuMiIsCisgICAgICAgICAgICAiY2FzZWxlc3MiOiAiMC4xMS4wIiwKKyAgICAgICAgICAg
ICJjb21iaW5lZC1zdHJlYW0iOiAiMS4wLjUiLAorICAgICAgICAgICAgImV4dGVuZCI6ICIzLjAu
MCIsCisgICAgICAgICAgICAiZm9yZXZlci1hZ2VudCI6ICIwLjYuMSIsCisgICAgICAgICAgICAi
Zm9ybS1kYXRhIjogIjEuMC4wLXJjNCIsCisgICAgICAgICAgICAiaGFyLXZhbGlkYXRvciI6ICIy
LjAuNiIsCisgICAgICAgICAgICAiaGF3ayI6ICIzLjEuMyIsCisgICAgICAgICAgICAiaHR0cC1z
aWduYXR1cmUiOiAiMS4xLjEiLAorICAgICAgICAgICAgImlzLXR5cGVkYXJyYXkiOiAiMS4wLjAi
LAorICAgICAgICAgICAgImlzc3RyZWFtIjogIjAuMS4yIiwKKyAgICAgICAgICAgICJqc29uLXN0
cmluZ2lmeS1zYWZlIjogIjUuMC4xIiwKKyAgICAgICAgICAgICJtaW1lLXR5cGVzIjogIjIuMS4x
MSIsCisgICAgICAgICAgICAibm9kZS11dWlkIjogIjEuNC43IiwKKyAgICAgICAgICAgICJvYXV0
aC1zaWduIjogIjAuOC4yIiwKKyAgICAgICAgICAgICJxcyI6ICI2LjIuMCIsCisgICAgICAgICAg
ICAic3RyaW5nc3RyZWFtIjogIjAuMC41IiwKKyAgICAgICAgICAgICJ0b3VnaC1jb29raWUiOiAi
Mi4yLjIiLAorICAgICAgICAgICAgInR1bm5lbC1hZ2VudCI6ICIwLjQuMyIKKyAgICAgICAgICB9
CisgICAgICAgIH0sCisgICAgICAgICJyaW1yYWYiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
Mi41LjMiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiZ2xvYiI6ICI3LjAuNSIK
KyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJzZW12ZXIiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiNS4yLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisg
ICAgICAgICJzZXQtYmxvY2tpbmciOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJzaWduYWwtZXhpdCI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUK
KyAgICAgICAgfSwKKyAgICAgICAgInNudHAiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4w
LjkiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgICAgICJob2VrIjogIjIuMTYuMyIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAg
ICAgICJzc2hwayI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjguMyIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRp
b25hbCI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImFzbjEi
OiAiMC4yLjMiLAorICAgICAgICAgICAgImFzc2VydC1wbHVzIjogIjEuMC4wIiwKKyAgICAgICAg
ICAgICJkYXNoZGFzaCI6ICIxLjE0LjAiLAorICAgICAgICAgICAgImVjYy1qc2JuIjogIjAuMS4x
IiwKKyAgICAgICAgICAgICJnZXRwYXNzIjogIjAuMS42IiwKKyAgICAgICAgICAgICJqb2RpZDI1
NTE5IjogIjEuMC4yIiwKKyAgICAgICAgICAgICJqc2JuIjogIjAuMS4wIiwKKyAgICAgICAgICAg
ICJ0d2VldG5hY2wiOiAiMC4xMy4zIgorICAgICAgICAgIH0sCisgICAgICAgICAgImRlcGVuZGVu
Y2llcyI6IHsKKyAgICAgICAgICAgICJhc3NlcnQtcGx1cyI6IHsKKyAgICAgICAgICAgICAgInZl
cnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAg
ICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAic3RyaW5nX2RlY29k
ZXIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4xMC4zMSIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJz
dHJpbmctd2lkdGgiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICAgICAiY29kZS1wb2ludC1hdCI6ICIxLjAuMCIsCisgICAgICAg
ICAgICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiAiMS4wLjAiLAorICAgICAgICAgICAgInN0
cmlwLWFuc2kiOiAiMy4wLjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAic3Ry
aW5nc3RyZWFtIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC41IiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlv
bmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAic3RyaXAtYW5zaSI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIzLjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJh
bnNpLXJlZ2V4IjogIjIuMC4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInN0
cmlwLWpzb24tY29tbWVudHMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjQiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJzdXBwb3J0cy1jb2xvciI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUK
KyAgICAgICAgfSwKKyAgICAgICAgInRhciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjIu
MSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAor
ICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJibG9jay1zdHJlYW0iOiAiMC4w
LjkiLAorICAgICAgICAgICAgImZzdHJlYW0iOiAiMS4wLjEwIiwKKyAgICAgICAgICAgICJpbmhl
cml0cyI6ICIyLjAuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJ0YXItcGFj
ayI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjEuNCIsCisgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRy
dWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImRlYnVnIjogIjIuMi4w
IiwKKyAgICAgICAgICAgICJmc3RyZWFtIjogIjEuMC4xMCIsCisgICAgICAgICAgICAiZnN0cmVh
bS1pZ25vcmUiOiAiMS4wLjUiLAorICAgICAgICAgICAgIm9uY2UiOiAiMS4zLjMiLAorICAgICAg
ICAgICAgInJlYWRhYmxlLXN0cmVhbSI6ICIyLjEuNCIsCisgICAgICAgICAgICAicmltcmFmIjog
IjIuNS4zIiwKKyAgICAgICAgICAgICJ0YXIiOiAiMi4yLjEiLAorICAgICAgICAgICAgInVpZC1u
dW1iZXIiOiAiMC4wLjYiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAidG91Z2gt
Y29va2llIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMi4yIiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFs
IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAidHVubmVsLWFnZW50IjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjAuNC4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAor
ICAgICAgICAidHdlZXRuYWNsIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMTMuMyIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
ICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInVpZC1udW1iZXIiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMC4wLjYiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisg
ICAgICAgIH0sCisgICAgICAgICJ1dGlsLWRlcHJlY2F0ZSI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIxLjAuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJ2ZXJyb3IiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMS4zLjYiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgICAgICJleHRzcHJpbnRmIjogIjEuMC4yIgorICAgICAgICAgIH0KKyAg
ICAgICAgfSwKKyAgICAgICAgIndpZGUtYWxpZ24iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
MS4xLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgICAgICJzdHJpbmctd2lkdGgiOiAiMS4wLjEiCisgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgICAid3JhcHB5IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAg
ICAgfSwKKyAgICAgICAgInh0ZW5kIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjQuMC4xIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9CisgICAgICB9CisgICAgfSwKKyAgICAi
ZnVuY3Rpb24tYmluZCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMS4wIiwKKyAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9mdW5jdGlvbi1iaW5kLy0vZnVuY3Rp
b24tYmluZC0xLjEuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUZoZG5GTWdCZVk1
T2p5ejM5MUtVWjd0S1YzRT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJmdW5j
dGlvbi5wcm90b3R5cGUubmFtZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4zIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9mdW5jdGlvbi5wcm90b3R5
cGUubmFtZS8tL2Z1bmN0aW9uLnByb3RvdHlwZS5uYW1lLTEuMC4zLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTUxMi01RWJseFpVZGlvWGkySmlNWjlGVWJ3WWo0MGVROU1GSHl6RkxCU1Bk
bFJsM1NPOGw3U0xXdUFuUS9hdC8xV2k0aGpKd01FL0M1V3BGMlpmQWM4bkdOdz09IiwKKyAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiZGVmaW5lLXByb3Bl
cnRpZXMiOiAiMS4xLjIiLAorICAgICAgICAiZnVuY3Rpb24tYmluZCI6ICIxLjEuMCIsCisgICAg
ICAgICJpcy1jYWxsYWJsZSI6ICIxLjEuMyIKKyAgICAgIH0KKyAgICB9LAorICAgICJoYXMiOiB7
CisgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvaGFzLy0vaGFzLTEuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtaEdGelAxT0xDRGZKTmg0NXFhdWVsd1RjTHlnPSIsCisgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImZ1bmN0aW9uLWJpbmQiOiAiMS4xLjAi
CisgICAgICB9CisgICAgfSwKKyAgICAiaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MiOiB7CisgICAg
ICAidmVyc2lvbiI6ICIyLjIuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MvLS9ob2lzdC1ub24tcmVhY3Qtc3Rh
dGljcy0yLjIuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXdPeWxwOVdpakZyYU1R
ZnJkanNCMm12Nmdmcz0iCisgICAgfSwKKyAgICAiaHRtbHBhcnNlcjIiOiB7CisgICAgICAidmVy
c2lvbiI6ICIzLjkuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvaHRtbHBhcnNlcjIvLS9odG1scGFyc2VyMi0zLjkuMi50Z3oiLAorICAgICAgImludGVn
cml0eSI6ICJzaGExLUc5K0hyTW9QUDU1VCtrL002dzlMVExzQXN6Zz0iLAorICAgICAgImRldiI6
IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJkb21lbGVtZW50dHlwZSI6ICIx
LjMuMCIsCisgICAgICAgICJkb21oYW5kbGVyIjogIjIuNC4xIiwKKyAgICAgICAgImRvbXV0aWxz
IjogIjEuNS4xIiwKKyAgICAgICAgImVudGl0aWVzIjogIjEuMS4xIiwKKyAgICAgICAgImluaGVy
aXRzIjogIjIuMC4zIiwKKyAgICAgICAgInJlYWRhYmxlLXN0cmVhbSI6ICIyLjMuMyIKKyAgICAg
IH0KKyAgICB9LAorICAgICJpY29udi1saXRlIjogeworICAgICAgInZlcnNpb24iOiAiMC40LjE4
IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pY29udi1s
aXRlLy0vaWNvbnYtbGl0ZS0wLjQuMTgudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEy
LXNyMVpRcGgzVXdIVFIwWGZ0U2JLODVPdkJieGUvYWJMR3pFblBFTkNRd21IZjdzY2s4T3l1NG9i
M0xnQnhXV3hSb00rUXN6ZVV5bDdqYnFhcHUyVHFBPT0iCisgICAgfSwKKyAgICAiaW5oZXJpdHMi
OiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAuMyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaW5oZXJpdHMvLS9pbmhlcml0cy0yLjAuMy50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLVl6d3NnK1BhUXFVQzlTUm1BaVNBOUNDQ1lkND0iLAorICAg
ICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJpbnZhcmlhbnQiOiB7CisgICAgICAidmVyc2lv
biI6ICIyLjIuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvaW52YXJpYW50Ly0vaW52YXJpYW50LTIuMi4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtbmg5V3JBck50cjh3TXdiek9MNDdJRXJtQTJBPSIsCisgICAgICAicmVxdWlyZXMiOiB7
CisgICAgICAgICJsb29zZS1lbnZpZnkiOiAiMS4zLjEiCisgICAgICB9CisgICAgfSwKKyAgICAi
aXMtY2FsbGFibGUiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEuMyIsCisgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXMtY2FsbGFibGUvLS9pcy1jYWxsYWJs
ZS0xLjEuMy50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWh1dDFPU2dGM2NNNjl4eVNv
TzdmZE81MkJMST0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJpcy1kYXRlLW9i
amVjdCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1kYXRlLW9iamVjdC8tL2lzLWRhdGUtb2JqZWN0
LTEuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtbXFJT3RxN3J2L2QvdlRQblRL
QWJNMWdkT2hZPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImlzLXJlZ2V4Ijog
eworICAgICAgInZlcnNpb24iOiAiMS4wLjQiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL2lzLXJlZ2V4Ly0vaXMtcmVnZXgtMS4wLjQudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1WUmRJbTFSd2tiQ1REZ2xXVk03U1h1bCtsSkU9IiwKKyAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiaGFzIjogIjEuMC4x
IgorICAgICAgfQorICAgIH0sCisgICAgImlzLXN0cmVhbSI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjEuMS4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9p
cy1zdHJlYW0vLS9pcy1zdHJlYW0tMS4xLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1FdFNqM1U1bzRMZWM2NDI4aEJjNjZBMlJ5a1E9IgorICAgIH0sCisgICAgImlzLXN1YnNldCI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMS4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1zdWJzZXQvLS9pcy1zdWJzZXQtMC4xLjEudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS1pbGtSZlpNdDRkNEE4a1g4M1RuT1EvSHBPYVk9IiwKKyAg
ICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiaXMtc3ltYm9sIjogeworICAgICAgInZlcnNp
b24iOiAiMS4wLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL2lzLXN5bWJvbC8tL2lzLXN5bWJvbC0xLjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLVBNV2ZBQUpSbExhckxqamJybWFKSld0bUJYST0iLAorICAgICAgImRldiI6IHRydWUK
KyAgICB9LAorICAgICJpc2FycmF5IjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzYXJyYXkvLS9pc2Fy
cmF5LTEuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtdTVOZFNGZ3N1aGFNQm9O
SlY2VktQZ2NTVHhFPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImlzb21vcnBo
aWMtZmV0Y2giOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjIuMSIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXNvbW9ycGhpYy1mZXRjaC8tL2lzb21vcnBo
aWMtZmV0Y2gtMi4yLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1ZUnJoclBGUFhv
SDNLVkIwY29HZjZYTTFXS2s9IiwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgIm5vZGUt
ZmV0Y2giOiAiMS43LjIiLAorICAgICAgICAid2hhdHdnLWZldGNoIjogIjIuMC4zIgorICAgICAg
fQorICAgIH0sCisgICAgImpzLXRva2VucyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjMuMC4yIiwK
KyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9qcy10b2tlbnMv
LS9qcy10b2tlbnMtMy4wLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1tR2JmT1ZF
Q0V3NDQ5L21Xdk90bFJESUp3bHM9IgorICAgIH0sCisgICAgImxvZGFzaCI6IHsKKyAgICAgICJ2
ZXJzaW9uIjogIjQuMTcuNCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvbG9kYXNoLy0vbG9kYXNoLTQuMTcuNC50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLWVDQTZUUnd5aXVIWWJjcGtZT05wdFg5QVZhND0iCisgICAgfSwKKyAgICAibG9kYXNo
LWVzIjogeworICAgICAgInZlcnNpb24iOiAiNC4xNy40IiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9sb2Rhc2gtZXMvLS9sb2Rhc2gtZXMtNC4xNy40LnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtM01IWFZTNFZDZ1pBQnp1cHl6SFhEd01wVU9j
PSIKKyAgICB9LAorICAgICJsb2Rhc2guYXNzaWduaW4iOiB7CisgICAgICAidmVyc2lvbiI6ICI0
LjIuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbG9k
YXNoLmFzc2lnbmluLy0vbG9kYXNoLmFzc2lnbmluLTQuMi4wLnRneiIsCisgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtdW8zMSs0UWVzS1BvQkVJeXNPSmpxTnhxS0tJPSIsCisgICAgICAiZGV2Ijog
dHJ1ZQorICAgIH0sCisgICAgImxvZGFzaC5iaW5kIjogeworICAgICAgInZlcnNpb24iOiAiNC4y
LjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFz
aC5iaW5kLy0vbG9kYXNoLmJpbmQtNC4yLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1ldU1CZnBPV0lxd3h0OWZYM0xHelRiRnBEVFU9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAg
fSwKKyAgICAibG9kYXNoLmRlZmF1bHRzIjogeworICAgICAgInZlcnNpb24iOiAiNC4yLjAiLAor
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC5kZWZh
dWx0cy8tL2xvZGFzaC5kZWZhdWx0cy00LjIuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJz
aGExLTBKRjRjVy8rcE4zcDVmdDdOL2J3Z0NKMFdBdz0iLAorICAgICAgImRldiI6IHRydWUKKyAg
ICB9LAorICAgICJsb2Rhc2guZmlsdGVyIjogeworICAgICAgInZlcnNpb24iOiAiNC42LjAiLAor
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC5maWx0
ZXIvLS9sb2Rhc2guZmlsdGVyLTQuNi4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
Wm9zZFNZRmdPdUhNV20rbllCUStTQXRNU3M0PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0s
CisgICAgImxvZGFzaC5mbGF0dGVuIjogeworICAgICAgInZlcnNpb24iOiAiNC40LjAiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC5mbGF0dGVu
Ly0vbG9kYXNoLmZsYXR0ZW4tNC40LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS04
eHdpSWxxV010SzcrT1N0Mis4a0NxZGxwaDg9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwK
KyAgICAibG9kYXNoLmZvcmVhY2giOiB7CisgICAgICAidmVyc2lvbiI6ICI0LjUuMCIsCisgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbG9kYXNoLmZvcmVhY2gv
LS9sb2Rhc2guZm9yZWFjaC00LjUuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUdt
bzE2czVBRW9ESDhHM2Q3RFVXV3JKK1BsTT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAor
ICAgICJsb2Rhc2gubWFwIjogeworICAgICAgInZlcnNpb24iOiAiNC42LjAiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC5tYXAvLS9sb2Rhc2gu
bWFwLTQuNi4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtZHg3SGc1NDBjOW5FemVL
TEdUbE1OV0wwOXRNPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImxvZGFzaC5t
ZXJnZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjQuNi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9sb2Rhc2gubWVyZ2UvLS9sb2Rhc2gubWVyZ2UtNC42
LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1hWWhMb1VTc00vNXBsemVtQ0czdit0
MFBpY1U9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAibG9kYXNoLnBpY2siOiB7
CisgICAgICAidmVyc2lvbiI6ICI0LjQuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvbG9kYXNoLnBpY2svLS9sb2Rhc2gucGljay00LjQuMC50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLVV2QldFUC81M3RRaVlSUkI3Ui9CSTZBd0FiTT0iLAor
ICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJsb2Rhc2gucmVkdWNlIjogeworICAgICAg
InZlcnNpb24iOiAiNC42LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL2xvZGFzaC5yZWR1Y2UvLS9sb2Rhc2gucmVkdWNlLTQuNi4wLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtOGF0cmc1S1pyVWozaEt1L1IyV1c4RHVSVFRzPSIsCisgICAg
ICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImxvZGFzaC5yZWplY3QiOiB7CisgICAgICAidmVy
c2lvbiI6ICI0LjYuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvbG9kYXNoLnJlamVjdC8tL2xvZGFzaC5yZWplY3QtNC42LjAudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1nTlpKTGNGSENHUzc5WU5UTzJVZlFxbjFKQlU9IiwKKyAgICAgICJk
ZXYiOiB0cnVlCisgICAgfSwKKyAgICAibG9kYXNoLnNvbWUiOiB7CisgICAgICAidmVyc2lvbiI6
ICI0LjYuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
bG9kYXNoLnNvbWUvLS9sb2Rhc2guc29tZS00LjYuMC50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLUc3bnpGTzlyaTYzdEU3VkpGcHNxbEY2MmprMD0iLAorICAgICAgImRldiI6IHRydWUK
KyAgICB9LAorICAgICJsb29zZS1lbnZpZnkiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjMuMSIs
CisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbG9vc2UtZW52
aWZ5Ly0vbG9vc2UtZW52aWZ5LTEuMy4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
MGFpdE0vcWM0T2NUMWwvZENzaTNTTlI0eUVnPSIsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICJqcy10b2tlbnMiOiAiMy4wLjIiCisgICAgICB9CisgICAgfSwKKyAgICAibmFuIjogewor
ICAgICAgInZlcnNpb24iOiAiMi42LjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL25hbi8tL25hbi0yLjYuMi50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLTVQODA1c2xmMzdXdXpBamVaWmIwTmdXbjIwVT0iLAorICAgICAgImRldiI6IHRydWUs
CisgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwKKyAgICAibm9kZS1mZXRjaCI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjEuNy4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9ub2RlLWZldGNoLy0vbm9kZS1mZXRjaC0xLjcuMi50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGE1MTIteFpaVXEyeURoS01Jbi9VZ0c1cS8vSVpTTkxKSXdXMlF4UzE0
Q05INXNwdWlYa0lUTTJwVWl0amRxNTh5TFNhVTdtNE0wd0JOYU0yR2gvZ2dZNFlKaWc9PSIsCisg
ICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJlbmNvZGluZyI6ICIwLjEuMTIiLAorICAgICAg
ICAiaXMtc3RyZWFtIjogIjEuMS4wIgorICAgICAgfQorICAgIH0sCisgICAgIm50aC1jaGVjayI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9udGgtY2hlY2svLS9udGgtY2hlY2stMS4wLjEudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS1tU21zMzJLUHdzUVFtTjZyZ3F4WURQRkpxdVE9IiwKKyAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYm9vbGJhc2Ui
OiAiMS4wLjAiCisgICAgICB9CisgICAgfSwKKyAgICAib2JqZWN0LWFzc2lnbiI6IHsKKyAgICAg
ICJ2ZXJzaW9uIjogIjQuMS4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9vYmplY3QtYXNzaWduLy0vb2JqZWN0LWFzc2lnbi00LjEuMS50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLUlRbXR4NVpZaDgvQVhMdlVRc3JJdjdzMkNHTT0iCisgICAg
fSwKKyAgICAib2JqZWN0LWlzIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL29iamVjdC1pcy8tL29iamVj
dC1pcy0xLjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUNxWU95WmlhQ3o3WGxj
OU5CdllzOGExbE9iWT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJvYmplY3Qt
a2V5cyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4xMSIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvb2JqZWN0LWtleXMvLS9vYmplY3Qta2V5cy0xLjAu
MTEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS14VVlCZDRyVllQRVVMT0RnRzh5b3RX
MFRRbTA9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAib2JqZWN0LmFzc2lnbiI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjQuMC40IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9vYmplY3QuYXNzaWduLy0vb2JqZWN0LmFzc2lnbi00LjAuNC50
Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXNjbk1CRTd4dWY1allHL0JRYXU3TXVGSE1N
dz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJk
ZWZpbmUtcHJvcGVydGllcyI6ICIxLjEuMiIsCisgICAgICAgICJmdW5jdGlvbi1iaW5kIjogIjEu
MS4wIiwKKyAgICAgICAgIm9iamVjdC1rZXlzIjogIjEuMC4xMSIKKyAgICAgIH0KKyAgICB9LAor
ICAgICJvYmplY3QuZW50cmllcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC40IiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9vYmplY3QuZW50cmllcy8t
L29iamVjdC5lbnRyaWVzLTEuMC40LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtRy9t
azNTS0k5Yk0vT3BrOUpYWmg4RjBXR2w4PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJy
ZXF1aXJlcyI6IHsKKyAgICAgICAgImRlZmluZS1wcm9wZXJ0aWVzIjogIjEuMS4yIiwKKyAgICAg
ICAgImVzLWFic3RyYWN0IjogIjEuOC4wIiwKKyAgICAgICAgImZ1bmN0aW9uLWJpbmQiOiAiMS4x
LjAiLAorICAgICAgICAiaGFzIjogIjEuMC4xIgorICAgICAgfQorICAgIH0sCisgICAgIm9iamVj
dC52YWx1ZXMiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuNCIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvb2JqZWN0LnZhbHVlcy8tL29iamVjdC52YWx1
ZXMtMS4wLjQudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS01U1RhQ2JUMmIvQmQ5RmRV
YnNjcXlaOFRCcG89IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAiZGVmaW5lLXByb3BlcnRpZXMiOiAiMS4xLjIiLAorICAgICAgICAiZXMtYWJzdHJh
Y3QiOiAiMS44LjAiLAorICAgICAgICAiZnVuY3Rpb24tYmluZCI6ICIxLjEuMCIsCisgICAgICAg
ICJoYXMiOiAiMS4wLjEiCisgICAgICB9CisgICAgfSwKKyAgICAicHJvY2Vzcy1uZXh0aWNrLWFy
Z3MiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuNyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcHJvY2Vzcy1uZXh0aWNrLWFyZ3MvLS9wcm9jZXNzLW5l
eHRpY2stYXJncy0xLjAuNy50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUZRNGd0MVpa
Q3RQNUVKUHlXazhxMkwvekM2TT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJw
cm9taXNlIjogeworICAgICAgInZlcnNpb24iOiAiNy4zLjEiLAorICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Byb21pc2UvLS9wcm9taXNlLTcuMy4xLnRneiIs
CisgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1ub2xRWFovNEwrYlAvVUdsa2ZhSXVqWDlCS3hH
d21ROU9UNG1PdDV5dnk4aUsxaDN3cVRFSkNpanpHQU5UQ0NsOW5Xalk0MWp1eUFuMkszUTFoTExU
Zz09IiwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImFzYXAiOiAiMi4wLjYiCisgICAg
ICB9CisgICAgfSwKKyAgICAicHJvcC10eXBlcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjE1LjUu
MTAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Byb3At
dHlwZXMvLS9wcm9wLXR5cGVzLTE1LjUuMTAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1KNWZmd3hKaGd1T3BYajM3c3VpVDNkZEZZVlE9IiwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgImZianMiOiAiMC44LjE0IiwKKyAgICAgICAgImxvb3NlLWVudmlmeSI6ICIxLjMuMSIK
KyAgICAgIH0KKyAgICB9LAorICAgICJyZWFjdCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjE1LjYu
MSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVhY3Qv
LS9yZWFjdC0xNS42LjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS11cWhEVHNaNEM5
NlpmTnc0QzNuTk03bGprOTg9IiwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImNyZWF0
ZS1yZWFjdC1jbGFzcyI6ICIxNS42LjAiLAorICAgICAgICAiZmJqcyI6ICIwLjguMTQiLAorICAg
ICAgICAibG9vc2UtZW52aWZ5IjogIjEuMy4xIiwKKyAgICAgICAgIm9iamVjdC1hc3NpZ24iOiAi
NC4xLjEiLAorICAgICAgICAicHJvcC10eXBlcyI6ICIxNS41LjEwIgorICAgICAgfQorICAgIH0s
CisgICAgInJlYWN0LWFkZG9ucy10ZXN0LXV0aWxzIjogeworICAgICAgInZlcnNpb24iOiAiMTUu
Ni4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWFj
dC1hZGRvbnMtdGVzdC11dGlscy8tL3JlYWN0LWFkZG9ucy10ZXN0LXV0aWxzLTE1LjYuMC50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLUJpMDJFWC9vMFk4N3BlQnVzek9Ec0xoZXBiaz0i
LAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJyZWFjdC1kb20iOiB7CisgICAgICAi
dmVyc2lvbiI6ICIxNS42LjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL3JlYWN0LWRvbS8tL3JlYWN0LWRvbS0xNS42LjEudGd6IiwKKyAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS1MTER0UVpFRGpsUENDZXM2ZWFJK0trejVsSEE9IiwKKyAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgImZianMiOiAiMC44LjE0IiwKKyAgICAgICAgImxvb3NlLWVudmlm
eSI6ICIxLjMuMSIsCisgICAgICAgICJvYmplY3QtYXNzaWduIjogIjQuMS4xIiwKKyAgICAgICAg
InByb3AtdHlwZXMiOiAiMTUuNS4xMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJyZWFjdC1yZWR1
eCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjUuMC42IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWFjdC1yZWR1eC8tL3JlYWN0LXJlZHV4LTUuMC42LnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi04dGFhYUd1K0o3UE1KUURKcmsveGlXRVlR
bWRvM21rWHc2d1ByM0szTHh2WGlzM0Z5bWlxN2MxM1MrVHBscy9BeU5VQXNvT05rVTgxQVAwUkE2
eTZWdz09IiwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImhvaXN0LW5vbi1yZWFjdC1z
dGF0aWNzIjogIjIuMi4yIiwKKyAgICAgICAgImludmFyaWFudCI6ICIyLjIuMiIsCisgICAgICAg
ICJsb2Rhc2giOiAiNC4xNy40IiwKKyAgICAgICAgImxvZGFzaC1lcyI6ICI0LjE3LjQiLAorICAg
ICAgICAibG9vc2UtZW52aWZ5IjogIjEuMy4xIiwKKyAgICAgICAgInByb3AtdHlwZXMiOiAiMTUu
NS4xMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJyZWFjdC1zY3JpcHRzIjogeworICAgICAgInZl
cnNpb24iOiAiMC42LjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL3JlYWN0LXNjcmlwdHMvLS9yZWFjdC1zY3JpcHRzLTAuNi4xLnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtVW16RWNxNE1EZWE4VDl5N0dZcnlwaXh0Um5FPSIsCisgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImF1dG9wcmVmaXhlciI6
ICI2LjQuMSIsCisgICAgICAgICJiYWJlbC1jb3JlIjogIjYuMTQuMCIsCisgICAgICAgICJiYWJl
bC1lc2xpbnQiOiAiNi4xLjIiLAorICAgICAgICAiYmFiZWwtamVzdCI6ICIxNS4wLjAiLAorICAg
ICAgICAiYmFiZWwtbG9hZGVyIjogIjYuMi41IiwKKyAgICAgICAgImJhYmVsLXByZXNldC1yZWFj
dC1hcHAiOiAiMC4yLjEiLAorICAgICAgICAiY2FzZS1zZW5zaXRpdmUtcGF0aHMtd2VicGFjay1w
bHVnaW4iOiAiMS4xLjQiLAorICAgICAgICAiY2hhbGsiOiAiMS4xLjMiLAorICAgICAgICAiY29u
bmVjdC1oaXN0b3J5LWFwaS1mYWxsYmFjayI6ICIxLjMuMCIsCisgICAgICAgICJjcm9zcy1zcGF3
biI6ICI0LjAuMCIsCisgICAgICAgICJjc3MtbG9hZGVyIjogIjAuMjQuMCIsCisgICAgICAgICJk
ZXRlY3QtcG9ydCI6ICIxLjAuMCIsCisgICAgICAgICJkb3RlbnYiOiAiMi4wLjAiLAorICAgICAg
ICAiZXNsaW50IjogIjMuNS4wIiwKKyAgICAgICAgImVzbGludC1jb25maWctcmVhY3QtYXBwIjog
IjAuMi4xIiwKKyAgICAgICAgImVzbGludC1sb2FkZXIiOiAiMS41LjAiLAorICAgICAgICAiZXNs
aW50LXBsdWdpbi1mbG93dHlwZSI6ICIyLjE4LjEiLAorICAgICAgICAiZXNsaW50LXBsdWdpbi1p
bXBvcnQiOiAiMS4xMi4wIiwKKyAgICAgICAgImVzbGludC1wbHVnaW4tanN4LWExMXkiOiAiMi4y
LjIiLAorICAgICAgICAiZXNsaW50LXBsdWdpbi1yZWFjdCI6ICI2LjMuMCIsCisgICAgICAgICJl
eHRyYWN0LXRleHQtd2VicGFjay1wbHVnaW4iOiAiMS4wLjEiLAorICAgICAgICAiZmlsZS1sb2Fk
ZXIiOiAiMC45LjAiLAorICAgICAgICAiZmlsZXNpemUiOiAiMy4zLjAiLAorICAgICAgICAiZmlu
ZC1jYWNoZS1kaXIiOiAiMC4xLjEiLAorICAgICAgICAiZnMtZXh0cmEiOiAiMC4zMC4wIiwKKyAg
ICAgICAgImZzZXZlbnRzIjogIjEuMC4xNCIsCisgICAgICAgICJnemlwLXNpemUiOiAiMy4wLjAi
LAorICAgICAgICAiaHRtbC13ZWJwYWNrLXBsdWdpbiI6ICIyLjIyLjAiLAorICAgICAgICAiaHR0
cC1wcm94eS1taWRkbGV3YXJlIjogIjAuMTcuMSIsCisgICAgICAgICJqZXN0IjogIjE1LjEuMSIs
CisgICAgICAgICJqc29uLWxvYWRlciI6ICIwLjUuNCIsCisgICAgICAgICJvYmplY3QtYXNzaWdu
IjogIjQuMS4wIiwKKyAgICAgICAgInBhdGgtZXhpc3RzIjogIjIuMS4wIiwKKyAgICAgICAgInBv
c3Rjc3MtbG9hZGVyIjogIjAuMTMuMCIsCisgICAgICAgICJwcm9taXNlIjogIjcuMS4xIiwKKyAg
ICAgICAgInJlYWN0LWRldi11dGlscyI6ICIwLjIuMSIsCisgICAgICAgICJyZWN1cnNpdmUtcmVh
ZGRpciI6ICIyLjEuMCIsCisgICAgICAgICJyaW1yYWYiOiAiMi41LjQiLAorICAgICAgICAic3Ry
aXAtYW5zaSI6ICIzLjAuMSIsCisgICAgICAgICJzdHlsZS1sb2FkZXIiOiAiMC4xMy4xIiwKKyAg
ICAgICAgInVybC1sb2FkZXIiOiAiMC41LjciLAorICAgICAgICAid2VicGFjayI6ICIxLjEzLjIi
LAorICAgICAgICAid2VicGFjay1kZXYtc2VydmVyIjogIjEuMTYuMSIsCisgICAgICAgICJ3aGF0
d2ctZmV0Y2giOiAiMS4wLjAiCisgICAgICB9LAorICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAg
ICAgICAgImFiYWIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjMiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAg
ICAgICAiYWJicmV2IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC45IiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAg
ICAgICAgImFjY2VwdHMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4zLjMiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICAgICAibWltZS10eXBlcyI6ICIyLjEuMTIiLAorICAgICAg
ICAgICAgIm5lZ290aWF0b3IiOiAiMC42LjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAiYWNvcm4iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNC4wLjMiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAg
ICAgICAiYWNvcm4tZ2xvYmFscyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuOSIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJhY29ybiI6ICIyLjcuMCIKKyAgICAgICAg
ICB9LAorICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICAgICAiYWNvcm4iOiB7
CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuNy4wIiwKKyAgICAgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfQorICAg
ICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImFjb3JuLWpzeCI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIzLjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJhY29y
biI6ICIzLjMuMCIKKyAgICAgICAgICB9LAorICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7Cisg
ICAgICAgICAgICAiYWNvcm4iOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMy4wIiwK
KyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1
ZQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImFqdiI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI0LjcuNCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgICAgICJjbyI6ICI0LjYuMCIsCisgICAgICAgICAgICAianNvbi1zdGFibGUtc3RyaW5n
aWZ5IjogIjEuMC4xIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImFqdi1rZXl3
b3JkcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMSIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJh
bGlnbi10ZXh0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS40IiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAgICAgImtpbmQtb2YiOiAiMy4wLjQiLAorICAgICAgICAgICAgImxv
bmdlc3QiOiAiMS4wLjEiLAorICAgICAgICAgICAgInJlcGVhdC1zdHJpbmciOiAiMS41LjQiCisg
ICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYWxwaGFudW0tc29ydCI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJhbWRlZmluZSI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJhbnNpLWVzY2FwZXMi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS40LjAiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiYW5zaS1o
dG1sIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC41IiwKKyAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImFu
c2ktcmVnZXgiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAg
ICAiYW5zaS1zdHlsZXMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4yLjEiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAor
ICAgICAgICAiYW5zaWNvbG9ycyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjIuMSIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAg
IH0sCisgICAgICAgICJhbnltYXRjaCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjMuMCIs
CisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJhcnJpZnkiOiAiMS4wLjEiLAorICAg
ICAgICAgICAgIm1pY3JvbWF0Y2giOiAiMi4zLjExIgorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgImFwcGVuZC10cmFuc2Zvcm0iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4z
LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQor
ICAgICAgICB9LAorICAgICAgICAiYXJncGFyc2UiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
MS4wLjciLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAic3ByaW50Zi1qcyI6ICIx
LjAuMyIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJhcnItZGlmZiI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
ICAgICJhcnItZmxhdHRlbiI6ICIxLjAuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAg
ICAgICJhcnItZmxhdHRlbiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0s
CisgICAgICAgICJhcnJheS1kaWZmZXIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAi
LAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAg
ICAgICB9LAorICAgICAgICAiYXJyYXktZXF1YWwiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
MS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZQorICAgICAgICB9LAorICAgICAgICAiYXJyYXktZmxhdHRlbiI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIxLjEuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJhcnJheS11bmlvbiI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJh
cnJheS11bmlxIjogIjEuMC4zIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImFy
cmF5LXVuaXEiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjMiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAg
ICAiYXJyYXktdW5pcXVlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4xIiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwK
KyAgICAgICAgImFycmlmeSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0s
CisgICAgICAgICJhc2FwIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC41IiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwK
KyAgICAgICAgImFzbjEiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4yLjMiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAor
ICAgICAgICAiYXNzZXJ0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuNC4xIiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAgICAgInV0aWwiOiAiMC4xMC4zIgorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgImFzc2VydC1wbHVzIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjAuMi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImFzeW5jIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuNS4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImFzeW5jLWVhY2giOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMS4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiYXN5bmNraXQiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMC40LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiYXV0b3ByZWZpeGVyIjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjYuNC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAg
ICAgImJyb3dzZXJzbGlzdCI6ICIxLjMuNiIsCisgICAgICAgICAgICAiY2FuaXVzZS1kYiI6ICIx
LjAuMzAwMDA1NDAiLAorICAgICAgICAgICAgIm5vcm1hbGl6ZS1yYW5nZSI6ICIwLjEuMiIsCisg
ICAgICAgICAgICAibnVtMmZyYWN0aW9uIjogIjEuMi4yIiwKKyAgICAgICAgICAgICJwb3N0Y3Nz
IjogIjUuMi4yIiwKKyAgICAgICAgICAgICJwb3N0Y3NzLXZhbHVlLXBhcnNlciI6ICIzLjMuMCIK
KyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJhd3Mtc2lnbjIiOiB7CisgICAgICAg
ICAgInZlcnNpb24iOiAiMC42LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiYXdzNCI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIxLjQuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJiYWJlbC1jb2RlLWZyYW1lIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMTEuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIsCisgICAgICAgICAgICAiY2hhbGsi
OiAiMS4xLjMiLAorICAgICAgICAgICAgImVzdXRpbHMiOiAiMi4wLjIiLAorICAgICAgICAgICAg
ImpzLXRva2VucyI6ICIyLjAuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJi
YWJlbC1jb3JlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMTQuMCIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICJiYWJlbC1jb2RlLWZyYW1lIjogIjYuMTEuMCIsCisgICAg
ICAgICAgICAiYmFiZWwtZ2VuZXJhdG9yIjogIjYuMTQuMCIsCisgICAgICAgICAgICAiYmFiZWwt
aGVscGVycyI6ICI2LjguMCIsCisgICAgICAgICAgICAiYmFiZWwtbWVzc2FnZXMiOiAiNi44LjAi
LAorICAgICAgICAgICAgImJhYmVsLXJlZ2lzdGVyIjogIjYuMTQuMCIsCisgICAgICAgICAgICAi
YmFiZWwtcnVudGltZSI6ICI2LjExLjYiLAorICAgICAgICAgICAgImJhYmVsLXRlbXBsYXRlIjog
IjYuMTUuMCIsCisgICAgICAgICAgICAiYmFiZWwtdHJhdmVyc2UiOiAiNi4xNS4wIiwKKyAgICAg
ICAgICAgICJiYWJlbC10eXBlcyI6ICI2LjE1LjAiLAorICAgICAgICAgICAgImJhYnlsb24iOiAi
Ni4xMS4yIiwKKyAgICAgICAgICAgICJjb252ZXJ0LXNvdXJjZS1tYXAiOiAiMS4zLjAiLAorICAg
ICAgICAgICAgImRlYnVnIjogIjIuMi4wIiwKKyAgICAgICAgICAgICJqc29uNSI6ICIwLjQuMCIs
CisgICAgICAgICAgICAibG9kYXNoIjogIjQuMTYuMiIsCisgICAgICAgICAgICAibWluaW1hdGNo
IjogIjMuMC4zIiwKKyAgICAgICAgICAgICJwYXRoLWV4aXN0cyI6ICIxLjAuMCIsCisgICAgICAg
ICAgICAicGF0aC1pcy1hYnNvbHV0ZSI6ICIxLjAuMCIsCisgICAgICAgICAgICAicHJpdmF0ZSI6
ICIwLjEuNiIsCisgICAgICAgICAgICAic2hlYmFuZy1yZWdleCI6ICIxLjAuMCIsCisgICAgICAg
ICAgICAic2xhc2giOiAiMS4wLjAiLAorICAgICAgICAgICAgInNvdXJjZS1tYXAiOiAiMC41LjYi
CisgICAgICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAgICAg
InBhdGgtZXhpc3RzIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAg
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJiYWJlbC1lc2xp
bnQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNi4xLjIiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7
CisgICAgICAgICAgICAiYmFiZWwtdHJhdmVyc2UiOiAiNi4xNS4wIiwKKyAgICAgICAgICAgICJi
YWJlbC10eXBlcyI6ICI2LjE1LjAiLAorICAgICAgICAgICAgImJhYnlsb24iOiAiNi4xMS4yIiwK
KyAgICAgICAgICAgICJsb2Rhc2guYXNzaWduIjogIjQuMi4wIiwKKyAgICAgICAgICAgICJsb2Rh
c2gucGlja2J5IjogIjQuNi4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJh
YmVsLWdlbmVyYXRvciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2LjE0LjAiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYmFiZWwtbWVzc2FnZXMiOiAiNi44LjAiLAorICAg
ICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IiwKKyAgICAgICAgICAgICJiYWJlbC10
eXBlcyI6ICI2LjE1LjAiLAorICAgICAgICAgICAgImRldGVjdC1pbmRlbnQiOiAiMy4wLjEiLAor
ICAgICAgICAgICAgImxvZGFzaCI6ICI0LjE2LjIiLAorICAgICAgICAgICAgInNvdXJjZS1tYXAi
OiAiMC41LjYiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYmFiZWwtaGVscGVy
LWJ1aWxkZXItYmluYXJ5LWFzc2lnbm1lbnQtb3BlcmF0b3ItdmlzaXRvciI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICI2LjE1LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAi
YmFiZWwtaGVscGVyLWV4cGxvZGUtYXNzaWduYWJsZS1leHByZXNzaW9uIjogIjYuOC4wIiwKKyAg
ICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIsCisgICAgICAgICAgICAiYmFiZWwt
dHlwZXMiOiAiNi4xNS4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVs
LWhlbHBlci1idWlsZGVyLXJlYWN0LWpzeCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2Ljku
MCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAor
ICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYu
MTEuNiIsCisgICAgICAgICAgICAiYmFiZWwtdHlwZXMiOiAiNi4xNS4wIiwKKyAgICAgICAgICAg
ICJlc3V0aWxzIjogIjIuMC4yIiwKKyAgICAgICAgICAgICJsb2Rhc2giOiAiNC4xNi4yIgorICAg
ICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVsLWhlbHBlci1jYWxsLWRlbGVnYXRl
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuOC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAgICAgImJhYmVsLWhlbHBlci1ob2lzdC12YXJpYWJsZXMiOiAiNi44LjAiLAorICAg
ICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IiwKKyAgICAgICAgICAgICJiYWJlbC10
cmF2ZXJzZSI6ICI2LjE1LjAiLAorICAgICAgICAgICAgImJhYmVsLXR5cGVzIjogIjYuMTUuMCIK
KyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJiYWJlbC1oZWxwZXItZGVmaW5lLW1h
cCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2LjkuMCIsCisgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgICAgICJiYWJlbC1oZWxwZXItZnVuY3Rpb24tbmFtZSI6ICI2LjguMCIsCisgICAg
ICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiLAorICAgICAgICAgICAgImJhYmVsLXR5
cGVzIjogIjYuMTUuMCIsCisgICAgICAgICAgICAibG9kYXNoIjogIjQuMTYuMiIKKyAgICAgICAg
ICB9CisgICAgICAgIH0sCisgICAgICAgICJiYWJlbC1oZWxwZXItZXhwbG9kZS1hc3NpZ25hYmxl
LWV4cHJlc3Npb24iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNi44LjAiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiLAorICAgICAg
ICAgICAgImJhYmVsLXRyYXZlcnNlIjogIjYuMTUuMCIsCisgICAgICAgICAgICAiYmFiZWwtdHlw
ZXMiOiAiNi4xNS4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVsLWhl
bHBlci1mdW5jdGlvbi1uYW1lIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuOC4wIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLWhlbHBlci1nZXQtZnVuY3Rpb24t
YXJpdHkiOiAiNi44LjAiLAorICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IiwK
KyAgICAgICAgICAgICJiYWJlbC10ZW1wbGF0ZSI6ICI2LjE1LjAiLAorICAgICAgICAgICAgImJh
YmVsLXRyYXZlcnNlIjogIjYuMTUuMCIsCisgICAgICAgICAgICAiYmFiZWwtdHlwZXMiOiAiNi4x
NS4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVsLWhlbHBlci1nZXQt
ZnVuY3Rpb24tYXJpdHkiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNi44LjAiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiLAorICAg
ICAgICAgICAgImJhYmVsLXR5cGVzIjogIjYuMTUuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0s
CisgICAgICAgICJiYWJlbC1oZWxwZXItaG9pc3QtdmFyaWFibGVzIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjYuOC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVs
LXJ1bnRpbWUiOiAiNi4xMS42IiwKKyAgICAgICAgICAgICJiYWJlbC10eXBlcyI6ICI2LjE1LjAi
CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYmFiZWwtaGVscGVyLW9wdGltaXNl
LWNhbGwtZXhwcmVzc2lvbiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2LjguMCIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIsCisg
ICAgICAgICAgICAiYmFiZWwtdHlwZXMiOiAiNi4xNS4wIgorICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgImJhYmVsLWhlbHBlci1yZWdleCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICI2LjkuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJiYWJlbC1ydW50aW1l
IjogIjYuMTEuNiIsCisgICAgICAgICAgICAiYmFiZWwtdHlwZXMiOiAiNi4xNS4wIiwKKyAgICAg
ICAgICAgICJsb2Rhc2giOiAiNC4xNi4yIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg
ICAgImJhYmVsLWhlbHBlci1yZW1hcC1hc3luYy10by1nZW5lcmF0b3IiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiNi4xMS4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJh
YmVsLWhlbHBlci1mdW5jdGlvbi1uYW1lIjogIjYuOC4wIiwKKyAgICAgICAgICAgICJiYWJlbC1y
dW50aW1lIjogIjYuMTEuNiIsCisgICAgICAgICAgICAiYmFiZWwtdGVtcGxhdGUiOiAiNi4xNS4w
IiwKKyAgICAgICAgICAgICJiYWJlbC10cmF2ZXJzZSI6ICI2LjE1LjAiLAorICAgICAgICAgICAg
ImJhYmVsLXR5cGVzIjogIjYuMTUuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJiYWJlbC1oZWxwZXItcmVwbGFjZS1zdXBlcnMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
Ni4xNC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLWhlbHBlci1v
cHRpbWlzZS1jYWxsLWV4cHJlc3Npb24iOiAiNi44LjAiLAorICAgICAgICAgICAgImJhYmVsLW1l
c3NhZ2VzIjogIjYuOC4wIiwKKyAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIs
CisgICAgICAgICAgICAiYmFiZWwtdGVtcGxhdGUiOiAiNi4xNS4wIiwKKyAgICAgICAgICAgICJi
YWJlbC10cmF2ZXJzZSI6ICI2LjE1LjAiLAorICAgICAgICAgICAgImJhYmVsLXR5cGVzIjogIjYu
MTUuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJiYWJlbC1oZWxwZXJzIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuOC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IiwKKyAgICAgICAgICAgICJiYWJlbC10
ZW1wbGF0ZSI6ICI2LjE1LjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYmFi
ZWwtamVzdCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxNS4wLjAiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICAgICAiYmFiZWwtY29yZSI6ICI2LjE0LjAiLAorICAgICAgICAgICAg
ImJhYmVsLXBsdWdpbi1pc3RhbmJ1bCI6ICIyLjAuMSIsCisgICAgICAgICAgICAiYmFiZWwtcHJl
c2V0LWplc3QiOiAiMTUuMC4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJh
YmVsLWxvYWRlciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2LjIuNSIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICJsb2FkZXItdXRpbHMiOiAiMC4yLjE2IiwKKyAgICAgICAg
ICAgICJta2RpcnAiOiAiMC41LjEiLAorICAgICAgICAgICAgIm9iamVjdC1hc3NpZ24iOiAiNC4x
LjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYmFiZWwtbWVzc2FnZXMiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiNi44LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiCisgICAgICAgICAgfQorICAgICAgICB9
LAorICAgICAgICAiYmFiZWwtcGx1Z2luLWNoZWNrLWVzMjAxNS1jb25zdGFudHMiOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiNi44LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAg
ICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAiYmFiZWwtcGx1Z2luLWlzdGFuYnVsIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIu
MC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImZpbmQtdXAiOiAiMS4xLjIi
LAorICAgICAgICAgICAgImlzdGFuYnVsLWxpYi1pbnN0cnVtZW50IjogIjEuMS4zIiwKKyAgICAg
ICAgICAgICJ0ZXN0LWV4Y2x1ZGUiOiAiMi4xLjIiCisgICAgICAgICAgfQorICAgICAgICB9LAor
ICAgICAgICAiYmFiZWwtcGx1Z2luLWplc3QtaG9pc3QiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMTUuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVsLXBsdWdpbi1zeW50YXgtYXN5bmMtZnVu
Y3Rpb25zIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMTMuMCIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAg
ICJiYWJlbC1wbHVnaW4tc3ludGF4LWNsYXNzLXByb3BlcnRpZXMiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiNi4xMy4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVsLXBsdWdpbi1zeW50YXgtZXhw
b25lbnRpYXRpb24tb3BlcmF0b3IiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNi4xMy4wIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAg
ICAgfSwKKyAgICAgICAgImJhYmVsLXBsdWdpbi1zeW50YXgtZmxvdyI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICI2LjEzLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiYmFiZWwtcGx1Z2luLXN5bnRheC1q
c3giOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNi4xMy4wIiwKKyAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImJh
YmVsLXBsdWdpbi1zeW50YXgtb2JqZWN0LXJlc3Qtc3ByZWFkIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjYuMTMuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJiYWJlbC1wbHVnaW4tc3ludGF4LXRyYWls
aW5nLWZ1bmN0aW9uLWNvbW1hcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2LjEzLjAiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAg
ICB9LAorICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1hc3luYy10by1nZW5lcmF0b3Ii
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNi44LjAiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICAgICAiYmFiZWwtaGVscGVyLXJlbWFwLWFzeW5jLXRvLWdlbmVyYXRvciI6ICI2LjEx
LjIiLAorICAgICAgICAgICAgImJhYmVsLXBsdWdpbi1zeW50YXgtYXN5bmMtZnVuY3Rpb25zIjog
IjYuMTMuMCIsCisgICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiCisgICAgICAg
ICAgfQorICAgICAgICB9LAorICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1jbGFzcy1w
cm9wZXJ0aWVzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMTEuNSIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICJiYWJlbC1oZWxwZXItZnVuY3Rpb24tbmFtZSI6ICI2Ljgu
MCIsCisgICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXN5bnRheC1jbGFzcy1wcm9wZXJ0aWVzIjog
IjYuMTMuMCIsCisgICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiCisgICAgICAg
ICAgfQorICAgICAgICB9LAorICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUt
YXJyb3ctZnVuY3Rpb25zIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuOC4wIiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IgorICAg
ICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMy
MDE1LWJsb2NrLXNjb3BlZC1mdW5jdGlvbnMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNi44
LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2
LjExLjYiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYmFiZWwtcGx1Z2luLXRy
YW5zZm9ybS1lczIwMTUtYmxvY2stc2NvcGluZyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2
LjE1LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6
ICI2LjExLjYiLAorICAgICAgICAgICAgImJhYmVsLXRlbXBsYXRlIjogIjYuMTUuMCIsCisgICAg
ICAgICAgICAiYmFiZWwtdHJhdmVyc2UiOiAiNi4xNS4wIiwKKyAgICAgICAgICAgICJiYWJlbC10
eXBlcyI6ICI2LjE1LjAiLAorICAgICAgICAgICAgImxvZGFzaCI6ICI0LjE2LjIiCisgICAgICAg
ICAgfQorICAgICAgICB9LAorICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUt
Y2xhc3NlcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2LjE0LjAiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICAgICAiYmFiZWwtaGVscGVyLWRlZmluZS1tYXAiOiAiNi45LjAiLAor
ICAgICAgICAgICAgImJhYmVsLWhlbHBlci1mdW5jdGlvbi1uYW1lIjogIjYuOC4wIiwKKyAgICAg
ICAgICAgICJiYWJlbC1oZWxwZXItb3B0aW1pc2UtY2FsbC1leHByZXNzaW9uIjogIjYuOC4wIiwK
KyAgICAgICAgICAgICJiYWJlbC1oZWxwZXItcmVwbGFjZS1zdXBlcnMiOiAiNi4xNC4wIiwKKyAg
ICAgICAgICAgICJiYWJlbC1tZXNzYWdlcyI6ICI2LjguMCIsCisgICAgICAgICAgICAiYmFiZWwt
cnVudGltZSI6ICI2LjExLjYiLAorICAgICAgICAgICAgImJhYmVsLXRlbXBsYXRlIjogIjYuMTUu
MCIsCisgICAgICAgICAgICAiYmFiZWwtdHJhdmVyc2UiOiAiNi4xNS4wIiwKKyAgICAgICAgICAg
ICJiYWJlbC10eXBlcyI6ICI2LjE1LjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg
ICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtY29tcHV0ZWQtcHJvcGVydGllcyI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICI2LjguMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgICAgICJiYWJlbC1oZWxwZXItZGVmaW5lLW1hcCI6ICI2LjkuMCIsCisgICAgICAgICAgICAi
YmFiZWwtcnVudGltZSI6ICI2LjExLjYiLAorICAgICAgICAgICAgImJhYmVsLXRlbXBsYXRlIjog
IjYuMTUuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJiYWJlbC1wbHVnaW4t
dHJhbnNmb3JtLWVzMjAxNS1kZXN0cnVjdHVyaW5nIjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjYuOS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUi
OiAiNi4xMS42IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVsLXBsdWdp
bi10cmFuc2Zvcm0tZXMyMDE1LWR1cGxpY2F0ZS1rZXlzIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjYuOC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLXJ1bnRp
bWUiOiAiNi4xMS42IiwKKyAgICAgICAgICAgICJiYWJlbC10eXBlcyI6ICI2LjE1LjAiCisgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIw
MTUtZm9yLW9mIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuOC4wIiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IgorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWZ1
bmN0aW9uLW5hbWUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNi45LjAiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICAgICAiYmFiZWwtaGVscGVyLWZ1bmN0aW9uLW5hbWUiOiAiNi44
LjAiLAorICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IiwKKyAgICAgICAgICAg
ICJiYWJlbC10eXBlcyI6ICI2LjE1LjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg
ICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbGl0ZXJhbHMiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiNi44LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYmFi
ZWwtcnVudGltZSI6ICI2LjExLjYiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAi
YmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy1hbWQiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiNi44LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYmFi
ZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy1jb21tb25qcyI6ICI2LjE0LjAiLAor
ICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IiwKKyAgICAgICAgICAgICJiYWJl
bC10ZW1wbGF0ZSI6ICI2LjE1LjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAi
YmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy1jb21tb25qcyI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICI2LjE0LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAg
ICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1zdHJpY3QtbW9kZSI6ICI2LjExLjMiLAorICAgICAg
ICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IiwKKyAgICAgICAgICAgICJiYWJlbC10ZW1w
bGF0ZSI6ICI2LjE1LjAiLAorICAgICAgICAgICAgImJhYmVsLXR5cGVzIjogIjYuMTUuMCIKKyAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVz
MjAxNS1tb2R1bGVzLXN5c3RlbWpzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMTQuMCIs
CisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJiYWJlbC1oZWxwZXItaG9pc3QtdmFy
aWFibGVzIjogIjYuOC4wIiwKKyAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIs
CisgICAgICAgICAgICAiYmFiZWwtdGVtcGxhdGUiOiAiNi4xNS4wIgorICAgICAgICAgIH0KKyAg
ICAgICAgfSwKKyAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVsZXMt
dW1kIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMTIuMCIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1tb2R1bGVzLWFt
ZCI6ICI2LjguMCIsCisgICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiLAorICAg
ICAgICAgICAgImJhYmVsLXRlbXBsYXRlIjogIjYuMTUuMCIKKyAgICAgICAgICB9CisgICAgICAg
IH0sCisgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1vYmplY3Qtc3VwZXIi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNi44LjAiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICAgICAiYmFiZWwtaGVscGVyLXJlcGxhY2Utc3VwZXJzIjogIjYuMTQuMCIsCisgICAg
ICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiCisgICAgICAgICAgfQorICAgICAgICB9
LAorICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtcGFyYW1ldGVycyI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICI2LjExLjQiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICAgICAiYmFiZWwtaGVscGVyLWNhbGwtZGVsZWdhdGUiOiAiNi44LjAiLAorICAgICAgICAg
ICAgImJhYmVsLWhlbHBlci1nZXQtZnVuY3Rpb24tYXJpdHkiOiAiNi44LjAiLAorICAgICAgICAg
ICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IiwKKyAgICAgICAgICAgICJiYWJlbC10ZW1wbGF0
ZSI6ICI2LjE1LjAiLAorICAgICAgICAgICAgImJhYmVsLXRyYXZlcnNlIjogIjYuMTUuMCIsCisg
ICAgICAgICAgICAiYmFiZWwtdHlwZXMiOiAiNi4xNS4wIgorICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXNob3J0aGFuZC1wcm9w
ZXJ0aWVzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuOC4wIiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IiwKKyAgICAgICAgICAg
ICJiYWJlbC10eXBlcyI6ICI2LjE1LjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg
ICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtc3ByZWFkIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjYuOC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVs
LXJ1bnRpbWUiOiAiNi4xMS42IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJh
YmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXN0aWNreS1yZWdleCI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICI2LjguMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJiYWJl
bC1oZWxwZXItcmVnZXgiOiAiNi45LjAiLAorICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAi
Ni4xMS42IiwKKyAgICAgICAgICAgICJiYWJlbC10eXBlcyI6ICI2LjE1LjAiCisgICAgICAgICAg
fQorICAgICAgICB9LAorICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtdGVt
cGxhdGUtbGl0ZXJhbHMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNi44LjAiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiCisgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIw
MTUtdHlwZW9mLXN5bWJvbCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2LjguMCIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIKKyAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVz
MjAxNS11bmljb2RlLXJlZ2V4IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMTEuMCIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJiYWJlbC1oZWxwZXItcmVnZXgiOiAiNi45
LjAiLAorICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IiwKKyAgICAgICAgICAg
ICJyZWdleHB1LWNvcmUiOiAiMi4wLjAiCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5k
ZW5jaWVzIjogeworICAgICAgICAgICAgInJlZ2V4cHUtY29yZSI6IHsKKyAgICAgICAgICAgICAg
InZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvcmVnZXhwdS1jb3JlLy0vcmVnZXhwdS1jb3JlLTIuMC4wLnRneiIs
CisgICAgICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1TZEE0ZzN1Tno0djZXNXBDRTVrNDV1
b3E0a0E9IiwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAicmVnZW5lcmF0ZSI6ICIxLjMuMSIsCisgICAgICAg
ICAgICAgICAgInJlZ2pzZ2VuIjogIjAuMi4wIiwKKyAgICAgICAgICAgICAgICAicmVnanNwYXJz
ZXIiOiAiMC4xLjUiCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9
CisgICAgICAgIH0sCisgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWV4cG9uZW50aWF0
aW9uLW9wZXJhdG9yIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuOC4wIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLWhlbHBlci1idWlsZGVyLWJpbmFyeS1hc3Np
Z25tZW50LW9wZXJhdG9yLXZpc2l0b3IiOiAiNi4xNS4wIiwKKyAgICAgICAgICAgICJiYWJlbC1w
bHVnaW4tc3ludGF4LWV4cG9uZW50aWF0aW9uLW9wZXJhdG9yIjogIjYuMTMuMCIsCisgICAgICAg
ICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiCisgICAgICAgICAgfQorICAgICAgICB9LAor
ICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1mbG93LXN0cmlwLXR5cGVzIjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjYuMTQuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
ICAgICJiYWJlbC1wbHVnaW4tc3ludGF4LWZsb3ciOiAiNi4xMy4wIiwKKyAgICAgICAgICAgICJi
YWJlbC1ydW50aW1lIjogIjYuMTEuNiIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLW9iamVjdC1yZXN0LXNwcmVhZCI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICI2LjguMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJi
YWJlbC1wbHVnaW4tc3ludGF4LW9iamVjdC1yZXN0LXNwcmVhZCI6ICI2LjEzLjAiLAorICAgICAg
ICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IgorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVhY3QtY29uc3RhbnQtZWxlbWVudHMi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNi45LjEiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiCisgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1kaXNwbGF5LW5hbWUi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNi44LjAiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiCisgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1qc3giOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiNi44LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAg
ICAiYmFiZWwtaGVscGVyLWJ1aWxkZXItcmVhY3QtanN4IjogIjYuOS4wIiwKKyAgICAgICAgICAg
ICJiYWJlbC1wbHVnaW4tc3ludGF4LWpzeCI6ICI2LjEzLjAiLAorICAgICAgICAgICAgImJhYmVs
LXJ1bnRpbWUiOiAiNi4xMS42IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJh
YmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVhY3QtanN4LXNlbGYiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiNi4xMS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLXBs
dWdpbi1zeW50YXgtanN4IjogIjYuMTMuMCIsCisgICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6
ICI2LjExLjYiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYmFiZWwtcGx1Z2lu
LXRyYW5zZm9ybS1yZWFjdC1qc3gtc291cmNlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYu
OS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLXBsdWdpbi1zeW50
YXgtanN4IjogIjYuMTMuMCIsCisgICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYi
CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9y
bS1yZWdlbmVyYXRvciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2LjE0LjAiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYmFiZWwtY29yZSI6ICI2LjE0LjAiLAorICAgICAg
ICAgICAgImJhYmVsLXBsdWdpbi1zeW50YXgtYXN5bmMtZnVuY3Rpb25zIjogIjYuMTMuMCIsCisg
ICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtYmxvY2stc2NvcGluZyI6
ICI2LjE1LjAiLAorICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWZv
ci1vZiI6ICI2LjguMCIsCisgICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiLAor
ICAgICAgICAgICAgImJhYmVsLXRyYXZlcnNlIjogIjYuMTUuMCIsCisgICAgICAgICAgICAiYmFi
ZWwtdHlwZXMiOiAiNi4xNS4wIiwKKyAgICAgICAgICAgICJiYWJ5bG9uIjogIjYuMTEuMiIsCisg
ICAgICAgICAgICAicHJpdmF0ZSI6ICIwLjEuNiIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisg
ICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJ1bnRpbWUiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiNi4xNS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVs
LXJ1bnRpbWUiOiAiNi4xMS42IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJh
YmVsLXBsdWdpbi10cmFuc2Zvcm0tc3RyaWN0LW1vZGUiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiNi4xMS4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLXJ1bnRp
bWUiOiAiNi4xMS42IiwKKyAgICAgICAgICAgICJiYWJlbC10eXBlcyI6ICI2LjE1LjAiCisgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYmFiZWwtcHJlc2V0LWVzMjAxNSI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICI2LjE0LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICAgICAiYmFiZWwtcGx1Z2luLWNoZWNrLWVzMjAxNS1jb25zdGFudHMiOiAiNi44LjAiLAorICAg
ICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWFycm93LWZ1bmN0aW9ucyI6
ICI2LjguMCIsCisgICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtYmxv
Y2stc2NvcGVkLWZ1bmN0aW9ucyI6ICI2LjguMCIsCisgICAgICAgICAgICAiYmFiZWwtcGx1Z2lu
LXRyYW5zZm9ybS1lczIwMTUtYmxvY2stc2NvcGluZyI6ICI2LjE1LjAiLAorICAgICAgICAgICAg
ImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWNsYXNzZXMiOiAiNi4xNC4wIiwKKyAgICAg
ICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1jb21wdXRlZC1wcm9wZXJ0aWVz
IjogIjYuOC4wIiwKKyAgICAgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1k
ZXN0cnVjdHVyaW5nIjogIjYuOS4wIiwKKyAgICAgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNm
b3JtLWVzMjAxNS1kdXBsaWNhdGUta2V5cyI6ICI2LjguMCIsCisgICAgICAgICAgICAiYmFiZWwt
cGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZm9yLW9mIjogIjYuOC4wIiwKKyAgICAgICAgICAgICJi
YWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1mdW5jdGlvbi1uYW1lIjogIjYuOS4wIiwKKyAg
ICAgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1saXRlcmFscyI6ICI2Ljgu
MCIsCisgICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy1h
bWQiOiAiNi44LjAiLAorICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1
LW1vZHVsZXMtY29tbW9uanMiOiAiNi4xNC4wIiwKKyAgICAgICAgICAgICJiYWJlbC1wbHVnaW4t
dHJhbnNmb3JtLWVzMjAxNS1tb2R1bGVzLXN5c3RlbWpzIjogIjYuMTQuMCIsCisgICAgICAgICAg
ICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy11bWQiOiAiNi4xMi4wIiwK
KyAgICAgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1vYmplY3Qtc3VwZXIi
OiAiNi44LjAiLAorICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXBh
cmFtZXRlcnMiOiAiNi4xMS40IiwKKyAgICAgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3Jt
LWVzMjAxNS1zaG9ydGhhbmQtcHJvcGVydGllcyI6ICI2LjguMCIsCisgICAgICAgICAgICAiYmFi
ZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtc3ByZWFkIjogIjYuOC4wIiwKKyAgICAgICAgICAg
ICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1zdGlja3ktcmVnZXgiOiAiNi44LjAiLAor
ICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXRlbXBsYXRlLWxpdGVy
YWxzIjogIjYuOC4wIiwKKyAgICAgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAx
NS10eXBlb2Ytc3ltYm9sIjogIjYuOC4wIiwKKyAgICAgICAgICAgICJiYWJlbC1wbHVnaW4tdHJh
bnNmb3JtLWVzMjAxNS11bmljb2RlLXJlZ2V4IjogIjYuMTEuMCIsCisgICAgICAgICAgICAiYmFi
ZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWdlbmVyYXRvciI6ICI2LjE0LjAiCisgICAgICAgICAgfQor
ICAgICAgICB9LAorICAgICAgICAiYmFiZWwtcHJlc2V0LWVzMjAxNiI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICI2LjExLjMiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYmFi
ZWwtcGx1Z2luLXRyYW5zZm9ybS1leHBvbmVudGlhdGlvbi1vcGVyYXRvciI6ICI2LjguMCIKKyAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJiYWJlbC1wcmVzZXQtZXMyMDE3Ijogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMTQuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgICAgICJiYWJlbC1wbHVnaW4tc3ludGF4LXRyYWlsaW5nLWZ1bmN0aW9uLWNvbW1hcyI6ICI2
LjEzLjAiLAorICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tYXN5bmMtdG8tZ2Vu
ZXJhdG9yIjogIjYuOC4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVs
LXByZXNldC1qZXN0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjE1LjAuMCIsCisgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJy
ZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJiYWJlbC1wbHVnaW4tamVzdC1ob2lzdCI6ICIxNS4w
LjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYmFiZWwtcHJlc2V0LWxhdGVz
dCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2LjE0LjAiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7
CisgICAgICAgICAgICAiYmFiZWwtcHJlc2V0LWVzMjAxNSI6ICI2LjE0LjAiLAorICAgICAgICAg
ICAgImJhYmVsLXByZXNldC1lczIwMTYiOiAiNi4xMS4zIiwKKyAgICAgICAgICAgICJiYWJlbC1w
cmVzZXQtZXMyMDE3IjogIjYuMTQuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJiYWJlbC1wcmVzZXQtcmVhY3QiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNi4xMS4xIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLXBsdWdpbi1zeW50YXgtZmxv
dyI6ICI2LjEzLjAiLAorICAgICAgICAgICAgImJhYmVsLXBsdWdpbi1zeW50YXgtanN4IjogIjYu
MTMuMCIsCisgICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1mbG93LXN0cmlwLXR5
cGVzIjogIjYuMTQuMCIsCisgICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFj
dC1kaXNwbGF5LW5hbWUiOiAiNi44LjAiLAorICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFu
c2Zvcm0tcmVhY3QtanN4IjogIjYuOC4wIiwKKyAgICAgICAgICAgICJiYWJlbC1wbHVnaW4tdHJh
bnNmb3JtLXJlYWN0LWpzeC1zZWxmIjogIjYuMTEuMCIsCisgICAgICAgICAgICAiYmFiZWwtcGx1
Z2luLXRyYW5zZm9ybS1yZWFjdC1qc3gtc291cmNlIjogIjYuOS4wIgorICAgICAgICAgIH0KKyAg
ICAgICAgfSwKKyAgICAgICAgImJhYmVsLXByZXNldC1yZWFjdC1hcHAiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMC4yLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYmFi
ZWwtcGx1Z2luLXRyYW5zZm9ybS1jbGFzcy1wcm9wZXJ0aWVzIjogIjYuMTEuNSIsCisgICAgICAg
ICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1vYmplY3QtcmVzdC1zcHJlYWQiOiAiNi44LjAi
LAorICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVhY3QtY29uc3RhbnQtZWxl
bWVudHMiOiAiNi45LjEiLAorICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVh
Y3QtanN4LXNlbGYiOiAiNi4xMS4wIiwKKyAgICAgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNm
b3JtLXJlYWN0LWpzeC1zb3VyY2UiOiAiNi45LjAiLAorICAgICAgICAgICAgImJhYmVsLXBsdWdp
bi10cmFuc2Zvcm0tcmVnZW5lcmF0b3IiOiAiNi4xNC4wIiwKKyAgICAgICAgICAgICJiYWJlbC1w
bHVnaW4tdHJhbnNmb3JtLXJ1bnRpbWUiOiAiNi4xNS4wIiwKKyAgICAgICAgICAgICJiYWJlbC1w
cmVzZXQtbGF0ZXN0IjogIjYuMTQuMCIsCisgICAgICAgICAgICAiYmFiZWwtcHJlc2V0LXJlYWN0
IjogIjYuMTEuMSIsCisgICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiCisgICAg
ICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAgICAgImFtZGVm
aW5lIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAiYW5zaS1yZWdleCI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24i
OiAiMi4wLjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAg
ICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImFuc2ktc3R5bGVzIjog
eworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyLjIuMSIsCisgICAgICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAiYmFiZWwtY29kZS1mcmFtZSI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24i
OiAiNi4xMS4wIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAg
ICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIsCisgICAgICAgICAgICAgICAgImNoYWxrIjog
IjEuMS4zIiwKKyAgICAgICAgICAgICAgICAiZXN1dGlscyI6ICIyLjAuMiIsCisgICAgICAgICAg
ICAgICAgImpzLXRva2VucyI6ICIyLjAuMCIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICJiYWJlbC1jb3JlIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6
ICI2LjE0LjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAg
ICAgImJhYmVsLWNvZGUtZnJhbWUiOiAiNi4xMS4wIiwKKyAgICAgICAgICAgICAgICAiYmFiZWwt
Z2VuZXJhdG9yIjogIjYuMTQuMCIsCisgICAgICAgICAgICAgICAgImJhYmVsLWhlbHBlcnMiOiAi
Ni44LjAiLAorICAgICAgICAgICAgICAgICJiYWJlbC1tZXNzYWdlcyI6ICI2LjguMCIsCisgICAg
ICAgICAgICAgICAgImJhYmVsLXJlZ2lzdGVyIjogIjYuMTQuMCIsCisgICAgICAgICAgICAgICAg
ImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IiwKKyAgICAgICAgICAgICAgICAiYmFiZWwtdGVtcGxh
dGUiOiAiNi4xNS4wIiwKKyAgICAgICAgICAgICAgICAiYmFiZWwtdHJhdmVyc2UiOiAiNi4xNS4w
IiwKKyAgICAgICAgICAgICAgICAiYmFiZWwtdHlwZXMiOiAiNi4xNS4wIiwKKyAgICAgICAgICAg
ICAgICAiYmFieWxvbiI6ICI2LjExLjIiLAorICAgICAgICAgICAgICAgICJjb252ZXJ0LXNvdXJj
ZS1tYXAiOiAiMS4zLjAiLAorICAgICAgICAgICAgICAgICJkZWJ1ZyI6ICIyLjIuMCIsCisgICAg
ICAgICAgICAgICAgImpzb241IjogIjAuNC4wIiwKKyAgICAgICAgICAgICAgICAibG9kYXNoIjog
IjQuMTYuMiIsCisgICAgICAgICAgICAgICAgIm1pbmltYXRjaCI6ICIzLjAuMyIsCisgICAgICAg
ICAgICAgICAgInBhdGgtZXhpc3RzIjogIjEuMC4wIiwKKyAgICAgICAgICAgICAgICAicGF0aC1p
cy1hYnNvbHV0ZSI6ICIxLjAuMCIsCisgICAgICAgICAgICAgICAgInByaXZhdGUiOiAiMC4xLjYi
LAorICAgICAgICAgICAgICAgICJzaGViYW5nLXJlZ2V4IjogIjEuMC4wIiwKKyAgICAgICAgICAg
ICAgICAic2xhc2giOiAiMS4wLjAiLAorICAgICAgICAgICAgICAgICJzb3VyY2UtbWFwIjogIjAu
NS42IgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImJhYmVs
LWdlbmVyYXRvciI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiNi4xNC4wIiwKKyAgICAg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICJiYWJlbC1tZXNzYWdl
cyI6ICI2LjguMCIsCisgICAgICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IiwK
KyAgICAgICAgICAgICAgICAiYmFiZWwtdHlwZXMiOiAiNi4xNS4wIiwKKyAgICAgICAgICAgICAg
ICAiZGV0ZWN0LWluZGVudCI6ICIzLjAuMSIsCisgICAgICAgICAgICAgICAgImxvZGFzaCI6ICI0
LjE2LjIiLAorICAgICAgICAgICAgICAgICJzb3VyY2UtbWFwIjogIjAuNS42IgorICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImJhYmVsLWhlbHBlcnMiOiB7Cisg
ICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjYuOC4wIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIsCisgICAg
ICAgICAgICAgICAgImJhYmVsLXRlbXBsYXRlIjogIjYuMTUuMCIKKyAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJiYWJlbC1tZXNzYWdlcyI6IHsKKyAgICAgICAg
ICAgICAgInZlcnNpb24iOiAiNi44LjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7
CisgICAgICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IgorICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImJhYmVsLXJlZ2lzdGVyIjogeworICAg
ICAgICAgICAgICAidmVyc2lvbiI6ICI2LjE0LjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICAgICAgICAgImJhYmVsLWNvcmUiOiAiNi4xNC4wIiwKKyAgICAgICAg
ICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiLAorICAgICAgICAgICAgICAgICJjb3Jl
LWpzIjogIjIuNC4xIiwKKyAgICAgICAgICAgICAgICAiaG9tZS1vci10bXAiOiAiMS4wLjAiLAor
ICAgICAgICAgICAgICAgICJsb2Rhc2giOiAiNC4xNi4yIiwKKyAgICAgICAgICAgICAgICAibWtk
aXJwIjogIjAuNS4xIiwKKyAgICAgICAgICAgICAgICAicGF0aC1leGlzdHMiOiAiMS4wLjAiLAor
ICAgICAgICAgICAgICAgICJzb3VyY2UtbWFwLXN1cHBvcnQiOiAiMC4yLjEwIgorICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiB7Cisg
ICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMTEuNiIsCisgICAgICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAiY29yZS1qcyI6ICIyLjQuMSIsCisgICAgICAgICAg
ICAgICAgInJlZ2VuZXJhdG9yLXJ1bnRpbWUiOiAiMC45LjUiCisgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAiYmFiZWwtdGVtcGxhdGUiOiB7CisgICAgICAgICAg
ICAgICJ2ZXJzaW9uIjogIjYuMTUuMCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiLAorICAgICAgICAgICAg
ICAgICJiYWJlbC10cmF2ZXJzZSI6ICI2LjE1LjAiLAorICAgICAgICAgICAgICAgICJiYWJlbC10
eXBlcyI6ICI2LjE1LjAiLAorICAgICAgICAgICAgICAgICJiYWJ5bG9uIjogIjYuMTEuMiIsCisg
ICAgICAgICAgICAgICAgImxvZGFzaCI6ICI0LjE2LjIiCisgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAiYmFiZWwtdHJhdmVyc2UiOiB7CisgICAgICAgICAgICAg
ICJ2ZXJzaW9uIjogIjYuMTUuMCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgICAgICAgICAiYmFiZWwtY29kZS1mcmFtZSI6ICI2LjExLjAiLAorICAgICAgICAgICAg
ICAgICJiYWJlbC1tZXNzYWdlcyI6ICI2LjguMCIsCisgICAgICAgICAgICAgICAgImJhYmVsLXJ1
bnRpbWUiOiAiNi4xMS42IiwKKyAgICAgICAgICAgICAgICAiYmFiZWwtdHlwZXMiOiAiNi4xNS4w
IiwKKyAgICAgICAgICAgICAgICAiYmFieWxvbiI6ICI2LjExLjIiLAorICAgICAgICAgICAgICAg
ICJkZWJ1ZyI6ICIyLjIuMCIsCisgICAgICAgICAgICAgICAgImdsb2JhbHMiOiAiOC4xOC4wIiwK
KyAgICAgICAgICAgICAgICAiaW52YXJpYW50IjogIjIuMi4xIiwKKyAgICAgICAgICAgICAgICAi
bG9kYXNoIjogIjQuMTYuMiIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICJiYWJlbC10eXBlcyI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiNi4xNS4w
IiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICJiYWJl
bC1ydW50aW1lIjogIjYuMTEuNiIsCisgICAgICAgICAgICAgICAgImVzdXRpbHMiOiAiMi4wLjIi
LAorICAgICAgICAgICAgICAgICJsb2Rhc2giOiAiNC4xNi4yIiwKKyAgICAgICAgICAgICAgICAi
dG8tZmFzdC1wcm9wZXJ0aWVzIjogIjEuMC4yIgorICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgImJhYnlsb24iOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjog
IjYuMTEuMiIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAg
ImRldiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiYmFsYW5jZWQtbWF0Y2gi
OiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNC4yIiwKKyAgICAgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICJicmFjZS1leHBhbnNpb24iOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuMS42IiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAg
ICAgICJiYWxhbmNlZC1tYXRjaCI6ICIwLjQuMiIsCisgICAgICAgICAgICAgICAgImNvbmNhdC1t
YXAiOiAiMC4wLjEiCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAiY2hhbGsiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4zIiwKKyAgICAgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICJhbnNpLXN0eWxlcyI6ICIy
LjIuMSIsCisgICAgICAgICAgICAgICAgImVzY2FwZS1zdHJpbmctcmVnZXhwIjogIjEuMC41IiwK
KyAgICAgICAgICAgICAgICAiaGFzLWFuc2kiOiAiMi4wLjAiLAorICAgICAgICAgICAgICAgICJz
dHJpcC1hbnNpIjogIjMuMC4xIiwKKyAgICAgICAgICAgICAgICAic3VwcG9ydHMtY29sb3IiOiAi
Mi4wLjAiCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiY29u
Y2F0LW1hcCI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4wLjEiLAorICAgICAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgImNvbnZlcnQtc291cmNlLW1hcCI6IHsKKyAgICAgICAgICAg
ICAgInZlcnNpb24iOiAiMS4zLjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImNv
cmUtanMiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuNC4xIiwKKyAgICAgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICJkZWJ1ZyI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAi
Mi4yLjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAg
Im1zIjogIjAuNy4xIgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgImRldGVjdC1pbmRlbnQiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4xIiwK
KyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICJnZXQtc3Rk
aW4iOiAiNC4wLjEiLAorICAgICAgICAgICAgICAgICJtaW5pbWlzdCI6ICIxLjIuMCIsCisgICAg
ICAgICAgICAgICAgInJlcGVhdGluZyI6ICIxLjEuMyIKKyAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICJlc2NhcGUtc3RyaW5nLXJlZ2V4cCI6IHsKKyAgICAgICAg
ICAgICAgInZlcnNpb24iOiAiMS4wLjUiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ImVzdXRpbHMiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4yIiwKKyAgICAgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICJnZXQtc3RkaW4iOiB7CisgICAgICAgICAgICAgICJ2ZXJz
aW9uIjogIjQuMC4xIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJnbG9iYWxzIjog
eworICAgICAgICAgICAgICAidmVyc2lvbiI6ICI4LjE4LjAiLAorICAgICAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgImhhcy1hbnNpIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyLjAu
MCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6
IHRydWUsCisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAiYW5z
aS1yZWdleCI6ICIyLjAuMCIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICJob21lLW9yLXRtcCI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAi
LAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgIm9zLXRt
cGRpciI6ICIxLjAuMSIsCisgICAgICAgICAgICAgICAgInVzZXItaG9tZSI6ICIxLjEuMSIKKyAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJpbnZhcmlhbnQiOiB7
CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMi4xIiwKKyAgICAgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAgICAgICAgICJsb29zZS1lbnZpZnkiOiAiMS4yLjAiCisgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiaXMtZmluaXRlIjogewor
ICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAgICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAibnVtYmVyLWlzLW5hbiI6ICIxLjAuMCIKKyAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJqcy10b2tlbnMiOiB7Cisg
ICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICJqc2VzYyI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC41LjAiLAorICAg
ICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAi
anNvbjUiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNC4wIiwKKyAgICAgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICJsb2Rhc2giOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjog
IjQuMTYuMiIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAg
ImRldiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAibG9vc2UtZW52aWZ5Ijog
eworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjIuMCIsCisgICAgICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJy
ZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAianMtdG9rZW5zIjogIjEuMC4zIgorICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAgICAg
ICAgICJqcy10b2tlbnMiOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMyIs
CisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAi
ZGV2IjogdHJ1ZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICJtaW5pbWF0Y2giOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9u
IjogIjMuMC4zIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAg
ICAgICJicmFjZS1leHBhbnNpb24iOiAiMS4xLjYiCisgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAibWluaW1pc3QiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuMi4wIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAg
ICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJta2RpcnAiOiB7Cisg
ICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNS4xIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAgICAgICAgICJtaW5pbWlzdCI6ICIwLjAuOCIKKyAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgICAgICAgICAi
bWluaW1pc3QiOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjAuOCIsCisgICAg
ICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2Ijog
dHJ1ZQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICJtcyI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC43LjEiLAor
ICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVl
CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgIm51bWJlci1pcy1uYW4iOiB7CisgICAgICAg
ICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICJvcy10bXBkaXIiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICJwYXRoLWV4aXN0cyI6IHsKKyAgICAgICAgICAgICAg
InZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInBhdGgt
aXMtYWJzb2x1dGUiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICJwcml2YXRlIjogeworICAgICAgICAgICAgICAidmVy
c2lvbiI6ICIwLjEuNiIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAicmVnZW5lcmF0
ZSI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4zLjEiLAorICAgICAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAicmVnZW5lcmF0b3It
cnVudGltZSI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC45LjUiLAorICAgICAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgInJlZ2V4cHUtY29yZSI6IHsKKyAgICAgICAgICAgICAgInZl
cnNpb24iOiAiMi4wLjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAicmVnZW5lcmF0ZSI6ICIxLjMu
MSIsCisgICAgICAgICAgICAgICAgInJlZ2pzZ2VuIjogIjAuMi4wIiwKKyAgICAgICAgICAgICAg
ICAicmVnanNwYXJzZXIiOiAiMC4xLjUiCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAicmVnanNnZW4iOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAu
Mi4wIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlCisgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgInJlZ2pzcGFyc2VyIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjEu
NSIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAgICAgICAgICJqc2VzYyI6ICIwLjUuMCIKKyAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJyZXBlYXRpbmciOiB7CisgICAgICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuMS4zIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAgICAgICAgICJpcy1maW5pdGUiOiAiMS4wLjEiCisgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAic2hlYmFuZy1yZWdleCI6IHsKKyAgICAgICAgICAg
ICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInNs
YXNoIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAic291cmNlLW1hcCI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24i
OiAiMC41LjYiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAg
ICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInNvdXJjZS1tYXAtc3Vw
cG9ydCI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4yLjEwIiwKKyAgICAgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICJzb3VyY2UtbWFwIjogIjAuMS4z
MiIKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAg
ICAgICAgICAgICAgICAic291cmNlLW1hcCI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9u
IjogIjAuMS4zMiIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgICAgICAgICAgICAgImFtZGVmaW5lIjogIjEuMC4wIgorICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICJzdHJpcC1hbnNpIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIz
LjAuMSIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAi
YW5zaS1yZWdleCI6ICIyLjAuMCIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICJzdXBwb3J0cy1jb2xvciI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAi
Mi4wLjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJk
ZXYiOiB0cnVlCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInRvLWZhc3QtcHJvcGVydGll
cyI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAgICAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9
LAorICAgICAgICAgICAgInVzZXItaG9tZSI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAi
MS4xLjEiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJk
ZXYiOiB0cnVlCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg
ICAiYmFiZWwtcmVnaXN0ZXIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNi4xNC4wIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLWNvcmUiOiAiNi4xNC4wIiwKKyAg
ICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIsCisgICAgICAgICAgICAiY29yZS1q
cyI6ICIyLjQuMSIsCisgICAgICAgICAgICAiaG9tZS1vci10bXAiOiAiMS4wLjAiLAorICAgICAg
ICAgICAgImxvZGFzaCI6ICI0LjE2LjIiLAorICAgICAgICAgICAgIm1rZGlycCI6ICIwLjUuMSIs
CisgICAgICAgICAgICAicGF0aC1leGlzdHMiOiAiMS4wLjAiLAorICAgICAgICAgICAgInNvdXJj
ZS1tYXAtc3VwcG9ydCI6ICIwLjIuMTAiCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5k
ZW5jaWVzIjogeworICAgICAgICAgICAgInBhdGgtZXhpc3RzIjogeworICAgICAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAg
IH0sCisgICAgICAgICJiYWJlbC1ydW50aW1lIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYu
MTEuNiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJjb3JlLWpzIjogIjIuNC4x
IiwKKyAgICAgICAgICAgICJyZWdlbmVyYXRvci1ydW50aW1lIjogIjAuOS41IgorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVsLXRlbXBsYXRlIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjYuMTUuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJiYWJl
bC1ydW50aW1lIjogIjYuMTEuNiIsCisgICAgICAgICAgICAiYmFiZWwtdHJhdmVyc2UiOiAiNi4x
NS4wIiwKKyAgICAgICAgICAgICJiYWJlbC10eXBlcyI6ICI2LjE1LjAiLAorICAgICAgICAgICAg
ImJhYnlsb24iOiAiNi4xMS4yIiwKKyAgICAgICAgICAgICJsb2Rhc2giOiAiNC4xNi4yIgorICAg
ICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVsLXRyYXZlcnNlIjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjYuMTUuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAg
ICJiYWJlbC1jb2RlLWZyYW1lIjogIjYuMTEuMCIsCisgICAgICAgICAgICAiYmFiZWwtbWVzc2Fn
ZXMiOiAiNi44LjAiLAorICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IiwKKyAg
ICAgICAgICAgICJiYWJlbC10eXBlcyI6ICI2LjE1LjAiLAorICAgICAgICAgICAgImJhYnlsb24i
OiAiNi4xMS4yIiwKKyAgICAgICAgICAgICJkZWJ1ZyI6ICIyLjIuMCIsCisgICAgICAgICAgICAi
Z2xvYmFscyI6ICI4LjE4LjAiLAorICAgICAgICAgICAgImludmFyaWFudCI6ICIyLjIuMSIsCisg
ICAgICAgICAgICAibG9kYXNoIjogIjQuMTYuMiIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisg
ICAgICAgICJiYWJlbC10eXBlcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2LjE1LjAiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYi
LAorICAgICAgICAgICAgImVzdXRpbHMiOiAiMi4wLjIiLAorICAgICAgICAgICAgImxvZGFzaCI6
ICI0LjE2LjIiLAorICAgICAgICAgICAgInRvLWZhc3QtcHJvcGVydGllcyI6ICIxLjAuMiIKKyAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJiYWJ5bG9uIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjYuMTEuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJiYWxhbmNlZC1tYXRjaCI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIwLjQuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJCYXNlNjQiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMC4yLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiYmFzZTY0LWpzIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImJhdGNoIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNS4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImJjcnlwdC1w
YmtkZiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6
IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgInR3ZWV0bmFjbCI6
ICIwLjE0LjMiCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAg
ICAgICAgICAgInR3ZWV0bmFjbCI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4xNC4z
IiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgfQorICAg
ICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJpZy5qcyI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIzLjEuMyIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJiaW5hcnktZXh0ZW5zaW9ucyI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjYuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJibCI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIxLjEuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAg
ICJyZWFkYWJsZS1zdHJlYW0iOiAiMi4wLjYiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAiYmx1ZWJpcmQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy40LjYiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAor
ICAgICAgICAiYm9vbGJhc2UiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9
LAorICAgICAgICAiYm9vbSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjEwLjEiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiaG9layI6ICIyLjE2LjMiCisgICAgICAgICAg
fQorICAgICAgICB9LAorICAgICAgICAiYnJhY2UtZXhwYW5zaW9uIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjEuMS42IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhbGFu
Y2VkLW1hdGNoIjogIjAuNC4yIiwKKyAgICAgICAgICAgICJjb25jYXQtbWFwIjogIjAuMC4xIgor
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJyYWNlcyI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjguNSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJleHBh
bmQtcmFuZ2UiOiAiMS44LjIiLAorICAgICAgICAgICAgInByZXNlcnZlIjogIjAuMi4wIiwKKyAg
ICAgICAgICAgICJyZXBlYXQtZWxlbWVudCI6ICIxLjEuMiIKKyAgICAgICAgICB9CisgICAgICAg
IH0sCisgICAgICAgICJicm93c2VyLXJlc29sdmUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
MS4xMS4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgInJlc29sdmUiOiAiMS4x
LjciCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYnJvd3NlcmlmeS16bGliIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS40IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAgICAgInBha28iOiAiMC4yLjkiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg
ICAiYnJvd3NlcnNsaXN0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMy42IiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAgICAgImNhbml1c2UtZGIiOiAiMS4wLjMwMDAwNTQwIgor
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJzZXIiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMS4wLjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAibm9kZS1p
bnQ2NCI6ICIwLjQuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJidWZmZXIi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNC45LjEiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICAgICAiYmFzZTY0LWpzIjogIjEuMi4wIiwKKyAgICAgICAgICAgICJpZWVlNzU0Ijog
IjEuMS42IiwKKyAgICAgICAgICAgICJpc2FycmF5IjogIjEuMC4wIgorICAgICAgICAgIH0KKyAg
ICAgICAgfSwKKyAgICAgICAgImJ1aWx0aW4tbW9kdWxlcyI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIxLjEuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJieXRlcyI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIyLjMuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJjYWxsZXItcGF0aCI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIwLjEuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJjYWxs
c2l0ZXMiOiAiMC4yLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiY2FsbHNp
dGVzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4wIiwKKyAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImNh
bWVsLWNhc2UiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4wLjAiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICAgICAibm8tY2FzZSI6ICIyLjMuMCIsCisgICAgICAgICAgICAidXBw
ZXItY2FzZSI6ICIxLjEuMyIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJjYW1l
bGNhc2UiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4yLjEiLAorICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAi
Y2FuaXVzZS1kYiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMzAwMDA1NDAiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9
LAorICAgICAgICAiY2FyZGluYWwiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYW5zaWNvbG9ycyI6ICIwLjIuMSIsCisg
ICAgICAgICAgICAicmVkZXllZCI6ICIxLjAuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisg
ICAgICAgICJjYXNlLXNlbnNpdGl2ZS1wYXRocy13ZWJwYWNrLXBsdWdpbiI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIxLjEuNCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJjYXNlbGVzcyI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIwLjExLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiY2VudGVyLWFsaWduIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAgICAgImFsaWduLXRleHQiOiAiMC4xLjQiLAorICAgICAgICAgICAgImxhenktY2FjaGUi
OiAiMS4wLjQiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiY2hhbGsiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMS4xLjMiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICAgICAiYW5zaS1zdHlsZXMiOiAiMi4yLjEiLAorICAgICAgICAgICAgImVzY2FwZS1zdHJpbmct
cmVnZXhwIjogIjEuMC41IiwKKyAgICAgICAgICAgICJoYXMtYW5zaSI6ICIyLjAuMCIsCisgICAg
ICAgICAgICAic3RyaXAtYW5zaSI6ICIzLjAuMSIsCisgICAgICAgICAgICAic3VwcG9ydHMtY29s
b3IiOiAiMi4wLjAiCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogewor
ICAgICAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6
ICIyLjAuMCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAg
ImRldiI6IHRydWUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAg
ICAgICJjaGFuZ2UtY2FzZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjAuMCIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJjYW1lbC1jYXNlIjogIjMuMC4wIiwKKyAgICAg
ICAgICAgICJjb25zdGFudC1jYXNlIjogIjIuMC4wIiwKKyAgICAgICAgICAgICJkb3QtY2FzZSI6
ICIyLjEuMCIsCisgICAgICAgICAgICAiaGVhZGVyLWNhc2UiOiAiMS4wLjAiLAorICAgICAgICAg
ICAgImlzLWxvd2VyLWNhc2UiOiAiMS4xLjMiLAorICAgICAgICAgICAgImlzLXVwcGVyLWNhc2Ui
OiAiMS4xLjIiLAorICAgICAgICAgICAgImxvd2VyLWNhc2UiOiAiMS4xLjMiLAorICAgICAgICAg
ICAgImxvd2VyLWNhc2UtZmlyc3QiOiAiMS4wLjIiLAorICAgICAgICAgICAgIm5vLWNhc2UiOiAi
Mi4zLjAiLAorICAgICAgICAgICAgInBhcmFtLWNhc2UiOiAiMi4xLjAiLAorICAgICAgICAgICAg
InBhc2NhbC1jYXNlIjogIjIuMC4wIiwKKyAgICAgICAgICAgICJwYXRoLWNhc2UiOiAiMi4xLjAi
LAorICAgICAgICAgICAgInNlbnRlbmNlLWNhc2UiOiAiMi4xLjAiLAorICAgICAgICAgICAgInNu
YWtlLWNhc2UiOiAiMi4xLjAiLAorICAgICAgICAgICAgInN3YXAtY2FzZSI6ICIxLjEuMiIsCisg
ICAgICAgICAgICAidGl0bGUtY2FzZSI6ICIyLjEuMCIsCisgICAgICAgICAgICAidXBwZXItY2Fz
ZSI6ICIxLjEuMyIsCisgICAgICAgICAgICAidXBwZXItY2FzZS1maXJzdCI6ICIxLjEuMiIKKyAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJjaG9raWRhciI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjYuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJhbnlt
YXRjaCI6ICIxLjMuMCIsCisgICAgICAgICAgICAiYXN5bmMtZWFjaCI6ICIxLjAuMSIsCisgICAg
ICAgICAgICAiZnNldmVudHMiOiAiMS4wLjE0IiwKKyAgICAgICAgICAgICJnbG9iLXBhcmVudCI6
ICIyLjAuMCIsCisgICAgICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjMiLAorICAgICAgICAgICAg
ImlzLWJpbmFyeS1wYXRoIjogIjEuMC4xIiwKKyAgICAgICAgICAgICJpcy1nbG9iIjogIjIuMC4x
IiwKKyAgICAgICAgICAgICJwYXRoLWlzLWFic29sdXRlIjogIjEuMC4wIiwKKyAgICAgICAgICAg
ICJyZWFkZGlycCI6ICIyLjEuMCIKKyAgICAgICAgICB9LAorICAgICAgICAgICJkZXBlbmRlbmNp
ZXMiOiB7CisgICAgICAgICAgICAiZnNldmVudHMiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuMC4xNCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAg
ICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAibmFuIjogIjIuNC4wIiwKKyAg
ICAgICAgICAgICAgICAibm9kZS1wcmUtZ3lwIjogIjAuNi4yOSIKKyAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgICAgICAgICAiYWJicmV2
IjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjkiLAorICAgICAgICAgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisg
ICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICAiYW5zaS1yZWdleCI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9u
IjogIjIuMC4wIiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICAiYW5zaS1zdHlsZXMiOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyLjIuMSIs
CisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgICJhcHJvYmEiOiB7CisgICAgICAgICAgICAgICAg
ICAidmVyc2lvbiI6ICIxLjAuNCIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRp
b25hbCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJhcmUtd2Ut
dGhlcmUteWV0IjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjIiLAorICAg
ICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6
IHRydWUsCisgICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICAg
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICAgICAiZGVsZWdhdGVzIjogIjEu
MC4wIiwKKyAgICAgICAgICAgICAgICAgICAgInJlYWRhYmxlLXN0cmVhbSI6ICIyLjEuNCIKKyAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJh
c24xIjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4yLjMiLAorICAgICAgICAg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICAiYXNzZXJ0LXBsdXMiOiB7CisgICAgICAgICAgICAgICAgICAidmVy
c2lvbiI6ICIwLjIuMCIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6
IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJhc3luYyI6IHsKKyAg
ICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuNS4yIiwKKyAgICAgICAgICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgImF3cy1zaWduMiI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNi4w
IiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImF3czQiOiB7CisgICAgICAgICAgICAgICAg
ICAidmVyc2lvbiI6ICIxLjQuMSIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRp
b25hbCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJiYWxhbmNl
ZC1tYXRjaCI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNC4yIiwKKyAgICAg
ICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0
cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiYmwiOiB7CisgICAgICAg
ICAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMiIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAg
ICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICAgICAgICAgICAgICJyZWFkYWJsZS1zdHJlYW0iOiAiMi4wLjYiCisgICAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAg
ICAgICAgICAgICAgInJlYWRhYmxlLXN0cmVhbSI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAi
dmVyc2lvbiI6ICIyLjAuNiIsCisgICAgICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAg
ICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAgICAgICAgICAgICAgICAgImNvcmUtdXRpbC1pcyI6ICIxLjAuMiIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjEiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgImlzYXJyYXkiOiAiMS4wLjAiLAorICAgICAgICAgICAgICAgICAgICAgICAgInBy
b2Nlc3MtbmV4dGljay1hcmdzIjogIjEuMC43IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJz
dHJpbmdfZGVjb2RlciI6ICIwLjEwLjMxIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ1dGls
LWRlcHJlY2F0ZSI6ICIxLjAuMiIKKyAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgICAgICJibG9jay1zdHJlYW0iOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lv
biI6ICIwLjAuOSIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgICAgICAgICAgICAgImluaGVyaXRzIjogIjIuMC4xIgorICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImJvb20iOiB7CisgICAg
ICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyLjEwLjEiLAorICAgICAgICAgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
ICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgICAgICJob2VrIjogIjIuMTYu
MyIKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgICJicmFjZS1leHBhbnNpb24iOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIx
LjEuNSIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgICAgICAgICAgICAgImJhbGFuY2VkLW1hdGNoIjogIjAuNC4yIiwKKyAgICAgICAgICAgICAg
ICAgICAgImNvbmNhdC1tYXAiOiAiMC4wLjEiCisgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiYnVmZmVyLXNoaW1zIjogeworICAgICAgICAg
ICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgICJjYXNlbGVzcyI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJz
aW9uIjogIjAuMTEuMCIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6
IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJjaGFsayI6IHsKKyAg
ICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4zIiwKKyAgICAgICAgICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgICAgICAgICAgICAgImFuc2ktc3R5bGVzIjogIjIuMi4xIiwKKyAgICAgICAg
ICAgICAgICAgICAgImVzY2FwZS1zdHJpbmctcmVnZXhwIjogIjEuMC41IiwKKyAgICAgICAgICAg
ICAgICAgICAgImhhcy1hbnNpIjogIjIuMC4wIiwKKyAgICAgICAgICAgICAgICAgICAgInN0cmlw
LWFuc2kiOiAiMy4wLjEiLAorICAgICAgICAgICAgICAgICAgICAic3VwcG9ydHMtY29sb3IiOiAi
Mi4wLjAiCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAiY29kZS1wb2ludC1hdCI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjog
IjEuMC4wIiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAg
ICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAgICAgICAgICAgICAibnVtYmVyLWlzLW5hbiI6ICIxLjAuMCIKKyAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJjb21iaW5lZC1zdHJl
YW0iOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuNSIsCisgICAgICAgICAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImRl
bGF5ZWQtc3RyZWFtIjogIjEuMC4wIgorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgImNvbW1hbmRlciI6IHsKKyAgICAgICAgICAgICAgICAg
ICJ2ZXJzaW9uIjogIjIuOS4wIiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgIm9wdGlv
bmFsIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAg
ICAgICAgICAgImdyYWNlZnVsLXJlYWRsaW5rIjogIjEuMC4xIgorICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImNvbmNhdC1tYXAiOiB7Cisg
ICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjAuMSIsCisgICAgICAgICAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgImNvbnNvbGUtY29udHJvbC1zdHJpbmdzIjogewor
ICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjAiLAorICAgICAgICAgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgICJjb3JlLXV0aWwtaXMiOiB7CisgICAgICAgICAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgImNyeXB0aWxlcyI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJz
aW9uIjogIjIuMC41IiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjog
dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAg
ICAgImJvb20iOiAiMi4xMC4xIgorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgImRhc2hkYXNoIjogeworICAgICAgICAgICAgICAgICAgInZl
cnNpb24iOiAiMS4xNC4wIiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgIm9wdGlvbmFs
IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAg
ICAgICAgImFzc2VydC1wbHVzIjogIjEuMC4wIgorICAgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhc3Nl
cnQtcGx1cyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisg
ICAgICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUK
KyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgImRlYnVnIjogeworICAgICAgICAgICAgICAgICAgInZl
cnNpb24iOiAiMi4yLjAiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICAgICAib3B0aW9uYWwi
OiB0cnVlLAorICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAg
ICAgICAibXMiOiAiMC43LjEiCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICAiZGVlcC1leHRlbmQiOiB7CisgICAgICAgICAgICAgICAgICAi
dmVyc2lvbiI6ICIwLjQuMSIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRpb25h
bCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJkZWxheWVkLXN0
cmVhbSI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAg
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVl
CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZGVsZWdhdGVzIjogeworICAg
ICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
ICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICAiZWNjLWpzYm4iOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuMSIs
CisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAg
ICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgICAgICJqc2JuIjogIjAu
MS4wIgorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgImVzY2FwZS1zdHJpbmctcmVnZXhwIjogeworICAgICAgICAgICAgICAgICAgInZlcnNp
b24iOiAiMS4wLjUiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0
cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZXh0ZW5kIjogeworICAg
ICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMy4wLjAiLAorICAgICAgICAgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
ICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICAiZXh0c3ByaW50ZiI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4y
IiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAg
ICJkZXYiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZm9yZXZl
ci1hZ2VudCI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNi4xIiwKKyAgICAg
ICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgImZvcm0tZGF0YSI6IHsKKyAgICAgICAgICAgICAgICAgICJ2
ZXJzaW9uIjogIjEuMC4wLXJjNCIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRp
b25hbCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAg
ICAgICAgICAgICJhc3luYyI6ICIxLjUuMiIsCisgICAgICAgICAgICAgICAgICAgICJjb21iaW5l
ZC1zdHJlYW0iOiAiMS4wLjUiLAorICAgICAgICAgICAgICAgICAgICAibWltZS10eXBlcyI6ICIy
LjEuMTEiCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAiZnMucmVhbHBhdGgiOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIx
LjAuMCIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAg
ICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImZz
dHJlYW0iOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMTAiLAorICAgICAg
ICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgICAg
ICJncmFjZWZ1bC1mcyI6ICI0LjEuNCIsCisgICAgICAgICAgICAgICAgICAgICJpbmhlcml0cyI6
ICIyLjAuMSIsCisgICAgICAgICAgICAgICAgICAgICJta2RpcnAiOiAiMC41LjEiLAorICAgICAg
ICAgICAgICAgICAgICAicmltcmFmIjogIjIuNS4zIgorICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImZzdHJlYW0taWdub3JlIjogeworICAg
ICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjUiLAorICAgICAgICAgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
ICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAgICAgICAgICAgICAiZnN0cmVhbSI6ICIxLjAuMTAiLAorICAgICAgICAgICAg
ICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjEiLAorICAgICAgICAgICAgICAgICAgICAibWluaW1h
dGNoIjogIjMuMC4yIgorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgImdhdWdlIjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAi
Mi42LjAiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAg
ICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAor
ICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICAgICAiYXBy
b2JhIjogIjEuMC40IiwKKyAgICAgICAgICAgICAgICAgICAgImNvbnNvbGUtY29udHJvbC1zdHJp
bmdzIjogIjEuMS4wIiwKKyAgICAgICAgICAgICAgICAgICAgImhhcy1jb2xvciI6ICIwLjEuNyIs
CisgICAgICAgICAgICAgICAgICAgICJoYXMtdW5pY29kZSI6ICIyLjAuMSIsCisgICAgICAgICAg
ICAgICAgICAgICJvYmplY3QtYXNzaWduIjogIjQuMS4wIiwKKyAgICAgICAgICAgICAgICAgICAg
InNpZ25hbC1leGl0IjogIjMuMC4wIiwKKyAgICAgICAgICAgICAgICAgICAgInN0cmluZy13aWR0
aCI6ICIxLjAuMSIsCisgICAgICAgICAgICAgICAgICAgICJzdHJpcC1hbnNpIjogIjMuMC4xIiwK
KyAgICAgICAgICAgICAgICAgICAgIndpZGUtYWxpZ24iOiAiMS4xLjAiCisgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZ2VuZXJhdGUtZnVu
Y3Rpb24iOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAg
ICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgICJnZW5lcmF0ZS1vYmplY3QtcHJvcGVydHkiOiB7CisgICAgICAg
ICAgICAgICAgICAidmVyc2lvbiI6ICIxLjIuMCIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAg
ICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICAgICAgICAgICAgICJpcy1wcm9wZXJ0eSI6ICIxLjAuMiIKKyAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJnZXRwYXNzIjogewor
ICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjYiLAorICAgICAgICAgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAgICAgICAgICAgICAiYXNzZXJ0LXBsdXMiOiAiMS4wLjAiCisgICAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAg
ICAgICAgICAgICAgICAgImFzc2VydC1wbHVzIjogeworICAgICAgICAgICAgICAgICAgICAgICJ2
ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICAgICAg
ICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZ2xvYiI6IHsKKyAg
ICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjcuMC41IiwKKyAgICAgICAgICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICAgICAiZnMucmVhbHBhdGgi
OiAiMS4wLjAiLAorICAgICAgICAgICAgICAgICAgICAiaW5mbGlnaHQiOiAiMS4wLjUiLAorICAg
ICAgICAgICAgICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjEiLAorICAgICAgICAgICAgICAgICAg
ICAibWluaW1hdGNoIjogIjMuMC4yIiwKKyAgICAgICAgICAgICAgICAgICAgIm9uY2UiOiAiMS4z
LjMiLAorICAgICAgICAgICAgICAgICAgICAicGF0aC1pcy1hYnNvbHV0ZSI6ICIxLjAuMCIKKyAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJn
cmFjZWZ1bC1mcyI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjQuMS40IiwKKyAg
ICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYi
OiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZ3JhY2VmdWwtcmVh
ZGxpbmsiOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAgICAg
ICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgICJoYXItdmFsaWRhdG9yIjogeworICAgICAgICAgICAgICAgICAg
InZlcnNpb24iOiAiMi4wLjYiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICAgICAib3B0aW9u
YWwiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAg
ICAgICAgICAiY2hhbGsiOiAiMS4xLjMiLAorICAgICAgICAgICAgICAgICAgICAiY29tbWFuZGVy
IjogIjIuOS4wIiwKKyAgICAgICAgICAgICAgICAgICAgImlzLW15LWpzb24tdmFsaWQiOiAiMi4x
My4xIiwKKyAgICAgICAgICAgICAgICAgICAgInBpbmtpZS1wcm9taXNlIjogIjIuMC4xIgorICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImhh
cy1hbnNpIjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAg
ICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICAgICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICAgICAiYW5zaS1yZWdleCI6ICIyLjAu
MCIKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgICJoYXMtY29sb3IiOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuNyIs
CisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgICJoYXMtdW5pY29kZSI6IHsKKyAgICAgICAgICAg
ICAgICAgICJ2ZXJzaW9uIjogIjIuMC4xIiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAg
Im9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImhh
d2siOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIzLjEuMyIsCisgICAgICAgICAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgICAgICJib29tIjogIjIuMTAuMSIsCisgICAg
ICAgICAgICAgICAgICAgICJjcnlwdGlsZXMiOiAiMi4wLjUiLAorICAgICAgICAgICAgICAgICAg
ICAiaG9layI6ICIyLjE2LjMiLAorICAgICAgICAgICAgICAgICAgICAic250cCI6ICIxLjAuOSIK
KyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
ICJob2VrIjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMi4xNi4zIiwKKyAgICAg
ICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0
cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiaHR0cC1zaWduYXR1cmUi
OiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMSIsCisgICAgICAgICAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhc3NlcnQtcGx1cyI6ICIwLjIuMCIsCisg
ICAgICAgICAgICAgICAgICAgICJqc3ByaW0iOiAiMS4zLjAiLAorICAgICAgICAgICAgICAgICAg
ICAic3NocGsiOiAiMS44LjMiCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICAiaW5mbGlnaHQiOiB7CisgICAgICAgICAgICAgICAgICAidmVy
c2lvbiI6ICIxLjAuNSIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgICAgICAgICAgICAgIm9uY2UiOiAiMS4zLjMiLAorICAgICAgICAgICAgICAg
ICAgICAid3JhcHB5IjogIjEuMC4yIgorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgImluaGVyaXRzIjogeworICAgICAgICAgICAgICAgICAg
InZlcnNpb24iOiAiMi4wLjEiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgICJpbmkiOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjMuNCIs
CisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgICJpcy1mdWxsd2lkdGgtY29kZS1wb2ludCI6IHsK
KyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
ICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICAgICAibnVtYmVyLWlz
LW5hbiI6ICIxLjAuMCIKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgICJpcy1teS1qc29uLXZhbGlkIjogeworICAgICAgICAgICAgICAgICAg
InZlcnNpb24iOiAiMi4xMy4xIiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgIm9wdGlv
bmFsIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAg
ICAgICAgICAgImdlbmVyYXRlLWZ1bmN0aW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAgICAgICAg
ICAgImdlbmVyYXRlLW9iamVjdC1wcm9wZXJ0eSI6ICIxLjIuMCIsCisgICAgICAgICAgICAgICAg
ICAgICJqc29ucG9pbnRlciI6ICIyLjAuMCIsCisgICAgICAgICAgICAgICAgICAgICJ4dGVuZCI6
ICI0LjAuMSIKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgICJpcy1wcm9wZXJ0eSI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjog
IjEuMC4yIiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAg
ICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQor
ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImlzLXR5cGVkYXJyYXkiOiB7Cisg
ICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgICJpc2FycmF5IjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAi
LAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAg
ImRldiI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJpc3N0cmVh
bSI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS4yIiwKKyAgICAgICAgICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAor
ICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgImpvZGlkMjU1MTkiOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lv
biI6ICIxLjAuMiIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRy
dWUsCisgICAgICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgICAg
ICJqc2JuIjogIjAuMS4wIgorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgImpzYm4iOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6
ICIwLjEuMCIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUK
KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJqc29uLXNjaGVtYSI6IHsKKyAg
ICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4yIiwKKyAgICAgICAgICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgImpzb24tc3RyaW5naWZ5LXNhZmUiOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lv
biI6ICI1LjAuMSIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRy
dWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJqc29ucG9pbnRlciI6IHsK
KyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
ICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAgICAgImpzcHJpbSI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMy4w
IiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAg
ICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImV4dHNwcmlu
dGYiOiAiMS4wLjIiLAorICAgICAgICAgICAgICAgICAgICAianNvbi1zY2hlbWEiOiAiMC4yLjIi
LAorICAgICAgICAgICAgICAgICAgICAidmVycm9yIjogIjEuMy42IgorICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIm1pbWUtZGIiOiB7Cisg
ICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjIzLjAiLAorICAgICAgICAgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgICJtaW1lLXR5cGVzIjogeworICAgICAgICAgICAg
ICAgICAgInZlcnNpb24iOiAiMi4xLjExIiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICAgICAibWltZS1kYiI6ICIxLjIzLjAiCisg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAi
bWluaW1hdGNoIjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMy4wLjIiLAorICAg
ICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6
IHRydWUsCisgICAgICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAg
ICAgICJicmFjZS1leHBhbnNpb24iOiAiMS4xLjUiCisgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAibWluaW1pc3QiOiB7CisgICAgICAgICAg
ICAgICAgICAidmVyc2lvbiI6ICIwLjAuOCIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgIm1rZGlycCI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9u
IjogIjAuNS4xIiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAgICAgICAgICAgICAibWluaW1pc3QiOiAiMC4wLjgiCisgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAibXMiOiB7CisgICAgICAg
ICAgICAgICAgICAidmVyc2lvbiI6ICIwLjcuMSIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAg
ICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
ICJub2RlLXByZS1neXAiOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjYuMjki
LAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAg
ICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICAgICAibWtkaXJwIjog
IjAuNS4xIiwKKyAgICAgICAgICAgICAgICAgICAgIm5vcHQiOiAiMy4wLjYiLAorICAgICAgICAg
ICAgICAgICAgICAibnBtbG9nIjogIjMuMS4yIiwKKyAgICAgICAgICAgICAgICAgICAgInJjIjog
IjEuMS42IiwKKyAgICAgICAgICAgICAgICAgICAgInJlcXVlc3QiOiAiMi43My4wIiwKKyAgICAg
ICAgICAgICAgICAgICAgInJpbXJhZiI6ICIyLjUuMyIsCisgICAgICAgICAgICAgICAgICAgICJz
ZW12ZXIiOiAiNS4yLjAiLAorICAgICAgICAgICAgICAgICAgICAidGFyIjogIjIuMi4xIiwKKyAg
ICAgICAgICAgICAgICAgICAgInRhci1wYWNrIjogIjMuMS40IgorICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIm5vZGUtdXVpZCI6IHsKKyAg
ICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuNC43IiwKKyAgICAgICAgICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgIm5vcHQiOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIzLjAuNiIsCisg
ICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAg
ICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhYmJyZXYiOiAiMS4w
LjkiCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICAibnBtbG9nIjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMy4xLjIiLAor
ICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAg
ICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICAgICAiYXJlLXdlLXRoZXJl
LXlldCI6ICIxLjEuMiIsCisgICAgICAgICAgICAgICAgICAgICJjb25zb2xlLWNvbnRyb2wtc3Ry
aW5ncyI6ICIxLjEuMCIsCisgICAgICAgICAgICAgICAgICAgICJnYXVnZSI6ICIyLjYuMCIsCisg
ICAgICAgICAgICAgICAgICAgICJzZXQtYmxvY2tpbmciOiAiMi4wLjAiCisgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAibnVtYmVyLWlzLW5h
biI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAib2F1dGgtc2lnbiI6IHsKKyAgICAg
ICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuOC4yIiwKKyAgICAgICAgICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAg
ICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgIm9iamVjdC1hc3NpZ24iOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICI0LjEu
MCIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJvbmNlIjogeworICAgICAgICAgICAgICAg
ICAgInZlcnNpb24iOiAiMS4zLjMiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICAgICAgICAgICAgICJ3cmFwcHkiOiAiMS4wLjIiCisgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAicGF0aC1p
cy1hYnNvbHV0ZSI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAg
ICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYi
OiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAicGlua2llIjogewor
ICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjQiLAorICAgICAgICAgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAicGlua2llLXByb21pc2UiOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6
ICIyLjAuMSIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUs
CisgICAgICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgICAgICJw
aW5raWUiOiAiMi4wLjQiCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICAgICAicHJvY2Vzcy1uZXh0aWNrLWFyZ3MiOiB7CisgICAgICAgICAgICAg
ICAgICAidmVyc2lvbiI6ICIxLjAuNyIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgInFzIjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiNi4y
LjAiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAicmMiOiB7CisgICAgICAgICAgICAgICAg
ICAidmVyc2lvbiI6ICIxLjEuNiIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRp
b25hbCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAg
ICAgICAgICAgICJkZWVwLWV4dGVuZCI6ICIwLjQuMSIsCisgICAgICAgICAgICAgICAgICAgICJp
bmkiOiAiMS4zLjQiLAorICAgICAgICAgICAgICAgICAgICAibWluaW1pc3QiOiAiMS4yLjAiLAor
ICAgICAgICAgICAgICAgICAgICAic3RyaXAtanNvbi1jb21tZW50cyI6ICIxLjAuNCIKKyAgICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAg
ICAgICAgICAgICAgICAgICAibWluaW1pc3QiOiB7CisgICAgICAgICAgICAgICAgICAgICAgInZl
cnNpb24iOiAiMS4yLjAiLAorICAgICAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJyZWFkYWJsZS1zdHJl
YW0iOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyLjEuNCIsCisgICAgICAgICAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImJ1
ZmZlci1zaGltcyI6ICIxLjAuMCIsCisgICAgICAgICAgICAgICAgICAgICJjb3JlLXV0aWwtaXMi
OiAiMS4wLjIiLAorICAgICAgICAgICAgICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjEiLAorICAg
ICAgICAgICAgICAgICAgICAiaXNhcnJheSI6ICIxLjAuMCIsCisgICAgICAgICAgICAgICAgICAg
ICJwcm9jZXNzLW5leHRpY2stYXJncyI6ICIxLjAuNyIsCisgICAgICAgICAgICAgICAgICAgICJz
dHJpbmdfZGVjb2RlciI6ICIwLjEwLjMxIiwKKyAgICAgICAgICAgICAgICAgICAgInV0aWwtZGVw
cmVjYXRlIjogIjEuMC4yIgorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgInJlcXVlc3QiOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lv
biI6ICIyLjczLjAiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0
cnVlLAorICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICAg
ICAiYXdzLXNpZ24yIjogIjAuNi4wIiwKKyAgICAgICAgICAgICAgICAgICAgImF3czQiOiAiMS40
LjEiLAorICAgICAgICAgICAgICAgICAgICAiYmwiOiAiMS4xLjIiLAorICAgICAgICAgICAgICAg
ICAgICAiY2FzZWxlc3MiOiAiMC4xMS4wIiwKKyAgICAgICAgICAgICAgICAgICAgImNvbWJpbmVk
LXN0cmVhbSI6ICIxLjAuNSIsCisgICAgICAgICAgICAgICAgICAgICJleHRlbmQiOiAiMy4wLjAi
LAorICAgICAgICAgICAgICAgICAgICAiZm9yZXZlci1hZ2VudCI6ICIwLjYuMSIsCisgICAgICAg
ICAgICAgICAgICAgICJmb3JtLWRhdGEiOiAiMS4wLjAtcmM0IiwKKyAgICAgICAgICAgICAgICAg
ICAgImhhci12YWxpZGF0b3IiOiAiMi4wLjYiLAorICAgICAgICAgICAgICAgICAgICAiaGF3ayI6
ICIzLjEuMyIsCisgICAgICAgICAgICAgICAgICAgICJodHRwLXNpZ25hdHVyZSI6ICIxLjEuMSIs
CisgICAgICAgICAgICAgICAgICAgICJpcy10eXBlZGFycmF5IjogIjEuMC4wIiwKKyAgICAgICAg
ICAgICAgICAgICAgImlzc3RyZWFtIjogIjAuMS4yIiwKKyAgICAgICAgICAgICAgICAgICAgImpz
b24tc3RyaW5naWZ5LXNhZmUiOiAiNS4wLjEiLAorICAgICAgICAgICAgICAgICAgICAibWltZS10
eXBlcyI6ICIyLjEuMTEiLAorICAgICAgICAgICAgICAgICAgICAibm9kZS11dWlkIjogIjEuNC43
IiwKKyAgICAgICAgICAgICAgICAgICAgIm9hdXRoLXNpZ24iOiAiMC44LjIiLAorICAgICAgICAg
ICAgICAgICAgICAicXMiOiAiNi4yLjAiLAorICAgICAgICAgICAgICAgICAgICAic3RyaW5nc3Ry
ZWFtIjogIjAuMC41IiwKKyAgICAgICAgICAgICAgICAgICAgInRvdWdoLWNvb2tpZSI6ICIyLjIu
MiIsCisgICAgICAgICAgICAgICAgICAgICJ0dW5uZWwtYWdlbnQiOiAiMC40LjMiCisgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAicmltcmFm
IjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMi41LjMiLAorICAgICAgICAgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisg
ICAgICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgICAgICJnbG9i
IjogIjcuMC41IgorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAgICAgInNlbXZlciI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjUu
Mi4wIiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInNldC1ibG9ja2luZyI6IHsKKyAgICAg
ICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAg
ICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgInNpZ25hbC1leGl0IjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMy4wLjAi
LAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAic250cCI6IHsKKyAgICAgICAgICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuMC45IiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgIm9wdGlv
bmFsIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAg
ICAgICAgICAgImhvZWsiOiAiMi4xNi4zIgorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgInNzaHBrIjogeworICAgICAgICAgICAgICAgICAg
InZlcnNpb24iOiAiMS44LjMiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICAgICAib3B0aW9u
YWwiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAg
ICAgICAgICAiYXNuMSI6ICIwLjIuMyIsCisgICAgICAgICAgICAgICAgICAgICJhc3NlcnQtcGx1
cyI6ICIxLjAuMCIsCisgICAgICAgICAgICAgICAgICAgICJkYXNoZGFzaCI6ICIxLjE0LjAiLAor
ICAgICAgICAgICAgICAgICAgICAiZWNjLWpzYm4iOiAiMC4xLjEiLAorICAgICAgICAgICAgICAg
ICAgICAiZ2V0cGFzcyI6ICIwLjEuNiIsCisgICAgICAgICAgICAgICAgICAgICJqb2RpZDI1NTE5
IjogIjEuMC4yIiwKKyAgICAgICAgICAgICAgICAgICAgImpzYm4iOiAiMC4xLjAiLAorICAgICAg
ICAgICAgICAgICAgICAidHdlZXRuYWNsIjogIjAuMTMuMyIKKyAgICAgICAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAgICAgICAgICAg
ICAiYXNzZXJ0LXBsdXMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4w
LjAiLAorICAgICAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAib3B0aW9uYWwi
OiB0cnVlCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJzdHJpbmdfZGVjb2RlciI6IHsKKyAgICAg
ICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMTAuMzEiLAorICAgICAgICAgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgICJzdHJpbmctd2lkdGgiOiB7CisgICAgICAgICAgICAg
ICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJy
ZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImNvZGUtcG9pbnQtYXQiOiAiMS4wLjAi
LAorICAgICAgICAgICAgICAgICAgICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiAiMS4wLjAi
LAorICAgICAgICAgICAgICAgICAgICAic3RyaXAtYW5zaSI6ICIzLjAuMSIKKyAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJzdHJpbmdzdHJl
YW0iOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjAuNSIsCisgICAgICAgICAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgICJzdHJpcC1hbnNpIjogeworICAgICAgICAgICAgICAgICAgInZlcnNp
b24iOiAiMy4wLjEiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7
CisgICAgICAgICAgICAgICAgICAgICJhbnNpLXJlZ2V4IjogIjIuMC4wIgorICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInN0cmlwLWpzb24t
Y29tbWVudHMiOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuNCIsCisgICAg
ICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgICJzdXBwb3J0cy1jb2xvciI6IHsKKyAgICAgICAgICAgICAg
ICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgIm9w
dGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInRhciI6
IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMi4xIiwKKyAgICAgICAgICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICAgICAiYmxvY2st
c3RyZWFtIjogIjAuMC45IiwKKyAgICAgICAgICAgICAgICAgICAgImZzdHJlYW0iOiAiMS4wLjEw
IiwKKyAgICAgICAgICAgICAgICAgICAgImluaGVyaXRzIjogIjIuMC4xIgorICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInRhci1wYWNrIjog
eworICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMy4xLjQiLAorICAgICAgICAgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAgICAgICAgICAgICAiZGVidWciOiAiMi4yLjAiLAorICAgICAgICAg
ICAgICAgICAgICAiZnN0cmVhbSI6ICIxLjAuMTAiLAorICAgICAgICAgICAgICAgICAgICAiZnN0
cmVhbS1pZ25vcmUiOiAiMS4wLjUiLAorICAgICAgICAgICAgICAgICAgICAib25jZSI6ICIxLjMu
MyIsCisgICAgICAgICAgICAgICAgICAgICJyZWFkYWJsZS1zdHJlYW0iOiAiMi4xLjQiLAorICAg
ICAgICAgICAgICAgICAgICAicmltcmFmIjogIjIuNS4zIiwKKyAgICAgICAgICAgICAgICAgICAg
InRhciI6ICIyLjIuMSIsCisgICAgICAgICAgICAgICAgICAgICJ1aWQtbnVtYmVyIjogIjAuMC42
IgorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgInRvdWdoLWNvb2tpZSI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMi4y
IiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInR1bm5lbC1hZ2VudCI6IHsKKyAgICAgICAg
ICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNC4zIiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAg
ICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
InR3ZWV0bmFjbCI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMTMuMyIsCisg
ICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgICJ1aWQtbnVtYmVyIjogeworICAgICAgICAgICAgICAg
ICAgInZlcnNpb24iOiAiMC4wLjYiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICAgICAib3B0
aW9uYWwiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAidXRpbC1k
ZXByZWNhdGUiOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAg
ICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2Ijog
dHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInZlcnJvciI6IHsKKyAg
ICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMy42IiwKKyAgICAgICAgICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgICAgICAgICAgICAgImV4dHNwcmludGYiOiAiMS4wLjIiCisgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAid2lkZS1hbGln
biI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4wIiwKKyAgICAgICAgICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAor
ICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJy
ZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgInN0cmluZy13aWR0aCI6ICIxLjAuMSIK
KyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
ICJ3cmFwcHkiOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAg
ICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2Ijog
dHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInh0ZW5kIjogeworICAg
ICAgICAgICAgICAgICAgInZlcnNpb24iOiAiNC4wLjEiLAorICAgICAgICAgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
ICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiY2ly
Y3VsYXItanNvbiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjMuMSIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAg
ICAgICJjbGFwIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4xIiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAgICAgImNoYWxrIjogIjEuMS4zIgorICAgICAgICAgIH0KKyAgICAg
ICAgfSwKKyAgICAgICAgImNsZWFuLWNzcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjQu
MjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiY29tbWFuZGVyIjogIjIuOC4x
IiwKKyAgICAgICAgICAgICJzb3VyY2UtbWFwIjogIjAuNC40IgorICAgICAgICAgIH0sCisgICAg
ICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgICAgICJzb3VyY2UtbWFwIjogeworICAg
ICAgICAgICAgICAidmVyc2lvbiI6ICIwLjQuNCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgICAgICAgICAiYW1kZWZpbmUiOiAiMS4wLjAiCisgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJjbGkt
Y3Vyc29yIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAgICAgInJlc3RvcmUtY3Vyc29yIjogIjEuMC4xIgorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgImNsaS10YWJsZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIwLjMuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJjb2xvcnMiOiAiMS4w
LjMiCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAg
ICAgImNvbG9ycyI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjMiLAorICAgICAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAg
ICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiY2xpLXVzYWdlIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS40IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAgICAgIm1hcmtlZCI6ICIwLjMuNiIsCisgICAgICAgICAgICAibWFya2VkLXRlcm1pbmFs
IjogIjEuNi4yIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImNsaS13aWR0aCI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjEuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJjbGl1aSI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjEuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgICAgICJjZW50ZXItYWxpZ24iOiAiMC4xLjMiLAorICAgICAgICAgICAgInJpZ2h0LWFs
aWduIjogIjAuMS4zIiwKKyAgICAgICAgICAgICJ3b3Jkd3JhcCI6ICIwLjAuMiIKKyAgICAgICAg
ICB9LAorICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICAgICAid29yZHdyYXAi
OiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC4yIiwKKyAgICAgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfQor
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImNsb25lIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImNvIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjQuNi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImNvYSI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIxLjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJxIjogIjEuNC4x
IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImNvZGUtcG9pbnQtYXQiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICAgICAibnVtYmVyLWlzLW5hbiI6ICIxLjAuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisg
ICAgICAgICJjb2xvciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjExLjMiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiY2xvbmUiOiAiMS4wLjIiLAorICAgICAgICAgICAg
ImNvbG9yLWNvbnZlcnQiOiAiMS41LjAiLAorICAgICAgICAgICAgImNvbG9yLXN0cmluZyI6ICIw
LjMuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJjb2xvci1jb252ZXJ0Ijog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuNS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImNvbG9yLW5h
bWUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjEiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiY29s
b3Itc3RyaW5nIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMy4wIiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAgICAgImNvbG9yLW5hbWUiOiAiMS4xLjEiCisgICAgICAgICAgfQor
ICAgICAgICB9LAorICAgICAgICAiY29sb3JtaW4iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
MS4xLjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiY29sb3IiOiAiMC4xMS4z
IiwKKyAgICAgICAgICAgICJjc3MtY29sb3ItbmFtZXMiOiAiMC4wLjQiLAorICAgICAgICAgICAg
ImhhcyI6ICIxLjAuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJjb2xvcnMi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjIiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiY29tYmlu
ZWQtc3RyZWFtIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC41IiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAgICAgImRlbGF5ZWQtc3RyZWFtIjogIjEuMC4wIgorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgImNvbW1hbmRlciI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIyLjguMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJncmFjZWZ1bC1y
ZWFkbGluayI6ICIxLjAuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJjb21t
b25kaXIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAi
Y29tcHJlc3NpYmxlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC44IiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAgICAgIm1pbWUtZGIiOiAiMS4yNC4wIgorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgImNvbXByZXNzaW9uIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuNi4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImFjY2VwdHMiOiAi
MS4zLjMiLAorICAgICAgICAgICAgImJ5dGVzIjogIjIuMy4wIiwKKyAgICAgICAgICAgICJjb21w
cmVzc2libGUiOiAiMi4wLjgiLAorICAgICAgICAgICAgImRlYnVnIjogIjIuMi4wIiwKKyAgICAg
ICAgICAgICJvbi1oZWFkZXJzIjogIjEuMC4xIiwKKyAgICAgICAgICAgICJ2YXJ5IjogIjEuMS4w
IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImNvbmNhdC1tYXAiOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMC4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiY29uY2F0LXN0cmVhbSI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjUuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgICAgICJpbmhlcml0cyI6ICIyLjAuMyIsCisgICAgICAgICAgICAicmVhZGFibGUtc3Ry
ZWFtIjogIjIuMC42IiwKKyAgICAgICAgICAgICJ0eXBlZGFycmF5IjogIjAuMC42IgorICAgICAg
ICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImNvbm5lY3QtaGlzdG9yeS1hcGktZmFsbGJhY2si
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4zLjAiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiY29uc29s
ZS1icm93c2VyaWZ5IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4wIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAgICAgImRhdGUtbm93IjogIjAuMS40IgorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgImNvbnN0YW50LWNhc2UiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMi4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAic25ha2UtY2Fz
ZSI6ICIyLjEuMCIsCisgICAgICAgICAgICAidXBwZXItY2FzZSI6ICIxLjEuMyIKKyAgICAgICAg
ICB9CisgICAgICAgIH0sCisgICAgICAgICJjb25zdGFudHMtYnJvd3NlcmlmeSI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIwLjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJjb250YWlucy1wYXRoIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImNvbnRlbnQt
ZGlzcG9zaXRpb24iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC41LjEiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAg
ICAgICAiY29udGVudC10eXBlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAg
fSwKKyAgICAgICAgImNvbnZlcnQtc291cmNlLW1hcCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIxLjMuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlCisgICAgICAgIH0sCisgICAgICAgICJjb29raWUiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMC4zLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZQorICAgICAgICB9LAorICAgICAgICAiY29va2llLXNpZ25hdHVyZSI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIxLjAuNiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJjb3JlLWpzIjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjIuNC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImNvcmUtdXRpbC1pcyI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJjcm9zcy1zcGF3
biI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI0LjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgICAgICJscnUtY2FjaGUiOiAiNC4wLjEiLAorICAgICAgICAgICAgIndoaWNoIjog
IjEuMi4xMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJjcnlwdGlsZXMiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjUiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICAgICAiYm9vbSI6ICIyLjEwLjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg
ICAiY3J5cHRvLWJyb3dzZXJpZnkiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4yLjgiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAicGJrZGYyLWNvbXBhdCI6ICIyLjAuMSIs
CisgICAgICAgICAgICAicmlwZW1kMTYwIjogIjAuMi4wIiwKKyAgICAgICAgICAgICJzaGEuanMi
OiAiMi4yLjYiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiY3NzLWNvbG9yLW5h
bWVzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC40IiwKKyAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImNz
cy1sb2FkZXIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4yNC4wIiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAgICAgImJhYmVsLWNvZGUtZnJhbWUiOiAiNi4xMS4wIiwKKyAgICAg
ICAgICAgICJjc3Mtc2VsZWN0b3ItdG9rZW5pemVyIjogIjAuNi4wIiwKKyAgICAgICAgICAgICJj
c3NuYW5vIjogIjMuNy41IiwKKyAgICAgICAgICAgICJsb2FkZXItdXRpbHMiOiAiMC4yLjE2IiwK
KyAgICAgICAgICAgICJsb2Rhc2guY2FtZWxjYXNlIjogIjMuMC4xIiwKKyAgICAgICAgICAgICJv
YmplY3QtYXNzaWduIjogIjQuMS4wIiwKKyAgICAgICAgICAgICJwb3N0Y3NzIjogIjUuMi4yIiwK
KyAgICAgICAgICAgICJwb3N0Y3NzLW1vZHVsZXMtZXh0cmFjdC1pbXBvcnRzIjogIjEuMC4xIiwK
KyAgICAgICAgICAgICJwb3N0Y3NzLW1vZHVsZXMtbG9jYWwtYnktZGVmYXVsdCI6ICIxLjEuMSIs
CisgICAgICAgICAgICAicG9zdGNzcy1tb2R1bGVzLXNjb3BlIjogIjEuMC4yIiwKKyAgICAgICAg
ICAgICJwb3N0Y3NzLW1vZHVsZXMtdmFsdWVzIjogIjEuMi4yIiwKKyAgICAgICAgICAgICJzb3Vy
Y2UtbGlzdC1tYXAiOiAiMC4xLjYiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAi
Y3NzLXNlbGVjdCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjIuMCIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICJib29sYmFzZSI6ICIxLjAuMCIsCisgICAgICAgICAgICAi
Y3NzLXdoYXQiOiAiMi4xLjAiLAorICAgICAgICAgICAgImRvbXV0aWxzIjogIjEuNS4xIiwKKyAg
ICAgICAgICAgICJudGgtY2hlY2siOiAiMS4wLjEiCisgICAgICAgICAgfQorICAgICAgICB9LAor
ICAgICAgICAiY3NzLXNlbGVjdG9yLXRva2VuaXplciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIwLjYuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJjc3Nlc2MiOiAiMC4x
LjAiLAorICAgICAgICAgICAgImZhc3RwYXJzZSI6ICIxLjEuMSIsCisgICAgICAgICAgICAicmVn
ZXhwdS1jb3JlIjogIjEuMC4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImNz
cy13aGF0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMS4wIiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAg
ImNzc2VzYyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuMCIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAg
ICJjc3NuYW5vIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuNy41IiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAgICAgImF1dG9wcmVmaXhlciI6ICI2LjQuMSIsCisgICAgICAgICAg
ICAiZGVjYW1lbGl6ZSI6ICIxLjIuMCIsCisgICAgICAgICAgICAiZGVmaW5lZCI6ICIxLjAuMCIs
CisgICAgICAgICAgICAiaGFzIjogIjEuMC4xIiwKKyAgICAgICAgICAgICJvYmplY3QtYXNzaWdu
IjogIjQuMS4wIiwKKyAgICAgICAgICAgICJwb3N0Y3NzIjogIjUuMi4yIiwKKyAgICAgICAgICAg
ICJwb3N0Y3NzLWNhbGMiOiAiNS4zLjEiLAorICAgICAgICAgICAgInBvc3Rjc3MtY29sb3JtaW4i
OiAiMi4yLjEiLAorICAgICAgICAgICAgInBvc3Rjc3MtY29udmVydC12YWx1ZXMiOiAiMi40LjAi
LAorICAgICAgICAgICAgInBvc3Rjc3MtZGlzY2FyZC1jb21tZW50cyI6ICIyLjAuNCIsCisgICAg
ICAgICAgICAicG9zdGNzcy1kaXNjYXJkLWR1cGxpY2F0ZXMiOiAiMi4wLjEiLAorICAgICAgICAg
ICAgInBvc3Rjc3MtZGlzY2FyZC1lbXB0eSI6ICIyLjEuMCIsCisgICAgICAgICAgICAicG9zdGNz
cy1kaXNjYXJkLW92ZXJyaWRkZW4iOiAiMC4xLjEiLAorICAgICAgICAgICAgInBvc3Rjc3MtZGlz
Y2FyZC11bnVzZWQiOiAiMi4yLjEiLAorICAgICAgICAgICAgInBvc3Rjc3MtZmlsdGVyLXBsdWdp
bnMiOiAiMi4wLjEiLAorICAgICAgICAgICAgInBvc3Rjc3MtbWVyZ2UtaWRlbnRzIjogIjIuMS43
IiwKKyAgICAgICAgICAgICJwb3N0Y3NzLW1lcmdlLWxvbmdoYW5kIjogIjIuMC4xIiwKKyAgICAg
ICAgICAgICJwb3N0Y3NzLW1lcmdlLXJ1bGVzIjogIjIuMC4xMCIsCisgICAgICAgICAgICAicG9z
dGNzcy1taW5pZnktZm9udC12YWx1ZXMiOiAiMS4wLjUiLAorICAgICAgICAgICAgInBvc3Rjc3Mt
bWluaWZ5LWdyYWRpZW50cyI6ICIxLjAuMyIsCisgICAgICAgICAgICAicG9zdGNzcy1taW5pZnkt
cGFyYW1zIjogIjEuMC41IiwKKyAgICAgICAgICAgICJwb3N0Y3NzLW1pbmlmeS1zZWxlY3RvcnMi
OiAiMi4wLjUiLAorICAgICAgICAgICAgInBvc3Rjc3Mtbm9ybWFsaXplLWNoYXJzZXQiOiAiMS4x
LjAiLAorICAgICAgICAgICAgInBvc3Rjc3Mtbm9ybWFsaXplLXVybCI6ICIzLjAuNyIsCisgICAg
ICAgICAgICAicG9zdGNzcy1vcmRlcmVkLXZhbHVlcyI6ICIyLjIuMiIsCisgICAgICAgICAgICAi
cG9zdGNzcy1yZWR1Y2UtaWRlbnRzIjogIjIuMy4wIiwKKyAgICAgICAgICAgICJwb3N0Y3NzLXJl
ZHVjZS1pbml0aWFsIjogIjEuMC4wIiwKKyAgICAgICAgICAgICJwb3N0Y3NzLXJlZHVjZS10cmFu
c2Zvcm1zIjogIjEuMC4zIiwKKyAgICAgICAgICAgICJwb3N0Y3NzLXN2Z28iOiAiMi4xLjUiLAor
ICAgICAgICAgICAgInBvc3Rjc3MtdW5pcXVlLXNlbGVjdG9ycyI6ICIyLjAuMiIsCisgICAgICAg
ICAgICAicG9zdGNzcy12YWx1ZS1wYXJzZXIiOiAiMy4zLjAiLAorICAgICAgICAgICAgInBvc3Rj
c3MtemluZGV4IjogIjIuMS4xIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImNz
c28iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4yLjEiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7
CisgICAgICAgICAgICAiY2xhcCI6ICIxLjEuMSIsCisgICAgICAgICAgICAic291cmNlLW1hcCI6
ICIwLjUuNiIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJjc3NvbSI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIwLjMuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJjc3NzdHlsZSI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIwLjIuMzciLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICAgICAiY3Nzb20iOiAiMC4zLjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg
ICAiZCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuMSIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgICAgICJlczUtZXh0IjogIjAuMTAuMTIiCisgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgICAiZGFtZXJhdS1sZXZlbnNodGVpbiI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIxLjAuMyIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJkYXNoZGFzaCI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIxLjE0LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYXNzZXJ0
LXBsdXMiOiAiMS4wLjAiCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjog
eworICAgICAgICAgICAgImFzc2VydC1wbHVzIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6
ICIxLjAuMCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAg
ImRldiI6IHRydWUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAg
ICAgICJkYXRlLW5vdyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuNCIsCisgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisg
ICAgICAgICJkZWJ1ZyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjIuMCIsCisgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJy
ZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJtcyI6ICIwLjcuMSIKKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJkZWNhbWVsaXplIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
Mi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUK
KyAgICAgICAgfSwKKyAgICAgICAgImRlZXAtaXMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
MC4xLjMiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZQorICAgICAgICB9LAorICAgICAgICAiZGVmaW5lZCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIxLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlCisgICAgICAgIH0sCisgICAgICAgICJkZWwiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
Mi4yLjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiZ2xvYmJ5IjogIjUuMC4w
IiwKKyAgICAgICAgICAgICJpcy1wYXRoLWN3ZCI6ICIxLjAuMCIsCisgICAgICAgICAgICAiaXMt
cGF0aC1pbi1jd2QiOiAiMS4wLjAiLAorICAgICAgICAgICAgIm9iamVjdC1hc3NpZ24iOiAiNC4x
LjAiLAorICAgICAgICAgICAgInBpZnkiOiAiMi4zLjAiLAorICAgICAgICAgICAgInBpbmtpZS1w
cm9taXNlIjogIjIuMC4xIiwKKyAgICAgICAgICAgICJyaW1yYWYiOiAiMi41LjQiCisgICAgICAg
ICAgfQorICAgICAgICB9LAorICAgICAgICAiZGVsYXllZC1zdHJlYW0iOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZGVwZCI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjEuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJkZXN0cm95IjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuMC40IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImRldGVjdC1pbmRlbnQiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMy4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICAgICAiZ2V0LXN0ZGluIjogIjQuMC4xIiwKKyAgICAgICAgICAgICJtaW5pbWlzdCI6ICIxLjIu
MCIsCisgICAgICAgICAgICAicmVwZWF0aW5nIjogIjEuMS4zIgorICAgICAgICAgIH0KKyAgICAg
ICAgfSwKKyAgICAgICAgImRldGVjdC1wb3J0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
MC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImNvbW1hbmRlciI6ICIyLjgu
MSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJkaWZmIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjMuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImRvY3RyaW5lIjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuNC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAg
ImVzdXRpbHMiOiAiMi4wLjIiLAorICAgICAgICAgICAgImlzYXJyYXkiOiAiMS4wLjAiCisgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZG9tLWNvbnZlcnRlciI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIwLjEuNCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJ1
dGlsYSI6ICIwLjMuMyIKKyAgICAgICAgICB9LAorICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7
CisgICAgICAgICAgICAidXRpbGEiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMy4z
IiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2Ijog
dHJ1ZQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImRv
bS1zZXJpYWxpemVyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS4wIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAgICAgImRvbWVsZW1lbnR0eXBlIjogIjEuMS4zIiwKKyAgICAg
ICAgICAgICJlbnRpdGllcyI6ICIxLjEuMSIKKyAgICAgICAgICB9LAorICAgICAgICAgICJkZXBl
bmRlbmNpZXMiOiB7CisgICAgICAgICAgICAiZG9tZWxlbWVudHR5cGUiOiB7CisgICAgICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuMS4zIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAg
ICAgICAgfSwKKyAgICAgICAgImRvbWFpbi1icm93c2VyIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuMS43IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImRvbWVsZW1lbnR0eXBlIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuMy4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImRvbWhhbmRsZXIiOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMi4xLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAg
ICAiZG9tZWxlbWVudHR5cGUiOiAiMS4zLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAiZG9tdXRpbHMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS41LjEiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiZG9tLXNlcmlhbGl6ZXIiOiAiMC4xLjAiLAorICAg
ICAgICAgICAgImRvbWVsZW1lbnR0eXBlIjogIjEuMy4wIgorICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgImRvdC1jYXNlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMS4wIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgIm5vLWNhc2UiOiAiMi4zLjAiCisgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZG90ZW52IjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImR1cGxleGVyIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjAuMS4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImVjYy1qc2JuIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjAuMS4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICAgICAianNibiI6ICIwLjEuMCIKKyAgICAgICAgICB9Cisg
ICAgICAgIH0sCisgICAgICAgICJlZS1maXJzdCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIx
LjEuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
CisgICAgICAgIH0sCisgICAgICAgICJlbW9qaXMtbGlzdCI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIyLjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJlbmNvZGV1cmwiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMS4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZW5oYW5jZWQtcmVzb2x2ZSI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIwLjkuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
ICAgICJncmFjZWZ1bC1mcyI6ICI0LjEuOCIsCisgICAgICAgICAgICAibWVtb3J5LWZzIjogIjAu
Mi4wIiwKKyAgICAgICAgICAgICJ0YXBhYmxlIjogIjAuMS4xMCIKKyAgICAgICAgICB9LAorICAg
ICAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICAgICAibWVtb3J5LWZzIjogeworICAg
ICAgICAgICAgICAidmVyc2lvbiI6ICIwLjIuMCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICB9CisgICAgICAgIH0sCisgICAgICAgICJlbnRpdGllcyI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIxLjEuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJlcnJubyI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIwLjEuNCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJwcnIiOiAiMC4w
LjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZXJyb3ItZXgiOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMS4zLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAg
ICAiaXMtYXJyYXlpc2giOiAiMC4yLjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg
ICAiZXM1LWV4dCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEwLjEyIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAgICAgImVzNi1pdGVyYXRvciI6ICIyLjAuMCIsCisgICAgICAg
ICAgICAiZXM2LXN5bWJvbCI6ICIzLjEuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAg
ICAgICJlczYtaXRlcmF0b3IiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiZCI6ICIwLjEuMSIsCisgICAgICAgICAgICAi
ZXM1LWV4dCI6ICIwLjEwLjEyIiwKKyAgICAgICAgICAgICJlczYtc3ltYm9sIjogIjMuMS4wIgor
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImVzNi1tYXAiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMC4xLjQiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiZCI6
ICIwLjEuMSIsCisgICAgICAgICAgICAiZXM1LWV4dCI6ICIwLjEwLjEyIiwKKyAgICAgICAgICAg
ICJlczYtaXRlcmF0b3IiOiAiMi4wLjAiLAorICAgICAgICAgICAgImVzNi1zZXQiOiAiMC4xLjQi
LAorICAgICAgICAgICAgImVzNi1zeW1ib2wiOiAiMy4xLjAiLAorICAgICAgICAgICAgImV2ZW50
LWVtaXR0ZXIiOiAiMC4zLjQiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZXM2
LXNldCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuNCIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgICAgICJkIjogIjAuMS4xIiwKKyAgICAgICAgICAgICJlczUtZXh0IjogIjAu
MTAuMTIiLAorICAgICAgICAgICAgImVzNi1pdGVyYXRvciI6ICIyLjAuMCIsCisgICAgICAgICAg
ICAiZXM2LXN5bWJvbCI6ICIzLjEuMCIsCisgICAgICAgICAgICAiZXZlbnQtZW1pdHRlciI6ICIw
LjMuNCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJlczYtc3ltYm9sIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAgICAgImQiOiAiMC4xLjEiLAorICAgICAgICAgICAgImVzNS1leHQiOiAiMC4xMC4xMiIKKyAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJlczYtd2Vhay1tYXAiOiB7CisgICAgICAg
ICAgInZlcnNpb24iOiAiMi4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAi
ZCI6ICIwLjEuMSIsCisgICAgICAgICAgICAiZXM1LWV4dCI6ICIwLjEwLjEyIiwKKyAgICAgICAg
ICAgICJlczYtaXRlcmF0b3IiOiAiMi4wLjAiLAorICAgICAgICAgICAgImVzNi1zeW1ib2wiOiAi
My4xLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZXNjYXBlLWh0bWwiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjMiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZXNjYXBlLXN0
cmluZy1yZWdleHAiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjUiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAg
ICAgICAiZXNjb2RlZ2VuIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuOC4xIiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAgICAgImVzcHJpbWEiOiAiMi43LjMiLAorICAgICAgICAg
ICAgImVzdHJhdmVyc2UiOiAiMS45LjMiLAorICAgICAgICAgICAgImVzdXRpbHMiOiAiMi4wLjIi
LAorICAgICAgICAgICAgIm9wdGlvbmF0b3IiOiAiMC44LjIiLAorICAgICAgICAgICAgInNvdXJj
ZS1tYXAiOiAiMC4yLjAiCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjog
eworICAgICAgICAgICAgImVzdHJhdmVyc2UiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjog
IjEuOS4zIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAi
ZGV2IjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzb3VyY2UtbWFwIjogewor
ICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjIuMCIsCisgICAgICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJvcHRp
b25hbCI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAg
ICAiYW1kZWZpbmUiOiAiMS4wLjAiCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJlc2NvcGUiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMy42LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiZXM2LW1h
cCI6ICIwLjEuNCIsCisgICAgICAgICAgICAiZXM2LXdlYWstbWFwIjogIjIuMC4xIiwKKyAgICAg
ICAgICAgICJlc3JlY3Vyc2UiOiAiNC4xLjAiLAorICAgICAgICAgICAgImVzdHJhdmVyc2UiOiAi
NC4yLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZXNsaW50IjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjMuNS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAg
ICAgImNoYWxrIjogIjEuMS4zIiwKKyAgICAgICAgICAgICJjb25jYXQtc3RyZWFtIjogIjEuNS4y
IiwKKyAgICAgICAgICAgICJkZWJ1ZyI6ICIyLjIuMCIsCisgICAgICAgICAgICAiZG9jdHJpbmUi
OiAiMS40LjAiLAorICAgICAgICAgICAgImVzY29wZSI6ICIzLjYuMCIsCisgICAgICAgICAgICAi
ZXNwcmVlIjogIjMuMy4xIiwKKyAgICAgICAgICAgICJlc3RyYXZlcnNlIjogIjQuMi4wIiwKKyAg
ICAgICAgICAgICJlc3V0aWxzIjogIjIuMC4yIiwKKyAgICAgICAgICAgICJmaWxlLWVudHJ5LWNh
Y2hlIjogIjIuMC4wIiwKKyAgICAgICAgICAgICJnbG9iIjogIjcuMS4wIiwKKyAgICAgICAgICAg
ICJnbG9iYWxzIjogIjkuMTAuMCIsCisgICAgICAgICAgICAiaWdub3JlIjogIjMuMS41IiwKKyAg
ICAgICAgICAgICJpbXVybXVyaGFzaCI6ICIwLjEuNCIsCisgICAgICAgICAgICAiaW5xdWlyZXIi
OiAiMC4xMi4wIiwKKyAgICAgICAgICAgICJpcy1teS1qc29uLXZhbGlkIjogIjIuMTQuMCIsCisg
ICAgICAgICAgICAiaXMtcmVzb2x2YWJsZSI6ICIxLjAuMCIsCisgICAgICAgICAgICAianMteWFt
bCI6ICIzLjYuMSIsCisgICAgICAgICAgICAianNvbi1zdGFibGUtc3RyaW5naWZ5IjogIjEuMC4x
IiwKKyAgICAgICAgICAgICJsZXZuIjogIjAuMy4wIiwKKyAgICAgICAgICAgICJsb2Rhc2giOiAi
NC4xNi4yIiwKKyAgICAgICAgICAgICJta2RpcnAiOiAiMC41LjEiLAorICAgICAgICAgICAgIm5h
dHVyYWwtY29tcGFyZSI6ICIxLjQuMCIsCisgICAgICAgICAgICAib3B0aW9uYXRvciI6ICIwLjgu
MiIsCisgICAgICAgICAgICAicGF0aC1pcy1pbnNpZGUiOiAiMS4wLjIiLAorICAgICAgICAgICAg
InBsdXJhbGl6ZSI6ICIxLjIuMSIsCisgICAgICAgICAgICAicHJvZ3Jlc3MiOiAiMS4xLjgiLAor
ICAgICAgICAgICAgInJlcXVpcmUtdW5jYWNoZWQiOiAiMS4wLjIiLAorICAgICAgICAgICAgInNo
ZWxsanMiOiAiMC42LjEiLAorICAgICAgICAgICAgInN0cmlwLWJvbSI6ICIzLjAuMCIsCisgICAg
ICAgICAgICAic3RyaXAtanNvbi1jb21tZW50cyI6ICIxLjAuNCIsCisgICAgICAgICAgICAidGFi
bGUiOiAiMy44LjAiLAorICAgICAgICAgICAgInRleHQtdGFibGUiOiAiMC4yLjAiLAorICAgICAg
ICAgICAgInVzZXItaG9tZSI6ICIyLjAuMCIKKyAgICAgICAgICB9LAorICAgICAgICAgICJkZXBl
bmRlbmNpZXMiOiB7CisgICAgICAgICAgICAiZ2xvYmFscyI6IHsKKyAgICAgICAgICAgICAgInZl
cnNpb24iOiAiOS4xMC4wIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzdHJpcC1i
b20iOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4wIiwKKyAgICAgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICJ1c2VyLWhvbWUiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjog
IjIuMC4wIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAg
ICJvcy1ob21lZGlyIjogIjEuMC4xIgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZXNsaW50LWNvbmZpZy1yZWFjdC1hcHAi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4yLjEiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZXNsaW50
LWltcG9ydC1yZXNvbHZlci1ub2RlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4zIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImRlYnVnIjogIjIuMi4wIiwKKyAgICAg
ICAgICAgICJvYmplY3QtYXNzaWduIjogIjQuMS4wIiwKKyAgICAgICAgICAgICJyZXNvbHZlIjog
IjEuMS43IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImVzbGludC1sb2FkZXIi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS41LjAiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICAgICAiZmluZC1jYWNoZS1kaXIiOiAiMC4xLjEiLAorICAgICAgICAgICAgImxvYWRl
ci11dGlscyI6ICIwLjIuMTYiLAorICAgICAgICAgICAgIm9iamVjdC1hc3NpZ24iOiAiNC4xLjAi
CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZXNsaW50LXBsdWdpbi1mbG93dHlw
ZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjE4LjEiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7
CisgICAgICAgICAgICAibG9kYXNoIjogIjQuMTYuMiIKKyAgICAgICAgICB9CisgICAgICAgIH0s
CisgICAgICAgICJlc2xpbnQtcGx1Z2luLWltcG9ydCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIxLjEyLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYnVpbHRpbi1tb2R1
bGVzIjogIjEuMS4xIiwKKyAgICAgICAgICAgICJjb250YWlucy1wYXRoIjogIjAuMS4wIiwKKyAg
ICAgICAgICAgICJkZWJ1ZyI6ICIyLjIuMCIsCisgICAgICAgICAgICAiZG9jdHJpbmUiOiAiMS4y
LjMiLAorICAgICAgICAgICAgImVzNi1tYXAiOiAiMC4xLjQiLAorICAgICAgICAgICAgImVzNi1z
ZXQiOiAiMC4xLjQiLAorICAgICAgICAgICAgImVzbGludC1pbXBvcnQtcmVzb2x2ZXItbm9kZSI6
ICIwLjIuMyIsCisgICAgICAgICAgICAibG9kYXNoLmNvbmQiOiAiNC41LjIiLAorICAgICAgICAg
ICAgImxvZGFzaC5lbmRzd2l0aCI6ICI0LjIuMSIsCisgICAgICAgICAgICAibG9kYXNoLmZpbmQi
OiAiNC42LjAiLAorICAgICAgICAgICAgImxvZGFzaC5maW5kaW5kZXgiOiAiNC42LjAiLAorICAg
ICAgICAgICAgIm9iamVjdC1hc3NpZ24iOiAiNC4xLjAiLAorICAgICAgICAgICAgInBrZy1kaXIi
OiAiMS4wLjAiLAorICAgICAgICAgICAgInBrZy11cCI6ICIxLjAuMCIKKyAgICAgICAgICB9LAor
ICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICAgICAiZG9jdHJpbmUiOiB7Cisg
ICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMi4zIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAgICAgICAgICJlc3V0aWxzIjogIjIuMC4yIiwKKyAgICAgICAgICAg
ICAgICAiaXNhcnJheSI6ICIxLjAuMCIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImVzbGludC1wbHVnaW4tanN4LWExMXki
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4yLjIiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICAgICAiZGFtZXJhdS1sZXZlbnNodGVpbiI6ICIxLjAuMyIsCisgICAgICAgICAgICAi
anN4LWFzdC11dGlscyI6ICIxLjMuMSIsCisgICAgICAgICAgICAib2JqZWN0LWFzc2lnbiI6ICI0
LjEuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJlc2xpbnQtcGx1Z2luLXJl
YWN0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMy4wIiwKKyAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAgICAgImRvY3RyaW5lIjogIjEuNC4wIiwKKyAgICAgICAgICAgICJqc3gtYXN0
LXV0aWxzIjogIjEuMy4xIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImVzcHJl
ZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjMuMSIsCisgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgICAgICJhY29ybiI6ICI0LjAuMyIsCisgICAgICAgICAgICAiYWNvcm4tanN4Ijog
IjMuMC4xIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImVzcHJpbWEiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMi43LjMiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZXNyZWN1cnNlIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjQuMS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAgICAgImVzdHJhdmVyc2UiOiAiNC4xLjEiLAorICAgICAgICAgICAgIm9iamVjdC1hc3Np
Z24iOiAiNC4xLjAiCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogewor
ICAgICAgICAgICAgImVzdHJhdmVyc2UiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjQu
MS4xIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2
IjogdHJ1ZQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAg
ImVzdHJhdmVyc2UiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNC4yLjAiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAg
ICAgICAiZXN1dGlscyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMiIsCisgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisg
ICAgICAgICJldGFnIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuNy4wIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAg
ICAgICAgImV2ZW50LWVtaXR0ZXIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4zLjQiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiZCI6ICIwLjEuMSIsCisgICAgICAgICAg
ICAiZXM1LWV4dCI6ICIwLjEwLjEyIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAg
ImV2ZW50ZW1pdHRlcjMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4yLjAiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAor
ICAgICAgICAiZXZlbnRzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4xIiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwK
KyAgICAgICAgImV2ZW50c291cmNlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS42IiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgIm9yaWdpbmFsIjogIjEuMC4wIgorICAg
ICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImV4ZWMtc2giOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMC4yLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAibWVyZ2Ui
OiAiMS4yLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZXhpdC1ob29rIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImV4cGFuZC1i
cmFja2V0cyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuNSIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgICAgICJpcy1wb3NpeC1icmFja2V0IjogIjAuMS4xIgorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgImV4cGFuZC1yYW5nZSI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIxLjguMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJmaWxsLXJh
bmdlIjogIjIuMi4zIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImV4cHJlc3Mi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNC4xNC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAgICAgImFjY2VwdHMiOiAiMS4zLjMiLAorICAgICAgICAgICAgImFycmF5LWZsYXR0
ZW4iOiAiMS4xLjEiLAorICAgICAgICAgICAgImNvbnRlbnQtZGlzcG9zaXRpb24iOiAiMC41LjEi
LAorICAgICAgICAgICAgImNvbnRlbnQtdHlwZSI6ICIxLjAuMiIsCisgICAgICAgICAgICAiY29v
a2llIjogIjAuMy4xIiwKKyAgICAgICAgICAgICJjb29raWUtc2lnbmF0dXJlIjogIjEuMC42IiwK
KyAgICAgICAgICAgICJkZWJ1ZyI6ICIyLjIuMCIsCisgICAgICAgICAgICAiZGVwZCI6ICIxLjEu
MCIsCisgICAgICAgICAgICAiZW5jb2RldXJsIjogIjEuMC4xIiwKKyAgICAgICAgICAgICJlc2Nh
cGUtaHRtbCI6ICIxLjAuMyIsCisgICAgICAgICAgICAiZXRhZyI6ICIxLjcuMCIsCisgICAgICAg
ICAgICAiZmluYWxoYW5kbGVyIjogIjAuNS4wIiwKKyAgICAgICAgICAgICJmcmVzaCI6ICIwLjMu
MCIsCisgICAgICAgICAgICAibWVyZ2UtZGVzY3JpcHRvcnMiOiAiMS4wLjEiLAorICAgICAgICAg
ICAgIm1ldGhvZHMiOiAiMS4xLjIiLAorICAgICAgICAgICAgIm9uLWZpbmlzaGVkIjogIjIuMy4w
IiwKKyAgICAgICAgICAgICJwYXJzZXVybCI6ICIxLjMuMSIsCisgICAgICAgICAgICAicGF0aC10
by1yZWdleHAiOiAiMC4xLjciLAorICAgICAgICAgICAgInByb3h5LWFkZHIiOiAiMS4xLjIiLAor
ICAgICAgICAgICAgInFzIjogIjYuMi4wIiwKKyAgICAgICAgICAgICJyYW5nZS1wYXJzZXIiOiAi
MS4yLjAiLAorICAgICAgICAgICAgInNlbmQiOiAiMC4xNC4xIiwKKyAgICAgICAgICAgICJzZXJ2
ZS1zdGF0aWMiOiAiMS4xMS4xIiwKKyAgICAgICAgICAgICJ0eXBlLWlzIjogIjEuNi4xMyIsCisg
ICAgICAgICAgICAidXRpbHMtbWVyZ2UiOiAiMS4wLjAiLAorICAgICAgICAgICAgInZhcnkiOiAi
MS4xLjAiCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAg
ICAgICAgInFzIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICI2LjIuMCIsCisgICAgICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJleHRlbmQiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMy4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZXh0Z2xvYiI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIwLjMuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgICAgICJpcy1leHRnbG9iIjogIjEuMC4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAg
ICAgICAgImV4dHJhY3QtdGV4dC13ZWJwYWNrLXBsdWdpbiI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIxLjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJhc3luYyI6ICIx
LjUuMiIsCisgICAgICAgICAgICAibG9hZGVyLXV0aWxzIjogIjAuMi4xNiIsCisgICAgICAgICAg
ICAid2VicGFjay1zb3VyY2VzIjogIjAuMS4yIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAg
ICAgICAgImV4dHNwcmludGYiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9
LAorICAgICAgICAiZmFzdC1sZXZlbnNodGVpbiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIy
LjAuNCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
CisgICAgICAgIH0sCisgICAgICAgICJmYXN0cGFyc2UiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMS4xLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZmF5ZS13ZWJzb2NrZXQiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMC4xMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgIndl
YnNvY2tldC1kcml2ZXIiOiAiMC42LjUiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg
ICAiZmItd2F0Y2htYW4iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS45LjAiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYnNlciI6ICIxLjAuMiIKKyAgICAgICAgICB9Cisg
ICAgICAgIH0sCisgICAgICAgICJmaWd1cmVzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
Ny4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImVzY2FwZS1zdHJpbmctcmVn
ZXhwIjogIjEuMC41IiwKKyAgICAgICAgICAgICJvYmplY3QtYXNzaWduIjogIjQuMS4wIgorICAg
ICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZpbGUtZW50cnktY2FjaGUiOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAg
ICAiZmxhdC1jYWNoZSI6ICIxLjIuMSIsCisgICAgICAgICAgICAib2JqZWN0LWFzc2lnbiI6ICI0
LjEuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmaWxlLWxvYWRlciI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIwLjkuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgICAgICJsb2FkZXItdXRpbHMiOiAiMC4yLjE2IgorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgImZpbGVuYW1lLXJlZ2V4IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4w
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAg
ICAgICAgfSwKKyAgICAgICAgImZpbGVzZXQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4y
LjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiZ2xvYiI6ICI1LjAuMTUiLAor
ICAgICAgICAgICAgIm1pbmltYXRjaCI6ICIyLjAuMTAiCisgICAgICAgICAgfSwKKyAgICAgICAg
ICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAgICAgImdsb2IiOiB7CisgICAgICAgICAgICAg
ICJ2ZXJzaW9uIjogIjUuMC4xNSIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgICAgICAgICAiaW5mbGlnaHQiOiAiMS4wLjUiLAorICAgICAgICAgICAgICAgICJpbmhl
cml0cyI6ICIyLjAuMyIsCisgICAgICAgICAgICAgICAgIm1pbmltYXRjaCI6ICIyLjAuMTAiLAor
ICAgICAgICAgICAgICAgICJvbmNlIjogIjEuNC4wIiwKKyAgICAgICAgICAgICAgICAicGF0aC1p
cy1hYnNvbHV0ZSI6ICIxLjAuMCIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICJtaW5pbWF0Y2giOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4x
MCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6
IHRydWUsCisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAiYnJh
Y2UtZXhwYW5zaW9uIjogIjEuMS42IgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZmlsZXNpemUiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMy4zLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZmlsbC1yYW5nZSI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIyLjIuMyIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAg
ICJpcy1udW1iZXIiOiAiMi4xLjAiLAorICAgICAgICAgICAgImlzb2JqZWN0IjogIjIuMS4wIiwK
KyAgICAgICAgICAgICJyYW5kb21hdGljIjogIjEuMS41IiwKKyAgICAgICAgICAgICJyZXBlYXQt
ZWxlbWVudCI6ICIxLjEuMiIsCisgICAgICAgICAgICAicmVwZWF0LXN0cmluZyI6ICIxLjUuNCIK
KyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmaW5hbGhhbmRsZXIiOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMC41LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAg
ICAiZGVidWciOiAiMi4yLjAiLAorICAgICAgICAgICAgImVzY2FwZS1odG1sIjogIjEuMC4zIiwK
KyAgICAgICAgICAgICJvbi1maW5pc2hlZCI6ICIyLjMuMCIsCisgICAgICAgICAgICAic3RhdHVz
ZXMiOiAiMS4zLjAiLAorICAgICAgICAgICAgInVucGlwZSI6ICIxLjAuMCIKKyAgICAgICAgICB9
CisgICAgICAgIH0sCisgICAgICAgICJmaW5kLWNhY2hlLWRpciI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIwLjEuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJjb21tb25k
aXIiOiAiMS4wLjEiLAorICAgICAgICAgICAgIm1rZGlycCI6ICIwLjUuMSIsCisgICAgICAgICAg
ICAicGtnLWRpciI6ICIxLjAuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJm
aW5kLXVwIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4yIiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAgICAgInBhdGgtZXhpc3RzIjogIjIuMS4wIiwKKyAgICAgICAgICAgICJw
aW5raWUtcHJvbWlzZSI6ICIyLjAuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJmbGF0LWNhY2hlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMi4xIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAgICAgImNpcmN1bGFyLWpzb24iOiAiMC4zLjEiLAorICAgICAg
ICAgICAgImRlbCI6ICIyLjIuMiIsCisgICAgICAgICAgICAiZ3JhY2VmdWwtZnMiOiAiNC4xLjgi
LAorICAgICAgICAgICAgIndyaXRlIjogIjAuMi4xIgorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgImZsYXR0ZW4iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9
LAorICAgICAgICAiZm9yLWluIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS42IiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAg
fSwKKyAgICAgICAgImZvci1vd24iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjQiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiZm9yLWluIjogIjAuMS42IgorICAgICAg
ICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZvcmV2ZXItYWdlbnQiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMC42LjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZm9ybS1kYXRhIjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAg
ImFzeW5ja2l0IjogIjAuNC4wIiwKKyAgICAgICAgICAgICJjb21iaW5lZC1zdHJlYW0iOiAiMS4w
LjUiLAorICAgICAgICAgICAgIm1pbWUtdHlwZXMiOiAiMi4xLjEyIgorICAgICAgICAgIH0KKyAg
ICAgICAgfSwKKyAgICAgICAgImZvcndhcmRlZCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIw
LjEuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
CisgICAgICAgIH0sCisgICAgICAgICJmcmVzaCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIw
LjMuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
CisgICAgICAgIH0sCisgICAgICAgICJmcy1leHRyYSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIwLjMwLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiZ3JhY2VmdWwtZnMi
OiAiNC4xLjgiLAorICAgICAgICAgICAgImpzb25maWxlIjogIjIuNC4wIiwKKyAgICAgICAgICAg
ICJrbGF3IjogIjEuMy4wIiwKKyAgICAgICAgICAgICJwYXRoLWlzLWFic29sdXRlIjogIjEuMC4w
IiwKKyAgICAgICAgICAgICJyaW1yYWYiOiAiMi41LjQiCisgICAgICAgICAgfQorICAgICAgICB9
LAorICAgICAgICAiZnMucmVhbHBhdGgiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAi
LAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAg
ICAgICB9LAorICAgICAgICAiZnVuY3Rpb24tYmluZCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIxLjEuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlCisgICAgICAgIH0sCisgICAgICAgICJnZW5lcmF0ZS1mdW5jdGlvbiI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJnZW5lcmF0ZS1vYmplY3QtcHJv
cGVydHkiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4yLjAiLAorICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICAgICAiaXMtcHJvcGVydHkiOiAiMS4wLjIiCisgICAgICAgICAgfQorICAg
ICAgICB9LAorICAgICAgICAiZ2V0LWNhbGxlci1maWxlIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuMC4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImdldC1zdGRpbiI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICI0LjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJnZXRwYXNzIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjAuMS42IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImFzc2Vy
dC1wbHVzIjogIjEuMC4wIgorICAgICAgICAgIH0sCisgICAgICAgICAgImRlcGVuZGVuY2llcyI6
IHsKKyAgICAgICAgICAgICJhc3NlcnQtcGx1cyI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24i
OiAiMS4wLjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAg
ICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAiZ2xvYiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI3LjEuMCIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICJmcy5yZWFscGF0aCI6ICIxLjAuMCIsCisgICAgICAgICAg
ICAiaW5mbGlnaHQiOiAiMS4wLjUiLAorICAgICAgICAgICAgImluaGVyaXRzIjogIjIuMC4zIiwK
KyAgICAgICAgICAgICJtaW5pbWF0Y2giOiAiMy4wLjMiLAorICAgICAgICAgICAgIm9uY2UiOiAi
MS40LjAiLAorICAgICAgICAgICAgInBhdGgtaXMtYWJzb2x1dGUiOiAiMS4wLjAiCisgICAgICAg
ICAgfQorICAgICAgICB9LAorICAgICAgICAiZ2xvYi1iYXNlIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjAuMy4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImdsb2ItcGFy
ZW50IjogIjIuMC4wIiwKKyAgICAgICAgICAgICJpcy1nbG9iIjogIjIuMC4xIgorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgImdsb2ItcGFyZW50IjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImlzLWdsb2Ii
OiAiMi4wLjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZ2xvYmFscyI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICI4LjE4LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZ2xvYmJ5Ijog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjUuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAgICAgImFycmF5LXVuaW9uIjogIjEuMC4yIiwKKyAgICAgICAgICAgICJhcnJpZnkiOiAi
MS4wLjEiLAorICAgICAgICAgICAgImdsb2IiOiAiNy4xLjAiLAorICAgICAgICAgICAgIm9iamVj
dC1hc3NpZ24iOiAiNC4xLjAiLAorICAgICAgICAgICAgInBpZnkiOiAiMi4zLjAiLAorICAgICAg
ICAgICAgInBpbmtpZS1wcm9taXNlIjogIjIuMC4xIgorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgImdyYWNlZnVsLWZzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjQuMS44IiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAg
ICAgfSwKKyAgICAgICAgImdyYWNlZnVsLXJlYWRsaW5rIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuMC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImdyb3dseSI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIxLjMuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJnemlwLXNpemUiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMy4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiZHVwbGV4
ZXIiOiAiMC4xLjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaGFuZGxlYmFy
cyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI0LjAuNSIsCisgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgICAgICJhc3luYyI6ICIxLjUuMiIsCisgICAgICAgICAgICAib3B0aW1pc3QiOiAi
MC42LjEiLAorICAgICAgICAgICAgInNvdXJjZS1tYXAiOiAiMC40LjQiLAorICAgICAgICAgICAg
InVnbGlmeS1qcyI6ICIyLjYuNCIKKyAgICAgICAgICB9LAorICAgICAgICAgICJkZXBlbmRlbmNp
ZXMiOiB7CisgICAgICAgICAgICAic291cmNlLW1hcCI6IHsKKyAgICAgICAgICAgICAgInZlcnNp
b24iOiAiMC40LjQiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAg
ICAgICAgImFtZGVmaW5lIjogIjEuMC4wIgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaGFyLXZhbGlkYXRvciI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIyLjAuNiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
ICAgICJjaGFsayI6ICIxLjEuMyIsCisgICAgICAgICAgICAiY29tbWFuZGVyIjogIjIuOS4wIiwK
KyAgICAgICAgICAgICJpcy1teS1qc29uLXZhbGlkIjogIjIuMTQuMCIsCisgICAgICAgICAgICAi
cGlua2llLXByb21pc2UiOiAiMi4wLjEiCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5k
ZW5jaWVzIjogeworICAgICAgICAgICAgImNvbW1hbmRlciI6IHsKKyAgICAgICAgICAgICAgInZl
cnNpb24iOiAiMi45LjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICAgICAgICAgImdyYWNlZnVsLXJlYWRsaW5rIjogIjEuMC4xIgorICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaGFzIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAgICAgImZ1bmN0aW9uLWJpbmQiOiAiMS4xLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAor
ICAgICAgICAiaGFzLWFuc2kiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYW5zaS1yZWdleCI6ICIyLjAuMCIKKyAgICAg
ICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJoYXMtZmxhZyI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJoYXdrIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjMuMS4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJvb20iOiAi
Mi4xMC4xIiwKKyAgICAgICAgICAgICJjcnlwdGlsZXMiOiAiMi4wLjUiLAorICAgICAgICAgICAg
ImhvZWsiOiAiMi4xNi4zIiwKKyAgICAgICAgICAgICJzbnRwIjogIjEuMC45IgorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgImhlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
MS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUK
KyAgICAgICAgfSwKKyAgICAgICAgImhlYWRlci1jYXNlIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgIm5vLWNhc2UiOiAi
Mi4zLjAiLAorICAgICAgICAgICAgInVwcGVyLWNhc2UiOiAiMS4xLjMiCisgICAgICAgICAgfQor
ICAgICAgICB9LAorICAgICAgICAiaG9layI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjE2
LjMiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQor
ICAgICAgICB9LAorICAgICAgICAiaG9tZS1vci10bXAiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAib3MtdG1wZGlyIjog
IjEuMC4xIiwKKyAgICAgICAgICAgICJ1c2VyLWhvbWUiOiAiMS4xLjEiCisgICAgICAgICAgfQor
ICAgICAgICB9LAorICAgICAgICAiaG9zdGVkLWdpdC1pbmZvIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjIuMS41IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImh0bWwtY29tbWVudC1yZWdleCI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjEuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJodG1sLWVudGl0aWVz
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImh0bWwt
bWluaWZpZXIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4xLjciLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICAgICAiY2hhbmdlLWNhc2UiOiAiMy4wLjAiLAorICAgICAgICAgICAg
ImNsZWFuLWNzcyI6ICIzLjQuMjAiLAorICAgICAgICAgICAgImNvbW1hbmRlciI6ICIyLjkuMCIs
CisgICAgICAgICAgICAiaGUiOiAiMS4xLjAiLAorICAgICAgICAgICAgIm5jbmFtZSI6ICIxLjAu
MCIsCisgICAgICAgICAgICAicmVsYXRldXJsIjogIjAuMi43IiwKKyAgICAgICAgICAgICJ1Z2xp
ZnktanMiOiAiMi42LjQiCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjog
eworICAgICAgICAgICAgImNvbW1hbmRlciI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAi
Mi45LjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAg
ImdyYWNlZnVsLXJlYWRsaW5rIjogIjEuMC4xIgorICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaHRtbC13ZWJwYWNrLXBsdWdp
biI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjIyLjAiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7
CisgICAgICAgICAgICAiYmx1ZWJpcmQiOiAiMy40LjYiLAorICAgICAgICAgICAgImh0bWwtbWlu
aWZpZXIiOiAiMi4xLjciLAorICAgICAgICAgICAgImxvYWRlci11dGlscyI6ICIwLjIuMTYiLAor
ICAgICAgICAgICAgImxvZGFzaCI6ICI0LjE2LjIiLAorICAgICAgICAgICAgInByZXR0eS1lcnJv
ciI6ICIyLjAuMSIsCisgICAgICAgICAgICAidG9wb3NvcnQiOiAiMS4wLjAiCisgICAgICAgICAg
fQorICAgICAgICB9LAorICAgICAgICAiaHRtbHBhcnNlcjIiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMy4zLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiZG9tZWxlbWVu
dHR5cGUiOiAiMS4zLjAiLAorICAgICAgICAgICAgImRvbWhhbmRsZXIiOiAiMi4xLjAiLAorICAg
ICAgICAgICAgImRvbXV0aWxzIjogIjEuMS42IiwKKyAgICAgICAgICAgICJyZWFkYWJsZS1zdHJl
YW0iOiAiMS4wLjM0IgorICAgICAgICAgIH0sCisgICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsK
KyAgICAgICAgICAgICJkb211dGlscyI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4x
LjYiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgImRv
bWVsZW1lbnR0eXBlIjogIjEuMy4wIgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgImlzYXJyYXkiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC4x
IiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2Ijog
dHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJyZWFkYWJsZS1zdHJlYW0iOiB7Cisg
ICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4zNCIsCisgICAgICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAiY29yZS11dGlsLWlzIjogIjEuMC4yIiwKKyAgICAg
ICAgICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjMiLAorICAgICAgICAgICAgICAgICJpc2FycmF5
IjogIjAuMC4xIiwKKyAgICAgICAgICAgICAgICAic3RyaW5nX2RlY29kZXIiOiAiMC4xMC4zMSIK
KyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgImh0dHAtYnJvd3NlcmlmeSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjcu
MCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAor
ICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJCYXNlNjQiOiAiMC4yLjEiLAor
ICAgICAgICAgICAgImluaGVyaXRzIjogIjIuMC4zIgorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgImh0dHAtZXJyb3JzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuNS4wIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImluaGVyaXRzIjogIjIuMC4xIiwKKyAg
ICAgICAgICAgICJzZXRwcm90b3R5cGVvZiI6ICIxLjAuMSIsCisgICAgICAgICAgICAic3RhdHVz
ZXMiOiAiMS4zLjAiCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogewor
ICAgICAgICAgICAgImluaGVyaXRzIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyLjAu
MSIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6
IHRydWUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJo
dHRwLXByb3h5IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMTUuMSIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICJldmVudGVtaXR0ZXIzIjogIjEuMi4wIiwKKyAgICAgICAg
ICAgICJyZXF1aXJlcy1wb3J0IjogIjEuMC4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAg
ICAgICAgImh0dHAtcHJveHktbWlkZGxld2FyZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIw
LjE3LjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiaHR0cC1wcm94eSI6ICIx
LjE1LjEiLAorICAgICAgICAgICAgImlzLWdsb2IiOiAiMi4wLjEiLAorICAgICAgICAgICAgImxv
ZGFzaCI6ICI0LjE2LjIiLAorICAgICAgICAgICAgIm1pY3JvbWF0Y2giOiAiMi4zLjExIgorICAg
ICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImh0dHAtc2lnbmF0dXJlIjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuMS4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAg
ImFzc2VydC1wbHVzIjogIjAuMi4wIiwKKyAgICAgICAgICAgICJqc3ByaW0iOiAiMS4zLjEiLAor
ICAgICAgICAgICAgInNzaHBrIjogIjEuMTAuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisg
ICAgICAgICJodHRwcy1icm93c2VyaWZ5IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC4w
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAg
ICAgICAgfSwKKyAgICAgICAgImljb252LWxpdGUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
MC40LjEzIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRy
dWUKKyAgICAgICAgfSwKKyAgICAgICAgImljc3MtcmVwbGFjZS1zeW1ib2xzIjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImllZWU3NTQiOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMS4xLjYiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiaWdub3JlIjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjMuMS41IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImltdXJtdXJoYXNoIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS40IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImluZGV4ZXMt
b2YiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiaW5k
ZXhvZiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjAuMSIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJp
bmZsaWdodCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuNSIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgICAgICJvbmNlIjogIjEuNC4wIiwKKyAgICAgICAgICAgICJ3cmFwcHki
OiAiMS4wLjIiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaW5oZXJpdHMiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjMiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiaW5xdWlyZXIi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4xMi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAgICAgImFuc2ktZXNjYXBlcyI6ICIxLjQuMCIsCisgICAgICAgICAgICAiYW5zaS1y
ZWdleCI6ICIyLjAuMCIsCisgICAgICAgICAgICAiY2hhbGsiOiAiMS4xLjMiLAorICAgICAgICAg
ICAgImNsaS1jdXJzb3IiOiAiMS4wLjIiLAorICAgICAgICAgICAgImNsaS13aWR0aCI6ICIyLjEu
MCIsCisgICAgICAgICAgICAiZmlndXJlcyI6ICIxLjcuMCIsCisgICAgICAgICAgICAibG9kYXNo
IjogIjQuMTYuMiIsCisgICAgICAgICAgICAicmVhZGxpbmUyIjogIjEuMC4xIiwKKyAgICAgICAg
ICAgICJydW4tYXN5bmMiOiAiMC4xLjAiLAorICAgICAgICAgICAgInJ4LWxpdGUiOiAiMy4xLjIi
LAorICAgICAgICAgICAgInN0cmluZy13aWR0aCI6ICIxLjAuMiIsCisgICAgICAgICAgICAic3Ry
aXAtYW5zaSI6ICIzLjAuMSIsCisgICAgICAgICAgICAidGhyb3VnaCI6ICIyLjMuOCIKKyAgICAg
ICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJpbnRlcnByZXQiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMC42LjYiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiaW52YXJpYW50IjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjIuMi4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImxv
b3NlLWVudmlmeSI6ICIxLjIuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJp
bnZlcnQta3YiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAg
ICAiaXBhZGRyLmpzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4xIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAg
ICAgICAgImlzLWFic29sdXRlLXVybCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIs
CisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAg
ICAgIH0sCisgICAgICAgICJpcy1hcnJheWlzaCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIw
LjIuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
CisgICAgICAgIH0sCisgICAgICAgICJpcy1iaW5hcnktcGF0aCI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIxLjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJiaW5hcnkt
ZXh0ZW5zaW9ucyI6ICIxLjYuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJp
cy1idWZmZXIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjQiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAg
ICAiaXMtYnVpbHRpbi1tb2R1bGUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYnVpbHRpbi1tb2R1bGVzIjogIjEuMS4x
IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlzLWRvdGZpbGUiOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiaXMtZXF1YWwtc2hhbGxv
dyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuMyIsCisgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgICAgICJpcy1wcmltaXRpdmUiOiAiMi4wLjAiCisgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgICAiaXMtZXh0ZW5kYWJsZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIw
LjEuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
CisgICAgICAgIH0sCisgICAgICAgICJpcy1leHRnbG9iIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImlzLWZpbml0ZSI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIxLjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJudW1iZXIt
aXMtbmFuIjogIjEuMC4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlzLWZ1
bGx3aWR0aC1jb2RlLXBvaW50IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgIm51bWJlci1pcy1uYW4iOiAiMS4wLjAiCisg
ICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaXMtZ2xvYiI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIyLjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJpcy1l
eHRnbG9iIjogIjEuMC4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlzLWxv
d2VyLWNhc2UiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjMiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICAgICAibG93ZXItY2FzZSI6ICIxLjEuMyIKKyAgICAgICAgICB9Cisg
ICAgICAgIH0sCisgICAgICAgICJpcy1teS1qc29uLXZhbGlkIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjIuMTQuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJnZW5lcmF0
ZS1mdW5jdGlvbiI6ICIyLjAuMCIsCisgICAgICAgICAgICAiZ2VuZXJhdGUtb2JqZWN0LXByb3Bl
cnR5IjogIjEuMi4wIiwKKyAgICAgICAgICAgICJqc29ucG9pbnRlciI6ICIyLjAuMCIsCisgICAg
ICAgICAgICAieHRlbmQiOiAiNC4wLjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg
ICAiaXMtbnVtYmVyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMS4wIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAgICAgImtpbmQtb2YiOiAiMy4wLjQiCisgICAgICAgICAgfQor
ICAgICAgICB9LAorICAgICAgICAiaXMtcGF0aC1jd2QiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZQorICAgICAgICB9LAorICAgICAgICAiaXMtcGF0aC1pbi1jd2QiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiaXMt
cGF0aC1pbnNpZGUiOiAiMS4wLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAi
aXMtcGF0aC1pbnNpZGUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICAgICAicGF0aC1pcy1pbnNpZGUiOiAiMS4wLjIiCisgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaXMtcGxhaW4tb2JqIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuMS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImlzLXBvc2l4LWJyYWNrZXQiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiaXMtcHJpbWl0
aXZlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImlz
LXByb3BlcnR5IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAg
ICAgImlzLXJlc29sdmFibGUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAidHJ5aXQiOiAiMS4wLjIiCisgICAgICAgICAg
fQorICAgICAgICB9LAorICAgICAgICAiaXMtc3ZnIjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjIuMC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImh0bWwtY29tbWVudC1y
ZWdleCI6ICIxLjEuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJpcy10eXBl
ZGFycmF5IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAg
ImlzLXVwcGVyLWNhc2UiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjIiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICAgICAidXBwZXItY2FzZSI6ICIxLjEuMyIKKyAgICAgICAg
ICB9CisgICAgICAgIH0sCisgICAgICAgICJpcy11dGY4IjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjAuMi4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImlzYXJyYXkiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiaXNleGUiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMS4xLjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiaXNvYmplY3QiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMi4xLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiaXNhcnJh
eSI6ICIxLjAuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJpc3N0cmVhbSI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJpc3RhbmJ1
bCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjQuNSIsCisgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgICAgICJhYmJyZXYiOiAiMS4wLjkiLAorICAgICAgICAgICAgImFzeW5jIjogIjEu
NS4yIiwKKyAgICAgICAgICAgICJlc2NvZGVnZW4iOiAiMS44LjEiLAorICAgICAgICAgICAgImVz
cHJpbWEiOiAiMi43LjMiLAorICAgICAgICAgICAgImdsb2IiOiAiNS4wLjE1IiwKKyAgICAgICAg
ICAgICJoYW5kbGViYXJzIjogIjQuMC41IiwKKyAgICAgICAgICAgICJqcy15YW1sIjogIjMuNi4x
IiwKKyAgICAgICAgICAgICJta2RpcnAiOiAiMC41LjEiLAorICAgICAgICAgICAgIm5vcHQiOiAi
My4wLjYiLAorICAgICAgICAgICAgIm9uY2UiOiAiMS40LjAiLAorICAgICAgICAgICAgInJlc29s
dmUiOiAiMS4xLjciLAorICAgICAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogIjMuMS4yIiwKKyAg
ICAgICAgICAgICJ3aGljaCI6ICIxLjIuMTEiLAorICAgICAgICAgICAgIndvcmR3cmFwIjogIjEu
MC4wIgorICAgICAgICAgIH0sCisgICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAg
ICAgICJnbG9iIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICI1LjAuMTUiLAorICAgICAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgImluZmxpZ2h0IjogIjEu
MC41IiwKKyAgICAgICAgICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjMiLAorICAgICAgICAgICAg
ICAgICJtaW5pbWF0Y2giOiAiMy4wLjMiLAorICAgICAgICAgICAgICAgICJvbmNlIjogIjEuNC4w
IiwKKyAgICAgICAgICAgICAgICAicGF0aC1pcy1hYnNvbHV0ZSI6ICIxLjAuMCIKKyAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAg
ImlzdGFuYnVsLWFwaSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMC1hcGxoYS4xMCIs
CisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJhc3luYyI6ICIxLjUuMiIsCisgICAg
ICAgICAgICAiY2xvbmUiOiAiMS4wLjIiLAorICAgICAgICAgICAgImZpbGVzZXQiOiAiMC4yLjEi
LAorICAgICAgICAgICAgImlzdGFuYnVsLWxpYi1jb3ZlcmFnZSI6ICIxLjAuMCIsCisgICAgICAg
ICAgICAiaXN0YW5idWwtbGliLWhvb2siOiAiMS4wLjAtYWxwaGEuNCIsCisgICAgICAgICAgICAi
aXN0YW5idWwtbGliLWluc3RydW1lbnQiOiAiMS4xLjMiLAorICAgICAgICAgICAgImlzdGFuYnVs
LWxpYi1yZXBvcnQiOiAiMS4wLjAtYWxwaGEuMyIsCisgICAgICAgICAgICAiaXN0YW5idWwtbGli
LXNvdXJjZS1tYXBzIjogIjEuMC4xIiwKKyAgICAgICAgICAgICJpc3RhbmJ1bC1yZXBvcnRzIjog
IjEuMC4wLWFscGhhLjgiLAorICAgICAgICAgICAgImpzLXlhbWwiOiAiMy42LjEiLAorICAgICAg
ICAgICAgIm1rZGlycCI6ICIwLjUuMSIsCisgICAgICAgICAgICAib25jZSI6ICIxLjQuMCIKKyAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJpc3RhbmJ1bC1saWItY292ZXJhZ2UiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiaXN0YW5idWwt
bGliLWhvb2siOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAtYWxwaGEuNCIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJhcHBlbmQtdHJhbnNmb3JtIjogIjAuMy4wIgor
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlzdGFuYnVsLWxpYi1pbnN0cnVtZW50
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAgICAgImJhYmVsLWdlbmVyYXRvciI6ICI2LjE0LjAiLAorICAgICAgICAgICAgImJh
YmVsLXRlbXBsYXRlIjogIjYuMTUuMCIsCisgICAgICAgICAgICAiYmFiZWwtdHJhdmVyc2UiOiAi
Ni4xNS4wIiwKKyAgICAgICAgICAgICJiYWJlbC10eXBlcyI6ICI2LjE1LjAiLAorICAgICAgICAg
ICAgImJhYnlsb24iOiAiNi4xMS4yIiwKKyAgICAgICAgICAgICJpc3RhbmJ1bC1saWItY292ZXJh
Z2UiOiAiMS4wLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaXN0YW5idWwt
bGliLXJlcG9ydCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMC1hbHBoYS4zIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImFzeW5jIjogIjEuNS4yIiwKKyAgICAgICAg
ICAgICJpc3RhbmJ1bC1saWItY292ZXJhZ2UiOiAiMS4wLjAiLAorICAgICAgICAgICAgIm1rZGly
cCI6ICIwLjUuMSIsCisgICAgICAgICAgICAicGF0aC1wYXJzZSI6ICIxLjAuNSIsCisgICAgICAg
ICAgICAicmltcmFmIjogIjIuNS40IiwKKyAgICAgICAgICAgICJzdXBwb3J0cy1jb2xvciI6ICIz
LjEuMiIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJpc3RhbmJ1bC1saWItc291
cmNlLW1hcHMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICAgICAiaXN0YW5idWwtbGliLWNvdmVyYWdlIjogIjEuMC4wIiwKKyAg
ICAgICAgICAgICJta2RpcnAiOiAiMC41LjEiLAorICAgICAgICAgICAgInJpbXJhZiI6ICIyLjUu
NCIsCisgICAgICAgICAgICAic291cmNlLW1hcCI6ICIwLjUuNiIKKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJpc3RhbmJ1bC1yZXBvcnRzIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuMC4wLWFscGhhLjgiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiaGFu
ZGxlYmFycyI6ICI0LjAuNSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJqYXNt
aW5lLWNoZWNrIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS41IiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAgICAgInRlc3RjaGVjayI6ICIwLjEuNCIKKyAgICAgICAgICB9Cisg
ICAgICAgIH0sCisgICAgICAgICJqZXN0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjE1LjEu
MSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAor
ICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJqZXN0LWNsaSI6ICIxNS4xLjEi
CisgICAgICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAgICAg
ImNhbGxzaXRlcyI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgImNsaXVpIjogeworICAgICAgICAgICAgICAidmVyc2lv
biI6ICIzLjIuMCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAg
ICAgICAic3RyaW5nLXdpZHRoIjogIjEuMC4yIiwKKyAgICAgICAgICAgICAgICAic3RyaXAtYW5z
aSI6ICIzLjAuMSIsCisgICAgICAgICAgICAgICAgIndyYXAtYW5zaSI6ICIyLjAuMCIKKyAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJqZXN0LWNsaSI6IHsKKyAg
ICAgICAgICAgICAgInZlcnNpb24iOiAiMTUuMS4xIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAgICAgICAgICJhbnNpLWVzY2FwZXMiOiAiMS40LjAiLAorICAgICAg
ICAgICAgICAgICJjYWxsc2l0ZXMiOiAiMi4wLjAiLAorICAgICAgICAgICAgICAgICJjaGFsayI6
ICIxLjEuMyIsCisgICAgICAgICAgICAgICAgImdyYWNlZnVsLWZzIjogIjQuMS44IiwKKyAgICAg
ICAgICAgICAgICAiaXN0YW5idWwtYXBpIjogIjEuMC4wLWFwbGhhLjEwIiwKKyAgICAgICAgICAg
ICAgICAiaXN0YW5idWwtbGliLWNvdmVyYWdlIjogIjEuMC4wIiwKKyAgICAgICAgICAgICAgICAi
aXN0YW5idWwtbGliLWluc3RydW1lbnQiOiAiMS4xLjMiLAorICAgICAgICAgICAgICAgICJqZXN0
LWNoYW5nZWQtZmlsZXMiOiAiMTUuMC4wIiwKKyAgICAgICAgICAgICAgICAiamVzdC1jb25maWci
OiAiMTUuMS4xIiwKKyAgICAgICAgICAgICAgICAiamVzdC1lbnZpcm9ubWVudC1qc2RvbSI6ICIx
NS4xLjEiLAorICAgICAgICAgICAgICAgICJqZXN0LWZpbGUtZXhpc3RzIjogIjE1LjAuMCIsCisg
ICAgICAgICAgICAgICAgImplc3QtaGFzdGUtbWFwIjogIjE1LjAuMSIsCisgICAgICAgICAgICAg
ICAgImplc3QtamFzbWluZTIiOiAiMTUuMS4xIiwKKyAgICAgICAgICAgICAgICAiamVzdC1tb2Nr
IjogIjE1LjAuMCIsCisgICAgICAgICAgICAgICAgImplc3QtcmVzb2x2ZSI6ICIxNS4wLjEiLAor
ICAgICAgICAgICAgICAgICJqZXN0LXJlc29sdmUtZGVwZW5kZW5jaWVzIjogIjE1LjAuMSIsCisg
ICAgICAgICAgICAgICAgImplc3QtcnVudGltZSI6ICIxNS4xLjEiLAorICAgICAgICAgICAgICAg
ICJqZXN0LXNuYXBzaG90IjogIjE1LjEuMSIsCisgICAgICAgICAgICAgICAgImplc3QtdXRpbCI6
ICIxNS4xLjEiLAorICAgICAgICAgICAgICAgICJqc29uLXN0YWJsZS1zdHJpbmdpZnkiOiAiMS4w
LjEiLAorICAgICAgICAgICAgICAgICJub2RlLW5vdGlmaWVyIjogIjQuNi4xIiwKKyAgICAgICAg
ICAgICAgICAic2FuZSI6ICIxLjQuMSIsCisgICAgICAgICAgICAgICAgIndoaWNoIjogIjEuMi4x
MSIsCisgICAgICAgICAgICAgICAgIndvcmtlci1mYXJtIjogIjEuMy4xIiwKKyAgICAgICAgICAg
ICAgICAieWFyZ3MiOiAiNS4wLjAiCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAid2luZG93LXNpemUiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAu
Mi4wIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2
IjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJ5YXJncyI6IHsKKyAgICAgICAg
ICAgICAgInZlcnNpb24iOiAiNS4wLjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7
CisgICAgICAgICAgICAgICAgImNsaXVpIjogIjMuMi4wIiwKKyAgICAgICAgICAgICAgICAiZGVj
YW1lbGl6ZSI6ICIxLjIuMCIsCisgICAgICAgICAgICAgICAgImdldC1jYWxsZXItZmlsZSI6ICIx
LjAuMiIsCisgICAgICAgICAgICAgICAgImxvZGFzaC5hc3NpZ24iOiAiNC4yLjAiLAorICAgICAg
ICAgICAgICAgICJvcy1sb2NhbGUiOiAiMS40LjAiLAorICAgICAgICAgICAgICAgICJyZWFkLXBr
Zy11cCI6ICIxLjAuMSIsCisgICAgICAgICAgICAgICAgInJlcXVpcmUtZGlyZWN0b3J5IjogIjIu
MS4xIiwKKyAgICAgICAgICAgICAgICAicmVxdWlyZS1tYWluLWZpbGVuYW1lIjogIjEuMC4xIiwK
KyAgICAgICAgICAgICAgICAic2V0LWJsb2NraW5nIjogIjIuMC4wIiwKKyAgICAgICAgICAgICAg
ICAic3RyaW5nLXdpZHRoIjogIjEuMC4yIiwKKyAgICAgICAgICAgICAgICAid2hpY2gtbW9kdWxl
IjogIjEuMC4wIiwKKyAgICAgICAgICAgICAgICAid2luZG93LXNpemUiOiAiMC4yLjAiLAorICAg
ICAgICAgICAgICAgICJ5MThuIjogIjMuMi4xIiwKKyAgICAgICAgICAgICAgICAieWFyZ3MtcGFy
c2VyIjogIjMuMi4wIgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAg
fQorICAgICAgICB9LAorICAgICAgICAiamVzdC1jaGFuZ2VkLWZpbGVzIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjE1LjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJqZXN0LWNvbmZpZyI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIxNS4xLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICAgICAiY2hhbGsiOiAiMS4xLjMiLAorICAgICAgICAgICAgImlzdGFuYnVsIjogIjAuNC41IiwK
KyAgICAgICAgICAgICJqZXN0LWVudmlyb25tZW50LWpzZG9tIjogIjE1LjEuMSIsCisgICAgICAg
ICAgICAiamVzdC1lbnZpcm9ubWVudC1ub2RlIjogIjE1LjEuMSIsCisgICAgICAgICAgICAiamVz
dC1qYXNtaW5lMiI6ICIxNS4xLjEiLAorICAgICAgICAgICAgImplc3QtbW9jayI6ICIxNS4wLjAi
LAorICAgICAgICAgICAgImplc3QtcmVzb2x2ZSI6ICIxNS4wLjEiLAorICAgICAgICAgICAgImpl
c3QtdXRpbCI6ICIxNS4xLjEiLAorICAgICAgICAgICAgImpzb24tc3RhYmxlLXN0cmluZ2lmeSI6
ICIxLjAuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJqZXN0LWRpZmYiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMTUuMS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAgICAgImNoYWxrIjogIjEuMS4zIiwKKyAgICAgICAgICAgICJkaWZmIjogIjMuMC4wIiwK
KyAgICAgICAgICAgICJqZXN0LW1hdGNoZXItdXRpbHMiOiAiMTUuMS4wIiwKKyAgICAgICAgICAg
ICJwcmV0dHktZm9ybWF0IjogIjMuOC4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg
ICAgImplc3QtZW52aXJvbm1lbnQtanNkb20iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMTUu
MS4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImplc3QtdXRpbCI6ICIxNS4x
LjEiLAorICAgICAgICAgICAgImpzZG9tIjogIjkuNS4wIgorICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgImplc3QtZW52aXJvbm1lbnQtbm9kZSI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIxNS4xLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiamVzdC11dGls
IjogIjE1LjEuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJqZXN0LWZpbGUt
ZXhpc3RzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjE1LjAuMCIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAg
ICJqZXN0LWhhc3RlLW1hcCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxNS4wLjEiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiZmItd2F0Y2htYW4iOiAiMS45LjAiLAorICAg
ICAgICAgICAgImdyYWNlZnVsLWZzIjogIjQuMS44IiwKKyAgICAgICAgICAgICJtdWx0aW1hdGNo
IjogIjIuMS4wIiwKKyAgICAgICAgICAgICJ3b3JrZXItZmFybSI6ICIxLjMuMSIKKyAgICAgICAg
ICB9CisgICAgICAgIH0sCisgICAgICAgICJqZXN0LWphc21pbmUyIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjE1LjEuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJncmFj
ZWZ1bC1mcyI6ICI0LjEuOCIsCisgICAgICAgICAgICAiamFzbWluZS1jaGVjayI6ICIwLjEuNSIs
CisgICAgICAgICAgICAiamVzdC1tYXRjaGVycyI6ICIxNS4xLjEiLAorICAgICAgICAgICAgImpl
c3Qtc25hcHNob3QiOiAiMTUuMS4xIiwKKyAgICAgICAgICAgICJqZXN0LXV0aWwiOiAiMTUuMS4x
IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImplc3QtbWF0Y2hlci11dGlscyI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxNS4xLjAiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICAgICAiY2hhbGsiOiAiMS4xLjMiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAiamVzdC1tYXRjaGVycyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxNS4xLjEiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiamVzdC1kaWZmIjogIjE1LjEuMCIsCisg
ICAgICAgICAgICAiamVzdC1tYXRjaGVyLXV0aWxzIjogIjE1LjEuMCIsCisgICAgICAgICAgICAi
amVzdC11dGlsIjogIjE1LjEuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJq
ZXN0LW1vY2siOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMTUuMC4wIiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAg
ICAgImplc3QtcmVzb2x2ZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxNS4wLjEiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYnJvd3Nlci1yZXNvbHZlIjogIjEuMTEuMiIs
CisgICAgICAgICAgICAiamVzdC1maWxlLWV4aXN0cyI6ICIxNS4wLjAiLAorICAgICAgICAgICAg
Implc3QtaGFzdGUtbWFwIjogIjE1LjAuMSIsCisgICAgICAgICAgICAicmVzb2x2ZSI6ICIxLjEu
NyIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJqZXN0LXJlc29sdmUtZGVwZW5k
ZW5jaWVzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjE1LjAuMSIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgICAgICJqZXN0LWZpbGUtZXhpc3RzIjogIjE1LjAuMCIsCisgICAgICAg
ICAgICAiamVzdC1yZXNvbHZlIjogIjE1LjAuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisg
ICAgICAgICJqZXN0LXJ1bnRpbWUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMTUuMS4xIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLWNvcmUiOiAiNi4xNC4wIiwK
KyAgICAgICAgICAgICJiYWJlbC1qZXN0IjogIjE1LjAuMCIsCisgICAgICAgICAgICAiYmFiZWwt
cGx1Z2luLWlzdGFuYnVsIjogIjIuMC4xIiwKKyAgICAgICAgICAgICJjaGFsayI6ICIxLjEuMyIs
CisgICAgICAgICAgICAiZ3JhY2VmdWwtZnMiOiAiNC4xLjgiLAorICAgICAgICAgICAgImplc3Qt
Y29uZmlnIjogIjE1LjEuMSIsCisgICAgICAgICAgICAiamVzdC1maWxlLWV4aXN0cyI6ICIxNS4w
LjAiLAorICAgICAgICAgICAgImplc3QtaGFzdGUtbWFwIjogIjE1LjAuMSIsCisgICAgICAgICAg
ICAiamVzdC1tb2NrIjogIjE1LjAuMCIsCisgICAgICAgICAgICAiamVzdC1yZXNvbHZlIjogIjE1
LjAuMSIsCisgICAgICAgICAgICAiamVzdC1zbmFwc2hvdCI6ICIxNS4xLjEiLAorICAgICAgICAg
ICAgImplc3QtdXRpbCI6ICIxNS4xLjEiLAorICAgICAgICAgICAgImpzb24tc3RhYmxlLXN0cmlu
Z2lmeSI6ICIxLjAuMSIsCisgICAgICAgICAgICAibXVsdGltYXRjaCI6ICIyLjEuMCIsCisgICAg
ICAgICAgICAieWFyZ3MiOiAiNS4wLjAiCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5k
ZW5jaWVzIjogeworICAgICAgICAgICAgImNsaXVpIjogeworICAgICAgICAgICAgICAidmVyc2lv
biI6ICIzLjIuMCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAg
ICAgICAic3RyaW5nLXdpZHRoIjogIjEuMC4yIiwKKyAgICAgICAgICAgICAgICAic3RyaXAtYW5z
aSI6ICIzLjAuMSIsCisgICAgICAgICAgICAgICAgIndyYXAtYW5zaSI6ICIyLjAuMCIKKyAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJ3aW5kb3ctc2l6ZSI6IHsK
KyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4yLjAiLAorICAgICAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgInlhcmdzIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICI1LjAuMCIsCisg
ICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAiY2xpdWkiOiAi
My4yLjAiLAorICAgICAgICAgICAgICAgICJkZWNhbWVsaXplIjogIjEuMi4wIiwKKyAgICAgICAg
ICAgICAgICAiZ2V0LWNhbGxlci1maWxlIjogIjEuMC4yIiwKKyAgICAgICAgICAgICAgICAibG9k
YXNoLmFzc2lnbiI6ICI0LjIuMCIsCisgICAgICAgICAgICAgICAgIm9zLWxvY2FsZSI6ICIxLjQu
MCIsCisgICAgICAgICAgICAgICAgInJlYWQtcGtnLXVwIjogIjEuMC4xIiwKKyAgICAgICAgICAg
ICAgICAicmVxdWlyZS1kaXJlY3RvcnkiOiAiMi4xLjEiLAorICAgICAgICAgICAgICAgICJyZXF1
aXJlLW1haW4tZmlsZW5hbWUiOiAiMS4wLjEiLAorICAgICAgICAgICAgICAgICJzZXQtYmxvY2tp
bmciOiAiMi4wLjAiLAorICAgICAgICAgICAgICAgICJzdHJpbmctd2lkdGgiOiAiMS4wLjIiLAor
ICAgICAgICAgICAgICAgICJ3aGljaC1tb2R1bGUiOiAiMS4wLjAiLAorICAgICAgICAgICAgICAg
ICJ3aW5kb3ctc2l6ZSI6ICIwLjIuMCIsCisgICAgICAgICAgICAgICAgInkxOG4iOiAiMy4yLjEi
LAorICAgICAgICAgICAgICAgICJ5YXJncy1wYXJzZXIiOiAiMy4yLjAiCisgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJqZXN0
LXNuYXBzaG90IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjE1LjEuMSIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICJqZXN0LWRpZmYiOiAiMTUuMS4wIiwKKyAgICAgICAgICAg
ICJqZXN0LWZpbGUtZXhpc3RzIjogIjE1LjAuMCIsCisgICAgICAgICAgICAiamVzdC11dGlsIjog
IjE1LjEuMSIsCisgICAgICAgICAgICAicHJldHR5LWZvcm1hdCI6ICIzLjguMCIKKyAgICAgICAg
ICB9CisgICAgICAgIH0sCisgICAgICAgICJqZXN0LXV0aWwiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMTUuMS4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImNoYWxrIjog
IjEuMS4zIiwKKyAgICAgICAgICAgICJkaWZmIjogIjMuMC4wIiwKKyAgICAgICAgICAgICJncmFj
ZWZ1bC1mcyI6ICI0LjEuOCIsCisgICAgICAgICAgICAiamVzdC1maWxlLWV4aXN0cyI6ICIxNS4w
LjAiLAorICAgICAgICAgICAgImplc3QtbW9jayI6ICIxNS4wLjAiLAorICAgICAgICAgICAgIm1r
ZGlycCI6ICIwLjUuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJqb2RpZDI1
NTE5IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjog
dHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAianNibiI6ICIwLjEu
MCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJqcy1iYXNlNjQiOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMi4xLjkiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAianMtdG9rZW5zIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImpzLXlhbWwiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMy42LjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICAgICAiYXJncGFyc2UiOiAiMS4wLjciLAorICAgICAgICAgICAgImVzcHJpbWEiOiAiMi43
LjMiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAianNibiI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIwLjEuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwK
KyAgICAgICAgImpzZG9tIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjkuNS4wIiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAgICAgImFiYWIiOiAiMS4wLjMiLAorICAgICAgICAgICAg
ImFjb3JuIjogIjIuNy4wIiwKKyAgICAgICAgICAgICJhY29ybi1nbG9iYWxzIjogIjEuMC45IiwK
KyAgICAgICAgICAgICJhcnJheS1lcXVhbCI6ICIxLjAuMCIsCisgICAgICAgICAgICAiY3Nzb20i
OiAiMC4zLjEiLAorICAgICAgICAgICAgImNzc3N0eWxlIjogIjAuMi4zNyIsCisgICAgICAgICAg
ICAiZXNjb2RlZ2VuIjogIjEuOC4xIiwKKyAgICAgICAgICAgICJpY29udi1saXRlIjogIjAuNC4x
MyIsCisgICAgICAgICAgICAibndtYXRjaGVyIjogIjEuMy44IiwKKyAgICAgICAgICAgICJwYXJz
ZTUiOiAiMS41LjEiLAorICAgICAgICAgICAgInJlcXVlc3QiOiAiMi43NS4wIiwKKyAgICAgICAg
ICAgICJzYXgiOiAiMS4yLjEiLAorICAgICAgICAgICAgInN5bWJvbC10cmVlIjogIjMuMS40IiwK
KyAgICAgICAgICAgICJ0b3VnaC1jb29raWUiOiAiMi4zLjEiLAorICAgICAgICAgICAgIndlYmlk
bC1jb252ZXJzaW9ucyI6ICIzLjAuMSIsCisgICAgICAgICAgICAid2hhdHdnLXVybCI6ICIzLjAu
MCIsCisgICAgICAgICAgICAieG1sLW5hbWUtdmFsaWRhdG9yIjogIjIuMC4xIgorICAgICAgICAg
IH0sCisgICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgICAgICJhY29ybiI6IHsK
KyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMi43LjAiLAorICAgICAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9CisgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICAianNlc2MiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMC41LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAianNvbi1sb2FkZXIiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMC41LjQiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAianNvbi1zY2hlbWEiOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMC4yLjMiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAianNvbi1zdGFibGUtc3Ry
aW5naWZ5IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAgICAgImpzb25pZnkiOiAiMC4wLjAiCisgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgICAianNvbi1zdHJpbmdpZnktc2FmZSI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICI1LjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJqc29uMyI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIzLjMuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJqc29uNSI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIwLjQuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJqc29uZmlsZSI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIyLjQuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJncmFjZWZ1
bC1mcyI6ICI0LjEuOCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJqc29uaWZ5
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImpzb25w
b2ludGVyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAg
ImpzcHJpbSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjMuMSIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgICAgICJleHRzcHJpbnRmIjogIjEuMC4yIiwKKyAgICAgICAgICAgICJq
c29uLXNjaGVtYSI6ICIwLjIuMyIsCisgICAgICAgICAgICAidmVycm9yIjogIjEuMy42IgorICAg
ICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImpzeC1hc3QtdXRpbHMiOiB7CisgICAgICAg
ICAgInZlcnNpb24iOiAiMS4zLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAi
b2JqZWN0LWFzc2lnbiI6ICI0LjEuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJraW5kLW9mIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC40IiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAgICAgImlzLWJ1ZmZlciI6ICIxLjEuNCIKKyAgICAgICAgICB9Cisg
ICAgICAgIH0sCisgICAgICAgICJrbGF3IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMy4w
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAg
ICAgICAgfSwKKyAgICAgICAgImxhenktY2FjaGUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
MS4wLjQiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZQorICAgICAgICB9LAorICAgICAgICAibGNpZCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIx
LjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJpbnZlcnQta3YiOiAiMS4w
LjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibGV2biI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIwLjMuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJw
cmVsdWRlLWxzIjogIjEuMS4yIiwKKyAgICAgICAgICAgICJ0eXBlLWNoZWNrIjogIjAuMy4yIgor
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImxvYWQtanNvbi1maWxlIjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjEuMS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAg
ICAgImdyYWNlZnVsLWZzIjogIjQuMS44IiwKKyAgICAgICAgICAgICJwYXJzZS1qc29uIjogIjIu
Mi4wIiwKKyAgICAgICAgICAgICJwaWZ5IjogIjIuMy4wIiwKKyAgICAgICAgICAgICJwaW5raWUt
cHJvbWlzZSI6ICIyLjAuMSIsCisgICAgICAgICAgICAic3RyaXAtYm9tIjogIjIuMC4wIgorICAg
ICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImxvYWRlci11dGlscyI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIwLjIuMTYiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAi
YmlnLmpzIjogIjMuMS4zIiwKKyAgICAgICAgICAgICJlbW9qaXMtbGlzdCI6ICIyLjAuMSIsCisg
ICAgICAgICAgICAianNvbjUiOiAiMC41LjAiLAorICAgICAgICAgICAgIm9iamVjdC1hc3NpZ24i
OiAiNC4xLjAiCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAg
ICAgICAgICAgImpzb241IjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjUuMCIsCisg
ICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJsb2Rhc2gi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNC4xNi4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImxvZGFz
aC5fYXJyYXljb3B5IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4wIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAg
ICAgICAgImxvZGFzaC5fYXJyYXllYWNoIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4w
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAg
ICAgICAgfSwKKyAgICAgICAgImxvZGFzaC5fYmFzZWFzc2lnbiI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIzLjIuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJsb2Rhc2gu
X2Jhc2Vjb3B5IjogIjMuMC4xIiwKKyAgICAgICAgICAgICJsb2Rhc2gua2V5cyI6ICIzLjEuMiIK
KyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJsb2Rhc2guX2Jhc2VjbG9uZSI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIzLjMuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgICAgICJsb2Rhc2guX2FycmF5Y29weSI6ICIzLjAuMCIsCisgICAgICAgICAgICAibG9kYXNo
Ll9hcnJheWVhY2giOiAiMy4wLjAiLAorICAgICAgICAgICAgImxvZGFzaC5fYmFzZWFzc2lnbiI6
ICIzLjIuMCIsCisgICAgICAgICAgICAibG9kYXNoLl9iYXNlZm9yIjogIjMuMC4zIiwKKyAgICAg
ICAgICAgICJsb2Rhc2guaXNhcnJheSI6ICIzLjAuNCIsCisgICAgICAgICAgICAibG9kYXNoLmtl
eXMiOiAiMy4xLjIiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibG9kYXNoLl9i
YXNlY29weSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjAuMSIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAg
ICJsb2Rhc2guX2Jhc2Vmb3IiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4wLjMiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9
LAorICAgICAgICAibG9kYXNoLl9iaW5kY2FsbGJhY2siOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMy4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZQorICAgICAgICB9LAorICAgICAgICAibG9kYXNoLl9jcmVhdGVjb21wb3VuZGVyIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAgICAgImxvZGFzaC5kZWJ1cnIiOiAiMy4yLjAiLAorICAgICAgICAgICAgImxvZGFzaC53b3Jk
cyI6ICIzLjIuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJsb2Rhc2guX2dl
dG5hdGl2ZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjkuMSIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAg
ICJsb2Rhc2guX3Jvb3QiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4wLjEiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAor
ICAgICAgICAibG9kYXNoLmFzc2lnbiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI0LjIuMCIs
CisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAg
ICAgIH0sCisgICAgICAgICJsb2Rhc2guY2FtZWxjYXNlIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjMuMC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImxvZGFzaC5fY3Jl
YXRlY29tcG91bmRlciI6ICIzLjAuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJsb2Rhc2guY2xvbmVkZWVwIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4yIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImxvZGFzaC5fYmFzZWNsb25lIjogIjMuMy4w
IiwKKyAgICAgICAgICAgICJsb2Rhc2guX2JpbmRjYWxsYmFjayI6ICIzLjAuMSIKKyAgICAgICAg
ICB9CisgICAgICAgIH0sCisgICAgICAgICJsb2Rhc2guY29uZCI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICI0LjUuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJsb2Rhc2guZGVidXJyIjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjMuMi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAg
ImxvZGFzaC5fcm9vdCI6ICIzLjAuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJsb2Rhc2guZW5kc3dpdGgiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNC4yLjEiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9
LAorICAgICAgICAibG9kYXNoLmZpbmQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNC42LjAi
LAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAg
ICAgICB9LAorICAgICAgICAibG9kYXNoLmZpbmRpbmRleCI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICI0LjYuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJsb2Rhc2guaW5kZXhvZiI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICI0LjAuNSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJsb2Rhc2guaXNhcmd1bWVudHMi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4xLjAiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAibG9kYXNo
LmlzYXJyYXkiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4wLjQiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAg
ICAibG9kYXNoLmtleXMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4xLjIiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICAgICAibG9kYXNoLl9nZXRuYXRpdmUiOiAiMy45LjEiLAor
ICAgICAgICAgICAgImxvZGFzaC5pc2FyZ3VtZW50cyI6ICIzLjEuMCIsCisgICAgICAgICAgICAi
bG9kYXNoLmlzYXJyYXkiOiAiMy4wLjQiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg
ICAibG9kYXNoLnBpY2tieSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI0LjYuMCIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0s
CisgICAgICAgICJsb2Rhc2gud29yZHMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4yLjAi
LAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAibG9kYXNoLl9yb290IjogIjMuMC4x
IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImxvbmdlc3QiOiB7CisgICAgICAg
ICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAibG9vc2UtZW52aWZ5Ijogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAgICAgImpzLXRva2VucyI6ICIxLjAuMyIKKyAgICAgICAgICB9LAorICAgICAgICAgICJkZXBl
bmRlbmNpZXMiOiB7CisgICAgICAgICAgICAianMtdG9rZW5zIjogeworICAgICAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjAuMyIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAg
IH0sCisgICAgICAgICJsb3dlci1jYXNlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4z
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAg
ICAgICAgfSwKKyAgICAgICAgImxvd2VyLWNhc2UtZmlyc3QiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMS4wLjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAibG93ZXItY2Fz
ZSI6ICIxLjEuMyIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJscnUtY2FjaGUi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNC4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICAgICAicHNldWRvbWFwIjogIjEuMC4yIiwKKyAgICAgICAgICAgICJ5YWxsaXN0Ijog
IjIuMC4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm1hY2FkZHJlc3MiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMC4yLjgiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAibWFrZWVycm9y
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4xMSIsCisgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgICAgICJ0bXBsIjogIjEuMC40IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAg
ICAgICAgIm1hcmtlZCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjMuNiIsCisgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisg
ICAgICAgICJtYXJrZWQtdGVybWluYWwiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS42LjIi
LAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiY2FyZGluYWwiOiAiMS4wLjAiLAor
ICAgICAgICAgICAgImNoYWxrIjogIjEuMS4zIiwKKyAgICAgICAgICAgICJjbGktdGFibGUiOiAi
MC4zLjEiLAorICAgICAgICAgICAgImxvZGFzaC5hc3NpZ24iOiAiNC4yLjAiLAorICAgICAgICAg
ICAgIm5vZGUtZW1vamkiOiAiMS40LjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg
ICAibWF0aC1leHByZXNzaW9uLWV2YWx1YXRvciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIx
LjIuMTQiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAibG9kYXNoLmluZGV4b2Yi
OiAiNC4wLjUiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibWVkaWEtdHlwZXIi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4zLjAiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAibWVtb3J5
LWZzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMy4wIiwKKyAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAgICAgImVycm5vIjogIjAuMS40IiwKKyAgICAgICAgICAgICJyZWFkYWJsZS1z
dHJlYW0iOiAiMi4wLjYiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibWVyZ2Ui
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4yLjAiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAibWVyZ2Ut
ZGVzY3JpcHRvcnMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAg
ICAgICAibWV0aG9kcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMiIsCisgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisg
ICAgICAgICJtaWNyb21hdGNoIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMy4xMSIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJhcnItZGlmZiI6ICIyLjAuMCIsCisgICAg
ICAgICAgICAiYXJyYXktdW5pcXVlIjogIjAuMi4xIiwKKyAgICAgICAgICAgICJicmFjZXMiOiAi
MS44LjUiLAorICAgICAgICAgICAgImV4cGFuZC1icmFja2V0cyI6ICIwLjEuNSIsCisgICAgICAg
ICAgICAiZXh0Z2xvYiI6ICIwLjMuMiIsCisgICAgICAgICAgICAiZmlsZW5hbWUtcmVnZXgiOiAi
Mi4wLjAiLAorICAgICAgICAgICAgImlzLWV4dGdsb2IiOiAiMS4wLjAiLAorICAgICAgICAgICAg
ImlzLWdsb2IiOiAiMi4wLjEiLAorICAgICAgICAgICAgImtpbmQtb2YiOiAiMy4wLjQiLAorICAg
ICAgICAgICAgIm5vcm1hbGl6ZS1wYXRoIjogIjIuMC4xIiwKKyAgICAgICAgICAgICJvYmplY3Qu
b21pdCI6ICIyLjAuMCIsCisgICAgICAgICAgICAicGFyc2UtZ2xvYiI6ICIzLjAuNCIsCisgICAg
ICAgICAgICAicmVnZXgtY2FjaGUiOiAiMC40LjMiCisgICAgICAgICAgfQorICAgICAgICB9LAor
ICAgICAgICAibWltZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjIuMTEiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAor
ICAgICAgICAibWltZS1kYiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjI0LjAiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9
LAorICAgICAgICAibWltZS10eXBlcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjEuMTIi
LAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAibWltZS1kYiI6ICIxLjI0LjAiCisg
ICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibWluaW1hdGNoIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjMuMC4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJy
YWNlLWV4cGFuc2lvbiI6ICIxLjEuNiIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJtaW5pbWlzdCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjIuMCIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAg
ICAgICJta2RpcnAiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC41LjEiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICAgICAibWluaW1pc3QiOiAiMC4wLjgiCisgICAgICAgICAgfSwK
KyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAgICAgIm1pbmltaXN0Ijogewor
ICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjAuOCIsCisgICAgICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJtcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIwLjcuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlCisgICAgICAgIH0sCisgICAgICAgICJtdWx0aW1hdGNoIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjIuMS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImFycmF5LWRp
ZmZlciI6ICIxLjAuMCIsCisgICAgICAgICAgICAiYXJyYXktdW5pb24iOiAiMS4wLjIiLAorICAg
ICAgICAgICAgImFycmlmeSI6ICIxLjAuMSIsCisgICAgICAgICAgICAibWluaW1hdGNoIjogIjMu
MC4zIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm11dGUtc3RyZWFtIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC41IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgIm5hbiI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIyLjQuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAg
ICAgfSwKKyAgICAgICAgIm5hdHVyYWwtY29tcGFyZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIxLjQuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlCisgICAgICAgIH0sCisgICAgICAgICJuY25hbWUiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAieG1sLWNoYXItY2xh
c3NlcyI6ICIxLjAuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJuZWdvdGlh
dG9yIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNi4xIiwKKyAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgIm5v
LWNhc2UiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4zLjAiLAorICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICAgICAibG93ZXItY2FzZSI6ICIxLjEuMyIKKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJub2RlLWVtb2ppIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
NC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgInN0cmluZy5wcm90b3R5cGUu
Y29kZXBvaW50YXQiOiAiMC4yLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAi
bm9kZS1pbnQ2NCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjQuMCIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAg
ICAgICJub2RlLWxpYnMtYnJvd3NlciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjYuMCIs
CisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJhc3NlcnQiOiAiMS40LjEiLAorICAg
ICAgICAgICAgImJyb3dzZXJpZnktemxpYiI6ICIwLjEuNCIsCisgICAgICAgICAgICAiYnVmZmVy
IjogIjQuOS4xIiwKKyAgICAgICAgICAgICJjb25zb2xlLWJyb3dzZXJpZnkiOiAiMS4xLjAiLAor
ICAgICAgICAgICAgImNvbnN0YW50cy1icm93c2VyaWZ5IjogIjAuMC4xIiwKKyAgICAgICAgICAg
ICJjcnlwdG8tYnJvd3NlcmlmeSI6ICIzLjIuOCIsCisgICAgICAgICAgICAiZG9tYWluLWJyb3dz
ZXIiOiAiMS4xLjciLAorICAgICAgICAgICAgImV2ZW50cyI6ICIxLjEuMSIsCisgICAgICAgICAg
ICAiaHR0cC1icm93c2VyaWZ5IjogIjEuNy4wIiwKKyAgICAgICAgICAgICJodHRwcy1icm93c2Vy
aWZ5IjogIjAuMC4wIiwKKyAgICAgICAgICAgICJvcy1icm93c2VyaWZ5IjogIjAuMS4yIiwKKyAg
ICAgICAgICAgICJwYXRoLWJyb3dzZXJpZnkiOiAiMC4wLjAiLAorICAgICAgICAgICAgInByb2Nl
c3MiOiAiMC4xMS45IiwKKyAgICAgICAgICAgICJwdW55Y29kZSI6ICIxLjQuMSIsCisgICAgICAg
ICAgICAicXVlcnlzdHJpbmctZXMzIjogIjAuMi4xIiwKKyAgICAgICAgICAgICJyZWFkYWJsZS1z
dHJlYW0iOiAiMS4xLjE0IiwKKyAgICAgICAgICAgICJzdHJlYW0tYnJvd3NlcmlmeSI6ICIxLjAu
MCIsCisgICAgICAgICAgICAic3RyaW5nX2RlY29kZXIiOiAiMC4xMC4zMSIsCisgICAgICAgICAg
ICAidGltZXJzLWJyb3dzZXJpZnkiOiAiMS40LjIiLAorICAgICAgICAgICAgInR0eS1icm93c2Vy
aWZ5IjogIjAuMC4wIiwKKyAgICAgICAgICAgICJ1cmwiOiAiMC4xMC4zIiwKKyAgICAgICAgICAg
ICJ1dGlsIjogIjAuMTAuMyIsCisgICAgICAgICAgICAidm0tYnJvd3NlcmlmeSI6ICIwLjAuNCIK
KyAgICAgICAgICB9LAorICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICAgICAi
aXNhcnJheSI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4wLjEiLAorICAgICAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgInJlYWRhYmxlLXN0cmVhbSI6IHsKKyAgICAgICAgICAgICAg
InZlcnNpb24iOiAiMS4xLjE0IiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAgICAgICAgICJjb3JlLXV0aWwtaXMiOiAiMS4wLjIiLAorICAgICAgICAgICAgICAgICJp
bmhlcml0cyI6ICIyLjAuMyIsCisgICAgICAgICAgICAgICAgImlzYXJyYXkiOiAiMC4wLjEiLAor
ICAgICAgICAgICAgICAgICJzdHJpbmdfZGVjb2RlciI6ICIwLjEwLjMxIgorICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibm9k
ZS1ub3RpZmllciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI0LjYuMSIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICJjbGktdXNhZ2UiOiAiMC4xLjQiLAorICAgICAgICAgICAg
Imdyb3dseSI6ICIxLjMuMCIsCisgICAgICAgICAgICAibG9kYXNoLmNsb25lZGVlcCI6ICIzLjAu
MiIsCisgICAgICAgICAgICAibWluaW1pc3QiOiAiMS4yLjAiLAorICAgICAgICAgICAgInNlbXZl
ciI6ICI1LjMuMCIsCisgICAgICAgICAgICAic2hlbGx3b3JkcyI6ICIwLjEuMCIsCisgICAgICAg
ICAgICAid2hpY2giOiAiMS4yLjExIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAg
Im5vZGUtdXVpZCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjQuNyIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAg
ICAgICJub3B0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC42IiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAgICAgImFiYnJldiI6ICIxLjAuOSIKKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJub3JtYWxpemUtcGFja2FnZS1kYXRhIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjIuMy41IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImhvc3Rl
ZC1naXQtaW5mbyI6ICIyLjEuNSIsCisgICAgICAgICAgICAiaXMtYnVpbHRpbi1tb2R1bGUiOiAi
MS4wLjAiLAorICAgICAgICAgICAgInNlbXZlciI6ICI1LjMuMCIsCisgICAgICAgICAgICAidmFs
aWRhdGUtbnBtLXBhY2thZ2UtbGljZW5zZSI6ICIzLjAuMSIKKyAgICAgICAgICB9CisgICAgICAg
IH0sCisgICAgICAgICJub3JtYWxpemUtcGF0aCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIy
LjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
CisgICAgICAgIH0sCisgICAgICAgICJub3JtYWxpemUtcmFuZ2UiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMC4xLjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAibm9ybWFsaXplLXVybCI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIxLjYuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAg
ICJvYmplY3QtYXNzaWduIjogIjQuMS4wIiwKKyAgICAgICAgICAgICJwcmVwZW5kLWh0dHAiOiAi
MS4wLjQiLAorICAgICAgICAgICAgInF1ZXJ5LXN0cmluZyI6ICI0LjIuMyIsCisgICAgICAgICAg
ICAic29ydC1rZXlzIjogIjEuMS4yIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAg
Im50aC1jaGVjayI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICJib29sYmFzZSI6ICIxLjAuMCIKKyAgICAgICAgICB9Cisg
ICAgICAgIH0sCisgICAgICAgICJudW0yZnJhY3Rpb24iOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMS4yLjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZQorICAgICAgICB9LAorICAgICAgICAibnVtYmVyLWlzLW5hbiI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJud21hdGNoZXIiOiB7CisgICAgICAg
ICAgInZlcnNpb24iOiAiMS4zLjgiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAib2F1dGgtc2lnbiI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIwLjguMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJvYmplY3QtYXNzaWdu
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjQuMS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgIm9iamVj
dC5vbWl0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAgICAgImZvci1vd24iOiAiMC4xLjQiLAorICAgICAgICAgICAgImlzLWV4
dGVuZGFibGUiOiAiMC4xLjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAib24t
ZmluaXNoZWQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4zLjAiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICAgICAiZWUtZmlyc3QiOiAiMS4xLjEiCisgICAgICAgICAgfQorICAg
ICAgICB9LAorICAgICAgICAib24taGVhZGVycyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIx
LjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
CisgICAgICAgIH0sCisgICAgICAgICJvbmNlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
NC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgIndyYXBweSI6ICIxLjAuMiIK
KyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJvbmV0aW1lIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuMS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgIm9wZW4iOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMC4wLjUiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAib3BuIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjQuMC4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgIm9iamVj
dC1hc3NpZ24iOiAiNC4xLjAiLAorICAgICAgICAgICAgInBpbmtpZS1wcm9taXNlIjogIjIuMC4x
IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm9wdGltaXN0IjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjAuNi4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAg
Im1pbmltaXN0IjogIjAuMC4xMCIsCisgICAgICAgICAgICAid29yZHdyYXAiOiAiMC4wLjMiCisg
ICAgICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAgICAgIm1p
bmltaXN0IjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjAuMTAiLAorICAgICAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgIndvcmR3cmFwIjogeworICAgICAgICAgICAgICAidmVyc2lv
biI6ICIwLjAuMyIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAg
ICAgImRldiI6IHRydWUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisg
ICAgICAgICJvcHRpb25hdG9yIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuOC4yIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImRlZXAtaXMiOiAiMC4xLjMiLAorICAgICAg
ICAgICAgImZhc3QtbGV2ZW5zaHRlaW4iOiAiMi4wLjQiLAorICAgICAgICAgICAgImxldm4iOiAi
MC4zLjAiLAorICAgICAgICAgICAgInByZWx1ZGUtbHMiOiAiMS4xLjIiLAorICAgICAgICAgICAg
InR5cGUtY2hlY2siOiAiMC4zLjIiLAorICAgICAgICAgICAgIndvcmR3cmFwIjogIjEuMC4wIgor
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm9yaWdpbmFsIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgInVy
bC1wYXJzZSI6ICIxLjAuNSIKKyAgICAgICAgICB9LAorICAgICAgICAgICJkZXBlbmRlbmNpZXMi
OiB7CisgICAgICAgICAgICAidXJsLXBhcnNlIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6
ICIxLjAuNSIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAg
ICAicXVlcnlzdHJpbmdpZnkiOiAiMC4wLjQiLAorICAgICAgICAgICAgICAgICJyZXF1aXJlcy1w
b3J0IjogIjEuMC4wIgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAg
fQorICAgICAgICB9LAorICAgICAgICAib3MtYnJvd3NlcmlmeSI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIwLjEuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJvcy1ob21lZGlyIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgIm9zLWxvY2FsZSI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIxLjQuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAg
ICJsY2lkIjogIjEuMC4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm9zLXRt
cGRpciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJw
YWtvIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi45IiwKKyAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInBh
cmFtLWNhc2UiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4xLjAiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICAgICAibm8tY2FzZSI6ICIyLjMuMCIKKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJwYXJzZS1nbG9iIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMu
MC40IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImdsb2ItYmFzZSI6ICIwLjMu
MCIsCisgICAgICAgICAgICAiaXMtZG90ZmlsZSI6ICIxLjAuMiIsCisgICAgICAgICAgICAiaXMt
ZXh0Z2xvYiI6ICIxLjAuMCIsCisgICAgICAgICAgICAiaXMtZ2xvYiI6ICIyLjAuMSIKKyAgICAg
ICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJwYXJzZS1qc29uIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjIuMi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImVycm9y
LWV4IjogIjEuMy4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInBhcnNlNSI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjUuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJwYXJzZXVy
bCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjMuMSIsCisgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJwYXNj
YWwtY2FzZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgICAgICJjYW1lbC1jYXNlIjogIjMuMC4wIiwKKyAgICAgICAgICAgICJ1
cHBlci1jYXNlLWZpcnN0IjogIjEuMS4yIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg
ICAgInBhdGgtYnJvd3NlcmlmeSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjAuMCIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAg
IH0sCisgICAgICAgICJwYXRoLWNhc2UiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4xLjAi
LAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAibm8tY2FzZSI6ICIyLjMuMCIKKyAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJwYXRoLWV4aXN0cyI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIyLjEuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJw
aW5raWUtcHJvbWlzZSI6ICIyLjAuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJwYXRoLWlzLWFic29sdXRlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAg
fSwKKyAgICAgICAgInBhdGgtaXMtaW5zaWRlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
MC4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUK
KyAgICAgICAgfSwKKyAgICAgICAgInBhdGgtcGFyc2UiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMS4wLjUiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZQorICAgICAgICB9LAorICAgICAgICAicGF0aC10by1yZWdleHAiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMC4xLjciLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAicGF0aC10eXBlIjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuMS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAg
ImdyYWNlZnVsLWZzIjogIjQuMS44IiwKKyAgICAgICAgICAgICJwaWZ5IjogIjIuMy4wIiwKKyAg
ICAgICAgICAgICJwaW5raWUtcHJvbWlzZSI6ICIyLjAuMSIKKyAgICAgICAgICB9CisgICAgICAg
IH0sCisgICAgICAgICJwYmtkZjItY29tcGF0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIu
MC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUK
KyAgICAgICAgfSwKKyAgICAgICAgInBpZnkiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4z
LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQor
ICAgICAgICB9LAorICAgICAgICAicGlua2llIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIu
MC40IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUK
KyAgICAgICAgfSwKKyAgICAgICAgInBpbmtpZS1wcm9taXNlIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjIuMC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgInBpbmtpZSI6
ICIyLjAuNCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJwa2ctZGlyIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAgICAgImZpbmQtdXAiOiAiMS4xLjIiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg
ICAicGtnLXVwIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAgICAgImZpbmQtdXAiOiAiMS4xLjIiCisgICAgICAgICAgfQorICAg
ICAgICB9LAorICAgICAgICAicGx1cmFsaXplIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
Mi4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUK
KyAgICAgICAgfSwKKyAgICAgICAgInBvc3Rjc3MiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
NS4yLjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAianMtYmFzZTY0IjogIjIu
MS45IiwKKyAgICAgICAgICAgICJzb3VyY2UtbWFwIjogIjAuNS42IiwKKyAgICAgICAgICAgICJz
dXBwb3J0cy1jb2xvciI6ICIzLjEuMiIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJwb3N0Y3NzLWNhbGMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNS4zLjEiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICAgICAicG9zdGNzcyI6ICI1LjIuMiIsCisgICAgICAgICAg
ICAicG9zdGNzcy1tZXNzYWdlLWhlbHBlcnMiOiAiMi4wLjAiLAorICAgICAgICAgICAgInJlZHVj
ZS1jc3MtY2FsYyI6ICIxLjMuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJw
b3N0Y3NzLWNvbG9ybWluIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMi4xIiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAgICAgImNvbG9ybWluIjogIjEuMS4yIiwKKyAgICAgICAg
ICAgICJwb3N0Y3NzIjogIjUuMi4yIiwKKyAgICAgICAgICAgICJwb3N0Y3NzLXZhbHVlLXBhcnNl
ciI6ICIzLjMuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJwb3N0Y3NzLWNv
bnZlcnQtdmFsdWVzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuNC4wIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAgICAgInBvc3Rjc3MiOiAiNS4yLjIiLAorICAgICAgICAgICAg
InBvc3Rjc3MtdmFsdWUtcGFyc2VyIjogIjMuMy4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgInBvc3Rjc3MtZGlzY2FyZC1jb21tZW50cyI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIyLjAuNCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJwb3N0Y3NzIjog
IjUuMi4yIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInBvc3Rjc3MtZGlzY2Fy
ZC1kdXBsaWNhdGVzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4xIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAgICAgInBvc3Rjc3MiOiAiNS4yLjIiCisgICAgICAgICAgfQor
ICAgICAgICB9LAorICAgICAgICAicG9zdGNzcy1kaXNjYXJkLWVtcHR5IjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjIuMS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgInBv
c3Rjc3MiOiAiNS4yLjIiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAicG9zdGNz
cy1kaXNjYXJkLW92ZXJyaWRkZW4iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjEiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAicG9zdGNzcyI6ICI1LjIuMiIKKyAgICAg
ICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJwb3N0Y3NzLWRpc2NhcmQtdW51c2VkIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMi4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAgICAgImZsYXR0ZW4iOiAiMS4wLjIiLAorICAgICAgICAgICAgInBvc3Rjc3MiOiAiNS4yLjIi
LAorICAgICAgICAgICAgInVuaXFzIjogIjIuMC4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgInBvc3Rjc3MtZmlsdGVyLXBsdWdpbnMiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMi4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAicG9zdGNzcyI6ICI1
LjIuMiIsCisgICAgICAgICAgICAidW5pcWlkIjogIjMuMS4wIgorICAgICAgICAgIH0KKyAgICAg
ICAgfSwKKyAgICAgICAgInBvc3Rjc3MtbG9hZGVyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjAuMTMuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJsb2FkZXItdXRpbHMi
OiAiMC4yLjE2IiwKKyAgICAgICAgICAgICJwb3N0Y3NzIjogIjUuMi4yIgorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgInBvc3Rjc3MtbWVyZ2UtaWRlbnRzIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjIuMS43IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImhh
cyI6ICIxLjAuMSIsCisgICAgICAgICAgICAicG9zdGNzcyI6ICI1LjIuMiIsCisgICAgICAgICAg
ICAicG9zdGNzcy12YWx1ZS1wYXJzZXIiOiAiMy4zLjAiCisgICAgICAgICAgfQorICAgICAgICB9
LAorICAgICAgICAicG9zdGNzcy1tZXJnZS1sb25naGFuZCI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIyLjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJwb3N0Y3NzIjog
IjUuMi4yIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInBvc3Rjc3MtbWVyZ2Ut
cnVsZXMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjEwIiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAgICAgInBvc3Rjc3MiOiAiNS4yLjIiLAorICAgICAgICAgICAgInZlbmRv
cnMiOiAiMS4wLjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAicG9zdGNzcy1t
ZXNzYWdlLWhlbHBlcnMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAor
ICAgICAgICAicG9zdGNzcy1taW5pZnktZm9udC12YWx1ZXMiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMS4wLjUiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAib2JqZWN0LWFz
c2lnbiI6ICI0LjEuMCIsCisgICAgICAgICAgICAicG9zdGNzcyI6ICI1LjIuMiIsCisgICAgICAg
ICAgICAicG9zdGNzcy12YWx1ZS1wYXJzZXIiOiAiMy4zLjAiCisgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgICAicG9zdGNzcy1taW5pZnktZ3JhZGllbnRzIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjEuMC4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgInBvc3Rj
c3MiOiAiNS4yLjIiLAorICAgICAgICAgICAgInBvc3Rjc3MtdmFsdWUtcGFyc2VyIjogIjMuMy4w
IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInBvc3Rjc3MtbWluaWZ5LXBhcmFt
cyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuNSIsCisgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgICAgICJhbHBoYW51bS1zb3J0IjogIjEuMC4yIiwKKyAgICAgICAgICAgICJwb3N0
Y3NzIjogIjUuMi4yIiwKKyAgICAgICAgICAgICJwb3N0Y3NzLXZhbHVlLXBhcnNlciI6ICIzLjMu
MCIsCisgICAgICAgICAgICAidW5pcXMiOiAiMi4wLjAiCisgICAgICAgICAgfQorICAgICAgICB9
LAorICAgICAgICAicG9zdGNzcy1taW5pZnktc2VsZWN0b3JzIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjIuMC41IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImFscGhhbnVt
LXNvcnQiOiAiMS4wLjIiLAorICAgICAgICAgICAgInBvc3Rjc3MiOiAiNS4yLjIiLAorICAgICAg
ICAgICAgInBvc3Rjc3Mtc2VsZWN0b3ItcGFyc2VyIjogIjIuMi4xIgorICAgICAgICAgIH0KKyAg
ICAgICAgfSwKKyAgICAgICAgInBvc3Rjc3MtbW9kdWxlcy1leHRyYWN0LWltcG9ydHMiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICAgICAicG9zdGNzcyI6ICI1LjIuMiIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJwb3N0Y3NzLW1vZHVsZXMtbG9jYWwtYnktZGVmYXVsdCI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIxLjEuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJjc3Mtc2VsZWN0
b3ItdG9rZW5pemVyIjogIjAuNi4wIiwKKyAgICAgICAgICAgICJwb3N0Y3NzIjogIjUuMi4yIgor
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInBvc3Rjc3MtbW9kdWxlcy1zY29wZSI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgICAgICJjc3Mtc2VsZWN0b3ItdG9rZW5pemVyIjogIjAuNi4wIiwKKyAgICAgICAgICAg
ICJwb3N0Y3NzIjogIjUuMi4yIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInBv
c3Rjc3MtbW9kdWxlcy12YWx1ZXMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4yLjIiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiaWNzcy1yZXBsYWNlLXN5bWJvbHMiOiAi
MS4wLjIiLAorICAgICAgICAgICAgInBvc3Rjc3MiOiAiNS4yLjIiCisgICAgICAgICAgfQorICAg
ICAgICB9LAorICAgICAgICAicG9zdGNzcy1ub3JtYWxpemUtY2hhcnNldCI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIxLjEuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJw
b3N0Y3NzIjogIjUuMi4yIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInBvc3Rj
c3Mtbm9ybWFsaXplLXVybCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjAuNyIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJpcy1hYnNvbHV0ZS11cmwiOiAiMi4wLjAiLAor
ICAgICAgICAgICAgIm5vcm1hbGl6ZS11cmwiOiAiMS42LjEiLAorICAgICAgICAgICAgInBvc3Rj
c3MiOiAiNS4yLjIiLAorICAgICAgICAgICAgInBvc3Rjc3MtdmFsdWUtcGFyc2VyIjogIjMuMy4w
IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInBvc3Rjc3Mtb3JkZXJlZC12YWx1
ZXMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4yLjIiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7
CisgICAgICAgICAgICAicG9zdGNzcyI6ICI1LjIuMiIsCisgICAgICAgICAgICAicG9zdGNzcy12
YWx1ZS1wYXJzZXIiOiAiMy4zLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAi
cG9zdGNzcy1yZWR1Y2UtaWRlbnRzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMy4wIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgInBvc3Rjc3MiOiAiNS4yLjIiLAorICAg
ICAgICAgICAgInBvc3Rjc3MtdmFsdWUtcGFyc2VyIjogIjMuMy4wIgorICAgICAgICAgIH0KKyAg
ICAgICAgfSwKKyAgICAgICAgInBvc3Rjc3MtcmVkdWNlLWluaXRpYWwiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAicG9z
dGNzcyI6ICI1LjIuMiIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJwb3N0Y3Nz
LXJlZHVjZS10cmFuc2Zvcm1zIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4zIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgInBvc3Rjc3MiOiAiNS4yLjIiLAorICAgICAg
ICAgICAgInBvc3Rjc3MtdmFsdWUtcGFyc2VyIjogIjMuMy4wIgorICAgICAgICAgIH0KKyAgICAg
ICAgfSwKKyAgICAgICAgInBvc3Rjc3Mtc2VsZWN0b3ItcGFyc2VyIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjIuMi4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImZsYXR0
ZW4iOiAiMS4wLjIiLAorICAgICAgICAgICAgImluZGV4ZXMtb2YiOiAiMS4wLjEiLAorICAgICAg
ICAgICAgInVuaXEiOiAiMS4wLjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAi
cG9zdGNzcy1zdmdvIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMS41IiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAgICAgImlzLXN2ZyI6ICIyLjAuMSIsCisgICAgICAgICAgICAi
cG9zdGNzcyI6ICI1LjIuMiIsCisgICAgICAgICAgICAicG9zdGNzcy12YWx1ZS1wYXJzZXIiOiAi
My4zLjAiLAorICAgICAgICAgICAgInN2Z28iOiAiMC43LjEiCisgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgICAicG9zdGNzcy11bmlxdWUtc2VsZWN0b3JzIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjIuMC4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImFscGhh
bnVtLXNvcnQiOiAiMS4wLjIiLAorICAgICAgICAgICAgInBvc3Rjc3MiOiAiNS4yLjIiLAorICAg
ICAgICAgICAgInVuaXFzIjogIjIuMC4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg
ICAgInBvc3Rjc3MtdmFsdWUtcGFyc2VyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMy4w
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAg
ICAgICAgfSwKKyAgICAgICAgInBvc3Rjc3MtemluZGV4IjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjIuMS4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgInBvc3Rjc3MiOiAi
NS4yLjIiLAorICAgICAgICAgICAgInVuaXFzIjogIjIuMC4wIgorICAgICAgICAgIH0KKyAgICAg
ICAgfSwKKyAgICAgICAgInByZWx1ZGUtbHMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4x
LjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQor
ICAgICAgICB9LAorICAgICAgICAicHJlcGVuZC1odHRwIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuMC40IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInByZXNlcnZlIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjAuMi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInByZXR0eS1lcnJvciI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIyLjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJy
ZW5kZXJraWQiOiAiMi4wLjAiLAorICAgICAgICAgICAgInV0aWxhIjogIjAuNC4wIgorICAgICAg
ICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInByZXR0eS1mb3JtYXQiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMy44LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAicHJpdmF0ZSI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIwLjEuNiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJwcm9jZXNzIjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjAuMTEuOSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJwcm9jZXNzLW5leHRpY2st
YXJncyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuNyIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJw
cm9ncmVzcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuOCIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAg
ICJwcm9taXNlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjcuMS4xIiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAgICAgImFzYXAiOiAiMi4wLjUiCisgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgICAicHJveHktYWRkciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEu
MiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAor
ICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJmb3J3YXJkZWQiOiAiMC4xLjAi
LAorICAgICAgICAgICAgImlwYWRkci5qcyI6ICIxLjEuMSIKKyAgICAgICAgICB9CisgICAgICAg
IH0sCisgICAgICAgICJwcnIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4wLjAiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9
LAorICAgICAgICAicHNldWRvbWFwIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAg
ICAgfSwKKyAgICAgICAgInB1bnljb2RlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuNC4x
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAg
ICAgICAgfSwKKyAgICAgICAgInEiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS40LjEiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAg
ICB9LAorICAgICAgICAicXMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNi4yLjEiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9
LAorICAgICAgICAicXVlcnktc3RyaW5nIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjQuMi4z
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisg
ICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgIm9iamVjdC1hc3NpZ24iOiAiNC4x
LjAiLAorICAgICAgICAgICAgInN0cmljdC11cmktZW5jb2RlIjogIjEuMS4wIgorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgInF1ZXJ5c3RyaW5nIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjAuMi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInF1ZXJ5c3RyaW5nLWVzMyI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIwLjIuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJxdWVyeXN0cmluZ2lmeSI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjAuNCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJyYW5kb21h
dGljIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS41IiwKKyAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAgICAgImlzLW51bWJlciI6ICIyLjEuMCIsCisgICAgICAgICAgICAia2luZC1v
ZiI6ICIzLjAuNCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJyYW5nZS1wYXJz
ZXIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4yLjAiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAicmVh
Y3QtZGV2LXV0aWxzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4xIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAgICAgImFuc2ktaHRtbCI6ICIwLjAuNSIsCisgICAgICAgICAg
ICAiY2hhbGsiOiAiMS4xLjMiLAorICAgICAgICAgICAgImVzY2FwZS1zdHJpbmctcmVnZXhwIjog
IjEuMC41IiwKKyAgICAgICAgICAgICJodG1sLWVudGl0aWVzIjogIjEuMi4wIiwKKyAgICAgICAg
ICAgICJvcG4iOiAiNC4wLjIiLAorICAgICAgICAgICAgInNvY2tqcy1jbGllbnQiOiAiMS4wLjMi
LAorICAgICAgICAgICAgInN0cmlwLWFuc2kiOiAiMy4wLjEiCisgICAgICAgICAgfSwKKyAgICAg
ICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAgICAgImFuc2ktcmVnZXgiOiB7CisgICAg
ICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICJhbnNpLXN0eWxlcyI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMi4yLjEiLAor
ICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVl
CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImNoYWxrIjogeworICAgICAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjEuMyIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgICAgICAgICAiYW5zaS1zdHlsZXMiOiAiMi4yLjEiLAorICAgICAgICAgICAgICAgICJlc2Nh
cGUtc3RyaW5nLXJlZ2V4cCI6ICIxLjAuNSIsCisgICAgICAgICAgICAgICAgImhhcy1hbnNpIjog
IjIuMC4wIiwKKyAgICAgICAgICAgICAgICAic3RyaXAtYW5zaSI6ICIzLjAuMSIsCisgICAgICAg
ICAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogIjIuMC4wIgorICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgImRlYnVnIjogeworICAgICAgICAgICAgICAidmVyc2lv
biI6ICIyLjIuMCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAg
ICAgICAibXMiOiAiMC43LjEiCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAiZXNjYXBlLXN0cmluZy1yZWdleHAiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuMC41IiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAg
ICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJldmVudHNvdXJjZSI6
IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjYiLAorICAgICAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgIm9yaWdpbmFsIjogIjEuMC4wIgorICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImZheWUtd2Vic29ja2V0Ijog
eworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjcuMyIsCisgICAgICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJy
ZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAid2Vic29ja2V0LWRyaXZlciI6ICIwLjYuNSIK
KyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJoYXMtYW5zaSI6
IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgImFuc2ktcmVnZXgiOiAiMi4wLjAiCisgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiaW5oZXJpdHMiOiB7Cisg
ICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4zIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICJqc29uMyI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMy4zLjIiLAorICAg
ICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgIm1zIjogeworICAgICAgICAgICAgICAidmVyc2lv
biI6ICIwLjcuMSIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAg
ICAgImRldiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAib2JqZWN0LWFzc2ln
biI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiNC4xLjAiLAorICAgICAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAib3JpZ2luYWwiOiB7
CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAgICAgICAgICJ1cmwtcGFyc2UiOiAiMS4wLjUiCisgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICAgICAg
ICAgInVybC1wYXJzZSI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC41IiwK
KyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAg
ICAgICAgICAicXVlcnlzdHJpbmdpZnkiOiAiMC4wLjQiLAorICAgICAgICAgICAgICAgICAgICAi
cmVxdWlyZXMtcG9ydCI6ICIxLjAuMCIKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAicGlu
a2llIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuNCIsCisgICAgICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJwaW5raWUtcHJv
bWlzZSI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjEiLAorICAgICAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
ICAgICAgICAicGlua2llIjogIjIuMC40IgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
LAorICAgICAgICAgICAgInF1ZXJ5c3RyaW5naWZ5IjogeworICAgICAgICAgICAgICAidmVyc2lv
biI6ICIwLjAuNCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAg
ICAgImRldiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAicmVxdWlyZXMtcG9y
dCI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9
LAorICAgICAgICAgICAgInNvY2tqcy1jbGllbnQiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuMC4zIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAg
ICAgICJkZWJ1ZyI6ICIyLjIuMCIsCisgICAgICAgICAgICAgICAgImV2ZW50c291cmNlIjogIjAu
MS42IiwKKyAgICAgICAgICAgICAgICAiZmF5ZS13ZWJzb2NrZXQiOiAiMC43LjMiLAorICAgICAg
ICAgICAgICAgICJpbmhlcml0cyI6ICIyLjAuMyIsCisgICAgICAgICAgICAgICAgImpzb24zIjog
IjMuMy4yIiwKKyAgICAgICAgICAgICAgICAidXJsLXBhcnNlIjogIjEuMS4zIgorICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN0cmlwLWFuc2kiOiB7CisgICAg
ICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4xIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAgICAgICAgICJhbnNpLXJlZ2V4IjogIjIuMC4wIgorICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogeworICAg
ICAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAidXJsLXBhcnNlIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMyIsCisg
ICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAicXVlcnlzdHJp
bmdpZnkiOiAiMC4wLjQiLAorICAgICAgICAgICAgICAgICJyZXF1aXJlcy1wb3J0IjogIjEuMC4w
IgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgIndlYnNvY2tl
dC1kcml2ZXIiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNi41IiwKKyAgICAgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICJ3ZWJzb2NrZXQtZXh0ZW5z
aW9ucyI6ICIwLjEuMSIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICJ3ZWJzb2NrZXQtZXh0ZW5zaW9ucyI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAi
MC4xLjEiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJk
ZXYiOiB0cnVlCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg
ICAicmVhZC1wa2ciOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjAiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICAgICAibG9hZC1qc29uLWZpbGUiOiAiMS4xLjAiLAorICAgICAg
ICAgICAgIm5vcm1hbGl6ZS1wYWNrYWdlLWRhdGEiOiAiMi4zLjUiLAorICAgICAgICAgICAgInBh
dGgtdHlwZSI6ICIxLjEuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJyZWFk
LXBrZy11cCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgICAgICJmaW5kLXVwIjogIjEuMS4yIiwKKyAgICAgICAgICAgICJyZWFk
LXBrZyI6ICIxLjEuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJyZWFkYWJs
ZS1zdHJlYW0iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjYiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICAgICAiY29yZS11dGlsLWlzIjogIjEuMC4yIiwKKyAgICAgICAgICAg
ICJpbmhlcml0cyI6ICIyLjAuMyIsCisgICAgICAgICAgICAiaXNhcnJheSI6ICIxLjAuMCIsCisg
ICAgICAgICAgICAicHJvY2Vzcy1uZXh0aWNrLWFyZ3MiOiAiMS4wLjciLAorICAgICAgICAgICAg
InN0cmluZ19kZWNvZGVyIjogIjAuMTAuMzEiLAorICAgICAgICAgICAgInV0aWwtZGVwcmVjYXRl
IjogIjEuMC4yIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInJlYWRkaXJwIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAgICAgImdyYWNlZnVsLWZzIjogIjQuMS44IiwKKyAgICAgICAgICAgICJtaW5pbWF0Y2gi
OiAiMy4wLjMiLAorICAgICAgICAgICAgInJlYWRhYmxlLXN0cmVhbSI6ICIyLjAuNiIsCisgICAg
ICAgICAgICAic2V0LWltbWVkaWF0ZS1zaGltIjogIjEuMC4xIgorICAgICAgICAgIH0KKyAgICAg
ICAgfSwKKyAgICAgICAgInJlYWRsaW5lMiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAu
MSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAor
ICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJjb2RlLXBvaW50LWF0IjogIjEu
MC4wIiwKKyAgICAgICAgICAgICJpcy1mdWxsd2lkdGgtY29kZS1wb2ludCI6ICIxLjAuMCIsCisg
ICAgICAgICAgICAibXV0ZS1zdHJlYW0iOiAiMC4wLjUiCisgICAgICAgICAgfQorICAgICAgICB9
LAorICAgICAgICAicmVjdXJzaXZlLXJlYWRkaXIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
Mi4xLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAibWluaW1hdGNoIjogIjMu
MC4yIgorICAgICAgICAgIH0sCisgICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAg
ICAgICJtaW5pbWF0Y2giOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4yIiwKKyAg
ICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICJicmFjZS1leHBh
bnNpb24iOiAiMS4xLjYiCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICB9CisgICAgICAgIH0sCisgICAgICAgICJyZWRleWVkIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImVzcHJpbWEiOiAi
Mi43LjMiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAicmVkdWNlLWNzcy1jYWxj
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMy4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAgICAgImJhbGFuY2VkLW1hdGNoIjogIjAuNC4yIiwKKyAgICAgICAgICAgICJtYXRo
LWV4cHJlc3Npb24tZXZhbHVhdG9yIjogIjEuMi4xNCIsCisgICAgICAgICAgICAicmVkdWNlLWZ1
bmN0aW9uLWNhbGwiOiAiMS4wLjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAi
cmVkdWNlLWZ1bmN0aW9uLWNhbGwiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYmFsYW5jZWQtbWF0Y2giOiAiMC4xLjAi
CisgICAgICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAgICAg
ImJhbGFuY2VkLW1hdGNoIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuMCIsCisg
ICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJyZWdlbmVy
YXRlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMy4xIiwKKyAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInJl
Z2VuZXJhdG9yLXJ1bnRpbWUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC45LjUiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9
LAorICAgICAgICAicmVnZXgtY2FjaGUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC40LjMi
LAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiaXMtZXF1YWwtc2hhbGxvdyI6ICIw
LjEuMyIsCisgICAgICAgICAgICAiaXMtcHJpbWl0aXZlIjogIjIuMC4wIgorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgInJlZ2V4cHUtY29yZSI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIxLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJyZWdlbmVyYXRl
IjogIjEuMy4xIiwKKyAgICAgICAgICAgICJyZWdqc2dlbiI6ICIwLjIuMCIsCisgICAgICAgICAg
ICAicmVnanNwYXJzZXIiOiAiMC4xLjUiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg
ICAicmVnanNnZW4iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4yLjAiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAg
ICAgICAicmVnanNwYXJzZXIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjUiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAianNlc2MiOiAiMC41LjAiCisgICAgICAgICAg
fQorICAgICAgICB9LAorICAgICAgICAicmVsYXRldXJsIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjAuMi43IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInJlbmRlcmtpZCI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIyLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJjc3Mtc2Vs
ZWN0IjogIjEuMi4wIiwKKyAgICAgICAgICAgICJkb20tY29udmVydGVyIjogIjAuMS40IiwKKyAg
ICAgICAgICAgICJodG1scGFyc2VyMiI6ICIzLjMuMCIsCisgICAgICAgICAgICAic3RyaXAtYW5z
aSI6ICIzLjAuMSIsCisgICAgICAgICAgICAidXRpbGEiOiAiMC4zLjMiCisgICAgICAgICAgfSwK
KyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAgICAgInV0aWxhIjogeworICAg
ICAgICAgICAgICAidmVyc2lvbiI6ICIwLjMuMyIsCisgICAgICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgIH0KKyAgICAgICAg
ICB9CisgICAgICAgIH0sCisgICAgICAgICJyZXBlYXQtZWxlbWVudCI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjEuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJyZXBlYXQtc3RyaW5nIjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjEuNS40IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInJlcGVhdGluZyI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMyIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgICAgICJpcy1maW5pdGUiOiAiMS4wLjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAicmVxdWVzdCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjc1LjAiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYXdzLXNpZ24yIjogIjAuNi4wIiwKKyAgICAgICAg
ICAgICJhd3M0IjogIjEuNC4xIiwKKyAgICAgICAgICAgICJibCI6ICIxLjEuMiIsCisgICAgICAg
ICAgICAiY2FzZWxlc3MiOiAiMC4xMS4wIiwKKyAgICAgICAgICAgICJjb21iaW5lZC1zdHJlYW0i
OiAiMS4wLjUiLAorICAgICAgICAgICAgImV4dGVuZCI6ICIzLjAuMCIsCisgICAgICAgICAgICAi
Zm9yZXZlci1hZ2VudCI6ICIwLjYuMSIsCisgICAgICAgICAgICAiZm9ybS1kYXRhIjogIjIuMC4w
IiwKKyAgICAgICAgICAgICJoYXItdmFsaWRhdG9yIjogIjIuMC42IiwKKyAgICAgICAgICAgICJo
YXdrIjogIjMuMS4zIiwKKyAgICAgICAgICAgICJodHRwLXNpZ25hdHVyZSI6ICIxLjEuMSIsCisg
ICAgICAgICAgICAiaXMtdHlwZWRhcnJheSI6ICIxLjAuMCIsCisgICAgICAgICAgICAiaXNzdHJl
YW0iOiAiMC4xLjIiLAorICAgICAgICAgICAgImpzb24tc3RyaW5naWZ5LXNhZmUiOiAiNS4wLjEi
LAorICAgICAgICAgICAgIm1pbWUtdHlwZXMiOiAiMi4xLjEyIiwKKyAgICAgICAgICAgICJub2Rl
LXV1aWQiOiAiMS40LjciLAorICAgICAgICAgICAgIm9hdXRoLXNpZ24iOiAiMC44LjIiLAorICAg
ICAgICAgICAgInFzIjogIjYuMi4xIiwKKyAgICAgICAgICAgICJzdHJpbmdzdHJlYW0iOiAiMC4w
LjUiLAorICAgICAgICAgICAgInRvdWdoLWNvb2tpZSI6ICIyLjMuMSIsCisgICAgICAgICAgICAi
dHVubmVsLWFnZW50IjogIjAuNC4zIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAg
InJlcXVpcmUtZGlyZWN0b3J5IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMS4xIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAg
fSwKKyAgICAgICAgInJlcXVpcmUtbWFpbi1maWxlbmFtZSI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIxLjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJyZXF1aXJlLXVuY2FjaGVkIjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAg
ImNhbGxlci1wYXRoIjogIjAuMS4wIiwKKyAgICAgICAgICAgICJyZXNvbHZlLWZyb20iOiAiMS4w
LjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAicmVxdWlyZXMtcG9ydCI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJyZXNvbHZlIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS43IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInJlc29sdmUt
ZnJvbSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJy
ZXN0b3JlLWN1cnNvciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJy
ZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJleGl0LWhvb2siOiAiMS4xLjEiLAorICAgICAgICAg
ICAgIm9uZXRpbWUiOiAiMS4xLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAi
cmlnaHQtYWxpZ24iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjMiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICAgICAiYWxpZ24tdGV4dCI6ICIwLjEuNCIKKyAgICAgICAgICB9
CisgICAgICAgIH0sCisgICAgICAgICJyaW1yYWYiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
Mi41LjQiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiZ2xvYiI6ICI3LjEuMCIK
KyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJyaXBlbWQxNjAiOiB7CisgICAgICAg
ICAgInZlcnNpb24iOiAiMC4yLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAicnVuLWFzeW5jIjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjAuMS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAg
ICAgIm9uY2UiOiAiMS40LjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAicngt
bGl0ZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjEuMiIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJz
YW5lIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuNC4xIiwKKyAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAgICAgImV4ZWMtc2giOiAiMC4yLjAiLAorICAgICAgICAgICAgImZiLXdhdGNo
bWFuIjogIjEuOS4wIiwKKyAgICAgICAgICAgICJtaW5pbWF0Y2giOiAiMy4wLjMiLAorICAgICAg
ICAgICAgIm1pbmltaXN0IjogIjEuMi4wIiwKKyAgICAgICAgICAgICJ3YWxrZXIiOiAiMS4wLjci
LAorICAgICAgICAgICAgIndhdGNoIjogIjAuMTAuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0s
CisgICAgICAgICJzYXgiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4yLjEiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAor
ICAgICAgICAic2VtdmVyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjUuMy4wIiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwK
KyAgICAgICAgInNlbmQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4xNC4xIiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAgICAgImRlYnVnIjogIjIuMi4wIiwKKyAgICAgICAgICAg
ICJkZXBkIjogIjEuMS4wIiwKKyAgICAgICAgICAgICJkZXN0cm95IjogIjEuMC40IiwKKyAgICAg
ICAgICAgICJlbmNvZGV1cmwiOiAiMS4wLjEiLAorICAgICAgICAgICAgImVzY2FwZS1odG1sIjog
IjEuMC4zIiwKKyAgICAgICAgICAgICJldGFnIjogIjEuNy4wIiwKKyAgICAgICAgICAgICJmcmVz
aCI6ICIwLjMuMCIsCisgICAgICAgICAgICAiaHR0cC1lcnJvcnMiOiAiMS41LjAiLAorICAgICAg
ICAgICAgIm1pbWUiOiAiMS4zLjQiLAorICAgICAgICAgICAgIm1zIjogIjAuNy4xIiwKKyAgICAg
ICAgICAgICJvbi1maW5pc2hlZCI6ICIyLjMuMCIsCisgICAgICAgICAgICAicmFuZ2UtcGFyc2Vy
IjogIjEuMi4wIiwKKyAgICAgICAgICAgICJzdGF0dXNlcyI6ICIxLjMuMCIKKyAgICAgICAgICB9
LAorICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICAgICAibWltZSI6IHsKKyAg
ICAgICAgICAgICAgInZlcnNpb24iOiAiMS4zLjQiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9CisgICAgICAg
ICAgfQorICAgICAgICB9LAorICAgICAgICAic2VudGVuY2UtY2FzZSI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIyLjEuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJuby1j
YXNlIjogIjIuMy4wIiwKKyAgICAgICAgICAgICJ1cHBlci1jYXNlLWZpcnN0IjogIjEuMS4yIgor
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInNlcnZlLWluZGV4IjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuOC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAg
ImFjY2VwdHMiOiAiMS4zLjMiLAorICAgICAgICAgICAgImJhdGNoIjogIjAuNS4zIiwKKyAgICAg
ICAgICAgICJkZWJ1ZyI6ICIyLjIuMCIsCisgICAgICAgICAgICAiZXNjYXBlLWh0bWwiOiAiMS4w
LjMiLAorICAgICAgICAgICAgImh0dHAtZXJyb3JzIjogIjEuNS4wIiwKKyAgICAgICAgICAgICJt
aW1lLXR5cGVzIjogIjIuMS4xMiIsCisgICAgICAgICAgICAicGFyc2V1cmwiOiAiMS4zLjEiCisg
ICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAic2VydmUtc3RhdGljIjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuMTEuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAg
ICJlbmNvZGV1cmwiOiAiMS4wLjEiLAorICAgICAgICAgICAgImVzY2FwZS1odG1sIjogIjEuMC4z
IiwKKyAgICAgICAgICAgICJwYXJzZXVybCI6ICIxLjMuMSIsCisgICAgICAgICAgICAic2VuZCI6
ICIwLjE0LjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAic2V0LWJsb2NraW5n
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInNldC1p
bW1lZGlhdGUtc2hpbSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisg
ICAgICAgICJzZXRwcm90b3R5cGVvZiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMSIs
CisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAg
ICAgIH0sCisgICAgICAgICJzaGEuanMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4yLjYi
LAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAg
ICAgICB9LAorICAgICAgICAic2hlYmFuZy1yZWdleCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIxLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlCisgICAgICAgIH0sCisgICAgICAgICJzaGVsbGpzIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjAuNi4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInNoZWxsd29yZHMiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMC4xLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAic2xhc2giOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAic2xpY2UtYW5zaSI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIwLjAuNCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJzbmFrZS1jYXNlIjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjIuMS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAg
ICAgIm5vLWNhc2UiOiAiMi4zLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAi
c250cCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuOSIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgICAgICJob2VrIjogIjIuMTYuMyIKKyAgICAgICAgICB9CisgICAgICAgIH0s
CisgICAgICAgICJzb2NranMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4zLjE4IiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImZheWUtd2Vic29ja2V0IjogIjAuMTAuMCIs
CisgICAgICAgICAgICAidXVpZCI6ICIyLjAuMyIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisg
ICAgICAgICJzb2NranMtY2xpZW50IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4xIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImRlYnVnIjogIjIuMi4wIiwKKyAgICAg
ICAgICAgICJldmVudHNvdXJjZSI6ICIwLjEuNiIsCisgICAgICAgICAgICAiZmF5ZS13ZWJzb2Nr
ZXQiOiAiMC4xMS4wIiwKKyAgICAgICAgICAgICJpbmhlcml0cyI6ICIyLjAuMyIsCisgICAgICAg
ICAgICAianNvbjMiOiAiMy4zLjIiLAorICAgICAgICAgICAgInVybC1wYXJzZSI6ICIxLjEuMyIK
KyAgICAgICAgICB9LAorICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICAgICAi
ZmF5ZS13ZWJzb2NrZXQiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMTEuMCIsCisg
ICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAid2Vic29ja2V0
LWRyaXZlciI6ICIwLjYuNSIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInNvcnQta2V5cyI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIxLjEuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJpcy1wbGFp
bi1vYmoiOiAiMS4xLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAic291cmNl
LWxpc3QtbWFwIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS42IiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAg
ICAgInNvdXJjZS1tYXAiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC41LjYiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAor
ICAgICAgICAic291cmNlLW1hcC1zdXBwb3J0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAu
Mi4xMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJzb3VyY2UtbWFwIjogIjAu
MS4zMiIKKyAgICAgICAgICB9LAorICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAg
ICAgICAic291cmNlLW1hcCI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjMyIiwK
KyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICJhbWRlZmlu
ZSI6ICIxLjAuMCIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgInNwZHgtY29ycmVjdCI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIxLjAuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJzcGR4LWxpY2Vu
c2UtaWRzIjogIjEuMi4yIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInNwZHgt
ZXhwcmVzc2lvbi1wYXJzZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMyIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0s
CisgICAgICAgICJzcGR4LWxpY2Vuc2UtaWRzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
Mi4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUK
KyAgICAgICAgfSwKKyAgICAgICAgInNwcmludGYtanMiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMS4wLjMiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZQorICAgICAgICB9LAorICAgICAgICAic3NocGsiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMS4xMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImFzbjEiOiAiMC4y
LjMiLAorICAgICAgICAgICAgImFzc2VydC1wbHVzIjogIjEuMC4wIiwKKyAgICAgICAgICAgICJi
Y3J5cHQtcGJrZGYiOiAiMS4wLjAiLAorICAgICAgICAgICAgImRhc2hkYXNoIjogIjEuMTQuMCIs
CisgICAgICAgICAgICAiZWNjLWpzYm4iOiAiMC4xLjEiLAorICAgICAgICAgICAgImdldHBhc3Mi
OiAiMC4xLjYiLAorICAgICAgICAgICAgImpvZGlkMjU1MTkiOiAiMS4wLjIiLAorICAgICAgICAg
ICAgImpzYm4iOiAiMC4xLjAiLAorICAgICAgICAgICAgInR3ZWV0bmFjbCI6ICIwLjEzLjMiCisg
ICAgICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAgICAgImFz
c2VydC1wbHVzIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJzdGF0dXNlcyI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIxLjMuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJzdHJlYW0tYnJv
d3NlcmlmeSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgICAgICJpbmhlcml0cyI6ICIyLjAuMyIsCisgICAgICAgICAgICAicmVh
ZGFibGUtc3RyZWFtIjogIjEuMS4xNCIKKyAgICAgICAgICB9LAorICAgICAgICAgICJkZXBlbmRl
bmNpZXMiOiB7CisgICAgICAgICAgICAiaXNhcnJheSI6IHsKKyAgICAgICAgICAgICAgInZlcnNp
b24iOiAiMC4wLjEiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInJlYWRhYmxlLXN0
cmVhbSI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjE0IiwKKyAgICAgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICJjb3JlLXV0aWwtaXMiOiAiMS4w
LjIiLAorICAgICAgICAgICAgICAgICJpbmhlcml0cyI6ICIyLjAuMyIsCisgICAgICAgICAgICAg
ICAgImlzYXJyYXkiOiAiMC4wLjEiLAorICAgICAgICAgICAgICAgICJzdHJpbmdfZGVjb2RlciI6
ICIwLjEwLjMxIgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQor
ICAgICAgICB9LAorICAgICAgICAic3RyZWFtLWNhY2hlIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjAuMC4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInN0cmljdC11cmktZW5jb2RlIjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuMS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInN0cmluZ19kZWNvZGVyIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMTAuMzEiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAic3RyaW5n
LXdpZHRoIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAgICAgImNvZGUtcG9pbnQtYXQiOiAiMS4wLjAiLAorICAgICAgICAgICAg
ImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50IjogIjEuMC4wIiwKKyAgICAgICAgICAgICJzdHJpcC1h
bnNpIjogIjMuMC4xIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInN0cmluZy5w
cm90b3R5cGUuY29kZXBvaW50YXQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4yLjAiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAg
ICB9LAorICAgICAgICAic3RyaW5nc3RyZWFtIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAu
MC41IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUK
KyAgICAgICAgfSwKKyAgICAgICAgInN0cmlwLWFuc2kiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMy4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYW5zaS1yZWdleCI6
ICIyLjAuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJzdHJpcC1ib20iOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICAgICAiaXMtdXRmOCI6ICIwLjIuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAg
ICAgICJzdHJpcC1qc29uLWNvbW1lbnRzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC40
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAg
ICAgICAgfSwKKyAgICAgICAgInN0eWxlLWxvYWRlciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIwLjEzLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAibG9hZGVyLXV0aWxz
IjogIjAuMi4xNiIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJzdXBwb3J0cy1j
b2xvciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjEuMiIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgICAgICJoYXMtZmxhZyI6ICIxLjAuMCIKKyAgICAgICAgICB9CisgICAgICAg
IH0sCisgICAgICAgICJzdmdvIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNy4xIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImNvYSI6ICIxLjAuMSIsCisgICAgICAgICAg
ICAiY29sb3JzIjogIjEuMS4yIiwKKyAgICAgICAgICAgICJjc3NvIjogIjIuMi4xIiwKKyAgICAg
ICAgICAgICJqcy15YW1sIjogIjMuNi4xIiwKKyAgICAgICAgICAgICJta2RpcnAiOiAiMC41LjEi
LAorICAgICAgICAgICAgInNheCI6ICIxLjIuMSIsCisgICAgICAgICAgICAid2hldC5leHRlbmQi
OiAiMC45LjkiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAic3dhcC1jYXNlIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAgICAgImxvd2VyLWNhc2UiOiAiMS4xLjMiLAorICAgICAgICAgICAgInVwcGVyLWNhc2Ui
OiAiMS4xLjMiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAic3ltYm9sLXRyZWUi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4xLjQiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAidGFibGUi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy44LjAiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICAgICAiYWp2IjogIjQuNy40IiwKKyAgICAgICAgICAgICJhanYta2V5d29yZHMiOiAi
MS4xLjEiLAorICAgICAgICAgICAgImNoYWxrIjogIjEuMS4zIiwKKyAgICAgICAgICAgICJsb2Rh
c2giOiAiNC4xNi4yIiwKKyAgICAgICAgICAgICJzbGljZS1hbnNpIjogIjAuMC40IiwKKyAgICAg
ICAgICAgICJzdHJpbmctd2lkdGgiOiAiMS4wLjIiCisgICAgICAgICAgfQorICAgICAgICB9LAor
ICAgICAgICAidGFwYWJsZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuMTAiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9
LAorICAgICAgICAidGVzdC1leGNsdWRlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMS4y
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisg
ICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImFycmlmeSI6ICIxLjAuMSIsCisg
ICAgICAgICAgICAibG9kYXNoLmFzc2lnbiI6ICI0LjIuMCIsCisgICAgICAgICAgICAibWljcm9t
YXRjaCI6ICIyLjMuMTEiLAorICAgICAgICAgICAgInJlYWQtcGtnLXVwIjogIjEuMC4xIiwKKyAg
ICAgICAgICAgICJyZXF1aXJlLW1haW4tZmlsZW5hbWUiOiAiMS4wLjEiCisgICAgICAgICAgfQor
ICAgICAgICB9LAorICAgICAgICAidGVzdGNoZWNrIjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjAuMS40IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRy
dWUKKyAgICAgICAgfSwKKyAgICAgICAgInRleHQtdGFibGUiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMC4yLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAidGhyb3VnaCI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIyLjMuOCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJ0aW1lcnMtYnJvd3NlcmlmeSI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjQuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
ICAgICJwcm9jZXNzIjogIjAuMTEuOSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJ0aXRsZS1jYXNlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMS4wIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAgICAgIm5vLWNhc2UiOiAiMi4zLjAiLAorICAgICAgICAgICAg
InVwcGVyLWNhc2UiOiAiMS4xLjMiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAi
dG1wbCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuNCIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJ0
by1mYXN0LXByb3BlcnRpZXMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9
LAorICAgICAgICAidG9wb3NvcnQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAg
ICB9LAorICAgICAgICAidG91Z2gtY29va2llIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIu
My4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUK
KyAgICAgICAgfSwKKyAgICAgICAgInRyNDYiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4w
LjMiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQor
ICAgICAgICB9LAorICAgICAgICAidHJ5aXQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4w
LjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQor
ICAgICAgICB9LAorICAgICAgICAidHR5LWJyb3dzZXJpZnkiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMC4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAidHVubmVsLWFnZW50IjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjAuNC4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInR3ZWV0bmFjbCI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIwLjEzLjMiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAg
IH0sCisgICAgICAgICJ0eXBlLWNoZWNrIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMy4y
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisg
ICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgInByZWx1ZGUtbHMiOiAiMS4xLjIi
CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAidHlwZS1pcyI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIxLjYuMTMiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAi
bWVkaWEtdHlwZXIiOiAiMC4zLjAiLAorICAgICAgICAgICAgIm1pbWUtdHlwZXMiOiAiMi4xLjEy
IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInR5cGVkYXJyYXkiOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMC4wLjYiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAidWdsaWZ5LWpzIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjIuNi40IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAgICAgImFzeW5jIjogIjAuMi4xMCIsCisgICAgICAgICAgICAic291cmNlLW1hcCI6ICIwLjUu
NiIsCisgICAgICAgICAgICAidWdsaWZ5LXRvLWJyb3dzZXJpZnkiOiAiMS4wLjIiLAorICAgICAg
ICAgICAgInlhcmdzIjogIjMuMTAuMCIKKyAgICAgICAgICB9LAorICAgICAgICAgICJkZXBlbmRl
bmNpZXMiOiB7CisgICAgICAgICAgICAiYXN5bmMiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9u
IjogIjAuMi4xMCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAg
ICAgImRldiI6IHRydWUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisg
ICAgICAgICJ1Z2xpZnktdG8tYnJvd3NlcmlmeSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIx
LjAuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
CisgICAgICAgIH0sCisgICAgICAgICJ1bmlxIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
MC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUK
KyAgICAgICAgfSwKKyAgICAgICAgInVuaXFpZCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIz
LjEuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJtYWNhZGRyZXNzIjogIjAu
Mi44IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInVuaXFzIjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInVucGlwZSI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJ1cHBlci1jYXNlIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInVwcGVyLWNhc2Ut
Zmlyc3QiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjIiLAorICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICAgICAidXBwZXItY2FzZSI6ICIxLjEuMyIKKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJ1cmwiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4xMC4zIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgInB1bnljb2RlIjogIjEuMy4yIiwKKyAg
ICAgICAgICAgICJxdWVyeXN0cmluZyI6ICIwLjIuMCIKKyAgICAgICAgICB9LAorICAgICAgICAg
ICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICAgICAicHVueWNvZGUiOiB7CisgICAgICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuMy4yIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAg
ICAgICAgfSwKKyAgICAgICAgInVybC1sb2FkZXIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
MC41LjciLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAibG9hZGVyLXV0aWxzIjog
IjAuMi4xNiIsCisgICAgICAgICAgICAibWltZSI6ICIxLjIuMTEiCisgICAgICAgICAgfQorICAg
ICAgICB9LAorICAgICAgICAidXJsLXBhcnNlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
MS4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgInF1ZXJ5c3RyaW5naWZ5Ijog
IjAuMC40IiwKKyAgICAgICAgICAgICJyZXF1aXJlcy1wb3J0IjogIjEuMC4wIgorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgInVzZXItaG9tZSI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIxLjEuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJ1dGlsIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjAuMTAuMyIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJpbmhlcml0cyI6
ICIyLjAuMSIKKyAgICAgICAgICB9LAorICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAg
ICAgICAgICAiaW5oZXJpdHMiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4xIiwK
KyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1
ZQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInV0aWwt
ZGVwcmVjYXRlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAg
ICAgInV0aWxhIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNC4wIiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAg
ICAgInV0aWxzLW1lcmdlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwK
KyAgICAgICAgInV1aWQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjMiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAor
ICAgICAgICAidmFsaWRhdGUtbnBtLXBhY2thZ2UtbGljZW5zZSI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIzLjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJzcGR4LWNv
cnJlY3QiOiAiMS4wLjIiLAorICAgICAgICAgICAgInNwZHgtZXhwcmVzc2lvbi1wYXJzZSI6ICIx
LjAuMyIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJ2YXJ5IjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuMS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInZlbmRvcnMiOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAidmVycm9yIjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjEuMy42IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAg
ICAgImV4dHNwcmludGYiOiAiMS4wLjIiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg
ICAidm0tYnJvd3NlcmlmeSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjAuNCIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJpbmRleG9mIjogIjAuMC4xIgorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgIndhbGtlciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIxLjAuNyIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJtYWtlZXJyb3IiOiAi
MS4wLjExIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIndhdGNoIjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjAuMTAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJ3YXRjaHBhY2siOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMC4yLjkiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICAgICAiYXN5bmMiOiAiMC45LjIiLAorICAgICAgICAgICAgImNob2tpZGFyIjogIjEuNi4w
IiwKKyAgICAgICAgICAgICJncmFjZWZ1bC1mcyI6ICI0LjEuOCIKKyAgICAgICAgICB9LAorICAg
ICAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICAgICAiYXN5bmMiOiB7CisgICAgICAg
ICAgICAgICJ2ZXJzaW9uIjogIjAuOS4yIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfQorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgIndlYmlkbC1jb252ZXJzaW9ucyI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIzLjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJ3ZWJwYWNrIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuMTMuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJh
Y29ybiI6ICIzLjMuMCIsCisgICAgICAgICAgICAiYXN5bmMiOiAiMS41LjIiLAorICAgICAgICAg
ICAgImNsb25lIjogIjEuMC4yIiwKKyAgICAgICAgICAgICJlbmhhbmNlZC1yZXNvbHZlIjogIjAu
OS4xIiwKKyAgICAgICAgICAgICJpbnRlcnByZXQiOiAiMC42LjYiLAorICAgICAgICAgICAgImxv
YWRlci11dGlscyI6ICIwLjIuMTYiLAorICAgICAgICAgICAgIm1lbW9yeS1mcyI6ICIwLjMuMCIs
CisgICAgICAgICAgICAibWtkaXJwIjogIjAuNS4xIiwKKyAgICAgICAgICAgICJub2RlLWxpYnMt
YnJvd3NlciI6ICIwLjYuMCIsCisgICAgICAgICAgICAib3B0aW1pc3QiOiAiMC42LjEiLAorICAg
ICAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogIjMuMS4yIiwKKyAgICAgICAgICAgICJ0YXBhYmxl
IjogIjAuMS4xMCIsCisgICAgICAgICAgICAidWdsaWZ5LWpzIjogIjIuNi40IiwKKyAgICAgICAg
ICAgICJ3YXRjaHBhY2siOiAiMC4yLjkiLAorICAgICAgICAgICAgIndlYnBhY2stY29yZSI6ICIw
LjYuOCIKKyAgICAgICAgICB9LAorICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAg
ICAgICAiYWNvcm4iOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMy4wIiwKKyAgICAg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAg
ICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIndlYnBhY2stY29y
ZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjYuOCIsCisgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgICAgICJzb3VyY2UtbGlzdC1tYXAiOiAiMC4xLjYiLAorICAgICAgICAgICAgInNv
dXJjZS1tYXAiOiAiMC40LjQiCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVz
IjogeworICAgICAgICAgICAgInNvdXJjZS1tYXAiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9u
IjogIjAuNC40IiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAg
ICAgICJhbWRlZmluZSI6ICIxLjAuMCIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIndlYnBhY2stZGV2LW1pZGRsZXdhcmUi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS44LjMiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICAgICAibWVtb3J5LWZzIjogIjAuMy4wIiwKKyAgICAgICAgICAgICJtaW1lIjogIjEu
My40IiwKKyAgICAgICAgICAgICJwYXRoLWlzLWFic29sdXRlIjogIjEuMC4wIiwKKyAgICAgICAg
ICAgICJyYW5nZS1wYXJzZXIiOiAiMS4yLjAiCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZGVw
ZW5kZW5jaWVzIjogeworICAgICAgICAgICAgIm1pbWUiOiB7CisgICAgICAgICAgICAgICJ2ZXJz
aW9uIjogIjEuMy40IiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgIndlYnBhY2stZGV2LXNlcnZlciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIx
LjE2LjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiY29tcHJlc3Npb24iOiAi
MS42LjIiLAorICAgICAgICAgICAgImNvbm5lY3QtaGlzdG9yeS1hcGktZmFsbGJhY2siOiAiMS4z
LjAiLAorICAgICAgICAgICAgImV4cHJlc3MiOiAiNC4xNC4wIiwKKyAgICAgICAgICAgICJodHRw
LXByb3h5LW1pZGRsZXdhcmUiOiAiMC4xNy4xIiwKKyAgICAgICAgICAgICJvcGVuIjogIjAuMC41
IiwKKyAgICAgICAgICAgICJvcHRpbWlzdCI6ICIwLjYuMSIsCisgICAgICAgICAgICAic2VydmUt
aW5kZXgiOiAiMS44LjAiLAorICAgICAgICAgICAgInNvY2tqcyI6ICIwLjMuMTgiLAorICAgICAg
ICAgICAgInNvY2tqcy1jbGllbnQiOiAiMS4xLjEiLAorICAgICAgICAgICAgInN0cmVhbS1jYWNo
ZSI6ICIwLjAuMiIsCisgICAgICAgICAgICAic3RyaXAtYW5zaSI6ICIzLjAuMSIsCisgICAgICAg
ICAgICAic3VwcG9ydHMtY29sb3IiOiAiMy4xLjIiLAorICAgICAgICAgICAgIndlYnBhY2stZGV2
LW1pZGRsZXdhcmUiOiAiMS44LjMiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAi
d2VicGFjay1zb3VyY2VzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS4yIiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAgICAgInNvdXJjZS1saXN0LW1hcCI6ICIwLjEuNiIsCisg
ICAgICAgICAgICAic291cmNlLW1hcCI6ICIwLjUuNiIKKyAgICAgICAgICB9CisgICAgICAgIH0s
CisgICAgICAgICJ3ZWJzb2NrZXQtZHJpdmVyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAu
Ni41IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgIndlYnNvY2tldC1leHRlbnNp
b25zIjogIjAuMS4xIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIndlYnNvY2tl
dC1leHRlbnNpb25zIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS4xIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAg
ICAgICAgIndoYXR3Zy1mZXRjaCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAg
IH0sCisgICAgICAgICJ3aGF0d2ctdXJsIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4w
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisg
ICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgInRyNDYiOiAiMC4wLjMiLAorICAg
ICAgICAgICAgIndlYmlkbC1jb252ZXJzaW9ucyI6ICIzLjAuMSIKKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJ3aGV0LmV4dGVuZCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIw
LjkuOSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
CisgICAgICAgIH0sCisgICAgICAgICJ3aGljaCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIx
LjIuMTEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiaXNleGUiOiAiMS4xLjIi
CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAid2hpY2gtbW9kdWxlIjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgIndpbmRvdy1zaXplIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgIndvcmR3cmFw
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgIndvcmtl
ci1mYXJtIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMy4xIiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAgICAgImVycm5vIjogIjAuMS40IiwKKyAgICAgICAgICAgICJ4dGVuZCI6
ICI0LjAuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJ3cmFwLWFuc2kiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICAgICAic3RyaW5nLXdpZHRoIjogIjEuMC4yIgorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgIndyYXBweSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0s
CisgICAgICAgICJ3cml0ZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjIuMSIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJta2RpcnAiOiAiMC41LjEiCisgICAgICAgICAg
fQorICAgICAgICB9LAorICAgICAgICAieG1sLWNoYXItY2xhc3NlcyI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJ4bWwtbmFtZS12YWxpZGF0b3IiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAieHRlbmQiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiNC4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAieTE4biI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIzLjIuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJ5YWxsaXN0Ijog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInlhcmdzIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMTAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgICAgICJjYW1lbGNhc2UiOiAiMS4yLjEiLAorICAgICAgICAgICAgImNsaXVpIjogIjIu
MS4wIiwKKyAgICAgICAgICAgICJkZWNhbWVsaXplIjogIjEuMi4wIiwKKyAgICAgICAgICAgICJ3
aW5kb3ctc2l6ZSI6ICIwLjEuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJ5
YXJncy1wYXJzZXIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4yLjAiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICAgICAiY2FtZWxjYXNlIjogIjMuMC4wIiwKKyAgICAgICAgICAg
ICJsb2Rhc2guYXNzaWduIjogIjQuMi4wIgorICAgICAgICAgIH0sCisgICAgICAgICAgImRlcGVu
ZGVuY2llcyI6IHsKKyAgICAgICAgICAgICJjYW1lbGNhc2UiOiB7CisgICAgICAgICAgICAgICJ2
ZXJzaW9uIjogIjMuMC4wIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgfQorICAgIH0sCisgICAgInJlYWRhYmxlLXN0cmVhbSI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogIjIuMy4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9yZWFkYWJsZS1zdHJlYW0vLS9yZWFkYWJsZS1zdHJlYW0tMi4zLjMudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhNTEyLW0rcXp6Y243S1V4RW1kMWdNYmNoRitZMmVJVWJpZVVheGtX
dHB0eUh5d3JYMHJFOFFFWXFQQzA3VnV5NFdtMzIveEUxNk5jZEJjdGI4UzBYZS81SWVRPT0iLAor
ICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJjb3JlLXV0
aWwtaXMiOiAiMS4wLjIiLAorICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjMiLAorICAgICAgICAi
aXNhcnJheSI6ICIxLjAuMCIsCisgICAgICAgICJwcm9jZXNzLW5leHRpY2stYXJncyI6ICIxLjAu
NyIsCisgICAgICAgICJzYWZlLWJ1ZmZlciI6ICI1LjEuMSIsCisgICAgICAgICJzdHJpbmdfZGVj
b2RlciI6ICIxLjAuMyIsCisgICAgICAgICJ1dGlsLWRlcHJlY2F0ZSI6ICIxLjAuMiIKKyAgICAg
IH0KKyAgICB9LAorICAgICJyZWR1eCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjMuNy4yIiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWR1eC8tL3JlZHV4
LTMuNy4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1wTnFuZjlxMWhJNUhIWlJC
a2ozYkFuZ0daVy9KTUNtZXhEbE94dzRYYWdYWTJvMTMyN25ISDU0TG9UamlQSjBnaXpvcVBEUnFX
eVgvMDBnMGhENncrQT09IiwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImxvZGFzaCI6
ICI0LjE3LjQiLAorICAgICAgICAibG9kYXNoLWVzIjogIjQuMTcuNCIsCisgICAgICAgICJsb29z
ZS1lbnZpZnkiOiAiMS4zLjEiLAorICAgICAgICAic3ltYm9sLW9ic2VydmFibGUiOiAiMS4wLjQi
CisgICAgICB9CisgICAgfSwKKyAgICAic2FmZS1idWZmZXIiOiB7CisgICAgICAidmVyc2lvbiI6
ICI1LjEuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
c2FmZS1idWZmZXIvLS9zYWZlLWJ1ZmZlci01LjEuMS50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGE1MTIta0t2TkpuNk1tOTNnQWN6V1ZKZzd3SCt3R1lXTnJESGRXdnBVbUh5RXNnQ3RJd3dv
M2JxUHRWNHRSNXR1UGFVaFRPby9rdmhWd2Q4WHd3T2xsR1lrYmc9PSIsCisgICAgICAiZGV2Ijog
dHJ1ZQorICAgIH0sCisgICAgInNldGltbWVkaWF0ZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEu
MC41IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zZXRp
bW1lZGlhdGUvLS9zZXRpbW1lZGlhdGUtMS4wLjUudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS1LUXk3SXk0d2FVTFgxK3FiZzNNcXQ0VnZnb1U9IgorICAgIH0sCisgICAgInN0cmluZ19k
ZWNvZGVyIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjMiLAorICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N0cmluZ19kZWNvZGVyLy0vc3RyaW5nX2RlY29k
ZXItMS4wLjMudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLTRBSDZaNWZ6Tk5CY0gr
NlhETWZBL0JUdDg3c2t4cUpsTzBsQWgzRGtlcjV6VGhjQXhHNm1LeitpR3UzMDhVS29QUFE4RGNx
eC80Smh1anpsdFJhK2hRPT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICJzYWZlLWJ1ZmZlciI6ICI1LjEuMSIKKyAgICAgIH0KKyAgICB9LAorICAg
ICJzeW1ib2wtb2JzZXJ2YWJsZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC40IiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zeW1ib2wtb2JzZXJ2YWJs
ZS8tL3N5bWJvbC1vYnNlcnZhYmxlLTEuMC40LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtS2I5aFhVcW5FaHZkaVlzaTFMUDV2RTRxb0QwPSIKKyAgICB9LAorICAgICJ0b2RvbXZjLWFw
cC1jc3MiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdG9kb212Yy1hcHAtY3NzLy0vdG9kb212Yy1hcHAt
Y3NzLTIuMS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtdHZKeGJUT2EraTVmZVpO
SDBxU0xCVGxpUXFVPSIKKyAgICB9LAorICAgICJ1YS1wYXJzZXItanMiOiB7CisgICAgICAidmVy
c2lvbiI6ICIwLjcuMTQiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL3VhLXBhcnNlci1qcy8tL3VhLXBhcnNlci1qcy0wLjcuMTQudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1FUTFUK2t3L01td1NFcEs3NnNrRTB1QXpoOG89IgorICAgIH0sCisg
ICAgInV0aWwtZGVwcmVjYXRlIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3V0aWwtZGVwcmVjYXRlLy0v
dXRpbC1kZXByZWNhdGUtMS4wLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1SUTFO
eWZwdzNuTW5ZdnZTMUtLSmdVR2FETTg9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAg
ICAidXVpZCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjMuMS4wIiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy91dWlkLy0vdXVpZC0zLjEuMC50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGE1MTItRElXdHpVa3cwNE00azNiZjFJY3BTMnRuZ1hFTDI2WVVE
Mk0wdE1EVXBuVXJ6MmhnelVCbEQ1NWE0RmpkTEdQdmZIeFM2dWx1R1d2YVZFcWdCY1ZhK2c9PSIs
CisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgIndoYXR3Zy1mZXRjaCI6IHsKKyAgICAg
ICJ2ZXJzaW9uIjogIjIuMC4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy93aGF0d2ctZmV0Y2gvLS93aGF0d2ctZmV0Y2gtMi4wLjMudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1uSVRzTGM5b0dIL3dDOFpPRW5TMFFoZHVISVE9IgorICAgIH0K
KyAgfQorfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvcGFja2FnZS5qc29u
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvcGFja2FnZS5qc29uCmluZGV4IGZmMDdjMTM1ODM2
YmUxMTc5ZDY2MzYyMzYyNjAyZjRjM2EzMjhmZWIuLjE0N2Y1YmQzZDQ4MTU3ZGVhZjk2YTQ0ZmU5
OTNmYzgwNDc2MjRlNjEgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIv
cmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3BhY2th
Z2UuanNvbgorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2Rv
bXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9wYWNrYWdlLmpzb24KQEAgLTEs
NiArMSw0IEBACiB7Ci0gICJuYW1lIjogInRvZG9tdmMiLAotICAidmVyc2lvbiI6ICIwLjAuMSIs
CiAgICJwcml2YXRlIjogdHJ1ZSwKICAgImRldkRlcGVuZGVuY2llcyI6IHsKICAgICAiZW56eW1l
IjogIl4yLjQuMSIsCkBAIC05LDE2ICs3LDE2IEBACiAgIH0sCiAgICJkZXBlbmRlbmNpZXMiOiB7
CiAgICAgImNsYXNzbmFtZXMiOiAiXjIuMi41IiwKLSAgICAicmVhY3QiOiAiXjE1LjMuMCIsCi0g
ICAgInJlYWN0LWRvbSI6ICJeMTUuMy4wIiwKLSAgICAicmVhY3QtcmVkdXgiOiAiXjQuNC41IiwK
KyAgICAicmVhY3QiOiAiXjE1LjYuMSIsCisgICAgInJlYWN0LWRvbSI6ICJeMTUuNi4xIiwKKyAg
ICAicmVhY3QtcmVkdXgiOiAiXjUuMC42IiwKICAgICAicmVkdXgiOiAiXjMuNS4yIiwKICAgICAi
dG9kb212Yy1hcHAtY3NzIjogIl4yLjAuNiIKICAgfSwKICAgInNjcmlwdHMiOiB7CiAgICAgInN0
YXJ0IjogInJlYWN0LXNjcmlwdHMgc3RhcnQiLAotICAgICJidWlsZCI6ICJyZWFjdC1zY3JpcHRz
IGJ1aWxkIiwKLSAgICAiZWplY3QiOiAicmVhY3Qtc2NyaXB0cyBlamVjdCIsCisgICAgImJ1aWxk
IjogInJlYWN0LXNjcmlwdHMgYnVpbGQgJiYgbXYgYnVpbGQgZGlzdCIsCiAgICAgInRlc3QiOiAi
cmVhY3Qtc2NyaXB0cyB0ZXN0IgotICB9CisgIH0sCisgICJob21lcGFnZSI6ICIuLyIKIH0KZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3B1YmxpYy9pbmRleC5odG1sIGIvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3QtcmVkdXgvcHVibGljL2luZGV4Lmh0bWwKaW5kZXggNzhiY2NmZWVjYTJl
MjI5YzI2NjBiYjc4NWE2Mjg1YTQ5NzA4Yjg0MS4uMjg3NjY3ODE5NWViMjJmNmU1YmMyZDEyNzc1
YzQzOGU3YjA4NjMwNyAxMDA2NDQKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvcHVibGlj
L2luZGV4Lmh0bWwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvcHVibGljL2luZGV4Lmh0
bWwKQEAgLTMsNyArMyw3IEBACiAgIDxoZWFkPgogICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4K
ICAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBp
bml0aWFsLXNjYWxlPTEiPgotICAgIDx0aXRsZT5SZWR1eCBUb2RvTVZDIEV4YW1wbGU8L3RpdGxl
PgorICAgIDx0aXRsZT5SZWFjdCBSZWR1eCBUb2RvTVZDIGV4YW1wbGU8L3RpdGxlPgogICA8L2hl
YWQ+CiAgIDxib2R5PgogICAgIDxkaXYgY2xhc3M9InRvZG9hcHAiIGlkPSJyb290Ij48L2Rpdj4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>318359</attachid>
            <date>2017-08-17 06:45:14 -0700</date>
            <delta_ts>2017-08-17 06:45:14 -0700</delta_ts>
            <desc>Results before and after the patch</desc>
            <filename>results.pdf</filename>
            <type>application/pdf</type>
            <size>96149</size>
            <attacher name="Mathias Bynens">mathias</attacher>
            
              <data encoding="base64">JVBERi0xLjMKJcTl8uXrp/Og0MTGCjQgMCBvYmoKPDwgL0xlbmd0aCA1IDAgUiAvRmlsdGVyIC9G
bGF0ZURlY29kZSA+PgpzdHJlYW0KeAG9W9uqJLkRfK+vqB9wb11UNzDzYGMMflsY8IPxw3rw7MHM
MQz7/+BISZEZOl3TPXNq8S6HbUVXXhSZypTUtV/7n/uv/Tje1iOtU5+O25A/vAa2pel2DEvqv/Tr
fkvbvi39Cda57JeQFeyl/3v/3/6nP/829p9+68f872+f+nHu53m8Dcs29TA6Z9XTMm3dl35ab9uw
LqNjcMExl4I50fGlf+k/x1PLcEvda4xFat1u+7QOa9jHBImZnFor467Rva7HbVxgXPQbMeY9ZBNU
jPMQM1KMsjpLYnjO7Li846+BiZ0l3cbxWFJ3gvUuK/4IZnYoH8++do6JTufmDBOdLksMczQ7w21a
py0hnGefLBWm25y2ebQs3PIHJAQxBk4JI6aBclmkBWUFK44cw3isw94hQnv2CS6lZTj2IfVwBDk2
LPM+ITOAD2kpEa7YmuAmsC/B3FwxOOezd9mcs2/0kZEwvy0rXNnhSPFj6BpH1hkrdNwbR47tts5j
k2rzGVZlC3OcRNVHR7aUOYH5Dcxse8qMAJyGlpFjvR3bUZZU0ZVA0jEemt0n0FwES6iqE1UXfZjT
OG7rYj7M+R8jo2JKhmmf1rWuu+oEIjAN64RJ+rpJFXvrWZaVqLg+OnLsaR7nDemx7cN8TJORYaQg
NxtHwOyyzE16JEQgHcDUkYq1zlVZdYT6wpF9mpcZ5vd5mY5kSyeZR+PapEcCk3samvRYwBLcb9Lj
DKOspgcxTKIuGJhc1sMcKebDkYYRMzBOu6bHgigM6658nEFFEE/54qOu4oNNXUhorYK3NIKnXIhL
QizgfF6WSex2J1i/UFYtB1anXxICLtSEsMpxkhAL4rANU5MQK2a2JmCSECcYnKuy6khgxZEVUdiR
+XBkWxOao8XBcmQ6lJFunY7bsR9NQrAcN46whalzlA1HQh8TIq32z2aO5MS0JbJg9aYtL5EZFXwd
5tTPoLIWLmKdFKmollG4AqPsl56yoS870pWssOQ0V3LxjkdBHkoVksKhqEtupELIfoeiVLlgQCUO
D0qVLUyX89KiTkRZcpNSqgJD4lipgmv3+hiHkpi5QljxTJmGWisaR8CllSqszFAWpSqMnmFVFokT
stRHRw5rX9gZ2ipF7ZxyZsYSCUFEpZYqx1iWNAjEYFScq7LqCPW5I6VkW/HOjcy4kbXaGEWp0vSI
uuQmK/TWMxMUJ2qpAlTS40FUmvTw4iNRkSIVXkQxCwwRsKKn6eH66MjhzXy3HQ9Ww9tV4mUnXOik
PLm5M8xllYqmZCEK6gKLV7tQpVh5dKRY0YXuBOtdVlwQrFbN3EUHzH3b80cr39uwYGBVcwGR67ov
ut0LDKu1bvd8A8ztHuJNrJPtXshiBeftY4TD22is1tpQxZFOqmYoiwpJo1iOvgUMDHmRKy4WTp1Y
6KMjOzfi2CAgWfMGx7YVKKPiB/SzhLqqKKFu8QSiYPjguuhCLRgIxWnBoMFeSmhgUULDi4phPQRW
S6gVEQbZ9bkjsUbISs5PSnSJ9e9VtESdDGtnGGXDg9AXHnxXWuBc5LXTnZM66Y6cYS4bjoS+7Iit
VdtTLFYktnJCsnJRC4fmBeudEBK1k2509xD4y/tDjUdAtXYyCHepaaWT8459m/qAANQ9H53opZwG
FqXzXh+D8qDFN2uERRCd1ZVJsXSjZxhlGz5qAUUeF0LqYdVCcXZYDaPct6kjdX+ni0LKaDhHWcmO
t2W0RwHFzLuf/oornF9xhTP3+VYk39rEfUndfsNbzMo383IEhxxHeY5+o1O1tWOp69WG9whqKXby
TZFdQpWrA2PPT4JVczuWqVbNTiW1wD+XIQZrL7ElqZrZowojuQKNOMRub8fqn8s0mvUuKzPbXnLU
k3O9MYN/zrA0oKxDWo8z6rrkxooYdDmzxDBXwVyj6HNM2KY0VoSzRwwaneVzzDWKbMFytjhrLo10
rzdgb27ySgT8OYkKuYJGkXXLL/lGkY2/RIEjZfwe005rUYhe/GKRKreZvn3QKIQuMg5dvvUgphpF
n3d8jQKlIwqqMaLA5zQy4XdEIbDI/9CoUQiNKDA1CqeY+80oKH8lCtzhlChwpFE4xcotVbkarpsY
W7fBGaU0BsQ06yvWrA5XKOrKRqmpOr47iwhgOZUdm2UedyTEmrXhNiIADgX/oU/5j3kE/6cYnSb9
UEfiMvvc2WXyORDuvwHVCzYr9HGGFfIpJtwTEuq/AdUjsVNPE7kuO1kUFuoJCfMV0mCIukZZnZNQ
T33CfOhz4vmUVB8x4cQLVpjHesn3mYX6OsIcMe/2xrPF/FLRyMeKzdeTmvnYfRbN5bKsVCTHlH4+
12Cukfy3u9mgjNIaAGIagXtMNYo+t6whoLTGgFgwHnMOTNmJKChjxiBWTb7MLVGoI6RLRIFPNJhf
U2QdPtIlQF26BkKX13v3QKOARZqvULLNGsGKwTfpAS6tUQgrXoH8OY1MaIwohGWNAjVqFIgp4xWD
j7E8QmNEIbC8Fvw4k6Pgo2C8O8FQXnnUQBBiIDFwqYiBavIY+HMSg1DIhdDYIGOhTyIg+jwC38LK
RVOjrkDCv8sK/44J1ydY9q8odPrtMdow6rCe7P6+kF8HwT2/10Uh11BZARqd3c5rGaKYVqG4awvq
3Z5Ari6ox7p1EySLJnQbyslInp9Crk6UFSwvsODKybmDlHifhec9KYI6kXSzJe+xXvJxtlDPkXJ/
j+nvCEY+1lL+RaIln3KR+XpQJtf6gwkx1Rj8q5WgLKwQU42R+3xOoxIaKauWI/tDo2Z/aAzGTzFn
h1FQ/nIU/Nyeo+AjicIpVg/UiC+i0BylnTWXkyg4JrWGGHR5FERj6ItDvPQASmOlOZPELPuQc/ny
kxiWaWChMWQDiyj0lLZbEJ7GiEGjR+EUC40hWzF4WKLAH6pKFDjSKJxieGHl2Fd4MM64P/aRdAG/
DtEohK5g/B5TjREFtRKsUVqjQCwYb+64PTKhUfTJXII1aowoqMaIAp/TyIQV0SdWwOA24PSyllZQ
P0sEzpFh2Kz0YxXY93X00jlfrvMtItnumj0aoavVRP2R667fuXNtnucF0dUQ+ltNrt85cv1vEGhz
vt1ig1RdjZzrN77qu0RYUzICl2CqnAH4RIvhZa5KeCofI9vjHSHJdtES/MZ7TIIVdQwUlFF/cEs5
yXPRH4zzOcl9qhNl1B8cUS4y3HnCpMlvzDMwPFfUiTLqv39VCJzX14f0zo6Y2mxjg1Fzn+exIopo
3mFt/PwNMhKt1hxzfVYhPUZEsUbvMV1R5FFuOBknZK6HwPWZFY+eo4gCq5RjEVH321YWuwKtYM6O
ieyLxzB4fL3HmtUVc0H8yzt9YsWxxoq9j3aUVxfshw9/iYGf8FsDLronu+j+ajfft3WZ8LOa/VLm
n2xZ5gvgT6/9nz7ayK7I/4D/zv243Ca86zZ1H1+hyF53/Pi5/0f/xwGvh+Bv/wDEBkf9ME/8oF8P
M9HtA152MIF/iXR8zeemNAzzRuWrPf+h/2f/8W/9Xz7iVU/zL1/iv2NOaY5Z9TKrLs9qhtsLZ7WM
1QN3cIArY1JXnnrQ3bGa8FoaeVUPCq8PPOhAXPZg+SEP+jsP7GUvenAf2QceWOiyB+sPeXDPwYLd
DD14HwfIjkiIp1G452DFzxr04H0cIE1+wIN7DtZ9dw/exwFW3Q94cM/BNh/uwfs4+OWHPLjnYDsG
9+B9HDSF4R15sON1xGt58OkiB/sxuQfv4wDVckTpvJQLB95o/jYPVpCXYxjSjv+iRiaME4Kfi3m6
uhLGYXyYBig6ZjixIyRQXiybW+OH7tLM7Qeu0uXAPn4XbrocCn5CimVrNvGFDQ6fs1PeG/ASfqbF
u4ZxlEU+4dG5Nj4jcbQ/yI/sL3i/Xga5xwBAi8x/+lS2lvuAfWt6NvyZK+gJhRJys+Cb4WpupmW5
zQiPUoSNABLWNgLoBtkHxGZER/j4n9Ken67C+zqwDOsTO2YDRF61s+Ay6ul8LBxI7gvzwWv5T+zY
fCyGWDtX7CzHEzvMNfSKC3a2cfhOO6hDV+ys43faQS24YGe3I9DTPLA1it3eFTu40v0+O9fig7f7
v8OO5fW1+Bz7aXxqyWQ9QOG7mNcj3rrGhN6UnTdmLDwocBfCg4PP5qX/zQFnRkXzJoP/haQUd9hE
9ymHGC/9flTJXappGSze3jfSZ3YTdhL00aJvKY2iWJ15FsrtFtUit18W99yH2X/DD/MOj8JG0ZgH
1obMJ3zhT47WZDAnBwbUotybLHb2R8etNw3U54/PtJ0tsPdM/87slAnk/sNJZJUWLytHlobWttC4
M8GtPfPMnlQHYgDXfr+m1gb/TVMzP64tfm9q37RjTSAX6EtZvLCpPbTzy+X5eFN7aCdH+NJ8Vja1
p3awM7uw+r2pPbRjvF0rmhub2kM7thn4nZraQzsWn2u84X/dKc3moR3j7dp8vKk9tXNtE+VNrbUj
3cbWqc3nWpNmU3tq5lrZwZX7/q2m5hd1foRie7EOhyZVOxGSMWo9zhf+eBz6/FSEUh5NTVtY7iek
zos9qr+djKzouwnrPrnoW2uwL41sfJ9bhX1nnw2Hk4Mep7KgZfT/6RjUMisdw44m5sO1Y4N3jId2
bL7XKpJ3jId2LHRo7RcqrHeMp3au8eYd46mda/tF7xgP7VyPj3eMp3YuVnIegx7auZ4H3jEe2rEd
18VKzmPQQztWUK5dV3jHaO1Ix7B6kEvfpfXDjvHUjKTBz/8DKIeMVAplbmRzdHJlYW0KZW5kb2Jq
CjUgMCBvYmoKMzU1MwplbmRvYmoKMiAwIG9iago8PCAvVHlwZSAvUGFnZSAvUGFyZW50IDMgMCBS
IC9SZXNvdXJjZXMgNiAwIFIgL0NvbnRlbnRzIDQgMCBSIC9NZWRpYUJveCBbMCAwIDU5NSA4NDJd
Cj4+CmVuZG9iago2IDAgb2JqCjw8IC9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdIC9Db2xvclNwYWNl
IDw8IC9DczEgNyAwIFIgPj4gL0V4dEdTdGF0ZSA8PCAvR3MxCjEwIDAgUiAvR3MyIDExIDAgUiA+
PiAvRm9udCA8PCAvRzIgOSAwIFIgL0cxIDggMCBSID4+ID4+CmVuZG9iagoxMCAwIG9iago8PCAv
VHlwZSAvRXh0R1N0YXRlIC9jYSAwLjE0OSA+PgplbmRvYmoKMTEgMCBvYmoKPDwgL1R5cGUgL0V4
dEdTdGF0ZSAvY2EgMSA+PgplbmRvYmoKMTIgMCBvYmoKPDwgL0xlbmd0aCAxMyAwIFIgL04gMyAv
QWx0ZXJuYXRlIC9EZXZpY2VSR0IgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngBnZZ3
VFPZFofPvTe90BIiICX0GnoJINI7SBUEUYlJgFAChoQmdkQFRhQRKVZkVMABR4ciY0UUC4OCYtcJ
8hBQxsFRREXl3YxrCe+tNfPemv3HWd/Z57fX2Wfvfde6AFD8ggTCdFgBgDShWBTu68FcEhPLxPcC
GBABDlgBwOFmZgRH+EQC1Py9PZmZqEjGs/buLoBku9ssv1Amc9b/f5EiN0MkBgAKRdU2PH4mF+UC
lFOzxRky/wTK9JUpMoYxMhahCaKsIuPEr2z2p+Yru8mYlybkoRpZzhm8NJ6Mu1DemiXho4wEoVyY
JeBno3wHZb1USZoA5fco09P4nEwAMBSZX8znJqFsiTJFFBnuifICAAiUxDm8cg6L+TlongB4pmfk
igSJSWKmEdeYaeXoyGb68bNT+WIxK5TDTeGIeEzP9LQMjjAXgK9vlkUBJVltmWiR7a0c7e1Z1uZo
+b/Z3x5+U/09yHr7VfEm7M+eQYyeWd9s7KwvvRYA9iRamx2zvpVVALRtBkDl4axP7yAA8gUAtN6c
8x6GbF6SxOIMJwuL7OxscwGfay4r6Df7n4Jvyr+GOfeZy+77VjumFz+BI0kVM2VF5aanpktEzMwM
DpfPZP33EP/jwDlpzcnDLJyfwBfxhehVUeiUCYSJaLuFPIFYkC5kCoR/1eF/GDYnBxl+nWsUaHVf
AH2FOVC4SQfIbz0AQyMDJG4/egJ961sQMQrIvrxorZGvc48yev7n+h8LXIpu4UxBIlPm9gyPZHIl
oiwZo9+EbMECEpAHdKAKNIEuMAIsYA0cgDNwA94gAISASBADlgMuSAJpQASyQT7YAApBMdgBdoNq
cADUgXrQBE6CNnAGXARXwA1wCwyAR0AKhsFLMAHegWkIgvAQFaJBqpAWpA+ZQtYQG1oIeUNBUDgU
A8VDiZAQkkD50CaoGCqDqqFDUD30I3Qaughdg/qgB9AgNAb9AX2EEZgC02EN2AC2gNmwOxwIR8LL
4ER4FZwHF8Db4Uq4Fj4Ot8IX4RvwACyFX8KTCEDICAPRRlgIG/FEQpBYJAERIWuRIqQCqUWakA6k
G7mNSJFx5AMGh6FhmBgWxhnjh1mM4WJWYdZiSjDVmGOYVkwX5jZmEDOB+YKlYtWxplgnrD92CTYR
m40txFZgj2BbsJexA9hh7DscDsfAGeIccH64GFwybjWuBLcP14y7gOvDDeEm8Xi8Kt4U74IPwXPw
Ynwhvgp/HH8e348fxr8nkAlaBGuCDyGWICRsJFQQGgjnCP2EEcI0UYGoT3QihhB5xFxiKbGO2EG8
SRwmTpMUSYYkF1IkKZm0gVRJaiJdJj0mvSGTyTpkR3IYWUBeT64knyBfJQ+SP1CUKCYUT0ocRULZ
TjlKuUB5QHlDpVINqG7UWKqYup1aT71EfUp9L0eTM5fzl+PJrZOrkWuV65d7JU+U15d3l18unydf
IX9K/qb8uAJRwUDBU4GjsFahRuG0wj2FSUWaopViiGKaYolig+I1xVElvJKBkrcST6lA6bDSJaUh
GkLTpXnSuLRNtDraZdowHUc3pPvTk+nF9B/ovfQJZSVlW+Uo5RzlGuWzylIGwjBg+DNSGaWMk4y7
jI/zNOa5z+PP2zavaV7/vCmV+SpuKnyVIpVmlQGVj6pMVW/VFNWdqm2qT9QwaiZqYWrZavvVLquN
z6fPd57PnV80/+T8h+qwuol6uPpq9cPqPeqTGpoavhoZGlUalzTGNRmabprJmuWa5zTHtGhaC7UE
WuVa57VeMJWZ7sxUZiWzizmhra7tpy3RPqTdqz2tY6izWGejTrPOE12SLls3Qbdct1N3Qk9LL1gv
X69R76E+UZ+tn6S/R79bf8rA0CDaYItBm8GooYqhv2GeYaPhYyOqkavRKqNaozvGOGO2cYrxPuNb
JrCJnUmSSY3JTVPY1N5UYLrPtM8Ma+ZoJjSrNbvHorDcWVmsRtagOcM8yHyjeZv5Kws9i1iLnRbd
Fl8s7SxTLessH1kpWQVYbbTqsPrD2sSaa11jfceGauNjs86m3ea1rakt33a/7X07ml2w3Ra7TrvP
9g72Ivsm+zEHPYd4h70O99h0dii7hH3VEevo4bjO8YzjByd7J7HTSaffnVnOKc4NzqMLDBfwF9Qt
GHLRceG4HHKRLmQujF94cKHUVduV41rr+sxN143ndsRtxN3YPdn9uPsrD0sPkUeLx5Snk+cazwte
iJevV5FXr7eS92Lvau+nPjo+iT6NPhO+dr6rfS/4Yf0C/Xb63fPX8Of61/tPBDgErAnoCqQERgRW
Bz4LMgkSBXUEw8EBwbuCHy/SXyRc1BYCQvxDdoU8CTUMXRX6cxguLDSsJux5uFV4fnh3BC1iRURD
xLtIj8jSyEeLjRZLFndGyUfFRdVHTUV7RZdFS5dYLFmz5EaMWowgpj0WHxsVeyR2cqn30t1Lh+Ps
4grj7i4zXJaz7NpyteWpy8+ukF/BWXEqHhsfHd8Q/4kTwqnlTK70X7l35QTXk7uH+5LnxivnjfFd
+GX8kQSXhLKE0USXxF2JY0muSRVJ4wJPQbXgdbJf8oHkqZSQlKMpM6nRqc1phLT4tNNCJWGKsCtd
Mz0nvS/DNKMwQ7rKadXuVROiQNGRTChzWWa7mI7+TPVIjCSbJYNZC7Nqst5nR2WfylHMEeb05Jrk
bssdyfPJ+341ZjV3dWe+dv6G/ME17msOrYXWrlzbuU53XcG64fW+649tIG1I2fDLRsuNZRvfbore
1FGgUbC+YGiz7+bGQrlCUeG9Lc5bDmzFbBVs7d1ms61q25ciXtH1YsviiuJPJdyS699ZfVf53cz2
hO29pfal+3fgdgh33N3puvNYmWJZXtnQruBdreXM8qLyt7tX7L5WYVtxYA9pj2SPtDKosr1Kr2pH
1afqpOqBGo+a5r3qe7ftndrH29e/321/0wGNA8UHPh4UHLx/yPdQa61BbcVh3OGsw8/rouq6v2d/
X39E7Ujxkc9HhUelx8KPddU71Nc3qDeUNsKNksax43HHb/3g9UN7E6vpUDOjufgEOCE58eLH+B/v
ngw82XmKfarpJ/2f9rbQWopaodbc1om2pDZpe0x73+mA050dzh0tP5v/fPSM9pmas8pnS8+RzhWc
mzmfd37yQsaF8YuJF4c6V3Q+urTk0p2usK7ey4GXr17xuXKp2737/FWXq2euOV07fZ19ve2G/Y3W
Hruell/sfmnpte9tvelws/2W462OvgV95/pd+y/e9rp95Y7/nRsDiwb67i6+e/9e3D3pfd790Qep
D14/zHo4/Wj9Y+zjoicKTyqeqj+t/dX412apvfTsoNdgz7OIZ4+GuEMv/5X5r0/DBc+pzytGtEbq
R61Hz4z5jN16sfTF8MuMl9Pjhb8p/rb3ldGrn353+71nYsnE8GvR65k/St6ovjn61vZt52To5NN3
ae+mp4req74/9oH9oftj9MeR6exP+E+Vn40/d3wJ/PJ4Jm1m5t/3hPP7CmVuZHN0cmVhbQplbmRv
YmoKMTMgMCBvYmoKMjYxMgplbmRvYmoKNyAwIG9iagpbIC9JQ0NCYXNlZCAxMiAwIFIgXQplbmRv
YmoKMTUgMCBvYmoKPDwgL0xlbmd0aCAxNiAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3Ry
ZWFtCngBpVtdi+y4EX33r/AfSK9sS/6AcB8SQiBvCwN5CHnYHXJ3CDOBy/3/kFOSquqo7e7pHu8y
zOi060OnSlWS2vdH/2v/ox+Gy7zFeezjdgn5jw/HljhetpBi/97P6yUu65L6A6wz2XeXJeyt/2f/
v/6Xv/4c+tef/ZD///naD1M/TcMlpGXsYXTKqsc0Lt17P86XJcxpMAwuGGZSMEc63vu3/rs/lcIl
dh8+Jql5uazjHGa3jwkqJnJsrYy7Rvc8b5chwTjpF2LEe8hGqBim4DNiTGV5lorhObFj8oZ/OEZ2
UrwMw5Zid4D1Jkv+ECZ2VN6f/egMI53GzRFGOk1WMcxR7ITLOI9LRDiP/pJUGC9TXKZBsnDJfyAh
FNPAMWGKcaBMFmmhsoQVR+I4pXGLXYCdFLZVXEpjilsYeziCHAtpWkdkBmIYYioRrtgc4SYwYnSq
GJyzqJlsztkrfcqIeDEMK8wvc1jWOIkjYdjmsHaNI/OEFYoHc6pVZdtymaehSbXpCKuyhTmdRNWn
jkxwY5mTODLl/8SRijWObPNlW7aypIquCJK2YWM+DqCpCJZQ6QSKLvVB7QkZcQlpgw9xW8O0tVER
7eM813VXnUAExjCPHIFYsWvPsixFxfSpI1uaV6Qq0mMu+SGOlJRp0iOC2ZSmJj0iIhA3YJQKirXO
VVl2RPWZI8iIYVokKktOT3Ek58nQpEcEuWsMTXoksLSsoUmPI0xlOT0UwyTKgtlKTop5YQbZj79k
5YTYMCIGhnHl9EiIQphX5uMIKoJ4yhaf6jIfciaMQkaOj6yanKFxaX0Ai3FITXokRGVKqUkPxVrP
qiz7ofrMEdQJLFGkxyrRGedbjiAqSxib9JgxzzkCo/RQjNMjqSw74liNSk4KIcRWbyWkyY553C7b
ujXZobW58UP7GftWZTk7TJ8S8knxmFDO5zBFK6dID8dq6YQj1ji0nDYYiMul+J1kKwbnHkpTMmrl
1LFaOqHMHfFy6hjSIZdidsSx6sj9CkJGcwlEWTfIa6eZrFDrWRFkJ5AeKM0gTclI6zpGpMdaaxcY
rI0PJb0xWMupY1463YsjDBEQWbjmshVzR6yj5JVS10zjAvirhVTVYDtphdRdOMJUll1wDFx00t5X
dJEhSSnNFUvNYK9hpdMwKpNmWjEOgsmyadWnYVjQV+MiLiziwZy7WtkIySptjKJ0cip4nXQ3rJo6
BL6l5pITtXRaBB5doAm8SenkBUpl0k0iDlJOeYGqLDCfk+orZNyLgxU8WgpaGMlMd4D1Jsumd8XS
9hSL9K1pQ/3GXNHpJ2kf5rNVN3bEK6NxQBVUsc5kyRHCdF3m/Z1k4lEvTQjBPK+psw3kR69YT5XR
tuOHWK2MwtxOn2bmlnef0lDn/F9eHL7NUUEYtWqpWEcbTXfEq6VjKuuOuL7sCMKAMxQ6Wd580i64
VC+ERo0iRlotDfJqqSa7PWSC7ETVpWSgQWF5SoGirVaJjyzTxmCtlo55ZVQvetp8OubV0mV31fLB
qOjmE2vVlXl9dKNHGKKS6y0RYvp4rWZfJFNliZAZq5mGaX1Exqnp7gDzesumr2vmZhub0jryUs11
tPFDyxwx4CVTvej3UHZMai35oLo0Hz4pmTrvzsoeO+Hl0b04wmp5JD9cnzoS85k5SGIenVXVES+C
7ggXS3OECqhhVED3+rIjiICXi8NtrwlawXNH/GqBsoMKqDlishQZwnIB7cGFpMEvf8dV0h+4Spq6
fDuTb4/83qacC6/HdBWAixsavdkdkWqzm6aqwzrE9Zi0mIxi6MpvfieQJekWp2oy6q7HqgUJovcK
cs1WLkdEs3aevmpux5nsAQf6pXxOY9XSbmdIM9+pZWbby5Z6gtebOz+leNuq93IoHnKDIt4aO6aL
bs4M894JXfVm0DE7REAj6SMrypTf6znjrNFYJyuEmUbSZ5gz7xqR7vUmzi0T42QF6V6iYi0e6a63
eIS95ZtNNJd831SioCNnnDcFYKRGpvZdxFci6V2Yo6C6OAqKMeMV4x0mafQosBVnTTV6FMxjyb66
PTGMiiH7Tfrs/OVRMGnphhYFtcxROMRMI8kWDB6WKKB858u2EgUdcRQOMT2SoUjp7qVdCSrFMVCM
Y7DHSKGHgHY1zpjKcgQU8wjwns6jYgpJnU6K+Vd9zj/r84zX5zgmZsPpN0jYty1dJt/3d5btN6B6
0SeF3ndetABUjLhXiKi/AdVjr1GvJnKlM7JUmKhXyJnP7uEKlZcDqWuU1TkR9arPmSd9Rrw+RbyT
CSOesJz3uo3FuhIasXrklrXU3vbmtcVsf5mlbOTkd6aL2Xf91m3tOQ4JKk3dvyr/0GcYdVyT5gC4
Fctze86jwho9BGzFWVONHAPFnHGfs2Pg1PwmfYaVKGDV5EvlEoU6Qrr4CtAnGqxu03MPoMsKjwJ2
QEUz4qtMGoaIehRcP2Gmn2QLluums6bSHAXFnHG27JFBKZC7bWgkfWaZF4Jq5CgoxoxXDBp9eVQr
mLNHwbEcBTvO5CjYyBnnA49Fxg8WWAo+oBiYJo8BazK+7TmKiyu0EDjk68D1UQRIn7F9CyunJQ0A
HaCIf5Ml/g0jrg8wUmj0y2PFbGEf60m+Ryjk14Fzr8c8XhR2NssLgEZMvql1AgsETU692SOo3JWV
ule+p25MKFnmGVNv+pz5I8hMkLKCwTumvgoz86bPkrw5CddzAapPvvGjvG9mIUmL9ZJv+wr1OmLu
91hHZ8qso34X0ux+SLOz77qUa+iy+0bF/Lyb/aj8Y8Xmb1zEilOm0h4A1ugR0OeoItEsSB9Z0XR1
jRwD1+hBOMRMI+kzLOe/ndtzFGxEUTjE/PsbRKE5ShvjJuf1pzeMFoFivDBIo+vT75uaKKg0FrAx
qRg0WhQUk0qM3JSrUPbbZdmKsmZ+8zmANFoUDjHX6PqcvxIFvQkuUdARR+EQw4sz2zpjTtjNYko6
okJk1yEcBddleW/PeWRYo0eBrThrqpGjoJgzDo313RbHcIljfpM+w6gcmbSvBdboUXArhJlGj4Jb
lih0S8BpbC6toP5NEThGQlimzH8vn9fRW2d8mc5rxHnOkrB7hRRdrSbV77lu+o0789PyvCC8GgSp
uho5028cmf4rBNqMW7PYIFVXI2f6UTX0fZ9yBtARWABT5QxwjOGlskp4LH96tvu7SpTtpMWy/Rgr
6jRQUKb6nSN9D4vynHQ54/qc57mpI2Wq3zlSOc9w4wmTVn59no7huaKOlKn+/StLqDP1NSa++VOM
bVKkCu16x4dRZr6e1+r9YdnxtxievBHT2+/hqRXk2ZtvmBTlrzMN4/WjPNLuXuMEjRYCkkWd0b5g
KKKwwzyixpKsLL0dUiuYs2GmT+aiMfRb4o891qwunwtky7uFZMWwxoq8F1dv1ps7dr1tLxfdo1x0
/5Cb78ucRrx+kL+107/kaJ4vgF8/+r+8yEiuyP+E31M/pMuId+7G7uUDN+YY9y/f+3/1fw5hjPjZ
vgHBYFrqH+OqSAqAdWAf/w6h9Ru+UoeQf6zPiU5XNePZ37/1/+5f/tH/7QVvmopb+e7+06l0u6nE
ySfT7yYzwdukrqehup0d7MRTuDJEduVTD/q9B2u8Q+cdDzJX4kF6yoM9B/KumQb0axzMT3mw5yBh
E6Me7FPqEQ6QSZ4Qn0Zhz8GMbzPUg69xgDR5woM9B/O6mgdf4wCr7gkP9hws02YefI2D357yYM/B
sgXz4GscNIXhC3mwRrxDXovb1zh4PcnBivdS1YOvcYBqOaB0nsqFDS9Uqxd7HqQgpy2EuOI3amTE
OCL4uX5HFPInbO+zYAjD3TRA4RXDUbtHBOXFsriFKv2E9f0qkO+1SnM7mDfKbUSKZWsy8TTqoDqF
3lC6GP4NQKbFuoZwlEVeqcUJiYP8QNeg/QWv95eB9Jgh9xj8RovMP/yUtcogn4qeBT/iCnpCoUS5
SfgkvJ6MTEzpMiE8RlFJUDQw6f/iLeKSvURXfPlvac+frsKSAR1tMFKYWzslFFd2QKTk+cN29rFO
CTdAPJ9DO7/BDnLthB28eP+AHZnPM7zt5zOn7RM7kiOSUUiLE/NZhvCgHewMztiZhwfsSM6dy4NV
Tj5380B5O5cHeCvwATtSC7CbOMHbNj46n5N21sP41POA1APhDYXv5HwGvOcN4qzsNJVZzQht59Ia
553lVumfkMnWZPCqfinusInuc31uscYkXappGVq8rW/E79pAtJOgjxZ9iRvFpGeh3G6hN7dfLe65
D2v/taYg++bcKL9XjXkgbUh8gg57MpcEzMkA6Se5N0ns5Ecdl94UVJ89PqntbEF7z/ifzE7tltJ/
dBJZpcRL0kO6nbStoXrZ2pNiJU+yAz6Aa2hq5xq+NbU2+FfNRprAueJsTe2uHWkCYPPE4remdteO
bBjO2bGmdteO8HbSjja1u3bON09ranftyHywAzwRn0Wb2qd2zhVna2qf2jmX19bUPrVzjjdranft
SF6f4w3/cLM06dYONTXZcIidc7xpU7tr5ny64aZ9vdXU7KLOjlDaXqTDoUnVToTJWu3GPkl6Xm2G
VvjtVIRS7k2NW1juJ0KdzMmKPaq/nIyk6JuJfJqRoi+tQT4UCXyex0K8/C24tKxiorZg+VB6ivQT
fHbzGHSyY8T1ElYcg1pmqWOIc9rXcC1Tq0X34FGI71rjhn88f2ALE65HLrUlhD1TafcHbwS/tbU7
3qktmdszW3vY6to75DngJdyDeflRkm2d23bjcvtBWy2HX4nXEqZDW/t4CYfP7Ff38VrwFUPD4c14
5cVkefjQnf9VvNaQWlu7ozLH61xlXBO+Anw4N7DdPLG+NtxyHdk6jtczHWwfr205jBd1FuVQfj/T
xfbrawgjvuNdr0rUgamrNPz1/0xdroYKZW5kc3RyZWFtCmVuZG9iagoxNiAwIG9iagozNjY3CmVu
ZG9iagoxNCAwIG9iago8PCAvVHlwZSAvUGFnZSAvUGFyZW50IDMgMCBSIC9SZXNvdXJjZXMgMTcg
MCBSIC9Db250ZW50cyAxNSAwIFIgL01lZGlhQm94ClswIDAgNTk1IDg0Ml0gPj4KZW5kb2JqCjE3
IDAgb2JqCjw8IC9Qcm9jU2V0IFsgL1BERiAvVGV4dCBdIC9Db2xvclNwYWNlIDw8IC9DczEgNyAw
IFIgPj4gL0V4dEdTdGF0ZSA8PCAvR3MxCjEwIDAgUiAvR3MyIDExIDAgUiA+PiAvRm9udCA8PCAv
RzQgMTkgMCBSIC9HMyAxOCAwIFIgPj4gPj4KZW5kb2JqCjMgMCBvYmoKPDwgL1R5cGUgL1BhZ2Vz
IC9NZWRpYUJveCBbMCAwIDU5NSA4NDJdIC9Db3VudCAyIC9LaWRzIFsgMiAwIFIgMTQgMCBSIF0g
Pj4KZW5kb2JqCjIwIDAgb2JqCjw8IC9UeXBlIC9DYXRhbG9nIC9QYWdlcyAzIDAgUiAvVmVyc2lv
biAvMS40ID4+CmVuZG9iago4IDAgb2JqCjw8IC9UeXBlIC9Gb250IC9TdWJ0eXBlIC9UeXBlMCAv
RW5jb2RpbmcgL0lkZW50aXR5LUggL0Rlc2NlbmRhbnRGb250cyBbMjEgMCBSXQovQmFzZUZvbnQg
L1VIR1JISCtmb250MDAwMDAwMDAxZjQ1ZDU1OCAvVG9Vbmljb2RlIDIyIDAgUiA+PgplbmRvYmoK
MjIgMCBvYmoKPDwgL0xlbmd0aCAyMyAwIFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFt
CngBXZLNasMwEITvfgod00NwJMtJC8ZQUgo+9IemfQBbWgdDLQvZOfjtuxq1CVTgAX3aGS9a5cfm
qXHDIvL3MJkTLaIfnA00T5dgSHR0HlwmlbCDWX53YGZsfZaz+bTOC42N6ydRVZkQ+Qdb5iWsYvNo
p47uInsLlsLgzmLzdTyBnC7ef9NIbhG7rK6FpZ7jXlr/2o4kcli3jeXzYVm37LpVfK6eBHfEDpla
MpOl2beGQuvOlFU7XnX1zKvOyNl/x7JMrq6/lRd1NEHVrkbCHgiqioQ6IBNV3SfUx42UQAZIIkWi
qkhZSuMcWVqiiv0x5SGqLhNCvILqFK8IVVDdoYoj2VLgJ9omVAIdopYqoRYIWh6ANJrQ6GufmtDo
ni1s3KfuS2SVqDpwFl/f3z3Fm4xTv07JXELgAeFpYHZxJoOj6+vxk48B+H4AeaKqTQplbmRzdHJl
YW0KZW5kb2JqCjIzIDAgb2JqCjMzMwplbmRvYmoKMjEgMCBvYmoKPDwgL1R5cGUgL0ZvbnQgL1N1
YnR5cGUgL0NJREZvbnRUeXBlMiAvQmFzZUZvbnQgL1VIR1JISCtmb250MDAwMDAwMDAxZjQ1ZDU1
OAovQ0lEU3lzdGVtSW5mbyA8PCAvUmVnaXN0cnkgKEFkb2JlKSAvT3JkZXJpbmcgKElkZW50aXR5
KSAvU3VwcGxlbWVudCAwID4+Ci9XIDI0IDAgUiAvRFcgMTAwMCAvRm9udERlc2NyaXB0b3IgMjUg
MCBSID4+CmVuZG9iagoyNCAwIG9iagpbIDMgMyAyNzggNiA2IDU1NiAxMSAxMiAzMzMgMTUgWyAy
NzggMzMzIDI3OCBdIDE5IDI4IDU1NiAzNiAzOCA3MjIgNDAgWyA2NjcKNjExIF0gNDMgNDMgNzIy
IDQ2IDQ2IDcyMiA0OCBbIDgzMyA3MjIgNzc4IDY2NyBdIDUzIFsgNzIyIDY2NyA2MTEgXSA1OCA1
OAo5NDQgNjggWyA1NTYgNjExIDU1NiA2MTEgNTU2IDMzMyA2MTEgNjExIDI3OCBdIDc5IFsgMjc4
IDg4OSA2MTEgNjExIF0gODUgWwozODkgNTU2IDMzMyA2MTEgNTU2IDc3OCA1NTYgNTU2IF0gXQpl
bmRvYmoKMjUgMCBvYmoKPDwgL1R5cGUgL0ZvbnREZXNjcmlwdG9yIC9Gb250TmFtZSAvVUhHUkhI
K2ZvbnQwMDAwMDAwMDFmNDVkNTU4IC9GbGFncyA0IC9Gb250QkJveApbLTYyOCAtMzc2IDIwMDAg
MTAxOF0gL0l0YWxpY0FuZ2xlIDAgL0FzY2VudCA5MDUgL0Rlc2NlbnQgLTIxMiAvQ2FwSGVpZ2h0
CjgwNSAvU3RlbVYgMCAvTGVhZGluZyAzMyAvWEhlaWdodCA2MDQgL01heFdpZHRoIDIwMDAgL0Zv
bnRGaWxlMiAyNiAwIFIgPj4KZW5kb2JqCjI2IDAgb2JqCjw8IC9MZW5ndGggMjcgMCBSIC9MZW5n
dGgxIDUyMzg4IC9GaWx0ZXIgL0ZsYXRlRGVjb2RlID4+CnN0cmVhbQp4Ady9eWCVxdU/PjPP/tx9
X7Ldm5uVAAnJDRCI5GGLLELYIWgkILtVCMpmK6BFVhfcABUFrQKi1kBYAmiNS13rK9YNrVaqKG5U
2qKikHt/n3lugiFt377v7/v9/fNLOM/s88ycOXPOmXPmCYQSQjSyggjEecWiayNn+/3mA+RsIUSZ
PHP+rKvULw4VIH6GEOm9Wb9YOvP65xOthNiOENK/efaMqdOPXf7u1YTUrEGbnrOR4V7mz0a6Bemc
2Vddu2TAwWcCSB8npHz6L+ZdMVWYoj9HyE1DkJ591dQl830DxEWEHGpE/cj8BTPm/23YZ36k0b/r
j9Ihkm7CDpIu5pF0QpLoJwWJOcnjvIyH7CtCaEYK0A//2UMeJ+/RAhohTfQnEiBnaIj2IEOJSH7A
TJ8kreRu4iXjyEbqJjnET8aToVREnSJyM70vuSj5JbmI3EEeSh6gNyZ3ofw28iI5gxH8WaSkFxmJ
+uPJDPKl8BmpTd5LVLKaWEhfMob6yVTyLn6/wxjuJHeR39FfJc/grV5yI/qrJP1J/+SzyXOkC7lZ
3CAd1faR28lhKievSM4hmSSbrGNFyXeTH5M8Ukt+Qx7HmIpoiziERMmV5CaymYaEFxG7mzxMEtTK
6oSB0jN401AygVxNFpN1ZBd5lbrpKOmodCr5y+QJIhMPKcCY5pAvaTkdwR4Rrcl+yQ/IpeQgeRnz
5b8t4qXiDunSRFXy/uRzxEcOUJ0+RZ+VSqVbW29IPpj8LbFiPD2AkZF4zzTya/IseYX8jfydLU8u
J0PIWLz59zSDRmgeMP4uC7FlbJnwFumO2dZhtAvJVtKIFTlEDpOngZs/kWPkM+qlaXQYnUZvp39n
VjadvSHcJ+wV3hap+CjwHSO5wNG15BGyn/yBvE7eoBL6L6Gj6Fw6j26i99NjrJF9w34QVfHX4lmx
VcpLHEucTY5MfkeCJEwuIdeR5cDtb0gT2Uv+i7xD/k7+Qb6nTtqbzqYP0kZ6jH7DNJbNath8tpE9
wp4QRgq3C8+K5eIA8UrxdfEDaZW0XpmqJM5tT9yZeCLxZvJA8k3Qjh3955FqYPQGUMUj5BnyFnp/
n3xEPuH0g/770sn0crzlGrqG3kWfoL+nb9KvMEti/mazvmwQ3jqPLQCebmR3srvw9jfwe4R9wD5i
X7PvBEnIFnoKDcKDQqPQLBwRPhedYp7YXewh1oiTxSRWplS6WBor7ZQek56TTsmV8nR5vvyFcqOy
Uv1Da5fWPydIYnaiMdEE2lVBSdcBEw+Qh0D3e7EGrwKj/4URHyOnsQphGqX5GHcFrabD6Qg6kV5G
Z9Ab6Wp6B91M76MP0d9iBpgDU4CtItafjWVT2Qy2kq1mt7C9+D3EXmHvsqPsJEYeEGJCkdBDGCpM
Fi4VrsYcrhWWCSuB2duFXcIbwlvCCeEL4SRWLSBmigvF68R7xB3iXvFN6RLpKvw+JD0jtUhvSuek
czKTw3K6XCzPlXfKnyiy0lMZpaxV3lb+oc6n6bQLRh4B7Z//YSHswUy2i3nF5fQksjOoSByYeRHW
YSx2xT9IlZDAuth5OcbmYyHRw5vLhgj+w66lh0k5/T1ZLjMBXFE8RvbQD9kx8Xl2EXmH1tOQuEO4
WnqVRclj4EYb2FPsMB1A9rJKNoFtEQj9jO4kn4Hel5C76JX0GvIYPUn70OtpL7qcvM38wli6klQm
H2Ii1ehQeopgBOQGcTq5/PwU/mWEVpAPyZeJB0Sb+Cvwp2ayESv6OPmYPkp+olLyG3A3AdxoKrjM
zaD3mwjnenXYZ8uxH0PgIL+Q3yB7qQwu3kvuJ15HTpEfyZfSIVDUAHDTE4k54gPip8leyW7YYdhl
ZCf23WxyMXbMZ6CSp5Hmqcuw03XwklLs6lFkMplOrgfXuz3ZmNyS/HVyaXIeeQ1tf6Jd6U90G3ZE
M1pUkpfxext5n67HPrz4X07vP2YmppMW8hUN0lxaiv1wUlokbZB2SXul30mvyz2A7ZXkPlD0J6Bm
HTO4grxJviI/UBVrEyJdSRzj7Y2xTyK/YLXC02QgDZP52LMF4OMD2mZyDXq5Edjbgv38NPbGKfCJ
y8jvyFHKaAAzugLvV9HPcOB5CrmGbMcK/po2IWc6uHYX8jXmbae92bV4n4GeNoJrtWBMH5LPge2k
Oa6u4AuD6AT09QOZSKbjDT3JKLobK7CfVICzDhL+AHznUCcZQLPpw2hXjx1qJxmkQvqUMtI1MTLZ
m80RnoaMSSJ/G6RXGrmINmAUDsyjlfhoDSlPjMEY3qKC2Ej/aI7iHjYjuVpYnPgFeY08ijUxxEXK
IEKM/uOMqn4XVfbtU9G7V3m8rLRHSXH3bl2LuhQW5Ofl5sSyo5GszIz0tHAoGPD7vB63y+mw26wW
XVMVWRIFRknXwbHq+khjXn2jmBcbMqQbT8emImNqh4z6xgiyqi+s0xjh7aai6IKaBmrO7FTTSNU0
ztekzkglqezWNTI4Fml8fVAs0kwnj56E+C2DYrWRxpNmfIQZ32DGbYhHo2gQGRycPSjSSOsjgxur
F81eN7h+ULeudLdFHxgbOEPv1pXs1i2IWhBrDMTm76aBftSMsMDgPrsZUW2YYmM4NmhwYyiGpuhG
yB08dXrjqNGTBg9Ki0Zru3VtpAOviE1rJLEBjY4iswoZaL6mUR7YqJivicxpxGzI+sjuri3rbm52
kmn1RdbpselTL5vUKExFH4MbXUV476DGwHXHgz8n0bl74KTVHUvThHWDg3MivPK6dasjjS2jJ3Vo
mxblPdTWog+0ZbnV9euq8eqbsVLDx0bwNnZT7aRGehNeGeEz4bNKzW9GbDDPqZ8badRiA2Kz182t
x9KE1zWSMUuje8Jh42DyGAkPjqwbNykWbaxKi9VOHZS+20vWjVnaFDIioQtLunXd7XSlELvb7miL
WG0dIzOA9FSZGTOr89jwMecxS/mIYkMbDVDUFRGMZFIMc+rNHzN6k3VX9MYC4KeWolXjdKzInEZt
YP06Zx+ejynSRinXGYus+46AAmInv7kwZ2pbjpzr/I7wQk4n50mtkU5tjzcWFTV26cJJRBmINcUY
+5np8m5dFzWznrH5zggCoI+MAm6n1vYpBvqjUb7A65sNMg2JxhWjJ6XSETItbQ8xiotqG1k9L8EC
pkp843nJivaS883rY6DkvYQr7b5GNe/8P4fT7xk8u08j9f83xTNS5cPHxoaPnjwpMnhdfRvVDh93
QSpVzhEKvKGsLdboGThJSGPI4zGWJpilIMrLJp+vgsQka6OYi38yHzR2hwCiNDNopLrRWT8k9azV
o9G2LfPPbZoVtUOj5uQp3soMfm7WNovGPkVt40yNurHvBekLRmddJwwfB47Dho+bvG6dfkFZNXjZ
unXVsUj1uvp1U5uTK6bFIs7YuoNsB9uxbv5gcKHUgjYnD61Pa6y+uRZTmU37gGwZGbA7RteM3m3Q
NWMnTzroxElmzbhJexhlA+sH1O7OQdmkgxGwXDOXnc/ldSI8RYZTEPoepppFaQcNQlaYdUUzw0xf
0UyJmZeqhDxKrmhmqTynWa+2trYb1BhOGxJ+oRUoZMBeRhOy0syqDA+RxIRAdEVMUBJSZSnBhKdo
HtGgDAdJsMj5fWVr5Ujn6coRrZWkCnHnOTx6lERdUVcuHhQKxrmI0HLOkMhZEhFb8C7iTp4QL5Xe
giTKolON1aqouIfoQ+yT9El2OWgNUK/P5qdet83PPJnWAPOEtDD1Zmhh5iFqGvUKahrzZFkDktNl
80tOu80vOyzWgOxI18KSU1TTJKeuhWWHoqbJDi0cHpqmetPSVJvfPzRg9QYCVofdbrHouqLIQ9GH
KysrPV0UpWa2xZjCvD5fMEjoUOZxuzMzMzIExlR/IBAOp+k2q1VTidfjcTod/WzWHYGv/TtsRjAc
txk5efEqG73NttXGbCOjsiQx2i9N2xH+Wt1Rkmak1acJaSMjD/2K46vueOtx4KvSWYn4gqKi02YS
KY4/PKt4SaW7otiswhOtbbHvzRJeiiwzwHO11L3oeucLq7sHeeDo9NOjhNZ5YuVlgKinTCjj4IsB
okLMExNiFFn3rtlbeYpm1Byr+WjEF6PWHaj8R+JYzccj/lzzCd3c98996FUf0vyP6KrEdRw+Srz/
YSomrE28T/NBUFcmRrPZWE0nqTbsBY4dAlM1SjQncatP02yYCSiehN1l6No/rPdFxBKRic1sY5Pr
kStNfJxsPX3SeZJUVfEp8QHTWB4rd3p69ipjzOd1B/xsxrP3bLtiwsqWtbMuKo8lRp+gf/8SBxB2
7OnEm4mJf304sfO+mQQjGYiRGOZIhhrBfJavz2Kz9E3YjDvtiqY6Cf65nXxMMF6kxrRX/Yd0n5WP
xj13IB/NydbjFw7G008ojzOhzO/2eRUmDB47qE/6zLXPbNoxYPjjidF7fnfm44V/pY/S4vcSmWfe
/DZxOnGWj2Rh4iB9hPKzRdU+TbXIutJMM400eQvtDcJbQPOUHAfJIhFSgv0Rss5aFCzCJqobcbwV
iBhx8nQrdVUQV0VFjxJP1OeVZSW/Z89esZtpqMvCyb3GD2FraOiV626ZH7k2fdp4/r7+dDWbw7Zh
95Ya0RJqQAXthb3sFCJCiSAKgySn+S6BhMRHfsHfdbxuhPPzOlJ8sg6vwF7tzwpweAslTvDe7sTj
cYxeIDmGj/UmOsvrMFrx/Ghb+Vh7lJSh/Z3cKMBbMzIBu9sutUDbjJA7jeFL9DX6DrpL2aXtsB/Q
XtbUCa5af214QtYs12z/7PCsLLWCVcg9tZ62oWyoPFirtu3QXmOvyC9oL9jeZ3+S39betrmcwUiQ
BZuTLUau2x8PbldtWY5iB3MYSDm2EynjaA1sAOFs71FLKPrWcyY2R5wc6fy+YQQQerKogQOnLVJX
R0sDfpdTkWPZxOXs1TOQLSuyy+n3l5X27NXT5czLY6XvLLltw+J33k38hGfZKH9GvKYsFUgtm/cm
piTq92/EYWw7fWD/xi/7j7sqgZ9noRv/Amhnz/YHBh8C8vOAA41MMLQr2S/ZeiaA6mlh0xSJgtNc
fkDVJEqsGuw4k4AzyuoMm0TELDEiNoqiGNIP0R04EaXIonIE57JgD1WVp+tOgihIXTTqkpXynjm9
yoS8xIl737yaspLjYmzD4GTOK6v4GpbhLGrFCDJolTFlX3B/+GDaq+JLwSPBI6EjYXVg2sD0gRkT
QveJdwd3idvTVTkcIQVyr/AQcWBwYGhgWM0J5oRywoI/T5wgrgluSduSviVjV/quDNVNMpwZkYwe
GYsyVmZsyHg3Q83g6+L3+uIZzGl1ZHBSY5yyDRAQipqwRqSZPdjEqNXRTCcYsSxrsZVZ+dpZt3sk
7ajfj0MIJeEsx1HnYhbKbF/A0+YKVlaO4OyhtajhOARMUV1DpctdQV1lRXVQGw6SjGTLHlcFH8Me
hxkYdmeFqDorJNWF0FVRZP7U7pbZwHGTDIuWFkpjaR7KT/HoCP/qajllDB896WmSBhU1HZCRPNa7
d+9a2lAHenFFe7p7gTbK43kxEEtuz5yyUpxuQDairIjWc/nObd/8rqjPjNpJs9XEFyGqvvj+mYtH
lCW+v9hPpcTZu6j2p91VE8dfPmPuL9O/ePWr317RNK3/6VF5fJVGYK+kYZUKyftG6WrfKz72y/T1
6Wy78Ki0w7tfOCTt934Q/Cik+r30Fv8tARbVbUSkAY8/mmVzWvVmmmNYa2zUsN0GwWOj/mbKDEeW
p9jDPBy9nu1pEgXK9zlBV6A/rFMpssXt+bZGawvWwOp3Hl2edVvW1qwns57JkrKOKUdrcmhOuMh/
NLCYHiWhLu1rcTK1GOBNdSddFcV1bQvCV4UnG05SjkwwLROlHKtAKtBH6jy55t4ysaf08p9HYz9W
hp0IrurHg8Syc0ZQp23B6ImLF4zpOTxrwZJJQ4fMtCRa0656fukb1896a9mmxOd/fCnxE70pOvvq
lfPn/sr3mTBn4rBJ0+u73rT10pW/WPPsNWlP3fRs4tRn2E9ArjgIeNWJjXxsVFgjtgrNGrIWWcda
r7R+YpVP2qgs+sVcscA2xHapbYftgO1Fm0aZSqyyTZF0i00hVqvN1kx/a4QF0SuAiTKraBNsTNSJ
YthabEeQOEwLYCpjdO9+IopoQJrppL3SbTrFyjDD7VS2Ks8oghJ2VLHljLGQ/RC9hA4xd/XxBoj/
EafrzI1dBYWgta6So9BdYeLQXcEFu5gS6e2k2816kXWE9XXrR1aJpIgW6C2CllVOy1yQ6y7qomxZ
6072q2/270+cSjxJ878XfnPu8h8S77NM+l3CAoq7FBRXLm0HX3Aahao9Yu3lHuweGrrH9oB9k/sD
u+Z2edxRV8x9kxvsiNp0YMHtcjWzbYbfbvPa7Ta37uU2VYMKo+gGMLwLyOuASV1pNojUyYYtSy/W
mc4JUd/u5cRn8frjEW+J1/AK3mb6mOGF8uUsdrJiZ5Wzxik4eVUnf5fH4bCLDifI8UiAGgEaCGfZ
m2nUcNsW06eOEGrAOvwk2At4xUF6cRubBK8/fRw8v45HOLt0mtwCGUUm8+CPugbgmKPWDtSaQtak
V5NWLyDUfA/wqvQsKyWgUMiKnEtp0LpoxKTrlk5dWn98AzvR+teul087TMU5tyVeSxK6NGPKvNs2
rF59ZZSdTfz4Y3Hi1Pv7bn3uA9DiRGC8C2gxAPv000bfuZaF6mp1U2iHtEN91L7Lc9C+3/W0p8X1
hsfmk3q6Bjmv8+9jf3Qe8SqHyRtoLlIl6HamRcC0OAozgaK07Q5bVrQ4yoAQfzy6vUqjhnZES2qC
1kxrmp6kFKsSNbKzxGLsel5H3O6TsJ0XZx6tsVJrODd41B3KOb+1U3LydIrJnq4DAtskJidIvqP5
XgapUSnP5IDACrQhbFkIUAJeSL1ceKbYo+hInNLHDaz9pXPOlsaziTNv/DnxCe3y1x1/an1w2eiR
s+ePGz1fHJs5btS21l8lTr/9l8QpWkvX0jvp9MPnvlx793Xrb7tpOah0IvZvEFRqIasOEjF5zOjh
cMV1S9jSR+ytD5EmWHZZfmd53fK+RY9aqEVQSJal2MKKLVWWGotg4TO2HOLqEH38AGNUVFSriq3Z
VKxQnGrqDTurEagQtuFIY23DArTxhkrsR+g0XAU/aZIOn7859yLoSD6ZsUDU7e41UXh28fc30MTf
lJMvig9S6Q8LE8MSnudoCVvyI2hybPJzMYD1DsJHVEJt+0rUjKx4XnPyjPELRF5yveR5T3pPERc6
F3lXOoU80sXak/S1VpNLrFeLV6jQinyL81fnb7JtDj5sezT4aHh75o787V0fLTkYPpAZWOxZ5Vnl
XZ0vbsI6bgKm0rtvRqxI4/FcoTufelX3mu6s+yF2K0RZi+H0B+Pz01eks23pND1ddhdwKtJQraTA
KGAFzexWw+a2VWXXZLNs3jqb54RlKeuotrjoaI2DOsKloaPC4tyj/lCP8yRzXhqY6lVdVWtdkdOU
A0Un64pMtHHUmbTTJglIQ11REc3LK4+DfEzxyfm+GMvO51meDiQkdIjTIVdd8dlbb56YW3/d8kTr
ey/fdP+ig1NqRtVPGTm6Pry4duKCa2tnzRAC3R+sf/jddx+eubVLj6d++Vpizq+OLn6Jjh53+ZRx
NVPqWy+69sbrF826/launfbH6njbduMRY1Jf13DXDMt16lr1UelRdbt9u2cfOSjssze79np+T151
tXhccc8ES61timuMp94jh6TF/nsCHzk/9kqzPTjc8s2ZlVaMzclxh40pOaMRbEyOZCdyottLNFqj
faydatuc21Kbs4NETkM17E9b8GiNm7rDual9au2wP9uRbcrcf7U/TfYFBLdxsF7gV6w8jq3JN2gs
O4+amovPxGsdderjBk+8zjV36xNnqfb6xzQz8e63j7/NLr9+zMhZ2J/z6NjMsaO2nfsltbz7MXUl
diQWJq5ObDkgpK/Z+Mubb71pBbDIrQXPwJOqEJ32P0iU5FFD61URlwvwUEwCKyiPywYeSB01RkXz
UYZHIekCXligF1t7k15SlXUumctmCDOl2eos/QvBMUyGCNaooGuaqGiURojihQdC1kQxIsleSZJV
3Qhn9NP5KyzhjLieywRBFsH2njLsssIkEa5W1YrzOjTOqYYlC31AWK2gAm1mOYaWpdESbYXGtEMs
h4iooUWgj4csl1/RdgBrDYH7na5rCLaOHDxj0OftR/IRJ0HOxdA+i8wD9+rrzQM3AsVZWbn6hRdS
EnqvFtdscVLE9cnhjZaxwxszYTI7SIRkYo8q6oeSCWDq3G5ZhG6Z0i5Tumk0KuCXRj2CID2T+N2K
1v1LEy+yvrSiy6sv0hGJJunQuXUs0noMhwp4CYg0DZj3kAhs9keNqsVd6Gz7ki6fi9+Lohb1aXJB
12iu353lq/GxEt+TPubzeWPZuW6PGvHmUsLS8ufLK+AmG16Q/yQ4BzDZpFniENg34+TY3eg+qnt9
9/ndV3Tf0H1bdzXSvQSsxJsdIRFPCZTKZra+qVuPse3Hklao5nUN3xdxgVsHTgBlhoPJCEzl3Jdc
sSejwoeX7AnzYMVuD9fHa1GpXbacx5UDuNqtR6B1c6UxWpqJw79sKoc4/8pSFCp/aa+eXMzk58UE
V7QtkRfbyIb99rHVk+dNWbWh7sFFwxKfJWy04Lknulwycfiwrm/uou5tRQPGGktflQ5lXHbPlFmP
F+U/tXz60w02lYkvJp6QtIkXDxqvSa0HE0s0a93IAZd14Zr51OQJ6XLYEsLkXWPkKm2td61/K9ks
v6S9Lbxt+U7QcrUCa4Gt0FvoXygt1FZJquJRAgFPIFDIugi5klIg3SNt0l4Rfm+RqmgN9KQxTkKP
wUHDzDORK4gzEVCvg17gizACwW6iajfs7rh9+BQH5WzX8AXjOC8VGNnubrrg+NY+gXxLzK7CJWDl
vvxtCnUoWUoJNEysXlPasrZ1wWqMdEKKY1G4SD+NI9PxIh7yCMQZBDk/1kiyGItwBhGNBPyBlGjH
ORiSXKyiWQMSr3+T+DCxhl5H49S2c3pp4k/hRxb95rWXty3axdIuPfUlvQ0e66vp3Vsvb6xesPKr
xE+Jr74BcVLcMyDiKVCohWwwLlIlCN9c2Z0l0RLpSYlJkiaIuTgm61quhcArNFxgQ3QCIR6O2Eps
BpRqUYtg45dwRIHarB2pzZwWpHSlqd51JjYJVJZRIYHKQGw8+JnYBAn71LRU+KDWmXC3WHXuS3as
NSKUSYfOJA7/kGj4AaPfhNGvxOg1ssCowuhlKVeJqCXqM+rHqlisblCZqpLUFDSMv0quwV4aI+AQ
wMIRS4mFWS4cv/6vxl+XOsy3cjMfzrOtlf80vk3Cyda+bHrrFj62R8603s4xy/d+FxOzvzFyNVHS
BabpuaL7SSgzAjGtjkxRVeBVUiPyG6ays97INmyjbPU2Yb5thY1xJG/D6UW0MUsKzS1gKilEL7xw
Wy/4vq7Nqgu7nGma5KM1t7VgYlpIbWsedMJ0O7JhGEr9bqQFbBAtSBxtfUo61PoM6/9TNbuhlWt6
92BOz/M50duNsCpTt1vXJYEJIja9Br+hLmmqpkN7O2AUKbIXNluBCwMdwkDXNTB/XdAEWNhkBbwf
i0AsFlVRYWCcvkcaoiIw3IpJWuz8jNsJq43n80mGOGUFUxsmZYTFnEOYL7hUoIIAcGYImucxM6Jy
k6vqrFRfEPizMsX/92kRiy0OfLy6R82HHOCCgAycZITy5Hxtg7hZ3gbjTouorJR3il+I30uQW8lj
Tb3GxBG2GDmI5MoX6dcKq4R7hHu0e/VdwiHhFUF/Fpc5zunCRfoAgS2AFkWLGupqzXWQk180uS1V
cnPyCxyZLFViic2Ph9VbJUYs7iqM5EiTI5QK7YFUiBpmPiqZYVu9PXZPFUbMf6j5BBvmhj3YWfFP
cd2DFZxAb209yqoTNySuwgZvXcjWt/7+3A2s8bvEYKwkSBTq0SFiZUHDYhHy1DwLTs0UL1lhaOl9
4nqkT18+02NNbaHxcHp35OIhY50/1b7RIcF03cPSRaeWpcdYVzGiFcOIO1ucoc3VF7Ml4sPaLn2f
dkj/XvtJ928VN2hb9Re1V/T32FHxXe19/QT7QvxM+0q3LdaW6L9mN4u/1m7WNzBlkmUGmyvO0mbr
i9hSURnEhouDtOH6RHWiNklXgnqxPc76iHGtr15lV/hBX9Y03cfCYkBT2g7fWUyEWiJZFaVUtltL
IYqdMHSPUm1xC3+Ys7Rj9VXDnh+38AeythhOHrGoAlcVmaLDWoCdVAULVqDNLlVHi08634Z6EajA
+a6v0Q1viYiqppWmzA4M9uJSgcECwdCNYBUZs4LwNUXNslOciW1N3LN+CFZasL+mS+viYHwtRmDs
uLhUqhjKcpWqTy/HKjxtiVisrJn1NtyUEAMViYFKpDSLKwHoxtYD+995Gke/ImflX52V4ZCztaG1
oTIcxDG6CBnO4w0YPDfSV1WmNkTRz3pQm87jGQt1R00e222JcAUHYgY/DfByFBURUC0ICtSUoirX
7fQw7jgo9KnEycRHiU8Tf4aaExS++KlavPHsMg6gqc3gDjHOjel/GXZNkNWQEFBFtwqtrzlJOO0j
NKfNQ6MLZiSUKirYhCqojCmCBnwBV4LIZyzyGYul8humDXa9ETIsoyz1FmG+ZYWFbbO0WFiKg6t8
P3JcmvvSPnZsXCs1RVI7r9Q5rrjBHrwDKiGUIEzSZJdIAUlVpnYDvlFRsbo7nzwQlaIjrgweMzRQ
hRpJ0UjLAeiMqmEqjqgJljHQVBlX7LeUqyss5ebELgp3j6tj8ZAEv1AqGIJYLdwEYbRN3aMeF+QX
hDfUD1QY+4vVuNBXrVHvELaq24Qn1UbhGdWSUsjL4MYw8EDqmGErLo2zCH8o3nLkbDK0aPc4G4eH
Wbs6M4IUHipTlCATAkpXlq/0ZWXKSGYol7EJiuZlacoINli5V3lMeY29z75gJ5QfmSWfFSjDlCXK
GuVxJlOgxVx8joMi2N5TpFBLTErgsoG6NtMIm0Q9ifdad4MAuglv/VQtPHUOl00YbkmekE5AB3PA
U/iQMX6TtEndbN1sF1Wq2FWHEswPLtEWu5XFriW+VeJada11lf0m91rvGt+awJrgqrBVcYMSwj53
2BsO+sKKp5tNC3VTBH/+kzolulOP6ILO9d5ISYaRUZ8xP2NFxrYMOZJxKoNlOPO3Ecq9HiWmfLy5
KX3Z86k1h3plar3czATfQhU8ICD0BuiscainvXqWtSlVBC7M82aR2oGlT8xa24TLPDclliWeThxM
LKM9Pt+9+9OPDhw4xt4+tnn+nqI+OGbdm7g/MQ+q1ewfE8lk8twZeJOYqVGdwS7geFhs5MrSQe/B
oHCxRGdJ70rM7cq12e0kzcnVKgdRMT0u+UHB0Ou5Zmj4szJK2uYnZTgdHdWr9I7qyQhnSpc3KdhU
TqCacH2xwZQFUBP5uR3KeCwWgvG2XRe/m/6J2scs2zVt08i5rzz70JOLBl4+pHybdMgf/ejJ1c1z
XL7W98TnEvXdp/UfNdumYz5cj4EegFujUXLGuLHCMdQxUZlrmWvlPqJtsf32o5ouq7IeUP16T3u1
vRquXKfm8tq9Dq+zp72n42LHQvtS51u6ZYm2JLQoY422JrQqQ9b8Xg2+3bH2hfaV9rvsv7FL9ojN
6rXZrA6rzxbw53qcXlrv3eZlXi+JRDm6gDgfUcFGnzLyic0JI/rbafnb5Ea5RT4C6/7q+TEaiZXE
WCzq64i17B4ddAd+AqprO/+YzPFntY6fcTgHqOtgbTT1bxjGwQtLTXziiBPwRIXuLBZz4YjTjlUc
a+Z9/c6K556tv35uU+KBdxeMu3xm5Z/emVtZMyRn7wnpUM2rNz7yXnrvVY/Bvlb1WG20dYswMmfS
gGGXwjgMzjkMdo6/Y+90pUeMiw66mjP2F7zYVcQhxYdDii9YNEOaUXCtvMR2bcH71ndj1lp9vH18
dm1stnWme1Z0TsGsroszVmVsjFrdMS6xM7PiPDRmhMLx0dmjY89mPxsTG7IbYjdk3xD7S/ZfYnKR
3sWWk50Tq7DFY8P14bZB2QNjc20zYktt12Wvta3L3q7vsO3M9kCls8nZciykh2z+bCU7ptvgz5gQ
NEKR+LwgnRfcCj/fITYDnpgWwxquyEqjad28AhlCOX8fGo7Euel5FK7ZbKDbcAehBVf2/ioa4Qon
/H/dumjBb5OwFhueQDwwXMnPC3fPyt/mbHQy53D6rSt1qgh1+2PbQWn42Em7idG71jy9wgiKsGgB
PzI1FJ2uKzqeChcUHYe0S7EuU+nKBj7SMvoBH0fawk/3eCqygR4EyH1lj5unjhgOd4Ut4q7QTXDw
vC8MuxV5tgo9yME8C5us0Xy0u6h8ffQ+tvLscuBxqG1gdnVsu/5otm5a/M2t+LOdOh9HYdN8BqYD
myO3ziqyzxvwiyZl8fPdMBoJb1192+0XXRI/+Nf61cu/fRTXdwNK4qjn+utvGFrctTdtfGPhzUny
TOKrxLv0o/Tb1ywdHR+a5u7ed8LS385/fubfX7U1XFGeXRHPLZ551dPrl314JYX+gHt8OCcdxB5W
cE6KFWslYok0SpsP28oGTZGpxHLhMFGIqsEUIy7n8pZ2M3RZgTUGV6yhgSPpEuyjcI96BdvARBZS
Wx9P8Vc44nYzrAq3xoL/4AFLzPE2nsRPcbQOgqOcn+Lox4kR4i2JkeJzZ86c7YdRKbAWrceorDRp
uIuEIjliKbOIRKYWI9wnDj15RRNCoUO4J1QOKX/C0Lg1KYQHLCKpFOEpaFPHjFp4gMUIHgrUQtka
Jj6tkORqypf6CesP2o/6D1bpJekV/SXrB+RtaKHvWr8in2naY+JvpMf0R6yHxSbpsL7P+rKodRez
pWI9Yr1PvFO6T7/bqqaUgr0qtdswuJYme5QPDvZZRKBERvmQtzSl9Mstho9rm9N5yiLj6rAClRJn
UBMzHTRKk+mk7X3OIkqR5mRJkwyFsjlZalwmEGuE4D5LhBIvFlHHgbHUontxFUaTFRxyNa+qaqLF
am1TPfESwYqDrWgV4BHDDQpZVRSJH7PAOU0lFKwT61sMHbOZlhh6RH7a8rRRzHV+JK0RbnpjNGRr
t66FQyNa68LB1tZwqLUu2G5gS2mU/Ml/zdGDa+Lyg+kK4yevEd07aJr8pksHvdPUmExFsyG1k8xD
TEMdN6fh4OJBSCmdkXiIFn9EreAb9C+0S2JL4kUYNz6CwuESvj2HOxjQOoecbQZhDk1+gTvz/eCr
KaUNxmwlrKZLGf7wsLQh6UNz/+T82KX1DFWHJubNDM3KW5V3R+jO8Ha41l8Kv5xmlWWbzy+H/Ply
oa82tJitYtvlffKLsvWZ+PtOlpFT2sPV1ZZjFHWP5xjZBXiEMuLzcs7lsJxq04VeYnfEL8qg3L/e
mPFjhpiR0ZWWEQO5XA9hZHzUSHdVRY00Jx64dhRtZtfuExWrTe/KaQdlZohiM0SNrqhhGF5LZo88
tVArsNVmWbdaGTT+JJR+ww7/e7gmTuP12Dm3lgBNZYXRKQH6cYDWBKYE5gWEQKhsTv82rWcBuGPD
yTp+UIYdiaeO8zsJOC4UQeGFGmzyTNOgUZQi6z3FGbSh9mS74puTbDmQlhEflzM9h9UV1dahBcSj
YIexgG/qBlj9GijuucA74PfBBxCIcu4mw5bNHQRQrHDjmLufKNdATFu26ZSnM5JFf3zjqebhQlpu
4iuLUxGGPFz38NMT7rvj95eMmjd8HL2851c5vSYNumRwmdPCPul+7121aw8kmm++6ZL0XiG1unrP
msm3DE/PjaSPHtw38Ud3aTC/su+E0rxeOTOA8tWghrtMzSud3H8QF9fOGD0sFb3SLk5j7gnyBH2C
f0KwNv0HRS4X+9r6esrTBovDbcM9g9PuUu7RdKsd5E/CWIQ9kuLla+GxWBxED0TV8PxMmuksZEIe
THyFhpXOJ9yuHsqoSuEbvqiTrZWfj4RGxrXMSq5nVnFdrAHGO5gULDPlmfpM/8zgnHSpDvp0ET+r
A3W4cc0N/vk+D6TAee0TN3tu3PNcItF68NLdhjs+dGndr1fOmrEKZ/hTdyVOJH6Er/iDS2u3sC6P
1Mzf+tj+B+/nHH485l6FnRAifzFGT3LUumv9sx1z3HP81weXhjaxTdYXnS8G33O+G/xS/lL90vOl
74zs6e3p7RvmHuavDtZa51iVPu5e/l5BYbG02LFaWuVYG9rp3uE/6N7v1+ycYoNpcR7uc3vj9jIb
zwllxs0Q3j7bIXyJoQNnbpeFGKhKDNQjZRtAp4fAvkQURQIK5bk0SoptPGKL1uBUHE5Tot5QeFIK
leY9IBhDi06fLOLm0LrjoFhuDUWYUm6B05T5M+Uh6SVxomvzbYo9El/br6iZc/3yK0fN9FFv0enX
v0x8Tf0nn/uMfVM6dtztu57ecum84t89h+8m4A2iuTu4xj4OuJvaRjcbjG7uWrlWr3WnqGUzSOOM
ps3PXJHJ+ghxax9fPDRMGGQd5hsUukfTOJ3skSycagy7RbE7sBR6oNBuy4NTt9BwOEj4Nk47UTWU
ManS3Jx8hg3fpyjGlAapUwnsvA2cVmxz5Dn6HHeKWuQ63Gsvb5sgzicBnME6koo4NXG2/+7JBxJn
E8/tuZGGWt3Fg66bumblrOmrt1xai49+IKto6C7mPDd/1yVXP/LwgQe3Yr79Md980IqXpNPfHCRO
7JNqSwVsWLaNzp3SDv2wdtjWHFZVLx3CLpar9ZrMnbb98v7wS/rL1nf1o9Yzyg82W7oj3WeAQ/gM
uyvu8D3je8MncNdBkyOzygxhwvI1s1sMKPnuUfZ6O7MH3Vwv3B9Ki9Myt2lQz4ikDOvZhamwqFsq
DKaboeEAO90GlOK6IiNT3G6guUm0uIMc3TkWhURpsS9FRMWZUzLnZW7NFDMdUdWwOeJAeBs3LLrA
wn4SaqHhDRoF3qqgkenAAyw4yHk1l0i1Va2m2ujGRFDDzSeESmaIejzc014VjifepMhsQFAA9zsv
hwmyOdnYpOn9zGT/aBXMKej6OOeg3CRreO0GsGTnL7Xz18OVEEjZ82pNtxVO4RCtZVx5wkm1CMZ/
ORaB6sj990SImjd0PCn9McB+osGeXz6Z+PqmOdT71knqllsN4capAybnC0smXFZZSemY4nsf3Hf7
R6CFosRLiaevXz+E/uK65QMHXsP5RhAb4HOcPPyk2YAvgXYRI86Iq1ZcEZRU8Zkg8/ldzOv2u+we
B3Ha4UR1Mq+mOix0iiUJ8zlfCF2mLoefJv240YRkJm5H49MnSmSPV9fKqmDgGAX7ToGz2DXFxVzN
VDRsdk8e804h2/wtfubnNKFZ4/5QYMlBNid1PaQILJXfTT5XB5UydJwEwVS57R0A73VDRSm/Otsm
hzywk3BBFFC4wPH5+N0aXIoJbqm4Z+GSa/IG9ruo/I9/TJzYIuaNWrVybM4LzorRwz86d0AYau79
xGix3tQgiulIY9rijNUZzG21ze+xyraihxihOE0KJbSMlQkGHcgGCpc6ar21uRMKJxTVFl/pOOM6
43H3tZX5+xaUdcUxyj+8YFDXU9bWgH4rZLbFarN0sdry7f6Ar5vNCkU/mMN3wD5zB5gbwO4yiaTJ
Yk2FBV1SGyCWmwp7xFMbQfOlmYJ/Cq4jXrsny5HPA7vejSPc4lOCIblLoSUvHORMRwuFwuHbetAe
YEHNhk7KcqLuUMl57sP905z/OE86W01FnQur1tNtlp92+Q96bsLGNikYi2OSLzXN6/yUzAGn/HYR
12DyLccc75zcWYUzi+YUg2+RuoDk51LNlPvl4NFtBBwoj8I4wGIRKAodLxIspf3VjIIJV/fK9diW
tbx7/TRKn/n9Cqr0m3/4tsTfPzn36/pZt66ZPePX1fm9fZlRf4/Y5fc9vu+2d6iFhp+4+9zFTx2a
W3nwVjv79aP3P/jAI9vuBwHegVNPLfi6n+wxihw0Cx9AYiGdA+gA15/pj1RTJL+Uwya5ZrskSpnH
63J7BC+jDo7UDAEODd3r0/2EWPQ8VTMiOfEnNZrUqAY0Q+v3Z+fENwS3Bdn84Kkg+zaIG/bePD9n
fYYDdbf56Ckf9YUCVSm2D2Ma911AI0Ps+7ZU6jQAG+1J4DRgqleqeWaCNOAKAryqIOW4eZFH5lH6
2Jqnp26pyUiciIy+qPrqsgRsC62fbR0yf81trbezHjsmlw9au6r1G0waDNO8GYwo/0pg8UGiYWRV
Lr3K0EZpbIXWqLXgGtK3mpSl1WvLtW3IkARZwScEAqSYQY6QY2hZB51IlnBzUmcKZCafnRbNiYsh
tW1e5qxScszcnqZzzHQpQZ4t4FdxcNHNvHKcOIHvK/dTMXHu7DAx7+wHWKGfRzj2IDeJG4V8fNIo
ia2QGvGV6BHpW0nKkuql5dI2ZOCiPoakQw+jnDDNkeCS9D+NxGQMC0wtC1edpUM/VeNdy+Dx2Iyd
nk/7HiSFaF2Hd4GzWn2y3xoX4mo8GI8NYoPVwcFBMSuss4VjtfrCFYVbCx+WdyjbrfvkfdbGwiOF
xwrtpLC4cBQKnin8uFAuNMLp8SqkV5iFkhIVlXAGZ4V7dIVr/UamqODDhfy09PS8fNgyZYczz+0y
JpfXu+g8IKeZVRuOcFpeRjry5qXTeviLkbc3Ny8vn2sRewjJx2ybHFoVD42eGHc+quYb/QGVgJz8
eL7R56J4cf4b+R/nC478rPwV+QLJj+SX5CfzxfxQwacpImwz6UIapfZ/Je5PFIHNfg9HFYJ2cjQP
eWAL2PDmjTLgcwEcAiDKItxwB136A6bmjwuhnDzzOd81yfNnSl1GhfUtMzeWVD902cKHCkCvGfmj
+87unjiRWdWz/+xuiRNi3u2Pjhs/ftyUywZtbq1lUx7oXjlk/cYEY9X3Te5avfKe1nNYM3ipxFqs
mZ9sNYKKJ+CZrM6Gu1CkWC3nIHWQ40unJJvb1aXgUG61WKB+MZrnJ+Z2JRR3/ci/2666Jc8KY2Lh
HtgcOV7NXWulp8C5L9y1nFP+88Y1rYfcnmxqbrji/fPk4bRObV6xNnEiZ3TF0GuLQPzS+rfq7q3J
YpmPz+g9auWeRJaYt2XvwNkrf8n36hjoZPdipjZo8JuMIV/QE+oPnh984kvsCxiNQ1JIY7XOCZ4J
/trgJrZZ3qxusjZr77A/SR9q71hheJe/sDl3qK+xP8jPqy9apYXqWnmlKoC2QIWWAEeRV1S8FUq4
Pm0+7j/ZozCYdFC5UwcX0zxuHlo4R9fmOGdCD50TFGkd2Dm+TYm7MS1cseT3f/NyO1z8GrOudcvf
aDzxyjd3JH5YRyMbr7767ruvvnojy76ZyusSL337t8TzK5M7H9i5c9uWnTu53rGaEKEX5uskO42C
TRLV7HSsNFNaKAnF7kn22fb5blHXHNYsK7vNmrSyKmsNLkA3s8VGoaJgjQUm6wX4bEUrgRlL1MLL
3VvdbIp7uftJ9xG36HaSPG7WKDQsjK2A6RF2DVfVQZqeUi6gW5xf0u/rQiNS6gWYMLZHBb6S5Vda
GsjwxgDuBJWb91xKewMBWGKsKzCQUjRkF93GV3XglYPqaydefFHfMcVi3qYrB5V/173/rsTfMMcS
rKkTc+zCnjNaZJccU/MDrkBss3uzd1P+3V00xVvtZe7DtoP2l6Kfxc7Yvs+WC23jbTNsd1s2uXdk
H7Qq/WNGzqC8WdnT81a7V3tXZf86R+uVN1iutgyz1TiqowNgk83Jz+tlLY9yC2R5jiLrkkuLBm35
1uzs7JiSk210vca6xLvUt6hwYZc1vpVd7vXd3WVv9t6YbQW9LXBz8J4uj3Zp7CoHon4jGov7jfSs
eJaffgxVrkyNjsq9LZflGsGMeG6YGymMADjPqK60pCst7kq7ZkZLnNRZRqOmJgPuZIaokuLN3EcW
KlrSzA8958BxTItEm/gz7yBx99JJklI4jHKZUpn6aV52z2h1dBytDUyncwLfw+cYYGI4ms0KPDYr
KwhPgeW4usAyKkzD1R4FuiD+cbWkHeoa0g6S7ORrTdCkcK/PDLm1tykzh6ePNWXl4NIkQtjGedpI
Q+RKG+2ZXZ292XZX9gvZb2fL0WyrTRRxKy2lq5EyrrU1BbpVITQVezOdnRvnoZEB/k/MS9ajqFiP
62unKOx9TtPuLZo1PX7UpNQYAb/yFPEUrvliCn4DaqC/LGCg34CB00LAKO8VD3CLU8DILcQD/ToC
WaZxRwyMDxtQOBxhOiqcDLO2yZumb+CWH4+5XsxvD5mKHD9rwA7eZmXjV9zAvhvwU5e6E5KTfMXQ
cJnAUYBHtDn5zX5bhdVrreDRPVZu/f5qt6XCtM7hgkHt+duK/LsK2HlAdKmboReYsfn3AdDz8kpo
2H31FVf1yvX6hiYev3TZB5998HZB4gfXlEnzSiLpefTZ2kmnv32/lRYXjRlfkF4c8Xldw/tNuGfd
U7eu79FvQJY/lulLnzls+Ko7/tiIXZSV/ILdLt0Pvvi6URghUMn1Qkcf+zB7rUMJ+UhQ8PtIwO2B
ndzNvDQoaIquWKEIU8NBAtsCjQGhHkEL7GM4euyBUQDMsIn4+BeTOLNbLbi0UExIMZ0CLsEPJwVB
IS/gHu+r8m71PukV6r0rvBu8R7ynvBLxOr38QrwIc8WSbe2WtuGNvcAn+pp3B73JFm4K5ycXWMKd
p82TC0xB+AIQp8XjEKeusraTSx3FMcXLj3K9Ahxp3DXgwsd/5bkudl2LJT89f1hw2q8uua7Cot1w
Aw2LeccS424sSk/7oEvZ6ME97qZvHHvr4cRa4OcWcJmx+GsVfrLFCEx0zXJtlARNDsmVrNI1nA13
nWCKqdG6RIuf6D4vDmU4meX5fDDrF8KsaErK1PHtv5GUmspJ3RSRKj0FG/KFIrKjfBxxkn/yCF2i
o4SsS5kxcKMYGoM5bbjOEBVG9nl6zpW7LqGhrDFVQxZ0oaGt46ddvmsj25YIHpvRt2bhcdoCVRHz
tEAXmIx5Wmia4ZMKwsVxhT9k/lD5A7b4o00ITSU1As/BvSKVcZ1D1a0WaOLMLYS1sJ5NullesuDj
j+Qpww/7g04ki5eELPhjNJY46WNZTbQUS9qrU5vV7MuiBeK4qapRGZ+oVPH7IBXmrekKXCO2EF2E
SV6DlV1GXKvgFjEjmF4Qt9iyzDtyog1Wd6depdeYDuwSwyKyCguMdTWigKsgJVBSVhgOazmhETjL
BBqyvgDawh0neLVwyakOykddyDS/m2lTR+MKGj6rwinM3NpFEFhtF4FgQfcEuPkVtnR6IDGO5r/c
JyDbna/SaALYa/1k32B/t24sM4VTDTpxb+DUSj8yegCzOpGZrkhaGvGzTNElhRWvlqm7rFbTPROz
VAgV8hBhiLxZ2CybVkFjcdeLgUILvsgVNYsuWtNIWPRLXi2k+6zWGCkQ86VuWoGeb+2BK8T9tGpy
MbtYGqIM1RaTJeJiCS5hfbF1NVkjrpbgGNZXW98n74vvSO/AM/MOPDNficel47gjdNz6I/kRl7DO
KN/DhfO9tVvbGp33xWhtvhgfIhYcDH72usgaXzV+J46zRLBKrtVWnHe5jGhzuVxilHKXy3/nRpFT
bhRcQKqCNQurqvbXKP9wUmZXEQvAwDcM9r0ROFFeOEjDKWWDu1HavCgpJwo+xsLqtX86/K+9KBgl
X1jwb8L59V6LYauAc+nMHlsFqPwMmLXFsPKcU2DWyOEBUsf2YIUQtLNuLhjMC7qcKjz8H40KAq1N
NFLXSweoY/dr1Jd4LPH3A3tBGUNYM4ezH7DHWsdjv1mx3+rN/bbZWF+gvCyyzcpB+iF9RzllwwXa
sBiU8Q0i6a0OwUchv6ILFT2PFik9aR+lmg5TNlvOyGcULVfMU7rocbGPPlAcqT8vqpfo48Rafbp4
lb6EXq/fJW5UDunviB/q53SbICo4c/vx8VsXvUys0qtFzYdvK/voI/Ur9R3iAfEV/XtRw12JU03u
IN/lR5t82JhciPusrjgV8d07d4AhUImG61co2V/YLZ40r7UdMxz+nLiQx3AXhmmSbLG0FZ/CdVbe
RwDFljwi4Q67BGcbNEzc67IQGFyu2iOXaQgMizqjBl+NH8O9V4FnszIYwK4y3NzaBU2We6xFMuPn
/dtgXlIM4QJK23VF8zNxkzHyr5qKGtp9Y6kYCBO2Q/5IUfc+PQJC5hPcgxDCGDTBRXJdQ8MC0EbD
gjJqriue8P3R5Ynb6cSnXqTDEpvp2sSOox+wGBMSH9KchNb6Jh2aOMC5qB32rjFYVQ+N73UXSNTD
px60wl7qh9FU4Q+ZPyQ/8hjnZVngpDgmizaLXXYy4pFFD27XCTDqy556KIDN9EmwQYet2F5AIr4S
X71P4IYPNG3Kzoub9hB3embcx33LFYIRDMX5Dbdmmm9ozEzBP8lTblpBjPSe8Ta/v5dzQZMJjmgN
gRVybpi65g+8LRjhPA3b1cm64tReAidMfc3IbVMVCrxUHFOpq5F1wxudENB9IKD3iE5yKInVSp7a
LeDvhPF7/ab1VuLOfpuryuP0hPBwB6vgSj7VhAQP9yDdds0ytYkUuwBzVj5kd89edlhVz9BYYu3A
3IETl48aPTI0oHza5SFsKDv7+zl2sG7aRdmuD23X1HLsg7S8v1z698CSKY7K79SQigxCHvq0En/Z
jpDXRvXd/9NP51rx6XsO6uJTfLOF2U7plxhJBjrJTz/9dB23r/L6P//YauW2LFaBwySHXaRZeI3M
F68hbkC1kkFqpZfIZHqCXIayKwEDhQz8zb3HyXjUX4j0NQjvZBXJVtSfAHgIUAYYAcgDXAqY2AZj
EfZHm1cAu9DHFN6PGX5K5iqvk4vwLgLYCJgKuEuaQO4WPyWb5AoyjefjXTejjxji9yD/fnkXuR3x
zSiv5XXNkLefQIahvCvK7pQmJJPKLURBHkG8Ffl+vP8OPmaEeXj/NeI1yZOId0HfQ1G+GuF4hOPa
xhs045/yNuZc+RzX8jjwswxltwPGANYDLgV+ePsS9JeF9C2IWzAuDaEVYBcJyUadSnYRaUTYDe8f
iHHyeXOYyueBMDUnjB9thv4bGI/8/h0BY+Lz+hLwOuAI3t8+Nj6+jnCLOTY+vtQYBwll5vrxOdsA
fdnrZADwkkD5eumz5A8cQHlHMa/DAAl/n6yHSpK7MLcqaS/ZjHQpoNKEawgVt5B5wmmswV5ynbyR
PIh8wnoAvie57BsSlnNJL+BvEvqfCJiBPp836WE6x3vyG9TPEj+DXnANqQfMxbtfaccTX2ekh2Bd
J6HuOb4jgNeVgDnAwWbAArTvgfcXo60d6/4DnZB4FHWP4T3DOeCdfH2yUD6IryVgIdo3oC9qvie1
DqAZrAcA5XOB098CngE8y8fQDqh/ZzuYfe3CHYxdyX/gPR5AGPA64HZAHqAeUAEQ8H4d9XX0Pwzj
KEHajzFkc9qQXjJpdSwfe2oO5l5Yb+LocXIV2l8KCAEK5MfJZW1QgLoE45qGvsah75vb+8b4pqJs
fHvIy8UrTbp/GXkEZUM7hHfh+7nRfAx87ijr3x6i3f3odykP8Xfq+P68V3jHnP9mxM39yEOOG4Rj
0OdG0PnqtnBU+3hQ1hVj52vQFe0zUX4n4re0h4ibuDgfvkHuRZ8T5NtBp1+TkeIHZCT+MtpIaSnC
O0iJdBB5mI+IvzAnFJEaFV/cYy1rgM97OoWbkbdZeYfOxbtuEx/DXn+H3G/i9R2WLb5DJemx5JcS
oa9Ij7FlZvyfQpTzOueBtqTq8pBDxzLex/8mv2Pb/2mcvSs9RmbivV9J7ySTmM8dfE8oX9MSQKQ9
RP4ewApAF7WIblavpM3KeOKUCTkNmCcapI9kkF5iC6kSffiLcITkIn+8fLHJdzeg/5fo1+QWrNcq
xUdiwpckyN/F3oV8APD+EY4AXtvp6QKaa6ehzmE7vXYO0c9GrP8dCCWEIey7Q4DDgA/a4C8IPwE9
DgFcDDqNIf0Q6t+D+FoA52+g1+RJ5KXo8xWyBXm3ttNne8jfBTrt0ok+FeRfQJed01y2oA/NlC3g
NRgHp2Fz/pw/ch6H8iq8cyLo/ZX2+p3DDu3vBu94D2O3ia+TyW37uhBhCaAYfTwF4HzkMHTV09ij
X8hvJQ8rVcnDwqvJw/I9ye3KlcmX5b3JLZh3IR8LYCP2s8nLMA4/T2OcNyO8B/Ml7XJUyiMzOT6Q
f6+5Rng/6nflYzPrLcX+m0umod8/IC/J96GwBfsO+ER/N4o7yS/ET8gGjN0hPJnKF8eSkSi7U1xE
buX54Om83CJsMMvHiP8gi8RCxHcivI/gT56QRfJzvE3ydTPv01QZz5Mmk02gu2JxLXlY2k0mYUzD
+DxYefJV9BnDng+rK8j9CgENf0LuFX/CnFswR46DFnIfn7fZtin5E5+f0pcEJAHz43UAvA1sRpE2
fGw0ccHLuAzg/BO44H3Kb5v6BpGOov5Wcr2qk3vVfPCn70hYAS8x37WbTFQNE+8ixjZU/Bv2x9eg
sfFkjeRN/oi8/tLjyaTwE/bQ19hfHPCnvCQfCUlfk/uwl9bgfWPawvWoP174mvgQ2jE/LqetaLNW
fIQskB8jN8stoLt3IAveAU/+GnO5kvRG/HbxseRZ1B2Mvgh/N/JHI13C14QZySPA80NKCwkqBt6P
OnwMKHfz9wqfYbx3kjXgJf3Vr8lvZK5lE345FH/dkhBIcw5mejni8JXhb2WaYOZxlRN1cc64k1zP
83Hn92WMguFvW1K+F8RHISPuI/2FHbCHzIT+8BW5kRWT1cJI0N1JyAyBXM/TYldSIJwkw4Uz0Heg
n0k66WXW80OOf0FGibVo30Kmi3vIdCGJeBBwN+gR7aRmMlm6AnrW5einDRj+wqaokVHyerKaFScf
5/XMd5xJ+gWAuJSUmu142zYwx8rH2z7mhzqMGd9DCjeAxvh4+beRHcbLxyq0j7NtjP9qfOY8OS4w
Tz4P8U+kP/D0ISA3FeIvX91CHgNsYx9AD28hy+jGJFy2pLoTDOmYFpfRNYBRAFFcRh5A2A3hV4B3
AFsATwH+KpaTm9A3/s4xaeLnAg7sd+BdCFH+COBpwJ/byzqG/H0d0/8qLn6ePNQxXyrF3y8FsK7g
6YCOZTwuPkDi4hLoRCXJQxyERfDfAGT4URWVFLJPkD8B7TqlpQKySZyHumOI0LnP/00acwKtn8et
0XGO7euBEI7+/wh8DXk9HkZ4iP3Vjcvn/814/m/UxfouB8zifUnbSHeThr6ATq4kn6dPkcvpseRP
4Ocyh1SahE18PkBc7euE/DUUf+Sz8/qx35GeHOed85Gu5NDevvO6/qc0+p3TEdrpoD1USonBQfwz
6AHQOQ15YHCQOY0BOqfb6evfhuNIHHiqFseBTjnNdUrLTlLMgc1H+WaUf07yOZxPjyOFaGPSK28P
3MY4ANeHOLBPSJSDMAZlANTtx6EdX5j7JI5XoYW3Ndub69NO553XB22J+AL40XGSjXi4c9hORyA/
k2+0p3nYOQ9pk5f8qzrtdREagJJ/1b5ju/8/xLF3XgW8BHjx/8v5cHqnBLQKcBLodG9B38BftpV/
g3PWa+QWQlrXEHL2WULOTSEkARl87gnkjUc8D+HfALihd24OQkijs8cQn4+ytwGvA7aJaWRJm14Z
Qnpwqm3r9rb+clPtebufoO2c7Zlqf3Y14vch/l8AUNnZ5xHehfA71G9EPzBWtUIHOHcjwjjSowCg
sXNvIt0PALl/rg/gSwDGeQ5qzDk40c4+AFjE9RGup4E3djyH/t9NdzrLcr0O7zt/tv1PaYwRNgDc
buI6J8bL9UPoI2P+12H7ev6HEPi44OzRvv7/KWw/S/xT2IZf6Hyvcmgfd+f3/Ls01vPHNjiN8Ftx
bbIVOqVi6tHQZU2dm+uPXPfmuizXt7key+1BKZuiGQLPfF2tXHfm+itCfia7Q3oD+LyGXIJxTeB4
5bLE5IMdeCvrCltRV9jwUgC5RAaizh8xnlPgQw7I1++gW27ggDT/uTwFydcguxzguc/Qp5LfIXwd
6Qx6DC66NpnG5V5HOM9jO+kq/0LGXaDL/J+W/yeZ+H9aDv5S0wYXyNYO+TMR59C5vBh5HLI5tMvg
/7dhZ1n9n9KdZXfn9HkZ/m9kdEc53Vlu/2/T7XK+PdT6kVIOigEdBNBZL4UsvkAP+E/pzu3/T9Nc
5+DQrnd0SO9G3u4OaVMv6ZzGeC/QS9rTncN2veV8fic9HnST0mfC0E3aodO+w7sv2If/KY19OkCc
l3y/fb+2j6G9Xef89rS8nAwCDG4P6U5SAD5SCLgZfARyMBlDHDIweR3CWvUcKVWfIKVI7wPsRx54
ThJyj8u+5M10L3TpHzjLSdyEtAL7Da87qQ1qO9P3P9FvJ7oVcMYz9UPgzJzTBuiMsGkD+gLcgN2A
q87TBs7KePfLAiQvP+sKx5PfQW/9rrMO+J/S4jLYz3HeQz2HOA7wKUmTd8NGCxsK4qsR6gh18Pc5
gDYbX7JVbjLrXIaycdw+Cz4/E2fiefhfRB4HT58mBXHUWNDuR4FPps1OB1maBr7vUL6FveSl5BNo
z+1zE5Qg9J5/wP7Yn2Qibz2Xz4DpqHsFt42xv/D/18W0IQfbwm7cPoV+75SxiqhnR7t2O3IfxGvF
nvDz9CQVKON+qkthf8kUHzL7WM/t7sJZ0ig+QSagv2Z9F7lLgx9KxXy0CbAr4QsxcQG5U+9DNqvc
hpwO+wrkFd5n6inAfaI93sH2x23xOXz+CMe1zxnpC3QHlPXBuLK5Pabje9vbqQOBmzEp3xDqcjv7
hbpRJ10G/fQCdAOcBnze+X1oD3tn8vVUSFYg5LrGrLbwFuC53SeRstM/QLrDTsd1s5RNFjJbskJG
A9DOxDHKUmNqG0v7O4GX1vZ457BdRwEeuY1qHOBGAPehxQHetjxu77oEdHAJ1quG28yk1bCbrSNj
YCt94Xwd6Mio5xD/y6TZdci/gwOnL8CVQj/4enZij75PvFx/E982fXg3wUbLAb685HbUvx32M24L
GwO72hjT7pgkY4Crz38G7C34NFKAr/AfI+tMMP1+yRf4mAD3iaNN+uQ+Gu7nSBPPwLaz06QZN/DA
fYIO8XYAfD7SfJzXsP4mXMN9b/BLtIUmzmA7xHxrRD5Hbpt7DHQL/AgPQL+C37G9rlpFxilrQa9P
knHyjXhvNcmSNwNOk6BcDh17HeY9GG1vJGvY30gpB3orbOgi4hgIB4HAFgfNHLyHcN8v9wkDX9yv
thBwF+bDfVv/4PXMuilfLvfnduHAdtEoyrmfsD3O/WCIm3mvIuRg9oFwewdAveRfAGfZSW45RP8M
4/prakyCEzTbCdB2WhvA50YyMPw54kTg6kIYiPQFgH54urgzIJ/n5XaGtvww8i8A5PP0gM6AfJ7X
eRz/rt6/G8e/y89D3xcA3sfT/67//+k4LuiTv6Ot3xjiFwDyefrfjW84yi4A1Ofp/+k4LsAx2oXR
nufldAbk87x/N46RKLsAUJ+nLxgH+NOTAPyPea2Q64mXIa+XINyN8CKE8wC/RRzn3uTMtjTqmPVm
I68NuNxPZrXBIIT8bA55jP+JiyS3AEb/DPxdSR9vgTpt70leifjfkX8xAO/ibROHAXi3CW3vTPw/
7Z19eBXVncfPzNzcuYkkueElRALMhZgEEgPhGhoVSu4NwarprlGCTaTVaMXqvtQ8JYjrC1IrXQGB
q3bdWp9KgELdouVm7koTXkoUbbV9hNTVFd2q2Qdr7ZauPuDTp9stufv5nTs3hBSw+/LH/jE3+c7v
zDnne86Zc37nzHmbmR2cS1rZmjP0Q5A9l7QT/xC1VuLTcZOOoT2cl4FvwenjfJ4X73exI+1DE5Fd
Gf9DOMk1poWHexZpqnn6GviEn158CpL2oSTnW5D0mYZ6geTlVkC8Jxknps8HNZyL+4PUUa9dUC8x
TvwS7WGe3KtDzA6IzKGt1W3ubWp89l7BfWWlbg/ZCyLtHW9GUIH5akqQeV7CyJN+g7Thejx5VK3T
48k39Lr6zdJfyLmA+8hrnP8rbWo3elhAu/kAawPEoddlaGu5R24lvmut19TVAt3XkDUh2WPB/SDv
06z3X0qaPmbuc7MqtQ+x5nI97WlmLHuefSvnX6LfIWtkrGGFnlQP2Udwt9Rl3K8WZu0lDn1vWZNO
51zI3hBPhn6r2u2fcu0PsL9lkiqT+Oy5agl5Vp+Nm3zQfS3a2ELspdxFdzZk8Idq5lM+myNpJr3I
ImSpXAfxrdd58jJjcta75P5JvhUxRs8PTqRe/UHNsHPpX+xWD+aa6nH7Bj12nxfYrOqG4zyqamT9
Kfgq62VfUxN0Xsva01vk619Thp7k/vBQdj6AtbRvBV4iLNbU9LqWNx9AmHpeYDgM2cfDmhe6MQm3
0/o12X6Uvg6Zq/HmCIbj8K5HrkvunSOuX+dDVoey+c664edkbUzW8SjbgtEymyZZx5O1NMK7nvxr
DS1Q19t3cW99hrWOF9izs5A54SvVwtAkFbG3890c+mf2Leim9PNkri6ianKeUNTx9ELK6WXkSiB1
5TMArdF17g3cns7UR6lfYi8/sTtJfZVf+i/APeC2jLu48X1N7ffkh0jC1274kd9Jaauoa7wokTka
DyeR/4E9dXfod2Iekc/Sn9P7M0ZJr1+vviHXj/9zy1H9z+HyGmVPWH9POZfofMqEm+lPZvuVp6Ss
K8/TuqL7cOlXqaNA+nLpQ9hL3Vw7WsKR/SnSl5V1/1978m1P/lTWdqWvN1oSzmn7V0afj9Cj0/rt
Wfvhepatb1yH9A8J50xS9qvp/vUnSdI9vE+GfNP7ZUZKwj9tjvCs57Jez7q7XrdH/vH+A10fxpAe
qRdIvadv5PgpO47Kykfop73D9Us/tgBcQb5voM3583OB9Om9bsET6ePBE7T5w5I28gTrmuzpOROC
U/E/lT0t308ft9HwrCR/Np4LwU3wNnF/cdLHQ9y9Tkk1nnMZByQySO9GX14A74BjIAX6LSN9nFc7
qsDD6eP01UdI7h0P6/HJyH11w+bgt4n328S3hHhpxe2XSTetgN7TIHsdzgL67MrmNhy6SV/jCbkX
nhOHiIfeQujrxPN1OL8nHto25AlBtiyyeZrNK67tl7q8ZI+BwEtPNq4s72zyk8qRMGUMdVacvVzS
Jyij/7PrPlP6s2lnruFn4G05p079HMi4BCl798i709MvevZQ8H10FtifywDuY/g97uEE+foL8C/g
kIfnkbJn6QPwjoUOCIjHA/GM1gXZEyPw7KUuCoLvp4/YV6bflnoge38EhFOVLbOR0l6W/hk6+Lb9
GPIQHNm3k+l7yfqzzN3IHtsbpS1ETst9hfuX7JP9sYpwnTWhJLrNul7gOXVL5r5xqt+H3kgbLPtg
ZU/RWOZ9Wq0h9bngTsa2Y5ST88/p9wXE94AH2fMrkD2QjAPTL4KDQMaAYv8PI2HNUlMF2F1K3MSS
pibp/nYZ5q9kIJ+iEvtT6SItuq8ToCfMWFdxbTdS/oWkc0ngcdL2OGNwQz0k/R+u4dFAIfty2JdE
n7JA77nxxv34r6NfeI2HaeRLa+AR+o1H1WKNX6HXsq8G6D05Uk5H1dXBC9hbM6j312T2/DKut94F
x+Eeo88p+2+8vTUBwpB+ovSLrKPkI22LtZXx7lbkNuSSDAJ878u6hzH6V+ijvoM5CaYyPp+OXAnu
xFyBvAssBU8Dsb+bPSzjCSsHs4CxdGB3RopZxtUC83AGVoQ4sDd/gr8HVJ15HPfLQR64woP42cee
VXFr1P6i5q+I47PstyiFK+aFuL0FQpnxu55XwL92y/qBm/WT8xt1Wd436VONA2vTe3LizHH+ivmJ
Vp6NUOl8QEkO0cLJowi6H0VtTV8FnuT8I9Nboxheg+j31sk9mfMS+0weUdFgsbo/53zVzFggHizk
vtzGXqlNev81rbOMiYbQ86FbZT8xev+A9XpmfV7mxrNz5sEBNSuX/jnuvJONttyT5k7qMmaDkKRO
oFvKkN4b9vLT+6epa9LnED2zO9QGewt9yS1qKfVN7/uGJ3NdReBCzJcQ9vScmaqRkLj7pJFDzyCl
PiymbRiee4V/m+xpE93CTfqC4v9p9hzdi6yXPQnWpxUthuZejrwCrAKSh1cS7pMj1qt2M8+8m/PT
9myMcNd7df6355+0fkWZnrY+lS3b0fPn6Mg592aMdv/ENZ5Re4mG59XPstdIz82P2Lsx+pz4z7hm
kl2fGO3OesXpazTenqezXv/R9HPoS6u0o/YUMadfBy8yT/mcAF1O4/YWujQNf18zP6LO/pz+xH8q
J9OG0x4eRe+eAr/T+ve3mfDon5frPYbynEOn3COwl2cJ1tOnvQX9rLX2MO9KPxKMEV1FyrMTrRqM
02hjM/O0C9TVuq2lTSUtMle7QcZpug2StoWnB6WdkXbI+IhvjXxEG0I7o+cluzinTdLAbN5BbdjI
eQvutEnSToGodQOcG7D7PWbC0m2mtG1SD2mvrBi4nvN/80A7Zb6HGVg/1GmImh/IWs3QIxnIPWdo
s9ybdNtJWDqN/048mGXsouvttXrf+o34kzmCc/Z7uV9K/zLbx5R+5mnnlMHw/f5MZvy/PBKj/Qyv
6bzLXnjZt/9j9vnSl9f3RJnD8PZGBy/S6w663aEsmR/w+vmZ+XaZc67T5bVWFdGmyPyBNx7wJOs5
UrbZMT359CPw2ghJaQwBfZ+WfPylbisN9QUJm/IvInzRu6Du18h4T8YO38usRWAv+7312A5zZqyx
nP2ZrYyj7mEugX3+hL0Y7CPsIQ/fQX5H0p3D/m743xSJ3SD+apGSvtdBPxgAR07HyR9547il2XER
8XBHHnoiWEp+vamCoaXs836HhzZFJyarJTIvLkD3Hxdg3zsC8myHtOPMyejfX3E8A0za8z/CC2gZ
1ziMH5LzYwBttSAHtxyuwaY2hA7xndMPlDrvOqXGbFQqH/cCzsOzzo2ip5QaF1ZqPP4FEyiiCeSh
oPjOUyjhviOY9JhSk7+h1BTydCrXIXBIw/RaQPlnUU44fwoqi5WaMVapmVxL1QKlLiQNNWB2BV1O
wUunMKeOZYYPlLroVaXqnj+FuTuUuviYUpeSN5d+rNT8y5VacLNSMfI03uvDzwNfB3wd8HXA1wFf
B3wd8HXA1wFfB3wd8HXA1wFfB3wd8HXA1wFfB3wd8HXA1wFfB3wd8HXA1wFfB3wd8HXA1wFfB3wd
8HXA1wFfB3wd8HXA1wFfB3wd8HXA1wFfB3wd8HXA1wFfB3wd8HXA1wFfB/4f6QBPvea3q+NqvtrE
i9VNnh6eLW/Pseebz6scZfa0ro7n83D0LoAjxwjoBpaKWU+n7PxorBc5dryWbnF1tI+3PzztXnqR
tq/5RnT1Pl66doO6COud7hKx3pmKNYn3namL5mXk7DlauqGMsz0+6sQnQZsNTL6KkTFdhdwENoMD
IEiCdqp3QRpY1lPWVvcyh4C3E1BhfLy1XRmkcrs6DNLAIvXbuZbt6kPPJkCqtqVyx0j02zSrlMfI
DaLcRuDb1GqwCxwGOTzCt43ItxHWNsLazEPnu4BpbbW2uGEnHM/jkfj7gGl9i1fmyudU+61vpsI6
bx5PFY6LxuJh6+9UCzB5Z+KfqX5gEuzD0B5WJt6b3Zo5OgubU3kF0TD+15Po9SRkPVF2czT0eQyT
+F+fGlcsif+aW1ikeXe7tXUZQypcEm0hF+5UhrXM+rIqU461CjkV+UXkFORN1s18BlvSGUsVhqOr
ia8B7w18o2gmznGeh44im6xJqlR7W+EWZOJZ4c6oinLFC60S7aXQyld1eA1Ztht1Int5elQy/8FU
7nmSvgfd8ITofmuNZavx+FqNr4lO4X6eY50N5EpaU7n50UR8jNXKZbaSLQ5pNMhlOcasL7sEFC+y
FvEYYTFuf8ljmBOQl/FYv8jvWlt4NbtjfTtVMdnp32s9qlmPSKBEvyCjWgtS+QXR/ngurzQ0KICN
FMBGHXkiVXFxVMUrrBk8ozuDyCPWfZjuwxS21mFaR6mto6TWUVLrSNQ6tE9Za3FZi5/ZvEegk/cH
JMBmzKJWE1wyVCrDBPeCGdE+63yrhIwJ7yUrDWwnpXILJGUl7thx2ltJakxBtGG/tZwngJcTZszq
Sk0sid6+16rSl3JhqqRUCJ0u6rrfmpgpGkIqliLZb00mIyRjplhT3QlOMu5wLorsKMP8iTkgmWT+
k/m6FLd5mHORP/XkK548lJHpfnMgUynMV0UOxiebvyCwG8y31WZMprnXPMiHHhzzLbNXSt980+xT
DcgjnPMJMrMPeRFyjzvtJafX7E0hSPsTbn6xXKx50K2e7Rmccs8wsdQzjC2OxsvN583n1GSCeAN5
AfI5s19NRx5AliD7zS6+i+KYz5pz1TzkP3ryBXOfqLj5A3O3uhiZcgskCUnXFrHLDYr4vqsyZy2z
nX3m982dahJen3ErJuH4VKriAqdwL+EZ5nY+6j7FGRvPM7cYbcbHeOpWR0SqseZWt14CSbj7Ik6f
mTATsZL6WHmsJrbDqi2vrandYUXKIzWR+siOSDxsbqQB2WxSf831HOtVxER7QAwkzLVuoD4ZP8k1
yXWZajXHbm3q4NipTYpjWJvE9SNtajDX8NT/GhgJcxW4D6wGX+U1CwnzLnA3uAfcq226MK0AK2lN
OmF0wuiE0akZnTA6YXTC6NQMibkTRqdmdMDogNEBo0MzOmB0wOiA0aEZkt4OGB2a0QKjBUYLjBbN
aIHRAqMFRotmtMBogdGiGTEYMRgxGDHNiMGIwYjBiGlGDEYMRkwzamHUwqiFUasZtTBqYdTCqNWM
Whi1MGo1IwIjAiMCI6IZERgRGBEYEc2IwIjAiGhGGEYYRhhGWDPCMMIwwjDCmhGGEYYR1oxBGIMw
BmEMasYgjEEYgzAGNWMQxiCMQXNljzUQfxHKAJQBKAOaMgBlAMoAlAFNGYAyAGXAu3TJCFGYfrj9
cPvh9mtuP9x+uP1w+zW3H5/9cPs1NwkjCSMJI6kZSRhJGEkYSc1IwkjCSGpGN4xuGN0wujWjG0Y3
jG4Y3ZrRDaMbRrdmJGAkYCRgJDQjASMBIwEjoRkJGAkYCc34bxeN+VWjLcS91lxtzNTyPnVMy1Xq
iJb3qh4t71E7tLxb3a/lXapey5WqQkuKWssu5YQM16kvjBfTBFwFbgC3g81gFzgAbG06jOldkDbn
xqYHCu2r7M32LvuAnbPLHrTNwuBVwc3BXcEDwZxdwcGgGYmXmvm6HaVpUZvgGXxaZq76EHAT4dig
TQ1mHfHW0c7O5a/OrIsV/SbyYZVxuMo4UGXsqjI2VRnxXPMzRkC3dBG+60QGGG2xMRULnCOgvqJy
AS3Txt3HJjpuxaecXmNfRsyMVXN6DPSAHeB+UA+ioAaUAwfUV1RBa4tN94Lch6wE00AE1KtinkZX
Y4tCsT4z39iRejFf5Uo8lTPg7XUraxG9buVViB+4lTc5fL95t6qUXpHxLJVqJ3KX67yH8zMZ8bTr
7OXsKdepQ3zBrZyFWOpWvuLE840lvMNNqK2eXEyBy/k1rnMt3q52nZmIareyQnxXEVE5rjONNvUe
ErNmX5CJqcx15uF7uutcIr5DqlIKnk+O1+jk5WCWcytFgj7sM9oCRuw85zfOo84x0vtrMhb1eDPS
G0AcLu81ro3lOftqnsRz3HHjeeKf+0OPJ5Min3V2lK91niAso3y387gzy9lY0xvCegPpXqujcJ37
I73mztg4Z7VT63TVvOcsd650bnSucb5Qjr3rfN7ZJ8lU7UabuXO300KAV3AV5a7zmXLSQhIvc/7G
iTmVziWRfZK/6mKJGk2u2Sc5wBtAdOwXkr9V5cTuOkvqe42iWJX9kZ2wl9qN9jy7zJ5uT7Wn2OND
Y0PhUEFoTCgvFAoFQ4GQGVKh8fIFY17OYPBGT96DwPeuAnIMaDMfLMbMgaMyDV5NeqVKjrOazebF
jUZzsv+LqvmmSPK3i8t6jbyrr0vmlDUaybHNqrm1MXlxdXOvnb4mWV/dnLRblrb1GMbGdmyT5oO9
hmpt6zV4nZCxcU1pcuxCHNWaDaV9vOHn/DUb2ttVSfEdDSUNYxcUXXJZ0xkOHdqyo0k+0O39SrKG
6uqS6inJx5oXtyW/N6U9GRVDekp7c/KriyOfb+szC838RU19ZoGI9ra+QKdZuOgasQ90NrXj7T3t
DW0uwBtfL0LgLdSoIuKN9qRRvFFGGX8V0PE3TQT+8vJVhfZXkZev/QUM8ddzJLKoqSfCAT+8Tf+I
9nOkXI3wg8bAbeqp4ICvsojRJr6MtrKITthMHZDj4KWGA14M+ns6IMfQkSVnn/JS7nmZO+xlro7L
yqRHByMHghk/I+tn/Az8nMrI/5lpWWO1kZqzYtXBRcvKFnWULVoGOpLr77i1JLn6pkikZ9UKcYgk
rYqOm754q8gblyVXlC1rSq4qa4r0zNG8Uc4HxXlOWVOPOriota3nYGxZkzsnNmdR2Y1N7amG+W3x
0+JaOxxX2/wzxDVfAmuTuBo0b1RccXFukLjiEldc4mqINei4Ft0met/S1hNSjfLpay1T5nl56HBH
6bT2xuJw5wJR6L5500pWle4JKL6kcF51e3JMWWMyH4hTTbwmLk7UM3EqwLrQcypZNW9a6R7jKc8p
jHVRWaN8tFz/lPCbk3Ovbk5OW3xdm6hKMkYWnKnMlstPO5eoRbc18c95l0bX8q5siCKV+PzjX9eZ
fitWrFjexWFFNe+zaU5W8WXwT/Fl8B7bJqqOpnbsZmXtLEvb9eTmLuJr5jhWkwijS6ITE98XJwdj
vPVI2WZ3sNs2ZRTRlZo0JXr7fvoN9wEGkeZKl6kEcVqZml7OaAkvs+dmJMNVOXcnTYvK99LroYos
z8hYUQ2GRHmiJlHfXd5d010fxHX3DiydHXIrdWfvsFRX9fJsZmDsaiez5ZvmxLfFnTxFR9wtBj4f
X71cf8Z8uDiyvGrvU+nV8LN2XKP+LdfBi7XOYY5iJNPFlfLIxL5CzuSXMWgu+axJ2OIrc6at5HDq
x5lS/wVMYI89CmVuZHN0cmVhbQplbmRvYmoKMjcgMCBvYmoKMjQ3MDYKZW5kb2JqCjE4IDAgb2Jq
Cjw8IC9UeXBlIC9Gb250IC9TdWJ0eXBlIC9UeXBlMCAvRW5jb2RpbmcgL0lkZW50aXR5LUggL0Rl
c2NlbmRhbnRGb250cyBbMjggMCBSXQovQmFzZUZvbnQgL1ZGQUdJSitmb250MDAwMDAwMDAxZjQ1
ZDU1OCAvVG9Vbmljb2RlIDI5IDAgUiA+PgplbmRvYmoKMjkgMCBvYmoKPDwgL0xlbmd0aCAzMCAw
IFIgL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngBXVLNaoQwGLz7FDluD4ubGNcWRChb
Ch76Q20fQJPPRahRonvw7ftl0u5CAw5kMjMZk6Sn+ql2wyrSdz+ZhlbRD856WqaLNyQ6Og8ukUrY
way/M3BmbOckZXOzLSuNtesnUZaJEOkHW5bVb2L3aKeO7gL35i35wZ3F7uvUgGku8/xNI7lVHJKq
EpZ6jntp59d2JJHCuq8trw/rtmfXTfG5zSS4ETtkrGQmS8vcGvKtO1NSHnhU5TOPKiFn/y3LIrq6
/ibPqmACqkOFhCMooMoi1YEyAdV9pPowkRKUASWRIqHKYpbSWAdqCZWKwUAd4zkyBD8E1HlUYUcF
1HFHRVABdQcV78KWDCW0jRRKZMA8lshyqIqAuYqqFhQwL0DpWBLtj7Gqxj+yhY3H+I85snKoCs7i
Q/47zXDe4W1c79JcvOdrxAPCDYebGxxd39g8zSEA3w9bRbHjCmVuZHN0cmVhbQplbmRvYmoKMzAg
MCBvYmoKMzQ0CmVuZG9iagoyOCAwIG9iago8PCAvVHlwZSAvRm9udCAvU3VidHlwZSAvQ0lERm9u
dFR5cGUyIC9CYXNlRm9udCAvVkZBR0lKK2ZvbnQwMDAwMDAwMDFmNDVkNTU4Ci9DSURTeXN0ZW1J
bmZvIDw8IC9SZWdpc3RyeSAoQWRvYmUpIC9PcmRlcmluZyAoSWRlbnRpdHkpIC9TdXBwbGVtZW50
IDAgPj4KL1cgMzEgMCBSIC9EVyAxMDAwIC9Gb250RGVzY3JpcHRvciAzMiAwIFIgPj4KZW5kb2Jq
CjMxIDAgb2JqClsgMyAzIDI3OCA2IDYgNTU2IDExIDEyIDMzMyAxNSBbIDI3OCAzMzMgMjc4IF0g
MTkgMjggNTU2IDM2IDM2IDcyMiAzOCAzOCA3MjIKNDAgWyA2NjcgNjExIF0gNDMgNDMgNzIyIDQ2
IDQ2IDcyMiA0OCBbIDgzMyA3MjIgXSA1MSA1MSA2NjcgNTMgWyA3MjIgNjY3IDYxMQpdIDU4IDU4
IDk0NCA2OCBbIDU1NiA2MTEgNTU2IDYxMSA1NTYgMzMzIDYxMSA2MTEgMjc4IF0gNzkgWyAyNzgg
ODg5IDYxMSA2MTEKXSA4NSBbIDM4OSA1NTYgMzMzIDYxMSA1NTYgNzc4IDU1NiA1NTYgXSBdCmVu
ZG9iagozMiAwIG9iago8PCAvVHlwZSAvRm9udERlc2NyaXB0b3IgL0ZvbnROYW1lIC9WRkFHSUor
Zm9udDAwMDAwMDAwMWY0NWQ1NTggL0ZsYWdzIDQgL0ZvbnRCQm94ClstNjI4IC0zNzYgMjAwMCAx
MDE4XSAvSXRhbGljQW5nbGUgMCAvQXNjZW50IDkwNSAvRGVzY2VudCAtMjEyIC9DYXBIZWlnaHQK
ODA1IC9TdGVtViAwIC9MZWFkaW5nIDMzIC9YSGVpZ2h0IDYwNCAvTWF4V2lkdGggMjAwMCAvRm9u
dEZpbGUyIDMzIDAgUiA+PgplbmRvYmoKMzMgMCBvYmoKPDwgL0xlbmd0aCAzNCAwIFIgL0xlbmd0
aDEgNTIzODggL0ZpbHRlciAvRmxhdGVEZWNvZGUgPj4Kc3RyZWFtCngB3L15YJXF1T8+M8/+3H1f
st2bm5UACckNEIjkYYssQtghaCQgu1UIymYroEVWF9wAFQWtAqLWQFgCaI1LXesr1g2tVqooblTa
oqKQe3+feW6CIW3fvu/v+/3980s4z+zzzJw5c86Zc+YJhBJCNLKCCMR5xaJrI2f7/eYD5GwhRJk8
c/6sq9QvDhUgfoYQ6b1Zv1g68/rnE62E2I4Q0r959oyp049d/u7VhNSsQZues5HhXubPRroF6ZzZ
V127ZMDBZwJIHyekfPov5l0xVZiiP0fITUOQnn3V1CXzfQPERYQcakT9yPwFM+b/bdhnfqTRv+uP
0iGSbsIOki7mkXRCkugnBYk5yeO8jIfsK0JoRgrQD//ZQx4n79ECGiFN9CcSIGdoiPYgQ4lIfsBM
nySt5G7iJePIRuomOcRPxpOhVESdInIzvS+5KPkluYjcQR5KHqA3Jneh/DbyIjmDEfxZpKQXGYn6
48kM8qXwGalN3ktUsppYSF8yhvrJVPIufr/DGO4kd5Hf0V8lz+CtXnIj+qsk/Un/5LPJc6QLuVnc
IB3V9pHbyWEqJ69IziGZJJusY0XJd5MfkzxSS35DHseYimiLOIREyZXkJrKZhoQXEbubPEwS1Mrq
hIHSM3jTUDKBXE0Wk3VkF3mVuuko6ah0KvnL5AkiEw8pwJjmkC9pOR3BHhGtyX7JD8il5CB5GfPl
vy3ipeIO6dJEVfL+5HPERw5QnT5Fn5VKpVtbb0g+mPwtsWI8PYCRkXjPNPJr8ix5hfyN/J0tTy4n
Q8hYvPn3NINGaB4w/i4LsWVsmfAW6Y7Z1mG0C8lW0ogVOUQOk6eBmz+RY+Qz6qVpdBidRm+nf2dW
Np29Idwn7BXeFqn4KPAdI7nA0bXkEbKf/IG8Tt6gEvovoaPoXDqPbqL302OskX3DfhBV8dfiWbFV
ykscS5xNjkx+R4IkTC4h15HlwO1vSBPZS/6LvEP+Tv5BvqdO2pvOpg/SRnqMfsM0ls1q2Hy2kT3C
nhBGCrcLz4rl4gDxSvF18QNplbRemaokzm1P3Jl4IvFm8kDyTdCOHf3nkWpg9AZQxSPkGfIWen+f
fEQ+4fSD/vvSyfRyvOUauobeRZ+gv6dv0q8wS2L+ZrO+bBDeOo8tAJ5uZHeyu/D2N/B7hH3APmJf
s+8EScgWegoNwoNCo9AsHBE+F51inthd7CHWiJPFJFamVLpYGivtlB6TnpNOyZXydHm+/IVyo7JS
/UNrl9Y/J0hidqIx0QTaVUFJ1wETD5CHQPd7sQavAqP/hREfI6exCmEapfkYdwWtpsPpCDqRXkZn
0BvpanoH3Uzvow/R32IGmANTgK0i1p+NZVPZDLaSrWa3sL34PcReYe+yo+wkRh4QYkKR0EMYKkwW
LhWuxhyuFZYJK4HZ24VdwhvCW8IJ4QvhJFYtIGaKC8XrxHvEHeJe8U3pEukq/D4kPSO1SG9K56Rz
MpPDcrpcLM+Vd8qfKLLSUxmlrFXeVv6hzqfptAtGHgHtn/9hIezBTLaLecXl9CSyM6hIHJh5EdZh
LHbFP0iVkMC62Hk5xuZjIdHDm8uGCP7DrqWHSTn9PVkuMwFcUTxG9tAP2THxeXYReYfW05C4Q7ha
epVFyWPgRhvYU+wwHUD2sko2gW0RCP2M7iSfgd6XkLvolfQa8hg9SfvQ62kvupy8zfzCWLqSVCYf
YiLV6FB6imAE5AZxOrn8/BT+ZYRWkA/Jl4kHRJv4K/CnZrIRK/o4+Zg+Sn6iUvIbcDcB3GgquMzN
oPebCOd6ddhny7EfQ+Agv5DfIHupDC7eS+4nXkdOkR/Jl9IhUNQAcNMTiTniA+KnyV7Jbthh2GVk
J/bdbHIxdsxnoJKnkeapy7DTdfCSUuzqUWQymU6uB9e7PdmY3JL8dXJpch55DW1/ol3pT3QbdkQz
WlSSl/F7G3mfrsc+vPhfTu8/ZiamkxbyFQ3SXFqK/XBSWiRtkHZJe6XfSa/LPYDtleQ+UPQnoGYd
M7iCvEm+Ij9QFWsTIl1JHOPtjbFPIr9gtcLTZCANk/nYswXg4wPaZnINerkR2NuC/fw09sYp8InL
yO/IUcpoADO6Au9X0c9w4HkKuYZsxwr+mjYhZzq4dhfyNeZtp73ZtXifgZ42gmu1YEwfks+B7aQ5
rq7gC4PoBPT1A5lIpuMNPckouhsrsJ9UgLMOEv4AfOdQJxlAs+nDaFePHWonGaRC+pQy0jUxMtmb
zRGehoxJIn8bpFcauYg2YBQOzKOV+GgNKU+MwRjeooLYSP9ojuIeNiO5Wlic+AV5jTyKNTHERcog
Qoz+44yqfhdV9u1T0btXebystEdJcfduXYu6FBbk5+XmxLKjkazMjPS0cCgY8Pu8HrfL6bDbrBZd
UxVZEgVGSdfBser6SGNefaOYFxsypBtPx6YiY2qHjPrGCLKqL6zTGOHtpqLogpoGas7sVNNI1TTO
16TOSCWp7NY1MjgWaXx9UCzSTCePnoT4LYNitZHGk2Z8hBnfYMZtiEejaBAZHJw9KNJI6yODG6sX
zV43uH5Qt650t0UfGBs4Q+/WlezWLYhaEGsMxObvpoF+1IywwOA+uxlRbZhiYzg2aHBjKIam6EbI
HTx1euOo0ZMGD0qLRmu7dW2kA6+ITWsksQGNjiKzChlovqZRHtiomK+JzGnEbMj6yO6uLetubnaS
afVF1umx6VMvm9QoTEUfgxtdRXjvoMbAdceDPyfRuXvgpNUdS9OEdYODcyK88rp1qyONLaMndWib
FuU91NaiD7RludX166rx6puxUsPHRvA2dlPtpEZ6E14Z4TPhs0rNb0ZsMM+pnxtp1GIDYrPXza3H
0oTXNZIxS6N7wmHjYPIYCQ+OrBs3KRZtrEqL1U4dlL7bS9aNWdoUMiKhC0u6dd3tdKUQu9vuaItY
bR0jM4D0VJkZM6vz2PAx5zFL+YhiQxsNUNQVEYxkUgxz6s0fM3qTdVf0xgLgp5aiVeN0rMicRm1g
/TpnH56PKdJGKdcZi6z7joACYie/uTBnaluOnOv8jvBCTifnSa2RTm2PNxYVNXbpwklEGYg1xRj7
menybl0XNbOesfnOCAKgj4wCbqfW9ikG+qNRvsDrmw0yDYnGFaMnpdIRMi1tDzGKi2obWT0vwQKm
SnzjecmK9pLzzetjoOS9hCvtvkY17/w/h9PvGTy7TyP1/zfFM1Llw8fGho+ePCkyeF19G9UOH3dB
KlXOEQq8oawt1ugZOElIY8jjMZYmmKUgyssmn6+CxCRro5iLfzIfNHaHAKI0M2ikutFZPyT1rNWj
0bYt889tmhW1Q6Pm5Cneygx+btY2i8Y+RW3jTI26se8F6QtGZ10nDB8HjsOGj5u8bp1+QVk1eNm6
ddWxSPW6+nVTm5MrpsUizti6g2wH27Fu/mBwodSCNicPrU9rrL65FlOZTfuAbBkZsDtG14zebdA1
YydPOujESWbNuEl7GGUD6wfU7s5B2aSDEbBcM5edz+V1IjxFhlMQ+h6mmkVpBw1CVph1RTPDTF/R
TImZl6qEPEquaGapPKdZr7a2thvUGE4bEn6hFShkwF5GE7LSzKoMD5HEhEB0RUxQElJlKcGEp2ge
0aAMB0mwyPl9ZWvlSOfpyhGtlaQKcec5PHqURF1RVy4eFArGuYjQcs6QyFkSEVvwLuJOnhAvld6C
JMqiU43Vqqi4h+hD7JP0SXY5aA1Qr8/mp163zc88mdYA84S0MPVmaGHmIWoa9QpqGvNkWQOS02Xz
S067zS87LNaA7EjXwpJTVNMkp66FZYeipskOLRwemqZ609JUm98/NGD1BgJWh91usei6oshD0Ycr
Kys9XRSlZrbFmMK8Pl8wSOhQ5nG7MzMzMgTGVH8gEA6n6TarVVOJ1+NxOh39bNYdga/9O2xGMBy3
GTl58Sobvc221cZsI6OyJDHaL03bEf5a3VGSZqTVpwlpIyMP/Yrjq+5463Hgq9JZifiCoqLTZhIp
jj88q3hJpbui2KzCE61tse/NEl6KLDPAc7XUveh65wuruwd54Oj006OE1nli5WWAqKdMKOPgiwGi
QswTE2IUWfeu2Vt5imbUHKv5aMQXo9YdqPxH4ljNxyP+XPMJ3dz3z33oVR/S/I/oqsR1HD5KvP9h
KiasTbxP80FQVyZGs9lYTSepNuwFjh0CUzVKNCdxq0/TbJgJKJ6E3WXo2j+s90XEEpGJzWxjk+uR
K018nGw9fdJ5klRV8SnxAdNYHit3enr2KmPM53UH/GzGs/dsu2LCypa1sy4qjyVGn6B//xIHEHbs
6cSbiYl/fTix876ZBCMZiJEY5kiGGsF8lq/PYrP0TdiMO+2KpjoJ/rmdfEwwXqTGtFf9h3SflY/G
PXcgH83J1uMXDsbTTyiPM6HM7/Z5FSYMHjuoT/rMtc9s2jFg+OOJ0Xt+d+bjhX+lj9Li9xKZZ978
NnE6cZaPZGHiIH2E8rNF1T5Ntci60kwzjTR5C+0NwltA85QcB8kiEVKC/RGyzloULMImqhtxvBWI
GHHydCt1VRBXRUWPEk/U55VlJb9nz16xm2moy8LJvcYPYWto6JXrbpkfuTZ92nj+vv50NZvDtmH3
lhrREmpABe2FvewUIkKJIAqDJKf5LoGExEd+wd91vG6E8/M6UnyyDq/AXu3PCnB4CyVO8N7uxONx
jF4gOYaP9SY6y+swWvH8aFv5WHuUlKH9ndwowFszMgG72y61QNuMkDuN4Uv0NfoOukvZpe2wH9Be
1tQJrlp/bXhC1izXbP/s8KwstYJVyD21nrahbKg8WKu27dBeY6/IL2gv2N5nf5Lf1t62uZzBSJAF
m5MtRq7bHw9uV21ZjmIHcxhIObYTKeNoDWwA4WzvUUso+tZzJjZHnBzp/L5hBBB6sqiBA6ctUldH
SwN+l1ORY9nE5ezVM5AtK7LL6feXlfbs1dPlzMtjpe8suW3D4nfeTfyEZ9kof0a8piwVSC2b9yam
JOr3b8RhbDt9YP/GL/uPuyqBn2ehG/8CaGfP9gcGHwLy84ADjUwwtCvZL9l6JoDqaWHTFImC01x+
QNUkSqwa7DiTgDPK6gybRMQsMSI2iqIY0g/RHTgRpciicgTnsmAPVZWn606CKEhdNOqSlfKeOb3K
hLzEiXvfvJqykuNibMPgZM4rq/galuEsasUIMmiVMWVfcH/4YNqr4kvBI8EjoSNhdWDawPSBGRNC
94l3B3eJ29NVORwhBXKv8BBxYHBgaGBYzQnmhHLCgj9PnCCuCW5J25K+JWNX+q4M1U0ynBmRjB4Z
izJWZmzIeDdDzeDr4vf64hnMaXVkcFJjnLINEBCKmrBGpJk92MSo1dFMJxixLGuxlVn52lm3eyTt
qN+PQwgl4SzHUediFspsX8DT5gpWVo7g7KG1qOE4BExRXUOly11BXWVFdVAbDpKMZMseVwUfwx6H
GRh2Z4WoOisk1YXQVVFk/tTultnAcZMMi5YWSmNpHspP8egI/+pqOWUMHz3paZIGFTUdkJE81rt3
71raUAd6cUV7unuBNsrjeTEQS27PnLJSnG5ANqKsiNZz+c5t3/yuqM+M2kmz1cQXIaq++P6Zi0eU
Jb6/2E+lxNm7qPan3VUTx18+Y+4v07949avfXtE0rf/pUXl8lUZgr6RhlQrJ+0bpat8rPvbL9PXp
bLvwqLTDu184JO33fhD8KKT6vfQW/y0BFtVtRKQBjz+aZXNa9WaaY1hrbNSw3QbBY6P+ZsoMR5an
2MM8HL2e7WkSBcr3OUFXoD+sUymyxe35tkZrC9bA6nceXZ51W9bWrCeznsmSso4pR2tyaE64yH80
sJgeJaEu7WtxMrUY4E11J10VxXVtC8JXhScbTlKOTDAtE6Ucq0Aq0EfqPLnm3jKxp/Tyn0djP1aG
nQiu6seDxLJzRlCnbcHoiYsXjOk5PGvBkklDh8y0JFrTrnp+6RvXz3pr2abE5398KfETvSk6++qV
8+f+yveZMGfisEnT67vetPXSlb9Y8+w1aU/d9Gzi1GfYT0CuOAh41YmNfGxUWCO2Cs0ashZZx1qv
tH5ilU/aqCz6xVyxwDbEdqlth+2A7UWbRplKrLJNkXSLTSFWq83WTH9rhAXRK4CJMqtoE2xM1Ili
2FpsR5A4TAtgKmN0734iimhAmumkvdJtOsXKMMPtVLYqzyiCEnZUseWMsZD9EL2EDjF39fEGiP8R
p+vMjV0FhaC1rpKj0F1h4tBdwQW7mBLp7aTbzXqRdYT1detHVomkiBboLYKWVU7LXJDrLuqibFnr
Tvarb/bvT5xKPEnzvxd+c+7yHxLvs0z6XcICirsUFFcubQdfcBqFqj1i7eUe7B4ausf2gH2T+wO7
5nZ53FFXzH2TG+yI2nRgwe1yNbNtht9u89rtNrfu5TZVgwqj6AYwvAvI64BJXWk2iNTJhi1LL9aZ
zglR3+7lxGfx+uMRb4nX8AreZvqY4YXy5Sx2smJnlbPGKTh5VSd/l8fhsIsOJ8jxSIAaARoIZ9mb
adRw2xbTp44QasA6/CTYC3jFQXpxG5sErz99HDy/jkc4u3Sa3AIZRSbz4I+6BuCYo9YO1JpC1qRX
k1YvINR8D/Cq9CwrJaBQyIqcS2nQumjEpOuWTl1af3wDO9H6166XTztMxTm3JV5LEro0Y8q82zas
Xn1llJ1N/PhjceLU+/tufe4D0OJEYLwLaDEA+/TTRt+5loXqanVTaIe0Q33Uvstz0L7f9bSnxfWG
x+aTeroGOa/z72N/dB7xKofJG2guUiXodqZFwLQ4CjOBorTtDltWtDjKgBB/PLq9SqOGdkRLaoLW
TGuanqQUqxI1srPEYux6Xkfc7pOwnRdnHq2xUms4N3jUHco5v7VTcvJ0ismergMC2yQmJ0i+o/le
BqlRKc/kgMAKtCFsWQhQAl5IvVx4ptij6Eic0scNrP2lc86WxrOJM2/8OfEJ7fLXHX9qfXDZ6JGz
548bPV8cmzlu1LbWXyVOv/2XxClaS9fSO+n0w+e+XHv3detvu2k5qHQi9m8QVGohqw4SMXnM6OFw
xXVL2NJH7K0PkSZYdll+Z3nd8r5Fj1qoRVBIlqXYwootVZYai2DhM7Yc4uoQffwAY1RUVKuKrdlU
rFCcauoNO6sRqBC24UhjbcMCtPGGSuxH6DRcBT9pkg6fvzn3IuhIPpmxQNTt7jVReHbx9zfQxN+U
ky+KD1LpDwsTwxKe52gJW/IjaHJs8nMxgPUOwkdUQm37StSMrHhec/KM8QtEXnK95HlPek8RFzoX
eVc6hTzSxdqT9LVWk0usV4tXqNCKfIvzV+dvsm0OPmx7NPhoeHvmjvztXR8tORg+kBlY7FnlWeVd
nS9uwjpuAqbSu29GrEjj8VyhO596Vfea7qz7IXYrRFmL4fQH4/PTV6Szbek0PV12F3Aq0lCtpMAo
YAXN7FbD5rZVZddks2zeOpvnhGUp66i2uOhojYM6wqWho8Li3KP+UI/zJHNeGpjqVV1Va12R05QD
RSfriky0cdSZtNMmCUhDXVERzcsrj4N8TPHJ+b4Yy87nWZ4OJCR0iNMhV13x2Vtvnphbf93yROt7
L990/6KDU2pG1U8ZObo+vLh24oJra2fNEALdH6x/+N13H565tUuPp375WmLOr44ufomOHnf5lHE1
U+pbL7r2xusXzbr+Vq6d9sfqeNt24xFjUl/XcNcMy3XqWvVR6VF1u327Zx85KOyzN7v2en5PXnW1
eFxxzwRLrW2Ka4yn3iOHpMX+ewIfOT/2SrM9ONzyzZmVVozNyXGHjSk5oxFsTI5kJ3Ki20s0WqN9
rJ1q25zbUpuzg0ROQzXsT1vwaI2busO5qX1q7bA/25Ftytx/tT9N9gUEt3GwXuBXrDyOrck3aCw7
j5qai8/Eax116uMGT7zONXfrE2ep9vrHNDPx7rePv80uv37MyFnYn/Po2Myxo7ad+yW1vPsxdSV2
JBYmrk5sOSCkr9n4y5tvvWkFsMitBc/Ak6oQnfY/SJTkUUPrVRGXC/BQTAIrKI/LBh5IHTVGRfNR
hkch6QJeWKAXW3uTXlKVdS6Zy2YIM6XZ6iz9C8ExTIYI1qiga5qoaJRGiOKFB0LWRDEiyV5JklXd
CGf00/krLOGMuJ7LBEEWwfaeMuyywiQRrlbVivM6NM6phiULfUBYraACbWY5hpal0RJthca0QyyH
iKihRaCPhyyXX9F2AGsNgfudrmsIto4cPGPQ5+1H8hEnQc7F0D6LzAP36uvNAzcCxVlZufqFF1IS
eq8W12xxUsT1yeGNlrHDGzNhMjtIhGRijyrqh5IJYOrcblmEbpnSLlO6aTQq4JdGPYIgPZP43YrW
/UsTL7K+tKLLqy/SEYkm6dC5dSzSegyHCngJiDQNmPeQCGz2R42qxV3obPuSLp+L34uiFvVpckHX
aK7fneWr8bES35M+5vN5Y9m5bo8a8eZSwtLy58sr4CYbXpD/JDgHMNmkWeIQ2Dfj5Njd6D6qe333
+d1XdN/QfVt3NdK9BKzEmx0hEU8JlMpmtr6pW4+x7ceSVqjmdQ3fF3GBWwdOAGWGg8kITOXcl1yx
J6PCh5fsCfNgxW4P18drUaldtpzHlQO42q1HoHVzpTFamonDv2wqhzj/ylIUKn9pr55czOTnxQRX
tC2RF9vIhv32sdWT501ZtaHuwUXDEp8lbLTguSe6XDJx+LCub+6i7m1FA8YaS1+VDmVcds+UWY8X
5T+1fPrTDTaViS8mnpC0iRcPGq9JrQcTSzRr3cgBl3XhmvnU5AnpctgSwuRdY+Qqba13rX8r2Sy/
pL0tvG35TtBytQJrga3QW+hfKC3UVkmq4lECAU8gUMi6CLmSUiDdI23SXhF+b5GqaA30pDFOQo/B
QcPMM5EriDMRUK+DXuCLMALBbqJqN+zuuH34FAflbNfwBeM4LxUY2e5uuuD41j6BfEvMrsIlYOW+
/G0KdShZSgk0TKxeU9qytnXBaox0QopjUbhIP40j0/EiHvIIxBkEOT/WSLIYi3AGEY0E/IGUaMc5
GJJcrKJZAxKvf5P4MLGGXkfj1LZzemniT+FHFv3mtZe3LdrF0i499SW9DR7rq+ndWy9vrF6w8qvE
T4mvvgFxUtwzIOIpUKiFbDAuUiUI31zZnSXREulJiUmSJoi5OCbrWq6FwCs0XGBDdAIhHo7YSmwG
lGpRi2Djl3BEgdqsHanNnBakdKWp3nUmNglUllEhgcpAbDz4mdgECfvUtFT4oNaZcLdYde5Ldqw1
IpRJh84kDv+QaPgBo9+E0a/E6DWywKjC6GUpV4moJeoz6seqWKxuUJmqktQUNIy/Sq7BXhoj4BDA
whFLiYVZLhy//q/GX5c6zLdyMx/Os62V/zS+TcLJ1r5seusWPrZHzrTezjHL934XE7O/MXI1UdIF
pum5ovtJKDMCMa2OTFFV4FVSI/IbprKz3sg2bKNs9TZhvm2FjXEkb8PpRbQxSwrNLWAqKUQvvHBb
L/i+rs2qC7ucaZrkozW3tWBiWkhtax50wnQ7smEYSv1upAVsEC1IHG19SjrU+gzr/1M1u6GVa3r3
YE7P8znR242wKlO3W9clgQkiNr0Gv6EuaaqmQ3s7YBQpshc2W4ELAx3CQNc1MH9d0ARY2GQFvB+L
QCwWVVFhYJy+RxqiIjDcikla7PyM2wmrjefzSYY4ZQVTGyZlhMWcQ5gvuFSgggBwZgia5zEzonKT
q+qsVF8Q+LMyxf/3aRGLLQ58vLpHzYcc4IKADJxkhPLkfG2DuFneBuNOi6islHeKX4jfS5BbyWNN
vcbEEbYYOYjkyhfp1wqrhHuEe7R79V3CIeEVQX8WlznO6cJF+gCBLYAWRYsa6mrNdZCTXzS5LVVy
c/ILHJksVWKJzY+H1VslRizuKozkSJMjlArtgVSIGmY+KplhW709dk8VRsx/qPkEG+aGPdhZ8U9x
3YMVnEBvbT3KqhM3JK7CBm9dyNa3/v7cDazxu8RgrCRIFOrRIWJlQcNiEfLUPAtOzRQvWWFo6X3i
eqRPXz7TY01tofFwenfk4iFjnT/VvtEhwXTdw9JFp5alx1hXMaIVw4g7W5yhzdUXsyXiw9oufZ92
SP9e+0n3bxU3aFv1F7VX9PfYUfFd7X39BPtC/Ez7Srct1pbov2Y3i7/WbtY3MGWSZQabK87SZuuL
2FJRGcSGi4O04fpEdaI2SVeCerE9zvqIca2vXmVX+EFf1jTdx8JiQFPaDt9ZTIRaIlkVpVS2W0sh
ip0wdI9SbXELf5iztGP1VcOeH7fwB7K2GE4esagCVxWZosNagJ1UBQtWoM0uVUeLTzrfhnoRqMD5
rq/RDW+JiKqmlabMDgz24lKBwQLB0I1gFRmzgvA1Rc2yU5yJbU3cs34IVlqwv6ZL6+JgfC1GYOy4
uFSqGMpylapPL8cqPG2JWKysmfU23JQQAxWJgUqkNIsrAejG1gP733kaR78iZ+VfnZXhkLO1obWh
MhzEMboIGc7jDRg8N9JXVaY2RNHPelCbzuMZC3VHTR7bbYlwBQdiBj8N8HIUFRFQLQgK1JSiKtft
9DDuOCj0qcTJxEeJTxN/hpoTFL74qVq88ewyDqCpzeAOMc6N6X8Zdk2Q1ZAQUEW3Cq2vOUk47SM0
p81DowtmJJQqKtiEKqiMKYIGfAFXgshnLPIZi6XyG6YNdr0RMiyjLPUWYb5lhYVts7RYWIqDq3w/
clya+9I+dmxcKzVFUjuv1DmuuMEevAMqIZQgTNJkl0gBSVWmdgO+UVGxujufPBCVoiOuDB4zNFCF
GknRSMsB6IyqYSqOqAmWMdBUGVfst5SrKyzl5sQuCnePq2PxkAS/UCoYglgt3ARhtE3dox4X5BeE
N9QPVBj7i9W40FetUe8QtqrbhCfVRuEZ1ZJSyMvgxjDwQOqYYSsujbMIfyjecuRsMrRo9zgbh4dZ
uzozghQeKlOUIBMCSleWr/RlZcpIZiiXsQmK5mVpygg2WLlXeUx5jb3PvmAnlB+ZJZ8VKMOUJcoa
5XEmU6DFXHyOgyLY3lOkUEtMSuCygbo20wibRD2J91p3gwC6CW/9VC08dQ6XTRhuSZ6QTkAHc8BT
+JAxfpO0Sd1s3WwXVarYVYcSzA8u0Ra7lcWuJb5V4lp1rXWV/Sb3Wu8a35rAmuCqsFVxgxLCPnfY
Gw76woqnm00LdVMEf/6TOiW6U4/ogs713khJhpFRnzE/Y0XGtgw5knEqg2U487cRyr0eJaZ8vLkp
fdnzqTWHemVqvdzMBN9CFTwgIPQG6KxxqKe9epa1KVUELszzZpHagaVPzFrbhMs8NyWWJZ5OHEws
oz0+3737048OHDjG3j62ef6eoj44Zt2buD8xD6rV7B8TyWTy3Bl4k5ipUZ3BLuB4WGzkytJB78Gg
cLFEZ0nvSsztyrXZ7STNydUqB1ExPS75QcHQ67lmaPizMkra5idlOB0d1av0jurJCGdKlzcp2FRO
oJpwfbHBlAVQE/m5Hcp4LBaC8bZdF7+b/onaxyzbNW3TyLmvPPvQk4sGXj6kfJt0yB/96MnVzXNc
vtb3xOcS9d2n9R8126ZjPlyPgR6AW6NRcsa4scIx1DFRmWuZa+U+om2x/fajmi6rsh5Q/XpPe7W9
Gq5cp+by2r0Or7OnvafjYsdC+1LnW7plibYktChjjbYmtCpD1vxeDb7dsfaF9pX2u+y/sUv2iM3q
tdmsDqvPFvDnepxeWu/d5mVeL4lEObqAOB9RwUafMvKJzQkj+ttp+dvkRrlFPgLr/ur5MRqJlcRY
LOrriLXsHh10B34Cqms7/5jM8We1jp9xOAeo62BtNPVvGMbBC0tNfOKIE/BEhe4sFnPhiNOOVRxr
5n39zornnq2/fm5T4oF3F4y7fGbln96ZW1kzJGfvCelQzas3PvJeeu9Vj8G+VvVYbbR1izAyZ9KA
YZfCOAzOOQx2jr9j73SlR4yLDrqaM/YXvNhVxCHFh0OKL1g0Q5pRcK28xHZtwfvWd2PWWn28fXx2
bWy2daZ7VnROwayuizNWZWyMWt0xLrEzs+I8NGaEwvHR2aNjz2Y/GxMbshtiN2TfEPtL9l9icpHe
xZaTnROrsMVjw/XhtkHZA2NzbTNiS23XZa+1rcveru+w7cz2QKWzydlyLKSHbP5sJTum2+DPmBA0
QpH4vCCdF9wKP98hNgOemBbDGq7ISqNp3bwCGUI5fx8ajsS56XkUrtlsoNtwB6EFV/b+KhrhCif8
f926aMFvk7AWG55APDBcyc8Ld8/K3+ZsdDLncPqtK3WqCHX7Y9tBafjYSbuJ0bvWPL3CCIqwaAE/
MjUUna4rOp4KFxQdh7RLsS5T6coGPtIy+gEfR9rCT/d4KrKBHgTIfWWPm6eOGA53hS3irtBNcPC8
Lwy7FXm2Cj3IwTwLm6zRfLS7qHx99D628uxy4HGobWB2dWy7/mi2blr8za34s506H0dh03wGpgOb
I7fOKrLPG/CLJmXx890wGglvXX3b7RddEj/41/rVy799FNd3A0riqOf6628YWty1N218Y+HNSfJM
4qvEu/Sj9NvXLB0dH5rm7t53wtLfzn9+5t9ftTVcUZ5dEc8tnnnV0+uXfXglhf6Ae3w4Jx3EHlZw
TooVayViiTRKmw/bygZNkanEcuEwUYiqwRQjLufylnYzdFmBNQZXrKGBI+kS7KNwj3oF28BEFlJb
H0/xVzjidjOsCrfGgv/gAUvM8TaexE9xtA6Co5yf4ujHiRHiLYmR4nNnzpzth1EpsBatx6isNGm4
i4QiOWIps4hEphYj3CcOPXlFE0KhQ7gnVA4pf8LQuDUphAcsIqkU4SloU8eMWniAxQgeCtRC2Rom
Pq2Q5GrKl/oJ6w/aj/oPVukl6RX9JesH5G1ooe9avyKfadpj4m+kx/RHrIfFJumwvs/6sqh1F7Ol
Yj1ivU+8U7pPv9uqppSCvSq12zC4liZ7lA8O9llEoERG+ZC3NKX0yy2Gj2ub03nKIuPqsAKVEmdQ
EzMdNEqT6aTtfc4iSpHmZEmTDIWyOVlqXCYQa4TgPkuEEi8WUceBsdSie3EVRpMVHHI1r6pqosVq
bVM98RLBioOtaBXgEcMNCllVFIkfs8A5TSUUrBPrWwwds5mWGHpEftrytFHMdX4krRFuemM0ZGu3
roVDI1rrwsHW1nCotS7YbmBLaZT8yX/N0YNr4vKD6QrjJ68R3TtomvymSwe909SYTEWzIbWTzENM
Qx03p+Hg4kFIKZ2ReIgWf0St4Bv0L7RLYkviRRg3PoLC4RK+PYc7GNA6h5xtBmEOTX6BO/P94Ksp
pQ3GbCWspksZ/vCwtCHpQ3P/5PzYpfUMVYcm5s0MzcpblXdH6M7wdrjWXwq/nGaVZZvPL4f8+XKh
rza0mK1i2+V98ouy9Zn4+06WkVPaw9XVlmMUdY/nGNkFeIQy4vNyzuWwnGrThV5id8QvyqDcv96Y
8WOGmJHRlZYRA7lcD2FkfNRId1VFjTQnHrh2FG1m1+4TFatN78ppB2VmiGIzRI2uqGEYXktmjzy1
UCuw1WZZt1oZNP4klH7DDv97uCZO4/XYObeWAE1lhdEpAfpxgNYEpgTmBYRAqGxO/zatZwG4Y8PJ
On5Qhh2Jp47zOwk4LhRB4YUabPJM06BRlCLrPcUZtKH2ZLvim5NsOZCWER+XMz2H1RXV1qEFxKNg
h7GAb+oGWP0aKO65wDvg98EHEIhy7ibDls0dBFCscOOYu58o10BMW7bplKczkkV/fOOp5uFCWm7i
K4tTEYY8XPfw0xPuu+P3l4yaN3wcvbznVzm9Jg26ZHCZ08I+6X7vXbVrDySab77pkvReIbW6es+a
ybcMT8+NpI8e3DfxR3dpML+y74TSvF45M4Dy1aCGu0zNK53cfxAX184YPSwVvdIuTmPuCfIEfYJ/
QrA2/QdFLhf72vp6ytMGi8Ntwz2D0+5S7tF0qx3kT8JYhD2S4uVr4bFYHEQPRNXw/Eya6SxkQh5M
fIWGlc4n3K4eyqhK4Ru+qJOtlZ+PhEbGtcxKrmdWcV2sAcY7mBQsM+WZ+kz/zOCcdKkO+nQRP6sD
dbhxzQ3++T4PpMB57RM3e27c81wi0Xrw0t2GOz50ad2vV86asQpn+FN3JU4kfoSv+INLa7ewLo/U
zN/62P4H7+ccfjzmXoWdECJ/MUZPctS6a/2zHXPcc/zXB5eGNrFN1hedLwbfc74b/FL+Uv3S86Xv
jOzp7entG+Ye5q8O1lrnWJU+7l7+XkFhsbTYsVpa5Vgb2une4T/o3u/X7Jxig2lxHu5ze+P2MhvP
CWXGzRDePtshfImhA2dul4UYqEoM1CNlG0Cnh8C+RBRFAgrluTRKim08YovW4FQcTlOi3lB4UgqV
5j0gGEOLTp8s4ubQuuOgWG4NRZhSboHTlPkz5SHpJXGia/Ntij0SX9uvqJlz/fIrR830UW/R6de/
THxN/Sef+4x9Uzp23O27nt5y6bzi3z2H7ybgDaK5O7jGPg64m9pGNxuMbu5auVavdaeoZTNI44ym
zc9ckcn6CHFrH188NEwYZB3mGxS6R9M4neyRLJxqDLtFsTuwFHqg0G7Lg1O30HA4SPg2TjtRNZQx
qdLcnHyGDd+nKMaUBqlTCey8DZxWbHPkOfocd4pa5Drcay9vmyDOJwGcwTqSijg1cbb/7skHEmcT
z+25kYZa3cWDrpu6ZuWs6au3XFqLj34gq2joLuY8N3/XJVc/8vCBB7divv0x33zQipek098cJE7s
k2pLBWxYto3OndIO/bB22NYcVlUvHcIulqv1msydtv3y/vBL+svWd/Wj1jPKDzZbuiPdZ4BD+Ay7
K+7wPeN7wydw10GTI7PKDGHC8jWzWwwo+e5R9no7swfdXC/cH0qL0zK3aVDPiKQM69mFqbCoWyoM
ppuh4QA73QaU4roiI1PcbqC5SbS4gxzdORaFRGmxL0VExZlTMudlbs0UMx1R1bA54kB4GzcsusDC
fhJqoeENGgXeqqCR6cADLDjIeTWXSLVVraba6MZEUMPNJ4RKZoh6PNzTXhWOJ96kyGxAUAD3Oy+H
CbI52dik6f3MZP9oFcwp6Po456DcJGt47QawZOcvtfPXw5UQSNnzak23FU7hEK1lXHnCSbUIxn85
FoHqyP33RIiaN3Q8Kf0xwH6iwZ5fPpn4+qY51PvWSeqWWw3hxqkDJucLSyZcVllJ6Zjiex/cd/tH
oIWixEuJp69fP4T+4rrlAwdew/lGEBvgc5w8/KTZgC+BdhEjzoirVlwRlFTxmSDz+V3M6/a77B4H
cdrhRHUyr6Y6LHSKJQnzOV8IXaYuh58m/bjRhGQmbkfj0ydKZI9X18qqYOAYBftOgbPYNcXFXM1U
NGx2Tx7zTiHb/C1+5uc0oVnj/lBgyUE2J3U9pAgsld9NPlcHlTJ0nATBVLntHQDvdUNFKb862yaH
PLCTcEEUULjA8fn43Rpcigluqbhn4ZJr8gb2u6j8j39MnNgi5o1atXJszgvOitHDPzp3QBhq7v3E
aLHe1CCK6Uhj2uKM1RnMbbXN77HKtqKHGKE4TQoltIyVCQYdyAYKlzpqvbW5EwonFNUWX+k44zrj
cfe1lfn7FpR1xTHKP7xgUNdT1taAfitktsVqs3Sx2vLt/oCvm80KRT+Yw3fAPnMHmBvA7jKJpMli
TYUFXVIbIJabCnvEUxtB86WZgn8KriNeuyfLkc8Du96NI9ziU4IhuUuhJS8c5ExHC4XC4dt60B5g
Qc2GTspyou5QyXnuw/3TnP84TzpbTUWdC6vW022Wn3b5D3puwsY2KRiLY5IvNc3r/JTMAaf8dhHX
YPItxxzvnNxZhTOL5hSDb5G6gOTnUs2U++Xg0W0EHCiPwjjAYhEoCh0vEiyl/dWMgglX98r12Ja1
vHv9NEqf+f0KqvSbf/i2xN8/Offr+lm3rpk949fV+b19mVF/j9jl9z2+77Z3qIWGn7j73MVPHZpb
efBWO/v1o/c/+MAj2+4HAd6BU08t+Lqf7DGKHDQLH0BiIZ0D6ADXn+mPVFMkv5TDJrlmuyRKmcfr
cnsEL6MOjtQMAQ4N3evT/YRY9DxVMyI58Sc1mtSoBjRD6/dn58Q3BLcF2fzgqSD7Nogb9t48P2d9
hgN1t/noKR/1hQJVKbYPYxr3XUAjQ+z7tlTqNAAb7UngNGCqV6p5ZoI04AoCvKog5bh5kUfmUfrY
mqenbqnJSJyIjL6o+uqyBGwLrZ9tHTJ/zW2tt7MeOyaXD1q7qvUbTBoM07wZjCj/SmDxQaJhZFUu
vcrQRmlshdaoteAa0realKXVa8u1bciQBFnBJwQCpJhBjpBjaFkHnUiWcHNSZwpkJp+dFs2JiyG1
bV7mrFJyzNyepnPMdClBni3gV3Fw0c28cpw4ge8r91Mxce7sMDHv7AdYoZ9HOPYgN4kbhXx80iiJ
rZAa8ZXoEelbScqS6qXl0jZk4KI+hqRDD6OcMM2R4JL0P43EZAwLTC0LV52lQz9V413L4PHYjJ2e
T/seJIVoXYd3gbNafbLfGhfiajwYjw1ig9XBwUExK6yzhWO1+sIVhVsLH5Z3KNut++R91sbCI4XH
Cu2ksLhwFAqeKfy4UC40wunxKqRXmIWSEhWVcAZnhXt0hWv9Rqao4MOF/LT09Lx82DJlhzPP7TIm
l9e76Dwgp5lVG45wWl5GOvLmpdN6+IuRtzc3Ly+faxF7CMnHbJscWhUPjZ4Ydz6q5hv9AZWAnPx4
vtHnonhx/hv5H+cLjvys/BX5AsmP5JfkJ/PF/FDBpykibDPpQhql9n8l7k8Ugc1+D0cVgnZyNA95
YAvY8OaNMuBzARwCIMoi3HAHXfoDpuaPC6GcPPM53zXJ82dKXUaF9S0zN5ZUP3TZwocKQK8Z+aP7
zu6eOJFZ1bP/7G6JE2Le7Y+OGz9+3JTLBm1urWVTHuheOWT9xgRj1fdN7lq98p7Wc1gzeKnEWqyZ
n2w1goon4Jmszoa7UKRYLecgdZDjS6ckm9vVpeBQbrVYoH4xmucn5nYlFHf9yL/brrolzwpjYuEe
2Bw5Xs1da6WnwLkv3LWcU/7zxjWth9yebGpuuOL98+ThtE5tXrE2cSJndMXQa4tA/NL6t+rurcli
mY/P6D1q5Z5Elpi3Ze/A2St/yffqGOhk92KmNmjwm4whX9AT6g+eH3ziS+wLGI1DUkhjtc4Jngn+
2uAmtlnerG6yNmvvsD9JH2rvWGF4l7+wOXeor7E/yM+rL1qlhepaeaUqgLZAhZYAR5FXVLwVSrg+
bT7uP9mjMJh0ULlTBxfTPG4eWjhH1+Y4Z0IPnRMUaR3YOb5NibsxLVyx5Pd/83I7XPwas651y99o
PPHKN3ckflhHIxuvvvruu6++eiPLvpnK6xIvffu3xPMrkzsf2Llz25adO7nesZoQoRfm6yQ7jYJN
EtXsdKw0U1ooCcXuSfbZ9vluUdcc1iwru82atLIqaw0uQDezxUahomCNBSbrBfhsRSuBGUvUwsvd
W91sinu5+0n3EbfodpI8btYoNCyMrYDpEXYNV9VBmp5SLqBbnF/S7+tCI1LqBZgwtkcFvpLlV1oa
yPDGAO4ElZv3XEp7AwFYYqwrMJBSNGQX3cZXdeCVg+prJ158Ud8xxWLepisHlX/Xvf+uxN8wxxKs
qRNz7MKeM1pklxxT8wOuQGyze7N3U/7dXTTFW+1l7sO2g/aXop/Fzti+z5YLbeNtM2x3Wza5d2Qf
tCr9Y0bOoLxZ2dPzVrtXe1dl/zpH65U3WK62DLPVOKqjA2CTzcnP62Utj3ILZHmOIuuSS4sGbfnW
7OzsmJKTbXS9xrrEu9S3qHBhlzW+lV3u9d3dZW/23phtBb0tcHPwni6PdmnsKgeifiMai/uN9Kx4
lp9+DFWuTI2Oyr0tl+UawYx4bpgbKYwAOM+orrSkKy3uSrtmRkuc1FlGo6YmA+5khqiS4s3cRxYq
WtLMDz3nwHFMi0Sb+DPvIHH30kmSUjiMcplSmfppXnbPaHV0HK0NTKdzAt/D5xhgYjiazQo8Nisr
CE+B5bi6wDIqTMPVHgW6IP5xtaQd6hrSDpLs5GtN0KRwr88MubW3KTOHp481ZeXg0iRC2MZ52khD
5Eob7Zldnb3Zdlf2C9lvZ8vRbKtNFHErLaWrkTKutTUFulUhNBV7M52dG+ehkQH+T8xL1qOoWI/r
a6co7H1O0+4tmjU9ftSk1BgBv/IU8RSu+WIKfgNqoL8sYKDfgIHTQsAo7xUPcItTwMgtxAP9OgJZ
pnFHDIwPG1A4HGE6KpwMs7bJm6Zv4JYfj7lezG8PmYocP2vADt5mZeNX3MC+G/BTl7oTkpN8xdBw
mcBRgEe0OfnNfluF1Wut4NE9Vm79/mq3pcK0zuGCQe3524r8uwrYeUB0qZuhF5ix+fcB0PPySmjY
ffUVV/XK9fqGJh6/dNkHn33wdkHiB9eUSfNKIul59NnaSae/fb+VFheNGV+QXhzxeV3D+024Z91T
t67v0W9Alj+W6UufOWz4qjv+2IhdlJX8gt0u3Q+++LpRGCFQyfVCRx/7MHutQwn5SFDw+0jA7YGd
3M28NChoiq5YoQhTw0EC2wKNAaEeQQvsYzh67IFRAMywifj4F5M4s1stuLRQTEgxnQIuwQ8nBUEh
L+Ae76vybvU+6RXqvSu8G7xHvKe8EvE6vfxCvAhzxZJt7Za24Y29wCf6mncHvckWbgrnJxdYwp2n
zZMLTEH4AhCnxeMQp66ytpNLHcUxxcuPcr0CHGncNeDCx3/luS52XYslPz1/WHDary65rsKi3XAD
DYt5xxLjbixKT/ugS9nowT3upm8ce+vhxFrg5xZwmbH4axV+ssUITHTNcm2UBE0OyZWs0jWcDXed
YIqp0bpEi5/oPi8OZTiZ5fl8MOsXwqxoSsrU8e2/kZSaykndFJEqPQUb8oUisqN8HHGSf/IIXaKj
hKxLmTFwoxgagzltuM4QFUb2eXrOlbsuoaGsMVVDFnShoa3jp12+ayPblggem9G3ZuFx2gJVEfO0
QBeYjHlaaJrhkwrCxXGFP2T+UPkDtvijTQhNJTUCz8G9IpVxnUPVrRZo4swthLWwnk26WV6y4OOP
5CnDD/uDTiSLl4Qs+GM0ljjpY1lNtBRL2qtTm9Xsy6IF4ripqlEZn6hU8fsgFeat6QpcI7YQXYRJ
XoOVXUZcq+AWMSOYXhC32LLMO3KiDVZ3p16l15gO7BLDIrIKC4x1NaKAqyAlUFJWGA5rOaEROMsE
GrK+ANrCHSd4tXDJqQ7KR13INL+baVNH4woaPqvCKczc2kUQWG0XgWBB9wS4+RW2dHogMY7mv9wn
INudr9JoAthr/WTfYH+3biwzhVMNOnFv4NRKPzJ6ALM6kZmuSFoa8bNM0SWFFa+WqbusVtM9E7NU
CBXyEGGIvFnYLJtWQWNx14uBQgu+yBU1iy5a00hY9EteLaT7rNYYKRDzpW5agZ5v7YErxP20anIx
u1gaogzVFpMl4mIJLmF9sXU1WSOuluAY1ldb3yfvi+9I78Az8w48M1+Jx6XjuCN03Poj+RGXsM4o
38OF8721W9sanffFaG2+GB8iFhwMfva6yBpfNX4njrNEsEqu1Vacd7mMaHO5XGKUcpfLf+dGkVNu
FFxAqoI1C6uq9tco/3BSZlcRC8DANwz2vRE4UV44SMMpZYO7Udq8KCknCj7Gwuq1fzr8r70oGCVf
WPBvwvn1Xothq4Bz6cweWwWo/AyYtcWw8pxTYNbI4QFSx/ZghRC0s24uGMwLupwqPPwfjQoCrU00
UtdLB6hj92vUl3gs8fcDe0EZQ1gzh7MfsMdax2O/WbHf6s39ttlYX6C8LLLNykH6IX1HOWXDBdqw
GJTxDSLprQ7BRyG/ogsVPY8WKT1pH6WaDlM2W87IZxQtV8xTuuhxsY8+UBypPy+ql+jjxFp9uniV
voRer98lblQO6e+IH+rndJsgKjhz+/HxWxe9TKzSq0XNh28r++gj9Sv1HeIB8RX9e1HDXYlTTe4g
3+VHm3zYmFyI+6yuOBXx3Tt3gCFQiYbrVyjZX9gtnjSvtR0zHP6cuJDHcBeGaZJssbQVn8J1Vt5H
AMWWPCLhDrsEZxs0TNzrshAYXK7aI5dpCAyLOqMGX40fw71XgWezMhjArjLc3NoFTZZ7rEUy4+f9
22BeUgzhAkrbdUXzM3GTMfKvmooa2n1jqRgIE7ZD/khR9z49AkLmE9yDEMIYNMFFcl1DwwLQRsOC
MmquK57w/dHlidvpxKdepMMSm+naxI6jH7AYExIf0pyE1vomHZo4wLmoHfauMVhVD43vdRdI1MOn
HrTCXuqH0VThD5k/JD/yGOdlWeCkOCaLNotddjLikUUPbtcJMOrLnnoogM30SbBBh63YXkAivhJf
vU/ghg80bcrOi5v2EHd6ZtzHfcsVghEMxfkNt2aab2jMTME/yVNuWkGM9J7xNr+/l3NBkwmOaA2B
FXJumLrmD7wtGOE8DdvVybri1F4CJ0x9zchtUxUKvFQcU6mrkXXDG50Q0H0goPeITnIoidVKntot
4O+E8Xv9pvVW4s5+m6vK4/SE8HAHq+BKPtWEBA/3IN12zTK1iRS7AHNWPmR3z152WFXP0Fhi7cDc
gROXjxo9MjSgfNrlIWwoO/v7OXawbtpF2a4PbdfUcuyDtLy/XPr3wJIpjsrv1JCKDEIe+rQSf9mO
kNdG9d3/00/nWvHpew7q4lN8s4XZTumXGEkGOslPP/10Hbev8vo//9hq5bYsVoHDJIddpFl4jcwX
ryFuQLWSQWqll8hkeoJchrIrAQOFDPzNvcfJeNRfiPQ1CO9kFclW1J8AeAhQBhgByANcCpjYBmMR
9kebVwC70McU3o8ZfkrmKq+Ti/AuAtgImAq4S5pA7hY/JZvkCjKN5+NdN6OPGOL3IP9+eRe5HfHN
KK/ldc2Qt59AhqG8K8rulCYkk8otREEeQbwV+X68/w4+ZoR5eP814jXJk4h3Qd9DUb4a4XiE49rG
GzTjn/I25lz5HNfyOPCzDGW3A8YA1gMuBX54+xL0l4X0LYhbMC4NoRVgFwnJRp1KdhFpRNgN7x+I
cfJ5c5jK54EwNSeMH22G/hsYj/z+HQFj4vP6EvA64Aje3z42Pr6OcIs5Nj6+1BgHCWXm+vE52wB9
2etkAPCSQPl66bPkDxxAeUcxr8MACX+frIdKkrswtyppL9mMdCmg0oRrCBW3kHnCaazBXnKdvJE8
iHzCegC+J7nsGxKWc0kv4G8S+p8ImIE+nzfpYTrHe/Ib1M8SP4NecA2pB8zFu19pxxNfZ6SHYF0n
oe45viOA15WAOcDBZsACtO+B9xejrR3r/gOdkHgUdY/hPcM54J18fbJQPoivJWAh2jegL2q+J7UO
oBmsBwDlc4HT3wKeATzLx9AOqH9nO5h97cIdjF3Jf+A9HkAY8DrgdkAeoB5QARDwfh31dfQ/DOMo
QdqPMWRz2pBeMml1LB97ag7mXlhv4uhxchXaXwoIAQrkx8llbVCAugTjmoa+xqHvm9v7xvimomx8
e8jLxStNun8ZeQRlQzuEd+H7udF8DHzuKOvfHqLd/eh3KQ/xd+r4/rxXeMec/2bEzf3IQ44bhGPQ
50bQ+eq2cFT7eFDWFWPna9AV7TNRfifit7SHiJu4OB++Qe5FnxPk20GnX5OR4gdkJP4y2khpKcI7
SIl0EHmYj4i/MCcUkRoVX9xjLWuAz3s6hZuRt1l5h87Fu24TH8Nef4fcb+L1HZYtvkMl6bHklxKh
r0iPsWVm/J9ClPM654G2pOrykEPHMt7H/ya/Y9v/aZy9Kz1GZuK9X0nvJJOYzx18Tyhf0xJApD1E
/h7ACkAXtYhuVq+kzcp44pQJOQ2YJxqkj2SQXmILqRJ9+ItwhOQif7x8scl3N6D/l+jX5Bas1yrF
R2LClyTI38XehXwA8P4RjgBe2+npApprp6HOYTu9dg7Rz0as/x0IJYQh7LtDgMOAD9rgLwg/AT0O
AVwMOo0h/RDq34P4WgDnb6DX5EnkpejzFbIFebe202d7yN8FOu3SiT4V5F9Al53TXLagD82ULeA1
GAenYXP+nD9yHofyKrxzIuj9lfb6ncMO7e8G73gPY7eJr5PJbfu6EGEJoBh9PAXgfOQwdNXT2KNf
yG8lDytVycPCq8nD8j3J7cqVyZflvcktmHchHwtgI/azycswDj9PY5w3I7wH8yXtclTKIzM5PpB/
r7lGeD/qd+VjM+stxf6bS6ah3z8gL8n3obAF+w74RH83ijvJL8RPyAaM3SE8mcoXx5KRKLtTXERu
5fng6bzcImwwy8eI/yCLxELEdyK8j+BPnpBF8nO8TfJ1M+/TVBnPkyaTTaC7YnEteVjaTSZhTMP4
PFh58lX0GcOeD6sryP0KAQ1/Qu4Vf8KcWzBHjoMWch+ft9m2KfkTn5/SlwQkAfPjdQC8DWxGkTZ8
bDRxwcu4DOD8E7jgfcpvm/oGkY6i/lZyvaqTe9V88KfvSFgBLzHftZtMVA0T7yLGNlT8G/bH16Cx
8WSN5E3+iLz+0uPJpPAT9tDX2F8c8Ke8JB8JSV+T+7CX1uB9Y9rC9ag/Xvia+BDaMT8up61os1Z8
hCyQHyM3yy2gu3cgC94BT/4ac7mS9Eb8dvGx5FnUHYy+CH838kcjXcLXhBnJI8DzQ0oLCSoG3o86
fAwod/P3Cp9hvHeSNeAl/dWvyW9krmUTfjkUf92SEEhzDmZ6OeLwleFvZZpg5nGVE3VxzriTXM/z
cef3ZYyC4W9bUr4XxEchI+4j/YUdsIfMhP7wFbmRFZPVwkjQ3UnIDIFcz9NiV1IgnCTDhTPQd6Cf
STrpZdbzQ45/QUaJtWjfQqaLe8h0IYl4EHA36BHtpGYyWboCetbl6KcNGP7CpqiRUfJ6spoVJx/n
9cx3nEn6BYC4lJSa7XjbNjDHysfbPuaHOowZ30MKN4DG+Hj5t5EdxsvHKrSPs22M/2p85jw5LjBP
Pg/xT6Q/8PQhIDcV4i9f3UIeA2xjH0APbyHL6MYkXLakuhMM6ZgWl9E1gFEAUVxGHkDYDeFXgHcA
WwBPAf4qlpOb0Df+zjFp4ucCDux34F0IUf4I4GnAn9vLOob8fR3T/youfp481DFfKsXfLwWwruDp
gI5lPC4+QOLiEuhEJclDHIRF8N8AZPhRFZUUsk+QPwHtOqWlArJJnIe6Y4jQuc//TRpzAq2fx63R
cY7t64EQjv7/CHwNeT0eRniI/dWNy+f/zXj+b9TF+i4HzOJ9SdtId5OGvoBOriSfp0+Ry+mx5E/g
5zKHVJqETXw+QFzt64T8NRR/5LPz+rHfkZ4c553zka7k0N6+87r+pzT6ndMR2umgPVRKicFB/DPo
AdA5DXlgcJA5jQE6p9vp69+G40gceKoWx4FOOc11SstOUsyBzUf5ZpR/TvI5nE+PI4VoY9Irbw/c
xjgA14c4sE9IlIMwBmUA1O3HoR1fmPskjlehhbc125vr007nndcHbYn4AvjRcZKNeLhz2E5HID+T
b7Snedg5D2mTl/yrOu11ERqAkn/VvmO7/z/EsXdeBbwEePH/y/lweqcEtApwEuh0b0HfwF+2lX+D
c9Zr5BZCWtcQcvZZQs5NISQBGXzuCeSNRzwP4d8AuKF3bg5CSKOzxxCfj7K3Aa8DtolpZEmbXhlC
enCqbev2tv5yU+15u5+g7ZztmWp/djXi9yH+XwBQ2dnnEd6F8DvUb0Q/MFa1Qgc4dyPCONKjAKCx
c28i3Q8AuX+uD+BLAMZ5DmrMOTjRzj4AWMT1Ea6ngTd2PIf+3013OstyvQ7vO3+2/U9pjBE2ANxu
4jonxsv1Q+gjY/7XYft6/ocQ+Ljg7NG+/v8pbD9L/FPYhl/ofK9yaB935/f8uzTW88c2OI3wW3Ft
shU6pWLq0dBlTZ2b649c9+a6LNe3uR7L7UEpm6IZAs98Xa1cd+b6K0J+JrtDegP4vIZcgnFN4Hjl
ssTkgx14K+sKW1FX2PBSALlEBqLOHzGeU+BDDsjX76BbbuCANP+5PAXJ1yC7HOC5z9Cnkt8hfB3p
DHoMLro2mcblXkc4z2M76Sr/QsZdoMv8n5b/J5n4f1oO/lLTBhfI1g75MxHn0Lm8GHkcsjm0y+D/
t2FnWf2f0p1ld+f0eRn+b2R0RzndWW7/b9Ptcr491PqRUg6KAR0E0FkvhSy+QA/4T+nO7f9P01zn
4NCud3RI70be7g5pUy/pnMZ4L9BL2tOdw3a95Xx+Jz0edJPSZ8LQTdqh077Duy/Yh/8pjX06QJyX
fL99v7aPob1d5/z2tLycDAIMbg/pTlIAPlIIuBl8BHIwGUMcMjB5HcJa9RwpVZ8gpUjvA+xHHnhO
EnKPy77kzXQvdOkfOMtJ3IS0AvsNrzupDWo70/c/0W8nuhVwxjP1Q+DMnNMG6IywaQP6AtyA3YCr
ztMGzsp498sCJC8/6wrHk99Bb/2usw74n9LiMtjPcd5DPYc4DvApSZN3w0YLGwriqxHqCHXw9zmA
NhtfslVuMutchrJx3D4LPj8TZ+J5+F9EHgdPnyYFcdRY0O5HgU+mzU4HWZoGvu9QvoW95KXkE2jP
7XMTlCD0nn/A/tifZCJvPZfPgOmoewW3jbG/8P/XxbQhB9vCbtw+hX7vlLGKqGdHu3Y7ch/Ea8We
8PP0JBUo436qS2F/yRQfMvtYz+3uwlnSKD5BJqC/Zn0XuUuDH0rFfLQJsCvhCzFxAblT70M2q9yG
nA77CuQV3mfqKcB9oj3ewfbHbfE5fP4Ix7XPGekLdAeU9cG4srk9puN729upA4GbMSnfEOpyO/uF
ulEnXQb99AJ0A5wGfN75fWgPe2fy9VRIViDkusastvAW4LndJ5Gy0z9AusNOx3WzlE0WMluyQkYD
0M7EMcpSY2obS/s7gZfW9njnsF1HAR65jWoc4EYA96HFAd62PG7vugR0cAnWq4bbzKTVsJutI2Ng
K33hfB3oyKjnEP/LpNl1yL+DA6cvwJVCP/h6dmKPvk+8XH8T3zZ9eDfBRssBvrzkdtS/HfYzbgsb
A7vaGNPumCRjgKvPfwbsLfg0UoCv8B8j60ww/X7JF/iYAPeJo0365D4a7udIE8/AtrPTpBk38MB9
gg7xdgB8PtJ8nNew/iZcw31v8Eu0hSbOYDvEfGtEPkdum3sMdAv8CA9Av4Lfsb2uWkXGKWtBr0+S
cfKNeG81yZI3A06ToFwOHXsd5j0YbW8ka9jfSCkHeits6CLiGAgHgcAWB80cvIdw3y/3CQNf3K+2
EHAX5sN9W//g9cy6KV8u9+d24cB20SjKuZ+wPc79YIibea8i5GD2gXB7B0C95F8AZ9lJbjlE/wzj
+mtqTIITNNsJ0HZaG8DnRjIw/DniRODqQhiI9AWAfni6uDMgn+fldoa2/DDyLwDk8/SAzoB8ntd5
HP+u3r8bx7/Lz0PfFwDex9P/rv//6Tgu6JO/o63fGOIXAPJ5+t+NbzjKLgDU5+n/6TguwDHahdGe
5+V0BuTzvH83jpEouwBQn6cvGAf405MA/I95rZDriZchr5cg3I3wIoTzAL9FHOfe5My2NOqY9WYj
rw243E9mtcEghPxsDnmM/4mLJLcARv8M/F1JH2+BOm3vSV6J+N+RfzEA7+JtE4cBeLcJbe9M/D/t
nX14FdWdx8/M3Ny5iSS54SVEAsyFmAQSA+EaGhVK7g3BqumuUYJNpNVoxeq+1DwliOsLUitdAYGr
dt1an0qAQt2i5WbuShNeShRttX2E1NUV3arZB2vtlq4+4NOn2y25+/mdOzeEFLD78sf+MTf5zu/M
Oed7zplzfufMeZuZHZxLWtmaM/RDkD2XtBP/ELVW4tNxk46hPZyXgW/B6eN8nhfvd7Ej7UMTkV0Z
/0M4yTWmhYd7Fmmqefoa+ISfXnwKkvahJOdbkPSZhnqB5OVWQLwnGSemzwc1nIv7g9RRr11QLzFO
/BLtYZ7cq0PMDojMoa3Vbe5tanz2XsF9ZaVuD9kLIu0db0ZQgflqSpB5XsLIk36DtOF6PHlUrdPj
yTf0uvrN0l/IuYD7yGuc/yttajd6WEC7+QBrA8Sh12Voa7lHbiW+a63X1NUC3deQNSHZY8H9IO/T
rPdfSpo+Zu5zsyq1D7Hmcj3taWYse559K+dfot8ha2SsYYWeVA/ZR3C31GXcrxZm7SUOfW9Zk07n
XMjeEE+Gfqva7Z9y7Q+wv2WSKpP47LlqCXlWn42bfNB9LdrYQuyl3EV3NmTwh2rmUz6bI2kmvcgi
ZKlcB/Gt13nyMmNy1rvk/km+FTFGzw9OpF79Qc2wc+lf7FYP5prqcfsGPXafF9is6objPKpqZP0p
+CrrZV9TE3Rey9rTW+TrX1OGnuT+8FB2PoC1tG8FXiIs1tT0upY3H0CYel5gOAzZx8OaF7oxCbfT
+jXZfpS+Dpmr8eYIhuPwrkeuS+6dI65f50NWh7L5zrrh52RtTNbxKNuC0TKbJlnHk7U0wrue/GsN
LVDX23dxb32GtY4X2LOzkDnhK9XC0CQVsbfz3Rz6Z/Yt6Kb082SuLqJqcp5Q1PH0QsrpZeRKIHXl
MwCt0XXuDdyeztRHqV9iLz+xO0l9lV/6L8A94LaMu7jxfU3t9+SHSMLXbviR30lpq6hrvCiRORoP
J5H/gT11d+h3Yh6Rz9Kf0/szRkmvX6++IdeP/3PLUf3P4fIaZU9Yf085l+h8yoSb6U9m+5WnpKwr
z9O6ovtw6Vepo0D6culD2EvdXDtawpH9KdKXlXX/X3vybU/+VNZ2pa83WhLOaftXRp+P0KPT+u1Z
++F6lq1vXIf0DwnnTFL2q+n+9SdJ0j28T4Z80/tlRkrCP22O8Kznsl7Purtet0f+8f4DXR/GkB6p
F0i9p2/k+Ck7jsrKR+invcP1Sz+2AFxBvm+gzfnzc4H06b1uwRPp48ETtPnDkjbyBOua7Ok5E4JT
8T+VPS3fTx+30fCsJH82ngvBTfA2cX9x0sdD3L1OSTWecxkHJDJI70ZfXgDvgGMgBfotI32cVzuq
wMPp4/TVR0juHQ/r8cnIfXXD5uC3iffbxLeEeGnF7ZdJN62A3tMgex3OAvrsyuY2HLpJX+MJuRee
E4eIh95C6OvE83U4vyce2jbkCUG2LLJ5ms0rru2Xurxkj4HAS082rizvbPKTypEwZQx1Vpy9XNIn
KKP/s+s+U/qzaWeu4WfgbTmnTv0cyLgEKXv3yLvT0y969lDwfXQW2J/LAO5j+D3u4QT5+gvwL+CQ
h+eRsmfpA/COhQ4IiMcD8YzWBdkTI/DspS4Kgu+nj9hXpt+WeiB7fwSEU5Uts5HSXpb+GTr4tv0Y
8hAc2beT6XvJ+rPM3cge2xulLUROy32F+5fsk/2xinCdNaEkus26XuA5dUvmvnGq34feSBss+2Bl
T9FY5n1arSH1ueBOxrZjlJPzz+n3BcT3gAfZ8yuQPZCMA9MvgoNAxoBi/w8jYc1SUwXYXUrcxJKm
Jun+dhnmr2Qgn6IS+1PpIi26rxOgJ8xYV3FtN1L+haRzSeBx0vY4Y3BDPST9H67h0UAh+3LYl0Sf
skDvufHG/fivo194jYdp5Etr4BH6jUfVYo1fodeyrwboPTlSTkfV1cEL2FszqPfXZPb8Mq633gXH
4R6jzyn7b7y9NQHCkH6i9Iuso+QjbYu1lfHuVuQ25JIMAnzvy7qHMfpX6KO+gzkJpjI+n45cCe7E
XIG8CywFTwOxv5s9LOMJKwezgLF0YHdGilnG1QLzcAZWhDiwN3+CvwdUnXkc98tBHrjCg/jZx55V
cWvU/qLmr4jjs+y3KIUr5oW4vQVCmfG7nlfAv3bL+oGb9ZPzG3VZ3jfpU40Da9N7cuLMcf6K+YlW
no1Q6XxASQ7RwsmjCLofRW1NXwWe5Pwj01ujGF6D6PfWyT2Z8xL7TB5R0WCxuj/nfNXMWCAeLOS+
3MZeqU16/zWts4yJhtDzoVtlPzF6/4D1emZ9XubGs3PmwQE1K5f+Oe68k4223JPmTuoyZoOQpE6g
W8qQ3hv28tP7p6lr0ucQPbM71AZ7C33JLWop9U3v+4Ync11F4ELMlxD29JyZqpGQuPukkUPPIKU+
LKZtGJ57hX+b7GkT3cJN+oLi/2n2HN2LrJc9CdanFS2G5l6OvAKsApKHVxLukyPWq3Yzz7yb89P2
bIxw13t1/rfnn7R+RZmetj6VLdvR8+foyDn3Zox2/8Q1nlF7iYbn1c+y10jPzY/YuzH6nPjPuGaS
XZ8Y7c56xelrNN6ep7Ne/9H0c+hLq7Sj9hQxp18HLzJP+ZwAXU7j9ha6NA1/XzM/os7+nP7Efyon
04bTHh5F754Cv9P697eZ8Oifl+s9hvKcQ6fcI7CXZwnW06e9Bf2stfYw70o/EowRXUXKsxOtGozT
aGMz87QL1NW6raVNJS0yV7tBxmm6DZK2hacHpZ2Rdsj4iG+NfEQbQjuj5yW7OKdN0sBs3kFt2Mh5
C+60SdJOgah1A5wbsPs9ZsLSbaa0bVIPaa+sGLie83/zQDtlvocZWD/UaYiaH8hazdAjGcg9Z2iz
3Jt020lYOo3/TjyYZeyi6+21et/6jfiTOYJz9nu5X0r/MtvHlH7maeeUwfD9/kxm/L88EqP9DK/p
vMteeNm3/2P2+dKX1/dEmcPw9kYHL9LrDrrdoSyZH/D6+Zn5dplzrtPltVYV0abI/IE3HvAk6zlS
ttkxPfn0I/DaCElpDAF9n5Z8/KVuKw31BQmb8i8ifNG7oO7XyHhPxg7fy6xFYC/7vfXYDnNmrLGc
/ZmtjKPuYS6Bff6EvRjsI+whD99BfkfSncP+bvjfFIndIP5qkZK+10E/GABHTsfJH3njuKXZcRHx
cEceeiJYSn69qYKhpezzfoeHNkUnJqslMi8uQPcfF2DfOwLybIe048zJ6N9fcTwDTNrzP8ILaBnX
OIwfkvNjAG21IAe3HK7BpjaEDvGd0w+UOu86pcZsVCof9wLOw7POjaKnlBoXVmo8/gUTKKIJ5KGg
+M5TKOG+I5j0mFKTv6HUFPJ0KtchcEjD9FpA+WdRTjh/CiqLlZoxVqmZXEvVAqUuJA01YHYFXU7B
S6cwp45lhg+UuuhVpeqeP4W5O5S6+JhSl5I3l36s1PzLlVpws1Ix8jTe68PPA18HfB3wdcDXAV8H
fB3wdcDXAV8HfB3wdcDXAV8HfB3wdcDXAV8HfB3wdcDXAV8HfB3wdcDXAV8HfB3wdcDXAV8HfB3w
dcDXAV8HfB3wdcDXAV8HfB3wdcDXAV8HfB3wdcDXAV8HfB3wdcDXAV8H/h/pAE+95rer42q+2sSL
1U2eHp4tb8+x55vPqxxl9rSujufzcPQugCPHCOgGlopZT6fs/GisFzl2vJZucXW0j7c/PO1eepG2
r/lGdPU+Xrp2g7oI653uErHemYo1ifedqYvmZeTsOVq6oYyzPT7qxCdBmw1MvoqRMV2F3AQ2gwMg
SIJ2qndBGljWU9ZW9zKHgLcTUGF8vLVdGaRyuzoM0sAi9du5lu3qQ88mQKq2pXLHSPTbNKuUx8gN
otxG4NvUarALHAY5PMK3jci3EdY2wtrMQ+e7gGlttba4YSccz+OR+PuAaX2LV+bK51T7rW+mwjpv
Hk8VjovG4mHr71QLMHln4p+pfmAS7MPQHlYm3pvdmjk6C5tTeQXRMP7Xk+j1JGQ9UXZzNPR5DJP4
X58aVyyJ/5pbWKR5d7u1dRlDKlwSbSEX7lSGtcz6sipTjrUKORX5ReQU5E3WzXwGW9IZSxWGo6uJ
rwHvDXyjaCbOcZ6HjiKbrEmqVHtb4RZk4lnhzqiKcsULrRLtpdDKV3V4DVm2G3Uie3l6VDL/wVTu
eZK+B93whOh+a41lq/H4Wo2viU7hfp5jnQ3kSlpTufnRRHyM1cpltpItDmk0yGU5xqwvuwQUL7IW
8RhhMW5/yWOYE5CX8Vi/yO9aW3g1u2N9O1Ux2enfaz2qWY9IoES/IKNaC1L5BdH+eC6vNDQogI0U
wEYdeSJVcXFUxSusGTyjO4PII9Z9mO7DFLbWYVpHqa2jpNZRUutI1Dq0T1lrcVmLn9m8R6CT9wck
wGbMolYTXDJUKsME94IZ0T7rfKuEjAnvJSsNbCelcgskZSXu2HHaW0lqTEG0Yb+1nCeAlxNmzOpK
TSyJ3r7XqtKXcmGqpFQInS7qut+amCkaQiqWItlvTSYjJGOmWFPdCU4y7nAuiuwow/yJOSCZZP6T
+boUt3mYc5E/9eQrnjyUkel+cyBTKcxXRQ7GJ5u/ILAbzLfVZkymudc8yIceHPMts1dK33zT7FMN
yCOc8wkysw95EXKPO+0lp9fsTSFI+xNufrFcrHnQrZ7tGZxyzzCx1DOMLY7Gy83nzefUZIJ4A3kB
8jmzX01HHkCWIPvNLr6L4pjPmnPVPOQ/evIFc5+ouPkDc7e6GJlyCyQJSdcWscsNivi+qzJnLbOd
feb3zZ1qEl6fcSsm4fhUquICp3Av4Rnmdj7qPsUZG88ztxhtxsd46lZHRKqx5la3XgJJuPsiTp+Z
MBOxkvpYeawmtsOqLa+tqd1hRcojNZH6yI5IPGxupAHZbFJ/zfUc61XERHtADCTMtW6gPhk/yTXJ
dZlqNcduberg2KlNimNYm8T1I21qMNfw1P8aGAlzFbgPrAZf5TULCfMucDe4B9yrbbowrQAraU06
YXTC6ITRqRmdMDphdMLo1AyJuRNGp2Z0wOiA0QGjQzM6YHTA6IDRoRmS3g4YHZrRAqMFRguMFs1o
gdECowVGi2a0wGiB0aIZMRgxGDEYMc2IwYjBiMGIaUYMRgxGTDNqYdTCqIVRqxm1MGph1MKo1Yxa
GLUwajUjAiMCIwIjohkRGBEYERgRzYjAiMCIaEYYRhhGGEZYM8IwwjDCMMKaEYYRhhHWjEEYgzAG
YQxqxiCMQRiDMAY1YxDGIIxBc2WPNRB/EcoAlAEoA5oyAGUAygCUAU0ZgDIAZcC7dMkIUZh+uP1w
++H2a24/3H64/XD7Nbcfn/1w+zU3CSMJIwkjqRlJGEkYSRhJzUjCSMJIakY3jG4Y3TC6NaMbRjeM
bhjdmtENoxtGt2YkYCRgJGAkNCMBIwEjASOhGQkYCRgJzfhvF435VaMtxL3WXG3M1PI+dUzLVeqI
lveqHi3vUTu0vFvdr+Vdql7LlapCS4payy7lhAzXqS+MF9MEXAVuALeDzWAXOABsbTqM6V2QNufG
pgcK7avszfYu+4Cds8setM3C4FXBzcFdwQPBnF3BwaAZiZea+bodpWlRm+AZfFpmrvoQcBPh2KBN
DWYd8dbRzs7lr86sixX9JvJhlXG4yjhQZeyqMjZVGfFc8zNGQLd0Eb7rRAYYbbExFQucI6C+onIB
LdPG3ccmOm7Fp5xeY19GzIxVc3oM9IAd4H5QD6KgBpQDB9RXVEFri033gtyHrATTQATUq2KeRldj
i0KxPjPf2JF6MV/lSjyVM+DtdStrEb1u5VWIH7iVNzl8v3m3qpRekfEslWoncpfrvIfzMxnxtOvs
5ewp16lDfMGtnIVY6la+4sTzjSW8w02orZ5cTIHL+TWucy3ernadmYhqt7JCfFcRUTmuM4029R4S
s2ZfkImpzHXm4Xu661wivkOqUgqeT47X6OTlYJZzK0WCPuwz2gJG7DznN86jzjHS+2syFvV4M9Ib
QBwu7zWujeU5+2qexHPcceN54p/7Q48nkyKfdXaUr3WeICyjfLfzuDPL2VjTG8J6A+leq6Nwnfsj
vebO2DhntVPrdNW85yx3rnRudK5xvlCOvet83tknyVTtRpu5c7fTQoBXcBXlrvOZctJCEi9z/saJ
OZXOJZF9kr/qYokaTa7ZJznAG0B07BeSv1XlxO46S+p7jaJYlf2RnbCX2o32PLvMnm5PtafY40Nj
Q+FQQWhMKC8UCgVDgZAZUqHx8gVjXs5g8EZP3oPA964CcgxoMx8sxsyBozINXk16pUqOs5rN5sWN
RnOy/4uq+aZI8reLy3qNvKuvS+aUNRrJsc2qubUxeXF1c6+dviZZX92ctFuWtvUYxsZ2bJPmg72G
am3rNXidkLFxTWly7EIc1ZoNpX284ef8NRva21VJ8R0NJQ1jFxRdclnTGQ4d2rKjST7Q7f1Ksobq
6pLqKcnHmhe3Jb83pT0ZFUN6Sntz8quLI59v6zMLzfxFTX1mgYj2tr5Ap1m46BqxD3Q2tePtPe0N
bS7AG18vQuAt1Kgi4o32pFG8UUYZfxXQ8TdNBP7y8lWF9leRl6/9BQzx13MksqipJ8IBP7xN/4j2
c6RcjfCDxsBt6qnggK+yiNEmvoy2sohO2EwdkOPgpYYDXgz6ezogx9CRJWef8lLueZk77GWujsvK
pEcHIweCGT8j62f8DPycysj/mWlZY7WRmrNi1cFFy8oWdZQtWgY6kuvvuLUkufqmSKRn1QpxiCSt
io6bvniryBuXJVeULWtKriprivTM0bxRzgfFeU5ZU486uKi1redgbFmTOyc2Z1HZjU3tqYb5bfHT
4lo7HFfb/DPENV8Ca5O4GjRvVFxxcW6QuOISV1ziaog16LgW3SZ639LWE1KN8ulrLVPmeXnocEfp
tPbG4nDnAlHovnnTSlaV7gkovqRwXnV7ckxZYzIfiFNNvCYuTtQzcSrAutBzKlk1b1rpHuMpzymM
dVFZo3y0XP+U8JuTc69uTk5bfF2bqEoyRhacqcyWy087l6hFtzXxz3mXRtfyrmyIIpX4/ONf15l+
K1asWN7FYUU177NpTlbxZfBP8WXwHtsmqo6mduxmZe0sS9v15OYu4mvmOFaTCKNLohMT3xcnB2O8
9UjZZnew2zZlFNGVmjQlevt++g33AQaR5kqXqQRxWpmaXs5oCS+z52Ykw1U5dydNi8r30uuhiizP
yFhRDYZEeaImUd9d3l3TXR/EdfcOLJ0dcit1Z++wVFf18mxmYOxqJ7Plm+bEt8WdPEVH3C0GPh9f
vVx/xny4OLK8au9T6dXws3Zco/4t18GLtc5hjmIk08WV8sjEvkLO5JcxaC75rEnY4itzpq3kcOrH
mVL/BUxgjz0KZW5kc3RyZWFtCmVuZG9iagozNCAwIG9iagoyNDcwNgplbmRvYmoKMTkgMCBvYmoK
PDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUwIC9FbmNvZGluZyAvSWRlbnRpdHktSCAvRGVz
Y2VuZGFudEZvbnRzIFszNSAwIFJdCi9CYXNlRm9udCAvTFRNQ0dHK2ZvbnQwMDAwMDAwMDFmNDVk
NTU4IC9Ub1VuaWNvZGUgMzYgMCBSID4+CmVuZG9iagozNiAwIG9iago8PCAvTGVuZ3RoIDM3IDAg
UiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAFdkM1qxSAQhfc+xSxvFxeT3m0Qyi2F
LPpD0z6A0UkQmlEmZpG372hvU+iAgufMp8fR1/6xp5BBv3F0A2aYAnnGNW7sEEacA6n2Hnxw+Xaq
mltsUlrgYV8zLj1NEbpOAeh3QdbMO5wefBzxrmiv7JEDzXD6vA5VGbaUvnBBytAoY8DjJNc92/Ri
FwRd0XPvxQ95Pwv11/GxJwRJJET7E8lFj2uyDtnSjKprpEz3JGUUkv9n36BxOrrbixGmdWW/NJX5
dQtevnpEcxuzpKrzqIFLkEB4jCzFVB6t6xueenHxCmVuZHN0cmVhbQplbmRvYmoKMzcgMCBvYmoK
MjI1CmVuZG9iagozNSAwIG9iago8PCAvVHlwZSAvRm9udCAvU3VidHlwZSAvQ0lERm9udFR5cGUy
IC9CYXNlRm9udCAvTFRNQ0dHK2ZvbnQwMDAwMDAwMDFmNDVkNTU4Ci9DSURTeXN0ZW1JbmZvIDw8
IC9SZWdpc3RyeSAoQWRvYmUpIC9PcmRlcmluZyAoSWRlbnRpdHkpIC9TdXBwbGVtZW50IDAgPj4K
L1cgMzggMCBSIC9EVyAxMDAwIC9Gb250RGVzY3JpcHRvciAzOSAwIFIgPj4KZW5kb2JqCjM4IDAg
b2JqClsgMTkgMjggNTU2IF0KZW5kb2JqCjM5IDAgb2JqCjw8IC9UeXBlIC9Gb250RGVzY3JpcHRv
ciAvRm9udE5hbWUgL0xUTUNHRytmb250MDAwMDAwMDAxZjQ1ZDU1OCAvRmxhZ3MgNCAvRm9udEJC
b3gKWy02NjUgLTMyNSAyMDAwIDEwMDZdIC9JdGFsaWNBbmdsZSAwIC9Bc2NlbnQgOTA1IC9EZXNj
ZW50IC0yMTIgL0NhcEhlaWdodAo4MDUgL1N0ZW1WIDAgL0xlYWRpbmcgMzMgL1hIZWlnaHQgNjA0
IC9NYXhXaWR0aCAyMDAwIC9Gb250RmlsZTIgNDAgMCBSID4+CmVuZG9iago0MCAwIG9iago8PCAv
TGVuZ3RoIDQxIDAgUiAvTGVuZ3RoMSAzOTc1MiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJl
YW0KeAHtvQl4VNX5P/6ec++dmSyTzGTfSCYMhGWAYFgDlAyQsAVkDSaUlCBhVwGDO0JQZAmoqJUi
KgJ1QZQ6hIABbMG6VSxq69JqXah1tyi1SFVg7v/znjs3JBFq+/99v8/ze35PGD7nPfv6nve8Z5kJ
CSKKolrSyDPz6iW+bVl/+gI+9xE5Js9eNOfy319XsRn2E8AVcy67bvaco66DRO4qopRjc2fNqD6W
9PzfiToEkabvXHgk9EppD/e1cHeYe/mSa6f3OTMFVuTXp/qyhTNniPw+CJoK9Jl7+YxrFyU0uGuJ
bp8LD9+iK2ct6vjm2ENwryGK+Y1xgNKBDOMRStfzKI3I/AT4lGl4nvkphzOVnyN1YwREO2iXmEe7
6BD9VpxAqidoPzXQ7yiVitGupfRzWk0OVOF3tJYm4mPA/+ci3WygfNqGfthGRxH3ElpGByhFpJmf
0XK6RXsNqW4hN7WnITSeFtKtYox5FU2j9/WbqR+NoStokag1y83bzDvNB+kh2q/9zjxLMZRBM/E5
an5p/Nl8h7ojxd10D70v7ozaS0GUUouY99OVtFmr1IU5x/weNcila1AHncbSUXFYBpD7LPpEpIml
2jDk8kszZD6LWFlUSXNpMx0QfcQImWtMM8eaRykFZVyLXO+hetqHTyP9mt4WscYJ80HzBKVTNxqF
9jTQy+KwFj67IlyEfjPQS12oECEL6Tf0Ar0q/OJpudCINQqMoHG9+Tol0UVUhto+gpQfi3/JZfgs
157Xh5tDKQ79cgf3Nj1HfxUZIl+ME1NkF7lQbtGuJBdKvAifapqH/t6E3N8TAbFPxspXtF/qj+mn
He3Cx8w4jEge3Uv309PCjZb6RI24Sbwp/iaHyenyXvmB9nP9Uf2Pzhlo9c/ocrqVHqN/iQTRX0wQ
PxVzxVKxWtwh7hFHxaviUzlETpYL5FfaXG2x9mt9KD6T9Br9ZmOVsc7xabg8/Gz4D+F/mQXmKpoA
fliB2t9NW9Cy/fQKvYXP+/SBMESMiMPHJ3JFmbgBn2XiVrFd7BCPigaU8qr4QHwmvhbfiNOS8HHI
TJkr2+Pjl1fKa+TP5X3yFXxelX+X32mpWnstoPXRBmkV2kLUarW2AZ+92l/1DP0V3UQ/FxgbjQeM
HcZjxm+NE45Y500ucv3+zC/Pdj37XpjCa8Ibw/XhBvOvlIwxzEAv5NAg1H4GPvMx3hvBcU/QayIW
fZchuorBYgx6ZrqYLxaLa9GTK8Vm8ZCq+6/EU+ilP4mvUGe3zFJ17iH7yKFyHD4/k7PkYrlB3ikb
5Jvye82pxWjxWrLWVRuhVWqztCXaddpGLaT9XntX+0A7pZ3Bx9Sj9Ry9vZ6nB/QR+nT9Kn2L/on+
iTHNeMn4yBHtuNyxytHo+Iezr3Owc7xzgrPSebtzn/N1VxW48xnaS0+CA5v+iWPaCq1E20u3yV56
unxZvgx+nk7V2lgJTpU7xBp5o2iQHYxrHQPlQHExndDz0NfPywfkKTlQGytKxSSaLy+yMnQk6Tth
G6Q/Q8f1p9C2l5HztY5YsUx+5YilekGykEg8p/XUA9pL9Lb2vnDq2+gverRIFcflI9p4cMGv9cFG
OeVq99GvtMXiRtorS4iiT7vWg48vFjshFyaLAvGtZpImLwYX9dP+RjfTAvlnOo55vIZ+Iar1OXQb
9RJL6RN6GLOii3GFo6sjWbwo5+l1MlE0kNQfResKRQehGUm0UlRqmx1fybfoKnpFj6b3tMdR+1fk
r7Sx+gljopiLGXAjraLF5gq6zijX/yjmkCamUEf9GKTbUq1AzwVdDqkyDTJtH2b3AciBIdpY+KSB
c8aAL8ogITbjswlyQgcHzcMcvwRS7GVqcEyWjTTHiBOQOkT6S+GJNNV8mO4x59AV5p3UHfJgtbkU
Oe6gj+h22iFuCd9AiygbM+c9McYYLl8xhpvdZZ18S06SG1uOL3q7o0ijz/H5FUZmsHGQ6vQ/0SQq
Mtebb4C7O0PC3kOX0mj6EK38EiWM1A5Tr/DFcrc5XFuE9r5PE8xHzBwRTXPNy2gcPUUPOQ2a4Qxg
jEPij2jvDTRLTjSXaLPC89APt6MXguitqyB/1gaHlU0eEiwa/JNBAwcU9u/Xp3evgot65vfo3i3Q
tUvnTnkdO/jb5/pysttlZWakp6WmJCclJng98XHu2JjoKJfTYeiaFNStxD+8yhfKqwrpef6RI7uz
2z8DHjOaeVSFfPAa3jJOyMfpZiCoRcwgYs5uFTNoxQw2xRQe3yAa1L2br8TvCx0t9vsaxdQJ5bDf
Wuyv8IWOK/tYZd+g7G7Yc3ORwFeSNrfYFxJVvpLQ8Kvn1pVUFXfvJnbHRA/zD5sV3b0b7Y6OgTUG
tlCqf9FukTpYKItMLRmwW5LLjSaGMvzFJaF0P5IiG61jyYzq0PgJ5SXFmbm5Fd27hcSwmf5LQ+Qf
GooPqCg0TBUTcgwLOVUxvnkhtIbW+XZ3O1y3vtFDl1YFYqv91TOmlYe0GcijJOQNoNziUOr1H6ad
cyLzhGHlq5uHZmp1JWnzfBy5rm61L7R1QnmztJm5nENFBfJAWtlxeFXdcBS9HiNVOsmH0uQtFeUh
cQuK9HFLuFVW+2b5S9inar4vFOUf6p9bN78KQ5NRF6KJ1+XWZ2QE95vHKKPEVze53J8bKsr0V8wo
ztqdRHUTr9uTHvSltwzp3m23x2t17O64+Igl1t3cMgudboUpm4rOttKJTT0ruEb+UaEgOGqmDzUp
96NN/dmY1Z/qZvbHAOBfhUCqUDVGZF4oalhVnWcA+6OJImR09Ph9dd8QOMB//O8tfWZEfBwdPd8Q
BzKfNLFaSMyw7aFAINS1K7OIcxjGFHUcrNx9une7ulH6/Ys8PhB0H41H386oGJCP7s/N5QFe1xik
S+EI1U4ot9w+ujSznoL5gYqQrOKQw3ZIchmH1NohTcmr/ODkBmJ1NTnkymv6H+9JSSyZOyAkUv5N
8CwrvHSSv3TC1HJfSV1VhGtLJ7dwWeHcoeg3hEVsocRh5VqmhB/bZKamQsGU06Y2RYGjPDakd8R/
h2Lq6kanC1ypfIRveMhTNdIyK6JzcyNz5scSNZonOJUi55JFmhEaEIhU1Kp2aGALd4vqxdZppZMh
cmTp5Kl1ddEtwsBqVi1HRQg4niaX5/qGhagMM7Mj/jeah/szKjJDQXQZQiZjFinvisyIs0XEzEii
Cvxj7uzebThkZl3dcL9veF1V3YxGs/ZSv8/jr9svfyt/W7eoBNLOYpxG88C6zNDw9RXosbliAKaH
pKG7/WLNhN1BsWbS1PL9HuwV1kwur5dCDqsaWrG7A8LK9/uIgspXsi97chQfO6hUoJH10qXiZ+4P
EtWqUF15KPfMRkHKz4oEP0EzG6Xl57HjSfjpll9Q+XH7WMYMm1weGRbFMzz1wEOERZ051sAHGruT
KNeb6+0IQ2DRPePTDp8JGnSafPphxKQy8xPdaxwmD7WT8UF3fGxs7NCy+NiYmKFljkbz06CX3UYa
u50eNjPZN4ZtViy4TwZT3O6hZVkONuNj2XR62NyNfplcHozOyNaNpGy3OzUKiRvi42UZW4Lpbjds
XoplH0qJjYWJ1DDzA4HAURhHqeh40fGLembudvwwp5PIycE5fdzgdivLl8H0mBjYvITiHWXkiY1l
k/2asjyXZ4PDl+7JAqNjyGJ+AyGbAiQA8eax4MW6Y7VcE7Mm/sU4I8oZkyZLEsckj04fljk5cVry
tPSJmQucC2JmJl6WvCC9KvM6eY3j6pjr41c7Njk3el5Me1u+6Xgz5i/xGU0NRyc1cE+mNppfN3Dn
wfJtMIk7KbUmKpjr790zSlCUJ0qiPSdVDNVFWRwjakMOhgGpvXGc1OtiT28NYXYEfUjqg64hScUg
F8fA6okYtCH7hXVpAc8pdGZl4DhMtlYuVtZIx4rKxdjS9ed/AqioQCzrHwUCiZ6Evr0KUlISkj3S
4W/fKS/Rk9KroK/Xk+dv73SULXht69X1S4bOf23b69fdsf/RpUsffXTZ0tGV8jWhi588Pn1P2Hw7
HA4/s2vTk+L+8C++OoE90/wv560icPn7YL3T4LpoejtYHG3VXJnRqoWkzGirFcrUgm5v7wX6cnm7
vMelP66LKHIYUosyRKwUR6JVV0RzL5LwIf9G81iDxwNGajQ/D3oVe2Up9opT7IUxD6Yz89gcorgl
I9bABOhtcLfGcV6G8GEvKo30mANikLiF0gIXez5E/1ldyt0Ex6CxZwdRUVFqofAWXtRTVFJlQFg9
mOv3OhzOPn379uslTzcMeW3yLz7IX6LfMHhpzq9GHJmOWg6CputEL2TLtP3kxMzgMXaBMdT4O3mu
8GgqHx5Q+Jzcw5bIbIjyetxpiYmOMjfzjNerLF8Gozwe2LKTjGyeZKkcITubQ7Oz4hCSjSkGs1Ee
DMbK6NRUX47HK6Uvx5tQmP/6UTaPUj5zS6CIzWehrGZGJjIXGJuQIFWBwah4L2xWOceCMQmJsiw7
if0473pkbTVAMq//Pah6/nyl8Szn8rg0VViw70BjoOOgcchx0PmC68Us56jYitjJcQtiq+OuT7g+
cW3CUwkfZXyUeSIj9lDMk4ky05PlaefJ9jh+g8MGJ6avCzQKI5yRHe1xORxHsjKSsrIyXFkZmpCu
jCzNne1plA/uGecV3kaRtpdbQFzlPULGRtsTFRZrosLybVBJs+ia1NfAvDxZxUG5gnzkEf2Dsd69
RTgvWCiXS10ekB0oR9y+W027ypPHMeEGeU5yN1LRoLODio6frfzQm8C8AmN1XI9A3I2eZ+EA56hJ
yHOwP1WKyisjM7Fjcm5eP3BQ3759emPWOZyd+vKUTE4CZ+G/7jzTT6Z2/OXmr3bcc8NN94n9id/+
4bVTIx/57fZp2bt2DRk08/CyZz+aveCu++oSX3nr813lO596cM0MbFQFTTE/1lPAewHRsE9LU0Ke
h8u2WGxmie+Y9LQgT5u0LBI8NwKxcIgu/misFvHZ0dFdkrOz9OwuWUYXt98dm5YuKMEHySvLfM48
lSei5+WzPD+azx9KKCwq8hz3HAerHX/e83xCoefZQAEDnBbsbLhT3CXuVW69xHuJ9+pMbWLKZZ75
SdUpV7mvS1rlrktam/mQO9rwaZjjWIdi3XG6U6BcwWMaRMsOYq/XhdyiDxqTrKcdkA9SupwbjEIt
DVTTnWAPMSzWEMMSkcUJNdN9C33Sl8ZTxFfLE051CSxWVFgiUZ01eUps5wnK8+RJtPTkk5wqb0P3
tEbRvz79NXFA9Me54eFgTJOM3tCtUdwZ4Y7AccUfEXl8MlBpsQnWu7PgEXSNRzGLxSuQLJDQEC5i
cQWLl8R+KSyKFVM4+zVZbf5gBnGmwCR/+7wpDTl3L1j+xPYbe41JSoipaVw1f976pIbcz3917ZEF
s6tv2hD+9M2nTXFz2j2rQzct3Za0RV5748ybVq707X1hTn319Pt6ZP/6tsPhbz5mbSEDEstjHIDc
dosn91Os+X3wcWYZt0MxjhLhsMInyhLnyjSUOHcoM8oS7cp0ujimS5lOtXC5lOlUIt+lTEOZDmVG
KdNaFhLKY+fGbo59NPbFWGOMNsb9c11LwPSmWIfmNKJjNCfWQ7f7iKYnaZquuUnGunWndlAexOmg
FFuD0aTriEJHovVGOftJw4gOtsvpjcluLRywsFYhy2D5UqkX0Y2iX9DtDLb393bW5vZxboiXPBli
3Em9SXqg9GlwH1NpYPlwH/OC3BvXKNar8f47r8G8/p7E6EEofOxRy4bn5KBTg7yFPMiFhat7BHTI
g/j4eAw3dPv95Dbfq08ohHh/PRjTq1Br371Q09u1G8RZVIAZECeYFBuMKYytHV8YG8wrjG2fBdq9
kCMEFKMoWzODAtAE+4he3l7Jfq/mFXLj2ZXy/ruef74h3EdMf0jbd2b0Q+FtEGV3n13AcoL1w1zj
YcoWZ4KJiWo4E5QZo4SGUlJieBjPCZFgKrsTlQ6ZoExN6Y8cVy1oWGGxLvHSlqiUxQRlxmDSQdXk
SGzh2M2k0H4S6G03D4nIiovOTk7OSuAlLCZe17Oz3HGCnGlY7JVyqSxKYrEKyRKHtUhMqbPPQsqw
kOnCRTqUruooK824rl1du42JjyQ+E/tm7F8yXVGJaXFdM7SonkbPmANYUDRIGk9idHJCYuKRuPik
uMSkuHg3xE0wkSsSjNsaJ+Pi4oPJIlKpJ+N18RqLIiwvQS9Xzzvds9Cz3HO7R/f8iFBJU0IlTVCa
J02iIZZQSdvgS3hK9KF4cTdmXv/6uL3nEy45LYVLC/FSCSWFVx/VD5XewvxKSOAPV7t6BAywHKkl
SK0+YnElWKcZxyhrc3kDIZOYm5yrYSGi5CQnNMO8sl8n33PZTQ271l+yvvOjt8m3zj45buUdh4Vr
ya0nf3dW1Hrq1j27fXP9uKIU+Y/Hw1dPC5/6wwt31B9jiTIW/JWMdagddZXafqjfJ5TA9UJFUxaf
LYKhBVmyuJPNRv4mNsq19ifKjFPMpGIzG2ETczIYzTanJxZmRJPJiRc5OKvWRGbn7KBbuN3QljKN
9tlJ7uhsQR09nEptTzzZqR7WH1PVipaKzGGPbE+Ovn7U85zNW5XHPc9WMm91X5Auip3B5OL0Yt/U
hMm+BVq1s9o1P6Hat8R1VdYtrlVZb7peT/E6fcyBaAzLDEcZGoPljG25KgALzbGGTj6/L5cDvFzL
8W6JemaK11h3bOQlza6z4AWH9mJvbHURLNZyBUtkuepY41Gc5RHkgWaMBp54kndHng3dINn6BxOz
1azOVoI5Wwna7EZRGGxflDo9dWHq8lQ9VW3/0A/oxVRs1hwwub6pjbLDnkDTTsNax1jzsVe246qL
rMUsvxK7OcVnzFa8oDWXUthzCGdeJ7W9cDhZ00lgTcffnryefnCliKRzy55DO70nrduoBVOGlF0q
hzw1p+HsNa+u/Gv4w/vXfrrr3bP9xt128ZUPbr/h+p36pLj5Pcf2HPzlOzOrwv/6Y93xZTiwXyoe
fXrHb8+8W7mzonHLpieeQI/OwNqWgns/Ny0Kxj3rFjr+S5cehcWDBU1PKfSoWHeNpknuyHFK59Nk
RryrJuoLGgdmmi61IpCFYjk2QOmQ/Gqlv9hzsnLxoLEnj1/sOcW7BQ+6g3XBQq8S+uiNxZWJfXKT
HaQ5nP6+CQn9Zmh714ePl/aN36/d9M+1+ve71t8dTgifbvzLLvG5eAHXmhpNwqxJx6xJJT/11Ibv
pyxIVLVVz1Bi2alMzJ2Ib3vlzldmd54/LKG7cLCS3XnnoqudfXs1k7A1juz0M5Sb4yv5zTkEvSy/
81VAnjJVaeDgoWXtlSS3krM7Q7lVcnaq5EqjzlcBecq0JmZDLGVm9+CFFfsWWdajR0JutsPonJ3g
zmaNAscF4HGsrbAE4llG8NyEhStmWVRgfBrUwxNqC6gsHAuWyJzWOiRjWZJlySrHZDWnkyNzmhcM
cOa5wwcsG4HjhVDQI2cQT6qKqOMGrggsXJEP1VkEW5RfpHzeYqLYM8H2HJGL5WnDBbLJLT3XPluO
oCyBGqgK2JTFSr8+KaJLyqiUUXkfx37W04jqiWuhG8VSfYlrccyVsVe5r09dR3Vivb7KtSJmZewq
962pv/c+n5jQHuKjPsuXwcTny2fS3Qdl9VgwvYsvlrLTKBbV2NpDnKsJto2WGIHFEiOwfGsJ0eya
Q1Ei6oCcQ4FIpIAdCZaIrAnUxAd92D/HC4r3xMv4RnFHML0APAamS1MCJk0JmLSakCa0RjknmNxB
BXZQgR1UYIeaZHsj7ksOJsvkDRdZMsY6yjip1GWeW+o4w3JG+rAynzuRNaqIrOFdFfZUi2lxRXNx
o1a2c4bIy+vTm6VMM+WZ4JOYlGKr2g6tuQAS8xdd9vGhw58vuHz1reFTb70VPnXHpasWzL1l7ew5
awaM2jBpxY5dNy1/RMvssmn+1rff3zr7F126PbvmKZOEOHz702Ly3JU3T5+5euUZc+yGcQ/X3rRz
B6+HrG/xzM7Gerh1P46iPg36edIkq0mSrCZqJ2X6lelUHYdFIjKVU7BORY7u2rEtWc3NTsr0K9Op
VDIrBc/hFCXXsU5ak9sK4CJT1BzlgGaHDk/G5EA56eiFanJK8TzrKGoFg+VEsDMzeJpXcbhXHb95
07zdAjGds+PjcuLGxWlxcUk0XgjBY+v24FBCsH6EhddQg/dsoLIAM67yeIEaP0wAno0eXmnffY7n
oNqSNqvEOY0v2FWpfHxSJssuUGrLsloVhZLOFRTsPSBjTErQ/9OUS/yztctSLs+Y478+48bs9Rnr
sjenPJrxVMbnKR/7TvkSf5KyJWVXijagS7VDdmJt0Y+5lZbrc/g6Z4+Lm86qYRY3T7w23lq2G7gS
OfYcg8WaY7B8qxTfnAOikGIisyuGu5lHCRYrOIZXa29LNXFDN9YAgqlQARQ7dFTzqKOaRx1roEtZ
B1o+b9ArvRsia3VkHmGljsyhyP6zSUm0V2qqXCwqm50MnpsxllY4WPbp3YlXaVDC9MHtJR8X5gl1
YpGsZs+iXSlLZ0y6cXxf0ffg5fvOCOfztx+/4fp/bH/8bfnSQ0uurX906Y3bxCTP9VeMWf7nRbFp
UxYI15/fF57N4b+Fvw5/Et7zq0Na73v3PXvfeizV6EYcb6dvHriZ2k2PH/SNK9MFD6Ltf+vUlelL
4wfu+/6Js3M85IqFMwrxOYVK5xwcvpiGeej7J76/Hmf6lr8KZMNd4Yh48R19BCH5J/qZXkPJwChn
O7rGmELlYjVNlTtpKUNrR0H9cboS8XfCPQT0AKdF/DLgfWAQMAXIANhvLDADwBsRKkPc/ZwWeSzi
fBStoamuHFpoTDHPoryNxgs0G9gC+3b9b7TDUUiXw/0g0h3SifpxHOS10bGTNsH/PoTPhN8W0HK4
t8E+Del6RuxRzlvxzmkKRQEO+HdBPusAbnMn7Wnqq9eYf0VbKpDnaGAVyhgPOhwoRZxE0KHAavEC
rREvmNsRDko3o/zV7A8UR+hI5HMLwouQrgP8boY9A/VwgMYDuUBn+TgVyiR6CjQf7b/Eajfa/gLN
RR23g1ptQluQB9fph7DqWIqwJqDMXwN+WWh+BBqFMLtuXL/muBnu5hil9aJa+C0AMoEJ8ihdro8h
gf66x/iINAY4j/vpPeAnejVdDLdAn08yGmgzu4GxCjXmWf0+2qqdpP4Iu96xEe2oRn/jME6eonz5
d+ru6EjLwV/FyH8FsAV5fqr4oZomo/weiN9L/0jx0Cq416Osr+x+4vGGewXGdSLG7gzshPSTgBEY
l1rgMqS/GOXnc5/zuIsp4ULE/RBxpjHgn6oAPkdf7ec0nB55dYzw4fZzlLYjzq3o12OgOpDMdbCh
+Iz5DkDY88gnHXAA7YAewEfAdmABMAAoBTqjXYRyNdSP61PEvAnamXnDeAF9iLopnrXasAXu1ZE5
sy2SF5eT63icFkSQy3miXpeDDkVddtt5o26zkfd4myJ8uL5A8f2X3E64RzdRzD39CxrBdUD67Qgr
tSnsG1Fnng8bceWwBnQz+Phm5Hsf7Kttyn0DdzHcXNdbInSQXR+0tSfq14GpRuTncMTnfBS1+6KJ
zqUHkWeV41LIlK00Ul+Cdyt30KX6CSrWulAPoyf80B60MSS/oIkuvGnBWI6D+55WdBP8NjnfEPOh
eWzRH4MMeoPuR78u1t+Q7fU3hGE8Zn5mkHjReEwuU/YfUIRznCaIw1ZcpozmYZzHf+PfPO1/apdv
Go9BZj5mfm68YZpoz508J5xfiJ6Az6bwrwdqga6ugNjkWiAanbgWchCdBBbqQRpgBKkfLkuL9GTI
ecwF+JcZf6VD2q20Vn/DfEvUUq18g1Y5k2kG3h7Fc1nyTbqZwfmDLmrGRy14zuah1tTm19YUvPBg
hKdyQB2Yfy9H8CEo4xTwDfioFDyZjvr2Y/mM/DfCvgZg2QF+Nb9HXhZ/vkgPwW+dzZ82Zb7jOdWK
P2NtfrwQVWsL5DvSsYzPRT3W2u3HGAiWcShjEvh4Beq5347fmjZLXyd3go9ZDh+lqZF53R6UMRp1
/IDrCUAOY7wvMU3HcPMRR4O5Q0swdzgKYP8zYJiPoN3Xcl24P4xyMwzK62kXtEWtpZY/xdjrqNGL
Luf+4HCEbdG/pp8jfk/YuX1RjidouXEa4w4ZyH48D9UcRH+i3Qv0KvT5ZlqPfkjXVmM+wh+Yxn2i
xoIojdcF2DO0uyHzeE26lW7W/gJ9gdP2Iq9aL4roEtT9ReVXg3wQ5oCfcQltd3xBBXoZZO1hqkYd
pqEuh7g+yLOf6ypyu5IhJ96gi/Deb5uRTNGIt1X1QZAeQfyNKi0Oe2Hf7pxJTvDsxYjD+W1TaYKU
EOkPljczrfTQRVh+cl8gT0cyTUT6KOMLesDAq13MoW3OWtqGK1bCvNhhBOkhpCvjuiAd60Gj9bvp
p5hfayCb1kDmsL5Uakw1T2uPoT3XQq4DWi349TFKM2rRhwsQj/vHkrGr0b7x2k7KA8113I01n/WJ
u/G2L0AljgV0K/xuxRuIzih3HfxWYv72xNxdi/Q8d1hHIJS9Fv6ctghjsgb9FsXzxRmkREet0gdI
1QFlcPnaZ7RNG01rwMdDXHejH2/BW1ESrEdmA1jNGcq9DHbGegvKj1VOxBW5moduZH/Zi/6IA50Y
3BPxGrpfX0Hz9ClUoF2Eueul7vofMFe/o3u1eJquH6F79UZaz249kTpreL2iNUC3ZP9XsKuCv/wj
3Jtoqj4I6dfQFfp0qtF2g/dep2h9NsYa6YzbwCcdkP5r5BuB+BtN1aZgbq2ie8V35uMcT5XRYF6i
AfpI6q7ScdoIVF25vuepsyxFq0ZjTFFftreoL+raVE+7juepn2on9wXaye3Q7+Ubc7xoJ7OjRcMT
JF5lA1vl2zQMb02vEzvMA+jX4a0wsrlb7yOWAj30PvQksAL2bqC/AZ6w3NDd+uBFbh+6BXk/DbqH
9wUMOZT6MoXfFmAT8JId1pxyec3d57MbmeaB5v7GXqw1gDhpHmA0D2O7vgJ6eR/gJ+YBBnhxNMOx
nJKcV1OS1gn+2UjXym1kYj7tpQ4amf9qned/40abejbrx2DzNtrjAZryH4DHkOMx9THFXBzN6/N/
U5//ibgY3+VAJeelf0nJFg9RnHjTfEfsoCniTfJoV4EHAbi7w51o96c9TvC/S/m3Gj/wCo5qzX+1
HtfW7tbj+mNuuYemN4fNBzZ13EmDGXoR+AFo7Xa9SIMZjucQBrR2648g3b/DVOqqbWZeBA8yz7Vy
O8ZRJ4bsYB6QGZwX9Gqgyf0K5BrAaVV6N43QAZ67DNmA/RrQFN6HSsD3JXZ/8xzkftU2W+nt8bHH
xaZ2fNQvqL9Mo0DzQAtBJ4GOtqnNR8zPzXma/Vv7wa1kiZ2meRw7LmgQwFrzw/TN0/2/YMfcOQK8
ADz/v90eQeBVwAM43oEeUgQ98g3oKT/Fdx/oLGTJmXzgYaLwZNA/wQ8rfLgL4IbdC785oPcTnf4G
9ivh/4YFU+qZtDWiV6bDb18kLUSSym+Slf7074i+PwngEIrTn8Y3PU7Ph/0fANbz0++CPg26CfE/
Rz4rQX9rhZ+dDvfVwFNwfwH/y4By2DeAJoN2AxKBBKTfyGB9xNab//doy70sdLgWe9sfc0NnmYl6
5oAeAF1q7x3+a2qP549Q6I4t9sT2+P8YRTvUXuSH1NrnY8/0AfS+kF3v1uVcyI3xDDeHXmaehU4Z
y3o067KsPyv9MUKRz4OWHotyiZJw/qIo6hXF+ivrztBVS0C5nasdhjozKEO9quAuNiL6QZMshVwV
J2kL4AEyI3QBZN93spP5MuRQPNbXb7A3epABdxwwxYL5CtaueKx1hyB3vwE9Cnc70G/sNU2LrH02
tWUr18OuC8vZ/233j62J/6fhWE8LImixtv4bfztef8RhjGLYa/D/X9p6rf4xd+u1u7W7aR2/wBrd
fJ1uvW7/t257nbdp1GAqYDiD5gFGa72UdYAWesCPuFun/z91s87RXO/4r92t9BLWUc6HJj3EDm+l
xzfpMxk4A7DRat7Z8+8/pby30PdiXkZ0f7sOdvrW/rYbfVrSHJADnSHfeA3dDjkC/d9sB2CNwrfy
KLzMdYYKXLuoAO69ANbN8HHQag4DfUDcyufb+FYyhW+C24PzG46LdU+hujV//4B/W/Et6+dKP4QO
yG2SG3ivRPnAQCAB2A1cbvMG7yFR9lsSqy7vdfWp5jf6y0ArHfBH3X1wFtqHdiFePHTHeL2Gkhxe
SjJwhgL7KtBo0GjI9wlA5IzPPOu4XsXhu4rhfD4LOX8Fzldw9mU+C5l+uR6meGesuke5GWtoDsLV
OR3W0mSsB2lOH5+XmI1Iz+dzVY6vofdcAr0nitcOlIszKWAB4o7jsymcJBQjHz5DTorQnnw+xeuX
owd5EC8XYepMXdG/4VxoGs5UpuF807qnKuPzF+0jdVezms/dtYvpKT5jR36h6J20JQpn4a5qGu5a
ru6bNuJbqjfD7z7nbbijCaj7lTJbX0Hf44zNWmOhTNlnf3wWn6HajzN5u81wq/Nxm6r6TcM3R3Ee
07xcO51rONbSr9U5lHWO2frMvpUugzW+DqhGO3DWYp6yy7Ep9xHOD39vUdw7WbrG1RF6M+pp30lY
5/TTaIK2DPtB+0z2YdTnTdwVrgIifWy3HWmVXmWXhX45a9tbU8RVugr66BKAzwz5zHYVxi4RsO/h
+C6uzPiMeLxG8ZgZbuzz43n8zf0I4/uIoThDG69LnAV9BVhnj+p+DvyVDlyC7/sWyy2Yo1dQEtw3
63epO7yVOO9jIK75sEp3mRrXYsck8B7OHXGWVIy+wt2RDZyV4E7DgvkhztjqFNS5mrldJpm4TzKv
lC+hrEKKV7xZgzqtx90Wn3OeuxNM0zvDH+d2+mQA4w9cB3cH1fYIVX2Gs0O0d5RqI5/N9cA5E5FL
G6jOCUfaaZxP0nCc5w13xdBwYw/OQRZSB5wJdnBkYexG434lHuetH1C23p9mal587xsQw82XxReg
0NQZ+L2Hau0t0Dvg5rtf3Amjv9S9GijOp+m0whHoEQDmC9/lMmYx5E6Ri3C+J6yI2PkeDHb4FdI+
BTuPnfjG9jkgnonzbfO0/DnKHkrVshFlbEVdUA7OETe2BtJeGkFnUC5nhH4J5EpLDIO7BZAPu/Nb
A/7s17E1Iv4Z8G8B+LN7aGvAn/1a1+NC8S5Ujwv55yHvFkB57L5Q/v9pPVrkyWVE8vXD3gLwZ/eF
6leKsBZAfHb/p/Vo0cdIl4H07NehNeDPfheqx8UIawHEZ3eLekA+YR8bfh5708dB/4z1mtf7z0DH
gIL7ws/Cjv2FOTviRhwV7xfw2wTcA2CvjF/rsFAMynvg1aB/B7BPNyecQ/hF2LOwL8E/uxzzLvh1
BbBf4bI4bfgggLIVImWG98CN9Gd3gWKP3sKdAvfHSI/yVNmoRxhnxKYf2Bxp35pIuSH4oe5hLjcS
P4w6cRtNTodwG6YGv4lInwM66RzC0IMY5jOgvwLeAV4AuF5sz0YY9wnaHsbvUIRDmJ8RuUDf465o
kV6Fc9AeONPF6QJT/QYao2TuK+rezL5DXqTzWoC3IEremZB9g6jA4YYecj8NdUJvYBluzFJr6jqj
GmsTfkICawvf5y3Qj5GhP4c3IB/hXuEK3Bfvw/nxCMhblKHzvQzy5nUXcrZKW0tjgfG8hhl8J8R3
J7ibiW5Q+osHcZL0T1Dfe+iQsRdnFuV4I4GqO3vAvQH3VNvoWuMGut51OR3Cr/qsgf4zG+tVjmM6
FRo30UguA3kWOy7H/VEs9IIIdW2imc5u8N+JL6t+TFlRq6HXvYpfwqFwP7tsrL1K19KdlAR/HrOn
0LfMf8CZADBG1Rn1NYK4EwtAH+N7PL6Xr0SfVKv6XIz6FGCvrmu1uAf7CvrRKOrsjILulU9rotJw
NnQK7XDgTDWg7uWtMvmeHvdPzjl0kbGa8uy9u+ND9PNk3IlFKGT7Ifs8ALrbNn2u0hcT1L1W5DxA
6RBYw5ry4Hc8uPMCb/Q4p0O01KN4PHgs7DMCuwz0r9UeUF4/m9rPY4d+UGsn93ek3xE+GndgAQP3
eBi33B/QyJmEk+/xcJeGflT6rPMQjXZqWFsfptmOVXjzMhZjkUiTnM9QgnMEpbF+5nSi31jPhR5i
fIe7wkn4zR0yh2GceL5fA/CcGwHwHF8Cf5zbhSFz+B/PL/bnf+x3FvOV/5k4c8OvgZA5zwrnMHO5
ZT/7FSjyV2GIw//OYh6a67F6SuRjn9e8Dzug9iE+9j/Xz5CFlm7dkjbp9Yp/hmPMmI8uTFvpn/Z4
taY8h8EjiaqfWB+29ckf0rtQHuul6g0A9Lz3MUfvRFofwPfRau/QmiINnyUus6jSDfn+n+/8mf4S
82sT63qtKcqx9OoL0GZ81EJvt/1RD2ue2VTp103vXuz3Lz9DOfzOIA/xlX79YxT91fROBu1W72XQ
F2bEP47zQ9ua3s1c0G2duWWgPD57yzjP+wPrTM4+m7P18ub7J9ZTbTdkCuqjoTwHzyPUYTT6fa3O
b3P+DZjvGI6bwAMtMQXuKfye4HxwYCVhOC9rCZTLbwwuCMftSAfgfWErmP905Zj/RJ1XWDDvBX8w
vohgO+h2TWAvDejQhVvC/Kd+BwDZcj447ke5gKu7BSckAENn/f/fAH1ATsxgV4KiDl4L/y2moxzA
CUmgsA5UwTSd68AnkbGw+9TuK7TtY7R7blPdI3Wyy7LTXYj+2Dja5VyI/ti42PW4IP0P232++tt1
b04xJ/mN3tkI5bd7jvPVncdH4Z+gAPifz5oTI3CgXw8CjwFHIrgL9C7MlQzM22+0WeAnoHmaH/AD
3sTwuxjbH3OW5Z3D8THGNg3lYh5gj/S5Bao4Xx85UQbzn7MTKPpKvduxdK+P0C436s1vbGezLATt
EDUeb1isd7I5LFtwfsHnJj31p2k21o1mOp85CXyD/TTewQbIQL28xhLcd75k/tK4HjLhhPk7Yzl0
AgBtXBnBi6CMrQD2geYToPwOEm+68B54Jz3aHNjbZjM4DsquAR7CmvVnUD9wpYXwJ5b/ubqhLkoG
a99C1ztN6ep9aVDtr8fr87Cnn4e3IV/gnQ30H7RhjTaDhqCNa7S+5DGgf7C+gL4phl+i/h6oBTf6
Zby2o9k85/c1/K4GUG9yeO48j/sKjg+K9Pab385clrYA501/wb3RF4iHMKRbg75byW+dWC/StmJ8
xoEvJiDuBPMP2ibQkRF8C3oF6juF5smVuEeejf3wq9DfkuG/GFgIexpoPFAB3AdcTRcp/9Pgk+8R
H9B0xPs9qIG9vQG/7yJYDwpwuNpv76Nq6MTVyM+K94ZKw+kKNAfOCH4LymFDkR/iyTtRb2gUWnLE
7kD4LcjzkLV/FzhX4Pgqnh0n6lwc4zgNj56N9yOJwFqc4Q7BGedneNczlbwYXzfQB2PP+yHeP7Ae
9QqA3jK3wH1ERt4HNN1B2PfkEWrsonnGT/Ce5yz0hXewhzhGg4xTdC/uUzs7xmM9w1kf8hkIgM/D
s/k9MfhuknwDZyKRO3qbOsopOeo5nC9Ay8L84PMXReVj6GfY8Ztv/K6Lz3xIsPYGf/7Hb6cjc03p
uc5iuhnzeDiAM1L17pt1bD7jjOa5Bzu/W+2sP4Rviio9jvdQYfSoyfNhEmRD09kr8p0AftrGvIUw
1gWR1Hwcb442gvbjNwlyPL/XUml/CgppYC4DcMJijka+92EfY99vbcQ588ZmbvU253/a/WP3VxjT
FvdT9ti2Pj8Hj/zbtxmtw3/0jqfVWyL7XF292zjPWyN1Nt/s7UZrt30/Yt9H/Ki71R2N3W6b/qD9
NSbryMOxrhxy7DTfAO8+CdwB+Yo1ycQe2DQRtl/xUg2txXl5NZ/LO0ZRB0uGq3PSbKwz2Tib5DP9
VVZ+OCtswFkSZCPk/BleI+DPOtZq5Hsa/kVamvoeRAbs/L2GzgjjfRKf3w4HSiH3rHPa3lTGshZx
EtWawd87wD4N8qZaQrbIF6mXxL0KyyABN0Asi9S55FCsMzgDjCBd4nQkYo/CW8JqnN8qaPHmi0om
xVkySyPkh3NDMRRrsCWv2uGuSckv+boli+R7iGPjJOyf810N76fVnhqzOPyoWptYfkJWKpm5FXMb
dt678LxFO+N5XkNeDDmfntHcD21n3ZL1guaUdQV2H7TX+gvRSFpOz2l+GD9yx4O1JFGtyS/gnW85
xcCu9s3o/15It934WJ2RjES9WQeJR7ilv9vn7WqcMEbW3b5AeIt9Ad/n8NgaeCfLaxf66Xng9WYU
8iXMMobXae7HT6CPRmPdHcM8gD6LBj/g+0XmyUg9ef+SDj5dhzpZ770je7umvQbRQH0LPajNwZkB
3vkj30kAj1U4ggdBH2Q+M/C+G/ncxxR+RxEP8XndUGvIc6CvAn8AvgTeBN7BnvktjGk56jHS3hcZ
D/D7gfB+A280sKZHucZQuuOApa9otXQln4sz0KZ7GOCVUBPw/Q8lx2v4/Eb9A+fS/xDkVsyQh6HV
tcfqU45jLsjw2J2Yhr2BY+jiA/zb0W1o64M2HmjjgTYeaOOBNh5o44E2HmjjgTYeaOOBNh5o44E2
HmjjgTYeaOOBNh5o44E2HmjjgTYeaOOBNh5o44E2HmjjgTYeaOOBNh5o44E2HmjjgTYeaOOBNh5o
44E2HmjjgTYeaOOBNh5o44E2HmjjgTYeaOOBNh5o44E2Hmjjgf9reEDwX7Sir/Gr+feTE1/Hxe94
8S+/6o/H/IYMkvtpstZ5T15azqtP4c/FHAOk1qU+0C5nv9ZJa1c/MCfYqPn3JCQXxA/pju8zC8pX
pg/mQuAJ4BCg03QtG6EemMuBWuAJ4BDwKuDAd7OyVagPdCHwAHAMcGjttKx6/P35IZ20dKRNRx3j
tVT6CjABDd8lT0WpqTQOmA7cDjwAOFQ89lkILAcOAScABwW11Po7e6HuqfXrFNkz/7IC5ZxhOadV
KueeSyosOnaCRYtHWdEGWNEu6m159xhq0U7dLJrQsaAWme+JdhccHpKipaCRKaj4IphCPouf0xWU
gz/0lEwhQOIL4pZPUEvY0yGv4IFD+Cqn0CR+QKOacszDmqh3ewuGREtTfkUJ+EL8l/K4FSKP74nz
FjwwZLT8gJ4ADgGa/ACfv8q/4lfrj3GfwywCHgAOAa8AXwEOeQyf9/F5D9/ojJfv4i9MvYuY7+KX
499F7HcR+13EfJec8l2YHvkOciNlsr0IkPIdmB75FzTrLzDj8TcWhHxbvm0elq/V9yss2K8sgfyI
JadjxJKaGbEkpBQ0yj/Wf9cFHJWHkQZHHdTa02DqpbWv73hRTqOWVj9oXk6j/NseXyBn65Ce+CZq
CJCoyeso+XX8rs3r+FsRr1MVsAhwwIa/pgPUAhuArUAIAJfB9AA+/C6eT/4eeBO/E/MmBYHxgEu+
Wo9iGuUr9XlDc4akyJflC/gDqjnyqPydor+Xzyv6knxO0RdBsxF+RD5fn51DQ2IQTkjjAfWA5iPc
kE/v6ZCQYw7x4tv9GHiY+UARMA6YDtwOOOQh2b6+OicBmRykIy5CzHr6TNGHabuLgvNzgnnDwIA+
NvIG/AQ2GA/4HsiTwbyN98DJRt5td8LGRt7K9bCxkXf9CtjYyLvsatjYyKueDxsbeVOnw8ZG3rjJ
sMFolFue7NApp9+4BcI3JF5eg166Br10DXrpGvwy5jX8oe/wDc4ceW99167osc3BQJeuObUHRO1T
onaiqN0uameJ2mWidoWoHSRqfyZqA6I2S9Rmi9qgqD2IP3sv8NOIwYYWzsJgmqg9Imp3idoaUZsn
ajuK2g6i1if6BRtlbv0ozDqQEkX2DOFJJ3P3/GQwpE+8zEWP5oLncyETDsF8BTCVK4hIvvZW5PRs
pu33dC2y3D0GFCwcMlI+g4TPYBieofcBHQP0DNjoGWTyDLKLh1kETAcOA18BJuBA7PZox+3KjIeZ
DxQB04HlwFeAQ1XnK1RF0kKYXMUnVMXyYRYB49gln8GnPT65MjfYzpPlCXhGardnifhsMS7bzJb9
KCUFX4dN8Lq8jcK971/ub//lpqghUfI2eTt+8CBHbojQ2+u/a4c/872pPu9gzpBk8Qt8Sx1chz8Y
mSc6gvbHX0lhdx/KcjHtTVn4JYYcUVCfNQXJ4uvzuuUcEHGcal/Od1kf5nyW1Shh/TTrYM6ffI26
qM95Az6P7ct5PWttzov5jS74PJXXKEAO+FTU/Vn9c3YdUVFXIGBzfc4yJvtybswakbMgSwXMsgJ+
VgNXMD5nYt7UnJHIrzjr0pxgDfLcl1OU9bOcQVasPpxmX05PVCFgWbuisl2yVKH+bJVhWb9GMTfY
zbnRWe4c5+zrLHB2c+Y6c5ztnJnOJFeCy+OKc8W6ol0ul8Olu6SLXEn8J24D+HI8fqfXw4S/0o2/
8aHsHkgYwWIGJknhkjSaQolaqSydNFSUhg7PpNJLfaFTk/yNInrC1JDhHypCCaVUOnloqH+gtNFp
Tgz1C5SGnON/Wr5biNsq4BuSaxoFTS5vFCZ73ZIZShhWjj9aL7y33JrJtPMtt1ZUUFrK1UVpRQmD
vYXDi89jVCnPquJzf2IzkNbC3i60sXRSeWhnu4pQAVvMdhWlobsm+aaV7xdfixMlxfvFP5hUlO/X
BouvSyayvza4uKKitFFMUfHIJ/6BeOAYEMRzZZOP45HPlW3F22zF64j0iNeBCeJFRVFHFa9jVJSK
pwuOt7umQ0nx7g4wECfVRzUqTk2qr3mcIx0RpyMMxEmppSMqzpGUWo4TGqyyycpClGwYiCIyKEtF
yRIZKoqq+W4VJT8SZW1TlLWqJM2qjYrDBrJxH7PjuI8hTrOO/PfWWUPxd8j3DKyYOa1klr+kyl8y
C6gKrbt6blqo9lKfb/fMCg7whbS8qktnzmU6Y1aowj+rODTTX+zbPVClaxU8jYMH+ot307SSyeW7
pwVnFdcPDA4s8c8ortgzYnzvfi3KWttUVu/x5ylrPGfWm8saodK1KqsfB4/gsvpxWf24rBHBEaos
Ujw+vny3i4ZWDMP4Md0jY6LBr1WZuRVDUzyLBivmHZibtizzALSVHRQTqAjF+oeG3ADzdfch3Ydw
EOYUB8XBOz4SlLZsYG4m/o5LJMgDb69/KAWWXFVzFaWVzCu2/tfgH7yWXMVDYZkB9jvvP0QpCQVn
FNfg9wFLQ10nlYaKJkwt3+10wrequAJ+A2y/mJgS/Llby7MHPAdwRE1rish+g9gvKioS8Ye8oOoE
b/TOfigaB/eIYLZYQjUVWii7dLKEKJg8Fd0wbWr5AehSvEjUVKCBNSIgauzcuB3Kjr9pz/8Iza6x
seSqiC3SF0siVMWsCVCgxu4S5cMGd5YyVF8tQYb0/wFAQ65+CmVuZHN0cmVhbQplbmRvYmoKNDEg
MCBvYmoKMTQ1MTEKZW5kb2JqCjkgMCBvYmoKPDwgL1R5cGUgL0ZvbnQgL1N1YnR5cGUgL1R5cGUw
IC9FbmNvZGluZyAvSWRlbnRpdHktSCAvRGVzY2VuZGFudEZvbnRzIFs0MiAwIFJdCi9CYXNlRm9u
dCAvU0lGTEFZK2ZvbnQwMDAwMDAwMDFmNDVkNTU4IC9Ub1VuaWNvZGUgNDMgMCBSID4+CmVuZG9i
ago0MyAwIG9iago8PCAvTGVuZ3RoIDQ0IDAgUiAvRmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJl
YW0KeAFdkM1qxSAQhfc+xSxvFxeT3m0Qyi2FLPpD0z6A0UkQmlEmZpG372hvU+iAgufMp8fR1/6x
p5BBv3F0A2aYAnnGNW7sEEacA6n2Hnxw+XaqmltsUlrgYV8zLj1NEbpOAeh3QdbMO5wefBzxrmiv
7JEDzXD6vA5VGbaUvnBBytAoY8DjJNc92/RiFwRd0XPvxQ95Pwv11/GxJwRJJET7E8lFj2uyDtnS
jKprpEz3JGUUkv9n36BxOrrbixGmdWW/NJX5dQtevnpEcxuzpKrzqIFLkEB4jCzFVB6t6xueenHx
CmVuZHN0cmVhbQplbmRvYmoKNDQgMCBvYmoKMjI1CmVuZG9iago0MiAwIG9iago8PCAvVHlwZSAv
Rm9udCAvU3VidHlwZSAvQ0lERm9udFR5cGUyIC9CYXNlRm9udCAvU0lGTEFZK2ZvbnQwMDAwMDAw
MDFmNDVkNTU4Ci9DSURTeXN0ZW1JbmZvIDw8IC9SZWdpc3RyeSAoQWRvYmUpIC9PcmRlcmluZyAo
SWRlbnRpdHkpIC9TdXBwbGVtZW50IDAgPj4KL1cgNDUgMCBSIC9EVyAxMDAwIC9Gb250RGVzY3Jp
cHRvciA0NiAwIFIgPj4KZW5kb2JqCjQ1IDAgb2JqClsgMTkgMjggNTU2IF0KZW5kb2JqCjQ2IDAg
b2JqCjw8IC9UeXBlIC9Gb250RGVzY3JpcHRvciAvRm9udE5hbWUgL1NJRkxBWStmb250MDAwMDAw
MDAxZjQ1ZDU1OCAvRmxhZ3MgNCAvRm9udEJCb3gKWy02NjUgLTMyNSAyMDAwIDEwMDZdIC9JdGFs
aWNBbmdsZSAwIC9Bc2NlbnQgOTA1IC9EZXNjZW50IC0yMTIgL0NhcEhlaWdodAo4MDUgL1N0ZW1W
IDAgL0xlYWRpbmcgMzMgL1hIZWlnaHQgNjA0IC9NYXhXaWR0aCAyMDAwIC9Gb250RmlsZTIgNDcg
MCBSID4+CmVuZG9iago0NyAwIG9iago8PCAvTGVuZ3RoIDQ4IDAgUiAvTGVuZ3RoMSAzOTc1MiAv
RmlsdGVyIC9GbGF0ZURlY29kZSA+PgpzdHJlYW0KeAHtvQl4VNX5P/6ec++dmSyTzGTfSCYMhGWA
YFgDlAyQsAVkDSaUlCBhVwGDO0JQZAmoqJUiKgJ1QZQ6hIABbMG6VSxq69JqXah1tyi1SFVg7v/z
njs3JBFq+/99v8/ze35PGD7nPfv6nve8Z5kJCSKKolrSyDPz6iW+bVl/+gI+9xE5Js9eNOfy319X
sRn2E8AVcy67bvaco66DRO4qopRjc2fNqD6W9PzfiToEkabvXHgk9EppD/e1cHeYe/mSa6f3OTMF
VuTXp/qyhTNniPw+CJoK9Jl7+YxrFyU0uGuJbp8LD9+iK2ct6vjm2ENwryGK+Y1xgNKBDOMRStfz
KI3I/AT4lGl4nvkphzOVnyN1YwREO2iXmEe76BD9VpxAqidoPzXQ7yiVitGupfRzWk0OVOF3tJYm
4mPA/+ci3WygfNqGfthGRxH3ElpGByhFpJmf0XK6RXsNqW4hN7WnITSeFtKtYox5FU2j9/WbqR+N
oStokag1y83bzDvNB+kh2q/9zjxLMZRBM/E5an5p/Nl8h7ojxd10D70v7ozaS0GUUouY99OVtFmr
1IU5x/weNcila1AHncbSUXFYBpD7LPpEpIml2jDk8kszZD6LWFlUSXNpMx0QfcQImWtMM8eaRykF
ZVyLXO+hetqHTyP9mt4WscYJ80HzBKVTNxqF9jTQy+KwFj67IlyEfjPQS12oECEL6Tf0Ar0q/OJp
udCINQqMoHG9+Tol0UVUhto+gpQfi3/JZfgs157Xh5tDKQ79cgf3Nj1HfxUZIl+ME1NkF7lQbtGu
JBdKvAifapqH/t6E3N8TAbFPxspXtF/qj+mnHe3Cx8w4jEge3Uv309PCjZb6RI24Sbwp/iaHyeny
XvmB9nP9Uf2Pzhlo9c/ocrqVHqN/iQTRX0wQPxVzxVKxWtwh7hFHxaviUzlETpYL5FfaXG2x9mt9
KD6T9Br9ZmOVsc7xabg8/Gz4D+F/mQXmKpoAfliB2t9NW9Cy/fQKvYXP+/SBMESMiMPHJ3JFmbgB
n2XiVrFd7BCPigaU8qr4QHwmvhbfiNOS8HHITJkr2+Pjl1fKa+TP5X3yFXxelX+X32mpWnstoPXR
BmkV2kLUarW2AZ+92l/1DP0V3UQ/FxgbjQeMHcZjxm+NE45Y500ucv3+zC/Pdj37XpjCa8Ibw/Xh
BvOvlIwxzEAv5NAg1H4GPvMx3hvBcU/QayIWfZchuorBYgx6ZrqYLxaLa9GTK8Vm8ZCq+6/EU+il
P4mvUGe3zFJ17iH7yKFyHD4/k7PkYrlB3ikb5Jvye82pxWjxWrLWVRuhVWqztCXaddpGLaT9XntX
+0A7pZ3Bx9Sj9Ry9vZ6nB/QR+nT9Kn2L/on+iTHNeMn4yBHtuNyxytHo+Iezr3Owc7xzgrPSebtz
n/N1VxW48xnaS0+CA5v+iWPaCq1E20u3yV56unxZvgx+nk7V2lgJTpU7xBp5o2iQHYxrHQPlQHEx
ndDz0NfPywfkKTlQGytKxSSaLy+yMnQk6TthG6Q/Q8f1p9C2l5HztY5YsUx+5YilekGykEg8p/XU
A9pL9Lb2vnDq2+gverRIFcflI9p4cMGv9cFGOeVq99GvtMXiRtorS4iiT7vWg48vFjshFyaLAvGt
ZpImLwYX9dP+RjfTAvlnOo55vIZ+Iar1OXQb9RJL6RN6GLOii3GFo6sjWbwo5+l1MlE0kNQfResK
RQehGUm0UlRqmx1fybfoKnpFj6b3tMdR+1fkr7Sx+gljopiLGXAjraLF5gq6zijX/yjmkCamUEf9
GKTbUq1AzwVdDqkyDTJtH2b3AciBIdpY+KSBc8aAL8ogITbjswlyQgcHzcMcvwRS7GVqcEyWjTTH
iBOQOkT6S+GJNNV8mO4x59AV5p3UHfJgtbkUOe6gj+h22iFuCd9AiygbM+c9McYYLl8xhpvdZZ18
S06SG1uOL3q7o0ijz/H5FUZmsHGQ6vQ/0SQqMtebb4C7O0PC3kOX0mj6EK38EiWM1A5Tr/DFcrc5
XFuE9r5PE8xHzBwRTXPNy2gcPUUPOQ2a4QxgjEPij2jvDTRLTjSXaLPC89APt6MXguitqyB/1gaH
lU0eEiwa/JNBAwcU9u/Xp3evgot65vfo3i3QtUvnTnkdO/jb5/pysttlZWakp6WmJCclJng98XHu
2JjoKJfTYeiaFNStxD+8yhfKqwrpef6RI7uz2z8DHjOaeVSFfPAa3jJOyMfpZiCoRcwgYs5uFTNo
xQw2xRQe3yAa1L2br8TvCx0t9vsaxdQJ5bDfWuyv8IWOK/tYZd+g7G7Yc3ORwFeSNrfYFxJVvpLQ
8Kvn1pVUFXfvJnbHRA/zD5sV3b0b7Y6OgTUGtlCqf9FukTpYKItMLRmwW5LLjSaGMvzFJaF0P5Ii
G61jyYzq0PgJ5SXFmbm5Fd27hcSwmf5LQ+QfGooPqCg0TBUTcgwLOVUxvnkhtIbW+XZ3O1y3vtFD
l1YFYqv91TOmlYe0GcijJOQNoNziUOr1H6adcyLzhGHlq5uHZmp1JWnzfBy5rm61L7R1QnmztJm5
nENFBfJAWtlxeFXdcBS9HiNVOsmH0uQtFeUhcQuK9HFLuFVW+2b5S9inar4vFOUf6p9bN78KQ5NR
F6KJ1+XWZ2QE95vHKKPEVze53J8bKsr0V8woztqdRHUTr9uTHvSltwzp3m23x2t17O64+Igl1t3c
MgudboUpm4rOttKJTT0ruEb+UaEgOGqmDzUp96NN/dmY1Z/qZvbHAOBfhUCqUDVGZF4oalhVnWcA
+6OJImR09Ph9dd8QOMB//O8tfWZEfBwdPd8QBzKfNLFaSMyw7aFAINS1K7OIcxjGFHUcrNx9une7
ulH6/Ys8PhB0H41H386oGJCP7s/N5QFe1xikS+EI1U4ot9w+ujSznoL5gYqQrOKQw3ZIchmH1Noh
Tcmr/ODkBmJ1NTnkymv6H+9JSSyZOyAkUv5N8CwrvHSSv3TC1HJfSV1VhGtLJ7dwWeHcoeg3hEVs
ocRh5VqmhB/bZKamQsGU06Y2RYGjPDakd8R/h2Lq6kanC1ypfIRveMhTNdIyK6JzcyNz5scSNZon
OJUi55JFmhEaEIhU1Kp2aGALd4vqxdZppZMhcmTp5Kl1ddEtwsBqVi1HRQg4niaX5/qGhagMM7Mj
/jeah/szKjJDQXQZQiZjFinvisyIs0XEzEiiCvxj7uzebThkZl3dcL9veF1V3YxGs/ZSv8/jr9sv
fyt/W7eoBNLOYpxG88C6zNDw9RXosbliAKaHpKG7/WLNhN1BsWbS1PL9HuwV1kwur5dCDqsaWrG7
A8LK9/uIgspXsi97chQfO6hUoJH10qXiZ+4PEtWqUF15KPfMRkHKz4oEP0EzG6Xl57HjSfjpll9Q
+XH7WMYMm1weGRbFMzz1wEOERZ051sAHGruTKNeb6+0IQ2DRPePTDp8JGnSafPphxKQy8xPdaxwm
D7WT8UF3fGxs7NCy+NiYmKFljkbz06CX3UYau50eNjPZN4ZtViy4TwZT3O6hZVkONuNj2XR62NyN
fplcHozOyNaNpGy3OzUKiRvi42UZW4LpbjdsXoplH0qJjYWJ1DDzA4HAURhHqeh40fGLembudvww
p5PIycE5fdzgdivLl8H0mBjYvITiHWXkiY1lk/2asjyXZ4PDl+7JAqNjyGJ+AyGbAiQA8eax4MW6
Y7VcE7Mm/sU4I8oZkyZLEsckj04fljk5cVrytPSJmQucC2JmJl6WvCC9KvM6eY3j6pjr41c7Njk3
el5Me1u+6Xgz5i/xGU0NRyc1cE+mNppfN3DnwfJtMIk7KbUmKpjr790zSlCUJ0qiPSdVDNVFWRwj
akMOhgGpvXGc1OtiT28NYXYEfUjqg64hScUgF8fA6okYtCH7hXVpAc8pdGZl4DhMtlYuVtZIx4rK
xdjS9ed/AqioQCzrHwUCiZ6Evr0KUlISkj3S4W/fKS/Rk9KroK/Xk+dv73SULXht69X1S4bOf23b
69fdsf/RpUsffXTZ0tGV8jWhi588Pn1P2Hw7HA4/s2vTk+L+8C++OoE90/wv560icPn7YL3T4Lpo
ejtYHG3VXJnRqoWkzGirFcrUgm5v7wX6cnm7vMelP66LKHIYUosyRKwUR6JVV0RzL5LwIf9G81iD
xwNGajQ/D3oVe2Up9opT7IUxD6Yz89gcorglI9bABOhtcLfGcV6G8GEvKo30mANikLiF0gIXez5E
/1ldyt0Ex6CxZwdRUVFqofAWXtRTVFJlQFg9mOv3OhzOPn379uslTzcMeW3yLz7IX6LfMHhpzq9G
HJmOWg6CputEL2TLtP3kxMzgMXaBMdT4O3mu8GgqHx5Q+Jzcw5bIbIjyetxpiYmOMjfzjNerLF8G
ozwe2LKTjGyeZKkcITubQ7Oz4hCSjSkGs1EeDMbK6NRUX47HK6Uvx5tQmP/6UTaPUj5zS6CIzWeh
rGZGJjIXGJuQIFWBwah4L2xWOceCMQmJsiw7if0473pkbTVAMq//Pah6/nyl8Szn8rg0VViw70Bj
oOOgcchx0PmC68Us56jYitjJcQtiq+OuT7g+cW3CUwkfZXyUeSIj9lDMk4ky05PlaefJ9jh+g8MG
J6avCzQKI5yRHe1xORxHsjKSsrIyXFkZmpCujCzNne1plA/uGecV3kaRtpdbQFzlPULGRtsTFRZr
osLybVBJs+ia1NfAvDxZxUG5gnzkEf2Dsd69RTgvWCiXS10ekB0oR9y+W027ypPHMeEGeU5yN1LR
oLODio6frfzQm8C8AmN1XI9A3I2eZ+EA56hJyHOwP1WKyisjM7Fjcm5eP3BQ3759emPWOZyd+vKU
TE4CZ+G/7jzTT6Z2/OXmr3bcc8NN94n9id/+4bVTIx/57fZp2bt2DRk08/CyZz+aveCu++oSX3nr
813lO596cM0MbFQFTTE/1lPAewHRsE9LU0Keh8u2WGxmie+Y9LQgT5u0LBI8NwKxcIgu/misFvHZ
0dFdkrOz9OwuWUYXt98dm5YuKMEHySvLfM48lSei5+WzPD+azx9KKCwq8hz3HAerHX/e83xCoefZ
QAEDnBbsbLhT3CXuVW69xHuJ9+pMbWLKZZ75SdUpV7mvS1rlrktam/mQO9rwaZjjWIdi3XG6U6Bc
wWMaRMsOYq/XhdyiDxqTrKcdkA9SupwbjEItDVTTnWAPMSzWEMMSkcUJNdN9C33Sl8ZTxFfLE051
CSxWVFgiUZ01eUps5wnK8+RJtPTkk5wqb0P3tEbRvz79NXFA9Me54eFgTJOM3tCtUdwZ4Y7AccUf
EXl8MlBpsQnWu7PgEXSNRzGLxSuQLJDQEC5icQWLl8R+KSyKFVM4+zVZbf5gBnGmwCR/+7wpDTl3
L1j+xPYbe41JSoipaVw1f976pIbcz3917ZEFs6tv2hD+9M2nTXFz2j2rQzct3Za0RV5748ybVq70
7X1hTn319Pt6ZP/6tsPhbz5mbSEDEstjHIDcdosn91Os+X3wcWYZt0MxjhLhsMInyhLnyjSUOHco
M8oS7cp0ujimS5lOtXC5lOlUIt+lTEOZDmVGKdNaFhLKY+fGbo59NPbFWGOMNsb9c11LwPSmWIfm
NKJjNCfWQ7f7iKYnaZquuUnGunWndlAexOmgFFuD0aTriEJHovVGOftJw4gOtsvpjcluLRywsFYh
y2D5UqkX0Y2iX9DtDLb393bW5vZxboiXPBli3Em9SXqg9GlwH1NpYPlwH/OC3BvXKNar8f47r8G8
/p7E6EEofOxRy4bn5KBTg7yFPMiFhat7BHTIg/j4eAw3dPv95Dbfq08ohHh/PRjTq1Br371Q09u1
G8RZVIAZECeYFBuMKYytHV8YG8wrjG2fBdq9kCMEFKMoWzODAtAE+4he3l7Jfq/mFXLj2ZXy/rue
f74h3EdMf0jbd2b0Q+FtEGV3n13AcoL1w1zjYcoWZ4KJiWo4E5QZo4SGUlJieBjPCZFgKrsTlQ6Z
oExN6Y8cVy1oWGGxLvHSlqiUxQRlxmDSQdXkSGzh2M2k0H4S6G03D4nIiovOTk7OSuAlLCZe17Oz
3HGCnGlY7JVyqSxKYrEKyRKHtUhMqbPPQsqwkOnCRTqUruooK824rl1du42JjyQ+E/tm7F8yXVGJ
aXFdM7SonkbPmANYUDRIGk9idHJCYuKRuPikuMSkuHg3xE0wkSsSjNsaJ+Pi4oPJIlKpJ+N18RqL
IiwvQS9Xzzvds9Cz3HO7R/f8iFBJU0IlTVCaJ02iIZZQSdvgS3hK9KF4cTdmXv/6uL3nEy45LYVL
C/FSCSWFVx/VD5XewvxKSOAPV7t6BAywHKklSK0+YnElWKcZxyhrc3kDIZOYm5yrYSGi5CQnNMO8
sl8n33PZTQ271l+yvvOjt8m3zj45buUdh4Vrya0nf3dW1Hrq1j27fXP9uKIU+Y/Hw1dPC5/6wwt3
1B9jiTIW/JWMdagddZXafqjfJ5TA9UJFUxafLYKhBVmyuJPNRv4mNsq19ifKjFPMpGIzG2ETczIY
zTanJxZmRJPJiRc5OKvWRGbn7KBbuN3QljKN9tlJ7uhsQR09nEptTzzZqR7WH1PVipaKzGGPbE+O
vn7U85zNW5XHPc9WMm91X5Auip3B5OL0Yt/UhMm+BVq1s9o1P6Hat8R1VdYtrlVZb7peT/E6fcyB
aAzLDEcZGoPljG25KgALzbGGTj6/L5cDvFzL8W6JemaK11h3bOQlza6z4AWH9mJvbHURLNZyBUtk
uepY41Gc5RHkgWaMBp54kndHng3dINn6BxOz1azOVoI5Wwna7EZRGGxflDo9dWHq8lQ9VW3/0A/o
xVRs1hwwub6pjbLDnkDTTsNax1jzsVe246qLrMUsvxK7OcVnzFa8oDWXUthzCGdeJ7W9cDhZ00lg
TcffnryefnCliKRzy55DO70nrduoBVOGlF0qhzw1p+HsNa+u/Gv4w/vXfrrr3bP9xt128ZUPbr/h
+p36pLj5Pcf2HPzlOzOrwv/6Y93xZTiwXyoefXrHb8+8W7mzonHLpieeQI/OwNqWgns/Ny0Kxj3r
Fjr+S5cehcWDBU1PKfSoWHeNpknuyHFK59NkRryrJuoLGgdmmi61IpCFYjk2QOmQ/Gqlv9hzsnLx
oLEnj1/sOcW7BQ+6g3XBQq8S+uiNxZWJfXKTHaQ5nP6+CQn9Zmh714ePl/aN36/d9M+1+ve71t8d
TgifbvzLLvG5eAHXmhpNwqxJx6xJJT/11IbvpyxIVLVVz1Bi2alMzJ2Ib3vlzldmd54/LKG7cLCS
3XnnoqudfXs1k7A1juz0M5Sb4yv5zTkEvSy/81VAnjJVaeDgoWXtlSS3krM7Q7lVcnaq5EqjzlcB
ecq0JmZDLGVm9+CFFfsWWdajR0JutsPonJ3gzmaNAscF4HGsrbAE4llG8NyEhStmWVRgfBrUwxNq
C6gsHAuWyJzWOiRjWZJlySrHZDWnkyNzmhcMcOa5wwcsG4HjhVDQI2cQT6qKqOMGrggsXJEP1VkE
W5RfpHzeYqLYM8H2HJGL5WnDBbLJLT3XPluOoCyBGqgK2JTFSr8+KaJLyqiUUXkfx37W04jqiWuh
G8VSfYlrccyVsVe5r09dR3Vivb7KtSJmZewq962pv/c+n5jQHuKjPsuXwcTny2fS3Qdl9VgwvYsv
lrLTKBbV2NpDnKsJto2WGIHFEiOwfGsJ0eyaQ1Ei6oCcQ4FIpIAdCZaIrAnUxAd92D/HC4r3xMv4
RnFHML0APAamS1MCJk0JmLSakCa0RjknmNxBBXZQgR1UYIeaZHsj7ksOJsvkDRdZMsY6yjip1GWe
W+o4w3JG+rAynzuRNaqIrOFdFfZUi2lxRXNxo1a2c4bIy+vTm6VMM+WZ4JOYlGKr2g6tuQAS8xdd
9vGhw58vuHz1reFTb70VPnXHpasWzL1l7ew5awaM2jBpxY5dNy1/RMvssmn+1rff3zr7F126Pbvm
KZOEOHz702Ly3JU3T5+5euUZc+yGcQ/X3rRzB6+HrG/xzM7Gerh1P46iPg36edIkq0mSrCZqJ2X6
lelUHYdFIjKVU7BORY7u2rEtWc3NTsr0K9OpVDIrBc/hFCXXsU5ak9sK4CJT1BzlgGaHDk/G5EA5
6eiFanJK8TzrKGoFg+VEsDMzeJpXcbhXHb9507zdAjGds+PjcuLGxWlxcUk0XgjBY+v24FBCsH6E
hddQg/dsoLIAM67yeIEaP0wAno0eXmnffY7noNqSNqvEOY0v2FWpfHxSJssuUGrLsloVhZLOFRTs
PSBjTErQ/9OUS/yztctSLs+Y478+48bs9RnrsjenPJrxVMbnKR/7TvkSf5KyJWVXijagS7VDdmJt
0Y+5lZbrc/g6Z4+Lm86qYRY3T7w23lq2G7gSOfYcg8WaY7B8qxTfnAOikGIisyuGu5lHCRYrOIZX
a29LNXFDN9YAgqlQARQ7dFTzqKOaRx1roEtZB1o+b9ArvRsia3VkHmGljsyhyP6zSUm0V2qqXCwq
m50MnpsxllY4WPbp3YlXaVDC9MHtJR8X5gl1YpGsZs+iXSlLZ0y6cXxf0ffg5fvOCOfztx+/4fp/
bH/8bfnSQ0uurX906Y3bxCTP9VeMWf7nRbFpUxYI15/fF57N4b+Fvw5/Et7zq0Na73v3PXvfeizV
6EYcb6dvHriZ2k2PH/SNK9MFD6Ltf+vUlelL4wfu+/6Js3M85IqFMwrxOYVK5xwcvpiGeej7J76/
Hmf6lr8KZMNd4Yh48R19BCH5J/qZXkPJwChnO7rGmELlYjVNlTtpKUNrR0H9cboS8XfCPQT0AKdF
/DLgfWAQMAXIANhvLDADwBsRKkPc/ZwWeSzifBStoamuHFpoTDHPoryNxgs0G9gC+3b9b7TDUUiX
w/0g0h3SifpxHOS10bGTNsH/PoTPhN8W0HK4t8E+Del6RuxRzlvxzmkKRQEO+HdBPusAbnMn7Wnq
q9eYf0VbKpDnaGAVyhgPOhwoRZxE0KHAavECrREvmNsRDko3o/zV7A8UR+hI5HMLwouQrgP8boY9
A/VwgMYDuUBn+TgVyiR6CjQf7b/Eajfa/gLNRR23g1ptQluQB9fph7DqWIqwJqDMXwN+WWh+BBqF
MLtuXL/muBnu5hil9aJa+C0AMoEJ8ihdro8hgf66x/iINAY4j/vpPeAnejVdDLdAn08yGmgzu4Gx
CjXmWf0+2qqdpP4Iu96xEe2oRn/jME6eonz5d+ru6EjLwV/FyH8FsAV5fqr4oZomo/weiN9L/0jx
0Cq416Osr+x+4vGGewXGdSLG7gzshPSTgBEYl1rgMqS/GOXnc5/zuIsp4ULE/RBxpjHgn6oAPkdf
7ec0nB55dYzw4fZzlLYjzq3o12OgOpDMdbCh+Iz5DkDY88gnHXAA7YAewEfAdmABMAAoBTqjXYRy
NdSP61PEvAnamXnDeAF9iLopnrXasAXu1ZE5sy2SF5eT63icFkSQy3miXpeDDkVddtt5o26zkfd4
myJ8uL5A8f2X3E64RzdRzD39CxrBdUD67QgrtSnsG1Fnng8bceWwBnQz+Phm5Hsf7Kttyn0DdzHc
XNdbInSQXR+0tSfq14GpRuTncMTnfBS1+6KJzqUHkWeV41LIlK00Ul+Cdyt30KX6CSrWulAPoyf8
0B60MSS/oIkuvGnBWI6D+55WdBP8NjnfEPOheWzRH4MMeoPuR78u1t+Q7fU3hGE8Zn5mkHjReEwu
U/YfUIRznCaIw1ZcpozmYZzHf+PfPO1/apdvGo9BZj5mfm68YZpoz508J5xfiJ6Az6bwrwdqga6u
gNjkWiAanbgWchCdBBbqQRpgBKkfLkuL9GTIecwF+JcZf6VD2q20Vn/DfEvUUq18g1Y5k2kG3h7F
c1nyTbqZwfmDLmrGRy14zuah1tTm19YUvPBghKdyQB2Yfy9H8CEo4xTwDfioFDyZjvr2Y/mM/DfC
vgZg2QF+Nb9HXhZ/vkgPwW+dzZ82Zb7jOdWKP2NtfrwQVWsL5DvSsYzPRT3W2u3HGAiWcShjEvh4
Beq5347fmjZLXyd3go9ZDh+lqZF53R6UMRp1/IDrCUAOY7wvMU3HcPMRR4O5Q0swdzgKYP8zYJiP
oN3Xcl24P4xyMwzK62kXtEWtpZY/xdjrqNGLLuf+4HCEbdG/pp8jfk/YuX1RjidouXEa4w4ZyH48
D9UcRH+i3Qv0KvT5ZlqPfkjXVmM+wh+Yxn2ixoIojdcF2DO0uyHzeE26lW7W/gJ9gdP2Iq9aL4ro
EtT9ReVXg3wQ5oCfcQltd3xBBXoZZO1hqkYdpqEuh7g+yLOf6ypyu5IhJ96gi/Deb5uRTNGIt1X1
QZAeQfyNKi0Oe2Hf7pxJTvDsxYjD+W1TaYKUEOkPljczrfTQRVh+cl8gT0cyTUT6KOMLesDAq13M
oW3OWtqGK1bCvNhhBOkhpCvjuiAd60Gj9bvpp5hfayCb1kDmsL5Uakw1T2uPoT3XQq4DWi349TFK
M2rRhwsQj/vHkrGr0b7x2k7KA8113I01n/WJu/G2L0AljgV0K/xuxRuIzih3HfxWYv72xNxdi/Q8
d1hHIJS9Fv6ctghjsgb9FsXzxRmkREet0gdI1QFlcPnaZ7RNG01rwMdDXHejH2/BW1ESrEdmA1jN
Gcq9DHbGegvKj1VOxBW5moduZH/Zi/6IA50Y3BPxGrpfX0Hz9ClUoF2Eueul7vofMFe/o3u1eJqu
H6F79UZaz249kTpreL2iNUC3ZP9XsKuCv/wj3Jtoqj4I6dfQFfp0qtF2g/dep2h9NsYa6YzbwCcd
kP5r5BuB+BtN1aZgbq2ie8V35uMcT5XRYF6iAfpI6q7ScdoIVF25vuepsyxFq0ZjTFFftreoL+ra
VE+7juepn2on9wXaye3Q7+Ubc7xoJ7OjRcMTJF5lA1vl2zQMb02vEzvMA+jX4a0wsrlb7yOWAj30
PvQksAL2bqC/AZ6w3NDd+uBFbh+6BXk/DbqH9wUMOZT6MoXfFmAT8JId1pxyec3d57MbmeaB5v7G
Xqw1gDhpHmA0D2O7vgJ6eR/gJ+YBBnhxNMOxnJKcV1OS1gn+2UjXym1kYj7tpQ4amf9qned/40ab
ejbrx2DzNtrjAZryH4DHkOMx9THFXBzN6/N/U5//ibgY3+VAJeelf0nJFg9RnHjTfEfsoCniTfJo
V4EHAbi7w51o96c9TvC/S/m3Gj/wCo5qzX+1HtfW7tbj+mNuuYemN4fNBzZ13EmDGXoR+AFo7Xa9
SIMZjucQBrR2648g3b/DVOqqbWZeBA8yz7VyO8ZRJ4bsYB6QGZwX9Gqgyf0K5BrAaVV6N43QAZ67
DNmA/RrQFN6HSsD3JXZ/8xzkftU2W+nt8bHHxaZ2fNQvqL9Mo0DzQAtBJ4GOtqnNR8zPzXma/Vv7
wa1kiZ2meRw7LmgQwFrzw/TN0/2/YMfcOQK8ADz/v90eQeBVwAM43oEeUgQ98g3oKT/Fdx/oLGTJ
mXzgYaLwZNA/wQ8rfLgL4IbdC785oPcTnf4G9ivh/4YFU+qZtDWiV6bDb18kLUSSym+Slf7074i+
PwngEIrTn8Y3PU7Ph/0fANbz0++CPg26CfE/Rz4rQX9rhZ+dDvfVwFNwfwH/y4By2DeAJoN2AxKB
BKTfyGB9xNab//doy70sdLgWe9sfc0NnmYl65oAeAF1q7x3+a2qP549Q6I4t9sT2+P8YRTvUXuSH
1NrnY8/0AfS+kF3v1uVcyI3xDDeHXmaehU4Zy3o067KsPyv9MUKRz4OWHotyiZJw/qIo6hXF+ivr
ztBVS0C5nasdhjozKEO9quAuNiL6QZMshVwVJ2kL4AEyI3QBZN93spP5MuRQPNbXb7A3epABdxww
xYL5CtaueKx1hyB3vwE9Cnc70G/sNU2LrH02tWUr18OuC8vZ/233j62J/6fhWE8LImixtv4bfzte
f8RhjGLYa/D/X9p6rf4xd+u1u7W7aR2/wBrdfJ1uvW7/t257nbdp1GAqYDiD5gFGa72UdYAWesCP
uFun/z91s87RXO/4r92t9BLWUc6HJj3EDm+lxzfpMxk4A7DRat7Z8+8/pby30PdiXkZ0f7sOdvrW
/rYbfVrSHJADnSHfeA3dDjkC/d9sB2CNwrfyKLzMdYYKXLuoAO69ANbN8HHQag4DfUDcyufb+FYy
hW+C24PzG46LdU+hujV//4B/W/Et6+dKP4QOyG2SG3ivRPnAQCAB2A1cbvMG7yFR9lsSqy7vdfWp
5jf6y0ArHfBH3X1wFtqHdiFePHTHeL2GkhxeSjJwhgL7KtBo0GjI9wlA5IzPPOu4XsXhu4rhfD4L
OX8Fzldw9mU+C5l+uR6meGesuke5GWtoDsLVOR3W0mSsB2lOH5+XmI1Iz+dzVY6vofdcAr0nitcO
lIszKWAB4o7jsymcJBQjHz5DTorQnnw+xeuXowd5EC8XYepMXdG/4VxoGs5UpuF807qnKuPzF+0j
dVezms/dtYvpKT5jR36h6J20JQpn4a5qGu5aru6bNuJbqjfD7z7nbbijCaj7lTJbX0Hf44zNWmOh
TNlnf3wWn6HajzN5u81wq/Nxm6r6TcM3R3Ee07xcO51rONbSr9U5lHWO2frMvpUugzW+DqhGO3DW
Yp6yy7Ep9xHOD39vUdw7WbrG1RF6M+pp30lY5/TTaIK2DPtB+0z2YdTnTdwVrgIifWy3HWmVXmWX
hX45a9tbU8RVugr66BKAzwz5zHYVxi4RsO/h+C6uzPiMeLxG8ZgZbuzz43n8zf0I4/uIoThDG69L
nAV9BVhnj+p+DvyVDlyC7/sWyy2Yo1dQEtw363epO7yVOO9jIK75sEp3mRrXYsck8B7OHXGWVIy+
wt2RDZyV4E7DgvkhztjqFNS5mrldJpm4TzKvlC+hrEKKV7xZgzqtx90Wn3OeuxNM0zvDH+d2+mQA
4w9cB3cH1fYIVX2Gs0O0d5RqI5/N9cA5E5FLG6jOCUfaaZxP0nCc5w13xdBwYw/OQRZSB5wJdnBk
YexG434lHuetH1C23p9mal587xsQw82XxReg0NQZ+L2Hau0t0Dvg5rtf3Amjv9S9GijOp+m0whHo
EQDmC9/lMmYx5E6Ri3C+J6yI2PkeDHb4FdI+BTuPnfjG9jkgnonzbfO0/DnKHkrVshFlbEVdUA7O
ETe2BtJeGkFnUC5nhH4J5EpLDIO7BZAPu/NbA/7s17E1Iv4Z8G8B+LN7aGvAn/1a1+NC8S5Ujwv5
5yHvFkB57L5Q/v9pPVrkyWVE8vXD3gLwZ/eF6leKsBZAfHb/p/Vo0cdIl4H07NehNeDPfheqx8UI
awHEZ3eLekA+YR8bfh5708dB/4z1mtf7z0DHgIL7ws/Cjv2FOTviRhwV7xfw2wTcA2CvjF/rsFAM
ynvg1aB/B7BPNyecQ/hF2LOwL8E/uxzzLvh1BbBf4bI4bfgggLIVImWG98CN9Gd3gWKP3sKdAvfH
SI/yVNmoRxhnxKYf2Bxp35pIuSH4oe5hLjcSP4w6cRtNTodwG6YGv4lInwM66RzC0IMY5jOgvwLe
AV4AuF5sz0YY9wnaHsbvUIRDmJ8RuUDf465okV6Fc9AeONPF6QJT/QYao2TuK+rezL5DXqTzWoC3
IEremZB9g6jA4YYecj8NdUJvYBluzFJr6jqjGmsTfkICawvf5y3Qj5GhP4c3IB/hXuEK3Bfvw/nx
CMhblKHzvQzy5nUXcrZKW0tjgfG8hhl8J8R3J7ibiW5Q+osHcZL0T1Dfe+iQsRdnFuV4I4GqO3vA
vQH3VNvoWuMGut51OR3Cr/qsgf4zG+tVjmM6FRo30UguA3kWOy7H/VEs9IIIdW2imc5u8N+JL6t+
TFlRq6HXvYpfwqFwP7tsrL1K19KdlAR/HrOn0LfMf8CZADBG1Rn1NYK4EwtAH+N7PL6Xr0SfVKv6
XIz6FGCvrmu1uAf7CvrRKOrsjILulU9rotJwNnQK7XDgTDWg7uWtMvmeHvdPzjl0kbGa8uy9u+ND
9PNk3IlFKGT7Ifs8ALrbNn2u0hcT1L1W5DxA6RBYw5ry4Hc8uPMCb/Q4p0O01KN4PHgs7DMCuwz0
r9UeUF4/m9rPY4d+UGsn93ek3xE+GndgAQP3eBi33B/QyJmEk+/xcJeGflT6rPMQjXZqWFsfptmO
VXjzMhZjkUiTnM9QgnMEpbF+5nSi31jPhR5ifIe7wkn4zR0yh2GceL5fA/CcGwHwHF8Cf5zbhSFz
+B/PL/bnf+x3FvOV/5k4c8OvgZA5zwrnMHO5ZT/7FSjyV2GIw//OYh6a67F6SuRjn9e8Dzug9iE+
9j/Xz5CFlm7dkjbp9Yp/hmPMmI8uTFvpn/Z4taY8h8EjiaqfWB+29ckf0rtQHuul6g0A9Lz3MUfv
RFofwPfRau/QmiINnyUus6jSDfn+n+/8mf4S82sT63qtKcqx9OoL0GZ81EJvt/1RD2ue2VTp103v
Xuz3Lz9DOfzOIA/xlX79YxT91fROBu1W72XQF2bEP47zQ9ua3s1c0G2duWWgPD57yzjP+wPrTM4+
m7P18ub7J9ZTbTdkCuqjoTwHzyPUYTT6fa3Ob3P+DZjvGI6bwAMtMQXuKfye4HxwYCVhOC9rCZTL
bwwuCMftSAfgfWErmP905Zj/RJ1XWDDvBX8wvohgO+h2TWAvDejQhVvC/Kd+BwDZcj447ke5gKu7
BSckAENn/f/fAH1ATsxgV4KiDl4L/y2moxzACUmgsA5UwTSd68AnkbGw+9TuK7TtY7R7blPdI3Wy
y7LTXYj+2Dja5VyI/ti42PW4IP0P232++tt1b04xJ/mN3tkI5bd7jvPVncdH4Z+gAPifz5oTI3Cg
Xw8CjwFHIrgL9C7MlQzM22+0WeAnoHmaH/AD3sTwuxjbH3OW5Z3D8THGNg3lYh5gj/S5Bao4Xx85
UQbzn7MTKPpKvduxdK+P0C436s1vbGezLATtEDUeb1isd7I5LFtwfsHnJj31p2k21o1mOp85CXyD
/TTewQbIQL28xhLcd75k/tK4HjLhhPk7Yzl0AgBtXBnBi6CMrQD2geYToPwOEm+68B54Jz3aHNjb
ZjM4DsquAR7CmvVnUD9wpYXwJ5b/ubqhLkoGa99C1ztN6ep9aVDtr8fr87Cnn4e3IV/gnQ30H7Rh
jTaDhqCNa7S+5DGgf7C+gL4phl+i/h6oBTf6Zby2o9k85/c1/K4GUG9yeO48j/sKjg+K9Pab385c
lrYA501/wb3RF4iHMKRbg75byW+dWC/StmJ8xoEvJiDuBPMP2ibQkRF8C3oF6juF5smVuEeejf3w
q9DfkuG/GFgIexpoPFAB3AdcTRcp/9Pgk+8RH9B0xPs9qIG9vQG/7yJYDwpwuNpv76Nq6MTVyM+K
94ZKw+kKNAfOCH4LymFDkR/iyTtRb2gUWnLE7kD4LcjzkLV/FzhX4Pgqnh0n6lwc4zgNj56N9yOJ
wFqc4Q7BGedneNczlbwYXzfQB2PP+yHeP7Ae9QqA3jK3wH1ERt4HNN1B2PfkEWrsonnGT/Ce5yz0
hXewhzhGg4xTdC/uUzs7xmM9w1kf8hkIgM/Ds/k9MfhuknwDZyKRO3qbOsopOeo5nC9Ay8L84PMX
ReVj6GfY8Ztv/K6Lz3xIsPYGf/7Hb6cjc03puc5iuhnzeDiAM1L17pt1bD7jjOa5Bzu/W+2sP4Rv
iio9jvdQYfSoyfNhEmRD09kr8p0AftrGvIUw1gWR1Hwcb442gvbjNwlyPL/XUml/CgppYC4DcMJi
jka+92EfY99vbcQ588ZmbvU253/a/WP3VxjTFvdT9ti2Pj8Hj/zbtxmtw3/0jqfVWyL7XF292zjP
WyN1Nt/s7UZrt30/Yt9H/Ki71R2N3W6b/qD9NSbryMOxrhxy7DTfAO8+CdwB+Yo1ycQe2DQRtl/x
Ug2txXl5NZ/LO0ZRB0uGq3PSbKwz2Tib5DP9VVZ+OCtswFkSZCPk/BleI+DPOtZq5Hsa/kVamvoe
RAbs/L2GzgjjfRKf3w4HSiH3rHPa3lTGshZxEtWawd87wD4N8qZaQrbIF6mXxL0KyyABN0Asi9S5
5FCsMzgDjCBd4nQkYo/CW8JqnN8qaPHmi0omxVkySyPkh3NDMRRrsCWv2uGuSckv+boli+R7iGPj
JOyf810N76fVnhqzOPyoWptYfkJWKpm5FXMbdt678LxFO+N5XkNeDDmfntHcD21n3ZL1guaUdQV2
H7TX+gvRSFpOz2l+GD9yx4O1JFGtyS/gnW85xcCu9s3o/15It934WJ2RjES9WQeJR7ilv9vn7Wqc
MEbW3b5AeIt9Ad/n8NgaeCfLaxf66Xng9WYU8iXMMobXae7HT6CPRmPdHcM8gD6LBj/g+0XmyUg9
ef+SDj5dhzpZ770je7umvQbRQH0LPajNwZkB3vkj30kAj1U4ggdBH2Q+M/C+G/ncxxR+RxEP8Xnd
UGvIc6CvAn8AvgTeBN7BnvktjGk56jHS3hcZD/D7gfB+A280sKZHucZQuuOApa9otXQln4sz0KZ7
GOCVUBPw/Q8lx2v4/Eb9A+fS/xDkVsyQh6HVtcfqU45jLsjw2J2Yhr2BY+jiA/zb0W1o64M2Hmjj
gTYeaOOBNh5o44E2HmjjgTYeaOOBNh5o44E2HmjjgTYeaOOBNh5o44E2HmjjgTYeaOOBNh5o44E2
HmjjgTYeaOOBNh5o44E2HmjjgTYeaOOBNh5o44E2HmjjgTYeaOOBNh5o44E2HmjjgTYeaOOBNh5o
44E2Hmjjgf9reEDwX7Sir/Gr+feTE1/Hxe948S+/6o/H/IYMkvtpstZ5T15azqtP4c/FHAOk1qU+
0C5nv9ZJa1c/MCfYqPn3JCQXxA/pju8zC8pXpg/mQuAJ4BCg03QtG6EemMuBWuAJ4BDwKuDAd7Oy
VagPdCHwAHAMcGjttKx6/P35IZ20dKRNRx3jtVT6CjABDd8lT0WpqTQOmA7cDjwAOFQ89lkILAcO
AScABwW11Po7e6HuqfXrFNkz/7IC5ZxhOadVKueeSyosOnaCRYtHWdEGWNEu6m159xhq0U7dLJrQ
saAWme+JdhccHpKipaCRKaj4IphCPouf0xWUgz/0lEwhQOIL4pZPUEvY0yGv4IFD+Cqn0CR+QKOa
cszDmqh3ewuGREtTfkUJ+EL8l/K4FSKP74nzFjwwZLT8gJ4ADgGa/ACfv8q/4lfrj3GfwywCHgAO
Aa8AXwEOeQyf9/F5D9/ojJfv4i9MvYuY7+KX499F7HcR+13EfJec8l2YHvkOciNlsr0IkPIdmB75
FzTrLzDj8TcWhHxbvm0elq/V9yss2K8sgfyIJadjxJKaGbEkpBQ0yj/Wf9cFHJWHkQZHHdTa02Dq
pbWv73hRTqOWVj9oXk6j/NseXyBn65Ce+CZqCJCoyeso+XX8rs3r+FsRr1MVsAhwwIa/pgPUAhuA
rUAIAJfB9AA+/C6eT/4eeBO/E/MmBYHxgEu+Wo9iGuUr9XlDc4akyJflC/gDqjnyqPydor+Xzyv6
knxO0RdBsxF+RD5fn51DQ2IQTkjjAfWA5iPckE/v6ZCQYw7x4tv9GHiY+UARMA6YDtwOOOQh2b6+
OicBmRykIy5CzHr6TNGHabuLgvNzgnnDwIA+NvIG/AQ2GA/4HsiTwbyN98DJRt5td8LGRt7K9bCx
kXf9CtjYyLvsatjYyKueDxsbeVOnw8ZG3rjJsMFolFue7NApp9+4BcI3JF5eg166Br10DXrpGvwy
5jX8oe/wDc4ceW99167osc3BQJeuObUHRO1TonaiqN0uameJ2mWidoWoHSRqfyZqA6I2S9Rmi9qg
qD2IP3sv8NOIwYYWzsJgmqg9Imp3idoaUZsnajuK2g6i1if6BRtlbv0ozDqQEkX2DOFJJ3P3/GQw
pE+8zEWP5oLncyETDsF8BTCVK4hIvvZW5PRspu33dC2y3D0GFCwcMlI+g4TPYBieofcBHQP0DNjo
GWTyDLKLh1kETAcOA18BJuBA7PZox+3KjIeZDxQB04HlwFeAQ1XnK1RF0kKYXMUnVMXyYRYB49gl
n8GnPT65MjfYzpPlCXhGardnifhsMS7bzJb9KCUFX4dN8Lq8jcK971/ub//lpqghUfI2eTt+8CBH
bojQ2+u/a4c/872pPu9gzpBk8Qt8Sx1chz8YmSc6gvbHX0lhdx/KcjHtTVn4JYYcUVCfNQXJ4uvz
uuUcEHGcal/Od1kf5nyW1Shh/TTrYM6ffI26qM95Az6P7ct5PWttzov5jS74PJXXKEAO+FTU/Vn9
c3YdUVFXIGBzfc4yJvtybswakbMgSwXMsgJ+VgNXMD5nYt7UnJHIrzjr0pxgDfLcl1OU9bOcQVas
PpxmX05PVCFgWbuisl2yVKH+bJVhWb9GMTfYzbnRWe4c5+zrLHB2c+Y6c5ztnJnOJFeCy+OKc8W6
ol0ul8Olu6SLXEn8J24D+HI8fqfXw4S/0o2/8aHsHkgYwWIGJknhkjSaQolaqSydNFSUhg7PpNJL
faFTk/yNInrC1JDhHypCCaVUOnloqH+gtNFpTgz1C5SGnON/Wr5biNsq4BuSaxoFTS5vFCZ73ZIZ
ShhWjj9aL7y33JrJtPMtt1ZUUFrK1UVpRQmDvYXDi89jVCnPquJzf2IzkNbC3i60sXRSeWhnu4pQ
AVvMdhWlobsm+aaV7xdfixMlxfvFP5hUlO/XBouvSyayvza4uKKitFFMUfHIJ/6BeOAYEMRzZZOP
45HPlW3F22zF64j0iNeBCeJFRVFHFa9jVJSKpwuOt7umQ0nx7g4wECfVRzUqTk2qr3mcIx0RpyMM
xEmppSMqzpGUWo4TGqyyycpClGwYiCIyKEtFyRIZKoqq+W4VJT8SZW1TlLWqJM2qjYrDBrJxH7Pj
uI8hTrOO/PfWWUPxd8j3DKyYOa1klr+kyl8yC6gKrbt6blqo9lKfb/fMCg7whbS8qktnzmU6Y1ao
wj+rODTTX+zbPVClaxU8jYMH+ot307SSyeW7pwVnFdcPDA4s8c8ortgzYnzvfi3KWttUVu/x5ylr
PGfWm8saodK1KqsfB4/gsvpxWf24rBHBEaosUjw+vny3i4ZWDMP4Md0jY6LBr1WZuRVDUzyLBivm
HZibtizzALSVHRQTqAjF+oeG3ADzdfch3YdwEOYUB8XBOz4SlLZsYG4m/o5LJMgDb69/KAWWXFVz
FaWVzCu2/tfgH7yWXMVDYZkB9jvvP0QpCQVnFNfg9wFLQ10nlYaKJkwt3+10wrequAJ+A2y/mJgS
/Llby7MHPAdwRE1rish+g9gvKioS8Ye8oOoEb/TOfigaB/eIYLZYQjUVWii7dLKEKJg8Fd0wbWr5
AehSvEjUVKCBNSIgauzcuB3Kjr9pz/8Iza6xseSqiC3SF0siVMWsCVCgxu4S5cMGd5YyVF8tQYb0
/wFAQ65+CmVuZHN0cmVhbQplbmRvYmoKNDggMCBvYmoKMTQ1MTEKZW5kb2JqCjQ5IDAgb2JqCihV
bnRpdGxlZCkKZW5kb2JqCjUwIDAgb2JqCihNYWMgT1MgWCAxMC4xMi42IFF1YXJ0eiBQREZDb250
ZXh0KQplbmRvYmoKNTEgMCBvYmoKKE1hdGhpYXMgQnluZW5zKQplbmRvYmoKNTIgMCBvYmoKKCkK
ZW5kb2JqCjUzIDAgb2JqCihDaHJvbWUpCmVuZG9iago1NCAwIG9iagooRDoyMDE3MDgxNzEzNDQ1
NlowMCcwMCcpCmVuZG9iago1NSAwIG9iagooKQplbmRvYmoKNTYgMCBvYmoKWyBdCmVuZG9iagox
IDAgb2JqCjw8IC9UaXRsZSA0OSAwIFIgL0F1dGhvciA1MSAwIFIgL1N1YmplY3QgNTIgMCBSIC9Q
cm9kdWNlciA1MCAwIFIgL0NyZWF0b3IKNTMgMCBSIC9DcmVhdGlvbkRhdGUgNTQgMCBSIC9Nb2RE
YXRlIDU0IDAgUiAvS2V5d29yZHMgNTUgMCBSIC9BQVBMOktleXdvcmRzCjU2IDAgUiA+PgplbmRv
YmoKeHJlZgowIDU3CjAwMDAwMDAwMDAgNjU1MzUgZiAKMDAwMDA5NDY3NiAwMDAwMCBuIAowMDAw
MDAzNjY5IDAwMDAwIG4gCjAwMDAwMTA4MDcgMDAwMDAgbiAKMDAwMDAwMDAyMiAwMDAwMCBuIAow
MDAwMDAzNjQ5IDAwMDAwIG4gCjAwMDAwMDM3NzMgMDAwMDAgbiAKMDAwMDAwNjc1MCAwMDAwMCBu
IAowMDAwMDEwOTYxIDAwMDAwIG4gCjAwMDAwNzg4NTAgMDAwMDAgbiAKMDAwMDAwMzkyMCAwMDAw
MCBuIAowMDAwMDAzOTY5IDAwMDAwIG4gCjAwMDAwMDQwMTQgMDAwMDAgbiAKMDAwMDAwNjcyOSAw
MDAwMCBuIAowMDAwMDEwNTUwIDAwMDAwIG4gCjAwMDAwMDY3ODYgMDAwMDAgbiAKMDAwMDAxMDUy
OSAwMDAwMCBuIAowMDAwMDEwNjU3IDAwMDAwIG4gCjAwMDAwMzcwOTkgMDAwMDAgbiAKMDAwMDA2
MzI2MSAwMDAwMCBuIAowMDAwMDEwODk3IDAwMDAwIG4gCjAwMDAwMTE1NDQgMDAwMDAgbiAKMDAw
MDAxMTExNSAwMDAwMCBuIAowMDAwMDExNTI0IDAwMDAwIG4gCjAwMDAwMTE3NTYgMDAwMDAgbiAK
MDAwMDAxMjAzMyAwMDAwMCBuIAowMDAwMDEyMjgwIDAwMDAwIG4gCjAwMDAwMzcwNzcgMDAwMDAg
biAKMDAwMDAzNzY5NCAwMDAwMCBuIAowMDAwMDM3MjU0IDAwMDAwIG4gCjAwMDAwMzc2NzQgMDAw
MDAgbiAKMDAwMDAzNzkwNiAwMDAwMCBuIAowMDAwMDM4MTk1IDAwMDAwIG4gCjAwMDAwMzg0NDIg
MDAwMDAgbiAKMDAwMDA2MzIzOSAwMDAwMCBuIAowMDAwMDYzNzM3IDAwMDAwIG4gCjAwMDAwNjM0
MTYgMDAwMDAgbiAKMDAwMDA2MzcxNyAwMDAwMCBuIAowMDAwMDYzOTQ5IDAwMDAwIG4gCjAwMDAw
NjM5NzkgMDAwMDAgbiAKMDAwMDA2NDIyNiAwMDAwMCBuIAowMDAwMDc4ODI4IDAwMDAwIG4gCjAw
MDAwNzkzMjUgMDAwMDAgbiAKMDAwMDA3OTAwNCAwMDAwMCBuIAowMDAwMDc5MzA1IDAwMDAwIG4g
CjAwMDAwNzk1MzcgMDAwMDAgbiAKMDAwMDA3OTU2NyAwMDAwMCBuIAowMDAwMDc5ODE0IDAwMDAw
IG4gCjAwMDAwOTQ0MTYgMDAwMDAgbiAKMDAwMDA5NDQzOCAwMDAwMCBuIAowMDAwMDk0NDY1IDAw
MDAwIG4gCjAwMDAwOTQ1MTggMDAwMDAgbiAKMDAwMDA5NDU1MSAwMDAwMCBuIAowMDAwMDk0NTcw
IDAwMDAwIG4gCjAwMDAwOTQ1OTUgMDAwMDAgbiAKMDAwMDA5NDYzNyAwMDAwMCBuIAowMDAwMDk0
NjU2IDAwMDAwIG4gCnRyYWlsZXIKPDwgL1NpemUgNTcgL1Jvb3QgMjAgMCBSIC9JbmZvIDEgMCBS
IC9JRCBbIDxjMzZmNzgwMGU3MWVhMThlOTI5OTI5NWVlNWNkYTJjYz4KPGMzNmY3ODAwZTcxZWEx
OGU5Mjk5Mjk1ZWU1Y2RhMmNjPiBdID4+CnN0YXJ0eHJlZgo5NDg1MQolJUVPRgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>318747</attachid>
            <date>2017-08-22 01:51:17 -0700</date>
            <delta_ts>2017-08-22 01:53:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-175669-20170822105113.patch</filename>
            <type>text/plain</type>
            <size>2995567</size>
            <attacher name="Mathias Bynens">mathias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIwODUzCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDcwMDY0ODE0YmY0
MGZjZDU0OWNlZDU1MjgxNDA0M2YzZGZmNjc0YzQuLjgwMTM5NjIwY2M4MjEzOWI4M2VmODM4OGMz
OTNmMTA5ZTUxMzVlZjIgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisr
KyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTctMDgt
MTcgIE1hdGhpYXMgQnluZW5zICA8bWF0aGlhc0BxaXdpLmJlPgorCisgICAgICAgIFNwZWVkb21l
dGVyOiBVcGRhdGUgdG8gbW9kZXJuIFJlYWN0L1JlZHV4IHZlcnNpb24KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NTY2OQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgdXBkYXRlcyBSZWFjdCBhbmQg
cmVhY3QtZG9tIHRvIHYxNS41LjQgKHJlbGVhc2VkIGluIE1heSAyMDE3KS4KKworICAgICAgICAq
IFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFj
dC1yZWR1eC9SRUFETUUubWQ6IERvY3VtZW50ZWQgYnVpbGQgc3RlcHMuCisgICAgICAgICogU3Bl
ZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJl
ZHV4L2Rpc3QvKjogVXBkYXRlZCBwZXIgYnVpbGQgaW5zdHJ1Y3Rpb25zLgorICAgICAgICAqIFNw
ZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1y
ZWR1eC9wYWNrYWdlLWxvY2suanNvbjogUGlubmVkIGRlcGVuZGVuY2llcyB0byBtYWtlIGJ1aWxk
cyBkZXRlcm1pbmlzdGljLgorICAgICAgICAqIFNwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9wYWNrYWdlLmpzb246IEZpeGVkIGJ1
aWxkIGNvbW1hbmQuCisgICAgICAgICogU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3B1YmxpYy9pbmRleC5odG1sOiBNYWRlIHRp
dGxlIGNvbnNpc3RlbnQuCisKIDIwMTctMDgtMTYgIE1hdGhpYXMgQnluZW5zICA8bWF0aGlhc0Bx
aXdpLmJlPgogCiAgICAgICAgIFNwZWVkb21ldGVyOiBVcGRhdGUgQW5ndWxhciAxIFRvZG9NVkMg
ZXhhbXBsZSB0byB2MS42LjUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L1JF
QURNRS5tZCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L1JFQURNRS5tZAppbmRleCBlYmQwYWM1
MGIyZWM2M2ZjZjRlMDRlNmMzMzg0NjJmOTcxNDA0OTJkLi5jZTdiOGZkMTU4MDQ1MzEwMWQ1ZjA3
OWY0YWZmMDgwMDdiNGQxMWMzIDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9S
RUFETUUubWQKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9k
b212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvUkVBRE1FLm1kCkBAIC0xLDMz
ICsxLDE2IEBACi0jIFJlZHV4IFRvZG9NVkMgRXhhbXBsZQorIyBTcGVlZG9tZXRlciAyLjA6IFJl
YWN0IFJlZHV4IFRvZG9NVkMgZXhhbXBsZQogCi1UaGlzIHByb2plY3QgdGVtcGxhdGUgd2FzIGJ1
aWx0IHdpdGggW0NyZWF0ZSBSZWFjdCBBcHBdKGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9va2lu
Y3ViYXRvci9jcmVhdGUtcmVhY3QtYXBwKS4KKyMjIFRlc3QgbG9jYWxseQogCi0jIyBBdmFpbGFi
bGUgU2NyaXB0cworMS4gYG5wbSBpbnN0YWxsYAorMi4gYG5wbSBzdGFydGAgcnVucyB0aGUgYXBw
IGluIGRldmVsb3BtZW50IG1vZGUKKzMuIE9wZW4gPGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMC8+IHRv
IHZpZXcgaXQgaW4gdGhlIGJyb3dzZXIuCiAKLUluIHRoZSBwcm9qZWN0IGRpcmVjdG9yeSwgeW91
IGNhbiBydW46CitUaGUgcGFnZSByZWxvYWRzIHdoZW5ldmVyIHlvdSBtYWtlIGVkaXRzLiBMaW50
IGVycm9ycyBhcmUgcHJpbnRlZCB0byB0aGUgY29uc29sZS4KIAotIyMjIGBucG0gc3RhcnRgCisj
IyBCdWlsZAogCi1SdW5zIHRoZSBhcHAgaW4gdGhlIGRldmVsb3BtZW50IG1vZGUuPGJyPgotT3Bl
biBbaHR0cDovL2xvY2FsaG9zdDozMDAwXShodHRwOi8vbG9jYWxob3N0OjMwMDApIHRvIHZpZXcg
aXQgaW4gdGhlIGJyb3dzZXIuCisxLiBgbnBtIHJ1biBidWlsZGAKIAotVGhlIHBhZ2Ugd2lsbCBy
ZWxvYWQgaWYgeW91IG1ha2UgZWRpdHMuPGJyPgotWW91IHdpbGwgYWxzbyBzZWUgYW55IGxpbnQg
ZXJyb3JzIGluIHRoZSBjb25zb2xlLgotCi0jIyMgYG5wbSBydW4gYnVpbGRgCi0KLUJ1aWxkcyB0
aGUgYXBwIGZvciBwcm9kdWN0aW9uIHRvIHRoZSBgYnVpbGRgIGZvbGRlci48YnI+Ci1JdCBjb3Jy
ZWN0bHkgYnVuZGxlcyBSZWFjdCBpbiBwcm9kdWN0aW9uIG1vZGUgYW5kIG9wdGltaXplcyB0aGUg
YnVpbGQgZm9yIHRoZSBiZXN0IHBlcmZvcm1hbmNlLgotCi1UaGUgYnVpbGQgaXMgbWluaWZpZWQg
YW5kIHRoZSBmaWxlbmFtZXMgaW5jbHVkZSB0aGUgaGFzaGVzLjxicj4KLVlvdXIgYXBwIGlzIHJl
YWR5IHRvIGJlIGRlcGxveWVkIQotCi0jIyMgYG5wbSBydW4gZWplY3RgCi0KLSoqTm90ZTogdGhp
cyBpcyBhIG9uZS13YXkgb3BlcmF0aW9uLiBPbmNlIHlvdSBgZWplY3RgLCB5b3UgY2Fu4oCZdCBn
byBiYWNrISoqCi0KLUlmIHlvdSBhcmVu4oCZdCBzYXRpc2ZpZWQgd2l0aCB0aGUgYnVpbGQgdG9v
bCBhbmQgY29uZmlndXJhdGlvbiBjaG9pY2VzLCB5b3UgY2FuIGBlamVjdGAgYXQgYW55IHRpbWUu
IFRoaXMgY29tbWFuZCB3aWxsIHJlbW92ZSB0aGUgc2luZ2xlIGJ1aWxkIGRlcGVuZGVuY3kgZnJv
bSB5b3VyIHByb2plY3QuCi0KLUluc3RlYWQsIGl0IHdpbGwgY29weSBhbGwgdGhlIGNvbmZpZ3Vy
YXRpb24gZmlsZXMgYW5kIHRoZSB0cmFuc2l0aXZlIGRlcGVuZGVuY2llcyAoV2VicGFjaywgQmFi
ZWwsIEVTTGludCwgZXRjKSByaWdodCBpbnRvIHlvdXIgcHJvamVjdCBzbyB5b3UgaGF2ZSBmdWxs
IGNvbnRyb2wgb3ZlciB0aGVtLiBBbGwgb2YgdGhlIGNvbW1hbmRzIGV4Y2VwdCBgZWplY3RgIHdp
bGwgc3RpbGwgd29yaywgYnV0IHRoZXkgd2lsbCBwb2ludCB0byB0aGUgY29waWVkIHNjcmlwdHMg
c28geW91IGNhbiB0d2VhayB0aGVtLiBBdCB0aGlzIHBvaW50IHlvdeKAmXJlIG9uIHlvdXIgb3du
LgotCi1Zb3UgZG9u4oCZdCBoYXZlIHRvIGV2ZXIgdXNlIGBlamVjdGAuIFRoZSBjdXJhdGVkIGZl
YXR1cmUgc2V0IGlzIHN1aXRhYmxlIGZvciBzbWFsbCBhbmQgbWlkZGxlIGRlcGxveW1lbnRzLCBh
bmQgeW91IHNob3VsZG7igJl0IGZlZWwgb2JsaWdhdGVkIHRvIHVzZSB0aGlzIGZlYXR1cmUuIEhv
d2V2ZXIgd2UgdW5kZXJzdGFuZCB0aGF0IHRoaXMgdG9vbCB3b3VsZG7igJl0IGJlIHVzZWZ1bCBp
ZiB5b3UgY291bGRu4oCZdCBjdXN0b21pemUgaXQgd2hlbiB5b3UgYXJlIHJlYWR5IGZvciBpdC4K
K1RoaXMgYnVpbGRzIHRoZSBhcHAgZm9yIHByb2R1Y3Rpb24gdG8gdGhlIGBkaXN0YCBmb2xkZXIu
IEl0IGNvcnJlY3RseSBidW5kbGVzCitSZWFjdCBpbiBwcm9kdWN0aW9uIG1vZGUgYW5kIG9wdGlt
aXplcyB0aGUgYnVpbGQgZm9yIHRoZSBiZXN0IHBlcmZvcm1hbmNlLgpkaWZmIC0tZ2l0IGEvUGVy
Zm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUt
ZXhhbXBsZXMvcmVhY3QtcmVkdXgvZGlzdC9pbmRleC5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qt
cmVkdXgvZGlzdC9pbmRleC5odG1sCmluZGV4IDA3MTkxMWY2ZTQ3NzMzZjQyOWJjY2Q4ODgzZTg0
MDIwMjZkMDBiZmUuLjk2ODI3NzQ2NDFkNzQzMzk3ODI4Y2EwNjU2MzZlZGE5OGI1NDUyZTIgMTAw
NjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3QvaW5kZXguaHRtbAorKysgYi9Q
ZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVy
ZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L2luZGV4Lmh0bWwKQEAgLTEgKzEgQEAKLTwhRE9D
VFlQRSBodG1sPjxodG1sIGxhbmc9ImVuIj48aGVhZD48bWV0YSBjaGFyc2V0PSJ1dGYtOCI+PG1l
dGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCxpbml0aWFsLXNj
YWxlPTEiPjx0aXRsZT5SZWR1eCBUb2RvTVZDIEV4YW1wbGU8L3RpdGxlPjxsaW5rIGhyZWY9InN0
YXRpYy9jc3MvbWFpbi5kNDNkMjkwOS5jc3MiIHJlbD0ic3R5bGVzaGVldCI+PC9oZWFkPjxib2R5
PjxkaXYgY2xhc3M9InRvZG9hcHAiIGlkPSJyb290Ij48L2Rpdj48c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCIgc3JjPSJzdGF0aWMvanMvbWFpbi45NDYyNjlmZi5qcyI+PC9zY3JpcHQ+PC9i
b2R5PjwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8IURPQ1RZUEUgaHRtbD48
aHRtbCBsYW5nPSJlbiI+PGhlYWQ+PG1ldGEgY2hhcnNldD0idXRmLTgiPjxtZXRhIG5hbWU9InZp
ZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsaW5pdGlhbC1zY2FsZT0xIj48dGl0
bGU+UmVhY3QgUmVkdXggVG9kb01WQyBleGFtcGxlPC90aXRsZT48bGluayBocmVmPSIuL3N0YXRp
Yy9jc3MvbWFpbi5mMDRhNzMxOS5jc3MiIHJlbD0ic3R5bGVzaGVldCI+PC9oZWFkPjxib2R5Pjxk
aXYgY2xhc3M9InRvZG9hcHAiIGlkPSJyb290Ij48L2Rpdj48c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSIuL3N0YXRpYy9qcy9tYWluLjQzYTA5NDhjLmpzIj48L3NjcmlwdD48L2Jv
ZHk+PC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3Qvc3RhdGljL2Nzcy9tYWluLmQ0M2QyOTA5LmNzcyBiL1Bl
cmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJl
LWV4YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3Qvc3RhdGljL2Nzcy9tYWluLmQ0M2QyOTA5LmNzcwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjdiZGRmOTc5OTM5ZmQ3MjAyYjBkNmI3ZWI0
NjU5YmIyZDk1Y2RlOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L3N0YXRpYy9jc3MvbWFpbi5kNDNkMjkw
OS5jc3MKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWJvZHksYnV0dG9uLGh0bWx7bWFy
Z2luOjA7cGFkZGluZzowfWJ1dHRvbntib3JkZXI6MDtiYWNrZ3JvdW5kOm5vbmU7Zm9udC1zaXpl
OjEwMCU7dmVydGljYWwtYWxpZ246YmFzZWxpbmU7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXdl
aWdodDppbmhlcml0O2NvbG9yOmluaGVyaXQ7LXdlYmtpdC1hcHBlYXJhbmNlOm5vbmU7LW1vei1h
cHBlYXJhbmNlOm5vbmU7YXBwZWFyYW5jZTpub25lOy13ZWJraXQtZm9udC1zbW9vdGhpbmc6YW50
aWFsaWFzZWR9Ym9keSxidXR0b257LW1vei1vc3gtZm9udC1zbW9vdGhpbmc6Z3JheXNjYWxlfWJv
ZHl7Zm9udDoxNHB4IEhlbHZldGljYSBOZXVlLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmO2xp
bmUtaGVpZ2h0OjEuNGVtO2JhY2tncm91bmQ6I2Y1ZjVmNTtjb2xvcjojNGQ0ZDRkO21pbi13aWR0
aDoyMzBweDttYXgtd2lkdGg6NTUwcHg7bWFyZ2luOjAgYXV0bzstd2Via2l0LWZvbnQtc21vb3Ro
aW5nOmFudGlhbGlhc2VkO2ZvbnQtd2VpZ2h0OjMwMH06Zm9jdXN7b3V0bGluZTowfS5oaWRkZW57
ZGlzcGxheTpub25lfS50b2RvYXBwe2JhY2tncm91bmQ6I2ZmZjttYXJnaW46MTMwcHggMCA0MHB4
O3Bvc2l0aW9uOnJlbGF0aXZlO2JveC1zaGFkb3c6MCAycHggNHB4IDAgcmdiYSgwLDAsMCwuMiks
MCAyNXB4IDUwcHggMCByZ2JhKDAsMCwwLC4xKX0udG9kb2FwcCBpbnB1dDo6LXdlYmtpdC1pbnB1
dC1wbGFjZWhvbGRlcntmb250LXN0eWxlOml0YWxpYztmb250LXdlaWdodDozMDA7Y29sb3I6I2U2
ZTZlNn0udG9kb2FwcCBpbnB1dDo6LW1vei1wbGFjZWhvbGRlcntmb250LXN0eWxlOml0YWxpYztm
b250LXdlaWdodDozMDA7Y29sb3I6I2U2ZTZlNn0udG9kb2FwcCBpbnB1dDo6aW5wdXQtcGxhY2Vo
b2xkZXJ7Zm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6MzAwO2NvbG9yOiNlNmU2ZTZ9LnRv
ZG9hcHAgaDF7cG9zaXRpb246YWJzb2x1dGU7dG9wOi0xNTVweDt3aWR0aDoxMDAlO2ZvbnQtc2l6
ZToxMDBweDtmb250LXdlaWdodDoxMDA7dGV4dC1hbGlnbjpjZW50ZXI7Y29sb3I6cmdiYSgxNzUs
NDcsNDcsLjE1KTstd2Via2l0LXRleHQtcmVuZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eTstbW96
LXRleHQtcmVuZGVyaW5nOm9wdGltaXplTGVnaWJpbGl0eTt0ZXh0LXJlbmRlcmluZzpvcHRpbWl6
ZUxlZ2liaWxpdHl9LmVkaXQsLm5ldy10b2Rve3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbjowO3dp
ZHRoOjEwMCU7Zm9udC1zaXplOjI0cHg7Zm9udC1mYW1pbHk6aW5oZXJpdDtmb250LXdlaWdodDpp
bmhlcml0O2xpbmUtaGVpZ2h0OjEuNGVtO2JvcmRlcjowO2NvbG9yOmluaGVyaXQ7cGFkZGluZzo2
cHg7Ym9yZGVyOjFweCBzb2xpZCAjOTk5O2JveC1zaGFkb3c6aW5zZXQgMCAtMXB4IDVweCAwIHJn
YmEoMCwwLDAsLjIpO2JveC1zaXppbmc6Ym9yZGVyLWJveDstd2Via2l0LWZvbnQtc21vb3RoaW5n
OmFudGlhbGlhc2VkOy1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmdyYXlzY2FsZX0ubmV3LXRvZG97
cGFkZGluZzoxNnB4IDE2cHggMTZweCA2MHB4O2JvcmRlcjpub25lO2JhY2tncm91bmQ6cmdiYSgw
LDAsMCwuMDAzKTtib3gtc2hhZG93Omluc2V0IDAgLTJweCAxcHggcmdiYSgwLDAsMCwuMDMpfS5t
YWlue3Bvc2l0aW9uOnJlbGF0aXZlO3otaW5kZXg6Mjtib3JkZXItdG9wOjFweCBzb2xpZCAjZTZl
NmU2fWxhYmVsW2Zvcj10b2dnbGUtYWxsXXtkaXNwbGF5Om5vbmV9LnRvZ2dsZS1hbGx7cG9zaXRp
b246YWJzb2x1dGU7dG9wOi01NXB4O2xlZnQ6LTEycHg7d2lkdGg6NjBweDtoZWlnaHQ6MzRweDt0
ZXh0LWFsaWduOmNlbnRlcjtib3JkZXI6bm9uZX0udG9nZ2xlLWFsbDpiZWZvcmV7Y29udGVudDon
XDI3NkYnO2ZvbnQtc2l6ZToyMnB4O2NvbG9yOiNlNmU2ZTY7cGFkZGluZzoxMHB4IDI3cHh9LnRv
Z2dsZS1hbGw6Y2hlY2tlZDpiZWZvcmV7Y29sb3I6IzczNzM3M30udG9kby1saXN0e21hcmdpbjow
O3BhZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmV9LnRvZG8tbGlzdCBsaXtwb3NpdGlvbjpyZWxhdGl2
ZTtmb250LXNpemU6MjRweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWRlZGVkfS50b2RvLWxp
c3QgbGk6bGFzdC1jaGlsZHtib3JkZXItYm90dG9tOm5vbmV9LnRvZG8tbGlzdCBsaS5lZGl0aW5n
e2JvcmRlci1ib3R0b206bm9uZTtwYWRkaW5nOjB9LnRvZG8tbGlzdCBsaS5lZGl0aW5nIC5lZGl0
e2Rpc3BsYXk6YmxvY2s7d2lkdGg6NTA2cHg7cGFkZGluZzoxMnB4IDE2cHg7bWFyZ2luOjAgMCAw
IDQzcHh9LnRvZG8tbGlzdCBsaS5lZGl0aW5nIC52aWV3e2Rpc3BsYXk6bm9uZX0udG9kby1saXN0
IGxpIC50b2dnbGV7dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6NDBweDtoZWlnaHQ6YXV0bztwb3Np
dGlvbjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDttYXJnaW46YXV0byAwO2JvcmRlcjpub25lOy13
ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9u
ZX0udG9kby1saXN0IGxpIC50b2dnbGU6YWZ0ZXJ7Y29udGVudDp1cmwoJ2RhdGE6aW1hZ2Uvc3Zn
K3htbDt1dGY4LDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB3aWR0aD0i
NDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9Ii0xMCAtMTggMTAwIDEzNSI+PGNpcmNsZSBjeD0iNTAi
IGN5PSI1MCIgcj0iNTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0iI2VkZWRlZCIgc3Ryb2tlLXdpZHRo
PSIzIi8+PC9zdmc+Jyl9LnRvZG8tbGlzdCBsaSAudG9nZ2xlOmNoZWNrZWQ6YWZ0ZXJ7Y29udGVu
dDp1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIiB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHZpZXdCb3g9Ii0xMCAtMTggMTAw
IDEzNSI+PGNpcmNsZSBjeD0iNTAiIGN5PSI1MCIgcj0iNTAiIGZpbGw9Im5vbmUiIHN0cm9rZT0i
I2JkZGFkNSIgc3Ryb2tlLXdpZHRoPSIzIi8+PHBhdGggZmlsbD0iIzVkYzJhZiIgZD0iTTcyIDI1
TDQyIDcxIDI3IDU2bC00IDQgMjAgMjAgMzQtNTJ6Ii8+PC9zdmc+Jyl9LnRvZG8tbGlzdCBsaSBs
YWJlbHt3b3JkLWJyZWFrOmJyZWFrLWFsbDtwYWRkaW5nOjE1cHggNjBweCAxNXB4IDE1cHg7bWFy
Z2luLWxlZnQ6NDVweDtkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjEuMjstd2Via2l0LXRyYW5z
aXRpb246Y29sb3IgLjRzO3RyYW5zaXRpb246Y29sb3IgLjRzfS50b2RvLWxpc3QgbGkuY29tcGxl
dGVkIGxhYmVse2NvbG9yOiNkOWQ5ZDk7dGV4dC1kZWNvcmF0aW9uOmxpbmUtdGhyb3VnaH0udG9k
by1saXN0IGxpIC5kZXN0cm95e2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6MDty
aWdodDoxMHB4O2JvdHRvbTowO3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7bWFyZ2luOmF1dG8gMDtm
b250LXNpemU6MzBweDtjb2xvcjojY2M5YTlhO21hcmdpbi1ib3R0b206MTFweDstd2Via2l0LXRy
YW5zaXRpb246Y29sb3IgLjJzIGVhc2Utb3V0O3RyYW5zaXRpb246Y29sb3IgLjJzIGVhc2Utb3V0
fS50b2RvLWxpc3QgbGkgLmRlc3Ryb3k6aG92ZXJ7Y29sb3I6I2FmNWI1ZX0udG9kby1saXN0IGxp
IC5kZXN0cm95OmFmdGVye2NvbnRlbnQ6J1xENyd9LnRvZG8tbGlzdCBsaTpob3ZlciAuZGVzdHJv
eXtkaXNwbGF5OmJsb2NrfS50b2RvLWxpc3QgbGkgLmVkaXR7ZGlzcGxheTpub25lfS50b2RvLWxp
c3QgbGkuZWRpdGluZzpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206LTFweH0uZm9vdGVye2NvbG9y
OiM3Nzc7cGFkZGluZzoxMHB4IDE1cHg7aGVpZ2h0OjIwcHg7dGV4dC1hbGlnbjpjZW50ZXI7Ym9y
ZGVyLXRvcDoxcHggc29saWQgI2U2ZTZlNn0uZm9vdGVyOmJlZm9yZXtjb250ZW50OicnO3Bvc2l0
aW9uOmFic29sdXRlO3JpZ2h0OjA7Ym90dG9tOjA7bGVmdDowO2hlaWdodDo1MHB4O292ZXJmbG93
OmhpZGRlbjtib3gtc2hhZG93OjAgMXB4IDFweCByZ2JhKDAsMCwwLC4yKSwwIDhweCAwIC0zcHgg
I2Y2ZjZmNiwwIDlweCAxcHggLTNweCByZ2JhKDAsMCwwLC4yKSwwIDE2cHggMCAtNnB4ICNmNmY2
ZjYsMCAxN3B4IDJweCAtNnB4IHJnYmEoMCwwLDAsLjIpfS50b2RvLWNvdW50e2Zsb2F0OmxlZnQ7
dGV4dC1hbGlnbjpsZWZ0fS50b2RvLWNvdW50IHN0cm9uZ3tmb250LXdlaWdodDozMDB9LmZpbHRl
cnN7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZTtwb3NpdGlvbjphYnNvbHV0ZTty
aWdodDowO2xlZnQ6MH0uZmlsdGVycyBsaXtkaXNwbGF5OmlubGluZX0uZmlsdGVycyBsaSBhe2Nv
bG9yOmluaGVyaXQ7bWFyZ2luOjNweDtwYWRkaW5nOjNweCA3cHg7dGV4dC1kZWNvcmF0aW9uOm5v
bmU7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmFkaXVzOjNweH0uZmlsdGVy
cyBsaSBhOmhvdmVye2JvcmRlci1jb2xvcjpyZ2JhKDE3NSw0Nyw0NywuMSl9LmZpbHRlcnMgbGkg
YS5zZWxlY3RlZHtib3JkZXItY29sb3I6cmdiYSgxNzUsNDcsNDcsLjIpfS5jbGVhci1jb21wbGV0
ZWQsaHRtbCAuY2xlYXItY29tcGxldGVkOmFjdGl2ZXtmbG9hdDpyaWdodDtwb3NpdGlvbjpyZWxh
dGl2ZTtsaW5lLWhlaWdodDoyMHB4O3RleHQtZGVjb3JhdGlvbjpub25lO2N1cnNvcjpwb2ludGVy
fS5jbGVhci1jb21wbGV0ZWQ6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVuZGVybGluZX0uaW5mb3tt
YXJnaW46NjVweCBhdXRvIDA7Y29sb3I6I2JmYmZiZjtmb250LXNpemU6MTBweDt0ZXh0LXNoYWRv
dzowIDFweCAwIGhzbGEoMCwwJSwxMDAlLC41KTt0ZXh0LWFsaWduOmNlbnRlcn0uaW5mbyBwe2xp
bmUtaGVpZ2h0OjF9LmluZm8gYXtjb2xvcjppbmhlcml0O3RleHQtZGVjb3JhdGlvbjpub25lO2Zv
bnQtd2VpZ2h0OjQwMH0uaW5mbyBhOmhvdmVye3RleHQtZGVjb3JhdGlvbjp1bmRlcmxpbmV9QG1l
ZGlhIHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1yYXRpbzowKXsudG9kby1s
aXN0IGxpIC50b2dnbGUsLnRvZ2dsZS1hbGx7YmFja2dyb3VuZDpub25lfS50b2RvLWxpc3QgbGkg
LnRvZ2dsZXtoZWlnaHQ6NDBweH0udG9nZ2xlLWFsbHstd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUo
OTBkZWcpOy1tcy10cmFuc2Zvcm06cm90YXRlKDkwZGVnKTt0cmFuc2Zvcm06cm90YXRlKDkwZGVn
KTstd2Via2l0LWFwcGVhcmFuY2U6bm9uZTstbW96LWFwcGVhcmFuY2U6bm9uZTthcHBlYXJhbmNl
Om5vbmV9fUBtZWRpYSAobWF4LXdpZHRoOjQzMHB4KXsuZm9vdGVye2hlaWdodDo1MHB4fS5maWx0
ZXJze2JvdHRvbToxMHB4fX0KLS8qIyBzb3VyY2VNYXBwaW5nVVJMPW1haW4uZDQzZDI5MDkuY3Nz
Lm1hcCovClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3QtcmVkdXgvZGlzdC9zdGF0aWMvY3NzL21haW4uZjA0YTczMTkuY3NzIGIvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3QtcmVkdXgvZGlzdC9zdGF0aWMvY3NzL21haW4uZjA0YTczMTkuY3NzCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjQ4YmNmOWNmNzA1MmMzYTEzN2M1OGE0NGY5YWYwY2ZmM2E3ZmVmZGQKLS0tIC9kZXYv
bnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L3N0YXRpYy9jc3MvbWFpbi5m
MDRhNzMxOS5jc3MKQEAgLTAsMCArMSwyIEBACitib2R5LGJ1dHRvbixodG1se21hcmdpbjowO3Bh
ZGRpbmc6MH1idXR0b257Ym9yZGVyOjA7YmFja2dyb3VuZDpub25lO2ZvbnQtc2l6ZToxMDAlO3Zl
cnRpY2FsLWFsaWduOmJhc2VsaW5lO2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5o
ZXJpdDtjb2xvcjppbmhlcml0Oy13ZWJraXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5j
ZTpub25lO2FwcGVhcmFuY2U6bm9uZTstd2Via2l0LWZvbnQtc21vb3RoaW5nOmFudGlhbGlhc2Vk
fWJvZHksYnV0dG9uey1tb3otb3N4LWZvbnQtc21vb3RoaW5nOmdyYXlzY2FsZX1ib2R5e2ZvbnQ6
MTRweCBIZWx2ZXRpY2EgTmV1ZSxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjtsaW5lLWhlaWdo
dDoxLjRlbTtiYWNrZ3JvdW5kOiNmNWY1ZjU7Y29sb3I6IzRkNGQ0ZDttaW4td2lkdGg6MjMwcHg7
bWF4LXdpZHRoOjU1MHB4O21hcmdpbjowIGF1dG87LXdlYmtpdC1mb250LXNtb290aGluZzphbnRp
YWxpYXNlZDtmb250LXdlaWdodDozMDB9OmZvY3Vze291dGxpbmU6MH0uaGlkZGVue2Rpc3BsYXk6
bm9uZX0udG9kb2FwcHtiYWNrZ3JvdW5kOiNmZmY7bWFyZ2luOjEzMHB4IDAgNDBweDtwb3NpdGlv
bjpyZWxhdGl2ZTtib3gtc2hhZG93OjAgMnB4IDRweCAwIHJnYmEoMCwwLDAsLjIpLDAgMjVweCA1
MHB4IDAgcmdiYSgwLDAsMCwuMSl9LnRvZG9hcHAgaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vo
b2xkZXJ7Zm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWlnaHQ6MzAwO2NvbG9yOiNlNmU2ZTZ9LnRv
ZG9hcHAgaW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXJ7Zm9udC1zdHlsZTppdGFsaWM7Zm9udC13ZWln
aHQ6MzAwO2NvbG9yOiNlNmU2ZTZ9LnRvZG9hcHAgaW5wdXQ6OmlucHV0LXBsYWNlaG9sZGVye2Zv
bnQtc3R5bGU6aXRhbGljO2ZvbnQtd2VpZ2h0OjMwMDtjb2xvcjojZTZlNmU2fS50b2RvYXBwIGgx
e3Bvc2l0aW9uOmFic29sdXRlO3RvcDotMTU1cHg7d2lkdGg6MTAwJTtmb250LXNpemU6MTAwcHg7
Zm9udC13ZWlnaHQ6MTAwO3RleHQtYWxpZ246Y2VudGVyO2NvbG9yOnJnYmEoMTc1LDQ3LDQ3LC4x
NSk7LXdlYmtpdC10ZXh0LXJlbmRlcmluZzpvcHRpbWl6ZUxlZ2liaWxpdHk7LW1vei10ZXh0LXJl
bmRlcmluZzpvcHRpbWl6ZUxlZ2liaWxpdHk7dGV4dC1yZW5kZXJpbmc6b3B0aW1pemVMZWdpYmls
aXR5fS5lZGl0LC5uZXctdG9kb3twb3NpdGlvbjpyZWxhdGl2ZTttYXJnaW46MDt3aWR0aDoxMDAl
O2ZvbnQtc2l6ZToyNHB4O2ZvbnQtZmFtaWx5OmluaGVyaXQ7Zm9udC13ZWlnaHQ6aW5oZXJpdDts
aW5lLWhlaWdodDoxLjRlbTtib3JkZXI6MDtjb2xvcjppbmhlcml0O3BhZGRpbmc6NnB4O2JvcmRl
cjoxcHggc29saWQgIzk5OTtib3gtc2hhZG93Omluc2V0IDAgLTFweCA1cHggMCByZ2JhKDAsMCww
LC4yKTtib3gtc2l6aW5nOmJvcmRlci1ib3g7LXdlYmtpdC1mb250LXNtb290aGluZzphbnRpYWxp
YXNlZDstbW96LW9zeC1mb250LXNtb290aGluZzpncmF5c2NhbGV9Lm5ldy10b2Rve3BhZGRpbmc6
MTZweCAxNnB4IDE2cHggNjBweDtib3JkZXI6bm9uZTtiYWNrZ3JvdW5kOnJnYmEoMCwwLDAsLjAw
Myk7Ym94LXNoYWRvdzppbnNldCAwIC0ycHggMXB4IHJnYmEoMCwwLDAsLjAzKX0ubWFpbntwb3Np
dGlvbjpyZWxhdGl2ZTt6LWluZGV4OjI7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U2ZTZlNn0udG9n
Z2xlLWFsbHt0ZXh0LWFsaWduOmNlbnRlcjtib3JkZXI6bm9uZTtvcGFjaXR5OjA7cG9zaXRpb246
YWJzb2x1dGV9LnRvZ2dsZS1hbGwrbGFiZWx7d2lkdGg6NjBweDtoZWlnaHQ6MzRweDtmb250LXNp
emU6MDtwb3NpdGlvbjphYnNvbHV0ZTt0b3A6LTUycHg7bGVmdDotMTNweDstd2Via2l0LXRyYW5z
Zm9ybTpyb3RhdGUoOTBkZWcpOy1tcy10cmFuc2Zvcm06cm90YXRlKDkwZGVnKTt0cmFuc2Zvcm06
cm90YXRlKDkwZGVnKX0udG9nZ2xlLWFsbCtsYWJlbDpiZWZvcmV7Y29udGVudDonXDI3NkYnO2Zv
bnQtc2l6ZToyMnB4O2NvbG9yOiNlNmU2ZTY7cGFkZGluZzoxMHB4IDI3cHh9LnRvZ2dsZS1hbGw6
Y2hlY2tlZCtsYWJlbDpiZWZvcmV7Y29sb3I6IzczNzM3M30udG9kby1saXN0e21hcmdpbjowO3Bh
ZGRpbmc6MDtsaXN0LXN0eWxlOm5vbmV9LnRvZG8tbGlzdCBsaXtwb3NpdGlvbjpyZWxhdGl2ZTtm
b250LXNpemU6MjRweDtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZWRlZGVkfS50b2RvLWxpc3Qg
bGk6bGFzdC1jaGlsZHtib3JkZXItYm90dG9tOm5vbmV9LnRvZG8tbGlzdCBsaS5lZGl0aW5ne2Jv
cmRlci1ib3R0b206bm9uZTtwYWRkaW5nOjB9LnRvZG8tbGlzdCBsaS5lZGl0aW5nIC5lZGl0e2Rp
c3BsYXk6YmxvY2s7d2lkdGg6NTA2cHg7cGFkZGluZzoxMnB4IDE2cHg7bWFyZ2luOjAgMCAwIDQz
cHh9LnRvZG8tbGlzdCBsaS5lZGl0aW5nIC52aWV3e2Rpc3BsYXk6bm9uZX0udG9kby1saXN0IGxp
IC50b2dnbGV7dGV4dC1hbGlnbjpjZW50ZXI7d2lkdGg6NDBweDtoZWlnaHQ6YXV0bztwb3NpdGlv
bjphYnNvbHV0ZTt0b3A6MDtib3R0b206MDttYXJnaW46YXV0byAwO2JvcmRlcjpub25lOy13ZWJr
aXQtYXBwZWFyYW5jZTpub25lOy1tb3otYXBwZWFyYW5jZTpub25lO2FwcGVhcmFuY2U6bm9uZTtv
cGFjaXR5OjB9LnRvZG8tbGlzdCBsaSAudG9nZ2xlK2xhYmVse2JhY2tncm91bmQtaW1hZ2U6dXJs
KCdkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCwlM0NzdmclMjB4bWxucyUzRCUyMmh0dHAlM0EvL3d3
dy53My5vcmcvMjAwMC9zdmclMjIlMjB3aWR0aCUzRCUyMjQwJTIyJTIwaGVpZ2h0JTNEJTIyNDAl
MjIlMjB2aWV3Qm94JTNEJTIyLTEwJTIwLTE4JTIwMTAwJTIwMTM1JTIyJTNFJTNDY2lyY2xlJTIw
Y3glM0QlMjI1MCUyMiUyMGN5JTNEJTIyNTAlMjIlMjByJTNEJTIyNTAlMjIlMjBmaWxsJTNEJTIy
bm9uZSUyMiUyMHN0cm9rZSUzRCUyMiUyM2VkZWRlZCUyMiUyMHN0cm9rZS13aWR0aCUzRCUyMjMl
MjIvJTNFJTNDL3N2ZyUzRScpO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtiYWNrZ3JvdW5k
LXBvc2l0aW9uOjB9LnRvZG8tbGlzdCBsaSAudG9nZ2xlOmNoZWNrZWQrbGFiZWx7YmFja2dyb3Vu
ZC1pbWFnZTp1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LCUzQ3N2ZyUyMHhtbG5zJTNEJTIy
aHR0cCUzQS8vd3d3LnczLm9yZy8yMDAwL3N2ZyUyMiUyMHdpZHRoJTNEJTIyNDAlMjIlMjBoZWln
aHQlM0QlMjI0MCUyMiUyMHZpZXdCb3glM0QlMjItMTAlMjAtMTglMjAxMDAlMjAxMzUlMjIlM0Ul
M0NjaXJjbGUlMjBjeCUzRCUyMjUwJTIyJTIwY3klM0QlMjI1MCUyMiUyMHIlM0QlMjI1MCUyMiUy
MGZpbGwlM0QlMjJub25lJTIyJTIwc3Ryb2tlJTNEJTIyJTIzYmRkYWQ1JTIyJTIwc3Ryb2tlLXdp
ZHRoJTNEJTIyMyUyMi8lM0UlM0NwYXRoJTIwZmlsbCUzRCUyMiUyMzVkYzJhZiUyMiUyMGQlM0Ql
MjJNNzIlMjAyNUw0MiUyMDcxJTIwMjclMjA1NmwtNCUyMDQlMjAyMCUyMDIwJTIwMzQtNTJ6JTIy
LyUzRSUzQy9zdmclM0UnKX0udG9kby1saXN0IGxpIGxhYmVse3dvcmQtYnJlYWs6YnJlYWstYWxs
O3BhZGRpbmc6MTVweCAxNXB4IDE1cHggNjBweDtkaXNwbGF5OmJsb2NrO2xpbmUtaGVpZ2h0OjEu
Mjstd2Via2l0LXRyYW5zaXRpb246Y29sb3IgLjRzO3RyYW5zaXRpb246Y29sb3IgLjRzfS50b2Rv
LWxpc3QgbGkuY29tcGxldGVkIGxhYmVse2NvbG9yOiNkOWQ5ZDk7dGV4dC1kZWNvcmF0aW9uOmxp
bmUtdGhyb3VnaH0udG9kby1saXN0IGxpIC5kZXN0cm95e2Rpc3BsYXk6bm9uZTtwb3NpdGlvbjph
YnNvbHV0ZTt0b3A6MDtyaWdodDoxMHB4O2JvdHRvbTowO3dpZHRoOjQwcHg7aGVpZ2h0OjQwcHg7
bWFyZ2luOmF1dG8gMDtmb250LXNpemU6MzBweDtjb2xvcjojY2M5YTlhO21hcmdpbi1ib3R0b206
MTFweDstd2Via2l0LXRyYW5zaXRpb246Y29sb3IgLjJzIGVhc2Utb3V0O3RyYW5zaXRpb246Y29s
b3IgLjJzIGVhc2Utb3V0fS50b2RvLWxpc3QgbGkgLmRlc3Ryb3k6aG92ZXJ7Y29sb3I6I2FmNWI1
ZX0udG9kby1saXN0IGxpIC5kZXN0cm95OmFmdGVye2NvbnRlbnQ6J1xENyd9LnRvZG8tbGlzdCBs
aTpob3ZlciAuZGVzdHJveXtkaXNwbGF5OmJsb2NrfS50b2RvLWxpc3QgbGkgLmVkaXR7ZGlzcGxh
eTpub25lfS50b2RvLWxpc3QgbGkuZWRpdGluZzpsYXN0LWNoaWxke21hcmdpbi1ib3R0b206LTFw
eH0uZm9vdGVye2NvbG9yOiM3Nzc7cGFkZGluZzoxMHB4IDE1cHg7aGVpZ2h0OjIwcHg7dGV4dC1h
bGlnbjpjZW50ZXI7Ym9yZGVyLXRvcDoxcHggc29saWQgI2U2ZTZlNn0uZm9vdGVyOmJlZm9yZXtj
b250ZW50OicnO3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0OjA7Ym90dG9tOjA7bGVmdDowO2hlaWdo
dDo1MHB4O292ZXJmbG93OmhpZGRlbjtib3gtc2hhZG93OjAgMXB4IDFweCByZ2JhKDAsMCwwLC4y
KSwwIDhweCAwIC0zcHggI2Y2ZjZmNiwwIDlweCAxcHggLTNweCByZ2JhKDAsMCwwLC4yKSwwIDE2
cHggMCAtNnB4ICNmNmY2ZjYsMCAxN3B4IDJweCAtNnB4IHJnYmEoMCwwLDAsLjIpfS50b2RvLWNv
dW50e2Zsb2F0OmxlZnQ7dGV4dC1hbGlnbjpsZWZ0fS50b2RvLWNvdW50IHN0cm9uZ3tmb250LXdl
aWdodDozMDB9LmZpbHRlcnN7bWFyZ2luOjA7cGFkZGluZzowO2xpc3Qtc3R5bGU6bm9uZTtwb3Np
dGlvbjphYnNvbHV0ZTtyaWdodDowO2xlZnQ6MH0uZmlsdGVycyBsaXtkaXNwbGF5OmlubGluZX0u
ZmlsdGVycyBsaSBhe2NvbG9yOmluaGVyaXQ7bWFyZ2luOjNweDtwYWRkaW5nOjNweCA3cHg7dGV4
dC1kZWNvcmF0aW9uOm5vbmU7Ym9yZGVyOjFweCBzb2xpZCB0cmFuc3BhcmVudDtib3JkZXItcmFk
aXVzOjNweH0uZmlsdGVycyBsaSBhOmhvdmVye2JvcmRlci1jb2xvcjpyZ2JhKDE3NSw0Nyw0Nywu
MSl9LmZpbHRlcnMgbGkgYS5zZWxlY3RlZHtib3JkZXItY29sb3I6cmdiYSgxNzUsNDcsNDcsLjIp
fS5jbGVhci1jb21wbGV0ZWQsaHRtbCAuY2xlYXItY29tcGxldGVkOmFjdGl2ZXtmbG9hdDpyaWdo
dDtwb3NpdGlvbjpyZWxhdGl2ZTtsaW5lLWhlaWdodDoyMHB4O3RleHQtZGVjb3JhdGlvbjpub25l
O2N1cnNvcjpwb2ludGVyfS5jbGVhci1jb21wbGV0ZWQ6aG92ZXJ7dGV4dC1kZWNvcmF0aW9uOnVu
ZGVybGluZX0uaW5mb3ttYXJnaW46NjVweCBhdXRvIDA7Y29sb3I6I2JmYmZiZjtmb250LXNpemU6
MTBweDt0ZXh0LXNoYWRvdzowIDFweCAwIGhzbGEoMCwwJSwxMDAlLC41KTt0ZXh0LWFsaWduOmNl
bnRlcn0uaW5mbyBwe2xpbmUtaGVpZ2h0OjF9LmluZm8gYXtjb2xvcjppbmhlcml0O3RleHQtZGVj
b3JhdGlvbjpub25lO2ZvbnQtd2VpZ2h0OjQwMH0uaW5mbyBhOmhvdmVye3RleHQtZGVjb3JhdGlv
bjp1bmRlcmxpbmV9QG1lZGlhIHNjcmVlbiBhbmQgKC13ZWJraXQtbWluLWRldmljZS1waXhlbC1y
YXRpbzowKXsudG9kby1saXN0IGxpIC50b2dnbGUsLnRvZ2dsZS1hbGx7YmFja2dyb3VuZDpub25l
fS50b2RvLWxpc3QgbGkgLnRvZ2dsZXtoZWlnaHQ6NDBweH19QG1lZGlhIChtYXgtd2lkdGg6NDMw
cHgpey5mb290ZXJ7aGVpZ2h0OjUwcHh9LmZpbHRlcnN7Ym90dG9tOjEwcHh9fQorLyojIHNvdXJj
ZU1hcHBpbmdVUkw9bWFpbi5mMDRhNzMxOS5jc3MubWFwKi8KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L3N0YXRpYy9j
c3MvbWFpbi5mMDRhNzMxOS5jc3MubWFwIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvZGlzdC9z
dGF0aWMvY3NzL21haW4uZjA0YTczMTkuY3NzLm1hcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YmY3NmU3YjQ2Yjgz
YmY2MTdjMmM1MTFlYzc0MWQ0MzYyNTE3ZWE2Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFu
Y2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBs
ZXMvcmVhY3QtcmVkdXgvZGlzdC9zdGF0aWMvY3NzL21haW4uZjA0YTczMTkuY3NzLm1hcApAQCAt
MCwwICsxIEBACit7InZlcnNpb24iOjMsInNvdXJjZXMiOltdLCJuYW1lcyI6W10sIm1hcHBpbmdz
IjoiIiwiZmlsZSI6InN0YXRpYy9jc3MvbWFpbi5mMDRhNzMxOS5jc3MiLCJzb3VyY2VSb290Ijoi
In0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRl
c3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9y
ZWFjdC1yZWR1eC9kaXN0L3N0YXRpYy9qcy9tYWluLjQzYTA5NDhjLmpzIGIvUGVyZm9ybWFuY2VU
ZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMv
cmVhY3QtcmVkdXgvZGlzdC9zdGF0aWMvanMvbWFpbi40M2EwOTQ4Yy5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5k
OWE5NDE1ZGIwYjdjMzE5Yzk2NmZjZDI3NTczZTVhNmM0YTc0NTc1Ci0tLSAvZGV2L251bGwKKysr
IGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRl
Y3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvZGlzdC9zdGF0aWMvanMvbWFpbi40M2EwOTQ4Yy5q
cwpAQCAtMCwwICsxLDggQEAKKyFmdW5jdGlvbihlKXtmdW5jdGlvbiB0KHIpe2lmKG5bcl0pcmV0
dXJuIG5bcl0uZXhwb3J0czt2YXIgbz1uW3JdPXtleHBvcnRzOnt9LGlkOnIsbG9hZGVkOiExfTty
ZXR1cm4gZVtyXS5jYWxsKG8uZXhwb3J0cyxvLG8uZXhwb3J0cyx0KSxvLmxvYWRlZD0hMCxvLmV4
cG9ydHN9dmFyIG49e307cmV0dXJuIHQubT1lLHQuYz1uLHQucD0iLi8iLHQoMCl9KGZ1bmN0aW9u
KGUpe2Zvcih2YXIgdCBpbiBlKWlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2Fs
bChlLHQpKXN3aXRjaCh0eXBlb2YgZVt0XSl7Y2FzZSJmdW5jdGlvbiI6YnJlYWs7Y2FzZSJvYmpl
Y3QiOmVbdF09ZnVuY3Rpb24odCl7dmFyIG49dC5zbGljZSgxKSxyPWVbdFswXV07cmV0dXJuIGZ1
bmN0aW9uKGUsdCxvKXtyLmFwcGx5KHRoaXMsW2UsdCxvXS5jb25jYXQobikpfX0oZVt0XSk7YnJl
YWs7ZGVmYXVsdDplW3RdPWVbZVt0XV19cmV0dXJuIGV9KFtmdW5jdGlvbihlLHQsbil7bigxOTYp
LGUuZXhwb3J0cz1uKDIwNCl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlLHQsbixyLGksYSx1LHMpe2lmKG8odCksIWUpe3ZhciBjO2lmKHZvaWQgMD09PXQpYz1uZXcg
RXJyb3IoIk1pbmlmaWVkIGV4Y2VwdGlvbiBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQg
ZGV2IGVudmlyb25tZW50IGZvciB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFs
IGhlbHBmdWwgd2FybmluZ3MuIik7ZWxzZXt2YXIgbD1bbixyLGksYSx1LHNdLHA9MDtjPW5ldyBF
cnJvcih0LnJlcGxhY2UoLyVzL2csZnVuY3Rpb24oKXtyZXR1cm4gbFtwKytdfSkpLGMubmFtZT0i
SW52YXJpYW50IFZpb2xhdGlvbiJ9dGhyb3cgYy5mcmFtZXNUb1BvcD0xLGN9fXZhciBvPWZ1bmN0
aW9uKGUpe307ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9
big3KSxvPXI7ZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IG4oZSl7Zm9yKHZhciB0PWFyZ3VtZW50cy5sZW5ndGgtMSxuPSJNaW5pZmllZCBSZWFjdCBlcnJv
ciAjIitlKyI7IHZpc2l0IGh0dHA6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy9lcnJv
ci1kZWNvZGVyLmh0bWw/aW52YXJpYW50PSIrZSxyPTA7cjx0O3IrKyluKz0iJmFyZ3NbXT0iK2Vu
Y29kZVVSSUNvbXBvbmVudChhcmd1bWVudHNbcisxXSk7bis9IiBmb3IgdGhlIGZ1bGwgbWVzc2Fn
ZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgZm9yIGZ1bGwgZXJyb3Jz
IGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuIjt2YXIgbz1uZXcgRXJyb3Iobik7dGhy
b3cgby5uYW1lPSJJbnZhcmlhbnQgVmlvbGF0aW9uIixvLmZyYW1lc1RvUG9wPTEsb31lLmV4cG9y
dHM9bn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXtpZihudWxsPT09
ZXx8dm9pZCAwPT09ZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJPYmplY3QuYXNzaWduIGNhbm5vdCBi
ZSBjYWxsZWQgd2l0aCBudWxsIG9yIHVuZGVmaW5lZCIpO3JldHVybiBPYmplY3QoZSl9ZnVuY3Rp
b24gcigpe3RyeXtpZighT2JqZWN0LmFzc2lnbilyZXR1cm4hMTt2YXIgZT1uZXcgU3RyaW5nKCJh
YmMiKTtpZihlWzVdPSJkZSIsIjUiPT09T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSlbMF0p
cmV0dXJuITE7Zm9yKHZhciB0PXt9LG49MDtuPDEwO24rKyl0WyJfIitTdHJpbmcuZnJvbUNoYXJD
b2RlKG4pXT1uO3ZhciByPU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHQpLm1hcChmdW5jdGlv
bihlKXtyZXR1cm4gdFtlXX0pO2lmKCIwMTIzNDU2Nzg5IiE9PXIuam9pbigiIikpcmV0dXJuITE7
dmFyIG89e307cmV0dXJuImFiY2RlZmdoaWprbG1ub3BxcnN0Ii5zcGxpdCgiIikuZm9yRWFjaChm
dW5jdGlvbihlKXtvW2VdPWV9KSwiYWJjZGVmZ2hpamtsbW5vcHFyc3QiPT09T2JqZWN0LmtleXMo
T2JqZWN0LmFzc2lnbih7fSxvKSkuam9pbigiIil9Y2F0Y2goaSl7cmV0dXJuITF9fXZhciBvPU9i
amVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsaT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3Bl
cnR5LGE9T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtlLmV4cG9ydHM9cigp
P09iamVjdC5hc3NpZ246ZnVuY3Rpb24oZSx0KXtmb3IodmFyIHIsdSxzPW4oZSksYz0xO2M8YXJn
dW1lbnRzLmxlbmd0aDtjKyspe3I9T2JqZWN0KGFyZ3VtZW50c1tjXSk7Zm9yKHZhciBsIGluIHIp
aS5jYWxsKHIsbCkmJihzW2xdPXJbbF0pO2lmKG8pe3U9byhyKTtmb3IodmFyIHA9MDtwPHUubGVu
Z3RoO3ArKylhLmNhbGwocix1W3BdKSYmKHNbdVtwXV09clt1W3BdXSl9fXJldHVybiBzfX0sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIDE9PT1lLm5v
ZGVUeXBlJiZlLmdldEF0dHJpYnV0ZShoKT09PVN0cmluZyh0KXx8OD09PWUubm9kZVR5cGUmJmUu
bm9kZVZhbHVlPT09IiByZWFjdC10ZXh0OiAiK3QrIiAifHw4PT09ZS5ub2RlVHlwZSYmZS5ub2Rl
VmFsdWU9PT0iIHJlYWN0LWVtcHR5OiAiK3QrIiAifWZ1bmN0aW9uIG8oZSl7Zm9yKHZhciB0O3Q9
ZS5fcmVuZGVyZWRDb21wb25lbnQ7KWU9dDtyZXR1cm4gZX1mdW5jdGlvbiBpKGUsdCl7dmFyIG49
byhlKTtuLl9ob3N0Tm9kZT10LHRbbV09bn1mdW5jdGlvbiBhKGUpe3ZhciB0PWUuX2hvc3ROb2Rl
O3QmJihkZWxldGUgdFttXSxlLl9ob3N0Tm9kZT1udWxsKX1mdW5jdGlvbiB1KGUsdCl7aWYoIShl
Ll9mbGFncyZ2Lmhhc0NhY2hlZENoaWxkTm9kZXMpKXt2YXIgbj1lLl9yZW5kZXJlZENoaWxkcmVu
LGE9dC5maXJzdENoaWxkO2U6Zm9yKHZhciB1IGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eSh1KSl7
dmFyIHM9blt1XSxjPW8ocykuX2RvbUlEO2lmKDAhPT1jKXtmb3IoO251bGwhPT1hO2E9YS5uZXh0
U2libGluZylpZihyKGEsYykpe2kocyxhKTtjb250aW51ZSBlfXAoIjMyIixjKX19ZS5fZmxhZ3N8
PXYuaGFzQ2FjaGVkQ2hpbGROb2Rlc319ZnVuY3Rpb24gcyhlKXtpZihlW21dKXJldHVybiBlW21d
O2Zvcih2YXIgdD1bXTshZVttXTspe2lmKHQucHVzaChlKSwhZS5wYXJlbnROb2RlKXJldHVybiBu
dWxsO2U9ZS5wYXJlbnROb2RlfWZvcih2YXIgbixyO2UmJihyPWVbbV0pO2U9dC5wb3AoKSluPXIs
dC5sZW5ndGgmJnUocixlKTtyZXR1cm4gbn1mdW5jdGlvbiBjKGUpe3ZhciB0PXMoZSk7cmV0dXJu
IG51bGwhPXQmJnQuX2hvc3ROb2RlPT09ZT90Om51bGx9ZnVuY3Rpb24gbChlKXtpZih2b2lkIDA9
PT1lLl9ob3N0Tm9kZT9wKCIzMyIpOnZvaWQgMCxlLl9ob3N0Tm9kZSlyZXR1cm4gZS5faG9zdE5v
ZGU7Zm9yKHZhciB0PVtdOyFlLl9ob3N0Tm9kZTspdC5wdXNoKGUpLGUuX2hvc3RQYXJlbnQ/dm9p
ZCAwOnAoIjM0IiksZT1lLl9ob3N0UGFyZW50O2Zvcig7dC5sZW5ndGg7ZT10LnBvcCgpKXUoZSxl
Ll9ob3N0Tm9kZSk7cmV0dXJuIGUuX2hvc3ROb2RlfXZhciBwPW4oMyksZD1uKDE1KSxmPW4oNjEp
LGg9KG4oMSksZC5JRF9BVFRSSUJVVEVfTkFNRSksdj1mLG09Il9fcmVhY3RJbnRlcm5hbEluc3Rh
bmNlJCIrTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMikseT17Z2V0Q2xvc2VzdElu
c3RhbmNlRnJvbU5vZGU6cyxnZXRJbnN0YW5jZUZyb21Ob2RlOmMsZ2V0Tm9kZUZyb21JbnN0YW5j
ZTpsLHByZWNhY2hlQ2hpbGROb2Rlczp1LHByZWNhY2hlTm9kZTppLHVuY2FjaGVOb2RlOmF9O2Uu
ZXhwb3J0cz15fSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj0hKCJ1bmRlZmluZWQi
PT10eXBlb2Ygd2luZG93fHwhd2luZG93LmRvY3VtZW50fHwhd2luZG93LmRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQpLHI9e2NhblVzZURPTTpuLGNhblVzZVdvcmtlcnM6InVuZGVmaW5lZCIhPXR5cGVv
ZiBXb3JrZXIsY2FuVXNlRXZlbnRMaXN0ZW5lcnM6biYmISghd2luZG93LmFkZEV2ZW50TGlzdGVu
ZXImJiF3aW5kb3cuYXR0YWNoRXZlbnQpLGNhblVzZVZpZXdwb3J0Om4mJiEhd2luZG93LnNjcmVl
bixpc0luV29ya2VyOiFufTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gbihlKXtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4gZX19dmFyIHI9ZnVuY3Rpb24o
KXt9O3IudGhhdFJldHVybnM9bixyLnRoYXRSZXR1cm5zRmFsc2U9bighMSksci50aGF0UmV0dXJu
c1RydWU9bighMCksci50aGF0UmV0dXJuc051bGw9bihudWxsKSxyLnRoYXRSZXR1cm5zVGhpcz1m
dW5jdGlvbigpe3JldHVybiB0aGlzfSxyLnRoYXRSZXR1cm5zQXJndW1lbnQ9ZnVuY3Rpb24oZSl7
cmV0dXJuIGV9LGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBy
PW51bGw7ZS5leHBvcnRzPXtkZWJ1Z1Rvb2w6cn19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcigpe08uUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbiYmQz92b2lkIDA6bCgi
MTIzIil9ZnVuY3Rpb24gbygpe3RoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKSx0aGlzLmRp
cnR5Q29tcG9uZW50c0xlbmd0aD1udWxsLHRoaXMuY2FsbGJhY2tRdWV1ZT1kLmdldFBvb2xlZCgp
LHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb249Ty5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLmdl
dFBvb2xlZCghMCl9ZnVuY3Rpb24gaShlLHQsbixvLGksYSl7cmV0dXJuIHIoKSxDLmJhdGNoZWRV
cGRhdGVzKGUsdCxuLG8saSxhKX1mdW5jdGlvbiBhKGUsdCl7cmV0dXJuIGUuX21vdW50T3JkZXIt
dC5fbW91bnRPcmRlcn1mdW5jdGlvbiB1KGUpe3ZhciB0PWUuZGlydHlDb21wb25lbnRzTGVuZ3Ro
O3QhPT15Lmxlbmd0aD9sKCIxMjQiLHQseS5sZW5ndGgpOnZvaWQgMCx5LnNvcnQoYSksZysrO2Zv
cih2YXIgbj0wO248dDtuKyspe3ZhciByPXlbbl0sbz1yLl9wZW5kaW5nQ2FsbGJhY2tzO3IuX3Bl
bmRpbmdDYWxsYmFja3M9bnVsbDt2YXIgaTtpZihoLmxvZ1RvcExldmVsUmVuZGVycyl7dmFyIHU9
cjtyLl9jdXJyZW50RWxlbWVudC50eXBlLmlzUmVhY3RUb3BMZXZlbFdyYXBwZXImJih1PXIuX3Jl
bmRlcmVkQ29tcG9uZW50KSxpPSJSZWFjdCB1cGRhdGU6ICIrdS5nZXROYW1lKCksY29uc29sZS50
aW1lKGkpfWlmKHYucGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5KHIsZS5yZWNvbmNpbGVUcmFuc2Fj
dGlvbixnKSxpJiZjb25zb2xlLnRpbWVFbmQoaSksbylmb3IodmFyIHM9MDtzPG8ubGVuZ3RoO3Mr
KyllLmNhbGxiYWNrUXVldWUuZW5xdWV1ZShvW3NdLHIuZ2V0UHVibGljSW5zdGFuY2UoKSl9fWZ1
bmN0aW9uIHMoZSl7cmV0dXJuIHIoKSxDLmlzQmF0Y2hpbmdVcGRhdGVzPyh5LnB1c2goZSksdm9p
ZChudWxsPT1lLl91cGRhdGVCYXRjaE51bWJlciYmKGUuX3VwZGF0ZUJhdGNoTnVtYmVyPWcrMSkp
KTp2b2lkIEMuYmF0Y2hlZFVwZGF0ZXMocyxlKX1mdW5jdGlvbiBjKGUsdCl7Qy5pc0JhdGNoaW5n
VXBkYXRlcz92b2lkIDA6bCgiMTI1IiksYi5lbnF1ZXVlKGUsdCksXz0hMH12YXIgbD1uKDMpLHA9
big0KSxkPW4oNTkpLGY9bigxMyksaD1uKDY0KSx2PW4oMTYpLG09bigyNykseT0obigxKSxbXSks
Zz0wLGI9ZC5nZXRQb29sZWQoKSxfPSExLEM9bnVsbCxFPXtpbml0aWFsaXplOmZ1bmN0aW9uKCl7
dGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGg9eS5sZW5ndGh9LGNsb3NlOmZ1bmN0aW9uKCl7dGhp
cy5kaXJ0eUNvbXBvbmVudHNMZW5ndGghPT15Lmxlbmd0aD8oeS5zcGxpY2UoMCx0aGlzLmRpcnR5
Q29tcG9uZW50c0xlbmd0aCksUCgpKTp5Lmxlbmd0aD0wfX0sdz17aW5pdGlhbGl6ZTpmdW5jdGlv
bigpe3RoaXMuY2FsbGJhY2tRdWV1ZS5yZXNldCgpfSxjbG9zZTpmdW5jdGlvbigpe3RoaXMuY2Fs
bGJhY2tRdWV1ZS5ub3RpZnlBbGwoKX19LFQ9W0Usd107cChvLnByb3RvdHlwZSxtLHtnZXRUcmFu
c2FjdGlvbldyYXBwZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIFR9LGRlc3RydWN0b3I6ZnVuY3Rpb24o
KXt0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aD1udWxsLGQucmVsZWFzZSh0aGlzLmNhbGxiYWNr
UXVldWUpLHRoaXMuY2FsbGJhY2tRdWV1ZT1udWxsLE8uUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlv
bi5yZWxlYXNlKHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24pLHRoaXMucmVjb25jaWxlVHJhbnNh
Y3Rpb249bnVsbH0scGVyZm9ybTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG0ucGVyZm9ybS5jYWxs
KHRoaXMsdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbi5wZXJmb3JtLHRoaXMucmVjb25jaWxlVHJh
bnNhY3Rpb24sZSx0LG4pfX0pLGYuYWRkUG9vbGluZ1RvKG8pO3ZhciBQPWZ1bmN0aW9uKCl7Zm9y
KDt5Lmxlbmd0aHx8Xzspe2lmKHkubGVuZ3RoKXt2YXIgZT1vLmdldFBvb2xlZCgpO2UucGVyZm9y
bSh1LG51bGwsZSksby5yZWxlYXNlKGUpfWlmKF8pe189ITE7dmFyIHQ9YjtiPWQuZ2V0UG9vbGVk
KCksdC5ub3RpZnlBbGwoKSxkLnJlbGVhc2UodCl9fX0seD17aW5qZWN0UmVjb25jaWxlVHJhbnNh
Y3Rpb246ZnVuY3Rpb24oZSl7ZT92b2lkIDA6bCgiMTI2IiksTy5SZWFjdFJlY29uY2lsZVRyYW5z
YWN0aW9uPWV9LGluamVjdEJhdGNoaW5nU3RyYXRlZ3k6ZnVuY3Rpb24oZSl7ZT92b2lkIDA6bCgi
MTI3IiksImZ1bmN0aW9uIiE9dHlwZW9mIGUuYmF0Y2hlZFVwZGF0ZXM/bCgiMTI4Iik6dm9pZCAw
LCJib29sZWFuIiE9dHlwZW9mIGUuaXNCYXRjaGluZ1VwZGF0ZXM/bCgiMTI5Iik6dm9pZCAwLEM9
ZX19LE89e1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb246bnVsbCxiYXRjaGVkVXBkYXRlczppLGVu
cXVldWVVcGRhdGU6cyxmbHVzaEJhdGNoZWRVcGRhdGVzOlAsaW5qZWN0aW9uOngsYXNhcDpjfTtl
LmV4cG9ydHM9T30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxu
LHIpe3RoaXMuZGlzcGF0Y2hDb25maWc9ZSx0aGlzLl90YXJnZXRJbnN0PXQsdGhpcy5uYXRpdmVF
dmVudD1uO3ZhciBvPXRoaXMuY29uc3RydWN0b3IuSW50ZXJmYWNlO2Zvcih2YXIgaSBpbiBvKWlm
KG8uaGFzT3duUHJvcGVydHkoaSkpe3ZhciB1PW9baV07dT90aGlzW2ldPXUobik6InRhcmdldCI9
PT1pP3RoaXMudGFyZ2V0PXI6dGhpc1tpXT1uW2ldfXZhciBzPW51bGwhPW4uZGVmYXVsdFByZXZl
bnRlZD9uLmRlZmF1bHRQcmV2ZW50ZWQ6bi5yZXR1cm5WYWx1ZT09PSExO3JldHVybiBzP3RoaXMu
aXNEZWZhdWx0UHJldmVudGVkPWEudGhhdFJldHVybnNUcnVlOnRoaXMuaXNEZWZhdWx0UHJldmVu
dGVkPWEudGhhdFJldHVybnNGYWxzZSx0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPWEudGhhdFJl
dHVybnNGYWxzZSx0aGlzfXZhciBvPW4oNCksaT1uKDEzKSxhPW4oNyksdT0obigyKSwiZnVuY3Rp
b24iPT10eXBlb2YgUHJveHksWyJkaXNwYXRjaENvbmZpZyIsIl90YXJnZXRJbnN0IiwibmF0aXZl
RXZlbnQiLCJpc0RlZmF1bHRQcmV2ZW50ZWQiLCJpc1Byb3BhZ2F0aW9uU3RvcHBlZCIsIl9kaXNw
YXRjaExpc3RlbmVycyIsIl9kaXNwYXRjaEluc3RhbmNlcyJdKSxzPXt0eXBlOm51bGwsdGFyZ2V0
Om51bGwsY3VycmVudFRhcmdldDphLnRoYXRSZXR1cm5zTnVsbCxldmVudFBoYXNlOm51bGwsYnVi
YmxlczpudWxsLGNhbmNlbGFibGU6bnVsbCx0aW1lU3RhbXA6ZnVuY3Rpb24oZSl7cmV0dXJuIGUu
dGltZVN0YW1wfHxEYXRlLm5vdygpfSxkZWZhdWx0UHJldmVudGVkOm51bGwsaXNUcnVzdGVkOm51
bGx9O28oci5wcm90b3R5cGUse3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0
UHJldmVudGVkPSEwO3ZhciBlPXRoaXMubmF0aXZlRXZlbnQ7ZSYmKGUucHJldmVudERlZmF1bHQ/
ZS5wcmV2ZW50RGVmYXVsdCgpOiJ1bmtub3duIiE9dHlwZW9mIGUucmV0dXJuVmFsdWUmJihlLnJl
dHVyblZhbHVlPSExKSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1hLnRoYXRSZXR1cm5zVHJ1ZSl9
LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMubmF0aXZlRXZlbnQ7ZSYmKGUu
c3RvcFByb3BhZ2F0aW9uP2Uuc3RvcFByb3BhZ2F0aW9uKCk6InVua25vd24iIT10eXBlb2YgZS5j
YW5jZWxCdWJibGUmJihlLmNhbmNlbEJ1YmJsZT0hMCksdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBl
ZD1hLnRoYXRSZXR1cm5zVHJ1ZSl9LHBlcnNpc3Q6ZnVuY3Rpb24oKXt0aGlzLmlzUGVyc2lzdGVu
dD1hLnRoYXRSZXR1cm5zVHJ1ZX0saXNQZXJzaXN0ZW50OmEudGhhdFJldHVybnNGYWxzZSxkZXN0
cnVjdG9yOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jb25zdHJ1Y3Rvci5JbnRlcmZhY2U7Zm9yKHZh
ciB0IGluIGUpdGhpc1t0XT1udWxsO2Zvcih2YXIgbj0wO248dS5sZW5ndGg7bisrKXRoaXNbdVtu
XV09bnVsbH19KSxyLkludGVyZmFjZT1zLHIuYXVnbWVudENsYXNzPWZ1bmN0aW9uKGUsdCl7dmFy
IG49dGhpcyxyPWZ1bmN0aW9uKCl7fTtyLnByb3RvdHlwZT1uLnByb3RvdHlwZTt2YXIgYT1uZXcg
cjtvKGEsZS5wcm90b3R5cGUpLGUucHJvdG90eXBlPWEsZS5wcm90b3R5cGUuY29uc3RydWN0b3I9
ZSxlLkludGVyZmFjZT1vKHt9LG4uSW50ZXJmYWNlLHQpLGUuYXVnbWVudENsYXNzPW4uYXVnbWVu
dENsYXNzLGkuYWRkUG9vbGluZ1RvKGUsaS5mb3VyQXJndW1lbnRQb29sZXIpfSxpLmFkZFBvb2xp
bmdUbyhyLGkuZm91ckFyZ3VtZW50UG9vbGVyKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0KXsi
dXNlIHN0cmljdCI7dmFyIG49e2N1cnJlbnQ6bnVsbH07ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPW4oMTcpfSxbMjMxLDNdLGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihtKXt2YXIgdD1lLm5vZGUsbj1lLmNoaWxk
cmVuO2lmKG4ubGVuZ3RoKWZvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKXkodCxuW3JdLG51bGwp
O2Vsc2UgbnVsbCE9ZS5odG1sP3AodCxlLmh0bWwpOm51bGwhPWUudGV4dCYmZih0LGUudGV4dCl9
fWZ1bmN0aW9uIG8oZSx0KXtlLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHQubm9kZSxlKSxyKHQp
fWZ1bmN0aW9uIGkoZSx0KXttP2UuY2hpbGRyZW4ucHVzaCh0KTplLm5vZGUuYXBwZW5kQ2hpbGQo
dC5ub2RlKX1mdW5jdGlvbiBhKGUsdCl7bT9lLmh0bWw9dDpwKGUubm9kZSx0KX1mdW5jdGlvbiB1
KGUsdCl7bT9lLnRleHQ9dDpmKGUubm9kZSx0KX1mdW5jdGlvbiBzKCl7cmV0dXJuIHRoaXMubm9k
ZS5ub2RlTmFtZX1mdW5jdGlvbiBjKGUpe3JldHVybntub2RlOmUsY2hpbGRyZW46W10saHRtbDpu
dWxsLHRleHQ6bnVsbCx0b1N0cmluZzpzfX12YXIgbD1uKDM1KSxwPW4oMjkpLGQ9big0MyksZj1u
KDc3KSxoPTEsdj0xMSxtPSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJiJudW1iZXIiPT10
eXBlb2YgZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHwidW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRv
ciYmInN0cmluZyI9PXR5cGVvZiBuYXZpZ2F0b3IudXNlckFnZW50JiYvXGJFZGdlXC9cZC8udGVz
dChuYXZpZ2F0b3IudXNlckFnZW50KSx5PWQoZnVuY3Rpb24oZSx0LG4pe3Qubm9kZS5ub2RlVHlw
ZT09PXZ8fHQubm9kZS5ub2RlVHlwZT09PWgmJiJvYmplY3QiPT09dC5ub2RlLm5vZGVOYW1lLnRv
TG93ZXJDYXNlKCkmJihudWxsPT10Lm5vZGUubmFtZXNwYWNlVVJJfHx0Lm5vZGUubmFtZXNwYWNl
VVJJPT09bC5odG1sKT8ocih0KSxlLmluc2VydEJlZm9yZSh0Lm5vZGUsbikpOihlLmluc2VydEJl
Zm9yZSh0Lm5vZGUsbikscih0KSl9KTtjLmluc2VydFRyZWVCZWZvcmU9eSxjLnJlcGxhY2VDaGls
ZFdpdGhUcmVlPW8sYy5xdWV1ZUNoaWxkPWksYy5xdWV1ZUhUTUw9YSxjLnF1ZXVlVGV4dD11LGUu
ZXhwb3J0cz1jfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXty
ZXR1cm4oZSZ0KT09PXR9dmFyIG89bigzKSxpPShuKDEpLHtNVVNUX1VTRV9QUk9QRVJUWToxLEhB
U19CT09MRUFOX1ZBTFVFOjQsSEFTX05VTUVSSUNfVkFMVUU6OCxIQVNfUE9TSVRJVkVfTlVNRVJJ
Q19WQUxVRToyNCxIQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFOjMyLGluamVjdERPTVByb3Bl
cnR5Q29uZmlnOmZ1bmN0aW9uKGUpe3ZhciB0PWksbj1lLlByb3BlcnRpZXN8fHt9LGE9ZS5ET01B
dHRyaWJ1dGVOYW1lc3BhY2VzfHx7fSxzPWUuRE9NQXR0cmlidXRlTmFtZXN8fHt9LGM9ZS5ET01Q
cm9wZXJ0eU5hbWVzfHx7fSxsPWUuRE9NTXV0YXRpb25NZXRob2RzfHx7fTtlLmlzQ3VzdG9tQXR0
cmlidXRlJiZ1Ll9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9ucy5wdXNoKGUuaXNDdXN0b21BdHRy
aWJ1dGUpO2Zvcih2YXIgcCBpbiBuKXt1LnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkocCk/bygi
NDgiLHApOnZvaWQgMDt2YXIgZD1wLnRvTG93ZXJDYXNlKCksZj1uW3BdLGg9e2F0dHJpYnV0ZU5h
bWU6ZCxhdHRyaWJ1dGVOYW1lc3BhY2U6bnVsbCxwcm9wZXJ0eU5hbWU6cCxtdXRhdGlvbk1ldGhv
ZDpudWxsLG11c3RVc2VQcm9wZXJ0eTpyKGYsdC5NVVNUX1VTRV9QUk9QRVJUWSksaGFzQm9vbGVh
blZhbHVlOnIoZix0LkhBU19CT09MRUFOX1ZBTFVFKSxoYXNOdW1lcmljVmFsdWU6cihmLHQuSEFT
X05VTUVSSUNfVkFMVUUpLGhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlOnIoZix0LkhBU19QT1NJVElW
RV9OVU1FUklDX1ZBTFVFKSxoYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlOnIoZix0LkhBU19PVkVS
TE9BREVEX0JPT0xFQU5fVkFMVUUpfTtpZihoLmhhc0Jvb2xlYW5WYWx1ZStoLmhhc051bWVyaWNW
YWx1ZStoLmhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWU8PTE/dm9pZCAwOm8oIjUwIixwKSxzLmhh
c093blByb3BlcnR5KHApKXt2YXIgdj1zW3BdO2guYXR0cmlidXRlTmFtZT12fWEuaGFzT3duUHJv
cGVydHkocCkmJihoLmF0dHJpYnV0ZU5hbWVzcGFjZT1hW3BdKSxjLmhhc093blByb3BlcnR5KHAp
JiYoaC5wcm9wZXJ0eU5hbWU9Y1twXSksbC5oYXNPd25Qcm9wZXJ0eShwKSYmKGgubXV0YXRpb25N
ZXRob2Q9bFtwXSksdS5wcm9wZXJ0aWVzW3BdPWh9fX0pLGE9IjpBLVpfYS16XFx1MDBDMC1cXHUw
MEQ2XFx1MDBEOC1cXHUwMEY2XFx1MDBGOC1cXHUwMkZGXFx1MDM3MC1cXHUwMzdEXFx1MDM3Ri1c
XHUxRkZGXFx1MjAwQy1cXHUyMDBEXFx1MjA3MC1cXHUyMThGXFx1MkMwMC1cXHUyRkVGXFx1MzAw
MS1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkZEIix1PXtJRF9BVFRSSUJVVEVf
TkFNRToiZGF0YS1yZWFjdGlkIixST09UX0FUVFJJQlVURV9OQU1FOiJkYXRhLXJlYWN0cm9vdCIs
QVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUjphLEFUVFJJQlVURV9OQU1FX0NIQVI6YSsiXFwtLjAt
OVxcdTAwQjdcXHUwMzAwLVxcdTAzNkZcXHUyMDNGLVxcdTIwNDAiLHByb3BlcnRpZXM6e30sZ2V0
UG9zc2libGVTdGFuZGFyZE5hbWU6bnVsbCxfaXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnM6W10s
aXNDdXN0b21BdHRyaWJ1dGU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDx1Ll9pc0N1c3RvbUF0
dHJpYnV0ZUZ1bmN0aW9ucy5sZW5ndGg7dCsrKXt2YXIgbj11Ll9pc0N1c3RvbUF0dHJpYnV0ZUZ1
bmN0aW9uc1t0XTtpZihuKGUpKXJldHVybiEwfXJldHVybiExfSxpbmplY3Rpb246aX07ZS5leHBv
cnRzPXV9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe28uYXR0YWNo
UmVmcyh0aGlzLHRoaXMuX2N1cnJlbnRFbGVtZW50KX12YXIgbz1uKDE2MCksaT0obig4KSxuKDIp
LHttb3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixvLGksYSl7dmFyIHU9ZS5tb3VudENvbXBv
bmVudCh0LG4sbyxpLGEpO3JldHVybiBlLl9jdXJyZW50RWxlbWVudCYmbnVsbCE9ZS5fY3VycmVu
dEVsZW1lbnQucmVmJiZ0LmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocixlKSx1fSxnZXRI
b3N0Tm9kZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5nZXRIb3N0Tm9kZSgpfSx1bm1vdW50Q29tcG9u
ZW50OmZ1bmN0aW9uKGUsdCl7by5kZXRhY2hSZWZzKGUsZS5fY3VycmVudEVsZW1lbnQpLGUudW5t
b3VudENvbXBvbmVudCh0KX0scmVjZWl2ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQsbixpKXt2YXIg
YT1lLl9jdXJyZW50RWxlbWVudDtpZih0IT09YXx8aSE9PWUuX2NvbnRleHQpe3ZhciB1PW8uc2hv
dWxkVXBkYXRlUmVmcyhhLHQpO3UmJm8uZGV0YWNoUmVmcyhlLGEpLGUucmVjZWl2ZUNvbXBvbmVu
dCh0LG4saSksdSYmZS5fY3VycmVudEVsZW1lbnQmJm51bGwhPWUuX2N1cnJlbnRFbGVtZW50LnJl
ZiYmbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHIsZSl9fSxwZXJmb3JtVXBkYXRlSWZO
ZWNlc3Nhcnk6ZnVuY3Rpb24oZSx0LG4pe2UuX3VwZGF0ZUJhdGNoTnVtYmVyPT09biYmZS5wZXJm
b3JtVXBkYXRlSWZOZWNlc3NhcnkodCl9fSk7ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7dmFyIHI9big0KSxvPW4oODkpLGk9bigyMTUpLGE9bigyMTYpLHU9bigxOCks
cz1uKDIxNyksYz1uKDIxOCksbD1uKDIxOSkscD1uKDIyMyksZD11LmNyZWF0ZUVsZW1lbnQsZj11
LmNyZWF0ZUZhY3RvcnksaD11LmNsb25lRWxlbWVudCx2PXIsbT1mdW5jdGlvbihlKXtyZXR1cm4g
ZX0seT17Q2hpbGRyZW46e21hcDppLm1hcCxmb3JFYWNoOmkuZm9yRWFjaCxjb3VudDppLmNvdW50
LHRvQXJyYXk6aS50b0FycmF5LG9ubHk6cH0sQ29tcG9uZW50Om8uQ29tcG9uZW50LFB1cmVDb21w
b25lbnQ6by5QdXJlQ29tcG9uZW50LGNyZWF0ZUVsZW1lbnQ6ZCxjbG9uZUVsZW1lbnQ6aCxpc1Zh
bGlkRWxlbWVudDp1LmlzVmFsaWRFbGVtZW50LFByb3BUeXBlczpzLGNyZWF0ZUNsYXNzOmwsY3Jl
YXRlRmFjdG9yeTpmLGNyZWF0ZU1peGluOm0sRE9NOmEsdmVyc2lvbjpjLF9fc3ByZWFkOnZ9O2Uu
ZXhwb3J0cz15fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0
dXJuIHZvaWQgMCE9PWUucmVmfWZ1bmN0aW9uIG8oZSl7cmV0dXJuIHZvaWQgMCE9PWUua2V5fXZh
ciBpPW4oNCksYT1uKDExKSx1PShuKDIpLG4oOTMpLE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJv
cGVydHkpLHM9big5MSksYz17a2V5OiEwLHJlZjohMCxfX3NlbGY6ITAsX19zb3VyY2U6ITB9LGw9
ZnVuY3Rpb24oZSx0LG4scixvLGksYSl7dmFyIHU9eyQkdHlwZW9mOnMsdHlwZTplLGtleTp0LHJl
ZjpuLHByb3BzOmEsX293bmVyOml9O3JldHVybiB1fTtsLmNyZWF0ZUVsZW1lbnQ9ZnVuY3Rpb24o
ZSx0LG4pe3ZhciBpLHM9e30scD1udWxsLGQ9bnVsbCxmPW51bGwsaD1udWxsO2lmKG51bGwhPXQp
e3IodCkmJihkPXQucmVmKSxvKHQpJiYocD0iIit0LmtleSksZj12b2lkIDA9PT10Ll9fc2VsZj9u
dWxsOnQuX19zZWxmLGg9dm9pZCAwPT09dC5fX3NvdXJjZT9udWxsOnQuX19zb3VyY2U7Zm9yKGkg
aW4gdCl1LmNhbGwodCxpKSYmIWMuaGFzT3duUHJvcGVydHkoaSkmJihzW2ldPXRbaV0pfXZhciB2
PWFyZ3VtZW50cy5sZW5ndGgtMjtpZigxPT09dilzLmNoaWxkcmVuPW47ZWxzZSBpZih2PjEpe2Zv
cih2YXIgbT1BcnJheSh2KSx5PTA7eTx2O3krKyltW3ldPWFyZ3VtZW50c1t5KzJdO3MuY2hpbGRy
ZW49bX1pZihlJiZlLmRlZmF1bHRQcm9wcyl7dmFyIGc9ZS5kZWZhdWx0UHJvcHM7Zm9yKGkgaW4g
Zyl2b2lkIDA9PT1zW2ldJiYoc1tpXT1nW2ldKX1yZXR1cm4gbChlLHAsZCxmLGgsYS5jdXJyZW50
LHMpfSxsLmNyZWF0ZUZhY3Rvcnk9ZnVuY3Rpb24oZSl7dmFyIHQ9bC5jcmVhdGVFbGVtZW50LmJp
bmQobnVsbCxlKTtyZXR1cm4gdC50eXBlPWUsdH0sbC5jbG9uZUFuZFJlcGxhY2VLZXk9ZnVuY3Rp
b24oZSx0KXt2YXIgbj1sKGUudHlwZSx0LGUucmVmLGUuX3NlbGYsZS5fc291cmNlLGUuX293bmVy
LGUucHJvcHMpO3JldHVybiBufSxsLmNsb25lRWxlbWVudD1mdW5jdGlvbihlLHQsbil7dmFyIHMs
cD1pKHt9LGUucHJvcHMpLGQ9ZS5rZXksZj1lLnJlZixoPWUuX3NlbGYsdj1lLl9zb3VyY2UsbT1l
Ll9vd25lcjtpZihudWxsIT10KXtyKHQpJiYoZj10LnJlZixtPWEuY3VycmVudCksbyh0KSYmKGQ9
IiIrdC5rZXkpO3ZhciB5O2UudHlwZSYmZS50eXBlLmRlZmF1bHRQcm9wcyYmKHk9ZS50eXBlLmRl
ZmF1bHRQcm9wcyk7Zm9yKHMgaW4gdCl1LmNhbGwodCxzKSYmIWMuaGFzT3duUHJvcGVydHkocykm
Jih2b2lkIDA9PT10W3NdJiZ2b2lkIDAhPT15P3Bbc109eVtzXTpwW3NdPXRbc10pfXZhciBnPWFy
Z3VtZW50cy5sZW5ndGgtMjtpZigxPT09ZylwLmNoaWxkcmVuPW47ZWxzZSBpZihnPjEpe2Zvcih2
YXIgYj1BcnJheShnKSxfPTA7XzxnO18rKyliW19dPWFyZ3VtZW50c1tfKzJdO3AuY2hpbGRyZW49
Yn1yZXR1cm4gbChlLnR5cGUsZCxmLGgsdixtLHApfSxsLmlzVmFsaWRFbGVtZW50PWZ1bmN0aW9u
KGUpe3JldHVybiJvYmplY3QiPT10eXBlb2YgZSYmbnVsbCE9PWUmJmUuJCR0eXBlb2Y9PT1zfSxl
LmV4cG9ydHM9bH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3Jl
dHVybiJidXR0b24iPT09ZXx8ImlucHV0Ij09PWV8fCJzZWxlY3QiPT09ZXx8InRleHRhcmVhIj09
PWV9ZnVuY3Rpb24gbyhlLHQsbil7c3dpdGNoKGUpe2Nhc2Uib25DbGljayI6Y2FzZSJvbkNsaWNr
Q2FwdHVyZSI6Y2FzZSJvbkRvdWJsZUNsaWNrIjpjYXNlIm9uRG91YmxlQ2xpY2tDYXB0dXJlIjpj
YXNlIm9uTW91c2VEb3duIjpjYXNlIm9uTW91c2VEb3duQ2FwdHVyZSI6Y2FzZSJvbk1vdXNlTW92
ZSI6Y2FzZSJvbk1vdXNlTW92ZUNhcHR1cmUiOmNhc2Uib25Nb3VzZVVwIjpjYXNlIm9uTW91c2VV
cENhcHR1cmUiOnJldHVybiEoIW4uZGlzYWJsZWR8fCFyKHQpKTtkZWZhdWx0OnJldHVybiExfX12
YXIgaT1uKDMpLGE9bigzNiksdT1uKDM3KSxzPW4oNDEpLGM9big3MCksbD1uKDcxKSxwPShuKDEp
LHt9KSxkPW51bGwsZj1mdW5jdGlvbihlLHQpe2UmJih1LmV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRl
cihlLHQpLGUuaXNQZXJzaXN0ZW50KCl8fGUuY29uc3RydWN0b3IucmVsZWFzZShlKSl9LGg9ZnVu
Y3Rpb24oZSl7cmV0dXJuIGYoZSwhMCl9LHY9ZnVuY3Rpb24oZSl7cmV0dXJuIGYoZSwhMSl9LG09
ZnVuY3Rpb24oZSl7cmV0dXJuIi4iK2UuX3Jvb3ROb2RlSUR9LHk9e2luamVjdGlvbjp7aW5qZWN0
RXZlbnRQbHVnaW5PcmRlcjphLmluamVjdEV2ZW50UGx1Z2luT3JkZXIsaW5qZWN0RXZlbnRQbHVn
aW5zQnlOYW1lOmEuaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lfSxwdXRMaXN0ZW5lcjpmdW5jdGlv
bihlLHQsbil7ImZ1bmN0aW9uIiE9dHlwZW9mIG4/aSgiOTQiLHQsdHlwZW9mIG4pOnZvaWQgMDt2
YXIgcj1tKGUpLG89cFt0XXx8KHBbdF09e30pO29bcl09bjt2YXIgdT1hLnJlZ2lzdHJhdGlvbk5h
bWVNb2R1bGVzW3RdO3UmJnUuZGlkUHV0TGlzdGVuZXImJnUuZGlkUHV0TGlzdGVuZXIoZSx0LG4p
fSxnZXRMaXN0ZW5lcjpmdW5jdGlvbihlLHQpe3ZhciBuPXBbdF07aWYobyh0LGUuX2N1cnJlbnRF
bGVtZW50LnR5cGUsZS5fY3VycmVudEVsZW1lbnQucHJvcHMpKXJldHVybiBudWxsO3ZhciByPW0o
ZSk7cmV0dXJuIG4mJm5bcl19LGRlbGV0ZUxpc3RlbmVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49YS5y
ZWdpc3RyYXRpb25OYW1lTW9kdWxlc1t0XTtuJiZuLndpbGxEZWxldGVMaXN0ZW5lciYmbi53aWxs
RGVsZXRlTGlzdGVuZXIoZSx0KTt2YXIgcj1wW3RdO2lmKHIpe3ZhciBvPW0oZSk7ZGVsZXRlIHJb
b119fSxkZWxldGVBbGxMaXN0ZW5lcnM6ZnVuY3Rpb24oZSl7dmFyIHQ9bShlKTtmb3IodmFyIG4g
aW4gcClpZihwLmhhc093blByb3BlcnR5KG4pJiZwW25dW3RdKXt2YXIgcj1hLnJlZ2lzdHJhdGlv
bk5hbWVNb2R1bGVzW25dO3ImJnIud2lsbERlbGV0ZUxpc3RlbmVyJiZyLndpbGxEZWxldGVMaXN0
ZW5lcihlLG4pLGRlbGV0ZSBwW25dW3RdfX0sZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbixy
KXtmb3IodmFyIG8saT1hLnBsdWdpbnMsdT0wO3U8aS5sZW5ndGg7dSsrKXt2YXIgcz1pW3VdO2lm
KHMpe3ZhciBsPXMuZXh0cmFjdEV2ZW50cyhlLHQsbixyKTtsJiYobz1jKG8sbCkpfX1yZXR1cm4g
b30sZW5xdWV1ZUV2ZW50czpmdW5jdGlvbihlKXtlJiYoZD1jKGQsZSkpfSxwcm9jZXNzRXZlbnRR
dWV1ZTpmdW5jdGlvbihlKXt2YXIgdD1kO2Q9bnVsbCxlP2wodCxoKTpsKHQsdiksZD9pKCI5NSIp
OnZvaWQgMCxzLnJldGhyb3dDYXVnaHRFcnJvcigpfSxfX3B1cmdlOmZ1bmN0aW9uKCl7cD17fX0s
X19nZXRMaXN0ZW5lckJhbms6ZnVuY3Rpb24oKXtyZXR1cm4gcH19O2UuZXhwb3J0cz15fSxmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4pe3ZhciByPXQuZGlzcGF0
Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXNbbl07cmV0dXJuIHkoZSxyKX1mdW5jdGlv
biBvKGUsdCxuKXt2YXIgbz1yKGUsbix0KTtvJiYobi5fZGlzcGF0Y2hMaXN0ZW5lcnM9dihuLl9k
aXNwYXRjaExpc3RlbmVycyxvKSxuLl9kaXNwYXRjaEluc3RhbmNlcz12KG4uX2Rpc3BhdGNoSW5z
dGFuY2VzLGUpKX1mdW5jdGlvbiBpKGUpe2UmJmUuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0
cmF0aW9uTmFtZXMmJmgudHJhdmVyc2VUd29QaGFzZShlLl90YXJnZXRJbnN0LG8sZSl9ZnVuY3Rp
b24gYShlKXtpZihlJiZlLmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzKXt2
YXIgdD1lLl90YXJnZXRJbnN0LG49dD9oLmdldFBhcmVudEluc3RhbmNlKHQpOm51bGw7aC50cmF2
ZXJzZVR3b1BoYXNlKG4sbyxlKX19ZnVuY3Rpb24gdShlLHQsbil7aWYobiYmbi5kaXNwYXRjaENv
bmZpZy5yZWdpc3RyYXRpb25OYW1lKXt2YXIgcj1uLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlv
bk5hbWUsbz15KGUscik7byYmKG4uX2Rpc3BhdGNoTGlzdGVuZXJzPXYobi5fZGlzcGF0Y2hMaXN0
ZW5lcnMsbyksbi5fZGlzcGF0Y2hJbnN0YW5jZXM9dihuLl9kaXNwYXRjaEluc3RhbmNlcyxlKSl9
fWZ1bmN0aW9uIHMoZSl7ZSYmZS5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lJiZ1KGUu
X3RhcmdldEluc3QsbnVsbCxlKX1mdW5jdGlvbiBjKGUpe20oZSxpKX1mdW5jdGlvbiBsKGUpe20o
ZSxhKX1mdW5jdGlvbiBwKGUsdCxuLHIpe2gudHJhdmVyc2VFbnRlckxlYXZlKG4scix1LGUsdCl9
ZnVuY3Rpb24gZChlKXttKGUscyl9dmFyIGY9bigxOSksaD1uKDM3KSx2PW4oNzApLG09big3MSks
eT0obigyKSxmLmdldExpc3RlbmVyKSxnPXthY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzOmMs
YWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NraXBUYXJnZXQ6bCxhY2N1bXVsYXRlRGlyZWN0
RGlzcGF0Y2hlczpkLGFjY3VtdWxhdGVFbnRlckxlYXZlRGlzcGF0Y2hlczpwfTtlLmV4cG9ydHM9
Z30sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49e3JlbW92ZTpmdW5jdGlvbihlKXtl
Ll9yZWFjdEludGVybmFsSW5zdGFuY2U9dm9pZCAwfSxnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUu
X3JlYWN0SW50ZXJuYWxJbnN0YW5jZX0saGFzOmZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1l
Ll9yZWFjdEludGVybmFsSW5zdGFuY2V9LHNldDpmdW5jdGlvbihlLHQpe2UuX3JlYWN0SW50ZXJu
YWxJbnN0YW5jZT10fX07ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89bigx
MCksaT1uKDQ2KSxhPXt2aWV3OmZ1bmN0aW9uKGUpe2lmKGUudmlldylyZXR1cm4gZS52aWV3O3Zh
ciB0PWkoZSk7aWYodC53aW5kb3c9PT10KXJldHVybiB0O3ZhciBuPXQub3duZXJEb2N1bWVudDty
ZXR1cm4gbj9uLmRlZmF1bHRWaWV3fHxuLnBhcmVudFdpbmRvdzp3aW5kb3d9LGRldGFpbDpmdW5j
dGlvbihlKXtyZXR1cm4gZS5kZXRhaWx8fDB9fTtvLmF1Z21lbnRDbGFzcyhyLGEpLGUuZXhwb3J0
cz1yfSwzLGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9e307ZS5leHBvcnRzPXJ9
LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gT2JqZWN0
LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsdil8fChlW3ZdPWYrKyxwW2Vbdl1dPXt9
KSxwW2Vbdl1dfXZhciBvLGk9big0KSxhPW4oMzYpLHU9bigxNTIpLHM9big2OSksYz1uKDE4NCks
bD1uKDQ3KSxwPXt9LGQ9ITEsZj0wLGg9e3RvcEFib3J0OiJhYm9ydCIsdG9wQW5pbWF0aW9uRW5k
OmMoImFuaW1hdGlvbmVuZCIpfHwiYW5pbWF0aW9uZW5kIix0b3BBbmltYXRpb25JdGVyYXRpb246
YygiYW5pbWF0aW9uaXRlcmF0aW9uIil8fCJhbmltYXRpb25pdGVyYXRpb24iLHRvcEFuaW1hdGlv
blN0YXJ0OmMoImFuaW1hdGlvbnN0YXJ0Iil8fCJhbmltYXRpb25zdGFydCIsdG9wQmx1cjoiYmx1
ciIsdG9wQ2FuUGxheToiY2FucGxheSIsdG9wQ2FuUGxheVRocm91Z2g6ImNhbnBsYXl0aHJvdWdo
Iix0b3BDaGFuZ2U6ImNoYW5nZSIsdG9wQ2xpY2s6ImNsaWNrIix0b3BDb21wb3NpdGlvbkVuZDoi
Y29tcG9zaXRpb25lbmQiLHRvcENvbXBvc2l0aW9uU3RhcnQ6ImNvbXBvc2l0aW9uc3RhcnQiLHRv
cENvbXBvc2l0aW9uVXBkYXRlOiJjb21wb3NpdGlvbnVwZGF0ZSIsdG9wQ29udGV4dE1lbnU6ImNv
bnRleHRtZW51Iix0b3BDb3B5OiJjb3B5Iix0b3BDdXQ6ImN1dCIsdG9wRG91YmxlQ2xpY2s6ImRi
bGNsaWNrIix0b3BEcmFnOiJkcmFnIix0b3BEcmFnRW5kOiJkcmFnZW5kIix0b3BEcmFnRW50ZXI6
ImRyYWdlbnRlciIsdG9wRHJhZ0V4aXQ6ImRyYWdleGl0Iix0b3BEcmFnTGVhdmU6ImRyYWdsZWF2
ZSIsdG9wRHJhZ092ZXI6ImRyYWdvdmVyIix0b3BEcmFnU3RhcnQ6ImRyYWdzdGFydCIsdG9wRHJv
cDoiZHJvcCIsdG9wRHVyYXRpb25DaGFuZ2U6ImR1cmF0aW9uY2hhbmdlIix0b3BFbXB0aWVkOiJl
bXB0aWVkIix0b3BFbmNyeXB0ZWQ6ImVuY3J5cHRlZCIsdG9wRW5kZWQ6ImVuZGVkIix0b3BFcnJv
cjoiZXJyb3IiLHRvcEZvY3VzOiJmb2N1cyIsdG9wSW5wdXQ6ImlucHV0Iix0b3BLZXlEb3duOiJr
ZXlkb3duIix0b3BLZXlQcmVzczoia2V5cHJlc3MiLHRvcEtleVVwOiJrZXl1cCIsdG9wTG9hZGVk
RGF0YToibG9hZGVkZGF0YSIsdG9wTG9hZGVkTWV0YWRhdGE6ImxvYWRlZG1ldGFkYXRhIix0b3BM
b2FkU3RhcnQ6ImxvYWRzdGFydCIsdG9wTW91c2VEb3duOiJtb3VzZWRvd24iLHRvcE1vdXNlTW92
ZToibW91c2Vtb3ZlIix0b3BNb3VzZU91dDoibW91c2VvdXQiLHRvcE1vdXNlT3ZlcjoibW91c2Vv
dmVyIix0b3BNb3VzZVVwOiJtb3VzZXVwIix0b3BQYXN0ZToicGFzdGUiLHRvcFBhdXNlOiJwYXVz
ZSIsdG9wUGxheToicGxheSIsdG9wUGxheWluZzoicGxheWluZyIsdG9wUHJvZ3Jlc3M6InByb2dy
ZXNzIix0b3BSYXRlQ2hhbmdlOiJyYXRlY2hhbmdlIix0b3BTY3JvbGw6InNjcm9sbCIsdG9wU2Vl
a2VkOiJzZWVrZWQiLHRvcFNlZWtpbmc6InNlZWtpbmciLHRvcFNlbGVjdGlvbkNoYW5nZToic2Vs
ZWN0aW9uY2hhbmdlIix0b3BTdGFsbGVkOiJzdGFsbGVkIix0b3BTdXNwZW5kOiJzdXNwZW5kIix0
b3BUZXh0SW5wdXQ6InRleHRJbnB1dCIsdG9wVGltZVVwZGF0ZToidGltZXVwZGF0ZSIsdG9wVG91
Y2hDYW5jZWw6InRvdWNoY2FuY2VsIix0b3BUb3VjaEVuZDoidG91Y2hlbmQiLHRvcFRvdWNoTW92
ZToidG91Y2htb3ZlIix0b3BUb3VjaFN0YXJ0OiJ0b3VjaHN0YXJ0Iix0b3BUcmFuc2l0aW9uRW5k
OmMoInRyYW5zaXRpb25lbmQiKXx8InRyYW5zaXRpb25lbmQiLHRvcFZvbHVtZUNoYW5nZToidm9s
dW1lY2hhbmdlIix0b3BXYWl0aW5nOiJ3YWl0aW5nIix0b3BXaGVlbDoid2hlZWwifSx2PSJfcmVh
Y3RMaXN0ZW5lcnNJRCIrU3RyaW5nKE1hdGgucmFuZG9tKCkpLnNsaWNlKDIpLG09aSh7fSx1LHtS
ZWFjdEV2ZW50TGlzdGVuZXI6bnVsbCxpbmplY3Rpb246e2luamVjdFJlYWN0RXZlbnRMaXN0ZW5l
cjpmdW5jdGlvbihlKXtlLnNldEhhbmRsZVRvcExldmVsKG0uaGFuZGxlVG9wTGV2ZWwpLG0uUmVh
Y3RFdmVudExpc3RlbmVyPWV9fSxzZXRFbmFibGVkOmZ1bmN0aW9uKGUpe20uUmVhY3RFdmVudExp
c3RlbmVyJiZtLlJlYWN0RXZlbnRMaXN0ZW5lci5zZXRFbmFibGVkKGUpfSxpc0VuYWJsZWQ6ZnVu
Y3Rpb24oKXtyZXR1cm4hKCFtLlJlYWN0RXZlbnRMaXN0ZW5lcnx8IW0uUmVhY3RFdmVudExpc3Rl
bmVyLmlzRW5hYmxlZCgpKX0sbGlzdGVuVG86ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49dCxvPXIo
biksaT1hLnJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRlbmNpZXNbZV0sdT0wO3U8aS5sZW5ndGg7dSsr
KXt2YXIgcz1pW3VdO28uaGFzT3duUHJvcGVydHkocykmJm9bc118fCgidG9wV2hlZWwiPT09cz9s
KCJ3aGVlbCIpP20uUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoInRvcFdoZWVs
Iiwid2hlZWwiLG4pOmwoIm1vdXNld2hlZWwiKT9tLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnVi
YmxlZEV2ZW50KCJ0b3BXaGVlbCIsIm1vdXNld2hlZWwiLG4pOm0uUmVhY3RFdmVudExpc3RlbmVy
LnRyYXBCdWJibGVkRXZlbnQoInRvcFdoZWVsIiwiRE9NTW91c2VTY3JvbGwiLG4pOiJ0b3BTY3Jv
bGwiPT09cz9sKCJzY3JvbGwiLCEwKT9tLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRF
dmVudCgidG9wU2Nyb2xsIiwic2Nyb2xsIixuKTptLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnVi
YmxlZEV2ZW50KCJ0b3BTY3JvbGwiLCJzY3JvbGwiLG0uUmVhY3RFdmVudExpc3RlbmVyLldJTkRP
V19IQU5ETEUpOiJ0b3BGb2N1cyI9PT1zfHwidG9wQmx1ciI9PT1zPyhsKCJmb2N1cyIsITApPyht
LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCgidG9wRm9jdXMiLCJmb2N1cyIs
biksbS5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQoInRvcEJsdXIiLCJibHVy
IixuKSk6bCgiZm9jdXNpbiIpJiYobS5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVu
dCgidG9wRm9jdXMiLCJmb2N1c2luIixuKSxtLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxl
ZEV2ZW50KCJ0b3BCbHVyIiwiZm9jdXNvdXQiLG4pKSxvLnRvcEJsdXI9ITAsby50b3BGb2N1cz0h
MCk6aC5oYXNPd25Qcm9wZXJ0eShzKSYmbS5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRF
dmVudChzLGhbc10sbiksb1tzXT0hMCl9fSx0cmFwQnViYmxlZEV2ZW50OmZ1bmN0aW9uKGUsdCxu
KXtyZXR1cm4gbS5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudChlLHQsbil9LHRy
YXBDYXB0dXJlZEV2ZW50OmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gbS5SZWFjdEV2ZW50TGlzdGVu
ZXIudHJhcENhcHR1cmVkRXZlbnQoZSx0LG4pfSxzdXBwb3J0c0V2ZW50UGFnZVhZOmZ1bmN0aW9u
KCl7aWYoIWRvY3VtZW50LmNyZWF0ZUV2ZW50KXJldHVybiExO3ZhciBlPWRvY3VtZW50LmNyZWF0
ZUV2ZW50KCJNb3VzZUV2ZW50Iik7cmV0dXJuIG51bGwhPWUmJiJwYWdlWCJpbiBlfSxlbnN1cmVT
Y3JvbGxWYWx1ZU1vbml0b3Jpbmc6ZnVuY3Rpb24oKXtpZih2b2lkIDA9PT1vJiYobz1tLnN1cHBv
cnRzRXZlbnRQYWdlWFkoKSksIW8mJiFkKXt2YXIgZT1zLnJlZnJlc2hTY3JvbGxWYWx1ZXM7bS5S
ZWFjdEV2ZW50TGlzdGVuZXIubW9uaXRvclNjcm9sbFZhbHVlKGUpLGQ9ITB9fX0pO2UuZXhwb3J0
cz1tfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0
dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPW4oMjIpLGk9big2OSksYT1uKDQ1KSx1PXtz
Y3JlZW5YOm51bGwsc2NyZWVuWTpudWxsLGNsaWVudFg6bnVsbCxjbGllbnRZOm51bGwsY3RybEtl
eTpudWxsLHNoaWZ0S2V5Om51bGwsYWx0S2V5Om51bGwsbWV0YUtleTpudWxsLGdldE1vZGlmaWVy
U3RhdGU6YSxidXR0b246ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5idXR0b247cmV0dXJuIndoaWNoImlu
IGU/dDoyPT09dD8yOjQ9PT10PzE6MH0sYnV0dG9uczpudWxsLHJlbGF0ZWRUYXJnZXQ6ZnVuY3Rp
b24oZSl7cmV0dXJuIGUucmVsYXRlZFRhcmdldHx8KGUuZnJvbUVsZW1lbnQ9PT1lLnNyY0VsZW1l
bnQ/ZS50b0VsZW1lbnQ6ZS5mcm9tRWxlbWVudCl9LHBhZ2VYOmZ1bmN0aW9uKGUpe3JldHVybiJw
YWdlWCJpbiBlP2UucGFnZVg6ZS5jbGllbnRYK2kuY3VycmVudFNjcm9sbExlZnR9LHBhZ2VZOmZ1
bmN0aW9uKGUpe3JldHVybiJwYWdlWSJpbiBlP2UucGFnZVk6ZS5jbGllbnRZK2kuY3VycmVudFNj
cm9sbFRvcH19O28uYXVnbWVudENsYXNzKHIsdSksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7dmFyIHI9bigzKSxvPShuKDEpLHt9KSxpPXtyZWluaXRpYWxpemVUcmFu
c2FjdGlvbjpmdW5jdGlvbigpe3RoaXMudHJhbnNhY3Rpb25XcmFwcGVycz10aGlzLmdldFRyYW5z
YWN0aW9uV3JhcHBlcnMoKSx0aGlzLndyYXBwZXJJbml0RGF0YT90aGlzLndyYXBwZXJJbml0RGF0
YS5sZW5ndGg9MDp0aGlzLndyYXBwZXJJbml0RGF0YT1bXSx0aGlzLl9pc0luVHJhbnNhY3Rpb249
ITF9LF9pc0luVHJhbnNhY3Rpb246ITEsZ2V0VHJhbnNhY3Rpb25XcmFwcGVyczpudWxsLGlzSW5U
cmFuc2FjdGlvbjpmdW5jdGlvbigpe3JldHVybiEhdGhpcy5faXNJblRyYW5zYWN0aW9ufSxwZXJm
b3JtOmZ1bmN0aW9uKGUsdCxuLG8saSxhLHUscyl7dGhpcy5pc0luVHJhbnNhY3Rpb24oKT9yKCIy
NyIpOnZvaWQgMDt2YXIgYyxsO3RyeXt0aGlzLl9pc0luVHJhbnNhY3Rpb249ITAsYz0hMCx0aGlz
LmluaXRpYWxpemVBbGwoMCksbD1lLmNhbGwodCxuLG8saSxhLHUscyksYz0hMX1maW5hbGx5e3Ry
eXtpZihjKXRyeXt0aGlzLmNsb3NlQWxsKDApfWNhdGNoKHApe31lbHNlIHRoaXMuY2xvc2VBbGwo
MCl9ZmluYWxseXt0aGlzLl9pc0luVHJhbnNhY3Rpb249ITF9fXJldHVybiBsfSxpbml0aWFsaXpl
QWxsOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD10aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnMsbj1lO248
dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3RyeXt0aGlzLndyYXBwZXJJbml0RGF0YVtuXT1vLHRo
aXMud3JhcHBlckluaXREYXRhW25dPXIuaW5pdGlhbGl6ZT9yLmluaXRpYWxpemUuY2FsbCh0aGlz
KTpudWxsfWZpbmFsbHl7aWYodGhpcy53cmFwcGVySW5pdERhdGFbbl09PT1vKXRyeXt0aGlzLmlu
aXRpYWxpemVBbGwobisxKX1jYXRjaChpKXt9fX19LGNsb3NlQWxsOmZ1bmN0aW9uKGUpe3RoaXMu
aXNJblRyYW5zYWN0aW9uKCk/dm9pZCAwOnIoIjI4Iik7Zm9yKHZhciB0PXRoaXMudHJhbnNhY3Rp
b25XcmFwcGVycyxuPWU7bjx0Lmxlbmd0aDtuKyspe3ZhciBpLGE9dFtuXSx1PXRoaXMud3JhcHBl
ckluaXREYXRhW25dO3RyeXtpPSEwLHUhPT1vJiZhLmNsb3NlJiZhLmNsb3NlLmNhbGwodGhpcyx1
KSxpPSExfWZpbmFsbHl7aWYoaSl0cnl7dGhpcy5jbG9zZUFsbChuKzEpfWNhdGNoKHMpe319fXRo
aXMud3JhcHBlckluaXREYXRhLmxlbmd0aD0wfX07ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCl7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7dmFyIHQ9IiIrZSxuPW8uZXhlYyh0KTtpZighbily
ZXR1cm4gdDt2YXIgcixpPSIiLGE9MCx1PTA7Zm9yKGE9bi5pbmRleDthPHQubGVuZ3RoO2ErKyl7
c3dpdGNoKHQuY2hhckNvZGVBdChhKSl7Y2FzZSAzNDpyPSImcXVvdDsiO2JyZWFrO2Nhc2UgMzg6
cj0iJmFtcDsiO2JyZWFrO2Nhc2UgMzk6cj0iJiN4Mjc7IjticmVhaztjYXNlIDYwOnI9IiZsdDsi
O2JyZWFrO2Nhc2UgNjI6cj0iJmd0OyI7YnJlYWs7ZGVmYXVsdDpjb250aW51ZX11IT09YSYmKGkr
PXQuc3Vic3RyaW5nKHUsYSkpLHU9YSsxLGkrPXJ9cmV0dXJuIHUhPT1hP2krdC5zdWJzdHJpbmco
dSxhKTppfWZ1bmN0aW9uIHIoZSl7cmV0dXJuImJvb2xlYW4iPT10eXBlb2YgZXx8Im51bWJlciI9
PXR5cGVvZiBlPyIiK2U6bihlKX12YXIgbz0vWyInJjw+XS87ZS5leHBvcnRzPXJ9LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHIsbz1uKDYpLGk9bigzNSksYT0vXlsgXHJcblx0XGZd
Lyx1PS88KCEtLXxsaW5rfG5vc2NyaXB0fG1ldGF8c2NyaXB0fHN0eWxlKVsgXHJcblx0XGZcLz5d
LyxzPW4oNDMpLGM9cyhmdW5jdGlvbihlLHQpe2lmKGUubmFtZXNwYWNlVVJJIT09aS5zdmd8fCJp
bm5lckhUTUwiaW4gZSllLmlubmVySFRNTD10O2Vsc2V7cj1yfHxkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJkaXYiKSxyLmlubmVySFRNTD0iPHN2Zz4iK3QrIjwvc3ZnPiI7Zm9yKHZhciBuPXIuZmly
c3RDaGlsZDtuLmZpcnN0Q2hpbGQ7KWUuYXBwZW5kQ2hpbGQobi5maXJzdENoaWxkKX19KTtpZihv
LmNhblVzZURPTSl7dmFyIGw9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7bC5pbm5lckhU
TUw9IiAiLCIiPT09bC5pbm5lckhUTUwmJihjPWZ1bmN0aW9uKGUsdCl7aWYoZS5wYXJlbnROb2Rl
JiZlLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGUsZSksYS50ZXN0KHQpfHwiPCI9PT10WzBdJiZ1
LnRlc3QodCkpe2UuaW5uZXJIVE1MPVN0cmluZy5mcm9tQ2hhckNvZGUoNjUyNzkpK3Q7dmFyIG49
ZS5maXJzdENoaWxkOzE9PT1uLmRhdGEubGVuZ3RoP2UucmVtb3ZlQ2hpbGQobik6bi5kZWxldGVE
YXRhKDAsMSl9ZWxzZSBlLmlubmVySFRNTD10fSksbD1udWxsfWUuZXhwb3J0cz1jfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVs
ZT9lOntkZWZhdWx0OmV9fXQuX19lc01vZHVsZT0hMCx0LmNvbXBvc2U9dC5hcHBseU1pZGRsZXdh
cmU9dC5iaW5kQWN0aW9uQ3JlYXRvcnM9dC5jb21iaW5lUmVkdWNlcnM9dC5jcmVhdGVTdG9yZT12
b2lkIDA7dmFyIG89big5NSksaT1yKG8pLGE9bigyMjcpLHU9cihhKSxzPW4oMjI2KSxjPXIocyks
bD1uKDIyNSkscD1yKGwpLGQ9big5NCksZj1yKGQpLGg9big5Nik7cihoKTt0LmNyZWF0ZVN0b3Jl
PWkuZGVmYXVsdCx0LmNvbWJpbmVSZWR1Y2Vycz11LmRlZmF1bHQsdC5iaW5kQWN0aW9uQ3JlYXRv
cnM9Yy5kZWZhdWx0LHQuYXBwbHlNaWRkbGV3YXJlPXAuZGVmYXVsdCx0LmNvbXBvc2U9Zi5kZWZh
dWx0fSxmdW5jdGlvbihlLHQsbil7dmFyIHIsbzshZnVuY3Rpb24oKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gbigpe2Zvcih2YXIgZT1bXSx0PTA7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIHI9
YXJndW1lbnRzW3RdO2lmKHIpe3ZhciBvPXR5cGVvZiByO2lmKCJzdHJpbmciPT09b3x8Im51bWJl
ciI9PT1vKWUucHVzaChyKTtlbHNlIGlmKEFycmF5LmlzQXJyYXkocikpZS5wdXNoKG4uYXBwbHko
bnVsbCxyKSk7ZWxzZSBpZigib2JqZWN0Ij09PW8pZm9yKHZhciBhIGluIHIpaS5jYWxsKHIsYSkm
JnJbYV0mJmUucHVzaChhKX19cmV0dXJuIGUuam9pbigiICIpfXZhciBpPXt9Lmhhc093blByb3Bl
cnR5OyJ1bmRlZmluZWQiIT10eXBlb2YgZSYmZS5leHBvcnRzP2UuZXhwb3J0cz1uOihyPVtdLG89
ZnVuY3Rpb24oKXtyZXR1cm4gbn0uYXBwbHkodCxyKSwhKHZvaWQgMCE9PW8mJihlLmV4cG9ydHM9
bykpKX0oKX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlLHQpe3JldHVy
biBlPT09dD8wIT09ZXx8MCE9PXR8fDEvZT09PTEvdDplIT09ZSYmdCE9PXR9ZnVuY3Rpb24gcihl
LHQpe2lmKG4oZSx0KSlyZXR1cm4hMDtpZigib2JqZWN0IiE9dHlwZW9mIGV8fG51bGw9PT1lfHwi
b2JqZWN0IiE9dHlwZW9mIHR8fG51bGw9PT10KXJldHVybiExO3ZhciByPU9iamVjdC5rZXlzKGUp
LGk9T2JqZWN0LmtleXModCk7aWYoci5sZW5ndGghPT1pLmxlbmd0aClyZXR1cm4hMTtmb3IodmFy
IGE9MDthPHIubGVuZ3RoO2ErKylpZighby5jYWxsKHQsclthXSl8fCFuKGVbclthXV0sdFtyW2Fd
XSkpcmV0dXJuITE7cmV0dXJuITB9dmFyIG89T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0
eTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4pe2Z1bmN0aW9uIHIoZSl7aWYoIWEoZSl8fG8o
ZSkhPXUpcmV0dXJuITE7dmFyIHQ9aShlKTtpZihudWxsPT09dClyZXR1cm4hMDt2YXIgbj1wLmNh
bGwodCwiY29uc3RydWN0b3IiKSYmdC5jb25zdHJ1Y3RvcjtyZXR1cm4iZnVuY3Rpb24iPT10eXBl
b2YgbiYmbiBpbnN0YW5jZW9mIG4mJmwuY2FsbChuKT09ZH12YXIgbz1uKDExMiksaT1uKDExNCks
YT1uKDExOSksdT0iW29iamVjdCBPYmplY3RdIixzPUZ1bmN0aW9uLnByb3RvdHlwZSxjPU9iamVj
dC5wcm90b3R5cGUsbD1zLnRvU3RyaW5nLHA9Yy5oYXNPd25Qcm9wZXJ0eSxkPWwuY2FsbChPYmpl
Y3QpO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSx0KXtyZXR1cm4gQXJyYXkuaXNBcnJheSh0KSYmKHQ9dFsxXSksdD90Lm5leHRTaWJsaW5nOmUu
Zmlyc3RDaGlsZH1mdW5jdGlvbiBvKGUsdCxuKXtsLmluc2VydFRyZWVCZWZvcmUoZSx0LG4pfWZ1
bmN0aW9uIGkoZSx0LG4pe0FycmF5LmlzQXJyYXkodCk/dShlLHRbMF0sdFsxXSxuKTp2KGUsdCxu
KX1mdW5jdGlvbiBhKGUsdCl7aWYoQXJyYXkuaXNBcnJheSh0KSl7dmFyIG49dFsxXTt0PXRbMF0s
cyhlLHQsbiksZS5yZW1vdmVDaGlsZChuKX1lLnJlbW92ZUNoaWxkKHQpfWZ1bmN0aW9uIHUoZSx0
LG4scil7Zm9yKHZhciBvPXQ7Oyl7dmFyIGk9by5uZXh0U2libGluZztpZih2KGUsbyxyKSxvPT09
bilicmVhaztvPWl9fWZ1bmN0aW9uIHMoZSx0LG4pe2Zvcig7Oyl7dmFyIHI9dC5uZXh0U2libGlu
ZztpZihyPT09bilicmVhaztlLnJlbW92ZUNoaWxkKHIpfX1mdW5jdGlvbiBjKGUsdCxuKXt2YXIg
cj1lLnBhcmVudE5vZGUsbz1lLm5leHRTaWJsaW5nO289PT10P24mJnYocixkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZShuKSxvKTpuPyhoKG8sbikscyhyLG8sdCkpOnMocixlLHQpfXZhciBsPW4oMTQp
LHA9bigxMjkpLGQ9KG4oNSksbig4KSxuKDQzKSksZj1uKDI5KSxoPW4oNzcpLHY9ZChmdW5jdGlv
bihlLHQsbil7ZS5pbnNlcnRCZWZvcmUodCxuKX0pLG09cC5kYW5nZXJvdXNseVJlcGxhY2VOb2Rl
V2l0aE1hcmt1cCx5PXtkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cDptLHJlcGxhY2VE
ZWxpbWl0ZWRUZXh0OmMscHJvY2Vzc1VwZGF0ZXM6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MDtu
PHQubGVuZ3RoO24rKyl7dmFyIHU9dFtuXTtzd2l0Y2godS50eXBlKXtjYXNlIklOU0VSVF9NQVJL
VVAiOm8oZSx1LmNvbnRlbnQscihlLHUuYWZ0ZXJOb2RlKSk7YnJlYWs7Y2FzZSJNT1ZFX0VYSVNU
SU5HIjppKGUsdS5mcm9tTm9kZSxyKGUsdS5hZnRlck5vZGUpKTticmVhaztjYXNlIlNFVF9NQVJL
VVAiOmYoZSx1LmNvbnRlbnQpO2JyZWFrO2Nhc2UiVEVYVF9DT05URU5UIjpoKGUsdS5jb250ZW50
KTticmVhaztjYXNlIlJFTU9WRV9OT0RFIjphKGUsdS5mcm9tTm9kZSl9fX19O2UuZXhwb3J0cz15
fSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17aHRtbDoiaHR0cDovL3d3dy53My5v
cmcvMTk5OS94aHRtbCIsbWF0aG1sOiJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1M
Iixzdmc6Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIn07ZS5leHBvcnRzPW59LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe2lmKHUpZm9yKHZhciBlIGluIHMpe3Zh
ciB0PXNbZV0sbj11LmluZGV4T2YoZSk7aWYobj4tMT92b2lkIDA6YSgiOTYiLGUpLCFjLnBsdWdp
bnNbbl0pe3QuZXh0cmFjdEV2ZW50cz92b2lkIDA6YSgiOTciLGUpLGMucGx1Z2luc1tuXT10O3Zh
ciByPXQuZXZlbnRUeXBlcztmb3IodmFyIGkgaW4gcilvKHJbaV0sdCxpKT92b2lkIDA6YSgiOTgi
LGksZSl9fX1mdW5jdGlvbiBvKGUsdCxuKXtjLmV2ZW50TmFtZURpc3BhdGNoQ29uZmlncy5oYXNP
d25Qcm9wZXJ0eShuKT9hKCI5OSIsbik6dm9pZCAwLGMuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdz
W25dPWU7dmFyIHI9ZS5waGFzZWRSZWdpc3RyYXRpb25OYW1lcztpZihyKXtmb3IodmFyIG8gaW4g
cilpZihyLmhhc093blByb3BlcnR5KG8pKXt2YXIgdT1yW29dO2kodSx0LG4pfXJldHVybiEwfXJl
dHVybiEhZS5yZWdpc3RyYXRpb25OYW1lJiYoaShlLnJlZ2lzdHJhdGlvbk5hbWUsdCxuKSwhMCl9
ZnVuY3Rpb24gaShlLHQsbil7Yy5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tlXT9hKCIxMDAiLGUp
OnZvaWQgMCxjLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW2VdPXQsYy5yZWdpc3RyYXRpb25OYW1l
RGVwZW5kZW5jaWVzW2VdPXQuZXZlbnRUeXBlc1tuXS5kZXBlbmRlbmNpZXN9dmFyIGE9bigzKSx1
PShuKDEpLG51bGwpLHM9e30sYz17cGx1Z2luczpbXSxldmVudE5hbWVEaXNwYXRjaENvbmZpZ3M6
e30scmVnaXN0cmF0aW9uTmFtZU1vZHVsZXM6e30scmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2ll
czp7fSxwb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzOm51bGwsaW5qZWN0RXZlbnRQbHVnaW5PcmRl
cjpmdW5jdGlvbihlKXt1P2EoIjEwMSIpOnZvaWQgMCx1PUFycmF5LnByb3RvdHlwZS5zbGljZS5j
YWxsKGUpLHIoKX0saW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lOmZ1bmN0aW9uKGUpe3ZhciB0PSEx
O2Zvcih2YXIgbiBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkobikpe3ZhciBvPWVbbl07cy5oYXNP
d25Qcm9wZXJ0eShuKSYmc1tuXT09PW98fChzW25dP2EoIjEwMiIsbik6dm9pZCAwLHNbbl09byx0
PSEwKX10JiZyKCl9LGdldFBsdWdpbk1vZHVsZUZvckV2ZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWUu
ZGlzcGF0Y2hDb25maWc7aWYodC5yZWdpc3RyYXRpb25OYW1lKXJldHVybiBjLnJlZ2lzdHJhdGlv
bk5hbWVNb2R1bGVzW3QucmVnaXN0cmF0aW9uTmFtZV18fG51bGw7aWYodm9pZCAwIT09dC5waGFz
ZWRSZWdpc3RyYXRpb25OYW1lcyl7dmFyIG49dC5waGFzZWRSZWdpc3RyYXRpb25OYW1lcztmb3Io
dmFyIHIgaW4gbilpZihuLmhhc093blByb3BlcnR5KHIpKXt2YXIgbz1jLnJlZ2lzdHJhdGlvbk5h
bWVNb2R1bGVzW25bcl1dO2lmKG8pcmV0dXJuIG99fXJldHVybiBudWxsfSxfcmVzZXRFdmVudFBs
dWdpbnM6ZnVuY3Rpb24oKXt1PW51bGw7Zm9yKHZhciBlIGluIHMpcy5oYXNPd25Qcm9wZXJ0eShl
KSYmZGVsZXRlIHNbZV07Yy5wbHVnaW5zLmxlbmd0aD0wO3ZhciB0PWMuZXZlbnROYW1lRGlzcGF0
Y2hDb25maWdzO2Zvcih2YXIgbiBpbiB0KXQuaGFzT3duUHJvcGVydHkobikmJmRlbGV0ZSB0W25d
O3ZhciByPWMucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXM7Zm9yKHZhciBvIGluIHIpci5oYXNPd25Q
cm9wZXJ0eShvKSYmZGVsZXRlIHJbb119fTtlLmV4cG9ydHM9Y30sZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiJ0b3BNb3VzZVVwIj09PWV8fCJ0b3BUb3Vj
aEVuZCI9PT1lfHwidG9wVG91Y2hDYW5jZWwiPT09ZX1mdW5jdGlvbiBvKGUpe3JldHVybiJ0b3BN
b3VzZU1vdmUiPT09ZXx8InRvcFRvdWNoTW92ZSI9PT1lfWZ1bmN0aW9uIGkoZSl7cmV0dXJuInRv
cE1vdXNlRG93biI9PT1lfHwidG9wVG91Y2hTdGFydCI9PT1lfWZ1bmN0aW9uIGEoZSx0LG4scil7
dmFyIG89ZS50eXBlfHwidW5rbm93bi1ldmVudCI7ZS5jdXJyZW50VGFyZ2V0PXkuZ2V0Tm9kZUZy
b21JbnN0YW5jZShyKSx0P3YuaW52b2tlR3VhcmRlZENhbGxiYWNrV2l0aENhdGNoKG8sbixlKTp2
Lmludm9rZUd1YXJkZWRDYWxsYmFjayhvLG4sZSksZS5jdXJyZW50VGFyZ2V0PW51bGx9ZnVuY3Rp
b24gdShlLHQpe3ZhciBuPWUuX2Rpc3BhdGNoTGlzdGVuZXJzLHI9ZS5fZGlzcGF0Y2hJbnN0YW5j
ZXM7aWYoQXJyYXkuaXNBcnJheShuKSlmb3IodmFyIG89MDtvPG4ubGVuZ3RoJiYhZS5pc1Byb3Bh
Z2F0aW9uU3RvcHBlZCgpO28rKylhKGUsdCxuW29dLHJbb10pO2Vsc2UgbiYmYShlLHQsbixyKTtl
Ll9kaXNwYXRjaExpc3RlbmVycz1udWxsLGUuX2Rpc3BhdGNoSW5zdGFuY2VzPW51bGx9ZnVuY3Rp
b24gcyhlKXt2YXIgdD1lLl9kaXNwYXRjaExpc3RlbmVycyxuPWUuX2Rpc3BhdGNoSW5zdGFuY2Vz
O2lmKEFycmF5LmlzQXJyYXkodCkpe2Zvcih2YXIgcj0wO3I8dC5sZW5ndGgmJiFlLmlzUHJvcGFn
YXRpb25TdG9wcGVkKCk7cisrKWlmKHRbcl0oZSxuW3JdKSlyZXR1cm4gbltyXX1lbHNlIGlmKHQm
JnQoZSxuKSlyZXR1cm4gbjtyZXR1cm4gbnVsbH1mdW5jdGlvbiBjKGUpe3ZhciB0PXMoZSk7cmV0
dXJuIGUuX2Rpc3BhdGNoSW5zdGFuY2VzPW51bGwsZS5fZGlzcGF0Y2hMaXN0ZW5lcnM9bnVsbCx0
fWZ1bmN0aW9uIGwoZSl7dmFyIHQ9ZS5fZGlzcGF0Y2hMaXN0ZW5lcnMsbj1lLl9kaXNwYXRjaElu
c3RhbmNlcztBcnJheS5pc0FycmF5KHQpP2goIjEwMyIpOnZvaWQgMCxlLmN1cnJlbnRUYXJnZXQ9
dD95LmdldE5vZGVGcm9tSW5zdGFuY2Uobik6bnVsbDt2YXIgcj10P3QoZSk6bnVsbDtyZXR1cm4g
ZS5jdXJyZW50VGFyZ2V0PW51bGwsZS5fZGlzcGF0Y2hMaXN0ZW5lcnM9bnVsbCxlLl9kaXNwYXRj
aEluc3RhbmNlcz1udWxsLHJ9ZnVuY3Rpb24gcChlKXtyZXR1cm4hIWUuX2Rpc3BhdGNoTGlzdGVu
ZXJzfXZhciBkLGYsaD1uKDMpLHY9big0MSksbT0obigxKSxuKDIpLHtpbmplY3RDb21wb25lbnRU
cmVlOmZ1bmN0aW9uKGUpe2Q9ZX0saW5qZWN0VHJlZVRyYXZlcnNhbDpmdW5jdGlvbihlKXtmPWV9
fSkseT17aXNFbmRpc2g6cixpc01vdmVpc2g6byxpc1N0YXJ0aXNoOmksZXhlY3V0ZURpcmVjdERp
c3BhdGNoOmwsZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyOnUsZXhlY3V0ZURpc3BhdGNoZXNJbk9y
ZGVyU3RvcEF0VHJ1ZTpjLGhhc0Rpc3BhdGNoZXM6cCxnZXRJbnN0YW5jZUZyb21Ob2RlOmZ1bmN0
aW9uKGUpe3JldHVybiBkLmdldEluc3RhbmNlRnJvbU5vZGUoZSl9LGdldE5vZGVGcm9tSW5zdGFu
Y2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGQuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKX0saXNBbmNlc3Rv
cjpmdW5jdGlvbihlLHQpe3JldHVybiBmLmlzQW5jZXN0b3IoZSx0KX0sZ2V0TG93ZXN0Q29tbW9u
QW5jZXN0b3I6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZi5nZXRMb3dlc3RDb21tb25BbmNlc3Rvcihl
LHQpfSxnZXRQYXJlbnRJbnN0YW5jZTpmdW5jdGlvbihlKXtyZXR1cm4gZi5nZXRQYXJlbnRJbnN0
YW5jZShlKX0sdHJhdmVyc2VUd29QaGFzZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGYudHJhdmVy
c2VUd29QaGFzZShlLHQsbil9LHRyYXZlcnNlRW50ZXJMZWF2ZTpmdW5jdGlvbihlLHQsbixyLG8p
e3JldHVybiBmLnRyYXZlcnNlRW50ZXJMZWF2ZShlLHQsbixyLG8pfSxpbmplY3Rpb246bX07ZS5l
eHBvcnRzPXl9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7dmFyIHQ9
L1s9Ol0vZyxuPXsiPSI6Ij0wIiwiOiI6Ij0yIn0scj0oIiIrZSkucmVwbGFjZSh0LGZ1bmN0aW9u
KGUpe3JldHVybiBuW2VdfSk7cmV0dXJuIiQiK3J9ZnVuY3Rpb24gcihlKXt2YXIgdD0vKD0wfD0y
KS9nLG49eyI9MCI6Ij0iLCI9MiI6IjoifSxyPSIuIj09PWVbMF0mJiIkIj09PWVbMV0/ZS5zdWJz
dHJpbmcoMik6ZS5zdWJzdHJpbmcoMSk7cmV0dXJuKCIiK3IpLnJlcGxhY2UodCxmdW5jdGlvbihl
KXtyZXR1cm4gbltlXX0pfXZhciBvPXtlc2NhcGU6bix1bmVzY2FwZTpyfTtlLmV4cG9ydHM9b30s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe251bGwhPWUuY2hlY2tl
ZExpbmsmJm51bGwhPWUudmFsdWVMaW5rP3UoIjg3Iik6dm9pZCAwfWZ1bmN0aW9uIG8oZSl7cihl
KSxudWxsIT1lLnZhbHVlfHxudWxsIT1lLm9uQ2hhbmdlP3UoIjg4Iik6dm9pZCAwfWZ1bmN0aW9u
IGkoZSl7cihlKSxudWxsIT1lLmNoZWNrZWR8fG51bGwhPWUub25DaGFuZ2U/dSgiODkiKTp2b2lk
IDB9ZnVuY3Rpb24gYShlKXtpZihlKXt2YXIgdD1lLmdldE5hbWUoKTtpZih0KXJldHVybiIgQ2hl
Y2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCIrdCsiYC4ifXJldHVybiIifXZhciB1PW4oMykscz1u
KDE1OCksYz1uKDU1KSxsPW4oMTcpLHA9YyhsLmlzVmFsaWRFbGVtZW50KSxkPShuKDEpLG4oMiks
e2J1dHRvbjohMCxjaGVja2JveDohMCxpbWFnZTohMCxoaWRkZW46ITAscmFkaW86ITAscmVzZXQ6
ITAsc3VibWl0OiEwfSksZj17dmFsdWU6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiFlW3RdfHxkW2Uu
dHlwZV18fGUub25DaGFuZ2V8fGUucmVhZE9ubHl8fGUuZGlzYWJsZWQ/bnVsbDpuZXcgRXJyb3Io
IllvdSBwcm92aWRlZCBhIGB2YWx1ZWAgcHJvcCB0byBhIGZvcm0gZmllbGQgd2l0aG91dCBhbiBg
b25DaGFuZ2VgIGhhbmRsZXIuIFRoaXMgd2lsbCByZW5kZXIgYSByZWFkLW9ubHkgZmllbGQuIElm
IHRoZSBmaWVsZCBzaG91bGQgYmUgbXV0YWJsZSB1c2UgYGRlZmF1bHRWYWx1ZWAuIE90aGVyd2lz
ZSwgc2V0IGVpdGhlciBgb25DaGFuZ2VgIG9yIGByZWFkT25seWAuIik7Cit9LGNoZWNrZWQ6ZnVu
Y3Rpb24oZSx0LG4pe3JldHVybiFlW3RdfHxlLm9uQ2hhbmdlfHxlLnJlYWRPbmx5fHxlLmRpc2Fi
bGVkP251bGw6bmV3IEVycm9yKCJZb3UgcHJvdmlkZWQgYSBgY2hlY2tlZGAgcHJvcCB0byBhIGZv
cm0gZmllbGQgd2l0aG91dCBhbiBgb25DaGFuZ2VgIGhhbmRsZXIuIFRoaXMgd2lsbCByZW5kZXIg
YSByZWFkLW9ubHkgZmllbGQuIElmIHRoZSBmaWVsZCBzaG91bGQgYmUgbXV0YWJsZSB1c2UgYGRl
ZmF1bHRDaGVja2VkYC4gT3RoZXJ3aXNlLCBzZXQgZWl0aGVyIGBvbkNoYW5nZWAgb3IgYHJlYWRP
bmx5YC4iKX0sb25DaGFuZ2U6cC5mdW5jfSxoPXt9LHY9e2NoZWNrUHJvcFR5cGVzOmZ1bmN0aW9u
KGUsdCxuKXtmb3IodmFyIHIgaW4gZil7aWYoZi5oYXNPd25Qcm9wZXJ0eShyKSl2YXIgbz1mW3Jd
KHQscixlLCJwcm9wIixudWxsLHMpO2lmKG8gaW5zdGFuY2VvZiBFcnJvciYmIShvLm1lc3NhZ2Ug
aW4gaCkpe2hbby5tZXNzYWdlXT0hMDthKG4pfX19LGdldFZhbHVlOmZ1bmN0aW9uKGUpe3JldHVy
biBlLnZhbHVlTGluaz8obyhlKSxlLnZhbHVlTGluay52YWx1ZSk6ZS52YWx1ZX0sZ2V0Q2hlY2tl
ZDpmdW5jdGlvbihlKXtyZXR1cm4gZS5jaGVja2VkTGluaz8oaShlKSxlLmNoZWNrZWRMaW5rLnZh
bHVlKTplLmNoZWNrZWR9LGV4ZWN1dGVPbkNoYW5nZTpmdW5jdGlvbihlLHQpe3JldHVybiBlLnZh
bHVlTGluaz8obyhlKSxlLnZhbHVlTGluay5yZXF1ZXN0Q2hhbmdlKHQudGFyZ2V0LnZhbHVlKSk6
ZS5jaGVja2VkTGluaz8oaShlKSxlLmNoZWNrZWRMaW5rLnJlcXVlc3RDaGFuZ2UodC50YXJnZXQu
Y2hlY2tlZCkpOmUub25DaGFuZ2U/ZS5vbkNoYW5nZS5jYWxsKHZvaWQgMCx0KTp2b2lkIDB9fTtl
LmV4cG9ydHM9dn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDMpLG89KG4o
MSksITEpLGk9e3JlcGxhY2VOb2RlV2l0aE1hcmt1cDpudWxsLHByb2Nlc3NDaGlsZHJlblVwZGF0
ZXM6bnVsbCxpbmplY3Rpb246e2luamVjdEVudmlyb25tZW50OmZ1bmN0aW9uKGUpe28/cigiMTA0
Iik6dm9pZCAwLGkucmVwbGFjZU5vZGVXaXRoTWFya3VwPWUucmVwbGFjZU5vZGVXaXRoTWFya3Vw
LGkucHJvY2Vzc0NoaWxkcmVuVXBkYXRlcz1lLnByb2Nlc3NDaGlsZHJlblVwZGF0ZXMsbz0hMH19
fTtlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUs
dCxuKXt0cnl7dChuKX1jYXRjaChyKXtudWxsPT09byYmKG89cil9fXZhciBvPW51bGwsaT17aW52
b2tlR3VhcmRlZENhbGxiYWNrOnIsaW52b2tlR3VhcmRlZENhbGxiYWNrV2l0aENhdGNoOnIscmV0
aHJvd0NhdWdodEVycm9yOmZ1bmN0aW9uKCl7aWYobyl7dmFyIGU9bzt0aHJvdyBvPW51bGwsZX19
fTtlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUp
e3MuZW5xdWV1ZVVwZGF0ZShlKX1mdW5jdGlvbiBvKGUpe3ZhciB0PXR5cGVvZiBlO2lmKCJvYmpl
Y3QiIT09dClyZXR1cm4gdDt2YXIgbj1lLmNvbnN0cnVjdG9yJiZlLmNvbnN0cnVjdG9yLm5hbWV8
fHQscj1PYmplY3Qua2V5cyhlKTtyZXR1cm4gci5sZW5ndGg+MCYmci5sZW5ndGg8MjA/bisiIChr
ZXlzOiAiK3Iuam9pbigiLCAiKSsiKSI6bn1mdW5jdGlvbiBpKGUsdCl7dmFyIG49dS5nZXQoZSk7
aWYoIW4pe3JldHVybiBudWxsfXJldHVybiBufXZhciBhPW4oMyksdT0obigxMSksbigyMSkpLHM9
KG4oOCksbig5KSksYz0obigxKSxuKDIpLHtpc01vdW50ZWQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dS5n
ZXQoZSk7cmV0dXJuISF0JiYhIXQuX3JlbmRlcmVkQ29tcG9uZW50fSxlbnF1ZXVlQ2FsbGJhY2s6
ZnVuY3Rpb24oZSx0LG4pe2MudmFsaWRhdGVDYWxsYmFjayh0LG4pO3ZhciBvPWkoZSk7cmV0dXJu
IG8/KG8uX3BlbmRpbmdDYWxsYmFja3M/by5fcGVuZGluZ0NhbGxiYWNrcy5wdXNoKHQpOm8uX3Bl
bmRpbmdDYWxsYmFja3M9W3RdLHZvaWQgcihvKSk6bnVsbH0sZW5xdWV1ZUNhbGxiYWNrSW50ZXJu
YWw6ZnVuY3Rpb24oZSx0KXtlLl9wZW5kaW5nQ2FsbGJhY2tzP2UuX3BlbmRpbmdDYWxsYmFja3Mu
cHVzaCh0KTplLl9wZW5kaW5nQ2FsbGJhY2tzPVt0XSxyKGUpfSxlbnF1ZXVlRm9yY2VVcGRhdGU6
ZnVuY3Rpb24oZSl7dmFyIHQ9aShlLCJmb3JjZVVwZGF0ZSIpO3QmJih0Ll9wZW5kaW5nRm9yY2VV
cGRhdGU9ITAscih0KSl9LGVucXVldWVSZXBsYWNlU3RhdGU6ZnVuY3Rpb24oZSx0LG4pe3ZhciBv
PWkoZSwicmVwbGFjZVN0YXRlIik7byYmKG8uX3BlbmRpbmdTdGF0ZVF1ZXVlPVt0XSxvLl9wZW5k
aW5nUmVwbGFjZVN0YXRlPSEwLHZvaWQgMCE9PW4mJm51bGwhPT1uJiYoYy52YWxpZGF0ZUNhbGxi
YWNrKG4sInJlcGxhY2VTdGF0ZSIpLG8uX3BlbmRpbmdDYWxsYmFja3M/by5fcGVuZGluZ0NhbGxi
YWNrcy5wdXNoKG4pOm8uX3BlbmRpbmdDYWxsYmFja3M9W25dKSxyKG8pKX0sZW5xdWV1ZVNldFN0
YXRlOmZ1bmN0aW9uKGUsdCl7dmFyIG49aShlLCJzZXRTdGF0ZSIpO2lmKG4pe3ZhciBvPW4uX3Bl
bmRpbmdTdGF0ZVF1ZXVlfHwobi5fcGVuZGluZ1N0YXRlUXVldWU9W10pO28ucHVzaCh0KSxyKG4p
fX0sZW5xdWV1ZUVsZW1lbnRJbnRlcm5hbDpmdW5jdGlvbihlLHQsbil7ZS5fcGVuZGluZ0VsZW1l
bnQ9dCxlLl9jb250ZXh0PW4scihlKX0sdmFsaWRhdGVDYWxsYmFjazpmdW5jdGlvbihlLHQpe2Um
JiJmdW5jdGlvbiIhPXR5cGVvZiBlP2EoIjEyMiIsdCxvKGUpKTp2b2lkIDB9fSk7ZS5leHBvcnRz
PWN9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciBuPWZ1bmN0aW9uKGUpe3JldHVybiJ1
bmRlZmluZWQiIT10eXBlb2YgTVNBcHAmJk1TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uP2Z1
bmN0aW9uKHQsbixyLG8pe01TQXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uKCl7
cmV0dXJuIGUodCxuLHIsbyl9KX06ZX07ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCl7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIG4oZSl7dmFyIHQsbj1lLmtleUNvZGU7cmV0dXJuImNoYXJDb2RlImlu
IGU/KHQ9ZS5jaGFyQ29kZSwwPT09dCYmMTM9PT1uJiYodD0xMykpOnQ9bix0Pj0zMnx8MTM9PT10
P3Q6MH1lLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihl
KXt2YXIgdD10aGlzLG49dC5uYXRpdmVFdmVudDtpZihuLmdldE1vZGlmaWVyU3RhdGUpcmV0dXJu
IG4uZ2V0TW9kaWZpZXJTdGF0ZShlKTt2YXIgcj1vW2VdO3JldHVybiEhciYmISFuW3JdfWZ1bmN0
aW9uIHIoZSl7cmV0dXJuIG59dmFyIG89e0FsdDoiYWx0S2V5IixDb250cm9sOiJjdHJsS2V5IixN
ZXRhOiJtZXRhS2V5IixTaGlmdDoic2hpZnRLZXkifTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXt2YXIgdD1lLnRhcmdldHx8ZS5zcmNFbGVtZW50
fHx3aW5kb3c7cmV0dXJuIHQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQmJih0PXQuY29ycmVzcG9u
ZGluZ1VzZUVsZW1lbnQpLDM9PT10Lm5vZGVUeXBlP3QucGFyZW50Tm9kZTp0fWUuZXhwb3J0cz1u
fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtpZighaS5jYW5V
c2VET018fHQmJiEoImFkZEV2ZW50TGlzdGVuZXIiaW4gZG9jdW1lbnQpKXJldHVybiExO3ZhciBu
PSJvbiIrZSxyPW4gaW4gZG9jdW1lbnQ7aWYoIXIpe3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImRpdiIpO2Euc2V0QXR0cmlidXRlKG4sInJldHVybjsiKSxyPSJmdW5jdGlvbiI9PXR5cGVv
ZiBhW25dfXJldHVybiFyJiZvJiYid2hlZWwiPT09ZSYmKHI9ZG9jdW1lbnQuaW1wbGVtZW50YXRp
b24uaGFzRmVhdHVyZSgiRXZlbnRzLndoZWVsIiwiMy4wIikpLHJ9dmFyIG8saT1uKDYpO2kuY2Fu
VXNlRE9NJiYobz1kb2N1bWVudC5pbXBsZW1lbnRhdGlvbiYmZG9jdW1lbnQuaW1wbGVtZW50YXRp
b24uaGFzRmVhdHVyZSYmZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSgiIiwiIikh
PT0hMCksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4o
ZSx0KXt2YXIgbj1udWxsPT09ZXx8ZT09PSExLHI9bnVsbD09PXR8fHQ9PT0hMTtpZihufHxyKXJl
dHVybiBuPT09cjt2YXIgbz10eXBlb2YgZSxpPXR5cGVvZiB0O3JldHVybiJzdHJpbmciPT09b3x8
Im51bWJlciI9PT1vPyJzdHJpbmciPT09aXx8Im51bWJlciI9PT1pOiJvYmplY3QiPT09aSYmZS50
eXBlPT09dC50eXBlJiZlLmtleT09PXQua2V5fWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO3ZhciByPShuKDQpLG4oNykpLG89KG4oMikscik7ZS5leHBvcnRzPW99LGZ1
bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7InVuZGVmaW5lZCIhPXR5cGVv
ZiBjb25zb2xlJiYiZnVuY3Rpb24iPT10eXBlb2YgY29uc29sZS5lcnJvciYmY29uc29sZS5lcnJv
cihlKTt0cnl7dGhyb3cgbmV3IEVycm9yKGUpfWNhdGNoKHQpe319dC5fX2VzTW9kdWxlPSEwLHQu
ZGVmYXVsdD1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNyksbz17bGlz
dGVuOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZS5hZGRFdmVudExpc3RlbmVyPyhlLmFkZEV2ZW50
TGlzdGVuZXIodCxuLCExKSx7cmVtb3ZlOmZ1bmN0aW9uKCl7ZS5yZW1vdmVFdmVudExpc3RlbmVy
KHQsbiwhMSl9fSk6ZS5hdHRhY2hFdmVudD8oZS5hdHRhY2hFdmVudCgib24iK3Qsbikse3JlbW92
ZTpmdW5jdGlvbigpe2UuZGV0YWNoRXZlbnQoIm9uIit0LG4pfX0pOnZvaWQgMH0sY2FwdHVyZTpm
dW5jdGlvbihlLHQsbil7cmV0dXJuIGUuYWRkRXZlbnRMaXN0ZW5lcj8oZS5hZGRFdmVudExpc3Rl
bmVyKHQsbiwhMCkse3JlbW92ZTpmdW5jdGlvbigpe2UucmVtb3ZlRXZlbnRMaXN0ZW5lcih0LG4s
ITApfX0pOntyZW1vdmU6cn19LHJlZ2lzdGVyRGVmYXVsdDpmdW5jdGlvbigpe319O2UuZXhwb3J0
cz1vfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3RyeXtlLmZvY3Vz
KCl9Y2F0Y2godCl7fX1lLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gbihlKXtpZihlPWV8fCgidW5kZWZpbmVkIiE9dHlwZW9mIGRvY3VtZW50P2RvY3VtZW50
OnZvaWQgMCksInVuZGVmaW5lZCI9PXR5cGVvZiBlKXJldHVybiBudWxsO3RyeXtyZXR1cm4gZS5h
Y3RpdmVFbGVtZW50fHxlLmJvZHl9Y2F0Y2godCl7cmV0dXJuIGUuYm9keX19ZS5leHBvcnRzPW59
LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDExOCksbz1yLlN5bWJvbDtlLmV4cG9ydHM9b30sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDEyMik7ZS5leHBvcnRzPWZ1bmN0aW9u
KGUpe3ZhciB0PSExO3JldHVybiByKGUsdCl9fSxmdW5jdGlvbihlLHQsbil7ZS5leHBvcnRzPW4o
MTIxKSgpfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj0iU0VDUkVUX0RPX05PVF9Q
QVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQiO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQp
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIGUrdC5jaGFyQXQoMCkudG9VcHBl
ckNhc2UoKSt0LnN1YnN0cmluZygxKX12YXIgcj17YW5pbWF0aW9uSXRlcmF0aW9uQ291bnQ6ITAs
Ym9yZGVySW1hZ2VPdXRzZXQ6ITAsYm9yZGVySW1hZ2VTbGljZTohMCxib3JkZXJJbWFnZVdpZHRo
OiEwLGJveEZsZXg6ITAsYm94RmxleEdyb3VwOiEwLGJveE9yZGluYWxHcm91cDohMCxjb2x1bW5D
b3VudDohMCxmbGV4OiEwLGZsZXhHcm93OiEwLGZsZXhQb3NpdGl2ZTohMCxmbGV4U2hyaW5rOiEw
LGZsZXhOZWdhdGl2ZTohMCxmbGV4T3JkZXI6ITAsZ3JpZFJvdzohMCxncmlkUm93RW5kOiEwLGdy
aWRSb3dTcGFuOiEwLGdyaWRSb3dTdGFydDohMCxncmlkQ29sdW1uOiEwLGdyaWRDb2x1bW5FbmQ6
ITAsZ3JpZENvbHVtblNwYW46ITAsZ3JpZENvbHVtblN0YXJ0OiEwLGZvbnRXZWlnaHQ6ITAsbGlu
ZUNsYW1wOiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHRh
YlNpemU6ITAsd2lkb3dzOiEwLHpJbmRleDohMCx6b29tOiEwLGZpbGxPcGFjaXR5OiEwLGZsb29k
T3BhY2l0eTohMCxzdG9wT3BhY2l0eTohMCxzdHJva2VEYXNoYXJyYXk6ITAsc3Ryb2tlRGFzaG9m
ZnNldDohMCxzdHJva2VNaXRlcmxpbWl0OiEwLHN0cm9rZU9wYWNpdHk6ITAsc3Ryb2tlV2lkdGg6
ITB9LG89WyJXZWJraXQiLCJtcyIsIk1veiIsIk8iXTtPYmplY3Qua2V5cyhyKS5mb3JFYWNoKGZ1
bmN0aW9uKGUpe28uZm9yRWFjaChmdW5jdGlvbih0KXtyW24odCxlKV09cltlXX0pfSk7dmFyIGk9
e2JhY2tncm91bmQ6e2JhY2tncm91bmRBdHRhY2htZW50OiEwLGJhY2tncm91bmRDb2xvcjohMCxi
YWNrZ3JvdW5kSW1hZ2U6ITAsYmFja2dyb3VuZFBvc2l0aW9uWDohMCxiYWNrZ3JvdW5kUG9zaXRp
b25ZOiEwLGJhY2tncm91bmRSZXBlYXQ6ITB9LGJhY2tncm91bmRQb3NpdGlvbjp7YmFja2dyb3Vu
ZFBvc2l0aW9uWDohMCxiYWNrZ3JvdW5kUG9zaXRpb25ZOiEwfSxib3JkZXI6e2JvcmRlcldpZHRo
OiEwLGJvcmRlclN0eWxlOiEwLGJvcmRlckNvbG9yOiEwfSxib3JkZXJCb3R0b206e2JvcmRlckJv
dHRvbVdpZHRoOiEwLGJvcmRlckJvdHRvbVN0eWxlOiEwLGJvcmRlckJvdHRvbUNvbG9yOiEwfSxi
b3JkZXJMZWZ0Ontib3JkZXJMZWZ0V2lkdGg6ITAsYm9yZGVyTGVmdFN0eWxlOiEwLGJvcmRlckxl
ZnRDb2xvcjohMH0sYm9yZGVyUmlnaHQ6e2JvcmRlclJpZ2h0V2lkdGg6ITAsYm9yZGVyUmlnaHRT
dHlsZTohMCxib3JkZXJSaWdodENvbG9yOiEwfSxib3JkZXJUb3A6e2JvcmRlclRvcFdpZHRoOiEw
LGJvcmRlclRvcFN0eWxlOiEwLGJvcmRlclRvcENvbG9yOiEwfSxmb250Ontmb250U3R5bGU6ITAs
Zm9udFZhcmlhbnQ6ITAsZm9udFdlaWdodDohMCxmb250U2l6ZTohMCxsaW5lSGVpZ2h0OiEwLGZv
bnRGYW1pbHk6ITB9LG91dGxpbmU6e291dGxpbmVXaWR0aDohMCxvdXRsaW5lU3R5bGU6ITAsb3V0
bGluZUNvbG9yOiEwfX0sYT17aXNVbml0bGVzc051bWJlcjpyLHNob3J0aGFuZFByb3BlcnR5RXhw
YW5zaW9uczppfTtlLmV4cG9ydHM9YX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fu
bm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9dmFyIG89bigzKSxpPW4oMTMpLGE9KG4o
MSksZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe3IodGhpcyxlKSx0aGlzLl9jYWxsYmFja3M9bnVs
bCx0aGlzLl9jb250ZXh0cz1udWxsLHRoaXMuX2FyZz10fXJldHVybiBlLnByb3RvdHlwZS5lbnF1
ZXVlPWZ1bmN0aW9uKGUsdCl7dGhpcy5fY2FsbGJhY2tzPXRoaXMuX2NhbGxiYWNrc3x8W10sdGhp
cy5fY2FsbGJhY2tzLnB1c2goZSksdGhpcy5fY29udGV4dHM9dGhpcy5fY29udGV4dHN8fFtdLHRo
aXMuX2NvbnRleHRzLnB1c2godCl9LGUucHJvdG90eXBlLm5vdGlmeUFsbD1mdW5jdGlvbigpe3Zh
ciBlPXRoaXMuX2NhbGxiYWNrcyx0PXRoaXMuX2NvbnRleHRzLG49dGhpcy5fYXJnO2lmKGUmJnQp
e2UubGVuZ3RoIT09dC5sZW5ndGg/bygiMjQiKTp2b2lkIDAsdGhpcy5fY2FsbGJhY2tzPW51bGws
dGhpcy5fY29udGV4dHM9bnVsbDtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyllW3JdLmNhbGwo
dFtyXSxuKTtlLmxlbmd0aD0wLHQubGVuZ3RoPTB9fSxlLnByb3RvdHlwZS5jaGVja3BvaW50PWZ1
bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NhbGxiYWNrcz90aGlzLl9jYWxsYmFja3MubGVuZ3RoOjB9
LGUucHJvdG90eXBlLnJvbGxiYWNrPWZ1bmN0aW9uKGUpe3RoaXMuX2NhbGxiYWNrcyYmdGhpcy5f
Y29udGV4dHMmJih0aGlzLl9jYWxsYmFja3MubGVuZ3RoPWUsdGhpcy5fY29udGV4dHMubGVuZ3Ro
PWUpfSxlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuX2NhbGxiYWNrcz1udWxsLHRo
aXMuX2NvbnRleHRzPW51bGx9LGUucHJvdG90eXBlLmRlc3RydWN0b3I9ZnVuY3Rpb24oKXt0aGlz
LnJlc2V0KCl9LGV9KCkpO2UuZXhwb3J0cz1pLmFkZFBvb2xpbmdUbyhhKX0sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiEhYy5oYXNPd25Qcm9wZXJ0eShl
KXx8IXMuaGFzT3duUHJvcGVydHkoZSkmJih1LnRlc3QoZSk/KGNbZV09ITAsITApOihzW2VdPSEw
LCExKSl9ZnVuY3Rpb24gbyhlLHQpe3JldHVybiBudWxsPT10fHxlLmhhc0Jvb2xlYW5WYWx1ZSYm
IXR8fGUuaGFzTnVtZXJpY1ZhbHVlJiZpc05hTih0KXx8ZS5oYXNQb3NpdGl2ZU51bWVyaWNWYWx1
ZSYmdDwxfHxlLmhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWUmJnQ9PT0hMX12YXIgaT1uKDE1KSxh
PShuKDUpLG4oOCksbigxODUpKSx1PShuKDIpLG5ldyBSZWdFeHAoIl5bIitpLkFUVFJJQlVURV9O
QU1FX1NUQVJUX0NIQVIrIl1bIitpLkFUVFJJQlVURV9OQU1FX0NIQVIrIl0qJCIpKSxzPXt9LGM9
e30sbD17Y3JlYXRlTWFya3VwRm9ySUQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGkuSURfQVRUUklCVVRF
X05BTUUrIj0iK2EoZSl9LHNldEF0dHJpYnV0ZUZvcklEOmZ1bmN0aW9uKGUsdCl7ZS5zZXRBdHRy
aWJ1dGUoaS5JRF9BVFRSSUJVVEVfTkFNRSx0KX0sY3JlYXRlTWFya3VwRm9yUm9vdDpmdW5jdGlv
bigpe3JldHVybiBpLlJPT1RfQVRUUklCVVRFX05BTUUrJz0iIid9LHNldEF0dHJpYnV0ZUZvclJv
b3Q6ZnVuY3Rpb24oZSl7ZS5zZXRBdHRyaWJ1dGUoaS5ST09UX0FUVFJJQlVURV9OQU1FLCIiKX0s
Y3JlYXRlTWFya3VwRm9yUHJvcGVydHk6ZnVuY3Rpb24oZSx0KXt2YXIgbj1pLnByb3BlcnRpZXMu
aGFzT3duUHJvcGVydHkoZSk/aS5wcm9wZXJ0aWVzW2VdOm51bGw7aWYobil7aWYobyhuLHQpKXJl
dHVybiIiO3ZhciByPW4uYXR0cmlidXRlTmFtZTtyZXR1cm4gbi5oYXNCb29sZWFuVmFsdWV8fG4u
aGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSYmdD09PSEwP3IrJz0iIic6cisiPSIrYSh0KX1yZXR1
cm4gaS5pc0N1c3RvbUF0dHJpYnV0ZShlKT9udWxsPT10PyIiOmUrIj0iK2EodCk6bnVsbH0sY3Jl
YXRlTWFya3VwRm9yQ3VzdG9tQXR0cmlidXRlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIoZSkmJm51
bGwhPXQ/ZSsiPSIrYSh0KToiIn0sc2V0VmFsdWVGb3JQcm9wZXJ0eTpmdW5jdGlvbihlLHQsbil7
dmFyIHI9aS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KHQpP2kucHJvcGVydGllc1t0XTpudWxs
O2lmKHIpe3ZhciBhPXIubXV0YXRpb25NZXRob2Q7aWYoYSlhKGUsbik7ZWxzZXtpZihvKHIsbikp
cmV0dXJuIHZvaWQgdGhpcy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KGUsdCk7aWYoci5tdXN0VXNl
UHJvcGVydHkpZVtyLnByb3BlcnR5TmFtZV09bjtlbHNle3ZhciB1PXIuYXR0cmlidXRlTmFtZSxz
PXIuYXR0cmlidXRlTmFtZXNwYWNlO3M/ZS5zZXRBdHRyaWJ1dGVOUyhzLHUsIiIrbik6ci5oYXNC
b29sZWFuVmFsdWV8fHIuaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSYmbj09PSEwP2Uuc2V0QXR0
cmlidXRlKHUsIiIpOmUuc2V0QXR0cmlidXRlKHUsIiIrbil9fX1lbHNlIGlmKGkuaXNDdXN0b21B
dHRyaWJ1dGUodCkpcmV0dXJuIHZvaWQgbC5zZXRWYWx1ZUZvckF0dHJpYnV0ZShlLHQsbil9LHNl
dFZhbHVlRm9yQXR0cmlidXRlOmZ1bmN0aW9uKGUsdCxuKXtpZihyKHQpKXtudWxsPT1uP2UucmVt
b3ZlQXR0cmlidXRlKHQpOmUuc2V0QXR0cmlidXRlKHQsIiIrbil9fSxkZWxldGVWYWx1ZUZvckF0
dHJpYnV0ZTpmdW5jdGlvbihlLHQpe2UucmVtb3ZlQXR0cmlidXRlKHQpfSxkZWxldGVWYWx1ZUZv
clByb3BlcnR5OmZ1bmN0aW9uKGUsdCl7dmFyIG49aS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5
KHQpP2kucHJvcGVydGllc1t0XTpudWxsO2lmKG4pe3ZhciByPW4ubXV0YXRpb25NZXRob2Q7aWYo
cilyKGUsdm9pZCAwKTtlbHNlIGlmKG4ubXVzdFVzZVByb3BlcnR5KXt2YXIgbz1uLnByb3BlcnR5
TmFtZTtuLmhhc0Jvb2xlYW5WYWx1ZT9lW29dPSExOmVbb109IiJ9ZWxzZSBlLnJlbW92ZUF0dHJp
YnV0ZShuLmF0dHJpYnV0ZU5hbWUpfWVsc2UgaS5pc0N1c3RvbUF0dHJpYnV0ZSh0KSYmZS5yZW1v
dmVBdHRyaWJ1dGUodCl9fTtlLmV4cG9ydHM9bH0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7
dmFyIG49e2hhc0NhY2hlZENoaWxkTm9kZXM6MX07ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe2lmKHRoaXMuX3Jvb3ROb2RlSUQmJnRoaXMuX3dy
YXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlKXt0aGlzLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0
ZT0hMTt2YXIgZT10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcyx0PXUuZ2V0VmFsdWUoZSk7bnVs
bCE9dCYmbyh0aGlzLEJvb2xlYW4oZS5tdWx0aXBsZSksdCl9fWZ1bmN0aW9uIG8oZSx0LG4pe3Zh
ciByLG8saT1zLmdldE5vZGVGcm9tSW5zdGFuY2UoZSkub3B0aW9ucztpZih0KXtmb3Iocj17fSxv
PTA7bzxuLmxlbmd0aDtvKyspclsiIituW29dXT0hMDtmb3Iobz0wO288aS5sZW5ndGg7bysrKXt2
YXIgYT1yLmhhc093blByb3BlcnR5KGlbb10udmFsdWUpO2lbb10uc2VsZWN0ZWQhPT1hJiYoaVtv
XS5zZWxlY3RlZD1hKX19ZWxzZXtmb3Iocj0iIituLG89MDtvPGkubGVuZ3RoO28rKylpZihpW29d
LnZhbHVlPT09cilyZXR1cm4gdm9pZChpW29dLnNlbGVjdGVkPSEwKTtpLmxlbmd0aCYmKGlbMF0u
c2VsZWN0ZWQ9ITApfX1mdW5jdGlvbiBpKGUpe3ZhciB0PXRoaXMuX2N1cnJlbnRFbGVtZW50LnBy
b3BzLG49dS5leGVjdXRlT25DaGFuZ2UodCxlKTtyZXR1cm4gdGhpcy5fcm9vdE5vZGVJRCYmKHRo
aXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlPSEwKSxjLmFzYXAocix0aGlzKSxufXZhciBh
PW4oNCksdT1uKDM5KSxzPW4oNSksYz1uKDkpLGw9KG4oMiksITEpLHA9e2dldEhvc3RQcm9wczpm
dW5jdGlvbihlLHQpe3JldHVybiBhKHt9LHQse29uQ2hhbmdlOmUuX3dyYXBwZXJTdGF0ZS5vbkNo
YW5nZSx2YWx1ZTp2b2lkIDB9KX0sbW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49dS5n
ZXRWYWx1ZSh0KTtlLl93cmFwcGVyU3RhdGU9e3BlbmRpbmdVcGRhdGU6ITEsaW5pdGlhbFZhbHVl
Om51bGwhPW4/bjp0LmRlZmF1bHRWYWx1ZSxsaXN0ZW5lcnM6bnVsbCxvbkNoYW5nZTppLmJpbmQo
ZSksd2FzTXVsdGlwbGU6Qm9vbGVhbih0Lm11bHRpcGxlKX0sdm9pZCAwPT09dC52YWx1ZXx8dm9p
ZCAwPT09dC5kZWZhdWx0VmFsdWV8fGx8fChsPSEwKX0sZ2V0U2VsZWN0VmFsdWVDb250ZXh0OmZ1
bmN0aW9uKGUpe3JldHVybiBlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlfSxwb3N0VXBkYXRl
V3JhcHBlcjpmdW5jdGlvbihlKXt2YXIgdD1lLl9jdXJyZW50RWxlbWVudC5wcm9wcztlLl93cmFw
cGVyU3RhdGUuaW5pdGlhbFZhbHVlPXZvaWQgMDt2YXIgbj1lLl93cmFwcGVyU3RhdGUud2FzTXVs
dGlwbGU7ZS5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlPUJvb2xlYW4odC5tdWx0aXBsZSk7dmFy
IHI9dS5nZXRWYWx1ZSh0KTtudWxsIT1yPyhlLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZT0h
MSxvKGUsQm9vbGVhbih0Lm11bHRpcGxlKSxyKSk6biE9PUJvb2xlYW4odC5tdWx0aXBsZSkmJihu
dWxsIT10LmRlZmF1bHRWYWx1ZT9vKGUsQm9vbGVhbih0Lm11bHRpcGxlKSx0LmRlZmF1bHRWYWx1
ZSk6byhlLEJvb2xlYW4odC5tdWx0aXBsZSksdC5tdWx0aXBsZT9bXToiIikpfX07ZS5leHBvcnRz
PXB9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciBuLHI9e2luamVjdEVtcHR5Q29tcG9u
ZW50RmFjdG9yeTpmdW5jdGlvbihlKXtuPWV9fSxvPXtjcmVhdGU6ZnVuY3Rpb24oZSl7cmV0dXJu
IG4oZSl9fTtvLmluamVjdGlvbj1yLGUuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3Ry
aWN0Ijt2YXIgbj17bG9nVG9wTGV2ZWxSZW5kZXJzOiExfTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiB1P3ZvaWQgMDphKCIxMTEi
LGUudHlwZSksbmV3IHUoZSl9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbmV3IHMoZSl9ZnVuY3Rpb24g
aShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIHN9dmFyIGE9bigzKSx1PShuKDEpLG51bGwpLHM9bnVs
bCxjPXtpbmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3M6ZnVuY3Rpb24oZSl7dT1lfSxpbmplY3RU
ZXh0Q29tcG9uZW50Q2xhc3M6ZnVuY3Rpb24oZSl7cz1lfX0sbD17Y3JlYXRlSW50ZXJuYWxDb21w
b25lbnQ6cixjcmVhdGVJbnN0YW5jZUZvclRleHQ6byxpc1RleHRDb21wb25lbnQ6aSxpbmplY3Rp
b246Y307ZS5leHBvcnRzPWx9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlKXtyZXR1cm4gaShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsZSl9dmFyIG89bigxNDUpLGk9
bigxMDApLGE9big1MiksdT1uKDUzKSxzPXtoYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXM6ZnVuY3Rp
b24oZSl7dmFyIHQ9ZSYmZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVy
biB0JiYoImlucHV0Ij09PXQmJiJ0ZXh0Ij09PWUudHlwZXx8InRleHRhcmVhIj09PXR8fCJ0cnVl
Ij09PWUuY29udGVudEVkaXRhYmxlKX0sZ2V0U2VsZWN0aW9uSW5mb3JtYXRpb246ZnVuY3Rpb24o
KXt2YXIgZT11KCk7cmV0dXJue2ZvY3VzZWRFbGVtOmUsc2VsZWN0aW9uUmFuZ2U6cy5oYXNTZWxl
Y3Rpb25DYXBhYmlsaXRpZXMoZSk/cy5nZXRTZWxlY3Rpb24oZSk6bnVsbH19LHJlc3RvcmVTZWxl
Y3Rpb246ZnVuY3Rpb24oZSl7dmFyIHQ9dSgpLG49ZS5mb2N1c2VkRWxlbSxvPWUuc2VsZWN0aW9u
UmFuZ2U7dCE9PW4mJnIobikmJihzLmhhc1NlbGVjdGlvbkNhcGFiaWxpdGllcyhuKSYmcy5zZXRT
ZWxlY3Rpb24obixvKSxhKG4pKX0sZ2V0U2VsZWN0aW9uOmZ1bmN0aW9uKGUpe3ZhciB0O2lmKCJz
ZWxlY3Rpb25TdGFydCJpbiBlKXQ9e3N0YXJ0OmUuc2VsZWN0aW9uU3RhcnQsZW5kOmUuc2VsZWN0
aW9uRW5kfTtlbHNlIGlmKGRvY3VtZW50LnNlbGVjdGlvbiYmZS5ub2RlTmFtZSYmImlucHV0Ij09
PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7dmFyIG49ZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0
ZVJhbmdlKCk7bi5wYXJlbnRFbGVtZW50KCk9PT1lJiYodD17c3RhcnQ6LW4ubW92ZVN0YXJ0KCJj
aGFyYWN0ZXIiLC1lLnZhbHVlLmxlbmd0aCksZW5kOi1uLm1vdmVFbmQoImNoYXJhY3RlciIsLWUu
dmFsdWUubGVuZ3RoKX0pfWVsc2UgdD1vLmdldE9mZnNldHMoZSk7cmV0dXJuIHR8fHtzdGFydDow
LGVuZDowfX0sc2V0U2VsZWN0aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5zdGFydCxyPXQuZW5k
O2lmKHZvaWQgMD09PXImJihyPW4pLCJzZWxlY3Rpb25TdGFydCJpbiBlKWUuc2VsZWN0aW9uU3Rh
cnQ9bixlLnNlbGVjdGlvbkVuZD1NYXRoLm1pbihyLGUudmFsdWUubGVuZ3RoKTtlbHNlIGlmKGRv
Y3VtZW50LnNlbGVjdGlvbiYmZS5ub2RlTmFtZSYmImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dl
ckNhc2UoKSl7dmFyIGk9ZS5jcmVhdGVUZXh0UmFuZ2UoKTtpLmNvbGxhcHNlKCEwKSxpLm1vdmVT
dGFydCgiY2hhcmFjdGVyIixuKSxpLm1vdmVFbmQoImNoYXJhY3RlciIsci1uKSxpLnNlbGVjdCgp
fWVsc2Ugby5zZXRPZmZzZXRzKGUsdCl9fTtlLmV4cG9ydHM9c30sZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7Zm9yKHZhciBuPU1hdGgubWluKGUubGVuZ3RoLHQu
bGVuZ3RoKSxyPTA7cjxuO3IrKylpZihlLmNoYXJBdChyKSE9PXQuY2hhckF0KHIpKXJldHVybiBy
O3JldHVybiBlLmxlbmd0aD09PXQubGVuZ3RoPy0xOm59ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZT9l
Lm5vZGVUeXBlPT09QT9lLmRvY3VtZW50RWxlbWVudDplLmZpcnN0Q2hpbGQ6bnVsbH1mdW5jdGlv
biBpKGUpe3JldHVybiBlLmdldEF0dHJpYnV0ZSYmZS5nZXRBdHRyaWJ1dGUoTil8fCIifWZ1bmN0
aW9uIGEoZSx0LG4scixvKXt2YXIgaTtpZihDLmxvZ1RvcExldmVsUmVuZGVycyl7dmFyIGE9ZS5f
Y3VycmVudEVsZW1lbnQucHJvcHMuY2hpbGQsdT1hLnR5cGU7aT0iUmVhY3QgbW91bnQ6ICIrKCJz
dHJpbmciPT10eXBlb2YgdT91OnUuZGlzcGxheU5hbWV8fHUubmFtZSksY29uc29sZS50aW1lKGkp
fXZhciBzPVQubW91bnRDb21wb25lbnQoZSxuLG51bGwsYihlLHQpLG8sMCk7aSYmY29uc29sZS50
aW1lRW5kKGkpLGUuX3JlbmRlcmVkQ29tcG9uZW50Ll90b3BMZXZlbFdyYXBwZXI9ZSxGLl9tb3Vu
dEltYWdlSW50b05vZGUocyx0LGUscixuKX1mdW5jdGlvbiB1KGUsdCxuLHIpe3ZhciBvPXguUmVh
Y3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5nZXRQb29sZWQoIW4mJl8udXNlQ3JlYXRlRWxlbWVudCk7
by5wZXJmb3JtKGEsbnVsbCxlLHQsbyxuLHIpLHguUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5y
ZWxlYXNlKG8pfWZ1bmN0aW9uIHMoZSx0LG4pe2ZvcihULnVubW91bnRDb21wb25lbnQoZSxuKSx0
Lm5vZGVUeXBlPT09QSYmKHQ9dC5kb2N1bWVudEVsZW1lbnQpO3QubGFzdENoaWxkOyl0LnJlbW92
ZUNoaWxkKHQubGFzdENoaWxkKX1mdW5jdGlvbiBjKGUpe3ZhciB0PW8oZSk7aWYodCl7dmFyIG49
Zy5nZXRJbnN0YW5jZUZyb21Ob2RlKHQpO3JldHVybiEoIW58fCFuLl9ob3N0UGFyZW50KX19ZnVu
Y3Rpb24gbChlKXtyZXR1cm4hKCFlfHxlLm5vZGVUeXBlIT09UiYmZS5ub2RlVHlwZSE9PUEmJmUu
bm9kZVR5cGUhPT1EKX1mdW5jdGlvbiBwKGUpe3ZhciB0PW8oZSksbj10JiZnLmdldEluc3RhbmNl
RnJvbU5vZGUodCk7cmV0dXJuIG4mJiFuLl9ob3N0UGFyZW50P246bnVsbH1mdW5jdGlvbiBkKGUp
e3ZhciB0PXAoZSk7cmV0dXJuIHQ/dC5faG9zdENvbnRhaW5lckluZm8uX3RvcExldmVsV3JhcHBl
cjpudWxsfXZhciBmPW4oMyksaD1uKDE0KSx2PW4oMTUpLG09bigxNykseT1uKDI1KSxnPShuKDEx
KSxuKDUpKSxiPW4oMTM5KSxfPW4oMTQxKSxDPW4oNjQpLEU9bigyMSksdz0obig4KSxuKDE1NSkp
LFQ9bigxNiksUD1uKDQyKSx4PW4oOSksTz1uKDI0KSxTPW4oNzUpLGs9KG4oMSksbigyOSkpLE09
big0OCksTj0obigyKSx2LklEX0FUVFJJQlVURV9OQU1FKSxJPXYuUk9PVF9BVFRSSUJVVEVfTkFN
RSxSPTEsQT05LEQ9MTEsaj17fSxMPTEsVT1mdW5jdGlvbigpe3RoaXMucm9vdElEPUwrK307VS5w
cm90b3R5cGUuaXNSZWFjdENvbXBvbmVudD17fSxVLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24o
KXtyZXR1cm4gdGhpcy5wcm9wcy5jaGlsZH0sVS5pc1JlYWN0VG9wTGV2ZWxXcmFwcGVyPSEwO3Zh
ciBGPXtUb3BMZXZlbFdyYXBwZXI6VSxfaW5zdGFuY2VzQnlSZWFjdFJvb3RJRDpqLHNjcm9sbE1v
bml0b3I6ZnVuY3Rpb24oZSx0KXt0KCl9LF91cGRhdGVSb290Q29tcG9uZW50OmZ1bmN0aW9uKGUs
dCxuLHIsbyl7cmV0dXJuIEYuc2Nyb2xsTW9uaXRvcihyLGZ1bmN0aW9uKCl7UC5lbnF1ZXVlRWxl
bWVudEludGVybmFsKGUsdCxuKSxvJiZQLmVucXVldWVDYWxsYmFja0ludGVybmFsKGUsbyl9KSxl
fSxfcmVuZGVyTmV3Um9vdENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyKXtsKHQpP3ZvaWQgMDpm
KCIzNyIpLHkuZW5zdXJlU2Nyb2xsVmFsdWVNb25pdG9yaW5nKCk7dmFyIG89UyhlLCExKTt4LmJh
dGNoZWRVcGRhdGVzKHUsbyx0LG4scik7dmFyIGk9by5faW5zdGFuY2Uucm9vdElEO3JldHVybiBq
W2ldPW8sb30scmVuZGVyU3VidHJlZUludG9Db250YWluZXI6ZnVuY3Rpb24oZSx0LG4scil7cmV0
dXJuIG51bGwhPWUmJkUuaGFzKGUpP3ZvaWQgMDpmKCIzOCIpLEYuX3JlbmRlclN1YnRyZWVJbnRv
Q29udGFpbmVyKGUsdCxuLHIpfSxfcmVuZGVyU3VidHJlZUludG9Db250YWluZXI6ZnVuY3Rpb24o
ZSx0LG4scil7UC52YWxpZGF0ZUNhbGxiYWNrKHIsIlJlYWN0RE9NLnJlbmRlciIpLG0uaXNWYWxp
ZEVsZW1lbnQodCk/dm9pZCAwOmYoIjM5Iiwic3RyaW5nIj09dHlwZW9mIHQ/IiBJbnN0ZWFkIG9m
IHBhc3NpbmcgYSBzdHJpbmcgbGlrZSAnZGl2JywgcGFzcyBSZWFjdC5jcmVhdGVFbGVtZW50KCdk
aXYnKSBvciA8ZGl2IC8+LiI6ImZ1bmN0aW9uIj09dHlwZW9mIHQ/IiBJbnN0ZWFkIG9mIHBhc3Np
bmcgYSBjbGFzcyBsaWtlIEZvbywgcGFzcyBSZWFjdC5jcmVhdGVFbGVtZW50KEZvbykgb3IgPEZv
byAvPi4iOm51bGwhPXQmJnZvaWQgMCE9PXQucHJvcHM/IiBUaGlzIG1heSBiZSBjYXVzZWQgYnkg
dW5pbnRlbnRpb25hbGx5IGxvYWRpbmcgdHdvIGluZGVwZW5kZW50IGNvcGllcyBvZiBSZWFjdC4i
OiIiKTt2YXIgYSx1PW0uY3JlYXRlRWxlbWVudChVLHtjaGlsZDp0fSk7aWYoZSl7dmFyIHM9RS5n
ZXQoZSk7YT1zLl9wcm9jZXNzQ2hpbGRDb250ZXh0KHMuX2NvbnRleHQpfWVsc2UgYT1PO3ZhciBs
PWQobik7aWYobCl7dmFyIHA9bC5fY3VycmVudEVsZW1lbnQsaD1wLnByb3BzLmNoaWxkO2lmKE0o
aCx0KSl7dmFyIHY9bC5fcmVuZGVyZWRDb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKSx5PXIm
JmZ1bmN0aW9uKCl7ci5jYWxsKHYpfTtyZXR1cm4gRi5fdXBkYXRlUm9vdENvbXBvbmVudChsLHUs
YSxuLHkpLHZ9Ri51bm1vdW50Q29tcG9uZW50QXROb2RlKG4pfXZhciBnPW8obiksYj1nJiYhIWko
ZyksXz1jKG4pLEM9YiYmIWwmJiFfLHc9Ri5fcmVuZGVyTmV3Um9vdENvbXBvbmVudCh1LG4sQyxh
KS5fcmVuZGVyZWRDb21wb25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKTtyZXR1cm4gciYmci5jYWxs
KHcpLHd9LHJlbmRlcjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIEYuX3JlbmRlclN1YnRyZWVJbnRv
Q29udGFpbmVyKG51bGwsZSx0LG4pfSx1bm1vdW50Q29tcG9uZW50QXROb2RlOmZ1bmN0aW9uKGUp
e2woZSk/dm9pZCAwOmYoIjQwIik7dmFyIHQ9ZChlKTtpZighdCl7YyhlKSwxPT09ZS5ub2RlVHlw
ZSYmZS5oYXNBdHRyaWJ1dGUoSSk7cmV0dXJuITF9cmV0dXJuIGRlbGV0ZSBqW3QuX2luc3RhbmNl
LnJvb3RJRF0seC5iYXRjaGVkVXBkYXRlcyhzLHQsZSwhMSksITB9LF9tb3VudEltYWdlSW50b05v
ZGU6ZnVuY3Rpb24oZSx0LG4saSxhKXtpZihsKHQpP3ZvaWQgMDpmKCI0MSIpLGkpe3ZhciB1PW8o
dCk7aWYody5jYW5SZXVzZU1hcmt1cChlLHUpKXJldHVybiB2b2lkIGcucHJlY2FjaGVOb2RlKG4s
dSk7dmFyIHM9dS5nZXRBdHRyaWJ1dGUody5DSEVDS1NVTV9BVFRSX05BTUUpO3UucmVtb3ZlQXR0
cmlidXRlKHcuQ0hFQ0tTVU1fQVRUUl9OQU1FKTt2YXIgYz11Lm91dGVySFRNTDt1LnNldEF0dHJp
YnV0ZSh3LkNIRUNLU1VNX0FUVFJfTkFNRSxzKTt2YXIgcD1lLGQ9cihwLGMpLHY9IiAoY2xpZW50
KSAiK3Auc3Vic3RyaW5nKGQtMjAsZCsyMCkrIlxuIChzZXJ2ZXIpICIrYy5zdWJzdHJpbmcoZC0y
MCxkKzIwKTt0Lm5vZGVUeXBlPT09QT9mKCI0MiIsdik6dm9pZCAwfWlmKHQubm9kZVR5cGU9PT1B
P2YoIjQzIik6dm9pZCAwLGEudXNlQ3JlYXRlRWxlbWVudCl7Zm9yKDt0Lmxhc3RDaGlsZDspdC5y
ZW1vdmVDaGlsZCh0Lmxhc3RDaGlsZCk7aC5pbnNlcnRUcmVlQmVmb3JlKHQsZSxudWxsKX1lbHNl
IGsodCxlKSxnLnByZWNhY2hlTm9kZShuLHQuZmlyc3RDaGlsZCl9fTtlLmV4cG9ydHM9Rn0sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDMpLG89bigxNyksaT0obigxKSx7SE9T
VDowLENPTVBPU0lURToxLEVNUFRZOjIsZ2V0VHlwZTpmdW5jdGlvbihlKXtyZXR1cm4gbnVsbD09
PWV8fGU9PT0hMT9pLkVNUFRZOm8uaXNWYWxpZEVsZW1lbnQoZSk/ImZ1bmN0aW9uIj09dHlwZW9m
IGUudHlwZT9pLkNPTVBPU0lURTppLkhPU1Q6dm9pZCByKCIyNiIsZSl9fSk7ZS5leHBvcnRzPWl9
LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXtjdXJyZW50U2Nyb2xsTGVmdDowLGN1
cnJlbnRTY3JvbGxUb3A6MCxyZWZyZXNoU2Nyb2xsVmFsdWVzOmZ1bmN0aW9uKGUpe24uY3VycmVu
dFNjcm9sbExlZnQ9ZS54LG4uY3VycmVudFNjcm9sbFRvcD1lLnl9fTtlLmV4cG9ydHM9bn0sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIG51bGw9PXQ/
bygiMzAiKTp2b2lkIDAsbnVsbD09ZT90OkFycmF5LmlzQXJyYXkoZSk/QXJyYXkuaXNBcnJheSh0
KT8oZS5wdXNoLmFwcGx5KGUsdCksZSk6KGUucHVzaCh0KSxlKTpBcnJheS5pc0FycmF5KHQpP1tl
XS5jb25jYXQodCk6W2UsdF19dmFyIG89bigzKTtuKDEpO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihl
LHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCxuKXtBcnJheS5pc0FycmF5KGUpP2UuZm9y
RWFjaCh0LG4pOmUmJnQuY2FsbChuLGUpfWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7Zm9yKHZhciB0Oyh0PWUuX3JlbmRlcmVkTm9kZVR5cGUp
PT09by5DT01QT1NJVEU7KWU9ZS5fcmVuZGVyZWRDb21wb25lbnQ7cmV0dXJuIHQ9PT1vLkhPU1Q/
ZS5fcmVuZGVyZWRDb21wb25lbnQ6dD09PW8uRU1QVFk/bnVsbDp2b2lkIDB9dmFyIG89big2OCk7
ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3Jl
dHVybiFpJiZvLmNhblVzZURPTSYmKGk9InRleHRDb250ZW50ImluIGRvY3VtZW50LmRvY3VtZW50
RWxlbWVudD8idGV4dENvbnRlbnQiOiJpbm5lclRleHQiKSxpfXZhciBvPW4oNiksaT1udWxsO2Uu
ZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFy
IHQ9ZS50eXBlLG49ZS5ub2RlTmFtZTtyZXR1cm4gbiYmImlucHV0Ij09PW4udG9Mb3dlckNhc2Uo
KSYmKCJjaGVja2JveCI9PT10fHwicmFkaW8iPT09dCl9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZS5f
d3JhcHBlclN0YXRlLnZhbHVlVHJhY2tlcn1mdW5jdGlvbiBpKGUsdCl7ZS5fd3JhcHBlclN0YXRl
LnZhbHVlVHJhY2tlcj10fWZ1bmN0aW9uIGEoZSl7ZGVsZXRlIGUuX3dyYXBwZXJTdGF0ZS52YWx1
ZVRyYWNrZXJ9ZnVuY3Rpb24gdShlKXt2YXIgdDtyZXR1cm4gZSYmKHQ9cihlKT8iIitlLmNoZWNr
ZWQ6ZS52YWx1ZSksdH12YXIgcz1uKDUpLGM9e19nZXRUcmFja2VyRnJvbU5vZGU6ZnVuY3Rpb24o
ZSl7cmV0dXJuIG8ocy5nZXRJbnN0YW5jZUZyb21Ob2RlKGUpKX0sdHJhY2s6ZnVuY3Rpb24oZSl7
aWYoIW8oZSkpe3ZhciB0PXMuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKSxuPXIodCk/ImNoZWNrZWQi
OiJ2YWx1ZSIsdT1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKHQuY29uc3RydWN0b3Iu
cHJvdG90eXBlLG4pLGM9IiIrdFtuXTt0Lmhhc093blByb3BlcnR5KG4pfHwiZnVuY3Rpb24iIT10
eXBlb2YgdS5nZXR8fCJmdW5jdGlvbiIhPXR5cGVvZiB1LnNldHx8KE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0LG4se2VudW1lcmFibGU6dS5lbnVtZXJhYmxlLGNvbmZpZ3VyYWJsZTohMCxnZXQ6ZnVu
Y3Rpb24oKXtyZXR1cm4gdS5nZXQuY2FsbCh0aGlzKX0sc2V0OmZ1bmN0aW9uKGUpe2M9IiIrZSx1
LnNldC5jYWxsKHRoaXMsZSl9fSksaShlLHtnZXRWYWx1ZTpmdW5jdGlvbigpe3JldHVybiBjfSxz
ZXRWYWx1ZTpmdW5jdGlvbihlKXtjPSIiK2V9LHN0b3BUcmFja2luZzpmdW5jdGlvbigpe2EoZSks
ZGVsZXRlIHRbbl19fSkpfX0sdXBkYXRlVmFsdWVJZkNoYW5nZWQ6ZnVuY3Rpb24oZSl7aWYoIWUp
cmV0dXJuITE7dmFyIHQ9byhlKTtpZighdClyZXR1cm4gYy50cmFjayhlKSwhMDt2YXIgbj10Lmdl
dFZhbHVlKCkscj11KHMuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKSk7cmV0dXJuIHIhPT1uJiYodC5z
ZXRWYWx1ZShyKSwhMCl9LHN0b3BUcmFja2luZzpmdW5jdGlvbihlKXt2YXIgdD1vKGUpO3QmJnQu
c3RvcFRyYWNraW5nKCl9fTtlLmV4cG9ydHM9Y30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe2lmKGUpe3ZhciB0PWUuZ2V0TmFtZSgpO2lmKHQpcmV0dXJuIiBDaGVj
ayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgIit0KyJgLiJ9cmV0dXJuIiJ9ZnVuY3Rpb24gbyhlKXty
ZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZSYmInVuZGVmaW5lZCIhPXR5cGVvZiBlLnByb3RvdHlw
ZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUucHJvdG90eXBlLm1vdW50Q29tcG9uZW50JiYiZnVuY3Rp
b24iPT10eXBlb2YgZS5wcm90b3R5cGUucmVjZWl2ZUNvbXBvbmVudH1mdW5jdGlvbiBpKGUsdCl7
dmFyIG47aWYobnVsbD09PWV8fGU9PT0hMSluPWMuY3JlYXRlKGkpO2Vsc2UgaWYoIm9iamVjdCI9
PXR5cGVvZiBlKXt2YXIgdT1lLHM9dS50eXBlO2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBzJiYic3Ry
aW5nIiE9dHlwZW9mIHMpe3ZhciBkPSIiO2QrPXIodS5fb3duZXIpLGEoIjEzMCIsbnVsbD09cz9z
OnR5cGVvZiBzLGQpfSJzdHJpbmciPT10eXBlb2YgdS50eXBlP249bC5jcmVhdGVJbnRlcm5hbENv
bXBvbmVudCh1KTpvKHUudHlwZSk/KG49bmV3IHUudHlwZSh1KSxuLmdldEhvc3ROb2RlfHwobi5n
ZXRIb3N0Tm9kZT1uLmdldE5hdGl2ZU5vZGUpKTpuPW5ldyBwKHUpfWVsc2Uic3RyaW5nIj09dHlw
ZW9mIGV8fCJudW1iZXIiPT10eXBlb2YgZT9uPWwuY3JlYXRlSW5zdGFuY2VGb3JUZXh0KGUpOmEo
IjEzMSIsdHlwZW9mIGUpO3JldHVybiBuLl9tb3VudEluZGV4PTAsbi5fbW91bnRJbWFnZT1udWxs
LG59dmFyIGE9bigzKSx1PW4oNCkscz1uKDEzNiksYz1uKDYzKSxsPW4oNjUpLHA9KG4oMjIxKSxu
KDEpLG4oMiksZnVuY3Rpb24oZSl7dGhpcy5jb25zdHJ1Y3QoZSl9KTt1KHAucHJvdG90eXBlLHMs
e19pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50Oml9KSxlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXt2YXIgdD1lJiZlLm5vZGVOYW1lJiZlLm5vZGVO
YW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQ/ISFyW2UudHlwZV06InRleHRhcmVh
Ij09PXR9dmFyIHI9e2NvbG9yOiEwLGRhdGU6ITAsZGF0ZXRpbWU6ITAsImRhdGV0aW1lLWxvY2Fs
IjohMCxlbWFpbDohMCxtb250aDohMCxudW1iZXI6ITAscGFzc3dvcmQ6ITAscmFuZ2U6ITAsc2Vh
cmNoOiEwLHRlbDohMCx0ZXh0OiEwLHRpbWU6ITAsdXJsOiEwLHdlZWs6ITB9O2UuZXhwb3J0cz1u
fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNiksbz1uKDI4KSxpPW4oMjkp
LGE9ZnVuY3Rpb24oZSx0KXtpZih0KXt2YXIgbj1lLmZpcnN0Q2hpbGQ7aWYobiYmbj09PWUubGFz
dENoaWxkJiYzPT09bi5ub2RlVHlwZSlyZXR1cm4gdm9pZChuLm5vZGVWYWx1ZT10KX1lLnRleHRD
b250ZW50PXR9O3IuY2FuVXNlRE9NJiYoInRleHRDb250ZW50ImluIGRvY3VtZW50LmRvY3VtZW50
RWxlbWVudHx8KGE9ZnVuY3Rpb24oZSx0KXtyZXR1cm4gMz09PWUubm9kZVR5cGU/dm9pZChlLm5v
ZGVWYWx1ZT10KTp2b2lkIGkoZSxvKHQpKX0pKSxlLmV4cG9ydHM9YX0sZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIGUmJiJvYmplY3QiPT10eXBlb2Yg
ZSYmbnVsbCE9ZS5rZXk/Yy5lc2NhcGUoZS5rZXkpOnQudG9TdHJpbmcoMzYpfWZ1bmN0aW9uIG8o
ZSx0LG4saSl7dmFyIGQ9dHlwZW9mIGU7aWYoInVuZGVmaW5lZCIhPT1kJiYiYm9vbGVhbiIhPT1k
fHwoZT1udWxsKSxudWxsPT09ZXx8InN0cmluZyI9PT1kfHwibnVtYmVyIj09PWR8fCJvYmplY3Qi
PT09ZCYmZS4kJHR5cGVvZj09PXUpcmV0dXJuIG4oaSxlLCIiPT09dD9sK3IoZSwwKTp0KSwxO3Zh
ciBmLGgsdj0wLG09IiI9PT10P2w6dCtwO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciB5PTA7
eTxlLmxlbmd0aDt5KyspZj1lW3ldLGg9bStyKGYseSksdis9byhmLGgsbixpKTtlbHNle3ZhciBn
PXMoZSk7aWYoZyl7dmFyIGIsXz1nLmNhbGwoZSk7aWYoZyE9PWUuZW50cmllcylmb3IodmFyIEM9
MDshKGI9Xy5uZXh0KCkpLmRvbmU7KWY9Yi52YWx1ZSxoPW0rcihmLEMrKyksdis9byhmLGgsbixp
KTtlbHNlIGZvcig7IShiPV8ubmV4dCgpKS5kb25lOyl7dmFyIEU9Yi52YWx1ZTtFJiYoZj1FWzFd
LGg9bStjLmVzY2FwZShFWzBdKStwK3IoZiwwKSx2Kz1vKGYsaCxuLGkpKX19ZWxzZSBpZigib2Jq
ZWN0Ij09PWQpe3ZhciB3PSIiLFQ9U3RyaW5nKGUpO2EoIjMxIiwiW29iamVjdCBPYmplY3RdIj09
PVQ/Im9iamVjdCB3aXRoIGtleXMgeyIrT2JqZWN0LmtleXMoZSkuam9pbigiLCAiKSsifSI6VCx3
KX19cmV0dXJuIHZ9ZnVuY3Rpb24gaShlLHQsbil7cmV0dXJuIG51bGw9PWU/MDpvKGUsIiIsdCxu
KX12YXIgYT1uKDMpLHU9KG4oMTEpLG4oMTUxKSkscz1uKDE4MiksYz0obigxKSxuKDM4KSksbD0o
bigyKSwiLiIpLHA9IjoiO2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0
aW9uIG8oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5u
b3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBpKGUsdCl7aWYoIWUpdGhy
b3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3Vw
ZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYi
ZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24gYShlLHQpe2lmKCJmdW5jdGlvbiIhPXR5
cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11
c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90
eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVu
dW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0
UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9ZnVu
Y3Rpb24gdShlLHQpe3ZhciBuPXt9O2Zvcih2YXIgciBpbiBlKXQuaW5kZXhPZihyKT49MHx8T2Jq
ZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUscikmJihuW3JdPWVbcl0pO3JldHVy
biBufWZ1bmN0aW9uIHMoKXt9ZnVuY3Rpb24gYyhlLHQpe3ZhciBuPXtydW46ZnVuY3Rpb24ocil7
dHJ5e3ZhciBvPWUodC5nZXRTdGF0ZSgpLHIpOyhvIT09bi5wcm9wc3x8bi5lcnJvcikmJihuLnNo
b3VsZENvbXBvbmVudFVwZGF0ZT0hMCxuLnByb3BzPW8sbi5lcnJvcj1udWxsKX1jYXRjaChpKXtu
LnNob3VsZENvbXBvbmVudFVwZGF0ZT0hMCxuLmVycm9yPWl9fX07cmV0dXJuIG59ZnVuY3Rpb24g
bChlKXt2YXIgdCxuLHI9YXJndW1lbnRzLmxlbmd0aD4xJiZ2b2lkIDAhPT1hcmd1bWVudHNbMV0/
YXJndW1lbnRzWzFdOnt9LGw9ci5nZXREaXNwbGF5TmFtZSxkPXZvaWQgMD09PWw/ZnVuY3Rpb24o
ZSl7cmV0dXJuIkNvbm5lY3RBZHZhbmNlZCgiK2UrIikifTpsLGg9ci5tZXRob2ROYW1lLHk9dm9p
ZCAwPT09aD8iY29ubmVjdEFkdmFuY2VkIjpoLEU9ci5yZW5kZXJDb3VudFByb3Asdz12b2lkIDA9
PT1FP3ZvaWQgMDpFLFQ9ci5zaG91bGRIYW5kbGVTdGF0ZUNoYW5nZXMsUD12b2lkIDA9PT1UfHxU
LHg9ci5zdG9yZUtleSxPPXZvaWQgMD09PXg/InN0b3JlIjp4LFM9ci53aXRoUmVmLGs9dm9pZCAw
IT09UyYmUyxNPXUocixbImdldERpc3BsYXlOYW1lIiwibWV0aG9kTmFtZSIsInJlbmRlckNvdW50
UHJvcCIsInNob3VsZEhhbmRsZVN0YXRlQ2hhbmdlcyIsInN0b3JlS2V5Iiwid2l0aFJlZiJdKSxO
PU8rIlN1YnNjcmlwdGlvbiIsST1fKyssUj0odD17fSx0W09dPWIuc3RvcmVTaGFwZSx0W05dPWIu
c3Vic2NyaXB0aW9uU2hhcGUsdCksQT0obj17fSxuW05dPWIuc3Vic2NyaXB0aW9uU2hhcGUsbik7
cmV0dXJuIGZ1bmN0aW9uKHQpeygwLHYuZGVmYXVsdCkoImZ1bmN0aW9uIj09dHlwZW9mIHQsIllv
dSBtdXN0IHBhc3MgYSBjb21wb25lbnQgdG8gdGhlIGZ1bmN0aW9uIHJldHVybmVkIGJ5IGNvbm5l
Y3QuIEluc3RlYWQgcmVjZWl2ZWQgIitKU09OLnN0cmluZ2lmeSh0KSk7dmFyIG49dC5kaXNwbGF5
TmFtZXx8dC5uYW1lfHwiQ29tcG9uZW50IixyPWQobiksdT1wKHt9LE0se2dldERpc3BsYXlOYW1l
OmQsbWV0aG9kTmFtZTp5LHJlbmRlckNvdW50UHJvcDp3LHNob3VsZEhhbmRsZVN0YXRlQ2hhbmdl
czpQLHN0b3JlS2V5Ok8sd2l0aFJlZjprLGRpc3BsYXlOYW1lOnIsd3JhcHBlZENvbXBvbmVudE5h
bWU6bixXcmFwcGVkQ29tcG9uZW50OnR9KSxsPWZ1bmN0aW9uKG4pe2Z1bmN0aW9uIGwoZSx0KXtv
KHRoaXMsbCk7dmFyIGE9aSh0aGlzLG4uY2FsbCh0aGlzLGUsdCkpO3JldHVybiBhLnZlcnNpb249
SSxhLnN0YXRlPXt9LGEucmVuZGVyQ291bnQ9MCxhLnN0b3JlPWVbT118fHRbT10sYS5wcm9wc01v
ZGU9Qm9vbGVhbihlW09dKSxhLnNldFdyYXBwZWRJbnN0YW5jZT1hLnNldFdyYXBwZWRJbnN0YW5j
ZS5iaW5kKGEpLCgwLHYuZGVmYXVsdCkoYS5zdG9yZSwnQ291bGQgbm90IGZpbmQgIicrTysnIiBp
biBlaXRoZXIgdGhlIGNvbnRleHQgb3IgcHJvcHMgb2YgJysoJyInK3IrJyIuIEVpdGhlciB3cmFw
IHRoZSByb290IGNvbXBvbmVudCBpbiBhIDxQcm92aWRlcj4sICcpKygnb3IgZXhwbGljaXRseSBw
YXNzICInK08rJyIgYXMgYSBwcm9wIHRvICInK3IrJyIuJykpLGEuaW5pdFNlbGVjdG9yKCksYS5p
bml0U3Vic2NyaXB0aW9uKCksYX1yZXR1cm4gYShsLG4pLGwucHJvdG90eXBlLmdldENoaWxkQ29u
dGV4dD1mdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy5wcm9wc01vZGU/bnVsbDp0aGlzLnN1YnNjcmlw
dGlvbjtyZXR1cm4gZT17fSxlW05dPXR8fHRoaXMuY29udGV4dFtOXSxlfSxsLnByb3RvdHlwZS5j
b21wb25lbnREaWRNb3VudD1mdW5jdGlvbigpe1AmJih0aGlzLnN1YnNjcmlwdGlvbi50cnlTdWJz
Y3JpYmUoKSx0aGlzLnNlbGVjdG9yLnJ1bih0aGlzLnByb3BzKSx0aGlzLnNlbGVjdG9yLnNob3Vs
ZENvbXBvbmVudFVwZGF0ZSYmdGhpcy5mb3JjZVVwZGF0ZSgpKX0sbC5wcm90b3R5cGUuY29tcG9u
ZW50V2lsbFJlY2VpdmVQcm9wcz1mdW5jdGlvbihlKXt0aGlzLnNlbGVjdG9yLnJ1bihlKX0sbC5w
cm90b3R5cGUuc2hvdWxkQ29tcG9uZW50VXBkYXRlPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuc2Vs
ZWN0b3Iuc2hvdWxkQ29tcG9uZW50VXBkYXRlfSxsLnByb3RvdHlwZS5jb21wb25lbnRXaWxsVW5t
b3VudD1mdW5jdGlvbigpe3RoaXMuc3Vic2NyaXB0aW9uJiZ0aGlzLnN1YnNjcmlwdGlvbi50cnlV
bnN1YnNjcmliZSgpLHRoaXMuc3Vic2NyaXB0aW9uPW51bGwsdGhpcy5ub3RpZnlOZXN0ZWRTdWJz
PXMsdGhpcy5zdG9yZT1udWxsLHRoaXMuc2VsZWN0b3IucnVuPXMsdGhpcy5zZWxlY3Rvci5zaG91
bGRDb21wb25lbnRVcGRhdGU9ITF9LGwucHJvdG90eXBlLmdldFdyYXBwZWRJbnN0YW5jZT1mdW5j
dGlvbigpe3JldHVybigwLHYuZGVmYXVsdCkoaywiVG8gYWNjZXNzIHRoZSB3cmFwcGVkIGluc3Rh
bmNlLCB5b3UgbmVlZCB0byBzcGVjaWZ5ICIrKCJ7IHdpdGhSZWY6IHRydWUgfSBpbiB0aGUgb3B0
aW9ucyBhcmd1bWVudCBvZiB0aGUgIit5KyIoKSBjYWxsLiIpKSx0aGlzLndyYXBwZWRJbnN0YW5j
ZX0sbC5wcm90b3R5cGUuc2V0V3JhcHBlZEluc3RhbmNlPWZ1bmN0aW9uKGUpe3RoaXMud3JhcHBl
ZEluc3RhbmNlPWV9LGwucHJvdG90eXBlLmluaXRTZWxlY3Rvcj1mdW5jdGlvbigpe3ZhciB0PWUo
dGhpcy5zdG9yZS5kaXNwYXRjaCx1KTt0aGlzLnNlbGVjdG9yPWModCx0aGlzLnN0b3JlKSx0aGlz
LnNlbGVjdG9yLnJ1bih0aGlzLnByb3BzKX0sbC5wcm90b3R5cGUuaW5pdFN1YnNjcmlwdGlvbj1m
dW5jdGlvbigpe2lmKFApe3ZhciBlPSh0aGlzLnByb3BzTW9kZT90aGlzLnByb3BzOnRoaXMuY29u
dGV4dClbTl07dGhpcy5zdWJzY3JpcHRpb249bmV3IGcuZGVmYXVsdCh0aGlzLnN0b3JlLGUsdGhp
cy5vblN0YXRlQ2hhbmdlLmJpbmQodGhpcykpLHRoaXMubm90aWZ5TmVzdGVkU3Vicz10aGlzLnN1
YnNjcmlwdGlvbi5ub3RpZnlOZXN0ZWRTdWJzLmJpbmQodGhpcy5zdWJzY3JpcHRpb24pfX0sbC5w
cm90b3R5cGUub25TdGF0ZUNoYW5nZT1mdW5jdGlvbigpe3RoaXMuc2VsZWN0b3IucnVuKHRoaXMu
cHJvcHMpLHRoaXMuc2VsZWN0b3Iuc2hvdWxkQ29tcG9uZW50VXBkYXRlPyh0aGlzLmNvbXBvbmVu
dERpZFVwZGF0ZT10aGlzLm5vdGlmeU5lc3RlZFN1YnNPbkNvbXBvbmVudERpZFVwZGF0ZSx0aGlz
LnNldFN0YXRlKEMpKTp0aGlzLm5vdGlmeU5lc3RlZFN1YnMoKX0sbC5wcm90b3R5cGUubm90aWZ5
TmVzdGVkU3Vic09uQ29tcG9uZW50RGlkVXBkYXRlPWZ1bmN0aW9uKCl7dGhpcy5jb21wb25lbnRE
aWRVcGRhdGU9dm9pZCAwLHRoaXMubm90aWZ5TmVzdGVkU3VicygpfSxsLnByb3RvdHlwZS5pc1N1
YnNjcmliZWQ9ZnVuY3Rpb24oKXtyZXR1cm4gQm9vbGVhbih0aGlzLnN1YnNjcmlwdGlvbikmJnRo
aXMuc3Vic2NyaXB0aW9uLmlzU3Vic2NyaWJlZCgpfSxsLnByb3RvdHlwZS5hZGRFeHRyYVByb3Bz
PWZ1bmN0aW9uKGUpe2lmKCEoa3x8d3x8dGhpcy5wcm9wc01vZGUmJnRoaXMuc3Vic2NyaXB0aW9u
KSlyZXR1cm4gZTt2YXIgdD1wKHt9LGUpO3JldHVybiBrJiYodC5yZWY9dGhpcy5zZXRXcmFwcGVk
SW5zdGFuY2UpLHcmJih0W3ddPXRoaXMucmVuZGVyQ291bnQrKyksdGhpcy5wcm9wc01vZGUmJnRo
aXMuc3Vic2NyaXB0aW9uJiYodFtOXT10aGlzLnN1YnNjcmlwdGlvbiksdH0sbC5wcm90b3R5cGUu
cmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5zZWxlY3RvcjtpZihlLnNob3VsZENvbXBvbmVu
dFVwZGF0ZT0hMSxlLmVycm9yKXRocm93IGUuZXJyb3I7cmV0dXJuKDAsbS5jcmVhdGVFbGVtZW50
KSh0LHRoaXMuYWRkRXh0cmFQcm9wcyhlLnByb3BzKSl9LGx9KG0uQ29tcG9uZW50KTtyZXR1cm4g
bC5XcmFwcGVkQ29tcG9uZW50PXQsbC5kaXNwbGF5TmFtZT1yLGwuY2hpbGRDb250ZXh0VHlwZXM9
QSxsLmNvbnRleHRUeXBlcz1SLGwucHJvcFR5cGVzPVIsKDAsZi5kZWZhdWx0KShsLHQpfX10Ll9f
ZXNNb2R1bGU9ITA7dmFyIHA9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7
dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBu
KU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1y
ZXR1cm4gZX07dC5kZWZhdWx0PWw7dmFyIGQ9bigxMTApLGY9cihkKSxoPW4oMTExKSx2PXIoaCks
bT1uKDEyKSx5PW4oMTk0KSxnPXIoeSksYj1uKDgyKSxfPTAsQz17fX0sZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVm
YXVsdDplfX1mdW5jdGlvbiBvKGUpe3JldHVybiBmdW5jdGlvbih0LG4pe2Z1bmN0aW9uIHIoKXty
ZXR1cm4gb312YXIgbz1lKHQsbik7cmV0dXJuIHIuZGVwZW5kc09uT3duUHJvcHM9ITEscn19ZnVu
Y3Rpb24gaShlKXtyZXR1cm4gbnVsbCE9PWUuZGVwZW5kc09uT3duUHJvcHMmJnZvaWQgMCE9PWUu
ZGVwZW5kc09uT3duUHJvcHM/Qm9vbGVhbihlLmRlcGVuZHNPbk93blByb3BzKToxIT09ZS5sZW5n
dGh9ZnVuY3Rpb24gYShlLHQpe3JldHVybiBmdW5jdGlvbih0LG4pe3ZhciByPShuLmRpc3BsYXlO
YW1lLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHIuZGVwZW5kc09uT3duUHJvcHM/ci5tYXBUb1Byb3Bz
KGUsdCk6ci5tYXBUb1Byb3BzKGUpfSk7cmV0dXJuIHIuZGVwZW5kc09uT3duUHJvcHM9ITAsci5t
YXBUb1Byb3BzPWZ1bmN0aW9uKHQsbil7ci5tYXBUb1Byb3BzPWUsci5kZXBlbmRzT25Pd25Qcm9w
cz1pKGUpO3ZhciBvPXIodCxuKTtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgbyYmKHIubWFwVG9Q
cm9wcz1vLHIuZGVwZW5kc09uT3duUHJvcHM9aShvKSxvPXIodCxuKSksb30scn19dC5fX2VzTW9k
dWxlPSEwLHQud3JhcE1hcFRvUHJvcHNDb25zdGFudD1vLHQuZ2V0RGVwZW5kc09uT3duUHJvcHM9
aSx0LndyYXBNYXBUb1Byb3BzRnVuYz1hO3ZhciB1PW4oODMpO3IodSl9LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2Rl
ZmF1bHQ6ZX19dC5fX2VzTW9kdWxlPSEwLHQuY29ubmVjdD10LmNvbm5lY3RBZHZhbmNlZD10LmNy
ZWF0ZVByb3ZpZGVyPXQuUHJvdmlkZXI9dm9pZCAwO3ZhciBvPW4oMTg3KSxpPXIobyksYT1uKDc5
KSx1PXIoYSkscz1uKDE4OCksYz1yKHMpO3QuUHJvdmlkZXI9aS5kZWZhdWx0LHQuY3JlYXRlUHJv
dmlkZXI9by5jcmVhdGVQcm92aWRlcix0LmNvbm5lY3RBZHZhbmNlZD11LmRlZmF1bHQsdC5jb25u
ZWN0PWMuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUp
e3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX10Ll9fZXNNb2R1bGU9ITAsdC5z
dG9yZVNoYXBlPXQuc3Vic2NyaXB0aW9uU2hhcGU9dm9pZCAwO3ZhciBvPW4oNTYpLGk9cihvKTt0
LnN1YnNjcmlwdGlvblNoYXBlPWkuZGVmYXVsdC5zaGFwZSh7dHJ5U3Vic2NyaWJlOmkuZGVmYXVs
dC5mdW5jLmlzUmVxdWlyZWQsdHJ5VW5zdWJzY3JpYmU6aS5kZWZhdWx0LmZ1bmMuaXNSZXF1aXJl
ZCxub3RpZnlOZXN0ZWRTdWJzOmkuZGVmYXVsdC5mdW5jLmlzUmVxdWlyZWQsaXNTdWJzY3JpYmVk
OmkuZGVmYXVsdC5mdW5jLmlzUmVxdWlyZWR9KSx0LnN0b3JlU2hhcGU9aS5kZWZhdWx0LnNoYXBl
KHtzdWJzY3JpYmU6aS5kZWZhdWx0LmZ1bmMuaXNSZXF1aXJlZCxkaXNwYXRjaDppLmRlZmF1bHQu
ZnVuYy5pc1JlcXVpcmVkLGdldFN0YXRlOmkuZGVmYXVsdC5mdW5jLmlzUmVxdWlyZWR9KX0sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNN
b2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBvKGUsdCxuKXsoMCxhLmRlZmF1bHQpKGUpfHwo
MCxzLmRlZmF1bHQpKG4rIigpIGluICIrdCsiIG11c3QgcmV0dXJuIGEgcGxhaW4gb2JqZWN0LiBJ
bnN0ZWFkIHJlY2VpdmVkICIrZSsiLiIpfXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9bzt2YXIg
aT1uKDMzKSxhPXIoaSksdT1uKDUwKSxzPXIodSl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVu
Y3Rpb24gbyhlLHQpe2lmKCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNh
bm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGkoZSx0KXtpZighZSl0
aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBz
dXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQm
JiJmdW5jdGlvbiIhPXR5cGVvZiB0P2U6dH1mdW5jdGlvbiBhKGUsdCl7aWYoImZ1bmN0aW9uIiE9
dHlwZW9mIHQmJm51bGwhPT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24g
bXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90
b3R5cGU9T2JqZWN0LmNyZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUs
ZW51bWVyYWJsZTohMSx3cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5z
ZXRQcm90b3R5cGVPZj9PYmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX1P
YmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHU9ZnVu
Y3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciBy
PXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZh
bHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxy
KX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZl
KHQsciksdH19KCkscz1uKDEyKSxjPXIocyksbD1uKDMxKSxwPXIobCksZD1mdW5jdGlvbihlKXtm
dW5jdGlvbiB0KCl7dmFyIGUsbixyLGE7byh0aGlzLHQpO2Zvcih2YXIgdT1hcmd1bWVudHMubGVu
Z3RoLHM9QXJyYXkodSksYz0wO2M8dTtjKyspc1tjXT1hcmd1bWVudHNbY107cmV0dXJuIG49cj1p
KHRoaXMsKGU9dC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbC5hcHBs
eShlLFt0aGlzXS5jb25jYXQocykpKSxyLnN0YXRlPXt0ZXh0OnIucHJvcHMudGV4dHx8IiJ9LHIu
aGFuZGxlU3VibWl0PWZ1bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0LnZhbHVlLnRyaW0oKTsxMz09
PWUud2hpY2gmJihyLnByb3BzLm9uU2F2ZSh0KSxyLnByb3BzLm5ld1RvZG8mJnIuc2V0U3RhdGUo
e3RleHQ6IiJ9KSl9LHIuaGFuZGxlQ2hhbmdlPWZ1bmN0aW9uKGUpe3Iuc2V0U3RhdGUoe3RleHQ6
ZS50YXJnZXQudmFsdWV9KX0sci5oYW5kbGVCbHVyPWZ1bmN0aW9uKGUpe3IucHJvcHMubmV3VG9k
b3x8ci5wcm9wcy5vblNhdmUoZS50YXJnZXQudmFsdWUpfSxhPW4saShyLGEpfXJldHVybiBhKHQs
ZSksdSh0LFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGMuZGVmYXVsdC5j
cmVhdGVFbGVtZW50KCJpbnB1dCIse2NsYXNzTmFtZTooMCxwLmRlZmF1bHQpKHtlZGl0OnRoaXMu
cHJvcHMuZWRpdGluZywibmV3LXRvZG8iOnRoaXMucHJvcHMubmV3VG9kb30pLHR5cGU6InRleHQi
LHBsYWNlaG9sZGVyOnRoaXMucHJvcHMucGxhY2Vob2xkZXIsYXV0b0ZvY3VzOiJ0cnVlIix2YWx1
ZTp0aGlzLnN0YXRlLnRleHQsb25CbHVyOnRoaXMuaGFuZGxlQmx1cixvbkNoYW5nZTp0aGlzLmhh
bmRsZUNoYW5nZSxvbktleURvd246dGhpcy5oYW5kbGVTdWJtaXR9KX19XSksdH0ocy5Db21wb25l
bnQpO2QucHJvcFR5cGVzPXtvblNhdmU6cy5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLHRleHQ6
cy5Qcm9wVHlwZXMuc3RyaW5nLHBsYWNlaG9sZGVyOnMuUHJvcFR5cGVzLnN0cmluZyxlZGl0aW5n
OnMuUHJvcFR5cGVzLmJvb2wsbmV3VG9kbzpzLlByb3BUeXBlcy5ib29sfSx0LmRlZmF1bHQ9ZH0s
ZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNN
b2R1bGUiLHt2YWx1ZTohMH0pO3QuQUREX1RPRE89IkFERF9UT0RPIix0LkRFTEVURV9UT0RPPSJE
RUxFVEVfVE9ETyIsdC5FRElUX1RPRE89IkVESVRfVE9ETyIsdC5DT01QTEVURV9UT0RPPSJDT01Q
TEVURV9UT0RPIix0LkNPTVBMRVRFX0FMTD0iQ09NUExFVEVfQUxMIix0LkNMRUFSX0NPTVBMRVRF
RD0iQ0xFQVJfQ09NUExFVEVEIn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7T2JqZWN0LmRl
ZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuU0hPV19BTEw9InNob3df
YWxsIix0LlNIT1dfQ09NUExFVEVEPSJzaG93X2NvbXBsZXRlZCIsdC5TSE9XX0FDVElWRT0ic2hv
d19hY3RpdmUifSxmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oKXt0aHJvdyBuZXcgRXJyb3IoInNl
dFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQiKX1mdW5jdGlvbiByKCl7dGhyb3cgbmV3IEVy
cm9yKCJjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQiKX1mdW5jdGlvbiBvKGUpe2lm
KGw9PT1zZXRUaW1lb3V0KXJldHVybiBzZXRUaW1lb3V0KGUsMCk7aWYoKGw9PT1ufHwhbCkmJnNl
dFRpbWVvdXQpcmV0dXJuIGw9c2V0VGltZW91dCxzZXRUaW1lb3V0KGUsMCk7dHJ5e3JldHVybiBs
KGUsMCl9Y2F0Y2godCl7dHJ5e3JldHVybiBsLmNhbGwobnVsbCxlLDApfWNhdGNoKHQpe3JldHVy
biBsLmNhbGwodGhpcyxlLDApfX19ZnVuY3Rpb24gaShlKXtpZihwPT09Y2xlYXJUaW1lb3V0KXJl
dHVybiBjbGVhclRpbWVvdXQoZSk7aWYoKHA9PT1yfHwhcCkmJmNsZWFyVGltZW91dClyZXR1cm4g
cD1jbGVhclRpbWVvdXQsY2xlYXJUaW1lb3V0KGUpO3RyeXtyZXR1cm4gcChlKX1jYXRjaCh0KXt0
cnl7cmV0dXJuIHAuY2FsbChudWxsLGUpOworfWNhdGNoKHQpe3JldHVybiBwLmNhbGwodGhpcyxl
KX19fWZ1bmN0aW9uIGEoKXt2JiZmJiYodj0hMSxmLmxlbmd0aD9oPWYuY29uY2F0KGgpOm09LTEs
aC5sZW5ndGgmJnUoKSl9ZnVuY3Rpb24gdSgpe2lmKCF2KXt2YXIgZT1vKGEpO3Y9ITA7Zm9yKHZh
ciB0PWgubGVuZ3RoO3Q7KXtmb3IoZj1oLGg9W107KyttPHQ7KWYmJmZbbV0ucnVuKCk7bT0tMSx0
PWgubGVuZ3RofWY9bnVsbCx2PSExLGkoZSl9fWZ1bmN0aW9uIHMoZSx0KXt0aGlzLmZ1bj1lLHRo
aXMuYXJyYXk9dH1mdW5jdGlvbiBjKCl7fXZhciBsLHAsZD1lLmV4cG9ydHM9e307IWZ1bmN0aW9u
KCl7dHJ5e2w9ImZ1bmN0aW9uIj09dHlwZW9mIHNldFRpbWVvdXQ/c2V0VGltZW91dDpufWNhdGNo
KGUpe2w9bn10cnl7cD0iZnVuY3Rpb24iPT10eXBlb2YgY2xlYXJUaW1lb3V0P2NsZWFyVGltZW91
dDpyfWNhdGNoKGUpe3A9cn19KCk7dmFyIGYsaD1bXSx2PSExLG09LTE7ZC5uZXh0VGljaz1mdW5j
dGlvbihlKXt2YXIgdD1uZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aC0xKTtpZihhcmd1bWVudHMu
bGVuZ3RoPjEpZm9yKHZhciBuPTE7bjxhcmd1bWVudHMubGVuZ3RoO24rKyl0W24tMV09YXJndW1l
bnRzW25dO2gucHVzaChuZXcgcyhlLHQpKSwxIT09aC5sZW5ndGh8fHZ8fG8odSl9LHMucHJvdG90
eXBlLnJ1bj1mdW5jdGlvbigpe3RoaXMuZnVuLmFwcGx5KG51bGwsdGhpcy5hcnJheSl9LGQudGl0
bGU9ImJyb3dzZXIiLGQuYnJvd3Nlcj0hMCxkLmVudj17fSxkLmFyZ3Y9W10sZC52ZXJzaW9uPSIi
LGQudmVyc2lvbnM9e30sZC5vbj1jLGQuYWRkTGlzdGVuZXI9YyxkLm9uY2U9YyxkLm9mZj1jLGQu
cmVtb3ZlTGlzdGVuZXI9YyxkLnJlbW92ZUFsbExpc3RlbmVycz1jLGQuZW1pdD1jLGQuYmluZGlu
Zz1mdW5jdGlvbihlKXt0aHJvdyBuZXcgRXJyb3IoInByb2Nlc3MuYmluZGluZyBpcyBub3Qgc3Vw
cG9ydGVkIil9LGQuY3dkPWZ1bmN0aW9uKCl7cmV0dXJuIi8ifSxkLmNoZGlyPWZ1bmN0aW9uKGUp
e3Rocm93IG5ldyBFcnJvcigicHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkIil9LGQudW1h
c2s9ZnVuY3Rpb24oKXtyZXR1cm4gMH19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcigpe31mdW5jdGlvbiBvKGUpe3RyeXtyZXR1cm4gZS50aGVufWNhdGNoKHQpe3JldHVy
biB5PXQsZ319ZnVuY3Rpb24gaShlLHQpe3RyeXtyZXR1cm4gZSh0KX1jYXRjaChuKXtyZXR1cm4g
eT1uLGd9fWZ1bmN0aW9uIGEoZSx0LG4pe3RyeXtlKHQsbil9Y2F0Y2gocil7cmV0dXJuIHk9cixn
fX1mdW5jdGlvbiB1KGUpe2lmKCJvYmplY3QiIT10eXBlb2YgdGhpcyl0aHJvdyBuZXcgVHlwZUVy
cm9yKCJQcm9taXNlcyBtdXN0IGJlIGNvbnN0cnVjdGVkIHZpYSBuZXciKTtpZigiZnVuY3Rpb24i
IT10eXBlb2YgZSl0aHJvdyBuZXcgVHlwZUVycm9yKCJub3QgYSBmdW5jdGlvbiIpO3RoaXMuXzQ1
PTAsdGhpcy5fODE9MCx0aGlzLl82NT1udWxsLHRoaXMuXzU0PW51bGwsZSE9PXImJnYoZSx0aGlz
KX1mdW5jdGlvbiBzKGUsdCxuKXtyZXR1cm4gbmV3IGUuY29uc3RydWN0b3IoZnVuY3Rpb24obyxp
KXt2YXIgYT1uZXcgdShyKTthLnRoZW4obyxpKSxjKGUsbmV3IGgodCxuLGEpKX0pfWZ1bmN0aW9u
IGMoZSx0KXtmb3IoOzM9PT1lLl84MTspZT1lLl82NTtyZXR1cm4gdS5fMTAmJnUuXzEwKGUpLDA9
PT1lLl84MT8wPT09ZS5fNDU/KGUuXzQ1PTEsdm9pZChlLl81ND10KSk6MT09PWUuXzQ1PyhlLl80
NT0yLHZvaWQoZS5fNTQ9W2UuXzU0LHRdKSk6dm9pZCBlLl81NC5wdXNoKHQpOnZvaWQgbChlLHQp
fWZ1bmN0aW9uIGwoZSx0KXttKGZ1bmN0aW9uKCl7dmFyIG49MT09PWUuXzgxP3Qub25GdWxmaWxs
ZWQ6dC5vblJlamVjdGVkO2lmKG51bGw9PT1uKXJldHVybiB2b2lkKDE9PT1lLl84MT9wKHQucHJv
bWlzZSxlLl82NSk6ZCh0LnByb21pc2UsZS5fNjUpKTt2YXIgcj1pKG4sZS5fNjUpO3I9PT1nP2Qo
dC5wcm9taXNlLHkpOnAodC5wcm9taXNlLHIpfSl9ZnVuY3Rpb24gcChlLHQpe2lmKHQ9PT1lKXJl
dHVybiBkKGUsbmV3IFR5cGVFcnJvcigiQSBwcm9taXNlIGNhbm5vdCBiZSByZXNvbHZlZCB3aXRo
IGl0c2VsZi4iKSk7aWYodCYmKCJvYmplY3QiPT10eXBlb2YgdHx8ImZ1bmN0aW9uIj09dHlwZW9m
IHQpKXt2YXIgbj1vKHQpO2lmKG49PT1nKXJldHVybiBkKGUseSk7aWYobj09PWUudGhlbiYmdCBp
bnN0YW5jZW9mIHUpcmV0dXJuIGUuXzgxPTMsZS5fNjU9dCx2b2lkIGYoZSk7aWYoImZ1bmN0aW9u
Ij09dHlwZW9mIG4pcmV0dXJuIHZvaWQgdihuLmJpbmQodCksZSl9ZS5fODE9MSxlLl82NT10LGYo
ZSl9ZnVuY3Rpb24gZChlLHQpe2UuXzgxPTIsZS5fNjU9dCx1Ll85NyYmdS5fOTcoZSx0KSxmKGUp
fWZ1bmN0aW9uIGYoZSl7aWYoMT09PWUuXzQ1JiYoYyhlLGUuXzU0KSxlLl81ND1udWxsKSwyPT09
ZS5fNDUpe2Zvcih2YXIgdD0wO3Q8ZS5fNTQubGVuZ3RoO3QrKyljKGUsZS5fNTRbdF0pO2UuXzU0
PW51bGx9fWZ1bmN0aW9uIGgoZSx0LG4pe3RoaXMub25GdWxmaWxsZWQ9ImZ1bmN0aW9uIj09dHlw
ZW9mIGU/ZTpudWxsLHRoaXMub25SZWplY3RlZD0iZnVuY3Rpb24iPT10eXBlb2YgdD90Om51bGws
dGhpcy5wcm9taXNlPW59ZnVuY3Rpb24gdihlLHQpe3ZhciBuPSExLHI9YShlLGZ1bmN0aW9uKGUp
e258fChuPSEwLHAodCxlKSl9LGZ1bmN0aW9uKGUpe258fChuPSEwLGQodCxlKSl9KTtufHxyIT09
Z3x8KG49ITAsZCh0LHkpKX12YXIgbT1uKDE5NykseT1udWxsLGc9e307ZS5leHBvcnRzPXUsdS5f
MTA9bnVsbCx1Ll85Nz1udWxsLHUuXzYxPXIsdS5wcm90b3R5cGUudGhlbj1mdW5jdGlvbihlLHQp
e2lmKHRoaXMuY29uc3RydWN0b3IhPT11KXJldHVybiBzKHRoaXMsZSx0KTt2YXIgbj1uZXcgdShy
KTtyZXR1cm4gYyh0aGlzLG5ldyBoKGUsdCxuKSksbn19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7dGhpcy5wcm9wcz1lLHRoaXMuY29udGV4dD10LHRoaXMu
cmVmcz1jLHRoaXMudXBkYXRlcj1ufHxzfWZ1bmN0aW9uIG8oZSx0LG4pe3RoaXMucHJvcHM9ZSx0
aGlzLmNvbnRleHQ9dCx0aGlzLnJlZnM9Yyx0aGlzLnVwZGF0ZXI9bnx8c31mdW5jdGlvbiBpKCl7
fXZhciBhPW4oMjMpLHU9big0KSxzPW4oOTIpLGM9KG4oOTMpLG4oMjQpKTtuKDEpLG4oMjIyKTty
LnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PXt9LHIucHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0
aW9uKGUsdCl7Im9iamVjdCIhPXR5cGVvZiBlJiYiZnVuY3Rpb24iIT10eXBlb2YgZSYmbnVsbCE9
ZT9hKCI4NSIpOnZvaWQgMCx0aGlzLnVwZGF0ZXIuZW5xdWV1ZVNldFN0YXRlKHRoaXMsZSksdCYm
dGhpcy51cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLHQsInNldFN0YXRlIil9LHIucHJvdG90
eXBlLmZvcmNlVXBkYXRlPWZ1bmN0aW9uKGUpe3RoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRh
dGUodGhpcyksZSYmdGhpcy51cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlzLGUsImZvcmNlVXBk
YXRlIil9O2kucHJvdG90eXBlPXIucHJvdG90eXBlLG8ucHJvdG90eXBlPW5ldyBpLG8ucHJvdG90
eXBlLmNvbnN0cnVjdG9yPW8sdShvLnByb3RvdHlwZSxyLnByb3RvdHlwZSksby5wcm90b3R5cGUu
aXNQdXJlUmVhY3RDb21wb25lbnQ9ITAsZS5leHBvcnRzPXtDb21wb25lbnQ6cixQdXJlQ29tcG9u
ZW50Om99fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9
RnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5nLG49T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9w
ZXJ0eSxyPVJlZ0V4cCgiXiIrdC5jYWxsKG4pLnJlcGxhY2UoL1tcXF4kLiorPygpW1xde318XS9n
LCJcXCQmIikucmVwbGFjZSgvaGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXCgpfCBm
b3IgLis/KD89XFxcXSkvZywiJDEuKj8iKSsiJCIpO3RyeXt2YXIgbz10LmNhbGwoZSk7cmV0dXJu
IHIudGVzdChvKX1jYXRjaChpKXtyZXR1cm4hMX19ZnVuY3Rpb24gbyhlKXt2YXIgdD1jKGUpO2lm
KHQpe3ZhciBuPXQuY2hpbGRJRHM7bChlKSxuLmZvckVhY2gobyl9fWZ1bmN0aW9uIGkoZSx0LG4p
e3JldHVybiJcbiAgICBpbiAiKyhlfHwiVW5rbm93biIpKyh0PyIgKGF0ICIrdC5maWxlTmFtZS5y
ZXBsYWNlKC9eLipbXFxcL10vLCIiKSsiOiIrdC5saW5lTnVtYmVyKyIpIjpuPyIgKGNyZWF0ZWQg
YnkgIituKyIpIjoiIil9ZnVuY3Rpb24gYShlKXtyZXR1cm4gbnVsbD09ZT8iI2VtcHR5Ijoic3Ry
aW5nIj09dHlwZW9mIGV8fCJudW1iZXIiPT10eXBlb2YgZT8iI3RleHQiOiJzdHJpbmciPT10eXBl
b2YgZS50eXBlP2UudHlwZTplLnR5cGUuZGlzcGxheU5hbWV8fGUudHlwZS5uYW1lfHwiVW5rbm93
biJ9ZnVuY3Rpb24gdShlKXt2YXIgdCxuPVAuZ2V0RGlzcGxheU5hbWUoZSkscj1QLmdldEVsZW1l
bnQoZSksbz1QLmdldE93bmVySUQoZSk7cmV0dXJuIG8mJih0PVAuZ2V0RGlzcGxheU5hbWUobykp
LGkobixyJiZyLl9zb3VyY2UsdCl9dmFyIHMsYyxsLHAsZCxmLGgsdj1uKDIzKSxtPW4oMTEpLHk9
KG4oMSksbigyKSwiZnVuY3Rpb24iPT10eXBlb2YgQXJyYXkuZnJvbSYmImZ1bmN0aW9uIj09dHlw
ZW9mIE1hcCYmcihNYXApJiZudWxsIT1NYXAucHJvdG90eXBlJiYiZnVuY3Rpb24iPT10eXBlb2Yg
TWFwLnByb3RvdHlwZS5rZXlzJiZyKE1hcC5wcm90b3R5cGUua2V5cykmJiJmdW5jdGlvbiI9PXR5
cGVvZiBTZXQmJnIoU2V0KSYmbnVsbCE9U2V0LnByb3RvdHlwZSYmImZ1bmN0aW9uIj09dHlwZW9m
IFNldC5wcm90b3R5cGUua2V5cyYmcihTZXQucHJvdG90eXBlLmtleXMpKTtpZih5KXt2YXIgZz1u
ZXcgTWFwLGI9bmV3IFNldDtzPWZ1bmN0aW9uKGUsdCl7Zy5zZXQoZSx0KX0sYz1mdW5jdGlvbihl
KXtyZXR1cm4gZy5nZXQoZSl9LGw9ZnVuY3Rpb24oZSl7Zy5kZWxldGUoZSl9LHA9ZnVuY3Rpb24o
KXtyZXR1cm4gQXJyYXkuZnJvbShnLmtleXMoKSl9LGQ9ZnVuY3Rpb24oZSl7Yi5hZGQoZSl9LGY9
ZnVuY3Rpb24oZSl7Yi5kZWxldGUoZSl9LGg9ZnVuY3Rpb24oKXtyZXR1cm4gQXJyYXkuZnJvbShi
LmtleXMoKSl9fWVsc2V7dmFyIF89e30sQz17fSxFPWZ1bmN0aW9uKGUpe3JldHVybiIuIitlfSx3
PWZ1bmN0aW9uKGUpe3JldHVybiBwYXJzZUludChlLnN1YnN0cigxKSwxMCl9O3M9ZnVuY3Rpb24o
ZSx0KXt2YXIgbj1FKGUpO19bbl09dH0sYz1mdW5jdGlvbihlKXt2YXIgdD1FKGUpO3JldHVybiBf
W3RdfSxsPWZ1bmN0aW9uKGUpe3ZhciB0PUUoZSk7ZGVsZXRlIF9bdF19LHA9ZnVuY3Rpb24oKXty
ZXR1cm4gT2JqZWN0LmtleXMoXykubWFwKHcpfSxkPWZ1bmN0aW9uKGUpe3ZhciB0PUUoZSk7Q1t0
XT0hMH0sZj1mdW5jdGlvbihlKXt2YXIgdD1FKGUpO2RlbGV0ZSBDW3RdfSxoPWZ1bmN0aW9uKCl7
cmV0dXJuIE9iamVjdC5rZXlzKEMpLm1hcCh3KX19dmFyIFQ9W10sUD17b25TZXRDaGlsZHJlbjpm
dW5jdGlvbihlLHQpe3ZhciBuPWMoZSk7bj92b2lkIDA6digiMTQ0Iiksbi5jaGlsZElEcz10O2Zv
cih2YXIgcj0wO3I8dC5sZW5ndGg7cisrKXt2YXIgbz10W3JdLGk9YyhvKTtpP3ZvaWQgMDp2KCIx
NDAiKSxudWxsPT1pLmNoaWxkSURzJiYib2JqZWN0Ij09dHlwZW9mIGkuZWxlbWVudCYmbnVsbCE9
aS5lbGVtZW50P3YoIjE0MSIpOnZvaWQgMCxpLmlzTW91bnRlZD92b2lkIDA6digiNzEiKSxudWxs
PT1pLnBhcmVudElEJiYoaS5wYXJlbnRJRD1lKSxpLnBhcmVudElEIT09ZT92KCIxNDIiLG8saS5w
YXJlbnRJRCxlKTp2b2lkIDB9fSxvbkJlZm9yZU1vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxu
KXt2YXIgcj17ZWxlbWVudDp0LHBhcmVudElEOm4sdGV4dDpudWxsLGNoaWxkSURzOltdLGlzTW91
bnRlZDohMSx1cGRhdGVDb3VudDowfTtzKGUscil9LG9uQmVmb3JlVXBkYXRlQ29tcG9uZW50OmZ1
bmN0aW9uKGUsdCl7dmFyIG49YyhlKTtuJiZuLmlzTW91bnRlZCYmKG4uZWxlbWVudD10KX0sb25N
b3VudENvbXBvbmVudDpmdW5jdGlvbihlKXt2YXIgdD1jKGUpO3Q/dm9pZCAwOnYoIjE0NCIpLHQu
aXNNb3VudGVkPSEwO3ZhciBuPTA9PT10LnBhcmVudElEO24mJmQoZSl9LG9uVXBkYXRlQ29tcG9u
ZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWMoZSk7dCYmdC5pc01vdW50ZWQmJnQudXBkYXRlQ291bnQr
K30sb25Vbm1vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWMoZSk7aWYodCl7dC5pc01v
dW50ZWQ9ITE7dmFyIG49MD09PXQucGFyZW50SUQ7biYmZihlKX1ULnB1c2goZSl9LHB1cmdlVW5t
b3VudGVkQ29tcG9uZW50czpmdW5jdGlvbigpe2lmKCFQLl9wcmV2ZW50UHVyZ2luZyl7Zm9yKHZh
ciBlPTA7ZTxULmxlbmd0aDtlKyspe3ZhciB0PVRbZV07byh0KX1ULmxlbmd0aD0wfX0saXNNb3Vu
dGVkOmZ1bmN0aW9uKGUpe3ZhciB0PWMoZSk7cmV0dXJuISF0JiZ0LmlzTW91bnRlZH0sZ2V0Q3Vy
cmVudFN0YWNrQWRkZW5kdW06ZnVuY3Rpb24oZSl7dmFyIHQ9IiI7aWYoZSl7dmFyIG49YShlKSxy
PWUuX293bmVyO3QrPWkobixlLl9zb3VyY2UsciYmci5nZXROYW1lKCkpfXZhciBvPW0uY3VycmVu
dCx1PW8mJm8uX2RlYnVnSUQ7cmV0dXJuIHQrPVAuZ2V0U3RhY2tBZGRlbmR1bUJ5SUQodSl9LGdl
dFN0YWNrQWRkZW5kdW1CeUlEOmZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0iIjtlOyl0Kz11KGUpLGU9
UC5nZXRQYXJlbnRJRChlKTtyZXR1cm4gdH0sZ2V0Q2hpbGRJRHM6ZnVuY3Rpb24oZSl7dmFyIHQ9
YyhlKTtyZXR1cm4gdD90LmNoaWxkSURzOltdfSxnZXREaXNwbGF5TmFtZTpmdW5jdGlvbihlKXt2
YXIgdD1QLmdldEVsZW1lbnQoZSk7cmV0dXJuIHQ/YSh0KTpudWxsfSxnZXRFbGVtZW50OmZ1bmN0
aW9uKGUpe3ZhciB0PWMoZSk7cmV0dXJuIHQ/dC5lbGVtZW50Om51bGx9LGdldE93bmVySUQ6ZnVu
Y3Rpb24oZSl7dmFyIHQ9UC5nZXRFbGVtZW50KGUpO3JldHVybiB0JiZ0Ll9vd25lcj90Ll9vd25l
ci5fZGVidWdJRDpudWxsfSxnZXRQYXJlbnRJRDpmdW5jdGlvbihlKXt2YXIgdD1jKGUpO3JldHVy
biB0P3QucGFyZW50SUQ6bnVsbH0sZ2V0U291cmNlOmZ1bmN0aW9uKGUpe3ZhciB0PWMoZSksbj10
P3QuZWxlbWVudDpudWxsLHI9bnVsbCE9bj9uLl9zb3VyY2U6bnVsbDtyZXR1cm4gcn0sZ2V0VGV4
dDpmdW5jdGlvbihlKXt2YXIgdD1QLmdldEVsZW1lbnQoZSk7cmV0dXJuInN0cmluZyI9PXR5cGVv
ZiB0P3Q6Im51bWJlciI9PXR5cGVvZiB0PyIiK3Q6bnVsbH0sZ2V0VXBkYXRlQ291bnQ6ZnVuY3Rp
b24oZSl7dmFyIHQ9YyhlKTtyZXR1cm4gdD90LnVwZGF0ZUNvdW50OjB9LGdldFJvb3RJRHM6aCxn
ZXRSZWdpc3RlcmVkSURzOnAscHVzaE5vblN0YW5kYXJkV2FybmluZ1N0YWNrOmZ1bmN0aW9uKGUs
dCl7aWYoImZ1bmN0aW9uIj09dHlwZW9mIGNvbnNvbGUucmVhY3RTdGFjayl7dmFyIG49W10scj1t
LmN1cnJlbnQsbz1yJiZyLl9kZWJ1Z0lEO3RyeXtmb3IoZSYmbi5wdXNoKHtuYW1lOm8/UC5nZXRE
aXNwbGF5TmFtZShvKTpudWxsLGZpbGVOYW1lOnQ/dC5maWxlTmFtZTpudWxsLGxpbmVOdW1iZXI6
dD90LmxpbmVOdW1iZXI6bnVsbH0pO287KXt2YXIgaT1QLmdldEVsZW1lbnQobyksYT1QLmdldFBh
cmVudElEKG8pLHU9UC5nZXRPd25lcklEKG8pLHM9dT9QLmdldERpc3BsYXlOYW1lKHUpOm51bGws
Yz1pJiZpLl9zb3VyY2U7bi5wdXNoKHtuYW1lOnMsZmlsZU5hbWU6Yz9jLmZpbGVOYW1lOm51bGws
bGluZU51bWJlcjpjP2MubGluZU51bWJlcjpudWxsfSksbz1hfX1jYXRjaChsKXt9Y29uc29sZS5y
ZWFjdFN0YWNrKG4pfX0scG9wTm9uU3RhbmRhcmRXYXJuaW5nU3RhY2s6ZnVuY3Rpb24oKXsiZnVu
Y3Rpb24iPT10eXBlb2YgY29uc29sZS5yZWFjdFN0YWNrRW5kJiZjb25zb2xlLnJlYWN0U3RhY2tF
bmQoKX19O2UuZXhwb3J0cz1QfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj0iZnVu
Y3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuZm9yJiZTeW1ib2wuZm9yKCJyZWFjdC5lbGVt
ZW50Iil8fDYwMTAzO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSx0KXt9dmFyIG89KG4oMikse2lzTW91bnRlZDpmdW5jdGlvbihlKXtyZXR1cm4h
MX0sZW5xdWV1ZUNhbGxiYWNrOmZ1bmN0aW9uKGUsdCl7fSxlbnF1ZXVlRm9yY2VVcGRhdGU6ZnVu
Y3Rpb24oZSl7cihlLCJmb3JjZVVwZGF0ZSIpfSxlbnF1ZXVlUmVwbGFjZVN0YXRlOmZ1bmN0aW9u
KGUsdCl7cihlLCJyZXBsYWNlU3RhdGUiKX0sZW5xdWV1ZVNldFN0YXRlOmZ1bmN0aW9uKGUsdCl7
cihlLCJzZXRTdGF0ZSIpfX0pO2UuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3ZhciByPSExO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiBuKCl7Zm9yKHZhciBlPWFyZ3VtZW50cy5sZW5ndGgsdD1BcnJheShlKSxuPTA7bjxlO24r
Kyl0W25dPWFyZ3VtZW50c1tuXTtyZXR1cm4gMD09PXQubGVuZ3RoP2Z1bmN0aW9uKGUpe3JldHVy
biBlfToxPT09dC5sZW5ndGg/dFswXTp0LnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiBmdW5j
dGlvbigpe3JldHVybiBlKHQuYXBwbHkodm9pZCAwLGFyZ3VtZW50cykpfX0pfXQuX19lc01vZHVs
ZT0hMCx0LmRlZmF1bHQ9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBvKGUsdCxu
KXtmdW5jdGlvbiByKCl7eT09PW0mJih5PW0uc2xpY2UoKSl9ZnVuY3Rpb24gaSgpe3JldHVybiB2
fWZ1bmN0aW9uIHUoZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJF
eHBlY3RlZCBsaXN0ZW5lciB0byBiZSBhIGZ1bmN0aW9uLiIpO3ZhciB0PSEwO3JldHVybiByKCks
eS5wdXNoKGUpLGZ1bmN0aW9uKCl7aWYodCl7dD0hMSxyKCk7dmFyIG49eS5pbmRleE9mKGUpO3ku
c3BsaWNlKG4sMSl9fX1mdW5jdGlvbiBsKGUpe2lmKCEoMCxhLmRlZmF1bHQpKGUpKXRocm93IG5l
dyBFcnJvcigiQWN0aW9ucyBtdXN0IGJlIHBsYWluIG9iamVjdHMuIFVzZSBjdXN0b20gbWlkZGxl
d2FyZSBmb3IgYXN5bmMgYWN0aW9ucy4iKTtpZigidW5kZWZpbmVkIj09dHlwZW9mIGUudHlwZSl0
aHJvdyBuZXcgRXJyb3IoJ0FjdGlvbnMgbWF5IG5vdCBoYXZlIGFuIHVuZGVmaW5lZCAidHlwZSIg
cHJvcGVydHkuIEhhdmUgeW91IG1pc3NwZWxsZWQgYSBjb25zdGFudD8nKTtpZihnKXRocm93IG5l
dyBFcnJvcigiUmVkdWNlcnMgbWF5IG5vdCBkaXNwYXRjaCBhY3Rpb25zLiIpO3RyeXtnPSEwLHY9
aCh2LGUpfWZpbmFsbHl7Zz0hMX1mb3IodmFyIHQ9bT15LG49MDtuPHQubGVuZ3RoO24rKyl7dmFy
IHI9dFtuXTtyKCl9cmV0dXJuIGV9ZnVuY3Rpb24gcChlKXtpZigiZnVuY3Rpb24iIT10eXBlb2Yg
ZSl0aHJvdyBuZXcgRXJyb3IoIkV4cGVjdGVkIHRoZSBuZXh0UmVkdWNlciB0byBiZSBhIGZ1bmN0
aW9uLiIpO2g9ZSxsKHt0eXBlOmMuSU5JVH0pfWZ1bmN0aW9uIGQoKXt2YXIgZSx0PXU7cmV0dXJu
IGU9e3N1YnNjcmliZTpmdW5jdGlvbihlKXtmdW5jdGlvbiBuKCl7ZS5uZXh0JiZlLm5leHQoaSgp
KX1pZigib2JqZWN0IiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJvcigiRXhwZWN0ZWQgdGhl
IG9ic2VydmVyIHRvIGJlIGFuIG9iamVjdC4iKTtuKCk7dmFyIHI9dChuKTtyZXR1cm57dW5zdWJz
Y3JpYmU6cn19fSxlW3MuZGVmYXVsdF09ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sZX12YXIgZjtp
ZigiZnVuY3Rpb24iPT10eXBlb2YgdCYmInVuZGVmaW5lZCI9PXR5cGVvZiBuJiYobj10LHQ9dm9p
ZCAwKSwidW5kZWZpbmVkIiE9dHlwZW9mIG4pe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBuKXRocm93
IG5ldyBFcnJvcigiRXhwZWN0ZWQgdGhlIGVuaGFuY2VyIHRvIGJlIGEgZnVuY3Rpb24uIik7cmV0
dXJuIG4obykoZSx0KX1pZigiZnVuY3Rpb24iIT10eXBlb2YgZSl0aHJvdyBuZXcgRXJyb3IoIkV4
cGVjdGVkIHRoZSByZWR1Y2VyIHRvIGJlIGEgZnVuY3Rpb24uIik7dmFyIGg9ZSx2PXQsbT1bXSx5
PW0sZz0hMTtyZXR1cm4gbCh7dHlwZTpjLklOSVR9KSxmPXtkaXNwYXRjaDpsLHN1YnNjcmliZTp1
LGdldFN0YXRlOmkscmVwbGFjZVJlZHVjZXI6cH0sZltzLmRlZmF1bHRdPWQsZn10Ll9fZXNNb2R1
bGU9ITAsdC5BY3Rpb25UeXBlcz12b2lkIDAsdC5kZWZhdWx0PW87dmFyIGk9bigzMyksYT1yKGkp
LHU9bigyMjgpLHM9cih1KSxjPXQuQWN0aW9uVHlwZXM9e0lOSVQ6IkBAcmVkdXgvSU5JVCJ9fSxm
dW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpeyJ1bmRlZmluZWQiIT10eXBl
b2YgY29uc29sZSYmImZ1bmN0aW9uIj09dHlwZW9mIGNvbnNvbGUuZXJyb3ImJmNvbnNvbGUuZXJy
b3IoZSk7dHJ5e3Rocm93IG5ldyBFcnJvcihlKX1jYXRjaCh0KXt9fXQuX19lc01vZHVsZT0hMCx0
LmRlZmF1bHQ9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3Jl
dHVybiBlfWZ1bmN0aW9uIG8oZSx0LG4pe2Z1bmN0aW9uIG8oZSx0KXt2YXIgbj1nLmhhc093blBy
b3BlcnR5KHQpP2dbdF06bnVsbDtFLmhhc093blByb3BlcnR5KHQpJiZzKCJPVkVSUklERV9CQVNF
Ij09PW4sIlJlYWN0Q2xhc3NJbnRlcmZhY2U6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBvdmVycmlk
ZSBgJXNgIGZyb20geW91ciBjbGFzcyBzcGVjaWZpY2F0aW9uLiBFbnN1cmUgdGhhdCB5b3VyIG1l
dGhvZCBuYW1lcyBkbyBub3Qgb3ZlcmxhcCB3aXRoIFJlYWN0IG1ldGhvZHMuIix0KSxlJiZzKCJE
RUZJTkVfTUFOWSI9PT1ufHwiREVGSU5FX01BTllfTUVSR0VEIj09PW4sIlJlYWN0Q2xhc3NJbnRl
cmZhY2U6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBkZWZpbmUgYCVzYCBvbiB5b3VyIGNvbXBvbmVu
dCBtb3JlIHRoYW4gb25jZS4gVGhpcyBjb25mbGljdCBtYXkgYmUgZHVlIHRvIGEgbWl4aW4uIix0
KX1mdW5jdGlvbiBpKGUsbil7aWYobil7cygiZnVuY3Rpb24iIT10eXBlb2YgbiwiUmVhY3RDbGFz
czogWW91J3JlIGF0dGVtcHRpbmcgdG8gdXNlIGEgY29tcG9uZW50IGNsYXNzIG9yIGZ1bmN0aW9u
IGFzIGEgbWl4aW4uIEluc3RlYWQsIGp1c3QgdXNlIGEgcmVndWxhciBvYmplY3QuIikscyghdChu
KSwiUmVhY3RDbGFzczogWW91J3JlIGF0dGVtcHRpbmcgdG8gdXNlIGEgY29tcG9uZW50IGFzIGEg
bWl4aW4uIEluc3RlYWQsIGp1c3QgdXNlIGEgcmVndWxhciBvYmplY3QuIik7dmFyIHI9ZS5wcm90
b3R5cGUsaT1yLl9fcmVhY3RBdXRvQmluZFBhaXJzO24uaGFzT3duUHJvcGVydHkoYykmJmIubWl4
aW5zKGUsbi5taXhpbnMpO2Zvcih2YXIgYSBpbiBuKWlmKG4uaGFzT3duUHJvcGVydHkoYSkmJmEh
PT1jKXt2YXIgdT1uW2FdLGw9ci5oYXNPd25Qcm9wZXJ0eShhKTtpZihvKGwsYSksYi5oYXNPd25Q
cm9wZXJ0eShhKSliW2FdKGUsdSk7ZWxzZXt2YXIgcD1nLmhhc093blByb3BlcnR5KGEpLGg9ImZ1
bmN0aW9uIj09dHlwZW9mIHUsdj1oJiYhcCYmIWwmJm4uYXV0b2JpbmQhPT0hMTtpZih2KWkucHVz
aChhLHUpLHJbYV09dTtlbHNlIGlmKGwpe3ZhciBtPWdbYV07cyhwJiYoIkRFRklORV9NQU5ZX01F
UkdFRCI9PT1tfHwiREVGSU5FX01BTlkiPT09bSksIlJlYWN0Q2xhc3M6IFVuZXhwZWN0ZWQgc3Bl
YyBwb2xpY3kgJXMgZm9yIGtleSAlcyB3aGVuIG1peGluZyBpbiBjb21wb25lbnQgc3BlY3MuIixt
LGEpLCJERUZJTkVfTUFOWV9NRVJHRUQiPT09bT9yW2FdPWQoclthXSx1KToiREVGSU5FX01BTlki
PT09bSYmKHJbYV09ZihyW2FdLHUpKX1lbHNlIHJbYV09dX19fWVsc2U7fWZ1bmN0aW9uIGwoZSx0
KXtpZih0KWZvcih2YXIgbiBpbiB0KXt2YXIgcj10W25dO2lmKHQuaGFzT3duUHJvcGVydHkobikp
e3ZhciBvPW4gaW4gYjtzKCFvLCdSZWFjdENsYXNzOiBZb3UgYXJlIGF0dGVtcHRpbmcgdG8gZGVm
aW5lIGEgcmVzZXJ2ZWQgcHJvcGVydHksIGAlc2AsIHRoYXQgc2hvdWxkblwndCBiZSBvbiB0aGUg
InN0YXRpY3MiIGtleS4gRGVmaW5lIGl0IGFzIGFuIGluc3RhbmNlIHByb3BlcnR5IGluc3RlYWQ7
IGl0IHdpbGwgc3RpbGwgYmUgYWNjZXNzaWJsZSBvbiB0aGUgY29uc3RydWN0b3IuJyxuKTt2YXIg
aT1uIGluIGU7cyghaSwiUmVhY3RDbGFzczogWW91IGFyZSBhdHRlbXB0aW5nIHRvIGRlZmluZSBg
JXNgIG9uIHlvdXIgY29tcG9uZW50IG1vcmUgdGhhbiBvbmNlLiBUaGlzIGNvbmZsaWN0IG1heSBi
ZSBkdWUgdG8gYSBtaXhpbi4iLG4pLGVbbl09cn19fWZ1bmN0aW9uIHAoZSx0KXtzKGUmJnQmJiJv
YmplY3QiPT10eXBlb2YgZSYmIm9iamVjdCI9PXR5cGVvZiB0LCJtZXJnZUludG9XaXRoTm9EdXBs
aWNhdGVLZXlzKCk6IENhbm5vdCBtZXJnZSBub24tb2JqZWN0cy4iKTtmb3IodmFyIG4gaW4gdCl0
Lmhhc093blByb3BlcnR5KG4pJiYocyh2b2lkIDA9PT1lW25dLCJtZXJnZUludG9XaXRoTm9EdXBs
aWNhdGVLZXlzKCk6IFRyaWVkIHRvIG1lcmdlIHR3byBvYmplY3RzIHdpdGggdGhlIHNhbWUga2V5
OiBgJXNgLiBUaGlzIGNvbmZsaWN0IG1heSBiZSBkdWUgdG8gYSBtaXhpbjsgaW4gcGFydGljdWxh
ciwgdGhpcyBtYXkgYmUgY2F1c2VkIGJ5IHR3byBnZXRJbml0aWFsU3RhdGUoKSBvciBnZXREZWZh
dWx0UHJvcHMoKSBtZXRob2RzIHJldHVybmluZyBvYmplY3RzIHdpdGggY2xhc2hpbmcga2V5cy4i
LG4pLGVbbl09dFtuXSk7cmV0dXJuIGV9ZnVuY3Rpb24gZChlLHQpe3JldHVybiBmdW5jdGlvbigp
e3ZhciBuPWUuYXBwbHkodGhpcyxhcmd1bWVudHMpLHI9dC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7
aWYobnVsbD09bilyZXR1cm4gcjtpZihudWxsPT1yKXJldHVybiBuO3ZhciBvPXt9O3JldHVybiBw
KG8sbikscChvLHIpLG99fWZ1bmN0aW9uIGYoZSx0KXtyZXR1cm4gZnVuY3Rpb24oKXtlLmFwcGx5
KHRoaXMsYXJndW1lbnRzKSx0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX19ZnVuY3Rpb24gaChlLHQp
e3ZhciBuPXQuYmluZChlKTtyZXR1cm4gbn1mdW5jdGlvbiB2KGUpe2Zvcih2YXIgdD1lLl9fcmVh
Y3RBdXRvQmluZFBhaXJzLG49MDtuPHQubGVuZ3RoO24rPTIpe3ZhciByPXRbbl0sbz10W24rMV07
ZVtyXT1oKGUsbyl9fWZ1bmN0aW9uIG0oZSl7dmFyIHQ9cihmdW5jdGlvbihlLHIsbyl7dGhpcy5f
X3JlYWN0QXV0b0JpbmRQYWlycy5sZW5ndGgmJnYodGhpcyksdGhpcy5wcm9wcz1lLHRoaXMuY29u
dGV4dD1yLHRoaXMucmVmcz11LHRoaXMudXBkYXRlcj1vfHxuLHRoaXMuc3RhdGU9bnVsbDt2YXIg
aT10aGlzLmdldEluaXRpYWxTdGF0ZT90aGlzLmdldEluaXRpYWxTdGF0ZSgpOm51bGw7cygib2Jq
ZWN0Ij09dHlwZW9mIGkmJiFBcnJheS5pc0FycmF5KGkpLCIlcy5nZXRJbml0aWFsU3RhdGUoKTog
bXVzdCByZXR1cm4gYW4gb2JqZWN0IG9yIG51bGwiLHQuZGlzcGxheU5hbWV8fCJSZWFjdENvbXBv
c2l0ZUNvbXBvbmVudCIpLHRoaXMuc3RhdGU9aX0pO3QucHJvdG90eXBlPW5ldyB3LHQucHJvdG90
eXBlLmNvbnN0cnVjdG9yPXQsdC5wcm90b3R5cGUuX19yZWFjdEF1dG9CaW5kUGFpcnM9W10seS5m
b3JFYWNoKGkuYmluZChudWxsLHQpKSxpKHQsXyksaSh0LGUpLGkodCxDKSx0LmdldERlZmF1bHRQ
cm9wcyYmKHQuZGVmYXVsdFByb3BzPXQuZ2V0RGVmYXVsdFByb3BzKCkpLHModC5wcm90b3R5cGUu
cmVuZGVyLCJjcmVhdGVDbGFzcyguLi4pOiBDbGFzcyBzcGVjaWZpY2F0aW9uIG11c3QgaW1wbGVt
ZW50IGEgYHJlbmRlcmAgbWV0aG9kLiIpO2Zvcih2YXIgbyBpbiBnKXQucHJvdG90eXBlW29dfHwo
dC5wcm90b3R5cGVbb109bnVsbCk7cmV0dXJuIHR9dmFyIHk9W10sZz17bWl4aW5zOiJERUZJTkVf
TUFOWSIsc3RhdGljczoiREVGSU5FX01BTlkiLHByb3BUeXBlczoiREVGSU5FX01BTlkiLGNvbnRl
eHRUeXBlczoiREVGSU5FX01BTlkiLGNoaWxkQ29udGV4dFR5cGVzOiJERUZJTkVfTUFOWSIsZ2V0
RGVmYXVsdFByb3BzOiJERUZJTkVfTUFOWV9NRVJHRUQiLGdldEluaXRpYWxTdGF0ZToiREVGSU5F
X01BTllfTUVSR0VEIixnZXRDaGlsZENvbnRleHQ6IkRFRklORV9NQU5ZX01FUkdFRCIscmVuZGVy
OiJERUZJTkVfT05DRSIsY29tcG9uZW50V2lsbE1vdW50OiJERUZJTkVfTUFOWSIsY29tcG9uZW50
RGlkTW91bnQ6IkRFRklORV9NQU5ZIixjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzOiJERUZJTkVf
TUFOWSIsc2hvdWxkQ29tcG9uZW50VXBkYXRlOiJERUZJTkVfT05DRSIsY29tcG9uZW50V2lsbFVw
ZGF0ZToiREVGSU5FX01BTlkiLGNvbXBvbmVudERpZFVwZGF0ZToiREVGSU5FX01BTlkiLGNvbXBv
bmVudFdpbGxVbm1vdW50OiJERUZJTkVfTUFOWSIsdXBkYXRlQ29tcG9uZW50OiJPVkVSUklERV9C
QVNFIn0sYj17ZGlzcGxheU5hbWU6ZnVuY3Rpb24oZSx0KXtlLmRpc3BsYXlOYW1lPXR9LG1peGlu
czpmdW5jdGlvbihlLHQpe2lmKHQpZm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspaShlLHRbbl0p
fSxjaGlsZENvbnRleHRUeXBlczpmdW5jdGlvbihlLHQpe2UuY2hpbGRDb250ZXh0VHlwZXM9YSh7
fSxlLmNoaWxkQ29udGV4dFR5cGVzLHQpfSxjb250ZXh0VHlwZXM6ZnVuY3Rpb24oZSx0KXtlLmNv
bnRleHRUeXBlcz1hKHt9LGUuY29udGV4dFR5cGVzLHQpfSxnZXREZWZhdWx0UHJvcHM6ZnVuY3Rp
b24oZSx0KXtlLmdldERlZmF1bHRQcm9wcz9lLmdldERlZmF1bHRQcm9wcz1kKGUuZ2V0RGVmYXVs
dFByb3BzLHQpOmUuZ2V0RGVmYXVsdFByb3BzPXR9LHByb3BUeXBlczpmdW5jdGlvbihlLHQpe2Uu
cHJvcFR5cGVzPWEoe30sZS5wcm9wVHlwZXMsdCl9LHN0YXRpY3M6ZnVuY3Rpb24oZSx0KXtsKGUs
dCl9LGF1dG9iaW5kOmZ1bmN0aW9uKCl7fX0sXz17Y29tcG9uZW50RGlkTW91bnQ6ZnVuY3Rpb24o
KXt0aGlzLl9faXNNb3VudGVkPSEwfX0sQz17Y29tcG9uZW50V2lsbFVubW91bnQ6ZnVuY3Rpb24o
KXt0aGlzLl9faXNNb3VudGVkPSExfX0sRT17cmVwbGFjZVN0YXRlOmZ1bmN0aW9uKGUsdCl7dGhp
cy51cGRhdGVyLmVucXVldWVSZXBsYWNlU3RhdGUodGhpcyxlLHQpfSxpc01vdW50ZWQ6ZnVuY3Rp
b24oKXtyZXR1cm4hIXRoaXMuX19pc01vdW50ZWR9fSx3PWZ1bmN0aW9uKCl7fTtyZXR1cm4gYSh3
LnByb3RvdHlwZSxlLnByb3RvdHlwZSxFKSxtfXZhciBpLGE9big0KSx1PW4oMjQpLHM9bigxKSxj
PSJtaXhpbnMiO2k9e30sZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIG4oZSl7cmV0dXJuIGUucmVwbGFjZShyLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQudG9V
cHBlckNhc2UoKX0pfXZhciByPS8tKC4pL2c7ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gbyhlLnJlcGxhY2UoaSwibXMtIikpfXZh
ciBvPW4oOTgpLGk9L14tbXMtLztlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuISghZXx8IXQpJiYoZT09PXR8fCFvKGUpJiYobyh0
KT9yKGUsdC5wYXJlbnROb2RlKToiY29udGFpbnMiaW4gZT9lLmNvbnRhaW5zKHQpOiEhZS5jb21w
YXJlRG9jdW1lbnRQb3NpdGlvbiYmISEoMTYmZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0KSkp
KX12YXIgbz1uKDEwOCk7ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlKXt2YXIgdD1lLmxlbmd0aDtpZihBcnJheS5pc0FycmF5KGUpfHwib2JqZWN0
IiE9dHlwZW9mIGUmJiJmdW5jdGlvbiIhPXR5cGVvZiBlP2EoITEpOnZvaWQgMCwibnVtYmVyIiE9
dHlwZW9mIHQ/YSghMSk6dm9pZCAwLDA9PT10fHx0LTEgaW4gZT92b2lkIDA6YSghMSksImZ1bmN0
aW9uIj09dHlwZW9mIGUuY2FsbGVlP2EoITEpOnZvaWQgMCxlLmhhc093blByb3BlcnR5KXRyeXty
ZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSl9Y2F0Y2gobil7fWZvcih2YXIgcj1B
cnJheSh0KSxvPTA7bzx0O28rKylyW29dPWVbb107cmV0dXJuIHJ9ZnVuY3Rpb24gbyhlKXtyZXR1
cm4hIWUmJigib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBlKSYmImxlbmd0
aCJpbiBlJiYhKCJzZXRJbnRlcnZhbCJpbiBlKSYmIm51bWJlciIhPXR5cGVvZiBlLm5vZGVUeXBl
JiYoQXJyYXkuaXNBcnJheShlKXx8ImNhbGxlZSJpbiBlfHwiaXRlbSJpbiBlKX1mdW5jdGlvbiBp
KGUpe3JldHVybiBvKGUpP0FycmF5LmlzQXJyYXkoZSk/ZS5zbGljZSgpOnIoZSk6W2VdfXZhciBh
PW4oMSk7ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlKXt2YXIgdD1lLm1hdGNoKGwpO3JldHVybiB0JiZ0WzFdLnRvTG93ZXJDYXNlKCl9ZnVuY3Rp
b24gbyhlLHQpe3ZhciBuPWM7Yz92b2lkIDA6cyghMSk7dmFyIG89cihlKSxpPW8mJnUobyk7aWYo
aSl7bi5pbm5lckhUTUw9aVsxXStlK2lbMl07Zm9yKHZhciBsPWlbMF07bC0tOyluPW4ubGFzdENo
aWxkfWVsc2Ugbi5pbm5lckhUTUw9ZTt2YXIgcD1uLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3Jp
cHQiKTtwLmxlbmd0aCYmKHQ/dm9pZCAwOnMoITEpLGEocCkuZm9yRWFjaCh0KSk7Zm9yKHZhciBk
PUFycmF5LmZyb20obi5jaGlsZE5vZGVzKTtuLmxhc3RDaGlsZDspbi5yZW1vdmVDaGlsZChuLmxh
c3RDaGlsZCk7cmV0dXJuIGR9dmFyIGk9big2KSxhPW4oMTAxKSx1PW4oMTAzKSxzPW4oMSksYz1p
LmNhblVzZURPTT9kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTpudWxsLGw9L15ccyo8KFx3
KykvO2UuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSl7cmV0dXJuIGE/dm9pZCAwOmkoITEpLGQuaGFzT3duUHJvcGVydHkoZSl8fChlPSIqIiksdS5o
YXNPd25Qcm9wZXJ0eShlKXx8KCIqIj09PWU/YS5pbm5lckhUTUw9IjxsaW5rIC8+IjphLmlubmVy
SFRNTD0iPCIrZSsiPjwvIitlKyI+Iix1W2VdPSFhLmZpcnN0Q2hpbGQpLHVbZV0/ZFtlXTpudWxs
fXZhciBvPW4oNiksaT1uKDEpLGE9by5jYW5Vc2VET00/ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
ZGl2Iik6bnVsbCx1PXt9LHM9WzEsJzxzZWxlY3QgbXVsdGlwbGU9InRydWUiPicsIjwvc2VsZWN0
PiJdLGM9WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLGw9WzMsIjx0YWJsZT48dGJvZHk+PHRyPiIs
IjwvdHI+PC90Ym9keT48L3RhYmxlPiJdLHA9WzEsJzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnIj4nLCI8L3N2Zz4iXSxkPXsiKiI6WzEsIj88ZGl2PiIsIjwvZGl2PiJdLGFy
ZWE6WzEsIjxtYXA+IiwiPC9tYXA+Il0sY29sOlsyLCI8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNv
bGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSxsZWdlbmQ6WzEsIjxmaWVsZHNldD4iLCI8
L2ZpZWxkc2V0PiJdLHBhcmFtOlsxLCI8b2JqZWN0PiIsIjwvb2JqZWN0PiJdLHRyOlsyLCI8dGFi
bGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSxvcHRncm91cDpzLG9wdGlvbjpzLGNhcHRp
b246Yyxjb2xncm91cDpjLHRib2R5OmMsdGZvb3Q6Yyx0aGVhZDpjLHRkOmwsdGg6bH0sZj1bImNp
cmNsZSIsImNsaXBQYXRoIiwiZGVmcyIsImVsbGlwc2UiLCJnIiwiaW1hZ2UiLCJsaW5lIiwibGlu
ZWFyR3JhZGllbnQiLCJtYXNrIiwicGF0aCIsInBhdHRlcm4iLCJwb2x5Z29uIiwicG9seWxpbmUi
LCJyYWRpYWxHcmFkaWVudCIsInJlY3QiLCJzdG9wIiwidGV4dCIsInRzcGFuIl07Zi5mb3JFYWNo
KGZ1bmN0aW9uKGUpe2RbZV09cCx1W2VdPSEwfSksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCl7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7cmV0dXJuIGUuV2luZG93JiZlIGluc3RhbmNlb2Yg
ZS5XaW5kb3c/e3g6ZS5wYWdlWE9mZnNldHx8ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Ny
b2xsTGVmdCx5OmUucGFnZVlPZmZzZXR8fGUuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9s
bFRvcH06e3g6ZS5zY3JvbGxMZWZ0LHk6ZS5zY3JvbGxUb3B9fWUuZXhwb3J0cz1ufSxmdW5jdGlv
bihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3JldHVybiBlLnJlcGxhY2UociwiLSQx
IikudG9Mb3dlckNhc2UoKX12YXIgcj0vKFtBLVpdKS9nO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIG8oZSkucmVwbGFjZShpLCIt
bXMtIil9dmFyIG89bigxMDUpLGk9L15tcy0vO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQpeyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3ZhciB0PWU/ZS5vd25lckRvY3VtZW50fHxlOmRvY3Vt
ZW50LG49dC5kZWZhdWx0Vmlld3x8d2luZG93O3JldHVybiEoIWV8fCEoImZ1bmN0aW9uIj09dHlw
ZW9mIG4uTm9kZT9lIGluc3RhbmNlb2Ygbi5Ob2RlOiJvYmplY3QiPT10eXBlb2YgZSYmIm51bWJl
ciI9PXR5cGVvZiBlLm5vZGVUeXBlJiYic3RyaW5nIj09dHlwZW9mIGUubm9kZU5hbWUpKX1lLmV4
cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVy
biBvKGUpJiYzPT1lLm5vZGVUeXBlfXZhciBvPW4oMTA3KTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24o
ZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXt2YXIgdD17fTtyZXR1cm4gZnVuY3Rpb24o
bil7cmV0dXJuIHQuaGFzT3duUHJvcGVydHkobil8fCh0W25dPWUuY2FsbCh0aGlzLG4pKSx0W25d
fX1lLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49e2NoaWxkQ29u
dGV4dFR5cGVzOiEwLGNvbnRleHRUeXBlczohMCxkZWZhdWx0UHJvcHM6ITAsZGlzcGxheU5hbWU6
ITAsZ2V0RGVmYXVsdFByb3BzOiEwLG1peGluczohMCxwcm9wVHlwZXM6ITAsdHlwZTohMH0scj17
bmFtZTohMCxsZW5ndGg6ITAscHJvdG90eXBlOiEwLGNhbGxlcjohMCxjYWxsZWU6ITAsYXJndW1l
bnRzOiEwLGFyaXR5OiEwfSxvPU9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMsaT0oT2JqZWN0
LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVt
ZXJhYmxlKSxhPU9iamVjdC5nZXRQcm90b3R5cGVPZix1PWEmJmEoT2JqZWN0KSxzPU9iamVjdC5n
ZXRPd25Qcm9wZXJ0eU5hbWVzO2UuZXhwb3J0cz1mdW5jdGlvbiBlKHQsYyxsKXtpZigic3RyaW5n
IiE9dHlwZW9mIGMpe2lmKHUpe3ZhciBwPWEoYyk7cCYmcCE9PXUmJmUodCxwLGwpfXZhciBkPXMo
Yyk7byYmKGQ9ZC5jb25jYXQobyhjKSkpO2Zvcih2YXIgZj0wO2Y8ZC5sZW5ndGg7KytmKXt2YXIg
aD1kW2ZdO2lmKCEobltoXXx8cltoXXx8bCYmbFtoXSkmJihpLmNhbGwoYyxoKXx8ImZ1bmN0aW9u
Ij09dHlwZW9mIGNbaF0pKXRyeXt0W2hdPWNbaF19Y2F0Y2godil7fX1yZXR1cm4gdH1yZXR1cm4g
dH19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZnVuY3Rpb24oZSx0LG4scixv
LGksYSx1KXtpZighZSl7dmFyIHM7aWYodm9pZCAwPT09dClzPW5ldyBFcnJvcigiTWluaWZpZWQg
ZXhjZXB0aW9uIG9jY3VycmVkOyB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQg
Zm9yIHRoZSBmdWxsIGVycm9yIG1lc3NhZ2UgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5n
cy4iKTtlbHNle3ZhciBjPVtuLHIsbyxpLGEsdV0sbD0wO3M9bmV3IEVycm9yKHQucmVwbGFjZSgv
JXMvZyxmdW5jdGlvbigpe3JldHVybiBjW2wrK119KSkscy5uYW1lPSJJbnZhcmlhbnQgVmlvbGF0
aW9uIn10aHJvdyBzLmZyYW1lc1RvUG9wPTEsc319O2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQs
bil7ZnVuY3Rpb24gcihlKXtyZXR1cm4gbnVsbD09ZT92b2lkIDA9PT1lP3M6dTpjJiZjIGluIE9i
amVjdChlKT9pKGUpOmEoZSl9dmFyIG89big1NCksaT1uKDExNSksYT1uKDExNiksdT0iW29iamVj
dCBOdWxsXSIscz0iW29iamVjdCBVbmRlZmluZWRdIixjPW8/by50b1N0cmluZ1RhZzp2b2lkIDA7
ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCl7KGZ1bmN0aW9uKHQpe3ZhciBuPSJvYmplY3QiPT10
eXBlb2YgdCYmdCYmdC5PYmplY3Q9PT1PYmplY3QmJnQ7ZS5leHBvcnRzPW59KS5jYWxsKHQsZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpc30oKSl9LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDExNyksbz1y
KE9iamVjdC5nZXRQcm90b3R5cGVPZixPYmplY3QpO2UuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQs
bil7ZnVuY3Rpb24gcihlKXt2YXIgdD1hLmNhbGwoZSxzKSxuPWVbc107dHJ5e2Vbc109dm9pZCAw
O3ZhciByPSEwfWNhdGNoKG8pe312YXIgaT11LmNhbGwoZSk7cmV0dXJuIHImJih0P2Vbc109bjpk
ZWxldGUgZVtzXSksaX12YXIgbz1uKDU0KSxpPU9iamVjdC5wcm90b3R5cGUsYT1pLmhhc093blBy
b3BlcnR5LHU9aS50b1N0cmluZyxzPW8/by50b1N0cmluZ1RhZzp2b2lkIDA7ZS5leHBvcnRzPXJ9
LGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbihlKXtyZXR1cm4gby5jYWxsKGUpfXZhciByPU9iamVj
dC5wcm90b3R5cGUsbz1yLnRvU3RyaW5nO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQpe2Z1bmN0
aW9uIG4oZSx0KXtyZXR1cm4gZnVuY3Rpb24obil7cmV0dXJuIGUodChuKSl9fWUuZXhwb3J0cz1u
fSxmdW5jdGlvbihlLHQsbil7dmFyIHI9bigxMTMpLG89Im9iamVjdCI9PXR5cGVvZiBzZWxmJiZz
ZWxmJiZzZWxmLk9iamVjdD09PU9iamVjdCYmc2VsZixpPXJ8fG98fEZ1bmN0aW9uKCJyZXR1cm4g
dGhpcyIpKCk7ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbihlKXtyZXR1cm4g
bnVsbCE9ZSYmIm9iamVjdCI9PXR5cGVvZiBlfWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scixvKXt9ZS5leHBvcnRzPXJ9LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big3KSxvPW4oMSksaT1uKDU3KTtlLmV4cG9ydHM9
ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxuLHIsYSx1KXt1IT09aSYmbyghMSwiQ2FsbGluZyBQ
cm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBgcHJv
cC10eXBlc2AgcGFja2FnZS4gVXNlIFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcygpIHRvIGNhbGwg
dGhlbS4gUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2UtY2hlY2stcHJvcC10eXBlcyIpfWZ1
bmN0aW9uIHQoKXtyZXR1cm4gZX1lLmlzUmVxdWlyZWQ9ZTt2YXIgbj17YXJyYXk6ZSxib29sOmUs
ZnVuYzplLG51bWJlcjplLG9iamVjdDplLHN0cmluZzplLHN5bWJvbDplLGFueTplLGFycmF5T2Y6
dCxlbGVtZW50OmUsaW5zdGFuY2VPZjp0LG5vZGU6ZSxvYmplY3RPZjp0LG9uZU9mOnQsb25lT2ZU
eXBlOnQsc2hhcGU6dH07cmV0dXJuIG4uY2hlY2tQcm9wVHlwZXM9cixuLlByb3BUeXBlcz1uLG59
fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNyksbz1uKDEpLGk9bigyKSxh
PW4oNTcpLHU9bigxMjApO2UuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oZSl7dmFy
IHQ9ZSYmKE8mJmVbT118fGVbU10pO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0KXJldHVybiB0fWZ1
bmN0aW9uIHMoZSx0KXtyZXR1cm4gZT09PXQ/MCE9PWV8fDEvZT09PTEvdDplIT09ZSYmdCE9PXR9
ZnVuY3Rpb24gYyhlKXt0aGlzLm1lc3NhZ2U9ZSx0aGlzLnN0YWNrPSIifWZ1bmN0aW9uIGwoZSl7
ZnVuY3Rpb24gbihuLHIsaSx1LHMsbCxwKXtpZih1PXV8fGssbD1sfHxpLHAhPT1hKWlmKHQpbygh
MSwiQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qgc3VwcG9ydGVk
IGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gVXNlIGBQcm9wVHlwZXMuY2hlY2tQcm9wVHlw
ZXMoKWAgdG8gY2FsbCB0aGVtLiBSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1w
cm9wLXR5cGVzIik7ZWxzZTtyZXR1cm4gbnVsbD09cltpXT9uP25ldyBjKG51bGw9PT1yW2ldPyJU
aGUgIitzKyIgYCIrbCsiYCBpcyBtYXJrZWQgYXMgcmVxdWlyZWQgIisoImluIGAiK3UrImAsIGJ1
dCBpdHMgdmFsdWUgaXMgYG51bGxgLiIpOiJUaGUgIitzKyIgYCIrbCsiYCBpcyBtYXJrZWQgYXMg
cmVxdWlyZWQgaW4gIisoImAiK3UrImAsIGJ1dCBpdHMgdmFsdWUgaXMgYHVuZGVmaW5lZGAuIikp
Om51bGw6ZShyLGksdSxzLGwpfXZhciByPW4uYmluZChudWxsLCExKTtyZXR1cm4gci5pc1JlcXVp
cmVkPW4uYmluZChudWxsLCEwKSxyfWZ1bmN0aW9uIHAoZSl7ZnVuY3Rpb24gdCh0LG4scixvLGks
YSl7dmFyIHU9dFtuXSxzPXcodSk7aWYocyE9PWUpe3ZhciBsPVQodSk7cmV0dXJuIG5ldyBjKCJJ
bnZhbGlkICIrbysiIGAiK2krImAgb2YgdHlwZSAiKygiYCIrbCsiYCBzdXBwbGllZCB0byBgIity
KyJgLCBleHBlY3RlZCAiKSsoImAiK2UrImAuIikpfXJldHVybiBudWxsfXJldHVybiBsKHQpfWZ1
bmN0aW9uIGQoKXtyZXR1cm4gbChyLnRoYXRSZXR1cm5zTnVsbCl9ZnVuY3Rpb24gZihlKXtmdW5j
dGlvbiB0KHQsbixyLG8saSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpcmV0dXJuIG5ldyBjKCJQ
cm9wZXJ0eSBgIitpKyJgIG9mIGNvbXBvbmVudCBgIityKyJgIGhhcyBpbnZhbGlkIFByb3BUeXBl
IG5vdGF0aW9uIGluc2lkZSBhcnJheU9mLiIpO3ZhciB1PXRbbl07aWYoIUFycmF5LmlzQXJyYXko
dSkpe3ZhciBzPXcodSk7cmV0dXJuIG5ldyBjKCJJbnZhbGlkICIrbysiIGAiK2krImAgb2YgdHlw
ZSAiKygiYCIrcysiYCBzdXBwbGllZCB0byBgIityKyJgLCBleHBlY3RlZCBhbiBhcnJheS4iKSl9
Zm9yKHZhciBsPTA7bDx1Lmxlbmd0aDtsKyspe3ZhciBwPWUodSxsLHIsbyxpKyJbIitsKyJdIixh
KTtpZihwIGluc3RhbmNlb2YgRXJyb3IpcmV0dXJuIHB9cmV0dXJuIG51bGx9cmV0dXJuIGwodCl9
ZnVuY3Rpb24gaCgpe2Z1bmN0aW9uIHQodCxuLHIsbyxpKXt2YXIgYT10W25dO2lmKCFlKGEpKXt2
YXIgdT13KGEpO3JldHVybiBuZXcgYygiSW52YWxpZCAiK28rIiBgIitpKyJgIG9mIHR5cGUgIiso
ImAiK3UrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgYSBzaW5nbGUgUmVhY3RFbGVt
ZW50LiIpKX1yZXR1cm4gbnVsbH1yZXR1cm4gbCh0KX1mdW5jdGlvbiB2KGUpe2Z1bmN0aW9uIHQo
dCxuLHIsbyxpKXtpZighKHRbbl1pbnN0YW5jZW9mIGUpKXt2YXIgYT1lLm5hbWV8fGssdT14KHRb
bl0pO3JldHVybiBuZXcgYygiSW52YWxpZCAiK28rIiBgIitpKyJgIG9mIHR5cGUgIisoImAiK3Ur
ImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgIikrKCJpbnN0YW5jZSBvZiBgIithKyJg
LiIpKX1yZXR1cm4gbnVsbH1yZXR1cm4gbCh0KX1mdW5jdGlvbiBtKGUpe2Z1bmN0aW9uIHQodCxu
LHIsbyxpKXtmb3IodmFyIGE9dFtuXSx1PTA7dTxlLmxlbmd0aDt1KyspaWYocyhhLGVbdV0pKXJl
dHVybiBudWxsO3ZhciBsPUpTT04uc3RyaW5naWZ5KGUpO3JldHVybiBuZXcgYygiSW52YWxpZCAi
K28rIiBgIitpKyJgIG9mIHZhbHVlIGAiK2ErImAgIisoInN1cHBsaWVkIHRvIGAiK3IrImAsIGV4
cGVjdGVkIG9uZSBvZiAiK2wrIi4iKSl9cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/bCh0KTpyLnRo
YXRSZXR1cm5zTnVsbH1mdW5jdGlvbiB5KGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxpKXtpZigiZnVu
Y3Rpb24iIT10eXBlb2YgZSlyZXR1cm4gbmV3IGMoIlByb3BlcnR5IGAiK2krImAgb2YgY29tcG9u
ZW50IGAiK3IrImAgaGFzIGludmFsaWQgUHJvcFR5cGUgbm90YXRpb24gaW5zaWRlIG9iamVjdE9m
LiIpO3ZhciB1PXRbbl0scz13KHUpO2lmKCJvYmplY3QiIT09cylyZXR1cm4gbmV3IGMoIkludmFs
aWQgIitvKyIgYCIraSsiYCBvZiB0eXBlICIrKCJgIitzKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAs
IGV4cGVjdGVkIGFuIG9iamVjdC4iKSk7Zm9yKHZhciBsIGluIHUpaWYodS5oYXNPd25Qcm9wZXJ0
eShsKSl7dmFyIHA9ZSh1LGwscixvLGkrIi4iK2wsYSk7aWYocCBpbnN0YW5jZW9mIEVycm9yKXJl
dHVybiBwfXJldHVybiBudWxsfXJldHVybiBsKHQpfWZ1bmN0aW9uIGcoZSl7ZnVuY3Rpb24gdCh0
LG4scixvLGkpe2Zvcih2YXIgdT0wO3U8ZS5sZW5ndGg7dSsrKXt2YXIgcz1lW3VdO2lmKG51bGw9
PXModCxuLHIsbyxpLGEpKXJldHVybiBudWxsfXJldHVybiBuZXcgYygiSW52YWxpZCAiK28rIiBg
IitpKyJgIHN1cHBsaWVkIHRvICIrKCJgIityKyJgLiIpKX1pZighQXJyYXkuaXNBcnJheShlKSly
ZXR1cm4gci50aGF0UmV0dXJuc051bGw7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspe3ZhciBv
PWVbbl07aWYoImZ1bmN0aW9uIiE9dHlwZW9mIG8pcmV0dXJuIGkoITEsIkludmFsaWQgYXJndW1l
bnQgc3VwcGxpZCB0byBvbmVPZlR5cGUuIEV4cGVjdGVkIGFuIGFycmF5IG9mIGNoZWNrIGZ1bmN0
aW9ucywgYnV0IHJlY2VpdmVkICVzIGF0IGluZGV4ICVzLiIsUChvKSxuKSxyLnRoYXRSZXR1cm5z
TnVsbH1yZXR1cm4gbCh0KX1mdW5jdGlvbiBiKCl7ZnVuY3Rpb24gZShlLHQsbixyLG8pe3JldHVy
biBDKGVbdF0pP251bGw6bmV3IGMoIkludmFsaWQgIityKyIgYCIrbysiYCBzdXBwbGllZCB0byAi
KygiYCIrbisiYCwgZXhwZWN0ZWQgYSBSZWFjdE5vZGUuIikpfXJldHVybiBsKGUpfWZ1bmN0aW9u
IF8oZSl7ZnVuY3Rpb24gdCh0LG4scixvLGkpe3ZhciB1PXRbbl0scz13KHUpO2lmKCJvYmplY3Qi
IT09cylyZXR1cm4gbmV3IGMoIkludmFsaWQgIitvKyIgYCIraSsiYCBvZiB0eXBlIGAiK3MrImAg
IisoInN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIGBvYmplY3RgLiIpKTtmb3IodmFyIGwg
aW4gZSl7dmFyIHA9ZVtsXTtpZihwKXt2YXIgZD1wKHUsbCxyLG8saSsiLiIrbCxhKTtpZihkKXJl
dHVybiBkfX1yZXR1cm4gbnVsbH1yZXR1cm4gbCh0KX1mdW5jdGlvbiBDKHQpe3N3aXRjaCh0eXBl
b2YgdCl7Y2FzZSJudW1iZXIiOmNhc2Uic3RyaW5nIjpjYXNlInVuZGVmaW5lZCI6cmV0dXJuITA7
Y2FzZSJib29sZWFuIjpyZXR1cm4hdDtjYXNlIm9iamVjdCI6aWYoQXJyYXkuaXNBcnJheSh0KSly
ZXR1cm4gdC5ldmVyeShDKTtpZihudWxsPT09dHx8ZSh0KSlyZXR1cm4hMDt2YXIgcj1uKHQpO2lm
KCFyKXJldHVybiExO3ZhciBvLGk9ci5jYWxsKHQpO2lmKHIhPT10LmVudHJpZXMpe2Zvcig7IShv
PWkubmV4dCgpKS5kb25lOylpZighQyhvLnZhbHVlKSlyZXR1cm4hMX1lbHNlIGZvcig7IShvPWku
bmV4dCgpKS5kb25lOyl7dmFyIGE9by52YWx1ZTtpZihhJiYhQyhhWzFdKSlyZXR1cm4hMX1yZXR1
cm4hMDtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBFKGUsdCl7cmV0dXJuInN5bWJvbCI9PT1l
fHwoIlN5bWJvbCI9PT10WyJAQHRvU3RyaW5nVGFnIl18fCJmdW5jdGlvbiI9PXR5cGVvZiBTeW1i
b2wmJnQgaW5zdGFuY2VvZiBTeW1ib2wpfWZ1bmN0aW9uIHcoZSl7dmFyIHQ9dHlwZW9mIGU7cmV0
dXJuIEFycmF5LmlzQXJyYXkoZSk/ImFycmF5IjplIGluc3RhbmNlb2YgUmVnRXhwPyJvYmplY3Qi
OkUodCxlKT8ic3ltYm9sIjp0fWZ1bmN0aW9uIFQoZSl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBl
fHxudWxsPT09ZSlyZXR1cm4iIitlO3ZhciB0PXcoZSk7aWYoIm9iamVjdCI9PT10KXtpZihlIGlu
c3RhbmNlb2YgRGF0ZSlyZXR1cm4iZGF0ZSI7aWYoZSBpbnN0YW5jZW9mIFJlZ0V4cClyZXR1cm4i
cmVnZXhwIn1yZXR1cm4gdH1mdW5jdGlvbiBQKGUpe3ZhciB0PVQoZSk7c3dpdGNoKHQpe2Nhc2Ui
YXJyYXkiOmNhc2Uib2JqZWN0IjpyZXR1cm4iYW4gIit0O2Nhc2UiYm9vbGVhbiI6Y2FzZSJkYXRl
IjpjYXNlInJlZ2V4cCI6cmV0dXJuImEgIit0O2RlZmF1bHQ6cmV0dXJuIHR9fWZ1bmN0aW9uIHgo
ZSl7cmV0dXJuIGUuY29uc3RydWN0b3ImJmUuY29uc3RydWN0b3IubmFtZT9lLmNvbnN0cnVjdG9y
Lm5hbWU6a312YXIgTz0iZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9sJiZTeW1ib2wuaXRlcmF0b3Is
Uz0iQEBpdGVyYXRvciIsaz0iPDxhbm9ueW1vdXM+PiIsTT17YXJyYXk6cCgiYXJyYXkiKSxib29s
OnAoImJvb2xlYW4iKSxmdW5jOnAoImZ1bmN0aW9uIiksbnVtYmVyOnAoIm51bWJlciIpLG9iamVj
dDpwKCJvYmplY3QiKSxzdHJpbmc6cCgic3RyaW5nIiksc3ltYm9sOnAoInN5bWJvbCIpLGFueTpk
KCksYXJyYXlPZjpmLGVsZW1lbnQ6aCgpLGluc3RhbmNlT2Y6dixub2RlOmIoKSxvYmplY3RPZjp5
LG9uZU9mOm0sb25lT2ZUeXBlOmcsc2hhcGU6X307cmV0dXJuIGMucHJvdG90eXBlPUVycm9yLnBy
b3RvdHlwZSxNLmNoZWNrUHJvcFR5cGVzPXUsTS5Qcm9wVHlwZXM9TSxNfX0sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9bigxMzcpfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3Ry
aWN0Ijt2YXIgbj17UHJvcGVydGllczp7ImFyaWEtY3VycmVudCI6MCwiYXJpYS1kZXRhaWxzIjow
LCJhcmlhLWRpc2FibGVkIjowLCJhcmlhLWhpZGRlbiI6MCwiYXJpYS1pbnZhbGlkIjowLCJhcmlh
LWtleXNob3J0Y3V0cyI6MCwiYXJpYS1sYWJlbCI6MCwiYXJpYS1yb2xlZGVzY3JpcHRpb24iOjAs
ImFyaWEtYXV0b2NvbXBsZXRlIjowLCJhcmlhLWNoZWNrZWQiOjAsImFyaWEtZXhwYW5kZWQiOjAs
ImFyaWEtaGFzcG9wdXAiOjAsImFyaWEtbGV2ZWwiOjAsImFyaWEtbW9kYWwiOjAsImFyaWEtbXVs
dGlsaW5lIjowLCJhcmlhLW11bHRpc2VsZWN0YWJsZSI6MCwiYXJpYS1vcmllbnRhdGlvbiI6MCwi
YXJpYS1wbGFjZWhvbGRlciI6MCwiYXJpYS1wcmVzc2VkIjowLCJhcmlhLXJlYWRvbmx5IjowLCJh
cmlhLXJlcXVpcmVkIjowLCJhcmlhLXNlbGVjdGVkIjowLCJhcmlhLXNvcnQiOjAsImFyaWEtdmFs
dWVtYXgiOjAsImFyaWEtdmFsdWVtaW4iOjAsImFyaWEtdmFsdWVub3ciOjAsImFyaWEtdmFsdWV0
ZXh0IjowLCJhcmlhLWF0b21pYyI6MCwiYXJpYS1idXN5IjowLCJhcmlhLWxpdmUiOjAsImFyaWEt
cmVsZXZhbnQiOjAsImFyaWEtZHJvcGVmZmVjdCI6MCwiYXJpYS1ncmFiYmVkIjowLCJhcmlhLWFj
dGl2ZWRlc2NlbmRhbnQiOjAsImFyaWEtY29sY291bnQiOjAsImFyaWEtY29saW5kZXgiOjAsImFy
aWEtY29sc3BhbiI6MCwiYXJpYS1jb250cm9scyI6MCwiYXJpYS1kZXNjcmliZWRieSI6MCwiYXJp
YS1lcnJvcm1lc3NhZ2UiOjAsImFyaWEtZmxvd3RvIjowLCJhcmlhLWxhYmVsbGVkYnkiOjAsImFy
aWEtb3ducyI6MCwiYXJpYS1wb3NpbnNldCI6MCwiYXJpYS1yb3djb3VudCI6MCwiYXJpYS1yb3dp
bmRleCI6MCwiYXJpYS1yb3dzcGFuIjowLCJhcmlhLXNldHNpemUiOjB9LERPTUF0dHJpYnV0ZU5h
bWVzOnt9LERPTVByb3BlcnR5TmFtZXM6e319O2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO3ZhciByPW4oNSksbz1uKDUyKSxpPXtmb2N1c0RPTUNvbXBvbmVudDpmdW5j
dGlvbigpe28oci5nZXROb2RlRnJvbUluc3RhbmNlKHRoaXMpKX19O2UuZXhwb3J0cz1pfSxmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt2YXIgZT13aW5kb3cub3BlcmE7
cmV0dXJuIm9iamVjdCI9PXR5cGVvZiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgZS52ZXJzaW9uJiZw
YXJzZUludChlLnZlcnNpb24oKSwxMCk8PTEyfWZ1bmN0aW9uIG8oZSl7cmV0dXJuKGUuY3RybEtl
eXx8ZS5hbHRLZXl8fGUubWV0YUtleSkmJiEoZS5jdHJsS2V5JiZlLmFsdEtleSl9ZnVuY3Rpb24g
aShlKXtzd2l0Y2goZSl7Y2FzZSJ0b3BDb21wb3NpdGlvblN0YXJ0IjpyZXR1cm4geC5jb21wb3Np
dGlvblN0YXJ0O2Nhc2UidG9wQ29tcG9zaXRpb25FbmQiOnJldHVybiB4LmNvbXBvc2l0aW9uRW5k
O2Nhc2UidG9wQ29tcG9zaXRpb25VcGRhdGUiOnJldHVybiB4LmNvbXBvc2l0aW9uVXBkYXRlfX1m
dW5jdGlvbiBhKGUsdCl7cmV0dXJuInRvcEtleURvd24iPT09ZSYmdC5rZXlDb2RlPT09Yn1mdW5j
dGlvbiB1KGUsdCl7c3dpdGNoKGUpe2Nhc2UidG9wS2V5VXAiOnJldHVybiBnLmluZGV4T2YodC5r
ZXlDb2RlKSE9PS0xO2Nhc2UidG9wS2V5RG93biI6cmV0dXJuIHQua2V5Q29kZSE9PWI7Y2FzZSJ0
b3BLZXlQcmVzcyI6Y2FzZSJ0b3BNb3VzZURvd24iOmNhc2UidG9wQmx1ciI6cmV0dXJuITA7ZGVm
YXVsdDpyZXR1cm4hMX19ZnVuY3Rpb24gcyhlKXt2YXIgdD1lLmRldGFpbDtyZXR1cm4ib2JqZWN0
Ij09dHlwZW9mIHQmJiJkYXRhImluIHQ/dC5kYXRhOm51bGx9ZnVuY3Rpb24gYyhlLHQsbixyKXt2
YXIgbyxjO2lmKF8/bz1pKGUpOlM/dShlLG4pJiYobz14LmNvbXBvc2l0aW9uRW5kKTphKGUsbikm
JihvPXguY29tcG9zaXRpb25TdGFydCksIW8pcmV0dXJuIG51bGw7dyYmKFN8fG8hPT14LmNvbXBv
c2l0aW9uU3RhcnQ/bz09PXguY29tcG9zaXRpb25FbmQmJlMmJihjPVMuZ2V0RGF0YSgpKTpTPXYu
Z2V0UG9vbGVkKHIpKTt2YXIgbD1tLmdldFBvb2xlZChvLHQsbixyKTtpZihjKWwuZGF0YT1jO2Vs
c2V7dmFyIHA9cyhuKTtudWxsIT09cCYmKGwuZGF0YT1wKX1yZXR1cm4gZi5hY2N1bXVsYXRlVHdv
UGhhc2VEaXNwYXRjaGVzKGwpLGx9ZnVuY3Rpb24gbChlLHQpe3N3aXRjaChlKXtjYXNlInRvcENv
bXBvc2l0aW9uRW5kIjpyZXR1cm4gcyh0KTtjYXNlInRvcEtleVByZXNzIjp2YXIgbj10LndoaWNo
O3JldHVybiBuIT09VD9udWxsOihPPSEwLFApO2Nhc2UidG9wVGV4dElucHV0Ijp2YXIgcj10LmRh
dGE7cmV0dXJuIHI9PT1QJiZPP251bGw6cjtkZWZhdWx0OnJldHVybiBudWxsfX1mdW5jdGlvbiBw
KGUsdCl7aWYoUyl7aWYoInRvcENvbXBvc2l0aW9uRW5kIj09PWV8fCFfJiZ1KGUsdCkpe3ZhciBu
PVMuZ2V0RGF0YSgpO3JldHVybiB2LnJlbGVhc2UoUyksUz1udWxsLG59cmV0dXJuIG51bGx9c3dp
dGNoKGUpe2Nhc2UidG9wUGFzdGUiOnJldHVybiBudWxsO2Nhc2UidG9wS2V5UHJlc3MiOnJldHVy
biB0LndoaWNoJiYhbyh0KT9TdHJpbmcuZnJvbUNoYXJDb2RlKHQud2hpY2gpOm51bGw7Y2FzZSJ0
b3BDb21wb3NpdGlvbkVuZCI6cmV0dXJuIHc/bnVsbDp0LmRhdGE7ZGVmYXVsdDpyZXR1cm4gbnVs
bH19ZnVuY3Rpb24gZChlLHQsbixyKXt2YXIgbztpZihvPUU/bChlLG4pOnAoZSxuKSwhbylyZXR1
cm4gbnVsbDt2YXIgaT15LmdldFBvb2xlZCh4LmJlZm9yZUlucHV0LHQsbixyKTtyZXR1cm4gaS5k
YXRhPW8sZi5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGkpLGl9dmFyIGY9bigyMCksaD1u
KDYpLHY9bigxMzIpLG09bigxNjkpLHk9bigxNzIpLGc9WzksMTMsMjcsMzJdLGI9MjI5LF89aC5j
YW5Vc2VET00mJiJDb21wb3NpdGlvbkV2ZW50ImluIHdpbmRvdyxDPW51bGw7aC5jYW5Vc2VET00m
JiJkb2N1bWVudE1vZGUiaW4gZG9jdW1lbnQmJihDPWRvY3VtZW50LmRvY3VtZW50TW9kZSk7dmFy
IEU9aC5jYW5Vc2VET00mJiJUZXh0RXZlbnQiaW4gd2luZG93JiYhQyYmIXIoKSx3PWguY2FuVXNl
RE9NJiYoIV98fEMmJkM+OCYmQzw9MTEpLFQ9MzIsUD1TdHJpbmcuZnJvbUNoYXJDb2RlKFQpLHg9
e2JlZm9yZUlucHV0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDoib25CZWZvcmVJ
bnB1dCIsY2FwdHVyZWQ6Im9uQmVmb3JlSW5wdXRDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOlsidG9w
Q29tcG9zaXRpb25FbmQiLCJ0b3BLZXlQcmVzcyIsInRvcFRleHRJbnB1dCIsInRvcFBhc3RlIl19
LGNvbXBvc2l0aW9uRW5kOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDoib25Db21w
b3NpdGlvbkVuZCIsY2FwdHVyZWQ6Im9uQ29tcG9zaXRpb25FbmRDYXB0dXJlIn0sZGVwZW5kZW5j
aWVzOlsidG9wQmx1ciIsInRvcENvbXBvc2l0aW9uRW5kIiwidG9wS2V5RG93biIsInRvcEtleVBy
ZXNzIiwidG9wS2V5VXAiLCJ0b3BNb3VzZURvd24iXX0sY29tcG9zaXRpb25TdGFydDp7cGhhc2Vk
UmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Im9uQ29tcG9zaXRpb25TdGFydCIsY2FwdHVyZWQ6
Im9uQ29tcG9zaXRpb25TdGFydENhcHR1cmUifSxkZXBlbmRlbmNpZXM6WyJ0b3BCbHVyIiwidG9w
Q29tcG9zaXRpb25TdGFydCIsInRvcEtleURvd24iLCJ0b3BLZXlQcmVzcyIsInRvcEtleVVwIiwi
dG9wTW91c2VEb3duIl19LGNvbXBvc2l0aW9uVXBkYXRlOntwaGFzZWRSZWdpc3RyYXRpb25OYW1l
czp7YnViYmxlZDoib25Db21wb3NpdGlvblVwZGF0ZSIsY2FwdHVyZWQ6Im9uQ29tcG9zaXRpb25V
cGRhdGVDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOlsidG9wQmx1ciIsInRvcENvbXBvc2l0aW9uVXBk
YXRlIiwidG9wS2V5RG93biIsInRvcEtleVByZXNzIiwidG9wS2V5VXAiLCJ0b3BNb3VzZURvd24i
XX19LE89ITEsUz1udWxsLGs9e2V2ZW50VHlwZXM6eCxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUs
dCxuLHIpe3JldHVybltjKGUsdCxuLHIpLGQoZSx0LG4scildfX07ZS5leHBvcnRzPWt9LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big1OCksbz1uKDYpLGk9KG4oOCksbig5OSks
bigxNzgpKSxhPW4oMTA2KSx1PW4oMTA5KSxzPShuKDIpLHUoZnVuY3Rpb24oZSl7cmV0dXJuIGEo
ZSl9KSksYz0hMSxsPSJjc3NGbG9hdCI7aWYoby5jYW5Vc2VET00pe3ZhciBwPWRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlO3RyeXtwLmZvbnQ9IiJ9Y2F0Y2goZCl7Yz0hMH12b2lk
IDA9PT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuY3NzRmxvYXQmJihsPSJzdHlsZUZs
b2F0Iil9dmFyIGY9e2NyZWF0ZU1hcmt1cEZvclN0eWxlczpmdW5jdGlvbihlLHQpe3ZhciBuPSIi
O2Zvcih2YXIgciBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkocikpe3ZhciBvPTA9PT1yLmluZGV4
T2YoIi0tIiksYT1lW3JdO251bGwhPWEmJihuKz1zKHIpKyI6IixuKz1pKHIsYSx0LG8pKyI7Iil9
cmV0dXJuIG58fG51bGx9LHNldFZhbHVlRm9yU3R5bGVzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgbz1l
LnN0eWxlO2Zvcih2YXIgYSBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkoYSkpe3ZhciB1PTA9PT1h
LmluZGV4T2YoIi0tIikscz1pKGEsdFthXSxuLHUpO2lmKCJmbG9hdCIhPT1hJiYiY3NzRmxvYXQi
IT09YXx8KGE9bCksdSlvLnNldFByb3BlcnR5KGEscyk7ZWxzZSBpZihzKW9bYV09cztlbHNle3Zh
ciBwPWMmJnIuc2hvcnRoYW5kUHJvcGVydHlFeHBhbnNpb25zW2FdO2lmKHApZm9yKHZhciBkIGlu
IHApb1tkXT0iIjtlbHNlIG9bYV09IiJ9fX19O2UuZXhwb3J0cz1mfSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4pe3ZhciByPXguZ2V0UG9vbGVkKE4uY2hhbmdl
LGUsdCxuKTtyZXR1cm4gci50eXBlPSJjaGFuZ2UiLEUuYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0
Y2hlcyhyKSxyfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9ZS5ub2RlTmFtZSYmZS5ub2RlTmFtZS50b0xv
d2VyQ2FzZSgpO3JldHVybiJzZWxlY3QiPT09dHx8ImlucHV0Ij09PXQmJiJmaWxlIj09PWUudHlw
ZX1mdW5jdGlvbiBpKGUpe3ZhciB0PXIoUixlLFMoZSkpO1AuYmF0Y2hlZFVwZGF0ZXMoYSx0KX1m
dW5jdGlvbiBhKGUpe0MuZW5xdWV1ZUV2ZW50cyhlKSxDLnByb2Nlc3NFdmVudFF1ZXVlKCExKX1m
dW5jdGlvbiB1KGUsdCl7ST1lLFI9dCxJLmF0dGFjaEV2ZW50KCJvbmNoYW5nZSIsaSl9ZnVuY3Rp
b24gcygpe0kmJihJLmRldGFjaEV2ZW50KCJvbmNoYW5nZSIsaSksST1udWxsLFI9bnVsbCl9ZnVu
Y3Rpb24gYyhlLHQpe3ZhciBuPU8udXBkYXRlVmFsdWVJZkNoYW5nZWQoZSkscj10LnNpbXVsYXRl
ZD09PSEwJiZqLl9hbGxvd1NpbXVsYXRlZFBhc3NUaHJvdWdoO2lmKG58fHIpcmV0dXJuIGV9ZnVu
Y3Rpb24gbChlLHQpe2lmKCJ0b3BDaGFuZ2UiPT09ZSlyZXR1cm4gdH1mdW5jdGlvbiBwKGUsdCxu
KXsidG9wRm9jdXMiPT09ZT8ocygpLHUodCxuKSk6InRvcEJsdXIiPT09ZSYmcygpfWZ1bmN0aW9u
IGQoZSx0KXtJPWUsUj10LEkuYXR0YWNoRXZlbnQoIm9ucHJvcGVydHljaGFuZ2UiLGgpfWZ1bmN0
aW9uIGYoKXtJJiYoSS5kZXRhY2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIsaCksST1udWxsLFI9
bnVsbCl9ZnVuY3Rpb24gaChlKXsidmFsdWUiPT09ZS5wcm9wZXJ0eU5hbWUmJmMoUixlKSYmaShl
KX1mdW5jdGlvbiB2KGUsdCxuKXsidG9wRm9jdXMiPT09ZT8oZigpLGQodCxuKSk6InRvcEJsdXIi
PT09ZSYmZigpfWZ1bmN0aW9uIG0oZSx0LG4pe2lmKCJ0b3BTZWxlY3Rpb25DaGFuZ2UiPT09ZXx8
InRvcEtleVVwIj09PWV8fCJ0b3BLZXlEb3duIj09PWUpcmV0dXJuIGMoUixuKX1mdW5jdGlvbiB5
KGUpewordmFyIHQ9ZS5ub2RlTmFtZTtyZXR1cm4gdCYmImlucHV0Ij09PXQudG9Mb3dlckNhc2Uo
KSYmKCJjaGVja2JveCI9PT1lLnR5cGV8fCJyYWRpbyI9PT1lLnR5cGUpfWZ1bmN0aW9uIGcoZSx0
LG4pe2lmKCJ0b3BDbGljayI9PT1lKXJldHVybiBjKHQsbil9ZnVuY3Rpb24gYihlLHQsbil7aWYo
InRvcElucHV0Ij09PWV8fCJ0b3BDaGFuZ2UiPT09ZSlyZXR1cm4gYyh0LG4pfWZ1bmN0aW9uIF8o
ZSx0KXtpZihudWxsIT1lKXt2YXIgbj1lLl93cmFwcGVyU3RhdGV8fHQuX3dyYXBwZXJTdGF0ZTtp
ZihuJiZuLmNvbnRyb2xsZWQmJiJudW1iZXIiPT09dC50eXBlKXt2YXIgcj0iIit0LnZhbHVlO3Qu
Z2V0QXR0cmlidXRlKCJ2YWx1ZSIpIT09ciYmdC5zZXRBdHRyaWJ1dGUoInZhbHVlIixyKX19fXZh
ciBDPW4oMTkpLEU9bigyMCksdz1uKDYpLFQ9big1KSxQPW4oOSkseD1uKDEwKSxPPW4oNzQpLFM9
big0Niksaz1uKDQ3KSxNPW4oNzYpLE49e2NoYW5nZTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6
e2J1YmJsZWQ6Im9uQ2hhbmdlIixjYXB0dXJlZDoib25DaGFuZ2VDYXB0dXJlIn0sZGVwZW5kZW5j
aWVzOlsidG9wQmx1ciIsInRvcENoYW5nZSIsInRvcENsaWNrIiwidG9wRm9jdXMiLCJ0b3BJbnB1
dCIsInRvcEtleURvd24iLCJ0b3BLZXlVcCIsInRvcFNlbGVjdGlvbkNoYW5nZSJdfX0sST1udWxs
LFI9bnVsbCxBPSExO3cuY2FuVXNlRE9NJiYoQT1rKCJjaGFuZ2UiKSYmKCFkb2N1bWVudC5kb2N1
bWVudE1vZGV8fGRvY3VtZW50LmRvY3VtZW50TW9kZT44KSk7dmFyIEQ9ITE7dy5jYW5Vc2VET00m
JihEPWsoImlucHV0IikmJighKCJkb2N1bWVudE1vZGUiaW4gZG9jdW1lbnQpfHxkb2N1bWVudC5k
b2N1bWVudE1vZGU+OSkpO3ZhciBqPXtldmVudFR5cGVzOk4sX2FsbG93U2ltdWxhdGVkUGFzc1Ro
cm91Z2g6ITAsX2lzSW5wdXRFdmVudFN1cHBvcnRlZDpELGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24o
ZSx0LG4saSl7dmFyIGEsdSxzPXQ/VC5nZXROb2RlRnJvbUluc3RhbmNlKHQpOndpbmRvdztpZihv
KHMpP0E/YT1sOnU9cDpNKHMpP0Q/YT1iOihhPW0sdT12KTp5KHMpJiYoYT1nKSxhKXt2YXIgYz1h
KGUsdCxuKTtpZihjKXt2YXIgZD1yKGMsbixpKTtyZXR1cm4gZH19dSYmdShlLHMsdCksInRvcEJs
dXIiPT09ZSYmXyh0LHMpfX07ZS5leHBvcnRzPWp9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7dmFyIHI9bigzKSxvPW4oMTQpLGk9big2KSxhPW4oMTAyKSx1PW4oNykscz0obigxKSx7ZGFu
Z2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXA6ZnVuY3Rpb24oZSx0KXtpZihpLmNhblVzZURP
TT92b2lkIDA6cigiNTYiKSx0P3ZvaWQgMDpyKCI1NyIpLCJIVE1MIj09PWUubm9kZU5hbWU/cigi
NTgiKTp2b2lkIDAsInN0cmluZyI9PXR5cGVvZiB0KXt2YXIgbj1hKHQsdSlbMF07ZS5wYXJlbnRO
b2RlLnJlcGxhY2VDaGlsZChuLGUpfWVsc2Ugby5yZXBsYWNlQ2hpbGRXaXRoVHJlZShlLHQpfX0p
O2UuZXhwb3J0cz1zfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1bIlJlc3BvbmRl
ckV2ZW50UGx1Z2luIiwiU2ltcGxlRXZlbnRQbHVnaW4iLCJUYXBFdmVudFBsdWdpbiIsIkVudGVy
TGVhdmVFdmVudFBsdWdpbiIsIkNoYW5nZUV2ZW50UGx1Z2luIiwiU2VsZWN0RXZlbnRQbHVnaW4i
LCJCZWZvcmVJbnB1dEV2ZW50UGx1Z2luIl07ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7dmFyIHI9bigyMCksbz1uKDUpLGk9bigyNiksYT17bW91c2VFbnRlcjp7cmVn
aXN0cmF0aW9uTmFtZToib25Nb3VzZUVudGVyIixkZXBlbmRlbmNpZXM6WyJ0b3BNb3VzZU91dCIs
InRvcE1vdXNlT3ZlciJdfSxtb3VzZUxlYXZlOntyZWdpc3RyYXRpb25OYW1lOiJvbk1vdXNlTGVh
dmUiLGRlcGVuZGVuY2llczpbInRvcE1vdXNlT3V0IiwidG9wTW91c2VPdmVyIl19fSx1PXtldmVu
dFR5cGVzOmEsZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbix1KXtpZigidG9wTW91c2VPdmVy
Ij09PWUmJihuLnJlbGF0ZWRUYXJnZXR8fG4uZnJvbUVsZW1lbnQpKXJldHVybiBudWxsO2lmKCJ0
b3BNb3VzZU91dCIhPT1lJiYidG9wTW91c2VPdmVyIiE9PWUpcmV0dXJuIG51bGw7dmFyIHM7aWYo
dS53aW5kb3c9PT11KXM9dTtlbHNle3ZhciBjPXUub3duZXJEb2N1bWVudDtzPWM/Yy5kZWZhdWx0
Vmlld3x8Yy5wYXJlbnRXaW5kb3c6d2luZG93fXZhciBsLHA7aWYoInRvcE1vdXNlT3V0Ij09PWUp
e2w9dDt2YXIgZD1uLnJlbGF0ZWRUYXJnZXR8fG4udG9FbGVtZW50O3A9ZD9vLmdldENsb3Nlc3RJ
bnN0YW5jZUZyb21Ob2RlKGQpOm51bGx9ZWxzZSBsPW51bGwscD10O2lmKGw9PT1wKXJldHVybiBu
dWxsO3ZhciBmPW51bGw9PWw/czpvLmdldE5vZGVGcm9tSW5zdGFuY2UobCksaD1udWxsPT1wP3M6
by5nZXROb2RlRnJvbUluc3RhbmNlKHApLHY9aS5nZXRQb29sZWQoYS5tb3VzZUxlYXZlLGwsbix1
KTt2LnR5cGU9Im1vdXNlbGVhdmUiLHYudGFyZ2V0PWYsdi5yZWxhdGVkVGFyZ2V0PWg7dmFyIG09
aS5nZXRQb29sZWQoYS5tb3VzZUVudGVyLHAsbix1KTtyZXR1cm4gbS50eXBlPSJtb3VzZWVudGVy
IixtLnRhcmdldD1oLG0ucmVsYXRlZFRhcmdldD1mLHIuYWNjdW11bGF0ZUVudGVyTGVhdmVEaXNw
YXRjaGVzKHYsbSxsLHApLFt2LG1dfX07ZS5leHBvcnRzPXV9LGZ1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlKXt0aGlzLl9yb290PWUsdGhpcy5fc3RhcnRUZXh0PXRoaXMu
Z2V0VGV4dCgpLHRoaXMuX2ZhbGxiYWNrVGV4dD1udWxsfXZhciBvPW4oNCksaT1uKDEzKSxhPW4o
NzMpO28oci5wcm90b3R5cGUse2Rlc3RydWN0b3I6ZnVuY3Rpb24oKXt0aGlzLl9yb290PW51bGws
dGhpcy5fc3RhcnRUZXh0PW51bGwsdGhpcy5fZmFsbGJhY2tUZXh0PW51bGx9LGdldFRleHQ6ZnVu
Y3Rpb24oKXtyZXR1cm4idmFsdWUiaW4gdGhpcy5fcm9vdD90aGlzLl9yb290LnZhbHVlOnRoaXMu
X3Jvb3RbYSgpXX0sZ2V0RGF0YTpmdW5jdGlvbigpe2lmKHRoaXMuX2ZhbGxiYWNrVGV4dClyZXR1
cm4gdGhpcy5fZmFsbGJhY2tUZXh0O3ZhciBlLHQsbj10aGlzLl9zdGFydFRleHQscj1uLmxlbmd0
aCxvPXRoaXMuZ2V0VGV4dCgpLGk9by5sZW5ndGg7Zm9yKGU9MDtlPHImJm5bZV09PT1vW2VdO2Ur
Kyk7dmFyIGE9ci1lO2Zvcih0PTE7dDw9YSYmbltyLXRdPT09b1tpLXRdO3QrKyk7dmFyIHU9dD4x
PzEtdDp2b2lkIDA7cmV0dXJuIHRoaXMuX2ZhbGxiYWNrVGV4dD1vLnNsaWNlKGUsdSksdGhpcy5f
ZmFsbGJhY2tUZXh0fX0pLGkuYWRkUG9vbGluZ1RvKHIpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMTUpLG89ci5pbmplY3Rpb24uTVVTVF9VU0VfUFJP
UEVSVFksaT1yLmluamVjdGlvbi5IQVNfQk9PTEVBTl9WQUxVRSxhPXIuaW5qZWN0aW9uLkhBU19O
VU1FUklDX1ZBTFVFLHU9ci5pbmplY3Rpb24uSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUscz1y
LmluamVjdGlvbi5IQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFLGM9e2lzQ3VzdG9tQXR0cmli
dXRlOlJlZ0V4cC5wcm90b3R5cGUudGVzdC5iaW5kKG5ldyBSZWdFeHAoIl4oZGF0YXxhcmlhKS1b
IityLkFUVFJJQlVURV9OQU1FX0NIQVIrIl0qJCIpKSxQcm9wZXJ0aWVzOnthY2NlcHQ6MCxhY2Nl
cHRDaGFyc2V0OjAsYWNjZXNzS2V5OjAsYWN0aW9uOjAsYWxsb3dGdWxsU2NyZWVuOmksYWxsb3dU
cmFuc3BhcmVuY3k6MCxhbHQ6MCxhczowLGFzeW5jOmksYXV0b0NvbXBsZXRlOjAsYXV0b1BsYXk6
aSxjYXB0dXJlOmksY2VsbFBhZGRpbmc6MCxjZWxsU3BhY2luZzowLGNoYXJTZXQ6MCxjaGFsbGVu
Z2U6MCxjaGVja2VkOm98aSxjaXRlOjAsY2xhc3NJRDowLGNsYXNzTmFtZTowLGNvbHM6dSxjb2xT
cGFuOjAsY29udGVudDowLGNvbnRlbnRFZGl0YWJsZTowLGNvbnRleHRNZW51OjAsY29udHJvbHM6
aSxjb29yZHM6MCxjcm9zc09yaWdpbjowLGRhdGE6MCxkYXRlVGltZTowLGRlZmF1bHQ6aSxkZWZl
cjppLGRpcjowLGRpc2FibGVkOmksZG93bmxvYWQ6cyxkcmFnZ2FibGU6MCxlbmNUeXBlOjAsZm9y
bTowLGZvcm1BY3Rpb246MCxmb3JtRW5jVHlwZTowLGZvcm1NZXRob2Q6MCxmb3JtTm9WYWxpZGF0
ZTppLGZvcm1UYXJnZXQ6MCxmcmFtZUJvcmRlcjowLGhlYWRlcnM6MCxoZWlnaHQ6MCxoaWRkZW46
aSxoaWdoOjAsaHJlZjowLGhyZWZMYW5nOjAsaHRtbEZvcjowLGh0dHBFcXVpdjowLGljb246MCxp
ZDowLGlucHV0TW9kZTowLGludGVncml0eTowLGlzOjAsa2V5UGFyYW1zOjAsa2V5VHlwZTowLGtp
bmQ6MCxsYWJlbDowLGxhbmc6MCxsaXN0OjAsbG9vcDppLGxvdzowLG1hbmlmZXN0OjAsbWFyZ2lu
SGVpZ2h0OjAsbWFyZ2luV2lkdGg6MCxtYXg6MCxtYXhMZW5ndGg6MCxtZWRpYTowLG1lZGlhR3Jv
dXA6MCxtZXRob2Q6MCxtaW46MCxtaW5MZW5ndGg6MCxtdWx0aXBsZTpvfGksbXV0ZWQ6b3xpLG5h
bWU6MCxub25jZTowLG5vVmFsaWRhdGU6aSxvcGVuOmksb3B0aW11bTowLHBhdHRlcm46MCxwbGFj
ZWhvbGRlcjowLHBsYXlzSW5saW5lOmkscG9zdGVyOjAscHJlbG9hZDowLHByb2ZpbGU6MCxyYWRp
b0dyb3VwOjAscmVhZE9ubHk6aSxyZWZlcnJlclBvbGljeTowLHJlbDowLHJlcXVpcmVkOmkscmV2
ZXJzZWQ6aSxyb2xlOjAscm93czp1LHJvd1NwYW46YSxzYW5kYm94OjAsc2NvcGU6MCxzY29wZWQ6
aSxzY3JvbGxpbmc6MCxzZWFtbGVzczppLHNlbGVjdGVkOm98aSxzaGFwZTowLHNpemU6dSxzaXpl
czowLHNwYW46dSxzcGVsbENoZWNrOjAsc3JjOjAsc3JjRG9jOjAsc3JjTGFuZzowLHNyY1NldDow
LHN0YXJ0OmEsc3RlcDowLHN0eWxlOjAsc3VtbWFyeTowLHRhYkluZGV4OjAsdGFyZ2V0OjAsdGl0
bGU6MCx0eXBlOjAsdXNlTWFwOjAsdmFsdWU6MCx3aWR0aDowLHdtb2RlOjAsd3JhcDowLGFib3V0
OjAsZGF0YXR5cGU6MCxpbmxpc3Q6MCxwcmVmaXg6MCxwcm9wZXJ0eTowLHJlc291cmNlOjAsdHlw
ZW9mOjAsdm9jYWI6MCxhdXRvQ2FwaXRhbGl6ZTowLGF1dG9Db3JyZWN0OjAsYXV0b1NhdmU6MCxj
b2xvcjowLGl0ZW1Qcm9wOjAsaXRlbVNjb3BlOmksaXRlbVR5cGU6MCxpdGVtSUQ6MCxpdGVtUmVm
OjAscmVzdWx0czowLHNlY3VyaXR5OjAsdW5zZWxlY3RhYmxlOjB9LERPTUF0dHJpYnV0ZU5hbWVz
OnthY2NlcHRDaGFyc2V0OiJhY2NlcHQtY2hhcnNldCIsY2xhc3NOYW1lOiJjbGFzcyIsaHRtbEZv
cjoiZm9yIixodHRwRXF1aXY6Imh0dHAtZXF1aXYifSxET01Qcm9wZXJ0eU5hbWVzOnt9LERPTU11
dGF0aW9uTWV0aG9kczp7dmFsdWU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gbnVsbD09dD9lLnJlbW92
ZUF0dHJpYnV0ZSgidmFsdWUiKTp2b2lkKCJudW1iZXIiIT09ZS50eXBlfHxlLmhhc0F0dHJpYnV0
ZSgidmFsdWUiKT09PSExP2Uuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsIiIrdCk6ZS52YWxpZGl0eSYm
IWUudmFsaWRpdHkuYmFkSW5wdXQmJmUub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50IT09ZSYm
ZS5zZXRBdHRyaWJ1dGUoInZhbHVlIiwiIit0KSl9fX07ZS5leHBvcnRzPWN9LGZ1bmN0aW9uKGUs
dCxuKXsoZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7dmFyIG89
dm9pZCAwPT09ZVtuXTtudWxsIT10JiZvJiYoZVtuXT1pKHQsITApKX12YXIgbz1uKDE2KSxpPW4o
NzUpLGE9KG4oMzgpLG4oNDgpKSx1PW4oNzgpO24oMik7InVuZGVmaW5lZCIhPXR5cGVvZiB0JiZ0
LmVudiwxO3ZhciBzPXtpbnN0YW50aWF0ZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuLG8pe2lmKG51
bGw9PWUpcmV0dXJuIG51bGw7dmFyIGk9e307cmV0dXJuIHUoZSxyLGkpLGl9LHVwZGF0ZUNoaWxk
cmVuOmZ1bmN0aW9uKGUsdCxuLHIsdSxzLGMsbCxwKXtpZih0fHxlKXt2YXIgZCxmO2ZvcihkIGlu
IHQpaWYodC5oYXNPd25Qcm9wZXJ0eShkKSl7Zj1lJiZlW2RdO3ZhciBoPWYmJmYuX2N1cnJlbnRF
bGVtZW50LHY9dFtkXTtpZihudWxsIT1mJiZhKGgsdikpby5yZWNlaXZlQ29tcG9uZW50KGYsdix1
LGwpLHRbZF09ZjtlbHNle2YmJihyW2RdPW8uZ2V0SG9zdE5vZGUoZiksby51bm1vdW50Q29tcG9u
ZW50KGYsITEpKTt2YXIgbT1pKHYsITApO3RbZF09bTt2YXIgeT1vLm1vdW50Q29tcG9uZW50KG0s
dSxzLGMsbCxwKTtuLnB1c2goeSl9fWZvcihkIGluIGUpIWUuaGFzT3duUHJvcGVydHkoZCl8fHQm
JnQuaGFzT3duUHJvcGVydHkoZCl8fChmPWVbZF0scltkXT1vLmdldEhvc3ROb2RlKGYpLG8udW5t
b3VudENvbXBvbmVudChmLCExKSl9fSx1bm1vdW50Q2hpbGRyZW46ZnVuY3Rpb24oZSx0KXtmb3Io
dmFyIG4gaW4gZSlpZihlLmhhc093blByb3BlcnR5KG4pKXt2YXIgcj1lW25dO28udW5tb3VudENv
bXBvbmVudChyLHQpfX19O2UuZXhwb3J0cz1zfSkuY2FsbCh0LG4oODcpKX0sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDM0KSxvPW4oMTQyKSxpPXtwcm9jZXNzQ2hpbGRyZW5V
cGRhdGVzOm8uZGFuZ2Vyb3VzbHlQcm9jZXNzQ2hpbGRyZW5VcGRhdGVzLHJlcGxhY2VOb2RlV2l0
aE1hcmt1cDpyLmRhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwfTtlLmV4cG9ydHM9aX0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe31mdW5jdGlvbiBvKGUs
dCl7fWZ1bmN0aW9uIGkoZSl7cmV0dXJuISghZS5wcm90b3R5cGV8fCFlLnByb3RvdHlwZS5pc1Jl
YWN0Q29tcG9uZW50KX1mdW5jdGlvbiBhKGUpe3JldHVybiEoIWUucHJvdG90eXBlfHwhZS5wcm90
b3R5cGUuaXNQdXJlUmVhY3RDb21wb25lbnQpfXZhciB1PW4oMykscz1uKDQpLGM9bigxNyksbD1u
KDQwKSxwPW4oMTEpLGQ9big0MSksZj1uKDIxKSxoPShuKDgpLG4oNjgpKSx2PW4oMTYpLG09bigy
NCkseT0obigxKSxuKDMyKSksZz1uKDQ4KSxiPShuKDIpLHtJbXB1cmVDbGFzczowLFB1cmVDbGFz
czoxLFN0YXRlbGVzc0Z1bmN0aW9uYWw6Mn0pO3IucHJvdG90eXBlLnJlbmRlcj1mdW5jdGlvbigp
e3ZhciBlPWYuZ2V0KHRoaXMpLl9jdXJyZW50RWxlbWVudC50eXBlLHQ9ZSh0aGlzLnByb3BzLHRo
aXMuY29udGV4dCx0aGlzLnVwZGF0ZXIpO3JldHVybiBvKGUsdCksdH07dmFyIF89MSxDPXtjb25z
dHJ1Y3Q6ZnVuY3Rpb24oZSl7dGhpcy5fY3VycmVudEVsZW1lbnQ9ZSx0aGlzLl9yb290Tm9kZUlE
PTAsdGhpcy5fY29tcG9zaXRlVHlwZT1udWxsLHRoaXMuX2luc3RhbmNlPW51bGwsdGhpcy5faG9z
dFBhcmVudD1udWxsLHRoaXMuX2hvc3RDb250YWluZXJJbmZvPW51bGwsdGhpcy5fdXBkYXRlQmF0
Y2hOdW1iZXI9bnVsbCx0aGlzLl9wZW5kaW5nRWxlbWVudD1udWxsLHRoaXMuX3BlbmRpbmdTdGF0
ZVF1ZXVlPW51bGwsdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZT0hMSx0aGlzLl9wZW5kaW5nRm9y
Y2VVcGRhdGU9ITEsdGhpcy5fcmVuZGVyZWROb2RlVHlwZT1udWxsLHRoaXMuX3JlbmRlcmVkQ29t
cG9uZW50PW51bGwsdGhpcy5fY29udGV4dD1udWxsLHRoaXMuX21vdW50T3JkZXI9MCx0aGlzLl90
b3BMZXZlbFdyYXBwZXI9bnVsbCx0aGlzLl9wZW5kaW5nQ2FsbGJhY2tzPW51bGwsdGhpcy5fY2Fs
bGVkQ29tcG9uZW50V2lsbFVubW91bnQ9ITF9LG1vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxu
LHMpe3RoaXMuX2NvbnRleHQ9cyx0aGlzLl9tb3VudE9yZGVyPV8rKyx0aGlzLl9ob3N0UGFyZW50
PXQsdGhpcy5faG9zdENvbnRhaW5lckluZm89bjt2YXIgbCxwPXRoaXMuX2N1cnJlbnRFbGVtZW50
LnByb3BzLGQ9dGhpcy5fcHJvY2Vzc0NvbnRleHQocyksaD10aGlzLl9jdXJyZW50RWxlbWVudC50
eXBlLHY9ZS5nZXRVcGRhdGVRdWV1ZSgpLHk9aShoKSxnPXRoaXMuX2NvbnN0cnVjdENvbXBvbmVu
dCh5LHAsZCx2KTt5fHxudWxsIT1nJiZudWxsIT1nLnJlbmRlcj9hKGgpP3RoaXMuX2NvbXBvc2l0
ZVR5cGU9Yi5QdXJlQ2xhc3M6dGhpcy5fY29tcG9zaXRlVHlwZT1iLkltcHVyZUNsYXNzOihsPWcs
byhoLGwpLG51bGw9PT1nfHxnPT09ITF8fGMuaXNWYWxpZEVsZW1lbnQoZyk/dm9pZCAwOnUoIjEw
NSIsaC5kaXNwbGF5TmFtZXx8aC5uYW1lfHwiQ29tcG9uZW50IiksZz1uZXcgcihoKSx0aGlzLl9j
b21wb3NpdGVUeXBlPWIuU3RhdGVsZXNzRnVuY3Rpb25hbCk7Zy5wcm9wcz1wLGcuY29udGV4dD1k
LGcucmVmcz1tLGcudXBkYXRlcj12LHRoaXMuX2luc3RhbmNlPWcsZi5zZXQoZyx0aGlzKTt2YXIg
Qz1nLnN0YXRlO3ZvaWQgMD09PUMmJihnLnN0YXRlPUM9bnVsbCksIm9iamVjdCIhPXR5cGVvZiBD
fHxBcnJheS5pc0FycmF5KEMpP3UoIjEwNiIsdGhpcy5nZXROYW1lKCl8fCJSZWFjdENvbXBvc2l0
ZUNvbXBvbmVudCIpOnZvaWQgMCx0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZT1udWxsLHRoaXMuX3Bl
bmRpbmdSZXBsYWNlU3RhdGU9ITEsdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlPSExO3ZhciBFO3Jl
dHVybiBFPWcudW5zdGFibGVfaGFuZGxlRXJyb3I/dGhpcy5wZXJmb3JtSW5pdGlhbE1vdW50V2l0
aEVycm9ySGFuZGxpbmcobCx0LG4sZSxzKTp0aGlzLnBlcmZvcm1Jbml0aWFsTW91bnQobCx0LG4s
ZSxzKSxnLmNvbXBvbmVudERpZE1vdW50JiZlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUo
Zy5jb21wb25lbnREaWRNb3VudCxnKSxFfSxfY29uc3RydWN0Q29tcG9uZW50OmZ1bmN0aW9uKGUs
dCxuLHIpe3JldHVybiB0aGlzLl9jb25zdHJ1Y3RDb21wb25lbnRXaXRob3V0T3duZXIoZSx0LG4s
cil9LF9jb25zdHJ1Y3RDb21wb25lbnRXaXRob3V0T3duZXI6ZnVuY3Rpb24oZSx0LG4scil7dmFy
IG89dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtyZXR1cm4gZT9uZXcgbyh0LG4scik6byh0LG4s
cil9LHBlcmZvcm1Jbml0aWFsTW91bnRXaXRoRXJyb3JIYW5kbGluZzpmdW5jdGlvbihlLHQsbixy
LG8pe3ZhciBpLGE9ci5jaGVja3BvaW50KCk7dHJ5e2k9dGhpcy5wZXJmb3JtSW5pdGlhbE1vdW50
KGUsdCxuLHIsbyl9Y2F0Y2godSl7ci5yb2xsYmFjayhhKSx0aGlzLl9pbnN0YW5jZS51bnN0YWJs
ZV9oYW5kbGVFcnJvcih1KSx0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSYmKHRoaXMuX2luc3RhbmNl
LnN0YXRlPXRoaXMuX3Byb2Nlc3NQZW5kaW5nU3RhdGUodGhpcy5faW5zdGFuY2UucHJvcHMsdGhp
cy5faW5zdGFuY2UuY29udGV4dCkpLGE9ci5jaGVja3BvaW50KCksdGhpcy5fcmVuZGVyZWRDb21w
b25lbnQudW5tb3VudENvbXBvbmVudCghMCksci5yb2xsYmFjayhhKSxpPXRoaXMucGVyZm9ybUlu
aXRpYWxNb3VudChlLHQsbixyLG8pfXJldHVybiBpfSxwZXJmb3JtSW5pdGlhbE1vdW50OmZ1bmN0
aW9uKGUsdCxuLHIsbyl7dmFyIGk9dGhpcy5faW5zdGFuY2UsYT0wO2kuY29tcG9uZW50V2lsbE1v
dW50JiYoaS5jb21wb25lbnRXaWxsTW91bnQoKSx0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSYmKGku
c3RhdGU9dGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZShpLnByb3BzLGkuY29udGV4dCkpKSx2b2lk
IDA9PT1lJiYoZT10aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQoKSk7dmFyIHU9aC5nZXRU
eXBlKGUpO3RoaXMuX3JlbmRlcmVkTm9kZVR5cGU9dTt2YXIgcz10aGlzLl9pbnN0YW50aWF0ZVJl
YWN0Q29tcG9uZW50KGUsdSE9PWguRU1QVFkpO3RoaXMuX3JlbmRlcmVkQ29tcG9uZW50PXM7dmFy
IGM9di5tb3VudENvbXBvbmVudChzLHIsdCxuLHRoaXMuX3Byb2Nlc3NDaGlsZENvbnRleHQobyks
YSk7cmV0dXJuIGN9LGdldEhvc3ROb2RlOmZ1bmN0aW9uKCl7cmV0dXJuIHYuZ2V0SG9zdE5vZGUo
dGhpcy5fcmVuZGVyZWRDb21wb25lbnQpfSx1bm1vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUpe2lm
KHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50KXt2YXIgdD10aGlzLl9pbnN0YW5jZTtpZih0LmNvbXBv
bmVudFdpbGxVbm1vdW50JiYhdC5fY2FsbGVkQ29tcG9uZW50V2lsbFVubW91bnQpaWYodC5fY2Fs
bGVkQ29tcG9uZW50V2lsbFVubW91bnQ9ITAsZSl7dmFyIG49dGhpcy5nZXROYW1lKCkrIi5jb21w
b25lbnRXaWxsVW5tb3VudCgpIjtkLmludm9rZUd1YXJkZWRDYWxsYmFjayhuLHQuY29tcG9uZW50
V2lsbFVubW91bnQuYmluZCh0KSl9ZWxzZSB0LmNvbXBvbmVudFdpbGxVbm1vdW50KCk7dGhpcy5f
cmVuZGVyZWRDb21wb25lbnQmJih2LnVubW91bnRDb21wb25lbnQodGhpcy5fcmVuZGVyZWRDb21w
b25lbnQsZSksdGhpcy5fcmVuZGVyZWROb2RlVHlwZT1udWxsLHRoaXMuX3JlbmRlcmVkQ29tcG9u
ZW50PW51bGwsdGhpcy5faW5zdGFuY2U9bnVsbCksdGhpcy5fcGVuZGluZ1N0YXRlUXVldWU9bnVs
bCx0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlPSExLHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZT0h
MSx0aGlzLl9wZW5kaW5nQ2FsbGJhY2tzPW51bGwsdGhpcy5fcGVuZGluZ0VsZW1lbnQ9bnVsbCx0
aGlzLl9jb250ZXh0PW51bGwsdGhpcy5fcm9vdE5vZGVJRD0wLHRoaXMuX3RvcExldmVsV3JhcHBl
cj1udWxsLGYucmVtb3ZlKHQpfX0sX21hc2tDb250ZXh0OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMu
X2N1cnJlbnRFbGVtZW50LnR5cGUsbj10LmNvbnRleHRUeXBlcztpZighbilyZXR1cm4gbTt2YXIg
cj17fTtmb3IodmFyIG8gaW4gbilyW29dPWVbb107cmV0dXJuIHJ9LF9wcm9jZXNzQ29udGV4dDpm
dW5jdGlvbihlKXt2YXIgdD10aGlzLl9tYXNrQ29udGV4dChlKTtyZXR1cm4gdH0sX3Byb2Nlc3ND
aGlsZENvbnRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQsbj10aGlzLl9jdXJyZW50RWxlbWVudC50eXBl
LHI9dGhpcy5faW5zdGFuY2U7aWYoci5nZXRDaGlsZENvbnRleHQmJih0PXIuZ2V0Q2hpbGRDb250
ZXh0KCkpLHQpeyJvYmplY3QiIT10eXBlb2Ygbi5jaGlsZENvbnRleHRUeXBlcz91KCIxMDciLHRo
aXMuZ2V0TmFtZSgpfHwiUmVhY3RDb21wb3NpdGVDb21wb25lbnQiKTp2b2lkIDA7Zm9yKHZhciBv
IGluIHQpbyBpbiBuLmNoaWxkQ29udGV4dFR5cGVzP3ZvaWQgMDp1KCIxMDgiLHRoaXMuZ2V0TmFt
ZSgpfHwiUmVhY3RDb21wb3NpdGVDb21wb25lbnQiLG8pO3JldHVybiBzKHt9LGUsdCl9cmV0dXJu
IGV9LF9jaGVja0NvbnRleHRUeXBlczpmdW5jdGlvbihlLHQsbil7fSxyZWNlaXZlQ29tcG9uZW50
OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9jdXJyZW50RWxlbWVudCxvPXRoaXMuX2NvbnRl
eHQ7dGhpcy5fcGVuZGluZ0VsZW1lbnQ9bnVsbCx0aGlzLnVwZGF0ZUNvbXBvbmVudCh0LHIsZSxv
LG4pfSxwZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnk6ZnVuY3Rpb24oZSl7bnVsbCE9dGhpcy5fcGVu
ZGluZ0VsZW1lbnQ/di5yZWNlaXZlQ29tcG9uZW50KHRoaXMsdGhpcy5fcGVuZGluZ0VsZW1lbnQs
ZSx0aGlzLl9jb250ZXh0KTpudWxsIT09dGhpcy5fcGVuZGluZ1N0YXRlUXVldWV8fHRoaXMuX3Bl
bmRpbmdGb3JjZVVwZGF0ZT90aGlzLnVwZGF0ZUNvbXBvbmVudChlLHRoaXMuX2N1cnJlbnRFbGVt
ZW50LHRoaXMuX2N1cnJlbnRFbGVtZW50LHRoaXMuX2NvbnRleHQsdGhpcy5fY29udGV4dCk6dGhp
cy5fdXBkYXRlQmF0Y2hOdW1iZXI9bnVsbH0sdXBkYXRlQ29tcG9uZW50OmZ1bmN0aW9uKGUsdCxu
LHIsbyl7dmFyIGk9dGhpcy5faW5zdGFuY2U7bnVsbD09aT91KCIxMzYiLHRoaXMuZ2V0TmFtZSgp
fHwiUmVhY3RDb21wb3NpdGVDb21wb25lbnQiKTp2b2lkIDA7dmFyIGEscz0hMTt0aGlzLl9jb250
ZXh0PT09bz9hPWkuY29udGV4dDooYT10aGlzLl9wcm9jZXNzQ29udGV4dChvKSxzPSEwKTt2YXIg
Yz10LnByb3BzLGw9bi5wcm9wczt0IT09biYmKHM9ITApLHMmJmkuY29tcG9uZW50V2lsbFJlY2Vp
dmVQcm9wcyYmaS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKGwsYSk7dmFyIHA9dGhpcy5fcHJv
Y2Vzc1BlbmRpbmdTdGF0ZShsLGEpLGQ9ITA7dGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlfHwoaS5z
aG91bGRDb21wb25lbnRVcGRhdGU/ZD1pLnNob3VsZENvbXBvbmVudFVwZGF0ZShsLHAsYSk6dGhp
cy5fY29tcG9zaXRlVHlwZT09PWIuUHVyZUNsYXNzJiYoZD0heShjLGwpfHwheShpLnN0YXRlLHAp
KSksdGhpcy5fdXBkYXRlQmF0Y2hOdW1iZXI9bnVsbCxkPyh0aGlzLl9wZW5kaW5nRm9yY2VVcGRh
dGU9ITEsdGhpcy5fcGVyZm9ybUNvbXBvbmVudFVwZGF0ZShuLGwscCxhLGUsbykpOih0aGlzLl9j
dXJyZW50RWxlbWVudD1uLHRoaXMuX2NvbnRleHQ9byxpLnByb3BzPWwsaS5zdGF0ZT1wLGkuY29u
dGV4dD1hKX0sX3Byb2Nlc3NQZW5kaW5nU3RhdGU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9p
bnN0YW5jZSxyPXRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlLG89dGhpcy5fcGVuZGluZ1JlcGxhY2VT
dGF0ZTtpZih0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlPSExLHRoaXMuX3BlbmRpbmdTdGF0ZVF1
ZXVlPW51bGwsIXIpcmV0dXJuIG4uc3RhdGU7aWYobyYmMT09PXIubGVuZ3RoKXJldHVybiByWzBd
O2Zvcih2YXIgaT1zKHt9LG8/clswXTpuLnN0YXRlKSxhPW8/MTowO2E8ci5sZW5ndGg7YSsrKXt2
YXIgdT1yW2FdO3MoaSwiZnVuY3Rpb24iPT10eXBlb2YgdT91LmNhbGwobixpLGUsdCk6dSl9cmV0
dXJuIGl9LF9wZXJmb3JtQ29tcG9uZW50VXBkYXRlOmZ1bmN0aW9uKGUsdCxuLHIsbyxpKXt2YXIg
YSx1LHMsYz10aGlzLl9pbnN0YW5jZSxsPUJvb2xlYW4oYy5jb21wb25lbnREaWRVcGRhdGUpO2wm
JihhPWMucHJvcHMsdT1jLnN0YXRlLHM9Yy5jb250ZXh0KSxjLmNvbXBvbmVudFdpbGxVcGRhdGUm
JmMuY29tcG9uZW50V2lsbFVwZGF0ZSh0LG4sciksdGhpcy5fY3VycmVudEVsZW1lbnQ9ZSx0aGlz
Ll9jb250ZXh0PWksYy5wcm9wcz10LGMuc3RhdGU9bixjLmNvbnRleHQ9cix0aGlzLl91cGRhdGVS
ZW5kZXJlZENvbXBvbmVudChvLGkpLGwmJm8uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShj
LmNvbXBvbmVudERpZFVwZGF0ZS5iaW5kKGMsYSx1LHMpLGMpfSxfdXBkYXRlUmVuZGVyZWRDb21w
b25lbnQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9yZW5kZXJlZENvbXBvbmVudCxyPW4uX2N1
cnJlbnRFbGVtZW50LG89dGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KCksaT0wO2lmKGco
cixvKSl2LnJlY2VpdmVDb21wb25lbnQobixvLGUsdGhpcy5fcHJvY2Vzc0NoaWxkQ29udGV4dCh0
KSk7ZWxzZXt2YXIgYT12LmdldEhvc3ROb2RlKG4pO3YudW5tb3VudENvbXBvbmVudChuLCExKTt2
YXIgdT1oLmdldFR5cGUobyk7dGhpcy5fcmVuZGVyZWROb2RlVHlwZT11O3ZhciBzPXRoaXMuX2lu
c3RhbnRpYXRlUmVhY3RDb21wb25lbnQobyx1IT09aC5FTVBUWSk7dGhpcy5fcmVuZGVyZWRDb21w
b25lbnQ9czt2YXIgYz12Lm1vdW50Q29tcG9uZW50KHMsZSx0aGlzLl9ob3N0UGFyZW50LHRoaXMu
X2hvc3RDb250YWluZXJJbmZvLHRoaXMuX3Byb2Nlc3NDaGlsZENvbnRleHQodCksaSk7dGhpcy5f
cmVwbGFjZU5vZGVXaXRoTWFya3VwKGEsYyxuKX19LF9yZXBsYWNlTm9kZVdpdGhNYXJrdXA6ZnVu
Y3Rpb24oZSx0LG4pe2wucmVwbGFjZU5vZGVXaXRoTWFya3VwKGUsdCxuKX0sX3JlbmRlclZhbGlk
YXRlZENvbXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4dDpmdW5jdGlvbigpe3ZhciBlLHQ9dGhp
cy5faW5zdGFuY2U7cmV0dXJuIGU9dC5yZW5kZXIoKX0sX3JlbmRlclZhbGlkYXRlZENvbXBvbmVu
dDpmdW5jdGlvbigpe3ZhciBlO2lmKHRoaXMuX2NvbXBvc2l0ZVR5cGUhPT1iLlN0YXRlbGVzc0Z1
bmN0aW9uYWwpe3AuY3VycmVudD10aGlzO3RyeXtlPXRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBv
bmVudFdpdGhvdXRPd25lck9yQ29udGV4dCgpfWZpbmFsbHl7cC5jdXJyZW50PW51bGx9fWVsc2Ug
ZT10aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQoKTty
ZXR1cm4gbnVsbD09PWV8fGU9PT0hMXx8Yy5pc1ZhbGlkRWxlbWVudChlKT92b2lkIDA6dSgiMTA5
Iix0aGlzLmdldE5hbWUoKXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50IiksZX0sYXR0YWNoUmVm
OmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5nZXRQdWJsaWNJbnN0YW5jZSgpO251bGw9PW4/dSgi
MTEwIik6dm9pZCAwO3ZhciByPXQuZ2V0UHVibGljSW5zdGFuY2UoKSxvPW4ucmVmcz09PW0/bi5y
ZWZzPXt9Om4ucmVmcztvW2VdPXJ9LGRldGFjaFJlZjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmdl
dFB1YmxpY0luc3RhbmNlKCkucmVmcztkZWxldGUgdFtlXX0sZ2V0TmFtZTpmdW5jdGlvbigpe3Zh
ciBlPXRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUsdD10aGlzLl9pbnN0YW5jZSYmdGhpcy5faW5z
dGFuY2UuY29uc3RydWN0b3I7cmV0dXJuIGUuZGlzcGxheU5hbWV8fHQmJnQuZGlzcGxheU5hbWV8
fGUubmFtZXx8dCYmdC5uYW1lfHxudWxsfSxnZXRQdWJsaWNJbnN0YW5jZTpmdW5jdGlvbigpe3Zh
ciBlPXRoaXMuX2luc3RhbmNlO3JldHVybiB0aGlzLl9jb21wb3NpdGVUeXBlPT09Yi5TdGF0ZWxl
c3NGdW5jdGlvbmFsP251bGw6ZX0sX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQ6bnVsbH07ZS5l
eHBvcnRzPUN9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big1KSxvPW4oMTUw
KSxpPW4oNjcpLGE9bigxNiksdT1uKDkpLHM9bigxNjMpLGM9bigxNzkpLGw9big3MikscD1uKDE4
Nik7bigyKTtvLmluamVjdCgpO3ZhciBkPXtmaW5kRE9NTm9kZTpjLHJlbmRlcjppLnJlbmRlcix1
bm1vdW50Q29tcG9uZW50QXROb2RlOmkudW5tb3VudENvbXBvbmVudEF0Tm9kZSx2ZXJzaW9uOnMs
dW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXM6dS5iYXRjaGVkVXBkYXRlcyx1bnN0YWJsZV9yZW5kZXJT
dWJ0cmVlSW50b0NvbnRhaW5lcjpwfTsidW5kZWZpbmVkIiE9dHlwZW9mIF9fUkVBQ1RfREVWVE9P
TFNfR0xPQkFMX0hPT0tfXyYmImZ1bmN0aW9uIj09dHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xP
QkFMX0hPT0tfXy5pbmplY3QmJl9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5pbmplY3Qo
e0NvbXBvbmVudFRyZWU6e2dldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlOnIuZ2V0Q2xvc2VzdElu
c3RhbmNlRnJvbU5vZGUsZ2V0Tm9kZUZyb21JbnN0YW5jZTpmdW5jdGlvbihlKXtyZXR1cm4gZS5f
cmVuZGVyZWRDb21wb25lbnQmJihlPWwoZSkpLGU/ci5nZXROb2RlRnJvbUluc3RhbmNlKGUpOm51
bGx9fSxNb3VudDppLFJlY29uY2lsZXI6YX0pO2UuZXhwb3J0cz1kfSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYoZSl7dmFyIHQ9ZS5fY3VycmVudEVsZW1lbnQu
X293bmVyfHxudWxsO2lmKHQpe3ZhciBuPXQuZ2V0TmFtZSgpO2lmKG4pcmV0dXJuIiBUaGlzIERP
TSBub2RlIHdhcyByZW5kZXJlZCBieSBgIituKyJgLiJ9fXJldHVybiIifWZ1bmN0aW9uIG8oZSx0
KXt0JiYoUVtlLl90YWddJiYobnVsbCE9dC5jaGlsZHJlbnx8bnVsbCE9dC5kYW5nZXJvdXNseVNl
dElubmVySFRNTD9tKCIxMzciLGUuX3RhZyxlLl9jdXJyZW50RWxlbWVudC5fb3duZXI/IiBDaGVj
ayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAiK2UuX2N1cnJlbnRFbGVtZW50Ll9vd25lci5nZXROYW1l
KCkrIi4iOiIiKTp2b2lkIDApLG51bGwhPXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJihudWxs
IT10LmNoaWxkcmVuP20oIjYwIik6dm9pZCAwLCJvYmplY3QiPT10eXBlb2YgdC5kYW5nZXJvdXNs
eVNldElubmVySFRNTCYmcSBpbiB0LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MP3ZvaWQgMDptKCI2
MSIpKSxudWxsIT10LnN0eWxlJiYib2JqZWN0IiE9dHlwZW9mIHQuc3R5bGU/bSgiNjIiLHIoZSkp
OnZvaWQgMCl9ZnVuY3Rpb24gaShlLHQsbixyKXtpZighKHIgaW5zdGFuY2VvZiBBKSl7dmFyIG89
ZS5faG9zdENvbnRhaW5lckluZm8saT1vLl9ub2RlJiZvLl9ub2RlLm5vZGVUeXBlPT09WSx1PWk/
by5fbm9kZTpvLl9vd25lckRvY3VtZW50O0IodCx1KSxyLmdldFJlYWN0TW91bnRSZWFkeSgpLmVu
cXVldWUoYSx7aW5zdDplLHJlZ2lzdHJhdGlvbk5hbWU6dCxsaXN0ZW5lcjpufSl9fWZ1bmN0aW9u
IGEoKXt2YXIgZT10aGlzO1QucHV0TGlzdGVuZXIoZS5pbnN0LGUucmVnaXN0cmF0aW9uTmFtZSxl
Lmxpc3RlbmVyKX1mdW5jdGlvbiB1KCl7dmFyIGU9dGhpcztrLnBvc3RNb3VudFdyYXBwZXIoZSl9
ZnVuY3Rpb24gcygpe3ZhciBlPXRoaXM7SS5wb3N0TW91bnRXcmFwcGVyKGUpfWZ1bmN0aW9uIGMo
KXt2YXIgZT10aGlzO00ucG9zdE1vdW50V3JhcHBlcihlKX1mdW5jdGlvbiBsKCl7ai50cmFjayh0
aGlzKX1mdW5jdGlvbiBwKCl7dmFyIGU9dGhpcztlLl9yb290Tm9kZUlEP3ZvaWQgMDptKCI2MyIp
O3ZhciB0PUYoZSk7c3dpdGNoKHQ/dm9pZCAwOm0oIjY0IiksZS5fdGFnKXtjYXNlImlmcmFtZSI6
Y2FzZSJvYmplY3QiOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W3gudHJhcEJ1YmJsZWRFdmVu
dCgidG9wTG9hZCIsImxvYWQiLHQpXTticmVhaztjYXNlInZpZGVvIjpjYXNlImF1ZGlvIjplLl93
cmFwcGVyU3RhdGUubGlzdGVuZXJzPVtdO2Zvcih2YXIgbiBpbiB6KXouaGFzT3duUHJvcGVydHko
bikmJmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMucHVzaCh4LnRyYXBCdWJibGVkRXZlbnQobix6
W25dLHQpKTticmVhaztjYXNlInNvdXJjZSI6ZS5fd3JhcHBlclN0YXRlLmxpc3RlbmVycz1beC50
cmFwQnViYmxlZEV2ZW50KCJ0b3BFcnJvciIsImVycm9yIix0KV07YnJlYWs7Y2FzZSJpbWciOmUu
X3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W3gudHJhcEJ1YmJsZWRFdmVudCgidG9wRXJyb3IiLCJl
cnJvciIsdCkseC50cmFwQnViYmxlZEV2ZW50KCJ0b3BMb2FkIiwibG9hZCIsdCldO2JyZWFrO2Nh
c2UiZm9ybSI6ZS5fd3JhcHBlclN0YXRlLmxpc3RlbmVycz1beC50cmFwQnViYmxlZEV2ZW50KCJ0
b3BSZXNldCIsInJlc2V0Iix0KSx4LnRyYXBCdWJibGVkRXZlbnQoInRvcFN1Ym1pdCIsInN1Ym1p
dCIsdCldO2JyZWFrO2Nhc2UiaW5wdXQiOmNhc2Uic2VsZWN0IjpjYXNlInRleHRhcmVhIjplLl93
cmFwcGVyU3RhdGUubGlzdGVuZXJzPVt4LnRyYXBCdWJibGVkRXZlbnQoInRvcEludmFsaWQiLCJp
bnZhbGlkIix0KV19fWZ1bmN0aW9uIGQoKXtOLnBvc3RVcGRhdGVXcmFwcGVyKHRoaXMpfWZ1bmN0
aW9uIGYoZSl7Si5jYWxsKFosZSl8fCgkLnRlc3QoZSk/dm9pZCAwOm0oIjY1IixlKSxaW2VdPSEw
KX1mdW5jdGlvbiBoKGUsdCl7cmV0dXJuIGUuaW5kZXhPZigiLSIpPj0wfHxudWxsIT10LmlzfWZ1
bmN0aW9uIHYoZSl7dmFyIHQ9ZS50eXBlO2YodCksdGhpcy5fY3VycmVudEVsZW1lbnQ9ZSx0aGlz
Ll90YWc9dC50b0xvd2VyQ2FzZSgpLHRoaXMuX25hbWVzcGFjZVVSST1udWxsLHRoaXMuX3JlbmRl
cmVkQ2hpbGRyZW49bnVsbCx0aGlzLl9wcmV2aW91c1N0eWxlPW51bGwsdGhpcy5fcHJldmlvdXNT
dHlsZUNvcHk9bnVsbCx0aGlzLl9ob3N0Tm9kZT1udWxsLHRoaXMuX2hvc3RQYXJlbnQ9bnVsbCx0
aGlzLl9yb290Tm9kZUlEPTAsdGhpcy5fZG9tSUQ9MCx0aGlzLl9ob3N0Q29udGFpbmVySW5mbz1u
dWxsLHRoaXMuX3dyYXBwZXJTdGF0ZT1udWxsLHRoaXMuX3RvcExldmVsV3JhcHBlcj1udWxsLHRo
aXMuX2ZsYWdzPTB9dmFyIG09bigzKSx5PW4oNCksZz1uKDEyNSksYj1uKDEyNyksXz1uKDE0KSxD
PW4oMzUpLEU9bigxNSksdz1uKDYwKSxUPW4oMTkpLFA9bigzNikseD1uKDI1KSxPPW4oNjEpLFM9
big1KSxrPW4oMTQzKSxNPW4oMTQ0KSxOPW4oNjIpLEk9bigxNDcpLFI9KG4oOCksbigxNTYpKSxB
PW4oMTYxKSxEPShuKDcpLG4oMjgpKSxqPShuKDEpLG4oNDcpLG4oMzIpLG4oNzQpKSxMPShuKDQ5
KSxuKDIpLE8pLFU9VC5kZWxldGVMaXN0ZW5lcixGPVMuZ2V0Tm9kZUZyb21JbnN0YW5jZSxCPXgu
bGlzdGVuVG8sVj1QLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzLFc9e3N0cmluZzohMCxudW1iZXI6
ITB9LEg9InN0eWxlIixxPSJfX2h0bWwiLEs9e2NoaWxkcmVuOm51bGwsZGFuZ2Vyb3VzbHlTZXRJ
bm5lckhUTUw6bnVsbCxzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmc6bnVsbH0sWT0xMSx6
PXt0b3BBYm9ydDoiYWJvcnQiLHRvcENhblBsYXk6ImNhbnBsYXkiLHRvcENhblBsYXlUaHJvdWdo
OiJjYW5wbGF5dGhyb3VnaCIsdG9wRHVyYXRpb25DaGFuZ2U6ImR1cmF0aW9uY2hhbmdlIix0b3BF
bXB0aWVkOiJlbXB0aWVkIix0b3BFbmNyeXB0ZWQ6ImVuY3J5cHRlZCIsdG9wRW5kZWQ6ImVuZGVk
Iix0b3BFcnJvcjoiZXJyb3IiLHRvcExvYWRlZERhdGE6ImxvYWRlZGRhdGEiLHRvcExvYWRlZE1l
dGFkYXRhOiJsb2FkZWRtZXRhZGF0YSIsdG9wTG9hZFN0YXJ0OiJsb2Fkc3RhcnQiLHRvcFBhdXNl
OiJwYXVzZSIsdG9wUGxheToicGxheSIsdG9wUGxheWluZzoicGxheWluZyIsdG9wUHJvZ3Jlc3M6
InByb2dyZXNzIix0b3BSYXRlQ2hhbmdlOiJyYXRlY2hhbmdlIix0b3BTZWVrZWQ6InNlZWtlZCIs
dG9wU2Vla2luZzoic2Vla2luZyIsdG9wU3RhbGxlZDoic3RhbGxlZCIsdG9wU3VzcGVuZDoic3Vz
cGVuZCIsdG9wVGltZVVwZGF0ZToidGltZXVwZGF0ZSIsdG9wVm9sdW1lQ2hhbmdlOiJ2b2x1bWVj
aGFuZ2UiLHRvcFdhaXRpbmc6IndhaXRpbmcifSxYPXthcmVhOiEwLGJhc2U6ITAsYnI6ITAsY29s
OiEwLGVtYmVkOiEwLGhyOiEwLGltZzohMCxpbnB1dDohMCxrZXlnZW46ITAsbGluazohMCxtZXRh
OiEwLHBhcmFtOiEwLHNvdXJjZTohMCx0cmFjazohMCx3YnI6ITB9LEc9e2xpc3Rpbmc6ITAscHJl
OiEwLHRleHRhcmVhOiEwfSxRPXkoe21lbnVpdGVtOiEwfSxYKSwkPS9eW2EtekEtWl1bYS16QS1a
Ol9cLlwtXGRdKiQvLFo9e30sSj17fS5oYXNPd25Qcm9wZXJ0eSxlZT0xO3YuZGlzcGxheU5hbWU9
IlJlYWN0RE9NQ29tcG9uZW50Iix2Lk1peGluPXttb3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQs
bixyKXt0aGlzLl9yb290Tm9kZUlEPWVlKyssdGhpcy5fZG9tSUQ9bi5faWRDb3VudGVyKyssdGhp
cy5faG9zdFBhcmVudD10LHRoaXMuX2hvc3RDb250YWluZXJJbmZvPW47dmFyIGk9dGhpcy5fY3Vy
cmVudEVsZW1lbnQucHJvcHM7c3dpdGNoKHRoaXMuX3RhZyl7Y2FzZSJhdWRpbyI6Y2FzZSJmb3Jt
IjpjYXNlImlmcmFtZSI6Y2FzZSJpbWciOmNhc2UibGluayI6Y2FzZSJvYmplY3QiOmNhc2Uic291
cmNlIjpjYXNlInZpZGVvIjp0aGlzLl93cmFwcGVyU3RhdGU9e2xpc3RlbmVyczpudWxsfSxlLmdl
dFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocCx0aGlzKTticmVhaztjYXNlImlucHV0IjprLm1v
dW50V3JhcHBlcih0aGlzLGksdCksaT1rLmdldEhvc3RQcm9wcyh0aGlzLGkpLGUuZ2V0UmVhY3RN
b3VudFJlYWR5KCkuZW5xdWV1ZShsLHRoaXMpLGUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1
ZShwLHRoaXMpO2JyZWFrO2Nhc2Uib3B0aW9uIjpNLm1vdW50V3JhcHBlcih0aGlzLGksdCksaT1N
LmdldEhvc3RQcm9wcyh0aGlzLGkpO2JyZWFrO2Nhc2Uic2VsZWN0IjpOLm1vdW50V3JhcHBlcih0
aGlzLGksdCksaT1OLmdldEhvc3RQcm9wcyh0aGlzLGkpLGUuZ2V0UmVhY3RNb3VudFJlYWR5KCku
ZW5xdWV1ZShwLHRoaXMpO2JyZWFrO2Nhc2UidGV4dGFyZWEiOkkubW91bnRXcmFwcGVyKHRoaXMs
aSx0KSxpPUkuZ2V0SG9zdFByb3BzKHRoaXMsaSksZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1
ZXVlKGwsdGhpcyksZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHAsdGhpcyl9byh0aGlz
LGkpO3ZhciBhLGQ7bnVsbCE9dD8oYT10Ll9uYW1lc3BhY2VVUkksZD10Ll90YWcpOm4uX3RhZyYm
KGE9bi5fbmFtZXNwYWNlVVJJLGQ9bi5fdGFnKSwobnVsbD09YXx8YT09PUMuc3ZnJiYiZm9yZWln
bm9iamVjdCI9PT1kKSYmKGE9Qy5odG1sKSxhPT09Qy5odG1sJiYoInN2ZyI9PT10aGlzLl90YWc/
YT1DLnN2ZzoibWF0aCI9PT10aGlzLl90YWcmJihhPUMubWF0aG1sKSksdGhpcy5fbmFtZXNwYWNl
VVJJPWE7dmFyIGY7aWYoZS51c2VDcmVhdGVFbGVtZW50KXt2YXIgaCx2PW4uX293bmVyRG9jdW1l
bnQ7aWYoYT09PUMuaHRtbClpZigic2NyaXB0Ij09PXRoaXMuX3RhZyl7dmFyIG09di5jcmVhdGVF
bGVtZW50KCJkaXYiKSx5PXRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7bS5pbm5lckhUTUw9Ijwi
K3krIj48LyIreSsiPiIsaD1tLnJlbW92ZUNoaWxkKG0uZmlyc3RDaGlsZCl9ZWxzZSBoPWkuaXM/
di5jcmVhdGVFbGVtZW50KHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUsaS5pcyk6di5jcmVhdGVF
bGVtZW50KHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUpO2Vsc2UgaD12LmNyZWF0ZUVsZW1lbnRO
UyhhLHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUpO1MucHJlY2FjaGVOb2RlKHRoaXMsaCksdGhp
cy5fZmxhZ3N8PUwuaGFzQ2FjaGVkQ2hpbGROb2Rlcyx0aGlzLl9ob3N0UGFyZW50fHx3LnNldEF0
dHJpYnV0ZUZvclJvb3QoaCksdGhpcy5fdXBkYXRlRE9NUHJvcGVydGllcyhudWxsLGksZSk7dmFy
IGI9XyhoKTt0aGlzLl9jcmVhdGVJbml0aWFsQ2hpbGRyZW4oZSxpLHIsYiksZj1ifWVsc2V7dmFy
IEU9dGhpcy5fY3JlYXRlT3BlblRhZ01hcmt1cEFuZFB1dExpc3RlbmVycyhlLGkpLFQ9dGhpcy5f
Y3JlYXRlQ29udGVudE1hcmt1cChlLGkscik7Zj0hVCYmWFt0aGlzLl90YWddP0UrIi8+IjpFKyI+
IitUKyI8LyIrdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSsiPiJ9c3dpdGNoKHRoaXMuX3RhZyl7
Y2FzZSJpbnB1dCI6ZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHUsdGhpcyksaS5hdXRv
Rm9jdXMmJmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShnLmZvY3VzRE9NQ29tcG9uZW50
LHRoaXMpO2JyZWFrO2Nhc2UidGV4dGFyZWEiOmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1
ZShzLHRoaXMpLGkuYXV0b0ZvY3VzJiZlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoZy5m
b2N1c0RPTUNvbXBvbmVudCx0aGlzKTticmVhaztjYXNlInNlbGVjdCI6aS5hdXRvRm9jdXMmJmUu
Z2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShnLmZvY3VzRE9NQ29tcG9uZW50LHRoaXMpO2Jy
ZWFrO2Nhc2UiYnV0dG9uIjppLmF1dG9Gb2N1cyYmZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1
ZXVlKGcuZm9jdXNET01Db21wb25lbnQsdGhpcyk7YnJlYWs7Y2FzZSJvcHRpb24iOmUuZ2V0UmVh
Y3RNb3VudFJlYWR5KCkuZW5xdWV1ZShjLHRoaXMpfXJldHVybiBmfSxfY3JlYXRlT3BlblRhZ01h
cmt1cEFuZFB1dExpc3RlbmVyczpmdW5jdGlvbihlLHQpe3ZhciBuPSI8Iit0aGlzLl9jdXJyZW50
RWxlbWVudC50eXBlO2Zvcih2YXIgciBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkocikpe3ZhciBv
PXRbcl07aWYobnVsbCE9bylpZihWLmhhc093blByb3BlcnR5KHIpKW8mJmkodGhpcyxyLG8sZSk7
ZWxzZXtyPT09SCYmKG8mJihvPXRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5PXkoe30sdC5zdHlsZSkp
LG89Yi5jcmVhdGVNYXJrdXBGb3JTdHlsZXMobyx0aGlzKSk7dmFyIGE9bnVsbDtudWxsIT10aGlz
Ll90YWcmJmgodGhpcy5fdGFnLHQpP0suaGFzT3duUHJvcGVydHkocil8fChhPXcuY3JlYXRlTWFy
a3VwRm9yQ3VzdG9tQXR0cmlidXRlKHIsbykpOmE9dy5jcmVhdGVNYXJrdXBGb3JQcm9wZXJ0eShy
LG8pLGEmJihuKz0iICIrYSl9fXJldHVybiBlLnJlbmRlclRvU3RhdGljTWFya3VwP246KHRoaXMu
X2hvc3RQYXJlbnR8fChuKz0iICIrdy5jcmVhdGVNYXJrdXBGb3JSb290KCkpLG4rPSIgIit3LmNy
ZWF0ZU1hcmt1cEZvcklEKHRoaXMuX2RvbUlEKSl9LF9jcmVhdGVDb250ZW50TWFya3VwOmZ1bmN0
aW9uKGUsdCxuKXt2YXIgcj0iIixvPXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw7aWYobnVsbCE9
byludWxsIT1vLl9faHRtbCYmKHI9by5fX2h0bWwpO2Vsc2V7dmFyIGk9V1t0eXBlb2YgdC5jaGls
ZHJlbl0/dC5jaGlsZHJlbjpudWxsLGE9bnVsbCE9aT9udWxsOnQuY2hpbGRyZW47aWYobnVsbCE9
aSlyPUQoaSk7ZWxzZSBpZihudWxsIT1hKXt2YXIgdT10aGlzLm1vdW50Q2hpbGRyZW4oYSxlLG4p
O3I9dS5qb2luKCIiKX19cmV0dXJuIEdbdGhpcy5fdGFnXSYmIlxuIj09PXIuY2hhckF0KDApPyJc
biIrcjpyfSxfY3JlYXRlSW5pdGlhbENoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXQu
ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw7aWYobnVsbCE9byludWxsIT1vLl9faHRtbCYmXy5xdWV1
ZUhUTUwocixvLl9faHRtbCk7ZWxzZXt2YXIgaT1XW3R5cGVvZiB0LmNoaWxkcmVuXT90LmNoaWxk
cmVuOm51bGwsYT1udWxsIT1pP251bGw6dC5jaGlsZHJlbjtpZihudWxsIT1pKSIiIT09aSYmXy5x
dWV1ZVRleHQocixpKTtlbHNlIGlmKG51bGwhPWEpZm9yKHZhciB1PXRoaXMubW91bnRDaGlsZHJl
bihhLGUsbikscz0wO3M8dS5sZW5ndGg7cysrKV8ucXVldWVDaGlsZChyLHVbc10pfX0scmVjZWl2
ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5fY3VycmVudEVsZW1lbnQ7dGhp
cy5fY3VycmVudEVsZW1lbnQ9ZSx0aGlzLnVwZGF0ZUNvbXBvbmVudCh0LHIsZSxuKX0sdXBkYXRl
Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXQucHJvcHMsYT10aGlzLl9jdXJyZW50
RWxlbWVudC5wcm9wcztzd2l0Y2godGhpcy5fdGFnKXtjYXNlImlucHV0IjppPWsuZ2V0SG9zdFBy
b3BzKHRoaXMsaSksYT1rLmdldEhvc3RQcm9wcyh0aGlzLGEpO2JyZWFrO2Nhc2Uib3B0aW9uIjpp
PU0uZ2V0SG9zdFByb3BzKHRoaXMsaSksYT1NLmdldEhvc3RQcm9wcyh0aGlzLGEpO2JyZWFrO2Nh
c2Uic2VsZWN0IjppPU4uZ2V0SG9zdFByb3BzKHRoaXMsaSksYT1OLmdldEhvc3RQcm9wcyh0aGlz
LGEpO2JyZWFrO2Nhc2UidGV4dGFyZWEiOmk9SS5nZXRIb3N0UHJvcHModGhpcyxpKSxhPUkuZ2V0
SG9zdFByb3BzKHRoaXMsYSl9c3dpdGNoKG8odGhpcyxhKSx0aGlzLl91cGRhdGVET01Qcm9wZXJ0
aWVzKGksYSxlKSx0aGlzLl91cGRhdGVET01DaGlsZHJlbihpLGEsZSxyKSx0aGlzLl90YWcpe2Nh
c2UiaW5wdXQiOmsudXBkYXRlV3JhcHBlcih0aGlzKTticmVhaztjYXNlInRleHRhcmVhIjpJLnVw
ZGF0ZVdyYXBwZXIodGhpcyk7YnJlYWs7Y2FzZSJzZWxlY3QiOmUuZ2V0UmVhY3RNb3VudFJlYWR5
KCkuZW5xdWV1ZShkLHRoaXMpfX0sX3VwZGF0ZURPTVByb3BlcnRpZXM6ZnVuY3Rpb24oZSx0LG4p
e3ZhciByLG8sYTtmb3IociBpbiBlKWlmKCF0Lmhhc093blByb3BlcnR5KHIpJiZlLmhhc093blBy
b3BlcnR5KHIpJiZudWxsIT1lW3JdKWlmKHI9PT1IKXt2YXIgdT10aGlzLl9wcmV2aW91c1N0eWxl
Q29weTtmb3IobyBpbiB1KXUuaGFzT3duUHJvcGVydHkobykmJihhPWF8fHt9LGFbb109IiIpO3Ro
aXMuX3ByZXZpb3VzU3R5bGVDb3B5PW51bGx9ZWxzZSBWLmhhc093blByb3BlcnR5KHIpP2Vbcl0m
JlUodGhpcyxyKTpoKHRoaXMuX3RhZyxlKT9LLmhhc093blByb3BlcnR5KHIpfHx3LmRlbGV0ZVZh
bHVlRm9yQXR0cmlidXRlKEYodGhpcykscik6KEUucHJvcGVydGllc1tyXXx8RS5pc0N1c3RvbUF0
dHJpYnV0ZShyKSkmJncuZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eShGKHRoaXMpLHIpO2ZvcihyIGlu
IHQpe3ZhciBzPXRbcl0sYz1yPT09SD90aGlzLl9wcmV2aW91c1N0eWxlQ29weTpudWxsIT1lP2Vb
cl06dm9pZCAwO2lmKHQuaGFzT3duUHJvcGVydHkocikmJnMhPT1jJiYobnVsbCE9c3x8bnVsbCE9
YykpaWYocj09PUgpaWYocz9zPXRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5PXkoe30scyk6dGhpcy5f
cHJldmlvdXNTdHlsZUNvcHk9bnVsbCxjKXtmb3IobyBpbiBjKSFjLmhhc093blByb3BlcnR5KG8p
fHxzJiZzLmhhc093blByb3BlcnR5KG8pfHwoYT1hfHx7fSxhW29dPSIiKTtmb3IobyBpbiBzKXMu
aGFzT3duUHJvcGVydHkobykmJmNbb10hPT1zW29dJiYoYT1hfHx7fSxhW29dPXNbb10pfWVsc2Ug
YT1zO2Vsc2UgaWYoVi5oYXNPd25Qcm9wZXJ0eShyKSlzP2kodGhpcyxyLHMsbik6YyYmVSh0aGlz
LHIpO2Vsc2UgaWYoaCh0aGlzLl90YWcsdCkpSy5oYXNPd25Qcm9wZXJ0eShyKXx8dy5zZXRWYWx1
ZUZvckF0dHJpYnV0ZShGKHRoaXMpLHIscyk7ZWxzZSBpZihFLnByb3BlcnRpZXNbcl18fEUuaXND
dXN0b21BdHRyaWJ1dGUocikpe3ZhciBsPUYodGhpcyk7bnVsbCE9cz93LnNldFZhbHVlRm9yUHJv
cGVydHkobCxyLHMpOncuZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eShsLHIpfX1hJiZiLnNldFZhbHVl
Rm9yU3R5bGVzKEYodGhpcyksYSx0aGlzKX0sX3VwZGF0ZURPTUNoaWxkcmVuOmZ1bmN0aW9uKGUs
dCxuLHIpe3ZhciBvPVdbdHlwZW9mIGUuY2hpbGRyZW5dP2UuY2hpbGRyZW46bnVsbCxpPVdbdHlw
ZW9mIHQuY2hpbGRyZW5dP3QuY2hpbGRyZW46bnVsbCxhPWUuZGFuZ2Vyb3VzbHlTZXRJbm5lckhU
TUwmJmUuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sLHU9dC5kYW5nZXJvdXNseVNldElu
bmVySFRNTCYmdC5kYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWwscz1udWxsIT1vP251bGw6
ZS5jaGlsZHJlbixjPW51bGwhPWk/bnVsbDp0LmNoaWxkcmVuLGw9bnVsbCE9b3x8bnVsbCE9YSxw
PW51bGwhPWl8fG51bGwhPXU7bnVsbCE9cyYmbnVsbD09Yz90aGlzLnVwZGF0ZUNoaWxkcmVuKG51
bGwsbixyKTpsJiYhcCYmdGhpcy51cGRhdGVUZXh0Q29udGVudCgiIiksbnVsbCE9aT9vIT09aSYm
dGhpcy51cGRhdGVUZXh0Q29udGVudCgiIitpKTpudWxsIT11P2EhPT11JiZ0aGlzLnVwZGF0ZU1h
cmt1cCgiIit1KTpudWxsIT1jJiZ0aGlzLnVwZGF0ZUNoaWxkcmVuKGMsbixyKX0sZ2V0SG9zdE5v
ZGU6ZnVuY3Rpb24oKXtyZXR1cm4gRih0aGlzKX0sdW5tb3VudENvbXBvbmVudDpmdW5jdGlvbihl
KXtzd2l0Y2godGhpcy5fdGFnKXtjYXNlImF1ZGlvIjpjYXNlImZvcm0iOmNhc2UiaWZyYW1lIjpj
YXNlImltZyI6Y2FzZSJsaW5rIjpjYXNlIm9iamVjdCI6Y2FzZSJzb3VyY2UiOmNhc2UidmlkZW8i
OnZhciB0PXRoaXMuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM7aWYodClmb3IodmFyIG49MDtuPHQu
bGVuZ3RoO24rKyl0W25dLnJlbW92ZSgpO2JyZWFrO2Nhc2UiaW5wdXQiOmNhc2UidGV4dGFyZWEi
Omouc3RvcFRyYWNraW5nKHRoaXMpO2JyZWFrO2Nhc2UiaHRtbCI6Y2FzZSJoZWFkIjpjYXNlImJv
ZHkiOm0oIjY2Iix0aGlzLl90YWcpfXRoaXMudW5tb3VudENoaWxkcmVuKGUpLFMudW5jYWNoZU5v
ZGUodGhpcyksVC5kZWxldGVBbGxMaXN0ZW5lcnModGhpcyksdGhpcy5fcm9vdE5vZGVJRD0wLHRo
aXMuX2RvbUlEPTAsdGhpcy5fd3JhcHBlclN0YXRlPW51bGx9LGdldFB1YmxpY0luc3RhbmNlOmZ1
bmN0aW9uKCl7cmV0dXJuIEYodGhpcyl9fSx5KHYucHJvdG90eXBlLHYuTWl4aW4sUi5NaXhpbiks
ZS5leHBvcnRzPXZ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQp
e3ZhciBuPXtfdG9wTGV2ZWxXcmFwcGVyOmUsX2lkQ291bnRlcjoxLF9vd25lckRvY3VtZW50OnQ/
dC5ub2RlVHlwZT09PW8/dDp0Lm93bmVyRG9jdW1lbnQ6bnVsbCxfbm9kZTp0LF90YWc6dD90Lm5v
ZGVOYW1lLnRvTG93ZXJDYXNlKCk6bnVsbCxfbmFtZXNwYWNlVVJJOnQ/dC5uYW1lc3BhY2VVUkk6
bnVsbH07cmV0dXJuIG59dmFyIG89KG4oNDkpLDkpO2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO3ZhciByPW4oNCksbz1uKDE0KSxpPW4oNSksYT1mdW5jdGlvbihlKXt0
aGlzLl9jdXJyZW50RWxlbWVudD1udWxsLHRoaXMuX2hvc3ROb2RlPW51bGwsdGhpcy5faG9zdFBh
cmVudD1udWxsLHRoaXMuX2hvc3RDb250YWluZXJJbmZvPW51bGwsdGhpcy5fZG9tSUQ9MH07cihh
LnByb3RvdHlwZSx7bW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGE9bi5faWRD
b3VudGVyKys7dGhpcy5fZG9tSUQ9YSx0aGlzLl9ob3N0UGFyZW50PXQsdGhpcy5faG9zdENvbnRh
aW5lckluZm89bjt2YXIgdT0iIHJlYWN0LWVtcHR5OiAiK3RoaXMuX2RvbUlEKyIgIjtpZihlLnVz
ZUNyZWF0ZUVsZW1lbnQpe3ZhciBzPW4uX293bmVyRG9jdW1lbnQsYz1zLmNyZWF0ZUNvbW1lbnQo
dSk7cmV0dXJuIGkucHJlY2FjaGVOb2RlKHRoaXMsYyksbyhjKX1yZXR1cm4gZS5yZW5kZXJUb1N0
YXRpY01hcmt1cD8iIjoiPCEtLSIrdSsiLS0+In0scmVjZWl2ZUNvbXBvbmVudDpmdW5jdGlvbigp
e30sZ2V0SG9zdE5vZGU6ZnVuY3Rpb24oKXtyZXR1cm4gaS5nZXROb2RlRnJvbUluc3RhbmNlKHRo
aXMpfSx1bm1vdW50Q29tcG9uZW50OmZ1bmN0aW9uKCl7aS51bmNhY2hlTm9kZSh0aGlzKX19KSxl
LmV4cG9ydHM9YX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49e3VzZUNyZWF0ZUVs
ZW1lbnQ6ITAsdXNlRmliZXI6ITF9O2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO3ZhciByPW4oMzQpLG89big1KSxpPXtkYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJlblVw
ZGF0ZXM6ZnVuY3Rpb24oZSx0KXt2YXIgbj1vLmdldE5vZGVGcm9tSW5zdGFuY2UoZSk7ci5wcm9j
ZXNzVXBkYXRlcyhuLHQpfX07ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcigpe3RoaXMuX3Jvb3ROb2RlSUQmJmQudXBkYXRlV3JhcHBlcih0aGlzKX1m
dW5jdGlvbiBvKGUpe3ZhciB0PSJjaGVja2JveCI9PT1lLnR5cGV8fCJyYWRpbyI9PT1lLnR5cGU7
cmV0dXJuIHQ/bnVsbCE9ZS5jaGVja2VkOm51bGwhPWUudmFsdWV9ZnVuY3Rpb24gaShlKXt2YXIg
dD10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcyxuPWMuZXhlY3V0ZU9uQ2hhbmdlKHQsZSk7cC5h
c2FwKHIsdGhpcyk7dmFyIG89dC5uYW1lO2lmKCJyYWRpbyI9PT10LnR5cGUmJm51bGwhPW8pe2Zv
cih2YXIgaT1sLmdldE5vZGVGcm9tSW5zdGFuY2UodGhpcyksdT1pO3UucGFyZW50Tm9kZTspdT11
LnBhcmVudE5vZGU7Zm9yKHZhciBzPXUucXVlcnlTZWxlY3RvckFsbCgiaW5wdXRbbmFtZT0iK0pT
T04uc3RyaW5naWZ5KCIiK28pKyddW3R5cGU9InJhZGlvIl0nKSxkPTA7ZDxzLmxlbmd0aDtkKysp
e3ZhciBmPXNbZF07aWYoZiE9PWkmJmYuZm9ybT09PWkuZm9ybSl7dmFyIGg9bC5nZXRJbnN0YW5j
ZUZyb21Ob2RlKGYpO2g/dm9pZCAwOmEoIjkwIikscC5hc2FwKHIsaCl9fX1yZXR1cm4gbn12YXIg
YT1uKDMpLHU9big0KSxzPW4oNjApLGM9bigzOSksbD1uKDUpLHA9big5KSxkPShuKDEpLG4oMiks
e2dldEhvc3RQcm9wczpmdW5jdGlvbihlLHQpe3ZhciBuPWMuZ2V0VmFsdWUodCkscj1jLmdldENo
ZWNrZWQodCksbz11KHt0eXBlOnZvaWQgMCxzdGVwOnZvaWQgMCxtaW46dm9pZCAwLG1heDp2b2lk
IDB9LHQse2RlZmF1bHRDaGVja2VkOnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLHZhbHVlOm51
bGwhPW4/bjplLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlLGNoZWNrZWQ6bnVsbCE9cj9yOmUu
X3dyYXBwZXJTdGF0ZS5pbml0aWFsQ2hlY2tlZCxvbkNoYW5nZTplLl93cmFwcGVyU3RhdGUub25D
aGFuZ2V9KTtyZXR1cm4gb30sbW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5kZWZh
dWx0VmFsdWU7ZS5fd3JhcHBlclN0YXRlPXtpbml0aWFsQ2hlY2tlZDpudWxsIT10LmNoZWNrZWQ/
dC5jaGVja2VkOnQuZGVmYXVsdENoZWNrZWQsaW5pdGlhbFZhbHVlOm51bGwhPXQudmFsdWU/dC52
YWx1ZTpuLGxpc3RlbmVyczpudWxsLG9uQ2hhbmdlOmkuYmluZChlKSxjb250cm9sbGVkOm8odCl9
fSx1cGRhdGVXcmFwcGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50LnByb3Bz
LG49dC5jaGVja2VkO251bGwhPW4mJnMuc2V0VmFsdWVGb3JQcm9wZXJ0eShsLmdldE5vZGVGcm9t
SW5zdGFuY2UoZSksImNoZWNrZWQiLG58fCExKTt2YXIgcj1sLmdldE5vZGVGcm9tSW5zdGFuY2Uo
ZSksbz1jLmdldFZhbHVlKHQpO2lmKG51bGwhPW8paWYoMD09PW8mJiIiPT09ci52YWx1ZSlyLnZh
bHVlPSIwIjtlbHNlIGlmKCJudW1iZXIiPT09dC50eXBlKXt2YXIgaT1wYXJzZUZsb2F0KHIudmFs
dWUsMTApfHwwOyhvIT1pfHxvPT1pJiZyLnZhbHVlIT1vKSYmKHIudmFsdWU9IiIrbyl9ZWxzZSBy
LnZhbHVlIT09IiIrbyYmKHIudmFsdWU9IiIrbyk7ZWxzZSBudWxsPT10LnZhbHVlJiZudWxsIT10
LmRlZmF1bHRWYWx1ZSYmci5kZWZhdWx0VmFsdWUhPT0iIit0LmRlZmF1bHRWYWx1ZSYmKHIuZGVm
YXVsdFZhbHVlPSIiK3QuZGVmYXVsdFZhbHVlKSxudWxsPT10LmNoZWNrZWQmJm51bGwhPXQuZGVm
YXVsdENoZWNrZWQmJihyLmRlZmF1bHRDaGVja2VkPSEhdC5kZWZhdWx0Q2hlY2tlZCl9LHBvc3RN
b3VudFdyYXBwZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5fY3VycmVudEVsZW1lbnQucHJvcHMsbj1s
LmdldE5vZGVGcm9tSW5zdGFuY2UoZSk7c3dpdGNoKHQudHlwZSl7Y2FzZSJzdWJtaXQiOmNhc2Ui
cmVzZXQiOmJyZWFrO2Nhc2UiY29sb3IiOmNhc2UiZGF0ZSI6Y2FzZSJkYXRldGltZSI6Y2FzZSJk
YXRldGltZS1sb2NhbCI6Y2FzZSJtb250aCI6Y2FzZSJ0aW1lIjpjYXNlIndlZWsiOm4udmFsdWU9
IiIsbi52YWx1ZT1uLmRlZmF1bHRWYWx1ZTticmVhaztkZWZhdWx0Om4udmFsdWU9bi52YWx1ZX12
YXIgcj1uLm5hbWU7IiIhPT1yJiYobi5uYW1lPSIiKSxuLmRlZmF1bHRDaGVja2VkPSFuLmRlZmF1
bHRDaGVja2VkLG4uZGVmYXVsdENoZWNrZWQ9IW4uZGVmYXVsdENoZWNrZWQsIiIhPT1yJiYobi5u
YW1lPXIpfX0pO2UuZXhwb3J0cz1kfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSl7dmFyIHQ9IiI7cmV0dXJuIGkuQ2hpbGRyZW4uZm9yRWFjaChlLGZ1bmN0aW9uKGUp
e251bGwhPWUmJigic3RyaW5nIj09dHlwZW9mIGV8fCJudW1iZXIiPT10eXBlb2YgZT90Kz1lOnN8
fChzPSEwKSl9KSx0fXZhciBvPW4oNCksaT1uKDE3KSxhPW4oNSksdT1uKDYyKSxzPShuKDIpLCEx
KSxjPXttb3VudFdyYXBwZXI6ZnVuY3Rpb24oZSx0LG4pe3ZhciBvPW51bGw7aWYobnVsbCE9bil7
dmFyIGk9bjsib3B0Z3JvdXAiPT09aS5fdGFnJiYoaT1pLl9ob3N0UGFyZW50KSxudWxsIT1pJiYi
c2VsZWN0Ij09PWkuX3RhZyYmKG89dS5nZXRTZWxlY3RWYWx1ZUNvbnRleHQoaSkpfXZhciBhPW51
bGw7aWYobnVsbCE9byl7dmFyIHM7aWYocz1udWxsIT10LnZhbHVlP3QudmFsdWUrIiI6cih0LmNo
aWxkcmVuKSxhPSExLEFycmF5LmlzQXJyYXkobykpe2Zvcih2YXIgYz0wO2M8by5sZW5ndGg7Yysr
KWlmKCIiK29bY109PT1zKXthPSEwO2JyZWFrfX1lbHNlIGE9IiIrbz09PXN9ZS5fd3JhcHBlclN0
YXRlPXtzZWxlY3RlZDphfX0scG9zdE1vdW50V3JhcHBlcjpmdW5jdGlvbihlKXt2YXIgdD1lLl9j
dXJyZW50RWxlbWVudC5wcm9wcztpZihudWxsIT10LnZhbHVlKXt2YXIgbj1hLmdldE5vZGVGcm9t
SW5zdGFuY2UoZSk7bi5zZXRBdHRyaWJ1dGUoInZhbHVlIix0LnZhbHVlKX19LGdldEhvc3RQcm9w
czpmdW5jdGlvbihlLHQpe3ZhciBuPW8oe3NlbGVjdGVkOnZvaWQgMCxjaGlsZHJlbjp2b2lkIDB9
LHQpO251bGwhPWUuX3dyYXBwZXJTdGF0ZS5zZWxlY3RlZCYmKG4uc2VsZWN0ZWQ9ZS5fd3JhcHBl
clN0YXRlLnNlbGVjdGVkKTt2YXIgaT1yKHQuY2hpbGRyZW4pO3JldHVybiBpJiYobi5jaGlsZHJl
bj1pKSxufX07ZS5leHBvcnRzPWN9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlLHQsbixyKXtyZXR1cm4gZT09PW4mJnQ9PT1yfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9ZG9j
dW1lbnQuc2VsZWN0aW9uLG49dC5jcmVhdGVSYW5nZSgpLHI9bi50ZXh0Lmxlbmd0aCxvPW4uZHVw
bGljYXRlKCk7by5tb3ZlVG9FbGVtZW50VGV4dChlKSxvLnNldEVuZFBvaW50KCJFbmRUb1N0YXJ0
IixuKTt2YXIgaT1vLnRleHQubGVuZ3RoLGE9aStyO3JldHVybntzdGFydDppLGVuZDphfX1mdW5j
dGlvbiBpKGUpe3ZhciB0PXdpbmRvdy5nZXRTZWxlY3Rpb24mJndpbmRvdy5nZXRTZWxlY3Rpb24o
KTtpZighdHx8MD09PXQucmFuZ2VDb3VudClyZXR1cm4gbnVsbDt2YXIgbj10LmFuY2hvck5vZGUs
bz10LmFuY2hvck9mZnNldCxpPXQuZm9jdXNOb2RlLGE9dC5mb2N1c09mZnNldCx1PXQuZ2V0UmFu
Z2VBdCgwKTt0cnl7dS5zdGFydENvbnRhaW5lci5ub2RlVHlwZSx1LmVuZENvbnRhaW5lci5ub2Rl
VHlwZX1jYXRjaChzKXtyZXR1cm4gbnVsbH12YXIgYz1yKHQuYW5jaG9yTm9kZSx0LmFuY2hvck9m
ZnNldCx0LmZvY3VzTm9kZSx0LmZvY3VzT2Zmc2V0KSxsPWM/MDp1LnRvU3RyaW5nKCkubGVuZ3Ro
LHA9dS5jbG9uZVJhbmdlKCk7cC5zZWxlY3ROb2RlQ29udGVudHMoZSkscC5zZXRFbmQodS5zdGFy
dENvbnRhaW5lcix1LnN0YXJ0T2Zmc2V0KTt2YXIgZD1yKHAuc3RhcnRDb250YWluZXIscC5zdGFy
dE9mZnNldCxwLmVuZENvbnRhaW5lcixwLmVuZE9mZnNldCksZj1kPzA6cC50b1N0cmluZygpLmxl
bmd0aCxoPWYrbCx2PWRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7di5zZXRTdGFydChuLG8pLHYuc2V0
RW5kKGksYSk7dmFyIG09di5jb2xsYXBzZWQ7cmV0dXJue3N0YXJ0Om0/aDpmLGVuZDptP2Y6aH19
ZnVuY3Rpb24gYShlLHQpe3ZhciBuLHIsbz1kb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2Uo
KS5kdXBsaWNhdGUoKTt2b2lkIDA9PT10LmVuZD8obj10LnN0YXJ0LHI9bik6dC5zdGFydD50LmVu
ZD8obj10LmVuZCxyPXQuc3RhcnQpOihuPXQuc3RhcnQscj10LmVuZCksby5tb3ZlVG9FbGVtZW50
VGV4dChlKSxvLm1vdmVTdGFydCgiY2hhcmFjdGVyIixuKSxvLnNldEVuZFBvaW50KCJFbmRUb1N0
YXJ0IixvKSxvLm1vdmVFbmQoImNoYXJhY3RlciIsci1uKSxvLnNlbGVjdCgpfWZ1bmN0aW9uIHUo
ZSx0KXtpZih3aW5kb3cuZ2V0U2VsZWN0aW9uKXt2YXIgbj13aW5kb3cuZ2V0U2VsZWN0aW9uKCks
cj1lW2woKV0ubGVuZ3RoLG89TWF0aC5taW4odC5zdGFydCxyKSxpPXZvaWQgMD09PXQuZW5kP286
TWF0aC5taW4odC5lbmQscik7aWYoIW4uZXh0ZW5kJiZvPmkpe3ZhciBhPWk7aT1vLG89YX12YXIg
dT1jKGUsbykscz1jKGUsaSk7aWYodSYmcyl7dmFyIHA9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTtw
LnNldFN0YXJ0KHUubm9kZSx1Lm9mZnNldCksbi5yZW1vdmVBbGxSYW5nZXMoKSxvPmk/KG4uYWRk
UmFuZ2UocCksbi5leHRlbmQocy5ub2RlLHMub2Zmc2V0KSk6KHAuc2V0RW5kKHMubm9kZSxzLm9m
ZnNldCksbi5hZGRSYW5nZShwKSl9fX12YXIgcz1uKDYpLGM9bigxODMpLGw9big3MykscD1zLmNh
blVzZURPTSYmInNlbGVjdGlvbiJpbiBkb2N1bWVudCYmISgiZ2V0U2VsZWN0aW9uImluIHdpbmRv
dyksZD17Z2V0T2Zmc2V0czpwP286aSxzZXRPZmZzZXRzOnA/YTp1fTtlLmV4cG9ydHM9ZH0sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDMpLG89big0KSxpPW4oMzQpLGE9bigx
NCksdT1uKDUpLHM9bigyOCksYz0obigxKSxuKDQ5KSxmdW5jdGlvbihlKXt0aGlzLl9jdXJyZW50
RWxlbWVudD1lLHRoaXMuX3N0cmluZ1RleHQ9IiIrZSx0aGlzLl9ob3N0Tm9kZT1udWxsLHRoaXMu
X2hvc3RQYXJlbnQ9bnVsbCx0aGlzLl9kb21JRD0wLHRoaXMuX21vdW50SW5kZXg9MCx0aGlzLl9j
bG9zaW5nQ29tbWVudD1udWxsLHRoaXMuX2NvbW1lbnROb2Rlcz1udWxsfSk7byhjLnByb3RvdHlw
ZSx7bW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89bi5faWRDb3VudGVyKyss
aT0iIHJlYWN0LXRleHQ6ICIrbysiICIsYz0iIC9yZWFjdC10ZXh0ICI7aWYodGhpcy5fZG9tSUQ9
byx0aGlzLl9ob3N0UGFyZW50PXQsZS51c2VDcmVhdGVFbGVtZW50KXt2YXIgbD1uLl9vd25lckRv
Y3VtZW50LHA9bC5jcmVhdGVDb21tZW50KGkpLGQ9bC5jcmVhdGVDb21tZW50KGMpLGY9YShsLmNy
ZWF0ZURvY3VtZW50RnJhZ21lbnQoKSk7cmV0dXJuIGEucXVldWVDaGlsZChmLGEocCkpLHRoaXMu
X3N0cmluZ1RleHQmJmEucXVldWVDaGlsZChmLGEobC5jcmVhdGVUZXh0Tm9kZSh0aGlzLl9zdHJp
bmdUZXh0KSkpLGEucXVldWVDaGlsZChmLGEoZCkpLHUucHJlY2FjaGVOb2RlKHRoaXMscCksdGhp
cy5fY2xvc2luZ0NvbW1lbnQ9ZCxmfXZhciBoPXModGhpcy5fc3RyaW5nVGV4dCk7cmV0dXJuIGUu
cmVuZGVyVG9TdGF0aWNNYXJrdXA/aDoiPCEtLSIraSsiLS0+IitoKyI8IS0tIitjKyItLT4ifSxy
ZWNlaXZlQ29tcG9uZW50OmZ1bmN0aW9uKGUsdCl7aWYoZSE9PXRoaXMuX2N1cnJlbnRFbGVtZW50
KXt0aGlzLl9jdXJyZW50RWxlbWVudD1lO3ZhciBuPSIiK2U7aWYobiE9PXRoaXMuX3N0cmluZ1Rl
eHQpe3RoaXMuX3N0cmluZ1RleHQ9bjt2YXIgcj10aGlzLmdldEhvc3ROb2RlKCk7aS5yZXBsYWNl
RGVsaW1pdGVkVGV4dChyWzBdLHJbMV0sbil9fX0sCitnZXRIb3N0Tm9kZTpmdW5jdGlvbigpe3Zh
ciBlPXRoaXMuX2NvbW1lbnROb2RlcztpZihlKXJldHVybiBlO2lmKCF0aGlzLl9jbG9zaW5nQ29t
bWVudClmb3IodmFyIHQ9dS5nZXROb2RlRnJvbUluc3RhbmNlKHRoaXMpLG49dC5uZXh0U2libGlu
Zzs7KXtpZihudWxsPT1uP3IoIjY3Iix0aGlzLl9kb21JRCk6dm9pZCAwLDg9PT1uLm5vZGVUeXBl
JiYiIC9yZWFjdC10ZXh0ICI9PT1uLm5vZGVWYWx1ZSl7dGhpcy5fY2xvc2luZ0NvbW1lbnQ9bjti
cmVha31uPW4ubmV4dFNpYmxpbmd9cmV0dXJuIGU9W3RoaXMuX2hvc3ROb2RlLHRoaXMuX2Nsb3Np
bmdDb21tZW50XSx0aGlzLl9jb21tZW50Tm9kZXM9ZSxlfSx1bm1vdW50Q29tcG9uZW50OmZ1bmN0
aW9uKCl7dGhpcy5fY2xvc2luZ0NvbW1lbnQ9bnVsbCx0aGlzLl9jb21tZW50Tm9kZXM9bnVsbCx1
LnVuY2FjaGVOb2RlKHRoaXMpfX0pLGUuZXhwb3J0cz1jfSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoKXt0aGlzLl9yb290Tm9kZUlEJiZsLnVwZGF0ZVdyYXBwZXIodGhp
cyl9ZnVuY3Rpb24gbyhlKXt2YXIgdD10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcyxuPXUuZXhl
Y3V0ZU9uQ2hhbmdlKHQsZSk7cmV0dXJuIGMuYXNhcChyLHRoaXMpLG59dmFyIGk9bigzKSxhPW4o
NCksdT1uKDM5KSxzPW4oNSksYz1uKDkpLGw9KG4oMSksbigyKSx7Z2V0SG9zdFByb3BzOmZ1bmN0
aW9uKGUsdCl7bnVsbCE9dC5kYW5nZXJvdXNseVNldElubmVySFRNTD9pKCI5MSIpOnZvaWQgMDt2
YXIgbj1hKHt9LHQse3ZhbHVlOnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLGNoaWxkcmVuOiIi
K2UuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUsb25DaGFuZ2U6ZS5fd3JhcHBlclN0YXRlLm9u
Q2hhbmdlfSk7cmV0dXJuIG59LG1vdW50V3JhcHBlcjpmdW5jdGlvbihlLHQpe3ZhciBuPXUuZ2V0
VmFsdWUodCkscj1uO2lmKG51bGw9PW4pe3ZhciBhPXQuZGVmYXVsdFZhbHVlLHM9dC5jaGlsZHJl
bjtudWxsIT1zJiYobnVsbCE9YT9pKCI5MiIpOnZvaWQgMCxBcnJheS5pc0FycmF5KHMpJiYocy5s
ZW5ndGg8PTE/dm9pZCAwOmkoIjkzIikscz1zWzBdKSxhPSIiK3MpLG51bGw9PWEmJihhPSIiKSxy
PWF9ZS5fd3JhcHBlclN0YXRlPXtpbml0aWFsVmFsdWU6IiIrcixsaXN0ZW5lcnM6bnVsbCxvbkNo
YW5nZTpvLmJpbmQoZSl9fSx1cGRhdGVXcmFwcGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWUuX2N1cnJl
bnRFbGVtZW50LnByb3BzLG49cy5nZXROb2RlRnJvbUluc3RhbmNlKGUpLHI9dS5nZXRWYWx1ZSh0
KTtpZihudWxsIT1yKXt2YXIgbz0iIityO28hPT1uLnZhbHVlJiYobi52YWx1ZT1vKSxudWxsPT10
LmRlZmF1bHRWYWx1ZSYmKG4uZGVmYXVsdFZhbHVlPW8pfW51bGwhPXQuZGVmYXVsdFZhbHVlJiYo
bi5kZWZhdWx0VmFsdWU9dC5kZWZhdWx0VmFsdWUpfSxwb3N0TW91bnRXcmFwcGVyOmZ1bmN0aW9u
KGUpe3ZhciB0PXMuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKSxuPXQudGV4dENvbnRlbnQ7bj09PWUu
X3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUmJih0LnZhbHVlPW4pfX0pO2UuZXhwb3J0cz1sfSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXsiX2hvc3ROb2RlImlu
IGU/dm9pZCAwOnMoIjMzIiksIl9ob3N0Tm9kZSJpbiB0P3ZvaWQgMDpzKCIzMyIpO2Zvcih2YXIg
bj0wLHI9ZTtyO3I9ci5faG9zdFBhcmVudCluKys7Zm9yKHZhciBvPTAsaT10O2k7aT1pLl9ob3N0
UGFyZW50KW8rKztmb3IoO24tbz4wOyllPWUuX2hvc3RQYXJlbnQsbi0tO2Zvcig7by1uPjA7KXQ9
dC5faG9zdFBhcmVudCxvLS07Zm9yKHZhciBhPW47YS0tOyl7aWYoZT09PXQpcmV0dXJuIGU7ZT1l
Ll9ob3N0UGFyZW50LHQ9dC5faG9zdFBhcmVudH1yZXR1cm4gbnVsbH1mdW5jdGlvbiBvKGUsdCl7
Il9ob3N0Tm9kZSJpbiBlP3ZvaWQgMDpzKCIzNSIpLCJfaG9zdE5vZGUiaW4gdD92b2lkIDA6cygi
MzUiKTtmb3IoO3Q7KXtpZih0PT09ZSlyZXR1cm4hMDt0PXQuX2hvc3RQYXJlbnR9cmV0dXJuITF9
ZnVuY3Rpb24gaShlKXtyZXR1cm4iX2hvc3ROb2RlImluIGU/dm9pZCAwOnMoIjM2IiksZS5faG9z
dFBhcmVudH1mdW5jdGlvbiBhKGUsdCxuKXtmb3IodmFyIHI9W107ZTspci5wdXNoKGUpLGU9ZS5f
aG9zdFBhcmVudDt2YXIgbztmb3Iobz1yLmxlbmd0aDtvLS0gPjA7KXQocltvXSwiY2FwdHVyZWQi
LG4pO2ZvcihvPTA7bzxyLmxlbmd0aDtvKyspdChyW29dLCJidWJibGVkIixuKX1mdW5jdGlvbiB1
KGUsdCxuLG8saSl7Zm9yKHZhciBhPWUmJnQ/cihlLHQpOm51bGwsdT1bXTtlJiZlIT09YTspdS5w
dXNoKGUpLGU9ZS5faG9zdFBhcmVudDtmb3IodmFyIHM9W107dCYmdCE9PWE7KXMucHVzaCh0KSx0
PXQuX2hvc3RQYXJlbnQ7dmFyIGM7Zm9yKGM9MDtjPHUubGVuZ3RoO2MrKyluKHVbY10sImJ1YmJs
ZWQiLG8pO2ZvcihjPXMubGVuZ3RoO2MtLSA+MDspbihzW2NdLCJjYXB0dXJlZCIsaSl9dmFyIHM9
bigzKTtuKDEpO2UuZXhwb3J0cz17aXNBbmNlc3RvcjpvLGdldExvd2VzdENvbW1vbkFuY2VzdG9y
OnIsZ2V0UGFyZW50SW5zdGFuY2U6aSx0cmF2ZXJzZVR3b1BoYXNlOmEsdHJhdmVyc2VFbnRlckxl
YXZlOnV9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt0aGlzLnJl
aW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCl9dmFyIG89big0KSxpPW4oOSksYT1uKDI3KSx1PW4oNyks
cz17aW5pdGlhbGl6ZTp1LGNsb3NlOmZ1bmN0aW9uKCl7ZC5pc0JhdGNoaW5nVXBkYXRlcz0hMX19
LGM9e2luaXRpYWxpemU6dSxjbG9zZTppLmZsdXNoQmF0Y2hlZFVwZGF0ZXMuYmluZChpKX0sbD1b
YyxzXTtvKHIucHJvdG90eXBlLGEse2dldFRyYW5zYWN0aW9uV3JhcHBlcnM6ZnVuY3Rpb24oKXty
ZXR1cm4gbH19KTt2YXIgcD1uZXcgcixkPXtpc0JhdGNoaW5nVXBkYXRlczohMSxiYXRjaGVkVXBk
YXRlczpmdW5jdGlvbihlLHQsbixyLG8saSl7dmFyIGE9ZC5pc0JhdGNoaW5nVXBkYXRlcztyZXR1
cm4gZC5pc0JhdGNoaW5nVXBkYXRlcz0hMCxhP2UodCxuLHIsbyxpKTpwLnBlcmZvcm0oZSxudWxs
LHQsbixyLG8saSl9fTtlLmV4cG9ydHM9ZH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKCl7d3x8KHc9ITAsZy5FdmVudEVtaXR0ZXIuaW5qZWN0UmVhY3RFdmVudExpc3Rl
bmVyKHkpLGcuRXZlbnRQbHVnaW5IdWIuaW5qZWN0RXZlbnRQbHVnaW5PcmRlcih1KSxnLkV2ZW50
UGx1Z2luVXRpbHMuaW5qZWN0Q29tcG9uZW50VHJlZShkKSxnLkV2ZW50UGx1Z2luVXRpbHMuaW5q
ZWN0VHJlZVRyYXZlcnNhbChoKSxnLkV2ZW50UGx1Z2luSHViLmluamVjdEV2ZW50UGx1Z2luc0J5
TmFtZSh7U2ltcGxlRXZlbnRQbHVnaW46RSxFbnRlckxlYXZlRXZlbnRQbHVnaW46cyxDaGFuZ2VF
dmVudFBsdWdpbjphLFNlbGVjdEV2ZW50UGx1Z2luOkMsQmVmb3JlSW5wdXRFdmVudFBsdWdpbjpp
fSksZy5Ib3N0Q29tcG9uZW50LmluamVjdEdlbmVyaWNDb21wb25lbnRDbGFzcyhwKSxnLkhvc3RD
b21wb25lbnQuaW5qZWN0VGV4dENvbXBvbmVudENsYXNzKHYpLGcuRE9NUHJvcGVydHkuaW5qZWN0
RE9NUHJvcGVydHlDb25maWcobyksZy5ET01Qcm9wZXJ0eS5pbmplY3RET01Qcm9wZXJ0eUNvbmZp
ZyhjKSxnLkRPTVByb3BlcnR5LmluamVjdERPTVByb3BlcnR5Q29uZmlnKF8pLGcuRW1wdHlDb21w
b25lbnQuaW5qZWN0RW1wdHlDb21wb25lbnRGYWN0b3J5KGZ1bmN0aW9uKGUpe3JldHVybiBuZXcg
ZihlKX0pLGcuVXBkYXRlcy5pbmplY3RSZWNvbmNpbGVUcmFuc2FjdGlvbihiKSxnLlVwZGF0ZXMu
aW5qZWN0QmF0Y2hpbmdTdHJhdGVneShtKSxnLkNvbXBvbmVudC5pbmplY3RFbnZpcm9ubWVudChs
KSl9dmFyIG89bigxMjQpLGk9bigxMjYpLGE9bigxMjgpLHU9bigxMzApLHM9bigxMzEpLGM9bigx
MzMpLGw9bigxMzUpLHA9bigxMzgpLGQ9big1KSxmPW4oMTQwKSxoPW4oMTQ4KSx2PW4oMTQ2KSxt
PW4oMTQ5KSx5PW4oMTUzKSxnPW4oMTU0KSxiPW4oMTU5KSxfPW4oMTY0KSxDPW4oMTY1KSxFPW4o
MTY2KSx3PSExO2UuZXhwb3J0cz17aW5qZWN0OnJ9fSw5MSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSl7by5lbnF1ZXVlRXZlbnRzKGUpLG8ucHJvY2Vzc0V2ZW50UXVl
dWUoITEpfXZhciBvPW4oMTkpLGk9e2hhbmRsZVRvcExldmVsOmZ1bmN0aW9uKGUsdCxuLGkpe3Zh
ciBhPW8uZXh0cmFjdEV2ZW50cyhlLHQsbixpKTtyKGEpfX07ZS5leHBvcnRzPWl9LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtmb3IoO2UuX2hvc3RQYXJlbnQ7KWU9
ZS5faG9zdFBhcmVudDt2YXIgdD1wLmdldE5vZGVGcm9tSW5zdGFuY2UoZSksbj10LnBhcmVudE5v
ZGU7cmV0dXJuIHAuZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUobil9ZnVuY3Rpb24gbyhlLHQp
e3RoaXMudG9wTGV2ZWxUeXBlPWUsdGhpcy5uYXRpdmVFdmVudD10LHRoaXMuYW5jZXN0b3JzPVtd
fWZ1bmN0aW9uIGkoZSl7dmFyIHQ9ZihlLm5hdGl2ZUV2ZW50KSxuPXAuZ2V0Q2xvc2VzdEluc3Rh
bmNlRnJvbU5vZGUodCksbz1uO2RvIGUuYW5jZXN0b3JzLnB1c2gobyksbz1vJiZyKG8pO3doaWxl
KG8pO2Zvcih2YXIgaT0wO2k8ZS5hbmNlc3RvcnMubGVuZ3RoO2krKyluPWUuYW5jZXN0b3JzW2ld
LHYuX2hhbmRsZVRvcExldmVsKGUudG9wTGV2ZWxUeXBlLG4sZS5uYXRpdmVFdmVudCxmKGUubmF0
aXZlRXZlbnQpKX1mdW5jdGlvbiBhKGUpe3ZhciB0PWgod2luZG93KTtlKHQpfXZhciB1PW4oNCks
cz1uKDUxKSxjPW4oNiksbD1uKDEzKSxwPW4oNSksZD1uKDkpLGY9big0NiksaD1uKDEwNCk7dShv
LnByb3RvdHlwZSx7ZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe3RoaXMudG9wTGV2ZWxUeXBlPW51bGws
dGhpcy5uYXRpdmVFdmVudD1udWxsLHRoaXMuYW5jZXN0b3JzLmxlbmd0aD0wfX0pLGwuYWRkUG9v
bGluZ1RvKG8sbC50d29Bcmd1bWVudFBvb2xlcik7dmFyIHY9e19lbmFibGVkOiEwLF9oYW5kbGVU
b3BMZXZlbDpudWxsLFdJTkRPV19IQU5ETEU6Yy5jYW5Vc2VET00/d2luZG93Om51bGwsc2V0SGFu
ZGxlVG9wTGV2ZWw6ZnVuY3Rpb24oZSl7di5faGFuZGxlVG9wTGV2ZWw9ZX0sc2V0RW5hYmxlZDpm
dW5jdGlvbihlKXt2Ll9lbmFibGVkPSEhZX0saXNFbmFibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIHYu
X2VuYWJsZWR9LHRyYXBCdWJibGVkRXZlbnQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBuP3MubGlz
dGVuKG4sdCx2LmRpc3BhdGNoRXZlbnQuYmluZChudWxsLGUpKTpudWxsfSx0cmFwQ2FwdHVyZWRF
dmVudDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG4/cy5jYXB0dXJlKG4sdCx2LmRpc3BhdGNoRXZl
bnQuYmluZChudWxsLGUpKTpudWxsfSxtb25pdG9yU2Nyb2xsVmFsdWU6ZnVuY3Rpb24oZSl7dmFy
IHQ9YS5iaW5kKG51bGwsZSk7cy5saXN0ZW4od2luZG93LCJzY3JvbGwiLHQpfSxkaXNwYXRjaEV2
ZW50OmZ1bmN0aW9uKGUsdCl7aWYodi5fZW5hYmxlZCl7dmFyIG49by5nZXRQb29sZWQoZSx0KTt0
cnl7ZC5iYXRjaGVkVXBkYXRlcyhpLG4pfWZpbmFsbHl7by5yZWxlYXNlKG4pfX19fTtlLmV4cG9y
dHM9dn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDE1KSxvPW4oMTkpLGk9
bigzNyksYT1uKDQwKSx1PW4oNjMpLHM9bigyNSksYz1uKDY1KSxsPW4oOSkscD17Q29tcG9uZW50
OmEuaW5qZWN0aW9uLERPTVByb3BlcnR5OnIuaW5qZWN0aW9uLEVtcHR5Q29tcG9uZW50OnUuaW5q
ZWN0aW9uLEV2ZW50UGx1Z2luSHViOm8uaW5qZWN0aW9uLEV2ZW50UGx1Z2luVXRpbHM6aS5pbmpl
Y3Rpb24sRXZlbnRFbWl0dGVyOnMuaW5qZWN0aW9uLEhvc3RDb21wb25lbnQ6Yy5pbmplY3Rpb24s
VXBkYXRlczpsLmluamVjdGlvbn07ZS5leHBvcnRzPXB9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7dmFyIHI9bigxNzcpLG89L1wvPz4vLGk9L148XCFcLVwtLyxhPXtDSEVDS1NVTV9BVFRS
X05BTUU6ImRhdGEtcmVhY3QtY2hlY2tzdW0iLGFkZENoZWNrc3VtVG9NYXJrdXA6ZnVuY3Rpb24o
ZSl7dmFyIHQ9cihlKTtyZXR1cm4gaS50ZXN0KGUpP2U6ZS5yZXBsYWNlKG8sIiAiK2EuQ0hFQ0tT
VU1fQVRUUl9OQU1FKyc9IicrdCsnIiQmJyl9LGNhblJldXNlTWFya3VwOmZ1bmN0aW9uKGUsdCl7
dmFyIG49dC5nZXRBdHRyaWJ1dGUoYS5DSEVDS1NVTV9BVFRSX05BTUUpO249biYmcGFyc2VJbnQo
biwxMCk7dmFyIG89cihlKTtyZXR1cm4gbz09PW59fTtlLmV4cG9ydHM9YX0sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXtyZXR1cm57dHlwZToiSU5TRVJUX01B
UktVUCIsY29udGVudDplLGZyb21JbmRleDpudWxsLGZyb21Ob2RlOm51bGwsdG9JbmRleDpuLGFm
dGVyTm9kZTp0fX1mdW5jdGlvbiBvKGUsdCxuKXtyZXR1cm57dHlwZToiTU9WRV9FWElTVElORyIs
Y29udGVudDpudWxsLGZyb21JbmRleDplLl9tb3VudEluZGV4LGZyb21Ob2RlOmQuZ2V0SG9zdE5v
ZGUoZSksdG9JbmRleDpuLGFmdGVyTm9kZTp0fX1mdW5jdGlvbiBpKGUsdCl7cmV0dXJue3R5cGU6
IlJFTU9WRV9OT0RFIixjb250ZW50Om51bGwsZnJvbUluZGV4OmUuX21vdW50SW5kZXgsZnJvbU5v
ZGU6dCx0b0luZGV4Om51bGwsYWZ0ZXJOb2RlOm51bGx9fWZ1bmN0aW9uIGEoZSl7cmV0dXJue3R5
cGU6IlNFVF9NQVJLVVAiLGNvbnRlbnQ6ZSxmcm9tSW5kZXg6bnVsbCxmcm9tTm9kZTpudWxsLHRv
SW5kZXg6bnVsbCxhZnRlck5vZGU6bnVsbH19ZnVuY3Rpb24gdShlKXtyZXR1cm57dHlwZToiVEVY
VF9DT05URU5UIixjb250ZW50OmUsZnJvbUluZGV4Om51bGwsZnJvbU5vZGU6bnVsbCx0b0luZGV4
Om51bGwsYWZ0ZXJOb2RlOm51bGx9fWZ1bmN0aW9uIHMoZSx0KXtyZXR1cm4gdCYmKGU9ZXx8W10s
ZS5wdXNoKHQpKSxlfWZ1bmN0aW9uIGMoZSx0KXtwLnByb2Nlc3NDaGlsZHJlblVwZGF0ZXMoZSx0
KX12YXIgbD1uKDMpLHA9big0MCksZD0obigyMSksbig4KSxuKDExKSxuKDE2KSksZj1uKDEzNCks
aD0obig3KSxuKDE4MCkpLHY9KG4oMSkse01peGluOntfcmVjb25jaWxlckluc3RhbnRpYXRlQ2hp
bGRyZW46ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBmLmluc3RhbnRpYXRlQ2hpbGRyZW4oZSx0LG4p
fSxfcmVjb25jaWxlclVwZGF0ZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuLHIsbyxpKXt2YXIgYSx1
PTA7cmV0dXJuIGE9aCh0LHUpLGYudXBkYXRlQ2hpbGRyZW4oZSxhLG4scixvLHRoaXMsdGhpcy5f
aG9zdENvbnRhaW5lckluZm8saSx1KSxhfSxtb3VudENoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuKXt2
YXIgcj10aGlzLl9yZWNvbmNpbGVySW5zdGFudGlhdGVDaGlsZHJlbihlLHQsbik7dGhpcy5fcmVu
ZGVyZWRDaGlsZHJlbj1yO3ZhciBvPVtdLGk9MDtmb3IodmFyIGEgaW4gcilpZihyLmhhc093blBy
b3BlcnR5KGEpKXt2YXIgdT1yW2FdLHM9MCxjPWQubW91bnRDb21wb25lbnQodSx0LHRoaXMsdGhp
cy5faG9zdENvbnRhaW5lckluZm8sbixzKTt1Ll9tb3VudEluZGV4PWkrKyxvLnB1c2goYyl9cmV0
dXJuIG99LHVwZGF0ZVRleHRDb250ZW50OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3JlbmRlcmVk
Q2hpbGRyZW47Zi51bm1vdW50Q2hpbGRyZW4odCwhMSk7Zm9yKHZhciBuIGluIHQpdC5oYXNPd25Q
cm9wZXJ0eShuKSYmbCgiMTE4Iik7dmFyIHI9W3UoZSldO2ModGhpcyxyKX0sdXBkYXRlTWFya3Vw
OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47Zi51bm1vdW50Q2hpbGRy
ZW4odCwhMSk7Zm9yKHZhciBuIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShuKSYmbCgiMTE4Iik7dmFy
IHI9W2EoZSldO2ModGhpcyxyKX0sdXBkYXRlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4pe3RoaXMu
X3VwZGF0ZUNoaWxkcmVuKGUsdCxuKX0sX3VwZGF0ZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuKXt2
YXIgcj10aGlzLl9yZW5kZXJlZENoaWxkcmVuLG89e30saT1bXSxhPXRoaXMuX3JlY29uY2lsZXJV
cGRhdGVDaGlsZHJlbihyLGUsaSxvLHQsbik7aWYoYXx8cil7dmFyIHUsbD1udWxsLHA9MCxmPTAs
aD0wLHY9bnVsbDtmb3IodSBpbiBhKWlmKGEuaGFzT3duUHJvcGVydHkodSkpe3ZhciBtPXImJnJb
dV0seT1hW3VdO209PT15PyhsPXMobCx0aGlzLm1vdmVDaGlsZChtLHYscCxmKSksZj1NYXRoLm1h
eChtLl9tb3VudEluZGV4LGYpLG0uX21vdW50SW5kZXg9cCk6KG0mJihmPU1hdGgubWF4KG0uX21v
dW50SW5kZXgsZikpLGw9cyhsLHRoaXMuX21vdW50Q2hpbGRBdEluZGV4KHksaVtoXSx2LHAsdCxu
KSksaCsrKSxwKyssdj1kLmdldEhvc3ROb2RlKHkpfWZvcih1IGluIG8pby5oYXNPd25Qcm9wZXJ0
eSh1KSYmKGw9cyhsLHRoaXMuX3VubW91bnRDaGlsZChyW3VdLG9bdV0pKSk7bCYmYyh0aGlzLGwp
LHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW49YX19LHVubW91bnRDaGlsZHJlbjpmdW5jdGlvbihlKXt2
YXIgdD10aGlzLl9yZW5kZXJlZENoaWxkcmVuO2YudW5tb3VudENoaWxkcmVuKHQsZSksdGhpcy5f
cmVuZGVyZWRDaGlsZHJlbj1udWxsfSxtb3ZlQ2hpbGQ6ZnVuY3Rpb24oZSx0LG4scil7aWYoZS5f
bW91bnRJbmRleDxyKXJldHVybiBvKGUsdCxuKX0sY3JlYXRlQ2hpbGQ6ZnVuY3Rpb24oZSx0LG4p
e3JldHVybiByKG4sdCxlLl9tb3VudEluZGV4KX0scmVtb3ZlQ2hpbGQ6ZnVuY3Rpb24oZSx0KXty
ZXR1cm4gaShlLHQpfSxfbW91bnRDaGlsZEF0SW5kZXg6ZnVuY3Rpb24oZSx0LG4scixvLGkpe3Jl
dHVybiBlLl9tb3VudEluZGV4PXIsdGhpcy5jcmVhdGVDaGlsZChlLG4sdCl9LF91bm1vdW50Q2hp
bGQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnJlbW92ZUNoaWxkKGUsdCk7cmV0dXJuIGUuX21v
dW50SW5kZXg9bnVsbCxufX19KTtlLmV4cG9ydHM9dn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiEoIWV8fCJmdW5jdGlvbiIhPXR5cGVvZiBlLmF0dGFj
aFJlZnx8ImZ1bmN0aW9uIiE9dHlwZW9mIGUuZGV0YWNoUmVmKX12YXIgbz1uKDMpLGk9KG4oMSks
e2FkZENvbXBvbmVudEFzUmVmVG86ZnVuY3Rpb24oZSx0LG4pe3Iobik/dm9pZCAwOm8oIjExOSIp
LG4uYXR0YWNoUmVmKHQsZSl9LHJlbW92ZUNvbXBvbmVudEFzUmVmRnJvbTpmdW5jdGlvbihlLHQs
bil7cihuKT92b2lkIDA6bygiMTIwIik7dmFyIGk9bi5nZXRQdWJsaWNJbnN0YW5jZSgpO2kmJmku
cmVmc1t0XT09PWUuZ2V0UHVibGljSW5zdGFuY2UoKSYmbi5kZXRhY2hSZWYodCl9fSk7ZS5leHBv
cnRzPWl9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciBuPSJTRUNSRVRfRE9fTk9UX1BB
U1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCI7ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt0aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9u
KCksdGhpcy5yZW5kZXJUb1N0YXRpY01hcmt1cD0hMSx0aGlzLnJlYWN0TW91bnRSZWFkeT1pLmdl
dFBvb2xlZChudWxsKSx0aGlzLnVzZUNyZWF0ZUVsZW1lbnQ9ZX12YXIgbz1uKDQpLGk9big1OSks
YT1uKDEzKSx1PW4oMjUpLHM9big2NiksYz0obig4KSxuKDI3KSksbD1uKDQyKSxwPXtpbml0aWFs
aXplOnMuZ2V0U2VsZWN0aW9uSW5mb3JtYXRpb24sY2xvc2U6cy5yZXN0b3JlU2VsZWN0aW9ufSxk
PXtpbml0aWFsaXplOmZ1bmN0aW9uKCl7dmFyIGU9dS5pc0VuYWJsZWQoKTtyZXR1cm4gdS5zZXRF
bmFibGVkKCExKSxlfSxjbG9zZTpmdW5jdGlvbihlKXt1LnNldEVuYWJsZWQoZSl9fSxmPXtpbml0
aWFsaXplOmZ1bmN0aW9uKCl7dGhpcy5yZWFjdE1vdW50UmVhZHkucmVzZXQoKX0sY2xvc2U6ZnVu
Y3Rpb24oKXt0aGlzLnJlYWN0TW91bnRSZWFkeS5ub3RpZnlBbGwoKX19LGg9W3AsZCxmXSx2PXtn
ZXRUcmFuc2FjdGlvbldyYXBwZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIGh9LGdldFJlYWN0TW91bnRS
ZWFkeTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnJlYWN0TW91bnRSZWFkeX0sZ2V0VXBkYXRlUXVl
dWU6ZnVuY3Rpb24oKXtyZXR1cm4gbH0sY2hlY2twb2ludDpmdW5jdGlvbigpe3JldHVybiB0aGlz
LnJlYWN0TW91bnRSZWFkeS5jaGVja3BvaW50KCl9LHJvbGxiYWNrOmZ1bmN0aW9uKGUpe3RoaXMu
cmVhY3RNb3VudFJlYWR5LnJvbGxiYWNrKGUpfSxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7aS5yZWxl
YXNlKHRoaXMucmVhY3RNb3VudFJlYWR5KSx0aGlzLnJlYWN0TW91bnRSZWFkeT1udWxsfX07byhy
LnByb3RvdHlwZSxjLHYpLGEuYWRkUG9vbGluZ1RvKHIpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4peyJmdW5jdGlvbiI9PXR5cGVvZiBl
P2UodC5nZXRQdWJsaWNJbnN0YW5jZSgpKTppLmFkZENvbXBvbmVudEFzUmVmVG8odCxlLG4pfWZ1
bmN0aW9uIG8oZSx0LG4peyJmdW5jdGlvbiI9PXR5cGVvZiBlP2UobnVsbCk6aS5yZW1vdmVDb21w
b25lbnRBc1JlZkZyb20odCxlLG4pfXZhciBpPW4oMTU3KSxhPXt9O2EuYXR0YWNoUmVmcz1mdW5j
dGlvbihlLHQpe2lmKG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHQpe3ZhciBuPXQucmVmO251
bGwhPW4mJnIobixlLHQuX293bmVyKX19LGEuc2hvdWxkVXBkYXRlUmVmcz1mdW5jdGlvbihlLHQp
e3ZhciBuPW51bGwscj1udWxsO251bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGUmJihuPWUucmVm
LHI9ZS5fb3duZXIpO3ZhciBvPW51bGwsaT1udWxsO3JldHVybiBudWxsIT09dCYmIm9iamVjdCI9
PXR5cGVvZiB0JiYobz10LnJlZixpPXQuX293bmVyKSxuIT09b3x8InN0cmluZyI9PXR5cGVvZiBv
JiZpIT09cn0sYS5kZXRhY2hSZWZzPWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9PXQmJiJvYmplY3Qi
PT10eXBlb2YgdCl7dmFyIG49dC5yZWY7bnVsbCE9biYmbyhuLGUsdC5fb3duZXIpfX0sZS5leHBv
cnRzPWF9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt0aGlzLnJl
aW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCksdGhpcy5yZW5kZXJUb1N0YXRpY01hcmt1cD1lLHRoaXMu
dXNlQ3JlYXRlRWxlbWVudD0hMSx0aGlzLnVwZGF0ZVF1ZXVlPW5ldyB1KHRoaXMpfXZhciBvPW4o
NCksaT1uKDEzKSxhPW4oMjcpLHU9KG4oOCksbigxNjIpKSxzPVtdLGM9e2VucXVldWU6ZnVuY3Rp
b24oKXt9fSxsPXtnZXRUcmFuc2FjdGlvbldyYXBwZXJzOmZ1bmN0aW9uKCl7cmV0dXJuIHN9LGdl
dFJlYWN0TW91bnRSZWFkeTpmdW5jdGlvbigpe3JldHVybiBjfSxnZXRVcGRhdGVRdWV1ZTpmdW5j
dGlvbigpe3JldHVybiB0aGlzLnVwZGF0ZVF1ZXVlfSxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7fSxj
aGVja3BvaW50OmZ1bmN0aW9uKCl7fSxyb2xsYmFjazpmdW5jdGlvbigpe319O28oci5wcm90b3R5
cGUsYSxsKSxpLmFkZFBvb2xpbmdUbyhyKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3
IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24g
byhlLHQpe312YXIgaT1uKDQyKSxhPShuKDIpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gZSh0KXtyKHRo
aXMsZSksdGhpcy50cmFuc2FjdGlvbj10fXJldHVybiBlLnByb3RvdHlwZS5pc01vdW50ZWQ9ZnVu
Y3Rpb24oZSl7cmV0dXJuITF9LGUucHJvdG90eXBlLmVucXVldWVDYWxsYmFjaz1mdW5jdGlvbihl
LHQsbil7dGhpcy50cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24oKSYmaS5lbnF1ZXVlQ2FsbGJh
Y2soZSx0LG4pfSxlLnByb3RvdHlwZS5lbnF1ZXVlRm9yY2VVcGRhdGU9ZnVuY3Rpb24oZSl7dGhp
cy50cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24oKT9pLmVucXVldWVGb3JjZVVwZGF0ZShlKTpv
KGUsImZvcmNlVXBkYXRlIil9LGUucHJvdG90eXBlLmVucXVldWVSZXBsYWNlU3RhdGU9ZnVuY3Rp
b24oZSx0KXt0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpP2kuZW5xdWV1ZVJlcGxh
Y2VTdGF0ZShlLHQpOm8oZSwicmVwbGFjZVN0YXRlIil9LGUucHJvdG90eXBlLmVucXVldWVTZXRT
dGF0ZT1mdW5jdGlvbihlLHQpe3RoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCk/aS5l
bnF1ZXVlU2V0U3RhdGUoZSx0KTpvKGUsInNldFN0YXRlIil9LGV9KCkpO2UuZXhwb3J0cz1hfSxm
dW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9IjE1LjYuMSJ9LGZ1bmN0aW9uKGUs
dCl7InVzZSBzdHJpY3QiO3ZhciBuPXt4bGluazoiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlu
ayIseG1sOiJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UifSxyPXthY2NlbnRI
ZWlnaHQ6ImFjY2VudC1oZWlnaHQiLGFjY3VtdWxhdGU6MCxhZGRpdGl2ZTowLGFsaWdubWVudEJh
c2VsaW5lOiJhbGlnbm1lbnQtYmFzZWxpbmUiLGFsbG93UmVvcmRlcjoiYWxsb3dSZW9yZGVyIixh
bHBoYWJldGljOjAsYW1wbGl0dWRlOjAsYXJhYmljRm9ybToiYXJhYmljLWZvcm0iLGFzY2VudDow
LGF0dHJpYnV0ZU5hbWU6ImF0dHJpYnV0ZU5hbWUiLGF0dHJpYnV0ZVR5cGU6ImF0dHJpYnV0ZVR5
cGUiLGF1dG9SZXZlcnNlOiJhdXRvUmV2ZXJzZSIsYXppbXV0aDowLGJhc2VGcmVxdWVuY3k6ImJh
c2VGcmVxdWVuY3kiLGJhc2VQcm9maWxlOiJiYXNlUHJvZmlsZSIsYmFzZWxpbmVTaGlmdDoiYmFz
ZWxpbmUtc2hpZnQiLGJib3g6MCxiZWdpbjowLGJpYXM6MCxieTowLGNhbGNNb2RlOiJjYWxjTW9k
ZSIsY2FwSGVpZ2h0OiJjYXAtaGVpZ2h0IixjbGlwOjAsY2xpcFBhdGg6ImNsaXAtcGF0aCIsY2xp
cFJ1bGU6ImNsaXAtcnVsZSIsY2xpcFBhdGhVbml0czoiY2xpcFBhdGhVbml0cyIsY29sb3JJbnRl
cnBvbGF0aW9uOiJjb2xvci1pbnRlcnBvbGF0aW9uIixjb2xvckludGVycG9sYXRpb25GaWx0ZXJz
OiJjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMiLGNvbG9yUHJvZmlsZToiY29sb3ItcHJvZmls
ZSIsY29sb3JSZW5kZXJpbmc6ImNvbG9yLXJlbmRlcmluZyIsY29udGVudFNjcmlwdFR5cGU6ImNv
bnRlbnRTY3JpcHRUeXBlIixjb250ZW50U3R5bGVUeXBlOiJjb250ZW50U3R5bGVUeXBlIixjdXJz
b3I6MCxjeDowLGN5OjAsZDowLGRlY2VsZXJhdGU6MCxkZXNjZW50OjAsZGlmZnVzZUNvbnN0YW50
OiJkaWZmdXNlQ29uc3RhbnQiLGRpcmVjdGlvbjowLGRpc3BsYXk6MCxkaXZpc29yOjAsZG9taW5h
bnRCYXNlbGluZToiZG9taW5hbnQtYmFzZWxpbmUiLGR1cjowLGR4OjAsZHk6MCxlZGdlTW9kZToi
ZWRnZU1vZGUiLGVsZXZhdGlvbjowLGVuYWJsZUJhY2tncm91bmQ6ImVuYWJsZS1iYWNrZ3JvdW5k
IixlbmQ6MCxleHBvbmVudDowLGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQ6ImV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQiLGZpbGw6MCxmaWxsT3BhY2l0eToiZmlsbC1vcGFjaXR5IixmaWxsUnVs
ZToiZmlsbC1ydWxlIixmaWx0ZXI6MCxmaWx0ZXJSZXM6ImZpbHRlclJlcyIsZmlsdGVyVW5pdHM6
ImZpbHRlclVuaXRzIixmbG9vZENvbG9yOiJmbG9vZC1jb2xvciIsZmxvb2RPcGFjaXR5OiJmbG9v
ZC1vcGFjaXR5Iixmb2N1c2FibGU6MCxmb250RmFtaWx5OiJmb250LWZhbWlseSIsZm9udFNpemU6
ImZvbnQtc2l6ZSIsZm9udFNpemVBZGp1c3Q6ImZvbnQtc2l6ZS1hZGp1c3QiLGZvbnRTdHJldGNo
OiJmb250LXN0cmV0Y2giLGZvbnRTdHlsZToiZm9udC1zdHlsZSIsZm9udFZhcmlhbnQ6ImZvbnQt
dmFyaWFudCIsZm9udFdlaWdodDoiZm9udC13ZWlnaHQiLGZvcm1hdDowLGZyb206MCxmeDowLGZ5
OjAsZzE6MCxnMjowLGdseXBoTmFtZToiZ2x5cGgtbmFtZSIsZ2x5cGhPcmllbnRhdGlvbkhvcml6
b250YWw6ImdseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwiLGdseXBoT3JpZW50YXRpb25WZXJ0
aWNhbDoiZ2x5cGgtb3JpZW50YXRpb24tdmVydGljYWwiLGdseXBoUmVmOiJnbHlwaFJlZiIsZ3Jh
ZGllbnRUcmFuc2Zvcm06ImdyYWRpZW50VHJhbnNmb3JtIixncmFkaWVudFVuaXRzOiJncmFkaWVu
dFVuaXRzIixoYW5naW5nOjAsaG9yaXpBZHZYOiJob3Jpei1hZHYteCIsaG9yaXpPcmlnaW5YOiJo
b3Jpei1vcmlnaW4teCIsaWRlb2dyYXBoaWM6MCxpbWFnZVJlbmRlcmluZzoiaW1hZ2UtcmVuZGVy
aW5nIixpbjowLGluMjowLGludGVyY2VwdDowLGs6MCxrMTowLGsyOjAsazM6MCxrNDowLGtlcm5l
bE1hdHJpeDoia2VybmVsTWF0cml4IixrZXJuZWxVbml0TGVuZ3RoOiJrZXJuZWxVbml0TGVuZ3Ro
IixrZXJuaW5nOjAsa2V5UG9pbnRzOiJrZXlQb2ludHMiLGtleVNwbGluZXM6ImtleVNwbGluZXMi
LGtleVRpbWVzOiJrZXlUaW1lcyIsbGVuZ3RoQWRqdXN0OiJsZW5ndGhBZGp1c3QiLGxldHRlclNw
YWNpbmc6ImxldHRlci1zcGFjaW5nIixsaWdodGluZ0NvbG9yOiJsaWdodGluZy1jb2xvciIsbGlt
aXRpbmdDb25lQW5nbGU6ImxpbWl0aW5nQ29uZUFuZ2xlIixsb2NhbDowLG1hcmtlckVuZDoibWFy
a2VyLWVuZCIsbWFya2VyTWlkOiJtYXJrZXItbWlkIixtYXJrZXJTdGFydDoibWFya2VyLXN0YXJ0
IixtYXJrZXJIZWlnaHQ6Im1hcmtlckhlaWdodCIsbWFya2VyVW5pdHM6Im1hcmtlclVuaXRzIixt
YXJrZXJXaWR0aDoibWFya2VyV2lkdGgiLG1hc2s6MCxtYXNrQ29udGVudFVuaXRzOiJtYXNrQ29u
dGVudFVuaXRzIixtYXNrVW5pdHM6Im1hc2tVbml0cyIsbWF0aGVtYXRpY2FsOjAsbW9kZTowLG51
bU9jdGF2ZXM6Im51bU9jdGF2ZXMiLG9mZnNldDowLG9wYWNpdHk6MCxvcGVyYXRvcjowLG9yZGVy
OjAsb3JpZW50OjAsb3JpZW50YXRpb246MCxvcmlnaW46MCxvdmVyZmxvdzowLG92ZXJsaW5lUG9z
aXRpb246Im92ZXJsaW5lLXBvc2l0aW9uIixvdmVybGluZVRoaWNrbmVzczoib3ZlcmxpbmUtdGhp
Y2tuZXNzIixwYWludE9yZGVyOiJwYWludC1vcmRlciIscGFub3NlMToicGFub3NlLTEiLHBhdGhM
ZW5ndGg6InBhdGhMZW5ndGgiLHBhdHRlcm5Db250ZW50VW5pdHM6InBhdHRlcm5Db250ZW50VW5p
dHMiLHBhdHRlcm5UcmFuc2Zvcm06InBhdHRlcm5UcmFuc2Zvcm0iLHBhdHRlcm5Vbml0czoicGF0
dGVyblVuaXRzIixwb2ludGVyRXZlbnRzOiJwb2ludGVyLWV2ZW50cyIscG9pbnRzOjAscG9pbnRz
QXRYOiJwb2ludHNBdFgiLHBvaW50c0F0WToicG9pbnRzQXRZIixwb2ludHNBdFo6InBvaW50c0F0
WiIscHJlc2VydmVBbHBoYToicHJlc2VydmVBbHBoYSIscHJlc2VydmVBc3BlY3RSYXRpbzoicHJl
c2VydmVBc3BlY3RSYXRpbyIscHJpbWl0aXZlVW5pdHM6InByaW1pdGl2ZVVuaXRzIixyOjAscmFk
aXVzOjAscmVmWDoicmVmWCIscmVmWToicmVmWSIscmVuZGVyaW5nSW50ZW50OiJyZW5kZXJpbmct
aW50ZW50IixyZXBlYXRDb3VudDoicmVwZWF0Q291bnQiLHJlcGVhdER1cjoicmVwZWF0RHVyIixy
ZXF1aXJlZEV4dGVuc2lvbnM6InJlcXVpcmVkRXh0ZW5zaW9ucyIscmVxdWlyZWRGZWF0dXJlczoi
cmVxdWlyZWRGZWF0dXJlcyIscmVzdGFydDowLHJlc3VsdDowLHJvdGF0ZTowLHJ4OjAscnk6MCxz
Y2FsZTowLHNlZWQ6MCxzaGFwZVJlbmRlcmluZzoic2hhcGUtcmVuZGVyaW5nIixzbG9wZTowLHNw
YWNpbmc6MCxzcGVjdWxhckNvbnN0YW50OiJzcGVjdWxhckNvbnN0YW50IixzcGVjdWxhckV4cG9u
ZW50OiJzcGVjdWxhckV4cG9uZW50IixzcGVlZDowLHNwcmVhZE1ldGhvZDoic3ByZWFkTWV0aG9k
IixzdGFydE9mZnNldDoic3RhcnRPZmZzZXQiLHN0ZERldmlhdGlvbjoic3RkRGV2aWF0aW9uIixz
dGVtaDowLHN0ZW12OjAsc3RpdGNoVGlsZXM6InN0aXRjaFRpbGVzIixzdG9wQ29sb3I6InN0b3At
Y29sb3IiLHN0b3BPcGFjaXR5OiJzdG9wLW9wYWNpdHkiLHN0cmlrZXRocm91Z2hQb3NpdGlvbjoi
c3RyaWtldGhyb3VnaC1wb3NpdGlvbiIsc3RyaWtldGhyb3VnaFRoaWNrbmVzczoic3RyaWtldGhy
b3VnaC10aGlja25lc3MiLHN0cmluZzowLHN0cm9rZTowLHN0cm9rZURhc2hhcnJheToic3Ryb2tl
LWRhc2hhcnJheSIsc3Ryb2tlRGFzaG9mZnNldDoic3Ryb2tlLWRhc2hvZmZzZXQiLHN0cm9rZUxp
bmVjYXA6InN0cm9rZS1saW5lY2FwIixzdHJva2VMaW5lam9pbjoic3Ryb2tlLWxpbmVqb2luIixz
dHJva2VNaXRlcmxpbWl0OiJzdHJva2UtbWl0ZXJsaW1pdCIsc3Ryb2tlT3BhY2l0eToic3Ryb2tl
LW9wYWNpdHkiLHN0cm9rZVdpZHRoOiJzdHJva2Utd2lkdGgiLHN1cmZhY2VTY2FsZToic3VyZmFj
ZVNjYWxlIixzeXN0ZW1MYW5ndWFnZToic3lzdGVtTGFuZ3VhZ2UiLHRhYmxlVmFsdWVzOiJ0YWJs
ZVZhbHVlcyIsdGFyZ2V0WDoidGFyZ2V0WCIsdGFyZ2V0WToidGFyZ2V0WSIsdGV4dEFuY2hvcjoi
dGV4dC1hbmNob3IiLHRleHREZWNvcmF0aW9uOiJ0ZXh0LWRlY29yYXRpb24iLHRleHRSZW5kZXJp
bmc6InRleHQtcmVuZGVyaW5nIix0ZXh0TGVuZ3RoOiJ0ZXh0TGVuZ3RoIix0bzowLHRyYW5zZm9y
bTowLHUxOjAsdTI6MCx1bmRlcmxpbmVQb3NpdGlvbjoidW5kZXJsaW5lLXBvc2l0aW9uIix1bmRl
cmxpbmVUaGlja25lc3M6InVuZGVybGluZS10aGlja25lc3MiLHVuaWNvZGU6MCx1bmljb2RlQmlk
aToidW5pY29kZS1iaWRpIix1bmljb2RlUmFuZ2U6InVuaWNvZGUtcmFuZ2UiLHVuaXRzUGVyRW06
InVuaXRzLXBlci1lbSIsdkFscGhhYmV0aWM6InYtYWxwaGFiZXRpYyIsdkhhbmdpbmc6InYtaGFu
Z2luZyIsdklkZW9ncmFwaGljOiJ2LWlkZW9ncmFwaGljIix2TWF0aGVtYXRpY2FsOiJ2LW1hdGhl
bWF0aWNhbCIsdmFsdWVzOjAsdmVjdG9yRWZmZWN0OiJ2ZWN0b3ItZWZmZWN0Iix2ZXJzaW9uOjAs
dmVydEFkdlk6InZlcnQtYWR2LXkiLHZlcnRPcmlnaW5YOiJ2ZXJ0LW9yaWdpbi14Iix2ZXJ0T3Jp
Z2luWToidmVydC1vcmlnaW4teSIsdmlld0JveDoidmlld0JveCIsdmlld1RhcmdldDoidmlld1Rh
cmdldCIsdmlzaWJpbGl0eTowLHdpZHRoczowLHdvcmRTcGFjaW5nOiJ3b3JkLXNwYWNpbmciLHdy
aXRpbmdNb2RlOiJ3cml0aW5nLW1vZGUiLHg6MCx4SGVpZ2h0OiJ4LWhlaWdodCIseDE6MCx4Mjow
LHhDaGFubmVsU2VsZWN0b3I6InhDaGFubmVsU2VsZWN0b3IiLHhsaW5rQWN0dWF0ZToieGxpbms6
YWN0dWF0ZSIseGxpbmtBcmNyb2xlOiJ4bGluazphcmNyb2xlIix4bGlua0hyZWY6InhsaW5rOmhy
ZWYiLHhsaW5rUm9sZToieGxpbms6cm9sZSIseGxpbmtTaG93OiJ4bGluazpzaG93Iix4bGlua1Rp
dGxlOiJ4bGluazp0aXRsZSIseGxpbmtUeXBlOiJ4bGluazp0eXBlIix4bWxCYXNlOiJ4bWw6YmFz
ZSIseG1sbnM6MCx4bWxuc1hsaW5rOiJ4bWxuczp4bGluayIseG1sTGFuZzoieG1sOmxhbmciLHht
bFNwYWNlOiJ4bWw6c3BhY2UiLHk6MCx5MTowLHkyOjAseUNoYW5uZWxTZWxlY3RvcjoieUNoYW5u
ZWxTZWxlY3RvciIsejowLHpvb21BbmRQYW46Inpvb21BbmRQYW4ifSxvPXtQcm9wZXJ0aWVzOnt9
LERPTUF0dHJpYnV0ZU5hbWVzcGFjZXM6e3hsaW5rQWN0dWF0ZTpuLnhsaW5rLHhsaW5rQXJjcm9s
ZTpuLnhsaW5rLHhsaW5rSHJlZjpuLnhsaW5rLHhsaW5rUm9sZTpuLnhsaW5rLHhsaW5rU2hvdzpu
LnhsaW5rLHhsaW5rVGl0bGU6bi54bGluayx4bGlua1R5cGU6bi54bGluayx4bWxCYXNlOm4ueG1s
LHhtbExhbmc6bi54bWwseG1sU3BhY2U6bi54bWx9LERPTUF0dHJpYnV0ZU5hbWVzOnt9fTtPYmpl
Y3Qua2V5cyhyKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe28uUHJvcGVydGllc1tlXT0wLHJbZV0mJihv
LkRPTUF0dHJpYnV0ZU5hbWVzW2VdPXJbZV0pfSksZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZigic2VsZWN0aW9uU3RhcnQiaW4gZSYmcy5o
YXNTZWxlY3Rpb25DYXBhYmlsaXRpZXMoZSkpcmV0dXJue3N0YXJ0OmUuc2VsZWN0aW9uU3RhcnQs
ZW5kOmUuc2VsZWN0aW9uRW5kfTtpZih3aW5kb3cuZ2V0U2VsZWN0aW9uKXt2YXIgdD13aW5kb3cu
Z2V0U2VsZWN0aW9uKCk7cmV0dXJue2FuY2hvck5vZGU6dC5hbmNob3JOb2RlLGFuY2hvck9mZnNl
dDp0LmFuY2hvck9mZnNldCxmb2N1c05vZGU6dC5mb2N1c05vZGUsZm9jdXNPZmZzZXQ6dC5mb2N1
c09mZnNldH19aWYoZG9jdW1lbnQuc2VsZWN0aW9uKXt2YXIgbj1kb2N1bWVudC5zZWxlY3Rpb24u
Y3JlYXRlUmFuZ2UoKTtyZXR1cm57cGFyZW50RWxlbWVudDpuLnBhcmVudEVsZW1lbnQoKSx0ZXh0
Om4udGV4dCx0b3A6bi5ib3VuZGluZ1RvcCxsZWZ0Om4uYm91bmRpbmdMZWZ0fX19ZnVuY3Rpb24g
byhlLHQpe2lmKGd8fG51bGw9PXZ8fHYhPT1sKCkpcmV0dXJuIG51bGw7dmFyIG49cih2KTtpZigh
eXx8IWQoeSxuKSl7eT1uO3ZhciBvPWMuZ2V0UG9vbGVkKGguc2VsZWN0LG0sZSx0KTtyZXR1cm4g
by50eXBlPSJzZWxlY3QiLG8udGFyZ2V0PXYsaS5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVz
KG8pLG99cmV0dXJuIG51bGx9dmFyIGk9bigyMCksYT1uKDYpLHU9big1KSxzPW4oNjYpLGM9bigx
MCksbD1uKDUzKSxwPW4oNzYpLGQ9bigzMiksZj1hLmNhblVzZURPTSYmImRvY3VtZW50TW9kZSJp
biBkb2N1bWVudCYmZG9jdW1lbnQuZG9jdW1lbnRNb2RlPD0xMSxoPXtzZWxlY3Q6e3BoYXNlZFJl
Z2lzdHJhdGlvbk5hbWVzOntidWJibGVkOiJvblNlbGVjdCIsY2FwdHVyZWQ6Im9uU2VsZWN0Q2Fw
dHVyZSJ9LGRlcGVuZGVuY2llczpbInRvcEJsdXIiLCJ0b3BDb250ZXh0TWVudSIsInRvcEZvY3Vz
IiwidG9wS2V5RG93biIsInRvcEtleVVwIiwidG9wTW91c2VEb3duIiwidG9wTW91c2VVcCIsInRv
cFNlbGVjdGlvbkNoYW5nZSJdfX0sdj1udWxsLG09bnVsbCx5PW51bGwsZz0hMSxiPSExLF89e2V2
ZW50VHlwZXM6aCxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe2lmKCFiKXJldHVybiBu
dWxsO3ZhciBpPXQ/dS5nZXROb2RlRnJvbUluc3RhbmNlKHQpOndpbmRvdztzd2l0Y2goZSl7Y2Fz
ZSJ0b3BGb2N1cyI6KHAoaSl8fCJ0cnVlIj09PWkuY29udGVudEVkaXRhYmxlKSYmKHY9aSxtPXQs
eT1udWxsKTticmVhaztjYXNlInRvcEJsdXIiOnY9bnVsbCxtPW51bGwseT1udWxsO2JyZWFrO2Nh
c2UidG9wTW91c2VEb3duIjpnPSEwO2JyZWFrO2Nhc2UidG9wQ29udGV4dE1lbnUiOmNhc2UidG9w
TW91c2VVcCI6cmV0dXJuIGc9ITEsbyhuLHIpO2Nhc2UidG9wU2VsZWN0aW9uQ2hhbmdlIjppZihm
KWJyZWFrO2Nhc2UidG9wS2V5RG93biI6Y2FzZSJ0b3BLZXlVcCI6cmV0dXJuIG8obixyKX1yZXR1
cm4gbnVsbH0sZGlkUHV0TGlzdGVuZXI6ZnVuY3Rpb24oZSx0LG4peyJvblNlbGVjdCI9PT10JiYo
Yj0hMCl9fTtlLmV4cG9ydHM9X30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUpe3JldHVybiIuIitlLl9yb290Tm9kZUlEfWZ1bmN0aW9uIG8oZSl7cmV0dXJuImJ1dHRv
biI9PT1lfHwiaW5wdXQiPT09ZXx8InNlbGVjdCI9PT1lfHwidGV4dGFyZWEiPT09ZX12YXIgaT1u
KDMpLGE9big1MSksdT1uKDIwKSxzPW4oNSksYz1uKDE2NyksbD1uKDE2OCkscD1uKDEwKSxkPW4o
MTcxKSxmPW4oMTczKSxoPW4oMjYpLHY9bigxNzApLG09bigxNzQpLHk9bigxNzUpLGc9bigyMiks
Yj1uKDE3NiksXz1uKDcpLEM9big0NCksRT0obigxKSx7fSksdz17fTtbImFib3J0IiwiYW5pbWF0
aW9uRW5kIiwiYW5pbWF0aW9uSXRlcmF0aW9uIiwiYW5pbWF0aW9uU3RhcnQiLCJibHVyIiwiY2Fu
UGxheSIsImNhblBsYXlUaHJvdWdoIiwiY2xpY2siLCJjb250ZXh0TWVudSIsImNvcHkiLCJjdXQi
LCJkb3VibGVDbGljayIsImRyYWciLCJkcmFnRW5kIiwiZHJhZ0VudGVyIiwiZHJhZ0V4aXQiLCJk
cmFnTGVhdmUiLCJkcmFnT3ZlciIsImRyYWdTdGFydCIsImRyb3AiLCJkdXJhdGlvbkNoYW5nZSIs
ImVtcHRpZWQiLCJlbmNyeXB0ZWQiLCJlbmRlZCIsImVycm9yIiwiZm9jdXMiLCJpbnB1dCIsImlu
dmFsaWQiLCJrZXlEb3duIiwia2V5UHJlc3MiLCJrZXlVcCIsImxvYWQiLCJsb2FkZWREYXRhIiwi
bG9hZGVkTWV0YWRhdGEiLCJsb2FkU3RhcnQiLCJtb3VzZURvd24iLCJtb3VzZU1vdmUiLCJtb3Vz
ZU91dCIsIm1vdXNlT3ZlciIsIm1vdXNlVXAiLCJwYXN0ZSIsInBhdXNlIiwicGxheSIsInBsYXlp
bmciLCJwcm9ncmVzcyIsInJhdGVDaGFuZ2UiLCJyZXNldCIsInNjcm9sbCIsInNlZWtlZCIsInNl
ZWtpbmciLCJzdGFsbGVkIiwic3VibWl0Iiwic3VzcGVuZCIsInRpbWVVcGRhdGUiLCJ0b3VjaENh
bmNlbCIsInRvdWNoRW5kIiwidG91Y2hNb3ZlIiwidG91Y2hTdGFydCIsInRyYW5zaXRpb25FbmQi
LCJ2b2x1bWVDaGFuZ2UiLCJ3YWl0aW5nIiwid2hlZWwiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3Zh
ciB0PWVbMF0udG9VcHBlckNhc2UoKStlLnNsaWNlKDEpLG49Im9uIit0LHI9InRvcCIrdCxvPXtw
aGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpuLGNhcHR1cmVkOm4rIkNhcHR1cmUifSxk
ZXBlbmRlbmNpZXM6W3JdfTtFW2VdPW8sd1tyXT1vfSk7dmFyIFQ9e30sUD17ZXZlbnRUeXBlczpF
LGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89d1tlXTtpZighbylyZXR1cm4g
bnVsbDt2YXIgYTtzd2l0Y2goZSl7Y2FzZSJ0b3BBYm9ydCI6Y2FzZSJ0b3BDYW5QbGF5IjpjYXNl
InRvcENhblBsYXlUaHJvdWdoIjpjYXNlInRvcER1cmF0aW9uQ2hhbmdlIjpjYXNlInRvcEVtcHRp
ZWQiOmNhc2UidG9wRW5jcnlwdGVkIjpjYXNlInRvcEVuZGVkIjpjYXNlInRvcEVycm9yIjpjYXNl
InRvcElucHV0IjpjYXNlInRvcEludmFsaWQiOmNhc2UidG9wTG9hZCI6Y2FzZSJ0b3BMb2FkZWRE
YXRhIjpjYXNlInRvcExvYWRlZE1ldGFkYXRhIjpjYXNlInRvcExvYWRTdGFydCI6Y2FzZSJ0b3BQ
YXVzZSI6Y2FzZSJ0b3BQbGF5IjpjYXNlInRvcFBsYXlpbmciOmNhc2UidG9wUHJvZ3Jlc3MiOmNh
c2UidG9wUmF0ZUNoYW5nZSI6Y2FzZSJ0b3BSZXNldCI6Y2FzZSJ0b3BTZWVrZWQiOmNhc2UidG9w
U2Vla2luZyI6Y2FzZSJ0b3BTdGFsbGVkIjpjYXNlInRvcFN1Ym1pdCI6Y2FzZSJ0b3BTdXNwZW5k
IjpjYXNlInRvcFRpbWVVcGRhdGUiOmNhc2UidG9wVm9sdW1lQ2hhbmdlIjpjYXNlInRvcFdhaXRp
bmciOmE9cDticmVhaztjYXNlInRvcEtleVByZXNzIjppZigwPT09QyhuKSlyZXR1cm4gbnVsbDtj
YXNlInRvcEtleURvd24iOmNhc2UidG9wS2V5VXAiOmE9ZjticmVhaztjYXNlInRvcEJsdXIiOmNh
c2UidG9wRm9jdXMiOmE9ZDticmVhaztjYXNlInRvcENsaWNrIjppZigyPT09bi5idXR0b24pcmV0
dXJuIG51bGw7Y2FzZSJ0b3BEb3VibGVDbGljayI6Y2FzZSJ0b3BNb3VzZURvd24iOmNhc2UidG9w
TW91c2VNb3ZlIjpjYXNlInRvcE1vdXNlVXAiOmNhc2UidG9wTW91c2VPdXQiOmNhc2UidG9wTW91
c2VPdmVyIjpjYXNlInRvcENvbnRleHRNZW51IjphPWg7YnJlYWs7Y2FzZSJ0b3BEcmFnIjpjYXNl
InRvcERyYWdFbmQiOmNhc2UidG9wRHJhZ0VudGVyIjpjYXNlInRvcERyYWdFeGl0IjpjYXNlInRv
cERyYWdMZWF2ZSI6Y2FzZSJ0b3BEcmFnT3ZlciI6Y2FzZSJ0b3BEcmFnU3RhcnQiOmNhc2UidG9w
RHJvcCI6YT12O2JyZWFrO2Nhc2UidG9wVG91Y2hDYW5jZWwiOmNhc2UidG9wVG91Y2hFbmQiOmNh
c2UidG9wVG91Y2hNb3ZlIjpjYXNlInRvcFRvdWNoU3RhcnQiOmE9bTticmVhaztjYXNlInRvcEFu
aW1hdGlvbkVuZCI6Y2FzZSJ0b3BBbmltYXRpb25JdGVyYXRpb24iOmNhc2UidG9wQW5pbWF0aW9u
U3RhcnQiOmE9YzticmVhaztjYXNlInRvcFRyYW5zaXRpb25FbmQiOmE9eTticmVhaztjYXNlInRv
cFNjcm9sbCI6YT1nO2JyZWFrO2Nhc2UidG9wV2hlZWwiOmE9YjticmVhaztjYXNlInRvcENvcHki
OmNhc2UidG9wQ3V0IjpjYXNlInRvcFBhc3RlIjphPWx9YT92b2lkIDA6aSgiODYiLGUpO3ZhciBz
PWEuZ2V0UG9vbGVkKG8sdCxuLHIpO3JldHVybiB1LmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNo
ZXMocyksc30sZGlkUHV0TGlzdGVuZXI6ZnVuY3Rpb24oZSx0LG4pe2lmKCJvbkNsaWNrIj09PXQm
JiFvKGUuX3RhZykpe3ZhciBpPXIoZSksdT1zLmdldE5vZGVGcm9tSW5zdGFuY2UoZSk7VFtpXXx8
KFRbaV09YS5saXN0ZW4odSwiY2xpY2siLF8pKX19LHdpbGxEZWxldGVMaXN0ZW5lcjpmdW5jdGlv
bihlLHQpe2lmKCJvbkNsaWNrIj09PXQmJiFvKGUuX3RhZykpe3ZhciBuPXIoZSk7VFtuXS5yZW1v
dmUoKSxkZWxldGUgVFtuXX19fTtlLmV4cG9ydHM9UH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIg
bz1uKDEwKSxpPXthbmltYXRpb25OYW1lOm51bGwsZWxhcHNlZFRpbWU6bnVsbCxwc2V1ZG9FbGVt
ZW50Om51bGx9O28uYXVnbWVudENsYXNzKHIsaSksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0
LG4scil9dmFyIG89bigxMCksaT17Y2xpcGJvYXJkRGF0YTpmdW5jdGlvbihlKXtyZXR1cm4iY2xp
cGJvYXJkRGF0YSJpbiBlP2UuY2xpcGJvYXJkRGF0YTp3aW5kb3cuY2xpcGJvYXJkRGF0YX19O28u
YXVnbWVudENsYXNzKHIsaSksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89
bigxMCksaT17ZGF0YTpudWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkpLGUuZXhwb3J0cz1yfSxmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2Fs
bCh0aGlzLGUsdCxuLHIpfXZhciBvPW4oMjYpLGk9e2RhdGFUcmFuc2ZlcjpudWxsfTtvLmF1Z21l
bnRDbGFzcyhyLGkpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPW4oMjIp
LGk9e3JlbGF0ZWRUYXJnZXQ6bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSxlLmV4cG9ydHM9cn0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBv
LmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDEwKSxpPXtkYXRhOm51bGx9O28uYXVnbWVudENs
YXNzKHIsaSksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89bigyMiksaT1u
KDQ0KSxhPW4oMTgxKSx1PW4oNDUpLHM9e2tleTphLGxvY2F0aW9uOm51bGwsY3RybEtleTpudWxs
LHNoaWZ0S2V5Om51bGwsYWx0S2V5Om51bGwsbWV0YUtleTpudWxsLHJlcGVhdDpudWxsLGxvY2Fs
ZTpudWxsLGdldE1vZGlmaWVyU3RhdGU6dSxjaGFyQ29kZTpmdW5jdGlvbihlKXtyZXR1cm4ia2V5
cHJlc3MiPT09ZS50eXBlP2koZSk6MH0sa2V5Q29kZTpmdW5jdGlvbihlKXtyZXR1cm4ia2V5ZG93
biI9PT1lLnR5cGV8fCJrZXl1cCI9PT1lLnR5cGU/ZS5rZXlDb2RlOjB9LHdoaWNoOmZ1bmN0aW9u
KGUpe3JldHVybiJrZXlwcmVzcyI9PT1lLnR5cGU/aShlKToia2V5ZG93biI9PT1lLnR5cGV8fCJr
ZXl1cCI9PT1lLnR5cGU/ZS5rZXlDb2RlOjB9fTtvLmF1Z21lbnRDbGFzcyhyLHMpLGUuZXhwb3J0
cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0
dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPW4oMjIpLGk9big0NSksYT17dG91Y2hlczpu
dWxsLHRhcmdldFRvdWNoZXM6bnVsbCxjaGFuZ2VkVG91Y2hlczpudWxsLGFsdEtleTpudWxsLG1l
dGFLZXk6bnVsbCxjdHJsS2V5Om51bGwsc2hpZnRLZXk6bnVsbCxnZXRNb2RpZmllclN0YXRlOml9
O28uYXVnbWVudENsYXNzKHIsYSksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFy
IG89bigxMCksaT17cHJvcGVydHlOYW1lOm51bGwsZWxhcHNlZFRpbWU6bnVsbCxwc2V1ZG9FbGVt
ZW50Om51bGx9O28uYXVnbWVudENsYXNzKHIsaSksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0
LG4scil9dmFyIG89bigyNiksaT17ZGVsdGFYOmZ1bmN0aW9uKGUpe3JldHVybiJkZWx0YVgiaW4g
ZT9lLmRlbHRhWDoid2hlZWxEZWx0YVgiaW4gZT8tZS53aGVlbERlbHRhWDowfSxkZWx0YVk6ZnVu
Y3Rpb24oZSl7cmV0dXJuImRlbHRhWSJpbiBlP2UuZGVsdGFZOiJ3aGVlbERlbHRhWSJpbiBlPy1l
LndoZWVsRGVsdGFZOiJ3aGVlbERlbHRhImluIGU/LWUud2hlZWxEZWx0YTowfSxkZWx0YVo6bnVs
bCxkZWx0YU1vZGU6bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSxlLmV4cG9ydHM9cn0sZnVuY3Rp
b24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXtmb3IodmFyIHQ9MSxuPTAsbz0wLGk9
ZS5sZW5ndGgsYT1pJi00O288YTspe2Zvcih2YXIgdT1NYXRoLm1pbihvKzQwOTYsYSk7bzx1O28r
PTQpbis9KHQrPWUuY2hhckNvZGVBdChvKSkrKHQrPWUuY2hhckNvZGVBdChvKzEpKSsodCs9ZS5j
aGFyQ29kZUF0KG8rMikpKyh0Kz1lLmNoYXJDb2RlQXQobyszKSk7dCU9cixuJT1yfWZvcig7bzxp
O28rKyluKz10Kz1lLmNoYXJDb2RlQXQobyk7cmV0dXJuIHQlPXIsbiU9cix0fG48PDE2fXZhciBy
PTY1NTIxO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSx0LG4scil7dmFyIG89bnVsbD09dHx8ImJvb2xlYW4iPT10eXBlb2YgdHx8IiI9PT10O2lm
KG8pcmV0dXJuIiI7dmFyIGE9aXNOYU4odCk7aWYocnx8YXx8MD09PXR8fGkuaGFzT3duUHJvcGVy
dHkoZSkmJmlbZV0pcmV0dXJuIiIrdDtpZigic3RyaW5nIj09dHlwZW9mIHQpe3Q9dC50cmltKCl9
cmV0dXJuIHQrInB4In12YXIgbz1uKDU4KSxpPShuKDIpLG8uaXNVbml0bGVzc051bWJlcik7ZS5l
eHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihu
dWxsPT1lKXJldHVybiBudWxsO2lmKDE9PT1lLm5vZGVUeXBlKXJldHVybiBlO3ZhciB0PWEuZ2V0
KGUpO3JldHVybiB0Pyh0PXUodCksdD9pLmdldE5vZGVGcm9tSW5zdGFuY2UodCk6bnVsbCk6dm9p
ZCgiZnVuY3Rpb24iPT10eXBlb2YgZS5yZW5kZXI/bygiNDQiKTpvKCI0NSIsT2JqZWN0LmtleXMo
ZSkpKX12YXIgbz1uKDMpLGk9KG4oMTEpLG4oNSkpLGE9bigyMSksdT1uKDcyKTtuKDEpLG4oMik7
ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24odCl7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSx0LG4scil7aWYoZSYmIm9iamVjdCI9PXR5cGVvZiBlKXt2YXIgbz1lLGk9dm9p
ZCAwPT09b1tuXTtpJiZudWxsIT10JiYob1tuXT10KX19ZnVuY3Rpb24gbyhlLHQpe2lmKG51bGw9
PWUpcmV0dXJuIGU7dmFyIG49e307cmV0dXJuIGkoZSxyLG4pLG59dmFyIGk9KG4oMzgpLG4oNzgp
KTtuKDIpOyJ1bmRlZmluZWQiIT10eXBlb2YgdCYmdC5lbnYsMSxlLmV4cG9ydHM9b30pLmNhbGwo
dCxuKDg3KSl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihl
LmtleSl7dmFyIHQ9aVtlLmtleV18fGUua2V5O2lmKCJVbmlkZW50aWZpZWQiIT09dClyZXR1cm4g
dH1pZigia2V5cHJlc3MiPT09ZS50eXBlKXt2YXIgbj1vKGUpO3JldHVybiAxMz09PW4/IkVudGVy
IjpTdHJpbmcuZnJvbUNoYXJDb2RlKG4pfXJldHVybiJrZXlkb3duIj09PWUudHlwZXx8ImtleXVw
Ij09PWUudHlwZT9hW2Uua2V5Q29kZV18fCJVbmlkZW50aWZpZWQiOiIifXZhciBvPW4oNDQpLGk9
e0VzYzoiRXNjYXBlIixTcGFjZWJhcjoiICIsTGVmdDoiQXJyb3dMZWZ0IixVcDoiQXJyb3dVcCIs
UmlnaHQ6IkFycm93UmlnaHQiLERvd246IkFycm93RG93biIsRGVsOiJEZWxldGUiLFdpbjoiT1Mi
LE1lbnU6IkNvbnRleHRNZW51IixBcHBzOiJDb250ZXh0TWVudSIsU2Nyb2xsOiJTY3JvbGxMb2Nr
IixNb3pQcmludGFibGVLZXk6IlVuaWRlbnRpZmllZCJ9LGE9ezg6IkJhY2tzcGFjZSIsOToiVGFi
IiwxMjoiQ2xlYXIiLDEzOiJFbnRlciIsMTY6IlNoaWZ0IiwxNzoiQ29udHJvbCIsMTg6IkFsdCIs
MTk6IlBhdXNlIiwyMDoiQ2Fwc0xvY2siLDI3OiJFc2NhcGUiLDMyOiIgIiwzMzoiUGFnZVVwIiwz
NDoiUGFnZURvd24iLDM1OiJFbmQiLDM2OiJIb21lIiwzNzoiQXJyb3dMZWZ0IiwzODoiQXJyb3dV
cCIsMzk6IkFycm93UmlnaHQiLDQwOiJBcnJvd0Rvd24iLDQ1OiJJbnNlcnQiLDQ2OiJEZWxldGUi
LDExMjoiRjEiLDExMzoiRjIiLDExNDoiRjMiLDExNToiRjQiLDExNjoiRjUiLDExNzoiRjYiLDEx
ODoiRjciLDExOToiRjgiLDEyMDoiRjkiLDEyMToiRjEwIiwxMjI6IkYxMSIsMTIzOiJGMTIiLDE0
NDoiTnVtTG9jayIsMTQ1OiJTY3JvbGxMb2NrIiwyMjQ6Ik1ldGEifTtlLmV4cG9ydHM9cn0sZnVu
Y3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXt2YXIgdD1lJiYociYmZVtyXXx8
ZVtvXSk7aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJuIHR9dmFyIHI9ImZ1bmN0aW9uIj09
dHlwZW9mIFN5bWJvbCYmU3ltYm9sLml0ZXJhdG9yLG89IkBAaXRlcmF0b3IiO2UuZXhwb3J0cz1u
fSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe2Zvcig7ZSYmZS5maXJz
dENoaWxkOyllPWUuZmlyc3RDaGlsZDtyZXR1cm4gZX1mdW5jdGlvbiByKGUpe2Zvcig7ZTspe2lm
KGUubmV4dFNpYmxpbmcpcmV0dXJuIGUubmV4dFNpYmxpbmc7ZT1lLnBhcmVudE5vZGV9fWZ1bmN0
aW9uIG8oZSx0KXtmb3IodmFyIG89bihlKSxpPTAsYT0wO287KXtpZigzPT09by5ub2RlVHlwZSl7
aWYoYT1pK28udGV4dENvbnRlbnQubGVuZ3RoLGk8PXQmJmE+PXQpcmV0dXJue25vZGU6byxvZmZz
ZXQ6dC1pfTtpPWF9bz1uKHIobykpfX1lLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7dmFyIG49e307cmV0dXJuIG5bZS50b0xvd2VyQ2FzZSgp
XT10LnRvTG93ZXJDYXNlKCksblsiV2Via2l0IitlXT0id2Via2l0Iit0LG5bIk1veiIrZV09Im1v
eiIrdCxuWyJtcyIrZV09Ik1TIit0LG5bIk8iK2VdPSJvIit0LnRvTG93ZXJDYXNlKCksbn1mdW5j
dGlvbiBvKGUpe2lmKHVbZV0pcmV0dXJuIHVbZV07aWYoIWFbZV0pcmV0dXJuIGU7dmFyIHQ9YVtl
XTtmb3IodmFyIG4gaW4gdClpZih0Lmhhc093blByb3BlcnR5KG4pJiZuIGluIHMpcmV0dXJuIHVb
ZV09dFtuXTtyZXR1cm4iIn12YXIgaT1uKDYpLGE9e2FuaW1hdGlvbmVuZDpyKCJBbmltYXRpb24i
LCJBbmltYXRpb25FbmQiKSxhbmltYXRpb25pdGVyYXRpb246cigiQW5pbWF0aW9uIiwiQW5pbWF0
aW9uSXRlcmF0aW9uIiksYW5pbWF0aW9uc3RhcnQ6cigiQW5pbWF0aW9uIiwiQW5pbWF0aW9uU3Rh
cnQiKSx0cmFuc2l0aW9uZW5kOnIoIlRyYW5zaXRpb24iLCJUcmFuc2l0aW9uRW5kIil9LHU9e30s
cz17fTtpLmNhblVzZURPTSYmKHM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iikuc3R5bGUs
IkFuaW1hdGlvbkV2ZW50ImluIHdpbmRvd3x8KGRlbGV0ZSBhLmFuaW1hdGlvbmVuZC5hbmltYXRp
b24sZGVsZXRlIGEuYW5pbWF0aW9uaXRlcmF0aW9uLmFuaW1hdGlvbixkZWxldGUgYS5hbmltYXRp
b25zdGFydC5hbmltYXRpb24pLCJUcmFuc2l0aW9uRXZlbnQiaW4gd2luZG93fHxkZWxldGUgYS50
cmFuc2l0aW9uZW5kLnRyYW5zaXRpb24pLGUuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuJyInK28oZSkrJyInfXZhciBvPW4oMjgpO2Uu
ZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNjcpO2UuZXhw
b3J0cz1yLnJlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyfSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9
fWZ1bmN0aW9uIG8oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9y
KCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBpKGUsdCl7aWYo
IWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2Vk
IC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVv
ZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24gYShlLHQpe2lmKCJmdW5jdGlv
biIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNz
aW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2Uu
cHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1
ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmpl
Y3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189
dCl9ZnVuY3Rpb24gdSgpe3ZhciBlLHQ9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1
bWVudHNbMF0/YXJndW1lbnRzWzBdOiJzdG9yZSIsbj1hcmd1bWVudHNbMV0scj1ufHx0KyJTdWJz
Y3JpcHRpb24iLHU9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbihyLGEpe28odGhpcyxuKTt2YXIgdT1p
KHRoaXMsZS5jYWxsKHRoaXMscixhKSk7cmV0dXJuIHVbdF09ci5zdG9yZSx1fXJldHVybiBhKG4s
ZSksbi5wcm90b3R5cGUuZ2V0Q2hpbGRDb250ZXh0PWZ1bmN0aW9uKCl7dmFyIGU7cmV0dXJuIGU9
e30sZVt0XT10aGlzW3RdLGVbcl09bnVsbCxlfSxuLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24o
KXtyZXR1cm4gcy5DaGlsZHJlbi5vbmx5KHRoaXMucHJvcHMuY2hpbGRyZW4pfSxufShzLkNvbXBv
bmVudCk7cmV0dXJuIHUucHJvcFR5cGVzPXtzdG9yZTpwLnN0b3JlU2hhcGUuaXNSZXF1aXJlZCxj
aGlsZHJlbjpsLmRlZmF1bHQuZWxlbWVudC5pc1JlcXVpcmVkfSx1LmNoaWxkQ29udGV4dFR5cGVz
PShlPXt9LGVbdF09cC5zdG9yZVNoYXBlLmlzUmVxdWlyZWQsZVtyXT1wLnN1YnNjcmlwdGlvblNo
YXBlLGUpLHV9dC5fX2VzTW9kdWxlPSEwLHQuY3JlYXRlUHJvdmlkZXI9dTt2YXIgcz1uKDEyKSxj
PW4oNTYpLGw9cihjKSxwPW4oODIpLGQ9big1MCk7cihkKTt0LmRlZmF1bHQ9dSgpfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVs
ZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIG8oZSx0KXt2YXIgbj17fTtmb3IodmFyIHIgaW4gZSl0
LmluZGV4T2Yocik+PTB8fE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHIp
JiYobltyXT1lW3JdKTtyZXR1cm4gbn1mdW5jdGlvbiBpKGUsdCxuKXtmb3IodmFyIHI9dC5sZW5n
dGgtMTtyPj0wO3ItLSl7dmFyIG89dFtyXShlKTtpZihvKXJldHVybiBvfXJldHVybiBmdW5jdGlv
bih0LHIpe3Rocm93IG5ldyBFcnJvcigiSW52YWxpZCB2YWx1ZSBvZiB0eXBlICIrdHlwZW9mIGUr
IiBmb3IgIituKyIgYXJndW1lbnQgd2hlbiBjb25uZWN0aW5nIGNvbXBvbmVudCAiK3Iud3JhcHBl
ZENvbXBvbmVudE5hbWUrIi4iKX19ZnVuY3Rpb24gYShlLHQpe3JldHVybiBlPT09dH1mdW5jdGlv
biB1KCl7dmFyIGU9YXJndW1lbnRzLmxlbmd0aD4wJiZ2b2lkIDAhPT1hcmd1bWVudHNbMF0/YXJn
dW1lbnRzWzBdOnt9LHQ9ZS5jb25uZWN0SE9DLG49dm9pZCAwPT09dD9sLmRlZmF1bHQ6dCxyPWUu
bWFwU3RhdGVUb1Byb3BzRmFjdG9yaWVzLHU9dm9pZCAwPT09cj9tLmRlZmF1bHQ6cixjPWUubWFw
RGlzcGF0Y2hUb1Byb3BzRmFjdG9yaWVzLHA9dm9pZCAwPT09Yz9oLmRlZmF1bHQ6YyxmPWUubWVy
Z2VQcm9wc0ZhY3Rvcmllcyx2PXZvaWQgMD09PWY/Zy5kZWZhdWx0OmYseT1lLnNlbGVjdG9yRmFj
dG9yeSxiPXZvaWQgMD09PXk/Xy5kZWZhdWx0Onk7cmV0dXJuIGZ1bmN0aW9uKGUsdCxyKXt2YXIg
Yz1hcmd1bWVudHMubGVuZ3RoPjMmJnZvaWQgMCE9PWFyZ3VtZW50c1szXT9hcmd1bWVudHNbM106
e30sbD1jLnB1cmUsZj12b2lkIDA9PT1sfHxsLGg9Yy5hcmVTdGF0ZXNFcXVhbCxtPXZvaWQgMD09
PWg/YTpoLHk9Yy5hcmVPd25Qcm9wc0VxdWFsLGc9dm9pZCAwPT09eT9kLmRlZmF1bHQ6eSxfPWMu
YXJlU3RhdGVQcm9wc0VxdWFsLEM9dm9pZCAwPT09Xz9kLmRlZmF1bHQ6XyxFPWMuYXJlTWVyZ2Vk
UHJvcHNFcXVhbCx3PXZvaWQgMD09PUU/ZC5kZWZhdWx0OkUsVD1vKGMsWyJwdXJlIiwiYXJlU3Rh
dGVzRXF1YWwiLCJhcmVPd25Qcm9wc0VxdWFsIiwiYXJlU3RhdGVQcm9wc0VxdWFsIiwiYXJlTWVy
Z2VkUHJvcHNFcXVhbCJdKSxQPWkoZSx1LCJtYXBTdGF0ZVRvUHJvcHMiKSx4PWkodCxwLCJtYXBE
aXNwYXRjaFRvUHJvcHMiKSxPPWkocix2LCJtZXJnZVByb3BzIik7cmV0dXJuIG4oYixzKHttZXRo
b2ROYW1lOiJjb25uZWN0IixnZXREaXNwbGF5TmFtZTpmdW5jdGlvbihlKXtyZXR1cm4iQ29ubmVj
dCgiK2UrIikifSxzaG91bGRIYW5kbGVTdGF0ZUNoYW5nZXM6Qm9vbGVhbihlKSxpbml0TWFwU3Rh
dGVUb1Byb3BzOlAsaW5pdE1hcERpc3BhdGNoVG9Qcm9wczp4LGluaXRNZXJnZVByb3BzOk8scHVy
ZTpmLGFyZVN0YXRlc0VxdWFsOm0sYXJlT3duUHJvcHNFcXVhbDpnLGFyZVN0YXRlUHJvcHNFcXVh
bDpDLGFyZU1lcmdlZFByb3BzRXF1YWw6d30sVCkpfX10Ll9fZXNNb2R1bGU9ITA7dmFyIHM9T2Jq
ZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3Qr
Kyl7dmFyIG49YXJndW1lbnRzW3RdO2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFz
T3duUHJvcGVydHkuY2FsbChuLHIpJiYoZVtyXT1uW3JdKX1yZXR1cm4gZX07dC5jcmVhdGVDb25u
ZWN0PXU7dmFyIGM9big3OSksbD1yKGMpLHA9bigxOTUpLGQ9cihwKSxmPW4oMTg5KSxoPXIoZiks
dj1uKDE5MCksbT1yKHYpLHk9bigxOTEpLGc9cih5KSxiPW4oMTkyKSxfPXIoYik7dC5kZWZhdWx0
PXUoKX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiJm
dW5jdGlvbiI9PXR5cGVvZiBlPygwLHUud3JhcE1hcFRvUHJvcHNGdW5jKShlLCJtYXBEaXNwYXRj
aFRvUHJvcHMiKTp2b2lkIDB9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZT92b2lkIDA6KDAsdS53cmFw
TWFwVG9Qcm9wc0NvbnN0YW50KShmdW5jdGlvbihlKXtyZXR1cm57ZGlzcGF0Y2g6ZX19KX1mdW5j
dGlvbiBpKGUpe3JldHVybiBlJiYib2JqZWN0Ij09dHlwZW9mIGU/KDAsdS53cmFwTWFwVG9Qcm9w
c0NvbnN0YW50KShmdW5jdGlvbih0KXtyZXR1cm4oMCxhLmJpbmRBY3Rpb25DcmVhdG9ycykoZSx0
KX0pOnZvaWQgMH10Ll9fZXNNb2R1bGU9ITAsdC53aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNGdW5j
dGlvbj1yLHQud2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lzTWlzc2luZz1vLHQud2hlbk1hcERpc3Bh
dGNoVG9Qcm9wc0lzT2JqZWN0PWk7dmFyIGE9bigzMCksdT1uKDgwKTt0LmRlZmF1bHQ9W3Isbyxp
XX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiJmdW5j
dGlvbiI9PXR5cGVvZiBlPygwLGkud3JhcE1hcFRvUHJvcHNGdW5jKShlLCJtYXBTdGF0ZVRvUHJv
cHMiKTp2b2lkIDB9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZT92b2lkIDA6KDAsaS53cmFwTWFwVG9Q
cm9wc0NvbnN0YW50KShmdW5jdGlvbigpe3JldHVybnt9fSl9dC5fX2VzTW9kdWxlPSEwLHQud2hl
bk1hcFN0YXRlVG9Qcm9wc0lzRnVuY3Rpb249cix0LndoZW5NYXBTdGF0ZVRvUHJvcHNJc01pc3Np
bmc9bzt2YXIgaT1uKDgwKTt0LmRlZmF1bHQ9W3Isb119LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19
ZnVuY3Rpb24gbyhlLHQsbil7cmV0dXJuIHMoe30sbixlLHQpfWZ1bmN0aW9uIGkoZSl7cmV0dXJu
IGZ1bmN0aW9uKHQsbil7dmFyIHI9KG4uZGlzcGxheU5hbWUsbi5wdXJlKSxvPW4uYXJlTWVyZ2Vk
UHJvcHNFcXVhbCxpPSExLGE9dm9pZCAwO3JldHVybiBmdW5jdGlvbih0LG4sdSl7dmFyIHM9ZSh0
LG4sdSk7CityZXR1cm4gaT9yJiZvKHMsYSl8fChhPXMpOihpPSEwLGE9cyksYX19fWZ1bmN0aW9u
IGEoZSl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIGU/aShlKTp2b2lkIDB9ZnVuY3Rpb24gdShl
KXtyZXR1cm4gZT92b2lkIDA6ZnVuY3Rpb24oKXtyZXR1cm4gb319dC5fX2VzTW9kdWxlPSEwO3Zh
ciBzPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxl
bmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90
eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9O3QuZGVm
YXVsdE1lcmdlUHJvcHM9byx0LndyYXBNZXJnZVByb3BzRnVuYz1pLHQud2hlbk1lcmdlUHJvcHNJ
c0Z1bmN0aW9uPWEsdC53aGVuTWVyZ2VQcm9wc0lzT21pdHRlZD11O3ZhciBjPW4oODMpO3IoYyk7
dC5kZWZhdWx0PVthLHVdfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIG8oZSx0KXt2
YXIgbj17fTtmb3IodmFyIHIgaW4gZSl0LmluZGV4T2Yocik+PTB8fE9iamVjdC5wcm90b3R5cGUu
aGFzT3duUHJvcGVydHkuY2FsbChlLHIpJiYobltyXT1lW3JdKTtyZXR1cm4gbn1mdW5jdGlvbiBp
KGUsdCxuLHIpe3JldHVybiBmdW5jdGlvbihvLGkpe3JldHVybiBuKGUobyxpKSx0KHIsaSksaSl9
fWZ1bmN0aW9uIGEoZSx0LG4scixvKXtmdW5jdGlvbiBpKG8saSl7cmV0dXJuIGg9byx2PWksbT1l
KGgsdikseT10KHIsdiksZz1uKG0seSx2KSxmPSEwLGd9ZnVuY3Rpb24gYSgpe3JldHVybiBtPWUo
aCx2KSx0LmRlcGVuZHNPbk93blByb3BzJiYoeT10KHIsdikpLGc9bihtLHksdil9ZnVuY3Rpb24g
dSgpe3JldHVybiBlLmRlcGVuZHNPbk93blByb3BzJiYobT1lKGgsdikpLHQuZGVwZW5kc09uT3du
UHJvcHMmJih5PXQocix2KSksZz1uKG0seSx2KX1mdW5jdGlvbiBzKCl7dmFyIHQ9ZShoLHYpLHI9
IWQodCxtKTtyZXR1cm4gbT10LHImJihnPW4obSx5LHYpKSxnfWZ1bmN0aW9uIGMoZSx0KXt2YXIg
bj0hcCh0LHYpLHI9IWwoZSxoKTtyZXR1cm4gaD1lLHY9dCxuJiZyP2EoKTpuP3UoKTpyP3MoKTpn
fXZhciBsPW8uYXJlU3RhdGVzRXF1YWwscD1vLmFyZU93blByb3BzRXF1YWwsZD1vLmFyZVN0YXRl
UHJvcHNFcXVhbCxmPSExLGg9dm9pZCAwLHY9dm9pZCAwLG09dm9pZCAwLHk9dm9pZCAwLGc9dm9p
ZCAwO3JldHVybiBmdW5jdGlvbihlLHQpe3JldHVybiBmP2MoZSx0KTppKGUsdCl9fWZ1bmN0aW9u
IHUoZSx0KXt2YXIgbj10LmluaXRNYXBTdGF0ZVRvUHJvcHMscj10LmluaXRNYXBEaXNwYXRjaFRv
UHJvcHMsdT10LmluaXRNZXJnZVByb3BzLHM9byh0LFsiaW5pdE1hcFN0YXRlVG9Qcm9wcyIsImlu
aXRNYXBEaXNwYXRjaFRvUHJvcHMiLCJpbml0TWVyZ2VQcm9wcyJdKSxjPW4oZSxzKSxsPXIoZSxz
KSxwPXUoZSxzKSxkPXMucHVyZT9hOmk7cmV0dXJuIGQoYyxsLHAsZSxzKX10Ll9fZXNNb2R1bGU9
ITAsdC5pbXB1cmVGaW5hbFByb3BzU2VsZWN0b3JGYWN0b3J5PWksdC5wdXJlRmluYWxQcm9wc1Nl
bGVjdG9yRmFjdG9yeT1hLHQuZGVmYXVsdD11O3ZhciBzPW4oMTkzKTtyKHMpfSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9l
OntkZWZhdWx0OmV9fWZ1bmN0aW9uIG8oZSx0LG4pe2lmKCFlKXRocm93IG5ldyBFcnJvcigiVW5l
eHBlY3RlZCB2YWx1ZSBmb3IgIit0KyIgaW4gIituKyIuIik7Im1hcFN0YXRlVG9Qcm9wcyIhPT10
JiYibWFwRGlzcGF0Y2hUb1Byb3BzIiE9PXR8fGUuaGFzT3duUHJvcGVydHkoImRlcGVuZHNPbk93
blByb3BzIil8fCgwLHUuZGVmYXVsdCkoIlRoZSBzZWxlY3RvciBmb3IgIit0KyIgb2YgIituKyIg
ZGlkIG5vdCBzcGVjaWZ5IGEgdmFsdWUgZm9yIGRlcGVuZHNPbk93blByb3BzLiIpfWZ1bmN0aW9u
IGkoZSx0LG4scil7byhlLCJtYXBTdGF0ZVRvUHJvcHMiLHIpLG8odCwibWFwRGlzcGF0Y2hUb1By
b3BzIixyKSxvKG4sIm1lcmdlUHJvcHMiLHIpfXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9aTt2
YXIgYT1uKDUwKSx1PXIoYSl9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4o
ZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2Fs
bCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiByKCl7dmFyIGU9W10sdD1bXTtyZXR1
cm57Y2xlYXI6ZnVuY3Rpb24oKXt0PW8sZT1vfSxub3RpZnk6ZnVuY3Rpb24oKXtmb3IodmFyIG49
ZT10LHI9MDtyPG4ubGVuZ3RoO3IrKyluW3JdKCl9LGdldDpmdW5jdGlvbigpe3JldHVybiB0fSxz
dWJzY3JpYmU6ZnVuY3Rpb24obil7dmFyIHI9ITA7cmV0dXJuIHQ9PT1lJiYodD1lLnNsaWNlKCkp
LHQucHVzaChuKSxmdW5jdGlvbigpe3ImJmUhPT1vJiYocj0hMSx0PT09ZSYmKHQ9ZS5zbGljZSgp
KSx0LnNwbGljZSh0LmluZGV4T2YobiksMSkpfX19fXQuX19lc01vZHVsZT0hMDt2YXIgbz1udWxs
LGk9e25vdGlmeTpmdW5jdGlvbigpe319LGE9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQscixvKXtu
KHRoaXMsZSksdGhpcy5zdG9yZT10LHRoaXMucGFyZW50U3ViPXIsdGhpcy5vblN0YXRlQ2hhbmdl
PW8sdGhpcy51bnN1YnNjcmliZT1udWxsLHRoaXMubGlzdGVuZXJzPWl9cmV0dXJuIGUucHJvdG90
eXBlLmFkZE5lc3RlZFN1Yj1mdW5jdGlvbihlKXtyZXR1cm4gdGhpcy50cnlTdWJzY3JpYmUoKSx0
aGlzLmxpc3RlbmVycy5zdWJzY3JpYmUoZSl9LGUucHJvdG90eXBlLm5vdGlmeU5lc3RlZFN1YnM9
ZnVuY3Rpb24oKXt0aGlzLmxpc3RlbmVycy5ub3RpZnkoKX0sZS5wcm90b3R5cGUuaXNTdWJzY3Jp
YmVkPWZ1bmN0aW9uKCl7cmV0dXJuIEJvb2xlYW4odGhpcy51bnN1YnNjcmliZSl9LGUucHJvdG90
eXBlLnRyeVN1YnNjcmliZT1mdW5jdGlvbigpe3RoaXMudW5zdWJzY3JpYmV8fCh0aGlzLnVuc3Vi
c2NyaWJlPXRoaXMucGFyZW50U3ViP3RoaXMucGFyZW50U3ViLmFkZE5lc3RlZFN1Yih0aGlzLm9u
U3RhdGVDaGFuZ2UpOnRoaXMuc3RvcmUuc3Vic2NyaWJlKHRoaXMub25TdGF0ZUNoYW5nZSksdGhp
cy5saXN0ZW5lcnM9cigpKX0sZS5wcm90b3R5cGUudHJ5VW5zdWJzY3JpYmU9ZnVuY3Rpb24oKXt0
aGlzLnVuc3Vic2NyaWJlJiYodGhpcy51bnN1YnNjcmliZSgpLHRoaXMudW5zdWJzY3JpYmU9bnVs
bCx0aGlzLmxpc3RlbmVycy5jbGVhcigpLHRoaXMubGlzdGVuZXJzPWkpfSxlfSgpO3QuZGVmYXVs
dD1hfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIGU9
PT10PzAhPT1lfHwwIT09dHx8MS9lPT09MS90OmUhPT1lJiZ0IT09dH1mdW5jdGlvbiByKGUsdCl7
aWYobihlLHQpKXJldHVybiEwO2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWV8fCJvYmpl
Y3QiIT10eXBlb2YgdHx8bnVsbD09PXQpcmV0dXJuITE7dmFyIHI9T2JqZWN0LmtleXMoZSksaT1P
YmplY3Qua2V5cyh0KTtpZihyLmxlbmd0aCE9PWkubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgYT0w
O2E8ci5sZW5ndGg7YSsrKWlmKCFvLmNhbGwodCxyW2FdKXx8IW4oZVtyW2FdXSx0W3JbYV1dKSly
ZXR1cm4hMTtyZXR1cm4hMH10Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PXI7dmFyIG89T2JqZWN0
LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eX0sZnVuY3Rpb24oZSx0LG4peyJ1bmRlZmluZWQiPT10
eXBlb2YgUHJvbWlzZSYmKG4oMjEwKS5lbmFibGUoKSx3aW5kb3cuUHJvbWlzZT1uKDIwOSkpLG4o
MjEyKSxPYmplY3QuYXNzaWduPW4oMjA4KX0sZnVuY3Rpb24oZSx0KXsoZnVuY3Rpb24odCl7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7dS5sZW5ndGh8fChhKCkscz0hMCksdVt1Lmxlbmd0aF09
ZX1mdW5jdGlvbiByKCl7Zm9yKDtjPHUubGVuZ3RoOyl7dmFyIGU9YztpZihjKz0xLHVbZV0uY2Fs
bCgpLGM+bCl7Zm9yKHZhciB0PTAsbj11Lmxlbmd0aC1jO3Q8bjt0KyspdVt0XT11W3QrY107dS5s
ZW5ndGgtPWMsYz0wfX11Lmxlbmd0aD0wLGM9MCxzPSExfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9MSxu
PW5ldyBkKGUpLHI9ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIiIpO3JldHVybiBuLm9ic2VydmUo
cix7Y2hhcmFjdGVyRGF0YTohMH0pLGZ1bmN0aW9uKCl7dD0tdCxyLmRhdGE9dH19ZnVuY3Rpb24g
aShlKXtyZXR1cm4gZnVuY3Rpb24oKXtmdW5jdGlvbiB0KCl7Y2xlYXJUaW1lb3V0KG4pLGNsZWFy
SW50ZXJ2YWwociksZSgpfXZhciBuPXNldFRpbWVvdXQodCwwKSxyPXNldEludGVydmFsKHQsNTAp
fX1lLmV4cG9ydHM9bjt2YXIgYSx1PVtdLHM9ITEsYz0wLGw9MTAyNCxwPSJ1bmRlZmluZWQiIT10
eXBlb2YgdD90OnNlbGYsZD1wLk11dGF0aW9uT2JzZXJ2ZXJ8fHAuV2ViS2l0TXV0YXRpb25PYnNl
cnZlcjthPSJmdW5jdGlvbiI9PXR5cGVvZiBkP28ocik6aShyKSxuLnJlcXVlc3RGbHVzaD1hLG4u
bWFrZVJlcXVlc3RDYWxsRnJvbVRpbWVyPWl9KS5jYWxsKHQsZnVuY3Rpb24oKXtyZXR1cm4gdGhp
c30oKSl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihlJiZl
Ll9fZXNNb2R1bGUpcmV0dXJuIGU7dmFyIHQ9e307aWYobnVsbCE9ZSlmb3IodmFyIG4gaW4gZSlP
YmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZSxuKSYmKHRbbl09ZVtuXSk7cmV0
dXJuIHQuZGVmYXVsdD1lLHR9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2
YWx1ZTohMH0pLHQuY2xlYXJDb21wbGV0ZWQ9dC5jb21wbGV0ZUFsbD10LmNvbXBsZXRlVG9kbz10
LmVkaXRUb2RvPXQuZGVsZXRlVG9kbz10LmFkZFRvZG89dm9pZCAwO3ZhciBvPW4oODUpLGk9cihv
KTt0LmFkZFRvZG89ZnVuY3Rpb24oZSl7cmV0dXJue3R5cGU6aS5BRERfVE9ETyx0ZXh0OmV9fSx0
LmRlbGV0ZVRvZG89ZnVuY3Rpb24oZSl7cmV0dXJue3R5cGU6aS5ERUxFVEVfVE9ETyxpZDplfX0s
dC5lZGl0VG9kbz1mdW5jdGlvbihlLHQpe3JldHVybnt0eXBlOmkuRURJVF9UT0RPLGlkOmUsdGV4
dDp0fX0sdC5jb21wbGV0ZVRvZG89ZnVuY3Rpb24oZSl7cmV0dXJue3R5cGU6aS5DT01QTEVURV9U
T0RPLGlkOmV9fSx0LmNvbXBsZXRlQWxsPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6aS5DT01QTEVU
RV9BTEx9fSx0LmNsZWFyQ29tcGxldGVkPWZ1bmN0aW9uKCl7cmV0dXJue3R5cGU6aS5DTEVBUl9D
T01QTEVURUR9fX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3Jl
dHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBvKGUsdCl7aWYoIShl
IGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBh
cyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gaShlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VF
cnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4g
Y2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9m
IHQ/ZTp0fWZ1bmN0aW9uIGEoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQp
dGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxs
IG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRl
KHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRh
YmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVj
dC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfWZ1bmN0aW9uIHUoZSx0LG4pe3Jl
dHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUsdCx7dmFsdWU6bixlbnVtZXJhYmxl
OiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVbdF09bixlfU9iamVjdC5kZWZpbmVQ
cm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgcyxjPWZ1bmN0aW9uKCl7ZnVu
Y3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51
bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYo
ci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBm
dW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgp
LGw9bigxMikscD1yKGwpLGQ9bigzMSksZj1yKGQpLGg9big4Niksdj0ocz17fSx1KHMsaC5TSE9X
X0FMTCwiQWxsIiksdShzLGguU0hPV19BQ1RJVkUsIkFjdGl2ZSIpLHUocyxoLlNIT1dfQ09NUExF
VEVELCJDb21wbGV0ZWQiKSxzKSxtPWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXtyZXR1cm4gbyh0
aGlzLHQpLGkodGhpcywodC5fX3Byb3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuYXBw
bHkodGhpcyxhcmd1bWVudHMpKX1yZXR1cm4gYSh0LGUpLGModCxbe2tleToicmVuZGVyVG9kb0Nv
dW50Iix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMuYWN0aXZlQ291bnQsdD0xPT09
ZT8iaXRlbSI6Iml0ZW1zIjtyZXR1cm4gcC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInNwYW4iLHtj
bGFzc05hbWU6InRvZG8tY291bnQifSxwLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgic3Ryb25nIixu
dWxsLGV8fCJObyIpLCIgIix0LCIgbGVmdCIpfX0se2tleToicmVuZGVyRmlsdGVyTGluayIsdmFs
dWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dltlXSxuPXRoaXMucHJvcHMscj1uLmZpbHRlcixvPW4ub25T
aG93O3JldHVybiBwLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiYSIse2NsYXNzTmFtZTooMCxmLmRl
ZmF1bHQpKHtzZWxlY3RlZDplPT09cn0pLHN0eWxlOntjdXJzb3I6InBvaW50ZXIifSxvbkNsaWNr
OmZ1bmN0aW9uKCl7cmV0dXJuIG8oZSl9fSx0KX19LHtrZXk6InJlbmRlckNsZWFyQnV0dG9uIix2
YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMucHJvcHMsdD1lLmNvbXBsZXRlZENvdW50LG49ZS5v
bkNsZWFyQ29tcGxldGVkO2lmKHQ+MClyZXR1cm4gcC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImJ1
dHRvbiIse2NsYXNzTmFtZToiY2xlYXItY29tcGxldGVkIixvbkNsaWNrOm59LCJDbGVhciBjb21w
bGV0ZWQiKX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzO3JldHVy
biBwLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiZm9vdGVyIix7Y2xhc3NOYW1lOiJmb290ZXIifSx0
aGlzLnJlbmRlclRvZG9Db3VudCgpLHAuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJ1bCIse2NsYXNz
TmFtZToiZmlsdGVycyJ9LFtoLlNIT1dfQUxMLGguU0hPV19BQ1RJVkUsaC5TSE9XX0NPTVBMRVRF
RF0ubWFwKGZ1bmN0aW9uKHQpe3JldHVybiBwLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgibGkiLHtr
ZXk6dH0sZS5yZW5kZXJGaWx0ZXJMaW5rKHQpKX0pKSx0aGlzLnJlbmRlckNsZWFyQnV0dG9uKCkp
fX1dKSx0fShsLkNvbXBvbmVudCk7bS5wcm9wVHlwZXM9e2NvbXBsZXRlZENvdW50OmwuUHJvcFR5
cGVzLm51bWJlci5pc1JlcXVpcmVkLGFjdGl2ZUNvdW50OmwuUHJvcFR5cGVzLm51bWJlci5pc1Jl
cXVpcmVkLGZpbHRlcjpsLlByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxvbkNsZWFyQ29tcGxl
dGVkOmwuUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxvblNob3c6bC5Qcm9wVHlwZXMuZnVuYy5p
c1JlcXVpcmVkfSx0LmRlZmF1bHQ9bX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBv
KGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNh
bGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gaShlLHQpe2lmKCFlKXRocm93IG5l
dyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkg
aGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0
aW9uIiE9dHlwZW9mIHQ/ZTp0fWZ1bmN0aW9uIGEoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2Yg
dCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVp
dGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1P
YmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJh
YmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3Rv
dHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfU9iamVjdC5k
ZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgdT1mdW5jdGlvbigp
e2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTty
LmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFsdWUiaW4g
ciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIpfX1yZXR1
cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUodCxyKSx0
fX0oKSxzPW4oMTIpLGM9cihzKSxsPW4oODQpLHA9cihsKSxkPWZ1bmN0aW9uKGUpe2Z1bmN0aW9u
IHQoKXt2YXIgZSxuLHIsYTtvKHRoaXMsdCk7Zm9yKHZhciB1PWFyZ3VtZW50cy5sZW5ndGgscz1B
cnJheSh1KSxjPTA7Yzx1O2MrKylzW2NdPWFyZ3VtZW50c1tjXTtyZXR1cm4gbj1yPWkodGhpcywo
ZT10Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsLmFwcGx5KGUsW3Ro
aXNdLmNvbmNhdChzKSkpLHIuaGFuZGxlU2F2ZT1mdW5jdGlvbihlKXswIT09ZS5sZW5ndGgmJnIu
cHJvcHMuYWRkVG9kbyhlKX0sYT1uLGkocixhKX1yZXR1cm4gYSh0LGUpLHUodCxbe2tleToicmVu
ZGVyIix2YWx1ZTpmdW5jdGlvbigpe3JldHVybiBjLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiaGVh
ZGVyIix7Y2xhc3NOYW1lOiJoZWFkZXIifSxjLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiaDEiLG51
bGwsInRvZG9zIiksYy5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQocC5kZWZhdWx0LHtuZXdUb2RvOiEw
LG9uU2F2ZTp0aGlzLmhhbmRsZVNhdmUscGxhY2Vob2xkZXI6IldoYXQgbmVlZHMgdG8gYmUgZG9u
ZT8ifSkpfX1dKSx0fShzLkNvbXBvbmVudCk7ZC5wcm9wVHlwZXM9e2FkZFRvZG86cy5Qcm9wVHlw
ZXMuZnVuYy5pc1JlcXVpcmVkfSx0LmRlZmF1bHQ9ZH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1m
dW5jdGlvbiBvKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigi
Q2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gaShlLHQpe2lmKCFl
KXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAt
IHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2Yg
dCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fWZ1bmN0aW9uIGEoZSx0KXtpZigiZnVuY3Rpb24i
IT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lv
biBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnBy
b3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6
ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0
LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQp
fWZ1bmN0aW9uIHUoZSx0LG4pe3JldHVybiB0IGluIGU/T2JqZWN0LmRlZmluZVByb3BlcnR5KGUs
dCx7dmFsdWU6bixlbnVtZXJhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMCx3cml0YWJsZTohMH0pOmVb
dF09bixlfU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2
YXIgcyxjPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRz
Lmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJv
dG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9LGw9
ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3Zh
ciByPXRbbl07ci5lbnVtZXJhYmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAs
InZhbHVlImluIHImJihyLndyaXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtl
eSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxy
JiZlKHQsciksdH19KCkscD1uKDEyKSxkPXIocCksZj1uKDIwMiksaD1yKGYpLHY9bigxOTkpLG09
cih2KSx5PW4oODYpLGc9KHM9e30sdShzLHkuU0hPV19BTEwsZnVuY3Rpb24oKXtyZXR1cm4hMH0p
LHUocyx5LlNIT1dfQUNUSVZFLGZ1bmN0aW9uKGUpe3JldHVybiFlLmNvbXBsZXRlZH0pLHUocyx5
LlNIT1dfQ09NUExFVEVELGZ1bmN0aW9uKGUpe3JldHVybiBlLmNvbXBsZXRlZH0pLHMpLGI9ZnVu
Y3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlLG4scixhO28odGhpcyx0KTtmb3IodmFyIHU9YXJn
dW1lbnRzLmxlbmd0aCxzPUFycmF5KHUpLGM9MDtjPHU7YysrKXNbY109YXJndW1lbnRzW2NdO3Jl
dHVybiBuPXI9aSh0aGlzLChlPXQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkp
LmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KHMpKSksci5zdGF0ZT17ZmlsdGVyOnkuU0hPV19B
TEx9LHIuaGFuZGxlQ2xlYXJDb21wbGV0ZWQ9ZnVuY3Rpb24oKXtyLnByb3BzLmFjdGlvbnMuY2xl
YXJDb21wbGV0ZWQoKX0sci5oYW5kbGVTaG93PWZ1bmN0aW9uKGUpe3Iuc2V0U3RhdGUoe2ZpbHRl
cjplfSl9LGE9bixpKHIsYSl9cmV0dXJuIGEodCxlKSxsKHQsW3trZXk6InJlbmRlclRvZ2dsZUFs
bCIsdmFsdWU6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5wcm9wcyxuPXQudG9kb3Mscj10LmFjdGlv
bnM7aWYobi5sZW5ndGg+MClyZXR1cm4gZC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7
Y2xhc3NOYW1lOiJ0b2dnbGUtYWxsIix0eXBlOiJjaGVja2JveCIsY2hlY2tlZDplPT09bi5sZW5n
dGgsb25DaGFuZ2U6ci5jb21wbGV0ZUFsbH0pfX0se2tleToicmVuZGVyRm9vdGVyIix2YWx1ZTpm
dW5jdGlvbihlKXt2YXIgdD10aGlzLnByb3BzLnRvZG9zLG49dGhpcy5zdGF0ZS5maWx0ZXIscj10
Lmxlbmd0aC1lO2lmKHQubGVuZ3RoKXJldHVybiBkLmRlZmF1bHQuY3JlYXRlRWxlbWVudChtLmRl
ZmF1bHQse2NvbXBsZXRlZENvdW50OmUsYWN0aXZlQ291bnQ6cixmaWx0ZXI6bixvbkNsZWFyQ29t
cGxldGVkOnRoaXMuaGFuZGxlQ2xlYXJDb21wbGV0ZWQuYmluZCh0aGlzKSxvblNob3c6dGhpcy5o
YW5kbGVTaG93LmJpbmQodGhpcyl9KX19LHtrZXk6InJlbmRlciIsdmFsdWU6ZnVuY3Rpb24oKXt2
YXIgZT10aGlzLnByb3BzLHQ9ZS50b2RvcyxuPWUuYWN0aW9ucyxyPXRoaXMuc3RhdGUuZmlsdGVy
LG89dC5maWx0ZXIoZ1tyXSksaT10LnJlZHVjZShmdW5jdGlvbihlLHQpe3JldHVybiB0LmNvbXBs
ZXRlZD9lKzE6ZX0sMCk7cmV0dXJuIGQuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJzZWN0aW9uIix7
Y2xhc3NOYW1lOiJtYWluIn0sdGhpcy5yZW5kZXJUb2dnbGVBbGwoaSksZC5kZWZhdWx0LmNyZWF0
ZUVsZW1lbnQoInVsIix7Y2xhc3NOYW1lOiJ0b2RvLWxpc3QifSxvLm1hcChmdW5jdGlvbihlKXty
ZXR1cm4gZC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoaC5kZWZhdWx0LGMoe2tleTplLmlkLHRvZG86
ZX0sbikpfSkpLHRoaXMucmVuZGVyRm9vdGVyKGkpKX19XSksdH0ocC5Db21wb25lbnQpO2IucHJv
cFR5cGVzPXt0b2RvczpwLlByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLGFjdGlvbnM6cC5Qcm9w
VHlwZXMub2JqZWN0LmlzUmVxdWlyZWR9LHQuZGVmYXVsdD1ifSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0
OmV9fWZ1bmN0aW9uIG8oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVy
cm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBpKGUsdCl7
aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxp
c2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5
cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24gYShlLHQpe2lmKCJmdW5j
dGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHBy
ZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQp
O2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2
YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihP
YmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3Rv
X189dCl9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3Zh
ciB1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisr
KXt2YXIgcj10W25dO3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxl
PSEwLCJ2YWx1ZSJpbiByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUs
ci5rZXkscil9fXJldHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUs
biksciYmZSh0LHIpLHR9fSgpLHM9bigxMiksYz1yKHMpLGw9bigzMSkscD1yKGwpLGQ9big4NCks
Zj1yKGQpLGg9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBlLG4scixhO28odGhpcyx0KTtm
b3IodmFyIHU9YXJndW1lbnRzLmxlbmd0aCxzPUFycmF5KHUpLGM9MDtjPHU7YysrKXNbY109YXJn
dW1lbnRzW2NdO3JldHVybiBuPXI9aSh0aGlzLChlPXQuX19wcm90b19ffHxPYmplY3QuZ2V0UHJv
dG90eXBlT2YodCkpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0KHMpKSksci5zdGF0ZT17ZWRp
dGluZzohMX0sci5oYW5kbGVEb3VibGVDbGljaz1mdW5jdGlvbigpe3Iuc2V0U3RhdGUoe2VkaXRp
bmc6ITB9KX0sci5oYW5kbGVTYXZlPWZ1bmN0aW9uKGUsdCl7MD09PXQubGVuZ3RoP3IucHJvcHMu
ZGVsZXRlVG9kbyhlKTpyLnByb3BzLmVkaXRUb2RvKGUsdCksci5zZXRTdGF0ZSh7ZWRpdGluZzoh
MX0pfSxhPW4saShyLGEpfXJldHVybiBhKHQsZSksdSh0LFt7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1
bmN0aW9uKCl7dmFyIGU9dGhpcyx0PXRoaXMucHJvcHMsbj10LnRvZG8scj10LmNvbXBsZXRlVG9k
byxvPXQuZGVsZXRlVG9kbyxpPXZvaWQgMDtyZXR1cm4gaT10aGlzLnN0YXRlLmVkaXRpbmc/Yy5k
ZWZhdWx0LmNyZWF0ZUVsZW1lbnQoZi5kZWZhdWx0LHt0ZXh0Om4udGV4dCxlZGl0aW5nOnRoaXMu
c3RhdGUuZWRpdGluZyxvblNhdmU6ZnVuY3Rpb24odCl7cmV0dXJuIGUuaGFuZGxlU2F2ZShuLmlk
LHQpfX0pOmMuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJkaXYiLHtjbGFzc05hbWU6InZpZXcifSxj
LmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiaW5wdXQiLHtjbGFzc05hbWU6InRvZ2dsZSIsdHlwZToi
Y2hlY2tib3giLGNoZWNrZWQ6bi5jb21wbGV0ZWQsb25DaGFuZ2U6ZnVuY3Rpb24oKXtyZXR1cm4g
cihuLmlkKX19KSxjLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgibGFiZWwiLHtvbkRvdWJsZUNsaWNr
OnRoaXMuaGFuZGxlRG91YmxlQ2xpY2t9LG4udGV4dCksYy5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQo
ImJ1dHRvbiIse2NsYXNzTmFtZToiZGVzdHJveSIsb25DbGljazpmdW5jdGlvbigpe3JldHVybiBv
KG4uaWQpfX0pKSxjLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgibGkiLHtjbGFzc05hbWU6KDAscC5k
ZWZhdWx0KSh7Y29tcGxldGVkOm4uY29tcGxldGVkLGVkaXRpbmc6dGhpcy5zdGF0ZS5lZGl0aW5n
fSl9LGkpfX1dKSx0fShzLkNvbXBvbmVudCk7aC5wcm9wVHlwZXM9e3RvZG86cy5Qcm9wVHlwZXMu
b2JqZWN0LmlzUmVxdWlyZWQsZWRpdFRvZG86cy5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLGRl
bGV0ZVRvZG86cy5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLGNvbXBsZXRlVG9kbzpzLlByb3BU
eXBlcy5mdW5jLmlzUmVxdWlyZWR9LHQuZGVmYXVsdD1ofSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYoZSYmZS5fX2VzTW9kdWxlKXJldHVybiBlO3ZhciB0PXt9
O2lmKG51bGwhPWUpZm9yKHZhciBuIGluIGUpT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0
eS5jYWxsKGUsbikmJih0W25dPWVbbl0pO3JldHVybiB0LmRlZmF1bHQ9ZSx0fWZ1bmN0aW9uIG8o
ZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fU9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT1uKDEyKSxhPW8oaSksdT1uKDMw
KSxzPW4oODEpLGM9bigyMDApLGw9byhjKSxwPW4oMjAxKSxkPW8ocCksZj1uKDE5OCksaD1yKGYp
LHY9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50b2RvcyxuPWUuYWN0aW9ucztyZXR1cm4gYS5kZWZhdWx0
LmNyZWF0ZUVsZW1lbnQoImRpdiIsbnVsbCxhLmRlZmF1bHQuY3JlYXRlRWxlbWVudChsLmRlZmF1
bHQse2FkZFRvZG86bi5hZGRUb2RvfSksYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoZC5kZWZhdWx0
LHt0b2Rvczp0LGFjdGlvbnM6bn0pKX07di5wcm9wVHlwZXM9e3RvZG9zOmkuUHJvcFR5cGVzLmFy
cmF5LmlzUmVxdWlyZWQsYWN0aW9uczppLlByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZH07dmFy
IG09ZnVuY3Rpb24oZSl7cmV0dXJue3RvZG9zOmUudG9kb3N9fSx5PWZ1bmN0aW9uKGUpe3JldHVy
bnthY3Rpb25zOigwLHUuYmluZEFjdGlvbkNyZWF0b3JzKShoLGUpfX07dC5kZWZhdWx0PSgwLHMu
Y29ubmVjdCkobSx5KSh2KX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX12YXIgbz1uKDEyKSxpPXIo
byksYT1uKDEyMyksdT1uKDMwKSxzPW4oODEpLGM9bigyMDMpLGw9cihjKSxwPW4oMjA1KSxkPXIo
cCk7bigyMDcpO3ZhciBmPSgwLHUuY3JlYXRlU3RvcmUpKGQuZGVmYXVsdCk7KDAsYS5yZW5kZXIp
KGkuZGVmYXVsdC5jcmVhdGVFbGVtZW50KHMuUHJvdmlkZXIse3N0b3JlOmZ9LGkuZGVmYXVsdC5j
cmVhdGVFbGVtZW50KGwuZGVmYXVsdCxudWxsKSksZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInJv
b3QiKSl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4g
ZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9f
ZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBvPW4oMzApLGk9bigyMDYpLGE9cihpKSx1PSgwLG8u
Y29tYmluZVJlZHVjZXJzKSh7dG9kb3M6YS5kZWZhdWx0fSk7dC5kZWZhdWx0PXV9LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihBcnJheS5pc0FycmF5KGUpKXtm
b3IodmFyIHQ9MCxuPUFycmF5KGUubGVuZ3RoKTt0PGUubGVuZ3RoO3QrKyluW3RdPWVbdF07cmV0
dXJuIG59cmV0dXJuIEFycmF5LmZyb20oZSl9ZnVuY3Rpb24gbygpe3ZhciBlPWFyZ3VtZW50cy5s
ZW5ndGg8PTB8fHZvaWQgMD09PWFyZ3VtZW50c1swXT9zOmFyZ3VtZW50c1swXSx0PWFyZ3VtZW50
c1sxXSxuPWZ1bmN0aW9uKCl7c3dpdGNoKHQudHlwZSl7Y2FzZSB1LkFERF9UT0RPOnJldHVybnt2
Olt7aWQ6ZS5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gTWF0aC5tYXgodC5pZCxlKX0sLTEp
KzEsY29tcGxldGVkOiExLHRleHQ6dC50ZXh0fV0uY29uY2F0KHIoZSkpfTtjYXNlIHUuREVMRVRF
X1RPRE86cmV0dXJue3Y6ZS5maWx0ZXIoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWQhPT10LmlkfSl9
O2Nhc2UgdS5FRElUX1RPRE86cmV0dXJue3Y6ZS5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUuaWQ9
PT10LmlkP2Eoe30sZSx7dGV4dDp0LnRleHR9KTplfSl9O2Nhc2UgdS5DT01QTEVURV9UT0RPOnJl
dHVybnt2OmUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlkPT09dC5pZD9hKHt9LGUse2NvbXBs
ZXRlZDohZS5jb21wbGV0ZWR9KTplfSl9O2Nhc2UgdS5DT01QTEVURV9BTEw6dmFyIG49ZS5ldmVy
eShmdW5jdGlvbihlKXtyZXR1cm4gZS5jb21wbGV0ZWR9KTtyZXR1cm57djplLm1hcChmdW5jdGlv
bihlKXtyZXR1cm4gYSh7fSxlLHtjb21wbGV0ZWQ6IW59KX0pfTtjYXNlIHUuQ0xFQVJfQ09NUExF
VEVEOnJldHVybnt2OmUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLmNvbXBsZXRlZD09PSEx
fSl9O2RlZmF1bHQ6cmV0dXJue3Y6ZX19fSgpO2lmKCJvYmplY3QiPT09KCJ1bmRlZmluZWQiPT10
eXBlb2Ygbj8idW5kZWZpbmVkIjppKG4pKSlyZXR1cm4gbi52fU9iamVjdC5kZWZpbmVQcm9wZXJ0
eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgaT0iZnVuY3Rpb24iPT10eXBlb2YgU3lt
Ym9sJiYic3ltYm9sIj09dHlwZW9mIFN5bWJvbC5pdGVyYXRvcj9mdW5jdGlvbihlKXtyZXR1cm4g
dHlwZW9mIGV9OmZ1bmN0aW9uKGUpe3JldHVybiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgU3ltYm9s
JiZlLmNvbnN0cnVjdG9yPT09U3ltYm9sPyJzeW1ib2wiOnR5cGVvZiBlfSxhPU9iamVjdC5hc3Np
Z258fGZ1bmN0aW9uKGUpe2Zvcih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBu
PWFyZ3VtZW50c1t0XTtmb3IodmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3Bl
cnR5LmNhbGwobixyKSYmKGVbcl09bltyXSl9cmV0dXJuIGV9O3QuZGVmYXVsdD1vO3ZhciB1PW4o
ODUpLHM9W119LGZ1bmN0aW9uKGUsdCl7fSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiBuKGUpe2lmKG51bGw9PT1lfHx2b2lkIDA9PT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIk9i
amVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkIik7cmV0
dXJuIE9iamVjdChlKX1mdW5jdGlvbiByKCl7dHJ5e2lmKCFPYmplY3QuYXNzaWduKXJldHVybiEx
O3ZhciBlPW5ldyBTdHJpbmcoImFiYyIpO2lmKGVbNV09ImRlIiwiNSI9PT1PYmplY3QuZ2V0T3du
UHJvcGVydHlOYW1lcyhlKVswXSlyZXR1cm4hMTtmb3IodmFyIHQ9e30sbj0wO248MTA7bisrKXRb
Il8iK1N0cmluZy5mcm9tQ2hhckNvZGUobildPW47dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5
TmFtZXModCkubWFwKGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSk7aWYoIjAxMjM0NTY3ODkiIT09
ci5qb2luKCIiKSlyZXR1cm4hMTt2YXIgbz17fTtyZXR1cm4iYWJjZGVmZ2hpamtsbW5vcHFyc3Qi
LnNwbGl0KCIiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe29bZV09ZX0pLCJhYmNkZWZnaGlqa2xtbm9w
cXJzdCI9PT1PYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LG8pKS5qb2luKCIiKX1jYXRjaChp
KXtyZXR1cm4hMX19dmFyIG89T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxpPU9iamVj
dC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7ZS5leHBvcnRzPXIoKT9PYmplY3QuYXNz
aWduOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciByLGEsdT1uKGUpLHM9MTtzPGFyZ3VtZW50cy5sZW5n
dGg7cysrKXtyPU9iamVjdChhcmd1bWVudHNbc10pO2Zvcih2YXIgYyBpbiByKW8uY2FsbChyLGMp
JiYodVtjXT1yW2NdKTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXthPU9iamVjdC5n
ZXRPd25Qcm9wZXJ0eVN5bWJvbHMocik7Zm9yKHZhciBsPTA7bDxhLmxlbmd0aDtsKyspaS5jYWxs
KHIsYVtsXSkmJih1W2FbbF1dPXJbYVtsXV0pfX1yZXR1cm4gdX19LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1uZXcgbyhvLl82MSk7cmV0dXJuIHQuXzgx
PTEsdC5fNjU9ZSx0fXZhciBvPW4oODgpO2UuZXhwb3J0cz1vO3ZhciBpPXIoITApLGE9cighMSks
dT1yKG51bGwpLHM9cih2b2lkIDApLGM9cigwKSxsPXIoIiIpO28ucmVzb2x2ZT1mdW5jdGlvbihl
KXtpZihlIGluc3RhbmNlb2YgbylyZXR1cm4gZTtpZihudWxsPT09ZSlyZXR1cm4gdTtpZih2b2lk
IDA9PT1lKXJldHVybiBzO2lmKGU9PT0hMClyZXR1cm4gaTtpZihlPT09ITEpcmV0dXJuIGE7aWYo
MD09PWUpcmV0dXJuIGM7aWYoIiI9PT1lKXJldHVybiBsO2lmKCJvYmplY3QiPT10eXBlb2YgZXx8
ImZ1bmN0aW9uIj09dHlwZW9mIGUpdHJ5e3ZhciB0PWUudGhlbjtpZigiZnVuY3Rpb24iPT10eXBl
b2YgdClyZXR1cm4gbmV3IG8odC5iaW5kKGUpKX1jYXRjaChuKXtyZXR1cm4gbmV3IG8oZnVuY3Rp
b24oZSx0KXt0KG4pfSl9cmV0dXJuIHIoZSl9LG8uYWxsPWZ1bmN0aW9uKGUpe3ZhciB0PUFycmF5
LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpO3JldHVybiBuZXcgbyhmdW5jdGlvbihlLG4pe2Z1bmN0
aW9uIHIoYSx1KXtpZih1JiYoIm9iamVjdCI9PXR5cGVvZiB1fHwiZnVuY3Rpb24iPT10eXBlb2Yg
dSkpe2lmKHUgaW5zdGFuY2VvZiBvJiZ1LnRoZW49PT1vLnByb3RvdHlwZS50aGVuKXtmb3IoOzM9
PT11Ll84MTspdT11Ll82NTtyZXR1cm4gMT09PXUuXzgxP3IoYSx1Ll82NSk6KDI9PT11Ll84MSYm
bih1Ll82NSksdm9pZCB1LnRoZW4oZnVuY3Rpb24oZSl7cihhLGUpfSxuKSl9dmFyIHM9dS50aGVu
O2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBzKXt2YXIgYz1uZXcgbyhzLmJpbmQodSkpO3JldHVybiB2
b2lkIGMudGhlbihmdW5jdGlvbihlKXtyKGEsZSl9LG4pfX10W2FdPXUsMD09PS0taSYmZSh0KX1p
ZigwPT09dC5sZW5ndGgpcmV0dXJuIGUoW10pO2Zvcih2YXIgaT10Lmxlbmd0aCxhPTA7YTx0Lmxl
bmd0aDthKyspcihhLHRbYV0pfSl9LG8ucmVqZWN0PWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgbyhm
dW5jdGlvbih0LG4pe24oZSl9KX0sby5yYWNlPWZ1bmN0aW9uKGUpe3JldHVybiBuZXcgbyhmdW5j
dGlvbih0LG4pe2UuZm9yRWFjaChmdW5jdGlvbihlKXtvLnJlc29sdmUoZSkudGhlbih0LG4pfSl9
KX0sby5wcm90b3R5cGUuY2F0Y2g9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMudGhlbihudWxsLGUp
fX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7Yz0hMSx1Ll8xMD1u
dWxsLHUuXzk3PW51bGx9ZnVuY3Rpb24gbyhlKXtmdW5jdGlvbiB0KHQpeyhlLmFsbFJlamVjdGlv
bnN8fGEocFt0XS5lcnJvcixlLndoaXRlbGlzdHx8cykpJiYocFt0XS5kaXNwbGF5SWQ9bCsrLGUu
b25VbmhhbmRsZWQ/KHBbdF0ubG9nZ2VkPSEwLGUub25VbmhhbmRsZWQocFt0XS5kaXNwbGF5SWQs
cFt0XS5lcnJvcikpOihwW3RdLmxvZ2dlZD0hMCxpKHBbdF0uZGlzcGxheUlkLHBbdF0uZXJyb3Ip
KSl9ZnVuY3Rpb24gbih0KXtwW3RdLmxvZ2dlZCYmKGUub25IYW5kbGVkP2Uub25IYW5kbGVkKHBb
dF0uZGlzcGxheUlkLHBbdF0uZXJyb3IpOnBbdF0ub25VbmhhbmRsZWR8fChjb25zb2xlLndhcm4o
IlByb21pc2UgUmVqZWN0aW9uIEhhbmRsZWQgKGlkOiAiK3BbdF0uZGlzcGxheUlkKyIpOiIpLGNv
bnNvbGUud2FybignICBUaGlzIG1lYW5zIHlvdSBjYW4gaWdub3JlIGFueSBwcmV2aW91cyBtZXNz
YWdlcyBvZiB0aGUgZm9ybSAiUG9zc2libGUgVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uIiB3
aXRoIGlkICcrcFt0XS5kaXNwbGF5SWQrIi4iKSkpfWU9ZXx8e30sYyYmcigpLGM9ITA7dmFyIG89
MCxsPTAscD17fTt1Ll8xMD1mdW5jdGlvbihlKXsyPT09ZS5fODEmJnBbZS5fNzJdJiYocFtlLl83
Ml0ubG9nZ2VkP24oZS5fNzIpOmNsZWFyVGltZW91dChwW2UuXzcyXS50aW1lb3V0KSxkZWxldGUg
cFtlLl83Ml0pfSx1Ll85Nz1mdW5jdGlvbihlLG4pezA9PT1lLl80NSYmKGUuXzcyPW8rKyxwW2Uu
XzcyXT17ZGlzcGxheUlkOm51bGwsZXJyb3I6bix0aW1lb3V0OnNldFRpbWVvdXQodC5iaW5kKG51
bGwsZS5fNzIpLGEobixzKT8xMDA6MmUzKSxsb2dnZWQ6ITF9KX19ZnVuY3Rpb24gaShlLHQpe2Nv
bnNvbGUud2FybigiUG9zc2libGUgVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uIChpZDogIitl
KyIpOiIpO3ZhciBuPSh0JiYodC5zdGFja3x8dCkpKyIiO24uc3BsaXQoIlxuIikuZm9yRWFjaChm
dW5jdGlvbihlKXtjb25zb2xlLndhcm4oIiAgIitlKX0pfWZ1bmN0aW9uIGEoZSx0KXtyZXR1cm4g
dC5zb21lKGZ1bmN0aW9uKHQpe3JldHVybiBlIGluc3RhbmNlb2YgdH0pfXZhciB1PW4oODgpLHM9
W1JlZmVyZW5jZUVycm9yLFR5cGVFcnJvcixSYW5nZUVycm9yXSxjPSExO3QuZGlzYWJsZT1yLHQu
ZW5hYmxlPW99LGZ1bmN0aW9uKGUsdCl7ZS5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiBlLndl
YnBhY2tQb2x5ZmlsbHx8KGUuZGVwcmVjYXRlPWZ1bmN0aW9uKCl7fSxlLnBhdGhzPVtdLGUuY2hp
bGRyZW49W10sZS53ZWJwYWNrUG9seWZpbGw9MSksZX19LGZ1bmN0aW9uKGUsdCl7IWZ1bmN0aW9u
KGUpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiB0KGUpe2lmKCJzdHJpbmciIT10eXBlb2YgZSYmKGU9
U3RyaW5nKGUpKSwvW15hLXowLTlcLSMkJSYnKisuXF5fYHx+XS9pLnRlc3QoZSkpdGhyb3cgbmV3
IFR5cGVFcnJvcigiSW52YWxpZCBjaGFyYWN0ZXIgaW4gaGVhZGVyIGZpZWxkIG5hbWUiKTtyZXR1
cm4gZS50b0xvd2VyQ2FzZSgpfWZ1bmN0aW9uIG4oZSl7cmV0dXJuInN0cmluZyIhPXR5cGVvZiBl
JiYoZT1TdHJpbmcoZSkpLGV9ZnVuY3Rpb24gcihlKXt2YXIgdD17bmV4dDpmdW5jdGlvbigpe3Zh
ciB0PWUuc2hpZnQoKTtyZXR1cm57ZG9uZTp2b2lkIDA9PT10LHZhbHVlOnR9fX07cmV0dXJuIHYu
aXRlcmFibGUmJih0W1N5bWJvbC5pdGVyYXRvcl09ZnVuY3Rpb24oKXtyZXR1cm4gdH0pLHR9ZnVu
Y3Rpb24gbyhlKXt0aGlzLm1hcD17fSxlIGluc3RhbmNlb2Ygbz9lLmZvckVhY2goZnVuY3Rpb24o
ZSx0KXt0aGlzLmFwcGVuZCh0LGUpfSx0aGlzKTplJiZPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1l
cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3RoaXMuYXBwZW5kKHQsZVt0XSl9LHRoaXMpfWZ1bmN0
aW9uIGkoZSl7cmV0dXJuIGUuYm9keVVzZWQ/UHJvbWlzZS5yZWplY3QobmV3IFR5cGVFcnJvcigi
QWxyZWFkeSByZWFkIikpOnZvaWQoZS5ib2R5VXNlZD0hMCl9ZnVuY3Rpb24gYShlKXtyZXR1cm4g
bmV3IFByb21pc2UoZnVuY3Rpb24odCxuKXtlLm9ubG9hZD1mdW5jdGlvbigpe3QoZS5yZXN1bHQp
fSxlLm9uZXJyb3I9ZnVuY3Rpb24oKXtuKGUuZXJyb3IpfX0pfWZ1bmN0aW9uIHUoZSl7dmFyIHQ9
bmV3IEZpbGVSZWFkZXI7cmV0dXJuIHQucmVhZEFzQXJyYXlCdWZmZXIoZSksYSh0KX1mdW5jdGlv
biBzKGUpe3ZhciB0PW5ldyBGaWxlUmVhZGVyO3JldHVybiB0LnJlYWRBc1RleHQoZSksYSh0KX1m
dW5jdGlvbiBjKCl7cmV0dXJuIHRoaXMuYm9keVVzZWQ9ITEsdGhpcy5faW5pdEJvZHk9ZnVuY3Rp
b24oZSl7aWYodGhpcy5fYm9keUluaXQ9ZSwic3RyaW5nIj09dHlwZW9mIGUpdGhpcy5fYm9keVRl
eHQ9ZTtlbHNlIGlmKHYuYmxvYiYmQmxvYi5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihlKSl0aGlz
Ll9ib2R5QmxvYj1lO2Vsc2UgaWYodi5mb3JtRGF0YSYmRm9ybURhdGEucHJvdG90eXBlLmlzUHJv
dG90eXBlT2YoZSkpdGhpcy5fYm9keUZvcm1EYXRhPWU7ZWxzZSBpZih2LnNlYXJjaFBhcmFtcyYm
VVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGUpKXRoaXMuX2JvZHlUZXh0
PWUudG9TdHJpbmcoKTtlbHNlIGlmKGUpe2lmKCF2LmFycmF5QnVmZmVyfHwhQXJyYXlCdWZmZXIu
cHJvdG90eXBlLmlzUHJvdG90eXBlT2YoZSkpdGhyb3cgbmV3IEVycm9yKCJ1bnN1cHBvcnRlZCBC
b2R5SW5pdCB0eXBlIil9ZWxzZSB0aGlzLl9ib2R5VGV4dD0iIjt0aGlzLmhlYWRlcnMuZ2V0KCJj
b250ZW50LXR5cGUiKXx8KCJzdHJpbmciPT10eXBlb2YgZT90aGlzLmhlYWRlcnMuc2V0KCJjb250
ZW50LXR5cGUiLCJ0ZXh0L3BsYWluO2NoYXJzZXQ9VVRGLTgiKTp0aGlzLl9ib2R5QmxvYiYmdGhp
cy5fYm9keUJsb2IudHlwZT90aGlzLmhlYWRlcnMuc2V0KCJjb250ZW50LXR5cGUiLHRoaXMuX2Jv
ZHlCbG9iLnR5cGUpOnYuc2VhcmNoUGFyYW1zJiZVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBlLmlz
UHJvdG90eXBlT2YoZSkmJnRoaXMuaGVhZGVycy5zZXQoImNvbnRlbnQtdHlwZSIsImFwcGxpY2F0
aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDtjaGFyc2V0PVVURi04IikpfSx2LmJsb2I/KHRoaXMu
YmxvYj1mdW5jdGlvbigpe3ZhciBlPWkodGhpcyk7aWYoZSlyZXR1cm4gZTtpZih0aGlzLl9ib2R5
QmxvYilyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2JvZHlCbG9iKTtpZih0aGlzLl9ib2R5
Rm9ybURhdGEpdGhyb3cgbmV3IEVycm9yKCJjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5IGFz
IGJsb2IiKTtyZXR1cm4gUHJvbWlzZS5yZXNvbHZlKG5ldyBCbG9iKFt0aGlzLl9ib2R5VGV4dF0p
KX0sdGhpcy5hcnJheUJ1ZmZlcj1mdW5jdGlvbigpe3JldHVybiB0aGlzLmJsb2IoKS50aGVuKHUp
fSx0aGlzLnRleHQ9ZnVuY3Rpb24oKXt2YXIgZT1pKHRoaXMpO2lmKGUpcmV0dXJuIGU7aWYodGhp
cy5fYm9keUJsb2IpcmV0dXJuIHModGhpcy5fYm9keUJsb2IpO2lmKHRoaXMuX2JvZHlGb3JtRGF0
YSl0aHJvdyBuZXcgRXJyb3IoImNvdWxkIG5vdCByZWFkIEZvcm1EYXRhIGJvZHkgYXMgdGV4dCIp
O3JldHVybiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keVRleHQpfSk6dGhpcy50ZXh0PWZ1bmN0
aW9uKCl7dmFyIGU9aSh0aGlzKTtyZXR1cm4gZT9lOlByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5
VGV4dCl9LHYuZm9ybURhdGEmJih0aGlzLmZvcm1EYXRhPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMu
dGV4dCgpLnRoZW4oZCl9KSx0aGlzLmpzb249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy50ZXh0KCku
dGhlbihKU09OLnBhcnNlKX0sdGhpc31mdW5jdGlvbiBsKGUpe3ZhciB0PWUudG9VcHBlckNhc2Uo
KTtyZXR1cm4gbS5pbmRleE9mKHQpPi0xP3Q6ZX1mdW5jdGlvbiBwKGUsdCl7dD10fHx7fTt2YXIg
bj10LmJvZHk7aWYocC5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihlKSl7aWYoZS5ib2R5VXNlZCl0
aHJvdyBuZXcgVHlwZUVycm9yKCJBbHJlYWR5IHJlYWQiKTt0aGlzLnVybD1lLnVybCx0aGlzLmNy
ZWRlbnRpYWxzPWUuY3JlZGVudGlhbHMsdC5oZWFkZXJzfHwodGhpcy5oZWFkZXJzPW5ldyBvKGUu
aGVhZGVycykpLHRoaXMubWV0aG9kPWUubWV0aG9kLHRoaXMubW9kZT1lLm1vZGUsbnx8KG49ZS5f
Ym9keUluaXQsZS5ib2R5VXNlZD0hMCl9ZWxzZSB0aGlzLnVybD1lO2lmKHRoaXMuY3JlZGVudGlh
bHM9dC5jcmVkZW50aWFsc3x8dGhpcy5jcmVkZW50aWFsc3x8Im9taXQiLCF0LmhlYWRlcnMmJnRo
aXMuaGVhZGVyc3x8KHRoaXMuaGVhZGVycz1uZXcgbyh0LmhlYWRlcnMpKSx0aGlzLm1ldGhvZD1s
KHQubWV0aG9kfHx0aGlzLm1ldGhvZHx8IkdFVCIpLHRoaXMubW9kZT10Lm1vZGV8fHRoaXMubW9k
ZXx8bnVsbCx0aGlzLnJlZmVycmVyPW51bGwsKCJHRVQiPT09dGhpcy5tZXRob2R8fCJIRUFEIj09
PXRoaXMubWV0aG9kKSYmbil0aHJvdyBuZXcgVHlwZUVycm9yKCJCb2R5IG5vdCBhbGxvd2VkIGZv
ciBHRVQgb3IgSEVBRCByZXF1ZXN0cyIpO3RoaXMuX2luaXRCb2R5KG4pfWZ1bmN0aW9uIGQoZSl7
dmFyIHQ9bmV3IEZvcm1EYXRhO3JldHVybiBlLnRyaW0oKS5zcGxpdCgiJiIpLmZvckVhY2goZnVu
Y3Rpb24oZSl7aWYoZSl7dmFyIG49ZS5zcGxpdCgiPSIpLHI9bi5zaGlmdCgpLnJlcGxhY2UoL1wr
L2csIiAiKSxvPW4uam9pbigiPSIpLnJlcGxhY2UoL1wrL2csIiAiKTt0LmFwcGVuZChkZWNvZGVV
UklDb21wb25lbnQociksZGVjb2RlVVJJQ29tcG9uZW50KG8pKX19KSx0fWZ1bmN0aW9uIGYoZSl7
dmFyIHQ9bmV3IG8sbj0oZS5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKXx8IiIpLnRyaW0oKS5zcGxp
dCgiXG4iKTtyZXR1cm4gbi5mb3JFYWNoKGZ1bmN0aW9uKGUpe3ZhciBuPWUudHJpbSgpLnNwbGl0
KCI6Iikscj1uLnNoaWZ0KCkudHJpbSgpLG89bi5qb2luKCI6IikudHJpbSgpO3QuYXBwZW5kKHIs
byl9KSx0fWZ1bmN0aW9uIGgoZSx0KXt0fHwodD17fSksdGhpcy50eXBlPSJkZWZhdWx0Iix0aGlz
LnN0YXR1cz10LnN0YXR1cyx0aGlzLm9rPXRoaXMuc3RhdHVzPj0yMDAmJnRoaXMuc3RhdHVzPDMw
MCx0aGlzLnN0YXR1c1RleHQ9dC5zdGF0dXNUZXh0LHRoaXMuaGVhZGVycz10LmhlYWRlcnMgaW5z
dGFuY2VvZiBvP3QuaGVhZGVyczpuZXcgbyh0LmhlYWRlcnMpLHRoaXMudXJsPXQudXJsfHwiIix0
aGlzLl9pbml0Qm9keShlKX1pZighZS5mZXRjaCl7dmFyIHY9e3NlYXJjaFBhcmFtczoiVVJMU2Vh
cmNoUGFyYW1zImluIGUsaXRlcmFibGU6IlN5bWJvbCJpbiBlJiYiaXRlcmF0b3IiaW4gU3ltYm9s
LGJsb2I6IkZpbGVSZWFkZXIiaW4gZSYmIkJsb2IiaW4gZSYmZnVuY3Rpb24oKXt0cnl7cmV0dXJu
IG5ldyBCbG9iLCEwfWNhdGNoKGUpe3JldHVybiExfX0oKSxmb3JtRGF0YToiRm9ybURhdGEiaW4g
ZSxhcnJheUJ1ZmZlcjoiQXJyYXlCdWZmZXIiaW4gZX07by5wcm90b3R5cGUuYXBwZW5kPWZ1bmN0
aW9uKGUscil7ZT10KGUpLHI9bihyKTt2YXIgbz10aGlzLm1hcFtlXTtvfHwobz1bXSx0aGlzLm1h
cFtlXT1vKSxvLnB1c2gocil9LG8ucHJvdG90eXBlLmRlbGV0ZT1mdW5jdGlvbihlKXtkZWxldGUg
dGhpcy5tYXBbdChlKV19LG8ucHJvdG90eXBlLmdldD1mdW5jdGlvbihlKXt2YXIgbj10aGlzLm1h
cFt0KGUpXTtyZXR1cm4gbj9uWzBdOm51bGx9LG8ucHJvdG90eXBlLmdldEFsbD1mdW5jdGlvbihl
KXtyZXR1cm4gdGhpcy5tYXBbdChlKV18fFtdfSxvLnByb3RvdHlwZS5oYXM9ZnVuY3Rpb24oZSl7
cmV0dXJuIHRoaXMubWFwLmhhc093blByb3BlcnR5KHQoZSkpfSxvLnByb3RvdHlwZS5zZXQ9ZnVu
Y3Rpb24oZSxyKXt0aGlzLm1hcFt0KGUpXT1bbihyKV19LG8ucHJvdG90eXBlLmZvckVhY2g9ZnVu
Y3Rpb24oZSx0KXtPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzLm1hcCkuZm9yRWFjaChm
dW5jdGlvbihuKXt0aGlzLm1hcFtuXS5mb3JFYWNoKGZ1bmN0aW9uKHIpe2UuY2FsbCh0LHIsbix0
aGlzKX0sdGhpcyl9LHRoaXMpfSxvLnByb3RvdHlwZS5rZXlzPWZ1bmN0aW9uKCl7dmFyIGU9W107
cmV0dXJuIHRoaXMuZm9yRWFjaChmdW5jdGlvbih0LG4pe2UucHVzaChuKX0pLHIoZSl9LG8ucHJv
dG90eXBlLnZhbHVlcz1mdW5jdGlvbigpe3ZhciBlPVtdO3JldHVybiB0aGlzLmZvckVhY2goZnVu
Y3Rpb24odCl7ZS5wdXNoKHQpfSkscihlKX0sby5wcm90b3R5cGUuZW50cmllcz1mdW5jdGlvbigp
e3ZhciBlPVtdO3JldHVybiB0aGlzLmZvckVhY2goZnVuY3Rpb24odCxuKXtlLnB1c2goW24sdF0p
fSkscihlKX0sdi5pdGVyYWJsZSYmKG8ucHJvdG90eXBlW1N5bWJvbC5pdGVyYXRvcl09by5wcm90
b3R5cGUuZW50cmllcyk7dmFyIG09WyJERUxFVEUiLCJHRVQiLCJIRUFEIiwiT1BUSU9OUyIsIlBP
U1QiLCJQVVQiXTtwLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVybiBuZXcgcCh0aGlz
KX0sYy5jYWxsKHAucHJvdG90eXBlKSxjLmNhbGwoaC5wcm90b3R5cGUpLGgucHJvdG90eXBlLmNs
b25lPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBoKHRoaXMuX2JvZHlJbml0LHtzdGF0dXM6dGhpcy5z
dGF0dXMsc3RhdHVzVGV4dDp0aGlzLnN0YXR1c1RleHQsaGVhZGVyczpuZXcgbyh0aGlzLmhlYWRl
cnMpLHVybDp0aGlzLnVybH0pfSxoLmVycm9yPWZ1bmN0aW9uKCl7dmFyIGU9bmV3IGgobnVsbCx7
c3RhdHVzOjAsc3RhdHVzVGV4dDoiIn0pO3JldHVybiBlLnR5cGU9ImVycm9yIixlfTt2YXIgeT1b
MzAxLDMwMiwzMDMsMzA3LDMwOF07aC5yZWRpcmVjdD1mdW5jdGlvbihlLHQpe2lmKHkuaW5kZXhP
Zih0KT09PS0xKXRocm93IG5ldyBSYW5nZUVycm9yKCJJbnZhbGlkIHN0YXR1cyBjb2RlIik7cmV0
dXJuIG5ldyBoKG51bGwse3N0YXR1czp0LGhlYWRlcnM6e2xvY2F0aW9uOmV9fSl9LGUuSGVhZGVy
cz1vLGUuUmVxdWVzdD1wLGUuUmVzcG9uc2U9aCxlLmZldGNoPWZ1bmN0aW9uKGUsdCl7cmV0dXJu
IG5ldyBQcm9taXNlKGZ1bmN0aW9uKG4scil7ZnVuY3Rpb24gbygpe3JldHVybiJyZXNwb25zZVVS
TCJpbiBhP2EucmVzcG9uc2VVUkw6L15YLVJlcXVlc3QtVVJMOi9tLnRlc3QoYS5nZXRBbGxSZXNw
b25zZUhlYWRlcnMoKSk/YS5nZXRSZXNwb25zZUhlYWRlcigiWC1SZXF1ZXN0LVVSTCIpOnZvaWQg
MH12YXIgaTtpPXAucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoZSkmJiF0P2U6bmV3IHAoZSx0KTt2
YXIgYT1uZXcgWE1MSHR0cFJlcXVlc3Q7YS5vbmxvYWQ9ZnVuY3Rpb24oKXt2YXIgZT17c3RhdHVz
OmEuc3RhdHVzLHN0YXR1c1RleHQ6YS5zdGF0dXNUZXh0LGhlYWRlcnM6ZihhKSx1cmw6bygpfSx0
PSJyZXNwb25zZSJpbiBhP2EucmVzcG9uc2U6YS5yZXNwb25zZVRleHQ7bihuZXcgaCh0LGUpKX0s
YS5vbmVycm9yPWZ1bmN0aW9uKCl7cihuZXcgVHlwZUVycm9yKCJOZXR3b3JrIHJlcXVlc3QgZmFp
bGVkIikpfSxhLm9udGltZW91dD1mdW5jdGlvbigpe3IobmV3IFR5cGVFcnJvcigiTmV0d29yayBy
ZXF1ZXN0IGZhaWxlZCIpKX0sYS5vcGVuKGkubWV0aG9kLGkudXJsLCEwKSwiaW5jbHVkZSI9PT1p
LmNyZWRlbnRpYWxzJiYoYS53aXRoQ3JlZGVudGlhbHM9ITApLCJyZXNwb25zZVR5cGUiaW4gYSYm
di5ibG9iJiYoYS5yZXNwb25zZVR5cGU9ImJsb2IiKSxpLmhlYWRlcnMuZm9yRWFjaChmdW5jdGlv
bihlLHQpe2Euc2V0UmVxdWVzdEhlYWRlcih0LGUpfSksYS5zZW5kKCJ1bmRlZmluZWQiPT10eXBl
b2YgaS5fYm9keUluaXQ/bnVsbDppLl9ib2R5SW5pdCl9KX0sZS5mZXRjaC5wb2x5ZmlsbD0hMH19
KCJ1bmRlZmluZWQiIT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMpfSwzOCxbMjMxLDIzXSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuKCIiK2UpLnJlcGxhY2Uo
XywiJCYvIil9ZnVuY3Rpb24gbyhlLHQpe3RoaXMuZnVuYz1lLHRoaXMuY29udGV4dD10LHRoaXMu
Y291bnQ9MH1mdW5jdGlvbiBpKGUsdCxuKXt2YXIgcj1lLmZ1bmMsbz1lLmNvbnRleHQ7ci5jYWxs
KG8sdCxlLmNvdW50KyspfWZ1bmN0aW9uIGEoZSx0LG4pe2lmKG51bGw9PWUpcmV0dXJuIGU7dmFy
IHI9by5nZXRQb29sZWQodCxuKTt5KGUsaSxyKSxvLnJlbGVhc2Uocil9ZnVuY3Rpb24gdShlLHQs
bixyKXt0aGlzLnJlc3VsdD1lLHRoaXMua2V5UHJlZml4PXQsdGhpcy5mdW5jPW4sdGhpcy5jb250
ZXh0PXIsdGhpcy5jb3VudD0wfWZ1bmN0aW9uIHMoZSx0LG4pe3ZhciBvPWUucmVzdWx0LGk9ZS5r
ZXlQcmVmaXgsYT1lLmZ1bmMsdT1lLmNvbnRleHQscz1hLmNhbGwodSx0LGUuY291bnQrKyk7QXJy
YXkuaXNBcnJheShzKT9jKHMsbyxuLG0udGhhdFJldHVybnNBcmd1bWVudCk6bnVsbCE9cyYmKHYu
aXNWYWxpZEVsZW1lbnQocykmJihzPXYuY2xvbmVBbmRSZXBsYWNlS2V5KHMsaSsoIXMua2V5fHx0
JiZ0LmtleT09PXMua2V5PyIiOnIocy5rZXkpKyIvIikrbikpLG8ucHVzaChzKSl9ZnVuY3Rpb24g
YyhlLHQsbixvLGkpe3ZhciBhPSIiO251bGwhPW4mJihhPXIobikrIi8iKTt2YXIgYz11LmdldFBv
b2xlZCh0LGEsbyxpKTt5KGUscyxjKSx1LnJlbGVhc2UoYyl9ZnVuY3Rpb24gbChlLHQsbil7aWYo
bnVsbD09ZSlyZXR1cm4gZTt2YXIgcj1bXTtyZXR1cm4gYyhlLHIsbnVsbCx0LG4pLHJ9ZnVuY3Rp
b24gcChlLHQsbil7cmV0dXJuIG51bGx9ZnVuY3Rpb24gZChlLHQpe3JldHVybiB5KGUscCxudWxs
KX1mdW5jdGlvbiBmKGUpe3ZhciB0PVtdO3JldHVybiBjKGUsdCxudWxsLG0udGhhdFJldHVybnNB
cmd1bWVudCksdH12YXIgaD1uKDIxNCksdj1uKDE4KSxtPW4oNykseT1uKDIyNCksZz1oLnR3b0Fy
Z3VtZW50UG9vbGVyLGI9aC5mb3VyQXJndW1lbnRQb29sZXIsXz0vXC8rL2c7by5wcm90b3R5cGUu
ZGVzdHJ1Y3Rvcj1mdW5jdGlvbigpe3RoaXMuZnVuYz1udWxsLHRoaXMuY29udGV4dD1udWxsLHRo
aXMuY291bnQ9MH0saC5hZGRQb29saW5nVG8obyxnKSx1LnByb3RvdHlwZS5kZXN0cnVjdG9yPWZ1
bmN0aW9uKCl7dGhpcy5yZXN1bHQ9bnVsbCx0aGlzLmtleVByZWZpeD1udWxsLHRoaXMuZnVuYz1u
dWxsLHRoaXMuY29udGV4dD1udWxsLHRoaXMuY291bnQ9MH0saC5hZGRQb29saW5nVG8odSxiKTt2
YXIgQz17Zm9yRWFjaDphLG1hcDpsLG1hcEludG9XaXRoS2V5UHJlZml4SW50ZXJuYWw6Yyxjb3Vu
dDpkLHRvQXJyYXk6Zn07ZS5leHBvcnRzPUN9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
dmFyIHI9bigxOCksbz1yLmNyZWF0ZUZhY3RvcnksaT17YTpvKCJhIiksYWJicjpvKCJhYmJyIiks
YWRkcmVzczpvKCJhZGRyZXNzIiksYXJlYTpvKCJhcmVhIiksYXJ0aWNsZTpvKCJhcnRpY2xlIiks
YXNpZGU6bygiYXNpZGUiKSxhdWRpbzpvKCJhdWRpbyIpLGI6bygiYiIpLGJhc2U6bygiYmFzZSIp
LGJkaTpvKCJiZGkiKSxiZG86bygiYmRvIiksYmlnOm8oImJpZyIpLGJsb2NrcXVvdGU6bygiYmxv
Y2txdW90ZSIpLGJvZHk6bygiYm9keSIpLGJyOm8oImJyIiksYnV0dG9uOm8oImJ1dHRvbiIpLGNh
bnZhczpvKCJjYW52YXMiKSxjYXB0aW9uOm8oImNhcHRpb24iKSxjaXRlOm8oImNpdGUiKSxjb2Rl
Om8oImNvZGUiKSxjb2w6bygiY29sIiksY29sZ3JvdXA6bygiY29sZ3JvdXAiKSxkYXRhOm8oImRh
dGEiKSxkYXRhbGlzdDpvKCJkYXRhbGlzdCIpLGRkOm8oImRkIiksZGVsOm8oImRlbCIpLGRldGFp
bHM6bygiZGV0YWlscyIpLGRmbjpvKCJkZm4iKSxkaWFsb2c6bygiZGlhbG9nIiksZGl2Om8oImRp
diIpLGRsOm8oImRsIiksZHQ6bygiZHQiKSxlbTpvKCJlbSIpLGVtYmVkOm8oImVtYmVkIiksZmll
bGRzZXQ6bygiZmllbGRzZXQiKSxmaWdjYXB0aW9uOm8oImZpZ2NhcHRpb24iKSxmaWd1cmU6bygi
ZmlndXJlIiksZm9vdGVyOm8oImZvb3RlciIpLGZvcm06bygiZm9ybSIpLGgxOm8oImgxIiksaDI6
bygiaDIiKSxoMzpvKCJoMyIpLGg0Om8oImg0IiksaDU6bygiaDUiKSxoNjpvKCJoNiIpLGhlYWQ6
bygiaGVhZCIpLGhlYWRlcjpvKCJoZWFkZXIiKSxoZ3JvdXA6bygiaGdyb3VwIiksaHI6bygiaHIi
KSxodG1sOm8oImh0bWwiKSxpOm8oImkiKSxpZnJhbWU6bygiaWZyYW1lIiksaW1nOm8oImltZyIp
LGlucHV0Om8oImlucHV0IiksaW5zOm8oImlucyIpLGtiZDpvKCJrYmQiKSxrZXlnZW46bygia2V5
Z2VuIiksbGFiZWw6bygibGFiZWwiKSxsZWdlbmQ6bygibGVnZW5kIiksbGk6bygibGkiKSxsaW5r
Om8oImxpbmsiKSxtYWluOm8oIm1haW4iKSxtYXA6bygibWFwIiksbWFyazpvKCJtYXJrIiksbWVu
dTpvKCJtZW51IiksbWVudWl0ZW06bygibWVudWl0ZW0iKSxtZXRhOm8oIm1ldGEiKSxtZXRlcjpv
KCJtZXRlciIpLG5hdjpvKCJuYXYiKSxub3NjcmlwdDpvKCJub3NjcmlwdCIpLG9iamVjdDpvKCJv
YmplY3QiKSxvbDpvKCJvbCIpLG9wdGdyb3VwOm8oIm9wdGdyb3VwIiksb3B0aW9uOm8oIm9wdGlv
biIpLG91dHB1dDpvKCJvdXRwdXQiKSxwOm8oInAiKSxwYXJhbTpvKCJwYXJhbSIpLHBpY3R1cmU6
bygicGljdHVyZSIpLHByZTpvKCJwcmUiKSxwcm9ncmVzczpvKCJwcm9ncmVzcyIpLHE6bygicSIp
LHJwOm8oInJwIikscnQ6bygicnQiKSxydWJ5Om8oInJ1YnkiKSxzOm8oInMiKSxzYW1wOm8oInNh
bXAiKSxzY3JpcHQ6bygic2NyaXB0Iiksc2VjdGlvbjpvKCJzZWN0aW9uIiksc2VsZWN0Om8oInNl
bGVjdCIpLHNtYWxsOm8oInNtYWxsIiksc291cmNlOm8oInNvdXJjZSIpLHNwYW46bygic3BhbiIp
LHN0cm9uZzpvKCJzdHJvbmciKSxzdHlsZTpvKCJzdHlsZSIpLHN1YjpvKCJzdWIiKSxzdW1tYXJ5
Om8oInN1bW1hcnkiKSxzdXA6bygic3VwIiksdGFibGU6bygidGFibGUiKSx0Ym9keTpvKCJ0Ym9k
eSIpLHRkOm8oInRkIiksdGV4dGFyZWE6bygidGV4dGFyZWEiKSx0Zm9vdDpvKCJ0Zm9vdCIpLHRo
Om8oInRoIiksdGhlYWQ6bygidGhlYWQiKSx0aW1lOm8oInRpbWUiKSx0aXRsZTpvKCJ0aXRsZSIp
LHRyOm8oInRyIiksdHJhY2s6bygidHJhY2siKSx1Om8oInUiKSx1bDpvKCJ1bCIpLHZhcjpvKCJ2
YXIiKSx2aWRlbzpvKCJ2aWRlbyIpLHdicjpvKCJ3YnIiKSxjaXJjbGU6bygiY2lyY2xlIiksY2xp
cFBhdGg6bygiY2xpcFBhdGgiKSxkZWZzOm8oImRlZnMiKSxlbGxpcHNlOm8oImVsbGlwc2UiKSxn
Om8oImciKSxpbWFnZTpvKCJpbWFnZSIpLGxpbmU6bygibGluZSIpLGxpbmVhckdyYWRpZW50Om8o
ImxpbmVhckdyYWRpZW50IiksbWFzazpvKCJtYXNrIikscGF0aDpvKCJwYXRoIikscGF0dGVybjpv
KCJwYXR0ZXJuIikscG9seWdvbjpvKCJwb2x5Z29uIikscG9seWxpbmU6bygicG9seWxpbmUiKSxy
YWRpYWxHcmFkaWVudDpvKCJyYWRpYWxHcmFkaWVudCIpLHJlY3Q6bygicmVjdCIpLHN0b3A6bygi
c3RvcCIpLHN2ZzpvKCJzdmciKSx0ZXh0Om8oInRleHQiKSx0c3BhbjpvKCJ0c3BhbiIpfTtlLmV4
cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDE4KSxvPXIuaXNW
YWxpZEVsZW1lbnQsaT1uKDU1KTtlLmV4cG9ydHM9aShvKX0sMTYzLGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7dmFyIHI9big4OSksbz1yLkNvbXBvbmVudCxpPW4oMTgpLGE9aS5pc1ZhbGlk
RWxlbWVudCx1PW4oOTIpLHM9big5Nyk7ZS5leHBvcnRzPXMobyxhLHUpfSwxODIsZnVuY3Rpb24o
ZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbigpe3JldHVybiByKyt9dmFyIHI9MTtlLmV4cG9y
dHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1mdW5jdGlvbigpe307ZS5l
eHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1
cm4gaS5pc1ZhbGlkRWxlbWVudChlKT92b2lkIDA6bygiMTQzIiksZX12YXIgbz1uKDIzKSxpPW4o
MTgpO24oMSk7ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlLHQpe3JldHVybiBlJiYib2JqZWN0Ij09dHlwZW9mIGUmJm51bGwhPWUua2V5P2MuZXNj
YXBlKGUua2V5KTp0LnRvU3RyaW5nKDM2KX1mdW5jdGlvbiBvKGUsdCxuLGkpe3ZhciBkPXR5cGVv
ZiBlO2lmKCJ1bmRlZmluZWQiIT09ZCYmImJvb2xlYW4iIT09ZHx8KGU9bnVsbCksbnVsbD09PWV8
fCJzdHJpbmciPT09ZHx8Im51bWJlciI9PT1kfHwib2JqZWN0Ij09PWQmJmUuJCR0eXBlb2Y9PT11
KXJldHVybiBuKGksZSwiIj09PXQ/bCtyKGUsMCk6dCksMTt2YXIgZixoLHY9MCxtPSIiPT09dD9s
OnQrcDtpZihBcnJheS5pc0FycmF5KGUpKWZvcih2YXIgeT0wO3k8ZS5sZW5ndGg7eSsrKWY9ZVt5
XSxoPW0rcihmLHkpLHYrPW8oZixoLG4saSk7ZWxzZXt2YXIgZz1zKGUpO2lmKGcpe3ZhciBiLF89
Zy5jYWxsKGUpO2lmKGchPT1lLmVudHJpZXMpZm9yKHZhciBDPTA7IShiPV8ubmV4dCgpKS5kb25l
OylmPWIudmFsdWUsaD1tK3IoZixDKyspLHYrPW8oZixoLG4saSk7ZWxzZSBmb3IoOyEoYj1fLm5l
eHQoKSkuZG9uZTspe3ZhciBFPWIudmFsdWU7RSYmKGY9RVsxXSxoPW0rYy5lc2NhcGUoRVswXSkr
cCtyKGYsMCksdis9byhmLGgsbixpKSl9fWVsc2UgaWYoIm9iamVjdCI9PT1kKXsKK3ZhciB3PSIi
LFQ9U3RyaW5nKGUpO2EoIjMxIiwiW29iamVjdCBPYmplY3RdIj09PVQ/Im9iamVjdCB3aXRoIGtl
eXMgeyIrT2JqZWN0LmtleXMoZSkuam9pbigiLCAiKSsifSI6VCx3KX19cmV0dXJuIHZ9ZnVuY3Rp
b24gaShlLHQsbil7cmV0dXJuIG51bGw9PWU/MDpvKGUsIiIsdCxuKX12YXIgYT1uKDIzKSx1PShu
KDExKSxuKDkxKSkscz1uKDIyMCksYz0obigxKSxuKDIxMykpLGw9KG4oMiksIi4iKSxwPSI6Ijtl
LmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3Jl
dHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBvKCl7Zm9yKHZhciBl
PWFyZ3VtZW50cy5sZW5ndGgsdD1BcnJheShlKSxuPTA7bjxlO24rKyl0W25dPWFyZ3VtZW50c1tu
XTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKG4scixvKXt2YXIgYT1lKG4scixv
KSxzPWEuZGlzcGF0Y2gsYz1bXSxsPXtnZXRTdGF0ZTphLmdldFN0YXRlLGRpc3BhdGNoOmZ1bmN0
aW9uKGUpe3JldHVybiBzKGUpfX07cmV0dXJuIGM9dC5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUo
bCl9KSxzPXUuZGVmYXVsdC5hcHBseSh2b2lkIDAsYykoYS5kaXNwYXRjaCksaSh7fSxhLHtkaXNw
YXRjaDpzfSl9fX10Ll9fZXNNb2R1bGU9ITA7dmFyIGk9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24o
ZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3Rd
O2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIp
JiYoZVtyXT1uW3JdKX1yZXR1cm4gZX07dC5kZWZhdWx0PW87dmFyIGE9big5NCksdT1yKGEpfSxm
dW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIGZ1bmN0aW9u
KCl7cmV0dXJuIHQoZS5hcHBseSh2b2lkIDAsYXJndW1lbnRzKSl9fWZ1bmN0aW9uIHIoZSx0KXtp
ZigiZnVuY3Rpb24iPT10eXBlb2YgZSlyZXR1cm4gbihlLHQpO2lmKCJvYmplY3QiIT10eXBlb2Yg
ZXx8bnVsbD09PWUpdGhyb3cgbmV3IEVycm9yKCJiaW5kQWN0aW9uQ3JlYXRvcnMgZXhwZWN0ZWQg
YW4gb2JqZWN0IG9yIGEgZnVuY3Rpb24sIGluc3RlYWQgcmVjZWl2ZWQgIisobnVsbD09PWU/Im51
bGwiOnR5cGVvZiBlKSsnLiBEaWQgeW91IHdyaXRlICJpbXBvcnQgQWN0aW9uQ3JlYXRvcnMgZnJv
bSIgaW5zdGVhZCBvZiAiaW1wb3J0ICogYXMgQWN0aW9uQ3JlYXRvcnMgZnJvbSI/Jyk7Zm9yKHZh
ciByPU9iamVjdC5rZXlzKGUpLG89e30saT0wO2k8ci5sZW5ndGg7aSsrKXt2YXIgYT1yW2ldLHU9
ZVthXTsiZnVuY3Rpb24iPT10eXBlb2YgdSYmKG9bYV09bih1LHQpKX1yZXR1cm4gb310Ll9fZXNN
b2R1bGU9ITAsdC5kZWZhdWx0PXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbyhl
LHQpe3ZhciBuPXQmJnQudHlwZSxyPW4mJiciJytuLnRvU3RyaW5nKCkrJyInfHwiYW4gYWN0aW9u
IjtyZXR1cm4iR2l2ZW4gYWN0aW9uICIrcisnLCByZWR1Y2VyICInK2UrJyIgcmV0dXJuZWQgdW5k
ZWZpbmVkLiBUbyBpZ25vcmUgYW4gYWN0aW9uLCB5b3UgbXVzdCBleHBsaWNpdGx5IHJldHVybiB0
aGUgcHJldmlvdXMgc3RhdGUuIElmIHlvdSB3YW50IHRoaXMgcmVkdWNlciB0byBob2xkIG5vIHZh
bHVlLCB5b3UgY2FuIHJldHVybiBudWxsIGluc3RlYWQgb2YgdW5kZWZpbmVkLid9ZnVuY3Rpb24g
aShlKXtPYmplY3Qua2V5cyhlKS5mb3JFYWNoKGZ1bmN0aW9uKHQpe3ZhciBuPWVbdF0scj1uKHZv
aWQgMCx7dHlwZTp1LkFjdGlvblR5cGVzLklOSVR9KTtpZigidW5kZWZpbmVkIj09dHlwZW9mIHIp
dGhyb3cgbmV3IEVycm9yKCdSZWR1Y2VyICInK3QrIlwiIHJldHVybmVkIHVuZGVmaW5lZCBkdXJp
bmcgaW5pdGlhbGl6YXRpb24uIElmIHRoZSBzdGF0ZSBwYXNzZWQgdG8gdGhlIHJlZHVjZXIgaXMg
dW5kZWZpbmVkLCB5b3UgbXVzdCBleHBsaWNpdGx5IHJldHVybiB0aGUgaW5pdGlhbCBzdGF0ZS4g
VGhlIGluaXRpYWwgc3RhdGUgbWF5IG5vdCBiZSB1bmRlZmluZWQuIElmIHlvdSBkb24ndCB3YW50
IHRvIHNldCBhIHZhbHVlIGZvciB0aGlzIHJlZHVjZXIsIHlvdSBjYW4gdXNlIG51bGwgaW5zdGVh
ZCBvZiB1bmRlZmluZWQuIik7dmFyIG89IkBAcmVkdXgvUFJPQkVfVU5LTk9XTl9BQ1RJT05fIitN
YXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zdWJzdHJpbmcoNykuc3BsaXQoIiIpLmpvaW4oIi4i
KTtpZigidW5kZWZpbmVkIj09dHlwZW9mIG4odm9pZCAwLHt0eXBlOm99KSl0aHJvdyBuZXcgRXJy
b3IoJ1JlZHVjZXIgIicrdCsnIiByZXR1cm5lZCB1bmRlZmluZWQgd2hlbiBwcm9iZWQgd2l0aCBh
IHJhbmRvbSB0eXBlLiAnKygiRG9uJ3QgdHJ5IHRvIGhhbmRsZSAiK3UuQWN0aW9uVHlwZXMuSU5J
VCsnIG9yIG90aGVyIGFjdGlvbnMgaW4gInJlZHV4LyoiICcpKyJuYW1lc3BhY2UuIFRoZXkgYXJl
IGNvbnNpZGVyZWQgcHJpdmF0ZS4gSW5zdGVhZCwgeW91IG11c3QgcmV0dXJuIHRoZSBjdXJyZW50
IHN0YXRlIGZvciBhbnkgdW5rbm93biBhY3Rpb25zLCB1bmxlc3MgaXQgaXMgdW5kZWZpbmVkLCBp
biB3aGljaCBjYXNlIHlvdSBtdXN0IHJldHVybiB0aGUgaW5pdGlhbCBzdGF0ZSwgcmVnYXJkbGVz
cyBvZiB0aGUgYWN0aW9uIHR5cGUuIFRoZSBpbml0aWFsIHN0YXRlIG1heSBub3QgYmUgdW5kZWZp
bmVkLCBidXQgY2FuIGJlIG51bGwuIil9KX1mdW5jdGlvbiBhKGUpe2Zvcih2YXIgdD1PYmplY3Qu
a2V5cyhlKSxuPXt9LHI9MDtyPHQubGVuZ3RoO3IrKyl7dmFyIGE9dFtyXTsiZnVuY3Rpb24iPT10
eXBlb2YgZVthXSYmKG5bYV09ZVthXSl9dmFyIHU9T2JqZWN0LmtleXMobikscz12b2lkIDA7dHJ5
e2kobil9Y2F0Y2goYyl7cz1jfXJldHVybiBmdW5jdGlvbigpe3ZhciBlPWFyZ3VtZW50cy5sZW5n
dGg+MCYmdm9pZCAwIT09YXJndW1lbnRzWzBdP2FyZ3VtZW50c1swXTp7fSx0PWFyZ3VtZW50c1sx
XTtpZihzKXRocm93IHM7Zm9yKHZhciByPSExLGk9e30sYT0wO2E8dS5sZW5ndGg7YSsrKXt2YXIg
Yz11W2FdLGw9bltjXSxwPWVbY10sZD1sKHAsdCk7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBkKXt2
YXIgZj1vKGMsdCk7dGhyb3cgbmV3IEVycm9yKGYpfWlbY109ZCxyPXJ8fGQhPT1wfXJldHVybiBy
P2k6ZX19dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD1hO3ZhciB1PW4oOTUpLHM9bigzMyksYz0o
cihzKSxuKDk2KSk7cihjKX0sZnVuY3Rpb24oZSx0LG4pe2UuZXhwb3J0cz1uKDIyOSl9LGZ1bmN0
aW9uKGUsdCxuKXsoZnVuY3Rpb24oZSxyKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbyhlKXtyZXR1
cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19T2JqZWN0LmRlZmluZVByb3BlcnR5KHQs
Il9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBpLGE9bigyMzApLHU9byhhKTtpPSJ1bmRlZmlu
ZWQiIT10eXBlb2Ygc2VsZj9zZWxmOiJ1bmRlZmluZWQiIT10eXBlb2Ygd2luZG93P3dpbmRvdzoi
dW5kZWZpbmVkIiE9dHlwZW9mIGU/ZTpyO3ZhciBzPSgwLHUuZGVmYXVsdCkoaSk7dC5kZWZhdWx0
PXN9KS5jYWxsKHQsZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30oKSxuKDIxMSkoZSkpfSxmdW5jdGlv
bihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3ZhciB0LG49ZS5TeW1ib2w7cmV0dXJu
ImZ1bmN0aW9uIj09dHlwZW9mIG4/bi5vYnNlcnZhYmxlP3Q9bi5vYnNlcnZhYmxlOih0PW4oIm9i
c2VydmFibGUiKSxuLm9ic2VydmFibGU9dCk6dD0iQEBvYnNlcnZhYmxlIix0fU9iamVjdC5kZWZp
bmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KSx0LmRlZmF1bHQ9bn0sZnVuY3Rp
b24oZSx0LG4scil7InVzZSBzdHJpY3QiO3ZhciBvPW4ociksaT0obigxKSxmdW5jdGlvbihlKXt2
YXIgdD10aGlzO2lmKHQuaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIG49dC5pbnN0YW5jZVBvb2wu
cG9wKCk7cmV0dXJuIHQuY2FsbChuLGUpLG59cmV0dXJuIG5ldyB0KGUpfSksYT1mdW5jdGlvbihl
LHQpe3ZhciBuPXRoaXM7aWYobi5pbnN0YW5jZVBvb2wubGVuZ3RoKXt2YXIgcj1uLmluc3RhbmNl
UG9vbC5wb3AoKTtyZXR1cm4gbi5jYWxsKHIsZSx0KSxyfXJldHVybiBuZXcgbihlLHQpfSx1PWZ1
bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzO2lmKHIuaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIG89
ci5pbnN0YW5jZVBvb2wucG9wKCk7cmV0dXJuIHIuY2FsbChvLGUsdCxuKSxvfXJldHVybiBuZXcg
cihlLHQsbil9LHM9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89dGhpcztpZihvLmluc3RhbmNlUG9v
bC5sZW5ndGgpe3ZhciBpPW8uaW5zdGFuY2VQb29sLnBvcCgpO3JldHVybiBvLmNhbGwoaSxlLHQs
bixyKSxpfXJldHVybiBuZXcgbyhlLHQsbixyKX0sYz1mdW5jdGlvbihlKXt2YXIgdD10aGlzO2Ug
aW5zdGFuY2VvZiB0P3ZvaWQgMDpvKCIyNSIpLGUuZGVzdHJ1Y3RvcigpLHQuaW5zdGFuY2VQb29s
Lmxlbmd0aDx0LnBvb2xTaXplJiZ0Lmluc3RhbmNlUG9vbC5wdXNoKGUpfSxsPTEwLHA9aSxkPWZ1
bmN0aW9uKGUsdCl7dmFyIG49ZTtyZXR1cm4gbi5pbnN0YW5jZVBvb2w9W10sbi5nZXRQb29sZWQ9
dHx8cCxuLnBvb2xTaXplfHwobi5wb29sU2l6ZT1sKSxuLnJlbGVhc2U9YyxufSxmPXthZGRQb29s
aW5nVG86ZCxvbmVBcmd1bWVudFBvb2xlcjppLHR3b0FyZ3VtZW50UG9vbGVyOmEsdGhyZWVBcmd1
bWVudFBvb2xlcjp1LGZvdXJBcmd1bWVudFBvb2xlcjpzfTtlLmV4cG9ydHM9Zn1dKSk7CisvLyMg
c291cmNlTWFwcGluZ1VSTD1tYWluLjQzYTA5NDhjLmpzLm1hcApcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L2Rpc3Qvc3RhdGlj
L2pzL21haW4uNDNhMDk0OGMuanMubWFwIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9y
ZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvZGlzdC9z
dGF0aWMvanMvbWFpbi40M2EwOTQ4Yy5qcy5tYXAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWMxZDAwOWRmNzc0MDEz
MTEwOTdiMTI0MjVlMTI2ZTdlYWZlNDE4ZAotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNl
VGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVz
L3JlYWN0LXJlZHV4L2Rpc3Qvc3RhdGljL2pzL21haW4uNDNhMDk0OGMuanMubWFwCkBAIC0wLDAg
KzEgQEAKK3sidmVyc2lvbiI6Mywic291cmNlcyI6WyJ3ZWJwYWNrOi8vL3N0YXRpYy9qcy9tYWlu
LjQzYTA5NDhjLmpzIiwid2VicGFjazovLy93ZWJwYWNrL2Jvb3RzdHJhcCA2YTNhNjgwN2UxMmQx
NTdlNjkwYyIsIndlYnBhY2s6Ly8vLi9+L2ZianMvbGliL2ludmFyaWFudC5qcyIsIndlYnBhY2s6
Ly8vLi9+L2ZianMvbGliL3dhcm5pbmcuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGli
L3JlYWN0UHJvZEludmFyaWFudC5qcyIsIndlYnBhY2s6Ly8vLi9+L29iamVjdC1hc3NpZ24vaW5k
ZXguanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0RE9NQ29tcG9uZW50VHJl
ZS5qcyIsIndlYnBhY2s6Ly8vLi9+L2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50LmpzIiwi
d2VicGFjazovLy8uL34vZmJqcy9saWIvZW1wdHlGdW5jdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9+
L3JlYWN0LWRvbS9saWIvUmVhY3RJbnN0cnVtZW50YXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4vfi9y
ZWFjdC1kb20vbGliL1JlYWN0VXBkYXRlcy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9s
aWIvU3ludGhldGljRXZlbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC9saWIvUmVhY3RDdXJy
ZW50T3duZXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC9yZWFjdC5qcyIsIndlYnBhY2s6Ly8v
Li9+L3JlYWN0LWRvbS9saWIvRE9NTGF6eVRyZWUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1k
b20vbGliL0RPTVByb3BlcnR5LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFj
dFJlY29uY2lsZXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC9saWIvUmVhY3QuanMiLCJ3ZWJw
YWNrOi8vLy4vfi9yZWFjdC9saWIvUmVhY3RFbGVtZW50LmpzIiwid2VicGFjazovLy8uL34vcmVh
Y3QtZG9tL2xpYi9FdmVudFBsdWdpbkh1Yi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9s
aWIvRXZlbnRQcm9wYWdhdG9ycy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVh
Y3RJbnN0YW5jZU1hcC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvU3ludGhldGlj
VUlFdmVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L2ZianMvbGliL2VtcHR5T2JqZWN0LmpzIiwid2Vi
cGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuanMiLCJ3
ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY01vdXNlRXZlbnQuanMiLCJ3ZWJw
YWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1RyYW5zYWN0aW9uLmpzIiwid2VicGFjazovLy8uL34v
cmVhY3QtZG9tL2xpYi9lc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIuanMiLCJ3ZWJwYWNrOi8v
Ly4vfi9yZWFjdC1kb20vbGliL3NldElubmVySFRNTC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlZHV4
L2xpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9+L2NsYXNzbmFtZXMvaW5kZXguanMiLCJ3ZWJw
YWNrOi8vLy4vfi9mYmpzL2xpYi9zaGFsbG93RXF1YWwuanMiLCJ3ZWJwYWNrOi8vLy4vfi9sb2Rh
c2gvaXNQbGFpbk9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvRE9NQ2hp
bGRyZW5PcGVyYXRpb25zLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9ET01OYW1l
c3BhY2VzLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9FdmVudFBsdWdpblJlZ2lz
dHJ5LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9FdmVudFBsdWdpblV0aWxzLmpz
Iiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9LZXlFc2NhcGVVdGlscy5qcyIsIndlYnBh
Y2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvTGlua2VkVmFsdWVVdGlscy5qcyIsIndlYnBhY2s6Ly8v
Li9+L3JlYWN0LWRvbS9saWIvUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5qcyIsIndlYnBhY2s6
Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RFcnJvclV0aWxzLmpzIiwid2VicGFjazovLy8uL34v
cmVhY3QtZG9tL2xpYi9SZWFjdFVwZGF0ZVF1ZXVlLmpzIiwid2VicGFjazovLy8uL34vcmVhY3Qt
ZG9tL2xpYi9jcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uLmpzIiwid2VicGFjazov
Ly8uL34vcmVhY3QtZG9tL2xpYi9nZXRFdmVudENoYXJDb2RlLmpzIiwid2VicGFjazovLy8uL34v
cmVhY3QtZG9tL2xpYi9nZXRFdmVudE1vZGlmaWVyU3RhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9y
ZWFjdC1kb20vbGliL2dldEV2ZW50VGFyZ2V0LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9t
L2xpYi9pc0V2ZW50U3VwcG9ydGVkLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9z
aG91bGRVcGRhdGVSZWFjdENvbXBvbmVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9s
aWIvdmFsaWRhdGVET01OZXN0aW5nLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtcmVkdXgvbGli
L3V0aWxzL3dhcm5pbmcuanMiLCJ3ZWJwYWNrOi8vLy4vfi9mYmpzL2xpYi9FdmVudExpc3RlbmVy
LmpzIiwid2VicGFjazovLy8uL34vZmJqcy9saWIvZm9jdXNOb2RlLmpzIiwid2VicGFjazovLy8u
L34vZmJqcy9saWIvZ2V0QWN0aXZlRWxlbWVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9f
U3ltYm9sLmpzIiwid2VicGFjazovLy8uL34vcHJvcC10eXBlcy9mYWN0b3J5LmpzIiwid2VicGFj
azovLy8uL34vcHJvcC10eXBlcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9+L3Byb3AtdHlwZXMv
bGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xp
Yi9DU1NQcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvQ2FsbGJhY2tR
dWV1ZS5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvRE9NUHJvcGVydHlPcGVyYXRp
b25zLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTUNvbXBvbmVudEZs
YWdzLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTVNlbGVjdC5qcyIs
IndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RFbXB0eUNvbXBvbmVudC5qcyIsIndl
YnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RGZWF0dXJlRmxhZ3MuanMiLCJ3ZWJwYWNr
Oi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0SG9zdENvbXBvbmVudC5qcyIsIndlYnBhY2s6Ly8v
Li9+L3JlYWN0LWRvbS9saWIvUmVhY3RJbnB1dFNlbGVjdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9+
L3JlYWN0LWRvbS9saWIvUmVhY3RNb3VudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9s
aWIvUmVhY3ROb2RlVHlwZXMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1ZpZXdw
b3J0TWV0cmljcy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvYWNjdW11bGF0ZUlu
dG8uanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL2ZvckVhY2hBY2N1bXVsYXRlZC5q
cyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvZ2V0SG9zdENvbXBvbmVudEZyb21Db21w
b3NpdGUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL2dldFRleHRDb250ZW50QWNj
ZXNzb3IuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL2lucHV0VmFsdWVUcmFja2lu
Zy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvaW5zdGFudGlhdGVSZWFjdENvbXBv
bmVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvaXNUZXh0SW5wdXRFbGVtZW50
LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9zZXRUZXh0Q29udGVudC5qcyIsIndl
YnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvdHJhdmVyc2VBbGxDaGlsZHJlbi5qcyIsIndlYnBh
Y2s6Ly8vLi9+L3JlYWN0LXJlZHV4L2xpYi9jb21wb25lbnRzL2Nvbm5lY3RBZHZhbmNlZC5qcyIs
IndlYnBhY2s6Ly8vLi9+L3JlYWN0LXJlZHV4L2xpYi9jb25uZWN0L3dyYXBNYXBUb1Byb3BzLmpz
Iiwid2VicGFjazovLy8uL34vcmVhY3QtcmVkdXgvbGliL2luZGV4LmpzIiwid2VicGFjazovLy8u
L34vcmVhY3QtcmVkdXgvbGliL3V0aWxzL1Byb3BUeXBlcy5qcyIsIndlYnBhY2s6Ly8vLi9+L3Jl
YWN0LXJlZHV4L2xpYi91dGlscy92ZXJpZnlQbGFpbk9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9z
cmMvY29tcG9uZW50cy9Ub2RvVGV4dElucHV0LmpzIiwid2VicGFjazovLy8uL3NyYy9jb25zdGFu
dHMvQWN0aW9uVHlwZXMuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbnN0YW50cy9Ub2RvRmlsdGVy
cy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LXNjcmlwdHMvfi9wcm9jZXNzL2Jyb3dzZXIuanMi
LCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1zY3JpcHRzL34vcHJvbWlzZS9saWIvY29yZS5qcyIsIndl
YnBhY2s6Ly8vLi9+L3JlYWN0L2xpYi9SZWFjdEJhc2VDbGFzc2VzLmpzIiwid2VicGFjazovLy8u
L34vcmVhY3QvbGliL1JlYWN0Q29tcG9uZW50VHJlZUhvb2suanMiLCJ3ZWJwYWNrOi8vLy4vfi9y
ZWFjdC9saWIvUmVhY3RFbGVtZW50U3ltYm9sLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QvbGli
L1JlYWN0Tm9vcFVwZGF0ZVF1ZXVlLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QvbGliL2NhbkRl
ZmluZVByb3BlcnR5LmpzIiwid2VicGFjazovLy8uL34vcmVkdXgvbGliL2NvbXBvc2UuanMiLCJ3
ZWJwYWNrOi8vLy4vfi9yZWR1eC9saWIvY3JlYXRlU3RvcmUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9y
ZWR1eC9saWIvdXRpbHMvd2FybmluZy5qcyIsIndlYnBhY2s6Ly8vLi9+L2NyZWF0ZS1yZWFjdC1j
bGFzcy9mYWN0b3J5LmpzIiwid2VicGFjazovLy8uL34vZmJqcy9saWIvY2FtZWxpemUuanMiLCJ3
ZWJwYWNrOi8vLy4vfi9mYmpzL2xpYi9jYW1lbGl6ZVN0eWxlTmFtZS5qcyIsIndlYnBhY2s6Ly8v
Li9+L2ZianMvbGliL2NvbnRhaW5zTm9kZS5qcyIsIndlYnBhY2s6Ly8vLi9+L2ZianMvbGliL2Ny
ZWF0ZUFycmF5RnJvbU1peGVkLmpzIiwid2VicGFjazovLy8uL34vZmJqcy9saWIvY3JlYXRlTm9k
ZXNGcm9tTWFya3VwLmpzIiwid2VicGFjazovLy8uL34vZmJqcy9saWIvZ2V0TWFya3VwV3JhcC5q
cyIsIndlYnBhY2s6Ly8vLi9+L2ZianMvbGliL2dldFVuYm91bmRlZFNjcm9sbFBvc2l0aW9uLmpz
Iiwid2VicGFjazovLy8uL34vZmJqcy9saWIvaHlwaGVuYXRlLmpzIiwid2VicGFjazovLy8uL34v
ZmJqcy9saWIvaHlwaGVuYXRlU3R5bGVOYW1lLmpzIiwid2VicGFjazovLy8uL34vZmJqcy9saWIv
aXNOb2RlLmpzIiwid2VicGFjazovLy8uL34vZmJqcy9saWIvaXNUZXh0Tm9kZS5qcyIsIndlYnBh
Y2s6Ly8vLi9+L2ZianMvbGliL21lbW9pemVTdHJpbmdPbmx5LmpzIiwid2VicGFjazovLy8uL34v
aG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vfi9pbnZhcmlh
bnQvYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFzaC9fYmFzZUdldFRhZy5qcyIsIndl
YnBhY2s6Ly8vLi9+L2xvZGFzaC9fZnJlZUdsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9+L2xvZGFz
aC9fZ2V0UHJvdG90eXBlLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19nZXRSYXdUYWcuanMi
LCJ3ZWJwYWNrOi8vLy4vfi9sb2Rhc2gvX29iamVjdFRvU3RyaW5nLmpzIiwid2VicGFjazovLy8u
L34vbG9kYXNoL19vdmVyQXJnLmpzIiwid2VicGFjazovLy8uL34vbG9kYXNoL19yb290LmpzIiwi
d2VicGFjazovLy8uL34vbG9kYXNoL2lzT2JqZWN0TGlrZS5qcyIsIndlYnBhY2s6Ly8vLi9+L3By
b3AtdHlwZXMvY2hlY2tQcm9wVHlwZXMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9wcm9wLXR5cGVzL2Zh
Y3RvcnlXaXRoVGhyb3dpbmdTaGltcy5qcyIsIndlYnBhY2s6Ly8vLi9+L3Byb3AtdHlwZXMvZmFj
dG9yeVdpdGhUeXBlQ2hlY2tlcnMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vaW5kZXgu
anMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL0FSSUFET01Qcm9wZXJ0eUNvbmZpZy5q
cyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvQXV0b0ZvY3VzVXRpbHMuanMiLCJ3ZWJw
YWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL0JlZm9yZUlucHV0RXZlbnRQbHVnaW4uanMiLCJ3ZWJw
YWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL0NTU1Byb3BlcnR5T3BlcmF0aW9ucy5qcyIsIndlYnBh
Y2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvQ2hhbmdlRXZlbnRQbHVnaW4uanMiLCJ3ZWJwYWNrOi8v
Ly4vfi9yZWFjdC1kb20vbGliL0Rhbmdlci5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9s
aWIvRGVmYXVsdEV2ZW50UGx1Z2luT3JkZXIuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20v
bGliL0VudGVyTGVhdmVFdmVudFBsdWdpbi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9s
aWIvRmFsbGJhY2tDb21wb3NpdGlvblN0YXRlLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9t
L2xpYi9IVE1MRE9NUHJvcGVydHlDb25maWcuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20v
bGliL1JlYWN0Q2hpbGRSZWNvbmNpbGVyLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xp
Yi9SZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3Jl
YWN0LWRvbS9saWIvUmVhY3RDb21wb3NpdGVDb21wb25lbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9y
ZWFjdC1kb20vbGliL1JlYWN0RE9NLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9S
ZWFjdERPTUNvbXBvbmVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RE
T01Db250YWluZXJJbmZvLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdERP
TUVtcHR5Q29tcG9uZW50LmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdERP
TUZlYXR1cmVGbGFncy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RET01J
RE9wZXJhdGlvbnMuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0RE9NSW5w
dXQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0RE9NT3B0aW9uLmpzIiwi
d2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTVNlbGVjdGlvbi5qcyIsIndlYnBh
Y2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RET01UZXh0Q29tcG9uZW50LmpzIiwid2VicGFj
azovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTVRleHRhcmVhLmpzIiwid2VicGFjazovLy8u
L34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTVRyZWVUcmF2ZXJzYWwuanMiLCJ3ZWJwYWNrOi8vLy4v
fi9yZWFjdC1kb20vbGliL1JlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kuanMiLCJ3ZWJwYWNr
Oi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0RGVmYXVsdEluamVjdGlvbi5qcyIsIndlYnBhY2s6
Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RFdmVudEVtaXR0ZXJNaXhpbi5qcyIsIndlYnBhY2s6
Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RFdmVudExpc3RlbmVyLmpzIiwid2VicGFjazovLy8u
L34vcmVhY3QtZG9tL2xpYi9SZWFjdEluamVjdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0
LWRvbS9saWIvUmVhY3RNYXJrdXBDaGVja3N1bS5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRv
bS9saWIvUmVhY3RNdWx0aUNoaWxkLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9S
ZWFjdE93bmVyLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtZG9tL2xpYi9SZWFjdFByb3BUeXBl
c1NlY3JldC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RSZWNvbmNpbGVU
cmFuc2FjdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RSZWYuanMi
LCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNh
Y3Rpb24uanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0U2VydmVyVXBkYXRl
UXVldWUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1JlYWN0VmVyc2lvbi5qcyIs
IndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvU1ZHRE9NUHJvcGVydHlDb25maWcuanMiLCJ3
ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL1NlbGVjdEV2ZW50UGx1Z2luLmpzIiwid2VicGFj
azovLy8uL34vcmVhY3QtZG9tL2xpYi9TaW1wbGVFdmVudFBsdWdpbi5qcyIsIndlYnBhY2s6Ly8v
Li9+L3JlYWN0LWRvbS9saWIvU3ludGhldGljQW5pbWF0aW9uRXZlbnQuanMiLCJ3ZWJwYWNrOi8v
Ly4vfi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0NsaXBib2FyZEV2ZW50LmpzIiwid2VicGFjazov
Ly8uL34vcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50LmpzIiwid2VicGFj
azovLy8uL34vcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNEcmFnRXZlbnQuanMiLCJ3ZWJwYWNrOi8v
Ly4vfi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0ZvY3VzRXZlbnQuanMiLCJ3ZWJwYWNrOi8vLy4v
fi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0lucHV0RXZlbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9y
ZWFjdC1kb20vbGliL1N5bnRoZXRpY0tleWJvYXJkRXZlbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9y
ZWFjdC1kb20vbGliL1N5bnRoZXRpY1RvdWNoRXZlbnQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFj
dC1kb20vbGliL1N5bnRoZXRpY1RyYW5zaXRpb25FdmVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3Jl
YWN0LWRvbS9saWIvU3ludGhldGljV2hlZWxFdmVudC5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0
LWRvbS9saWIvYWRsZXIzMi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvZGFuZ2Vy
b3VzU3R5bGVWYWx1ZS5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvZmluZERPTU5v
ZGUuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1kb20vbGliL2ZsYXR0ZW5DaGlsZHJlbi5qcyIs
IndlYnBhY2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvZ2V0RXZlbnRLZXkuanMiLCJ3ZWJwYWNrOi8v
Ly4vfi9yZWFjdC1kb20vbGliL2dldEl0ZXJhdG9yRm4uanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFj
dC1kb20vbGliL2dldE5vZGVGb3JDaGFyYWN0ZXJPZmZzZXQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9y
ZWFjdC1kb20vbGliL2dldFZlbmRvclByZWZpeGVkRXZlbnROYW1lLmpzIiwid2VicGFjazovLy8u
L34vcmVhY3QtZG9tL2xpYi9xdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3Nlci5qcyIsIndlYnBh
Y2s6Ly8vLi9+L3JlYWN0LWRvbS9saWIvcmVuZGVyU3VidHJlZUludG9Db250YWluZXIuanMiLCJ3
ZWJwYWNrOi8vLy4vfi9yZWFjdC1yZWR1eC9saWIvY29tcG9uZW50cy9Qcm92aWRlci5qcyIsIndl
YnBhY2s6Ly8vLi9+L3JlYWN0LXJlZHV4L2xpYi9jb25uZWN0L2Nvbm5lY3QuanMiLCJ3ZWJwYWNr
Oi8vLy4vfi9yZWFjdC1yZWR1eC9saWIvY29ubmVjdC9tYXBEaXNwYXRjaFRvUHJvcHMuanMiLCJ3
ZWJwYWNrOi8vLy4vfi9yZWFjdC1yZWR1eC9saWIvY29ubmVjdC9tYXBTdGF0ZVRvUHJvcHMuanMi
LCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1yZWR1eC9saWIvY29ubmVjdC9tZXJnZVByb3BzLmpzIiwi
d2VicGFjazovLy8uL34vcmVhY3QtcmVkdXgvbGliL2Nvbm5lY3Qvc2VsZWN0b3JGYWN0b3J5Lmpz
Iiwid2VicGFjazovLy8uL34vcmVhY3QtcmVkdXgvbGliL2Nvbm5lY3QvdmVyaWZ5U3Vic2VsZWN0
b3JzLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QtcmVkdXgvbGliL3V0aWxzL1N1YnNjcmlwdGlv
bi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0LXJlZHV4L2xpYi91dGlscy9zaGFsbG93RXF1YWwu
anMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC1zY3JpcHRzL2NvbmZpZy9wb2x5ZmlsbHMuanMiLCJ3
ZWJwYWNrOi8vLy4vfi9yZWFjdC1zY3JpcHRzL34vYXNhcC9icm93c2VyLXJhdy5qcyIsIndlYnBh
Y2s6Ly8vLi9zcmMvYWN0aW9ucy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvY29tcG9uZW50
cy9Gb290ZXIuanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL2NvbXBvbmVudHMvSGVhZGVyLmpzIiwid2Vi
cGFjazovLy8uL3NyYy9jb21wb25lbnRzL01haW5TZWN0aW9uLmpzIiwid2VicGFjazovLy8uL3Ny
Yy9jb21wb25lbnRzL1RvZG9JdGVtLmpzIiwid2VicGFjazovLy8uL3NyYy9jb250YWluZXJzL0Fw
cC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vc3JjL3JlZHVj
ZXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL3NyYy9yZWR1Y2Vycy90b2Rvcy5qcyIsIndlYnBh
Y2s6Ly8vLi9+L3JlYWN0LXNjcmlwdHMvfi9vYmplY3QtYXNzaWduL2luZGV4LmpzIiwid2VicGFj
azovLy8uL34vcmVhY3Qtc2NyaXB0cy9+L3Byb21pc2UvbGliL2VzNi1leHRlbnNpb25zLmpzIiwi
d2VicGFjazovLy8uL34vcmVhY3Qtc2NyaXB0cy9+L3Byb21pc2UvbGliL3JlamVjdGlvbi10cmFj
a2luZy5qcyIsIndlYnBhY2s6Ly8vKHdlYnBhY2spL2J1aWxkaW4vbW9kdWxlLmpzIiwid2VicGFj
azovLy8uL34vcmVhY3Qtc2NyaXB0cy9+L3doYXR3Zy1mZXRjaC9mZXRjaC5qcyIsIndlYnBhY2s6
Ly8vLi9+L3JlYWN0L2xpYi9SZWFjdENoaWxkcmVuLmpzIiwid2VicGFjazovLy8uL34vcmVhY3Qv
bGliL1JlYWN0RE9NRmFjdG9yaWVzLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QvbGliL1JlYWN0
UHJvcFR5cGVzLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QvbGliL2NyZWF0ZUNsYXNzLmpzIiwi
d2VicGFjazovLy8uL34vcmVhY3QvbGliL2dldE5leHREZWJ1Z0lELmpzIiwid2VicGFjazovLy8u
L34vcmVhY3QvbGliL2xvd1ByaW9yaXR5V2FybmluZy5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlYWN0
L2xpYi9vbmx5Q2hpbGQuanMiLCJ3ZWJwYWNrOi8vLy4vfi9yZWFjdC9saWIvdHJhdmVyc2VBbGxD
aGlsZHJlbi5qcyIsIndlYnBhY2s6Ly8vLi9+L3JlZHV4L2xpYi9hcHBseU1pZGRsZXdhcmUuanMi
LCJ3ZWJwYWNrOi8vLy4vfi9yZWR1eC9saWIvYmluZEFjdGlvbkNyZWF0b3JzLmpzIiwid2VicGFj
azovLy8uL34vcmVkdXgvbGliL2NvbWJpbmVSZWR1Y2Vycy5qcyIsIndlYnBhY2s6Ly8vLi9+L3N5
bWJvbC1vYnNlcnZhYmxlL2luZGV4LmpzIiwid2VicGFjazovLy8uL34vc3ltYm9sLW9ic2VydmFi
bGUvbGliL2luZGV4LmpzIiwid2VicGFjazovLy8uL34vc3ltYm9sLW9ic2VydmFibGUvbGliL3Bv
bnlmaWxsLmpzIiwid2VicGFjazovLy8uL34vcmVhY3QvbGliL1Bvb2xlZENsYXNzLmpzIl0sIm5h
bWVzIjpbIm1vZHVsZXMiLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJpbnN0YWxs
ZWRNb2R1bGVzIiwiZXhwb3J0cyIsIm1vZHVsZSIsImlkIiwibG9hZGVkIiwiY2FsbCIsIm0iLCJj
IiwicCIsImkiLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsIl9tIiwiYXJn
cyIsInNsaWNlIiwiZm4iLCJhIiwiYiIsImFwcGx5IiwidGhpcyIsImNvbmNhdCIsImludmFyaWFu
dCIsImNvbmRpdGlvbiIsImZvcm1hdCIsImQiLCJlIiwiZiIsInZhbGlkYXRlRm9ybWF0IiwiZXJy
b3IiLCJ1bmRlZmluZWQiLCJFcnJvciIsImFyZ0luZGV4IiwicmVwbGFjZSIsIm5hbWUiLCJmcmFt
ZXNUb1BvcCIsImVtcHR5RnVuY3Rpb24iLCJ3YXJuaW5nIiwicmVhY3RQcm9kSW52YXJpYW50Iiwi
Y29kZSIsImFyZ0NvdW50IiwiYXJndW1lbnRzIiwibGVuZ3RoIiwibWVzc2FnZSIsImFyZ0lkeCIs
ImVuY29kZVVSSUNvbXBvbmVudCIsInRvT2JqZWN0IiwidmFsIiwiVHlwZUVycm9yIiwic2hvdWxk
VXNlTmF0aXZlIiwiYXNzaWduIiwidGVzdDEiLCJTdHJpbmciLCJnZXRPd25Qcm9wZXJ0eU5hbWVz
IiwidGVzdDIiLCJmcm9tQ2hhckNvZGUiLCJvcmRlcjIiLCJtYXAiLCJuIiwiam9pbiIsInRlc3Qz
Iiwic3BsaXQiLCJmb3JFYWNoIiwibGV0dGVyIiwia2V5cyIsImVyciIsImdldE93blByb3BlcnR5
U3ltYm9scyIsInByb3BJc0VudW1lcmFibGUiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsInRhcmdl
dCIsInNvdXJjZSIsImZyb20iLCJzeW1ib2xzIiwidG8iLCJzIiwia2V5Iiwic2hvdWxkUHJlY2Fj
aGVOb2RlIiwibm9kZSIsIm5vZGVJRCIsIm5vZGVUeXBlIiwiZ2V0QXR0cmlidXRlIiwiQVRUUl9O
QU1FIiwibm9kZVZhbHVlIiwiZ2V0UmVuZGVyZWRIb3N0T3JUZXh0RnJvbUNvbXBvbmVudCIsImNv
bXBvbmVudCIsInJlbmRlcmVkIiwiX3JlbmRlcmVkQ29tcG9uZW50IiwicHJlY2FjaGVOb2RlIiwi
aW5zdCIsImhvc3RJbnN0IiwiX2hvc3ROb2RlIiwiaW50ZXJuYWxJbnN0YW5jZUtleSIsInVuY2Fj
aGVOb2RlIiwicHJlY2FjaGVDaGlsZE5vZGVzIiwiX2ZsYWdzIiwiRmxhZ3MiLCJoYXNDYWNoZWRD
aGlsZE5vZGVzIiwiY2hpbGRyZW4iLCJfcmVuZGVyZWRDaGlsZHJlbiIsImNoaWxkTm9kZSIsImZp
cnN0Q2hpbGQiLCJvdXRlciIsImNoaWxkSW5zdCIsImNoaWxkSUQiLCJfZG9tSUQiLCJuZXh0U2li
bGluZyIsIl9wcm9kSW52YXJpYW50IiwiZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUiLCJwYXJl
bnRzIiwicHVzaCIsInBhcmVudE5vZGUiLCJjbG9zZXN0IiwicG9wIiwiZ2V0SW5zdGFuY2VGcm9t
Tm9kZSIsImdldE5vZGVGcm9tSW5zdGFuY2UiLCJfaG9zdFBhcmVudCIsIkRPTVByb3BlcnR5Iiwi
UmVhY3RET01Db21wb25lbnRGbGFncyIsIklEX0FUVFJJQlVURV9OQU1FIiwiTWF0aCIsInJhbmRv
bSIsInRvU3RyaW5nIiwiUmVhY3RET01Db21wb25lbnRUcmVlIiwiY2FuVXNlRE9NIiwid2luZG93
IiwiZG9jdW1lbnQiLCJjcmVhdGVFbGVtZW50IiwiRXhlY3V0aW9uRW52aXJvbm1lbnQiLCJjYW5V
c2VXb3JrZXJzIiwiV29ya2VyIiwiY2FuVXNlRXZlbnRMaXN0ZW5lcnMiLCJhZGRFdmVudExpc3Rl
bmVyIiwiYXR0YWNoRXZlbnQiLCJjYW5Vc2VWaWV3cG9ydCIsInNjcmVlbiIsImlzSW5Xb3JrZXIi
LCJtYWtlRW1wdHlGdW5jdGlvbiIsImFyZyIsInRoYXRSZXR1cm5zIiwidGhhdFJldHVybnNGYWxz
ZSIsInRoYXRSZXR1cm5zVHJ1ZSIsInRoYXRSZXR1cm5zTnVsbCIsInRoYXRSZXR1cm5zVGhpcyIs
InRoYXRSZXR1cm5zQXJndW1lbnQiLCJkZWJ1Z1Rvb2wiLCJlbnN1cmVJbmplY3RlZCIsIlJlYWN0
VXBkYXRlcyIsIlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24iLCJiYXRjaGluZ1N0cmF0ZWd5Iiwi
UmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbiIsInJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uIiwi
ZGlydHlDb21wb25lbnRzTGVuZ3RoIiwiY2FsbGJhY2tRdWV1ZSIsIkNhbGxiYWNrUXVldWUiLCJn
ZXRQb29sZWQiLCJyZWNvbmNpbGVUcmFuc2FjdGlvbiIsImJhdGNoZWRVcGRhdGVzIiwiY2FsbGJh
Y2siLCJtb3VudE9yZGVyQ29tcGFyYXRvciIsImMxIiwiYzIiLCJfbW91bnRPcmRlciIsInJ1bkJh
dGNoZWRVcGRhdGVzIiwidHJhbnNhY3Rpb24iLCJsZW4iLCJkaXJ0eUNvbXBvbmVudHMiLCJzb3J0
IiwidXBkYXRlQmF0Y2hOdW1iZXIiLCJjYWxsYmFja3MiLCJfcGVuZGluZ0NhbGxiYWNrcyIsIm1h
cmtlck5hbWUiLCJSZWFjdEZlYXR1cmVGbGFncyIsImxvZ1RvcExldmVsUmVuZGVycyIsIm5hbWVk
Q29tcG9uZW50IiwiX2N1cnJlbnRFbGVtZW50IiwidHlwZSIsImlzUmVhY3RUb3BMZXZlbFdyYXBw
ZXIiLCJnZXROYW1lIiwiY29uc29sZSIsInRpbWUiLCJSZWFjdFJlY29uY2lsZXIiLCJwZXJmb3Jt
VXBkYXRlSWZOZWNlc3NhcnkiLCJ0aW1lRW5kIiwiaiIsImVucXVldWUiLCJnZXRQdWJsaWNJbnN0
YW5jZSIsImVucXVldWVVcGRhdGUiLCJpc0JhdGNoaW5nVXBkYXRlcyIsIl91cGRhdGVCYXRjaE51
bWJlciIsImFzYXAiLCJjb250ZXh0IiwiYXNhcENhbGxiYWNrUXVldWUiLCJhc2FwRW5xdWV1ZWQi
LCJfYXNzaWduIiwiUG9vbGVkQ2xhc3MiLCJUcmFuc2FjdGlvbiIsIk5FU1RFRF9VUERBVEVTIiwi
aW5pdGlhbGl6ZSIsImNsb3NlIiwic3BsaWNlIiwiZmx1c2hCYXRjaGVkVXBkYXRlcyIsIlVQREFU
RV9RVUVVRUlORyIsInJlc2V0Iiwibm90aWZ5QWxsIiwiVFJBTlNBQ1RJT05fV1JBUFBFUlMiLCJn
ZXRUcmFuc2FjdGlvbldyYXBwZXJzIiwiZGVzdHJ1Y3RvciIsInJlbGVhc2UiLCJwZXJmb3JtIiwi
bWV0aG9kIiwic2NvcGUiLCJhZGRQb29saW5nVG8iLCJxdWV1ZSIsIlJlYWN0VXBkYXRlc0luamVj
dGlvbiIsImluamVjdFJlY29uY2lsZVRyYW5zYWN0aW9uIiwiUmVjb25jaWxlVHJhbnNhY3Rpb24i
LCJpbmplY3RCYXRjaGluZ1N0cmF0ZWd5IiwiX2JhdGNoaW5nU3RyYXRlZ3kiLCJpbmplY3Rpb24i
LCJTeW50aGV0aWNFdmVudCIsImRpc3BhdGNoQ29uZmlnIiwidGFyZ2V0SW5zdCIsIm5hdGl2ZUV2
ZW50IiwibmF0aXZlRXZlbnRUYXJnZXQiLCJfdGFyZ2V0SW5zdCIsIkludGVyZmFjZSIsImNvbnN0
cnVjdG9yIiwicHJvcE5hbWUiLCJub3JtYWxpemUiLCJkZWZhdWx0UHJldmVudGVkIiwicmV0dXJu
VmFsdWUiLCJpc0RlZmF1bHRQcmV2ZW50ZWQiLCJpc1Byb3BhZ2F0aW9uU3RvcHBlZCIsInNob3Vs
ZEJlUmVsZWFzZWRQcm9wZXJ0aWVzIiwiUHJveHkiLCJFdmVudEludGVyZmFjZSIsImN1cnJlbnRU
YXJnZXQiLCJldmVudFBoYXNlIiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCJ0aW1lU3RhbXAiLCJl
dmVudCIsIkRhdGUiLCJub3ciLCJpc1RydXN0ZWQiLCJwcmV2ZW50RGVmYXVsdCIsInN0b3BQcm9w
YWdhdGlvbiIsImNhbmNlbEJ1YmJsZSIsInBlcnNpc3QiLCJpc1BlcnNpc3RlbnQiLCJhdWdtZW50
Q2xhc3MiLCJDbGFzcyIsIlN1cGVyIiwiRSIsImZvdXJBcmd1bWVudFBvb2xlciIsIlJlYWN0Q3Vy
cmVudE93bmVyIiwiY3VycmVudCIsImluc2VydFRyZWVDaGlsZHJlbiIsInRyZWUiLCJlbmFibGVM
YXp5IiwiaW5zZXJ0VHJlZUJlZm9yZSIsImh0bWwiLCJzZXRJbm5lckhUTUwiLCJ0ZXh0Iiwic2V0
VGV4dENvbnRlbnQiLCJyZXBsYWNlQ2hpbGRXaXRoVHJlZSIsIm9sZE5vZGUiLCJuZXdUcmVlIiwi
cmVwbGFjZUNoaWxkIiwicXVldWVDaGlsZCIsInBhcmVudFRyZWUiLCJjaGlsZFRyZWUiLCJhcHBl
bmRDaGlsZCIsInF1ZXVlSFRNTCIsInF1ZXVlVGV4dCIsIm5vZGVOYW1lIiwiRE9NTGF6eVRyZWUi
LCJET01OYW1lc3BhY2VzIiwiY3JlYXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbiIsIkVM
RU1FTlRfTk9ERV9UWVBFIiwiRE9DVU1FTlRfRlJBR01FTlRfTk9ERV9UWVBFIiwiZG9jdW1lbnRN
b2RlIiwibmF2aWdhdG9yIiwidXNlckFnZW50IiwidGVzdCIsInJlZmVyZW5jZU5vZGUiLCJ0b0xv
d2VyQ2FzZSIsIm5hbWVzcGFjZVVSSSIsImluc2VydEJlZm9yZSIsImNoZWNrTWFzayIsInZhbHVl
IiwiYml0bWFzayIsIkRPTVByb3BlcnR5SW5qZWN0aW9uIiwiTVVTVF9VU0VfUFJPUEVSVFkiLCJI
QVNfQk9PTEVBTl9WQUxVRSIsIkhBU19OVU1FUklDX1ZBTFVFIiwiSEFTX1BPU0lUSVZFX05VTUVS
SUNfVkFMVUUiLCJIQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFIiwiaW5qZWN0RE9NUHJvcGVy
dHlDb25maWciLCJkb21Qcm9wZXJ0eUNvbmZpZyIsIkluamVjdGlvbiIsIlByb3BlcnRpZXMiLCJE
T01BdHRyaWJ1dGVOYW1lc3BhY2VzIiwiRE9NQXR0cmlidXRlTmFtZXMiLCJET01Qcm9wZXJ0eU5h
bWVzIiwiRE9NTXV0YXRpb25NZXRob2RzIiwiaXNDdXN0b21BdHRyaWJ1dGUiLCJfaXNDdXN0b21B
dHRyaWJ1dGVGdW5jdGlvbnMiLCJwcm9wZXJ0aWVzIiwibG93ZXJDYXNlZCIsInByb3BDb25maWci
LCJwcm9wZXJ0eUluZm8iLCJhdHRyaWJ1dGVOYW1lIiwiYXR0cmlidXRlTmFtZXNwYWNlIiwicHJv
cGVydHlOYW1lIiwibXV0YXRpb25NZXRob2QiLCJtdXN0VXNlUHJvcGVydHkiLCJoYXNCb29sZWFu
VmFsdWUiLCJoYXNOdW1lcmljVmFsdWUiLCJoYXNQb3NpdGl2ZU51bWVyaWNWYWx1ZSIsImhhc092
ZXJsb2FkZWRCb29sZWFuVmFsdWUiLCJBVFRSSUJVVEVfTkFNRV9TVEFSVF9DSEFSIiwiUk9PVF9B
VFRSSUJVVEVfTkFNRSIsIkFUVFJJQlVURV9OQU1FX0NIQVIiLCJnZXRQb3NzaWJsZVN0YW5kYXJk
TmFtZSIsImlzQ3VzdG9tQXR0cmlidXRlRm4iLCJhdHRhY2hSZWZzIiwiUmVhY3RSZWYiLCJtb3Vu
dENvbXBvbmVudCIsImludGVybmFsSW5zdGFuY2UiLCJob3N0UGFyZW50IiwiaG9zdENvbnRhaW5l
ckluZm8iLCJwYXJlbnREZWJ1Z0lEIiwibWFya3VwIiwicmVmIiwiZ2V0UmVhY3RNb3VudFJlYWR5
IiwiZ2V0SG9zdE5vZGUiLCJ1bm1vdW50Q29tcG9uZW50Iiwic2FmZWx5IiwiZGV0YWNoUmVmcyIs
InJlY2VpdmVDb21wb25lbnQiLCJuZXh0RWxlbWVudCIsInByZXZFbGVtZW50IiwiX2NvbnRleHQi
LCJyZWZzQ2hhbmdlZCIsInNob3VsZFVwZGF0ZVJlZnMiLCJSZWFjdEJhc2VDbGFzc2VzIiwiUmVh
Y3RDaGlsZHJlbiIsIlJlYWN0RE9NRmFjdG9yaWVzIiwiUmVhY3RFbGVtZW50IiwiUmVhY3RQcm9w
VHlwZXMiLCJSZWFjdFZlcnNpb24iLCJjcmVhdGVSZWFjdENsYXNzIiwib25seUNoaWxkIiwiY3Jl
YXRlRmFjdG9yeSIsImNsb25lRWxlbWVudCIsIl9fc3ByZWFkIiwiY3JlYXRlTWl4aW4iLCJtaXhp
biIsIlJlYWN0IiwiQ2hpbGRyZW4iLCJjb3VudCIsInRvQXJyYXkiLCJvbmx5IiwiQ29tcG9uZW50
IiwiUHVyZUNvbXBvbmVudCIsImlzVmFsaWRFbGVtZW50IiwiUHJvcFR5cGVzIiwiY3JlYXRlQ2xh
c3MiLCJET00iLCJ2ZXJzaW9uIiwiaGFzVmFsaWRSZWYiLCJjb25maWciLCJoYXNWYWxpZEtleSIs
IlJFQUNUX0VMRU1FTlRfVFlQRSIsIlJFU0VSVkVEX1BST1BTIiwiX19zZWxmIiwiX19zb3VyY2Ui
LCJzZWxmIiwib3duZXIiLCJwcm9wcyIsImVsZW1lbnQiLCIkJHR5cGVvZiIsIl9vd25lciIsImNo
aWxkcmVuTGVuZ3RoIiwiY2hpbGRBcnJheSIsIkFycmF5IiwiZGVmYXVsdFByb3BzIiwiZmFjdG9y
eSIsImJpbmQiLCJjbG9uZUFuZFJlcGxhY2VLZXkiLCJvbGRFbGVtZW50IiwibmV3S2V5IiwibmV3
RWxlbWVudCIsIl9zZWxmIiwiX3NvdXJjZSIsIm9iamVjdCIsImlzSW50ZXJhY3RpdmUiLCJ0YWci
LCJzaG91bGRQcmV2ZW50TW91c2VFdmVudCIsImRpc2FibGVkIiwiRXZlbnRQbHVnaW5SZWdpc3Ry
eSIsIkV2ZW50UGx1Z2luVXRpbHMiLCJSZWFjdEVycm9yVXRpbHMiLCJhY2N1bXVsYXRlSW50byIs
ImZvckVhY2hBY2N1bXVsYXRlZCIsImxpc3RlbmVyQmFuayIsImV2ZW50UXVldWUiLCJleGVjdXRl
RGlzcGF0Y2hlc0FuZFJlbGVhc2UiLCJzaW11bGF0ZWQiLCJleGVjdXRlRGlzcGF0Y2hlc0luT3Jk
ZXIiLCJleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2VTaW11bGF0ZWQiLCJleGVjdXRlRGlzcGF0
Y2hlc0FuZFJlbGVhc2VUb3BMZXZlbCIsImdldERpY3Rpb25hcnlLZXkiLCJfcm9vdE5vZGVJRCIs
IkV2ZW50UGx1Z2luSHViIiwiaW5qZWN0RXZlbnRQbHVnaW5PcmRlciIsImluamVjdEV2ZW50UGx1
Z2luc0J5TmFtZSIsInB1dExpc3RlbmVyIiwicmVnaXN0cmF0aW9uTmFtZSIsImxpc3RlbmVyIiwi
YmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUiLCJQbHVnaW5Nb2R1bGUiLCJyZWdpc3RyYXRpb25OYW1l
TW9kdWxlcyIsImRpZFB1dExpc3RlbmVyIiwiZ2V0TGlzdGVuZXIiLCJkZWxldGVMaXN0ZW5lciIs
IndpbGxEZWxldGVMaXN0ZW5lciIsImRlbGV0ZUFsbExpc3RlbmVycyIsImV4dHJhY3RFdmVudHMi
LCJ0b3BMZXZlbFR5cGUiLCJldmVudHMiLCJwbHVnaW5zIiwicG9zc2libGVQbHVnaW4iLCJleHRy
YWN0ZWRFdmVudHMiLCJlbnF1ZXVlRXZlbnRzIiwicHJvY2Vzc0V2ZW50UXVldWUiLCJwcm9jZXNz
aW5nRXZlbnRRdWV1ZSIsInJldGhyb3dDYXVnaHRFcnJvciIsIl9fcHVyZ2UiLCJfX2dldExpc3Rl
bmVyQmFuayIsImxpc3RlbmVyQXRQaGFzZSIsInByb3BhZ2F0aW9uUGhhc2UiLCJwaGFzZWRSZWdp
c3RyYXRpb25OYW1lcyIsImFjY3VtdWxhdGVEaXJlY3Rpb25hbERpc3BhdGNoZXMiLCJwaGFzZSIs
Il9kaXNwYXRjaExpc3RlbmVycyIsIl9kaXNwYXRjaEluc3RhbmNlcyIsImFjY3VtdWxhdGVUd29Q
aGFzZURpc3BhdGNoZXNTaW5nbGUiLCJ0cmF2ZXJzZVR3b1BoYXNlIiwiYWNjdW11bGF0ZVR3b1Bo
YXNlRGlzcGF0Y2hlc1NpbmdsZVNraXBUYXJnZXQiLCJwYXJlbnRJbnN0IiwiZ2V0UGFyZW50SW5z
dGFuY2UiLCJhY2N1bXVsYXRlRGlzcGF0Y2hlcyIsImlnbm9yZWREaXJlY3Rpb24iLCJhY2N1bXVs
YXRlRGlyZWN0RGlzcGF0Y2hlc1NpbmdsZSIsImFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMi
LCJhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2tpcFRhcmdldCIsImFjY3VtdWxhdGVFbnRl
ckxlYXZlRGlzcGF0Y2hlcyIsImxlYXZlIiwiZW50ZXIiLCJ0cmF2ZXJzZUVudGVyTGVhdmUiLCJh
Y2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlcyIsIkV2ZW50UHJvcGFnYXRvcnMiLCJSZWFjdEluc3Rh
bmNlTWFwIiwicmVtb3ZlIiwiX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSIsImdldCIsImhhcyIsInNl
dCIsIlN5bnRoZXRpY1VJRXZlbnQiLCJkaXNwYXRjaE1hcmtlciIsImdldEV2ZW50VGFyZ2V0Iiwi
VUlFdmVudEludGVyZmFjZSIsInZpZXciLCJkb2MiLCJvd25lckRvY3VtZW50IiwiZGVmYXVsdFZp
ZXciLCJwYXJlbnRXaW5kb3ciLCJkZXRhaWwiLCJlbXB0eU9iamVjdCIsImdldExpc3RlbmluZ0Zv
ckRvY3VtZW50IiwibW91bnRBdCIsInRvcExpc3RlbmVyc0lES2V5IiwicmVhY3RUb3BMaXN0ZW5l
cnNDb3VudGVyIiwiYWxyZWFkeUxpc3RlbmluZ1RvIiwiaGFzRXZlbnRQYWdlWFkiLCJSZWFjdEV2
ZW50RW1pdHRlck1peGluIiwiVmlld3BvcnRNZXRyaWNzIiwiZ2V0VmVuZG9yUHJlZml4ZWRFdmVu
dE5hbWUiLCJpc0V2ZW50U3VwcG9ydGVkIiwiaXNNb25pdG9yaW5nU2Nyb2xsVmFsdWUiLCJ0b3BF
dmVudE1hcHBpbmciLCJ0b3BBYm9ydCIsInRvcEFuaW1hdGlvbkVuZCIsInRvcEFuaW1hdGlvbkl0
ZXJhdGlvbiIsInRvcEFuaW1hdGlvblN0YXJ0IiwidG9wQmx1ciIsInRvcENhblBsYXkiLCJ0b3BD
YW5QbGF5VGhyb3VnaCIsInRvcENoYW5nZSIsInRvcENsaWNrIiwidG9wQ29tcG9zaXRpb25FbmQi
LCJ0b3BDb21wb3NpdGlvblN0YXJ0IiwidG9wQ29tcG9zaXRpb25VcGRhdGUiLCJ0b3BDb250ZXh0
TWVudSIsInRvcENvcHkiLCJ0b3BDdXQiLCJ0b3BEb3VibGVDbGljayIsInRvcERyYWciLCJ0b3BE
cmFnRW5kIiwidG9wRHJhZ0VudGVyIiwidG9wRHJhZ0V4aXQiLCJ0b3BEcmFnTGVhdmUiLCJ0b3BE
cmFnT3ZlciIsInRvcERyYWdTdGFydCIsInRvcERyb3AiLCJ0b3BEdXJhdGlvbkNoYW5nZSIsInRv
cEVtcHRpZWQiLCJ0b3BFbmNyeXB0ZWQiLCJ0b3BFbmRlZCIsInRvcEVycm9yIiwidG9wRm9jdXMi
LCJ0b3BJbnB1dCIsInRvcEtleURvd24iLCJ0b3BLZXlQcmVzcyIsInRvcEtleVVwIiwidG9wTG9h
ZGVkRGF0YSIsInRvcExvYWRlZE1ldGFkYXRhIiwidG9wTG9hZFN0YXJ0IiwidG9wTW91c2VEb3du
IiwidG9wTW91c2VNb3ZlIiwidG9wTW91c2VPdXQiLCJ0b3BNb3VzZU92ZXIiLCJ0b3BNb3VzZVVw
IiwidG9wUGFzdGUiLCJ0b3BQYXVzZSIsInRvcFBsYXkiLCJ0b3BQbGF5aW5nIiwidG9wUHJvZ3Jl
c3MiLCJ0b3BSYXRlQ2hhbmdlIiwidG9wU2Nyb2xsIiwidG9wU2Vla2VkIiwidG9wU2Vla2luZyIs
InRvcFNlbGVjdGlvbkNoYW5nZSIsInRvcFN0YWxsZWQiLCJ0b3BTdXNwZW5kIiwidG9wVGV4dElu
cHV0IiwidG9wVGltZVVwZGF0ZSIsInRvcFRvdWNoQ2FuY2VsIiwidG9wVG91Y2hFbmQiLCJ0b3BU
b3VjaE1vdmUiLCJ0b3BUb3VjaFN0YXJ0IiwidG9wVHJhbnNpdGlvbkVuZCIsInRvcFZvbHVtZUNo
YW5nZSIsInRvcFdhaXRpbmciLCJ0b3BXaGVlbCIsIlJlYWN0QnJvd3NlckV2ZW50RW1pdHRlciIs
IlJlYWN0RXZlbnRMaXN0ZW5lciIsImluamVjdFJlYWN0RXZlbnRMaXN0ZW5lciIsInNldEhhbmRs
ZVRvcExldmVsIiwiaGFuZGxlVG9wTGV2ZWwiLCJzZXRFbmFibGVkIiwiZW5hYmxlZCIsImlzRW5h
YmxlZCIsImxpc3RlblRvIiwiY29udGVudERvY3VtZW50SGFuZGxlIiwiaXNMaXN0ZW5pbmciLCJk
ZXBlbmRlbmNpZXMiLCJyZWdpc3RyYXRpb25OYW1lRGVwZW5kZW5jaWVzIiwiZGVwZW5kZW5jeSIs
InRyYXBCdWJibGVkRXZlbnQiLCJ0cmFwQ2FwdHVyZWRFdmVudCIsIldJTkRPV19IQU5ETEUiLCJo
YW5kbGVyQmFzZU5hbWUiLCJoYW5kbGUiLCJzdXBwb3J0c0V2ZW50UGFnZVhZIiwiY3JlYXRlRXZl
bnQiLCJldiIsImVuc3VyZVNjcm9sbFZhbHVlTW9uaXRvcmluZyIsInJlZnJlc2giLCJyZWZyZXNo
U2Nyb2xsVmFsdWVzIiwibW9uaXRvclNjcm9sbFZhbHVlIiwiU3ludGhldGljTW91c2VFdmVudCIs
ImdldEV2ZW50TW9kaWZpZXJTdGF0ZSIsIk1vdXNlRXZlbnRJbnRlcmZhY2UiLCJzY3JlZW5YIiwi
c2NyZWVuWSIsImNsaWVudFgiLCJjbGllbnRZIiwiY3RybEtleSIsInNoaWZ0S2V5IiwiYWx0S2V5
IiwibWV0YUtleSIsImdldE1vZGlmaWVyU3RhdGUiLCJidXR0b24iLCJidXR0b25zIiwicmVsYXRl
ZFRhcmdldCIsImZyb21FbGVtZW50Iiwic3JjRWxlbWVudCIsInRvRWxlbWVudCIsInBhZ2VYIiwi
Y3VycmVudFNjcm9sbExlZnQiLCJwYWdlWSIsImN1cnJlbnRTY3JvbGxUb3AiLCJPQlNFUlZFRF9F
UlJPUiIsIlRyYW5zYWN0aW9uSW1wbCIsInRyYW5zYWN0aW9uV3JhcHBlcnMiLCJ3cmFwcGVySW5p
dERhdGEiLCJfaXNJblRyYW5zYWN0aW9uIiwiaXNJblRyYW5zYWN0aW9uIiwiZXJyb3JUaHJvd24i
LCJyZXQiLCJpbml0aWFsaXplQWxsIiwiY2xvc2VBbGwiLCJzdGFydEluZGV4Iiwid3JhcHBlciIs
ImluaXREYXRhIiwiZXNjYXBlSHRtbCIsInN0cmluZyIsInN0ciIsIm1hdGNoIiwibWF0Y2hIdG1s
UmVnRXhwIiwiZXhlYyIsImVzY2FwZSIsImluZGV4IiwibGFzdEluZGV4IiwiY2hhckNvZGVBdCIs
InN1YnN0cmluZyIsImVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlciIsInJldXNhYmxlU1ZHQ29u
dGFpbmVyIiwiV0hJVEVTUEFDRV9URVNUIiwiTk9OVklTSUJMRV9URVNUIiwic3ZnIiwiaW5uZXJI
VE1MIiwic3ZnTm9kZSIsInRlc3RFbGVtZW50IiwidGV4dE5vZGUiLCJkYXRhIiwicmVtb3ZlQ2hp
bGQiLCJkZWxldGVEYXRhIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIm9iaiIsIl9fZXNNb2R1
bGUiLCJkZWZhdWx0IiwiY29tcG9zZSIsImFwcGx5TWlkZGxld2FyZSIsImJpbmRBY3Rpb25DcmVh
dG9ycyIsImNvbWJpbmVSZWR1Y2VycyIsImNyZWF0ZVN0b3JlIiwiX2NyZWF0ZVN0b3JlIiwiX2Ny
ZWF0ZVN0b3JlMiIsIl9jb21iaW5lUmVkdWNlcnMiLCJfY29tYmluZVJlZHVjZXJzMiIsIl9iaW5k
QWN0aW9uQ3JlYXRvcnMiLCJfYmluZEFjdGlvbkNyZWF0b3JzMiIsIl9hcHBseU1pZGRsZXdhcmUi
LCJfYXBwbHlNaWRkbGV3YXJlMiIsIl9jb21wb3NlIiwiX2NvbXBvc2UyIiwiX3dhcm5pbmciLCJf
X1dFQlBBQ0tfQU1EX0RFRklORV9BUlJBWV9fIiwiX19XRUJQQUNLX0FNRF9ERUZJTkVfUkVTVUxU
X18iLCJjbGFzc05hbWVzIiwiY2xhc3NlcyIsImFyZ1R5cGUiLCJpc0FycmF5IiwiaGFzT3duIiwi
aXMiLCJ4IiwieSIsInNoYWxsb3dFcXVhbCIsIm9iakEiLCJvYmpCIiwia2V5c0EiLCJrZXlzQiIs
ImlzUGxhaW5PYmplY3QiLCJpc09iamVjdExpa2UiLCJiYXNlR2V0VGFnIiwib2JqZWN0VGFnIiwi
cHJvdG8iLCJnZXRQcm90b3R5cGUiLCJDdG9yIiwiZnVuY1RvU3RyaW5nIiwib2JqZWN0Q3RvclN0
cmluZyIsImZ1bmNQcm90byIsIkZ1bmN0aW9uIiwib2JqZWN0UHJvdG8iLCJnZXROb2RlQWZ0ZXIi
LCJpbnNlcnRMYXp5VHJlZUNoaWxkQXQiLCJtb3ZlQ2hpbGQiLCJtb3ZlRGVsaW1pdGVkVGV4dCIs
Imluc2VydENoaWxkQXQiLCJjbG9zaW5nQ29tbWVudCIsInJlbW92ZURlbGltaXRlZFRleHQiLCJv
cGVuaW5nQ29tbWVudCIsIm5leHROb2RlIiwic3RhcnROb2RlIiwicmVwbGFjZURlbGltaXRlZFRl
eHQiLCJzdHJpbmdUZXh0Iiwibm9kZUFmdGVyQ29tbWVudCIsImNyZWF0ZVRleHROb2RlIiwiRGFu
Z2VyIiwiZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAiLCJET01DaGlsZHJlbk9wZXJh
dGlvbnMiLCJwcm9jZXNzVXBkYXRlcyIsInVwZGF0ZXMiLCJrIiwidXBkYXRlIiwiY29udGVudCIs
ImFmdGVyTm9kZSIsImZyb21Ob2RlIiwibWF0aG1sIiwicmVjb21wdXRlUGx1Z2luT3JkZXJpbmci
LCJldmVudFBsdWdpbk9yZGVyIiwicGx1Z2luTmFtZSIsIm5hbWVzVG9QbHVnaW5zIiwicGx1Z2lu
TW9kdWxlIiwicGx1Z2luSW5kZXgiLCJpbmRleE9mIiwicHVibGlzaGVkRXZlbnRzIiwiZXZlbnRU
eXBlcyIsImV2ZW50TmFtZSIsInB1Ymxpc2hFdmVudEZvclBsdWdpbiIsImV2ZW50TmFtZURpc3Bh
dGNoQ29uZmlncyIsInBoYXNlTmFtZSIsInBoYXNlZFJlZ2lzdHJhdGlvbk5hbWUiLCJwdWJsaXNo
UmVnaXN0cmF0aW9uTmFtZSIsInBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXMiLCJpbmplY3RlZEV2
ZW50UGx1Z2luT3JkZXIiLCJpbmplY3RlZE5hbWVzVG9QbHVnaW5zIiwiaXNPcmRlcmluZ0RpcnR5
IiwiZ2V0UGx1Z2luTW9kdWxlRm9yRXZlbnQiLCJfcmVzZXRFdmVudFBsdWdpbnMiLCJpc0VuZGlz
aCIsImlzTW92ZWlzaCIsImlzU3RhcnRpc2giLCJleGVjdXRlRGlzcGF0Y2giLCJpbnZva2VHdWFy
ZGVkQ2FsbGJhY2tXaXRoQ2F0Y2giLCJpbnZva2VHdWFyZGVkQ2FsbGJhY2siLCJkaXNwYXRjaExp
c3RlbmVycyIsImRpc3BhdGNoSW5zdGFuY2VzIiwiZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3Rv
cEF0VHJ1ZUltcGwiLCJleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlIiwiZXhlY3V0
ZURpcmVjdERpc3BhdGNoIiwiZGlzcGF0Y2hMaXN0ZW5lciIsImRpc3BhdGNoSW5zdGFuY2UiLCJy
ZXMiLCJoYXNEaXNwYXRjaGVzIiwiQ29tcG9uZW50VHJlZSIsIlRyZWVUcmF2ZXJzYWwiLCJpbmpl
Y3RDb21wb25lbnRUcmVlIiwiSW5qZWN0ZWQiLCJpbmplY3RUcmVlVHJhdmVyc2FsIiwiaXNBbmNl
c3RvciIsImdldExvd2VzdENvbW1vbkFuY2VzdG9yIiwiYXJnRnJvbSIsImFyZ1RvIiwiZXNjYXBl
UmVnZXgiLCJlc2NhcGVyTG9va3VwIiwiPSIsIjoiLCJlc2NhcGVkU3RyaW5nIiwidW5lc2NhcGUi
LCJ1bmVzY2FwZVJlZ2V4IiwidW5lc2NhcGVyTG9va3VwIiwiPTAiLCI9MiIsImtleVN1YnN0cmlu
ZyIsIktleUVzY2FwZVV0aWxzIiwiX2Fzc2VydFNpbmdsZUxpbmsiLCJpbnB1dFByb3BzIiwiY2hl
Y2tlZExpbmsiLCJ2YWx1ZUxpbmsiLCJfYXNzZXJ0VmFsdWVMaW5rIiwib25DaGFuZ2UiLCJfYXNz
ZXJ0Q2hlY2tlZExpbmsiLCJjaGVja2VkIiwiZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtIiwi
UmVhY3RQcm9wVHlwZXNTZWNyZXQiLCJwcm9wVHlwZXNGYWN0b3J5IiwiaGFzUmVhZE9ubHlWYWx1
ZSIsImNoZWNrYm94IiwiaW1hZ2UiLCJoaWRkZW4iLCJyYWRpbyIsInN1Ym1pdCIsInByb3BUeXBl
cyIsImNvbXBvbmVudE5hbWUiLCJyZWFkT25seSIsImZ1bmMiLCJsb2dnZWRUeXBlRmFpbHVyZXMi
LCJMaW5rZWRWYWx1ZVV0aWxzIiwiY2hlY2tQcm9wVHlwZXMiLCJ0YWdOYW1lIiwiZ2V0VmFsdWUi
LCJnZXRDaGVja2VkIiwiZXhlY3V0ZU9uQ2hhbmdlIiwicmVxdWVzdENoYW5nZSIsImluamVjdGVk
IiwiUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudCIsInJlcGxhY2VOb2RlV2l0aE1hcmt1cCIsInBy
b2Nlc3NDaGlsZHJlblVwZGF0ZXMiLCJpbmplY3RFbnZpcm9ubWVudCIsImVudmlyb25tZW50Iiwi
Y2F1Z2h0RXJyb3IiLCJmb3JtYXRVbmV4cGVjdGVkQXJndW1lbnQiLCJkaXNwbGF5TmFtZSIsImdl
dEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0ZSIsInB1YmxpY0luc3RhbmNlIiwiY2FsbGVy
TmFtZSIsIlJlYWN0VXBkYXRlUXVldWUiLCJpc01vdW50ZWQiLCJlbnF1ZXVlQ2FsbGJhY2siLCJ2
YWxpZGF0ZUNhbGxiYWNrIiwiZW5xdWV1ZUNhbGxiYWNrSW50ZXJuYWwiLCJlbnF1ZXVlRm9yY2VV
cGRhdGUiLCJfcGVuZGluZ0ZvcmNlVXBkYXRlIiwiZW5xdWV1ZVJlcGxhY2VTdGF0ZSIsImNvbXBs
ZXRlU3RhdGUiLCJfcGVuZGluZ1N0YXRlUXVldWUiLCJfcGVuZGluZ1JlcGxhY2VTdGF0ZSIsImVu
cXVldWVTZXRTdGF0ZSIsInBhcnRpYWxTdGF0ZSIsImVucXVldWVFbGVtZW50SW50ZXJuYWwiLCJu
ZXh0Q29udGV4dCIsIl9wZW5kaW5nRWxlbWVudCIsIk1TQXBwIiwiZXhlY1Vuc2FmZUxvY2FsRnVu
Y3Rpb24iLCJhcmcwIiwiYXJnMSIsImFyZzIiLCJhcmczIiwiZ2V0RXZlbnRDaGFyQ29kZSIsImNo
YXJDb2RlIiwia2V5Q29kZSIsIm1vZGlmaWVyU3RhdGVHZXR0ZXIiLCJrZXlBcmciLCJzeW50aGV0
aWNFdmVudCIsImtleVByb3AiLCJtb2RpZmllcktleVRvUHJvcCIsIkFsdCIsIkNvbnRyb2wiLCJN
ZXRhIiwiU2hpZnQiLCJjb3JyZXNwb25kaW5nVXNlRWxlbWVudCIsImV2ZW50TmFtZVN1ZmZpeCIs
ImNhcHR1cmUiLCJpc1N1cHBvcnRlZCIsInNldEF0dHJpYnV0ZSIsInVzZUhhc0ZlYXR1cmUiLCJp
bXBsZW1lbnRhdGlvbiIsImhhc0ZlYXR1cmUiLCJzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudCIs
InByZXZFbXB0eSIsIm5leHRFbXB0eSIsInByZXZUeXBlIiwibmV4dFR5cGUiLCJ2YWxpZGF0ZURP
TU5lc3RpbmciLCJFdmVudExpc3RlbmVyIiwibGlzdGVuIiwiZXZlbnRUeXBlIiwicmVtb3ZlRXZl
bnRMaXN0ZW5lciIsImRldGFjaEV2ZW50IiwicmVnaXN0ZXJEZWZhdWx0IiwiZm9jdXNOb2RlIiwi
Zm9jdXMiLCJnZXRBY3RpdmVFbGVtZW50IiwiYWN0aXZlRWxlbWVudCIsImJvZHkiLCJyb290Iiwi
U3ltYm9sIiwidGhyb3dPbkRpcmVjdEFjY2VzcyIsInByZWZpeEtleSIsInByZWZpeCIsImNoYXJB
dCIsInRvVXBwZXJDYXNlIiwiaXNVbml0bGVzc051bWJlciIsImFuaW1hdGlvbkl0ZXJhdGlvbkNv
dW50IiwiYm9yZGVySW1hZ2VPdXRzZXQiLCJib3JkZXJJbWFnZVNsaWNlIiwiYm9yZGVySW1hZ2VX
aWR0aCIsImJveEZsZXgiLCJib3hGbGV4R3JvdXAiLCJib3hPcmRpbmFsR3JvdXAiLCJjb2x1bW5D
b3VudCIsImZsZXgiLCJmbGV4R3JvdyIsImZsZXhQb3NpdGl2ZSIsImZsZXhTaHJpbmsiLCJmbGV4
TmVnYXRpdmUiLCJmbGV4T3JkZXIiLCJncmlkUm93IiwiZ3JpZFJvd0VuZCIsImdyaWRSb3dTcGFu
IiwiZ3JpZFJvd1N0YXJ0IiwiZ3JpZENvbHVtbiIsImdyaWRDb2x1bW5FbmQiLCJncmlkQ29sdW1u
U3BhbiIsImdyaWRDb2x1bW5TdGFydCIsImZvbnRXZWlnaHQiLCJsaW5lQ2xhbXAiLCJsaW5lSGVp
Z2h0Iiwib3BhY2l0eSIsIm9yZGVyIiwib3JwaGFucyIsInRhYlNpemUiLCJ3aWRvd3MiLCJ6SW5k
ZXgiLCJ6b29tIiwiZmlsbE9wYWNpdHkiLCJmbG9vZE9wYWNpdHkiLCJzdG9wT3BhY2l0eSIsInN0
cm9rZURhc2hhcnJheSIsInN0cm9rZURhc2hvZmZzZXQiLCJzdHJva2VNaXRlcmxpbWl0Iiwic3Ry
b2tlT3BhY2l0eSIsInN0cm9rZVdpZHRoIiwicHJlZml4ZXMiLCJwcm9wIiwic2hvcnRoYW5kUHJv
cGVydHlFeHBhbnNpb25zIiwiYmFja2dyb3VuZCIsImJhY2tncm91bmRBdHRhY2htZW50IiwiYmFj
a2dyb3VuZENvbG9yIiwiYmFja2dyb3VuZEltYWdlIiwiYmFja2dyb3VuZFBvc2l0aW9uWCIsImJh
Y2tncm91bmRQb3NpdGlvblkiLCJiYWNrZ3JvdW5kUmVwZWF0IiwiYmFja2dyb3VuZFBvc2l0aW9u
IiwiYm9yZGVyIiwiYm9yZGVyV2lkdGgiLCJib3JkZXJTdHlsZSIsImJvcmRlckNvbG9yIiwiYm9y
ZGVyQm90dG9tIiwiYm9yZGVyQm90dG9tV2lkdGgiLCJib3JkZXJCb3R0b21TdHlsZSIsImJvcmRl
ckJvdHRvbUNvbG9yIiwiYm9yZGVyTGVmdCIsImJvcmRlckxlZnRXaWR0aCIsImJvcmRlckxlZnRT
dHlsZSIsImJvcmRlckxlZnRDb2xvciIsImJvcmRlclJpZ2h0IiwiYm9yZGVyUmlnaHRXaWR0aCIs
ImJvcmRlclJpZ2h0U3R5bGUiLCJib3JkZXJSaWdodENvbG9yIiwiYm9yZGVyVG9wIiwiYm9yZGVy
VG9wV2lkdGgiLCJib3JkZXJUb3BTdHlsZSIsImJvcmRlclRvcENvbG9yIiwiZm9udCIsImZvbnRT
dHlsZSIsImZvbnRWYXJpYW50IiwiZm9udFNpemUiLCJmb250RmFtaWx5Iiwib3V0bGluZSIsIm91
dGxpbmVXaWR0aCIsIm91dGxpbmVTdHlsZSIsIm91dGxpbmVDb2xvciIsIkNTU1Byb3BlcnR5Iiwi
X2NsYXNzQ2FsbENoZWNrIiwiaW5zdGFuY2UiLCJDb25zdHJ1Y3RvciIsIl9jYWxsYmFja3MiLCJf
Y29udGV4dHMiLCJfYXJnIiwiY29udGV4dHMiLCJjaGVja3BvaW50Iiwicm9sbGJhY2siLCJpc0F0
dHJpYnV0ZU5hbWVTYWZlIiwidmFsaWRhdGVkQXR0cmlidXRlTmFtZUNhY2hlIiwiaWxsZWdhbEF0
dHJpYnV0ZU5hbWVDYWNoZSIsIlZBTElEX0FUVFJJQlVURV9OQU1FX1JFR0VYIiwic2hvdWxkSWdu
b3JlVmFsdWUiLCJpc05hTiIsInF1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyIiwiUmVnRXhw
IiwiRE9NUHJvcGVydHlPcGVyYXRpb25zIiwiY3JlYXRlTWFya3VwRm9ySUQiLCJzZXRBdHRyaWJ1
dGVGb3JJRCIsImNyZWF0ZU1hcmt1cEZvclJvb3QiLCJzZXRBdHRyaWJ1dGVGb3JSb290IiwiY3Jl
YXRlTWFya3VwRm9yUHJvcGVydHkiLCJjcmVhdGVNYXJrdXBGb3JDdXN0b21BdHRyaWJ1dGUiLCJz
ZXRWYWx1ZUZvclByb3BlcnR5IiwiZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eSIsIm5hbWVzcGFjZSIs
InNldEF0dHJpYnV0ZU5TIiwic2V0VmFsdWVGb3JBdHRyaWJ1dGUiLCJyZW1vdmVBdHRyaWJ1dGUi
LCJkZWxldGVWYWx1ZUZvckF0dHJpYnV0ZSIsInVwZGF0ZU9wdGlvbnNJZlBlbmRpbmdVcGRhdGVB
bmRNb3VudGVkIiwiX3dyYXBwZXJTdGF0ZSIsInBlbmRpbmdVcGRhdGUiLCJ1cGRhdGVPcHRpb25z
IiwiQm9vbGVhbiIsIm11bHRpcGxlIiwicHJvcFZhbHVlIiwic2VsZWN0ZWRWYWx1ZSIsIm9wdGlv
bnMiLCJzZWxlY3RlZCIsIl9oYW5kbGVDaGFuZ2UiLCJkaWRXYXJuVmFsdWVEZWZhdWx0VmFsdWUi
LCJSZWFjdERPTVNlbGVjdCIsImdldEhvc3RQcm9wcyIsIm1vdW50V3JhcHBlciIsImluaXRpYWxW
YWx1ZSIsImRlZmF1bHRWYWx1ZSIsImxpc3RlbmVycyIsIndhc011bHRpcGxlIiwiZ2V0U2VsZWN0
VmFsdWVDb250ZXh0IiwicG9zdFVwZGF0ZVdyYXBwZXIiLCJlbXB0eUNvbXBvbmVudEZhY3Rvcnki
LCJSZWFjdEVtcHR5Q29tcG9uZW50SW5qZWN0aW9uIiwiaW5qZWN0RW1wdHlDb21wb25lbnRGYWN0
b3J5IiwiUmVhY3RFbXB0eUNvbXBvbmVudCIsImNyZWF0ZSIsImluc3RhbnRpYXRlIiwiY3JlYXRl
SW50ZXJuYWxDb21wb25lbnQiLCJnZW5lcmljQ29tcG9uZW50Q2xhc3MiLCJjcmVhdGVJbnN0YW5j
ZUZvclRleHQiLCJ0ZXh0Q29tcG9uZW50Q2xhc3MiLCJpc1RleHRDb21wb25lbnQiLCJSZWFjdEhv
c3RDb21wb25lbnRJbmplY3Rpb24iLCJpbmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3MiLCJjb21w
b25lbnRDbGFzcyIsImluamVjdFRleHRDb21wb25lbnRDbGFzcyIsIlJlYWN0SG9zdENvbXBvbmVu
dCIsImlzSW5Eb2N1bWVudCIsImNvbnRhaW5zTm9kZSIsImRvY3VtZW50RWxlbWVudCIsIlJlYWN0
RE9NU2VsZWN0aW9uIiwiUmVhY3RJbnB1dFNlbGVjdGlvbiIsImhhc1NlbGVjdGlvbkNhcGFiaWxp
dGllcyIsImVsZW0iLCJjb250ZW50RWRpdGFibGUiLCJnZXRTZWxlY3Rpb25JbmZvcm1hdGlvbiIs
ImZvY3VzZWRFbGVtIiwic2VsZWN0aW9uUmFuZ2UiLCJnZXRTZWxlY3Rpb24iLCJyZXN0b3JlU2Vs
ZWN0aW9uIiwicHJpb3JTZWxlY3Rpb25JbmZvcm1hdGlvbiIsImN1ckZvY3VzZWRFbGVtIiwicHJp
b3JGb2N1c2VkRWxlbSIsInByaW9yU2VsZWN0aW9uUmFuZ2UiLCJzZXRTZWxlY3Rpb24iLCJpbnB1
dCIsInNlbGVjdGlvbiIsInN0YXJ0Iiwic2VsZWN0aW9uU3RhcnQiLCJlbmQiLCJzZWxlY3Rpb25F
bmQiLCJyYW5nZSIsImNyZWF0ZVJhbmdlIiwicGFyZW50RWxlbWVudCIsIm1vdmVTdGFydCIsIm1v
dmVFbmQiLCJnZXRPZmZzZXRzIiwib2Zmc2V0cyIsIm1pbiIsImNyZWF0ZVRleHRSYW5nZSIsImNv
bGxhcHNlIiwic2VsZWN0Iiwic2V0T2Zmc2V0cyIsImZpcnN0RGlmZmVyZW5jZUluZGV4Iiwic3Ry
aW5nMSIsInN0cmluZzIiLCJtaW5MZW4iLCJnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIi
LCJjb250YWluZXIiLCJET0NfTk9ERV9UWVBFIiwiaW50ZXJuYWxHZXRJRCIsIm1vdW50Q29tcG9u
ZW50SW50b05vZGUiLCJ3cmFwcGVySW5zdGFuY2UiLCJzaG91bGRSZXVzZU1hcmt1cCIsIndyYXBw
ZWRFbGVtZW50IiwiY2hpbGQiLCJSZWFjdERPTUNvbnRhaW5lckluZm8iLCJfdG9wTGV2ZWxXcmFw
cGVyIiwiUmVhY3RNb3VudCIsIl9tb3VudEltYWdlSW50b05vZGUiLCJiYXRjaGVkTW91bnRDb21w
b25lbnRJbnRvTm9kZSIsImNvbXBvbmVudEluc3RhbmNlIiwiUmVhY3RET01GZWF0dXJlRmxhZ3Mi
LCJ1c2VDcmVhdGVFbGVtZW50IiwidW5tb3VudENvbXBvbmVudEZyb21Ob2RlIiwibGFzdENoaWxk
IiwiaGFzTm9uUm9vdFJlYWN0Q2hpbGQiLCJyb290RWwiLCJpc1ZhbGlkQ29udGFpbmVyIiwiZ2V0
SG9zdFJvb3RJbnN0YW5jZUluQ29udGFpbmVyIiwicHJldkhvc3RJbnN0YW5jZSIsImdldFRvcExl
dmVsV3JhcHBlckluQ29udGFpbmVyIiwiX2hvc3RDb250YWluZXJJbmZvIiwiUmVhY3RNYXJrdXBD
aGVja3N1bSIsImluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQiLCJST09UX0FUVFJfTkFNRSIsImlu
c3RhbmNlc0J5UmVhY3RSb290SUQiLCJ0b3BMZXZlbFJvb3RDb3VudGVyIiwiVG9wTGV2ZWxXcmFw
cGVyIiwicm9vdElEIiwiaXNSZWFjdENvbXBvbmVudCIsInJlbmRlciIsIl9pbnN0YW5jZXNCeVJl
YWN0Um9vdElEIiwic2Nyb2xsTW9uaXRvciIsInJlbmRlckNhbGxiYWNrIiwiX3VwZGF0ZVJvb3RD
b21wb25lbnQiLCJwcmV2Q29tcG9uZW50IiwiX3JlbmRlck5ld1Jvb3RDb21wb25lbnQiLCJ3cmFw
cGVySUQiLCJfaW5zdGFuY2UiLCJyZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lciIsInBhcmVudENv
bXBvbmVudCIsIl9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lciIsIm5leHRXcmFwcGVkRWxlbWVu
dCIsIl9wcm9jZXNzQ2hpbGRDb250ZXh0IiwicHJldldyYXBwZWRFbGVtZW50IiwicHVibGljSW5z
dCIsInVwZGF0ZWRDYWxsYmFjayIsInVubW91bnRDb21wb25lbnRBdE5vZGUiLCJyZWFjdFJvb3RF
bGVtZW50IiwiY29udGFpbmVySGFzUmVhY3RNYXJrdXAiLCJjb250YWluZXJIYXNOb25Sb290UmVh
Y3RDaGlsZCIsImhhc0F0dHJpYnV0ZSIsInJvb3RFbGVtZW50IiwiY2FuUmV1c2VNYXJrdXAiLCJj
aGVja3N1bSIsIkNIRUNLU1VNX0FUVFJfTkFNRSIsInJvb3RNYXJrdXAiLCJvdXRlckhUTUwiLCJu
b3JtYWxpemVkTWFya3VwIiwiZGlmZkluZGV4IiwiZGlmZmVyZW5jZSIsIlJlYWN0Tm9kZVR5cGVz
IiwiSE9TVCIsIkNPTVBPU0lURSIsIkVNUFRZIiwiZ2V0VHlwZSIsInNjcm9sbFBvc2l0aW9uIiwi
bmV4dCIsImFyciIsImNiIiwiZ2V0SG9zdENvbXBvbmVudEZyb21Db21wb3NpdGUiLCJfcmVuZGVy
ZWROb2RlVHlwZSIsImdldFRleHRDb250ZW50QWNjZXNzb3IiLCJjb250ZW50S2V5IiwiaXNDaGVj
a2FibGUiLCJnZXRUcmFja2VyIiwidmFsdWVUcmFja2VyIiwiYXR0YWNoVHJhY2tlciIsInRyYWNr
ZXIiLCJkZXRhY2hUcmFja2VyIiwiZ2V0VmFsdWVGcm9tTm9kZSIsImlucHV0VmFsdWVUcmFja2lu
ZyIsIl9nZXRUcmFja2VyRnJvbU5vZGUiLCJ0cmFjayIsInZhbHVlRmllbGQiLCJkZXNjcmlwdG9y
IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiY3VycmVudFZhbHVlIiwiZGVmaW5lUHJvcGVy
dHkiLCJlbnVtZXJhYmxlIiwiY29uZmlndXJhYmxlIiwic2V0VmFsdWUiLCJzdG9wVHJhY2tpbmci
LCJ1cGRhdGVWYWx1ZUlmQ2hhbmdlZCIsImxhc3RWYWx1ZSIsIm5leHRWYWx1ZSIsImlzSW50ZXJu
YWxDb21wb25lbnRUeXBlIiwic2hvdWxkSGF2ZURlYnVnSUQiLCJpbmZvIiwiZ2V0TmF0aXZlTm9k
ZSIsIlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50V3JhcHBlciIsIl9tb3VudEluZGV4IiwiX21vdW50
SW1hZ2UiLCJSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCIsImNvbnN0cnVjdCIsIl9pbnN0YW50aWF0
ZVJlYWN0Q29tcG9uZW50IiwiaXNUZXh0SW5wdXRFbGVtZW50Iiwic3VwcG9ydGVkSW5wdXRUeXBl
cyIsImNvbG9yIiwiZGF0ZSIsImRhdGV0aW1lIiwiZGF0ZXRpbWUtbG9jYWwiLCJlbWFpbCIsIm1v
bnRoIiwibnVtYmVyIiwicGFzc3dvcmQiLCJzZWFyY2giLCJ0ZWwiLCJ1cmwiLCJ3ZWVrIiwidGV4
dENvbnRlbnQiLCJnZXRDb21wb25lbnRLZXkiLCJ0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbCIsIm5h
bWVTb0ZhciIsInRyYXZlcnNlQ29udGV4dCIsIlNFUEFSQVRPUiIsIm5leHROYW1lIiwic3VidHJl
ZUNvdW50IiwibmV4dE5hbWVQcmVmaXgiLCJTVUJTRVBBUkFUT1IiLCJpdGVyYXRvckZuIiwiZ2V0
SXRlcmF0b3JGbiIsInN0ZXAiLCJpdGVyYXRvciIsImVudHJpZXMiLCJpaSIsImRvbmUiLCJlbnRy
eSIsImFkZGVuZHVtIiwiY2hpbGRyZW5TdHJpbmciLCJ0cmF2ZXJzZUFsbENoaWxkcmVuIiwiX3Bv
c3NpYmxlQ29uc3RydWN0b3JSZXR1cm4iLCJSZWZlcmVuY2VFcnJvciIsIl9pbmhlcml0cyIsInN1
YkNsYXNzIiwic3VwZXJDbGFzcyIsIndyaXRhYmxlIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3Rv
X18iLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJub29wIiwibWFrZVNlbGVjdG9yU3RhdGVm
dWwiLCJzb3VyY2VTZWxlY3RvciIsInN0b3JlIiwic2VsZWN0b3IiLCJydW4iLCJuZXh0UHJvcHMi
LCJnZXRTdGF0ZSIsInNob3VsZENvbXBvbmVudFVwZGF0ZSIsImNvbm5lY3RBZHZhbmNlZCIsInNl
bGVjdG9yRmFjdG9yeSIsIl9jb250ZXh0VHlwZXMiLCJfY2hpbGRDb250ZXh0VHlwZXMiLCJfcmVm
IiwiX3JlZiRnZXREaXNwbGF5TmFtZSIsImdldERpc3BsYXlOYW1lIiwiX3JlZiRtZXRob2ROYW1l
IiwibWV0aG9kTmFtZSIsIl9yZWYkcmVuZGVyQ291bnRQcm9wIiwicmVuZGVyQ291bnRQcm9wIiwi
X3JlZiRzaG91bGRIYW5kbGVTdGF0Iiwic2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzIiwiX3JlZiRz
dG9yZUtleSIsInN0b3JlS2V5IiwiX3JlZiR3aXRoUmVmIiwid2l0aFJlZiIsImNvbm5lY3RPcHRp
b25zIiwic3Vic2NyaXB0aW9uS2V5IiwiaG90UmVsb2FkaW5nVmVyc2lvbiIsImNvbnRleHRUeXBl
cyIsIl9Qcm9wVHlwZXMiLCJzdG9yZVNoYXBlIiwic3Vic2NyaXB0aW9uU2hhcGUiLCJjaGlsZENv
bnRleHRUeXBlcyIsIldyYXBwZWRDb21wb25lbnQiLCJfaW52YXJpYW50MiIsIkpTT04iLCJzdHJp
bmdpZnkiLCJ3cmFwcGVkQ29tcG9uZW50TmFtZSIsInNlbGVjdG9yRmFjdG9yeU9wdGlvbnMiLCJf
ZXh0ZW5kcyIsIkNvbm5lY3QiLCJfQ29tcG9uZW50IiwiX3RoaXMiLCJzdGF0ZSIsInJlbmRlckNv
dW50IiwicHJvcHNNb2RlIiwic2V0V3JhcHBlZEluc3RhbmNlIiwiaW5pdFNlbGVjdG9yIiwiaW5p
dFN1YnNjcmlwdGlvbiIsImdldENoaWxkQ29udGV4dCIsIl9yZWYyIiwic3Vic2NyaXB0aW9uIiwi
Y29tcG9uZW50RGlkTW91bnQiLCJ0cnlTdWJzY3JpYmUiLCJmb3JjZVVwZGF0ZSIsImNvbXBvbmVu
dFdpbGxSZWNlaXZlUHJvcHMiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsInRyeVVuc3Vic2NyaWJl
Iiwibm90aWZ5TmVzdGVkU3VicyIsImdldFdyYXBwZWRJbnN0YW5jZSIsIndyYXBwZWRJbnN0YW5j
ZSIsImRpc3BhdGNoIiwicGFyZW50U3ViIiwiX1N1YnNjcmlwdGlvbjIiLCJvblN0YXRlQ2hhbmdl
IiwiY29tcG9uZW50RGlkVXBkYXRlIiwibm90aWZ5TmVzdGVkU3Vic09uQ29tcG9uZW50RGlkVXBk
YXRlIiwic2V0U3RhdGUiLCJkdW1teVN0YXRlIiwiaXNTdWJzY3JpYmVkIiwiYWRkRXh0cmFQcm9w
cyIsIndpdGhFeHRyYXMiLCJfcmVhY3QiLCJfaG9pc3ROb25SZWFjdFN0YXRpY3MyIiwiX2hvaXN0
Tm9uUmVhY3RTdGF0aWNzIiwiX2ludmFyaWFudCIsIl9TdWJzY3JpcHRpb24iLCJ3cmFwTWFwVG9Q
cm9wc0NvbnN0YW50IiwiZ2V0Q29uc3RhbnQiLCJjb25zdGFudFNlbGVjdG9yIiwiY29uc3RhbnQi
LCJkZXBlbmRzT25Pd25Qcm9wcyIsImdldERlcGVuZHNPbk93blByb3BzIiwibWFwVG9Qcm9wcyIs
IndyYXBNYXBUb1Byb3BzRnVuYyIsInByb3h5Iiwic3RhdGVPckRpc3BhdGNoIiwib3duUHJvcHMi
LCJfdmVyaWZ5UGxhaW5PYmplY3QiLCJjb25uZWN0IiwiY3JlYXRlUHJvdmlkZXIiLCJQcm92aWRl
ciIsIl9Qcm92aWRlciIsIl9Qcm92aWRlcjIiLCJfY29ubmVjdEFkdmFuY2VkIiwiX2Nvbm5lY3RB
ZHZhbmNlZDIiLCJfY29ubmVjdCIsIl9jb25uZWN0MiIsIl9wcm9wVHlwZXMiLCJfcHJvcFR5cGVz
MiIsInNoYXBlIiwiaXNSZXF1aXJlZCIsInN1YnNjcmliZSIsInZlcmlmeVBsYWluT2JqZWN0Iiwi
X2lzUGxhaW5PYmplY3QyIiwiX3dhcm5pbmcyIiwiX2lzUGxhaW5PYmplY3QiLCJfY3JlYXRlQ2xh
c3MiLCJkZWZpbmVQcm9wZXJ0aWVzIiwicHJvdG9Qcm9wcyIsInN0YXRpY1Byb3BzIiwiX3JlYWN0
MiIsIl9jbGFzc25hbWVzIiwiX2NsYXNzbmFtZXMyIiwiVG9kb1RleHRJbnB1dCIsIl90ZW1wIiwi
X3JldCIsIl9sZW4iLCJfa2V5IiwiZ2V0UHJvdG90eXBlT2YiLCJoYW5kbGVTdWJtaXQiLCJ0cmlt
Iiwid2hpY2giLCJvblNhdmUiLCJuZXdUb2RvIiwiaGFuZGxlQ2hhbmdlIiwiaGFuZGxlQmx1ciIs
ImNsYXNzTmFtZSIsImVkaXQiLCJlZGl0aW5nIiwibmV3LXRvZG8iLCJwbGFjZWhvbGRlciIsImF1
dG9Gb2N1cyIsIm9uQmx1ciIsIm9uS2V5RG93biIsImJvb2wiLCJBRERfVE9ETyIsIkRFTEVURV9U
T0RPIiwiRURJVF9UT0RPIiwiQ09NUExFVEVfVE9ETyIsIkNPTVBMRVRFX0FMTCIsIkNMRUFSX0NP
TVBMRVRFRCIsIlNIT1dfQUxMIiwiU0hPV19DT01QTEVURUQiLCJTSE9XX0FDVElWRSIsImRlZmF1
bHRTZXRUaW1vdXQiLCJkZWZhdWx0Q2xlYXJUaW1lb3V0IiwicnVuVGltZW91dCIsImZ1biIsImNh
Y2hlZFNldFRpbWVvdXQiLCJzZXRUaW1lb3V0IiwicnVuQ2xlYXJUaW1lb3V0IiwibWFya2VyIiwi
Y2FjaGVkQ2xlYXJUaW1lb3V0IiwiY2xlYXJUaW1lb3V0IiwiY2xlYW5VcE5leHRUaWNrIiwiZHJh
aW5pbmciLCJjdXJyZW50UXVldWUiLCJxdWV1ZUluZGV4IiwiZHJhaW5RdWV1ZSIsInRpbWVvdXQi
LCJJdGVtIiwiYXJyYXkiLCJwcm9jZXNzIiwibmV4dFRpY2siLCJ0aXRsZSIsImJyb3dzZXIiLCJl
bnYiLCJhcmd2IiwidmVyc2lvbnMiLCJvbiIsImFkZExpc3RlbmVyIiwib25jZSIsIm9mZiIsInJl
bW92ZUxpc3RlbmVyIiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwiZW1pdCIsImJpbmRpbmciLCJjd2Qi
LCJjaGRpciIsImRpciIsInVtYXNrIiwiZ2V0VGhlbiIsInRoZW4iLCJleCIsIkxBU1RfRVJST1Ii
LCJJU19FUlJPUiIsInRyeUNhbGxPbmUiLCJ0cnlDYWxsVHdvIiwiUHJvbWlzZSIsIl80NSIsIl84
MSIsIl82NSIsIl81NCIsImRvUmVzb2x2ZSIsInNhZmVUaGVuIiwib25GdWxmaWxsZWQiLCJvblJl
amVjdGVkIiwicmVzb2x2ZSIsInJlamVjdCIsIkhhbmRsZXIiLCJkZWZlcnJlZCIsIl8xMCIsImhh
bmRsZVJlc29sdmVkIiwicHJvbWlzZSIsIm5ld1ZhbHVlIiwiZmluYWxlIiwiXzk3IiwicmVhc29u
IiwiXzYxIiwiUmVhY3RDb21wb25lbnQiLCJ1cGRhdGVyIiwicmVmcyIsIlJlYWN0Tm9vcFVwZGF0
ZVF1ZXVlIiwiUmVhY3RQdXJlQ29tcG9uZW50IiwiQ29tcG9uZW50RHVtbXkiLCJpc1B1cmVSZWFj
dENvbXBvbmVudCIsImlzTmF0aXZlIiwicmVJc05hdGl2ZSIsInB1cmdlRGVlcCIsIml0ZW0iLCJn
ZXRJdGVtIiwiY2hpbGRJRHMiLCJyZW1vdmVJdGVtIiwiZGVzY3JpYmVDb21wb25lbnRGcmFtZSIs
Im93bmVyTmFtZSIsImZpbGVOYW1lIiwibGluZU51bWJlciIsImRlc2NyaWJlSUQiLCJSZWFjdENv
bXBvbmVudFRyZWVIb29rIiwiZ2V0RWxlbWVudCIsIm93bmVySUQiLCJnZXRPd25lcklEIiwic2V0
SXRlbSIsImdldEl0ZW1JRHMiLCJhZGRSb290IiwicmVtb3ZlUm9vdCIsImdldFJvb3RJRHMiLCJj
YW5Vc2VDb2xsZWN0aW9ucyIsIk1hcCIsIlNldCIsIml0ZW1NYXAiLCJyb290SURTZXQiLCJhZGQi
LCJpdGVtQnlLZXkiLCJyb290QnlLZXkiLCJnZXRLZXlGcm9tSUQiLCJnZXRJREZyb21LZXkiLCJw
YXJzZUludCIsInN1YnN0ciIsInVubW91bnRlZElEcyIsIm9uU2V0Q2hpbGRyZW4iLCJuZXh0Q2hp
bGRJRHMiLCJuZXh0Q2hpbGRJRCIsIm5leHRDaGlsZCIsInBhcmVudElEIiwib25CZWZvcmVNb3Vu
dENvbXBvbmVudCIsInVwZGF0ZUNvdW50Iiwib25CZWZvcmVVcGRhdGVDb21wb25lbnQiLCJvbk1v
dW50Q29tcG9uZW50IiwiaXNSb290Iiwib25VcGRhdGVDb21wb25lbnQiLCJvblVubW91bnRDb21w
b25lbnQiLCJwdXJnZVVubW91bnRlZENvbXBvbmVudHMiLCJfcHJldmVudFB1cmdpbmciLCJnZXRD
dXJyZW50U3RhY2tBZGRlbmR1bSIsInRvcEVsZW1lbnQiLCJjdXJyZW50T3duZXIiLCJfZGVidWdJ
RCIsImdldFN0YWNrQWRkZW5kdW1CeUlEIiwiZ2V0UGFyZW50SUQiLCJnZXRDaGlsZElEcyIsImdl
dFNvdXJjZSIsImdldFRleHQiLCJnZXRVcGRhdGVDb3VudCIsImdldFJlZ2lzdGVyZWRJRHMiLCJw
dXNoTm9uU3RhbmRhcmRXYXJuaW5nU3RhY2siLCJpc0NyZWF0aW5nRWxlbWVudCIsImN1cnJlbnRT
b3VyY2UiLCJyZWFjdFN0YWNrIiwic3RhY2siLCJwb3BOb25TdGFuZGFyZFdhcm5pbmdTdGFjayIs
InJlYWN0U3RhY2tFbmQiLCJ3YXJuTm9vcCIsImNhbkRlZmluZVByb3BlcnR5IiwiZnVuY3MiLCJy
ZWR1Y2UiLCJyZWR1Y2VyIiwicHJlbG9hZGVkU3RhdGUiLCJlbmhhbmNlciIsImVuc3VyZUNhbk11
dGF0ZU5leHRMaXN0ZW5lcnMiLCJuZXh0TGlzdGVuZXJzIiwiY3VycmVudExpc3RlbmVycyIsImN1
cnJlbnRTdGF0ZSIsImFjdGlvbiIsImlzRGlzcGF0Y2hpbmciLCJjdXJyZW50UmVkdWNlciIsInJl
cGxhY2VSZWR1Y2VyIiwibmV4dFJlZHVjZXIiLCJBY3Rpb25UeXBlcyIsIklOSVQiLCJvYnNlcnZh
YmxlIiwib3V0ZXJTdWJzY3JpYmUiLCJvYnNlcnZlciIsIm9ic2VydmVTdGF0ZSIsInVuc3Vic2Ny
aWJlIiwiX3N5bWJvbE9ic2VydmFibGUyIiwiX3N5bWJvbE9ic2VydmFibGUiLCJpZGVudGl0eSIs
InZhbGlkYXRlTWV0aG9kT3ZlcnJpZGUiLCJpc0FscmVhZHlEZWZpbmVkIiwic3BlY1BvbGljeSIs
IlJlYWN0Q2xhc3NJbnRlcmZhY2UiLCJSZWFjdENsYXNzTWl4aW4iLCJtaXhTcGVjSW50b0NvbXBv
bmVudCIsInNwZWMiLCJhdXRvQmluZFBhaXJzIiwiX19yZWFjdEF1dG9CaW5kUGFpcnMiLCJNSVhJ
TlNfS0VZIiwiUkVTRVJWRURfU1BFQ19LRVlTIiwibWl4aW5zIiwicHJvcGVydHkiLCJpc1JlYWN0
Q2xhc3NNZXRob2QiLCJpc0Z1bmN0aW9uIiwic2hvdWxkQXV0b0JpbmQiLCJhdXRvYmluZCIsImNy
ZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uIiwiY3JlYXRlQ2hhaW5lZEZ1bmN0aW9uIiwibWl4U3Rh
dGljU3BlY0ludG9Db21wb25lbnQiLCJzdGF0aWNzIiwiaXNSZXNlcnZlZCIsImlzSW5oZXJpdGVk
IiwibWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cyIsIm9uZSIsInR3byIsImJpbmRBdXRvQmlu
ZE1ldGhvZCIsImJvdW5kTWV0aG9kIiwiYmluZEF1dG9CaW5kTWV0aG9kcyIsInBhaXJzIiwiYXV0
b0JpbmRLZXkiLCJpbml0aWFsU3RhdGUiLCJnZXRJbml0aWFsU3RhdGUiLCJSZWFjdENsYXNzQ29t
cG9uZW50IiwiaW5qZWN0ZWRNaXhpbnMiLCJJc01vdW50ZWRQcmVNaXhpbiIsIklzTW91bnRlZFBv
c3RNaXhpbiIsImdldERlZmF1bHRQcm9wcyIsImNvbXBvbmVudFdpbGxNb3VudCIsImNvbXBvbmVu
dFdpbGxVcGRhdGUiLCJ1cGRhdGVDb21wb25lbnQiLCJfX2lzTW91bnRlZCIsInJlcGxhY2VTdGF0
ZSIsIm5ld1N0YXRlIiwiUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMiLCJjYW1lbGl6ZSIsIl9o
eXBoZW5QYXR0ZXJuIiwiXyIsImNoYXJhY3RlciIsImNhbWVsaXplU3R5bGVOYW1lIiwibXNQYXR0
ZXJuIiwib3V0ZXJOb2RlIiwiaW5uZXJOb2RlIiwiaXNUZXh0Tm9kZSIsImNvbnRhaW5zIiwiY29t
cGFyZURvY3VtZW50UG9zaXRpb24iLCJjYWxsZWUiLCJoYXNBcnJheU5hdHVyZSIsImNyZWF0ZUFy
cmF5RnJvbU1peGVkIiwiZ2V0Tm9kZU5hbWUiLCJub2RlTmFtZU1hdGNoIiwibm9kZU5hbWVQYXR0
ZXJuIiwiY3JlYXRlTm9kZXNGcm9tTWFya3VwIiwiaGFuZGxlU2NyaXB0IiwiZHVtbXlOb2RlIiwi
d3JhcCIsImdldE1hcmt1cFdyYXAiLCJ3cmFwRGVwdGgiLCJzY3JpcHRzIiwiZ2V0RWxlbWVudHNC
eVRhZ05hbWUiLCJub2RlcyIsImNoaWxkTm9kZXMiLCJtYXJrdXBXcmFwIiwic2hvdWxkV3JhcCIs
InNlbGVjdFdyYXAiLCJ0YWJsZVdyYXAiLCJ0cldyYXAiLCJzdmdXcmFwIiwiKiIsImFyZWEiLCJj
b2wiLCJsZWdlbmQiLCJwYXJhbSIsInRyIiwib3B0Z3JvdXAiLCJvcHRpb24iLCJjYXB0aW9uIiwi
Y29sZ3JvdXAiLCJ0Ym9keSIsInRmb290IiwidGhlYWQiLCJ0ZCIsInRoIiwic3ZnRWxlbWVudHMi
LCJnZXRVbmJvdW5kZWRTY3JvbGxQb3NpdGlvbiIsInNjcm9sbGFibGUiLCJXaW5kb3ciLCJwYWdl
WE9mZnNldCIsInNjcm9sbExlZnQiLCJwYWdlWU9mZnNldCIsInNjcm9sbFRvcCIsImh5cGhlbmF0
ZSIsIl91cHBlcmNhc2VQYXR0ZXJuIiwiaHlwaGVuYXRlU3R5bGVOYW1lIiwiaXNOb2RlIiwiTm9k
ZSIsIm1lbW9pemVTdHJpbmdPbmx5IiwiY2FjaGUiLCJSRUFDVF9TVEFUSUNTIiwiS05PV05fU1RB
VElDUyIsImNhbGxlciIsImFyaXR5Iiwib2JqZWN0UHJvdG90eXBlIiwiaG9pc3ROb25SZWFjdFN0
YXRpY3MiLCJ0YXJnZXRDb21wb25lbnQiLCJzb3VyY2VDb21wb25lbnQiLCJibGFja2xpc3QiLCJp
bmhlcml0ZWRDb21wb25lbnQiLCJ1bmRlZmluZWRUYWciLCJudWxsVGFnIiwic3ltVG9TdHJpbmdU
YWciLCJnZXRSYXdUYWciLCJvYmplY3RUb1N0cmluZyIsInRvU3RyaW5nVGFnIiwiZ2xvYmFsIiwi
ZnJlZUdsb2JhbCIsIm92ZXJBcmciLCJpc093biIsInVubWFza2VkIiwicmVzdWx0IiwibmF0aXZl
T2JqZWN0VG9TdHJpbmciLCJ0cmFuc2Zvcm0iLCJmcmVlU2VsZiIsInR5cGVTcGVjcyIsInZhbHVl
cyIsImxvY2F0aW9uIiwiZ2V0U3RhY2siLCJzaGltIiwicHJvcEZ1bGxOYW1lIiwic2VjcmV0Iiwi
Z2V0U2hpbSIsInN5bWJvbCIsImFueSIsImFycmF5T2YiLCJpbnN0YW5jZU9mIiwib2JqZWN0T2Yi
LCJvbmVPZiIsIm9uZU9mVHlwZSIsIm1heWJlSXRlcmFibGUiLCJJVEVSQVRPUl9TWU1CT0wiLCJG
QVVYX0lURVJBVE9SX1NZTUJPTCIsIlByb3BUeXBlRXJyb3IiLCJjcmVhdGVDaGFpbmFibGVUeXBl
Q2hlY2tlciIsInZhbGlkYXRlIiwiY2hlY2tUeXBlIiwiQU5PTllNT1VTIiwiY2hhaW5lZENoZWNr
VHlwZSIsImNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyIiwiZXhwZWN0ZWRUeXBlIiwicHJvcFR5
cGUiLCJnZXRQcm9wVHlwZSIsInByZWNpc2VUeXBlIiwiZ2V0UHJlY2lzZVR5cGUiLCJjcmVhdGVB
bnlUeXBlQ2hlY2tlciIsImNyZWF0ZUFycmF5T2ZUeXBlQ2hlY2tlciIsInR5cGVDaGVja2VyIiwi
Y3JlYXRlRWxlbWVudFR5cGVDaGVja2VyIiwiY3JlYXRlSW5zdGFuY2VUeXBlQ2hlY2tlciIsImV4
cGVjdGVkQ2xhc3MiLCJleHBlY3RlZENsYXNzTmFtZSIsImFjdHVhbENsYXNzTmFtZSIsImdldENs
YXNzTmFtZSIsImNyZWF0ZUVudW1UeXBlQ2hlY2tlciIsImV4cGVjdGVkVmFsdWVzIiwidmFsdWVz
U3RyaW5nIiwiY3JlYXRlT2JqZWN0T2ZUeXBlQ2hlY2tlciIsImNyZWF0ZVVuaW9uVHlwZUNoZWNr
ZXIiLCJhcnJheU9mVHlwZUNoZWNrZXJzIiwiY2hlY2tlciIsImdldFBvc3RmaXhGb3JUeXBlV2Fy
bmluZyIsImNyZWF0ZU5vZGVDaGVja2VyIiwiY3JlYXRlU2hhcGVUeXBlQ2hlY2tlciIsInNoYXBl
VHlwZXMiLCJldmVyeSIsImlzU3ltYm9sIiwiQVJJQURPTVByb3BlcnR5Q29uZmlnIiwiYXJpYS1j
dXJyZW50IiwiYXJpYS1kZXRhaWxzIiwiYXJpYS1kaXNhYmxlZCIsImFyaWEtaGlkZGVuIiwiYXJp
YS1pbnZhbGlkIiwiYXJpYS1rZXlzaG9ydGN1dHMiLCJhcmlhLWxhYmVsIiwiYXJpYS1yb2xlZGVz
Y3JpcHRpb24iLCJhcmlhLWF1dG9jb21wbGV0ZSIsImFyaWEtY2hlY2tlZCIsImFyaWEtZXhwYW5k
ZWQiLCJhcmlhLWhhc3BvcHVwIiwiYXJpYS1sZXZlbCIsImFyaWEtbW9kYWwiLCJhcmlhLW11bHRp
bGluZSIsImFyaWEtbXVsdGlzZWxlY3RhYmxlIiwiYXJpYS1vcmllbnRhdGlvbiIsImFyaWEtcGxh
Y2Vob2xkZXIiLCJhcmlhLXByZXNzZWQiLCJhcmlhLXJlYWRvbmx5IiwiYXJpYS1yZXF1aXJlZCIs
ImFyaWEtc2VsZWN0ZWQiLCJhcmlhLXNvcnQiLCJhcmlhLXZhbHVlbWF4IiwiYXJpYS12YWx1ZW1p
biIsImFyaWEtdmFsdWVub3ciLCJhcmlhLXZhbHVldGV4dCIsImFyaWEtYXRvbWljIiwiYXJpYS1i
dXN5IiwiYXJpYS1saXZlIiwiYXJpYS1yZWxldmFudCIsImFyaWEtZHJvcGVmZmVjdCIsImFyaWEt
Z3JhYmJlZCIsImFyaWEtYWN0aXZlZGVzY2VuZGFudCIsImFyaWEtY29sY291bnQiLCJhcmlhLWNv
bGluZGV4IiwiYXJpYS1jb2xzcGFuIiwiYXJpYS1jb250cm9scyIsImFyaWEtZGVzY3JpYmVkYnki
LCJhcmlhLWVycm9ybWVzc2FnZSIsImFyaWEtZmxvd3RvIiwiYXJpYS1sYWJlbGxlZGJ5IiwiYXJp
YS1vd25zIiwiYXJpYS1wb3NpbnNldCIsImFyaWEtcm93Y291bnQiLCJhcmlhLXJvd2luZGV4Iiwi
YXJpYS1yb3dzcGFuIiwiYXJpYS1zZXRzaXplIiwiQXV0b0ZvY3VzVXRpbHMiLCJmb2N1c0RPTUNv
bXBvbmVudCIsImlzUHJlc3RvIiwib3BlcmEiLCJpc0tleXByZXNzQ29tbWFuZCIsImdldENvbXBv
c2l0aW9uRXZlbnRUeXBlIiwiY29tcG9zaXRpb25TdGFydCIsImNvbXBvc2l0aW9uRW5kIiwiY29t
cG9zaXRpb25VcGRhdGUiLCJpc0ZhbGxiYWNrQ29tcG9zaXRpb25TdGFydCIsIlNUQVJUX0tFWUNP
REUiLCJpc0ZhbGxiYWNrQ29tcG9zaXRpb25FbmQiLCJFTkRfS0VZQ09ERVMiLCJnZXREYXRhRnJv
bUN1c3RvbUV2ZW50IiwiZXh0cmFjdENvbXBvc2l0aW9uRXZlbnQiLCJmYWxsYmFja0RhdGEiLCJj
YW5Vc2VDb21wb3NpdGlvbkV2ZW50IiwiY3VycmVudENvbXBvc2l0aW9uIiwidXNlRmFsbGJhY2tD
b21wb3NpdGlvbkRhdGEiLCJnZXREYXRhIiwiRmFsbGJhY2tDb21wb3NpdGlvblN0YXRlIiwiU3lu
dGhldGljQ29tcG9zaXRpb25FdmVudCIsImN1c3RvbURhdGEiLCJnZXROYXRpdmVCZWZvcmVJbnB1
dENoYXJzIiwiU1BBQ0VCQVJfQ09ERSIsImhhc1NwYWNlS2V5cHJlc3MiLCJTUEFDRUJBUl9DSEFS
IiwiY2hhcnMiLCJnZXRGYWxsYmFja0JlZm9yZUlucHV0Q2hhcnMiLCJleHRyYWN0QmVmb3JlSW5w
dXRFdmVudCIsImNhblVzZVRleHRJbnB1dEV2ZW50IiwiU3ludGhldGljSW5wdXRFdmVudCIsImJl
Zm9yZUlucHV0IiwiYnViYmxlZCIsImNhcHR1cmVkIiwiQmVmb3JlSW5wdXRFdmVudFBsdWdpbiIs
ImRhbmdlcm91c1N0eWxlVmFsdWUiLCJwcm9jZXNzU3R5bGVOYW1lIiwic3R5bGVOYW1lIiwiaGFz
U2hvcnRoYW5kUHJvcGVydHlCdWciLCJzdHlsZUZsb2F0QWNjZXNzb3IiLCJ0ZW1wU3R5bGUiLCJz
dHlsZSIsImNzc0Zsb2F0IiwiQ1NTUHJvcGVydHlPcGVyYXRpb25zIiwiY3JlYXRlTWFya3VwRm9y
U3R5bGVzIiwic3R5bGVzIiwic2VyaWFsaXplZCIsImlzQ3VzdG9tUHJvcGVydHkiLCJzdHlsZVZh
bHVlIiwic2V0VmFsdWVGb3JTdHlsZXMiLCJzZXRQcm9wZXJ0eSIsImV4cGFuc2lvbiIsImluZGl2
aWR1YWxTdHlsZU5hbWUiLCJjcmVhdGVBbmRBY2N1bXVsYXRlQ2hhbmdlRXZlbnQiLCJjaGFuZ2Ui
LCJzaG91bGRVc2VDaGFuZ2VFdmVudCIsIm1hbnVhbERpc3BhdGNoQ2hhbmdlRXZlbnQiLCJhY3Rp
dmVFbGVtZW50SW5zdCIsInJ1bkV2ZW50SW5CYXRjaCIsInN0YXJ0V2F0Y2hpbmdGb3JDaGFuZ2VF
dmVudElFOCIsInN0b3BXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4IiwiZ2V0SW5zdElmVmFsdWVD
aGFuZ2VkIiwidXBkYXRlZCIsIkNoYW5nZUV2ZW50UGx1Z2luIiwiX2FsbG93U2ltdWxhdGVkUGFz
c1Rocm91Z2giLCJnZXRUYXJnZXRJbnN0Rm9yQ2hhbmdlRXZlbnQiLCJoYW5kbGVFdmVudHNGb3JD
aGFuZ2VFdmVudElFOCIsInN0YXJ0V2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSIsImhhbmRsZVByb3Bl
cnR5Q2hhbmdlIiwic3RvcFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UiLCJoYW5kbGVFdmVudHNGb3JJ
bnB1dEV2ZW50UG9seWZpbGwiLCJnZXRUYXJnZXRJbnN0Rm9ySW5wdXRFdmVudFBvbHlmaWxsIiwi
c2hvdWxkVXNlQ2xpY2tFdmVudCIsImdldFRhcmdldEluc3RGb3JDbGlja0V2ZW50IiwiZ2V0VGFy
Z2V0SW5zdEZvcklucHV0T3JDaGFuZ2VFdmVudCIsImhhbmRsZUNvbnRyb2xsZWRJbnB1dEJsdXIi
LCJjb250cm9sbGVkIiwiZG9lc0NoYW5nZUV2ZW50QnViYmxlIiwiaXNJbnB1dEV2ZW50U3VwcG9y
dGVkIiwiX2lzSW5wdXRFdmVudFN1cHBvcnRlZCIsImdldFRhcmdldEluc3RGdW5jIiwiaGFuZGxl
RXZlbnRGdW5jIiwidGFyZ2V0Tm9kZSIsIm9sZENoaWxkIiwibmV3Q2hpbGQiLCJEZWZhdWx0RXZl
bnRQbHVnaW5PcmRlciIsIm1vdXNlRW50ZXIiLCJtb3VzZUxlYXZlIiwiRW50ZXJMZWF2ZUV2ZW50
UGx1Z2luIiwid2luIiwicmVsYXRlZCIsInRvTm9kZSIsIl9yb290IiwiX3N0YXJ0VGV4dCIsIl9m
YWxsYmFja1RleHQiLCJzdGFydFZhbHVlIiwic3RhcnRMZW5ndGgiLCJlbmRWYWx1ZSIsImVuZExl
bmd0aCIsIm1pbkVuZCIsInNsaWNlVGFpbCIsIkhUTUxET01Qcm9wZXJ0eUNvbmZpZyIsImFjY2Vw
dCIsImFjY2VwdENoYXJzZXQiLCJhY2Nlc3NLZXkiLCJhbGxvd0Z1bGxTY3JlZW4iLCJhbGxvd1Ry
YW5zcGFyZW5jeSIsImFsdCIsImFzIiwiYXN5bmMiLCJhdXRvQ29tcGxldGUiLCJhdXRvUGxheSIs
ImNlbGxQYWRkaW5nIiwiY2VsbFNwYWNpbmciLCJjaGFyU2V0IiwiY2hhbGxlbmdlIiwiY2l0ZSIs
ImNsYXNzSUQiLCJjb2xzIiwiY29sU3BhbiIsImNvbnRleHRNZW51IiwiY29udHJvbHMiLCJjb29y
ZHMiLCJjcm9zc09yaWdpbiIsImRhdGVUaW1lIiwiZGVmZXIiLCJkb3dubG9hZCIsImRyYWdnYWJs
ZSIsImVuY1R5cGUiLCJmb3JtIiwiZm9ybUFjdGlvbiIsImZvcm1FbmNUeXBlIiwiZm9ybU1ldGhv
ZCIsImZvcm1Ob1ZhbGlkYXRlIiwiZm9ybVRhcmdldCIsImZyYW1lQm9yZGVyIiwiaGVhZGVycyIs
ImhlaWdodCIsImhpZ2giLCJocmVmIiwiaHJlZkxhbmciLCJodG1sRm9yIiwiaHR0cEVxdWl2Iiwi
aWNvbiIsImlucHV0TW9kZSIsImludGVncml0eSIsImtleVBhcmFtcyIsImtleVR5cGUiLCJraW5k
IiwibGFiZWwiLCJsYW5nIiwibGlzdCIsImxvb3AiLCJsb3ciLCJtYW5pZmVzdCIsIm1hcmdpbkhl
aWdodCIsIm1hcmdpbldpZHRoIiwibWF4IiwibWF4TGVuZ3RoIiwibWVkaWEiLCJtZWRpYUdyb3Vw
IiwibWluTGVuZ3RoIiwibXV0ZWQiLCJub25jZSIsIm5vVmFsaWRhdGUiLCJvcGVuIiwib3B0aW11
bSIsInBhdHRlcm4iLCJwbGF5c0lubGluZSIsInBvc3RlciIsInByZWxvYWQiLCJwcm9maWxlIiwi
cmFkaW9Hcm91cCIsInJlZmVycmVyUG9saWN5IiwicmVsIiwicmVxdWlyZWQiLCJyZXZlcnNlZCIs
InJvbGUiLCJyb3dzIiwicm93U3BhbiIsInNhbmRib3giLCJzY29wZWQiLCJzY3JvbGxpbmciLCJz
ZWFtbGVzcyIsInNpemUiLCJzaXplcyIsInNwYW4iLCJzcGVsbENoZWNrIiwic3JjIiwic3JjRG9j
Iiwic3JjTGFuZyIsInNyY1NldCIsInN1bW1hcnkiLCJ0YWJJbmRleCIsInVzZU1hcCIsIndpZHRo
Iiwid21vZGUiLCJhYm91dCIsImRhdGF0eXBlIiwiaW5saXN0IiwicmVzb3VyY2UiLCJ0eXBlb2Yi
LCJ2b2NhYiIsImF1dG9DYXBpdGFsaXplIiwiYXV0b0NvcnJlY3QiLCJhdXRvU2F2ZSIsIml0ZW1Q
cm9wIiwiaXRlbVNjb3BlIiwiaXRlbVR5cGUiLCJpdGVtSUQiLCJpdGVtUmVmIiwicmVzdWx0cyIs
InNlY3VyaXR5IiwidW5zZWxlY3RhYmxlIiwidmFsaWRpdHkiLCJiYWRJbnB1dCIsImluc3RhbnRp
YXRlQ2hpbGQiLCJjaGlsZEluc3RhbmNlcyIsInNlbGZEZWJ1Z0lEIiwia2V5VW5pcXVlIiwiUmVh
Y3RDaGlsZFJlY29uY2lsZXIiLCJpbnN0YW50aWF0ZUNoaWxkcmVuIiwibmVzdGVkQ2hpbGROb2Rl
cyIsInVwZGF0ZUNoaWxkcmVuIiwicHJldkNoaWxkcmVuIiwibmV4dENoaWxkcmVuIiwibW91bnRJ
bWFnZXMiLCJyZW1vdmVkTm9kZXMiLCJwcmV2Q2hpbGQiLCJuZXh0Q2hpbGRJbnN0YW5jZSIsIm5l
eHRDaGlsZE1vdW50SW1hZ2UiLCJ1bm1vdW50Q2hpbGRyZW4iLCJyZW5kZXJlZENoaWxkcmVuIiwi
cmVuZGVyZWRDaGlsZCIsIlJlYWN0RE9NSURPcGVyYXRpb25zIiwiUmVhY3RDb21wb25lbnRCcm93
c2VyRW52aXJvbm1lbnQiLCJkYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJlblVwZGF0ZXMiLCJTdGF0
ZWxlc3NDb21wb25lbnQiLCJ3YXJuSWZJbnZhbGlkRWxlbWVudCIsInNob3VsZENvbnN0cnVjdCIs
ImlzUHVyZUNvbXBvbmVudCIsIkNvbXBvc2l0ZVR5cGVzIiwiSW1wdXJlQ2xhc3MiLCJQdXJlQ2xh
c3MiLCJTdGF0ZWxlc3NGdW5jdGlvbmFsIiwibmV4dE1vdW50SUQiLCJfY29tcG9zaXRlVHlwZSIs
Il9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3VudCIsInJlbmRlcmVkRWxlbWVudCIsInB1YmxpY1By
b3BzIiwicHVibGljQ29udGV4dCIsIl9wcm9jZXNzQ29udGV4dCIsInVwZGF0ZVF1ZXVlIiwiZ2V0
VXBkYXRlUXVldWUiLCJkb0NvbnN0cnVjdCIsIl9jb25zdHJ1Y3RDb21wb25lbnQiLCJ1bnN0YWJs
ZV9oYW5kbGVFcnJvciIsInBlcmZvcm1Jbml0aWFsTW91bnRXaXRoRXJyb3JIYW5kbGluZyIsInBl
cmZvcm1Jbml0aWFsTW91bnQiLCJfY29uc3RydWN0Q29tcG9uZW50V2l0aG91dE93bmVyIiwiX3By
b2Nlc3NQZW5kaW5nU3RhdGUiLCJkZWJ1Z0lEIiwiX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCIs
Il9tYXNrQ29udGV4dCIsIm1hc2tlZENvbnRleHQiLCJjb250ZXh0TmFtZSIsImN1cnJlbnRDb250
ZXh0IiwiY2hpbGRDb250ZXh0IiwiX2NoZWNrQ29udGV4dFR5cGVzIiwicHJldkNvbnRleHQiLCJw
cmV2UGFyZW50RWxlbWVudCIsIm5leHRQYXJlbnRFbGVtZW50IiwicHJldlVubWFza2VkQ29udGV4
dCIsIm5leHRVbm1hc2tlZENvbnRleHQiLCJ3aWxsUmVjZWl2ZSIsInByZXZQcm9wcyIsIm5leHRT
dGF0ZSIsInNob3VsZFVwZGF0ZSIsIl9wZXJmb3JtQ29tcG9uZW50VXBkYXRlIiwicGFydGlhbCIs
InVubWFza2VkQ29udGV4dCIsInByZXZTdGF0ZSIsImhhc0NvbXBvbmVudERpZFVwZGF0ZSIsIl91
cGRhdGVSZW5kZXJlZENvbXBvbmVudCIsInByZXZDb21wb25lbnRJbnN0YW5jZSIsInByZXZSZW5k
ZXJlZEVsZW1lbnQiLCJuZXh0UmVuZGVyZWRFbGVtZW50Iiwib2xkSG9zdE5vZGUiLCJuZXh0TWFy
a3VwIiwiX3JlcGxhY2VOb2RlV2l0aE1hcmt1cCIsInByZXZJbnN0YW5jZSIsIl9yZW5kZXJWYWxp
ZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQiLCJhdHRhY2hSZWYiLCJwdWJsaWND
b21wb25lbnRJbnN0YW5jZSIsImRldGFjaFJlZiIsIlJlYWN0RGVmYXVsdEluamVjdGlvbiIsImZp
bmRET01Ob2RlIiwiaW5qZWN0IiwiUmVhY3RET00iLCJ1bnN0YWJsZV9iYXRjaGVkVXBkYXRlcyIs
InVuc3RhYmxlX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyIiwiX19SRUFDVF9ERVZUT09MU19H
TE9CQUxfSE9PS19fIiwiTW91bnQiLCJSZWNvbmNpbGVyIiwiYXNzZXJ0VmFsaWRQcm9wcyIsInZv
aWRFbGVtZW50VGFncyIsIl90YWciLCJkYW5nZXJvdXNseVNldElubmVySFRNTCIsIkhUTUwiLCJl
bnF1ZXVlUHV0TGlzdGVuZXIiLCJSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uIiwiY29u
dGFpbmVySW5mbyIsImlzRG9jdW1lbnRGcmFnbWVudCIsIl9ub2RlIiwiRE9DX0ZSQUdNRU5UX1RZ
UEUiLCJfb3duZXJEb2N1bWVudCIsImxpc3RlbmVyVG9QdXQiLCJpbnB1dFBvc3RNb3VudCIsIlJl
YWN0RE9NSW5wdXQiLCJwb3N0TW91bnRXcmFwcGVyIiwidGV4dGFyZWFQb3N0TW91bnQiLCJSZWFj
dERPTVRleHRhcmVhIiwib3B0aW9uUG9zdE1vdW50IiwiUmVhY3RET01PcHRpb24iLCJ0cmFja0lu
cHV0VmFsdWUiLCJ0cmFwQnViYmxlZEV2ZW50c0xvY2FsIiwiZ2V0Tm9kZSIsIm1lZGlhRXZlbnRz
IiwicG9zdFVwZGF0ZVNlbGVjdFdyYXBwZXIiLCJ2YWxpZGF0ZURhbmdlcm91c1RhZyIsInZhbGlk
YXRlZFRhZ0NhY2hlIiwiVkFMSURfVEFHX1JFR0VYIiwiaXNDdXN0b21Db21wb25lbnQiLCJSZWFj
dERPTUNvbXBvbmVudCIsIl9uYW1lc3BhY2VVUkkiLCJfcHJldmlvdXNTdHlsZSIsIl9wcmV2aW91
c1N0eWxlQ29weSIsIlJlYWN0TXVsdGlDaGlsZCIsIkNPTlRFTlRfVFlQRVMiLCJTVFlMRSIsInN1
cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyIsIm9taXR0ZWRDbG9zZVRhZ3MiLCJiYXNlIiwi
YnIiLCJlbWJlZCIsImhyIiwiaW1nIiwia2V5Z2VuIiwibGluayIsIm1ldGEiLCJ3YnIiLCJuZXds
aW5lRWF0aW5nVGFncyIsImxpc3RpbmciLCJwcmUiLCJ0ZXh0YXJlYSIsIm1lbnVpdGVtIiwiZ2xv
YmFsSWRDb3VudGVyIiwiTWl4aW4iLCJfaWRDb3VudGVyIiwicGFyZW50VGFnIiwibW91bnRJbWFn
ZSIsImVsIiwiZGl2IiwiY3JlYXRlRWxlbWVudE5TIiwiX3VwZGF0ZURPTVByb3BlcnRpZXMiLCJs
YXp5VHJlZSIsIl9jcmVhdGVJbml0aWFsQ2hpbGRyZW4iLCJ0YWdPcGVuIiwiX2NyZWF0ZU9wZW5U
YWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnMiLCJ0YWdDb250ZW50IiwiX2NyZWF0ZUNvbnRlbnRNYXJr
dXAiLCJwcm9wS2V5IiwicmVuZGVyVG9TdGF0aWNNYXJrdXAiLCJfX2h0bWwiLCJjb250ZW50VG9V
c2UiLCJjaGlsZHJlblRvVXNlIiwibW91bnRDaGlsZHJlbiIsImxhc3RQcm9wcyIsIl91cGRhdGVE
T01DaGlsZHJlbiIsInVwZGF0ZVdyYXBwZXIiLCJzdHlsZVVwZGF0ZXMiLCJsYXN0U3R5bGUiLCJu
ZXh0UHJvcCIsImxhc3RQcm9wIiwibGFzdENvbnRlbnQiLCJuZXh0Q29udGVudCIsImxhc3RIdG1s
IiwibmV4dEh0bWwiLCJsYXN0Q2hpbGRyZW4iLCJsYXN0SGFzQ29udGVudE9ySHRtbCIsIm5leHRI
YXNDb250ZW50T3JIdG1sIiwidXBkYXRlVGV4dENvbnRlbnQiLCJ1cGRhdGVNYXJrdXAiLCJ0b3BM
ZXZlbFdyYXBwZXIiLCJSZWFjdERPTUVtcHR5Q29tcG9uZW50IiwiZG9tSUQiLCJjcmVhdGVDb21t
ZW50IiwidXNlRmliZXIiLCJmb3JjZVVwZGF0ZUlmTW91bnRlZCIsImlzQ29udHJvbGxlZCIsInVz
ZXNDaGVja2VkIiwicm9vdE5vZGUiLCJxdWVyeVJvb3QiLCJncm91cCIsInF1ZXJ5U2VsZWN0b3JB
bGwiLCJvdGhlck5vZGUiLCJvdGhlckluc3RhbmNlIiwiaG9zdFByb3BzIiwiZGVmYXVsdENoZWNr
ZWQiLCJpbml0aWFsQ2hlY2tlZCIsInZhbHVlQXNOdW1iZXIiLCJwYXJzZUZsb2F0IiwiZmxhdHRl
bkNoaWxkcmVuIiwiZGlkV2FybkludmFsaWRPcHRpb25DaGlsZHJlbiIsInNlbGVjdFZhbHVlIiwi
c2VsZWN0UGFyZW50IiwiaXNDb2xsYXBzZWQiLCJhbmNob3JOb2RlIiwiYW5jaG9yT2Zmc2V0Iiwi
Zm9jdXNPZmZzZXQiLCJnZXRJRU9mZnNldHMiLCJzZWxlY3RlZFJhbmdlIiwic2VsZWN0ZWRMZW5n
dGgiLCJmcm9tU3RhcnQiLCJkdXBsaWNhdGUiLCJtb3ZlVG9FbGVtZW50VGV4dCIsInNldEVuZFBv
aW50Iiwic3RhcnRPZmZzZXQiLCJlbmRPZmZzZXQiLCJnZXRNb2Rlcm5PZmZzZXRzIiwicmFuZ2VD
b3VudCIsImN1cnJlbnRSYW5nZSIsImdldFJhbmdlQXQiLCJzdGFydENvbnRhaW5lciIsImVuZENv
bnRhaW5lciIsImlzU2VsZWN0aW9uQ29sbGFwc2VkIiwicmFuZ2VMZW5ndGgiLCJ0ZW1wUmFuZ2Ui
LCJjbG9uZVJhbmdlIiwic2VsZWN0Tm9kZUNvbnRlbnRzIiwic2V0RW5kIiwiaXNUZW1wUmFuZ2VD
b2xsYXBzZWQiLCJkZXRlY3Rpb25SYW5nZSIsInNldFN0YXJ0IiwiaXNCYWNrd2FyZCIsImNvbGxh
cHNlZCIsInNldElFT2Zmc2V0cyIsInNldE1vZGVybk9mZnNldHMiLCJleHRlbmQiLCJ0ZW1wIiwi
c3RhcnRNYXJrZXIiLCJnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0IiwiZW5kTWFya2VyIiwib2Zm
c2V0IiwicmVtb3ZlQWxsUmFuZ2VzIiwiYWRkUmFuZ2UiLCJ1c2VJRU9mZnNldHMiLCJSZWFjdERP
TVRleHRDb21wb25lbnQiLCJfc3RyaW5nVGV4dCIsIl9jbG9zaW5nQ29tbWVudCIsIl9jb21tZW50
Tm9kZXMiLCJvcGVuaW5nVmFsdWUiLCJjbG9zaW5nVmFsdWUiLCJjcmVhdGVEb2N1bWVudEZyYWdt
ZW50IiwiZXNjYXBlZFRleHQiLCJuZXh0VGV4dCIsIm5leHRTdHJpbmdUZXh0IiwiY29tbWVudE5v
ZGVzIiwiaG9zdE5vZGUiLCJpbnN0QSIsImluc3RCIiwiZGVwdGhBIiwidGVtcEEiLCJkZXB0aEIi
LCJ0ZW1wQiIsImRlcHRoIiwicGF0aCIsImNvbW1vbiIsInBhdGhGcm9tIiwicGF0aFRvIiwiUmVh
Y3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneVRyYW5zYWN0aW9uIiwiUkVTRVRfQkFUQ0hFRF9VUERB
VEVTIiwiUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneSIsIkZMVVNIX0JBVENIRURfVVBEQVRF
UyIsImFscmVhZHlCYXRjaGluZ1VwZGF0ZXMiLCJhbHJlYWR5SW5qZWN0ZWQiLCJSZWFjdEluamVj
dGlvbiIsIkV2ZW50RW1pdHRlciIsIlJlYWN0RE9NVHJlZVRyYXZlcnNhbCIsIlNpbXBsZUV2ZW50
UGx1Z2luIiwiU2VsZWN0RXZlbnRQbHVnaW4iLCJIb3N0Q29tcG9uZW50IiwiU1ZHRE9NUHJvcGVy
dHlDb25maWciLCJFbXB0eUNvbXBvbmVudCIsIlVwZGF0ZXMiLCJydW5FdmVudFF1ZXVlSW5CYXRj
aCIsImZpbmRQYXJlbnQiLCJUb3BMZXZlbENhbGxiYWNrQm9va0tlZXBpbmciLCJhbmNlc3RvcnMi
LCJoYW5kbGVUb3BMZXZlbEltcGwiLCJib29rS2VlcGluZyIsImFuY2VzdG9yIiwiX2hhbmRsZVRv
cExldmVsIiwic2Nyb2xsVmFsdWVNb25pdG9yIiwidHdvQXJndW1lbnRQb29sZXIiLCJfZW5hYmxl
ZCIsImRpc3BhdGNoRXZlbnQiLCJhZGxlcjMyIiwiVEFHX0VORCIsIkNPTU1FTlRfU1RBUlQiLCJh
ZGRDaGVja3N1bVRvTWFya3VwIiwiZXhpc3RpbmdDaGVja3N1bSIsIm1hcmt1cENoZWNrc3VtIiwi
bWFrZUluc2VydE1hcmt1cCIsInRvSW5kZXgiLCJmcm9tSW5kZXgiLCJtYWtlTW92ZSIsIm1ha2VS
ZW1vdmUiLCJtYWtlU2V0TWFya3VwIiwibWFrZVRleHRDb250ZW50IiwicHJvY2Vzc1F1ZXVlIiwi
X3JlY29uY2lsZXJJbnN0YW50aWF0ZUNoaWxkcmVuIiwibmVzdGVkQ2hpbGRyZW4iLCJfcmVjb25j
aWxlclVwZGF0ZUNoaWxkcmVuIiwibmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMiLCJfdXBkYXRl
Q2hpbGRyZW4iLCJuZXh0SW5kZXgiLCJuZXh0TW91bnRJbmRleCIsImxhc3RQbGFjZWROb2RlIiwi
X21vdW50Q2hpbGRBdEluZGV4IiwiX3VubW91bnRDaGlsZCIsImNyZWF0ZUNoaWxkIiwiaXNWYWxp
ZE93bmVyIiwiUmVhY3RPd25lciIsImFkZENvbXBvbmVudEFzUmVmVG8iLCJyZW1vdmVDb21wb25l
bnRBc1JlZkZyb20iLCJvd25lclB1YmxpY0luc3RhbmNlIiwicmVhY3RNb3VudFJlYWR5IiwiU0VM
RUNUSU9OX1JFU1RPUkFUSU9OIiwiRVZFTlRfU1VQUFJFU1NJT04iLCJjdXJyZW50bHlFbmFibGVk
IiwicHJldmlvdXNseUVuYWJsZWQiLCJPTl9ET01fUkVBRFlfUVVFVUVJTkciLCJwcmV2UmVmIiwi
cHJldk93bmVyIiwibmV4dFJlZiIsIm5leHRPd25lciIsIlJlYWN0U2VydmVyVXBkYXRlUXVldWUi
LCJub29wQ2FsbGJhY2tRdWV1ZSIsIk5TIiwieGxpbmsiLCJ4bWwiLCJBVFRSUyIsImFjY2VudEhl
aWdodCIsImFjY3VtdWxhdGUiLCJhZGRpdGl2ZSIsImFsaWdubWVudEJhc2VsaW5lIiwiYWxsb3dS
ZW9yZGVyIiwiYWxwaGFiZXRpYyIsImFtcGxpdHVkZSIsImFyYWJpY0Zvcm0iLCJhc2NlbnQiLCJh
dHRyaWJ1dGVUeXBlIiwiYXV0b1JldmVyc2UiLCJhemltdXRoIiwiYmFzZUZyZXF1ZW5jeSIsImJh
c2VQcm9maWxlIiwiYmFzZWxpbmVTaGlmdCIsImJib3giLCJiZWdpbiIsImJpYXMiLCJieSIsImNh
bGNNb2RlIiwiY2FwSGVpZ2h0IiwiY2xpcCIsImNsaXBQYXRoIiwiY2xpcFJ1bGUiLCJjbGlwUGF0
aFVuaXRzIiwiY29sb3JJbnRlcnBvbGF0aW9uIiwiY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVycyIs
ImNvbG9yUHJvZmlsZSIsImNvbG9yUmVuZGVyaW5nIiwiY29udGVudFNjcmlwdFR5cGUiLCJjb250
ZW50U3R5bGVUeXBlIiwiY3Vyc29yIiwiY3giLCJjeSIsImRlY2VsZXJhdGUiLCJkZXNjZW50Iiwi
ZGlmZnVzZUNvbnN0YW50IiwiZGlyZWN0aW9uIiwiZGlzcGxheSIsImRpdmlzb3IiLCJkb21pbmFu
dEJhc2VsaW5lIiwiZHVyIiwiZHgiLCJkeSIsImVkZ2VNb2RlIiwiZWxldmF0aW9uIiwiZW5hYmxl
QmFja2dyb3VuZCIsImV4cG9uZW50IiwiZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCIsImZpbGwi
LCJmaWxsUnVsZSIsImZpbHRlciIsImZpbHRlclJlcyIsImZpbHRlclVuaXRzIiwiZmxvb2RDb2xv
ciIsImZvY3VzYWJsZSIsImZvbnRTaXplQWRqdXN0IiwiZm9udFN0cmV0Y2giLCJmeCIsImZ5Iiwi
ZzEiLCJnMiIsImdseXBoTmFtZSIsImdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsIiwiZ2x5cGhP
cmllbnRhdGlvblZlcnRpY2FsIiwiZ2x5cGhSZWYiLCJncmFkaWVudFRyYW5zZm9ybSIsImdyYWRp
ZW50VW5pdHMiLCJoYW5naW5nIiwiaG9yaXpBZHZYIiwiaG9yaXpPcmlnaW5YIiwiaWRlb2dyYXBo
aWMiLCJpbWFnZVJlbmRlcmluZyIsImluIiwiaW4yIiwiaW50ZXJjZXB0IiwiazEiLCJrMiIsImsz
IiwiazQiLCJrZXJuZWxNYXRyaXgiLCJrZXJuZWxVbml0TGVuZ3RoIiwia2VybmluZyIsImtleVBv
aW50cyIsImtleVNwbGluZXMiLCJrZXlUaW1lcyIsImxlbmd0aEFkanVzdCIsImxldHRlclNwYWNp
bmciLCJsaWdodGluZ0NvbG9yIiwibGltaXRpbmdDb25lQW5nbGUiLCJsb2NhbCIsIm1hcmtlckVu
ZCIsIm1hcmtlck1pZCIsIm1hcmtlclN0YXJ0IiwibWFya2VySGVpZ2h0IiwibWFya2VyVW5pdHMi
LCJtYXJrZXJXaWR0aCIsIm1hc2siLCJtYXNrQ29udGVudFVuaXRzIiwibWFza1VuaXRzIiwibWF0
aGVtYXRpY2FsIiwibW9kZSIsIm51bU9jdGF2ZXMiLCJvcGVyYXRvciIsIm9yaWVudCIsIm9yaWVu
dGF0aW9uIiwib3JpZ2luIiwib3ZlcmZsb3ciLCJvdmVybGluZVBvc2l0aW9uIiwib3ZlcmxpbmVU
aGlja25lc3MiLCJwYWludE9yZGVyIiwicGFub3NlMSIsInBhdGhMZW5ndGgiLCJwYXR0ZXJuQ29u
dGVudFVuaXRzIiwicGF0dGVyblRyYW5zZm9ybSIsInBhdHRlcm5Vbml0cyIsInBvaW50ZXJFdmVu
dHMiLCJwb2ludHMiLCJwb2ludHNBdFgiLCJwb2ludHNBdFkiLCJwb2ludHNBdFoiLCJwcmVzZXJ2
ZUFscGhhIiwicHJlc2VydmVBc3BlY3RSYXRpbyIsInByaW1pdGl2ZVVuaXRzIiwiciIsInJhZGl1
cyIsInJlZlgiLCJyZWZZIiwicmVuZGVyaW5nSW50ZW50IiwicmVwZWF0Q291bnQiLCJyZXBlYXRE
dXIiLCJyZXF1aXJlZEV4dGVuc2lvbnMiLCJyZXF1aXJlZEZlYXR1cmVzIiwicmVzdGFydCIsInJv
dGF0ZSIsInJ4IiwicnkiLCJzY2FsZSIsInNlZWQiLCJzaGFwZVJlbmRlcmluZyIsInNsb3BlIiwi
c3BhY2luZyIsInNwZWN1bGFyQ29uc3RhbnQiLCJzcGVjdWxhckV4cG9uZW50Iiwic3BlZWQiLCJz
cHJlYWRNZXRob2QiLCJzdGREZXZpYXRpb24iLCJzdGVtaCIsInN0ZW12Iiwic3RpdGNoVGlsZXMi
LCJzdG9wQ29sb3IiLCJzdHJpa2V0aHJvdWdoUG9zaXRpb24iLCJzdHJpa2V0aHJvdWdoVGhpY2tu
ZXNzIiwic3Ryb2tlIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZUxpbmVqb2luIiwic3VyZmFjZVNj
YWxlIiwic3lzdGVtTGFuZ3VhZ2UiLCJ0YWJsZVZhbHVlcyIsInRhcmdldFgiLCJ0YXJnZXRZIiwi
dGV4dEFuY2hvciIsInRleHREZWNvcmF0aW9uIiwidGV4dFJlbmRlcmluZyIsInRleHRMZW5ndGgi
LCJ1MSIsInUyIiwidW5kZXJsaW5lUG9zaXRpb24iLCJ1bmRlcmxpbmVUaGlja25lc3MiLCJ1bmlj
b2RlIiwidW5pY29kZUJpZGkiLCJ1bmljb2RlUmFuZ2UiLCJ1bml0c1BlckVtIiwidkFscGhhYmV0
aWMiLCJ2SGFuZ2luZyIsInZJZGVvZ3JhcGhpYyIsInZNYXRoZW1hdGljYWwiLCJ2ZWN0b3JFZmZl
Y3QiLCJ2ZXJ0QWR2WSIsInZlcnRPcmlnaW5YIiwidmVydE9yaWdpblkiLCJ2aWV3Qm94Iiwidmll
d1RhcmdldCIsInZpc2liaWxpdHkiLCJ3aWR0aHMiLCJ3b3JkU3BhY2luZyIsIndyaXRpbmdNb2Rl
IiwieEhlaWdodCIsIngxIiwieDIiLCJ4Q2hhbm5lbFNlbGVjdG9yIiwieGxpbmtBY3R1YXRlIiwi
eGxpbmtBcmNyb2xlIiwieGxpbmtIcmVmIiwieGxpbmtSb2xlIiwieGxpbmtTaG93IiwieGxpbmtU
aXRsZSIsInhsaW5rVHlwZSIsInhtbEJhc2UiLCJ4bWxucyIsInhtbG5zWGxpbmsiLCJ4bWxMYW5n
IiwieG1sU3BhY2UiLCJ5MSIsInkyIiwieUNoYW5uZWxTZWxlY3RvciIsInoiLCJ6b29tQW5kUGFu
IiwidG9wIiwiYm91bmRpbmdUb3AiLCJsZWZ0IiwiYm91bmRpbmdMZWZ0IiwiY29uc3RydWN0U2Vs
ZWN0RXZlbnQiLCJtb3VzZURvd24iLCJjdXJyZW50U2VsZWN0aW9uIiwibGFzdFNlbGVjdGlvbiIs
InNraXBTZWxlY3Rpb25DaGFuZ2VFdmVudCIsImhhc0xpc3RlbmVyIiwiU3ludGhldGljQW5pbWF0
aW9uRXZlbnQiLCJTeW50aGV0aWNDbGlwYm9hcmRFdmVudCIsIlN5bnRoZXRpY0ZvY3VzRXZlbnQi
LCJTeW50aGV0aWNLZXlib2FyZEV2ZW50IiwiU3ludGhldGljRHJhZ0V2ZW50IiwiU3ludGhldGlj
VG91Y2hFdmVudCIsIlN5bnRoZXRpY1RyYW5zaXRpb25FdmVudCIsIlN5bnRoZXRpY1doZWVsRXZl
bnQiLCJ0b3BMZXZlbEV2ZW50c1RvRGlzcGF0Y2hDb25maWciLCJjYXBpdGFsaXplZEV2ZW50Iiwi
b25FdmVudCIsInRvcEV2ZW50Iiwib25DbGlja0xpc3RlbmVycyIsIkV2ZW50Q29uc3RydWN0b3Ii
LCJBbmltYXRpb25FdmVudEludGVyZmFjZSIsImFuaW1hdGlvbk5hbWUiLCJlbGFwc2VkVGltZSIs
InBzZXVkb0VsZW1lbnQiLCJDbGlwYm9hcmRFdmVudEludGVyZmFjZSIsImNsaXBib2FyZERhdGEi
LCJDb21wb3NpdGlvbkV2ZW50SW50ZXJmYWNlIiwiRHJhZ0V2ZW50SW50ZXJmYWNlIiwiZGF0YVRy
YW5zZmVyIiwiRm9jdXNFdmVudEludGVyZmFjZSIsIklucHV0RXZlbnRJbnRlcmZhY2UiLCJnZXRF
dmVudEtleSIsIktleWJvYXJkRXZlbnRJbnRlcmZhY2UiLCJyZXBlYXQiLCJsb2NhbGUiLCJUb3Vj
aEV2ZW50SW50ZXJmYWNlIiwidG91Y2hlcyIsInRhcmdldFRvdWNoZXMiLCJjaGFuZ2VkVG91Y2hl
cyIsIlRyYW5zaXRpb25FdmVudEludGVyZmFjZSIsIldoZWVsRXZlbnRJbnRlcmZhY2UiLCJkZWx0
YVgiLCJ3aGVlbERlbHRhWCIsImRlbHRhWSIsIndoZWVsRGVsdGFZIiwid2hlZWxEZWx0YSIsImRl
bHRhWiIsImRlbHRhTW9kZSIsImwiLCJNT0QiLCJpc0VtcHR5IiwiaXNOb25OdW1lcmljIiwiY29t
cG9uZW50T3JFbGVtZW50IiwiZmxhdHRlblNpbmdsZUNoaWxkSW50b0NvbnRleHQiLCJub3JtYWxp
emVLZXkiLCJ0cmFuc2xhdGVUb0tleSIsIkVzYyIsIlNwYWNlYmFyIiwiTGVmdCIsIlVwIiwiUmln
aHQiLCJEb3duIiwiRGVsIiwiV2luIiwiTWVudSIsIkFwcHMiLCJTY3JvbGwiLCJNb3pQcmludGFi
bGVLZXkiLCI4IiwiOSIsIjEyIiwiMTMiLCIxNiIsIjE3IiwiMTgiLCIxOSIsIjIwIiwiMjciLCIz
MiIsIjMzIiwiMzQiLCIzNSIsIjM2IiwiMzciLCIzOCIsIjM5IiwiNDAiLCI0NSIsIjQ2IiwiMTEy
IiwiMTEzIiwiMTE0IiwiMTE1IiwiMTE2IiwiMTE3IiwiMTE4IiwiMTE5IiwiMTIwIiwiMTIxIiwi
MTIyIiwiMTIzIiwiMTQ0IiwiMTQ1IiwiMjI0IiwiZ2V0TGVhZk5vZGUiLCJnZXRTaWJsaW5nTm9k
ZSIsIm5vZGVTdGFydCIsIm5vZGVFbmQiLCJtYWtlUHJlZml4TWFwIiwic3R5bGVQcm9wIiwicHJl
Zml4ZWRFdmVudE5hbWVzIiwidmVuZG9yUHJlZml4ZXMiLCJwcmVmaXhNYXAiLCJhbmltYXRpb25l
bmQiLCJhbmltYXRpb25pdGVyYXRpb24iLCJhbmltYXRpb25zdGFydCIsInRyYW5zaXRpb25lbmQi
LCJhbmltYXRpb24iLCJ0cmFuc2l0aW9uIiwiX1Byb3ZpZGVyJGNoaWxkQ29udGV4Iiwic3ViS2V5
IiwiZmFjdG9yaWVzIiwic3RyaWN0RXF1YWwiLCJjcmVhdGVDb25uZWN0IiwiX3JlZiRjb25uZWN0
SE9DIiwiY29ubmVjdEhPQyIsIl9yZWYkbWFwU3RhdGVUb1Byb3BzRiIsIm1hcFN0YXRlVG9Qcm9w
c0ZhY3RvcmllcyIsIl9tYXBTdGF0ZVRvUHJvcHMyIiwiX3JlZiRtYXBEaXNwYXRjaFRvUHJvIiwi
bWFwRGlzcGF0Y2hUb1Byb3BzRmFjdG9yaWVzIiwiX21hcERpc3BhdGNoVG9Qcm9wczIiLCJfcmVm
JG1lcmdlUHJvcHNGYWN0b3IiLCJtZXJnZVByb3BzRmFjdG9yaWVzIiwiX21lcmdlUHJvcHMyIiwi
X3JlZiRzZWxlY3RvckZhY3RvcnkiLCJfc2VsZWN0b3JGYWN0b3J5MiIsIm1hcFN0YXRlVG9Qcm9w
cyIsIm1hcERpc3BhdGNoVG9Qcm9wcyIsIm1lcmdlUHJvcHMiLCJfcmVmMiRwdXJlIiwicHVyZSIs
Il9yZWYyJGFyZVN0YXRlc0VxdWFsIiwiYXJlU3RhdGVzRXF1YWwiLCJfcmVmMiRhcmVPd25Qcm9w
c0VxdWEiLCJhcmVPd25Qcm9wc0VxdWFsIiwiX3NoYWxsb3dFcXVhbDIiLCJfcmVmMiRhcmVTdGF0
ZVByb3BzRXEiLCJhcmVTdGF0ZVByb3BzRXF1YWwiLCJfcmVmMiRhcmVNZXJnZWRQcm9wc0UiLCJh
cmVNZXJnZWRQcm9wc0VxdWFsIiwiZXh0cmFPcHRpb25zIiwiaW5pdE1hcFN0YXRlVG9Qcm9wcyIs
ImluaXRNYXBEaXNwYXRjaFRvUHJvcHMiLCJpbml0TWVyZ2VQcm9wcyIsIl9zaGFsbG93RXF1YWwi
LCJfbWFwRGlzcGF0Y2hUb1Byb3BzIiwiX21hcFN0YXRlVG9Qcm9wcyIsIl9tZXJnZVByb3BzIiwi
X3NlbGVjdG9yRmFjdG9yeSIsIndoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc0Z1bmN0aW9uIiwiX3dy
YXBNYXBUb1Byb3BzIiwid2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lzTWlzc2luZyIsIndoZW5NYXBE
aXNwYXRjaFRvUHJvcHNJc09iamVjdCIsIl9yZWR1eCIsIndoZW5NYXBTdGF0ZVRvUHJvcHNJc0Z1
bmN0aW9uIiwid2hlbk1hcFN0YXRlVG9Qcm9wc0lzTWlzc2luZyIsImRlZmF1bHRNZXJnZVByb3Bz
Iiwic3RhdGVQcm9wcyIsImRpc3BhdGNoUHJvcHMiLCJ3cmFwTWVyZ2VQcm9wc0Z1bmMiLCJoYXNS
dW5PbmNlIiwibWVyZ2VkUHJvcHMiLCJuZXh0TWVyZ2VkUHJvcHMiLCJ3aGVuTWVyZ2VQcm9wc0lz
RnVuY3Rpb24iLCJ3aGVuTWVyZ2VQcm9wc0lzT21pdHRlZCIsImltcHVyZUZpbmFsUHJvcHNTZWxl
Y3RvckZhY3RvcnkiLCJwdXJlRmluYWxQcm9wc1NlbGVjdG9yRmFjdG9yeSIsImhhbmRsZUZpcnN0
Q2FsbCIsImZpcnN0U3RhdGUiLCJmaXJzdE93blByb3BzIiwiaGFzUnVuQXRMZWFzdE9uY2UiLCJo
YW5kbGVOZXdQcm9wc0FuZE5ld1N0YXRlIiwiaGFuZGxlTmV3UHJvcHMiLCJoYW5kbGVOZXdTdGF0
ZSIsIm5leHRTdGF0ZVByb3BzIiwic3RhdGVQcm9wc0NoYW5nZWQiLCJoYW5kbGVTdWJzZXF1ZW50
Q2FsbHMiLCJuZXh0T3duUHJvcHMiLCJwcm9wc0NoYW5nZWQiLCJzdGF0ZUNoYW5nZWQiLCJmaW5h
bFByb3BzU2VsZWN0b3JGYWN0b3J5IiwiX3ZlcmlmeVN1YnNlbGVjdG9ycyIsInZlcmlmeSIsInZl
cmlmeVN1YnNlbGVjdG9ycyIsImNyZWF0ZUxpc3RlbmVyQ29sbGVjdGlvbiIsImNsZWFyIiwiQ0xF
QVJFRCIsIm5vdGlmeSIsIm51bGxMaXN0ZW5lcnMiLCJTdWJzY3JpcHRpb24iLCJhZGROZXN0ZWRT
dWIiLCJlbmFibGUiLCJyYXdBc2FwIiwidGFzayIsInJlcXVlc3RGbHVzaCIsImZsdXNoaW5nIiwi
Zmx1c2giLCJjdXJyZW50SW5kZXgiLCJjYXBhY2l0eSIsInNjYW4iLCJuZXdMZW5ndGgiLCJtYWtl
UmVxdWVzdENhbGxGcm9tTXV0YXRpb25PYnNlcnZlciIsInRvZ2dsZSIsIkJyb3dzZXJNdXRhdGlv
bk9ic2VydmVyIiwib2JzZXJ2ZSIsImNoYXJhY3RlckRhdGEiLCJtYWtlUmVxdWVzdENhbGxGcm9t
VGltZXIiLCJoYW5kbGVUaW1lciIsInRpbWVvdXRIYW5kbGUiLCJjbGVhckludGVydmFsIiwiaW50
ZXJ2YWxIYW5kbGUiLCJzZXRJbnRlcnZhbCIsIk11dGF0aW9uT2JzZXJ2ZXIiLCJXZWJLaXRNdXRh
dGlvbk9ic2VydmVyIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJuZXdPYmoiLCJjbGVhckNv
bXBsZXRlZCIsImNvbXBsZXRlQWxsIiwiY29tcGxldGVUb2RvIiwiZWRpdFRvZG8iLCJkZWxldGVU
b2RvIiwiYWRkVG9kbyIsIl9BY3Rpb25UeXBlcyIsInR5cGVzIiwiX2RlZmluZVByb3BlcnR5Iiwi
X0ZJTFRFUl9USVRMRVMiLCJfVG9kb0ZpbHRlcnMiLCJGSUxURVJfVElUTEVTIiwiRm9vdGVyIiwi
YWN0aXZlQ291bnQiLCJpdGVtV29yZCIsIl9wcm9wcyIsInNlbGVjdGVkRmlsdGVyIiwib25TaG93
Iiwib25DbGljayIsIl9wcm9wczIiLCJjb21wbGV0ZWRDb3VudCIsIm9uQ2xlYXJDb21wbGV0ZWQi
LCJfdGhpczIiLCJyZW5kZXJUb2RvQ291bnQiLCJyZW5kZXJGaWx0ZXJMaW5rIiwicmVuZGVyQ2xl
YXJCdXR0b24iLCJfVG9kb1RleHRJbnB1dCIsIl9Ub2RvVGV4dElucHV0MiIsIkhlYWRlciIsImhh
bmRsZVNhdmUiLCJfVE9ET19GSUxURVJTIiwiX1RvZG9JdGVtIiwiX1RvZG9JdGVtMiIsIl9Gb290
ZXIiLCJfRm9vdGVyMiIsIlRPRE9fRklMVEVSUyIsInRvZG8iLCJjb21wbGV0ZWQiLCJNYWluU2Vj
dGlvbiIsImhhbmRsZUNsZWFyQ29tcGxldGVkIiwiYWN0aW9ucyIsImhhbmRsZVNob3ciLCJ0b2Rv
cyIsImZpbHRlcmVkVG9kb3MiLCJyZW5kZXJUb2dnbGVBbGwiLCJyZW5kZXJGb290ZXIiLCJUb2Rv
SXRlbSIsImhhbmRsZURvdWJsZUNsaWNrIiwib25Eb3VibGVDbGljayIsIl9yZWFjdFJlZHV4Iiwi
X0hlYWRlciIsIl9IZWFkZXIyIiwiX01haW5TZWN0aW9uIiwiX01haW5TZWN0aW9uMiIsIl9hY3Rp
b25zIiwiVG9kb0FjdGlvbnMiLCJBcHAiLCJfcmVhY3REb20iLCJfQXBwIiwiX0FwcDIiLCJfcmVk
dWNlcnMiLCJfcmVkdWNlcnMyIiwiZ2V0RWxlbWVudEJ5SWQiLCJfdG9kb3MiLCJfdG9kb3MyIiwi
cm9vdFJlZHVjZXIiLCJfdG9Db25zdW1hYmxlQXJyYXkiLCJhcnIyIiwidiIsIm1heElkIiwiYXJl
QWxsTWFya2VkIiwiX3R5cGVvZiIsInZhbHVlUHJvbWlzZSIsIlRSVUUiLCJGQUxTRSIsIk5VTEwi
LCJVTkRFRklORUQiLCJaRVJPIiwiRU1QVFlTVFJJTkciLCJhbGwiLCJyZW1haW5pbmciLCJyYWNl
IiwiZGlzYWJsZSIsIm9uVW5oYW5kbGVkIiwiYWxsUmVqZWN0aW9ucyIsIm1hdGNoV2hpdGVsaXN0
IiwicmVqZWN0aW9ucyIsIndoaXRlbGlzdCIsIkRFRkFVTFRfV0hJVEVMSVNUIiwiZGlzcGxheUlk
IiwibG9nZ2VkIiwibG9nRXJyb3IiLCJvbkhhbmRsZWQiLCJ3YXJuIiwiXzcyIiwiZXJyU3RyIiwi
bGluZSIsInNvbWUiLCJjbHMiLCJSYW5nZUVycm9yIiwid2VicGFja1BvbHlmaWxsIiwiZGVwcmVj
YXRlIiwicGF0aHMiLCJub3JtYWxpemVOYW1lIiwibm9ybWFsaXplVmFsdWUiLCJpdGVyYXRvckZv
ciIsIml0ZW1zIiwic2hpZnQiLCJzdXBwb3J0IiwiaXRlcmFibGUiLCJIZWFkZXJzIiwiYXBwZW5k
IiwiY29uc3VtZWQiLCJib2R5VXNlZCIsImZpbGVSZWFkZXJSZWFkeSIsInJlYWRlciIsIm9ubG9h
ZCIsIm9uZXJyb3IiLCJyZWFkQmxvYkFzQXJyYXlCdWZmZXIiLCJibG9iIiwiRmlsZVJlYWRlciIs
InJlYWRBc0FycmF5QnVmZmVyIiwicmVhZEJsb2JBc1RleHQiLCJyZWFkQXNUZXh0IiwiQm9keSIs
Il9pbml0Qm9keSIsIl9ib2R5SW5pdCIsIl9ib2R5VGV4dCIsIkJsb2IiLCJpc1Byb3RvdHlwZU9m
IiwiX2JvZHlCbG9iIiwiZm9ybURhdGEiLCJGb3JtRGF0YSIsIl9ib2R5Rm9ybURhdGEiLCJzZWFy
Y2hQYXJhbXMiLCJVUkxTZWFyY2hQYXJhbXMiLCJhcnJheUJ1ZmZlciIsIkFycmF5QnVmZmVyIiwi
cmVqZWN0ZWQiLCJkZWNvZGUiLCJqc29uIiwicGFyc2UiLCJub3JtYWxpemVNZXRob2QiLCJ1cGNh
c2VkIiwibWV0aG9kcyIsIlJlcXVlc3QiLCJjcmVkZW50aWFscyIsInJlZmVycmVyIiwiYnl0ZXMi
LCJkZWNvZGVVUklDb21wb25lbnQiLCJ4aHIiLCJoZWFkIiwiZ2V0QWxsUmVzcG9uc2VIZWFkZXJz
IiwiaGVhZGVyIiwiUmVzcG9uc2UiLCJib2R5SW5pdCIsInN0YXR1cyIsIm9rIiwic3RhdHVzVGV4
dCIsImZldGNoIiwiZ2V0QWxsIiwidGhpc0FyZyIsImNsb25lIiwicmVzcG9uc2UiLCJyZWRpcmVj
dFN0YXR1c2VzIiwicmVkaXJlY3QiLCJpbml0IiwicmVzcG9uc2VVUkwiLCJnZXRSZXNwb25zZUhl
YWRlciIsInJlcXVlc3QiLCJYTUxIdHRwUmVxdWVzdCIsInJlc3BvbnNlVGV4dCIsIm9udGltZW91
dCIsIndpdGhDcmVkZW50aWFscyIsInJlc3BvbnNlVHlwZSIsInNldFJlcXVlc3RIZWFkZXIiLCJz
ZW5kIiwicG9seWZpbGwiLCJlc2NhcGVVc2VyUHJvdmlkZWRLZXkiLCJ1c2VyUHJvdmlkZWRLZXlF
c2NhcGVSZWdleCIsIkZvckVhY2hCb29rS2VlcGluZyIsImZvckVhY2hGdW5jdGlvbiIsImZvckVh
Y2hDb250ZXh0IiwiZm9yRWFjaFNpbmdsZUNoaWxkIiwiZm9yRWFjaENoaWxkcmVuIiwiZm9yRWFj
aEZ1bmMiLCJNYXBCb29rS2VlcGluZyIsIm1hcFJlc3VsdCIsImtleVByZWZpeCIsIm1hcEZ1bmN0
aW9uIiwibWFwQ29udGV4dCIsIm1hcFNpbmdsZUNoaWxkSW50b0NvbnRleHQiLCJjaGlsZEtleSIs
Im1hcHBlZENoaWxkIiwibWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbCIsImVzY2FwZWRQcmVm
aXgiLCJtYXBDaGlsZHJlbiIsImZvckVhY2hTaW5nbGVDaGlsZER1bW15IiwiY291bnRDaGlsZHJl
biIsImNyZWF0ZURPTUZhY3RvcnkiLCJhYmJyIiwiYWRkcmVzcyIsImFydGljbGUiLCJhc2lkZSIs
ImF1ZGlvIiwiYmRpIiwiYmRvIiwiYmlnIiwiYmxvY2txdW90ZSIsImNhbnZhcyIsImRhdGFsaXN0
IiwiZGQiLCJkZWwiLCJkZXRhaWxzIiwiZGZuIiwiZGlhbG9nIiwiZGwiLCJkdCIsImVtIiwiZmll
bGRzZXQiLCJmaWdjYXB0aW9uIiwiZmlndXJlIiwiZm9vdGVyIiwiaDEiLCJoMiIsImgzIiwiaDQi
LCJoNSIsImg2IiwiaGdyb3VwIiwiaWZyYW1lIiwiaW5zIiwia2JkIiwibGkiLCJtYWluIiwibWFy
ayIsIm1lbnUiLCJtZXRlciIsIm5hdiIsIm5vc2NyaXB0Iiwib2wiLCJvdXRwdXQiLCJwaWN0dXJl
IiwicHJvZ3Jlc3MiLCJxIiwicnAiLCJydCIsInJ1YnkiLCJzYW1wIiwic2NyaXB0Iiwic2VjdGlv
biIsInNtYWxsIiwic3Ryb25nIiwic3ViIiwic3VwIiwidGFibGUiLCJ1IiwidWwiLCJ2YXIiLCJ2
aWRlbyIsImNpcmNsZSIsImRlZnMiLCJlbGxpcHNlIiwiZyIsImxpbmVhckdyYWRpZW50IiwicG9s
eWdvbiIsInBvbHlsaW5lIiwicmFkaWFsR3JhZGllbnQiLCJyZWN0Iiwic3RvcCIsInRzcGFuIiwi
X3JlcXVpcmUiLCJfcmVxdWlyZTIiLCJnZXROZXh0RGVidWdJRCIsIm5leHREZWJ1Z0lEIiwibG93
UHJpb3JpdHlXYXJuaW5nIiwibWlkZGxld2FyZXMiLCJfZGlzcGF0Y2giLCJjaGFpbiIsIm1pZGRs
ZXdhcmVBUEkiLCJtaWRkbGV3YXJlIiwiYmluZEFjdGlvbkNyZWF0b3IiLCJhY3Rpb25DcmVhdG9y
IiwiYWN0aW9uQ3JlYXRvcnMiLCJib3VuZEFjdGlvbkNyZWF0b3JzIiwiZ2V0VW5kZWZpbmVkU3Rh
dGVFcnJvck1lc3NhZ2UiLCJhY3Rpb25UeXBlIiwiYWN0aW9uTmFtZSIsImFzc2VydFJlZHVjZXJT
aGFwZSIsInJlZHVjZXJzIiwicmVkdWNlcktleXMiLCJmaW5hbFJlZHVjZXJzIiwiZmluYWxSZWR1
Y2VyS2V5cyIsInNoYXBlQXNzZXJ0aW9uRXJyb3IiLCJoYXNDaGFuZ2VkIiwiX2kiLCJwcmV2aW91
c1N0YXRlRm9yS2V5IiwibmV4dFN0YXRlRm9yS2V5IiwiZXJyb3JNZXNzYWdlIiwiX3BvbnlmaWxs
IiwiX3BvbnlmaWxsMiIsInN5bWJvbE9ic2VydmFibGVQb255ZmlsbCIsIl9TeW1ib2wiLCJfX3dl
YnBhY2tfbW9kdWxlX3RlbXBsYXRlX2FyZ3VtZW50XzBfXyIsIm9uZUFyZ3VtZW50UG9vbGVyIiwi
Y29weUZpZWxkc0Zyb20iLCJLbGFzcyIsImluc3RhbmNlUG9vbCIsImExIiwiYTIiLCJ0aHJlZUFy
Z3VtZW50UG9vbGVyIiwiYTMiLCJhNCIsInN0YW5kYXJkUmVsZWFzZXIiLCJwb29sU2l6ZSIsIkRF
RkFVTFRfUE9PTF9TSVpFIiwiREVGQVVMVF9QT09MRVIiLCJDb3B5Q29uc3RydWN0b3IiLCJwb29s
ZXIiLCJOZXdLbGFzcyJdLCJtYXBwaW5ncyI6IkNBQVMsU0FBVUEsR0NJbkIsUUFBQUMsR0FBQUMs
R0FHQSxHQUFBQyxFQUFBRCxHQUNBLE1BQUFDLEdBQUFELEdBQUFFLE9BR0EsSUFBQUMsR0FBQUYs
RUFBQUQsSUFDQUUsV0FDQUUsR0FBQUosRUFDQUssUUFBQSxFQVVBLE9BTkFQLEdBQUFFLEdBQUFN
LEtBQUFILEVBQUFELFFBQUFDLElBQUFELFFBQUFILEdBR0FJLEVBQUFFLFFBQUEsRUFHQUYsRUFB
QUQsUUF2QkEsR0FBQUQsS0FxQ0EsT0FUQUYsR0FBQVEsRUFBQVQsRUFHQUMsRUFBQVMsRUFBQVAs
RUFHQUYsRUFBQVUsRUFBQSxLQUdBVixFQUFBLElESVcsU0FBU0QsR0FFbkIsSUFBSSxHQUFJWSxL
QUFLWixHQUNaLEdBQUdhLE9BQU9DLFVBQVVDLGVBQWVQLEtBQUtSLEVBQVNZLEdBQ2hELGFBQWNa
LEdBQVFZLElBQ3RCLElBQUssV0FBWSxLQUNqQixLQUFLLFNBRUpaLEVBQVFZLEdBQU0sU0FBU0ks
R0FDdEIsR0FBSUMsR0FBT0QsRUFBR0UsTUFBTSxHQUFJQyxFQUFLbkIsRUFBUWdCLEVBQUcsR0FD
eEMsT0FBTyxVQUFVSSxFQUFFQyxFQUFFWCxHQUNwQlMsRUFBR0csTUFBTUMsTUFBT0gsRUFBRUMs
RUFBRVgsR0FBR2MsT0FBT1AsTUFFOUJqQixFQUFRWSxHQUNWLE1BQ0QsU0FFQ1osRUFBUVksR0FB
S1osRUFBUUEsRUFBUVksSUFLaEMsTUFBT1osS0FHRixTQUFTSyxFQUFRRCxFQUFTSCxHQUUvQkEs
RUFBb0IsS0FDcEJJLEVBQU9ELFFBQVVILEVBQW9CLE1BS2hDLFNBQVNJLEVBQVFELEVBQVNILEdF
akVoQyxZQXVCQSxTQUFBd0IsR0FBQUMsRUFBQUMsRUFBQVAsRUFBQUMsRUFBQVgsRUFBQWtCLEVB
QUFDLEVBQUFDLEdBR0EsR0FGQUMsRUFBQUosSUFFQUQsRUFBQSxDQUNBLEdBQUFNLEVBQ0EsSUFB
QUMsU0FBQU4sRUFDQUssRUFBQSxHQUFBRSxPQUFBLHFJQUNLLENBQ0wsR0FBQWpCLElBQUFHLEVB
QUFDLEVBQUFYLEVBQUFrQixFQUFBQyxFQUFBQyxHQUNBSyxFQUFBLENBQ0FILEdBQUEsR0FBQUUs
T0FBQVAsRUFBQVMsUUFBQSxpQkFDQSxNQUFBbkIsR0FBQWtCLFFBRUFILEVBQUFLLEtBQUEsc0JB
SUEsS0FEQUwsR0FBQU0sWUFBQSxFQUNBTixHQTNCQSxHQUFBRCxHQUFBLFNBQUFKLElBK0JBdEIs
R0FBQUQsUUFBQXFCLEdGaUZNLFNBQVNwQixFQUFRRCxFQUFTSCxHRzdIaEMsWUFFQSxJQUFBc0Ms
R0FBQXRDLEVBQUEsR0FTQXVDLEVBQUFELENBMENBbEMsR0FBQUQsUUFBQW9DLEdINklNLFNBQVNu
QyxFQUFRRCxHSWxNdkIsWUFTQSxTQUFBcUMsR0FBQUMsR0FLQSxPQUpBQyxHQUFBQyxVQUFBQyxP
QUFBLEVBRUFDLEVBQUEseUJBQUFKLEVBQUEsNkVBQW9EQSxFQUVwREssRUFBQSxFQUFzQkEsRUFB
QUosRUFBbUJJLElBQ3pDRCxHQUFBLFdBQUFFLG1CQUFBSixVQUFBRyxFQUFBLEdBR0FELElBQUEs
Z0hBRUEsSUFBQWQsR0FBQSxHQUFBRSxPQUFBWSxFQUlBLE1BSEFkLEdBQUFLLEtBQUEsc0JBQ0FM
LEVBQUFNLFlBQUEsRUFFQU4sRUFHQTNCLEVBQUFELFFBQUFxQyxHSmtOTSxTQUFTcEMsRUFBUUQs
R0tqUHZCLFlBTUEsU0FBQTZDLEdBQUFDLEdBQ0EsVUFBQUEsR0FBQWpCLFNBQUFpQixFQUNBLFNB
QUFDLFdBQUEsd0RBR0EsT0FBQXRDLFFBQUFxQyxHQUdBLFFBQUFFLEtBQ0EsSUFDQSxJQUFBdkMs
T0FBQXdDLE9BQ0EsUUFNQSxJQUFBQyxHQUFBLEdBQUFDLFFBQUEsTUFFQSxJQURBRCxFQUFBLFFB
Q0EsTUFBQXpDLE9BQUEyQyxvQkFBQUYsR0FBQSxHQUNBLFFBS0EsUUFEQUcsTUFDQTdDLEVBQUEs
RUFBaUJBLEVBQUEsR0FBUUEsSUFDekI2QyxFQUFBLElBQUFGLE9BQUFHLGFBQUE5QyxLQUVBLElB
QUErQyxHQUFBOUMsT0FBQTJDLG9CQUFBQyxHQUFBRyxJQUFBLFNBQUFDLEdBQ0EsTUFBQUosR0FB
QUksSUFFQSxtQkFBQUYsRUFBQUcsS0FBQSxJQUNBLFFBSUEsSUFBQUMsS0FJQSxPQUhBLHVCQUFB
QyxNQUFBLElBQUFDLFFBQUEsU0FBQUMsR0FDQUgsRUFBQUcsT0FHQSx5QkFEQXJELE9BQUFzRCxL
QUFBdEQsT0FBQXdDLFVBQWtDVSxJQUFBRCxLQUFBLElBTWhDLE1BQUFNLEdBRUYsVUFwREEsR0FB
QUMsR0FBQXhELE9BQUF3RCxzQkFDQXRELEVBQUFGLE9BQUFDLFVBQUFDLGVBQ0F1RCxFQUFBekQs
T0FBQUMsVUFBQXlELG9CQXNEQWxFLEdBQUFELFFBQUFnRCxJQUFBdkMsT0FBQXdDLE9BQUEsU0FB
QW1CLEVBQUFDLEdBS0EsT0FKQUMsR0FFQUMsRUFEQUMsRUFBQTNCLEVBQUF1QixHQUdBSyxFQUFB
LEVBQWdCQSxFQUFBakMsVUFBQUMsT0FBc0JnQyxJQUFBLENBQ3RDSCxFQUFBN0QsT0FBQStCLFVB
QUFpQyxHQUVBLFFBQUFDLEtBQUFKLEdBQ0EzRCxFQUFBUCxLQUFBa0UsRUFBQUksS0FDQUYsRUFB
QUUsR0FBQUosRUFBQUksR0FJQSxJQUFBVCxFQUFBLENBQ0FNLEVBQUFOLEVBQUFLLEVBQ0EsUUFB
QTlELEdBQUEsRUFBa0JBLEVBQUErRCxFQUFBOUIsT0FBb0JqQyxJQUN0QzBELEVBQUE5RCxLQUFB
a0UsRUFBQUMsRUFBQS9ELE1BQ0FnRSxFQUFBRCxFQUFBL0QsSUFBQThELEVBQUFDLEVBQUEvRCxN
QU1BLE1BQUFnRSxLTCtQTSxTQUFTdkUsRUFBUUQsRUFBU0gsR003VWhDLFlBaUJBLFNBQUE4RSxH
QUFBQyxFQUFBQyxHQUNBLFdBQUFELEVBQUFFLFVBQUFGLEVBQUFHLGFBQUFDLEtBQUE3QixPQUFB
MEIsSUFBQSxJQUFBRCxFQUFBRSxVQUFBRixFQUFBSyxZQUFBLGdCQUFBSixFQUFBLFNBQUFELEVB
QUFFLFVBQUFGLEVBQUFLLFlBQUEsaUJBQUFKLEVBQUEsSUFVQSxRQUFBSyxHQUFBQyxHQUVBLElB
REEsR0FBQUMsR0FDQUEsRUFBQUQsRUFBQUUsb0JBQ0FGLEVBQUFDLENBRUEsT0FBQUQsR0FPQSxR
QUFBRyxHQUFBQyxFQUFBWCxHQUNBLEdBQUFZLEdBQUFOLEVBQUFLLEVBQ0FDLEdBQUFDLFVBQUFi
LEVBQ0FBLEVBQUFjLEdBQUFGLEVBR0EsUUFBQUcsR0FBQUosR0FDQSxHQUFBWCxHQUFBVyxFQUFB
RSxTQUNBYixXQUNBQSxHQUFBYyxHQUNBSCxFQUFBRSxVQUFBLE1Ba0JBLFFBQUFHLEdBQUFMLEVB
QUFYLEdBQ0EsS0FBQVcsRUFBQU0sT0FBQUMsRUFBQUMscUJBQUEsQ0FHQSxHQUFBQyxHQUFBVCxF
QUFBVSxrQkFDQUMsRUFBQXRCLEVBQUF1QixVQUNBQyxHQUFBLE9BQUFuRSxLQUFBK0QsR0FDQSxH
QUFBQSxFQUFBckYsZUFBQXNCLEdBQUEsQ0FHQSxHQUFBb0UsR0FBQUwsRUFBQS9ELEdBQ0FxRSxF
QUFBcEIsRUFBQW1CLEdBQUFFLE1BQ0EsUUFBQUQsRUFBQSxDQUtBLEtBQVUsT0FBQUosRUFBb0JB
LElBQUFNLFlBQzlCLEdBQUE3QixFQUFBdUIsRUFBQUksR0FBQSxDQUNBaEIsRUFBQWUsRUFBQUgs
RUFDQSxTQUFBRSxHQUlBSyxFQUFBLEtBQUFILElBRUFmLEVBQUFNLFFBQUFDLEVBQUFDLHFCQU9B
LFFBQUFXLEdBQUE5QixHQUNBLEdBQUFBLEVBQUFjLEdBQ0EsTUFBQWQsR0FBQWMsRUFLQSxLQURB
LEdBQUFpQixPQUNBL0IsRUFBQWMsSUFBQSxDQUVBLEdBREFpQixFQUFBQyxLQUFBaEMsSUFDQUEs
RUFBQWlDLFdBS0EsV0FKQWpDLEtBQUFpQyxXQVVBLElBRkEsR0FBQUMsR0FDQXZCLEVBQ1FYLElB
QUFXLEVBQUFYLEVBQUFjLElBQTRDZCxFQUFBK0IsRUFBQUksTUFDcERELEVBQUF2QixFQUNBb0Is
RUFBQWxFLFFBQ0FtRCxFQUFBTCxFQUFBWCxFQUlBLE9BQUFrQyxHQU9BLFFBQUFFLEdBQUFwQyxH
QUNBLEdBQUFXLEdBQUFtQixFQUFBOUIsRUFDQSxjQUFBVyxLQUFBRSxZQUFBYixFQUNBVyxFQUVB
LEtBUUEsUUFBQTBCLEdBQUExQixHQUtBLEdBRkExRCxTQUFBMEQsRUFBQUUsVUFBQWdCLEVBQUEs
YUFFQWxCLEVBQUFFLFVBQ0EsTUFBQUYsR0FBQUUsU0FLQSxLQURBLEdBQUFrQixPQUNBcEIsRUFB
QUUsV0FDQWtCLEVBQUFDLEtBQUFyQixHQUNBQSxFQUFBMkIsWUFBQSxPQUFBVCxFQUFBLE1BQ0Fs
QixJQUFBMkIsV0FLQSxNQUFRUCxFQUFBbEUsT0FBZ0I4QyxFQUFBb0IsRUFBQUksTUFDeEJuQixF
QUFBTCxJQUFBRSxVQUdBLE9BQUFGLEdBQUFFLFVBektBLEdBQUFnQixHQUFBNUcsRUFBQSxHQUVB
c0gsRUFBQXRILEVBQUEsSUFDQXVILEVBQUF2SCxFQUFBLElBSUFtRixHQUZBbkYsRUFBQSxHQUVB
c0gsRUFBQUUsbUJBQ0F2QixFQUFBc0IsRUFFQTFCLEVBQUEsMkJBQUE0QixLQUFBQyxTQUFBQyxT
QUFBLElBQUExRyxNQUFBLEdBa0tBMkcsR0FDQWYsNkJBQ0FNLHNCQUNBQyxzQkFDQXJCLHFCQUNB
TixlQUNBSyxjQUdBMUYsR0FBQUQsUUFBQXlILEdONlZNLFNBQVN4SCxFQUFRRCxHT3BoQnZCLFlB
RUEsSUFBQTBILEtBQUEsbUJBQUFDLGlCQUFBQyxXQUFBRCxPQUFBQyxTQUFBQyxlQVFBQyxHQUVB
SixZQUVBSyxjQUFBLG1CQUFBQyxRQUVBQyxxQkFBQVAsTUFBQUMsT0FBQU8sbUJBQUFQLE9BQUFR
LGFBRUFDLGVBQUFWLEtBQUFDLE9BQUFVLE9BRUFDLFlBQUFaLEVBSUF6SCxHQUFBRCxRQUFBOEgs
R1BvaUJNLFNBQVM3SCxFQUFRRCxHUXRrQnZCLFlBYUEsU0FBQXVJLEdBQUFDLEdBQ0Esa0JBQ0Es
TUFBQUEsSUFTQSxHQUFBckcsR0FBQSxZQUVBQSxHQUFBc0csWUFBQUYsRUFDQXBHLEVBQUF1Ryxp
QkFBQUgsR0FBQSxHQUNBcEcsRUFBQXdHLGdCQUFBSixHQUFBLEdBQ0FwRyxFQUFBeUcsZ0JBQUFM
LEVBQUEsTUFDQXBHLEVBQUEwRyxnQkFBQSxXQUNBLE1BQUExSCxPQUVBZ0IsRUFBQTJHLG9CQUFB
LFNBQUFOLEdBQ0EsTUFBQUEsSUFHQXZJLEVBQUFELFFBQUFtQyxHUjRrQk0sU0FBU2xDLEVBQVFE
LEVBQVNILEdTdG1CaEMsWUFJQSxJQUFBa0osR0FBQSxJQU9BOUksR0FBQUQsU0FBa0IrSSxjVHVu
QlosU0FBUzlJLEVBQVFELEVBQVNILEdVbm9CaEMsWUFvQkEsU0FBQW1KLEtBQ0FDLEVBQUFDLDJC
QUFBQyxFQUFBLE9BQUExQyxFQUFBLE9BaUNBLFFBQUEyQyxLQUNBakksS0FBQWtJLDBCQUNBbEks
S0FBQW1JLHNCQUFBLEtBQ0FuSSxLQUFBb0ksY0FBQUMsRUFBQUMsWUFDQXRJLEtBQUF1SSxxQkFB
QVQsRUFBQUMsMEJBQUFPLFdBQ0EsR0F5QkEsUUFBQUUsR0FBQUMsRUFBQTVJLEVBQUFDLEVBQUFY
LEVBQUFrQixFQUFBQyxHQUVBLE1BREF1SCxLQUNBRyxFQUFBUSxlQUFBQyxFQUFBNUksRUFBQUMs
RUFBQVgsRUFBQWtCLEVBQUFDLEdBVUEsUUFBQW9JLEdBQUFDLEVBQUFDLEdBQ0EsTUFBQUQsR0FB
QUUsWUFBQUQsRUFBQUMsWUFHQSxRQUFBQyxHQUFBQyxHQUNBLEdBQUFDLEdBQUFELEVBQUFaLHFC
QUNBYSxLQUFBQyxFQUFBM0gsT0FBQWdFLEVBQUEsTUFBQTBELEVBQUFDLEVBQUEzSCxRQUFBLE9B
S0EySCxFQUFBQyxLQUFBUixHQU9BUyxHQUVBLFFBQUE5SixHQUFBLEVBQWlCQSxFQUFBMkosRUFB
UzNKLElBQUEsQ0FJMUIsR0FBQTJFLEdBQUFpRixFQUFBNUosR0FLQStKLEVBQUFwRixFQUFBcUYs
aUJBQ0FyRixHQUFBcUYsa0JBQUEsSUFFQSxJQUFBQyxFQUNBLElBQUFDLEVBQUFDLG1CQUFBLENB
Q0EsR0FBQUMsR0FBQXpGLENBRUFBLEdBQUEwRixnQkFBQUMsS0FBQUMseUJBQ0FILEVBQUF6RixF
QUFBRSxvQkFFQW9GLEVBQUEsaUJBQUFHLEVBQUFJLFVBQ0FDLFFBQUFDLEtBQUFULEdBU0EsR0FO
QVUsRUFBQUMseUJBQUFqRyxFQUFBK0UsRUFBQVIscUJBQUFZLEdBRUFHLEdBQ0FRLFFBQUFJLFFB
QUFaLEdBR0FGLEVBQ0EsT0FBQWUsR0FBQSxFQUFxQkEsRUFBQWYsRUFBQTlILE9BQXNCNkksSUFD
M0NwQixFQUFBWCxjQUFBZ0MsUUFBQWhCLEVBQUFlLEdBQUFuRyxFQUFBcUcsc0JBZ0NBLFFBQUFD
LEdBQUF0RyxHQVNBLE1BUkE2RCxLQVFBRyxFQUFBdUMsbUJBS0F0QixFQUFBeEQsS0FBQXpCLFFB
Q0EsTUFBQUEsRUFBQXdHLHFCQUNBeEcsRUFBQXdHLG1CQUFBckIsRUFBQSxTQU5BbkIsR0FBQVEs
ZUFBQThCLEVBQUF0RyxHQWNBLFFBQUF5RyxHQUFBaEMsRUFBQWlDLEdBQ0ExQyxFQUFBdUMsa0JB
QUEsT0FBQWpGLEVBQUEsT0FDQXFGLEVBQUFQLFFBQUEzQixFQUFBaUMsR0FDQUUsR0FBQSxFQTVN
QSxHQUFBdEYsR0FBQTVHLEVBQUEsR0FDQW1NLEVBQUFuTSxFQUFBLEdBRUEySixFQUFBM0osRUFB
QSxJQUNBb00sRUFBQXBNLEVBQUEsSUFDQTZLLEVBQUE3SyxFQUFBLElBQ0FzTCxFQUFBdEwsRUFB
QSxJQUNBcU0sRUFBQXJNLEVBQUEsSUFJQXVLLEdBRkF2SyxFQUFBLE9BR0F5SyxFQUFBLEVBQ0F3
QixFQUFBdEMsRUFBQUMsWUFDQXNDLEdBQUEsRUFFQTVDLEVBQUEsS0FNQWdELEdBQ0FDLFdBQUEs
V0FDQWpMLEtBQUFtSSxzQkFBQWMsRUFBQTNILFFBRUE0SixNQUFBLFdBQ0FsTCxLQUFBbUksd0JB
QUFjLEVBQUEzSCxRQU1BMkgsRUFBQWtDLE9BQUEsRUFBQW5MLEtBQUFtSSx1QkFDQWlELEtBRUFu
QyxFQUFBM0gsT0FBQSxJQUtBK0osR0FDQUosV0FBQSxXQUNBakwsS0FBQW9JLGNBQUFrRCxTQUVB
SixNQUFBLFdBQ0FsTCxLQUFBb0ksY0FBQW1ELGNBSUFDLEdBQUFSLEVBQUFLLEVBVUFSLEdBQUE1
QyxFQUFBMUksVUFBQXdMLEdBQ0FVLHVCQUFBLFdBQ0EsTUFBQUQsSUFHQUUsV0FBQSxXQUNBMUws
S0FBQW1JLHNCQUFBLEtBQ0FFLEVBQUFzRCxRQUFBM0wsS0FBQW9JLGVBQ0FwSSxLQUFBb0ksY0FB
QSxLQUNBTixFQUFBQywwQkFBQTRELFFBQUEzTCxLQUFBdUksc0JBQ0F2SSxLQUFBdUkscUJBQUEs
TUFHQXFELFFBQUEsU0FBQUMsRUFBQUMsRUFBQWpNLEdBR0EsTUFBQWtMLEdBQUFhLFFBQUEzTSxL
QUFBZSxVQUFBdUkscUJBQUFxRCxRQUFBNUwsS0FBQXVJLHFCQUFBc0QsRUFBQUMsRUFBQWpNLE1B
SUFpTCxFQUFBaUIsYUFBQTlELEVBdUVBLElBQUFtRCxHQUFBLFdBS0EsS0FBQW5DLEVBQUEzSCxR
QUFBc0osR0FBQSxDQUNBLEdBQUEzQixFQUFBM0gsT0FBQSxDQUNBLEdBQUF5SCxHQUFBZCxFQUFB
SyxXQUNBUyxHQUFBNkMsUUFBQTlDLEVBQUEsS0FBQUMsR0FDQWQsRUFBQTBELFFBQUE1QyxHQUdB
LEdBQUE2QixFQUFBLENBQ0FBLEdBQUEsQ0FDQSxJQUFBb0IsR0FBQXJCLENBQ0FBLEdBQUF0QyxF
QUFBQyxZQUNBMEQsRUFBQVQsWUFDQWxELEVBQUFzRCxRQUFBSyxNQXVDQUMsR0FDQUMsMkJBQUEs
U0FBQUMsR0FDQUEsRUFBQSxPQUFBN0csRUFBQSxPQUNBd0MsRUFBQUMsMEJBQUFvRSxHQUdBQyx1
QkFBQSxTQUFBQyxHQUNBQSxFQUFBLE9BQUEvRyxFQUFBLE9BQ0Esa0JBQUErRyxHQUFBN0QsZUFB
QWxELEVBQUEsY0FDQSxpQkFBQStHLEdBQUE5QixrQkFBQWpGLEVBQUEsY0FDQTBDLEVBQUFxRSxJ
QUlBdkUsR0FPQUMsMEJBQUEsS0FFQVMsaUJBQ0E4QixnQkFDQWMsc0JBQ0FrQixVQUFBTCxFQUNB
eEIsT0FHQTNMLEdBQUFELFFBQUFpSixHVm1wQk0sU0FBU2hKLEVBQVFELEVBQVNILEdXbDRCaEMs
WUFtREEsU0FBQTZOLEdBQUFDLEVBQUFDLEVBQUFDLEVBQUFDLEdBUUEzTSxLQUFBd00saUJBQ0F4
TSxLQUFBNE0sWUFBQUgsRUFDQXpNLEtBQUEwTSxhQUVBLElBQUFHLEdBQUE3TSxLQUFBOE0sWUFB
QUQsU0FDQSxRQUFBRSxLQUFBRixHQUNBLEdBQUFBLEVBQUFyTixlQUFBdU4sR0FBQSxDQU1BLEdB
QUFDLEdBQUFILEVBQUFFLEVBQ0FDLEdBQ0FoTixLQUFBK00sR0FBQUMsRUFBQU4sR0FFQSxXQUFB
SyxFQUNBL00sS0FBQWlELE9BQUEwSixFQUVBM00sS0FBQStNLEdBQUFMLEVBQUFLLEdBS0EsR0FB
QUUsR0FBQSxNQUFBUCxFQUFBTyxpQkFBQVAsRUFBQU8saUJBQUFQLEVBQUFRLGVBQUEsQ0FPQSxP
QU5BRCxHQUNBak4sS0FBQW1OLG1CQUFBbk0sRUFBQXdHLGdCQUVBeEgsS0FBQW1OLG1CQUFBbk0s
RUFBQXVHLGlCQUVBdkgsS0FBQW9OLHFCQUFBcE0sRUFBQXVHLGlCQUNBdkgsS0F4RkEsR0FBQTZL
LEdBQUFuTSxFQUFBLEdBRUFvTSxFQUFBcE0sRUFBQSxJQUVBc0MsRUFBQXRDLEVBQUEsR0FNQTJP
LEdBTEEzTyxFQUFBLEdBR0Esa0JBQUE0TyxRQUVBLHFJQU1BQyxHQUNBNUQsS0FBQSxLQUNBMUcs
T0FBQSxLQUVBdUssY0FBQXhNLEVBQUF5RyxnQkFDQWdHLFdBQUEsS0FDQUMsUUFBQSxLQUNBQyxX
QUFBLEtBQ0FDLFVBQUEsU0FBQUMsR0FDQSxNQUFBQSxHQUFBRCxXQUFBRSxLQUFBQyxPQUVBZCxp
QkFBQSxLQUNBZSxVQUFBLEtBK0RBbkQsR0FBQTBCLEVBQUFoTixXQUNBME8sZUFBQSxXQUNBak8s
S0FBQWlOLGtCQUFBLENBQ0EsSUFBQVksR0FBQTdOLEtBQUEwTSxXQUNBbUIsS0FJQUEsRUFBQUks
ZUFDQUosRUFBQUksaUJBRUssaUJBQUFKLEdBQUFYLGNBQ0xXLEVBQUFYLGFBQUEsR0FFQWxOLEtB
QUFtTixtQkFBQW5NLEVBQUF3RyxrQkFHQTBHLGdCQUFBLFdBQ0EsR0FBQUwsR0FBQTdOLEtBQUEw
TSxXQUNBbUIsS0FJQUEsRUFBQUssZ0JBQ0FMLEVBQUFLLGtCQUVLLGlCQUFBTCxHQUFBTSxlQU1M
TixFQUFBTSxjQUFBLEdBR0FuTyxLQUFBb04scUJBQUFwTSxFQUFBd0csa0JBUUE0RyxRQUFBLFdB
Q0FwTyxLQUFBcU8sYUFBQXJOLEVBQUF3RyxpQkFRQTZHLGFBQUFyTixFQUFBdUcsaUJBS0FtRSxX
QUFBLFdBQ0EsR0FBQW1CLEdBQUE3TSxLQUFBOE0sWUFBQUQsU0FDQSxRQUFBRSxLQUFBRixHQUlB
N00sS0FBQStNLEdBQUEsSUFHQSxRQUFBMU4sR0FBQSxFQUFtQkEsRUFBQWdPLEVBQUEvTCxPQUF1
Q2pDLElBQzFEVyxLQUFBcU4sRUFBQWhPLElBQUEsUUFVQWtOLEVBQUFNLFVBQUFVLEVBK0JBaEIs
RUFBQStCLGFBQUEsU0FBQUMsRUFBQTFCLEdBQ0EsR0FBQTJCLEdBQUF4TyxLQUVBeU8sRUFBQSxZ
QUNBQSxHQUFBbFAsVUFBQWlQLEVBQUFqUCxTQUNBLElBQUFBLEdBQUEsR0FBQWtQLEVBRUE1RCxH
QUFBdEwsRUFBQWdQLEVBQUFoUCxXQUNBZ1AsRUFBQWhQLFlBQ0FnUCxFQUFBaFAsVUFBQXVOLFlB
QUF5QixFQUVBQSxFQUFBMUIsVUFBQWhDLEtBQThCMkQsRUFBQTNCLGFBQzlCMEIsRUFBQUQsYUFB
QUUsRUFBQUYsYUFFQXhELEVBQUFpQixhQUFBd0MsRUFBQXpELEVBQUE0RCxxQkFHQTVELEVBQUFp
QixhQUFBUSxFQUFBekIsRUFBQTRELG9CQUVBNVAsRUFBQUQsUUFBQTBOLEdYbzdCTSxTQUFTek4s
RUFBUUQsR1kvb0N2QixZQVFBLElBQUE4UCxJQUtBQyxRQUFBLEtBR0E5UCxHQUFBRCxRQUFBOFAs
R1pncUNNLFNBQVM3UCxFQUFRRCxFQUFTSCxHYTNyQ2hDLFlBRUFJLEdBQUFELFFBQUFILEVBQUEs
TWJrc0NDLElBQUssR0FFQSxTQUFTSSxFQUFRRCxFQUFTSCxHYzVyQ2hDLFlBd0JBLFNBQUFtUSxH
QUFBQyxHQUNBLEdBQUFDLEVBQUEsQ0FHQSxHQUFBdEwsR0FBQXFMLEVBQUFyTCxLQUNBb0IsRUFB
QWlLLEVBQUFqSyxRQUNBLElBQUFBLEVBQUF2RCxPQUNBLE9BQUFqQyxHQUFBLEVBQW1CQSxFQUFB
d0YsRUFBQXZELE9BQXFCakMsSUFDeEMyUCxFQUFBdkwsRUFBQW9CLEVBQUF4RixHQUFBLFVBRUcs
T0FBQXlQLEVBQUFHLEtBQ0hDLEVBQUF6TCxFQUFBcUwsRUFBQUcsTUFDRyxNQUFBSCxFQUFBSyxN
QUNIQyxFQUFBM0wsRUFBQXFMLEVBQUFLLE9Bb0JBLFFBQUFFLEdBQUFDLEVBQUFDLEdBQ0FELEVB
QUE1SixXQUFBOEosYUFBQUQsRUFBQTlMLEtBQUE2TCxHQUNBVCxFQUFBVSxHQUdBLFFBQUFFLEdB
QUFDLEVBQUFDLEdBQ0FaLEVBQ0FXLEVBQUE3SyxTQUFBWSxLQUFBa0ssR0FFQUQsRUFBQWpNLEtB
QUFtTSxZQUFBRCxFQUFBbE0sTUFJQSxRQUFBb00sR0FBQWYsRUFBQUcsR0FDQUYsRUFDQUQsRUFB
QUcsT0FFQUMsRUFBQUosRUFBQXJMLEtBQUF3TCxHQUlBLFFBQUFhLEdBQUFoQixFQUFBSyxHQUNB
SixFQUNBRCxFQUFBSyxPQUVBQyxFQUFBTixFQUFBckwsS0FBQTBMLEdBSUEsUUFBQTlJLEtBQ0Es
TUFBQXJHLE1BQUF5RCxLQUFBc00sU0FHQSxRQUFBQyxHQUFBdk0sR0FDQSxPQUNBQSxPQUNBb0Is
WUFDQW9LLEtBQUEsS0FDQUUsS0FBQSxLQUNBOUksWUE5RkEsR0FBQTRKLEdBQUF2UixFQUFBLElB
Q0F3USxFQUFBeFEsRUFBQSxJQUVBd1IsRUFBQXhSLEVBQUEsSUFDQTBRLEVBQUExUSxFQUFBLElB
RUF5UixFQUFBLEVBQ0FDLEVBQUEsR0FhQXJCLEVBQUEsbUJBQUF0SSxXQUFBLGdCQUFBQSxVQUFB
NEosY0FBQSxtQkFBQUMsWUFBQSxnQkFBQUEsV0FBQUMsV0FBQSxhQUFBQyxLQUFBRixVQUFBQyxX
QW1CQXZCLEVBQUFrQixFQUFBLFNBQUF4SyxFQUFBb0osRUFBQTJCLEdBT0EzQixFQUFBckwsS0FB
QUUsV0FBQXlNLEdBQUF0QixFQUFBckwsS0FBQUUsV0FBQXdNLEdBQUEsV0FBQXJCLEVBQUFyTCxL
QUFBc00sU0FBQVcsZ0JBQUEsTUFBQTVCLEVBQUFyTCxLQUFBa04sY0FBQTdCLEVBQUFyTCxLQUFB
a04sZUFBQVYsRUFBQWhCLE9BQ0FKLEVBQUFDLEdBQ0FwSixFQUFBa0wsYUFBQTlCLEVBQUFyTCxL
QUFBZ04sS0FFQS9LLEVBQUFrTCxhQUFBOUIsRUFBQXJMLEtBQUFnTixHQUNBNUIsRUFBQUMsS0Er
Q0FrQixHQUFBaEIsbUJBQ0FnQixFQUFBWCx1QkFDQVcsRUFBQVAsYUFDQU8sRUFBQUgsWUFDQUcs
RUFBQUYsWUFFQWhSLEVBQUFELFFBQUFtUixHZDRzQ00sU0FBU2xSLEVBQVFELEVBQVNILEdldHpD
aEMsWUFNQSxTQUFBbVMsR0FBQUMsRUFBQUMsR0FDQSxPQUFBRCxFQUFBQyxPQUxBLEdBQUF6TCxH
QUFBNUcsRUFBQSxHQVFBc1MsR0FOQXRTLEVBQUEsSUFXQXVTLGtCQUFBLEVBQ0FDLGtCQUFBLEVB
Q0FDLGtCQUFBLEVBQ0FDLDJCQUFBLEdBQ0FDLDZCQUFBLEdBOEJBQyx3QkFBQSxTQUFBQyxHQUNB
LEdBQUFDLEdBQUFSLEVBQ0FTLEVBQUFGLEVBQUFFLGVBQ0FDLEVBQUFILEVBQUFHLDJCQUNBQyxF
QUFBSixFQUFBSSxzQkFDQUMsRUFBQUwsRUFBQUsscUJBQ0FDLEVBQUFOLEVBQUFNLHNCQUVBTixH
QUFBTyxtQkFDQTlMLEVBQUErTCw0QkFBQXRNLEtBQUE4TCxFQUFBTyxrQkFHQSxRQUFBL0UsS0FB
QTBFLEdBQUEsQ0FDQXpMLEVBQUFnTSxXQUFBeFMsZUFBQXVOLEdBQUF6SCxFQUFBLEtBQUF5SCxH
QUFBLE1BRUEsSUFBQWtGLEdBQUFsRixFQUFBMkQsY0FDQXdCLEVBQUFULEVBQUExRSxHQUVBb0Ys
R0FDQUMsY0FBQUgsRUFDQUksbUJBQUEsS0FDQUMsYUFBQXZGLEVBQ0F3RixlQUFBLEtBRUFDLGdC
QUFBM0IsRUFBQXFCLEVBQUFWLEVBQUFQLG1CQUNBd0IsZ0JBQUE1QixFQUFBcUIsRUFBQVYsRUFB
QU4sbUJBQ0F3QixnQkFBQTdCLEVBQUFxQixFQUFBVixFQUFBTCxtQkFDQXdCLHdCQUFBOUIsRUFB
QXFCLEVBQUFWLEVBQUFKLDRCQUNBd0IsMEJBQUEvQixFQUFBcUIsRUFBQVYsRUFBQUgsOEJBUUEs
SUFOQWMsRUFBQU0sZ0JBQUFOLEVBQUFPLGdCQUFBUCxFQUFBUywyQkFBQSxTQUFBdE4sRUFBQSxL
QUFBeUgsR0FNQTRFLEVBQUFuUyxlQUFBdU4sR0FBQSxDQUNBLEdBQUFxRixHQUFBVCxFQUFBNUUs
RUFDQW9GLEdBQUFDLGdCQU1BVixFQUFBbFMsZUFBQXVOLEtBQ0FvRixFQUFBRSxtQkFBQVgsRUFB
QTNFLElBR0E2RSxFQUFBcFMsZUFBQXVOLEtBQ0FvRixFQUFBRyxhQUFBVixFQUFBN0UsSUFHQThF
LEVBQUFyUyxlQUFBdU4sS0FDQW9GLEVBQUFJLGVBQUFWLEVBQUE5RSxJQUdBL0csRUFBQWdNLFdB
QUFqRixHQUFBb0YsTUFNQVUsRUFBQSxnTEFnQkE3TSxHQUNBRSxrQkFBQSxlQUNBNE0sb0JBQUEs
aUJBRUFELDRCQUNBRSxvQkFBQUYsRUFBQSwrQ0E4QkFiLGNBV0FnQix3QkFBNkYsS0FLN0ZqQiwr
QkFNQUQsa0JBQUEsU0FBQU0sR0FDQSxPQUFBL1MsR0FBQSxFQUFtQkEsRUFBQTJHLEVBQUErTCw0
QkFBQXpRLE9BQW9EakMsSUFBQSxDQUN2RSxHQUFBNFQsR0FBQWpOLEVBQUErTCw0QkFBQTFTLEVB
Q0EsSUFBQTRULEVBQUFiLEdBQ0EsU0FHQSxVQUdBOUYsVUFBQTBFLEVBR0FsUyxHQUFBRCxRQUFB
bUgsR2ZzMENNLFNBQVNsSCxFQUFRRCxFQUFTSCxHZ0IzZ0RoQyxZQVdBLFNBQUF3VSxLQUNBQyxF
QUFBRCxXQUFBbFQsVUFBQTBKLGlCQVZBLEdBQUF5SixHQUFBelUsRUFBQSxLQWFBc0wsR0FaQXRM
LEVBQUEsR0FFQUEsRUFBQSxJQXNCQTBVLGVBQUEsU0FBQUMsRUFBQXRLLEVBQUF1SyxFQUFBQyxF
QUFBN0ksRUFBQThJLEdBT0EsR0FBQUMsR0FBQUosRUFBQUQsZUFBQXJLLEVBQUF1SyxFQUFBQyxF
QUFBN0ksRUFBQThJLEVBU0EsT0FSQUgsR0FBQTNKLGlCQUFBLE1BQUEySixFQUFBM0osZ0JBQUFn
SyxLQUNBM0ssRUFBQTRLLHFCQUFBdkosUUFBQThJLEVBQUFHLEdBT0FJLEdBT0FHLFlBQUEsU0FB
QVAsR0FDQSxNQUFBQSxHQUFBTyxlQVNBQyxpQkFBQSxTQUFBUixFQUFBUyxHQU1BWCxFQUFBWSxX
QUFBVixJQUFBM0osaUJBQ0EySixFQUFBUSxpQkFBQUMsSUFpQkFFLGlCQUFBLFNBQUFYLEVBQUFZ
LEVBQUFsTCxFQUFBMkIsR0FDQSxHQUFBd0osR0FBQWIsRUFBQTNKLGVBRUEsSUFBQXVLLElBQUFD
LEdBQUF4SixJQUFBMkksRUFBQWMsU0FBQSxDQW9CQSxHQUFBQyxHQUFBakIsRUFBQWtCLGlCQUFB
SCxFQUFBRCxFQUVBRyxJQUNBakIsRUFBQVksV0FBQVYsRUFBQWEsR0FHQWIsRUFBQVcsaUJBQUFD
LEVBQUFsTCxFQUFBMkIsR0FFQTBKLEdBQUFmLEVBQUEzSixpQkFBQSxNQUFBMkosRUFBQTNKLGdC
QUFBZ0ssS0FDQTNLLEVBQUE0SyxxQkFBQXZKLFFBQUE4SSxFQUFBRyxLQWlCQXBKLHlCQUFBLFNB
QUFvSixFQUFBdEssRUFBQUksR0FDQWtLLEVBQUE3SSxxQkFBQXJCLEdBV0FrSyxFQUFBcEoseUJB
QUFsQixLQVNBakssR0FBQUQsUUFBQW1MLEdoQjJoRE0sU0FBU2xMLEVBQVFELEVBQVNILEdpQnJy
RGhDLFlBRUEsSUFBQW1NLEdBQUFuTSxFQUFBLEdBRUE0VixFQUFBNVYsRUFBQSxJQUNBNlYsRUFB
QTdWLEVBQUEsS0FDQThWLEVBQUE5VixFQUFBLEtBQ0ErVixFQUFBL1YsRUFBQSxJQUNBZ1csRUFB
QWhXLEVBQUEsS0FDQWlXLEVBQUFqVyxFQUFBLEtBRUFrVyxFQUFBbFcsRUFBQSxLQUNBbVcsRUFB
QW5XLEVBQUEsS0FFQWdJLEVBQUErTixFQUFBL04sY0FDQW9PLEVBQUFMLEVBQUFLLGNBQ0FDLEVB
QUFOLEVBQUFNLGFBWUFDLEVBQUFuSyxFQUNBb0ssRUFBQSxTQUFBQyxHQUNBLE1BQUFBLElBbUJB
QyxHQUdBQyxVQUNBL1MsSUFBQWtTLEVBQUFsUyxJQUNBSyxRQUFBNlIsRUFBQTdSLFFBQ0EyUyxN
QUFBZCxFQUFBYyxNQUNBQyxRQUFBZixFQUFBZSxRQUNBQyxLQUFBVixHQUdBVyxVQUFBbEIsRUFB
QWtCLFVBQ0FDLGNBQUFuQixFQUFBbUIsY0FFQS9PLGdCQUNBcU8sZUFDQVcsZUFBQWpCLEVBQUFp
QixlQUlBQyxVQUFBakIsRUFDQWtCLFlBQUFoQixFQUNBRSxnQkFDQUcsY0FJQVksSUFBQXJCLEVB
RUFzQixRQUFBbkIsRUFHQUssV0F1Q0FsVyxHQUFBRCxRQUFBc1csR2pCcXNETSxTQUFTclcsRUFB
UUQsRUFBU0gsR2tCN3pEaEMsWUFxQkEsU0FBQXFYLEdBQUFDLEdBU0EsTUFBQXRWLFVBQUFzVixF
QUFBdEMsSUFHQSxRQUFBdUMsR0FBQUQsR0FTQSxNQUFBdFYsVUFBQXNWLEVBQUF6UyxJQXhDQSxH
QUFBc0gsR0FBQW5NLEVBQUEsR0FFQWlRLEVBQUFqUSxFQUFBLElBSUFjLEdBRkFkLEVBQUEsR0FD
QUEsRUFBQSxJQUNBWSxPQUFBQyxVQUFBQyxnQkFFQTBXLEVBQUF4WCxFQUFBLElBRUF5WCxHQUNB
NVMsS0FBQSxFQUNBbVEsS0FBQSxFQUNBMEMsUUFBQSxFQUNBQyxVQUFBLEdBNkVBNUIsRUFBQSxT
QUFBOUssRUFBQXBHLEVBQUFtUSxFQUFBNEMsRUFBQXBULEVBQUFxVCxFQUFBQyxHQUNBLEdBQUFD
LElBRUFDLFNBQUFSLEVBR0F2TSxPQUNBcEcsTUFDQW1RLE1BQ0E4QyxRQUdBRyxPQUFBSixFQStD
QSxPQUFBRSxHQU9BaEMsR0FBQS9OLGNBQUEsU0FBQWlELEVBQUFxTSxFQUFBblIsR0FDQSxHQUFB
a0ksR0FHQXlKLEtBRUFqVCxFQUFBLEtBQ0FtUSxFQUFBLEtBQ0E0QyxFQUFBLEtBQ0FwVCxFQUFB
LElBRUEsVUFBQThTLEVBQUEsQ0FDQUQsRUFBQUMsS0FDQXRDLEVBQUFzQyxFQUFBdEMsS0FFQXVD
LEVBQUFELEtBQ0F6UyxFQUFBLEdBQUF5UyxFQUFBelMsS0FHQStTLEVBQUE1VixTQUFBc1YsRUFB
QUksT0FBQSxLQUFBSixFQUFBSSxPQUNBbFQsRUFBQXhDLFNBQUFzVixFQUFBSyxTQUFBLEtBQUFM
LEVBQUFLLFFBRUEsS0FBQXRKLElBQUFpSixHQUNBeFcsRUFBQVAsS0FBQStXLEVBQUFqSixLQUFB
b0osRUFBQTNXLGVBQUF1TixLQUNBeUosRUFBQXpKLEdBQUFpSixFQUFBakosSUFPQSxHQUFBNkos
R0FBQXZWLFVBQUFDLE9BQUEsQ0FDQSxRQUFBc1YsRUFDQUosRUFBQTNSLGVBQ0csSUFBQStSLEVB
QUEsR0FFSCxPQURBQyxHQUFBQyxNQUFBRixHQUNBdlgsRUFBQSxFQUFtQkEsRUFBQXVYLEVBQW9C
dlgsSUFDdkN3WCxFQUFBeFgsR0FBQWdDLFVBQUFoQyxFQUFBLEVBT0FtWCxHQUFBM1IsU0FBQWdT
LEVBSUEsR0FBQWxOLEtBQUFvTixhQUFBLENBQ0EsR0FBQUEsR0FBQXBOLEVBQUFvTixZQUNBLEtB
QUFoSyxJQUFBZ0ssR0FDQXJXLFNBQUE4VixFQUFBekosS0FDQXlKLEVBQUF6SixHQUFBZ0ssRUFB
QWhLLElBaUJBLE1BQUEwSCxHQUFBOUssRUFBQXBHLEVBQUFtUSxFQUFBNEMsRUFBQXBULEVBQUF5
TCxFQUFBQyxRQUFBNEgsSUFPQS9CLEVBQUFLLGNBQUEsU0FBQW5MLEdBQ0EsR0FBQXFOLEdBQUF2
QyxFQUFBL04sY0FBQXVRLEtBQUEsS0FBQXROLEVBT0EsT0FEQXFOLEdBQUFyTixPQUNBcU4sR0FH
QXZDLEVBQUF5QyxtQkFBQSxTQUFBQyxFQUFBQyxHQUNBLEdBQUFDLEdBQUE1QyxFQUFBMEMsRUFB
QXhOLEtBQUF5TixFQUFBRCxFQUFBekQsSUFBQXlELEVBQUFHLE1BQUFILEVBQUFJLFFBQUFKLEVB
QUFSLE9BQUFRLEVBQUFYLE1BRUEsT0FBQWEsSUFPQTVDLEVBQUFNLGFBQUEsU0FBQTBCLEVBQUFU
LEVBQUFuUixHQUNBLEdBQUFrSSxHQUdBeUosRUFBQTNMLEtBQXdCNEwsRUFBQUQsT0FHeEJqVCxF
QUFBa1QsRUFBQWxULElBQ0FtUSxFQUFBK0MsRUFBQS9DLElBRUE0QyxFQUFBRyxFQUFBYSxNQUlB
cFUsRUFBQXVULEVBQUFjLFFBR0FoQixFQUFBRSxFQUFBRSxNQUVBLFVBQUFYLEVBQUEsQ0FDQUQs
RUFBQUMsS0FFQXRDLEVBQUFzQyxFQUFBdEMsSUFDQTZDLEVBQUE1SCxFQUFBQyxTQUVBcUgsRUFB
QUQsS0FDQXpTLEVBQUEsR0FBQXlTLEVBQUF6UyxJQUlBLElBQUF3VCxFQUNBTixHQUFBOU0sTUFB
QThNLEVBQUE5TSxLQUFBb04sZUFDQUEsRUFBQU4sRUFBQTlNLEtBQUFvTixhQUVBLEtBQUFoSyxJ
QUFBaUosR0FDQXhXLEVBQUFQLEtBQUErVyxFQUFBakosS0FBQW9KLEVBQUEzVyxlQUFBdU4sS0FD
QXJNLFNBQUFzVixFQUFBakosSUFBQXJNLFNBQUFxVyxFQUVBUCxFQUFBekosR0FBQWdLLEVBQUFo
SyxHQUVBeUosRUFBQXpKLEdBQUFpSixFQUFBakosSUFRQSxHQUFBNkosR0FBQXZWLFVBQUFDLE9B
QUEsQ0FDQSxRQUFBc1YsRUFDQUosRUFBQTNSLGVBQ0csSUFBQStSLEVBQUEsR0FFSCxPQURBQyxH
QUFBQyxNQUFBRixHQUNBdlgsRUFBQSxFQUFtQkEsRUFBQXVYLEVBQW9CdlgsSUFDdkN3WCxFQUFB
eFgsR0FBQWdDLFVBQUFoQyxFQUFBLEVBRUFtWCxHQUFBM1IsU0FBQWdTLEVBR0EsTUFBQXBDLEdB
QUFnQyxFQUFBOU0sS0FBQXBHLEVBQUFtUSxFQUFBNEMsRUFBQXBULEVBQUFxVCxFQUFBQyxJQVVB
L0IsRUFBQWlCLGVBQUEsU0FBQThCLEdBQ0Esc0JBQUFBLElBQUEsT0FBQUEsS0FBQWQsV0FBQVIs
R0FHQXBYLEVBQUFELFFBQUE0VixHbEI2MERNLFNBQVMzVixFQUFRRCxFQUFTSCxHbUJ0cEVoQyxZ
QW9EQSxTQUFBK1ksR0FBQUMsR0FDQSxpQkFBQUEsR0FBQSxVQUFBQSxHQUFBLFdBQUFBLEdBQUEs
YUFBQUEsRUFHQSxRQUFBQyxHQUFBN1csRUFBQTZJLEVBQUE2TSxHQUNBLE9BQUExVixHQUNBLGNB
Q0EscUJBQ0Esb0JBQ0EsMkJBQ0Esa0JBQ0EseUJBQ0Esa0JBQ0EseUJBQ0EsZ0JBQ0EsdUJBQ0Es
U0FBQTBWLEVBQUFvQixXQUFBSCxFQUFBOU4sR0FDQSxTQUNBLFVBcEVBLEdBQUFyRSxHQUFBNUcs
RUFBQSxHQUVBbVosRUFBQW5aLEVBQUEsSUFDQW9aLEVBQUFwWixFQUFBLElBQ0FxWixFQUFBclos
RUFBQSxJQUVBc1osRUFBQXRaLEVBQUEsSUFDQXVaLEVBQUF2WixFQUFBLElBTUF3WixHQUxBeFos
RUFBQSxPQVdBeVosRUFBQSxLQVNBQyxFQUFBLFNBQUF2SyxFQUFBd0ssR0FDQXhLLElBQ0FpSyxF
QUFBUSx5QkFBQXpLLEVBQUF3SyxHQUVBeEssRUFBQVEsZ0JBQ0FSLEVBQUFmLFlBQUFuQixRQUFB
a0MsS0FJQTBLLEVBQUEsU0FBQWpZLEdBQ0EsTUFBQThYLEdBQUE5WCxHQUFBLElBRUFrWSxFQUFB
LFNBQUFsWSxHQUNBLE1BQUE4WCxHQUFBOVgsR0FBQSxJQUdBbVksRUFBQSxTQUFBclUsR0FHQSxV
QUFBQSxFQUFBc1UsYUErQ0FDLEdBSUFyTSxXQUtBc00sdUJBQUFmLEVBQUFlLHVCQUtBQyx5QkFB
QWhCLEVBQUFnQiwwQkFVQUMsWUFBQSxTQUFBMVUsRUFBQTJVLEVBQUFDLEdBQ0Esa0JBQUFBLEdB
QUExVCxFQUFBLEtBQUF5VCxRQUFBQyxJQUFBLE1BRUEsSUFBQXpWLEdBQUFrVixFQUFBclUsR0FD
QTZVLEVBQUFmLEVBQUFhLEtBQUFiLEVBQUFhLE1BQ0FFLEdBQUExVixHQUFBeVYsQ0FFQSxJQUFB
RSxHQUFBckIsRUFBQXNCLHdCQUFBSixFQUNBRyxNQUFBRSxnQkFDQUYsRUFBQUUsZUFBQWhWLEVB
QUEyVSxFQUFBQyxJQVNBSyxZQUFBLFNBQUFqVixFQUFBMlUsR0FHQSxHQUFBRSxHQUFBZixFQUFB
YSxFQUNBLElBQUFwQixFQUFBb0IsRUFBQTNVLEVBQUFzRixnQkFBQUMsS0FBQXZGLEVBQUFzRixn
QkFBQThNLE9BQ0EsV0FFQSxJQUFBalQsR0FBQWtWLEVBQUFyVSxFQUNBLE9BQUE2VSxNQUFBMVYs
SUFTQStWLGVBQUEsU0FBQWxWLEVBQUEyVSxHQUNBLEdBQUFHLEdBQUFyQixFQUFBc0Isd0JBQUFK
LEVBQ0FHLE1BQUFLLG9CQUNBTCxFQUFBSyxtQkFBQW5WLEVBQUEyVSxFQUdBLElBQUFFLEdBQUFm
LEVBQUFhLEVBRUEsSUFBQUUsRUFBQSxDQUNBLEdBQUExVixHQUFBa1YsRUFBQXJVLFNBQ0E2VSxH
QUFBMVYsS0FTQWlXLG1CQUFBLFNBQUFwVixHQUNBLEdBQUFiLEdBQUFrVixFQUFBclUsRUFDQSxR
QUFBMlUsS0FBQWIsR0FDQSxHQUFBQSxFQUFBMVksZUFBQXVaLElBSUFiLEVBQUFhLEdBQUF4VixH
QUFBLENBSUEsR0FBQTJWLEdBQUFyQixFQUFBc0Isd0JBQUFKLEVBQ0FHLE1BQUFLLG9CQUNBTCxF
QUFBSyxtQkFBQW5WLEVBQUEyVSxTQUdBYixHQUFBYSxHQUFBeFYsS0FXQWtXLGNBQUEsU0FBQUMs
RUFBQWpOLEVBQUFDLEVBQUFDLEdBR0EsT0FGQWdOLEdBQ0FDLEVBQUEvQixFQUFBK0IsUUFDQXZh
LEVBQUEsRUFBbUJBLEVBQUF1YSxFQUFBdFksT0FBb0JqQyxJQUFBLENBRXZDLEdBQUF3YSxHQUFB
RCxFQUFBdmEsRUFDQSxJQUFBd2EsRUFBQSxDQUNBLEdBQUFDLEdBQUFELEVBQUFKLGNBQUFDLEVB
QUFqTixFQUFBQyxFQUFBQyxFQUNBbU4sS0FDQUgsRUFBQTNCLEVBQUEyQixFQUFBRyxLQUlBLE1B
QUFILElBVUFJLGNBQUEsU0FBQUosR0FDQUEsSUFDQXhCLEVBQUFILEVBQUFHLEVBQUF3QixLQVNB
SyxrQkFBQSxTQUFBM0IsR0FHQSxHQUFBNEIsR0FBQTlCLENBQ0FBLEdBQUEsS0FDQUUsRUFDQUos
RUFBQWdDLEVBQUExQixHQUVBTixFQUFBZ0MsRUFBQXpCLEdBRUFMLEVBQUE3UyxFQUFBLGFBRUF5
UyxFQUFBbUMsc0JBTUFDLFFBQUEsV0FDQWpDLE1BR0FrQyxrQkFBQSxXQUNBLE1BQUFsQyxJQUlB
cFosR0FBQUQsUUFBQThaLEduQnNxRU0sU0FBUzdaLEVBQVFELEVBQVNILEdvQjU2RWhDLFlBZUEs
U0FBQTJiLEdBQUFqVyxFQUFBeUosRUFBQXlNLEdBQ0EsR0FBQXZCLEdBQUFsTCxFQUFBckIsZUFB
QStOLHdCQUFBRCxFQUNBLE9BQUFqQixHQUFBalYsRUFBQTJVLEdBU0EsUUFBQXlCLEdBQUFwVyxF
QUFBcVcsRUFBQTVNLEdBSUEsR0FBQW1MLEdBQUFxQixFQUFBalcsRUFBQXlKLEVBQUE0TSxFQUNB
ekIsS0FDQW5MLEVBQUE2TSxtQkFBQTFDLEVBQUFuSyxFQUFBNk0sbUJBQUExQixHQUNBbkwsRUFB
QThNLG1CQUFBM0MsRUFBQW5LLEVBQUE4TSxtQkFBQXZXLElBV0EsUUFBQXdXLEdBQUEvTSxHQUNB
QSxLQUFBckIsZUFBQStOLHlCQUNBekMsRUFBQStDLGlCQUFBaE4sRUFBQWpCLFlBQUE0TixFQUFB
M00sR0FPQSxRQUFBaU4sR0FBQWpOLEdBQ0EsR0FBQUEsS0FBQXJCLGVBQUErTix3QkFBQSxDQUNB
LEdBQUE5TixHQUFBb0IsRUFBQWpCLFlBQ0FtTyxFQUFBdE8sRUFBQXFMLEVBQUFrRCxrQkFBQXZP
LEdBQUEsSUFDQXFMLEdBQUErQyxpQkFBQUUsRUFBQVAsRUFBQTNNLElBU0EsUUFBQW9OLEdBQUE3
VyxFQUFBOFcsRUFBQXJOLEdBQ0EsR0FBQUEsS0FBQXJCLGVBQUF1TSxpQkFBQSxDQUNBLEdBQUFB
LEdBQUFsTCxFQUFBckIsZUFBQXVNLGlCQUNBQyxFQUFBSyxFQUFBalYsRUFBQTJVLEVBQ0FDLEtB
Q0FuTCxFQUFBNk0sbUJBQUExQyxFQUFBbkssRUFBQTZNLG1CQUFBMUIsR0FDQW5MLEVBQUE4TSxt
QkFBQTNDLEVBQUFuSyxFQUFBOE0sbUJBQUF2VyxLQVVBLFFBQUErVyxHQUFBdE4sR0FDQUEsS0FB
QXJCLGVBQUF1TSxrQkFDQWtDLEVBQUFwTixFQUFBakIsWUFBQSxLQUFBaUIsR0FJQSxRQUFBdU4s
R0FBQXpCLEdBQ0ExQixFQUFBMEIsRUFBQWlCLEdBR0EsUUFBQVMsR0FBQTFCLEdBQ0ExQixFQUFB
MEIsRUFBQW1CLEdBR0EsUUFBQVEsR0FBQUMsRUFBQUMsRUFBQXJZLEVBQUFFLEdBQ0F5VSxFQUFB
MkQsbUJBQUF0WSxFQUFBRSxFQUFBNFgsRUFBQU0sRUFBQUMsR0FHQSxRQUFBRSxHQUFBL0IsR0FD
QTFCLEVBQUEwQixFQUFBd0IsR0FuR0EsR0FBQXhDLEdBQUFqYSxFQUFBLElBQ0FvWixFQUFBcFos
RUFBQSxJQUVBc1osRUFBQXRaLEVBQUEsSUFDQXVaLEVBQUF2WixFQUFBLElBR0EyYSxHQUZBM2Es
RUFBQSxHQUVBaWEsRUFBQVUsYUEwR0FzQyxHQUNBUCwrQkFDQUMseUNBQ0FLLDZCQUNBSixpQ0FH
QXhjLEdBQUFELFFBQUE4YyxHcEI0N0VNLFNBQVM3YyxFQUFRRCxHcUJ0akZ2QixZQVdBLElBQUEr
YyxJQU1BQyxPQUFBLFNBQUF0WSxHQUNBQSxFQUFBdVksdUJBQUFwYixRQUdBcWIsSUFBQSxTQUFB
eFksR0FDQSxNQUFBQSxHQUFBdVksd0JBR0FFLElBQUEsU0FBQXpZLEdBQ0EsTUFBQTdDLFVBQUE2
QyxFQUFBdVksd0JBR0FHLElBQUEsU0FBQTFZLEVBQUF1TixHQUNBdk4sRUFBQXVZLHVCQUFBaEws
R0FJQWhTLEdBQUFELFFBQUErYyxHckJza0ZNLFNBQVM5YyxFQUFRRCxFQUFTSCxHc0J4bUZoQyxZ
QXlDQSxTQUFBd2QsR0FBQTFQLEVBQUEyUCxFQUFBelAsRUFBQUMsR0FDQSxNQUFBSixHQUFBdE4s
S0FBQWUsS0FBQXdNLEVBQUEyUCxFQUFBelAsRUFBQUMsR0F4Q0EsR0FBQUosR0FBQTdOLEVBQUEs
SUFFQTBkLEVBQUExZCxFQUFBLElBTUEyZCxHQUNBQyxLQUFBLFNBQUF6TyxHQUNBLEdBQUFBLEVB
QUF5TyxLQUNBLE1BQUF6TyxHQUFBeU8sSUFHQSxJQUFBclosR0FBQW1aLEVBQUF2TyxFQUNBLElB
QUE1SyxFQUFBdUQsU0FBQXZELEVBRUEsTUFBQUEsRUFHQSxJQUFBc1osR0FBQXRaLEVBQUF1Wixh
QUVBLE9BQUFELEdBQ0FBLEVBQUFFLGFBQUFGLEVBQUFHLGFBRUFsVyxRQUdBbVcsT0FBQSxTQUFB
OU8sR0FDQSxNQUFBQSxHQUFBOE8sUUFBQSxHQWNBcFEsR0FBQStCLGFBQUE0TixFQUFBRyxHQUVB
dmQsRUFBQUQsUUFBQXFkLEd0QnduRkEsRUFFTSxTQUFTcGQsRUFBUUQsRUFBU0gsR3VCenFGaEMs
WUFFQSxJQUFBa2UsS0FNQTlkLEdBQUFELFFBQUErZCxHdkJ5ckZNLFNBQVM5ZCxFQUFRRCxFQUFT
SCxHd0Jqc0ZoQyxZQWtKQSxTQUFBbWUsR0FBQUMsR0FPQSxNQUpBeGQsUUFBQUMsVUFBQUMsZUFB
QVAsS0FBQTZkLEVBQUFDLEtBQ0FELEVBQUFDLEdBQUFDLElBQ0FDLEVBQUFILEVBQUFDLFFBRUFF
LEVBQUFILEVBQUFDLElBdkpBLEdBZ0VBRyxHQWhFQXJTLEVBQUFuTSxFQUFBLEdBRUFtWixFQUFB
blosRUFBQSxJQUNBeWUsRUFBQXplLEVBQUEsS0FDQTBlLEVBQUExZSxFQUFBLElBRUEyZSxFQUFB
M2UsRUFBQSxLQUNBNGUsRUFBQTVlLEVBQUEsSUEwREF1ZSxLQUNBTSxHQUFBLEVBQ0FQLEVBQUEs
RUFLQVEsR0FDQUMsU0FBQSxRQUNBQyxnQkFBQUwsRUFBQSxnQ0FDQU0sc0JBQUFOLEVBQUEsNENB
Q0FPLGtCQUFBUCxFQUFBLG9DQUNBUSxRQUFBLE9BQ0FDLFdBQUEsVUFDQUMsa0JBQUEsaUJBQ0FD
LFVBQUEsU0FDQUMsU0FBQSxRQUNBQyxrQkFBQSxpQkFDQUMsb0JBQUEsbUJBQ0FDLHFCQUFBLG9C
QUNBQyxlQUFBLGNBQ0FDLFFBQUEsT0FDQUMsT0FBQSxNQUNBQyxlQUFBLFdBQ0FDLFFBQUEsT0FD
QUMsV0FBQSxVQUNBQyxhQUFBLFlBQ0FDLFlBQUEsV0FDQUMsYUFBQSxZQUNBQyxZQUFBLFdBQ0FD
LGFBQUEsWUFDQUMsUUFBQSxPQUNBQyxrQkFBQSxpQkFDQUMsV0FBQSxVQUNBQyxhQUFBLFlBQ0FD
LFNBQUEsUUFDQUMsU0FBQSxRQUNBQyxTQUFBLFFBQ0FDLFNBQUEsUUFDQUMsV0FBQSxVQUNBQyxZ
QUFBLFdBQ0FDLFNBQUEsUUFDQUMsY0FBQSxhQUNBQyxrQkFBQSxpQkFDQUMsYUFBQSxZQUNBQyxh
QUFBLFlBQ0FDLGFBQUEsWUFDQUMsWUFBQSxXQUNBQyxhQUFBLFlBQ0FDLFdBQUEsVUFDQUMsU0FB
QSxRQUNBQyxTQUFBLFFBQ0FDLFFBQUEsT0FDQUMsV0FBQSxVQUNBQyxZQUFBLFdBQ0FDLGNBQUEs
YUFDQUMsVUFBQSxTQUNBQyxVQUFBLFNBQ0FDLFdBQUEsVUFDQUMsbUJBQUEsa0JBQ0FDLFdBQUEs
VUFDQUMsV0FBQSxVQUNBQyxhQUFBLFlBQ0FDLGNBQUEsYUFDQUMsZUFBQSxjQUNBQyxZQUFBLFdB
Q0FDLGFBQUEsWUFDQUMsY0FBQSxhQUNBQyxpQkFBQWhFLEVBQUEsa0NBQ0FpRSxnQkFBQSxlQUNB
QyxXQUFBLFVBQ0FDLFNBQUEsU0FNQXpFLEVBQUEsb0JBQUEvYSxPQUFBbUUsS0FBQUMsVUFBQXpH
LE1BQUEsR0FzQkE4aEIsRUFBQTVXLEtBQXlDc1MsR0FJekN1RSxtQkFBQSxLQUVBcFYsV0FJQXFW
LHlCQUFBLFNBQUFELEdBQ0FBLEVBQUFFLGtCQUFBSCxFQUFBSSxnQkFDQUosRUFBQUMsdUJBU0FJ
LFdBQUEsU0FBQUMsR0FDQU4sRUFBQUMsb0JBQ0FELEVBQUFDLG1CQUFBSSxXQUFBQyxJQU9BQyxV
QUFBLFdBQ0EsU0FBQVAsRUFBQUMscUJBQUFELEVBQUFDLG1CQUFBTSxjQXdCQUMsU0FBQSxTQUFB
bEosRUFBQW1KLEdBS0EsT0FKQXBGLEdBQUFvRixFQUNBQyxFQUFBdEYsRUFBQUMsR0FDQXNGLEVB
QUF2SyxFQUFBd0ssNkJBQUF0SixHQUVBMVosRUFBQSxFQUFtQkEsRUFBQStpQixFQUFBOWdCLE9B
QXlCakMsSUFBQSxDQUM1QyxHQUFBaWpCLEdBQUFGLEVBQUEvaUIsRUFDQThpQixHQUFBM2lCLGVB
QUE4aUIsSUFBQUgsRUFBQUcsS0FDQSxhQUFBQSxFQUNBaEYsRUFBQSxTQUNBbUUsRUFBQUMsbUJB
QUFhLGlCQUFBLG1CQUFBekYsR0FDV1EsRUFBQSxjQUNYbUUsRUFBQUMsbUJBQUFhLGlCQUFBLHdC
QUFBekYsR0FJQTJFLEVBQUFDLG1CQUFBYSxpQkFBQSw0QkFBQXpGLEdBRVMsY0FBQXdGLEVBQ1Ro
RixFQUFBLGFBQ0FtRSxFQUFBQyxtQkFBQWMsa0JBQUEscUJBQUExRixHQUVBMkUsRUFBQUMsbUJB
QUFhLGlCQUFBLHFCQUFBZCxFQUFBQyxtQkFBQWUsZUFFUyxhQUFBSCxHQUFBLFlBQUFBLEdBQ1Ro
RixFQUFBLGFBQ0FtRSxFQUFBQyxtQkFBQWMsa0JBQUEsbUJBQUExRixHQUNBMkUsRUFBQUMsbUJB
QUFjLGtCQUFBLGlCQUFBMUYsSUFDV1EsRUFBQSxhQUdYbUUsRUFBQUMsbUJBQUFhLGlCQUFBLHFC
QUFBekYsR0FDQTJFLEVBQUFDLG1CQUFBYSxpQkFBQSxxQkFBQXpGLElBSUFxRixFQUFBdEUsU0FB
QSxFQUNBc0UsRUFBQTdDLFVBQUEsR0FDUzlCLEVBQUFoZSxlQUFBOGlCLElBQ1RiLEVBQUFDLG1C
QUFBYSxpQkFBQUQsRUFBQTlFLEVBQUE4RSxHQUFBeEYsR0FHQXFGLEVBQUFHLElBQUEsS0FLQUMs
aUJBQUEsU0FBQTdJLEVBQUFnSixFQUFBQyxHQUNBLE1BQUFsQixHQUFBQyxtQkFBQWEsaUJBQUE3
SSxFQUFBZ0osRUFBQUMsSUFHQUgsa0JBQUEsU0FBQTlJLEVBQUFnSixFQUFBQyxHQUNBLE1BQUFs
QixHQUFBQyxtQkFBQWMsa0JBQUE5SSxFQUFBZ0osRUFBQUMsSUFRQUMsb0JBQUEsV0FDQSxJQUFB
bmMsU0FBQW9jLFlBQ0EsUUFFQSxJQUFBQyxHQUFBcmMsU0FBQW9jLFlBQUEsYUFDQSxjQUFBQyxH
QUFBLFNBQUFBLElBY0FDLDRCQUFBLFdBSUEsR0FIQXJpQixTQUFBd2MsSUFDQUEsRUFBQXVFLEVB
QUFtQix3QkFFQTFGLElBQUFLLEVBQUEsQ0FDQSxHQUFBeUYsR0FBQTVGLEVBQUE2RixtQkFDQXhC
LEdBQUFDLG1CQUFBd0IsbUJBQUFGLEdBQ0F6RixHQUFBLEtBS0F6ZSxHQUFBRCxRQUFBNGlCLEd4
Qml0Rk0sU0FBUzNpQixFQUFRRCxFQUFTSCxHeUJ6Z0doQyxZQXNEQSxTQUFBeWtCLEdBQUEzVyxF
QUFBMlAsRUFBQXpQLEVBQUFDLEdBQ0EsTUFBQXVQLEdBQUFqZCxLQUFBZSxLQUFBd00sRUFBQTJQ
LEVBQUF6UCxFQUFBQyxHQXJEQSxHQUFBdVAsR0FBQXhkLEVBQUEsSUFDQTBlLEVBQUExZSxFQUFB
LElBRUEwa0IsRUFBQTFrQixFQUFBLElBTUEya0IsR0FDQUMsUUFBQSxLQUNBQyxRQUFBLEtBQ0FD
LFFBQUEsS0FDQUMsUUFBQSxLQUNBQyxRQUFBLEtBQ0FDLFNBQUEsS0FDQUMsT0FBQSxLQUNBQyxR
QUFBLEtBQ0FDLGlCQUFBVixFQUNBVyxPQUFBLFNBQUFsVyxHQUlBLEdBQUFrVyxHQUFBbFcsRUFB
QWtXLE1BQ0EsZ0JBQUFsVyxHQUNBa1csRUFNQSxJQUFBQSxFQUFBLE1BQUFBLEVBQUEsS0FFQUMs
UUFBQSxLQUNBQyxjQUFBLFNBQUFwVyxHQUNBLE1BQUFBLEdBQUFvVyxnQkFBQXBXLEVBQUFxVyxj
QUFBclcsRUFBQXNXLFdBQUF0VyxFQUFBdVcsVUFBQXZXLEVBQUFxVyxjQUdBRyxNQUFBLFNBQUF4
VyxHQUNBLGVBQUFBLEtBQUF3VyxNQUFBeFcsRUFBQTJWLFFBQUFwRyxFQUFBa0gsbUJBRUFDLE1B
QUEsU0FBQTFXLEdBQ0EsZUFBQUEsS0FBQTBXLE1BQUExVyxFQUFBNFYsUUFBQXJHLEVBQUFvSCxr
QkFjQXRJLEdBQUE1TixhQUFBNlUsRUFBQUUsR0FFQXZrQixFQUFBRCxRQUFBc2tCLEd6QnloR00s
U0FBU3JrQixFQUFRRCxFQUFTSCxHMEJwbEdoQyxZQUVBLElBQUE0RyxHQUFBNUcsRUFBQSxHQUlB
K2xCLEdBRkEvbEIsRUFBQSxPQWlFQWdtQixHQVFBeGMsd0JBQUEsV0FDQWxJLEtBQUEya0Isb0JB
QUEza0IsS0FBQXlMLHlCQUNBekwsS0FBQTRrQixnQkFDQTVrQixLQUFBNGtCLGdCQUFBdGpCLE9B
QUEsRUFFQXRCLEtBQUE0a0IsbUJBRUE1a0IsS0FBQTZrQixrQkFBQSxHQUdBQSxrQkFBQSxFQU1B
cFosdUJBQUEsS0FFQXFaLGdCQUFBLFdBQ0EsUUFBQTlrQixLQUFBNmtCLGtCQXNCQWpaLFFBQUEs
U0FBQUMsRUFBQUMsRUFBQWpNLEVBQUFDLEVBQUFYLEVBQUFrQixFQUFBQyxFQUFBQyxHQUVBUCxL
QUFBOGtCLGtCQUFBeGYsRUFBQSxZQUNBLElBQUF5ZixHQUNBQyxDQUNBLEtBQ0FobEIsS0FBQTZr
QixrQkFBQSxFQUtBRSxHQUFBLEVBQ0Eva0IsS0FBQWlsQixjQUFBLEdBQ0FELEVBQUFuWixFQUFB
NU0sS0FBQTZNLEVBQUFqTSxFQUFBQyxFQUFBWCxFQUFBa0IsRUFBQUMsRUFBQUMsR0FDQXdrQixH
QUFBLEVBQ0ssUUFDTCxJQUNBLEdBQUFBLEVBR0EsSUFDQS9rQixLQUFBa2xCLFNBQUEsR0FDVyxN
QUFBcmlCLFFBSVg3QyxNQUFBa2xCLFNBQUEsR0FFTyxRQUNQbGxCLEtBQUE2a0Isa0JBQUEsR0FH
QSxNQUFBRyxJQUdBQyxjQUFBLFNBQUFFLEdBRUEsT0FEQVIsR0FBQTNrQixLQUFBMmtCLG9CQUNB
dGxCLEVBQUE4bEIsRUFBNEI5bEIsRUFBQXNsQixFQUFBcmpCLE9BQWdDakMsSUFBQSxDQUM1RCxH
QUFBK2xCLEdBQUFULEVBQUF0bEIsRUFDQSxLQUtBVyxLQUFBNGtCLGdCQUFBdmxCLEdBQUFvbEIs
RUFDQXprQixLQUFBNGtCLGdCQUFBdmxCLEdBQUErbEIsRUFBQW5hLFdBQUFtYSxFQUFBbmEsV0FB
QWhNLEtBQUFlLE1BQUEsS0FDTyxRQUNQLEdBQUFBLEtBQUE0a0IsZ0JBQUF2bEIsS0FBQW9sQixF
QUlBLElBQ0F6a0IsS0FBQWlsQixjQUFBNWxCLEVBQUEsR0FDVyxNQUFBd0QsUUFZWHFpQixTQUFB
LFNBQUFDLEdBQ0FubEIsS0FBQThrQixrQkFBQSxPQUFBeGYsRUFBQSxLQUVBLFFBREFxZixHQUFB
M2tCLEtBQUEya0Isb0JBQ0F0bEIsRUFBQThsQixFQUE0QjlsQixFQUFBc2xCLEVBQUFyakIsT0FB
Z0NqQyxJQUFBLENBQzVELEdBRUEwbEIsR0FGQUssRUFBQVQsRUFBQXRsQixHQUNBZ21CLEVBQUFy
bEIsS0FBQTRrQixnQkFBQXZsQixFQUVBLEtBS0EwbEIsR0FBQSxFQUNBTSxJQUFBWixHQUFBVyxF
QUFBbGEsT0FDQWthLEVBQUFsYSxNQUFBak0sS0FBQWUsS0FBQXFsQixHQUVBTixHQUFBLEVBQ08s
UUFDUCxHQUFBQSxFQUlBLElBQ0Eva0IsS0FBQWtsQixTQUFBN2xCLEVBQUEsR0FDVyxNQUFBaUIs
TUFJWE4sS0FBQTRrQixnQkFBQXRqQixPQUFBLEdBSUF4QyxHQUFBRCxRQUFBNmxCLEcxQnFtR00s
U0FBUzVsQixFQUFRRCxHMkJweUd2QixZQWtCQSxTQUFBeW1CLEdBQUFDLEdBQ0EsR0FBQUMsR0FB
QSxHQUFBRCxFQUNBRSxFQUFBQyxFQUFBQyxLQUFBSCxFQUVBLEtBQUFDLEVBQ0EsTUFBQUQsRUFH
QSxJQUFBSSxHQUNBM1csRUFBQSxHQUNBNFcsRUFBQSxFQUNBQyxFQUFBLENBRUEsS0FBQUQsRUFB
QUosRUFBQUksTUFBMkJBLEVBQUFMLEVBQUFsa0IsT0FBb0J1a0IsSUFBQSxDQUMvQyxPQUFBTCxF
QUFBTyxXQUFBRixJQUNBLFFBRUFELEVBQUEsUUFDQSxNQUNBLFNBRUFBLEVBQUEsT0FDQSxNQUNB
LFNBRUFBLEVBQUEsUUFDQSxNQUNBLFNBRUFBLEVBQUEsTUFDQSxNQUNBLFNBRUFBLEVBQUEsTUFD
QSxNQUNBLFNBQ0EsU0FHQUUsSUFBQUQsSUFDQTVXLEdBQUF1VyxFQUFBUSxVQUFBRixFQUFBRCxJ
QUdBQyxFQUFBRCxFQUFBLEVBQ0E1VyxHQUFBMlcsRUFHQSxNQUFBRSxLQUFBRCxFQUFBNVcsRUFB
QXVXLEVBQUFRLFVBQUFGLEVBQUFELEdBQUE1VyxFQVVBLFFBQUFnWCxHQUFBOVcsR0FDQSx1QkFB
QUEsSUFBQSxnQkFBQUEsR0FJQSxHQUFBQSxFQUVBbVcsRUFBQW5XLEdBMUVBLEdBQUF1VyxHQUFB
LFNBNkVBNW1CLEdBQUFELFFBQUFvbkIsRzNCNjBHTSxTQUFTbm5CLEVBQVFELEVBQVNILEc0QjM3
R2hDLFlBRUEsSUFTQXduQixHQVRBdmYsRUFBQWpJLEVBQUEsR0FDQXVSLEVBQUF2UixFQUFBLElB
RUF5bkIsRUFBQSxlQUNBQyxFQUFBLHVEQUVBbFcsRUFBQXhSLEVBQUEsSUFhQXdRLEVBQUFnQixF
QUFBLFNBQUF6TSxFQUFBd0wsR0FJQSxHQUFBeEwsRUFBQWtOLGVBQUFWLEVBQUFvVyxLQUFBLGFB
QUE1aUIsR0FRQUEsRUFBQTZpQixVQUFBclgsTUFSQSxDQUNBaVgsS0FBQXpmLFNBQUFDLGNBQUEs
T0FDQXdmLEVBQUFJLFVBQUEsUUFBQXJYLEVBQUEsUUFFQSxLQURBLEdBQUFzWCxHQUFBTCxFQUFB
bGhCLFdBQ0F1aEIsRUFBQXZoQixZQUNBdkIsRUFBQW1NLFlBQUEyVyxFQUFBdmhCLGNBT0EsSUFB
QTJCLEVBQUFKLFVBQUEsQ0FPQSxHQUFBaWdCLEdBQUEvZixTQUFBQyxjQUFBLE1BQ0E4ZixHQUFB
RixVQUFBLElBQ0EsS0FBQUUsRUFBQUYsWUFDQXBYLEVBQUEsU0FBQXpMLEVBQUF3TCxHQWNBLEdB
UkF4TCxFQUFBaUMsWUFDQWpDLEVBQUFpQyxXQUFBOEosYUFBQS9MLEtBT0EwaUIsRUFBQTNWLEtB
QUF2QixJQUFBLE1BQUFBLEVBQUEsSUFBQW1YLEVBQUE1VixLQUFBdkIsR0FBQSxDQU9BeEwsRUFB
QTZpQixVQUFBdGtCLE9BQUFHLGFBQUEsT0FBQThNLENBSUEsSUFBQXdYLEdBQUFoakIsRUFBQXVC
LFVBQ0EsS0FBQXloQixFQUFBQyxLQUFBcGxCLE9BQ0FtQyxFQUFBa2pCLFlBQUFGLEdBRUFBLEVB
QUFHLFdBQUEsU0FHQW5qQixHQUFBNmlCLFVBQUFyWCxJQUlBdVgsRUFBQSxLQUdBMW5CLEVBQUFE
LFFBQUFxUSxHNUIyOEdNLFNBQVNwUSxFQUFRRCxFQUFTSCxHNkIzaUhoQyxZQTZCQSxTQUFBbW9C
LEdBQUFDLEdBQXNDLE1BQUFBLE1BQUFDLFdBQUFELEdBQXVDRSxRQUFBRixHQTNCN0Vqb0IsRUFB
QWtvQixZQUFBLEVBQ0Fsb0IsRUFBQW9vQixRQUFBcG9CLEVBQUFxb0IsZ0JBQUFyb0IsRUFBQXNv
QixtQkFBQXRvQixFQUFBdW9CLGdCQUFBdm9CLEVBQUF3b0IsWUFBQTNtQixNQUVBLElBQUE0bUIs
R0FBQTVvQixFQUFBLElBRUE2b0IsRUFBQVYsRUFBQVMsR0FFQUUsRUFBQTlvQixFQUFBLEtBRUEr
b0IsRUFBQVosRUFBQVcsR0FFQUUsRUFBQWhwQixFQUFBLEtBRUFpcEIsRUFBQWQsRUFBQWEsR0FF
QUUsRUFBQWxwQixFQUFBLEtBRUFtcEIsRUFBQWhCLEVBQUFlLEdBRUFFLEVBQUFwcEIsRUFBQSxJ
QUVBcXBCLEVBQUFsQixFQUFBaUIsR0FFQUUsRUFBQXRwQixFQUFBLEdBRUFtb0IsR0FBQW1CLEVB
Y0FucEIsR0FBQXdvQixZQUFBRSxFQUFBLFFBQ0Exb0IsRUFBQXVvQixnQkFBQUssRUFBQSxRQUNB
NW9CLEVBQUFzb0IsbUJBQUFRLEVBQUEsUUFDQTlvQixFQUFBcW9CLGdCQUFBVyxFQUFBLFFBQ0Fo
cEIsRUFBQW9vQixRQUFBYyxFQUFBLFM3QmlqSE0sU0FBU2pwQixFQUFRRCxFQUFTSCxHOEI5bEho
QyxHQUFBdXBCLEdBQUFDLEdBT0EsV0FDQSxZQUlBLFNBQUFDLEtBR0EsT0FGQUMsTUFFQS9vQixF
QUFBLEVBQWlCQSxFQUFBZ0MsVUFBQUMsT0FBc0JqQyxJQUFBLENBQ3ZDLEdBQUFnSSxHQUFBaEcs
VUFBQWhDLEVBQ0EsSUFBQWdJLEVBQUEsQ0FFQSxHQUFBZ2hCLFNBQUFoaEIsRUFFQSxlQUFBZ2hC
LEdBQUEsV0FBQUEsRUFDQUQsRUFBQTNpQixLQUFBNEIsT0FDSSxJQUFBeVAsTUFBQXdSLFFBQUFq
aEIsR0FDSitnQixFQUFBM2lCLEtBQUEwaUIsRUFBQXBvQixNQUFBLEtBQUFzSCxRQUNJLGVBQUFn
aEIsRUFDSixPQUFBOWtCLEtBQUE4RCxHQUNBa2hCLEVBQUF0cEIsS0FBQW9JLEVBQUE5RCxJQUFB
OEQsRUFBQTlELElBQ0E2a0IsRUFBQTNpQixLQUFBbEMsSUFNQSxNQUFBNmtCLEdBQUE3bEIsS0FB
QSxLQXhCQSxHQUFBZ21CLE1BQWdCL29CLGNBMkJoQixvQkFBQVYsTUFBQUQsUUFDQUMsRUFBQUQs
UUFBQXNwQixHQUdBRixLQUFBQyxFQUFBLFdBQ0EsTUFBQUMsSUFDR3BvQixNQUFBbEIsRUFBQW9w
QixLQUFBdm5CLFNBQUF3bkIsSUFBQXBwQixFQUFBRCxRQUFBcXBCLFM5QnltSEcsU0FBU3BwQixF
QUFRRCxHK0J0b0h2QixZQVFBLFNBQUEycEIsR0FBQUMsRUFBQUMsR0FFQSxNQUFBRCxLQUFBQyxF
QUlBLElBQUFELEdBQUEsSUFBQUMsR0FBQSxFQUFBRCxJQUFBLEVBQUFDLEVBR0FELE9BQUFDLE1B
U0EsUUFBQUMsR0FBQUMsRUFBQUMsR0FDQSxHQUFBTCxFQUFBSSxFQUFBQyxHQUNBLFFBR0Esb0JB
QUFELElBQUEsT0FBQUEsR0FBQSxnQkFBQUMsSUFBQSxPQUFBQSxFQUNBLFFBR0EsSUFBQUMsR0FB
QXhwQixPQUFBc0QsS0FBQWdtQixHQUNBRyxFQUFBenBCLE9BQUFzRCxLQUFBaW1CLEVBRUEsSUFB
QUMsRUFBQXhuQixTQUFBeW5CLEVBQUF6bkIsT0FDQSxRQUlBLFFBQUFqQyxHQUFBLEVBQWlCQSxF
QUFBeXBCLEVBQUF4bkIsT0FBa0JqQyxJQUNuQyxJQUFBRyxFQUFBUCxLQUFBNHBCLEVBQUFDLEVB
QUF6cEIsTUFBQW1wQixFQUFBSSxFQUFBRSxFQUFBenBCLElBQUF3cEIsRUFBQUMsRUFBQXpwQixL
QUNBLFFBSUEsVUEvQ0EsR0FBQUcsR0FBQUYsT0FBQUMsVUFBQUMsY0FrREFWLEdBQUFELFFBQUE4
cEIsRy9CMHBITSxTQUFTN3BCLEVBQVFELEVBQVNILEdnQzVxSGhDLFFBQUFzcUIsR0FBQWxZLEdB
Q0EsSUFBQW1ZLEVBQUFuWSxJQUFBb1ksRUFBQXBZLElBQUFxWSxFQUNBLFFBRUEsSUFBQUMsR0FB
QUMsRUFBQXZZLEVBQ0EsV0FBQXNZLEVBQ0EsUUFFQSxJQUFBRSxHQUFBOXBCLEVBQUFQLEtBQUFt
cUIsRUFBQSxnQkFBQUEsRUFBQXRjLFdBQ0EseUJBQUF3YyxvQkFDQUMsRUFBQXRxQixLQUFBcXFC
LElBQUFFLEVBMURBLEdBQUFOLEdBQUF4cUIsRUFBQSxLQUNBMnFCLEVBQUEzcUIsRUFBQSxLQUNB
dXFCLEVBQUF2cUIsRUFBQSxLQUdBeXFCLEVBQUEsa0JBR0FNLEVBQUFDLFNBQUFucUIsVUFDQW9x
QixFQUFBcnFCLE9BQUFDLFVBR0FncUIsRUFBQUUsRUFBQXBqQixTQUdBN0csRUFBQW1xQixFQUFB
bnFCLGVBR0FncUIsRUFBQUQsRUFBQXRxQixLQUFBSyxPQTJDQVIsR0FBQUQsUUFBQW1xQixHaENt
dUhNLFNBQVNscUIsRUFBUUQsRUFBU0gsR2lDdHhIaEMsWUFXQSxTQUFBa3JCLEdBQUFsa0IsRUFB
QWpDLEdBTUEsTUFIQXFULE9BQUF3UixRQUFBN2tCLEtBQ0FBLElBQUEsSUFFQUEsSUFBQTRCLFlB
QUFLLEVBQUFWLFdBa0JBLFFBQUE2a0IsR0FBQW5rQixFQUFBaUssRUFBQWMsR0FDQVQsRUFBQWhC
LGlCQUFBdEosRUFBQWlLLEVBQUFjLEdBR0EsUUFBQXFaLEdBQUFwa0IsRUFBQVgsRUFBQTBMLEdB
Q0FxRyxNQUFBd1IsUUFBQXZqQixHQUNBZ2xCLEVBQUFya0IsRUFBQVgsRUFBQSxHQUFBQSxFQUFB
LEdBQUEwTCxHQUVBdVosRUFBQXRrQixFQUFBWCxFQUFBMEwsR0FJQSxRQUFBa1csR0FBQWpoQixF
QUFBWCxHQUNBLEdBQUErUixNQUFBd1IsUUFBQXZqQixHQUFBLENBQ0EsR0FBQWtsQixHQUFBbGxC
LEVBQUEsRUFDQUEsS0FBQSxHQUNBbWxCLEVBQUF4a0IsRUFBQVgsRUFBQWtsQixHQUNBdmtCLEVB
QUFpaEIsWUFBQXNELEdBRUF2a0IsRUFBQWloQixZQUFBNWhCLEdBR0EsUUFBQWdsQixHQUFBcmtC
LEVBQUF5a0IsRUFBQUYsRUFBQXhaLEdBRUEsSUFEQSxHQUFBaE4sR0FBQTBtQixJQUNBLENBQ0Es
R0FBQUMsR0FBQTNtQixFQUFBNEIsV0FFQSxJQURBMmtCLEVBQUF0a0IsRUFBQWpDLEVBQUFnTixH
QUNBaE4sSUFBQXdtQixFQUNBLEtBRUF4bUIsR0FBQTJtQixHQUlBLFFBQUFGLEdBQUF4a0IsRUFB
QTJrQixFQUFBSixHQUNBLFFBQ0EsR0FBQXhtQixHQUFBNG1CLEVBQUFobEIsV0FDQSxJQUFBNUIs
SUFBQXdtQixFQUVBLEtBRUF2a0IsR0FBQWloQixZQUFBbGpCLElBS0EsUUFBQTZtQixHQUFBSCxF
QUFBRixFQUFBTSxHQUNBLEdBQUE3a0IsR0FBQXlrQixFQUFBemtCLFdBQ0E4a0IsRUFBQUwsRUFB
QTlrQixXQUNBbWxCLEtBQUFQLEVBR0FNLEdBQ0FQLEVBQUF0a0IsRUFBQWUsU0FBQWdrQixlQUFB
RixHQUFBQyxHQUdBRCxHQUdBbmIsRUFBQW9iLEVBQUFELEdBQ0FMLEVBQUF4a0IsRUFBQThrQixF
QUFBUCxJQUVBQyxFQUFBeGtCLEVBQUF5a0IsRUFBQUYsR0EvRkEsR0FBQWphLEdBQUF0UixFQUFB
LElBQ0Fnc0IsRUFBQWhzQixFQUFBLEtBSUF3UixHQUhBeFIsRUFBQSxHQUNBQSxFQUFBLEdBRUFB
LEVBQUEsS0FDQXdRLEVBQUF4USxFQUFBLElBQ0EwUSxFQUFBMVEsRUFBQSxJQW1CQXNyQixFQUFB
OVosRUFBQSxTQUFBeEssRUFBQVgsRUFBQTBMLEdBSUEvSyxFQUFBa0wsYUFBQTdMLEVBQUEwTCxL
QThFQWthLEVBQUFELEVBQUFDLGlDQTBCQUMsR0FDQUQsbUNBRUFMLHVCQVNBTyxlQUFBLFNBQUFu
bEIsRUFBQW9sQixHQUtBLE9BQUFDLEdBQUEsRUFBbUJBLEVBQUFELEVBQUF4cEIsT0FBb0J5cEIs
SUFBQSxDQUN2QyxHQUFBQyxHQUFBRixFQUFBQyxFQUNBLFFBQUFDLEVBQUFyaEIsTUFDQSxvQkFD
QWtnQixFQUFBbmtCLEVBQUFzbEIsRUFBQUMsUUFBQXJCLEVBQUFsa0IsRUFBQXNsQixFQUFBRSxX
QVdBLE1BQ0EscUJBQ0FwQixFQUFBcGtCLEVBQUFzbEIsRUFBQUcsU0FBQXZCLEVBQUFsa0IsRUFB
QXNsQixFQUFBRSxXQVFBLE1BQ0Esa0JBQ0FoYyxFQUFBeEosRUFBQXNsQixFQUFBQyxRQVFBLE1B
Q0Esb0JBQ0E3YixFQUFBMUosRUFBQXNsQixFQUFBQyxRQVFBLE1BQ0EsbUJBQ0F0RSxFQUFBamhC
LEVBQUFzbEIsRUFBQUcsYUFjQXJzQixHQUFBRCxRQUFBK3JCLEdqQ3N5SE0sU0FBUzlyQixFQUFR
RCxHa0M1L0h2QixZQUVBLElBQUFvUixJQUNBaEIsS0FBQSwrQkFDQW1jLE9BQUEscUNBQ0EvRSxJ
QUFBLDZCQUdBdm5CLEdBQUFELFFBQUFvUixHbEM0Z0lNLFNBQVNuUixFQUFRRCxFQUFTSCxHbUNu
aEloQyxZQXFCQSxTQUFBMnNCLEtBQ0EsR0FBQUMsRUFJQSxPQUFBQyxLQUFBQyxHQUFBLENBQ0Es
R0FBQUMsR0FBQUQsRUFBQUQsR0FDQUcsRUFBQUosRUFBQUssUUFBQUosRUFFQSxJQURBRyxLQUFB
LE9BQUFwbUIsRUFBQSxLQUFBaW1CLElBQ0ExVCxFQUFBK0IsUUFBQThSLEdBQUEsQ0FHQUQsRUFB
QWhTLGNBQUEsT0FBQW5VLEVBQUEsS0FBQWltQixHQUNBMVQsRUFBQStCLFFBQUE4UixHQUFBRCxD
QUNBLElBQUFHLEdBQUFILEVBQUFJLFVBQ0EsUUFBQUMsS0FBQUYsR0FDQUcsRUFBQUgsRUFBQUUs
R0FBQUwsRUFBQUssR0FBQSxPQUFBeG1CLEVBQUEsS0FBQXdtQixFQUFBUCxLQWFBLFFBQUFRLEdB
QUF2ZixFQUFBaWYsRUFBQUssR0FDQWpVLEVBQUFtVSx5QkFBQXhzQixlQUFBc3NCLEdBQUF4bUIs
RUFBQSxLQUFBd21CLEdBQUEsT0FDQWpVLEVBQUFtVSx5QkFBQUYsR0FBQXRmLENBRUEsSUFBQStO
LEdBQUEvTixFQUFBK04sdUJBQ0EsSUFBQUEsRUFBQSxDQUNBLE9BQUEwUixLQUFBMVIsR0FDQSxH
QUFBQSxFQUFBL2EsZUFBQXlzQixHQUFBLENBQ0EsR0FBQUMsR0FBQTNSLEVBQUEwUixFQUNBRSxH
QUFBRCxFQUFBVCxFQUFBSyxHQUdBLFNBQ0csUUFBQXRmLEVBQUF1TSxtQkFDSG9ULEVBQUEzZixF
QUFBdU0saUJBQUEwUyxFQUFBSyxJQUNBLEdBYUEsUUFBQUssR0FBQXBULEVBQUEwUyxFQUFBSyxH
QUNBalUsRUFBQXNCLHdCQUFBSixHQUFBelQsRUFBQSxNQUFBeVQsR0FBQSxPQUNBbEIsRUFBQXNC
LHdCQUFBSixHQUFBMFMsRUFDQTVULEVBQUF3Syw2QkFBQXRKLEdBQUEwUyxFQUFBSSxXQUFBQyxH
QUFBMUosYUEvRUEsR0FBQTljLEdBQUE1RyxFQUFBLEdBT0E0c0IsR0FMQTVzQixFQUFBLEdBS0Es
TUFLQThzQixLQW9GQTNULEdBSUErQixXQUtBb1MsNEJBS0E3UywyQkFLQWtKLGdDQVFBK0osMEJB
QXVFLEtBWXZFeFQsdUJBQUEsU0FBQXlULEdBQ0FmLEVBQUFobUIsRUFBQSxjQUVBZ21CLEVBQUF4
VSxNQUFBdlgsVUFBQUksTUFBQVYsS0FBQW90QixHQUNBaEIsS0FhQXhTLHlCQUFBLFNBQUF5VCxH
QUNBLEdBQUFDLElBQUEsQ0FDQSxRQUFBaEIsS0FBQWUsR0FDQSxHQUFBQSxFQUFBOXNCLGVBQUEr
ckIsR0FBQSxDQUdBLEdBQUFFLEdBQUFhLEVBQUFmLEVBQ0FDLEdBQUFoc0IsZUFBQStyQixJQUFB
QyxFQUFBRCxLQUFBRSxJQUNBRCxFQUFBRCxHQUFBam1CLEVBQUEsTUFBQWltQixHQUFBLE9BQ0FD
LEVBQUFELEdBQUFFLEVBQ0FjLEdBQUEsR0FHQUEsR0FDQWxCLEtBV0FtQix3QkFBQSxTQUFBM2Us
R0FDQSxHQUFBckIsR0FBQXFCLEVBQUFyQixjQUNBLElBQUFBLEVBQUF1TSxpQkFDQSxNQUFBbEIs
R0FBQXNCLHdCQUFBM00sRUFBQXVNLG1CQUFBLElBRUEsSUFBQXJZLFNBQUE4TCxFQUFBK04sd0JB
QUEsQ0FHQSxHQUFBQSxHQUFBL04sRUFBQStOLHVCQUVBLFFBQUFFLEtBQUFGLEdBQ0EsR0FBQUEs
RUFBQS9hLGVBQUFpYixHQUFBLENBR0EsR0FBQWdSLEdBQUE1VCxFQUFBc0Isd0JBQUFvQixFQUFB
RSxHQUNBLElBQUFnUixFQUNBLE1BQUFBLElBSUEsYUFPQWdCLG1CQUFBLFdBQ0FuQixFQUFBLElB
Q0EsUUFBQUMsS0FBQUMsR0FDQUEsRUFBQWhzQixlQUFBK3JCLFVBQ0FDLEdBQUFELEVBR0ExVCxH
QUFBK0IsUUFBQXRZLE9BQUEsQ0FFQSxJQUFBMHFCLEdBQUFuVSxFQUFBbVUsd0JBQ0EsUUFBQUYs
S0FBQUUsR0FDQUEsRUFBQXhzQixlQUFBc3NCLFVBQ0FFLEdBQUFGLEVBSUEsSUFBQTNTLEdBQUF0
QixFQUFBc0IsdUJBQ0EsUUFBQUosS0FBQUksR0FDQUEsRUFBQTNaLGVBQUF1WixVQUNBSSxHQUFB
SixJQWVBamEsR0FBQUQsUUFBQWdaLEduQ29pSU0sU0FBUy9ZLEVBQVFELEVBQVNILEdvQ3J4SWhD
LFlBa0NBLFNBQUFndUIsR0FBQWhULEdBQ0EscUJBQUFBLEdBQUEsZ0JBQUFBLEdBQUEsbUJBQUFB
LEVBR0EsUUFBQWlULEdBQUFqVCxHQUNBLHVCQUFBQSxHQUFBLGlCQUFBQSxFQUVBLFFBQUFrVCxH
QUFBbFQsR0FDQSx1QkFBQUEsR0FBQSxrQkFBQUEsRUEwQkEsUUFBQW1ULEdBQUFoZixFQUFBd0ss
RUFBQVcsRUFBQTVVLEdBQ0EsR0FBQXVGLEdBQUFrRSxFQUFBbEUsTUFBQSxlQUNBa0UsR0FBQUws
Y0FBQXNLLEVBQUFoUyxvQkFBQTFCLEdBQ0FpVSxFQUNBTixFQUFBK1UsK0JBQUFuakIsRUFBQXFQ
LEVBQUFuTCxHQUVBa0ssRUFBQWdWLHNCQUFBcGpCLEVBQUFxUCxFQUFBbkwsR0FFQUEsRUFBQUws
Y0FBQSxLQU1BLFFBQUE4SyxHQUFBekssRUFBQXdLLEdBQ0EsR0FBQTJVLEdBQUFuZixFQUFBNk0s
bUJBQ0F1UyxFQUFBcGYsRUFBQThNLGtCQUlBLElBQUE3RCxNQUFBd1IsUUFBQTBFLEdBQ0EsT0FB
QTN0QixHQUFBLEVBQW1CQSxFQUFBMnRCLEVBQUExckIsU0FDbkJ1TSxFQUFBVCx1QkFEaUQvTixJ
QUtqRHd0QixFQUFBaGYsRUFBQXdLLEVBQUEyVSxFQUFBM3RCLEdBQUE0dEIsRUFBQTV0QixRQUVH
MnRCLElBQ0hILEVBQUFoZixFQUFBd0ssRUFBQTJVLEVBQUFDLEVBRUFwZixHQUFBNk0sbUJBQUEs
S0FDQTdNLEVBQUE4TSxtQkFBQSxLQVVBLFFBQUF1UyxHQUFBcmYsR0FDQSxHQUFBbWYsR0FBQW5m
LEVBQUE2TSxtQkFDQXVTLEVBQUFwZixFQUFBOE0sa0JBSUEsSUFBQTdELE1BQUF3UixRQUFBMEUs
SUFDQSxPQUFBM3RCLEdBQUEsRUFBbUJBLEVBQUEydEIsRUFBQTFyQixTQUNuQnVNLEVBQUFULHVC
QURpRC9OLElBS2pELEdBQUEydEIsRUFBQTN0QixHQUFBd08sRUFBQW9mLEVBQUE1dEIsSUFDQSxN
QUFBNHRCLEdBQUE1dEIsT0FHRyxJQUFBMnRCLEdBQ0hBLEVBQUFuZixFQUFBb2YsR0FDQSxNQUFB
QSxFQUdBLGFBTUEsUUFBQUUsR0FBQXRmLEdBQ0EsR0FBQW1YLEdBQUFrSSxFQUFBcmYsRUFHQSxP
QUZBQSxHQUFBOE0sbUJBQUEsS0FDQTlNLEVBQUE2TSxtQkFBQSxLQUNBc0ssRUFZQSxRQUFBb0ks
R0FBQXZmLEdBSUEsR0FBQXdmLEdBQUF4ZixFQUFBNk0sbUJBQ0E0UyxFQUFBemYsRUFBQThNLGtC
QUNBN0QsT0FBQXdSLFFBQUErRSxHQUFBL25CLEVBQUEsY0FDQXVJLEVBQUFMLGNBQUE2ZixFQUFB
dlYsRUFBQWhTLG9CQUFBd25CLEdBQUEsSUFDQSxJQUFBQyxHQUFBRixJQUFBeGYsR0FBQSxJQUlB
LE9BSEFBLEdBQUFMLGNBQUEsS0FDQUssRUFBQTZNLG1CQUFBLEtBQ0E3TSxFQUFBOE0sbUJBQUEs
S0FDQTRTLEVBT0EsUUFBQUMsR0FBQTNmLEdBQ0EsUUFBQUEsRUFBQTZNLG1CQTNLQSxHQWVBK1Ms
R0FDQUMsRUFoQkFwb0IsRUFBQTVHLEVBQUEsR0FFQXFaLEVBQUFyWixFQUFBLElBZUE0TixHQWJB
NU4sRUFBQSxHQUNBQSxFQUFBLElBYUFpdkIsb0JBQUEsU0FBQUMsR0FDQUgsRUFBQUcsR0FLQUMs
b0JBQUEsU0FBQUQsR0FDQUYsRUFBQUUsS0F3SkE5VixHQUNBNFUsV0FDQUMsWUFDQUMsYUFFQVEs
d0JBQ0E5VSwyQkFDQTZVLHFDQUNBSyxnQkFFQTNuQixvQkFBQSxTQUFBcEMsR0FDQSxNQUFBZ3FC
LEdBQUE1bkIsb0JBQUFwQyxJQUVBcUMsb0JBQUEsU0FBQXJDLEdBQ0EsTUFBQWdxQixHQUFBM25C
LG9CQUFBckMsSUFFQXFxQixXQUFBLFNBQUFqdUIsRUFBQUMsR0FDQSxNQUFBNHRCLEdBQUFJLFdB
QUFqdUIsRUFBQUMsSUFFQWl1Qix3QkFBQSxTQUFBbHVCLEVBQUFDLEdBQ0EsTUFBQTR0QixHQUFB
Syx3QkFBQWx1QixFQUFBQyxJQUVBa2Isa0JBQUEsU0FBQTVXLEdBQ0EsTUFBQXNwQixHQUFBMVMs
a0JBQUE1VyxJQUVBeVcsaUJBQUEsU0FBQTVYLEVBQUFyRCxFQUFBeUgsR0FDQSxNQUFBcW1CLEdB
QUE3UyxpQkFBQTVYLEVBQUFyRCxFQUFBeUgsSUFFQW9VLG1CQUFBLFNBQUF0WSxFQUFBRSxFQUFB
ekQsRUFBQW91QixFQUFBQyxHQUNBLE1BQUFQLEdBQUFqUyxtQkFBQXRZLEVBQUFFLEVBQUF6RCxF
QUFBb3VCLEVBQUFDLElBR0EzaEIsWUFHQXhOLEdBQUFELFFBQUFpWixHcENxeUlNLFNBQVNoWixF
QUFRRCxHcUMxL0l2QixZQVNBLFNBQUErbUIsR0FBQXJpQixHQUNBLEdBQUEycUIsR0FBQSxRQUNB
QyxHQUNBQyxJQUFBLEtBQ0FDLElBQUEsTUFFQUMsR0FBQSxHQUFBL3FCLEdBQUExQyxRQUFBcXRC
LEVBQUEsU0FBQXpJLEdBQ0EsTUFBQTBJLEdBQUExSSxJQUdBLFdBQUE2SSxFQVNBLFFBQUFDLEdB
QUFockIsR0FDQSxHQUFBaXJCLEdBQUEsV0FDQUMsR0FDQUMsS0FBQSxJQUNBQyxLQUFBLEtBRUFD
LEVBQUEsTUFBQXJyQixFQUFBLFVBQUFBLEVBQUEsR0FBQUEsRUFBQXlpQixVQUFBLEdBQUF6aUIs
RUFBQXlpQixVQUFBLEVBRUEsV0FBQTRJLEdBQUEvdEIsUUFBQTJ0QixFQUFBLFNBQUEvSSxHQUNB
LE1BQUFnSixHQUFBaEosS0FJQSxHQUFBb0osSUFDQWpKLFNBQ0EySSxXQUdBenZCLEdBQUFELFFB
QUFnd0IsR3JDMmdKTSxTQUFTL3ZCLEVBQVFELEVBQVNILEdzQzFqSmhDLFlBdUJBLFNBQUFvd0Is
R0FBQUMsR0FDQSxNQUFBQSxFQUFBQyxhQUFBLE1BQUFELEVBQUFFLFVBQUEzcEIsRUFBQSxhQUVB
LFFBQUE0cEIsR0FBQUgsR0FDQUQsRUFBQUMsR0FDQSxNQUFBQSxFQUFBamUsT0FBQSxNQUFBaWUs
RUFBQUksU0FBQTdwQixFQUFBLGFBR0EsUUFBQThwQixHQUFBTCxHQUNBRCxFQUFBQyxHQUNBLE1B
QUFBLEVBQUFNLFNBQUEsTUFBQU4sRUFBQUksU0FBQTdwQixFQUFBLGFBb0JBLFFBQUFncUIsR0FB
QS9ZLEdBQ0EsR0FBQUEsRUFBQSxDQUNBLEdBQUF6VixHQUFBeVYsRUFBQTFNLFNBQ0EsSUFBQS9J
LEVBQ0Esc0NBQUFBLEVBQUEsS0FHQSxTQTFEQSxHQUFBd0UsR0FBQTVHLEVBQUEsR0FFQTZ3QixF
QUFBN3dCLEVBQUEsS0FDQTh3QixFQUFBOXdCLEVBQUEsSUFFQXlXLEVBQUF6VyxFQUFBLElBQ0Fp
WCxFQUFBNlosRUFBQXJhLEVBQUFPLGdCQUtBK1osR0FIQS93QixFQUFBLEdBQ0FBLEVBQUEsSUFH
QXFsQixRQUFBLEVBQ0EyTCxVQUFBLEVBQ0FDLE9BQUEsRUFDQUMsUUFBQSxFQUNBQyxPQUFBLEVB
Q0F2a0IsT0FBQSxFQUNBd2tCLFFBQUEsSUFnQkFDLEdBQ0FqZixNQUFBLFNBQUEwRixFQUFBekos
RUFBQWlqQixHQUNBLE9BQUF4WixFQUFBekosSUFBQTBpQixFQUFBalosRUFBQTdNLE9BQUE2TSxF
QUFBMlksVUFBQTNZLEVBQUF5WixVQUFBelosRUFBQW9CLFNBQ0EsS0FFQSxHQUFBalgsT0FBQTtF
QUVBMHVCLFFBQUEsU0FBQTdZLEVBQUF6SixFQUFBaWpCLEdBQ0EsT0FBQXhaLEVBQUF6SixJQUFB
eUosRUFBQTJZLFVBQUEzWSxFQUFBeVosVUFBQXpaLEVBQUFvQixTQUNBLEtBRUEsR0FBQWpYLE9B
QUEsME5BRUF3dUIsU0FBQXhaLEVBQUF1YSxNQUdBQyxLQWVBQyxHQUNBQyxlQUFBLFNBQUFDLEVB
QUE5WixFQUFBRCxHQUNBLE9BQUF4SixLQUFBZ2pCLEdBQUEsQ0FDQSxHQUFBQSxFQUFBdndCLGVB
QUF1TixHQUNBLEdBQUF0TSxHQUFBc3ZCLEVBQUFoakIsR0FBQXlKLEVBQUF6SixFQUFBdWpCLEVB
QUEsWUFBQWYsRUFFQSxJQUFBOXVCLFlBQUFFLFVBQUFGLEVBQUFjLFVBQUE0dUIsSUFBQSxDQUdB
QSxFQUFBMXZCLEVBQUFjLFVBQUEsQ0FFQSt0QixHQUFBL1ksTUFVQWdhLFNBQUEsU0FBQXhCLEdB
Q0EsTUFBQUEsR0FBQUUsV0FDQUMsRUFBQUgsR0FDQUEsRUFBQUUsVUFBQW5lLE9BRUFpZSxFQUFB
amUsT0FRQTBmLFdBQUEsU0FBQXpCLEdBQ0EsTUFBQUEsR0FBQUMsYUFDQUksRUFBQUwsR0FDQUEs
RUFBQUMsWUFBQWxlLE9BRUFpZSxFQUFBTSxTQU9Bb0IsZ0JBQUEsU0FBQTFCLEVBQUFsaEIsR0FD
QSxNQUFBa2hCLEdBQUFFLFdBQ0FDLEVBQUFILEdBQ0FBLEVBQUFFLFVBQUF5QixjQUFBN2lCLEVB
QUE1SyxPQUFBNk4sUUFDS2llLEVBQUFDLGFBQ0xJLEVBQUFMLEdBQ0FBLEVBQUFDLFlBQUEwQixj
QUFBN2lCLEVBQUE1SyxPQUFBb3NCLFVBQ0tOLEVBQUFJLFNBQ0xKLEVBQUFJLFNBQUFsd0IsS0FB
QXlCLE9BQUFtTixHQURLLFFBTUwvTyxHQUFBRCxRQUFBdXhCLEd0QzBrSk0sU0FBU3R4QixFQUFR
RCxFQUFTSCxHdUN2c0poQyxZQUVBLElBQUE0RyxHQUFBNUcsRUFBQSxHQUlBaXlCLEdBRkFqeUIs
RUFBQSxJQUVBLEdBRUFreUIsR0FLQUMsc0JBQUEsS0FNQUMsdUJBQUEsS0FFQXhrQixXQUNBeWtC
LGtCQUFBLFNBQUFDLEdBQ0FMLEVBQUFyckIsRUFBQSxjQUNBc3JCLEVBQUFDLHNCQUFBRyxFQUFB
SCxzQkFDQUQsRUFBQUUsdUJBQUFFLEVBQUFGLHVCQUNBSCxHQUFBLElBS0E3eEIsR0FBQUQsUUFB
QSt4QixHdkN3dEpNLFNBQVM5eEIsRUFBUUQsRUFBU0gsR3dDdnZKaEMsWUFZQSxTQUFBcXVCLEdB
QUFqc0IsRUFBQW92QixFQUFBcndCLEdBQ0EsSUFDQXF3QixFQUFBcndCLEdBQ0csTUFBQTRvQixH
QUNILE9BQUF3SSxJQUNBQSxFQUFBeEksSUFmQSxHQUFBd0ksR0FBQSxLQW9CQWxaLEdBQ0FnVix3
QkFNQUQsK0JBQUFDLEVBTUE3UyxtQkFBQSxXQUNBLEdBQUErVyxFQUFBLENBQ0EsR0FBQXh3QixH
QUFBd3dCLENBRUEsTUFEQUEsR0FBQSxLQUNBeHdCLElBd0JBM0IsR0FBQUQsUUFBQWtaLEd4Q3d3
Sk0sU0FBU2paLEVBQVFELEVBQVNILEd5Q3gwSmhDLFlBWUEsU0FBQTRMLEdBQUErSSxHQUNBdkws
RUFBQXdDLGNBQUErSSxHQUdBLFFBQUE2ZCxHQUFBN3BCLEdBQ0EsR0FBQXNDLFNBQUF0QyxFQUNB
LGVBQUFzQyxFQUNBLE1BQUFBLEVBRUEsSUFBQXduQixHQUFBOXBCLEVBQUF5RixhQUFBekYsRUFB
QXlGLFlBQUFoTSxNQUFBNkksRUFDQS9HLEVBQUF0RCxPQUFBc0QsS0FBQXlFLEVBQ0EsT0FBQXpF
LEdBQUF0QixPQUFBLEdBQUFzQixFQUFBdEIsT0FBQSxHQUNBNnZCLEVBQUEsV0FBQXZ1QixFQUFB
TCxLQUFBLFVBRUE0dUIsRUFHQSxRQUFBQyxHQUFBQyxFQUFBQyxHQUNBLEdBQUFqZSxHQUFBdUks
RUFBQUcsSUFBQXNWLEVBQ0EsS0FBQWhlLEVBQUEsQ0FRQSxZQU9BLE1BQUFBLEdBNUNBLEdBQUEv
TixHQUFBNUcsRUFBQSxHQUdBa2QsR0FEQWxkLEVBQUEsSUFDQUEsRUFBQSxLQUVBb0osR0FEQXBK
LEVBQUEsR0FDQUEsRUFBQSxJQThDQTZ5QixHQTVDQTd5QixFQUFBLEdBQ0FBLEVBQUEsSUFtREE4
eUIsVUFBQSxTQUFBSCxHQUVBLEdBTUFoZSxHQUFBdUksRUFBQUcsSUFBQXNWLEVBQ0EsU0FBQWhl
LEtBSUFBLEVBQUFuUCxvQkFlQXV0QixnQkFBQSxTQUFBSixFQUFBNW9CLEVBQUE2b0IsR0FDQUMs
RUFBQUcsaUJBQUFqcEIsRUFBQTZvQixFQUNBLElBQUFqZSxHQUFBK2QsRUFBQUMsRUFPQSxPQUFB
aGUsSUFJQUEsRUFBQWhLLGtCQUNBZ0ssRUFBQWhLLGtCQUFBNUQsS0FBQWdELEdBRUE0SyxFQUFB
aEssbUJBQUFaLE9BTUE2QixHQUFBK0ksSUFaQSxNQWVBc2Usd0JBQUEsU0FBQXRlLEVBQUE1SyxH
QUNBNEssRUFBQWhLLGtCQUNBZ0ssRUFBQWhLLGtCQUFBNUQsS0FBQWdELEdBRUE0SyxFQUFBaEss
bUJBQUFaLEdBRUE2QixFQUFBK0ksSUFnQkF1ZSxtQkFBQSxTQUFBUCxHQUNBLEdBQUFoZSxHQUFB
K2QsRUFBQUMsRUFBQSxjQUVBaGUsS0FJQUEsRUFBQXdlLHFCQUFBLEVBRUF2bkIsRUFBQStJLEtB
Y0F5ZSxvQkFBQSxTQUFBVCxFQUFBVSxFQUFBdHBCLEdBQ0EsR0FBQTRLLEdBQUErZCxFQUFBQyxF
QUFBLGVBRUFoZSxLQUlBQSxFQUFBMmUsb0JBQUFELEdBQ0ExZSxFQUFBNGUsc0JBQUEsRUFHQXZ4
QixTQUFBK0gsR0FBQSxPQUFBQSxJQUNBOG9CLEVBQUFHLGlCQUFBanBCLEVBQUEsZ0JBQ0E0SyxF
QUFBaEssa0JBQ0FnSyxFQUFBaEssa0JBQUE1RCxLQUFBZ0QsR0FFQTRLLEVBQUFoSyxtQkFBQVos
SUFJQTZCLEVBQUErSSxLQWFBNmUsZ0JBQUEsU0FBQWIsRUFBQWMsR0FNQSxHQUFBOWUsR0FBQStk
LEVBQUFDLEVBQUEsV0FFQSxJQUFBaGUsRUFBQSxDQUlBLEdBQUFySCxHQUFBcUgsRUFBQTJlLHFC
QUFBM2UsRUFBQTJlLHNCQUNBaG1CLEdBQUF2RyxLQUFBMHNCLEdBRUE3bkIsRUFBQStJLEtBR0Er
ZSx1QkFBQSxTQUFBL2UsRUFBQVksRUFBQW9lLEdBQ0FoZixFQUFBaWYsZ0JBQUFyZSxFQUVBWixF
QUFBYyxTQUFBa2UsRUFDQS9uQixFQUFBK0ksSUFHQXFlLGlCQUFBLFNBQUFqcEIsRUFBQTZvQixH
QUNBN29CLEdBQUEsa0JBQUFBLEdBQUFuRCxFQUFBLE1BQUFnc0IsRUFBQUosRUFBQXpvQixJQUFB
LFNBSUEzSixHQUFBRCxRQUFBMHlCLEd6Q3cxSk0sU0FBU3p5QixFQUFRRCxHMENwakt2QixZQU1B
LElBQUFxUixHQUFBLFNBQUFnZ0IsR0FDQSx5QkFBQXFDLGNBQUFDLHdCQUNBLFNBQUFDLEVBQUFD
LEVBQUFDLEVBQUFDLEdBQ0FMLE1BQUFDLHdCQUFBLFdBQ0EsTUFBQXRDLEdBQUF1QyxFQUFBQyxF
QUFBQyxFQUFBQyxNQUlBMUMsRUFJQXB4QixHQUFBRCxRQUFBcVIsRzFDc2tLTSxTQUFTcFIsRUFB
UUQsRzJDMWxLdkIsWUFhQSxTQUFBZzBCLEdBQUFubUIsR0FDQSxHQUFBb21CLEdBQ0FDLEVBQUFy
bUIsRUFBQXFtQixPQWdCQSxPQWRBLFlBQUFybUIsSUFDQW9tQixFQUFBcG1CLEVBQUFvbUIsU0FH
QSxJQUFBQSxHQUFBLEtBQUFDLElBQ0FELEVBQUEsS0FJQUEsRUFBQUMsRUFLQUQsR0FBQSxTQUFB
QSxFQUNBQSxFQUdBLEVBR0FoMEIsRUFBQUQsUUFBQWcwQixHM0MwbUtNLFNBQVMvekIsRUFBUUQs
RzRDaHBLdkIsWUFpQkEsU0FBQW0wQixHQUFBQyxHQUNBLEdBQUFDLEdBQUFsekIsS0FDQTBNLEVB
QUF3bUIsRUFBQXhtQixXQUNBLElBQUFBLEVBQUFvWCxpQkFDQSxNQUFBcFgsR0FBQW9YLGlCQUFB
bVAsRUFFQSxJQUFBRSxHQUFBQyxFQUFBSCxFQUNBLFNBQUFFLEtBQUF6bUIsRUFBQXltQixHQUdB
LFFBQUEvUCxHQUFBMVcsR0FDQSxNQUFBc21CLEdBckJBLEdBQUFJLElBQ0FDLElBQUEsU0FDQUMs
UUFBQSxVQUNBQyxLQUFBLFVBQ0FDLE1BQUEsV0FvQkExMEIsR0FBQUQsUUFBQXVrQixHNUNncUtN
LFNBQVN0a0IsRUFBUUQsRzZDL3JLdkIsWUFVQSxTQUFBdWQsR0FBQTFQLEdBQ0EsR0FBQXpKLEdB
QUF5SixFQUFBekosUUFBQXlKLEVBQUF5WCxZQUFBM2QsTUFTQSxPQU5BdkQsR0FBQXd3QiwwQkFD
QXh3QixJQUFBd3dCLHlCQUtBLElBQUF4d0IsRUFBQVUsU0FBQVYsRUFBQXlDLFdBQUF6QyxFQUdB
bkUsRUFBQUQsUUFBQXVkLEc3QytzS00sU0FBU3RkLEVBQVFELEVBQVNILEc4Q3R1S2hDLFlBMEJB
LFNBQUE0ZSxHQUFBb1csRUFBQUMsR0FDQSxJQUFBaHRCLEVBQUFKLFdBQUFvdEIsS0FBQSxvQkFB
QWx0QixXQUNBLFFBR0EsSUFBQXFsQixHQUFBLEtBQUE0SCxFQUNBRSxFQUFBOUgsSUFBQXJsQixT
QUVBLEtBQUFtdEIsRUFBQSxDQUNBLEdBQUFuZCxHQUFBaFEsU0FBQUMsY0FBQSxNQUNBK1AsR0FB
QW9kLGFBQUEvSCxFQUFBLFdBQ0E4SCxFQUFBLGtCQUFBbmQsR0FBQXFWLEdBUUEsT0FMQThILEdB
QUFFLEdBQUEsVUFBQUosSUFFQUUsRUFBQW50QixTQUFBc3RCLGVBQUFDLFdBQUEsdUJBR0FKLEVB
M0NBLEdBRUFFLEdBRkFudEIsRUFBQWpJLEVBQUEsRUFHQWlJLEdBQUFKLFlBQ0F1dEIsRUFBQXJ0
QixTQUFBc3RCLGdCQUFBdHRCLFNBQUFzdEIsZUFBQUMsWUFHQXZ0QixTQUFBc3RCLGVBQUFDLFdB
QUEsYUF1Q0FsMUIsRUFBQUQsUUFBQXllLEc5Q3N2S00sU0FBU3hlLEVBQVFELEcrQ3R5S3ZCLFlB
Y0EsU0FBQW8xQixHQUFBL2YsRUFBQUQsR0FDQSxHQUFBaWdCLEdBQUEsT0FBQWhnQixRQUFBLEVB
Q0FpZ0IsRUFBQSxPQUFBbGdCLFFBQUEsQ0FDQSxJQUFBaWdCLEdBQUFDLEVBQ0EsTUFBQUQsS0FB
QUMsQ0FHQSxJQUFBQyxTQUFBbGdCLEdBQ0FtZ0IsUUFBQXBnQixFQUNBLGtCQUFBbWdCLEdBQUEs
V0FBQUEsRUFDQSxXQUFBQyxHQUFBLFdBQUFBLEVBRUEsV0FBQUEsR0FBQW5nQixFQUFBdkssT0FB
QXNLLEVBQUF0SyxNQUFBdUssRUFBQTNRLE1BQUEwUSxFQUFBMVEsSUFJQXpFLEVBQUFELFFBQUFv
MUIsRy9Dc3pLTSxTQUFTbjFCLEVBQVFELEVBQVNILEdnRHAxS2hDLFlBRUEsSUFFQXNDLElBRkF0
QyxFQUFBLEdBRUFBLEVBQUEsSUFHQTQxQixHQUZBNTFCLEVBQUEsR0FFQXNDLEVBZ1dBbEMsR0FB
QUQsUUFBQXkxQixHaERvMktNLFNBQVN4MUIsRUFBUUQsR2lEcnRMdkIsWUFVQSxTQUFBb0MsR0FB
QU0sR0FFQSxtQkFBQXVJLFVBQUEsa0JBQUFBLFNBQUFySixPQUNBcUosUUFBQXJKLE1BQUFjLEVB
R0EsS0FJQSxTQUFBWixPQUFBWSxHQUVHLE1BQUFqQixLQXBCSHpCLEVBQUFrb0IsWUFBQSxFQUNB
bG9CLEVBQUFtb0IsUUFBQS9sQixHakRndkxNLFNBQVNuQyxFQUFRRCxFQUFTSCxHa0RudkxoQyxZ
QWFBLElBQUFzQyxHQUFBdEMsRUFBQSxHQU1BNjFCLEdBU0FDLE9BQUEsU0FBQXZ4QixFQUFBd3hC
LEVBQUFoc0IsR0FDQSxNQUFBeEYsR0FBQThELGtCQUNBOUQsRUFBQThELGlCQUFBMHRCLEVBQUFo
c0IsR0FBQSxJQUVBb1QsT0FBQSxXQUNBNVksRUFBQXl4QixvQkFBQUQsRUFBQWhzQixHQUFBLE1B
R0t4RixFQUFBK0QsYUFDTC9ELEVBQUErRCxZQUFBLEtBQUF5dEIsRUFBQWhzQixJQUVBb1QsT0FB
QSxXQUNBNVksRUFBQTB4QixZQUFBLEtBQUFGLEVBQUFoc0IsTUFKSyxRQWtCTGtyQixRQUFBLFNB
QUExd0IsRUFBQXd4QixFQUFBaHNCLEdBQ0EsTUFBQXhGLEdBQUE4RCxrQkFDQTlELEVBQUE4RCxp
QkFBQTB0QixFQUFBaHNCLEdBQUEsSUFFQW9ULE9BQUEsV0FDQTVZLEVBQUF5eEIsb0JBQUFELEVB
QUFoc0IsR0FBQSxPQVFBb1QsT0FBQTdhLElBS0E0ekIsZ0JBQUEsYUFHQTkxQixHQUFBRCxRQUFB
MDFCLEdsRHl2TE0sU0FBU3oxQixFQUFRRCxHbUQxekx2QixZQU1BLFNBQUFnMkIsR0FBQXB4QixH
QUlBLElBQ0FBLEVBQUFxeEIsUUFDRyxNQUFBeDBCLEtBR0h4QixFQUFBRCxRQUFBZzJCLEduRDAw
TE0sU0FBUy8xQixFQUFRRCxHb0RuMkx2QixZQXlCQSxTQUFBazJCLEdBQUF4WSxHQUVBLEdBREFB
LE1BQUEsbUJBQUE5VixtQkFBQS9GLFFBQ0EsbUJBQUE2YixHQUNBLFdBRUEsS0FDQSxNQUFBQSxH
QUFBeVksZUFBQXpZLEVBQUEwWSxLQUNHLE1BQUEzMEIsR0FDSCxNQUFBaWMsR0FBQTBZLE1BSUFu
MkIsRUFBQUQsUUFBQWsyQixHcER5MkxNLFNBQVNqMkIsRUFBUUQsRUFBU0gsR3FEOTRMaEMsR0FB
QXcyQixHQUFBeDJCLEVBQUEsS0FHQXkyQixFQUFBRCxFQUFBQyxNQUVBcjJCLEdBQUFELFFBQUFz
MkIsR3JEcTVMTSxTQUFTcjJCLEVBQVFELEVBQVNILEdzRGo1TGhDLFlBTUEsSUFBQXNZLEdBQUF0
WSxFQUFBLElBQ0FJLEdBQUFELFFBQUEsU0FBQTZXLEdBRUEsR0FBQTBmLElBQUEsQ0FDQSxPQUFB
cGUsR0FBQXRCLEVBQUEwZixLdERrNkxNLFNBQVN0MkIsRUFBUUQsRUFBU0gsR3VEejVMaENJLEVB
QUFELFFBQUFILEVBQUEsUXZENjdMTSxTQUFTSSxFQUFRRCxHd0RoOUx2QixZQUVBLElBQUEwd0Is
R0FBQSw4Q0FFQXp3QixHQUFBRCxRQUFBMHdCLEd4RGcrTE0sU0FBU3p3QixFQUFRRCxHeURuK0x2
QixZQXlEQSxTQUFBdzJCLEdBQUFDLEVBQUEveEIsR0FDQSxNQUFBK3hCLEdBQUEveEIsRUFBQWd5
QixPQUFBLEdBQUFDLGNBQUFqeUIsRUFBQXlpQixVQUFBLEdBcERBLEdBQUF5UCxJQUNBQyx5QkFB
QSxFQUNBQyxtQkFBQSxFQUNBQyxrQkFBQSxFQUNBQyxrQkFBQSxFQUNBQyxTQUFBLEVBQ0FDLGNB
QUEsRUFDQUMsaUJBQUEsRUFDQUMsYUFBQSxFQUNBQyxNQUFBLEVBQ0FDLFVBQUEsRUFDQUMsY0FB
QSxFQUNBQyxZQUFBLEVBQ0FDLGNBQUEsRUFDQUMsV0FBQSxFQUNBQyxTQUFBLEVBQ0FDLFlBQUEs
RUFDQUMsYUFBQSxFQUNBQyxjQUFBLEVBQ0FDLFlBQUEsRUFDQUMsZUFBQSxFQUNBQyxnQkFBQSxF
QUNBQyxpQkFBQSxFQUNBQyxZQUFBLEVBQ0FDLFdBQUEsRUFDQUMsWUFBQSxFQUNBQyxTQUFBLEVB
Q0FDLE9BQUEsRUFDQUMsU0FBQSxFQUNBQyxTQUFBLEVBQ0FDLFFBQUEsRUFDQUMsUUFBQSxFQUNB
QyxNQUFBLEVBR0FDLGFBQUEsRUFDQUMsY0FBQSxFQUNBQyxhQUFBLEVBQ0FDLGlCQUFBLEVBQ0FD
LGtCQUFBLEVBQ0FDLGtCQUFBLEVBQ0FDLGVBQUEsRUFDQUMsYUFBQSxHQWlCQUMsR0FBQSx3QkFJ
QTU0QixRQUFBc0QsS0FBQTZ5QixHQUFBL3lCLFFBQUEsU0FBQXkxQixHQUNBRCxFQUFBeDFCLFFB
QUEsU0FBQTR5QixHQUNBRyxFQUFBSixFQUFBQyxFQUFBNkMsSUFBQTFDLEVBQUEwQyxNQWFBLElB
QUFDLElBQ0FDLFlBQ0FDLHNCQUFBLEVBQ0FDLGlCQUFBLEVBQ0FDLGlCQUFBLEVBQ0FDLHFCQUFB
LEVBQ0FDLHFCQUFBLEVBQ0FDLGtCQUFBLEdBRUFDLG9CQUNBSCxxQkFBQSxFQUNBQyxxQkFBQSxH
QUVBRyxRQUNBQyxhQUFBLEVBQ0FDLGFBQUEsRUFDQUMsYUFBQSxHQUVBQyxjQUNBQyxtQkFBQSxF
QUNBQyxtQkFBQSxFQUNBQyxtQkFBQSxHQUVBQyxZQUNBQyxpQkFBQSxFQUNBQyxpQkFBQSxFQUNB
QyxpQkFBQSxHQUVBQyxhQUNBQyxrQkFBQSxFQUNBQyxrQkFBQSxFQUNBQyxrQkFBQSxHQUVBQyxX
QUNBQyxnQkFBQSxFQUNBQyxnQkFBQSxFQUNBQyxnQkFBQSxHQUVBQyxNQUNBQyxXQUFBLEVBQ0FD
LGFBQUEsRUFDQW5ELFlBQUEsRUFDQW9ELFVBQUEsRUFDQWxELFlBQUEsRUFDQW1ELFlBQUEsR0FF
QUMsU0FDQUMsY0FBQSxFQUNBQyxjQUFBLEVBQ0FDLGNBQUEsSUFJQUMsR0FDQWpGLG1CQUNBMkMs
OEJBR0F0NUIsR0FBQUQsUUFBQTY3QixHekRtL0xNLFNBQVM1N0IsRUFBUUQsRUFBU0gsRzBEaG9N
aEMsWUFJQSxTQUFBaThCLEdBQUFDLEVBQUFDLEdBQWlELEtBQUFELFlBQUFDLElBQTBDLFNBQUFq
NUIsV0FBQSxxQ0FGM0YsR0FBQTBELEdBQUE1RyxFQUFBLEdBSUFvTSxFQUFBcE0sRUFBQSxJQWdC
QTJKLEdBZEEzSixFQUFBLEdBY0EsV0FDQSxRQUFBMkosR0FBQWhCLEdBQ0FzekIsRUFBQTM2QixL
QUFBcUksR0FFQXJJLEtBQUE4NkIsV0FBQSxLQUNBOTZCLEtBQUErNkIsVUFBQSxLQUNBLzZCLEtB
QUFnN0IsS0FBQTN6QixFQTJFQSxNQS9EQWdCLEdBQUE5SSxVQUFBNkssUUFBQSxTQUFBM0IsRUFB
QWlDLEdBQ0ExSyxLQUFBODZCLFdBQUE5NkIsS0FBQTg2QixlQUNBOTZCLEtBQUE4NkIsV0FBQXIx
QixLQUFBZ0QsR0FDQXpJLEtBQUErNkIsVUFBQS82QixLQUFBKzZCLGNBQ0EvNkIsS0FBQSs2QixV
QUFBdDFCLEtBQUFpRixJQVdBckMsRUFBQTlJLFVBQUFnTSxVQUFBLFdBQ0EsR0FBQW5DLEdBQUFw
SixLQUFBODZCLFdBQ0FHLEVBQUFqN0IsS0FBQSs2QixVQUNBMXpCLEVBQUFySCxLQUFBZzdCLElB
Q0EsSUFBQTV4QixHQUFBNnhCLEVBQUEsQ0FDQTd4QixFQUFBOUgsU0FBQTI1QixFQUFBMzVCLE9B
QUFnRSxFQUFBLGFBQ0F0RixLQUFBODZCLFdBQUEsS0FDQTk2QixLQUFBKzZCLFVBQUEsSUFDQSxR
QUFBMTdCLEdBQUEsRUFBcUJBLEVBQUErSixFQUFBOUgsT0FBc0JqQyxJQUMzQytKLEVBQUEvSixH
QUFBSixLQUFBZzhCLEVBQUE1N0IsR0FBQWdJLEVBRUErQixHQUFBOUgsT0FBQSxFQUNBMjVCLEVB
QUEzNUIsT0FBQSxJQUlBK0csRUFBQTlJLFVBQUEyN0IsV0FBQSxXQUNBLE1BQUFsN0IsTUFBQTg2
QixXQUFBOTZCLEtBQUE4NkIsV0FBQXg1QixPQUFBLEdBR0ErRyxFQUFBOUksVUFBQTQ3QixTQUFB
LFNBQUFueUIsR0FDQWhKLEtBQUE4NkIsWUFBQTk2QixLQUFBKzZCLFlBQ0EvNkIsS0FBQTg2QixX
QUFBeDVCLE9BQUEwSCxFQUNBaEosS0FBQSs2QixVQUFBejVCLE9BQUEwSCxJQVdBWCxFQUFBOUks
VUFBQStMLE1BQUEsV0FDQXRMLEtBQUE4NkIsV0FBQSxLQUNBOTZCLEtBQUErNkIsVUFBQSxNQVFB
MXlCLEVBQUE5SSxVQUFBbU0sV0FBQSxXQUNBMUwsS0FBQXNMLFNBR0FqRCxLQUdBdkosR0FBQUQs
UUFBQWlNLEVBQUFpQixhQUFBMUQsSTFEaXBNTSxTQUFTdkosRUFBUUQsRUFBU0gsRzJENXZNaEMs
WUFhQSxTQUFBMDhCLEdBQUFocEIsR0FDQSxRQUFBaXBCLEVBQUE3N0IsZUFBQTRTLEtBR0FrcEIs
RUFBQTk3QixlQUFBNFMsS0FHQW1wQixFQUFBL3FCLEtBQUE0QixJQUNBaXBCLEVBQUFqcEIsSUFB
QSxHQUNBLElBRUFrcEIsRUFBQWxwQixJQUFBLEdBRUEsSUFHQSxRQUFBb3BCLEdBQUFycEIsRUFB
QXJCLEdBQ0EsYUFBQUEsR0FBQXFCLEVBQUFNLGtCQUFBM0IsR0FBQXFCLEVBQUFPLGlCQUFBK29C
LE1BQUEzcUIsSUFBQXFCLEVBQUFRLHlCQUFBN0IsRUFBQSxHQUFBcUIsRUFBQVMsMkJBQUE5QixL
QUFBLEVBNUJBLEdBQUE5SyxHQUFBdEgsRUFBQSxJQUlBZzlCLEdBSEFoOUIsRUFBQSxHQUNBQSxF
QUFBLEdBRUFBLEVBQUEsTUFHQTY4QixHQUZBNzhCLEVBQUEsR0FFQSxHQUFBaTlCLFFBQUEsS0FB
QTMxQixFQUFBNk0sMEJBQUEsS0FBQTdNLEVBQUErTSxvQkFBQSxRQUNBdW9CLEtBQ0FELEtBeUJB
TyxHQU9BQyxrQkFBQSxTQUFBOThCLEdBQ0EsTUFBQWlILEdBQUFFLGtCQUFBLElBQUF3MUIsRUFB
QTM4QixJQUdBKzhCLGtCQUFBLFNBQUFyNEIsRUFBQTFFLEdBQ0EwRSxFQUFBb3dCLGFBQUE3dEIs
RUFBQUUsa0JBQUFuSCxJQUdBZzlCLG9CQUFBLFdBQ0EsTUFBQS8xQixHQUFBOE0sb0JBQUEsT0FH
QWtwQixvQkFBQSxTQUFBdjRCLEdBQ0FBLEVBQUFvd0IsYUFBQTd0QixFQUFBOE0sb0JBQUEsS0FV
QW1wQix3QkFBQSxTQUFBbjdCLEVBQUFnUSxHQUNBLEdBQUFxQixHQUFBbk0sRUFBQWdNLFdBQUF4
UyxlQUFBc0IsR0FBQWtGLEVBQUFnTSxXQUFBbFIsR0FBQSxJQUNBLElBQUFxUixFQUFBLENBQ0Es
R0FBQXFwQixFQUFBcnBCLEVBQUFyQixHQUNBLFFBRUEsSUFBQXNCLEdBQUFELEVBQUFDLGFBQ0Es
T0FBQUQsR0FBQU0saUJBQUFOLEVBQUFTLDJCQUFBOUIsS0FBQSxFQUNBc0IsRUFBQSxNQUVBQSxF
QUFBLElBQUFzcEIsRUFBQTVxQixHQUNLLE1BQUE5SyxHQUFBOEwsa0JBQUFoUixHQUNMLE1BQUFn
USxFQUNBLEdBRUFoUSxFQUFBLElBQUE0NkIsRUFBQTVxQixHQUVBLE1BVUFvckIsK0JBQUEsU0FB
QXA3QixFQUFBZ1EsR0FDQSxNQUFBc3FCLEdBQUF0NkIsSUFBQSxNQUFBZ1EsRUFHQWhRLEVBQUEs
SUFBQTQ2QixFQUFBNXFCLEdBRkEsSUFZQXFyQixvQkFBQSxTQUFBMTRCLEVBQUEzQyxFQUFBZ1Es
R0FDQSxHQUFBcUIsR0FBQW5NLEVBQUFnTSxXQUFBeFMsZUFBQXNCLEdBQUFrRixFQUFBZ00sV0FB
QWxSLEdBQUEsSUFDQSxJQUFBcVIsRUFBQSxDQUNBLEdBQUFJLEdBQUFKLEVBQUFJLGNBQ0EsSUFB
QUEsRUFDQUEsRUFBQTlPLEVBQUFxTixPQUNPLElBQUEwcUIsRUFBQXJwQixFQUFBckIsR0FFUCxX
QURBOVEsTUFBQW84Qix1QkFBQTM0QixFQUFBM0MsRUFFTyxJQUFBcVIsRUFBQUssZ0JBR1AvTyxF
QUFBME8sRUFBQUcsY0FBQXhCLE1BQ08sQ0FDUCxHQUFBc0IsR0FBQUQsRUFBQUMsY0FDQWlxQixF
QUFBbHFCLEVBQUFFLGtCQUdBZ3FCLEdBQ0E1NEIsRUFBQTY0QixlQUFBRCxFQUFBanFCLEVBQUEs
R0FBQXRCLEdBQ1NxQixFQUFBTSxpQkFBQU4sRUFBQVMsMkJBQUE5QixLQUFBLEVBQ1RyTixFQUFB
b3dCLGFBQUF6aEIsRUFBQSxJQUVBM08sRUFBQW93QixhQUFBemhCLEVBQUEsR0FBQXRCLFNBR0ss
SUFBQTlLLEVBQUE4TCxrQkFBQWhSLEdBRUwsV0FEQTg2QixHQUFBVyxxQkFBQTk0QixFQUFBM0Ms
RUFBQWdRLElBZUF5ckIscUJBQUEsU0FBQTk0QixFQUFBM0MsRUFBQWdRLEdBQ0EsR0FBQXNxQixF
QUFBdDZCLEdBQUEsQ0FHQSxNQUFBZ1EsRUFDQXJOLEVBQUErNEIsZ0JBQUExN0IsR0FFQTJDLEVB
QUFvd0IsYUFBQS95QixFQUFBLEdBQUFnUSxLQW9CQTJyQix3QkFBQSxTQUFBaDVCLEVBQUEzQyxH
QUNBMkMsRUFBQSs0QixnQkFBQTE3QixJQWdCQXM3Qix1QkFBQSxTQUFBMzRCLEVBQUEzQyxHQUNB
LEdBQUFxUixHQUFBbk0sRUFBQWdNLFdBQUF4UyxlQUFBc0IsR0FBQWtGLEVBQUFnTSxXQUFBbFIs
R0FBQSxJQUNBLElBQUFxUixFQUFBLENBQ0EsR0FBQUksR0FBQUosRUFBQUksY0FDQSxJQUFBQSxF
QUNBQSxFQUFBOU8sRUFBQS9DLFlBQ08sSUFBQXlSLEVBQUFLLGdCQUFBLENBQ1AsR0FBQXpGLEdB
QUFvRixFQUFBRyxZQUNBSCxHQUFBTSxnQkFDQWhQLEVBQUFzSixJQUFBLEVBRUF0SixFQUFBc0os
R0FBQSxPQUdBdEosR0FBQSs0QixnQkFBQXJxQixFQUFBQyxtQkFFS3BNLEdBQUE4TCxrQkFBQWhS
LElBQ0wyQyxFQUFBKzRCLGdCQUFBMTdCLElBYUFoQyxHQUFBRCxRQUFBKzhCLEczRDR3TU0sU0FB
Uzk4QixFQUFRRCxHNEQzK012QixZQUVBLElBQUFvSCxJQUNBckIsb0JBQUEsRUFHQTlGLEdBQUFE
LFFBQUFvSCxHNUQyL01NLFNBQVNuSCxFQUFRRCxFQUFTSCxHNkRqZ05oQyxZQWFBLFNBQUFnK0Is
S0FDQSxHQUFBMThCLEtBQUEwWSxhQUFBMVksS0FBQTI4QixjQUFBQyxjQUFBLENBQ0E1OEIsS0FB
QTI4QixjQUFBQyxlQUFBLENBRUEsSUFBQXBtQixHQUFBeFcsS0FBQTBKLGdCQUFBOE0sTUFDQTFG
LEVBQUFzZixFQUFBRyxTQUFBL1osRUFFQSxPQUFBMUYsR0FDQStyQixFQUFBNzhCLEtBQUE4OEIs
UUFBQXRtQixFQUFBdW1CLFVBQUFqc0IsSUFrREEsUUFBQStyQixHQUFBejRCLEVBQUEyNEIsRUFB
QUMsR0FDQSxHQUFBQyxHQUFBNTlCLEVBQ0E2OUIsRUFBQTUyQixFQUFBUixvQkFBQTFCLEdBQUE4
NEIsT0FFQSxJQUFBSCxFQUFBLENBRUEsSUFEQUUsS0FDQTU5QixFQUFBLEVBQWVBLEVBQUEyOUIs
RUFBQTE3QixPQUFzQmpDLElBQ3JDNDlCLEVBQUEsR0FBQUQsRUFBQTM5QixLQUFBLENBRUEsS0FB
QUEsRUFBQSxFQUFlQSxFQUFBNjlCLEVBQUE1N0IsT0FBb0JqQyxJQUFBLENBQ25DLEdBQUE4OUIs
R0FBQUYsRUFBQXo5QixlQUFBMDlCLEVBQUE3OUIsR0FBQXlSLE1BQ0Fvc0IsR0FBQTc5QixHQUFB
ODlCLGVBQ0FELEVBQUE3OUIsR0FBQTg5QixpQkFHRyxDQUlILElBREFGLEVBQUEsR0FBQUQsRUFD
QTM5QixFQUFBLEVBQWVBLEVBQUE2OUIsRUFBQTU3QixPQUFvQmpDLElBQ25DLEdBQUE2OUIsRUFB
QTc5QixHQUFBeVIsUUFBQW1zQixFQUVBLFlBREFDLEVBQUE3OUIsR0FBQTg5QixVQUFBLEVBSUFE
LEdBQUE1N0IsU0FDQTQ3QixFQUFBLEdBQUFDLFVBQUEsSUFnRkEsUUFBQUMsR0FBQXZ2QixHQUNB
LEdBQUEySSxHQUFBeFcsS0FBQTBKLGdCQUFBOE0sTUFDQXRKLEVBQUFrakIsRUFBQUssZ0JBQUFq
YSxFQUFBM0ksRUFNQSxPQUpBN04sTUFBQTBZLGNBQ0ExWSxLQUFBMjhCLGNBQUFDLGVBQUEsR0FF
QTkwQixFQUFBMkMsS0FBQWl5QixFQUFBMThCLE1BQ0FrTixFQXZMQSxHQUFBckMsR0FBQW5NLEVB
QUEsR0FFQTB4QixFQUFBMXhCLEVBQUEsSUFDQTRILEVBQUE1SCxFQUFBLEdBQ0FvSixFQUFBcEos
RUFBQSxHQUtBMitCLEdBSEEzK0IsRUFBQSxJQUdBLEdBMEdBNCtCLEdBQ0FDLGFBQUEsU0FBQW41
QixFQUFBb1MsR0FDQSxNQUFBM0wsTUFBcUIyTCxHQUNyQjJZLFNBQUEvcUIsRUFBQXU0QixjQUFB
eE4sU0FDQXJlLE1BQUFwUSxVQUlBODhCLGFBQUEsU0FBQXA1QixFQUFBb1MsR0FLQSxHQUFBMUYs
R0FBQXNmLEVBQUFHLFNBQUEvWixFQUNBcFMsR0FBQXU0QixlQUNBQyxlQUFBLEVBQ0FhLGFBQUEs
TUFBQTNzQixJQUFBMEYsRUFBQWtuQixhQUNBQyxVQUFBLEtBQ0F4TyxTQUFBaU8sRUFBQW5tQixL
QUFBN1MsR0FDQXc1QixZQUFBZCxRQUFBdG1CLEVBQUF1bUIsV0FHQXI4QixTQUFBOFYsRUFBQTFG
LE9BQUFwUSxTQUFBOFYsRUFBQWtuQixjQUFBTCxJQUVBQSxHQUFBLElBSUFRLHNCQUFBLFNBQUF6
NUIsR0FHQSxNQUFBQSxHQUFBdTRCLGNBQUFjLGNBR0FLLGtCQUFBLFNBQUExNUIsR0FDQSxHQUFB
b1MsR0FBQXBTLEVBQUFzRixnQkFBQThNLEtBSUFwUyxHQUFBdTRCLGNBQUFjLGFBQUEvOEIsTUFF
QSxJQUFBazlCLEdBQUF4NUIsRUFBQXU0QixjQUFBaUIsV0FDQXg1QixHQUFBdTRCLGNBQUFpQixZ
QUFBZCxRQUFBdG1CLEVBQUF1bUIsU0FFQSxJQUFBanNCLEdBQUFzZixFQUFBRyxTQUFBL1osRUFD
QSxPQUFBMUYsR0FDQTFNLEVBQUF1NEIsY0FBQUMsZUFBQSxFQUNBQyxFQUFBejRCLEVBQUEwNEIs
UUFBQXRtQixFQUFBdW1CLFVBQUFqc0IsSUFDSzhzQixJQUFBZCxRQUFBdG1CLEVBQUF1bUIsWUFF
TCxNQUFBdm1CLEVBQUFrbkIsYUFDQWIsRUFBQXo0QixFQUFBMDRCLFFBQUF0bUIsRUFBQXVtQixV
QUFBdm1CLEVBQUFrbkIsY0FHQWIsRUFBQXo0QixFQUFBMDRCLFFBQUF0bUIsRUFBQXVtQixVQUFB
dm1CLEVBQUF1bUIsWUFBQSxNQWlCQWorQixHQUFBRCxRQUFBeStCLEc3RGloTk0sU0FBU3grQixF
QUFRRCxHOEQ3c052QixZQUVBLElBQUFrL0IsR0FFQUMsR0FDQUMsNEJBQUEsU0FBQWpuQixHQUNB
K21CLEVBQUEvbUIsSUFJQWtuQixHQUNBQyxPQUFBLFNBQUFDLEdBQ0EsTUFBQUwsR0FBQUssSUFJ
QUYsR0FBQTV4QixVQUFBMHhCLEVBRUFsL0IsRUFBQUQsUUFBQXEvQixHOUQ2dE5NLFNBQVNwL0Is
RUFBUUQsRytEOXVOdkIsWUFFQSxJQUFBMEssSUFJQUMsb0JBQUEsRUFHQTFLLEdBQUFELFFBQUEw
SyxHL0Qrdk5NLFNBQVN6SyxFQUFRRCxFQUFTSCxHZ0V6d05oQyxZQTRCQSxTQUFBMi9CLEdBQUE1
bkIsR0FFQSxNQURBNm5CLEdBQUEsT0FBQWg1QixFQUFBLE1BQUFtUixFQUFBOU0sTUFDQSxHQUFB
MjBCLEdBQUE3bkIsR0FPQSxRQUFBOG5CLEdBQUFwdkIsR0FDQSxVQUFBcXZCLEdBQUFydkIsR0FP
QSxRQUFBc3ZCLEdBQUF6NkIsR0FDQSxNQUFBQSxhQUFBdzZCLEdBNUNBLEdBQUFsNUIsR0FBQTVH
LEVBQUEsR0FJQTQvQixHQUZBNS9CLEVBQUEsR0FFQSxNQUNBOC9CLEVBQUEsS0FFQUUsR0FHQUMs
NEJBQUEsU0FBQUMsR0FDQU4sRUFBQU0sR0FJQUMseUJBQUEsU0FBQUQsR0FDQUosRUFBQUksSUEr
QkFFLEdBQ0FULDBCQUNBRSx3QkFDQUUsa0JBQ0FueUIsVUFBQW95QixFQUdBNS9CLEdBQUFELFFB
QUFpZ0MsR2hFeXhOTSxTQUFTaGdDLEVBQVFELEVBQVNILEdpRWoxTmhDLFlBUUEsU0FBQXFnQyxH
QUFBdDdCLEdBQ0EsTUFBQXU3QixHQUFBdjRCLFNBQUF3NEIsZ0JBQUF4N0IsR0FQQSxHQUFBeTdC
LEdBQUF4Z0MsRUFBQSxLQUVBc2dDLEVBQUF0Z0MsRUFBQSxLQUNBbTJCLEVBQUFuMkIsRUFBQSxJ
QUNBcTJCLEVBQUFyMkIsRUFBQSxJQVlBeWdDLEdBQ0FDLHlCQUFBLFNBQUFDLEdBQ0EsR0FBQXR2
QixHQUFBc3ZCLEtBQUF0dkIsVUFBQXN2QixFQUFBdHZCLFNBQUFXLGFBQ0EsT0FBQVgsS0FBQSxV
QUFBQSxHQUFBLFNBQUFzdkIsRUFBQTExQixNQUFBLGFBQUFvRyxHQUFBLFNBQUFzdkIsRUFBQUMs
a0JBR0FDLHdCQUFBLFdBQ0EsR0FBQUMsR0FBQXpLLEdBQ0EsUUFDQXlLLGNBQ0FDLGVBQUFOLEVB
QUFDLHlCQUFBSSxHQUFBTCxFQUFBTyxhQUFBRixHQUFBLE9BU0FHLGlCQUFBLFNBQUFDLEdBQ0Es
R0FBQUMsR0FBQTlLLElBQ0ErSyxFQUFBRixFQUFBSixZQUNBTyxFQUFBSCxFQUFBSCxjQUNBSSxL
QUFBQyxHQUFBZixFQUFBZSxLQUNBWCxFQUFBQyx5QkFBQVUsSUFDQVgsRUFBQWEsYUFBQUYsRUFB
QUMsR0FFQWxMLEVBQUFpTCxLQVVBSixhQUFBLFNBQUFPLEdBQ0EsR0FBQUMsRUFFQSxzQkFBQUQs
R0FFQUMsR0FDQUMsTUFBQUYsRUFBQUcsZUFDQUMsSUFBQUosRUFBQUssa0JBRUssSUFBQTc1QixT
QUFBeTVCLFdBQUFELEVBQUFsd0IsVUFBQSxVQUFBa3dCLEVBQUFsd0IsU0FBQVcsY0FBQSxDQUVM
LEdBQUE2dkIsR0FBQTk1QixTQUFBeTVCLFVBQUFNLGFBR0FELEdBQUFFLGtCQUFBUixJQUNBQyxH
QUNBQyxPQUFBSSxFQUFBRyxVQUFBLGFBQUFULEVBQUFudkIsTUFBQXhQLFFBQ0ErK0IsS0FBQUUs
RUFBQUksUUFBQSxhQUFBVixFQUFBbnZCLE1BQUF4UCxjQUtBNCtCLEdBQUFoQixFQUFBMEIsV0FB
QVgsRUFHQSxPQUFBQyxLQUF5QkMsTUFBQSxFQUFBRSxJQUFBLElBU3pCTCxhQUFBLFNBQUFDLEVB
QUFZLEdBQ0EsR0FBQVYsR0FBQVUsRUFBQVYsTUFDQUUsRUFBQVEsRUFBQVIsR0FLQSxJQUpBMy9C
LFNBQUEyL0IsSUFDQUEsRUFBQUYsR0FHQSxrQkFBQUYsR0FDQUEsRUFBQUcsZUFBQUQsRUFDQUYs
RUFBQUssYUFBQW42QixLQUFBMjZCLElBQUFULEVBQUFKLEVBQUFudkIsTUFBQXhQLFlBQ0ssSUFB
QW1GLFNBQUF5NUIsV0FBQUQsRUFBQWx3QixVQUFBLFVBQUFrd0IsRUFBQWx3QixTQUFBVyxjQUFB
LENBQ0wsR0FBQTZ2QixHQUFBTixFQUFBYyxpQkFDQVIsR0FBQVMsVUFBQSxHQUNBVCxFQUFBRyxV
QUFBLFlBQUFQLEdBQ0FJLEVBQUFJLFFBQUEsWUFBQU4sRUFBQUYsR0FDQUksRUFBQVUsYUFFQS9C
LEdBQUFnQyxXQUFBakIsRUFBQVksSUFLQS9oQyxHQUFBRCxRQUFBc2dDLEdqRWkyTk0sU0FBU3Jn
QyxFQUFRRCxFQUFTSCxHa0VoOU5oQyxZQTBDQSxTQUFBeWlDLEdBQUFDLEVBQUFDLEdBRUEsT0FE
QUMsR0FBQW43QixLQUFBMjZCLElBQUFNLEVBQUE5L0IsT0FBQSsvQixFQUFBLy9CLFFBQ0FqQyxF
QUFBLEVBQWlCQSxFQUFBaWlDLEVBQVlqaUMsSUFDN0IsR0FBQStoQyxFQUFBN0wsT0FBQWwyQixL
QUFBZ2lDLEVBQUE5TCxPQUFBbDJCLEdBQ0EsTUFBQUEsRUFHQSxPQUFBK2hDLEdBQUE5L0IsU0FB
QSsvQixFQUFBLy9CLFVBQUFnZ0MsRUFRQSxRQUFBQyxHQUFBQyxHQUNBLE1BQUFBLEdBSUFBLEVB
QUE3OUIsV0FBQTg5QixFQUNBRCxFQUFBdkMsZ0JBRUF1QyxFQUFBeDhCLFdBTkEsS0FVQSxRQUFB
MDhCLEdBQUFqK0IsR0FJQSxNQUFBQSxHQUFBRyxjQUFBSCxFQUFBRyxhQUFBQyxJQUFBLEdBV0Es
UUFBQTg5QixHQUFBQyxFQUFBSixFQUFBejRCLEVBQUE4NEIsRUFBQW4zQixHQUNBLEdBQUFwQixF
QUNBLElBQUFDLEVBQUFDLG1CQUFBLENBQ0EsR0FBQXM0QixHQUFBRixFQUFBbDRCLGdCQUFBOE0s
TUFBQXVyQixNQUNBcDRCLEVBQUFtNEIsRUFBQW40QixJQUNBTCxHQUFBLGlDQUFBSyxPQUFBd25C
LGFBQUF4bkIsRUFBQTdJLE1BQ0FnSixRQUFBQyxLQUFBVCxHQUdBLEdBQUFtSyxHQUFBekosRUFB
QW9KLGVBQUF3dUIsRUFBQTc0QixFQUFBLEtBQUFpNUIsRUFBQUosRUFBQUosR0FBQTkyQixFQUFB
LEVBR0FwQixJQUNBUSxRQUFBSSxRQUFBWixHQUdBczRCLEVBQUExOUIsbUJBQUErOUIsaUJBQUFM
LEVBQ0FNLEVBQUFDLG9CQUFBMXVCLEVBQUErdEIsRUFBQUksRUFBQUMsRUFBQTk0QixHQVVBLFFB
QUFxNUIsR0FBQUMsRUFBQWIsRUFBQUssRUFBQW4zQixHQUNBLEdBQUEzQixHQUFBakIsRUFBQUMs
MEJBQUFPLFdBRUF1NUIsR0FBQVMsRUFBQUMsaUJBQ0F4NUIsR0FBQTZDLFFBQUErMUIsRUFBQSxL
QUFBVSxFQUFBYixFQUFBejRCLEVBQUE4NEIsRUFBQW4zQixHQUNBNUMsRUFBQUMsMEJBQUE0RCxR
QUFBNUMsR0FZQSxRQUFBeTVCLEdBQUE1SCxFQUFBNEcsRUFBQTF0QixHQWNBLElBVkE5SixFQUFB
NkosaUJBQUErbUIsRUFBQTltQixHQUtBMHRCLEVBQUE3OUIsV0FBQTg5QixJQUNBRCxJQUFBdkMs
aUJBSUF1QyxFQUFBaUIsV0FDQWpCLEVBQUE3YSxZQUFBNmEsRUFBQWlCLFdBY0EsUUFBQUMsR0FB
QWxCLEdBQ0EsR0FBQW1CLEdBQUFwQixFQUFBQyxFQUNBLElBQUFtQixFQUFBLENBQ0EsR0FBQXYr
QixHQUFBa0MsRUFBQVQsb0JBQUE4OEIsRUFDQSxVQUFBditCLE1BQUEyQixjQXdCQSxRQUFBNjhC
LEdBQUFuL0IsR0FDQSxTQUFBQSxLQUFBRSxXQUFBd00sR0FBQTFNLEVBQUFFLFdBQUE4OUIsR0FB
QWgrQixFQUFBRSxXQUFBeU0sR0FjQSxRQUFBeXlCLEdBQUFyQixHQUNBLEdBQUFtQixHQUFBcEIs
RUFBQUMsR0FDQXNCLEVBQUFILEdBQUFyOEIsRUFBQVQsb0JBQUE4OEIsRUFDQSxPQUFBRyxPQUFB
LzhCLFlBQUErOEIsRUFBQSxLQUdBLFFBQUFDLEdBQUF2QixHQUNBLEdBQUF0TSxHQUFBMk4sRUFB
QXJCLEVBQ0EsT0FBQXRNLEtBQUE4TixtQkFBQWYsaUJBQUEsS0E5TUEsR0FBQTM4QixHQUFBNUcs
RUFBQSxHQUVBc1IsRUFBQXRSLEVBQUEsSUFDQXNILEVBQUF0SCxFQUFBLElBQ0F5VyxFQUFBelcs
RUFBQSxJQUNBK2lCLEVBQUEvaUIsRUFBQSxJQUVBNEgsR0FEQTVILEVBQUEsSUFDQUEsRUFBQSxJ
QUNBc2pDLEVBQUF0akMsRUFBQSxLQUNBNGpDLEVBQUE1akMsRUFBQSxLQUNBNkssRUFBQTdLLEVB
QUEsSUFDQWtkLEVBQUFsZCxFQUFBLElBRUF1a0MsR0FEQXZrQyxFQUFBLEdBQ0FBLEVBQUEsTUFD
QXNMLEVBQUF0TCxFQUFBLElBQ0E2eUIsRUFBQTd5QixFQUFBLElBQ0FvSixFQUFBcEosRUFBQSxH
QUVBa2UsRUFBQWxlLEVBQUEsSUFDQXdrQyxFQUFBeGtDLEVBQUEsSUFFQXdRLEdBREF4USxFQUFB
LEdBQ0FBLEVBQUEsS0FDQXUxQixFQUFBdjFCLEVBQUEsSUFHQW1GLEdBRkFuRixFQUFBLEdBRUFz
SCxFQUFBRSxtQkFDQWk5QixFQUFBbjlCLEVBQUE4TSxvQkFFQTNDLEVBQUEsRUFDQXN4QixFQUFB
LEVBQ0FyeEIsRUFBQSxHQUVBZ3pCLEtBc0xBQyxFQUFBLEVBQ0FDLEVBQUEsV0FDQXRqQyxLQUFB
dWpDLE9BQUFGLElBRUFDLEdBQUEvakMsVUFBQWlrQyxvQkFJQUYsRUFBQS9qQyxVQUFBa2tDLE9B
QUEsV0FDQSxNQUFBempDLE1BQUF3VyxNQUFBdXJCLE9BRUF1QixFQUFBMTVCLHdCQUFBLENBb0JB
LElBQUFzNEIsSUFDQW9CLGtCQUtBSSx3QkFBQU4sRUFVQU8sY0FBQSxTQUFBbkMsRUFBQW9DLEdB
Q0FBLEtBVUFDLHFCQUFBLFNBQUFDLEVBQUE3dkIsRUFBQW9lLEVBQUFtUCxFQUFBLzRCLEdBUUEs
TUFQQXk1QixHQUFBeUIsY0FBQW5DLEVBQUEsV0FDQWpRLEVBQUFhLHVCQUFBMFIsRUFBQTd2QixF
QUFBb2UsR0FDQTVwQixHQUNBOG9CLEVBQUFJLHdCQUFBbVMsRUFBQXI3QixLQUlBcTdCLEdBV0FD
LHdCQUFBLFNBQUE5dkIsRUFBQXV0QixFQUFBSyxFQUFBbjNCLEdBTUFrNEIsRUFBQXBCLEdBQUEs
T0FBQWw4QixFQUFBLE1BRUFtYyxFQUFBc0IsNkJBQ0EsSUFBQXNmLEdBQUFhLEVBQUFqdkIsR0FB
QSxFQU1Bbk0sR0FBQVUsZUFBQTQ1QixFQUFBQyxFQUFBYixFQUFBSyxFQUFBbjNCLEVBRUEsSUFB
QXM1QixHQUFBM0IsRUFBQTRCLFVBQUFWLE1BR0EsT0FGQUgsR0FBQVksR0FBQTNCLEVBRUFBLEdB
Z0JBNkIsMkJBQUEsU0FBQUMsRUFBQWx3QixFQUFBdXRCLEVBQUEvNEIsR0FFQSxNQURBLE9BQUEw
N0IsR0FBQXZvQixFQUFBSSxJQUFBbW9CLEdBQUEsT0FBQTcrQixFQUFBLE1BQ0E0OEIsRUFBQWtD
LDRCQUFBRCxFQUFBbHdCLEVBQUF1dEIsRUFBQS80QixJQUdBMjdCLDRCQUFBLFNBQUFELEVBQUFs
d0IsRUFBQXV0QixFQUFBLzRCLEdBQ0E4b0IsRUFBQUcsaUJBQUFqcEIsRUFBQSxtQkFDQTBNLEVB
QUFPLGVBQUF6QixHQUNBLE9BQUEzTyxFQUFBLHFCQUFBMk8sR0FBQSx5R0FBQUEsR0FBQSx3RkFB
QUEsR0FBQXZULFNBQUF1VCxFQUFBdUMsTUFBQSxxRkFJQSxJQUlBNmIsR0FKQWdTLEVBQUFsdkIs
RUFBQXpPLGNBQUE0OEIsR0FDQXZCLE1BQUE5dEIsR0FJQSxJQUFBa3dCLEVBQUEsQ0FDQSxHQUFB
cHBCLEdBQUFhLEVBQUFHLElBQUFvb0IsRUFDQTlSLEdBQUF0WCxFQUFBdXBCLHFCQUFBdnBCLEVB
QUE1RyxjQUVBa2UsR0FBQXpWLENBR0EsSUFBQWtuQixHQUFBZixFQUFBdkIsRUFFQSxJQUFBc0Ms
RUFBQSxDQUNBLEdBQUFTLEdBQUFULEVBQUFwNkIsZ0JBQ0F3SyxFQUFBcXdCLEVBQUEvdEIsTUFB
QXVyQixLQUNBLElBQUE5TixFQUFBL2YsRUFBQUQsR0FBQSxDQUNBLEdBQUF1d0IsR0FBQVYsRUFB
QTUvQixtQkFBQW1HLG9CQUNBbzZCLEVBQUFoOEIsR0FBQSxXQUNBQSxFQUFBeEosS0FBQXVsQyxH
QUdBLE9BREF0QyxHQUFBMkIscUJBQUFDLEVBQUFPLEVBQUFoUyxFQUFBbVAsRUFBQWlELEdBQ0FE
LEVBRUF0QyxFQUFBd0MsdUJBQUFsRCxHQUlBLEdBQUFtRCxHQUFBcEQsRUFBQUMsR0FDQW9ELEVB
QUFELEtBQUFqRCxFQUFBaUQsR0FDQUUsRUFBQW5DLEVBQUFsQixHQWlCQUssRUFBQStDLElBQUFk
LElBQUFlLEVBQ0E3Z0MsRUFBQWsrQixFQUFBNkIsd0JBQUFNLEVBQUE3QyxFQUFBSyxFQUFBeFAs
R0FBQW51QixtQkFBQW1HLG1CQUlBLE9BSEE1QixJQUNBQSxFQUFBeEosS0FBQStFLEdBRUFBLEdB
Z0JBeS9CLE9BQUEsU0FBQXh2QixFQUFBdXRCLEVBQUEvNEIsR0FDQSxNQUFBeTVCLEdBQUFrQyw0
QkFBQSxLQUFBbndCLEVBQUF1dEIsRUFBQS80QixJQVdBaThCLHVCQUFBLFNBQUFsRCxHQU9Bb0Is
RUFBQXBCLEdBQUEsT0FBQWw4QixFQUFBLEtBTUEsSUFBQXcrQixHQUFBZixFQUFBdkIsRUFDQSxL
QUFBc0MsRUFBQSxDQUdBcEIsRUFBQWxCLEdBR0EsSUFBQUEsRUFBQTc5QixVQUFBNjlCLEVBQUFz
RCxhQUFBM0IsRUFNQSxVQUlBLGFBRkFDLEdBQUFVLEVBQUFHLFVBQUFWLFFBQ0F6N0IsRUFBQVUs
ZUFBQWc2QixFQUFBc0IsRUFBQXRDLEdBQUEsSUFDQSxHQUdBVyxvQkFBQSxTQUFBMXVCLEVBQUEr
dEIsRUFBQTVHLEVBQUFpSCxFQUFBOTRCLEdBR0EsR0FGQTY1QixFQUFBcEIsR0FBQSxPQUFBbDhC
LEVBQUEsTUFFQXU4QixFQUFBLENBQ0EsR0FBQWtELEdBQUF4RCxFQUFBQyxFQUNBLElBQUF5QixF
QUFBK0IsZUFBQXZ4QixFQUFBc3hCLEdBRUEsV0FEQXorQixHQUFBbkMsYUFBQXkyQixFQUFBbUss
RUFHQSxJQUFBRSxHQUFBRixFQUFBbmhDLGFBQUFxL0IsRUFBQWlDLG1CQUNBSCxHQUFBdkksZ0JB
QUF5RyxFQUFBaUMsbUJBRUEsSUFBQUMsR0FBQUosRUFBQUssU0FDQUwsR0FBQWxSLGFBQUFvUCxF
QUFBaUMsbUJBQUFELEVBRUEsSUFBQUksR0FBQTV4QixFQW9CQTZ4QixFQUFBbkUsRUFBQWtFLEVB
QUFGLEdBQ0FJLEVBQUEsYUFBQUYsRUFBQXJmLFVBQUFzZixFQUFBLEdBQUFBLEVBQUEsbUJBQUFI
LEVBQUFuZixVQUFBc2YsRUFBQSxHQUFBQSxFQUFBLEdBRUE5RCxHQUFBNzlCLFdBQUE4OUIsRUFB
QW44QixFQUFBLEtBQUFpZ0MsR0FBQSxPQVVBLEdBRkEvRCxFQUFBNzlCLFdBQUE4OUIsRUFBQW44
QixFQUFBLGFBRUF5RCxFQUFBdzVCLGlCQUFBLENBQ0EsS0FBQWYsRUFBQWlCLFdBQ0FqQixFQUFB
N2EsWUFBQTZhLEVBQUFpQixVQUVBenlCLEdBQUFoQixpQkFBQXd5QixFQUFBL3RCLEVBQUEsVUFF
QXZFLEdBQUFzeUIsRUFBQS90QixHQUNBbk4sRUFBQW5DLGFBQUF5MkIsRUFBQTRHLEVBQUF4OEIs
YUFnQkFsRyxHQUFBRCxRQUFBcWpDLEdsRWcrTk0sU0FBU3BqQyxFQUFRRCxFQUFTSCxHbUU3K09o
QyxZQUVBLElBQUE0RyxHQUFBNUcsRUFBQSxHQUVBeVcsRUFBQXpXLEVBQUEsSUFJQThtQyxHQUZB
OW1DLEVBQUEsSUFHQSttQyxLQUFBLEVBQ0FDLFVBQUEsRUFDQUMsTUFBQSxFQUVBQyxRQUFBLFNB
QUFuaUMsR0FDQSxjQUFBQSxRQUFBLEVBQ0EraEMsRUFBQUcsTUFDS3h3QixFQUFBTyxlQUFBalMs
R0FDTCxrQkFBQUEsR0FBQWtHLEtBQ0E2N0IsRUFBQUUsVUFFQUYsRUFBQUMsU0FHQW5nQyxHQUFB
LEtBQUE3QixLQUlBM0UsR0FBQUQsUUFBQTJtQyxHbkU4L09NLFNBQVMxbUMsRUFBUUQsR29FMWhQ
dkIsWUFFQSxJQUFBdWUsSUFDQWtILGtCQUFBLEVBRUFFLGlCQUFBLEVBRUF2QixvQkFBQSxTQUFB
NGlCLEdBQ0F6b0IsRUFBQWtILGtCQUFBdWhCLEVBQUFwZCxFQUNBckwsRUFBQW9ILGlCQUFBcWhC
LEVBQUFuZCxHQUlBNXBCLEdBQUFELFFBQUF1ZSxHcEUwaVBNLFNBQVN0ZSxFQUFRRCxFQUFTSCxH
cUV0alBoQyxZQW1CQSxTQUFBc1osR0FBQXBKLEVBQUFrM0IsR0FHQSxNQUZBLE9BQUFBLEVBQUF4
Z0MsRUFBQSxhQUVBLE1BQUFzSixFQUNBazNCLEVBS0FodkIsTUFBQXdSLFFBQUExWixHQUNBa0ks
TUFBQXdSLFFBQUF3ZCxJQUNBbDNCLEVBQUFuSixLQUFBMUYsTUFBQTZPLEVBQUFrM0IsR0FDQWwz
QixJQUVBQSxFQUFBbkosS0FBQXFnQyxHQUNBbDNCLEdBR0FrSSxNQUFBd1IsUUFBQXdkLElBRUFs
M0IsR0FBQTNPLE9BQUE2bEMsSUFHQWwzQixFQUFBazNCLEdBeENBLEdBQUF4Z0MsR0FBQTVHLEVB
QUEsRUFFQUEsR0FBQSxFQXlDQUksR0FBQUQsUUFBQW1aLEdyRXVrUE0sU0FBU2xaLEVBQVFELEdz
RXBuUHZCLFlBVUEsU0FBQW9aLEdBQUE4dEIsRUFBQUMsRUFBQWw2QixHQUNBZ0wsTUFBQXdSLFFB
QUF5ZCxHQUNBQSxFQUFBcmpDLFFBQUFzakMsRUFBQWw2QixHQUNHaTZCLEdBQ0hDLEVBQUEvbUMs
S0FBQTZNLEVBQUFpNkIsR0FJQWpuQyxFQUFBRCxRQUFBb1osR3RFcW9QTSxTQUFTblosRUFBUUQs
RUFBU0gsR3VFeHBQaEMsWUFJQSxTQUFBdW5DLEdBQUE3aEMsR0FHQSxJQUZBLEdBQUF1RixJQUVB
QSxFQUFBdkYsRUFBQThoQyxxQkFBQVYsRUFBQUUsV0FDQXRoQyxJQUFBRixrQkFHQSxPQUFBeUYs
S0FBQTY3QixFQUFBQyxLQUNBcmhDLEVBQUFGLG1CQUNHeUYsSUFBQTY3QixFQUFBRyxNQUNILEtB
REcsT0FYSCxHQUFBSCxHQUFBOW1DLEVBQUEsR0FnQkFJLEdBQUFELFFBQUFvbkMsR3ZFd3FQTSxT
QUFTbm5DLEVBQVFELEVBQVNILEd3RTFyUGhDLFlBWUEsU0FBQXluQyxLQU1BLE9BTEFDLEdBQUF6
L0IsRUFBQUosWUFHQTYvQixFQUFBLGVBQUEzL0IsVUFBQXc0QixnQkFBQSwyQkFFQW1ILEVBaEJB
LEdBQUF6L0IsR0FBQWpJLEVBQUEsR0FFQTBuQyxFQUFBLElBaUJBdG5DLEdBQUFELFFBQUFzbkMs
R3hFMHNQTSxTQUFTcm5DLEVBQVFELEVBQVNILEd5RS90UGhDLFlBSUEsU0FBQTJuQyxHQUFBaEgs
R0FDQSxHQUFBMTFCLEdBQUEwMUIsRUFBQTExQixLQUNBb0csRUFBQXN2QixFQUFBdHZCLFFBQ0Es
T0FBQUEsSUFBQSxVQUFBQSxFQUFBVyxnQkFBQSxhQUFBL0csR0FBQSxVQUFBQSxHQUdBLFFBQUEy
OEIsR0FBQWxpQyxHQUNBLE1BQUFBLEdBQUF1NEIsY0FBQTRKLGFBR0EsUUFBQUMsR0FBQXBpQyxF
QUFBcWlDLEdBQ0FyaUMsRUFBQXU0QixjQUFBNEosYUFBQUUsRUFHQSxRQUFBQyxHQUFBdGlDLFNB
Q0FBLEdBQUF1NEIsY0FBQTRKLGFBR0EsUUFBQUksR0FBQWxqQyxHQUNBLEdBQUFxTixFQUlBLE9B
SEFyTixLQUNBcU4sRUFBQXUxQixFQUFBNWlDLEdBQUEsR0FBQUEsRUFBQTRyQixRQUFBNXJCLEVB
QUFxTixPQUVBQSxFQXpCQSxHQUFBeEssR0FBQTVILEVBQUEsR0E0QkFrb0MsR0FFQUMsb0JBQUEs
U0FBQXBqQyxHQUNBLE1BQUE2aUMsR0FBQWhnQyxFQUFBVCxvQkFBQXBDLEtBSUFxakMsTUFBQSxT
QUFBMWlDLEdBQ0EsSUFBQWtpQyxFQUFBbGlDLEdBQUEsQ0FJQSxHQUFBWCxHQUFBNkMsRUFBQVIs
b0JBQUExQixHQUNBMmlDLEVBQUFWLEVBQUE1aUMsR0FBQSxrQkFDQXVqQyxFQUFBMW5DLE9BQUEy
bkMseUJBQUF4akMsRUFBQXFKLFlBQUF2TixVQUFBd25DLEdBRUFHLEVBQUEsR0FBQXpqQyxFQUFB
c2pDLEVBTUF0akMsR0FBQWpFLGVBQUF1bkMsSUFBQSxrQkFBQUMsR0FBQWpyQixLQUFBLGtCQUFB
aXJCLEdBQUEvcUIsTUFJQTNjLE9BQUE2bkMsZUFBQTFqQyxFQUFBc2pDLEdBQ0FLLFdBQUFKLEVB
QUFJLFdBQ0FDLGNBQUEsRUFDQXRyQixJQUFBLFdBQ0EsTUFBQWlyQixHQUFBanJCLElBQUE5YyxL
QUFBZSxPQUVBaWMsSUFBQSxTQUFBbkwsR0FDQW8yQixFQUFBLEdBQUFwMkIsRUFDQWsyQixFQUFB
L3FCLElBQUFoZCxLQUFBZSxLQUFBOFEsTUFJQTAxQixFQUFBcGlDLEdBQ0Ftc0IsU0FBQSxXQUNB
LE1BQUEyVyxJQUVBSSxTQUFBLFNBQUF4MkIsR0FDQW8yQixFQUFBLEdBQUFwMkIsR0FFQXkyQixh
QUFBLFdBQ0FiLEVBQUF0aUMsU0FDQVgsR0FBQXNqQyxTQUtBUyxxQkFBQSxTQUFBcGpDLEdBQ0Es
SUFBQUEsRUFDQSxRQUVBLElBQUFxaUMsR0FBQUgsRUFBQWxpQyxFQUVBLEtBQUFxaUMsRUFFQSxN
QURBRyxHQUFBRSxNQUFBMWlDLElBQ0EsQ0FHQSxJQUFBcWpDLEdBQUFoQixFQUFBbFcsV0FDQW1Y
LEVBQUFmLEVBQUFyZ0MsRUFBQVIsb0JBQUExQixHQUVBLE9BQUFzakMsS0FBQUQsSUFDQWhCLEVB
QUFhLFNBQUFJLElBQ0EsSUFLQUgsYUFBQSxTQUFBbmpDLEdBQ0EsR0FBQXFpQyxHQUFBSCxFQUFB
bGlDLEVBQ0FxaUMsSUFDQUEsRUFBQWMsZ0JBS0F6b0MsR0FBQUQsUUFBQStuQyxHekUrdVBNLFNB
QVM5bkMsRUFBUUQsRUFBU0gsRzBFOTFQaEMsWUFrQkEsU0FBQTR3QixHQUFBL1ksR0FDQSxHQUFB
QSxFQUFBLENBQ0EsR0FBQXpWLEdBQUF5VixFQUFBMU0sU0FDQSxJQUFBL0ksRUFDQSxzQ0FBQUEs
RUFBQSxLQUdBLFNBVUEsUUFBQTZtQyxHQUFBaCtCLEdBQ0Esd0JBQUFBLElBQUEsbUJBQUFBLEdB
QUFwSyxXQUFBLGtCQUFBb0ssR0FBQXBLLFVBQUE2VCxnQkFBQSxrQkFBQXpKLEdBQUFwSyxVQUFB
eVUsaUJBV0EsUUFBQWt2QixHQUFBei9CLEVBQUFta0MsR0FDQSxHQUFBaE4sRUFFQSxXQUFBbjNC
LFFBQUEsRUFDQW0zQixFQUFBc0QsRUFBQUMsT0FBQStFLE9BQ0csb0JBQUF6L0IsR0FBQSxDQUNI
LEdBQUFnVCxHQUFBaFQsRUFDQWtHLEVBQUE4TSxFQUFBOU0sSUFDQSxzQkFBQUEsSUFBQSxnQkFB
QUEsR0FBQSxDQUNBLEdBQUFrK0IsR0FBQSxFQU1BQSxJQUFBdlksRUFBQTdZLEVBQUFFLFFBQ0Fy
UixFQUFBLFlBQUFxRSxhQUFBaytCLEdBSUEsZ0JBQUFweEIsR0FBQTlNLEtBQ0FpeEIsRUFBQWtF
LEVBQUFULHdCQUFBNW5CLEdBQ0treEIsRUFBQWx4QixFQUFBOU0sT0FJTGl4QixFQUFBLEdBQUFu
a0IsR0FBQTlNLEtBQUE4TSxHQUdBbWtCLEVBQUFobkIsY0FDQWduQixFQUFBaG5CLFlBQUFnbkIs
RUFBQWtOLGdCQUdBbE4sRUFBQSxHQUFBbU4sR0FBQXR4QixPQUVHLGdCQUFBaFQsSUFBQSxnQkFB
QUEsR0FDSG0zQixFQUFBa0UsRUFBQVAsc0JBQUE5NkIsR0FFQTZCLEVBQUEsWUFBQTdCLEdBeUJB
LE9BZkFtM0IsR0FBQW9OLFlBQUEsRUFDQXBOLEVBQUFxTixZQUFBLEtBY0FyTixFQTVHQSxHQUFB
dDFCLEdBQUE1RyxFQUFBLEdBQ0FtTSxFQUFBbk0sRUFBQSxHQUVBd3BDLEVBQUF4cEMsRUFBQSxL
QUNBdy9CLEVBQUF4L0IsRUFBQSxJQUNBb2dDLEVBQUFwZ0MsRUFBQSxJQU9BcXBDLEdBTEFycEMs
RUFBQSxLQUNBQSxFQUFBLEdBQ0FBLEVBQUEsR0FHQSxTQUFBK1gsR0FDQXpXLEtBQUFtb0MsVUFB
QTF4QixJQWtHQTVMLEdBQUFrOUIsRUFBQXhvQyxVQUFBMm9DLEdBQ0FFLDJCQUFBbEYsSUFHQXBr
QyxFQUFBRCxRQUFBcWtDLEcxRTgyUE0sU0FBU3BrQyxFQUFRRCxHMkVsK1B2QixZQXdCQSxTQUFB
d3BDLEdBQUFoSixHQUNBLEdBQUF0dkIsR0FBQXN2QixLQUFBdHZCLFVBQUFzdkIsRUFBQXR2QixT
QUFBVyxhQUVBLGlCQUFBWCxJQUNBdTRCLEVBQUFqSixFQUFBMTFCLE1BR0EsYUFBQW9HLEVBekJB
LEdBQUF1NEIsSUFDQUMsT0FBQSxFQUNBQyxNQUFBLEVBQ0FDLFVBQUEsRUFDQUMsa0JBQUEsRUFD
QUMsT0FBQSxFQUNBQyxPQUFBLEVBQ0FDLFFBQUEsRUFDQUMsVUFBQSxFQUNBdkksT0FBQSxFQUNB
d0ksUUFBQSxFQUNBQyxLQUFBLEVBQ0E3NUIsTUFBQSxFQUNBcEYsTUFBQSxFQUNBay9CLEtBQUEs
RUFDQUMsTUFBQSxFQWlCQXBxQyxHQUFBRCxRQUFBd3BDLEczRW0vUE0sU0FBU3ZwQyxFQUFRRCxF
QUFTSCxHNEUxaFFoQyxZQUVBLElBQUFpSSxHQUFBakksRUFBQSxHQUNBdW5CLEVBQUF2bkIsRUFB
QSxJQUNBd1EsRUFBQXhRLEVBQUEsSUFZQTBRLEVBQUEsU0FBQTNMLEVBQUEwTCxHQUNBLEdBQUFB
LEVBQUEsQ0FDQSxHQUFBbkssR0FBQXZCLEVBQUF1QixVQUVBLElBQUFBLE9BQUF2QixFQUFBZy9C
LFdBQUEsSUFBQXo5QixFQUFBckIsU0FFQSxZQURBcUIsRUFBQWxCLFVBQUFxTCxHQUlBMUwsRUFB
QTBsQyxZQUFBaDZCLEVBR0F4SSxHQUFBSixZQUNBLGVBQUFFLFVBQUF3NEIsa0JBQ0E3dkIsRUFB
QSxTQUFBM0wsRUFBQTBMLEdBQ0EsV0FBQTFMLEVBQUFFLGNBQ0FGLEVBQUFLLFVBQUFxTCxPQUdB
RCxHQUFBekwsRUFBQXdpQixFQUFBOVcsT0FLQXJRLEVBQUFELFFBQUF1USxHNUUwaVFNLFNBQVN0
USxFQUFRRCxFQUFTSCxHNkVsbFFoQyxZQW1DQSxTQUFBMHFDLEdBQUFwbEMsRUFBQTZoQixHQUdB
LE1BQUE3aEIsSUFBQSxnQkFBQUEsSUFBQSxNQUFBQSxFQUFBVCxJQUVBc3JCLEVBQUFqSixPQUFB
NWhCLEVBQUFULEtBR0FzaUIsRUFBQXhmLFNBQUEsSUFXQSxRQUFBZ2pDLEdBQUF4a0MsRUFBQXlr
QyxFQUFBN2dDLEVBQUE4Z0MsR0FDQSxHQUFBNS9CLFNBQUE5RSxFQU9BLElBTEEsY0FBQThFLEdB
QUEsWUFBQUEsSUFFQTlFLEVBQUEsTUFHQSxPQUFBQSxHQUFBLFdBQUE4RSxHQUFBLFdBQUFBLEdB
R0EsV0FBQUEsR0FBQTlFLEVBQUE2UixXQUFBUixFQUtBLE1BSkF6TixHQUFBOGdDLEVBQUExa0Ms
RUFHQSxLQUFBeWtDLEVBQUFFLEVBQUFKLEVBQUF2a0MsRUFBQSxHQUFBeWtDLEdBQ0EsQ0FHQSxJ
QUFBdkgsR0FDQTBILEVBQ0FDLEVBQUEsRUFDQUMsRUFBQSxLQUFBTCxFQUFBRSxFQUFBRixFQUFB
TSxDQUVBLElBQUE5eUIsTUFBQXdSLFFBQUF6akIsR0FDQSxPQUFBeEYsR0FBQSxFQUFtQkEsRUFB
QXdGLEVBQUF2RCxPQUFxQmpDLElBQ3hDMGlDLEVBQUFsOUIsRUFBQXhGLEdBQ0FvcUMsRUFBQUUs
RUFBQVAsRUFBQXJILEVBQUExaUMsR0FDQXFxQyxHQUFBTCxFQUFBdEgsRUFBQTBILEVBQUFoaEMs
RUFBQThnQyxPQUVHLENBQ0gsR0FBQU0sR0FBQUMsRUFBQWpsQyxFQUNBLElBQUFnbEMsRUFBQSxD
QUNBLEdBQ0FFLEdBREFDLEVBQUFILEVBQUE1cUMsS0FBQTRGLEVBRUEsSUFBQWdsQyxJQUFBaGxD
LEVBQUFvbEMsUUFFQSxJQURBLEdBQUFDLEdBQUEsSUFDQUgsRUFBQUMsRUFBQWxFLFFBQUFxRSxN
QUNBcEksRUFBQWdJLEVBQUFqNUIsTUFDQTI0QixFQUFBRSxFQUFBUCxFQUFBckgsRUFBQW1JLEtB
Q0FSLEdBQUFMLEVBQUF0SCxFQUFBMEgsRUFBQWhoQyxFQUFBOGdDLE9BZUEsUUFBQVEsRUFBQUMs
RUFBQWxFLFFBQUFxRSxNQUFBLENBQ0EsR0FBQUMsR0FBQUwsRUFBQWo1QixLQUNBczVCLEtBQ0Fy
SSxFQUFBcUksRUFBQSxHQUNBWCxFQUFBRSxFQUFBOWEsRUFBQWpKLE9BQUF3a0IsRUFBQSxJQUFB
UixFQUFBUixFQUFBckgsRUFBQSxHQUNBMkgsR0FBQUwsRUFBQXRILEVBQUEwSCxFQUFBaGhDLEVB
QUE4Z0MsU0FJSyxlQUFBNS9CLEVBQUEsQ0FDTCxHQUFBMGdDLEdBQUEsR0FhQUMsRUFBQXRvQyxP
QUFBNkMsRUFDb09TLEdBQUEseUJBQUFnbEMsRUFBQSxxQkFBK0dockMsT0FBQXNELEtBQUFpQyxH
QUFBdEMsS0FBQSxVQUF5QytuQyxFQUFBRCxJQUk1WCxNQUFBWCxHQW1CQSxRQUFBYSxHQUFBMWxD
LEVBQUE0RCxFQUFBOGdDLEdBQ0EsYUFBQTFrQyxFQUNBLEVBR0F3a0MsRUFBQXhrQyxFQUFBLEdB
QUE0RCxFQUFBOGdDLEdBL0pBLEdBQUFqa0MsR0FBQTVHLEVBQUEsR0FHQXdYLEdBREF4WCxFQUFB
LElBQ0FBLEVBQUEsTUFFQW9yQyxFQUFBcHJDLEVBQUEsS0FFQW13QixHQURBbndCLEVBQUEsR0FD
QUEsRUFBQSxLQUdBOHFDLEdBRkE5cUMsRUFBQSxHQUVBLEtBQ0FrckMsRUFBQSxHQXVKQTlxQyxH
QUFBRCxRQUFBMHJDLEc3RWttUU0sU0FBU3pyQyxFQUFRRCxFQUFTSCxHOEVoeFFoQyxZQXdCQSxT
QUFBbW9CLEdBQUFDLEdBQXNDLE1BQUFBLE1BQUFDLFdBQUFELEdBQXVDRSxRQUFBRixHQUU3RSxR
QUFBNlQsR0FBQUMsRUFBQUMsR0FBaUQsS0FBQUQsWUFBQUMsSUFBMEMsU0FBQWo1QixXQUFBLHFD
QUUzRixRQUFBNG9DLEdBQUFsMEIsRUFBQXJYLEdBQWlELElBQUFxWCxFQUFhLFNBQUFtMEIsZ0JB
QUEsNERBQXlGLFFBQUF4ckMsR0FBQSxnQkFBQUEsSUFBQSxrQkFBQUEsR0FBQXFYLEVBQUFyWCxF
QUV2SixRQUFBeXJDLEdBQUFDLEVBQUFDLEdBQTBDLHFCQUFBQSxJQUFBLE9BQUFBLEVBQStELFNB
QUFocEMsV0FBQSxpRUFBQWdwQyxHQUF1R0QsR0FBQXByQyxVQUFBRCxPQUFBNitCLE9BQUF5TSxL
QUFBcnJDLFdBQXlFdU4sYUFBZWdFLE1BQUE2NUIsRUFBQXZELFlBQUEsRUFBQXlELFVBQUEsRUFB
QXhELGNBQUEsS0FBNkV1RCxJQUFBdHJDLE9BQUF3ckMsZUFBQXhyQyxPQUFBd3JDLGVBQUFILEVB
QUFDLEdBQUFELEVBQUFJLFVBQUFILEdBRXJYLFFBQUFJLEdBQUFsa0IsRUFBQWxrQixHQUE4QyxH
QUFBSyxLQUFpQixRQUFBNUQsS0FBQXluQixHQUFxQmxrQixFQUFBK29CLFFBQUF0c0IsSUFBQSxH
QUFvQ0MsT0FBQUMsVUFBQUMsZUFBQVAsS0FBQTZuQixFQUFBem5CLEtBQTZENEQsRUFBQTVELEdB
QUF5bkIsRUFBQXpuQixHQUFzQixPQUFBNEQsR0FJM00sUUFBQWdvQyxNQUNBLFFBQUFDLEdBQUFD
LEVBQUFDLEdBRUEsR0FBQUMsSUFDQUMsSUFBQSxTQUFBOTBCLEdBQ0EsSUFDQSxHQUFBKzBCLEdB
QUFKLEVBQUFDLEVBQUFJLFdBQUFoMUIsSUFDQSswQixJQUFBRixFQUFBNzBCLE9BQUE2MEIsRUFB
QTVxQyxTQUNBNHFDLEVBQUFJLHVCQUFBLEVBQ0FKLEVBQUE3MEIsTUFBQSswQixFQUNBRixFQUFB
NXFDLE1BQUEsTUFFTyxNQUFBQSxHQUNQNHFDLEVBQUFJLHVCQUFBLEVBQ0FKLEVBQUE1cUMsVUFL
QSxPQUFBNHFDLEdBR0EsUUFBQUssR0FlQUMsR0FDQSxHQUFBQyxHQUFBQyxFQUVBQyxFQUFBenFD
LFVBQUFDLE9BQUEsR0FBQVosU0FBQVcsVUFBQSxHQUFBQSxVQUFBLE1BQ0EwcUMsRUFBQUQsRUFB
QUUsZUFDQUEsRUFBQXRyQyxTQUFBcXJDLEVBQUEsU0FBQWpyQyxHQUNBLHlCQUFBQSxFQUFBLEtB
Q0dpckMsRUFDSEUsRUFBQUgsRUFBQUksV0FDQUEsRUFBQXhyQyxTQUFBdXJDLEVBQUEsa0JBQUFB
LEVBQ0FFLEVBQUFMLEVBQUFNLGdCQUNBQSxFQUFBMXJDLFNBQUF5ckMsRUFBQXpyQyxPQUFBeXJD
LEVBQ0FFLEVBQUFQLEVBQUFRLHlCQUNBQSxFQUFBNXJDLFNBQUEyckMsS0FDQUUsRUFBQVQsRUFB
QVUsU0FDQUEsRUFBQTlyQyxTQUFBNnJDLEVBQUEsUUFBQUEsRUFDQUUsRUFBQVgsRUFBQVksUUFD
QUEsRUFBQWhzQyxTQUFBK3JDLEtBQ0FFLEVBQUEzQixFQUFBYyxHQUFBLGtHQUVBYyxFQUFBSixF
QUFBLGVBQ0ExMkIsRUFBQSsyQixJQUVBQyxHQUFBbEIsS0FBd0NBLEVBQUFZLEdBQUFPLEVBQUFD
LFdBQUFwQixFQUFBZ0IsR0FBQUcsRUFBQUUsa0JBQUFyQixHQUN4Q3NCLEdBQUFyQixLQUFrREEs
RUFBQWUsR0FBQUcsRUFBQUUsa0JBQUFwQixFQUVsRCxpQkFBQXNCLElBQ0EsRUFBQUMsRUFBQXBt
QixTQUFBLGtCQUFBbW1CLEdBQUEsbUZBQUFFLEtBQUFDLFVBQUFILEdBRUEsSUFBQUksR0FBQUos
RUFBQWhjLGFBQUFnYyxFQUFBcnNDLE1BQUEsWUFFQXF3QixFQUFBNmEsRUFBQXVCLEdBRUFDLEVB
QUFDLEtBQTRDZCxHQUM1Q1gsaUJBQ0FFLGFBQ0FFLGtCQUNBRSwyQkFDQUUsV0FDQUUsVUFDQXZi
LGNBQ0FvYyx1QkFDQUoscUJBR0FPLEVBQUEsU0FBQUMsR0FHQSxRQUFBRCxHQUFBbDNCLEVBQUE5
TCxHQUNBaXdCLEVBQUEzNkIsS0FBQTB0QyxFQUVBLElBQUFFLEdBQUFwRCxFQUFBeHFDLEtBQUEy
dEMsRUFBQTF1QyxLQUFBZSxLQUFBd1csRUFBQTlMLEdBYUEsT0FYQWtqQyxHQUFBOTNCLFVBQ0E4
M0IsRUFBQUMsU0FDQUQsRUFBQUUsWUFBQSxFQUNBRixFQUFBeEMsTUFBQTUwQixFQUFBZzJCLElB
QUE5aEMsRUFBQThoQyxHQUNBb0IsRUFBQUcsVUFBQWpSLFFBQUF0bUIsRUFBQWcyQixJQUNBb0Is
RUFBQUksbUJBQUFKLEVBQUFJLG1CQUFBLzJCLEtBQUEyMkIsSUFFQSxFQUFBUixFQUFBcG1CLFNB
QUE0bUIsRUFBQXhDLE1BQUEsbUJBQUFvQixFQUFBLDRDQUFBcmIsRUFBQSwrRUFBQXFiLEVBQUEs
bUJBQUFyYixFQUFBLE9BRUF5YyxFQUFBSyxlQUNBTCxFQUFBTSxtQkFDQU4sRUE4SEEsTUFoSkFs
RCxHQUFBZ0QsRUFBQUMsR0FxQkFELEVBQUFudUMsVUFBQTR1QyxnQkFBQSxXQUNBLEdBQUFDLEdB
TUFDLEVBQUFydUMsS0FBQSt0QyxVQUFBLEtBQUEvdEMsS0FBQXF1QyxZQUNBLE9BQUFELE1BQXlC
QSxFQUFBeEIsR0FBQXlCLEdBQUFydUMsS0FBQTBLLFFBQUFraUMsR0FBQXdCLEdBR3pCVixFQUFB
bnVDLFVBQUErdUMsa0JBQUEsV0FDQWhDLElBUUF0c0MsS0FBQXF1QyxhQUFBRSxlQUNBdnVDLEtB
QUFxckMsU0FBQUMsSUFBQXRyQyxLQUFBd1csT0FDQXhXLEtBQUFxckMsU0FBQUksdUJBQUF6ckMs
S0FBQXd1QyxnQkFHQWQsRUFBQW51QyxVQUFBa3ZDLDBCQUFBLFNBQUFsRCxHQUNBdnJDLEtBQUFx
ckMsU0FBQUMsSUFBQUMsSUFHQW1DLEVBQUFudUMsVUFBQWtzQyxzQkFBQSxXQUNBLE1BQUF6ckMs
TUFBQXFyQyxTQUFBSSx1QkFHQWlDLEVBQUFudUMsVUFBQW12QyxxQkFBQSxXQUNBMXVDLEtBQUFx
dUMsY0FBQXJ1QyxLQUFBcXVDLGFBQUFNLGlCQUNBM3VDLEtBQUFxdUMsYUFBQSxLQUNBcnVDLEtB
QUE0dUMsaUJBQUEzRCxFQUNBanJDLEtBQUFvckMsTUFBQSxLQUNBcHJDLEtBQUFxckMsU0FBQUMs
SUFBQUwsRUFDQWpyQyxLQUFBcXJDLFNBQUFJLHVCQUFBLEdBR0FpQyxFQUFBbnVDLFVBQUFzdkMs
bUJBQUEsV0FFQSxPQURBLEVBQUF6QixFQUFBcG1CLFNBQUEwbEIsRUFBQSw0R0FBc0hSLEVBQUEs
YUFDdEhsc0MsS0FBQTh1QyxpQkFHQXBCLEVBQUFudUMsVUFBQXl1QyxtQkFBQSxTQUFBdDZCLEdB
Q0ExVCxLQUFBOHVDLGdCQUFBcDdCLEdBR0FnNkIsRUFBQW51QyxVQUFBMHVDLGFBQUEsV0FDQSxH
QUFBOUMsR0FBQVEsRUFBQTNyQyxLQUFBb3JDLE1BQUEyRCxTQUFBdkIsRUFDQXh0QyxNQUFBcXJD
LFNBQUFILEVBQUFDLEVBQUFuckMsS0FBQW9yQyxPQUNBcHJDLEtBQUFxckMsU0FBQUMsSUFBQXRy
QyxLQUFBd1csUUFHQWszQixFQUFBbnVDLFVBQUEydUMsaUJBQUEsV0FDQSxHQUFBNUIsRUFBQSxD
QUlBLEdBQUEwQyxJQUFBaHZDLEtBQUErdEMsVUFBQS90QyxLQUFBd1csTUFBQXhXLEtBQUEwSyxT
QUFBa2lDLEVBQ0E1c0MsTUFBQXF1QyxhQUFBLEdBQUFZLEdBQUFqb0IsUUFBQWhuQixLQUFBb3JD
LE1BQUE0RCxFQUFBaHZDLEtBQUFrdkMsY0FBQWo0QixLQUFBalgsT0FRQUEsS0FBQTR1QyxpQkFB
QTV1QyxLQUFBcXVDLGFBQUFPLGlCQUFBMzNCLEtBQUFqWCxLQUFBcXVDLGdCQUdBWCxFQUFBbnVD
LFVBQUEydkMsY0FBQSxXQUNBbHZDLEtBQUFxckMsU0FBQUMsSUFBQXRyQyxLQUFBd1csT0FFQXhX
LEtBQUFxckMsU0FBQUksdUJBR0F6ckMsS0FBQW12QyxtQkFBQW52QyxLQUFBb3ZDLHFDQUNBcHZD
LEtBQUFxdkMsU0FBQUMsSUFIQXR2QyxLQUFBNHVDLG9CQU9BbEIsRUFBQW51QyxVQUFBNnZDLHFD
QUFBLFdBTUFwdkMsS0FBQW12QyxtQkFBQXp1QyxPQUNBVixLQUFBNHVDLG9CQUdBbEIsRUFBQW51
QyxVQUFBZ3dDLGFBQUEsV0FDQSxNQUFBelMsU0FBQTk4QixLQUFBcXVDLGVBQUFydUMsS0FBQXF1
QyxhQUFBa0IsZ0JBR0E3QixFQUFBbnVDLFVBQUFpd0MsY0FBQSxTQUFBaDVCLEdBQ0EsS0FBQWsy
QixHQUFBTixHQUFBcHNDLEtBQUErdEMsV0FBQS90QyxLQUFBcXVDLGNBQUEsTUFBQTczQixFQUtB
LElBQUFpNUIsR0FBQWhDLEtBQW9DajNCLEVBSXBDLE9BSEFrMkIsS0FBQStDLEVBQUEvN0IsSUFB
QTFULEtBQUFndUMsb0JBQ0E1QixJQUFBcUQsRUFBQXJELEdBQUFwc0MsS0FBQTh0QyxlQUNBOXRD
LEtBQUErdEMsV0FBQS90QyxLQUFBcXVDLGVBQUFvQixFQUFBN0MsR0FBQTVzQyxLQUFBcXVDLGNB
Q0FvQixHQUdBL0IsRUFBQW51QyxVQUFBa2tDLE9BQUEsV0FDQSxHQUFBNEgsR0FBQXJyQyxLQUFB
cXJDLFFBR0EsSUFGQUEsRUFBQUksdUJBQUEsRUFFQUosRUFBQTVxQyxNQUNBLEtBQUE0cUMsR0FB
QTVxQyxLQUVBLFVBQUFpdkMsRUFBQWhwQyxlQUFBeW1DLEVBQUFudEMsS0FBQXd2QyxjQUFBbkUs
RUFBQTcwQixTQUlBazNCLEdBQ0tnQyxFQUFBbDZCLFVBdUNMLE9BckNBazRCLEdBQUFQLG1CQUNB
TyxFQUFBdmMsY0FDQXVjLEVBQUFSLG9CQUNBUSxFQUFBWixlQUNBWSxFQUFBM2QsVUFBQStjLEdB
aUNBLEVBQUE2QyxFQUFBM29CLFNBQUEwbUIsRUFBQVAsSUE3U0F0dUMsRUFBQWtvQixZQUFBLENB
RUEsSUFBQTBtQixHQUFBbnVDLE9BQUF3QyxRQUFBLFNBQUFtQixHQUFtRCxPQUFBNUQsR0FBQSxF
QUFnQkEsRUFBQWdDLFVBQUFDLE9BQXNCakMsSUFBQSxDQUFPLEdBQUE2RCxHQUFBN0IsVUFBQWhD
LEVBQTJCLFFBQUFrRSxLQUFBTCxHQUEwQjVELE9BQUFDLFVBQUFDLGVBQUFQLEtBQUFpRSxFQUFB
SyxLQUF5RE4sRUFBQU0sR0FBQUwsRUFBQUssSUFBaUMsTUFBQU4sR0FFL09wRSxHQUFBbW9CLFFB
QUEwa0IsQ0FFQSxJQUFBa0UsR0FBQWx4QyxFQUFBLEtBRUFpeEMsRUFBQTlvQixFQUFBK29CLEdB
RUFDLEVBQUFueEMsRUFBQSxLQUVBMHVDLEVBQUF2bUIsRUFBQWdwQixHQUVBSCxFQUFBaHhDLEVB
QUEsSUFFQW94QyxFQUFBcHhDLEVBQUEsS0FFQXV3QyxFQUFBcG9CLEVBQUFpcEIsR0FFQS9DLEVB
QUFydUMsRUFBQSxJQVlBbXVDLEVBQUEsRUFDQXlDLE05RW9pUk0sU0FBU3h3QyxFQUFRRCxFQUFT
SCxHK0V2a1JoQyxZQVdBLFNBQUFtb0IsR0FBQUMsR0FBc0MsTUFBQUEsTUFBQUMsV0FBQUQsR0FB
dUNFLFFBQUFGLEdBRTdFLFFBQUFpcEIsR0FBQUMsR0FDQSxnQkFBQWpCLEVBQUE3UixHQUdBLFFB
QUErUyxLQUNBLE1BQUFDLEdBSEEsR0FBQUEsR0FBQUYsRUFBQWpCLEVBQUE3UixFQU1BLE9BREEr
UyxHQUFBRSxtQkFBQSxFQUNBRixHQVdBLFFBQUFHLEdBQUFDLEdBQ0EsY0FBQUEsRUFBQUYsbUJB
QUF6dkMsU0FBQTJ2QyxFQUFBRixrQkFBQXJULFFBQUF1VCxFQUFBRixtQkFBQSxJQUFBRSxFQUFB
L3VDLE9BZUEsUUFBQWd2QyxHQUFBRCxFQUFBbkUsR0FDQSxnQkFBQTZDLEVBQUFqRCxHQUNBLEdB
RUF5RSxJQUZBekUsRUFBQTNhLFlBRUEsU0FBQXFmLEVBQUFDLEdBQ0EsTUFBQUYsR0FBQUosa0JB
QUFJLEVBQUFGLFdBQUFHLEVBQUFDLEdBQUFGLEVBQUFGLFdBQUFHLElBc0JBLE9BbEJBRCxHQUFB
SixtQkFBQSxFQUVBSSxFQUFBRixXQUFBLFNBQUFHLEVBQUFDLEdBQ0FGLEVBQUFGLGFBQ0FFLEVB
QUFKLGtCQUFBQyxFQUFBQyxFQUNBLElBQUE3NUIsR0FBQSs1QixFQUFBQyxFQUFBQyxFQVVBLE9B
UkEsa0JBQUFqNkIsS0FDQSs1QixFQUFBRixXQUFBNzVCLEVBQ0ErNUIsRUFBQUosa0JBQUFDLEVB
QUE1NUIsR0FDQUEsRUFBQSs1QixFQUFBQyxFQUFBQyxJQUtBajZCLEdBR0ErNUIsR0F6RUExeEMs
RUFBQWtvQixZQUFBLEVBQ0Fsb0IsRUFBQWt4Qyx5QkFDQWx4QyxFQUFBdXhDLHVCQUNBdnhDLEVB
QUF5eEMsb0JBRUEsSUFBQUksR0FBQWh5QyxFQUFBLEdBRUFtb0IsR0FBQTZwQixJL0VpcFJNLFNB
QVM1eEMsRUFBUUQsRUFBU0gsR2dGMXBSaEMsWUFpQkEsU0FBQW1vQixHQUFBQyxHQUFzQyxNQUFB
QSxNQUFBQyxXQUFBRCxHQUF1Q0UsUUFBQUYsR0FmN0Vqb0IsRUFBQWtvQixZQUFBLEVBQ0Fsb0Is
RUFBQTh4QyxRQUFBOXhDLEVBQUE2c0MsZ0JBQUE3c0MsRUFBQSt4QyxlQUFBL3hDLEVBQUFneUMs
U0FBQW53QyxNQUVBLElBQUFvd0MsR0FBQXB5QyxFQUFBLEtBRUFxeUMsRUFBQWxxQixFQUFBaXFC
LEdBRUFFLEVBQUF0eUMsRUFBQSxJQUVBdXlDLEVBQUFwcUIsRUFBQW1xQixHQUVBRSxFQUFBeHlD
LEVBQUEsS0FFQXl5QyxFQUFBdHFCLEVBQUFxcUIsRUFJQXJ5QyxHQUFBZ3lDLFNBQUFFLEVBQUEv
cEIsUUFDQW5vQixFQUFBK3hDLGVBQUFFLEVBQUFGLGVBQ0EveEMsRUFBQTZzQyxnQkFBQXVGLEVB
QUFqcUIsUUFDQW5vQixFQUFBOHhDLFFBQUFRLEVBQUFucUIsU2hGZ3FSTSxTQUFTbG9CLEVBQVFE
LEVBQVNILEdpRnRyUmhDLFlBU0EsU0FBQW1vQixHQUFBQyxHQUFzQyxNQUFBQSxNQUFBQyxXQUFB
RCxHQUF1Q0UsUUFBQUYsR0FQN0Vqb0IsRUFBQWtvQixZQUFBLEVBQ0Fsb0IsRUFBQW11QyxXQUFB
bnVDLEVBQUFvdUMsa0JBQUF2c0MsTUFFQSxJQUFBMHdDLEdBQUExeUMsRUFBQSxJQUVBMnlDLEVB
QUF4cUIsRUFBQXVxQixFQUlBdnlDLEdBQUFvdUMsa0JBQUFvRSxFQUFBcnFCLFFBQUFzcUIsT0FD
QS9DLGFBQUE4QyxFQUFBcnFCLFFBQUFrSixLQUFBcWhCLFdBQ0E1QyxlQUFBMEMsRUFBQXJxQixR
QUFBa0osS0FBQXFoQixXQUNBM0MsaUJBQUF5QyxFQUFBcnFCLFFBQUFrSixLQUFBcWhCLFdBQ0Fo
QyxhQUFBOEIsRUFBQXJxQixRQUFBa0osS0FBQXFoQixhQUdBMXlDLEVBQUFtdUMsV0FBQXFFLEVB
QUFycUIsUUFBQXNxQixPQUNBRSxVQUFBSCxFQUFBcnFCLFFBQUFrSixLQUFBcWhCLFdBQ0F4QyxT
QUFBc0MsRUFBQXJxQixRQUFBa0osS0FBQXFoQixXQUNBL0YsU0FBQTZGLEVBQUFycUIsUUFBQWtK
LEtBQUFxaEIsY2pGNnJSTSxTQUFTenlDLEVBQVFELEVBQVNILEdrRmx0UmhDLFlBYUEsU0FBQW1v
QixHQUFBQyxHQUFzQyxNQUFBQSxNQUFBQyxXQUFBRCxHQUF1Q0UsUUFBQUYsR0FFN0UsUUFBQTJx
QixHQUFBM2dDLEVBQUFxZ0IsRUFBQSthLElBQ0EsRUFBQXdGLEVBQUExcUIsU0FBQWxXLEtBQ0Es
RUFBQTZnQyxFQUFBM3FCLFNBQUFrbEIsRUFBQSxTQUFBL2EsRUFBQSxpREFBQXJnQixFQUFBLEtB
ZkFqUyxFQUFBa29CLFlBQUEsRUFDQWxvQixFQUFBbW9CLFFBQUF5cUIsQ0FFQSxJQUFBRyxHQUFB
bHpDLEVBQUEsSUFFQWd6QyxFQUFBN3FCLEVBQUErcUIsR0FFQTVwQixFQUFBdHBCLEVBQUEsSUFF
QWl6QyxFQUFBOXFCLEVBQUFtQixJbEZndVJNLFNBQVNscEIsRUFBUUQsRUFBU0gsR0FFL0IsWUFn
QkEsU0FBU21vQixHQUF1QkMsR0FBTyxNQUFPQSxJQUFPQSxFQUFJQyxXQUFhRCxHQUFRRSxRQUFT
RixHQUV2RixRQUFTNlQsR0FBZ0JDLEVBQVVDLEdBQWUsS0FBTUQsWUFBb0JDLElBQWdCLEtBQU0s
SUFBSWo1QixXQUFVLHFDQUVoSCxRQUFTNG9DLEdBQTJCbDBCLEVBQU1yWCxHQUFRLElBQUtxWCxF
QUFRLEtBQU0sSUFBSW0wQixnQkFBZSw0REFBZ0UsUUFBT3hyQyxHQUF5QixnQkFBVEEsSUFBcUMs
a0JBQVRBLEdBQThCcVgsRUFBUHJYLEVBRWxPLFFBQVN5ckMsR0FBVUMsRUFBVUMsR0FBYyxHQUEw
QixrQkFBZkEsSUFBNEMsT0FBZkEsRUFBdUIsS0FBTSxJQUFJaHBDLFdBQVUsaUVBQW9FZ3BDLEdB
QWVELEdBQVNwckMsVUFBWUQsT0FBTzYrQixPQUFPeU0sR0FBY0EsRUFBV3JyQyxXQUFhdU4sYUFB
ZWdFLE1BQU82NUIsRUFBVXZELFlBQVksRUFBT3lELFVBQVUsRUFBTXhELGNBQWMsS0FBZXVELElB
QVl0ckMsT0FBT3dyQyxlQUFpQnhyQyxPQUFPd3JDLGVBQWVILEVBQVVDLEdBQWNELEVBQVNJLFVB
QVlILEdBcEJqZXRyQyxPQUFPNm5DLGVBQWV0b0MsRUFBUyxjQUM3QmlTLE9BQU8sR0FHVCxJQUFJ
K2dDLEdBQWUsV0FBYyxRQUFTQyxHQUFpQjd1QyxFQUFRdVQsR0FBUyxJQUFLLEdBQUluWCxHQUFJ
LEVBQUdBLEVBQUltWCxFQUFNbFYsT0FBUWpDLElBQUssQ0FBRSxHQUFJMm5DLEdBQWF4d0IsRUFB
TW5YLEVBQUkybkMsR0FBV0ksV0FBYUosRUFBV0ksYUFBYyxFQUFPSixFQUFXSyxjQUFlLEVBQVUs
U0FBV0wsS0FBWUEsRUFBVzZELFVBQVcsR0FBTXZyQyxPQUFPNm5DLGVBQWVsa0MsRUFBUStqQyxF
QUFXempDLElBQUt5akMsSUFBaUIsTUFBTyxVQUFVbk0sRUFBYWtYLEVBQVlDLEdBQWlKLE1BQTlI
RCxJQUFZRCxFQUFpQmpYLEVBQVl0N0IsVUFBV3d5QyxHQUFpQkMsR0FBYUYsRUFBaUJqWCxFQUFh
bVgsR0FBcUJuWCxNbUZudlJqaUI2VSxFQUFBaHhDLEVBQUEsSW5GdXZSS3V6QyxFQUFVcHJCLEVB
QXVCNm9CLEdtRnR2UnRDd0MsRUFBQXh6QyxFQUFBLEluRjB2Ukt5ekMsRUFBZXRyQixFQUF1QnFy
QixHbUZ4dlJ0QkUsRW5Ga3dSQSxTQUFVekUsR0FHNUIsUUFBU3lFLEtBQ1AsR0FBSXRHLEdBRUF1
RyxFQUFPekUsRUFBTzBFLENBRWxCM1gsR0FBZ0IzNkIsS0FBTW95QyxFQUV0QixLQUFLLEdBQUlH
LEdBQU9seEMsVUFBVUMsT0FBUTVCLEVBQU9vWCxNQUFNeTdCLEdBQU9DLEVBQU8sRUFBR0EsRUFB
T0QsRUFBTUMsSUFDM0U5eUMsRUFBSzh5QyxHQUFRbnhDLFVBQVVteEMsRUFHekIsT0FBZUgsR0FB
U3pFLEVBQVFwRCxFQUEyQnhxQyxNQUFPOHJDLEVBQU9zRyxFQUFjckgsV0FBYXpyQyxPQUFPbXpD
LGVBQWVMLElBQWdCbnpDLEtBQUtjLE1BQU0rckMsR0FBTzlyQyxNQUFNQyxPQUFPUCxLQUFpQmt1
QyxFbUZ2d1I3TEMsT0FDRTErQixLQUFNeStCLEVBQUtwM0IsTUFBTXJILE1BQVEsSW5Gd3dSckJ5
K0IsRW1GcndSTjhFLGFBQWUsU0FBQXB5QyxHQUNiLEdBQU02TyxHQUFPN08sRUFBRTJDLE9BQU82
TixNQUFNNmhDLE1BQ1osTUFBWnJ5QyxFQUFFc3lDLFFBQ0poRixFQUFLcDNCLE1BQU1xOEIsT0FB
TzFqQyxHQUNkeStCLEVBQUtwM0IsTUFBTXM4QixTQUNibEYsRUFBS3lCLFVBQVdsZ0MsS0FBTSxP
bkZ3d1J0QnkrQixFbUZud1JObUYsYUFBZSxTQUFBenlDLEdBQ2JzdEMsRUFBS3lCLFVBQVdsZ0Ms
S0FBTTdPLEVBQUUyQyxPQUFPNk4sU25Gb3dSM0I4OEIsRW1GandSTm9GLFdBQWEsU0FBQTF5QyxH
QUNOc3RDLEVBQUtwM0IsTUFBTXM4QixTQUNkbEYsRUFBS3AzQixNQUFNcThCLE9BQU92eUMsRUFB
RTJDLE9BQU82TixRbkZtdlJyQndoQyxFQWdCSkQsRUFBUTdILEVBQTJCb0QsRUFBTzBFLEdBb0Iv
QyxNQWpEQTVILEdBQVUwSCxFQUFlekUsR0FnQ3pCa0UsRUFBYU8sSUFDWDd1QyxJQUFLLFNBQ0x1
TixNQUFPLFdtRm53UlIsTUFDRW1oQyxHQUFBanJCLFFBQUF0Z0IsY0FBQSxTQUFPdXNDLFdBQ0ws
RUFBQWQsRUFBQW5yQixVQUNFa3NCLEtBQU1sekMsS0FBS3dXLE1BQU0yOEIsUUFDakJDLFdBQVlw
ekMsS0FBS3dXLE1BQU1zOEIsVUFFekJucEMsS0FBSyxPQUNMMHBDLFlBQWFyekMsS0FBS3dXLE1B
QU02OEIsWUFDeEJDLFVBQVUsT0FDVnhpQyxNQUFPOVEsS0FBSzZ0QyxNQUFNMStCLEtBQ2xCb2tD
LE9BQVF2ekMsS0FBS2d6QyxXQUNiN2pCLFNBQVVudkIsS0FBSyt5QyxhQUNmUyxVQUFXeHpDLEtB
QUsweUMsbUJuRnN3UmROLEdBQ1AxQyxFQUFPbDZCLFVtRnJ6Ulc0OEIsR0FDWnJpQixXQUNMOGlC
LE9BQVFuRCxFQUFBLzVCLFVBQVV1YSxLQUFLcWhCLFdBQ3ZCcGlDLEtBQU11Z0MsRUFBQS81QixV
QUFVNFAsT0FDaEI4dEIsWUFBYTNELEVBQUEvNUIsVUFBVTRQLE9BQ3ZCNHRCLFFBQVN6RCxFQUFB
LzVCLFVBQVU4OUIsS0FDbkJYLFFBQVNwRCxFQUFBLzVCLFVBQVU4OUIsTW5Gd3pSdEI1MEMsRUFB
UW1vQixRbUY5elJZb3JCLEduRmswUmYsU0FBU3R6QyxFQUFRRCxHQUV0QixZQUVBUyxRQUFPNm5D
LGVBQWV0b0MsRUFBUyxjQUM3QmlTLE9BQU8sR29GMTBSRzRpQyxZQUFXLFdBQ1hDLGNBQWMsY0FD
ZEMsWUFBWSxZQUNaQyxnQkFBZ0IsZ0JBQ2hCQyxlQUFlLGVBQ2ZDLGtCQUFrQixtQnBGZzFSekIs
U0FBU2oxQyxFQUFRRCxHQUV0QixZQUVBUyxRQUFPNm5DLGVBQWV0b0MsRUFBUyxjQUM3QmlTLE9B
QU8sR3FGMTFSR2tqQyxZQUFXLFdBQ1hDLGlCQUFpQixpQkFDakJDLGNBQWMsZXJGZzJSckIsU0FB
U3AxQyxFQUFRRCxHc0Z2MVJ2QixRQUFBczFDLEtBQ0EsU0FBQXh6QyxPQUFBLG1DQUVBLFFBQUF5
ekMsS0FDQSxTQUFBenpDLE9BQUEscUNBc0JBLFFBQUEwekMsR0FBQUMsR0FDQSxHQUFBQyxJQUFB
QyxXQUVBLE1BQUFBLFlBQUFGLEVBQUEsRUFHQSxLQUFBQyxJQUFBSixJQUFBSSxJQUFBQyxXQUVB
LE1BREFELEdBQUFDLFdBQ0FBLFdBQUFGLEVBQUEsRUFFQSxLQUVBLE1BQUFDLEdBQUFELEVBQUEs
R0FDSyxNQUFBaDBDLEdBQ0wsSUFFQSxNQUFBaTBDLEdBQUF0MUMsS0FBQSxLQUFBcTFDLEVBQUEs
R0FDUyxNQUFBaDBDLEdBRVQsTUFBQWkwQyxHQUFBdDFDLEtBQUFlLEtBQUFzMEMsRUFBQSxLQU1B
LFFBQUFHLEdBQUFDLEdBQ0EsR0FBQUMsSUFBQUMsYUFFQSxNQUFBQSxjQUFBRixFQUdBLEtBQUFD
LElBQUFQLElBQUFPLElBQUFDLGFBRUEsTUFEQUQsR0FBQUMsYUFDQUEsYUFBQUYsRUFFQSxLQUVB
LE1BQUFDLEdBQUFELEdBQ0ssTUFBQXAwQyxHQUNMLElBRUEsTUFBQXEwQyxHQUFBMTFDLEtBQUEs
S0FBQXkxQztDQUNTLE1BQUFwMEMsR0FHVCxNQUFBcTBDLEdBQUExMUMsS0FBQWUsS0FBQTAwQyxL
QVlBLFFBQUFHLEtBQ0FDLEdBQUFDLElBR0FELEdBQUEsRUFDQUMsRUFBQXp6QyxPQUNBMEssRUFB
QStvQyxFQUFBOTBDLE9BQUErTCxHQUVBZ3BDLEtBRUFocEMsRUFBQTFLLFFBQ0EyekMsS0FJQSxR
QUFBQSxLQUNBLElBQUFILEVBQUEsQ0FHQSxHQUFBSSxHQUFBYixFQUFBUSxFQUNBQyxJQUFBLENB
R0EsS0FEQSxHQUFBOXJDLEdBQUFnRCxFQUFBMUssT0FDQTBILEdBQUEsQ0FHQSxJQUZBK3JDLEVB
QUEvb0MsRUFDQUEsT0FDQWdwQyxFQUFBaHNDLEdBQ0ErckMsR0FDQUEsRUFBQUMsR0FBQTFKLEtB
R0EwSixNQUNBaHNDLEVBQUFnRCxFQUFBMUssT0FFQXl6QyxFQUFBLEtBQ0FELEdBQUEsRUFDQUws
RUFBQVMsSUFpQkEsUUFBQUMsR0FBQWIsRUFBQWMsR0FDQXAxQyxLQUFBczBDLE1BQ0F0MEMsS0FB
QW8xQyxRQVlBLFFBQUFuSyxNQWhLQSxHQU9Bc0osR0FDQUksRUFSQVUsRUFBQXYyQyxFQUFBRCxZ
QWdCQSxXQUNBLElBRUEwMUMsRUFEQSxrQkFBQUMsWUFDQUEsV0FFQUwsRUFFSyxNQUFBN3pDLEdB
Q0xpMEMsRUFBQUosRUFFQSxJQUVBUSxFQURBLGtCQUFBQyxjQUNBQSxhQUVBUixFQUVLLE1BQUE5
ekMsR0FDTHEwQyxFQUFBUCxLQXVEQSxJQUVBVyxHQUZBL29DLEtBQ0E4b0MsR0FBQSxFQUVBRSxJ
QXlDQUssR0FBQUMsU0FBQSxTQUFBaEIsR0FDQSxHQUFBNTBDLEdBQUEsR0FBQW9YLE9BQUF6VixV
QUFBQyxPQUFBLEVBQ0EsSUFBQUQsVUFBQUMsT0FBQSxFQUNBLE9BQUFqQyxHQUFBLEVBQXVCQSxF
QUFBZ0MsVUFBQUMsT0FBc0JqQyxJQUM3Q0ssRUFBQUwsRUFBQSxHQUFBZ0MsVUFBQWhDLEVBR0Ey
TSxHQUFBdkcsS0FBQSxHQUFBMHZDLEdBQUFiLEVBQUE1MEMsSUFDQSxJQUFBc00sRUFBQTFLLFFB
QUF3ekMsR0FDQVQsRUFBQVksSUFTQUUsRUFBQTUxQyxVQUFBK3JDLElBQUEsV0FDQXRyQyxLQUFB
czBDLElBQUF2MEMsTUFBQSxLQUFBQyxLQUFBbzFDLFFBRUFDLEVBQUFFLE1BQUEsVUFDQUYsRUFB
QUcsU0FBQSxFQUNBSCxFQUFBSSxPQUNBSixFQUFBSyxRQUNBTCxFQUFBdi9CLFFBQUEsR0FDQXUv
QixFQUFBTSxZQUlBTixFQUFBTyxHQUFBM0ssRUFDQW9LLEVBQUFRLFlBQUE1SyxFQUNBb0ssRUFB
QVMsS0FBQTdLLEVBQ0FvSyxFQUFBVSxJQUFBOUssRUFDQW9LLEVBQUFXLGVBQUEvSyxFQUNBb0ss
RUFBQVksbUJBQUFoTCxFQUNBb0ssRUFBQWEsS0FBQWpMLEVBRUFvSyxFQUFBYyxRQUFBLFNBQUFy
MUMsR0FDQSxTQUFBSCxPQUFBLHFDQUdBMDBDLEVBQUFlLElBQUEsV0FBMkIsV0FDM0JmLEVBQUFn
QixNQUFBLFNBQUFDLEdBQ0EsU0FBQTMxQyxPQUFBLG1DQUVBMDBDLEVBQUFrQixNQUFBLFdBQTRC
LFd0RnkyUnRCLFNBQVN6M0MsRUFBUUQsRUFBU0gsR3VGNWhTaEMsWUFJQSxTQUFBdXNDLE1BcUJB
LFFBQUF1TCxHQUFBMXZCLEdBQ0EsSUFDQSxNQUFBQSxHQUFBMnZCLEtBQ0csTUFBQUMsR0FFSCxN
QURBQyxHQUFBRCxFQUNBRSxHQUlBLFFBQUFDLEdBQUFqM0MsRUFBQUMsR0FDQSxJQUNBLE1BQUFE
LEdBQUFDLEdBQ0csTUFBQTYyQyxHQUVILE1BREFDLEdBQUFELEVBQ0FFLEdBR0EsUUFBQUUsR0FB
QWwzQyxFQUFBQyxFQUFBQyxHQUNBLElBQ0FGLEVBQUFDLEVBQUFDLEdBQ0csTUFBQTQyQyxHQUVI
LE1BREFDLEdBQUFELEVBQ0FFLEdBTUEsUUFBQUcsR0FBQW4zQyxHQUNBLG1CQUFBSSxNQUNBLFNB
QUE0QixXQUFBLHVDQUVBLHNCQUFBaEMsR0FDQSxTQUFBZ0MsV0FBQSxpQkFFQTVCLE1BQUFnM0Ms
SUFBQSxFQUNBaDNDLEtBQUFpM0MsSUFBQSxFQUNBajNDLEtBQUFrM0MsSUFBQSxLQUNBbDNDLEtB
QUFtM0MsSUFBQSxLQUNBdjNDLElBQUFxckMsR0FDQW1NLEVBQUF4M0MsRUFBQUksTUFlQSxRQUFB
cTNDLEdBQUEvZ0MsRUFBQWdoQyxFQUFBQyxHQUNBLFVBQUFqaEMsR0FBQXhKLFlBQUEsU0FBQTBx
QyxFQUFBQyxHQUNBLEdBQUFscUIsR0FBQSxHQUFBd3BCLEdBQUE5TCxFQUNBMWQsR0FBQWtwQixL
QUFBZSxFQUFBQyxHQUNBOTBCLEVBQUFyTSxFQUFBLEdBQUFvaEMsR0FBQUosRUFBQUMsRUFBQWhx
QixNQUdBLFFBQUE1SyxHQUFBck0sRUFBQXFoQyxHQUNBLFNBQUFyaEMsRUFBQTJnQyxLQUNBM2dD
LElBQUE0Z0MsR0FLQSxPQUhBSCxHQUFBYSxLQUNBYixFQUFBYSxJQUFBdGhDLEdBRUEsSUFBQUEs
RUFBQTJnQyxJQUNBLElBQUEzZ0MsRUFBQTBnQyxLQUNBMWdDLEVBQUEwZ0MsSUFBQSxPQUNBMWdD
LEVBQUE2Z0MsSUFBQVEsSUFHQSxJQUFBcmhDLEVBQUEwZ0MsS0FDQTFnQyxFQUFBMGdDLElBQUEs
T0FDQTFnQyxFQUFBNmdDLEtBQUE3Z0MsRUFBQTZnQyxJQUFBUSxTQUdBcmhDLEdBQUE2Z0MsSUFB
QTF4QyxLQUFBa3lDLE9BR0FFLEdBQUF2aEMsRUFBQXFoQyxHQUdBLFFBQUFFLEdBQUF2aEMsRUFB
QXFoQyxHQUNBbHRDLEVBQUEsV0FDQSxHQUFBdTdCLEdBQUEsSUFBQTF2QixFQUFBMmdDLElBQUFV
LEVBQUFMLFlBQUFLLEVBQUFKLFVBQ0EsV0FBQXZSLEVBTUEsWUFMQSxJQUFBMXZCLEVBQUEyZ0Ms
SUFDQU8sRUFBQUcsRUFBQUcsUUFBQXhoQyxFQUFBNGdDLEtBRUFPLEVBQUFFLEVBQUFHLFFBQUF4
aEMsRUFBQTRnQyxLQUlBLElBQUFseUIsR0FBQTZ4QixFQUFBN1EsRUFBQTF2QixFQUFBNGdDLElB
Q0FseUIsS0FBQTR4QixFQUNBYSxFQUFBRSxFQUFBRyxRQUFBbkIsR0FFQWEsRUFBQUcsRUFBQUcs
UUFBQTl5QixLQUlBLFFBQUF3eUIsR0FBQWxoQyxFQUFBeWhDLEdBRUEsR0FBQUEsSUFBQXpoQyxF
QUNBLE1BQUFtaEMsR0FDQW5oQyxFQUNBLEdBQUExVSxXQUFBLDZDQUdBLElBQ0FtMkMsSUFDQSxn
QkFBQUEsSUFBQSxrQkFBQUEsSUFDQSxDQUNBLEdBQUF0QixHQUFBRCxFQUFBdUIsRUFDQSxJQUFB
dEIsSUFBQUcsRUFDQSxNQUFBYSxHQUFBbmhDLEVBQUFxZ0MsRUFFQSxJQUNBRixJQUFBbmdDLEVB
QUFtZ0MsTUFDQXNCLFlBQUFoQixHQUtBLE1BSEF6Z0MsR0FBQTJnQyxJQUFBLEVBQ0EzZ0MsRUFB
QTRnQyxJQUFBYSxNQUNBQyxHQUFBMWhDLEVBRUssc0JBQUFtZ0MsR0FFTCxXQURBVyxHQUFBWCxF
QUFBeC9CLEtBQUE4Z0MsR0FBQXpoQyxHQUlBQSxFQUFBMmdDLElBQUEsRUFDQTNnQyxFQUFBNGdD
LElBQUFhLEVBQ0FDLEVBQUExaEMsR0FHQSxRQUFBbWhDLEdBQUFuaEMsRUFBQXloQyxHQUNBemhD
LEVBQUEyZ0MsSUFBQSxFQUNBM2dDLEVBQUE0Z0MsSUFBQWEsRUFDQWhCLEVBQUFrQixLQUNBbEIs
RUFBQWtCLElBQUEzaEMsRUFBQXloQyxHQUVBQyxFQUFBMWhDLEdBRUEsUUFBQTBoQyxHQUFBMWhD
LEdBS0EsR0FKQSxJQUFBQSxFQUFBMGdDLE1BQ0FyMEIsRUFBQXJNLElBQUE2Z0MsS0FDQTdnQyxF
QUFBNmdDLElBQUEsTUFFQSxJQUFBN2dDLEVBQUEwZ0MsSUFBQSxDQUNBLE9BQUEzM0MsR0FBQSxF
QUFtQkEsRUFBQWlYLEVBQUE2Z0MsSUFBQTcxQyxPQUFxQmpDLElBQ3hDc2pCLEVBQUFyTSxJQUFB
NmdDLElBQUE5M0MsR0FFQWlYLEdBQUE2Z0MsSUFBQSxNQUlBLFFBQUFPLEdBQUFKLEVBQUFDLEVB
QUFPLEdBQ0E5M0MsS0FBQXMzQyxZQUFBLGtCQUFBQSxLQUFBLEtBQ0F0M0MsS0FBQXUzQyxXQUFB
LGtCQUFBQSxLQUFBLEtBQ0F2M0MsS0FBQTgzQyxVQVNBLFFBQUFWLEdBQUF4M0MsRUFBQWs0QyxH
QUNBLEdBQUEzTixJQUFBLEVBQ0E1YyxFQUFBdXBCLEVBQUFsM0MsRUFBQSxTQUFBa1IsR0FDQXE1
QixJQUNBQSxHQUFBLEVBQ0FxTixFQUFBTSxFQUFBaG5DLEtBQ0csU0FBQW9uQyxHQUNIL04sSUFD
QUEsR0FBQSxFQUNBc04sRUFBQUssRUFBQUksS0FFQS9OLElBQUE1YyxJQUFBcXBCLElBQ0F6TSxH
QUFBLEVBQ0FzTixFQUFBSyxFQUFBbkIsSUFoTkEsR0FBQWxzQyxHQUFBL0wsRUFBQSxLQXFCQWk0
QyxFQUFBLEtBQ0FDLElBMkJBOTNDLEdBQUFELFFBQUFrNEMsRUFnQkFBLEVBQUFhLElBQUEsS0FD
QWIsRUFBQWtCLElBQUEsS0FDQWxCLEVBQUFvQixJQUFBbE4sRUFFQThMLEVBQUF4M0MsVUFBQWsz
QyxLQUFBLFNBQUFhLEVBQUFDLEdBQ0EsR0FBQXYzQyxLQUFBOE0sY0FBQWlxQyxFQUNBLE1BQUFN
LEdBQUFyM0MsS0FBQXMzQyxFQUFBQyxFQUVBLElBQUFocUIsR0FBQSxHQUFBd3BCLEdBQUE5TCxF
QUVBLE9BREF0b0IsR0FBQTNpQixLQUFBLEdBQUEwM0MsR0FBQUosRUFBQUMsRUFBQWhxQixJQUNB
QSxJdkYwcVNNLFNBQVN6dUIsRUFBUUQsRUFBU0gsR3dGN3VTaEMsWUFlQSxTQUFBMDVDLEdBQUE1
aEMsRUFBQTlMLEVBQUEydEMsR0FDQXI0QyxLQUFBd1csUUFDQXhXLEtBQUEwSyxVQUNBMUssS0FB
QXM0QyxLQUFBMTdCLEVBR0E1YyxLQUFBcTRDLFdBQUFFLEVBeUZBLFFBQUFDLEdBQUFoaUMsRUFB
QTlMLEVBQUEydEMsR0FFQXI0QyxLQUFBd1csUUFDQXhXLEtBQUEwSyxVQUNBMUssS0FBQXM0QyxL
QUFBMTdCLEVBR0E1YyxLQUFBcTRDLFdBQUFFLEVBR0EsUUFBQUUsTUF0SEEsR0FBQW56QyxHQUFB
NUcsRUFBQSxJQUNBbU0sRUFBQW5NLEVBQUEsR0FFQTY1QyxFQUFBNzVDLEVBQUEsSUFHQWtlLEdB
REFsZSxFQUFBLElBQ0FBLEVBQUEsSUFDQUEsR0FBQSxHQUNBQSxFQUFBLElBY0EwNUMsR0FBQTc0
QyxVQUFBaWtDLG9CQTJCQTRVLEVBQUE3NEMsVUFBQTh2QyxTQUFBLFNBQUFsZCxFQUFBMXBCLEdB
Q0EsZ0JBQUEwcEIsSUFBQSxrQkFBQUEsSUFBQSxNQUFBQSxFQUFBN3NCLEVBQUEsYUFDQXRGLEtB
QUFxNEMsUUFBQW5tQixnQkFBQWx5QixLQUFBbXlCLEdBQ0ExcEIsR0FDQXpJLEtBQUFxNEMsUUFB
QTVtQixnQkFBQXp4QixLQUFBeUksRUFBQSxhQWtCQTJ2QyxFQUFBNzRDLFVBQUFpdkMsWUFBQSxT
QUFBL2xDLEdBQ0F6SSxLQUFBcTRDLFFBQUF6bUIsbUJBQUE1eEIsTUFDQXlJLEdBQ0F6SSxLQUFB
cTRDLFFBQUE1bUIsZ0JBQUF6eEIsS0FBQXlJLEVBQUEsZUE2Q0Fnd0MsR0FBQWw1QyxVQUFBNjRD
LEVBQUE3NEMsVUFDQWk1QyxFQUFBajVDLFVBQUEsR0FBQWs1QyxHQUNBRCxFQUFBajVDLFVBQUF1
TixZQUFBMHJDLEVBRUEzdEMsRUFBQTJ0QyxFQUFBajVDLFVBQUE2NEMsRUFBQTc0QyxXQUNBaTVD
LEVBQUFqNUMsVUFBQW01QyxzQkFBQSxFQUVBNTVDLEVBQUFELFNBQ0EyVyxVQUFBNGlDLEVBQ0Ez
aUMsY0FBQStpQyxJeEY4dlNNLFNBQVMxNUMsRUFBUUQsRUFBU0gsR3lGLzNTaEMsWUFTQSxTQUFB
aTZDLEdBQUEvNEMsR0FFQSxHQUFBMnBCLEdBQUFHLFNBQUFucUIsVUFBQThHLFNBQ0E3RyxFQUFB
RixPQUFBQyxVQUFBQyxlQUNBbzVDLEVBQUFqZCxPQUFBLElBQUFwUyxFQUVBdHFCLEtBQUFPLEdB
RUFxQixRQUFBLHNCQUE2QixRQUU3QkEsUUFBQSxzRUFDQSxLQUNBLEdBQUFxQyxHQUFBcW1CLEVB
QUF0cUIsS0FBQVcsRUFDQSxPQUFBZzVDLEdBQUFwb0MsS0FBQXROLEdBQ0csTUFBQUwsR0FDSCxV
QThGQSxRQUFBZzJDLEdBQUE5NUMsR0FDQSxHQUFBKzVDLEdBQUFDLEVBQUFoNkMsRUFDQSxJQUFB
KzVDLEVBQUEsQ0FDQSxHQUFBRSxHQUFBRixFQUFBRSxRQUVBQyxHQUFBbDZDLEdBQ0FpNkMsRUFB
QXQyQyxRQUFBbTJDLElBSUEsUUFBQUssR0FBQXA0QyxFQUFBb0MsRUFBQWkyQyxHQUNBLG1CQUFB
cjRDLEdBQUEsWUFBQW9DLEVBQUEsUUFBQUEsRUFBQWsyQyxTQUFBdjRDLFFBQUEsb0JBQUFxQyxF
QUFBbTJDLFdBQUEsSUFBQUYsRUFBQSxnQkFBQUEsRUFBQSxRQUdBLFFBQUFuTixHQUFBdjFCLEdB
Q0EsYUFBQUEsRUFDQSxTQUNHLGdCQUFBQSxJQUFBLGdCQUFBQSxHQUNILFFBQ0csZ0JBQUFBLEdB
QUE5TSxLQUNIOE0sRUFBQTlNLEtBRUE4TSxFQUFBOU0sS0FBQXduQixhQUFBMWEsRUFBQTlNLEtB
QUE3SSxNQUFBLFVBSUEsUUFBQXc0QyxHQUFBdjZDLEdBQ0EsR0FHQW82QyxHQUhBcjRDLEVBQUF5
NEMsRUFBQXZOLGVBQUFqdEMsR0FDQTBYLEVBQUE4aUMsRUFBQUMsV0FBQXo2QyxHQUNBMDZDLEVB
QUFGLEVBQUFHLFdBQUEzNkMsRUFNQSxPQUpBMDZDLEtBQ0FOLEVBQUFJLEVBQUF2TixlQUFBeU4s
SUFHQVAsRUFBQXA0QyxFQUFBMlYsS0FBQWMsUUFBQTRoQyxHQXZKQSxHQXNDQVEsR0FDQVosRUFD
QUUsRUFDQVcsRUFDQUMsRUFDQUMsRUFDQUMsRUE1Q0F6MEMsRUFBQTVHLEVBQUEsSUFFQWlRLEVB
QUFqUSxFQUFBLElBd0JBczdDLEdBdEJBdDdDLEVBQUEsR0FDQUEsRUFBQSxHQXVCQSxrQkFBQW9Z
LE9BQUEzVCxNQUVBLGtCQUFBODJDLE1BQUF0QixFQUFBc0IsTUFFQSxNQUFBQSxJQUFBMTZDLFdB
QUEsa0JBQUEwNkMsS0FBQTE2QyxVQUFBcUQsTUFBQSsxQyxFQUFBc0IsSUFBQTE2QyxVQUFBcUQs
T0FFQSxrQkFBQXMzQyxNQUFBdkIsRUFBQXVCLE1BRUEsTUFBQUEsSUFBQTM2QyxXQUFBLGtCQUFB
MjZDLEtBQUEzNkMsVUFBQXFELE1BQUErMUMsRUFBQXVCLElBQUEzNkMsVUFBQXFELE1BVUEsSUFB
QW8zQyxFQUFBLENBQ0EsR0FBQUcsR0FBQSxHQUFBRixLQUNBRyxFQUFBLEdBQUFGLElBRUFQLEdB
QUEsU0FBQTU2QyxFQUFBKzVDLEdBQ0FxQixFQUFBbCtCLElBQUFsZCxFQUFBKzVDLElBRUFDLEVB
QUEsU0FBQWg2QyxHQUNBLE1BQUFvN0MsR0FBQXArQixJQUFBaGQsSUFFQWs2QyxFQUFBLFNBQUFs
NkMsR0FDQW83QyxFQUFBLE9BQUFwN0MsSUFFQTY2QyxFQUFBLFdBQ0EsTUFBQTlpQyxPQUFBM1Qs
S0FBQWczQyxFQUFBdjNDLFNBR0FpM0MsRUFBQSxTQUFBOTZDLEdBQ0FxN0MsRUFBQUMsSUFBQXQ3
QyxJQUVBKzZDLEVBQUEsU0FBQS82QyxHQUNBcTdDLEVBQUEsT0FBQXI3QyxJQUVBZzdDLEVBQUEs
V0FDQSxNQUFBampDLE9BQUEzVCxLQUFBaTNDLEVBQUF4M0MsYUFFQyxDQUNELEdBQUEwM0MsTUFD
QUMsS0FJQUMsRUFBQSxTQUFBejdDLEdBQ0EsVUFBQUEsR0FFQTA3QyxFQUFBLFNBQUFsM0MsR0FD
QSxNQUFBbTNDLFVBQUFuM0MsRUFBQW8zQyxPQUFBLE9BR0FoQixHQUFBLFNBQUE1NkMsRUFBQSs1
QyxHQUNBLEdBQUF2MUMsR0FBQWkzQyxFQUFBejdDLEVBQ0F1N0MsR0FBQS8yQyxHQUFBdTFDLEdB
RUFDLEVBQUEsU0FBQWg2QyxHQUNBLEdBQUF3RSxHQUFBaTNDLEVBQUF6N0MsRUFDQSxPQUFBdTdD
LEdBQUEvMkMsSUFFQTAxQyxFQUFBLFNBQUFsNkMsR0FDQSxHQUFBd0UsR0FBQWkzQyxFQUFBejdD
LFNBQ0F1N0MsR0FBQS8yQyxJQUVBcTJDLEVBQUEsV0FDQSxNQUFBdDZDLFFBQUFzRCxLQUFBMDND
LEdBQUFqNEMsSUFBQW80QyxJQUdBWixFQUFBLFNBQUE5NkMsR0FDQSxHQUFBd0UsR0FBQWkzQyxF
QUFBejdDLEVBQ0F3N0MsR0FBQWgzQyxJQUFBLEdBRUF1MkMsRUFBQSxTQUFBLzZDLEdBQ0EsR0FB
QXdFLEdBQUFpM0MsRUFBQXo3QyxTQUNBdzdDLEdBQUFoM0MsSUFFQXcyQyxFQUFBLFdBQ0EsTUFB
QXo2QyxRQUFBc0QsS0FBQTIzQyxHQUFBbDRDLElBQUFvNEMsSUFJQSxHQUFBRyxNQXdDQXJCLEdB
Q0FzQixjQUFBLFNBQUE5N0MsRUFBQSs3QyxHQUNBLEdBQUFoQyxHQUFBQyxFQUFBaDZDLEVBQ0Er
NUMsR0FBQSxPQUFBeHpDLEVBQUEsT0FDQXd6QyxFQUFBRSxTQUFBOEIsQ0FFQSxRQUFBejdDLEdB
QUEsRUFBbUJBLEVBQUF5N0MsRUFBQXg1QyxPQUF5QmpDLElBQUEsQ0FDNUMsR0FBQTA3QyxHQUFB
RCxFQUFBejdDLEdBQ0EyN0MsRUFBQWpDLEVBQUFnQyxFQUNBQyxHQUFBLE9BQUExMUMsRUFBQSxP
QUNBLE1BQUEwMUMsRUFBQWhDLFVBQUEsZ0JBQUFnQyxHQUFBdmtDLFNBQUEsTUFBQXVrQyxFQUFB
dmtDLFFBQUFuUixFQUFBLGNBQ0EwMUMsRUFBQXhwQixVQUFBLE9BQUFsc0IsRUFBQSxNQUNBLE1B
QUEwMUMsRUFBQUMsV0FDQUQsRUFBQUMsU0FBQWw4QyxHQUtBaThDLEVBQUFDLFdBQUFsOEMsRUFB
QXVHLEVBQUEsTUFBQXkxQyxFQUFBQyxFQUFBQyxTQUFBbDhDLEdBQUEsU0FHQW04Qyx1QkFBQSxT
QUFBbjhDLEVBQUEwWCxFQUFBd2tDLEdBQ0EsR0FBQW5DLElBQ0FyaUMsVUFDQXdrQyxXQUNBOXJD
LEtBQUEsS0FDQTZwQyxZQUNBeG5CLFdBQUEsRUFDQTJwQixZQUFBLEVBRUF4QixHQUFBNTZDLEVB
QUErNUMsSUFFQXNDLHdCQUFBLFNBQUFyOEMsRUFBQTBYLEdBQ0EsR0FBQXFpQyxHQUFBQyxFQUFB
aDZDLEVBQ0ErNUMsTUFBQXRuQixZQUtBc25CLEVBQUFyaUMsWUFFQTRrQyxpQkFBQSxTQUFBdDhD
LEdBQ0EsR0FBQSs1QyxHQUFBQyxFQUFBaDZDLEVBQ0ErNUMsR0FBQSxPQUFBeHpDLEVBQUEsT0FD
QXd6QyxFQUFBdG5CLFdBQUEsQ0FDQSxJQUFBOHBCLEdBQUEsSUFBQXhDLEVBQUFtQyxRQUNBSyxJ
QUNBekIsRUFBQTk2QyxJQUdBdzhDLGtCQUFBLFNBQUF4OEMsR0FDQSxHQUFBKzVDLEdBQUFDLEVB
QUFoNkMsRUFDQSs1QyxNQUFBdG5CLFdBS0FzbkIsRUFBQXFDLGVBRUFLLG1CQUFBLFNBQUF6OEMs
R0FDQSxHQUFBKzVDLEdBQUFDLEVBQUFoNkMsRUFDQSxJQUFBKzVDLEVBQUEsQ0FNQUEsRUFBQXRu
QixXQUFBLENBQ0EsSUFBQThwQixHQUFBLElBQUF4QyxFQUFBbUMsUUFDQUssSUFDQXhCLEVBQUEv
NkMsR0FHQTY3QyxFQUFBbjFDLEtBQUExRyxJQUVBMDhDLHlCQUFBLFdBQ0EsSUFBQWxDLEVBQUFt
QyxnQkFBQSxDQUtBLE9BQUFyOEMsR0FBQSxFQUFtQkEsRUFBQXU3QyxFQUFBdDVDLE9BQXlCakMs
SUFBQSxDQUM1QyxHQUFBTixHQUFBNjdDLEVBQUF2N0MsRUFDQXc1QyxHQUFBOTVDLEdBRUE2N0Ms
RUFBQXQ1QyxPQUFBLElBRUFrd0IsVUFBQSxTQUFBenlCLEdBQ0EsR0FBQSs1QyxHQUFBQyxFQUFB
aDZDLEVBQ0EsU0FBQSs1QyxLQUFBdG5CLFdBRUFtcUIsd0JBQUEsU0FBQUMsR0FDQSxHQUFBL1Qs
R0FBQSxFQUNBLElBQUErVCxFQUFBLENBQ0EsR0FBQTk2QyxHQUFBa3JDLEVBQUE0UCxHQUNBcmxD
LEVBQUFxbEMsRUFBQWpsQyxNQUNBa3hCLElBQUFxUixFQUFBcDRDLEVBQUE4NkMsRUFBQXJrQyxR
QUFBaEIsS0FBQTFNLFdBR0EsR0FBQWd5QyxHQUFBbHRDLEVBQUFDLFFBQ0E3UCxFQUFBODhDLEtB
QUFDLFFBR0EsT0FEQWpVLElBQUEwUixFQUFBd0MscUJBQUFoOUMsSUFHQWc5QyxxQkFBQSxTQUFB
aDlDLEdBRUEsSUFEQSxHQUFBOG9DLEdBQUEsR0FDQTlvQyxHQUNBOG9DLEdBQUF5UixFQUFBdjZD
LEdBQ0FBLEVBQUF3NkMsRUFBQXlDLFlBQUFqOUMsRUFFQSxPQUFBOG9DLElBRUFvVSxZQUFBLFNB
QUFsOUMsR0FDQSxHQUFBKzVDLEdBQUFDLEVBQUFoNkMsRUFDQSxPQUFBKzVDLEtBQUFFLGFBRUFo
TixlQUFBLFNBQUFqdEMsR0FDQSxHQUFBMFgsR0FBQThpQyxFQUFBQyxXQUFBejZDLEVBQ0EsT0FB
QTBYLEdBR0F1MUIsRUFBQXYxQixHQUZBLE1BSUEraUMsV0FBQSxTQUFBejZDLEdBQ0EsR0FBQSs1
QyxHQUFBQyxFQUFBaDZDLEVBQ0EsT0FBQSs1QyxLQUFBcmlDLFFBQUEsTUFFQWlqQyxXQUFBLFNB
QUEzNkMsR0FDQSxHQUFBMFgsR0FBQThpQyxFQUFBQyxXQUFBejZDLEVBQ0EsT0FBQTBYLE1BQUFF
LE9BR0FGLEVBQUFFLE9BQUFtbEMsU0FGQSxNQUlBRSxZQUFBLFNBQUFqOUMsR0FDQSxHQUFBKzVD
LEdBQUFDLEVBQUFoNkMsRUFDQSxPQUFBKzVDLEtBQUFtQyxTQUFBLE1BRUFpQixVQUFBLFNBQUFu
OUMsR0FDQSxHQUFBKzVDLEdBQUFDLEVBQUFoNkMsR0FDQTBYLEVBQUFxaUMsSUFBQXJpQyxRQUFB
LEtBQ0F2VCxFQUFBLE1BQUF1VCxJQUFBYyxRQUFBLElBQ0EsT0FBQXJVLElBRUFpNUMsUUFBQSxT
QUFBcDlDLEdBQ0EsR0FBQTBYLEdBQUE4aUMsRUFBQUMsV0FBQXo2QyxFQUNBLHVCQUFBMFgsR0FD
QUEsRUFDSyxnQkFBQUEsR0FDTCxHQUFBQSxFQUVBLE1BR0EybEMsZUFBQSxTQUFBcjlDLEdBQ0Es
R0FBQSs1QyxHQUFBQyxFQUFBaDZDLEVBQ0EsT0FBQSs1QyxLQUFBcUMsWUFBQSxHQUlBcEIsYUFD
QXNDLGlCQUFBekMsRUFFQTBDLDRCQUFBLFNBQUFDLEVBQUFDLEdBQ0EscUJBQUExeUMsU0FBQTJ5
QyxXQUFBLENBSUEsR0FBQUMsTUFDQWIsRUFBQWx0QyxFQUFBQyxRQUNBN1AsRUFBQTg4QyxLQUFB
QyxRQUVBLEtBU0EsSUFSQVMsR0FDQUcsRUFBQWozQyxNQUNBM0UsS0FBQS9CLEVBQUF3NkMsRUFB
QXZOLGVBQUFqdEMsR0FBQSxLQUNBcTZDLFNBQUFvRCxJQUFBcEQsU0FBQSxLQUNBQyxXQUFBbUQs
SUFBQW5ELFdBQUEsT0FJQXQ2QyxHQUFBLENBQ0EsR0FBQTBYLEdBQUE4aUMsRUFBQUMsV0FBQXo2
QyxHQUNBazhDLEVBQUExQixFQUFBeUMsWUFBQWo5QyxHQUNBMDZDLEVBQUFGLEVBQUFHLFdBQUEz
NkMsR0FDQW82QyxFQUFBTSxFQUFBRixFQUFBdk4sZUFBQXlOLEdBQUEsS0FDQXYyQyxFQUFBdVQs
S0FBQWMsT0FDQW1sQyxHQUFBajNDLE1BQ0EzRSxLQUFBcTRDLEVBQ0FDLFNBQUFsMkMsSUFBQWsy
QyxTQUFBLEtBQ0FDLFdBQUFuMkMsSUFBQW0yQyxXQUFBLE9BRUF0NkMsRUFBQWs4QyxHQUVLLE1B
QUFwNEMsSUFLTGlILFFBQUEyeUMsV0FBQUMsS0FFQUMsMkJBQUEsV0FDQSxrQkFBQTd5QyxTQUFB
OHlDLGVBR0E5eUMsUUFBQTh5QyxpQkFJQTk5QyxHQUFBRCxRQUFBMDZDLEd6Rmc1U00sU0FBU3o2
QyxFQUFRRCxHMEY5dlR2QixZQUtBLElBQUFxWCxHQUFBLGtCQUFBaWYsZ0JBQUEsS0FBQUEsT0FB
QSwyQkFFQXIyQixHQUFBRCxRQUFBcVgsRzFGK3dUTSxTQUFTcFgsRUFBUUQsRUFBU0gsRzJGdnhU
aEMsWUFJQSxTQUFBbStDLEdBQUF4ckIsRUFBQUMsSUFGQSxHQVlBaW5CLElBWkE3NUMsRUFBQSxJ
QW9CQTh5QixVQUFBLFNBQUFILEdBQ0EsVUFXQUksZ0JBQUEsU0FBQUosRUFBQTVvQixLQWVBbXBC
LG1CQUFBLFNBQUFQLEdBQ0F3ckIsRUFBQXhyQixFQUFBLGdCQWNBUyxvQkFBQSxTQUFBVCxFQUFB
VSxHQUNBOHFCLEVBQUF4ckIsRUFBQSxpQkFhQWEsZ0JBQUEsU0FBQWIsRUFBQWMsR0FDQTBxQixF
QUFBeHJCLEVBQUEsY0FJQXZ5QixHQUFBRCxRQUFBMDVDLEczRnV5VE0sU0FBU3o1QyxFQUFRRCxF
QUFTSCxHNEZ6M1RoQyxZQUVBLElBQUFvK0MsSUFBQSxDQVdBaCtDLEdBQUFELFFBQUFpK0MsRzVG
MDRUTSxTQUFTaCtDLEVBQVFELEc2Rmw2VHZCLFlBZUEsU0FBQW9vQixLQUNBLE9BQUFzckIsR0FB
QWx4QyxVQUFBQyxPQUFBeTdDLEVBQUFqbUMsTUFBQXk3QixHQUFBQyxFQUFBLEVBQWtFQSxFQUFB
RCxFQUFhQyxJQUMvRXVLLEVBQUF2SyxHQUFBbnhDLFVBQUFteEMsRUFHQSxZQUFBdUssRUFBQXo3
QyxPQUNBLFNBQUErRixHQUNBLE1BQUFBLElBSUEsSUFBQTAxQyxFQUFBejdDLE9BQ0F5N0MsRUFB
QSxHQUdBQSxFQUFBQyxPQUFBLFNBQUFuOUMsRUFBQUMsR0FDQSxrQkFDQSxNQUFBRCxHQUFBQyxF
QUFBQyxNQUFBVyxPQUFBVyxlQTlCQXhDLEVBQUFrb0IsWUFBQSxFQUNBbG9CLEVBQUEsUUFBQW9v
QixHN0Z3OFRNLFNBQVNub0IsRUFBUUQsRUFBU0gsRzhGMzhUaEMsWUFjQSxTQUFBbW9CLEdBQUFD
LEdBQXNDLE1BQUFBLE1BQUFDLFdBQUFELEdBQXVDRSxRQUFBRixHQW9DM0UsUUFBQU8sR0FBQTQx
QixFQUFBQyxFQUFBQyxHQTBCRixRQUFBQyxLQUNBQyxJQUFBQyxJQUNBRCxFQUFBQyxFQUFBMzlD
LFNBU0EsUUFBQTZyQyxLQUNBLE1BQUErUixHQTBCQSxRQUFBL0wsR0FBQXg0QixHQUNBLHFCQUFB
QSxHQUNBLFNBQUFyWSxPQUFBLHNDQUdBLElBQUE0dUMsSUFBQSxDQUtBLE9BSEE2TixLQUNBQyxF
QUFBNTNDLEtBQUF1VCxHQUVBLFdBQ0EsR0FBQXUyQixFQUFBLENBSUFBLEdBQUEsRUFFQTZOLEdB
Q0EsSUFBQXYzQixHQUFBdzNCLEVBQUExeEIsUUFBQTNTLEVBQ0Fxa0MsR0FBQWx5QyxPQUFBMGEs
RUFBQSxLQTZCQSxRQUFBa3BCLEdBQUF5TyxHQUNBLE9BQUE5TCxFQUFBLFNBQUE4TCxHQUNBLFNB
QUE3OEMsT0FBQSwwRUFHQSx1QkFBQTY4QyxHQUFBN3pDLEtBQ0EsU0FBQWhKLE9BQUEscUZBR0Es
SUFBQTg4QyxFQUNBLFNBQUE5OEMsT0FBQSxxQ0FHQSxLQUNBODhDLEdBQUEsRUFDQUYsRUFBQUcs
RUFBQUgsRUFBQUMsR0FDSyxRQUNMQyxHQUFBLEVBSUEsT0FEQTlmLEdBQUEyZixFQUFBRCxFQUNB
aCtDLEVBQUEsRUFBbUJBLEVBQUFzK0IsRUFBQXI4QixPQUFzQmpDLElBQUEsQ0FDekMsR0FBQTJa
LEdBQUEya0IsRUFBQXQrQixFQUNBMlosS0FHQSxNQUFBd2tDLEdBYUEsUUFBQUcsR0FBQUMsR0FD
QSxxQkFBQUEsR0FDQSxTQUFBajlDLE9BQUEsNkNBR0ErOEMsR0FBQUUsRUFDQTdPLEdBQWNwbEMs
S0FBQWswQyxFQUFBQyxPQVNkLFFBQUFDLEtBQ0EsR0FBQWpTLEdBRUFrUyxFQUFBeE0sQ0FDQSxP
QUFBMUYsSUFTQTBGLFVBQUEsU0FBQXlNLEdBS0EsUUFBQUMsS0FDQUQsRUFBQW5ZLE1BQ0FtWSxF
QUFBblksS0FBQTBGLEtBTkEsbUJBQUF5UyxHQUNBLFNBQUFyOEMsV0FBQSx5Q0FTQXM4QyxJQUNB
LElBQUFDLEdBQUFILEVBQUFFLEVBQ0EsUUFBZ0JDLGlCQUVYclMsRUFBQXNTLEVBQUEsb0JBQ0ws
TUFBQXArQyxPQUNLOHJDLEVBbk1MLEdBQUFzQyxFQU9BLElBTEEsa0JBQUE4TyxJQUFBLG1CQUFB
QyxLQUNBQSxFQUFBRCxFQUNBQSxFQUFBeDhDLFFBR0EsbUJBQUF5OEMsR0FBQSxDQUNBLHFCQUFB
QSxHQUNBLFNBQUF4OEMsT0FBQSwwQ0FHQSxPQUFBdzhDLEdBQUE5MUIsR0FBQTQxQixFQUFBQyxH
QUdBLHFCQUFBRCxHQUNBLFNBQUF0OEMsT0FBQSx5Q0FHQSxJQUFBKzhDLEdBQUFULEVBQ0FNLEVB
QUFMLEVBQ0FJLEtBQ0FELEVBQUFDLEVBQ0FHLEdBQUEsQ0FvTEEsT0FGQTFPLElBQVlwbEMsS0FB
QWswQyxFQUFBQyxPQUVaMVAsR0FDQVcsV0FDQXlDLFlBQ0FoRyxXQUNBbVMsa0JBQ0d2UCxFQUFB
Z1EsRUFBQSxTQUFBTCxFQUFBM1AsRUFqUUh2dkMsRUFBQWtvQixZQUFBLEVBQ0Fsb0IsRUFBQWcv
QyxZQUFBbjlDLE9BQ0E3QixFQUFBLFFBQUF3b0IsQ0FFQSxJQUFBdXFCLEdBQUFsekMsRUFBQSxJ
QUVBZ3pDLEVBQUE3cUIsRUFBQStxQixHQUVBeU0sRUFBQTMvQyxFQUFBLEtBRUEwL0MsRUFBQXYz
QixFQUFBdzNCLEdBVUFSLEVBQUFoL0MsRUFBQWcvQyxhQUNBQyxLQUFBLGlCOUY4clVNLFNBQVNo
L0MsRUFBUUQsRytGcnRVdkIsWUFVQSxTQUFBb0MsR0FBQU0sR0FFQSxtQkFBQXVJLFVBQUEsa0JB
QUFBLFNBQUFySixPQUNBcUosUUFBQXJKLE1BQUFjLEVBR0EsS0FJQSxTQUFBWixPQUFBWSxHQUVH
LE1BQUFqQixLQXBCSHpCLEVBQUFrb0IsWUFBQSxFQUNBbG9CLEVBQUEsUUFBQW9DLEcvRmd2VU0s
U0FBU25DLEVBQVFELEVBQVNILEdnR3p1VWhDLFlBZUEsU0FBQTQvQyxHQUFBMStDLEdBQ0EsTUFB
QUEsR0FjQSxRQUFBb1gsR0FBQW9oQyxFQUFBMWlDLEVBQUE2aUMsR0E4VUEsUUFBQWdHLEdBQUFD
LEVBQUExOUMsR0FDQSxHQUFBMjlDLEdBQUFDLEVBQUFsL0MsZUFBQXNCLEdBQ0E0OUMsRUFBQTU5
QyxHQUNBLElBR0E2OUMsR0FBQW4vQyxlQUFBc0IsSUFDQSt1QyxFQUNBLGtCQUFBNE8sRUFDQSwy
SkFHQTM5QyxHQUtBMDlDLEdBQ0EzTyxFQUNBLGdCQUFBNE8sR0FBQSx1QkFBQUEsRUFDQSxnSUFH
QTM5QyxHQVNBLFFBQUE4OUMsR0FBQS9qQixFQUFBZ2tCLEdBQ0EsR0FBQUEsRUFBQSxDQXFCQWhQ
LEVBQ0Esa0JBQUFnUCxHQUNBLHNIQUlBaFAsR0FDQW42QixFQUFBbXBDLEdBQ0EsbUdBSUEsSUFB
QXoxQixHQUFBeVIsRUFBQXQ3QixVQUNBdS9DLEVBQUExMUIsRUFBQTIxQixvQkFLQUYsR0FBQXIv
QyxlQUFBdy9DLElBQ0FDLEVBQUFDLE9BQUFya0IsRUFBQWdrQixFQUFBSyxPQUdBLFFBQUFwK0Ms
S0FBQSs5QyxHQUNBLEdBQUFBLEVBQUFyL0MsZUFBQXNCLElBSUFBLElBQUFrK0MsRUFBQSxDQUtB
LEdBQUFHLEdBQUFOLEVBQUEvOUMsR0FDQTA5QyxFQUFBcDFCLEVBQUE1cEIsZUFBQXNCLEVBR0Es
SUFGQXk5QyxFQUFBQyxFQUFBMTlDLEdBRUFtK0MsRUFBQXovQyxlQUFBc0IsR0FDQW0rQyxFQUFB
bitDLEdBQUErNUIsRUFBQXNrQixPQUNPLENBS1AsR0FBQUMsR0FBQVYsRUFBQWwvQyxlQUFBc0Is
R0FDQXUrQyxFQUFBLGtCQUFBRixHQUNBRyxFQUNBRCxJQUNBRCxJQUNBWixHQUNBSyxFQUFBVSxZ
QUFBLENBRUEsSUFBQUQsRUFDQVIsRUFBQXI1QyxLQUFBM0UsRUFBQXErQyxHQUNBLzFCLEVBQUF0
b0IsR0FBQXErQyxNQUVBLElBQUFYLEVBQUEsQ0FDQSxHQUFBQyxHQUFBQyxFQUFBNTlDLEVBR0Er
dUMsR0FDQXVQLElBQ0EsdUJBQUFYLEdBQ0EsZ0JBQUFBLEdBQ0EsbUZBRUFBLEVBQ0EzOUMsR0FL
QSx1QkFBQTI5QyxFQUNBcjFCLEVBQUF0b0IsR0FBQTArQyxFQUFBcDJCLEVBQUF0b0IsR0FBQXEr
QyxHQUNhLGdCQUFBVixJQUNicjFCLEVBQUF0b0IsR0FBQTIrQyxFQUFBcjJCLEVBQUF0b0IsR0FB
QXErQyxRQUdBLzFCLEdBQUF0b0IsR0FBQXErQyxVQWNBLFFBQUFPLEdBQUE3a0IsRUFBQThrQixH
QUNBLEdBQUFBLEVBR0EsT0FBQTcrQyxLQUFBNitDLEdBQUEsQ0FDQSxHQUFBUixHQUFBUSxFQUFB
NytDLEVBQ0EsSUFBQTYrQyxFQUFBbmdELGVBQUFzQixHQUFBLENBSUEsR0FBQTgrQyxHQUFBOStD
LElBQUFtK0MsRUFDQXBQLElBQ0ErUCxFQUNBLDBNQUlBOStDLEVBR0EsSUFBQSsrQyxHQUFBLytD
LElBQUErNUIsRUFDQWdWLElBQ0FnUSxFQUNBLHVIQUdBLytDLEdBRUErNUIsRUFBQS81QixHQUFB
cStDLElBV0EsUUFBQVcsR0FBQUMsRUFBQUMsR0FDQW5RLEVBQ0FrUSxHQUFBQyxHQUFBLGdCQUFB
RCxJQUFBLGdCQUFBQyxHQUNBLDREQUdBLFFBQUF6OEMsS0FBQXk4QyxHQUNBQSxFQUFBeGdELGVB
QUErRCxLQUNBc3NDLEVBQ0FudkMsU0FBQXEvQyxFQUFBeDhDLEdBQ0EseVBBS0FBLEdBRUF3OEMs
RUFBQXg4QyxHQUFBeThDLEVBQUF6OEMsR0FHQSxPQUFBdzhDLEdBV0EsUUFBQVAsR0FBQU8sRUFB
QUMsR0FDQSxrQkFDQSxHQUFBbmdELEdBQUFrZ0QsRUFBQWhnRCxNQUFBQyxLQUFBcUIsV0FDQXZC
LEVBQUFrZ0QsRUFBQWpnRCxNQUFBQyxLQUFBcUIsVUFDQSxVQUFBeEIsRUFDQSxNQUFBQyxFQUNP
LFVBQUFBLEVBQ1AsTUFBQUQsRUFFQSxJQUFBVixLQUdBLE9BRkEyZ0QsR0FBQTNnRCxFQUFBVSxH
QUNBaWdELEVBQUEzZ0QsRUFBQVcsR0FDQVgsR0FZQSxRQUFBc2dELEdBQUFNLEVBQUFDLEdBQ0Es
a0JBQ0FELEVBQUFoZ0QsTUFBQUMsS0FBQXFCLFdBQ0EyK0MsRUFBQWpnRCxNQUFBQyxLQUFBcUIs
WUFXQSxRQUFBNCtDLEdBQUFqOEMsRUFBQTZILEdBQ0EsR0FBQXEwQyxHQUFBcjBDLEVBQUFvTCxL
QUFBalQsRUFpREEsT0FBQWs4QyxHQVFBLFFBQUFDLEdBQUFuOEMsR0FFQSxPQURBbzhDLEdBQUFw
OEMsRUFBQSs2QyxxQkFDQTEvQyxFQUFBLEVBQW1CQSxFQUFBK2dELEVBQUE5K0MsT0FBa0JqQyxH
QUFBLEdBQ3JDLEdBQUFnaEQsR0FBQUQsRUFBQS9nRCxHQUNBd00sRUFBQXUwQyxFQUFBL2dELEVB
QUEsRUFDQTJFLEdBQUFxOEMsR0FBQUosRUFBQWo4QyxFQUFBNkgsSUFtRUEsUUFBQStKLEdBQUFp
cEMsR0FJQSxHQUFBaGtCLEdBQUF5akIsRUFBQSxTQUFBOW5DLEVBQUE5TCxFQUFBMnRDLEdBYUFy
NEMsS0FBQSsrQyxxQkFBQXo5QyxRQUNBNitDLEVBQUFuZ0QsTUFHQUEsS0FBQXdXLFFBQ0F4VyxL
QUFBMEssVUFDQTFLLEtBQUFzNEMsS0FBQTE3QixFQUNBNWMsS0FBQXE0QyxXQUFBRSxFQUVBdjRD
LEtBQUE2dEMsTUFBQSxJQUtBLElBQUF5UyxHQUFBdGdELEtBQUF1Z0QsZ0JBQUF2Z0QsS0FBQXVn
RCxrQkFBQSxJQVlBMVEsR0FDQSxnQkFBQXlRLEtBQUF4cEMsTUFBQXdSLFFBQUFnNEIsR0FDQSxz
REFDQXpsQixFQUFBMUosYUFBQSwyQkFHQW54QixLQUFBNnRDLE1BQUF5UyxHQUVBemxCLEdBQUF0
N0IsVUFBQSxHQUFBaWhELEdBQ0EzbEIsRUFBQXQ3QixVQUFBdU4sWUFBQSt0QixFQUNBQSxFQUFB
dDdCLFVBQUF3L0Msd0JBRUEwQixFQUFBLzlDLFFBQUFrOEMsRUFBQTNuQyxLQUFBLEtBQUE0akIs
SUFFQStqQixFQUFBL2pCLEVBQUE2bEIsR0FDQTlCLEVBQUEvakIsRUFBQWdrQixHQUNBRCxFQUFB
L2pCLEVBQUE4bEIsR0FHQTlsQixFQUFBK2xCLGtCQUNBL2xCLEVBQUE5akIsYUFBQThqQixFQUFB
K2xCLG1CQWdCQS9RLEVBQ0FoVixFQUFBdDdCLFVBQUFra0MsT0FDQSwwRUFxQkEsUUFBQXlJLEtB
QUF3UyxHQUNBN2pCLEVBQUF0N0IsVUFBQTJzQyxLQUNBclIsRUFBQXQ3QixVQUFBMnNDLEdBQUEs
S0FJQSxPQUFBclIsR0FwekJBLEdBQUE0bEIsTUF3QkEvQixHQU9BUSxPQUFBLGNBU0FTLFFBQUEs
Y0FRQTV2QixVQUFBLGNBUUErYyxhQUFBLGNBUUFJLGtCQUFBLGNBY0EwVCxnQkFBQSxxQkFnQkFM
LGdCQUFBLHFCQU1BcFMsZ0JBQUEscUJBaUJBMUssT0FBQSxjQVdBb2QsbUJBQUEsY0FZQXZTLGtC
QUFBLGNBcUJBRywwQkFBQSxjQXNCQWhELHNCQUFBLGNBaUJBcVYsb0JBQUEsY0FjQTNSLG1CQUFB
LGNBYUFULHFCQUFBLGNBY0FxUyxnQkFBQSxpQkFZQTlCLEdBQ0E5dEIsWUFBQSxTQUFBMEosRUFB
QTFKLEdBQ0EwSixFQUFBMUosZUFFQSt0QixPQUFBLFNBQUFya0IsRUFBQXFrQixHQUNBLEdBQUFB
LEVBQ0EsT0FBQTcvQyxHQUFBLEVBQXVCQSxFQUFBNi9DLEVBQUE1OUMsT0FBbUJqQyxJQUMxQ3Uv
QyxFQUFBL2pCLEVBQUFxa0IsRUFBQTcvQyxLQUlBNnRDLGtCQUFBLFNBQUFyUyxFQUFBcVMsR0FJ
QXJTLEVBQUFxUyxrQkFBQXJpQyxLQUVBZ3dCLEVBQUFxUyxrQkFDQUEsSUFHQUosYUFBQSxTQUFB
alMsRUFBQWlTLEdBSUFqUyxFQUFBaVMsYUFBQWppQyxLQUVBZ3dCLEVBQUFpUyxhQUNBQSxJQU9B
OFQsZ0JBQUEsU0FBQS9sQixFQUFBK2xCLEdBQ0EvbEIsRUFBQStsQixnQkFDQS9sQixFQUFBK2xC
LGdCQUFBcEIsRUFDQTNrQixFQUFBK2xCLGdCQUNBQSxHQUdBL2xCLEVBQUErbEIsbUJBR0E3d0Is
VUFBQSxTQUFBOEssRUFBQTlLLEdBSUE4SyxFQUFBOUssVUFBQWxsQixLQUF3Q2d3QixFQUFBOUss
Y0FFeEM0dkIsUUFBQSxTQUFBOWtCLEVBQUE4a0IsR0FDQUQsRUFBQTdrQixFQUFBOGtCLElBRUFK
LFNBQUEsY0FzVkFtQixHQUNBcFMsa0JBQUEsV0FDQXR1QyxLQUFBZ2hELGFBQUEsSUFJQUwsR0FD
QWpTLHFCQUFBLFdBQ0ExdUMsS0FBQWdoRCxhQUFBLElBUUFyQyxHQUtBc0MsYUFBQSxTQUFBQyxF
QUFBejRDLEdBQ0F6SSxLQUFBcTRDLFFBQUF2bUIsb0JBQUE5eEIsS0FBQWtoRCxFQUFBejRDLElB
U0Erb0IsVUFBQSxXQWFBLFFBQUF4eEIsS0FBQWdoRCxjQUlBUixFQUFBLFlBOEhBLE9BN0hBMzFD
LEdBQ0EyMUMsRUFBQWpoRCxVQUNBNjRDLEVBQUE3NEMsVUFDQW8vQyxHQTBIQS9vQyxFQXgxQkEs
R0FpQkF1ckMsR0FqQkF0MkMsRUFBQW5NLEVBQUEsR0FFQWtlLEVBQUFsZSxFQUFBLElBQ0FteEMs
RUFBQW54QyxFQUFBLEdBTUFzZ0QsRUFBQSxRQWdCQW1DLE1BazBCQXJpRCxFQUFBRCxRQUFBbVks
R2hHMHZVTSxTQUFTbFksRUFBUUQsR2lHam1XdkIsWUF3QkEsU0FBQXVpRCxHQUFBNzdCLEdBQ0Es
TUFBQUEsR0FBQTFrQixRQUFBd2dELEVBQUEsU0FBQUMsRUFBQUMsR0FDQSxNQUFBQSxHQUFBL3JC
LGdCQWJBLEdBQUE2ckIsR0FBQSxPQWlCQXZpRCxHQUFBRCxRQUFBdWlELEdqR3VtV00sU0FBU3Rp
RCxFQUFRRCxFQUFTSCxHa0cxbldoQyxZQXVCQSxTQUFBOGlELEdBQUFqOEIsR0FDQSxNQUFBNjdC
LEdBQUE3N0IsRUFBQTFrQixRQUFBNGdELEVBQUEsUUF0QkEsR0FBQUwsR0FBQTFpRCxFQUFBLElB
RUEraUQsRUFBQSxPQXVCQTNpRCxHQUFBRCxRQUFBMmlELEdsRzJvV00sU0FBUzFpRCxFQUFRRCxF
QUFTSCxHbUdqcldoQyxZQW9CQSxTQUFBc2dDLEdBQUEwaUIsRUFBQUMsR0FDQSxTQUFBRCxJQUFB
QyxLQUVHRCxJQUFBQyxJQUVBQyxFQUFBRixLQUVBRSxFQUFBRCxHQUNIM2lCLEVBQUEwaUIsRUFB
QUMsRUFBQWo4QyxZQUNHLFlBQUFnOEMsR0FDSEEsRUFBQUcsU0FBQUYsS0FDR0QsRUFBQUksNEJB
Q0gsR0FBQUosRUFBQUksd0JBQUFILE1BbkJBLEdBQUFDLEdBQUFsakQsRUFBQSxJQXlCQUksR0FB
QUQsUUFBQW1nQyxHbkd1cldNLFNBQVNsZ0MsRUFBUUQsRUFBU0gsR29HN3RXaEMsWUF3QkEsU0FB
QTRXLEdBQUF3UixHQUNBLEdBQUF4bEIsR0FBQXdsQixFQUFBeGxCLE1BZUEsSUFYQXdWLE1BQUF3
UixRQUFBeEIsSUFBQSxnQkFBQUEsSUFBQSxrQkFBQUEsR0FBQTVtQixHQUFBLFVBRUEsZ0JBQUFv
QixHQUFBcEIsR0FBQSxVQUVBLElBQUFvQixLQUFBLElBQUF3bEIsR0FBQSxPQUFBNW1CLEdBQUEs
R0FFQSxrQkFBQTRtQixHQUFBaTdCLE9BQW1MN2hELEdBQUEsVUFLbkw0bUIsRUFBQXRuQixlQUNB
LElBQ0EsTUFBQXNYLE9BQUF2WCxVQUFBSSxNQUFBVixLQUFBNm5CLEdBQ0ssTUFBQXhtQixJQVFM
LE9BREEwa0IsR0FBQWxPLE1BQUF4VixHQUNBNG9DLEVBQUEsRUFBa0JBLEVBQUE1b0MsRUFBYTRv
QyxJQUMvQmxsQixFQUFBa2xCLEdBQUFwakIsRUFBQW9qQixFQUVBLE9BQUFsbEIsR0FrQkEsUUFB
QWc5QixHQUFBbDdCLEdBQ0EsUUFFQUEsSUFFQSxnQkFBQUEsSUFBQSxrQkFBQUEsS0FFQSxVQUFB
QSxNQUVBLGVBQUFBLEtBR0EsZ0JBQUFBLEdBQUFuakIsV0FFQW1ULE1BQUF3UixRQUFBeEIsSUFF
QSxVQUFBQSxJQUVBLFFBQUFBLElBeUJBLFFBQUFtN0IsR0FBQW43QixHQUNBLE1BQUFrN0IsR0FB
QWw3QixHQUVHaFEsTUFBQXdSLFFBQUF4QixHQUNIQSxFQUFBbm5CLFFBRUEyVixFQUFBd1IsSUFK
QUEsR0F4R0EsR0FBQTVtQixHQUFBeEIsRUFBQSxFQWdIQUksR0FBQUQsUUFBQW9qRCxHcEdtdVdN
LFNBQVNuakQsRUFBUUQsRUFBU0gsR3FHaDJXaEMsWUFxQ0EsU0FBQXdqRCxHQUFBenVDLEdBQ0Es
R0FBQTB1QyxHQUFBMXVDLEVBQUFnUyxNQUFBMjhCLEVBQ0EsT0FBQUQsTUFBQSxHQUFBenhDLGNB
YUEsUUFBQTJ4QyxHQUFBNXVDLEVBQUE2dUMsR0FDQSxHQUFBNytDLEdBQUE4K0MsQ0FDQUEsR0FB
QSxPQUFBcmlELEdBQUEsRUFDQSxJQUFBNlAsR0FBQW15QyxFQUFBenVDLEdBRUErdUMsRUFBQXp5
QyxHQUFBMHlDLEVBQUExeUMsRUFDQSxJQUFBeXlDLEVBQUEsQ0FDQS8rQyxFQUFBNmlCLFVBQUFr
OEIsRUFBQSxHQUFBL3VDLEVBQUErdUMsRUFBQSxFQUdBLEtBREEsR0FBQUUsR0FBQUYsRUFBQSxH
QUNBRSxLQUNBai9DLElBQUFnL0IsY0FHQWgvQixHQUFBNmlCLFVBQUE3UyxDQUdBLElBQUFrdkMs
R0FBQWwvQyxFQUFBbS9DLHFCQUFBLFNBQ0FELEdBQUFyaEQsU0FDQWdoRCxFQUFBLE9BQUFwaUQs
R0FBQSxHQUNBK2hELEVBQUFVLEdBQUFqZ0QsUUFBQTQvQyxHQUlBLEtBREEsR0FBQU8sR0FBQS9y
QyxNQUFBM1QsS0FBQU0sRUFBQXEvQyxZQUNBci9DLEVBQUFnL0IsV0FDQWgvQixFQUFBa2pCLFlB
QUFsakIsRUFBQWcvQixVQUVBLE9BQUFvZ0IsR0FoRUEsR0FBQWw4QyxHQUFBakksRUFBQSxHQUVB
dWpELEVBQUF2akQsRUFBQSxLQUNBK2pELEVBQUEvakQsRUFBQSxLQUNBd0IsRUFBQXhCLEVBQUEs
R0FLQTZqRCxFQUFBNTdDLEVBQUFKLFVBQUFFLFNBQUFDLGNBQUEsWUFLQTA3QyxFQUFBLFlBcURB
dGpELEdBQUFELFFBQUF3akQsR3JHczJXTSxTQUFTdmpELEVBQVFELEVBQVNILEdzR3g3V2hDLFlB
NkVBLFNBQUErakQsR0FBQTF5QyxHQWFBLE1BWkF3eUMsR0FBQSxPQUFBcmlELEdBQUEsR0FDQTZp
RCxFQUFBdmpELGVBQUF1USxLQUNBQSxFQUFBLEtBRUFpekMsRUFBQXhqRCxlQUFBdVEsS0FDQSxN
QUFBQSxFQUNBd3lDLEVBQUFqOEIsVUFBQSxXQUVBaThCLEVBQUFqOEIsVUFBQSxJQUFBdlcsRUFB
QSxNQUFBQSxFQUFBLElBRUFpekMsRUFBQWp6QyxJQUFBd3lDLEVBQUF2OUMsWUFFQWcrQyxFQUFB
anpDLEdBQUFnekMsRUFBQWh6QyxHQUFBLEtBNUVBLEdBQUFwSixHQUFBakksRUFBQSxHQUVBd0Is
RUFBQXhCLEVBQUEsR0FLQTZqRCxFQUFBNTdDLEVBQUFKLFVBQUFFLFNBQUFDLGNBQUEsWUFTQXM4
QyxLQUVBQyxHQUFBLDBDQUNBQyxHQUFBLHdCQUNBQyxHQUFBLGdEQUVBQyxHQUFBLHVEQUVBTCxH
QUNBTSxLQUFBLHFCQUVBQyxNQUFBLG9CQUNBQyxLQUFBLDREQUNBQyxRQUFBLDhCQUNBQyxPQUFB
LDBCQUNBQyxJQUFBLHVDQUVBQyxTQUFBVixFQUNBVyxPQUFBWCxFQUVBWSxRQUFBWCxFQUNBWSxT
QUFBWixFQUNBYSxNQUFBYixFQUNBYyxNQUFBZCxFQUNBZSxNQUFBZixFQUVBZ0IsR0FBQWYsRUFD
QWdCLEdBQUFoQixHQU1BaUIsR0FBQSxvS0FDQUEsR0FBQTFoRCxRQUFBLFNBQUFxTixHQUNBZ3pD
LEVBQUFoekMsR0FBQXF6QyxFQUNBSixFQUFBanpDLElBQUEsSUEyQkFqUixFQUFBRCxRQUFBNGpE
LEd0Rzg3V00sU0FBUzNqRCxFQUFRRCxHdUdoaFh2QixZQWFBLFNBQUF3bEQsR0FBQUMsR0FDQSxN
QUFBQSxHQUFBQyxRQUFBRCxlQUFBQyxRQUVBOTdCLEVBQUE2N0IsRUFBQUUsYUFBQUYsRUFBQTc5
QyxTQUFBdzRCLGdCQUFBd2xCLFdBQ0EvN0IsRUFBQTQ3QixFQUFBSSxhQUFBSixFQUFBNzlDLFNB
QUF3NEIsZ0JBQUEwbEIsWUFJQWw4QixFQUFBNjdCLEVBQUFHLFdBQ0EvN0IsRUFBQTQ3QixFQUFB
SyxXQUlBN2xELEVBQUFELFFBQUF3bEQsR3ZHaWlYTSxTQUFTdmxELEVBQVFELEd3R3RrWHZCLFlB
MkJBLFNBQUErbEQsR0FBQXIvQixHQUNBLE1BQUFBLEdBQUExa0IsUUFBQWdrRCxFQUFBLE9BQUFu
MEMsY0FmQSxHQUFBbTBDLEdBQUEsVUFrQkEvbEQsR0FBQUQsUUFBQStsRCxHeEc0a1hNLFNBQVM5
bEQsRUFBUUQsRUFBU0gsR3lHaG1YaEMsWUFzQkEsU0FBQW9tRCxHQUFBdi9CLEdBQ0EsTUFBQXEv
QixHQUFBci9CLEdBQUExa0IsUUFBQTRnRCxFQUFBLFFBckJBLEdBQUFtRCxHQUFBbG1ELEVBQUEs
S0FFQStpRCxFQUFBLE1Bc0JBM2lELEdBQUFELFFBQUFpbUQsR3pHaW5YTSxTQUFTaG1ELEVBQVFE
LEcwR3RwWHZCLFlBaUJBLFNBQUFrbUQsR0FBQXZ0QyxHQUNBLEdBQUErRSxHQUFBL0UsSUFBQWdG
LGVBQUFoRixFQUFBL1EsU0FDQWdXLEVBQUFGLEVBQUFFLGFBQUFqVyxNQUNBLFVBQUFnUixLQUFB
LGtCQUFBaUYsR0FBQXVvQyxLQUFBeHRDLFlBQUFpRixHQUFBdW9DLEtBQUEsZ0JBQUF4dEMsSUFB
QSxnQkFBQUEsR0FBQTdULFVBQUEsZ0JBQUE2VCxHQUFBekgsV0FHQWpSLEVBQUFELFFBQUFrbUQs
RzFHNHBYTSxTQUFTam1ELEVBQVFELEVBQVNILEcyR25yWGhDLFlBbUJBLFNBQUFrakQsR0FBQXBx
QyxHQUNBLE1BQUF1dEMsR0FBQXZ0QyxJQUFBLEdBQUFBLEVBQUE3VCxTQVBBLEdBQUFvaEQsR0FB
QXJtRCxFQUFBLElBVUFJLEdBQUFELFFBQUEraUQsRzNHeXJYTSxTQUFTOWlELEVBQVFELEc0R3Bz
WHZCLFlBTUEsU0FBQW9tRCxHQUFBeDhDLEdBQ0EsR0FBQXk4QyxLQUNBLGlCQUFBMy9CLEdBSUEs
TUFIQTIvQixHQUFBMWxELGVBQUErbEIsS0FDQTIvQixFQUFBMy9CLEdBQUE5YyxFQUFBeEosS0FB
QWUsS0FBQXVsQixJQUVBMi9CLEVBQUEzL0IsSUFJQXptQixFQUFBRCxRQUFBb21ELEc1R3N0WE0s
U0FBU25tRCxFQUFRRCxHNkc5dVh2QixZQUVBLElBQUFzbUQsSUFDQWpZLG1CQUFBLEVBQ0FKLGNB
QUEsRUFDQS8xQixjQUFBLEVBQ0FvYSxhQUFBLEVBQ0F5dkIsaUJBQUEsRUFDQTFCLFFBQUEsRUFD
QW52QixXQUFBLEVBQ0FwbUIsTUFBQSxHQUdBeTdDLEdBQ0F0a0QsTUFBQSxFQUNBUSxRQUFBLEVB
Q0EvQixXQUFBLEVBQ0E4bEQsUUFBQSxFQUNBdEQsUUFBQSxFQUNBMWdELFdBQUEsRUFDQWlrRCxP
QUFBLEdBR0F4aUQsRUFBQXhELE9BQUF3RCxzQkFFQUMsR0FEQXpELE9BQUFDLFVBQUFDLGVBQ0FG
LE9BQUFDLFVBQUF5RCxzQkFDQXl2QyxFQUFBbnpDLE9BQUFtekMsZUFDQThTLEVBQUE5UyxLQUFB
bnpDLFFBQ0EyQyxFQUFBM0MsT0FBQTJDLG1CQUVBbkQsR0FBQUQsUUFBQSxRQUFBMm1ELEdBQUFD
LEVBQUFDLEVBQUFDLEdBQ0EsbUJBQUFELEdBQUEsQ0FFQSxHQUFBSCxFQUFBLENBQ0EsR0FBQUss
R0FBQW5ULEVBQUFpVCxFQUNBRSxRQUFBTCxHQUNBQyxFQUFBQyxFQUFBRyxFQUFBRCxHQUlBLEdB
QUEvaUQsR0FBQVgsRUFBQXlqRCxFQUVBNWlELEtBQ0FGLElBQUEzQyxPQUFBNkMsRUFBQTRpRCxJ
QUdBLFFBQUFybUQsR0FBQSxFQUF1QkEsRUFBQXVELEVBQUF0QixTQUFpQmpDLEVBQUEsQ0FDeEMs
R0FBQWtFLEdBQUFYLEVBQUF2RCxFQUNBLE1BQUE4bEQsRUFBQTVoRCxJQUFBNmhELEVBQUE3aEQs
SUFBQW9pRCxLQUFBcGlELE1BRUFSLEVBQUE5RCxLQUFBeW1ELEVBQUFuaUQsSUFBQSxrQkFBQW1p
RCxHQUFBbmlELElBQ0EsSUFDQWtpRCxFQUFBbGlELEdBQUFtaUQsRUFBQW5pRCxHQUNxQixNQUFB
akQsS0FLckIsTUFBQW1sRCxHQUdBLE1BQUFBLEs3RzB2WE0sU0FBUzNtRCxFQUFRRCxFQUFTSCxH
OEdselhoQyxZQWFBLElBQUF3QixHQUFBLFNBQUFDLEVBQUFDLEVBQUFQLEVBQUFDLEVBQUFYLEVB
QUFrQixFQUFBQyxFQUFBQyxHQU9BLElBQUFKLEVBQUEsQ0FDQSxHQUFBTSxFQUNBLElBQUFDLFNB
QUFOLEVBQ0FLLEVBQUEsR0FBQUUsT0FDQSxxSUFHSyxDQUNMLEdBQUFqQixJQUFBRyxFQUFBQyxF
QUFBWCxFQUFBa0IsRUFBQUMsRUFBQUMsR0FDQUssRUFBQSxDQUNBSCxHQUFBLEdBQUFFLE9BQ0FQ
LEVBQUFTLFFBQUEsaUJBQTBDLE1BQUFuQixHQUFBa0IsUUFFMUNILEVBQUFLLEtBQUEsc0JBSUEs
S0FEQUwsR0FBQU0sWUFBQSxFQUNBTixHQUlBM0IsR0FBQUQsUUFBQXFCLEc5R2swWE0sU0FBU3BC
LEVBQVFELEVBQVNILEcrR2wyWGhDLFFBQUF3cUIsR0FBQXBZLEdBQ0EsYUFBQUEsRUFDQXBRLFNB
QUFvUSxFQUFBKzBDLEVBQUFDLEVBRUFDLE9BQUF6bUQsUUFBQXdSLEdBQ0FrMUMsRUFBQWwxQyxH
QUNBbTFDLEVBQUFuMUMsR0F4QkEsR0FBQXFrQixHQUFBejJCLEVBQUEsSUFDQXNuRCxFQUFBdG5E
LEVBQUEsS0FDQXVuRCxFQUFBdm5ELEVBQUEsS0FHQW9uRCxFQUFBLGdCQUNBRCxFQUFBLHFCQUdB
RSxFQUFBNXdCLElBQUErd0IsWUFBQXhsRCxNQWtCQTVCLEdBQUFELFFBQUFxcUIsRy9HMjNYTSxT
QUFTcHFCLEVBQVFELElnSHQ1WHZCLFNBQUFzbkQsR0FDQSxHQUFBQyxHQUFBLGdCQUFBRCxTQUFB
N21ELGlCQUFBNm1ELENBRUFybkQsR0FBQUQsUUFBQXVuRCxJaEgwNVg4Qm5uRCxLQUFLSixFQUFV
LFdBQWEsTUFBT21CLFdBSTNELFNBQVNsQixFQUFRRCxFQUFTSCxHaUhqNlhoQyxHQUFBMm5ELEdB
QUEzbkQsRUFBQSxLQUdBMnFCLEVBQUFnOUIsRUFBQS9tRCxPQUFBbXpDLGVBQUFuekMsT0FFQVIs
R0FBQUQsUUFBQXdxQixHakh3NlhNLFNBQVN2cUIsRUFBUUQsRUFBU0gsR2tIcDVYaEMsUUFBQXNu
RCxHQUFBbDFDLEdBQ0EsR0FBQXcxQyxHQUFBOW1ELEVBQUFQLEtBQUE2UixFQUFBaTFDLEdBQ0Fy
dUMsRUFBQTVHLEVBQUFpMUMsRUFFQSxLQUNBajFDLEVBQUFpMUMsR0FBQXJsRCxNQUNBLElBQUE2
bEQsSUFBQSxFQUNHLE1BQUFqbUQsSUFFSCxHQUFBa21ELEdBQUFDLEVBQUF4bkQsS0FBQTZSLEVB
UUEsT0FQQXkxQyxLQUNBRCxFQUNBeDFDLEVBQUFpMUMsR0FBQXJ1QyxRQUVBNUcsR0FBQWkxQyxJ
QUdBUyxFQTFDQSxHQUFBcnhCLEdBQUF6MkIsRUFBQSxJQUdBaXJCLEVBQUFycUIsT0FBQUMsVUFH
QUMsRUFBQW1xQixFQUFBbnFCLGVBT0FpbkQsRUFBQTk4QixFQUFBdGpCLFNBR0EwL0MsRUFBQTV3
QixJQUFBK3dCLFlBQUF4bEQsTUE2QkE1QixHQUFBRCxRQUFBbW5ELEdsSG83WE0sU0FBU2xuRCxF
QUFRRCxHbUhoOVh2QixRQUFBb25ELEdBQUFuMUMsR0FDQSxNQUFBMjFDLEdBQUF4bkQsS0FBQTZS
LEdBakJBLEdBQUE2WSxHQUFBcnFCLE9BQUFDLFVBT0FrbkQsRUFBQTk4QixFQUFBdGpCLFFBYUF2
SCxHQUFBRCxRQUFBb25ELEduSHcrWE0sU0FBU25uRCxFQUFRRCxHb0hyL1h2QixRQUFBd25ELEdB
QUFuMkIsRUFBQXcyQixHQUNBLGdCQUFBci9DLEdBQ0EsTUFBQTZvQixHQUFBdzJCLEVBQUFyL0Ms
S0FJQXZJLEVBQUFELFFBQUF3bkQsR3BIb2dZTSxTQUFTdm5ELEVBQVFELEVBQVNILEdxSGxoWWhD
LEdBQUEwbkQsR0FBQTFuRCxFQUFBLEtBR0Fpb0QsRUFBQSxnQkFBQXJ3QyxrQkFBQWhYLGlCQUFB
Z1gsS0FHQTRlLEVBQUFreEIsR0FBQU8sR0FBQWo5QixTQUFBLGdCQUVBNXFCLEdBQUFELFFBQUFx
MkIsR3JIeWhZTSxTQUFTcDJCLEVBQVFELEdzSHpnWXZCLFFBQUFvcUIsR0FBQW5ZLEdBQ0EsYUFB
QUEsR0FBQSxnQkFBQUEsR0FHQWhTLEVBQUFELFFBQUFvcUIsR3RId2lZTSxTQUFTbnFCLEVBQVFE
LEVBQVNILEd1SDNqWWhDLFlBb0JBLFNBQUEyeEIsR0FBQXUyQixFQUFBQyxFQUFBQyxFQUFBOTJC
LEVBQUErMkIsSUErQkFqb0QsRUFBQUQsUUFBQXd4QixHdkgya1lNLFNBQVN2eEIsRUFBUUQsRUFB
U0gsR3dIOW5ZaEMsWUFFQSxJQUFBc0MsR0FBQXRDLEVBQUEsR0FDQXdCLEVBQUF4QixFQUFBLEdB
Q0E2d0IsRUFBQTd3QixFQUFBLEdBRUFJLEdBQUFELFFBQUEsV0FDQSxRQUFBbW9ELEdBQUF4d0Ms
RUFBQXpKLEVBQUFpakIsRUFBQTgyQixFQUFBRyxFQUFBQyxHQUNBQSxJQUFBMzNCLEdBSUFydkIs
R0FDQSxFQUNBLG1MQU1BLFFBQUFpbkQsS0FDQSxNQUFBSCxHQUZBQSxFQUFBelYsV0FBQXlWLENB
TUEsSUFBQXR5QyxJQUNBMGdDLE1BQUE0UixFQUNBdlQsS0FBQXVULEVBQ0E5MkIsS0FBQTgyQixF
QUNBbmUsT0FBQW1lLEVBQ0F4dkMsT0FBQXd2QyxFQUNBemhDLE9BQUF5aEMsRUFDQUksT0FBQUos
RUFFQUssSUFBQUwsRUFDQU0sUUFBQUgsRUFDQTF3QyxRQUFBdXdDLEVBQ0FPLFdBQUFKLEVBQ0Ex
akQsS0FBQXVqRCxFQUNBUSxTQUFBTCxFQUNBTSxNQUFBTixFQUNBTyxVQUFBUCxFQUNBN1YsTUFB
QTZWLEVBTUEsT0FIQXp5QyxHQUFBMmIsZUFBQXJ2QixFQUNBMFQsRUFBQWlCLFVBQUFqQixFQUVB
QSxJeEgrb1lNLFNBQVM1VixFQUFRRCxFQUFTSCxHeUgvclloQyxZQUVBLElBQUFzQyxHQUFBdEMs
RUFBQSxHQUNBd0IsRUFBQXhCLEVBQUEsR0FDQXVDLEVBQUF2QyxFQUFBLEdBRUE2d0IsRUFBQTd3
QixFQUFBLElBQ0EyeEIsRUFBQTN4QixFQUFBLElBRUFJLEdBQUFELFFBQUEsU0FBQTZXLEVBQUEw
ZixHQW1CQSxRQUFBMFUsR0FBQTZkLEdBQ0EsR0FBQTlkLEdBQUE4ZCxJQUFBQyxHQUFBRCxFQUFB
QyxJQUFBRCxFQUFBRSxHQUNBLHNCQUFBaGUsR0FDQSxNQUFBQSxHQWdGQSxRQUFBcmhCLEdBQUFD
LEVBQUFDLEdBRUEsTUFBQUQsS0FBQUMsRUFHQSxJQUFBRCxHQUFBLEVBQUFBLElBQUEsRUFBQUMs
RUFHQUQsT0FBQUMsTUFZQSxRQUFBby9CLEdBQUF2bUQsR0FDQXZCLEtBQUF1QixVQUNBdkIsS0FB
QTA4QyxNQUFBLEdBS0EsUUFBQXFMLEdBQUFDLEdBS0EsUUFBQUMsR0FBQTFXLEVBQUEvNkIsRUFB
QXpKLEVBQUFpakIsRUFBQTgyQixFQUFBRyxFQUFBQyxHQUlBLEdBSEFsM0IsS0FBQWs0QixFQUNB
akIsS0FBQWw2QyxFQUVBbTZDLElBQUEzM0IsRUFDQSxHQUFBNkYsRUFFQWwxQixHQUNBLEVBQ0Es
MExBMkJBLGFBQUFzVyxFQUFBekosR0FDQXdrQyxFQUVBLEdBQUF1VyxHQURBLE9BQUF0eEMsRUFB
QXpKLEdBQ0EsT0FBQSs1QyxFQUFBLEtBQUFHLEVBQUEsbUNBQUFqM0IsRUFBQSwrQkFFQSxPQUFB
ODJCLEVBQUEsS0FBQUcsRUFBQSxtQ0FBQWozQixFQUFBLHFDQUVBLEtBRUFnNEIsRUFBQXh4QyxF
QUFBekosRUFBQWlqQixFQUFBODJCLEVBQUFHLEdBaERBLEdBb0RBa0IsR0FBQUYsRUFBQWh4QyxL
QUFBLFFBR0EsT0FGQWt4QyxHQUFBNVcsV0FBQTBXLEVBQUFoeEMsS0FBQSxTQUVBa3hDLEVBR0Es
UUFBQUMsR0FBQUMsR0FDQSxRQUFBTCxHQUFBeHhDLEVBQUF6SixFQUFBaWpCLEVBQUE4MkIsRUFB
QUcsRUFBQUMsR0FDQSxHQUFBbHFCLEdBQUF4bUIsRUFBQXpKLEdBQ0F1N0MsRUFBQUMsRUFBQXZy
QixFQUNBLElBQUFzckIsSUFBQUQsRUFBQSxDQUlBLEdBQUFHLEdBQUFDLEVBQUF6ckIsRUFFQSxX
QUFBOHFCLEdBQUEsV0FBQWhCLEVBQUEsS0FBQUcsRUFBQSxrQkFBQXVCLEVBQUEsa0JBQUF4NEIs
RUFBQSxxQkFBQXE0QixFQUFBLE9BRUEsWUFFQSxNQUFBTixHQUFBQyxHQUdBLFFBQUFVLEtBQ0Es
TUFBQVgsR0FBQS9tRCxFQUFBeUcsaUJBR0EsUUFBQWtoRCxHQUFBQyxHQUNBLFFBQUFaLEdBQUF4
eEMsRUFBQXpKLEVBQUFpakIsRUFBQTgyQixFQUFBRyxHQUNBLHFCQUFBMkIsR0FDQSxVQUFBZCxH
QUFBLGFBQUFiLEVBQUEsbUJBQUFqM0IsRUFBQSxrREFFQSxJQUFBZ04sR0FBQXhtQixFQUFBekos
RUFDQSxLQUFBK0osTUFBQXdSLFFBQUEwVSxHQUFBLENBQ0EsR0FBQXNyQixHQUFBQyxFQUFBdnJC
LEVBQ0EsV0FBQThxQixHQUFBLFdBQUFoQixFQUFBLEtBQUFHLEVBQUEsa0JBQUFxQixFQUFBLGtC
QUFBdDRCLEVBQUEsMEJBRUEsT0FBQTN3QixHQUFBLEVBQXFCQSxFQUFBMjlCLEVBQUExN0IsT0FB
c0JqQyxJQUFBLENBQzNDLEdBQUFvQixHQUFBbW9ELEVBQUE1ckIsRUFBQTM5QixFQUFBMndCLEVB
QUE4MkIsRUFBQUcsRUFBQSxJQUFBNW5ELEVBQUEsSUFBQWt3QixFQUNBLElBQUE5dUIsWUFBQUUs
T0FDQSxNQUFBRixHQUdBLFlBRUEsTUFBQXNuRCxHQUFBQyxHQUdBLFFBQUFhLEtBQ0EsUUFBQWIs
R0FBQXh4QyxFQUFBekosRUFBQWlqQixFQUFBODJCLEVBQUFHLEdBQ0EsR0FBQWpxQixHQUFBeG1C
LEVBQUF6SixFQUNBLEtBQUEySSxFQUFBc25CLEdBQUEsQ0FDQSxHQUFBc3JCLEdBQUFDLEVBQUF2
ckIsRUFDQSxXQUFBOHFCLEdBQUEsV0FBQWhCLEVBQUEsS0FBQUcsRUFBQSxrQkFBQXFCLEVBQUEs
a0JBQUF0NEIsRUFBQSx1Q0FFQSxZQUVBLE1BQUErM0IsR0FBQUMsR0FHQSxRQUFBYyxHQUFBQyxH
QUNBLFFBQUFmLEdBQUF4eEMsRUFBQXpKLEVBQUFpakIsRUFBQTgyQixFQUFBRyxHQUNBLEtBQUF6
d0MsRUFBQXpKLFlBQUFnOEMsSUFBQSxDQUNBLEdBQUFDLEdBQUFELEVBQUFqb0QsTUFBQW9uRCxF
QUNBZSxFQUFBQyxFQUFBMXlDLEVBQUF6SixHQUNBLFdBQUErNkMsR0FBQSxXQUFBaEIsRUFBQSxL
QUFBRyxFQUFBLGtCQUFBZ0MsRUFBQSxrQkFBQWo1QixFQUFBLGlDQUFBZzVCLEVBQUEsT0FFQSxZ
QUVBLE1BQUFqQixHQUFBQyxHQUdBLFFBQUFtQixHQUFBQyxHQU1BLFFBQUFwQixHQUFBeHhDLEVB
QUF6SixFQUFBaWpCLEVBQUE4MkIsRUFBQUcsR0FFQSxPQURBanFCLEdBQUF4bUIsRUFBQXpKLEdB
Q0ExTixFQUFBLEVBQXFCQSxFQUFBK3BELEVBQUE5bkQsT0FBMkJqQyxJQUNoRCxHQUFBbXBCLEVB
QUF3VSxFQUFBb3NCLEVBQUEvcEQsSUFDQSxXQUlBLElBQUFncUQsR0FBQWhjLEtBQUFDLFVBQUE4
YixFQUNBLFdBQUF0QixHQUFBLFdBQUFoQixFQUFBLEtBQUFHLEVBQUEsZUFBQWpxQixFQUFBLHNC
QUFBaE4sRUFBQSxzQkFBQXE1QixFQUFBLE1BZEEsTUFBQXZ5QyxPQUFBd1IsUUFBQThnQyxHQWdC
QXJCLEVBQUFDLEdBZEFobkQsRUFBQXlHLGdCQWlCQSxRQUFBNmhELEdBQUFWLEdBQ0EsUUFBQVos
R0FBQXh4QyxFQUFBekosRUFBQWlqQixFQUFBODJCLEVBQUFHLEdBQ0EscUJBQUEyQixHQUNBLFVB
QUFkLEdBQUEsYUFBQWIsRUFBQSxtQkFBQWozQixFQUFBLG1EQUVBLElBQUFnTixHQUFBeG1CLEVB
QUF6SixHQUNBdTdDLEVBQUFDLEVBQUF2ckIsRUFDQSxlQUFBc3JCLEVBQ0EsVUFBQVIsR0FBQSxX
QUFBaEIsRUFBQSxLQUFBRyxFQUFBLGtCQUFBcUIsRUFBQSxrQkFBQXQ0QixFQUFBLDBCQUVBLFFB
QUF6c0IsS0FBQXk1QixHQUNBLEdBQUFBLEVBQUF4OUIsZUFBQStELEdBQUEsQ0FDQSxHQUFBOUMs
R0FBQW1vRCxFQUFBNXJCLEVBQUF6NUIsRUFBQXlzQixFQUFBODJCLEVBQUFHLEVBQUEsSUFBQTFq
RCxFQUFBZ3NCLEVBQ0EsSUFBQTl1QixZQUFBRSxPQUNBLE1BQUFGLEdBSUEsWUFFQSxNQUFBc25E
LEdBQUFDLEdBR0EsUUFBQXVCLEdBQUFDLEdBb0JBLFFBQUF4QixHQUFBeHhDLEVBQUF6SixFQUFB
aWpCLEVBQUE4MkIsRUFBQUcsR0FDQSxPQUFBNW5ELEdBQUEsRUFBcUJBLEVBQUFtcUQsRUFBQWxv
RCxPQUFnQ2pDLElBQUEsQ0FDckQsR0FBQW9xRCxHQUFBRCxFQUFBbnFELEVBQ0EsVUFBQW9xRCxF
QUFBanpDLEVBQUF6SixFQUFBaWpCLEVBQUE4MkIsRUFBQUcsRUFBQTEzQixHQUNBLFlBSUEsVUFB
QXU0QixHQUFBLFdBQUFoQixFQUFBLEtBQUFHLEVBQUEsc0JBQUFqM0IsRUFBQSxPQTNCQSxJQUFB
bFosTUFBQXdSLFFBQUFraEMsR0FFQSxNQUFBeG9ELEdBQUF5RyxlQUdBLFFBQUFwSSxHQUFBLEVB
QW1CQSxFQUFBbXFELEVBQUFsb0QsT0FBZ0NqQyxJQUFBLENBQ25ELEdBQUFvcUQsR0FBQUQsRUFB
QW5xRCxFQUNBLHNCQUFBb3FELEdBUUEsTUFQQXhvRCxJQUNBLEVBQ0EsNEdBRUF5b0QsRUFBQUQs
R0FDQXBxRCxHQUVBMkIsRUFBQXlHLGdCQWNBLE1BQUFzZ0QsR0FBQUMsR0FHQSxRQUFBMkIsS0FD
QSxRQUFBM0IsR0FBQXh4QyxFQUFBekosRUFBQWlqQixFQUFBODJCLEVBQUFHLEdBQ0EsTUFBQWxD
LEdBQUF2dUMsRUFBQXpKLElBR0EsS0FGQSxHQUFBKzZDLEdBQUEsV0FBQWhCLEVBQUEsS0FBQUcs
RUFBQSxzQkFBQWozQixFQUFBLDZCQUlBLE1BQUErM0IsR0FBQUMsR0FHQSxRQUFBNEIsR0FBQUMs
R0FDQSxRQUFBN0IsR0FBQXh4QyxFQUFBekosRUFBQWlqQixFQUFBODJCLEVBQUFHLEdBQ0EsR0FB
QWpxQixHQUFBeG1CLEVBQUF6SixHQUNBdTdDLEVBQUFDLEVBQUF2ckIsRUFDQSxlQUFBc3JCLEVB
Q0EsVUFBQVIsR0FBQSxXQUFBaEIsRUFBQSxLQUFBRyxFQUFBLGNBQUFxQixFQUFBLHNCQUFBdDRC
LEVBQUEseUJBRUEsUUFBQXpzQixLQUFBc21ELEdBQUEsQ0FDQSxHQUFBSixHQUFBSSxFQUFBdG1E
LEVBQ0EsSUFBQWttRCxFQUFBLENBR0EsR0FBQWhwRCxHQUFBZ3BELEVBQUF6c0IsRUFBQXo1QixF
QUFBeXNCLEVBQUE4MkIsRUFBQUcsRUFBQSxJQUFBMWpELEVBQUFnc0IsRUFDQSxJQUFBOXVCLEVB
Q0EsTUFBQUEsSUFHQSxZQUVBLE1BQUFzbkQsR0FBQUMsR0FHQSxRQUFBakQsR0FBQS9uQixHQUNB
LGFBQUFBLElBQ0EsYUFDQSxhQUNBLGdCQUNBLFFBQ0EsZUFDQSxPQUFBQSxDQUNBLGNBQ0EsR0FB
QWxtQixNQUFBd1IsUUFBQTBVLEdBQ0EsTUFBQUEsR0FBQThzQixNQUFBL0UsRUFFQSxXQUFBL25C
LEdBQUF0bkIsRUFBQXNuQixHQUNBLFFBR0EsSUFBQTZNLEdBQUFDLEVBQUE5TSxFQUNBLEtBQUE2
TSxFQXFCQSxRQXBCQSxJQUNBRSxHQURBQyxFQUFBSCxFQUFBNXFDLEtBQUErOUIsRUFFQSxJQUFB
Nk0sSUFBQTdNLEVBQUFpTixTQUNBLE9BQUFGLEVBQUFDLEVBQUFsRSxRQUFBcUUsTUFDQSxJQUFB
NGEsRUFBQWhiLEVBQUFqNUIsT0FDQSxhQUtBLFFBQUFpNUIsRUFBQUMsRUFBQWxFLFFBQUFxRSxN
QUFBLENBQ0EsR0FBQUMsR0FBQUwsRUFBQWo1QixLQUNBLElBQUFzNUIsSUFDQTJhLEVBQUEzYSxF
QUFBLElBQ0EsU0FTQSxRQUNBLFNBQ0EsVUFJQSxRQUFBMmYsR0FBQXpCLEVBQUF0ckIsR0FFQSxp
QkFBQXNyQixJQUtBLFdBQUF0ckIsRUFBQSxrQkFLQSxrQkFBQTdILFNBQUE2SCxZQUFBN0gsU0FR
QSxRQUFBb3pCLEdBQUF2ckIsR0FDQSxHQUFBc3JCLFNBQUF0ckIsRUFDQSxPQUFBbG1CLE9BQUF3
UixRQUFBMFUsR0FDQSxRQUVBQSxZQUFBckIsUUFJQSxTQUVBb3VCLEVBQUF6QixFQUFBdHJCLEdB
Q0EsU0FFQXNyQixFQUtBLFFBQUFHLEdBQUF6ckIsR0FDQSxzQkFBQUEsSUFBQSxPQUFBQSxFQUNB
LFNBQUFBLENBRUEsSUFBQXNyQixHQUFBQyxFQUFBdnJCLEVBQ0EsZUFBQXNyQixFQUFBLENBQ0Es
R0FBQXRyQixZQUFBbHZCLE1BQ0EsWUFDTyxJQUFBa3ZCLFlBQUFyQixRQUNQLGVBR0EsTUFBQTJz
QixHQUtBLFFBQUFvQixHQUFBNTRDLEdBQ0EsR0FBQW5ILEdBQUE4K0MsRUFBQTMzQyxFQUNBLFFB
QUFuSCxHQUNBLFlBQ0EsYUFDQSxZQUFBQSxDQUNBLGVBQ0EsV0FDQSxhQUNBLFdBQUFBLENBQ0Es
U0FDQSxNQUFBQSxJQUtBLFFBQUF1L0MsR0FBQWxzQixHQUNBLE1BQUFBLEdBQUFsd0IsYUFBQWt3
QixFQUFBbHdCLFlBQUFoTSxLQUdBazhCLEVBQUFsd0IsWUFBQWhNLEtBRkFvbkQsRUFsZUEsR0FB
QU4sR0FBQSxrQkFBQXp5QixnQkFBQTZVLFNBQ0E2ZCxFQUFBLGFBc0VBSyxFQUFBLGdCQUlBeHpD
LEdBQ0EwZ0MsTUFBQWdULEVBQUEsU0FDQTNVLEtBQUEyVSxFQUFBLFdBQ0FsNEIsS0FBQWs0QixF
QUFBLFlBQ0F2ZixPQUFBdWYsRUFBQSxVQUNBNXdDLE9BQUE0d0MsRUFBQSxVQUNBN2lDLE9BQUE2
aUMsRUFBQSxVQUNBaEIsT0FBQWdCLEVBQUEsVUFFQWYsSUFBQXFCLElBQ0FwQixRQUFBcUIsRUFD
QWx5QyxRQUFBb3lDLElBQ0F0QixXQUFBdUIsRUFDQXJsRCxLQUFBa21ELElBQ0FuQyxTQUFBOEIs
RUFDQTdCLE1BQUEwQixFQUNBekIsVUFBQTZCLEVBQ0FqWSxNQUFBc1ksRUE4WUEsT0E3V0E5QixH
QUFBdm9ELFVBQUFvQixNQUFBcEIsVUEwV0FtVixFQUFBMmIsaUJBQ0EzYixFQUFBaUIsVUFBQWpC
LEVBRUFBLEl6SGd0WU0sU0FBUzVWLEVBQVFELEVBQVNILEcwSDlzWmhDLFlBRUFJLEdBQUFELFFB
QUFILEVBQUEsTTFIcXRaTSxTQUFTSSxFQUFRRCxHMkg3c1p2QixZQUVBLElBQUFtckQsSUFDQXY0
QyxZQUVBdzRDLGVBQUEsRUFDQUMsZUFBQSxFQUNBQyxnQkFBQSxFQUNBQyxjQUFBLEVBQ0FDLGVB
QUEsRUFDQUMsb0JBQUEsRUFDQUMsYUFBQSxFQUNBQyx1QkFBQSxFQUVBQyxvQkFBQSxFQUNBQyxl
QUFBLEVBQ0FDLGdCQUFBLEVBQ0FDLGdCQUFBLEVBQ0FDLGFBQUEsRUFDQUMsYUFBQSxFQUNBQyxp
QkFBQSxFQUNBQyx1QkFBQSxFQUNBQyxtQkFBQSxFQUNBQyxtQkFBQSxFQUNBQyxlQUFBLEVBQ0FD
LGdCQUFBLEVBQ0FDLGdCQUFBLEVBQ0FDLGdCQUFBLEVBQ0FDLFlBQUEsRUFDQUMsZ0JBQUEsRUFD
QUMsZ0JBQUEsRUFDQUMsZ0JBQUEsRUFDQUMsaUJBQUEsRUFFQUMsY0FBQSxFQUNBQyxZQUFBLEVB
Q0FDLFlBQUEsRUFDQUMsZ0JBQUEsRUFFQUMsa0JBQUEsRUFDQUMsZUFBQSxFQUVBQyx3QkFBQSxF
QUNBQyxnQkFBQSxFQUNBQyxnQkFBQSxFQUNBQyxlQUFBLEVBQ0FDLGdCQUFBLEVBQ0FDLG1CQUFB
LEVBQ0FDLG9CQUFBLEVBQ0FDLGNBQUEsRUFDQUMsa0JBQUEsRUFDQUMsWUFBQSxFQUNBQyxnQkFB
QSxFQUNBQyxnQkFBQSxFQUNBQyxnQkFBQSxFQUNBQyxlQUFBLEVBQ0FDLGVBQUEsR0FFQXI3Qyxx
QkFDQUMsb0JBR0E5UyxHQUFBRCxRQUFBbXJELEczSDZ0Wk0sU0FBU2xyRCxFQUFRRCxFQUFTSCxH
NEgzeFpoQyxZQUVBLElBQUE0SCxHQUFBNUgsRUFBQSxHQUVBbTJCLEVBQUFuMkIsRUFBQSxJQUVB
dXVELEdBQ0FDLGtCQUFBLFdBQ0FyNEIsRUFBQXZ1QixFQUFBUixvQkFBQTlGLFFBSUFsQixHQUFB
RCxRQUFBb3VELEc1SDJ5Wk0sU0FBU251RCxFQUFRRCxFQUFTSCxHNkh2elpoQyxZQWdDQSxTQUFB
eXVELEtBQ0EsR0FBQUMsR0FBQTVtRCxPQUFBNG1ELEtBQ0EsdUJBQUFBLElBQUEsa0JBQUFBLEdB
QUF0M0MsU0FBQTRrQyxTQUFBMFMsRUFBQXQzQyxVQUFBLFFBOENBLFFBQUF1M0MsR0FBQTNnRCxH
QUNBLE9BQUFBLEVBQUFnWCxTQUFBaFgsRUFBQWtYLFFBQUFsWCxFQUFBbVgsWUFFQW5YLEVBQUFn
WCxTQUFBaFgsRUFBQWtYLFFBU0EsUUFBQTBwQyxHQUFBNXpDLEdBQ0EsT0FBQUEsR0FDQSwwQkFD
QSxNQUFBbVMsR0FBQTBoQyxnQkFDQSx5QkFDQSxNQUFBMWhDLEdBQUEyaEMsY0FDQSw0QkFDQSxN
QUFBM2hDLEdBQUE0aEMsbUJBWUEsUUFBQUMsR0FBQWgwQyxFQUFBaE4sR0FDQSxxQkFBQWdOLEdB
QUFoTixFQUFBcW1CLFVBQUE0NkIsRUFVQSxRQUFBQyxHQUFBbDBDLEVBQUFoTixHQUNBLE9BQUFn
TixHQUNBLGVBRUEsTUFBQW0wQyxHQUFBbGlDLFFBQUFqZixFQUFBcW1CLGFBQ0Esa0JBR0EsTUFB
QXJtQixHQUFBcW1CLFVBQUE0NkIsQ0FDQSxtQkFDQSxtQkFDQSxjQUVBLFFBQ0EsU0FDQSxVQWFB
LFFBQUFHLEdBQUFwaEQsR0FDQSxHQUFBaVEsR0FBQWpRLEVBQUFpUSxNQUNBLHVCQUFBQSxJQUFB
LFFBQUFBLEdBQ0FBLEVBQUErSixLQUVBLEtBU0EsUUFBQXFuQyxHQUFBcjBDLEVBQUFqTixFQUFB
QyxFQUFBQyxHQUNBLEdBQUE4bkIsR0FDQXU1QixDQVlBLElBVkFDLEVBQ0F4NUIsRUFBQTY0QixF
QUFBNXpDLEdBQ0d3MEMsRUFJQU4sRUFBQWwwQyxFQUFBaE4sS0FDSCtuQixFQUFBNUksRUFBQTJo
QyxnQkFKQUUsRUFBQWgwQyxFQUFBaE4sS0FDQStuQixFQUFBNUksRUFBQTBoQyxtQkFNQTk0QixF
QUNBLFdBR0EwNUIsS0FHQUQsR0FBQXo1QixJQUFBNUksRUFBQTBoQyxpQkFFSzk0QixJQUFBNUks
RUFBQTJoQyxnQkFDTFUsSUFDQUYsRUFBQUUsRUFBQUUsV0FIQUYsRUFBQUcsRUFBQS9sRCxVQUFB
cUUsR0FRQSxJQUFBa0IsR0FBQXlnRCxFQUFBaG1ELFVBQUFtc0IsRUFBQWhvQixFQUFBQyxFQUFB
QyxFQUVBLElBQUFxaEQsRUFHQW5nRCxFQUFBNlksS0FBQXNuQyxNQUNHLENBQ0gsR0FBQU8sR0FB
QVQsRUFBQXBoRCxFQUNBLFFBQUE2aEQsSUFDQTFnRCxFQUFBNlksS0FBQTZuQyxHQUtBLE1BREE1
eUMsR0FBQVAsNkJBQUF2TixHQUNBQSxFQVFBLFFBQUEyZ0QsR0FBQTkwQyxFQUFBaE4sR0FDQSxP
QUFBZ04sR0FDQSx3QkFDQSxNQUFBbzBDLEdBQUFwaEQsRUFDQSxtQkFlQSxHQUFBa21DLEdBQUFs
bUMsRUFBQWttQyxLQUNBLE9BQUFBLEtBQUE2YixFQUNBLE1BR0FDLEdBQUEsRUFDQUMsRUFFQSxv
QkFFQSxHQUFBQyxHQUFBbGlELEVBQUFnYSxJQUtBLE9BQUFrb0MsS0FBQUQsR0FBQUQsRUFDQSxL
QUdBRSxDQUVBLFNBRUEsYUFZQSxRQUFBQyxHQUFBbjFDLEVBQUFoTixHQUtBLEdBQUF3aEQsRUFB
QSxDQUNBLHlCQUFBeDBDLElBQUF1MEMsR0FBQUwsRUFBQWwwQyxFQUFBaE4sR0FBQSxDQUNBLEdB
QUFraUQsR0FBQVYsRUFBQUUsU0FHQSxPQUZBQyxHQUFBMWlELFFBQUF1aUQsR0FDQUEsRUFBQSxL
QUNBVSxFQUVBLFlBR0EsT0FBQWwxQyxHQUNBLGVBR0EsV0FDQSxtQkFpQkEsTUFBQWhOLEdBQUFr
bUMsUUFBQXlhLEVBQUEzZ0QsR0FDQTFLLE9BQUFHLGFBQUF1SyxFQUFBa21DLE9BRUEsSUFDQSx5
QkFDQSxNQUFBdWIsR0FBQSxLQUFBemhELEVBQUFnYSxJQUNBLFNBQ0EsYUFVQSxRQUFBb29DLEdB
QUFwMUMsRUFBQWpOLEVBQUFDLEVBQUFDLEdBQ0EsR0FBQWlpRCxFQVVBLElBUEFBLEVBREFHLEVB
Q0FQLEVBQUE5MEMsRUFBQWhOLEdBRUFtaUQsRUFBQW4xQyxFQUFBaE4sSUFLQWtpRCxFQUNBLFdB
R0EsSUFBQS9nRCxHQUFBbWhELEVBQUExbUQsVUFBQXVqQixFQUFBb2pDLFlBQUF4aUQsRUFBQUMs
RUFBQUMsRUFJQSxPQUZBa0IsR0FBQTZZLEtBQUFrb0MsRUFDQWp6QyxFQUFBUCw2QkFBQXZOLEdB
Q0FBLEVBclZBLEdBQUE4TixHQUFBamQsRUFBQSxJQUNBaUksRUFBQWpJLEVBQUEsR0FDQTJ2RCxF
QUFBM3ZELEVBQUEsS0FDQTR2RCxFQUFBNXZELEVBQUEsS0FDQXN3RCxFQUFBdHdELEVBQUEsS0FF
QW12RCxHQUFBLFlBQ0FGLEVBQUEsSUFFQU0sRUFBQXRuRCxFQUFBSixXQUFBLG9CQUFBQyxRQUVB
NkosRUFBQSxJQUNBMUosR0FBQUosV0FBQSxnQkFBQUUsWUFDQTRKLEVBQUE1SixTQUFBNEosYUFN
QSxJQUFBMCtDLEdBQUFwb0QsRUFBQUosV0FBQSxhQUFBQyxVQUFBNkosSUFBQTg4QyxJQUtBZ0Is
RUFBQXhuRCxFQUFBSixhQUFBMG5ELEdBQUE1OUMsS0FBQSxHQUFBQSxHQUFBLElBV0FvK0MsRUFB
QSxHQUNBRSxFQUFBM3NELE9BQUFHLGFBQUFzc0QsR0FHQTVpQyxHQUNBb2pDLGFBQ0ExMEMseUJB
Q0EyMEMsUUFBQSxnQkFDQUMsU0FBQSx3QkFFQS9zQyxjQUFBLDhEQUVBb3JDLGdCQUNBanpDLHlC
QUNBMjBDLFFBQUEsbUJBQ0FDLFNBQUEsMkJBRUEvc0MsY0FBQSxxRkFFQW1yQyxrQkFDQWh6Qyx5
QkFDQTIwQyxRQUFBLHFCQUNBQyxTQUFBLDZCQUVBL3NDLGNBQUEsdUZBRUFxckMsbUJBQ0FsekMs
eUJBQ0EyMEMsUUFBQSxzQkFDQUMsU0FBQSw4QkFFQS9zQyxjQUFBLHlGQUtBc3NDLEdBQUEsRUFz
RkFSLEVBQUEsS0E2TUFrQixHQUNBdmpDLGFBRUFwUyxjQUFBLFNBQUFDLEVBQUFqTixFQUFBQyxF
QUFBQyxHQUNBLE9BQUFvaEQsRUFBQXIwQyxFQUFBak4sRUFBQUMsRUFBQUMsR0FBQW1pRCxFQUFB
cDFDLEVBQUFqTixFQUFBQyxFQUFBQyxLQUlBN04sR0FBQUQsUUFBQXV3RCxHN0h1MFpNLFNBQVN0
d0QsRUFBUUQsRUFBU0gsRzhIM3JhaEMsWUFFQSxJQUFBZzhCLEdBQUFoOEIsRUFBQSxJQUNBaUks
RUFBQWpJLEVBQUEsR0FJQTJ3RCxHQUhBM3dELEVBQUEsR0FFQUEsRUFBQSxJQUNBQSxFQUFBLE1B
Q0FvbUQsRUFBQXBtRCxFQUFBLEtBQ0F1bUQsRUFBQXZtRCxFQUFBLEtBR0E0d0QsR0FGQTV3RCxF
QUFBLEdBRUF1bUQsRUFBQSxTQUFBc0ssR0FDQSxNQUFBekssR0FBQXlLLE1BR0FDLEdBQUEsRUFD
QUMsRUFBQSxVQUNBLElBQUE5b0QsRUFBQUosVUFBQSxDQUNBLEdBQUFtcEQsR0FBQWpwRCxTQUFB
QyxjQUFBLE9BQUFpcEQsS0FDQSxLQUVBRCxFQUFBejFCLEtBQUEsR0FDRyxNQUFBMzVCLEdBQ0hr
dkQsR0FBQSxFQUdBOXVELFNBQUErRixTQUFBdzRCLGdCQUFBMHdCLE1BQUFDLFdBQ0FILEVBQUEs
Y0FNQSxHQWtGQUksSUFjQUMsc0JBQUEsU0FBQUMsRUFBQS9yRCxHQUNBLEdBQUFnc0QsR0FBQSxF
QUNBLFFBQUFULEtBQUFRLEdBQ0EsR0FBQUEsRUFBQXZ3RCxlQUFBK3ZELEdBQUEsQ0FHQSxHQUFB
VSxHQUFBLElBQUFWLEVBQUE1akMsUUFBQSxNQUNBdWtDLEVBQUFILEVBQUFSLEVBTUEsT0FBQVcs
SUFDQUYsR0FBQVYsRUFBQUMsR0FBQSxJQUNBUyxHQUFBWCxFQUFBRSxFQUFBVyxFQUFBbHNELEVB
QUFpc0QsR0FBQSxLQUdBLE1BQUFELElBQUEsTUFXQUcsa0JBQUEsU0FBQTFzRCxFQUFBc3NELEVB
QUEvckQsR0FTQSxHQUFBMnJELEdBQUFsc0QsRUFBQWtzRCxLQUNBLFFBQUFKLEtBQUFRLEdBQ0Es
R0FBQUEsRUFBQXZ3RCxlQUFBK3ZELEdBQUEsQ0FHQSxHQUFBVSxHQUFBLElBQUFWLEVBQUE1akMs
UUFBQSxNQU1BdWtDLEVBQUFiLEVBQUFFLEVBQUFRLEVBQUFSLEdBQUF2ckQsRUFBQWlzRCxFQUlB
LElBSEEsVUFBQVYsR0FBQSxhQUFBQSxJQUNBQSxFQUFBRSxHQUVBUSxFQUNBTixFQUFBUyxZQUFB
YixFQUFBVyxPQUNPLElBQUFBLEVBQ1BQLEVBQUFKLEdBQUFXLE1BQ08sQ0FDUCxHQUFBRyxHQUFB
YixHQUFBOTBCLEVBQUF0Qyw0QkFBQW0zQixFQUNBLElBQUFjLEVBR0EsT0FBQUMsS0FBQUQsR0FD
QVYsRUFBQVcsR0FBQSxPQUdBWCxHQUFBSixHQUFBLE1BT0F6d0QsR0FBQUQsUUFBQWd4RCxHOUgy
c2FNLFNBQVMvd0QsRUFBUUQsRUFBU0gsRytIdDVhaEMsWUF3QkEsU0FBQTZ4RCxHQUFBbnNELEVB
QUFzSSxFQUFBekosR0FDQSxHQUFBNEssR0FBQXRCLEVBQUFqRSxVQUFBdWpCLEVBQUEya0MsT0FB
QXBzRCxFQUFBc0ksRUFBQXpKLEVBR0EsT0FGQTRLLEdBQUFsRSxLQUFBLFNBQ0FnUyxFQUFBUCw2
QkFBQXZOLEdBQ0FBLEVBV0EsUUFBQTRpRCxHQUFBcHhCLEdBQ0EsR0FBQXR2QixHQUFBc3ZCLEVB
QUF0dkIsVUFBQXN2QixFQUFBdHZCLFNBQUFXLGFBQ0Esa0JBQUFYLEdBQUEsVUFBQUEsR0FBQSxT
QUFBc3ZCLEVBQUExMUIsS0FTQSxRQUFBK21ELEdBQUFoa0QsR0FDQSxHQUFBbUIsR0FBQTBpRCxF
QUFBSSxFQUFBamtELEVBQUEwUCxFQUFBMVAsR0FhQTVFLEdBQUFVLGVBQUFvb0QsRUFBQS9pRCxH
QUdBLFFBQUEraUQsR0FBQS9pRCxHQUNBOEssRUFBQW9CLGNBQUFsTSxHQUNBOEssRUFBQXFCLG1C
QUFBLEdBR0EsUUFBQTYyQyxHQUFBNXRELEVBQUF3SixHQUNBdW9CLEVBQUEveEIsRUFDQTB0RCxF
QUFBbGtELEVBQ0F1b0IsRUFBQWh1QixZQUFBLFdBQUEwcEQsR0FHQSxRQUFBSSxLQUNBOTdCLElB
R0FBLEVBQUFMLFlBQUEsV0FBQSs3QixHQUNBMTdCLEVBQUEsS0FDQTI3QixFQUFBLE1BR0EsUUFB
QUksR0FBQXRrRCxFQUFBQyxHQUNBLEdBQUFza0QsR0FBQXBxQixFQUFBWSxxQkFBQS82QixHQUNB
NEwsRUFBQTNMLEVBQUEyTCxhQUFBLEdBQUE0NEMsRUFBQUMsMEJBRUEsSUFBQUYsR0FBQTM0QyxF
QUNBLE1BQUE1TCxHQUlBLFFBQUEwa0QsR0FBQXozQyxFQUFBak4sR0FDQSxpQkFBQWlOLEVBQ0Es
TUFBQWpOLEdBSUEsUUFBQTJrRCxHQUFBMTNDLEVBQUF6VyxFQUFBd0osR0FDQSxhQUFBaU4sR0FH
QW8zQyxJQUNBRCxFQUFBNXRELEVBQUF3SixJQUNHLFlBQUFpTixHQUNIbzNDLElBb0JBLFFBQUFP
LEdBQUFwdUQsRUFBQXdKLEdBQ0F1b0IsRUFBQS94QixFQUNBMHRELEVBQUFsa0QsRUFDQXVvQixF
QUFBaHVCLFlBQUEsbUJBQUFzcUQsR0FPQSxRQUFBQyxLQUNBdjhCLElBR0FBLEVBQUFMLFlBQUEs
bUJBQUEyOEIsR0FFQXQ4QixFQUFBLEtBQ0EyN0IsRUFBQSxNQU9BLFFBQUFXLEdBQUE1a0QsR0FD
QSxVQUFBQSxFQUFBNEYsY0FHQXkrQyxFQUFBSixFQUFBamtELElBQ0Fna0QsRUFBQWhrRCxHQUlB
LFFBQUE4a0QsR0FBQTkzQyxFQUFBelcsRUFBQXdKLEdBQ0EsYUFBQWlOLEdBY0E2M0MsSUFDQUYs
RUFBQXB1RCxFQUFBd0osSUFDRyxZQUFBaU4sR0FDSDYzQyxJQUtBLFFBQUFFLEdBQUEvM0MsRUFB
QWpOLEVBQUFDLEdBQ0EsMEJBQUFnTixHQUFBLGFBQUFBLEdBQUEsZUFBQUEsRUFXQSxNQUFBcTND
LEdBQUFKLEVBQUFqa0QsR0FPQSxRQUFBZ2xELEdBQUFyeUI7QUFJQSxHQUFBdHZCLEdBQUFzdkIs
RUFBQXR2QixRQUNBLE9BQUFBLElBQUEsVUFBQUEsRUFBQVcsZ0JBQUEsYUFBQTJ1QixFQUFBMTFC
LE1BQUEsVUFBQTAxQixFQUFBMTFCLE1BR0EsUUFBQWdvRCxHQUFBajRDLEVBQUFqTixFQUFBQyxH
QUNBLGdCQUFBZ04sRUFDQSxNQUFBcTNDLEdBQUF0a0QsRUFBQUMsR0FJQSxRQUFBa2xELEdBQUFs
NEMsRUFBQWpOLEVBQUFDLEdBQ0EsZ0JBQUFnTixHQUFBLGNBQUFBLEVBQ0EsTUFBQXEzQyxHQUFB
dGtELEVBQUFDLEdBSUEsUUFBQW1sRCxHQUFBenRELEVBQUFYLEdBRUEsU0FBQVcsRUFBQSxDQUtB
LEdBQUF5cEMsR0FBQXpwQyxFQUFBdTRCLGVBQUFsNUIsRUFBQWs1QixhQUVBLElBQUFrUixLQUFB
aWtCLFlBQUEsV0FBQXJ1RCxFQUFBa0csS0FBQSxDQUtBLEdBQUFtSCxHQUFBLEdBQUFyTixFQUFB
cU4sS0FDQXJOLEdBQUFHLGFBQUEsV0FBQWtOLEdBQ0FyTixFQUFBb3dCLGFBQUEsUUFBQS9pQixL
QTlPQSxHQUFBNkgsR0FBQWphLEVBQUEsSUFDQWlkLEVBQUFqZCxFQUFBLElBQ0FpSSxFQUFBakks
RUFBQSxHQUNBNEgsRUFBQTVILEVBQUEsR0FDQW9KLEVBQUFwSixFQUFBLEdBQ0E2TixFQUFBN04s
RUFBQSxJQUVBa29DLEVBQUFsb0MsRUFBQSxJQUNBMGQsRUFBQTFkLEVBQUEsSUFDQTRlLEVBQUE1
ZSxFQUFBLElBQ0EycEMsRUFBQTNwQyxFQUFBLElBRUFtdEIsR0FDQTJrQyxRQUNBajJDLHlCQUNB
MjBDLFFBQUEsV0FDQUMsU0FBQSxtQkFFQS9zQyxjQUFBLHVHQWFBNFMsRUFBQSxLQUNBMjdCLEVB
QUEsS0FVQW9CLEdBQUEsQ0FDQXByRCxHQUFBSixZQUVBd3JELEVBQUF6MEMsRUFBQSxhQUFBN1cs
U0FBQTRKLGNBQUE1SixTQUFBNEosYUFBQSxHQXFFQSxJQUFBMmhELElBQUEsQ0FDQXJyRCxHQUFB
SixZQUlBeXJELEVBQUExMEMsRUFBQSw2QkFBQTdXLHFCQUFBNEosYUFBQSxHQXFJQSxJQUFBNGdE
LElBQ0FwbEMsYUFFQXFsQyw0QkFBQSxFQUNBZSx1QkFBQUQsRUFFQXY0QyxjQUFBLFNBQUFDLEVB
QUFqTixFQUFBQyxFQUFBQyxHQUNBLEdBRUF1bEQsR0FBQUMsRUFGQUMsRUFBQTNsRCxFQUFBbkcs
RUFBQVIsb0JBQUEyRyxHQUFBakcsTUFvQkEsSUFqQkFpcUQsRUFBQTJCLEdBQ0FMLEVBQ0FHLEVB
QUFmLEVBRUFnQixFQUFBZixFQUVLL29CLEVBQUErcEIsR0FDTEosRUFDQUUsRUFBQU4sR0FFQU0s
RUFBQVQsRUFDQVUsRUFBQVgsR0FFS0UsRUFBQVUsS0FDTEYsRUFBQVAsR0FHQU8sRUFBQSxDQUNB
LEdBQUE5dEQsR0FBQTh0RCxFQUFBeDRDLEVBQUFqTixFQUFBQyxFQUNBLElBQUF0SSxFQUFBLENB
Q0EsR0FBQXlKLEdBQUEwaUQsRUFBQW5zRCxFQUFBc0ksRUFBQUMsRUFDQSxPQUFBa0IsSUFJQXNr
RCxHQUNBQSxFQUFBejRDLEVBQUEwNEMsRUFBQTNsRCxHQUlBLFlBQUFpTixHQUNBbTRDLEVBQUFw
bEQsRUFBQTJsRCxJQUtBdHpELEdBQUFELFFBQUFveUQsRy9IczZhTSxTQUFTbnlELEVBQVFELEVB
QVNILEdnSWx0YmhDLFlBRUEsSUFBQTRHLEdBQUE1RyxFQUFBLEdBRUFzUixFQUFBdFIsRUFBQSxJ
QUNBaUksRUFBQWpJLEVBQUEsR0FFQTJqRCxFQUFBM2pELEVBQUEsS0FDQXNDLEVBQUF0QyxFQUFB
LEdBR0Fnc0IsR0FGQWhzQixFQUFBLElBV0Fpc0IsaUNBQUEsU0FBQTBuQyxFQUFBNStDLEdBS0Es
R0FKQTlNLEVBQUFKLFVBQUEsT0FBQWpCLEVBQUEsTUFDQW1PLEVBQUEsT0FBQW5PLEVBQUEsTUFD
QSxTQUFBK3NELEVBQUF0aUQsU0FBQXpLLEVBQUEsYUFFQSxnQkFBQW1PLEdBQUEsQ0FDQSxHQUFB
NitDLEdBQUFqUSxFQUFBNXVDLEVBQUF6UyxHQUFBLEVBQ0FxeEQsR0FBQTNzRCxXQUFBOEosYUFB
QThpRCxFQUFBRCxPQUVBcmlELEdBQUFYLHFCQUFBZ2pELEVBQUE1K0MsS0FLQTNVLEdBQUFELFFB
QUE2ckIsR2hJa3ViTSxTQUFTNXJCLEVBQVFELEdpSXB3YnZCLFlBWUEsSUFBQTB6RCxJQUFBLHFK
QUVBenpELEdBQUFELFFBQUEwekQsR2pJb3hiTSxTQUFTenpELEVBQVFELEVBQVNILEdrSWx5YmhD
LFlBRUEsSUFBQWlkLEdBQUFqZCxFQUFBLElBQ0E0SCxFQUFBNUgsRUFBQSxHQUNBeWtCLEVBQUF6
a0IsRUFBQSxJQUVBbXRCLEdBQ0EybUMsWUFDQXo1QyxpQkFBQSxlQUNBcUosY0FBQSwrQkFFQXF3
QyxZQUNBMTVDLGlCQUFBLGVBQ0FxSixjQUFBLGdDQUlBc3dDLEdBQ0E3bUMsYUFTQXBTLGNBQUEs
U0FBQUMsRUFBQWpOLEVBQUFDLEVBQUFDLEdBQ0Esb0JBQUErTSxJQUFBaE4sRUFBQXVYLGVBQUF2
WCxFQUFBd1gsYUFDQSxXQUVBLG9CQUFBeEssR0FBQSxpQkFBQUEsRUFFQSxXQUdBLElBQUFpNUMs
RUFDQSxJQUFBaG1ELEVBQUFuRyxTQUFBbUcsRUFFQWdtRCxFQUFBaG1ELE1BQ0ssQ0FFTCxHQUFB
NFAsR0FBQTVQLEVBQUE2UCxhQUVBbTJDLEdBREFwMkMsRUFDQUEsRUFBQUUsYUFBQUYsRUFBQUcs
YUFFQWxXLE9BSUEsR0FBQXJELEdBQ0FFLENBQ0Esb0JBQUFxVyxFQUFBLENBQ0F2VyxFQUFBc0os
Q0FDQSxJQUFBbW1ELEdBQUFsbUQsRUFBQXVYLGVBQUF2WCxFQUFBMFgsU0FDQS9nQixHQUFBdXZE
LEVBQUF0c0QsRUFBQWYsMkJBQUFxdEQsR0FBQSxTQUdBenZELEdBQUEsS0FDQUUsRUFBQW9KLENB
R0EsSUFBQXRKLElBQUFFLEVBRUEsV0FHQSxJQUFBOG5CLEdBQUEsTUFBQWhvQixFQUFBd3ZELEVB
QUFyc0QsRUFBQVIsb0JBQUEzQyxHQUNBMHZELEVBQUEsTUFBQXh2RCxFQUFBc3ZELEVBQUFyc0Qs
RUFBQVIsb0JBQUF6QyxHQUVBa1ksRUFBQTRILEVBQUE3YSxVQUFBdWpCLEVBQUE0bUMsV0FBQXR2
RCxFQUFBdUosRUFBQUMsRUFDQTRPLEdBQUE1UixLQUFBLGFBQ0E0UixFQUFBdFksT0FBQWtvQixF
QUNBNVAsRUFBQTBJLGNBQUE0dUMsQ0FFQSxJQUFBcjNDLEdBQUEySCxFQUFBN2EsVUFBQXVqQixF
QUFBMm1DLFdBQUFudkQsRUFBQXFKLEVBQUFDLEVBT0EsT0FOQTZPLEdBQUE3UixLQUFBLGFBQ0E2
UixFQUFBdlksT0FBQTR2RCxFQUNBcjNDLEVBQUF5SSxjQUFBa0gsRUFFQXhQLEVBQUFMLCtCQUFB
QyxFQUFBQyxFQUFBclksRUFBQUUsSUFFQWtZLEVBQUFDLElBSUExYyxHQUFBRCxRQUFBNnpELEds
SWt6Yk0sU0FBUzV6RCxFQUFRRCxFQUFTSCxHbUl4NGJoQyxZQW1CQSxTQUFBMnZELEdBQUFuNUIs
R0FDQWwxQixLQUFBOHlELE1BQUE1OUIsRUFDQWwxQixLQUFBK3lELFdBQUEveUQsS0FBQW04QyxV
QUNBbjhDLEtBQUFnekQsY0FBQSxLQXBCQSxHQUFBbm9ELEdBQUFuTSxFQUFBLEdBRUFvTSxFQUFB
cE0sRUFBQSxJQUVBeW5DLEVBQUF6bkMsRUFBQSxHQW1CQW1NLEdBQUF3akQsRUFBQTl1RCxXQUNB
bU0sV0FBQSxXQUNBMUwsS0FBQTh5RCxNQUFBLEtBQ0E5eUQsS0FBQSt5RCxXQUFBLEtBQ0EveUQs
S0FBQWd6RCxjQUFBLE1BUUE3VyxRQUFBLFdBQ0EsZUFBQW44QyxNQUFBOHlELE1BQ0E5eUQsS0FB
QTh5RCxNQUFBaGlELE1BRUE5USxLQUFBOHlELE1BQUEzc0IsTUFTQWlvQixRQUFBLFdBQ0EsR0FB
QXB1RCxLQUFBZ3pELGNBQ0EsTUFBQWh6RCxNQUFBZ3pELGFBR0EsSUFBQTd5QixHQUdBRSxFQUZB
NHlCLEVBQUFqekQsS0FBQSt5RCxXQUNBRyxFQUFBRCxFQUFBM3hELE9BRUE2eEQsRUFBQW56RCxL
QUFBbThDLFVBQ0FpWCxFQUFBRCxFQUFBN3hELE1BRUEsS0FBQTYrQixFQUFBLEVBQW1CQSxFQUFB
K3lCLEdBQ25CRCxFQUFBOXlCLEtBQUFnekIsRUFBQWh6QixHQUR3Q0EsS0FNeEMsR0FBQWt6QixH
QUFBSCxFQUFBL3lCLENBQ0EsS0FBQUUsRUFBQSxFQUFpQkEsR0FBQWd6QixHQUNqQkosRUFBQUMs
RUFBQTd5QixLQUFBOHlCLEVBQUFDLEVBQUEveUIsR0FEZ0NBLEtBTWhDLEdBQUFpekIsR0FBQWp6
QixFQUFBLElBQUFBLEVBQUEzL0IsTUFFQSxPQURBVixNQUFBZ3pELGNBQUFHLEVBQUF4ekQsTUFB
QXdnQyxFQUFBbXpCLEdBQ0F0ekQsS0FBQWd6RCxpQkFJQWxvRCxFQUFBaUIsYUFBQXNpRCxHQUVB
dnZELEVBQUFELFFBQUF3dkQsR25JdzViTSxTQUFTdnZELEVBQVFELEVBQVNILEdvSTMrYmhDLFlB
RUEsSUFBQXNILEdBQUF0SCxFQUFBLElBRUF1UyxFQUFBakwsRUFBQXNHLFVBQUEyRSxrQkFDQUMs
RUFBQWxMLEVBQUFzRyxVQUFBNEUsa0JBQ0FDLEVBQUFuTCxFQUFBc0csVUFBQTZFLGtCQUNBQyxF
QUFBcEwsRUFBQXNHLFVBQUE4RSwyQkFDQUMsRUFBQXJMLEVBQUFzRyxVQUFBK0UsNkJBRUFraUQs
R0FDQXpoRCxrQkFBQTZwQixPQUFBcDhCLFVBQUFpUixLQUFBeUcsS0FBQSxHQUFBMGtCLFFBQUEs
aUJBQUEzMUIsRUFBQStNLG9CQUFBLFFBQ0F0QixZQUlBK2hELE9BQUEsRUFDQUMsY0FBQSxFQUNB
QyxVQUFBLEVBQ0FsVyxPQUFBLEVBQ0FtVyxnQkFBQXppRCxFQUNBMGlELGtCQUFBLEVBQ0FDLElB
QUEsRUFFQUMsR0FBQSxFQUNBQyxNQUFBN2lELEVBQ0E4aUQsYUFBQSxFQUdBQyxTQUFBL2lELEVB
Q0F5aUIsUUFBQXppQixFQUNBZ2pELFlBQUEsRUFDQUMsWUFBQSxFQUNBQyxRQUFBLEVBQ0FDLFVB
QUEsRUFDQWhsQyxRQUFBcGUsRUFBQUMsRUFDQW9qRCxLQUFBLEVBQ0FDLFFBQUEsRUFDQXRoQixV
QUFBLEVBQ0F1aEIsS0FBQXBqRCxFQUNBcWpELFFBQUEsRUFDQXhwQyxRQUFBLEVBQ0FxVSxnQkFB
QSxFQUNBbzFCLFlBQUEsRUFDQUMsU0FBQXpqRCxFQUNBMGpELE9BQUEsRUFDQUMsWUFBQSxFQUNB
bnVDLEtBQUEsRUFDQW91QyxTQUFBLEVBQ0E5dEMsUUFBQTlWLEVBQ0E2akQsTUFBQTdqRCxFQUNB
b2xDLElBQUEsRUFDQTErQixTQUFBMUcsRUFDQThqRCxTQUFBM2pELEVBQ0E0akQsVUFBQSxFQUNB
QyxRQUFBLEVBQ0FDLEtBQUEsRUFDQUMsV0FBQSxFQUNBQyxZQUFBLEVBQ0FDLFdBQUEsRUFDQUMs
ZUFBQXJrRCxFQUNBc2tELFdBQUEsRUFDQUMsWUFBQSxFQUNBQyxRQUFBLEVBQ0FDLE9BQUEsRUFD
QS9sQyxPQUFBMWUsRUFDQTBrRCxLQUFBLEVBQ0FDLEtBQUEsRUFDQUMsU0FBQSxFQUNBQyxRQUFB
LEVBQ0FDLFVBQUEsRUFDQUMsS0FBQSxFQUNBbDNELEdBQUEsRUFDQW0zRCxVQUFBLEVBQ0FDLFVB
QUEsRUFDQTN0QyxHQUFBLEVBQ0E0dEMsVUFBQSxFQUNBQyxRQUFBLEVBQ0FDLEtBQUEsRUFDQUMs
TUFBQSxFQUNBQyxLQUFBLEVBQ0FDLEtBQUEsRUFDQUMsS0FBQXhsRCxFQUNBeWxELElBQUEsRUFD
QUMsU0FBQSxFQUNBQyxhQUFBLEVBQ0FDLFlBQUEsRUFDQUMsSUFBQSxFQUNBQyxVQUFBLEVBQ0FD
LE1BQUEsRUFDQUMsV0FBQSxFQUNBcnJELE9BQUEsRUFDQWkxQixJQUFBLEVBQ0FxMkIsVUFBQSxF
QUdBcDZCLFNBQUE5ckIsRUFBQUMsRUFDQWttRCxNQUFBbm1ELEVBQUFDLEVBQ0FwUSxLQUFBLEVB
Q0F1MkQsTUFBQSxFQUNBQyxXQUFBcG1ELEVBQ0FxbUQsS0FBQXJtRCxFQUNBc21ELFFBQUEsRUFD
QUMsUUFBQSxFQUNBcGtCLFlBQUEsRUFDQXFrQixZQUFBeG1ELEVBQ0F5bUQsT0FBQSxFQUNBQyxR
QUFBLEVBQ0FDLFFBQUEsRUFDQUMsV0FBQSxFQUNBN25DLFNBQUEvZSxFQUNBNm1ELGVBQUEsRUFD
QUMsSUFBQSxFQUNBQyxTQUFBL21ELEVBQ0FnbkQsU0FBQWhuRCxFQUNBaW5ELEtBQUEsRUFDQUMs
S0FBQWhuRCxFQUNBaW5ELFFBQUFsbkQsRUFDQW1uRCxRQUFBLEVBQ0F4c0QsTUFBQSxFQUNBeXNE
LE9BQUFybkQsRUFDQXNuRCxVQUFBLEVBQ0FDLFNBQUF2bkQsRUFDQWlzQixTQUFBbHNCLEVBQUFD
LEVBQ0FvZ0MsTUFBQSxFQUNBb25CLEtBQUF0bkQsRUFDQXVuRCxNQUFBLEVBQ0FDLEtBQUF4bkQs
RUFDQXluRCxXQUFBLEVBQ0FDLElBQUEsRUFDQUMsT0FBQSxFQUNBQyxRQUFBLEVBQ0FDLE9BQUEs
RUFDQTk0QixNQUFBaHZCLEVBQ0E0NEIsS0FBQSxFQUNBNGxCLE1BQUEsRUFDQXVKLFFBQUEsRUFD
QUMsU0FBQSxFQUNBbDJELE9BQUEsRUFDQXN5QyxNQUFBLEVBRUE1ckMsS0FBQSxFQUNBeXZELE9B
QUEsRUFDQXRvRCxNQUFBLEVBQ0F1b0QsTUFBQSxFQUNBQyxNQUFBLEVBQ0E5VyxLQUFBLEVBS0Er
VyxNQUFBLEVBQ0FDLFNBQUEsRUFDQUMsT0FBQSxFQUNBbmtDLE9BQUEsRUFFQTZwQixTQUFBLEVB
Q0F1YSxTQUFBLEVBQ0FDLE9BQUEsRUFDQUMsTUFBQSxFQU9BQyxlQUFBLEVBQ0FDLFlBQUEsRUFF
QUMsU0FBQSxFQUVBeHhCLE1BQUEsRUFHQXl4QixTQUFBLEVBQ0FDLFVBQUEvb0QsRUFDQWdwRCxT
QUFBLEVBSUFDLE9BQUEsRUFDQUMsUUFBQSxFQUdBQyxRQUFBLEVBR0FDLFNBQUEsRUFFQUMsYUFB
QSxHQUVBNW9ELG1CQUNBOGhELGNBQUEsaUJBQ0F4Z0IsVUFBQSxRQUNBOGlCLFFBQUEsTUFDQUMs
VUFBQSxjQUVBcGtELG9CQUNBQyxvQkFDQWYsTUFBQSxTQUFBck4sRUFBQXFOLEdBQ0EsYUFBQUEs
RUFDQXJOLEVBQUErNEIsZ0JBQUEsY0FNQSxXQUFBLzRCLEVBQUFrRyxNQUFBbEcsRUFBQXFoQyxh
QUFBLGNBQ0FyaEMsRUFBQW93QixhQUFBLFdBQUEvaUIsR0FDT3JOLEVBQUErMkQsV0FBQS8yRCxF
QUFBKzJELFNBQUFDLFVBQUFoM0QsRUFBQStZLGNBQUF3WSxnQkFBQXZ4QixHQVNQQSxFQUFBb3dC
LGFBQUEsV0FBQS9pQixNQU1BaFMsR0FBQUQsUUFBQTAwRCxHcEkyL2JNLFNBQVN6MEQsRUFBUUQs
RUFBU0gsSXFJcnVjaEMsU0FBQTIyQyxHQVVBLFlBcUJBLFNBQUFxbEIsR0FBQUMsRUFBQTU0QixF
QUFBamhDLEVBQUE4NUQsR0FFQSxHQUFBQyxHQUFBbjZELFNBQUFpNkQsRUFBQTc1RCxFQVNBLE9B
QUFpaEMsR0FBQTg0QixJQUNBRixFQUFBNzVELEdBQUFvaUMsRUFBQW5CLEdBQUEsSUEvQkEsR0FB
QS8zQixHQUFBdEwsRUFBQSxJQUVBd2tDLEVBQUF4a0MsRUFBQSxJQUVBdTFCLEdBREF2MUIsRUFB
QSxJQUNBQSxFQUFBLEtBQ0E2ckMsRUFBQTdyQyxFQUFBLEdBQ0FBLEdBQUEsRUFJQSxvQkFBQTIy
QyxNQUFBSSxLQThCQSxJQUFBcWxCLElBU0FDLG9CQUFBLFNBQUFDLEVBQUFqeUQsRUFBQTJCLEVB
QUFrd0QsR0FFQSxTQUFBSSxFQUNBLFdBRUEsSUFBQUwsS0FTQSxPQUZBcHdCLEdBQUF5d0IsRUFB
QU4sRUFBQUMsR0FFQUEsR0FhQU0sZUFBQSxTQUFBQyxFQUFBQyxFQUFBQyxFQUFBQyxFQUFBdHlE
LEVBQUF1SyxFQUFBQyxFQUFBN0ksRUFBQWt3RCxHQU9BLEdBQUFPLEdBQUFELEVBQUEsQ0FHQSxH
QUFBcDZELEdBQ0F3NkQsQ0FDQSxLQUFBeDZELElBQUFxNkQsR0FDQSxHQUFBQSxFQUFBMzdELGVB
QUFzQixHQUFBLENBR0F3NkQsRUFBQUosS0FBQXA2RCxFQUNBLElBQUFvVCxHQUFBb25ELEtBQUE1
eEQsZ0JBQ0F1SyxFQUFBa25ELEVBQUFyNkQsRUFDQSxVQUFBdzZELEdBQUFybkMsRUFBQS9mLEVB
QUFELEdBQ0FqSyxFQUFBZ0ssaUJBQUFzbkQsRUFBQXJuRCxFQUFBbEwsRUFBQTJCLEdBQ0F5d0Qs
RUFBQXI2RCxHQUFBdzZELE1BQ08sQ0FDUEEsSUFDQUQsRUFBQXY2RCxHQUFBa0osRUFBQTRKLFlB
QUEwbkQsR0FDQXR4RCxFQUFBNkosaUJBQUF5bkQsR0FBQSxHQUdBLElBQUFDLEdBQUFyNEIsRUFB
QWp2QixHQUFBLEVBQ0FrbkQsR0FBQXI2RCxHQUFBeTZELENBR0EsSUFBQUMsR0FBQXh4RCxFQUFB
b0osZUFBQW1vRCxFQUFBeHlELEVBQUF1SyxFQUFBQyxFQUFBN0ksRUFBQWt3RCxFQUNBUSxHQUFB
MzFELEtBQUErMUQsSUFJQSxJQUFBMTZELElBQUFvNkQsSUFDQUEsRUFBQTE3RCxlQUFBc0IsSUFB
QXE2RCxLQUFBMzdELGVBQUFzQixLQUNBdzZELEVBQUFKLEVBQUFwNkQsR0FDQXU2RCxFQUFBdjZE
LEdBQUFrSixFQUFBNEosWUFBQTBuRCxHQUNBdHhELEVBQUE2SixpQkFBQXluRCxHQUFBLE1BWUFH
LGdCQUFBLFNBQUFDLEVBQUE1bkQsR0FDQSxPQUFBaFQsS0FBQTQ2RCxHQUNBLEdBQUFBLEVBQUFs
OEQsZUFBQXNCLEdBQUEsQ0FDQSxHQUFBNjZELEdBQUFELEVBQUE1NkQsRUFDQWtKLEdBQUE2Sixp
QkFBQThuRCxFQUFBN25ELEtBTUFoVixHQUFBRCxRQUFBaThELElySXd1YzhCNzdELEtBQUtKLEVB
QVNILEVBQW9CLE1BSTFELFNBQVNJLEVBQVFELEVBQVNILEdzSXozY2hDLFlBRUEsSUFBQWtzQixH
QUFBbHNCLEVBQUEsSUFDQWs5RCxFQUFBbDlELEVBQUEsS0FPQW05RCxHQUNBL3FDLHVCQUFBOHFD
LEVBQUFFLGtDQUVBanJDLHNCQUFBakcsRUFBQUQsaUNBR0E3ckIsR0FBQUQsUUFBQWc5RCxHdEl5
NGNNLFNBQVMvOEQsRUFBUUQsRUFBU0gsR3VJejVjaEMsWUE4QkEsU0FBQXE5RCxHQUFBdm1ELElB
UUEsUUFBQXdtRCxHQUFBeG1ELEVBQUFpQixJQU9BLFFBQUF3bEQsR0FBQXptRCxHQUNBLFNBQUFB
LEVBQUFqVyxZQUFBaVcsRUFBQWpXLFVBQUFpa0Msa0JBR0EsUUFBQTA0QixHQUFBMW1ELEdBQ0Es
U0FBQUEsRUFBQWpXLFlBQUFpVyxFQUFBalcsVUFBQW01QyxzQkFoREEsR0FBQXB6QyxHQUFBNUcs
RUFBQSxHQUNBbU0sRUFBQW5NLEVBQUEsR0FFQXlXLEVBQUF6VyxFQUFBLElBQ0FreUIsRUFBQWx5
QixFQUFBLElBQ0FpUSxFQUFBalEsRUFBQSxJQUNBcVosRUFBQXJaLEVBQUEsSUFDQWtkLEVBQUFs
ZCxFQUFBLElBRUE4bUMsR0FEQTltQyxFQUFBLEdBQ0FBLEVBQUEsS0FDQXNMLEVBQUF0TCxFQUFB
LElBTUFrZSxFQUFBbGUsRUFBQSxJQUVBaXFCLEdBREFqcUIsRUFBQSxHQUNBQSxFQUFBLEtBQ0F1
MUIsRUFBQXYxQixFQUFBLElBR0F5OUQsR0FGQXo5RCxFQUFBLElBR0EwOUQsWUFBQSxFQUNBQyxV
QUFBLEVBQ0FDLG9CQUFBLEdBSUFQLEdBQUF4OEQsVUFBQWtrQyxPQUFBLFdBQ0EsR0FBQWp1QixH
QUFBb0csRUFBQUcsSUFBQS9iLE1BQUEwSixnQkFBQUMsS0FDQThNLEVBQUFqQixFQUFBeFYsS0FB
QXdXLE1BQUF4VyxLQUFBMEssUUFBQTFLLEtBQUFxNEMsUUFFQSxPQURBMmpCLEdBQUF4bUQsRUFB
QWlCLEdBQ0FBLEVBb0VBLElBQUE4bEQsR0FBQSxFQUtBcjBCLEdBUUFDLFVBQUEsU0FBQTF4QixH
QUNBelcsS0FBQTBKLGdCQUFBK00sRUFDQXpXLEtBQUEwWSxZQUFBLEVBQ0ExWSxLQUFBdzhELGVB
QUEsS0FDQXg4RCxLQUFBaWtDLFVBQUEsS0FDQWprQyxLQUFBK0YsWUFBQSxLQUNBL0YsS0FBQWdq
QyxtQkFBQSxLQUdBaGpDLEtBQUF3SyxtQkFBQSxLQUNBeEssS0FBQXN5QixnQkFBQSxLQUNBdHlC
LEtBQUFneUIsbUJBQUEsS0FDQWh5QixLQUFBaXlCLHNCQUFBLEVBQ0FqeUIsS0FBQTZ4QixxQkFB
QSxFQUVBN3hCLEtBQUFrbUMsa0JBQUEsS0FDQWxtQyxLQUFBa0UsbUJBQUEsS0FDQWxFLEtBQUFt
VSxTQUFBLEtBQ0FuVSxLQUFBNkksWUFBQSxFQUNBN0ksS0FBQWlpQyxpQkFBQSxLQUdBamlDLEtB
QUFxSixrQkFBQSxLQUdBckosS0FBQXk4RCw2QkFBQSxHQWtCQXJwRCxlQUFBLFNBQUFySyxFQUFB
dUssRUFBQUMsRUFBQTdJLEdBR0ExSyxLQUFBbVUsU0FBQXpKLEVBQ0ExSyxLQUFBNkksWUFBQTB6
RCxJQUNBdjhELEtBQUErRixZQUFBdU4sRUFDQXRULEtBQUFnakMsbUJBQUF6dkIsQ0FFQSxJQVVB
bXBELEdBVkFDLEVBQUEzOEQsS0FBQTBKLGdCQUFBOE0sTUFDQW9tRCxFQUFBNThELEtBQUE2OEQs
Z0JBQUFueUQsR0FFQThLLEVBQUF4VixLQUFBMEosZ0JBQUFDLEtBRUFtekQsRUFBQS96RCxFQUFB
ZzBELGlCQUdBQyxFQUFBZixFQUFBem1ELEdBQ0FwUixFQUFBcEUsS0FBQWk5RCxvQkFBQUQsRUFB
QUwsRUFBQUMsRUFBQUUsRUFJQUUsSUFBQSxNQUFBNTRELEdBQUEsTUFBQUEsRUFBQXEvQixPQU9B
eTRCLEVBQUExbUQsR0FDQXhWLEtBQUF3OEQsZUFBQUwsRUFBQUUsVUFFQXI4RCxLQUFBdzhELGVB
QUFMLEVBQUFDLGFBVEFNLEVBQUF0NEQsRUFDQTQzRCxFQUFBeG1ELEVBQUFrbkQsR0FDQSxPQUFB
dDRELFFBQUEsR0FBQStRLEVBQUFPLGVBQUF0UixHQUFBLE9BQUFrQixFQUFBLE1BQUFrUSxFQUFB
MmIsYUFBQTNiLEVBQUExVSxNQUFBLGFBQ0FzRCxFQUFBLEdBQUEyM0QsR0FBQXZtRCxHQUNBeFYs
S0FBQXc4RCxlQUFBTCxFQUFBRyxvQkF3QkFsNEQsR0FBQW9TLE1BQUFtbUQsRUFDQXY0RCxFQUFB
c0csUUFBQWt5RCxFQUNBeDRELEVBQUFrMEMsS0FBQTE3QixFQUNBeFksRUFBQWkwQyxRQUFBeWtC
LEVBRUE5OEQsS0FBQWlrQyxVQUFBNy9CLEVBR0F3WCxFQUFBSyxJQUFBN1gsRUFBQXBFLEtBZUEs
SUFBQXNnRCxHQUFBbDhDLEVBQUF5cEMsS0FDQW50QyxVQUFBNC9DLElBQ0FsOEMsRUFBQXlwQyxN
QUFBeVMsRUFBQSxNQUVBLGdCQUFBQSxJQUFBeHBDLE1BQUF3UixRQUFBZzRCLEdBQUFoN0MsRUFB
QSxNQUFBdEYsS0FBQTZKLFdBQUEsa0NBRUE3SixLQUFBZ3lCLG1CQUFBLEtBQ0FoeUIsS0FBQWl5
QixzQkFBQSxFQUNBanlCLEtBQUE2eEIscUJBQUEsQ0FFQSxJQUFBcGUsRUFtQkEsT0FqQkFBLEdB
REFyUCxFQUFBODRELHFCQUNBbDlELEtBQUFtOUQscUNBQUFULEVBQUFwcEQsRUFBQUMsRUFBQXhL
LEVBQUEyQixHQUVBMUssS0FBQW85RCxvQkFBQVYsRUFBQXBwRCxFQUFBQyxFQUFBeEssRUFBQTJC
LEdBR0F0RyxFQUFBa3FDLG1CQVFBdmxDLEVBQUE0SyxxQkFBQXZKLFFBQUFoRyxFQUFBa3FDLGtC
QUFBbHFDLEdBSUFxUCxHQUdBd3BELG9CQUFBLFNBQUFELEVBQUFMLEVBQUFDLEVBQUFFLEdBU0Es
TUFBQTk4RCxNQUFBcTlELGdDQUFBTCxFQUFBTCxFQUFBQyxFQUFBRSxJQUlBTyxnQ0FBQSxTQUFB
TCxFQUFBTCxFQUFBQyxFQUFBRSxHQUNBLEdBQUF0bkQsR0FBQXhWLEtBQUEwSixnQkFBQUMsSUFF
QSxPQUFBcXpELEdBTUEsR0FBQXhuRCxHQUFBbW5ELEVBQUFDLEVBQUFFLEdBV0F0bkQsRUFBQW1u
RCxFQUFBQyxFQUFBRSxJQUlBSyxxQ0FBQSxTQUFBVCxFQUFBcHBELEVBQUFDLEVBQUF4SyxFQUFB
MkIsR0FDQSxHQUFBK0ksR0FDQXluQixFQUFBbnlCLEVBQUFteUIsWUFDQSxLQUNBem5CLEVBQUF6
VCxLQUFBbzlELG9CQUFBVixFQUFBcHBELEVBQUFDLEVBQUF4SyxFQUFBMkIsR0FDSyxNQUFBcEss
R0FFTHlJLEVBQUFveUIsU0FBQUQsR0FDQWw3QixLQUFBaWtDLFVBQUFpNUIscUJBQUE1OEQsR0FD
QU4sS0FBQWd5QixxQkFDQWh5QixLQUFBaWtDLFVBQUE0SixNQUFBN3RDLEtBQUFzOUQscUJBQUF0
OUQsS0FBQWlrQyxVQUFBenRCLE1BQUF4VyxLQUFBaWtDLFVBQUF2NUIsVUFFQXd3QixFQUFBbnlC
LEVBQUFteUIsYUFFQWw3QixLQUFBa0UsbUJBQUEyUCxrQkFBQSxHQUNBOUssRUFBQW95QixTQUFB
RCxHQUlBem5CLEVBQUF6VCxLQUFBbzlELG9CQUFBVixFQUFBcHBELEVBQUFDLEVBQUF4SyxFQUFB
MkIsR0FFQSxNQUFBK0ksSUFHQTJwRCxvQkFBQSxTQUFBVixFQUFBcHBELEVBQUFDLEVBQUF4SyxF
QUFBMkIsR0FDQSxHQUFBdEcsR0FBQXBFLEtBQUFpa0MsVUFFQXM1QixFQUFBLENBS0FuNUQsR0FB
QXk4QyxxQkFNQXo4QyxFQUFBeThDLHFCQUlBN2dELEtBQUFneUIscUJBQ0E1dEIsRUFBQXlwQyxN
QUFBN3RDLEtBQUFzOUQscUJBQUFsNUQsRUFBQW9TLE1BQUFwUyxFQUFBc0csV0FLQWhLLFNBQUFn
OEQsSUFDQUEsRUFBQTE4RCxLQUFBdzlELDRCQUdBLElBQUE3NUQsR0FBQTZoQyxFQUFBSSxRQUFB
ODJCLEVBQ0ExOEQsTUFBQWttQyxrQkFBQXZpQyxDQUNBLElBQUFvK0IsR0FBQS9oQyxLQUFBb29D
LDJCQUFBczBCLEVBQUEvNEQsSUFBQTZoQyxFQUFBRyxNQUVBM2xDLE1BQUFrRSxtQkFBQTY5QixD
QUVBLElBQUF0dUIsR0FBQXpKLEVBQUFvSixlQUFBMnVCLEVBQUFoNUIsRUFBQXVLLEVBQUFDLEVB
QUF2VCxLQUFBc2tDLHFCQUFBNTVCLEdBQUE2eUQsRUFTQSxPQUFBOXBELElBR0FHLFlBQUEsV0FD
QSxNQUFBNUosR0FBQTRKLFlBQUE1VCxLQUFBa0UscUJBU0EyUCxpQkFBQSxTQUFBQyxHQUNBLEdB
QUE5VCxLQUFBa0UsbUJBQUEsQ0FJQSxHQUFBRSxHQUFBcEUsS0FBQWlrQyxTQUVBLElBQUE3L0Is
RUFBQXNxQyx1QkFBQXRxQyxFQUFBcTRELDRCQUdBLEdBRkFyNEQsRUFBQXE0RCw2QkFBQSxFQUVB
M29ELEVBQUEsQ0FDQSxHQUFBaFQsR0FBQWQsS0FBQTZKLFVBQUEseUJBQ0FrTyxHQUFBZ1Ysc0JB
QUFqc0IsRUFBQXNELEVBQUFzcUMscUJBQUF6M0IsS0FBQTdTLFFBT0FBLEdBQUFzcUMsc0JBS0Ex
dUMsTUFBQWtFLHFCQUNBOEYsRUFBQTZKLGlCQUFBN1QsS0FBQWtFLG1CQUFBNFAsR0FDQTlULEtB
QUFrbUMsa0JBQUEsS0FDQWxtQyxLQUFBa0UsbUJBQUEsS0FDQWxFLEtBQUFpa0MsVUFBQSxNQU1B
amtDLEtBQUFneUIsbUJBQUEsS0FDQWh5QixLQUFBaXlCLHNCQUFBLEVBQ0FqeUIsS0FBQTZ4Qixx
QkFBQSxFQUNBN3hCLEtBQUFxSixrQkFBQSxLQUNBckosS0FBQXN5QixnQkFBQSxLQUlBdHlCLEtB
QUFtVSxTQUFBLEtBQ0FuVSxLQUFBMFksWUFBQSxFQUNBMVksS0FBQWlpQyxpQkFBQSxLQUtBcm1C
LEVBQUFDLE9BQUF6WCxLQWlCQXE1RCxhQUFBLFNBQUEveUQsR0FDQSxHQUFBOEssR0FBQXhWLEtB
QUEwSixnQkFBQUMsS0FDQW1qQyxFQUFBdDNCLEVBQUFzM0IsWUFDQSxLQUFBQSxFQUNBLE1BQUFs
d0IsRUFFQSxJQUFBOGdELEtBQ0EsUUFBQUMsS0FBQTd3QixHQUNBNHdCLEVBQUFDLEdBQUFqekQs
RUFBQWl6RCxFQUVBLE9BQUFELElBV0FiLGdCQUFBLFNBQUFueUQsR0FDQSxHQUFBZ3pELEdBQUEx
OUQsS0FBQXk5RCxhQUFBL3lELEVBT0EsT0FBQWd6RCxJQVFBcDVCLHFCQUFBLFNBQUFzNUIsR0FD
QSxHQUVBQyxHQUZBcm9ELEVBQUF4VixLQUFBMEosZ0JBQUFDLEtBQ0F2RixFQUFBcEUsS0FBQWlr
QyxTQWdCQSxJQWJBNy9CLEVBQUErcEMsa0JBU0EwdkIsRUFBQXo1RCxFQUFBK3BDLG1CQUlBMHZC
LEVBQUEsQ0FDQSxnQkFBQXJvRCxHQUFBMDNCLGtCQUFBNW5DLEVBQUEsTUFBQXRGLEtBQUE2SixX
QUFBLGlDQUlBLFFBQUEvSSxLQUFBKzhELEdBQ0EvOEQsSUFBQTBVLEdBQUEwM0Isa0JBQUEsT0FB
QTVuQyxFQUFBLE1BQUF0RixLQUFBNkosV0FBQSwwQkFBQS9JLEVBRUEsT0FBQStKLE1BQXVCK3lE
LEVBQUFDLEdBRXZCLE1BQUFELElBV0FFLG1CQUFBLFNBQUFsWCxFQUFBQyxFQUFBQyxLQU1BOXlD
LGlCQUFBLFNBQUFDLEVBQUFsTCxFQUFBc3BCLEdBQ0EsR0FBQW5lLEdBQUFsVSxLQUFBMEosZ0JB
Q0FxMEQsRUFBQS85RCxLQUFBbVUsUUFFQW5VLE1BQUFzeUIsZ0JBQUEsS0FFQXR5QixLQUFBK2dE
LGdCQUFBaDRDLEVBQUFtTCxFQUFBRCxFQUFBOHBELEVBQUExckMsSUFVQXBvQix5QkFBQSxTQUFB
bEIsR0FDQSxNQUFBL0ksS0FBQXN5QixnQkFDQXRvQixFQUFBZ0ssaUJBQUFoVSxVQUFBc3lCLGdC
QUFBdnBCLEVBQUEvSSxLQUFBbVUsVUFDSyxPQUFBblUsS0FBQWd5QixvQkFBQWh5QixLQUFBNnhC
LG9CQUNMN3hCLEtBQUErZ0QsZ0JBQUFoNEMsRUFBQS9JLEtBQUEwSixnQkFBQTFKLEtBQUEwSixn
QkFBQTFKLEtBQUFtVSxTQUFBblUsS0FBQW1VLFVBRUFuVSxLQUFBd0ssbUJBQUEsTUFtQkF1MkMs
Z0JBQUEsU0FBQWg0QyxFQUFBaTFELEVBQUFDLEVBQUFDLEVBQUFDLEdBQ0EsR0FBQS81RCxHQUFB
cEUsS0FBQWlrQyxTQUNBLE9BQUE3L0IsRUFBQWtCLEVBQUEsTUFBQXRGLEtBQUE2SixXQUFBLGlD
QUVBLElBQ0F3b0IsR0FEQStyQyxHQUFBLENBSUFwK0QsTUFBQW1VLFdBQUFncUQsRUFDQTlyQyxF
QUFBanVCLEVBQUFzRyxTQUVBMm5CLEVBQUFyeUIsS0FBQTY4RCxnQkFBQXNCLEdBQ0FDLEdBQUEs
RUFHQSxJQUFBQyxHQUFBTCxFQUFBeG5ELE1BQ0ErMEIsRUFBQTB5QixFQUFBem5ELEtBR0F3bkQs
S0FBQUMsSUFDQUcsR0FBQSxHQU1BQSxHQUFBaDZELEVBQUFxcUMsMkJBTUFycUMsRUFBQXFxQyww
QkFBQWxELEVBQUFsWixFQUlBLElBQUFpc0MsR0FBQXQrRCxLQUFBczlELHFCQUFBL3hCLEVBQUFs
WixHQUNBa3NDLEdBQUEsQ0FFQXYrRCxNQUFBNnhCLHNCQUNBenRCLEVBQUFxbkMsc0JBTUE4eUIs
RUFBQW42RCxFQUFBcW5DLHNCQUFBRixFQUFBK3lCLEVBQUFqc0MsR0FHQXJ5QixLQUFBdzhELGlC
QUFBTCxFQUFBRSxZQUNBa0MsR0FBQTUxQyxFQUFBMDFDLEVBQUE5eUIsS0FBQTVpQixFQUFBdmtC
LEVBQUF5cEMsTUFBQXl3QixLQVNBdCtELEtBQUF3SyxtQkFBQSxLQUNBK3pELEdBQ0F2K0QsS0FB
QTZ4QixxQkFBQSxFQUVBN3hCLEtBQUF3K0Qsd0JBQUFQLEVBQUExeUIsRUFBQSt5QixFQUFBanND
LEVBQUF0cEIsRUFBQW8xRCxLQUlBbitELEtBQUEwSixnQkFBQXUwRCxFQUNBaitELEtBQUFtVSxT
QUFBZ3FELEVBQ0EvNUQsRUFBQW9TLE1BQUErMEIsRUFDQW5uQyxFQUFBeXBDLE1BQUF5d0IsRUFD
QWw2RCxFQUFBc0csUUFBQTJuQixJQUlBaXJDLHFCQUFBLFNBQUE5bUQsRUFBQTlMLEdBQ0EsR0FB
QXRHLEdBQUFwRSxLQUFBaWtDLFVBQ0FqNEIsRUFBQWhNLEtBQUFneUIsbUJBQ0FueEIsRUFBQWIs
S0FBQWl5QixvQkFJQSxJQUhBanlCLEtBQUFpeUIsc0JBQUEsRUFDQWp5QixLQUFBZ3lCLG1CQUFB
LE1BRUFobUIsRUFDQSxNQUFBNUgsR0FBQXlwQyxLQUdBLElBQUFodEMsR0FBQSxJQUFBbUwsRUFB
QTFLLE9BQ0EsTUFBQTBLLEdBQUEsRUFJQSxRQURBc3lELEdBQUF6ekQsS0FBOEJoSyxFQUFBbUws
RUFBQSxHQUFBNUgsRUFBQXlwQyxPQUM5Qnh1QyxFQUFBd0IsRUFBQSxJQUFpQ3hCLEVBQUEyTSxF
QUFBMUssT0FBa0JqQyxJQUFBLENBQ25ELEdBQUFvL0QsR0FBQXp5RCxFQUFBM00sRUFDQXdMLEdB
QUF5ekQsRUFBQSxrQkFBQUcsS0FBQXgvRCxLQUFBbUYsRUFBQWs2RCxFQUFBOW5ELEVBQUE5TCxH
QUFBK3pELEdBR0EsTUFBQUgsSUFlQUUsd0JBQUEsU0FBQXZxRCxFQUFBczNCLEVBQUEreUIsRUFB
QWpzQyxFQUFBdHBCLEVBQUEyMUQsR0FDQSxHQUtBTCxHQUNBTSxFQUNBWixFQUxBMzVELEVBQUFw
RSxLQUFBaWtDLFVBRUEyNkIsRUFBQTloQyxRQUFBMTRCLEVBQUErcUMsbUJBSUF5dkIsS0FDQVAs
RUFBQWo2RCxFQUFBb1MsTUFDQW1vRCxFQUFBdjZELEVBQUF5cEMsTUFDQWt3QixFQUFBMzVELEVB
QUFzRyxTQUdBdEcsRUFBQTA4QyxxQkFNQTE4QyxFQUFBMDhDLG9CQUFBdlYsRUFBQSt5QixFQUFB
anNDLEdBSUFyeUIsS0FBQTBKLGdCQUFBdUssRUFDQWpVLEtBQUFtVSxTQUFBdXFELEVBQ0F0NkQs
RUFBQW9TLE1BQUErMEIsRUFDQW5uQyxFQUFBeXBDLE1BQUF5d0IsRUFDQWw2RCxFQUFBc0csUUFB
QTJuQixFQUVBcnlCLEtBQUE2K0QseUJBQUE5MUQsRUFBQTIxRCxHQUVBRSxHQU1BNzFELEVBQUE0
SyxxQkFBQXZKLFFBQUFoRyxFQUFBK3FDLG1CQUFBbDRCLEtBQUE3UyxFQUFBaTZELEVBQUFNLEVB
QUFaLEdBQUEzNUQsSUFXQXk2RCx5QkFBQSxTQUFBOTFELEVBQUEyQixHQUNBLEdBQUFvMEQsR0FB
QTkrRCxLQUFBa0UsbUJBQ0E2NkQsRUFBQUQsRUFBQXAxRCxnQkFDQXMxRCxFQUFBaC9ELEtBQUF3
OUQsNEJBRUFELEVBQUEsQ0FLQSxJQUFBdHBDLEVBQUE4cUMsRUFBQUMsR0FDQWgxRCxFQUFBZ0ss
aUJBQUE4cUQsRUFBQUUsRUFBQWoyRCxFQUFBL0ksS0FBQXNrQyxxQkFBQTU1QixRQUNLLENBQ0ws
R0FBQXUwRCxHQUFBajFELEVBQUE0SixZQUFBa3JELEVBQ0E5MEQsR0FBQTZKLGlCQUFBaXJELEdB
QUEsRUFFQSxJQUFBbjdELEdBQUE2aEMsRUFBQUksUUFBQW81QixFQUNBaC9ELE1BQUFrbUMsa0JB
QUF2aUMsQ0FDQSxJQUFBbytCLEdBQUEvaEMsS0FBQW9vQywyQkFBQTQyQixFQUFBcjdELElBQUE2
aEMsRUFBQUcsTUFFQTNsQyxNQUFBa0UsbUJBQUE2OUIsQ0FFQSxJQUFBbTlCLEdBQUFsMUQsRUFB
QW9KLGVBQUEydUIsRUFBQWg1QixFQUFBL0ksS0FBQStGLFlBQUEvRixLQUFBZ2pDLG1CQUFBaGpD
LEtBQUFza0MscUJBQUE1NUIsR0FBQTZ5RCxFQVNBdjlELE1BQUFtL0QsdUJBQUFGLEVBQUFDLEVB
QUFKLEtBU0FLLHVCQUFBLFNBQUFGLEVBQUFDLEVBQUFFLEdBQ0F4dUMsRUFBQUMsc0JBQUFvdUMs
RUFBQUMsRUFBQUUsSUFNQUMsK0NBQUEsV0FDQSxHQUNBM0MsR0FEQXQ0RCxFQUFBcEUsS0FBQWlr
QyxTQW9CQSxPQVpBeTRCLEdBQUF0NEQsRUFBQXEvQixVQWtCQSs1QiwwQkFBQSxXQUNBLEdBQUFk
LEVBQ0EsSUFBQTE4RCxLQUFBdzhELGlCQUFBTCxFQUFBRyxvQkFBQSxDQUNBM3RELEVBQUFDLFFB
QUE1TyxJQUNBLEtBQ0EwOEQsRUFBQTE4RCxLQUFBcS9ELGlEQUNPLFFBQ1Axd0QsRUFBQUMsUUFB
QSxVQUdBOHRELEdBQUExOEQsS0FBQXEvRCxnREFNQSxPQUZBLFFBQUEzQyxRQUFBLEdBQUF2bkQs
RUFBQU8sZUFBQWduRCxHQUFBLE9BQUFwM0QsRUFBQSxNQUFBdEYsS0FBQTZKLFdBQUEsMkJBRUE2
eUQsR0FXQTRDLFVBQUEsU0FBQTVyRCxFQUFBMVAsR0FDQSxHQUFBSSxHQUFBcEUsS0FBQXFLLG1C
QUNBLE9BQUFqRyxFQUFBa0IsRUFBQSxhQUNBLElBQUFpNkQsR0FBQXY3RCxFQUFBcUcsb0JBS0Fp
dUMsRUFBQWwwQyxFQUFBazBDLE9BQUExN0IsRUFBQXhZLEVBQUFrMEMsUUFBeURsMEMsRUFBQWsw
QyxJQUN6REEsR0FBQTVrQyxHQUFBNnJELEdBVUFDLFVBQUEsU0FBQTlyRCxHQUNBLEdBQUE0a0Ms
R0FBQXQ0QyxLQUFBcUssb0JBQUFpdUMsV0FDQUEsR0FBQTVrQyxJQVNBN0osUUFBQSxXQUNBLEdB
QUFGLEdBQUEzSixLQUFBMEosZ0JBQUFDLEtBQ0FtRCxFQUFBOU0sS0FBQWlrQyxXQUFBamtDLEtB
QUFpa0MsVUFBQW4zQixXQUNBLE9BQUFuRCxHQUFBd25CLGFBQUFya0IsS0FBQXFrQixhQUFBeG5C
LEVBQUE3SSxNQUFBZ00sS0FBQWhNLE1BQUEsTUFXQXVKLGtCQUFBLFdBQ0EsR0FBQWpHLEdBQUFw
RSxLQUFBaWtDLFNBQ0EsT0FBQWprQyxNQUFBdzhELGlCQUFBTCxFQUFBRyxvQkFDQSxLQUVBbDRE
LEdBSUFna0MsMkJBQUEsS0FHQXRwQyxHQUFBRCxRQUFBcXBDLEd2SXk2Y00sU0FBU3BwQyxFQUFR
RCxFQUFTSCxHd0kveGVoQyxZQUVBLElBQUE0SCxHQUFBNUgsRUFBQSxHQUNBK2dFLEVBQUEvZ0Us
RUFBQSxLQUNBd2pDLEVBQUF4akMsRUFBQSxJQUNBc0wsRUFBQXRMLEVBQUEsSUFDQW9KLEVBQUFw
SixFQUFBLEdBQ0FpVyxFQUFBalcsRUFBQSxLQUVBZ2hFLEVBQUFoaEUsRUFBQSxLQUNBdW5DLEVB
QUF2bkMsRUFBQSxJQUNBd2xDLEVBQUF4bEMsRUFBQSxJQUNBQSxHQUFBLEVBRUErZ0UsR0FBQUUs
UUFFQSxJQUFBQyxJQUNBRixjQUNBajhCLE9BQUF2QixFQUFBdUIsT0FDQWlCLHVCQUFBeEMsRUFB
QXdDLHVCQUNBNXVCLFFBQUFuQixFQUdBa3JELHdCQUFBLzNELEVBQUFVLGVBQ0FzM0Qsb0NBQUE1
N0IsRUFNQSxvQkFBQTY3QixpQ0FBQSxrQkFBQUEsZ0NBQUFKLFFBQ0FJLCtCQUFBSixRQUNBbHlD
LGVBQ0Fsb0IsMkJBQUFlLEVBQUFmLDJCQUNBTyxvQkFBQSxTQUFBMUIsR0FLQSxNQUhBQSxHQUFB
RixxQkFDQUUsRUFBQTZoQyxFQUFBN2hDLElBRUFBLEVBQ0FrQyxFQUFBUixvQkFBQTFCLEdBRUEs
T0FJQTQ3RCxNQUFBOTlCLEVBQ0ErOUIsV0FBQWoyRCxHQWtEQWxMLEdBQUFELFFBQUErZ0UsR3hJ
aXplTSxTQUFTOWdFLEVBQVFELEVBQVNILEd5SWw1ZWhDLFlBcURBLFNBQUE0d0IsR0FBQWpjLEdB
Q0EsR0FBQUEsRUFBQSxDQUNBLEdBQUFrRCxHQUFBbEQsRUFBQTNKLGdCQUFBaU4sUUFBQSxJQUNB
LElBQUFKLEVBQUEsQ0FDQSxHQUFBelYsR0FBQXlWLEVBQUExTSxTQUNBLElBQUEvSSxFQUNBLHlD
QUFBQSxFQUFBLE1BSUEsU0EyREEsUUFBQW8vRCxHQUFBbDhELEVBQUF3UyxHQUNBQSxJQUlBMnBE
LEVBQUFuOEQsRUFBQW84RCxRQUNBLE1BQUE1cEQsRUFBQTNSLFVBQUEsTUFBQTJSLEVBQUE2cEQs
d0JBQUEvNkQsRUFBQSxNQUFBdEIsRUFBQW84RCxLQUFBcDhELEVBQUEwRixnQkFBQWlOLE9BQUEs
K0JBQUEzUyxFQUFBMEYsZ0JBQUFpTixPQUFBOU0sVUFBQSxnQkFFQSxNQUFBMk0sRUFBQTZwRCww
QkFDQSxNQUFBN3BELEVBQUEzUixTQUFBUyxFQUFBLGFBQ0EsZ0JBQUFrUixHQUFBNnBELHlCQUFB
QyxJQUFBOXBELEdBQUE2cEQsd0JBQWdPLE9BQUEvNkQsRUFBQSxPQU9oTyxNQUFBa1IsRUFBQW01
QyxPQUFBLGdCQUFBbjVDLEdBQUFtNUMsTUFBOFBycUQsRUFBQSxLQUFBZ3FCLEVBQUF0ckIsSUFB
QSxRQUc5UCxRQUFBdThELEdBQUFuOEQsRUFBQTJVLEVBQUFDLEVBQUFqUSxHQUNBLEtBQUFBLFlB
QUF5M0QsSUFBQSxDQVFBLEdBQUFDLEdBQUFyOEQsRUFBQTQrQixtQkFDQTA5QixFQUFBRCxFQUFB
RSxPQUFBRixFQUFBRSxNQUFBaDlELFdBQUFpOUQsRUFDQXJrRCxFQUFBbWtELEVBQUFELEVBQUFF
LE1BQUFGLEVBQUFJLGNBQ0E1K0MsR0FBQWxKLEVBQUF3RCxHQUNBeFQsRUFBQTRLLHFCQUFBdkos
UUFBQTBPLEdBQ0ExVSxPQUNBMlUsbUJBQ0FDLGNBSUEsUUFBQUYsS0FDQSxHQUFBZ29ELEdBQUE5
Z0UsSUFDQTJZLEdBQUFHLFlBQUFnb0QsRUFBQTE4RCxLQUFBMDhELEVBQUEvbkQsaUJBQUErbkQs
RUFBQTluRCxVQUdBLFFBQUErbkQsS0FDQSxHQUFBMzhELEdBQUFwRSxJQUNBZ2hFLEdBQUFDLGlC
QUFBNzhELEdBR0EsUUFBQTg4RCxLQUNBLEdBQUE5OEQsR0FBQXBFLElBQ0FtaEUsR0FBQUYsaUJB
QUE3OEQsR0FHQSxRQUFBZzlELEtBQ0EsR0FBQWg5RCxHQUFBcEUsSUFDQXFoRSxHQUFBSixpQkFB
QTc4RCxHQTREQSxRQUFBazlELEtBQ0ExNkIsRUFBQUUsTUFBQTltQyxNQUdBLFFBQUF1aEUsS0FD
QSxHQUFBbjlELEdBQUFwRSxJQUdBb0UsR0FBQXNVLFlBQUEsT0FBQXBULEVBQUEsS0FDQSxJQUFB
N0IsR0FBQSs5RCxFQUFBcDlELEVBR0EsUUFGQVgsRUFBQSxPQUFBNkIsRUFBQSxNQUVBbEIsRUFB
QWc4RCxNQUNBLGFBQ0EsYUFDQWg4RCxFQUFBdTRCLGNBQUFnQixXQUFBbGMsRUFBQWMsaUJBQUEs
aUJBQUE5ZSxHQUNBLE1BQ0EsYUFDQSxZQUNBVyxFQUFBdTRCLGNBQUFnQixZQUVBLFFBQUE5dkIs
S0FBQTR6RCxHQUNBQSxFQUFBamlFLGVBQUFxTyxJQUNBekosRUFBQXU0QixjQUFBZ0IsVUFBQWw0
QixLQUFBZ2MsRUFBQWMsaUJBQUExVSxFQUFBNHpELEVBQUE1ekQsR0FBQXBLLEdBR0EsTUFDQSxj
QUNBVyxFQUFBdTRCLGNBQUFnQixXQUFBbGMsRUFBQWMsaUJBQUEsbUJBQUE5ZSxHQUNBLE1BQ0Es
V0FDQVcsRUFBQXU0QixjQUFBZ0IsV0FBQWxjLEVBQUFjLGlCQUFBLG1CQUFBOWUsR0FBQWdlLEVB
QUFjLGlCQUFBLGlCQUFBOWUsR0FDQSxNQUNBLFlBQ0FXLEVBQUF1NEIsY0FBQWdCLFdBQUFsYyxF
QUFBYyxpQkFBQSxtQkFBQTllLEdBQUFnZSxFQUFBYyxpQkFBQSxxQkFBQTllLEdBQ0EsTUFDQSxh
QUNBLGFBQ0EsZUFDQVcsRUFBQXU0QixjQUFBZ0IsV0FBQWxjLEVBQUFjLGlCQUFBLHVCQUFBOWUs
S0FLQSxRQUFBaStELEtBQ0Fwa0MsRUFBQVEsa0JBQUE5OUIsTUE4Q0EsUUFBQTJoRSxHQUFBanFE
LEdBQ0FsWSxFQUFBUCxLQUFBMmlFLEVBQUFscUQsS0FDQW1xRCxFQUFBcnhELEtBQUFrSCxHQUFB
LE9BQUFwUyxFQUFBLEtBQUFvUyxHQUNBa3FELEVBQUFscUQsSUFBQSxHQUlBLFFBQUFvcUQsR0FB
QXh4QyxFQUFBOVosR0FDQSxNQUFBOFosR0FBQTNFLFFBQUEsZUFBQW5WLEVBQUFnUyxHQW1CQSxR
QUFBdTVDLEdBQUF0ckQsR0FDQSxHQUFBaUIsR0FBQWpCLEVBQUE5TSxJQUNBZzRELEdBQUFqcUQs
R0FDQTFYLEtBQUEwSixnQkFBQStNLEVBQ0F6VyxLQUFBb2dFLEtBQUExb0QsRUFBQWhILGNBQ0Ex
USxLQUFBZ2lFLGNBQUEsS0FDQWhpRSxLQUFBOEUsa0JBQUEsS0FDQTlFLEtBQUFpaUUsZUFBQSxL
QUNBamlFLEtBQUFraUUsbUJBQUEsS0FDQWxpRSxLQUFBc0UsVUFBQSxLQUNBdEUsS0FBQStGLFlB
QUEsS0FDQS9GLEtBQUEwWSxZQUFBLEVBQ0ExWSxLQUFBb0YsT0FBQSxFQUNBcEYsS0FBQWdqQyxt
QkFBQSxLQUNBaGpDLEtBQUEyOEIsY0FBQSxLQUNBMzhCLEtBQUFpaUMsaUJBQUEsS0FDQWppQyxL
QUFBMEUsT0FBQSxFQW5YQSxHQUFBWSxHQUFBNUcsRUFBQSxHQUNBbU0sRUFBQW5NLEVBQUEsR0FF
QXV1RCxFQUFBdnVELEVBQUEsS0FDQW14RCxFQUFBbnhELEVBQUEsS0FDQXNSLEVBQUF0UixFQUFB
LElBQ0F1UixFQUFBdlIsRUFBQSxJQUNBc0gsRUFBQXRILEVBQUEsSUFDQWs5QixFQUFBbDlCLEVB
QUEsSUFDQWlhLEVBQUFqYSxFQUFBLElBQ0FtWixFQUFBblosRUFBQSxJQUNBK2lCLEVBQUEvaUIs
RUFBQSxJQUNBdUgsRUFBQXZILEVBQUEsSUFDQTRILEVBQUE1SCxFQUFBLEdBQ0FzaUUsRUFBQXRp
RSxFQUFBLEtBQ0EyaUUsRUFBQTNpRSxFQUFBLEtBQ0E0K0IsRUFBQTUrQixFQUFBLElBQ0F5aUUs
RUFBQXppRSxFQUFBLEtBRUF5akUsR0FEQXpqRSxFQUFBLEdBQ0FBLEVBQUEsTUFDQThoRSxFQUFB
OWhFLEVBQUEsS0FHQXVuQixHQURBdm5CLEVBQUEsR0FDQUEsRUFBQSxLQUlBa29DLEdBSEFsb0Ms
RUFBQSxHQUNBQSxFQUFBLElBQ0FBLEVBQUEsSUFDQUEsRUFBQSxLQUlBaUcsR0FIQWpHLEVBQUEs
SUFDQUEsRUFBQSxHQUVBdUgsR0FDQXFULEVBQUFYLEVBQUFXLGVBQ0Frb0QsRUFBQWw3RCxFQUFB
UixvQkFDQW1jLEVBQUFSLEVBQUFRLFNBQ0E5SSxFQUFBdEIsRUFBQXNCLHdCQUdBaXBELEdBQXFC
NzhDLFFBQUEsRUFBQXNqQixRQUFBLEdBRXJCdzVCLEVBQUEsUUFDQS9CLEVBQUEsU0FDQW5xRCxH
QUNBdFIsU0FBQSxLQUNBdzdELHdCQUFBLEtBQ0FpQywrQkFBQSxNQUlBMUIsRUFBQSxHQWtLQWEs
R0FDQWhrRCxTQUFBLFFBQ0FLLFdBQUEsVUFDQUMsa0JBQUEsaUJBQ0FrQixrQkFBQSxpQkFDQUMs
V0FBQSxVQUNBQyxhQUFBLFlBQ0FDLFNBQUEsUUFDQUMsU0FBQSxRQUNBTSxjQUFBLGFBQ0FDLGtC
QUFBLGlCQUNBQyxhQUFBLFlBQ0FPLFNBQUEsUUFDQUMsUUFBQSxPQUNBQyxXQUFBLFVBQ0FDLFlB
QUEsV0FDQUMsY0FBQSxhQUNBRSxVQUFBLFNBQ0FDLFdBQUEsVUFDQUUsV0FBQSxVQUNBQyxXQUFB
LFVBQ0FFLGNBQUEsYUFDQU0sZ0JBQUEsZUFDQUMsV0FBQSxXQXNEQWdoRCxHQUNBamYsTUFBQSxF
QUNBa2YsTUFBQSxFQUNBQyxJQUFBLEVBQ0FsZixLQUFBLEVBQ0FtZixPQUFBLEVBQ0FDLElBQUEs
RUFDQUMsS0FBQSxFQUNBM2lDLE9BQUEsRUFDQTRpQyxRQUFBLEVBQ0FDLE1BQUEsRUFDQUMsTUFB
QSxFQUNBdGYsT0FBQSxFQUNBdmdELFFBQUEsRUFDQTRqQyxPQUFBLEVBQ0FrOEIsS0FBQSxHQUlB
QyxHQUNBQyxTQUFBLEVBQ0FDLEtBQUEsRUFDQUMsVUFBQSxHQU1BakQsRUFBQXQxRCxHQUNBdzRE
LFVBQUEsR0FDQ2QsR0FNRFYsRUFBQSw4QkFDQUQsS0FDQXBpRSxLQUF1QkEsZUFhdkI4akUsR0FB
QSxDQXVDQXZCLEdBQUE1d0MsWUFBQSxvQkFFQTR3QyxFQUFBd0IsT0FZQW53RCxlQUFBLFNBQUFy
SyxFQUFBdUssRUFBQUMsRUFBQTdJLEdBQ0ExSyxLQUFBMFksWUFBQTRxRCxLQUNBdGpFLEtBQUFv
RixPQUFBbU8sRUFBQWl3RCxhQUNBeGpFLEtBQUErRixZQUFBdU4sRUFDQXRULEtBQUFnakMsbUJB
QUF6dkIsQ0FFQSxJQUFBaUQsR0FBQXhXLEtBQUEwSixnQkFBQThNLEtBRUEsUUFBQXhXLEtBQUFv
Z0UsTUFDQSxZQUNBLFdBQ0EsYUFDQSxVQUNBLFdBQ0EsYUFDQSxhQUNBLFlBQ0FwZ0UsS0FBQTI4
QixlQUNBZ0IsVUFBQSxNQUVBNTBCLEVBQUE0SyxxQkFBQXZKLFFBQUFtM0QsRUFBQXZoRSxLQUNB
LE1BQ0EsYUFDQWdoRSxFQUFBeGpDLGFBQUF4OUIsS0FBQXdXLEVBQUFsRCxHQUNBa0QsRUFBQXdx
RCxFQUFBempDLGFBQUF2OUIsS0FBQXdXLEdBQ0F6TixFQUFBNEsscUJBQUF2SixRQUFBazNELEVB
QUF0aEUsTUFDQStJLEVBQUE0SyxxQkFBQXZKLFFBQUFtM0QsRUFBQXZoRSxLQUNBLE1BQ0EsY0FD
QXFoRSxFQUFBN2pDLGFBQUF4OUIsS0FBQXdXLEVBQUFsRCxHQUNBa0QsRUFBQTZxRCxFQUFBOWpD
LGFBQUF2OUIsS0FBQXdXLEVBQ0EsTUFDQSxjQUNBOG1CLEVBQUFFLGFBQUF4OUIsS0FBQXdXLEVB
QUFsRCxHQUNBa0QsRUFBQThtQixFQUFBQyxhQUFBdjlCLEtBQUF3VyxHQUNBek4sRUFBQTRLLHFC
QUFBdkosUUFBQW0zRCxFQUFBdmhFLEtBQ0EsTUFDQSxnQkFDQW1oRSxFQUFBM2pDLGFBQUF4OUIs
S0FBQXdXLEVBQUFsRCxHQUNBa0QsRUFBQTJxRCxFQUFBNWpDLGFBQUF2OUIsS0FBQXdXLEdBQ0F6
TixFQUFBNEsscUJBQUF2SixRQUFBazNELEVBQUF0aEUsTUFDQStJLEVBQUE0SyxxQkFBQXZKLFFB
QUFtM0QsRUFBQXZoRSxNQUlBa2dFLEVBQUFsZ0UsS0FBQXdXLEVBSUEsSUFBQTdGLEdBQ0E4eUQs
Q0FDQSxPQUFBbndELEdBQ0EzQyxFQUFBMkMsRUFBQTB1RCxjQUNBeUIsRUFBQW53RCxFQUFBOHNE
LE1BQ0s3c0QsRUFBQTZzRCxPQUNMenZELEVBQUE0QyxFQUFBeXVELGNBQ0F5QixFQUFBbHdELEVB
QUE2c0QsT0FFQSxNQUFBenZELE9BQUFWLEVBQUFvVyxLQUFBLGtCQUFBbzlDLEtBQ0E5eUQsRUFB
QVYsRUFBQWhCLE1BRUEwQixJQUFBVixFQUFBaEIsT0FDQSxRQUFBalAsS0FBQW9nRSxLQUNBenZE
LEVBQUFWLEVBQUFvVyxJQUNPLFNBQUFybUIsS0FBQW9nRSxPQUNQenZELEVBQUFWLEVBQUFtYixT
QUdBcHJCLEtBQUFnaUUsY0FBQXJ4RCxDQUdBLElBY0EreUQsRUFDQSxJQUFBMzZELEVBQUF3NUIs
aUJBQUEsQ0FDQSxHQUNBb2hDLEdBREFubkQsRUFBQWpKLEVBQUFzdEQsY0FFQSxJQUFBbHdELElB
QUFWLEVBQUFoQixLQUNBLGNBQUFqUCxLQUFBb2dFLEtBQUEsQ0FHQSxHQUFBd0QsR0FBQXBuRCxF
QUFBOVYsY0FBQSxPQUNBaUQsRUFBQTNKLEtBQUEwSixnQkFBQUMsSUFDQWk2RCxHQUFBdDlDLFVB
QUEsSUFBQTNjLEVBQUEsTUFBQUEsRUFBQSxJQUNBZzZELEVBQUFDLEVBQUFqOUMsWUFBQWk5QyxF
QUFBNStELGdCQUVBMitELEdBRFNudEQsRUFBQWdTLEdBQ1RoTSxFQUFBOVYsY0FBQTFHLEtBQUEw
SixnQkFBQUMsS0FBQTZNLEVBQUFnUyxJQUtBaE0sRUFBQTlWLGNBQUExRyxLQUFBMEosZ0JBQUFD
LFVBR0FnNkQsR0FBQW5uRCxFQUFBcW5ELGdCQUFBbHpELEVBQUEzUSxLQUFBMEosZ0JBQUFDLEtB
RUFyRCxHQUFBbkMsYUFBQW5FLEtBQUEyakUsR0FDQTNqRSxLQUFBMEUsUUFBQUMsRUFBQUMsb0JB
Q0E1RSxLQUFBK0YsYUFDQTYxQixFQUFBSSxvQkFBQTJuQyxHQUVBM2pFLEtBQUE4akUscUJBQUEs
S0FBQXR0RCxFQUFBek4sRUFDQSxJQUFBZzdELEdBQUEvekQsRUFBQTJ6RCxFQUNBM2pFLE1BQUFn
a0UsdUJBQUFqN0QsRUFBQXlOLEVBQUE5TCxFQUFBcTVELEdBQ0FMLEVBQUFLLE1BQ0ssQ0FDTCxH
QUFBRSxHQUFBamtFLEtBQUFra0Usb0NBQUFuN0QsRUFBQXlOLEdBQ0EydEQsRUFBQW5rRSxLQUFB
b2tFLHFCQUFBcjdELEVBQUF5TixFQUFBOUwsRUFFQWc1RCxJQURBUyxHQUFBNUIsRUFBQXZpRSxL
QUFBb2dFLE1BQ0E2RCxFQUFBLEtBRUFBLEVBQUEsSUFBQUUsRUFBQSxLQUFBbmtFLEtBQUEwSixn
QkFBQUMsS0FBQSxJQUlBLE9BQUEzSixLQUFBb2dFLE1BQ0EsWUFDQXIzRCxFQUFBNEsscUJBQUF2
SixRQUFBMjJELEVBQUEvZ0UsTUFDQXdXLEVBQUE4OEIsV0FDQXZxQyxFQUFBNEsscUJBQUF2SixR
QUFBNmlELEVBQUFDLGtCQUFBbHRELEtBRUEsTUFDQSxnQkFDQStJLEVBQUE0SyxxQkFBQXZKLFFB
QUE4MkQsRUFBQWxoRSxNQUNBd1csRUFBQTg4QixXQUNBdnFDLEVBQUE0SyxxQkFBQXZKLFFBQUE2
aUQsRUFBQUMsa0JBQUFsdEQsS0FFQSxNQUNBLGNBQ0F3VyxFQUFBODhCLFdBQ0F2cUMsRUFBQTRL
LHFCQUFBdkosUUFBQTZpRCxFQUFBQyxrQkFBQWx0RCxLQUVBLE1BQ0EsY0FDQXdXLEVBQUE4OEIs
V0FDQXZxQyxFQUFBNEsscUJBQUF2SixRQUFBNmlELEVBQUFDLGtCQUFBbHRELEtBRUEsTUFDQSxj
QUNBK0ksRUFBQTRLLHFCQUFBdkosUUFBQWczRCxFQUFBcGhFLE1BSUEsTUFBQTBqRSxJQWdCQVEs
b0NBQUEsU0FBQW43RCxFQUFBeU4sR0FDQSxHQUFBd08sR0FBQSxJQUFBaGxCLEtBQUEwSixnQkFB
QUMsSUFFQSxRQUFBMDZELEtBQUE3dEQsR0FDQSxHQUFBQSxFQUFBaFgsZUFBQTZrRSxHQUFBLENB
R0EsR0FBQXJuQyxHQUFBeG1CLEVBQUE2dEQsRUFDQSxVQUFBcm5DLEVBR0EsR0FBQTdqQixFQUFB
M1osZUFBQTZrRSxHQUNBcm5DLEdBQ0F1akMsRUFBQXZnRSxLQUFBcWtFLEVBQUFybkMsRUFBQWow
QixPQUVPLENBQ1BzN0QsSUFBQWhDLElBQ0FybEMsSUFLQUEsRUFBQWg5QixLQUFBa2lFLG1CQUFB
cjNELEtBQTREMkwsRUFBQW01QyxRQUU1RDN5QixFQUFBNnlCLEVBQUFDLHNCQUFBOXlCLEVBQUFo
OUIsTUFFQSxJQUFBeVQsR0FBQSxJQUNBLE9BQUF6VCxLQUFBb2dFLE1BQUEwQixFQUFBOWhFLEtB
QUFvZ0UsS0FBQTVwRCxHQUNBTCxFQUFBM1csZUFBQTZrRSxLQUNBNXdELEVBQUFtb0IsRUFBQU0s
K0JBQUFtb0MsRUFBQXJuQyxJQUdBdnBCLEVBQUFtb0IsRUFBQUssd0JBQUFvb0MsRUFBQXJuQyxH
QUVBdnBCLElBQ0F1UixHQUFBLElBQUF2UixJQU9BLE1BQUExSyxHQUFBdTdELHFCQUNBdC9DLEdB
R0FobEIsS0FBQStGLGNBQ0FpZixHQUFBLElBQUE0VyxFQUFBRyx1QkFFQS9XLEdBQUEsSUFBQTRX
LEVBQUFDLGtCQUFBNzdCLEtBQUFvRixVQWFBZy9ELHFCQUFBLFNBQUFyN0QsRUFBQXlOLEVBQUE5
TCxHQUNBLEdBQUFzYSxHQUFBLEdBR0FzQixFQUFBOVAsRUFBQTZwRCx1QkFDQSxVQUFBLzVDLEVB
Q0EsTUFBQUEsRUFBQWkrQyxTQUNBdi9DLEVBQUFzQixFQUFBaStDLFlBRUssQ0FDTCxHQUFBQyxH
QUFBcEMsUUFBQTVyRCxHQUFBM1IsVUFBQTJSLEVBQUEzUixTQUFBLEtBQ0E0L0QsRUFBQSxNQUFB
RCxFQUFBLEtBQUFodUQsRUFBQTNSLFFBQ0EsVUFBQTIvRCxFQUVBeC9DLEVBQUFpQixFQUFBdStD
LE9BSU8sVUFBQUMsRUFBQSxDQUNQLEdBQUFySixHQUFBcDdELEtBQUEwa0UsY0FBQUQsRUFBQTE3
RCxFQUFBMkIsRUFDQXNhLEdBQUFvMkMsRUFBQTc0RCxLQUFBLEtBR0EsTUFBQTBnRSxHQUFBampF
LEtBQUFvZ0UsT0FBQSxPQUFBcDdDLEVBQUF1USxPQUFBLEdBV0EsS0FBQXZRLEVBRUFBLEdBSUFn
L0MsdUJBQUEsU0FBQWo3RCxFQUFBeU4sRUFBQTlMLEVBQUFxNUQsR0FFQSxHQUFBejlDLEdBQUE5
UCxFQUFBNnBELHVCQUNBLFVBQUEvNUMsRUFDQSxNQUFBQSxFQUFBaStDLFFBQ0F2MEQsRUFBQUgs
VUFBQWswRCxFQUFBejlDLEVBQUFpK0MsWUFFSyxDQUNMLEdBQUFDLEdBQUFwQyxRQUFBNXJELEdB
QUEzUixVQUFBMlIsRUFBQTNSLFNBQUEsS0FDQTQvRCxFQUFBLE1BQUFELEVBQUEsS0FBQWh1RCxF
QUFBM1IsUUFFQSxVQUFBMi9ELEVBS0EsS0FBQUEsR0FJQXgwRCxFQUFBRixVQUFBaTBELEVBQUFT
LE9BRU8sVUFBQUMsRUFFUCxPQURBckosR0FBQXA3RCxLQUFBMGtFLGNBQUFELEVBQUExN0QsRUFB
QTJCLEdBQ0FyTCxFQUFBLEVBQXVCQSxFQUFBKzdELEVBQUE5NUQsT0FBd0JqQyxJQUMvQzJRLEVB
QUFQLFdBQUFzMEQsRUFBQTNJLEVBQUEvN0QsTUFjQTJVLGlCQUFBLFNBQUFDLEVBQUFsTCxFQUFB
MkIsR0FDQSxHQUFBd0osR0FBQWxVLEtBQUEwSixlQUNBMUosTUFBQTBKLGdCQUFBdUssRUFDQWpV
LEtBQUErZ0QsZ0JBQUFoNEMsRUFBQW1MLEVBQUFELEVBQUF2SixJQWFBcTJDLGdCQUFBLFNBQUFo
NEMsRUFBQW1MLEVBQUFELEVBQUF2SixHQUNBLEdBQUFpNkQsR0FBQXp3RCxFQUFBc0MsTUFDQSsw
QixFQUFBdnJDLEtBQUEwSixnQkFBQThNLEtBRUEsUUFBQXhXLEtBQUFvZ0UsTUFDQSxZQUNBdUUs
RUFBQTNELEVBQUF6akMsYUFBQXY5QixLQUFBMmtFLEdBQ0FwNUIsRUFBQXkxQixFQUFBempDLGFB
QUF2OUIsS0FBQXVyQyxFQUNBLE1BQ0EsY0FDQW81QixFQUFBdEQsRUFBQTlqQyxhQUFBdjlCLEtB
QUEya0UsR0FDQXA1QixFQUFBODFCLEVBQUE5akMsYUFBQXY5QixLQUFBdXJDLEVBQ0EsTUFDQSxj
QUNBbzVCLEVBQUFybkMsRUFBQUMsYUFBQXY5QixLQUFBMmtFLEdBQ0FwNUIsRUFBQWpPLEVBQUFD
LGFBQUF2OUIsS0FBQXVyQyxFQUNBLE1BQ0EsZ0JBQ0FvNUIsRUFBQXhELEVBQUE1akMsYUFBQXY5
QixLQUFBMmtFLEdBQ0FwNUIsRUFBQTQxQixFQUFBNWpDLGFBQUF2OUIsS0FBQXVyQyxHQVFBLE9B
SkEyMEIsRUFBQWxnRSxLQUFBdXJDLEdBQ0F2ckMsS0FBQThqRSxxQkFBQWEsRUFBQXA1QixFQUFB
eGlDLEdBQ0EvSSxLQUFBNGtFLG1CQUFBRCxFQUFBcDVCLEVBQUF4aUMsRUFBQTJCLEdBRUExSyxL
QUFBb2dFLE1BQ0EsWUFJQVksRUFBQTZELGNBQUE3a0UsS0FDQSxNQUNBLGdCQUNBbWhFLEVBQUEw
RCxjQUFBN2tFLEtBQ0EsTUFDQSxjQUdBK0ksRUFBQTRLLHFCQUFBdkosUUFBQXMzRCxFQUFBMWhF
LFFBcUJBOGpFLHFCQUFBLFNBQUFhLEVBQUFwNUIsRUFBQXhpQyxHQUNBLEdBQUFzN0QsR0FDQTlV
LEVBQ0F1VixDQUNBLEtBQUFULElBQUFNLEdBQ0EsSUFBQXA1QixFQUFBL3JDLGVBQUE2a0UsSUFB
QU0sRUFBQW5sRSxlQUFBNmtFLElBQUEsTUFBQU0sRUFBQU4sR0FHQSxHQUFBQSxJQUFBaEMsRUFB
QSxDQUNBLEdBQUEwQyxHQUFBL2tFLEtBQUFraUUsa0JBQ0EsS0FBQTNTLElBQUF3VixHQUNBQSxF
QUFBdmxFLGVBQUErdkQsS0FDQXVWLFFBQ0FBLEVBQUF2VixHQUFBLEdBR0F2dkQsTUFBQWtpRSxt
QkFBQSxTQUNPL29ELEdBQUEzWixlQUFBNmtFLEdBQ1BNLEVBQUFOLElBSUEvcUQsRUFBQXRaLEtB
QUFxa0UsR0FFT3ZDLEVBQUE5aEUsS0FBQW9nRSxLQUFBdUUsR0FDUHh1RCxFQUFBM1csZUFBQTZr
RSxJQUNBem9DLEVBQUFhLHdCQUFBK2tDLEVBQUF4aEUsTUFBQXFrRSxJQUVPcitELEVBQUFnTSxX
QUFBcXlELElBQUFyK0QsRUFBQThMLGtCQUFBdXlELEtBQ1B6b0MsRUFBQVEsdUJBQUFvbEMsRUFB
QXhoRSxNQUFBcWtFLEVBR0EsS0FBQUEsSUFBQTk0QixHQUFBLENBQ0EsR0FBQXk1QixHQUFBejVC
LEVBQUE4NEIsR0FDQVksRUFBQVosSUFBQWhDLEVBQUFyaUUsS0FBQWtpRSxtQkFBQSxNQUFBeUMs
SUFBQU4sR0FBQTNqRSxNQUNBLElBQUE2cUMsRUFBQS9yQyxlQUFBNmtFLElBQUFXLElBQUFDLElB
QUEsTUFBQUQsR0FBQSxNQUFBQyxHQUdBLEdBQUFaLElBQUFoQyxFQVVBLEdBVEEyQyxFQUtBQSxF
QUFBaGxFLEtBQUFraUUsbUJBQUFyM0QsS0FBeURtNkQsR0FFekRobEUsS0FBQWtpRSxtQkFBQSxL
QUVBK0MsRUFBQSxDQUVBLElBQUExVixJQUFBMFYsSUFDQUEsRUFBQXpsRSxlQUFBK3ZELElBQUF5
VixLQUFBeGxFLGVBQUErdkQsS0FDQXVWLFFBQ0FBLEVBQUF2VixHQUFBLEdBSUEsS0FBQUEsSUFB
QXlWLEdBQ0FBLEVBQUF4bEUsZUFBQSt2RCxJQUFBMFYsRUFBQTFWLEtBQUF5VixFQUFBelYsS0FD
QXVWLFFBQ0FBLEVBQUF2VixHQUFBeVYsRUFBQXpWLFFBS0F1VixHQUFBRSxNQUVPLElBQUE3ckQs
RUFBQTNaLGVBQUE2a0UsR0FDUFcsRUFDQXpFLEVBQUF2Z0UsS0FBQXFrRSxFQUFBVyxFQUFBajhE
LEdBQ1NrOEQsR0FDVDNyRCxFQUFBdFosS0FBQXFrRSxPQUVPLElBQUF2QyxFQUFBOWhFLEtBQUFv
Z0UsS0FBQTcwQixHQUNQcDFCLEVBQUEzVyxlQUFBNmtFLElBQ0F6b0MsRUFBQVcscUJBQUFpbEMs
RUFBQXhoRSxNQUFBcWtFLEVBQUFXLE9BRU8sSUFBQWgvRCxFQUFBZ00sV0FBQXF5RCxJQUFBcitE
LEVBQUE4TCxrQkFBQXV5RCxHQUFBLENBQ1AsR0FBQTVnRSxHQUFBKzlELEVBQUF4aEUsS0FJQSxP
QUFBZ2xFLEVBQ0FwcEMsRUFBQU8sb0JBQUExNEIsRUFBQTRnRSxFQUFBVyxHQUVBcHBDLEVBQUFR
LHVCQUFBMzRCLEVBQUE0Z0UsSUFJQVMsR0FDQWpWLEVBQUFNLGtCQUFBcVIsRUFBQXhoRSxNQUFB
OGtFLEVBQUE5a0UsT0FhQTRrRSxtQkFBQSxTQUFBRCxFQUFBcDVCLEVBQUF4aUMsRUFBQTJCLEdB
Q0EsR0FBQXc2RCxHQUFBOUMsUUFBQXVDLEdBQUE5L0QsVUFBQTgvRCxFQUFBOS9ELFNBQUEsS0FD
QXNnRSxFQUFBL0MsUUFBQTcyQixHQUFBMW1DLFVBQUEwbUMsRUFBQTFtQyxTQUFBLEtBRUF1Z0Us
RUFBQVQsRUFBQXRFLHlCQUFBc0UsRUFBQXRFLHdCQUFBa0UsT0FDQWMsRUFBQTk1QixFQUFBODBC
LHlCQUFBOTBCLEVBQUE4MEIsd0JBQUFrRSxPQUdBZSxFQUFBLE1BQUFKLEVBQUEsS0FBQVAsRUFB
QTkvRCxTQUNBczJELEVBQUEsTUFBQWdLLEVBQUEsS0FBQTU1QixFQUFBMW1DLFNBSUEwZ0UsRUFB
QSxNQUFBTCxHQUFBLE1BQUFFLEVBQ0FJLEVBQUEsTUFBQUwsR0FBQSxNQUFBRSxDQUNBLE9BQUFD
LEdBQUEsTUFBQW5LLEVBQ0FuN0QsS0FBQWk3RCxlQUFBLEtBQUFseUQsRUFBQTJCLEdBQ0s2NkQs
SUFBQUMsR0FDTHhsRSxLQUFBeWxFLGtCQUFBLElBTUEsTUFBQU4sRUFDQUQsSUFBQUMsR0FDQW5s
RSxLQUFBeWxFLGtCQUFBLEdBQUFOLEdBS0ssTUFBQUUsRUFDTEQsSUFBQUMsR0FDQXJsRSxLQUFB
MGxFLGFBQUEsR0FBQUwsR0FLSyxNQUFBbEssR0FLTG43RCxLQUFBaTdELGVBQUFFLEVBQUFweUQs
RUFBQTJCLElBSUFrSixZQUFBLFdBQ0EsTUFBQTR0RCxHQUFBeGhFLE9BU0E2VCxpQkFBQSxTQUFB
QyxHQUNBLE9BQUE5VCxLQUFBb2dFLE1BQ0EsWUFDQSxXQUNBLGFBQ0EsVUFDQSxXQUNBLGFBQ0Es
YUFDQSxZQUNBLEdBQUF6aUMsR0FBQTM5QixLQUFBMjhCLGNBQUFnQixTQUNBLElBQUFBLEVBQ0Es
T0FBQXQrQixHQUFBLEVBQXlCQSxFQUFBcytCLEVBQUFyOEIsT0FBc0JqQyxJQUMvQ3MrQixFQUFB
dCtCLEdBQUF3YyxRQUdBLE1BQ0EsYUFDQSxlQUNBK3FCLEVBQUFXLGFBQUF2bkMsS0FDQSxNQUNB
LFlBQ0EsV0FDQSxXQU9Bc0YsRUFBQSxLQUFBdEYsS0FBQW9nRSxNQUlBcGdFLEtBQUF5N0QsZ0JB
QUEzbkQsR0FDQXhOLEVBQUE5QixZQUFBeEUsTUFDQTJZLEVBQUFhLG1CQUFBeFosTUFDQUEsS0FB
QTBZLFlBQUEsRUFDQTFZLEtBQUFvRixPQUFBLEVBQ0FwRixLQUFBMjhCLGNBQUEsTUFPQXR5Qixr
QkFBQSxXQUNBLE1BQUFtM0QsR0FBQXhoRSxRQUlBNkssRUFBQWszRCxFQUFBeGlFLFVBQUF3aUUs
RUFBQXdCLE1BQUFwQixFQUFBb0IsT0FFQXprRSxFQUFBRCxRQUFBa2pFLEd6SW82ZU0sU0FBU2pq
RSxFQUFRRCxFQUFTSCxHMEkxNGdCaEMsWUFNQSxTQUFBc2pDLEdBQUEyakMsRUFBQWxpRSxHQUNB
LEdBQUFva0MsSUFDQTVGLGlCQUFBMGpDLEVBQ0FuQyxXQUFBLEVBQ0EzQyxlQUFBcDlELElBQUFF
LFdBQUE4OUIsRUFBQWgrQixJQUFBK1ksY0FBQSxLQUNBbWtELE1BQUFsOUQsRUFDQTI4RCxLQUFB
MzhELElBQUFzTSxTQUFBVyxjQUFBLEtBQ0FzeEQsY0FBQXYrRCxJQUFBa04sYUFBQSxLQUtBLE9B
QUFrM0IsR0FoQkEsR0FFQXBHLElBRkEvaUMsRUFBQSxJQUVBLEVBaUJBSSxHQUFBRCxRQUFBbWpD
LEcxSTA1Z0JNLFNBQVNsakMsRUFBUUQsRUFBU0gsRzJJLzZnQmhDLFlBRUEsSUFBQW1NLEdBQUFu
TSxFQUFBLEdBRUFzUixFQUFBdFIsRUFBQSxJQUNBNEgsRUFBQTVILEVBQUEsR0FFQWtuRSxFQUFB
LFNBQUF4bkMsR0FFQXArQixLQUFBMEosZ0JBQUEsS0FFQTFKLEtBQUFzRSxVQUFBLEtBQ0F0RSxL
QUFBK0YsWUFBQSxLQUNBL0YsS0FBQWdqQyxtQkFBQSxLQUNBaGpDLEtBQUFvRixPQUFBLEVBRUF5
RixHQUFBKzZELEVBQUFybUUsV0FDQTZULGVBQUEsU0FBQXJLLEVBQUF1SyxFQUFBQyxFQUFBN0ks
R0FDQSxHQUFBbTdELEdBQUF0eUQsRUFBQWl3RCxZQUNBeGpFLE1BQUFvRixPQUFBeWdFLEVBQ0E3
bEUsS0FBQStGLFlBQUF1TixFQUNBdFQsS0FBQWdqQyxtQkFBQXp2QixDQUVBLElBQUF6UCxHQUFB
LGlCQUFBOUQsS0FBQW9GLE9BQUEsR0FDQSxJQUFBMkQsRUFBQXc1QixpQkFBQSxDQUNBLEdBQUEv
bEIsR0FBQWpKLEVBQUFzdEQsZUFDQXA5RCxFQUFBK1ksRUFBQXNwRCxjQUFBaGlFLEVBRUEsT0FE
QXdDLEdBQUFuQyxhQUFBbkUsS0FBQXlELEdBQ0F1TSxFQUFBdk0sR0FFQSxNQUFBc0YsR0FBQXU3
RCxxQkFJQSxHQUVBLE9BQUF4Z0UsRUFBQSxPQUdBa1EsaUJBQUEsYUFDQUosWUFBQSxXQUNBLE1B
QUF0TixHQUFBUixvQkFBQTlGLE9BRUE2VCxpQkFBQSxXQUNBdk4sRUFBQTlCLFlBQUF4RSxTQUlB
bEIsRUFBQUQsUUFBQSttRSxHM0krN2dCTSxTQUFTOW1FLEVBQVFELEc0SS8rZ0J2QixZQUVBLElB
QUF5akMsSUFDQUMsa0JBQUEsRUFDQXdqQyxVQUFBLEVBR0FqbkUsR0FBQUQsUUFBQXlqQyxHNUkr
L2dCTSxTQUFTeGpDLEVBQVFELEVBQVNILEc2SXRnaEJoQyxZQUVBLElBQUFrc0IsR0FBQWxzQixF
QUFBLElBQ0E0SCxFQUFBNUgsRUFBQSxHQUtBazlELEdBT0FFLGtDQUFBLFNBQUEvZ0QsRUFBQStQ
LEdBQ0EsR0FBQXJuQixHQUFBNkMsRUFBQVIsb0JBQUFpVixFQUNBNlAsR0FBQUMsZUFBQXBuQixF
QUFBcW5CLElBSUFoc0IsR0FBQUQsUUFBQSs4RCxHN0lzaGhCTSxTQUFTOThELEVBQVFELEVBQVNI
LEc4STNpaEJoQyxZQW9CQSxTQUFBc25FLEtBQ0FobUUsS0FBQTBZLGFBRUFzb0QsRUFBQTZELGNB
QUE3a0UsTUFJQSxRQUFBaW1FLEdBQUF6dkQsR0FDQSxHQUFBMHZELEdBQUEsYUFBQTF2RCxFQUFB
N00sTUFBQSxVQUFBNk0sRUFBQTdNLElBQ0EsT0FBQXU4RCxHQUFBLE1BQUExdkQsRUFBQTZZLFFB
QUEsTUFBQTdZLEVBQUExRixNQXNNQSxRQUFBc3NCLEdBQUF2dkIsR0FDQSxHQUFBMkksR0FBQXhX
LEtBQUEwSixnQkFBQThNLE1BRUF0SixFQUFBa2pCLEVBQUFLLGdCQUFBamEsRUFBQTNJLEVBS0Ev
RixHQUFBMkMsS0FBQXU3RCxFQUFBaG1FLEtBRUEsSUFBQWMsR0FBQTBWLEVBQUExVixJQUNBLGNB
QUEwVixFQUFBN00sTUFBQSxNQUFBN0ksRUFBQSxDQUlBLElBSEEsR0FBQXFsRSxHQUFBNy9ELEVB
QUFSLG9CQUFBOUYsTUFDQW9tRSxFQUFBRCxFQUVBQyxFQUFBMWdFLFlBQ0EwZ0UsSUFBQTFnRSxV
QVdBLFFBRkEyZ0UsR0FBQUQsRUFBQUUsaUJBQUEsY0FBQWo1QixLQUFBQyxVQUFBLEdBQUF4c0Ms
R0FBQSxtQkFFQXpCLEVBQUEsRUFBbUJBLEVBQUFnbkUsRUFBQS9rRSxPQUFrQmpDLElBQUEsQ0FD
ckMsR0FBQWtuRSxHQUFBRixFQUFBaG5FLEVBQ0EsSUFBQWtuRSxJQUFBSixHQUFBSSxFQUFBcFIs
T0FBQWdSLEVBQUFoUixLQUFBLENBT0EsR0FBQXFSLEdBQUFsZ0UsRUFBQVQsb0JBQUEwZ0UsRUFD
QUMsR0FBQSxPQUFBbGhFLEVBQUEsTUFJQXdDLEVBQUEyQyxLQUFBdTdELEVBQUFRLEtBSUEsTUFB
QXQ1RCxHQTlRQSxHQUFBNUgsR0FBQTVHLEVBQUEsR0FDQW1NLEVBQUFuTSxFQUFBLEdBRUFrOUIs
RUFBQWw5QixFQUFBLElBQ0EweEIsRUFBQTF4QixFQUFBLElBQ0E0SCxFQUFBNUgsRUFBQSxHQUNB
b0osRUFBQXBKLEVBQUEsR0F3Q0FzaUUsR0F0Q0F0aUUsRUFBQSxHQUNBQSxFQUFBLElBc0NBNitC
LGFBQUEsU0FBQW41QixFQUFBb1MsR0FDQSxHQUFBMUYsR0FBQXNmLEVBQUFHLFNBQUEvWixHQUNB
NlksRUFBQWUsRUFBQUksV0FBQWhhLEdBRUFpd0QsRUFBQTU3RCxHQUdBbEIsS0FBQWpKLE9BR0Fx
cEMsS0FBQXJwQyxPQUdBb2dDLElBQUFwZ0MsT0FDQXEyRCxJQUFBcjJELFFBQ0s4VixHQUNMa3dE
LGVBQUFobUUsT0FDQWc5QixhQUFBaDlCLE9BQ0FvUSxNQUFBLE1BQUFBLElBQUExTSxFQUFBdTRC
LGNBQUFjLGFBQ0FwTyxRQUFBLE1BQUFBLElBQUFqckIsRUFBQXU0QixjQUFBZ3FDLGVBQ0F4M0Ms
U0FBQS9xQixFQUFBdTRCLGNBQUF4TixVQUdBLE9BQUFzM0MsSUFHQWpwQyxhQUFBLFNBQUFwNUIs
RUFBQW9TLEdBSUEsR0FvQkFrbkIsR0FBQWxuQixFQUFBa25CLFlBQ0F0NUIsR0FBQXU0QixlQUNB
Z3FDLGVBQUEsTUFBQW53RCxFQUFBNlksUUFBQTdZLEVBQUE2WSxRQUFBN1ksRUFBQWt3RCxlQUNB
anBDLGFBQUEsTUFBQWpuQixFQUFBMUYsTUFBQTBGLEVBQUExRixNQUFBNHNCLEVBQ0FDLFVBQUEs
S0FDQXhPLFNBQUFpTyxFQUFBbm1CLEtBQUE3UyxHQUNBMHRELFdBQUFtVSxFQUFBenZELEtBSUFx
dUQsY0FBQSxTQUFBemdFLEdBQ0EsR0FBQW9TLEdBQUFwUyxFQUFBc0YsZ0JBQUE4TSxNQWlCQTZZ
LEVBQUE3WSxFQUFBNlksT0FDQSxPQUFBQSxHQUNBdU0sRUFBQU8sb0JBQUE3MUIsRUFBQVIsb0JB
QUExQixHQUFBLFVBQUFpckIsSUFBQSxFQUdBLElBQUE1ckIsR0FBQTZDLEVBQUFSLG9CQUFBMUIs
R0FDQTBNLEVBQUFzZixFQUFBRyxTQUFBL1osRUFDQSxVQUFBMUYsRUFDQSxPQUFBQSxHQUFBLEtB
QUFyTixFQUFBcU4sTUFDQXJOLEVBQUFxTixNQUFBLFFBRU8sZUFBQTBGLEVBQUE3TSxLQUFBLENB
RVAsR0FBQWk5RCxHQUFBQyxXQUFBcGpFLEVBQUFxTixNQUFBLFFBSUFBLEdBQUE4MUQsR0FFQTkx
RCxHQUFBODFELEdBQUFuakUsRUFBQXFOLFlBR0FyTixFQUFBcU4sTUFBQSxHQUFBQSxPQUVPck4s
R0FBQXFOLFFBQUEsR0FBQUEsSUFHUHJOLEVBQUFxTixNQUFBLEdBQUFBLE9BR0EsT0FBQTBGLEVB
QUExRixPQUFBLE1BQUEwRixFQUFBa25CLGNBU0FqNkIsRUFBQWk2QixlQUFBLEdBQUFsbkIsRUFB
QWtuQixlQUNBajZCLEVBQUFpNkIsYUFBQSxHQUFBbG5CLEVBQUFrbkIsY0FHQSxNQUFBbG5CLEVB
QUE2WSxTQUFBLE1BQUE3WSxFQUFBa3dELGlCQUNBampFLEVBQUFpakUsaUJBQUFsd0QsRUFBQWt3
RCxpQkFLQXpGLGlCQUFBLFNBQUE3OEQsR0FDQSxHQUFBb1MsR0FBQXBTLEVBQUFzRixnQkFBQThN
LE1BSUEvUyxFQUFBNkMsRUFBQVIsb0JBQUExQixFQVFBLFFBQUFvUyxFQUFBN00sTUFDQSxhQUNB
LFlBQ0EsS0FDQSxhQUNBLFdBQ0EsZUFDQSxxQkFDQSxZQUNBLFdBQ0EsV0FHQWxHLEVBQUFxTixN
QUFBLEdBQ0FyTixFQUFBcU4sTUFBQXJOLEVBQUFpNkIsWUFDQSxNQUNBLFNBQ0FqNkIsRUFBQXFO
LE1BQUFyTixFQUFBcU4sTUFTQSxHQUFBaFEsR0FBQTJDLEVBQUEzQyxJQUNBLE1BQUFBLElBQ0Ey
QyxFQUFBM0MsS0FBQSxJQUVBMkMsRUFBQWlqRSxnQkFBQWpqRSxFQUFBaWpFLGVBQ0FqakUsRUFB
QWlqRSxnQkFBQWpqRSxFQUFBaWpFLGVBQ0EsS0FBQTVsRSxJQUNBMkMsRUFBQTNDLFVBcURBaEMs
R0FBQUQsUUFBQW1pRSxHOUkyamhCTSxTQUFTbGlFLEVBQVFELEVBQVNILEcrSTkwaEJoQyxZQVdB
LFNBQUFvb0UsR0FBQWppRSxHQUNBLEdBQUFvbUIsR0FBQSxFQWdCQSxPQVpBOVYsR0FBQUMsU0FB
QTFTLFFBQUFtQyxFQUFBLFNBQUFrOUIsR0FDQSxNQUFBQSxJQUdBLGdCQUFBQSxJQUFBLGdCQUFB
QSxHQUNBOVcsR0FBQThXLEVBQ0tnbEMsSUFDTEEsR0FBQSxNQUtBOTdDLEVBMUJBLEdBQUFwZ0Is
R0FBQW5NLEVBQUEsR0FFQXlXLEVBQUF6VyxFQUFBLElBQ0E0SCxFQUFBNUgsRUFBQSxHQUNBNCtC
LEVBQUE1K0IsRUFBQSxJQUdBcW9FLEdBREFyb0UsRUFBQSxJQUNBLEdBeUJBMmlFLEdBQ0E3akMs
YUFBQSxTQUFBcDVCLEVBQUFvUyxFQUFBbEQsR0FPQSxHQUFBMHpELEdBQUEsSUFDQSxVQUFBMXpE
LEVBQUEsQ0FDQSxHQUFBMnpELEdBQUEzekQsQ0FFQSxjQUFBMnpELEVBQUE3RyxPQUNBNkcsSUFB
QWxoRSxhQUdBLE1BQUFraEUsR0FBQSxXQUFBQSxFQUFBN0csT0FDQTRHLEVBQUExcEMsRUFBQU8s
c0JBQUFvcEMsSUFNQSxHQUFBOXBDLEdBQUEsSUFDQSxVQUFBNnBDLEVBQUEsQ0FDQSxHQUFBbDJE
LEVBT0EsSUFMQUEsRUFEQSxNQUFBMEYsRUFBQTFGLE1BQ0EwRixFQUFBMUYsTUFBQSxHQUVBZzJE
LEVBQUF0d0QsRUFBQTNSLFVBRUFzNEIsR0FBQSxFQUNBcm1CLE1BQUF3UixRQUFBMCtDLElBRUEs
T0FBQTNuRSxHQUFBLEVBQXVCQSxFQUFBMm5FLEVBQUExbEUsT0FBd0JqQyxJQUMvQyxNQUFBMm5F
LEVBQUEzbkUsS0FBQXlSLEVBQUEsQ0FDQXFzQixHQUFBLENBQ0EsWUFJQUEsR0FBQSxHQUFBNnBD
LElBQUFsMkQsRUFJQTFNLEVBQUF1NEIsZUFBMEJRLGFBRzFCOGpDLGlCQUFBLFNBQUE3OEQsR0FF
QSxHQUFBb1MsR0FBQXBTLEVBQUFzRixnQkFBQThNLEtBQ0EsVUFBQUEsRUFBQTFGLE1BQUEsQ0FD
QSxHQUFBck4sR0FBQTZDLEVBQUFSLG9CQUFBMUIsRUFDQVgsR0FBQW93QixhQUFBLFFBQUFyZCxF
QUFBMUYsU0FJQXlzQixhQUFBLFNBQUFuNUIsRUFBQW9TLEdBQ0EsR0FBQWl3RCxHQUFBNTdELEdB
QTZCc3lCLFNBQUF6OEIsT0FBQW1FLFNBQUFuRSxRQUEyQzhWLEVBSXhFLE9BQUFwUyxFQUFBdTRC
LGNBQUFRLFdBQ0FzcEMsRUFBQXRwQyxTQUFBLzRCLEVBQUF1NEIsY0FBQVEsU0FHQSxJQUFBbFMs
R0FBQTY3QyxFQUFBdHdELEVBQUEzUixTQU1BLE9BSkFvbUIsS0FDQXc3QyxFQUFBNWhFLFNBQUFv
bUIsR0FHQXc3QyxHQUlBM25FLEdBQUFELFFBQUF3aUUsRy9JODFoQk0sU0FBU3ZpRSxFQUFRRCxF
QUFTSCxHZ0o1OGhCaEMsWUFZQSxTQUFBd29FLEdBQUFDLEVBQUFDLEVBQUF2eUMsRUFBQXd5QyxH
QUNBLE1BQUFGLEtBQUF0eUMsR0FBQXV5QyxJQUFBQyxFQWlCQSxRQUFBQyxHQUFBN2pFLEdBQ0Es
R0FBQXk4QixHQUFBejVCLFNBQUF5NUIsVUFDQXFuQyxFQUFBcm5DLEVBQUFNLGNBQ0FnbkMsRUFB
QUQsRUFBQXA0RCxLQUFBN04sT0FHQW1tRSxFQUFBRixFQUFBRyxXQUNBRCxHQUFBRSxrQkFBQWxr
RSxHQUNBZ2tFLEVBQUFHLFlBQUEsYUFBQUwsRUFFQSxJQUFBTSxHQUFBSixFQUFBdDRELEtBQUE3
TixPQUNBd21FLEVBQUFELEVBQUFMLENBRUEsUUFDQXJuQyxNQUFBMG5DLEVBQ0F4bkMsSUFBQXlu
QyxHQVFBLFFBQUFDLEdBQUF0a0UsR0FDQSxHQUFBeThCLEdBQUExNUIsT0FBQWs1QixjQUFBbDVC
LE9BQUFrNUIsY0FFQSxLQUFBUSxHQUFBLElBQUFBLEVBQUE4bkMsV0FDQSxXQUdBLElBQUFiLEdB
QUFqbkMsRUFBQWluQyxXQUNBQyxFQUFBbG5DLEVBQUFrbkMsYUFDQXZ5QyxFQUFBcUwsRUFBQXJM
LFVBQ0F3eUMsRUFBQW5uQyxFQUFBbW5DLFlBRUFZLEVBQUEvbkMsRUFBQWdvQyxXQUFBLEVBU0Es
S0FFQUQsRUFBQUUsZUFBQXhrRSxTQUNBc2tFLEVBQUFHLGFBQUF6a0UsU0FFRyxNQUFBckQsR0FD
SCxZQU1BLEdBQUErbkUsR0FBQW5CLEVBQUFobkMsRUFBQWluQyxXQUFBam5DLEVBQUFrbkMsYUFB
QWxuQyxFQUFBckwsVUFBQXFMLEVBQUFtbkMsYUFFQWlCLEVBQUFELEVBQUEsRUFBQUosRUFBQTVo
RSxXQUFBL0UsT0FFQWluRSxFQUFBTixFQUFBTyxZQUNBRCxHQUFBRSxtQkFBQWhsRSxHQUNBOGtF
LEVBQUFHLE9BQUFULEVBQUFFLGVBQUFGLEVBQUFKLFlBRUEsSUFBQWMsR0FBQXpCLEVBQUFxQixF
QUFBSixlQUFBSSxFQUFBVixZQUFBVSxFQUFBSCxhQUFBRyxFQUFBVCxXQUVBM25DLEVBQUF3b0Ms
RUFBQSxFQUFBSixFQUFBbGlFLFdBQUEvRSxPQUNBKytCLEVBQUFGLEVBQUFtb0MsRUFHQU0sRUFB
QW5pRSxTQUFBKzVCLGFBQ0Fvb0MsR0FBQUMsU0FBQTFCLEVBQUFDLEdBQ0F3QixFQUFBRixPQUFB
N3pDLEVBQUF3eUMsRUFDQSxJQUFBeUIsR0FBQUYsRUFBQUcsU0FFQSxRQUNBNW9DLE1BQUEyb0Ms
RUFBQXpvQyxFQUFBRixFQUNBRSxJQUFBeW9DLEVBQUEzb0MsRUFBQUUsR0FRQSxRQUFBMm9DLEdB
QUF2bEUsRUFBQW85QixHQUNBLEdBQ0FWLEdBQUFFLEVBREFFLEVBQUE5NUIsU0FBQXk1QixVQUFB
TSxjQUFBa25DLFdBR0FobkUsVUFBQW1nQyxFQUFBUixLQUNBRixFQUFBVSxFQUFBVixNQUNBRSxF
QUFBRixHQUNHVSxFQUFBVixNQUFBVSxFQUFBUixLQUNIRixFQUFBVSxFQUFBUixJQUNBQSxFQUFB
USxFQUFBVixRQUVBQSxFQUFBVSxFQUFBVixNQUNBRSxFQUFBUSxFQUFBUixLQUdBRSxFQUFBb25D
LGtCQUFBbGtFLEdBQ0E4OEIsRUFBQUcsVUFBQSxZQUFBUCxHQUNBSSxFQUFBcW5DLFlBQUEsYUFB
QXJuQyxHQUNBQSxFQUFBSSxRQUFBLFlBQUFOLEVBQUFGLEdBQ0FJLEVBQUFVLFNBZUEsUUFBQWdv
QyxHQUFBeGxFLEVBQUFvOUIsR0FDQSxHQUFBcjZCLE9BQUFrNUIsYUFBQSxDQUlBLEdBQUFRLEdB
QUExNUIsT0FBQWs1QixlQUNBcCtCLEVBQUFtQyxFQUFBMGlDLEtBQUE3a0MsT0FDQTYrQixFQUFB
aDZCLEtBQUEyNkIsSUFBQUQsRUFBQVYsTUFBQTcrQixHQUNBKytCLEVBQUEzL0IsU0FBQW1nQyxF
QUFBUixJQUFBRixFQUFBaDZCLEtBQUEyNkIsSUFBQUQsRUFBQVIsSUFBQS8rQixFQUlBLEtBQUE0
K0IsRUFBQWdwQyxRQUFBL29DLEVBQUFFLEVBQUEsQ0FDQSxHQUFBOG9DLEdBQUE5b0MsQ0FDQUEs
R0FBQUYsRUFDQUEsRUFBQWdwQyxFQUdBLEdBQUFDLEdBQUFDLEVBQUE1bEUsRUFBQTA4QixHQUNB
bXBDLEVBQUFELEVBQUE1bEUsRUFBQTQ4QixFQUVBLElBQUErb0MsR0FBQUUsRUFBQSxDQUNBLEdB
QUEvb0MsR0FBQTk1QixTQUFBKzVCLGFBQ0FELEdBQUFzb0MsU0FBQU8sRUFBQTNsRSxLQUFBMmxF
LEVBQUFHLFFBQ0FycEMsRUFBQXNwQyxrQkFFQXJwQyxFQUFBRSxHQUNBSCxFQUFBdXBDLFNBQUFs
cEMsR0FDQUwsRUFBQWdwQyxPQUFBSSxFQUFBN2xFLEtBQUE2bEUsRUFBQUMsVUFFQWhwQyxFQUFB
bW9DLE9BQUFZLEVBQUE3bEUsS0FBQTZsRSxFQUFBQyxRQUNBcnBDLEVBQUF1cEMsU0FBQWxwQyxN
QWxMQSxHQUFBNTVCLEdBQUFqSSxFQUFBLEdBRUEycUUsRUFBQTNxRSxFQUFBLEtBQ0F5bkMsRUFB
QXpuQyxFQUFBLElBb0xBZ3JFLEVBQUEvaUUsRUFBQUosV0FBQSxhQUFBRSxhQUFBLGdCQUFBRCxT
QUVBMDRCLEdBSUEwQixXQUFBOG9DLEVBQUFwQyxFQUFBUyxFQU1BN21DLFdBQUF3b0MsRUFBQVYs
RUFBQUMsRUFHQW5xRSxHQUFBRCxRQUFBcWdDLEdoSjQ5aEJNLFNBQVNwZ0MsRUFBUUQsRUFBU0gs
R2lKcHFpQmhDLFlBRUEsSUFBQTRHLEdBQUE1RyxFQUFBLEdBQ0FtTSxFQUFBbk0sRUFBQSxHQUVB
a3NCLEVBQUFsc0IsRUFBQSxJQUNBc1IsRUFBQXRSLEVBQUEsSUFDQTRILEVBQUE1SCxFQUFBLEdB
RUF1bkIsRUFBQXZuQixFQUFBLElBbUJBaXJFLEdBbEJBanJFLEVBQUEsR0FDQUEsRUFBQSxJQWlC
QSxTQUFBeVEsR0FFQW5QLEtBQUEwSixnQkFBQXlGLEVBQ0FuUCxLQUFBNHBFLFlBQUEsR0FBQXo2
RCxFQUVBblAsS0FBQXNFLFVBQUEsS0FDQXRFLEtBQUErRixZQUFBLEtBR0EvRixLQUFBb0YsT0FB
QSxFQUNBcEYsS0FBQWdvQyxZQUFBLEVBQ0Fob0MsS0FBQTZwRSxnQkFBQSxLQUNBN3BFLEtBQUE4
cEUsY0FBQSxNQUdBai9ELEdBQUE4K0QsRUFBQXBxRSxXQVNBNlQsZUFBQSxTQUFBckssRUFBQXVL
LEVBQUFDLEVBQUE3SSxHQUVBLEdBYUFtN0QsR0FBQXR5RCxFQUFBaXdELGFBQ0F1RyxFQUFBLGdC
QUFBbEUsRUFBQSxJQUNBbUUsRUFBQSxlQUdBLElBRkFocUUsS0FBQW9GLE9BQUF5Z0UsRUFDQTds
RSxLQUFBK0YsWUFBQXVOLEVBQ0F2SyxFQUFBdzVCLGlCQUFBLENBQ0EsR0FBQS9sQixHQUFBakos
RUFBQXN0RCxlQUNBMTJDLEVBQUEzTixFQUFBc3BELGNBQUFpRSxHQUNBOS9DLEVBQUF6TixFQUFB
c3BELGNBQUFrRSxHQUNBakcsRUFBQS96RCxFQUFBd00sRUFBQXl0RCx5QkFRQSxPQVBBajZELEdB
QUFQLFdBQUFzMEQsRUFBQS96RCxFQUFBbWEsSUFDQW5xQixLQUFBNHBFLGFBQ0E1NUQsRUFBQVAs
V0FBQXMwRCxFQUFBL3pELEVBQUF3TSxFQUFBaU8sZUFBQXpxQixLQUFBNHBFLGVBRUE1NUQsRUFB
QVAsV0FBQXMwRCxFQUFBL3pELEVBQUFpYSxJQUNBM2pCLEVBQUFuQyxhQUFBbkUsS0FBQW1xQixH
QUNBbnFCLEtBQUE2cEUsZ0JBQUE1L0MsRUFDQTg1QyxFQUVBLEdBQUFtRyxHQUFBamtELEVBQUFq
bUIsS0FBQTRwRSxZQUVBLE9BQUE3Z0UsR0FBQXU3RCxxQkFJQTRGLEVBR0EsT0FBQUgsRUFBQSxN
QUFBRyxFQUFBLE9BQUFGLEVBQUEsT0FXQWgyRCxpQkFBQSxTQUFBbTJELEVBQUFwaEUsR0FDQSxH
QUFBb2hFLElBQUFucUUsS0FBQTBKLGdCQUFBLENBQ0ExSixLQUFBMEosZ0JBQUF5Z0UsQ0FDQSxJ
QUFBQyxHQUFBLEdBQUFELENBQ0EsSUFBQUMsSUFBQXBxRSxLQUFBNHBFLFlBQUEsQ0FJQTVwRSxL
QUFBNHBFLFlBQUFRLENBQ0EsSUFBQUMsR0FBQXJxRSxLQUFBNFQsYUFDQWdYLEdBQUFOLHFCQUFB
Ky9DLEVBQUEsR0FBQUEsRUFBQSxHQUFBRDtBQUtBeDJELFlBQUEsV0FDQSxHQUFBMDJELEdBQUF0
cUUsS0FBQThwRSxhQUNBLElBQUFRLEVBQ0EsTUFBQUEsRUFFQSxLQUFBdHFFLEtBQUE2cEUsZ0JB
R0EsSUFGQSxHQUFBMS9DLEdBQUE3akIsRUFBQVIsb0JBQUE5RixNQUNBeUQsRUFBQTBtQixFQUFB
OWtCLGNBQ0EsQ0FFQSxHQURBLE1BQUE1QixFQUFBNkIsRUFBQSxLQUFBdEYsS0FBQW9GLFFBQUEs
T0FDQSxJQUFBM0IsRUFBQUUsVUFBQSxrQkFBQUYsRUFBQUssVUFBQSxDQUNBOUQsS0FBQTZwRSxn
QkFBQXBtRSxDQUNBLE9BRUFBLElBQUE0QixZQUtBLE1BRkFpbEUsSUFBQXRxRSxLQUFBc0UsVUFB
QXRFLEtBQUE2cEUsaUJBQ0E3cEUsS0FBQThwRSxjQUFBUSxFQUNBQSxHQUdBejJELGlCQUFBLFdB
Q0E3VCxLQUFBNnBFLGdCQUFBLEtBQ0E3cEUsS0FBQThwRSxjQUFBLEtBQ0F4akUsRUFBQTlCLFlB
QUF4RSxTQUlBbEIsRUFBQUQsUUFBQThxRSxHakpvcmlCTSxTQUFTN3FFLEVBQVFELEVBQVNILEdr
SjEwaUJoQyxZQWVBLFNBQUFzbkUsS0FDQWhtRSxLQUFBMFksYUFFQXlvRCxFQUFBMEQsY0FBQTdr
RSxNQTJIQSxRQUFBbzlCLEdBQUF2dkIsR0FDQSxHQUFBMkksR0FBQXhXLEtBQUEwSixnQkFBQThN
LE1BQ0F0SixFQUFBa2pCLEVBQUFLLGdCQUFBamEsRUFBQTNJLEVBRUEsT0FEQS9GLEdBQUEyQyxL
QUFBdTdELEVBQUFobUUsTUFDQWtOLEVBL0lBLEdBQUE1SCxHQUFBNUcsRUFBQSxHQUNBbU0sRUFB
QW5NLEVBQUEsR0FFQTB4QixFQUFBMXhCLEVBQUEsSUFDQTRILEVBQUE1SCxFQUFBLEdBQ0FvSixF
QUFBcEosRUFBQSxHQThCQXlpRSxHQTVCQXppRSxFQUFBLEdBQ0FBLEVBQUEsSUE0QkE2K0IsYUFB
QSxTQUFBbjVCLEVBQUFvUyxHQUNBLE1BQUFBLEVBQUE2cEQsd0JBQUEvNkQsRUFBQSxZQU9BLElB
QUFtaEUsR0FBQTU3RCxLQUE4QjJMLEdBQzlCMUYsTUFBQXBRLE9BQ0FnOUIsYUFBQWg5QixPQUNB
bUUsU0FBQSxHQUFBVCxFQUFBdTRCLGNBQUFjLGFBQ0F0TyxTQUFBL3FCLEVBQUF1NEIsY0FBQXhO
LFVBR0EsT0FBQXMzQyxJQUdBanBDLGFBQUEsU0FBQXA1QixFQUFBb1MsR0FhQSxHQUFBMUYsR0FB
QXNmLEVBQUFHLFNBQUEvWixHQUNBaW5CLEVBQUEzc0IsQ0FHQSxVQUFBQSxFQUFBLENBQ0EsR0FB
QTRzQixHQUFBbG5CLEVBQUFrbkIsYUFFQTc0QixFQUFBMlIsRUFBQTNSLFFBQ0EsT0FBQUEsSUFJ
QSxNQUFBNjRCLEVBQUFwNEIsRUFBQSxhQUNBd1IsTUFBQXdSLFFBQUF6akIsS0FDQUEsRUFBQXZE
LFFBQUEsU0FBQWdFLEVBQUEsTUFDQVQsSUFBQSxJQUdBNjRCLEVBQUEsR0FBQTc0QixHQUVBLE1B
QUE2NEIsSUFDQUEsRUFBQSxJQUVBRCxFQUFBQyxFQUdBdDVCLEVBQUF1NEIsZUFDQWMsYUFBQSxH
QUFBQSxFQUNBRSxVQUFBLEtBQ0F4TyxTQUFBaU8sRUFBQW5tQixLQUFBN1MsS0FJQXlnRSxjQUFB
LFNBQUF6Z0UsR0FDQSxHQUFBb1MsR0FBQXBTLEVBQUFzRixnQkFBQThNLE1BRUEvUyxFQUFBNkMs
RUFBQVIsb0JBQUExQixHQUNBME0sRUFBQXNmLEVBQUFHLFNBQUEvWixFQUNBLFVBQUExRixFQUFB
LENBR0EsR0FBQWluQyxHQUFBLEdBQUFqbkMsQ0FHQWluQyxLQUFBdDBDLEVBQUFxTixRQUNBck4s
RUFBQXFOLE1BQUFpbkMsR0FFQSxNQUFBdmhDLEVBQUFrbkIsZUFDQWo2QixFQUFBaTZCLGFBQUFx
YSxHQUdBLE1BQUF2aEMsRUFBQWtuQixlQUNBajZCLEVBQUFpNkIsYUFBQWxuQixFQUFBa25CLGVB
SUF1akMsaUJBQUEsU0FBQTc4RCxHQUdBLEdBQUFYLEdBQUE2QyxFQUFBUixvQkFBQTFCLEdBQ0Er
a0MsRUFBQTFsQyxFQUFBMGxDLFdBTUFBLEtBQUEva0MsRUFBQXU0QixjQUFBYyxlQUNBaDZCLEVB
QUFxTixNQUFBcTRCLEtBWUFycUMsR0FBQUQsUUFBQXNpRSxHbEowMWlCTSxTQUFTcmlFLEVBQVFE
LEVBQVNILEdtSjkraUJoQyxZQVVBLFNBQUFxdkIsR0FBQXc4QyxFQUFBQyxHQUNBLGFBQUFELEdB
QUEsT0FBQWpsRSxFQUFBLE1BQ0EsYUFBQWtsRSxHQUFBLE9BQUFsbEUsRUFBQSxLQUdBLFFBREFt
bEUsR0FBQSxFQUNBQyxFQUFBSCxFQUF5QkcsRUFBT0EsSUFBQTNrRSxZQUNoQzBrRSxHQUdBLFFB
REFFLEdBQUEsRUFDQUMsRUFBQUosRUFBeUJJLEVBQU9BLElBQUE3a0UsWUFDaEM0a0UsR0FJQSxN
QUFBRixFQUFBRSxFQUFBLEdBQ0FKLElBQUF4a0UsWUFDQTBrRSxHQUlBLE1BQUFFLEVBQUFGLEVB
QUEsR0FDQUQsSUFBQXprRSxZQUNBNGtFLEdBS0EsS0FEQSxHQUFBRSxHQUFBSixFQUNBSSxLQUFB
LENBQ0EsR0FBQU4sSUFBQUMsRUFDQSxNQUFBRCxFQUVBQSxLQUFBeGtFLFlBQ0F5a0UsSUFBQXpr
RSxZQUVBLFlBTUEsUUFBQStuQixHQUFBeThDLEVBQUFDLEdBQ0EsYUFBQUQsR0FBQSxPQUFBamxF
LEVBQUEsTUFDQSxhQUFBa2xFLEdBQUEsT0FBQWxsRSxFQUFBLEtBRUEsTUFBQWtsRSxHQUFBLENB
Q0EsR0FBQUEsSUFBQUQsRUFDQSxRQUVBQyxLQUFBemtFLFlBRUEsU0FNQSxRQUFBaVYsR0FBQTVX
LEdBR0EsTUFGQSxhQUFBQSxHQUFBLE9BQUFrQixFQUFBLE1BRUFsQixFQUFBMkIsWUFNQSxRQUFB
OFUsR0FBQXpXLEVBQUF4RSxFQUFBeUgsR0FFQSxJQURBLEdBQUF5akUsTUFDQTFtRSxHQUNBMG1F
LEVBQUFybEUsS0FBQXJCLEdBQ0FBLElBQUEyQixXQUVBLElBQUExRyxFQUNBLEtBQUFBLEVBQUF5
ckUsRUFBQXhwRSxPQUF1QmpDLEtBQUEsR0FDdkJPLEVBQUFrckUsRUFBQXpyRSxHQUFBLFdBQUFn
SSxFQUVBLEtBQUFoSSxFQUFBLEVBQWFBLEVBQUF5ckUsRUFBQXhwRSxPQUFpQmpDLElBQzlCTyxF
QUFBa3JFLEVBQUF6ckUsR0FBQSxVQUFBZ0ksR0FXQSxRQUFBb1UsR0FBQXRZLEVBQUFFLEVBQUF6
RCxFQUFBb3VCLEVBQUFDLEdBR0EsSUFGQSxHQUFBODhDLEdBQUE1bkUsR0FBQUUsRUFBQTBxQixF
QUFBNXFCLEVBQUFFLEdBQUEsS0FDQTJuRSxLQUNBN25FLE9BQUE0bkUsR0FDQUMsRUFBQXZsRSxL
QUFBdEMsR0FDQUEsSUFBQTRDLFdBR0EsS0FEQSxHQUFBa2xFLE1BQ0E1bkUsT0FBQTBuRSxHQUNB
RSxFQUFBeGxFLEtBQUFwQyxHQUNBQSxJQUFBMEMsV0FFQSxJQUFBMUcsRUFDQSxLQUFBQSxFQUFB
LEVBQWFBLEVBQUEyckUsRUFBQTFwRSxPQUFxQmpDLElBQ2xDTyxFQUFBb3JFLEVBQUEzckUsR0FB
QSxVQUFBMnVCLEVBRUEsS0FBQTN1QixFQUFBNHJFLEVBQUEzcEUsT0FBeUJqQyxLQUFBLEdBQ3pC
TyxFQUFBcXJFLEVBQUE1ckUsR0FBQSxXQUFBNHVCLEdBaEhBLEdBQUEzb0IsR0FBQTVHLEVBQUEs
RUFFQUEsR0FBQSxFQWtIQUksR0FBQUQsU0FDQWl2QixhQUNBQywwQkFDQS9TLG9CQUNBSCxtQkFD
QVksdUJuSisvaUJNLFNBQVMzYyxFQUFRRCxFQUFTSCxHb0oxbmpCaEMsWUF1QkEsU0FBQXdzRSxL
QUNBbHJFLEtBQUFrSSwwQkF0QkEsR0FBQTJDLEdBQUFuTSxFQUFBLEdBRUFvSixFQUFBcEosRUFB
QSxHQUNBcU0sRUFBQXJNLEVBQUEsSUFFQXNDLEVBQUF0QyxFQUFBLEdBRUF5c0UsR0FDQWxnRSxX
QUFBakssRUFDQWtLLE1BQUEsV0FDQWtnRSxFQUFBN2dFLG1CQUFBLElBSUE4Z0UsR0FDQXBnRSxX
QUFBakssRUFDQWtLLE1BQUFwRCxFQUFBc0Qsb0JBQUE2TCxLQUFBblAsSUFHQTBELEdBQUE2L0Qs
RUFBQUYsRUFNQXRnRSxHQUFBcWdFLEVBQUEzckUsVUFBQXdMLEdBQ0FVLHVCQUFBLFdBQ0EsTUFB
QUQsS0FJQSxJQUFBekMsR0FBQSxHQUFBbWlFLEdBRUFFLEdBQ0E3Z0UsbUJBQUEsRUFNQS9CLGVB
QUEsU0FBQUMsRUFBQTVJLEVBQUFDLEVBQUFYLEVBQUFrQixFQUFBQyxHQUNBLEdBQUFnckUsR0FB
QUYsRUFBQTdnRSxpQkFLQSxPQUhBNmdFLEdBQUE3Z0UsbUJBQUEsRUFHQStnRSxFQUNBN2lFLEVB
QUE1SSxFQUFBQyxFQUFBWCxFQUFBa0IsRUFBQUMsR0FFQXlJLEVBQUE2QyxRQUFBbkQsRUFBQSxL
QUFBNUksRUFBQUMsRUFBQVgsRUFBQWtCLEVBQUFDLElBS0F4QixHQUFBRCxRQUFBdXNFLEdwSjBv
akJNLFNBQVN0c0UsRUFBUUQsRUFBU0gsR3FKbHNqQmhDLFlBd0JBLFNBQUFpaEUsS0FDQTRMLElB
TUFBLEdBQUEsRUFFQUMsRUFBQUMsYUFBQTlwRCx5QkFBQUQsR0FLQThwRCxFQUFBN3lELGVBQUFD
LHVCQUFBMjVDLEdBQ0FpWixFQUFBMXpELGlCQUFBNlYsb0JBQUFybkIsR0FDQWtsRSxFQUFBMXpE
LGlCQUFBK1Ysb0JBQUE2OUMsR0FNQUYsRUFBQTd5RCxlQUFBRSwwQkFDQTh5RCxvQkFDQWpaLHdC
QUNBekIsb0JBQ0EyYSxvQkFDQXhjLDJCQUdBb2MsRUFBQUssY0FBQWx0Qyw0QkFBQW9qQyxHQUVB
eUosRUFBQUssY0FBQWh0Qyx5QkFBQThxQyxHQUVBNkIsRUFBQXhsRSxZQUFBc0wsd0JBQUEwNEMs
R0FDQXdoQixFQUFBeGxFLFlBQUFzTCx3QkFBQWlpRCxHQUNBaVksRUFBQXhsRSxZQUFBc0wsd0JB
QUF3NkQsR0FFQU4sRUFBQU8sZUFBQTl0Qyw0QkFBQSxTQUFBRyxHQUNBLFVBQUF3bkMsR0FBQXhu
QyxLQUdBb3RDLEVBQUFRLFFBQUE5L0QsMkJBQUFuRSxHQUNBeWpFLEVBQUFRLFFBQUE1L0QsdUJB
QUFnL0QsR0FFQUksRUFBQWgyRCxVQUFBdWIsa0JBQUE4cUMsSUFuRUEsR0FBQTdSLEdBQUF0ckQs
RUFBQSxLQUNBMHdELEVBQUExd0QsRUFBQSxLQUNBdXlELEVBQUF2eUQsRUFBQSxLQUNBNnpELEVB
QUE3ekQsRUFBQSxLQUNBZzBELEVBQUFoMEQsRUFBQSxLQUNBNjBELEVBQUE3MEQsRUFBQSxLQUNB
bTlELEVBQUFuOUQsRUFBQSxLQUNBcWpFLEVBQUFyakUsRUFBQSxLQUNBNEgsRUFBQTVILEVBQUEs
R0FDQWtuRSxFQUFBbG5FLEVBQUEsS0FDQWd0RSxFQUFBaHRFLEVBQUEsS0FDQWlyRSxFQUFBanJF
LEVBQUEsS0FDQTBzRSxFQUFBMXNFLEVBQUEsS0FDQWdqQixFQUFBaGpCLEVBQUEsS0FDQThzRSxF
QUFBOXNFLEVBQUEsS0FDQXFKLEVBQUFySixFQUFBLEtBQ0FvdEUsRUFBQXB0RSxFQUFBLEtBQ0Fr
dEUsRUFBQWx0RSxFQUFBLEtBQ0FpdEUsRUFBQWp0RSxFQUFBLEtBRUE2c0UsR0FBQSxDQWtEQXpz
RSxHQUFBRCxTQUNBOGdFLFdySm10akJBLEdBRU0sU0FBUzdnRSxFQUFRRCxFQUFTSCxHc0o5eGpC
aEMsWUFJQSxTQUFBdXRFLEdBQUF0eUQsR0FDQWhCLEVBQUFvQixjQUFBSixHQUNBaEIsRUFBQXFC
LG1CQUFBLEdBSkEsR0FBQXJCLEdBQUFqYSxFQUFBLElBT0F5ZSxHQUtBMEUsZUFBQSxTQUFBbkks
RUFBQWpOLEVBQUFDLEVBQUFDLEdBQ0EsR0FBQWdOLEdBQUFoQixFQUFBYyxjQUFBQyxFQUFBak4s
RUFBQUMsRUFBQUMsRUFDQXMvRCxHQUFBdHlELElBSUE3YSxHQUFBRCxRQUFBc2UsR3RKOHlqQk0s
U0FBU3JlLEVBQVFELEVBQVNILEd1SmwwakJoQyxZQWtCQSxTQUFBd3RFLEdBQUE5bkUsR0FJQSxL
QUFBQSxFQUFBMkIsYUFDQTNCLElBQUEyQixXQUVBLElBQUFvZ0UsR0FBQTcvRCxFQUFBUixvQkFB
QTFCLEdBQ0FvOUIsRUFBQTJrQyxFQUFBemdFLFVBQ0EsT0FBQVksR0FBQWYsMkJBQUFpOEIsR0FJ
QSxRQUFBMnFDLEdBQUF6eUQsRUFBQWhOLEdBQ0ExTSxLQUFBMFosZUFDQTFaLEtBQUEwTSxjQUNB
MU0sS0FBQW9zRSxhQVdBLFFBQUFDLEdBQUFDLEdBQ0EsR0FBQTMvRCxHQUFBeVAsRUFBQWt3RCxF
QUFBNS9ELGFBQ0FELEVBQUFuRyxFQUFBZiwyQkFBQW9ILEdBTUE0L0QsRUFBQTkvRCxDQUNBLEdB
Q0E2L0QsR0FBQUYsVUFBQTNtRSxLQUFBOG1FLEdBQ0FBLEtBQUFMLEVBQUFLLFNBQ0dBLEVBRUgs
UUFBQWx0RSxHQUFBLEVBQWlCQSxFQUFBaXRFLEVBQUFGLFVBQUE5cUUsT0FBa0NqQyxJQUNuRG9O
LEVBQUE2L0QsRUFBQUYsVUFBQS9zRSxHQUNBcWlCLEVBQUE4cUQsZ0JBQUFGLEVBQUE1eUQsYUFB
QWpOLEVBQUE2L0QsRUFBQTUvRCxZQUFBMFAsRUFBQWt3RCxFQUFBNS9ELGNBSUEsUUFBQSsvRCxH
QUFBem1DLEdBQ0EsR0FBQUgsR0FBQXdlLEVBQUE3OUMsT0FDQXcvQixHQUFBSCxHQWpFQSxHQUFB
aDdCLEdBQUFuTSxFQUFBLEdBRUE2MUIsRUFBQTcxQixFQUFBLElBQ0FpSSxFQUFBakksRUFBQSxH
QUNBb00sRUFBQXBNLEVBQUEsSUFDQTRILEVBQUE1SCxFQUFBLEdBQ0FvSixFQUFBcEosRUFBQSxH
QUVBMGQsRUFBQTFkLEVBQUEsSUFDQTJsRCxFQUFBM2xELEVBQUEsSUF5QkFtTSxHQUFBc2hFLEVB
QUE1c0UsV0FDQW1NLFdBQUEsV0FDQTFMLEtBQUEwWixhQUFBLEtBQ0ExWixLQUFBME0sWUFBQSxL
QUNBMU0sS0FBQW9zRSxVQUFBOXFFLE9BQUEsS0FHQXdKLEVBQUFpQixhQUFBb2dFLEVBQUFyaEUs
RUFBQTRoRSxrQkEyQkEsSUFBQWhyRCxJQUNBaXJELFVBQUEsRUFDQUgsZ0JBQUEsS0FFQS9wRCxj
QUFBOWIsRUFBQUosVUFBQUMsT0FBQSxLQUVBb2Isa0JBQUEsU0FBQUMsR0FDQUgsRUFBQThxRCxn
QkFBQTNxRCxHQUdBQyxXQUFBLFNBQUFDLEdBQ0FMLEVBQUFpckQsV0FBQTVxRCxHQUdBQyxVQUFB
LFdBQ0EsTUFBQU4sR0FBQWlyRCxVQWFBcHFELGlCQUFBLFNBQUE3SSxFQUFBZ0osRUFBQWpNLEdB
Q0EsTUFBQUEsR0FHQThkLEVBQUFDLE9BQUEvZCxFQUFBaU0sRUFBQWhCLEVBQUFrckQsY0FBQTMx
RCxLQUFBLEtBQUF5QyxJQUZBLE1BZUE4SSxrQkFBQSxTQUFBOUksRUFBQWdKLEVBQUFqTSxHQUNB
LE1BQUFBLEdBR0E4ZCxFQUFBWixRQUFBbGQsRUFBQWlNLEVBQUFoQixFQUFBa3JELGNBQUEzMUQs
S0FBQSxLQUFBeUMsSUFGQSxNQUtBd0osbUJBQUEsU0FBQUYsR0FDQSxHQUFBdmEsR0FBQWdrRSxF
QUFBeDFELEtBQUEsS0FBQStMLEVBQ0F1UixHQUFBQyxPQUFBaHVCLE9BQUEsU0FBQWlDLElBR0Ft
a0UsY0FBQSxTQUFBbHpELEVBQUFoTixHQUNBLEdBQUFnVixFQUFBaXJELFNBQUEsQ0FJQSxHQUFB
TCxHQUFBSCxFQUFBN2pFLFVBQUFvUixFQUFBaE4sRUFDQSxLQUdBNUUsRUFBQVUsZUFBQTZqRSxF
QUFBQyxHQUNLLFFBQ0xILEVBQUF4Z0UsUUFBQTJnRSxNQUtBeHRFLEdBQUFELFFBQUE2aUIsR3ZK
azFqQk0sU0FBUzVpQixFQUFRRCxFQUFTSCxHd0pqK2pCaEMsWUFFQSxJQUFBc0gsR0FBQXRILEVB
QUEsSUFDQWlhLEVBQUFqYSxFQUFBLElBQ0FvWixFQUFBcFosRUFBQSxJQUNBa3lCLEVBQUFseUIs
RUFBQSxJQUNBdy9CLEVBQUF4L0IsRUFBQSxJQUNBK2lCLEVBQUEvaUIsRUFBQSxJQUNBb2dDLEVB
QUFwZ0MsRUFBQSxJQUNBb0osRUFBQXBKLEVBQUEsR0FFQThzRSxHQUNBaDJELFVBQUFvYixFQUFB
dGtCLFVBQ0F0RyxjQUFBc0csVUFDQXkvRCxlQUFBN3RDLEVBQUE1eEIsVUFDQXFNLGlCQUFBck0s
VUFDQXdMLG1CQUFBeEwsVUFDQW0vRCxhQUFBaHFELEVBQUFuVixVQUNBdS9ELGNBQUEvc0MsRUFB
QXh5QixVQUNBMC9ELFFBQUFsa0UsRUFBQXdFLFVBR0F4TixHQUFBRCxRQUFBMnNFLEd4SmkvakJN
LFNBQVMxc0UsRUFBUUQsRUFBU0gsR3lKdmdrQmhDLFlBRUEsSUFBQW11RSxHQUFBbnVFLEVBQUEs
S0FFQW91RSxFQUFBLE9BQ0FDLEVBQUEsV0FFQTlwQyxHQUNBaUMsbUJBQUEsc0JBTUE4bkMsb0JB
QUEsU0FBQXY1RCxHQUNBLEdBQUF3eEIsR0FBQTRuQyxFQUFBcDVELEVBR0EsT0FBQXM1RCxHQUFB
djhELEtBQUFpRCxHQUNBQSxFQUVBQSxFQUFBNVMsUUFBQWlzRSxFQUFBLElBQUE3cEMsRUFBQWlD
LG1CQUFBLEtBQUFELEVBQUEsUUFTQUQsZUFBQSxTQUFBdnhCLEVBQUFnRCxHQUNBLEdBQUF3MkQs
R0FBQXgyRCxFQUFBN1MsYUFBQXEvQixFQUFBaUMsbUJBQ0ErbkMsTUFBQXZ5QixTQUFBdXlCLEVB
QUEsR0FDQSxJQUFBQyxHQUFBTCxFQUFBcDVELEVBQ0EsT0FBQXk1RCxLQUFBRCxHQUlBbnVFLEdB
QUFELFFBQUFva0MsR3pKdWhrQk0sU0FBU25rQyxFQUFRRCxFQUFTSCxHMEo3amtCaEMsWUF1QkEs
U0FBQXl1RSxHQUFBMTVELEVBQUF5WCxFQUFBa2lELEdBRUEsT0FDQXpqRSxLQUFBLGdCQUNBc2hC
LFFBQUF4WCxFQUNBNDVELFVBQUEsS0FDQWxpRCxTQUFBLEtBQ0FpaUQsVUFDQWxpRCxhQVdBLFFB
QUFvaUQsR0FBQXZyQyxFQUFBN1csRUFBQWtpRCxHQUVBLE9BQ0F6akUsS0FBQSxnQkFDQXNoQixR
QUFBLEtBQ0FvaUQsVUFBQXRyQyxFQUFBaUcsWUFDQTdjLFNBQUFuaEIsRUFBQTRKLFlBQUFtdUIs
R0FDQXFyQyxVQUNBbGlELGFBVUEsUUFBQXFpRCxHQUFBeHJDLEVBQUF0K0IsR0FFQSxPQUNBa0cs
S0FBQSxjQUNBc2hCLFFBQUEsS0FDQW9pRCxVQUFBdHJDLEVBQUFpRyxZQUNBN2MsU0FBQTFuQixF
QUNBMnBFLFFBQUEsS0FDQWxpRCxVQUFBLE1BVUEsUUFBQXNpRCxHQUFBLzVELEdBRUEsT0FDQTlK
LEtBQUEsYUFDQXNoQixRQUFBeFgsRUFDQTQ1RCxVQUFBLEtBQ0FsaUQsU0FBQSxLQUNBaWlELFFB
QUEsS0FDQWxpRCxVQUFBLE1BVUEsUUFBQXVpRCxHQUFBdGtDLEdBRUEsT0FDQXgvQixLQUFBLGVB
Q0FzaEIsUUFBQWtlLEVBQ0Fra0MsVUFBQSxLQUNBbGlELFNBQUEsS0FDQWlpRCxRQUFBLEtBQ0Fs
aUQsVUFBQSxNQVFBLFFBQUE5Z0IsR0FBQTRCLEVBQUFnZixHQUtBLE1BSkFBLEtBQ0FoZixRQUNB
QSxFQUFBdkcsS0FBQXVsQixJQUVBaGYsRUFRQSxRQUFBMGhFLEdBQUF0cEUsRUFBQTA0RCxHQUNB
bHNDLEVBQUFFLHVCQUFBMXNCLEVBQUEwNEQsR0E1SEEsR0FBQXgzRCxHQUFBNUcsRUFBQSxHQUVB
a3lCLEVBQUFseUIsRUFBQSxJQUtBc0wsR0FKQXRMLEVBQUEsSUFDQUEsRUFBQSxHQUVBQSxFQUFB
LElBQ0FBLEVBQUEsS0FDQW84RCxFQUFBcDhELEVBQUEsS0FHQW9vRSxHQURBcG9FLEVBQUEsR0FD
QUEsRUFBQSxNQWtKQXlqRSxHQWpKQXpqRSxFQUFBLElBeUpBNmtFLE9BQ0FvSywrQkFBQSxTQUFB
QyxFQUFBN2tFLEVBQUEyQixHQVlBLE1BQUFvd0QsR0FBQUMsb0JBQUE2UyxFQUFBN2tFLEVBQUEy
QixJQUdBbWpFLDBCQUFBLFNBQUEzUyxFQUFBNFMsRUFBQTFTLEVBQUFDLEVBQUF0eUQsRUFBQTJC
LEdBQ0EsR0FBQXl3RCxHQUNBUCxFQUFBLENBZ0JBLE9BRkFPLEdBQUEyTCxFQUFBZ0gsRUFBQWxU
LEdBQ0FFLEVBQUFHLGVBQUFDLEVBQUFDLEVBQUFDLEVBQUFDLEVBQUF0eUQsRUFBQS9JLFVBQUFn
akMsbUJBQUF0NEIsRUFBQWt3RCxHQUNBTyxHQVdBdUosY0FBQSxTQUFBa0osRUFBQTdrRSxFQUFB
MkIsR0FDQSxHQUFBN0YsR0FBQTdFLEtBQUEydEUsK0JBQUFDLEVBQUE3a0UsRUFBQTJCLEVBQ0Ex
SyxNQUFBOEUsa0JBQUFELENBRUEsSUFBQXUyRCxNQUNBdjFDLEVBQUEsQ0FDQSxRQUFBL2tCLEtB
QUErRCxHQUNBLEdBQUFBLEVBQUFyRixlQUFBc0IsR0FBQSxDQUNBLEdBQUFpaEMsR0FBQWw5QixF
QUFBL0QsR0FDQTg1RCxFQUFBLEVBSUE4SSxFQUFBMTVELEVBQUFvSixlQUFBMnVCLEVBQUFoNUIs
RUFBQS9JLFVBQUFnakMsbUJBQUF0NEIsRUFBQWt3RCxFQUNBNzRCLEdBQUFpRyxZQUFBbmlCLElB
Q0F1MUMsRUFBQTMxRCxLQUFBaStELEdBUUEsTUFBQXRJLElBU0FxSyxrQkFBQSxTQUFBTixHQUNB
LEdBQUFqSyxHQUFBbDdELEtBQUE4RSxpQkFFQWcyRCxHQUFBVyxnQkFBQVAsR0FBQSxFQUNBLFFB
QUFwNkQsS0FBQW82RCxHQUNBQSxFQUFBMTdELGVBQUFzQixJQUNBd0UsRUFBQSxNQUlBLElBQUF3
bEIsSUFBQTJpRCxFQUFBdEksR0FDQXVJLEdBQUExdEUsS0FBQThxQixJQVNBNDZDLGFBQUEsU0FB
QXhHLEdBQ0EsR0FBQWhFLEdBQUFsN0QsS0FBQThFLGlCQUVBZzJELEdBQUFXLGdCQUFBUCxHQUFB
LEVBQ0EsUUFBQXA2RCxLQUFBbzZELEdBQ0FBLEVBQUExN0QsZUFBQXNCLElBQ0F3RSxFQUFBLE1B
R0EsSUFBQXdsQixJQUFBMGlELEVBQUF0TyxHQUNBd08sR0FBQTF0RSxLQUFBOHFCLElBVUFtd0Ms
ZUFBQSxTQUFBNlMsRUFBQS9rRSxFQUFBMkIsR0FFQTFLLEtBQUErdEUsZ0JBQUFELEVBQUEva0Us
RUFBQTJCLElBU0FxakUsZ0JBQUEsU0FBQUQsRUFBQS9rRSxFQUFBMkIsR0FDQSxHQUFBd3dELEdB
QUFsN0QsS0FBQThFLGtCQUNBdTJELEtBQ0FELEtBQ0FELEVBQUFuN0QsS0FBQTZ0RSwwQkFBQTNT
LEVBQUE0UyxFQUFBMVMsRUFBQUMsRUFBQXR5RCxFQUFBMkIsRUFDQSxJQUFBeXdELEdBQUFELEVB
QUEsQ0FHQSxHQUNBcDZELEdBREFncUIsRUFBQSxLQUlBa2pELEVBQUEsRUFDQWxvRCxFQUFBLEVB
RUFtb0QsRUFBQSxFQUNBQyxFQUFBLElBQ0EsS0FBQXB0RSxJQUFBcTZELEdBQ0EsR0FBQUEsRUFB
QTM3RCxlQUFBc0IsR0FBQSxDQUdBLEdBQUF3NkQsR0FBQUosS0FBQXA2RCxHQUNBazZDLEVBQUFt
Z0IsRUFBQXI2RCxFQUNBdzZELEtBQUF0Z0IsR0FDQWx3QixFQUFBMWdCLEVBQUEwZ0IsRUFBQTlx
QixLQUFBOHBCLFVBQUF3eEMsRUFBQTRTLEVBQUFGLEVBQUFsb0QsSUFDQUEsRUFBQTNmLEtBQUE0
d0QsSUFBQXVFLEVBQUF0ekIsWUFBQWxpQixHQUNBdzFDLEVBQUF0ekIsWUFBQWdtQyxJQUVBMVMs
SUFFQXgxQyxFQUFBM2YsS0FBQTR3RCxJQUFBdUUsRUFBQXR6QixZQUFBbGlCLElBSUFnRixFQUFB
MWdCLEVBQUEwZ0IsRUFBQTlxQixLQUFBbXVFLG1CQUFBbnpCLEVBQUFvZ0IsRUFBQTZTLEdBQUFD
LEVBQUFGLEVBQUFqbEUsRUFBQTJCLElBQ0F1akUsS0FFQUQsSUFDQUUsRUFBQWxrRSxFQUFBNEos
WUFBQW9uQyxHQUdBLElBQUFsNkMsSUFBQXU2RCxHQUNBQSxFQUFBNzdELGVBQUFzQixLQUNBZ3FC
LEVBQUExZ0IsRUFBQTBnQixFQUFBOXFCLEtBQUFvdUUsY0FBQWxULEVBQUFwNkQsR0FBQXU2RCxF
QUFBdjZELEtBR0FncUIsSUFDQTRpRCxFQUFBMXRFLEtBQUE4cUIsR0FFQTlxQixLQUFBOEUsa0JB
QUFxMkQsSUFjQU0sZ0JBQUEsU0FBQTNuRCxHQUNBLEdBQUE0bkQsR0FBQTE3RCxLQUFBOEUsaUJB
Q0FnMkQsR0FBQVcsZ0JBQUFDLEVBQUE1bkQsR0FDQTlULEtBQUE4RSxrQkFBQSxNQVdBZ2xCLFVB
QUEsU0FBQWlZLEVBQUE3VyxFQUFBa2lELEVBQUF0bkQsR0FJQSxHQUFBaWMsRUFBQWlHLFlBQUFs
aUIsRUFDQSxNQUFBd25ELEdBQUF2ckMsRUFBQTdXLEVBQUFraUQsSUFXQWlCLFlBQUEsU0FBQXRz
QyxFQUFBN1csRUFBQXc0QyxHQUNBLE1BQUF5SixHQUFBekosRUFBQXg0QyxFQUFBNlcsRUFBQWlH
LGNBU0FyaEIsWUFBQSxTQUFBb2IsRUFBQXQrQixHQUNBLE1BQUE4cEUsR0FBQXhyQyxFQUFBdCtC
LElBY0EwcUUsbUJBQUEsU0FBQXBzQyxFQUFBMmhDLEVBQUF4NEMsRUFBQXJGLEVBQUE5YyxFQUFB
MkIsR0FFQSxNQURBcTNCLEdBQUFpRyxZQUFBbmlCLEVBQ0E3bEIsS0FBQXF1RSxZQUFBdHNDLEVB
QUE3VyxFQUFBdzRDLElBV0EwSyxjQUFBLFNBQUFyc0MsRUFBQXQrQixHQUNBLEdBQUF1bkIsR0FB
QWhyQixLQUFBMm1CLFlBQUFvYixFQUFBdCtCLEVBRUEsT0FEQXMrQixHQUFBaUcsWUFBQSxLQUNB
aGQsS0FLQWxzQixHQUFBRCxRQUFBc2pFLEcxSjZra0JNLFNBQVNyakUsRUFBUUQsRUFBU0gsRzJK
OS9rQmhDLFlBV0EsU0FBQTR2RSxHQUFBOTJELEdBQ0EsU0FBQUEsR0FBQSxrQkFBQUEsR0FBQThu
RCxXQUFBLGtCQUFBOW5ELEdBQUFnb0QsV0FWQSxHQUFBbDZELEdBQUE1RyxFQUFBLEdBMkNBNnZF
LEdBekNBN3ZFLEVBQUEsSUFtREE4dkUsb0JBQUEsU0FBQXhxRSxFQUFBMFAsRUFBQTZDLEdBQ0Er
M0QsRUFBQS8zRCxHQUFBLE9BQUFqUixFQUFBLE9BQ0FpUixFQUFBK29ELFVBQUE1ckQsRUFBQTFQ
LElBWUF5cUUseUJBQUEsU0FBQXpxRSxFQUFBMFAsRUFBQTZDLEdBQ0ErM0QsRUFBQS8zRCxHQUFB
LE9BQUFqUixFQUFBLE1BQ0EsSUFBQW9wRSxHQUFBbjRELEVBQUFsTSxtQkFHQXFrRSxNQUFBcDJC
LEtBQUE1a0MsS0FBQTFQLEVBQUFxRyxxQkFDQWtNLEVBQUFpcEQsVUFBQTlyRCxLQUtBNVUsR0FB
QUQsUUFBQTB2RSxHM0orZ2xCTSxTQUFTenZFLEVBQVFELEc0Si9sbEJ2QixZQUVBLElBQUEwd0Is
R0FBQSw4Q0FFQXp3QixHQUFBRCxRQUFBMHdCLEc1SmdubEJNLFNBQVN6d0IsRUFBUUQsRUFBU0gs
RzZKcm5sQmhDLFlBcUdBLFNBQUFxSixHQUFBdzZCLEdBQ0F2aUMsS0FBQWtJLDBCQU1BbEksS0FB
QXNrRSxzQkFBQSxFQUNBdGtFLEtBQUEydUUsZ0JBQUF0bUUsRUFBQUMsVUFBQSxNQUNBdEksS0FB
QXVpQyxtQkE1R0EsR0FBQTEzQixHQUFBbk0sRUFBQSxHQUVBMkosRUFBQTNKLEVBQUEsSUFDQW9N
LEVBQUFwTSxFQUFBLElBQ0EraUIsRUFBQS9pQixFQUFBLElBQ0F5Z0MsRUFBQXpnQyxFQUFBLElB
RUFxTSxHQURBck0sRUFBQSxHQUNBQSxFQUFBLEtBQ0E2eUIsRUFBQTd5QixFQUFBLElBTUFrd0Us
R0FJQTNqRSxXQUFBazBCLEVBQUFJLHdCQUlBcjBCLE1BQUFpMEIsRUFBQVEsa0JBUUFrdkMsR0FL
QTVqRSxXQUFBLFdBQ0EsR0FBQTZqRSxHQUFBcnRELEVBQUFPLFdBRUEsT0FEQVAsR0FBQUssWUFB
QSxHQUNBZ3RELEdBUUE1akUsTUFBQSxTQUFBNmpFLEdBQ0F0dEQsRUFBQUssV0FBQWl0RCxLQVFB
QyxHQUlBL2pFLFdBQUEsV0FDQWpMLEtBQUEydUUsZ0JBQUFyakUsU0FNQUosTUFBQSxXQUNBbEws
S0FBQTJ1RSxnQkFBQXBqRSxjQVNBQyxHQUFBb2pFLEVBQUFDLEVBQUFHLEdBbUNBekwsR0FRQTkz
RCx1QkFBQSxXQUNBLE1BQUFELElBTUFtSSxtQkFBQSxXQUNBLE1BQUEzVCxNQUFBMnVFLGlCQU1B
NVIsZUFBQSxXQUNBLE1BQUF4ckMsSUFPQTJKLFdBQUEsV0FFQSxNQUFBbDdCLE1BQUEydUUsZ0JB
QUF6ekMsY0FHQUMsU0FBQSxTQUFBRCxHQUNBbDdCLEtBQUEydUUsZ0JBQUF4ekMsU0FBQUQsSUFP
QXh2QixXQUFBLFdBQ0FyRCxFQUFBc0QsUUFBQTNMLEtBQUEydUUsaUJBQ0EzdUUsS0FBQTJ1RSxn
QkFBQSxNQUlBOWpFLEdBQUE5QyxFQUFBeEksVUFBQXdMLEVBQUF3NEQsR0FFQXo0RCxFQUFBaUIs
YUFBQWhFLEdBRUFqSixFQUFBRCxRQUFBa0osRzdKcW9sQk0sU0FBU2pKLEVBQVFELEVBQVNILEc4
SjF5bEJoQyxZQU1BLFNBQUE0Z0UsR0FBQTVyRCxFQUFBMVAsRUFBQXVTLEdBQ0Esa0JBQUE3QyxH
QUNBQSxFQUFBMVAsRUFBQXFHLHFCQUdBa2tFLEVBQUFDLG9CQUFBeHFFLEVBQUEwUCxFQUFBNkMs
R0FJQSxRQUFBaXBELEdBQUE5ckQsRUFBQTFQLEVBQUF1UyxHQUNBLGtCQUFBN0MsR0FDQUEsRUFB
QSxNQUdBNjZELEVBQUFFLHlCQUFBenFFLEVBQUEwUCxFQUFBNkMsR0FsQkEsR0FBQWc0RCxHQUFB
N3ZFLEVBQUEsS0FFQXlVLElBb0JBQSxHQUFBRCxXQUFBLFNBQUEwbkIsRUFBQW5rQixHQUNBLFVB
QUFBLEdBQUEsZ0JBQUFBLEdBQUEsQ0FHQSxHQUFBL0MsR0FBQStDLEVBQUEvQyxHQUNBLE9BQUFB
LEdBQ0E0ckQsRUFBQTVyRCxFQUFBa25CLEVBQUFua0IsRUFBQUUsVUFJQXhELEVBQUFrQixpQkFB
QSxTQUFBSCxFQUFBRCxHQWFBLEdBQUFnN0QsR0FBQSxLQUNBQyxFQUFBLElBQ0EsUUFBQWg3RCxH
QUFBLGdCQUFBQSxLQUNBKzZELEVBQUEvNkQsRUFBQVIsSUFDQXc3RCxFQUFBaDdELEVBQUF5QyxP
QUdBLElBQUF3NEQsR0FBQSxLQUNBQyxFQUFBLElBTUEsT0FMQSxRQUFBbjdELEdBQUEsZ0JBQUFB
LEtBQ0FrN0QsRUFBQWw3RCxFQUFBUCxJQUNBMDdELEVBQUFuN0QsRUFBQTBDLFFBR0FzNEQsSUFB
QUUsR0FFQSxnQkFBQUEsSUFBQUMsSUFBQUYsR0FHQS83RCxFQUFBWSxXQUFBLFNBQUE2bUIsRUFB
QW5rQixHQUNBLFVBQUFBLEdBQUEsZ0JBQUFBLEdBQUEsQ0FHQSxHQUFBL0MsR0FBQStDLEVBQUEv
QyxHQUNBLE9BQUFBLEdBQ0E4ckQsRUFBQTlyRCxFQUFBa25CLEVBQUFua0IsRUFBQUUsVUFJQTdY
LEVBQUFELFFBQUFzVSxHOUoyemxCTSxTQUFTclUsRUFBUUQsRUFBU0gsRytKeDRsQmhDLFlBK0JB
LFNBQUE4aEUsR0FBQThELEdBQ0F0a0UsS0FBQWtJLDBCQUNBbEksS0FBQXNrRSx1QkFDQXRrRSxL
QUFBdWlDLGtCQUFBLEVBQ0F2aUMsS0FBQTg4RCxZQUFBLEdBQUF1UyxHQUFBcnZFLE1BakNBLEdB
QUE2SyxHQUFBbk0sRUFBQSxHQUVBb00sRUFBQXBNLEVBQUEsSUFDQXFNLEVBQUFyTSxFQUFBLElB
RUEyd0UsR0FEQTN3RSxFQUFBLEdBQ0FBLEVBQUEsTUFPQThNLEtBU0E4akUsR0FDQWxsRSxRQUFB
LGNBY0FtNUQsR0FPQTkzRCx1QkFBQSxXQUNBLE1BQUFELElBTUFtSSxtQkFBQSxXQUNBLE1BQUEy
N0QsSUFNQXZTLGVBQUEsV0FDQSxNQUFBLzhELE1BQUE4OEQsYUFPQXB4RCxXQUFBLGFBRUF3dkIs
V0FBQSxhQUVBQyxTQUFBLGFBR0F0d0IsR0FBQTIxRCxFQUFBamhFLFVBQUF3TCxFQUFBdzRELEdB
RUF6NEQsRUFBQWlCLGFBQUF5MEQsR0FFQTFoRSxFQUFBRCxRQUFBMmhFLEcvSnc1bEJNLFNBQVMx
aEUsRUFBUUQsRUFBU0gsR2dLcitsQmhDLFlBRUEsU0FBQWk4QixHQUFBQyxFQUFBQyxHQUFpRCxL
QUFBRCxZQUFBQyxJQUEwQyxTQUFBajVCLFdBQUEscUNBTTNGLFFBQUFpN0MsR0FBQXhyQixFQUFB
QyxJQUpBLEdBQUFDLEdBQUE3eUIsRUFBQSxJQW1CQTJ3RSxHQWpCQTN3RSxFQUFBLEdBaUJBLFdB
Q0EsUUFBQTJ3RSxHQUFBdG1FLEdBQ0E0eEIsRUFBQTM2QixLQUFBcXZFLEdBRUFydkUsS0FBQStJ
LGNBZ0dBLE1BcEZBc21FLEdBQUE5dkUsVUFBQWl5QixVQUFBLFNBQUFILEdBQ0EsVUFhQWcrQyxF
QUFBOXZFLFVBQUFreUIsZ0JBQUEsU0FBQUosRUFBQTVvQixFQUFBNm9CLEdBQ0F0eEIsS0FBQStJ
LFlBQUErYixtQkFDQXlNLEVBQUFFLGdCQUFBSixFQUFBNW9CLEVBQUE2b0IsSUFtQkErOUMsRUFB
QTl2RSxVQUFBcXlCLG1CQUFBLFNBQUFQLEdBQ0FyeEIsS0FBQStJLFlBQUErYixrQkFDQXlNLEVB
QUFLLG1CQUFBUCxHQUVBd3JCLEVBQUF4ckIsRUFBQSxnQkFpQkFnK0MsRUFBQTl2RSxVQUFBdXlC
LG9CQUFBLFNBQUFULEVBQUFVLEdBQ0EveEIsS0FBQStJLFlBQUErYixrQkFDQXlNLEVBQUFPLG9C
QUFBVCxFQUFBVSxHQUVBOHFCLEVBQUF4ckIsRUFBQSxpQkFnQkFnK0MsRUFBQTl2RSxVQUFBMnlC
LGdCQUFBLFNBQUFiLEVBQUFjLEdBQ0FueUIsS0FBQStJLFlBQUErYixrQkFDQXlNLEVBQUFXLGdC
QUFBYixFQUFBYyxHQUVBMHFCLEVBQUF4ckIsRUFBQSxhQUlBZytDLEtBR0F2d0UsR0FBQUQsUUFB
QXd3RSxHaEtzL2xCTSxTQUFTdndFLEVBQVFELEdpS3JubUJ2QixZQUVBQyxHQUFBRCxRQUFBLFVq
S3FvbUJNLFNBQVNDLEVBQVFELEdrS3ZvbUJ2QixZQUVBLElBQUEwd0UsSUFDQUMsTUFBQSwrQkFD
QUMsSUFBQSx3Q0FvQkFDLEdBQ0FDLGFBQUEsZ0JBQ0FDLFdBQUEsRUFDQUMsU0FBQSxFQUNBQyxr
QkFBQSxxQkFDQUMsYUFBQSxlQUNBQyxXQUFBLEVBQ0FDLFVBQUEsRUFDQUMsV0FBQSxjQUNBQyxP
QUFBLEVBQ0EvOUQsY0FBQSxnQkFDQWcrRCxjQUFBLGdCQUNBQyxZQUFBLGNBQ0FDLFFBQUEsRUFD
QUMsY0FBQSxnQkFDQUMsWUFBQSxjQUNBQyxjQUFBLGlCQUNBQyxLQUFBLEVBQ0FDLE1BQUEsRUFD
QUMsS0FBQSxFQUNBQyxHQUFBLEVBQ0FDLFNBQUEsV0FDQUMsVUFBQSxhQUNBQyxLQUFBLEVBQ0FD
LFNBQUEsWUFDQUMsU0FBQSxZQUNBQyxjQUFBLGdCQUNBQyxtQkFBQSxzQkFDQUMsMEJBQUEsOEJB
Q0FDLGFBQUEsZ0JBQ0FDLGVBQUEsa0JBQ0FDLGtCQUFBLG9CQUNBQyxpQkFBQSxtQkFDQUMsT0FB
QSxFQUNBQyxHQUFBLEVBQ0FDLEdBQUEsRUFDQXZ4RSxFQUFBLEVBQ0F3eEUsV0FBQSxFQUNBQyxR
QUFBLEVBQ0FDLGdCQUFBLGtCQUNBQyxVQUFBLEVBQ0FDLFFBQUEsRUFDQUMsUUFBQSxFQUNBQyxp
QkFBQSxvQkFDQUMsSUFBQSxFQUNBQyxHQUFBLEVBQ0FDLEdBQUEsRUFDQUMsU0FBQSxXQUNBQyxV
QUFBLEVBQ0FDLGlCQUFBLG9CQUNBcHlDLElBQUEsRUFDQXF5QyxTQUFBLEVBQ0FDLDBCQUFBLDRC
QUNBQyxLQUFBLEVBQ0FsN0MsWUFBQSxlQUNBbTdDLFNBQUEsWUFDQUMsT0FBQSxFQUNBQyxVQUFB
LFlBQ0FDLFlBQUEsY0FDQUMsV0FBQSxjQUNBdDdDLGFBQUEsZ0JBQ0F1N0MsVUFBQSxFQUNBNzRD
LFdBQUEsY0FDQUQsU0FBQSxZQUNBKzRDLGVBQUEsbUJBQ0FDLFlBQUEsZUFDQWw1QyxVQUFBLGFB
Q0FDLFlBQUEsZUFDQW5ELFdBQUEsY0FDQTUyQixPQUFBLEVBQ0ErQyxLQUFBLEVBQ0Frd0UsR0FB
QSxFQUNBQyxHQUFBLEVBQ0FDLEdBQUEsRUFDQUMsR0FBQSxFQUNBQyxVQUFBLGFBQ0FDLDJCQUFB
LCtCQUNBQyx5QkFBQSw2QkFDQUMsU0FBQSxXQUNBQyxrQkFBQSxvQkFDQUMsY0FBQSxnQkFDQUMs
UUFBQSxFQUNBQyxVQUFBLGNBQ0FDLGFBQUEsaUJBQ0FDLFlBQUEsRUFDQUMsZUFBQSxrQkFDQUMs
R0FBQSxFQUNBQyxJQUFBLEVBQ0FDLFVBQUEsRUFDQXZwRCxFQUFBLEVBQ0F3cEQsR0FBQSxFQUNB
QyxHQUFBLEVBQ0FDLEdBQUEsRUFDQUMsR0FBQSxFQUNBQyxhQUFBLGVBQ0FDLGlCQUFBLG1CQUNB
QyxRQUFBLEVBQ0FDLFVBQUEsWUFDQUMsV0FBQSxhQUNBQyxTQUFBLFdBQ0FDLGFBQUEsZUFDQUMs
Y0FBQSxpQkFDQUMsY0FBQSxpQkFDQUMsa0JBQUEsb0JBQ0FDLE1BQUEsRUFDQUMsVUFBQSxhQUNB
QyxVQUFBLGFBQ0FDLFlBQUEsZUFDQUMsYUFBQSxlQUNBQyxZQUFBLGNBQ0FDLFlBQUEsY0FDQUMs
S0FBQSxFQUNBQyxpQkFBQSxtQkFDQUMsVUFBQSxZQUNBQyxhQUFBLEVBQ0FDLEtBQUEsRUFDQUMs
V0FBQSxhQUNBMU0sT0FBQSxFQUNBcHlDLFFBQUEsRUFDQSsrQyxTQUFBLEVBQ0E5K0MsTUFBQSxF
QUNBKytDLE9BQUEsRUFDQUMsWUFBQSxFQUNBQyxPQUFBLEVBQ0FDLFNBQUEsRUFDQUMsaUJBQUEs
b0JBQ0FDLGtCQUFBLHFCQUNBQyxXQUFBLGNBQ0FDLFFBQUEsV0FDQUMsV0FBQSxhQUNBQyxvQkFB
QSxzQkFDQUMsaUJBQUEsbUJBQ0FDLGFBQUEsZUFDQUMsY0FBQSxpQkFDQUMsT0FBQSxFQUNBQyxV
QUFBLFlBQ0FDLFVBQUEsWUFDQUMsVUFBQSxZQUNBQyxjQUFBLGdCQUNBQyxvQkFBQSxzQkFDQUMs
ZUFBQSxpQkFDQUMsRUFBQSxFQUNBQyxPQUFBLEVBQ0FDLEtBQUEsT0FDQUMsS0FBQSxPQUNBQyxn
QkFBQSxtQkFDQUMsWUFBQSxjQUNBQyxVQUFBLFlBQ0FDLG1CQUFBLHFCQUNBQyxpQkFBQSxtQkFD
QUMsUUFBQSxFQUNBeHhCLE9BQUEsRUFDQXl4QixPQUFBLEVBQ0FDLEdBQUEsRUFDQUMsR0FBQSxF
QUNBQyxNQUFBLEVBQ0FDLEtBQUEsRUFDQUMsZUFBQSxrQkFDQUMsTUFBQSxFQUNBQyxRQUFBLEVB
Q0FDLGlCQUFBLG1CQUNBQyxpQkFBQSxtQkFDQUMsTUFBQSxFQUNBQyxhQUFBLGVBQ0EvUSxZQUFB
LGNBQ0FnUixhQUFBLGVBQ0FDLE1BQUEsRUFDQUMsTUFBQSxFQUNBQyxZQUFBLGNBQ0FDLFVBQUEs
YUFDQXJoRCxZQUFBLGVBQ0FzaEQsc0JBQUEseUJBQ0FDLHVCQUFBLDBCQUNBNXpELE9BQUEsRUFD
QTZ6RCxPQUFBLEVBQ0F2aEQsZ0JBQUEsbUJBQ0FDLGlCQUFBLG9CQUNBdWhELGNBQUEsaUJBQ0FD
LGVBQUEsa0JBQ0F2aEQsaUJBQUEsb0JBQ0FDLGNBQUEsaUJBQ0FDLFlBQUEsZUFDQXNoRCxhQUFB
LGVBQ0FDLGVBQUEsaUJBQ0FDLFlBQUEsY0FDQUMsUUFBQSxVQUNBQyxRQUFBLFVBQ0FDLFdBQUEs
Y0FDQUMsZUFBQSxrQkFDQUMsY0FBQSxpQkFDQUMsV0FBQSxhQUNBMTJFLEdBQUEsRUFDQXFqRCxV
QUFBLEVBQ0FzekIsR0FBQSxFQUNBQyxHQUFBLEVBQ0FDLGtCQUFBLHFCQUNBQyxtQkFBQSxzQkFD
QUMsUUFBQSxFQUNBQyxZQUFBLGVBQ0FDLGFBQUEsZ0JBQ0FDLFdBQUEsZUFDQUMsWUFBQSxlQUNB
QyxTQUFBLFlBQ0FDLGFBQUEsZ0JBQ0FDLGNBQUEsaUJBQ0E5ekIsT0FBQSxFQUNBK3pCLGFBQUEs
Z0JBQ0E5a0UsUUFBQSxFQUNBK2tFLFNBQUEsYUFDQUMsWUFBQSxnQkFDQUMsWUFBQSxnQkFDQUMs
UUFBQSxVQUNBQyxXQUFBLGFBQ0FDLFdBQUEsRUFDQUMsT0FBQSxFQUNBQyxZQUFBLGVBQ0FDLFlB
QUEsZUFDQTV5RCxFQUFBLEVBQ0E2eUQsUUFBQSxXQUNBQyxHQUFBLEVBQ0FDLEdBQUEsRUFDQUMs
aUJBQUEsbUJBQ0FDLGFBQUEsZ0JBQ0FDLGFBQUEsZ0JBQ0FDLFVBQUEsYUFDQUMsVUFBQSxhQUNB
QyxVQUFBLGFBQ0FDLFdBQUEsY0FDQUMsVUFBQSxhQUNBQyxRQUFBLFdBQ0FDLE1BQUEsRUFDQUMs
V0FBQSxjQUNBQyxRQUFBLFdBQ0FDLFNBQUEsWUFDQTN6RCxFQUFBLEVBQ0E0ekQsR0FBQSxFQUNB
QyxHQUFBLEVBQ0FDLGlCQUFBLG1CQUNBQyxFQUFBLEVBQ0FDLFdBQUEsY0FHQTVRLEdBQ0FyNkQs
Y0FDQUMsd0JBQ0FncUUsYUFBQW5NLEVBQUFDLE1BQ0FtTSxhQUFBcE0sRUFBQUMsTUFDQW9NLFVB
QUFyTSxFQUFBQyxNQUNBcU0sVUFBQXRNLEVBQUFDLE1BQ0FzTSxVQUFBdk0sRUFBQUMsTUFDQXVN
LFdBQUF4TSxFQUFBQyxNQUNBd00sVUFBQXpNLEVBQUFDLE1BQ0F5TSxRQUFBMU0sRUFBQUUsSUFD
QTJNLFFBQUE3TSxFQUFBRSxJQUNBNE0sU0FBQTlNLEVBQUFFLEtBRUE5OUQscUJBR0FyUyxRQUFB
c0QsS0FBQThzRSxHQUFBaHRFLFFBQUEsU0FBQWEsR0FDQXVvRSxFQUFBcjZELFdBQUFsTyxHQUFB
LEVBQ0Ftc0UsRUFBQW5zRSxLQUNBdW9FLEVBQUFuNkQsa0JBQUFwTyxHQUFBbXNFLEVBQUFuc0Us
TUFJQXpFLEVBQUFELFFBQUFpdEUsR2xLdXBtQk0sU0FBU2h0RSxFQUFRRCxFQUFTSCxHbUt6N21C
aEMsWUEwQ0EsU0FBQWdoQyxHQUFBajhCLEdBQ0EscUJBQUFBLElBQUEwN0IsRUFBQUMseUJBQUEz
N0IsR0FDQSxPQUNBMDhCLE1BQUExOEIsRUFBQTI4QixlQUNBQyxJQUFBNThCLEVBQUE2OEIsYUFF
RyxJQUFBOTVCLE9BQUFrNUIsYUFBQSxDQUNILEdBQUFRLEdBQUExNUIsT0FBQWs1QixjQUNBLFFB
Q0F5bkMsV0FBQWpuQyxFQUFBaW5DLFdBQ0FDLGFBQUFsbkMsRUFBQWtuQyxhQUNBdnlDLFVBQUFx
TCxFQUFBckwsVUFDQXd5QyxZQUFBbm5DLEVBQUFtbkMsYUFFRyxHQUFBNWdFLFNBQUF5NUIsVUFB
QSxDQUNILEdBQUFLLEdBQUE5NUIsU0FBQXk1QixVQUFBTSxhQUNBLFFBQ0FDLGNBQUFGLEVBQUFF
LGdCQUNBdHhCLEtBQUFveEIsRUFBQXB4QixLQUNBd3RFLElBQUFwOEMsRUFBQXE4QyxZQUNBQyxL
QUFBdDhDLEVBQUF1OEMsZUFXQSxRQUFBQyxHQUFBcndFLEVBQUFDLEdBS0EsR0FBQXF3RSxHQUFB
LE1BQUFob0QsT0FBQUQsSUFDQSxXQUlBLElBQUFrb0QsR0FBQXY5QyxFQUFBMUssRUFDQSxLQUFB
a29ELElBQUF2MEQsRUFBQXUwRCxFQUFBRCxHQUFBLENBQ0FDLEVBQUFELENBRUEsSUFBQS9wRCxH
QUFBM21CLEVBQUFqRSxVQUFBdWpCLEVBQUFvVixPQUFBMHZCLEVBQUFqa0QsRUFBQUMsRUFPQSxP
QUxBdW1CLEdBQUF2cEIsS0FBQSxTQUNBdXBCLEVBQUFqd0IsT0FBQSt4QixFQUVBclosRUFBQVAs
NkJBQUE4WCxHQUVBQSxFQUdBLFlBL0ZBLEdBQUF2WCxHQUFBamQsRUFBQSxJQUNBaUksRUFBQWpJ
LEVBQUEsR0FDQTRILEVBQUE1SCxFQUFBLEdBQ0F5Z0MsRUFBQXpnQyxFQUFBLElBQ0E2TixFQUFB
N04sRUFBQSxJQUVBcTJCLEVBQUFyMkIsRUFBQSxJQUNBMnBDLEVBQUEzcEMsRUFBQSxJQUNBaXFC
LEVBQUFqcUIsRUFBQSxJQUVBeStFLEVBQUF4MkUsRUFBQUosV0FBQSxnQkFBQUUsb0JBQUE0Sixj
QUFBLEdBRUF3YixHQUNBb1YsUUFDQTFtQix5QkFDQTIwQyxRQUFBLFdBQ0FDLFNBQUEsbUJBRUEv
c0MsY0FBQSxrSEFJQTRTLEVBQUEsS0FDQTI3QixFQUFBLEtBQ0F1c0IsRUFBQSxLQUNBRixHQUFB
LEVBSUFJLEdBQUEsRUFtRkF4UixHQUNBLy9DLGFBRUFwUyxjQUFBLFNBQUFDLEVBQUFqTixFQUFB
QyxFQUFBQyxHQUNBLElBQUF5d0UsRUFDQSxXQUdBLElBQUFockIsR0FBQTNsRCxFQUFBbkcsRUFB
QVIsb0JBQUEyRyxHQUFBakcsTUFFQSxRQUFBa1QsR0FFQSxnQkFDQTJ1QixFQUFBK3BCLElBQUEs
U0FBQUEsRUFBQTl5QixtQkFDQXRLLEVBQUFvOUIsRUFDQXpCLEVBQUFsa0QsRUFDQXl3RSxFQUFB
LEtBRUEsTUFDQSxlQUNBbG9ELEVBQUEsS0FDQTI3QixFQUFBLEtBQ0F1c0IsRUFBQSxJQUNBLE1B
R0Esb0JBQ0FGLEdBQUEsQ0FDQSxNQUNBLHNCQUNBLGlCQUVBLE1BREFBLElBQUEsRUFDQUQsRUFB
QXJ3RSxFQUFBQyxFQVVBLDBCQUNBLEdBQUF3d0UsRUFDQSxLQUdBLGtCQUNBLGVBQ0EsTUFBQUos
R0FBQXJ3RSxFQUFBQyxHQUdBLGFBR0F5TSxlQUFBLFNBQUFoVixFQUFBMlUsRUFBQUMsR0FDQSxh
QUFBRCxJQUNBcWtFLEdBQUEsSUFLQXQrRSxHQUFBRCxRQUFBK3NFLEduS3k4bUJNLFNBQVM5c0Us
RUFBUUQsRUFBU0gsR29LeG5uQmhDLFlBNkRBLFNBQUErWixHQUFBclUsR0FHQSxVQUFBQSxFQUFB
c1UsWUFHQSxRQUFBakIsR0FBQUMsR0FDQSxpQkFBQUEsR0FBQSxVQUFBQSxHQUFBLFdBQUFBLEdB
QUEsYUFBQUEsRUFsRUEsR0FBQXBTLEdBQUE1RyxFQUFBLEdBRUE2MUIsRUFBQTcxQixFQUFBLElB
Q0FpZCxFQUFBamQsRUFBQSxJQUNBNEgsRUFBQTVILEVBQUEsR0FDQTIrRSxFQUFBMytFLEVBQUEs
S0FDQTQrRSxFQUFBNStFLEVBQUEsS0FDQTZOLEVBQUE3TixFQUFBLElBQ0E2K0UsRUFBQTcrRSxF
QUFBLEtBQ0E4K0UsRUFBQTkrRSxFQUFBLEtBQ0F5a0IsRUFBQXprQixFQUFBLElBQ0ErK0UsRUFB
QS8rRSxFQUFBLEtBQ0FnL0UsRUFBQWgvRSxFQUFBLEtBQ0FpL0UsRUFBQWovRSxFQUFBLEtBQ0F3
ZCxFQUFBeGQsRUFBQSxJQUNBay9FLEVBQUFsL0UsRUFBQSxLQUVBc0MsRUFBQXRDLEVBQUEsR0FD
QW0wQixFQUFBbjBCLEVBQUEsSUFxQkFtdEIsR0FwQkFudEIsRUFBQSxPQXFCQW0vRSxNQUNBLHFx
QkFBQW43RSxRQUFBLFNBQUFtTCxHQUNBLEdBQUFpd0UsR0FBQWp3RSxFQUFBLEdBQUEybkIsY0FB
QTNuQixFQUFBbE8sTUFBQSxHQUNBbytFLEVBQUEsS0FBQUQsRUFDQUUsRUFBQSxNQUFBRixFQUVB
bjBFLEdBQ0E0USx5QkFDQTIwQyxRQUFBNnVCLEVBQ0E1dUIsU0FBQTR1QixFQUFBLFdBRUEzN0Qs
Y0FBQTQ3RCxHQUVBbnlELEdBQUFoZSxHQUFBbEUsRUFDQWswRSxFQUFBRyxHQUFBcjBFLEdBR0Es
SUFBQXMwRSxNQVlBdFMsR0FDQTkvQyxhQUVBcFMsY0FBQSxTQUFBQyxFQUFBak4sRUFBQUMsRUFB
QUMsR0FDQSxHQUFBSCxHQUFBcXhFLEVBQUFua0UsRUFDQSxLQUFBbE4sRUFDQSxXQUVBLElBQUEw
eEUsRUFDQSxRQUFBeGtFLEdBQ0EsZUFDQSxpQkFDQSx3QkFDQSx3QkFDQSxpQkFDQSxtQkFDQSxl
QUNBLGVBQ0EsZUFDQSxpQkFDQSxjQUNBLG9CQUNBLHdCQUNBLG1CQUNBLGVBQ0EsY0FDQSxpQkFD
QSxrQkFDQSxvQkFDQSxlQUNBLGdCQUNBLGlCQUNBLGlCQUNBLGdCQUNBLGlCQUNBLG9CQUNBLHNC
QUNBLGlCQUdBd2tFLEVBQUEzeEUsQ0FDQSxNQUNBLG1CQUlBLE9BQUFzbUIsRUFBQW5tQixHQUNB
LFdBR0Esa0JBQ0EsZUFDQXd4RSxFQUFBVixDQUNBLE1BQ0EsZUFDQSxlQUNBVSxFQUFBWCxDQUNB
LE1BQ0EsZ0JBR0EsT0FBQTd3RSxFQUFBcVgsT0FDQSxXQUdBLHNCQUNBLG1CQUNBLG1CQUNBLGlC
QUdBLGtCQUNBLG1CQUNBLHFCQUNBbTZELEVBQUEvNkQsQ0FDQSxNQUNBLGVBQ0EsaUJBQ0EsbUJB
Q0Esa0JBQ0EsbUJBQ0Esa0JBQ0EsbUJBQ0EsY0FDQSs2RCxFQUFBVCxDQUNBLE1BQ0Esc0JBQ0Es
a0JBQ0EsbUJBQ0Esb0JBQ0FTLEVBQUFSLENBQ0EsTUFDQSx1QkFDQSw0QkFDQSx3QkFDQVEsRUFB
QWIsQ0FDQSxNQUNBLHdCQUNBYSxFQUFBUCxDQUNBLE1BQ0EsaUJBQ0FPLEVBQUFoaUUsQ0FDQSxN
QUNBLGdCQUNBZ2lFLEVBQUFOLENBQ0EsTUFDQSxlQUNBLGFBQ0EsZUFDQU0sRUFBQVosRUFHQVks
RUFBQSxPQUFBNTRFLEVBQUEsS0FBQW9VLEVBQ0EsSUFBQTdMLEdBQUFxd0UsRUFBQTUxRSxVQUFB
a0UsRUFBQUMsRUFBQUMsRUFBQUMsRUFFQSxPQURBZ1AsR0FBQVAsNkJBQUF2TixHQUNBQSxHQUdB
dUwsZUFBQSxTQUFBaFYsRUFBQTJVLEVBQUFDLEdBTUEsZUFBQUQsSUFBQXRCLEVBQUFyVCxFQUFB
ZzhELE1BQUEsQ0FDQSxHQUFBNzhELEdBQUFrVixFQUFBclUsR0FDQVgsRUFBQTZDLEVBQUFSLG9C
QUFBMUIsRUFDQTY1RSxHQUFBMTZFLEtBQ0EwNkUsRUFBQTE2RSxHQUFBZ3hCLEVBQUFDLE9BQUEv
d0IsRUFBQSxRQUFBekMsTUFLQXVZLG1CQUFBLFNBQUFuVixFQUFBMlUsR0FDQSxlQUFBQSxJQUFB
dEIsRUFBQXJULEVBQUFnOEQsTUFBQSxDQUNBLEdBQUE3OEQsR0FBQWtWLEVBQUFyVSxFQUNBNjVF
LEdBQUExNkUsR0FBQXNZLGVBQ0FvaUUsR0FBQTE2RSxLQUtBekUsR0FBQUQsUUFBQThzRSxHcEt5
b25CTSxTQUFTN3NFLEVBQVFELEVBQVNILEdxSy8xbkJoQyxZQXFCQSxTQUFBMitFLEdBQUE3d0Us
RUFBQTJQLEVBQUF6UCxFQUFBQyxHQUNBLE1BQUFKLEdBQUF0TixLQUFBZSxLQUFBd00sRUFBQTJQ
LEVBQUF6UCxFQUFBQyxHQXBCQSxHQUFBSixHQUFBN04sRUFBQSxJQU9BeS9FLEdBQ0FDLGNBQUEs
S0FDQUMsWUFBQSxLQUNBQyxjQUFBLEtBYUEveEUsR0FBQStCLGFBQUErdUUsRUFBQWMsR0FFQXIv
RSxFQUFBRCxRQUFBdytFLEdySysybkJNLFNBQVN2K0UsRUFBUUQsRUFBU0gsR3NLMTRuQmhDLFlB
b0JBLFNBQUE0K0UsR0FBQTl3RSxFQUFBMlAsRUFBQXpQLEVBQUFDLEdBQ0EsTUFBQUosR0FBQXRO
LEtBQUFlLEtBQUF3TSxFQUFBMlAsRUFBQXpQLEVBQUFDLEdBbkJBLEdBQUFKLEdBQUE3TixFQUFB
LElBTUE2L0UsR0FDQUMsY0FBQSxTQUFBM3dFLEdBQ0EsdUJBQUFBLEtBQUEyd0UsY0FBQWg0RSxP
QUFBZzRFLGVBY0FqeUUsR0FBQStCLGFBQUFndkUsRUFBQWlCLEdBRUF6L0UsRUFBQUQsUUFBQXkr
RSxHdEswNW5CTSxTQUFTeCtFLEVBQVFELEVBQVNILEd1S3A3bkJoQyxZQWtCQSxTQUFBNHZELEdB
QUE5aEQsRUFBQTJQLEVBQUF6UCxFQUFBQyxHQUNBLE1BQUFKLEdBQUF0TixLQUFBZSxLQUFBd00s
RUFBQTJQLEVBQUF6UCxFQUFBQyxHQWpCQSxHQUFBSixHQUFBN04sRUFBQSxJQU1BKy9FLEdBQ0Ev
M0QsS0FBQSxLQWFBbmEsR0FBQStCLGFBQUFnZ0QsRUFBQW13QixHQUVBMy9FLEVBQUFELFFBQUF5
dkQsR3ZLbzhuQk0sU0FBU3h2RCxFQUFRRCxFQUFTSCxHd0s1OW5CaEMsWUFrQkEsU0FBQSsrRSxH
QUFBanhFLEVBQUEyUCxFQUFBelAsRUFBQUMsR0FDQSxNQUFBd1csR0FBQWxrQixLQUFBZSxLQUFB
d00sRUFBQTJQLEVBQUF6UCxFQUFBQyxHQWpCQSxHQUFBd1csR0FBQXprQixFQUFBLElBTUFnZ0Ys
R0FDQUMsYUFBQSxLQWFBeDdELEdBQUE3VSxhQUFBbXZFLEVBQUFpQixHQUVBNS9FLEVBQUFELFFB
QUE0K0UsR3hLNCtuQk0sU0FBUzMrRSxFQUFRRCxFQUFTSCxHeUtwZ29CaEMsWUFrQkEsU0FBQTYr
RSxHQUFBL3dFLEVBQUEyUCxFQUFBelAsRUFBQUMsR0FDQSxNQUFBdVAsR0FBQWpkLEtBQUFlLEtB
QUF3TSxFQUFBMlAsRUFBQXpQLEVBQUFDLEdBakJBLEdBQUF1UCxHQUFBeGQsRUFBQSxJQU1Ba2dG
LEdBQ0EzNkQsY0FBQSxLQWFBL0gsR0FBQTVOLGFBQUFpdkUsRUFBQXFCLEdBRUE5L0UsRUFBQUQs
UUFBQTArRSxHektvaG9CTSxTQUFTeitFLEVBQVFELEVBQVNILEcwSzVpb0JoQyxZQW1CQSxTQUFB
c3dELEdBQUF4aUQsRUFBQTJQLEVBQUF6UCxFQUFBQyxHQUNBLE1BQUFKLEdBQUF0TixLQUFBZSxL
QUFBd00sRUFBQTJQLEVBQUF6UCxFQUFBQyxHQWxCQSxHQUFBSixHQUFBN04sRUFBQSxJQU9BbWdG
LEdBQ0FuNEQsS0FBQSxLQWFBbmEsR0FBQStCLGFBQUEwZ0QsRUFBQTZ2QixHQUVBLy9FLEVBQUFE
LFFBQUFtd0QsRzFLNGpvQk0sU0FBU2x3RCxFQUFRRCxFQUFTSCxHMktybG9CaEMsWUFrRUEsU0FB
QTgrRSxHQUFBaHhFLEVBQUEyUCxFQUFBelAsRUFBQUMsR0FDQSxNQUFBdVAsR0FBQWpkLEtBQUFl
LEtBQUF3TSxFQUFBMlAsRUFBQXpQLEVBQUFDLEdBakVBLEdBQUF1UCxHQUFBeGQsRUFBQSxJQUVB
bTBCLEVBQUFuMEIsRUFBQSxJQUNBb2dGLEVBQUFwZ0YsRUFBQSxLQUNBMGtCLEVBQUExa0IsRUFB
QSxJQU1BcWdGLEdBQ0F4N0UsSUFBQXU3RSxFQUNBaDRCLFNBQUEsS0FDQXBqQyxRQUFBLEtBQ0FD
LFNBQUEsS0FDQUMsT0FBQSxLQUNBQyxRQUFBLEtBQ0FtN0QsT0FBQSxLQUNBQyxPQUFBLEtBQ0Fu
N0QsaUJBQUFWLEVBRUEwUCxTQUFBLFNBQUFqbEIsR0FNQSxtQkFBQUEsRUFBQWxFLEtBQ0FrcEIs
RUFBQWhsQixHQUVBLEdBRUFrbEIsUUFBQSxTQUFBbGxCLEdBUUEsa0JBQUFBLEVBQUFsRSxNQUFB
LFVBQUFrRSxFQUFBbEUsS0FDQWtFLEVBQUFrbEIsUUFFQSxHQUVBNmYsTUFBQSxTQUFBL2tDLEdB
R0EsbUJBQUFBLEVBQUFsRSxLQUNBa3BCLEVBQUFobEIsR0FFQSxZQUFBQSxFQUFBbEUsTUFBQSxV
QUFBa0UsRUFBQWxFLEtBQ0FrRSxFQUFBa2xCLFFBRUEsR0FjQTdXLEdBQUE1TixhQUFBa3ZFLEVB
QUF1QixHQUVBamdGLEVBQUFELFFBQUEyK0UsRzNLcW1vQk0sU0FBUzErRSxFQUFRRCxFQUFTSCxH
NEs3cW9CaEMsWUEyQkEsU0FBQWcvRSxHQUFBbHhFLEVBQUEyUCxFQUFBelAsRUFBQUMsR0FDQSxN
QUFBdVAsR0FBQWpkLEtBQUFlLEtBQUF3TSxFQUFBMlAsRUFBQXpQLEVBQUFDLEdBMUJBLEdBQUF1
UCxHQUFBeGQsRUFBQSxJQUVBMGtCLEVBQUExa0IsRUFBQSxJQU1Bd2dGLEdBQ0FDLFFBQUEsS0FD
QUMsY0FBQSxLQUNBQyxlQUFBLEtBQ0F6N0QsT0FBQSxLQUNBQyxRQUFBLEtBQ0FILFFBQUEsS0FD
QUMsU0FBQSxLQUNBRyxpQkFBQVYsRUFhQWxILEdBQUE1TixhQUFBb3ZFLEVBQUF3QixHQUVBcGdG
LEVBQUFELFFBQUE2K0UsRzVLNnJvQk0sU0FBUzUrRSxFQUFRRCxFQUFTSCxHNks5dG9CaEMsWUFx
QkEsU0FBQWkvRSxHQUFBbnhFLEVBQUEyUCxFQUFBelAsRUFBQUMsR0FDQSxNQUFBSixHQUFBdE4s
S0FBQWUsS0FBQXdNLEVBQUEyUCxFQUFBelAsRUFBQUMsR0FwQkEsR0FBQUosR0FBQTdOLEVBQUEs
SUFPQTRnRixHQUNBaHRFLGFBQUEsS0FDQStyRSxZQUFBLEtBQ0FDLGNBQUEsS0FhQS94RSxHQUFB
K0IsYUFBQXF2RSxFQUFBMkIsR0FFQXhnRixFQUFBRCxRQUFBOCtFLEc3Szh1b0JNLFNBQVM3K0Us
RUFBUUQsRUFBU0gsRzhLendvQmhDLFlBaUNBLFNBQUFrL0UsR0FBQXB4RSxFQUFBMlAsRUFBQXpQ
LEVBQUFDLEdBQ0EsTUFBQXdXLEdBQUFsa0IsS0FBQWUsS0FBQXdNLEVBQUEyUCxFQUFBelAsRUFB
QUMsR0FoQ0EsR0FBQXdXLEdBQUF6a0IsRUFBQSxJQU1BNmdGLEdBQ0FDLE9BQUEsU0FBQTN4RSxH
QUNBLGdCQUFBQSxLQUFBMnhFLE9BQ0EsZUFBQTN4RSxNQUFBNHhFLFlBQUEsR0FFQUMsT0FBQSxT
QUFBN3hFLEdBQ0EsZ0JBQUFBLEtBQUE2eEUsT0FDQSxlQUFBN3hFLE1BQUE4eEUsWUFDQSxjQUFB
OXhFLE1BQUEreEUsV0FBQSxHQUVBQyxPQUFBLEtBTUFDLFVBQUEsS0FhQTM4RCxHQUFBN1UsYUFB
QXN2RSxFQUFBMkIsR0FFQXpnRixFQUFBRCxRQUFBKytFLEc5S3l4b0JNLFNBQVM5K0UsRUFBUUQs
RytLL3pvQnZCLFlBU0EsU0FBQWd1RSxHQUFBbm1ELEdBTUEsSUFMQSxHQUFBN21CLEdBQUEsRUFD
QUMsRUFBQSxFQUNBVCxFQUFBLEVBQ0EwZ0YsRUFBQXI1RCxFQUFBcGxCLE9BQ0FwQyxFQUFBNmdG
LEtBQ0ExZ0YsRUFBQUgsR0FBQSxDQUVBLElBREEsR0FBQW9ELEdBQUE2RCxLQUFBMjZCLElBQUF6
aEMsRUFBQSxLQUFBSCxHQUNVRyxFQUFBaUQsRUFBT2pELEdBQUEsRUFDakJTLElBQUFELEdBQUE2
bUIsRUFBQVgsV0FBQTFtQixLQUFBUSxHQUFBNm1CLEVBQUFYLFdBQUExbUIsRUFBQSxLQUFBUSxH
QUFBNm1CLEVBQUFYLFdBQUExbUIsRUFBQSxLQUFBUSxHQUFBNm1CLEVBQUFYLFdBQUExbUIsRUFB
QSxHQUVBUSxJQUFBbWdGLEVBQ0FsZ0YsR0FBQWtnRixFQUVBLEtBQVEzZ0YsRUFBQTBnRixFQUFP
MWdGLElBQ2ZTLEdBQUFELEdBQUE2bUIsRUFBQVgsV0FBQTFtQixFQUlBLE9BRkFRLElBQUFtZ0Ys
RUFDQWxnRixHQUFBa2dGLEVBQ0FuZ0YsRUFBQUMsR0FBQSxHQTFCQSxHQUFBa2dGLEdBQUEsS0E2
QkFsaEYsR0FBQUQsUUFBQWd1RSxHL0tnMW9CTSxTQUFTL3RFLEVBQVFELEVBQVNILEdnTGgzb0Jo
QyxZQWtCQSxTQUFBMndELEdBQUF2dUQsRUFBQWdRLEVBQUE5TSxFQUFBaXNELEdBV0EsR0FBQWd3
QixHQUFBLE1BQUFudkUsR0FBQSxpQkFBQUEsSUFBQSxLQUFBQSxDQUNBLElBQUFtdkUsRUFDQSxR
QUdBLElBQUFDLEdBQUF6a0QsTUFBQTNxQixFQUNBLElBQUFtL0MsR0FBQWl3QixHQUFBLElBQUFw
dkUsR0FBQTJrQixFQUFBajJCLGVBQUFzQixJQUFBMjBCLEVBQUEzMEIsR0FDQSxTQUFBZ1EsQ0FH
QSxvQkFBQUEsR0FBQSxDQXVCQUEsSUFBQTZoQyxPQUVBLE1BQUE3aEMsR0FBQSxLQTlEQSxHQUFB
NHBCLEdBQUFoOEIsRUFBQSxJQUdBKzJCLEdBRkEvMkIsRUFBQSxHQUVBZzhCLEVBQUFqRixpQkE4
REEzMkIsR0FBQUQsUUFBQXd3RCxHaExnNG9CTSxTQUFTdndELEVBQVFELEVBQVNILEdpTG44b0Jo
QyxZQW9CQSxTQUFBZ2hFLEdBQUF5Z0IsR0FRQSxTQUFBQSxFQUNBLFdBRUEsUUFBQUEsRUFBQXg4
RSxTQUNBLE1BQUF3OEUsRUFHQSxJQUFBLzdFLEdBQUF3WCxFQUFBRyxJQUFBb2tFLEVBQ0EsT0FB
QS83RSxJQUNBQSxFQUFBNmhDLEVBQUE3aEMsR0FDQUEsRUFBQWtDLEVBQUFSLG9CQUFBMUIsR0FB
QSxXQUdBLGtCQUFBKzdFLEdBQUExOEMsT0FDQW4rQixFQUFBLE1BRUFBLEVBQUEsS0FBQWhHLE9B
QUFzRCxLQUFBdTlFLEtBMUNBLEdBQUE3NkUsR0FBQTVHLEVBQUEsR0FHQTRILEdBREE1SCxFQUFB
LElBQ0FBLEVBQUEsSUFDQWtkLEVBQUFsZCxFQUFBLElBRUF1bkMsRUFBQXZuQyxFQUFBLEdBQ0FB
LEdBQUEsR0FDQUEsRUFBQSxFQXNDQUksR0FBQUQsUUFBQTZnRSxHakxtOW9CTSxTQUFTNWdFLEVB
QVFELEVBQVNILElrTDdncEJoQyxTQUFBMjJDLEdBV0EsWUF1QkEsU0FBQStxQyxHQUFBNzJDLEVB
QUF4SCxFQUFBamhDLEVBQUE4NUQsR0FFQSxHQUFBcnhCLEdBQUEsZ0JBQUFBLEdBQUEsQ0FDQSxH
QUFBaWQsR0FBQWpkLEVBQ0FzeEIsRUFBQW42RCxTQUFBOGxELEVBQUExbEQsRUFTQSs1RCxJQUFB
LE1BQUE5NEIsSUFDQXlrQixFQUFBMWxELEdBQUFpaEMsSUFVQSxRQUFBK2tDLEdBQUFqaUUsRUFB
QSsxRCxHQUNBLFNBQUEvMUQsRUFDQSxNQUFBQSxFQUVBLElBQUEyaEQsS0FTQSxPQUZBamMsR0FB
QTFsQyxFQUFBdTdFLEVBQUE1NUIsR0FFQUEsRUExREEsR0FDQWpjLElBREE3ckMsRUFBQSxJQUNB
QSxFQUFBLElBQ0FBLEdBQUEsRUFJQSxvQkFBQTIyQyxNQUFBSSxNQXVEQTMyQyxFQUFBRCxRQUFB
aW9FLElsTGdocEI4QjduRSxLQUFLSixFQUFTSCxFQUFvQixNQUkxRCxTQUFTSSxFQUFRRCxFQUFT
SCxHbUxwbHBCaEMsWUF1RUEsU0FBQW9nRixHQUFBcHlFLEdBQ0EsR0FBQUEsRUFBQW5KLElBQUEs
Q0FNQSxHQUFBQSxHQUFBODhFLEVBQUEzekUsRUFBQW5KLE1BQUFtSixFQUFBbkosR0FDQSxxQkFB
QUEsRUFDQSxNQUFBQSxHQUtBLGdCQUFBbUosRUFBQS9DLEtBQUEsQ0FDQSxHQUFBbXBCLEdBQUFE
LEVBQUFubUIsRUFJQSxhQUFBb21CLEVBQUEsUUFBQTl3QixPQUFBRyxhQUFBMndCLEdBRUEsa0JB
QUFwbUIsRUFBQS9DLE1BQUEsVUFBQStDLEVBQUEvQyxLQUdBMjJFLEVBQUE1ekUsRUFBQXFtQixV
QUFBLGVBRUEsR0EvRkEsR0FBQUYsR0FBQW4wQixFQUFBLElBTUEyaEYsR0FDQUUsSUFBQSxTQUNB
QyxTQUFBLElBQ0FDLEtBQUEsWUFDQUMsR0FBQSxVQUNBQyxNQUFBLGFBQ0FDLEtBQUEsWUFDQUMs
SUFBQSxTQUNBQyxJQUFBLEtBQ0FDLEtBQUEsY0FDQUMsS0FBQSxjQUNBQyxPQUFBLGFBQ0FDLGdC
QUFBLGdCQVFBWixHQUNBYSxFQUFBLFlBQ0FDLEVBQUEsTUFDQUMsR0FBQSxRQUNBQyxHQUFBLFFB
Q0FDLEdBQUEsUUFDQUMsR0FBQSxVQUNBQyxHQUFBLE1BQ0FDLEdBQUEsUUFDQUMsR0FBQSxXQUNB
QyxHQUFBLFNBQ0FDLEdBQUEsSUFDQUMsR0FBQSxTQUNBQyxHQUFBLFdBQ0FDLEdBQUEsTUFDQUMs
R0FBQSxPQUNBQyxHQUFBLFlBQ0FDLEdBQUEsVUFDQUMsR0FBQSxhQUNBQyxHQUFBLFlBQ0FDLEdB
QUEsU0FDQUMsR0FBQSxTQUNBQyxJQUFBLEtBQ0FDLElBQUEsS0FDQUMsSUFBQSxLQUNBQyxJQUFB
LEtBQ0FDLElBQUEsS0FDQUMsSUFBQSxLQUNBQyxJQUFBLEtBQ0FDLElBQUEsS0FDQUMsSUFBQSxL
QUNBQyxJQUFBLE1BQ0FDLElBQUEsTUFDQUMsSUFBQSxNQUNBQyxJQUFBLFVBQ0FDLElBQUEsYUFD
QUMsSUFBQSxPQW9DQXhrRixHQUFBRCxRQUFBaWdGLEduTG9tcEJNLFNBQVNoZ0YsRUFBUUQsR29M
dnNwQnZCLFlBcUJBLFNBQUFpckMsR0FBQTZkLEdBQ0EsR0FBQTlkLEdBQUE4ZCxJQUFBQyxHQUFB
RCxFQUFBQyxJQUFBRCxFQUFBRSxHQUNBLHNCQUFBaGUsR0FDQSxNQUFBQSxHQXBCQSxHQUFBK2Qs
R0FBQSxrQkFBQXp5QixnQkFBQTZVLFNBQ0E2ZCxFQUFBLFlBdUJBL29ELEdBQUFELFFBQUFpckMs
R3BMd3RwQk0sU0FBU2hyQyxFQUFRRCxHcUxydnBCdkIsWUFTQSxTQUFBMGtGLEdBQUE5L0UsR0FD
QSxLQUFBQSxLQUFBdUIsWUFDQXZCLElBQUF1QixVQUVBLE9BQUF2QixHQVVBLFFBQUErL0UsR0FB
QS8vRSxHQUNBLEtBQUFBLEdBQUEsQ0FDQSxHQUFBQSxFQUFBNEIsWUFDQSxNQUFBNUIsR0FBQTRC
LFdBRUE1QixLQUFBaUMsWUFXQSxRQUFBMmpFLEdBQUFuMEMsRUFBQXEwQyxHQUtBLElBSkEsR0FB
QTlsRSxHQUFBOC9FLEVBQUFydUQsR0FDQXV1RCxFQUFBLEVBQ0FDLEVBQUEsRUFFQWpnRixHQUFB
LENBQ0EsT0FBQUEsRUFBQUUsU0FBQSxDQUdBLEdBRkErL0UsRUFBQUQsRUFBQWhnRixFQUFBMGxD
LFlBQUE3bkMsT0FFQW1pRixHQUFBbGEsR0FBQW1hLEdBQUFuYSxFQUNBLE9BQ0E5bEUsT0FDQThs
RSxTQUFBa2EsRUFJQUEsR0FBQUMsRUFHQWpnRixFQUFBOC9FLEVBQUFDLEVBQUEvL0UsS0FJQTNF
LEVBQUFELFFBQUF3cUUsR3JMcXdwQk0sU0FBU3ZxRSxFQUFRRCxFQUFTSCxHc0xuMHBCaEMsWUFX
QSxTQUFBaWxGLEdBQUFDLEVBQUE5M0QsR0FDQSxHQUFBb00sS0FRQSxPQU5BQSxHQUFBMHJELEVB
QUFsekUsZUFBQW9iLEVBQUFwYixjQUNBd25CLEVBQUEsU0FBQTByRCxHQUFBLFNBQUE5M0QsRUFD
QW9NLEVBQUEsTUFBQTByRCxHQUFBLE1BQUE5M0QsRUFDQW9NLEVBQUEsS0FBQTByRCxHQUFBLEtB
QUE5M0QsRUFDQW9NLEVBQUEsSUFBQTByRCxHQUFBLElBQUE5M0QsRUFBQXBiLGNBRUF3bkIsRUFt
REEsUUFBQTdhLEdBQUF5TyxHQUNBLEdBQUErM0QsRUFBQS8zRCxHQUNBLE1BQUErM0QsR0FBQS8z
RCxFQUNHLEtBQUFnNEQsRUFBQWg0RCxHQUNILE1BQUFBLEVBR0EsSUFBQWk0RCxHQUFBRCxFQUFB
aDRELEVBRUEsUUFBQTgzRCxLQUFBRyxHQUNBLEdBQUFBLEVBQUF2a0YsZUFBQW9rRixRQUFBajBC
LEdBQ0EsTUFBQWswQixHQUFBLzNELEdBQUFpNEQsRUFBQUgsRUFJQSxVQXBGQSxHQUFBajlFLEdB
QUFqSSxFQUFBLEdBd0JBb2xGLEdBQ0FFLGFBQUFMLEVBQUEsNEJBQ0FNLG1CQUFBTixFQUFBLGtD
QUNBTyxlQUFBUCxFQUFBLDhCQUNBUSxjQUFBUixFQUFBLCtCQU1BRSxLQUtBbDBCLElBS0FocEQs
R0FBQUosWUFDQW9wRCxFQUFBbHBELFNBQUFDLGNBQUEsT0FBQWlwRCxNQU1BLGtCQUFBbnBELGdC
QUNBczlFLEdBQUFFLGFBQUFJLGdCQUNBTixHQUFBRyxtQkFBQUcsZ0JBQ0FOLEdBQUFJLGVBQUFF
LFdBSUEsbUJBQUE1OUUsZUFDQXM5RSxHQUFBSyxjQUFBRSxZQTRCQXZsRixFQUFBRCxRQUFBd2Us
R3RMbTFwQk0sU0FBU3ZlLEVBQVFELEVBQVNILEd1TDU2cEJoQyxZQVVBLFNBQUFnOUIsR0FBQTVx
QixHQUNBLFVBQUFtVixFQUFBblYsR0FBQSxJQVRBLEdBQUFtVixHQUFBdm5CLEVBQUEsR0FZQUks
R0FBQUQsUUFBQTY4QixHdkw0N3BCTSxTQUFTNThCLEVBQVFELEVBQVNILEd3TDE4cEJoQyxZQUVB
LElBQUF3akMsR0FBQXhqQyxFQUFBLEdBRUFJLEdBQUFELFFBQUFxakMsRUFBQWdDLDRCeEwwOXBC
TSxTQUFTcGxDLEVBQVFELEVBQVNILEd5THgrcEJoQyxZQWlCQSxTQUFBbW9CLEdBQUFDLEdBQXND
LE1BQUFBLE1BQUFDLFdBQUFELEdBQXVDRSxRQUFBRixHQUU3RSxRQUFBNlQsR0FBQUMsRUFBQUMs
R0FBaUQsS0FBQUQsWUFBQUMsSUFBMEMsU0FBQWo1QixXQUFBLHFDQUUzRixRQUFBNG9DLEdBQUFs
MEIsRUFBQXJYLEdBQWlELElBQUFxWCxFQUFhLFNBQUFtMEIsZ0JBQUEsNERBQXlGLFFBQUF4ckMs
R0FBQSxnQkFBQUEsSUFBQSxrQkFBQUEsR0FBQXFYLEVBQUFyWCxFQUV2SixRQUFBeXJDLEdBQUFD
LEVBQUFDLEdBQTBDLHFCQUFBQSxJQUFBLE9BQUFBLEVBQStELFNBQUFocEMsV0FBQSxpRUFBQWdw
QyxHQUF1R0QsR0FBQXByQyxVQUFBRCxPQUFBNitCLE9BQUF5TSxLQUFBcnJDLFdBQXlFdU4sYUFB
ZWdFLE1BQUE2NUIsRUFBQXZELFlBQUEsRUFBQXlELFVBQUEsRUFBQXhELGNBQUEsS0FBNkV1RCxJ
QUFBdHJDLE9BQUF3ckMsZUFBQXhyQyxPQUFBd3JDLGVBQUFILEVBQUFDLEdBQUFELEVBQUFJLFVB
QUFILEdBWXJYLFFBQUFnRyxLQUNBLEdBQUEwekMsR0FFQTkzQyxFQUFBbnJDLFVBQUFDLE9BQUEs
R0FBQVosU0FBQVcsVUFBQSxHQUFBQSxVQUFBLFdBQ0FrakYsRUFBQWxqRixVQUFBLEdBRUF1ckMs
RUFBQTIzQyxHQUFBLzNDLEVBQUEsZUFFQXFFLEVBQUEsU0FBQWxELEdBU0EsUUFBQWtELEdBQUFy
NkIsRUFBQTlMLEdBQ0Fpd0IsRUFBQTM2QixLQUFBNndDLEVBRUEsSUFBQWpELEdBQUFwRCxFQUFB
eHFDLEtBQUEydEMsRUFBQTF1QyxLQUFBZSxLQUFBd1csRUFBQTlMLEdBR0EsT0FEQWtqQyxHQUFB
cEIsR0FBQWgyQixFQUFBNDBCLE1BQ0F3QyxFQU9BLE1BckJBbEQsR0FBQW1HLEVBQUFsRCxHQUVB
a0QsRUFBQXR4QyxVQUFBNHVDLGdCQUFBLFdBQ0EsR0FBQXJDLEVBRUEsT0FBQUEsTUFBc0JBLEVB
QUFVLEdBQUF4c0MsS0FBQXdzQyxHQUFBVixFQUFBYyxHQUFBLEtBQUFkLEdBWXRCK0UsRUFBQXR4
QyxVQUFBa2tDLE9BQUEsV0FDQSxNQUFBaU0sR0FBQXQ2QixTQUFBRyxLQUFBdlYsS0FBQXdXLE1B
QUEzUixXQUdBZ3NDLEdBQ0duQixFQUFBbDZCLFVBZ0JILE9BTkFxN0IsR0FBQTlnQixXQUNBcWIs
TUFBQTJCLEVBQUFDLFdBQUF1RSxXQUNBMXNDLFNBQUF3c0MsRUFBQXJxQixRQUFBdlEsUUFBQTg2
QixZQUVBVixFQUFBM0QsbUJBQUFvM0MsS0FBMERBLEVBQUE5M0MsR0FBQU8sRUFBQUMsV0FBQXVF
LFdBQUEreUMsRUFBQTEzQyxHQUFBRyxFQUFBRSxrQkFBQXEzQyxHQUUxRHp6QyxFQWhGQWh5QyxF
QUFBa29CLFlBQUEsRUFDQWxvQixFQUFBK3hDLGdCQUVBLElBQUFsQixHQUFBaHhDLEVBQUEsSUFF
QTB5QyxFQUFBMXlDLEVBQUEsSUFFQTJ5QyxFQUFBeHFCLEVBQUF1cUIsR0FFQXJFLEVBQUFydUMs
RUFBQSxJQUVBc3BCLEVBQUF0cEIsRUFBQSxHQUVBbW9CLEdBQUFtQixFQXNFQW5wQixHQUFBbW9C
LFFBQUE0cEIsS3pMOCtwQk0sU0FBUzl4QyxFQUFRRCxFQUFTSCxHMExua3FCaEMsWUFnQ0EsU0FB
QW1vQixHQUFBQyxHQUFzQyxNQUFBQSxNQUFBQyxXQUFBRCxHQUF1Q0UsUUFBQUYsR0FFN0UsUUFB
QWtrQixHQUFBbGtCLEVBQUFsa0IsR0FBOEMsR0FBQUssS0FBaUIsUUFBQTVELEtBQUF5bkIsR0FB
cUJsa0IsRUFBQStvQixRQUFBdHNCLElBQUEsR0FBb0NDLE9BQUFDLFVBQUFDLGVBQUFQLEtBQUE2
bkIsRUFBQXpuQixLQUE2RDRELEVBQUE1RCxHQUFBeW5CLEVBQUF6bkIsR0FBc0IsT0FBQTRELEdB
bUIzTSxRQUFBd2lCLEdBQUFwZSxFQUFBbTlFLEVBQUExakYsR0FDQSxPQUFBekIsR0FBQW1sRixF
QUFBbGpGLE9BQUEsRUFBb0NqQyxHQUFBLEVBQVFBLElBQUEsQ0FDNUMsR0FBQW1uRCxHQUFBZytC
LEVBQUFubEYsR0FBQWdJLEVBQ0EsSUFBQW0vQyxFQUFBLE1BQUFBLEdBR0EsZ0JBQUF6WCxFQUFB
N1IsR0FDQSxTQUFBdjhCLE9BQUEsK0JBQUEwRyxHQUFBLFFBQUF2RyxFQUFBLHVDQUFBbzhCLEVB
QUFxUSxxQkFBQSxNQUlBLFFBQUFrM0MsR0FBQTVrRixFQUFBQyxHQUNBLE1BQUFELEtBQUFDLEVB
S0EsUUFBQTRrRixLQUNBLEdBQUE1NEMsR0FBQXpxQyxVQUFBQyxPQUFBLEdBQUFaLFNBQUFXLFVB
QUEsR0FBQUEsVUFBQSxNQUNBc2pGLEVBQUE3NEMsRUFBQTg0QyxXQUNBQSxFQUFBbGtGLFNBQUFp
a0YsRUFBQTF6QyxFQUFBanFCLFFBQUEyOUQsRUFDQUUsRUFBQS80QyxFQUFBZzVDLHlCQUNBQSxF
QUFBcGtGLFNBQUFta0YsRUFBQUUsRUFBQS85RCxRQUFBNjlELEVBQ0FHLEVBQUFsNUMsRUFBQW01
Qyw0QkFDQUEsRUFBQXZrRixTQUFBc2tGLEVBQUFFLEVBQUFsK0QsUUFBQWcrRCxFQUNBRyxFQUFB
cjVDLEVBQUFzNUMsb0JBQ0FBLEVBQUExa0YsU0FBQXlrRixFQUFBRSxFQUFBcitELFFBQUFtK0Qs
RUFDQUcsRUFBQXg1QyxFQUFBSCxnQkFDQUEsRUFBQWpyQyxTQUFBNGtGLEVBQUFDLEVBQUF2K0Qs
UUFBQXMrRCxDQUVBLGlCQUFBRSxFQUFBQyxFQUFBQyxHQUNBLEdBQUF0M0MsR0FBQS9zQyxVQUFB
QyxPQUFBLEdBQUFaLFNBQUFXLFVBQUEsR0FBQUEsVUFBQSxNQUNBc2tGLEVBQUF2M0MsRUFBQXcz
QyxLQUNBQSxFQUFBbGxGLFNBQUFpbEYsS0FDQUUsRUFBQXozQyxFQUFBMDNDLGVBQ0FBLEVBQUFw
bEYsU0FBQW1sRixFQUFBcEIsRUFBQW9CLEVBQ0FFLEVBQUEzM0MsRUFBQTQzQyxpQkFDQUEsRUFB
QXRsRixTQUFBcWxGLEVBQUFFLEVBQUFqL0QsUUFBQSsrRCxFQUNBRyxFQUFBOTNDLEVBQUErM0Ms
bUJBQ0FBLEVBQUF6bEYsU0FBQXdsRixFQUFBRCxFQUFBai9ELFFBQUFrL0QsRUFDQUUsRUFBQWg0
QyxFQUFBaTRDLG9CQUNBQSxFQUFBM2xGLFNBQUEwbEYsRUFBQUgsRUFBQWovRCxRQUFBby9ELEVB
Q0FFLEVBQUF0N0MsRUFBQW9ELEdBQUEsd0ZBRUFtNEMsRUFBQTlnRSxFQUFBKy9ELEVBQUFWLEVB
QUEsbUJBQ0EwQixFQUFBL2dFLEVBQUFnZ0UsRUFBQVIsRUFBQSxzQkFDQXdCLEVBQUFoaEUsRUFB
QWlnRSxFQUFBTixFQUFBLGFBRUEsT0FBQVIsR0FBQWo1QyxFQUFBOEIsR0FFQXZCLFdBQUEsVUFH
QUYsZUFBQSxTQUFBbHJDLEdBQ0EsaUJBQUFBLEVBQUEsS0FJQXdyQyx5QkFBQXhQLFFBQUEwb0Qs
R0FHQWUsc0JBQ0FDLHlCQUNBQyxpQkFDQWIsT0FDQUUsaUJBQ0FFLG1CQUNBRyxxQkFDQUUsdUJB
RUtDLEtBekhMem5GLEVBQUFrb0IsWUFBQSxDQUVBLElBQUEwbUIsR0FBQW51QyxPQUFBd0MsUUFB
QSxTQUFBbUIsR0FBbUQsT0FBQTVELEdBQUEsRUFBZ0JBLEVBQUFnQyxVQUFBQyxPQUFzQmpDLElB
QUEsQ0FBTyxHQUFBNkQsR0FBQTdCLFVBQUFoQyxFQUEyQixRQUFBa0UsS0FBQUwsR0FBMEI1RCxP
QUFBQyxVQUFBQyxlQUFBUCxLQUFBaUUsRUFBQUssS0FBeUROLEVBQUFNLEdBQUFMLEVBQUFLLElB
QWlDLE1BQUFOLEdBRS9PcEUsR0FBQTZsRixlQUVBLElBQUExekMsR0FBQXR5QyxFQUFBLElBRUF1
eUMsRUFBQXBxQixFQUFBbXFCLEdBRUEwMUMsRUFBQWhvRixFQUFBLEtBRUF1bkYsRUFBQXAvRCxF
QUFBNi9ELEdBRUFDLEVBQUFqb0YsRUFBQSxLQUVBd21GLEVBQUFyK0QsRUFBQTgvRCxHQUVBQyxF
QUFBbG9GLEVBQUEsS0FFQXFtRixFQUFBbCtELEVBQUErL0QsR0FFQUMsRUFBQW5vRixFQUFBLEtB
RUEybUYsRUFBQXgrRCxFQUFBZ2dFLEdBRUFDLEVBQUFwb0YsRUFBQSxLQUVBNm1GLEVBQUExK0Qs
RUFBQWlnRSxFQWlHQWpvRixHQUFBbW9CLFFBQUEwOUQsSzFMeWtxQk0sU0FBUzVsRixFQUFRRCxF
QUFTSCxHMkx4c3FCaEMsWUFXQSxTQUFBcW9GLEdBQUF0QixHQUNBLHdCQUFBQSxJQUFBLEVBQUF1
QixFQUFBMTJDLG9CQUFBbTFDLEVBQUEsc0JBQUEva0YsT0FHQSxRQUFBdW1GLEdBQUF4QixHQUNB
LE1BQUFBLEdBRUcva0YsUUFGSCxFQUFBc21GLEVBQUFqM0Msd0JBQUEsU0FBQWhCLEdBQ0EsT0FB
WUEsY0FJWixRQUFBbTRDLEdBQUF6QixHQUNBLE1BQUFBLElBQUEsZ0JBQUFBLElBQUEsRUFBQXVC
LEVBQUFqM0Msd0JBQUEsU0FBQWhCLEdBQ0EsU0FBQW80QyxFQUFBaGdFLG9CQUFBcytELEVBQUEx
MkMsS0FDR3J1QyxPQXRCSDdCLEVBQUFrb0IsWUFBQSxFQUNBbG9CLEVBQUFrb0YsbUNBQ0Fsb0Ys
RUFBQW9vRixrQ0FDQXBvRixFQUFBcW9GLGdDQUVBLElBQUFDLEdBQUF6b0YsRUFBQSxJQUVBc29G
LEVBQUF0b0YsRUFBQSxHQWtCQUcsR0FBQW1vQixTQUFBKy9ELEVBQUFFLEVBQUFDLEkzTDhzcUJN
LFNBQVNwb0YsRUFBUUQsRUFBU0gsRzRMenVxQmhDLFlBUUEsU0FBQTBvRixHQUFBNUIsR0FDQSx3
QkFBQUEsSUFBQSxFQUFBd0IsRUFBQTEyQyxvQkFBQWsxQyxFQUFBLG1CQUFBOWtGLE9BR0EsUUFB
QTJtRixHQUFBN0IsR0FDQSxNQUFBQSxHQUVHOWtGLFFBRkgsRUFBQXNtRixFQUFBajNDLHdCQUFB
LFdBQ0EsV0FaQWx4QyxFQUFBa29CLFlBQUEsRUFDQWxvQixFQUFBdW9GLGdDQUNBdm9GLEVBQUF3
b0YsOEJBRUEsSUFBQUwsR0FBQXRvRixFQUFBLEdBWUFHLEdBQUFtb0IsU0FBQW9nRSxFQUFBQyxJ
NUwrdXFCTSxTQUFTdm9GLEVBQVFELEVBQVNILEc2TGp3cUJoQyxZQWVBLFNBQUFtb0IsR0FBQUMs
R0FBc0MsTUFBQUEsTUFBQUMsV0FBQUQsR0FBdUNFLFFBQUFGLEdBRTdFLFFBQUF3Z0UsR0FBQUMs
RUFBQUMsRUFBQS8yQyxHQUNBLE1BQUFoRCxNQUFvQmdELEVBQUE4MkMsRUFBQUMsR0FHcEIsUUFB
QUMsR0FBQS9CLEdBQ0EsZ0JBQUEzMkMsRUFBQWpELEdBQ0EsR0FDQTg1QyxJQURBOTVDLEVBQUEz
YSxZQUNBMmEsRUFBQTg1QyxNQUNBUyxFQUFBdjZDLEVBQUF1NkMsb0JBRUFxQixHQUFBLEVBQ0FD
LEVBQUEsTUFFQSxpQkFBQUosRUFBQUMsRUFBQS8yQyxHQUNBLEdBQUFtM0MsR0FBQWxDLEVBQUE2
QixFQUFBQyxFQUFBLzJDO0FBV0EsTUFUQWkzQyxHQUNBOUIsR0FBQVMsRUFBQXVCLEVBQUFELE9B
QUFDLElBRUFGLEdBQUEsRUFDQUMsRUFBQUMsR0FLQUQsSUFLQSxRQUFBRSxHQUFBbkMsR0FDQSx3
QkFBQUEsR0FBQStCLEVBQUEvQixHQUFBaGxGLE9BR0EsUUFBQW9uRixHQUFBcEMsR0FDQSxNQUFB
QSxHQUVHaGxGLE9BRkgsV0FDQSxNQUFBNG1GLElBbkRBem9GLEVBQUFrb0IsWUFBQSxDQUVBLElB
QUEwbUIsR0FBQW51QyxPQUFBd0MsUUFBQSxTQUFBbUIsR0FBbUQsT0FBQTVELEdBQUEsRUFBZ0JB
LEVBQUFnQyxVQUFBQyxPQUFzQmpDLElBQUEsQ0FBTyxHQUFBNkQsR0FBQTdCLFVBQUFoQyxFQUEy
QixRQUFBa0UsS0FBQUwsR0FBMEI1RCxPQUFBQyxVQUFBQyxlQUFBUCxLQUFBaUUsRUFBQUssS0FB
eUROLEVBQUFNLEdBQUFMLEVBQUFLLElBQWlDLE1BQUFOLEdBRS9PcEUsR0FBQXlvRixvQkFDQXpv
RixFQUFBNG9GLHFCQUNBNW9GLEVBQUFncEYsMkJBQ0FocEYsRUFBQWlwRix5QkFFQSxJQUFBcDND
LEdBQUFoeUMsRUFBQSxHQUVBbW9CLEdBQUE2cEIsRUE0Q0E3eEMsR0FBQW1vQixTQUFBNmdFLEVB
QUFDLEk3THV3cUJNLFNBQVNocEYsRUFBUUQsRUFBU0gsRzhMaDBxQmhDLFlBV0EsU0FBQW1vQixH
QUFBQyxHQUFzQyxNQUFBQSxNQUFBQyxXQUFBRCxHQUF1Q0UsUUFBQUYsR0FFN0UsUUFBQWtrQixH
QUFBbGtCLEVBQUFsa0IsR0FBOEMsR0FBQUssS0FBaUIsUUFBQTVELEtBQUF5bkIsR0FBcUJsa0Is
RUFBQStvQixRQUFBdHNCLElBQUEsR0FBb0NDLE9BQUFDLFVBQUFDLGVBQUFQLEtBQUE2bkIsRUFB
QXpuQixLQUE2RDRELEVBQUE1RCxHQUFBeW5CLEVBQUF6bkIsR0FBc0IsT0FBQTRELEdBRTNNLFFB
QUE4a0YsR0FBQXZDLEVBQUFDLEVBQUFDLEVBQUEzMkMsR0FDQSxnQkFBQWxCLEVBQUE0QyxHQUNB
LE1BQUFpMUMsR0FBQUYsRUFBQTMzQyxFQUFBNEMsR0FBQWcxQyxFQUFBMTJDLEVBQUEwQixPQUlB
LFFBQUF1M0MsR0FBQXhDLEVBQUFDLEVBQUFDLEVBQUEzMkMsRUFBQWpELEdBWUEsUUFBQW04QyxH
QUFBQyxFQUFBQyxHQU9BLE1BTkF0NkMsR0FBQXE2QyxFQUNBejNDLEVBQUEwM0MsRUFDQVosRUFB
QS9CLEVBQUEzM0MsRUFBQTRDLEdBQ0ErMkMsRUFBQS9CLEVBQUExMkMsRUFBQTBCLEdBQ0FrM0Ms
RUFBQWpDLEVBQUE2QixFQUFBQyxFQUFBLzJDLEdBQ0EyM0MsR0FBQSxFQUNBVCxFQUdBLFFBQUFV
LEtBTUEsTUFMQWQsR0FBQS9CLEVBQUEzM0MsRUFBQTRDLEdBRUFnMUMsRUFBQXQxQyxvQkFBQXEz
QyxFQUFBL0IsRUFBQTEyQyxFQUFBMEIsSUFFQWszQyxFQUFBakMsRUFBQTZCLEVBQUFDLEVBQUEv
MkMsR0FJQSxRQUFBNjNDLEtBTUEsTUFMQTlDLEdBQUFyMUMsb0JBQUFvM0MsRUFBQS9CLEVBQUEz
M0MsRUFBQTRDLElBRUFnMUMsRUFBQXQxQyxvQkFBQXEzQyxFQUFBL0IsRUFBQTEyQyxFQUFBMEIs
SUFFQWszQyxFQUFBakMsRUFBQTZCLEVBQUFDLEVBQUEvMkMsR0FJQSxRQUFBODNDLEtBQ0EsR0FB
QUMsR0FBQWhELEVBQUEzM0MsRUFBQTRDLEdBQ0FnNEMsR0FBQXRDLEVBQUFxQyxFQUFBakIsRUFL
QSxPQUpBQSxHQUFBaUIsRUFFQUMsSUFBQWQsRUFBQWpDLEVBQUE2QixFQUFBQyxFQUFBLzJDLElB
RUFrM0MsRUFHQSxRQUFBZSxHQUFBcHFCLEVBQUFxcUIsR0FDQSxHQUFBQyxJQUFBNUMsRUFBQTJD
LEVBQUFsNEMsR0FDQW80QyxHQUFBL0MsRUFBQXhuQixFQUFBendCLEVBSUEsT0FIQUEsR0FBQXl3
QixFQUNBN3RCLEVBQUFrNEMsRUFFQUMsR0FBQUMsRUFBQVIsSUFDQU8sRUFBQU4sSUFDQU8sRUFB
QU4sSUFDQVosRUExREEsR0FBQTdCLEdBQUFoNkMsRUFBQWc2QyxlQUNBRSxFQUFBbDZDLEVBQUFr
NkMsaUJBQ0FHLEVBQUFyNkMsRUFBQXE2QyxtQkFFQWlDLEdBQUEsRUFDQXY2QyxFQUFBLE9BQ0E0
QyxFQUFBLE9BQ0E4MkMsRUFBQSxPQUNBQyxFQUFBLE9BQ0FHLEVBQUEsTUFvREEsaUJBQUFycEIs
RUFBQXFxQixHQUNBLE1BQUFQLEdBQUFNLEVBQUFwcUIsRUFBQXFxQixHQUFBVixFQUFBM3BCLEVB
QUFxcUIsSUFXQSxRQUFBRyxHQUFBLzVDLEVBQUFYLEdBQ0EsR0FBQW00QyxHQUFBbjRDLEVBQUFt
NEMsb0JBQ0FDLEVBQUFwNEMsRUFBQW80Qyx1QkFDQUMsRUFBQXI0QyxFQUFBcTRDLGVBQ0F2cEQs
RUFBQThOLEVBQUFvRCxHQUFBLGtFQUVBbzNDLEVBQUFlLEVBQUF4M0MsRUFBQTdSLEdBQ0F1b0Qs
RUFBQWUsRUFBQXozQyxFQUFBN1IsR0FDQXdvRCxFQUFBZSxFQUFBMTNDLEVBQUE3UixHQU1BeU8s
RUFBQXpPLEVBQUEwb0QsS0FBQW9DLEVBQUFELENBRUEsT0FBQXA4QyxHQUFBNjVDLEVBQUFDLEVB
QUFDLEVBQUEzMkMsRUFBQTdSLEdBN0dBcitCLEVBQUFrb0IsWUFBQSxFQUNBbG9CLEVBQUFrcEYs
a0NBQ0FscEYsRUFBQW1wRixnQ0FDQW5wRixFQUFBbW9CLFFBQUE4aEUsQ0FFQSxJQUFBQyxHQUFB
cnFGLEVBQUEsSUFFQW1vQixHQUFBa2lFLEk5TDY2cUJNLFNBQVNqcUYsRUFBUUQsRUFBU0gsRytM
dDdxQmhDLFlBU0EsU0FBQW1vQixHQUFBQyxHQUFzQyxNQUFBQSxNQUFBQyxXQUFBRCxHQUF1Q0Us
UUFBQUYsR0FFN0UsUUFBQWtpRSxHQUFBMzlDLEVBQUFhLEVBQUEvYSxHQUNBLElBQUFrYSxFQUNB
LFNBQUExcUMsT0FBQSx3QkFBQXVyQyxFQUFBLE9BQUEvYSxFQUFBLElBQ0cscUJBQUErYSxHQUFB
LHVCQUFBQSxHQUNIYixFQUFBN3JDLGVBQUEsdUJBQ0EsRUFBQW15QyxFQUFBM3FCLFNBQUEsb0JB
QUFrbEIsRUFBQSxPQUFBL2EsRUFBQSxtREFLQSxRQUFBODNELEdBQUF6RCxFQUFBQyxFQUFBQyxF
QUFBdjBELEdBQ0E2M0QsRUFBQXhELEVBQUEsa0JBQUFyMEQsR0FDQTYzRCxFQUFBdkQsRUFBQSxx
QkFBQXQwRCxHQUNBNjNELEVBQUF0RCxFQUFBLGFBQUF2MEQsR0F0QkF0eUIsRUFBQWtvQixZQUFB
LEVBQ0Fsb0IsRUFBQW1vQixRQUFBaWlFLENBRUEsSUFBQWpoRSxHQUFBdHBCLEVBQUEsSUFFQWl6
QyxFQUFBOXFCLEVBQUFtQixJL0w4OHFCTSxTQUFTbHBCLEVBQVFELEdnTXI5cUJ2QixZQUlBLFNB
QUE4N0IsR0FBQUMsRUFBQUMsR0FBaUQsS0FBQUQsWUFBQUMsSUFBMEMsU0FBQWo1QixXQUFBLHFD
QVczRixRQUFBc25GLEtBR0EsR0FBQXQ2RSxNQUNBazNCLElBRUEsUUFDQXFqRCxNQUFBLFdBQ0Fy
akQsRUFBQXNqRCxFQUNBeDZFLEVBQUF3NkUsR0FFQUMsT0FBQSxXQUVBLE9BREExckQsR0FBQS91
QixFQUFBazNCLEVBQ0F6bUMsRUFBQSxFQUFxQkEsRUFBQXMrQixFQUFBcjhCLE9BQXNCakMsSUFD
M0NzK0IsRUFBQXQrQixNQUdBMGMsSUFBQSxXQUNBLE1BQUErcEIsSUFFQTBMLFVBQUEsU0FBQXg0
QixHQUNBLEdBQUF1MkIsSUFBQSxDQUlBLE9BSEF6SixLQUFBbDNCLElBQUFrM0IsRUFBQWwzQixF
QUFBalAsU0FDQW1tQyxFQUFBcmdDLEtBQUF1VCxHQUVBLFdBQ0F1MkIsR0FBQTNnQyxJQUFBdzZF
LElBQ0E3NUMsR0FBQSxFQUVBekosSUFBQWwzQixJQUFBazNCLEVBQUFsM0IsRUFBQWpQLFNBQ0Ft
bUMsRUFBQTM2QixPQUFBMjZCLEVBQUFuYSxRQUFBM1MsR0FBQSxPQTNDQW5hLEVBQUFrb0IsWUFB
QSxDQVFBLElBQUFxaUUsR0FBQSxLQUNBRSxHQUNBRCxPQUFBLGNBdUNBRSxFQUFBLFdBQ0EsUUFB
QUEsR0FBQW4rQyxFQUFBNEQsRUFBQUUsR0FDQXZVLEVBQUEzNkIsS0FBQXVwRixHQUVBdnBGLEtB
QUFvckMsUUFDQXByQyxLQUFBZ3ZDLFlBQ0FodkMsS0FBQWt2QyxnQkFDQWx2QyxLQUFBbStDLFlB
QUEsS0FDQW4rQyxLQUFBMjlCLFVBQUEyckQsRUFpQ0EsTUE5QkFDLEdBQUFocUYsVUFBQWlxRixh
QUFBLFNBQUF4d0UsR0FFQSxNQURBaFosTUFBQXV1QyxlQUNBdnVDLEtBQUEyOUIsVUFBQTZULFVB
QUF4NEIsSUFHQXV3RSxFQUFBaHFGLFVBQUFxdkMsaUJBQUEsV0FDQTV1QyxLQUFBMjlCLFVBQUEw
ckQsVUFHQUUsRUFBQWhxRixVQUFBZ3dDLGFBQUEsV0FDQSxNQUFBelMsU0FBQTk4QixLQUFBbStD
LGNBR0FvckMsRUFBQWhxRixVQUFBZ3ZDLGFBQUEsV0FDQXZ1QyxLQUFBbStDLGNBQ0FuK0MsS0FB
QW0rQyxZQUFBbitDLEtBQUFndkMsVUFBQWh2QyxLQUFBZ3ZDLFVBQUF3NkMsYUFBQXhwRixLQUFB
a3ZDLGVBQUFsdkMsS0FBQW9yQyxNQUFBb0csVUFBQXh4QyxLQUFBa3ZDLGVBRUFsdkMsS0FBQTI5
QixVQUFBdXJELE1BSUFLLEVBQUFocUYsVUFBQW92QyxlQUFBLFdBQ0EzdUMsS0FBQW0rQyxjQUNB
bitDLEtBQUFtK0MsY0FDQW4rQyxLQUFBbStDLFlBQUEsS0FDQW4rQyxLQUFBMjlCLFVBQUF3ckQs
UUFDQW5wRixLQUFBMjlCLFVBQUEyckQsSUFJQUMsSUFHQTFxRixHQUFBbW9CLFFBQUF1aUUsR2hN
MjlxQk0sU0FBU3pxRixFQUFRRCxHaU0xanJCdkIsWUFNQSxTQUFBMnBCLEdBQUFDLEVBQUFDLEdB
Q0EsTUFBQUQsS0FBQUMsRUFDQSxJQUFBRCxHQUFBLElBQUFDLEdBQUEsRUFBQUQsSUFBQSxFQUFB
QyxFQUVBRCxPQUFBQyxNQUlBLFFBQUFDLEdBQUFDLEVBQUFDLEdBQ0EsR0FBQUwsRUFBQUksRUFB
QUMsR0FBQSxRQUVBLG9CQUFBRCxJQUFBLE9BQUFBLEdBQUEsZ0JBQUFDLElBQUEsT0FBQUEsRUFD
QSxRQUdBLElBQUFDLEdBQUF4cEIsT0FBQXNELEtBQUFnbUIsR0FDQUcsRUFBQXpwQixPQUFBc0Qs
S0FBQWltQixFQUVBLElBQUFDLEVBQUF4bkIsU0FBQXluQixFQUFBem5CLE9BQUEsUUFFQSxRQUFB
akMsR0FBQSxFQUFpQkEsRUFBQXlwQixFQUFBeG5CLE9BQWtCakMsSUFDbkMsSUFBQWtwQixFQUFB
dHBCLEtBQUE0cEIsRUFBQUMsRUFBQXpwQixNQUFBbXBCLEVBQUFJLEVBQUFFLEVBQUF6cEIsSUFB
QXdwQixFQUFBQyxFQUFBenBCLEtBQ0EsUUFJQSxVQTlCQVIsRUFBQWtvQixZQUFBLEVBQ0Fsb0Is
RUFBQW1vQixRQUFBMkIsQ0FDQSxJQUFBSixHQUFBanBCLE9BQUFDLFVBQUFDLGdCak02bHJCTSxT
QUFTVixFQUFRRCxFQUFTSCxHa010bHJCaEMsbUJBQUFxNEMsV0FJQXI0QyxFQUFBLEtBQUErcUYs
U0FDQWpqRixPQUFBdXdDLFFBQUFyNEMsRUFBQSxNQUlBQSxFQUFBLEtBSUFZLE9BQUF3QyxPQUFB
cEQsRUFBQSxNbE13bXJCTSxTQUFTSSxFQUFRRCxJbU1ob3JCdkIsU0FBQXNuRCxHQUFBLFlBYUEs
U0FBQXVqQyxHQUFBQyxHQUNBMzlFLEVBQUExSyxTQUNBc29GLElBQ0FDLEdBQUEsR0FHQTc5RSxJ
QUFBMUssUUFBQXFvRixFQTBCQSxRQUFBRyxLQUNBLEtBQUFqa0UsRUFBQTdaLEVBQUExSyxRQUFB
LENBQ0EsR0FBQXlvRixHQUFBbGtFLENBVUEsSUFQQUEsR0FBQSxFQUNBN1osRUFBQSs5RSxHQUFB
OXFGLE9BTUE0bUIsRUFBQW1rRSxFQUFBLENBR0EsT0FBQUMsR0FBQSxFQUFBQyxFQUFBbCtFLEVB
QUExSyxPQUFBdWtCLEVBQWdFb2tFLEVBQUFDLEVBQWtCRCxJQUNsRmorRSxFQUFBaStFLEdBQUFq
K0UsRUFBQWkrRSxFQUFBcGtFLEVBRUE3WixHQUFBMUssUUFBQXVrQixFQUNBQSxFQUFBLEdBR0E3
WixFQUFBMUssT0FBQSxFQUNBdWtCLEVBQUEsRUFDQWdrRSxHQUFBLEVBc0VBLFFBQUFNLEdBQUEx
aEYsR0FDQSxHQUFBMmhGLEdBQUEsRUFDQW5zQyxFQUFBLEdBQUFvc0MsR0FBQTVoRixHQUNBaEYs
RUFBQWdELFNBQUFna0IsZUFBQSxHQUVBLE9BREF3ekIsR0FBQXFzQyxRQUFBN21GLEdBQTRCOG1G
LGVBQUEsSUFDNUIsV0FDQUgsS0FDQTNtRixFQUFBaWpCLEtBQUEwakUsR0E0Q0EsUUFBQUksR0FB
QS9oRixHQUNBLGtCQVdBLFFBQUFnaUYsS0FHQTcxQyxhQUFBODFDLEdBQ0FDLGNBQUFDLEdBQ0Fu
aUYsSUFYQSxHQUFBaWlGLEdBQUFsMkMsV0FBQWkyQyxFQUFBLEdBSUFHLEVBQUFDLFlBQUFKLEVB
QUEsS0E1TEEzckYsRUFBQUQsUUFBQTZxRixDQVVBLElBT0FFLEdBUEE1OUUsS0FHQTY5RSxHQUFB
LEVBUUFoa0UsRUFBQSxFQUlBbWtFLEVBQUEsS0E2Q0FsK0UsRUFBQSxtQkFBQXE2QyxLQUFBN3ZD
LEtBQ0ErekUsRUFBQXYrRSxFQUFBZy9FLGtCQUFBaC9FLEVBQUFpL0Usc0JBY0FuQixHQURBLGtC
QUFBUyxHQUNBRixFQUFBTCxHQThCQVUsRUFBQVYsR0FRQUosRUFBQUUsZUFnRkFGLEVBQUFjLDZC
bk0yb3JCOEJ2ckYsS0FBS0osRUFBVSxXQUFhLE1BQU9tQixXQUkzRCxTQUFTbEIsRUFBUUQsRUFB
U0gsR0FFL0IsWUFXQSxTQUFTc3NGLEdBQXdCbGtFLEdBQU8sR0FBSUEsR0FBT0EsRUFBSUMsV0FB
YyxNQUFPRCxFQUFjLElBQUlta0UsS0FBYSxJQUFXLE1BQVBua0UsRUFBZSxJQUFLLEdBQUl2akIs
S0FBT3VqQixHQUFXeG5CLE9BQU9DLFVBQVVDLGVBQWVQLEtBQUs2bkIsRUFBS3ZqQixLQUFNMG5G
LEVBQU8xbkYsR0FBT3VqQixFQUFJdmpCLEdBQWdDLE9BQXRCMG5GLEdBQU9qa0UsUUFBVUYsRUFB
WW1rRSxFQVRsUTNyRixPQUFPNm5DLGVBQWV0b0MsRUFBUyxjQUM3QmlTLE9BQU8sSUFFVGpTLEVB
QVFxc0YsZUFBaUJyc0YsRUFBUXNzRixZQUFjdHNGLEVBQVF1c0YsYUFBZXZzRixFQUFRd3NGLFNB
QVd4c0YsRUFBUXlzRixXQUFhenNGLEVBQVEwc0YsUUFBVTdxRixNb003MnJCakksSUFBQThxRixH
QUFBOXNGLEVBQUEsSUFBWStzRixFcE1pM3JCQ1QsRUFBd0JRLEVvTS8yckJ4QkQsV0FBVSxTQUFB
cDhFLEdBQUEsT0FBV3hGLEtBQU04aEYsRUFBTS8zQyxTQUFVdmtDLFNBQzNDbThFLGFBQWEsU0FB
QXZzRixHQUFBLE9BQVM0SyxLQUFNOGhGLEVBQU05M0MsWUFBYTUwQyxPQUMvQ3NzRixXQUFXLFNB
QUN0c0YsRUFBSW9RLEdBQUwsT0FBaUJ4RixLQUFNOGhGLEVBQU03M0MsVUFBVzcwQyxLQUFJb1Es
U0FDdkRpOEUsZUFBZSxTQUFBcnNGLEdBQUEsT0FBUzRLLEtBQU04aEYsRUFBTTUzQyxjQUFlOTBD
LE9BQ25Eb3NGLGNBQWMsa0JBQVN4aEYsS0FBTThoRixFQUFNMzNDLGVBQ25DbzNDLGlCQUFpQixr
QkFBU3ZoRixLQUFNOGhGLEVBQU0xM0MsbUJwTW00ckI3QyxTQUFTajFDLEVBQVFELEVBQVNILEdB
RS9CLFlBb0JBLFNBQVNtb0IsR0FBdUJDLEdBQU8sTUFBT0EsSUFBT0EsRUFBSUMsV0FBYUQsR0FB
UUUsUUFBU0YsR0FFdkYsUUFBUzZULEdBQWdCQyxFQUFVQyxHQUFlLEtBQU1ELFlBQW9CQyxJQUFn
QixLQUFNLElBQUlqNUIsV0FBVSxxQ0FFaEgsUUFBUzRvQyxHQUEyQmwwQixFQUFNclgsR0FBUSxJ
QUFLcVgsRUFBUSxLQUFNLElBQUltMEIsZ0JBQWUsNERBQWdFLFFBQU94ckMsR0FBeUIsZ0JBQVRB
LElBQXFDLGtCQUFUQSxHQUE4QnFYLEVBQVByWCxFQUVsTyxRQUFTeXJDLEdBQVVDLEVBQVVDLEdB
QWMsR0FBMEIsa0JBQWZBLElBQTRDLE9BQWZBLEVBQXVCLEtBQU0sSUFBSWhwQyxXQUFVLGlFQUFv
RWdwQyxHQUFlRCxHQUFTcHJDLFVBQVlELE9BQU82K0IsT0FBT3lNLEdBQWNBLEVBQVdyckMsV0FB
YXVOLGFBQWVnRSxNQUFPNjVCLEVBQVV2RCxZQUFZLEVBQU95RCxVQUFVLEVBQU14RCxjQUFjLEtB
QWV1RCxJQUFZdHJDLE9BQU93ckMsZUFBaUJ4ckMsT0FBT3dyQyxlQUFlSCxFQUFVQyxHQUFjRCxF
QUFTSSxVQUFZSCxHQUVqZSxRQUFTOGdELEdBQWdCNWtFLEVBQUt2akIsRUFBS3VOLEdBQWlLLE1B
QXBKdk4sS0FBT3VqQixHQUFPeG5CLE9BQU82bkMsZUFBZXJnQixFQUFLdmpCLEdBQU91TixNQUFP
QSxFQUFPczJCLFlBQVksRUFBTUMsY0FBYyxFQUFNd0QsVUFBVSxJQUFrQi9qQixFQUFJdmpCLEdB
QU91TixFQUFnQmdXLEVBMUIzTXhuQixPQUFPNm5DLGVBQWV0b0MsRUFBUyxjQUM3QmlTLE9BQU8s
R0FHVCxJQUVJNjZFLEdBRkE5NUMsRUFBZSxXQUFjLFFBQVNDLEdBQWlCN3VDLEVBQVF1VCxHQUFT
LElBQUssR0FBSW5YLEdBQUksRUFBR0EsRUFBSW1YLEVBQU1sVixPQUFRakMsSUFBSyxDQUFFLEdB
QUkybkMsR0FBYXh3QixFQUFNblgsRUFBSTJuQyxHQUFXSSxXQUFhSixFQUFXSSxhQUFjLEVBQU9K
LEVBQVdLLGNBQWUsRUFBVSxTQUFXTCxLQUFZQSxFQUFXNkQsVUFBVyxHQUFNdnJDLE9BQU82bkMs
ZUFBZWxrQyxFQUFRK2pDLEVBQVd6akMsSUFBS3lqQyxJQUFpQixNQUFPLFVBQVVuTSxFQUFha1gs
RUFBWUMsR0FBaUosTUFBOUhELElBQVlELEVBQWlCalgsRUFBWXQ3QixVQUFXd3lDLEdBQWlCQyxH
QUFhRixFQUFpQmpYLEVBQWFtWCxHQUFxQm5YLE1xTWw1ckJqaUI2VSxFQUFBaHhDLEVBQUEsSXJN
dzVyQkt1ekMsRUFBVXByQixFQUF1QjZvQixHcU12NXJCdEN3QyxFQUFBeHpDLEVBQUEsSXJNMjVy
Qkt5ekMsRUFBZXRyQixFQUF1QnFyQixHcU0xNXJCM0MwNUMsRUFBQWx0RixFQUFBLElBRU1tdEYs
dUJBQ1EsT0FEUkgsRUFBQUMsRUFBQUMsRUFBQTEzQyxZQUVXLFVBRlh3M0MsRUFBQUMsRUFBQUMs
RUFBQTMzQyxlQUdjLGFBSGQwM0MsR0FNZUcsRXJNazZyQlAsU0FBVW4rQyxHQUdyQixRQUFTbStD
LEtBR1AsTUFGQW54RCxHQUFnQjM2QixLQUFNOHJGLEdBRWZ0aEQsRUFBMkJ4cUMsTUFBTzhyRixF
QUFPL2dELFdBQWF6ckMsT0FBT216QyxlQUFlcTVDLElBQVMvckYsTUFBTUMsS0FBTXFCLFlBbUYx
RyxNQXhGQXFwQyxHQUFVb2hELEVBQVFuK0MsR0FRbEJrRSxFQUFhaTZDLElBQ1h2b0YsSUFBSyxr
QkFDTHVOLE1BQU8sV3FNcDZyQlEsR0FDUmk3RSxHQUFnQi9yRixLQUFLd1csTUFBckJ1MUUsWUFD
RkMsRUFBMkIsSUFBaEJELEVBQW9CLE9BQVMsT0FFOUMsT0FDRTk1QyxHQUFBanJCLFFBQUF0Z0Is
Y0FBQSxRQUFNdXNDLFVBQVUsY0FDZGhCLEVBQUFqckIsUUFBQXRnQixjQUFBLGNBQVNxbEYsR0FB
ZSxNQUQxQixJQUMwQ0MsRUFEMUMsWXJNazdyQkR6b0YsSUFBSyxtQkFDTHVOLE1BQU8sU3FNNzZy
Qk9naUUsR0FDZixHQUFNdjlCLEdBQVFzMkMsRUFBYy9ZLEdBRExtWixFQUVvQmpzRixLQUFLd1cs
TUFBaEMwMUUsRUFGT0QsRUFFZm5aLE9BQXdCcVosRUFGVEYsRUFFU0UsTUFFaEMsT0FDRWw2QyxH
QUFBanJCLFFBQUF0Z0IsY0FBQSxLQUFHdXNDLFdBQVcsRUFBQWQsRUFBQW5yQixVQUFhbVcsU0FB
VTIxQyxJQUFXb1osSUFDN0N2OEIsT0FBUytoQixPQUFRLFdBQ2pCMGEsUUFBUyxpQkFBTUQsR0FB
T3JaLEtBQ3RCdjlCLE1yTXU3ckJKaHlDLElBQUssb0JBQ0x1TixNQUFPLFdxTW43ckJVLEdBQUF1
N0UsR0FDMkJyc0YsS0FBS3dXLE1BQTFDODFFLEVBRFVELEVBQ1ZDLGVBQWdCQyxFQURORixFQUNN
RSxnQkFDeEIsSUFBSUQsRUFBaUIsRUFDbkIsTUFDRXI2QyxHQUFBanJCLFFBQUF0Z0IsY0FBQSxV
QUFRdXNDLFVBQVUsa0JBQ1ZtNUMsUUFBU0csR0FEakIsc0JyTTg3ckJIaHBGLElBQUssU0FDTHVO
LE1BQU8sV3FNdjdyQkQsR0FBQTA3RSxHQUFBeHNGLElBQ1AsT0FDRWl5QyxHQUFBanJCLFFBQUF0
Z0IsY0FBQSxVQUFRdXNDLFVBQVUsVUFDZmp6QyxLQUFLeXNGLGtCQUNOeDZDLEVBQUFqckIsUUFB
QXRnQixjQUFBLE1BQUl1c0MsVUFBVSxZQUNYMjRDLEVBQUE1M0MsU0FBQTQzQyxFQUFBMTNDLFlB
QUEwM0MsRUFBQTMzQyxnQkFBMEM1eEMsSUFBSSxTQUFBeXdFLEdBQUEsTUFDN0M3Z0MsR0FBQWpy
QixRQUFBdGdCLGNBQUEsTUFBSW5ELElBQUt1dkUsR0FDTjBaLEVBQUtFLGlCQUFpQjVaLE9BSTVC
OXlFLEtBQUsyc0YseUJyTW04ckJKYixHQUNQcDhDLEVBQU9sNkIsVXFNNS9yQldzMkUsR0FDWi83
RCxXQUNMdThELGVBQWdCNThDLEVBQUEvNUIsVUFBVWt6QixPQUFPMEksV0FDakN3NkMsWUFBYXI4
QyxFQUFBLzVCLFVBQVVrekIsT0FBTzBJLFdBQzlCdWhDLE9BQVFwakMsRUFBQS81QixVQUFVNFAs
T0FBT2dzQixXQUN6Qmc3QyxpQkFBa0I3OEMsRUFBQS81QixVQUFVdWEsS0FBS3FoQixXQUNqQzQ2
QyxPQUFRejhDLEVBQUEvNUIsVUFBVXVhLEtBQUtxaEIsWXJNKy9yQjFCMXlDLEVBQVFtb0IsUXFN
cmdzQlk4a0UsR3JNeWdzQmYsU0FBU2h0RixFQUFRRCxFQUFTSCxHQUUvQixZQWdCQSxTQUFTbW9C
LEdBQXVCQyxHQUFPLE1BQU9BLElBQU9BLEVBQUlDLFdBQWFELEdBQVFFLFFBQVNGLEdBRXZGLFFB
QVM2VCxHQUFnQkMsRUFBVUMsR0FBZSxLQUFNRCxZQUFvQkMsSUFBZ0IsS0FBTSxJQUFJajVCLFdB
QVUscUNBRWhILFFBQVM0b0MsR0FBMkJsMEIsRUFBTXJYLEdBQVEsSUFBS3FYLEVBQVEsS0FBTSxJ
QUFJbTBCLGdCQUFlLDREQUFnRSxRQUFPeHJDLEdBQXlCLGdCQUFUQSxJQUFxQyxrQkFBVEEsR0FB
OEJxWCxFQUFQclgsRUFFbE8sUUFBU3lyQyxHQUFVQyxFQUFVQyxHQUFjLEdBQTBCLGtCQUFmQSxJ
QUE0QyxPQUFmQSxFQUF1QixLQUFNLElBQUlocEMsV0FBVSxpRUFBb0VncEMsR0FBZUQsR0FBU3By
QyxVQUFZRCxPQUFPNitCLE9BQU95TSxHQUFjQSxFQUFXcnJDLFdBQWF1TixhQUFlZ0UsTUFBTzY1
QixFQUFVdkQsWUFBWSxFQUFPeUQsVUFBVSxFQUFNeEQsY0FBYyxLQUFldUQsSUFBWXRyQyxPQUFP
d3JDLGVBQWlCeHJDLE9BQU93ckMsZUFBZUgsRUFBVUMsR0FBY0QsRUFBU0ksVUFBWUgsR0FwQmpl
dHJDLE9BQU82bkMsZUFBZXRvQyxFQUFTLGNBQzdCaVMsT0FBTyxHQUdULElBQUkrZ0MsR0FBZSxX
QUFjLFFBQVNDLEdBQWlCN3VDLEVBQVF1VCxHQUFTLElBQUssR0FBSW5YLEdBQUksRUFBR0EsRUFB
SW1YLEVBQU1sVixPQUFRakMsSUFBSyxDQUFFLEdBQUkybkMsR0FBYXh3QixFQUFNblgsRUFBSTJu
QyxHQUFXSSxXQUFhSixFQUFXSSxhQUFjLEVBQU9KLEVBQVdLLGNBQWUsRUFBVSxTQUFXTCxLQUFZ
QSxFQUFXNkQsVUFBVyxHQUFNdnJDLE9BQU82bkMsZUFBZWxrQyxFQUFRK2pDLEVBQVd6akMsSUFB
S3lqQyxJQUFpQixNQUFPLFVBQVVuTSxFQUFha1gsRUFBWUMsR0FBaUosTUFBOUhELElBQVlELEVB
QWlCalgsRUFBWXQ3QixVQUFXd3lDLEdBQWlCQyxHQUFhRixFQUFpQmpYLEVBQWFtWCxHQUFxQm5Y
LE1zTTNoc0JqaUI2VSxFQUFBaHhDLEVBQUEsSXRNK2hzQkt1ekMsRUFBVXByQixFQUF1QjZvQixH
c005aHNCdENrOUMsRUFBQWx1RixFQUFBLEl0TWtpc0JLbXVGLEVBQWtCaG1FLEVBQXVCK2xFLEdz
TWhpc0J6QkUsRXRNMGlzQlAsU0FBVW4vQyxHQUdyQixRQUFTbS9DLEtBQ1AsR0FBSWhoRCxHQUVB
dUcsRUFBT3pFLEVBQU8wRSxDQUVsQjNYLEdBQWdCMzZCLEtBQU04c0YsRUFFdEIsS0FBSyxHQUFJ
djZDLEdBQU9seEMsVUFBVUMsT0FBUTVCLEVBQU9vWCxNQUFNeTdCLEdBQU9DLEVBQU8sRUFBR0Es
RUFBT0QsRUFBTUMsSUFDM0U5eUMsRUFBSzh5QyxHQUFRbnhDLFVBQVVteEMsRUFHekIsT0FBZUgs
R0FBU3pFLEVBQVFwRCxFQUEyQnhxQyxNQUFPOHJDLEVBQU9naEQsRUFBTy9oRCxXQUFhenJDLE9B
QU9tekMsZUFBZXE2QyxJQUFTN3RGLEtBQUtjLE1BQU0rckMsR0FBTzlyQyxNQUFNQyxPQUFPUCxL
QUFpQmt1QyxFc01uanNCL0ttL0MsV0FBYSxTQUFBNTlFLEdBQ1MsSUFBaEJBLEVBQUs3TixRQUNQ
c3NDLEVBQUtwM0IsTUFBTSswRSxRQUFRcDhFLEl0TWlqc0JibWpDLEVBSUpELEVBQVE3SCxFQUEy
Qm9ELEVBQU8wRSxHQXFCL0MsTUF0Q0E1SCxHQUFVb2lELEVBQVFuL0MsR0FvQmxCa0UsRUFBYWk3
QyxJQUNYdnBGLElBQUssU0FDTHVOLE1BQU8sV3NNcmpzQlIsTUFDRW1oQyxHQUFBanJCLFFBQUF0
Z0IsY0FBQSxVQUFRdXNDLFVBQVUsVUFDaEJoQixFQUFBanJCLFFBQUF0Z0IsY0FBQSxtQkFDQXVy
QyxFQUFBanJCLFFBQUF0Z0IsY0FBQW1tRixFQUFBN2xFLFNBQWU4ckIsU0FBQSxFQUNBRCxPQUFR
N3lDLEtBQUsrc0YsV0FDYjE1QyxZQUFZLGdDdE1na3NCekJ5NUMsR0FDUHA5QyxFQUFPbDZCLFVz
TWxsc0JXczNFLEdBQ1ovOEQsV0FDTHc3RCxRQUFTNzdDLEVBQUEvNUIsVUFBVXVhLEtBQUtxaEIs
WXRNcWxzQjNCMXlDLEVBQVFtb0IsUXNNdmxzQlk4bEUsR3RNMmxzQmYsU0FBU2h1RixFQUFRRCxF
QUFTSCxHQUUvQixZQTBCQSxTQUFTbW9CLEdBQXVCQyxHQUFPLE1BQU9BLElBQU9BLEVBQUlDLFdB
QWFELEdBQVFFLFFBQVNGLEdBRXZGLFFBQVM2VCxHQUFnQkMsRUFBVUMsR0FBZSxLQUFNRCxZQUFv
QkMsSUFBZ0IsS0FBTSxJQUFJajVCLFdBQVUscUNBRWhILFFBQVM0b0MsR0FBMkJsMEIsRUFBTXJY
LEdBQVEsSUFBS3FYLEVBQVEsS0FBTSxJQUFJbTBCLGdCQUFlLDREQUFnRSxRQUFPeHJDLEdBQXlC
LGdCQUFUQSxJQUFxQyxrQkFBVEEsR0FBOEJxWCxFQUFQclgsRUFFbE8sUUFBU3lyQyxHQUFVQyxF
QUFVQyxHQUFjLEdBQTBCLGtCQUFmQSxJQUE0QyxPQUFmQSxFQUF1QixLQUFNLElBQUlocEMsV0FB
VSxpRUFBb0VncEMsR0FBZUQsR0FBU3ByQyxVQUFZRCxPQUFPNitCLE9BQU95TSxHQUFjQSxFQUFX
cnJDLFdBQWF1TixhQUFlZ0UsTUFBTzY1QixFQUFVdkQsWUFBWSxFQUFPeUQsVUFBVSxFQUFNeEQs
Y0FBYyxLQUFldUQsSUFBWXRyQyxPQUFPd3JDLGVBQWlCeHJDLE9BQU93ckMsZUFBZUgsRUFBVUMs
R0FBY0QsRUFBU0ksVUFBWUgsR0FFamUsUUFBUzhnRCxHQUFnQjVrRSxFQUFLdmpCLEVBQUt1TixH
QUFpSyxNQUFwSnZOLEtBQU91akIsR0FBT3huQixPQUFPNm5DLGVBQWVyZ0IsRUFBS3ZqQixHQUFP
dU4sTUFBT0EsRUFBT3MyQixZQUFZLEVBQU1DLGNBQWMsRUFBTXdELFVBQVUsSUFBa0IvakIsRUFB
SXZqQixHQUFPdU4sRUFBZ0JnVyxFQWhDM014bkIsT0FBTzZuQyxlQUFldG9DLEVBQVMsY0FDN0Jp
UyxPQUFPLEdBR1QsSUFJSWs4RSxHQUpBdi9DLEVBQVdudUMsT0FBT3dDLFFBQVUsU0FBVW1CLEdB
QVUsSUFBSyxHQUFJNUQsR0FBSSxFQUFHQSxFQUFJZ0MsVUFBVUMsT0FBUWpDLElBQUssQ0FBRSxH
QUFJNkQsR0FBUzdCLFVBQVVoQyxFQUFJLEtBQUssR0FBSWtFLEtBQU9MLEdBQWM1RCxPQUFPQyxV
QUFVQyxlQUFlUCxLQUFLaUUsRUFBUUssS0FBUU4sRUFBT00sR0FBT0wsRUFBT0ssSUFBWSxNQUFP
TixJQUVuUDR1QyxFQUFlLFdBQWMsUUFBU0MsR0FBaUI3dUMsRUFBUXVULEdBQVMsSUFBSyxHQUFJ
blgsR0FBSSxFQUFHQSxFQUFJbVgsRUFBTWxWLE9BQVFqQyxJQUFLLENBQUUsR0FBSTJuQyxHQUFh
eHdCLEVBQU1uWCxFQUFJMm5DLEdBQVdJLFdBQWFKLEVBQVdJLGFBQWMsRUFBT0osRUFBV0ssY0FB
ZSxFQUFVLFNBQVdMLEtBQVlBLEVBQVc2RCxVQUFXLEdBQU12ckMsT0FBTzZuQyxlQUFlbGtDLEVB
QVErakMsRUFBV3pqQyxJQUFLeWpDLElBQWlCLE1BQU8sVUFBVW5NLEVBQWFrWCxFQUFZQyxHQUFp
SixNQUE5SEQsSUFBWUQsRUFBaUJqWCxFQUFZdDdCLFVBQVd3eUMsR0FBaUJDLEdBQWFGLEVBQWlC
algsRUFBYW1YLEdBQXFCblgsTXVNeG1zQmppQjZVLEVBQUFoeEMsRUFBQSxJdk04bXNCS3V6QyxF
QUFVcHJCLEVBQXVCNm9CLEd1TTdtc0J0Q3U5QyxFQUFBdnVGLEVBQUEsS3ZNaW5zQkt3dUYsRUFB
YXJtRSxFQUF1Qm9tRSxHdU1obnNCekNFLEVBQUF6dUYsRUFBQSxLdk1vbnNCSzB1RixFQUFXdm1F
LEVBQXVCc21FLEd1TW5uc0J2Q3ZCLEVBQUFsdEYsRUFBQSxJQUVNMnVGLHVCQUNRLGtCQUFNLElB
RGQzQixFQUFBc0IsRUFBQXBCLEVBQUExM0MsWUFFVyxTQUFBbzVDLEdBQUEsT0FBU0EsRUFBS0Ms
WUFGekI3QixFQUFBc0IsRUFBQXBCLEVBQUEzM0MsZUFHYyxTQUFBcTVDLEdBQUEsTUFBUUEsR0FB
S0MsWUFIM0JQLEdBTWVRLEV2TWlvc0JGLFNBQVU3L0MsR0FHMUIsUUFBUzYvQyxLQUNQLEdBQUkx
aEQsR0FFQXVHLEVBQU96RSxFQUFPMEUsQ0FFbEIzWCxHQUFnQjM2QixLQUFNd3RGLEVBRXRCLEtB
QUssR0FBSWo3QyxHQUFPbHhDLFVBQVVDLE9BQVE1QixFQUFPb1gsTUFBTXk3QixHQUFPQyxFQUFP
LEVBQUdBLEVBQU9ELEVBQU1DLElBQzNFOXlDLEVBQUs4eUMsR0FBUW54QyxVQUFVbXhDLEVBR3pC
LE9BQWVILEdBQVN6RSxFQUFRcEQsRUFBMkJ4cUMsTUFBTzhyQyxFQUFPMGhELEVBQVl6aUQsV0FB
YXpyQyxPQUFPbXpDLGVBQWUrNkMsSUFBY3Z1RixLQUFLYyxNQUFNK3JDLEdBQU85ckMsTUFBTUMs
T0FBT1AsS0FBaUJrdUMsRXVNem9zQnpMQyxPQUFVaWxDLG1Cdk15b3NCZ09sbEMsRXVNdm9zQjFP
Ni9DLHFCQUF1QixXQUNyQjcvQyxFQUFLcDNCLE1BQU1rM0UsUUFBUXhDLGtCdk13b3NCZnQ5QyxF
dU1yb3NCTisvQyxXQUFhLFNBQUE3YSxHQUNYbGxDLEVBQUt5QixVQUFXeWpDLFl2TWtvc0JSeGdD
LEVBSUpELEVBQVE3SCxFQUEyQm9ELEVBQU8wRSxHQStEL0MsTUFoRkE1SCxHQUFVOGlELEVBQWE3
L0MsR0FvQnZCa0UsRUFBYTI3QyxJQUNYanFGLElBQUssa0JBQ0x1TixNQUFPLFN1TXhvc0JNdzdF
LEdBQWdCLEdBQUFMLEdBQ0hqc0YsS0FBS3dXLE1BQXhCbzNFLEVBRHNCM0IsRUFDdEIyQixNQUFP
RixFQURlekIsRUFDZnlCLE9BQ2YsSUFBSUUsRUFBTXRzRixPQUFTLEVBQ2pCLE1BQ0Uyd0MsR0FB
QWpyQixRQUFBdGdCLGNBQUEsU0FBT3VzQyxVQUFVLGFBQ1Z0cEMsS0FBSyxXQUNMMGxCLFFBQVNp
OUQsSUFBbUJzQixFQUFNdHNGLE9BQ2xDNnRCLFNBQVV1K0QsRUFBUXZDLGlCdk04b3NCNUI1bkYs
SUFBSyxlQUNMdU4sTUFBTyxTdU0xb3NCR3c3RSxHQUFnQixHQUNuQnNCLEdBQVU1dEYsS0FBS3dX
LE1BQWZvM0UsTUFDQTlhLEVBQVc5eUUsS0FBSzZ0QyxNQUFoQmlsQyxPQUNGaVosRUFBYzZCLEVB
QU10c0YsT0FBU2dyRixDQUVuQyxJQUFJc0IsRUFBTXRzRixPQUNSLE1BQ0Uyd0MsR0FBQWpyQixR
QUFBdGdCLGNBQUEwbUYsRUFBQXBtRSxTQUFRc2xFLGVBQWdCQSxFQUNoQlAsWUFBYUEsRUFDYmpa
LE9BQVFBLEVBQ1J5WixpQkFBa0J2c0YsS0FBS3l0RixxQkFBcUJ4MkUsS0FBS2pYLE1BQ2pEbXNG
LE9BQVFuc0YsS0FBSzJ0RixXQUFXMTJFLEtBQUtqWCxXdk04b3NCeEN1RCxJQUFLLFNBQ0x1TixN
QUFPLFd1TTFvc0JELEdBQUF1N0UsR0FDb0Jyc0YsS0FBS3dXLE1BQXhCbzNFLEVBRER2QixFQUND
dUIsTUFBT0YsRUFEUnJCLEVBQ1FxQixRQUNQNWEsRUFBVzl5RSxLQUFLNnRDLE1BQWhCaWxDLE9B
RUYrYSxFQUFnQkQsRUFBTTlhLE9BQU91YSxFQUFhdmEsSUFDMUN3WixFQUFpQnNCLEVBQU01d0Ms
T0FBTyxTQUFDM25DLEVBQU9pNEUsR0FBUixNQUNsQ0EsR0FBS0MsVUFBWWw0RSxFQUFRLEVBQUlB
LEdBQzdCLEVBR0YsT0FDRTQ4QixHQUFBanJCLFFBQUF0Z0IsY0FBQSxXQUFTdXNDLFVBQVUsUUFD
aEJqekMsS0FBSzh0RixnQkFBZ0J4QixHQUN0QnI2QyxFQUFBanJCLFFBQUF0Z0IsY0FBQSxNQUFJ
dXNDLFVBQVUsYUFDWDQ2QyxFQUFjeHJGLElBQUksU0FBQWlyRixHQUFBLE1BQ2pCcjdDLEdBQUFq
ckIsUUFBQXRnQixjQUFBd21GLEVBQUFsbUUsUUFBQXltQixHQUFVbHFDLElBQUsrcEYsRUFBS3Z1
RixHQUFJdXVGLEtBQU1BLEdBQVVJLE9BRzNDMXRGLEtBQUsrdEYsYUFBYXpCLFF2TW9wc0JqQmtC
LEdBQ1A5OUMsRUFBT2w2QixVdU1udHNCV2c0RSxHQUNaejlELFdBQ0w2OUQsTUFBT2wrQyxFQUFB
LzVCLFVBQVV5L0IsTUFBTTdELFdBQ3ZCbThDLFFBQVNoK0MsRUFBQS81QixVQUFVNkIsT0FBTys1
QixZdk1zdHNCN0IxeUMsRUFBUW1vQixRdU16dHNCWXdtRSxHdk02dHNCZixTQUFTMXVGLEVBQVFE
LEVBQVNILEdBRS9CLFlBb0JBLFNBQVNtb0IsR0FBdUJDLEdBQU8sTUFBT0EsSUFBT0EsRUFBSUMs
V0FBYUQsR0FBUUUsUUFBU0YsR0FFdkYsUUFBUzZULEdBQWdCQyxFQUFVQyxHQUFlLEtBQU1ELFlB
QW9CQyxJQUFnQixLQUFNLElBQUlqNUIsV0FBVSxxQ0FFaEgsUUFBUzRvQyxHQUEyQmwwQixFQUFN
clgsR0FBUSxJQUFLcVgsRUFBUSxLQUFNLElBQUltMEIsZ0JBQWUsNERBQWdFLFFBQU94ckMsR0FB
eUIsZ0JBQVRBLElBQXFDLGtCQUFUQSxHQUE4QnFYLEVBQVByWCxFQUVsTyxRQUFTeXJDLEdBQVVD
LEVBQVVDLEdBQWMsR0FBMEIsa0JBQWZBLElBQTRDLE9BQWZBLEVBQXVCLEtBQU0sSUFBSWhwQyxX
QUFVLGlFQUFvRWdwQyxHQUFlRCxHQUFTcHJDLFVBQVlELE9BQU82K0IsT0FBT3lNLEdBQWNBLEVB
QVdyckMsV0FBYXVOLGFBQWVnRSxNQUFPNjVCLEVBQVV2RCxZQUFZLEVBQU95RCxVQUFVLEVBQU14
RCxjQUFjLEtBQWV1RCxJQUFZdHJDLE9BQU93ckMsZUFBaUJ4ckMsT0FBT3dyQyxlQUFlSCxFQUFV
QyxHQUFjRCxFQUFTSSxVQUFZSCxHQXhCamV0ckMsT0FBTzZuQyxlQUFldG9DLEVBQVMsY0FDN0Jp
UyxPQUFPLEdBR1QsSUFBSStnQyxHQUFlLFdBQWMsUUFBU0MsR0FBaUI3dUMsRUFBUXVULEdBQVMs
SUFBSyxHQUFJblgsR0FBSSxFQUFHQSxFQUFJbVgsRUFBTWxWLE9BQVFqQyxJQUFLLENBQUUsR0FB
STJuQyxHQUFheHdCLEVBQU1uWCxFQUFJMm5DLEdBQVdJLFdBQWFKLEVBQVdJLGFBQWMsRUFBT0os
RUFBV0ssY0FBZSxFQUFVLFNBQVdMLEtBQVlBLEVBQVc2RCxVQUFXLEdBQU12ckMsT0FBTzZuQyxl
QUFlbGtDLEVBQVErakMsRUFBV3pqQyxJQUFLeWpDLElBQWlCLE1BQU8sVUFBVW5NLEVBQWFrWCxF
QUFZQyxHQUFpSixNQUE5SEQsSUFBWUQsRUFBaUJqWCxFQUFZdDdCLFVBQVd3eUMsR0FBaUJDLEdB
QWFGLEVBQWlCalgsRUFBYW1YLEdBQXFCblgsTXdNaHZzQmppQjZVLEVBQUFoeEMsRUFBQSxJeE1v
dnNCS3V6QyxFQUFVcHJCLEVBQXVCNm9CLEd3TW52c0J0Q3dDLEVBQUF4ekMsRUFBQSxJeE11dnNC
S3l6QyxFQUFldHJCLEVBQXVCcXJCLEd3TXR2c0IzQzA2QyxFQUFBbHVGLEVBQUEsSXhNMHZzQktt
dUYsRUFBa0JobUUsRUFBdUIrbEUsR3dNeHZzQnpCb0IsRXhNa3dzQkwsU0FBVXJnRCxHQUd2QixR
QUFTcWdELEtBQ1AsR0FBSWxpRCxHQUVBdUcsRUFBT3pFLEVBQU8wRSxDQUVsQjNYLEdBQWdCMzZC
LEtBQU1ndUYsRUFFdEIsS0FBSyxHQUFJejdDLEdBQU9seEMsVUFBVUMsT0FBUTVCLEVBQU9vWCxN
QUFNeTdCLEdBQU9DLEVBQU8sRUFBR0EsRUFBT0QsRUFBTUMsSUFDM0U5eUMsRUFBSzh5QyxHQUFR
bnhDLFVBQVVteEMsRUFHekIsT0FBZUgsR0FBU3pFLEVBQVFwRCxFQUEyQnhxQyxNQUFPOHJDLEVB
QU9raUQsRUFBU2pqRCxXQUFhenJDLE9BQU9tekMsZUFBZXU3QyxJQUFXL3VGLEtBQUtjLE1BQU0r
ckMsR0FBTzlyQyxNQUFNQyxPQUFPUCxLQUFpQmt1QyxFd014d3NCbkxDLE9BQ0VzRixTQUFTLEd4
TXl3c0JMdkYsRXdNdHdzQk5xZ0Qsa0JBQW9CLFdBQ2xCcmdELEVBQUt5QixVQUFXOEQsU0FBUyxL
eE11d3NCckJ2RixFd01wd3NCTm0vQyxXQUFhLFNBQUNodUYsRUFBSW9RLEdBQ0ksSUFBaEJBLEVB
QUs3TixPQUNQc3NDLEVBQUtwM0IsTUFBTTgwRSxXQUFXdnNGLEdBRXRCNnVDLEVBQUtwM0IsTUFB
TTYwRSxTQUFTdHNGLEVBQUlvUSxHQUUxQnkrQixFQUFLeUIsVUFBVzhELFNBQVMsS3hNMHZzQmpC
YixFQVdKRCxFQUFRN0gsRUFBMkJvRCxFQUFPMEUsR0FzRC9DLE1BOUVBNUgsR0FBVXNqRCxFQUFV
cmdELEdBMkJwQmtFLEVBQWFtOEMsSUFDWHpxRixJQUFLLFNBQ0x1TixNQUFPLFd3TXZ3c0JELEdB
QUEwN0UsR0FBQXhzRixLQUFBaXNGLEVBQ29DanNGLEtBQUt3VyxNQUF4QzgyRSxFQUREckIsRUFD
Q3FCLEtBQU1sQyxFQURQYSxFQUNPYixhQUFjRSxFQURyQlcsRUFDcUJYLFdBRXhCNzBFLFFBdUJK
LE9BckJFQSxHQURFelcsS0FBSzZ0QyxNQUFNc0YsUUFFWGxCLEVBQUFqckIsUUFBQXRnQixjQUFB
bW1GLEVBQUE3bEUsU0FBZTdYLEtBQU1tK0UsRUFBS24rRSxLQUNYZ2tDLFFBQVNuekMsS0FBSzZ0
QyxNQUFNc0YsUUFDcEJOLE9BQVEsU0FBQzFqQyxHQUFELE1BQVVxOUUsR0FBS08sV0FBV08sRUFB
S3Z1RixHQUFJb1EsTUFJMUQ4aUMsRUFBQWpyQixRQUFBdGdCLGNBQUEsT0FBS3VzQyxVQUFVLFFB
Q2JoQixFQUFBanJCLFFBQUF0Z0IsY0FBQSxTQUFPdXNDLFVBQVUsU0FDVnRwQyxLQUFLLFdBQ0ww
bEIsUUFBU2krRCxFQUFLQyxVQUNkcCtELFNBQVUsaUJBQU1pOEQsR0FBYWtDLEVBQUt2dUYsT0FD
ekNrekMsRUFBQWpyQixRQUFBdGdCLGNBQUEsU0FBT3duRixjQUFlbHVGLEtBQUtpdUYsbUJBQ3hC
WCxFQUFLbitFLE1BRVI4aUMsRUFBQWpyQixRQUFBdGdCLGNBQUEsVUFBUXVzQyxVQUFVLFVBQ1Zt
NUMsUUFBUyxpQkFBTWQsR0FBV2dDLEVBQUt2dUYsUUFNM0NrekMsRUFBQWpyQixRQUFBdGdCLGNB
QUEsTUFBSXVzQyxXQUFXLEVBQUFkLEVBQUFuckIsVUFDYnVtRSxVQUFXRCxFQUFLQyxVQUNoQnA2
QyxRQUFTbnpDLEtBQUs2dEMsTUFBTXNGLFdBRW5CMThCLE94TXl4c0JDdTNFLEdBQ1B0K0MsRUFB
T2w2QixVd01sMXNCV3c0RSxHQUNaaitELFdBQ0x1OUQsS0FBTTU5QyxFQUFBLzVCLFVBQVU2QixP
QUFPKzVCLFdBQ3ZCODVDLFNBQVUzN0MsRUFBQS81QixVQUFVdWEsS0FBS3FoQixXQUN6Qis1QyxX
QUFZNTdDLEVBQUEvNUIsVUFBVXVhLEtBQUtxaEIsV0FDM0I2NUMsYUFBYzE3QyxFQUFBLzVCLFVB
QVV1YSxLQUFLcWhCLFl4TXExc0JoQzF5QyxFQUFRbW9CLFF3TTExc0JZZ25FLEd4TTgxc0JmLFNB
QVNsdkYsRUFBUUQsRUFBU0gsR0FFL0IsWUEwQkEsU0FBU3NzRixHQUF3QmxrRSxHQUFPLEdBQUlB
LEdBQU9BLEVBQUlDLFdBQWMsTUFBT0QsRUFBYyxJQUFJbWtFLEtBQWEsSUFBVyxNQUFQbmtFLEVB
QWUsSUFBSyxHQUFJdmpCLEtBQU91akIsR0FBV3huQixPQUFPQyxVQUFVQyxlQUFlUCxLQUFLNm5C
LEVBQUt2akIsS0FBTTBuRixFQUFPMW5GLEdBQU91akIsRUFBSXZqQixHQUFnQyxPQUF0QjBuRixH
QUFPamtFLFFBQVVGLEVBQVlta0UsRUFFbFEsUUFBU3BrRSxHQUF1QkMsR0FBTyxNQUFPQSxJQUFP
QSxFQUFJQyxXQUFhRCxHQUFRRSxRQUFTRixHQTFCdkZ4bkIsT0FBTzZuQyxlQUFldG9DLEVBQVMs
Y0FDN0JpUyxPQUFPLEd5TXYyc0JWLElBQUE0K0IsR0FBQWh4QyxFQUFBLEl6TTQyc0JLdXpDLEVB
QVVwckIsRUFBdUI2b0IsR3lNMzJzQnRDeTNDLEVBQUF6b0YsRUFBQSxJQUNBeXZGLEVBQUF6dkYs
RUFBQSxJQUNBMHZGLEVBQUExdkYsRUFBQSxLek1pM3NCSzJ2RixFQUFXeG5FLEVBQXVCdW5FLEd5
TWgzc0J2Q0UsRUFBQTV2RixFQUFBLEt6TW8zc0JLNnZGLEVBQWdCMW5FLEVBQXVCeW5FLEd5TW4z
c0I1Q0UsRUFBQTl2RixFQUFBLEtBQVkrdkYsRXpNdTNzQk96RCxFQUF3QndELEd5TXIzc0JyQ0Us
RUFBTSxTQUFBNWlELEdBQUEsR0FBRThoRCxHQUFGOWhELEVBQUU4aEQsTUFBT0YsRUFBVDVoRCxF
QUFTNGhELE9BQVQsT0FDVno3QyxHQUFBanJCLFFBQUF0Z0IsY0FBQSxXQUNFdXJDLEVBQUFqckIs
UUFBQXRnQixjQUFBMm5GLEVBQUFybkUsU0FBUXVrRSxRQUFTbUMsRUFBUW5DLFVBQ3pCdDVDLEVB
QUFqckIsUUFBQXRnQixjQUFBNm5GLEVBQUF2bkUsU0FBYTRtRSxNQUFPQSxFQUFPRixRQUFTQSxL
QUl4Q2dCLEdBQUkzK0QsV0FDRjY5RCxNQUFPbCtDLEVBQUEvNUIsVUFBVXkvQixNQUFNN0QsV0FD
dkJtOEMsUUFBU2grQyxFQUFBLzVCLFVBQVU2QixPQUFPKzVCLFdBRzVCLElBQU1pMEMsR0FBa0Is
U0FBQTMzQyxHQUFBLE9BQ3RCKy9DLE1BQU8vL0MsRUFBTSsvQyxRQUdUbkksRUFBcUIsU0FBQTEy
QyxHQUFBLE9BQ3ZCMitDLFNBQVMsRUFBQXZHLEVBQUFoZ0Usb0JBQW1Cc25FLEVBQWExL0MsSXpN
czRzQjVDbHdDLEdBQVFtb0IsU3lNbjRzQk0sRUFBQW1uRSxFQUFBeDlDLFNBQ2I2MEMsRUFDQUMs
R0FDQWlKLEl6TW80c0JJLFNBQVM1dkYsRUFBUUQsRUFBU0gsR0FFL0IsWUFzQkEsU0FBU21vQixH
QUF1QkMsR0FBTyxNQUFPQSxJQUFPQSxFQUFJQyxXQUFhRCxHQUFRRSxRQUFTRixHME0xN3NCeEYs
R0FBQTRvQixHQUFBaHhDLEVBQUEsSTFNdzZzQkt1ekMsRUFBVXByQixFQUF1QjZvQixHME12NnNC
dENpL0MsRUFBQWp3RixFQUFBLEtBQ0F5b0YsRUFBQXpvRixFQUFBLElBQ0F5dkYsRUFBQXp2RixF
QUFBLElBQ0Frd0YsRUFBQWx3RixFQUFBLEsxTTg2c0JLbXdGLEVBQVFob0UsRUFBdUIrbkUsRzBN
NzZzQnBDRSxFQUFBcHdGLEVBQUEsSzFNaTdzQktxd0YsRUFBYWxvRSxFQUF1QmlvRSxFME1oN3NC
ekNwd0YsR0FBQSxJQUVBLElBQU0wc0MsSUFBUSxFQUFBKzdDLEVBQUE5L0QsYUFBQTBuRSxFQUFB
L25FLFVBRWQsRUFBQTJuRSxFQUFBbHJELFFBQ0V3TyxFQUFBanJCLFFBQUF0Z0IsY0FBQXluRixF
QUFBdDlDLFVBQVV6RixNQUFPQSxHQUNmNkcsRUFBQWpyQixRQUFBdGdCLGNBQUFtb0YsRUFBQTdu
RSxRQUFBLE9BRUZ2Z0IsU0FBU3VvRixlQUFlLFUxTXc3c0JwQixTQUFTbHdGLEVBQVFELEVBQVNI
LEdBRS9CLFlBWUEsU0FBU21vQixHQUF1QkMsR0FBTyxNQUFPQSxJQUFPQSxFQUFJQyxXQUFhRCxH
QUFRRSxRQUFTRixHQVZ2RnhuQixPQUFPNm5DLGVBQWV0b0MsRUFBUyxjQUM3QmlTLE9BQU8sRzJN
MzhzQlYsSUFBQXEyRSxHQUFBem9GLEVBQUEsSUFDQXV3RixFQUFBdndGLEVBQUEsSzNNaTlzQkt3
d0YsRUFBVXJvRSxFQUF1Qm9vRSxHMk0vOHNCaENFLEdBQWMsRUFBQWhJLEVBQUEvL0Qsa0JBQ2xC
d21FLGlCM01zOXNCRC91RixHQUFRbW9CLFEyTW45c0JNbW9FLEczTXU5c0JULFNBQVNyd0YsRUFB
UUQsRUFBU0gsR0FFL0IsWUFjQSxTQUFTMHdGLEdBQW1CcnBELEdBQU8sR0FBSWp2QixNQUFNd1Is
UUFBUXlkLEdBQU0sQ0FBRSxJQUFLLEdBQUkxbUMsR0FBSSxFQUFHZ3dGLEVBQU92NEUsTUFBTWl2
QixFQUFJemtDLFFBQVNqQyxFQUFJMG1DLEVBQUl6a0MsT0FBUWpDLElBQU9nd0YsRUFBS2h3RixH
QUFLMG1DLEVBQUkxbUMsRUFBTSxPQUFPZ3dGLEdBQWUsTUFBT3Y0RSxPQUFNM1QsS0FBSzRpQyxH
NE0xK3NCNUssUUFBUzZuRCxLQUFvQyxHQUE5Qi8vQyxHQUE4QnhzQyxVQUFBQyxRQUFBLEdBQUFa
LFNBQUFXLFVBQUEsR0FBdEJpL0MsRUFBc0JqL0MsVUFBQSxHQUFSbThDLEVBQVFuOEMsVUFBQSxH
QUFBaXhDLEVBQUEsV0FDMUQsT0FBUWtMLEVBQU83ekMsTUFDYixJQUFBNmhGLEdBQUE5M0MsU0FD
RSxPQUFBNDdDLElBRUl2d0YsR0FBSTh1QyxFQUFNbVAsT0FBTyxTQUFDdXlDLEVBQU9qQyxHQUFS
LE1BQWlCbm5GLE1BQUs0d0QsSUFBSXUyQixFQUFLdnVGLEdBQUl3d0YsUUFBYyxFQUNsRWhDLFdB
QVcsRUFDWHArRSxLQUFNcXVDLEVBQU9ydUMsT0FKakJsUCxPQUFBbXZGLEVBTUt2aEQsSUFHUCxL
QUFBMjlDLEdBQUE3M0MsWUFDRSxPQUFBMjdDLEVBQU96aEQsRUFBTWlsQyxPQUFPLFNBQUF3YSxH
QUFBLE1BQ2xCQSxHQUFLdnVGLEtBQU95K0MsRUFBT3orQyxLQUd2QixLQUFBeXNGLEdBQUE1M0Ms
VUFDRSxPQUFBMDdDLEVBQU96aEQsRUFBTXhyQyxJQUFJLFNBQUFpckYsR0FBQSxNQUNmQSxHQUFL
dnVGLEtBQU95K0MsRUFBT3orQyxHQUFuQjB1QyxLQUNPNi9DLEdBQU1uK0UsS0FBTXF1QyxFQUFP
cnVDLE9BQ3hCbStFLElBR04sS0FBQTlCLEdBQUEzM0MsY0FDRSxPQUFBeTdDLEVBQU96aEQsRUFB
TXhyQyxJQUFJLFNBQUFpckYsR0FBQSxNQUNmQSxHQUFLdnVGLEtBQU95K0MsRUFBT3orQyxHQUFu
QjB1QyxLQUNPNi9DLEdBQU1DLFdBQVlELEVBQUtDLFlBQzVCRCxJQUdOLEtBQUE5QixHQUFBMTND
LGFBQ0UsR0FBTTA3QyxHQUFlM2hELEVBQU1pYyxNQUFNLFNBQUF3akMsR0FBQSxNQUFRQSxHQUFL
QyxXQUM5QyxRQUFBK0IsRUFBT3poRCxFQUFNeHJDLElBQUksU0FBQWlyRixHQUFBLE1BQUE3L0Ms
TUFDWjYvQyxHQUNIQyxXQUFZaUMsTUFHaEIsS0FBQWhFLEdBQUF6M0MsZ0JBQ0UsT0FBQXU3QyxF
QUFPemhELEVBQU1pbEMsT0FBTyxTQUFBd2EsR0FBQSxNQUFRQSxHQUFLQyxhQUFjLElBRWpELFNB
Q0UsT0FBQStCLEVBQU96aEQsTUExQytDLG1DQUFBeUUsR0FBQSxZQUFBbTlDLEVBQUFuOUMsSUFB
QSxNQUFBQSxHQUFBZzlDLEU1TTg5c0IzRGh3RixPQUFPNm5DLGVBQWV0b0MsRUFBUyxjQUM3QmlT
LE9BQU8sR0FHVCxJQUFJMitFLEdBQTRCLGtCQUFYdDZELFNBQW9ELGdCQUFwQkEsUUFBTzZVLFNB
QXdCLFNBQVVsakIsR0FBTyxhQUFjQSxJQUFTLFNBQVVBLEdBQU8sTUFBT0EsSUFBeUIsa0JBQVhx
TyxTQUF5QnJPLEVBQUloYSxjQUFnQnFvQixPQUFTLGVBQWtCck8sSUFFdE8ybUIsRUFBV251QyxP
QUFPd0MsUUFBVSxTQUFVbUIsR0FBVSxJQUFLLEdBQUk1RCxHQUFJLEVBQUdBLEVBQUlnQyxVQUFV
QyxPQUFRakMsSUFBSyxDQUFFLEdBQUk2RCxHQUFTN0IsVUFBVWhDLEVBQUksS0FBSyxHQUFJa0Us
S0FBT0wsR0FBYzVELE9BQU9DLFVBQVVDLGVBQWVQLEtBQUtpRSxFQUFRSyxLQUFRTixFQUFPTSxH
QUFPTCxFQUFPSyxJQUFZLE1BQU9OLEdBRXZQcEUsR0FBUW1vQixRNE10K3NCZTRtRSxDQUp4QixJ
QUFBcEMsR0FBQTlzRixFQUFBLElBRU00aEQsTTVNcWp0QkEsU0FBU3hoRCxFQUFRRCxLQU1qQixT
QUFTQyxFQUFRRCxHNk03anRCdkIsWUFLQSxTQUFBNkMsR0FBQUMsR0FDQSxVQUFBQSxHQUFBakIs
U0FBQWlCLEVBQ0EsU0FBQUMsV0FBQSx3REFHQSxPQUFBdEMsUUFBQXFDLEdBR0EsUUFBQUUsS0FD
QSxJQUNBLElBQUF2QyxPQUFBd0MsT0FDQSxRQU1BLElBQUFDLEdBQUEsR0FBQUMsUUFBQSxNQUVB
LElBREFELEVBQUEsUUFDQSxNQUFBekMsT0FBQTJDLG9CQUFBRixHQUFBLEdBQ0EsUUFLQSxRQURB
RyxNQUNBN0MsRUFBQSxFQUFpQkEsRUFBQSxHQUFRQSxJQUN6QjZDLEVBQUEsSUFBQUYsT0FBQUcs
YUFBQTlDLEtBRUEsSUFBQStDLEdBQUE5QyxPQUFBMkMsb0JBQUFDLEdBQUFHLElBQUEsU0FBQUMs
R0FDQSxNQUFBSixHQUFBSSxJQUVBLG1CQUFBRixFQUFBRyxLQUFBLElBQ0EsUUFJQSxJQUFBQyxL
QUlBLE9BSEEsdUJBQUFDLE1BQUEsSUFBQUMsUUFBQSxTQUFBQyxHQUNBSCxFQUFBRyxPQUdBLHlC
QURBckQsT0FBQXNELEtBQUF0RCxPQUFBd0MsVUFBa0NVLElBQUFELEtBQUEsSUFNaEMsTUFBQWpD
LEdBRUYsVUFuREEsR0FBQWQsR0FBQUYsT0FBQUMsVUFBQUMsZUFDQXVELEVBQUF6RCxPQUFBQyxV
QUFBeUQsb0JBc0RBbEUsR0FBQUQsUUFBQWdELElBQUF2QyxPQUFBd0MsT0FBQSxTQUFBbUIsRUFB
QUMsR0FLQSxPQUpBQyxHQUVBQyxFQURBQyxFQUFBM0IsRUFBQXVCLEdBR0FLLEVBQUEsRUFBZ0JB
LEVBQUFqQyxVQUFBQyxPQUFzQmdDLElBQUEsQ0FDdENILEVBQUE3RCxPQUFBK0IsVUFBQWlDLEdB
RUEsUUFBQUMsS0FBQUosR0FDQTNELEVBQUFQLEtBQUFrRSxFQUFBSSxLQUNBRixFQUFBRSxHQUFB
SixFQUFBSSxHQUlBLElBQUFqRSxPQUFBd0Qsc0JBQUEsQ0FDQU0sRUFBQTlELE9BQUF3RCxzQkFB
QUssRUFDQSxRQUFBOUQsR0FBQSxFQUFrQkEsRUFBQStELEVBQUE5QixPQUFvQmpDLElBQ3RDMEQs
RUFBQTlELEtBQUFrRSxFQUFBQyxFQUFBL0QsTUFDQWdFLEVBQUFELEVBQUEvRCxJQUFBOEQsRUFB
QUMsRUFBQS9ELE1BTUEsTUFBQWdFLEs3TXFrdEJNLFNBQVN2RSxFQUFRRCxFQUFTSCxHOE10cHRC
aEMsWUFpQkEsU0FBQWd4RixHQUFBNStFLEdBQ0EsR0FBQTFSLEdBQUEsR0FBQTIzQyxLQUFBb0Is
SUFHQSxPQUZBLzRDLEdBQUE2M0MsSUFBQSxFQUNBNzNDLEVBQUE4M0MsSUFBQXBtQyxFQUNBMVIs
RUFqQkEsR0FBQTIzQyxHQUFBcjRDLEVBQUEsR0FFQUksR0FBQUQsUUFBQWs0QyxDQUlBLElBQUE0
NEMsR0FBQUQsR0FBQSxHQUNBRSxFQUFBRixHQUFBLEdBQ0FHLEVBQUFILEVBQUEsTUFDQUksRUFB
QUosRUFBQWh2RixRQUNBcXZGLEVBQUFMLEVBQUEsR0FDQU0sRUFBQU4sRUFBQSxHQVFBMzRDLEdB
QUFTLFFBQUEsU0FBQTFtQyxHQUNBLEdBQUFBLFlBQUFpbUMsR0FBQSxNQUFBam1DLEVBRUEsV0FB
QUEsRUFBQSxNQUFBKytFLEVBQ0EsSUFBQW52RixTQUFBb1EsRUFBQSxNQUFBZy9FLEVBQ0EsSUFB
QWgvRSxLQUFBLFFBQUE2K0UsRUFDQSxJQUFBNytFLEtBQUEsUUFBQTgrRSxFQUNBLFFBQUE5K0Us
RUFBQSxNQUFBaS9FLEVBQ0EsU0FBQWovRSxFQUFBLE1BQUFrL0UsRUFFQSxvQkFBQWwvRSxJQUFB
LGtCQUFBQSxHQUNBLElBQ0EsR0FBQTJsQyxHQUFBM2xDLEVBQUEybEMsSUFDQSxzQkFBQUEsR0FD
QSxVQUFBTSxHQUFBTixFQUFBeC9CLEtBQUFuRyxJQUVLLE1BQUE0bEMsR0FDTCxVQUFBSyxHQUFB
LFNBQUFTLEVBQUFDLEdBQ0FBLEVBQUFmLEtBSUEsTUFBQWc1QyxHQUFBNStFLElBR0FpbUMsRUFB
QWs1QyxJQUFBLFNBQUFscUQsR0FDQSxHQUFBcm1DLEdBQUFvWCxNQUFBdlgsVUFBQUksTUFBQVYs
S0FBQThtQyxFQUVBLFdBQUFnUixHQUFBLFNBQUFTLEVBQUFDLEdBR0EsUUFBQWxxQixHQUFBbHVC
LEVBQUFzQyxHQUNBLEdBQUFBLElBQUEsZ0JBQUFBLElBQUEsa0JBQUFBLElBQUEsQ0FDQSxHQUFB
QSxZQUFBbzFDLElBQUFwMUMsRUFBQTgwQyxPQUFBTSxFQUFBeDNDLFVBQUFrM0MsS0FBQSxDQUNB
LFNBQUE5MEMsRUFBQXMxQyxLQUNBdDFDLElBQUF1MUMsR0FFQSxZQUFBdjFDLEVBQUFzMUMsSUFB
QTFwQixFQUFBbHVCLEVBQUFzQyxFQUFBdTFDLE1BQ0EsSUFBQXYxQyxFQUFBczFDLEtBQUFRLEVB
QUE5MUMsRUFBQXUxQyxTQUNBdjFDLEdBQUE4MEMsS0FBQSxTQUFBOTBDLEdBQ0E0ckIsRUFBQWx1
QixFQUFBc0MsSUFDVzgxQyxJQUdYLEdBQUFoQixHQUFBOTBDLEVBQUE4MEMsSUFDQSxzQkFBQUEs
R0FBQSxDQUNBLEdBQUFyM0MsR0FBQSxHQUFBMjNDLEdBQUFOLEVBQUF4L0IsS0FBQXRWLEdBSUEs
WUFIQXZDLEdBQUFxM0MsS0FBQSxTQUFBOTBDLEdBQ0E0ckIsRUFBQWx1QixFQUFBc0MsSUFDYTgx
QyxJQUtiLzNDLEVBQUFMLEdBQUFzQyxFQUNBLE1BQUF1dUYsR0FDQTE0QyxFQUFBOTNDLEdBM0JB
LE9BQUFBLEVBQUE0QixPQUFBLE1BQUFrMkMsTUE4QkEsUUE3QkEwNEMsR0FBQXh3RixFQUFBNEIs
T0E2QkFqQyxFQUFBLEVBQW1CQSxFQUFBSyxFQUFBNEIsT0FBaUJqQyxJQUNwQ2t1QixFQUFBbHVC
LEVBQUFLLEVBQUFMLE9BS0EwM0MsRUFBQVUsT0FBQSxTQUFBM21DLEdBQ0EsVUFBQWltQyxHQUFB
LFNBQUFTLEVBQUFDLEdBQ0FBLEVBQUEzbUMsTUFJQWltQyxFQUFBbzVDLEtBQUEsU0FBQXRwQyxH
QUNBLFVBQUE5UCxHQUFBLFNBQUFTLEVBQUFDLEdBQ0FvUCxFQUFBbmtELFFBQUEsU0FBQW9PLEdB
Q0FpbUMsRUFBQVMsUUFBQTFtQyxHQUFBMmxDLEtBQUFlLEVBQUFDLFFBT0FWLEVBQUF4M0MsVUFB
QSxlQUFBZzRDLEdBQ0EsTUFBQXYzQyxNQUFBeTJDLEtBQUEsS0FBQWMsSzlNOHB0Qk0sU0FBU3o0
QyxFQUFRRCxFQUFTSCxHK012d3RCaEMsWUFZQSxTQUFBMHhGLEtBQ0FydUUsR0FBQSxFQUNBZzFC
LEVBQUFhLElBQUEsS0FDQWIsRUFBQWtCLElBQUEsS0FJQSxRQUFBd3hDLEdBQUF2c0QsR0F3Q0Es
UUFBQW16RCxHQUFBdHhGLElBRUFtK0IsRUFBQW96RCxlQUNBQyxFQUNBQyxFQUFBenhGLEdBQUEw
QixNQUNBeThCLEVBQUF1ekQsV0FBQUMsTUFHQUYsRUFBQXp4RixHQUFBNHhGLGNBQ0F6ekQsRUFB
QW16RCxhQUNBRyxFQUFBenhGLEdBQUE2eEYsUUFBQSxFQUNBMXpELEVBQUFtekQsWUFDQUcsRUFB
QXp4RixHQUFBNHhGLFVBQ0FILEVBQUF6eEYsR0FBQTBCLFNBR0ErdkYsRUFBQXp4RixHQUFBNnhG
LFFBQUEsRUFDQUMsRUFDQUwsRUFBQXp4RixHQUFBNHhGLFVBQ0FILEVBQUF6eEYsR0FBQTBCLFNB
S0EsUUFBQXF3RixHQUFBL3hGLEdBQ0F5eEYsRUFBQXp4RixHQUFBNnhGLFNBQ0ExekQsRUFBQTR6
RCxVQUNBNXpELEVBQUE0ekQsVUFBQU4sRUFBQXp4RixHQUFBNHhGLFVBQUFILEVBQUF6eEYsR0FB
QTBCLE9BQ08rdkYsRUFBQXp4RixHQUFBc3hGLGNBQ1B2bUYsUUFBQWluRixLQUNBLGtDQUFBUCxF
QUFBenhGLEdBQUE0eEYsVUFBQSxNQUVBN21GLFFBQUFpbkYsS0FDQSxnSEFDQVAsRUFBQXp4RixH
QUFBNHhGLFVBQUEsT0F6RUF6ekQsUUFDQW5iLEdBQUFxdUUsSUFDQXJ1RSxHQUFBLENBQ0EsSUFB
QWhqQixHQUFBLEVBQ0E0eEYsRUFBQSxFQUNBSCxJQUNBejVDLEdBQUFhLElBQUEsU0FBQUUsR0FF
QSxJQUFBQSxFQUFBYixLQUNBdTVDLEVBQUExNEMsRUFBQWs1QyxPQUVBUixFQUFBMTRDLEVBQUFr
NUMsS0FBQUosT0FDQUUsRUFBQWg1QyxFQUFBazVDLEtBRUFwOEMsYUFBQTQ3QyxFQUFBMTRDLEVB
QUFrNUMsS0FBQTk3QyxlQUVBczdDLEdBQUExNEMsRUFBQWs1QyxPQUdBajZDLEVBQUFrQixJQUFB
LFNBQUFILEVBQUFqMUMsR0FDQSxJQUFBaTFDLEVBQUFkLE1BQ0FjLEVBQUFrNUMsSUFBQWp5RixJ
QUNBeXhGLEVBQUExNEMsRUFBQWs1QyxNQUNBTCxVQUFBLEtBQ0Fsd0YsTUFBQW9DLEVBQ0FxeUMs
UUFBQVYsV0FDQTY3QyxFQUFBcDVFLEtBQUEsS0FBQTZnQyxFQUFBazVDLEtBS0FULEVBQUExdEYs
RUFBQTZ0RixHQUNBLElBQ0EsS0FFQUUsUUFBQSxLQTZDQSxRQUFBQyxHQUFBOXhGLEVBQUEwQixH
QUNBcUosUUFBQWluRixLQUFBLDZDQUFBaHlGLEVBQUEsS0FDQSxJQUFBa3lGLElBQUF4d0YsTUFB
QWk4QyxPQUFBajhDLElBQUEsRUFDQXd3RixHQUFBeHVGLE1BQUEsTUFBQUMsUUFBQSxTQUFBd3VG
LEdBQ0FwbkYsUUFBQWluRixLQUFBLEtBQUFHLEtBSUEsUUFBQVgsR0FBQTl2RixFQUFBZzJELEdB
Q0EsTUFBQUEsR0FBQTA2QixLQUFBLFNBQUFDLEdBQ0EsTUFBQTN3RixhQUFBMndGLEtBNUdBLEdB
QUFyNkMsR0FBQXI0QyxFQUFBLElBRUFneUYsR0FDQWptRCxlQUNBN29DLFVBQ0F5dkYsWUFHQXR2
RSxHQUFBLENBQ0FsakIsR0FBQXV4RixVQU9BdnhGLEVBQUE0cUYsVS9NMjJ0Qk0sU0FBUzNxRixF
QUFRRCxHZ043M3RCdkJDLEVBQUFELFFBQUEsU0FBQUMsR0FRQSxNQVBBQSxHQUFBd3lGLGtCQUNB
eHlGLEVBQUF5eUYsVUFBQSxhQUNBenlGLEVBQUEweUYsU0FFQTF5RixFQUFBK0YsWUFDQS9GLEVB
QUF3eUYsZ0JBQUEsR0FFQXh5RixJaE5xNHRCTSxTQUFTQSxFQUFRRCxJaU43NHRCdkIsU0FBQXlY
LEdBQ0EsWUFxQkEsU0FBQW03RSxHQUFBM3dGLEdBSUEsR0FIQSxnQkFBQUEsS0FDQUEsRUFBQWtC
LE9BQUFsQixJQUVBLDZCQUFBMFAsS0FBQTFQLEdBQ0EsU0FBQWMsV0FBQSx5Q0FFQSxPQUFBZCxH
QUFBNFAsY0FHQSxRQUFBZ2hGLEdBQUE1Z0YsR0FJQSxNQUhBLGdCQUFBQSxLQUNBQSxFQUFBOU8s
T0FBQThPLElBRUFBLEVBSUEsUUFBQTZnRixHQUFBQyxHQUNBLEdBQUE1bkQsSUFDQWxFLEtBQUEs
V0FDQSxHQUFBaDFCLEdBQUE4Z0YsRUFBQUMsT0FDQSxRQUFnQjFuRCxLQUFBenBDLFNBQUFvUSxZ
QVVoQixPQU5BZ2hGLEdBQUFDLFdBQ0EvbkQsRUFBQTdVLE9BQUE2VSxVQUFBLFdBQ0EsTUFBQUEs
S0FJQUEsRUFHQSxRQUFBZ29ELEdBQUF0OEIsR0FDQTExRCxLQUFBcUMsT0FFQXF6RCxZQUFBczhC
LEdBQ0F0OEIsRUFBQWh6RCxRQUFBLFNBQUFvTyxFQUFBaFEsR0FDQWQsS0FBQWl5RixPQUFBbnhG
LEVBQUFnUSxJQUNPOVEsTUFFRjAxRCxHQUNMcDJELE9BQUEyQyxvQkFBQXl6RCxHQUFBaHpELFFB
QUEsU0FBQTVCLEdBQ0FkLEtBQUFpeUYsT0FBQW54RixFQUFBNDBELEVBQUE1MEQsS0FDT2QsTUFr
RVAsUUFBQWt5RixHQUFBajlELEdBQ0EsTUFBQUEsR0FBQWs5RCxTQUNBcDdDLFFBQUFVLE9BQUEs
R0FBQTcxQyxXQUFBLHNCQUVBcXpCLEVBQUFrOUQsVUFBQSxHQUdBLFFBQUFDLEdBQUFDLEdBQ0Es
VUFBQXQ3QyxTQUFBLFNBQUFTLEVBQUFDLEdBQ0E0NkMsRUFBQUMsT0FBQSxXQUNBOTZDLEVBQUE2
NkMsRUFBQTdyQyxTQUVBNnJDLEVBQUFFLFFBQUEsV0FDQTk2QyxFQUFBNDZDLEVBQUE1eEYsVUFL
QSxRQUFBK3hGLEdBQUFDLEdBQ0EsR0FBQUosR0FBQSxHQUFBSyxXQUVBLE9BREFMLEdBQUFNLGtC
QUFBRixHQUNBTCxFQUFBQyxHQUdBLFFBQUFPLEdBQUFILEdBQ0EsR0FBQUosR0FBQSxHQUFBSyxX
QUVBLE9BREFMLEdBQUFRLFdBQUFKLEdBQ0FMLEVBQUFDLEdBR0EsUUFBQVMsS0FvRkEsTUFuRkE5
eUYsTUFBQW15RixVQUFBLEVBRUFueUYsS0FBQSt5RixVQUFBLFNBQUE5OUQsR0FFQSxHQURBajFC
LEtBQUFnekYsVUFBQS85RCxFQUNBLGdCQUFBQSxHQUNBajFCLEtBQUFpekYsVUFBQWgrRCxNQUNP
LElBQUE2OEQsRUFBQVcsTUFBQVMsS0FBQTN6RixVQUFBNHpGLGNBQUFsK0QsR0FDUGoxQixLQUFB
b3pGLFVBQUFuK0QsTUFDTyxJQUFBNjhELEVBQUF1QixVQUFBQyxTQUFBL3pGLFVBQUE0ekYsY0FB
QWwrRCxHQUNQajFCLEtBQUF1ekYsY0FBQXQrRCxNQUNPLElBQUE2OEQsRUFBQTBCLGNBQUFDLGdC
QUFBbDBGLFVBQUE0ekYsY0FBQWwrRCxHQUNQajFCLEtBQUFpekYsVUFBQWgrRCxFQUFBNXVCLGVB
Q08sSUFBQTR1QixHQUVBLElBQUE2OEQsRUFBQTRCLGNBQUFDLFlBQUFwMEYsVUFBQTR6RixjQUFB
bCtELEdBSVAsU0FBQXQwQixPQUFBLGlDQUxBWCxNQUFBaXpGLFVBQUEsRUFRQWp6RixNQUFBMDFE
LFFBQUEzNUMsSUFBQSxrQkFDQSxnQkFBQWtaLEdBQ0FqMUIsS0FBQTAxRCxRQUFBejVDLElBQUEs
MkNBQ1NqYyxLQUFBb3pGLFdBQUFwekYsS0FBQW96RixVQUFBenBGLEtBQ1QzSixLQUFBMDFELFFB
QUF6NUMsSUFBQSxlQUFBamMsS0FBQW96RixVQUFBenBGLE1BQ1Ntb0YsRUFBQTBCLGNBQUFDLGdC
QUFBbDBGLFVBQUE0ekYsY0FBQWwrRCxJQUNUajFCLEtBQUEwMUQsUUFBQXo1QyxJQUFBLG9FQUtB
NjFFLEVBQUFXLE1BQ0F6eUYsS0FBQXl5RixLQUFBLFdBQ0EsR0FBQW1CLEdBQUExQixFQUFBbHlG
LEtBQ0EsSUFBQTR6RixFQUNBLE1BQUFBLEVBR0EsSUFBQTV6RixLQUFBb3pGLFVBQ0EsTUFBQXI4
QyxTQUFBUyxRQUFBeDNDLEtBQUFvekYsVUFDUyxJQUFBcHpGLEtBQUF1ekYsY0FDVCxTQUFBNXlG
LE9BQUEsdUNBRUEsT0FBQW8yQyxTQUFBUyxRQUFBLEdBQUEwN0MsT0FBQWx6RixLQUFBaXpGLGNB
SUFqekYsS0FBQTB6RixZQUFBLFdBQ0EsTUFBQTF6RixNQUFBeXlGLE9BQUFoOEMsS0FBQSs3QyxJ
QUdBeHlGLEtBQUFtUCxLQUFBLFdBQ0EsR0FBQXlrRixHQUFBMUIsRUFBQWx5RixLQUNBLElBQUE0
ekYsRUFDQSxNQUFBQSxFQUdBLElBQUE1ekYsS0FBQW96RixVQUNBLE1BQUFSLEdBQUE1eUYsS0FB
QW96RixVQUNTLElBQUFwekYsS0FBQXV6RixjQUNULFNBQUE1eUYsT0FBQSx1Q0FFQSxPQUFBbzJD
LFNBQUFTLFFBQUF4M0MsS0FBQWl6RixhQUlBanpGLEtBQUFtUCxLQUFBLFdBQ0EsR0FBQXlrRixH
QUFBMUIsRUFBQWx5RixLQUNBLE9BQUE0ekYsS0FBQTc4QyxRQUFBUyxRQUFBeDNDLEtBQUFpekYs
WUFJQW5CLEVBQUF1QixXQUNBcnpGLEtBQUFxekYsU0FBQSxXQUNBLE1BQUFyekYsTUFBQW1QLE9B
QUFzbkMsS0FBQW85QyxLQUlBN3pGLEtBQUE4ekYsS0FBQSxXQUNBLE1BQUE5ekYsTUFBQW1QLE9B
QUFzbkMsS0FBQXBKLEtBQUEwbUQsUUFHQS96RixLQU1BLFFBQUFnMEYsR0FBQW5vRixHQUNBLEdB
QUFvb0YsR0FBQXBvRixFQUFBMnBCLGFBQ0EsT0FBQTArRCxHQUFBdm9FLFFBQUFzb0UsUUFBQXBv
RixFQUdBLFFBQUFzb0YsR0FBQWwwRCxFQUFBL0MsR0FDQUEsT0FDQSxJQUFBakksR0FBQWlJLEVB
QUFqSSxJQUNBLElBQUFrL0QsRUFBQTUwRixVQUFBNHpGLGNBQUFsekQsR0FBQSxDQUNBLEdBQUFB
LEVBQUFreUQsU0FDQSxTQUFBdndGLFdBQUEsZUFFQTVCLE1BQUFpcEMsSUFBQWhKLEVBQUFnSixJ
QUNBanBDLEtBQUFvMEYsWUFBQW4wRCxFQUFBbTBELFlBQ0FsM0QsRUFBQXc0QixVQUNBMTFELEtB
QUEwMUQsUUFBQSxHQUFBczhCLEdBQUEveEQsRUFBQXkxQixVQUVBMTFELEtBQUE2TCxPQUFBbzBC
LEVBQUFwMEIsT0FDQTdMLEtBQUFnMkUsS0FBQS8xQyxFQUFBKzFDLEtBQ0EvZ0QsSUFDQUEsRUFB
QWdMLEVBQUEreUQsVUFDQS95RCxFQUFBa3lELFVBQUEsT0FHQW55RixNQUFBaXBDLElBQUFoSixD
QVdBLElBUkFqZ0MsS0FBQW8wRixZQUFBbDNELEVBQUFrM0QsYUFBQXAwRixLQUFBbzBGLGFBQUEs
UUFDQWwzRCxFQUFBdzRCLFNBQUExMUQsS0FBQTAxRCxVQUNBMTFELEtBQUEwMUQsUUFBQSxHQUFB
czhCLEdBQUE5MEQsRUFBQXc0QixVQUVBMTFELEtBQUE2TCxPQUFBbW9GLEVBQUE5MkQsRUFBQXJ4
QixRQUFBN0wsS0FBQTZMLFFBQUEsT0FDQTdMLEtBQUFnMkUsS0FBQTk0QyxFQUFBODRDLE1BQUFo
MkUsS0FBQWcyRSxNQUFBLEtBQ0FoMkUsS0FBQXEwRixTQUFBLE1BRUEsUUFBQXIwRixLQUFBNkws
UUFBQSxTQUFBN0wsS0FBQTZMLFNBQUFvcEIsRUFDQSxTQUFBcnpCLFdBQUEsNENBRUE1QixNQUFB
K3lGLFVBQUE5OUQsR0FPQSxRQUFBNCtELEdBQUE1K0QsR0FDQSxHQUFBa2dDLEdBQUEsR0FBQW0r
QixTQVNBLE9BUkFyK0QsR0FBQTBkLE9BQUFsd0MsTUFBQSxLQUFBQyxRQUFBLFNBQUE0eEYsR0FD
QSxHQUFBQSxFQUFBLENBQ0EsR0FBQTd4RixHQUFBNnhGLEVBQUE3eEYsTUFBQSxLQUNBM0IsRUFB
QTJCLEVBQUFvdkYsUUFBQWh4RixRQUFBLFdBQ0FpUSxFQUFBck8sRUFBQUYsS0FBQSxLQUFBMUIs
UUFBQSxVQUNBczBELEdBQUE4OEIsT0FBQXNDLG1CQUFBenpGLEdBQUF5ekYsbUJBQUF6akYsT0FH
QXFrRCxFQUdBLFFBQUFPLEdBQUE4K0IsR0FDQSxHQUFBQyxHQUFBLEdBQUF6QyxHQUNBNXhDLEdB
QUFvMEMsRUFBQUUseUJBQUEsSUFBQS9oRCxPQUFBbHdDLE1BQUEsS0FPQSxPQU5BMjlDLEdBQUEx
OUMsUUFBQSxTQUFBaXlGLEdBQ0EsR0FBQWx5RixHQUFBa3lGLEVBQUFoaUQsT0FBQWx3QyxNQUFB
LEtBQ0FjLEVBQUFkLEVBQUFvdkYsUUFBQWwvQyxPQUNBN2hDLEVBQUFyTyxFQUFBRixLQUFBLEtB
QUFvd0MsTUFDQThoRCxHQUFBeEMsT0FBQTF1RixFQUFBdU4sS0FFQTJqRixFQUtBLFFBQUFHLEdB
QUFDLEVBQUEzM0QsR0FDQUEsSUFDQUEsTUFHQWw5QixLQUFBMkosS0FBQSxVQUNBM0osS0FBQTgw
RixPQUFBNTNELEVBQUE0M0QsT0FDQTkwRixLQUFBKzBGLEdBQUEvMEYsS0FBQTgwRixRQUFBLEtB
QUE5MEYsS0FBQTgwRixPQUFBLElBQ0E5MEYsS0FBQWcxRixXQUFBOTNELEVBQUE4M0QsV0FDQWgx
RixLQUFBMDFELFFBQUF4NEIsRUFBQXc0QixrQkFBQXM4QixHQUFBOTBELEVBQUF3NEIsUUFBQSxH
QUFBczhCLEdBQUE5MEQsRUFBQXc0QixTQUNBMTFELEtBQUFpcEMsSUFBQS9MLEVBQUErTCxLQUFB
LEdBQ0FqcEMsS0FBQSt5RixVQUFBOEIsR0E5VUEsSUFBQXYrRSxFQUFBMitFLE1BQUEsQ0FJQSxH
QUFBbkQsSUFDQTBCLGFBQUEsbUJBQUFsOUUsR0FDQXk3RSxTQUFBLFVBQUF6N0UsSUFBQSxZQUFB
NmUsUUFDQXM5RCxLQUFBLGNBQUFuOEUsSUFBQSxRQUFBQSxJQUFBLFdBQ0EsSUFFQSxNQURBLElB
QUE0OEUsT0FDQSxFQUNPLE1BQUE1eUYsR0FDUCxhQUdBK3lGLFNBQUEsWUFBQS84RSxHQUNBbzlF
LFlBQUEsZUFBQXA5RSxHQXFEQTA3RSxHQUFBenlGLFVBQUEweUYsT0FBQSxTQUFBbnhGLEVBQUFn
USxHQUNBaFEsRUFBQTJ3RixFQUFBM3dGLEdBQ0FnUSxFQUFBNGdGLEVBQUE1Z0YsRUFDQSxJQUFB
MmxELEdBQUF6MkQsS0FBQXFDLElBQUF2QixFQUNBMjFELEtBQ0FBLEtBQ0F6MkQsS0FBQXFDLElB
QUF2QixHQUFBMjFELEdBRUFBLEVBQUFoeEQsS0FBQXFMLElBR0FraEYsRUFBQXp5RixVQUFBLGdC
QUFBdUIsU0FDQWQsTUFBQXFDLElBQUFvdkYsRUFBQTN3RixLQUdBa3hGLEVBQUF6eUYsVUFBQXdj
LElBQUEsU0FBQWpiLEdBQ0EsR0FBQStsRCxHQUFBN21ELEtBQUFxQyxJQUFBb3ZGLEVBQUEzd0Ys
R0FDQSxPQUFBK2xELEtBQUEsU0FHQW1yQyxFQUFBenlGLFVBQUEyMUYsT0FBQSxTQUFBcDBGLEdB
Q0EsTUFBQWQsTUFBQXFDLElBQUFvdkYsRUFBQTN3RixTQUdBa3hGLEVBQUF6eUYsVUFBQXljLElB
QUEsU0FBQWxiLEdBQ0EsTUFBQWQsTUFBQXFDLElBQUE3QyxlQUFBaXlGLEVBQUEzd0YsS0FHQWt4
RixFQUFBenlGLFVBQUEwYyxJQUFBLFNBQUFuYixFQUFBZ1EsR0FDQTlRLEtBQUFxQyxJQUFBb3ZG
LEVBQUEzd0YsS0FBQTR3RixFQUFBNWdGLEtBR0FraEYsRUFBQXp5RixVQUFBbUQsUUFBQSxTQUFB
K0YsRUFBQTBzRixHQUNBNzFGLE9BQUEyQyxvQkFBQWpDLEtBQUFxQyxLQUFBSyxRQUFBLFNBQUE1
QixHQUNBZCxLQUFBcUMsSUFBQXZCLEdBQUE0QixRQUFBLFNBQUFvTyxHQUNBckksRUFBQXhKLEtB
QUFrMkYsRUFBQXJrRixFQUFBaFEsRUFBQWQsT0FDT0EsT0FDRkEsT0FHTGd5RixFQUFBenlGLFVB
QUFxRCxLQUFBLFdBQ0EsR0FBQWd2RixLQUVBLE9BREE1eEYsTUFBQTBDLFFBQUEsU0FBQW9PLEVB
QUFoUSxHQUF3Qzh3RixFQUFBbnNGLEtBQUEzRSxLQUN4QzZ3RixFQUFBQyxJQUdBSSxFQUFBenlG
LFVBQUFzbkQsT0FBQSxXQUNBLEdBQUErcUMsS0FFQSxPQURBNXhGLE1BQUEwQyxRQUFBLFNBQUFv
TyxHQUFrQzhnRixFQUFBbnNGLEtBQUFxTCxLQUNsQzZnRixFQUFBQyxJQUdBSSxFQUFBenlGLFVB
QUEwcUMsUUFBQSxXQUNBLEdBQUEybkQsS0FFQSxPQURBNXhGLE1BQUEwQyxRQUFBLFNBQUFvTyxF
QUFBaFEsR0FBd0M4d0YsRUFBQW5zRixNQUFBM0UsRUFBQWdRLE1BQ3hDNmdGLEVBQUFDLElBR0FF
LEVBQUFDLFdBQ0FDLEVBQUF6eUYsVUFBQTQxQixPQUFBNlUsVUFBQWdvRCxFQUFBenlGLFVBQUEw
cUMsUUF5SEEsSUFBQWlxRCxJQUFBLDZDQTJDQUMsR0FBQTUwRixVQUFBNjFGLE1BQUEsV0FDQSxV
QUFBakIsR0FBQW4wRixPQTRCQTh5RixFQUFBN3pGLEtBQUFrMUYsRUFBQTUwRixXQWdCQXV6RixF
QUFBN3pGLEtBQUEyMUYsRUFBQXIxRixXQUVBcTFGLEVBQUFyMUYsVUFBQTYxRixNQUFBLFdBQ0Es
VUFBQVIsR0FBQTUwRixLQUFBZ3pGLFdBQ0E4QixPQUFBOTBGLEtBQUE4MEYsT0FDQUUsV0FBQWgx
RixLQUFBZzFGLFdBQ0F0L0IsUUFBQSxHQUFBczhCLEdBQUFoeUYsS0FBQTAxRCxTQUNBenNCLElB
QUFqcEMsS0FBQWlwQyxPQUlBMnJELEVBQUFuMEYsTUFBQSxXQUNBLEdBQUE0MEYsR0FBQSxHQUFB
VCxHQUFBLE1BQXVDRSxPQUFBLEVBQUFFLFdBQUEsSUFFdkMsT0FEQUssR0FBQTFyRixLQUFBLFFB
Q0EwckYsRUFHQSxJQUFBQyxJQUFBLG9CQUVBVixHQUFBVyxTQUFBLFNBQUF0c0QsRUFBQTZyRCxH
QUNBLEdBQUFRLEVBQUEzcEUsUUFBQW1wRSxRQUNBLFNBQUF6RCxZQUFBLHNCQUdBLFdBQUF1RCxH
QUFBLE1BQStCRSxTQUFBcC9CLFNBQTBCNU8sU0FBQTdkLE1BR3pEM3lCLEVBQUEwN0UsVUFDQTE3
RSxFQUFBNjlFLFVBQ0E3OUUsRUFBQXMrRSxXQUVBdCtFLEVBQUEyK0UsTUFBQSxTQUFBaDFELEVB
QUF1MUQsR0FDQSxVQUFBeitDLFNBQUEsU0FBQVMsRUFBQUMsR0FVQSxRQUFBZytDLEtBQ0EscUJB
QUFqQixHQUNBQSxFQUFBaUIsWUFJQSxtQkFBQWpsRixLQUFBZ2tGLEVBQUFFLHlCQUNBRixFQUFB
a0Isa0JBQUEsaUJBREEsT0FmQSxHQUFBQyxFQUVBQSxHQURBeEIsRUFBQTUwRixVQUFBNHpGLGNB
QUFsekQsS0FBQXUxRCxFQUNBdjFELEVBRUEsR0FBQWswRCxHQUFBbDBELEVBQUF1MUQsRUFHQSxJ
QUFBaEIsR0FBQSxHQUFBb0IsZUFlQXBCLEdBQUFsQyxPQUFBLFdBQ0EsR0FBQXAxRCxJQUNBNDNE
LE9BQUFOLEVBQUFNLE9BQ0FFLFdBQUFSLEVBQUFRLFdBQ0F0L0IsVUFBQTgrQixHQUNBdnJELElB
QUF3c0QsS0FFQXhnRSxFQUFBLFlBQUF1L0QsS0FBQWEsU0FBQWIsRUFBQXFCLFlBQ0FyK0MsR0FB
QSxHQUFBbzlDLEdBQUEzL0QsRUFBQWlJLEtBR0FzM0QsRUFBQWpDLFFBQUEsV0FDQTk2QyxFQUFB
LEdBQUE3MUMsV0FBQSw0QkFHQTR5RixFQUFBc0IsVUFBQSxXQUNBcitDLEVBQUEsR0FBQTcxQyxX
QUFBLDRCQUdBNHlGLEVBQUFqOUIsS0FBQW8rQixFQUFBOXBGLE9BQUE4cEYsRUFBQTFzRCxLQUFB
LEdBRUEsWUFBQTBzRCxFQUFBdkIsY0FDQUksRUFBQXVCLGlCQUFBLEdBR0EsZ0JBQUF2QixJQUFB
MUMsRUFBQVcsT0FDQStCLEVBQUF3QixhQUFBLFFBR0FMLEVBQUFqZ0MsUUFBQWh6RCxRQUFBLFNB
QUFvTyxFQUFBaFEsR0FDQTB6RixFQUFBeUIsaUJBQUFuMUYsRUFBQWdRLEtBR0EwakYsRUFBQTBC
LEtBQUEsbUJBQUFQLEdBQUEzQyxVQUFBLEtBQUEyQyxFQUFBM0MsY0FHQTE4RSxFQUFBMitFLE1B
QUFrQixVQUFBLElBQ0MsbUJBQUE3L0UsV0FBQXRXLE9qTm81dEJELElBRUMsSUFBSyxJQUVBLFNB
QVNsQixFQUFRRCxFQUFTSCxHa045enVCaEMsWUFZQSxTQUFBMDNGLEdBQUFqbkYsR0FDQSxVQUFB
QSxHQUFBdE8sUUFBQXcxRixFQUFBLE9BV0EsUUFBQUMsR0FBQUMsRUFBQUMsR0FDQXgyRixLQUFB
a3dCLEtBQUFxbUUsRUFDQXYyRixLQUFBMEssUUFBQThyRixFQUNBeDJGLEtBQUFxVixNQUFBLEVB
U0EsUUFBQW9oRixHQUFBbnFCLEVBQUF2cUMsRUFBQWpoQyxHQUNBLEdBQUFvdkIsR0FBQW84QyxF
QUFBcDhDLEtBQ0F4bEIsRUFBQTRoRSxFQUFBNWhFLE9BRUF3bEIsR0FBQWp4QixLQUFBeUwsRUFB
QXEzQixFQUFBdXFDLEVBQUFqM0QsU0FlQSxRQUFBcWhGLEdBQUE3eEYsRUFBQTh4RixFQUFBSCxH
QUNBLFNBQUEzeEYsRUFDQSxNQUFBQSxFQUVBLElBQUEwa0MsR0FBQStzRCxFQUFBaHVGLFVBQUFx
dUYsRUFBQUgsRUFDQWpzRCxHQUFBMWxDLEVBQUE0eEYsRUFBQWx0RCxHQUNBK3NELEVBQUEzcUYs
UUFBQTQ5QixHQVlBLFFBQUFxdEQsR0FBQUMsRUFBQUMsRUFBQUMsRUFBQUMsR0FDQWgzRixLQUFB
d21ELE9BQUFxd0MsRUFDQTcyRixLQUFBODJGLFlBQ0E5MkYsS0FBQWt3QixLQUFBNm1FLEVBQ0Ev
MkYsS0FBQTBLLFFBQUFzc0YsRUFDQWgzRixLQUFBcVYsTUFBQSxFQVdBLFFBQUE0aEYsR0FBQTNx
QixFQUFBdnFDLEVBQUFtMUQsR0FDQSxHQUFBMXdDLEdBQUE4bEIsRUFBQTlsQixPQUNBc3dDLEVB
QUF4cUIsRUFBQXdxQixVQUNBNW1FLEVBQUFvOEMsRUFBQXA4QyxLQUNBeGxCLEVBQUE0aEUsRUFB
QTVoRSxRQUdBeXNGLEVBQUFqbkUsRUFBQWp4QixLQUFBeUwsRUFBQXEzQixFQUFBdXFDLEVBQUFq
M0QsUUFDQXlCLE9BQUF3UixRQUFBNnVFLEdBQ0FDLEVBQUFELEVBQUEzd0MsRUFBQTB3QyxFQUFB
bDJGLEVBQUEyRyxxQkFDRyxNQUFBd3ZGLElBQ0gxaUYsRUFBQWlCLGVBQUF5aEYsS0FDQUEsRUFB
QTFpRixFQUFBeUMsbUJBQUFpZ0YsRUFHQUwsSUFBQUssRUFBQTV6RixLQUFBdytCLEtBQUF4K0Is
TUFBQTR6RixFQUFBNXpGLElBQUEsR0FBQTZ5RixFQUFBZSxFQUFBNXpGLEtBQUEsS0FBQTJ6RixJ
QUVBMXdDLEVBQUEvZ0QsS0FBQTB4RixJQUlBLFFBQUFDLEdBQUF2eUYsRUFBQXV3QyxFQUFBOWYs
RUFBQXBGLEVBQUF4bEIsR0FDQSxHQUFBMnNGLEdBQUEsRUFDQSxPQUFBL2hFLElBQ0EraEUsRUFB
QWpCLEVBQUE5Z0UsR0FBQSxJQUVBLElBQUFpVSxHQUFBcXRELEVBQUF0dUYsVUFBQThzQyxFQUFB
aWlELEVBQUFubkUsRUFBQXhsQixFQUNBNi9CLEdBQUExbEMsRUFBQW95RixFQUFBMXRELEdBQ0Fx
dEQsRUFBQWpyRixRQUFBNDlCLEdBZ0JBLFFBQUErdEQsR0FBQXp5RixFQUFBcXJCLEVBQUF4bEIs
R0FDQSxTQUFBN0YsRUFDQSxNQUFBQSxFQUVBLElBQUEyaEQsS0FFQSxPQURBNHdDLEdBQUF2eUYs
RUFBQTJoRCxFQUFBLEtBQUF0MkIsRUFBQXhsQixHQUNBODdDLEVBR0EsUUFBQSt3QyxHQUFBaHVE
LEVBQUF4SCxFQUFBamhDLEdBQ0EsWUFZQSxRQUFBMDJGLEdBQUEzeUYsRUFBQTZGLEdBQ0EsTUFB
QTYvQixHQUFBMWxDLEVBQUEweUYsRUFBQSxNQVNBLFFBQUFqaUYsR0FBQXpRLEdBQ0EsR0FBQTJo
RCxLQUVBLE9BREE0d0MsR0FBQXZ5RixFQUFBMmhELEVBQUEsS0FBQXhsRCxFQUFBMkcscUJBQ0E2
K0MsRUF0S0EsR0FBQTE3QyxHQUFBcE0sRUFBQSxLQUNBK1YsRUFBQS9WLEVBQUEsSUFFQXNDLEVB
QUF0QyxFQUFBLEdBQ0E2ckMsRUFBQTdyQyxFQUFBLEtBRUFndUUsRUFBQTVoRSxFQUFBNGhFLGtC
QUNBaCtELEVBQUE1RCxFQUFBNEQsbUJBRUEybkYsRUFBQSxNQWtCQUMsR0FBQS8yRixVQUFBbU0s
V0FBQSxXQUNBMUwsS0FBQWt3QixLQUFBLEtBQ0Fsd0IsS0FBQTBLLFFBQUEsS0FDQTFLLEtBQUFx
VixNQUFBLEdBRUF2SyxFQUFBaUIsYUFBQXVxRixFQUFBNXBCLEdBOENBa3FCLEVBQUFyM0YsVUFB
QW1NLFdBQUEsV0FDQTFMLEtBQUF3bUQsT0FBQSxLQUNBeG1ELEtBQUE4MkYsVUFBQSxLQUNBOTJG
LEtBQUFrd0IsS0FBQSxLQUNBbHdCLEtBQUEwSyxRQUFBLEtBQ0ExSyxLQUFBcVYsTUFBQSxHQUVB
dkssRUFBQWlCLGFBQUE2cUYsRUFBQWxvRixFQW9GQSxJQUFBNkYsSUFDQTdSLFFBQUFnMEYsRUFD
QXIwRixJQUFBaTFGLEVBQ0FGLCtCQUNBL2hGLE1BQUFtaUYsRUFDQWxpRixVQUdBeFcsR0FBQUQs
UUFBQTBWLEdsTjgwdUJNLFNBQVN6VixFQUFRRCxFQUFTSCxHbU5qZ3ZCaEMsWUFFQSxJQUFBK1Ys
R0FBQS9WLEVBQUEsSUFPQSs0RixFQUFBaGpGLEVBQUFLLGNBV0FOLEdBQ0EzVSxFQUFBNDNGLEVB
QUEsS0FDQUMsS0FBQUQsRUFBQSxRQUNBRSxRQUFBRixFQUFBLFdBQ0FuMEMsS0FBQW0wQyxFQUFB
LFFBQ0FHLFFBQUFILEVBQUEsV0FDQUksTUFBQUosRUFBQSxTQUNBSyxNQUFBTCxFQUFBLFNBQ0Ez
M0YsRUFBQTIzRixFQUFBLEtBQ0FqMUIsS0FBQWkxQixFQUFBLFFBQ0FNLElBQUFOLEVBQUEsT0FD
QU8sSUFBQVAsRUFBQSxPQUNBUSxJQUFBUixFQUFBLE9BQ0FTLFdBQUFULEVBQUEsY0FDQXhpRSxL
QUFBd2lFLEVBQUEsUUFDQWgxQixHQUFBZzFCLEVBQUEsTUFDQTF6RSxPQUFBMHpFLEVBQUEsVUFD
QVUsT0FBQVYsRUFBQSxVQUNBNXpDLFFBQUE0ekMsRUFBQSxXQUNBbmpDLEtBQUFtakMsRUFBQSxR
QUNBdDJGLEtBQUFzMkYsRUFBQSxRQUNBbDBDLElBQUFrMEMsRUFBQSxPQUNBM3pDLFNBQUEyekMs
RUFBQSxZQUNBL3dFLEtBQUErd0UsRUFBQSxRQUNBVyxTQUFBWCxFQUFBLFlBQ0FZLEdBQUFaLEVB
QUEsTUFDQWEsSUFBQWIsRUFBQSxPQUNBYyxRQUFBZCxFQUFBLFdBQ0FlLElBQUFmLEVBQUEsT0FD
QWdCLE9BQUFoQixFQUFBLFVBQ0E3ekIsSUFBQTZ6QixFQUFBLE9BQ0FpQixHQUFBakIsRUFBQSxN
QUNBa0IsR0FBQWxCLEVBQUEsTUFDQW1CLEdBQUFuQixFQUFBLE1BQ0EvMEIsTUFBQSswQixFQUFB
LFNBQ0FvQixTQUFBcEIsRUFBQSxZQUNBcUIsV0FBQXJCLEVBQUEsY0FDQXNCLE9BQUF0QixFQUFB
LFVBQ0F1QixPQUFBdkIsRUFBQSxVQUNBdGlDLEtBQUFzaUMsRUFBQSxRQUNBd0IsR0FBQXhCLEVB
QUEsTUFDQXlCLEdBQUF6QixFQUFBLE1BQ0EwQixHQUFBMUIsRUFBQSxNQUNBMkIsR0FBQTNCLEVB
QUEsTUFDQTRCLEdBQUE1QixFQUFBLE1BQ0E2QixHQUFBN0IsRUFBQSxNQUNBaEQsS0FBQWdELEVB
QUEsUUFDQTlDLE9BQUE4QyxFQUFBLFVBQ0E4QixPQUFBOUIsRUFBQSxVQUNBOTBCLEdBQUE4MEIs
RUFBQSxNQUNBeG9GLEtBQUF3b0YsRUFBQSxRQUNBcDRGLEVBQUFvNEYsRUFBQSxLQUNBK0IsT0FB
QS9CLEVBQUEsVUFDQTcwQixJQUFBNjBCLEVBQUEsT0FDQXgzRCxNQUFBdzNELEVBQUEsU0FDQWdD
LElBQUFoQyxFQUFBLE9BQ0FpQyxJQUFBakMsRUFBQSxPQUNBNTBCLE9BQUE0MEIsRUFBQSxVQUNB
bGhDLE1BQUFraEMsRUFBQSxTQUNBajBDLE9BQUFpMEMsRUFBQSxVQUNBa0MsR0FBQWxDLEVBQUEs
TUFDQTMwQixLQUFBMjBCLEVBQUEsUUFDQW1DLEtBQUFuQyxFQUFBLFFBQ0FwMUYsSUFBQW8xRixF
QUFBLE9BQ0FvQyxLQUFBcEMsRUFBQSxRQUNBcUMsS0FBQXJDLEVBQUEsUUFDQXAwQixTQUFBbzBC
LEVBQUEsWUFDQTEwQixLQUFBMDBCLEVBQUEsUUFDQXNDLE1BQUF0QyxFQUFBLFNBQ0F1QyxJQUFB
dkMsRUFBQSxPQUNBd0MsU0FBQXhDLEVBQUEsWUFDQWpnRixPQUFBaWdGLEVBQUEsVUFDQXlDLEdB
QUF6QyxFQUFBLE1BQ0E5ekMsU0FBQTh6QyxFQUFBLFlBQ0E3ekMsT0FBQTZ6QyxFQUFBLFVBQ0Ew
QyxPQUFBMUMsRUFBQSxVQUNBcjRGLEVBQUFxNEYsRUFBQSxLQUNBaDBDLE1BQUFnMEMsRUFBQSxT
QUNBMkMsUUFBQTNDLEVBQUEsV0FDQXQwQixJQUFBczBCLEVBQUEsT0FDQTRDLFNBQUE1QyxFQUFB
LFlBQ0E2QyxFQUFBN0MsRUFBQSxLQUNBOEMsR0FBQTlDLEVBQUEsTUFDQStDLEdBQUEvQyxFQUFB
LE1BQ0FnRCxLQUFBaEQsRUFBQSxRQUNBbjBGLEVBQUFtMEYsRUFBQSxLQUNBaUQsS0FBQWpELEVB
QUEsUUFDQWtELE9BQUFsRCxFQUFBLFVBQ0FtRCxRQUFBbkQsRUFBQSxXQUNBeDJELE9BQUF3MkQs
RUFBQSxVQUNBb0QsTUFBQXBELEVBQUEsU0FDQXYwRixPQUFBdTBGLEVBQUEsVUFDQTcrQixLQUFB
NitCLEVBQUEsUUFDQXFELE9BQUFyRCxFQUFBLFVBQ0E5bkMsTUFBQThuQyxFQUFBLFNBQ0FzRCxJ
QUFBdEQsRUFBQSxPQUNBditCLFFBQUF1K0IsRUFBQSxXQUNBdUQsSUFBQXZELEVBQUEsT0FDQXdE
LE1BQUF4RCxFQUFBLFNBQ0ExekMsTUFBQTB6QyxFQUFBLFNBQ0F2ekMsR0FBQXV6QyxFQUFBLE1B
Q0FyMEIsU0FBQXEwQixFQUFBLFlBQ0F6ekMsTUFBQXl6QyxFQUFBLFNBQ0F0ekMsR0FBQXN6QyxF
QUFBLE1BQ0F4ekMsTUFBQXd6QyxFQUFBLFNBQ0ExdEYsS0FBQTB0RixFQUFBLFFBQ0FsaUQsTUFB
QWtpRCxFQUFBLFNBQ0EvekMsR0FBQSt6QyxFQUFBLE1BQ0Ezd0QsTUFBQTJ3RCxFQUFBLFNBQ0F5
RCxFQUFBekQsRUFBQSxLQUNBMEQsR0FBQTFELEVBQUEsTUFDQTJELElBQUEzRCxFQUFBLE9BQ0E0
RCxNQUFBNUQsRUFBQSxTQUNBejBCLElBQUF5MEIsRUFBQSxPQUdBNkQsT0FBQTdELEVBQUEsVUFD
QXhtQixTQUFBd21CLEVBQUEsWUFDQThELEtBQUE5RCxFQUFBLFFBQ0ErRCxRQUFBL0QsRUFBQSxX
QUNBZ0UsRUFBQWhFLEVBQUEsS0FDQTluRSxNQUFBOG5FLEVBQUEsU0FDQXZHLEtBQUF1RyxFQUFB
LFFBQ0FpRSxlQUFBakUsRUFBQSxrQkFDQTdoQixLQUFBNmhCLEVBQUEsUUFDQTNzQixLQUFBMnNC
LEVBQUEsUUFDQWhnQyxRQUFBZ2dDLEVBQUEsV0FDQWtFLFFBQUFsRSxFQUFBLFdBQ0FtRSxTQUFB
bkUsRUFBQSxZQUNBb0UsZUFBQXBFLEVBQUEsa0JBQ0FxRSxLQUFBckUsRUFBQSxRQUNBc0UsS0FB
QXRFLEVBQUEsUUFDQXB4RSxJQUFBb3hFLEVBQUEsT0FDQXRvRixLQUFBc29GLEVBQUEsUUFDQXVF
LE1BQUF2RSxFQUFBLFNBR0EzNEYsR0FBQUQsUUFBQTJWLEduTmlodkJNLFNBQVMxVixFQUFRRCxF
QUFTSCxHb045cXZCaEMsWUFFQSxJQUFBdTlGLEdBQUF2OUYsRUFBQSxJQUNBZ1gsRUFBQXVtRixF
QUFBdm1GLGVBRUFzQixFQUFBdFksRUFBQSxHQUVBSSxHQUFBRCxRQUFBbVksRUFBQXRCLElwTjhy
dkJBLElBRU0sU0FBUzVXLEVBQVFELEVBQVNILEdxTnZzdkJoQyxZQUVBLElBQUF1OUYsR0FBQXY5
RixFQUFBLElBQ0E4VyxFQUFBeW1GLEVBQUF6bUYsVUFFQTBtRixFQUFBeDlGLEVBQUEsSUFDQWdY
LEVBQUF3bUYsRUFBQXhtRixlQUVBNmlDLEVBQUE3NUMsRUFBQSxJQUNBc1ksRUFBQXRZLEVBQUEs
R0FFQUksR0FBQUQsUUFBQW1ZLEVBQUF4QixFQUFBRSxFQUFBNmlDLElyTnV0dkJBLElBRU0sU0FB
U3o1QyxFQUFRRCxHc05udXZCdkIsWUFJQSxTQUFBczlGLEtBQ0EsTUFBQUMsS0FIQSxHQUFBQSxH
QUFBLENBTUF0OUYsR0FBQUQsUUFBQXM5RixHdE5vdnZCTSxTQUFTcjlGLEVBQVFELEVBQVNILEd1
Tjd2dkJoQyxZQWdCQSxJQUFBMjlGLEdBQUEsWUFxQ0F2OUYsR0FBQUQsUUFBQXc5RixHdk42d3ZC
TSxTQUFTdjlGLEVBQVFELEVBQVNILEd3Tm4wdkJoQyxZQXNCQSxTQUFBbVcsR0FBQWhRLEdBRUEs
TUFEQTRQLEdBQUFpQixlQUFBN1EsR0FBQSxPQUFBUyxFQUFBLE9BQ0FULEVBdEJBLEdBQUFTLEdB
QUE1RyxFQUFBLElBRUErVixFQUFBL1YsRUFBQSxHQUVBQSxHQUFBLEVBcUJBSSxHQUFBRCxRQUFB
Z1csR3hOazF2Qk0sU0FBUy9WLEVBQVFELEVBQVNILEd5TjUydkJoQyxZQW1DQSxTQUFBMHFDLEdB
QUFwbEMsRUFBQTZoQixHQUdBLE1BQUE3aEIsSUFBQSxnQkFBQUEsSUFBQSxNQUFBQSxFQUFBVCxJ
QUVBc3JCLEVBQUFqSixPQUFBNWhCLEVBQUFULEtBR0FzaUIsRUFBQXhmLFNBQUEsSUFXQSxRQUFB
Z2pDLEdBQUF4a0MsRUFBQXlrQyxFQUFBN2dDLEVBQUE4Z0MsR0FDQSxHQUFBNS9CLFNBQUE5RSxF
QU9BLElBTEEsY0FBQThFLEdBQUEsWUFBQUEsSUFFQTlFLEVBQUEsTUFHQSxPQUFBQSxHQUFBLFdB
QUE4RSxHQUFBLFdBQUFBLEdBR0EsV0FBQUEsR0FBQTlFLEVBQUE2UixXQUFBUixFQUtBLE1BSkF6
TixHQUFBOGdDLEVBQUExa0MsRUFHQSxLQUFBeWtDLEVBQUFFLEVBQUFKLEVBQUF2a0MsRUFBQSxH
QUFBeWtDLEdBQ0EsQ0FHQSxJQUFBdkgsR0FDQTBILEVBQ0FDLEVBQUEsRUFDQUMsRUFBQSxLQUFB
TCxFQUFBRSxFQUFBRixFQUFBTSxDQUVBLElBQUE5eUIsTUFBQXdSLFFBQUF6akIsR0FDQSxPQUFB
eEYsR0FBQSxFQUFtQkEsRUFBQXdGLEVBQUF2RCxPQUFxQmpDLElBQ3hDMGlDLEVBQUFsOUIsRUFB
QXhGLEdBQ0FvcUMsRUFBQUUsRUFBQVAsRUFBQXJILEVBQUExaUMsR0FDQXFxQyxHQUFBTCxFQUFB
dEgsRUFBQTBILEVBQUFoaEMsRUFBQThnQyxPQUVHLENBQ0gsR0FBQU0sR0FBQUMsRUFBQWpsQyxF
QUNBLElBQUFnbEMsRUFBQSxDQUNBLEdBQ0FFLEdBREFDLEVBQUFILEVBQUE1cUMsS0FBQTRGLEVB
RUEsSUFBQWdsQyxJQUFBaGxDLEVBQUFvbEMsUUFFQSxJQURBLEdBQUFDLEdBQUEsSUFDQUgsRUFB
QUMsRUFBQWxFLFFBQUFxRSxNQUNBcEksRUFBQWdJLEVBQUFqNUIsTUFDQTI0QixFQUFBRSxFQUFB
UCxFQUFBckgsRUFBQW1JLEtBQ0FSLEdBQUFMLEVBQUF0SCxFQUFBMEgsRUFBQWhoQyxFQUFBOGdD
LE9BZUEsUUFBQVEsRUFBQUMsRUFBQWxFLFFBQUFxRSxNQUFBLENBQ0EsR0FBQUMsR0FBQUwsRUFB
QWo1QixLQUNBczVCLEtBQ0FySSxFQUFBcUksRUFBQSxHQUNBWCxFQUFBRSxFQUFBOWEsRUFBQWpK
LE9BQUF3a0IsRUFBQSxJQUFBUixFQUFBUixFQUFBckgsRUFBQSxHQUNBMkgsR0FBQUwsRUFBQXRI
LEVBQUEwSCxFQUFBaGhDLEVBQUE4Z0MsU0FJSyxlQUFBNS9CLEVBQUE7QUFDTCxHQUFBMGdDLEdB
QUEsR0FhQUMsRUFBQXRvQyxPQUFBNkMsRUFDb09TLEdBQUEseUJBQUFnbEMsRUFBQSxxQkFBK0do
ckMsT0FBQXNELEtBQUFpQyxHQUFBdEMsS0FBQSxVQUF5QytuQyxFQUFBRCxJQUk1WCxNQUFBWCxH
QW1CQSxRQUFBYSxHQUFBMWxDLEVBQUE0RCxFQUFBOGdDLEdBQ0EsYUFBQTFrQyxFQUNBLEVBR0F3
a0MsRUFBQXhrQyxFQUFBLEdBQUE0RCxFQUFBOGdDLEdBL0pBLEdBQUFqa0MsR0FBQTVHLEVBQUEs
SUFHQXdYLEdBREF4WCxFQUFBLElBQ0FBLEVBQUEsS0FFQW9yQyxFQUFBcHJDLEVBQUEsS0FFQW13
QixHQURBbndCLEVBQUEsR0FDQUEsRUFBQSxNQUdBOHFDLEdBRkE5cUMsRUFBQSxHQUVBLEtBQ0Fr
ckMsRUFBQSxHQXVKQTlxQyxHQUFBRCxRQUFBMHJDLEd6TjQzdkJNLFNBQVN6ckMsRUFBUUQsRUFB
U0gsRzBOMWl3QmhDLFlBWUEsU0FBQW1vQixHQUFBQyxHQUFzQyxNQUFBQSxNQUFBQyxXQUFBRCxH
QUF1Q0UsUUFBQUYsR0FrQjdFLFFBQUFJLEtBQ0EsT0FBQXFyQixHQUFBbHhDLFVBQUFDLE9BQUFn
N0YsRUFBQXhsRixNQUFBeTdCLEdBQUFDLEVBQUEsRUFBd0VBLEVBQUFELEVBQWFDLElBQ3JGOHBE
LEVBQUE5cEQsR0FBQW54QyxVQUFBbXhDLEVBR0EsaUJBQUFuckIsR0FDQSxnQkFBQTQxQixFQUFB
QyxFQUFBQyxHQUNBLEdBQUEvUixHQUFBL2pCLEVBQUE0MUIsRUFBQUMsRUFBQUMsR0FDQW8vQyxF
QUFBbnhELEVBQUEyRCxTQUNBeXRELEtBRUFDLEdBQ0FqeEQsU0FBQUosRUFBQUksU0FDQXVELFNB
QUEsU0FBQXlPLEdBQ0EsTUFBQSsrQyxHQUFBLytDLElBUUEsT0FMQWcvQyxHQUFBRixFQUFBajZG
LElBQUEsU0FBQXE2RixHQUNBLE1BQUFBLEdBQUFELEtBRUFGLEVBQUF4MEUsRUFBQSxRQUFBaG9C
LE1BQUFXLE9BQUE4N0YsR0FBQXB4RCxFQUFBMkQsVUFFQXRCLEtBQXdCckMsR0FDeEIyRCxTQUFB
d3RELE1BbkRBMTlGLEVBQUFrb0IsWUFBQSxDQUVBLElBQUEwbUIsR0FBQW51QyxPQUFBd0MsUUFB
QSxTQUFBbUIsR0FBbUQsT0FBQTVELEdBQUEsRUFBZ0JBLEVBQUFnQyxVQUFBQyxPQUFzQmpDLElB
QUEsQ0FBTyxHQUFBNkQsR0FBQTdCLFVBQUFoQyxFQUEyQixRQUFBa0UsS0FBQUwsR0FBMEI1RCxP
QUFBQyxVQUFBQyxlQUFBUCxLQUFBaUUsRUFBQUssS0FBeUROLEVBQUFNLEdBQUFMLEVBQUFLLElB
QWlDLE1BQUFOLEdBRS9PcEUsR0FBQSxRQUFBcW9CLENBRUEsSUFBQVksR0FBQXBwQixFQUFBLElB
RUFxcEIsRUFBQWxCLEVBQUFpQixJMU4rbHdCTSxTQUFTaHBCLEVBQVFELEcyTnptd0J2QixZQUlB
LFNBQUE4OUYsR0FBQUMsRUFBQTd0RCxHQUNBLGtCQUNBLE1BQUFBLEdBQUE2dEQsRUFBQTc4RixN
QUFBVyxPQUFBVyxhQXlCQSxRQUFBOGxCLEdBQUEwMUUsRUFBQTl0RCxHQUNBLHFCQUFBOHRELEdB
Q0EsTUFBQUYsR0FBQUUsRUFBQTl0RCxFQUdBLG9CQUFBOHRELElBQUEsT0FBQUEsRUFDQSxTQUFB
bDhGLE9BQUEsaUZBQUFrOEYsRUFBQSxhQUFBQSxJQUFBLDZGQUtBLFFBRkFqNkYsR0FBQXRELE9B
QUFzRCxLQUFBaTZGLEdBQ0FDLEtBQ0F6OUYsRUFBQSxFQUFpQkEsRUFBQXVELEVBQUF0QixPQUFp
QmpDLElBQUEsQ0FDbEMsR0FBQWtFLEdBQUFYLEVBQUF2RCxHQUNBdTlGLEVBQUFDLEVBQUF0NUYs
RUFDQSxtQkFBQXE1RixLQUNBRSxFQUFBdjVGLEdBQUFvNUYsRUFBQUMsRUFBQTd0RCxJQUdBLE1B
QUErdEQsR0EvQ0FqK0YsRUFBQWtvQixZQUFBLEVBQ0Fsb0IsRUFBQSxRQUFBc29CLEczTjhwd0JN
LFNBQVNyb0IsRUFBUUQsRUFBU0gsRzROanF3QmhDLFlBZUEsU0FBQW1vQixHQUFBQyxHQUFzQyxN
QUFBQSxNQUFBQyxXQUFBRCxHQUF1Q0UsUUFBQUYsR0FFN0UsUUFBQWkyRSxHQUFBeDVGLEVBQUFp
NkMsR0FDQSxHQUFBdy9DLEdBQUF4L0MsS0FBQTd6QyxLQUNBc3pGLEVBQUFELEdBQUEsSUFBQUEs
RUFBQTMyRixXQUFBLGdCQUVBLHVCQUFBNDJGLEVBQUEsY0FBQTE1RixFQUFBLGlMQTRCQSxRQUFB
MjVGLEdBQUFDLEdBQ0E3OUYsT0FBQXNELEtBQUF1NkYsR0FBQXo2RixRQUFBLFNBQUFhLEdBQ0Es
R0FBQTA1QyxHQUFBa2dELEVBQUE1NUYsR0FDQSs4QyxFQUFBckQsRUFBQXY4QyxRQUEyQ2lKLEtB
QUEyZCxFQUFBdTJCLFlBQUFDLE1BRTNDLHVCQUFBd0MsR0FDQSxTQUFBMy9DLE9BQUEsWUFBQTRD
LEVBQUEsZ1JBR0EsSUFBQW9HLEdBQUEsZ0NBQUF4RCxLQUFBQyxTQUFBQyxTQUFBLElBQUEyZixV
QUFBLEdBQUF2akIsTUFBQSxJQUFBRixLQUFBLElBQ0EsSUFBZ0QsbUJBQWhEMDZDLEdBQUF2OEMs
UUFBbUNpSixTQUNuQyxTQUFBaEosT0FBQSxZQUFBNEMsRUFBQSxnRkFBQStqQixFQUFBdTJCLFlB
QUFDLEtBQUEscVRBcUJBLFFBQUExMkIsR0FBQSsxRSxHQUdBLE9BRkFDLEdBQUE5OUYsT0FBQXNE
LEtBQUF1NkYsR0FDQUUsS0FDQWgrRixFQUFBLEVBQWlCQSxFQUFBKzlGLEVBQUE5N0YsT0FBd0Jq
QyxJQUFBLENBQ3pDLEdBQUFrRSxHQUFBNjVGLEVBQUEvOUYsRUFRQSxtQkFBQTg5RixHQUFBNTVG
LEtBQ0E4NUYsRUFBQTk1RixHQUFBNDVGLEVBQUE1NUYsSUFHQSxHQUFBKzVGLEdBQUFoK0YsT0FB
QXNELEtBQUF5NkYsR0FPQUUsRUFBQSxNQUNBLEtBQ0FMLEVBQUFHLEdBQ0csTUFBQS84RixHQUNI
aTlGLEVBQUFqOUYsRUFHQSxrQkFDQSxHQUFBdXRDLEdBQUF4c0MsVUFBQUMsT0FBQSxHQUFBWixT
QUFBVyxVQUFBLEdBQUFBLFVBQUEsTUFDQW04QyxFQUFBbjhDLFVBQUEsRUFFQSxJQUFBazhGLEVB
Q0EsS0FBQUEsRUFZQSxRQUZBQyxJQUFBLEVBQ0FsL0IsS0FDQW0vQixFQUFBLEVBQW9CQSxFQUFB
SCxFQUFBaDhGLE9BQThCbThGLElBQUEsQ0FDbEQsR0FBQWpyRCxHQUFBOHFELEVBQUFHLEdBQ0F4
Z0QsRUFBQW9nRCxFQUFBN3FELEdBQ0FrckQsRUFBQTd2RCxFQUFBMkUsR0FDQW1yRCxFQUFBMWdE
LEVBQUF5Z0QsRUFBQWxnRCxFQUNBLHVCQUFBbWdELEdBQUEsQ0FDQSxHQUFBQyxHQUFBYixFQUFB
dnFELEVBQUFnTCxFQUNBLFVBQUE3OEMsT0FBQWk5RixHQUVBdC9CLEVBQUE5ckIsR0FBQW1yRCxF
QUNBSCxLQUFBRyxJQUFBRCxFQUVBLE1BQUFGLEdBQUFsL0IsRUFBQXp3QixHQTFJQWh2QyxFQUFB
a29CLFlBQUEsRUFDQWxvQixFQUFBLFFBQUF1b0IsQ0FFQSxJQUFBRSxHQUFBNW9CLEVBQUEsSUFF
QWt6QyxFQUFBbHpDLEVBQUEsSUFJQXNwQixHQUZBbkIsRUFBQStxQixHQUVBbHpDLEVBQUEsSUFF
QW1vQixHQUFBbUIsSTVOd3l3Qk0sU0FBU2xwQixFQUFRRCxFQUFTSCxHNk5yendCaENJLEVBQUFE
LFFBQUFILEVBQUEsTTdONHp3Qk0sU0FBU0ksRUFBUUQsRUFBU0gsSThONXp3QmhDLFNBQUF5bkQs
RUFBQXJuRCxHQUFBLFlBVUEsU0FBQStuQixHQUFBQyxHQUFzQyxNQUFBQSxNQUFBQyxXQUFBRCxH
QUF1Q0UsUUFBQUYsR0FSN0V4bkIsT0FBQTZuQyxlQUFBdG9DLEVBQUEsY0FDQWlTLE9BQUEsR0FH
QSxJQU1Bb2tCLEdBTkEyb0UsRUFBQW4vRixFQUFBLEtBRUFvL0YsRUFBQWozRSxFQUFBZzNFLEVB
UUEzb0UsR0FEQSxtQkFBQTVlLE1BQ0FBLEtBQ0MsbUJBQUE5UCxRQUNEQSxPQUNDLG1CQUFBMi9D
LEdBQ0RBLEVBRUFybkQsQ0FLQSxJQUFBMG5ELElBQUEsRUFBQXMzQyxFQUFBLFNBQUE1b0UsRUFD
QXIyQixHQUFBLFFBQUEybkQsSTlOK3p3QjhCdm5ELEtBQUtKLEVBQVUsV0FBYSxNQUFPbUIsU0FB
WXRCLEVBQW9CLEtBQUtJLEtBSWhHLFNBQVNBLEVBQVFELEcrTi8xd0J2QixZQU1BLFNBQUFrL0Ys
R0FBQTdvRSxHQUNBLEdBQUFzeEIsR0FDQXczQyxFQUFBOW9FLEVBQUFDLE1BYUEsT0FYQSxrQkFB
QTZvRSxHQUNBQSxFQUFBamdELFdBQ0F5SSxFQUFBdzNDLEVBQUFqZ0QsWUFFQXlJLEVBQUF3M0Ms
RUFBQSxjQUNBQSxFQUFBamdELFdBQUF5SSxHQUdBQSxFQUFBLGVBR0FBLEVBbkJBbG5ELE9BQUE2
bkMsZUFBQXRvQyxFQUFBLGNBQ0FpUyxPQUFBLElBRUFqUyxFQUFBLFFBQUFrL0YsRy9OczN3Qk0s
U0FBU2ovRixFQUFRRCxFQUFTSCxFQUFxQnUvRixHZ09oM3dCckQsWUFFQSxJQUFBMzRGLEdBQUE1
RyxFQUFBdS9GLEdBV0FDLEdBVEF4L0YsRUFBQSxHQVNBLFNBQUF5L0YsR0FDQSxHQUFBQyxHQUFB
cCtGLElBQ0EsSUFBQW8rRixFQUFBQyxhQUFBLzhGLE9BQUEsQ0FDQSxHQUFBczVCLEdBQUF3akUs
RUFBQUMsYUFBQXo0RixLQUVBLE9BREF3NEYsR0FBQW4vRixLQUFBMjdCLEVBQUF1akUsR0FDQXZq
RSxFQUVBLFVBQUF3akUsR0FBQUQsS0FJQXp4QixFQUFBLFNBQUE0eEIsRUFBQUMsR0FDQSxHQUFB
SCxHQUFBcCtGLElBQ0EsSUFBQW8rRixFQUFBQyxhQUFBLzhGLE9BQUEsQ0FDQSxHQUFBczVCLEdB
QUF3akUsRUFBQUMsYUFBQXo0RixLQUVBLE9BREF3NEYsR0FBQW4vRixLQUFBMjdCLEVBQUEwakUs
RUFBQUMsR0FDQTNqRSxFQUVBLFVBQUF3akUsR0FBQUUsRUFBQUMsSUFJQUMsRUFBQSxTQUFBRixF
QUFBQyxFQUFBRSxHQUNBLEdBQUFMLEdBQUFwK0YsSUFDQSxJQUFBbytGLEVBQUFDLGFBQUEvOEYs
T0FBQSxDQUNBLEdBQUFzNUIsR0FBQXdqRSxFQUFBQyxhQUFBejRGLEtBRUEsT0FEQXc0RixHQUFB
bi9GLEtBQUEyN0IsRUFBQTBqRSxFQUFBQyxFQUFBRSxHQUNBN2pFLEVBRUEsVUFBQXdqRSxHQUFB
RSxFQUFBQyxFQUFBRSxJQUlBL3ZGLEVBQUEsU0FBQTR2RixFQUFBQyxFQUFBRSxFQUFBQyxHQUNB
LEdBQUFOLEdBQUFwK0YsSUFDQSxJQUFBbytGLEVBQUFDLGFBQUEvOEYsT0FBQSxDQUNBLEdBQUFz
NUIsR0FBQXdqRSxFQUFBQyxhQUFBejRGLEtBRUEsT0FEQXc0RixHQUFBbi9GLEtBQUEyN0IsRUFB
QTBqRSxFQUFBQyxFQUFBRSxFQUFBQyxHQUNBOWpFLEVBRUEsVUFBQXdqRSxHQUFBRSxFQUFBQyxF
QUFBRSxFQUFBQyxJQUlBQyxFQUFBLFNBQUEvakUsR0FDQSxHQUFBd2pFLEdBQUFwK0YsSUFDQTQ2
QixhQUFBd2pFLEdBQUEsT0FBQTk0RixFQUFBLE1BQ0FzMUIsRUFBQWx2QixhQUNBMHlGLEVBQUFD
LGFBQUEvOEYsT0FBQTg4RixFQUFBUSxVQUNBUixFQUFBQyxhQUFBNTRGLEtBQUFtMUIsSUFJQWlr
RSxFQUFBLEdBQ0FDLEVBQUFaLEVBV0FueUYsRUFBQSxTQUFBZ3pGLEVBQUFDLEdBR0EsR0FBQUMs
R0FBQUYsQ0FPQSxPQU5BRSxHQUFBWixnQkFDQVksRUFBQTMyRixVQUFBMDJGLEdBQUFGLEVBQ0FH
LEVBQUFMLFdBQ0FLLEVBQUFMLFNBQUFDLEdBRUFJLEVBQUF0ekYsUUFBQWd6RixFQUNBTSxHQUdB
bjBGLEdBQ0FpQixlQUNBbXlGLG9CQUNBeHhCLG9CQUNBOHhCLHNCQUNBOXZGLHFCQUdBNVAsR0FB
QUQsUUFBQWlNIiwiZmlsZSI6InN0YXRpYy9qcy9tYWluLjQzYTA5NDhjLmpzIiwic291cmNlc0Nv
bnRlbnQiOlsiLyoqKioqKi8gKGZ1bmN0aW9uKG1vZHVsZXMpIHsgLy8gd2VicGFja0Jvb3RzdHJh
cFxuLyoqKioqKi8gXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4vKioqKioqLyBcdHZhciBpbnN0YWxs
ZWRNb2R1bGVzID0ge307XG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBUaGUgcmVxdWlyZSBmdW5j
dGlvblxuLyoqKioqKi8gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7
XG4vKioqKioqL1xuLyoqKioqKi8gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxu
LyoqKioqKi8gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKVxuLyoqKioqKi8gXHRc
dFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4vKioqKioqL1xu
LyoqKioqKi8gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUg
Y2FjaGUpXG4vKioqKioqLyBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxl
SWRdID0ge1xuLyoqKioqKi8gXHRcdFx0ZXhwb3J0czoge30sXG4vKioqKioqLyBcdFx0XHRpZDog
bW9kdWxlSWQsXG4vKioqKioqLyBcdFx0XHRsb2FkZWQ6IGZhbHNlXG4vKioqKioqLyBcdFx0fTtc
bi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4v
KioqKioqLyBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxl
LCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG4vKioqKioqL1xuLyoqKioq
Ki8gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbi8qKioqKiovIFx0XHRtb2R1bGUu
bG9hZGVkID0gdHJ1ZTtcbi8qKioqKiovXG4vKioqKioqLyBcdFx0Ly8gUmV0dXJuIHRoZSBleHBv
cnRzIG9mIHRoZSBtb2R1bGVcbi8qKioqKiovIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4v
KioqKioqLyBcdH1cbi8qKioqKiovXG4vKioqKioqL1xuLyoqKioqKi8gXHQvLyBleHBvc2UgdGhl
IG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuLyoqKioqKi8gXHRfX3dlYnBh
Y2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuLyoqKioqKi9cbi8qKioqKiovIFx0Ly8gZXhwb3Nl
IHRoZSBtb2R1bGUgY2FjaGVcbi8qKioqKiovIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5z
dGFsbGVkTW9kdWxlcztcbi8qKioqKiovXG4vKioqKioqLyBcdC8vIF9fd2VicGFja19wdWJsaWNf
cGF0aF9fXG4vKioqKioqLyBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiLi9cIjtcbi8qKioq
KiovXG4vKioqKioqLyBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xu
LyoqKioqKi8gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcbi8qKioqKiovIH0pXG4v
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqL1xuLyoqKioqKi8gKChmdW5jdGlvbihtb2R1bGVzKSB7XG5cdC8vIENo
ZWNrIGFsbCBtb2R1bGVzIGZvciBkZWR1cGxpY2F0ZWQgbW9kdWxlc1xuXHRmb3IodmFyIGkgaW4g
bW9kdWxlcykge1xuXHRcdGlmKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCht
b2R1bGVzLCBpKSkge1xuXHRcdFx0c3dpdGNoKHR5cGVvZiBtb2R1bGVzW2ldKSB7XG5cdFx0XHRj
YXNlIFwiZnVuY3Rpb25cIjogYnJlYWs7XG5cdFx0XHRjYXNlIFwib2JqZWN0XCI6XG5cdFx0XHRc
dC8vIE1vZHVsZSBjYW4gYmUgY3JlYXRlZCBmcm9tIGEgdGVtcGxhdGVcblx0XHRcdFx0bW9kdWxl
c1tpXSA9IChmdW5jdGlvbihfbSkge1xuXHRcdFx0XHRcdHZhciBhcmdzID0gX20uc2xpY2UoMSks
IGZuID0gbW9kdWxlc1tfbVswXV07XG5cdFx0XHRcdFx0cmV0dXJuIGZ1bmN0aW9uIChhLGIsYykg
e1xuXHRcdFx0XHRcdFx0Zm4uYXBwbHkodGhpcywgW2EsYixjXS5jb25jYXQoYXJncykpO1xuXHRc
dFx0XHRcdH07XG5cdFx0XHRcdH0obW9kdWxlc1tpXSkpO1xuXHRcdFx0XHRicmVhaztcblx0XHRc
dGRlZmF1bHQ6XG5cdFx0XHRcdC8vIE1vZHVsZSBpcyBhIGNvcHkgb2YgYW5vdGhlciBtb2R1bGVc
blx0XHRcdFx0bW9kdWxlc1tpXSA9IG1vZHVsZXNbbW9kdWxlc1tpXV07XG5cdFx0XHRcdGJyZWFr
O1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXHRyZXR1cm4gbW9kdWxlcztcbn0oW1xuLyogMCAqL1xu
LyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5c
blx0X193ZWJwYWNrX3JlcXVpcmVfXygxOTYpO1xuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFj
a19yZXF1aXJlX18oMjA0KTtcblxuXG4vKioqLyB9LFxuLyogMSAqL1xuLyoqKi8gZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENv
cHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0
Jztcblx0XG5cdC8qKlxuXHQgKiBVc2UgaW52YXJpYW50KCkgdG8gYXNzZXJ0IHN0YXRlIHdoaWNo
IHlvdXIgcHJvZ3JhbSBhc3N1bWVzIHRvIGJlIHRydWUuXG5cdCAqXG5cdCAqIFByb3ZpZGUgc3By
aW50Zi1zdHlsZSBmb3JtYXQgKG9ubHkgJXMgaXMgc3VwcG9ydGVkKSBhbmQgYXJndW1lbnRzXG5c
dCAqIHRvIHByb3ZpZGUgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBicm9rZSBhbmQgd2hhdCB5b3Ug
d2VyZVxuXHQgKiBleHBlY3RpbmcuXG5cdCAqXG5cdCAqIFRoZSBpbnZhcmlhbnQgbWVzc2FnZSB3
aWxsIGJlIHN0cmlwcGVkIGluIHByb2R1Y3Rpb24sIGJ1dCB0aGUgaW52YXJpYW50XG5cdCAqIHdp
bGwgcmVtYWluIHRvIGVuc3VyZSBsb2dpYyBkb2VzIG5vdCBkaWZmZXIgaW4gcHJvZHVjdGlvbi5c
blx0ICovXG5cdFxuXHR2YXIgdmFsaWRhdGVGb3JtYXQgPSBmdW5jdGlvbiB2YWxpZGF0ZUZvcm1h
dChmb3JtYXQpIHt9O1xuXHRcblx0aWYgKGZhbHNlKSB7XG5cdCAgdmFsaWRhdGVGb3JtYXQgPSBm
dW5jdGlvbiB2YWxpZGF0ZUZvcm1hdChmb3JtYXQpIHtcblx0ICAgIGlmIChmb3JtYXQgPT09IHVu
ZGVmaW5lZCkge1xuXHQgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFyaWFudCByZXF1aXJlcyBh
biBlcnJvciBtZXNzYWdlIGFyZ3VtZW50Jyk7XG5cdCAgICB9XG5cdCAgfTtcblx0fVxuXHRcblx0
ZnVuY3Rpb24gaW52YXJpYW50KGNvbmRpdGlvbiwgZm9ybWF0LCBhLCBiLCBjLCBkLCBlLCBmKSB7
XG5cdCAgdmFsaWRhdGVGb3JtYXQoZm9ybWF0KTtcblx0XG5cdCAgaWYgKCFjb25kaXRpb24pIHtc
blx0ICAgIHZhciBlcnJvcjtcblx0ICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuXHQg
ICAgICBlcnJvciA9IG5ldyBFcnJvcignTWluaWZpZWQgZXhjZXB0aW9uIG9jY3VycmVkOyB1c2Ug
dGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQgJyArICdmb3IgdGhlIGZ1bGwgZXJyb3Ig
bWVzc2FnZSBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLicpO1xuXHQgICAgfSBlbHNl
IHtcblx0ICAgICAgdmFyIGFyZ3MgPSBbYSwgYiwgYywgZCwgZSwgZl07XG5cdCAgICAgIHZhciBh
cmdJbmRleCA9IDA7XG5cdCAgICAgIGVycm9yID0gbmV3IEVycm9yKGZvcm1hdC5yZXBsYWNlKC8l
cy9nLCBmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107XG5c
dCAgICAgIH0pKTtcblx0ICAgICAgZXJyb3IubmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztc
blx0ICAgIH1cblx0XG5cdCAgICBlcnJvci5mcmFtZXNUb1BvcCA9IDE7IC8vIHdlIGRvbid0IGNh
cmUgYWJvdXQgaW52YXJpYW50J3Mgb3duIGZyYW1lXG5cdCAgICB0aHJvdyBlcnJvcjtcblx0ICB9
XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gaW52YXJpYW50O1xuXG4vKioqLyB9LFxuLyog
MiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9f
KSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDE0LTIwMTUsIEZhY2Vib29rLCBJbmMuXG5c
dCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRc
blx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIGVtcHR5RnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDcpO1xuXHRcblx0LyoqXG5cdCAqIFNpbWlsYXIgdG8gaW52YXJpYW50IGJ1dCBvbmx5
IGxvZ3MgYSB3YXJuaW5nIGlmIHRoZSBjb25kaXRpb24gaXMgbm90IG1ldC5cblx0ICogVGhpcyBj
YW4gYmUgdXNlZCB0byBsb2cgaXNzdWVzIGluIGRldmVsb3BtZW50IGVudmlyb25tZW50cyBpbiBj
cml0aWNhbFxuXHQgKiBwYXRocy4gUmVtb3ZpbmcgdGhlIGxvZ2dpbmcgY29kZSBmb3IgcHJvZHVj
dGlvbiBlbnZpcm9ubWVudHMgd2lsbCBrZWVwIHRoZVxuXHQgKiBzYW1lIGxvZ2ljIGFuZCBmb2xs
b3cgdGhlIHNhbWUgY29kZSBwYXRocy5cblx0ICovXG5cdFxuXHR2YXIgd2FybmluZyA9IGVtcHR5
RnVuY3Rpb247XG5cdFxuXHRpZiAoZmFsc2UpIHtcblx0ICB2YXIgcHJpbnRXYXJuaW5nID0gZnVu
Y3Rpb24gcHJpbnRXYXJuaW5nKGZvcm1hdCkge1xuXHQgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3Vt
ZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkg
PSAxOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG5cdCAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJn
dW1lbnRzW19rZXldO1xuXHQgICAgfVxuXHRcblx0ICAgIHZhciBhcmdJbmRleCA9IDA7XG5cdCAg
ICB2YXIgbWVzc2FnZSA9ICdXYXJuaW5nOiAnICsgZm9ybWF0LnJlcGxhY2UoLyVzL2csIGZ1bmN0
aW9uICgpIHtcblx0ICAgICAgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107XG5cdCAgICB9KTtcblx0
ICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0ICAgICAgY29uc29s
ZS5lcnJvcihtZXNzYWdlKTtcblx0ICAgIH1cblx0ICAgIHRyeSB7XG5cdCAgICAgIC8vIC0tLSBX
ZWxjb21lIHRvIGRlYnVnZ2luZyBSZWFjdCAtLS1cblx0ICAgICAgLy8gVGhpcyBlcnJvciB3YXMg
dGhyb3duIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCB5b3UgY2FuIHVzZSB0aGlzIHN0YWNrXG5c
dCAgICAgIC8vIHRvIGZpbmQgdGhlIGNhbGxzaXRlIHRoYXQgY2F1c2VkIHRoaXMgd2FybmluZyB0
byBmaXJlLlxuXHQgICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG5cdCAgICB9IGNhdGNo
ICh4KSB7fVxuXHQgIH07XG5cdFxuXHQgIHdhcm5pbmcgPSBmdW5jdGlvbiB3YXJuaW5nKGNvbmRp
dGlvbiwgZm9ybWF0KSB7XG5cdCAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcblx0ICAg
ICAgdGhyb3cgbmV3IEVycm9yKCdgd2FybmluZyhjb25kaXRpb24sIGZvcm1hdCwgLi4uYXJncylg
IHJlcXVpcmVzIGEgd2FybmluZyAnICsgJ21lc3NhZ2UgYXJndW1lbnQnKTtcblx0ICAgIH1cblx0
XG5cdCAgICBpZiAoZm9ybWF0LmluZGV4T2YoJ0ZhaWxlZCBDb21wb3NpdGUgcHJvcFR5cGU6ICcp
ID09PSAwKSB7XG5cdCAgICAgIHJldHVybjsgLy8gSWdub3JlIENvbXBvc2l0ZUNvbXBvbmVudCBw
cm9wdHlwZSBjaGVjay5cblx0ICAgIH1cblx0XG5cdCAgICBpZiAoIWNvbmRpdGlvbikge1xuXHQg
ICAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVu
MiA+IDIgPyBfbGVuMiAtIDIgOiAwKSwgX2tleTIgPSAyOyBfa2V5MiA8IF9sZW4yOyBfa2V5Misr
KSB7XG5cdCAgICAgICAgYXJnc1tfa2V5MiAtIDJdID0gYXJndW1lbnRzW19rZXkyXTtcblx0ICAg
ICAgfVxuXHRcblx0ICAgICAgcHJpbnRXYXJuaW5nLmFwcGx5KHVuZGVmaW5lZCwgW2Zvcm1hdF0u
Y29uY2F0KGFyZ3MpKTtcblx0ICAgIH1cblx0ICB9O1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0
cyA9IHdhcm5pbmc7XG5cbi8qKiovIH0sXG4vKiAzICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5c
dCAqXG5cdCAqIFxuXHQgKi9cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0LyoqXG5cdCAqIFdBUk5J
Tkc6IERPIE5PVCBtYW51YWxseSByZXF1aXJlIHRoaXMgbW9kdWxlLlxuXHQgKiBUaGlzIGlzIGEg
cmVwbGFjZW1lbnQgZm9yIGBpbnZhcmlhbnQoLi4uKWAgdXNlZCBieSB0aGUgZXJyb3IgY29kZSBz
eXN0ZW1cblx0ICogYW5kIHdpbGwgX29ubHlfIGJlIHJlcXVpcmVkIGJ5IHRoZSBjb3JyZXNwb25k
aW5nIGJhYmVsIHBhc3MuXG5cdCAqIEl0IGFsd2F5cyB0aHJvd3MuXG5cdCAqL1xuXHRcblx0ZnVu
Y3Rpb24gcmVhY3RQcm9kSW52YXJpYW50KGNvZGUpIHtcblx0ICB2YXIgYXJnQ291bnQgPSBhcmd1
bWVudHMubGVuZ3RoIC0gMTtcblx0XG5cdCAgdmFyIG1lc3NhZ2UgPSAnTWluaWZpZWQgUmVhY3Qg
ZXJyb3IgIycgKyBjb2RlICsgJzsgdmlzaXQgJyArICdodHRwOi8vZmFjZWJvb2suZ2l0aHViLmlv
L3JlYWN0L2RvY3MvZXJyb3ItZGVjb2Rlci5odG1sP2ludmFyaWFudD0nICsgY29kZTtcblx0XG5c
dCAgZm9yICh2YXIgYXJnSWR4ID0gMDsgYXJnSWR4IDwgYXJnQ291bnQ7IGFyZ0lkeCsrKSB7XG5c
dCAgICBtZXNzYWdlICs9ICcmYXJnc1tdPScgKyBlbmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRz
W2FyZ0lkeCArIDFdKTtcblx0ICB9XG5cdFxuXHQgIG1lc3NhZ2UgKz0gJyBmb3IgdGhlIGZ1bGwg
bWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYgZW52aXJvbm1lbnQnICsgJyBmb3Ig
ZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4nO1xuXHRcblx0ICB2
YXIgZXJyb3IgPSBuZXcgRXJyb3IobWVzc2FnZSk7XG5cdCAgZXJyb3IubmFtZSA9ICdJbnZhcmlh
bnQgVmlvbGF0aW9uJztcblx0ICBlcnJvci5mcmFtZXNUb1BvcCA9IDE7IC8vIHdlIGRvbid0IGNh
cmUgYWJvdXQgcmVhY3RQcm9kSW52YXJpYW50J3Mgb3duIGZyYW1lXG5cdFxuXHQgIHRocm93IGVy
cm9yO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IHJlYWN0UHJvZEludmFyaWFudDtcblxu
LyoqKi8gfSxcbi8qIDQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5c
dC8qXG5cdG9iamVjdC1hc3NpZ25cblx0KGMpIFNpbmRyZSBTb3JodXNcblx0QGxpY2Vuc2UgTUlU
XG5cdCovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdC8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNl
ZC12YXJzICovXG5cdHZhciBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlTeW1ib2xzO1xuXHR2YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhh
c093blByb3BlcnR5O1xuXHR2YXIgcHJvcElzRW51bWVyYWJsZSA9IE9iamVjdC5wcm90b3R5cGUu
cHJvcGVydHlJc0VudW1lcmFibGU7XG5cdFxuXHRmdW5jdGlvbiB0b09iamVjdCh2YWwpIHtcblx0
XHRpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZpbmVkKSB7XG5cdFx0XHR0aHJvdyBu
ZXcgVHlwZUVycm9yKCdPYmplY3QuYXNzaWduIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBudWxsIG9y
IHVuZGVmaW5lZCcpO1xuXHRcdH1cblx0XG5cdFx0cmV0dXJuIE9iamVjdCh2YWwpO1xuXHR9XG5c
dFxuXHRmdW5jdGlvbiBzaG91bGRVc2VOYXRpdmUoKSB7XG5cdFx0dHJ5IHtcblx0XHRcdGlmICgh
T2JqZWN0LmFzc2lnbikge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFxuXHRc
dFx0Ly8gRGV0ZWN0IGJ1Z2d5IHByb3BlcnR5IGVudW1lcmF0aW9uIG9yZGVyIGluIG9sZGVyIFY4
IHZlcnNpb25zLlxuXHRcblx0XHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9p
c3N1ZXMvZGV0YWlsP2lkPTQxMThcblx0XHRcdHZhciB0ZXN0MSA9IG5ldyBTdHJpbmcoJ2FiYycp
OyAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1uZXctd3JhcHBlcnNcblx0XHRcdHRlc3QxWzVd
ID0gJ2RlJztcblx0XHRcdGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MSlbMF0g
PT09ICc1Jykge1xuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFxuXHRcdFx0Ly8g
aHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzA1NlxuXHRc
dFx0dmFyIHRlc3QyID0ge307XG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IDEwOyBpKyspIHtc
blx0XHRcdFx0dGVzdDJbJ18nICsgU3RyaW5nLmZyb21DaGFyQ29kZShpKV0gPSBpO1xuXHRcdFx0
fVxuXHRcdFx0dmFyIG9yZGVyMiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3QyKS5t
YXAoZnVuY3Rpb24gKG4pIHtcblx0XHRcdFx0cmV0dXJuIHRlc3QyW25dO1xuXHRcdFx0fSk7XG5c
dFx0XHRpZiAob3JkZXIyLmpvaW4oJycpICE9PSAnMDEyMzQ1Njc4OScpIHtcblx0XHRcdFx0cmV0
dXJuIGZhbHNlO1xuXHRcdFx0fVxuXHRcblx0XHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5v
cmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTMwNTZcblx0XHRcdHZhciB0ZXN0MyA9IHt9O1xuXHRc
dFx0J2FiY2RlZmdoaWprbG1ub3BxcnN0Jy5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAobGV0
dGVyKSB7XG5cdFx0XHRcdHRlc3QzW2xldHRlcl0gPSBsZXR0ZXI7XG5cdFx0XHR9KTtcblx0XHRc
dGlmIChPYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LCB0ZXN0MykpLmpvaW4oJycpICE9PVxu
XHRcdFx0XHRcdCdhYmNkZWZnaGlqa2xtbm9wcXJzdCcpIHtcblx0XHRcdFx0cmV0dXJuIGZhbHNl
O1xuXHRcdFx0fVxuXHRcblx0XHRcdHJldHVybiB0cnVlO1xuXHRcdH0gY2F0Y2ggKGVycikge1xu
XHRcdFx0Ly8gV2UgZG9uJ3QgZXhwZWN0IGFueSBvZiB0aGUgYWJvdmUgdG8gdGhyb3csIGJ1dCBi
ZXR0ZXIgdG8gYmUgc2FmZS5cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblx0XG5c
dG1vZHVsZS5leHBvcnRzID0gc2hvdWxkVXNlTmF0aXZlKCkgPyBPYmplY3QuYXNzaWduIDogZnVu
Y3Rpb24gKHRhcmdldCwgc291cmNlKSB7XG5cdFx0dmFyIGZyb207XG5cdFx0dmFyIHRvID0gdG9P
YmplY3QodGFyZ2V0KTtcblx0XHR2YXIgc3ltYm9scztcblx0XG5cdFx0Zm9yICh2YXIgcyA9IDE7
IHMgPCBhcmd1bWVudHMubGVuZ3RoOyBzKyspIHtcblx0XHRcdGZyb20gPSBPYmplY3QoYXJndW1l
bnRzW3NdKTtcblx0XG5cdFx0XHRmb3IgKHZhciBrZXkgaW4gZnJvbSkge1xuXHRcdFx0XHRpZiAo
aGFzT3duUHJvcGVydHkuY2FsbChmcm9tLCBrZXkpKSB7XG5cdFx0XHRcdFx0dG9ba2V5XSA9IGZy
b21ba2V5XTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcblx0XHRcdGlmIChnZXRPd25Qcm9wZXJ0
eVN5bWJvbHMpIHtcblx0XHRcdFx0c3ltYm9scyA9IGdldE93blByb3BlcnR5U3ltYm9scyhmcm9t
KTtcblx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBzeW1ib2xzLmxlbmd0aDsgaSsrKSB7XG5c
dFx0XHRcdFx0aWYgKHByb3BJc0VudW1lcmFibGUuY2FsbChmcm9tLCBzeW1ib2xzW2ldKSkge1xu
XHRcdFx0XHRcdFx0dG9bc3ltYm9sc1tpXV0gPSBmcm9tW3N5bWJvbHNbaV1dO1xuXHRcdFx0XHRc
dH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0XG5cdFx0cmV0dXJuIHRvO1xuXHR9O1xu
XG5cbi8qKiovIH0sXG4vKiA1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9f
d2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZh
cmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXHRcblx0dmFyIERPTVByb3BlcnR5ID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxNSk7XG5cdHZhciBSZWFjdERPTUNvbXBvbmVudEZsYWdzID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg2MSk7XG5cdFxuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNr
X3JlcXVpcmVfXygxKTtcblx0XG5cdHZhciBBVFRSX05BTUUgPSBET01Qcm9wZXJ0eS5JRF9BVFRS
SUJVVEVfTkFNRTtcblx0dmFyIEZsYWdzID0gUmVhY3RET01Db21wb25lbnRGbGFncztcblx0XG5c
dHZhciBpbnRlcm5hbEluc3RhbmNlS2V5ID0gJ19fcmVhY3RJbnRlcm5hbEluc3RhbmNlJCcgKyBN
YXRoLnJhbmRvbSgpLnRvU3RyaW5nKDM2KS5zbGljZSgyKTtcblx0XG5cdC8qKlxuXHQgKiBDaGVj
ayBpZiBhIGdpdmVuIG5vZGUgc2hvdWxkIGJlIGNhY2hlZC5cblx0ICovXG5cdGZ1bmN0aW9uIHNo
b3VsZFByZWNhY2hlTm9kZShub2RlLCBub2RlSUQpIHtcblx0ICByZXR1cm4gbm9kZS5ub2RlVHlw
ZSA9PT0gMSAmJiBub2RlLmdldEF0dHJpYnV0ZShBVFRSX05BTUUpID09PSBTdHJpbmcobm9kZUlE
KSB8fCBub2RlLm5vZGVUeXBlID09PSA4ICYmIG5vZGUubm9kZVZhbHVlID09PSAnIHJlYWN0LXRl
eHQ6ICcgKyBub2RlSUQgKyAnICcgfHwgbm9kZS5ub2RlVHlwZSA9PT0gOCAmJiBub2RlLm5vZGVW
YWx1ZSA9PT0gJyByZWFjdC1lbXB0eTogJyArIG5vZGVJRCArICcgJztcblx0fVxuXHRcblx0Lyoq
XG5cdCAqIERyaWxsIGRvd24gKHRocm91Z2ggY29tcG9zaXRlcyBhbmQgZW1wdHkgY29tcG9uZW50
cykgdW50aWwgd2UgZ2V0IGEgaG9zdCBvclxuXHQgKiBob3N0IHRleHQgY29tcG9uZW50LlxuXHQg
KlxuXHQgKiBUaGlzIGlzIHByZXR0eSBwb2x5bW9ycGhpYyBidXQgdW5hdm9pZGFibGUgd2l0aCB0
aGUgY3VycmVudCBzdHJ1Y3R1cmUgd2UgaGF2ZVxuXHQgKiBmb3IgYF9yZW5kZXJlZENoaWxkcmVu
YC5cblx0ICovXG5cdGZ1bmN0aW9uIGdldFJlbmRlcmVkSG9zdE9yVGV4dEZyb21Db21wb25lbnQo
Y29tcG9uZW50KSB7XG5cdCAgdmFyIHJlbmRlcmVkO1xuXHQgIHdoaWxlIChyZW5kZXJlZCA9IGNv
bXBvbmVudC5fcmVuZGVyZWRDb21wb25lbnQpIHtcblx0ICAgIGNvbXBvbmVudCA9IHJlbmRlcmVk
O1xuXHQgIH1cblx0ICByZXR1cm4gY29tcG9uZW50O1xuXHR9XG5cdFxuXHQvKipcblx0ICogUG9w
dWxhdGUgYF9ob3N0Tm9kZWAgb24gdGhlIHJlbmRlcmVkIGhvc3QvdGV4dCBjb21wb25lbnQgd2l0
aCB0aGUgZ2l2ZW5cblx0ICogRE9NIG5vZGUuIFRoZSBwYXNzZWQgYGluc3RgIGNhbiBiZSBhIGNv
bXBvc2l0ZS5cblx0ICovXG5cdGZ1bmN0aW9uIHByZWNhY2hlTm9kZShpbnN0LCBub2RlKSB7XG5c
dCAgdmFyIGhvc3RJbnN0ID0gZ2V0UmVuZGVyZWRIb3N0T3JUZXh0RnJvbUNvbXBvbmVudChpbnN0
KTtcblx0ICBob3N0SW5zdC5faG9zdE5vZGUgPSBub2RlO1xuXHQgIG5vZGVbaW50ZXJuYWxJbnN0
YW5jZUtleV0gPSBob3N0SW5zdDtcblx0fVxuXHRcblx0ZnVuY3Rpb24gdW5jYWNoZU5vZGUoaW5z
dCkge1xuXHQgIHZhciBub2RlID0gaW5zdC5faG9zdE5vZGU7XG5cdCAgaWYgKG5vZGUpIHtcblx0
ICAgIGRlbGV0ZSBub2RlW2ludGVybmFsSW5zdGFuY2VLZXldO1xuXHQgICAgaW5zdC5faG9zdE5v
ZGUgPSBudWxsO1xuXHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIFBvcHVsYXRlIGBfaG9zdE5v
ZGVgIG9uIGVhY2ggY2hpbGQgb2YgYGluc3RgLCBhc3N1bWluZyB0aGF0IHRoZSBjaGlsZHJlblxu
XHQgKiBtYXRjaCB1cCB3aXRoIHRoZSBET00gKGVsZW1lbnQpIGNoaWxkcmVuIG9mIGBub2RlYC5c
blx0ICpcblx0ICogV2UgY2FjaGUgZW50aXJlIGxldmVscyBhdCBvbmNlIHRvIGF2b2lkIGFuIG5e
MiBwcm9ibGVtIHdoZXJlIHdlIGFjY2VzcyB0aGVcblx0ICogY2hpbGRyZW4gb2YgYSBub2RlIHNl
cXVlbnRpYWxseSBhbmQgaGF2ZSB0byB3YWxrIGZyb20gdGhlIHN0YXJ0IHRvIG91ciB0YXJnZXRc
blx0ICogbm9kZSBldmVyeSB0aW1lLlxuXHQgKlxuXHQgKiBTaW5jZSB3ZSB1cGRhdGUgYF9yZW5k
ZXJlZENoaWxkcmVuYCBhbmQgdGhlIGFjdHVhbCBET00gYXQgKHNsaWdodGx5KVxuXHQgKiBkaWZm
ZXJlbnQgdGltZXMsIHdlIGNvdWxkIHJhY2UgaGVyZSBhbmQgc2VlIGEgbmV3ZXIgYF9yZW5kZXJl
ZENoaWxkcmVuYCB0aGFuXG5cdCAqIHRoZSBET00gbm9kZXMgd2Ugc2VlLiBUbyBhdm9pZCB0aGlz
LCBSZWFjdE11bHRpQ2hpbGQgY2FsbHNcblx0ICogYHByZXBhcmVUb01hbmFnZUNoaWxkcmVuYCBi
ZWZvcmUgd2UgY2hhbmdlIGBfcmVuZGVyZWRDaGlsZHJlbmAsIGF0IHdoaWNoXG5cdCAqIHRpbWUg
dGhlIGNvbnRhaW5lcidzIGNoaWxkIG5vZGVzIGFyZSBhbHdheXMgY2FjaGVkICh1bnRpbCBpdCB1
bm1vdW50cykuXG5cdCAqL1xuXHRmdW5jdGlvbiBwcmVjYWNoZUNoaWxkTm9kZXMoaW5zdCwgbm9k
ZSkge1xuXHQgIGlmIChpbnN0Ll9mbGFncyAmIEZsYWdzLmhhc0NhY2hlZENoaWxkTm9kZXMpIHtc
blx0ICAgIHJldHVybjtcblx0ICB9XG5cdCAgdmFyIGNoaWxkcmVuID0gaW5zdC5fcmVuZGVyZWRD
aGlsZHJlbjtcblx0ICB2YXIgY2hpbGROb2RlID0gbm9kZS5maXJzdENoaWxkO1xuXHQgIG91dGVy
OiBmb3IgKHZhciBuYW1lIGluIGNoaWxkcmVuKSB7XG5cdCAgICBpZiAoIWNoaWxkcmVuLmhhc093
blByb3BlcnR5KG5hbWUpKSB7XG5cdCAgICAgIGNvbnRpbnVlO1xuXHQgICAgfVxuXHQgICAgdmFy
IGNoaWxkSW5zdCA9IGNoaWxkcmVuW25hbWVdO1xuXHQgICAgdmFyIGNoaWxkSUQgPSBnZXRSZW5k
ZXJlZEhvc3RPclRleHRGcm9tQ29tcG9uZW50KGNoaWxkSW5zdCkuX2RvbUlEO1xuXHQgICAgaWYg
KGNoaWxkSUQgPT09IDApIHtcblx0ICAgICAgLy8gV2UncmUgY3VycmVudGx5IHVubW91bnRpbmcg
dGhpcyBjaGlsZCBpbiBSZWFjdE11bHRpQ2hpbGQ7IHNraXAgaXQuXG5cdCAgICAgIGNvbnRpbnVl
O1xuXHQgICAgfVxuXHQgICAgLy8gV2UgYXNzdW1lIHRoZSBjaGlsZCBub2RlcyBhcmUgaW4gdGhl
IHNhbWUgb3JkZXIgYXMgdGhlIGNoaWxkIGluc3RhbmNlcy5cblx0ICAgIGZvciAoOyBjaGlsZE5v
ZGUgIT09IG51bGw7IGNoaWxkTm9kZSA9IGNoaWxkTm9kZS5uZXh0U2libGluZykge1xuXHQgICAg
ICBpZiAoc2hvdWxkUHJlY2FjaGVOb2RlKGNoaWxkTm9kZSwgY2hpbGRJRCkpIHtcblx0ICAgICAg
ICBwcmVjYWNoZU5vZGUoY2hpbGRJbnN0LCBjaGlsZE5vZGUpO1xuXHQgICAgICAgIGNvbnRpbnVl
IG91dGVyO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICAvLyBXZSByZWFjaGVkIHRoZSBlbmQg
b2YgdGhlIERPTSBjaGlsZHJlbiB3aXRob3V0IGZpbmRpbmcgYW4gSUQgbWF0Y2guXG5cdCAgICAg
dHJ1ZSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ1VuYWJsZSB0byBmaW5kIGVsZW1lbnQg
d2l0aCBJRCAlcy4nLCBjaGlsZElEKSA6IF9wcm9kSW52YXJpYW50KCczMicsIGNoaWxkSUQpIDog
dm9pZCAwO1xuXHQgIH1cblx0ICBpbnN0Ll9mbGFncyB8PSBGbGFncy5oYXNDYWNoZWRDaGlsZE5v
ZGVzO1xuXHR9XG5cdFxuXHQvKipcblx0ICogR2l2ZW4gYSBET00gbm9kZSwgcmV0dXJuIHRoZSBj
bG9zZXN0IFJlYWN0RE9NQ29tcG9uZW50IG9yXG5cdCAqIFJlYWN0RE9NVGV4dENvbXBvbmVudCBp
bnN0YW5jZSBhbmNlc3Rvci5cblx0ICovXG5cdGZ1bmN0aW9uIGdldENsb3Nlc3RJbnN0YW5jZUZy
b21Ob2RlKG5vZGUpIHtcblx0ICBpZiAobm9kZVtpbnRlcm5hbEluc3RhbmNlS2V5XSkge1xuXHQg
ICAgcmV0dXJuIG5vZGVbaW50ZXJuYWxJbnN0YW5jZUtleV07XG5cdCAgfVxuXHRcblx0ICAvLyBX
YWxrIHVwIHRoZSB0cmVlIHVudGlsIHdlIGZpbmQgYW4gYW5jZXN0b3Igd2hvc2UgaW5zdGFuY2Ug
d2UgaGF2ZSBjYWNoZWQuXG5cdCAgdmFyIHBhcmVudHMgPSBbXTtcblx0ICB3aGlsZSAoIW5vZGVb
aW50ZXJuYWxJbnN0YW5jZUtleV0pIHtcblx0ICAgIHBhcmVudHMucHVzaChub2RlKTtcblx0ICAg
IGlmIChub2RlLnBhcmVudE5vZGUpIHtcblx0ICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTtc
blx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIC8vIFRvcCBvZiB0aGUgdHJlZS4gVGhpcyBub2RlIG11
c3Qgbm90IGJlIHBhcnQgb2YgYSBSZWFjdCB0cmVlIChvciBpc1xuXHQgICAgICAvLyB1bm1vdW50
ZWQsIHBvdGVudGlhbGx5KS5cblx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICB9XG5cdCAgfVxu
XHRcblx0ICB2YXIgY2xvc2VzdDtcblx0ICB2YXIgaW5zdDtcblx0ICBmb3IgKDsgbm9kZSAmJiAo
aW5zdCA9IG5vZGVbaW50ZXJuYWxJbnN0YW5jZUtleV0pOyBub2RlID0gcGFyZW50cy5wb3AoKSkg
e1xuXHQgICAgY2xvc2VzdCA9IGluc3Q7XG5cdCAgICBpZiAocGFyZW50cy5sZW5ndGgpIHtcblx0
ICAgICAgcHJlY2FjaGVDaGlsZE5vZGVzKGluc3QsIG5vZGUpO1xuXHQgICAgfVxuXHQgIH1cblx0
XG5cdCAgcmV0dXJuIGNsb3Nlc3Q7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBHaXZlbiBhIERPTSBu
b2RlLCByZXR1cm4gdGhlIFJlYWN0RE9NQ29tcG9uZW50IG9yIFJlYWN0RE9NVGV4dENvbXBvbmVu
dFxuXHQgKiBpbnN0YW5jZSwgb3IgbnVsbCBpZiB0aGUgbm9kZSB3YXMgbm90IHJlbmRlcmVkIGJ5
IHRoaXMgUmVhY3QuXG5cdCAqL1xuXHRmdW5jdGlvbiBnZXRJbnN0YW5jZUZyb21Ob2RlKG5vZGUp
IHtcblx0ICB2YXIgaW5zdCA9IGdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKG5vZGUpO1xuXHQg
IGlmIChpbnN0ICE9IG51bGwgJiYgaW5zdC5faG9zdE5vZGUgPT09IG5vZGUpIHtcblx0ICAgIHJl
dHVybiBpbnN0O1xuXHQgIH0gZWxzZSB7XG5cdCAgICByZXR1cm4gbnVsbDtcblx0ICB9XG5cdH1c
blx0XG5cdC8qKlxuXHQgKiBHaXZlbiBhIFJlYWN0RE9NQ29tcG9uZW50IG9yIFJlYWN0RE9NVGV4
dENvbXBvbmVudCwgcmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nXG5cdCAqIERPTSBub2RlLlxuXHQg
Ki9cblx0ZnVuY3Rpb24gZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KSB7XG5cdCAgLy8gV2l0aG91
dCB0aGlzIGZpcnN0IGludmFyaWFudCwgcGFzc2luZyBhIG5vbi1ET00tY29tcG9uZW50IHRyaWdn
ZXJzIHRoZSBuZXh0XG5cdCAgLy8gaW52YXJpYW50IGZvciBhIG1pc3NpbmcgcGFyZW50LCB3aGlj
aCBpcyBzdXBlciBjb25mdXNpbmcuXG5cdCAgIShpbnN0Ll9ob3N0Tm9kZSAhPT0gdW5kZWZpbmVk
KSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ2dldE5vZGVGcm9tSW5zdGFuY2U6IEludmFs
aWQgYXJndW1lbnQuJykgOiBfcHJvZEludmFyaWFudCgnMzMnKSA6IHZvaWQgMDtcblx0XG5cdCAg
aWYgKGluc3QuX2hvc3ROb2RlKSB7XG5cdCAgICByZXR1cm4gaW5zdC5faG9zdE5vZGU7XG5cdCAg
fVxuXHRcblx0ICAvLyBXYWxrIHVwIHRoZSB0cmVlIHVudGlsIHdlIGZpbmQgYW4gYW5jZXN0b3Ig
d2hvc2UgRE9NIG5vZGUgd2UgaGF2ZSBjYWNoZWQuXG5cdCAgdmFyIHBhcmVudHMgPSBbXTtcblx0
ICB3aGlsZSAoIWluc3QuX2hvc3ROb2RlKSB7XG5cdCAgICBwYXJlbnRzLnB1c2goaW5zdCk7XG5c
dCAgICAhaW5zdC5faG9zdFBhcmVudCA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0
IERPTSB0cmVlIHJvb3Qgc2hvdWxkIGFsd2F5cyBoYXZlIGEgbm9kZSByZWZlcmVuY2UuJykgOiBf
cHJvZEludmFyaWFudCgnMzQnKSA6IHZvaWQgMDtcblx0ICAgIGluc3QgPSBpbnN0Ll9ob3N0UGFy
ZW50O1xuXHQgIH1cblx0XG5cdCAgLy8gTm93IHBhcmVudHMgY29udGFpbnMgZWFjaCBhbmNlc3Rv
ciB0aGF0IGRvZXMgKm5vdCogaGF2ZSBhIGNhY2hlZCBuYXRpdmVcblx0ICAvLyBub2RlLCBhbmQg
YGluc3RgIGlzIHRoZSBkZWVwZXN0IGFuY2VzdG9yIHRoYXQgZG9lcy5cblx0ICBmb3IgKDsgcGFy
ZW50cy5sZW5ndGg7IGluc3QgPSBwYXJlbnRzLnBvcCgpKSB7XG5cdCAgICBwcmVjYWNoZUNoaWxk
Tm9kZXMoaW5zdCwgaW5zdC5faG9zdE5vZGUpO1xuXHQgIH1cblx0XG5cdCAgcmV0dXJuIGluc3Qu
X2hvc3ROb2RlO1xuXHR9XG5cdFxuXHR2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0ge1xuXHQg
IGdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlOiBnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZSxc
blx0ICBnZXRJbnN0YW5jZUZyb21Ob2RlOiBnZXRJbnN0YW5jZUZyb21Ob2RlLFxuXHQgIGdldE5v
ZGVGcm9tSW5zdGFuY2U6IGdldE5vZGVGcm9tSW5zdGFuY2UsXG5cdCAgcHJlY2FjaGVDaGlsZE5v
ZGVzOiBwcmVjYWNoZUNoaWxkTm9kZXMsXG5cdCAgcHJlY2FjaGVOb2RlOiBwcmVjYWNoZU5vZGUs
XG5cdCAgdW5jYWNoZU5vZGU6IHVuY2FjaGVOb2RlXG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0
cyA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZTtcblxuLyoqKi8gfSxcbi8qIDYgKi9cbi8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgKGMpIDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0
ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIg
Y2FuVXNlRE9NID0gISEodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRv
Y3VtZW50ICYmIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcblx0XG5cdC8qKlxuXHQg
KiBTaW1wbGUsIGxpZ2h0d2VpZ2h0IG1vZHVsZSBhc3Npc3Rpbmcgd2l0aCB0aGUgZGV0ZWN0aW9u
IGFuZCBjb250ZXh0IG9mXG5cdCAqIFdvcmtlci4gSGVscHMgYXZvaWQgY2lyY3VsYXIgZGVwZW5k
ZW5jaWVzIGFuZCBhbGxvd3MgY29kZSB0byByZWFzb24gYWJvdXRcblx0ICogd2hldGhlciBvciBu
b3QgdGhleSBhcmUgaW4gYSBXb3JrZXIsIGV2ZW4gaWYgdGhleSBuZXZlciBpbmNsdWRlIHRoZSBt
YWluXG5cdCAqIGBSZWFjdFdvcmtlcmAgZGVwZW5kZW5jeS5cblx0ICovXG5cdHZhciBFeGVjdXRp
b25FbnZpcm9ubWVudCA9IHtcblx0XG5cdCAgY2FuVXNlRE9NOiBjYW5Vc2VET00sXG5cdFxuXHQg
IGNhblVzZVdvcmtlcnM6IHR5cGVvZiBXb3JrZXIgIT09ICd1bmRlZmluZWQnLFxuXHRcblx0ICBj
YW5Vc2VFdmVudExpc3RlbmVyczogY2FuVXNlRE9NICYmICEhKHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyIHx8IHdpbmRvdy5hdHRhY2hFdmVudCksXG5cdFxuXHQgIGNhblVzZVZpZXdwb3J0OiBjYW5V
c2VET00gJiYgISF3aW5kb3cuc2NyZWVuLFxuXHRcblx0ICBpc0luV29ya2VyOiAhY2FuVXNlRE9N
IC8vIEZvciBub3csIHRoaXMgaXMgdHJ1ZSAtIG1pZ2h0IGNoYW5nZSBpbiB0aGUgZnV0dXJlLlxu
XHRcblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gRXhlY3V0aW9uRW52aXJvbm1lbnQ7XG5c
bi8qKiovIH0sXG4vKiA3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxu
XHRcInVzZSBzdHJpY3RcIjtcblx0XG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cblx0ICpcblx0ICogXG5cdCAqL1xuXHRcblx0ZnVuY3Rpb24gbWFrZUVtcHR5RnVuY3Rp
b24oYXJnKSB7XG5cdCAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcblx0ICAgIHJldHVybiBhcmc7XG5c
dCAgfTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFRoaXMgZnVuY3Rpb24gYWNjZXB0cyBhbmQgZGlz
Y2FyZHMgaW5wdXRzOyBpdCBoYXMgbm8gc2lkZSBlZmZlY3RzLiBUaGlzIGlzXG5cdCAqIHByaW1h
cmlseSB1c2VmdWwgaWRpb21hdGljYWxseSBmb3Igb3ZlcnJpZGFibGUgZnVuY3Rpb24gZW5kcG9p
bnRzIHdoaWNoXG5cdCAqIGFsd2F5cyBuZWVkIHRvIGJlIGNhbGxhYmxlLCBzaW5jZSBKUyBsYWNr
cyBhIG51bGwtY2FsbCBpZGlvbSBhbGEgQ29jb2EuXG5cdCAqL1xuXHR2YXIgZW1wdHlGdW5jdGlv
biA9IGZ1bmN0aW9uIGVtcHR5RnVuY3Rpb24oKSB7fTtcblx0XG5cdGVtcHR5RnVuY3Rpb24udGhh
dFJldHVybnMgPSBtYWtlRW1wdHlGdW5jdGlvbjtcblx0ZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJu
c0ZhbHNlID0gbWFrZUVtcHR5RnVuY3Rpb24oZmFsc2UpO1xuXHRlbXB0eUZ1bmN0aW9uLnRoYXRS
ZXR1cm5zVHJ1ZSA9IG1ha2VFbXB0eUZ1bmN0aW9uKHRydWUpO1xuXHRlbXB0eUZ1bmN0aW9uLnRo
YXRSZXR1cm5zTnVsbCA9IG1ha2VFbXB0eUZ1bmN0aW9uKG51bGwpO1xuXHRlbXB0eUZ1bmN0aW9u
LnRoYXRSZXR1cm5zVGhpcyA9IGZ1bmN0aW9uICgpIHtcblx0ICByZXR1cm4gdGhpcztcblx0fTtc
blx0ZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0FyZ3VtZW50ID0gZnVuY3Rpb24gKGFyZykge1xu
XHQgIHJldHVybiBhcmc7XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGVtcHR5RnVuY3Rp
b247XG5cbi8qKiovIH0sXG4vKiA4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMs
IF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTYtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cblx0ICpcblx0ICogXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0Ly8g
VHJ1c3QgdGhlIGRldmVsb3BlciB0byBvbmx5IHVzZSBSZWFjdEluc3RydW1lbnRhdGlvbiB3aXRo
IGEgX19ERVZfXyBjaGVja1xuXHRcblx0dmFyIGRlYnVnVG9vbCA9IG51bGw7XG5cdFxuXHRpZiAo
ZmFsc2UpIHtcblx0ICB2YXIgUmVhY3REZWJ1Z1Rvb2wgPSByZXF1aXJlKCcuL1JlYWN0RGVidWdU
b29sJyk7XG5cdCAgZGVidWdUb29sID0gUmVhY3REZWJ1Z1Rvb2w7XG5cdH1cblx0XG5cdG1vZHVs
ZS5leHBvcnRzID0geyBkZWJ1Z1Rvb2w6IGRlYnVnVG9vbCB9O1xuXG4vKioqLyB9LFxuLyogOSAq
L1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7
XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5c
dCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRc
blx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygzKSxcblx0ICAgIF9hc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRc
blx0dmFyIENhbGxiYWNrUXVldWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU5KTtcblx0dmFyIFBv
b2xlZENsYXNzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7XG5cdHZhciBSZWFjdEZlYXR1cmVG
bGFncyA9IF9fd2VicGFja19yZXF1aXJlX18oNjQpO1xuXHR2YXIgUmVhY3RSZWNvbmNpbGVyID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxNik7XG5cdHZhciBUcmFuc2FjdGlvbiA9IF9fd2VicGFja19y
ZXF1aXJlX18oMjcpO1xuXHRcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18o
MSk7XG5cdFxuXHR2YXIgZGlydHlDb21wb25lbnRzID0gW107XG5cdHZhciB1cGRhdGVCYXRjaE51
bWJlciA9IDA7XG5cdHZhciBhc2FwQ2FsbGJhY2tRdWV1ZSA9IENhbGxiYWNrUXVldWUuZ2V0UG9v
bGVkKCk7XG5cdHZhciBhc2FwRW5xdWV1ZWQgPSBmYWxzZTtcblx0XG5cdHZhciBiYXRjaGluZ1N0
cmF0ZWd5ID0gbnVsbDtcblx0XG5cdGZ1bmN0aW9uIGVuc3VyZUluamVjdGVkKCkge1xuXHQgICEo
UmVhY3RVcGRhdGVzLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24gJiYgYmF0Y2hpbmdTdHJhdGVn
eSkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVwZGF0ZXM6IG11c3QgaW5qZWN0
IGEgcmVjb25jaWxlIHRyYW5zYWN0aW9uIGNsYXNzIGFuZCBiYXRjaGluZyBzdHJhdGVneScpIDog
X3Byb2RJbnZhcmlhbnQoJzEyMycpIDogdm9pZCAwO1xuXHR9XG5cdFxuXHR2YXIgTkVTVEVEX1VQ
REFURVMgPSB7XG5cdCAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gKCkge1xuXHQgICAgdGhpcy5kaXJ0
eUNvbXBvbmVudHNMZW5ndGggPSBkaXJ0eUNvbXBvbmVudHMubGVuZ3RoO1xuXHQgIH0sXG5cdCAg
Y2xvc2U6IGZ1bmN0aW9uICgpIHtcblx0ICAgIGlmICh0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0
aCAhPT0gZGlydHlDb21wb25lbnRzLmxlbmd0aCkge1xuXHQgICAgICAvLyBBZGRpdGlvbmFsIHVw
ZGF0ZXMgd2VyZSBlbnF1ZXVlZCBieSBjb21wb25lbnREaWRVcGRhdGUgaGFuZGxlcnMgb3Jcblx0
ICAgICAgLy8gc2ltaWxhcjsgYmVmb3JlIG91ciBvd24gVVBEQVRFX1FVRVVFSU5HIHdyYXBwZXIg
Y2xvc2VzLCB3ZSB3YW50IHRvIHJ1blxuXHQgICAgICAvLyB0aGVzZSBuZXcgdXBkYXRlcyBzbyB0
aGF0IGlmIEEncyBjb21wb25lbnREaWRVcGRhdGUgY2FsbHMgc2V0U3RhdGUgb25cblx0ICAgICAg
Ly8gQiwgQiB3aWxsIHVwZGF0ZSBiZWZvcmUgdGhlIGNhbGxiYWNrIEEncyB1cGRhdGVyIHByb3Zp
ZGVkIHdoZW4gY2FsbGluZ1xuXHQgICAgICAvLyBzZXRTdGF0ZS5cblx0ICAgICAgZGlydHlDb21w
b25lbnRzLnNwbGljZSgwLCB0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aCk7XG5cdCAgICAgIGZs
dXNoQmF0Y2hlZFVwZGF0ZXMoKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIGRpcnR5Q29tcG9u
ZW50cy5sZW5ndGggPSAwO1xuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5cdHZhciBVUERBVEVf
UVVFVUVJTkcgPSB7XG5cdCAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gKCkge1xuXHQgICAgdGhpcy5j
YWxsYmFja1F1ZXVlLnJlc2V0KCk7XG5cdCAgfSxcblx0ICBjbG9zZTogZnVuY3Rpb24gKCkge1xu
XHQgICAgdGhpcy5jYWxsYmFja1F1ZXVlLm5vdGlmeUFsbCgpO1xuXHQgIH1cblx0fTtcblx0XG5c
dHZhciBUUkFOU0FDVElPTl9XUkFQUEVSUyA9IFtORVNURURfVVBEQVRFUywgVVBEQVRFX1FVRVVF
SU5HXTtcblx0XG5cdGZ1bmN0aW9uIFJlYWN0VXBkYXRlc0ZsdXNoVHJhbnNhY3Rpb24oKSB7XG5c
dCAgdGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpO1xuXHQgIHRoaXMuZGlydHlDb21wb25l
bnRzTGVuZ3RoID0gbnVsbDtcblx0ICB0aGlzLmNhbGxiYWNrUXVldWUgPSBDYWxsYmFja1F1ZXVl
LmdldFBvb2xlZCgpO1xuXHQgIHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24gPSBSZWFjdFVwZGF0
ZXMuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5nZXRQb29sZWQoXG5cdCAgLyogdXNlQ3JlYXRl
RWxlbWVudCAqL3RydWUpO1xuXHR9XG5cdFxuXHRfYXNzaWduKFJlYWN0VXBkYXRlc0ZsdXNoVHJh
bnNhY3Rpb24ucHJvdG90eXBlLCBUcmFuc2FjdGlvbiwge1xuXHQgIGdldFRyYW5zYWN0aW9uV3Jh
cHBlcnM6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHJldHVybiBUUkFOU0FDVElPTl9XUkFQUEVSUztc
blx0ICB9LFxuXHRcblx0ICBkZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7XG5cdCAgICB0aGlzLmRp
cnR5Q29tcG9uZW50c0xlbmd0aCA9IG51bGw7XG5cdCAgICBDYWxsYmFja1F1ZXVlLnJlbGVhc2Uo
dGhpcy5jYWxsYmFja1F1ZXVlKTtcblx0ICAgIHRoaXMuY2FsbGJhY2tRdWV1ZSA9IG51bGw7XG5c
dCAgICBSZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5yZWxlYXNlKHRoaXMu
cmVjb25jaWxlVHJhbnNhY3Rpb24pO1xuXHQgICAgdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbiA9
IG51bGw7XG5cdCAgfSxcblx0XG5cdCAgcGVyZm9ybTogZnVuY3Rpb24gKG1ldGhvZCwgc2NvcGUs
IGEpIHtcblx0ICAgIC8vIEVzc2VudGlhbGx5IGNhbGxzIGB0aGlzLnJlY29uY2lsZVRyYW5zYWN0
aW9uLnBlcmZvcm0obWV0aG9kLCBzY29wZSwgYSlgXG5cdCAgICAvLyB3aXRoIHRoaXMgdHJhbnNh
Y3Rpb24ncyB3cmFwcGVycyBhcm91bmQgaXQuXG5cdCAgICByZXR1cm4gVHJhbnNhY3Rpb24ucGVy
Zm9ybS5jYWxsKHRoaXMsIHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24ucGVyZm9ybSwgdGhpcy5y
ZWNvbmNpbGVUcmFuc2FjdGlvbiwgbWV0aG9kLCBzY29wZSwgYSk7XG5cdCAgfVxuXHR9KTtcblx0
XG5cdFBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9u
KTtcblx0XG5cdGZ1bmN0aW9uIGJhdGNoZWRVcGRhdGVzKGNhbGxiYWNrLCBhLCBiLCBjLCBkLCBl
KSB7XG5cdCAgZW5zdXJlSW5qZWN0ZWQoKTtcblx0ICByZXR1cm4gYmF0Y2hpbmdTdHJhdGVneS5i
YXRjaGVkVXBkYXRlcyhjYWxsYmFjaywgYSwgYiwgYywgZCwgZSk7XG5cdH1cblx0XG5cdC8qKlxu
XHQgKiBBcnJheSBjb21wYXJhdG9yIGZvciBSZWFjdENvbXBvbmVudHMgYnkgbW91bnQgb3JkZXJp
bmcuXG5cdCAqXG5cdCAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGMxIGZpcnN0IGNvbXBvbmVu
dCB5b3UncmUgY29tcGFyaW5nXG5cdCAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGMyIHNlY29u
ZCBjb21wb25lbnQgeW91J3JlIGNvbXBhcmluZ1xuXHQgKiBAcmV0dXJuIHtudW1iZXJ9IFJldHVy
biB2YWx1ZSB1c2FibGUgYnkgQXJyYXkucHJvdG90eXBlLnNvcnQoKS5cblx0ICovXG5cdGZ1bmN0
aW9uIG1vdW50T3JkZXJDb21wYXJhdG9yKGMxLCBjMikge1xuXHQgIHJldHVybiBjMS5fbW91bnRP
cmRlciAtIGMyLl9tb3VudE9yZGVyO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBydW5CYXRjaGVkVXBk
YXRlcyh0cmFuc2FjdGlvbikge1xuXHQgIHZhciBsZW4gPSB0cmFuc2FjdGlvbi5kaXJ0eUNvbXBv
bmVudHNMZW5ndGg7XG5cdCAgIShsZW4gPT09IGRpcnR5Q29tcG9uZW50cy5sZW5ndGgpID8gIGZh
bHNlID8gaW52YXJpYW50KGZhbHNlLCAnRXhwZWN0ZWQgZmx1c2ggdHJhbnNhY3Rpb25cXCdzIHN0
b3JlZCBkaXJ0eS1jb21wb25lbnRzIGxlbmd0aCAoJXMpIHRvIG1hdGNoIGRpcnR5LWNvbXBvbmVu
dHMgYXJyYXkgbGVuZ3RoICglcykuJywgbGVuLCBkaXJ0eUNvbXBvbmVudHMubGVuZ3RoKSA6IF9w
cm9kSW52YXJpYW50KCcxMjQnLCBsZW4sIGRpcnR5Q29tcG9uZW50cy5sZW5ndGgpIDogdm9pZCAw
O1xuXHRcblx0ICAvLyBTaW5jZSByZWNvbmNpbGluZyBhIGNvbXBvbmVudCBoaWdoZXIgaW4gdGhl
IG93bmVyIGhpZXJhcmNoeSB1c3VhbGx5IChub3Rcblx0ICAvLyBhbHdheXMgLS0gc2VlIHNob3Vs
ZENvbXBvbmVudFVwZGF0ZSgpKSB3aWxsIHJlY29uY2lsZSBjaGlsZHJlbiwgcmVjb25jaWxlXG5c
dCAgLy8gdGhlbSBiZWZvcmUgdGhlaXIgY2hpbGRyZW4gYnkgc29ydGluZyB0aGUgYXJyYXkuXG5c
dCAgZGlydHlDb21wb25lbnRzLnNvcnQobW91bnRPcmRlckNvbXBhcmF0b3IpO1xuXHRcblx0ICAv
LyBBbnkgdXBkYXRlcyBlbnF1ZXVlZCB3aGlsZSByZWNvbmNpbGluZyBtdXN0IGJlIHBlcmZvcm1l
ZCBhZnRlciB0aGlzIGVudGlyZVxuXHQgIC8vIGJhdGNoLiBPdGhlcndpc2UsIGlmIGRpcnR5Q29t
cG9uZW50cyBpcyBbQSwgQl0gd2hlcmUgQSBoYXMgY2hpbGRyZW4gQiBhbmRcblx0ICAvLyBDLCBC
IGNvdWxkIHVwZGF0ZSB0d2ljZSBpbiBhIHNpbmdsZSBiYXRjaCBpZiBDJ3MgcmVuZGVyIGVucXVl
dWVzIGFuIHVwZGF0ZVxuXHQgIC8vIHRvIEIgKHNpbmNlIEIgd291bGQgaGF2ZSBhbHJlYWR5IHVw
ZGF0ZWQsIHdlIHNob3VsZCBza2lwIGl0LCBhbmQgdGhlIG9ubHlcblx0ICAvLyB3YXkgd2UgY2Fu
IGtub3cgdG8gZG8gc28gaXMgYnkgY2hlY2tpbmcgdGhlIGJhdGNoIGNvdW50ZXIpLlxuXHQgIHVw
ZGF0ZUJhdGNoTnVtYmVyKys7XG5cdFxuXHQgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKysp
IHtcblx0ICAgIC8vIElmIGEgY29tcG9uZW50IGlzIHVubW91bnRlZCBiZWZvcmUgcGVuZGluZyBj
aGFuZ2VzIGFwcGx5LCBpdCB3aWxsIHN0aWxsXG5cdCAgICAvLyBiZSBoZXJlLCBidXQgd2UgYXNz
dW1lIHRoYXQgaXQgaGFzIGNsZWFyZWQgaXRzIF9wZW5kaW5nQ2FsbGJhY2tzIGFuZFxuXHQgICAg
Ly8gdGhhdCBwZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkgaXMgYSBub29wLlxuXHQgICAgdmFyIGNv
bXBvbmVudCA9IGRpcnR5Q29tcG9uZW50c1tpXTtcblx0XG5cdCAgICAvLyBJZiBwZXJmb3JtVXBk
YXRlSWZOZWNlc3NhcnkgaGFwcGVucyB0byBlbnF1ZXVlIGFueSBuZXcgdXBkYXRlcywgd2Vcblx0
ICAgIC8vIHNob3VsZG4ndCBleGVjdXRlIHRoZSBjYWxsYmFja3MgdW50aWwgdGhlIG5leHQgcmVu
ZGVyIGhhcHBlbnMsIHNvXG5cdCAgICAvLyBzdGFzaCB0aGUgY2FsbGJhY2tzIGZpcnN0XG5cdCAg
ICB2YXIgY2FsbGJhY2tzID0gY29tcG9uZW50Ll9wZW5kaW5nQ2FsbGJhY2tzO1xuXHQgICAgY29t
cG9uZW50Ll9wZW5kaW5nQ2FsbGJhY2tzID0gbnVsbDtcblx0XG5cdCAgICB2YXIgbWFya2VyTmFt
ZTtcblx0ICAgIGlmIChSZWFjdEZlYXR1cmVGbGFncy5sb2dUb3BMZXZlbFJlbmRlcnMpIHtcblx0
ICAgICAgdmFyIG5hbWVkQ29tcG9uZW50ID0gY29tcG9uZW50O1xuXHQgICAgICAvLyBEdWNrIHR5
cGUgVG9wTGV2ZWxXcmFwcGVyLiBUaGlzIGlzIHByb2JhYmx5IGFsd2F5cyB0cnVlLlxuXHQgICAg
ICBpZiAoY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC50eXBlLmlzUmVhY3RUb3BMZXZlbFdyYXBw
ZXIpIHtcblx0ICAgICAgICBuYW1lZENvbXBvbmVudCA9IGNvbXBvbmVudC5fcmVuZGVyZWRDb21w
b25lbnQ7XG5cdCAgICAgIH1cblx0ICAgICAgbWFya2VyTmFtZSA9ICdSZWFjdCB1cGRhdGU6ICcg
KyBuYW1lZENvbXBvbmVudC5nZXROYW1lKCk7XG5cdCAgICAgIGNvbnNvbGUudGltZShtYXJrZXJO
YW1lKTtcblx0ICAgIH1cblx0XG5cdCAgICBSZWFjdFJlY29uY2lsZXIucGVyZm9ybVVwZGF0ZUlm
TmVjZXNzYXJ5KGNvbXBvbmVudCwgdHJhbnNhY3Rpb24ucmVjb25jaWxlVHJhbnNhY3Rpb24sIHVw
ZGF0ZUJhdGNoTnVtYmVyKTtcblx0XG5cdCAgICBpZiAobWFya2VyTmFtZSkge1xuXHQgICAgICBj
b25zb2xlLnRpbWVFbmQobWFya2VyTmFtZSk7XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKGNhbGxi
YWNrcykge1xuXHQgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGNhbGxiYWNrcy5sZW5ndGg7IGor
Kykge1xuXHQgICAgICAgIHRyYW5zYWN0aW9uLmNhbGxiYWNrUXVldWUuZW5xdWV1ZShjYWxsYmFj
a3Nbal0sIGNvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpKTtcblx0ICAgICAgfVxuXHQgICAg
fVxuXHQgIH1cblx0fVxuXHRcblx0dmFyIGZsdXNoQmF0Y2hlZFVwZGF0ZXMgPSBmdW5jdGlvbiAo
KSB7XG5cdCAgLy8gUmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbidzIHdyYXBwZXJzIHdpbGwg
Y2xlYXIgdGhlIGRpcnR5Q29tcG9uZW50c1xuXHQgIC8vIGFycmF5IGFuZCBwZXJmb3JtIGFueSB1
cGRhdGVzIGVucXVldWVkIGJ5IG1vdW50LXJlYWR5IGhhbmRsZXJzIChpLmUuLFxuXHQgIC8vIGNv
bXBvbmVudERpZFVwZGF0ZSkgYnV0IHdlIG5lZWQgdG8gY2hlY2sgaGVyZSB0b28gaW4gb3JkZXIg
dG8gY2F0Y2hcblx0ICAvLyB1cGRhdGVzIGVucXVldWVkIGJ5IHNldFN0YXRlIGNhbGxiYWNrcyBh
bmQgYXNhcCBjYWxscy5cblx0ICB3aGlsZSAoZGlydHlDb21wb25lbnRzLmxlbmd0aCB8fCBhc2Fw
RW5xdWV1ZWQpIHtcblx0ICAgIGlmIChkaXJ0eUNvbXBvbmVudHMubGVuZ3RoKSB7XG5cdCAgICAg
IHZhciB0cmFuc2FjdGlvbiA9IFJlYWN0VXBkYXRlc0ZsdXNoVHJhbnNhY3Rpb24uZ2V0UG9vbGVk
KCk7XG5cdCAgICAgIHRyYW5zYWN0aW9uLnBlcmZvcm0ocnVuQmF0Y2hlZFVwZGF0ZXMsIG51bGws
IHRyYW5zYWN0aW9uKTtcblx0ICAgICAgUmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbi5yZWxl
YXNlKHRyYW5zYWN0aW9uKTtcblx0ICAgIH1cblx0XG5cdCAgICBpZiAoYXNhcEVucXVldWVkKSB7
XG5cdCAgICAgIGFzYXBFbnF1ZXVlZCA9IGZhbHNlO1xuXHQgICAgICB2YXIgcXVldWUgPSBhc2Fw
Q2FsbGJhY2tRdWV1ZTtcblx0ICAgICAgYXNhcENhbGxiYWNrUXVldWUgPSBDYWxsYmFja1F1ZXVl
LmdldFBvb2xlZCgpO1xuXHQgICAgICBxdWV1ZS5ub3RpZnlBbGwoKTtcblx0ICAgICAgQ2FsbGJh
Y2tRdWV1ZS5yZWxlYXNlKHF1ZXVlKTtcblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdFxuXHQvKipc
blx0ICogTWFyayBhIGNvbXBvbmVudCBhcyBuZWVkaW5nIGEgcmVyZW5kZXIsIGFkZGluZyBhbiBv
cHRpb25hbCBjYWxsYmFjayB0byBhXG5cdCAqIGxpc3Qgb2YgZnVuY3Rpb25zIHdoaWNoIHdpbGwg
YmUgZXhlY3V0ZWQgb25jZSB0aGUgcmVyZW5kZXIgb2NjdXJzLlxuXHQgKi9cblx0ZnVuY3Rpb24g
ZW5xdWV1ZVVwZGF0ZShjb21wb25lbnQpIHtcblx0ICBlbnN1cmVJbmplY3RlZCgpO1xuXHRcblx0
ICAvLyBWYXJpb3VzIHBhcnRzIG9mIG91ciBjb2RlIChzdWNoIGFzIFJlYWN0Q29tcG9zaXRlQ29t
cG9uZW50J3Ncblx0ICAvLyBfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KSBhc3N1bWUgdGhhdCBj
YWxscyB0byByZW5kZXIgYXJlbid0IG5lc3RlZDtcblx0ICAvLyB2ZXJpZnkgdGhhdCB0aGF0J3Mg
dGhlIGNhc2UuIChUaGlzIGlzIGNhbGxlZCBieSBlYWNoIHRvcC1sZXZlbCB1cGRhdGVcblx0ICAv
LyBmdW5jdGlvbiwgbGlrZSBzZXRTdGF0ZSwgZm9yY2VVcGRhdGUsIGV0Yy47IGNyZWF0aW9uIGFu
ZFxuXHQgIC8vIGRlc3RydWN0aW9uIG9mIHRvcC1sZXZlbCBjb21wb25lbnRzIGlzIGd1YXJkZWQg
aW4gUmVhY3RNb3VudC4pXG5cdFxuXHQgIGlmICghYmF0Y2hpbmdTdHJhdGVneS5pc0JhdGNoaW5n
VXBkYXRlcykge1xuXHQgICAgYmF0Y2hpbmdTdHJhdGVneS5iYXRjaGVkVXBkYXRlcyhlbnF1ZXVl
VXBkYXRlLCBjb21wb25lbnQpO1xuXHQgICAgcmV0dXJuO1xuXHQgIH1cblx0XG5cdCAgZGlydHlD
b21wb25lbnRzLnB1c2goY29tcG9uZW50KTtcblx0ICBpZiAoY29tcG9uZW50Ll91cGRhdGVCYXRj
aE51bWJlciA9PSBudWxsKSB7XG5cdCAgICBjb21wb25lbnQuX3VwZGF0ZUJhdGNoTnVtYmVyID0g
dXBkYXRlQmF0Y2hOdW1iZXIgKyAxO1xuXHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIEVucXVl
dWUgYSBjYWxsYmFjayB0byBiZSBydW4gYXQgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBiYXRjaGlu
ZyBjeWNsZS4gVGhyb3dzXG5cdCAqIGlmIG5vIHVwZGF0ZXMgYXJlIGN1cnJlbnRseSBiZWluZyBw
ZXJmb3JtZWQuXG5cdCAqL1xuXHRmdW5jdGlvbiBhc2FwKGNhbGxiYWNrLCBjb250ZXh0KSB7XG5c
dCAgIWJhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXMgPyAgZmFsc2UgPyBpbnZhcmlh
bnQoZmFsc2UsICdSZWFjdFVwZGF0ZXMuYXNhcDogQ2FuXFwndCBlbnF1ZXVlIGFuIGFzYXAgY2Fs
bGJhY2sgaW4gYSBjb250ZXh0IHdoZXJldXBkYXRlcyBhcmUgbm90IGJlaW5nIGJhdGNoZWQuJykg
OiBfcHJvZEludmFyaWFudCgnMTI1JykgOiB2b2lkIDA7XG5cdCAgYXNhcENhbGxiYWNrUXVldWUu
ZW5xdWV1ZShjYWxsYmFjaywgY29udGV4dCk7XG5cdCAgYXNhcEVucXVldWVkID0gdHJ1ZTtcblx0
fVxuXHRcblx0dmFyIFJlYWN0VXBkYXRlc0luamVjdGlvbiA9IHtcblx0ICBpbmplY3RSZWNvbmNp
bGVUcmFuc2FjdGlvbjogZnVuY3Rpb24gKFJlY29uY2lsZVRyYW5zYWN0aW9uKSB7XG5cdCAgICAh
UmVjb25jaWxlVHJhbnNhY3Rpb24gPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVw
ZGF0ZXM6IG11c3QgcHJvdmlkZSBhIHJlY29uY2lsZSB0cmFuc2FjdGlvbiBjbGFzcycpIDogX3By
b2RJbnZhcmlhbnQoJzEyNicpIDogdm9pZCAwO1xuXHQgICAgUmVhY3RVcGRhdGVzLlJlYWN0UmVj
b25jaWxlVHJhbnNhY3Rpb24gPSBSZWNvbmNpbGVUcmFuc2FjdGlvbjtcblx0ICB9LFxuXHRcblx0
ICBpbmplY3RCYXRjaGluZ1N0cmF0ZWd5OiBmdW5jdGlvbiAoX2JhdGNoaW5nU3RyYXRlZ3kpIHtc
blx0ICAgICFfYmF0Y2hpbmdTdHJhdGVneSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ1Jl
YWN0VXBkYXRlczogbXVzdCBwcm92aWRlIGEgYmF0Y2hpbmcgc3RyYXRlZ3knKSA6IF9wcm9kSW52
YXJpYW50KCcxMjcnKSA6IHZvaWQgMDtcblx0ICAgICEodHlwZW9mIF9iYXRjaGluZ1N0cmF0ZWd5
LmJhdGNoZWRVcGRhdGVzID09PSAnZnVuY3Rpb24nKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxz
ZSwgJ1JlYWN0VXBkYXRlczogbXVzdCBwcm92aWRlIGEgYmF0Y2hlZFVwZGF0ZXMoKSBmdW5jdGlv
bicpIDogX3Byb2RJbnZhcmlhbnQoJzEyOCcpIDogdm9pZCAwO1xuXHQgICAgISh0eXBlb2YgX2Jh
dGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXMgPT09ICdib29sZWFuJykgPyAgZmFsc2Ug
PyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVwZGF0ZXM6IG11c3QgcHJvdmlkZSBhbiBpc0JhdGNo
aW5nVXBkYXRlcyBib29sZWFuIGF0dHJpYnV0ZScpIDogX3Byb2RJbnZhcmlhbnQoJzEyOScpIDog
dm9pZCAwO1xuXHQgICAgYmF0Y2hpbmdTdHJhdGVneSA9IF9iYXRjaGluZ1N0cmF0ZWd5O1xuXHQg
IH1cblx0fTtcblx0XG5cdHZhciBSZWFjdFVwZGF0ZXMgPSB7XG5cdCAgLyoqXG5cdCAgICogUmVh
Y3QgcmVmZXJlbmNlcyBgUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbmAgdXNpbmcgdGhpcyBwcm9w
ZXJ0eSBpbiBvcmRlclxuXHQgICAqIHRvIGFsbG93IGRlcGVuZGVuY3kgaW5qZWN0aW9uLlxuXHQg
ICAqXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAgUmVhY3RSZWNvbmNpbGVUcmFuc2Fj
dGlvbjogbnVsbCxcblx0XG5cdCAgYmF0Y2hlZFVwZGF0ZXM6IGJhdGNoZWRVcGRhdGVzLFxuXHQg
IGVucXVldWVVcGRhdGU6IGVucXVldWVVcGRhdGUsXG5cdCAgZmx1c2hCYXRjaGVkVXBkYXRlczog
Zmx1c2hCYXRjaGVkVXBkYXRlcyxcblx0ICBpbmplY3Rpb246IFJlYWN0VXBkYXRlc0luamVjdGlv
bixcblx0ICBhc2FwOiBhc2FwXG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0VXBk
YXRlcztcblxuLyoqKi8gfSxcbi8qIDEwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpc
blx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX2Fz
c2lnbiA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdFxuXHR2YXIgUG9vbGVkQ2xhc3MgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDEzKTtcblx0XG5cdHZhciBlbXB0eUZ1bmN0aW9uID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg3KTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIp
O1xuXHRcblx0dmFyIGRpZFdhcm5Gb3JBZGRlZE5ld1Byb3BlcnR5ID0gZmFsc2U7XG5cdHZhciBp
c1Byb3h5U3VwcG9ydGVkID0gdHlwZW9mIFByb3h5ID09PSAnZnVuY3Rpb24nO1xuXHRcblx0dmFy
IHNob3VsZEJlUmVsZWFzZWRQcm9wZXJ0aWVzID0gWydkaXNwYXRjaENvbmZpZycsICdfdGFyZ2V0
SW5zdCcsICduYXRpdmVFdmVudCcsICdpc0RlZmF1bHRQcmV2ZW50ZWQnLCAnaXNQcm9wYWdhdGlv
blN0b3BwZWQnLCAnX2Rpc3BhdGNoTGlzdGVuZXJzJywgJ19kaXNwYXRjaEluc3RhbmNlcyddO1xu
XHRcblx0LyoqXG5cdCAqIEBpbnRlcmZhY2UgRXZlbnRcblx0ICogQHNlZSBodHRwOi8vd3d3Lncz
Lm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvXG5cdCAqL1xuXHR2YXIgRXZlbnRJbnRlcmZhY2Ug
PSB7XG5cdCAgdHlwZTogbnVsbCxcblx0ICB0YXJnZXQ6IG51bGwsXG5cdCAgLy8gY3VycmVudFRh
cmdldCBpcyBzZXQgd2hlbiBkaXNwYXRjaGluZzsgbm8gdXNlIGluIGNvcHlpbmcgaXQgaGVyZVxu
XHQgIGN1cnJlbnRUYXJnZXQ6IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxsLFxuXHQgIGV2
ZW50UGhhc2U6IG51bGwsXG5cdCAgYnViYmxlczogbnVsbCxcblx0ICBjYW5jZWxhYmxlOiBudWxs
LFxuXHQgIHRpbWVTdGFtcDogZnVuY3Rpb24gKGV2ZW50KSB7XG5cdCAgICByZXR1cm4gZXZlbnQu
dGltZVN0YW1wIHx8IERhdGUubm93KCk7XG5cdCAgfSxcblx0ICBkZWZhdWx0UHJldmVudGVkOiBu
dWxsLFxuXHQgIGlzVHJ1c3RlZDogbnVsbFxuXHR9O1xuXHRcblx0LyoqXG5cdCAqIFN5bnRoZXRp
YyBldmVudHMgYXJlIGRpc3BhdGNoZWQgYnkgZXZlbnQgcGx1Z2lucywgdHlwaWNhbGx5IGluIHJl
c3BvbnNlIHRvIGFcblx0ICogdG9wLWxldmVsIGV2ZW50IGRlbGVnYXRpb24gaGFuZGxlci5cblx0
ICpcblx0ICogVGhlc2Ugc3lzdGVtcyBzaG91bGQgZ2VuZXJhbGx5IHVzZSBwb29saW5nIHRvIHJl
ZHVjZSB0aGUgZnJlcXVlbmN5IG9mIGdhcmJhZ2Vcblx0ICogY29sbGVjdGlvbi4gVGhlIHN5c3Rl
bSBzaG91bGQgY2hlY2sgYGlzUGVyc2lzdGVudGAgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlXG5c
dCAqIGV2ZW50IHNob3VsZCBiZSByZWxlYXNlZCBpbnRvIHRoZSBwb29sIGFmdGVyIGJlaW5nIGRp
c3BhdGNoZWQuIFVzZXJzIHRoYXRcblx0ICogbmVlZCBhIHBlcnNpc3RlZCBldmVudCBzaG91bGQg
aW52b2tlIGBwZXJzaXN0YC5cblx0ICpcblx0ICogU3ludGhldGljIGV2ZW50cyAoYW5kIHN1YmNs
YXNzZXMpIGltcGxlbWVudCB0aGUgRE9NIExldmVsIDMgRXZlbnRzIEFQSSBieVxuXHQgKiBub3Jt
YWxpemluZyBicm93c2VyIHF1aXJrcy4gU3ViY2xhc3NlcyBkbyBub3QgbmVjZXNzYXJpbHkgaGF2
ZSB0byBpbXBsZW1lbnQgYVxuXHQgKiBET00gaW50ZXJmYWNlOyBjdXN0b20gYXBwbGljYXRpb24t
c3BlY2lmaWMgZXZlbnRzIGNhbiBhbHNvIHN1YmNsYXNzIHRoaXMuXG5cdCAqXG5cdCAqIEBwYXJh
bSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2gg
dGhpcyBldmVudC5cblx0ICogQHBhcmFtIHsqfSB0YXJnZXRJbnN0IE1hcmtlciBpZGVudGlmeWlu
ZyB0aGUgZXZlbnQgdGFyZ2V0LlxuXHQgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0
aXZlIGJyb3dzZXIgZXZlbnQuXG5cdCAqIEBwYXJhbSB7RE9NRXZlbnRUYXJnZXR9IG5hdGl2ZUV2
ZW50VGFyZ2V0IFRhcmdldCBub2RlLlxuXHQgKi9cblx0ZnVuY3Rpb24gU3ludGhldGljRXZlbnQo
ZGlzcGF0Y2hDb25maWcsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdl
dCkge1xuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgLy8gdGhlc2UgaGF2ZSBhIGdldHRlci9zZXR0
ZXIgZm9yIHdhcm5pbmdzXG5cdCAgICBkZWxldGUgdGhpcy5uYXRpdmVFdmVudDtcblx0ICAgIGRl
bGV0ZSB0aGlzLnByZXZlbnREZWZhdWx0O1xuXHQgICAgZGVsZXRlIHRoaXMuc3RvcFByb3BhZ2F0
aW9uO1xuXHQgIH1cblx0XG5cdCAgdGhpcy5kaXNwYXRjaENvbmZpZyA9IGRpc3BhdGNoQ29uZmln
O1xuXHQgIHRoaXMuX3RhcmdldEluc3QgPSB0YXJnZXRJbnN0O1xuXHQgIHRoaXMubmF0aXZlRXZl
bnQgPSBuYXRpdmVFdmVudDtcblx0XG5cdCAgdmFyIEludGVyZmFjZSA9IHRoaXMuY29uc3RydWN0
b3IuSW50ZXJmYWNlO1xuXHQgIGZvciAodmFyIHByb3BOYW1lIGluIEludGVyZmFjZSkge1xuXHQg
ICAgaWYgKCFJbnRlcmZhY2UuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG5cdCAgICAgIGNv
bnRpbnVlO1xuXHQgICAgfVxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIGRlbGV0ZSB0aGlz
W3Byb3BOYW1lXTsgLy8gdGhpcyBoYXMgYSBnZXR0ZXIvc2V0dGVyIGZvciB3YXJuaW5nc1xuXHQg
ICAgfVxuXHQgICAgdmFyIG5vcm1hbGl6ZSA9IEludGVyZmFjZVtwcm9wTmFtZV07XG5cdCAgICBp
ZiAobm9ybWFsaXplKSB7XG5cdCAgICAgIHRoaXNbcHJvcE5hbWVdID0gbm9ybWFsaXplKG5hdGl2
ZUV2ZW50KTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIGlmIChwcm9wTmFtZSA9PT0gJ3Rhcmdl
dCcpIHtcblx0ICAgICAgICB0aGlzLnRhcmdldCA9IG5hdGl2ZUV2ZW50VGFyZ2V0O1xuXHQgICAg
ICB9IGVsc2Uge1xuXHQgICAgICAgIHRoaXNbcHJvcE5hbWVdID0gbmF0aXZlRXZlbnRbcHJvcE5h
bWVdO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0ICB2YXIgZGVmYXVsdFByZXZl
bnRlZCA9IG5hdGl2ZUV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgIT0gbnVsbCA/IG5hdGl2ZUV2ZW50
LmRlZmF1bHRQcmV2ZW50ZWQgOiBuYXRpdmVFdmVudC5yZXR1cm5WYWx1ZSA9PT0gZmFsc2U7XG5c
dCAgaWYgKGRlZmF1bHRQcmV2ZW50ZWQpIHtcblx0ICAgIHRoaXMuaXNEZWZhdWx0UHJldmVudGVk
ID0gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RydWU7XG5cdCAgfSBlbHNlIHtcblx0ICAgIHRo
aXMuaXNEZWZhdWx0UHJldmVudGVkID0gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0ZhbHNlO1xu
XHQgIH1cblx0ICB0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0gZW1wdHlGdW5jdGlvbi50aGF0
UmV0dXJuc0ZhbHNlO1xuXHQgIHJldHVybiB0aGlzO1xuXHR9XG5cdFxuXHRfYXNzaWduKFN5bnRo
ZXRpY0V2ZW50LnByb3RvdHlwZSwge1xuXHQgIHByZXZlbnREZWZhdWx0OiBmdW5jdGlvbiAoKSB7
XG5cdCAgICB0aGlzLmRlZmF1bHRQcmV2ZW50ZWQgPSB0cnVlO1xuXHQgICAgdmFyIGV2ZW50ID0g
dGhpcy5uYXRpdmVFdmVudDtcblx0ICAgIGlmICghZXZlbnQpIHtcblx0ICAgICAgcmV0dXJuO1xu
XHQgICAgfVxuXHRcblx0ICAgIGlmIChldmVudC5wcmV2ZW50RGVmYXVsdCkge1xuXHQgICAgICBl
dmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuXHQgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxp
bmUgdmFsaWQtdHlwZW9mXG5cdCAgICB9IGVsc2UgaWYgKHR5cGVvZiBldmVudC5yZXR1cm5WYWx1
ZSAhPT0gJ3Vua25vd24nKSB7XG5cdCAgICAgIGV2ZW50LnJldHVyblZhbHVlID0gZmFsc2U7XG5c
dCAgICB9XG5cdCAgICB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IGVtcHR5RnVuY3Rpb24udGhh
dFJldHVybnNUcnVlO1xuXHQgIH0sXG5cdFxuXHQgIHN0b3BQcm9wYWdhdGlvbjogZnVuY3Rpb24g
KCkge1xuXHQgICAgdmFyIGV2ZW50ID0gdGhpcy5uYXRpdmVFdmVudDtcblx0ICAgIGlmICghZXZl
bnQpIHtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHRcblx0ICAgIGlmIChldmVudC5zdG9w
UHJvcGFnYXRpb24pIHtcblx0ICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG5cdCAgICAg
IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB2YWxpZC10eXBlb2Zcblx0ICAgIH0gZWxzZSBp
ZiAodHlwZW9mIGV2ZW50LmNhbmNlbEJ1YmJsZSAhPT0gJ3Vua25vd24nKSB7XG5cdCAgICAgIC8v
IFRoZSBDaGFuZ2VFdmVudFBsdWdpbiByZWdpc3RlcnMgYSBcInByb3BlcnR5Y2hhbmdlXCIgZXZl
bnQgZm9yXG5cdCAgICAgIC8vIElFLiBUaGlzIGV2ZW50IGRvZXMgbm90IHN1cHBvcnQgYnViYmxp
bmcgb3IgY2FuY2VsbGluZywgYW5kXG5cdCAgICAgIC8vIGFueSByZWZlcmVuY2VzIHRvIGNhbmNl
bEJ1YmJsZSB0aHJvdyBcIk1lbWJlciBub3QgZm91bmRcIi4gIEFcblx0ICAgICAgLy8gdHlwZW9m
IGNoZWNrIG9mIFwidW5rbm93blwiIGNpcmN1bXZlbnRzIHRoaXMgaXNzdWUgKGFuZCBpcyBhbHNv
XG5cdCAgICAgIC8vIElFIHNwZWNpZmljKS5cblx0ICAgICAgZXZlbnQuY2FuY2VsQnViYmxlID0g
dHJ1ZTtcblx0ICAgIH1cblx0XG5cdCAgICB0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0gZW1w
dHlGdW5jdGlvbi50aGF0UmV0dXJuc1RydWU7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICog
V2UgcmVsZWFzZSBhbGwgZGlzcGF0Y2hlZCBgU3ludGhldGljRXZlbnRgcyBhZnRlciBlYWNoIGV2
ZW50IGxvb3AsIGFkZGluZ1xuXHQgICAqIHRoZW0gYmFjayBpbnRvIHRoZSBwb29sLiBUaGlzIGFs
bG93cyBhIHdheSB0byBob2xkIG9udG8gYSByZWZlcmVuY2UgdGhhdFxuXHQgICAqIHdvbid0IGJl
IGFkZGVkIGJhY2sgaW50byB0aGUgcG9vbC5cblx0ICAgKi9cblx0ICBwZXJzaXN0OiBmdW5jdGlv
biAoKSB7XG5cdCAgICB0aGlzLmlzUGVyc2lzdGVudCA9IGVtcHR5RnVuY3Rpb24udGhhdFJldHVy
bnNUcnVlO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIENoZWNrcyBpZiB0aGlzIGV2ZW50
IHNob3VsZCBiZSByZWxlYXNlZCBiYWNrIGludG8gdGhlIHBvb2wuXG5cdCAgICpcblx0ICAgKiBA
cmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoaXMgc2hvdWxkIG5vdCBiZSByZWxlYXNlZCwgZmFs
c2Ugb3RoZXJ3aXNlLlxuXHQgICAqL1xuXHQgIGlzUGVyc2lzdGVudDogZW1wdHlGdW5jdGlvbi50
aGF0UmV0dXJuc0ZhbHNlLFxuXHRcblx0ICAvKipcblx0ICAgKiBgUG9vbGVkQ2xhc3NgIGxvb2tz
IGZvciBgZGVzdHJ1Y3RvcmAgb24gZWFjaCBpbnN0YW5jZSBpdCByZWxlYXNlcy5cblx0ICAgKi9c
blx0ICBkZXN0cnVjdG9yOiBmdW5jdGlvbiAoKSB7XG5cdCAgICB2YXIgSW50ZXJmYWNlID0gdGhp
cy5jb25zdHJ1Y3Rvci5JbnRlcmZhY2U7XG5cdCAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBJbnRl
cmZhY2UpIHtcblx0ICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgT2JqZWN0LmRlZmluZVBy
b3BlcnR5KHRoaXMsIHByb3BOYW1lLCBnZXRQb29sZWRXYXJuaW5nUHJvcGVydHlEZWZpbml0aW9u
KHByb3BOYW1lLCBJbnRlcmZhY2VbcHJvcE5hbWVdKSk7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAg
ICAgICAgdGhpc1twcm9wTmFtZV0gPSBudWxsO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHNob3VsZEJlUmVsZWFzZWRQcm9wZXJ0aWVzLmxlbmd0aDsgaSsr
KSB7XG5cdCAgICAgIHRoaXNbc2hvdWxkQmVSZWxlYXNlZFByb3BlcnRpZXNbaV1dID0gbnVsbDtc
blx0ICAgIH1cblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBPYmplY3QuZGVmaW5lUHJvcGVy
dHkodGhpcywgJ25hdGl2ZUV2ZW50JywgZ2V0UG9vbGVkV2FybmluZ1Byb3BlcnR5RGVmaW5pdGlv
bignbmF0aXZlRXZlbnQnLCBudWxsKSk7XG5cdCAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0
aGlzLCAncHJldmVudERlZmF1bHQnLCBnZXRQb29sZWRXYXJuaW5nUHJvcGVydHlEZWZpbml0aW9u
KCdwcmV2ZW50RGVmYXVsdCcsIGVtcHR5RnVuY3Rpb24pKTtcblx0ICAgICAgT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KHRoaXMsICdzdG9wUHJvcGFnYXRpb24nLCBnZXRQb29sZWRXYXJuaW5nUHJvcGVy
dHlEZWZpbml0aW9uKCdzdG9wUHJvcGFnYXRpb24nLCBlbXB0eUZ1bmN0aW9uKSk7XG5cdCAgICB9
XG5cdCAgfVxuXHR9KTtcblx0XG5cdFN5bnRoZXRpY0V2ZW50LkludGVyZmFjZSA9IEV2ZW50SW50
ZXJmYWNlO1xuXHRcblx0aWYgKGZhbHNlKSB7XG5cdCAgaWYgKGlzUHJveHlTdXBwb3J0ZWQpIHtc
blx0ICAgIC8qZXNsaW50LWRpc2FibGUgbm8tZnVuYy1hc3NpZ24gKi9cblx0ICAgIFN5bnRoZXRp
Y0V2ZW50ID0gbmV3IFByb3h5KFN5bnRoZXRpY0V2ZW50LCB7XG5cdCAgICAgIGNvbnN0cnVjdDog
ZnVuY3Rpb24gKHRhcmdldCwgYXJncykge1xuXHQgICAgICAgIHJldHVybiB0aGlzLmFwcGx5KHRh
cmdldCwgT2JqZWN0LmNyZWF0ZSh0YXJnZXQucHJvdG90eXBlKSwgYXJncyk7XG5cdCAgICAgIH0s
XG5cdCAgICAgIGFwcGx5OiBmdW5jdGlvbiAoY29uc3RydWN0b3IsIHRoYXQsIGFyZ3MpIHtcblx0
ICAgICAgICByZXR1cm4gbmV3IFByb3h5KGNvbnN0cnVjdG9yLmFwcGx5KHRoYXQsIGFyZ3MpLCB7
XG5cdCAgICAgICAgICBzZXQ6IGZ1bmN0aW9uICh0YXJnZXQsIHByb3AsIHZhbHVlKSB7XG5cdCAg
ICAgICAgICAgIGlmIChwcm9wICE9PSAnaXNQZXJzaXN0ZW50JyAmJiAhdGFyZ2V0LmNvbnN0cnVj
dG9yLkludGVyZmFjZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSAmJiBzaG91bGRCZVJlbGVhc2VkUHJv
cGVydGllcy5pbmRleE9mKHByb3ApID09PSAtMSkge1xuXHQgICAgICAgICAgICAgIHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGRpZFdhcm5Gb3JBZGRlZE5l
d1Byb3BlcnR5IHx8IHRhcmdldC5pc1BlcnNpc3RlbnQoKSwgXCJUaGlzIHN5bnRoZXRpYyBldmVu
dCBpcyByZXVzZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuIElmIHlvdSdyZSBcIiArIFwic2Vl
aW5nIHRoaXMsIHlvdSdyZSBhZGRpbmcgYSBuZXcgcHJvcGVydHkgaW4gdGhlIHN5bnRoZXRpYyBl
dmVudCBvYmplY3QuIFwiICsgJ1RoZSBwcm9wZXJ0eSBpcyBuZXZlciByZWxlYXNlZC4gU2VlICcg
KyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC1ldmVudC1wb29saW5nIGZvciBtb3JlIGluZm9ybWF0aW9u
LicpIDogdm9pZCAwO1xuXHQgICAgICAgICAgICAgIGRpZFdhcm5Gb3JBZGRlZE5ld1Byb3BlcnR5
ID0gdHJ1ZTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB0YXJnZXRbcHJvcF0gPSB2
YWx1ZTtcblx0ICAgICAgICAgICAgcmV0dXJuIHRydWU7XG5cdCAgICAgICAgICB9XG5cdCAgICAg
ICAgfSk7XG5cdCAgICAgIH1cblx0ICAgIH0pO1xuXHQgICAgLyplc2xpbnQtZW5hYmxlIG5vLWZ1
bmMtYXNzaWduICovXG5cdCAgfVxuXHR9XG5cdC8qKlxuXHQgKiBIZWxwZXIgdG8gcmVkdWNlIGJv
aWxlcnBsYXRlIHdoZW4gY3JlYXRpbmcgc3ViY2xhc3Nlcy5cblx0ICpcblx0ICogQHBhcmFtIHtm
dW5jdGlvbn0gQ2xhc3Ncblx0ICogQHBhcmFtIHs/b2JqZWN0fSBJbnRlcmZhY2Vcblx0ICovXG5c
dFN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyA9IGZ1bmN0aW9uIChDbGFzcywgSW50ZXJmYWNl
KSB7XG5cdCAgdmFyIFN1cGVyID0gdGhpcztcblx0XG5cdCAgdmFyIEUgPSBmdW5jdGlvbiAoKSB7
fTtcblx0ICBFLnByb3RvdHlwZSA9IFN1cGVyLnByb3RvdHlwZTtcblx0ICB2YXIgcHJvdG90eXBl
ID0gbmV3IEUoKTtcblx0XG5cdCAgX2Fzc2lnbihwcm90b3R5cGUsIENsYXNzLnByb3RvdHlwZSk7
XG5cdCAgQ2xhc3MucHJvdG90eXBlID0gcHJvdG90eXBlO1xuXHQgIENsYXNzLnByb3RvdHlwZS5j
b25zdHJ1Y3RvciA9IENsYXNzO1xuXHRcblx0ICBDbGFzcy5JbnRlcmZhY2UgPSBfYXNzaWduKHt9
LCBTdXBlci5JbnRlcmZhY2UsIEludGVyZmFjZSk7XG5cdCAgQ2xhc3MuYXVnbWVudENsYXNzID0g
U3VwZXIuYXVnbWVudENsYXNzO1xuXHRcblx0ICBQb29sZWRDbGFzcy5hZGRQb29saW5nVG8oQ2xh
c3MsIFBvb2xlZENsYXNzLmZvdXJBcmd1bWVudFBvb2xlcik7XG5cdH07XG5cdFxuXHRQb29sZWRD
bGFzcy5hZGRQb29saW5nVG8oU3ludGhldGljRXZlbnQsIFBvb2xlZENsYXNzLmZvdXJBcmd1bWVu
dFBvb2xlcik7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0V2ZW50O1xuXHRcblx0
LyoqXG5cdCAgKiBIZWxwZXIgdG8gbnVsbGlmeSBzeW50aGV0aWNFdmVudCBpbnN0YW5jZSBwcm9w
ZXJ0aWVzIHdoZW4gZGVzdHJ1Y3Rpbmdcblx0ICAqXG5cdCAgKiBAcGFyYW0ge29iamVjdH0gU3lu
dGhldGljRXZlbnRcblx0ICAqIEBwYXJhbSB7U3RyaW5nfSBwcm9wTmFtZVxuXHQgICogQHJldHVy
biB7b2JqZWN0fSBkZWZpbmVQcm9wZXJ0eSBvYmplY3Rcblx0ICAqL1xuXHRmdW5jdGlvbiBnZXRQ
b29sZWRXYXJuaW5nUHJvcGVydHlEZWZpbml0aW9uKHByb3BOYW1lLCBnZXRWYWwpIHtcblx0ICB2
YXIgaXNGdW5jdGlvbiA9IHR5cGVvZiBnZXRWYWwgPT09ICdmdW5jdGlvbic7XG5cdCAgcmV0dXJu
IHtcblx0ICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblx0ICAgIHNldDogc2V0LFxuXHQgICAgZ2V0
OiBnZXRcblx0ICB9O1xuXHRcblx0ICBmdW5jdGlvbiBzZXQodmFsKSB7XG5cdCAgICB2YXIgYWN0
aW9uID0gaXNGdW5jdGlvbiA/ICdzZXR0aW5nIHRoZSBtZXRob2QnIDogJ3NldHRpbmcgdGhlIHBy
b3BlcnR5Jztcblx0ICAgIHdhcm4oYWN0aW9uLCAnVGhpcyBpcyBlZmZlY3RpdmVseSBhIG5vLW9w
Jyk7XG5cdCAgICByZXR1cm4gdmFsO1xuXHQgIH1cblx0XG5cdCAgZnVuY3Rpb24gZ2V0KCkge1xu
XHQgICAgdmFyIGFjdGlvbiA9IGlzRnVuY3Rpb24gPyAnYWNjZXNzaW5nIHRoZSBtZXRob2QnIDog
J2FjY2Vzc2luZyB0aGUgcHJvcGVydHknO1xuXHQgICAgdmFyIHJlc3VsdCA9IGlzRnVuY3Rpb24g
PyAnVGhpcyBpcyBhIG5vLW9wIGZ1bmN0aW9uJyA6ICdUaGlzIGlzIHNldCB0byBudWxsJztcblx0
ICAgIHdhcm4oYWN0aW9uLCByZXN1bHQpO1xuXHQgICAgcmV0dXJuIGdldFZhbDtcblx0ICB9XG5c
dFxuXHQgIGZ1bmN0aW9uIHdhcm4oYWN0aW9uLCByZXN1bHQpIHtcblx0ICAgIHZhciB3YXJuaW5n
Q29uZGl0aW9uID0gZmFsc2U7XG5cdCAgICAgZmFsc2UgPyB3YXJuaW5nKHdhcm5pbmdDb25kaXRp
b24sIFwiVGhpcyBzeW50aGV0aWMgZXZlbnQgaXMgcmV1c2VkIGZvciBwZXJmb3JtYW5jZSByZWFz
b25zLiBJZiB5b3UncmUgc2VlaW5nIHRoaXMsIFwiICsgXCJ5b3UncmUgJXMgYCVzYCBvbiBhIHJl
bGVhc2VkL251bGxpZmllZCBzeW50aGV0aWMgZXZlbnQuICVzLiBcIiArICdJZiB5b3UgbXVzdCBr
ZWVwIHRoZSBvcmlnaW5hbCBzeW50aGV0aWMgZXZlbnQgYXJvdW5kLCB1c2UgZXZlbnQucGVyc2lz
dCgpLiAnICsgJ1NlZSBodHRwczovL2ZiLm1lL3JlYWN0LWV2ZW50LXBvb2xpbmcgZm9yIG1vcmUg
aW5mb3JtYXRpb24uJywgYWN0aW9uLCBwcm9wTmFtZSwgcmVzdWx0KSA6IHZvaWQgMDtcblx0ICB9
XG5cdH1cblxuLyoqKi8gfSxcbi8qIDExICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5c
dCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICog
XG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0LyoqXG5cdCAqIEtlZXBzIHRyYWNr
IG9mIHRoZSBjdXJyZW50IG93bmVyLlxuXHQgKlxuXHQgKiBUaGUgY3VycmVudCBvd25lciBpcyB0
aGUgY29tcG9uZW50IHdobyBzaG91bGQgb3duIGFueSBjb21wb25lbnRzIHRoYXQgYXJlXG5cdCAq
IGN1cnJlbnRseSBiZWluZyBjb25zdHJ1Y3RlZC5cblx0ICovXG5cdHZhciBSZWFjdEN1cnJlbnRP
d25lciA9IHtcblx0ICAvKipcblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKiBAdHlwZSB7UmVhY3RD
b21wb25lbnR9XG5cdCAgICovXG5cdCAgY3VycmVudDogbnVsbFxuXHR9O1xuXHRcblx0bW9kdWxl
LmV4cG9ydHMgPSBSZWFjdEN1cnJlbnRPd25lcjtcblxuLyoqKi8gfSxcbi8qIDEyICovXG4vKioq
LyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQn
dXNlIHN0cmljdCc7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IF9fd2VicGFja19yZXF1aXJlX18o
MTcpO1xuXG5cbi8qKiovIH0sXG4vKiAxMyAqL1xuWzIzMSwgM10sXG4vKiAxNCAqL1xuLyoqKi8g
ZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Lyoq
XG5cdCAqIENvcHlyaWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBz
dHJpY3QnO1xuXHRcblx0dmFyIERPTU5hbWVzcGFjZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM1
KTtcblx0dmFyIHNldElubmVySFRNTCA9IF9fd2VicGFja19yZXF1aXJlX18oMjkpO1xuXHRcblx0
dmFyIGNyZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDQzKTtcblx0dmFyIHNldFRleHRDb250ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3Nyk7
XG5cdFxuXHR2YXIgRUxFTUVOVF9OT0RFX1RZUEUgPSAxO1xuXHR2YXIgRE9DVU1FTlRfRlJBR01F
TlRfTk9ERV9UWVBFID0gMTE7XG5cdFxuXHQvKipcblx0ICogSW4gSUUgKDgtMTEpIGFuZCBFZGdl
LCBhcHBlbmRpbmcgbm9kZXMgd2l0aCBubyBjaGlsZHJlbiBpcyBkcmFtYXRpY2FsbHlcblx0ICog
ZmFzdGVyIHRoYW4gYXBwZW5kaW5nIGEgZnVsbCBzdWJ0cmVlLCBzbyB3ZSBlc3NlbnRpYWxseSBx
dWV1ZSB1cCB0aGVcblx0ICogLmFwcGVuZENoaWxkIGNhbGxzIGhlcmUgYW5kIGFwcGx5IHRoZW0g
c28gZWFjaCBub2RlIGlzIGFkZGVkIHRvIGl0cyBwYXJlbnRcblx0ICogYmVmb3JlIGFueSBjaGls
ZHJlbiBhcmUgYWRkZWQuXG5cdCAqXG5cdCAqIEluIG90aGVyIGJyb3dzZXJzLCBkb2luZyBzbyBp
cyBzbG93ZXIgb3IgbmV1dHJhbCBjb21wYXJlZCB0byB0aGUgb3RoZXIgb3JkZXJcblx0ICogKGlu
IEZpcmVmb3gsIHR3aWNlIGFzIHNsb3cpIHNvIHdlIG9ubHkgZG8gdGhpcyBpbnZlcnNpb24gaW4g
SUUuXG5cdCAqXG5cdCAqIFNlZSBodHRwczovL2dpdGh1Yi5jb20vc3BpY3lqL2lubmVyaHRtbC12
cy1jcmVhdGVlbGVtZW50LXZzLWNsb25lbm9kZS5cblx0ICovXG5cdHZhciBlbmFibGVMYXp5ID0g
dHlwZW9mIGRvY3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQuZG9jdW1l
bnRNb2RlID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbmF2aWdhdG9yICE9PSAndW5kZWZpbmVkJyAm
JiB0eXBlb2YgbmF2aWdhdG9yLnVzZXJBZ2VudCA9PT0gJ3N0cmluZycgJiYgL1xcYkVkZ2VcXC9c
XGQvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCk7XG5cdFxuXHRmdW5jdGlvbiBpbnNlcnRUcmVl
Q2hpbGRyZW4odHJlZSkge1xuXHQgIGlmICghZW5hYmxlTGF6eSkge1xuXHQgICAgcmV0dXJuO1xu
XHQgIH1cblx0ICB2YXIgbm9kZSA9IHRyZWUubm9kZTtcblx0ICB2YXIgY2hpbGRyZW4gPSB0cmVl
LmNoaWxkcmVuO1xuXHQgIGlmIChjaGlsZHJlbi5sZW5ndGgpIHtcblx0ICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgaW5zZXJ0VHJlZUJlZm9y
ZShub2RlLCBjaGlsZHJlbltpXSwgbnVsbCk7XG5cdCAgICB9XG5cdCAgfSBlbHNlIGlmICh0cmVl
Lmh0bWwgIT0gbnVsbCkge1xuXHQgICAgc2V0SW5uZXJIVE1MKG5vZGUsIHRyZWUuaHRtbCk7XG5c
dCAgfSBlbHNlIGlmICh0cmVlLnRleHQgIT0gbnVsbCkge1xuXHQgICAgc2V0VGV4dENvbnRlbnQo
bm9kZSwgdHJlZS50ZXh0KTtcblx0ICB9XG5cdH1cblx0XG5cdHZhciBpbnNlcnRUcmVlQmVmb3Jl
ID0gY3JlYXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbihmdW5jdGlvbiAocGFyZW50Tm9k
ZSwgdHJlZSwgcmVmZXJlbmNlTm9kZSkge1xuXHQgIC8vIERvY3VtZW50RnJhZ21lbnRzIGFyZW4n
dCBhY3R1YWxseSBwYXJ0IG9mIHRoZSBET00gYWZ0ZXIgaW5zZXJ0aW9uIHNvXG5cdCAgLy8gYXBw
ZW5kaW5nIGNoaWxkcmVuIHdvbid0IHVwZGF0ZSB0aGUgRE9NLiBXZSBuZWVkIHRvIGVuc3VyZSB0
aGUgZnJhZ21lbnRcblx0ICAvLyBpcyBwcm9wZXJseSBwb3B1bGF0ZWQgZmlyc3QsIGJyZWFraW5n
IG91dCBvZiBvdXIgbGF6eSBhcHByb2FjaCBmb3IganVzdFxuXHQgIC8vIHRoaXMgbGV2ZWwuIEFs
c28sIHNvbWUgPG9iamVjdD4gcGx1Z2lucyAobGlrZSBGbGFzaCBQbGF5ZXIpIHdpbGwgcmVhZFxu
XHQgIC8vIDxwYXJhbT4gbm9kZXMgaW1tZWRpYXRlbHkgdXBvbiBpbnNlcnRpb24gaW50byB0aGUg
RE9NLCBzbyA8b2JqZWN0PlxuXHQgIC8vIG11c3QgYWxzbyBiZSBwb3B1bGF0ZWQgcHJpb3IgdG8g
aW5zZXJ0aW9uIGludG8gdGhlIERPTS5cblx0ICBpZiAodHJlZS5ub2RlLm5vZGVUeXBlID09PSBE
T0NVTUVOVF9GUkFHTUVOVF9OT0RFX1RZUEUgfHwgdHJlZS5ub2RlLm5vZGVUeXBlID09PSBFTEVN
RU5UX05PREVfVFlQRSAmJiB0cmVlLm5vZGUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ29i
amVjdCcgJiYgKHRyZWUubm9kZS5uYW1lc3BhY2VVUkkgPT0gbnVsbCB8fCB0cmVlLm5vZGUubmFt
ZXNwYWNlVVJJID09PSBET01OYW1lc3BhY2VzLmh0bWwpKSB7XG5cdCAgICBpbnNlcnRUcmVlQ2hp
bGRyZW4odHJlZSk7XG5cdCAgICBwYXJlbnROb2RlLmluc2VydEJlZm9yZSh0cmVlLm5vZGUsIHJl
ZmVyZW5jZU5vZGUpO1xuXHQgIH0gZWxzZSB7XG5cdCAgICBwYXJlbnROb2RlLmluc2VydEJlZm9y
ZSh0cmVlLm5vZGUsIHJlZmVyZW5jZU5vZGUpO1xuXHQgICAgaW5zZXJ0VHJlZUNoaWxkcmVuKHRy
ZWUpO1xuXHQgIH1cblx0fSk7XG5cdFxuXHRmdW5jdGlvbiByZXBsYWNlQ2hpbGRXaXRoVHJlZShv
bGROb2RlLCBuZXdUcmVlKSB7XG5cdCAgb2xkTm9kZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChu
ZXdUcmVlLm5vZGUsIG9sZE5vZGUpO1xuXHQgIGluc2VydFRyZWVDaGlsZHJlbihuZXdUcmVlKTtc
blx0fVxuXHRcblx0ZnVuY3Rpb24gcXVldWVDaGlsZChwYXJlbnRUcmVlLCBjaGlsZFRyZWUpIHtc
blx0ICBpZiAoZW5hYmxlTGF6eSkge1xuXHQgICAgcGFyZW50VHJlZS5jaGlsZHJlbi5wdXNoKGNo
aWxkVHJlZSk7XG5cdCAgfSBlbHNlIHtcblx0ICAgIHBhcmVudFRyZWUubm9kZS5hcHBlbmRDaGls
ZChjaGlsZFRyZWUubm9kZSk7XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBxdWV1ZUhUTUwo
dHJlZSwgaHRtbCkge1xuXHQgIGlmIChlbmFibGVMYXp5KSB7XG5cdCAgICB0cmVlLmh0bWwgPSBo
dG1sO1xuXHQgIH0gZWxzZSB7XG5cdCAgICBzZXRJbm5lckhUTUwodHJlZS5ub2RlLCBodG1sKTtc
blx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHF1ZXVlVGV4dCh0cmVlLCB0ZXh0KSB7XG5cdCAg
aWYgKGVuYWJsZUxhenkpIHtcblx0ICAgIHRyZWUudGV4dCA9IHRleHQ7XG5cdCAgfSBlbHNlIHtc
blx0ICAgIHNldFRleHRDb250ZW50KHRyZWUubm9kZSwgdGV4dCk7XG5cdCAgfVxuXHR9XG5cdFxu
XHRmdW5jdGlvbiB0b1N0cmluZygpIHtcblx0ICByZXR1cm4gdGhpcy5ub2RlLm5vZGVOYW1lO1xu
XHR9XG5cdFxuXHRmdW5jdGlvbiBET01MYXp5VHJlZShub2RlKSB7XG5cdCAgcmV0dXJuIHtcblx0
ICAgIG5vZGU6IG5vZGUsXG5cdCAgICBjaGlsZHJlbjogW10sXG5cdCAgICBodG1sOiBudWxsLFxu
XHQgICAgdGV4dDogbnVsbCxcblx0ICAgIHRvU3RyaW5nOiB0b1N0cmluZ1xuXHQgIH07XG5cdH1c
blx0XG5cdERPTUxhenlUcmVlLmluc2VydFRyZWVCZWZvcmUgPSBpbnNlcnRUcmVlQmVmb3JlO1xu
XHRET01MYXp5VHJlZS5yZXBsYWNlQ2hpbGRXaXRoVHJlZSA9IHJlcGxhY2VDaGlsZFdpdGhUcmVl
O1xuXHRET01MYXp5VHJlZS5xdWV1ZUNoaWxkID0gcXVldWVDaGlsZDtcblx0RE9NTGF6eVRyZWUu
cXVldWVIVE1MID0gcXVldWVIVE1MO1xuXHRET01MYXp5VHJlZS5xdWV1ZVRleHQgPSBxdWV1ZVRl
eHQ7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IERPTUxhenlUcmVlO1xuXG4vKioqLyB9LFxuLyog
MTUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
Xykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9c
blx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFj
a19yZXF1aXJlX18oMyk7XG5cdFxuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVf
XygxKTtcblx0XG5cdGZ1bmN0aW9uIGNoZWNrTWFzayh2YWx1ZSwgYml0bWFzaykge1xuXHQgIHJl
dHVybiAodmFsdWUgJiBiaXRtYXNrKSA9PT0gYml0bWFzaztcblx0fVxuXHRcblx0dmFyIERPTVBy
b3BlcnR5SW5qZWN0aW9uID0ge1xuXHQgIC8qKlxuXHQgICAqIE1hcHBpbmcgZnJvbSBub3JtYWxp
emVkLCBjYW1lbGNhc2VkIHByb3BlcnR5IG5hbWVzIHRvIGEgY29uZmlndXJhdGlvbiB0aGF0XG5c
dCAgICogc3BlY2lmaWVzIGhvdyB0aGUgYXNzb2NpYXRlZCBET00gcHJvcGVydHkgc2hvdWxkIGJl
IGFjY2Vzc2VkIG9yIHJlbmRlcmVkLlxuXHQgICAqL1xuXHQgIE1VU1RfVVNFX1BST1BFUlRZOiAw
eDEsXG5cdCAgSEFTX0JPT0xFQU5fVkFMVUU6IDB4NCxcblx0ICBIQVNfTlVNRVJJQ19WQUxVRTog
MHg4LFxuXHQgIEhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFOiAweDEwIHwgMHg4LFxuXHQgIEhB
U19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUU6IDB4MjAsXG5cdFxuXHQgIC8qKlxuXHQgICAqIElu
amVjdCBzb21lIHNwZWNpYWxpemVkIGtub3dsZWRnZSBhYm91dCB0aGUgRE9NLiBUaGlzIHRha2Vz
IGEgY29uZmlnIG9iamVjdFxuXHQgICAqIHdpdGggdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzOlxu
XHQgICAqXG5cdCAgICogaXNDdXN0b21BdHRyaWJ1dGU6IGZ1bmN0aW9uIHRoYXQgZ2l2ZW4gYW4g
YXR0cmlidXRlIG5hbWUgd2lsbCByZXR1cm4gdHJ1ZVxuXHQgICAqIGlmIGl0IGNhbiBiZSBpbnNl
cnRlZCBpbnRvIHRoZSBET00gdmVyYmF0aW0uIFVzZWZ1bCBmb3IgZGF0YS0qIG9yIGFyaWEtKlxu
XHQgICAqIGF0dHJpYnV0ZXMgd2hlcmUgaXQncyBpbXBvc3NpYmxlIHRvIGVudW1lcmF0ZSBhbGwg
b2YgdGhlIHBvc3NpYmxlXG5cdCAgICogYXR0cmlidXRlIG5hbWVzLFxuXHQgICAqXG5cdCAgICog
UHJvcGVydGllczogb2JqZWN0IG1hcHBpbmcgRE9NIHByb3BlcnR5IG5hbWUgdG8gb25lIG9mIHRo
ZVxuXHQgICAqIERPTVByb3BlcnR5SW5qZWN0aW9uIGNvbnN0YW50cyBvciBudWxsLiBJZiB5b3Vy
IGF0dHJpYnV0ZSBpc24ndCBpbiBoZXJlLFxuXHQgICAqIGl0IHdvbid0IGdldCB3cml0dGVuIHRv
IHRoZSBET00uXG5cdCAgICpcblx0ICAgKiBET01BdHRyaWJ1dGVOYW1lczogb2JqZWN0IG1hcHBp
bmcgUmVhY3QgYXR0cmlidXRlIG5hbWUgdG8gdGhlIERPTVxuXHQgICAqIGF0dHJpYnV0ZSBuYW1l
LiBBdHRyaWJ1dGUgbmFtZXMgbm90IHNwZWNpZmllZCB1c2UgdGhlICoqbG93ZXJjYXNlKipcblx0
ICAgKiBub3JtYWxpemVkIG5hbWUuXG5cdCAgICpcblx0ICAgKiBET01BdHRyaWJ1dGVOYW1lc3Bh
Y2VzOiBvYmplY3QgbWFwcGluZyBSZWFjdCBhdHRyaWJ1dGUgbmFtZSB0byB0aGUgRE9NXG5cdCAg
ICogYXR0cmlidXRlIG5hbWVzcGFjZSBVUkwuIChBdHRyaWJ1dGUgbmFtZXMgbm90IHNwZWNpZmll
ZCB1c2Ugbm8gbmFtZXNwYWNlLilcblx0ICAgKlxuXHQgICAqIERPTVByb3BlcnR5TmFtZXM6IHNp
bWlsYXIgdG8gRE9NQXR0cmlidXRlTmFtZXMgYnV0IGZvciBET00gcHJvcGVydGllcy5cblx0ICAg
KiBQcm9wZXJ0eSBuYW1lcyBub3Qgc3BlY2lmaWVkIHVzZSB0aGUgbm9ybWFsaXplZCBuYW1lLlxu
XHQgICAqXG5cdCAgICogRE9NTXV0YXRpb25NZXRob2RzOiBQcm9wZXJ0aWVzIHRoYXQgcmVxdWly
ZSBzcGVjaWFsIG11dGF0aW9uIG1ldGhvZHMuIElmXG5cdCAgICogYHZhbHVlYCBpcyB1bmRlZmlu
ZWQsIHRoZSBtdXRhdGlvbiBtZXRob2Qgc2hvdWxkIHVuc2V0IHRoZSBwcm9wZXJ0eS5cblx0ICAg
KlxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBkb21Qcm9wZXJ0eUNvbmZpZyB0aGUgY29uZmlnIGFz
IGRlc2NyaWJlZCBhYm92ZS5cblx0ICAgKi9cblx0ICBpbmplY3RET01Qcm9wZXJ0eUNvbmZpZzog
ZnVuY3Rpb24gKGRvbVByb3BlcnR5Q29uZmlnKSB7XG5cdCAgICB2YXIgSW5qZWN0aW9uID0gRE9N
UHJvcGVydHlJbmplY3Rpb247XG5cdCAgICB2YXIgUHJvcGVydGllcyA9IGRvbVByb3BlcnR5Q29u
ZmlnLlByb3BlcnRpZXMgfHwge307XG5cdCAgICB2YXIgRE9NQXR0cmlidXRlTmFtZXNwYWNlcyA9
IGRvbVByb3BlcnR5Q29uZmlnLkRPTUF0dHJpYnV0ZU5hbWVzcGFjZXMgfHwge307XG5cdCAgICB2
YXIgRE9NQXR0cmlidXRlTmFtZXMgPSBkb21Qcm9wZXJ0eUNvbmZpZy5ET01BdHRyaWJ1dGVOYW1l
cyB8fCB7fTtcblx0ICAgIHZhciBET01Qcm9wZXJ0eU5hbWVzID0gZG9tUHJvcGVydHlDb25maWcu
RE9NUHJvcGVydHlOYW1lcyB8fCB7fTtcblx0ICAgIHZhciBET01NdXRhdGlvbk1ldGhvZHMgPSBk
b21Qcm9wZXJ0eUNvbmZpZy5ET01NdXRhdGlvbk1ldGhvZHMgfHwge307XG5cdFxuXHQgICAgaWYg
KGRvbVByb3BlcnR5Q29uZmlnLmlzQ3VzdG9tQXR0cmlidXRlKSB7XG5cdCAgICAgIERPTVByb3Bl
cnR5Ll9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9ucy5wdXNoKGRvbVByb3BlcnR5Q29uZmlnLmlz
Q3VzdG9tQXR0cmlidXRlKTtcblx0ICAgIH1cblx0XG5cdCAgICBmb3IgKHZhciBwcm9wTmFtZSBp
biBQcm9wZXJ0aWVzKSB7XG5cdCAgICAgICEhRE9NUHJvcGVydHkucHJvcGVydGllcy5oYXNPd25Q
cm9wZXJ0eShwcm9wTmFtZSkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdpbmplY3RET01Q
cm9wZXJ0eUNvbmZpZyguLi4pOiBZb3VcXCdyZSB0cnlpbmcgdG8gaW5qZWN0IERPTSBwcm9wZXJ0
eSBcXCclc1xcJyB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIGluamVjdGVkLiBZb3UgbWF5IGJlIGFj
Y2lkZW50YWxseSBpbmplY3RpbmcgdGhlIHNhbWUgRE9NIHByb3BlcnR5IGNvbmZpZyB0d2ljZSwg
b3IgeW91IG1heSBiZSBpbmplY3RpbmcgdHdvIGNvbmZpZ3MgdGhhdCBoYXZlIGNvbmZsaWN0aW5n
IHByb3BlcnR5IG5hbWVzLicsIHByb3BOYW1lKSA6IF9wcm9kSW52YXJpYW50KCc0OCcsIHByb3BO
YW1lKSA6IHZvaWQgMDtcblx0XG5cdCAgICAgIHZhciBsb3dlckNhc2VkID0gcHJvcE5hbWUudG9M
b3dlckNhc2UoKTtcblx0ICAgICAgdmFyIHByb3BDb25maWcgPSBQcm9wZXJ0aWVzW3Byb3BOYW1l
XTtcblx0XG5cdCAgICAgIHZhciBwcm9wZXJ0eUluZm8gPSB7XG5cdCAgICAgICAgYXR0cmlidXRl
TmFtZTogbG93ZXJDYXNlZCxcblx0ICAgICAgICBhdHRyaWJ1dGVOYW1lc3BhY2U6IG51bGwsXG5c
dCAgICAgICAgcHJvcGVydHlOYW1lOiBwcm9wTmFtZSxcblx0ICAgICAgICBtdXRhdGlvbk1ldGhv
ZDogbnVsbCxcblx0XG5cdCAgICAgICAgbXVzdFVzZVByb3BlcnR5OiBjaGVja01hc2socHJvcENv
bmZpZywgSW5qZWN0aW9uLk1VU1RfVVNFX1BST1BFUlRZKSxcblx0ICAgICAgICBoYXNCb29sZWFu
VmFsdWU6IGNoZWNrTWFzayhwcm9wQ29uZmlnLCBJbmplY3Rpb24uSEFTX0JPT0xFQU5fVkFMVUUp
LFxuXHQgICAgICAgIGhhc051bWVyaWNWYWx1ZTogY2hlY2tNYXNrKHByb3BDb25maWcsIEluamVj
dGlvbi5IQVNfTlVNRVJJQ19WQUxVRSksXG5cdCAgICAgICAgaGFzUG9zaXRpdmVOdW1lcmljVmFs
dWU6IGNoZWNrTWFzayhwcm9wQ29uZmlnLCBJbmplY3Rpb24uSEFTX1BPU0lUSVZFX05VTUVSSUNf
VkFMVUUpLFxuXHQgICAgICAgIGhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWU6IGNoZWNrTWFzayhw
cm9wQ29uZmlnLCBJbmplY3Rpb24uSEFTX09WRVJMT0FERURfQk9PTEVBTl9WQUxVRSlcblx0ICAg
ICAgfTtcblx0ICAgICAgIShwcm9wZXJ0eUluZm8uaGFzQm9vbGVhblZhbHVlICsgcHJvcGVydHlJ
bmZvLmhhc051bWVyaWNWYWx1ZSArIHByb3BlcnR5SW5mby5oYXNPdmVybG9hZGVkQm9vbGVhblZh
bHVlIDw9IDEpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnRE9NUHJvcGVydHk6IFZhbHVl
IGNhbiBiZSBvbmUgb2YgYm9vbGVhbiwgb3ZlcmxvYWRlZCBib29sZWFuLCBvciBudW1lcmljIHZh
bHVlLCBidXQgbm90IGEgY29tYmluYXRpb246ICVzJywgcHJvcE5hbWUpIDogX3Byb2RJbnZhcmlh
bnQoJzUwJywgcHJvcE5hbWUpIDogdm9pZCAwO1xuXHRcblx0ICAgICAgaWYgKGZhbHNlKSB7XG5c
dCAgICAgICAgRE9NUHJvcGVydHkuZ2V0UG9zc2libGVTdGFuZGFyZE5hbWVbbG93ZXJDYXNlZF0g
PSBwcm9wTmFtZTtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgaWYgKERPTUF0dHJpYnV0ZU5hbWVz
Lmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuXHQgICAgICAgIHZhciBhdHRyaWJ1dGVOYW1l
ID0gRE9NQXR0cmlidXRlTmFtZXNbcHJvcE5hbWVdO1xuXHQgICAgICAgIHByb3BlcnR5SW5mby5h
dHRyaWJ1dGVOYW1lID0gYXR0cmlidXRlTmFtZTtcblx0ICAgICAgICBpZiAoZmFsc2UpIHtcblx0
ICAgICAgICAgIERPTVByb3BlcnR5LmdldFBvc3NpYmxlU3RhbmRhcmROYW1lW2F0dHJpYnV0ZU5h
bWVdID0gcHJvcE5hbWU7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdFxuXHQgICAgICBpZiAo
RE9NQXR0cmlidXRlTmFtZXNwYWNlcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcblx0ICAg
ICAgICBwcm9wZXJ0eUluZm8uYXR0cmlidXRlTmFtZXNwYWNlID0gRE9NQXR0cmlidXRlTmFtZXNw
YWNlc1twcm9wTmFtZV07XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIGlmIChET01Qcm9wZXJ0eU5h
bWVzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuXHQgICAgICAgIHByb3BlcnR5SW5mby5w
cm9wZXJ0eU5hbWUgPSBET01Qcm9wZXJ0eU5hbWVzW3Byb3BOYW1lXTtcblx0ICAgICAgfVxuXHRc
blx0ICAgICAgaWYgKERPTU11dGF0aW9uTWV0aG9kcy5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkp
IHtcblx0ICAgICAgICBwcm9wZXJ0eUluZm8ubXV0YXRpb25NZXRob2QgPSBET01NdXRhdGlvbk1l
dGhvZHNbcHJvcE5hbWVdO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICBET01Qcm9wZXJ0eS5wcm9w
ZXJ0aWVzW3Byb3BOYW1lXSA9IHByb3BlcnR5SW5mbztcblx0ICAgIH1cblx0ICB9XG5cdH07XG5c
dFxuXHQvKiBlc2xpbnQtZGlzYWJsZSBtYXgtbGVuICovXG5cdHZhciBBVFRSSUJVVEVfTkFNRV9T
VEFSVF9DSEFSID0gJzpBLVpfYS16XFxcXHUwMEMwLVxcXFx1MDBENlxcXFx1MDBEOC1cXFxcdTAw
RjZcXFxcdTAwRjgtXFxcXHUwMkZGXFxcXHUwMzcwLVxcXFx1MDM3RFxcXFx1MDM3Ri1cXFxcdTFG
RkZcXFxcdTIwMEMtXFxcXHUyMDBEXFxcXHUyMDcwLVxcXFx1MjE4RlxcXFx1MkMwMC1cXFxcdTJG
RUZcXFxcdTMwMDEtXFxcXHVEN0ZGXFxcXHVGOTAwLVxcXFx1RkRDRlxcXFx1RkRGMC1cXFxcdUZG
RkQnO1xuXHQvKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4gKi9cblx0XG5cdC8qKlxuXHQgKiBET01Q
cm9wZXJ0eSBleHBvcnRzIGxvb2t1cCBvYmplY3RzIHRoYXQgY2FuIGJlIHVzZWQgbGlrZSBmdW5j
dGlvbnM6XG5cdCAqXG5cdCAqICAgPiBET01Qcm9wZXJ0eS5pc1ZhbGlkWydpZCddXG5cdCAqICAg
dHJ1ZVxuXHQgKiAgID4gRE9NUHJvcGVydHkuaXNWYWxpZFsnZm9vYmFyJ11cblx0ICogICB1bmRl
ZmluZWRcblx0ICpcblx0ICogQWx0aG91Z2ggdGhpcyBtYXkgYmUgY29uZnVzaW5nLCBpdCBwZXJm
b3JtcyBiZXR0ZXIgaW4gZ2VuZXJhbC5cblx0ICpcblx0ICogQHNlZSBodHRwOi8vanNwZXJmLmNv
bS9rZXktZXhpc3RzXG5cdCAqIEBzZWUgaHR0cDovL2pzcGVyZi5jb20va2V5LW1pc3Npbmdcblx0
ICovXG5cdHZhciBET01Qcm9wZXJ0eSA9IHtcblx0ICBJRF9BVFRSSUJVVEVfTkFNRTogJ2RhdGEt
cmVhY3RpZCcsXG5cdCAgUk9PVF9BVFRSSUJVVEVfTkFNRTogJ2RhdGEtcmVhY3Ryb290Jyxcblx0
XG5cdCAgQVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUjogQVRUUklCVVRFX05BTUVfU1RBUlRfQ0hB
Uixcblx0ICBBVFRSSUJVVEVfTkFNRV9DSEFSOiBBVFRSSUJVVEVfTkFNRV9TVEFSVF9DSEFSICsg
J1xcXFwtLjAtOVxcXFx1MDBCN1xcXFx1MDMwMC1cXFxcdTAzNkZcXFxcdTIwM0YtXFxcXHUyMDQw
Jyxcblx0XG5cdCAgLyoqXG5cdCAgICogTWFwIGZyb20gcHJvcGVydHkgXCJzdGFuZGFyZCBuYW1l
XCIgdG8gYW4gb2JqZWN0IHdpdGggaW5mbyBhYm91dCBob3cgdG8gc2V0XG5cdCAgICogdGhlIHBy
b3BlcnR5IGluIHRoZSBET00uIEVhY2ggb2JqZWN0IGNvbnRhaW5zOlxuXHQgICAqXG5cdCAgICog
YXR0cmlidXRlTmFtZTpcblx0ICAgKiAgIFVzZWQgd2hlbiByZW5kZXJpbmcgbWFya3VwIG9yIHdp
dGggYCpBdHRyaWJ1dGUoKWAuXG5cdCAgICogYXR0cmlidXRlTmFtZXNwYWNlXG5cdCAgICogcHJv
cGVydHlOYW1lOlxuXHQgICAqICAgVXNlZCBvbiBET00gbm9kZSBpbnN0YW5jZXMuIChUaGlzIGlu
Y2x1ZGVzIHByb3BlcnRpZXMgdGhhdCBtdXRhdGUgZHVlIHRvXG5cdCAgICogICBleHRlcm5hbCBm
YWN0b3JzLilcblx0ICAgKiBtdXRhdGlvbk1ldGhvZDpcblx0ICAgKiAgIElmIG5vbi1udWxsLCB1
c2VkIGluc3RlYWQgb2YgdGhlIHByb3BlcnR5IG9yIGBzZXRBdHRyaWJ1dGUoKWAgYWZ0ZXJcblx0
ICAgKiAgIGluaXRpYWwgcmVuZGVyLlxuXHQgICAqIG11c3RVc2VQcm9wZXJ0eTpcblx0ICAgKiAg
IFdoZXRoZXIgdGhlIHByb3BlcnR5IG11c3QgYmUgYWNjZXNzZWQgYW5kIG11dGF0ZWQgYXMgYW4g
b2JqZWN0IHByb3BlcnR5LlxuXHQgICAqIGhhc0Jvb2xlYW5WYWx1ZTpcblx0ICAgKiAgIFdoZXRo
ZXIgdGhlIHByb3BlcnR5IHNob3VsZCBiZSByZW1vdmVkIHdoZW4gc2V0IHRvIGEgZmFsc2V5IHZh
bHVlLlxuXHQgICAqIGhhc051bWVyaWNWYWx1ZTpcblx0ICAgKiAgIFdoZXRoZXIgdGhlIHByb3Bl
cnR5IG11c3QgYmUgbnVtZXJpYyBvciBwYXJzZSBhcyBhIG51bWVyaWMgYW5kIHNob3VsZCBiZVxu
XHQgICAqICAgcmVtb3ZlZCB3aGVuIHNldCB0byBhIGZhbHNleSB2YWx1ZS5cblx0ICAgKiBoYXNQ
b3NpdGl2ZU51bWVyaWNWYWx1ZTpcblx0ICAgKiAgIFdoZXRoZXIgdGhlIHByb3BlcnR5IG11c3Qg
YmUgcG9zaXRpdmUgbnVtZXJpYyBvciBwYXJzZSBhcyBhIHBvc2l0aXZlXG5cdCAgICogICBudW1l
cmljIGFuZCBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIHNldCB0byBhIGZhbHNleSB2YWx1ZS5cblx0
ICAgKiBoYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlOlxuXHQgICAqICAgV2hldGhlciB0aGUgcHJv
cGVydHkgY2FuIGJlIHVzZWQgYXMgYSBmbGFnIGFzIHdlbGwgYXMgd2l0aCBhIHZhbHVlLlxuXHQg
ICAqICAgUmVtb3ZlZCB3aGVuIHN0cmljdGx5IGVxdWFsIHRvIGZhbHNlOyBwcmVzZW50IHdpdGhv
dXQgYSB2YWx1ZSB3aGVuXG5cdCAgICogICBzdHJpY3RseSBlcXVhbCB0byB0cnVlOyBwcmVzZW50
IHdpdGggYSB2YWx1ZSBvdGhlcndpc2UuXG5cdCAgICovXG5cdCAgcHJvcGVydGllczoge30sXG5c
dFxuXHQgIC8qKlxuXHQgICAqIE1hcHBpbmcgZnJvbSBsb3dlcmNhc2UgcHJvcGVydHkgbmFtZXMg
dG8gdGhlIHByb3Blcmx5IGNhc2VkIHZlcnNpb24sIHVzZWRcblx0ICAgKiB0byB3YXJuIGluIHRo
ZSBjYXNlIG9mIG1pc3NpbmcgcHJvcGVydGllcy4gQXZhaWxhYmxlIG9ubHkgaW4gX19ERVZfXy5c
blx0ICAgKlxuXHQgICAqIGF1dG9mb2N1cyBpcyBwcmVkZWZpbmVkLCBiZWNhdXNlIGFkZGluZyBp
dCB0byB0aGUgcHJvcGVydHkgd2hpdGVsaXN0XG5cdCAgICogY2F1c2VzIHVuaW50ZW5kZWQgc2lk
ZSBlZmZlY3RzLlxuXHQgICAqXG5cdCAgICogQHR5cGUge09iamVjdH1cblx0ICAgKi9cblx0ICBn
ZXRQb3NzaWJsZVN0YW5kYXJkTmFtZTogIGZhbHNlID8geyBhdXRvZm9jdXM6ICdhdXRvRm9jdXMn
IH0gOiBudWxsLFxuXHRcblx0ICAvKipcblx0ICAgKiBBbGwgb2YgdGhlIGlzQ3VzdG9tQXR0cmli
dXRlKCkgZnVuY3Rpb25zIHRoYXQgaGF2ZSBiZWVuIGluamVjdGVkLlxuXHQgICAqL1xuXHQgIF9p
c0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9uczogW10sXG5cdFxuXHQgIC8qKlxuXHQgICAqIENoZWNr
cyB3aGV0aGVyIGEgcHJvcGVydHkgbmFtZSBpcyBhIGN1c3RvbSBhdHRyaWJ1dGUuXG5cdCAgICog
QG1ldGhvZFxuXHQgICAqL1xuXHQgIGlzQ3VzdG9tQXR0cmlidXRlOiBmdW5jdGlvbiAoYXR0cmli
dXRlTmFtZSkge1xuXHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBET01Qcm9wZXJ0eS5faXNDdXN0
b21BdHRyaWJ1dGVGdW5jdGlvbnMubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgdmFyIGlzQ3VzdG9t
QXR0cmlidXRlRm4gPSBET01Qcm9wZXJ0eS5faXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnNbaV07
XG5cdCAgICAgIGlmIChpc0N1c3RvbUF0dHJpYnV0ZUZuKGF0dHJpYnV0ZU5hbWUpKSB7XG5cdCAg
ICAgICAgcmV0dXJuIHRydWU7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIHJldHVybiBmYWxz
ZTtcblx0ICB9LFxuXHRcblx0ICBpbmplY3Rpb246IERPTVByb3BlcnR5SW5qZWN0aW9uXG5cdH07
XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IERPTVByb3BlcnR5O1xuXG4vKioqLyB9LFxuLyogMTYg
Ki9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykg
e1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
XHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0
XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBSZWFjdFJlZiA9IF9fd2VicGFja19yZXF1aXJl
X18oMTYwKTtcblx0dmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVf
Xyg4KTtcblx0XG5cdHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0XG5c
dC8qKlxuXHQgKiBIZWxwZXIgdG8gY2FsbCBSZWFjdFJlZi5hdHRhY2hSZWZzIHdpdGggdGhpcyBj
b21wb3NpdGUgY29tcG9uZW50LCBzcGxpdCBvdXRcblx0ICogdG8gYXZvaWQgYWxsb2NhdGlvbnMg
aW4gdGhlIHRyYW5zYWN0aW9uIG1vdW50LXJlYWR5IHF1ZXVlLlxuXHQgKi9cblx0ZnVuY3Rpb24g
YXR0YWNoUmVmcygpIHtcblx0ICBSZWFjdFJlZi5hdHRhY2hSZWZzKHRoaXMsIHRoaXMuX2N1cnJl
bnRFbGVtZW50KTtcblx0fVxuXHRcblx0dmFyIFJlYWN0UmVjb25jaWxlciA9IHtcblx0ICAvKipc
blx0ICAgKiBJbml0aWFsaXplcyB0aGUgY29tcG9uZW50LCByZW5kZXJzIG1hcmt1cCwgYW5kIHJl
Z2lzdGVycyBldmVudCBsaXN0ZW5lcnMuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0Q29t
cG9uZW50fSBpbnRlcm5hbEluc3RhbmNlXG5cdCAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRy
YW5zYWN0aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG5c
dCAgICogQHBhcmFtIHs/b2JqZWN0fSB0aGUgY29udGFpbmluZyBob3N0IGNvbXBvbmVudCBpbnN0
YW5jZVxuXHQgICAqIEBwYXJhbSB7P29iamVjdH0gaW5mbyBhYm91dCB0aGUgaG9zdCBjb250YWlu
ZXJcblx0ICAgKiBAcmV0dXJuIHs/c3RyaW5nfSBSZW5kZXJlZCBtYXJrdXAgdG8gYmUgaW5zZXJ0
ZWQgaW50byB0aGUgRE9NLlxuXHQgICAqIEBmaW5hbFxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAq
L1xuXHQgIG1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSwgdHJhbnNh
Y3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0LCBwYXJlbnREZWJ1
Z0lEKSAvLyAwIGluIHByb2R1Y3Rpb24gYW5kIGZvciByb290c1xuXHQgIHtcblx0ICAgIGlmIChm
YWxzZSkge1xuXHQgICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkge1xu
XHQgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZm9yZU1vdW50Q29t
cG9uZW50KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQsIGludGVybmFsSW5zdGFuY2UuX2N1cnJl
bnRFbGVtZW50LCBwYXJlbnREZWJ1Z0lEKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgdmFy
IG1hcmt1cCA9IGludGVybmFsSW5zdGFuY2UubW91bnRDb21wb25lbnQodHJhbnNhY3Rpb24sIGhv
c3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0LCBwYXJlbnREZWJ1Z0lEKTtcblx0
ICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudCAmJiBpbnRlcm5hbEluc3Rh
bmNlLl9jdXJyZW50RWxlbWVudC5yZWYgIT0gbnVsbCkge1xuXHQgICAgICB0cmFuc2FjdGlvbi5n
ZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGF0dGFjaFJlZnMsIGludGVybmFsSW5zdGFuY2Up
O1xuXHQgICAgfVxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIGlmIChpbnRlcm5hbEluc3Rh
bmNlLl9kZWJ1Z0lEICE9PSAwKSB7XG5cdCAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVi
dWdUb29sLm9uTW91bnRDb21wb25lbnQoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCk7XG5cdCAg
ICAgIH1cblx0ICAgIH1cblx0ICAgIHJldHVybiBtYXJrdXA7XG5cdCAgfSxcblx0XG5cdCAgLyoq
XG5cdCAgICogUmV0dXJucyBhIHZhbHVlIHRoYXQgY2FuIGJlIHBhc3NlZCB0b1xuXHQgICAqIFJl
YWN0Q29tcG9uZW50RW52aXJvbm1lbnQucmVwbGFjZU5vZGVXaXRoTWFya3VwLlxuXHQgICAqL1xu
XHQgIGdldEhvc3ROb2RlOiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSkge1xuXHQgICAgcmV0
dXJuIGludGVybmFsSW5zdGFuY2UuZ2V0SG9zdE5vZGUoKTtcblx0ICB9LFxuXHRcblx0ICAvKipc
blx0ICAgKiBSZWxlYXNlcyBhbnkgcmVzb3VyY2VzIGFsbG9jYXRlZCBieSBgbW91bnRDb21wb25l
bnRgLlxuXHQgICAqXG5cdCAgICogQGZpbmFsXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5c
dCAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UsIHNhZmVseSkg
e1xuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1
Z0lEICE9PSAwKSB7XG5cdCAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9u
QmVmb3JlVW5tb3VudENvbXBvbmVudChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lEKTtcblx0ICAg
ICAgfVxuXHQgICAgfVxuXHQgICAgUmVhY3RSZWYuZGV0YWNoUmVmcyhpbnRlcm5hbEluc3RhbmNl
LCBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudCk7XG5cdCAgICBpbnRlcm5hbEluc3Rh
bmNlLnVubW91bnRDb21wb25lbnQoc2FmZWx5KTtcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAg
ICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkge1xuXHQgICAgICAgIFJlYWN0
SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblVubW91bnRDb21wb25lbnQoaW50ZXJuYWxJbnN0
YW5jZS5fZGVidWdJRCk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICAvKipc
blx0ICAgKiBVcGRhdGUgYSBjb21wb25lbnQgdXNpbmcgYSBuZXcgZWxlbWVudC5cblx0ICAgKlxu
XHQgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGludGVybmFsSW5zdGFuY2Vcblx0ICAgKiBA
cGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnRcblx0ICAgKiBAcGFyYW0ge1JlYWN0UmVj
b25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGNv
bnRleHRcblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICByZWNlaXZlQ29tcG9uZW50OiBm
dW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSwgbmV4dEVsZW1lbnQsIHRyYW5zYWN0aW9uLCBjb250
ZXh0KSB7XG5cdCAgICB2YXIgcHJldkVsZW1lbnQgPSBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50
RWxlbWVudDtcblx0XG5cdCAgICBpZiAobmV4dEVsZW1lbnQgPT09IHByZXZFbGVtZW50ICYmIGNv
bnRleHQgPT09IGludGVybmFsSW5zdGFuY2UuX2NvbnRleHQpIHtcblx0ICAgICAgLy8gU2luY2Ug
ZWxlbWVudHMgYXJlIGltbXV0YWJsZSBhZnRlciB0aGUgb3duZXIgaXMgcmVuZGVyZWQsXG5cdCAg
ICAgIC8vIHdlIGNhbiBkbyBhIGNoZWFwIGlkZW50aXR5IGNvbXBhcmUgaGVyZSB0byBkZXRlcm1p
bmUgaWYgdGhpcyBpcyBhXG5cdCAgICAgIC8vIHN1cGVyZmx1b3VzIHJlY29uY2lsZS4gSXQncyBw
b3NzaWJsZSBmb3Igc3RhdGUgdG8gYmUgbXV0YWJsZSBidXQgc3VjaFxuXHQgICAgICAvLyBjaGFu
Z2Ugc2hvdWxkIHRyaWdnZXIgYW4gdXBkYXRlIG9mIHRoZSBvd25lciB3aGljaCB3b3VsZCByZWNy
ZWF0ZVxuXHQgICAgICAvLyB0aGUgZWxlbWVudC4gV2UgZXhwbGljaXRseSBjaGVjayBmb3IgdGhl
IGV4aXN0ZW5jZSBvZiBhbiBvd25lciBzaW5jZVxuXHQgICAgICAvLyBpdCdzIHBvc3NpYmxlIGZv
ciBhbiBlbGVtZW50IGNyZWF0ZWQgb3V0c2lkZSBhIGNvbXBvc2l0ZSB0byBiZVxuXHQgICAgICAv
LyBkZWVwbHkgbXV0YXRlZCBhbmQgcmV1c2VkLlxuXHRcblx0ICAgICAgLy8gVE9ETzogQmFpbGlu
ZyBvdXQgZWFybHkgaXMganVzdCBhIHBlcmYgb3B0aW1pemF0aW9uIHJpZ2h0P1xuXHQgICAgICAv
LyBUT0RPOiBSZW1vdmluZyB0aGUgcmV0dXJuIHN0YXRlbWVudCBzaG91bGQgYWZmZWN0IGNvcnJl
Y3RuZXNzP1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKGZhbHNlKSB7
XG5cdCAgICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lEICE9PSAwKSB7XG5cdCAgICAg
ICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uQmVmb3JlVXBkYXRlQ29tcG9uZW50
KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQsIG5leHRFbGVtZW50KTtcblx0ICAgICAgfVxuXHQg
ICAgfVxuXHRcblx0ICAgIHZhciByZWZzQ2hhbmdlZCA9IFJlYWN0UmVmLnNob3VsZFVwZGF0ZVJl
ZnMocHJldkVsZW1lbnQsIG5leHRFbGVtZW50KTtcblx0XG5cdCAgICBpZiAocmVmc0NoYW5nZWQp
IHtcblx0ICAgICAgUmVhY3RSZWYuZGV0YWNoUmVmcyhpbnRlcm5hbEluc3RhbmNlLCBwcmV2RWxl
bWVudCk7XG5cdCAgICB9XG5cdFxuXHQgICAgaW50ZXJuYWxJbnN0YW5jZS5yZWNlaXZlQ29tcG9u
ZW50KG5leHRFbGVtZW50LCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG5cdFxuXHQgICAgaWYgKHJl
ZnNDaGFuZ2VkICYmIGludGVybmFsSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50ICYmIGludGVybmFs
SW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50LnJlZiAhPSBudWxsKSB7XG5cdCAgICAgIHRyYW5zYWN0
aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoYXR0YWNoUmVmcywgaW50ZXJuYWxJbnN0
YW5jZSk7XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIGlmIChpbnRl
cm5hbEluc3RhbmNlLl9kZWJ1Z0lEICE9PSAwKSB7XG5cdCAgICAgICAgUmVhY3RJbnN0cnVtZW50
YXRpb24uZGVidWdUb29sLm9uVXBkYXRlQ29tcG9uZW50KGludGVybmFsSW5zdGFuY2UuX2RlYnVn
SUQpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogRmx1
c2ggYW55IGRpcnR5IGNoYW5nZXMgaW4gYSBjb21wb25lbnQuXG5cdCAgICpcblx0ICAgKiBAcGFy
YW0ge1JlYWN0Q29tcG9uZW50fSBpbnRlcm5hbEluc3RhbmNlXG5cdCAgICogQHBhcmFtIHtSZWFj
dFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuXHQgICAqIEBpbnRlcm5hbFxuXHQg
ICAqL1xuXHQgIHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeTogZnVuY3Rpb24gKGludGVybmFsSW5z
dGFuY2UsIHRyYW5zYWN0aW9uLCB1cGRhdGVCYXRjaE51bWJlcikge1xuXHQgICAgaWYgKGludGVy
bmFsSW5zdGFuY2UuX3VwZGF0ZUJhdGNoTnVtYmVyICE9PSB1cGRhdGVCYXRjaE51bWJlcikge1xu
XHQgICAgICAvLyBUaGUgY29tcG9uZW50J3MgZW5xdWV1ZWQgYmF0Y2ggbnVtYmVyIHNob3VsZCBh
bHdheXMgYmUgdGhlIGN1cnJlbnRcblx0ICAgICAgLy8gYmF0Y2ggb3IgdGhlIGZvbGxvd2luZyBv
bmUuXG5cdCAgICAgICBmYWxzZSA/IHdhcm5pbmcoaW50ZXJuYWxJbnN0YW5jZS5fdXBkYXRlQmF0
Y2hOdW1iZXIgPT0gbnVsbCB8fCBpbnRlcm5hbEluc3RhbmNlLl91cGRhdGVCYXRjaE51bWJlciA9
PT0gdXBkYXRlQmF0Y2hOdW1iZXIgKyAxLCAncGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5OiBVbmV4
cGVjdGVkIGJhdGNoIG51bWJlciAoY3VycmVudCAlcywgJyArICdwZW5kaW5nICVzKScsIHVwZGF0
ZUJhdGNoTnVtYmVyLCBpbnRlcm5hbEluc3RhbmNlLl91cGRhdGVCYXRjaE51bWJlcikgOiB2b2lk
IDA7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAg
ICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkge1xuXHQgICAgICAgIFJlYWN0
SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZm9yZVVwZGF0ZUNvbXBvbmVudChpbnRlcm5h
bEluc3RhbmNlLl9kZWJ1Z0lELCBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudCk7XG5c
dCAgICAgIH1cblx0ICAgIH1cblx0ICAgIGludGVybmFsSW5zdGFuY2UucGVyZm9ybVVwZGF0ZUlm
TmVjZXNzYXJ5KHRyYW5zYWN0aW9uKTtcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBpZiAo
aW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkge1xuXHQgICAgICAgIFJlYWN0SW5zdHJ1
bWVudGF0aW9uLmRlYnVnVG9vbC5vblVwZGF0ZUNvbXBvbmVudChpbnRlcm5hbEluc3RhbmNlLl9k
ZWJ1Z0lEKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5l
eHBvcnRzID0gUmVhY3RSZWNvbmNpbGVyO1xuXG4vKioqLyB9LFxuLyogMTcgKi9cbi8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxu
XHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdHZhciBfYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0XG5c
dHZhciBSZWFjdEJhc2VDbGFzc2VzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4OSk7XG5cdHZhciBS
ZWFjdENoaWxkcmVuID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMTUpO1xuXHR2YXIgUmVhY3RET01G
YWN0b3JpZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxNik7XG5cdHZhciBSZWFjdEVsZW1lbnQg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4KTtcblx0dmFyIFJlYWN0UHJvcFR5cGVzID0gX193ZWJw
YWNrX3JlcXVpcmVfXygyMTcpO1xuXHR2YXIgUmVhY3RWZXJzaW9uID0gX193ZWJwYWNrX3JlcXVp
cmVfXygyMTgpO1xuXHRcblx0dmFyIGNyZWF0ZVJlYWN0Q2xhc3MgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDIxOSk7XG5cdHZhciBvbmx5Q2hpbGQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyMyk7XG5c
dFxuXHR2YXIgY3JlYXRlRWxlbWVudCA9IFJlYWN0RWxlbWVudC5jcmVhdGVFbGVtZW50O1xuXHR2
YXIgY3JlYXRlRmFjdG9yeSA9IFJlYWN0RWxlbWVudC5jcmVhdGVGYWN0b3J5O1xuXHR2YXIgY2xv
bmVFbGVtZW50ID0gUmVhY3RFbGVtZW50LmNsb25lRWxlbWVudDtcblx0XG5cdGlmIChmYWxzZSkg
e1xuXHQgIHZhciBsb3dQcmlvcml0eVdhcm5pbmcgPSByZXF1aXJlKCcuL2xvd1ByaW9yaXR5V2Fy
bmluZycpO1xuXHQgIHZhciBjYW5EZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vY2FuRGVmaW5l
UHJvcGVydHknKTtcblx0ICB2YXIgUmVhY3RFbGVtZW50VmFsaWRhdG9yID0gcmVxdWlyZSgnLi9S
ZWFjdEVsZW1lbnRWYWxpZGF0b3InKTtcblx0ICB2YXIgZGlkV2FyblByb3BUeXBlc0RlcHJlY2F0
ZWQgPSBmYWxzZTtcblx0ICBjcmVhdGVFbGVtZW50ID0gUmVhY3RFbGVtZW50VmFsaWRhdG9yLmNy
ZWF0ZUVsZW1lbnQ7XG5cdCAgY3JlYXRlRmFjdG9yeSA9IFJlYWN0RWxlbWVudFZhbGlkYXRvci5j
cmVhdGVGYWN0b3J5O1xuXHQgIGNsb25lRWxlbWVudCA9IFJlYWN0RWxlbWVudFZhbGlkYXRvci5j
bG9uZUVsZW1lbnQ7XG5cdH1cblx0XG5cdHZhciBfX3NwcmVhZCA9IF9hc3NpZ247XG5cdHZhciBj
cmVhdGVNaXhpbiA9IGZ1bmN0aW9uIChtaXhpbikge1xuXHQgIHJldHVybiBtaXhpbjtcblx0fTtc
blx0XG5cdGlmIChmYWxzZSkge1xuXHQgIHZhciB3YXJuZWRGb3JTcHJlYWQgPSBmYWxzZTtcblx0
ICB2YXIgd2FybmVkRm9yQ3JlYXRlTWl4aW4gPSBmYWxzZTtcblx0ICBfX3NwcmVhZCA9IGZ1bmN0
aW9uICgpIHtcblx0ICAgIGxvd1ByaW9yaXR5V2FybmluZyh3YXJuZWRGb3JTcHJlYWQsICdSZWFj
dC5fX3NwcmVhZCBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQgbm90IGJlIHVzZWQuIFVzZSAnICsg
J09iamVjdC5hc3NpZ24gZGlyZWN0bHkgb3IgYW5vdGhlciBoZWxwZXIgZnVuY3Rpb24gd2l0aCBz
aW1pbGFyICcgKyAnc2VtYW50aWNzLiBZb3UgbWF5IGJlIHNlZWluZyB0aGlzIHdhcm5pbmcgZHVl
IHRvIHlvdXIgY29tcGlsZXIuICcgKyAnU2VlIGh0dHBzOi8vZmIubWUvcmVhY3Qtc3ByZWFkLWRl
cHJlY2F0aW9uIGZvciBtb3JlIGRldGFpbHMuJyk7XG5cdCAgICB3YXJuZWRGb3JTcHJlYWQgPSB0
cnVlO1xuXHQgICAgcmV0dXJuIF9hc3NpZ24uYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcblx0ICB9
O1xuXHRcblx0ICBjcmVhdGVNaXhpbiA9IGZ1bmN0aW9uIChtaXhpbikge1xuXHQgICAgbG93UHJp
b3JpdHlXYXJuaW5nKHdhcm5lZEZvckNyZWF0ZU1peGluLCAnUmVhY3QuY3JlYXRlTWl4aW4gaXMg
ZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLiAnICsgJ0luIFJlYWN0IHYxNi4wLCBp
dCB3aWxsIGJlIHJlbW92ZWQuICcgKyAnWW91IGNhbiB1c2UgdGhpcyBtaXhpbiBkaXJlY3RseSBp
bnN0ZWFkLiAnICsgJ1NlZSBodHRwczovL2ZiLm1lL2NyZWF0ZW1peGluLXdhcy1uZXZlci1pbXBs
ZW1lbnRlZCBmb3IgbW9yZSBpbmZvLicpO1xuXHQgICAgd2FybmVkRm9yQ3JlYXRlTWl4aW4gPSB0
cnVlO1xuXHQgICAgcmV0dXJuIG1peGluO1xuXHQgIH07XG5cdH1cblx0XG5cdHZhciBSZWFjdCA9
IHtcblx0ICAvLyBNb2Rlcm5cblx0XG5cdCAgQ2hpbGRyZW46IHtcblx0ICAgIG1hcDogUmVhY3RD
aGlsZHJlbi5tYXAsXG5cdCAgICBmb3JFYWNoOiBSZWFjdENoaWxkcmVuLmZvckVhY2gsXG5cdCAg
ICBjb3VudDogUmVhY3RDaGlsZHJlbi5jb3VudCxcblx0ICAgIHRvQXJyYXk6IFJlYWN0Q2hpbGRy
ZW4udG9BcnJheSxcblx0ICAgIG9ubHk6IG9ubHlDaGlsZFxuXHQgIH0sXG5cdFxuXHQgIENvbXBv
bmVudDogUmVhY3RCYXNlQ2xhc3Nlcy5Db21wb25lbnQsXG5cdCAgUHVyZUNvbXBvbmVudDogUmVh
Y3RCYXNlQ2xhc3Nlcy5QdXJlQ29tcG9uZW50LFxuXHRcblx0ICBjcmVhdGVFbGVtZW50OiBjcmVh
dGVFbGVtZW50LFxuXHQgIGNsb25lRWxlbWVudDogY2xvbmVFbGVtZW50LFxuXHQgIGlzVmFsaWRF
bGVtZW50OiBSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQsXG5cdFxuXHQgIC8vIENsYXNzaWNc
blx0XG5cdCAgUHJvcFR5cGVzOiBSZWFjdFByb3BUeXBlcyxcblx0ICBjcmVhdGVDbGFzczogY3Jl
YXRlUmVhY3RDbGFzcyxcblx0ICBjcmVhdGVGYWN0b3J5OiBjcmVhdGVGYWN0b3J5LFxuXHQgIGNy
ZWF0ZU1peGluOiBjcmVhdGVNaXhpbixcblx0XG5cdCAgLy8gVGhpcyBsb29rcyBET00gc3BlY2lm
aWMgYnV0IHRoZXNlIGFyZSBhY3R1YWxseSBpc29tb3JwaGljIGhlbHBlcnNcblx0ICAvLyBzaW5j
ZSB0aGV5IGFyZSBqdXN0IGdlbmVyYXRpbmcgRE9NIHN0cmluZ3MuXG5cdCAgRE9NOiBSZWFjdERP
TUZhY3Rvcmllcyxcblx0XG5cdCAgdmVyc2lvbjogUmVhY3RWZXJzaW9uLFxuXHRcblx0ICAvLyBE
ZXByZWNhdGVkIGhvb2sgZm9yIEpTWCBzcHJlYWQsIGRvbid0IHVzZSB0aGlzIGZvciBhbnl0aGlu
Zy5cblx0ICBfX3NwcmVhZDogX19zcHJlYWRcblx0fTtcblx0XG5cdGlmIChmYWxzZSkge1xuXHQg
IHZhciB3YXJuZWRGb3JDcmVhdGVDbGFzcyA9IGZhbHNlO1xuXHQgIGlmIChjYW5EZWZpbmVQcm9w
ZXJ0eSkge1xuXHQgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWN0LCAnUHJvcFR5cGVzJywg
e1xuXHQgICAgICBnZXQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICBsb3dQcmlvcml0eVdhcm5p
bmcoZGlkV2FyblByb3BUeXBlc0RlcHJlY2F0ZWQsICdBY2Nlc3NpbmcgUHJvcFR5cGVzIHZpYSB0
aGUgbWFpbiBSZWFjdCBwYWNrYWdlIGlzIGRlcHJlY2F0ZWQsJyArICcgYW5kIHdpbGwgYmUgcmVt
b3ZlZCBpbiAgUmVhY3QgdjE2LjAuJyArICcgVXNlIHRoZSBsYXRlc3QgYXZhaWxhYmxlIHYxNS4q
IHByb3AtdHlwZXMgcGFja2FnZSBmcm9tIG5wbSBpbnN0ZWFkLicgKyAnIEZvciBpbmZvIG9uIHVz
YWdlLCBjb21wYXRpYmlsaXR5LCBtaWdyYXRpb24gYW5kIG1vcmUsIHNlZSAnICsgJ2h0dHBzOi8v
ZmIubWUvcHJvcC10eXBlcy1kb2NzJyk7XG5cdCAgICAgICAgZGlkV2FyblByb3BUeXBlc0RlcHJl
Y2F0ZWQgPSB0cnVlO1xuXHQgICAgICAgIHJldHVybiBSZWFjdFByb3BUeXBlcztcblx0ICAgICAg
fVxuXHQgICAgfSk7XG5cdFxuXHQgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWN0LCAnY3Jl
YXRlQ2xhc3MnLCB7XG5cdCAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIGxvd1By
aW9yaXR5V2FybmluZyh3YXJuZWRGb3JDcmVhdGVDbGFzcywgJ0FjY2Vzc2luZyBjcmVhdGVDbGFz
cyB2aWEgdGhlIG1haW4gUmVhY3QgcGFja2FnZSBpcyBkZXByZWNhdGVkLCcgKyAnIGFuZCB3aWxs
IGJlIHJlbW92ZWQgaW4gUmVhY3QgdjE2LjAuJyArIFwiIFVzZSBhIHBsYWluIEphdmFTY3JpcHQg
Y2xhc3MgaW5zdGVhZC4gSWYgeW91J3JlIG5vdCB5ZXQgXCIgKyAncmVhZHkgdG8gbWlncmF0ZSwg
Y3JlYXRlLXJlYWN0LWNsYXNzIHYxNS4qIGlzIGF2YWlsYWJsZSAnICsgJ29uIG5wbSBhcyBhIHRl
bXBvcmFyeSwgZHJvcC1pbiByZXBsYWNlbWVudC4gJyArICdGb3IgbW9yZSBpbmZvIHNlZSBodHRw
czovL2ZiLm1lL3JlYWN0LWNyZWF0ZS1jbGFzcycpO1xuXHQgICAgICAgIHdhcm5lZEZvckNyZWF0
ZUNsYXNzID0gdHJ1ZTtcblx0ICAgICAgICByZXR1cm4gY3JlYXRlUmVhY3RDbGFzcztcblx0ICAg
ICAgfVxuXHQgICAgfSk7XG5cdCAgfVxuXHRcblx0ICAvLyBSZWFjdC5ET00gZmFjdG9yaWVzIGFy
ZSBkZXByZWNhdGVkLiBXcmFwIHRoZXNlIG1ldGhvZHMgc28gdGhhdFxuXHQgIC8vIGludm9jYXRp
b25zIG9mIHRoZSBSZWFjdC5ET00gbmFtZXNwYWNlIGFuZCBhbGVydCB1c2VycyB0byBzd2l0Y2hc
blx0ICAvLyB0byB0aGUgYHJlYWN0LWRvbS1mYWN0b3JpZXNgIHBhY2thZ2UuXG5cdCAgUmVhY3Qu
RE9NID0ge307XG5cdCAgdmFyIHdhcm5lZEZvckZhY3RvcmllcyA9IGZhbHNlO1xuXHQgIE9iamVj
dC5rZXlzKFJlYWN0RE9NRmFjdG9yaWVzKS5mb3JFYWNoKGZ1bmN0aW9uIChmYWN0b3J5KSB7XG5c
dCAgICBSZWFjdC5ET01bZmFjdG9yeV0gPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgIGlmICghd2Fy
bmVkRm9yRmFjdG9yaWVzKSB7XG5cdCAgICAgICAgbG93UHJpb3JpdHlXYXJuaW5nKGZhbHNlLCAn
QWNjZXNzaW5nIGZhY3RvcmllcyBsaWtlIFJlYWN0LkRPTS4lcyBoYXMgYmVlbiBkZXByZWNhdGVk
ICcgKyAnYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB2MTYuMCsuIFVzZSB0aGUgJyArICdyZWFjdC1k
b20tZmFjdG9yaWVzIHBhY2thZ2UgaW5zdGVhZC4gJyArICcgVmVyc2lvbiAxLjAgcHJvdmlkZXMg
YSBkcm9wLWluIHJlcGxhY2VtZW50LicgKyAnIEZvciBtb3JlIGluZm8sIHNlZSBodHRwczovL2Zi
Lm1lL3JlYWN0LWRvbS1mYWN0b3JpZXMnLCBmYWN0b3J5KTtcblx0ICAgICAgICB3YXJuZWRGb3JG
YWN0b3JpZXMgPSB0cnVlO1xuXHQgICAgICB9XG5cdCAgICAgIHJldHVybiBSZWFjdERPTUZhY3Rv
cmllc1tmYWN0b3J5XS5hcHBseShSZWFjdERPTUZhY3RvcmllcywgYXJndW1lbnRzKTtcblx0ICAg
IH07XG5cdCAgfSk7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3Q7XG5cbi8qKiov
IH0sXG4vKiAxOCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAq
XG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9hc3NpZ24gPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDQpO1xuXHRcblx0dmFyIFJlYWN0Q3VycmVudE93bmVyID0gX193ZWJwYWNr
X3JlcXVpcmVfXygxMSk7XG5cdFxuXHR2YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18o
Mik7XG5cdHZhciBjYW5EZWZpbmVQcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oOTMpO1xu
XHR2YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xu
XHRcblx0dmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IF9fd2VicGFja19yZXF1aXJlX18oOTEpO1xu
XHRcblx0dmFyIFJFU0VSVkVEX1BST1BTID0ge1xuXHQgIGtleTogdHJ1ZSxcblx0ICByZWY6IHRy
dWUsXG5cdCAgX19zZWxmOiB0cnVlLFxuXHQgIF9fc291cmNlOiB0cnVlXG5cdH07XG5cdFxuXHR2
YXIgc3BlY2lhbFByb3BLZXlXYXJuaW5nU2hvd24sIHNwZWNpYWxQcm9wUmVmV2FybmluZ1Nob3du
O1xuXHRcblx0ZnVuY3Rpb24gaGFzVmFsaWRSZWYoY29uZmlnKSB7XG5cdCAgaWYgKGZhbHNlKSB7
XG5cdCAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChjb25maWcsICdyZWYnKSkge1xuXHQgICAg
ICB2YXIgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjb25maWcsICdy
ZWYnKS5nZXQ7XG5cdCAgICAgIGlmIChnZXR0ZXIgJiYgZ2V0dGVyLmlzUmVhY3RXYXJuaW5nKSB7
XG5cdCAgICAgICAgcmV0dXJuIGZhbHNlO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHQg
IHJldHVybiBjb25maWcucmVmICE9PSB1bmRlZmluZWQ7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGhh
c1ZhbGlkS2V5KGNvbmZpZykge1xuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgaWYgKGhhc093blBy
b3BlcnR5LmNhbGwoY29uZmlnLCAna2V5JykpIHtcblx0ICAgICAgdmFyIGdldHRlciA9IE9iamVj
dC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoY29uZmlnLCAna2V5JykuZ2V0O1xuXHQgICAgICBp
ZiAoZ2V0dGVyICYmIGdldHRlci5pc1JlYWN0V2FybmluZykge1xuXHQgICAgICAgIHJldHVybiBm
YWxzZTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0ICByZXR1cm4gY29uZmlnLmtleSAh
PT0gdW5kZWZpbmVkO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBkZWZpbmVLZXlQcm9wV2FybmluZ0dl
dHRlcihwcm9wcywgZGlzcGxheU5hbWUpIHtcblx0ICB2YXIgd2FybkFib3V0QWNjZXNzaW5nS2V5
ID0gZnVuY3Rpb24gKCkge1xuXHQgICAgaWYgKCFzcGVjaWFsUHJvcEtleVdhcm5pbmdTaG93bikg
e1xuXHQgICAgICBzcGVjaWFsUHJvcEtleVdhcm5pbmdTaG93biA9IHRydWU7XG5cdCAgICAgICBm
YWxzZSA/IHdhcm5pbmcoZmFsc2UsICclczogYGtleWAgaXMgbm90IGEgcHJvcC4gVHJ5aW5nIHRv
IGFjY2VzcyBpdCB3aWxsIHJlc3VsdCAnICsgJ2luIGB1bmRlZmluZWRgIGJlaW5nIHJldHVybmVk
LiBJZiB5b3UgbmVlZCB0byBhY2Nlc3MgdGhlIHNhbWUgJyArICd2YWx1ZSB3aXRoaW4gdGhlIGNo
aWxkIGNvbXBvbmVudCwgeW91IHNob3VsZCBwYXNzIGl0IGFzIGEgZGlmZmVyZW50ICcgKyAncHJv
cC4gKGh0dHBzOi8vZmIubWUvcmVhY3Qtc3BlY2lhbC1wcm9wcyknLCBkaXNwbGF5TmFtZSkgOiB2
b2lkIDA7XG5cdCAgICB9XG5cdCAgfTtcblx0ICB3YXJuQWJvdXRBY2Nlc3NpbmdLZXkuaXNSZWFj
dFdhcm5pbmcgPSB0cnVlO1xuXHQgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShwcm9wcywgJ2tleScs
IHtcblx0ICAgIGdldDogd2FybkFib3V0QWNjZXNzaW5nS2V5LFxuXHQgICAgY29uZmlndXJhYmxl
OiB0cnVlXG5cdCAgfSk7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGRlZmluZVJlZlByb3BXYXJuaW5n
R2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSkge1xuXHQgIHZhciB3YXJuQWJvdXRBY2Nlc3NpbmdS
ZWYgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICBpZiAoIXNwZWNpYWxQcm9wUmVmV2FybmluZ1Nob3du
KSB7XG5cdCAgICAgIHNwZWNpYWxQcm9wUmVmV2FybmluZ1Nob3duID0gdHJ1ZTtcblx0ICAgICAg
IGZhbHNlID8gd2FybmluZyhmYWxzZSwgJyVzOiBgcmVmYCBpcyBub3QgYSBwcm9wLiBUcnlpbmcg
dG8gYWNjZXNzIGl0IHdpbGwgcmVzdWx0ICcgKyAnaW4gYHVuZGVmaW5lZGAgYmVpbmcgcmV0dXJu
ZWQuIElmIHlvdSBuZWVkIHRvIGFjY2VzcyB0aGUgc2FtZSAnICsgJ3ZhbHVlIHdpdGhpbiB0aGUg
Y2hpbGQgY29tcG9uZW50LCB5b3Ugc2hvdWxkIHBhc3MgaXQgYXMgYSBkaWZmZXJlbnQgJyArICdw
cm9wLiAoaHR0cHM6Ly9mYi5tZS9yZWFjdC1zcGVjaWFsLXByb3BzKScsIGRpc3BsYXlOYW1lKSA6
IHZvaWQgMDtcblx0ICAgIH1cblx0ICB9O1xuXHQgIHdhcm5BYm91dEFjY2Vzc2luZ1JlZi5pc1Jl
YWN0V2FybmluZyA9IHRydWU7XG5cdCAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHByb3BzLCAncmVm
Jywge1xuXHQgICAgZ2V0OiB3YXJuQWJvdXRBY2Nlc3NpbmdSZWYsXG5cdCAgICBjb25maWd1cmFi
bGU6IHRydWVcblx0ICB9KTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIEZhY3RvcnkgbWV0aG9kIHRv
IGNyZWF0ZSBhIG5ldyBSZWFjdCBlbGVtZW50LiBUaGlzIG5vIGxvbmdlciBhZGhlcmVzIHRvXG5c
dCAqIHRoZSBjbGFzcyBwYXR0ZXJuLCBzbyBkbyBub3QgdXNlIG5ldyB0byBjYWxsIGl0LiBBbHNv
LCBubyBpbnN0YW5jZW9mIGNoZWNrXG5cdCAqIHdpbGwgd29yay4gSW5zdGVhZCB0ZXN0ICQkdHlw
ZW9mIGZpZWxkIGFnYWluc3QgU3ltYm9sLmZvcigncmVhY3QuZWxlbWVudCcpIHRvIGNoZWNrXG5c
dCAqIGlmIHNvbWV0aGluZyBpcyBhIFJlYWN0IEVsZW1lbnQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7
Kn0gdHlwZVxuXHQgKiBAcGFyYW0geyp9IGtleVxuXHQgKiBAcGFyYW0ge3N0cmluZ3xvYmplY3R9
IHJlZlxuXHQgKiBAcGFyYW0geyp9IHNlbGYgQSAqdGVtcG9yYXJ5KiBoZWxwZXIgdG8gZGV0ZWN0
IHBsYWNlcyB3aGVyZSBgdGhpc2AgaXNcblx0ICogZGlmZmVyZW50IGZyb20gdGhlIGBvd25lcmAg
d2hlbiBSZWFjdC5jcmVhdGVFbGVtZW50IGlzIGNhbGxlZCwgc28gdGhhdCB3ZVxuXHQgKiBjYW4g
d2Fybi4gV2Ugd2FudCB0byBnZXQgcmlkIG9mIG93bmVyIGFuZCByZXBsYWNlIHN0cmluZyBgcmVm
YHMgd2l0aCBhcnJvd1xuXHQgKiBmdW5jdGlvbnMsIGFuZCBhcyBsb25nIGFzIGB0aGlzYCBhbmQg
b3duZXIgYXJlIHRoZSBzYW1lLCB0aGVyZSB3aWxsIGJlIG5vXG5cdCAqIGNoYW5nZSBpbiBiZWhh
dmlvci5cblx0ICogQHBhcmFtIHsqfSBzb3VyY2UgQW4gYW5ub3RhdGlvbiBvYmplY3QgKGFkZGVk
IGJ5IGEgdHJhbnNwaWxlciBvciBvdGhlcndpc2UpXG5cdCAqIGluZGljYXRpbmcgZmlsZW5hbWUs
IGxpbmUgbnVtYmVyLCBhbmQvb3Igb3RoZXIgaW5mb3JtYXRpb24uXG5cdCAqIEBwYXJhbSB7Kn0g
b3duZXJcblx0ICogQHBhcmFtIHsqfSBwcm9wc1xuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdHZh
ciBSZWFjdEVsZW1lbnQgPSBmdW5jdGlvbiAodHlwZSwga2V5LCByZWYsIHNlbGYsIHNvdXJjZSwg
b3duZXIsIHByb3BzKSB7XG5cdCAgdmFyIGVsZW1lbnQgPSB7XG5cdCAgICAvLyBUaGlzIHRhZyBh
bGxvdyB1cyB0byB1bmlxdWVseSBpZGVudGlmeSB0aGlzIGFzIGEgUmVhY3QgRWxlbWVudFxuXHQg
ICAgJCR0eXBlb2Y6IFJFQUNUX0VMRU1FTlRfVFlQRSxcblx0XG5cdCAgICAvLyBCdWlsdC1pbiBw
cm9wZXJ0aWVzIHRoYXQgYmVsb25nIG9uIHRoZSBlbGVtZW50XG5cdCAgICB0eXBlOiB0eXBlLFxu
XHQgICAga2V5OiBrZXksXG5cdCAgICByZWY6IHJlZixcblx0ICAgIHByb3BzOiBwcm9wcyxcblx0
XG5cdCAgICAvLyBSZWNvcmQgdGhlIGNvbXBvbmVudCByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcg
dGhpcyBlbGVtZW50LlxuXHQgICAgX293bmVyOiBvd25lclxuXHQgIH07XG5cdFxuXHQgIGlmIChm
YWxzZSkge1xuXHQgICAgLy8gVGhlIHZhbGlkYXRpb24gZmxhZyBpcyBjdXJyZW50bHkgbXV0YXRp
dmUuIFdlIHB1dCBpdCBvblxuXHQgICAgLy8gYW4gZXh0ZXJuYWwgYmFja2luZyBzdG9yZSBzbyB0
aGF0IHdlIGNhbiBmcmVlemUgdGhlIHdob2xlIG9iamVjdC5cblx0ICAgIC8vIFRoaXMgY2FuIGJl
IHJlcGxhY2VkIHdpdGggYSBXZWFrTWFwIG9uY2UgdGhleSBhcmUgaW1wbGVtZW50ZWQgaW5cblx0
ICAgIC8vIGNvbW1vbmx5IHVzZWQgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnRzLlxuXHQgICAgZWxl
bWVudC5fc3RvcmUgPSB7fTtcblx0XG5cdCAgICAvLyBUbyBtYWtlIGNvbXBhcmluZyBSZWFjdEVs
ZW1lbnRzIGVhc2llciBmb3IgdGVzdGluZyBwdXJwb3Nlcywgd2UgbWFrZVxuXHQgICAgLy8gdGhl
IHZhbGlkYXRpb24gZmxhZyBub24tZW51bWVyYWJsZSAod2hlcmUgcG9zc2libGUsIHdoaWNoIHNo
b3VsZFxuXHQgICAgLy8gaW5jbHVkZSBldmVyeSBlbnZpcm9ubWVudCB3ZSBydW4gdGVzdHMgaW4p
LCBzbyB0aGUgdGVzdCBmcmFtZXdvcmtcblx0ICAgIC8vIGlnbm9yZXMgaXQuXG5cdCAgICBpZiAo
Y2FuRGVmaW5lUHJvcGVydHkpIHtcblx0ICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGVsZW1l
bnQuX3N0b3JlLCAndmFsaWRhdGVkJywge1xuXHQgICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2Us
XG5cdCAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG5cdCAgICAgICAgd3JpdGFibGU6IHRydWUs
XG5cdCAgICAgICAgdmFsdWU6IGZhbHNlXG5cdCAgICAgIH0pO1xuXHQgICAgICAvLyBzZWxmIGFu
ZCBzb3VyY2UgYXJlIERFViBvbmx5IHByb3BlcnRpZXMuXG5cdCAgICAgIE9iamVjdC5kZWZpbmVQ
cm9wZXJ0eShlbGVtZW50LCAnX3NlbGYnLCB7XG5cdCAgICAgICAgY29uZmlndXJhYmxlOiBmYWxz
ZSxcblx0ICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcblx0ICAgICAgICB3cml0YWJsZTogZmFs
c2UsXG5cdCAgICAgICAgdmFsdWU6IHNlbGZcblx0ICAgICAgfSk7XG5cdCAgICAgIC8vIFR3byBl
bGVtZW50cyBjcmVhdGVkIGluIHR3byBkaWZmZXJlbnQgcGxhY2VzIHNob3VsZCBiZSBjb25zaWRl
cmVkXG5cdCAgICAgIC8vIGVxdWFsIGZvciB0ZXN0aW5nIHB1cnBvc2VzIGFuZCB0aGVyZWZvcmUg
d2UgaGlkZSBpdCBmcm9tIGVudW1lcmF0aW9uLlxuXHQgICAgICBPYmplY3QuZGVmaW5lUHJvcGVy
dHkoZWxlbWVudCwgJ19zb3VyY2UnLCB7XG5cdCAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxc
blx0ICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcblx0ICAgICAgICB3cml0YWJsZTogZmFsc2Us
XG5cdCAgICAgICAgdmFsdWU6IHNvdXJjZVxuXHQgICAgICB9KTtcblx0ICAgIH0gZWxzZSB7XG5c
dCAgICAgIGVsZW1lbnQuX3N0b3JlLnZhbGlkYXRlZCA9IGZhbHNlO1xuXHQgICAgICBlbGVtZW50
Ll9zZWxmID0gc2VsZjtcblx0ICAgICAgZWxlbWVudC5fc291cmNlID0gc291cmNlO1xuXHQgICAg
fVxuXHQgICAgaWYgKE9iamVjdC5mcmVlemUpIHtcblx0ICAgICAgT2JqZWN0LmZyZWV6ZShlbGVt
ZW50LnByb3BzKTtcblx0ICAgICAgT2JqZWN0LmZyZWV6ZShlbGVtZW50KTtcblx0ICAgIH1cblx0
ICB9XG5cdFxuXHQgIHJldHVybiBlbGVtZW50O1xuXHR9O1xuXHRcblx0LyoqXG5cdCAqIENyZWF0
ZSBhbmQgcmV0dXJuIGEgbmV3IFJlYWN0RWxlbWVudCBvZiB0aGUgZ2l2ZW4gdHlwZS5cblx0ICog
U2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5o
dG1sI3JlYWN0LmNyZWF0ZWVsZW1lbnRcblx0ICovXG5cdFJlYWN0RWxlbWVudC5jcmVhdGVFbGVt
ZW50ID0gZnVuY3Rpb24gKHR5cGUsIGNvbmZpZywgY2hpbGRyZW4pIHtcblx0ICB2YXIgcHJvcE5h
bWU7XG5cdFxuXHQgIC8vIFJlc2VydmVkIG5hbWVzIGFyZSBleHRyYWN0ZWRcblx0ICB2YXIgcHJv
cHMgPSB7fTtcblx0XG5cdCAgdmFyIGtleSA9IG51bGw7XG5cdCAgdmFyIHJlZiA9IG51bGw7XG5c
dCAgdmFyIHNlbGYgPSBudWxsO1xuXHQgIHZhciBzb3VyY2UgPSBudWxsO1xuXHRcblx0ICBpZiAo
Y29uZmlnICE9IG51bGwpIHtcblx0ICAgIGlmIChoYXNWYWxpZFJlZihjb25maWcpKSB7XG5cdCAg
ICAgIHJlZiA9IGNvbmZpZy5yZWY7XG5cdCAgICB9XG5cdCAgICBpZiAoaGFzVmFsaWRLZXkoY29u
ZmlnKSkge1xuXHQgICAgICBrZXkgPSAnJyArIGNvbmZpZy5rZXk7XG5cdCAgICB9XG5cdFxuXHQg
ICAgc2VsZiA9IGNvbmZpZy5fX3NlbGYgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBjb25maWcuX19z
ZWxmO1xuXHQgICAgc291cmNlID0gY29uZmlnLl9fc291cmNlID09PSB1bmRlZmluZWQgPyBudWxs
IDogY29uZmlnLl9fc291cmNlO1xuXHQgICAgLy8gUmVtYWluaW5nIHByb3BlcnRpZXMgYXJlIGFk
ZGVkIHRvIGEgbmV3IHByb3BzIG9iamVjdFxuXHQgICAgZm9yIChwcm9wTmFtZSBpbiBjb25maWcp
IHtcblx0ICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCBwcm9wTmFtZSkgJiYg
IVJFU0VSVkVEX1BST1BTLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuXHQgICAgICAgIHBy
b3BzW3Byb3BOYW1lXSA9IGNvbmZpZ1twcm9wTmFtZV07XG5cdCAgICAgIH1cblx0ICAgIH1cblx0
ICB9XG5cdFxuXHQgIC8vIENoaWxkcmVuIGNhbiBiZSBtb3JlIHRoYW4gb25lIGFyZ3VtZW50LCBh
bmQgdGhvc2UgYXJlIHRyYW5zZmVycmVkIG9udG9cblx0ICAvLyB0aGUgbmV3bHkgYWxsb2NhdGVk
IHByb3BzIG9iamVjdC5cblx0ICB2YXIgY2hpbGRyZW5MZW5ndGggPSBhcmd1bWVudHMubGVuZ3Ro
IC0gMjtcblx0ICBpZiAoY2hpbGRyZW5MZW5ndGggPT09IDEpIHtcblx0ICAgIHByb3BzLmNoaWxk
cmVuID0gY2hpbGRyZW47XG5cdCAgfSBlbHNlIGlmIChjaGlsZHJlbkxlbmd0aCA+IDEpIHtcblx0
ICAgIHZhciBjaGlsZEFycmF5ID0gQXJyYXkoY2hpbGRyZW5MZW5ndGgpO1xuXHQgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBjaGlsZHJlbkxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIGNoaWxkQXJyYXlb
aV0gPSBhcmd1bWVudHNbaSArIDJdO1xuXHQgICAgfVxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAg
ICAgIGlmIChPYmplY3QuZnJlZXplKSB7XG5cdCAgICAgICAgT2JqZWN0LmZyZWV6ZShjaGlsZEFy
cmF5KTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZEFy
cmF5O1xuXHQgIH1cblx0XG5cdCAgLy8gUmVzb2x2ZSBkZWZhdWx0IHByb3BzXG5cdCAgaWYgKHR5
cGUgJiYgdHlwZS5kZWZhdWx0UHJvcHMpIHtcblx0ICAgIHZhciBkZWZhdWx0UHJvcHMgPSB0eXBl
LmRlZmF1bHRQcm9wcztcblx0ICAgIGZvciAocHJvcE5hbWUgaW4gZGVmYXVsdFByb3BzKSB7XG5c
dCAgICAgIGlmIChwcm9wc1twcm9wTmFtZV0gPT09IHVuZGVmaW5lZCkge1xuXHQgICAgICAgIHBy
b3BzW3Byb3BOYW1lXSA9IGRlZmF1bHRQcm9wc1twcm9wTmFtZV07XG5cdCAgICAgIH1cblx0ICAg
IH1cblx0ICB9XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICBpZiAoa2V5IHx8IHJlZikge1xuXHQg
ICAgICBpZiAodHlwZW9mIHByb3BzLiQkdHlwZW9mID09PSAndW5kZWZpbmVkJyB8fCBwcm9wcy4k
JHR5cGVvZiAhPT0gUkVBQ1RfRUxFTUVOVF9UWVBFKSB7XG5cdCAgICAgICAgdmFyIGRpc3BsYXlO
YW1lID0gdHlwZW9mIHR5cGUgPT09ICdmdW5jdGlvbicgPyB0eXBlLmRpc3BsYXlOYW1lIHx8IHR5
cGUubmFtZSB8fCAnVW5rbm93bicgOiB0eXBlO1xuXHQgICAgICAgIGlmIChrZXkpIHtcblx0ICAg
ICAgICAgIGRlZmluZUtleVByb3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSk7XG5c
dCAgICAgICAgfVxuXHQgICAgICAgIGlmIChyZWYpIHtcblx0ICAgICAgICAgIGRlZmluZVJlZlBy
b3BXYXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSk7XG5cdCAgICAgICAgfVxuXHQgICAg
ICB9XG5cdCAgICB9XG5cdCAgfVxuXHQgIHJldHVybiBSZWFjdEVsZW1lbnQodHlwZSwga2V5LCBy
ZWYsIHNlbGYsIHNvdXJjZSwgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCwgcHJvcHMpO1xuXHR9
O1xuXHRcblx0LyoqXG5cdCAqIFJldHVybiBhIGZ1bmN0aW9uIHRoYXQgcHJvZHVjZXMgUmVhY3RF
bGVtZW50cyBvZiBhIGdpdmVuIHR5cGUuXG5cdCAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1
Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jcmVhdGVmYWN0b3J5XG5c
dCAqL1xuXHRSZWFjdEVsZW1lbnQuY3JlYXRlRmFjdG9yeSA9IGZ1bmN0aW9uICh0eXBlKSB7XG5c
dCAgdmFyIGZhY3RvcnkgPSBSZWFjdEVsZW1lbnQuY3JlYXRlRWxlbWVudC5iaW5kKG51bGwsIHR5
cGUpO1xuXHQgIC8vIEV4cG9zZSB0aGUgdHlwZSBvbiB0aGUgZmFjdG9yeSBhbmQgdGhlIHByb3Rv
dHlwZSBzbyB0aGF0IGl0IGNhbiBiZVxuXHQgIC8vIGVhc2lseSBhY2Nlc3NlZCBvbiBlbGVtZW50
cy4gRS5nLiBgPEZvbyAvPi50eXBlID09PSBGb29gLlxuXHQgIC8vIFRoaXMgc2hvdWxkIG5vdCBi
ZSBuYW1lZCBgY29uc3RydWN0b3JgIHNpbmNlIHRoaXMgbWF5IG5vdCBiZSB0aGUgZnVuY3Rpb25c
blx0ICAvLyB0aGF0IGNyZWF0ZWQgdGhlIGVsZW1lbnQsIGFuZCBpdCBtYXkgbm90IGV2ZW4gYmUg
YSBjb25zdHJ1Y3Rvci5cblx0ICAvLyBMZWdhY3kgaG9vayBUT0RPOiBXYXJuIGlmIHRoaXMgaXMg
YWNjZXNzZWRcblx0ICBmYWN0b3J5LnR5cGUgPSB0eXBlO1xuXHQgIHJldHVybiBmYWN0b3J5O1xu
XHR9O1xuXHRcblx0UmVhY3RFbGVtZW50LmNsb25lQW5kUmVwbGFjZUtleSA9IGZ1bmN0aW9uIChv
bGRFbGVtZW50LCBuZXdLZXkpIHtcblx0ICB2YXIgbmV3RWxlbWVudCA9IFJlYWN0RWxlbWVudChv
bGRFbGVtZW50LnR5cGUsIG5ld0tleSwgb2xkRWxlbWVudC5yZWYsIG9sZEVsZW1lbnQuX3NlbGYs
IG9sZEVsZW1lbnQuX3NvdXJjZSwgb2xkRWxlbWVudC5fb3duZXIsIG9sZEVsZW1lbnQucHJvcHMp
O1xuXHRcblx0ICByZXR1cm4gbmV3RWxlbWVudDtcblx0fTtcblx0XG5cdC8qKlxuXHQgKiBDbG9u
ZSBhbmQgcmV0dXJuIGEgbmV3IFJlYWN0RWxlbWVudCB1c2luZyBlbGVtZW50IGFzIHRoZSBzdGFy
dGluZyBwb2ludC5cblx0ICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2Rv
Y3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNsb25lZWxlbWVudFxuXHQgKi9cblx0UmVhY3RF
bGVtZW50LmNsb25lRWxlbWVudCA9IGZ1bmN0aW9uIChlbGVtZW50LCBjb25maWcsIGNoaWxkcmVu
KSB7XG5cdCAgdmFyIHByb3BOYW1lO1xuXHRcblx0ICAvLyBPcmlnaW5hbCBwcm9wcyBhcmUgY29w
aWVkXG5cdCAgdmFyIHByb3BzID0gX2Fzc2lnbih7fSwgZWxlbWVudC5wcm9wcyk7XG5cdFxuXHQg
IC8vIFJlc2VydmVkIG5hbWVzIGFyZSBleHRyYWN0ZWRcblx0ICB2YXIga2V5ID0gZWxlbWVudC5r
ZXk7XG5cdCAgdmFyIHJlZiA9IGVsZW1lbnQucmVmO1xuXHQgIC8vIFNlbGYgaXMgcHJlc2VydmVk
IHNpbmNlIHRoZSBvd25lciBpcyBwcmVzZXJ2ZWQuXG5cdCAgdmFyIHNlbGYgPSBlbGVtZW50Ll9z
ZWxmO1xuXHQgIC8vIFNvdXJjZSBpcyBwcmVzZXJ2ZWQgc2luY2UgY2xvbmVFbGVtZW50IGlzIHVu
bGlrZWx5IHRvIGJlIHRhcmdldGVkIGJ5IGFcblx0ICAvLyB0cmFuc3BpbGVyLCBhbmQgdGhlIG9y
aWdpbmFsIHNvdXJjZSBpcyBwcm9iYWJseSBhIGJldHRlciBpbmRpY2F0b3Igb2YgdGhlXG5cdCAg
Ly8gdHJ1ZSBvd25lci5cblx0ICB2YXIgc291cmNlID0gZWxlbWVudC5fc291cmNlO1xuXHRcblx0
ICAvLyBPd25lciB3aWxsIGJlIHByZXNlcnZlZCwgdW5sZXNzIHJlZiBpcyBvdmVycmlkZGVuXG5c
dCAgdmFyIG93bmVyID0gZWxlbWVudC5fb3duZXI7XG5cdFxuXHQgIGlmIChjb25maWcgIT0gbnVs
bCkge1xuXHQgICAgaWYgKGhhc1ZhbGlkUmVmKGNvbmZpZykpIHtcblx0ICAgICAgLy8gU2lsZW50
bHkgc3RlYWwgdGhlIHJlZiBmcm9tIHRoZSBwYXJlbnQuXG5cdCAgICAgIHJlZiA9IGNvbmZpZy5y
ZWY7XG5cdCAgICAgIG93bmVyID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudDtcblx0ICAgIH1c
blx0ICAgIGlmIChoYXNWYWxpZEtleShjb25maWcpKSB7XG5cdCAgICAgIGtleSA9ICcnICsgY29u
ZmlnLmtleTtcblx0ICAgIH1cblx0XG5cdCAgICAvLyBSZW1haW5pbmcgcHJvcGVydGllcyBvdmVy
cmlkZSBleGlzdGluZyBwcm9wc1xuXHQgICAgdmFyIGRlZmF1bHRQcm9wcztcblx0ICAgIGlmIChl
bGVtZW50LnR5cGUgJiYgZWxlbWVudC50eXBlLmRlZmF1bHRQcm9wcykge1xuXHQgICAgICBkZWZh
dWx0UHJvcHMgPSBlbGVtZW50LnR5cGUuZGVmYXVsdFByb3BzO1xuXHQgICAgfVxuXHQgICAgZm9y
IChwcm9wTmFtZSBpbiBjb25maWcpIHtcblx0ICAgICAgaWYgKGhhc093blByb3BlcnR5LmNhbGwo
Y29uZmlnLCBwcm9wTmFtZSkgJiYgIVJFU0VSVkVEX1BST1BTLmhhc093blByb3BlcnR5KHByb3BO
YW1lKSkge1xuXHQgICAgICAgIGlmIChjb25maWdbcHJvcE5hbWVdID09PSB1bmRlZmluZWQgJiYg
ZGVmYXVsdFByb3BzICE9PSB1bmRlZmluZWQpIHtcblx0ICAgICAgICAgIC8vIFJlc29sdmUgZGVm
YXVsdCBwcm9wc1xuXHQgICAgICAgICAgcHJvcHNbcHJvcE5hbWVdID0gZGVmYXVsdFByb3BzW3By
b3BOYW1lXTtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgcHJvcHNbcHJvcE5hbWVd
ID0gY29uZmlnW3Byb3BOYW1lXTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH1cblx0
ICB9XG5cdFxuXHQgIC8vIENoaWxkcmVuIGNhbiBiZSBtb3JlIHRoYW4gb25lIGFyZ3VtZW50LCBh
bmQgdGhvc2UgYXJlIHRyYW5zZmVycmVkIG9udG9cblx0ICAvLyB0aGUgbmV3bHkgYWxsb2NhdGVk
IHByb3BzIG9iamVjdC5cblx0ICB2YXIgY2hpbGRyZW5MZW5ndGggPSBhcmd1bWVudHMubGVuZ3Ro
IC0gMjtcblx0ICBpZiAoY2hpbGRyZW5MZW5ndGggPT09IDEpIHtcblx0ICAgIHByb3BzLmNoaWxk
cmVuID0gY2hpbGRyZW47XG5cdCAgfSBlbHNlIGlmIChjaGlsZHJlbkxlbmd0aCA+IDEpIHtcblx0
ICAgIHZhciBjaGlsZEFycmF5ID0gQXJyYXkoY2hpbGRyZW5MZW5ndGgpO1xuXHQgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBjaGlsZHJlbkxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIGNoaWxkQXJyYXlb
aV0gPSBhcmd1bWVudHNbaSArIDJdO1xuXHQgICAgfVxuXHQgICAgcHJvcHMuY2hpbGRyZW4gPSBj
aGlsZEFycmF5O1xuXHQgIH1cblx0XG5cdCAgcmV0dXJuIFJlYWN0RWxlbWVudChlbGVtZW50LnR5
cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIG93bmVyLCBwcm9wcyk7XG5cdH07XG5cdFxuXHQv
Kipcblx0ICogVmVyaWZpZXMgdGhlIG9iamVjdCBpcyBhIFJlYWN0RWxlbWVudC5cblx0ICogU2Vl
IGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1s
I3JlYWN0LmlzdmFsaWRlbGVtZW50XG5cdCAqIEBwYXJhbSB7P29iamVjdH0gb2JqZWN0XG5cdCAq
IEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgYG9iamVjdGAgaXMgYSB2YWxpZCBjb21wb25lbnQu
XG5cdCAqIEBmaW5hbFxuXHQgKi9cblx0UmVhY3RFbGVtZW50LmlzVmFsaWRFbGVtZW50ID0gZnVu
Y3Rpb24gKG9iamVjdCkge1xuXHQgIHJldHVybiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAm
JiBvYmplY3QgIT09IG51bGwgJiYgb2JqZWN0LiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5UX1RZ
UEU7XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0RWxlbWVudDtcblxuLyoqKi8g
fSxcbi8qIDE5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19y
ZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpc
blx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXHRcblx0dmFyIEV2ZW50UGx1Z2luUmVnaXN0cnkgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDM2KTtcblx0dmFyIEV2ZW50UGx1Z2luVXRpbHMgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDM3KTtcblx0dmFyIFJlYWN0RXJyb3JVdGlscyA9IF9fd2VicGFja19yZXF1
aXJlX18oNDEpO1xuXHRcblx0dmFyIGFjY3VtdWxhdGVJbnRvID0gX193ZWJwYWNrX3JlcXVpcmVf
Xyg3MCk7XG5cdHZhciBmb3JFYWNoQWNjdW11bGF0ZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcx
KTtcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdFxuXHQvKipc
blx0ICogSW50ZXJuYWwgc3RvcmUgZm9yIGV2ZW50IGxpc3RlbmVyc1xuXHQgKi9cblx0dmFyIGxp
c3RlbmVyQmFuayA9IHt9O1xuXHRcblx0LyoqXG5cdCAqIEludGVybmFsIHF1ZXVlIG9mIGV2ZW50
cyB0aGF0IGhhdmUgYWNjdW11bGF0ZWQgdGhlaXIgZGlzcGF0Y2hlcyBhbmQgYXJlXG5cdCAqIHdh
aXRpbmcgdG8gaGF2ZSB0aGVpciBkaXNwYXRjaGVzIGV4ZWN1dGVkLlxuXHQgKi9cblx0dmFyIGV2
ZW50UXVldWUgPSBudWxsO1xuXHRcblx0LyoqXG5cdCAqIERpc3BhdGNoZXMgYW4gZXZlbnQgYW5k
IHJlbGVhc2VzIGl0IGJhY2sgaW50byB0aGUgcG9vbCwgdW5sZXNzIHBlcnNpc3RlbnQuXG5cdCAq
XG5cdCAqIEBwYXJhbSB7P29iamVjdH0gZXZlbnQgU3ludGhldGljIGV2ZW50IHRvIGJlIGRpc3Bh
dGNoZWQuXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gc2ltdWxhdGVkIElmIHRoZSBldmVudCBpcyBz
aW11bGF0ZWQgKGNoYW5nZXMgZXhuIGJlaGF2aW9yKVxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0
dmFyIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZSA9IGZ1bmN0aW9uIChldmVudCwgc2ltdWxh
dGVkKSB7XG5cdCAgaWYgKGV2ZW50KSB7XG5cdCAgICBFdmVudFBsdWdpblV0aWxzLmV4ZWN1dGVE
aXNwYXRjaGVzSW5PcmRlcihldmVudCwgc2ltdWxhdGVkKTtcblx0XG5cdCAgICBpZiAoIWV2ZW50
LmlzUGVyc2lzdGVudCgpKSB7XG5cdCAgICAgIGV2ZW50LmNvbnN0cnVjdG9yLnJlbGVhc2UoZXZl
bnQpO1xuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0dmFyIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVs
ZWFzZVNpbXVsYXRlZCA9IGZ1bmN0aW9uIChlKSB7XG5cdCAgcmV0dXJuIGV4ZWN1dGVEaXNwYXRj
aGVzQW5kUmVsZWFzZShlLCB0cnVlKTtcblx0fTtcblx0dmFyIGV4ZWN1dGVEaXNwYXRjaGVzQW5k
UmVsZWFzZVRvcExldmVsID0gZnVuY3Rpb24gKGUpIHtcblx0ICByZXR1cm4gZXhlY3V0ZURpc3Bh
dGNoZXNBbmRSZWxlYXNlKGUsIGZhbHNlKTtcblx0fTtcblx0XG5cdHZhciBnZXREaWN0aW9uYXJ5
S2V5ID0gZnVuY3Rpb24gKGluc3QpIHtcblx0ICAvLyBQcmV2ZW50cyBWOCBwZXJmb3JtYW5jZSBp
c3N1ZTpcblx0ICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC83MjMy
XG5cdCAgcmV0dXJuICcuJyArIGluc3QuX3Jvb3ROb2RlSUQ7XG5cdH07XG5cdFxuXHRmdW5jdGlv
biBpc0ludGVyYWN0aXZlKHRhZykge1xuXHQgIHJldHVybiB0YWcgPT09ICdidXR0b24nIHx8IHRh
ZyA9PT0gJ2lucHV0JyB8fCB0YWcgPT09ICdzZWxlY3QnIHx8IHRhZyA9PT0gJ3RleHRhcmVhJztc
blx0fVxuXHRcblx0ZnVuY3Rpb24gc2hvdWxkUHJldmVudE1vdXNlRXZlbnQobmFtZSwgdHlwZSwg
cHJvcHMpIHtcblx0ICBzd2l0Y2ggKG5hbWUpIHtcblx0ICAgIGNhc2UgJ29uQ2xpY2snOlxuXHQg
ICAgY2FzZSAnb25DbGlja0NhcHR1cmUnOlxuXHQgICAgY2FzZSAnb25Eb3VibGVDbGljayc6XG5c
dCAgICBjYXNlICdvbkRvdWJsZUNsaWNrQ2FwdHVyZSc6XG5cdCAgICBjYXNlICdvbk1vdXNlRG93
bic6XG5cdCAgICBjYXNlICdvbk1vdXNlRG93bkNhcHR1cmUnOlxuXHQgICAgY2FzZSAnb25Nb3Vz
ZU1vdmUnOlxuXHQgICAgY2FzZSAnb25Nb3VzZU1vdmVDYXB0dXJlJzpcblx0ICAgIGNhc2UgJ29u
TW91c2VVcCc6XG5cdCAgICBjYXNlICdvbk1vdXNlVXBDYXB0dXJlJzpcblx0ICAgICAgcmV0dXJu
ICEhKHByb3BzLmRpc2FibGVkICYmIGlzSW50ZXJhY3RpdmUodHlwZSkpO1xuXHQgICAgZGVmYXVs
dDpcblx0ICAgICAgcmV0dXJuIGZhbHNlO1xuXHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIFRo
aXMgaXMgYSB1bmlmaWVkIGludGVyZmFjZSBmb3IgZXZlbnQgcGx1Z2lucyB0byBiZSBpbnN0YWxs
ZWQgYW5kIGNvbmZpZ3VyZWQuXG5cdCAqXG5cdCAqIEV2ZW50IHBsdWdpbnMgY2FuIGltcGxlbWVu
dCB0aGUgZm9sbG93aW5nIHByb3BlcnRpZXM6XG5cdCAqXG5cdCAqICAgYGV4dHJhY3RFdmVudHNg
IHtmdW5jdGlvbihzdHJpbmcsIERPTUV2ZW50VGFyZ2V0LCBzdHJpbmcsIG9iamVjdCk6ICp9XG5c
dCAqICAgICBSZXF1aXJlZC4gV2hlbiBhIHRvcC1sZXZlbCBldmVudCBpcyBmaXJlZCwgdGhpcyBt
ZXRob2QgaXMgZXhwZWN0ZWQgdG9cblx0ICogICAgIGV4dHJhY3Qgc3ludGhldGljIGV2ZW50cyB0
aGF0IHdpbGwgaW4gdHVybiBiZSBxdWV1ZWQgYW5kIGRpc3BhdGNoZWQuXG5cdCAqXG5cdCAqICAg
YGV2ZW50VHlwZXNgIHtvYmplY3R9XG5cdCAqICAgICBPcHRpb25hbCwgcGx1Z2lucyB0aGF0IGZp
cmUgZXZlbnRzIG11c3QgcHVibGlzaCBhIG1hcHBpbmcgb2YgcmVnaXN0cmF0aW9uXG5cdCAqICAg
ICBuYW1lcyB0aGF0IGFyZSB1c2VkIHRvIHJlZ2lzdGVyIGxpc3RlbmVycy4gVmFsdWVzIG9mIHRo
aXMgbWFwcGluZyBtdXN0XG5cdCAqICAgICBiZSBvYmplY3RzIHRoYXQgY29udGFpbiBgcmVnaXN0
cmF0aW9uTmFtZWAgb3IgYHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzYC5cblx0ICpcblx0ICogICBg
ZXhlY3V0ZURpc3BhdGNoYCB7ZnVuY3Rpb24ob2JqZWN0LCBmdW5jdGlvbiwgc3RyaW5nKX1cblx0
ICogICAgIE9wdGlvbmFsLCBhbGxvd3MgcGx1Z2lucyB0byBvdmVycmlkZSBob3cgYW4gZXZlbnQg
Z2V0cyBkaXNwYXRjaGVkLiBCeVxuXHQgKiAgICAgZGVmYXVsdCwgdGhlIGxpc3RlbmVyIGlzIHNp
bXBseSBpbnZva2VkLlxuXHQgKlxuXHQgKiBFYWNoIHBsdWdpbiB0aGF0IGlzIGluamVjdGVkIGlu
dG8gYEV2ZW50c1BsdWdpbkh1YmAgaXMgaW1tZWRpYXRlbHkgb3BlcmFibGUuXG5cdCAqXG5cdCAq
IEBwdWJsaWNcblx0ICovXG5cdHZhciBFdmVudFBsdWdpbkh1YiA9IHtcblx0ICAvKipcblx0ICAg
KiBNZXRob2RzIGZvciBpbmplY3RpbmcgZGVwZW5kZW5jaWVzLlxuXHQgICAqL1xuXHQgIGluamVj
dGlvbjoge1xuXHQgICAgLyoqXG5cdCAgICAgKiBAcGFyYW0ge2FycmF5fSBJbmplY3RlZEV2ZW50
UGx1Z2luT3JkZXJcblx0ICAgICAqIEBwdWJsaWNcblx0ICAgICAqL1xuXHQgICAgaW5qZWN0RXZl
bnRQbHVnaW5PcmRlcjogRXZlbnRQbHVnaW5SZWdpc3RyeS5pbmplY3RFdmVudFBsdWdpbk9yZGVy
LFxuXHRcblx0ICAgIC8qKlxuXHQgICAgICogQHBhcmFtIHtvYmplY3R9IGluamVjdGVkTmFtZXNU
b1BsdWdpbnMgTWFwIGZyb20gbmFtZXMgdG8gcGx1Z2luIG1vZHVsZXMuXG5cdCAgICAgKi9cblx0
ICAgIGluamVjdEV2ZW50UGx1Z2luc0J5TmFtZTogRXZlbnRQbHVnaW5SZWdpc3RyeS5pbmplY3RF
dmVudFBsdWdpbnNCeU5hbWVcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBTdG9yZXMgYGxp
c3RlbmVyYCBhdCBgbGlzdGVuZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdW2tleV1gLiBJcyBpZGVt
cG90ZW50LlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGluc3QgVGhlIGluc3RhbmNl
LCB3aGljaCBpcyB0aGUgc291cmNlIG9mIGV2ZW50cy5cblx0ICAgKiBAcGFyYW0ge3N0cmluZ30g
cmVnaXN0cmF0aW9uTmFtZSBOYW1lIG9mIGxpc3RlbmVyIChlLmcuIGBvbkNsaWNrYCkuXG5cdCAg
ICogQHBhcmFtIHtmdW5jdGlvbn0gbGlzdGVuZXIgVGhlIGNhbGxiYWNrIHRvIHN0b3JlLlxuXHQg
ICAqL1xuXHQgIHB1dExpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSwg
bGlzdGVuZXIpIHtcblx0ICAgICEodHlwZW9mIGxpc3RlbmVyID09PSAnZnVuY3Rpb24nKSA/ICBm
YWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0V4cGVjdGVkICVzIGxpc3RlbmVyIHRvIGJlIGEgZnVu
Y3Rpb24sIGluc3RlYWQgZ290IHR5cGUgJXMnLCByZWdpc3RyYXRpb25OYW1lLCB0eXBlb2YgbGlz
dGVuZXIpIDogX3Byb2RJbnZhcmlhbnQoJzk0JywgcmVnaXN0cmF0aW9uTmFtZSwgdHlwZW9mIGxp
c3RlbmVyKSA6IHZvaWQgMDtcblx0XG5cdCAgICB2YXIga2V5ID0gZ2V0RGljdGlvbmFyeUtleShp
bnN0KTtcblx0ICAgIHZhciBiYW5rRm9yUmVnaXN0cmF0aW9uTmFtZSA9IGxpc3RlbmVyQmFua1ty
ZWdpc3RyYXRpb25OYW1lXSB8fCAobGlzdGVuZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdID0ge30p
O1xuXHQgICAgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWVba2V5XSA9IGxpc3RlbmVyO1xuXHRcblx0
ICAgIHZhciBQbHVnaW5Nb2R1bGUgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5h
bWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdO1xuXHQgICAgaWYgKFBsdWdpbk1vZHVsZSAmJiBQ
bHVnaW5Nb2R1bGUuZGlkUHV0TGlzdGVuZXIpIHtcblx0ICAgICAgUGx1Z2luTW9kdWxlLmRpZFB1
dExpc3RlbmVyKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyKTtcblx0ICAgIH1cblx0
ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBAcGFyYW0ge29iamVjdH0gaW5zdCBUaGUgaW5zdGFu
Y2UsIHdoaWNoIGlzIHRoZSBzb3VyY2Ugb2YgZXZlbnRzLlxuXHQgICAqIEBwYXJhbSB7c3RyaW5n
fSByZWdpc3RyYXRpb25OYW1lIE5hbWUgb2YgbGlzdGVuZXIgKGUuZy4gYG9uQ2xpY2tgKS5cblx0
ICAgKiBAcmV0dXJuIHs/ZnVuY3Rpb259IFRoZSBzdG9yZWQgY2FsbGJhY2suXG5cdCAgICovXG5c
dCAgZ2V0TGlzdGVuZXI6IGZ1bmN0aW9uIChpbnN0LCByZWdpc3RyYXRpb25OYW1lKSB7XG5cdCAg
ICAvLyBUT0RPOiBzaG91bGRQcmV2ZW50TW91c2VFdmVudCBpcyBET00tc3BlY2lmaWMgYW5kIGRl
ZmluaXRlbHkgc2hvdWxkIG5vdFxuXHQgICAgLy8gbGl2ZSBoZXJlOyBuZWVkcyB0byBiZSBtb3Zl
ZCB0byBhIGJldHRlciBwbGFjZSBzb29uXG5cdCAgICB2YXIgYmFua0ZvclJlZ2lzdHJhdGlvbk5h
bWUgPSBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFtZV07XG5cdCAgICBpZiAoc2hvdWxkUHJl
dmVudE1vdXNlRXZlbnQocmVnaXN0cmF0aW9uTmFtZSwgaW5zdC5fY3VycmVudEVsZW1lbnQudHlw
ZSwgaW5zdC5fY3VycmVudEVsZW1lbnQucHJvcHMpKSB7XG5cdCAgICAgIHJldHVybiBudWxsO1xu
XHQgICAgfVxuXHQgICAgdmFyIGtleSA9IGdldERpY3Rpb25hcnlLZXkoaW5zdCk7XG5cdCAgICBy
ZXR1cm4gYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWUgJiYgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWVb
a2V5XTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBEZWxldGVzIGEgbGlzdGVuZXIgZnJv
bSB0aGUgcmVnaXN0cmF0aW9uIGJhbmsuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge29iamVjdH0g
aW5zdCBUaGUgaW5zdGFuY2UsIHdoaWNoIGlzIHRoZSBzb3VyY2Ugb2YgZXZlbnRzLlxuXHQgICAq
IEBwYXJhbSB7c3RyaW5nfSByZWdpc3RyYXRpb25OYW1lIE5hbWUgb2YgbGlzdGVuZXIgKGUuZy4g
YG9uQ2xpY2tgKS5cblx0ICAgKi9cblx0ICBkZWxldGVMaXN0ZW5lcjogZnVuY3Rpb24gKGluc3Qs
IHJlZ2lzdHJhdGlvbk5hbWUpIHtcblx0ICAgIHZhciBQbHVnaW5Nb2R1bGUgPSBFdmVudFBsdWdp
blJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdO1xuXHQg
ICAgaWYgKFBsdWdpbk1vZHVsZSAmJiBQbHVnaW5Nb2R1bGUud2lsbERlbGV0ZUxpc3RlbmVyKSB7
XG5cdCAgICAgIFBsdWdpbk1vZHVsZS53aWxsRGVsZXRlTGlzdGVuZXIoaW5zdCwgcmVnaXN0cmF0
aW9uTmFtZSk7XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1l
ID0gbGlzdGVuZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdO1xuXHQgICAgLy8gVE9ETzogVGhpcyBz
aG91bGQgbmV2ZXIgYmUgbnVsbCAtLSB3aGVuIGlzIGl0P1xuXHQgICAgaWYgKGJhbmtGb3JSZWdp
c3RyYXRpb25OYW1lKSB7XG5cdCAgICAgIHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5S2V5KGluc3Qp
O1xuXHQgICAgICBkZWxldGUgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWVba2V5XTtcblx0ICAgIH1c
blx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBEZWxldGVzIGFsbCBsaXN0ZW5lcnMgZm9yIHRo
ZSBET00gZWxlbWVudCB3aXRoIHRoZSBzdXBwbGllZCBJRC5cblx0ICAgKlxuXHQgICAqIEBwYXJh
bSB7b2JqZWN0fSBpbnN0IFRoZSBpbnN0YW5jZSwgd2hpY2ggaXMgdGhlIHNvdXJjZSBvZiBldmVu
dHMuXG5cdCAgICovXG5cdCAgZGVsZXRlQWxsTGlzdGVuZXJzOiBmdW5jdGlvbiAoaW5zdCkge1xu
XHQgICAgdmFyIGtleSA9IGdldERpY3Rpb25hcnlLZXkoaW5zdCk7XG5cdCAgICBmb3IgKHZhciBy
ZWdpc3RyYXRpb25OYW1lIGluIGxpc3RlbmVyQmFuaykge1xuXHQgICAgICBpZiAoIWxpc3RlbmVy
QmFuay5oYXNPd25Qcm9wZXJ0eShyZWdpc3RyYXRpb25OYW1lKSkge1xuXHQgICAgICAgIGNvbnRp
bnVlO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICBpZiAoIWxpc3RlbmVyQmFua1tyZWdpc3RyYXRp
b25OYW1lXVtrZXldKSB7XG5cdCAgICAgICAgY29udGludWU7XG5cdCAgICAgIH1cblx0XG5cdCAg
ICAgIHZhciBQbHVnaW5Nb2R1bGUgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5h
bWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdO1xuXHQgICAgICBpZiAoUGx1Z2luTW9kdWxlICYm
IFBsdWdpbk1vZHVsZS53aWxsRGVsZXRlTGlzdGVuZXIpIHtcblx0ICAgICAgICBQbHVnaW5Nb2R1
bGUud2lsbERlbGV0ZUxpc3RlbmVyKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUpO1xuXHQgICAgICB9
XG5cdFxuXHQgICAgICBkZWxldGUgbGlzdGVuZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdW2tleV07
XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogQWxsb3dzIHJlZ2lzdGVyZWQg
cGx1Z2lucyBhbiBvcHBvcnR1bml0eSB0byBleHRyYWN0IGV2ZW50cyBmcm9tIHRvcC1sZXZlbFxu
XHQgICAqIG5hdGl2ZSBicm93c2VyIGV2ZW50cy5cblx0ICAgKlxuXHQgICAqIEByZXR1cm4geyp9
IEFuIGFjY3VtdWxhdGlvbiBvZiBzeW50aGV0aWMgZXZlbnRzLlxuXHQgICAqIEBpbnRlcm5hbFxu
XHQgICAqL1xuXHQgIGV4dHJhY3RFdmVudHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRhcmdl
dEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuXHQgICAgdmFyIGV2ZW50
cztcblx0ICAgIHZhciBwbHVnaW5zID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5wbHVnaW5zO1xuXHQg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwbHVnaW5zLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIC8v
IE5vdCBldmVyeSBwbHVnaW4gaW4gdGhlIG9yZGVyaW5nIG1heSBiZSBsb2FkZWQgYXQgcnVudGlt
ZS5cblx0ICAgICAgdmFyIHBvc3NpYmxlUGx1Z2luID0gcGx1Z2luc1tpXTtcblx0ICAgICAgaWYg
KHBvc3NpYmxlUGx1Z2luKSB7XG5cdCAgICAgICAgdmFyIGV4dHJhY3RlZEV2ZW50cyA9IHBvc3Np
YmxlUGx1Z2luLmV4dHJhY3RFdmVudHModG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVF
dmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuXHQgICAgICAgIGlmIChleHRyYWN0ZWRFdmVudHMp
IHtcblx0ICAgICAgICAgIGV2ZW50cyA9IGFjY3VtdWxhdGVJbnRvKGV2ZW50cywgZXh0cmFjdGVk
RXZlbnRzKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIHJldHVybiBl
dmVudHM7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogRW5xdWV1ZXMgYSBzeW50aGV0aWMg
ZXZlbnQgdGhhdCBzaG91bGQgYmUgZGlzcGF0Y2hlZCB3aGVuXG5cdCAgICogYHByb2Nlc3NFdmVu
dFF1ZXVlYCBpcyBpbnZva2VkLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHsqfSBldmVudHMgQW4g
YWNjdW11bGF0aW9uIG9mIHN5bnRoZXRpYyBldmVudHMuXG5cdCAgICogQGludGVybmFsXG5cdCAg
ICovXG5cdCAgZW5xdWV1ZUV2ZW50czogZnVuY3Rpb24gKGV2ZW50cykge1xuXHQgICAgaWYgKGV2
ZW50cykge1xuXHQgICAgICBldmVudFF1ZXVlID0gYWNjdW11bGF0ZUludG8oZXZlbnRRdWV1ZSwg
ZXZlbnRzKTtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBEaXNwYXRjaGVz
IGFsbCBzeW50aGV0aWMgZXZlbnRzIG9uIHRoZSBldmVudCBxdWV1ZS5cblx0ICAgKlxuXHQgICAq
IEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIHByb2Nlc3NFdmVudFF1ZXVlOiBmdW5jdGlvbiAoc2lt
dWxhdGVkKSB7XG5cdCAgICAvLyBTZXQgYGV2ZW50UXVldWVgIHRvIG51bGwgYmVmb3JlIHByb2Nl
c3NpbmcgaXQgc28gdGhhdCB3ZSBjYW4gdGVsbCBpZiBtb3JlXG5cdCAgICAvLyBldmVudHMgZ2V0
IGVucXVldWVkIHdoaWxlIHByb2Nlc3NpbmcuXG5cdCAgICB2YXIgcHJvY2Vzc2luZ0V2ZW50UXVl
dWUgPSBldmVudFF1ZXVlO1xuXHQgICAgZXZlbnRRdWV1ZSA9IG51bGw7XG5cdCAgICBpZiAoc2lt
dWxhdGVkKSB7XG5cdCAgICAgIGZvckVhY2hBY2N1bXVsYXRlZChwcm9jZXNzaW5nRXZlbnRRdWV1
ZSwgZXhlY3V0ZURpc3BhdGNoZXNBbmRSZWxlYXNlU2ltdWxhdGVkKTtcblx0ICAgIH0gZWxzZSB7
XG5cdCAgICAgIGZvckVhY2hBY2N1bXVsYXRlZChwcm9jZXNzaW5nRXZlbnRRdWV1ZSwgZXhlY3V0
ZURpc3BhdGNoZXNBbmRSZWxlYXNlVG9wTGV2ZWwpO1xuXHQgICAgfVxuXHQgICAgISFldmVudFF1
ZXVlID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAncHJvY2Vzc0V2ZW50UXVldWUoKTogQWRk
aXRpb25hbCBldmVudHMgd2VyZSBlbnF1ZXVlZCB3aGlsZSBwcm9jZXNzaW5nIGFuIGV2ZW50IHF1
ZXVlLiBTdXBwb3J0IGZvciB0aGlzIGhhcyBub3QgeWV0IGJlZW4gaW1wbGVtZW50ZWQuJykgOiBf
cHJvZEludmFyaWFudCgnOTUnKSA6IHZvaWQgMDtcblx0ICAgIC8vIFRoaXMgd291bGQgYmUgYSBn
b29kIHRpbWUgdG8gcmV0aHJvdyBpZiBhbnkgb2YgdGhlIGV2ZW50IGhhbmRsZXJzIHRocmV3Llxu
XHQgICAgUmVhY3RFcnJvclV0aWxzLnJldGhyb3dDYXVnaHRFcnJvcigpO1xuXHQgIH0sXG5cdFxu
XHQgIC8qKlxuXHQgICAqIFRoZXNlIGFyZSBuZWVkZWQgZm9yIHRlc3RzIG9ubHkuIERvIG5vdCB1
c2UhXG5cdCAgICovXG5cdCAgX19wdXJnZTogZnVuY3Rpb24gKCkge1xuXHQgICAgbGlzdGVuZXJC
YW5rID0ge307XG5cdCAgfSxcblx0XG5cdCAgX19nZXRMaXN0ZW5lckJhbms6IGZ1bmN0aW9uICgp
IHtcblx0ICAgIHJldHVybiBsaXN0ZW5lckJhbms7XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxl
LmV4cG9ydHMgPSBFdmVudFBsdWdpbkh1YjtcblxuLyoqKi8gfSxcbi8qIDIwICovXG4vKioqLyBm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipc
blx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJp
Z2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmls
ZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25h
bCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0
cmljdCc7XG5cdFxuXHR2YXIgRXZlbnRQbHVnaW5IdWIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5
KTtcblx0dmFyIEV2ZW50UGx1Z2luVXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM3KTtcblx0
XG5cdHZhciBhY2N1bXVsYXRlSW50byA9IF9fd2VicGFja19yZXF1aXJlX18oNzApO1xuXHR2YXIg
Zm9yRWFjaEFjY3VtdWxhdGVkID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3MSk7XG5cdHZhciB3YXJu
aW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0XG5cdHZhciBnZXRMaXN0ZW5lciA9IEV2
ZW50UGx1Z2luSHViLmdldExpc3RlbmVyO1xuXHRcblx0LyoqXG5cdCAqIFNvbWUgZXZlbnQgdHlw
ZXMgaGF2ZSBhIG5vdGlvbiBvZiBkaWZmZXJlbnQgcmVnaXN0cmF0aW9uIG5hbWVzIGZvciBkaWZm
ZXJlbnRcblx0ICogXCJwaGFzZXNcIiBvZiBwcm9wYWdhdGlvbi4gVGhpcyBmaW5kcyBsaXN0ZW5l
cnMgYnkgYSBnaXZlbiBwaGFzZS5cblx0ICovXG5cdGZ1bmN0aW9uIGxpc3RlbmVyQXRQaGFzZShp
bnN0LCBldmVudCwgcHJvcGFnYXRpb25QaGFzZSkge1xuXHQgIHZhciByZWdpc3RyYXRpb25OYW1l
ID0gZXZlbnQuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXNbcHJvcGFnYXRp
b25QaGFzZV07XG5cdCAgcmV0dXJuIGdldExpc3RlbmVyKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUp
O1xuXHR9XG5cdFxuXHQvKipcblx0ICogVGFncyBhIGBTeW50aGV0aWNFdmVudGAgd2l0aCBkaXNw
YXRjaGVkIGxpc3RlbmVycy4gQ3JlYXRpbmcgdGhpcyBmdW5jdGlvblxuXHQgKiBoZXJlLCBhbGxv
d3MgdXMgdG8gbm90IGhhdmUgdG8gYmluZCBvciBjcmVhdGUgZnVuY3Rpb25zIGZvciBlYWNoIGV2
ZW50LlxuXHQgKiBNdXRhdGluZyB0aGUgZXZlbnQncyBtZW1iZXJzIGFsbG93cyB1cyB0byBub3Qg
aGF2ZSB0byBjcmVhdGUgYSB3cmFwcGluZ1xuXHQgKiBcImRpc3BhdGNoXCIgb2JqZWN0IHRoYXQg
cGFpcnMgdGhlIGV2ZW50IHdpdGggdGhlIGxpc3RlbmVyLlxuXHQgKi9cblx0ZnVuY3Rpb24gYWNj
dW11bGF0ZURpcmVjdGlvbmFsRGlzcGF0Y2hlcyhpbnN0LCBwaGFzZSwgZXZlbnQpIHtcblx0ICBp
ZiAoZmFsc2UpIHtcblx0ICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKGluc3QsICdEaXNwYXRjaGluZyBpbnN0IG11c3Qgbm90IGJlIG51bGwnKSA6IHZv
aWQgMDtcblx0ICB9XG5cdCAgdmFyIGxpc3RlbmVyID0gbGlzdGVuZXJBdFBoYXNlKGluc3QsIGV2
ZW50LCBwaGFzZSk7XG5cdCAgaWYgKGxpc3RlbmVyKSB7XG5cdCAgICBldmVudC5fZGlzcGF0Y2hM
aXN0ZW5lcnMgPSBhY2N1bXVsYXRlSW50byhldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMsIGxpc3Rl
bmVyKTtcblx0ICAgIGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNlcyA9IGFjY3VtdWxhdGVJbnRvKGV2
ZW50Ll9kaXNwYXRjaEluc3RhbmNlcywgaW5zdCk7XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0
ICogQ29sbGVjdCBkaXNwYXRjaGVzIChtdXN0IGJlIGVudGlyZWx5IGNvbGxlY3RlZCBiZWZvcmUg
ZGlzcGF0Y2hpbmcgLSBzZWUgdW5pdFxuXHQgKiB0ZXN0cykuIExhemlseSBhbGxvY2F0ZSB0aGUg
YXJyYXkgdG8gY29uc2VydmUgbWVtb3J5LiAgV2UgbXVzdCBsb29wIHRocm91Z2hcblx0ICogZWFj
aCBldmVudCBhbmQgcGVyZm9ybSB0aGUgdHJhdmVyc2FsIGZvciBlYWNoIG9uZS4gV2UgY2Fubm90
IHBlcmZvcm0gYVxuXHQgKiBzaW5nbGUgdHJhdmVyc2FsIGZvciB0aGUgZW50aXJlIGNvbGxlY3Rp
b24gb2YgZXZlbnRzIGJlY2F1c2UgZWFjaCBldmVudCBtYXlcblx0ICogaGF2ZSBhIGRpZmZlcmVu
dCB0YXJnZXQuXG5cdCAqL1xuXHRmdW5jdGlvbiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVz
U2luZ2xlKGV2ZW50KSB7XG5cdCAgaWYgKGV2ZW50ICYmIGV2ZW50LmRpc3BhdGNoQ29uZmlnLnBo
YXNlZFJlZ2lzdHJhdGlvbk5hbWVzKSB7XG5cdCAgICBFdmVudFBsdWdpblV0aWxzLnRyYXZlcnNl
VHdvUGhhc2UoZXZlbnQuX3RhcmdldEluc3QsIGFjY3VtdWxhdGVEaXJlY3Rpb25hbERpc3BhdGNo
ZXMsIGV2ZW50KTtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBTYW1lIGFzIGBhY2N1bXVs
YXRlVHdvUGhhc2VEaXNwYXRjaGVzU2luZ2xlYCwgYnV0IHNraXBzIG92ZXIgdGhlIHRhcmdldElE
LlxuXHQgKi9cblx0ZnVuY3Rpb24gYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NpbmdsZVNr
aXBUYXJnZXQoZXZlbnQpIHtcblx0ICBpZiAoZXZlbnQgJiYgZXZlbnQuZGlzcGF0Y2hDb25maWcu
cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpIHtcblx0ICAgIHZhciB0YXJnZXRJbnN0ID0gZXZlbnQu
X3RhcmdldEluc3Q7XG5cdCAgICB2YXIgcGFyZW50SW5zdCA9IHRhcmdldEluc3QgPyBFdmVudFBs
dWdpblV0aWxzLmdldFBhcmVudEluc3RhbmNlKHRhcmdldEluc3QpIDogbnVsbDtcblx0ICAgIEV2
ZW50UGx1Z2luVXRpbHMudHJhdmVyc2VUd29QaGFzZShwYXJlbnRJbnN0LCBhY2N1bXVsYXRlRGly
ZWN0aW9uYWxEaXNwYXRjaGVzLCBldmVudCk7XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICog
QWNjdW11bGF0ZXMgd2l0aG91dCByZWdhcmQgdG8gZGlyZWN0aW9uLCBkb2VzIG5vdCBsb29rIGZv
ciBwaGFzZWRcblx0ICogcmVnaXN0cmF0aW9uIG5hbWVzLiBTYW1lIGFzIGBhY2N1bXVsYXRlRGly
ZWN0RGlzcGF0Y2hlc1NpbmdsZWAgYnV0IHdpdGhvdXRcblx0ICogcmVxdWlyaW5nIHRoYXQgdGhl
IGBkaXNwYXRjaE1hcmtlcmAgYmUgdGhlIHNhbWUgYXMgdGhlIGRpc3BhdGNoZWQgSUQuXG5cdCAq
L1xuXHRmdW5jdGlvbiBhY2N1bXVsYXRlRGlzcGF0Y2hlcyhpbnN0LCBpZ25vcmVkRGlyZWN0aW9u
LCBldmVudCkge1xuXHQgIGlmIChldmVudCAmJiBldmVudC5kaXNwYXRjaENvbmZpZy5yZWdpc3Ry
YXRpb25OYW1lKSB7XG5cdCAgICB2YXIgcmVnaXN0cmF0aW9uTmFtZSA9IGV2ZW50LmRpc3BhdGNo
Q29uZmlnLnJlZ2lzdHJhdGlvbk5hbWU7XG5cdCAgICB2YXIgbGlzdGVuZXIgPSBnZXRMaXN0ZW5l
cihpbnN0LCByZWdpc3RyYXRpb25OYW1lKTtcblx0ICAgIGlmIChsaXN0ZW5lcikge1xuXHQgICAg
ICBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMgPSBhY2N1bXVsYXRlSW50byhldmVudC5fZGlzcGF0
Y2hMaXN0ZW5lcnMsIGxpc3RlbmVyKTtcblx0ICAgICAgZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2Vz
ID0gYWNjdW11bGF0ZUludG8oZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2VzLCBpbnN0KTtcblx0ICAg
IH1cblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBBY2N1bXVsYXRlcyBkaXNwYXRjaGVzIG9u
IGFuIGBTeW50aGV0aWNFdmVudGAsIGJ1dCBvbmx5IGZvciB0aGVcblx0ICogYGRpc3BhdGNoTWFy
a2VyYC5cblx0ICogQHBhcmFtIHtTeW50aGV0aWNFdmVudH0gZXZlbnRcblx0ICovXG5cdGZ1bmN0
aW9uIGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzU2luZ2xlKGV2ZW50KSB7XG5cdCAgaWYgKGV2
ZW50ICYmIGV2ZW50LmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUpIHtcblx0ICAgIGFj
Y3VtdWxhdGVEaXNwYXRjaGVzKGV2ZW50Ll90YXJnZXRJbnN0LCBudWxsLCBldmVudCk7XG5cdCAg
fVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGV2ZW50
cykge1xuXHQgIGZvckVhY2hBY2N1bXVsYXRlZChldmVudHMsIGFjY3VtdWxhdGVUd29QaGFzZURp
c3BhdGNoZXNTaW5nbGUpO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBhY2N1bXVsYXRlVHdvUGhhc2VE
aXNwYXRjaGVzU2tpcFRhcmdldChldmVudHMpIHtcblx0ICBmb3JFYWNoQWNjdW11bGF0ZWQoZXZl
bnRzLCBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2luZ2xlU2tpcFRhcmdldCk7XG5cdH1c
blx0XG5cdGZ1bmN0aW9uIGFjY3VtdWxhdGVFbnRlckxlYXZlRGlzcGF0Y2hlcyhsZWF2ZSwgZW50
ZXIsIGZyb20sIHRvKSB7XG5cdCAgRXZlbnRQbHVnaW5VdGlscy50cmF2ZXJzZUVudGVyTGVhdmUo
ZnJvbSwgdG8sIGFjY3VtdWxhdGVEaXNwYXRjaGVzLCBsZWF2ZSwgZW50ZXIpO1xuXHR9XG5cdFxu
XHRmdW5jdGlvbiBhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlcyhldmVudHMpIHtcblx0ICBmb3JF
YWNoQWNjdW11bGF0ZWQoZXZlbnRzLCBhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlc1NpbmdsZSk7
XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBBIHNtYWxsIHNldCBvZiBwcm9wYWdhdGlvbiBwYXR0ZXJu
cywgZWFjaCBvZiB3aGljaCB3aWxsIGFjY2VwdCBhIHNtYWxsIGFtb3VudFxuXHQgKiBvZiBpbmZv
cm1hdGlvbiwgYW5kIGdlbmVyYXRlIGEgc2V0IG9mIFwiZGlzcGF0Y2ggcmVhZHkgZXZlbnQgb2Jq
ZWN0c1wiIC0gd2hpY2hcblx0ICogYXJlIHNldHMgb2YgZXZlbnRzIHRoYXQgaGF2ZSBhbHJlYWR5
IGJlZW4gYW5ub3RhdGVkIHdpdGggYSBzZXQgb2YgZGlzcGF0Y2hlZFxuXHQgKiBsaXN0ZW5lciBm
dW5jdGlvbnMvaWRzLiBUaGUgQVBJIGlzIGRlc2lnbmVkIHRoaXMgd2F5IHRvIGRpc2NvdXJhZ2Ug
dGhlc2Vcblx0ICogcHJvcGFnYXRpb24gc3RyYXRlZ2llcyBmcm9tIGFjdHVhbGx5IGV4ZWN1dGlu
ZyB0aGUgZGlzcGF0Y2hlcywgc2luY2Ugd2Vcblx0ICogYWx3YXlzIHdhbnQgdG8gY29sbGVjdCB0
aGUgZW50aXJlIHNldCBvZiBkaXNwYXRjaGVzIGJlZm9yZSBleGVjdXRpbmcgZXZlbnQgYVxuXHQg
KiBzaW5nbGUgb25lLlxuXHQgKlxuXHQgKiBAY29uc3RydWN0b3IgRXZlbnRQcm9wYWdhdG9yc1xu
XHQgKi9cblx0dmFyIEV2ZW50UHJvcGFnYXRvcnMgPSB7XG5cdCAgYWNjdW11bGF0ZVR3b1BoYXNl
RGlzcGF0Y2hlczogYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyxcblx0ICBhY2N1bXVsYXRl
VHdvUGhhc2VEaXNwYXRjaGVzU2tpcFRhcmdldDogYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hl
c1NraXBUYXJnZXQsXG5cdCAgYWNjdW11bGF0ZURpcmVjdERpc3BhdGNoZXM6IGFjY3VtdWxhdGVE
aXJlY3REaXNwYXRjaGVzLFxuXHQgIGFjY3VtdWxhdGVFbnRlckxlYXZlRGlzcGF0Y2hlczogYWNj
dW11bGF0ZUVudGVyTGVhdmVEaXNwYXRjaGVzXG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9
IEV2ZW50UHJvcGFnYXRvcnM7XG5cbi8qKiovIH0sXG4vKiAyMSAqL1xuLyoqKi8gZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0LyoqXG5cdCAqIGBSZWFj
dEluc3RhbmNlTWFwYCBtYWludGFpbnMgYSBtYXBwaW5nIGZyb20gYSBwdWJsaWMgZmFjaW5nIHN0
YXRlZnVsXG5cdCAqIGluc3RhbmNlIChrZXkpIGFuZCB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRp
b24gKHZhbHVlKS4gVGhpcyBhbGxvd3MgcHVibGljXG5cdCAqIG1ldGhvZHMgdG8gYWNjZXB0IHRo
ZSB1c2VyIGZhY2luZyBpbnN0YW5jZSBhcyBhbiBhcmd1bWVudCBhbmQgbWFwIHRoZW0gYmFja1xu
XHQgKiB0byBpbnRlcm5hbCBtZXRob2RzLlxuXHQgKi9cblx0XG5cdC8vIFRPRE86IFJlcGxhY2Ug
dGhpcyB3aXRoIEVTNjogdmFyIFJlYWN0SW5zdGFuY2VNYXAgPSBuZXcgTWFwKCk7XG5cdFxuXHR2
YXIgUmVhY3RJbnN0YW5jZU1hcCA9IHtcblx0ICAvKipcblx0ICAgKiBUaGlzIEFQSSBzaG91bGQg
YmUgY2FsbGVkIGBkZWxldGVgIGJ1dCB3ZSdkIGhhdmUgdG8gbWFrZSBzdXJlIHRvIGFsd2F5c1xu
XHQgICAqIHRyYW5zZm9ybSB0aGVzZSB0byBzdHJpbmdzIGZvciBJRSBzdXBwb3J0LiBXaGVuIHRo
aXMgdHJhbnNmb3JtIGlzIGZ1bGx5XG5cdCAgICogc3VwcG9ydGVkIHdlIGNhbiByZW5hbWUgaXQu
XG5cdCAgICovXG5cdCAgcmVtb3ZlOiBmdW5jdGlvbiAoa2V5KSB7XG5cdCAgICBrZXkuX3JlYWN0
SW50ZXJuYWxJbnN0YW5jZSA9IHVuZGVmaW5lZDtcblx0ICB9LFxuXHRcblx0ICBnZXQ6IGZ1bmN0
aW9uIChrZXkpIHtcblx0ICAgIHJldHVybiBrZXkuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZTtcblx0
ICB9LFxuXHRcblx0ICBoYXM6IGZ1bmN0aW9uIChrZXkpIHtcblx0ICAgIHJldHVybiBrZXkuX3Jl
YWN0SW50ZXJuYWxJbnN0YW5jZSAhPT0gdW5kZWZpbmVkO1xuXHQgIH0sXG5cdFxuXHQgIHNldDog
ZnVuY3Rpb24gKGtleSwgdmFsdWUpIHtcblx0ICAgIGtleS5fcmVhY3RJbnRlcm5hbEluc3RhbmNl
ID0gdmFsdWU7XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdEluc3Rh
bmNlTWFwO1xuXG4vKioqLyB9LFxuLyogMjIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAx
My1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQg
KlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBT
eW50aGV0aWNFdmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMTApO1xuXHRcblx0dmFyIGdldEV2
ZW50VGFyZ2V0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0Nik7XG5cdFxuXHQvKipcblx0ICogQGlu
dGVyZmFjZSBVSUV2ZW50XG5cdCAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVs
LTMtRXZlbnRzL1xuXHQgKi9cblx0dmFyIFVJRXZlbnRJbnRlcmZhY2UgPSB7XG5cdCAgdmlldzog
ZnVuY3Rpb24gKGV2ZW50KSB7XG5cdCAgICBpZiAoZXZlbnQudmlldykge1xuXHQgICAgICByZXR1
cm4gZXZlbnQudmlldztcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgdGFyZ2V0ID0gZ2V0RXZlbnRU
YXJnZXQoZXZlbnQpO1xuXHQgICAgaWYgKHRhcmdldC53aW5kb3cgPT09IHRhcmdldCkge1xuXHQg
ICAgICAvLyB0YXJnZXQgaXMgYSB3aW5kb3cgb2JqZWN0XG5cdCAgICAgIHJldHVybiB0YXJnZXQ7
XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIGRvYyA9IHRhcmdldC5vd25lckRvY3VtZW50O1xuXHQg
ICAgLy8gVE9ETzogRmlndXJlIG91dCB3aHkgYG93bmVyRG9jdW1lbnRgIGlzIHNvbWV0aW1lcyB1
bmRlZmluZWQgaW4gSUU4LlxuXHQgICAgaWYgKGRvYykge1xuXHQgICAgICByZXR1cm4gZG9jLmRl
ZmF1bHRWaWV3IHx8IGRvYy5wYXJlbnRXaW5kb3c7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBy
ZXR1cm4gd2luZG93O1xuXHQgICAgfVxuXHQgIH0sXG5cdCAgZGV0YWlsOiBmdW5jdGlvbiAoZXZl
bnQpIHtcblx0ICAgIHJldHVybiBldmVudC5kZXRhaWwgfHwgMDtcblx0ICB9XG5cdH07XG5cdFxu
XHQvKipcblx0ICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24g
dXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0
Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG5cdCAqIEBwYXJh
bSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cblx0ICogQGV4dGVu
ZHMge1N5bnRoZXRpY0V2ZW50fVxuXHQgKi9cblx0ZnVuY3Rpb24gU3ludGhldGljVUlFdmVudChk
aXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRh
cmdldCkge1xuXHQgIHJldHVybiBTeW50aGV0aWNFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29u
ZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcblx0
fVxuXHRcblx0U3ludGhldGljRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY1VJRXZlbnQsIFVJ
RXZlbnRJbnRlcmZhY2UpO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNVSUV2ZW50
O1xuXG4vKioqLyB9LFxuLyogMjMgKi9cbjMsXG4vKiAyNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9k
dWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHly
aWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztc
blx0XG5cdHZhciBlbXB0eU9iamVjdCA9IHt9O1xuXHRcblx0aWYgKGZhbHNlKSB7XG5cdCAgT2Jq
ZWN0LmZyZWV6ZShlbXB0eU9iamVjdCk7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZW1w
dHlPYmplY3Q7XG5cbi8qKiovIH0sXG4vKiAyNSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBl
eHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5c
dCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFy
IF9hc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRcblx0dmFyIEV2ZW50UGx1Z2lu
UmVnaXN0cnkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM2KTtcblx0dmFyIFJlYWN0RXZlbnRFbWl0
dGVyTWl4aW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1Mik7XG5cdHZhciBWaWV3cG9ydE1ldHJp
Y3MgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY5KTtcblx0XG5cdHZhciBnZXRWZW5kb3JQcmVmaXhl
ZEV2ZW50TmFtZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTg0KTtcblx0dmFyIGlzRXZlbnRTdXBw
b3J0ZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ3KTtcblx0XG5cdC8qKlxuXHQgKiBTdW1tYXJ5
IG9mIGBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXJgIGV2ZW50IGhhbmRsaW5nOlxuXHQgKlxuXHQg
KiAgLSBUb3AtbGV2ZWwgZGVsZWdhdGlvbiBpcyB1c2VkIHRvIHRyYXAgbW9zdCBuYXRpdmUgYnJv
d3NlciBldmVudHMuIFRoaXNcblx0ICogICAgbWF5IG9ubHkgb2NjdXIgaW4gdGhlIG1haW4gdGhy
ZWFkIGFuZCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2Zcblx0ICogICAgUmVhY3RFdmVudExpc3Rl
bmVyLCB3aGljaCBpcyBpbmplY3RlZCBhbmQgY2FuIHRoZXJlZm9yZSBzdXBwb3J0IHBsdWdnYWJs
ZVxuXHQgKiAgICBldmVudCBzb3VyY2VzLiBUaGlzIGlzIHRoZSBvbmx5IHdvcmsgdGhhdCBvY2N1
cnMgaW4gdGhlIG1haW4gdGhyZWFkLlxuXHQgKlxuXHQgKiAgLSBXZSBub3JtYWxpemUgYW5kIGRl
LWR1cGxpY2F0ZSBldmVudHMgdG8gYWNjb3VudCBmb3IgYnJvd3NlciBxdWlya3MuIFRoaXNcblx0
ICogICAgbWF5IGJlIGRvbmUgaW4gdGhlIHdvcmtlciB0aHJlYWQuXG5cdCAqXG5cdCAqICAtIEZv
cndhcmQgdGhlc2UgbmF0aXZlIGV2ZW50cyAod2l0aCB0aGUgYXNzb2NpYXRlZCB0b3AtbGV2ZWwg
dHlwZSB1c2VkIHRvXG5cdCAqICAgIHRyYXAgaXQpIHRvIGBFdmVudFBsdWdpbkh1YmAsIHdoaWNo
IGluIHR1cm4gd2lsbCBhc2sgcGx1Z2lucyBpZiB0aGV5IHdhbnRcblx0ICogICAgdG8gZXh0cmFj
dCBhbnkgc3ludGhldGljIGV2ZW50cy5cblx0ICpcblx0ICogIC0gVGhlIGBFdmVudFBsdWdpbkh1
YmAgd2lsbCB0aGVuIHByb2Nlc3MgZWFjaCBldmVudCBieSBhbm5vdGF0aW5nIHRoZW0gd2l0aFxu
XHQgKiAgICBcImRpc3BhdGNoZXNcIiwgYSBzZXF1ZW5jZSBvZiBsaXN0ZW5lcnMgYW5kIElEcyB0
aGF0IGNhcmUgYWJvdXQgdGhhdCBldmVudC5cblx0ICpcblx0ICogIC0gVGhlIGBFdmVudFBsdWdp
bkh1YmAgdGhlbiBkaXNwYXRjaGVzIHRoZSBldmVudHMuXG5cdCAqXG5cdCAqIE92ZXJ2aWV3IG9m
IFJlYWN0IGFuZCB0aGUgZXZlbnQgc3lzdGVtOlxuXHQgKlxuXHQgKiArLS0tLS0tLS0tLS0tKyAg
ICAuXG5cdCAqIHwgICAgRE9NICAgICB8ICAgIC5cblx0ICogKy0tLS0tLS0tLS0tLSsgICAgLlxu
XHQgKiAgICAgICB8ICAgICAgICAgICAuXG5cdCAqICAgICAgIHYgICAgICAgICAgIC5cblx0ICog
Ky0tLS0tLS0tLS0tLSsgICAgLlxuXHQgKiB8IFJlYWN0RXZlbnQgfCAgICAuXG5cdCAqIHwgIExp
c3RlbmVyICB8ICAgIC5cblx0ICogKy0tLS0tLS0tLS0tLSsgICAgLiAgICAgICAgICAgICAgICAg
ICAgICAgICArLS0tLS0tLS0tLS0rXG5cdCAqICAgICAgIHwgICAgICAgICAgIC4gICAgICAgICAg
ICAgICArLS0tLS0tLS0rfFNpbXBsZUV2ZW50fFxuXHQgKiAgICAgICB8ICAgICAgICAgICAuICAg
ICAgICAgICAgICAgfCAgICAgICAgIHxQbHVnaW4gICAgIHxcblx0ICogKy0tLS0tfC0tLS0tLSsg
ICAgLiAgICAgICAgICAgICAgIHYgICAgICAgICArLS0tLS0tLS0tLS0rXG5cdCAqIHwgICAgIHwg
ICAgICB8ICAgIC4gICAgKy0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgKy0tLS0t
LS0tLS0tLStcblx0ICogfCAgICAgKy0tLS0tLS0tLS0tLi0tLT58RXZlbnRQbHVnaW5IdWJ8ICAg
ICAgICAgICAgICAgICAgICB8ICAgIEV2ZW50ICAgfFxuXHQgKiB8ICAgICAgICAgICAgfCAgICAu
ICAgIHwgICAgICAgICAgICAgIHwgICAgICstLS0tLS0tLS0tLSsgIHwgUHJvcGFnYXRvcnN8XG5c
dCAqIHwgUmVhY3RFdmVudCB8ICAgIC4gICAgfCAgICAgICAgICAgICAgfCAgICAgfFRhcEV2ZW50
ICAgfCAgfC0tLS0tLS0tLS0tLXxcblx0ICogfCAgRW1pdHRlciAgIHwgICAgLiAgICB8ICAgICAg
ICAgICAgICB8PC0tLSt8UGx1Z2luICAgICB8ICB8b3RoZXIgcGx1Z2lufFxuXHQgKiB8ICAgICAg
ICAgICAgfCAgICAuICAgIHwgICAgICAgICAgICAgIHwgICAgICstLS0tLS0tLS0tLSsgIHwgIHV0
aWxpdGllcyB8XG5cdCAqIHwgICAgICstLS0tLS0tLS0tLS4tLS0+fCAgICAgICAgICAgICAgfCAg
ICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLStcblx0ICogfCAgICAgfCAgICAgIHwgICAg
LiAgICArLS0tLS0tLS0tLS0tLS0rXG5cdCAqICstLS0tLXwtLS0tLS0rICAgIC4gICAgICAgICAg
ICAgICAgXiAgICAgICAgKy0tLS0tLS0tLS0tK1xuXHQgKiAgICAgICB8ICAgICAgICAgICAuICAg
ICAgICAgICAgICAgIHwgICAgICAgIHxFbnRlci9MZWF2ZXxcblx0ICogICAgICAgKyAgICAgICAg
ICAgLiAgICAgICAgICAgICAgICArLS0tLS0tLSt8UGx1Z2luICAgICB8XG5cdCAqICstLS0tLS0t
LS0tLS0tKyAgIC4gICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tK1xuXHQgKiB8
IGFwcGxpY2F0aW9uIHwgICAuXG5cdCAqIHwtLS0tLS0tLS0tLS0tfCAgIC5cblx0ICogfCAgICAg
ICAgICAgICB8ICAgLlxuXHQgKiB8ICAgICAgICAgICAgIHwgICAuXG5cdCAqICstLS0tLS0tLS0t
LS0tKyAgIC5cblx0ICogICAgICAgICAgICAgICAgICAgLlxuXHQgKiAgICBSZWFjdCBDb3JlICAg
ICAuICBHZW5lcmFsIFB1cnBvc2UgRXZlbnQgUGx1Z2luIFN5c3RlbVxuXHQgKi9cblx0XG5cdHZh
ciBoYXNFdmVudFBhZ2VYWTtcblx0dmFyIGFscmVhZHlMaXN0ZW5pbmdUbyA9IHt9O1xuXHR2YXIg
aXNNb25pdG9yaW5nU2Nyb2xsVmFsdWUgPSBmYWxzZTtcblx0dmFyIHJlYWN0VG9wTGlzdGVuZXJz
Q291bnRlciA9IDA7XG5cdFxuXHQvLyBGb3IgZXZlbnRzIGxpa2UgJ3N1Ym1pdCcgd2hpY2ggZG9u
J3QgY29uc2lzdGVudGx5IGJ1YmJsZSAod2hpY2ggd2UgdHJhcCBhdCBhXG5cdC8vIGxvd2VyIG5v
ZGUgdGhhbiBgZG9jdW1lbnRgKSwgYmluZGluZyBhdCBgZG9jdW1lbnRgIHdvdWxkIGNhdXNlIGR1
cGxpY2F0ZVxuXHQvLyBldmVudHMgc28gd2UgZG9uJ3QgaW5jbHVkZSB0aGVtIGhlcmVcblx0dmFy
IHRvcEV2ZW50TWFwcGluZyA9IHtcblx0ICB0b3BBYm9ydDogJ2Fib3J0Jyxcblx0ICB0b3BBbmlt
YXRpb25FbmQ6IGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lKCdhbmltYXRpb25lbmQnKSB8fCAn
YW5pbWF0aW9uZW5kJyxcblx0ICB0b3BBbmltYXRpb25JdGVyYXRpb246IGdldFZlbmRvclByZWZp
eGVkRXZlbnROYW1lKCdhbmltYXRpb25pdGVyYXRpb24nKSB8fCAnYW5pbWF0aW9uaXRlcmF0aW9u
Jyxcblx0ICB0b3BBbmltYXRpb25TdGFydDogZ2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUoJ2Fu
aW1hdGlvbnN0YXJ0JykgfHwgJ2FuaW1hdGlvbnN0YXJ0Jyxcblx0ICB0b3BCbHVyOiAnYmx1cics
XG5cdCAgdG9wQ2FuUGxheTogJ2NhbnBsYXknLFxuXHQgIHRvcENhblBsYXlUaHJvdWdoOiAnY2Fu
cGxheXRocm91Z2gnLFxuXHQgIHRvcENoYW5nZTogJ2NoYW5nZScsXG5cdCAgdG9wQ2xpY2s6ICdj
bGljaycsXG5cdCAgdG9wQ29tcG9zaXRpb25FbmQ6ICdjb21wb3NpdGlvbmVuZCcsXG5cdCAgdG9w
Q29tcG9zaXRpb25TdGFydDogJ2NvbXBvc2l0aW9uc3RhcnQnLFxuXHQgIHRvcENvbXBvc2l0aW9u
VXBkYXRlOiAnY29tcG9zaXRpb251cGRhdGUnLFxuXHQgIHRvcENvbnRleHRNZW51OiAnY29udGV4
dG1lbnUnLFxuXHQgIHRvcENvcHk6ICdjb3B5Jyxcblx0ICB0b3BDdXQ6ICdjdXQnLFxuXHQgIHRv
cERvdWJsZUNsaWNrOiAnZGJsY2xpY2snLFxuXHQgIHRvcERyYWc6ICdkcmFnJyxcblx0ICB0b3BE
cmFnRW5kOiAnZHJhZ2VuZCcsXG5cdCAgdG9wRHJhZ0VudGVyOiAnZHJhZ2VudGVyJyxcblx0ICB0
b3BEcmFnRXhpdDogJ2RyYWdleGl0Jyxcblx0ICB0b3BEcmFnTGVhdmU6ICdkcmFnbGVhdmUnLFxu
XHQgIHRvcERyYWdPdmVyOiAnZHJhZ292ZXInLFxuXHQgIHRvcERyYWdTdGFydDogJ2RyYWdzdGFy
dCcsXG5cdCAgdG9wRHJvcDogJ2Ryb3AnLFxuXHQgIHRvcER1cmF0aW9uQ2hhbmdlOiAnZHVyYXRp
b25jaGFuZ2UnLFxuXHQgIHRvcEVtcHRpZWQ6ICdlbXB0aWVkJyxcblx0ICB0b3BFbmNyeXB0ZWQ6
ICdlbmNyeXB0ZWQnLFxuXHQgIHRvcEVuZGVkOiAnZW5kZWQnLFxuXHQgIHRvcEVycm9yOiAnZXJy
b3InLFxuXHQgIHRvcEZvY3VzOiAnZm9jdXMnLFxuXHQgIHRvcElucHV0OiAnaW5wdXQnLFxuXHQg
IHRvcEtleURvd246ICdrZXlkb3duJyxcblx0ICB0b3BLZXlQcmVzczogJ2tleXByZXNzJyxcblx0
ICB0b3BLZXlVcDogJ2tleXVwJyxcblx0ICB0b3BMb2FkZWREYXRhOiAnbG9hZGVkZGF0YScsXG5c
dCAgdG9wTG9hZGVkTWV0YWRhdGE6ICdsb2FkZWRtZXRhZGF0YScsXG5cdCAgdG9wTG9hZFN0YXJ0
OiAnbG9hZHN0YXJ0Jyxcblx0ICB0b3BNb3VzZURvd246ICdtb3VzZWRvd24nLFxuXHQgIHRvcE1v
dXNlTW92ZTogJ21vdXNlbW92ZScsXG5cdCAgdG9wTW91c2VPdXQ6ICdtb3VzZW91dCcsXG5cdCAg
dG9wTW91c2VPdmVyOiAnbW91c2VvdmVyJyxcblx0ICB0b3BNb3VzZVVwOiAnbW91c2V1cCcsXG5c
dCAgdG9wUGFzdGU6ICdwYXN0ZScsXG5cdCAgdG9wUGF1c2U6ICdwYXVzZScsXG5cdCAgdG9wUGxh
eTogJ3BsYXknLFxuXHQgIHRvcFBsYXlpbmc6ICdwbGF5aW5nJyxcblx0ICB0b3BQcm9ncmVzczog
J3Byb2dyZXNzJyxcblx0ICB0b3BSYXRlQ2hhbmdlOiAncmF0ZWNoYW5nZScsXG5cdCAgdG9wU2Ny
b2xsOiAnc2Nyb2xsJyxcblx0ICB0b3BTZWVrZWQ6ICdzZWVrZWQnLFxuXHQgIHRvcFNlZWtpbmc6
ICdzZWVraW5nJyxcblx0ICB0b3BTZWxlY3Rpb25DaGFuZ2U6ICdzZWxlY3Rpb25jaGFuZ2UnLFxu
XHQgIHRvcFN0YWxsZWQ6ICdzdGFsbGVkJyxcblx0ICB0b3BTdXNwZW5kOiAnc3VzcGVuZCcsXG5c
dCAgdG9wVGV4dElucHV0OiAndGV4dElucHV0Jyxcblx0ICB0b3BUaW1lVXBkYXRlOiAndGltZXVw
ZGF0ZScsXG5cdCAgdG9wVG91Y2hDYW5jZWw6ICd0b3VjaGNhbmNlbCcsXG5cdCAgdG9wVG91Y2hF
bmQ6ICd0b3VjaGVuZCcsXG5cdCAgdG9wVG91Y2hNb3ZlOiAndG91Y2htb3ZlJyxcblx0ICB0b3BU
b3VjaFN0YXJ0OiAndG91Y2hzdGFydCcsXG5cdCAgdG9wVHJhbnNpdGlvbkVuZDogZ2V0VmVuZG9y
UHJlZml4ZWRFdmVudE5hbWUoJ3RyYW5zaXRpb25lbmQnKSB8fCAndHJhbnNpdGlvbmVuZCcsXG5c
dCAgdG9wVm9sdW1lQ2hhbmdlOiAndm9sdW1lY2hhbmdlJyxcblx0ICB0b3BXYWl0aW5nOiAnd2Fp
dGluZycsXG5cdCAgdG9wV2hlZWw6ICd3aGVlbCdcblx0fTtcblx0XG5cdC8qKlxuXHQgKiBUbyBl
bnN1cmUgbm8gY29uZmxpY3RzIHdpdGggb3RoZXIgcG90ZW50aWFsIFJlYWN0IGluc3RhbmNlcyBv
biB0aGUgcGFnZVxuXHQgKi9cblx0dmFyIHRvcExpc3RlbmVyc0lES2V5ID0gJ19yZWFjdExpc3Rl
bmVyc0lEJyArIFN0cmluZyhNYXRoLnJhbmRvbSgpKS5zbGljZSgyKTtcblx0XG5cdGZ1bmN0aW9u
IGdldExpc3RlbmluZ0ZvckRvY3VtZW50KG1vdW50QXQpIHtcblx0ICAvLyBJbiBJRTgsIGBtb3Vu
dEF0YCBpcyBhIGhvc3Qgb2JqZWN0IGFuZCBkb2Vzbid0IGhhdmUgYGhhc093blByb3BlcnR5YFxu
XHQgIC8vIGRpcmVjdGx5LlxuXHQgIGlmICghT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0
eS5jYWxsKG1vdW50QXQsIHRvcExpc3RlbmVyc0lES2V5KSkge1xuXHQgICAgbW91bnRBdFt0b3BM
aXN0ZW5lcnNJREtleV0gPSByZWFjdFRvcExpc3RlbmVyc0NvdW50ZXIrKztcblx0ICAgIGFscmVh
ZHlMaXN0ZW5pbmdUb1ttb3VudEF0W3RvcExpc3RlbmVyc0lES2V5XV0gPSB7fTtcblx0ICB9XG5c
dCAgcmV0dXJuIGFscmVhZHlMaXN0ZW5pbmdUb1ttb3VudEF0W3RvcExpc3RlbmVyc0lES2V5XV07
XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyYCBpcyB1c2Vk
IHRvIGF0dGFjaCB0b3AtbGV2ZWwgZXZlbnQgbGlzdGVuZXJzLiBGb3Jcblx0ICogZXhhbXBsZTpc
blx0ICpcblx0ICogICBFdmVudFBsdWdpbkh1Yi5wdXRMaXN0ZW5lcignbXlJRCcsICdvbkNsaWNr
JywgbXlGdW5jdGlvbik7XG5cdCAqXG5cdCAqIFRoaXMgd291bGQgYWxsb2NhdGUgYSBcInJlZ2lz
dHJhdGlvblwiIG9mIGAoJ29uQ2xpY2snLCBteUZ1bmN0aW9uKWAgb24gJ215SUQnLlxuXHQgKlxu
XHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdHZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIgPSBf
YXNzaWduKHt9LCBSZWFjdEV2ZW50RW1pdHRlck1peGluLCB7XG5cdCAgLyoqXG5cdCAgICogSW5q
ZWN0YWJsZSBldmVudCBiYWNrZW5kXG5cdCAgICovXG5cdCAgUmVhY3RFdmVudExpc3RlbmVyOiBu
dWxsLFxuXHRcblx0ICBpbmplY3Rpb246IHtcblx0ICAgIC8qKlxuXHQgICAgICogQHBhcmFtIHtv
YmplY3R9IFJlYWN0RXZlbnRMaXN0ZW5lclxuXHQgICAgICovXG5cdCAgICBpbmplY3RSZWFjdEV2
ZW50TGlzdGVuZXI6IGZ1bmN0aW9uIChSZWFjdEV2ZW50TGlzdGVuZXIpIHtcblx0ICAgICAgUmVh
Y3RFdmVudExpc3RlbmVyLnNldEhhbmRsZVRvcExldmVsKFJlYWN0QnJvd3NlckV2ZW50RW1pdHRl
ci5oYW5kbGVUb3BMZXZlbCk7XG5cdCAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFj
dEV2ZW50TGlzdGVuZXIgPSBSZWFjdEV2ZW50TGlzdGVuZXI7XG5cdCAgICB9XG5cdCAgfSxcblx0
XG5cdCAgLyoqXG5cdCAgICogU2V0cyB3aGV0aGVyIG9yIG5vdCBhbnkgY3JlYXRlZCBjYWxsYmFj
a3Mgc2hvdWxkIGJlIGVuYWJsZWQuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge2Jvb2xlYW59IGVu
YWJsZWQgVHJ1ZSBpZiBjYWxsYmFja3Mgc2hvdWxkIGJlIGVuYWJsZWQuXG5cdCAgICovXG5cdCAg
c2V0RW5hYmxlZDogZnVuY3Rpb24gKGVuYWJsZWQpIHtcblx0ICAgIGlmIChSZWFjdEJyb3dzZXJF
dmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyKSB7XG5cdCAgICAgIFJlYWN0QnJvd3NlckV2
ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIuc2V0RW5hYmxlZChlbmFibGVkKTtcblx0ICAg
IH1cblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlm
IGNhbGxiYWNrcyBhcmUgZW5hYmxlZC5cblx0ICAgKi9cblx0ICBpc0VuYWJsZWQ6IGZ1bmN0aW9u
ICgpIHtcblx0ICAgIHJldHVybiAhIShSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVu
dExpc3RlbmVyICYmIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIu
aXNFbmFibGVkKCkpO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFdlIGxpc3RlbiBmb3Ig
YnViYmxlZCB0b3VjaCBldmVudHMgb24gdGhlIGRvY3VtZW50IG9iamVjdC5cblx0ICAgKlxuXHQg
ICAqIEZpcmVmb3ggdjguMDEgKGFuZCBwb3NzaWJseSBvdGhlcnMpIGV4aGliaXRlZCBzdHJhbmdl
IGJlaGF2aW9yIHdoZW5cblx0ICAgKiBtb3VudGluZyBgb25tb3VzZW1vdmVgIGV2ZW50cyBhdCBz
b21lIG5vZGUgdGhhdCB3YXMgbm90IHRoZSBkb2N1bWVudFxuXHQgICAqIGVsZW1lbnQuIFRoZSBz
eW1wdG9tcyB3ZXJlIHRoYXQgaWYgeW91ciBtb3VzZSBpcyBub3QgbW92aW5nIG92ZXIgc29tZXRo
aW5nXG5cdCAgICogY29udGFpbmVkIHdpdGhpbiB0aGF0IG1vdW50IHBvaW50IChmb3IgZXhhbXBs
ZSBvbiB0aGUgYmFja2dyb3VuZCkgdGhlXG5cdCAgICogdG9wLWxldmVsIGxpc3RlbmVycyBmb3Ig
YG9ubW91c2Vtb3ZlYCB3b24ndCBiZSBjYWxsZWQuIEhvd2V2ZXIsIGlmIHlvdVxuXHQgICAqIHJl
Z2lzdGVyIHRoZSBgbW91c2Vtb3ZlYCBvbiB0aGUgZG9jdW1lbnQgb2JqZWN0LCB0aGVuIGl0IHdp
bGwgb2YgY291cnNlXG5cdCAgICogY2F0Y2ggYWxsIGBtb3VzZW1vdmVgcy4gVGhpcyBhbG9uZyB3
aXRoIGlPUyBxdWlya3MsIGp1c3RpZmllcyByZXN0cmljdGluZ1xuXHQgICAqIHRvcC1sZXZlbCBs
aXN0ZW5lcnMgdG8gdGhlIGRvY3VtZW50IG9iamVjdCBvbmx5LCBhdCBsZWFzdCBmb3IgdGhlc2Vc
blx0ICAgKiBtb3ZlbWVudCB0eXBlcyBvZiBldmVudHMgYW5kIHBvc3NpYmx5IGFsbCBldmVudHMu
XG5cdCAgICpcblx0ICAgKiBAc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNo
aXZlcy8yMDEwLzA5L2NsaWNrX2V2ZW50X2RlbC5odG1sXG5cdCAgICpcblx0ICAgKiBBbHNvLCBg
a2V5dXBgL2BrZXlwcmVzc2AvYGtleWRvd25gIGRvIG5vdCBidWJibGUgdG8gdGhlIHdpbmRvdyBv
biBJRSwgYnV0XG5cdCAgICogdGhleSBidWJibGUgdG8gZG9jdW1lbnQuXG5cdCAgICpcblx0ICAg
KiBAcGFyYW0ge3N0cmluZ30gcmVnaXN0cmF0aW9uTmFtZSBOYW1lIG9mIGxpc3RlbmVyIChlLmcu
IGBvbkNsaWNrYCkuXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRlbnREb2N1bWVudEhhbmRs
ZSBEb2N1bWVudCB3aGljaCBvd25zIHRoZSBjb250YWluZXJcblx0ICAgKi9cblx0ICBsaXN0ZW5U
bzogZnVuY3Rpb24gKHJlZ2lzdHJhdGlvbk5hbWUsIGNvbnRlbnREb2N1bWVudEhhbmRsZSkge1xu
XHQgICAgdmFyIG1vdW50QXQgPSBjb250ZW50RG9jdW1lbnRIYW5kbGU7XG5cdCAgICB2YXIgaXNM
aXN0ZW5pbmcgPSBnZXRMaXN0ZW5pbmdGb3JEb2N1bWVudChtb3VudEF0KTtcblx0ICAgIHZhciBk
ZXBlbmRlbmNpZXMgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRl
bmNpZXNbcmVnaXN0cmF0aW9uTmFtZV07XG5cdFxuXHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBk
ZXBlbmRlbmNpZXMubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgdmFyIGRlcGVuZGVuY3kgPSBkZXBl
bmRlbmNpZXNbaV07XG5cdCAgICAgIGlmICghKGlzTGlzdGVuaW5nLmhhc093blByb3BlcnR5KGRl
cGVuZGVuY3kpICYmIGlzTGlzdGVuaW5nW2RlcGVuZGVuY3ldKSkge1xuXHQgICAgICAgIGlmIChk
ZXBlbmRlbmN5ID09PSAndG9wV2hlZWwnKSB7XG5cdCAgICAgICAgICBpZiAoaXNFdmVudFN1cHBv
cnRlZCgnd2hlZWwnKSkge1xuXHQgICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIu
UmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcFdoZWVsJywgJ3doZWVsJywg
bW91bnRBdCk7XG5cdCAgICAgICAgICB9IGVsc2UgaWYgKGlzRXZlbnRTdXBwb3J0ZWQoJ21vdXNl
d2hlZWwnKSkge1xuXHQgICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RF
dmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcFdoZWVsJywgJ21vdXNld2hlZWwnLCBt
b3VudEF0KTtcblx0ICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgIC8vIEZpcmVmb3gg
bmVlZHMgdG8gY2FwdHVyZSBhIGRpZmZlcmVudCBtb3VzZSBzY3JvbGwgZXZlbnQuXG5cdCAgICAg
ICAgICAgIC8vIEBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9kb20vZXZlbnRzL3Rlc3Rz
L3Njcm9sbC5odG1sXG5cdCAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFj
dEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wV2hlZWwnLCAnRE9NTW91c2VTY3Jv
bGwnLCBtb3VudEF0KTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9IGVsc2UgaWYgKGRlcGVu
ZGVuY3kgPT09ICd0b3BTY3JvbGwnKSB7XG5cdCAgICAgICAgICBpZiAoaXNFdmVudFN1cHBvcnRl
ZCgnc2Nyb2xsJywgdHJ1ZSkpIHtcblx0ICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0
dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudCgndG9wU2Nyb2xsJywgJ3Nj
cm9sbCcsIG1vdW50QXQpO1xuXHQgICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgUmVh
Y3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50
KCd0b3BTY3JvbGwnLCAnc2Nyb2xsJywgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZl
bnRMaXN0ZW5lci5XSU5ET1dfSEFORExFKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9IGVs
c2UgaWYgKGRlcGVuZGVuY3kgPT09ICd0b3BGb2N1cycgfHwgZGVwZW5kZW5jeSA9PT0gJ3RvcEJs
dXInKSB7XG5cdCAgICAgICAgICBpZiAoaXNFdmVudFN1cHBvcnRlZCgnZm9jdXMnLCB0cnVlKSkg
e1xuXHQgICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3Rl
bmVyLnRyYXBDYXB0dXJlZEV2ZW50KCd0b3BGb2N1cycsICdmb2N1cycsIG1vdW50QXQpO1xuXHQg
ICAgICAgICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRy
YXBDYXB0dXJlZEV2ZW50KCd0b3BCbHVyJywgJ2JsdXInLCBtb3VudEF0KTtcblx0ICAgICAgICAg
IH0gZWxzZSBpZiAoaXNFdmVudFN1cHBvcnRlZCgnZm9jdXNpbicpKSB7XG5cdCAgICAgICAgICAg
IC8vIElFIGhhcyBgZm9jdXNpbmAgYW5kIGBmb2N1c291dGAgZXZlbnRzIHdoaWNoIGJ1YmJsZS5c
blx0ICAgICAgICAgICAgLy8gQHNlZSBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2Jsb2cvYXJj
aGl2ZXMvMjAwOC8wNC9kZWxlZ2F0aW5nX3RoZS5odG1sXG5cdCAgICAgICAgICAgIFJlYWN0QnJv
d3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgndG9w
Rm9jdXMnLCAnZm9jdXNpbicsIG1vdW50QXQpO1xuXHQgICAgICAgICAgICBSZWFjdEJyb3dzZXJF
dmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcEJsdXIn
LCAnZm9jdXNvdXQnLCBtb3VudEF0KTtcblx0ICAgICAgICAgIH1cblx0XG5cdCAgICAgICAgICAv
LyB0byBtYWtlIHN1cmUgYmx1ciBhbmQgZm9jdXMgZXZlbnQgbGlzdGVuZXJzIGFyZSBvbmx5IGF0
dGFjaGVkIG9uY2Vcblx0ICAgICAgICAgIGlzTGlzdGVuaW5nLnRvcEJsdXIgPSB0cnVlO1xuXHQg
ICAgICAgICAgaXNMaXN0ZW5pbmcudG9wRm9jdXMgPSB0cnVlO1xuXHQgICAgICAgIH0gZWxzZSBp
ZiAodG9wRXZlbnRNYXBwaW5nLmhhc093blByb3BlcnR5KGRlcGVuZGVuY3kpKSB7XG5cdCAgICAg
ICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJi
bGVkRXZlbnQoZGVwZW5kZW5jeSwgdG9wRXZlbnRNYXBwaW5nW2RlcGVuZGVuY3ldLCBtb3VudEF0
KTtcblx0ICAgICAgICB9XG5cdFxuXHQgICAgICAgIGlzTGlzdGVuaW5nW2RlcGVuZGVuY3ldID0g
dHJ1ZTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIHRyYXBCdWJibGVkRXZl
bnQ6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgaGFuZGxlKSB7XG5c
dCAgICByZXR1cm4gUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50
cmFwQnViYmxlZEV2ZW50KHRvcExldmVsVHlwZSwgaGFuZGxlckJhc2VOYW1lLCBoYW5kbGUpO1xu
XHQgIH0sXG5cdFxuXHQgIHRyYXBDYXB0dXJlZEV2ZW50OiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBl
LCBoYW5kbGVyQmFzZU5hbWUsIGhhbmRsZSkge1xuXHQgICAgcmV0dXJuIFJlYWN0QnJvd3NlckV2
ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQodG9wTGV2ZWxU
eXBlLCBoYW5kbGVyQmFzZU5hbWUsIGhhbmRsZSk7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAg
ICogUHJvdGVjdCBhZ2FpbnN0IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCkgcmV0dXJuaW5nIG51bGxc
blx0ICAgKiBTb21lIHBvcHVwIGJsb2NrZXIgZXh0ZW5zaW9ucyBhcHBlYXIgdG8gZG8gdGhpczpc
blx0ICAgKiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzY4ODdcblx0
ICAgKi9cblx0ICBzdXBwb3J0c0V2ZW50UGFnZVhZOiBmdW5jdGlvbiAoKSB7XG5cdCAgICBpZiAo
IWRvY3VtZW50LmNyZWF0ZUV2ZW50KSB7XG5cdCAgICAgIHJldHVybiBmYWxzZTtcblx0ICAgIH1c
blx0ICAgIHZhciBldiA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdNb3VzZUV2ZW50Jyk7XG5cdCAg
ICByZXR1cm4gZXYgIT0gbnVsbCAmJiAncGFnZVgnIGluIGV2O1xuXHQgIH0sXG5cdFxuXHQgIC8q
KlxuXHQgICAqIExpc3RlbnMgdG8gd2luZG93IHNjcm9sbCBhbmQgcmVzaXplIGV2ZW50cy4gV2Ug
Y2FjaGUgc2Nyb2xsIHZhbHVlcyBzbyB0aGF0XG5cdCAgICogYXBwbGljYXRpb24gY29kZSBjYW4g
YWNjZXNzIHRoZW0gd2l0aG91dCB0cmlnZ2VyaW5nIHJlZmxvd3MuXG5cdCAgICpcblx0ICAgKiBW
aWV3cG9ydE1ldHJpY3MgaXMgb25seSB1c2VkIGJ5IFN5bnRoZXRpY01vdXNlL1RvdWNoRXZlbnQg
YW5kIG9ubHkgd2hlblxuXHQgICAqIHBhZ2VYL3BhZ2VZIGlzbid0IHN1cHBvcnRlZCAobGVnYWN5
IGJyb3dzZXJzKS5cblx0ICAgKlxuXHQgICAqIE5PVEU6IFNjcm9sbCBldmVudHMgZG8gbm90IGJ1
YmJsZS5cblx0ICAgKlxuXHQgICAqIEBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9kb20v
ZXZlbnRzL3Njcm9sbC5odG1sXG5cdCAgICovXG5cdCAgZW5zdXJlU2Nyb2xsVmFsdWVNb25pdG9y
aW5nOiBmdW5jdGlvbiAoKSB7XG5cdCAgICBpZiAoaGFzRXZlbnRQYWdlWFkgPT09IHVuZGVmaW5l
ZCkge1xuXHQgICAgICBoYXNFdmVudFBhZ2VYWSA9IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5z
dXBwb3J0c0V2ZW50UGFnZVhZKCk7XG5cdCAgICB9XG5cdCAgICBpZiAoIWhhc0V2ZW50UGFnZVhZ
ICYmICFpc01vbml0b3JpbmdTY3JvbGxWYWx1ZSkge1xuXHQgICAgICB2YXIgcmVmcmVzaCA9IFZp
ZXdwb3J0TWV0cmljcy5yZWZyZXNoU2Nyb2xsVmFsdWVzO1xuXHQgICAgICBSZWFjdEJyb3dzZXJF
dmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLm1vbml0b3JTY3JvbGxWYWx1ZShyZWZyZXNo
KTtcblx0ICAgICAgaXNNb25pdG9yaW5nU2Nyb2xsVmFsdWUgPSB0cnVlO1xuXHQgICAgfVxuXHQg
IH1cblx0fSk7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRl
cjtcblxuLyoqKi8gfSxcbi8qIDI2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMs
IF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgU3ludGhl
dGljVUlFdmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMjIpO1xuXHR2YXIgVmlld3BvcnRNZXRy
aWNzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2OSk7XG5cdFxuXHR2YXIgZ2V0RXZlbnRNb2RpZmll
clN0YXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NSk7XG5cdFxuXHQvKipcblx0ICogQGludGVy
ZmFjZSBNb3VzZUV2ZW50XG5cdCAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVs
LTMtRXZlbnRzL1xuXHQgKi9cblx0dmFyIE1vdXNlRXZlbnRJbnRlcmZhY2UgPSB7XG5cdCAgc2Ny
ZWVuWDogbnVsbCxcblx0ICBzY3JlZW5ZOiBudWxsLFxuXHQgIGNsaWVudFg6IG51bGwsXG5cdCAg
Y2xpZW50WTogbnVsbCxcblx0ICBjdHJsS2V5OiBudWxsLFxuXHQgIHNoaWZ0S2V5OiBudWxsLFxu
XHQgIGFsdEtleTogbnVsbCxcblx0ICBtZXRhS2V5OiBudWxsLFxuXHQgIGdldE1vZGlmaWVyU3Rh
dGU6IGdldEV2ZW50TW9kaWZpZXJTdGF0ZSxcblx0ICBidXR0b246IGZ1bmN0aW9uIChldmVudCkg
e1xuXHQgICAgLy8gV2Via2l0LCBGaXJlZm94LCBJRTkrXG5cdCAgICAvLyB3aGljaDogIDEgMiAz
XG5cdCAgICAvLyBidXR0b246IDAgMSAyIChzdGFuZGFyZClcblx0ICAgIHZhciBidXR0b24gPSBl
dmVudC5idXR0b247XG5cdCAgICBpZiAoJ3doaWNoJyBpbiBldmVudCkge1xuXHQgICAgICByZXR1
cm4gYnV0dG9uO1xuXHQgICAgfVxuXHQgICAgLy8gSUU8OVxuXHQgICAgLy8gd2hpY2g6ICB1bmRl
ZmluZWRcblx0ICAgIC8vIGJ1dHRvbjogMCAwIDBcblx0ICAgIC8vIGJ1dHRvbjogMSA0IDIgKG9u
bW91c2V1cClcblx0ICAgIHJldHVybiBidXR0b24gPT09IDIgPyAyIDogYnV0dG9uID09PSA0ID8g
MSA6IDA7XG5cdCAgfSxcblx0ICBidXR0b25zOiBudWxsLFxuXHQgIHJlbGF0ZWRUYXJnZXQ6IGZ1
bmN0aW9uIChldmVudCkge1xuXHQgICAgcmV0dXJuIGV2ZW50LnJlbGF0ZWRUYXJnZXQgfHwgKGV2
ZW50LmZyb21FbGVtZW50ID09PSBldmVudC5zcmNFbGVtZW50ID8gZXZlbnQudG9FbGVtZW50IDog
ZXZlbnQuZnJvbUVsZW1lbnQpO1xuXHQgIH0sXG5cdCAgLy8gXCJQcm9wcmlldGFyeVwiIEludGVy
ZmFjZS5cblx0ICBwYWdlWDogZnVuY3Rpb24gKGV2ZW50KSB7XG5cdCAgICByZXR1cm4gJ3BhZ2VY
JyBpbiBldmVudCA/IGV2ZW50LnBhZ2VYIDogZXZlbnQuY2xpZW50WCArIFZpZXdwb3J0TWV0cmlj
cy5jdXJyZW50U2Nyb2xsTGVmdDtcblx0ICB9LFxuXHQgIHBhZ2VZOiBmdW5jdGlvbiAoZXZlbnQp
IHtcblx0ICAgIHJldHVybiAncGFnZVknIGluIGV2ZW50ID8gZXZlbnQucGFnZVkgOiBldmVudC5j
bGllbnRZICsgVmlld3BvcnRNZXRyaWNzLmN1cnJlbnRTY3JvbGxUb3A7XG5cdCAgfVxuXHR9O1xu
XHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0
aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cblx0ICogQHBhcmFtIHtzdHJpbmd9IGRp
c3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuXHQgKiBA
cGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG5cdCAqIEBl
eHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fVxuXHQgKi9cblx0ZnVuY3Rpb24gU3ludGhldGljTW91
c2VFdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRp
dmVFdmVudFRhcmdldCkge1xuXHQgIHJldHVybiBTeW50aGV0aWNVSUV2ZW50LmNhbGwodGhpcywg
ZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRU
YXJnZXQpO1xuXHR9XG5cdFxuXHRTeW50aGV0aWNVSUV2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0
aWNNb3VzZUV2ZW50LCBNb3VzZUV2ZW50SW50ZXJmYWNlKTtcblx0XG5cdG1vZHVsZS5leHBvcnRz
ID0gU3ludGhldGljTW91c2VFdmVudDtcblxuLyoqKi8gfSxcbi8qIDI3ICovXG4vKioqLyBmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0
ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0
cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogXG5cdCAqL1xuXHRcblx0J3Vz
ZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVf
XygzKTtcblx0XG5cdHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHRc
blx0dmFyIE9CU0VSVkVEX0VSUk9SID0ge307XG5cdFxuXHQvKipcblx0ICogYFRyYW5zYWN0aW9u
YCBjcmVhdGVzIGEgYmxhY2sgYm94IHRoYXQgaXMgYWJsZSB0byB3cmFwIGFueSBtZXRob2Qgc3Vj
aCB0aGF0XG5cdCAqIGNlcnRhaW4gaW52YXJpYW50cyBhcmUgbWFpbnRhaW5lZCBiZWZvcmUgYW5k
IGFmdGVyIHRoZSBtZXRob2QgaXMgaW52b2tlZFxuXHQgKiAoRXZlbiBpZiBhbiBleGNlcHRpb24g
aXMgdGhyb3duIHdoaWxlIGludm9raW5nIHRoZSB3cmFwcGVkIG1ldGhvZCkuIFdob2V2ZXJcblx0
ICogaW5zdGFudGlhdGVzIGEgdHJhbnNhY3Rpb24gY2FuIHByb3ZpZGUgZW5mb3JjZXJzIG9mIHRo
ZSBpbnZhcmlhbnRzIGF0XG5cdCAqIGNyZWF0aW9uIHRpbWUuIFRoZSBgVHJhbnNhY3Rpb25gIGNs
YXNzIGl0c2VsZiB3aWxsIHN1cHBseSBvbmUgYWRkaXRpb25hbFxuXHQgKiBhdXRvbWF0aWMgaW52
YXJpYW50IGZvciB5b3UgLSB0aGUgaW52YXJpYW50IHRoYXQgYW55IHRyYW5zYWN0aW9uIGluc3Rh
bmNlXG5cdCAqIHNob3VsZCBub3QgYmUgcnVuIHdoaWxlIGl0IGlzIGFscmVhZHkgYmVpbmcgcnVu
LiBZb3Ugd291bGQgdHlwaWNhbGx5IGNyZWF0ZSBhXG5cdCAqIHNpbmdsZSBpbnN0YW5jZSBvZiBh
IGBUcmFuc2FjdGlvbmAgZm9yIHJldXNlIG11bHRpcGxlIHRpbWVzLCB0aGF0IHBvdGVudGlhbGx5
XG5cdCAqIGlzIHVzZWQgdG8gd3JhcCBzZXZlcmFsIGRpZmZlcmVudCBtZXRob2RzLiBXcmFwcGVy
cyBhcmUgZXh0cmVtZWx5IHNpbXBsZSAtXG5cdCAqIHRoZXkgb25seSByZXF1aXJlIGltcGxlbWVu
dGluZyB0d28gbWV0aG9kcy5cblx0ICpcblx0ICogPHByZT5cblx0ICogICAgICAgICAgICAgICAg
ICAgICAgIHdyYXBwZXJzIChpbmplY3RlZCBhdCBjcmVhdGlvbiB0aW1lKVxuXHQgKiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAgICAgICAgK1xuXHQgKiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgfFxuXHQgKiAgICAgICAgICAgICAg
ICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tfC0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tK1xuXHQgKiAg
ICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgdiAgICAgICAgfCAgICAgICAgICAg
ICAgfFxuXHQgKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICstLS0tLS0tLS0tLS0tLS0rICAg
fCAgICAgICAgICAgICAgfFxuXHQgKiAgICAgICAgICAgICAgICAgICAgfCAgICstLXwgICAgd3Jh
cHBlcjEgICB8LS0tfC0tLS0rICAgICAgICAgfFxuXHQgKiAgICAgICAgICAgICAgICAgICAgfCAg
IHwgICstLS0tLS0tLS0tLS0tLS0rICAgdiAgICB8ICAgICAgICAgfFxuXHQgKiAgICAgICAgICAg
ICAgICAgICAgfCAgIHwgICAgICAgICAgKy0tLS0tLS0tLS0tLS0rICB8ICAgICAgICAgfFxuXHQg
KiAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgICstLS0tfCAgIHdyYXBwZXIyICB8LS0tLS0t
LS0rICAgfFxuXHQgKiAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgIHwgICAgKy0tLS0tLS0t
LS0tLS0rICB8ICAgICB8ICAgfFxuXHQgKiAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgIHwg
ICAgICAgICAgICAgICAgICAgICB8ICAgICB8ICAgfFxuXHQgKiAgICAgICAgICAgICAgICAgICAg
fCAgIHYgICAgIHYgICAgICAgICAgICAgICAgICAgICB2ICAgICB2ICAgfCB3cmFwcGVyXG5cdCAq
ICAgICAgICAgICAgICAgICAgICB8ICstLS0rICstLS0rICAgKy0tLS0tLS0tLSsgICArLS0tKyAr
LS0tKyB8IGludmFyaWFudHNcblx0ICogcGVyZm9ybShhbnlNZXRob2QpIHwgfCAgIHwgfCAgIHwg
ICB8ICAgICAgICAgfCAgIHwgICB8IHwgICB8IHwgbWFpbnRhaW5lZFxuXHQgKiArLS0tLS0tLS0t
LS0tLS0tLS0+fC18LS0tfC18LS0tfC0tPnxhbnlNZXRob2R8LS0tfC0tLXwtfC0tLXwtfC0tLS0t
LS0tPlxuXHQgKiAgICAgICAgICAgICAgICAgICAgfCB8ICAgfCB8ICAgfCAgIHwgICAgICAgICB8
ICAgfCAgIHwgfCAgIHwgfFxuXHQgKiAgICAgICAgICAgICAgICAgICAgfCB8ICAgfCB8ICAgfCAg
IHwgICAgICAgICB8ICAgfCAgIHwgfCAgIHwgfFxuXHQgKiAgICAgICAgICAgICAgICAgICAgfCB8
ICAgfCB8ICAgfCAgIHwgICAgICAgICB8ICAgfCAgIHwgfCAgIHwgfFxuXHQgKiAgICAgICAgICAg
ICAgICAgICAgfCArLS0tKyArLS0tKyAgICstLS0tLS0tLS0rICAgKy0tLSsgKy0tLSsgfFxuXHQg
KiAgICAgICAgICAgICAgICAgICAgfCAgaW5pdGlhbGl6ZSAgICAgICAgICAgICAgICAgICAgY2xv
c2UgICAgfFxuXHQgKiAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tK1xuXHQgKiA8L3ByZT5cblx0ICpcblx0ICogVXNlIGNhc2VzOlxu
XHQgKiAtIFByZXNlcnZpbmcgdGhlIGlucHV0IHNlbGVjdGlvbiByYW5nZXMgYmVmb3JlL2FmdGVy
IHJlY29uY2lsaWF0aW9uLlxuXHQgKiAgIFJlc3RvcmluZyBzZWxlY3Rpb24gZXZlbiBpbiB0aGUg
ZXZlbnQgb2YgYW4gdW5leHBlY3RlZCBlcnJvci5cblx0ICogLSBEZWFjdGl2YXRpbmcgZXZlbnRz
IHdoaWxlIHJlYXJyYW5naW5nIHRoZSBET00sIHByZXZlbnRpbmcgYmx1cnMvZm9jdXNlcyxcblx0
ICogICB3aGlsZSBndWFyYW50ZWVpbmcgdGhhdCBhZnRlcndhcmRzLCB0aGUgZXZlbnQgc3lzdGVt
IGlzIHJlYWN0aXZhdGVkLlxuXHQgKiAtIEZsdXNoaW5nIGEgcXVldWUgb2YgY29sbGVjdGVkIERP
TSBtdXRhdGlvbnMgdG8gdGhlIG1haW4gVUkgdGhyZWFkIGFmdGVyIGFcblx0ICogICByZWNvbmNp
bGlhdGlvbiB0YWtlcyBwbGFjZSBpbiBhIHdvcmtlciB0aHJlYWQuXG5cdCAqIC0gSW52b2tpbmcg
YW55IGNvbGxlY3RlZCBgY29tcG9uZW50RGlkVXBkYXRlYCBjYWxsYmFja3MgYWZ0ZXIgcmVuZGVy
aW5nIG5ld1xuXHQgKiAgIGNvbnRlbnQuXG5cdCAqIC0gKEZ1dHVyZSB1c2UgY2FzZSk6IFdyYXBw
aW5nIHBhcnRpY3VsYXIgZmx1c2hlcyBvZiB0aGUgYFJlYWN0V29ya2VyYCBxdWV1ZVxuXHQgKiAg
IHRvIHByZXNlcnZlIHRoZSBgc2Nyb2xsVG9wYCAoYW4gYXV0b21hdGljIHNjcm9sbCBhd2FyZSBE
T00pLlxuXHQgKiAtIChGdXR1cmUgdXNlIGNhc2UpOiBMYXlvdXQgY2FsY3VsYXRpb25zIGJlZm9y
ZSBhbmQgYWZ0ZXIgRE9NIHVwZGF0ZXMuXG5cdCAqXG5cdCAqIFRyYW5zYWN0aW9uYWwgcGx1Z2lu
IEFQSTpcblx0ICogLSBBIG1vZHVsZSB0aGF0IGhhcyBhbiBgaW5pdGlhbGl6ZWAgbWV0aG9kIHRo
YXQgcmV0dXJucyBhbnkgcHJlY29tcHV0YXRpb24uXG5cdCAqIC0gYW5kIGEgYGNsb3NlYCBtZXRo
b2QgdGhhdCBhY2NlcHRzIHRoZSBwcmVjb21wdXRhdGlvbi4gYGNsb3NlYCBpcyBpbnZva2VkXG5c
dCAqICAgd2hlbiB0aGUgd3JhcHBlZCBwcm9jZXNzIGlzIGNvbXBsZXRlZCwgb3IgaGFzIGZhaWxl
ZC5cblx0ICpcblx0ICogQHBhcmFtIHtBcnJheTxUcmFuc2FjdGlvbmFsV3JhcHBlcj59IHRyYW5z
YWN0aW9uV3JhcHBlciBXcmFwcGVyIG1vZHVsZXNcblx0ICogdGhhdCBpbXBsZW1lbnQgYGluaXRp
YWxpemVgIGFuZCBgY2xvc2VgLlxuXHQgKiBAcmV0dXJuIHtUcmFuc2FjdGlvbn0gU2luZ2xlIHRy
YW5zYWN0aW9uIGZvciByZXVzZSBpbiB0aHJlYWQuXG5cdCAqXG5cdCAqIEBjbGFzcyBUcmFuc2Fj
dGlvblxuXHQgKi9cblx0dmFyIFRyYW5zYWN0aW9uSW1wbCA9IHtcblx0ICAvKipcblx0ICAgKiBT
ZXRzIHVwIHRoaXMgaW5zdGFuY2Ugc28gdGhhdCBpdCBpcyBwcmVwYXJlZCBmb3IgY29sbGVjdGlu
ZyBtZXRyaWNzLiBEb2VzXG5cdCAgICogc28gc3VjaCB0aGF0IHRoaXMgc2V0dXAgbWV0aG9kIG1h
eSBiZSB1c2VkIG9uIGFuIGluc3RhbmNlIHRoYXQgaXMgYWxyZWFkeVxuXHQgICAqIGluaXRpYWxp
emVkLCBpbiBhIHdheSB0aGF0IGRvZXMgbm90IGNvbnN1bWUgYWRkaXRpb25hbCBtZW1vcnkgdXBv
biByZXVzZS5cblx0ICAgKiBUaGF0IGNhbiBiZSB1c2VmdWwgaWYgeW91IGRlY2lkZSB0byBtYWtl
IHlvdXIgc3ViY2xhc3Mgb2YgdGhpcyBtaXhpbiBhXG5cdCAgICogXCJQb29sZWRDbGFzc1wiLlxu
XHQgICAqL1xuXHQgIHJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uOiBmdW5jdGlvbiAoKSB7XG5cdCAg
ICB0aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnMgPSB0aGlzLmdldFRyYW5zYWN0aW9uV3JhcHBlcnMo
KTtcblx0ICAgIGlmICh0aGlzLndyYXBwZXJJbml0RGF0YSkge1xuXHQgICAgICB0aGlzLndyYXBw
ZXJJbml0RGF0YS5sZW5ndGggPSAwO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgdGhpcy53cmFw
cGVySW5pdERhdGEgPSBbXTtcblx0ICAgIH1cblx0ICAgIHRoaXMuX2lzSW5UcmFuc2FjdGlvbiA9
IGZhbHNlO1xuXHQgIH0sXG5cdFxuXHQgIF9pc0luVHJhbnNhY3Rpb246IGZhbHNlLFxuXHRcblx0
ICAvKipcblx0ICAgKiBAYWJzdHJhY3Rcblx0ICAgKiBAcmV0dXJuIHtBcnJheTxUcmFuc2FjdGlv
bldyYXBwZXI+fSBBcnJheSBvZiB0cmFuc2FjdGlvbiB3cmFwcGVycy5cblx0ICAgKi9cblx0ICBn
ZXRUcmFuc2FjdGlvbldyYXBwZXJzOiBudWxsLFxuXHRcblx0ICBpc0luVHJhbnNhY3Rpb246IGZ1
bmN0aW9uICgpIHtcblx0ICAgIHJldHVybiAhIXRoaXMuX2lzSW5UcmFuc2FjdGlvbjtcblx0ICB9
LFxuXHRcblx0ICAvKiBlc2xpbnQtZGlzYWJsZSBzcGFjZS1iZWZvcmUtZnVuY3Rpb24tcGFyZW4g
Ki9cblx0XG5cdCAgLyoqXG5cdCAgICogRXhlY3V0ZXMgdGhlIGZ1bmN0aW9uIHdpdGhpbiBhIHNh
ZmV0eSB3aW5kb3cuIFVzZSB0aGlzIGZvciB0aGUgdG9wIGxldmVsXG5cdCAgICogbWV0aG9kcyB0
aGF0IHJlc3VsdCBpbiBsYXJnZSBhbW91bnRzIG9mIGNvbXB1dGF0aW9uL211dGF0aW9ucyB0aGF0
IHdvdWxkXG5cdCAgICogbmVlZCB0byBiZSBzYWZldHkgY2hlY2tlZC4gVGhlIG9wdGlvbmFsIGFy
Z3VtZW50cyBoZWxwcyBwcmV2ZW50IHRoZSBuZWVkXG5cdCAgICogdG8gYmluZCBpbiBtYW55IGNh
c2VzLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtmdW5jdGlvbn0gbWV0aG9kIE1lbWJlciBvZiBz
Y29wZSB0byBjYWxsLlxuXHQgICAqIEBwYXJhbSB7T2JqZWN0fSBzY29wZSBTY29wZSB0byBpbnZv
a2UgZnJvbS5cblx0ICAgKiBAcGFyYW0ge09iamVjdD89fSBhIEFyZ3VtZW50IHRvIHBhc3MgdG8g
dGhlIG1ldGhvZC5cblx0ICAgKiBAcGFyYW0ge09iamVjdD89fSBiIEFyZ3VtZW50IHRvIHBhc3Mg
dG8gdGhlIG1ldGhvZC5cblx0ICAgKiBAcGFyYW0ge09iamVjdD89fSBjIEFyZ3VtZW50IHRvIHBh
c3MgdG8gdGhlIG1ldGhvZC5cblx0ICAgKiBAcGFyYW0ge09iamVjdD89fSBkIEFyZ3VtZW50IHRv
IHBhc3MgdG8gdGhlIG1ldGhvZC5cblx0ICAgKiBAcGFyYW0ge09iamVjdD89fSBlIEFyZ3VtZW50
IHRvIHBhc3MgdG8gdGhlIG1ldGhvZC5cblx0ICAgKiBAcGFyYW0ge09iamVjdD89fSBmIEFyZ3Vt
ZW50IHRvIHBhc3MgdG8gdGhlIG1ldGhvZC5cblx0ICAgKlxuXHQgICAqIEByZXR1cm4geyp9IFJl
dHVybiB2YWx1ZSBmcm9tIGBtZXRob2RgLlxuXHQgICAqL1xuXHQgIHBlcmZvcm06IGZ1bmN0aW9u
IChtZXRob2QsIHNjb3BlLCBhLCBiLCBjLCBkLCBlLCBmKSB7XG5cdCAgICAvKiBlc2xpbnQtZW5h
YmxlIHNwYWNlLWJlZm9yZS1mdW5jdGlvbi1wYXJlbiAqL1xuXHQgICAgISF0aGlzLmlzSW5UcmFu
c2FjdGlvbigpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnVHJhbnNhY3Rpb24ucGVyZm9y
bSguLi4pOiBDYW5ub3QgaW5pdGlhbGl6ZSBhIHRyYW5zYWN0aW9uIHdoZW4gdGhlcmUgaXMgYWxy
ZWFkeSBhbiBvdXRzdGFuZGluZyB0cmFuc2FjdGlvbi4nKSA6IF9wcm9kSW52YXJpYW50KCcyNycp
IDogdm9pZCAwO1xuXHQgICAgdmFyIGVycm9yVGhyb3duO1xuXHQgICAgdmFyIHJldDtcblx0ICAg
IHRyeSB7XG5cdCAgICAgIHRoaXMuX2lzSW5UcmFuc2FjdGlvbiA9IHRydWU7XG5cdCAgICAgIC8v
IENhdGNoaW5nIGVycm9ycyBtYWtlcyBkZWJ1Z2dpbmcgbW9yZSBkaWZmaWN1bHQsIHNvIHdlIHN0
YXJ0IHdpdGhcblx0ICAgICAgLy8gZXJyb3JUaHJvd24gc2V0IHRvIHRydWUgYmVmb3JlIHNldHRp
bmcgaXQgdG8gZmFsc2UgYWZ0ZXIgY2FsbGluZ1xuXHQgICAgICAvLyBjbG9zZSAtLSBpZiBpdCdz
IHN0aWxsIHNldCB0byB0cnVlIGluIHRoZSBmaW5hbGx5IGJsb2NrLCBpdCBtZWFuc1xuXHQgICAg
ICAvLyBvbmUgb2YgdGhlc2UgY2FsbHMgdGhyZXcuXG5cdCAgICAgIGVycm9yVGhyb3duID0gdHJ1
ZTtcblx0ICAgICAgdGhpcy5pbml0aWFsaXplQWxsKDApO1xuXHQgICAgICByZXQgPSBtZXRob2Qu
Y2FsbChzY29wZSwgYSwgYiwgYywgZCwgZSwgZik7XG5cdCAgICAgIGVycm9yVGhyb3duID0gZmFs
c2U7XG5cdCAgICB9IGZpbmFsbHkge1xuXHQgICAgICB0cnkge1xuXHQgICAgICAgIGlmIChlcnJv
clRocm93bikge1xuXHQgICAgICAgICAgLy8gSWYgYG1ldGhvZGAgdGhyb3dzLCBwcmVmZXIgdG8g
c2hvdyB0aGF0IHN0YWNrIHRyYWNlIG92ZXIgYW55IHRocm93blxuXHQgICAgICAgICAgLy8gYnkg
aW52b2tpbmcgYGNsb3NlQWxsYC5cblx0ICAgICAgICAgIHRyeSB7XG5cdCAgICAgICAgICAgIHRo
aXMuY2xvc2VBbGwoMCk7XG5cdCAgICAgICAgICB9IGNhdGNoIChlcnIpIHt9XG5cdCAgICAgICAg
fSBlbHNlIHtcblx0ICAgICAgICAgIC8vIFNpbmNlIGBtZXRob2RgIGRpZG4ndCB0aHJvdywgd2Ug
ZG9uJ3Qgd2FudCB0byBzaWxlbmNlIHRoZSBleGNlcHRpb25cblx0ICAgICAgICAgIC8vIGhlcmUu
XG5cdCAgICAgICAgICB0aGlzLmNsb3NlQWxsKDApO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSBm
aW5hbGx5IHtcblx0ICAgICAgICB0aGlzLl9pc0luVHJhbnNhY3Rpb24gPSBmYWxzZTtcblx0ICAg
ICAgfVxuXHQgICAgfVxuXHQgICAgcmV0dXJuIHJldDtcblx0ICB9LFxuXHRcblx0ICBpbml0aWFs
aXplQWxsOiBmdW5jdGlvbiAoc3RhcnRJbmRleCkge1xuXHQgICAgdmFyIHRyYW5zYWN0aW9uV3Jh
cHBlcnMgPSB0aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnM7XG5cdCAgICBmb3IgKHZhciBpID0gc3Rh
cnRJbmRleDsgaSA8IHRyYW5zYWN0aW9uV3JhcHBlcnMubGVuZ3RoOyBpKyspIHtcblx0ICAgICAg
dmFyIHdyYXBwZXIgPSB0cmFuc2FjdGlvbldyYXBwZXJzW2ldO1xuXHQgICAgICB0cnkge1xuXHQg
ICAgICAgIC8vIENhdGNoaW5nIGVycm9ycyBtYWtlcyBkZWJ1Z2dpbmcgbW9yZSBkaWZmaWN1bHQs
IHNvIHdlIHN0YXJ0IHdpdGggdGhlXG5cdCAgICAgICAgLy8gT0JTRVJWRURfRVJST1Igc3RhdGUg
YmVmb3JlIG92ZXJ3cml0aW5nIGl0IHdpdGggdGhlIHJlYWwgcmV0dXJuIHZhbHVlXG5cdCAgICAg
ICAgLy8gb2YgaW5pdGlhbGl6ZSAtLSBpZiBpdCdzIHN0aWxsIHNldCB0byBPQlNFUlZFRF9FUlJP
UiBpbiB0aGUgZmluYWxseVxuXHQgICAgICAgIC8vIGJsb2NrLCBpdCBtZWFucyB3cmFwcGVyLmlu
aXRpYWxpemUgdGhyZXcuXG5cdCAgICAgICAgdGhpcy53cmFwcGVySW5pdERhdGFbaV0gPSBPQlNF
UlZFRF9FUlJPUjtcblx0ICAgICAgICB0aGlzLndyYXBwZXJJbml0RGF0YVtpXSA9IHdyYXBwZXIu
aW5pdGlhbGl6ZSA/IHdyYXBwZXIuaW5pdGlhbGl6ZS5jYWxsKHRoaXMpIDogbnVsbDtcblx0ICAg
ICAgfSBmaW5hbGx5IHtcblx0ICAgICAgICBpZiAodGhpcy53cmFwcGVySW5pdERhdGFbaV0gPT09
IE9CU0VSVkVEX0VSUk9SKSB7XG5cdCAgICAgICAgICAvLyBUaGUgaW5pdGlhbGl6ZXIgZm9yIHdy
YXBwZXIgaSB0aHJldyBhbiBlcnJvcjsgaW5pdGlhbGl6ZSB0aGVcblx0ICAgICAgICAgIC8vIHJl
bWFpbmluZyB3cmFwcGVycyBidXQgc2lsZW5jZSBhbnkgZXhjZXB0aW9ucyBmcm9tIHRoZW0gdG8g
ZW5zdXJlXG5cdCAgICAgICAgICAvLyB0aGF0IHRoZSBmaXJzdCBlcnJvciBpcyB0aGUgb25lIHRv
IGJ1YmJsZSB1cC5cblx0ICAgICAgICAgIHRyeSB7XG5cdCAgICAgICAgICAgIHRoaXMuaW5pdGlh
bGl6ZUFsbChpICsgMSk7XG5cdCAgICAgICAgICB9IGNhdGNoIChlcnIpIHt9XG5cdCAgICAgICAg
fVxuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogSW52b2tl
cyBlYWNoIG9mIGB0aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnMuY2xvc2VbaV1gIGZ1bmN0aW9ucywg
cGFzc2luZyBpbnRvXG5cdCAgICogdGhlbSB0aGUgcmVzcGVjdGl2ZSByZXR1cm4gdmFsdWVzIG9m
IGB0aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnMuaW5pdFtpXWBcblx0ICAgKiAoYGNsb3NlYHJzIHRo
YXQgY29ycmVzcG9uZCB0byBpbml0aWFsaXplcnMgdGhhdCBmYWlsZWQgd2lsbCBub3QgYmVcblx0
ICAgKiBpbnZva2VkKS5cblx0ICAgKi9cblx0ICBjbG9zZUFsbDogZnVuY3Rpb24gKHN0YXJ0SW5k
ZXgpIHtcblx0ICAgICF0aGlzLmlzSW5UcmFuc2FjdGlvbigpID8gIGZhbHNlID8gaW52YXJpYW50
KGZhbHNlLCAnVHJhbnNhY3Rpb24uY2xvc2VBbGwoKTogQ2Fubm90IGNsb3NlIHRyYW5zYWN0aW9u
IHdoZW4gbm9uZSBhcmUgb3Blbi4nKSA6IF9wcm9kSW52YXJpYW50KCcyOCcpIDogdm9pZCAwO1xu
XHQgICAgdmFyIHRyYW5zYWN0aW9uV3JhcHBlcnMgPSB0aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnM7
XG5cdCAgICBmb3IgKHZhciBpID0gc3RhcnRJbmRleDsgaSA8IHRyYW5zYWN0aW9uV3JhcHBlcnMu
bGVuZ3RoOyBpKyspIHtcblx0ICAgICAgdmFyIHdyYXBwZXIgPSB0cmFuc2FjdGlvbldyYXBwZXJz
W2ldO1xuXHQgICAgICB2YXIgaW5pdERhdGEgPSB0aGlzLndyYXBwZXJJbml0RGF0YVtpXTtcblx0
ICAgICAgdmFyIGVycm9yVGhyb3duO1xuXHQgICAgICB0cnkge1xuXHQgICAgICAgIC8vIENhdGNo
aW5nIGVycm9ycyBtYWtlcyBkZWJ1Z2dpbmcgbW9yZSBkaWZmaWN1bHQsIHNvIHdlIHN0YXJ0IHdp
dGhcblx0ICAgICAgICAvLyBlcnJvclRocm93biBzZXQgdG8gdHJ1ZSBiZWZvcmUgc2V0dGluZyBp
dCB0byBmYWxzZSBhZnRlciBjYWxsaW5nXG5cdCAgICAgICAgLy8gY2xvc2UgLS0gaWYgaXQncyBz
dGlsbCBzZXQgdG8gdHJ1ZSBpbiB0aGUgZmluYWxseSBibG9jaywgaXQgbWVhbnNcblx0ICAgICAg
ICAvLyB3cmFwcGVyLmNsb3NlIHRocmV3LlxuXHQgICAgICAgIGVycm9yVGhyb3duID0gdHJ1ZTtc
blx0ICAgICAgICBpZiAoaW5pdERhdGEgIT09IE9CU0VSVkVEX0VSUk9SICYmIHdyYXBwZXIuY2xv
c2UpIHtcblx0ICAgICAgICAgIHdyYXBwZXIuY2xvc2UuY2FsbCh0aGlzLCBpbml0RGF0YSk7XG5c
dCAgICAgICAgfVxuXHQgICAgICAgIGVycm9yVGhyb3duID0gZmFsc2U7XG5cdCAgICAgIH0gZmlu
YWxseSB7XG5cdCAgICAgICAgaWYgKGVycm9yVGhyb3duKSB7XG5cdCAgICAgICAgICAvLyBUaGUg
Y2xvc2VyIGZvciB3cmFwcGVyIGkgdGhyZXcgYW4gZXJyb3I7IGNsb3NlIHRoZSByZW1haW5pbmdc
blx0ICAgICAgICAgIC8vIHdyYXBwZXJzIGJ1dCBzaWxlbmNlIGFueSBleGNlcHRpb25zIGZyb20g
dGhlbSB0byBlbnN1cmUgdGhhdCB0aGVcblx0ICAgICAgICAgIC8vIGZpcnN0IGVycm9yIGlzIHRo
ZSBvbmUgdG8gYnViYmxlIHVwLlxuXHQgICAgICAgICAgdHJ5IHtcblx0ICAgICAgICAgICAgdGhp
cy5jbG9zZUFsbChpICsgMSk7XG5cdCAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuXHQgICAgICAg
IH1cblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgdGhpcy53cmFwcGVySW5pdERhdGEubGVuZ3Ro
ID0gMDtcblx0ICB9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFRyYW5zYWN0aW9uSW1w
bDtcblxuLyoqKi8gfSxcbi8qIDI4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMp
IHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTYtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5c
blx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogQmFz
ZWQgb24gdGhlIGVzY2FwZS1odG1sIGxpYnJhcnksIHdoaWNoIGlzIHVzZWQgdW5kZXIgdGhlIE1J
VCBMaWNlbnNlIGJlbG93OlxuXHQgKlxuXHQgKiBDb3B5cmlnaHQgKGMpIDIwMTItMjAxMyBUSiBI
b2xvd2F5Y2h1a1xuXHQgKiBDb3B5cmlnaHQgKGMpIDIwMTUgQW5kcmVhcyBMdWJiZVxuXHQgKiBD
b3B5cmlnaHQgKGMpIDIwMTUgVGlhbmNoZW5nIFwiVGltb3RoeVwiIEd1XG5cdCAqXG5cdCAqIFBl
cm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29u
IG9idGFpbmluZ1xuXHQgKiBhIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBk
b2N1bWVudGF0aW9uIGZpbGVzICh0aGVcblx0ICogJ1NvZnR3YXJlJyksIHRvIGRlYWwgaW4gdGhl
IFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuXHQgKiB3aXRob3V0IGxp
bWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gs
XG5cdCAqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUg
U29mdHdhcmUsIGFuZCB0b1xuXHQgKiBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2Fy
ZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG9cblx0ICogdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zOlxuXHQgKlxuXHQgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhp
cyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZVxuXHQgKiBpbmNsdWRlZCBpbiBhbGwgY29waWVz
IG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cblx0ICpcblx0ICogVEhF
IFNPRlRXQVJFIElTIFBST1ZJREVEICdBUyBJUycsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJ
TkQsXG5cdCAqIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBU
TyBUSEUgV0FSUkFOVElFUyBPRlxuXHQgKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuXG5cdCAqIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5Z
XG5cdCAqIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBB
Q1RJT04gT0YgQ09OVFJBQ1QsXG5cdCAqIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00s
IE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFXG5cdCAqIFNPRlRXQVJFIE9SIFRIRSBV
U0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXHQgKlxuXHQgKi9cblx0XG5c
dCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8vIGNvZGUgY29waWVkIGFuZCBtb2RpZmllZCBmcm9tIGVz
Y2FwZS1odG1sXG5cdC8qKlxuXHQgKiBNb2R1bGUgdmFyaWFibGVzLlxuXHQgKiBAcHJpdmF0ZVxu
XHQgKi9cblx0XG5cdHZhciBtYXRjaEh0bWxSZWdFeHAgPSAvW1wiJyY8Pl0vO1xuXHRcblx0Lyoq
XG5cdCAqIEVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlcnMgaW4gdGhlIGdpdmVuIHN0cmluZyBvZiBo
dG1sLlxuXHQgKlxuXHQgKiBAcGFyYW0gIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGVz
Y2FwZSBmb3IgaW5zZXJ0aW5nIGludG8gSFRNTFxuXHQgKiBAcmV0dXJuIHtzdHJpbmd9XG5cdCAq
IEBwdWJsaWNcblx0ICovXG5cdFxuXHRmdW5jdGlvbiBlc2NhcGVIdG1sKHN0cmluZykge1xuXHQg
IHZhciBzdHIgPSAnJyArIHN0cmluZztcblx0ICB2YXIgbWF0Y2ggPSBtYXRjaEh0bWxSZWdFeHAu
ZXhlYyhzdHIpO1xuXHRcblx0ICBpZiAoIW1hdGNoKSB7XG5cdCAgICByZXR1cm4gc3RyO1xuXHQg
IH1cblx0XG5cdCAgdmFyIGVzY2FwZTtcblx0ICB2YXIgaHRtbCA9ICcnO1xuXHQgIHZhciBpbmRl
eCA9IDA7XG5cdCAgdmFyIGxhc3RJbmRleCA9IDA7XG5cdFxuXHQgIGZvciAoaW5kZXggPSBtYXRj
aC5pbmRleDsgaW5kZXggPCBzdHIubGVuZ3RoOyBpbmRleCsrKSB7XG5cdCAgICBzd2l0Y2ggKHN0
ci5jaGFyQ29kZUF0KGluZGV4KSkge1xuXHQgICAgICBjYXNlIDM0OlxuXHQgICAgICAgIC8vIFwi
XG5cdCAgICAgICAgZXNjYXBlID0gJyZxdW90Oyc7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAg
IGNhc2UgMzg6XG5cdCAgICAgICAgLy8gJlxuXHQgICAgICAgIGVzY2FwZSA9ICcmYW1wOyc7XG5c
dCAgICAgICAgYnJlYWs7XG5cdCAgICAgIGNhc2UgMzk6XG5cdCAgICAgICAgLy8gJ1xuXHQgICAg
ICAgIGVzY2FwZSA9ICcmI3gyNzsnOyAvLyBtb2RpZmllZCBmcm9tIGVzY2FwZS1odG1sOyB1c2Vk
IHRvIGJlICcmIzM5J1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlIDYwOlxuXHQgICAg
ICAgIC8vIDxcblx0ICAgICAgICBlc2NhcGUgPSAnJmx0Oyc7XG5cdCAgICAgICAgYnJlYWs7XG5c
dCAgICAgIGNhc2UgNjI6XG5cdCAgICAgICAgLy8gPlxuXHQgICAgICAgIGVzY2FwZSA9ICcmZ3Q7
Jztcblx0ICAgICAgICBicmVhaztcblx0ICAgICAgZGVmYXVsdDpcblx0ICAgICAgICBjb250aW51
ZTtcblx0ICAgIH1cblx0XG5cdCAgICBpZiAobGFzdEluZGV4ICE9PSBpbmRleCkge1xuXHQgICAg
ICBodG1sICs9IHN0ci5zdWJzdHJpbmcobGFzdEluZGV4LCBpbmRleCk7XG5cdCAgICB9XG5cdFxu
XHQgICAgbGFzdEluZGV4ID0gaW5kZXggKyAxO1xuXHQgICAgaHRtbCArPSBlc2NhcGU7XG5cdCAg
fVxuXHRcblx0ICByZXR1cm4gbGFzdEluZGV4ICE9PSBpbmRleCA/IGh0bWwgKyBzdHIuc3Vic3Ry
aW5nKGxhc3RJbmRleCwgaW5kZXgpIDogaHRtbDtcblx0fVxuXHQvLyBlbmQgY29kZSBjb3BpZWQg
YW5kIG1vZGlmaWVkIGZyb20gZXNjYXBlLWh0bWxcblx0XG5cdC8qKlxuXHQgKiBFc2NhcGVzIHRl
eHQgdG8gcHJldmVudCBzY3JpcHRpbmcgYXR0YWNrcy5cblx0ICpcblx0ICogQHBhcmFtIHsqfSB0
ZXh0IFRleHQgdmFsdWUgdG8gZXNjYXBlLlxuXHQgKiBAcmV0dXJuIHtzdHJpbmd9IEFuIGVzY2Fw
ZWQgc3RyaW5nLlxuXHQgKi9cblx0ZnVuY3Rpb24gZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2Vy
KHRleHQpIHtcblx0ICBpZiAodHlwZW9mIHRleHQgPT09ICdib29sZWFuJyB8fCB0eXBlb2YgdGV4
dCA9PT0gJ251bWJlcicpIHtcblx0ICAgIC8vIHRoaXMgc2hvcnRjaXJjdWl0IGhlbHBzIHBlcmYg
Zm9yIHR5cGVzIHRoYXQgd2Uga25vdyB3aWxsIG5ldmVyIGhhdmVcblx0ICAgIC8vIHNwZWNpYWwg
Y2hhcmFjdGVycywgZXNwZWNpYWxseSBnaXZlbiB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgdXNlZCBv
ZnRlblxuXHQgICAgLy8gZm9yIG51bWVyaWMgZG9tIGlkcy5cblx0ICAgIHJldHVybiAnJyArIHRl
eHQ7XG5cdCAgfVxuXHQgIHJldHVybiBlc2NhcGVIdG1sKHRleHQpO1xuXHR9XG5cdFxuXHRtb2R1
bGUuZXhwb3J0cyA9IGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlcjtcblxuLyoqKi8gfSxcbi8q
IDI5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJl
X18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5c
dCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICov
XG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xuXHR2YXIgRE9NTmFtZXNwYWNlcyA9IF9fd2VicGFja19y
ZXF1aXJlX18oMzUpO1xuXHRcblx0dmFyIFdISVRFU1BBQ0VfVEVTVCA9IC9eWyBcXHJcXG5cXHRc
XGZdLztcblx0dmFyIE5PTlZJU0lCTEVfVEVTVCA9IC88KCEtLXxsaW5rfG5vc2NyaXB0fG1ldGF8
c2NyaXB0fHN0eWxlKVsgXFxyXFxuXFx0XFxmXFwvPl0vO1xuXHRcblx0dmFyIGNyZWF0ZU1pY3Jv
c29mdFVuc2FmZUxvY2FsRnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQzKTtcblx0XG5c
dC8vIFNWRyB0ZW1wIGNvbnRhaW5lciBmb3IgSUUgbGFja2luZyBpbm5lckhUTUxcblx0dmFyIHJl
dXNhYmxlU1ZHQ29udGFpbmVyO1xuXHRcblx0LyoqXG5cdCAqIFNldCB0aGUgaW5uZXJIVE1MIHBy
b3BlcnR5IG9mIGEgbm9kZSwgZW5zdXJpbmcgdGhhdCB3aGl0ZXNwYWNlIGlzIHByZXNlcnZlZFxu
XHQgKiBldmVuIGluIElFOC5cblx0ICpcblx0ICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG5c
dCAqIEBwYXJhbSB7c3RyaW5nfSBodG1sXG5cdCAqIEBpbnRlcm5hbFxuXHQgKi9cblx0dmFyIHNl
dElubmVySFRNTCA9IGNyZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb24oZnVuY3Rpb24g
KG5vZGUsIGh0bWwpIHtcblx0ICAvLyBJRSBkb2VzIG5vdCBoYXZlIGlubmVySFRNTCBmb3IgU1ZH
IG5vZGVzLCBzbyBpbnN0ZWFkIHdlIGluamVjdCB0aGVcblx0ICAvLyBuZXcgbWFya3VwIGluIGEg
dGVtcCBub2RlIGFuZCB0aGVuIG1vdmUgdGhlIGNoaWxkIG5vZGVzIGFjcm9zcyBpbnRvXG5cdCAg
Ly8gdGhlIHRhcmdldCBub2RlXG5cdCAgaWYgKG5vZGUubmFtZXNwYWNlVVJJID09PSBET01OYW1l
c3BhY2VzLnN2ZyAmJiAhKCdpbm5lckhUTUwnIGluIG5vZGUpKSB7XG5cdCAgICByZXVzYWJsZVNW
R0NvbnRhaW5lciA9IHJldXNhYmxlU1ZHQ29udGFpbmVyIHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpO1xuXHQgICAgcmV1c2FibGVTVkdDb250YWluZXIuaW5uZXJIVE1MID0gJzxzdmc+
JyArIGh0bWwgKyAnPC9zdmc+Jztcblx0ICAgIHZhciBzdmdOb2RlID0gcmV1c2FibGVTVkdDb250
YWluZXIuZmlyc3RDaGlsZDtcblx0ICAgIHdoaWxlIChzdmdOb2RlLmZpcnN0Q2hpbGQpIHtcblx0
ICAgICAgbm9kZS5hcHBlbmRDaGlsZChzdmdOb2RlLmZpcnN0Q2hpbGQpO1xuXHQgICAgfVxuXHQg
IH0gZWxzZSB7XG5cdCAgICBub2RlLmlubmVySFRNTCA9IGh0bWw7XG5cdCAgfVxuXHR9KTtcblx0
XG5cdGlmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00pIHtcblx0ICAvLyBJRTg6IFdo
ZW4gdXBkYXRpbmcgYSBqdXN0IGNyZWF0ZWQgbm9kZSB3aXRoIGlubmVySFRNTCBvbmx5IGxlYWRp
bmdcblx0ICAvLyB3aGl0ZXNwYWNlIGlzIHJlbW92ZWQuIFdoZW4gdXBkYXRpbmcgYW4gZXhpc3Rp
bmcgbm9kZSB3aXRoIGlubmVySFRNTFxuXHQgIC8vIHdoaXRlc3BhY2UgaW4gcm9vdCBUZXh0Tm9k
ZXMgaXMgYWxzbyBjb2xsYXBzZWQuXG5cdCAgLy8gQHNlZSBxdWlya3Ntb2RlLm9yZy9idWdyZXBv
cnRzL2FyY2hpdmVzLzIwMDQvMTEvaW5uZXJodG1sX2FuZF90Lmh0bWxcblx0XG5cdCAgLy8gRmVh
dHVyZSBkZXRlY3Rpb247IG9ubHkgSUU4IGlzIGtub3duIHRvIGJlaGF2ZSBpbXByb3Blcmx5IGxp
a2UgdGhpcy5cblx0ICB2YXIgdGVzdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdk
aXYnKTtcblx0ICB0ZXN0RWxlbWVudC5pbm5lckhUTUwgPSAnICc7XG5cdCAgaWYgKHRlc3RFbGVt
ZW50LmlubmVySFRNTCA9PT0gJycpIHtcblx0ICAgIHNldElubmVySFRNTCA9IGZ1bmN0aW9uIChu
b2RlLCBodG1sKSB7XG5cdCAgICAgIC8vIE1hZ2ljIHRoZW9yeTogSUU4IHN1cHBvc2VkbHkgZGlm
ZmVyZW50aWF0ZXMgYmV0d2VlbiBhZGRlZCBhbmQgdXBkYXRlZFxuXHQgICAgICAvLyBub2RlcyB3
aGVuIHByb2Nlc3NpbmcgaW5uZXJIVE1MLCBpbm5lckhUTUwgb24gdXBkYXRlZCBub2RlcyBzdWZm
ZXJzXG5cdCAgICAgIC8vIGZyb20gd29yc2Ugd2hpdGVzcGFjZSBiZWhhdmlvci4gUmUtYWRkaW5n
IGEgbm9kZSBsaWtlIHRoaXMgdHJpZ2dlcnNcblx0ICAgICAgLy8gdGhlIGluaXRpYWwgYW5kIG1v
cmUgZmF2b3JhYmxlIHdoaXRlc3BhY2UgYmVoYXZpb3IuXG5cdCAgICAgIC8vIFRPRE86IFdoYXQg
dG8gZG8gb24gYSBkZXRhY2hlZCBub2RlP1xuXHQgICAgICBpZiAobm9kZS5wYXJlbnROb2RlKSB7
XG5cdCAgICAgICAgbm9kZS5wYXJlbnROb2RlLnJlcGxhY2VDaGlsZChub2RlLCBub2RlKTtcblx0
ICAgICAgfVxuXHRcblx0ICAgICAgLy8gV2UgYWxzbyBpbXBsZW1lbnQgYSB3b3JrYXJvdW5kIGZv
ciBub24tdmlzaWJsZSB0YWdzIGRpc2FwcGVhcmluZyBpbnRvXG5cdCAgICAgIC8vIHRoaW4gYWly
IG9uIElFOCwgdGhpcyBvbmx5IGhhcHBlbnMgaWYgdGhlcmUgaXMgbm8gdmlzaWJsZSB0ZXh0XG5c
dCAgICAgIC8vIGluLWZyb250IG9mIHRoZSBub24tdmlzaWJsZSB0YWdzLiBQaWdneWJhY2sgb24g
dGhlIHdoaXRlc3BhY2UgZml4XG5cdCAgICAgIC8vIGFuZCBzaW1wbHkgY2hlY2sgaWYgYW55IG5v
bi12aXNpYmxlIHRhZ3MgYXBwZWFyIGluIHRoZSBzb3VyY2UuXG5cdCAgICAgIGlmIChXSElURVNQ
QUNFX1RFU1QudGVzdChodG1sKSB8fCBodG1sWzBdID09PSAnPCcgJiYgTk9OVklTSUJMRV9URVNU
LnRlc3QoaHRtbCkpIHtcblx0ICAgICAgICAvLyBSZWNvdmVyIGxlYWRpbmcgd2hpdGVzcGFjZSBi
eSB0ZW1wb3JhcmlseSBwcmVwZW5kaW5nIGFueSBjaGFyYWN0ZXIuXG5cdCAgICAgICAgLy8gXFx1
RkVGRiBoYXMgdGhlIHBvdGVudGlhbCBhZHZhbnRhZ2Ugb2YgYmVpbmcgemVyby13aWR0aC9pbnZp
c2libGUuXG5cdCAgICAgICAgLy8gVWdsaWZ5SlMgZHJvcHMgVStGRUZGIGNoYXJzIHdoZW4gcGFy
c2luZywgc28gdXNlIFN0cmluZy5mcm9tQ2hhckNvZGVcblx0ICAgICAgICAvLyBpbiBob3BlcyB0
aGF0IHRoaXMgaXMgcHJlc2VydmVkIGV2ZW4gaWYgXCJcXHVGRUZGXCIgaXMgdHJhbnNmb3JtZWQg
dG9cblx0ICAgICAgICAvLyB0aGUgYWN0dWFsIFVuaWNvZGUgY2hhcmFjdGVyIChieSBCYWJlbCwg
Zm9yIGV4YW1wbGUpLlxuXHQgICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9taXNob28vVWds
aWZ5SlMyL2Jsb2IvdjIuNC4yMC9saWIvcGFyc2UuanMjTDIxNlxuXHQgICAgICAgIG5vZGUuaW5u
ZXJIVE1MID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGZlZmYpICsgaHRtbDtcblx0XG5cdCAgICAg
ICAgLy8gZGVsZXRlRGF0YSBsZWF2ZXMgYW4gZW1wdHkgYFRleHROb2RlYCB3aGljaCBvZmZzZXRz
IHRoZSBpbmRleCBvZiBhbGxcblx0ICAgICAgICAvLyBjaGlsZHJlbi4gRGVmaW5pdGVseSB3YW50
IHRvIGF2b2lkIHRoaXMuXG5cdCAgICAgICAgdmFyIHRleHROb2RlID0gbm9kZS5maXJzdENoaWxk
O1xuXHQgICAgICAgIGlmICh0ZXh0Tm9kZS5kYXRhLmxlbmd0aCA9PT0gMSkge1xuXHQgICAgICAg
ICAgbm9kZS5yZW1vdmVDaGlsZCh0ZXh0Tm9kZSk7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAg
ICAgICAgIHRleHROb2RlLmRlbGV0ZURhdGEoMCwgMSk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9
IGVsc2Uge1xuXHQgICAgICAgIG5vZGUuaW5uZXJIVE1MID0gaHRtbDtcblx0ICAgICAgfVxuXHQg
ICAgfTtcblx0ICB9XG5cdCAgdGVzdEVsZW1lbnQgPSBudWxsO1xuXHR9XG5cdFxuXHRtb2R1bGUu
ZXhwb3J0cyA9IHNldElubmVySFRNTDtcblxuLyoqKi8gfSxcbi8qIDMwICovXG4vKioqLyBmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0
cmljdCc7XG5cdFxuXHRleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXHRleHBvcnRzLmNvbXBv
c2UgPSBleHBvcnRzLmFwcGx5TWlkZGxld2FyZSA9IGV4cG9ydHMuYmluZEFjdGlvbkNyZWF0b3Jz
ID0gZXhwb3J0cy5jb21iaW5lUmVkdWNlcnMgPSBleHBvcnRzLmNyZWF0ZVN0b3JlID0gdW5kZWZp
bmVkO1xuXHRcblx0dmFyIF9jcmVhdGVTdG9yZSA9IF9fd2VicGFja19yZXF1aXJlX18oOTUpO1xu
XHRcblx0dmFyIF9jcmVhdGVTdG9yZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jcmVhdGVT
dG9yZSk7XG5cdFxuXHR2YXIgX2NvbWJpbmVSZWR1Y2VycyA9IF9fd2VicGFja19yZXF1aXJlX18o
MjI3KTtcblx0XG5cdHZhciBfY29tYmluZVJlZHVjZXJzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1
bHQoX2NvbWJpbmVSZWR1Y2Vycyk7XG5cdFxuXHR2YXIgX2JpbmRBY3Rpb25DcmVhdG9ycyA9IF9f
d2VicGFja19yZXF1aXJlX18oMjI2KTtcblx0XG5cdHZhciBfYmluZEFjdGlvbkNyZWF0b3JzMiA9
IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2JpbmRBY3Rpb25DcmVhdG9ycyk7XG5cdFxuXHR2YXIg
X2FwcGx5TWlkZGxld2FyZSA9IF9fd2VicGFja19yZXF1aXJlX18oMjI1KTtcblx0XG5cdHZhciBf
YXBwbHlNaWRkbGV3YXJlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2FwcGx5TWlkZGxld2Fy
ZSk7XG5cdFxuXHR2YXIgX2NvbXBvc2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDk0KTtcblx0XG5c
dHZhciBfY29tcG9zZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb21wb3NlKTtcblx0XG5c
dHZhciBfd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oOTYpO1xuXHRcblx0dmFyIF93YXJu
aW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3dhcm5pbmcpO1xuXHRcblx0ZnVuY3Rpb24g
X2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVs
ZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXHRcblx0Lypcblx0KiBUaGlzIGlzIGEg
ZHVtbXkgZnVuY3Rpb24gdG8gY2hlY2sgaWYgdGhlIGZ1bmN0aW9uIG5hbWUgaGFzIGJlZW4gYWx0
ZXJlZCBieSBtaW5pZmljYXRpb24uXG5cdCogSWYgdGhlIGZ1bmN0aW9uIGhhcyBiZWVuIG1pbmlm
aWVkIGFuZCBOT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nLCB3YXJuIHRoZSB1c2VyLlxuXHQqL1xu
XHRmdW5jdGlvbiBpc0NydXNoZWQoKSB7fVxuXHRcblx0aWYgKGZhbHNlKSB7XG5cdCAgKDAsIF93
YXJuaW5nMlsnZGVmYXVsdCddKSgnWW91IGFyZSBjdXJyZW50bHkgdXNpbmcgbWluaWZpZWQgY29k
ZSBvdXRzaWRlIG9mIE5PREVfRU5WID09PSBcXCdwcm9kdWN0aW9uXFwnLiAnICsgJ1RoaXMgbWVh
bnMgdGhhdCB5b3UgYXJlIHJ1bm5pbmcgYSBzbG93ZXIgZGV2ZWxvcG1lbnQgYnVpbGQgb2YgUmVk
dXguICcgKyAnWW91IGNhbiB1c2UgbG9vc2UtZW52aWZ5IChodHRwczovL2dpdGh1Yi5jb20vemVy
dG9zaC9sb29zZS1lbnZpZnkpIGZvciBicm93c2VyaWZ5ICcgKyAnb3IgRGVmaW5lUGx1Z2luIGZv
ciB3ZWJwYWNrIChodHRwOi8vc3RhY2tvdmVyZmxvdy5jb20vcXVlc3Rpb25zLzMwMDMwMDMxKSAn
ICsgJ3RvIGVuc3VyZSB5b3UgaGF2ZSB0aGUgY29ycmVjdCBjb2RlIGZvciB5b3VyIHByb2R1Y3Rp
b24gYnVpbGQuJyk7XG5cdH1cblx0XG5cdGV4cG9ydHMuY3JlYXRlU3RvcmUgPSBfY3JlYXRlU3Rv
cmUyWydkZWZhdWx0J107XG5cdGV4cG9ydHMuY29tYmluZVJlZHVjZXJzID0gX2NvbWJpbmVSZWR1
Y2VyczJbJ2RlZmF1bHQnXTtcblx0ZXhwb3J0cy5iaW5kQWN0aW9uQ3JlYXRvcnMgPSBfYmluZEFj
dGlvbkNyZWF0b3JzMlsnZGVmYXVsdCddO1xuXHRleHBvcnRzLmFwcGx5TWlkZGxld2FyZSA9IF9h
cHBseU1pZGRsZXdhcmUyWydkZWZhdWx0J107XG5cdGV4cG9ydHMuY29tcG9zZSA9IF9jb21wb3Nl
MlsnZGVmYXVsdCddO1xuXG4vKioqLyB9LFxuLyogMzEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBfX1dFQlBBQ0tfQU1E
X0RFRklORV9BUlJBWV9fLCBfX1dFQlBBQ0tfQU1EX0RFRklORV9SRVNVTFRfXzsvKiFcblx0ICBD
b3B5cmlnaHQgKGMpIDIwMTYgSmVkIFdhdHNvbi5cblx0ICBMaWNlbnNlZCB1bmRlciB0aGUgTUlU
IExpY2Vuc2UgKE1JVCksIHNlZVxuXHQgIGh0dHA6Ly9qZWR3YXRzb24uZ2l0aHViLmlvL2NsYXNz
bmFtZXNcblx0Ki9cblx0LyogZ2xvYmFsIGRlZmluZSAqL1xuXHRcblx0KGZ1bmN0aW9uICgpIHtc
blx0XHQndXNlIHN0cmljdCc7XG5cdFxuXHRcdHZhciBoYXNPd24gPSB7fS5oYXNPd25Qcm9wZXJ0
eTtcblx0XG5cdFx0ZnVuY3Rpb24gY2xhc3NOYW1lcyAoKSB7XG5cdFx0XHR2YXIgY2xhc3NlcyA9
IFtdO1xuXHRcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsr
KSB7XG5cdFx0XHRcdHZhciBhcmcgPSBhcmd1bWVudHNbaV07XG5cdFx0XHRcdGlmICghYXJnKSBj
b250aW51ZTtcblx0XG5cdFx0XHRcdHZhciBhcmdUeXBlID0gdHlwZW9mIGFyZztcblx0XG5cdFx0
XHRcdGlmIChhcmdUeXBlID09PSAnc3RyaW5nJyB8fCBhcmdUeXBlID09PSAnbnVtYmVyJykge1xu
XHRcdFx0XHRcdGNsYXNzZXMucHVzaChhcmcpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKEFycmF5Lmlz
QXJyYXkoYXJnKSkge1xuXHRcdFx0XHRcdGNsYXNzZXMucHVzaChjbGFzc05hbWVzLmFwcGx5KG51
bGwsIGFyZykpO1xuXHRcdFx0XHR9IGVsc2UgaWYgKGFyZ1R5cGUgPT09ICdvYmplY3QnKSB7XG5c
dFx0XHRcdFx0Zm9yICh2YXIga2V5IGluIGFyZykge1xuXHRcdFx0XHRcdFx0aWYgKGhhc093bi5j
YWxsKGFyZywga2V5KSAmJiBhcmdba2V5XSkge1xuXHRcdFx0XHRcdFx0XHRjbGFzc2VzLnB1c2go
a2V5KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0
XG5cdFx0XHRyZXR1cm4gY2xhc3Nlcy5qb2luKCcgJyk7XG5cdFx0fVxuXHRcblx0XHRpZiAodHlw
ZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcblx0XHRcdG1v
ZHVsZS5leHBvcnRzID0gY2xhc3NOYW1lcztcblx0XHR9IGVsc2UgaWYgKHRydWUpIHtcblx0XHRc
dC8vIHJlZ2lzdGVyIGFzICdjbGFzc25hbWVzJywgY29uc2lzdGVudCB3aXRoIG5wbSBwYWNrYWdl
IG5hbWVcblx0XHRcdCEoX19XRUJQQUNLX0FNRF9ERUZJTkVfQVJSQVlfXyA9IFtdLCBfX1dFQlBB
Q0tfQU1EX0RFRklORV9SRVNVTFRfXyA9IGZ1bmN0aW9uICgpIHtcblx0XHRcdFx0cmV0dXJuIGNs
YXNzTmFtZXM7XG5cdFx0XHR9LmFwcGx5KGV4cG9ydHMsIF9fV0VCUEFDS19BTURfREVGSU5FX0FS
UkFZX18pLCBfX1dFQlBBQ0tfQU1EX0RFRklORV9SRVNVTFRfXyAhPT0gdW5kZWZpbmVkICYmICht
b2R1bGUuZXhwb3J0cyA9IF9fV0VCUEFDS19BTURfREVGSU5FX1JFU1VMVF9fKSk7XG5cdFx0fSBl
bHNlIHtcblx0XHRcdHdpbmRvdy5jbGFzc05hbWVzID0gY2xhc3NOYW1lcztcblx0XHR9XG5cdH0o
KSk7XG5cblxuLyoqKi8gfSxcbi8qIDMyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5c
dCAqIEB0eXBlY2hlY2tzXG5cdCAqIFxuXHQgKi9cblx0XG5cdC8qZXNsaW50LWRpc2FibGUgbm8t
c2VsZi1jb21wYXJlICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgaGFzT3duUHJv
cGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXHRcblx0LyoqXG5cdCAq
IGlubGluZWQgT2JqZWN0LmlzIHBvbHlmaWxsIHRvIGF2b2lkIHJlcXVpcmluZyBjb25zdW1lcnMg
c2hpcCB0aGVpciBvd25cblx0ICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMv
ZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2lzXG5c
dCAqL1xuXHRmdW5jdGlvbiBpcyh4LCB5KSB7XG5cdCAgLy8gU2FtZVZhbHVlIGFsZ29yaXRobVxu
XHQgIGlmICh4ID09PSB5KSB7XG5cdCAgICAvLyBTdGVwcyAxLTUsIDctMTBcblx0ICAgIC8vIFN0
ZXBzIDYuYi02LmU6ICswICE9IC0wXG5cdCAgICAvLyBBZGRlZCB0aGUgbm9uemVybyB5IGNoZWNr
IHRvIG1ha2UgRmxvdyBoYXBweSwgYnV0IGl0IGlzIHJlZHVuZGFudFxuXHQgICAgcmV0dXJuIHgg
IT09IDAgfHwgeSAhPT0gMCB8fCAxIC8geCA9PT0gMSAvIHk7XG5cdCAgfSBlbHNlIHtcblx0ICAg
IC8vIFN0ZXAgNi5hOiBOYU4gPT0gTmFOXG5cdCAgICByZXR1cm4geCAhPT0geCAmJiB5ICE9PSB5
O1xuXHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIFBlcmZvcm1zIGVxdWFsaXR5IGJ5IGl0ZXJh
dGluZyB0aHJvdWdoIGtleXMgb24gYW4gb2JqZWN0IGFuZCByZXR1cm5pbmcgZmFsc2Vcblx0ICog
d2hlbiBhbnkga2V5IGhhcyB2YWx1ZXMgd2hpY2ggYXJlIG5vdCBzdHJpY3RseSBlcXVhbCBiZXR3
ZWVuIHRoZSBhcmd1bWVudHMuXG5cdCAqIFJldHVybnMgdHJ1ZSB3aGVuIHRoZSB2YWx1ZXMgb2Yg
YWxsIGtleXMgYXJlIHN0cmljdGx5IGVxdWFsLlxuXHQgKi9cblx0ZnVuY3Rpb24gc2hhbGxvd0Vx
dWFsKG9iakEsIG9iakIpIHtcblx0ICBpZiAoaXMob2JqQSwgb2JqQikpIHtcblx0ICAgIHJldHVy
biB0cnVlO1xuXHQgIH1cblx0XG5cdCAgaWYgKHR5cGVvZiBvYmpBICE9PSAnb2JqZWN0JyB8fCBv
YmpBID09PSBudWxsIHx8IHR5cGVvZiBvYmpCICE9PSAnb2JqZWN0JyB8fCBvYmpCID09PSBudWxs
KSB7XG5cdCAgICByZXR1cm4gZmFsc2U7XG5cdCAgfVxuXHRcblx0ICB2YXIga2V5c0EgPSBPYmpl
Y3Qua2V5cyhvYmpBKTtcblx0ICB2YXIga2V5c0IgPSBPYmplY3Qua2V5cyhvYmpCKTtcblx0XG5c
dCAgaWYgKGtleXNBLmxlbmd0aCAhPT0ga2V5c0IubGVuZ3RoKSB7XG5cdCAgICByZXR1cm4gZmFs
c2U7XG5cdCAgfVxuXHRcblx0ICAvLyBUZXN0IGZvciBBJ3Mga2V5cyBkaWZmZXJlbnQgZnJvbSBC
LlxuXHQgIGZvciAodmFyIGkgPSAwOyBpIDwga2V5c0EubGVuZ3RoOyBpKyspIHtcblx0ICAgIGlm
ICghaGFzT3duUHJvcGVydHkuY2FsbChvYmpCLCBrZXlzQVtpXSkgfHwgIWlzKG9iakFba2V5c0Fb
aV1dLCBvYmpCW2tleXNBW2ldXSkpIHtcblx0ICAgICAgcmV0dXJuIGZhbHNlO1xuXHQgICAgfVxu
XHQgIH1cblx0XG5cdCAgcmV0dXJuIHRydWU7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0g
c2hhbGxvd0VxdWFsO1xuXG4vKioqLyB9LFxuLyogMzMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBiYXNlR2V0VGFnID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxMTIpLFxuXHQgICAgZ2V0UHJvdG90eXBlID0gX193ZWJwYWNr
X3JlcXVpcmVfXygxMTQpLFxuXHQgICAgaXNPYmplY3RMaWtlID0gX193ZWJwYWNrX3JlcXVpcmVf
XygxMTkpO1xuXHRcblx0LyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVuY2VzLiAq
L1xuXHR2YXIgb2JqZWN0VGFnID0gJ1tvYmplY3QgT2JqZWN0XSc7XG5cdFxuXHQvKiogVXNlZCBm
b3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG5cdHZhciBmdW5jUHJvdG8gPSBGdW5j
dGlvbi5wcm90b3R5cGUsXG5cdCAgICBvYmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5c
dFxuXHQvKiogVXNlZCB0byByZXNvbHZlIHRoZSBkZWNvbXBpbGVkIHNvdXJjZSBvZiBmdW5jdGlv
bnMuICovXG5cdHZhciBmdW5jVG9TdHJpbmcgPSBmdW5jUHJvdG8udG9TdHJpbmc7XG5cdFxuXHQv
KiogVXNlZCB0byBjaGVjayBvYmplY3RzIGZvciBvd24gcHJvcGVydGllcy4gKi9cblx0dmFyIGhh
c093blByb3BlcnR5ID0gb2JqZWN0UHJvdG8uaGFzT3duUHJvcGVydHk7XG5cdFxuXHQvKiogVXNl
ZCB0byBpbmZlciB0aGUgYE9iamVjdGAgY29uc3RydWN0b3IuICovXG5cdHZhciBvYmplY3RDdG9y
U3RyaW5nID0gZnVuY1RvU3RyaW5nLmNhbGwoT2JqZWN0KTtcblx0XG5cdC8qKlxuXHQgKiBDaGVj
a3MgaWYgYHZhbHVlYCBpcyBhIHBsYWluIG9iamVjdCwgdGhhdCBpcywgYW4gb2JqZWN0IGNyZWF0
ZWQgYnkgdGhlXG5cdCAqIGBPYmplY3RgIGNvbnN0cnVjdG9yIG9yIG9uZSB3aXRoIGEgYFtbUHJv
dG90eXBlXV1gIG9mIGBudWxsYC5cblx0ICpcblx0ICogQHN0YXRpY1xuXHQgKiBAbWVtYmVyT2Yg
X1xuXHQgKiBAc2luY2UgMC44LjBcblx0ICogQGNhdGVnb3J5IExhbmdcblx0ICogQHBhcmFtIHsq
fSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG5cdCAqIEByZXR1cm5zIHtib29sZWFufSBSZXR1
cm5zIGB0cnVlYCBpZiBgdmFsdWVgIGlzIGEgcGxhaW4gb2JqZWN0LCBlbHNlIGBmYWxzZWAuXG5c
dCAqIEBleGFtcGxlXG5cdCAqXG5cdCAqIGZ1bmN0aW9uIEZvbygpIHtcblx0ICogICB0aGlzLmEg
PSAxO1xuXHQgKiB9XG5cdCAqXG5cdCAqIF8uaXNQbGFpbk9iamVjdChuZXcgRm9vKTtcblx0ICog
Ly8gPT4gZmFsc2Vcblx0ICpcblx0ICogXy5pc1BsYWluT2JqZWN0KFsxLCAyLCAzXSk7XG5cdCAq
IC8vID0+IGZhbHNlXG5cdCAqXG5cdCAqIF8uaXNQbGFpbk9iamVjdCh7ICd4JzogMCwgJ3knOiAw
IH0pO1xuXHQgKiAvLyA9PiB0cnVlXG5cdCAqXG5cdCAqIF8uaXNQbGFpbk9iamVjdChPYmplY3Qu
Y3JlYXRlKG51bGwpKTtcblx0ICogLy8gPT4gdHJ1ZVxuXHQgKi9cblx0ZnVuY3Rpb24gaXNQbGFp
bk9iamVjdCh2YWx1ZSkge1xuXHQgIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSB8fCBiYXNlR2V0
VGFnKHZhbHVlKSAhPSBvYmplY3RUYWcpIHtcblx0ICAgIHJldHVybiBmYWxzZTtcblx0ICB9XG5c
dCAgdmFyIHByb3RvID0gZ2V0UHJvdG90eXBlKHZhbHVlKTtcblx0ICBpZiAocHJvdG8gPT09IG51
bGwpIHtcblx0ICAgIHJldHVybiB0cnVlO1xuXHQgIH1cblx0ICB2YXIgQ3RvciA9IGhhc093blBy
b3BlcnR5LmNhbGwocHJvdG8sICdjb25zdHJ1Y3RvcicpICYmIHByb3RvLmNvbnN0cnVjdG9yO1xu
XHQgIHJldHVybiB0eXBlb2YgQ3RvciA9PSAnZnVuY3Rpb24nICYmIEN0b3IgaW5zdGFuY2VvZiBD
dG9yICYmXG5cdCAgICBmdW5jVG9TdHJpbmcuY2FsbChDdG9yKSA9PSBvYmplY3RDdG9yU3RyaW5n
O1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGlzUGxhaW5PYmplY3Q7XG5cblxuLyoqKi8g
fSxcbi8qIDM0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19y
ZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpc
blx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgRE9NTGF6eVRyZWUgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDE0KTtcblx0dmFyIERhbmdlciA9IF9fd2VicGFja19yZXF1aXJlX18o
MTI5KTtcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18o
NSk7XG5cdHZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7
XG5cdFxuXHR2YXIgY3JlYXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbiA9IF9fd2VicGFj
a19yZXF1aXJlX18oNDMpO1xuXHR2YXIgc2V0SW5uZXJIVE1MID0gX193ZWJwYWNrX3JlcXVpcmVf
XygyOSk7XG5cdHZhciBzZXRUZXh0Q29udGVudCA9IF9fd2VicGFja19yZXF1aXJlX18oNzcpO1xu
XHRcblx0ZnVuY3Rpb24gZ2V0Tm9kZUFmdGVyKHBhcmVudE5vZGUsIG5vZGUpIHtcblx0ICAvLyBT
cGVjaWFsIGNhc2UgZm9yIHRleHQgY29tcG9uZW50cywgd2hpY2ggcmV0dXJuIFtvcGVuLCBjbG9z
ZV0gY29tbWVudHNcblx0ICAvLyBmcm9tIGdldEhvc3ROb2RlLlxuXHQgIGlmIChBcnJheS5pc0Fy
cmF5KG5vZGUpKSB7XG5cdCAgICBub2RlID0gbm9kZVsxXTtcblx0ICB9XG5cdCAgcmV0dXJuIG5v
ZGUgPyBub2RlLm5leHRTaWJsaW5nIDogcGFyZW50Tm9kZS5maXJzdENoaWxkO1xuXHR9XG5cdFxu
XHQvKipcblx0ICogSW5zZXJ0cyBgY2hpbGROb2RlYCBhcyBhIGNoaWxkIG9mIGBwYXJlbnROb2Rl
YCBhdCB0aGUgYGluZGV4YC5cblx0ICpcblx0ICogQHBhcmFtIHtET01FbGVtZW50fSBwYXJlbnRO
b2RlIFBhcmVudCBub2RlIGluIHdoaWNoIHRvIGluc2VydC5cblx0ICogQHBhcmFtIHtET01FbGVt
ZW50fSBjaGlsZE5vZGUgQ2hpbGQgbm9kZSB0byBpbnNlcnQuXG5cdCAqIEBwYXJhbSB7bnVtYmVy
fSBpbmRleCBJbmRleCBhdCB3aGljaCB0byBpbnNlcnQgdGhlIGNoaWxkLlxuXHQgKiBAaW50ZXJu
YWxcblx0ICovXG5cdHZhciBpbnNlcnRDaGlsZEF0ID0gY3JlYXRlTWljcm9zb2Z0VW5zYWZlTG9j
YWxGdW5jdGlvbihmdW5jdGlvbiAocGFyZW50Tm9kZSwgY2hpbGROb2RlLCByZWZlcmVuY2VOb2Rl
KSB7XG5cdCAgLy8gV2UgcmVseSBleGNsdXNpdmVseSBvbiBgaW5zZXJ0QmVmb3JlKG5vZGUsIG51
bGwpYCBpbnN0ZWFkIG9mIGFsc28gdXNpbmdcblx0ICAvLyBgYXBwZW5kQ2hpbGQobm9kZSlgLiAo
VXNpbmcgYHVuZGVmaW5lZGAgaXMgbm90IGFsbG93ZWQgYnkgYWxsIGJyb3dzZXJzIHNvXG5cdCAg
Ly8gd2UgYXJlIGNhcmVmdWwgdG8gdXNlIGBudWxsYC4pXG5cdCAgcGFyZW50Tm9kZS5pbnNlcnRC
ZWZvcmUoY2hpbGROb2RlLCByZWZlcmVuY2VOb2RlKTtcblx0fSk7XG5cdFxuXHRmdW5jdGlvbiBp
bnNlcnRMYXp5VHJlZUNoaWxkQXQocGFyZW50Tm9kZSwgY2hpbGRUcmVlLCByZWZlcmVuY2VOb2Rl
KSB7XG5cdCAgRE9NTGF6eVRyZWUuaW5zZXJ0VHJlZUJlZm9yZShwYXJlbnROb2RlLCBjaGlsZFRy
ZWUsIHJlZmVyZW5jZU5vZGUpO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBtb3ZlQ2hpbGQocGFyZW50
Tm9kZSwgY2hpbGROb2RlLCByZWZlcmVuY2VOb2RlKSB7XG5cdCAgaWYgKEFycmF5LmlzQXJyYXko
Y2hpbGROb2RlKSkge1xuXHQgICAgbW92ZURlbGltaXRlZFRleHQocGFyZW50Tm9kZSwgY2hpbGRO
b2RlWzBdLCBjaGlsZE5vZGVbMV0sIHJlZmVyZW5jZU5vZGUpO1xuXHQgIH0gZWxzZSB7XG5cdCAg
ICBpbnNlcnRDaGlsZEF0KHBhcmVudE5vZGUsIGNoaWxkTm9kZSwgcmVmZXJlbmNlTm9kZSk7XG5c
dCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiByZW1vdmVDaGlsZChwYXJlbnROb2RlLCBjaGlsZE5v
ZGUpIHtcblx0ICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZE5vZGUpKSB7XG5cdCAgICB2YXIgY2xv
c2luZ0NvbW1lbnQgPSBjaGlsZE5vZGVbMV07XG5cdCAgICBjaGlsZE5vZGUgPSBjaGlsZE5vZGVb
MF07XG5cdCAgICByZW1vdmVEZWxpbWl0ZWRUZXh0KHBhcmVudE5vZGUsIGNoaWxkTm9kZSwgY2xv
c2luZ0NvbW1lbnQpO1xuXHQgICAgcGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjbG9zaW5nQ29tbWVu
dCk7XG5cdCAgfVxuXHQgIHBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoY2hpbGROb2RlKTtcblx0fVxu
XHRcblx0ZnVuY3Rpb24gbW92ZURlbGltaXRlZFRleHQocGFyZW50Tm9kZSwgb3BlbmluZ0NvbW1l
bnQsIGNsb3NpbmdDb21tZW50LCByZWZlcmVuY2VOb2RlKSB7XG5cdCAgdmFyIG5vZGUgPSBvcGVu
aW5nQ29tbWVudDtcblx0ICB3aGlsZSAodHJ1ZSkge1xuXHQgICAgdmFyIG5leHROb2RlID0gbm9k
ZS5uZXh0U2libGluZztcblx0ICAgIGluc2VydENoaWxkQXQocGFyZW50Tm9kZSwgbm9kZSwgcmVm
ZXJlbmNlTm9kZSk7XG5cdCAgICBpZiAobm9kZSA9PT0gY2xvc2luZ0NvbW1lbnQpIHtcblx0ICAg
ICAgYnJlYWs7XG5cdCAgICB9XG5cdCAgICBub2RlID0gbmV4dE5vZGU7XG5cdCAgfVxuXHR9XG5c
dFxuXHRmdW5jdGlvbiByZW1vdmVEZWxpbWl0ZWRUZXh0KHBhcmVudE5vZGUsIHN0YXJ0Tm9kZSwg
Y2xvc2luZ0NvbW1lbnQpIHtcblx0ICB3aGlsZSAodHJ1ZSkge1xuXHQgICAgdmFyIG5vZGUgPSBz
dGFydE5vZGUubmV4dFNpYmxpbmc7XG5cdCAgICBpZiAobm9kZSA9PT0gY2xvc2luZ0NvbW1lbnQp
IHtcblx0ICAgICAgLy8gVGhlIGNsb3NpbmcgY29tbWVudCBpcyByZW1vdmVkIGJ5IFJlYWN0TXVs
dGlDaGlsZC5cblx0ICAgICAgYnJlYWs7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBwYXJlbnRO
b2RlLnJlbW92ZUNoaWxkKG5vZGUpO1xuXHQgICAgfVxuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rp
b24gcmVwbGFjZURlbGltaXRlZFRleHQob3BlbmluZ0NvbW1lbnQsIGNsb3NpbmdDb21tZW50LCBz
dHJpbmdUZXh0KSB7XG5cdCAgdmFyIHBhcmVudE5vZGUgPSBvcGVuaW5nQ29tbWVudC5wYXJlbnRO
b2RlO1xuXHQgIHZhciBub2RlQWZ0ZXJDb21tZW50ID0gb3BlbmluZ0NvbW1lbnQubmV4dFNpYmxp
bmc7XG5cdCAgaWYgKG5vZGVBZnRlckNvbW1lbnQgPT09IGNsb3NpbmdDb21tZW50KSB7XG5cdCAg
ICAvLyBUaGVyZSBhcmUgbm8gdGV4dCBub2RlcyBiZXR3ZWVuIHRoZSBvcGVuaW5nIGFuZCBjbG9z
aW5nIGNvbW1lbnRzOyBpbnNlcnRcblx0ICAgIC8vIGEgbmV3IG9uZSBpZiBzdHJpbmdUZXh0IGlz
bid0IGVtcHR5LlxuXHQgICAgaWYgKHN0cmluZ1RleHQpIHtcblx0ICAgICAgaW5zZXJ0Q2hpbGRB
dChwYXJlbnROb2RlLCBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHJpbmdUZXh0KSwgbm9kZUFm
dGVyQ29tbWVudCk7XG5cdCAgICB9XG5cdCAgfSBlbHNlIHtcblx0ICAgIGlmIChzdHJpbmdUZXh0
KSB7XG5cdCAgICAgIC8vIFNldCB0aGUgdGV4dCBjb250ZW50IG9mIHRoZSBmaXJzdCBub2RlIGFm
dGVyIHRoZSBvcGVuaW5nIGNvbW1lbnQsIGFuZFxuXHQgICAgICAvLyByZW1vdmUgYWxsIGZvbGxv
d2luZyBub2RlcyB1cCB1bnRpbCB0aGUgY2xvc2luZyBjb21tZW50LlxuXHQgICAgICBzZXRUZXh0
Q29udGVudChub2RlQWZ0ZXJDb21tZW50LCBzdHJpbmdUZXh0KTtcblx0ICAgICAgcmVtb3ZlRGVs
aW1pdGVkVGV4dChwYXJlbnROb2RlLCBub2RlQWZ0ZXJDb21tZW50LCBjbG9zaW5nQ29tbWVudCk7
XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICByZW1vdmVEZWxpbWl0ZWRUZXh0KHBhcmVudE5vZGUs
IG9wZW5pbmdDb21tZW50LCBjbG9zaW5nQ29tbWVudCk7XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0
ICBpZiAoZmFsc2UpIHtcblx0ICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhv
c3RPcGVyYXRpb24oe1xuXHQgICAgICBpbnN0YW5jZUlEOiBSZWFjdERPTUNvbXBvbmVudFRyZWUu
Z2V0SW5zdGFuY2VGcm9tTm9kZShvcGVuaW5nQ29tbWVudCkuX2RlYnVnSUQsXG5cdCAgICAgIHR5
cGU6ICdyZXBsYWNlIHRleHQnLFxuXHQgICAgICBwYXlsb2FkOiBzdHJpbmdUZXh0XG5cdCAgICB9
KTtcblx0ICB9XG5cdH1cblx0XG5cdHZhciBkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1
cCA9IERhbmdlci5kYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cDtcblx0aWYgKGZhbHNl
KSB7XG5cdCAgZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAgPSBmdW5jdGlvbiAob2xk
Q2hpbGQsIG1hcmt1cCwgcHJldkluc3RhbmNlKSB7XG5cdCAgICBEYW5nZXIuZGFuZ2Vyb3VzbHlS
ZXBsYWNlTm9kZVdpdGhNYXJrdXAob2xkQ2hpbGQsIG1hcmt1cCk7XG5cdCAgICBpZiAocHJldklu
c3RhbmNlLl9kZWJ1Z0lEICE9PSAwKSB7XG5cdCAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRl
YnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuXHQgICAgICAgIGluc3RhbmNlSUQ6IHByZXZJbnN0
YW5jZS5fZGVidWdJRCxcblx0ICAgICAgICB0eXBlOiAncmVwbGFjZSB3aXRoJyxcblx0ICAgICAg
ICBwYXlsb2FkOiBtYXJrdXAudG9TdHJpbmcoKVxuXHQgICAgICB9KTtcblx0ICAgIH0gZWxzZSB7
XG5cdCAgICAgIHZhciBuZXh0SW5zdGFuY2UgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5z
dGFuY2VGcm9tTm9kZShtYXJrdXAubm9kZSk7XG5cdCAgICAgIGlmIChuZXh0SW5zdGFuY2UuX2Rl
YnVnSUQgIT09IDApIHtcblx0ICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wu
b25Ib3N0T3BlcmF0aW9uKHtcblx0ICAgICAgICAgIGluc3RhbmNlSUQ6IG5leHRJbnN0YW5jZS5f
ZGVidWdJRCxcblx0ICAgICAgICAgIHR5cGU6ICdtb3VudCcsXG5cdCAgICAgICAgICBwYXlsb2Fk
OiBtYXJrdXAudG9TdHJpbmcoKVxuXHQgICAgICAgIH0pO1xuXHQgICAgICB9XG5cdCAgICB9XG5c
dCAgfTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIE9wZXJhdGlvbnMgZm9yIHVwZGF0aW5nIHdpdGgg
RE9NIGNoaWxkcmVuLlxuXHQgKi9cblx0dmFyIERPTUNoaWxkcmVuT3BlcmF0aW9ucyA9IHtcblx0
ICBkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cDogZGFuZ2Vyb3VzbHlSZXBsYWNlTm9k
ZVdpdGhNYXJrdXAsXG5cdFxuXHQgIHJlcGxhY2VEZWxpbWl0ZWRUZXh0OiByZXBsYWNlRGVsaW1p
dGVkVGV4dCxcblx0XG5cdCAgLyoqXG5cdCAgICogVXBkYXRlcyBhIGNvbXBvbmVudCdzIGNoaWxk
cmVuIGJ5IHByb2Nlc3NpbmcgYSBzZXJpZXMgb2YgdXBkYXRlcy4gVGhlXG5cdCAgICogdXBkYXRl
IGNvbmZpZ3VyYXRpb25zIGFyZSBlYWNoIGV4cGVjdGVkIHRvIGhhdmUgYSBgcGFyZW50Tm9kZWAg
cHJvcGVydHkuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge2FycmF5PG9iamVjdD59IHVwZGF0ZXMg
TGlzdCBvZiB1cGRhdGUgY29uZmlndXJhdGlvbnMuXG5cdCAgICogQGludGVybmFsXG5cdCAgICov
XG5cdCAgcHJvY2Vzc1VwZGF0ZXM6IGZ1bmN0aW9uIChwYXJlbnROb2RlLCB1cGRhdGVzKSB7XG5c
dCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgdmFyIHBhcmVudE5vZGVEZWJ1Z0lEID0gUmVhY3RE
T01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUocGFyZW50Tm9kZSkuX2RlYnVnSUQ7
XG5cdCAgICB9XG5cdFxuXHQgICAgZm9yICh2YXIgayA9IDA7IGsgPCB1cGRhdGVzLmxlbmd0aDsg
aysrKSB7XG5cdCAgICAgIHZhciB1cGRhdGUgPSB1cGRhdGVzW2tdO1xuXHQgICAgICBzd2l0Y2gg
KHVwZGF0ZS50eXBlKSB7XG5cdCAgICAgICAgY2FzZSAnSU5TRVJUX01BUktVUCc6XG5cdCAgICAg
ICAgICBpbnNlcnRMYXp5VHJlZUNoaWxkQXQocGFyZW50Tm9kZSwgdXBkYXRlLmNvbnRlbnQsIGdl
dE5vZGVBZnRlcihwYXJlbnROb2RlLCB1cGRhdGUuYWZ0ZXJOb2RlKSk7XG5cdCAgICAgICAgICBp
ZiAoZmFsc2UpIHtcblx0ICAgICAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29s
Lm9uSG9zdE9wZXJhdGlvbih7XG5cdCAgICAgICAgICAgICAgaW5zdGFuY2VJRDogcGFyZW50Tm9k
ZURlYnVnSUQsXG5cdCAgICAgICAgICAgICAgdHlwZTogJ2luc2VydCBjaGlsZCcsXG5cdCAgICAg
ICAgICAgICAgcGF5bG9hZDoge1xuXHQgICAgICAgICAgICAgICAgdG9JbmRleDogdXBkYXRlLnRv
SW5kZXgsXG5cdCAgICAgICAgICAgICAgICBjb250ZW50OiB1cGRhdGUuY29udGVudC50b1N0cmlu
ZygpXG5cdCAgICAgICAgICAgICAgfVxuXHQgICAgICAgICAgICB9KTtcblx0ICAgICAgICAgIH1c
blx0ICAgICAgICAgIGJyZWFrO1xuXHQgICAgICAgIGNhc2UgJ01PVkVfRVhJU1RJTkcnOlxuXHQg
ICAgICAgICAgbW92ZUNoaWxkKHBhcmVudE5vZGUsIHVwZGF0ZS5mcm9tTm9kZSwgZ2V0Tm9kZUFm
dGVyKHBhcmVudE5vZGUsIHVwZGF0ZS5hZnRlck5vZGUpKTtcblx0ICAgICAgICAgIGlmIChmYWxz
ZSkge1xuXHQgICAgICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0
T3BlcmF0aW9uKHtcblx0ICAgICAgICAgICAgICBpbnN0YW5jZUlEOiBwYXJlbnROb2RlRGVidWdJ
RCxcblx0ICAgICAgICAgICAgICB0eXBlOiAnbW92ZSBjaGlsZCcsXG5cdCAgICAgICAgICAgICAg
cGF5bG9hZDogeyBmcm9tSW5kZXg6IHVwZGF0ZS5mcm9tSW5kZXgsIHRvSW5kZXg6IHVwZGF0ZS50
b0luZGV4IH1cblx0ICAgICAgICAgICAgfSk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgICBi
cmVhaztcblx0ICAgICAgICBjYXNlICdTRVRfTUFSS1VQJzpcblx0ICAgICAgICAgIHNldElubmVy
SFRNTChwYXJlbnROb2RlLCB1cGRhdGUuY29udGVudCk7XG5cdCAgICAgICAgICBpZiAoZmFsc2Up
IHtcblx0ICAgICAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9w
ZXJhdGlvbih7XG5cdCAgICAgICAgICAgICAgaW5zdGFuY2VJRDogcGFyZW50Tm9kZURlYnVnSUQs
XG5cdCAgICAgICAgICAgICAgdHlwZTogJ3JlcGxhY2UgY2hpbGRyZW4nLFxuXHQgICAgICAgICAg
ICAgIHBheWxvYWQ6IHVwZGF0ZS5jb250ZW50LnRvU3RyaW5nKClcblx0ICAgICAgICAgICAgfSk7
XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgICBjYXNlICdURVhU
X0NPTlRFTlQnOlxuXHQgICAgICAgICAgc2V0VGV4dENvbnRlbnQocGFyZW50Tm9kZSwgdXBkYXRl
LmNvbnRlbnQpO1xuXHQgICAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICAgIFJlYWN0
SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuXHQgICAgICAgICAg
ICAgIGluc3RhbmNlSUQ6IHBhcmVudE5vZGVEZWJ1Z0lELFxuXHQgICAgICAgICAgICAgIHR5cGU6
ICdyZXBsYWNlIHRleHQnLFxuXHQgICAgICAgICAgICAgIHBheWxvYWQ6IHVwZGF0ZS5jb250ZW50
LnRvU3RyaW5nKClcblx0ICAgICAgICAgICAgfSk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAg
ICBicmVhaztcblx0ICAgICAgICBjYXNlICdSRU1PVkVfTk9ERSc6XG5cdCAgICAgICAgICByZW1v
dmVDaGlsZChwYXJlbnROb2RlLCB1cGRhdGUuZnJvbU5vZGUpO1xuXHQgICAgICAgICAgaWYgKGZh
bHNlKSB7XG5cdCAgICAgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhv
c3RPcGVyYXRpb24oe1xuXHQgICAgICAgICAgICAgIGluc3RhbmNlSUQ6IHBhcmVudE5vZGVEZWJ1
Z0lELFxuXHQgICAgICAgICAgICAgIHR5cGU6ICdyZW1vdmUgY2hpbGQnLFxuXHQgICAgICAgICAg
ICAgIHBheWxvYWQ6IHsgZnJvbUluZGV4OiB1cGRhdGUuZnJvbUluZGV4IH1cblx0ICAgICAgICAg
ICAgfSk7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgICBicmVhaztcblx0ICAgICAgfVxuXHQg
ICAgfVxuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gRE9NQ2hpbGRyZW5PcGVy
YXRpb25zO1xuXG4vKioqLyB9LFxuLyogMzUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
blx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQg
Ki9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBET01OYW1lc3BhY2VzID0ge1xuXHQg
IGh0bWw6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJyxcblx0ICBtYXRobWw6ICdodHRw
Oi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MJyxcblx0ICBzdmc6ICdodHRwOi8vd3d3Lncz
Lm9yZy8yMDAwL3N2Zydcblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gRE9NTmFtZXNwYWNl
cztcblxuLyoqKi8gfSxcbi8qIDM2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMs
IF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cblx0ICpcblx0ICogXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFy
IF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblx0XG5cdHZhciBpbnZh
cmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHRcblx0LyoqXG5cdCAqIEluamVjdGFi
bGUgb3JkZXJpbmcgb2YgZXZlbnQgcGx1Z2lucy5cblx0ICovXG5cdHZhciBldmVudFBsdWdpbk9y
ZGVyID0gbnVsbDtcblx0XG5cdC8qKlxuXHQgKiBJbmplY3RhYmxlIG1hcHBpbmcgZnJvbSBuYW1l
cyB0byBldmVudCBwbHVnaW4gbW9kdWxlcy5cblx0ICovXG5cdHZhciBuYW1lc1RvUGx1Z2lucyA9
IHt9O1xuXHRcblx0LyoqXG5cdCAqIFJlY29tcHV0ZXMgdGhlIHBsdWdpbiBsaXN0IHVzaW5nIHRo
ZSBpbmplY3RlZCBwbHVnaW5zIGFuZCBwbHVnaW4gb3JkZXJpbmcuXG5cdCAqXG5cdCAqIEBwcml2
YXRlXG5cdCAqL1xuXHRmdW5jdGlvbiByZWNvbXB1dGVQbHVnaW5PcmRlcmluZygpIHtcblx0ICBp
ZiAoIWV2ZW50UGx1Z2luT3JkZXIpIHtcblx0ICAgIC8vIFdhaXQgdW50aWwgYW4gYGV2ZW50UGx1
Z2luT3JkZXJgIGlzIGluamVjdGVkLlxuXHQgICAgcmV0dXJuO1xuXHQgIH1cblx0ICBmb3IgKHZh
ciBwbHVnaW5OYW1lIGluIG5hbWVzVG9QbHVnaW5zKSB7XG5cdCAgICB2YXIgcGx1Z2luTW9kdWxl
ID0gbmFtZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV07XG5cdCAgICB2YXIgcGx1Z2luSW5kZXggPSBl
dmVudFBsdWdpbk9yZGVyLmluZGV4T2YocGx1Z2luTmFtZSk7XG5cdCAgICAhKHBsdWdpbkluZGV4
ID4gLTEpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnRXZlbnRQbHVnaW5SZWdpc3RyeTog
Q2Fubm90IGluamVjdCBldmVudCBwbHVnaW5zIHRoYXQgZG8gbm90IGV4aXN0IGluIHRoZSBwbHVn
aW4gb3JkZXJpbmcsIGAlc2AuJywgcGx1Z2luTmFtZSkgOiBfcHJvZEludmFyaWFudCgnOTYnLCBw
bHVnaW5OYW1lKSA6IHZvaWQgMDtcblx0ICAgIGlmIChFdmVudFBsdWdpblJlZ2lzdHJ5LnBsdWdp
bnNbcGx1Z2luSW5kZXhdKSB7XG5cdCAgICAgIGNvbnRpbnVlO1xuXHQgICAgfVxuXHQgICAgIXBs
dWdpbk1vZHVsZS5leHRyYWN0RXZlbnRzID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnRXZl
bnRQbHVnaW5SZWdpc3RyeTogRXZlbnQgcGx1Z2lucyBtdXN0IGltcGxlbWVudCBhbiBgZXh0cmFj
dEV2ZW50c2AgbWV0aG9kLCBidXQgYCVzYCBkb2VzIG5vdC4nLCBwbHVnaW5OYW1lKSA6IF9wcm9k
SW52YXJpYW50KCc5NycsIHBsdWdpbk5hbWUpIDogdm9pZCAwO1xuXHQgICAgRXZlbnRQbHVnaW5S
ZWdpc3RyeS5wbHVnaW5zW3BsdWdpbkluZGV4XSA9IHBsdWdpbk1vZHVsZTtcblx0ICAgIHZhciBw
dWJsaXNoZWRFdmVudHMgPSBwbHVnaW5Nb2R1bGUuZXZlbnRUeXBlcztcblx0ICAgIGZvciAodmFy
IGV2ZW50TmFtZSBpbiBwdWJsaXNoZWRFdmVudHMpIHtcblx0ICAgICAgIXB1Ymxpc2hFdmVudEZv
clBsdWdpbihwdWJsaXNoZWRFdmVudHNbZXZlbnROYW1lXSwgcGx1Z2luTW9kdWxlLCBldmVudE5h
bWUpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnRXZlbnRQbHVnaW5SZWdpc3RyeTogRmFp
bGVkIHRvIHB1Ymxpc2ggZXZlbnQgYCVzYCBmb3IgcGx1Z2luIGAlc2AuJywgZXZlbnROYW1lLCBw
bHVnaW5OYW1lKSA6IF9wcm9kSW52YXJpYW50KCc5OCcsIGV2ZW50TmFtZSwgcGx1Z2luTmFtZSkg
OiB2b2lkIDA7XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICogUHVibGlzaGVz
IGFuIGV2ZW50IHNvIHRoYXQgaXQgY2FuIGJlIGRpc3BhdGNoZWQgYnkgdGhlIHN1cHBsaWVkIHBs
dWdpbi5cblx0ICpcblx0ICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIERpc3BhdGNo
IGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBldmVudC5cblx0ICogQHBhcmFtIHtvYmplY3R9IFBsdWdp
bk1vZHVsZSBQbHVnaW4gcHVibGlzaGluZyB0aGUgZXZlbnQuXG5cdCAqIEByZXR1cm4ge2Jvb2xl
YW59IFRydWUgaWYgdGhlIGV2ZW50IHdhcyBzdWNjZXNzZnVsbHkgcHVibGlzaGVkLlxuXHQgKiBA
cHJpdmF0ZVxuXHQgKi9cblx0ZnVuY3Rpb24gcHVibGlzaEV2ZW50Rm9yUGx1Z2luKGRpc3BhdGNo
Q29uZmlnLCBwbHVnaW5Nb2R1bGUsIGV2ZW50TmFtZSkge1xuXHQgICEhRXZlbnRQbHVnaW5SZWdp
c3RyeS5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3MuaGFzT3duUHJvcGVydHkoZXZlbnROYW1lKSA/
ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luSHViOiBNb3JlIHRoYW4gb25l
IHBsdWdpbiBhdHRlbXB0ZWQgdG8gcHVibGlzaCB0aGUgc2FtZSBldmVudCBuYW1lLCBgJXNgLics
IGV2ZW50TmFtZSkgOiBfcHJvZEludmFyaWFudCgnOTknLCBldmVudE5hbWUpIDogdm9pZCAwO1xu
XHQgIEV2ZW50UGx1Z2luUmVnaXN0cnkuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzW2V2ZW50TmFt
ZV0gPSBkaXNwYXRjaENvbmZpZztcblx0XG5cdCAgdmFyIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVz
ID0gZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM7XG5cdCAgaWYgKHBoYXNl
ZFJlZ2lzdHJhdGlvbk5hbWVzKSB7XG5cdCAgICBmb3IgKHZhciBwaGFzZU5hbWUgaW4gcGhhc2Vk
UmVnaXN0cmF0aW9uTmFtZXMpIHtcblx0ICAgICAgaWYgKHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVz
Lmhhc093blByb3BlcnR5KHBoYXNlTmFtZSkpIHtcblx0ICAgICAgICB2YXIgcGhhc2VkUmVnaXN0
cmF0aW9uTmFtZSA9IHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW3BoYXNlTmFtZV07XG5cdCAgICAg
ICAgcHVibGlzaFJlZ2lzdHJhdGlvbk5hbWUocGhhc2VkUmVnaXN0cmF0aW9uTmFtZSwgcGx1Z2lu
TW9kdWxlLCBldmVudE5hbWUpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICByZXR1cm4gdHJ1
ZTtcblx0ICB9IGVsc2UgaWYgKGRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUpIHtcblx0
ICAgIHB1Ymxpc2hSZWdpc3RyYXRpb25OYW1lKGRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5h
bWUsIHBsdWdpbk1vZHVsZSwgZXZlbnROYW1lKTtcblx0ICAgIHJldHVybiB0cnVlO1xuXHQgIH1c
blx0ICByZXR1cm4gZmFsc2U7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBQdWJsaXNoZXMgYSByZWdp
c3RyYXRpb24gbmFtZSB0aGF0IGlzIHVzZWQgdG8gaWRlbnRpZnkgZGlzcGF0Y2hlZCBldmVudHMg
YW5kXG5cdCAqIGNhbiBiZSB1c2VkIHdpdGggYEV2ZW50UGx1Z2luSHViLnB1dExpc3RlbmVyYCB0
byByZWdpc3RlciBsaXN0ZW5lcnMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSByZWdpc3Ry
YXRpb25OYW1lIFJlZ2lzdHJhdGlvbiBuYW1lIHRvIGFkZC5cblx0ICogQHBhcmFtIHtvYmplY3R9
IFBsdWdpbk1vZHVsZSBQbHVnaW4gcHVibGlzaGluZyB0aGUgZXZlbnQuXG5cdCAqIEBwcml2YXRl
XG5cdCAqL1xuXHRmdW5jdGlvbiBwdWJsaXNoUmVnaXN0cmF0aW9uTmFtZShyZWdpc3RyYXRpb25O
YW1lLCBwbHVnaW5Nb2R1bGUsIGV2ZW50TmFtZSkge1xuXHQgICEhRXZlbnRQbHVnaW5SZWdpc3Ry
eS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdpc3RyYXRpb25OYW1lXSA/ICBmYWxzZSA/IGlu
dmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luSHViOiBNb3JlIHRoYW4gb25lIHBsdWdpbiBhdHRl
bXB0ZWQgdG8gcHVibGlzaCB0aGUgc2FtZSByZWdpc3RyYXRpb24gbmFtZSwgYCVzYC4nLCByZWdp
c3RyYXRpb25OYW1lKSA6IF9wcm9kSW52YXJpYW50KCcxMDAnLCByZWdpc3RyYXRpb25OYW1lKSA6
IHZvaWQgMDtcblx0ICBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVz
W3JlZ2lzdHJhdGlvbk5hbWVdID0gcGx1Z2luTW9kdWxlO1xuXHQgIEV2ZW50UGx1Z2luUmVnaXN0
cnkucmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llc1tyZWdpc3RyYXRpb25OYW1lXSA9IHBsdWdp
bk1vZHVsZS5ldmVudFR5cGVzW2V2ZW50TmFtZV0uZGVwZW5kZW5jaWVzO1xuXHRcblx0ICBpZiAo
ZmFsc2UpIHtcblx0ICAgIHZhciBsb3dlckNhc2VkTmFtZSA9IHJlZ2lzdHJhdGlvbk5hbWUudG9M
b3dlckNhc2UoKTtcblx0ICAgIEV2ZW50UGx1Z2luUmVnaXN0cnkucG9zc2libGVSZWdpc3RyYXRp
b25OYW1lc1tsb3dlckNhc2VkTmFtZV0gPSByZWdpc3RyYXRpb25OYW1lO1xuXHRcblx0ICAgIGlm
IChyZWdpc3RyYXRpb25OYW1lID09PSAnb25Eb3VibGVDbGljaycpIHtcblx0ICAgICAgRXZlbnRQ
bHVnaW5SZWdpc3RyeS5wb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzLm9uZGJsY2xpY2sgPSByZWdp
c3RyYXRpb25OYW1lO1xuXHQgICAgfVxuXHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIFJlZ2lz
dGVycyBwbHVnaW5zIHNvIHRoYXQgdGhleSBjYW4gZXh0cmFjdCBhbmQgZGlzcGF0Y2ggZXZlbnRz
LlxuXHQgKlxuXHQgKiBAc2VlIHtFdmVudFBsdWdpbkh1Yn1cblx0ICovXG5cdHZhciBFdmVudFBs
dWdpblJlZ2lzdHJ5ID0ge1xuXHQgIC8qKlxuXHQgICAqIE9yZGVyZWQgbGlzdCBvZiBpbmplY3Rl
ZCBwbHVnaW5zLlxuXHQgICAqL1xuXHQgIHBsdWdpbnM6IFtdLFxuXHRcblx0ICAvKipcblx0ICAg
KiBNYXBwaW5nIGZyb20gZXZlbnQgbmFtZSB0byBkaXNwYXRjaCBjb25maWdcblx0ICAgKi9cblx0
ICBldmVudE5hbWVEaXNwYXRjaENvbmZpZ3M6IHt9LFxuXHRcblx0ICAvKipcblx0ICAgKiBNYXBw
aW5nIGZyb20gcmVnaXN0cmF0aW9uIG5hbWUgdG8gcGx1Z2luIG1vZHVsZVxuXHQgICAqL1xuXHQg
IHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzOiB7fSxcblx0XG5cdCAgLyoqXG5cdCAgICogTWFwcGlu
ZyBmcm9tIHJlZ2lzdHJhdGlvbiBuYW1lIHRvIGV2ZW50IG5hbWVcblx0ICAgKi9cblx0ICByZWdp
c3RyYXRpb25OYW1lRGVwZW5kZW5jaWVzOiB7fSxcblx0XG5cdCAgLyoqXG5cdCAgICogTWFwcGlu
ZyBmcm9tIGxvd2VyY2FzZSByZWdpc3RyYXRpb24gbmFtZXMgdG8gdGhlIHByb3Blcmx5IGNhc2Vk
IHZlcnNpb24sXG5cdCAgICogdXNlZCB0byB3YXJuIGluIHRoZSBjYXNlIG9mIG1pc3NpbmcgZXZl
bnQgaGFuZGxlcnMuIEF2YWlsYWJsZVxuXHQgICAqIG9ubHkgaW4gX19ERVZfXy5cblx0ICAgKiBA
dHlwZSB7T2JqZWN0fVxuXHQgICAqL1xuXHQgIHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXM6ICBm
YWxzZSA/IHt9IDogbnVsbCxcblx0ICAvLyBUcnVzdCB0aGUgZGV2ZWxvcGVyIHRvIG9ubHkgdXNl
IHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXMgaW4gX19ERVZfX1xuXHRcblx0ICAvKipcblx0ICAg
KiBJbmplY3RzIGFuIG9yZGVyaW5nIG9mIHBsdWdpbnMgKGJ5IHBsdWdpbiBuYW1lKS4gVGhpcyBh
bGxvd3MgdGhlIG9yZGVyaW5nXG5cdCAgICogdG8gYmUgZGVjb3VwbGVkIGZyb20gaW5qZWN0aW9u
IG9mIHRoZSBhY3R1YWwgcGx1Z2lucyBzbyB0aGF0IG9yZGVyaW5nIGlzXG5cdCAgICogYWx3YXlz
IGRldGVybWluaXN0aWMgcmVnYXJkbGVzcyBvZiBwYWNrYWdpbmcsIG9uLXRoZS1mbHkgaW5qZWN0
aW9uLCBldGMuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge2FycmF5fSBJbmplY3RlZEV2ZW50UGx1
Z2luT3JkZXJcblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKiBAc2VlIHtFdmVudFBsdWdpbkh1Yi5p
bmplY3Rpb24uaW5qZWN0RXZlbnRQbHVnaW5PcmRlcn1cblx0ICAgKi9cblx0ICBpbmplY3RFdmVu
dFBsdWdpbk9yZGVyOiBmdW5jdGlvbiAoaW5qZWN0ZWRFdmVudFBsdWdpbk9yZGVyKSB7XG5cdCAg
ICAhIWV2ZW50UGx1Z2luT3JkZXIgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdFdmVudFBs
dWdpblJlZ2lzdHJ5OiBDYW5ub3QgaW5qZWN0IGV2ZW50IHBsdWdpbiBvcmRlcmluZyBtb3JlIHRo
YW4gb25jZS4gWW91IGFyZSBsaWtlbHkgdHJ5aW5nIHRvIGxvYWQgbW9yZSB0aGFuIG9uZSBjb3B5
IG9mIFJlYWN0LicpIDogX3Byb2RJbnZhcmlhbnQoJzEwMScpIDogdm9pZCAwO1xuXHQgICAgLy8g
Q2xvbmUgdGhlIG9yZGVyaW5nIHNvIGl0IGNhbm5vdCBiZSBkeW5hbWljYWxseSBtdXRhdGVkLlxu
XHQgICAgZXZlbnRQbHVnaW5PcmRlciA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGluamVj
dGVkRXZlbnRQbHVnaW5PcmRlcik7XG5cdCAgICByZWNvbXB1dGVQbHVnaW5PcmRlcmluZygpO1xu
XHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEluamVjdHMgcGx1Z2lucyB0byBiZSB1c2VkIGJ5
IGBFdmVudFBsdWdpbkh1YmAuIFRoZSBwbHVnaW4gbmFtZXMgbXVzdCBiZVxuXHQgICAqIGluIHRo
ZSBvcmRlcmluZyBpbmplY3RlZCBieSBgaW5qZWN0RXZlbnRQbHVnaW5PcmRlcmAuXG5cdCAgICpc
blx0ICAgKiBQbHVnaW5zIGNhbiBiZSBpbmplY3RlZCBhcyBwYXJ0IG9mIHBhZ2UgaW5pdGlhbGl6
YXRpb24gb3Igb24tdGhlLWZseS5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBpbmpl
Y3RlZE5hbWVzVG9QbHVnaW5zIE1hcCBmcm9tIG5hbWVzIHRvIHBsdWdpbiBtb2R1bGVzLlxuXHQg
ICAqIEBpbnRlcm5hbFxuXHQgICAqIEBzZWUge0V2ZW50UGx1Z2luSHViLmluamVjdGlvbi5pbmpl
Y3RFdmVudFBsdWdpbnNCeU5hbWV9XG5cdCAgICovXG5cdCAgaW5qZWN0RXZlbnRQbHVnaW5zQnlO
YW1lOiBmdW5jdGlvbiAoaW5qZWN0ZWROYW1lc1RvUGx1Z2lucykge1xuXHQgICAgdmFyIGlzT3Jk
ZXJpbmdEaXJ0eSA9IGZhbHNlO1xuXHQgICAgZm9yICh2YXIgcGx1Z2luTmFtZSBpbiBpbmplY3Rl
ZE5hbWVzVG9QbHVnaW5zKSB7XG5cdCAgICAgIGlmICghaW5qZWN0ZWROYW1lc1RvUGx1Z2lucy5o
YXNPd25Qcm9wZXJ0eShwbHVnaW5OYW1lKSkge1xuXHQgICAgICAgIGNvbnRpbnVlO1xuXHQgICAg
ICB9XG5cdCAgICAgIHZhciBwbHVnaW5Nb2R1bGUgPSBpbmplY3RlZE5hbWVzVG9QbHVnaW5zW3Bs
dWdpbk5hbWVdO1xuXHQgICAgICBpZiAoIW5hbWVzVG9QbHVnaW5zLmhhc093blByb3BlcnR5KHBs
dWdpbk5hbWUpIHx8IG5hbWVzVG9QbHVnaW5zW3BsdWdpbk5hbWVdICE9PSBwbHVnaW5Nb2R1bGUp
IHtcblx0ICAgICAgICAhIW5hbWVzVG9QbHVnaW5zW3BsdWdpbk5hbWVdID8gIGZhbHNlID8gaW52
YXJpYW50KGZhbHNlLCAnRXZlbnRQbHVnaW5SZWdpc3RyeTogQ2Fubm90IGluamVjdCB0d28gZGlm
ZmVyZW50IGV2ZW50IHBsdWdpbnMgdXNpbmcgdGhlIHNhbWUgbmFtZSwgYCVzYC4nLCBwbHVnaW5O
YW1lKSA6IF9wcm9kSW52YXJpYW50KCcxMDInLCBwbHVnaW5OYW1lKSA6IHZvaWQgMDtcblx0ICAg
ICAgICBuYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXSA9IHBsdWdpbk1vZHVsZTtcblx0ICAgICAg
ICBpc09yZGVyaW5nRGlydHkgPSB0cnVlO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICBpZiAo
aXNPcmRlcmluZ0RpcnR5KSB7XG5cdCAgICAgIHJlY29tcHV0ZVBsdWdpbk9yZGVyaW5nKCk7XG5c
dCAgICB9XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogTG9va3MgdXAgdGhlIHBsdWdpbiBm
b3IgdGhlIHN1cHBsaWVkIGV2ZW50LlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGV2
ZW50IEEgc3ludGhldGljIGV2ZW50LlxuXHQgICAqIEByZXR1cm4gez9vYmplY3R9IFRoZSBwbHVn
aW4gdGhhdCBjcmVhdGVkIHRoZSBzdXBwbGllZCBldmVudC5cblx0ICAgKiBAaW50ZXJuYWxcblx0
ICAgKi9cblx0ICBnZXRQbHVnaW5Nb2R1bGVGb3JFdmVudDogZnVuY3Rpb24gKGV2ZW50KSB7XG5c
dCAgICB2YXIgZGlzcGF0Y2hDb25maWcgPSBldmVudC5kaXNwYXRjaENvbmZpZztcblx0ICAgIGlm
IChkaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKSB7XG5cdCAgICAgIHJldHVybiBFdmVu
dFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW2Rpc3BhdGNoQ29uZmlnLnJl
Z2lzdHJhdGlvbk5hbWVdIHx8IG51bGw7XG5cdCAgICB9XG5cdCAgICBpZiAoZGlzcGF0Y2hDb25m
aWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMgIT09IHVuZGVmaW5lZCkge1xuXHQgICAgICAvLyBw
dWxsaW5nIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzIG91dCBvZiBkaXNwYXRjaENvbmZpZyBoZWxw
cyBGbG93IHNlZVxuXHQgICAgICAvLyB0aGF0IGl0IGlzIG5vdCB1bmRlZmluZWQuXG5cdCAgICAg
IHZhciBwaGFzZWRSZWdpc3RyYXRpb25OYW1lcyA9IGRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lz
dHJhdGlvbk5hbWVzO1xuXHRcblx0ICAgICAgZm9yICh2YXIgcGhhc2UgaW4gcGhhc2VkUmVnaXN0
cmF0aW9uTmFtZXMpIHtcblx0ICAgICAgICBpZiAoIXBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzLmhh
c093blByb3BlcnR5KHBoYXNlKSkge1xuXHQgICAgICAgICAgY29udGludWU7XG5cdCAgICAgICAg
fVxuXHQgICAgICAgIHZhciBwbHVnaW5Nb2R1bGUgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lz
dHJhdGlvbk5hbWVNb2R1bGVzW3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW3BoYXNlXV07XG5cdCAg
ICAgICAgaWYgKHBsdWdpbk1vZHVsZSkge1xuXHQgICAgICAgICAgcmV0dXJuIHBsdWdpbk1vZHVs
ZTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIHJldHVybiBudWxsO1xu
XHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEV4cG9zZWQgZm9yIHVuaXQgdGVzdGluZy5cblx0
ICAgKiBAcHJpdmF0ZVxuXHQgICAqL1xuXHQgIF9yZXNldEV2ZW50UGx1Z2luczogZnVuY3Rpb24g
KCkge1xuXHQgICAgZXZlbnRQbHVnaW5PcmRlciA9IG51bGw7XG5cdCAgICBmb3IgKHZhciBwbHVn
aW5OYW1lIGluIG5hbWVzVG9QbHVnaW5zKSB7XG5cdCAgICAgIGlmIChuYW1lc1RvUGx1Z2lucy5o
YXNPd25Qcm9wZXJ0eShwbHVnaW5OYW1lKSkge1xuXHQgICAgICAgIGRlbGV0ZSBuYW1lc1RvUGx1
Z2luc1twbHVnaW5OYW1lXTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgRXZlbnRQbHVnaW5S
ZWdpc3RyeS5wbHVnaW5zLmxlbmd0aCA9IDA7XG5cdFxuXHQgICAgdmFyIGV2ZW50TmFtZURpc3Bh
dGNoQ29uZmlncyA9IEV2ZW50UGx1Z2luUmVnaXN0cnkuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdz
O1xuXHQgICAgZm9yICh2YXIgZXZlbnROYW1lIGluIGV2ZW50TmFtZURpc3BhdGNoQ29uZmlncykg
e1xuXHQgICAgICBpZiAoZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzLmhhc093blByb3BlcnR5KGV2
ZW50TmFtZSkpIHtcblx0ICAgICAgICBkZWxldGUgZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzW2V2
ZW50TmFtZV07XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICB2YXIgcmVnaXN0cmF0aW9u
TmFtZU1vZHVsZXMgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVz
O1xuXHQgICAgZm9yICh2YXIgcmVnaXN0cmF0aW9uTmFtZSBpbiByZWdpc3RyYXRpb25OYW1lTW9k
dWxlcykge1xuXHQgICAgICBpZiAocmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMuaGFzT3duUHJvcGVy
dHkocmVnaXN0cmF0aW9uTmFtZSkpIHtcblx0ICAgICAgICBkZWxldGUgcmVnaXN0cmF0aW9uTmFt
ZU1vZHVsZXNbcmVnaXN0cmF0aW9uTmFtZV07XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAg
ICBpZiAoZmFsc2UpIHtcblx0ICAgICAgdmFyIHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXMgPSBF
dmVudFBsdWdpblJlZ2lzdHJ5LnBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXM7XG5cdCAgICAgIGZv
ciAodmFyIGxvd2VyQ2FzZWROYW1lIGluIHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXMpIHtcblx0
ICAgICAgICBpZiAocG9zc2libGVSZWdpc3RyYXRpb25OYW1lcy5oYXNPd25Qcm9wZXJ0eShsb3dl
ckNhc2VkTmFtZSkpIHtcblx0ICAgICAgICAgIGRlbGV0ZSBwb3NzaWJsZVJlZ2lzdHJhdGlvbk5h
bWVzW2xvd2VyQ2FzZWROYW1lXTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH1cblx0
ICB9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IEV2ZW50UGx1Z2luUmVnaXN0cnk7XG5c
bi8qKiovIH0sXG4vKiAzNyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dl
YnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52YXJp
YW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblx0XG5cdHZhciBSZWFjdEVycm9yVXRpbHMg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQxKTtcblx0XG5cdHZhciBpbnZhcmlhbnQgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDEpO1xuXHR2YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7
XG5cdFxuXHQvKipcblx0ICogSW5qZWN0ZWQgZGVwZW5kZW5jaWVzOlxuXHQgKi9cblx0XG5cdC8q
KlxuXHQgKiAtIGBDb21wb25lbnRUcmVlYDogW3JlcXVpcmVkXSBNb2R1bGUgdGhhdCBjYW4gY29u
dmVydCBiZXR3ZWVuIFJlYWN0IGluc3RhbmNlc1xuXHQgKiAgIGFuZCBhY3R1YWwgbm9kZSByZWZl
cmVuY2VzLlxuXHQgKi9cblx0dmFyIENvbXBvbmVudFRyZWU7XG5cdHZhciBUcmVlVHJhdmVyc2Fs
O1xuXHR2YXIgaW5qZWN0aW9uID0ge1xuXHQgIGluamVjdENvbXBvbmVudFRyZWU6IGZ1bmN0aW9u
IChJbmplY3RlZCkge1xuXHQgICAgQ29tcG9uZW50VHJlZSA9IEluamVjdGVkO1xuXHQgICAgaWYg
KGZhbHNlKSB7XG5cdCAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKEluamVjdGVkICYmIEluamVjdGVkLmdldE5vZGVGcm9tSW5zdGFuY2UgJiYgSW5q
ZWN0ZWQuZ2V0SW5zdGFuY2VGcm9tTm9kZSwgJ0V2ZW50UGx1Z2luVXRpbHMuaW5qZWN0aW9uLmlu
amVjdENvbXBvbmVudFRyZWUoLi4uKTogSW5qZWN0ZWQgJyArICdtb2R1bGUgaXMgbWlzc2luZyBn
ZXROb2RlRnJvbUluc3RhbmNlIG9yIGdldEluc3RhbmNlRnJvbU5vZGUuJykgOiB2b2lkIDA7XG5c
dCAgICB9XG5cdCAgfSxcblx0ICBpbmplY3RUcmVlVHJhdmVyc2FsOiBmdW5jdGlvbiAoSW5qZWN0
ZWQpIHtcblx0ICAgIFRyZWVUcmF2ZXJzYWwgPSBJbmplY3RlZDtcblx0ICAgIGlmIChmYWxzZSkg
e1xuXHQgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fybmlu
ZyhJbmplY3RlZCAmJiBJbmplY3RlZC5pc0FuY2VzdG9yICYmIEluamVjdGVkLmdldExvd2VzdENv
bW1vbkFuY2VzdG9yLCAnRXZlbnRQbHVnaW5VdGlscy5pbmplY3Rpb24uaW5qZWN0VHJlZVRyYXZl
cnNhbCguLi4pOiBJbmplY3RlZCAnICsgJ21vZHVsZSBpcyBtaXNzaW5nIGlzQW5jZXN0b3Igb3Ig
Z2V0TG93ZXN0Q29tbW9uQW5jZXN0b3IuJykgOiB2b2lkIDA7XG5cdCAgICB9XG5cdCAgfVxuXHR9
O1xuXHRcblx0ZnVuY3Rpb24gaXNFbmRpc2godG9wTGV2ZWxUeXBlKSB7XG5cdCAgcmV0dXJuIHRv
cExldmVsVHlwZSA9PT0gJ3RvcE1vdXNlVXAnIHx8IHRvcExldmVsVHlwZSA9PT0gJ3RvcFRvdWNo
RW5kJyB8fCB0b3BMZXZlbFR5cGUgPT09ICd0b3BUb3VjaENhbmNlbCc7XG5cdH1cblx0XG5cdGZ1
bmN0aW9uIGlzTW92ZWlzaCh0b3BMZXZlbFR5cGUpIHtcblx0ICByZXR1cm4gdG9wTGV2ZWxUeXBl
ID09PSAndG9wTW91c2VNb3ZlJyB8fCB0b3BMZXZlbFR5cGUgPT09ICd0b3BUb3VjaE1vdmUnO1xu
XHR9XG5cdGZ1bmN0aW9uIGlzU3RhcnRpc2godG9wTGV2ZWxUeXBlKSB7XG5cdCAgcmV0dXJuIHRv
cExldmVsVHlwZSA9PT0gJ3RvcE1vdXNlRG93bicgfHwgdG9wTGV2ZWxUeXBlID09PSAndG9wVG91
Y2hTdGFydCc7XG5cdH1cblx0XG5cdHZhciB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlcztcblx0aWYg
KGZhbHNlKSB7XG5cdCAgdmFsaWRhdGVFdmVudERpc3BhdGNoZXMgPSBmdW5jdGlvbiAoZXZlbnQp
IHtcblx0ICAgIHZhciBkaXNwYXRjaExpc3RlbmVycyA9IGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVy
cztcblx0ICAgIHZhciBkaXNwYXRjaEluc3RhbmNlcyA9IGV2ZW50Ll9kaXNwYXRjaEluc3RhbmNl
cztcblx0XG5cdCAgICB2YXIgbGlzdGVuZXJzSXNBcnIgPSBBcnJheS5pc0FycmF5KGRpc3BhdGNo
TGlzdGVuZXJzKTtcblx0ICAgIHZhciBsaXN0ZW5lcnNMZW4gPSBsaXN0ZW5lcnNJc0FyciA/IGRp
c3BhdGNoTGlzdGVuZXJzLmxlbmd0aCA6IGRpc3BhdGNoTGlzdGVuZXJzID8gMSA6IDA7XG5cdFxu
XHQgICAgdmFyIGluc3RhbmNlc0lzQXJyID0gQXJyYXkuaXNBcnJheShkaXNwYXRjaEluc3RhbmNl
cyk7XG5cdCAgICB2YXIgaW5zdGFuY2VzTGVuID0gaW5zdGFuY2VzSXNBcnIgPyBkaXNwYXRjaElu
c3RhbmNlcy5sZW5ndGggOiBkaXNwYXRjaEluc3RhbmNlcyA/IDEgOiAwO1xuXHRcblx0ICAgIHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGluc3RhbmNlc0lz
QXJyID09PSBsaXN0ZW5lcnNJc0FyciAmJiBpbnN0YW5jZXNMZW4gPT09IGxpc3RlbmVyc0xlbiwg
J0V2ZW50UGx1Z2luVXRpbHM6IEludmFsaWQgYGV2ZW50YC4nKSA6IHZvaWQgMDtcblx0ICB9O1xu
XHR9XG5cdFxuXHQvKipcblx0ICogRGlzcGF0Y2ggdGhlIGV2ZW50IHRvIHRoZSBsaXN0ZW5lci5c
blx0ICogQHBhcmFtIHtTeW50aGV0aWNFdmVudH0gZXZlbnQgU3ludGhldGljRXZlbnQgdG8gaGFu
ZGxlXG5cdCAqIEBwYXJhbSB7Ym9vbGVhbn0gc2ltdWxhdGVkIElmIHRoZSBldmVudCBpcyBzaW11
bGF0ZWQgKGNoYW5nZXMgZXhuIGJlaGF2aW9yKVxuXHQgKiBAcGFyYW0ge2Z1bmN0aW9ufSBsaXN0
ZW5lciBBcHBsaWNhdGlvbi1sZXZlbCBjYWxsYmFja1xuXHQgKiBAcGFyYW0geyp9IGluc3QgSW50
ZXJuYWwgY29tcG9uZW50IGluc3RhbmNlXG5cdCAqL1xuXHRmdW5jdGlvbiBleGVjdXRlRGlzcGF0
Y2goZXZlbnQsIHNpbXVsYXRlZCwgbGlzdGVuZXIsIGluc3QpIHtcblx0ICB2YXIgdHlwZSA9IGV2
ZW50LnR5cGUgfHwgJ3Vua25vd24tZXZlbnQnO1xuXHQgIGV2ZW50LmN1cnJlbnRUYXJnZXQgPSBF
dmVudFBsdWdpblV0aWxzLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7XG5cdCAgaWYgKHNpbXVs
YXRlZCkge1xuXHQgICAgUmVhY3RFcnJvclV0aWxzLmludm9rZUd1YXJkZWRDYWxsYmFja1dpdGhD
YXRjaCh0eXBlLCBsaXN0ZW5lciwgZXZlbnQpO1xuXHQgIH0gZWxzZSB7XG5cdCAgICBSZWFjdEVy
cm9yVXRpbHMuaW52b2tlR3VhcmRlZENhbGxiYWNrKHR5cGUsIGxpc3RlbmVyLCBldmVudCk7XG5c
dCAgfVxuXHQgIGV2ZW50LmN1cnJlbnRUYXJnZXQgPSBudWxsO1xuXHR9XG5cdFxuXHQvKipcblx0
ICogU3RhbmRhcmQvc2ltcGxlIGl0ZXJhdGlvbiB0aHJvdWdoIGFuIGV2ZW50J3MgY29sbGVjdGVk
IGRpc3BhdGNoZXMuXG5cdCAqL1xuXHRmdW5jdGlvbiBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIo
ZXZlbnQsIHNpbXVsYXRlZCkge1xuXHQgIHZhciBkaXNwYXRjaExpc3RlbmVycyA9IGV2ZW50Ll9k
aXNwYXRjaExpc3RlbmVycztcblx0ICB2YXIgZGlzcGF0Y2hJbnN0YW5jZXMgPSBldmVudC5fZGlz
cGF0Y2hJbnN0YW5jZXM7XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICB2YWxpZGF0ZUV2ZW50RGlz
cGF0Y2hlcyhldmVudCk7XG5cdCAgfVxuXHQgIGlmIChBcnJheS5pc0FycmF5KGRpc3BhdGNoTGlz
dGVuZXJzKSkge1xuXHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkaXNwYXRjaExpc3RlbmVycy5s
ZW5ndGg7IGkrKykge1xuXHQgICAgICBpZiAoZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSkg
e1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICB9XG5cdCAgICAgIC8vIExpc3RlbmVycyBhbmQg
SW5zdGFuY2VzIGFyZSB0d28gcGFyYWxsZWwgYXJyYXlzIHRoYXQgYXJlIGFsd2F5cyBpbiBzeW5j
LlxuXHQgICAgICBleGVjdXRlRGlzcGF0Y2goZXZlbnQsIHNpbXVsYXRlZCwgZGlzcGF0Y2hMaXN0
ZW5lcnNbaV0sIGRpc3BhdGNoSW5zdGFuY2VzW2ldKTtcblx0ICAgIH1cblx0ICB9IGVsc2UgaWYg
KGRpc3BhdGNoTGlzdGVuZXJzKSB7XG5cdCAgICBleGVjdXRlRGlzcGF0Y2goZXZlbnQsIHNpbXVs
YXRlZCwgZGlzcGF0Y2hMaXN0ZW5lcnMsIGRpc3BhdGNoSW5zdGFuY2VzKTtcblx0ICB9XG5cdCAg
ZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzID0gbnVsbDtcblx0ICBldmVudC5fZGlzcGF0Y2hJbnN0
YW5jZXMgPSBudWxsO1xuXHR9XG5cdFxuXHQvKipcblx0ICogU3RhbmRhcmQvc2ltcGxlIGl0ZXJh
dGlvbiB0aHJvdWdoIGFuIGV2ZW50J3MgY29sbGVjdGVkIGRpc3BhdGNoZXMsIGJ1dCBzdG9wc1xu
XHQgKiBhdCB0aGUgZmlyc3QgZGlzcGF0Y2ggZXhlY3V0aW9uIHJldHVybmluZyB0cnVlLCBhbmQg
cmV0dXJucyB0aGF0IGlkLlxuXHQgKlxuXHQgKiBAcmV0dXJuIHs/c3RyaW5nfSBpZCBvZiB0aGUg
Zmlyc3QgZGlzcGF0Y2ggZXhlY3V0aW9uIHdobydzIGxpc3RlbmVyIHJldHVybnNcblx0ICogdHJ1
ZSwgb3IgbnVsbCBpZiBubyBsaXN0ZW5lciByZXR1cm5lZCB0cnVlLlxuXHQgKi9cblx0ZnVuY3Rp
b24gZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZUltcGwoZXZlbnQpIHtcblx0ICB2
YXIgZGlzcGF0Y2hMaXN0ZW5lcnMgPSBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnM7XG5cdCAgdmFy
IGRpc3BhdGNoSW5zdGFuY2VzID0gZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2VzO1xuXHQgIGlmIChm
YWxzZSkge1xuXHQgICAgdmFsaWRhdGVFdmVudERpc3BhdGNoZXMoZXZlbnQpO1xuXHQgIH1cblx0
ICBpZiAoQXJyYXkuaXNBcnJheShkaXNwYXRjaExpc3RlbmVycykpIHtcblx0ICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgZGlzcGF0Y2hMaXN0ZW5lcnMubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgaWYg
KGV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpIHtcblx0ICAgICAgICBicmVhaztcblx0ICAg
ICAgfVxuXHQgICAgICAvLyBMaXN0ZW5lcnMgYW5kIEluc3RhbmNlcyBhcmUgdHdvIHBhcmFsbGVs
IGFycmF5cyB0aGF0IGFyZSBhbHdheXMgaW4gc3luYy5cblx0ICAgICAgaWYgKGRpc3BhdGNoTGlz
dGVuZXJzW2ldKGV2ZW50LCBkaXNwYXRjaEluc3RhbmNlc1tpXSkpIHtcblx0ICAgICAgICByZXR1
cm4gZGlzcGF0Y2hJbnN0YW5jZXNbaV07XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9IGVsc2Ug
aWYgKGRpc3BhdGNoTGlzdGVuZXJzKSB7XG5cdCAgICBpZiAoZGlzcGF0Y2hMaXN0ZW5lcnMoZXZl
bnQsIGRpc3BhdGNoSW5zdGFuY2VzKSkge1xuXHQgICAgICByZXR1cm4gZGlzcGF0Y2hJbnN0YW5j
ZXM7XG5cdCAgICB9XG5cdCAgfVxuXHQgIHJldHVybiBudWxsO1xuXHR9XG5cdFxuXHQvKipcblx0
ICogQHNlZSBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlSW1wbFxuXHQgKi9cblx0
ZnVuY3Rpb24gZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3RvcEF0VHJ1ZShldmVudCkge1xuXHQg
IHZhciByZXQgPSBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVlSW1wbChldmVudCk7
XG5cdCAgZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2VzID0gbnVsbDtcblx0ICBldmVudC5fZGlzcGF0
Y2hMaXN0ZW5lcnMgPSBudWxsO1xuXHQgIHJldHVybiByZXQ7XG5cdH1cblx0XG5cdC8qKlxuXHQg
KiBFeGVjdXRpb24gb2YgYSBcImRpcmVjdFwiIGRpc3BhdGNoIC0gdGhlcmUgbXVzdCBiZSBhdCBt
b3N0IG9uZSBkaXNwYXRjaFxuXHQgKiBhY2N1bXVsYXRlZCBvbiB0aGUgZXZlbnQgb3IgaXQgaXMg
Y29uc2lkZXJlZCBhbiBlcnJvci4gSXQgZG9lc24ndCByZWFsbHkgbWFrZVxuXHQgKiBzZW5zZSBm
b3IgYW4gZXZlbnQgd2l0aCBtdWx0aXBsZSBkaXNwYXRjaGVzIChidWJibGVkKSB0byBrZWVwIHRy
YWNrIG9mIHRoZVxuXHQgKiByZXR1cm4gdmFsdWVzIGF0IGVhY2ggZGlzcGF0Y2ggZXhlY3V0aW9u
LCBidXQgaXQgZG9lcyB0ZW5kIHRvIG1ha2Ugc2Vuc2Ugd2hlblxuXHQgKiBkZWFsaW5nIHdpdGgg
XCJkaXJlY3RcIiBkaXNwYXRjaGVzLlxuXHQgKlxuXHQgKiBAcmV0dXJuIHsqfSBUaGUgcmV0dXJu
IHZhbHVlIG9mIGV4ZWN1dGluZyB0aGUgc2luZ2xlIGRpc3BhdGNoLlxuXHQgKi9cblx0ZnVuY3Rp
b24gZXhlY3V0ZURpcmVjdERpc3BhdGNoKGV2ZW50KSB7XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAg
ICB2YWxpZGF0ZUV2ZW50RGlzcGF0Y2hlcyhldmVudCk7XG5cdCAgfVxuXHQgIHZhciBkaXNwYXRj
aExpc3RlbmVyID0gZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzO1xuXHQgIHZhciBkaXNwYXRjaElu
c3RhbmNlID0gZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2VzO1xuXHQgICEhQXJyYXkuaXNBcnJheShk
aXNwYXRjaExpc3RlbmVyKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ2V4ZWN1dGVEaXJl
Y3REaXNwYXRjaCguLi4pOiBJbnZhbGlkIGBldmVudGAuJykgOiBfcHJvZEludmFyaWFudCgnMTAz
JykgOiB2b2lkIDA7XG5cdCAgZXZlbnQuY3VycmVudFRhcmdldCA9IGRpc3BhdGNoTGlzdGVuZXIg
PyBFdmVudFBsdWdpblV0aWxzLmdldE5vZGVGcm9tSW5zdGFuY2UoZGlzcGF0Y2hJbnN0YW5jZSkg
OiBudWxsO1xuXHQgIHZhciByZXMgPSBkaXNwYXRjaExpc3RlbmVyID8gZGlzcGF0Y2hMaXN0ZW5l
cihldmVudCkgOiBudWxsO1xuXHQgIGV2ZW50LmN1cnJlbnRUYXJnZXQgPSBudWxsO1xuXHQgIGV2
ZW50Ll9kaXNwYXRjaExpc3RlbmVycyA9IG51bGw7XG5cdCAgZXZlbnQuX2Rpc3BhdGNoSW5zdGFu
Y2VzID0gbnVsbDtcblx0ICByZXR1cm4gcmVzO1xuXHR9XG5cdFxuXHQvKipcblx0ICogQHBhcmFt
IHtTeW50aGV0aWNFdmVudH0gZXZlbnRcblx0ICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZmYg
bnVtYmVyIG9mIGRpc3BhdGNoZXMgYWNjdW11bGF0ZWQgaXMgZ3JlYXRlciB0aGFuIDAuXG5cdCAq
L1xuXHRmdW5jdGlvbiBoYXNEaXNwYXRjaGVzKGV2ZW50KSB7XG5cdCAgcmV0dXJuICEhZXZlbnQu
X2Rpc3BhdGNoTGlzdGVuZXJzO1xuXHR9XG5cdFxuXHQvKipcblx0ICogR2VuZXJhbCB1dGlsaXRp
ZXMgdGhhdCBhcmUgdXNlZnVsIGluIGNyZWF0aW5nIGN1c3RvbSBFdmVudCBQbHVnaW5zLlxuXHQg
Ki9cblx0dmFyIEV2ZW50UGx1Z2luVXRpbHMgPSB7XG5cdCAgaXNFbmRpc2g6IGlzRW5kaXNoLFxu
XHQgIGlzTW92ZWlzaDogaXNNb3ZlaXNoLFxuXHQgIGlzU3RhcnRpc2g6IGlzU3RhcnRpc2gsXG5c
dFxuXHQgIGV4ZWN1dGVEaXJlY3REaXNwYXRjaDogZXhlY3V0ZURpcmVjdERpc3BhdGNoLFxuXHQg
IGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlcjogZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyLFxuXHQg
IGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlclN0b3BBdFRydWU6IGV4ZWN1dGVEaXNwYXRjaGVzSW5P
cmRlclN0b3BBdFRydWUsXG5cdCAgaGFzRGlzcGF0Y2hlczogaGFzRGlzcGF0Y2hlcyxcblx0XG5c
dCAgZ2V0SW5zdGFuY2VGcm9tTm9kZTogZnVuY3Rpb24gKG5vZGUpIHtcblx0ICAgIHJldHVybiBD
b21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUobm9kZSk7XG5cdCAgfSxcblx0ICBnZXRO
b2RlRnJvbUluc3RhbmNlOiBmdW5jdGlvbiAobm9kZSkge1xuXHQgICAgcmV0dXJuIENvbXBvbmVu
dFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShub2RlKTtcblx0ICB9LFxuXHQgIGlzQW5jZXN0b3I6
IGZ1bmN0aW9uIChhLCBiKSB7XG5cdCAgICByZXR1cm4gVHJlZVRyYXZlcnNhbC5pc0FuY2VzdG9y
KGEsIGIpO1xuXHQgIH0sXG5cdCAgZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3I6IGZ1bmN0aW9uIChh
LCBiKSB7XG5cdCAgICByZXR1cm4gVHJlZVRyYXZlcnNhbC5nZXRMb3dlc3RDb21tb25BbmNlc3Rv
cihhLCBiKTtcblx0ICB9LFxuXHQgIGdldFBhcmVudEluc3RhbmNlOiBmdW5jdGlvbiAoaW5zdCkg
e1xuXHQgICAgcmV0dXJuIFRyZWVUcmF2ZXJzYWwuZ2V0UGFyZW50SW5zdGFuY2UoaW5zdCk7XG5c
dCAgfSxcblx0ICB0cmF2ZXJzZVR3b1BoYXNlOiBmdW5jdGlvbiAodGFyZ2V0LCBmbiwgYXJnKSB7
XG5cdCAgICByZXR1cm4gVHJlZVRyYXZlcnNhbC50cmF2ZXJzZVR3b1BoYXNlKHRhcmdldCwgZm4s
IGFyZyk7XG5cdCAgfSxcblx0ICB0cmF2ZXJzZUVudGVyTGVhdmU6IGZ1bmN0aW9uIChmcm9tLCB0
bywgZm4sIGFyZ0Zyb20sIGFyZ1RvKSB7XG5cdCAgICByZXR1cm4gVHJlZVRyYXZlcnNhbC50cmF2
ZXJzZUVudGVyTGVhdmUoZnJvbSwgdG8sIGZuLCBhcmdGcm9tLCBhcmdUbyk7XG5cdCAgfSxcblx0
XG5cdCAgaW5qZWN0aW9uOiBpbmplY3Rpb25cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0g
RXZlbnRQbHVnaW5VdGlscztcblxuLyoqKi8gfSxcbi8qIDM4ICovXG4vKioqLyBmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
blx0ICpcblx0ICogXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0LyoqXG5cdCAq
IEVzY2FwZSBhbmQgd3JhcCBrZXkgc28gaXQgaXMgc2FmZSB0byB1c2UgYXMgYSByZWFjdGlkXG5c
dCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgdG8gYmUgZXNjYXBlZC5cblx0ICogQHJldHVy
biB7c3RyaW5nfSB0aGUgZXNjYXBlZCBrZXkuXG5cdCAqL1xuXHRcblx0ZnVuY3Rpb24gZXNjYXBl
KGtleSkge1xuXHQgIHZhciBlc2NhcGVSZWdleCA9IC9bPTpdL2c7XG5cdCAgdmFyIGVzY2FwZXJM
b29rdXAgPSB7XG5cdCAgICAnPSc6ICc9MCcsXG5cdCAgICAnOic6ICc9Midcblx0ICB9O1xuXHQg
IHZhciBlc2NhcGVkU3RyaW5nID0gKCcnICsga2V5KS5yZXBsYWNlKGVzY2FwZVJlZ2V4LCBmdW5j
dGlvbiAobWF0Y2gpIHtcblx0ICAgIHJldHVybiBlc2NhcGVyTG9va3VwW21hdGNoXTtcblx0ICB9
KTtcblx0XG5cdCAgcmV0dXJuICckJyArIGVzY2FwZWRTdHJpbmc7XG5cdH1cblx0XG5cdC8qKlxu
XHQgKiBVbmVzY2FwZSBhbmQgdW53cmFwIGtleSBmb3IgaHVtYW4tcmVhZGFibGUgZGlzcGxheVxu
XHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30ga2V5IHRvIHVuZXNjYXBlLlxuXHQgKiBAcmV0dXJu
IHtzdHJpbmd9IHRoZSB1bmVzY2FwZWQga2V5LlxuXHQgKi9cblx0ZnVuY3Rpb24gdW5lc2NhcGUo
a2V5KSB7XG5cdCAgdmFyIHVuZXNjYXBlUmVnZXggPSAvKD0wfD0yKS9nO1xuXHQgIHZhciB1bmVz
Y2FwZXJMb29rdXAgPSB7XG5cdCAgICAnPTAnOiAnPScsXG5cdCAgICAnPTInOiAnOidcblx0ICB9
O1xuXHQgIHZhciBrZXlTdWJzdHJpbmcgPSBrZXlbMF0gPT09ICcuJyAmJiBrZXlbMV0gPT09ICck
JyA/IGtleS5zdWJzdHJpbmcoMikgOiBrZXkuc3Vic3RyaW5nKDEpO1xuXHRcblx0ICByZXR1cm4g
KCcnICsga2V5U3Vic3RyaW5nKS5yZXBsYWNlKHVuZXNjYXBlUmVnZXgsIGZ1bmN0aW9uIChtYXRj
aCkge1xuXHQgICAgcmV0dXJuIHVuZXNjYXBlckxvb2t1cFttYXRjaF07XG5cdCAgfSk7XG5cdH1c
blx0XG5cdHZhciBLZXlFc2NhcGVVdGlscyA9IHtcblx0ICBlc2NhcGU6IGVzY2FwZSxcblx0ICB1
bmVzY2FwZTogdW5lc2NhcGVcblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gS2V5RXNjYXBl
VXRpbHM7XG5cbi8qKiovIH0sXG4vKiAzOSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAq
XG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9w
cm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblx0XG5cdHZhciBSZWFjdFBy
b3BUeXBlc1NlY3JldCA9IF9fd2VicGFja19yZXF1aXJlX18oMTU4KTtcblx0dmFyIHByb3BUeXBl
c0ZhY3RvcnkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU1KTtcblx0XG5cdHZhciBSZWFjdCA9IF9f
d2VicGFja19yZXF1aXJlX18oMTcpO1xuXHR2YXIgUHJvcFR5cGVzID0gcHJvcFR5cGVzRmFjdG9y
eShSZWFjdC5pc1ZhbGlkRWxlbWVudCk7XG5cdFxuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNr
X3JlcXVpcmVfXygxKTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xu
XHRcblx0dmFyIGhhc1JlYWRPbmx5VmFsdWUgPSB7XG5cdCAgYnV0dG9uOiB0cnVlLFxuXHQgIGNo
ZWNrYm94OiB0cnVlLFxuXHQgIGltYWdlOiB0cnVlLFxuXHQgIGhpZGRlbjogdHJ1ZSxcblx0ICBy
YWRpbzogdHJ1ZSxcblx0ICByZXNldDogdHJ1ZSxcblx0ICBzdWJtaXQ6IHRydWVcblx0fTtcblx0
XG5cdGZ1bmN0aW9uIF9hc3NlcnRTaW5nbGVMaW5rKGlucHV0UHJvcHMpIHtcblx0ICAhKGlucHV0
UHJvcHMuY2hlY2tlZExpbmsgPT0gbnVsbCB8fCBpbnB1dFByb3BzLnZhbHVlTGluayA9PSBudWxs
KSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0Nhbm5vdCBwcm92aWRlIGEgY2hlY2tlZExp
bmsgYW5kIGEgdmFsdWVMaW5rLiBJZiB5b3Ugd2FudCB0byB1c2UgY2hlY2tlZExpbmssIHlvdSBw
cm9iYWJseSBkb25cXCd0IHdhbnQgdG8gdXNlIHZhbHVlTGluayBhbmQgdmljZSB2ZXJzYS4nKSA6
IF9wcm9kSW52YXJpYW50KCc4NycpIDogdm9pZCAwO1xuXHR9XG5cdGZ1bmN0aW9uIF9hc3NlcnRW
YWx1ZUxpbmsoaW5wdXRQcm9wcykge1xuXHQgIF9hc3NlcnRTaW5nbGVMaW5rKGlucHV0UHJvcHMp
O1xuXHQgICEoaW5wdXRQcm9wcy52YWx1ZSA9PSBudWxsICYmIGlucHV0UHJvcHMub25DaGFuZ2Ug
PT0gbnVsbCkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW5ub3QgcHJvdmlkZSBhIHZh
bHVlTGluayBhbmQgYSB2YWx1ZSBvciBvbkNoYW5nZSBldmVudC4gSWYgeW91IHdhbnQgdG8gdXNl
IHZhbHVlIG9yIG9uQ2hhbmdlLCB5b3UgcHJvYmFibHkgZG9uXFwndCB3YW50IHRvIHVzZSB2YWx1
ZUxpbmsuJykgOiBfcHJvZEludmFyaWFudCgnODgnKSA6IHZvaWQgMDtcblx0fVxuXHRcblx0ZnVu
Y3Rpb24gX2Fzc2VydENoZWNrZWRMaW5rKGlucHV0UHJvcHMpIHtcblx0ICBfYXNzZXJ0U2luZ2xl
TGluayhpbnB1dFByb3BzKTtcblx0ICAhKGlucHV0UHJvcHMuY2hlY2tlZCA9PSBudWxsICYmIGlu
cHV0UHJvcHMub25DaGFuZ2UgPT0gbnVsbCkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdD
YW5ub3QgcHJvdmlkZSBhIGNoZWNrZWRMaW5rIGFuZCBhIGNoZWNrZWQgcHJvcGVydHkgb3Igb25D
aGFuZ2UgZXZlbnQuIElmIHlvdSB3YW50IHRvIHVzZSBjaGVja2VkIG9yIG9uQ2hhbmdlLCB5b3Ug
cHJvYmFibHkgZG9uXFwndCB3YW50IHRvIHVzZSBjaGVja2VkTGluaycpIDogX3Byb2RJbnZhcmlh
bnQoJzg5JykgOiB2b2lkIDA7XG5cdH1cblx0XG5cdHZhciBwcm9wVHlwZXMgPSB7XG5cdCAgdmFs
dWU6IGZ1bmN0aW9uIChwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUpIHtcblx0ICAgIGlm
ICghcHJvcHNbcHJvcE5hbWVdIHx8IGhhc1JlYWRPbmx5VmFsdWVbcHJvcHMudHlwZV0gfHwgcHJv
cHMub25DaGFuZ2UgfHwgcHJvcHMucmVhZE9ubHkgfHwgcHJvcHMuZGlzYWJsZWQpIHtcblx0ICAg
ICAgcmV0dXJuIG51bGw7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gbmV3IEVycm9yKCdZb3UgcHJv
dmlkZWQgYSBgdmFsdWVgIHByb3AgdG8gYSBmb3JtIGZpZWxkIHdpdGhvdXQgYW4gJyArICdgb25D
aGFuZ2VgIGhhbmRsZXIuIFRoaXMgd2lsbCByZW5kZXIgYSByZWFkLW9ubHkgZmllbGQuIElmICcg
KyAndGhlIGZpZWxkIHNob3VsZCBiZSBtdXRhYmxlIHVzZSBgZGVmYXVsdFZhbHVlYC4gT3RoZXJ3
aXNlLCAnICsgJ3NldCBlaXRoZXIgYG9uQ2hhbmdlYCBvciBgcmVhZE9ubHlgLicpO1xuXHQgIH0s
XG5cdCAgY2hlY2tlZDogZnVuY3Rpb24gKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSkg
e1xuXHQgICAgaWYgKCFwcm9wc1twcm9wTmFtZV0gfHwgcHJvcHMub25DaGFuZ2UgfHwgcHJvcHMu
cmVhZE9ubHkgfHwgcHJvcHMuZGlzYWJsZWQpIHtcblx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAg
ICB9XG5cdCAgICByZXR1cm4gbmV3IEVycm9yKCdZb3UgcHJvdmlkZWQgYSBgY2hlY2tlZGAgcHJv
cCB0byBhIGZvcm0gZmllbGQgd2l0aG91dCBhbiAnICsgJ2BvbkNoYW5nZWAgaGFuZGxlci4gVGhp
cyB3aWxsIHJlbmRlciBhIHJlYWQtb25seSBmaWVsZC4gSWYgJyArICd0aGUgZmllbGQgc2hvdWxk
IGJlIG11dGFibGUgdXNlIGBkZWZhdWx0Q2hlY2tlZGAuIE90aGVyd2lzZSwgJyArICdzZXQgZWl0
aGVyIGBvbkNoYW5nZWAgb3IgYHJlYWRPbmx5YC4nKTtcblx0ICB9LFxuXHQgIG9uQ2hhbmdlOiBQ
cm9wVHlwZXMuZnVuY1xuXHR9O1xuXHRcblx0dmFyIGxvZ2dlZFR5cGVGYWlsdXJlcyA9IHt9O1xu
XHRmdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0ob3duZXIpIHtcblx0ICBpZiAo
b3duZXIpIHtcblx0ICAgIHZhciBuYW1lID0gb3duZXIuZ2V0TmFtZSgpO1xuXHQgICAgaWYgKG5h
bWUpIHtcblx0ICAgICAgcmV0dXJuICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBu
YW1lICsgJ2AuJztcblx0ICAgIH1cblx0ICB9XG5cdCAgcmV0dXJuICcnO1xuXHR9XG5cdFxuXHQv
Kipcblx0ICogUHJvdmlkZSBhIGxpbmtlZCBgdmFsdWVgIGF0dHJpYnV0ZSBmb3IgY29udHJvbGxl
ZCBmb3Jtcy4gWW91IHNob3VsZCBub3QgdXNlXG5cdCAqIHRoaXMgb3V0c2lkZSBvZiB0aGUgUmVh
Y3RET00gY29udHJvbGxlZCBmb3JtIGNvbXBvbmVudHMuXG5cdCAqL1xuXHR2YXIgTGlua2VkVmFs
dWVVdGlscyA9IHtcblx0ICBjaGVja1Byb3BUeXBlczogZnVuY3Rpb24gKHRhZ05hbWUsIHByb3Bz
LCBvd25lcikge1xuXHQgICAgZm9yICh2YXIgcHJvcE5hbWUgaW4gcHJvcFR5cGVzKSB7XG5cdCAg
ICAgIGlmIChwcm9wVHlwZXMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG5cdCAgICAgICAg
dmFyIGVycm9yID0gcHJvcFR5cGVzW3Byb3BOYW1lXShwcm9wcywgcHJvcE5hbWUsIHRhZ05hbWUs
ICdwcm9wJywgbnVsbCwgUmVhY3RQcm9wVHlwZXNTZWNyZXQpO1xuXHQgICAgICB9XG5cdCAgICAg
IGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmICEoZXJyb3IubWVzc2FnZSBpbiBsb2dnZWRU
eXBlRmFpbHVyZXMpKSB7XG5cdCAgICAgICAgLy8gT25seSBtb25pdG9yIHRoaXMgZmFpbHVyZSBv
bmNlIGJlY2F1c2UgdGhlcmUgdGVuZHMgdG8gYmUgYSBsb3Qgb2YgdGhlXG5cdCAgICAgICAgLy8g
c2FtZSBlcnJvci5cblx0ICAgICAgICBsb2dnZWRUeXBlRmFpbHVyZXNbZXJyb3IubWVzc2FnZV0g
PSB0cnVlO1xuXHRcblx0ICAgICAgICB2YXIgYWRkZW5kdW0gPSBnZXREZWNsYXJhdGlvbkVycm9y
QWRkZW5kdW0ob3duZXIpO1xuXHQgICAgICAgICBmYWxzZSA/IHdhcm5pbmcoZmFsc2UsICdGYWls
ZWQgZm9ybSBwcm9wVHlwZTogJXMlcycsIGVycm9yLm1lc3NhZ2UsIGFkZGVuZHVtKSA6IHZvaWQg
MDtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEBwYXJh
bSB7b2JqZWN0fSBpbnB1dFByb3BzIFByb3BzIGZvciBmb3JtIGNvbXBvbmVudFxuXHQgICAqIEBy
ZXR1cm4geyp9IGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlucHV0IGVpdGhlciBmcm9tIHZhbHVlIHBy
b3Agb3IgbGluay5cblx0ICAgKi9cblx0ICBnZXRWYWx1ZTogZnVuY3Rpb24gKGlucHV0UHJvcHMp
IHtcblx0ICAgIGlmIChpbnB1dFByb3BzLnZhbHVlTGluaykge1xuXHQgICAgICBfYXNzZXJ0VmFs
dWVMaW5rKGlucHV0UHJvcHMpO1xuXHQgICAgICByZXR1cm4gaW5wdXRQcm9wcy52YWx1ZUxpbmsu
dmFsdWU7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gaW5wdXRQcm9wcy52YWx1ZTtcblx0ICB9LFxu
XHRcblx0ICAvKipcblx0ICAgKiBAcGFyYW0ge29iamVjdH0gaW5wdXRQcm9wcyBQcm9wcyBmb3Ig
Zm9ybSBjb21wb25lbnRcblx0ICAgKiBAcmV0dXJuIHsqfSBjdXJyZW50IGNoZWNrZWQgc3RhdHVz
IG9mIHRoZSBpbnB1dCBlaXRoZXIgZnJvbSBjaGVja2VkIHByb3Bcblx0ICAgKiAgICAgICAgICAg
ICBvciBsaW5rLlxuXHQgICAqL1xuXHQgIGdldENoZWNrZWQ6IGZ1bmN0aW9uIChpbnB1dFByb3Bz
KSB7XG5cdCAgICBpZiAoaW5wdXRQcm9wcy5jaGVja2VkTGluaykge1xuXHQgICAgICBfYXNzZXJ0
Q2hlY2tlZExpbmsoaW5wdXRQcm9wcyk7XG5cdCAgICAgIHJldHVybiBpbnB1dFByb3BzLmNoZWNr
ZWRMaW5rLnZhbHVlO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIGlucHV0UHJvcHMuY2hlY2tlZDtc
blx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBAcGFyYW0ge29iamVjdH0gaW5wdXRQcm9wcyBQ
cm9wcyBmb3IgZm9ybSBjb21wb25lbnRcblx0ICAgKiBAcGFyYW0ge1N5bnRoZXRpY0V2ZW50fSBl
dmVudCBjaGFuZ2UgZXZlbnQgdG8gaGFuZGxlXG5cdCAgICovXG5cdCAgZXhlY3V0ZU9uQ2hhbmdl
OiBmdW5jdGlvbiAoaW5wdXRQcm9wcywgZXZlbnQpIHtcblx0ICAgIGlmIChpbnB1dFByb3BzLnZh
bHVlTGluaykge1xuXHQgICAgICBfYXNzZXJ0VmFsdWVMaW5rKGlucHV0UHJvcHMpO1xuXHQgICAg
ICByZXR1cm4gaW5wdXRQcm9wcy52YWx1ZUxpbmsucmVxdWVzdENoYW5nZShldmVudC50YXJnZXQu
dmFsdWUpO1xuXHQgICAgfSBlbHNlIGlmIChpbnB1dFByb3BzLmNoZWNrZWRMaW5rKSB7XG5cdCAg
ICAgIF9hc3NlcnRDaGVja2VkTGluayhpbnB1dFByb3BzKTtcblx0ICAgICAgcmV0dXJuIGlucHV0
UHJvcHMuY2hlY2tlZExpbmsucmVxdWVzdENoYW5nZShldmVudC50YXJnZXQuY2hlY2tlZCk7XG5c
dCAgICB9IGVsc2UgaWYgKGlucHV0UHJvcHMub25DaGFuZ2UpIHtcblx0ICAgICAgcmV0dXJuIGlu
cHV0UHJvcHMub25DaGFuZ2UuY2FsbCh1bmRlZmluZWQsIGV2ZW50KTtcblx0ICAgIH1cblx0ICB9
XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IExpbmtlZFZhbHVlVXRpbHM7XG5cbi8qKiov
IH0sXG4vKiA0MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAq
XG5cdCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFy
aWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cdFxuXHR2YXIgaW52YXJpYW50ID0gX193
ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0XG5cdHZhciBpbmplY3RlZCA9IGZhbHNlO1xuXHRcblx0
dmFyIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQgPSB7XG5cdCAgLyoqXG5cdCAgICogT3B0aW9u
YWxseSBpbmplY3RhYmxlIGhvb2sgZm9yIHN3YXBwaW5nIG91dCBtb3VudCBpbWFnZXMgaW4gdGhl
IG1pZGRsZSBvZlxuXHQgICAqIHRoZSB0cmVlLlxuXHQgICAqL1xuXHQgIHJlcGxhY2VOb2RlV2l0
aE1hcmt1cDogbnVsbCxcblx0XG5cdCAgLyoqXG5cdCAgICogT3B0aW9uYWxseSBpbmplY3RhYmxl
IGhvb2sgZm9yIHByb2Nlc3NpbmcgYSBxdWV1ZSBvZiBjaGlsZCB1cGRhdGVzLiBXaWxsXG5cdCAg
ICogbGF0ZXIgbW92ZSBpbnRvIE11bHRpQ2hpbGRDb21wb25lbnRzLlxuXHQgICAqL1xuXHQgIHBy
b2Nlc3NDaGlsZHJlblVwZGF0ZXM6IG51bGwsXG5cdFxuXHQgIGluamVjdGlvbjoge1xuXHQgICAg
aW5qZWN0RW52aXJvbm1lbnQ6IGZ1bmN0aW9uIChlbnZpcm9ubWVudCkge1xuXHQgICAgICAhIWlu
amVjdGVkID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RDb21wb3NpdGVDb21wb25l
bnQ6IGluamVjdEVudmlyb25tZW50KCkgY2FuIG9ubHkgYmUgY2FsbGVkIG9uY2UuJykgOiBfcHJv
ZEludmFyaWFudCgnMTA0JykgOiB2b2lkIDA7XG5cdCAgICAgIFJlYWN0Q29tcG9uZW50RW52aXJv
bm1lbnQucmVwbGFjZU5vZGVXaXRoTWFya3VwID0gZW52aXJvbm1lbnQucmVwbGFjZU5vZGVXaXRo
TWFya3VwO1xuXHQgICAgICBSZWFjdENvbXBvbmVudEVudmlyb25tZW50LnByb2Nlc3NDaGlsZHJl
blVwZGF0ZXMgPSBlbnZpcm9ubWVudC5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzO1xuXHQgICAgICBp
bmplY3RlZCA9IHRydWU7XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9y
dHMgPSBSZWFjdENvbXBvbmVudEVudmlyb25tZW50O1xuXG4vKioqLyB9LFxuLyogNDEgKi9cbi8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5c
dC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0ICovXG5c
dFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgY2F1Z2h0RXJyb3IgPSBudWxsO1xuXHRcblx0
LyoqXG5cdCAqIENhbGwgYSBmdW5jdGlvbiB3aGlsZSBndWFyZGluZyBhZ2FpbnN0IGVycm9ycyB0
aGF0IGhhcHBlbnMgd2l0aGluIGl0LlxuXHQgKlxuXHQgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSBv
ZiB0aGUgZ3VhcmQgdG8gdXNlIGZvciBsb2dnaW5nIG9yIGRlYnVnZ2luZ1xuXHQgKiBAcGFyYW0g
e0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBpbnZva2Vcblx0ICogQHBhcmFtIHsqfSBh
IEZpcnN0IGFyZ3VtZW50XG5cdCAqIEBwYXJhbSB7Kn0gYiBTZWNvbmQgYXJndW1lbnRcblx0ICov
XG5cdGZ1bmN0aW9uIGludm9rZUd1YXJkZWRDYWxsYmFjayhuYW1lLCBmdW5jLCBhKSB7XG5cdCAg
dHJ5IHtcblx0ICAgIGZ1bmMoYSk7XG5cdCAgfSBjYXRjaCAoeCkge1xuXHQgICAgaWYgKGNhdWdo
dEVycm9yID09PSBudWxsKSB7XG5cdCAgICAgIGNhdWdodEVycm9yID0geDtcblx0ICAgIH1cblx0
ICB9XG5cdH1cblx0XG5cdHZhciBSZWFjdEVycm9yVXRpbHMgPSB7XG5cdCAgaW52b2tlR3VhcmRl
ZENhbGxiYWNrOiBpbnZva2VHdWFyZGVkQ2FsbGJhY2ssXG5cdFxuXHQgIC8qKlxuXHQgICAqIElu
dm9rZWQgYnkgUmVhY3RUZXN0VXRpbHMuU2ltdWxhdGUgc28gdGhhdCBhbnkgZXJyb3JzIHRocm93
biBieSB0aGUgZXZlbnRcblx0ICAgKiBoYW5kbGVyIGFyZSBzdXJlIHRvIGJlIHJldGhyb3duIGJ5
IHJldGhyb3dDYXVnaHRFcnJvci5cblx0ICAgKi9cblx0ICBpbnZva2VHdWFyZGVkQ2FsbGJhY2tX
aXRoQ2F0Y2g6IGludm9rZUd1YXJkZWRDYWxsYmFjayxcblx0XG5cdCAgLyoqXG5cdCAgICogRHVy
aW5nIGV4ZWN1dGlvbiBvZiBndWFyZGVkIGZ1bmN0aW9ucyB3ZSB3aWxsIGNhcHR1cmUgdGhlIGZp
cnN0IGVycm9yIHdoaWNoXG5cdCAgICogd2Ugd2lsbCByZXRocm93IHRvIGJlIGhhbmRsZWQgYnkg
dGhlIHRvcCBsZXZlbCBlcnJvciBoYW5kbGVyLlxuXHQgICAqL1xuXHQgIHJldGhyb3dDYXVnaHRF
cnJvcjogZnVuY3Rpb24gKCkge1xuXHQgICAgaWYgKGNhdWdodEVycm9yKSB7XG5cdCAgICAgIHZh
ciBlcnJvciA9IGNhdWdodEVycm9yO1xuXHQgICAgICBjYXVnaHRFcnJvciA9IG51bGw7XG5cdCAg
ICAgIHRocm93IGVycm9yO1xuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5cdGlmIChmYWxzZSkg
e1xuXHQgIC8qKlxuXHQgICAqIFRvIGhlbHAgZGV2ZWxvcG1lbnQgd2UgY2FuIGdldCBiZXR0ZXIg
ZGV2dG9vbHMgaW50ZWdyYXRpb24gYnkgc2ltdWxhdGluZyBhXG5cdCAgICogcmVhbCBicm93c2Vy
IGV2ZW50LlxuXHQgICAqL1xuXHQgIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAm
JiB0eXBlb2Ygd2luZG93LmRpc3BhdGNoRXZlbnQgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGRv
Y3VtZW50ICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRXZlbnQgPT09
ICdmdW5jdGlvbicpIHtcblx0ICAgIHZhciBmYWtlTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ3JlYWN0Jyk7XG5cdCAgICBSZWFjdEVycm9yVXRpbHMuaW52b2tlR3VhcmRlZENhbGxiYWNr
ID0gZnVuY3Rpb24gKG5hbWUsIGZ1bmMsIGEpIHtcblx0ICAgICAgdmFyIGJvdW5kRnVuYyA9IGZ1
bmMuYmluZChudWxsLCBhKTtcblx0ICAgICAgdmFyIGV2dFR5cGUgPSAncmVhY3QtJyArIG5hbWU7
XG5cdCAgICAgIGZha2VOb2RlLmFkZEV2ZW50TGlzdGVuZXIoZXZ0VHlwZSwgYm91bmRGdW5jLCBm
YWxzZSk7XG5cdCAgICAgIHZhciBldnQgPSBkb2N1bWVudC5jcmVhdGVFdmVudCgnRXZlbnQnKTtc
blx0ICAgICAgZXZ0LmluaXRFdmVudChldnRUeXBlLCBmYWxzZSwgZmFsc2UpO1xuXHQgICAgICBm
YWtlTm9kZS5kaXNwYXRjaEV2ZW50KGV2dCk7XG5cdCAgICAgIGZha2VOb2RlLnJlbW92ZUV2ZW50
TGlzdGVuZXIoZXZ0VHlwZSwgYm91bmRGdW5jLCBmYWxzZSk7XG5cdCAgICB9O1xuXHQgIH1cblx0
fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdEVycm9yVXRpbHM7XG5cbi8qKiovIH0sXG4v
KiA0MiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWly
ZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
XHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAq
L1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJw
YWNrX3JlcXVpcmVfXygzKTtcblx0XG5cdHZhciBSZWFjdEN1cnJlbnRPd25lciA9IF9fd2VicGFj
a19yZXF1aXJlX18oMTEpO1xuXHR2YXIgUmVhY3RJbnN0YW5jZU1hcCA9IF9fd2VicGFja19yZXF1
aXJlX18oMjEpO1xuXHR2YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDgpO1xuXHR2YXIgUmVhY3RVcGRhdGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5KTtcblx0
XG5cdHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHR2YXIgd2Fybmlu
ZyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cdFxuXHRmdW5jdGlvbiBlbnF1ZXVlVXBkYXRl
KGludGVybmFsSW5zdGFuY2UpIHtcblx0ICBSZWFjdFVwZGF0ZXMuZW5xdWV1ZVVwZGF0ZShpbnRl
cm5hbEluc3RhbmNlKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gZm9ybWF0VW5leHBlY3RlZEFyZ3Vt
ZW50KGFyZykge1xuXHQgIHZhciB0eXBlID0gdHlwZW9mIGFyZztcblx0ICBpZiAodHlwZSAhPT0g
J29iamVjdCcpIHtcblx0ICAgIHJldHVybiB0eXBlO1xuXHQgIH1cblx0ICB2YXIgZGlzcGxheU5h
bWUgPSBhcmcuY29uc3RydWN0b3IgJiYgYXJnLmNvbnN0cnVjdG9yLm5hbWUgfHwgdHlwZTtcblx0
ICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGFyZyk7XG5cdCAgaWYgKGtleXMubGVuZ3RoID4gMCAm
JiBrZXlzLmxlbmd0aCA8IDIwKSB7XG5cdCAgICByZXR1cm4gZGlzcGxheU5hbWUgKyAnIChrZXlz
OiAnICsga2V5cy5qb2luKCcsICcpICsgJyknO1xuXHQgIH1cblx0ICByZXR1cm4gZGlzcGxheU5h
bWU7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZvclVwZGF0
ZShwdWJsaWNJbnN0YW5jZSwgY2FsbGVyTmFtZSkge1xuXHQgIHZhciBpbnRlcm5hbEluc3RhbmNl
ID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQocHVibGljSW5zdGFuY2UpO1xuXHQgIGlmICghaW50ZXJu
YWxJbnN0YW5jZSkge1xuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHZhciBjdG9yID0gcHVi
bGljSW5zdGFuY2UuY29uc3RydWN0b3I7XG5cdCAgICAgIC8vIE9ubHkgd2FybiB3aGVuIHdlIGhh
dmUgYSBjYWxsZXJOYW1lLiBPdGhlcndpc2Ugd2Ugc2hvdWxkIGJlIHNpbGVudC5cblx0ICAgICAg
Ly8gV2UncmUgcHJvYmFibHkgY2FsbGluZyBmcm9tIGVucXVldWVDYWxsYmFjay4gV2UgZG9uJ3Qg
d2FudCB0byB3YXJuXG5cdCAgICAgIC8vIHRoZXJlIGJlY2F1c2Ugd2UgYWxyZWFkeSB3YXJuZWQg
Zm9yIHRoZSBjb3JyZXNwb25kaW5nIGxpZmVjeWNsZSBtZXRob2QuXG5cdCAgICAgIHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFjYWxsZXJOYW1lLCAnJXMo
Li4uKTogQ2FuIG9ubHkgdXBkYXRlIGEgbW91bnRlZCBvciBtb3VudGluZyBjb21wb25lbnQuICcg
KyAnVGhpcyB1c3VhbGx5IG1lYW5zIHlvdSBjYWxsZWQgJXMoKSBvbiBhbiB1bm1vdW50ZWQgY29t
cG9uZW50LiAnICsgJ1RoaXMgaXMgYSBuby1vcC4gUGxlYXNlIGNoZWNrIHRoZSBjb2RlIGZvciB0
aGUgJXMgY29tcG9uZW50LicsIGNhbGxlck5hbWUsIGNhbGxlck5hbWUsIGN0b3IgJiYgKGN0b3Iu
ZGlzcGxheU5hbWUgfHwgY3Rvci5uYW1lKSB8fCAnUmVhY3RDbGFzcycpIDogdm9pZCAwO1xuXHQg
ICAgfVxuXHQgICAgcmV0dXJuIG51bGw7XG5cdCAgfVxuXHRcblx0ICBpZiAoZmFsc2UpIHtcblx0
ICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKFJlYWN0
Q3VycmVudE93bmVyLmN1cnJlbnQgPT0gbnVsbCwgJyVzKC4uLik6IENhbm5vdCB1cGRhdGUgZHVy
aW5nIGFuIGV4aXN0aW5nIHN0YXRlIHRyYW5zaXRpb24gKHN1Y2ggYXMgJyArIFwid2l0aGluIGBy
ZW5kZXJgIG9yIGFub3RoZXIgY29tcG9uZW50J3MgY29uc3RydWN0b3IpLiBSZW5kZXIgbWV0aG9k
cyBcIiArICdzaG91bGQgYmUgYSBwdXJlIGZ1bmN0aW9uIG9mIHByb3BzIGFuZCBzdGF0ZTsgY29u
c3RydWN0b3IgJyArICdzaWRlLWVmZmVjdHMgYXJlIGFuIGFudGktcGF0dGVybiwgYnV0IGNhbiBi
ZSBtb3ZlZCB0byAnICsgJ2Bjb21wb25lbnRXaWxsTW91bnRgLicsIGNhbGxlck5hbWUpIDogdm9p
ZCAwO1xuXHQgIH1cblx0XG5cdCAgcmV0dXJuIGludGVybmFsSW5zdGFuY2U7XG5cdH1cblx0XG5c
dC8qKlxuXHQgKiBSZWFjdFVwZGF0ZVF1ZXVlIGFsbG93cyBmb3Igc3RhdGUgdXBkYXRlcyB0byBi
ZSBzY2hlZHVsZWQgaW50byBhIGxhdGVyXG5cdCAqIHJlY29uY2lsaWF0aW9uIHN0ZXAuXG5cdCAq
L1xuXHR2YXIgUmVhY3RVcGRhdGVRdWV1ZSA9IHtcblx0ICAvKipcblx0ICAgKiBDaGVja3Mgd2hl
dGhlciBvciBub3QgdGhpcyBjb21wb3NpdGUgY29tcG9uZW50IGlzIG1vdW50ZWQuXG5cdCAgICog
QHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2Ugd2Ugd2FudCB0
byB0ZXN0LlxuXHQgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgbW91bnRlZCwgZmFsc2Ug
b3RoZXJ3aXNlLlxuXHQgICAqIEBwcm90ZWN0ZWRcblx0ICAgKiBAZmluYWxcblx0ICAgKi9cblx0
ICBpc01vdW50ZWQ6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSkge1xuXHQgICAgaWYgKGZhbHNl
KSB7XG5cdCAgICAgIHZhciBvd25lciA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQ7XG5cdCAg
ICAgIGlmIChvd25lciAhPT0gbnVsbCkge1xuXHQgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKG93bmVyLl93YXJuZWRBYm91dFJlZnNJblJlbmRl
ciwgJyVzIGlzIGFjY2Vzc2luZyBpc01vdW50ZWQgaW5zaWRlIGl0cyByZW5kZXIoKSBmdW5jdGlv
bi4gJyArICdyZW5kZXIoKSBzaG91bGQgYmUgYSBwdXJlIGZ1bmN0aW9uIG9mIHByb3BzIGFuZCBz
dGF0ZS4gSXQgc2hvdWxkICcgKyAnbmV2ZXIgYWNjZXNzIHNvbWV0aGluZyB0aGF0IHJlcXVpcmVz
IHN0YWxlIGRhdGEgZnJvbSB0aGUgcHJldmlvdXMgJyArICdyZW5kZXIsIHN1Y2ggYXMgcmVmcy4g
TW92ZSB0aGlzIGxvZ2ljIHRvIGNvbXBvbmVudERpZE1vdW50IGFuZCAnICsgJ2NvbXBvbmVudERp
ZFVwZGF0ZSBpbnN0ZWFkLicsIG93bmVyLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnKSA6IHZv
aWQgMDtcblx0ICAgICAgICBvd25lci5fd2FybmVkQWJvdXRSZWZzSW5SZW5kZXIgPSB0cnVlO1xu
XHQgICAgICB9XG5cdCAgICB9XG5cdCAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IFJlYWN0SW5z
dGFuY2VNYXAuZ2V0KHB1YmxpY0luc3RhbmNlKTtcblx0ICAgIGlmIChpbnRlcm5hbEluc3RhbmNl
KSB7XG5cdCAgICAgIC8vIER1cmluZyBjb21wb25lbnRXaWxsTW91bnQgYW5kIHJlbmRlciB0aGlz
IHdpbGwgc3RpbGwgYmUgbnVsbCBidXQgYWZ0ZXJcblx0ICAgICAgLy8gdGhhdCB3aWxsIGFsd2F5
cyByZW5kZXIgdG8gc29tZXRoaW5nLiBBdCBsZWFzdCBmb3Igbm93LiBTbyB3ZSBjYW4gdXNlXG5c
dCAgICAgIC8vIHRoaXMgaGFjay5cblx0ICAgICAgcmV0dXJuICEhaW50ZXJuYWxJbnN0YW5jZS5f
cmVuZGVyZWRDb21wb25lbnQ7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICByZXR1cm4gZmFsc2U7
XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogRW5xdWV1ZSBhIGNhbGxiYWNr
IHRoYXQgd2lsbCBiZSBleGVjdXRlZCBhZnRlciBhbGwgdGhlIHBlbmRpbmcgdXBkYXRlc1xuXHQg
ICAqIGhhdmUgcHJvY2Vzc2VkLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBw
dWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdG8gdXNlIGFzIGB0aGlzYCBjb250ZXh0LlxuXHQg
ICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQgYWZ0ZXIgc3RhdGUgaXMgdXBk
YXRlZC5cblx0ICAgKiBAcGFyYW0ge3N0cmluZ30gY2FsbGVyTmFtZSBOYW1lIG9mIHRoZSBjYWxs
aW5nIGZ1bmN0aW9uIGluIHRoZSBwdWJsaWMgQVBJLlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAq
L1xuXHQgIGVucXVldWVDYWxsYmFjazogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBjYWxsYmFj
aywgY2FsbGVyTmFtZSkge1xuXHQgICAgUmVhY3RVcGRhdGVRdWV1ZS52YWxpZGF0ZUNhbGxiYWNr
KGNhbGxiYWNrLCBjYWxsZXJOYW1lKTtcblx0ICAgIHZhciBpbnRlcm5hbEluc3RhbmNlID0gZ2V0
SW50ZXJuYWxJbnN0YW5jZVJlYWR5Rm9yVXBkYXRlKHB1YmxpY0luc3RhbmNlKTtcblx0XG5cdCAg
ICAvLyBQcmV2aW91c2x5IHdlIHdvdWxkIHRocm93IGFuIGVycm9yIGlmIHdlIGRpZG4ndCBoYXZl
IGFuIGludGVybmFsXG5cdCAgICAvLyBpbnN0YW5jZS4gU2luY2Ugd2Ugd2FudCB0byBtYWtlIGl0
IGEgbm8tb3AgaW5zdGVhZCwgd2UgbWlycm9yIHRoZSBzYW1lXG5cdCAgICAvLyBiZWhhdmlvciB3
ZSBoYXZlIGluIG90aGVyIGVucXVldWUqIG1ldGhvZHMuXG5cdCAgICAvLyBXZSBhbHNvIG5lZWQg
dG8gaWdub3JlIGNhbGxiYWNrcyBpbiBjb21wb25lbnRXaWxsTW91bnQuIFNlZVxuXHQgICAgLy8g
ZW5xdWV1ZVVwZGF0ZXMuXG5cdCAgICBpZiAoIWludGVybmFsSW5zdGFuY2UpIHtcblx0ICAgICAg
cmV0dXJuIG51bGw7XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKGludGVybmFsSW5zdGFuY2UuX3Bl
bmRpbmdDYWxsYmFja3MpIHtcblx0ICAgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxi
YWNrcy5wdXNoKGNhbGxiYWNrKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIGludGVybmFsSW5z
dGFuY2UuX3BlbmRpbmdDYWxsYmFja3MgPSBbY2FsbGJhY2tdO1xuXHQgICAgfVxuXHQgICAgLy8g
VE9ETzogVGhlIGNhbGxiYWNrIGhlcmUgaXMgaWdub3JlZCB3aGVuIHNldFN0YXRlIGlzIGNhbGxl
ZCBmcm9tXG5cdCAgICAvLyBjb21wb25lbnRXaWxsTW91bnQuIEVpdGhlciBmaXggaXQgb3IgZGlz
YWxsb3cgZG9pbmcgc28gY29tcGxldGVseSBpblxuXHQgICAgLy8gZmF2b3Igb2YgZ2V0SW5pdGlh
bFN0YXRlLiBBbHRlcm5hdGl2ZWx5LCB3ZSBjYW4gZGlzYWxsb3dcblx0ICAgIC8vIGNvbXBvbmVu
dFdpbGxNb3VudCBkdXJpbmcgc2VydmVyLXNpZGUgcmVuZGVyaW5nLlxuXHQgICAgZW5xdWV1ZVVw
ZGF0ZShpbnRlcm5hbEluc3RhbmNlKTtcblx0ICB9LFxuXHRcblx0ICBlbnF1ZXVlQ2FsbGJhY2tJ
bnRlcm5hbDogZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UsIGNhbGxiYWNrKSB7XG5cdCAgICBp
ZiAoaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcykge1xuXHQgICAgICBpbnRlcm5h
bEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuXHQgICAgfSBlbHNl
IHtcblx0ICAgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcyA9IFtjYWxsYmFj
a107XG5cdCAgICB9XG5cdCAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpO1xuXHQg
IH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEZvcmNlcyBhbiB1cGRhdGUuIFRoaXMgc2hvdWxkIG9u
bHkgYmUgaW52b2tlZCB3aGVuIGl0IGlzIGtub3duIHdpdGhcblx0ICAgKiBjZXJ0YWludHkgdGhh
dCB3ZSBhcmUgKipub3QqKiBpbiBhIERPTSB0cmFuc2FjdGlvbi5cblx0ICAgKlxuXHQgICAqIFlv
dSBtYXkgd2FudCB0byBjYWxsIHRoaXMgd2hlbiB5b3Uga25vdyB0aGF0IHNvbWUgZGVlcGVyIGFz
cGVjdCBvZiB0aGVcblx0ICAgKiBjb21wb25lbnQncyBzdGF0ZSBoYXMgY2hhbmdlZCBidXQgYHNl
dFN0YXRlYCB3YXMgbm90IGNhbGxlZC5cblx0ICAgKlxuXHQgICAqIFRoaXMgd2lsbCBub3QgaW52
b2tlIGBzaG91bGRDb21wb25lbnRVcGRhdGVgLCBidXQgaXQgd2lsbCBpbnZva2Vcblx0ICAgKiBg
Y29tcG9uZW50V2lsbFVwZGF0ZWAgYW5kIGBjb21wb25lbnREaWRVcGRhdGVgLlxuXHQgICAqXG5c
dCAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhh
dCBzaG91bGQgcmVyZW5kZXIuXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAgZW5xdWV1
ZUZvcmNlVXBkYXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UpIHtcblx0ICAgIHZhciBpbnRl
cm5hbEluc3RhbmNlID0gZ2V0SW50ZXJuYWxJbnN0YW5jZVJlYWR5Rm9yVXBkYXRlKHB1YmxpY0lu
c3RhbmNlLCAnZm9yY2VVcGRhdGUnKTtcblx0XG5cdCAgICBpZiAoIWludGVybmFsSW5zdGFuY2Up
IHtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHRcblx0ICAgIGludGVybmFsSW5zdGFuY2Uu
X3BlbmRpbmdGb3JjZVVwZGF0ZSA9IHRydWU7XG5cdFxuXHQgICAgZW5xdWV1ZVVwZGF0ZShpbnRl
cm5hbEluc3RhbmNlKTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBSZXBsYWNlcyBhbGwg
b2YgdGhlIHN0YXRlLiBBbHdheXMgdXNlIHRoaXMgb3IgYHNldFN0YXRlYCB0byBtdXRhdGUgc3Rh
dGUuXG5cdCAgICogWW91IHNob3VsZCB0cmVhdCBgdGhpcy5zdGF0ZWAgYXMgaW1tdXRhYmxlLlxu
XHQgICAqXG5cdCAgICogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgYHRoaXMuc3RhdGVgIHdp
bGwgYmUgaW1tZWRpYXRlbHkgdXBkYXRlZCwgc29cblx0ICAgKiBhY2Nlc3NpbmcgYHRoaXMuc3Rh
dGVgIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgbWF5IHJldHVybiB0aGUgb2xkIHZhbHVlLlxu
XHQgICAqXG5cdCAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5z
dGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGNvbXBs
ZXRlU3RhdGUgTmV4dCBzdGF0ZS5cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICBlbnF1
ZXVlUmVwbGFjZVN0YXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIGNvbXBsZXRlU3RhdGUs
IGNhbGxiYWNrKSB7XG5cdCAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IGdldEludGVybmFsSW5z
dGFuY2VSZWFkeUZvclVwZGF0ZShwdWJsaWNJbnN0YW5jZSwgJ3JlcGxhY2VTdGF0ZScpO1xuXHRc
blx0ICAgIGlmICghaW50ZXJuYWxJbnN0YW5jZSkge1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9
XG5cdFxuXHQgICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ1N0YXRlUXVldWUgPSBbY29tcGxl
dGVTdGF0ZV07XG5cdCAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nUmVwbGFjZVN0YXRlID0g
dHJ1ZTtcblx0XG5cdCAgICAvLyBGdXR1cmUtcHJvb2YgMTUuNVxuXHQgICAgaWYgKGNhbGxiYWNr
ICE9PSB1bmRlZmluZWQgJiYgY2FsbGJhY2sgIT09IG51bGwpIHtcblx0ICAgICAgUmVhY3RVcGRh
dGVRdWV1ZS52YWxpZGF0ZUNhbGxiYWNrKGNhbGxiYWNrLCAncmVwbGFjZVN0YXRlJyk7XG5cdCAg
ICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJhY2tzKSB7XG5cdCAgICAgICAg
aW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTtcblx0ICAg
ICAgfSBlbHNlIHtcblx0ICAgICAgICBpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5nQ2FsbGJhY2tz
ID0gW2NhbGxiYWNrXTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIGVucXVldWVVcGRh
dGUoaW50ZXJuYWxJbnN0YW5jZSk7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogU2V0cyBh
IHN1YnNldCBvZiB0aGUgc3RhdGUuIFRoaXMgb25seSBleGlzdHMgYmVjYXVzZSBfcGVuZGluZ1N0
YXRlIGlzXG5cdCAgICogaW50ZXJuYWwuIFRoaXMgcHJvdmlkZXMgYSBtZXJnaW5nIHN0cmF0ZWd5
IHRoYXQgaXMgbm90IGF2YWlsYWJsZSB0byBkZWVwXG5cdCAgICogcHJvcGVydGllcyB3aGljaCBp
cyBjb25mdXNpbmcuIFRPRE86IEV4cG9zZSBwZW5kaW5nU3RhdGUgb3IgZG9uJ3QgdXNlIGl0XG5c
dCAgICogZHVyaW5nIHRoZSBtZXJnZS5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RDbGFz
c30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuXHQg
ICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWFsU3RhdGUgTmV4dCBwYXJ0aWFsIHN0YXRlIHRvIGJl
IG1lcmdlZCB3aXRoIHN0YXRlLlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIGVucXVl
dWVTZXRTdGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBwYXJ0aWFsU3RhdGUpIHtcblx0
ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wu
b25TZXRTdGF0ZSgpO1xuXHQgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gd2FybmluZyhwYXJ0aWFsU3RhdGUgIT0gbnVsbCwgJ3NldFN0YXRlKC4uLik6IFlvdSBw
YXNzZWQgYW4gdW5kZWZpbmVkIG9yIG51bGwgc3RhdGUgb2JqZWN0OyAnICsgJ2luc3RlYWQsIHVz
ZSBmb3JjZVVwZGF0ZSgpLicpIDogdm9pZCAwO1xuXHQgICAgfVxuXHRcblx0ICAgIHZhciBpbnRl
cm5hbEluc3RhbmNlID0gZ2V0SW50ZXJuYWxJbnN0YW5jZVJlYWR5Rm9yVXBkYXRlKHB1YmxpY0lu
c3RhbmNlLCAnc2V0U3RhdGUnKTtcblx0XG5cdCAgICBpZiAoIWludGVybmFsSW5zdGFuY2UpIHtc
blx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHRcblx0ICAgIHZhciBxdWV1ZSA9IGludGVybmFs
SW5zdGFuY2UuX3BlbmRpbmdTdGF0ZVF1ZXVlIHx8IChpbnRlcm5hbEluc3RhbmNlLl9wZW5kaW5n
U3RhdGVRdWV1ZSA9IFtdKTtcblx0ICAgIHF1ZXVlLnB1c2gocGFydGlhbFN0YXRlKTtcblx0XG5c
dCAgICBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpO1xuXHQgIH0sXG5cdFxuXHQgIGVu
cXVldWVFbGVtZW50SW50ZXJuYWw6IGZ1bmN0aW9uIChpbnRlcm5hbEluc3RhbmNlLCBuZXh0RWxl
bWVudCwgbmV4dENvbnRleHQpIHtcblx0ICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdFbGVt
ZW50ID0gbmV4dEVsZW1lbnQ7XG5cdCAgICAvLyBUT0RPOiBpbnRyb2R1Y2UgX3BlbmRpbmdDb250
ZXh0IGluc3RlYWQgb2Ygc2V0dGluZyBpdCBkaXJlY3RseS5cblx0ICAgIGludGVybmFsSW5zdGFu
Y2UuX2NvbnRleHQgPSBuZXh0Q29udGV4dDtcblx0ICAgIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJ
bnN0YW5jZSk7XG5cdCAgfSxcblx0XG5cdCAgdmFsaWRhdGVDYWxsYmFjazogZnVuY3Rpb24gKGNh
bGxiYWNrLCBjYWxsZXJOYW1lKSB7XG5cdCAgICAhKCFjYWxsYmFjayB8fCB0eXBlb2YgY2FsbGJh
Y2sgPT09ICdmdW5jdGlvbicpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnJXMoLi4uKTog
RXhwZWN0ZWQgdGhlIGxhc3Qgb3B0aW9uYWwgYGNhbGxiYWNrYCBhcmd1bWVudCB0byBiZSBhIGZ1
bmN0aW9uLiBJbnN0ZWFkIHJlY2VpdmVkOiAlcy4nLCBjYWxsZXJOYW1lLCBmb3JtYXRVbmV4cGVj
dGVkQXJndW1lbnQoY2FsbGJhY2spKSA6IF9wcm9kSW52YXJpYW50KCcxMjInLCBjYWxsZXJOYW1l
LCBmb3JtYXRVbmV4cGVjdGVkQXJndW1lbnQoY2FsbGJhY2spKSA6IHZvaWQgMDtcblx0ICB9XG5c
dH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0VXBkYXRlUXVldWU7XG5cbi8qKiovIH0s
XG4vKiA0MyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5c
dCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0LyogZ2xvYmFs
cyBNU0FwcCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0LyoqXG5cdCAqIENyZWF0ZSBh
IGZ1bmN0aW9uIHdoaWNoIGhhcyAndW5zYWZlJyBwcml2aWxlZ2VzIChyZXF1aXJlZCBieSB3aW5k
b3dzOCBhcHBzKVxuXHQgKi9cblx0XG5cdHZhciBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1
bmN0aW9uID0gZnVuY3Rpb24gKGZ1bmMpIHtcblx0ICBpZiAodHlwZW9mIE1TQXBwICE9PSAndW5k
ZWZpbmVkJyAmJiBNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbikge1xuXHQgICAgcmV0dXJu
IGZ1bmN0aW9uIChhcmcwLCBhcmcxLCBhcmcyLCBhcmczKSB7XG5cdCAgICAgIE1TQXBwLmV4ZWNV
bnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICByZXR1cm4gZnVuYyhh
cmcwLCBhcmcxLCBhcmcyLCBhcmczKTtcblx0ICAgICAgfSk7XG5cdCAgICB9O1xuXHQgIH0gZWxz
ZSB7XG5cdCAgICByZXR1cm4gZnVuYztcblx0ICB9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0
cyA9IGNyZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rpb247XG5cbi8qKiovIH0sXG4vKiA0
NCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
blx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xu
XHRcblx0LyoqXG5cdCAqIGBjaGFyQ29kZWAgcmVwcmVzZW50cyB0aGUgYWN0dWFsIFwiY2hhcmFj
dGVyIGNvZGVcIiBhbmQgaXMgc2FmZSB0byB1c2Ugd2l0aFxuXHQgKiBgU3RyaW5nLmZyb21DaGFy
Q29kZWAuIEFzIHN1Y2gsIG9ubHkga2V5cyB0aGF0IGNvcnJlc3BvbmQgdG8gcHJpbnRhYmxlXG5c
dCAqIGNoYXJhY3RlcnMgcHJvZHVjZSBhIHZhbGlkIGBjaGFyQ29kZWAsIHRoZSBvbmx5IGV4Y2Vw
dGlvbiB0byB0aGlzIGlzIEVudGVyLlxuXHQgKiBUaGUgVGFiLWtleSBpcyBjb25zaWRlcmVkIG5v
bi1wcmludGFibGUgYW5kIGRvZXMgbm90IGhhdmUgYSBgY2hhckNvZGVgLFxuXHQgKiBwcmVzdW1h
Ymx5IGJlY2F1c2UgaXQgZG9lcyBub3QgcHJvZHVjZSBhIHRhYi1jaGFyYWN0ZXIgaW4gYnJvd3Nl
cnMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3Nl
ciBldmVudC5cblx0ICogQHJldHVybiB7bnVtYmVyfSBOb3JtYWxpemVkIGBjaGFyQ29kZWAgcHJv
cGVydHkuXG5cdCAqL1xuXHRcblx0ZnVuY3Rpb24gZ2V0RXZlbnRDaGFyQ29kZShuYXRpdmVFdmVu
dCkge1xuXHQgIHZhciBjaGFyQ29kZTtcblx0ICB2YXIga2V5Q29kZSA9IG5hdGl2ZUV2ZW50Lmtl
eUNvZGU7XG5cdFxuXHQgIGlmICgnY2hhckNvZGUnIGluIG5hdGl2ZUV2ZW50KSB7XG5cdCAgICBj
aGFyQ29kZSA9IG5hdGl2ZUV2ZW50LmNoYXJDb2RlO1xuXHRcblx0ICAgIC8vIEZGIGRvZXMgbm90
IHNldCBgY2hhckNvZGVgIGZvciB0aGUgRW50ZXIta2V5LCBjaGVjayBhZ2FpbnN0IGBrZXlDb2Rl
YC5cblx0ICAgIGlmIChjaGFyQ29kZSA9PT0gMCAmJiBrZXlDb2RlID09PSAxMykge1xuXHQgICAg
ICBjaGFyQ29kZSA9IDEzO1xuXHQgICAgfVxuXHQgIH0gZWxzZSB7XG5cdCAgICAvLyBJRTggZG9l
cyBub3QgaW1wbGVtZW50IGBjaGFyQ29kZWAsIGJ1dCBga2V5Q29kZWAgaGFzIHRoZSBjb3JyZWN0
IHZhbHVlLlxuXHQgICAgY2hhckNvZGUgPSBrZXlDb2RlO1xuXHQgIH1cblx0XG5cdCAgLy8gU29t
ZSBub24tcHJpbnRhYmxlIGtleXMgYXJlIHJlcG9ydGVkIGluIGBjaGFyQ29kZWAvYGtleUNvZGVg
LCBkaXNjYXJkIHRoZW0uXG5cdCAgLy8gTXVzdCBub3QgZGlzY2FyZCB0aGUgKG5vbi0pcHJpbnRh
YmxlIEVudGVyLWtleS5cblx0ICBpZiAoY2hhckNvZGUgPj0gMzIgfHwgY2hhckNvZGUgPT09IDEz
KSB7XG5cdCAgICByZXR1cm4gY2hhckNvZGU7XG5cdCAgfVxuXHRcblx0ICByZXR1cm4gMDtcblx0
fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBnZXRFdmVudENoYXJDb2RlO1xuXG4vKioqLyB9LFxu
LyogNDUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0
Jztcblx0XG5cdC8qKlxuXHQgKiBUcmFuc2xhdGlvbiBmcm9tIG1vZGlmaWVyIGtleSB0byB0aGUg
YXNzb2NpYXRlZCBwcm9wZXJ0eSBpbiB0aGUgZXZlbnQuXG5cdCAqIEBzZWUgaHR0cDovL3d3dy53
My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzLyNrZXlzLU1vZGlmaWVyc1xuXHQgKi9cblx0XG5c
dHZhciBtb2RpZmllcktleVRvUHJvcCA9IHtcblx0ICBBbHQ6ICdhbHRLZXknLFxuXHQgIENvbnRy
b2w6ICdjdHJsS2V5Jyxcblx0ICBNZXRhOiAnbWV0YUtleScsXG5cdCAgU2hpZnQ6ICdzaGlmdEtl
eSdcblx0fTtcblx0XG5cdC8vIElFOCBkb2VzIG5vdCBpbXBsZW1lbnQgZ2V0TW9kaWZpZXJTdGF0
ZSBzbyB3ZSBzaW1wbHkgbWFwIGl0IHRvIHRoZSBvbmx5XG5cdC8vIG1vZGlmaWVyIGtleXMgZXhw
b3NlZCBieSB0aGUgZXZlbnQgaXRzZWxmLCBkb2VzIG5vdCBzdXBwb3J0IExvY2sta2V5cy5cblx0
Ly8gQ3VycmVudGx5LCBhbGwgbWFqb3IgYnJvd3NlcnMgZXhjZXB0IENocm9tZSBzZWVtcyB0byBz
dXBwb3J0IExvY2sta2V5cy5cblx0ZnVuY3Rpb24gbW9kaWZpZXJTdGF0ZUdldHRlcihrZXlBcmcp
IHtcblx0ICB2YXIgc3ludGhldGljRXZlbnQgPSB0aGlzO1xuXHQgIHZhciBuYXRpdmVFdmVudCA9
IHN5bnRoZXRpY0V2ZW50Lm5hdGl2ZUV2ZW50O1xuXHQgIGlmIChuYXRpdmVFdmVudC5nZXRNb2Rp
ZmllclN0YXRlKSB7XG5cdCAgICByZXR1cm4gbmF0aXZlRXZlbnQuZ2V0TW9kaWZpZXJTdGF0ZShr
ZXlBcmcpO1xuXHQgIH1cblx0ICB2YXIga2V5UHJvcCA9IG1vZGlmaWVyS2V5VG9Qcm9wW2tleUFy
Z107XG5cdCAgcmV0dXJuIGtleVByb3AgPyAhIW5hdGl2ZUV2ZW50W2tleVByb3BdIDogZmFsc2U7
XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGdldEV2ZW50TW9kaWZpZXJTdGF0ZShuYXRpdmVFdmVudCkg
e1xuXHQgIHJldHVybiBtb2RpZmllclN0YXRlR2V0dGVyO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhw
b3J0cyA9IGdldEV2ZW50TW9kaWZpZXJTdGF0ZTtcblxuLyoqKi8gfSxcbi8qIDQ2ICovXG4vKioq
LyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0
ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQvKipc
blx0ICogR2V0cyB0aGUgdGFyZ2V0IG5vZGUgZnJvbSBhIG5hdGl2ZSBicm93c2VyIGV2ZW50IGJ5
IGFjY291bnRpbmcgZm9yXG5cdCAqIGluY29uc2lzdGVuY2llcyBpbiBicm93c2VyIERPTSBBUElz
LlxuXHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIg
ZXZlbnQuXG5cdCAqIEByZXR1cm4ge0RPTUV2ZW50VGFyZ2V0fSBUYXJnZXQgbm9kZS5cblx0ICov
XG5cdFxuXHRmdW5jdGlvbiBnZXRFdmVudFRhcmdldChuYXRpdmVFdmVudCkge1xuXHQgIHZhciB0
YXJnZXQgPSBuYXRpdmVFdmVudC50YXJnZXQgfHwgbmF0aXZlRXZlbnQuc3JjRWxlbWVudCB8fCB3
aW5kb3c7XG5cdFxuXHQgIC8vIE5vcm1hbGl6ZSBTVkcgPHVzZT4gZWxlbWVudCBldmVudHMgIzQ5
NjNcblx0ICBpZiAodGFyZ2V0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50KSB7XG5cdCAgICB0YXJn
ZXQgPSB0YXJnZXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQ7XG5cdCAgfVxuXHRcblx0ICAvLyBT
YWZhcmkgbWF5IGZpcmUgZXZlbnRzIG9uIHRleHQgbm9kZXMgKE5vZGUuVEVYVF9OT0RFIGlzIDMp
LlxuXHQgIC8vIEBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9qcy9ldmVudHNfcHJvcGVy
dGllcy5odG1sXG5cdCAgcmV0dXJuIHRhcmdldC5ub2RlVHlwZSA9PT0gMyA/IHRhcmdldC5wYXJl
bnROb2RlIDogdGFyZ2V0O1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGdldEV2ZW50VGFy
Z2V0O1xuXG4vKioqLyB9LFxuLyogNDcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxu
XHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBFeGVj
dXRpb25FbnZpcm9ubWVudCA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG5cdFxuXHR2YXIgdXNl
SGFzRmVhdHVyZTtcblx0aWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkge1xuXHQg
IHVzZUhhc0ZlYXR1cmUgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbiAmJiBkb2N1bWVudC5pbXBs
ZW1lbnRhdGlvbi5oYXNGZWF0dXJlICYmXG5cdCAgLy8gYWx3YXlzIHJldHVybnMgdHJ1ZSBpbiBu
ZXdlciBicm93c2VycyBhcyBwZXIgdGhlIHN0YW5kYXJkLlxuXHQgIC8vIEBzZWUgaHR0cDovL2Rv
bS5zcGVjLndoYXR3Zy5vcmcvI2RvbS1kb21pbXBsZW1lbnRhdGlvbi1oYXNmZWF0dXJlXG5cdCAg
ZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSgnJywgJycpICE9PSB0cnVlO1xuXHR9
XG5cdFxuXHQvKipcblx0ICogQ2hlY2tzIGlmIGFuIGV2ZW50IGlzIHN1cHBvcnRlZCBpbiB0aGUg
Y3VycmVudCBleGVjdXRpb24gZW52aXJvbm1lbnQuXG5cdCAqXG5cdCAqIE5PVEU6IFRoaXMgd2ls
bCBub3Qgd29yayBjb3JyZWN0bHkgZm9yIG5vbi1nZW5lcmljIGV2ZW50cyBzdWNoIGFzIGBjaGFu
Z2VgLFxuXHQgKiBgcmVzZXRgLCBgbG9hZGAsIGBlcnJvcmAsIGFuZCBgc2VsZWN0YC5cblx0ICpc
blx0ICogQm9ycm93cyBmcm9tIE1vZGVybml6ci5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9
IGV2ZW50TmFtZVN1ZmZpeCBFdmVudCBuYW1lLCBlLmcuIFwiY2xpY2tcIi5cblx0ICogQHBhcmFt
IHs/Ym9vbGVhbn0gY2FwdHVyZSBDaGVjayBpZiB0aGUgY2FwdHVyZSBwaGFzZSBpcyBzdXBwb3J0
ZWQuXG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIGV2ZW50IGlzIHN1cHBvcnRl
ZC5cblx0ICogQGludGVybmFsXG5cdCAqIEBsaWNlbnNlIE1vZGVybml6ciAzLjAuMHByZSAoQ3Vz
dG9tIEJ1aWxkKSB8IE1JVFxuXHQgKi9cblx0ZnVuY3Rpb24gaXNFdmVudFN1cHBvcnRlZChldmVu
dE5hbWVTdWZmaXgsIGNhcHR1cmUpIHtcblx0ICBpZiAoIUV4ZWN1dGlvbkVudmlyb25tZW50LmNh
blVzZURPTSB8fCBjYXB0dXJlICYmICEoJ2FkZEV2ZW50TGlzdGVuZXInIGluIGRvY3VtZW50KSkg
e1xuXHQgICAgcmV0dXJuIGZhbHNlO1xuXHQgIH1cblx0XG5cdCAgdmFyIGV2ZW50TmFtZSA9ICdv
bicgKyBldmVudE5hbWVTdWZmaXg7XG5cdCAgdmFyIGlzU3VwcG9ydGVkID0gZXZlbnROYW1lIGlu
IGRvY3VtZW50O1xuXHRcblx0ICBpZiAoIWlzU3VwcG9ydGVkKSB7XG5cdCAgICB2YXIgZWxlbWVu
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXHQgICAgZWxlbWVudC5zZXRBdHRy
aWJ1dGUoZXZlbnROYW1lLCAncmV0dXJuOycpO1xuXHQgICAgaXNTdXBwb3J0ZWQgPSB0eXBlb2Yg
ZWxlbWVudFtldmVudE5hbWVdID09PSAnZnVuY3Rpb24nO1xuXHQgIH1cblx0XG5cdCAgaWYgKCFp
c1N1cHBvcnRlZCAmJiB1c2VIYXNGZWF0dXJlICYmIGV2ZW50TmFtZVN1ZmZpeCA9PT0gJ3doZWVs
Jykge1xuXHQgICAgLy8gVGhpcyBpcyB0aGUgb25seSB3YXkgdG8gdGVzdCBzdXBwb3J0IGZvciB0
aGUgYHdoZWVsYCBldmVudCBpbiBJRTkrLlxuXHQgICAgaXNTdXBwb3J0ZWQgPSBkb2N1bWVudC5p
bXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlKCdFdmVudHMud2hlZWwnLCAnMy4wJyk7XG5cdCAgfVxu
XHRcblx0ICByZXR1cm4gaXNTdXBwb3J0ZWQ7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0g
aXNFdmVudFN1cHBvcnRlZDtcblxuLyoqKi8gfSxcbi8qIDQ4ICovXG4vKioqLyBmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
blx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQvKipcblx0ICogR2l2ZW4g
YSBgcHJldkVsZW1lbnRgIGFuZCBgbmV4dEVsZW1lbnRgLCBkZXRlcm1pbmVzIGlmIHRoZSBleGlz
dGluZ1xuXHQgKiBpbnN0YW5jZSBzaG91bGQgYmUgdXBkYXRlZCBhcyBvcHBvc2VkIHRvIGJlaW5n
IGRlc3Ryb3llZCBvciByZXBsYWNlZCBieSBhIG5ld1xuXHQgKiBpbnN0YW5jZS4gQm90aCBhcmd1
bWVudHMgYXJlIGVsZW1lbnRzLiBUaGlzIGVuc3VyZXMgdGhhdCB0aGlzIGxvZ2ljIGNhblxuXHQg
KiBvcGVyYXRlIG9uIHN0YXRlbGVzcyB0cmVlcyB3aXRob3V0IGFueSBiYWNraW5nIGluc3RhbmNl
LlxuXHQgKlxuXHQgKiBAcGFyYW0gez9vYmplY3R9IHByZXZFbGVtZW50XG5cdCAqIEBwYXJhbSB7
P29iamVjdH0gbmV4dEVsZW1lbnRcblx0ICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUg
ZXhpc3RpbmcgaW5zdGFuY2Ugc2hvdWxkIGJlIHVwZGF0ZWQuXG5cdCAqIEBwcm90ZWN0ZWRcblx0
ICovXG5cdFxuXHRmdW5jdGlvbiBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudChwcmV2RWxlbWVu
dCwgbmV4dEVsZW1lbnQpIHtcblx0ICB2YXIgcHJldkVtcHR5ID0gcHJldkVsZW1lbnQgPT09IG51
bGwgfHwgcHJldkVsZW1lbnQgPT09IGZhbHNlO1xuXHQgIHZhciBuZXh0RW1wdHkgPSBuZXh0RWxl
bWVudCA9PT0gbnVsbCB8fCBuZXh0RWxlbWVudCA9PT0gZmFsc2U7XG5cdCAgaWYgKHByZXZFbXB0
eSB8fCBuZXh0RW1wdHkpIHtcblx0ICAgIHJldHVybiBwcmV2RW1wdHkgPT09IG5leHRFbXB0eTtc
blx0ICB9XG5cdFxuXHQgIHZhciBwcmV2VHlwZSA9IHR5cGVvZiBwcmV2RWxlbWVudDtcblx0ICB2
YXIgbmV4dFR5cGUgPSB0eXBlb2YgbmV4dEVsZW1lbnQ7XG5cdCAgaWYgKHByZXZUeXBlID09PSAn
c3RyaW5nJyB8fCBwcmV2VHlwZSA9PT0gJ251bWJlcicpIHtcblx0ICAgIHJldHVybiBuZXh0VHlw
ZSA9PT0gJ3N0cmluZycgfHwgbmV4dFR5cGUgPT09ICdudW1iZXInO1xuXHQgIH0gZWxzZSB7XG5c
dCAgICByZXR1cm4gbmV4dFR5cGUgPT09ICdvYmplY3QnICYmIHByZXZFbGVtZW50LnR5cGUgPT09
IG5leHRFbGVtZW50LnR5cGUgJiYgcHJldkVsZW1lbnQua2V5ID09PSBuZXh0RWxlbWVudC5rZXk7
XG5cdCAgfVxuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IHNob3VsZFVwZGF0ZVJlYWN0Q29t
cG9uZW50O1xuXG4vKioqLyB9LFxuLyogNDkgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhw
b3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAx
NS1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQg
KlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBf
YXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0XG5cdHZhciBlbXB0eUZ1bmN0aW9u
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDIpO1xuXHRcblx0dmFyIHZhbGlkYXRlRE9NTmVzdGluZyA9IGVtcHR5RnVuY3Rpb247
XG5cdFxuXHRpZiAoZmFsc2UpIHtcblx0ICAvLyBUaGlzIHZhbGlkYXRpb24gY29kZSB3YXMgd3Jp
dHRlbiBiYXNlZCBvbiB0aGUgSFRNTDUgcGFyc2luZyBzcGVjOlxuXHQgIC8vIGh0dHBzOi8vaHRt
bC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2hhcy1hbi1lbGVtZW50LWlu
LXNjb3BlXG5cdCAgLy9cblx0ICAvLyBOb3RlOiB0aGlzIGRvZXMgbm90IGNhdGNoIGFsbCBpbnZh
bGlkIG5lc3RpbmcsIG5vciBkb2VzIGl0IHRyeSB0byAoYXMgaXQnc1xuXHQgIC8vIG5vdCBjbGVh
ciB3aGF0IHByYWN0aWNhbCBiZW5lZml0IGRvaW5nIHNvIHByb3ZpZGVzKTsgaW5zdGVhZCwgd2Ug
d2FybiBvbmx5XG5cdCAgLy8gZm9yIGNhc2VzIHdoZXJlIHRoZSBwYXJzZXIgd2lsbCBnaXZlIGEg
cGFyc2UgdHJlZSBkaWZmZXJpbmcgZnJvbSB3aGF0IFJlYWN0XG5cdCAgLy8gaW50ZW5kZWQuIEZv
ciBleGFtcGxlLCA8Yj48ZGl2PjwvZGl2PjwvYj4gaXMgaW52YWxpZCBidXQgd2UgZG9uJ3Qgd2Fy
blxuXHQgIC8vIGJlY2F1c2UgaXQgc3RpbGwgcGFyc2VzIGNvcnJlY3RseTsgd2UgZG8gd2FybiBm
b3Igb3RoZXIgY2FzZXMgbGlrZSBuZXN0ZWRcblx0ICAvLyA8cD4gdGFncyB3aGVyZSB0aGUgYmVn
aW5uaW5nIG9mIHRoZSBzZWNvbmQgZWxlbWVudCBpbXBsaWNpdGx5IGNsb3NlcyB0aGVcblx0ICAv
LyBmaXJzdCwgY2F1c2luZyBhIGNvbmZ1c2luZyBtZXNzLlxuXHRcblx0ICAvLyBodHRwczovL2h0
bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNzcGVjaWFsXG5cdCAgdmFy
IHNwZWNpYWxUYWdzID0gWydhZGRyZXNzJywgJ2FwcGxldCcsICdhcmVhJywgJ2FydGljbGUnLCAn
YXNpZGUnLCAnYmFzZScsICdiYXNlZm9udCcsICdiZ3NvdW5kJywgJ2Jsb2NrcXVvdGUnLCAnYm9k
eScsICdicicsICdidXR0b24nLCAnY2FwdGlvbicsICdjZW50ZXInLCAnY29sJywgJ2NvbGdyb3Vw
JywgJ2RkJywgJ2RldGFpbHMnLCAnZGlyJywgJ2RpdicsICdkbCcsICdkdCcsICdlbWJlZCcsICdm
aWVsZHNldCcsICdmaWdjYXB0aW9uJywgJ2ZpZ3VyZScsICdmb290ZXInLCAnZm9ybScsICdmcmFt
ZScsICdmcmFtZXNldCcsICdoMScsICdoMicsICdoMycsICdoNCcsICdoNScsICdoNicsICdoZWFk
JywgJ2hlYWRlcicsICdoZ3JvdXAnLCAnaHInLCAnaHRtbCcsICdpZnJhbWUnLCAnaW1nJywgJ2lu
cHV0JywgJ2lzaW5kZXgnLCAnbGknLCAnbGluaycsICdsaXN0aW5nJywgJ21haW4nLCAnbWFycXVl
ZScsICdtZW51JywgJ21lbnVpdGVtJywgJ21ldGEnLCAnbmF2JywgJ25vZW1iZWQnLCAnbm9mcmFt
ZXMnLCAnbm9zY3JpcHQnLCAnb2JqZWN0JywgJ29sJywgJ3AnLCAncGFyYW0nLCAncGxhaW50ZXh0
JywgJ3ByZScsICdzY3JpcHQnLCAnc2VjdGlvbicsICdzZWxlY3QnLCAnc291cmNlJywgJ3N0eWxl
JywgJ3N1bW1hcnknLCAndGFibGUnLCAndGJvZHknLCAndGQnLCAndGVtcGxhdGUnLCAndGV4dGFy
ZWEnLCAndGZvb3QnLCAndGgnLCAndGhlYWQnLCAndGl0bGUnLCAndHInLCAndHJhY2snLCAndWwn
LCAnd2JyJywgJ3htcCddO1xuXHRcblx0ICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3Jn
L211bHRpcGFnZS9zeW50YXguaHRtbCNoYXMtYW4tZWxlbWVudC1pbi1zY29wZVxuXHQgIHZhciBp
blNjb3BlVGFncyA9IFsnYXBwbGV0JywgJ2NhcHRpb24nLCAnaHRtbCcsICd0YWJsZScsICd0ZCcs
ICd0aCcsICdtYXJxdWVlJywgJ29iamVjdCcsICd0ZW1wbGF0ZScsXG5cdFxuXHQgIC8vIGh0dHBz
Oi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2h0bWwtaW50ZWdy
YXRpb24tcG9pbnRcblx0ICAvLyBUT0RPOiBEaXN0aW5ndWlzaCBieSBuYW1lc3BhY2UgaGVyZSAt
LSBmb3IgPHRpdGxlPiwgaW5jbHVkaW5nIGl0IGhlcmVcblx0ICAvLyBlcnJzIG9uIHRoZSBzaWRl
IG9mIGZld2VyIHdhcm5pbmdzXG5cdCAgJ2ZvcmVpZ25PYmplY3QnLCAnZGVzYycsICd0aXRsZSdd
O1xuXHRcblx0ICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50
YXguaHRtbCNoYXMtYW4tZWxlbWVudC1pbi1idXR0b24tc2NvcGVcblx0ICB2YXIgYnV0dG9uU2Nv
cGVUYWdzID0gaW5TY29wZVRhZ3MuY29uY2F0KFsnYnV0dG9uJ10pO1xuXHRcblx0ICAvLyBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNnZW5lcmF0ZS1p
bXBsaWVkLWVuZC10YWdzXG5cdCAgdmFyIGltcGxpZWRFbmRUYWdzID0gWydkZCcsICdkdCcsICds
aScsICdvcHRpb24nLCAnb3B0Z3JvdXAnLCAncCcsICdycCcsICdydCddO1xuXHRcblx0ICB2YXIg
ZW1wdHlBbmNlc3RvckluZm8gPSB7XG5cdCAgICBjdXJyZW50OiBudWxsLFxuXHRcblx0ICAgIGZv
cm1UYWc6IG51bGwsXG5cdCAgICBhVGFnSW5TY29wZTogbnVsbCxcblx0ICAgIGJ1dHRvblRhZ0lu
U2NvcGU6IG51bGwsXG5cdCAgICBub2JyVGFnSW5TY29wZTogbnVsbCxcblx0ICAgIHBUYWdJbkJ1
dHRvblNjb3BlOiBudWxsLFxuXHRcblx0ICAgIGxpc3RJdGVtVGFnQXV0b2Nsb3Npbmc6IG51bGws
XG5cdCAgICBkbEl0ZW1UYWdBdXRvY2xvc2luZzogbnVsbFxuXHQgIH07XG5cdFxuXHQgIHZhciB1
cGRhdGVkQW5jZXN0b3JJbmZvID0gZnVuY3Rpb24gKG9sZEluZm8sIHRhZywgaW5zdGFuY2UpIHtc
blx0ICAgIHZhciBhbmNlc3RvckluZm8gPSBfYXNzaWduKHt9LCBvbGRJbmZvIHx8IGVtcHR5QW5j
ZXN0b3JJbmZvKTtcblx0ICAgIHZhciBpbmZvID0geyB0YWc6IHRhZywgaW5zdGFuY2U6IGluc3Rh
bmNlIH07XG5cdFxuXHQgICAgaWYgKGluU2NvcGVUYWdzLmluZGV4T2YodGFnKSAhPT0gLTEpIHtc
blx0ICAgICAgYW5jZXN0b3JJbmZvLmFUYWdJblNjb3BlID0gbnVsbDtcblx0ICAgICAgYW5jZXN0
b3JJbmZvLmJ1dHRvblRhZ0luU2NvcGUgPSBudWxsO1xuXHQgICAgICBhbmNlc3RvckluZm8ubm9i
clRhZ0luU2NvcGUgPSBudWxsO1xuXHQgICAgfVxuXHQgICAgaWYgKGJ1dHRvblNjb3BlVGFncy5p
bmRleE9mKHRhZykgIT09IC0xKSB7XG5cdCAgICAgIGFuY2VzdG9ySW5mby5wVGFnSW5CdXR0b25T
Y29wZSA9IG51bGw7XG5cdCAgICB9XG5cdFxuXHQgICAgLy8gU2VlIHJ1bGVzIGZvciAnbGknLCAn
ZGQnLCAnZHQnIHN0YXJ0IHRhZ3MgaW5cblx0ICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3
Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbmJvZHlcblx0ICAgIGlm
IChzcGVjaWFsVGFncy5pbmRleE9mKHRhZykgIT09IC0xICYmIHRhZyAhPT0gJ2FkZHJlc3MnICYm
IHRhZyAhPT0gJ2RpdicgJiYgdGFnICE9PSAncCcpIHtcblx0ICAgICAgYW5jZXN0b3JJbmZvLmxp
c3RJdGVtVGFnQXV0b2Nsb3NpbmcgPSBudWxsO1xuXHQgICAgICBhbmNlc3RvckluZm8uZGxJdGVt
VGFnQXV0b2Nsb3NpbmcgPSBudWxsO1xuXHQgICAgfVxuXHRcblx0ICAgIGFuY2VzdG9ySW5mby5j
dXJyZW50ID0gaW5mbztcblx0XG5cdCAgICBpZiAodGFnID09PSAnZm9ybScpIHtcblx0ICAgICAg
YW5jZXN0b3JJbmZvLmZvcm1UYWcgPSBpbmZvO1xuXHQgICAgfVxuXHQgICAgaWYgKHRhZyA9PT0g
J2EnKSB7XG5cdCAgICAgIGFuY2VzdG9ySW5mby5hVGFnSW5TY29wZSA9IGluZm87XG5cdCAgICB9
XG5cdCAgICBpZiAodGFnID09PSAnYnV0dG9uJykge1xuXHQgICAgICBhbmNlc3RvckluZm8uYnV0
dG9uVGFnSW5TY29wZSA9IGluZm87XG5cdCAgICB9XG5cdCAgICBpZiAodGFnID09PSAnbm9icicp
IHtcblx0ICAgICAgYW5jZXN0b3JJbmZvLm5vYnJUYWdJblNjb3BlID0gaW5mbztcblx0ICAgIH1c
blx0ICAgIGlmICh0YWcgPT09ICdwJykge1xuXHQgICAgICBhbmNlc3RvckluZm8ucFRhZ0luQnV0
dG9uU2NvcGUgPSBpbmZvO1xuXHQgICAgfVxuXHQgICAgaWYgKHRhZyA9PT0gJ2xpJykge1xuXHQg
ICAgICBhbmNlc3RvckluZm8ubGlzdEl0ZW1UYWdBdXRvY2xvc2luZyA9IGluZm87XG5cdCAgICB9
XG5cdCAgICBpZiAodGFnID09PSAnZGQnIHx8IHRhZyA9PT0gJ2R0Jykge1xuXHQgICAgICBhbmNl
c3RvckluZm8uZGxJdGVtVGFnQXV0b2Nsb3NpbmcgPSBpbmZvO1xuXHQgICAgfVxuXHRcblx0ICAg
IHJldHVybiBhbmNlc3RvckluZm87XG5cdCAgfTtcblx0XG5cdCAgLyoqXG5cdCAgICogUmV0dXJu
cyB3aGV0aGVyXG5cdCAgICovXG5cdCAgdmFyIGlzVGFnVmFsaWRXaXRoUGFyZW50ID0gZnVuY3Rp
b24gKHRhZywgcGFyZW50VGFnKSB7XG5cdCAgICAvLyBGaXJzdCwgbGV0J3MgY2hlY2sgaWYgd2Un
cmUgaW4gYW4gdW51c3VhbCBwYXJzaW5nIG1vZGUuLi5cblx0ICAgIHN3aXRjaCAocGFyZW50VGFn
KSB7XG5cdCAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5
bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbnNlbGVjdFxuXHQgICAgICBjYXNlICdzZWxlY3QnOlxu
XHQgICAgICAgIHJldHVybiB0YWcgPT09ICdvcHRpb24nIHx8IHRhZyA9PT0gJ29wdGdyb3VwJyB8
fCB0YWcgPT09ICcjdGV4dCc7XG5cdCAgICAgIGNhc2UgJ29wdGdyb3VwJzpcblx0ICAgICAgICBy
ZXR1cm4gdGFnID09PSAnb3B0aW9uJyB8fCB0YWcgPT09ICcjdGV4dCc7XG5cdCAgICAgIC8vIFN0
cmljdGx5IHNwZWFraW5nLCBzZWVpbmcgYW4gPG9wdGlvbj4gZG9lc24ndCBtZWFuIHdlJ3JlIGlu
IGEgPHNlbGVjdD5cblx0ICAgICAgLy8gYnV0XG5cdCAgICAgIGNhc2UgJ29wdGlvbic6XG5cdCAg
ICAgICAgcmV0dXJuIHRhZyA9PT0gJyN0ZXh0Jztcblx0ICAgICAgLy8gaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWludGRcblx0
ICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0
bWwjcGFyc2luZy1tYWluLWluY2FwdGlvblxuXHQgICAgICAvLyBObyBzcGVjaWFsIGJlaGF2aW9y
IHNpbmNlIHRoZXNlIHJ1bGVzIGZhbGwgYmFjayB0byBcImluIGJvZHlcIiBtb2RlIGZvclxuXHQg
ICAgICAvLyBhbGwgZXhjZXB0IHNwZWNpYWwgdGFibGUgbm9kZXMgd2hpY2ggY2F1c2UgYmFkIHBh
cnNpbmcgYmVoYXZpb3IgYW55d2F5LlxuXHRcblx0ICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMu
d2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWludHJcblx0ICAg
ICAgY2FzZSAndHInOlxuXHQgICAgICAgIHJldHVybiB0YWcgPT09ICd0aCcgfHwgdGFnID09PSAn
dGQnIHx8IHRhZyA9PT0gJ3N0eWxlJyB8fCB0YWcgPT09ICdzY3JpcHQnIHx8IHRhZyA9PT0gJ3Rl
bXBsYXRlJztcblx0ICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBh
Z2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWludGJvZHlcblx0ICAgICAgY2FzZSAndGJvZHkn
OlxuXHQgICAgICBjYXNlICd0aGVhZCc6XG5cdCAgICAgIGNhc2UgJ3Rmb290Jzpcblx0ICAgICAg
ICByZXR1cm4gdGFnID09PSAndHInIHx8IHRhZyA9PT0gJ3N0eWxlJyB8fCB0YWcgPT09ICdzY3Jp
cHQnIHx8IHRhZyA9PT0gJ3RlbXBsYXRlJztcblx0ICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMu
d2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluY29sZ3JvdXBc
blx0ICAgICAgY2FzZSAnY29sZ3JvdXAnOlxuXHQgICAgICAgIHJldHVybiB0YWcgPT09ICdjb2wn
IHx8IHRhZyA9PT0gJ3RlbXBsYXRlJztcblx0ICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hh
dHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWludGFibGVcblx0ICAg
ICAgY2FzZSAndGFibGUnOlxuXHQgICAgICAgIHJldHVybiB0YWcgPT09ICdjYXB0aW9uJyB8fCB0
YWcgPT09ICdjb2xncm91cCcgfHwgdGFnID09PSAndGJvZHknIHx8IHRhZyA9PT0gJ3Rmb290JyB8
fCB0YWcgPT09ICd0aGVhZCcgfHwgdGFnID09PSAnc3R5bGUnIHx8IHRhZyA9PT0gJ3NjcmlwdCcg
fHwgdGFnID09PSAndGVtcGxhdGUnO1xuXHQgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0
d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5oZWFkXG5cdCAgICAg
IGNhc2UgJ2hlYWQnOlxuXHQgICAgICAgIHJldHVybiB0YWcgPT09ICdiYXNlJyB8fCB0YWcgPT09
ICdiYXNlZm9udCcgfHwgdGFnID09PSAnYmdzb3VuZCcgfHwgdGFnID09PSAnbGluaycgfHwgdGFn
ID09PSAnbWV0YScgfHwgdGFnID09PSAndGl0bGUnIHx8IHRhZyA9PT0gJ25vc2NyaXB0JyB8fCB0
YWcgPT09ICdub2ZyYW1lcycgfHwgdGFnID09PSAnc3R5bGUnIHx8IHRhZyA9PT0gJ3NjcmlwdCcg
fHwgdGFnID09PSAndGVtcGxhdGUnO1xuXHQgICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0
d2cub3JnL211bHRpcGFnZS9zZW1hbnRpY3MuaHRtbCN0aGUtaHRtbC1lbGVtZW50XG5cdCAgICAg
IGNhc2UgJ2h0bWwnOlxuXHQgICAgICAgIHJldHVybiB0YWcgPT09ICdoZWFkJyB8fCB0YWcgPT09
ICdib2R5Jztcblx0ICAgICAgY2FzZSAnI2RvY3VtZW50Jzpcblx0ICAgICAgICByZXR1cm4gdGFn
ID09PSAnaHRtbCc7XG5cdCAgICB9XG5cdFxuXHQgICAgLy8gUHJvYmFibHkgaW4gdGhlIFwiaW4g
Ym9keVwiIHBhcnNpbmcgbW9kZSwgc28gd2Ugb3V0bGF3IG9ubHkgdGFnIGNvbWJvc1xuXHQgICAg
Ly8gd2hlcmUgdGhlIHBhcnNpbmcgcnVsZXMgY2F1c2UgaW1wbGljaXQgb3BlbnMgb3IgY2xvc2Vz
IHRvIGJlIGFkZGVkLlxuXHQgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0
aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluYm9keVxuXHQgICAgc3dpdGNoICh0YWcp
IHtcblx0ICAgICAgY2FzZSAnaDEnOlxuXHQgICAgICBjYXNlICdoMic6XG5cdCAgICAgIGNhc2Ug
J2gzJzpcblx0ICAgICAgY2FzZSAnaDQnOlxuXHQgICAgICBjYXNlICdoNSc6XG5cdCAgICAgIGNh
c2UgJ2g2Jzpcblx0ICAgICAgICByZXR1cm4gcGFyZW50VGFnICE9PSAnaDEnICYmIHBhcmVudFRh
ZyAhPT0gJ2gyJyAmJiBwYXJlbnRUYWcgIT09ICdoMycgJiYgcGFyZW50VGFnICE9PSAnaDQnICYm
IHBhcmVudFRhZyAhPT0gJ2g1JyAmJiBwYXJlbnRUYWcgIT09ICdoNic7XG5cdFxuXHQgICAgICBj
YXNlICdycCc6XG5cdCAgICAgIGNhc2UgJ3J0Jzpcblx0ICAgICAgICByZXR1cm4gaW1wbGllZEVu
ZFRhZ3MuaW5kZXhPZihwYXJlbnRUYWcpID09PSAtMTtcblx0XG5cdCAgICAgIGNhc2UgJ2JvZHkn
OlxuXHQgICAgICBjYXNlICdjYXB0aW9uJzpcblx0ICAgICAgY2FzZSAnY29sJzpcblx0ICAgICAg
Y2FzZSAnY29sZ3JvdXAnOlxuXHQgICAgICBjYXNlICdmcmFtZSc6XG5cdCAgICAgIGNhc2UgJ2hl
YWQnOlxuXHQgICAgICBjYXNlICdodG1sJzpcblx0ICAgICAgY2FzZSAndGJvZHknOlxuXHQgICAg
ICBjYXNlICd0ZCc6XG5cdCAgICAgIGNhc2UgJ3Rmb290Jzpcblx0ICAgICAgY2FzZSAndGgnOlxu
XHQgICAgICBjYXNlICd0aGVhZCc6XG5cdCAgICAgIGNhc2UgJ3RyJzpcblx0ICAgICAgICAvLyBU
aGVzZSB0YWdzIGFyZSBvbmx5IHZhbGlkIHdpdGggYSBmZXcgcGFyZW50cyB0aGF0IGhhdmUgc3Bl
Y2lhbCBjaGlsZFxuXHQgICAgICAgIC8vIHBhcnNpbmcgcnVsZXMgLS0gaWYgd2UncmUgZG93biBo
ZXJlLCB0aGVuIG5vbmUgb2YgdGhvc2UgbWF0Y2hlZCBhbmRcblx0ICAgICAgICAvLyBzbyB3ZSBh
bGxvdyBpdCBvbmx5IGlmIHdlIGRvbid0IGtub3cgd2hhdCB0aGUgcGFyZW50IGlzLCBhcyBhbGwg
b3RoZXJcblx0ICAgICAgICAvLyBjYXNlcyBhcmUgaW52YWxpZC5cblx0ICAgICAgICByZXR1cm4g
cGFyZW50VGFnID09IG51bGw7XG5cdCAgICB9XG5cdFxuXHQgICAgcmV0dXJuIHRydWU7XG5cdCAg
fTtcblx0XG5cdCAgLyoqXG5cdCAgICogUmV0dXJucyB3aGV0aGVyXG5cdCAgICovXG5cdCAgdmFy
IGZpbmRJbnZhbGlkQW5jZXN0b3JGb3JUYWcgPSBmdW5jdGlvbiAodGFnLCBhbmNlc3RvckluZm8p
IHtcblx0ICAgIHN3aXRjaCAodGFnKSB7XG5cdCAgICAgIGNhc2UgJ2FkZHJlc3MnOlxuXHQgICAg
ICBjYXNlICdhcnRpY2xlJzpcblx0ICAgICAgY2FzZSAnYXNpZGUnOlxuXHQgICAgICBjYXNlICdi
bG9ja3F1b3RlJzpcblx0ICAgICAgY2FzZSAnY2VudGVyJzpcblx0ICAgICAgY2FzZSAnZGV0YWls
cyc6XG5cdCAgICAgIGNhc2UgJ2RpYWxvZyc6XG5cdCAgICAgIGNhc2UgJ2Rpcic6XG5cdCAgICAg
IGNhc2UgJ2Rpdic6XG5cdCAgICAgIGNhc2UgJ2RsJzpcblx0ICAgICAgY2FzZSAnZmllbGRzZXQn
OlxuXHQgICAgICBjYXNlICdmaWdjYXB0aW9uJzpcblx0ICAgICAgY2FzZSAnZmlndXJlJzpcblx0
ICAgICAgY2FzZSAnZm9vdGVyJzpcblx0ICAgICAgY2FzZSAnaGVhZGVyJzpcblx0ICAgICAgY2Fz
ZSAnaGdyb3VwJzpcblx0ICAgICAgY2FzZSAnbWFpbic6XG5cdCAgICAgIGNhc2UgJ21lbnUnOlxu
XHQgICAgICBjYXNlICduYXYnOlxuXHQgICAgICBjYXNlICdvbCc6XG5cdCAgICAgIGNhc2UgJ3An
OlxuXHQgICAgICBjYXNlICdzZWN0aW9uJzpcblx0ICAgICAgY2FzZSAnc3VtbWFyeSc6XG5cdCAg
ICAgIGNhc2UgJ3VsJzpcblx0ICAgICAgY2FzZSAncHJlJzpcblx0ICAgICAgY2FzZSAnbGlzdGlu
Zyc6XG5cdCAgICAgIGNhc2UgJ3RhYmxlJzpcblx0ICAgICAgY2FzZSAnaHInOlxuXHQgICAgICBj
YXNlICd4bXAnOlxuXHQgICAgICBjYXNlICdoMSc6XG5cdCAgICAgIGNhc2UgJ2gyJzpcblx0ICAg
ICAgY2FzZSAnaDMnOlxuXHQgICAgICBjYXNlICdoNCc6XG5cdCAgICAgIGNhc2UgJ2g1Jzpcblx0
ICAgICAgY2FzZSAnaDYnOlxuXHQgICAgICAgIHJldHVybiBhbmNlc3RvckluZm8ucFRhZ0luQnV0
dG9uU2NvcGU7XG5cdFxuXHQgICAgICBjYXNlICdmb3JtJzpcblx0ICAgICAgICByZXR1cm4gYW5j
ZXN0b3JJbmZvLmZvcm1UYWcgfHwgYW5jZXN0b3JJbmZvLnBUYWdJbkJ1dHRvblNjb3BlO1xuXHRc
blx0ICAgICAgY2FzZSAnbGknOlxuXHQgICAgICAgIHJldHVybiBhbmNlc3RvckluZm8ubGlzdEl0
ZW1UYWdBdXRvY2xvc2luZztcblx0XG5cdCAgICAgIGNhc2UgJ2RkJzpcblx0ICAgICAgY2FzZSAn
ZHQnOlxuXHQgICAgICAgIHJldHVybiBhbmNlc3RvckluZm8uZGxJdGVtVGFnQXV0b2Nsb3Npbmc7
XG5cdFxuXHQgICAgICBjYXNlICdidXR0b24nOlxuXHQgICAgICAgIHJldHVybiBhbmNlc3Rvcklu
Zm8uYnV0dG9uVGFnSW5TY29wZTtcblx0XG5cdCAgICAgIGNhc2UgJ2EnOlxuXHQgICAgICAgIC8v
IFNwZWMgc2F5cyBzb21ldGhpbmcgYWJvdXQgc3RvcmluZyBhIGxpc3Qgb2YgbWFya2VycywgYnV0
IGl0IHNvdW5kc1xuXHQgICAgICAgIC8vIGVxdWl2YWxlbnQgdG8gdGhpcyBjaGVjay5cblx0ICAg
ICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLmFUYWdJblNjb3BlO1xuXHRcblx0ICAgICAgY2FzZSAn
bm9icic6XG5cdCAgICAgICAgcmV0dXJuIGFuY2VzdG9ySW5mby5ub2JyVGFnSW5TY29wZTtcblx0
ICAgIH1cblx0XG5cdCAgICByZXR1cm4gbnVsbDtcblx0ICB9O1xuXHRcblx0ICAvKipcblx0ICAg
KiBHaXZlbiBhIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50IGluc3RhbmNlLCByZXR1cm4gYSBsaXN0
IG9mIGl0cyByZWN1cnNpdmVcblx0ICAgKiBvd25lcnMsIHN0YXJ0aW5nIGF0IHRoZSByb290IGFu
ZCBlbmRpbmcgd2l0aCB0aGUgaW5zdGFuY2UgaXRzZWxmLlxuXHQgICAqL1xuXHQgIHZhciBmaW5k
T3duZXJTdGFjayA9IGZ1bmN0aW9uIChpbnN0YW5jZSkge1xuXHQgICAgaWYgKCFpbnN0YW5jZSkg
e1xuXHQgICAgICByZXR1cm4gW107XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIHN0YWNrID0gW107
XG5cdCAgICBkbyB7XG5cdCAgICAgIHN0YWNrLnB1c2goaW5zdGFuY2UpO1xuXHQgICAgfSB3aGls
ZSAoaW5zdGFuY2UgPSBpbnN0YW5jZS5fY3VycmVudEVsZW1lbnQuX293bmVyKTtcblx0ICAgIHN0
YWNrLnJldmVyc2UoKTtcblx0ICAgIHJldHVybiBzdGFjaztcblx0ICB9O1xuXHRcblx0ICB2YXIg
ZGlkV2FybiA9IHt9O1xuXHRcblx0ICB2YWxpZGF0ZURPTU5lc3RpbmcgPSBmdW5jdGlvbiAoY2hp
bGRUYWcsIGNoaWxkVGV4dCwgY2hpbGRJbnN0YW5jZSwgYW5jZXN0b3JJbmZvKSB7XG5cdCAgICBh
bmNlc3RvckluZm8gPSBhbmNlc3RvckluZm8gfHwgZW1wdHlBbmNlc3RvckluZm87XG5cdCAgICB2
YXIgcGFyZW50SW5mbyA9IGFuY2VzdG9ySW5mby5jdXJyZW50O1xuXHQgICAgdmFyIHBhcmVudFRh
ZyA9IHBhcmVudEluZm8gJiYgcGFyZW50SW5mby50YWc7XG5cdFxuXHQgICAgaWYgKGNoaWxkVGV4
dCAhPSBudWxsKSB7XG5cdCAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicgPyB3YXJuaW5nKGNoaWxkVGFnID09IG51bGwsICd2YWxpZGF0ZURPTU5lc3Rpbmc6IHdoZW4g
Y2hpbGRUZXh0IGlzIHBhc3NlZCwgY2hpbGRUYWcgc2hvdWxkIGJlIG51bGwnKSA6IHZvaWQgMDtc
blx0ICAgICAgY2hpbGRUYWcgPSAnI3RleHQnO1xuXHQgICAgfVxuXHRcblx0ICAgIHZhciBpbnZh
bGlkUGFyZW50ID0gaXNUYWdWYWxpZFdpdGhQYXJlbnQoY2hpbGRUYWcsIHBhcmVudFRhZykgPyBu
dWxsIDogcGFyZW50SW5mbztcblx0ICAgIHZhciBpbnZhbGlkQW5jZXN0b3IgPSBpbnZhbGlkUGFy
ZW50ID8gbnVsbCA6IGZpbmRJbnZhbGlkQW5jZXN0b3JGb3JUYWcoY2hpbGRUYWcsIGFuY2VzdG9y
SW5mbyk7XG5cdCAgICB2YXIgcHJvYmxlbWF0aWMgPSBpbnZhbGlkUGFyZW50IHx8IGludmFsaWRB
bmNlc3Rvcjtcblx0XG5cdCAgICBpZiAocHJvYmxlbWF0aWMpIHtcblx0ICAgICAgdmFyIGFuY2Vz
dG9yVGFnID0gcHJvYmxlbWF0aWMudGFnO1xuXHQgICAgICB2YXIgYW5jZXN0b3JJbnN0YW5jZSA9
IHByb2JsZW1hdGljLmluc3RhbmNlO1xuXHRcblx0ICAgICAgdmFyIGNoaWxkT3duZXIgPSBjaGls
ZEluc3RhbmNlICYmIGNoaWxkSW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcblx0ICAg
ICAgdmFyIGFuY2VzdG9yT3duZXIgPSBhbmNlc3Rvckluc3RhbmNlICYmIGFuY2VzdG9ySW5zdGFu
Y2UuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcblx0XG5cdCAgICAgIHZhciBjaGlsZE93bmVycyA9
IGZpbmRPd25lclN0YWNrKGNoaWxkT3duZXIpO1xuXHQgICAgICB2YXIgYW5jZXN0b3JPd25lcnMg
PSBmaW5kT3duZXJTdGFjayhhbmNlc3Rvck93bmVyKTtcblx0XG5cdCAgICAgIHZhciBtaW5TdGFj
a0xlbiA9IE1hdGgubWluKGNoaWxkT3duZXJzLmxlbmd0aCwgYW5jZXN0b3JPd25lcnMubGVuZ3Ro
KTtcblx0ICAgICAgdmFyIGk7XG5cdFxuXHQgICAgICB2YXIgZGVlcGVzdENvbW1vbiA9IC0xO1xu
XHQgICAgICBmb3IgKGkgPSAwOyBpIDwgbWluU3RhY2tMZW47IGkrKykge1xuXHQgICAgICAgIGlm
IChjaGlsZE93bmVyc1tpXSA9PT0gYW5jZXN0b3JPd25lcnNbaV0pIHtcblx0ICAgICAgICAgIGRl
ZXBlc3RDb21tb24gPSBpO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICBicmVhaztc
blx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHZhciBVTktOT1dOID0gJyh1bmtu
b3duKSc7XG5cdCAgICAgIHZhciBjaGlsZE93bmVyTmFtZXMgPSBjaGlsZE93bmVycy5zbGljZShk
ZWVwZXN0Q29tbW9uICsgMSkubWFwKGZ1bmN0aW9uIChpbnN0KSB7XG5cdCAgICAgICAgcmV0dXJu
IGluc3QuZ2V0TmFtZSgpIHx8IFVOS05PV047XG5cdCAgICAgIH0pO1xuXHQgICAgICB2YXIgYW5j
ZXN0b3JPd25lck5hbWVzID0gYW5jZXN0b3JPd25lcnMuc2xpY2UoZGVlcGVzdENvbW1vbiArIDEp
Lm1hcChmdW5jdGlvbiAoaW5zdCkge1xuXHQgICAgICAgIHJldHVybiBpbnN0LmdldE5hbWUoKSB8
fCBVTktOT1dOO1xuXHQgICAgICB9KTtcblx0ICAgICAgdmFyIG93bmVySW5mbyA9IFtdLmNvbmNh
dChcblx0ICAgICAgLy8gSWYgdGhlIHBhcmVudCBhbmQgY2hpbGQgaW5zdGFuY2VzIGhhdmUgYSBj
b21tb24gb3duZXIgYW5jZXN0b3IsIHN0YXJ0XG5cdCAgICAgIC8vIHdpdGggdGhhdCAtLSBvdGhl
cndpc2Ugd2UganVzdCBzdGFydCB3aXRoIHRoZSBwYXJlbnQncyBvd25lcnMuXG5cdCAgICAgIGRl
ZXBlc3RDb21tb24gIT09IC0xID8gY2hpbGRPd25lcnNbZGVlcGVzdENvbW1vbl0uZ2V0TmFtZSgp
IHx8IFVOS05PV04gOiBbXSwgYW5jZXN0b3JPd25lck5hbWVzLCBhbmNlc3RvclRhZyxcblx0ICAg
ICAgLy8gSWYgd2UncmUgd2FybmluZyBhYm91dCBhbiBpbnZhbGlkIChub24tcGFyZW50KSBhbmNl
c3RyeSwgYWRkICcuLi4nXG5cdCAgICAgIGludmFsaWRBbmNlc3RvciA/IFsnLi4uJ10gOiBbXSwg
Y2hpbGRPd25lck5hbWVzLCBjaGlsZFRhZykuam9pbignID4gJyk7XG5cdFxuXHQgICAgICB2YXIg
d2FybktleSA9ICEhaW52YWxpZFBhcmVudCArICd8JyArIGNoaWxkVGFnICsgJ3wnICsgYW5jZXN0
b3JUYWcgKyAnfCcgKyBvd25lckluZm87XG5cdCAgICAgIGlmIChkaWRXYXJuW3dhcm5LZXldKSB7
XG5cdCAgICAgICAgcmV0dXJuO1xuXHQgICAgICB9XG5cdCAgICAgIGRpZFdhcm5bd2FybktleV0g
PSB0cnVlO1xuXHRcblx0ICAgICAgdmFyIHRhZ0Rpc3BsYXlOYW1lID0gY2hpbGRUYWc7XG5cdCAg
ICAgIHZhciB3aGl0ZXNwYWNlSW5mbyA9ICcnO1xuXHQgICAgICBpZiAoY2hpbGRUYWcgPT09ICcj
dGV4dCcpIHtcblx0ICAgICAgICBpZiAoL1xcUy8udGVzdChjaGlsZFRleHQpKSB7XG5cdCAgICAg
ICAgICB0YWdEaXNwbGF5TmFtZSA9ICdUZXh0IG5vZGVzJztcblx0ICAgICAgICB9IGVsc2Uge1xu
XHQgICAgICAgICAgdGFnRGlzcGxheU5hbWUgPSAnV2hpdGVzcGFjZSB0ZXh0IG5vZGVzJztcblx0
ICAgICAgICAgIHdoaXRlc3BhY2VJbmZvID0gXCIgTWFrZSBzdXJlIHlvdSBkb24ndCBoYXZlIGFu
eSBleHRyYSB3aGl0ZXNwYWNlIGJldHdlZW4gdGFncyBvbiBcIiArICdlYWNoIGxpbmUgb2YgeW91
ciBzb3VyY2UgY29kZS4nO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAg
ICB0YWdEaXNwbGF5TmFtZSA9ICc8JyArIGNoaWxkVGFnICsgJz4nO1xuXHQgICAgICB9XG5cdFxu
XHQgICAgICBpZiAoaW52YWxpZFBhcmVudCkge1xuXHQgICAgICAgIHZhciBpbmZvID0gJyc7XG5c
dCAgICAgICAgaWYgKGFuY2VzdG9yVGFnID09PSAndGFibGUnICYmIGNoaWxkVGFnID09PSAndHIn
KSB7XG5cdCAgICAgICAgICBpbmZvICs9ICcgQWRkIGEgPHRib2R5PiB0byB5b3VyIGNvZGUgdG8g
bWF0Y2ggdGhlIERPTSB0cmVlIGdlbmVyYXRlZCBieSAnICsgJ3RoZSBicm93c2VyLic7XG5cdCAg
ICAgICAgfVxuXHQgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKGZhbHNlLCAndmFsaWRhdGVET01OZXN0aW5nKC4uLik6ICVzIGNhbm5vdCBhcHBl
YXIgYXMgYSBjaGlsZCBvZiA8JXM+LiVzICcgKyAnU2VlICVzLiVzJywgdGFnRGlzcGxheU5hbWUs
IGFuY2VzdG9yVGFnLCB3aGl0ZXNwYWNlSW5mbywgb3duZXJJbmZvLCBpbmZvKSA6IHZvaWQgMDtc
blx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ3ZhbGlkYXRlRE9NTmVzdGluZyguLi4pOiAlcyBj
YW5ub3QgYXBwZWFyIGFzIGEgZGVzY2VuZGFudCBvZiAnICsgJzwlcz4uIFNlZSAlcy4nLCB0YWdE
aXNwbGF5TmFtZSwgYW5jZXN0b3JUYWcsIG93bmVySW5mbykgOiB2b2lkIDA7XG5cdCAgICAgIH1c
blx0ICAgIH1cblx0ICB9O1xuXHRcblx0ICB2YWxpZGF0ZURPTU5lc3RpbmcudXBkYXRlZEFuY2Vz
dG9ySW5mbyA9IHVwZGF0ZWRBbmNlc3RvckluZm87XG5cdFxuXHQgIC8vIEZvciB0ZXN0aW5nXG5c
dCAgdmFsaWRhdGVET01OZXN0aW5nLmlzVGFnVmFsaWRJbkNvbnRleHQgPSBmdW5jdGlvbiAodGFn
LCBhbmNlc3RvckluZm8pIHtcblx0ICAgIGFuY2VzdG9ySW5mbyA9IGFuY2VzdG9ySW5mbyB8fCBl
bXB0eUFuY2VzdG9ySW5mbztcblx0ICAgIHZhciBwYXJlbnRJbmZvID0gYW5jZXN0b3JJbmZvLmN1
cnJlbnQ7XG5cdCAgICB2YXIgcGFyZW50VGFnID0gcGFyZW50SW5mbyAmJiBwYXJlbnRJbmZvLnRh
Zztcblx0ICAgIHJldHVybiBpc1RhZ1ZhbGlkV2l0aFBhcmVudCh0YWcsIHBhcmVudFRhZykgJiYg
IWZpbmRJbnZhbGlkQW5jZXN0b3JGb3JUYWcodGFnLCBhbmNlc3RvckluZm8pO1xuXHQgIH07XG5c
dH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gdmFsaWRhdGVET01OZXN0aW5nO1xuXG4vKioqLyB9
LFxuLyogNTAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdCd1c2Ug
c3RyaWN0Jztcblx0XG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cdGV4cG9ydHMuZGVm
YXVsdCA9IHdhcm5pbmc7XG5cdC8qKlxuXHQgKiBQcmludHMgYSB3YXJuaW5nIGluIHRoZSBjb25z
b2xlIGlmIGl0IGV4aXN0cy5cblx0ICpcblx0ICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2UgVGhl
IHdhcm5pbmcgbWVzc2FnZS5cblx0ICogQHJldHVybnMge3ZvaWR9XG5cdCAqL1xuXHRmdW5jdGlv
biB3YXJuaW5nKG1lc3NhZ2UpIHtcblx0ICAvKiBlc2xpbnQtZGlzYWJsZSBuby1jb25zb2xlICov
XG5cdCAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgY29uc29s
ZS5lcnJvciA9PT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgY29uc29sZS5lcnJvcihtZXNzYWdlKTtc
blx0ICB9XG5cdCAgLyogZXNsaW50LWVuYWJsZSBuby1jb25zb2xlICovXG5cdCAgdHJ5IHtcblx0
ICAgIC8vIFRoaXMgZXJyb3Igd2FzIHRocm93biBhcyBhIGNvbnZlbmllbmNlIHNvIHRoYXQgaWYg
eW91IGVuYWJsZVxuXHQgICAgLy8gXCJicmVhayBvbiBhbGwgZXhjZXB0aW9uc1wiIGluIHlvdXIg
Y29uc29sZSxcblx0ICAgIC8vIGl0IHdvdWxkIHBhdXNlIHRoZSBleGVjdXRpb24gYXQgdGhpcyBs
aW5lLlxuXHQgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuXHQgICAgLyogZXNsaW50LWRp
c2FibGUgbm8tZW1wdHkgKi9cblx0ICB9IGNhdGNoIChlKSB7fVxuXHQgIC8qIGVzbGludC1lbmFi
bGUgbm8tZW1wdHkgKi9cblx0fVxuXG4vKioqLyB9LFxuLyogNTEgKi9cbi8qKiovIGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0
Jztcblx0XG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
XG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0
ICogQHR5cGVjaGVja3Ncblx0ICovXG5cdFxuXHR2YXIgZW1wdHlGdW5jdGlvbiA9IF9fd2VicGFj
a19yZXF1aXJlX18oNyk7XG5cdFxuXHQvKipcblx0ICogVXBzdHJlYW0gdmVyc2lvbiBvZiBldmVu
dCBsaXN0ZW5lci4gRG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgc3BlY2lmaWNcblx0ICogbmF0
dXJlIG9mIHBsYXRmb3JtLlxuXHQgKi9cblx0dmFyIEV2ZW50TGlzdGVuZXIgPSB7XG5cdCAgLyoq
XG5cdCAgICogTGlzdGVuIHRvIERPTSBldmVudHMgZHVyaW5nIHRoZSBidWJibGUgcGhhc2UuXG5c
dCAgICpcblx0ICAgKiBAcGFyYW0ge0RPTUV2ZW50VGFyZ2V0fSB0YXJnZXQgRE9NIGVsZW1lbnQg
dG8gcmVnaXN0ZXIgbGlzdGVuZXIgb24uXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IGV2ZW50VHlw
ZSBFdmVudCB0eXBlLCBlLmcuICdjbGljaycgb3IgJ21vdXNlb3ZlcicuXG5cdCAgICogQHBhcmFt
IHtmdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGJhY2sgZnVuY3Rpb24uXG5cdCAgICogQHJldHVybiB7
b2JqZWN0fSBPYmplY3Qgd2l0aCBhIGByZW1vdmVgIG1ldGhvZC5cblx0ICAgKi9cblx0ICBsaXN0
ZW46IGZ1bmN0aW9uIGxpc3Rlbih0YXJnZXQsIGV2ZW50VHlwZSwgY2FsbGJhY2spIHtcblx0ICAg
IGlmICh0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcikge1xuXHQgICAgICB0YXJnZXQuYWRkRXZlbnRM
aXN0ZW5lcihldmVudFR5cGUsIGNhbGxiYWNrLCBmYWxzZSk7XG5cdCAgICAgIHJldHVybiB7XG5c
dCAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7XG5cdCAgICAgICAgICB0YXJnZXQu
cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGNhbGxiYWNrLCBmYWxzZSk7XG5cdCAgICAg
ICAgfVxuXHQgICAgICB9O1xuXHQgICAgfSBlbHNlIGlmICh0YXJnZXQuYXR0YWNoRXZlbnQpIHtc
blx0ICAgICAgdGFyZ2V0LmF0dGFjaEV2ZW50KCdvbicgKyBldmVudFR5cGUsIGNhbGxiYWNrKTtc
blx0ICAgICAgcmV0dXJuIHtcblx0ICAgICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHtc
blx0ICAgICAgICAgIHRhcmdldC5kZXRhY2hFdmVudCgnb24nICsgZXZlbnRUeXBlLCBjYWxsYmFj
ayk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9O1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIC8q
KlxuXHQgICAqIExpc3RlbiB0byBET00gZXZlbnRzIGR1cmluZyB0aGUgY2FwdHVyZSBwaGFzZS5c
blx0ICAgKlxuXHQgICAqIEBwYXJhbSB7RE9NRXZlbnRUYXJnZXR9IHRhcmdldCBET00gZWxlbWVu
dCB0byByZWdpc3RlciBsaXN0ZW5lciBvbi5cblx0ICAgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnRU
eXBlIEV2ZW50IHR5cGUsIGUuZy4gJ2NsaWNrJyBvciAnbW91c2VvdmVyJy5cblx0ICAgKiBAcGFy
YW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsYmFjayBmdW5jdGlvbi5cblx0ICAgKiBAcmV0dXJu
IHtvYmplY3R9IE9iamVjdCB3aXRoIGEgYHJlbW92ZWAgbWV0aG9kLlxuXHQgICAqL1xuXHQgIGNh
cHR1cmU6IGZ1bmN0aW9uIGNhcHR1cmUodGFyZ2V0LCBldmVudFR5cGUsIGNhbGxiYWNrKSB7XG5c
dCAgICBpZiAodGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIpIHtcblx0ICAgICAgdGFyZ2V0LmFkZEV2
ZW50TGlzdGVuZXIoZXZlbnRUeXBlLCBjYWxsYmFjaywgdHJ1ZSk7XG5cdCAgICAgIHJldHVybiB7
XG5cdCAgICAgICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7XG5cdCAgICAgICAgICB0YXJn
ZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGNhbGxiYWNrLCB0cnVlKTtcblx0ICAg
ICAgICB9XG5cdCAgICAgIH07XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBpZiAoZmFsc2UpIHtc
blx0ICAgICAgICBjb25zb2xlLmVycm9yKCdBdHRlbXB0ZWQgdG8gbGlzdGVuIHRvIGV2ZW50cyBk
dXJpbmcgdGhlIGNhcHR1cmUgcGhhc2Ugb24gYSAnICsgJ2Jyb3dzZXIgdGhhdCBkb2VzIG5vdCBz
dXBwb3J0IHRoZSBjYXB0dXJlIHBoYXNlLiBZb3VyIGFwcGxpY2F0aW9uICcgKyAnd2lsbCBub3Qg
cmVjZWl2ZSBzb21lIGV2ZW50cy4nKTtcblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4ge1xuXHQg
ICAgICAgIHJlbW92ZTogZW1wdHlGdW5jdGlvblxuXHQgICAgICB9O1xuXHQgICAgfVxuXHQgIH0s
XG5cdFxuXHQgIHJlZ2lzdGVyRGVmYXVsdDogZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0KCkge31c
blx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gRXZlbnRMaXN0ZW5lcjtcblxuLyoqKi8gfSxc
bi8qIDUyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0
ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBz
dHJpY3QnO1xuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZSBpbnB1dC90
ZXh0YXJlYSB0byBmb2N1c1xuXHQgKi9cblx0XG5cdGZ1bmN0aW9uIGZvY3VzTm9kZShub2RlKSB7
XG5cdCAgLy8gSUU4IGNhbiB0aHJvdyBcIkNhbid0IG1vdmUgZm9jdXMgdG8gdGhlIGNvbnRyb2wg
YmVjYXVzZSBpdCBpcyBpbnZpc2libGUsXG5cdCAgLy8gbm90IGVuYWJsZWQsIG9yIG9mIGEgdHlw
ZSB0aGF0IGRvZXMgbm90IGFjY2VwdCB0aGUgZm9jdXMuXCIgZm9yIGFsbCBraW5kcyBvZlxuXHQg
IC8vIHJlYXNvbnMgdGhhdCBhcmUgdG9vIGV4cGVuc2l2ZSBhbmQgZnJhZ2lsZSB0byB0ZXN0Llxu
XHQgIHRyeSB7XG5cdCAgICBub2RlLmZvY3VzKCk7XG5cdCAgfSBjYXRjaCAoZSkge31cblx0fVxu
XHRcblx0bW9kdWxlLmV4cG9ydHMgPSBmb2N1c05vZGU7XG5cbi8qKiovIH0sXG4vKiA1MyAqL1xu
LyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRc
blx0LyoqXG5cdCAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
XHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBAdHlw
ZWNoZWNrc1xuXHQgKi9cblx0XG5cdC8qIGVzbGludC1kaXNhYmxlIGZiLXd3dy90eXBlb2YtdW5k
ZWZpbmVkICovXG5cdFxuXHQvKipcblx0ICogU2FtZSBhcyBkb2N1bWVudC5hY3RpdmVFbGVtZW50
IGJ1dCB3cmFwcyBpbiBhIHRyeS1jYXRjaCBibG9jay4gSW4gSUUgaXQgaXNcblx0ICogbm90IHNh
ZmUgdG8gY2FsbCBkb2N1bWVudC5hY3RpdmVFbGVtZW50IGlmIHRoZXJlIGlzIG5vdGhpbmcgZm9j
dXNlZC5cblx0ICpcblx0ICogVGhlIGFjdGl2ZUVsZW1lbnQgd2lsbCBiZSBudWxsIG9ubHkgaWYg
dGhlIGRvY3VtZW50IG9yIGRvY3VtZW50IGJvZHkgaXMgbm90XG5cdCAqIHlldCBkZWZpbmVkLlxu
XHQgKlxuXHQgKiBAcGFyYW0gez9ET01Eb2N1bWVudH0gZG9jIERlZmF1bHRzIHRvIGN1cnJlbnQg
ZG9jdW1lbnQuXG5cdCAqIEByZXR1cm4gez9ET01FbGVtZW50fVxuXHQgKi9cblx0ZnVuY3Rpb24g
Z2V0QWN0aXZlRWxlbWVudChkb2MpIC8qP0RPTUVsZW1lbnQqL3tcblx0ICBkb2MgPSBkb2MgfHwg
KHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgPyBkb2N1bWVudCA6IHVuZGVmaW5lZCk7
XG5cdCAgaWYgKHR5cGVvZiBkb2MgPT09ICd1bmRlZmluZWQnKSB7XG5cdCAgICByZXR1cm4gbnVs
bDtcblx0ICB9XG5cdCAgdHJ5IHtcblx0ICAgIHJldHVybiBkb2MuYWN0aXZlRWxlbWVudCB8fCBk
b2MuYm9keTtcblx0ICB9IGNhdGNoIChlKSB7XG5cdCAgICByZXR1cm4gZG9jLmJvZHk7XG5cdCAg
fVxuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGdldEFjdGl2ZUVsZW1lbnQ7XG5cbi8qKiov
IH0sXG4vKiA1NCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7XG5cblx0dmFyIHJvb3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExOCk7XG5c
dFxuXHQvKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cblx0dmFyIFN5bWJvbCA9IHJv
b3QuU3ltYm9sO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBTeW1ib2w7XG5cblxuLyoqKi8gfSxc
bi8qIDU1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1
aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
XG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICovXG5c
dFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQvLyBSZWFjdCAxNS41IHJlZmVyZW5jZXMgdGhpcyBt
b2R1bGUsIGFuZCBhc3N1bWVzIFByb3BUeXBlcyBhcmUgc3RpbGwgY2FsbGFibGUgaW4gcHJvZHVj
dGlvbi5cblx0Ly8gVGhlcmVmb3JlIHdlIHJlLWV4cG9ydCBkZXZlbG9wbWVudC1vbmx5IHZlcnNp
b24gd2l0aCBhbGwgdGhlIFByb3BUeXBlcyBjaGVja3MgaGVyZS5cblx0Ly8gSG93ZXZlciBpZiBv
bmUgaXMgbWlncmF0aW5nIHRvIHRoZSBgcHJvcC10eXBlc2AgbnBtIGxpYnJhcnksIHRoZXkgd2ls
bCBnbyB0aHJvdWdoIHRoZVxuXHQvLyBgaW5kZXguanNgIGVudHJ5IHBvaW50LCBhbmQgaXQgd2ls
bCBicmFuY2ggZGVwZW5kaW5nIG9uIHRoZSBlbnZpcm9ubWVudC5cblx0dmFyIGZhY3RvcnkgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDEyMik7XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oaXNW
YWxpZEVsZW1lbnQpIHtcblx0ICAvLyBJdCBpcyBzdGlsbCBhbGxvd2VkIGluIDE1LjUuXG5cdCAg
dmFyIHRocm93T25EaXJlY3RBY2Nlc3MgPSBmYWxzZTtcblx0ICByZXR1cm4gZmFjdG9yeShpc1Zh
bGlkRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG5cdH07XG5cblxuLyoqKi8gfSxcbi8q
IDU2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJl
X18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5c
dCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICovXG5cdFxu
XHRpZiAoZmFsc2UpIHtcblx0ICB2YXIgUkVBQ1RfRUxFTUVOVF9UWVBFID0gKHR5cGVvZiBTeW1i
b2wgPT09ICdmdW5jdGlvbicgJiZcblx0ICAgIFN5bWJvbC5mb3IgJiZcblx0ICAgIFN5bWJvbC5m
b3IoJ3JlYWN0LmVsZW1lbnQnKSkgfHxcblx0ICAgIDB4ZWFjNztcblx0XG5cdCAgdmFyIGlzVmFs
aWRFbGVtZW50ID0gZnVuY3Rpb24ob2JqZWN0KSB7XG5cdCAgICByZXR1cm4gdHlwZW9mIG9iamVj
dCA9PT0gJ29iamVjdCcgJiZcblx0ICAgICAgb2JqZWN0ICE9PSBudWxsICYmXG5cdCAgICAgIG9i
amVjdC4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFO1xuXHQgIH07XG5cdFxuXHQgIC8v
IEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3
IGRldmVsb3BtZW50IGJlaGF2aW9yLlxuXHQgIC8vIGh0dHA6Ly9mYi5tZS9wcm9wLXR5cGVzLWlu
LXByb2Rcblx0ICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IHRydWU7XG5cdCAgbW9kdWxlLmV4
cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzJykoaXNWYWxpZEVsZW1l
bnQsIHRocm93T25EaXJlY3RBY2Nlc3MpO1xuXHR9IGVsc2Uge1xuXHQgIC8vIEJ5IGV4cGxpY2l0
bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IHByb2R1Y3Rpb24g
YmVoYXZpb3IuXG5cdCAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuXHQgIG1v
ZHVsZS5leHBvcnRzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMjEpKCk7XG5cdH1cblxuXG4vKioq
LyB9LFxuLyogNTcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8q
KlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0
Jztcblx0XG5cdHZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1Nf
VEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0
UHJvcFR5cGVzU2VjcmV0O1xuXG5cbi8qKiovIH0sXG4vKiA1OCAqL1xuLyoqKi8gZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0LyoqXG5cdCAqIENTUyBw
cm9wZXJ0aWVzIHdoaWNoIGFjY2VwdCBudW1iZXJzIGJ1dCBhcmUgbm90IGluIHVuaXRzIG9mIFwi
cHhcIi5cblx0ICovXG5cdFxuXHR2YXIgaXNVbml0bGVzc051bWJlciA9IHtcblx0ICBhbmltYXRp
b25JdGVyYXRpb25Db3VudDogdHJ1ZSxcblx0ICBib3JkZXJJbWFnZU91dHNldDogdHJ1ZSxcblx0
ICBib3JkZXJJbWFnZVNsaWNlOiB0cnVlLFxuXHQgIGJvcmRlckltYWdlV2lkdGg6IHRydWUsXG5c
dCAgYm94RmxleDogdHJ1ZSxcblx0ICBib3hGbGV4R3JvdXA6IHRydWUsXG5cdCAgYm94T3JkaW5h
bEdyb3VwOiB0cnVlLFxuXHQgIGNvbHVtbkNvdW50OiB0cnVlLFxuXHQgIGZsZXg6IHRydWUsXG5c
dCAgZmxleEdyb3c6IHRydWUsXG5cdCAgZmxleFBvc2l0aXZlOiB0cnVlLFxuXHQgIGZsZXhTaHJp
bms6IHRydWUsXG5cdCAgZmxleE5lZ2F0aXZlOiB0cnVlLFxuXHQgIGZsZXhPcmRlcjogdHJ1ZSxc
blx0ICBncmlkUm93OiB0cnVlLFxuXHQgIGdyaWRSb3dFbmQ6IHRydWUsXG5cdCAgZ3JpZFJvd1Nw
YW46IHRydWUsXG5cdCAgZ3JpZFJvd1N0YXJ0OiB0cnVlLFxuXHQgIGdyaWRDb2x1bW46IHRydWUs
XG5cdCAgZ3JpZENvbHVtbkVuZDogdHJ1ZSxcblx0ICBncmlkQ29sdW1uU3BhbjogdHJ1ZSxcblx0
ICBncmlkQ29sdW1uU3RhcnQ6IHRydWUsXG5cdCAgZm9udFdlaWdodDogdHJ1ZSxcblx0ICBsaW5l
Q2xhbXA6IHRydWUsXG5cdCAgbGluZUhlaWdodDogdHJ1ZSxcblx0ICBvcGFjaXR5OiB0cnVlLFxu
XHQgIG9yZGVyOiB0cnVlLFxuXHQgIG9ycGhhbnM6IHRydWUsXG5cdCAgdGFiU2l6ZTogdHJ1ZSxc
blx0ICB3aWRvd3M6IHRydWUsXG5cdCAgekluZGV4OiB0cnVlLFxuXHQgIHpvb206IHRydWUsXG5c
dFxuXHQgIC8vIFNWRy1yZWxhdGVkIHByb3BlcnRpZXNcblx0ICBmaWxsT3BhY2l0eTogdHJ1ZSxc
blx0ICBmbG9vZE9wYWNpdHk6IHRydWUsXG5cdCAgc3RvcE9wYWNpdHk6IHRydWUsXG5cdCAgc3Ry
b2tlRGFzaGFycmF5OiB0cnVlLFxuXHQgIHN0cm9rZURhc2hvZmZzZXQ6IHRydWUsXG5cdCAgc3Ry
b2tlTWl0ZXJsaW1pdDogdHJ1ZSxcblx0ICBzdHJva2VPcGFjaXR5OiB0cnVlLFxuXHQgIHN0cm9r
ZVdpZHRoOiB0cnVlXG5cdH07XG5cdFxuXHQvKipcblx0ICogQHBhcmFtIHtzdHJpbmd9IHByZWZp
eCB2ZW5kb3Itc3BlY2lmaWMgcHJlZml4LCBlZzogV2Via2l0XG5cdCAqIEBwYXJhbSB7c3RyaW5n
fSBrZXkgc3R5bGUgbmFtZSwgZWc6IHRyYW5zaXRpb25EdXJhdGlvblxuXHQgKiBAcmV0dXJuIHtz
dHJpbmd9IHN0eWxlIG5hbWUgcHJlZml4ZWQgd2l0aCBgcHJlZml4YCwgcHJvcGVybHkgY2FtZWxD
YXNlZCwgZWc6XG5cdCAqIFdlYmtpdFRyYW5zaXRpb25EdXJhdGlvblxuXHQgKi9cblx0ZnVuY3Rp
b24gcHJlZml4S2V5KHByZWZpeCwga2V5KSB7XG5cdCAgcmV0dXJuIHByZWZpeCArIGtleS5jaGFy
QXQoMCkudG9VcHBlckNhc2UoKSArIGtleS5zdWJzdHJpbmcoMSk7XG5cdH1cblx0XG5cdC8qKlxu
XHQgKiBTdXBwb3J0IHN0eWxlIG5hbWVzIHRoYXQgbWF5IGNvbWUgcGFzc2VkIGluIHByZWZpeGVk
IGJ5IGFkZGluZyBwZXJtdXRhdGlvbnNcblx0ICogb2YgdmVuZG9yIHByZWZpeGVzLlxuXHQgKi9c
blx0dmFyIHByZWZpeGVzID0gWydXZWJraXQnLCAnbXMnLCAnTW96JywgJ08nXTtcblx0XG5cdC8v
IFVzaW5nIE9iamVjdC5rZXlzIGhlcmUsIG9yIGVsc2UgdGhlIHZhbmlsbGEgZm9yLWluIGxvb3Ag
bWFrZXMgSUU4IGdvIGludG8gYW5cblx0Ly8gaW5maW5pdGUgbG9vcCwgYmVjYXVzZSBpdCBpdGVy
YXRlcyBvdmVyIHRoZSBuZXdseSBhZGRlZCBwcm9wcyB0b28uXG5cdE9iamVjdC5rZXlzKGlzVW5p
dGxlc3NOdW1iZXIpLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcblx0ICBwcmVmaXhlcy5mb3JF
YWNoKGZ1bmN0aW9uIChwcmVmaXgpIHtcblx0ICAgIGlzVW5pdGxlc3NOdW1iZXJbcHJlZml4S2V5
KHByZWZpeCwgcHJvcCldID0gaXNVbml0bGVzc051bWJlcltwcm9wXTtcblx0ICB9KTtcblx0fSk7
XG5cdFxuXHQvKipcblx0ICogTW9zdCBzdHlsZSBwcm9wZXJ0aWVzIGNhbiBiZSB1bnNldCBieSBk
b2luZyAuc3R5bGVbcHJvcF0gPSAnJyBidXQgSUU4XG5cdCAqIGRvZXNuJ3QgbGlrZSBkb2luZyB0
aGF0IHdpdGggc2hvcnRoYW5kIHByb3BlcnRpZXMgc28gZm9yIHRoZSBwcm9wZXJ0aWVzIHRoYXRc
blx0ICogSUU4IGJyZWFrcyBvbiwgd2hpY2ggYXJlIGxpc3RlZCBoZXJlLCB3ZSBpbnN0ZWFkIHVu
c2V0IGVhY2ggb2YgdGhlXG5cdCAqIGluZGl2aWR1YWwgcHJvcGVydGllcy4gU2VlIGh0dHA6Ly9i
dWdzLmpxdWVyeS5jb20vdGlja2V0LzEyMzg1LlxuXHQgKiBUaGUgNC12YWx1ZSAnY2xvY2snIHBy
b3BlcnRpZXMgbGlrZSBtYXJnaW4sIHBhZGRpbmcsIGJvcmRlci13aWR0aCBzZWVtIHRvXG5cdCAq
IGJlaGF2ZSB3aXRob3V0IGFueSBwcm9ibGVtcy4gQ3VyaW91c2x5LCBsaXN0LXN0eWxlIHdvcmtz
IHRvbyB3aXRob3V0IGFueVxuXHQgKiBzcGVjaWFsIHByb2RkaW5nLlxuXHQgKi9cblx0dmFyIHNo
b3J0aGFuZFByb3BlcnR5RXhwYW5zaW9ucyA9IHtcblx0ICBiYWNrZ3JvdW5kOiB7XG5cdCAgICBi
YWNrZ3JvdW5kQXR0YWNobWVudDogdHJ1ZSxcblx0ICAgIGJhY2tncm91bmRDb2xvcjogdHJ1ZSxc
blx0ICAgIGJhY2tncm91bmRJbWFnZTogdHJ1ZSxcblx0ICAgIGJhY2tncm91bmRQb3NpdGlvblg6
IHRydWUsXG5cdCAgICBiYWNrZ3JvdW5kUG9zaXRpb25ZOiB0cnVlLFxuXHQgICAgYmFja2dyb3Vu
ZFJlcGVhdDogdHJ1ZVxuXHQgIH0sXG5cdCAgYmFja2dyb3VuZFBvc2l0aW9uOiB7XG5cdCAgICBi
YWNrZ3JvdW5kUG9zaXRpb25YOiB0cnVlLFxuXHQgICAgYmFja2dyb3VuZFBvc2l0aW9uWTogdHJ1
ZVxuXHQgIH0sXG5cdCAgYm9yZGVyOiB7XG5cdCAgICBib3JkZXJXaWR0aDogdHJ1ZSxcblx0ICAg
IGJvcmRlclN0eWxlOiB0cnVlLFxuXHQgICAgYm9yZGVyQ29sb3I6IHRydWVcblx0ICB9LFxuXHQg
IGJvcmRlckJvdHRvbToge1xuXHQgICAgYm9yZGVyQm90dG9tV2lkdGg6IHRydWUsXG5cdCAgICBi
b3JkZXJCb3R0b21TdHlsZTogdHJ1ZSxcblx0ICAgIGJvcmRlckJvdHRvbUNvbG9yOiB0cnVlXG5c
dCAgfSxcblx0ICBib3JkZXJMZWZ0OiB7XG5cdCAgICBib3JkZXJMZWZ0V2lkdGg6IHRydWUsXG5c
dCAgICBib3JkZXJMZWZ0U3R5bGU6IHRydWUsXG5cdCAgICBib3JkZXJMZWZ0Q29sb3I6IHRydWVc
blx0ICB9LFxuXHQgIGJvcmRlclJpZ2h0OiB7XG5cdCAgICBib3JkZXJSaWdodFdpZHRoOiB0cnVl
LFxuXHQgICAgYm9yZGVyUmlnaHRTdHlsZTogdHJ1ZSxcblx0ICAgIGJvcmRlclJpZ2h0Q29sb3I6
IHRydWVcblx0ICB9LFxuXHQgIGJvcmRlclRvcDoge1xuXHQgICAgYm9yZGVyVG9wV2lkdGg6IHRy
dWUsXG5cdCAgICBib3JkZXJUb3BTdHlsZTogdHJ1ZSxcblx0ICAgIGJvcmRlclRvcENvbG9yOiB0
cnVlXG5cdCAgfSxcblx0ICBmb250OiB7XG5cdCAgICBmb250U3R5bGU6IHRydWUsXG5cdCAgICBm
b250VmFyaWFudDogdHJ1ZSxcblx0ICAgIGZvbnRXZWlnaHQ6IHRydWUsXG5cdCAgICBmb250U2l6
ZTogdHJ1ZSxcblx0ICAgIGxpbmVIZWlnaHQ6IHRydWUsXG5cdCAgICBmb250RmFtaWx5OiB0cnVl
XG5cdCAgfSxcblx0ICBvdXRsaW5lOiB7XG5cdCAgICBvdXRsaW5lV2lkdGg6IHRydWUsXG5cdCAg
ICBvdXRsaW5lU3R5bGU6IHRydWUsXG5cdCAgICBvdXRsaW5lQ29sb3I6IHRydWVcblx0ICB9XG5c
dH07XG5cdFxuXHR2YXIgQ1NTUHJvcGVydHkgPSB7XG5cdCAgaXNVbml0bGVzc051bWJlcjogaXNV
bml0bGVzc051bWJlcixcblx0ICBzaG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lvbnM6IHNob3J0aGFu
ZFByb3BlcnR5RXhwYW5zaW9uc1xuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBDU1NQcm9w
ZXJ0eTtcblxuLyoqKi8gfSxcbi8qIDU5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpc
blx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cblx0ICpcblx0ICogXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0
dmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblx0XG5cdGZ1bmN0
aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFu
Y2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5v
dCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cdFxuXHR2YXIgUG9vbGVkQ2xh
c3MgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKTtcblx0XG5cdHZhciBpbnZhcmlhbnQgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDEpO1xuXHRcblx0LyoqXG5cdCAqIEEgc3BlY2lhbGl6ZWQgcHNldWRv
LWV2ZW50IG1vZHVsZSB0byBoZWxwIGtlZXAgdHJhY2sgb2YgY29tcG9uZW50cyB3YWl0aW5nIHRv
XG5cdCAqIGJlIG5vdGlmaWVkIHdoZW4gdGhlaXIgRE9NIHJlcHJlc2VudGF0aW9ucyBhcmUgYXZh
aWxhYmxlIGZvciB1c2UuXG5cdCAqXG5cdCAqIFRoaXMgaW1wbGVtZW50cyBgUG9vbGVkQ2xhc3Ng
LCBzbyB5b3Ugc2hvdWxkIG5ldmVyIG5lZWQgdG8gaW5zdGFudGlhdGUgdGhpcy5cblx0ICogSW5z
dGVhZCwgdXNlIGBDYWxsYmFja1F1ZXVlLmdldFBvb2xlZCgpYC5cblx0ICpcblx0ICogQGNsYXNz
IFJlYWN0TW91bnRSZWFkeVxuXHQgKiBAaW1wbGVtZW50cyBQb29sZWRDbGFzc1xuXHQgKiBAaW50
ZXJuYWxcblx0ICovXG5cdFxuXHR2YXIgQ2FsbGJhY2tRdWV1ZSA9IGZ1bmN0aW9uICgpIHtcblx0
ICBmdW5jdGlvbiBDYWxsYmFja1F1ZXVlKGFyZykge1xuXHQgICAgX2NsYXNzQ2FsbENoZWNrKHRo
aXMsIENhbGxiYWNrUXVldWUpO1xuXHRcblx0ICAgIHRoaXMuX2NhbGxiYWNrcyA9IG51bGw7XG5c
dCAgICB0aGlzLl9jb250ZXh0cyA9IG51bGw7XG5cdCAgICB0aGlzLl9hcmcgPSBhcmc7XG5cdCAg
fVxuXHRcblx0ICAvKipcblx0ICAgKiBFbnF1ZXVlcyBhIGNhbGxiYWNrIHRvIGJlIGludm9rZWQg
d2hlbiBgbm90aWZ5QWxsYCBpcyBpbnZva2VkLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtmdW5j
dGlvbn0gY2FsbGJhY2sgSW52b2tlZCB3aGVuIGBub3RpZnlBbGxgIGlzIGludm9rZWQuXG5cdCAg
ICogQHBhcmFtIHs/b2JqZWN0fSBjb250ZXh0IENvbnRleHQgdG8gY2FsbCBgY2FsbGJhY2tgIHdp
dGguXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5cdFxuXHRcblx0ICBDYWxsYmFja1F1ZXVl
LnByb3RvdHlwZS5lbnF1ZXVlID0gZnVuY3Rpb24gZW5xdWV1ZShjYWxsYmFjaywgY29udGV4dCkg
e1xuXHQgICAgdGhpcy5fY2FsbGJhY2tzID0gdGhpcy5fY2FsbGJhY2tzIHx8IFtdO1xuXHQgICAg
dGhpcy5fY2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuXHQgICAgdGhpcy5fY29udGV4dHMgPSB0
aGlzLl9jb250ZXh0cyB8fCBbXTtcblx0ICAgIHRoaXMuX2NvbnRleHRzLnB1c2goY29udGV4dCk7
XG5cdCAgfTtcblx0XG5cdCAgLyoqXG5cdCAgICogSW52b2tlcyBhbGwgZW5xdWV1ZWQgY2FsbGJh
Y2tzIGFuZCBjbGVhcnMgdGhlIHF1ZXVlLiBUaGlzIGlzIGludm9rZWQgYWZ0ZXJcblx0ICAgKiB0
aGUgRE9NIHJlcHJlc2VudGF0aW9uIG9mIGEgY29tcG9uZW50IGhhcyBiZWVuIGNyZWF0ZWQgb3Ig
dXBkYXRlZC5cblx0ICAgKlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHRcblx0XG5cdCAg
Q2FsbGJhY2tRdWV1ZS5wcm90b3R5cGUubm90aWZ5QWxsID0gZnVuY3Rpb24gbm90aWZ5QWxsKCkg
e1xuXHQgICAgdmFyIGNhbGxiYWNrcyA9IHRoaXMuX2NhbGxiYWNrcztcblx0ICAgIHZhciBjb250
ZXh0cyA9IHRoaXMuX2NvbnRleHRzO1xuXHQgICAgdmFyIGFyZyA9IHRoaXMuX2FyZztcblx0ICAg
IGlmIChjYWxsYmFja3MgJiYgY29udGV4dHMpIHtcblx0ICAgICAgIShjYWxsYmFja3MubGVuZ3Ro
ID09PSBjb250ZXh0cy5sZW5ndGgpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnTWlzbWF0
Y2hlZCBsaXN0IG9mIGNvbnRleHRzIGluIGNhbGxiYWNrIHF1ZXVlJykgOiBfcHJvZEludmFyaWFu
dCgnMjQnKSA6IHZvaWQgMDtcblx0ICAgICAgdGhpcy5fY2FsbGJhY2tzID0gbnVsbDtcblx0ICAg
ICAgdGhpcy5fY29udGV4dHMgPSBudWxsO1xuXHQgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNh
bGxiYWNrcy5sZW5ndGg7IGkrKykge1xuXHQgICAgICAgIGNhbGxiYWNrc1tpXS5jYWxsKGNvbnRl
eHRzW2ldLCBhcmcpO1xuXHQgICAgICB9XG5cdCAgICAgIGNhbGxiYWNrcy5sZW5ndGggPSAwO1xu
XHQgICAgICBjb250ZXh0cy5sZW5ndGggPSAwO1xuXHQgICAgfVxuXHQgIH07XG5cdFxuXHQgIENh
bGxiYWNrUXVldWUucHJvdG90eXBlLmNoZWNrcG9pbnQgPSBmdW5jdGlvbiBjaGVja3BvaW50KCkg
e1xuXHQgICAgcmV0dXJuIHRoaXMuX2NhbGxiYWNrcyA/IHRoaXMuX2NhbGxiYWNrcy5sZW5ndGgg
OiAwO1xuXHQgIH07XG5cdFxuXHQgIENhbGxiYWNrUXVldWUucHJvdG90eXBlLnJvbGxiYWNrID0g
ZnVuY3Rpb24gcm9sbGJhY2sobGVuKSB7XG5cdCAgICBpZiAodGhpcy5fY2FsbGJhY2tzICYmIHRo
aXMuX2NvbnRleHRzKSB7XG5cdCAgICAgIHRoaXMuX2NhbGxiYWNrcy5sZW5ndGggPSBsZW47XG5c
dCAgICAgIHRoaXMuX2NvbnRleHRzLmxlbmd0aCA9IGxlbjtcblx0ICAgIH1cblx0ICB9O1xuXHRc
blx0ICAvKipcblx0ICAgKiBSZXNldHMgdGhlIGludGVybmFsIHF1ZXVlLlxuXHQgICAqXG5cdCAg
ICogQGludGVybmFsXG5cdCAgICovXG5cdFxuXHRcblx0ICBDYWxsYmFja1F1ZXVlLnByb3RvdHlw
ZS5yZXNldCA9IGZ1bmN0aW9uIHJlc2V0KCkge1xuXHQgICAgdGhpcy5fY2FsbGJhY2tzID0gbnVs
bDtcblx0ICAgIHRoaXMuX2NvbnRleHRzID0gbnVsbDtcblx0ICB9O1xuXHRcblx0ICAvKipcblx0
ICAgKiBgUG9vbGVkQ2xhc3NgIGxvb2tzIGZvciB0aGlzLlxuXHQgICAqL1xuXHRcblx0XG5cdCAg
Q2FsbGJhY2tRdWV1ZS5wcm90b3R5cGUuZGVzdHJ1Y3RvciA9IGZ1bmN0aW9uIGRlc3RydWN0b3Io
KSB7XG5cdCAgICB0aGlzLnJlc2V0KCk7XG5cdCAgfTtcblx0XG5cdCAgcmV0dXJuIENhbGxiYWNr
UXVldWU7XG5cdH0oKTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUG9vbGVkQ2xhc3MuYWRkUG9v
bGluZ1RvKENhbGxiYWNrUXVldWUpO1xuXG4vKioqLyB9LFxuLyogNjAgKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0
Jztcblx0XG5cdHZhciBET01Qcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJlX18oMTUpO1xuXHR2
YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblx0dmFy
IFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4KTtcblx0XG5cdHZh
ciBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3NlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTg1
KTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHRcblx0dmFyIFZB
TElEX0FUVFJJQlVURV9OQU1FX1JFR0VYID0gbmV3IFJlZ0V4cCgnXlsnICsgRE9NUHJvcGVydHku
QVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUiArICddWycgKyBET01Qcm9wZXJ0eS5BVFRSSUJVVEVf
TkFNRV9DSEFSICsgJ10qJCcpO1xuXHR2YXIgaWxsZWdhbEF0dHJpYnV0ZU5hbWVDYWNoZSA9IHt9
O1xuXHR2YXIgdmFsaWRhdGVkQXR0cmlidXRlTmFtZUNhY2hlID0ge307XG5cdFxuXHRmdW5jdGlv
biBpc0F0dHJpYnV0ZU5hbWVTYWZlKGF0dHJpYnV0ZU5hbWUpIHtcblx0ICBpZiAodmFsaWRhdGVk
QXR0cmlidXRlTmFtZUNhY2hlLmhhc093blByb3BlcnR5KGF0dHJpYnV0ZU5hbWUpKSB7XG5cdCAg
ICByZXR1cm4gdHJ1ZTtcblx0ICB9XG5cdCAgaWYgKGlsbGVnYWxBdHRyaWJ1dGVOYW1lQ2FjaGUu
aGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcblx0ICAgIHJldHVybiBmYWxzZTtcblx0
ICB9XG5cdCAgaWYgKFZBTElEX0FUVFJJQlVURV9OQU1FX1JFR0VYLnRlc3QoYXR0cmlidXRlTmFt
ZSkpIHtcblx0ICAgIHZhbGlkYXRlZEF0dHJpYnV0ZU5hbWVDYWNoZVthdHRyaWJ1dGVOYW1lXSA9
IHRydWU7XG5cdCAgICByZXR1cm4gdHJ1ZTtcblx0ICB9XG5cdCAgaWxsZWdhbEF0dHJpYnV0ZU5h
bWVDYWNoZVthdHRyaWJ1dGVOYW1lXSA9IHRydWU7XG5cdCAgIGZhbHNlID8gd2FybmluZyhmYWxz
ZSwgJ0ludmFsaWQgYXR0cmlidXRlIG5hbWU6IGAlc2AnLCBhdHRyaWJ1dGVOYW1lKSA6IHZvaWQg
MDtcblx0ICByZXR1cm4gZmFsc2U7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIHNob3VsZElnbm9yZVZh
bHVlKHByb3BlcnR5SW5mbywgdmFsdWUpIHtcblx0ICByZXR1cm4gdmFsdWUgPT0gbnVsbCB8fCBw
cm9wZXJ0eUluZm8uaGFzQm9vbGVhblZhbHVlICYmICF2YWx1ZSB8fCBwcm9wZXJ0eUluZm8uaGFz
TnVtZXJpY1ZhbHVlICYmIGlzTmFOKHZhbHVlKSB8fCBwcm9wZXJ0eUluZm8uaGFzUG9zaXRpdmVO
dW1lcmljVmFsdWUgJiYgdmFsdWUgPCAxIHx8IHByb3BlcnR5SW5mby5oYXNPdmVybG9hZGVkQm9v
bGVhblZhbHVlICYmIHZhbHVlID09PSBmYWxzZTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIE9wZXJh
dGlvbnMgZm9yIGRlYWxpbmcgd2l0aCBET00gcHJvcGVydGllcy5cblx0ICovXG5cdHZhciBET01Q
cm9wZXJ0eU9wZXJhdGlvbnMgPSB7XG5cdCAgLyoqXG5cdCAgICogQ3JlYXRlcyBtYXJrdXAgZm9y
IHRoZSBJRCBwcm9wZXJ0eS5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7c3RyaW5nfSBpZCBVbmVz
Y2FwZWQgSUQuXG5cdCAgICogQHJldHVybiB7c3RyaW5nfSBNYXJrdXAgc3RyaW5nLlxuXHQgICAq
L1xuXHQgIGNyZWF0ZU1hcmt1cEZvcklEOiBmdW5jdGlvbiAoaWQpIHtcblx0ICAgIHJldHVybiBE
T01Qcm9wZXJ0eS5JRF9BVFRSSUJVVEVfTkFNRSArICc9JyArIHF1b3RlQXR0cmlidXRlVmFsdWVG
b3JCcm93c2VyKGlkKTtcblx0ICB9LFxuXHRcblx0ICBzZXRBdHRyaWJ1dGVGb3JJRDogZnVuY3Rp
b24gKG5vZGUsIGlkKSB7XG5cdCAgICBub2RlLnNldEF0dHJpYnV0ZShET01Qcm9wZXJ0eS5JRF9B
VFRSSUJVVEVfTkFNRSwgaWQpO1xuXHQgIH0sXG5cdFxuXHQgIGNyZWF0ZU1hcmt1cEZvclJvb3Q6
IGZ1bmN0aW9uICgpIHtcblx0ICAgIHJldHVybiBET01Qcm9wZXJ0eS5ST09UX0FUVFJJQlVURV9O
QU1FICsgJz1cIlwiJztcblx0ICB9LFxuXHRcblx0ICBzZXRBdHRyaWJ1dGVGb3JSb290OiBmdW5j
dGlvbiAobm9kZSkge1xuXHQgICAgbm9kZS5zZXRBdHRyaWJ1dGUoRE9NUHJvcGVydHkuUk9PVF9B
VFRSSUJVVEVfTkFNRSwgJycpO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIENyZWF0ZXMg
bWFya3VwIGZvciBhIHByb3BlcnR5LlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IG5h
bWVcblx0ICAgKiBAcGFyYW0geyp9IHZhbHVlXG5cdCAgICogQHJldHVybiB7P3N0cmluZ30gTWFy
a3VwIHN0cmluZywgb3IgbnVsbCBpZiB0aGUgcHJvcGVydHkgd2FzIGludmFsaWQuXG5cdCAgICov
XG5cdCAgY3JlYXRlTWFya3VwRm9yUHJvcGVydHk6IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xu
XHQgICAgdmFyIHByb3BlcnR5SW5mbyA9IERPTVByb3BlcnR5LnByb3BlcnRpZXMuaGFzT3duUHJv
cGVydHkobmFtZSkgPyBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzW25hbWVdIDogbnVsbDtcblx0ICAg
IGlmIChwcm9wZXJ0eUluZm8pIHtcblx0ICAgICAgaWYgKHNob3VsZElnbm9yZVZhbHVlKHByb3Bl
cnR5SW5mbywgdmFsdWUpKSB7XG5cdCAgICAgICAgcmV0dXJuICcnO1xuXHQgICAgICB9XG5cdCAg
ICAgIHZhciBhdHRyaWJ1dGVOYW1lID0gcHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWU7XG5cdCAg
ICAgIGlmIChwcm9wZXJ0eUluZm8uaGFzQm9vbGVhblZhbHVlIHx8IHByb3BlcnR5SW5mby5oYXNP
dmVybG9hZGVkQm9vbGVhblZhbHVlICYmIHZhbHVlID09PSB0cnVlKSB7XG5cdCAgICAgICAgcmV0
dXJuIGF0dHJpYnV0ZU5hbWUgKyAnPVwiXCInO1xuXHQgICAgICB9XG5cdCAgICAgIHJldHVybiBh
dHRyaWJ1dGVOYW1lICsgJz0nICsgcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXIodmFsdWUp
O1xuXHQgICAgfSBlbHNlIGlmIChET01Qcm9wZXJ0eS5pc0N1c3RvbUF0dHJpYnV0ZShuYW1lKSkg
e1xuXHQgICAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuXHQgICAgICAgIHJldHVybiAnJztcblx0
ICAgICAgfVxuXHQgICAgICByZXR1cm4gbmFtZSArICc9JyArIHF1b3RlQXR0cmlidXRlVmFsdWVG
b3JCcm93c2VyKHZhbHVlKTtcblx0ICAgIH1cblx0ICAgIHJldHVybiBudWxsO1xuXHQgIH0sXG5c
dFxuXHQgIC8qKlxuXHQgICAqIENyZWF0ZXMgbWFya3VwIGZvciBhIGN1c3RvbSBwcm9wZXJ0eS5c
blx0ICAgKlxuXHQgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG5cdCAgICogQHBhcmFtIHsqfSB2
YWx1ZVxuXHQgICAqIEByZXR1cm4ge3N0cmluZ30gTWFya3VwIHN0cmluZywgb3IgZW1wdHkgc3Ry
aW5nIGlmIHRoZSBwcm9wZXJ0eSB3YXMgaW52YWxpZC5cblx0ICAgKi9cblx0ICBjcmVhdGVNYXJr
dXBGb3JDdXN0b21BdHRyaWJ1dGU6IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSkge1xuXHQgICAgaWYg
KCFpc0F0dHJpYnV0ZU5hbWVTYWZlKG5hbWUpIHx8IHZhbHVlID09IG51bGwpIHtcblx0ICAgICAg
cmV0dXJuICcnO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIG5hbWUgKyAnPScgKyBxdW90ZUF0dHJp
YnV0ZVZhbHVlRm9yQnJvd3Nlcih2YWx1ZSk7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICog
U2V0cyB0aGUgdmFsdWUgZm9yIGEgcHJvcGVydHkgb24gYSBub2RlLlxuXHQgICAqXG5cdCAgICog
QHBhcmFtIHtET01FbGVtZW50fSBub2RlXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcblx0
ICAgKiBAcGFyYW0geyp9IHZhbHVlXG5cdCAgICovXG5cdCAgc2V0VmFsdWVGb3JQcm9wZXJ0eTog
ZnVuY3Rpb24gKG5vZGUsIG5hbWUsIHZhbHVlKSB7XG5cdCAgICB2YXIgcHJvcGVydHlJbmZvID0g
RE9NUHJvcGVydHkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSA/IERPTVByb3BlcnR5
LnByb3BlcnRpZXNbbmFtZV0gOiBudWxsO1xuXHQgICAgaWYgKHByb3BlcnR5SW5mbykge1xuXHQg
ICAgICB2YXIgbXV0YXRpb25NZXRob2QgPSBwcm9wZXJ0eUluZm8ubXV0YXRpb25NZXRob2Q7XG5c
dCAgICAgIGlmIChtdXRhdGlvbk1ldGhvZCkge1xuXHQgICAgICAgIG11dGF0aW9uTWV0aG9kKG5v
ZGUsIHZhbHVlKTtcblx0ICAgICAgfSBlbHNlIGlmIChzaG91bGRJZ25vcmVWYWx1ZShwcm9wZXJ0
eUluZm8sIHZhbHVlKSkge1xuXHQgICAgICAgIHRoaXMuZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eShu
b2RlLCBuYW1lKTtcblx0ICAgICAgICByZXR1cm47XG5cdCAgICAgIH0gZWxzZSBpZiAocHJvcGVy
dHlJbmZvLm11c3RVc2VQcm9wZXJ0eSkge1xuXHQgICAgICAgIC8vIENvbnRyYXJ5IHRvIGBzZXRB
dHRyaWJ1dGVgLCBvYmplY3QgcHJvcGVydGllcyBhcmUgcHJvcGVybHlcblx0ICAgICAgICAvLyBg
dG9TdHJpbmdgZWQgYnkgSUU4LzkuXG5cdCAgICAgICAgbm9kZVtwcm9wZXJ0eUluZm8ucHJvcGVy
dHlOYW1lXSA9IHZhbHVlO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIHZhciBhdHRyaWJ1
dGVOYW1lID0gcHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWU7XG5cdCAgICAgICAgdmFyIG5hbWVz
cGFjZSA9IHByb3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1lc3BhY2U7XG5cdCAgICAgICAgLy8gYHNl
dEF0dHJpYnV0ZWAgd2l0aCBvYmplY3RzIGJlY29tZXMgb25seSBgW29iamVjdF1gIGluIElFOC85
LFxuXHQgICAgICAgIC8vICgnJyArIHZhbHVlKSBtYWtlcyBpdCBvdXRwdXQgdGhlIGNvcnJlY3Qg
dG9TdHJpbmcoKS12YWx1ZS5cblx0ICAgICAgICBpZiAobmFtZXNwYWNlKSB7XG5cdCAgICAgICAg
ICBub2RlLnNldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgYXR0cmlidXRlTmFtZSwgJycgKyB2YWx1
ZSk7XG5cdCAgICAgICAgfSBlbHNlIGlmIChwcm9wZXJ0eUluZm8uaGFzQm9vbGVhblZhbHVlIHx8
IHByb3BlcnR5SW5mby5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlICYmIHZhbHVlID09PSB0cnVl
KSB7XG5cdCAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShhdHRyaWJ1dGVOYW1lLCAnJyk7XG5c
dCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKGF0dHJpYnV0
ZU5hbWUsICcnICsgdmFsdWUpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfSBlbHNl
IGlmIChET01Qcm9wZXJ0eS5pc0N1c3RvbUF0dHJpYnV0ZShuYW1lKSkge1xuXHQgICAgICBET01Q
cm9wZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVGb3JBdHRyaWJ1dGUobm9kZSwgbmFtZSwgdmFsdWUp
O1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAg
ICAgIHZhciBwYXlsb2FkID0ge307XG5cdCAgICAgIHBheWxvYWRbbmFtZV0gPSB2YWx1ZTtcblx0
ICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7XG5c
dCAgICAgICAgaW5zdGFuY2VJRDogUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJv
bU5vZGUobm9kZSkuX2RlYnVnSUQsXG5cdCAgICAgICAgdHlwZTogJ3VwZGF0ZSBhdHRyaWJ1dGUn
LFxuXHQgICAgICAgIHBheWxvYWQ6IHBheWxvYWRcblx0ICAgICAgfSk7XG5cdCAgICB9XG5cdCAg
fSxcblx0XG5cdCAgc2V0VmFsdWVGb3JBdHRyaWJ1dGU6IGZ1bmN0aW9uIChub2RlLCBuYW1lLCB2
YWx1ZSkge1xuXHQgICAgaWYgKCFpc0F0dHJpYnV0ZU5hbWVTYWZlKG5hbWUpKSB7XG5cdCAgICAg
IHJldHVybjtcblx0ICAgIH1cblx0ICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG5cdCAgICAgIG5v
ZGUucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgbm9kZS5z
ZXRBdHRyaWJ1dGUobmFtZSwgJycgKyB2YWx1ZSk7XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKGZh
bHNlKSB7XG5cdCAgICAgIHZhciBwYXlsb2FkID0ge307XG5cdCAgICAgIHBheWxvYWRbbmFtZV0g
PSB2YWx1ZTtcblx0ICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9w
ZXJhdGlvbih7XG5cdCAgICAgICAgaW5zdGFuY2VJRDogUmVhY3RET01Db21wb25lbnRUcmVlLmdl
dEluc3RhbmNlRnJvbU5vZGUobm9kZSkuX2RlYnVnSUQsXG5cdCAgICAgICAgdHlwZTogJ3VwZGF0
ZSBhdHRyaWJ1dGUnLFxuXHQgICAgICAgIHBheWxvYWQ6IHBheWxvYWRcblx0ICAgICAgfSk7XG5c
dCAgICB9XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogRGVsZXRlcyBhbiBhdHRyaWJ1dGVz
IGZyb20gYSBub2RlLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG5c
dCAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcblx0ICAgKi9cblx0ICBkZWxldGVWYWx1ZUZvckF0
dHJpYnV0ZTogZnVuY3Rpb24gKG5vZGUsIG5hbWUpIHtcblx0ICAgIG5vZGUucmVtb3ZlQXR0cmli
dXRlKG5hbWUpO1xuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIFJlYWN0SW5zdHJ1bWVudGF0
aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuXHQgICAgICAgIGluc3RhbmNlSUQ6IFJl
YWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG5vZGUpLl9kZWJ1Z0lELFxu
XHQgICAgICAgIHR5cGU6ICdyZW1vdmUgYXR0cmlidXRlJyxcblx0ICAgICAgICBwYXlsb2FkOiBu
YW1lXG5cdCAgICAgIH0pO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIERl
bGV0ZXMgdGhlIHZhbHVlIGZvciBhIHByb3BlcnR5IG9uIGEgbm9kZS5cblx0ICAgKlxuXHQgICAq
IEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuXHQgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG5c
dCAgICovXG5cdCAgZGVsZXRlVmFsdWVGb3JQcm9wZXJ0eTogZnVuY3Rpb24gKG5vZGUsIG5hbWUp
IHtcblx0ICAgIHZhciBwcm9wZXJ0eUluZm8gPSBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzLmhhc093
blByb3BlcnR5KG5hbWUpID8gRE9NUHJvcGVydHkucHJvcGVydGllc1tuYW1lXSA6IG51bGw7XG5c
dCAgICBpZiAocHJvcGVydHlJbmZvKSB7XG5cdCAgICAgIHZhciBtdXRhdGlvbk1ldGhvZCA9IHBy
b3BlcnR5SW5mby5tdXRhdGlvbk1ldGhvZDtcblx0ICAgICAgaWYgKG11dGF0aW9uTWV0aG9kKSB7
XG5cdCAgICAgICAgbXV0YXRpb25NZXRob2Qobm9kZSwgdW5kZWZpbmVkKTtcblx0ICAgICAgfSBl
bHNlIGlmIChwcm9wZXJ0eUluZm8ubXVzdFVzZVByb3BlcnR5KSB7XG5cdCAgICAgICAgdmFyIHBy
b3BOYW1lID0gcHJvcGVydHlJbmZvLnByb3BlcnR5TmFtZTtcblx0ICAgICAgICBpZiAocHJvcGVy
dHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSkge1xuXHQgICAgICAgICAgbm9kZVtwcm9wTmFtZV0gPSBm
YWxzZTtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgbm9kZVtwcm9wTmFtZV0gPSAn
Jztcblx0ICAgICAgICB9XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgbm9kZS5yZW1vdmVB
dHRyaWJ1dGUocHJvcGVydHlJbmZvLmF0dHJpYnV0ZU5hbWUpO1xuXHQgICAgICB9XG5cdCAgICB9
IGVsc2UgaWYgKERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0cmlidXRlKG5hbWUpKSB7XG5cdCAgICAg
IG5vZGUucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuXHQgICAgfVxuXHRcblx0ICAgIGlmIChmYWxz
ZSkge1xuXHQgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0
aW9uKHtcblx0ICAgICAgICBpbnN0YW5jZUlEOiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5z
dGFuY2VGcm9tTm9kZShub2RlKS5fZGVidWdJRCxcblx0ICAgICAgICB0eXBlOiAncmVtb3ZlIGF0
dHJpYnV0ZScsXG5cdCAgICAgICAgcGF5bG9hZDogbmFtZVxuXHQgICAgICB9KTtcblx0ICAgIH1c
blx0ICB9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IERPTVByb3BlcnR5T3BlcmF0aW9u
cztcblxuLyoqKi8gfSxcbi8qIDYxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMp
IHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTUtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5c
blx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5c
dFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgUmVhY3RET01Db21wb25lbnRGbGFncyA9IHtc
blx0ICBoYXNDYWNoZWRDaGlsZE5vZGVzOiAxIDw8IDBcblx0fTtcblx0XG5cdG1vZHVsZS5leHBv
cnRzID0gUmVhY3RET01Db21wb25lbnRGbGFncztcblxuLyoqKi8gfSxcbi8qIDYyICovXG4vKioq
LyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQv
Kipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNl
IHN0cmljdCc7XG5cdFxuXHR2YXIgX2Fzc2lnbiA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5c
dFxuXHR2YXIgTGlua2VkVmFsdWVVdGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oMzkpO1xuXHR2
YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblx0dmFy
IFJlYWN0VXBkYXRlcyA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7XG5cdFxuXHR2YXIgd2Fybmlu
ZyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cdFxuXHR2YXIgZGlkV2FyblZhbHVlTGluayA9
IGZhbHNlO1xuXHR2YXIgZGlkV2FyblZhbHVlRGVmYXVsdFZhbHVlID0gZmFsc2U7XG5cdFxuXHRm
dW5jdGlvbiB1cGRhdGVPcHRpb25zSWZQZW5kaW5nVXBkYXRlQW5kTW91bnRlZCgpIHtcblx0ICBp
ZiAodGhpcy5fcm9vdE5vZGVJRCAmJiB0aGlzLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZSkg
e1xuXHQgICAgdGhpcy5fd3JhcHBlclN0YXRlLnBlbmRpbmdVcGRhdGUgPSBmYWxzZTtcblx0XG5c
dCAgICB2YXIgcHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztcblx0ICAgIHZhciB2
YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpO1xuXHRcblx0ICAgIGlmICh2
YWx1ZSAhPSBudWxsKSB7XG5cdCAgICAgIHVwZGF0ZU9wdGlvbnModGhpcywgQm9vbGVhbihwcm9w
cy5tdWx0aXBsZSksIHZhbHVlKTtcblx0ICAgIH1cblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9u
IGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShvd25lcikge1xuXHQgIGlmIChvd25lcikge1xu
XHQgICAgdmFyIG5hbWUgPSBvd25lci5nZXROYW1lKCk7XG5cdCAgICBpZiAobmFtZSkge1xuXHQg
ICAgICByZXR1cm4gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4n
O1xuXHQgICAgfVxuXHQgIH1cblx0ICByZXR1cm4gJyc7XG5cdH1cblx0XG5cdHZhciB2YWx1ZVBy
b3BOYW1lcyA9IFsndmFsdWUnLCAnZGVmYXVsdFZhbHVlJ107XG5cdFxuXHQvKipcblx0ICogVmFs
aWRhdGlvbiBmdW5jdGlvbiBmb3IgYHZhbHVlYCBhbmQgYGRlZmF1bHRWYWx1ZWAuXG5cdCAqIEBw
cml2YXRlXG5cdCAqL1xuXHRmdW5jdGlvbiBjaGVja1NlbGVjdFByb3BUeXBlcyhpbnN0LCBwcm9w
cykge1xuXHQgIHZhciBvd25lciA9IGluc3QuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcblx0ICBM
aW5rZWRWYWx1ZVV0aWxzLmNoZWNrUHJvcFR5cGVzKCdzZWxlY3QnLCBwcm9wcywgb3duZXIpO1xu
XHRcblx0ICBpZiAocHJvcHMudmFsdWVMaW5rICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5WYWx1
ZUxpbmspIHtcblx0ICAgICBmYWxzZSA/IHdhcm5pbmcoZmFsc2UsICdgdmFsdWVMaW5rYCBwcm9w
IG9uIGBzZWxlY3RgIGlzIGRlcHJlY2F0ZWQ7IHNldCBgdmFsdWVgIGFuZCBgb25DaGFuZ2VgIGlu
c3RlYWQuJykgOiB2b2lkIDA7XG5cdCAgICBkaWRXYXJuVmFsdWVMaW5rID0gdHJ1ZTtcblx0ICB9
XG5cdFxuXHQgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWVQcm9wTmFtZXMubGVuZ3RoOyBpKysp
IHtcblx0ICAgIHZhciBwcm9wTmFtZSA9IHZhbHVlUHJvcE5hbWVzW2ldO1xuXHQgICAgaWYgKHBy
b3BzW3Byb3BOYW1lXSA9PSBudWxsKSB7XG5cdCAgICAgIGNvbnRpbnVlO1xuXHQgICAgfVxuXHQg
ICAgdmFyIGlzQXJyYXkgPSBBcnJheS5pc0FycmF5KHByb3BzW3Byb3BOYW1lXSk7XG5cdCAgICBp
ZiAocHJvcHMubXVsdGlwbGUgJiYgIWlzQXJyYXkpIHtcblx0ICAgICAgIGZhbHNlID8gd2Fybmlu
ZyhmYWxzZSwgJ1RoZSBgJXNgIHByb3Agc3VwcGxpZWQgdG8gPHNlbGVjdD4gbXVzdCBiZSBhbiBh
cnJheSBpZiAnICsgJ2BtdWx0aXBsZWAgaXMgdHJ1ZS4lcycsIHByb3BOYW1lLCBnZXREZWNsYXJh
dGlvbkVycm9yQWRkZW5kdW0ob3duZXIpKSA6IHZvaWQgMDtcblx0ICAgIH0gZWxzZSBpZiAoIXBy
b3BzLm11bHRpcGxlICYmIGlzQXJyYXkpIHtcblx0ICAgICAgIGZhbHNlID8gd2FybmluZyhmYWxz
ZSwgJ1RoZSBgJXNgIHByb3Agc3VwcGxpZWQgdG8gPHNlbGVjdD4gbXVzdCBiZSBhIHNjYWxhciAn
ICsgJ3ZhbHVlIGlmIGBtdWx0aXBsZWAgaXMgZmFsc2UuJXMnLCBwcm9wTmFtZSwgZ2V0RGVjbGFy
YXRpb25FcnJvckFkZGVuZHVtKG93bmVyKSkgOiB2b2lkIDA7XG5cdCAgICB9XG5cdCAgfVxuXHR9
XG5cdFxuXHQvKipcblx0ICogQHBhcmFtIHtSZWFjdERPTUNvbXBvbmVudH0gaW5zdFxuXHQgKiBA
cGFyYW0ge2Jvb2xlYW59IG11bHRpcGxlXG5cdCAqIEBwYXJhbSB7Kn0gcHJvcFZhbHVlIEEgc3Ry
aW5nYWJsZSAod2l0aCBgbXVsdGlwbGVgLCBhIGxpc3Qgb2Ygc3RyaW5nYWJsZXMpLlxuXHQgKiBA
cHJpdmF0ZVxuXHQgKi9cblx0ZnVuY3Rpb24gdXBkYXRlT3B0aW9ucyhpbnN0LCBtdWx0aXBsZSwg
cHJvcFZhbHVlKSB7XG5cdCAgdmFyIHNlbGVjdGVkVmFsdWUsIGk7XG5cdCAgdmFyIG9wdGlvbnMg
PSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KS5vcHRpb25z
O1xuXHRcblx0ICBpZiAobXVsdGlwbGUpIHtcblx0ICAgIHNlbGVjdGVkVmFsdWUgPSB7fTtcblx0
ICAgIGZvciAoaSA9IDA7IGkgPCBwcm9wVmFsdWUubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgc2Vs
ZWN0ZWRWYWx1ZVsnJyArIHByb3BWYWx1ZVtpXV0gPSB0cnVlO1xuXHQgICAgfVxuXHQgICAgZm9y
IChpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgdmFyIHNlbGVjdGVk
ID0gc2VsZWN0ZWRWYWx1ZS5oYXNPd25Qcm9wZXJ0eShvcHRpb25zW2ldLnZhbHVlKTtcblx0ICAg
ICAgaWYgKG9wdGlvbnNbaV0uc2VsZWN0ZWQgIT09IHNlbGVjdGVkKSB7XG5cdCAgICAgICAgb3B0
aW9uc1tpXS5zZWxlY3RlZCA9IHNlbGVjdGVkO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfSBl
bHNlIHtcblx0ICAgIC8vIERvIG5vdCBzZXQgYHNlbGVjdC52YWx1ZWAgYXMgZXhhY3QgYmVoYXZp
b3IgaXNuJ3QgY29uc2lzdGVudCBhY3Jvc3MgYWxsXG5cdCAgICAvLyBicm93c2VycyBmb3IgYWxs
IGNhc2VzLlxuXHQgICAgc2VsZWN0ZWRWYWx1ZSA9ICcnICsgcHJvcFZhbHVlO1xuXHQgICAgZm9y
IChpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgaWYgKG9wdGlvbnNb
aV0udmFsdWUgPT09IHNlbGVjdGVkVmFsdWUpIHtcblx0ICAgICAgICBvcHRpb25zW2ldLnNlbGVj
dGVkID0gdHJ1ZTtcblx0ICAgICAgICByZXR1cm47XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAg
IGlmIChvcHRpb25zLmxlbmd0aCkge1xuXHQgICAgICBvcHRpb25zWzBdLnNlbGVjdGVkID0gdHJ1
ZTtcblx0ICAgIH1cblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBJbXBsZW1lbnRzIGEgPHNl
bGVjdD4gaG9zdCBjb21wb25lbnQgdGhhdCBhbGxvd3Mgb3B0aW9uYWxseSBzZXR0aW5nIHRoZVxu
XHQgKiBwcm9wcyBgdmFsdWVgIGFuZCBgZGVmYXVsdFZhbHVlYC4gSWYgYG11bHRpcGxlYCBpcyBm
YWxzZSwgdGhlIHByb3AgbXVzdCBiZSBhXG5cdCAqIHN0cmluZ2FibGUuIElmIGBtdWx0aXBsZWAg
aXMgdHJ1ZSwgdGhlIHByb3AgbXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdhYmxlcy5cblx0ICpc
blx0ICogSWYgYHZhbHVlYCBpcyBub3Qgc3VwcGxpZWQgKG9yIG51bGwvdW5kZWZpbmVkKSwgdXNl
ciBhY3Rpb25zIHRoYXQgY2hhbmdlIHRoZVxuXHQgKiBzZWxlY3RlZCBvcHRpb24gd2lsbCB0cmln
Z2VyIHVwZGF0ZXMgdG8gdGhlIHJlbmRlcmVkIG9wdGlvbnMuXG5cdCAqXG5cdCAqIElmIGl0IGlz
IHN1cHBsaWVkIChhbmQgbm90IG51bGwvdW5kZWZpbmVkKSwgdGhlIHJlbmRlcmVkIG9wdGlvbnMg
d2lsbCBub3Rcblx0ICogdXBkYXRlIGluIHJlc3BvbnNlIHRvIHVzZXIgYWN0aW9ucy4gSW5zdGVh
ZCwgdGhlIGB2YWx1ZWAgcHJvcCBtdXN0IGNoYW5nZSBpblxuXHQgKiBvcmRlciBmb3IgdGhlIHJl
bmRlcmVkIG9wdGlvbnMgdG8gdXBkYXRlLlxuXHQgKlxuXHQgKiBJZiBgZGVmYXVsdFZhbHVlYCBp
cyBwcm92aWRlZCwgYW55IG9wdGlvbnMgd2l0aCB0aGUgc3VwcGxpZWQgdmFsdWVzIHdpbGwgYmVc
blx0ICogc2VsZWN0ZWQuXG5cdCAqL1xuXHR2YXIgUmVhY3RET01TZWxlY3QgPSB7XG5cdCAgZ2V0
SG9zdFByb3BzOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHtcblx0ICAgIHJldHVybiBfYXNzaWdu
KHt9LCBwcm9wcywge1xuXHQgICAgICBvbkNoYW5nZTogaW5zdC5fd3JhcHBlclN0YXRlLm9uQ2hh
bmdlLFxuXHQgICAgICB2YWx1ZTogdW5kZWZpbmVkXG5cdCAgICB9KTtcblx0ICB9LFxuXHRcblx0
ICBtb3VudFdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcykge1xuXHQgICAgaWYgKGZhbHNl
KSB7XG5cdCAgICAgIGNoZWNrU2VsZWN0UHJvcFR5cGVzKGluc3QsIHByb3BzKTtcblx0ICAgIH1c
blx0XG5cdCAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTtc
blx0ICAgIGluc3QuX3dyYXBwZXJTdGF0ZSA9IHtcblx0ICAgICAgcGVuZGluZ1VwZGF0ZTogZmFs
c2UsXG5cdCAgICAgIGluaXRpYWxWYWx1ZTogdmFsdWUgIT0gbnVsbCA/IHZhbHVlIDogcHJvcHMu
ZGVmYXVsdFZhbHVlLFxuXHQgICAgICBsaXN0ZW5lcnM6IG51bGwsXG5cdCAgICAgIG9uQ2hhbmdl
OiBfaGFuZGxlQ2hhbmdlLmJpbmQoaW5zdCksXG5cdCAgICAgIHdhc011bHRpcGxlOiBCb29sZWFu
KHByb3BzLm11bHRpcGxlKVxuXHQgICAgfTtcblx0XG5cdCAgICBpZiAocHJvcHMudmFsdWUgIT09
IHVuZGVmaW5lZCAmJiBwcm9wcy5kZWZhdWx0VmFsdWUgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2Fy
blZhbHVlRGVmYXVsdFZhbHVlKSB7XG5cdCAgICAgICBmYWxzZSA/IHdhcm5pbmcoZmFsc2UsICdT
ZWxlY3QgZWxlbWVudHMgbXVzdCBiZSBlaXRoZXIgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQg
JyArICcoc3BlY2lmeSBlaXRoZXIgdGhlIHZhbHVlIHByb3AsIG9yIHRoZSBkZWZhdWx0VmFsdWUg
cHJvcCwgYnV0IG5vdCAnICsgJ2JvdGgpLiBEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xs
ZWQgb3IgdW5jb250cm9sbGVkIHNlbGVjdCAnICsgJ2VsZW1lbnQgYW5kIHJlbW92ZSBvbmUgb2Yg
dGhlc2UgcHJvcHMuIE1vcmUgaW5mbzogJyArICdodHRwczovL2ZiLm1lL3JlYWN0LWNvbnRyb2xs
ZWQtY29tcG9uZW50cycpIDogdm9pZCAwO1xuXHQgICAgICBkaWRXYXJuVmFsdWVEZWZhdWx0VmFs
dWUgPSB0cnVlO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIGdldFNlbGVjdFZhbHVlQ29udGV4
dDogZnVuY3Rpb24gKGluc3QpIHtcblx0ICAgIC8vIFJlYWN0RE9NT3B0aW9uIGxvb2tzIGF0IHRo
aXMgaW5pdGlhbCB2YWx1ZSBzbyB0aGUgaW5pdGlhbCBnZW5lcmF0ZWRcblx0ICAgIC8vIG1hcmt1
cCBoYXMgY29ycmVjdCBgc2VsZWN0ZWRgIGF0dHJpYnV0ZXNcblx0ICAgIHJldHVybiBpbnN0Ll93
cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlO1xuXHQgIH0sXG5cdFxuXHQgIHBvc3RVcGRhdGVXcmFw
cGVyOiBmdW5jdGlvbiAoaW5zdCkge1xuXHQgICAgdmFyIHByb3BzID0gaW5zdC5fY3VycmVudEVs
ZW1lbnQucHJvcHM7XG5cdFxuXHQgICAgLy8gQWZ0ZXIgdGhlIGluaXRpYWwgbW91bnQsIHdlIGNv
bnRyb2wgc2VsZWN0ZWQtbmVzcyBtYW51YWxseSBzbyBkb24ndCBwYXNzXG5cdCAgICAvLyB0aGlz
IHZhbHVlIGRvd25cblx0ICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUgPSB1bmRl
ZmluZWQ7XG5cdFxuXHQgICAgdmFyIHdhc011bHRpcGxlID0gaW5zdC5fd3JhcHBlclN0YXRlLndh
c011bHRpcGxlO1xuXHQgICAgaW5zdC5fd3JhcHBlclN0YXRlLndhc011bHRpcGxlID0gQm9vbGVh
bihwcm9wcy5tdWx0aXBsZSk7XG5cdFxuXHQgICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGls
cy5nZXRWYWx1ZShwcm9wcyk7XG5cdCAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuXHQgICAgICBp
bnN0Ll93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZSA9IGZhbHNlO1xuXHQgICAgICB1cGRhdGVP
cHRpb25zKGluc3QsIEJvb2xlYW4ocHJvcHMubXVsdGlwbGUpLCB2YWx1ZSk7XG5cdCAgICB9IGVs
c2UgaWYgKHdhc011bHRpcGxlICE9PSBCb29sZWFuKHByb3BzLm11bHRpcGxlKSkge1xuXHQgICAg
ICAvLyBGb3Igc2ltcGxpY2l0eSwgcmVhcHBseSBgZGVmYXVsdFZhbHVlYCBpZiBgbXVsdGlwbGVg
IGlzIHRvZ2dsZWQuXG5cdCAgICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWUgIT0gbnVsbCkge1xu
XHQgICAgICAgIHVwZGF0ZU9wdGlvbnMoaW5zdCwgQm9vbGVhbihwcm9wcy5tdWx0aXBsZSksIHBy
b3BzLmRlZmF1bHRWYWx1ZSk7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgLy8gUmV2ZXJ0
IHRoZSBzZWxlY3QgYmFjayB0byBpdHMgZGVmYXVsdCB1bnNlbGVjdGVkIHN0YXRlLlxuXHQgICAg
ICAgIHVwZGF0ZU9wdGlvbnMoaW5zdCwgQm9vbGVhbihwcm9wcy5tdWx0aXBsZSksIHByb3BzLm11
bHRpcGxlID8gW10gOiAnJyk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdFxu
XHRmdW5jdGlvbiBfaGFuZGxlQ2hhbmdlKGV2ZW50KSB7XG5cdCAgdmFyIHByb3BzID0gdGhpcy5f
Y3VycmVudEVsZW1lbnQucHJvcHM7XG5cdCAgdmFyIHJldHVyblZhbHVlID0gTGlua2VkVmFsdWVV
dGlscy5leGVjdXRlT25DaGFuZ2UocHJvcHMsIGV2ZW50KTtcblx0XG5cdCAgaWYgKHRoaXMuX3Jv
b3ROb2RlSUQpIHtcblx0ICAgIHRoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlID0gdHJ1
ZTtcblx0ICB9XG5cdCAgUmVhY3RVcGRhdGVzLmFzYXAodXBkYXRlT3B0aW9uc0lmUGVuZGluZ1Vw
ZGF0ZUFuZE1vdW50ZWQsIHRoaXMpO1xuXHQgIHJldHVybiByZXR1cm5WYWx1ZTtcblx0fVxuXHRc
blx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVNlbGVjdDtcblxuLyoqKi8gfSxcbi8qIDYzICov
XG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJp
Z2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxu
XHR2YXIgZW1wdHlDb21wb25lbnRGYWN0b3J5O1xuXHRcblx0dmFyIFJlYWN0RW1wdHlDb21wb25l
bnRJbmplY3Rpb24gPSB7XG5cdCAgaW5qZWN0RW1wdHlDb21wb25lbnRGYWN0b3J5OiBmdW5jdGlv
biAoZmFjdG9yeSkge1xuXHQgICAgZW1wdHlDb21wb25lbnRGYWN0b3J5ID0gZmFjdG9yeTtcblx0
ICB9XG5cdH07XG5cdFxuXHR2YXIgUmVhY3RFbXB0eUNvbXBvbmVudCA9IHtcblx0ICBjcmVhdGU6
IGZ1bmN0aW9uIChpbnN0YW50aWF0ZSkge1xuXHQgICAgcmV0dXJuIGVtcHR5Q29tcG9uZW50RmFj
dG9yeShpbnN0YW50aWF0ZSk7XG5cdCAgfVxuXHR9O1xuXHRcblx0UmVhY3RFbXB0eUNvbXBvbmVu
dC5pbmplY3Rpb24gPSBSZWFjdEVtcHR5Q29tcG9uZW50SW5qZWN0aW9uO1xuXHRcblx0bW9kdWxl
LmV4cG9ydHMgPSBSZWFjdEVtcHR5Q29tcG9uZW50O1xuXG4vKioqLyB9LFxuLyogNjQgKi9cbi8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxu
XHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5c
dFxuXHR2YXIgUmVhY3RGZWF0dXJlRmxhZ3MgPSB7XG5cdCAgLy8gV2hlbiB0cnVlLCBjYWxsIGNv
bnNvbGUudGltZSgpIGJlZm9yZSBhbmQgLnRpbWVFbmQoKSBhZnRlciBlYWNoIHRvcC1sZXZlbFxu
XHQgIC8vIHJlbmRlciAoYm90aCBpbml0aWFsIHJlbmRlcnMgYW5kIHVwZGF0ZXMpLiBVc2VmdWwg
d2hlbiBsb29raW5nIGF0IHByb2QtbW9kZVxuXHQgIC8vIHRpbWVsaW5lIHByb2ZpbGVzIGluIENo
cm9tZSwgZm9yIGV4YW1wbGUuXG5cdCAgbG9nVG9wTGV2ZWxSZW5kZXJzOiBmYWxzZVxuXHR9O1xu
XHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdEZlYXR1cmVGbGFncztcblxuLyoqKi8gfSxcbi8q
IDY1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJl
X18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5c
dCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICov
XG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDMpO1xuXHRcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJl
X18oMSk7XG5cdFxuXHR2YXIgZ2VuZXJpY0NvbXBvbmVudENsYXNzID0gbnVsbDtcblx0dmFyIHRl
eHRDb21wb25lbnRDbGFzcyA9IG51bGw7XG5cdFxuXHR2YXIgUmVhY3RIb3N0Q29tcG9uZW50SW5q
ZWN0aW9uID0ge1xuXHQgIC8vIFRoaXMgYWNjZXB0cyBhIGNsYXNzIHRoYXQgcmVjZWl2ZXMgdGhl
IHRhZyBzdHJpbmcuIFRoaXMgaXMgYSBjYXRjaCBhbGxcblx0ICAvLyB0aGF0IGNhbiByZW5kZXIg
YW55IGtpbmQgb2YgdGFnLlxuXHQgIGluamVjdEdlbmVyaWNDb21wb25lbnRDbGFzczogZnVuY3Rp
b24gKGNvbXBvbmVudENsYXNzKSB7XG5cdCAgICBnZW5lcmljQ29tcG9uZW50Q2xhc3MgPSBjb21w
b25lbnRDbGFzcztcblx0ICB9LFxuXHQgIC8vIFRoaXMgYWNjZXB0cyBhIHRleHQgY29tcG9uZW50
IGNsYXNzIHRoYXQgdGFrZXMgdGhlIHRleHQgc3RyaW5nIHRvIGJlXG5cdCAgLy8gcmVuZGVyZWQg
YXMgcHJvcHMuXG5cdCAgaW5qZWN0VGV4dENvbXBvbmVudENsYXNzOiBmdW5jdGlvbiAoY29tcG9u
ZW50Q2xhc3MpIHtcblx0ICAgIHRleHRDb21wb25lbnRDbGFzcyA9IGNvbXBvbmVudENsYXNzO1xu
XHQgIH1cblx0fTtcblx0XG5cdC8qKlxuXHQgKiBHZXQgYSBob3N0IGludGVybmFsIGNvbXBvbmVu
dCBjbGFzcyBmb3IgYSBzcGVjaWZpYyB0YWcuXG5cdCAqXG5cdCAqIEBwYXJhbSB7UmVhY3RFbGVt
ZW50fSBlbGVtZW50IFRoZSBlbGVtZW50IHRvIGNyZWF0ZS5cblx0ICogQHJldHVybiB7ZnVuY3Rp
b259IFRoZSBpbnRlcm5hbCBjbGFzcyBjb25zdHJ1Y3RvciBmdW5jdGlvbi5cblx0ICovXG5cdGZ1
bmN0aW9uIGNyZWF0ZUludGVybmFsQ29tcG9uZW50KGVsZW1lbnQpIHtcblx0ICAhZ2VuZXJpY0Nv
bXBvbmVudENsYXNzID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnVGhlcmUgaXMgbm8gcmVn
aXN0ZXJlZCBjb21wb25lbnQgZm9yIHRoZSB0YWcgJXMnLCBlbGVtZW50LnR5cGUpIDogX3Byb2RJ
bnZhcmlhbnQoJzExMScsIGVsZW1lbnQudHlwZSkgOiB2b2lkIDA7XG5cdCAgcmV0dXJuIG5ldyBn
ZW5lcmljQ29tcG9uZW50Q2xhc3MoZWxlbWVudCk7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBAcGFy
YW0ge1JlYWN0VGV4dH0gdGV4dFxuXHQgKiBAcmV0dXJuIHtSZWFjdENvbXBvbmVudH1cblx0ICov
XG5cdGZ1bmN0aW9uIGNyZWF0ZUluc3RhbmNlRm9yVGV4dCh0ZXh0KSB7XG5cdCAgcmV0dXJuIG5l
dyB0ZXh0Q29tcG9uZW50Q2xhc3ModGV4dCk7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBAcGFyYW0g
e1JlYWN0Q29tcG9uZW50fSBjb21wb25lbnRcblx0ICogQHJldHVybiB7Ym9vbGVhbn1cblx0ICov
XG5cdGZ1bmN0aW9uIGlzVGV4dENvbXBvbmVudChjb21wb25lbnQpIHtcblx0ICByZXR1cm4gY29t
cG9uZW50IGluc3RhbmNlb2YgdGV4dENvbXBvbmVudENsYXNzO1xuXHR9XG5cdFxuXHR2YXIgUmVh
Y3RIb3N0Q29tcG9uZW50ID0ge1xuXHQgIGNyZWF0ZUludGVybmFsQ29tcG9uZW50OiBjcmVhdGVJ
bnRlcm5hbENvbXBvbmVudCxcblx0ICBjcmVhdGVJbnN0YW5jZUZvclRleHQ6IGNyZWF0ZUluc3Rh
bmNlRm9yVGV4dCxcblx0ICBpc1RleHRDb21wb25lbnQ6IGlzVGV4dENvbXBvbmVudCxcblx0ICBp
bmplY3Rpb246IFJlYWN0SG9zdENvbXBvbmVudEluamVjdGlvblxuXHR9O1xuXHRcblx0bW9kdWxl
LmV4cG9ydHMgPSBSZWFjdEhvc3RDb21wb25lbnQ7XG5cbi8qKiovIH0sXG4vKiA2NiAqL1xuLyoq
Ki8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0
LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3Vz
ZSBzdHJpY3QnO1xuXHRcblx0dmFyIFJlYWN0RE9NU2VsZWN0aW9uID0gX193ZWJwYWNrX3JlcXVp
cmVfXygxNDUpO1xuXHRcblx0dmFyIGNvbnRhaW5zTm9kZSA9IF9fd2VicGFja19yZXF1aXJlX18o
MTAwKTtcblx0dmFyIGZvY3VzTm9kZSA9IF9fd2VicGFja19yZXF1aXJlX18oNTIpO1xuXHR2YXIg
Z2V0QWN0aXZlRWxlbWVudCA9IF9fd2VicGFja19yZXF1aXJlX18oNTMpO1xuXHRcblx0ZnVuY3Rp
b24gaXNJbkRvY3VtZW50KG5vZGUpIHtcblx0ICByZXR1cm4gY29udGFpbnNOb2RlKGRvY3VtZW50
LmRvY3VtZW50RWxlbWVudCwgbm9kZSk7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBAUmVhY3RJbnB1
dFNlbGVjdGlvbjogUmVhY3QgaW5wdXQgc2VsZWN0aW9uIG1vZHVsZS4gQmFzZWQgb24gU2VsZWN0
aW9uLmpzLFxuXHQgKiBidXQgbW9kaWZpZWQgdG8gYmUgc3VpdGFibGUgZm9yIHJlYWN0IGFuZCBo
YXMgYSBjb3VwbGUgb2YgYnVnIGZpeGVzIChkb2Vzbid0XG5cdCAqIGFzc3VtZSBidXR0b25zIGhh
dmUgcmFuZ2Ugc2VsZWN0aW9ucyBhbGxvd2VkKS5cblx0ICogSW5wdXQgc2VsZWN0aW9uIG1vZHVs
ZSBmb3IgUmVhY3QuXG5cdCAqL1xuXHR2YXIgUmVhY3RJbnB1dFNlbGVjdGlvbiA9IHtcblx0ICBo
YXNTZWxlY3Rpb25DYXBhYmlsaXRpZXM6IGZ1bmN0aW9uIChlbGVtKSB7XG5cdCAgICB2YXIgbm9k
ZU5hbWUgPSBlbGVtICYmIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2Fz
ZSgpO1xuXHQgICAgcmV0dXJuIG5vZGVOYW1lICYmIChub2RlTmFtZSA9PT0gJ2lucHV0JyAmJiBl
bGVtLnR5cGUgPT09ICd0ZXh0JyB8fCBub2RlTmFtZSA9PT0gJ3RleHRhcmVhJyB8fCBlbGVtLmNv
bnRlbnRFZGl0YWJsZSA9PT0gJ3RydWUnKTtcblx0ICB9LFxuXHRcblx0ICBnZXRTZWxlY3Rpb25J
bmZvcm1hdGlvbjogZnVuY3Rpb24gKCkge1xuXHQgICAgdmFyIGZvY3VzZWRFbGVtID0gZ2V0QWN0
aXZlRWxlbWVudCgpO1xuXHQgICAgcmV0dXJuIHtcblx0ICAgICAgZm9jdXNlZEVsZW06IGZvY3Vz
ZWRFbGVtLFxuXHQgICAgICBzZWxlY3Rpb25SYW5nZTogUmVhY3RJbnB1dFNlbGVjdGlvbi5oYXNT
ZWxlY3Rpb25DYXBhYmlsaXRpZXMoZm9jdXNlZEVsZW0pID8gUmVhY3RJbnB1dFNlbGVjdGlvbi5n
ZXRTZWxlY3Rpb24oZm9jdXNlZEVsZW0pIDogbnVsbFxuXHQgICAgfTtcblx0ICB9LFxuXHRcblx0
ICAvKipcblx0ICAgKiBAcmVzdG9yZVNlbGVjdGlvbjogSWYgYW55IHNlbGVjdGlvbiBpbmZvcm1h
dGlvbiB3YXMgcG90ZW50aWFsbHkgbG9zdCxcblx0ICAgKiByZXN0b3JlIGl0LiBUaGlzIGlzIHVz
ZWZ1bCB3aGVuIHBlcmZvcm1pbmcgb3BlcmF0aW9ucyB0aGF0IGNvdWxkIHJlbW92ZSBkb21cblx0
ICAgKiBub2RlcyBhbmQgcGxhY2UgdGhlbSBiYWNrIGluLCByZXN1bHRpbmcgaW4gZm9jdXMgYmVp
bmcgbG9zdC5cblx0ICAgKi9cblx0ICByZXN0b3JlU2VsZWN0aW9uOiBmdW5jdGlvbiAocHJpb3JT
ZWxlY3Rpb25JbmZvcm1hdGlvbikge1xuXHQgICAgdmFyIGN1ckZvY3VzZWRFbGVtID0gZ2V0QWN0
aXZlRWxlbWVudCgpO1xuXHQgICAgdmFyIHByaW9yRm9jdXNlZEVsZW0gPSBwcmlvclNlbGVjdGlv
bkluZm9ybWF0aW9uLmZvY3VzZWRFbGVtO1xuXHQgICAgdmFyIHByaW9yU2VsZWN0aW9uUmFuZ2Ug
PSBwcmlvclNlbGVjdGlvbkluZm9ybWF0aW9uLnNlbGVjdGlvblJhbmdlO1xuXHQgICAgaWYgKGN1
ckZvY3VzZWRFbGVtICE9PSBwcmlvckZvY3VzZWRFbGVtICYmIGlzSW5Eb2N1bWVudChwcmlvckZv
Y3VzZWRFbGVtKSkge1xuXHQgICAgICBpZiAoUmVhY3RJbnB1dFNlbGVjdGlvbi5oYXNTZWxlY3Rp
b25DYXBhYmlsaXRpZXMocHJpb3JGb2N1c2VkRWxlbSkpIHtcblx0ICAgICAgICBSZWFjdElucHV0
U2VsZWN0aW9uLnNldFNlbGVjdGlvbihwcmlvckZvY3VzZWRFbGVtLCBwcmlvclNlbGVjdGlvblJh
bmdlKTtcblx0ICAgICAgfVxuXHQgICAgICBmb2N1c05vZGUocHJpb3JGb2N1c2VkRWxlbSk7XG5c
dCAgICB9XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogQGdldFNlbGVjdGlvbjogR2V0cyB0
aGUgc2VsZWN0aW9uIGJvdW5kcyBvZiBhIGZvY3VzZWQgdGV4dGFyZWEsIGlucHV0IG9yXG5cdCAg
ICogY29udGVudEVkaXRhYmxlIG5vZGUuXG5cdCAgICogLUBpbnB1dDogTG9vayB1cCBzZWxlY3Rp
b24gYm91bmRzIG9mIHRoaXMgaW5wdXRcblx0ICAgKiAtQHJldHVybiB7c3RhcnQ6IHNlbGVjdGlv
blN0YXJ0LCBlbmQ6IHNlbGVjdGlvbkVuZH1cblx0ICAgKi9cblx0ICBnZXRTZWxlY3Rpb246IGZ1
bmN0aW9uIChpbnB1dCkge1xuXHQgICAgdmFyIHNlbGVjdGlvbjtcblx0XG5cdCAgICBpZiAoJ3Nl
bGVjdGlvblN0YXJ0JyBpbiBpbnB1dCkge1xuXHQgICAgICAvLyBNb2Rlcm4gYnJvd3NlciB3aXRo
IGlucHV0IG9yIHRleHRhcmVhLlxuXHQgICAgICBzZWxlY3Rpb24gPSB7XG5cdCAgICAgICAgc3Rh
cnQ6IGlucHV0LnNlbGVjdGlvblN0YXJ0LFxuXHQgICAgICAgIGVuZDogaW5wdXQuc2VsZWN0aW9u
RW5kXG5cdCAgICAgIH07XG5cdCAgICB9IGVsc2UgaWYgKGRvY3VtZW50LnNlbGVjdGlvbiAmJiBp
bnB1dC5ub2RlTmFtZSAmJiBpbnB1dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQn
KSB7XG5cdCAgICAgIC8vIElFOCBpbnB1dC5cblx0ICAgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQu
c2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCk7XG5cdCAgICAgIC8vIFRoZXJlIGNhbiBvbmx5IGJlIG9u
ZSBzZWxlY3Rpb24gcGVyIGRvY3VtZW50IGluIElFLCBzbyBpdCBtdXN0XG5cdCAgICAgIC8vIGJl
IGluIG91ciBlbGVtZW50LlxuXHQgICAgICBpZiAocmFuZ2UucGFyZW50RWxlbWVudCgpID09PSBp
bnB1dCkge1xuXHQgICAgICAgIHNlbGVjdGlvbiA9IHtcblx0ICAgICAgICAgIHN0YXJ0OiAtcmFu
Z2UubW92ZVN0YXJ0KCdjaGFyYWN0ZXInLCAtaW5wdXQudmFsdWUubGVuZ3RoKSxcblx0ICAgICAg
ICAgIGVuZDogLXJhbmdlLm1vdmVFbmQoJ2NoYXJhY3RlcicsIC1pbnB1dC52YWx1ZS5sZW5ndGgp
XG5cdCAgICAgICAgfTtcblx0ICAgICAgfVxuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgLy8gQ29u
dGVudCBlZGl0YWJsZSBvciBvbGQgSUUgdGV4dGFyZWEuXG5cdCAgICAgIHNlbGVjdGlvbiA9IFJl
YWN0RE9NU2VsZWN0aW9uLmdldE9mZnNldHMoaW5wdXQpO1xuXHQgICAgfVxuXHRcblx0ICAgIHJl
dHVybiBzZWxlY3Rpb24gfHwgeyBzdGFydDogMCwgZW5kOiAwIH07XG5cdCAgfSxcblx0XG5cdCAg
LyoqXG5cdCAgICogQHNldFNlbGVjdGlvbjogU2V0cyB0aGUgc2VsZWN0aW9uIGJvdW5kcyBvZiBh
IHRleHRhcmVhIG9yIGlucHV0IGFuZCBmb2N1c2VzXG5cdCAgICogdGhlIGlucHV0LlxuXHQgICAq
IC1AaW5wdXQgICAgIFNldCBzZWxlY3Rpb24gYm91bmRzIG9mIHRoaXMgaW5wdXQgb3IgdGV4dGFy
ZWFcblx0ICAgKiAtQG9mZnNldHMgICBPYmplY3Qgb2Ygc2FtZSBmb3JtIHRoYXQgaXMgcmV0dXJu
ZWQgZnJvbSBnZXQqXG5cdCAgICovXG5cdCAgc2V0U2VsZWN0aW9uOiBmdW5jdGlvbiAoaW5wdXQs
IG9mZnNldHMpIHtcblx0ICAgIHZhciBzdGFydCA9IG9mZnNldHMuc3RhcnQ7XG5cdCAgICB2YXIg
ZW5kID0gb2Zmc2V0cy5lbmQ7XG5cdCAgICBpZiAoZW5kID09PSB1bmRlZmluZWQpIHtcblx0ICAg
ICAgZW5kID0gc3RhcnQ7XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKCdzZWxlY3Rpb25TdGFydCcg
aW4gaW5wdXQpIHtcblx0ICAgICAgaW5wdXQuc2VsZWN0aW9uU3RhcnQgPSBzdGFydDtcblx0ICAg
ICAgaW5wdXQuc2VsZWN0aW9uRW5kID0gTWF0aC5taW4oZW5kLCBpbnB1dC52YWx1ZS5sZW5ndGgp
O1xuXHQgICAgfSBlbHNlIGlmIChkb2N1bWVudC5zZWxlY3Rpb24gJiYgaW5wdXQubm9kZU5hbWUg
JiYgaW5wdXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2lucHV0Jykge1xuXHQgICAgICB2
YXIgcmFuZ2UgPSBpbnB1dC5jcmVhdGVUZXh0UmFuZ2UoKTtcblx0ICAgICAgcmFuZ2UuY29sbGFw
c2UodHJ1ZSk7XG5cdCAgICAgIHJhbmdlLm1vdmVTdGFydCgnY2hhcmFjdGVyJywgc3RhcnQpO1xu
XHQgICAgICByYW5nZS5tb3ZlRW5kKCdjaGFyYWN0ZXInLCBlbmQgLSBzdGFydCk7XG5cdCAgICAg
IHJhbmdlLnNlbGVjdCgpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgUmVhY3RET01TZWxlY3Rp
b24uc2V0T2Zmc2V0cyhpbnB1dCwgb2Zmc2V0cyk7XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRc
blx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdElucHV0U2VsZWN0aW9uO1xuXG4vKioqLyB9LFxuLyog
NjcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
Xykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9c
blx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFj
a19yZXF1aXJlX18oMyk7XG5cdFxuXHR2YXIgRE9NTGF6eVRyZWUgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDE0KTtcblx0dmFyIERPTVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSk7XG5c
dHZhciBSZWFjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTcpO1xuXHR2YXIgUmVhY3RCcm93c2Vy
RXZlbnRFbWl0dGVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNSk7XG5cdHZhciBSZWFjdEN1cnJl
bnRPd25lciA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpO1xuXHR2YXIgUmVhY3RET01Db21wb25l
bnRUcmVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblx0dmFyIFJlYWN0RE9NQ29udGFpbmVy
SW5mbyA9IF9fd2VicGFja19yZXF1aXJlX18oMTM5KTtcblx0dmFyIFJlYWN0RE9NRmVhdHVyZUZs
YWdzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNDEpO1xuXHR2YXIgUmVhY3RGZWF0dXJlRmxhZ3Mg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY0KTtcblx0dmFyIFJlYWN0SW5zdGFuY2VNYXAgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDIxKTtcblx0dmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg4KTtcblx0dmFyIFJlYWN0TWFya3VwQ2hlY2tzdW0gPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDE1NSk7XG5cdHZhciBSZWFjdFJlY29uY2lsZXIgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDE2KTtcblx0dmFyIFJlYWN0VXBkYXRlUXVldWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQy
KTtcblx0dmFyIFJlYWN0VXBkYXRlcyA9IF9fd2VicGFja19yZXF1aXJlX18oOSk7XG5cdFxuXHR2
YXIgZW1wdHlPYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI0KTtcblx0dmFyIGluc3RhbnRp
YXRlUmVhY3RDb21wb25lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc1KTtcblx0dmFyIGludmFy
aWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdHZhciBzZXRJbm5lckhUTUwgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDI5KTtcblx0dmFyIHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50ID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg0OCk7XG5cdHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVp
cmVfXygyKTtcblx0XG5cdHZhciBBVFRSX05BTUUgPSBET01Qcm9wZXJ0eS5JRF9BVFRSSUJVVEVf
TkFNRTtcblx0dmFyIFJPT1RfQVRUUl9OQU1FID0gRE9NUHJvcGVydHkuUk9PVF9BVFRSSUJVVEVf
TkFNRTtcblx0XG5cdHZhciBFTEVNRU5UX05PREVfVFlQRSA9IDE7XG5cdHZhciBET0NfTk9ERV9U
WVBFID0gOTtcblx0dmFyIERPQ1VNRU5UX0ZSQUdNRU5UX05PREVfVFlQRSA9IDExO1xuXHRcblx0
dmFyIGluc3RhbmNlc0J5UmVhY3RSb290SUQgPSB7fTtcblx0XG5cdC8qKlxuXHQgKiBGaW5kcyB0
aGUgaW5kZXggb2YgdGhlIGZpcnN0IGNoYXJhY3RlclxuXHQgKiB0aGF0J3Mgbm90IGNvbW1vbiBi
ZXR3ZWVuIHRoZSB0d28gZ2l2ZW4gc3RyaW5ncy5cblx0ICpcblx0ICogQHJldHVybiB7bnVtYmVy
fSB0aGUgaW5kZXggb2YgdGhlIGNoYXJhY3RlciB3aGVyZSB0aGUgc3RyaW5ncyBkaXZlcmdlXG5c
dCAqL1xuXHRmdW5jdGlvbiBmaXJzdERpZmZlcmVuY2VJbmRleChzdHJpbmcxLCBzdHJpbmcyKSB7
XG5cdCAgdmFyIG1pbkxlbiA9IE1hdGgubWluKHN0cmluZzEubGVuZ3RoLCBzdHJpbmcyLmxlbmd0
aCk7XG5cdCAgZm9yICh2YXIgaSA9IDA7IGkgPCBtaW5MZW47IGkrKykge1xuXHQgICAgaWYgKHN0
cmluZzEuY2hhckF0KGkpICE9PSBzdHJpbmcyLmNoYXJBdChpKSkge1xuXHQgICAgICByZXR1cm4g
aTtcblx0ICAgIH1cblx0ICB9XG5cdCAgcmV0dXJuIHN0cmluZzEubGVuZ3RoID09PSBzdHJpbmcy
Lmxlbmd0aCA/IC0xIDogbWluTGVuO1xuXHR9XG5cdFxuXHQvKipcblx0ICogQHBhcmFtIHtET01F
bGVtZW50fERPTURvY3VtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgdGhhdCBtYXkgY29udGFp
blxuXHQgKiBhIFJlYWN0IGNvbXBvbmVudFxuXHQgKiBAcmV0dXJuIHs/Kn0gRE9NIGVsZW1lbnQg
dGhhdCBtYXkgaGF2ZSB0aGUgcmVhY3RSb290IElELCBvciBudWxsLlxuXHQgKi9cblx0ZnVuY3Rp
b24gZ2V0UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVyKGNvbnRhaW5lcikge1xuXHQgIGlmICgh
Y29udGFpbmVyKSB7XG5cdCAgICByZXR1cm4gbnVsbDtcblx0ICB9XG5cdFxuXHQgIGlmIChjb250
YWluZXIubm9kZVR5cGUgPT09IERPQ19OT0RFX1RZUEUpIHtcblx0ICAgIHJldHVybiBjb250YWlu
ZXIuZG9jdW1lbnRFbGVtZW50O1xuXHQgIH0gZWxzZSB7XG5cdCAgICByZXR1cm4gY29udGFpbmVy
LmZpcnN0Q2hpbGQ7XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBpbnRlcm5hbEdldElEKG5v
ZGUpIHtcblx0ICAvLyBJZiBub2RlIGlzIHNvbWV0aGluZyBsaWtlIGEgd2luZG93LCBkb2N1bWVu
dCwgb3IgdGV4dCBub2RlLCBub25lIG9mXG5cdCAgLy8gd2hpY2ggc3VwcG9ydCBhdHRyaWJ1dGVz
IG9yIGEgLmdldEF0dHJpYnV0ZSBtZXRob2QsIGdyYWNlZnVsbHkgcmV0dXJuXG5cdCAgLy8gdGhl
IGVtcHR5IHN0cmluZywgYXMgaWYgdGhlIGF0dHJpYnV0ZSB3ZXJlIG1pc3NpbmcuXG5cdCAgcmV0
dXJuIG5vZGUuZ2V0QXR0cmlidXRlICYmIG5vZGUuZ2V0QXR0cmlidXRlKEFUVFJfTkFNRSkgfHwg
Jyc7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBNb3VudHMgdGhpcyBjb21wb25lbnQgYW5kIGluc2Vy
dHMgaXQgaW50byB0aGUgRE9NLlxuXHQgKlxuXHQgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBj
b21wb25lbnRJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdG8gbW91bnQuXG5cdCAqIEBwYXJhbSB7RE9N
RWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRvIG1vdW50IGludG8uXG5cdCAqIEBwYXJh
bSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cblx0ICogQHBhcmFtIHti
b29sZWFufSBzaG91bGRSZXVzZU1hcmt1cCBJZiB0cnVlLCBkbyBub3QgaW5zZXJ0IG1hcmt1cFxu
XHQgKi9cblx0ZnVuY3Rpb24gbW91bnRDb21wb25lbnRJbnRvTm9kZSh3cmFwcGVySW5zdGFuY2Us
IGNvbnRhaW5lciwgdHJhbnNhY3Rpb24sIHNob3VsZFJldXNlTWFya3VwLCBjb250ZXh0KSB7XG5c
dCAgdmFyIG1hcmtlck5hbWU7XG5cdCAgaWYgKFJlYWN0RmVhdHVyZUZsYWdzLmxvZ1RvcExldmVs
UmVuZGVycykge1xuXHQgICAgdmFyIHdyYXBwZWRFbGVtZW50ID0gd3JhcHBlckluc3RhbmNlLl9j
dXJyZW50RWxlbWVudC5wcm9wcy5jaGlsZDtcblx0ICAgIHZhciB0eXBlID0gd3JhcHBlZEVsZW1l
bnQudHlwZTtcblx0ICAgIG1hcmtlck5hbWUgPSAnUmVhY3QgbW91bnQ6ICcgKyAodHlwZW9mIHR5
cGUgPT09ICdzdHJpbmcnID8gdHlwZSA6IHR5cGUuZGlzcGxheU5hbWUgfHwgdHlwZS5uYW1lKTtc
blx0ICAgIGNvbnNvbGUudGltZShtYXJrZXJOYW1lKTtcblx0ICB9XG5cdFxuXHQgIHZhciBtYXJr
dXAgPSBSZWFjdFJlY29uY2lsZXIubW91bnRDb21wb25lbnQod3JhcHBlckluc3RhbmNlLCB0cmFu
c2FjdGlvbiwgbnVsbCwgUmVhY3RET01Db250YWluZXJJbmZvKHdyYXBwZXJJbnN0YW5jZSwgY29u
dGFpbmVyKSwgY29udGV4dCwgMCAvKiBwYXJlbnREZWJ1Z0lEICovXG5cdCAgKTtcblx0XG5cdCAg
aWYgKG1hcmtlck5hbWUpIHtcblx0ICAgIGNvbnNvbGUudGltZUVuZChtYXJrZXJOYW1lKTtcblx0
ICB9XG5cdFxuXHQgIHdyYXBwZXJJbnN0YW5jZS5fcmVuZGVyZWRDb21wb25lbnQuX3RvcExldmVs
V3JhcHBlciA9IHdyYXBwZXJJbnN0YW5jZTtcblx0ICBSZWFjdE1vdW50Ll9tb3VudEltYWdlSW50
b05vZGUobWFya3VwLCBjb250YWluZXIsIHdyYXBwZXJJbnN0YW5jZSwgc2hvdWxkUmV1c2VNYXJr
dXAsIHRyYW5zYWN0aW9uKTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIEJhdGNoZWQgbW91bnQuXG5c
dCAqXG5cdCAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNvbXBvbmVudEluc3RhbmNlIFRoZSBp
bnN0YW5jZSB0byBtb3VudC5cblx0ICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWluZXIgRE9N
IGVsZW1lbnQgdG8gbW91bnQgaW50by5cblx0ICogQHBhcmFtIHtib29sZWFufSBzaG91bGRSZXVz
ZU1hcmt1cCBJZiB0cnVlLCBkbyBub3QgaW5zZXJ0IG1hcmt1cFxuXHQgKi9cblx0ZnVuY3Rpb24g
YmF0Y2hlZE1vdW50Q29tcG9uZW50SW50b05vZGUoY29tcG9uZW50SW5zdGFuY2UsIGNvbnRhaW5l
ciwgc2hvdWxkUmV1c2VNYXJrdXAsIGNvbnRleHQpIHtcblx0ICB2YXIgdHJhbnNhY3Rpb24gPSBS
ZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5nZXRQb29sZWQoXG5cdCAgLyog
dXNlQ3JlYXRlRWxlbWVudCAqL1xuXHQgICFzaG91bGRSZXVzZU1hcmt1cCAmJiBSZWFjdERPTUZl
YXR1cmVGbGFncy51c2VDcmVhdGVFbGVtZW50KTtcblx0ICB0cmFuc2FjdGlvbi5wZXJmb3JtKG1v
dW50Q29tcG9uZW50SW50b05vZGUsIG51bGwsIGNvbXBvbmVudEluc3RhbmNlLCBjb250YWluZXIs
IHRyYW5zYWN0aW9uLCBzaG91bGRSZXVzZU1hcmt1cCwgY29udGV4dCk7XG5cdCAgUmVhY3RVcGRh
dGVzLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVsZWFzZSh0cmFuc2FjdGlvbik7XG5cdH1c
blx0XG5cdC8qKlxuXHQgKiBVbm1vdW50cyBhIGNvbXBvbmVudCBhbmQgcmVtb3ZlcyBpdCBmcm9t
IHRoZSBET00uXG5cdCAqXG5cdCAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGluc3RhbmNlIFJl
YWN0IGNvbXBvbmVudCBpbnN0YW5jZS5cblx0ICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWlu
ZXIgRE9NIGVsZW1lbnQgdG8gdW5tb3VudCBmcm9tLlxuXHQgKiBAZmluYWxcblx0ICogQGludGVy
bmFsXG5cdCAqIEBzZWUge1JlYWN0TW91bnQudW5tb3VudENvbXBvbmVudEF0Tm9kZX1cblx0ICov
XG5cdGZ1bmN0aW9uIHVubW91bnRDb21wb25lbnRGcm9tTm9kZShpbnN0YW5jZSwgY29udGFpbmVy
LCBzYWZlbHkpIHtcblx0ICBpZiAoZmFsc2UpIHtcblx0ICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9u
LmRlYnVnVG9vbC5vbkJlZ2luRmx1c2goKTtcblx0ICB9XG5cdCAgUmVhY3RSZWNvbmNpbGVyLnVu
bW91bnRDb21wb25lbnQoaW5zdGFuY2UsIHNhZmVseSk7XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAg
ICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25FbmRGbHVzaCgpO1xuXHQgIH1cblx0
XG5cdCAgaWYgKGNvbnRhaW5lci5ub2RlVHlwZSA9PT0gRE9DX05PREVfVFlQRSkge1xuXHQgICAg
Y29udGFpbmVyID0gY29udGFpbmVyLmRvY3VtZW50RWxlbWVudDtcblx0ICB9XG5cdFxuXHQgIC8v
IGh0dHA6Ly9qc3BlcmYuY29tL2VtcHR5aW5nLWEtbm9kZVxuXHQgIHdoaWxlIChjb250YWluZXIu
bGFzdENoaWxkKSB7XG5cdCAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQoY29udGFpbmVyLmxhc3RD
aGlsZCk7XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICogVHJ1ZSBpZiB0aGUgc3VwcGxpZWQg
RE9NIG5vZGUgaGFzIGEgZGlyZWN0IFJlYWN0LXJlbmRlcmVkIGNoaWxkIHRoYXQgaXNcblx0ICog
bm90IGEgUmVhY3Qgcm9vdCBlbGVtZW50LiBVc2VmdWwgZm9yIHdhcm5pbmcgaW4gYHJlbmRlcmAs
XG5cdCAqIGB1bm1vdW50Q29tcG9uZW50QXROb2RlYCwgZXRjLlxuXHQgKlxuXHQgKiBAcGFyYW0g
ez9ET01FbGVtZW50fSBub2RlIFRoZSBjYW5kaWRhdGUgRE9NIG5vZGUuXG5cdCAqIEByZXR1cm4g
e2Jvb2xlYW59IFRydWUgaWYgdGhlIERPTSBlbGVtZW50IGNvbnRhaW5zIGEgZGlyZWN0IGNoaWxk
IHRoYXQgd2FzXG5cdCAqIHJlbmRlcmVkIGJ5IFJlYWN0IGJ1dCBpcyBub3QgYSByb290IGVsZW1l
bnQuXG5cdCAqIEBpbnRlcm5hbFxuXHQgKi9cblx0ZnVuY3Rpb24gaGFzTm9uUm9vdFJlYWN0Q2hp
bGQoY29udGFpbmVyKSB7XG5cdCAgdmFyIHJvb3RFbCA9IGdldFJlYWN0Um9vdEVsZW1lbnRJbkNv
bnRhaW5lcihjb250YWluZXIpO1xuXHQgIGlmIChyb290RWwpIHtcblx0ICAgIHZhciBpbnN0ID0g
UmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUocm9vdEVsKTtcblx0ICAg
IHJldHVybiAhIShpbnN0ICYmIGluc3QuX2hvc3RQYXJlbnQpO1xuXHQgIH1cblx0fVxuXHRcblx0
LyoqXG5cdCAqIFRydWUgaWYgdGhlIHN1cHBsaWVkIERPTSBub2RlIGlzIGEgUmVhY3QgRE9NIGVs
ZW1lbnQgYW5kXG5cdCAqIGl0IGhhcyBiZWVuIHJlbmRlcmVkIGJ5IGFub3RoZXIgY29weSBvZiBS
ZWFjdC5cblx0ICpcblx0ICogQHBhcmFtIHs/RE9NRWxlbWVudH0gbm9kZSBUaGUgY2FuZGlkYXRl
IERPTSBub2RlLlxuXHQgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBET00gaGFzIGJl
ZW4gcmVuZGVyZWQgYnkgYW5vdGhlciBjb3B5IG9mIFJlYWN0XG5cdCAqIEBpbnRlcm5hbFxuXHQg
Ki9cblx0ZnVuY3Rpb24gbm9kZUlzUmVuZGVyZWRCeU90aGVySW5zdGFuY2UoY29udGFpbmVyKSB7
XG5cdCAgdmFyIHJvb3RFbCA9IGdldFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWlu
ZXIpO1xuXHQgIHJldHVybiAhIShyb290RWwgJiYgaXNSZWFjdE5vZGUocm9vdEVsKSAmJiAhUmVh
Y3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUocm9vdEVsKSk7XG5cdH1cblx0
XG5cdC8qKlxuXHQgKiBUcnVlIGlmIHRoZSBzdXBwbGllZCBET00gbm9kZSBpcyBhIHZhbGlkIG5v
ZGUgZWxlbWVudC5cblx0ICpcblx0ICogQHBhcmFtIHs/RE9NRWxlbWVudH0gbm9kZSBUaGUgY2Fu
ZGlkYXRlIERPTSBub2RlLlxuXHQgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBET00g
aXMgYSB2YWxpZCBET00gbm9kZS5cblx0ICogQGludGVybmFsXG5cdCAqL1xuXHRmdW5jdGlvbiBp
c1ZhbGlkQ29udGFpbmVyKG5vZGUpIHtcblx0ICByZXR1cm4gISEobm9kZSAmJiAobm9kZS5ub2Rl
VHlwZSA9PT0gRUxFTUVOVF9OT0RFX1RZUEUgfHwgbm9kZS5ub2RlVHlwZSA9PT0gRE9DX05PREVf
VFlQRSB8fCBub2RlLm5vZGVUeXBlID09PSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFX1RZUEUpKTtc
blx0fVxuXHRcblx0LyoqXG5cdCAqIFRydWUgaWYgdGhlIHN1cHBsaWVkIERPTSBub2RlIGlzIGEg
dmFsaWQgUmVhY3Qgbm9kZSBlbGVtZW50LlxuXHQgKlxuXHQgKiBAcGFyYW0gez9ET01FbGVtZW50
fSBub2RlIFRoZSBjYW5kaWRhdGUgRE9NIG5vZGUuXG5cdCAqIEByZXR1cm4ge2Jvb2xlYW59IFRy
dWUgaWYgdGhlIERPTSBpcyBhIHZhbGlkIFJlYWN0IERPTSBub2RlLlxuXHQgKiBAaW50ZXJuYWxc
blx0ICovXG5cdGZ1bmN0aW9uIGlzUmVhY3ROb2RlKG5vZGUpIHtcblx0ICByZXR1cm4gaXNWYWxp
ZENvbnRhaW5lcihub2RlKSAmJiAobm9kZS5oYXNBdHRyaWJ1dGUoUk9PVF9BVFRSX05BTUUpIHx8
IG5vZGUuaGFzQXR0cmlidXRlKEFUVFJfTkFNRSkpO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBnZXRI
b3N0Um9vdEluc3RhbmNlSW5Db250YWluZXIoY29udGFpbmVyKSB7XG5cdCAgdmFyIHJvb3RFbCA9
IGdldFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpO1xuXHQgIHZhciBwcmV2
SG9zdEluc3RhbmNlID0gcm9vdEVsICYmIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5j
ZUZyb21Ob2RlKHJvb3RFbCk7XG5cdCAgcmV0dXJuIHByZXZIb3N0SW5zdGFuY2UgJiYgIXByZXZI
b3N0SW5zdGFuY2UuX2hvc3RQYXJlbnQgPyBwcmV2SG9zdEluc3RhbmNlIDogbnVsbDtcblx0fVxu
XHRcblx0ZnVuY3Rpb24gZ2V0VG9wTGV2ZWxXcmFwcGVySW5Db250YWluZXIoY29udGFpbmVyKSB7
XG5cdCAgdmFyIHJvb3QgPSBnZXRIb3N0Um9vdEluc3RhbmNlSW5Db250YWluZXIoY29udGFpbmVy
KTtcblx0ICByZXR1cm4gcm9vdCA/IHJvb3QuX2hvc3RDb250YWluZXJJbmZvLl90b3BMZXZlbFdy
YXBwZXIgOiBudWxsO1xuXHR9XG5cdFxuXHQvKipcblx0ICogVGVtcG9yYXJ5ICg/KSBoYWNrIHNv
IHRoYXQgd2UgY2FuIHN0b3JlIGFsbCB0b3AtbGV2ZWwgcGVuZGluZyB1cGRhdGVzIG9uXG5cdCAq
IGNvbXBvc2l0ZXMgaW5zdGVhZCBvZiBoYXZpbmcgdG8gd29ycnkgYWJvdXQgZGlmZmVyZW50IHR5
cGVzIG9mIGNvbXBvbmVudHNcblx0ICogaGVyZS5cblx0ICovXG5cdHZhciB0b3BMZXZlbFJvb3RD
b3VudGVyID0gMTtcblx0dmFyIFRvcExldmVsV3JhcHBlciA9IGZ1bmN0aW9uICgpIHtcblx0ICB0
aGlzLnJvb3RJRCA9IHRvcExldmVsUm9vdENvdW50ZXIrKztcblx0fTtcblx0VG9wTGV2ZWxXcmFw
cGVyLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50ID0ge307XG5cdGlmIChmYWxzZSkge1xuXHQg
IFRvcExldmVsV3JhcHBlci5kaXNwbGF5TmFtZSA9ICdUb3BMZXZlbFdyYXBwZXInO1xuXHR9XG5c
dFRvcExldmVsV3JhcHBlci5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuXHQgIHJl
dHVybiB0aGlzLnByb3BzLmNoaWxkO1xuXHR9O1xuXHRUb3BMZXZlbFdyYXBwZXIuaXNSZWFjdFRv
cExldmVsV3JhcHBlciA9IHRydWU7XG5cdFxuXHQvKipcblx0ICogTW91bnRpbmcgaXMgdGhlIHBy
b2Nlc3Mgb2YgaW5pdGlhbGl6aW5nIGEgUmVhY3QgY29tcG9uZW50IGJ5IGNyZWF0aW5nIGl0c1xu
XHQgKiByZXByZXNlbnRhdGl2ZSBET00gZWxlbWVudHMgYW5kIGluc2VydGluZyB0aGVtIGludG8g
YSBzdXBwbGllZCBgY29udGFpbmVyYC5cblx0ICogQW55IHByaW9yIGNvbnRlbnQgaW5zaWRlIGBj
b250YWluZXJgIGlzIGRlc3Ryb3llZCBpbiB0aGUgcHJvY2Vzcy5cblx0ICpcblx0ICogICBSZWFj
dE1vdW50LnJlbmRlcihcblx0ICogICAgIGNvbXBvbmVudCxcblx0ICogICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdjb250YWluZXInKVxuXHQgKiAgICk7XG5cdCAqXG5cdCAqICAgPGRpdiBp
ZD1cImNvbnRhaW5lclwiPiAgICAgICAgICAgICAgICAgICA8LS0gU3VwcGxpZWQgYGNvbnRhaW5l
cmAuXG5cdCAqICAgICA8ZGl2IGRhdGEtcmVhY3RpZD1cIi4zXCI+ICAgICAgICAgICAgICA8LS0g
UmVuZGVyZWQgcmVhY3RSb290IG9mIFJlYWN0XG5cdCAqICAgICAgIC8vIC4uLiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudC5cblx0ICogICAgIDwvZGl2PlxuXHQgKiAg
IDwvZGl2PlxuXHQgKlxuXHQgKiBJbnNpZGUgb2YgYGNvbnRhaW5lcmAsIHRoZSBmaXJzdCBlbGVt
ZW50IHJlbmRlcmVkIGlzIHRoZSBcInJlYWN0Um9vdFwiLlxuXHQgKi9cblx0dmFyIFJlYWN0TW91
bnQgPSB7XG5cdCAgVG9wTGV2ZWxXcmFwcGVyOiBUb3BMZXZlbFdyYXBwZXIsXG5cdFxuXHQgIC8q
KlxuXHQgICAqIFVzZWQgYnkgZGV2dG9vbHMuIFRoZSBrZXlzIGFyZSBub3QgaW1wb3J0YW50Llxu
XHQgICAqL1xuXHQgIF9pbnN0YW5jZXNCeVJlYWN0Um9vdElEOiBpbnN0YW5jZXNCeVJlYWN0Um9v
dElELFxuXHRcblx0ICAvKipcblx0ICAgKiBUaGlzIGlzIGEgaG9vayBwcm92aWRlZCB0byBzdXBw
b3J0IHJlbmRlcmluZyBSZWFjdCBjb21wb25lbnRzIHdoaWxlXG5cdCAgICogZW5zdXJpbmcgdGhh
dCB0aGUgYXBwYXJlbnQgc2Nyb2xsIHBvc2l0aW9uIG9mIGl0cyBgY29udGFpbmVyYCBkb2VzIG5v
dFxuXHQgICAqIGNoYW5nZS5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29u
dGFpbmVyIFRoZSBgY29udGFpbmVyYCBiZWluZyByZW5kZXJlZCBpbnRvLlxuXHQgICAqIEBwYXJh
bSB7ZnVuY3Rpb259IHJlbmRlckNhbGxiYWNrIFRoaXMgbXVzdCBiZSBjYWxsZWQgb25jZSB0byBk
byB0aGUgcmVuZGVyLlxuXHQgICAqL1xuXHQgIHNjcm9sbE1vbml0b3I6IGZ1bmN0aW9uIChjb250
YWluZXIsIHJlbmRlckNhbGxiYWNrKSB7XG5cdCAgICByZW5kZXJDYWxsYmFjaygpO1xuXHQgIH0s
XG5cdFxuXHQgIC8qKlxuXHQgICAqIFRha2UgYSBjb21wb25lbnQgdGhhdCdzIGFscmVhZHkgbW91
bnRlZCBpbnRvIHRoZSBET00gYW5kIHJlcGxhY2UgaXRzIHByb3BzXG5cdCAgICogQHBhcmFtIHtS
ZWFjdENvbXBvbmVudH0gcHJldkNvbXBvbmVudCBjb21wb25lbnQgaW5zdGFuY2UgYWxyZWFkeSBp
biB0aGUgRE9NXG5cdCAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50IGNvbXBv
bmVudCBpbnN0YW5jZSB0byByZW5kZXJcblx0ICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNvbnRh
aW5lciBjb250YWluZXIgdG8gcmVuZGVyIGludG9cblx0ICAgKiBAcGFyYW0gez9mdW5jdGlvbn0g
Y2FsbGJhY2sgZnVuY3Rpb24gdHJpZ2dlcmVkIG9uIGNvbXBsZXRpb25cblx0ICAgKi9cblx0ICBf
dXBkYXRlUm9vdENvbXBvbmVudDogZnVuY3Rpb24gKHByZXZDb21wb25lbnQsIG5leHRFbGVtZW50
LCBuZXh0Q29udGV4dCwgY29udGFpbmVyLCBjYWxsYmFjaykge1xuXHQgICAgUmVhY3RNb3VudC5z
Y3JvbGxNb25pdG9yKGNvbnRhaW5lciwgZnVuY3Rpb24gKCkge1xuXHQgICAgICBSZWFjdFVwZGF0
ZVF1ZXVlLmVucXVldWVFbGVtZW50SW50ZXJuYWwocHJldkNvbXBvbmVudCwgbmV4dEVsZW1lbnQs
IG5leHRDb250ZXh0KTtcblx0ICAgICAgaWYgKGNhbGxiYWNrKSB7XG5cdCAgICAgICAgUmVhY3RV
cGRhdGVRdWV1ZS5lbnF1ZXVlQ2FsbGJhY2tJbnRlcm5hbChwcmV2Q29tcG9uZW50LCBjYWxsYmFj
ayk7XG5cdCAgICAgIH1cblx0ICAgIH0pO1xuXHRcblx0ICAgIHJldHVybiBwcmV2Q29tcG9uZW50
O1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFJlbmRlciBhIG5ldyBjb21wb25lbnQgaW50
byB0aGUgRE9NLiBIb29rZWQgYnkgaG9va3MhXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0
RWxlbWVudH0gbmV4dEVsZW1lbnQgZWxlbWVudCB0byByZW5kZXJcblx0ICAgKiBAcGFyYW0ge0RP
TUVsZW1lbnR9IGNvbnRhaW5lciBjb250YWluZXIgdG8gcmVuZGVyIGludG9cblx0ICAgKiBAcGFy
YW0ge2Jvb2xlYW59IHNob3VsZFJldXNlTWFya3VwIGlmIHdlIHNob3VsZCBza2lwIHRoZSBtYXJr
dXAgaW5zZXJ0aW9uXG5cdCAgICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9IG5leHRDb21wb25l
bnRcblx0ICAgKi9cblx0ICBfcmVuZGVyTmV3Um9vdENvbXBvbmVudDogZnVuY3Rpb24gKG5leHRF
bGVtZW50LCBjb250YWluZXIsIHNob3VsZFJldXNlTWFya3VwLCBjb250ZXh0KSB7XG5cdCAgICAv
LyBWYXJpb3VzIHBhcnRzIG9mIG91ciBjb2RlIChzdWNoIGFzIFJlYWN0Q29tcG9zaXRlQ29tcG9u
ZW50J3Ncblx0ICAgIC8vIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQpIGFzc3VtZSB0aGF0IGNh
bGxzIHRvIHJlbmRlciBhcmVuJ3QgbmVzdGVkO1xuXHQgICAgLy8gdmVyaWZ5IHRoYXQgdGhhdCdz
IHRoZSBjYXNlLlxuXHQgICAgIGZhbHNlID8gd2FybmluZyhSZWFjdEN1cnJlbnRPd25lci5jdXJy
ZW50ID09IG51bGwsICdfcmVuZGVyTmV3Um9vdENvbXBvbmVudCgpOiBSZW5kZXIgbWV0aG9kcyBz
aG91bGQgYmUgYSBwdXJlIGZ1bmN0aW9uICcgKyAnb2YgcHJvcHMgYW5kIHN0YXRlOyB0cmlnZ2Vy
aW5nIG5lc3RlZCBjb21wb25lbnQgdXBkYXRlcyBmcm9tICcgKyAncmVuZGVyIGlzIG5vdCBhbGxv
d2VkLiBJZiBuZWNlc3NhcnksIHRyaWdnZXIgbmVzdGVkIHVwZGF0ZXMgaW4gJyArICdjb21wb25l
bnREaWRVcGRhdGUuIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mICVzLicsIFJlYWN0Q3VycmVu
dE93bmVyLmN1cnJlbnQgJiYgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudC5nZXROYW1lKCkgfHwg
J1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiB2b2lkIDA7XG5cdFxuXHQgICAgIWlzVmFsaWRD
b250YWluZXIoY29udGFpbmVyKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ19yZWdpc3Rl
ckNvbXBvbmVudCguLi4pOiBUYXJnZXQgY29udGFpbmVyIGlzIG5vdCBhIERPTSBlbGVtZW50Licp
IDogX3Byb2RJbnZhcmlhbnQoJzM3JykgOiB2b2lkIDA7XG5cdFxuXHQgICAgUmVhY3RCcm93c2Vy
RXZlbnRFbWl0dGVyLmVuc3VyZVNjcm9sbFZhbHVlTW9uaXRvcmluZygpO1xuXHQgICAgdmFyIGNv
bXBvbmVudEluc3RhbmNlID0gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChuZXh0RWxlbWVudCwg
ZmFsc2UpO1xuXHRcblx0ICAgIC8vIFRoZSBpbml0aWFsIHJlbmRlciBpcyBzeW5jaHJvbm91cyBi
dXQgYW55IHVwZGF0ZXMgdGhhdCBoYXBwZW4gZHVyaW5nXG5cdCAgICAvLyByZW5kZXJpbmcsIGlu
IGNvbXBvbmVudFdpbGxNb3VudCBvciBjb21wb25lbnREaWRNb3VudCwgd2lsbCBiZSBiYXRjaGVk
XG5cdCAgICAvLyBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgYmF0Y2hpbmcgc3RyYXRlZ3kuXG5c
dFxuXHQgICAgUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzKGJhdGNoZWRNb3VudENvbXBvbmVu
dEludG9Ob2RlLCBjb21wb25lbnRJbnN0YW5jZSwgY29udGFpbmVyLCBzaG91bGRSZXVzZU1hcmt1
cCwgY29udGV4dCk7XG5cdFxuXHQgICAgdmFyIHdyYXBwZXJJRCA9IGNvbXBvbmVudEluc3RhbmNl
Ll9pbnN0YW5jZS5yb290SUQ7XG5cdCAgICBpbnN0YW5jZXNCeVJlYWN0Um9vdElEW3dyYXBwZXJJ
RF0gPSBjb21wb25lbnRJbnN0YW5jZTtcblx0XG5cdCAgICByZXR1cm4gY29tcG9uZW50SW5zdGFu
Y2U7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogUmVuZGVycyBhIFJlYWN0IGNvbXBvbmVu
dCBpbnRvIHRoZSBET00gaW4gdGhlIHN1cHBsaWVkIGBjb250YWluZXJgLlxuXHQgICAqXG5cdCAg
ICogSWYgdGhlIFJlYWN0IGNvbXBvbmVudCB3YXMgcHJldmlvdXNseSByZW5kZXJlZCBpbnRvIGBj
b250YWluZXJgLCB0aGlzIHdpbGxcblx0ICAgKiBwZXJmb3JtIGFuIHVwZGF0ZSBvbiBpdCBhbmQg
b25seSBtdXRhdGUgdGhlIERPTSBhcyBuZWNlc3NhcnkgdG8gcmVmbGVjdCB0aGVcblx0ICAgKiBs
YXRlc3QgUmVhY3QgY29tcG9uZW50LlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtSZWFjdENvbXBv
bmVudH0gcGFyZW50Q29tcG9uZW50IFRoZSBjb25jZXB0dWFsIHBhcmVudCBvZiB0aGlzIHJlbmRl
ciB0cmVlLlxuXHQgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudCBDb21wb25l
bnQgZWxlbWVudCB0byByZW5kZXIuXG5cdCAgICogQHBhcmFtIHtET01FbGVtZW50fSBjb250YWlu
ZXIgRE9NIGVsZW1lbnQgdG8gcmVuZGVyIGludG8uXG5cdCAgICogQHBhcmFtIHs/ZnVuY3Rpb259
IGNhbGxiYWNrIGZ1bmN0aW9uIHRyaWdnZXJlZCBvbiBjb21wbGV0aW9uXG5cdCAgICogQHJldHVy
biB7UmVhY3RDb21wb25lbnR9IENvbXBvbmVudCBpbnN0YW5jZSByZW5kZXJlZCBpbiBgY29udGFp
bmVyYC5cblx0ICAgKi9cblx0ICByZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjogZnVuY3Rpb24g
KHBhcmVudENvbXBvbmVudCwgbmV4dEVsZW1lbnQsIGNvbnRhaW5lciwgY2FsbGJhY2spIHtcblx0
ICAgICEocGFyZW50Q29tcG9uZW50ICE9IG51bGwgJiYgUmVhY3RJbnN0YW5jZU1hcC5oYXMocGFy
ZW50Q29tcG9uZW50KSkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdwYXJlbnRDb21wb25l
bnQgbXVzdCBiZSBhIHZhbGlkIFJlYWN0IENvbXBvbmVudCcpIDogX3Byb2RJbnZhcmlhbnQoJzM4
JykgOiB2b2lkIDA7XG5cdCAgICByZXR1cm4gUmVhY3RNb3VudC5fcmVuZGVyU3VidHJlZUludG9D
b250YWluZXIocGFyZW50Q29tcG9uZW50LCBuZXh0RWxlbWVudCwgY29udGFpbmVyLCBjYWxsYmFj
ayk7XG5cdCAgfSxcblx0XG5cdCAgX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyOiBmdW5jdGlv
biAocGFyZW50Q29tcG9uZW50LCBuZXh0RWxlbWVudCwgY29udGFpbmVyLCBjYWxsYmFjaykge1xu
XHQgICAgUmVhY3RVcGRhdGVRdWV1ZS52YWxpZGF0ZUNhbGxiYWNrKGNhbGxiYWNrLCAnUmVhY3RE
T00ucmVuZGVyJyk7XG5cdCAgICAhUmVhY3QuaXNWYWxpZEVsZW1lbnQobmV4dEVsZW1lbnQpID8g
IGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3RET00ucmVuZGVyKCk6IEludmFsaWQgY29t
cG9uZW50IGVsZW1lbnQuJXMnLCB0eXBlb2YgbmV4dEVsZW1lbnQgPT09ICdzdHJpbmcnID8gXCIg
SW5zdGVhZCBvZiBwYXNzaW5nIGEgc3RyaW5nIGxpa2UgJ2RpdicsIHBhc3MgXCIgKyBcIlJlYWN0
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpIG9yIDxkaXYgLz4uXCIgOiB0eXBlb2YgbmV4dEVsZW1lbnQg
PT09ICdmdW5jdGlvbicgPyAnIEluc3RlYWQgb2YgcGFzc2luZyBhIGNsYXNzIGxpa2UgRm9vLCBw
YXNzICcgKyAnUmVhY3QuY3JlYXRlRWxlbWVudChGb28pIG9yIDxGb28gLz4uJyA6IC8vIENoZWNr
IGlmIGl0IHF1YWNrcyBsaWtlIGFuIGVsZW1lbnRcblx0ICAgIG5leHRFbGVtZW50ICE9IG51bGwg
JiYgbmV4dEVsZW1lbnQucHJvcHMgIT09IHVuZGVmaW5lZCA/ICcgVGhpcyBtYXkgYmUgY2F1c2Vk
IGJ5IHVuaW50ZW50aW9uYWxseSBsb2FkaW5nIHR3byBpbmRlcGVuZGVudCAnICsgJ2NvcGllcyBv
ZiBSZWFjdC4nIDogJycpIDogX3Byb2RJbnZhcmlhbnQoJzM5JywgdHlwZW9mIG5leHRFbGVtZW50
ID09PSAnc3RyaW5nJyA/IFwiIEluc3RlYWQgb2YgcGFzc2luZyBhIHN0cmluZyBsaWtlICdkaXYn
LCBwYXNzIFwiICsgXCJSZWFjdC5jcmVhdGVFbGVtZW50KCdkaXYnKSBvciA8ZGl2IC8+LlwiIDog
dHlwZW9mIG5leHRFbGVtZW50ID09PSAnZnVuY3Rpb24nID8gJyBJbnN0ZWFkIG9mIHBhc3Npbmcg
YSBjbGFzcyBsaWtlIEZvbywgcGFzcyAnICsgJ1JlYWN0LmNyZWF0ZUVsZW1lbnQoRm9vKSBvciA8
Rm9vIC8+LicgOiBuZXh0RWxlbWVudCAhPSBudWxsICYmIG5leHRFbGVtZW50LnByb3BzICE9PSB1
bmRlZmluZWQgPyAnIFRoaXMgbWF5IGJlIGNhdXNlZCBieSB1bmludGVudGlvbmFsbHkgbG9hZGlu
ZyB0d28gaW5kZXBlbmRlbnQgJyArICdjb3BpZXMgb2YgUmVhY3QuJyA6ICcnKSA6IHZvaWQgMDtc
blx0XG5cdCAgICAgZmFsc2UgPyB3YXJuaW5nKCFjb250YWluZXIgfHwgIWNvbnRhaW5lci50YWdO
YW1lIHx8IGNvbnRhaW5lci50YWdOYW1lLnRvVXBwZXJDYXNlKCkgIT09ICdCT0RZJywgJ3JlbmRl
cigpOiBSZW5kZXJpbmcgY29tcG9uZW50cyBkaXJlY3RseSBpbnRvIGRvY3VtZW50LmJvZHkgaXMg
JyArICdkaXNjb3VyYWdlZCwgc2luY2UgaXRzIGNoaWxkcmVuIGFyZSBvZnRlbiBtYW5pcHVsYXRl
ZCBieSB0aGlyZC1wYXJ0eSAnICsgJ3NjcmlwdHMgYW5kIGJyb3dzZXIgZXh0ZW5zaW9ucy4gVGhp
cyBtYXkgbGVhZCB0byBzdWJ0bGUgJyArICdyZWNvbmNpbGlhdGlvbiBpc3N1ZXMuIFRyeSByZW5k
ZXJpbmcgaW50byBhIGNvbnRhaW5lciBlbGVtZW50IGNyZWF0ZWQgJyArICdmb3IgeW91ciBhcHAu
JykgOiB2b2lkIDA7XG5cdFxuXHQgICAgdmFyIG5leHRXcmFwcGVkRWxlbWVudCA9IFJlYWN0LmNy
ZWF0ZUVsZW1lbnQoVG9wTGV2ZWxXcmFwcGVyLCB7XG5cdCAgICAgIGNoaWxkOiBuZXh0RWxlbWVu
dFxuXHQgICAgfSk7XG5cdFxuXHQgICAgdmFyIG5leHRDb250ZXh0O1xuXHQgICAgaWYgKHBhcmVu
dENvbXBvbmVudCkge1xuXHQgICAgICB2YXIgcGFyZW50SW5zdCA9IFJlYWN0SW5zdGFuY2VNYXAu
Z2V0KHBhcmVudENvbXBvbmVudCk7XG5cdCAgICAgIG5leHRDb250ZXh0ID0gcGFyZW50SW5zdC5f
cHJvY2Vzc0NoaWxkQ29udGV4dChwYXJlbnRJbnN0Ll9jb250ZXh0KTtcblx0ICAgIH0gZWxzZSB7
XG5cdCAgICAgIG5leHRDb250ZXh0ID0gZW1wdHlPYmplY3Q7XG5cdCAgICB9XG5cdFxuXHQgICAg
dmFyIHByZXZDb21wb25lbnQgPSBnZXRUb3BMZXZlbFdyYXBwZXJJbkNvbnRhaW5lcihjb250YWlu
ZXIpO1xuXHRcblx0ICAgIGlmIChwcmV2Q29tcG9uZW50KSB7XG5cdCAgICAgIHZhciBwcmV2V3Jh
cHBlZEVsZW1lbnQgPSBwcmV2Q29tcG9uZW50Ll9jdXJyZW50RWxlbWVudDtcblx0ICAgICAgdmFy
IHByZXZFbGVtZW50ID0gcHJldldyYXBwZWRFbGVtZW50LnByb3BzLmNoaWxkO1xuXHQgICAgICBp
ZiAoc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQocHJldkVsZW1lbnQsIG5leHRFbGVtZW50KSkg
e1xuXHQgICAgICAgIHZhciBwdWJsaWNJbnN0ID0gcHJldkNvbXBvbmVudC5fcmVuZGVyZWRDb21w
b25lbnQuZ2V0UHVibGljSW5zdGFuY2UoKTtcblx0ICAgICAgICB2YXIgdXBkYXRlZENhbGxiYWNr
ID0gY2FsbGJhY2sgJiYgZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgY2FsbGJhY2suY2FsbChw
dWJsaWNJbnN0KTtcblx0ICAgICAgICB9O1xuXHQgICAgICAgIFJlYWN0TW91bnQuX3VwZGF0ZVJv
b3RDb21wb25lbnQocHJldkNvbXBvbmVudCwgbmV4dFdyYXBwZWRFbGVtZW50LCBuZXh0Q29udGV4
dCwgY29udGFpbmVyLCB1cGRhdGVkQ2FsbGJhY2spO1xuXHQgICAgICAgIHJldHVybiBwdWJsaWNJ
bnN0O1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIFJlYWN0TW91bnQudW5tb3VudENvbXBv
bmVudEF0Tm9kZShjb250YWluZXIpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgdmFy
IHJlYWN0Um9vdEVsZW1lbnQgPSBnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIoY29udGFp
bmVyKTtcblx0ICAgIHZhciBjb250YWluZXJIYXNSZWFjdE1hcmt1cCA9IHJlYWN0Um9vdEVsZW1l
bnQgJiYgISFpbnRlcm5hbEdldElEKHJlYWN0Um9vdEVsZW1lbnQpO1xuXHQgICAgdmFyIGNvbnRh
aW5lckhhc05vblJvb3RSZWFjdENoaWxkID0gaGFzTm9uUm9vdFJlYWN0Q2hpbGQoY29udGFpbmVy
KTtcblx0XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWNvbnRhaW5lckhhc05vblJvb3RSZWFjdENoaWxk
LCAncmVuZGVyKC4uLik6IFJlcGxhY2luZyBSZWFjdC1yZW5kZXJlZCBjaGlsZHJlbiB3aXRoIGEg
bmV3IHJvb3QgJyArICdjb21wb25lbnQuIElmIHlvdSBpbnRlbmRlZCB0byB1cGRhdGUgdGhlIGNo
aWxkcmVuIG9mIHRoaXMgbm9kZSwgJyArICd5b3Ugc2hvdWxkIGluc3RlYWQgaGF2ZSB0aGUgZXhp
c3RpbmcgY2hpbGRyZW4gdXBkYXRlIHRoZWlyIHN0YXRlICcgKyAnYW5kIHJlbmRlciB0aGUgbmV3
IGNvbXBvbmVudHMgaW5zdGVhZCBvZiBjYWxsaW5nIFJlYWN0RE9NLnJlbmRlci4nKSA6IHZvaWQg
MDtcblx0XG5cdCAgICAgIGlmICghY29udGFpbmVySGFzUmVhY3RNYXJrdXAgfHwgcmVhY3RSb290
RWxlbWVudC5uZXh0U2libGluZykge1xuXHQgICAgICAgIHZhciByb290RWxlbWVudFNpYmxpbmcg
PSByZWFjdFJvb3RFbGVtZW50O1xuXHQgICAgICAgIHdoaWxlIChyb290RWxlbWVudFNpYmxpbmcp
IHtcblx0ICAgICAgICAgIGlmIChpbnRlcm5hbEdldElEKHJvb3RFbGVtZW50U2libGluZykpIHtc
blx0ICAgICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdh
cm5pbmcoZmFsc2UsICdyZW5kZXIoKTogVGFyZ2V0IG5vZGUgaGFzIG1hcmt1cCByZW5kZXJlZCBi
eSBSZWFjdCwgYnV0IHRoZXJlICcgKyAnYXJlIHVucmVsYXRlZCBub2RlcyBhcyB3ZWxsLiBUaGlz
IGlzIG1vc3QgY29tbW9ubHkgY2F1c2VkIGJ5ICcgKyAnd2hpdGUtc3BhY2UgaW5zZXJ0ZWQgYXJv
dW5kIHNlcnZlci1yZW5kZXJlZCBtYXJrdXAuJykgOiB2b2lkIDA7XG5cdCAgICAgICAgICAgIGJy
ZWFrO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgcm9vdEVsZW1lbnRTaWJsaW5nID0gcm9v
dEVsZW1lbnRTaWJsaW5nLm5leHRTaWJsaW5nO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQg
ICAgfVxuXHRcblx0ICAgIHZhciBzaG91bGRSZXVzZU1hcmt1cCA9IGNvbnRhaW5lckhhc1JlYWN0
TWFya3VwICYmICFwcmV2Q29tcG9uZW50ICYmICFjb250YWluZXJIYXNOb25Sb290UmVhY3RDaGls
ZDtcblx0ICAgIHZhciBjb21wb25lbnQgPSBSZWFjdE1vdW50Ll9yZW5kZXJOZXdSb290Q29tcG9u
ZW50KG5leHRXcmFwcGVkRWxlbWVudCwgY29udGFpbmVyLCBzaG91bGRSZXVzZU1hcmt1cCwgbmV4
dENvbnRleHQpLl9yZW5kZXJlZENvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpO1xuXHQgICAg
aWYgKGNhbGxiYWNrKSB7XG5cdCAgICAgIGNhbGxiYWNrLmNhbGwoY29tcG9uZW50KTtcblx0ICAg
IH1cblx0ICAgIHJldHVybiBjb21wb25lbnQ7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICog
UmVuZGVycyBhIFJlYWN0IGNvbXBvbmVudCBpbnRvIHRoZSBET00gaW4gdGhlIHN1cHBsaWVkIGBj
b250YWluZXJgLlxuXHQgICAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9k
b2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdGRvbS5yZW5kZXJcblx0ICAgKlxuXHQgICAqIElm
IHRoZSBSZWFjdCBjb21wb25lbnQgd2FzIHByZXZpb3VzbHkgcmVuZGVyZWQgaW50byBgY29udGFp
bmVyYCwgdGhpcyB3aWxsXG5cdCAgICogcGVyZm9ybSBhbiB1cGRhdGUgb24gaXQgYW5kIG9ubHkg
bXV0YXRlIHRoZSBET00gYXMgbmVjZXNzYXJ5IHRvIHJlZmxlY3QgdGhlXG5cdCAgICogbGF0ZXN0
IFJlYWN0IGNvbXBvbmVudC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBu
ZXh0RWxlbWVudCBDb21wb25lbnQgZWxlbWVudCB0byByZW5kZXIuXG5cdCAgICogQHBhcmFtIHtE
T01FbGVtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgdG8gcmVuZGVyIGludG8uXG5cdCAgICog
QHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIGZ1bmN0aW9uIHRyaWdnZXJlZCBvbiBjb21wbGV0
aW9uXG5cdCAgICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9IENvbXBvbmVudCBpbnN0YW5jZSBy
ZW5kZXJlZCBpbiBgY29udGFpbmVyYC5cblx0ICAgKi9cblx0ICByZW5kZXI6IGZ1bmN0aW9uIChu
ZXh0RWxlbWVudCwgY29udGFpbmVyLCBjYWxsYmFjaykge1xuXHQgICAgcmV0dXJuIFJlYWN0TW91
bnQuX3JlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyKG51bGwsIG5leHRFbGVtZW50LCBjb250YWlu
ZXIsIGNhbGxiYWNrKTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBVbm1vdW50cyBhbmQg
ZGVzdHJveXMgdGhlIFJlYWN0IGNvbXBvbmVudCByZW5kZXJlZCBpbiB0aGUgYGNvbnRhaW5lcmAu
XG5cdCAgICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxl
dmVsLWFwaS5odG1sI3JlYWN0ZG9tLnVubW91bnRjb21wb25lbnRhdG5vZGVcblx0ICAgKlxuXHQg
ICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IGNvbnRhaW5pbmcg
YSBSZWFjdCBjb21wb25lbnQuXG5cdCAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBhIGNv
bXBvbmVudCB3YXMgZm91bmQgaW4gYW5kIHVubW91bnRlZCBmcm9tXG5cdCAgICogICAgICAgICAg
ICAgICAgICAgYGNvbnRhaW5lcmBcblx0ICAgKi9cblx0ICB1bm1vdW50Q29tcG9uZW50QXROb2Rl
OiBmdW5jdGlvbiAoY29udGFpbmVyKSB7XG5cdCAgICAvLyBWYXJpb3VzIHBhcnRzIG9mIG91ciBj
b2RlIChzdWNoIGFzIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50J3Ncblx0ICAgIC8vIF9yZW5kZXJW
YWxpZGF0ZWRDb21wb25lbnQpIGFzc3VtZSB0aGF0IGNhbGxzIHRvIHJlbmRlciBhcmVuJ3QgbmVz
dGVkO1xuXHQgICAgLy8gdmVyaWZ5IHRoYXQgdGhhdCdzIHRoZSBjYXNlLiAoU3RyaWN0bHkgc3Bl
YWtpbmcsIHVubW91bnRpbmcgd29uJ3QgY2F1c2UgYVxuXHQgICAgLy8gcmVuZGVyIGJ1dCB3ZSBz
dGlsbCBkb24ndCBleHBlY3QgdG8gYmUgaW4gYSByZW5kZXIgY2FsbCBoZXJlLilcblx0ICAgICBm
YWxzZSA/IHdhcm5pbmcoUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9PSBudWxsLCAndW5tb3Vu
dENvbXBvbmVudEF0Tm9kZSgpOiBSZW5kZXIgbWV0aG9kcyBzaG91bGQgYmUgYSBwdXJlIGZ1bmN0
aW9uICcgKyAnb2YgcHJvcHMgYW5kIHN0YXRlOyB0cmlnZ2VyaW5nIG5lc3RlZCBjb21wb25lbnQg
dXBkYXRlcyBmcm9tIHJlbmRlciAnICsgJ2lzIG5vdCBhbGxvd2VkLiBJZiBuZWNlc3NhcnksIHRy
aWdnZXIgbmVzdGVkIHVwZGF0ZXMgaW4gJyArICdjb21wb25lbnREaWRVcGRhdGUuIENoZWNrIHRo
ZSByZW5kZXIgbWV0aG9kIG9mICVzLicsIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgJiYgUmVh
Y3RDdXJyZW50T3duZXIuY3VycmVudC5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9u
ZW50JykgOiB2b2lkIDA7XG5cdFxuXHQgICAgIWlzVmFsaWRDb250YWluZXIoY29udGFpbmVyKSA/
ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ3VubW91bnRDb21wb25lbnRBdE5vZGUoLi4uKTog
VGFyZ2V0IGNvbnRhaW5lciBpcyBub3QgYSBET00gZWxlbWVudC4nKSA6IF9wcm9kSW52YXJpYW50
KCc0MCcpIDogdm9pZCAwO1xuXHRcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghbm9kZUlzUmVuZGVyZWRC
eU90aGVySW5zdGFuY2UoY29udGFpbmVyKSwgXCJ1bm1vdW50Q29tcG9uZW50QXROb2RlKCk6IFRo
ZSBub2RlIHlvdSdyZSBhdHRlbXB0aW5nIHRvIHVubW91bnQgXCIgKyAnd2FzIHJlbmRlcmVkIGJ5
IGFub3RoZXIgY29weSBvZiBSZWFjdC4nKSA6IHZvaWQgMDtcblx0ICAgIH1cblx0XG5cdCAgICB2
YXIgcHJldkNvbXBvbmVudCA9IGdldFRvcExldmVsV3JhcHBlckluQ29udGFpbmVyKGNvbnRhaW5l
cik7XG5cdCAgICBpZiAoIXByZXZDb21wb25lbnQpIHtcblx0ICAgICAgLy8gQ2hlY2sgaWYgdGhl
IG5vZGUgYmVpbmcgdW5tb3VudGVkIHdhcyByZW5kZXJlZCBieSBSZWFjdCwgYnV0IGlzbid0IGFc
blx0ICAgICAgLy8gcm9vdCBub2RlLlxuXHQgICAgICB2YXIgY29udGFpbmVySGFzTm9uUm9vdFJl
YWN0Q2hpbGQgPSBoYXNOb25Sb290UmVhY3RDaGlsZChjb250YWluZXIpO1xuXHRcblx0ICAgICAg
Ly8gQ2hlY2sgaWYgdGhlIGNvbnRhaW5lciBpdHNlbGYgaXMgYSBSZWFjdCByb290IG5vZGUuXG5c
dCAgICAgIHZhciBpc0NvbnRhaW5lclJlYWN0Um9vdCA9IGNvbnRhaW5lci5ub2RlVHlwZSA9PT0g
MSAmJiBjb250YWluZXIuaGFzQXR0cmlidXRlKFJPT1RfQVRUUl9OQU1FKTtcblx0XG5cdCAgICAg
IGlmIChmYWxzZSkge1xuXHQgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicgPyB3YXJuaW5nKCFjb250YWluZXJIYXNOb25Sb290UmVhY3RDaGlsZCwgXCJ1bm1vdW50
Q29tcG9uZW50QXROb2RlKCk6IFRoZSBub2RlIHlvdSdyZSBhdHRlbXB0aW5nIHRvIHVubW91bnQg
XCIgKyAnd2FzIHJlbmRlcmVkIGJ5IFJlYWN0IGFuZCBpcyBub3QgYSB0b3AtbGV2ZWwgY29udGFp
bmVyLiAlcycsIGlzQ29udGFpbmVyUmVhY3RSb290ID8gJ1lvdSBtYXkgaGF2ZSBhY2NpZGVudGFs
bHkgcGFzc2VkIGluIGEgUmVhY3Qgcm9vdCBub2RlIGluc3RlYWQgJyArICdvZiBpdHMgY29udGFp
bmVyLicgOiAnSW5zdGVhZCwgaGF2ZSB0aGUgcGFyZW50IGNvbXBvbmVudCB1cGRhdGUgaXRzIHN0
YXRlIGFuZCAnICsgJ3JlcmVuZGVyIGluIG9yZGVyIHRvIHJlbW92ZSB0aGlzIGNvbXBvbmVudC4n
KSA6IHZvaWQgMDtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgcmV0dXJuIGZhbHNlO1xuXHQgICAg
fVxuXHQgICAgZGVsZXRlIGluc3RhbmNlc0J5UmVhY3RSb290SURbcHJldkNvbXBvbmVudC5faW5z
dGFuY2Uucm9vdElEXTtcblx0ICAgIFJlYWN0VXBkYXRlcy5iYXRjaGVkVXBkYXRlcyh1bm1vdW50
Q29tcG9uZW50RnJvbU5vZGUsIHByZXZDb21wb25lbnQsIGNvbnRhaW5lciwgZmFsc2UpO1xuXHQg
ICAgcmV0dXJuIHRydWU7XG5cdCAgfSxcblx0XG5cdCAgX21vdW50SW1hZ2VJbnRvTm9kZTogZnVu
Y3Rpb24gKG1hcmt1cCwgY29udGFpbmVyLCBpbnN0YW5jZSwgc2hvdWxkUmV1c2VNYXJrdXAsIHRy
YW5zYWN0aW9uKSB7XG5cdCAgICAhaXNWYWxpZENvbnRhaW5lcihjb250YWluZXIpID8gIGZhbHNl
ID8gaW52YXJpYW50KGZhbHNlLCAnbW91bnRDb21wb25lbnRJbnRvTm9kZSguLi4pOiBUYXJnZXQg
Y29udGFpbmVyIGlzIG5vdCB2YWxpZC4nKSA6IF9wcm9kSW52YXJpYW50KCc0MScpIDogdm9pZCAw
O1xuXHRcblx0ICAgIGlmIChzaG91bGRSZXVzZU1hcmt1cCkge1xuXHQgICAgICB2YXIgcm9vdEVs
ZW1lbnQgPSBnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIoY29udGFpbmVyKTtcblx0ICAg
ICAgaWYgKFJlYWN0TWFya3VwQ2hlY2tzdW0uY2FuUmV1c2VNYXJrdXAobWFya3VwLCByb290RWxl
bWVudCkpIHtcblx0ICAgICAgICBSZWFjdERPTUNvbXBvbmVudFRyZWUucHJlY2FjaGVOb2RlKGlu
c3RhbmNlLCByb290RWxlbWVudCk7XG5cdCAgICAgICAgcmV0dXJuO1xuXHQgICAgICB9IGVsc2Ug
e1xuXHQgICAgICAgIHZhciBjaGVja3N1bSA9IHJvb3RFbGVtZW50LmdldEF0dHJpYnV0ZShSZWFj
dE1hcmt1cENoZWNrc3VtLkNIRUNLU1VNX0FUVFJfTkFNRSk7XG5cdCAgICAgICAgcm9vdEVsZW1l
bnQucmVtb3ZlQXR0cmlidXRlKFJlYWN0TWFya3VwQ2hlY2tzdW0uQ0hFQ0tTVU1fQVRUUl9OQU1F
KTtcblx0XG5cdCAgICAgICAgdmFyIHJvb3RNYXJrdXAgPSByb290RWxlbWVudC5vdXRlckhUTUw7
XG5cdCAgICAgICAgcm9vdEVsZW1lbnQuc2V0QXR0cmlidXRlKFJlYWN0TWFya3VwQ2hlY2tzdW0u
Q0hFQ0tTVU1fQVRUUl9OQU1FLCBjaGVja3N1bSk7XG5cdFxuXHQgICAgICAgIHZhciBub3JtYWxp
emVkTWFya3VwID0gbWFya3VwO1xuXHQgICAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgICAg
Ly8gYmVjYXVzZSByb290TWFya3VwIGlzIHJldHJpZXZlZCBmcm9tIHRoZSBET00sIHZhcmlvdXMg
bm9ybWFsaXphdGlvbnNcblx0ICAgICAgICAgIC8vIHdpbGwgaGF2ZSBvY2N1cnJlZCB3aGljaCB3
aWxsIG5vdCBiZSBwcmVzZW50IGluIGBtYXJrdXBgLiBIZXJlLFxuXHQgICAgICAgICAgLy8gaW5z
ZXJ0IG1hcmt1cCBpbnRvIGEgPGRpdj4gb3IgPGlmcmFtZT4gZGVwZW5kaW5nIG9uIHRoZSBjb250
YWluZXJcblx0ICAgICAgICAgIC8vIHR5cGUgdG8gcGVyZm9ybSB0aGUgc2FtZSBub3JtYWxpemF0
aW9ucyBiZWZvcmUgY29tcGFyaW5nLlxuXHQgICAgICAgICAgdmFyIG5vcm1hbGl6ZXI7XG5cdCAg
ICAgICAgICBpZiAoY29udGFpbmVyLm5vZGVUeXBlID09PSBFTEVNRU5UX05PREVfVFlQRSkge1xu
XHQgICAgICAgICAgICBub3JtYWxpemVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
XG5cdCAgICAgICAgICAgIG5vcm1hbGl6ZXIuaW5uZXJIVE1MID0gbWFya3VwO1xuXHQgICAgICAg
ICAgICBub3JtYWxpemVkTWFya3VwID0gbm9ybWFsaXplci5pbm5lckhUTUw7XG5cdCAgICAgICAg
ICB9IGVsc2Uge1xuXHQgICAgICAgICAgICBub3JtYWxpemVyID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnaWZyYW1lJyk7XG5cdCAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQo
bm9ybWFsaXplcik7XG5cdCAgICAgICAgICAgIG5vcm1hbGl6ZXIuY29udGVudERvY3VtZW50Lndy
aXRlKG1hcmt1cCk7XG5cdCAgICAgICAgICAgIG5vcm1hbGl6ZWRNYXJrdXAgPSBub3JtYWxpemVy
LmNvbnRlbnREb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub3V0ZXJIVE1MO1xuXHQgICAgICAgICAg
ICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKG5vcm1hbGl6ZXIpO1xuXHQgICAgICAgICAgfVxu
XHQgICAgICAgIH1cblx0XG5cdCAgICAgICAgdmFyIGRpZmZJbmRleCA9IGZpcnN0RGlmZmVyZW5j
ZUluZGV4KG5vcm1hbGl6ZWRNYXJrdXAsIHJvb3RNYXJrdXApO1xuXHQgICAgICAgIHZhciBkaWZm
ZXJlbmNlID0gJyAoY2xpZW50KSAnICsgbm9ybWFsaXplZE1hcmt1cC5zdWJzdHJpbmcoZGlmZklu
ZGV4IC0gMjAsIGRpZmZJbmRleCArIDIwKSArICdcXG4gKHNlcnZlcikgJyArIHJvb3RNYXJrdXAu
c3Vic3RyaW5nKGRpZmZJbmRleCAtIDIwLCBkaWZmSW5kZXggKyAyMCk7XG5cdFxuXHQgICAgICAg
ICEoY29udGFpbmVyLm5vZGVUeXBlICE9PSBET0NfTk9ERV9UWVBFKSA/ICBmYWxzZSA/IGludmFy
aWFudChmYWxzZSwgJ1lvdVxcJ3JlIHRyeWluZyB0byByZW5kZXIgYSBjb21wb25lbnQgdG8gdGhl
IGRvY3VtZW50IHVzaW5nIHNlcnZlciByZW5kZXJpbmcgYnV0IHRoZSBjaGVja3N1bSB3YXMgaW52
YWxpZC4gVGhpcyB1c3VhbGx5IG1lYW5zIHlvdSByZW5kZXJlZCBhIGRpZmZlcmVudCBjb21wb25l
bnQgdHlwZSBvciBwcm9wcyBvbiB0aGUgY2xpZW50IGZyb20gdGhlIG9uZSBvbiB0aGUgc2VydmVy
LCBvciB5b3VyIHJlbmRlcigpIG1ldGhvZHMgYXJlIGltcHVyZS4gUmVhY3QgY2Fubm90IGhhbmRs
ZSB0aGlzIGNhc2UgZHVlIHRvIGNyb3NzLWJyb3dzZXIgcXVpcmtzIGJ5IHJlbmRlcmluZyBhdCB0
aGUgZG9jdW1lbnQgcm9vdC4gWW91IHNob3VsZCBsb29rIGZvciBlbnZpcm9ubWVudCBkZXBlbmRl
bnQgY29kZSBpbiB5b3VyIGNvbXBvbmVudHMgYW5kIGVuc3VyZSB0aGUgcHJvcHMgYXJlIHRoZSBz
YW1lIGNsaWVudCBhbmQgc2VydmVyIHNpZGU6XFxuJXMnLCBkaWZmZXJlbmNlKSA6IF9wcm9kSW52
YXJpYW50KCc0MicsIGRpZmZlcmVuY2UpIDogdm9pZCAwO1xuXHRcblx0ICAgICAgICBpZiAoZmFs
c2UpIHtcblx0ICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKGZhbHNlLCAnUmVhY3QgYXR0ZW1wdGVkIHRvIHJldXNlIG1hcmt1cCBpbiBhIGNv
bnRhaW5lciBidXQgdGhlICcgKyAnY2hlY2tzdW0gd2FzIGludmFsaWQuIFRoaXMgZ2VuZXJhbGx5
IG1lYW5zIHRoYXQgeW91IGFyZSAnICsgJ3VzaW5nIHNlcnZlciByZW5kZXJpbmcgYW5kIHRoZSBt
YXJrdXAgZ2VuZXJhdGVkIG9uIHRoZSAnICsgJ3NlcnZlciB3YXMgbm90IHdoYXQgdGhlIGNsaWVu
dCB3YXMgZXhwZWN0aW5nLiBSZWFjdCBpbmplY3RlZCAnICsgJ25ldyBtYXJrdXAgdG8gY29tcGVu
c2F0ZSB3aGljaCB3b3JrcyBidXQgeW91IGhhdmUgbG9zdCBtYW55ICcgKyAnb2YgdGhlIGJlbmVm
aXRzIG9mIHNlcnZlciByZW5kZXJpbmcuIEluc3RlYWQsIGZpZ3VyZSBvdXQgJyArICd3aHkgdGhl
IG1hcmt1cCBiZWluZyBnZW5lcmF0ZWQgaXMgZGlmZmVyZW50IG9uIHRoZSBjbGllbnQgJyArICdv
ciBzZXJ2ZXI6XFxuJXMnLCBkaWZmZXJlbmNlKSA6IHZvaWQgMDtcblx0ICAgICAgICB9XG5cdCAg
ICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICAhKGNvbnRhaW5lci5ub2RlVHlwZSAhPT0gRE9DX05P
REVfVFlQRSkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdZb3VcXCdyZSB0cnlpbmcgdG8g
cmVuZGVyIGEgY29tcG9uZW50IHRvIHRoZSBkb2N1bWVudCBidXQgeW91IGRpZG5cXCd0IHVzZSBz
ZXJ2ZXIgcmVuZGVyaW5nLiBXZSBjYW5cXCd0IGRvIHRoaXMgd2l0aG91dCB1c2luZyBzZXJ2ZXIg
cmVuZGVyaW5nIGR1ZSB0byBjcm9zcy1icm93c2VyIHF1aXJrcy4gU2VlIFJlYWN0RE9NU2VydmVy
LnJlbmRlclRvU3RyaW5nKCkgZm9yIHNlcnZlciByZW5kZXJpbmcuJykgOiBfcHJvZEludmFyaWFu
dCgnNDMnKSA6IHZvaWQgMDtcblx0XG5cdCAgICBpZiAodHJhbnNhY3Rpb24udXNlQ3JlYXRlRWxl
bWVudCkge1xuXHQgICAgICB3aGlsZSAoY29udGFpbmVyLmxhc3RDaGlsZCkge1xuXHQgICAgICAg
IGNvbnRhaW5lci5yZW1vdmVDaGlsZChjb250YWluZXIubGFzdENoaWxkKTtcblx0ICAgICAgfVxu
XHQgICAgICBET01MYXp5VHJlZS5pbnNlcnRUcmVlQmVmb3JlKGNvbnRhaW5lciwgbWFya3VwLCBu
dWxsKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHNldElubmVySFRNTChjb250YWluZXIsIG1h
cmt1cCk7XG5cdCAgICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5wcmVjYWNoZU5vZGUoaW5zdGFu
Y2UsIGNvbnRhaW5lci5maXJzdENoaWxkKTtcblx0ICAgIH1cblx0XG5cdCAgICBpZiAoZmFsc2Up
IHtcblx0ICAgICAgdmFyIGhvc3ROb2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3Rh
bmNlRnJvbU5vZGUoY29udGFpbmVyLmZpcnN0Q2hpbGQpO1xuXHQgICAgICBpZiAoaG9zdE5vZGUu
X2RlYnVnSUQgIT09IDApIHtcblx0ICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rv
b2wub25Ib3N0T3BlcmF0aW9uKHtcblx0ICAgICAgICAgIGluc3RhbmNlSUQ6IGhvc3ROb2RlLl9k
ZWJ1Z0lELFxuXHQgICAgICAgICAgdHlwZTogJ21vdW50Jyxcblx0ICAgICAgICAgIHBheWxvYWQ6
IG1hcmt1cC50b1N0cmluZygpXG5cdCAgICAgICAgfSk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0
ICB9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0TW91bnQ7XG5cbi8qKiovIH0s
XG4vKiA2OCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVx
dWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5c
dCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFu
dCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cdFxuXHR2YXIgUmVhY3QgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDE3KTtcblx0XG5cdHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDEpO1xuXHRcblx0dmFyIFJlYWN0Tm9kZVR5cGVzID0ge1xuXHQgIEhPU1Q6IDAsXG5cdCAgQ09N
UE9TSVRFOiAxLFxuXHQgIEVNUFRZOiAyLFxuXHRcblx0ICBnZXRUeXBlOiBmdW5jdGlvbiAobm9k
ZSkge1xuXHQgICAgaWYgKG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gZmFsc2UpIHtcblx0ICAg
ICAgcmV0dXJuIFJlYWN0Tm9kZVR5cGVzLkVNUFRZO1xuXHQgICAgfSBlbHNlIGlmIChSZWFjdC5p
c1ZhbGlkRWxlbWVudChub2RlKSkge1xuXHQgICAgICBpZiAodHlwZW9mIG5vZGUudHlwZSA9PT0g
J2Z1bmN0aW9uJykge1xuXHQgICAgICAgIHJldHVybiBSZWFjdE5vZGVUeXBlcy5DT01QT1NJVEU7
XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgcmV0dXJuIFJlYWN0Tm9kZVR5cGVzLkhPU1Q7
XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgICB0cnVlID8gIGZhbHNlID8gaW52YXJpYW50KGZh
bHNlLCAnVW5leHBlY3RlZCBub2RlOiAlcycsIG5vZGUpIDogX3Byb2RJbnZhcmlhbnQoJzI2Jywg
bm9kZSkgOiB2b2lkIDA7XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFj
dE5vZGVUeXBlcztcblxuLyoqKi8gfSxcbi8qIDY5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMpIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpc
blx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgVmlld3BvcnRNZXRyaWNzID0g
e1xuXHQgIGN1cnJlbnRTY3JvbGxMZWZ0OiAwLFxuXHRcblx0ICBjdXJyZW50U2Nyb2xsVG9wOiAw
LFxuXHRcblx0ICByZWZyZXNoU2Nyb2xsVmFsdWVzOiBmdW5jdGlvbiAoc2Nyb2xsUG9zaXRpb24p
IHtcblx0ICAgIFZpZXdwb3J0TWV0cmljcy5jdXJyZW50U2Nyb2xsTGVmdCA9IHNjcm9sbFBvc2l0
aW9uLng7XG5cdCAgICBWaWV3cG9ydE1ldHJpY3MuY3VycmVudFNjcm9sbFRvcCA9IHNjcm9sbFBv
c2l0aW9uLnk7XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBWaWV3cG9ydE1l
dHJpY3M7XG5cbi8qKiovIH0sXG4vKiA3MCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDE0
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAq
XG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5c
dHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cdFxuXHR2YXIg
aW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0XG5cdC8qKlxuXHQgKiBBY2N1
bXVsYXRlcyBpdGVtcyB0aGF0IG11c3Qgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkIGludG8gdGhl
IGZpcnN0IG9uZS4gVGhpc1xuXHQgKiBpcyB1c2VkIHRvIGNvbnNlcnZlIG1lbW9yeSBieSBhdm9p
ZGluZyBhcnJheSBhbGxvY2F0aW9ucywgYW5kIHRodXMgc2FjcmlmaWNlc1xuXHQgKiBBUEkgY2xl
YW5uZXNzLiBTaW5jZSBgY3VycmVudGAgY2FuIGJlIG51bGwgYmVmb3JlIGJlaW5nIHBhc3NlZCBp
biBhbmQgbm90XG5cdCAqIG51bGwgYWZ0ZXIgdGhpcyBmdW5jdGlvbiwgbWFrZSBzdXJlIHRvIGFz
c2lnbiBpdCBiYWNrIHRvIGBjdXJyZW50YDpcblx0ICpcblx0ICogYGEgPSBhY2N1bXVsYXRlSW50
byhhLCBiKTtgXG5cdCAqXG5cdCAqIFRoaXMgQVBJIHNob3VsZCBiZSBzcGFyaW5nbHkgdXNlZC4g
VHJ5IGBhY2N1bXVsYXRlYCBmb3Igc29tZXRoaW5nIGNsZWFuZXIuXG5cdCAqXG5cdCAqIEByZXR1
cm4geyp8YXJyYXk8Kj59IEFuIGFjY3VtdWxhdGlvbiBvZiBpdGVtcy5cblx0ICovXG5cdFxuXHRm
dW5jdGlvbiBhY2N1bXVsYXRlSW50byhjdXJyZW50LCBuZXh0KSB7XG5cdCAgIShuZXh0ICE9IG51
bGwpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnYWNjdW11bGF0ZUludG8oLi4uKTogQWNj
dW11bGF0ZWQgaXRlbXMgbXVzdCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQuJykgOiBfcHJvZElu
dmFyaWFudCgnMzAnKSA6IHZvaWQgMDtcblx0XG5cdCAgaWYgKGN1cnJlbnQgPT0gbnVsbCkge1xu
XHQgICAgcmV0dXJuIG5leHQ7XG5cdCAgfVxuXHRcblx0ICAvLyBCb3RoIGFyZSBub3QgZW1wdHku
IFdhcm5pbmc6IE5ldmVyIGNhbGwgeC5jb25jYXQoeSkgd2hlbiB5b3UgYXJlIG5vdFxuXHQgIC8v
IGNlcnRhaW4gdGhhdCB4IGlzIGFuIEFycmF5ICh4IGNvdWxkIGJlIGEgc3RyaW5nIHdpdGggY29u
Y2F0IG1ldGhvZCkuXG5cdCAgaWYgKEFycmF5LmlzQXJyYXkoY3VycmVudCkpIHtcblx0ICAgIGlm
IChBcnJheS5pc0FycmF5KG5leHQpKSB7XG5cdCAgICAgIGN1cnJlbnQucHVzaC5hcHBseShjdXJy
ZW50LCBuZXh0KTtcblx0ICAgICAgcmV0dXJuIGN1cnJlbnQ7XG5cdCAgICB9XG5cdCAgICBjdXJy
ZW50LnB1c2gobmV4dCk7XG5cdCAgICByZXR1cm4gY3VycmVudDtcblx0ICB9XG5cdFxuXHQgIGlm
IChBcnJheS5pc0FycmF5KG5leHQpKSB7XG5cdCAgICAvLyBBIGJpdCB0b28gZGFuZ2Vyb3VzIHRv
IG11dGF0ZSBgbmV4dGAuXG5cdCAgICByZXR1cm4gW2N1cnJlbnRdLmNvbmNhdChuZXh0KTtcblx0
ICB9XG5cdFxuXHQgIHJldHVybiBbY3VycmVudCwgbmV4dF07XG5cdH1cblx0XG5cdG1vZHVsZS5l
eHBvcnRzID0gYWNjdW11bGF0ZUludG87XG5cbi8qKiovIH0sXG4vKiA3MSAqL1xuLyoqKi8gZnVu
Y3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5c
dCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8q
KlxuXHQgKiBAcGFyYW0ge2FycmF5fSBhcnIgYW4gXCJhY2N1bXVsYXRpb25cIiBvZiBpdGVtcyB3
aGljaCBpcyBlaXRoZXIgYW4gQXJyYXkgb3Jcblx0ICogYSBzaW5nbGUgaXRlbS4gVXNlZnVsIHdo
ZW4gcGFpcmVkIHdpdGggdGhlIGBhY2N1bXVsYXRlYCBtb2R1bGUuIFRoaXMgaXMgYVxuXHQgKiBz
aW1wbGUgdXRpbGl0eSB0aGF0IGFsbG93cyB1cyB0byByZWFzb24gYWJvdXQgYSBjb2xsZWN0aW9u
IG9mIGl0ZW1zLCBidXRcblx0ICogaGFuZGxpbmcgdGhlIGNhc2Ugd2hlbiB0aGVyZSBpcyBleGFj
dGx5IG9uZSBpdGVtIChhbmQgd2UgZG8gbm90IG5lZWQgdG9cblx0ICogYWxsb2NhdGUgYW4gYXJy
YXkpLlxuXHQgKi9cblx0XG5cdGZ1bmN0aW9uIGZvckVhY2hBY2N1bXVsYXRlZChhcnIsIGNiLCBz
Y29wZSkge1xuXHQgIGlmIChBcnJheS5pc0FycmF5KGFycikpIHtcblx0ICAgIGFyci5mb3JFYWNo
KGNiLCBzY29wZSk7XG5cdCAgfSBlbHNlIGlmIChhcnIpIHtcblx0ICAgIGNiLmNhbGwoc2NvcGUs
IGFycik7XG5cdCAgfVxuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGZvckVhY2hBY2N1bXVs
YXRlZDtcblxuLyoqKi8gfSxcbi8qIDcyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpc
blx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgUmVh
Y3ROb2RlVHlwZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDY4KTtcblx0XG5cdGZ1bmN0aW9uIGdl
dEhvc3RDb21wb25lbnRGcm9tQ29tcG9zaXRlKGluc3QpIHtcblx0ICB2YXIgdHlwZTtcblx0XG5c
dCAgd2hpbGUgKCh0eXBlID0gaW5zdC5fcmVuZGVyZWROb2RlVHlwZSkgPT09IFJlYWN0Tm9kZVR5
cGVzLkNPTVBPU0lURSkge1xuXHQgICAgaW5zdCA9IGluc3QuX3JlbmRlcmVkQ29tcG9uZW50O1xu
XHQgIH1cblx0XG5cdCAgaWYgKHR5cGUgPT09IFJlYWN0Tm9kZVR5cGVzLkhPU1QpIHtcblx0ICAg
IHJldHVybiBpbnN0Ll9yZW5kZXJlZENvbXBvbmVudDtcblx0ICB9IGVsc2UgaWYgKHR5cGUgPT09
IFJlYWN0Tm9kZVR5cGVzLkVNUFRZKSB7XG5cdCAgICByZXR1cm4gbnVsbDtcblx0ICB9XG5cdH1c
blx0XG5cdG1vZHVsZS5leHBvcnRzID0gZ2V0SG9zdENvbXBvbmVudEZyb21Db21wb3NpdGU7XG5c
bi8qKiovIH0sXG4vKiA3MyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dl
YnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIEV4ZWN1dGlvbkVu
dmlyb25tZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTtcblx0XG5cdHZhciBjb250ZW50S2V5
ID0gbnVsbDtcblx0XG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBrZXkgdXNlZCB0byBhY2Nlc3MgdGV4
dCBjb250ZW50IG9uIGEgRE9NIG5vZGUuXG5cdCAqXG5cdCAqIEByZXR1cm4gez9zdHJpbmd9IEtl
eSB1c2VkIHRvIGFjY2VzcyB0ZXh0IGNvbnRlbnQuXG5cdCAqIEBpbnRlcm5hbFxuXHQgKi9cblx0
ZnVuY3Rpb24gZ2V0VGV4dENvbnRlbnRBY2Nlc3NvcigpIHtcblx0ICBpZiAoIWNvbnRlbnRLZXkg
JiYgRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG5cdCAgICAvLyBQcmVmZXIgdGV4
dENvbnRlbnQgdG8gaW5uZXJUZXh0IGJlY2F1c2UgbWFueSBicm93c2VycyBzdXBwb3J0IGJvdGgg
YnV0XG5cdCAgICAvLyBTVkcgPHRleHQ+IGVsZW1lbnRzIGRvbid0IHN1cHBvcnQgaW5uZXJUZXh0
IGV2ZW4gd2hlbiA8ZGl2PiBkb2VzLlxuXHQgICAgY29udGVudEtleSA9ICd0ZXh0Q29udGVudCcg
aW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ID8gJ3RleHRDb250ZW50JyA6ICdpbm5lclRleHQn
O1xuXHQgIH1cblx0ICByZXR1cm4gY29udGVudEtleTtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9y
dHMgPSBnZXRUZXh0Q29udGVudEFjY2Vzc29yO1xuXG4vKioqLyB9LFxuLyogNzQgKi9cbi8qKiov
IGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8q
KlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ug
c3RyaWN0Jztcblx0XG5cdHZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDUpO1xuXHRcblx0ZnVuY3Rpb24gaXNDaGVja2FibGUoZWxlbSkge1xuXHQgIHZhciB0
eXBlID0gZWxlbS50eXBlO1xuXHQgIHZhciBub2RlTmFtZSA9IGVsZW0ubm9kZU5hbWU7XG5cdCAg
cmV0dXJuIG5vZGVOYW1lICYmIG5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdpbnB1dCcgJiYg
KHR5cGUgPT09ICdjaGVja2JveCcgfHwgdHlwZSA9PT0gJ3JhZGlvJyk7XG5cdH1cblx0XG5cdGZ1
bmN0aW9uIGdldFRyYWNrZXIoaW5zdCkge1xuXHQgIHJldHVybiBpbnN0Ll93cmFwcGVyU3RhdGUu
dmFsdWVUcmFja2VyO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBhdHRhY2hUcmFja2VyKGluc3QsIHRy
YWNrZXIpIHtcblx0ICBpbnN0Ll93cmFwcGVyU3RhdGUudmFsdWVUcmFja2VyID0gdHJhY2tlcjtc
blx0fVxuXHRcblx0ZnVuY3Rpb24gZGV0YWNoVHJhY2tlcihpbnN0KSB7XG5cdCAgZGVsZXRlIGlu
c3QuX3dyYXBwZXJTdGF0ZS52YWx1ZVRyYWNrZXI7XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGdldFZh
bHVlRnJvbU5vZGUobm9kZSkge1xuXHQgIHZhciB2YWx1ZTtcblx0ICBpZiAobm9kZSkge1xuXHQg
ICAgdmFsdWUgPSBpc0NoZWNrYWJsZShub2RlKSA/ICcnICsgbm9kZS5jaGVja2VkIDogbm9kZS52
YWx1ZTtcblx0ICB9XG5cdCAgcmV0dXJuIHZhbHVlO1xuXHR9XG5cdFxuXHR2YXIgaW5wdXRWYWx1
ZVRyYWNraW5nID0ge1xuXHQgIC8vIGV4cG9zZWQgZm9yIHRlc3Rpbmdcblx0ICBfZ2V0VHJhY2tl
ckZyb21Ob2RlOiBmdW5jdGlvbiAobm9kZSkge1xuXHQgICAgcmV0dXJuIGdldFRyYWNrZXIoUmVh
Y3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUobm9kZSkpO1xuXHQgIH0sXG5c
dFxuXHRcblx0ICB0cmFjazogZnVuY3Rpb24gKGluc3QpIHtcblx0ICAgIGlmIChnZXRUcmFja2Vy
KGluc3QpKSB7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgbm9kZSA9
IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpO1xuXHQgICAg
dmFyIHZhbHVlRmllbGQgPSBpc0NoZWNrYWJsZShub2RlKSA/ICdjaGVja2VkJyA6ICd2YWx1ZSc7
XG5cdCAgICB2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
bm9kZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHZhbHVlRmllbGQpO1xuXHRcblx0ICAgIHZhciBj
dXJyZW50VmFsdWUgPSAnJyArIG5vZGVbdmFsdWVGaWVsZF07XG5cdFxuXHQgICAgLy8gaWYgc29t
ZW9uZSBoYXMgYWxyZWFkeSBkZWZpbmVkIGEgdmFsdWUgb3IgU2FmYXJpLCB0aGVuIGJhaWxcblx0
ICAgIC8vIGFuZCBkb24ndCB0cmFjayB2YWx1ZSB3aWxsIGNhdXNlIG92ZXIgcmVwb3J0aW5nIG9m
IGNoYW5nZXMsXG5cdCAgICAvLyBidXQgaXQncyBiZXR0ZXIgdGhlbiBhIGhhcmQgZmFpbHVyZVxu
XHQgICAgLy8gKG5lZWRlZCBmb3IgY2VydGFpbiB0ZXN0cyB0aGF0IHNweU9uIGlucHV0IHZhbHVl
cyBhbmQgU2FmYXJpKVxuXHQgICAgaWYgKG5vZGUuaGFzT3duUHJvcGVydHkodmFsdWVGaWVsZCkg
fHwgdHlwZW9mIGRlc2NyaXB0b3IuZ2V0ICE9PSAnZnVuY3Rpb24nIHx8IHR5cGVvZiBkZXNjcmlw
dG9yLnNldCAhPT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdFxu
XHQgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG5vZGUsIHZhbHVlRmllbGQsIHtcblx0ICAgICAg
ZW51bWVyYWJsZTogZGVzY3JpcHRvci5lbnVtZXJhYmxlLFxuXHQgICAgICBjb25maWd1cmFibGU6
IHRydWUsXG5cdCAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHJldHVybiBkZXNj
cmlwdG9yLmdldC5jYWxsKHRoaXMpO1xuXHQgICAgICB9LFxuXHQgICAgICBzZXQ6IGZ1bmN0aW9u
ICh2YWx1ZSkge1xuXHQgICAgICAgIGN1cnJlbnRWYWx1ZSA9ICcnICsgdmFsdWU7XG5cdCAgICAg
ICAgZGVzY3JpcHRvci5zZXQuY2FsbCh0aGlzLCB2YWx1ZSk7XG5cdCAgICAgIH1cblx0ICAgIH0p
O1xuXHRcblx0ICAgIGF0dGFjaFRyYWNrZXIoaW5zdCwge1xuXHQgICAgICBnZXRWYWx1ZTogZnVu
Y3Rpb24gKCkge1xuXHQgICAgICAgIHJldHVybiBjdXJyZW50VmFsdWU7XG5cdCAgICAgIH0sXG5c
dCAgICAgIHNldFZhbHVlOiBmdW5jdGlvbiAodmFsdWUpIHtcblx0ICAgICAgICBjdXJyZW50VmFs
dWUgPSAnJyArIHZhbHVlO1xuXHQgICAgICB9LFxuXHQgICAgICBzdG9wVHJhY2tpbmc6IGZ1bmN0
aW9uICgpIHtcblx0ICAgICAgICBkZXRhY2hUcmFja2VyKGluc3QpO1xuXHQgICAgICAgIGRlbGV0
ZSBub2RlW3ZhbHVlRmllbGRdO1xuXHQgICAgICB9XG5cdCAgICB9KTtcblx0ICB9LFxuXHRcblx0
ICB1cGRhdGVWYWx1ZUlmQ2hhbmdlZDogZnVuY3Rpb24gKGluc3QpIHtcblx0ICAgIGlmICghaW5z
dCkge1xuXHQgICAgICByZXR1cm4gZmFsc2U7XG5cdCAgICB9XG5cdCAgICB2YXIgdHJhY2tlciA9
IGdldFRyYWNrZXIoaW5zdCk7XG5cdFxuXHQgICAgaWYgKCF0cmFja2VyKSB7XG5cdCAgICAgIGlu
cHV0VmFsdWVUcmFja2luZy50cmFjayhpbnN0KTtcblx0ICAgICAgcmV0dXJuIHRydWU7XG5cdCAg
ICB9XG5cdFxuXHQgICAgdmFyIGxhc3RWYWx1ZSA9IHRyYWNrZXIuZ2V0VmFsdWUoKTtcblx0ICAg
IHZhciBuZXh0VmFsdWUgPSBnZXRWYWx1ZUZyb21Ob2RlKFJlYWN0RE9NQ29tcG9uZW50VHJlZS5n
ZXROb2RlRnJvbUluc3RhbmNlKGluc3QpKTtcblx0XG5cdCAgICBpZiAobmV4dFZhbHVlICE9PSBs
YXN0VmFsdWUpIHtcblx0ICAgICAgdHJhY2tlci5zZXRWYWx1ZShuZXh0VmFsdWUpO1xuXHQgICAg
ICByZXR1cm4gdHJ1ZTtcblx0ICAgIH1cblx0XG5cdCAgICByZXR1cm4gZmFsc2U7XG5cdCAgfSxc
blx0ICBzdG9wVHJhY2tpbmc6IGZ1bmN0aW9uIChpbnN0KSB7XG5cdCAgICB2YXIgdHJhY2tlciA9
IGdldFRyYWNrZXIoaW5zdCk7XG5cdCAgICBpZiAodHJhY2tlcikge1xuXHQgICAgICB0cmFja2Vy
LnN0b3BUcmFja2luZygpO1xuXHQgICAgfVxuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBv
cnRzID0gaW5wdXRWYWx1ZVRyYWNraW5nO1xuXG4vKioqLyB9LFxuLyogNzUgKi9cbi8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxu
XHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyks
XG5cdCAgICBfYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0XG5cdHZhciBSZWFj
dENvbXBvc2l0ZUNvbXBvbmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMTM2KTtcblx0dmFyIFJl
YWN0RW1wdHlDb21wb25lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYzKTtcblx0dmFyIFJlYWN0
SG9zdENvbXBvbmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oNjUpO1xuXHRcblx0dmFyIGdldE5l
eHREZWJ1Z0lEID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMjEpO1xuXHR2YXIgaW52YXJpYW50ID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDIpO1xuXHRcblx0Ly8gVG8gYXZvaWQgYSBjeWNsaWMgZGVwZW5kZW5jeSwgd2UgY3JlYXRl
IHRoZSBmaW5hbCBjbGFzcyBpbiB0aGlzIG1vZHVsZVxuXHR2YXIgUmVhY3RDb21wb3NpdGVDb21w
b25lbnRXcmFwcGVyID0gZnVuY3Rpb24gKGVsZW1lbnQpIHtcblx0ICB0aGlzLmNvbnN0cnVjdChl
bGVtZW50KTtcblx0fTtcblx0XG5cdGZ1bmN0aW9uIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1
bShvd25lcikge1xuXHQgIGlmIChvd25lcikge1xuXHQgICAgdmFyIG5hbWUgPSBvd25lci5nZXRO
YW1lKCk7XG5cdCAgICBpZiAobmFtZSkge1xuXHQgICAgICByZXR1cm4gJyBDaGVjayB0aGUgcmVu
ZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xuXHQgICAgfVxuXHQgIH1cblx0ICByZXR1
cm4gJyc7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBDaGVjayBpZiB0aGUgdHlwZSByZWZlcmVuY2Ug
aXMgYSBrbm93biBpbnRlcm5hbCB0eXBlLiBJLmUuIG5vdCBhIHVzZXJcblx0ICogcHJvdmlkZWQg
Y29tcG9zaXRlIHR5cGUuXG5cdCAqXG5cdCAqIEBwYXJhbSB7ZnVuY3Rpb259IHR5cGVcblx0ICog
QHJldHVybiB7Ym9vbGVhbn0gUmV0dXJucyB0cnVlIGlmIHRoaXMgaXMgYSB2YWxpZCBpbnRlcm5h
bCB0eXBlLlxuXHQgKi9cblx0ZnVuY3Rpb24gaXNJbnRlcm5hbENvbXBvbmVudFR5cGUodHlwZSkg
e1xuXHQgIHJldHVybiB0eXBlb2YgdHlwZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgdHlwZS5w
cm90b3R5cGUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiB0eXBlLnByb3RvdHlwZS5tb3VudENv
bXBvbmVudCA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgdHlwZS5wcm90b3R5cGUucmVjZWl2ZUNv
bXBvbmVudCA9PT0gJ2Z1bmN0aW9uJztcblx0fVxuXHRcblx0LyoqXG5cdCAqIEdpdmVuIGEgUmVh
Y3ROb2RlLCBjcmVhdGUgYW4gaW5zdGFuY2UgdGhhdCB3aWxsIGFjdHVhbGx5IGJlIG1vdW50ZWQu
XG5cdCAqXG5cdCAqIEBwYXJhbSB7UmVhY3ROb2RlfSBub2RlXG5cdCAqIEBwYXJhbSB7Ym9vbGVh
bn0gc2hvdWxkSGF2ZURlYnVnSURcblx0ICogQHJldHVybiB7b2JqZWN0fSBBIG5ldyBpbnN0YW5j
ZSBvZiB0aGUgZWxlbWVudCdzIGNvbnN0cnVjdG9yLlxuXHQgKiBAcHJvdGVjdGVkXG5cdCAqL1xu
XHRmdW5jdGlvbiBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KG5vZGUsIHNob3VsZEhhdmVEZWJ1
Z0lEKSB7XG5cdCAgdmFyIGluc3RhbmNlO1xuXHRcblx0ICBpZiAobm9kZSA9PT0gbnVsbCB8fCBu
b2RlID09PSBmYWxzZSkge1xuXHQgICAgaW5zdGFuY2UgPSBSZWFjdEVtcHR5Q29tcG9uZW50LmNy
ZWF0ZShpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KTtcblx0ICB9IGVsc2UgaWYgKHR5cGVvZiBu
b2RlID09PSAnb2JqZWN0Jykge1xuXHQgICAgdmFyIGVsZW1lbnQgPSBub2RlO1xuXHQgICAgdmFy
IHR5cGUgPSBlbGVtZW50LnR5cGU7XG5cdCAgICBpZiAodHlwZW9mIHR5cGUgIT09ICdmdW5jdGlv
bicgJiYgdHlwZW9mIHR5cGUgIT09ICdzdHJpbmcnKSB7XG5cdCAgICAgIHZhciBpbmZvID0gJyc7
XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIGlmICh0eXBlID09PSB1bmRlZmluZWQg
fHwgdHlwZW9mIHR5cGUgPT09ICdvYmplY3QnICYmIHR5cGUgIT09IG51bGwgJiYgT2JqZWN0Lmtl
eXModHlwZSkubGVuZ3RoID09PSAwKSB7XG5cdCAgICAgICAgICBpbmZvICs9ICcgWW91IGxpa2Vs
eSBmb3Jnb3QgdG8gZXhwb3J0IHlvdXIgY29tcG9uZW50IGZyb20gdGhlIGZpbGUgJyArIFwiaXQn
cyBkZWZpbmVkIGluLlwiO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgICBpbmZvICs9
IGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShlbGVtZW50Ll9vd25lcik7XG5cdCAgICAgICB0
cnVlID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnRWxlbWVudCB0eXBlIGlzIGludmFsaWQ6
IGV4cGVjdGVkIGEgc3RyaW5nIChmb3IgYnVpbHQtaW4gY29tcG9uZW50cykgb3IgYSBjbGFzcy9m
dW5jdGlvbiAoZm9yIGNvbXBvc2l0ZSBjb21wb25lbnRzKSBidXQgZ290OiAlcy4lcycsIHR5cGUg
PT0gbnVsbCA/IHR5cGUgOiB0eXBlb2YgdHlwZSwgaW5mbykgOiBfcHJvZEludmFyaWFudCgnMTMw
JywgdHlwZSA9PSBudWxsID8gdHlwZSA6IHR5cGVvZiB0eXBlLCBpbmZvKSA6IHZvaWQgMDtcblx0
ICAgIH1cblx0XG5cdCAgICAvLyBTcGVjaWFsIGNhc2Ugc3RyaW5nIHZhbHVlc1xuXHQgICAgaWYg
KHR5cGVvZiBlbGVtZW50LnR5cGUgPT09ICdzdHJpbmcnKSB7XG5cdCAgICAgIGluc3RhbmNlID0g
UmVhY3RIb3N0Q29tcG9uZW50LmNyZWF0ZUludGVybmFsQ29tcG9uZW50KGVsZW1lbnQpO1xuXHQg
ICAgfSBlbHNlIGlmIChpc0ludGVybmFsQ29tcG9uZW50VHlwZShlbGVtZW50LnR5cGUpKSB7XG5c
dCAgICAgIC8vIFRoaXMgaXMgdGVtcG9yYXJpbHkgYXZhaWxhYmxlIGZvciBjdXN0b20gY29tcG9u
ZW50cyB0aGF0IGFyZSBub3Qgc3RyaW5nXG5cdCAgICAgIC8vIHJlcHJlc2VudGF0aW9ucy4gSS5l
LiBBUlQuIE9uY2UgdGhvc2UgYXJlIHVwZGF0ZWQgdG8gdXNlIHRoZSBzdHJpbmdcblx0ICAgICAg
Ly8gcmVwcmVzZW50YXRpb24sIHdlIGNhbiBkcm9wIHRoaXMgY29kZSBwYXRoLlxuXHQgICAgICBp
bnN0YW5jZSA9IG5ldyBlbGVtZW50LnR5cGUoZWxlbWVudCk7XG5cdFxuXHQgICAgICAvLyBXZSBy
ZW5hbWVkIHRoaXMuIEFsbG93IHRoZSBvbGQgbmFtZSBmb3IgY29tcGF0LiA6KFxuXHQgICAgICBp
ZiAoIWluc3RhbmNlLmdldEhvc3ROb2RlKSB7XG5cdCAgICAgICAgaW5zdGFuY2UuZ2V0SG9zdE5v
ZGUgPSBpbnN0YW5jZS5nZXROYXRpdmVOb2RlO1xuXHQgICAgICB9XG5cdCAgICB9IGVsc2Uge1xu
XHQgICAgICBpbnN0YW5jZSA9IG5ldyBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudFdyYXBwZXIoZWxl
bWVudCk7XG5cdCAgICB9XG5cdCAgfSBlbHNlIGlmICh0eXBlb2Ygbm9kZSA9PT0gJ3N0cmluZycg
fHwgdHlwZW9mIG5vZGUgPT09ICdudW1iZXInKSB7XG5cdCAgICBpbnN0YW5jZSA9IFJlYWN0SG9z
dENvbXBvbmVudC5jcmVhdGVJbnN0YW5jZUZvclRleHQobm9kZSk7XG5cdCAgfSBlbHNlIHtcblx0
ICAgICB0cnVlID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnRW5jb3VudGVyZWQgaW52YWxp
ZCBSZWFjdCBub2RlIG9mIHR5cGUgJXMnLCB0eXBlb2Ygbm9kZSkgOiBfcHJvZEludmFyaWFudCgn
MTMxJywgdHlwZW9mIG5vZGUpIDogdm9pZCAwO1xuXHQgIH1cblx0XG5cdCAgaWYgKGZhbHNlKSB7
XG5cdCAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh0
eXBlb2YgaW5zdGFuY2UubW91bnRDb21wb25lbnQgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGlu
c3RhbmNlLnJlY2VpdmVDb21wb25lbnQgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGluc3RhbmNl
LmdldEhvc3ROb2RlID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBpbnN0YW5jZS51bm1vdW50Q29t
cG9uZW50ID09PSAnZnVuY3Rpb24nLCAnT25seSBSZWFjdCBDb21wb25lbnRzIGNhbiBiZSBtb3Vu
dGVkLicpIDogdm9pZCAwO1xuXHQgIH1cblx0XG5cdCAgLy8gVGhlc2UgdHdvIGZpZWxkcyBhcmUg
dXNlZCBieSB0aGUgRE9NIGFuZCBBUlQgZGlmZmluZyBhbGdvcml0aG1zXG5cdCAgLy8gcmVzcGVj
dGl2ZWx5LiBJbnN0ZWFkIG9mIHVzaW5nIGV4cGFuZG9zIG9uIGNvbXBvbmVudHMsIHdlIHNob3Vs
ZCBiZVxuXHQgIC8vIHN0b3JpbmcgdGhlIHN0YXRlIG5lZWRlZCBieSB0aGUgZGlmZmluZyBhbGdv
cml0aG1zIGVsc2V3aGVyZS5cblx0ICBpbnN0YW5jZS5fbW91bnRJbmRleCA9IDA7XG5cdCAgaW5z
dGFuY2UuX21vdW50SW1hZ2UgPSBudWxsO1xuXHRcblx0ICBpZiAoZmFsc2UpIHtcblx0ICAgIGlu
c3RhbmNlLl9kZWJ1Z0lEID0gc2hvdWxkSGF2ZURlYnVnSUQgPyBnZXROZXh0RGVidWdJRCgpIDog
MDtcblx0ICB9XG5cdFxuXHQgIC8vIEludGVybmFsIGluc3RhbmNlcyBzaG91bGQgZnVsbHkgY29u
c3RydWN0ZWQgYXQgdGhpcyBwb2ludCwgc28gdGhleSBzaG91bGRcblx0ICAvLyBub3QgZ2V0IGFu
eSBuZXcgZmllbGRzIGFkZGVkIHRvIHRoZW0gYXQgdGhpcyBwb2ludC5cblx0ICBpZiAoZmFsc2Up
IHtcblx0ICAgIGlmIChPYmplY3QucHJldmVudEV4dGVuc2lvbnMpIHtcblx0ICAgICAgT2JqZWN0
LnByZXZlbnRFeHRlbnNpb25zKGluc3RhbmNlKTtcblx0ICAgIH1cblx0ICB9XG5cdFxuXHQgIHJl
dHVybiBpbnN0YW5jZTtcblx0fVxuXHRcblx0X2Fzc2lnbihSZWFjdENvbXBvc2l0ZUNvbXBvbmVu
dFdyYXBwZXIucHJvdG90eXBlLCBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCwge1xuXHQgIF9pbnN0
YW50aWF0ZVJlYWN0Q29tcG9uZW50OiBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50XG5cdH0pO1xu
XHRcblx0bW9kdWxlLmV4cG9ydHMgPSBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50O1xuXG4vKioq
LyB9LFxuLyogNzYgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8q
KlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwg
cmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2Vk
IHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0ICovXG5cdFxu
XHQndXNlIHN0cmljdCc7XG5cdFxuXHQvKipcblx0ICogQHNlZSBodHRwOi8vd3d3LndoYXR3Zy5v
cmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aGUtaW5wdXQtZWxlbWVu
dC5odG1sI2lucHV0LXR5cGUtYXR0ci1zdW1tYXJ5XG5cdCAqL1xuXHRcblx0dmFyIHN1cHBvcnRl
ZElucHV0VHlwZXMgPSB7XG5cdCAgY29sb3I6IHRydWUsXG5cdCAgZGF0ZTogdHJ1ZSxcblx0ICBk
YXRldGltZTogdHJ1ZSxcblx0ICAnZGF0ZXRpbWUtbG9jYWwnOiB0cnVlLFxuXHQgIGVtYWlsOiB0
cnVlLFxuXHQgIG1vbnRoOiB0cnVlLFxuXHQgIG51bWJlcjogdHJ1ZSxcblx0ICBwYXNzd29yZDog
dHJ1ZSxcblx0ICByYW5nZTogdHJ1ZSxcblx0ICBzZWFyY2g6IHRydWUsXG5cdCAgdGVsOiB0cnVl
LFxuXHQgIHRleHQ6IHRydWUsXG5cdCAgdGltZTogdHJ1ZSxcblx0ICB1cmw6IHRydWUsXG5cdCAg
d2VlazogdHJ1ZVxuXHR9O1xuXHRcblx0ZnVuY3Rpb24gaXNUZXh0SW5wdXRFbGVtZW50KGVsZW0p
IHtcblx0ICB2YXIgbm9kZU5hbWUgPSBlbGVtICYmIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2Rl
TmFtZS50b0xvd2VyQ2FzZSgpO1xuXHRcblx0ICBpZiAobm9kZU5hbWUgPT09ICdpbnB1dCcpIHtc
blx0ICAgIHJldHVybiAhIXN1cHBvcnRlZElucHV0VHlwZXNbZWxlbS50eXBlXTtcblx0ICB9XG5c
dFxuXHQgIGlmIChub2RlTmFtZSA9PT0gJ3RleHRhcmVhJykge1xuXHQgICAgcmV0dXJuIHRydWU7
XG5cdCAgfVxuXHRcblx0ICByZXR1cm4gZmFsc2U7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRz
ID0gaXNUZXh0SW5wdXRFbGVtZW50O1xuXG4vKioqLyB9LFxuLyogNzcgKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0
Jztcblx0XG5cdHZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9fd2VicGFja19yZXF1aXJlX18o
Nik7XG5cdHZhciBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDI4KTtcblx0dmFyIHNldElubmVySFRNTCA9IF9fd2VicGFja19yZXF1aXJlX18oMjkpO1xu
XHRcblx0LyoqXG5cdCAqIFNldCB0aGUgdGV4dENvbnRlbnQgcHJvcGVydHkgb2YgYSBub2RlLCBl
bnN1cmluZyB0aGF0IHdoaXRlc3BhY2UgaXMgcHJlc2VydmVkXG5cdCAqIGV2ZW4gaW4gSUU4LiBp
bm5lclRleHQgaXMgYSBwb29yIHN1YnN0aXR1dGUgZm9yIHRleHRDb250ZW50IGFuZCwgYW1vbmcg
bWFueVxuXHQgKiBpc3N1ZXMsIGluc2VydHMgPGJyPiBpbnN0ZWFkIG9mIHRoZSBsaXRlcmFsIG5l
d2xpbmUgY2hhcnMuIGlubmVySFRNTCBiZWhhdmVzXG5cdCAqIGFzIGl0IHNob3VsZC5cblx0ICpc
blx0ICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSB0ZXh0
XG5cdCAqIEBpbnRlcm5hbFxuXHQgKi9cblx0dmFyIHNldFRleHRDb250ZW50ID0gZnVuY3Rpb24g
KG5vZGUsIHRleHQpIHtcblx0ICBpZiAodGV4dCkge1xuXHQgICAgdmFyIGZpcnN0Q2hpbGQgPSBu
b2RlLmZpcnN0Q2hpbGQ7XG5cdFxuXHQgICAgaWYgKGZpcnN0Q2hpbGQgJiYgZmlyc3RDaGlsZCA9
PT0gbm9kZS5sYXN0Q2hpbGQgJiYgZmlyc3RDaGlsZC5ub2RlVHlwZSA9PT0gMykge1xuXHQgICAg
ICBmaXJzdENoaWxkLm5vZGVWYWx1ZSA9IHRleHQ7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1c
blx0ICB9XG5cdCAgbm9kZS50ZXh0Q29udGVudCA9IHRleHQ7XG5cdH07XG5cdFxuXHRpZiAoRXhl
Y3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG5cdCAgaWYgKCEoJ3RleHRDb250ZW50JyBp
biBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQpKSB7XG5cdCAgICBzZXRUZXh0Q29udGVudCA9IGZ1
bmN0aW9uIChub2RlLCB0ZXh0KSB7XG5cdCAgICAgIGlmIChub2RlLm5vZGVUeXBlID09PSAzKSB7
XG5cdCAgICAgICAgbm9kZS5ub2RlVmFsdWUgPSB0ZXh0O1xuXHQgICAgICAgIHJldHVybjtcblx0
ICAgICAgfVxuXHQgICAgICBzZXRJbm5lckhUTUwobm9kZSwgZXNjYXBlVGV4dENvbnRlbnRGb3JC
cm93c2VyKHRleHQpKTtcblx0ICAgIH07XG5cdCAgfVxuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0
cyA9IHNldFRleHRDb250ZW50O1xuXG4vKioqLyB9LFxuLyogNzggKi9cbi8qKiovIGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztc
blx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cdFxu
XHR2YXIgUmVhY3RDdXJyZW50T3duZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExKTtcblx0dmFy
IFJFQUNUX0VMRU1FTlRfVFlQRSA9IF9fd2VicGFja19yZXF1aXJlX18oMTUxKTtcblx0XG5cdHZh
ciBnZXRJdGVyYXRvckZuID0gX193ZWJwYWNrX3JlcXVpcmVfXygxODIpO1xuXHR2YXIgaW52YXJp
YW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0dmFyIEtleUVzY2FwZVV0aWxzID0gX193
ZWJwYWNrX3JlcXVpcmVfXygzOCk7XG5cdHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVf
XygyKTtcblx0XG5cdHZhciBTRVBBUkFUT1IgPSAnLic7XG5cdHZhciBTVUJTRVBBUkFUT1IgPSAn
Oic7XG5cdFxuXHQvKipcblx0ICogVGhpcyBpcyBpbmxpbmVkIGZyb20gUmVhY3RFbGVtZW50IHNp
bmNlIHRoaXMgZmlsZSBpcyBzaGFyZWQgYmV0d2VlblxuXHQgKiBpc29tb3JwaGljIGFuZCByZW5k
ZXJlcnMuIFdlIGNvdWxkIGV4dHJhY3QgdGhpcyB0byBhXG5cdCAqXG5cdCAqL1xuXHRcblx0Lyoq
XG5cdCAqIFRPRE86IFRlc3QgdGhhdCBhIHNpbmdsZSBjaGlsZCBhbmQgYW4gYXJyYXkgd2l0aCBv
bmUgaXRlbSBoYXZlIHRoZSBzYW1lIGtleVxuXHQgKiBwYXR0ZXJuLlxuXHQgKi9cblx0XG5cdHZh
ciBkaWRXYXJuQWJvdXRNYXBzID0gZmFsc2U7XG5cdFxuXHQvKipcblx0ICogR2VuZXJhdGUgYSBr
ZXkgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyBhIGNvbXBvbmVudCB3aXRoaW4gYSBzZXQuXG5cdCAq
XG5cdCAqIEBwYXJhbSB7Kn0gY29tcG9uZW50IEEgY29tcG9uZW50IHRoYXQgY291bGQgY29udGFp
biBhIG1hbnVhbCBrZXkuXG5cdCAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBJbmRleCB0aGF0IGlz
IHVzZWQgaWYgYSBtYW51YWwga2V5IGlzIG5vdCBwcm92aWRlZC5cblx0ICogQHJldHVybiB7c3Ry
aW5nfVxuXHQgKi9cblx0ZnVuY3Rpb24gZ2V0Q29tcG9uZW50S2V5KGNvbXBvbmVudCwgaW5kZXgp
IHtcblx0ICAvLyBEbyBzb21lIHR5cGVjaGVja2luZyBoZXJlIHNpbmNlIHdlIGNhbGwgdGhpcyBi
bGluZGx5LiBXZSB3YW50IHRvIGVuc3VyZVxuXHQgIC8vIHRoYXQgd2UgZG9uJ3QgYmxvY2sgcG90
ZW50aWFsIGZ1dHVyZSBFUyBBUElzLlxuXHQgIGlmIChjb21wb25lbnQgJiYgdHlwZW9mIGNvbXBv
bmVudCA9PT0gJ29iamVjdCcgJiYgY29tcG9uZW50LmtleSAhPSBudWxsKSB7XG5cdCAgICAvLyBF
eHBsaWNpdCBrZXlcblx0ICAgIHJldHVybiBLZXlFc2NhcGVVdGlscy5lc2NhcGUoY29tcG9uZW50
LmtleSk7XG5cdCAgfVxuXHQgIC8vIEltcGxpY2l0IGtleSBkZXRlcm1pbmVkIGJ5IHRoZSBpbmRl
eCBpbiB0aGUgc2V0XG5cdCAgcmV0dXJuIGluZGV4LnRvU3RyaW5nKDM2KTtcblx0fVxuXHRcblx0
LyoqXG5cdCAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgY29udGFpbmVyLlxu
XHQgKiBAcGFyYW0geyFzdHJpbmd9IG5hbWVTb0ZhciBOYW1lIG9mIHRoZSBrZXkgcGF0aCBzbyBm
YXIuXG5cdCAqIEBwYXJhbSB7IWZ1bmN0aW9ufSBjYWxsYmFjayBDYWxsYmFjayB0byBpbnZva2Ug
d2l0aCBlYWNoIGNoaWxkIGZvdW5kLlxuXHQgKiBAcGFyYW0gez8qfSB0cmF2ZXJzZUNvbnRleHQg
VXNlZCB0byBwYXNzIGluZm9ybWF0aW9uIHRocm91Z2hvdXQgdGhlIHRyYXZlcnNhbFxuXHQgKiBw
cm9jZXNzLlxuXHQgKiBAcmV0dXJuIHshbnVtYmVyfSBUaGUgbnVtYmVyIG9mIGNoaWxkcmVuIGlu
IHRoaXMgc3VidHJlZS5cblx0ICovXG5cdGZ1bmN0aW9uIHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBs
KGNoaWxkcmVuLCBuYW1lU29GYXIsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpIHtcblx0ICB2
YXIgdHlwZSA9IHR5cGVvZiBjaGlsZHJlbjtcblx0XG5cdCAgaWYgKHR5cGUgPT09ICd1bmRlZmlu
ZWQnIHx8IHR5cGUgPT09ICdib29sZWFuJykge1xuXHQgICAgLy8gQWxsIG9mIHRoZSBhYm92ZSBh
cmUgcGVyY2VpdmVkIGFzIG51bGwuXG5cdCAgICBjaGlsZHJlbiA9IG51bGw7XG5cdCAgfVxuXHRc
blx0ICBpZiAoY2hpbGRyZW4gPT09IG51bGwgfHwgdHlwZSA9PT0gJ3N0cmluZycgfHwgdHlwZSA9
PT0gJ251bWJlcicgfHxcblx0ICAvLyBUaGUgZm9sbG93aW5nIGlzIGlubGluZWQgZnJvbSBSZWFj
dEVsZW1lbnQuIFRoaXMgbWVhbnMgd2UgY2FuIG9wdGltaXplXG5cdCAgLy8gc29tZSBjaGVja3Mu
IFJlYWN0IEZpYmVyIGFsc28gaW5saW5lcyB0aGlzIGxvZ2ljIGZvciBzaW1pbGFyIHB1cnBvc2Vz
LlxuXHQgIHR5cGUgPT09ICdvYmplY3QnICYmIGNoaWxkcmVuLiQkdHlwZW9mID09PSBSRUFDVF9F
TEVNRU5UX1RZUEUpIHtcblx0ICAgIGNhbGxiYWNrKHRyYXZlcnNlQ29udGV4dCwgY2hpbGRyZW4s
XG5cdCAgICAvLyBJZiBpdCdzIHRoZSBvbmx5IGNoaWxkLCB0cmVhdCB0aGUgbmFtZSBhcyBpZiBp
dCB3YXMgd3JhcHBlZCBpbiBhbiBhcnJheVxuXHQgICAgLy8gc28gdGhhdCBpdCdzIGNvbnNpc3Rl
bnQgaWYgdGhlIG51bWJlciBvZiBjaGlsZHJlbiBncm93cy5cblx0ICAgIG5hbWVTb0ZhciA9PT0g
JycgPyBTRVBBUkFUT1IgKyBnZXRDb21wb25lbnRLZXkoY2hpbGRyZW4sIDApIDogbmFtZVNvRmFy
KTtcblx0ICAgIHJldHVybiAxO1xuXHQgIH1cblx0XG5cdCAgdmFyIGNoaWxkO1xuXHQgIHZhciBu
ZXh0TmFtZTtcblx0ICB2YXIgc3VidHJlZUNvdW50ID0gMDsgLy8gQ291bnQgb2YgY2hpbGRyZW4g
Zm91bmQgaW4gdGhlIGN1cnJlbnQgc3VidHJlZS5cblx0ICB2YXIgbmV4dE5hbWVQcmVmaXggPSBu
YW1lU29GYXIgPT09ICcnID8gU0VQQVJBVE9SIDogbmFtZVNvRmFyICsgU1VCU0VQQVJBVE9SO1xu
XHRcblx0ICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcblx0ICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgY2hpbGQgPSBjaGlsZHJl
bltpXTtcblx0ICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIGdldENvbXBvbmVudEtl
eShjaGlsZCwgaSk7XG5cdCAgICAgIHN1YnRyZWVDb3VudCArPSB0cmF2ZXJzZUFsbENoaWxkcmVu
SW1wbChjaGlsZCwgbmV4dE5hbWUsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpO1xuXHQgICAg
fVxuXHQgIH0gZWxzZSB7XG5cdCAgICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0ZXJhdG9yRm4oY2hp
bGRyZW4pO1xuXHQgICAgaWYgKGl0ZXJhdG9yRm4pIHtcblx0ICAgICAgdmFyIGl0ZXJhdG9yID0g
aXRlcmF0b3JGbi5jYWxsKGNoaWxkcmVuKTtcblx0ICAgICAgdmFyIHN0ZXA7XG5cdCAgICAgIGlm
IChpdGVyYXRvckZuICE9PSBjaGlsZHJlbi5lbnRyaWVzKSB7XG5cdCAgICAgICAgdmFyIGlpID0g
MDtcblx0ICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG5c
dCAgICAgICAgICBjaGlsZCA9IHN0ZXAudmFsdWU7XG5cdCAgICAgICAgICBuZXh0TmFtZSA9IG5l
eHROYW1lUHJlZml4ICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkLCBpaSsrKTtcblx0ICAgICAgICAg
IHN1YnRyZWVDb3VudCArPSB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGlsZCwgbmV4dE5hbWUs
IGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSBlbHNl
IHtcblx0ICAgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICAgIHZhciBtYXBzQXNDaGlsZHJl
bkFkZGVuZHVtID0gJyc7XG5cdCAgICAgICAgICBpZiAoUmVhY3RDdXJyZW50T3duZXIuY3VycmVu
dCkge1xuXHQgICAgICAgICAgICB2YXIgbWFwc0FzQ2hpbGRyZW5Pd25lck5hbWUgPSBSZWFjdEN1
cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKTtcblx0ICAgICAgICAgICAgaWYgKG1hcHNBc0No
aWxkcmVuT3duZXJOYW1lKSB7XG5cdCAgICAgICAgICAgICAgbWFwc0FzQ2hpbGRyZW5BZGRlbmR1
bSA9ICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBtYXBzQXNDaGlsZHJlbk93bmVy
TmFtZSArICdgLic7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgIH1cblx0ICAgICAgICAg
IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGRpZFdhcm5B
Ym91dE1hcHMsICdVc2luZyBNYXBzIGFzIGNoaWxkcmVuIGlzIG5vdCB5ZXQgZnVsbHkgc3VwcG9y
dGVkLiBJdCBpcyBhbiAnICsgJ2V4cGVyaW1lbnRhbCBmZWF0dXJlIHRoYXQgbWlnaHQgYmUgcmVt
b3ZlZC4gQ29udmVydCBpdCB0byBhICcgKyAnc2VxdWVuY2UgLyBpdGVyYWJsZSBvZiBrZXllZCBS
ZWFjdEVsZW1lbnRzIGluc3RlYWQuJXMnLCBtYXBzQXNDaGlsZHJlbkFkZGVuZHVtKSA6IHZvaWQg
MDtcblx0ICAgICAgICAgIGRpZFdhcm5BYm91dE1hcHMgPSB0cnVlO1xuXHQgICAgICAgIH1cblx0
ICAgICAgICAvLyBJdGVyYXRvciB3aWxsIHByb3ZpZGUgZW50cnkgW2ssdl0gdHVwbGVzIHJhdGhl
ciB0aGFuIHZhbHVlcy5cblx0ICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgp
KS5kb25lKSB7XG5cdCAgICAgICAgICB2YXIgZW50cnkgPSBzdGVwLnZhbHVlO1xuXHQgICAgICAg
ICAgaWYgKGVudHJ5KSB7XG5cdCAgICAgICAgICAgIGNoaWxkID0gZW50cnlbMV07XG5cdCAgICAg
ICAgICAgIG5leHROYW1lID0gbmV4dE5hbWVQcmVmaXggKyBLZXlFc2NhcGVVdGlscy5lc2NhcGUo
ZW50cnlbMF0pICsgU1VCU0VQQVJBVE9SICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkLCAwKTtcblx0
ICAgICAgICAgICAgc3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxk
LCBuZXh0TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7XG5cdCAgICAgICAgICB9XG5c
dCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvYmplY3Qn
KSB7XG5cdCAgICAgIHZhciBhZGRlbmR1bSA9ICcnO1xuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0
ICAgICAgICBhZGRlbmR1bSA9ICcgSWYgeW91IG1lYW50IHRvIHJlbmRlciBhIGNvbGxlY3Rpb24g
b2YgY2hpbGRyZW4sIHVzZSBhbiBhcnJheSAnICsgJ2luc3RlYWQgb3Igd3JhcCB0aGUgb2JqZWN0
IHVzaW5nIGNyZWF0ZUZyYWdtZW50KG9iamVjdCkgZnJvbSB0aGUgJyArICdSZWFjdCBhZGQtb25z
Lic7XG5cdCAgICAgICAgaWYgKGNoaWxkcmVuLl9pc1JlYWN0RWxlbWVudCkge1xuXHQgICAgICAg
ICAgYWRkZW5kdW0gPSBcIiBJdCBsb29rcyBsaWtlIHlvdSdyZSB1c2luZyBhbiBlbGVtZW50IGNy
ZWF0ZWQgYnkgYSBkaWZmZXJlbnQgXCIgKyAndmVyc2lvbiBvZiBSZWFjdC4gTWFrZSBzdXJlIHRv
IHVzZSBvbmx5IG9uZSBjb3B5IG9mIFJlYWN0Lic7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGlm
IChSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7XG5cdCAgICAgICAgICB2YXIgbmFtZSA9IFJl
YWN0Q3VycmVudE93bmVyLmN1cnJlbnQuZ2V0TmFtZSgpO1xuXHQgICAgICAgICAgaWYgKG5hbWUp
IHtcblx0ICAgICAgICAgICAgYWRkZW5kdW0gKz0gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBv
ZiBgJyArIG5hbWUgKyAnYC4nO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH1cblx0ICAgICAg
fVxuXHQgICAgICB2YXIgY2hpbGRyZW5TdHJpbmcgPSBTdHJpbmcoY2hpbGRyZW4pO1xuXHQgICAg
ICAgdHJ1ZSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ09iamVjdHMgYXJlIG5vdCB2YWxp
ZCBhcyBhIFJlYWN0IGNoaWxkIChmb3VuZDogJXMpLiVzJywgY2hpbGRyZW5TdHJpbmcgPT09ICdb
b2JqZWN0IE9iamVjdF0nID8gJ29iamVjdCB3aXRoIGtleXMgeycgKyBPYmplY3Qua2V5cyhjaGls
ZHJlbikuam9pbignLCAnKSArICd9JyA6IGNoaWxkcmVuU3RyaW5nLCBhZGRlbmR1bSkgOiBfcHJv
ZEludmFyaWFudCgnMzEnLCBjaGlsZHJlblN0cmluZyA9PT0gJ1tvYmplY3QgT2JqZWN0XScgPyAn
b2JqZWN0IHdpdGgga2V5cyB7JyArIE9iamVjdC5rZXlzKGNoaWxkcmVuKS5qb2luKCcsICcpICsg
J30nIDogY2hpbGRyZW5TdHJpbmcsIGFkZGVuZHVtKSA6IHZvaWQgMDtcblx0ICAgIH1cblx0ICB9
XG5cdFxuXHQgIHJldHVybiBzdWJ0cmVlQ291bnQ7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBUcmF2
ZXJzZXMgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hp
bGRyZW5gLCBidXRcblx0ICogbWlnaHQgYWxzbyBiZSBzcGVjaWZpZWQgdGhyb3VnaCBhdHRyaWJ1
dGVzOlxuXHQgKlxuXHQgKiAtIGB0cmF2ZXJzZUFsbENoaWxkcmVuKHRoaXMucHJvcHMuY2hpbGRy
ZW4sIC4uLilgXG5cdCAqIC0gYHRyYXZlcnNlQWxsQ2hpbGRyZW4odGhpcy5wcm9wcy5sZWZ0UGFu
ZWxDaGlsZHJlbiwgLi4uKWBcblx0ICpcblx0ICogVGhlIGB0cmF2ZXJzZUNvbnRleHRgIGlzIGFu
IG9wdGlvbmFsIGFyZ3VtZW50IHRoYXQgaXMgcGFzc2VkIHRocm91Z2ggdGhlXG5cdCAqIGVudGly
ZSB0cmF2ZXJzYWwuIEl0IGNhbiBiZSB1c2VkIHRvIHN0b3JlIGFjY3VtdWxhdGlvbnMgb3IgYW55
dGhpbmcgZWxzZSB0aGF0XG5cdCAqIHRoZSBjYWxsYmFjayBtaWdodCBmaW5kIHJlbGV2YW50Llxu
XHQgKlxuXHQgKiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIG9iamVjdC5cblx0
ICogQHBhcmFtIHshZnVuY3Rpb259IGNhbGxiYWNrIFRvIGludm9rZSB1cG9uIHRyYXZlcnNpbmcg
ZWFjaCBjaGlsZC5cblx0ICogQHBhcmFtIHs/Kn0gdHJhdmVyc2VDb250ZXh0IENvbnRleHQgZm9y
IHRyYXZlcnNhbC5cblx0ICogQHJldHVybiB7IW51bWJlcn0gVGhlIG51bWJlciBvZiBjaGlsZHJl
biBpbiB0aGlzIHN1YnRyZWUuXG5cdCAqL1xuXHRmdW5jdGlvbiB0cmF2ZXJzZUFsbENoaWxkcmVu
KGNoaWxkcmVuLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KSB7XG5cdCAgaWYgKGNoaWxkcmVu
ID09IG51bGwpIHtcblx0ICAgIHJldHVybiAwO1xuXHQgIH1cblx0XG5cdCAgcmV0dXJuIHRyYXZl
cnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkcmVuLCAnJywgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4
dCk7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gdHJhdmVyc2VBbGxDaGlsZHJlbjtcblxu
LyoqKi8gfSxcbi8qIDc5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRleHBvcnRzLl9fZXNN
b2R1bGUgPSB0cnVlO1xuXHRcblx0dmFyIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5j
dGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsr
KSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsg
aWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsg
dGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblx0XG5c
dGV4cG9ydHMuZGVmYXVsdCA9IGNvbm5lY3RBZHZhbmNlZDtcblx0XG5cdHZhciBfaG9pc3ROb25S
ZWFjdFN0YXRpY3MgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExMCk7XG5cdFxuXHR2YXIgX2hvaXN0
Tm9uUmVhY3RTdGF0aWNzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2hvaXN0Tm9uUmVhY3RT
dGF0aWNzKTtcblx0XG5cdHZhciBfaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMTEp
O1xuXHRcblx0dmFyIF9pbnZhcmlhbnQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfaW52YXJp
YW50KTtcblx0XG5cdHZhciBfcmVhY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTtcblx0XG5c
dHZhciBfU3Vic2NyaXB0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOTQpO1xuXHRcblx0dmFy
IF9TdWJzY3JpcHRpb24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfU3Vic2NyaXB0aW9uKTtc
blx0XG5cdHZhciBfUHJvcFR5cGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4Mik7XG5cdFxuXHRm
dW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5f
X2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXHRcblx0ZnVuY3Rpb24gX2Ns
YXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0
YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwg
YSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblx0XG5cdGZ1bmN0aW9uIF9wb3NzaWJsZUNv
bnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKCFzZWxmKSB7IHRocm93IG5ldyBSZWZl
cmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24n
dCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gY2FsbCAmJiAodHlwZW9mIGNhbGwgPT09IFwib2Jq
ZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikgPyBjYWxsIDogc2VsZjsgfVxu
XHRcblx0ZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBl
b2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsg
dGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVs
bCBvciBhIGZ1bmN0aW9uLCBub3QgXCIgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3Mu
cHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90
eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2Us
IHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3Mp
IE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywg
c3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cdFxuXHRm
dW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMob2JqLCBrZXlzKSB7IHZhciB0YXJnZXQg
PSB7fTsgZm9yICh2YXIgaSBpbiBvYmopIHsgaWYgKGtleXMuaW5kZXhPZihpKSA+PSAwKSBjb250
aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBpKSkg
Y29udGludWU7IHRhcmdldFtpXSA9IG9ialtpXTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cdFxuXHR2
YXIgaG90UmVsb2FkaW5nVmVyc2lvbiA9IDA7XG5cdHZhciBkdW1teVN0YXRlID0ge307XG5cdGZ1
bmN0aW9uIG5vb3AoKSB7fVxuXHRmdW5jdGlvbiBtYWtlU2VsZWN0b3JTdGF0ZWZ1bChzb3VyY2VT
ZWxlY3Rvciwgc3RvcmUpIHtcblx0ICAvLyB3cmFwIHRoZSBzZWxlY3RvciBpbiBhbiBvYmplY3Qg
dGhhdCB0cmFja3MgaXRzIHJlc3VsdHMgYmV0d2VlbiBydW5zLlxuXHQgIHZhciBzZWxlY3RvciA9
IHtcblx0ICAgIHJ1bjogZnVuY3Rpb24gcnVuQ29tcG9uZW50U2VsZWN0b3IocHJvcHMpIHtcblx0
ICAgICAgdHJ5IHtcblx0ICAgICAgICB2YXIgbmV4dFByb3BzID0gc291cmNlU2VsZWN0b3Ioc3Rv
cmUuZ2V0U3RhdGUoKSwgcHJvcHMpO1xuXHQgICAgICAgIGlmIChuZXh0UHJvcHMgIT09IHNlbGVj
dG9yLnByb3BzIHx8IHNlbGVjdG9yLmVycm9yKSB7XG5cdCAgICAgICAgICBzZWxlY3Rvci5zaG91
bGRDb21wb25lbnRVcGRhdGUgPSB0cnVlO1xuXHQgICAgICAgICAgc2VsZWN0b3IucHJvcHMgPSBu
ZXh0UHJvcHM7XG5cdCAgICAgICAgICBzZWxlY3Rvci5lcnJvciA9IG51bGw7XG5cdCAgICAgICAg
fVxuXHQgICAgICB9IGNhdGNoIChlcnJvcikge1xuXHQgICAgICAgIHNlbGVjdG9yLnNob3VsZENv
bXBvbmVudFVwZGF0ZSA9IHRydWU7XG5cdCAgICAgICAgc2VsZWN0b3IuZXJyb3IgPSBlcnJvcjtc
blx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH07XG5cdFxuXHQgIHJldHVybiBzZWxlY3Rvcjtcblx0
fVxuXHRcblx0ZnVuY3Rpb24gY29ubmVjdEFkdmFuY2VkKFxuXHQvKlxuXHQgIHNlbGVjdG9yRmFj
dG9yeSBpcyBhIGZ1bmMgdGhhdCBpcyByZXNwb25zaWJsZSBmb3IgcmV0dXJuaW5nIHRoZSBzZWxl
Y3RvciBmdW5jdGlvbiB1c2VkIHRvXG5cdCAgY29tcHV0ZSBuZXcgcHJvcHMgZnJvbSBzdGF0ZSwg
cHJvcHMsIGFuZCBkaXNwYXRjaC4gRm9yIGV4YW1wbGU6XG5cdCAgICAgZXhwb3J0IGRlZmF1bHQg
Y29ubmVjdEFkdmFuY2VkKChkaXNwYXRjaCwgb3B0aW9ucykgPT4gKHN0YXRlLCBwcm9wcykgPT4g
KHtcblx0ICAgICAgdGhpbmc6IHN0YXRlLnRoaW5nc1twcm9wcy50aGluZ0lkXSxcblx0ICAgICAg
c2F2ZVRoaW5nOiBmaWVsZHMgPT4gZGlzcGF0Y2goYWN0aW9uQ3JlYXRvcnMuc2F2ZVRoaW5nKHBy
b3BzLnRoaW5nSWQsIGZpZWxkcykpLFxuXHQgICAgfSkpKFlvdXJDb21wb25lbnQpXG5cdCAgIEFj
Y2VzcyB0byBkaXNwYXRjaCBpcyBwcm92aWRlZCB0byB0aGUgZmFjdG9yeSBzbyBzZWxlY3RvckZh
Y3RvcmllcyBjYW4gYmluZCBhY3Rpb25DcmVhdG9yc1xuXHQgIG91dHNpZGUgb2YgdGhlaXIgc2Vs
ZWN0b3IgYXMgYW4gb3B0aW1pemF0aW9uLiBPcHRpb25zIHBhc3NlZCB0byBjb25uZWN0QWR2YW5j
ZWQgYXJlIHBhc3NlZCB0b1xuXHQgIHRoZSBzZWxlY3RvckZhY3RvcnksIGFsb25nIHdpdGggZGlz
cGxheU5hbWUgYW5kIFdyYXBwZWRDb21wb25lbnQsIGFzIHRoZSBzZWNvbmQgYXJndW1lbnQuXG5c
dCAgIE5vdGUgdGhhdCBzZWxlY3RvckZhY3RvcnkgaXMgcmVzcG9uc2libGUgZm9yIGFsbCBjYWNo
aW5nL21lbW9pemF0aW9uIG9mIGluYm91bmQgYW5kIG91dGJvdW5kXG5cdCAgcHJvcHMuIERvIG5v
dCB1c2UgY29ubmVjdEFkdmFuY2VkIGRpcmVjdGx5IHdpdGhvdXQgbWVtb2l6aW5nIHJlc3VsdHMg
YmV0d2VlbiBjYWxscyB0byB5b3VyXG5cdCAgc2VsZWN0b3IsIG90aGVyd2lzZSB0aGUgQ29ubmVj
dCBjb21wb25lbnQgd2lsbCByZS1yZW5kZXIgb24gZXZlcnkgc3RhdGUgb3IgcHJvcHMgY2hhbmdl
LlxuXHQqL1xuXHRzZWxlY3RvckZhY3RvcnkpIHtcblx0ICB2YXIgX2NvbnRleHRUeXBlcywgX2No
aWxkQ29udGV4dFR5cGVzO1xuXHRcblx0ICB2YXIgX3JlZiA9IGFyZ3VtZW50cy5sZW5ndGggPiAx
ICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge30sXG5cdCAg
ICAgIF9yZWYkZ2V0RGlzcGxheU5hbWUgPSBfcmVmLmdldERpc3BsYXlOYW1lLFxuXHQgICAgICBn
ZXREaXNwbGF5TmFtZSA9IF9yZWYkZ2V0RGlzcGxheU5hbWUgPT09IHVuZGVmaW5lZCA/IGZ1bmN0
aW9uIChuYW1lKSB7XG5cdCAgICByZXR1cm4gJ0Nvbm5lY3RBZHZhbmNlZCgnICsgbmFtZSArICcp
Jztcblx0ICB9IDogX3JlZiRnZXREaXNwbGF5TmFtZSxcblx0ICAgICAgX3JlZiRtZXRob2ROYW1l
ID0gX3JlZi5tZXRob2ROYW1lLFxuXHQgICAgICBtZXRob2ROYW1lID0gX3JlZiRtZXRob2ROYW1l
ID09PSB1bmRlZmluZWQgPyAnY29ubmVjdEFkdmFuY2VkJyA6IF9yZWYkbWV0aG9kTmFtZSxcblx0
ICAgICAgX3JlZiRyZW5kZXJDb3VudFByb3AgPSBfcmVmLnJlbmRlckNvdW50UHJvcCxcblx0ICAg
ICAgcmVuZGVyQ291bnRQcm9wID0gX3JlZiRyZW5kZXJDb3VudFByb3AgPT09IHVuZGVmaW5lZCA/
IHVuZGVmaW5lZCA6IF9yZWYkcmVuZGVyQ291bnRQcm9wLFxuXHQgICAgICBfcmVmJHNob3VsZEhh
bmRsZVN0YXQgPSBfcmVmLnNob3VsZEhhbmRsZVN0YXRlQ2hhbmdlcyxcblx0ICAgICAgc2hvdWxk
SGFuZGxlU3RhdGVDaGFuZ2VzID0gX3JlZiRzaG91bGRIYW5kbGVTdGF0ID09PSB1bmRlZmluZWQg
PyB0cnVlIDogX3JlZiRzaG91bGRIYW5kbGVTdGF0LFxuXHQgICAgICBfcmVmJHN0b3JlS2V5ID0g
X3JlZi5zdG9yZUtleSxcblx0ICAgICAgc3RvcmVLZXkgPSBfcmVmJHN0b3JlS2V5ID09PSB1bmRl
ZmluZWQgPyAnc3RvcmUnIDogX3JlZiRzdG9yZUtleSxcblx0ICAgICAgX3JlZiR3aXRoUmVmID0g
X3JlZi53aXRoUmVmLFxuXHQgICAgICB3aXRoUmVmID0gX3JlZiR3aXRoUmVmID09PSB1bmRlZmlu
ZWQgPyBmYWxzZSA6IF9yZWYkd2l0aFJlZixcblx0ICAgICAgY29ubmVjdE9wdGlvbnMgPSBfb2Jq
ZWN0V2l0aG91dFByb3BlcnRpZXMoX3JlZiwgWydnZXREaXNwbGF5TmFtZScsICdtZXRob2ROYW1l
JywgJ3JlbmRlckNvdW50UHJvcCcsICdzaG91bGRIYW5kbGVTdGF0ZUNoYW5nZXMnLCAnc3RvcmVL
ZXknLCAnd2l0aFJlZiddKTtcblx0XG5cdCAgdmFyIHN1YnNjcmlwdGlvbktleSA9IHN0b3JlS2V5
ICsgJ1N1YnNjcmlwdGlvbic7XG5cdCAgdmFyIHZlcnNpb24gPSBob3RSZWxvYWRpbmdWZXJzaW9u
Kys7XG5cdFxuXHQgIHZhciBjb250ZXh0VHlwZXMgPSAoX2NvbnRleHRUeXBlcyA9IHt9LCBfY29u
dGV4dFR5cGVzW3N0b3JlS2V5XSA9IF9Qcm9wVHlwZXMuc3RvcmVTaGFwZSwgX2NvbnRleHRUeXBl
c1tzdWJzY3JpcHRpb25LZXldID0gX1Byb3BUeXBlcy5zdWJzY3JpcHRpb25TaGFwZSwgX2NvbnRl
eHRUeXBlcyk7XG5cdCAgdmFyIGNoaWxkQ29udGV4dFR5cGVzID0gKF9jaGlsZENvbnRleHRUeXBl
cyA9IHt9LCBfY2hpbGRDb250ZXh0VHlwZXNbc3Vic2NyaXB0aW9uS2V5XSA9IF9Qcm9wVHlwZXMu
c3Vic2NyaXB0aW9uU2hhcGUsIF9jaGlsZENvbnRleHRUeXBlcyk7XG5cdFxuXHQgIHJldHVybiBm
dW5jdGlvbiB3cmFwV2l0aENvbm5lY3QoV3JhcHBlZENvbXBvbmVudCkge1xuXHQgICAgKDAsIF9p
bnZhcmlhbnQyLmRlZmF1bHQpKHR5cGVvZiBXcmFwcGVkQ29tcG9uZW50ID09ICdmdW5jdGlvbics
ICdZb3UgbXVzdCBwYXNzIGEgY29tcG9uZW50IHRvIHRoZSBmdW5jdGlvbiByZXR1cm5lZCBieSAn
ICsgKCdjb25uZWN0LiBJbnN0ZWFkIHJlY2VpdmVkICcgKyBKU09OLnN0cmluZ2lmeShXcmFwcGVk
Q29tcG9uZW50KSkpO1xuXHRcblx0ICAgIHZhciB3cmFwcGVkQ29tcG9uZW50TmFtZSA9IFdyYXBw
ZWRDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgV3JhcHBlZENvbXBvbmVudC5uYW1lIHx8ICdDb21w
b25lbnQnO1xuXHRcblx0ICAgIHZhciBkaXNwbGF5TmFtZSA9IGdldERpc3BsYXlOYW1lKHdyYXBw
ZWRDb21wb25lbnROYW1lKTtcblx0XG5cdCAgICB2YXIgc2VsZWN0b3JGYWN0b3J5T3B0aW9ucyA9
IF9leHRlbmRzKHt9LCBjb25uZWN0T3B0aW9ucywge1xuXHQgICAgICBnZXREaXNwbGF5TmFtZTog
Z2V0RGlzcGxheU5hbWUsXG5cdCAgICAgIG1ldGhvZE5hbWU6IG1ldGhvZE5hbWUsXG5cdCAgICAg
IHJlbmRlckNvdW50UHJvcDogcmVuZGVyQ291bnRQcm9wLFxuXHQgICAgICBzaG91bGRIYW5kbGVT
dGF0ZUNoYW5nZXM6IHNob3VsZEhhbmRsZVN0YXRlQ2hhbmdlcyxcblx0ICAgICAgc3RvcmVLZXk6
IHN0b3JlS2V5LFxuXHQgICAgICB3aXRoUmVmOiB3aXRoUmVmLFxuXHQgICAgICBkaXNwbGF5TmFt
ZTogZGlzcGxheU5hbWUsXG5cdCAgICAgIHdyYXBwZWRDb21wb25lbnROYW1lOiB3cmFwcGVkQ29t
cG9uZW50TmFtZSxcblx0ICAgICAgV3JhcHBlZENvbXBvbmVudDogV3JhcHBlZENvbXBvbmVudFxu
XHQgICAgfSk7XG5cdFxuXHQgICAgdmFyIENvbm5lY3QgPSBmdW5jdGlvbiAoX0NvbXBvbmVudCkg
e1xuXHQgICAgICBfaW5oZXJpdHMoQ29ubmVjdCwgX0NvbXBvbmVudCk7XG5cdFxuXHQgICAgICBm
dW5jdGlvbiBDb25uZWN0KHByb3BzLCBjb250ZXh0KSB7XG5cdCAgICAgICAgX2NsYXNzQ2FsbENo
ZWNrKHRoaXMsIENvbm5lY3QpO1xuXHRcblx0ICAgICAgICB2YXIgX3RoaXMgPSBfcG9zc2libGVD
b25zdHJ1Y3RvclJldHVybih0aGlzLCBfQ29tcG9uZW50LmNhbGwodGhpcywgcHJvcHMsIGNvbnRl
eHQpKTtcblx0XG5cdCAgICAgICAgX3RoaXMudmVyc2lvbiA9IHZlcnNpb247XG5cdCAgICAgICAg
X3RoaXMuc3RhdGUgPSB7fTtcblx0ICAgICAgICBfdGhpcy5yZW5kZXJDb3VudCA9IDA7XG5cdCAg
ICAgICAgX3RoaXMuc3RvcmUgPSBwcm9wc1tzdG9yZUtleV0gfHwgY29udGV4dFtzdG9yZUtleV07
XG5cdCAgICAgICAgX3RoaXMucHJvcHNNb2RlID0gQm9vbGVhbihwcm9wc1tzdG9yZUtleV0pO1xu
XHQgICAgICAgIF90aGlzLnNldFdyYXBwZWRJbnN0YW5jZSA9IF90aGlzLnNldFdyYXBwZWRJbnN0
YW5jZS5iaW5kKF90aGlzKTtcblx0XG5cdCAgICAgICAgKDAsIF9pbnZhcmlhbnQyLmRlZmF1bHQp
KF90aGlzLnN0b3JlLCAnQ291bGQgbm90IGZpbmQgXCInICsgc3RvcmVLZXkgKyAnXCIgaW4gZWl0
aGVyIHRoZSBjb250ZXh0IG9yIHByb3BzIG9mICcgKyAoJ1wiJyArIGRpc3BsYXlOYW1lICsgJ1wi
LiBFaXRoZXIgd3JhcCB0aGUgcm9vdCBjb21wb25lbnQgaW4gYSA8UHJvdmlkZXI+LCAnKSArICgn
b3IgZXhwbGljaXRseSBwYXNzIFwiJyArIHN0b3JlS2V5ICsgJ1wiIGFzIGEgcHJvcCB0byBcIicg
KyBkaXNwbGF5TmFtZSArICdcIi4nKSk7XG5cdFxuXHQgICAgICAgIF90aGlzLmluaXRTZWxlY3Rv
cigpO1xuXHQgICAgICAgIF90aGlzLmluaXRTdWJzY3JpcHRpb24oKTtcblx0ICAgICAgICByZXR1
cm4gX3RoaXM7XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIENvbm5lY3QucHJvdG90eXBlLmdldENo
aWxkQ29udGV4dCA9IGZ1bmN0aW9uIGdldENoaWxkQ29udGV4dCgpIHtcblx0ICAgICAgICB2YXIg
X3JlZjI7XG5cdFxuXHQgICAgICAgIC8vIElmIHRoaXMgY29tcG9uZW50IHJlY2VpdmVkIHN0b3Jl
IGZyb20gcHJvcHMsIGl0cyBzdWJzY3JpcHRpb24gc2hvdWxkIGJlIHRyYW5zcGFyZW50XG5cdCAg
ICAgICAgLy8gdG8gYW55IGRlc2NlbmRhbnRzIHJlY2VpdmluZyBzdG9yZStzdWJzY3JpcHRpb24g
ZnJvbSBjb250ZXh0OyBpdCBwYXNzZXMgYWxvbmdcblx0ICAgICAgICAvLyBzdWJzY3JpcHRpb24g
cGFzc2VkIHRvIGl0LiBPdGhlcndpc2UsIGl0IHNoYWRvd3MgdGhlIHBhcmVudCBzdWJzY3JpcHRp
b24sIHdoaWNoIGFsbG93c1xuXHQgICAgICAgIC8vIENvbm5lY3QgdG8gY29udHJvbCBvcmRlcmlu
ZyBvZiBub3RpZmljYXRpb25zIHRvIGZsb3cgdG9wLWRvd24uXG5cdCAgICAgICAgdmFyIHN1YnNj
cmlwdGlvbiA9IHRoaXMucHJvcHNNb2RlID8gbnVsbCA6IHRoaXMuc3Vic2NyaXB0aW9uO1xuXHQg
ICAgICAgIHJldHVybiBfcmVmMiA9IHt9LCBfcmVmMltzdWJzY3JpcHRpb25LZXldID0gc3Vic2Ny
aXB0aW9uIHx8IHRoaXMuY29udGV4dFtzdWJzY3JpcHRpb25LZXldLCBfcmVmMjtcblx0ICAgICAg
fTtcblx0XG5cdCAgICAgIENvbm5lY3QucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50ID0gZnVu
Y3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG5cdCAgICAgICAgaWYgKCFzaG91bGRIYW5kbGVT
dGF0ZUNoYW5nZXMpIHJldHVybjtcblx0XG5cdCAgICAgICAgLy8gY29tcG9uZW50V2lsbE1vdW50
IGZpcmVzIGR1cmluZyBzZXJ2ZXIgc2lkZSByZW5kZXJpbmcsIGJ1dCBjb21wb25lbnREaWRNb3Vu
dCBhbmRcblx0ICAgICAgICAvLyBjb21wb25lbnRXaWxsVW5tb3VudCBkbyBub3QuIEJlY2F1c2Ug
b2YgdGhpcywgdHJ5U3Vic2NyaWJlIGhhcHBlbnMgZHVyaW5nIC4uLmRpZE1vdW50LlxuXHQgICAg
ICAgIC8vIE90aGVyd2lzZSwgdW5zdWJzY3JpcHRpb24gd291bGQgbmV2ZXIgdGFrZSBwbGFjZSBk
dXJpbmcgU1NSLCBjYXVzaW5nIGEgbWVtb3J5IGxlYWsuXG5cdCAgICAgICAgLy8gVG8gaGFuZGxl
IHRoZSBjYXNlIHdoZXJlIGEgY2hpbGQgY29tcG9uZW50IG1heSBoYXZlIHRyaWdnZXJlZCBhIHN0
YXRlIGNoYW5nZSBieVxuXHQgICAgICAgIC8vIGRpc3BhdGNoaW5nIGFuIGFjdGlvbiBpbiBpdHMg
Y29tcG9uZW50V2lsbE1vdW50LCB3ZSBoYXZlIHRvIHJlLXJ1biB0aGUgc2VsZWN0IGFuZCBtYXli
ZVxuXHQgICAgICAgIC8vIHJlLXJlbmRlci5cblx0ICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi50
cnlTdWJzY3JpYmUoKTtcblx0ICAgICAgICB0aGlzLnNlbGVjdG9yLnJ1bih0aGlzLnByb3BzKTtc
blx0ICAgICAgICBpZiAodGhpcy5zZWxlY3Rvci5zaG91bGRDb21wb25lbnRVcGRhdGUpIHRoaXMu
Zm9yY2VVcGRhdGUoKTtcblx0ICAgICAgfTtcblx0XG5cdCAgICAgIENvbm5lY3QucHJvdG90eXBl
LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgPSBmdW5jdGlvbiBjb21wb25lbnRXaWxsUmVjZWl2
ZVByb3BzKG5leHRQcm9wcykge1xuXHQgICAgICAgIHRoaXMuc2VsZWN0b3IucnVuKG5leHRQcm9w
cyk7XG5cdCAgICAgIH07XG5cdFxuXHQgICAgICBDb25uZWN0LnByb3RvdHlwZS5zaG91bGRDb21w
b25lbnRVcGRhdGUgPSBmdW5jdGlvbiBzaG91bGRDb21wb25lbnRVcGRhdGUoKSB7XG5cdCAgICAg
ICAgcmV0dXJuIHRoaXMuc2VsZWN0b3Iuc2hvdWxkQ29tcG9uZW50VXBkYXRlO1xuXHQgICAgICB9
O1xuXHRcblx0ICAgICAgQ29ubmVjdC5wcm90b3R5cGUuY29tcG9uZW50V2lsbFVubW91bnQgPSBm
dW5jdGlvbiBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcblx0ICAgICAgICBpZiAodGhpcy5zdWJz
Y3JpcHRpb24pIHRoaXMuc3Vic2NyaXB0aW9uLnRyeVVuc3Vic2NyaWJlKCk7XG5cdCAgICAgICAg
dGhpcy5zdWJzY3JpcHRpb24gPSBudWxsO1xuXHQgICAgICAgIHRoaXMubm90aWZ5TmVzdGVkU3Vi
cyA9IG5vb3A7XG5cdCAgICAgICAgdGhpcy5zdG9yZSA9IG51bGw7XG5cdCAgICAgICAgdGhpcy5z
ZWxlY3Rvci5ydW4gPSBub29wO1xuXHQgICAgICAgIHRoaXMuc2VsZWN0b3Iuc2hvdWxkQ29tcG9u
ZW50VXBkYXRlID0gZmFsc2U7XG5cdCAgICAgIH07XG5cdFxuXHQgICAgICBDb25uZWN0LnByb3Rv
dHlwZS5nZXRXcmFwcGVkSW5zdGFuY2UgPSBmdW5jdGlvbiBnZXRXcmFwcGVkSW5zdGFuY2UoKSB7
XG5cdCAgICAgICAgKDAsIF9pbnZhcmlhbnQyLmRlZmF1bHQpKHdpdGhSZWYsICdUbyBhY2Nlc3Mg
dGhlIHdyYXBwZWQgaW5zdGFuY2UsIHlvdSBuZWVkIHRvIHNwZWNpZnkgJyArICgneyB3aXRoUmVm
OiB0cnVlIH0gaW4gdGhlIG9wdGlvbnMgYXJndW1lbnQgb2YgdGhlICcgKyBtZXRob2ROYW1lICsg
JygpIGNhbGwuJykpO1xuXHQgICAgICAgIHJldHVybiB0aGlzLndyYXBwZWRJbnN0YW5jZTtcblx0
ICAgICAgfTtcblx0XG5cdCAgICAgIENvbm5lY3QucHJvdG90eXBlLnNldFdyYXBwZWRJbnN0YW5j
ZSA9IGZ1bmN0aW9uIHNldFdyYXBwZWRJbnN0YW5jZShyZWYpIHtcblx0ICAgICAgICB0aGlzLndy
YXBwZWRJbnN0YW5jZSA9IHJlZjtcblx0ICAgICAgfTtcblx0XG5cdCAgICAgIENvbm5lY3QucHJv
dG90eXBlLmluaXRTZWxlY3RvciA9IGZ1bmN0aW9uIGluaXRTZWxlY3RvcigpIHtcblx0ICAgICAg
ICB2YXIgc291cmNlU2VsZWN0b3IgPSBzZWxlY3RvckZhY3RvcnkodGhpcy5zdG9yZS5kaXNwYXRj
aCwgc2VsZWN0b3JGYWN0b3J5T3B0aW9ucyk7XG5cdCAgICAgICAgdGhpcy5zZWxlY3RvciA9IG1h
a2VTZWxlY3RvclN0YXRlZnVsKHNvdXJjZVNlbGVjdG9yLCB0aGlzLnN0b3JlKTtcblx0ICAgICAg
ICB0aGlzLnNlbGVjdG9yLnJ1bih0aGlzLnByb3BzKTtcblx0ICAgICAgfTtcblx0XG5cdCAgICAg
IENvbm5lY3QucHJvdG90eXBlLmluaXRTdWJzY3JpcHRpb24gPSBmdW5jdGlvbiBpbml0U3Vic2Ny
aXB0aW9uKCkge1xuXHQgICAgICAgIGlmICghc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzKSByZXR1
cm47XG5cdFxuXHQgICAgICAgIC8vIHBhcmVudFN1YidzIHNvdXJjZSBzaG91bGQgbWF0Y2ggd2hl
cmUgc3RvcmUgY2FtZSBmcm9tOiBwcm9wcyB2cy4gY29udGV4dC4gQSBjb21wb25lbnRcblx0ICAg
ICAgICAvLyBjb25uZWN0ZWQgdG8gdGhlIHN0b3JlIHZpYSBwcm9wcyBzaG91bGRuJ3QgdXNlIHN1
YnNjcmlwdGlvbiBmcm9tIGNvbnRleHQsIG9yIHZpY2UgdmVyc2EuXG5cdCAgICAgICAgdmFyIHBh
cmVudFN1YiA9ICh0aGlzLnByb3BzTW9kZSA/IHRoaXMucHJvcHMgOiB0aGlzLmNvbnRleHQpW3N1
YnNjcmlwdGlvbktleV07XG5cdCAgICAgICAgdGhpcy5zdWJzY3JpcHRpb24gPSBuZXcgX1N1YnNj
cmlwdGlvbjIuZGVmYXVsdCh0aGlzLnN0b3JlLCBwYXJlbnRTdWIsIHRoaXMub25TdGF0ZUNoYW5n
ZS5iaW5kKHRoaXMpKTtcblx0XG5cdCAgICAgICAgLy8gYG5vdGlmeU5lc3RlZFN1YnNgIGlzIGR1
cGxpY2F0ZWQgdG8gaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZSBjb21wb25lbnQgaXMgIHVubW91
bnRlZCBpblxuXHQgICAgICAgIC8vIHRoZSBtaWRkbGUgb2YgdGhlIG5vdGlmaWNhdGlvbiBsb29w
LCB3aGVyZSBgdGhpcy5zdWJzY3JpcHRpb25gIHdpbGwgdGhlbiBiZSBudWxsLiBBblxuXHQgICAg
ICAgIC8vIGV4dHJhIG51bGwgY2hlY2sgZXZlcnkgY2hhbmdlIGNhbiBiZSBhdm9pZGVkIGJ5IGNv
cHlpbmcgdGhlIG1ldGhvZCBvbnRvIGB0aGlzYCBhbmQgdGhlblxuXHQgICAgICAgIC8vIHJlcGxh
Y2luZyBpdCB3aXRoIGEgbm8tb3Agb24gdW5tb3VudC4gVGhpcyBjYW4gcHJvYmFibHkgYmUgYXZv
aWRlZCBpZiBTdWJzY3JpcHRpb24nc1xuXHQgICAgICAgIC8vIGxpc3RlbmVycyBsb2dpYyBpcyBj
aGFuZ2VkIHRvIG5vdCBjYWxsIGxpc3RlbmVycyB0aGF0IGhhdmUgYmVlbiB1bnN1YnNjcmliZWQg
aW4gdGhlXG5cdCAgICAgICAgLy8gbWlkZGxlIG9mIHRoZSBub3RpZmljYXRpb24gbG9vcC5cblx0
ICAgICAgICB0aGlzLm5vdGlmeU5lc3RlZFN1YnMgPSB0aGlzLnN1YnNjcmlwdGlvbi5ub3RpZnlO
ZXN0ZWRTdWJzLmJpbmQodGhpcy5zdWJzY3JpcHRpb24pO1xuXHQgICAgICB9O1xuXHRcblx0ICAg
ICAgQ29ubmVjdC5wcm90b3R5cGUub25TdGF0ZUNoYW5nZSA9IGZ1bmN0aW9uIG9uU3RhdGVDaGFu
Z2UoKSB7XG5cdCAgICAgICAgdGhpcy5zZWxlY3Rvci5ydW4odGhpcy5wcm9wcyk7XG5cdFxuXHQg
ICAgICAgIGlmICghdGhpcy5zZWxlY3Rvci5zaG91bGRDb21wb25lbnRVcGRhdGUpIHtcblx0ICAg
ICAgICAgIHRoaXMubm90aWZ5TmVzdGVkU3VicygpO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAg
ICAgICAgICB0aGlzLmNvbXBvbmVudERpZFVwZGF0ZSA9IHRoaXMubm90aWZ5TmVzdGVkU3Vic09u
Q29tcG9uZW50RGlkVXBkYXRlO1xuXHQgICAgICAgICAgdGhpcy5zZXRTdGF0ZShkdW1teVN0YXRl
KTtcblx0ICAgICAgICB9XG5cdCAgICAgIH07XG5cdFxuXHQgICAgICBDb25uZWN0LnByb3RvdHlw
ZS5ub3RpZnlOZXN0ZWRTdWJzT25Db21wb25lbnREaWRVcGRhdGUgPSBmdW5jdGlvbiBub3RpZnlO
ZXN0ZWRTdWJzT25Db21wb25lbnREaWRVcGRhdGUoKSB7XG5cdCAgICAgICAgLy8gYGNvbXBvbmVu
dERpZFVwZGF0ZWAgaXMgY29uZGl0aW9uYWxseSBpbXBsZW1lbnRlZCB3aGVuIGBvblN0YXRlQ2hh
bmdlYCBkZXRlcm1pbmVzIGl0XG5cdCAgICAgICAgLy8gbmVlZHMgdG8gbm90aWZ5IG5lc3RlZCBz
dWJzLiBPbmNlIGNhbGxlZCwgaXQgdW5pbXBsZW1lbnRzIGl0c2VsZiB1bnRpbCBmdXJ0aGVyIHN0
YXRlXG5cdCAgICAgICAgLy8gY2hhbmdlcyBvY2N1ci4gRG9pbmcgaXQgdGhpcyB3YXkgdnMgaGF2
aW5nIGEgcGVybWFuZW50IGBjb21wb25lbnREaWRVcGRhdGVgIHRoYXQgZG9lc1xuXHQgICAgICAg
IC8vIGEgYm9vbGVhbiBjaGVjayBldmVyeSB0aW1lIGF2b2lkcyBhbiBleHRyYSBtZXRob2QgY2Fs
bCBtb3N0IG9mIHRoZSB0aW1lLCByZXN1bHRpbmdcblx0ICAgICAgICAvLyBpbiBzb21lIHBlcmYg
Ym9vc3QuXG5cdCAgICAgICAgdGhpcy5jb21wb25lbnREaWRVcGRhdGUgPSB1bmRlZmluZWQ7XG5c
dCAgICAgICAgdGhpcy5ub3RpZnlOZXN0ZWRTdWJzKCk7XG5cdCAgICAgIH07XG5cdFxuXHQgICAg
ICBDb25uZWN0LnByb3RvdHlwZS5pc1N1YnNjcmliZWQgPSBmdW5jdGlvbiBpc1N1YnNjcmliZWQo
KSB7XG5cdCAgICAgICAgcmV0dXJuIEJvb2xlYW4odGhpcy5zdWJzY3JpcHRpb24pICYmIHRoaXMu
c3Vic2NyaXB0aW9uLmlzU3Vic2NyaWJlZCgpO1xuXHQgICAgICB9O1xuXHRcblx0ICAgICAgQ29u
bmVjdC5wcm90b3R5cGUuYWRkRXh0cmFQcm9wcyA9IGZ1bmN0aW9uIGFkZEV4dHJhUHJvcHMocHJv
cHMpIHtcblx0ICAgICAgICBpZiAoIXdpdGhSZWYgJiYgIXJlbmRlckNvdW50UHJvcCAmJiAhKHRo
aXMucHJvcHNNb2RlICYmIHRoaXMuc3Vic2NyaXB0aW9uKSkgcmV0dXJuIHByb3BzO1xuXHQgICAg
ICAgIC8vIG1ha2UgYSBzaGFsbG93IGNvcHkgc28gdGhhdCBmaWVsZHMgYWRkZWQgZG9uJ3QgbGVh
ayB0byB0aGUgb3JpZ2luYWwgc2VsZWN0b3IuXG5cdCAgICAgICAgLy8gdGhpcyBpcyBlc3BlY2lh
bGx5IGltcG9ydGFudCBmb3IgJ3JlZicgc2luY2UgdGhhdCdzIGEgcmVmZXJlbmNlIGJhY2sgdG8g
dGhlIGNvbXBvbmVudFxuXHQgICAgICAgIC8vIGluc3RhbmNlLiBhIHNpbmdsZXRvbiBtZW1vaXpl
ZCBzZWxlY3RvciB3b3VsZCB0aGVuIGJlIGhvbGRpbmcgYSByZWZlcmVuY2UgdG8gdGhlXG5cdCAg
ICAgICAgLy8gaW5zdGFuY2UsIHByZXZlbnRpbmcgdGhlIGluc3RhbmNlIGZyb20gYmVpbmcgZ2Fy
YmFnZSBjb2xsZWN0ZWQsIGFuZCB0aGF0IHdvdWxkIGJlIGJhZFxuXHQgICAgICAgIHZhciB3aXRo
RXh0cmFzID0gX2V4dGVuZHMoe30sIHByb3BzKTtcblx0ICAgICAgICBpZiAod2l0aFJlZikgd2l0
aEV4dHJhcy5yZWYgPSB0aGlzLnNldFdyYXBwZWRJbnN0YW5jZTtcblx0ICAgICAgICBpZiAocmVu
ZGVyQ291bnRQcm9wKSB3aXRoRXh0cmFzW3JlbmRlckNvdW50UHJvcF0gPSB0aGlzLnJlbmRlckNv
dW50Kys7XG5cdCAgICAgICAgaWYgKHRoaXMucHJvcHNNb2RlICYmIHRoaXMuc3Vic2NyaXB0aW9u
KSB3aXRoRXh0cmFzW3N1YnNjcmlwdGlvbktleV0gPSB0aGlzLnN1YnNjcmlwdGlvbjtcblx0ICAg
ICAgICByZXR1cm4gd2l0aEV4dHJhcztcblx0ICAgICAgfTtcblx0XG5cdCAgICAgIENvbm5lY3Qu
cHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpIHtcblx0ICAgICAgICB2YXIgc2Vs
ZWN0b3IgPSB0aGlzLnNlbGVjdG9yO1xuXHQgICAgICAgIHNlbGVjdG9yLnNob3VsZENvbXBvbmVu
dFVwZGF0ZSA9IGZhbHNlO1xuXHRcblx0ICAgICAgICBpZiAoc2VsZWN0b3IuZXJyb3IpIHtcblx0
ICAgICAgICAgIHRocm93IHNlbGVjdG9yLmVycm9yO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAg
ICAgICAgICByZXR1cm4gKDAsIF9yZWFjdC5jcmVhdGVFbGVtZW50KShXcmFwcGVkQ29tcG9uZW50
LCB0aGlzLmFkZEV4dHJhUHJvcHMoc2VsZWN0b3IucHJvcHMpKTtcblx0ICAgICAgICB9XG5cdCAg
ICAgIH07XG5cdFxuXHQgICAgICByZXR1cm4gQ29ubmVjdDtcblx0ICAgIH0oX3JlYWN0LkNvbXBv
bmVudCk7XG5cdFxuXHQgICAgQ29ubmVjdC5XcmFwcGVkQ29tcG9uZW50ID0gV3JhcHBlZENvbXBv
bmVudDtcblx0ICAgIENvbm5lY3QuZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTtcblx0ICAgIENv
bm5lY3QuY2hpbGRDb250ZXh0VHlwZXMgPSBjaGlsZENvbnRleHRUeXBlcztcblx0ICAgIENvbm5l
Y3QuY29udGV4dFR5cGVzID0gY29udGV4dFR5cGVzO1xuXHQgICAgQ29ubmVjdC5wcm9wVHlwZXMg
PSBjb250ZXh0VHlwZXM7XG5cdFxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIENvbm5lY3Qu
cHJvdG90eXBlLmNvbXBvbmVudFdpbGxVcGRhdGUgPSBmdW5jdGlvbiBjb21wb25lbnRXaWxsVXBk
YXRlKCkge1xuXHQgICAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXHRcblx0ICAgICAgICAvLyBX
ZSBhcmUgaG90IHJlbG9hZGluZyFcblx0ICAgICAgICBpZiAodGhpcy52ZXJzaW9uICE9PSB2ZXJz
aW9uKSB7XG5cdCAgICAgICAgICB0aGlzLnZlcnNpb24gPSB2ZXJzaW9uO1xuXHQgICAgICAgICAg
dGhpcy5pbml0U2VsZWN0b3IoKTtcblx0XG5cdCAgICAgICAgICAvLyBJZiBhbnkgY29ubmVjdGVk
IGRlc2NlbmRhbnRzIGRvbid0IGhvdCByZWxvYWQgKGFuZCByZXN1YnNjcmliZSBpbiB0aGUgcHJv
Y2VzcyksIHRoZWlyXG5cdCAgICAgICAgICAvLyBsaXN0ZW5lcnMgd2lsbCBiZSBsb3N0IHdoZW4g
d2UgdW5zdWJzY3JpYmUuIFVuZm9ydHVuYXRlbHksIGJ5IGNvcHlpbmcgb3ZlciBhbGxcblx0ICAg
ICAgICAgIC8vIGxpc3RlbmVycywgdGhpcyBkb2VzIG1lYW4gdGhhdCB0aGUgb2xkIHZlcnNpb25z
IG9mIGNvbm5lY3RlZCBkZXNjZW5kYW50cyB3aWxsIHN0aWxsIGJlXG5cdCAgICAgICAgICAvLyBu
b3RpZmllZCBvZiBzdGF0ZSBjaGFuZ2VzOyBob3dldmVyLCB0aGVpciBvblN0YXRlQ2hhbmdlIGZ1
bmN0aW9uIGlzIGEgbm8tb3Agc28gdGhpc1xuXHQgICAgICAgICAgLy8gaXNuJ3QgYSBodWdlIGRl
YWwuXG5cdCAgICAgICAgICB2YXIgb2xkTGlzdGVuZXJzID0gW107XG5cdFxuXHQgICAgICAgICAg
aWYgKHRoaXMuc3Vic2NyaXB0aW9uKSB7XG5cdCAgICAgICAgICAgIG9sZExpc3RlbmVycyA9IHRo
aXMuc3Vic2NyaXB0aW9uLmxpc3RlbmVycy5nZXQoKTtcblx0ICAgICAgICAgICAgdGhpcy5zdWJz
Y3JpcHRpb24udHJ5VW5zdWJzY3JpYmUoKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICAgIHRo
aXMuaW5pdFN1YnNjcmlwdGlvbigpO1xuXHQgICAgICAgICAgaWYgKHNob3VsZEhhbmRsZVN0YXRl
Q2hhbmdlcykge1xuXHQgICAgICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbi50cnlTdWJzY3JpYmUo
KTtcblx0ICAgICAgICAgICAgb2xkTGlzdGVuZXJzLmZvckVhY2goZnVuY3Rpb24gKGxpc3RlbmVy
KSB7XG5cdCAgICAgICAgICAgICAgcmV0dXJuIF90aGlzMi5zdWJzY3JpcHRpb24ubGlzdGVuZXJz
LnN1YnNjcmliZShsaXN0ZW5lcik7XG5cdCAgICAgICAgICAgIH0pO1xuXHQgICAgICAgICAgfVxu
XHQgICAgICAgIH1cblx0ICAgICAgfTtcblx0ICAgIH1cblx0XG5cdCAgICByZXR1cm4gKDAsIF9o
b2lzdE5vblJlYWN0U3RhdGljczIuZGVmYXVsdCkoQ29ubmVjdCwgV3JhcHBlZENvbXBvbmVudCk7
XG5cdCAgfTtcblx0fVxuXG4vKioqLyB9LFxuLyogODAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVs
ZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0
XG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cdGV4cG9ydHMud3JhcE1hcFRvUHJvcHND
b25zdGFudCA9IHdyYXBNYXBUb1Byb3BzQ29uc3RhbnQ7XG5cdGV4cG9ydHMuZ2V0RGVwZW5kc09u
T3duUHJvcHMgPSBnZXREZXBlbmRzT25Pd25Qcm9wcztcblx0ZXhwb3J0cy53cmFwTWFwVG9Qcm9w
c0Z1bmMgPSB3cmFwTWFwVG9Qcm9wc0Z1bmM7XG5cdFxuXHR2YXIgX3ZlcmlmeVBsYWluT2JqZWN0
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4Myk7XG5cdFxuXHR2YXIgX3ZlcmlmeVBsYWluT2JqZWN0
MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3ZlcmlmeVBsYWluT2JqZWN0KTtcblx0XG5cdGZ1
bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9f
ZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cdFxuXHRmdW5jdGlvbiB3cmFw
TWFwVG9Qcm9wc0NvbnN0YW50KGdldENvbnN0YW50KSB7XG5cdCAgcmV0dXJuIGZ1bmN0aW9uIGlu
aXRDb25zdGFudFNlbGVjdG9yKGRpc3BhdGNoLCBvcHRpb25zKSB7XG5cdCAgICB2YXIgY29uc3Rh
bnQgPSBnZXRDb25zdGFudChkaXNwYXRjaCwgb3B0aW9ucyk7XG5cdFxuXHQgICAgZnVuY3Rpb24g
Y29uc3RhbnRTZWxlY3RvcigpIHtcblx0ICAgICAgcmV0dXJuIGNvbnN0YW50O1xuXHQgICAgfVxu
XHQgICAgY29uc3RhbnRTZWxlY3Rvci5kZXBlbmRzT25Pd25Qcm9wcyA9IGZhbHNlO1xuXHQgICAg
cmV0dXJuIGNvbnN0YW50U2VsZWN0b3I7XG5cdCAgfTtcblx0fVxuXHRcblx0Ly8gZGVwZW5kc09u
T3duUHJvcHMgaXMgdXNlZCBieSBjcmVhdGVNYXBUb1Byb3BzUHJveHkgdG8gZGV0ZXJtaW5lIHdo
ZXRoZXIgdG8gcGFzcyBwcm9wcyBhcyBhcmdzXG5cdC8vIHRvIHRoZSBtYXBUb1Byb3BzIGZ1bmN0
aW9uIGJlaW5nIHdyYXBwZWQuIEl0IGlzIGFsc28gdXNlZCBieSBtYWtlUHVyZVByb3BzU2VsZWN0
b3IgdG8gZGV0ZXJtaW5lXG5cdC8vIHdoZXRoZXIgbWFwVG9Qcm9wcyBuZWVkcyB0byBiZSBpbnZv
a2VkIHdoZW4gcHJvcHMgaGF2ZSBjaGFuZ2VkLlxuXHQvLyBcblx0Ly8gQSBsZW5ndGggb2Ygb25l
IHNpZ25hbHMgdGhhdCBtYXBUb1Byb3BzIGRvZXMgbm90IGRlcGVuZCBvbiBwcm9wcyBmcm9tIHRo
ZSBwYXJlbnQgY29tcG9uZW50LlxuXHQvLyBBIGxlbmd0aCBvZiB6ZXJvIGlzIGFzc3VtZWQgdG8g
bWVhbiBtYXBUb1Byb3BzIGlzIGdldHRpbmcgYXJncyB2aWEgYXJndW1lbnRzIG9yIC4uLmFyZ3Mg
YW5kXG5cdC8vIHRoZXJlZm9yZSBub3QgcmVwb3J0aW5nIGl0cyBsZW5ndGggYWNjdXJhdGVseS4u
XG5cdGZ1bmN0aW9uIGdldERlcGVuZHNPbk93blByb3BzKG1hcFRvUHJvcHMpIHtcblx0ICByZXR1
cm4gbWFwVG9Qcm9wcy5kZXBlbmRzT25Pd25Qcm9wcyAhPT0gbnVsbCAmJiBtYXBUb1Byb3BzLmRl
cGVuZHNPbk93blByb3BzICE9PSB1bmRlZmluZWQgPyBCb29sZWFuKG1hcFRvUHJvcHMuZGVwZW5k
c09uT3duUHJvcHMpIDogbWFwVG9Qcm9wcy5sZW5ndGggIT09IDE7XG5cdH1cblx0XG5cdC8vIFVz
ZWQgYnkgd2hlbk1hcFN0YXRlVG9Qcm9wc0lzRnVuY3Rpb24gYW5kIHdoZW5NYXBEaXNwYXRjaFRv
UHJvcHNJc0Z1bmN0aW9uLFxuXHQvLyB0aGlzIGZ1bmN0aW9uIHdyYXBzIG1hcFRvUHJvcHMgaW4g
YSBwcm94eSBmdW5jdGlvbiB3aGljaCBkb2VzIHNldmVyYWwgdGhpbmdzOlxuXHQvLyBcblx0Ly8g
ICogRGV0ZWN0cyB3aGV0aGVyIHRoZSBtYXBUb1Byb3BzIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCBk
ZXBlbmRzIG9uIHByb3BzLCB3aGljaFxuXHQvLyAgICBpcyB1c2VkIGJ5IHNlbGVjdG9yRmFjdG9y
eSB0byBkZWNpZGUgaWYgaXQgc2hvdWxkIHJlaW52b2tlIG9uIHByb3BzIGNoYW5nZXMuXG5cdC8v
ICAgIFxuXHQvLyAgKiBPbiBmaXJzdCBjYWxsLCBoYW5kbGVzIG1hcFRvUHJvcHMgaWYgcmV0dXJu
cyBhbm90aGVyIGZ1bmN0aW9uLCBhbmQgdHJlYXRzIHRoYXRcblx0Ly8gICAgbmV3IGZ1bmN0aW9u
IGFzIHRoZSB0cnVlIG1hcFRvUHJvcHMgZm9yIHN1YnNlcXVlbnQgY2FsbHMuXG5cdC8vICAgIFxu
XHQvLyAgKiBPbiBmaXJzdCBjYWxsLCB2ZXJpZmllcyB0aGUgZmlyc3QgcmVzdWx0IGlzIGEgcGxh
aW4gb2JqZWN0LCBpbiBvcmRlciB0byB3YXJuXG5cdC8vICAgIHRoZSBkZXZlbG9wZXIgdGhhdCB0
aGVpciBtYXBUb1Byb3BzIGZ1bmN0aW9uIGlzIG5vdCByZXR1cm5pbmcgYSB2YWxpZCByZXN1bHQu
XG5cdC8vICAgIFxuXHRmdW5jdGlvbiB3cmFwTWFwVG9Qcm9wc0Z1bmMobWFwVG9Qcm9wcywgbWV0
aG9kTmFtZSkge1xuXHQgIHJldHVybiBmdW5jdGlvbiBpbml0UHJveHlTZWxlY3RvcihkaXNwYXRj
aCwgX3JlZikge1xuXHQgICAgdmFyIGRpc3BsYXlOYW1lID0gX3JlZi5kaXNwbGF5TmFtZTtcblx0
XG5cdCAgICB2YXIgcHJveHkgPSBmdW5jdGlvbiBtYXBUb1Byb3BzUHJveHkoc3RhdGVPckRpc3Bh
dGNoLCBvd25Qcm9wcykge1xuXHQgICAgICByZXR1cm4gcHJveHkuZGVwZW5kc09uT3duUHJvcHMg
PyBwcm94eS5tYXBUb1Byb3BzKHN0YXRlT3JEaXNwYXRjaCwgb3duUHJvcHMpIDogcHJveHkubWFw
VG9Qcm9wcyhzdGF0ZU9yRGlzcGF0Y2gpO1xuXHQgICAgfTtcblx0XG5cdCAgICAvLyBhbGxvdyBk
ZXRlY3RGYWN0b3J5QW5kVmVyaWZ5IHRvIGdldCBvd25Qcm9wc1xuXHQgICAgcHJveHkuZGVwZW5k
c09uT3duUHJvcHMgPSB0cnVlO1xuXHRcblx0ICAgIHByb3h5Lm1hcFRvUHJvcHMgPSBmdW5jdGlv
biBkZXRlY3RGYWN0b3J5QW5kVmVyaWZ5KHN0YXRlT3JEaXNwYXRjaCwgb3duUHJvcHMpIHtcblx0
ICAgICAgcHJveHkubWFwVG9Qcm9wcyA9IG1hcFRvUHJvcHM7XG5cdCAgICAgIHByb3h5LmRlcGVu
ZHNPbk93blByb3BzID0gZ2V0RGVwZW5kc09uT3duUHJvcHMobWFwVG9Qcm9wcyk7XG5cdCAgICAg
IHZhciBwcm9wcyA9IHByb3h5KHN0YXRlT3JEaXNwYXRjaCwgb3duUHJvcHMpO1xuXHRcblx0ICAg
ICAgaWYgKHR5cGVvZiBwcm9wcyA9PT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICAgIHByb3h5Lm1h
cFRvUHJvcHMgPSBwcm9wcztcblx0ICAgICAgICBwcm94eS5kZXBlbmRzT25Pd25Qcm9wcyA9IGdl
dERlcGVuZHNPbk93blByb3BzKHByb3BzKTtcblx0ICAgICAgICBwcm9wcyA9IHByb3h5KHN0YXRl
T3JEaXNwYXRjaCwgb3duUHJvcHMpO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICBpZiAoZmFsc2Up
ICgwLCBfdmVyaWZ5UGxhaW5PYmplY3QyLmRlZmF1bHQpKHByb3BzLCBkaXNwbGF5TmFtZSwgbWV0
aG9kTmFtZSk7XG5cdFxuXHQgICAgICByZXR1cm4gcHJvcHM7XG5cdCAgICB9O1xuXHRcblx0ICAg
IHJldHVybiBwcm94eTtcblx0ICB9O1xuXHR9XG5cbi8qKiovIH0sXG4vKiA4MSAqL1xuLyoqKi8g
ZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3Vz
ZSBzdHJpY3QnO1xuXHRcblx0ZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblx0ZXhwb3J0cy5j
b25uZWN0ID0gZXhwb3J0cy5jb25uZWN0QWR2YW5jZWQgPSBleHBvcnRzLmNyZWF0ZVByb3ZpZGVy
ID0gZXhwb3J0cy5Qcm92aWRlciA9IHVuZGVmaW5lZDtcblx0XG5cdHZhciBfUHJvdmlkZXIgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDE4Nyk7XG5cdFxuXHR2YXIgX1Byb3ZpZGVyMiA9IF9pbnRlcm9w
UmVxdWlyZURlZmF1bHQoX1Byb3ZpZGVyKTtcblx0XG5cdHZhciBfY29ubmVjdEFkdmFuY2VkID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg3OSk7XG5cdFxuXHR2YXIgX2Nvbm5lY3RBZHZhbmNlZDIgPSBf
aW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb25uZWN0QWR2YW5jZWQpO1xuXHRcblx0dmFyIF9jb25u
ZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxODgpO1xuXHRcblx0dmFyIF9jb25uZWN0MiA9IF9p
bnRlcm9wUmVxdWlyZURlZmF1bHQoX2Nvbm5lY3QpO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BS
ZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6
IHsgZGVmYXVsdDogb2JqIH07IH1cblx0XG5cdGV4cG9ydHMuUHJvdmlkZXIgPSBfUHJvdmlkZXIy
LmRlZmF1bHQ7XG5cdGV4cG9ydHMuY3JlYXRlUHJvdmlkZXIgPSBfUHJvdmlkZXIuY3JlYXRlUHJv
dmlkZXI7XG5cdGV4cG9ydHMuY29ubmVjdEFkdmFuY2VkID0gX2Nvbm5lY3RBZHZhbmNlZDIuZGVm
YXVsdDtcblx0ZXhwb3J0cy5jb25uZWN0ID0gX2Nvbm5lY3QyLmRlZmF1bHQ7XG5cbi8qKiovIH0s
XG4vKiA4MiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVx
dWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0ZXhwb3J0cy5fX2VzTW9kdWxlID0g
dHJ1ZTtcblx0ZXhwb3J0cy5zdG9yZVNoYXBlID0gZXhwb3J0cy5zdWJzY3JpcHRpb25TaGFwZSA9
IHVuZGVmaW5lZDtcblx0XG5cdHZhciBfcHJvcFR5cGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1
Nik7XG5cdFxuXHR2YXIgX3Byb3BUeXBlczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9wcm9w
VHlwZXMpO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0
dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblx0
XG5cdHZhciBzdWJzY3JpcHRpb25TaGFwZSA9IGV4cG9ydHMuc3Vic2NyaXB0aW9uU2hhcGUgPSBf
cHJvcFR5cGVzMi5kZWZhdWx0LnNoYXBlKHtcblx0ICB0cnlTdWJzY3JpYmU6IF9wcm9wVHlwZXMy
LmRlZmF1bHQuZnVuYy5pc1JlcXVpcmVkLFxuXHQgIHRyeVVuc3Vic2NyaWJlOiBfcHJvcFR5cGVz
Mi5kZWZhdWx0LmZ1bmMuaXNSZXF1aXJlZCxcblx0ICBub3RpZnlOZXN0ZWRTdWJzOiBfcHJvcFR5
cGVzMi5kZWZhdWx0LmZ1bmMuaXNSZXF1aXJlZCxcblx0ICBpc1N1YnNjcmliZWQ6IF9wcm9wVHlw
ZXMyLmRlZmF1bHQuZnVuYy5pc1JlcXVpcmVkXG5cdH0pO1xuXHRcblx0dmFyIHN0b3JlU2hhcGUg
PSBleHBvcnRzLnN0b3JlU2hhcGUgPSBfcHJvcFR5cGVzMi5kZWZhdWx0LnNoYXBlKHtcblx0ICBz
dWJzY3JpYmU6IF9wcm9wVHlwZXMyLmRlZmF1bHQuZnVuYy5pc1JlcXVpcmVkLFxuXHQgIGRpc3Bh
dGNoOiBfcHJvcFR5cGVzMi5kZWZhdWx0LmZ1bmMuaXNSZXF1aXJlZCxcblx0ICBnZXRTdGF0ZTog
X3Byb3BUeXBlczIuZGVmYXVsdC5mdW5jLmlzUmVxdWlyZWRcblx0fSk7XG5cbi8qKiovIH0sXG4v
KiA4MyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWly
ZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0ZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1
ZTtcblx0ZXhwb3J0cy5kZWZhdWx0ID0gdmVyaWZ5UGxhaW5PYmplY3Q7XG5cdFxuXHR2YXIgX2lz
UGxhaW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMzKTtcblx0XG5cdHZhciBfaXNQbGFp
bk9iamVjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc1BsYWluT2JqZWN0KTtcblx0XG5c
dHZhciBfd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oNTApO1xuXHRcblx0dmFyIF93YXJu
aW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3dhcm5pbmcpO1xuXHRcblx0ZnVuY3Rpb24g
X2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVs
ZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblx0XG5cdGZ1bmN0aW9uIHZlcmlmeVBsYWlu
T2JqZWN0KHZhbHVlLCBkaXNwbGF5TmFtZSwgbWV0aG9kTmFtZSkge1xuXHQgIGlmICghKDAsIF9p
c1BsYWluT2JqZWN0Mi5kZWZhdWx0KSh2YWx1ZSkpIHtcblx0ICAgICgwLCBfd2FybmluZzIuZGVm
YXVsdCkobWV0aG9kTmFtZSArICcoKSBpbiAnICsgZGlzcGxheU5hbWUgKyAnIG11c3QgcmV0dXJu
IGEgcGxhaW4gb2JqZWN0LiBJbnN0ZWFkIHJlY2VpdmVkICcgKyB2YWx1ZSArICcuJyk7XG5cdCAg
fVxuXHR9XG5cbi8qKiovIH0sXG4vKiA4NCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0T2Jq
ZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG5cdCAgdmFsdWU6
IHRydWVcblx0fSk7XG5cdFxuXHR2YXIgX2NyZWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkgeyBmdW5j
dGlvbiBkZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkg
PCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlw
dG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0
b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNj
cmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVz
Y3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3Rv
ciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3Bl
cnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3Bz
KSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25z
dHJ1Y3RvcjsgfTsgfSgpO1xuXHRcblx0dmFyIF9yZWFjdCA9IF9fd2VicGFja19yZXF1aXJlX18o
MTIpO1xuXHRcblx0dmFyIF9yZWFjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWFjdCk7
XG5cdFxuXHR2YXIgX2NsYXNzbmFtZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMxKTtcblx0XG5c
dHZhciBfY2xhc3NuYW1lczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jbGFzc25hbWVzKTtc
blx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmog
JiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cdFxuXHRmdW5j
dGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3Rh
bmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5u
b3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXHRcblx0ZnVuY3Rpb24gX3Bv
c3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoIXNlbGYpIHsgdGhyb3cg
bmV3IFJlZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVy
KCkgaGFzbid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBjYWxsICYmICh0eXBlb2YgY2FsbCA9
PT0gXCJvYmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSA/IGNhbGwgOiBz
ZWxmOyB9XG5cdFxuXHRmdW5jdGlvbiBfaW5oZXJpdHMoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIHsg
aWYgKHR5cGVvZiBzdXBlckNsYXNzICE9PSBcImZ1bmN0aW9uXCIgJiYgc3VwZXJDbGFzcyAhPT0g
bnVsbCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhl
ciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCBcIiArIHR5cGVvZiBzdXBlckNsYXNzKTsgfSBz
dWJDbGFzcy5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ2xhc3MgJiYgc3VwZXJDbGFz
cy5wcm90b3R5cGUsIHsgY29uc3RydWN0b3I6IHsgdmFsdWU6IHN1YkNsYXNzLCBlbnVtZXJhYmxl
OiBmYWxzZSwgd3JpdGFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSB9IH0pOyBpZiAoc3Vw
ZXJDbGFzcykgT2JqZWN0LnNldFByb3RvdHlwZU9mID8gT2JqZWN0LnNldFByb3RvdHlwZU9mKHN1
YkNsYXNzLCBzdXBlckNsYXNzKSA6IHN1YkNsYXNzLl9fcHJvdG9fXyA9IHN1cGVyQ2xhc3M7IH1c
blx0XG5cdHZhciBUb2RvVGV4dElucHV0ID0gZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcblx0ICBf
aW5oZXJpdHMoVG9kb1RleHRJbnB1dCwgX0NvbXBvbmVudCk7XG5cdFxuXHQgIGZ1bmN0aW9uIFRv
ZG9UZXh0SW5wdXQoKSB7XG5cdCAgICB2YXIgX3JlZjtcblx0XG5cdCAgICB2YXIgX3RlbXAsIF90
aGlzLCBfcmV0O1xuXHRcblx0ICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBUb2RvVGV4dElucHV0
KTtcblx0XG5cdCAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFy
cmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuXHQgICAgICBhcmdz
W19rZXldID0gYXJndW1lbnRzW19rZXldO1xuXHQgICAgfVxuXHRcblx0ICAgIHJldHVybiBfcmV0
ID0gKF90ZW1wID0gKF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgKF9y
ZWYgPSBUb2RvVGV4dElucHV0Ll9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoVG9k
b1RleHRJbnB1dCkpLmNhbGwuYXBwbHkoX3JlZiwgW3RoaXNdLmNvbmNhdChhcmdzKSkpLCBfdGhp
cyksIF90aGlzLnN0YXRlID0ge1xuXHQgICAgICB0ZXh0OiBfdGhpcy5wcm9wcy50ZXh0IHx8ICcn
XG5cdCAgICB9LCBfdGhpcy5oYW5kbGVTdWJtaXQgPSBmdW5jdGlvbiAoZSkge1xuXHQgICAgICB2
YXIgdGV4dCA9IGUudGFyZ2V0LnZhbHVlLnRyaW0oKTtcblx0ICAgICAgaWYgKGUud2hpY2ggPT09
IDEzKSB7XG5cdCAgICAgICAgX3RoaXMucHJvcHMub25TYXZlKHRleHQpO1xuXHQgICAgICAgIGlm
IChfdGhpcy5wcm9wcy5uZXdUb2RvKSB7XG5cdCAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7IHRl
eHQ6ICcnIH0pO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfSwgX3RoaXMuaGFuZGxl
Q2hhbmdlID0gZnVuY3Rpb24gKGUpIHtcblx0ICAgICAgX3RoaXMuc2V0U3RhdGUoeyB0ZXh0OiBl
LnRhcmdldC52YWx1ZSB9KTtcblx0ICAgIH0sIF90aGlzLmhhbmRsZUJsdXIgPSBmdW5jdGlvbiAo
ZSkge1xuXHQgICAgICBpZiAoIV90aGlzLnByb3BzLm5ld1RvZG8pIHtcblx0ICAgICAgICBfdGhp
cy5wcm9wcy5vblNhdmUoZS50YXJnZXQudmFsdWUpO1xuXHQgICAgICB9XG5cdCAgICB9LCBfdGVt
cCksIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKF90aGlzLCBfcmV0KTtcblx0ICB9XG5cdFxu
XHQgIF9jcmVhdGVDbGFzcyhUb2RvVGV4dElucHV0LCBbe1xuXHQgICAga2V5OiAncmVuZGVyJyxc
blx0ICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG5cdCAgICAgIHJldHVybiBfcmVhY3Qy
LmRlZmF1bHQuY3JlYXRlRWxlbWVudCgnaW5wdXQnLCB7IGNsYXNzTmFtZTogKDAsIF9jbGFzc25h
bWVzMi5kZWZhdWx0KSh7XG5cdCAgICAgICAgICBlZGl0OiB0aGlzLnByb3BzLmVkaXRpbmcsXG5c
dCAgICAgICAgICAnbmV3LXRvZG8nOiB0aGlzLnByb3BzLm5ld1RvZG9cblx0ICAgICAgICB9KSxc
blx0ICAgICAgICB0eXBlOiAndGV4dCcsXG5cdCAgICAgICAgcGxhY2Vob2xkZXI6IHRoaXMucHJv
cHMucGxhY2Vob2xkZXIsXG5cdCAgICAgICAgYXV0b0ZvY3VzOiAndHJ1ZScsXG5cdCAgICAgICAg
dmFsdWU6IHRoaXMuc3RhdGUudGV4dCxcblx0ICAgICAgICBvbkJsdXI6IHRoaXMuaGFuZGxlQmx1
cixcblx0ICAgICAgICBvbkNoYW5nZTogdGhpcy5oYW5kbGVDaGFuZ2UsXG5cdCAgICAgICAgb25L
ZXlEb3duOiB0aGlzLmhhbmRsZVN1Ym1pdCB9KTtcblx0ICAgIH1cblx0ICB9XSk7XG5cdFxuXHQg
IHJldHVybiBUb2RvVGV4dElucHV0O1xuXHR9KF9yZWFjdC5Db21wb25lbnQpO1xuXHRcblx0VG9k
b1RleHRJbnB1dC5wcm9wVHlwZXMgPSB7XG5cdCAgb25TYXZlOiBfcmVhY3QuUHJvcFR5cGVzLmZ1
bmMuaXNSZXF1aXJlZCxcblx0ICB0ZXh0OiBfcmVhY3QuUHJvcFR5cGVzLnN0cmluZyxcblx0ICBw
bGFjZWhvbGRlcjogX3JlYWN0LlByb3BUeXBlcy5zdHJpbmcsXG5cdCAgZWRpdGluZzogX3JlYWN0
LlByb3BUeXBlcy5ib29sLFxuXHQgIG5ld1RvZG86IF9yZWFjdC5Qcm9wVHlwZXMuYm9vbFxuXHR9
O1xuXHRleHBvcnRzLmRlZmF1bHQgPSBUb2RvVGV4dElucHV0O1xuXG4vKioqLyB9LFxuLyogODUg
Ki9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdCd1c2Ugc3RyaWN0Jztc
blx0XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xu
XHQgIHZhbHVlOiB0cnVlXG5cdH0pO1xuXHR2YXIgQUREX1RPRE8gPSBleHBvcnRzLkFERF9UT0RP
ID0gJ0FERF9UT0RPJztcblx0dmFyIERFTEVURV9UT0RPID0gZXhwb3J0cy5ERUxFVEVfVE9ETyA9
ICdERUxFVEVfVE9ETyc7XG5cdHZhciBFRElUX1RPRE8gPSBleHBvcnRzLkVESVRfVE9ETyA9ICdF
RElUX1RPRE8nO1xuXHR2YXIgQ09NUExFVEVfVE9ETyA9IGV4cG9ydHMuQ09NUExFVEVfVE9ETyA9
ICdDT01QTEVURV9UT0RPJztcblx0dmFyIENPTVBMRVRFX0FMTCA9IGV4cG9ydHMuQ09NUExFVEVf
QUxMID0gJ0NPTVBMRVRFX0FMTCc7XG5cdHZhciBDTEVBUl9DT01QTEVURUQgPSBleHBvcnRzLkNM
RUFSX0NPTVBMRVRFRCA9ICdDTEVBUl9DT01QTEVURUQnO1xuXG4vKioqLyB9LFxuLyogODYgKi9c
bi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0
XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwge1xuXHQg
IHZhbHVlOiB0cnVlXG5cdH0pO1xuXHR2YXIgU0hPV19BTEwgPSBleHBvcnRzLlNIT1dfQUxMID0g
J3Nob3dfYWxsJztcblx0dmFyIFNIT1dfQ09NUExFVEVEID0gZXhwb3J0cy5TSE9XX0NPTVBMRVRF
RCA9ICdzaG93X2NvbXBsZXRlZCc7XG5cdHZhciBTSE9XX0FDVElWRSA9IGV4cG9ydHMuU0hPV19B
Q1RJVkUgPSAnc2hvd19hY3RpdmUnO1xuXG4vKioqLyB9LFxuLyogODcgKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8vIHNoaW0gZm9yIHVzaW5nIHByb2Nlc3MgaW4g
YnJvd3NlclxuXHR2YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cdFxuXHQvLyBj
YWNoZWQgZnJvbSB3aGF0ZXZlciBnbG9iYWwgaXMgcHJlc2VudCBzbyB0aGF0IHRlc3QgcnVubmVy
cyB0aGF0IHN0dWIgaXRcblx0Ly8gZG9uJ3QgYnJlYWsgdGhpbmdzLiAgQnV0IHdlIG5lZWQgdG8g
d3JhcCBpdCBpbiBhIHRyeSBjYXRjaCBpbiBjYXNlIGl0IGlzXG5cdC8vIHdyYXBwZWQgaW4gc3Ry
aWN0IG1vZGUgY29kZSB3aGljaCBkb2Vzbid0IGRlZmluZSBhbnkgZ2xvYmFscy4gIEl0J3MgaW5z
aWRlIGFcblx0Ly8gZnVuY3Rpb24gYmVjYXVzZSB0cnkvY2F0Y2hlcyBkZW9wdGltaXplIGluIGNl
cnRhaW4gZW5naW5lcy5cblx0XG5cdHZhciBjYWNoZWRTZXRUaW1lb3V0O1xuXHR2YXIgY2FjaGVk
Q2xlYXJUaW1lb3V0O1xuXHRcblx0ZnVuY3Rpb24gZGVmYXVsdFNldFRpbW91dCgpIHtcblx0ICAg
IHRocm93IG5ldyBFcnJvcignc2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xuXHR9
XG5cdGZ1bmN0aW9uIGRlZmF1bHRDbGVhclRpbWVvdXQgKCkge1xuXHQgICAgdGhyb3cgbmV3IEVy
cm9yKCdjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcblx0fVxuXHQoZnVuY3Rp
b24gKCkge1xuXHQgICAgdHJ5IHtcblx0ICAgICAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgPT09
ICdmdW5jdGlvbicpIHtcblx0ICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVv
dXQ7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9
IGRlZmF1bHRTZXRUaW1vdXQ7XG5cdCAgICAgICAgfVxuXHQgICAgfSBjYXRjaCAoZSkge1xuXHQg
ICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuXHQgICAgfVxuXHQg
ICAgdHJ5IHtcblx0ICAgICAgICBpZiAodHlwZW9mIGNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9u
Jykge1xuXHQgICAgICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG5c
dCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVm
YXVsdENsZWFyVGltZW91dDtcblx0ICAgICAgICB9XG5cdCAgICB9IGNhdGNoIChlKSB7XG5cdCAg
ICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcblx0ICAgIH1c
blx0fSAoKSlcblx0ZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcblx0ICAgIGlmIChjYWNoZWRT
ZXRUaW1lb3V0ID09PSBzZXRUaW1lb3V0KSB7XG5cdCAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVu
dHMgaW4gc2FuZSBzaXR1YXRpb25zXG5cdCAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAw
KTtcblx0ICAgIH1cblx0ICAgIC8vIGlmIHNldFRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQg
d2FzIGxhdHRlciBkZWZpbmVkXG5cdCAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1
bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcblx0ICAg
ICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcblx0ICAgICAgICByZXR1cm4gc2V0
VGltZW91dChmdW4sIDApO1xuXHQgICAgfVxuXHQgICAgdHJ5IHtcblx0ICAgICAgICAvLyB3aGVu
IHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1h
ZGRuZXNzXG5cdCAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcblx0ICAg
IH0gY2F0Y2goZSl7XG5cdCAgICAgICAgdHJ5IHtcblx0ICAgICAgICAgICAgLy8gV2hlbiB3ZSBh
cmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0
IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG5cdCAgICAgICAg
ICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwobnVsbCwgZnVuLCAwKTtcblx0ICAgICAg
ICB9IGNhdGNoKGUpe1xuXHQgICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0
J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9y
ICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0
aHJvdyBhIGdsb2JhbCBlcnJvclxuXHQgICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91
dC5jYWxsKHRoaXMsIGZ1biwgMCk7XG5cdCAgICAgICAgfVxuXHQgICAgfVxuXHRcblx0XG5cdH1c
blx0ZnVuY3Rpb24gcnVuQ2xlYXJUaW1lb3V0KG1hcmtlcikge1xuXHQgICAgaWYgKGNhY2hlZENs
ZWFyVGltZW91dCA9PT0gY2xlYXJUaW1lb3V0KSB7XG5cdCAgICAgICAgLy9ub3JtYWwgZW52aXJv
bWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG5cdCAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dCht
YXJrZXIpO1xuXHQgICAgfVxuXHQgICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFi
bGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuXHQgICAgaWYgKChjYWNoZWRDbGVhclRpbWVvdXQg
PT09IGRlZmF1bHRDbGVhclRpbWVvdXQgfHwgIWNhY2hlZENsZWFyVGltZW91dCkgJiYgY2xlYXJU
aW1lb3V0KSB7XG5cdCAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xu
XHQgICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcblx0ICAgIH1cblx0ICAgIHRy
eSB7XG5cdCAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0
VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuXHQgICAgICAgIHJldHVybiBjYWNoZWRDbGVh
clRpbWVvdXQobWFya2VyKTtcblx0ICAgIH0gY2F0Y2ggKGUpe1xuXHQgICAgICAgIHRyeSB7XG5c
dCAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJl
ZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCAgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBj
YWxsZWQgbm9ybWFsbHlcblx0ICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5j
YWxsKG51bGwsIG1hcmtlcik7XG5cdCAgICAgICAgfSBjYXRjaCAoZSl7XG5cdCAgICAgICAgICAg
IC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11
c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4
dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yLlxuXHQgICAg
ICAgICAgICAvLyBTb21lIHZlcnNpb25zIG9mIEkuRS4gaGF2ZSBkaWZmZXJlbnQgcnVsZXMgZm9y
IGNsZWFyVGltZW91dCB2cyBzZXRUaW1lb3V0XG5cdCAgICAgICAgICAgIHJldHVybiBjYWNoZWRD
bGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuXHQgICAgICAgIH1cblx0ICAgIH1cblx0
XG5cdFxuXHRcblx0fVxuXHR2YXIgcXVldWUgPSBbXTtcblx0dmFyIGRyYWluaW5nID0gZmFsc2U7
XG5cdHZhciBjdXJyZW50UXVldWU7XG5cdHZhciBxdWV1ZUluZGV4ID0gLTE7XG5cdFxuXHRmdW5j
dGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG5cdCAgICBpZiAoIWRyYWluaW5nIHx8ICFjdXJyZW50
UXVldWUpIHtcblx0ICAgICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAgICBkcmFpbmluZyA9IGZh
bHNlO1xuXHQgICAgaWYgKGN1cnJlbnRRdWV1ZS5sZW5ndGgpIHtcblx0ICAgICAgICBxdWV1ZSA9
IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgICBx
dWV1ZUluZGV4ID0gLTE7XG5cdCAgICB9XG5cdCAgICBpZiAocXVldWUubGVuZ3RoKSB7XG5cdCAg
ICAgICAgZHJhaW5RdWV1ZSgpO1xuXHQgICAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBkcmFpblF1
ZXVlKCkge1xuXHQgICAgaWYgKGRyYWluaW5nKSB7XG5cdCAgICAgICAgcmV0dXJuO1xuXHQgICAg
fVxuXHQgICAgdmFyIHRpbWVvdXQgPSBydW5UaW1lb3V0KGNsZWFuVXBOZXh0VGljayk7XG5cdCAg
ICBkcmFpbmluZyA9IHRydWU7XG5cdFxuXHQgICAgdmFyIGxlbiA9IHF1ZXVlLmxlbmd0aDtcblx0
ICAgIHdoaWxlKGxlbikge1xuXHQgICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuXHQgICAg
ICAgIHF1ZXVlID0gW107XG5cdCAgICAgICAgd2hpbGUgKCsrcXVldWVJbmRleCA8IGxlbikge1xu
XHQgICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG5cdCAgICAgICAgICAgICAgICBjdXJy
ZW50UXVldWVbcXVldWVJbmRleF0ucnVuKCk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9
XG5cdCAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuXHQgICAgICAgIGxlbiA9IHF1ZXVlLmxlbmd0
aDtcblx0ICAgIH1cblx0ICAgIGN1cnJlbnRRdWV1ZSA9IG51bGw7XG5cdCAgICBkcmFpbmluZyA9
IGZhbHNlO1xuXHQgICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xuXHR9XG5cdFxuXHRwcm9j
ZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuXHQgICAgdmFyIGFyZ3MgPSBuZXcgQXJy
YXkoYXJndW1lbnRzLmxlbmd0aCAtIDEpO1xuXHQgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAx
KSB7XG5cdCAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKysp
IHtcblx0ICAgICAgICAgICAgYXJnc1tpIC0gMV0gPSBhcmd1bWVudHNbaV07XG5cdCAgICAgICAg
fVxuXHQgICAgfVxuXHQgICAgcXVldWUucHVzaChuZXcgSXRlbShmdW4sIGFyZ3MpKTtcblx0ICAg
IGlmIChxdWV1ZS5sZW5ndGggPT09IDEgJiYgIWRyYWluaW5nKSB7XG5cdCAgICAgICAgcnVuVGlt
ZW91dChkcmFpblF1ZXVlKTtcblx0ICAgIH1cblx0fTtcblx0XG5cdC8vIHY4IGxpa2VzIHByZWRp
Y3RpYmxlIG9iamVjdHNcblx0ZnVuY3Rpb24gSXRlbShmdW4sIGFycmF5KSB7XG5cdCAgICB0aGlz
LmZ1biA9IGZ1bjtcblx0ICAgIHRoaXMuYXJyYXkgPSBhcnJheTtcblx0fVxuXHRJdGVtLnByb3Rv
dHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG5cdCAgICB0aGlzLmZ1bi5hcHBseShudWxsLCB0aGlz
LmFycmF5KTtcblx0fTtcblx0cHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJztcblx0cHJvY2Vzcy5i
cm93c2VyID0gdHJ1ZTtcblx0cHJvY2Vzcy5lbnYgPSB7fTtcblx0cHJvY2Vzcy5hcmd2ID0gW107
XG5cdHByb2Nlc3MudmVyc2lvbiA9ICcnOyAvLyBlbXB0eSBzdHJpbmcgdG8gYXZvaWQgcmVnZXhw
IGlzc3Vlc1xuXHRwcm9jZXNzLnZlcnNpb25zID0ge307XG5cdFxuXHRmdW5jdGlvbiBub29wKCkg
e31cblx0XG5cdHByb2Nlc3Mub24gPSBub29wO1xuXHRwcm9jZXNzLmFkZExpc3RlbmVyID0gbm9v
cDtcblx0cHJvY2Vzcy5vbmNlID0gbm9vcDtcblx0cHJvY2Vzcy5vZmYgPSBub29wO1xuXHRwcm9j
ZXNzLnJlbW92ZUxpc3RlbmVyID0gbm9vcDtcblx0cHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMg
PSBub29wO1xuXHRwcm9jZXNzLmVtaXQgPSBub29wO1xuXHRcblx0cHJvY2Vzcy5iaW5kaW5nID0g
ZnVuY3Rpb24gKG5hbWUpIHtcblx0ICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5n
IGlzIG5vdCBzdXBwb3J0ZWQnKTtcblx0fTtcblx0XG5cdHByb2Nlc3MuY3dkID0gZnVuY3Rpb24g
KCkgeyByZXR1cm4gJy8nIH07XG5cdHByb2Nlc3MuY2hkaXIgPSBmdW5jdGlvbiAoZGlyKSB7XG5c
dCAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuY2hkaXIgaXMgbm90IHN1cHBvcnRlZCcpO1xu
XHR9O1xuXHRwcm9jZXNzLnVtYXNrID0gZnVuY3Rpb24oKSB7IHJldHVybiAwOyB9O1xuXG5cbi8q
KiovIH0sXG4vKiA4OCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBh
Y2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIGFzYXAgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDE5Nyk7XG5cdFxuXHRmdW5jdGlvbiBub29wKCkge31cblx0XG5cdC8v
IFN0YXRlczpcblx0Ly9cblx0Ly8gMCAtIHBlbmRpbmdcblx0Ly8gMSAtIGZ1bGZpbGxlZCB3aXRo
IF92YWx1ZVxuXHQvLyAyIC0gcmVqZWN0ZWQgd2l0aCBfdmFsdWVcblx0Ly8gMyAtIGFkb3B0ZWQg
dGhlIHN0YXRlIG9mIGFub3RoZXIgcHJvbWlzZSwgX3ZhbHVlXG5cdC8vXG5cdC8vIG9uY2UgdGhl
IHN0YXRlIGlzIG5vIGxvbmdlciBwZW5kaW5nICgwKSBpdCBpcyBpbW11dGFibGVcblx0XG5cdC8v
IEFsbCBgX2AgcHJlZml4ZWQgcHJvcGVydGllcyB3aWxsIGJlIHJlZHVjZWQgdG8gYF97cmFuZG9t
IG51bWJlcn1gXG5cdC8vIGF0IGJ1aWxkIHRpbWUgdG8gb2JmdXNjYXRlIHRoZW0gYW5kIGRpc2Nv
dXJhZ2UgdGhlaXIgdXNlLlxuXHQvLyBXZSBkb24ndCB1c2Ugc3ltYm9scyBvciBPYmplY3QuZGVm
aW5lUHJvcGVydHkgdG8gZnVsbHkgaGlkZSB0aGVtXG5cdC8vIGJlY2F1c2UgdGhlIHBlcmZvcm1h
bmNlIGlzbid0IGdvb2QgZW5vdWdoLlxuXHRcblx0XG5cdC8vIHRvIGF2b2lkIHVzaW5nIHRyeS9j
YXRjaCBpbnNpZGUgY3JpdGljYWwgZnVuY3Rpb25zLCB3ZVxuXHQvLyBleHRyYWN0IHRoZW0gdG8g
aGVyZS5cblx0dmFyIExBU1RfRVJST1IgPSBudWxsO1xuXHR2YXIgSVNfRVJST1IgPSB7fTtcblx0
ZnVuY3Rpb24gZ2V0VGhlbihvYmopIHtcblx0ICB0cnkge1xuXHQgICAgcmV0dXJuIG9iai50aGVu
O1xuXHQgIH0gY2F0Y2ggKGV4KSB7XG5cdCAgICBMQVNUX0VSUk9SID0gZXg7XG5cdCAgICByZXR1
cm4gSVNfRVJST1I7XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiB0cnlDYWxsT25lKGZuLCBh
KSB7XG5cdCAgdHJ5IHtcblx0ICAgIHJldHVybiBmbihhKTtcblx0ICB9IGNhdGNoIChleCkge1xu
XHQgICAgTEFTVF9FUlJPUiA9IGV4O1xuXHQgICAgcmV0dXJuIElTX0VSUk9SO1xuXHQgIH1cblx0
fVxuXHRmdW5jdGlvbiB0cnlDYWxsVHdvKGZuLCBhLCBiKSB7XG5cdCAgdHJ5IHtcblx0ICAgIGZu
KGEsIGIpO1xuXHQgIH0gY2F0Y2ggKGV4KSB7XG5cdCAgICBMQVNUX0VSUk9SID0gZXg7XG5cdCAg
ICByZXR1cm4gSVNfRVJST1I7XG5cdCAgfVxuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFBy
b21pc2U7XG5cdFxuXHRmdW5jdGlvbiBQcm9taXNlKGZuKSB7XG5cdCAgaWYgKHR5cGVvZiB0aGlz
ICE9PSAnb2JqZWN0Jykge1xuXHQgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignUHJvbWlzZXMgbXVz
dCBiZSBjb25zdHJ1Y3RlZCB2aWEgbmV3Jyk7XG5cdCAgfVxuXHQgIGlmICh0eXBlb2YgZm4gIT09
ICdmdW5jdGlvbicpIHtcblx0ICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ25vdCBhIGZ1bmN0aW9u
Jyk7XG5cdCAgfVxuXHQgIHRoaXMuXzQ1ID0gMDtcblx0ICB0aGlzLl84MSA9IDA7XG5cdCAgdGhp
cy5fNjUgPSBudWxsO1xuXHQgIHRoaXMuXzU0ID0gbnVsbDtcblx0ICBpZiAoZm4gPT09IG5vb3Ap
IHJldHVybjtcblx0ICBkb1Jlc29sdmUoZm4sIHRoaXMpO1xuXHR9XG5cdFByb21pc2UuXzEwID0g
bnVsbDtcblx0UHJvbWlzZS5fOTcgPSBudWxsO1xuXHRQcm9taXNlLl82MSA9IG5vb3A7XG5cdFxu
XHRQcm9taXNlLnByb3RvdHlwZS50aGVuID0gZnVuY3Rpb24ob25GdWxmaWxsZWQsIG9uUmVqZWN0
ZWQpIHtcblx0ICBpZiAodGhpcy5jb25zdHJ1Y3RvciAhPT0gUHJvbWlzZSkge1xuXHQgICAgcmV0
dXJuIHNhZmVUaGVuKHRoaXMsIG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKTtcblx0ICB9XG5cdCAg
dmFyIHJlcyA9IG5ldyBQcm9taXNlKG5vb3ApO1xuXHQgIGhhbmRsZSh0aGlzLCBuZXcgSGFuZGxl
cihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCwgcmVzKSk7XG5cdCAgcmV0dXJuIHJlcztcblx0fTtc
blx0XG5cdGZ1bmN0aW9uIHNhZmVUaGVuKHNlbGYsIG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7
XG5cdCAgcmV0dXJuIG5ldyBzZWxmLmNvbnN0cnVjdG9yKGZ1bmN0aW9uIChyZXNvbHZlLCByZWpl
Y3QpIHtcblx0ICAgIHZhciByZXMgPSBuZXcgUHJvbWlzZShub29wKTtcblx0ICAgIHJlcy50aGVu
KHJlc29sdmUsIHJlamVjdCk7XG5cdCAgICBoYW5kbGUoc2VsZiwgbmV3IEhhbmRsZXIob25GdWxm
aWxsZWQsIG9uUmVqZWN0ZWQsIHJlcykpO1xuXHQgIH0pO1xuXHR9O1xuXHRmdW5jdGlvbiBoYW5k
bGUoc2VsZiwgZGVmZXJyZWQpIHtcblx0ICB3aGlsZSAoc2VsZi5fODEgPT09IDMpIHtcblx0ICAg
IHNlbGYgPSBzZWxmLl82NTtcblx0ICB9XG5cdCAgaWYgKFByb21pc2UuXzEwKSB7XG5cdCAgICBQ
cm9taXNlLl8xMChzZWxmKTtcblx0ICB9XG5cdCAgaWYgKHNlbGYuXzgxID09PSAwKSB7XG5cdCAg
ICBpZiAoc2VsZi5fNDUgPT09IDApIHtcblx0ICAgICAgc2VsZi5fNDUgPSAxO1xuXHQgICAgICBz
ZWxmLl81NCA9IGRlZmVycmVkO1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAgICBpZiAo
c2VsZi5fNDUgPT09IDEpIHtcblx0ICAgICAgc2VsZi5fNDUgPSAyO1xuXHQgICAgICBzZWxmLl81
NCA9IFtzZWxmLl81NCwgZGVmZXJyZWRdO1xuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAg
ICBzZWxmLl81NC5wdXNoKGRlZmVycmVkKTtcblx0ICAgIHJldHVybjtcblx0ICB9XG5cdCAgaGFu
ZGxlUmVzb2x2ZWQoc2VsZiwgZGVmZXJyZWQpO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBoYW5kbGVS
ZXNvbHZlZChzZWxmLCBkZWZlcnJlZCkge1xuXHQgIGFzYXAoZnVuY3Rpb24oKSB7XG5cdCAgICB2
YXIgY2IgPSBzZWxmLl84MSA9PT0gMSA/IGRlZmVycmVkLm9uRnVsZmlsbGVkIDogZGVmZXJyZWQu
b25SZWplY3RlZDtcblx0ICAgIGlmIChjYiA9PT0gbnVsbCkge1xuXHQgICAgICBpZiAoc2VsZi5f
ODEgPT09IDEpIHtcblx0ICAgICAgICByZXNvbHZlKGRlZmVycmVkLnByb21pc2UsIHNlbGYuXzY1
KTtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICByZWplY3QoZGVmZXJyZWQucHJvbWlzZSwg
c2VsZi5fNjUpO1xuXHQgICAgICB9XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICAgIHZh
ciByZXQgPSB0cnlDYWxsT25lKGNiLCBzZWxmLl82NSk7XG5cdCAgICBpZiAocmV0ID09PSBJU19F
UlJPUikge1xuXHQgICAgICByZWplY3QoZGVmZXJyZWQucHJvbWlzZSwgTEFTVF9FUlJPUik7XG5c
dCAgICB9IGVsc2Uge1xuXHQgICAgICByZXNvbHZlKGRlZmVycmVkLnByb21pc2UsIHJldCk7XG5c
dCAgICB9XG5cdCAgfSk7XG5cdH1cblx0ZnVuY3Rpb24gcmVzb2x2ZShzZWxmLCBuZXdWYWx1ZSkg
e1xuXHQgIC8vIFByb21pc2UgUmVzb2x1dGlvbiBQcm9jZWR1cmU6IGh0dHBzOi8vZ2l0aHViLmNv
bS9wcm9taXNlcy1hcGx1cy9wcm9taXNlcy1zcGVjI3RoZS1wcm9taXNlLXJlc29sdXRpb24tcHJv
Y2VkdXJlXG5cdCAgaWYgKG5ld1ZhbHVlID09PSBzZWxmKSB7XG5cdCAgICByZXR1cm4gcmVqZWN0
KFxuXHQgICAgICBzZWxmLFxuXHQgICAgICBuZXcgVHlwZUVycm9yKCdBIHByb21pc2UgY2Fubm90
IGJlIHJlc29sdmVkIHdpdGggaXRzZWxmLicpXG5cdCAgICApO1xuXHQgIH1cblx0ICBpZiAoXG5c
dCAgICBuZXdWYWx1ZSAmJlxuXHQgICAgKHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ29iamVjdCcgfHwg
dHlwZW9mIG5ld1ZhbHVlID09PSAnZnVuY3Rpb24nKVxuXHQgICkge1xuXHQgICAgdmFyIHRoZW4g
PSBnZXRUaGVuKG5ld1ZhbHVlKTtcblx0ICAgIGlmICh0aGVuID09PSBJU19FUlJPUikge1xuXHQg
ICAgICByZXR1cm4gcmVqZWN0KHNlbGYsIExBU1RfRVJST1IpO1xuXHQgICAgfVxuXHQgICAgaWYg
KFxuXHQgICAgICB0aGVuID09PSBzZWxmLnRoZW4gJiZcblx0ICAgICAgbmV3VmFsdWUgaW5zdGFu
Y2VvZiBQcm9taXNlXG5cdCAgICApIHtcblx0ICAgICAgc2VsZi5fODEgPSAzO1xuXHQgICAgICBz
ZWxmLl82NSA9IG5ld1ZhbHVlO1xuXHQgICAgICBmaW5hbGUoc2VsZik7XG5cdCAgICAgIHJldHVy
bjtcblx0ICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoZW4gPT09ICdmdW5jdGlvbicpIHtcblx0ICAg
ICAgZG9SZXNvbHZlKHRoZW4uYmluZChuZXdWYWx1ZSksIHNlbGYpO1xuXHQgICAgICByZXR1cm47
XG5cdCAgICB9XG5cdCAgfVxuXHQgIHNlbGYuXzgxID0gMTtcblx0ICBzZWxmLl82NSA9IG5ld1Zh
bHVlO1xuXHQgIGZpbmFsZShzZWxmKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gcmVqZWN0KHNlbGYs
IG5ld1ZhbHVlKSB7XG5cdCAgc2VsZi5fODEgPSAyO1xuXHQgIHNlbGYuXzY1ID0gbmV3VmFsdWU7
XG5cdCAgaWYgKFByb21pc2UuXzk3KSB7XG5cdCAgICBQcm9taXNlLl85NyhzZWxmLCBuZXdWYWx1
ZSk7XG5cdCAgfVxuXHQgIGZpbmFsZShzZWxmKTtcblx0fVxuXHRmdW5jdGlvbiBmaW5hbGUoc2Vs
Zikge1xuXHQgIGlmIChzZWxmLl80NSA9PT0gMSkge1xuXHQgICAgaGFuZGxlKHNlbGYsIHNlbGYu
XzU0KTtcblx0ICAgIHNlbGYuXzU0ID0gbnVsbDtcblx0ICB9XG5cdCAgaWYgKHNlbGYuXzQ1ID09
PSAyKSB7XG5cdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGYuXzU0Lmxlbmd0aDsgaSsrKSB7
XG5cdCAgICAgIGhhbmRsZShzZWxmLCBzZWxmLl81NFtpXSk7XG5cdCAgICB9XG5cdCAgICBzZWxm
Ll81NCA9IG51bGw7XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBIYW5kbGVyKG9uRnVsZmls
bGVkLCBvblJlamVjdGVkLCBwcm9taXNlKXtcblx0ICB0aGlzLm9uRnVsZmlsbGVkID0gdHlwZW9m
IG9uRnVsZmlsbGVkID09PSAnZnVuY3Rpb24nID8gb25GdWxmaWxsZWQgOiBudWxsO1xuXHQgIHRo
aXMub25SZWplY3RlZCA9IHR5cGVvZiBvblJlamVjdGVkID09PSAnZnVuY3Rpb24nID8gb25SZWpl
Y3RlZCA6IG51bGw7XG5cdCAgdGhpcy5wcm9taXNlID0gcHJvbWlzZTtcblx0fVxuXHRcblx0Lyoq
XG5cdCAqIFRha2UgYSBwb3RlbnRpYWxseSBtaXNiZWhhdmluZyByZXNvbHZlciBmdW5jdGlvbiBh
bmQgbWFrZSBzdXJlXG5cdCAqIG9uRnVsZmlsbGVkIGFuZCBvblJlamVjdGVkIGFyZSBvbmx5IGNh
bGxlZCBvbmNlLlxuXHQgKlxuXHQgKiBNYWtlcyBubyBndWFyYW50ZWVzIGFib3V0IGFzeW5jaHJv
bnkuXG5cdCAqL1xuXHRmdW5jdGlvbiBkb1Jlc29sdmUoZm4sIHByb21pc2UpIHtcblx0ICB2YXIg
ZG9uZSA9IGZhbHNlO1xuXHQgIHZhciByZXMgPSB0cnlDYWxsVHdvKGZuLCBmdW5jdGlvbiAodmFs
dWUpIHtcblx0ICAgIGlmIChkb25lKSByZXR1cm47XG5cdCAgICBkb25lID0gdHJ1ZTtcblx0ICAg
IHJlc29sdmUocHJvbWlzZSwgdmFsdWUpO1xuXHQgIH0sIGZ1bmN0aW9uIChyZWFzb24pIHtcblx0
ICAgIGlmIChkb25lKSByZXR1cm47XG5cdCAgICBkb25lID0gdHJ1ZTtcblx0ICAgIHJlamVjdChw
cm9taXNlLCByZWFzb24pO1xuXHQgIH0pXG5cdCAgaWYgKCFkb25lICYmIHJlcyA9PT0gSVNfRVJS
T1IpIHtcblx0ICAgIGRvbmUgPSB0cnVlO1xuXHQgICAgcmVqZWN0KHByb21pc2UsIExBU1RfRVJS
T1IpO1xuXHQgIH1cblx0fVxuXG5cbi8qKiovIH0sXG4vKiA4OSAqL1xuLyoqKi8gZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
blx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xu
XHRcblx0dmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMyksXG5cdCAg
ICBfYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0XG5cdHZhciBSZWFjdE5vb3BV
cGRhdGVRdWV1ZSA9IF9fd2VicGFja19yZXF1aXJlX18oOTIpO1xuXHRcblx0dmFyIGNhbkRlZmlu
ZVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5Myk7XG5cdHZhciBlbXB0eU9iamVjdCA9
IF9fd2VicGFja19yZXF1aXJlX18oMjQpO1xuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxKTtcblx0dmFyIGxvd1ByaW9yaXR5V2FybmluZyA9IF9fd2VicGFja19yZXF1aXJl
X18oMjIyKTtcblx0XG5cdC8qKlxuXHQgKiBCYXNlIGNsYXNzIGhlbHBlcnMgZm9yIHRoZSB1cGRh
dGluZyBzdGF0ZSBvZiBhIGNvbXBvbmVudC5cblx0ICovXG5cdGZ1bmN0aW9uIFJlYWN0Q29tcG9u
ZW50KHByb3BzLCBjb250ZXh0LCB1cGRhdGVyKSB7XG5cdCAgdGhpcy5wcm9wcyA9IHByb3BzO1xu
XHQgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG5cdCAgdGhpcy5yZWZzID0gZW1wdHlPYmplY3Q7
XG5cdCAgLy8gV2UgaW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCB1cGRhdGVyIGJ1dCB0aGUgcmVhbCBv
bmUgZ2V0cyBpbmplY3RlZCBieSB0aGVcblx0ICAvLyByZW5kZXJlci5cblx0ICB0aGlzLnVwZGF0
ZXIgPSB1cGRhdGVyIHx8IFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlO1xuXHR9XG5cdFxuXHRSZWFjdENv
bXBvbmVudC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCA9IHt9O1xuXHRcblx0LyoqXG5cdCAq
IFNldHMgYSBzdWJzZXQgb2YgdGhlIHN0YXRlLiBBbHdheXMgdXNlIHRoaXMgdG8gbXV0YXRlXG5c
dCAqIHN0YXRlLiBZb3Ugc2hvdWxkIHRyZWF0IGB0aGlzLnN0YXRlYCBhcyBpbW11dGFibGUuXG5c
dCAqXG5cdCAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGB0aGlzLnN0YXRlYCB3aWxsIGJl
IGltbWVkaWF0ZWx5IHVwZGF0ZWQsIHNvXG5cdCAqIGFjY2Vzc2luZyBgdGhpcy5zdGF0ZWAgYWZ0
ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBvbGQgdmFsdWUuXG5cdCAqXG5c
dCAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGNhbGxzIHRvIGBzZXRTdGF0ZWAgd2lsbCBy
dW4gc3luY2hyb25vdXNseSxcblx0ICogYXMgdGhleSBtYXkgZXZlbnR1YWxseSBiZSBiYXRjaGVk
IHRvZ2V0aGVyLiAgWW91IGNhbiBwcm92aWRlIGFuIG9wdGlvbmFsXG5cdCAqIGNhbGxiYWNrIHRo
YXQgd2lsbCBiZSBleGVjdXRlZCB3aGVuIHRoZSBjYWxsIHRvIHNldFN0YXRlIGlzIGFjdHVhbGx5
XG5cdCAqIGNvbXBsZXRlZC5cblx0ICpcblx0ICogV2hlbiBhIGZ1bmN0aW9uIGlzIHByb3ZpZGVk
IHRvIHNldFN0YXRlLCBpdCB3aWxsIGJlIGNhbGxlZCBhdCBzb21lIHBvaW50IGluXG5cdCAqIHRo
ZSBmdXR1cmUgKG5vdCBzeW5jaHJvbm91c2x5KS4gSXQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUg
dXAgdG8gZGF0ZVxuXHQgKiBjb21wb25lbnQgYXJndW1lbnRzIChzdGF0ZSwgcHJvcHMsIGNvbnRl
eHQpLiBUaGVzZSB2YWx1ZXMgY2FuIGJlIGRpZmZlcmVudFxuXHQgKiBmcm9tIHRoaXMuKiBiZWNh
dXNlIHlvdXIgZnVuY3Rpb24gbWF5IGJlIGNhbGxlZCBhZnRlciByZWNlaXZlUHJvcHMgYnV0IGJl
Zm9yZVxuXHQgKiBzaG91bGRDb21wb25lbnRVcGRhdGUsIGFuZCB0aGlzIG5ldyBzdGF0ZSwgcHJv
cHMsIGFuZCBjb250ZXh0IHdpbGwgbm90IHlldCBiZVxuXHQgKiBhc3NpZ25lZCB0byB0aGlzLlxu
XHQgKlxuXHQgKiBAcGFyYW0ge29iamVjdHxmdW5jdGlvbn0gcGFydGlhbFN0YXRlIE5leHQgcGFy
dGlhbCBzdGF0ZSBvciBmdW5jdGlvbiB0b1xuXHQgKiAgICAgICAgcHJvZHVjZSBuZXh0IHBhcnRp
YWwgc3RhdGUgdG8gYmUgbWVyZ2VkIHdpdGggY3VycmVudCBzdGF0ZS5cblx0ICogQHBhcmFtIHs/
ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRlciBzdGF0ZSBpcyB1cGRhdGVkLlxuXHQgKiBA
ZmluYWxcblx0ICogQHByb3RlY3RlZFxuXHQgKi9cblx0UmVhY3RDb21wb25lbnQucHJvdG90eXBl
LnNldFN0YXRlID0gZnVuY3Rpb24gKHBhcnRpYWxTdGF0ZSwgY2FsbGJhY2spIHtcblx0ICAhKHR5
cGVvZiBwYXJ0aWFsU3RhdGUgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBwYXJ0aWFsU3RhdGUgPT09
ICdmdW5jdGlvbicgfHwgcGFydGlhbFN0YXRlID09IG51bGwpID8gIGZhbHNlID8gaW52YXJpYW50
KGZhbHNlLCAnc2V0U3RhdGUoLi4uKTogdGFrZXMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxl
cyB0byB1cGRhdGUgb3IgYSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFuIG9iamVjdCBvZiBzdGF0
ZSB2YXJpYWJsZXMuJykgOiBfcHJvZEludmFyaWFudCgnODUnKSA6IHZvaWQgMDtcblx0ICB0aGlz
LnVwZGF0ZXIuZW5xdWV1ZVNldFN0YXRlKHRoaXMsIHBhcnRpYWxTdGF0ZSk7XG5cdCAgaWYgKGNh
bGxiYWNrKSB7XG5cdCAgICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZUNhbGxiYWNrKHRoaXMsIGNhbGxi
YWNrLCAnc2V0U3RhdGUnKTtcblx0ICB9XG5cdH07XG5cdFxuXHQvKipcblx0ICogRm9yY2VzIGFu
IHVwZGF0ZS4gVGhpcyBzaG91bGQgb25seSBiZSBpbnZva2VkIHdoZW4gaXQgaXMga25vd24gd2l0
aFxuXHQgKiBjZXJ0YWludHkgdGhhdCB3ZSBhcmUgKipub3QqKiBpbiBhIERPTSB0cmFuc2FjdGlv
bi5cblx0ICpcblx0ICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3aGVuIHlvdSBrbm93IHRo
YXQgc29tZSBkZWVwZXIgYXNwZWN0IG9mIHRoZVxuXHQgKiBjb21wb25lbnQncyBzdGF0ZSBoYXMg
Y2hhbmdlZCBidXQgYHNldFN0YXRlYCB3YXMgbm90IGNhbGxlZC5cblx0ICpcblx0ICogVGhpcyB3
aWxsIG5vdCBpbnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxsIGludm9r
ZVxuXHQgKiBgY29tcG9uZW50V2lsbFVwZGF0ZWAgYW5kIGBjb21wb25lbnREaWRVcGRhdGVgLlxu
XHQgKlxuXHQgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHVwZGF0
ZSBpcyBjb21wbGV0ZS5cblx0ICogQGZpbmFsXG5cdCAqIEBwcm90ZWN0ZWRcblx0ICovXG5cdFJl
YWN0Q29tcG9uZW50LnByb3RvdHlwZS5mb3JjZVVwZGF0ZSA9IGZ1bmN0aW9uIChjYWxsYmFjaykg
e1xuXHQgIHRoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRhdGUodGhpcyk7XG5cdCAgaWYgKGNh
bGxiYWNrKSB7XG5cdCAgICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZUNhbGxiYWNrKHRoaXMsIGNhbGxi
YWNrLCAnZm9yY2VVcGRhdGUnKTtcblx0ICB9XG5cdH07XG5cdFxuXHQvKipcblx0ICogRGVwcmVj
YXRlZCBBUElzLiBUaGVzZSBBUElzIHVzZWQgdG8gZXhpc3Qgb24gY2xhc3NpYyBSZWFjdCBjbGFz
c2VzIGJ1dCBzaW5jZVxuXHQgKiB3ZSB3b3VsZCBsaWtlIHRvIGRlcHJlY2F0ZSB0aGVtLCB3ZSdy
ZSBub3QgZ29pbmcgdG8gbW92ZSB0aGVtIG92ZXIgdG8gdGhpc1xuXHQgKiBtb2Rlcm4gYmFzZSBj
bGFzcy4gSW5zdGVhZCwgd2UgZGVmaW5lIGEgZ2V0dGVyIHRoYXQgd2FybnMgaWYgaXQncyBhY2Nl
c3NlZC5cblx0ICovXG5cdGlmIChmYWxzZSkge1xuXHQgIHZhciBkZXByZWNhdGVkQVBJcyA9IHtc
blx0ICAgIGlzTW91bnRlZDogWydpc01vdW50ZWQnLCAnSW5zdGVhZCwgbWFrZSBzdXJlIHRvIGNs
ZWFuIHVwIHN1YnNjcmlwdGlvbnMgYW5kIHBlbmRpbmcgcmVxdWVzdHMgaW4gJyArICdjb21wb25l
bnRXaWxsVW5tb3VudCB0byBwcmV2ZW50IG1lbW9yeSBsZWFrcy4nXSxcblx0ICAgIHJlcGxhY2VT
dGF0ZTogWydyZXBsYWNlU3RhdGUnLCAnUmVmYWN0b3IgeW91ciBjb2RlIHRvIHVzZSBzZXRTdGF0
ZSBpbnN0ZWFkIChzZWUgJyArICdodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNz
dWVzLzMyMzYpLiddXG5cdCAgfTtcblx0ICB2YXIgZGVmaW5lRGVwcmVjYXRpb25XYXJuaW5nID0g
ZnVuY3Rpb24gKG1ldGhvZE5hbWUsIGluZm8pIHtcblx0ICAgIGlmIChjYW5EZWZpbmVQcm9wZXJ0
eSkge1xuXHQgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVhY3RDb21wb25lbnQucHJvdG90
eXBlLCBtZXRob2ROYW1lLCB7XG5cdCAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG5cdCAgICAg
ICAgICBsb3dQcmlvcml0eVdhcm5pbmcoZmFsc2UsICclcyguLi4pIGlzIGRlcHJlY2F0ZWQgaW4g
cGxhaW4gSmF2YVNjcmlwdCBSZWFjdCBjbGFzc2VzLiAlcycsIGluZm9bMF0sIGluZm9bMV0pO1xu
XHQgICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcblx0ICAgICAgICB9XG5cdCAgICAgIH0pO1xu
XHQgICAgfVxuXHQgIH07XG5cdCAgZm9yICh2YXIgZm5OYW1lIGluIGRlcHJlY2F0ZWRBUElzKSB7
XG5cdCAgICBpZiAoZGVwcmVjYXRlZEFQSXMuaGFzT3duUHJvcGVydHkoZm5OYW1lKSkge1xuXHQg
ICAgICBkZWZpbmVEZXByZWNhdGlvbldhcm5pbmcoZm5OYW1lLCBkZXByZWNhdGVkQVBJc1tmbk5h
bWVdKTtcblx0ICAgIH1cblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBCYXNlIGNsYXNzIGhl
bHBlcnMgZm9yIHRoZSB1cGRhdGluZyBzdGF0ZSBvZiBhIGNvbXBvbmVudC5cblx0ICovXG5cdGZ1
bmN0aW9uIFJlYWN0UHVyZUNvbXBvbmVudChwcm9wcywgY29udGV4dCwgdXBkYXRlcikge1xuXHQg
IC8vIER1cGxpY2F0ZWQgZnJvbSBSZWFjdENvbXBvbmVudC5cblx0ICB0aGlzLnByb3BzID0gcHJv
cHM7XG5cdCAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcblx0ICB0aGlzLnJlZnMgPSBlbXB0eU9i
amVjdDtcblx0ICAvLyBXZSBpbml0aWFsaXplIHRoZSBkZWZhdWx0IHVwZGF0ZXIgYnV0IHRoZSBy
ZWFsIG9uZSBnZXRzIGluamVjdGVkIGJ5IHRoZVxuXHQgIC8vIHJlbmRlcmVyLlxuXHQgIHRoaXMu
dXBkYXRlciA9IHVwZGF0ZXIgfHwgUmVhY3ROb29wVXBkYXRlUXVldWU7XG5cdH1cblx0XG5cdGZ1
bmN0aW9uIENvbXBvbmVudER1bW15KCkge31cblx0Q29tcG9uZW50RHVtbXkucHJvdG90eXBlID0g
UmVhY3RDb21wb25lbnQucHJvdG90eXBlO1xuXHRSZWFjdFB1cmVDb21wb25lbnQucHJvdG90eXBl
ID0gbmV3IENvbXBvbmVudER1bW15KCk7XG5cdFJlYWN0UHVyZUNvbXBvbmVudC5wcm90b3R5cGUu
Y29uc3RydWN0b3IgPSBSZWFjdFB1cmVDb21wb25lbnQ7XG5cdC8vIEF2b2lkIGFuIGV4dHJhIHBy
b3RvdHlwZSBqdW1wIGZvciB0aGVzZSBtZXRob2RzLlxuXHRfYXNzaWduKFJlYWN0UHVyZUNvbXBv
bmVudC5wcm90b3R5cGUsIFJlYWN0Q29tcG9uZW50LnByb3RvdHlwZSk7XG5cdFJlYWN0UHVyZUNv
bXBvbmVudC5wcm90b3R5cGUuaXNQdXJlUmVhY3RDb21wb25lbnQgPSB0cnVlO1xuXHRcblx0bW9k
dWxlLmV4cG9ydHMgPSB7XG5cdCAgQ29tcG9uZW50OiBSZWFjdENvbXBvbmVudCxcblx0ICBQdXJl
Q29tcG9uZW50OiBSZWFjdFB1cmVDb21wb25lbnRcblx0fTtcblxuLyoqKi8gfSxcbi8qIDkwICov
XG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtc
blxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTYtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogXG5cdCAq
L1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJw
YWNrX3JlcXVpcmVfXygyMyk7XG5cdFxuXHR2YXIgUmVhY3RDdXJyZW50T3duZXIgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDExKTtcblx0XG5cdHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDEpO1xuXHR2YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cdFxuXHRm
dW5jdGlvbiBpc05hdGl2ZShmbikge1xuXHQgIC8vIEJhc2VkIG9uIGlzTmF0aXZlKCkgZnJvbSBM
b2Rhc2hcblx0ICB2YXIgZnVuY1RvU3RyaW5nID0gRnVuY3Rpb24ucHJvdG90eXBlLnRvU3RyaW5n
O1xuXHQgIHZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVy
dHk7XG5cdCAgdmFyIHJlSXNOYXRpdmUgPSBSZWdFeHAoJ14nICsgZnVuY1RvU3RyaW5nXG5cdCAg
Ly8gVGFrZSBhbiBleGFtcGxlIG5hdGl2ZSBmdW5jdGlvbiBzb3VyY2UgZm9yIGNvbXBhcmlzb25c
blx0ICAuY2FsbChoYXNPd25Qcm9wZXJ0eVxuXHQgIC8vIFN0cmlwIHJlZ2V4IGNoYXJhY3RlcnMg
c28gd2UgY2FuIHVzZSBpdCBmb3IgcmVnZXhcblx0ICApLnJlcGxhY2UoL1tcXFxcXiQuKis/KClb
XFxde318XS9nLCAnXFxcXCQmJ1xuXHQgIC8vIFJlbW92ZSBoYXNPd25Qcm9wZXJ0eSBmcm9tIHRo
ZSB0ZW1wbGF0ZSB0byBtYWtlIGl0IGdlbmVyaWNcblx0ICApLnJlcGxhY2UoL2hhc093blByb3Bl
cnR5fChmdW5jdGlvbikuKj8oPz1cXFxcXFwoKXwgZm9yIC4rPyg/PVxcXFxcXF0pL2csICckMS4q
PycpICsgJyQnKTtcblx0ICB0cnkge1xuXHQgICAgdmFyIHNvdXJjZSA9IGZ1bmNUb1N0cmluZy5j
YWxsKGZuKTtcblx0ICAgIHJldHVybiByZUlzTmF0aXZlLnRlc3Qoc291cmNlKTtcblx0ICB9IGNh
dGNoIChlcnIpIHtcblx0ICAgIHJldHVybiBmYWxzZTtcblx0ICB9XG5cdH1cblx0XG5cdHZhciBj
YW5Vc2VDb2xsZWN0aW9ucyA9XG5cdC8vIEFycmF5LmZyb21cblx0dHlwZW9mIEFycmF5LmZyb20g
PT09ICdmdW5jdGlvbicgJiZcblx0Ly8gTWFwXG5cdHR5cGVvZiBNYXAgPT09ICdmdW5jdGlvbicg
JiYgaXNOYXRpdmUoTWFwKSAmJlxuXHQvLyBNYXAucHJvdG90eXBlLmtleXNcblx0TWFwLnByb3Rv
dHlwZSAhPSBudWxsICYmIHR5cGVvZiBNYXAucHJvdG90eXBlLmtleXMgPT09ICdmdW5jdGlvbicg
JiYgaXNOYXRpdmUoTWFwLnByb3RvdHlwZS5rZXlzKSAmJlxuXHQvLyBTZXRcblx0dHlwZW9mIFNl
dCA9PT0gJ2Z1bmN0aW9uJyAmJiBpc05hdGl2ZShTZXQpICYmXG5cdC8vIFNldC5wcm90b3R5cGUu
a2V5c1xuXHRTZXQucHJvdG90eXBlICE9IG51bGwgJiYgdHlwZW9mIFNldC5wcm90b3R5cGUua2V5
cyA9PT0gJ2Z1bmN0aW9uJyAmJiBpc05hdGl2ZShTZXQucHJvdG90eXBlLmtleXMpO1xuXHRcblx0
dmFyIHNldEl0ZW07XG5cdHZhciBnZXRJdGVtO1xuXHR2YXIgcmVtb3ZlSXRlbTtcblx0dmFyIGdl
dEl0ZW1JRHM7XG5cdHZhciBhZGRSb290O1xuXHR2YXIgcmVtb3ZlUm9vdDtcblx0dmFyIGdldFJv
b3RJRHM7XG5cdFxuXHRpZiAoY2FuVXNlQ29sbGVjdGlvbnMpIHtcblx0ICB2YXIgaXRlbU1hcCA9
IG5ldyBNYXAoKTtcblx0ICB2YXIgcm9vdElEU2V0ID0gbmV3IFNldCgpO1xuXHRcblx0ICBzZXRJ
dGVtID0gZnVuY3Rpb24gKGlkLCBpdGVtKSB7XG5cdCAgICBpdGVtTWFwLnNldChpZCwgaXRlbSk7
XG5cdCAgfTtcblx0ICBnZXRJdGVtID0gZnVuY3Rpb24gKGlkKSB7XG5cdCAgICByZXR1cm4gaXRl
bU1hcC5nZXQoaWQpO1xuXHQgIH07XG5cdCAgcmVtb3ZlSXRlbSA9IGZ1bmN0aW9uIChpZCkge1xu
XHQgICAgaXRlbU1hcFsnZGVsZXRlJ10oaWQpO1xuXHQgIH07XG5cdCAgZ2V0SXRlbUlEcyA9IGZ1
bmN0aW9uICgpIHtcblx0ICAgIHJldHVybiBBcnJheS5mcm9tKGl0ZW1NYXAua2V5cygpKTtcblx0
ICB9O1xuXHRcblx0ICBhZGRSb290ID0gZnVuY3Rpb24gKGlkKSB7XG5cdCAgICByb290SURTZXQu
YWRkKGlkKTtcblx0ICB9O1xuXHQgIHJlbW92ZVJvb3QgPSBmdW5jdGlvbiAoaWQpIHtcblx0ICAg
IHJvb3RJRFNldFsnZGVsZXRlJ10oaWQpO1xuXHQgIH07XG5cdCAgZ2V0Um9vdElEcyA9IGZ1bmN0
aW9uICgpIHtcblx0ICAgIHJldHVybiBBcnJheS5mcm9tKHJvb3RJRFNldC5rZXlzKCkpO1xuXHQg
IH07XG5cdH0gZWxzZSB7XG5cdCAgdmFyIGl0ZW1CeUtleSA9IHt9O1xuXHQgIHZhciByb290QnlL
ZXkgPSB7fTtcblx0XG5cdCAgLy8gVXNlIG5vbi1udW1lcmljIGtleXMgdG8gcHJldmVudCBWOCBw
ZXJmb3JtYW5jZSBpc3N1ZXM6XG5cdCAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3Jl
YWN0L3B1bGwvNzIzMlxuXHQgIHZhciBnZXRLZXlGcm9tSUQgPSBmdW5jdGlvbiAoaWQpIHtcblx0
ICAgIHJldHVybiAnLicgKyBpZDtcblx0ICB9O1xuXHQgIHZhciBnZXRJREZyb21LZXkgPSBmdW5j
dGlvbiAoa2V5KSB7XG5cdCAgICByZXR1cm4gcGFyc2VJbnQoa2V5LnN1YnN0cigxKSwgMTApO1xu
XHQgIH07XG5cdFxuXHQgIHNldEl0ZW0gPSBmdW5jdGlvbiAoaWQsIGl0ZW0pIHtcblx0ICAgIHZh
ciBrZXkgPSBnZXRLZXlGcm9tSUQoaWQpO1xuXHQgICAgaXRlbUJ5S2V5W2tleV0gPSBpdGVtO1xu
XHQgIH07XG5cdCAgZ2V0SXRlbSA9IGZ1bmN0aW9uIChpZCkge1xuXHQgICAgdmFyIGtleSA9IGdl
dEtleUZyb21JRChpZCk7XG5cdCAgICByZXR1cm4gaXRlbUJ5S2V5W2tleV07XG5cdCAgfTtcblx0
ICByZW1vdmVJdGVtID0gZnVuY3Rpb24gKGlkKSB7XG5cdCAgICB2YXIga2V5ID0gZ2V0S2V5RnJv
bUlEKGlkKTtcblx0ICAgIGRlbGV0ZSBpdGVtQnlLZXlba2V5XTtcblx0ICB9O1xuXHQgIGdldEl0
ZW1JRHMgPSBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4gT2JqZWN0LmtleXMoaXRlbUJ5S2V5
KS5tYXAoZ2V0SURGcm9tS2V5KTtcblx0ICB9O1xuXHRcblx0ICBhZGRSb290ID0gZnVuY3Rpb24g
KGlkKSB7XG5cdCAgICB2YXIga2V5ID0gZ2V0S2V5RnJvbUlEKGlkKTtcblx0ICAgIHJvb3RCeUtl
eVtrZXldID0gdHJ1ZTtcblx0ICB9O1xuXHQgIHJlbW92ZVJvb3QgPSBmdW5jdGlvbiAoaWQpIHtc
blx0ICAgIHZhciBrZXkgPSBnZXRLZXlGcm9tSUQoaWQpO1xuXHQgICAgZGVsZXRlIHJvb3RCeUtl
eVtrZXldO1xuXHQgIH07XG5cdCAgZ2V0Um9vdElEcyA9IGZ1bmN0aW9uICgpIHtcblx0ICAgIHJl
dHVybiBPYmplY3Qua2V5cyhyb290QnlLZXkpLm1hcChnZXRJREZyb21LZXkpO1xuXHQgIH07XG5c
dH1cblx0XG5cdHZhciB1bm1vdW50ZWRJRHMgPSBbXTtcblx0XG5cdGZ1bmN0aW9uIHB1cmdlRGVl
cChpZCkge1xuXHQgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG5cdCAgaWYgKGl0ZW0pIHtcblx0
ICAgIHZhciBjaGlsZElEcyA9IGl0ZW0uY2hpbGRJRHM7XG5cdFxuXHQgICAgcmVtb3ZlSXRlbShp
ZCk7XG5cdCAgICBjaGlsZElEcy5mb3JFYWNoKHB1cmdlRGVlcCk7XG5cdCAgfVxuXHR9XG5cdFxu
XHRmdW5jdGlvbiBkZXNjcmliZUNvbXBvbmVudEZyYW1lKG5hbWUsIHNvdXJjZSwgb3duZXJOYW1l
KSB7XG5cdCAgcmV0dXJuICdcXG4gICAgaW4gJyArIChuYW1lIHx8ICdVbmtub3duJykgKyAoc291
cmNlID8gJyAoYXQgJyArIHNvdXJjZS5maWxlTmFtZS5yZXBsYWNlKC9eLipbXFxcXFxcL10vLCAn
JykgKyAnOicgKyBzb3VyY2UubGluZU51bWJlciArICcpJyA6IG93bmVyTmFtZSA/ICcgKGNyZWF0
ZWQgYnkgJyArIG93bmVyTmFtZSArICcpJyA6ICcnKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gZ2V0
RGlzcGxheU5hbWUoZWxlbWVudCkge1xuXHQgIGlmIChlbGVtZW50ID09IG51bGwpIHtcblx0ICAg
IHJldHVybiAnI2VtcHR5Jztcblx0ICB9IGVsc2UgaWYgKHR5cGVvZiBlbGVtZW50ID09PSAnc3Ry
aW5nJyB8fCB0eXBlb2YgZWxlbWVudCA9PT0gJ251bWJlcicpIHtcblx0ICAgIHJldHVybiAnI3Rl
eHQnO1xuXHQgIH0gZWxzZSBpZiAodHlwZW9mIGVsZW1lbnQudHlwZSA9PT0gJ3N0cmluZycpIHtc
blx0ICAgIHJldHVybiBlbGVtZW50LnR5cGU7XG5cdCAgfSBlbHNlIHtcblx0ICAgIHJldHVybiBl
bGVtZW50LnR5cGUuZGlzcGxheU5hbWUgfHwgZWxlbWVudC50eXBlLm5hbWUgfHwgJ1Vua25vd24n
O1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gZGVzY3JpYmVJRChpZCkge1xuXHQgIHZhciBu
YW1lID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXREaXNwbGF5TmFtZShpZCk7XG5cdCAgdmFy
IGVsZW1lbnQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldEVsZW1lbnQoaWQpO1xuXHQgIHZh
ciBvd25lcklEID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRPd25lcklEKGlkKTtcblx0ICB2
YXIgb3duZXJOYW1lO1xuXHQgIGlmIChvd25lcklEKSB7XG5cdCAgICBvd25lck5hbWUgPSBSZWFj
dENvbXBvbmVudFRyZWVIb29rLmdldERpc3BsYXlOYW1lKG93bmVySUQpO1xuXHQgIH1cblx0ICAg
ZmFsc2UgPyB3YXJuaW5nKGVsZW1lbnQsICdSZWFjdENvbXBvbmVudFRyZWVIb29rOiBNaXNzaW5n
IFJlYWN0IGVsZW1lbnQgZm9yIGRlYnVnSUQgJXMgd2hlbiAnICsgJ2J1aWxkaW5nIHN0YWNrJywg
aWQpIDogdm9pZCAwO1xuXHQgIHJldHVybiBkZXNjcmliZUNvbXBvbmVudEZyYW1lKG5hbWUsIGVs
ZW1lbnQgJiYgZWxlbWVudC5fc291cmNlLCBvd25lck5hbWUpO1xuXHR9XG5cdFxuXHR2YXIgUmVh
Y3RDb21wb25lbnRUcmVlSG9vayA9IHtcblx0ICBvblNldENoaWxkcmVuOiBmdW5jdGlvbiAoaWQs
IG5leHRDaGlsZElEcykge1xuXHQgICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcblx0ICAgICFp
dGVtID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnSXRlbSBtdXN0IGhhdmUgYmVlbiBzZXQn
KSA6IF9wcm9kSW52YXJpYW50KCcxNDQnKSA6IHZvaWQgMDtcblx0ICAgIGl0ZW0uY2hpbGRJRHMg
PSBuZXh0Q2hpbGRJRHM7XG5cdFxuXHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZXh0Q2hpbGRJ
RHMubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgdmFyIG5leHRDaGlsZElEID0gbmV4dENoaWxkSURz
W2ldO1xuXHQgICAgICB2YXIgbmV4dENoaWxkID0gZ2V0SXRlbShuZXh0Q2hpbGRJRCk7XG5cdCAg
ICAgICFuZXh0Q2hpbGQgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCBob29r
IGV2ZW50cyB0byBmaXJlIGZvciB0aGUgY2hpbGQgYmVmb3JlIGl0cyBwYXJlbnQgaW5jbHVkZXMg
aXQgaW4gb25TZXRDaGlsZHJlbigpLicpIDogX3Byb2RJbnZhcmlhbnQoJzE0MCcpIDogdm9pZCAw
O1xuXHQgICAgICAhKG5leHRDaGlsZC5jaGlsZElEcyAhPSBudWxsIHx8IHR5cGVvZiBuZXh0Q2hp
bGQuZWxlbWVudCAhPT0gJ29iamVjdCcgfHwgbmV4dENoaWxkLmVsZW1lbnQgPT0gbnVsbCkgPyAg
ZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCBvblNldENoaWxkcmVuKCkgdG8gZmly
ZSBmb3IgYSBjb250YWluZXIgY2hpbGQgYmVmb3JlIGl0cyBwYXJlbnQgaW5jbHVkZXMgaXQgaW4g
b25TZXRDaGlsZHJlbigpLicpIDogX3Byb2RJbnZhcmlhbnQoJzE0MScpIDogdm9pZCAwO1xuXHQg
ICAgICAhbmV4dENoaWxkLmlzTW91bnRlZCA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0V4
cGVjdGVkIG9uTW91bnRDb21wb25lbnQoKSB0byBmaXJlIGZvciB0aGUgY2hpbGQgYmVmb3JlIGl0
cyBwYXJlbnQgaW5jbHVkZXMgaXQgaW4gb25TZXRDaGlsZHJlbigpLicpIDogX3Byb2RJbnZhcmlh
bnQoJzcxJykgOiB2b2lkIDA7XG5cdCAgICAgIGlmIChuZXh0Q2hpbGQucGFyZW50SUQgPT0gbnVs
bCkge1xuXHQgICAgICAgIG5leHRDaGlsZC5wYXJlbnRJRCA9IGlkO1xuXHQgICAgICAgIC8vIFRP
RE86IFRoaXMgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSBidXQgbW91bnRpbmcgYSBuZXcgcm9vdCBk
dXJpbmcgaW5cblx0ICAgICAgICAvLyBjb21wb25lbnRXaWxsTW91bnQgY3VycmVudGx5IGNhdXNl
cyBub3QteWV0LW1vdW50ZWQgY29tcG9uZW50cyB0b1xuXHQgICAgICAgIC8vIGJlIHB1cmdlZCBm
cm9tIG91ciB0cmVlIGRhdGEgc28gdGhlaXIgcGFyZW50IGlkIGlzIG1pc3NpbmcuXG5cdCAgICAg
IH1cblx0ICAgICAgIShuZXh0Q2hpbGQucGFyZW50SUQgPT09IGlkKSA/ICBmYWxzZSA/IGludmFy
aWFudChmYWxzZSwgJ0V4cGVjdGVkIG9uQmVmb3JlTW91bnRDb21wb25lbnQoKSBwYXJlbnQgYW5k
IG9uU2V0Q2hpbGRyZW4oKSB0byBiZSBjb25zaXN0ZW50ICglcyBoYXMgcGFyZW50cyAlcyBhbmQg
JXMpLicsIG5leHRDaGlsZElELCBuZXh0Q2hpbGQucGFyZW50SUQsIGlkKSA6IF9wcm9kSW52YXJp
YW50KCcxNDInLCBuZXh0Q2hpbGRJRCwgbmV4dENoaWxkLnBhcmVudElELCBpZCkgOiB2b2lkIDA7
XG5cdCAgICB9XG5cdCAgfSxcblx0ICBvbkJlZm9yZU1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAo
aWQsIGVsZW1lbnQsIHBhcmVudElEKSB7XG5cdCAgICB2YXIgaXRlbSA9IHtcblx0ICAgICAgZWxl
bWVudDogZWxlbWVudCxcblx0ICAgICAgcGFyZW50SUQ6IHBhcmVudElELFxuXHQgICAgICB0ZXh0
OiBudWxsLFxuXHQgICAgICBjaGlsZElEczogW10sXG5cdCAgICAgIGlzTW91bnRlZDogZmFsc2Us
XG5cdCAgICAgIHVwZGF0ZUNvdW50OiAwXG5cdCAgICB9O1xuXHQgICAgc2V0SXRlbShpZCwgaXRl
bSk7XG5cdCAgfSxcblx0ICBvbkJlZm9yZVVwZGF0ZUNvbXBvbmVudDogZnVuY3Rpb24gKGlkLCBl
bGVtZW50KSB7XG5cdCAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuXHQgICAgaWYgKCFpdGVt
IHx8ICFpdGVtLmlzTW91bnRlZCkge1xuXHQgICAgICAvLyBXZSBtYXkgZW5kIHVwIGhlcmUgYXMg
YSByZXN1bHQgb2Ygc2V0U3RhdGUoKSBpbiBjb21wb25lbnRXaWxsVW5tb3VudCgpLlxuXHQgICAg
ICAvLyBJbiB0aGlzIGNhc2UsIGlnbm9yZSB0aGUgZWxlbWVudC5cblx0ICAgICAgcmV0dXJuO1xu
XHQgICAgfVxuXHQgICAgaXRlbS5lbGVtZW50ID0gZWxlbWVudDtcblx0ICB9LFxuXHQgIG9uTW91
bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChpZCkge1xuXHQgICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlk
KTtcblx0ICAgICFpdGVtID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnSXRlbSBtdXN0IGhh
dmUgYmVlbiBzZXQnKSA6IF9wcm9kSW52YXJpYW50KCcxNDQnKSA6IHZvaWQgMDtcblx0ICAgIGl0
ZW0uaXNNb3VudGVkID0gdHJ1ZTtcblx0ICAgIHZhciBpc1Jvb3QgPSBpdGVtLnBhcmVudElEID09
PSAwO1xuXHQgICAgaWYgKGlzUm9vdCkge1xuXHQgICAgICBhZGRSb290KGlkKTtcblx0ICAgIH1c
blx0ICB9LFxuXHQgIG9uVXBkYXRlQ29tcG9uZW50OiBmdW5jdGlvbiAoaWQpIHtcblx0ICAgIHZh
ciBpdGVtID0gZ2V0SXRlbShpZCk7XG5cdCAgICBpZiAoIWl0ZW0gfHwgIWl0ZW0uaXNNb3VudGVk
KSB7XG5cdCAgICAgIC8vIFdlIG1heSBlbmQgdXAgaGVyZSBhcyBhIHJlc3VsdCBvZiBzZXRTdGF0
ZSgpIGluIGNvbXBvbmVudFdpbGxVbm1vdW50KCkuXG5cdCAgICAgIC8vIEluIHRoaXMgY2FzZSwg
aWdub3JlIHRoZSBlbGVtZW50LlxuXHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAgICBpdGVt
LnVwZGF0ZUNvdW50Kys7XG5cdCAgfSxcblx0ICBvblVubW91bnRDb21wb25lbnQ6IGZ1bmN0aW9u
IChpZCkge1xuXHQgICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcblx0ICAgIGlmIChpdGVtKSB7
XG5cdCAgICAgIC8vIFdlIG5lZWQgdG8gY2hlY2sgaWYgaXQgZXhpc3RzLlxuXHQgICAgICAvLyBg
aXRlbWAgbWlnaHQgbm90IGV4aXN0IGlmIGl0IGlzIGluc2lkZSBhbiBlcnJvciBib3VuZGFyeSwg
YW5kIGEgc2libGluZ1xuXHQgICAgICAvLyBlcnJvciBib3VuZGFyeSBjaGlsZCB0aHJldyB3aGls
ZSBtb3VudGluZy4gVGhlbiB0aGlzIGluc3RhbmNlIG5ldmVyXG5cdCAgICAgIC8vIGdvdCBhIGNo
YW5jZSB0byBtb3VudCwgYnV0IGl0IHN0aWxsIGdldHMgYW4gdW5tb3VudGluZyBldmVudCBkdXJp
bmdcblx0ICAgICAgLy8gdGhlIGVycm9yIGJvdW5kYXJ5IGNsZWFudXAuXG5cdCAgICAgIGl0ZW0u
aXNNb3VudGVkID0gZmFsc2U7XG5cdCAgICAgIHZhciBpc1Jvb3QgPSBpdGVtLnBhcmVudElEID09
PSAwO1xuXHQgICAgICBpZiAoaXNSb290KSB7XG5cdCAgICAgICAgcmVtb3ZlUm9vdChpZCk7XG5c
dCAgICAgIH1cblx0ICAgIH1cblx0ICAgIHVubW91bnRlZElEcy5wdXNoKGlkKTtcblx0ICB9LFxu
XHQgIHB1cmdlVW5tb3VudGVkQ29tcG9uZW50czogZnVuY3Rpb24gKCkge1xuXHQgICAgaWYgKFJl
YWN0Q29tcG9uZW50VHJlZUhvb2suX3ByZXZlbnRQdXJnaW5nKSB7XG5cdCAgICAgIC8vIFNob3Vs
ZCBvbmx5IGJlIHVzZWQgZm9yIHRlc3RpbmcuXG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0
XG5cdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVubW91bnRlZElEcy5sZW5ndGg7IGkrKykge1xu
XHQgICAgICB2YXIgaWQgPSB1bm1vdW50ZWRJRHNbaV07XG5cdCAgICAgIHB1cmdlRGVlcChpZCk7
XG5cdCAgICB9XG5cdCAgICB1bm1vdW50ZWRJRHMubGVuZ3RoID0gMDtcblx0ICB9LFxuXHQgIGlz
TW91bnRlZDogZnVuY3Rpb24gKGlkKSB7XG5cdCAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xu
XHQgICAgcmV0dXJuIGl0ZW0gPyBpdGVtLmlzTW91bnRlZCA6IGZhbHNlO1xuXHQgIH0sXG5cdCAg
Z2V0Q3VycmVudFN0YWNrQWRkZW5kdW06IGZ1bmN0aW9uICh0b3BFbGVtZW50KSB7XG5cdCAgICB2
YXIgaW5mbyA9ICcnO1xuXHQgICAgaWYgKHRvcEVsZW1lbnQpIHtcblx0ICAgICAgdmFyIG5hbWUg
PSBnZXREaXNwbGF5TmFtZSh0b3BFbGVtZW50KTtcblx0ICAgICAgdmFyIG93bmVyID0gdG9wRWxl
bWVudC5fb3duZXI7XG5cdCAgICAgIGluZm8gKz0gZGVzY3JpYmVDb21wb25lbnRGcmFtZShuYW1l
LCB0b3BFbGVtZW50Ll9zb3VyY2UsIG93bmVyICYmIG93bmVyLmdldE5hbWUoKSk7XG5cdCAgICB9
XG5cdFxuXHQgICAgdmFyIGN1cnJlbnRPd25lciA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQ7
XG5cdCAgICB2YXIgaWQgPSBjdXJyZW50T3duZXIgJiYgY3VycmVudE93bmVyLl9kZWJ1Z0lEO1xu
XHRcblx0ICAgIGluZm8gKz0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRTdGFja0FkZGVuZHVt
QnlJRChpZCk7XG5cdCAgICByZXR1cm4gaW5mbztcblx0ICB9LFxuXHQgIGdldFN0YWNrQWRkZW5k
dW1CeUlEOiBmdW5jdGlvbiAoaWQpIHtcblx0ICAgIHZhciBpbmZvID0gJyc7XG5cdCAgICB3aGls
ZSAoaWQpIHtcblx0ICAgICAgaW5mbyArPSBkZXNjcmliZUlEKGlkKTtcblx0ICAgICAgaWQgPSBS
ZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFBhcmVudElEKGlkKTtcblx0ICAgIH1cblx0ICAgIHJl
dHVybiBpbmZvO1xuXHQgIH0sXG5cdCAgZ2V0Q2hpbGRJRHM6IGZ1bmN0aW9uIChpZCkge1xuXHQg
ICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcblx0ICAgIHJldHVybiBpdGVtID8gaXRlbS5jaGls
ZElEcyA6IFtdO1xuXHQgIH0sXG5cdCAgZ2V0RGlzcGxheU5hbWU6IGZ1bmN0aW9uIChpZCkge1xu
XHQgICAgdmFyIGVsZW1lbnQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldEVsZW1lbnQoaWQp
O1xuXHQgICAgaWYgKCFlbGVtZW50KSB7XG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQgICAgfVxu
XHQgICAgcmV0dXJuIGdldERpc3BsYXlOYW1lKGVsZW1lbnQpO1xuXHQgIH0sXG5cdCAgZ2V0RWxl
bWVudDogZnVuY3Rpb24gKGlkKSB7XG5cdCAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuXHQg
ICAgcmV0dXJuIGl0ZW0gPyBpdGVtLmVsZW1lbnQgOiBudWxsO1xuXHQgIH0sXG5cdCAgZ2V0T3du
ZXJJRDogZnVuY3Rpb24gKGlkKSB7XG5cdCAgICB2YXIgZWxlbWVudCA9IFJlYWN0Q29tcG9uZW50
VHJlZUhvb2suZ2V0RWxlbWVudChpZCk7XG5cdCAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQu
X293bmVyKSB7XG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIGVs
ZW1lbnQuX293bmVyLl9kZWJ1Z0lEO1xuXHQgIH0sXG5cdCAgZ2V0UGFyZW50SUQ6IGZ1bmN0aW9u
IChpZCkge1xuXHQgICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcblx0ICAgIHJldHVybiBpdGVt
ID8gaXRlbS5wYXJlbnRJRCA6IG51bGw7XG5cdCAgfSxcblx0ICBnZXRTb3VyY2U6IGZ1bmN0aW9u
IChpZCkge1xuXHQgICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcblx0ICAgIHZhciBlbGVtZW50
ID0gaXRlbSA/IGl0ZW0uZWxlbWVudCA6IG51bGw7XG5cdCAgICB2YXIgc291cmNlID0gZWxlbWVu
dCAhPSBudWxsID8gZWxlbWVudC5fc291cmNlIDogbnVsbDtcblx0ICAgIHJldHVybiBzb3VyY2U7
XG5cdCAgfSxcblx0ICBnZXRUZXh0OiBmdW5jdGlvbiAoaWQpIHtcblx0ICAgIHZhciBlbGVtZW50
ID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRFbGVtZW50KGlkKTtcblx0ICAgIGlmICh0eXBl
b2YgZWxlbWVudCA9PT0gJ3N0cmluZycpIHtcblx0ICAgICAgcmV0dXJuIGVsZW1lbnQ7XG5cdCAg
ICB9IGVsc2UgaWYgKHR5cGVvZiBlbGVtZW50ID09PSAnbnVtYmVyJykge1xuXHQgICAgICByZXR1
cm4gJycgKyBlbGVtZW50O1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgcmV0dXJuIG51bGw7XG5c
dCAgICB9XG5cdCAgfSxcblx0ICBnZXRVcGRhdGVDb3VudDogZnVuY3Rpb24gKGlkKSB7XG5cdCAg
ICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuXHQgICAgcmV0dXJuIGl0ZW0gPyBpdGVtLnVwZGF0
ZUNvdW50IDogMDtcblx0ICB9LFxuXHRcblx0XG5cdCAgZ2V0Um9vdElEczogZ2V0Um9vdElEcyxc
blx0ICBnZXRSZWdpc3RlcmVkSURzOiBnZXRJdGVtSURzLFxuXHRcblx0ICBwdXNoTm9uU3RhbmRh
cmRXYXJuaW5nU3RhY2s6IGZ1bmN0aW9uIChpc0NyZWF0aW5nRWxlbWVudCwgY3VycmVudFNvdXJj
ZSkge1xuXHQgICAgaWYgKHR5cGVvZiBjb25zb2xlLnJlYWN0U3RhY2sgIT09ICdmdW5jdGlvbicp
IHtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHRcblx0ICAgIHZhciBzdGFjayA9IFtdO1xu
XHQgICAgdmFyIGN1cnJlbnRPd25lciA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQ7XG5cdCAg
ICB2YXIgaWQgPSBjdXJyZW50T3duZXIgJiYgY3VycmVudE93bmVyLl9kZWJ1Z0lEO1xuXHRcblx0
ICAgIHRyeSB7XG5cdCAgICAgIGlmIChpc0NyZWF0aW5nRWxlbWVudCkge1xuXHQgICAgICAgIHN0
YWNrLnB1c2goe1xuXHQgICAgICAgICAgbmFtZTogaWQgPyBSZWFjdENvbXBvbmVudFRyZWVIb29r
LmdldERpc3BsYXlOYW1lKGlkKSA6IG51bGwsXG5cdCAgICAgICAgICBmaWxlTmFtZTogY3VycmVu
dFNvdXJjZSA/IGN1cnJlbnRTb3VyY2UuZmlsZU5hbWUgOiBudWxsLFxuXHQgICAgICAgICAgbGlu
ZU51bWJlcjogY3VycmVudFNvdXJjZSA/IGN1cnJlbnRTb3VyY2UubGluZU51bWJlciA6IG51bGxc
blx0ICAgICAgICB9KTtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgd2hpbGUgKGlkKSB7XG5cdCAg
ICAgICAgdmFyIGVsZW1lbnQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldEVsZW1lbnQoaWQp
O1xuXHQgICAgICAgIHZhciBwYXJlbnRJRCA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0UGFy
ZW50SUQoaWQpO1xuXHQgICAgICAgIHZhciBvd25lcklEID0gUmVhY3RDb21wb25lbnRUcmVlSG9v
ay5nZXRPd25lcklEKGlkKTtcblx0ICAgICAgICB2YXIgb3duZXJOYW1lID0gb3duZXJJRCA/IFJl
YWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RGlzcGxheU5hbWUob3duZXJJRCkgOiBudWxsO1xuXHQg
ICAgICAgIHZhciBzb3VyY2UgPSBlbGVtZW50ICYmIGVsZW1lbnQuX3NvdXJjZTtcblx0ICAgICAg
ICBzdGFjay5wdXNoKHtcblx0ICAgICAgICAgIG5hbWU6IG93bmVyTmFtZSxcblx0ICAgICAgICAg
IGZpbGVOYW1lOiBzb3VyY2UgPyBzb3VyY2UuZmlsZU5hbWUgOiBudWxsLFxuXHQgICAgICAgICAg
bGluZU51bWJlcjogc291cmNlID8gc291cmNlLmxpbmVOdW1iZXIgOiBudWxsXG5cdCAgICAgICAg
fSk7XG5cdCAgICAgICAgaWQgPSBwYXJlbnRJRDtcblx0ICAgICAgfVxuXHQgICAgfSBjYXRjaCAo
ZXJyKSB7XG5cdCAgICAgIC8vIEludGVybmFsIHN0YXRlIGlzIG1lc3NlZCB1cC5cblx0ICAgICAg
Ly8gU3RvcCBidWlsZGluZyB0aGUgc3RhY2sgKGl0J3MganVzdCBhIG5pY2UgdG8gaGF2ZSkuXG5c
dCAgICB9XG5cdFxuXHQgICAgY29uc29sZS5yZWFjdFN0YWNrKHN0YWNrKTtcblx0ICB9LFxuXHQg
IHBvcE5vblN0YW5kYXJkV2FybmluZ1N0YWNrOiBmdW5jdGlvbiAoKSB7XG5cdCAgICBpZiAodHlw
ZW9mIGNvbnNvbGUucmVhY3RTdGFja0VuZCAhPT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICByZXR1
cm47XG5cdCAgICB9XG5cdCAgICBjb25zb2xlLnJlYWN0U3RhY2tFbmQoKTtcblx0ICB9XG5cdH07
XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2s7XG5cbi8qKiov
IH0sXG4vKiA5MSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0Lyoq
XG5cdCAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQgKi9cblx0XG5c
dCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8vIFRoZSBTeW1ib2wgdXNlZCB0byB0YWcgdGhlIFJlYWN0
RWxlbWVudCB0eXBlLiBJZiB0aGVyZSBpcyBubyBuYXRpdmUgU3ltYm9sXG5cdC8vIG5vciBwb2x5
ZmlsbCwgdGhlbiBhIHBsYWluIG51bWJlciBpcyB1c2VkIGZvciBwZXJmb3JtYW5jZS5cblx0XG5c
dHZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYm
IFN5bWJvbFsnZm9yJ10gJiYgU3ltYm9sWydmb3InXSgncmVhY3QuZWxlbWVudCcpIHx8IDB4ZWFj
Nztcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUkVBQ1RfRUxFTUVOVF9UWVBFO1xuXG4vKioqLyB9
LFxuLyogOTIgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3Jl
cXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxNS1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxu
XHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciB3YXJuaW5nID0gX193ZWJwYWNr
X3JlcXVpcmVfXygyKTtcblx0XG5cdGZ1bmN0aW9uIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCBj
YWxsZXJOYW1lKSB7XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICB2YXIgY29uc3RydWN0b3IgPSBw
dWJsaWNJbnN0YW5jZS5jb25zdHJ1Y3Rvcjtcblx0ICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMoLi4uKTogQ2FuIG9ubHkgdXBkYXRl
IGEgbW91bnRlZCBvciBtb3VudGluZyBjb21wb25lbnQuICcgKyAnVGhpcyB1c3VhbGx5IG1lYW5z
IHlvdSBjYWxsZWQgJXMoKSBvbiBhbiB1bm1vdW50ZWQgY29tcG9uZW50LiAnICsgJ1RoaXMgaXMg
YSBuby1vcC4gUGxlYXNlIGNoZWNrIHRoZSBjb2RlIGZvciB0aGUgJXMgY29tcG9uZW50LicsIGNh
bGxlck5hbWUsIGNhbGxlck5hbWUsIGNvbnN0cnVjdG9yICYmIChjb25zdHJ1Y3Rvci5kaXNwbGF5
TmFtZSB8fCBjb25zdHJ1Y3Rvci5uYW1lKSB8fCAnUmVhY3RDbGFzcycpIDogdm9pZCAwO1xuXHQg
IH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIFRoaXMgaXMgdGhlIGFic3RyYWN0IEFQSSBmb3IgYW4g
dXBkYXRlIHF1ZXVlLlxuXHQgKi9cblx0dmFyIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlID0ge1xuXHQg
IC8qKlxuXHQgICAqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGNvbXBvc2l0ZSBjb21wb25l
bnQgaXMgbW91bnRlZC5cblx0ICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNl
IFRoZSBpbnN0YW5jZSB3ZSB3YW50IHRvIHRlc3QuXG5cdCAgICogQHJldHVybiB7Ym9vbGVhbn0g
VHJ1ZSBpZiBtb3VudGVkLCBmYWxzZSBvdGhlcndpc2UuXG5cdCAgICogQHByb3RlY3RlZFxuXHQg
ICAqIEBmaW5hbFxuXHQgICAqL1xuXHQgIGlzTW91bnRlZDogZnVuY3Rpb24gKHB1YmxpY0luc3Rh
bmNlKSB7XG5cdCAgICByZXR1cm4gZmFsc2U7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICog
RW5xdWV1ZSBhIGNhbGxiYWNrIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBhZnRlciBhbGwgdGhlIHBl
bmRpbmcgdXBkYXRlc1xuXHQgICAqIGhhdmUgcHJvY2Vzc2VkLlxuXHQgICAqXG5cdCAgICogQHBh
cmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdG8gdXNlIGFzIGB0
aGlzYCBjb250ZXh0LlxuXHQgICAqIEBwYXJhbSB7P2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsZWQg
YWZ0ZXIgc3RhdGUgaXMgdXBkYXRlZC5cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICBl
bnF1ZXVlQ2FsbGJhY2s6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgY2FsbGJhY2spIHt9LFxu
XHRcblx0ICAvKipcblx0ICAgKiBGb3JjZXMgYW4gdXBkYXRlLiBUaGlzIHNob3VsZCBvbmx5IGJl
IGludm9rZWQgd2hlbiBpdCBpcyBrbm93biB3aXRoXG5cdCAgICogY2VydGFpbnR5IHRoYXQgd2Ug
YXJlICoqbm90KiogaW4gYSBET00gdHJhbnNhY3Rpb24uXG5cdCAgICpcblx0ICAgKiBZb3UgbWF5
IHdhbnQgdG8gY2FsbCB0aGlzIHdoZW4geW91IGtub3cgdGhhdCBzb21lIGRlZXBlciBhc3BlY3Qg
b2YgdGhlXG5cdCAgICogY29tcG9uZW50J3Mgc3RhdGUgaGFzIGNoYW5nZWQgYnV0IGBzZXRTdGF0
ZWAgd2FzIG5vdCBjYWxsZWQuXG5cdCAgICpcblx0ICAgKiBUaGlzIHdpbGwgbm90IGludm9rZSBg
c2hvdWxkQ29tcG9uZW50VXBkYXRlYCwgYnV0IGl0IHdpbGwgaW52b2tlXG5cdCAgICogYGNvbXBv
bmVudFdpbGxVcGRhdGVgIGFuZCBgY29tcG9uZW50RGlkVXBkYXRlYC5cblx0ICAgKlxuXHQgICAq
IEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hv
dWxkIHJlcmVuZGVyLlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIGVucXVldWVGb3Jj
ZVVwZGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlKSB7XG5cdCAgICB3YXJuTm9vcChwdWJs
aWNJbnN0YW5jZSwgJ2ZvcmNlVXBkYXRlJyk7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICog
UmVwbGFjZXMgYWxsIG9mIHRoZSBzdGF0ZS4gQWx3YXlzIHVzZSB0aGlzIG9yIGBzZXRTdGF0ZWAg
dG8gbXV0YXRlIHN0YXRlLlxuXHQgICAqIFlvdSBzaG91bGQgdHJlYXQgYHRoaXMuc3RhdGVgIGFz
IGltbXV0YWJsZS5cblx0ICAgKlxuXHQgICAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGB0
aGlzLnN0YXRlYCB3aWxsIGJlIGltbWVkaWF0ZWx5IHVwZGF0ZWQsIHNvXG5cdCAgICogYWNjZXNz
aW5nIGB0aGlzLnN0YXRlYCBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kIG1heSByZXR1cm4gdGhl
IG9sZCB2YWx1ZS5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5z
dGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuXHQgICAqIEBwYXJhbSB7
b2JqZWN0fSBjb21wbGV0ZVN0YXRlIE5leHQgc3RhdGUuXG5cdCAgICogQGludGVybmFsXG5cdCAg
ICovXG5cdCAgZW5xdWV1ZVJlcGxhY2VTdGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBj
b21wbGV0ZVN0YXRlKSB7XG5cdCAgICB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ3JlcGxhY2VT
dGF0ZScpO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFNldHMgYSBzdWJzZXQgb2YgdGhl
IHN0YXRlLiBUaGlzIG9ubHkgZXhpc3RzIGJlY2F1c2UgX3BlbmRpbmdTdGF0ZSBpc1xuXHQgICAq
IGludGVybmFsLiBUaGlzIHByb3ZpZGVzIGEgbWVyZ2luZyBzdHJhdGVneSB0aGF0IGlzIG5vdCBh
dmFpbGFibGUgdG8gZGVlcFxuXHQgICAqIHByb3BlcnRpZXMgd2hpY2ggaXMgY29uZnVzaW5nLiBU
T0RPOiBFeHBvc2UgcGVuZGluZ1N0YXRlIG9yIGRvbid0IHVzZSBpdFxuXHQgICAqIGR1cmluZyB0
aGUgbWVyZ2UuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3Rh
bmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cblx0ICAgKiBAcGFyYW0ge29i
amVjdH0gcGFydGlhbFN0YXRlIE5leHQgcGFydGlhbCBzdGF0ZSB0byBiZSBtZXJnZWQgd2l0aCBz
dGF0ZS5cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICBlbnF1ZXVlU2V0U3RhdGU6IGZ1
bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgcGFydGlhbFN0YXRlKSB7XG5cdCAgICB3YXJuTm9vcChw
dWJsaWNJbnN0YW5jZSwgJ3NldFN0YXRlJyk7XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4
cG9ydHMgPSBSZWFjdE5vb3BVcGRhdGVRdWV1ZTtcblxuLyoqKi8gfSxcbi8qIDkzICovXG4vKioq
LyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQv
Kipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogXG5cdCAqL1xuXHRc
blx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIGNhbkRlZmluZVByb3BlcnR5ID0gZmFsc2U7XG5c
dGlmIChmYWxzZSkge1xuXHQgIHRyeSB7XG5cdCAgICAvLyAkRmxvd0ZpeE1lIGh0dHBzOi8vZ2l0
aHViLmNvbS9mYWNlYm9vay9mbG93L2lzc3Vlcy8yODVcblx0ICAgIE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh7fSwgJ3gnLCB7IGdldDogZnVuY3Rpb24gKCkge30gfSk7XG5cdCAgICBjYW5EZWZpbmVQ
cm9wZXJ0eSA9IHRydWU7XG5cdCAgfSBjYXRjaCAoeCkge1xuXHQgICAgLy8gSUUgd2lsbCBmYWls
IG9uIGRlZmluZVByb3BlcnR5XG5cdCAgfVxuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGNh
bkRlZmluZVByb3BlcnR5O1xuXG4vKioqLyB9LFxuLyogOTQgKi9cbi8qKiovIGZ1bmN0aW9uKG1v
ZHVsZSwgZXhwb3J0cykge1xuXG5cdFwidXNlIHN0cmljdFwiO1xuXHRcblx0ZXhwb3J0cy5fX2Vz
TW9kdWxlID0gdHJ1ZTtcblx0ZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBjb21wb3NlO1xuXHQvKipc
blx0ICogQ29tcG9zZXMgc2luZ2xlLWFyZ3VtZW50IGZ1bmN0aW9ucyBmcm9tIHJpZ2h0IHRvIGxl
ZnQuIFRoZSByaWdodG1vc3Rcblx0ICogZnVuY3Rpb24gY2FuIHRha2UgbXVsdGlwbGUgYXJndW1l
bnRzIGFzIGl0IHByb3ZpZGVzIHRoZSBzaWduYXR1cmUgZm9yXG5cdCAqIHRoZSByZXN1bHRpbmcg
Y29tcG9zaXRlIGZ1bmN0aW9uLlxuXHQgKlxuXHQgKiBAcGFyYW0gey4uLkZ1bmN0aW9ufSBmdW5j
cyBUaGUgZnVuY3Rpb25zIHRvIGNvbXBvc2UuXG5cdCAqIEByZXR1cm5zIHtGdW5jdGlvbn0gQSBm
dW5jdGlvbiBvYnRhaW5lZCBieSBjb21wb3NpbmcgdGhlIGFyZ3VtZW50IGZ1bmN0aW9uc1xuXHQg
KiBmcm9tIHJpZ2h0IHRvIGxlZnQuIEZvciBleGFtcGxlLCBjb21wb3NlKGYsIGcsIGgpIGlzIGlk
ZW50aWNhbCB0byBkb2luZ1xuXHQgKiAoLi4uYXJncykgPT4gZihnKGgoLi4uYXJncykpKS5cblx0
ICovXG5cdFxuXHRmdW5jdGlvbiBjb21wb3NlKCkge1xuXHQgIGZvciAodmFyIF9sZW4gPSBhcmd1
bWVudHMubGVuZ3RoLCBmdW5jcyA9IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47
IF9rZXkrKykge1xuXHQgICAgZnVuY3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG5cdCAgfVxu
XHRcblx0ICBpZiAoZnVuY3MubGVuZ3RoID09PSAwKSB7XG5cdCAgICByZXR1cm4gZnVuY3Rpb24g
KGFyZykge1xuXHQgICAgICByZXR1cm4gYXJnO1xuXHQgICAgfTtcblx0ICB9XG5cdFxuXHQgIGlm
IChmdW5jcy5sZW5ndGggPT09IDEpIHtcblx0ICAgIHJldHVybiBmdW5jc1swXTtcblx0ICB9XG5c
dFxuXHQgIHJldHVybiBmdW5jcy5yZWR1Y2UoZnVuY3Rpb24gKGEsIGIpIHtcblx0ICAgIHJldHVy
biBmdW5jdGlvbiAoKSB7XG5cdCAgICAgIHJldHVybiBhKGIuYXBwbHkodW5kZWZpbmVkLCBhcmd1
bWVudHMpKTtcblx0ICAgIH07XG5cdCAgfSk7XG5cdH1cblxuLyoqKi8gfSxcbi8qIDk1ICovXG4v
KioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxu
XHQndXNlIHN0cmljdCc7XG5cdFxuXHRleHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXHRleHBv
cnRzLkFjdGlvblR5cGVzID0gdW5kZWZpbmVkO1xuXHRleHBvcnRzWydkZWZhdWx0J10gPSBjcmVh
dGVTdG9yZTtcblx0XG5cdHZhciBfaXNQbGFpbk9iamVjdCA9IF9fd2VicGFja19yZXF1aXJlX18o
MzMpO1xuXHRcblx0dmFyIF9pc1BsYWluT2JqZWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQo
X2lzUGxhaW5PYmplY3QpO1xuXHRcblx0dmFyIF9zeW1ib2xPYnNlcnZhYmxlID0gX193ZWJwYWNr
X3JlcXVpcmVfXygyMjgpO1xuXHRcblx0dmFyIF9zeW1ib2xPYnNlcnZhYmxlMiA9IF9pbnRlcm9w
UmVxdWlyZURlZmF1bHQoX3N5bWJvbE9ic2VydmFibGUpO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVy
b3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9i
aiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXHRcblx0LyoqXG5cdCAqIFRoZXNlIGFyZSBwcml2
YXRlIGFjdGlvbiB0eXBlcyByZXNlcnZlZCBieSBSZWR1eC5cblx0ICogRm9yIGFueSB1bmtub3du
IGFjdGlvbnMsIHlvdSBtdXN0IHJldHVybiB0aGUgY3VycmVudCBzdGF0ZS5cblx0ICogSWYgdGhl
IGN1cnJlbnQgc3RhdGUgaXMgdW5kZWZpbmVkLCB5b3UgbXVzdCByZXR1cm4gdGhlIGluaXRpYWwg
c3RhdGUuXG5cdCAqIERvIG5vdCByZWZlcmVuY2UgdGhlc2UgYWN0aW9uIHR5cGVzIGRpcmVjdGx5
IGluIHlvdXIgY29kZS5cblx0ICovXG5cdHZhciBBY3Rpb25UeXBlcyA9IGV4cG9ydHMuQWN0aW9u
VHlwZXMgPSB7XG5cdCAgSU5JVDogJ0BAcmVkdXgvSU5JVCdcblx0XG5cdCAgLyoqXG5cdCAgICog
Q3JlYXRlcyBhIFJlZHV4IHN0b3JlIHRoYXQgaG9sZHMgdGhlIHN0YXRlIHRyZWUuXG5cdCAgICog
VGhlIG9ubHkgd2F5IHRvIGNoYW5nZSB0aGUgZGF0YSBpbiB0aGUgc3RvcmUgaXMgdG8gY2FsbCBg
ZGlzcGF0Y2goKWAgb24gaXQuXG5cdCAgICpcblx0ICAgKiBUaGVyZSBzaG91bGQgb25seSBiZSBh
IHNpbmdsZSBzdG9yZSBpbiB5b3VyIGFwcC4gVG8gc3BlY2lmeSBob3cgZGlmZmVyZW50XG5cdCAg
ICogcGFydHMgb2YgdGhlIHN0YXRlIHRyZWUgcmVzcG9uZCB0byBhY3Rpb25zLCB5b3UgbWF5IGNv
bWJpbmUgc2V2ZXJhbCByZWR1Y2Vyc1xuXHQgICAqIGludG8gYSBzaW5nbGUgcmVkdWNlciBmdW5j
dGlvbiBieSB1c2luZyBgY29tYmluZVJlZHVjZXJzYC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7
RnVuY3Rpb259IHJlZHVjZXIgQSBmdW5jdGlvbiB0aGF0IHJldHVybnMgdGhlIG5leHQgc3RhdGUg
dHJlZSwgZ2l2ZW5cblx0ICAgKiB0aGUgY3VycmVudCBzdGF0ZSB0cmVlIGFuZCB0aGUgYWN0aW9u
IHRvIGhhbmRsZS5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7YW55fSBbcHJlbG9hZGVkU3RhdGVd
IFRoZSBpbml0aWFsIHN0YXRlLiBZb3UgbWF5IG9wdGlvbmFsbHkgc3BlY2lmeSBpdFxuXHQgICAq
IHRvIGh5ZHJhdGUgdGhlIHN0YXRlIGZyb20gdGhlIHNlcnZlciBpbiB1bml2ZXJzYWwgYXBwcywg
b3IgdG8gcmVzdG9yZSBhXG5cdCAgICogcHJldmlvdXNseSBzZXJpYWxpemVkIHVzZXIgc2Vzc2lv
bi5cblx0ICAgKiBJZiB5b3UgdXNlIGBjb21iaW5lUmVkdWNlcnNgIHRvIHByb2R1Y2UgdGhlIHJv
b3QgcmVkdWNlciBmdW5jdGlvbiwgdGhpcyBtdXN0IGJlXG5cdCAgICogYW4gb2JqZWN0IHdpdGgg
dGhlIHNhbWUgc2hhcGUgYXMgYGNvbWJpbmVSZWR1Y2Vyc2Aga2V5cy5cblx0ICAgKlxuXHQgICAq
IEBwYXJhbSB7RnVuY3Rpb259IFtlbmhhbmNlcl0gVGhlIHN0b3JlIGVuaGFuY2VyLiBZb3UgbWF5
IG9wdGlvbmFsbHkgc3BlY2lmeSBpdFxuXHQgICAqIHRvIGVuaGFuY2UgdGhlIHN0b3JlIHdpdGgg
dGhpcmQtcGFydHkgY2FwYWJpbGl0aWVzIHN1Y2ggYXMgbWlkZGxld2FyZSxcblx0ICAgKiB0aW1l
IHRyYXZlbCwgcGVyc2lzdGVuY2UsIGV0Yy4gVGhlIG9ubHkgc3RvcmUgZW5oYW5jZXIgdGhhdCBz
aGlwcyB3aXRoIFJlZHV4XG5cdCAgICogaXMgYGFwcGx5TWlkZGxld2FyZSgpYC5cblx0ICAgKlxu
XHQgICAqIEByZXR1cm5zIHtTdG9yZX0gQSBSZWR1eCBzdG9yZSB0aGF0IGxldHMgeW91IHJlYWQg
dGhlIHN0YXRlLCBkaXNwYXRjaCBhY3Rpb25zXG5cdCAgICogYW5kIHN1YnNjcmliZSB0byBjaGFu
Z2VzLlxuXHQgICAqL1xuXHR9O2Z1bmN0aW9uIGNyZWF0ZVN0b3JlKHJlZHVjZXIsIHByZWxvYWRl
ZFN0YXRlLCBlbmhhbmNlcikge1xuXHQgIHZhciBfcmVmMjtcblx0XG5cdCAgaWYgKHR5cGVvZiBw
cmVsb2FkZWRTdGF0ZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZW5oYW5jZXIgPT09ICd1bmRl
ZmluZWQnKSB7XG5cdCAgICBlbmhhbmNlciA9IHByZWxvYWRlZFN0YXRlO1xuXHQgICAgcHJlbG9h
ZGVkU3RhdGUgPSB1bmRlZmluZWQ7XG5cdCAgfVxuXHRcblx0ICBpZiAodHlwZW9mIGVuaGFuY2Vy
ICE9PSAndW5kZWZpbmVkJykge1xuXHQgICAgaWYgKHR5cGVvZiBlbmhhbmNlciAhPT0gJ2Z1bmN0
aW9uJykge1xuXHQgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0V4cGVjdGVkIHRoZSBlbmhhbmNlciB0
byBiZSBhIGZ1bmN0aW9uLicpO1xuXHQgICAgfVxuXHRcblx0ICAgIHJldHVybiBlbmhhbmNlcihj
cmVhdGVTdG9yZSkocmVkdWNlciwgcHJlbG9hZGVkU3RhdGUpO1xuXHQgIH1cblx0XG5cdCAgaWYg
KHR5cGVvZiByZWR1Y2VyICE9PSAnZnVuY3Rpb24nKSB7XG5cdCAgICB0aHJvdyBuZXcgRXJyb3Io
J0V4cGVjdGVkIHRoZSByZWR1Y2VyIHRvIGJlIGEgZnVuY3Rpb24uJyk7XG5cdCAgfVxuXHRcblx0
ICB2YXIgY3VycmVudFJlZHVjZXIgPSByZWR1Y2VyO1xuXHQgIHZhciBjdXJyZW50U3RhdGUgPSBw
cmVsb2FkZWRTdGF0ZTtcblx0ICB2YXIgY3VycmVudExpc3RlbmVycyA9IFtdO1xuXHQgIHZhciBu
ZXh0TGlzdGVuZXJzID0gY3VycmVudExpc3RlbmVycztcblx0ICB2YXIgaXNEaXNwYXRjaGluZyA9
IGZhbHNlO1xuXHRcblx0ICBmdW5jdGlvbiBlbnN1cmVDYW5NdXRhdGVOZXh0TGlzdGVuZXJzKCkg
e1xuXHQgICAgaWYgKG5leHRMaXN0ZW5lcnMgPT09IGN1cnJlbnRMaXN0ZW5lcnMpIHtcblx0ICAg
ICAgbmV4dExpc3RlbmVycyA9IGN1cnJlbnRMaXN0ZW5lcnMuc2xpY2UoKTtcblx0ICAgIH1cblx0
ICB9XG5cdFxuXHQgIC8qKlxuXHQgICAqIFJlYWRzIHRoZSBzdGF0ZSB0cmVlIG1hbmFnZWQgYnkg
dGhlIHN0b3JlLlxuXHQgICAqXG5cdCAgICogQHJldHVybnMge2FueX0gVGhlIGN1cnJlbnQgc3Rh
dGUgdHJlZSBvZiB5b3VyIGFwcGxpY2F0aW9uLlxuXHQgICAqL1xuXHQgIGZ1bmN0aW9uIGdldFN0
YXRlKCkge1xuXHQgICAgcmV0dXJuIGN1cnJlbnRTdGF0ZTtcblx0ICB9XG5cdFxuXHQgIC8qKlxu
XHQgICAqIEFkZHMgYSBjaGFuZ2UgbGlzdGVuZXIuIEl0IHdpbGwgYmUgY2FsbGVkIGFueSB0aW1l
IGFuIGFjdGlvbiBpcyBkaXNwYXRjaGVkLFxuXHQgICAqIGFuZCBzb21lIHBhcnQgb2YgdGhlIHN0
YXRlIHRyZWUgbWF5IHBvdGVudGlhbGx5IGhhdmUgY2hhbmdlZC4gWW91IG1heSB0aGVuXG5cdCAg
ICogY2FsbCBgZ2V0U3RhdGUoKWAgdG8gcmVhZCB0aGUgY3VycmVudCBzdGF0ZSB0cmVlIGluc2lk
ZSB0aGUgY2FsbGJhY2suXG5cdCAgICpcblx0ICAgKiBZb3UgbWF5IGNhbGwgYGRpc3BhdGNoKClg
IGZyb20gYSBjaGFuZ2UgbGlzdGVuZXIsIHdpdGggdGhlIGZvbGxvd2luZ1xuXHQgICAqIGNhdmVh
dHM6XG5cdCAgICpcblx0ICAgKiAxLiBUaGUgc3Vic2NyaXB0aW9ucyBhcmUgc25hcHNob3R0ZWQg
anVzdCBiZWZvcmUgZXZlcnkgYGRpc3BhdGNoKClgIGNhbGwuXG5cdCAgICogSWYgeW91IHN1YnNj
cmliZSBvciB1bnN1YnNjcmliZSB3aGlsZSB0aGUgbGlzdGVuZXJzIGFyZSBiZWluZyBpbnZva2Vk
LCB0aGlzXG5cdCAgICogd2lsbCBub3QgaGF2ZSBhbnkgZWZmZWN0IG9uIHRoZSBgZGlzcGF0Y2go
KWAgdGhhdCBpcyBjdXJyZW50bHkgaW4gcHJvZ3Jlc3MuXG5cdCAgICogSG93ZXZlciwgdGhlIG5l
eHQgYGRpc3BhdGNoKClgIGNhbGwsIHdoZXRoZXIgbmVzdGVkIG9yIG5vdCwgd2lsbCB1c2UgYSBt
b3JlXG5cdCAgICogcmVjZW50IHNuYXBzaG90IG9mIHRoZSBzdWJzY3JpcHRpb24gbGlzdC5cblx0
ICAgKlxuXHQgICAqIDIuIFRoZSBsaXN0ZW5lciBzaG91bGQgbm90IGV4cGVjdCB0byBzZWUgYWxs
IHN0YXRlIGNoYW5nZXMsIGFzIHRoZSBzdGF0ZVxuXHQgICAqIG1pZ2h0IGhhdmUgYmVlbiB1cGRh
dGVkIG11bHRpcGxlIHRpbWVzIGR1cmluZyBhIG5lc3RlZCBgZGlzcGF0Y2goKWAgYmVmb3JlXG5c
dCAgICogdGhlIGxpc3RlbmVyIGlzIGNhbGxlZC4gSXQgaXMsIGhvd2V2ZXIsIGd1YXJhbnRlZWQg
dGhhdCBhbGwgc3Vic2NyaWJlcnNcblx0ICAgKiByZWdpc3RlcmVkIGJlZm9yZSB0aGUgYGRpc3Bh
dGNoKClgIHN0YXJ0ZWQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgbGF0ZXN0XG5cdCAgICogc3Rh
dGUgYnkgdGhlIHRpbWUgaXQgZXhpdHMuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge0Z1bmN0aW9u
fSBsaXN0ZW5lciBBIGNhbGxiYWNrIHRvIGJlIGludm9rZWQgb24gZXZlcnkgZGlzcGF0Y2guXG5c
dCAgICogQHJldHVybnMge0Z1bmN0aW9ufSBBIGZ1bmN0aW9uIHRvIHJlbW92ZSB0aGlzIGNoYW5n
ZSBsaXN0ZW5lci5cblx0ICAgKi9cblx0ICBmdW5jdGlvbiBzdWJzY3JpYmUobGlzdGVuZXIpIHtc
blx0ICAgIGlmICh0eXBlb2YgbGlzdGVuZXIgIT09ICdmdW5jdGlvbicpIHtcblx0ICAgICAgdGhy
b3cgbmV3IEVycm9yKCdFeHBlY3RlZCBsaXN0ZW5lciB0byBiZSBhIGZ1bmN0aW9uLicpO1xuXHQg
ICAgfVxuXHRcblx0ICAgIHZhciBpc1N1YnNjcmliZWQgPSB0cnVlO1xuXHRcblx0ICAgIGVuc3Vy
ZUNhbk11dGF0ZU5leHRMaXN0ZW5lcnMoKTtcblx0ICAgIG5leHRMaXN0ZW5lcnMucHVzaChsaXN0
ZW5lcik7XG5cdFxuXHQgICAgcmV0dXJuIGZ1bmN0aW9uIHVuc3Vic2NyaWJlKCkge1xuXHQgICAg
ICBpZiAoIWlzU3Vic2NyaWJlZCkge1xuXHQgICAgICAgIHJldHVybjtcblx0ICAgICAgfVxuXHRc
blx0ICAgICAgaXNTdWJzY3JpYmVkID0gZmFsc2U7XG5cdFxuXHQgICAgICBlbnN1cmVDYW5NdXRh
dGVOZXh0TGlzdGVuZXJzKCk7XG5cdCAgICAgIHZhciBpbmRleCA9IG5leHRMaXN0ZW5lcnMuaW5k
ZXhPZihsaXN0ZW5lcik7XG5cdCAgICAgIG5leHRMaXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtc
blx0ICAgIH07XG5cdCAgfVxuXHRcblx0ICAvKipcblx0ICAgKiBEaXNwYXRjaGVzIGFuIGFjdGlv
bi4gSXQgaXMgdGhlIG9ubHkgd2F5IHRvIHRyaWdnZXIgYSBzdGF0ZSBjaGFuZ2UuXG5cdCAgICpc
blx0ICAgKiBUaGUgYHJlZHVjZXJgIGZ1bmN0aW9uLCB1c2VkIHRvIGNyZWF0ZSB0aGUgc3RvcmUs
IHdpbGwgYmUgY2FsbGVkIHdpdGggdGhlXG5cdCAgICogY3VycmVudCBzdGF0ZSB0cmVlIGFuZCB0
aGUgZ2l2ZW4gYGFjdGlvbmAuIEl0cyByZXR1cm4gdmFsdWUgd2lsbFxuXHQgICAqIGJlIGNvbnNp
ZGVyZWQgdGhlICoqbmV4dCoqIHN0YXRlIG9mIHRoZSB0cmVlLCBhbmQgdGhlIGNoYW5nZSBsaXN0
ZW5lcnNcblx0ICAgKiB3aWxsIGJlIG5vdGlmaWVkLlxuXHQgICAqXG5cdCAgICogVGhlIGJhc2Ug
aW1wbGVtZW50YXRpb24gb25seSBzdXBwb3J0cyBwbGFpbiBvYmplY3QgYWN0aW9ucy4gSWYgeW91
IHdhbnQgdG9cblx0ICAgKiBkaXNwYXRjaCBhIFByb21pc2UsIGFuIE9ic2VydmFibGUsIGEgdGh1
bmssIG9yIHNvbWV0aGluZyBlbHNlLCB5b3UgbmVlZCB0b1xuXHQgICAqIHdyYXAgeW91ciBzdG9y
ZSBjcmVhdGluZyBmdW5jdGlvbiBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIG1pZGRsZXdhcmUuIEZv
clxuXHQgICAqIGV4YW1wbGUsIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGByZWR1eC10
aHVua2AgcGFja2FnZS4gRXZlbiB0aGVcblx0ICAgKiBtaWRkbGV3YXJlIHdpbGwgZXZlbnR1YWxs
eSBkaXNwYXRjaCBwbGFpbiBvYmplY3QgYWN0aW9ucyB1c2luZyB0aGlzIG1ldGhvZC5cblx0ICAg
KlxuXHQgICAqIEBwYXJhbSB7T2JqZWN0fSBhY3Rpb24gQSBwbGFpbiBvYmplY3QgcmVwcmVzZW50
aW5nIOKAnHdoYXQgY2hhbmdlZOKAnS4gSXQgaXNcblx0ICAgKiBhIGdvb2QgaWRlYSB0byBrZWVw
IGFjdGlvbnMgc2VyaWFsaXphYmxlIHNvIHlvdSBjYW4gcmVjb3JkIGFuZCByZXBsYXkgdXNlclxu
XHQgICAqIHNlc3Npb25zLCBvciB1c2UgdGhlIHRpbWUgdHJhdmVsbGluZyBgcmVkdXgtZGV2dG9v
bHNgLiBBbiBhY3Rpb24gbXVzdCBoYXZlXG5cdCAgICogYSBgdHlwZWAgcHJvcGVydHkgd2hpY2gg
bWF5IG5vdCBiZSBgdW5kZWZpbmVkYC4gSXQgaXMgYSBnb29kIGlkZWEgdG8gdXNlXG5cdCAgICog
c3RyaW5nIGNvbnN0YW50cyBmb3IgYWN0aW9uIHR5cGVzLlxuXHQgICAqXG5cdCAgICogQHJldHVy
bnMge09iamVjdH0gRm9yIGNvbnZlbmllbmNlLCB0aGUgc2FtZSBhY3Rpb24gb2JqZWN0IHlvdSBk
aXNwYXRjaGVkLlxuXHQgICAqXG5cdCAgICogTm90ZSB0aGF0LCBpZiB5b3UgdXNlIGEgY3VzdG9t
IG1pZGRsZXdhcmUsIGl0IG1heSB3cmFwIGBkaXNwYXRjaCgpYCB0b1xuXHQgICAqIHJldHVybiBz
b21ldGhpbmcgZWxzZSAoZm9yIGV4YW1wbGUsIGEgUHJvbWlzZSB5b3UgY2FuIGF3YWl0KS5cblx0
ICAgKi9cblx0ICBmdW5jdGlvbiBkaXNwYXRjaChhY3Rpb24pIHtcblx0ICAgIGlmICghKDAsIF9p
c1BsYWluT2JqZWN0MlsnZGVmYXVsdCddKShhY3Rpb24pKSB7XG5cdCAgICAgIHRocm93IG5ldyBF
cnJvcignQWN0aW9ucyBtdXN0IGJlIHBsYWluIG9iamVjdHMuICcgKyAnVXNlIGN1c3RvbSBtaWRk
bGV3YXJlIGZvciBhc3luYyBhY3Rpb25zLicpO1xuXHQgICAgfVxuXHRcblx0ICAgIGlmICh0eXBl
b2YgYWN0aW9uLnR5cGUgPT09ICd1bmRlZmluZWQnKSB7XG5cdCAgICAgIHRocm93IG5ldyBFcnJv
cignQWN0aW9ucyBtYXkgbm90IGhhdmUgYW4gdW5kZWZpbmVkIFwidHlwZVwiIHByb3BlcnR5LiAn
ICsgJ0hhdmUgeW91IG1pc3NwZWxsZWQgYSBjb25zdGFudD8nKTtcblx0ICAgIH1cblx0XG5cdCAg
ICBpZiAoaXNEaXNwYXRjaGluZykge1xuXHQgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlZHVjZXJz
IG1heSBub3QgZGlzcGF0Y2ggYWN0aW9ucy4nKTtcblx0ICAgIH1cblx0XG5cdCAgICB0cnkge1xu
XHQgICAgICBpc0Rpc3BhdGNoaW5nID0gdHJ1ZTtcblx0ICAgICAgY3VycmVudFN0YXRlID0gY3Vy
cmVudFJlZHVjZXIoY3VycmVudFN0YXRlLCBhY3Rpb24pO1xuXHQgICAgfSBmaW5hbGx5IHtcblx0
ICAgICAgaXNEaXNwYXRjaGluZyA9IGZhbHNlO1xuXHQgICAgfVxuXHRcblx0ICAgIHZhciBsaXN0
ZW5lcnMgPSBjdXJyZW50TGlzdGVuZXJzID0gbmV4dExpc3RlbmVycztcblx0ICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgbGlzdGVuZXJzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgIHZhciBsaXN0ZW5l
ciA9IGxpc3RlbmVyc1tpXTtcblx0ICAgICAgbGlzdGVuZXIoKTtcblx0ICAgIH1cblx0XG5cdCAg
ICByZXR1cm4gYWN0aW9uO1xuXHQgIH1cblx0XG5cdCAgLyoqXG5cdCAgICogUmVwbGFjZXMgdGhl
IHJlZHVjZXIgY3VycmVudGx5IHVzZWQgYnkgdGhlIHN0b3JlIHRvIGNhbGN1bGF0ZSB0aGUgc3Rh
dGUuXG5cdCAgICpcblx0ICAgKiBZb3UgbWlnaHQgbmVlZCB0aGlzIGlmIHlvdXIgYXBwIGltcGxl
bWVudHMgY29kZSBzcGxpdHRpbmcgYW5kIHlvdSB3YW50IHRvXG5cdCAgICogbG9hZCBzb21lIG9m
IHRoZSByZWR1Y2VycyBkeW5hbWljYWxseS4gWW91IG1pZ2h0IGFsc28gbmVlZCB0aGlzIGlmIHlv
dVxuXHQgICAqIGltcGxlbWVudCBhIGhvdCByZWxvYWRpbmcgbWVjaGFuaXNtIGZvciBSZWR1eC5c
blx0ICAgKlxuXHQgICAqIEBwYXJhbSB7RnVuY3Rpb259IG5leHRSZWR1Y2VyIFRoZSByZWR1Y2Vy
IGZvciB0aGUgc3RvcmUgdG8gdXNlIGluc3RlYWQuXG5cdCAgICogQHJldHVybnMge3ZvaWR9XG5c
dCAgICovXG5cdCAgZnVuY3Rpb24gcmVwbGFjZVJlZHVjZXIobmV4dFJlZHVjZXIpIHtcblx0ICAg
IGlmICh0eXBlb2YgbmV4dFJlZHVjZXIgIT09ICdmdW5jdGlvbicpIHtcblx0ICAgICAgdGhyb3cg
bmV3IEVycm9yKCdFeHBlY3RlZCB0aGUgbmV4dFJlZHVjZXIgdG8gYmUgYSBmdW5jdGlvbi4nKTtc
blx0ICAgIH1cblx0XG5cdCAgICBjdXJyZW50UmVkdWNlciA9IG5leHRSZWR1Y2VyO1xuXHQgICAg
ZGlzcGF0Y2goeyB0eXBlOiBBY3Rpb25UeXBlcy5JTklUIH0pO1xuXHQgIH1cblx0XG5cdCAgLyoq
XG5cdCAgICogSW50ZXJvcGVyYWJpbGl0eSBwb2ludCBmb3Igb2JzZXJ2YWJsZS9yZWFjdGl2ZSBs
aWJyYXJpZXMuXG5cdCAgICogQHJldHVybnMge29ic2VydmFibGV9IEEgbWluaW1hbCBvYnNlcnZh
YmxlIG9mIHN0YXRlIGNoYW5nZXMuXG5cdCAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0
aGUgb2JzZXJ2YWJsZSBwcm9wb3NhbDpcblx0ICAgKiBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9w
cm9wb3NhbC1vYnNlcnZhYmxlXG5cdCAgICovXG5cdCAgZnVuY3Rpb24gb2JzZXJ2YWJsZSgpIHtc
blx0ICAgIHZhciBfcmVmO1xuXHRcblx0ICAgIHZhciBvdXRlclN1YnNjcmliZSA9IHN1YnNjcmli
ZTtcblx0ICAgIHJldHVybiBfcmVmID0ge1xuXHQgICAgICAvKipcblx0ICAgICAgICogVGhlIG1p
bmltYWwgb2JzZXJ2YWJsZSBzdWJzY3JpcHRpb24gbWV0aG9kLlxuXHQgICAgICAgKiBAcGFyYW0g
e09iamVjdH0gb2JzZXJ2ZXIgQW55IG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIGFzIGFuIG9ic2Vy
dmVyLlxuXHQgICAgICAgKiBUaGUgb2JzZXJ2ZXIgb2JqZWN0IHNob3VsZCBoYXZlIGEgYG5leHRg
IG1ldGhvZC5cblx0ICAgICAgICogQHJldHVybnMge3N1YnNjcmlwdGlvbn0gQW4gb2JqZWN0IHdp
dGggYW4gYHVuc3Vic2NyaWJlYCBtZXRob2QgdGhhdCBjYW5cblx0ICAgICAgICogYmUgdXNlZCB0
byB1bnN1YnNjcmliZSB0aGUgb2JzZXJ2YWJsZSBmcm9tIHRoZSBzdG9yZSwgYW5kIHByZXZlbnQg
ZnVydGhlclxuXHQgICAgICAgKiBlbWlzc2lvbiBvZiB2YWx1ZXMgZnJvbSB0aGUgb2JzZXJ2YWJs
ZS5cblx0ICAgICAgICovXG5cdCAgICAgIHN1YnNjcmliZTogZnVuY3Rpb24gc3Vic2NyaWJlKG9i
c2VydmVyKSB7XG5cdCAgICAgICAgaWYgKHR5cGVvZiBvYnNlcnZlciAhPT0gJ29iamVjdCcpIHtc
blx0ICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0V4cGVjdGVkIHRoZSBvYnNlcnZlciB0
byBiZSBhbiBvYmplY3QuJyk7XG5cdCAgICAgICAgfVxuXHRcblx0ICAgICAgICBmdW5jdGlvbiBv
YnNlcnZlU3RhdGUoKSB7XG5cdCAgICAgICAgICBpZiAob2JzZXJ2ZXIubmV4dCkge1xuXHQgICAg
ICAgICAgICBvYnNlcnZlci5uZXh0KGdldFN0YXRlKCkpO1xuXHQgICAgICAgICAgfVxuXHQgICAg
ICAgIH1cblx0XG5cdCAgICAgICAgb2JzZXJ2ZVN0YXRlKCk7XG5cdCAgICAgICAgdmFyIHVuc3Vi
c2NyaWJlID0gb3V0ZXJTdWJzY3JpYmUob2JzZXJ2ZVN0YXRlKTtcblx0ICAgICAgICByZXR1cm4g
eyB1bnN1YnNjcmliZTogdW5zdWJzY3JpYmUgfTtcblx0ICAgICAgfVxuXHQgICAgfSwgX3JlZltf
c3ltYm9sT2JzZXJ2YWJsZTJbJ2RlZmF1bHQnXV0gPSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgIHJl
dHVybiB0aGlzO1xuXHQgICAgfSwgX3JlZjtcblx0ICB9XG5cdFxuXHQgIC8vIFdoZW4gYSBzdG9y
ZSBpcyBjcmVhdGVkLCBhbiBcIklOSVRcIiBhY3Rpb24gaXMgZGlzcGF0Y2hlZCBzbyB0aGF0IGV2
ZXJ5XG5cdCAgLy8gcmVkdWNlciByZXR1cm5zIHRoZWlyIGluaXRpYWwgc3RhdGUuIFRoaXMgZWZm
ZWN0aXZlbHkgcG9wdWxhdGVzXG5cdCAgLy8gdGhlIGluaXRpYWwgc3RhdGUgdHJlZS5cblx0ICBk
aXNwYXRjaCh7IHR5cGU6IEFjdGlvblR5cGVzLklOSVQgfSk7XG5cdFxuXHQgIHJldHVybiBfcmVm
MiA9IHtcblx0ICAgIGRpc3BhdGNoOiBkaXNwYXRjaCxcblx0ICAgIHN1YnNjcmliZTogc3Vic2Ny
aWJlLFxuXHQgICAgZ2V0U3RhdGU6IGdldFN0YXRlLFxuXHQgICAgcmVwbGFjZVJlZHVjZXI6IHJl
cGxhY2VSZWR1Y2VyXG5cdCAgfSwgX3JlZjJbX3N5bWJvbE9ic2VydmFibGUyWydkZWZhdWx0J11d
ID0gb2JzZXJ2YWJsZSwgX3JlZjI7XG5cdH1cblxuLyoqKi8gfSxcbi8qIDk2ICovXG4vKioqLyBm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRleHBv
cnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXHRleHBvcnRzWydkZWZhdWx0J10gPSB3YXJuaW5nO1xu
XHQvKipcblx0ICogUHJpbnRzIGEgd2FybmluZyBpbiB0aGUgY29uc29sZSBpZiBpdCBleGlzdHMu
XG5cdCAqXG5cdCAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlIFRoZSB3YXJuaW5nIG1lc3NhZ2Uu
XG5cdCAqIEByZXR1cm5zIHt2b2lkfVxuXHQgKi9cblx0ZnVuY3Rpb24gd2FybmluZyhtZXNzYWdl
KSB7XG5cdCAgLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuXHQgIGlmICh0eXBlb2Yg
Y29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGNvbnNvbGUuZXJyb3IgPT09ICdmdW5j
dGlvbicpIHtcblx0ICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG5cdCAgfVxuXHQgIC8qIGVz
bGludC1lbmFibGUgbm8tY29uc29sZSAqL1xuXHQgIHRyeSB7XG5cdCAgICAvLyBUaGlzIGVycm9y
IHdhcyB0aHJvd24gYXMgYSBjb252ZW5pZW5jZSBzbyB0aGF0IGlmIHlvdSBlbmFibGVcblx0ICAg
IC8vIFwiYnJlYWsgb24gYWxsIGV4Y2VwdGlvbnNcIiBpbiB5b3VyIGNvbnNvbGUsXG5cdCAgICAv
LyBpdCB3b3VsZCBwYXVzZSB0aGUgZXhlY3V0aW9uIGF0IHRoaXMgbGluZS5cblx0ICAgIHRocm93
IG5ldyBFcnJvcihtZXNzYWdlKTtcblx0ICAgIC8qIGVzbGludC1kaXNhYmxlIG5vLWVtcHR5ICov
XG5cdCAgfSBjYXRjaCAoZSkge31cblx0ICAvKiBlc2xpbnQtZW5hYmxlIG5vLWVtcHR5ICovXG5c
dH1cblxuLyoqKi8gfSxcbi8qIDk3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMs
IF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX2Fzc2ln
biA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdFxuXHR2YXIgZW1wdHlPYmplY3QgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDI0KTtcblx0dmFyIF9pbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDEpO1xuXHRcblx0aWYgKGZhbHNlKSB7XG5cdCAgdmFyIHdhcm5pbmcgPSByZXF1aXJlKCdm
YmpzL2xpYi93YXJuaW5nJyk7XG5cdH1cblx0XG5cdHZhciBNSVhJTlNfS0VZID0gJ21peGlucyc7
XG5cdFxuXHQvLyBIZWxwZXIgZnVuY3Rpb24gdG8gYWxsb3cgdGhlIGNyZWF0aW9uIG9mIGFub255
bW91cyBmdW5jdGlvbnMgd2hpY2ggZG8gbm90XG5cdC8vIGhhdmUgLm5hbWUgc2V0IHRvIHRoZSBu
YW1lIG9mIHRoZSB2YXJpYWJsZSBiZWluZyBhc3NpZ25lZCB0by5cblx0ZnVuY3Rpb24gaWRlbnRp
dHkoZm4pIHtcblx0ICByZXR1cm4gZm47XG5cdH1cblx0XG5cdHZhciBSZWFjdFByb3BUeXBlTG9j
YXRpb25OYW1lcztcblx0aWYgKGZhbHNlKSB7XG5cdCAgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFt
ZXMgPSB7XG5cdCAgICBwcm9wOiAncHJvcCcsXG5cdCAgICBjb250ZXh0OiAnY29udGV4dCcsXG5c
dCAgICBjaGlsZENvbnRleHQ6ICdjaGlsZCBjb250ZXh0J1xuXHQgIH07XG5cdH0gZWxzZSB7XG5c
dCAgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMgPSB7fTtcblx0fVxuXHRcblx0ZnVuY3Rpb24g
ZmFjdG9yeShSZWFjdENvbXBvbmVudCwgaXNWYWxpZEVsZW1lbnQsIFJlYWN0Tm9vcFVwZGF0ZVF1
ZXVlKSB7XG5cdCAgLyoqXG5cdCAgICogUG9saWNpZXMgdGhhdCBkZXNjcmliZSBtZXRob2RzIGlu
IGBSZWFjdENsYXNzSW50ZXJmYWNlYC5cblx0ICAgKi9cblx0XG5cdCAgdmFyIGluamVjdGVkTWl4
aW5zID0gW107XG5cdFxuXHQgIC8qKlxuXHQgICAqIENvbXBvc2l0ZSBjb21wb25lbnRzIGFyZSBo
aWdoZXItbGV2ZWwgY29tcG9uZW50cyB0aGF0IGNvbXBvc2Ugb3RoZXIgY29tcG9zaXRlXG5cdCAg
ICogb3IgaG9zdCBjb21wb25lbnRzLlxuXHQgICAqXG5cdCAgICogVG8gY3JlYXRlIGEgbmV3IHR5
cGUgb2YgYFJlYWN0Q2xhc3NgLCBwYXNzIGEgc3BlY2lmaWNhdGlvbiBvZlxuXHQgICAqIHlvdXIg
bmV3IGNsYXNzIHRvIGBSZWFjdC5jcmVhdGVDbGFzc2AuIFRoZSBvbmx5IHJlcXVpcmVtZW50IG9m
IHlvdXIgY2xhc3Ncblx0ICAgKiBzcGVjaWZpY2F0aW9uIGlzIHRoYXQgeW91IGltcGxlbWVudCBh
IGByZW5kZXJgIG1ldGhvZC5cblx0ICAgKlxuXHQgICAqICAgdmFyIE15Q29tcG9uZW50ID0gUmVh
Y3QuY3JlYXRlQ2xhc3Moe1xuXHQgICAqICAgICByZW5kZXI6IGZ1bmN0aW9uKCkge1xuXHQgICAq
ICAgICAgIHJldHVybiA8ZGl2PkhlbGxvIFdvcmxkPC9kaXY+O1xuXHQgICAqICAgICB9XG5cdCAg
ICogICB9KTtcblx0ICAgKlxuXHQgICAqIFRoZSBjbGFzcyBzcGVjaWZpY2F0aW9uIHN1cHBvcnRz
IGEgc3BlY2lmaWMgcHJvdG9jb2wgb2YgbWV0aG9kcyB0aGF0IGhhdmVcblx0ICAgKiBzcGVjaWFs
IG1lYW5pbmcgKGUuZy4gYHJlbmRlcmApLiBTZWUgYFJlYWN0Q2xhc3NJbnRlcmZhY2VgIGZvclxu
XHQgICAqIG1vcmUgdGhlIGNvbXByZWhlbnNpdmUgcHJvdG9jb2wuIEFueSBvdGhlciBwcm9wZXJ0
aWVzIGFuZCBtZXRob2RzIGluIHRoZVxuXHQgICAqIGNsYXNzIHNwZWNpZmljYXRpb24gd2lsbCBi
ZSBhdmFpbGFibGUgb24gdGhlIHByb3RvdHlwZS5cblx0ICAgKlxuXHQgICAqIEBpbnRlcmZhY2Ug
UmVhY3RDbGFzc0ludGVyZmFjZVxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIHZhciBS
ZWFjdENsYXNzSW50ZXJmYWNlID0ge1xuXHQgICAgLyoqXG5cdCAgICAgKiBBbiBhcnJheSBvZiBN
aXhpbiBvYmplY3RzIHRvIGluY2x1ZGUgd2hlbiBkZWZpbmluZyB5b3VyIGNvbXBvbmVudC5cblx0
ICAgICAqXG5cdCAgICAgKiBAdHlwZSB7YXJyYXl9XG5cdCAgICAgKiBAb3B0aW9uYWxcblx0ICAg
ICAqL1xuXHQgICAgbWl4aW5zOiAnREVGSU5FX01BTlknLFxuXHRcblx0ICAgIC8qKlxuXHQgICAg
ICogQW4gb2JqZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcyBhbmQgbWV0aG9kcyB0aGF0IHNob3Vs
ZCBiZSBkZWZpbmVkIG9uXG5cdCAgICAgKiB0aGUgY29tcG9uZW50J3MgY29uc3RydWN0b3IgaW5z
dGVhZCBvZiBpdHMgcHJvdG90eXBlIChzdGF0aWMgbWV0aG9kcykuXG5cdCAgICAgKlxuXHQgICAg
ICogQHR5cGUge29iamVjdH1cblx0ICAgICAqIEBvcHRpb25hbFxuXHQgICAgICovXG5cdCAgICBz
dGF0aWNzOiAnREVGSU5FX01BTlknLFxuXHRcblx0ICAgIC8qKlxuXHQgICAgICogRGVmaW5pdGlv
biBvZiBwcm9wIHR5cGVzIGZvciB0aGlzIGNvbXBvbmVudC5cblx0ICAgICAqXG5cdCAgICAgKiBA
dHlwZSB7b2JqZWN0fVxuXHQgICAgICogQG9wdGlvbmFsXG5cdCAgICAgKi9cblx0ICAgIHByb3BU
eXBlczogJ0RFRklORV9NQU5ZJyxcblx0XG5cdCAgICAvKipcblx0ICAgICAqIERlZmluaXRpb24g
b2YgY29udGV4dCB0eXBlcyBmb3IgdGhpcyBjb21wb25lbnQuXG5cdCAgICAgKlxuXHQgICAgICog
QHR5cGUge29iamVjdH1cblx0ICAgICAqIEBvcHRpb25hbFxuXHQgICAgICovXG5cdCAgICBjb250
ZXh0VHlwZXM6ICdERUZJTkVfTUFOWScsXG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBEZWZpbml0
aW9uIG9mIGNvbnRleHQgdHlwZXMgdGhpcyBjb21wb25lbnQgc2V0cyBmb3IgaXRzIGNoaWxkcmVu
LlxuXHQgICAgICpcblx0ICAgICAqIEB0eXBlIHtvYmplY3R9XG5cdCAgICAgKiBAb3B0aW9uYWxc
blx0ICAgICAqL1xuXHQgICAgY2hpbGRDb250ZXh0VHlwZXM6ICdERUZJTkVfTUFOWScsXG5cdFxu
XHQgICAgLy8gPT09PSBEZWZpbml0aW9uIG1ldGhvZHMgPT09PVxuXHRcblx0ICAgIC8qKlxuXHQg
ICAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMgbW91bnRlZC4gVmFsdWVzIGluIHRo
ZSBtYXBwaW5nIHdpbGwgYmUgc2V0IG9uXG5cdCAgICAgKiBgdGhpcy5wcm9wc2AgaWYgdGhhdCBw
cm9wIGlzIG5vdCBzcGVjaWZpZWQgKGkuZS4gdXNpbmcgYW4gYGluYCBjaGVjaykuXG5cdCAgICAg
KlxuXHQgICAgICogVGhpcyBtZXRob2QgaXMgaW52b2tlZCBiZWZvcmUgYGdldEluaXRpYWxTdGF0
ZWAgYW5kIHRoZXJlZm9yZSBjYW5ub3QgcmVseVxuXHQgICAgICogb24gYHRoaXMuc3RhdGVgIG9y
IHVzZSBgdGhpcy5zZXRTdGF0ZWAuXG5cdCAgICAgKlxuXHQgICAgICogQHJldHVybiB7b2JqZWN0
fVxuXHQgICAgICogQG9wdGlvbmFsXG5cdCAgICAgKi9cblx0ICAgIGdldERlZmF1bHRQcm9wczog
J0RFRklORV9NQU5ZX01FUkdFRCcsXG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBJbnZva2VkIG9u
Y2UgYmVmb3JlIHRoZSBjb21wb25lbnQgaXMgbW91bnRlZC4gVGhlIHJldHVybiB2YWx1ZSB3aWxs
IGJlIHVzZWRcblx0ICAgICAqIGFzIHRoZSBpbml0aWFsIHZhbHVlIG9mIGB0aGlzLnN0YXRlYC5c
blx0ICAgICAqXG5cdCAgICAgKiAgIGdldEluaXRpYWxTdGF0ZTogZnVuY3Rpb24oKSB7XG5cdCAg
ICAgKiAgICAgcmV0dXJuIHtcblx0ICAgICAqICAgICAgIGlzT246IGZhbHNlLFxuXHQgICAgICog
ICAgICAgZm9vQmF6OiBuZXcgQmF6Rm9vKClcblx0ICAgICAqICAgICB9XG5cdCAgICAgKiAgIH1c
blx0ICAgICAqXG5cdCAgICAgKiBAcmV0dXJuIHtvYmplY3R9XG5cdCAgICAgKiBAb3B0aW9uYWxc
blx0ICAgICAqL1xuXHQgICAgZ2V0SW5pdGlhbFN0YXRlOiAnREVGSU5FX01BTllfTUVSR0VEJyxc
blx0XG5cdCAgICAvKipcblx0ICAgICAqIEByZXR1cm4ge29iamVjdH1cblx0ICAgICAqIEBvcHRp
b25hbFxuXHQgICAgICovXG5cdCAgICBnZXRDaGlsZENvbnRleHQ6ICdERUZJTkVfTUFOWV9NRVJH
RUQnLFxuXHRcblx0ICAgIC8qKlxuXHQgICAgICogVXNlcyBwcm9wcyBmcm9tIGB0aGlzLnByb3Bz
YCBhbmQgc3RhdGUgZnJvbSBgdGhpcy5zdGF0ZWAgdG8gcmVuZGVyIHRoZVxuXHQgICAgICogc3Ry
dWN0dXJlIG9mIHRoZSBjb21wb25lbnQuXG5cdCAgICAgKlxuXHQgICAgICogTm8gZ3VhcmFudGVl
cyBhcmUgbWFkZSBhYm91dCB3aGVuIG9yIGhvdyBvZnRlbiB0aGlzIG1ldGhvZCBpcyBpbnZva2Vk
LCBzb1xuXHQgICAgICogaXQgbXVzdCBub3QgaGF2ZSBzaWRlIGVmZmVjdHMuXG5cdCAgICAgKlxu
XHQgICAgICogICByZW5kZXI6IGZ1bmN0aW9uKCkge1xuXHQgICAgICogICAgIHZhciBuYW1lID0g
dGhpcy5wcm9wcy5uYW1lO1xuXHQgICAgICogICAgIHJldHVybiA8ZGl2PkhlbGxvLCB7bmFtZX0h
PC9kaXY+O1xuXHQgICAgICogICB9XG5cdCAgICAgKlxuXHQgICAgICogQHJldHVybiB7UmVhY3RD
b21wb25lbnR9XG5cdCAgICAgKiBAcmVxdWlyZWRcblx0ICAgICAqL1xuXHQgICAgcmVuZGVyOiAn
REVGSU5FX09OQ0UnLFxuXHRcblx0ICAgIC8vID09PT0gRGVsZWdhdGUgbWV0aG9kcyA9PT09XG5c
dFxuXHQgICAgLyoqXG5cdCAgICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBpbml0
aWFsbHkgY3JlYXRlZCBhbmQgYWJvdXQgdG8gYmUgbW91bnRlZC5cblx0ICAgICAqIFRoaXMgbWF5
IGhhdmUgc2lkZSBlZmZlY3RzLCBidXQgYW55IGV4dGVybmFsIHN1YnNjcmlwdGlvbnMgb3IgZGF0
YSBjcmVhdGVkXG5cdCAgICAgKiBieSB0aGlzIG1ldGhvZCBtdXN0IGJlIGNsZWFuZWQgdXAgaW4g
YGNvbXBvbmVudFdpbGxVbm1vdW50YC5cblx0ICAgICAqXG5cdCAgICAgKiBAb3B0aW9uYWxcblx0
ICAgICAqL1xuXHQgICAgY29tcG9uZW50V2lsbE1vdW50OiAnREVGSU5FX01BTlknLFxuXHRcblx0
ICAgIC8qKlxuXHQgICAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaGFzIGJlZW4gbW91
bnRlZCBhbmQgaGFzIGEgRE9NIHJlcHJlc2VudGF0aW9uLlxuXHQgICAgICogSG93ZXZlciwgdGhl
cmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQgdGhlIERPTSBub2RlIGlzIGluIHRoZSBkb2N1bWVudC5c
blx0ICAgICAqXG5cdCAgICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBvcGVyYXRl
IG9uIHRoZSBET00gd2hlbiB0aGUgY29tcG9uZW50IGhhc1xuXHQgICAgICogYmVlbiBtb3VudGVk
IChpbml0aWFsaXplZCBhbmQgcmVuZGVyZWQpIGZvciB0aGUgZmlyc3QgdGltZS5cblx0ICAgICAq
XG5cdCAgICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IHJvb3ROb2RlIERPTSBlbGVtZW50IHJlcHJl
c2VudGluZyB0aGUgY29tcG9uZW50LlxuXHQgICAgICogQG9wdGlvbmFsXG5cdCAgICAgKi9cblx0
ICAgIGNvbXBvbmVudERpZE1vdW50OiAnREVGSU5FX01BTlknLFxuXHRcblx0ICAgIC8qKlxuXHQg
ICAgICogSW52b2tlZCBiZWZvcmUgdGhlIGNvbXBvbmVudCByZWNlaXZlcyBuZXcgcHJvcHMuXG5c
dCAgICAgKlxuXHQgICAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gcmVhY3QgdG8g
YSBwcm9wIHRyYW5zaXRpb24gYnkgdXBkYXRpbmcgdGhlXG5cdCAgICAgKiBzdGF0ZSB1c2luZyBg
dGhpcy5zZXRTdGF0ZWAuIEN1cnJlbnQgcHJvcHMgYXJlIGFjY2Vzc2VkIHZpYSBgdGhpcy5wcm9w
c2AuXG5cdCAgICAgKlxuXHQgICAgICogICBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzOiBmdW5j
dGlvbihuZXh0UHJvcHMsIG5leHRDb250ZXh0KSB7XG5cdCAgICAgKiAgICAgdGhpcy5zZXRTdGF0
ZSh7XG5cdCAgICAgKiAgICAgICBsaWtlc0luY3JlYXNpbmc6IG5leHRQcm9wcy5saWtlQ291bnQg
PiB0aGlzLnByb3BzLmxpa2VDb3VudFxuXHQgICAgICogICAgIH0pO1xuXHQgICAgICogICB9XG5c
dCAgICAgKlxuXHQgICAgICogTk9URTogVGhlcmUgaXMgbm8gZXF1aXZhbGVudCBgY29tcG9uZW50
V2lsbFJlY2VpdmVTdGF0ZWAuIEFuIGluY29taW5nIHByb3Bcblx0ICAgICAqIHRyYW5zaXRpb24g
bWF5IGNhdXNlIGEgc3RhdGUgY2hhbmdlLCBidXQgdGhlIG9wcG9zaXRlIGlzIG5vdCB0cnVlLiBJ
ZiB5b3Vcblx0ICAgICAqIG5lZWQgaXQsIHlvdSBhcmUgcHJvYmFibHkgbG9va2luZyBmb3IgYGNv
bXBvbmVudFdpbGxVcGRhdGVgLlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7b2JqZWN0fSBu
ZXh0UHJvcHNcblx0ICAgICAqIEBvcHRpb25hbFxuXHQgICAgICovXG5cdCAgICBjb21wb25lbnRX
aWxsUmVjZWl2ZVByb3BzOiAnREVGSU5FX01BTlknLFxuXHRcblx0ICAgIC8qKlxuXHQgICAgICog
SW52b2tlZCB3aGlsZSBkZWNpZGluZyBpZiB0aGUgY29tcG9uZW50IHNob3VsZCBiZSB1cGRhdGVk
IGFzIGEgcmVzdWx0IG9mXG5cdCAgICAgKiByZWNlaXZpbmcgbmV3IHByb3BzLCBzdGF0ZSBhbmQv
b3IgY29udGV4dC5cblx0ICAgICAqXG5cdCAgICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0
eSB0byBgcmV0dXJuIGZhbHNlYCB3aGVuIHlvdSdyZSBjZXJ0YWluIHRoYXQgdGhlXG5cdCAgICAg
KiB0cmFuc2l0aW9uIHRvIHRoZSBuZXcgcHJvcHMvc3RhdGUvY29udGV4dCB3aWxsIG5vdCByZXF1
aXJlIGEgY29tcG9uZW50XG5cdCAgICAgKiB1cGRhdGUuXG5cdCAgICAgKlxuXHQgICAgICogICBz
aG91bGRDb21wb25lbnRVcGRhdGU6IGZ1bmN0aW9uKG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0
Q29udGV4dCkge1xuXHQgICAgICogICAgIHJldHVybiAhZXF1YWwobmV4dFByb3BzLCB0aGlzLnBy
b3BzKSB8fFxuXHQgICAgICogICAgICAgIWVxdWFsKG5leHRTdGF0ZSwgdGhpcy5zdGF0ZSkgfHxc
blx0ICAgICAqICAgICAgICFlcXVhbChuZXh0Q29udGV4dCwgdGhpcy5jb250ZXh0KTtcblx0ICAg
ICAqICAgfVxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHNcblx0
ICAgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dFN0YXRlXG5cdCAgICAgKiBAcGFyYW0gez9vYmpl
Y3R9IG5leHRDb250ZXh0XG5cdCAgICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBj
b21wb25lbnQgc2hvdWxkIHVwZGF0ZS5cblx0ICAgICAqIEBvcHRpb25hbFxuXHQgICAgICovXG5c
dCAgICBzaG91bGRDb21wb25lbnRVcGRhdGU6ICdERUZJTkVfT05DRScsXG5cdFxuXHQgICAgLyoq
XG5cdCAgICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBhYm91dCB0byB1cGRhdGUg
ZHVlIHRvIGEgdHJhbnNpdGlvbiBmcm9tXG5cdCAgICAgKiBgdGhpcy5wcm9wc2AsIGB0aGlzLnN0
YXRlYCBhbmQgYHRoaXMuY29udGV4dGAgdG8gYG5leHRQcm9wc2AsIGBuZXh0U3RhdGVgXG5cdCAg
ICAgKiBhbmQgYG5leHRDb250ZXh0YC5cblx0ICAgICAqXG5cdCAgICAgKiBVc2UgdGhpcyBhcyBh
biBvcHBvcnR1bml0eSB0byBwZXJmb3JtIHByZXBhcmF0aW9uIGJlZm9yZSBhbiB1cGRhdGUgb2Nj
dXJzLlxuXHQgICAgICpcblx0ICAgICAqIE5PVEU6IFlvdSAqKmNhbm5vdCoqIHVzZSBgdGhpcy5z
ZXRTdGF0ZSgpYCBpbiB0aGlzIG1ldGhvZC5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge29i
amVjdH0gbmV4dFByb3BzXG5cdCAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRTdGF0ZVxuXHQg
ICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0Q29udGV4dFxuXHQgICAgICogQHBhcmFtIHtSZWFj
dFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuXHQgICAgICogQG9wdGlvbmFsXG5c
dCAgICAgKi9cblx0ICAgIGNvbXBvbmVudFdpbGxVcGRhdGU6ICdERUZJTkVfTUFOWScsXG5cdFxu
XHQgICAgLyoqXG5cdCAgICAgKiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCdzIERPTSByZXBy
ZXNlbnRhdGlvbiBoYXMgYmVlbiB1cGRhdGVkLlxuXHQgICAgICpcblx0ICAgICAqIFVzZSB0aGlz
IGFzIGFuIG9wcG9ydHVuaXR5IHRvIG9wZXJhdGUgb24gdGhlIERPTSB3aGVuIHRoZSBjb21wb25l
bnQgaGFzXG5cdCAgICAgKiBiZWVuIHVwZGF0ZWQuXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFt
IHtvYmplY3R9IHByZXZQcm9wc1xuXHQgICAgICogQHBhcmFtIHs/b2JqZWN0fSBwcmV2U3RhdGVc
blx0ICAgICAqIEBwYXJhbSB7P29iamVjdH0gcHJldkNvbnRleHRcblx0ICAgICAqIEBwYXJhbSB7
RE9NRWxlbWVudH0gcm9vdE5vZGUgRE9NIGVsZW1lbnQgcmVwcmVzZW50aW5nIHRoZSBjb21wb25l
bnQuXG5cdCAgICAgKiBAb3B0aW9uYWxcblx0ICAgICAqL1xuXHQgICAgY29tcG9uZW50RGlkVXBk
YXRlOiAnREVGSU5FX01BTlknLFxuXHRcblx0ICAgIC8qKlxuXHQgICAgICogSW52b2tlZCB3aGVu
IHRoZSBjb21wb25lbnQgaXMgYWJvdXQgdG8gYmUgcmVtb3ZlZCBmcm9tIGl0cyBwYXJlbnQgYW5k
IGhhdmVcblx0ICAgICAqIGl0cyBET00gcmVwcmVzZW50YXRpb24gZGVzdHJveWVkLlxuXHQgICAg
ICpcblx0ICAgICAqIFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIGRlYWxsb2NhdGUgYW55
IGV4dGVybmFsIHJlc291cmNlcy5cblx0ICAgICAqXG5cdCAgICAgKiBOT1RFOiBUaGVyZSBpcyBu
byBgY29tcG9uZW50RGlkVW5tb3VudGAgc2luY2UgeW91ciBjb21wb25lbnQgd2lsbCBoYXZlIGJl
ZW5cblx0ICAgICAqIGRlc3Ryb3llZCBieSB0aGF0IHBvaW50LlxuXHQgICAgICpcblx0ICAgICAq
IEBvcHRpb25hbFxuXHQgICAgICovXG5cdCAgICBjb21wb25lbnRXaWxsVW5tb3VudDogJ0RFRklO
RV9NQU5ZJyxcblx0XG5cdCAgICAvLyA9PT09IEFkdmFuY2VkIG1ldGhvZHMgPT09PVxuXHRcblx0
ICAgIC8qKlxuXHQgICAgICogVXBkYXRlcyB0aGUgY29tcG9uZW50J3MgY3VycmVudGx5IG1vdW50
ZWQgRE9NIHJlcHJlc2VudGF0aW9uLlxuXHQgICAgICpcblx0ICAgICAqIEJ5IGRlZmF1bHQsIHRo
aXMgaW1wbGVtZW50cyBSZWFjdCdzIHJlbmRlcmluZyBhbmQgcmVjb25jaWxpYXRpb24gYWxnb3Jp
dGhtLlxuXHQgICAgICogU29waGlzdGljYXRlZCBjbGllbnRzIG1heSB3aXNoIHRvIG92ZXJyaWRl
IHRoaXMuXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0
aW9ufSB0cmFuc2FjdGlvblxuXHQgICAgICogQGludGVybmFsXG5cdCAgICAgKiBAb3ZlcnJpZGFi
bGVcblx0ICAgICAqL1xuXHQgICAgdXBkYXRlQ29tcG9uZW50OiAnT1ZFUlJJREVfQkFTRSdcblx0
ICB9O1xuXHRcblx0ICAvKipcblx0ICAgKiBNYXBwaW5nIGZyb20gY2xhc3Mgc3BlY2lmaWNhdGlv
biBrZXlzIHRvIHNwZWNpYWwgcHJvY2Vzc2luZyBmdW5jdGlvbnMuXG5cdCAgICpcblx0ICAgKiBB
bHRob3VnaCB0aGVzZSBhcmUgZGVjbGFyZWQgbGlrZSBpbnN0YW5jZSBwcm9wZXJ0aWVzIGluIHRo
ZSBzcGVjaWZpY2F0aW9uXG5cdCAgICogd2hlbiBkZWZpbmluZyBjbGFzc2VzIHVzaW5nIGBSZWFj
dC5jcmVhdGVDbGFzc2AsIHRoZXkgYXJlIGFjdHVhbGx5IHN0YXRpY1xuXHQgICAqIGFuZCBhcmUg
YWNjZXNzaWJsZSBvbiB0aGUgY29uc3RydWN0b3IgaW5zdGVhZCBvZiB0aGUgcHJvdG90eXBlLiBE
ZXNwaXRlXG5cdCAgICogYmVpbmcgc3RhdGljLCB0aGV5IG11c3QgYmUgZGVmaW5lZCBvdXRzaWRl
IG9mIHRoZSBcInN0YXRpY3NcIiBrZXkgdW5kZXJcblx0ICAgKiB3aGljaCBhbGwgb3RoZXIgc3Rh
dGljIG1ldGhvZHMgYXJlIGRlZmluZWQuXG5cdCAgICovXG5cdCAgdmFyIFJFU0VSVkVEX1NQRUNf
S0VZUyA9IHtcblx0ICAgIGRpc3BsYXlOYW1lOiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgZGlzcGxh
eU5hbWUpIHtcblx0ICAgICAgQ29uc3RydWN0b3IuZGlzcGxheU5hbWUgPSBkaXNwbGF5TmFtZTtc
blx0ICAgIH0sXG5cdCAgICBtaXhpbnM6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBtaXhpbnMpIHtc
blx0ICAgICAgaWYgKG1peGlucykge1xuXHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWl4
aW5zLmxlbmd0aDsgaSsrKSB7XG5cdCAgICAgICAgICBtaXhTcGVjSW50b0NvbXBvbmVudChDb25z
dHJ1Y3RvciwgbWl4aW5zW2ldKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH0sXG5c
dCAgICBjaGlsZENvbnRleHRUeXBlczogZnVuY3Rpb24oQ29uc3RydWN0b3IsIGNoaWxkQ29udGV4
dFR5cGVzKSB7XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIHZhbGlkYXRlVHlwZURl
ZihDb25zdHJ1Y3RvciwgY2hpbGRDb250ZXh0VHlwZXMsICdjaGlsZENvbnRleHQnKTtcblx0ICAg
ICAgfVxuXHQgICAgICBDb25zdHJ1Y3Rvci5jaGlsZENvbnRleHRUeXBlcyA9IF9hc3NpZ24oXG5c
dCAgICAgICAge30sXG5cdCAgICAgICAgQ29uc3RydWN0b3IuY2hpbGRDb250ZXh0VHlwZXMsXG5c
dCAgICAgICAgY2hpbGRDb250ZXh0VHlwZXNcblx0ICAgICAgKTtcblx0ICAgIH0sXG5cdCAgICBj
b250ZXh0VHlwZXM6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBjb250ZXh0VHlwZXMpIHtcblx0ICAg
ICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCBj
b250ZXh0VHlwZXMsICdjb250ZXh0Jyk7XG5cdCAgICAgIH1cblx0ICAgICAgQ29uc3RydWN0b3Iu
Y29udGV4dFR5cGVzID0gX2Fzc2lnbihcblx0ICAgICAgICB7fSxcblx0ICAgICAgICBDb25zdHJ1
Y3Rvci5jb250ZXh0VHlwZXMsXG5cdCAgICAgICAgY29udGV4dFR5cGVzXG5cdCAgICAgICk7XG5c
dCAgICB9LFxuXHQgICAgLyoqXG5cdCAgICAgKiBTcGVjaWFsIGNhc2UgZ2V0RGVmYXVsdFByb3Bz
IHdoaWNoIHNob3VsZCBtb3ZlIGludG8gc3RhdGljcyBidXQgcmVxdWlyZXNcblx0ICAgICAqIGF1
dG9tYXRpYyBtZXJnaW5nLlxuXHQgICAgICovXG5cdCAgICBnZXREZWZhdWx0UHJvcHM6IGZ1bmN0
aW9uKENvbnN0cnVjdG9yLCBnZXREZWZhdWx0UHJvcHMpIHtcblx0ICAgICAgaWYgKENvbnN0cnVj
dG9yLmdldERlZmF1bHRQcm9wcykge1xuXHQgICAgICAgIENvbnN0cnVjdG9yLmdldERlZmF1bHRQ
cm9wcyA9IGNyZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uKFxuXHQgICAgICAgICAgQ29uc3RydWN0
b3IuZ2V0RGVmYXVsdFByb3BzLFxuXHQgICAgICAgICAgZ2V0RGVmYXVsdFByb3BzXG5cdCAgICAg
ICAgKTtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICBDb25zdHJ1Y3Rvci5nZXREZWZhdWx0
UHJvcHMgPSBnZXREZWZhdWx0UHJvcHM7XG5cdCAgICAgIH1cblx0ICAgIH0sXG5cdCAgICBwcm9w
VHlwZXM6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBwcm9wVHlwZXMpIHtcblx0ICAgICAgaWYgKGZh
bHNlKSB7XG5cdCAgICAgICAgdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCBwcm9wVHlwZXMs
ICdwcm9wJyk7XG5cdCAgICAgIH1cblx0ICAgICAgQ29uc3RydWN0b3IucHJvcFR5cGVzID0gX2Fz
c2lnbih7fSwgQ29uc3RydWN0b3IucHJvcFR5cGVzLCBwcm9wVHlwZXMpO1xuXHQgICAgfSxcblx0
ICAgIHN0YXRpY3M6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBzdGF0aWNzKSB7XG5cdCAgICAgIG1p
eFN0YXRpY1NwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBzdGF0aWNzKTtcblx0ICAgIH0s
XG5cdCAgICBhdXRvYmluZDogZnVuY3Rpb24oKSB7fVxuXHQgIH07XG5cdFxuXHQgIGZ1bmN0aW9u
IHZhbGlkYXRlVHlwZURlZihDb25zdHJ1Y3RvciwgdHlwZURlZiwgbG9jYXRpb24pIHtcblx0ICAg
IGZvciAodmFyIHByb3BOYW1lIGluIHR5cGVEZWYpIHtcblx0ICAgICAgaWYgKHR5cGVEZWYuaGFz
T3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG5cdCAgICAgICAgLy8gdXNlIGEgd2FybmluZyBpbnN0
ZWFkIG9mIGFuIF9pbnZhcmlhbnQgc28gY29tcG9uZW50c1xuXHQgICAgICAgIC8vIGRvbid0IHNo
b3cgdXAgaW4gcHJvZCBidXQgb25seSBpbiBfX0RFVl9fXG5cdCAgICAgICAgaWYgKGZhbHNlKSB7
XG5cdCAgICAgICAgICB3YXJuaW5nKFxuXHQgICAgICAgICAgICB0eXBlb2YgdHlwZURlZltwcm9w
TmFtZV0gPT09ICdmdW5jdGlvbicsXG5cdCAgICAgICAgICAgICclczogJXMgdHlwZSBgJXNgIGlz
IGludmFsaWQ7IGl0IG11c3QgYmUgYSBmdW5jdGlvbiwgdXN1YWxseSBmcm9tICcgK1xuXHQgICAg
ICAgICAgICAgICdSZWFjdC5Qcm9wVHlwZXMuJyxcblx0ICAgICAgICAgICAgQ29uc3RydWN0b3Iu
ZGlzcGxheU5hbWUgfHwgJ1JlYWN0Q2xhc3MnLFxuXHQgICAgICAgICAgICBSZWFjdFByb3BUeXBl
TG9jYXRpb25OYW1lc1tsb2NhdGlvbl0sXG5cdCAgICAgICAgICAgIHByb3BOYW1lXG5cdCAgICAg
ICAgICApO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAg
ZnVuY3Rpb24gdmFsaWRhdGVNZXRob2RPdmVycmlkZShpc0FscmVhZHlEZWZpbmVkLCBuYW1lKSB7
XG5cdCAgICB2YXIgc3BlY1BvbGljeSA9IFJlYWN0Q2xhc3NJbnRlcmZhY2UuaGFzT3duUHJvcGVy
dHkobmFtZSlcblx0ICAgICAgPyBSZWFjdENsYXNzSW50ZXJmYWNlW25hbWVdXG5cdCAgICAgIDog
bnVsbDtcblx0XG5cdCAgICAvLyBEaXNhbGxvdyBvdmVycmlkaW5nIG9mIGJhc2UgY2xhc3MgbWV0
aG9kcyB1bmxlc3MgZXhwbGljaXRseSBhbGxvd2VkLlxuXHQgICAgaWYgKFJlYWN0Q2xhc3NNaXhp
bi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuXHQgICAgICBfaW52YXJpYW50KFxuXHQgICAgICAg
IHNwZWNQb2xpY3kgPT09ICdPVkVSUklERV9CQVNFJyxcblx0ICAgICAgICAnUmVhY3RDbGFzc0lu
dGVyZmFjZTogWW91IGFyZSBhdHRlbXB0aW5nIHRvIG92ZXJyaWRlICcgK1xuXHQgICAgICAgICAg
J2Alc2AgZnJvbSB5b3VyIGNsYXNzIHNwZWNpZmljYXRpb24uIEVuc3VyZSB0aGF0IHlvdXIgbWV0
aG9kIG5hbWVzICcgK1xuXHQgICAgICAgICAgJ2RvIG5vdCBvdmVybGFwIHdpdGggUmVhY3QgbWV0
aG9kcy4nLFxuXHQgICAgICAgIG5hbWVcblx0ICAgICAgKTtcblx0ICAgIH1cblx0XG5cdCAgICAv
LyBEaXNhbGxvdyBkZWZpbmluZyBtZXRob2RzIG1vcmUgdGhhbiBvbmNlIHVubGVzcyBleHBsaWNp
dGx5IGFsbG93ZWQuXG5cdCAgICBpZiAoaXNBbHJlYWR5RGVmaW5lZCkge1xuXHQgICAgICBfaW52
YXJpYW50KFxuXHQgICAgICAgIHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWScgfHwgc3BlY1Bv
bGljeSA9PT0gJ0RFRklORV9NQU5ZX01FUkdFRCcsXG5cdCAgICAgICAgJ1JlYWN0Q2xhc3NJbnRl
cmZhY2U6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBkZWZpbmUgJyArXG5cdCAgICAgICAgICAnYCVz
YCBvbiB5b3VyIGNvbXBvbmVudCBtb3JlIHRoYW4gb25jZS4gVGhpcyBjb25mbGljdCBtYXkgYmUg
ZHVlICcgK1xuXHQgICAgICAgICAgJ3RvIGEgbWl4aW4uJyxcblx0ICAgICAgICBuYW1lXG5cdCAg
ICAgICk7XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0ICAvKipcblx0ICAgKiBNaXhpbiBoZWxwZXIg
d2hpY2ggaGFuZGxlcyBwb2xpY3kgdmFsaWRhdGlvbiBhbmQgcmVzZXJ2ZWRcblx0ICAgKiBzcGVj
aWZpY2F0aW9uIGtleXMgd2hlbiBidWlsZGluZyBSZWFjdCBjbGFzc2VzLlxuXHQgICAqL1xuXHQg
IGZ1bmN0aW9uIG1peFNwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBzcGVjKSB7XG5cdCAg
ICBpZiAoIXNwZWMpIHtcblx0ICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgdmFyIHR5cGVv
ZlNwZWMgPSB0eXBlb2Ygc3BlYztcblx0ICAgICAgICB2YXIgaXNNaXhpblZhbGlkID0gdHlwZW9m
U3BlYyA9PT0gJ29iamVjdCcgJiYgc3BlYyAhPT0gbnVsbDtcblx0XG5cdCAgICAgICAgaWYgKHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcblx0ICAgICAgICAgIHdhcm5p
bmcoXG5cdCAgICAgICAgICAgIGlzTWl4aW5WYWxpZCxcblx0ICAgICAgICAgICAgXCIlczogWW91
J3JlIGF0dGVtcHRpbmcgdG8gaW5jbHVkZSBhIG1peGluIHRoYXQgaXMgZWl0aGVyIG51bGwgXCIg
K1xuXHQgICAgICAgICAgICAgICdvciBub3QgYW4gb2JqZWN0LiBDaGVjayB0aGUgbWl4aW5zIGlu
Y2x1ZGVkIGJ5IHRoZSBjb21wb25lbnQsICcgK1xuXHQgICAgICAgICAgICAgICdhcyB3ZWxsIGFz
IGFueSBtaXhpbnMgdGhleSBpbmNsdWRlIHRoZW1zZWx2ZXMuICcgK1xuXHQgICAgICAgICAgICAg
ICdFeHBlY3RlZCBvYmplY3QgYnV0IGdvdCAlcy4nLFxuXHQgICAgICAgICAgICBDb25zdHJ1Y3Rv
ci5kaXNwbGF5TmFtZSB8fCAnUmVhY3RDbGFzcycsXG5cdCAgICAgICAgICAgIHNwZWMgPT09IG51
bGwgPyBudWxsIDogdHlwZW9mU3BlY1xuXHQgICAgICAgICAgKTtcblx0ICAgICAgICB9XG5cdCAg
ICAgIH1cblx0XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0XG5cdCAgICBfaW52YXJpYW50
KFxuXHQgICAgICB0eXBlb2Ygc3BlYyAhPT0gJ2Z1bmN0aW9uJyxcblx0ICAgICAgXCJSZWFjdENs
YXNzOiBZb3UncmUgYXR0ZW1wdGluZyB0byBcIiArXG5cdCAgICAgICAgJ3VzZSBhIGNvbXBvbmVu
dCBjbGFzcyBvciBmdW5jdGlvbiBhcyBhIG1peGluLiBJbnN0ZWFkLCBqdXN0IHVzZSBhICcgK1xu
XHQgICAgICAgICdyZWd1bGFyIG9iamVjdC4nXG5cdCAgICApO1xuXHQgICAgX2ludmFyaWFudChc
blx0ICAgICAgIWlzVmFsaWRFbGVtZW50KHNwZWMpLFxuXHQgICAgICBcIlJlYWN0Q2xhc3M6IFlv
dSdyZSBhdHRlbXB0aW5nIHRvIFwiICtcblx0ICAgICAgICAndXNlIGEgY29tcG9uZW50IGFzIGEg
bWl4aW4uIEluc3RlYWQsIGp1c3QgdXNlIGEgcmVndWxhciBvYmplY3QuJ1xuXHQgICAgKTtcblx0
XG5cdCAgICB2YXIgcHJvdG8gPSBDb25zdHJ1Y3Rvci5wcm90b3R5cGU7XG5cdCAgICB2YXIgYXV0
b0JpbmRQYWlycyA9IHByb3RvLl9fcmVhY3RBdXRvQmluZFBhaXJzO1xuXHRcblx0ICAgIC8vIEJ5
IGhhbmRsaW5nIG1peGlucyBiZWZvcmUgYW55IG90aGVyIHByb3BlcnRpZXMsIHdlIGVuc3VyZSB0
aGUgc2FtZVxuXHQgICAgLy8gY2hhaW5pbmcgb3JkZXIgaXMgYXBwbGllZCB0byBtZXRob2RzIHdp
dGggREVGSU5FX01BTlkgcG9saWN5LCB3aGV0aGVyXG5cdCAgICAvLyBtaXhpbnMgYXJlIGxpc3Rl
ZCBiZWZvcmUgb3IgYWZ0ZXIgdGhlc2UgbWV0aG9kcyBpbiB0aGUgc3BlYy5cblx0ICAgIGlmIChz
cGVjLmhhc093blByb3BlcnR5KE1JWElOU19LRVkpKSB7XG5cdCAgICAgIFJFU0VSVkVEX1NQRUNf
S0VZUy5taXhpbnMoQ29uc3RydWN0b3IsIHNwZWMubWl4aW5zKTtcblx0ICAgIH1cblx0XG5cdCAg
ICBmb3IgKHZhciBuYW1lIGluIHNwZWMpIHtcblx0ICAgICAgaWYgKCFzcGVjLmhhc093blByb3Bl
cnR5KG5hbWUpKSB7XG5cdCAgICAgICAgY29udGludWU7XG5cdCAgICAgIH1cblx0XG5cdCAgICAg
IGlmIChuYW1lID09PSBNSVhJTlNfS0VZKSB7XG5cdCAgICAgICAgLy8gV2UgaGF2ZSBhbHJlYWR5
IGhhbmRsZWQgbWl4aW5zIGluIGEgc3BlY2lhbCBjYXNlIGFib3ZlLlxuXHQgICAgICAgIGNvbnRp
bnVlO1xuXHQgICAgICB9XG5cdFxuXHQgICAgICB2YXIgcHJvcGVydHkgPSBzcGVjW25hbWVdO1xu
XHQgICAgICB2YXIgaXNBbHJlYWR5RGVmaW5lZCA9IHByb3RvLmhhc093blByb3BlcnR5KG5hbWUp
O1xuXHQgICAgICB2YWxpZGF0ZU1ldGhvZE92ZXJyaWRlKGlzQWxyZWFkeURlZmluZWQsIG5hbWUp
O1xuXHRcblx0ICAgICAgaWYgKFJFU0VSVkVEX1NQRUNfS0VZUy5oYXNPd25Qcm9wZXJ0eShuYW1l
KSkge1xuXHQgICAgICAgIFJFU0VSVkVEX1NQRUNfS0VZU1tuYW1lXShDb25zdHJ1Y3RvciwgcHJv
cGVydHkpO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIC8vIFNldHVwIG1ldGhvZHMgb24g
cHJvdG90eXBlOlxuXHQgICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgbWVtYmVyIG1ldGhvZHMgc2hv
dWxkIG5vdCBiZSBhdXRvbWF0aWNhbGx5IGJvdW5kOlxuXHQgICAgICAgIC8vIDEuIEV4cGVjdGVk
IFJlYWN0Q2xhc3MgbWV0aG9kcyAoaW4gdGhlIFwiaW50ZXJmYWNlXCIpLlxuXHQgICAgICAgIC8v
IDIuIE92ZXJyaWRkZW4gbWV0aG9kcyAodGhhdCB3ZXJlIG1peGVkIGluKS5cblx0ICAgICAgICB2
YXIgaXNSZWFjdENsYXNzTWV0aG9kID0gUmVhY3RDbGFzc0ludGVyZmFjZS5oYXNPd25Qcm9wZXJ0
eShuYW1lKTtcblx0ICAgICAgICB2YXIgaXNGdW5jdGlvbiA9IHR5cGVvZiBwcm9wZXJ0eSA9PT0g
J2Z1bmN0aW9uJztcblx0ICAgICAgICB2YXIgc2hvdWxkQXV0b0JpbmQgPVxuXHQgICAgICAgICAg
aXNGdW5jdGlvbiAmJlxuXHQgICAgICAgICAgIWlzUmVhY3RDbGFzc01ldGhvZCAmJlxuXHQgICAg
ICAgICAgIWlzQWxyZWFkeURlZmluZWQgJiZcblx0ICAgICAgICAgIHNwZWMuYXV0b2JpbmQgIT09
IGZhbHNlO1xuXHRcblx0ICAgICAgICBpZiAoc2hvdWxkQXV0b0JpbmQpIHtcblx0ICAgICAgICAg
IGF1dG9CaW5kUGFpcnMucHVzaChuYW1lLCBwcm9wZXJ0eSk7XG5cdCAgICAgICAgICBwcm90b1tu
YW1lXSA9IHByb3BlcnR5O1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICBpZiAoaXNB
bHJlYWR5RGVmaW5lZCkge1xuXHQgICAgICAgICAgICB2YXIgc3BlY1BvbGljeSA9IFJlYWN0Q2xh
c3NJbnRlcmZhY2VbbmFtZV07XG5cdFxuXHQgICAgICAgICAgICAvLyBUaGVzZSBjYXNlcyBzaG91
bGQgYWxyZWFkeSBiZSBjYXVnaHQgYnkgdmFsaWRhdGVNZXRob2RPdmVycmlkZS5cblx0ICAgICAg
ICAgICAgX2ludmFyaWFudChcblx0ICAgICAgICAgICAgICBpc1JlYWN0Q2xhc3NNZXRob2QgJiZc
blx0ICAgICAgICAgICAgICAgIChzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTllfTUVSR0VEJyB8
fFxuXHQgICAgICAgICAgICAgICAgICBzcGVjUG9saWN5ID09PSAnREVGSU5FX01BTlknKSxcblx0
ICAgICAgICAgICAgICAnUmVhY3RDbGFzczogVW5leHBlY3RlZCBzcGVjIHBvbGljeSAlcyBmb3Ig
a2V5ICVzICcgK1xuXHQgICAgICAgICAgICAgICAgJ3doZW4gbWl4aW5nIGluIGNvbXBvbmVudCBz
cGVjcy4nLFxuXHQgICAgICAgICAgICAgIHNwZWNQb2xpY3ksXG5cdCAgICAgICAgICAgICAgbmFt
ZVxuXHQgICAgICAgICAgICApO1xuXHRcblx0ICAgICAgICAgICAgLy8gRm9yIG1ldGhvZHMgd2hp
Y2ggYXJlIGRlZmluZWQgbW9yZSB0aGFuIG9uY2UsIGNhbGwgdGhlIGV4aXN0aW5nXG5cdCAgICAg
ICAgICAgIC8vIG1ldGhvZHMgYmVmb3JlIGNhbGxpbmcgdGhlIG5ldyBwcm9wZXJ0eSwgbWVyZ2lu
ZyBpZiBhcHByb3ByaWF0ZS5cblx0ICAgICAgICAgICAgaWYgKHNwZWNQb2xpY3kgPT09ICdERUZJ
TkVfTUFOWV9NRVJHRUQnKSB7XG5cdCAgICAgICAgICAgICAgcHJvdG9bbmFtZV0gPSBjcmVhdGVN
ZXJnZWRSZXN1bHRGdW5jdGlvbihwcm90b1tuYW1lXSwgcHJvcGVydHkpO1xuXHQgICAgICAgICAg
ICB9IGVsc2UgaWYgKHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWScpIHtcblx0ICAgICAgICAg
ICAgICBwcm90b1tuYW1lXSA9IGNyZWF0ZUNoYWluZWRGdW5jdGlvbihwcm90b1tuYW1lXSwgcHJv
cGVydHkpO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAg
ICAgICBwcm90b1tuYW1lXSA9IHByb3BlcnR5O1xuXHQgICAgICAgICAgICBpZiAoZmFsc2UpIHtc
blx0ICAgICAgICAgICAgICAvLyBBZGQgdmVyYm9zZSBkaXNwbGF5TmFtZSB0byB0aGUgZnVuY3Rp
b24sIHdoaWNoIGhlbHBzIHdoZW4gbG9va2luZ1xuXHQgICAgICAgICAgICAgIC8vIGF0IHByb2Zp
bGluZyB0b29scy5cblx0ICAgICAgICAgICAgICBpZiAodHlwZW9mIHByb3BlcnR5ID09PSAnZnVu
Y3Rpb24nICYmIHNwZWMuZGlzcGxheU5hbWUpIHtcblx0ICAgICAgICAgICAgICAgIHByb3RvW25h
bWVdLmRpc3BsYXlOYW1lID0gc3BlYy5kaXNwbGF5TmFtZSArICdfJyArIG5hbWU7XG5cdCAgICAg
ICAgICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxu
XHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0ICBmdW5jdGlvbiBtaXhTdGF0aWNTcGVj
SW50b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwgc3RhdGljcykge1xuXHQgICAgaWYgKCFzdGF0aWNz
KSB7XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0ICAgIGZvciAodmFyIG5hbWUgaW4gc3Rh
dGljcykge1xuXHQgICAgICB2YXIgcHJvcGVydHkgPSBzdGF0aWNzW25hbWVdO1xuXHQgICAgICBp
ZiAoIXN0YXRpY3MuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcblx0ICAgICAgICBjb250aW51ZTtc
blx0ICAgICAgfVxuXHRcblx0ICAgICAgdmFyIGlzUmVzZXJ2ZWQgPSBuYW1lIGluIFJFU0VSVkVE
X1NQRUNfS0VZUztcblx0ICAgICAgX2ludmFyaWFudChcblx0ICAgICAgICAhaXNSZXNlcnZlZCxc
blx0ICAgICAgICAnUmVhY3RDbGFzczogWW91IGFyZSBhdHRlbXB0aW5nIHRvIGRlZmluZSBhIHJl
c2VydmVkICcgK1xuXHQgICAgICAgICAgJ3Byb3BlcnR5LCBgJXNgLCB0aGF0IHNob3VsZG5cXCd0
IGJlIG9uIHRoZSBcInN0YXRpY3NcIiBrZXkuIERlZmluZSBpdCAnICtcblx0ICAgICAgICAgICdh
cyBhbiBpbnN0YW5jZSBwcm9wZXJ0eSBpbnN0ZWFkOyBpdCB3aWxsIHN0aWxsIGJlIGFjY2Vzc2li
bGUgb24gdGhlICcgK1xuXHQgICAgICAgICAgJ2NvbnN0cnVjdG9yLicsXG5cdCAgICAgICAgbmFt
ZVxuXHQgICAgICApO1xuXHRcblx0ICAgICAgdmFyIGlzSW5oZXJpdGVkID0gbmFtZSBpbiBDb25z
dHJ1Y3Rvcjtcblx0ICAgICAgX2ludmFyaWFudChcblx0ICAgICAgICAhaXNJbmhlcml0ZWQsXG5c
dCAgICAgICAgJ1JlYWN0Q2xhc3M6IFlvdSBhcmUgYXR0ZW1wdGluZyB0byBkZWZpbmUgJyArXG5c
dCAgICAgICAgICAnYCVzYCBvbiB5b3VyIGNvbXBvbmVudCBtb3JlIHRoYW4gb25jZS4gVGhpcyBj
b25mbGljdCBtYXkgYmUgJyArXG5cdCAgICAgICAgICAnZHVlIHRvIGEgbWl4aW4uJyxcblx0ICAg
ICAgICBuYW1lXG5cdCAgICAgICk7XG5cdCAgICAgIENvbnN0cnVjdG9yW25hbWVdID0gcHJvcGVy
dHk7XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0ICAvKipcblx0ICAgKiBNZXJnZSB0d28gb2JqZWN0
cywgYnV0IHRocm93IGlmIGJvdGggY29udGFpbiB0aGUgc2FtZSBrZXkuXG5cdCAgICpcblx0ICAg
KiBAcGFyYW0ge29iamVjdH0gb25lIFRoZSBmaXJzdCBvYmplY3QsIHdoaWNoIGlzIG11dGF0ZWQu
XG5cdCAgICogQHBhcmFtIHtvYmplY3R9IHR3byBUaGUgc2Vjb25kIG9iamVjdFxuXHQgICAqIEBy
ZXR1cm4ge29iamVjdH0gb25lIGFmdGVyIGl0IGhhcyBiZWVuIG11dGF0ZWQgdG8gY29udGFpbiBl
dmVyeXRoaW5nIGluIHR3by5cblx0ICAgKi9cblx0ICBmdW5jdGlvbiBtZXJnZUludG9XaXRoTm9E
dXBsaWNhdGVLZXlzKG9uZSwgdHdvKSB7XG5cdCAgICBfaW52YXJpYW50KFxuXHQgICAgICBvbmUg
JiYgdHdvICYmIHR5cGVvZiBvbmUgPT09ICdvYmplY3QnICYmIHR5cGVvZiB0d28gPT09ICdvYmpl
Y3QnLFxuXHQgICAgICAnbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cygpOiBDYW5ub3QgbWVy
Z2Ugbm9uLW9iamVjdHMuJ1xuXHQgICAgKTtcblx0XG5cdCAgICBmb3IgKHZhciBrZXkgaW4gdHdv
KSB7XG5cdCAgICAgIGlmICh0d28uaGFzT3duUHJvcGVydHkoa2V5KSkge1xuXHQgICAgICAgIF9p
bnZhcmlhbnQoXG5cdCAgICAgICAgICBvbmVba2V5XSA9PT0gdW5kZWZpbmVkLFxuXHQgICAgICAg
ICAgJ21lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMoKTogJyArXG5cdCAgICAgICAgICAgICdU
cmllZCB0byBtZXJnZSB0d28gb2JqZWN0cyB3aXRoIHRoZSBzYW1lIGtleTogYCVzYC4gVGhpcyBj
b25mbGljdCAnICtcblx0ICAgICAgICAgICAgJ21heSBiZSBkdWUgdG8gYSBtaXhpbjsgaW4gcGFy
dGljdWxhciwgdGhpcyBtYXkgYmUgY2F1c2VkIGJ5IHR3byAnICtcblx0ICAgICAgICAgICAgJ2dl
dEluaXRpYWxTdGF0ZSgpIG9yIGdldERlZmF1bHRQcm9wcygpIG1ldGhvZHMgcmV0dXJuaW5nIG9i
amVjdHMgJyArXG5cdCAgICAgICAgICAgICd3aXRoIGNsYXNoaW5nIGtleXMuJyxcblx0ICAgICAg
ICAgIGtleVxuXHQgICAgICAgICk7XG5cdCAgICAgICAgb25lW2tleV0gPSB0d29ba2V5XTtcblx0
ICAgICAgfVxuXHQgICAgfVxuXHQgICAgcmV0dXJuIG9uZTtcblx0ICB9XG5cdFxuXHQgIC8qKlxu
XHQgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGludm9rZXMgdHdvIGZ1bmN0aW9ucyBhbmQg
bWVyZ2VzIHRoZWlyIHJldHVybiB2YWx1ZXMuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge2Z1bmN0
aW9ufSBvbmUgRnVuY3Rpb24gdG8gaW52b2tlIGZpcnN0LlxuXHQgICAqIEBwYXJhbSB7ZnVuY3Rp
b259IHR3byBGdW5jdGlvbiB0byBpbnZva2Ugc2Vjb25kLlxuXHQgICAqIEByZXR1cm4ge2Z1bmN0
aW9ufSBGdW5jdGlvbiB0aGF0IGludm9rZXMgdGhlIHR3byBhcmd1bWVudCBmdW5jdGlvbnMuXG5c
dCAgICogQHByaXZhdGVcblx0ICAgKi9cblx0ICBmdW5jdGlvbiBjcmVhdGVNZXJnZWRSZXN1bHRG
dW5jdGlvbihvbmUsIHR3bykge1xuXHQgICAgcmV0dXJuIGZ1bmN0aW9uIG1lcmdlZFJlc3VsdCgp
IHtcblx0ICAgICAgdmFyIGEgPSBvbmUuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0ICAgICAg
dmFyIGIgPSB0d28uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0ICAgICAgaWYgKGEgPT0gbnVs
bCkge1xuXHQgICAgICAgIHJldHVybiBiO1xuXHQgICAgICB9IGVsc2UgaWYgKGIgPT0gbnVsbCkg
e1xuXHQgICAgICAgIHJldHVybiBhO1xuXHQgICAgICB9XG5cdCAgICAgIHZhciBjID0ge307XG5c
dCAgICAgIG1lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMoYywgYSk7XG5cdCAgICAgIG1lcmdl
SW50b1dpdGhOb0R1cGxpY2F0ZUtleXMoYywgYik7XG5cdCAgICAgIHJldHVybiBjO1xuXHQgICAg
fTtcblx0ICB9XG5cdFxuXHQgIC8qKlxuXHQgICAqIENyZWF0ZXMgYSBmdW5jdGlvbiB0aGF0IGlu
dm9rZXMgdHdvIGZ1bmN0aW9ucyBhbmQgaWdub3JlcyB0aGVpciByZXR1cm4gdmFsZXMuXG5cdCAg
ICpcblx0ICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBvbmUgRnVuY3Rpb24gdG8gaW52b2tlIGZpcnN0
LlxuXHQgICAqIEBwYXJhbSB7ZnVuY3Rpb259IHR3byBGdW5jdGlvbiB0byBpbnZva2Ugc2Vjb25k
LlxuXHQgICAqIEByZXR1cm4ge2Z1bmN0aW9ufSBGdW5jdGlvbiB0aGF0IGludm9rZXMgdGhlIHR3
byBhcmd1bWVudCBmdW5jdGlvbnMuXG5cdCAgICogQHByaXZhdGVcblx0ICAgKi9cblx0ICBmdW5j
dGlvbiBjcmVhdGVDaGFpbmVkRnVuY3Rpb24ob25lLCB0d28pIHtcblx0ICAgIHJldHVybiBmdW5j
dGlvbiBjaGFpbmVkRnVuY3Rpb24oKSB7XG5cdCAgICAgIG9uZS5hcHBseSh0aGlzLCBhcmd1bWVu
dHMpO1xuXHQgICAgICB0d28uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblx0ICAgIH07XG5cdCAg
fVxuXHRcblx0ICAvKipcblx0ICAgKiBCaW5kcyBhIG1ldGhvZCB0byB0aGUgY29tcG9uZW50Llxu
XHQgICAqXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGNvbXBvbmVudCBDb21wb25lbnQgd2hvc2Ug
bWV0aG9kIGlzIGdvaW5nIHRvIGJlIGJvdW5kLlxuXHQgICAqIEBwYXJhbSB7ZnVuY3Rpb259IG1l
dGhvZCBNZXRob2QgdG8gYmUgYm91bmQuXG5cdCAgICogQHJldHVybiB7ZnVuY3Rpb259IFRoZSBi
b3VuZCBtZXRob2QuXG5cdCAgICovXG5cdCAgZnVuY3Rpb24gYmluZEF1dG9CaW5kTWV0aG9kKGNv
bXBvbmVudCwgbWV0aG9kKSB7XG5cdCAgICB2YXIgYm91bmRNZXRob2QgPSBtZXRob2QuYmluZChj
b21wb25lbnQpO1xuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIGJvdW5kTWV0aG9kLl9fcmVh
Y3RCb3VuZENvbnRleHQgPSBjb21wb25lbnQ7XG5cdCAgICAgIGJvdW5kTWV0aG9kLl9fcmVhY3RC
b3VuZE1ldGhvZCA9IG1ldGhvZDtcblx0ICAgICAgYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQXJn
dW1lbnRzID0gbnVsbDtcblx0ICAgICAgdmFyIGNvbXBvbmVudE5hbWUgPSBjb21wb25lbnQuY29u
c3RydWN0b3IuZGlzcGxheU5hbWU7XG5cdCAgICAgIHZhciBfYmluZCA9IGJvdW5kTWV0aG9kLmJp
bmQ7XG5cdCAgICAgIGJvdW5kTWV0aG9kLmJpbmQgPSBmdW5jdGlvbihuZXdUaGlzKSB7XG5cdCAg
ICAgICAgZm9yIChcblx0ICAgICAgICAgIHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCxcblx0
ICAgICAgICAgICAgYXJncyA9IEFycmF5KF9sZW4gPiAxID8gX2xlbiAtIDEgOiAwKSxcblx0ICAg
ICAgICAgICAgX2tleSA9IDE7XG5cdCAgICAgICAgICBfa2V5IDwgX2xlbjtcblx0ICAgICAgICAg
IF9rZXkrK1xuXHQgICAgICAgICkge1xuXHQgICAgICAgICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1
bWVudHNbX2tleV07XG5cdCAgICAgICAgfVxuXHRcblx0ICAgICAgICAvLyBVc2VyIGlzIHRyeWlu
ZyB0byBiaW5kKCkgYW4gYXV0b2JvdW5kIG1ldGhvZDsgd2UgZWZmZWN0aXZlbHkgd2lsbFxuXHQg
ICAgICAgIC8vIGlnbm9yZSB0aGUgdmFsdWUgb2YgXCJ0aGlzXCIgdGhhdCB0aGUgdXNlciBpcyB0
cnlpbmcgdG8gdXNlLCBzb1xuXHQgICAgICAgIC8vIGxldCdzIHdhcm4uXG5cdCAgICAgICAgaWYg
KG5ld1RoaXMgIT09IGNvbXBvbmVudCAmJiBuZXdUaGlzICE9PSBudWxsKSB7XG5cdCAgICAgICAg
ICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuXHQgICAgICAg
ICAgICB3YXJuaW5nKFxuXHQgICAgICAgICAgICAgIGZhbHNlLFxuXHQgICAgICAgICAgICAgICdi
aW5kKCk6IFJlYWN0IGNvbXBvbmVudCBtZXRob2RzIG1heSBvbmx5IGJlIGJvdW5kIHRvIHRoZSAn
ICtcblx0ICAgICAgICAgICAgICAgICdjb21wb25lbnQgaW5zdGFuY2UuIFNlZSAlcycsXG5cdCAg
ICAgICAgICAgICAgY29tcG9uZW50TmFtZVxuXHQgICAgICAgICAgICApO1xuXHQgICAgICAgICAg
fVxuXHQgICAgICAgIH0gZWxzZSBpZiAoIWFyZ3MubGVuZ3RoKSB7XG5cdCAgICAgICAgICBpZiAo
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuXHQgICAgICAgICAgICB3
YXJuaW5nKFxuXHQgICAgICAgICAgICAgIGZhbHNlLFxuXHQgICAgICAgICAgICAgICdiaW5kKCk6
IFlvdSBhcmUgYmluZGluZyBhIGNvbXBvbmVudCBtZXRob2QgdG8gdGhlIGNvbXBvbmVudC4gJyAr
XG5cdCAgICAgICAgICAgICAgICAnUmVhY3QgZG9lcyB0aGlzIGZvciB5b3UgYXV0b21hdGljYWxs
eSBpbiBhIGhpZ2gtcGVyZm9ybWFuY2UgJyArXG5cdCAgICAgICAgICAgICAgICAnd2F5LCBzbyB5
b3UgY2FuIHNhZmVseSByZW1vdmUgdGhpcyBjYWxsLiBTZWUgJXMnLFxuXHQgICAgICAgICAgICAg
IGNvbXBvbmVudE5hbWVcblx0ICAgICAgICAgICAgKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAg
ICAgIHJldHVybiBib3VuZE1ldGhvZDtcblx0ICAgICAgICB9XG5cdCAgICAgICAgdmFyIHJlYm91
bmRNZXRob2QgPSBfYmluZC5hcHBseShib3VuZE1ldGhvZCwgYXJndW1lbnRzKTtcblx0ICAgICAg
ICByZWJvdW5kTWV0aG9kLl9fcmVhY3RCb3VuZENvbnRleHQgPSBjb21wb25lbnQ7XG5cdCAgICAg
ICAgcmVib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRNZXRob2QgPSBtZXRob2Q7XG5cdCAgICAgICAg
cmVib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRBcmd1bWVudHMgPSBhcmdzO1xuXHQgICAgICAgIHJl
dHVybiByZWJvdW5kTWV0aG9kO1xuXHQgICAgICB9O1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIGJv
dW5kTWV0aG9kO1xuXHQgIH1cblx0XG5cdCAgLyoqXG5cdCAgICogQmluZHMgYWxsIGF1dG8tYm91
bmQgbWV0aG9kcyBpbiBhIGNvbXBvbmVudC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7b2JqZWN0
fSBjb21wb25lbnQgQ29tcG9uZW50IHdob3NlIG1ldGhvZCBpcyBnb2luZyB0byBiZSBib3VuZC5c
blx0ICAgKi9cblx0ICBmdW5jdGlvbiBiaW5kQXV0b0JpbmRNZXRob2RzKGNvbXBvbmVudCkge1xu
XHQgICAgdmFyIHBhaXJzID0gY29tcG9uZW50Ll9fcmVhY3RBdXRvQmluZFBhaXJzO1xuXHQgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBwYWlycy5sZW5ndGg7IGkgKz0gMikge1xuXHQgICAgICB2YXIg
YXV0b0JpbmRLZXkgPSBwYWlyc1tpXTtcblx0ICAgICAgdmFyIG1ldGhvZCA9IHBhaXJzW2kgKyAx
XTtcblx0ICAgICAgY29tcG9uZW50W2F1dG9CaW5kS2V5XSA9IGJpbmRBdXRvQmluZE1ldGhvZChj
b21wb25lbnQsIG1ldGhvZCk7XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0ICB2YXIgSXNNb3VudGVk
UHJlTWl4aW4gPSB7XG5cdCAgICBjb21wb25lbnREaWRNb3VudDogZnVuY3Rpb24oKSB7XG5cdCAg
ICAgIHRoaXMuX19pc01vdW50ZWQgPSB0cnVlO1xuXHQgICAgfVxuXHQgIH07XG5cdFxuXHQgIHZh
ciBJc01vdW50ZWRQb3N0TWl4aW4gPSB7XG5cdCAgICBjb21wb25lbnRXaWxsVW5tb3VudDogZnVu
Y3Rpb24oKSB7XG5cdCAgICAgIHRoaXMuX19pc01vdW50ZWQgPSBmYWxzZTtcblx0ICAgIH1cblx0
ICB9O1xuXHRcblx0ICAvKipcblx0ICAgKiBBZGQgbW9yZSB0byB0aGUgUmVhY3RDbGFzcyBiYXNl
IGNsYXNzLiBUaGVzZSBhcmUgYWxsIGxlZ2FjeSBmZWF0dXJlcyBhbmRcblx0ICAgKiB0aGVyZWZv
cmUgbm90IGFscmVhZHkgcGFydCBvZiB0aGUgbW9kZXJuIFJlYWN0Q29tcG9uZW50LlxuXHQgICAq
L1xuXHQgIHZhciBSZWFjdENsYXNzTWl4aW4gPSB7XG5cdCAgICAvKipcblx0ICAgICAqIFRPRE86
IFRoaXMgd2lsbCBiZSBkZXByZWNhdGVkIGJlY2F1c2Ugc3RhdGUgc2hvdWxkIGFsd2F5cyBrZWVw
IGEgY29uc2lzdGVudFxuXHQgICAgICogdHlwZSBzaWduYXR1cmUgYW5kIHRoZSBvbmx5IHVzZSBj
YXNlIGZvciB0aGlzLCBpcyB0byBhdm9pZCB0aGF0LlxuXHQgICAgICovXG5cdCAgICByZXBsYWNl
U3RhdGU6IGZ1bmN0aW9uKG5ld1N0YXRlLCBjYWxsYmFjaykge1xuXHQgICAgICB0aGlzLnVwZGF0
ZXIuZW5xdWV1ZVJlcGxhY2VTdGF0ZSh0aGlzLCBuZXdTdGF0ZSwgY2FsbGJhY2spO1xuXHQgICAg
fSxcblx0XG5cdCAgICAvKipcblx0ICAgICAqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGNv
bXBvc2l0ZSBjb21wb25lbnQgaXMgbW91bnRlZC5cblx0ICAgICAqIEByZXR1cm4ge2Jvb2xlYW59
IFRydWUgaWYgbW91bnRlZCwgZmFsc2Ugb3RoZXJ3aXNlLlxuXHQgICAgICogQHByb3RlY3RlZFxu
XHQgICAgICogQGZpbmFsXG5cdCAgICAgKi9cblx0ICAgIGlzTW91bnRlZDogZnVuY3Rpb24oKSB7
XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIHdhcm5pbmcoXG5cdCAgICAgICAgICB0
aGlzLl9fZGlkV2FybklzTW91bnRlZCxcblx0ICAgICAgICAgICclczogaXNNb3VudGVkIGlzIGRl
cHJlY2F0ZWQuIEluc3RlYWQsIG1ha2Ugc3VyZSB0byBjbGVhbiB1cCAnICtcblx0ICAgICAgICAg
ICAgJ3N1YnNjcmlwdGlvbnMgYW5kIHBlbmRpbmcgcmVxdWVzdHMgaW4gY29tcG9uZW50V2lsbFVu
bW91bnQgdG8gJyArXG5cdCAgICAgICAgICAgICdwcmV2ZW50IG1lbW9yeSBsZWFrcy4nLFxuXHQg
ICAgICAgICAgKHRoaXMuY29uc3RydWN0b3IgJiYgdGhpcy5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFt
ZSkgfHxcblx0ICAgICAgICAgICAgdGhpcy5uYW1lIHx8XG5cdCAgICAgICAgICAgICdDb21wb25l
bnQnXG5cdCAgICAgICAgKTtcblx0ICAgICAgICB0aGlzLl9fZGlkV2FybklzTW91bnRlZCA9IHRy
dWU7XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuICEhdGhpcy5fX2lzTW91bnRlZDtcblx0ICAg
IH1cblx0ICB9O1xuXHRcblx0ICB2YXIgUmVhY3RDbGFzc0NvbXBvbmVudCA9IGZ1bmN0aW9uKCkg
e307XG5cdCAgX2Fzc2lnbihcblx0ICAgIFJlYWN0Q2xhc3NDb21wb25lbnQucHJvdG90eXBlLFxu
XHQgICAgUmVhY3RDb21wb25lbnQucHJvdG90eXBlLFxuXHQgICAgUmVhY3RDbGFzc01peGluXG5c
dCAgKTtcblx0XG5cdCAgLyoqXG5cdCAgICogQ3JlYXRlcyBhIGNvbXBvc2l0ZSBjb21wb25lbnQg
Y2xhc3MgZ2l2ZW4gYSBjbGFzcyBzcGVjaWZpY2F0aW9uLlxuXHQgICAqIFNlZSBodHRwczovL2Zh
Y2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdC5jcmVh
dGVjbGFzc1xuXHQgICAqXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IHNwZWMgQ2xhc3Mgc3BlY2lm
aWNhdGlvbiAod2hpY2ggbXVzdCBkZWZpbmUgYHJlbmRlcmApLlxuXHQgICAqIEByZXR1cm4ge2Z1
bmN0aW9ufSBDb21wb25lbnQgY29uc3RydWN0b3IgZnVuY3Rpb24uXG5cdCAgICogQHB1YmxpY1xu
XHQgICAqL1xuXHQgIGZ1bmN0aW9uIGNyZWF0ZUNsYXNzKHNwZWMpIHtcblx0ICAgIC8vIFRvIGtl
ZXAgb3VyIHdhcm5pbmdzIG1vcmUgdW5kZXJzdGFuZGFibGUsIHdlJ2xsIHVzZSBhIGxpdHRsZSBo
YWNrIGhlcmUgdG9cblx0ICAgIC8vIGVuc3VyZSB0aGF0IENvbnN0cnVjdG9yLm5hbWUgIT09ICdD
b25zdHJ1Y3RvcicuIFRoaXMgbWFrZXMgc3VyZSB3ZSBkb24ndFxuXHQgICAgLy8gdW5uZWNlc3Nh
cmlseSBpZGVudGlmeSBhIGNsYXNzIHdpdGhvdXQgZGlzcGxheU5hbWUgYXMgJ0NvbnN0cnVjdG9y
Jy5cblx0ICAgIHZhciBDb25zdHJ1Y3RvciA9IGlkZW50aXR5KGZ1bmN0aW9uKHByb3BzLCBjb250
ZXh0LCB1cGRhdGVyKSB7XG5cdCAgICAgIC8vIFRoaXMgY29uc3RydWN0b3IgZ2V0cyBvdmVycmlk
ZGVuIGJ5IG1vY2tzLiBUaGUgYXJndW1lbnQgaXMgdXNlZFxuXHQgICAgICAvLyBieSBtb2NrcyB0
byBhc3NlcnQgb24gd2hhdCBnZXRzIG1vdW50ZWQuXG5cdFxuXHQgICAgICBpZiAoZmFsc2UpIHtc
blx0ICAgICAgICB3YXJuaW5nKFxuXHQgICAgICAgICAgdGhpcyBpbnN0YW5jZW9mIENvbnN0cnVj
dG9yLFxuXHQgICAgICAgICAgJ1NvbWV0aGluZyBpcyBjYWxsaW5nIGEgUmVhY3QgY29tcG9uZW50
IGRpcmVjdGx5LiBVc2UgYSBmYWN0b3J5IG9yICcgK1xuXHQgICAgICAgICAgICAnSlNYIGluc3Rl
YWQuIFNlZTogaHR0cHM6Ly9mYi5tZS9yZWFjdC1sZWdhY3lmYWN0b3J5J1xuXHQgICAgICAgICk7
XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIC8vIFdpcmUgdXAgYXV0by1iaW5kaW5nXG5cdCAgICAg
IGlmICh0aGlzLl9fcmVhY3RBdXRvQmluZFBhaXJzLmxlbmd0aCkge1xuXHQgICAgICAgIGJpbmRB
dXRvQmluZE1ldGhvZHModGhpcyk7XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHRoaXMucHJvcHMg
PSBwcm9wcztcblx0ICAgICAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcblx0ICAgICAgdGhpcy5y
ZWZzID0gZW1wdHlPYmplY3Q7XG5cdCAgICAgIHRoaXMudXBkYXRlciA9IHVwZGF0ZXIgfHwgUmVh
Y3ROb29wVXBkYXRlUXVldWU7XG5cdFxuXHQgICAgICB0aGlzLnN0YXRlID0gbnVsbDtcblx0XG5c
dCAgICAgIC8vIFJlYWN0Q2xhc3NlcyBkb2Vzbid0IGhhdmUgY29uc3RydWN0b3JzLiBJbnN0ZWFk
LCB0aGV5IHVzZSB0aGVcblx0ICAgICAgLy8gZ2V0SW5pdGlhbFN0YXRlIGFuZCBjb21wb25lbnRX
aWxsTW91bnQgbWV0aG9kcyBmb3IgaW5pdGlhbGl6YXRpb24uXG5cdFxuXHQgICAgICB2YXIgaW5p
dGlhbFN0YXRlID0gdGhpcy5nZXRJbml0aWFsU3RhdGUgPyB0aGlzLmdldEluaXRpYWxTdGF0ZSgp
IDogbnVsbDtcblx0ICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgLy8gV2UgYWxsb3cgYXV0
by1tb2NrcyB0byBwcm9jZWVkIGFzIGlmIHRoZXkncmUgcmV0dXJuaW5nIG51bGwuXG5cdCAgICAg
ICAgaWYgKFxuXHQgICAgICAgICAgaW5pdGlhbFN0YXRlID09PSB1bmRlZmluZWQgJiZcblx0ICAg
ICAgICAgIHRoaXMuZ2V0SW5pdGlhbFN0YXRlLl9pc01vY2tGdW5jdGlvblxuXHQgICAgICAgICkg
e1xuXHQgICAgICAgICAgLy8gVGhpcyBpcyBwcm9iYWJseSBiYWQgcHJhY3RpY2UuIENvbnNpZGVy
IHdhcm5pbmcgaGVyZSBhbmRcblx0ICAgICAgICAgIC8vIGRlcHJlY2F0aW5nIHRoaXMgY29udmVu
aWVuY2UuXG5cdCAgICAgICAgICBpbml0aWFsU3RhdGUgPSBudWxsO1xuXHQgICAgICAgIH1cblx0
ICAgICAgfVxuXHQgICAgICBfaW52YXJpYW50KFxuXHQgICAgICAgIHR5cGVvZiBpbml0aWFsU3Rh
dGUgPT09ICdvYmplY3QnICYmICFBcnJheS5pc0FycmF5KGluaXRpYWxTdGF0ZSksXG5cdCAgICAg
ICAgJyVzLmdldEluaXRpYWxTdGF0ZSgpOiBtdXN0IHJldHVybiBhbiBvYmplY3Qgb3IgbnVsbCcs
XG5cdCAgICAgICAgQ29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgJ1JlYWN0Q29tcG9zaXRlQ29t
cG9uZW50J1xuXHQgICAgICApO1xuXHRcblx0ICAgICAgdGhpcy5zdGF0ZSA9IGluaXRpYWxTdGF0
ZTtcblx0ICAgIH0pO1xuXHQgICAgQ29uc3RydWN0b3IucHJvdG90eXBlID0gbmV3IFJlYWN0Q2xh
c3NDb21wb25lbnQoKTtcblx0ICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3RvciA9
IENvbnN0cnVjdG9yO1xuXHQgICAgQ29uc3RydWN0b3IucHJvdG90eXBlLl9fcmVhY3RBdXRvQmlu
ZFBhaXJzID0gW107XG5cdFxuXHQgICAgaW5qZWN0ZWRNaXhpbnMuZm9yRWFjaChtaXhTcGVjSW50
b0NvbXBvbmVudC5iaW5kKG51bGwsIENvbnN0cnVjdG9yKSk7XG5cdFxuXHQgICAgbWl4U3BlY0lu
dG9Db21wb25lbnQoQ29uc3RydWN0b3IsIElzTW91bnRlZFByZU1peGluKTtcblx0ICAgIG1peFNw
ZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBzcGVjKTtcblx0ICAgIG1peFNwZWNJbnRvQ29t
cG9uZW50KENvbnN0cnVjdG9yLCBJc01vdW50ZWRQb3N0TWl4aW4pO1xuXHRcblx0ICAgIC8vIElu
aXRpYWxpemUgdGhlIGRlZmF1bHRQcm9wcyBwcm9wZXJ0eSBhZnRlciBhbGwgbWl4aW5zIGhhdmUg
YmVlbiBtZXJnZWQuXG5cdCAgICBpZiAoQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzKSB7XG5c
dCAgICAgIENvbnN0cnVjdG9yLmRlZmF1bHRQcm9wcyA9IENvbnN0cnVjdG9yLmdldERlZmF1bHRQ
cm9wcygpO1xuXHQgICAgfVxuXHRcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAvLyBUaGlz
IGlzIGEgdGFnIHRvIGluZGljYXRlIHRoYXQgdGhlIHVzZSBvZiB0aGVzZSBtZXRob2QgbmFtZXMg
aXMgb2ssXG5cdCAgICAgIC8vIHNpbmNlIGl0J3MgdXNlZCB3aXRoIGNyZWF0ZUNsYXNzLiBJZiBp
dCdzIG5vdCwgdGhlbiBpdCdzIGxpa2VseSBhXG5cdCAgICAgIC8vIG1pc3Rha2Ugc28gd2UnbGwg
d2FybiB5b3UgdG8gdXNlIHRoZSBzdGF0aWMgcHJvcGVydHksIHByb3BlcnR5XG5cdCAgICAgIC8v
IGluaXRpYWxpemVyIG9yIGNvbnN0cnVjdG9yIHJlc3BlY3RpdmVseS5cblx0ICAgICAgaWYgKENv
bnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcykge1xuXHQgICAgICAgIENvbnN0cnVjdG9yLmdldERl
ZmF1bHRQcm9wcy5pc1JlYWN0Q2xhc3NBcHByb3ZlZCA9IHt9O1xuXHQgICAgICB9XG5cdCAgICAg
IGlmIChDb25zdHJ1Y3Rvci5wcm90b3R5cGUuZ2V0SW5pdGlhbFN0YXRlKSB7XG5cdCAgICAgICAg
Q29uc3RydWN0b3IucHJvdG90eXBlLmdldEluaXRpYWxTdGF0ZS5pc1JlYWN0Q2xhc3NBcHByb3Zl
ZCA9IHt9O1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgX2ludmFyaWFudChcblx0ICAg
ICAgQ29uc3RydWN0b3IucHJvdG90eXBlLnJlbmRlcixcblx0ICAgICAgJ2NyZWF0ZUNsYXNzKC4u
Lik6IENsYXNzIHNwZWNpZmljYXRpb24gbXVzdCBpbXBsZW1lbnQgYSBgcmVuZGVyYCBtZXRob2Qu
J1xuXHQgICAgKTtcblx0XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgd2FybmluZyhcblx0
ICAgICAgICAhQ29uc3RydWN0b3IucHJvdG90eXBlLmNvbXBvbmVudFNob3VsZFVwZGF0ZSxcblx0
ICAgICAgICAnJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCAnICtcblx0ICAgICAgICAgICdjb21wb25l
bnRTaG91bGRVcGRhdGUoKS4gRGlkIHlvdSBtZWFuIHNob3VsZENvbXBvbmVudFVwZGF0ZSgpPyAn
ICtcblx0ICAgICAgICAgICdUaGUgbmFtZSBpcyBwaHJhc2VkIGFzIGEgcXVlc3Rpb24gYmVjYXVz
ZSB0aGUgZnVuY3Rpb24gaXMgJyArXG5cdCAgICAgICAgICAnZXhwZWN0ZWQgdG8gcmV0dXJuIGEg
dmFsdWUuJyxcblx0ICAgICAgICBzcGVjLmRpc3BsYXlOYW1lIHx8ICdBIGNvbXBvbmVudCdcblx0
ICAgICAgKTtcblx0ICAgICAgd2FybmluZyhcblx0ICAgICAgICAhQ29uc3RydWN0b3IucHJvdG90
eXBlLmNvbXBvbmVudFdpbGxSZWNpZXZlUHJvcHMsXG5cdCAgICAgICAgJyVzIGhhcyBhIG1ldGhv
ZCBjYWxsZWQgJyArXG5cdCAgICAgICAgICAnY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcygpLiBE
aWQgeW91IG1lYW4gY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcygpPycsXG5cdCAgICAgICAgc3Bl
Yy5kaXNwbGF5TmFtZSB8fCAnQSBjb21wb25lbnQnXG5cdCAgICAgICk7XG5cdCAgICB9XG5cdFxu
XHQgICAgLy8gUmVkdWNlIHRpbWUgc3BlbnQgZG9pbmcgbG9va3VwcyBieSBzZXR0aW5nIHRoZXNl
IG9uIHRoZSBwcm90b3R5cGUuXG5cdCAgICBmb3IgKHZhciBtZXRob2ROYW1lIGluIFJlYWN0Q2xh
c3NJbnRlcmZhY2UpIHtcblx0ICAgICAgaWYgKCFDb25zdHJ1Y3Rvci5wcm90b3R5cGVbbWV0aG9k
TmFtZV0pIHtcblx0ICAgICAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGVbbWV0aG9kTmFtZV0gPSBu
dWxsO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgcmV0dXJuIENvbnN0cnVjdG9yO1xu
XHQgIH1cblx0XG5cdCAgcmV0dXJuIGNyZWF0ZUNsYXNzO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhw
b3J0cyA9IGZhY3Rvcnk7XG5cblxuLyoqKi8gfSxcbi8qIDk4ICovXG4vKioqLyBmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMpIHtcblxuXHRcInVzZSBzdHJpY3RcIjtcblx0XG5cdC8qKlxuXHQgKiBD
b3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0
cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogQHR5cGVjaGVja3Ncblx0ICov
XG5cdFxuXHR2YXIgX2h5cGhlblBhdHRlcm4gPSAvLSguKS9nO1xuXHRcblx0LyoqXG5cdCAqIENh
bWVsY2FzZXMgYSBoeXBoZW5hdGVkIHN0cmluZywgZm9yIGV4YW1wbGU6XG5cdCAqXG5cdCAqICAg
PiBjYW1lbGl6ZSgnYmFja2dyb3VuZC1jb2xvcicpXG5cdCAqICAgPCBcImJhY2tncm91bmRDb2xv
clwiXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcblx0ICogQHJldHVybiB7c3Ry
aW5nfVxuXHQgKi9cblx0ZnVuY3Rpb24gY2FtZWxpemUoc3RyaW5nKSB7XG5cdCAgcmV0dXJuIHN0
cmluZy5yZXBsYWNlKF9oeXBoZW5QYXR0ZXJuLCBmdW5jdGlvbiAoXywgY2hhcmFjdGVyKSB7XG5c
dCAgICByZXR1cm4gY2hhcmFjdGVyLnRvVXBwZXJDYXNlKCk7XG5cdCAgfSk7XG5cdH1cblx0XG5c
dG1vZHVsZS5leHBvcnRzID0gY2FtZWxpemU7XG5cbi8qKiovIH0sXG4vKiA5OSAqL1xuLyoqKi8g
ZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Lyoq
XG5cdCAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBAdHlwZWNoZWNr
c1xuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBjYW1lbGl6ZSA9IF9fd2Vi
cGFja19yZXF1aXJlX18oOTgpO1xuXHRcblx0dmFyIG1zUGF0dGVybiA9IC9eLW1zLS87XG5cdFxu
XHQvKipcblx0ICogQ2FtZWxjYXNlcyBhIGh5cGhlbmF0ZWQgQ1NTIHByb3BlcnR5IG5hbWUsIGZv
ciBleGFtcGxlOlxuXHQgKlxuXHQgKiAgID4gY2FtZWxpemVTdHlsZU5hbWUoJ2JhY2tncm91bmQt
Y29sb3InKVxuXHQgKiAgIDwgXCJiYWNrZ3JvdW5kQ29sb3JcIlxuXHQgKiAgID4gY2FtZWxpemVT
dHlsZU5hbWUoJy1tb3otdHJhbnNpdGlvbicpXG5cdCAqICAgPCBcIk1velRyYW5zaXRpb25cIlxu
XHQgKiAgID4gY2FtZWxpemVTdHlsZU5hbWUoJy1tcy10cmFuc2l0aW9uJylcblx0ICogICA8IFwi
bXNUcmFuc2l0aW9uXCJcblx0ICpcblx0ICogQXMgQW5kaSBTbWl0aCBzdWdnZXN0c1xuXHQgKiAo
aHR0cDovL3d3dy5hbmRpc21pdGguY29tL2Jsb2cvMjAxMi8wMi9tb2Rlcm5penItcHJlZml4ZWQv
KSwgYW4gYC1tc2AgcHJlZml4XG5cdCAqIGlzIGNvbnZlcnRlZCB0byBsb3dlcmNhc2UgYG1zYC5c
blx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZ1xuXHQgKiBAcmV0dXJuIHtzdHJpbmd9
XG5cdCAqL1xuXHRmdW5jdGlvbiBjYW1lbGl6ZVN0eWxlTmFtZShzdHJpbmcpIHtcblx0ICByZXR1
cm4gY2FtZWxpemUoc3RyaW5nLnJlcGxhY2UobXNQYXR0ZXJuLCAnbXMtJykpO1xuXHR9XG5cdFxu
XHRtb2R1bGUuZXhwb3J0cyA9IGNhbWVsaXplU3R5bGVOYW1lO1xuXG4vKioqLyB9LFxuLyogMTAw
ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18p
IHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQvKipcblx0ICogQ29weXJpZ2h0IChjKSAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAq
XG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQgKi9cblx0XG5cdHZhciBpc1RleHROb2RlID0gX193
ZWJwYWNrX3JlcXVpcmVfXygxMDgpO1xuXHRcblx0Lyplc2xpbnQtZGlzYWJsZSBuby1iaXR3aXNl
ICovXG5cdFxuXHQvKipcblx0ICogQ2hlY2tzIGlmIGEgZ2l2ZW4gRE9NIG5vZGUgY29udGFpbnMg
b3IgaXMgYW5vdGhlciBET00gbm9kZS5cblx0ICovXG5cdGZ1bmN0aW9uIGNvbnRhaW5zTm9kZShv
dXRlck5vZGUsIGlubmVyTm9kZSkge1xuXHQgIGlmICghb3V0ZXJOb2RlIHx8ICFpbm5lck5vZGUp
IHtcblx0ICAgIHJldHVybiBmYWxzZTtcblx0ICB9IGVsc2UgaWYgKG91dGVyTm9kZSA9PT0gaW5u
ZXJOb2RlKSB7XG5cdCAgICByZXR1cm4gdHJ1ZTtcblx0ICB9IGVsc2UgaWYgKGlzVGV4dE5vZGUo
b3V0ZXJOb2RlKSkge1xuXHQgICAgcmV0dXJuIGZhbHNlO1xuXHQgIH0gZWxzZSBpZiAoaXNUZXh0
Tm9kZShpbm5lck5vZGUpKSB7XG5cdCAgICByZXR1cm4gY29udGFpbnNOb2RlKG91dGVyTm9kZSwg
aW5uZXJOb2RlLnBhcmVudE5vZGUpO1xuXHQgIH0gZWxzZSBpZiAoJ2NvbnRhaW5zJyBpbiBvdXRl
ck5vZGUpIHtcblx0ICAgIHJldHVybiBvdXRlck5vZGUuY29udGFpbnMoaW5uZXJOb2RlKTtcblx0
ICB9IGVsc2UgaWYgKG91dGVyTm9kZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbikge1xuXHQgICAg
cmV0dXJuICEhKG91dGVyTm9kZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihpbm5lck5vZGUpICYg
MTYpO1xuXHQgIH0gZWxzZSB7XG5cdCAgICByZXR1cm4gZmFsc2U7XG5cdCAgfVxuXHR9XG5cdFxu
XHRtb2R1bGUuZXhwb3J0cyA9IGNvbnRhaW5zTm9kZTtcblxuLyoqKi8gfSxcbi8qIDEwMSAqL1xu
LyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5c
blx0J3VzZSBzdHJpY3QnO1xuXHRcblx0LyoqXG5cdCAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuXHQgKlxuXHQgKiBAdHlwZWNoZWNrc1xuXHQgKi9cblx0XG5cdHZhciBpbnZhcmlhbnQg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHRcblx0LyoqXG5cdCAqIENvbnZlcnQgYXJyYXkt
bGlrZSBvYmplY3RzIHRvIGFycmF5cy5cblx0ICpcblx0ICogVGhpcyBBUEkgYXNzdW1lcyB0aGUg
Y2FsbGVyIGtub3dzIHRoZSBjb250ZW50cyBvZiB0aGUgZGF0YSB0eXBlLiBGb3IgbGVzc1xuXHQg
KiB3ZWxsIGRlZmluZWQgaW5wdXRzIHVzZSBjcmVhdGVBcnJheUZyb21NaXhlZC5cblx0ICpcblx0
ICogQHBhcmFtIHtvYmplY3R8ZnVuY3Rpb258ZmlsZWxpc3R9IG9ialxuXHQgKiBAcmV0dXJuIHth
cnJheX1cblx0ICovXG5cdGZ1bmN0aW9uIHRvQXJyYXkob2JqKSB7XG5cdCAgdmFyIGxlbmd0aCA9
IG9iai5sZW5ndGg7XG5cdFxuXHQgIC8vIFNvbWUgYnJvd3NlcnMgYnVpbHRpbiBvYmplY3RzIGNh
biByZXBvcnQgdHlwZW9mICdmdW5jdGlvbicgKGUuZy4gTm9kZUxpc3Rcblx0ICAvLyBpbiBvbGQg
dmVyc2lvbnMgb2YgU2FmYXJpKS5cblx0ICAhKCFBcnJheS5pc0FycmF5KG9iaikgJiYgKHR5cGVv
ZiBvYmogPT09ICdvYmplY3QnIHx8IHR5cGVvZiBvYmogPT09ICdmdW5jdGlvbicpKSA/ICBmYWxz
ZSA/IGludmFyaWFudChmYWxzZSwgJ3RvQXJyYXk6IEFycmF5LWxpa2Ugb2JqZWN0IGV4cGVjdGVk
JykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuXHRcblx0ICAhKHR5cGVvZiBsZW5ndGgg
PT09ICdudW1iZXInKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ3RvQXJyYXk6IE9iamVj
dCBuZWVkcyBhIGxlbmd0aCBwcm9wZXJ0eScpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtc
blx0XG5cdCAgIShsZW5ndGggPT09IDAgfHwgbGVuZ3RoIC0gMSBpbiBvYmopID8gIGZhbHNlID8g
aW52YXJpYW50KGZhbHNlLCAndG9BcnJheTogT2JqZWN0IHNob3VsZCBoYXZlIGtleXMgZm9yIGlu
ZGljZXMnKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG5cdFxuXHQgICEodHlwZW9mIG9i
ai5jYWxsZWUgIT09ICdmdW5jdGlvbicpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAndG9B
cnJheTogT2JqZWN0IGNhblxcJ3QgYmUgYGFyZ3VtZW50c2AuIFVzZSByZXN0IHBhcmFtcyAnICsg
JyhmdW5jdGlvbiguLi5hcmdzKSB7fSkgb3IgQXJyYXkuZnJvbSgpIGluc3RlYWQuJykgOiBpbnZh
cmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuXHRcblx0ICAvLyBPbGQgSUUgZG9lc24ndCBnaXZlIGNv
bGxlY3Rpb25zIGFjY2VzcyB0byBoYXNPd25Qcm9wZXJ0eS4gQXNzdW1lIGlucHV0c1xuXHQgIC8v
IHdpdGhvdXQgbWV0aG9kIHdpbGwgdGhyb3cgZHVyaW5nIHRoZSBzbGljZSBjYWxsIGFuZCBza2lw
IHN0cmFpZ2h0IHRvIHRoZVxuXHQgIC8vIGZhbGxiYWNrLlxuXHQgIGlmIChvYmouaGFzT3duUHJv
cGVydHkpIHtcblx0ICAgIHRyeSB7XG5cdCAgICAgIHJldHVybiBBcnJheS5wcm90b3R5cGUuc2xp
Y2UuY2FsbChvYmopO1xuXHQgICAgfSBjYXRjaCAoZSkge1xuXHQgICAgICAvLyBJRSA8IDkgZG9l
cyBub3Qgc3VwcG9ydCBBcnJheSNzbGljZSBvbiBjb2xsZWN0aW9ucyBvYmplY3RzXG5cdCAgICB9
XG5cdCAgfVxuXHRcblx0ICAvLyBGYWxsIGJhY2sgdG8gY29weWluZyBrZXkgYnkga2V5LiBUaGlz
IGFzc3VtZXMgYWxsIGtleXMgaGF2ZSBhIHZhbHVlLFxuXHQgIC8vIHNvIHdpbGwgbm90IHByZXNl
cnZlIHNwYXJzZWx5IHBvcHVsYXRlZCBpbnB1dHMuXG5cdCAgdmFyIHJldCA9IEFycmF5KGxlbmd0
aCk7XG5cdCAgZm9yICh2YXIgaWkgPSAwOyBpaSA8IGxlbmd0aDsgaWkrKykge1xuXHQgICAgcmV0
W2lpXSA9IG9ialtpaV07XG5cdCAgfVxuXHQgIHJldHVybiByZXQ7XG5cdH1cblx0XG5cdC8qKlxu
XHQgKiBQZXJmb3JtIGEgaGV1cmlzdGljIHRlc3QgdG8gZGV0ZXJtaW5lIGlmIGFuIG9iamVjdCBp
cyBcImFycmF5LWxpa2VcIi5cblx0ICpcblx0ICogICBBIG1vbmsgYXNrZWQgSm9zaHUsIGEgWmVu
IG1hc3RlciwgXCJIYXMgYSBkb2cgQnVkZGhhIG5hdHVyZT9cIlxuXHQgKiAgIEpvc2h1IHJlcGxp
ZWQ6IFwiTXUuXCJcblx0ICpcblx0ICogVGhpcyBmdW5jdGlvbiBkZXRlcm1pbmVzIGlmIGl0cyBh
cmd1bWVudCBoYXMgXCJhcnJheSBuYXR1cmVcIjogaXQgcmV0dXJuc1xuXHQgKiB0cnVlIGlmIHRo
ZSBhcmd1bWVudCBpcyBhbiBhY3R1YWwgYXJyYXksIGFuIGBhcmd1bWVudHMnIG9iamVjdCwgb3Ig
YW5cblx0ICogSFRNTENvbGxlY3Rpb24gKGUuZy4gbm9kZS5jaGlsZE5vZGVzIG9yIG5vZGUuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoKSkuXG5cdCAqXG5cdCAqIEl0IHdpbGwgcmV0dXJuIGZhbHNlIGZv
ciBvdGhlciBhcnJheS1saWtlIG9iamVjdHMgbGlrZSBGaWxlbGlzdC5cblx0ICpcblx0ICogQHBh
cmFtIHsqfSBvYmpcblx0ICogQHJldHVybiB7Ym9vbGVhbn1cblx0ICovXG5cdGZ1bmN0aW9uIGhh
c0FycmF5TmF0dXJlKG9iaikge1xuXHQgIHJldHVybiAoXG5cdCAgICAvLyBub3QgbnVsbC9mYWxz
ZVxuXHQgICAgISFvYmogJiYgKFxuXHQgICAgLy8gYXJyYXlzIGFyZSBvYmplY3RzLCBOb2RlTGlz
dHMgYXJlIGZ1bmN0aW9ucyBpbiBTYWZhcmlcblx0ICAgIHR5cGVvZiBvYmogPT0gJ29iamVjdCcg
fHwgdHlwZW9mIG9iaiA9PSAnZnVuY3Rpb24nKSAmJlxuXHQgICAgLy8gcXVhY2tzIGxpa2UgYW4g
YXJyYXlcblx0ICAgICdsZW5ndGgnIGluIG9iaiAmJlxuXHQgICAgLy8gbm90IHdpbmRvd1xuXHQg
ICAgISgnc2V0SW50ZXJ2YWwnIGluIG9iaikgJiZcblx0ICAgIC8vIG5vIERPTSBub2RlIHNob3Vs
ZCBiZSBjb25zaWRlcmVkIGFuIGFycmF5LWxpa2Vcblx0ICAgIC8vIGEgJ3NlbGVjdCcgZWxlbWVu
dCBoYXMgJ2xlbmd0aCcgYW5kICdpdGVtJyBwcm9wZXJ0aWVzIG9uIElFOFxuXHQgICAgdHlwZW9m
IG9iai5ub2RlVHlwZSAhPSAnbnVtYmVyJyAmJiAoXG5cdCAgICAvLyBhIHJlYWwgYXJyYXlcblx0
ICAgIEFycmF5LmlzQXJyYXkob2JqKSB8fFxuXHQgICAgLy8gYXJndW1lbnRzXG5cdCAgICAnY2Fs
bGVlJyBpbiBvYmogfHxcblx0ICAgIC8vIEhUTUxDb2xsZWN0aW9uL05vZGVMaXN0XG5cdCAgICAn
aXRlbScgaW4gb2JqKVxuXHQgICk7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBFbnN1cmUgdGhhdCB0
aGUgYXJndW1lbnQgaXMgYW4gYXJyYXkgYnkgd3JhcHBpbmcgaXQgaW4gYW4gYXJyYXkgaWYgaXQg
aXMgbm90LlxuXHQgKiBDcmVhdGVzIGEgY29weSBvZiB0aGUgYXJndW1lbnQgaWYgaXQgaXMgYWxy
ZWFkeSBhbiBhcnJheS5cblx0ICpcblx0ICogVGhpcyBpcyBtb3N0bHkgdXNlZnVsIGlkaW9tYXRp
Y2FsbHk6XG5cdCAqXG5cdCAqICAgdmFyIGNyZWF0ZUFycmF5RnJvbU1peGVkID0gcmVxdWlyZSgn
Y3JlYXRlQXJyYXlGcm9tTWl4ZWQnKTtcblx0ICpcblx0ICogICBmdW5jdGlvbiB0YWtlc09uZU9y
TW9yZVRoaW5ncyh0aGluZ3MpIHtcblx0ICogICAgIHRoaW5ncyA9IGNyZWF0ZUFycmF5RnJvbU1p
eGVkKHRoaW5ncyk7XG5cdCAqICAgICAuLi5cblx0ICogICB9XG5cdCAqXG5cdCAqIFRoaXMgYWxs
b3dzIHlvdSB0byB0cmVhdCBgdGhpbmdzJyBhcyBhbiBhcnJheSwgYnV0IGFjY2VwdCBzY2FsYXJz
IGluIHRoZSBBUEkuXG5cdCAqXG5cdCAqIElmIHlvdSBuZWVkIHRvIGNvbnZlcnQgYW4gYXJyYXkt
bGlrZSBvYmplY3QsIGxpa2UgYGFyZ3VtZW50c2AsIGludG8gYW4gYXJyYXlcblx0ICogdXNlIHRv
QXJyYXkgaW5zdGVhZC5cblx0ICpcblx0ICogQHBhcmFtIHsqfSBvYmpcblx0ICogQHJldHVybiB7
YXJyYXl9XG5cdCAqL1xuXHRmdW5jdGlvbiBjcmVhdGVBcnJheUZyb21NaXhlZChvYmopIHtcblx0
ICBpZiAoIWhhc0FycmF5TmF0dXJlKG9iaikpIHtcblx0ICAgIHJldHVybiBbb2JqXTtcblx0ICB9
IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuXHQgICAgcmV0dXJuIG9iai5zbGljZSgp
O1xuXHQgIH0gZWxzZSB7XG5cdCAgICByZXR1cm4gdG9BcnJheShvYmopO1xuXHQgIH1cblx0fVxu
XHRcblx0bW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVBcnJheUZyb21NaXhlZDtcblxuLyoqKi8gfSxc
bi8qIDEwMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVx
dWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0LyoqXG5cdCAqIENvcHlyaWdodCAo
YykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBAdHlwZWNoZWNrc1xuXHQgKi9cblx0XG5cdC8q
ZXNsaW50LWRpc2FibGUgZmItd3d3L3Vuc2FmZS1odG1sKi9cblx0XG5cdHZhciBFeGVjdXRpb25F
bnZpcm9ubWVudCA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG5cdFxuXHR2YXIgY3JlYXRlQXJy
YXlGcm9tTWl4ZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwMSk7XG5cdHZhciBnZXRNYXJrdXBX
cmFwID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDMpO1xuXHR2YXIgaW52YXJpYW50ID0gX193ZWJw
YWNrX3JlcXVpcmVfXygxKTtcblx0XG5cdC8qKlxuXHQgKiBEdW1teSBjb250YWluZXIgdXNlZCB0
byByZW5kZXIgYWxsIG1hcmt1cC5cblx0ICovXG5cdHZhciBkdW1teU5vZGUgPSBFeGVjdXRpb25F
bnZpcm9ubWVudC5jYW5Vc2VET00gPyBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSA6IG51
bGw7XG5cdFxuXHQvKipcblx0ICogUGF0dGVybiB1c2VkIGJ5IGBnZXROb2RlTmFtZWAuXG5cdCAq
L1xuXHR2YXIgbm9kZU5hbWVQYXR0ZXJuID0gL15cXHMqPChcXHcrKS87XG5cdFxuXHQvKipcblx0
ICogRXh0cmFjdHMgdGhlIGBub2RlTmFtZWAgb2YgdGhlIGZpcnN0IGVsZW1lbnQgaW4gYSBzdHJp
bmcgb2YgbWFya3VwLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIFN0cmluZyBv
ZiBtYXJrdXAuXG5cdCAqIEByZXR1cm4gez9zdHJpbmd9IE5vZGUgbmFtZSBvZiB0aGUgc3VwcGxp
ZWQgbWFya3VwLlxuXHQgKi9cblx0ZnVuY3Rpb24gZ2V0Tm9kZU5hbWUobWFya3VwKSB7XG5cdCAg
dmFyIG5vZGVOYW1lTWF0Y2ggPSBtYXJrdXAubWF0Y2gobm9kZU5hbWVQYXR0ZXJuKTtcblx0ICBy
ZXR1cm4gbm9kZU5hbWVNYXRjaCAmJiBub2RlTmFtZU1hdGNoWzFdLnRvTG93ZXJDYXNlKCk7XG5c
dH1cblx0XG5cdC8qKlxuXHQgKiBDcmVhdGVzIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIG5vZGVz
IHJlbmRlcmVkIGZyb20gdGhlIHN1cHBsaWVkIG1hcmt1cC4gVGhlXG5cdCAqIG9wdGlvbmFsbHkg
c3VwcGxpZWQgYGhhbmRsZVNjcmlwdGAgZnVuY3Rpb24gd2lsbCBiZSBpbnZva2VkIG9uY2UgZm9y
IGVhY2hcblx0ICogPHNjcmlwdD4gZWxlbWVudCB0aGF0IGlzIHJlbmRlcmVkLiBJZiBubyBgaGFu
ZGxlU2NyaXB0YCBmdW5jdGlvbiBpcyBzdXBwbGllZCxcblx0ICogYW4gZXhjZXB0aW9uIGlzIHRo
cm93biBpZiBhbnkgPHNjcmlwdD4gZWxlbWVudHMgYXJlIHJlbmRlcmVkLlxuXHQgKlxuXHQgKiBA
cGFyYW0ge3N0cmluZ30gbWFya3VwIEEgc3RyaW5nIG9mIHZhbGlkIEhUTUwgbWFya3VwLlxuXHQg
KiBAcGFyYW0gez9mdW5jdGlvbn0gaGFuZGxlU2NyaXB0IEludm9rZWQgb25jZSBmb3IgZWFjaCBy
ZW5kZXJlZCA8c2NyaXB0Pi5cblx0ICogQHJldHVybiB7YXJyYXk8RE9NRWxlbWVudHxET01UZXh0
Tm9kZT59IEFuIGFycmF5IG9mIHJlbmRlcmVkIG5vZGVzLlxuXHQgKi9cblx0ZnVuY3Rpb24gY3Jl
YXRlTm9kZXNGcm9tTWFya3VwKG1hcmt1cCwgaGFuZGxlU2NyaXB0KSB7XG5cdCAgdmFyIG5vZGUg
PSBkdW1teU5vZGU7XG5cdCAgISEhZHVtbXlOb2RlID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNl
LCAnY3JlYXRlTm9kZXNGcm9tTWFya3VwIGR1bW15IG5vdCBpbml0aWFsaXplZCcpIDogaW52YXJp
YW50KGZhbHNlKSA6IHZvaWQgMDtcblx0ICB2YXIgbm9kZU5hbWUgPSBnZXROb2RlTmFtZShtYXJr
dXApO1xuXHRcblx0ICB2YXIgd3JhcCA9IG5vZGVOYW1lICYmIGdldE1hcmt1cFdyYXAobm9kZU5h
bWUpO1xuXHQgIGlmICh3cmFwKSB7XG5cdCAgICBub2RlLmlubmVySFRNTCA9IHdyYXBbMV0gKyBt
YXJrdXAgKyB3cmFwWzJdO1xuXHRcblx0ICAgIHZhciB3cmFwRGVwdGggPSB3cmFwWzBdO1xuXHQg
ICAgd2hpbGUgKHdyYXBEZXB0aC0tKSB7XG5cdCAgICAgIG5vZGUgPSBub2RlLmxhc3RDaGlsZDtc
blx0ICAgIH1cblx0ICB9IGVsc2Uge1xuXHQgICAgbm9kZS5pbm5lckhUTUwgPSBtYXJrdXA7XG5c
dCAgfVxuXHRcblx0ICB2YXIgc2NyaXB0cyA9IG5vZGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3Nj
cmlwdCcpO1xuXHQgIGlmIChzY3JpcHRzLmxlbmd0aCkge1xuXHQgICAgIWhhbmRsZVNjcmlwdCA/
ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ2NyZWF0ZU5vZGVzRnJvbU1hcmt1cCguLi4pOiBV
bmV4cGVjdGVkIDxzY3JpcHQ+IGVsZW1lbnQgcmVuZGVyZWQuJykgOiBpbnZhcmlhbnQoZmFsc2Up
IDogdm9pZCAwO1xuXHQgICAgY3JlYXRlQXJyYXlGcm9tTWl4ZWQoc2NyaXB0cykuZm9yRWFjaCho
YW5kbGVTY3JpcHQpO1xuXHQgIH1cblx0XG5cdCAgdmFyIG5vZGVzID0gQXJyYXkuZnJvbShub2Rl
LmNoaWxkTm9kZXMpO1xuXHQgIHdoaWxlIChub2RlLmxhc3RDaGlsZCkge1xuXHQgICAgbm9kZS5y
ZW1vdmVDaGlsZChub2RlLmxhc3RDaGlsZCk7XG5cdCAgfVxuXHQgIHJldHVybiBub2Rlcztcblx0
fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVOb2Rlc0Zyb21NYXJrdXA7XG5cbi8qKiov
IH0sXG4vKiAxMDMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNr
X3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBDb3B5cmln
aHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxu
XHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQvKmVzbGludC1kaXNhYmxl
IGZiLXd3dy91bnNhZmUtaHRtbCAqL1xuXHRcblx0dmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg2KTtcblx0XG5cdHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDEpO1xuXHRcblx0LyoqXG5cdCAqIER1bW15IGNvbnRhaW5lciB1c2VkIHRvIGRl
dGVjdCB3aGljaCB3cmFwcyBhcmUgbmVjZXNzYXJ5LlxuXHQgKi9cblx0dmFyIGR1bW15Tm9kZSA9
IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQo
J2RpdicpIDogbnVsbDtcblx0XG5cdC8qKlxuXHQgKiBTb21lIGJyb3dzZXJzIGNhbm5vdCB1c2Ug
YGlubmVySFRNTGAgdG8gcmVuZGVyIGNlcnRhaW4gZWxlbWVudHMgc3RhbmRhbG9uZSxcblx0ICog
c28gd2Ugd3JhcCB0aGVtLCByZW5kZXIgdGhlIHdyYXBwZWQgbm9kZXMsIHRoZW4gZXh0cmFjdCB0
aGUgZGVzaXJlZCBub2RlLlxuXHQgKlxuXHQgKiBJbiBJRTgsIGNlcnRhaW4gZWxlbWVudHMgY2Fu
bm90IHJlbmRlciBhbG9uZSwgc28gd3JhcCBhbGwgZWxlbWVudHMgKCcqJykuXG5cdCAqL1xuXHRc
blx0dmFyIHNob3VsZFdyYXAgPSB7fTtcblx0XG5cdHZhciBzZWxlY3RXcmFwID0gWzEsICc8c2Vs
ZWN0IG11bHRpcGxlPVwidHJ1ZVwiPicsICc8L3NlbGVjdD4nXTtcblx0dmFyIHRhYmxlV3JhcCA9
IFsxLCAnPHRhYmxlPicsICc8L3RhYmxlPiddO1xuXHR2YXIgdHJXcmFwID0gWzMsICc8dGFibGU+
PHRib2R5Pjx0cj4nLCAnPC90cj48L3Rib2R5PjwvdGFibGU+J107XG5cdFxuXHR2YXIgc3ZnV3Jh
cCA9IFsxLCAnPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+JywgJzwv
c3ZnPiddO1xuXHRcblx0dmFyIG1hcmt1cFdyYXAgPSB7XG5cdCAgJyonOiBbMSwgJz88ZGl2Pics
ICc8L2Rpdj4nXSxcblx0XG5cdCAgJ2FyZWEnOiBbMSwgJzxtYXA+JywgJzwvbWFwPiddLFxuXHQg
ICdjb2wnOiBbMiwgJzx0YWJsZT48dGJvZHk+PC90Ym9keT48Y29sZ3JvdXA+JywgJzwvY29sZ3Jv
dXA+PC90YWJsZT4nXSxcblx0ICAnbGVnZW5kJzogWzEsICc8ZmllbGRzZXQ+JywgJzwvZmllbGRz
ZXQ+J10sXG5cdCAgJ3BhcmFtJzogWzEsICc8b2JqZWN0PicsICc8L29iamVjdD4nXSxcblx0ICAn
dHInOiBbMiwgJzx0YWJsZT48dGJvZHk+JywgJzwvdGJvZHk+PC90YWJsZT4nXSxcblx0XG5cdCAg
J29wdGdyb3VwJzogc2VsZWN0V3JhcCxcblx0ICAnb3B0aW9uJzogc2VsZWN0V3JhcCxcblx0XG5c
dCAgJ2NhcHRpb24nOiB0YWJsZVdyYXAsXG5cdCAgJ2NvbGdyb3VwJzogdGFibGVXcmFwLFxuXHQg
ICd0Ym9keSc6IHRhYmxlV3JhcCxcblx0ICAndGZvb3QnOiB0YWJsZVdyYXAsXG5cdCAgJ3RoZWFk
JzogdGFibGVXcmFwLFxuXHRcblx0ICAndGQnOiB0cldyYXAsXG5cdCAgJ3RoJzogdHJXcmFwXG5c
dH07XG5cdFxuXHQvLyBJbml0aWFsaXplIHRoZSBTVkcgZWxlbWVudHMgc2luY2Ugd2Uga25vdyB0
aGV5J2xsIGFsd2F5cyBuZWVkIHRvIGJlIHdyYXBwZWRcblx0Ly8gY29uc2lzdGVudGx5LiBJZiB0
aGV5IGFyZSBjcmVhdGVkIGluc2lkZSBhIDxkaXY+IHRoZXkgd2lsbCBiZSBpbml0aWFsaXplZCBp
blxuXHQvLyB0aGUgd3JvbmcgbmFtZXNwYWNlIChhbmQgd2lsbCBub3QgZGlzcGxheSkuXG5cdHZh
ciBzdmdFbGVtZW50cyA9IFsnY2lyY2xlJywgJ2NsaXBQYXRoJywgJ2RlZnMnLCAnZWxsaXBzZScs
ICdnJywgJ2ltYWdlJywgJ2xpbmUnLCAnbGluZWFyR3JhZGllbnQnLCAnbWFzaycsICdwYXRoJywg
J3BhdHRlcm4nLCAncG9seWdvbicsICdwb2x5bGluZScsICdyYWRpYWxHcmFkaWVudCcsICdyZWN0
JywgJ3N0b3AnLCAndGV4dCcsICd0c3BhbiddO1xuXHRzdmdFbGVtZW50cy5mb3JFYWNoKGZ1bmN0
aW9uIChub2RlTmFtZSkge1xuXHQgIG1hcmt1cFdyYXBbbm9kZU5hbWVdID0gc3ZnV3JhcDtcblx0
ICBzaG91bGRXcmFwW25vZGVOYW1lXSA9IHRydWU7XG5cdH0pO1xuXHRcblx0LyoqXG5cdCAqIEdl
dHMgdGhlIG1hcmt1cCB3cmFwIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBzdXBwbGllZCBgbm9kZU5h
bWVgLlxuXHQgKlxuXHQgKiBOT1RFOiBUaGlzIGxhemlseSBkZXRlY3RzIHdoaWNoIHdyYXBzIGFy
ZSBuZWNlc3NhcnkgZm9yIHRoZSBjdXJyZW50IGJyb3dzZXIuXG5cdCAqXG5cdCAqIEBwYXJhbSB7
c3RyaW5nfSBub2RlTmFtZSBMb3dlcmNhc2UgYG5vZGVOYW1lYC5cblx0ICogQHJldHVybiB7P2Fy
cmF5fSBNYXJrdXAgd3JhcCBjb25maWd1cmF0aW9uLCBpZiBhcHBsaWNhYmxlLlxuXHQgKi9cblx0
ZnVuY3Rpb24gZ2V0TWFya3VwV3JhcChub2RlTmFtZSkge1xuXHQgICEhIWR1bW15Tm9kZSA/ICBm
YWxzZSA/IGludmFyaWFudChmYWxzZSwgJ01hcmt1cCB3cmFwcGluZyBub2RlIG5vdCBpbml0aWFs
aXplZCcpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcblx0ICBpZiAoIW1hcmt1cFdyYXAu
aGFzT3duUHJvcGVydHkobm9kZU5hbWUpKSB7XG5cdCAgICBub2RlTmFtZSA9ICcqJztcblx0ICB9
XG5cdCAgaWYgKCFzaG91bGRXcmFwLmhhc093blByb3BlcnR5KG5vZGVOYW1lKSkge1xuXHQgICAg
aWYgKG5vZGVOYW1lID09PSAnKicpIHtcblx0ICAgICAgZHVtbXlOb2RlLmlubmVySFRNTCA9ICc8
bGluayAvPic7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBkdW1teU5vZGUuaW5uZXJIVE1MID0g
JzwnICsgbm9kZU5hbWUgKyAnPjwvJyArIG5vZGVOYW1lICsgJz4nO1xuXHQgICAgfVxuXHQgICAg
c2hvdWxkV3JhcFtub2RlTmFtZV0gPSAhZHVtbXlOb2RlLmZpcnN0Q2hpbGQ7XG5cdCAgfVxuXHQg
IHJldHVybiBzaG91bGRXcmFwW25vZGVOYW1lXSA/IG1hcmt1cFdyYXBbbm9kZU5hbWVdIDogbnVs
bDtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBnZXRNYXJrdXBXcmFwO1xuXG4vKioqLyB9
LFxuLyogMTA0ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHQvKipc
blx0ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIEB0eXBlY2hlY2tz
XG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0LyoqXG5cdCAqIEdldHMgdGhlIHNj
cm9sbCBwb3NpdGlvbiBvZiB0aGUgc3VwcGxpZWQgZWxlbWVudCBvciB3aW5kb3cuXG5cdCAqXG5c
dCAqIFRoZSByZXR1cm4gdmFsdWVzIGFyZSB1bmJvdW5kZWQsIHVubGlrZSBgZ2V0U2Nyb2xsUG9z
aXRpb25gLiBUaGlzIG1lYW5zIHRoZXlcblx0ICogbWF5IGJlIG5lZ2F0aXZlIG9yIGV4Y2VlZCB0
aGUgZWxlbWVudCBib3VuZGFyaWVzICh3aGljaCBpcyBwb3NzaWJsZSB1c2luZ1xuXHQgKiBpbmVy
dGlhbCBzY3JvbGxpbmcpLlxuXHQgKlxuXHQgKiBAcGFyYW0ge0RPTVdpbmRvd3xET01FbGVtZW50
fSBzY3JvbGxhYmxlXG5cdCAqIEByZXR1cm4ge29iamVjdH0gTWFwIHdpdGggYHhgIGFuZCBgeWAg
a2V5cy5cblx0ICovXG5cdFxuXHRmdW5jdGlvbiBnZXRVbmJvdW5kZWRTY3JvbGxQb3NpdGlvbihz
Y3JvbGxhYmxlKSB7XG5cdCAgaWYgKHNjcm9sbGFibGUuV2luZG93ICYmIHNjcm9sbGFibGUgaW5z
dGFuY2VvZiBzY3JvbGxhYmxlLldpbmRvdykge1xuXHQgICAgcmV0dXJuIHtcblx0ICAgICAgeDog
c2Nyb2xsYWJsZS5wYWdlWE9mZnNldCB8fCBzY3JvbGxhYmxlLmRvY3VtZW50LmRvY3VtZW50RWxl
bWVudC5zY3JvbGxMZWZ0LFxuXHQgICAgICB5OiBzY3JvbGxhYmxlLnBhZ2VZT2Zmc2V0IHx8IHNj
cm9sbGFibGUuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcFxuXHQgICAgfTtcblx0
ICB9XG5cdCAgcmV0dXJuIHtcblx0ICAgIHg6IHNjcm9sbGFibGUuc2Nyb2xsTGVmdCxcblx0ICAg
IHk6IHNjcm9sbGFibGUuc2Nyb2xsVG9wXG5cdCAgfTtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9y
dHMgPSBnZXRVbmJvdW5kZWRTY3JvbGxQb3NpdGlvbjtcblxuLyoqKi8gfSxcbi8qIDEwNSAqL1xu
LyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRc
blx0LyoqXG5cdCAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
XHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBAdHlw
ZWNoZWNrc1xuXHQgKi9cblx0XG5cdHZhciBfdXBwZXJjYXNlUGF0dGVybiA9IC8oW0EtWl0pL2c7
XG5cdFxuXHQvKipcblx0ICogSHlwaGVuYXRlcyBhIGNhbWVsY2FzZWQgc3RyaW5nLCBmb3IgZXhh
bXBsZTpcblx0ICpcblx0ICogICA+IGh5cGhlbmF0ZSgnYmFja2dyb3VuZENvbG9yJylcblx0ICog
ICA8IFwiYmFja2dyb3VuZC1jb2xvclwiXG5cdCAqXG5cdCAqIEZvciBDU1Mgc3R5bGUgbmFtZXMs
IHVzZSBgaHlwaGVuYXRlU3R5bGVOYW1lYCBpbnN0ZWFkIHdoaWNoIHdvcmtzIHByb3Blcmx5XG5c
dCAqIHdpdGggYWxsIHZlbmRvciBwcmVmaXhlcywgaW5jbHVkaW5nIGBtc2AuXG5cdCAqXG5cdCAq
IEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcblx0ICogQHJldHVybiB7c3RyaW5nfVxuXHQgKi9cblx0
ZnVuY3Rpb24gaHlwaGVuYXRlKHN0cmluZykge1xuXHQgIHJldHVybiBzdHJpbmcucmVwbGFjZShf
dXBwZXJjYXNlUGF0dGVybiwgJy0kMScpLnRvTG93ZXJDYXNlKCk7XG5cdH1cblx0XG5cdG1vZHVs
ZS5leHBvcnRzID0gaHlwaGVuYXRlO1xuXG4vKioqLyB9LFxuLyogMTA2ICovXG4vKioqLyBmdW5j
dGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0
ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIEB0eXBlY2hlY2tzXG5c
dCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIGh5cGhlbmF0ZSA9IF9fd2VicGFj
a19yZXF1aXJlX18oMTA1KTtcblx0XG5cdHZhciBtc1BhdHRlcm4gPSAvXm1zLS87XG5cdFxuXHQv
Kipcblx0ICogSHlwaGVuYXRlcyBhIGNhbWVsY2FzZWQgQ1NTIHByb3BlcnR5IG5hbWUsIGZvciBl
eGFtcGxlOlxuXHQgKlxuXHQgKiAgID4gaHlwaGVuYXRlU3R5bGVOYW1lKCdiYWNrZ3JvdW5kQ29s
b3InKVxuXHQgKiAgIDwgXCJiYWNrZ3JvdW5kLWNvbG9yXCJcblx0ICogICA+IGh5cGhlbmF0ZVN0
eWxlTmFtZSgnTW96VHJhbnNpdGlvbicpXG5cdCAqICAgPCBcIi1tb3otdHJhbnNpdGlvblwiXG5c
dCAqICAgPiBoeXBoZW5hdGVTdHlsZU5hbWUoJ21zVHJhbnNpdGlvbicpXG5cdCAqICAgPCBcIi1t
cy10cmFuc2l0aW9uXCJcblx0ICpcblx0ICogQXMgTW9kZXJuaXpyIHN1Z2dlc3RzIChodHRwOi8v
bW9kZXJuaXpyLmNvbS9kb2NzLyNwcmVmaXhlZCksIGFuIGBtc2AgcHJlZml4XG5cdCAqIGlzIGNv
bnZlcnRlZCB0byBgLW1zLWAuXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcblx0
ICogQHJldHVybiB7c3RyaW5nfVxuXHQgKi9cblx0ZnVuY3Rpb24gaHlwaGVuYXRlU3R5bGVOYW1l
KHN0cmluZykge1xuXHQgIHJldHVybiBoeXBoZW5hdGUoc3RyaW5nKS5yZXBsYWNlKG1zUGF0dGVy
biwgJy1tcy0nKTtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBoeXBoZW5hdGVTdHlsZU5h
bWU7XG5cbi8qKiovIH0sXG4vKiAxMDcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgKGMpIDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0
ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cblx0ICpcblx0ICogQHR5cGVjaGVja3Ncblx0ICovXG5cdFxuXHQvKipcblx0
ICogQHBhcmFtIHsqfSBvYmplY3QgVGhlIG9iamVjdCB0byBjaGVjay5cblx0ICogQHJldHVybiB7
Ym9vbGVhbn0gV2hldGhlciBvciBub3QgdGhlIG9iamVjdCBpcyBhIERPTSBub2RlLlxuXHQgKi9c
blx0ZnVuY3Rpb24gaXNOb2RlKG9iamVjdCkge1xuXHQgIHZhciBkb2MgPSBvYmplY3QgPyBvYmpl
Y3Qub3duZXJEb2N1bWVudCB8fCBvYmplY3QgOiBkb2N1bWVudDtcblx0ICB2YXIgZGVmYXVsdFZp
ZXcgPSBkb2MuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xuXHQgIHJldHVybiAhIShvYmplY3QgJiYg
KHR5cGVvZiBkZWZhdWx0Vmlldy5Ob2RlID09PSAnZnVuY3Rpb24nID8gb2JqZWN0IGluc3RhbmNl
b2YgZGVmYXVsdFZpZXcuTm9kZSA6IHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmIHR5cGVv
ZiBvYmplY3Qubm9kZVR5cGUgPT09ICdudW1iZXInICYmIHR5cGVvZiBvYmplY3Qubm9kZU5hbWUg
PT09ICdzdHJpbmcnKSk7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gaXNOb2RlO1xuXG4v
KioqLyB9LFxuLyogMTA4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHQvKipcblx0ICogQ29w
eXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIEB0eXBlY2hlY2tzXG5cdCAqL1xu
XHRcblx0dmFyIGlzTm9kZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTA3KTtcblx0XG5cdC8qKlxu
XHQgKiBAcGFyYW0geyp9IG9iamVjdCBUaGUgb2JqZWN0IHRvIGNoZWNrLlxuXHQgKiBAcmV0dXJu
IHtib29sZWFufSBXaGV0aGVyIG9yIG5vdCB0aGUgb2JqZWN0IGlzIGEgRE9NIHRleHQgbm9kZS5c
blx0ICovXG5cdGZ1bmN0aW9uIGlzVGV4dE5vZGUob2JqZWN0KSB7XG5cdCAgcmV0dXJuIGlzTm9k
ZShvYmplY3QpICYmIG9iamVjdC5ub2RlVHlwZSA9PSAzO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhw
b3J0cyA9IGlzVGV4dE5vZGU7XG5cbi8qKiovIH0sXG4vKiAxMDkgKi9cbi8qKiovIGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cblx0ICpcblx0ICogXG5cdCAqIEB0eXBlY2hlY2tzIHN0YXRpYy1vbmx5XG5cdCAqL1xu
XHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0LyoqXG5cdCAqIE1lbW9pemVzIHRoZSByZXR1cm4g
dmFsdWUgb2YgYSBmdW5jdGlvbiB0aGF0IGFjY2VwdHMgb25lIHN0cmluZyBhcmd1bWVudC5cblx0
ICovXG5cdFxuXHRmdW5jdGlvbiBtZW1vaXplU3RyaW5nT25seShjYWxsYmFjaykge1xuXHQgIHZh
ciBjYWNoZSA9IHt9O1xuXHQgIHJldHVybiBmdW5jdGlvbiAoc3RyaW5nKSB7XG5cdCAgICBpZiAo
IWNhY2hlLmhhc093blByb3BlcnR5KHN0cmluZykpIHtcblx0ICAgICAgY2FjaGVbc3RyaW5nXSA9
IGNhbGxiYWNrLmNhbGwodGhpcywgc3RyaW5nKTtcblx0ICAgIH1cblx0ICAgIHJldHVybiBjYWNo
ZVtzdHJpbmddO1xuXHQgIH07XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gbWVtb2l6ZVN0
cmluZ09ubHk7XG5cbi8qKiovIH0sXG4vKiAxMTAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwg
ZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxNSwgWWFob28hIEluYy5cblx0
ICogQ29weXJpZ2h0cyBsaWNlbnNlZCB1bmRlciB0aGUgTmV3IEJTRCBMaWNlbnNlLiBTZWUgdGhl
IGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuXHQgKi9cblx0J3VzZSBzdHJp
Y3QnO1xuXHRcblx0dmFyIFJFQUNUX1NUQVRJQ1MgPSB7XG5cdCAgICBjaGlsZENvbnRleHRUeXBl
czogdHJ1ZSxcblx0ICAgIGNvbnRleHRUeXBlczogdHJ1ZSxcblx0ICAgIGRlZmF1bHRQcm9wczog
dHJ1ZSxcblx0ICAgIGRpc3BsYXlOYW1lOiB0cnVlLFxuXHQgICAgZ2V0RGVmYXVsdFByb3BzOiB0
cnVlLFxuXHQgICAgbWl4aW5zOiB0cnVlLFxuXHQgICAgcHJvcFR5cGVzOiB0cnVlLFxuXHQgICAg
dHlwZTogdHJ1ZVxuXHR9O1xuXHRcblx0dmFyIEtOT1dOX1NUQVRJQ1MgPSB7XG5cdCAgbmFtZTog
dHJ1ZSxcblx0ICBsZW5ndGg6IHRydWUsXG5cdCAgcHJvdG90eXBlOiB0cnVlLFxuXHQgIGNhbGxl
cjogdHJ1ZSxcblx0ICBjYWxsZWU6IHRydWUsXG5cdCAgYXJndW1lbnRzOiB0cnVlLFxuXHQgIGFy
aXR5OiB0cnVlXG5cdH07XG5cdFxuXHR2YXIgZ2V0T3duUHJvcGVydHlTeW1ib2xzID0gT2JqZWN0
LmdldE93blByb3BlcnR5U3ltYm9scztcblx0dmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnBy
b3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcblx0dmFyIHByb3BJc0VudW1lcmFibGUgPSBPYmplY3Qu
cHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXHR2YXIgZ2V0UHJvdG90eXBlT2YgPSBP
YmplY3QuZ2V0UHJvdG90eXBlT2Y7XG5cdHZhciBvYmplY3RQcm90b3R5cGUgPSBnZXRQcm90b3R5
cGVPZiAmJiBnZXRQcm90b3R5cGVPZihPYmplY3QpO1xuXHR2YXIgZ2V0T3duUHJvcGVydHlOYW1l
cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBm
dW5jdGlvbiBob2lzdE5vblJlYWN0U3RhdGljcyh0YXJnZXRDb21wb25lbnQsIHNvdXJjZUNvbXBv
bmVudCwgYmxhY2tsaXN0KSB7XG5cdCAgICBpZiAodHlwZW9mIHNvdXJjZUNvbXBvbmVudCAhPT0g
J3N0cmluZycpIHsgLy8gZG9uJ3QgaG9pc3Qgb3ZlciBzdHJpbmcgKGh0bWwpIGNvbXBvbmVudHNc
blx0XG5cdCAgICAgICAgaWYgKG9iamVjdFByb3RvdHlwZSkge1xuXHQgICAgICAgICAgICB2YXIg
aW5oZXJpdGVkQ29tcG9uZW50ID0gZ2V0UHJvdG90eXBlT2Yoc291cmNlQ29tcG9uZW50KTtcblx0
ICAgICAgICAgICAgaWYgKGluaGVyaXRlZENvbXBvbmVudCAmJiBpbmhlcml0ZWRDb21wb25lbnQg
IT09IG9iamVjdFByb3RvdHlwZSkge1xuXHQgICAgICAgICAgICAgICAgaG9pc3ROb25SZWFjdFN0
YXRpY3ModGFyZ2V0Q29tcG9uZW50LCBpbmhlcml0ZWRDb21wb25lbnQsIGJsYWNrbGlzdCk7XG5c
dCAgICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdFxuXHQgICAgICAgIHZhciBrZXlzID0gZ2V0
T3duUHJvcGVydHlOYW1lcyhzb3VyY2VDb21wb25lbnQpO1xuXHRcblx0ICAgICAgICBpZiAoZ2V0
T3duUHJvcGVydHlTeW1ib2xzKSB7XG5cdCAgICAgICAgICAgIGtleXMgPSBrZXlzLmNvbmNhdChn
ZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlQ29tcG9uZW50KSk7XG5cdCAgICAgICAgfVxuXHRc
blx0ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyArK2kpIHtcblx0ICAg
ICAgICAgICAgdmFyIGtleSA9IGtleXNbaV07XG5cdCAgICAgICAgICAgIGlmICghUkVBQ1RfU1RB
VElDU1trZXldICYmICFLTk9XTl9TVEFUSUNTW2tleV0gJiYgKCFibGFja2xpc3QgfHwgIWJsYWNr
bGlzdFtrZXldKSkge1xuXHQgICAgICAgICAgICAgICAgLy8gT25seSBob2lzdCBlbnVtZXJhYmxl
cyBhbmQgbm9uLWVudW1lcmFibGUgZnVuY3Rpb25zXG5cdCAgICAgICAgICAgICAgICBpZihwcm9w
SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlQ29tcG9uZW50LCBrZXkpIHx8IHR5cGVvZiBzb3VyY2VD
b21wb25lbnRba2V5XSA9PT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICAgICAgICAgICAgICAgIHRy
eSB7IC8vIEF2b2lkIGZhaWx1cmVzIGZyb20gcmVhZC1vbmx5IHByb3BlcnRpZXNcblx0ICAgICAg
ICAgICAgICAgICAgICAgICAgdGFyZ2V0Q29tcG9uZW50W2tleV0gPSBzb3VyY2VDb21wb25lbnRb
a2V5XTtcblx0ICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuXHQgICAgICAgICAg
ICAgICAgfVxuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHRcblx0ICAgICAgICByZXR1
cm4gdGFyZ2V0Q29tcG9uZW50O1xuXHQgICAgfVxuXHRcblx0ICAgIHJldHVybiB0YXJnZXRDb21w
b25lbnQ7XG5cdH07XG5cblxuLyoqKi8gfSxcbi8qIDExMSAqL1xuLyoqKi8gZnVuY3Rpb24obW9k
dWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHly
aWdodCAyMDEzLTIwMTUsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0LyoqXG5c
dCAqIFVzZSBpbnZhcmlhbnQoKSB0byBhc3NlcnQgc3RhdGUgd2hpY2ggeW91ciBwcm9ncmFtIGFz
c3VtZXMgdG8gYmUgdHJ1ZS5cblx0ICpcblx0ICogUHJvdmlkZSBzcHJpbnRmLXN0eWxlIGZvcm1h
dCAob25seSAlcyBpcyBzdXBwb3J0ZWQpIGFuZCBhcmd1bWVudHNcblx0ICogdG8gcHJvdmlkZSBp
bmZvcm1hdGlvbiBhYm91dCB3aGF0IGJyb2tlIGFuZCB3aGF0IHlvdSB3ZXJlXG5cdCAqIGV4cGVj
dGluZy5cblx0ICpcblx0ICogVGhlIGludmFyaWFudCBtZXNzYWdlIHdpbGwgYmUgc3RyaXBwZWQg
aW4gcHJvZHVjdGlvbiwgYnV0IHRoZSBpbnZhcmlhbnRcblx0ICogd2lsbCByZW1haW4gdG8gZW5z
dXJlIGxvZ2ljIGRvZXMgbm90IGRpZmZlciBpbiBwcm9kdWN0aW9uLlxuXHQgKi9cblx0XG5cdHZh
ciBpbnZhcmlhbnQgPSBmdW5jdGlvbihjb25kaXRpb24sIGZvcm1hdCwgYSwgYiwgYywgZCwgZSwg
Zikge1xuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgaWYgKGZvcm1hdCA9PT0gdW5kZWZpbmVkKSB7
XG5cdCAgICAgIHRocm93IG5ldyBFcnJvcignaW52YXJpYW50IHJlcXVpcmVzIGFuIGVycm9yIG1l
c3NhZ2UgYXJndW1lbnQnKTtcblx0ICAgIH1cblx0ICB9XG5cdFxuXHQgIGlmICghY29uZGl0aW9u
KSB7XG5cdCAgICB2YXIgZXJyb3I7XG5cdCAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtc
blx0ICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXG5cdCAgICAgICAgJ01pbmlmaWVkIGV4Y2VwdGlv
biBvY2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50ICcgK1xuXHQg
ICAgICAgICdmb3IgdGhlIGZ1bGwgZXJyb3IgbWVzc2FnZSBhbmQgYWRkaXRpb25hbCBoZWxwZnVs
IHdhcm5pbmdzLidcblx0ICAgICAgKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHZhciBhcmdz
ID0gW2EsIGIsIGMsIGQsIGUsIGZdO1xuXHQgICAgICB2YXIgYXJnSW5kZXggPSAwO1xuXHQgICAg
ICBlcnJvciA9IG5ldyBFcnJvcihcblx0ICAgICAgICBmb3JtYXQucmVwbGFjZSgvJXMvZywgZnVu
Y3Rpb24oKSB7IHJldHVybiBhcmdzW2FyZ0luZGV4KytdOyB9KVxuXHQgICAgICApO1xuXHQgICAg
ICBlcnJvci5uYW1lID0gJ0ludmFyaWFudCBWaW9sYXRpb24nO1xuXHQgICAgfVxuXHRcblx0ICAg
IGVycm9yLmZyYW1lc1RvUG9wID0gMTsgLy8gd2UgZG9uJ3QgY2FyZSBhYm91dCBpbnZhcmlhbnQn
cyBvd24gZnJhbWVcblx0ICAgIHRocm93IGVycm9yO1xuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVs
ZS5leHBvcnRzID0gaW52YXJpYW50O1xuXG5cbi8qKiovIH0sXG4vKiAxMTIgKi9cbi8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBT
eW1ib2wgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU0KSxcblx0ICAgIGdldFJhd1RhZyA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMTE1KSxcblx0ICAgIG9iamVjdFRvU3RyaW5nID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxMTYpO1xuXHRcblx0LyoqIGBPYmplY3QjdG9TdHJpbmdgIHJlc3VsdCByZWZlcmVu
Y2VzLiAqL1xuXHR2YXIgbnVsbFRhZyA9ICdbb2JqZWN0IE51bGxdJyxcblx0ICAgIHVuZGVmaW5l
ZFRhZyA9ICdbb2JqZWN0IFVuZGVmaW5lZF0nO1xuXHRcblx0LyoqIEJ1aWx0LWluIHZhbHVlIHJl
ZmVyZW5jZXMuICovXG5cdHZhciBzeW1Ub1N0cmluZ1RhZyA9IFN5bWJvbCA/IFN5bWJvbC50b1N0
cmluZ1RhZyA6IHVuZGVmaW5lZDtcblx0XG5cdC8qKlxuXHQgKiBUaGUgYmFzZSBpbXBsZW1lbnRh
dGlvbiBvZiBgZ2V0VGFnYCB3aXRob3V0IGZhbGxiYWNrcyBmb3IgYnVnZ3kgZW52aXJvbm1lbnRz
LlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0
byBxdWVyeS5cblx0ICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgYHRvU3RyaW5nVGFn
YC5cblx0ICovXG5cdGZ1bmN0aW9uIGJhc2VHZXRUYWcodmFsdWUpIHtcblx0ICBpZiAodmFsdWUg
PT0gbnVsbCkge1xuXHQgICAgcmV0dXJuIHZhbHVlID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWRU
YWcgOiBudWxsVGFnO1xuXHQgIH1cblx0ICByZXR1cm4gKHN5bVRvU3RyaW5nVGFnICYmIHN5bVRv
U3RyaW5nVGFnIGluIE9iamVjdCh2YWx1ZSkpXG5cdCAgICA/IGdldFJhd1RhZyh2YWx1ZSlcblx0
ICAgIDogb2JqZWN0VG9TdHJpbmcodmFsdWUpO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9
IGJhc2VHZXRUYWc7XG5cblxuLyoqKi8gfSxcbi8qIDExMyAqL1xuLyoqKi8gZnVuY3Rpb24obW9k
dWxlLCBleHBvcnRzKSB7XG5cblx0LyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9u
KGdsb2JhbCkgey8qKiBEZXRlY3QgZnJlZSB2YXJpYWJsZSBgZ2xvYmFsYCBmcm9tIE5vZGUuanMu
ICovXG5cdHZhciBmcmVlR2xvYmFsID0gdHlwZW9mIGdsb2JhbCA9PSAnb2JqZWN0JyAmJiBnbG9i
YWwgJiYgZ2xvYmFsLk9iamVjdCA9PT0gT2JqZWN0ICYmIGdsb2JhbDtcblx0XG5cdG1vZHVsZS5l
eHBvcnRzID0gZnJlZUdsb2JhbDtcblx0XG5cdC8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqL30u
Y2FsbChleHBvcnRzLCAoZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KCkpKSlcblxuLyoqKi8g
fSxcbi8qIDExNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7XG5cblx0dmFyIG92ZXJBcmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDExNyk7
XG5cdFxuXHQvKiogQnVpbHQtaW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cblx0dmFyIGdldFByb3Rv
dHlwZSA9IG92ZXJBcmcoT2JqZWN0LmdldFByb3RvdHlwZU9mLCBPYmplY3QpO1xuXHRcblx0bW9k
dWxlLmV4cG9ydHMgPSBnZXRQcm90b3R5cGU7XG5cblxuLyoqKi8gfSxcbi8qIDExNSAqL1xuLyoq
Ki8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0
dmFyIFN5bWJvbCA9IF9fd2VicGFja19yZXF1aXJlX18oNTQpO1xuXHRcblx0LyoqIFVzZWQgZm9y
IGJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzLiAqL1xuXHR2YXIgb2JqZWN0UHJvdG8gPSBPYmpl
Y3QucHJvdG90eXBlO1xuXHRcblx0LyoqIFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHBy
b3BlcnRpZXMuICovXG5cdHZhciBoYXNPd25Qcm9wZXJ0eSA9IG9iamVjdFByb3RvLmhhc093blBy
b3BlcnR5O1xuXHRcblx0LyoqXG5cdCAqIFVzZWQgdG8gcmVzb2x2ZSB0aGVcblx0ICogW2B0b1N0
cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8jc2Vj
LW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG5cdCAqIG9mIHZhbHVlcy5cblx0ICovXG5cdHZh
ciBuYXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXHRcblx0Lyoq
IEJ1aWx0LWluIHZhbHVlIHJlZmVyZW5jZXMuICovXG5cdHZhciBzeW1Ub1N0cmluZ1RhZyA9IFN5
bWJvbCA/IFN5bWJvbC50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcblx0XG5cdC8qKlxuXHQgKiBB
IHNwZWNpYWxpemVkIHZlcnNpb24gb2YgYGJhc2VHZXRUYWdgIHdoaWNoIGlnbm9yZXMgYFN5bWJv
bC50b1N0cmluZ1RhZ2AgdmFsdWVzLlxuXHQgKlxuXHQgKiBAcHJpdmF0ZVxuXHQgKiBAcGFyYW0g
eyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cblx0ICogQHJldHVybnMge3N0cmluZ30gUmV0
dXJucyB0aGUgcmF3IGB0b1N0cmluZ1RhZ2AuXG5cdCAqL1xuXHRmdW5jdGlvbiBnZXRSYXdUYWco
dmFsdWUpIHtcblx0ICB2YXIgaXNPd24gPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCBzeW1U
b1N0cmluZ1RhZyksXG5cdCAgICAgIHRhZyA9IHZhbHVlW3N5bVRvU3RyaW5nVGFnXTtcblx0XG5c
dCAgdHJ5IHtcblx0ICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9IHVuZGVmaW5lZDtcblx0ICAg
IHZhciB1bm1hc2tlZCA9IHRydWU7XG5cdCAgfSBjYXRjaCAoZSkge31cblx0XG5cdCAgdmFyIHJl
c3VsdCA9IG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xuXHQgIGlmICh1bm1hc2tl
ZCkge1xuXHQgICAgaWYgKGlzT3duKSB7XG5cdCAgICAgIHZhbHVlW3N5bVRvU3RyaW5nVGFnXSA9
IHRhZztcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIGRlbGV0ZSB2YWx1ZVtzeW1Ub1N0cmluZ1Rh
Z107XG5cdCAgICB9XG5cdCAgfVxuXHQgIHJldHVybiByZXN1bHQ7XG5cdH1cblx0XG5cdG1vZHVs
ZS5leHBvcnRzID0gZ2V0UmF3VGFnO1xuXG5cbi8qKiovIH0sXG4vKiAxMTYgKi9cbi8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRo
b2QgcmVmZXJlbmNlcy4gKi9cblx0dmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtc
blx0XG5cdC8qKlxuXHQgKiBVc2VkIHRvIHJlc29sdmUgdGhlXG5cdCAqIFtgdG9TdHJpbmdUYWdg
XShodHRwOi8vZWNtYS1pbnRlcm5hdGlvbmFsLm9yZy9lY21hLTI2Mi83LjAvI3NlYy1vYmplY3Qu
cHJvdG90eXBlLnRvc3RyaW5nKVxuXHQgKiBvZiB2YWx1ZXMuXG5cdCAqL1xuXHR2YXIgbmF0aXZl
T2JqZWN0VG9TdHJpbmcgPSBvYmplY3RQcm90by50b1N0cmluZztcblx0XG5cdC8qKlxuXHQgKiBD
b252ZXJ0cyBgdmFsdWVgIHRvIGEgc3RyaW5nIHVzaW5nIGBPYmplY3QucHJvdG90eXBlLnRvU3Ry
aW5nYC5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFs
dWUgdG8gY29udmVydC5cblx0ICogQHJldHVybnMge3N0cmluZ30gUmV0dXJucyB0aGUgY29udmVy
dGVkIHN0cmluZy5cblx0ICovXG5cdGZ1bmN0aW9uIG9iamVjdFRvU3RyaW5nKHZhbHVlKSB7XG5c
dCAgcmV0dXJuIG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xuXHR9XG5cdFxuXHRt
b2R1bGUuZXhwb3J0cyA9IG9iamVjdFRvU3RyaW5nO1xuXG5cbi8qKiovIH0sXG4vKiAxMTcgKi9c
bi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDcmVhdGVz
IGEgdW5hcnkgZnVuY3Rpb24gdGhhdCBpbnZva2VzIGBmdW5jYCB3aXRoIGl0cyBhcmd1bWVudCB0
cmFuc2Zvcm1lZC5cblx0ICpcblx0ICogQHByaXZhdGVcblx0ICogQHBhcmFtIHtGdW5jdGlvbn0g
ZnVuYyBUaGUgZnVuY3Rpb24gdG8gd3JhcC5cblx0ICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNm
b3JtIFRoZSBhcmd1bWVudCB0cmFuc2Zvcm0uXG5cdCAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0
dXJucyB0aGUgbmV3IGZ1bmN0aW9uLlxuXHQgKi9cblx0ZnVuY3Rpb24gb3ZlckFyZyhmdW5jLCB0
cmFuc2Zvcm0pIHtcblx0ICByZXR1cm4gZnVuY3Rpb24oYXJnKSB7XG5cdCAgICByZXR1cm4gZnVu
Yyh0cmFuc2Zvcm0oYXJnKSk7XG5cdCAgfTtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBv
dmVyQXJnO1xuXG5cbi8qKiovIH0sXG4vKiAxMTggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwg
ZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdHZhciBmcmVlR2xvYmFsID0gX193
ZWJwYWNrX3JlcXVpcmVfXygxMTMpO1xuXHRcblx0LyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBz
ZWxmYC4gKi9cblx0dmFyIGZyZWVTZWxmID0gdHlwZW9mIHNlbGYgPT0gJ29iamVjdCcgJiYgc2Vs
ZiAmJiBzZWxmLk9iamVjdCA9PT0gT2JqZWN0ICYmIHNlbGY7XG5cdFxuXHQvKiogVXNlZCBhcyBh
IHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4gKi9cblx0dmFyIHJvb3QgPSBmcmVlR2xv
YmFsIHx8IGZyZWVTZWxmIHx8IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdFxuXHRtb2R1
bGUuZXhwb3J0cyA9IHJvb3Q7XG5cblxuLyoqKi8gfSxcbi8qIDExOSAqL1xuLyoqKi8gZnVuY3Rp
b24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAqIENoZWNrcyBpZiBgdmFsdWVgIGlz
IG9iamVjdC1saWtlLiBBIHZhbHVlIGlzIG9iamVjdC1saWtlIGlmIGl0J3Mgbm90IGBudWxsYFxu
XHQgKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0XCIuXG5cdCAqXG5cdCAq
IEBzdGF0aWNcblx0ICogQG1lbWJlck9mIF9cblx0ICogQHNpbmNlIDQuMC4wXG5cdCAqIEBjYXRl
Z29yeSBMYW5nXG5cdCAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxuXHQg
KiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBvYmplY3Qt
bGlrZSwgZWxzZSBgZmFsc2VgLlxuXHQgKiBAZXhhbXBsZVxuXHQgKlxuXHQgKiBfLmlzT2JqZWN0
TGlrZSh7fSk7XG5cdCAqIC8vID0+IHRydWVcblx0ICpcblx0ICogXy5pc09iamVjdExpa2UoWzEs
IDIsIDNdKTtcblx0ICogLy8gPT4gdHJ1ZVxuXHQgKlxuXHQgKiBfLmlzT2JqZWN0TGlrZShfLm5v
b3ApO1xuXHQgKiAvLyA9PiBmYWxzZVxuXHQgKlxuXHQgKiBfLmlzT2JqZWN0TGlrZShudWxsKTtc
blx0ICogLy8gPT4gZmFsc2Vcblx0ICovXG5cdGZ1bmN0aW9uIGlzT2JqZWN0TGlrZSh2YWx1ZSkg
e1xuXHQgIHJldHVybiB2YWx1ZSAhPSBudWxsICYmIHR5cGVvZiB2YWx1ZSA9PSAnb2JqZWN0Jztc
blx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBpc09iamVjdExpa2U7XG5cblxuLyoqKi8gfSxc
bi8qIDEyMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVx
dWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqL1xu
XHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0aWYgKGZhbHNlKSB7XG5cdCAgdmFyIGludmFyaWFu
dCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXHQgIHZhciB3YXJuaW5nID0gcmVx
dWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXHQgIHZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9
IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG5cdCAgdmFyIGxvZ2dlZFR5
cGVGYWlsdXJlcyA9IHt9O1xuXHR9XG5cdFxuXHQvKipcblx0ICogQXNzZXJ0IHRoYXQgdGhlIHZh
bHVlcyBtYXRjaCB3aXRoIHRoZSB0eXBlIHNwZWNzLlxuXHQgKiBFcnJvciBtZXNzYWdlcyBhcmUg
bWVtb3JpemVkIGFuZCB3aWxsIG9ubHkgYmUgc2hvd24gb25jZS5cblx0ICpcblx0ICogQHBhcmFt
IHtvYmplY3R9IHR5cGVTcGVjcyBNYXAgb2YgbmFtZSB0byBhIFJlYWN0UHJvcFR5cGVcblx0ICog
QHBhcmFtIHtvYmplY3R9IHZhbHVlcyBSdW50aW1lIHZhbHVlcyB0aGF0IG5lZWQgdG8gYmUgdHlw
ZS1jaGVja2VkXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhdGlvbiBlLmcuIFwicHJvcFwiLCBc
ImNvbnRleHRcIiwgXCJjaGlsZCBjb250ZXh0XCJcblx0ICogQHBhcmFtIHtzdHJpbmd9IGNvbXBv
bmVudE5hbWUgTmFtZSBvZiB0aGUgY29tcG9uZW50IGZvciBlcnJvciBtZXNzYWdlcy5cblx0ICog
QHBhcmFtIHs/RnVuY3Rpb259IGdldFN0YWNrIFJldHVybnMgdGhlIGNvbXBvbmVudCBzdGFjay5c
blx0ICogQHByaXZhdGVcblx0ICovXG5cdGZ1bmN0aW9uIGNoZWNrUHJvcFR5cGVzKHR5cGVTcGVj
cywgdmFsdWVzLCBsb2NhdGlvbiwgY29tcG9uZW50TmFtZSwgZ2V0U3RhY2spIHtcblx0ICBpZiAo
ZmFsc2UpIHtcblx0ICAgIGZvciAodmFyIHR5cGVTcGVjTmFtZSBpbiB0eXBlU3BlY3MpIHtcblx0
ICAgICAgaWYgKHR5cGVTcGVjcy5oYXNPd25Qcm9wZXJ0eSh0eXBlU3BlY05hbWUpKSB7XG5cdCAg
ICAgICAgdmFyIGVycm9yO1xuXHQgICAgICAgIC8vIFByb3AgdHlwZSB2YWxpZGF0aW9uIG1heSB0
aHJvdy4gSW4gY2FzZSB0aGV5IGRvLCB3ZSBkb24ndCB3YW50IHRvXG5cdCAgICAgICAgLy8gZmFp
bCB0aGUgcmVuZGVyIHBoYXNlIHdoZXJlIGl0IGRpZG4ndCBmYWlsIGJlZm9yZS4gU28gd2UgbG9n
IGl0LlxuXHQgICAgICAgIC8vIEFmdGVyIHRoZXNlIGhhdmUgYmVlbiBjbGVhbmVkIHVwLCB3ZSds
bCBsZXQgdGhlbSB0aHJvdy5cblx0ICAgICAgICB0cnkge1xuXHQgICAgICAgICAgLy8gVGhpcyBp
cyBpbnRlbnRpb25hbGx5IGFuIGludmFyaWFudCB0aGF0IGdldHMgY2F1Z2h0LiBJdCdzIHRoZSBz
YW1lXG5cdCAgICAgICAgICAvLyBiZWhhdmlvciBhcyB3aXRob3V0IHRoaXMgc3RhdGVtZW50IGV4
Y2VwdCB3aXRoIGEgYmV0dGVyIG1lc3NhZ2UuXG5cdCAgICAgICAgICBpbnZhcmlhbnQodHlwZW9m
IHR5cGVTcGVjc1t0eXBlU3BlY05hbWVdID09PSAnZnVuY3Rpb24nLCAnJXM6ICVzIHR5cGUgYCVz
YCBpcyBpbnZhbGlkOyBpdCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkgZnJvbSAnICsgJ1Jl
YWN0LlByb3BUeXBlcy4nLCBjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycsIGxvY2F0aW9u
LCB0eXBlU3BlY05hbWUpO1xuXHQgICAgICAgICAgZXJyb3IgPSB0eXBlU3BlY3NbdHlwZVNwZWNO
YW1lXSh2YWx1ZXMsIHR5cGVTcGVjTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIG51bGws
IFJlYWN0UHJvcFR5cGVzU2VjcmV0KTtcblx0ICAgICAgICB9IGNhdGNoIChleCkge1xuXHQgICAg
ICAgICAgZXJyb3IgPSBleDtcblx0ICAgICAgICB9XG5cdCAgICAgICAgd2FybmluZyghZXJyb3Ig
fHwgZXJyb3IgaW5zdGFuY2VvZiBFcnJvciwgJyVzOiB0eXBlIHNwZWNpZmljYXRpb24gb2YgJXMg
YCVzYCBpcyBpbnZhbGlkOyB0aGUgdHlwZSBjaGVja2VyICcgKyAnZnVuY3Rpb24gbXVzdCByZXR1
cm4gYG51bGxgIG9yIGFuIGBFcnJvcmAgYnV0IHJldHVybmVkIGEgJXMuICcgKyAnWW91IG1heSBo
YXZlIGZvcmdvdHRlbiB0byBwYXNzIGFuIGFyZ3VtZW50IHRvIHRoZSB0eXBlIGNoZWNrZXIgJyAr
ICdjcmVhdG9yIChhcnJheU9mLCBpbnN0YW5jZU9mLCBvYmplY3RPZiwgb25lT2YsIG9uZU9mVHlw
ZSwgYW5kICcgKyAnc2hhcGUgYWxsIHJlcXVpcmUgYW4gYXJndW1lbnQpLicsIGNvbXBvbmVudE5h
bWUgfHwgJ1JlYWN0IGNsYXNzJywgbG9jYXRpb24sIHR5cGVTcGVjTmFtZSwgdHlwZW9mIGVycm9y
KTtcblx0ICAgICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciAmJiAhKGVycm9yLm1lc3Nh
Z2UgaW4gbG9nZ2VkVHlwZUZhaWx1cmVzKSkge1xuXHQgICAgICAgICAgLy8gT25seSBtb25pdG9y
IHRoaXMgZmFpbHVyZSBvbmNlIGJlY2F1c2UgdGhlcmUgdGVuZHMgdG8gYmUgYSBsb3Qgb2YgdGhl
XG5cdCAgICAgICAgICAvLyBzYW1lIGVycm9yLlxuXHQgICAgICAgICAgbG9nZ2VkVHlwZUZhaWx1
cmVzW2Vycm9yLm1lc3NhZ2VdID0gdHJ1ZTtcblx0XG5cdCAgICAgICAgICB2YXIgc3RhY2sgPSBn
ZXRTdGFjayA/IGdldFN0YWNrKCkgOiAnJztcblx0XG5cdCAgICAgICAgICB3YXJuaW5nKGZhbHNl
LCAnRmFpbGVkICVzIHR5cGU6ICVzJXMnLCBsb2NhdGlvbiwgZXJyb3IubWVzc2FnZSwgc3RhY2sg
IT0gbnVsbCA/IHN0YWNrIDogJycpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxu
XHQgIH1cblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBjaGVja1Byb3BUeXBlcztcblxuXG4v
KioqLyB9LFxuLyogMTIxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
blx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgZW1wdHlGdW5jdGlvbiA9IF9f
d2VicGFja19yZXF1aXJlX18oNyk7XG5cdHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDEpO1xuXHR2YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDU3KTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG5cdCAgZnVuY3Rpb24g
c2hpbShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5h
bWUsIHNlY3JldCkge1xuXHQgICAgaWYgKHNlY3JldCA9PT0gUmVhY3RQcm9wVHlwZXNTZWNyZXQp
IHtcblx0ICAgICAgLy8gSXQgaXMgc3RpbGwgc2FmZSB3aGVuIGNhbGxlZCBmcm9tIFJlYWN0Llxu
XHQgICAgICByZXR1cm47XG5cdCAgICB9XG5cdCAgICBpbnZhcmlhbnQoXG5cdCAgICAgIGZhbHNl
LFxuXHQgICAgICAnQ2FsbGluZyBQcm9wVHlwZXMgdmFsaWRhdG9ycyBkaXJlY3RseSBpcyBub3Qg
c3VwcG9ydGVkIGJ5IHRoZSBgcHJvcC10eXBlc2AgcGFja2FnZS4gJyArXG5cdCAgICAgICdVc2Ug
UHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiAnICtcblx0ICAgICAgJ1Jl
YWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXByb3AtdHlwZXMnXG5cdCAgICApO1xu
XHQgIH07XG5cdCAgc2hpbS5pc1JlcXVpcmVkID0gc2hpbTtcblx0ICBmdW5jdGlvbiBnZXRTaGlt
KCkge1xuXHQgICAgcmV0dXJuIHNoaW07XG5cdCAgfTtcblx0ICAvLyBJbXBvcnRhbnQhXG5cdCAg
Ly8gS2VlcCB0aGlzIGxpc3QgaW4gc3luYyB3aXRoIHByb2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9m
YWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qc2AuXG5cdCAgdmFyIFJlYWN0UHJvcFR5cGVzID0ge1xu
XHQgICAgYXJyYXk6IHNoaW0sXG5cdCAgICBib29sOiBzaGltLFxuXHQgICAgZnVuYzogc2hpbSxc
blx0ICAgIG51bWJlcjogc2hpbSxcblx0ICAgIG9iamVjdDogc2hpbSxcblx0ICAgIHN0cmluZzog
c2hpbSxcblx0ICAgIHN5bWJvbDogc2hpbSxcblx0XG5cdCAgICBhbnk6IHNoaW0sXG5cdCAgICBh
cnJheU9mOiBnZXRTaGltLFxuXHQgICAgZWxlbWVudDogc2hpbSxcblx0ICAgIGluc3RhbmNlT2Y6
IGdldFNoaW0sXG5cdCAgICBub2RlOiBzaGltLFxuXHQgICAgb2JqZWN0T2Y6IGdldFNoaW0sXG5c
dCAgICBvbmVPZjogZ2V0U2hpbSxcblx0ICAgIG9uZU9mVHlwZTogZ2V0U2hpbSxcblx0ICAgIHNo
YXBlOiBnZXRTaGltXG5cdCAgfTtcblx0XG5cdCAgUmVhY3RQcm9wVHlwZXMuY2hlY2tQcm9wVHlw
ZXMgPSBlbXB0eUZ1bmN0aW9uO1xuXHQgIFJlYWN0UHJvcFR5cGVzLlByb3BUeXBlcyA9IFJlYWN0
UHJvcFR5cGVzO1xuXHRcblx0ICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG5cdH07XG5cblxuLyoq
Ki8gfSxcbi8qIDEyMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBh
Y2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5c
dCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIGVtcHR5RnVuY3Rpb24gPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDcpO1xuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVf
XygxKTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHRcblx0dmFy
IFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1Nyk7XG5cdHZhciBj
aGVja1Byb3BUeXBlcyA9IF9fd2VicGFja19yZXF1aXJlX18oMTIwKTtcblx0XG5cdG1vZHVsZS5l
eHBvcnRzID0gZnVuY3Rpb24oaXNWYWxpZEVsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpIHtc
blx0ICAvKiBnbG9iYWwgU3ltYm9sICovXG5cdCAgdmFyIElURVJBVE9SX1NZTUJPTCA9IHR5cGVv
ZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9sLml0ZXJhdG9yO1xuXHQgIHZhciBGQVVY
X0lURVJBVE9SX1NZTUJPTCA9ICdAQGl0ZXJhdG9yJzsgLy8gQmVmb3JlIFN5bWJvbCBzcGVjLlxu
XHRcblx0ICAvKipcblx0ICAgKiBSZXR1cm5zIHRoZSBpdGVyYXRvciBtZXRob2QgZnVuY3Rpb24g
Y29udGFpbmVkIG9uIHRoZSBpdGVyYWJsZSBvYmplY3QuXG5cdCAgICpcblx0ICAgKiBCZSBzdXJl
IHRvIGludm9rZSB0aGUgZnVuY3Rpb24gd2l0aCB0aGUgaXRlcmFibGUgYXMgY29udGV4dDpcblx0
ICAgKlxuXHQgICAqICAgICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0ZXJhdG9yRm4obXlJdGVyYWJs
ZSk7XG5cdCAgICogICAgIGlmIChpdGVyYXRvckZuKSB7XG5cdCAgICogICAgICAgdmFyIGl0ZXJh
dG9yID0gaXRlcmF0b3JGbi5jYWxsKG15SXRlcmFibGUpO1xuXHQgICAqICAgICAgIC4uLlxuXHQg
ICAqICAgICB9XG5cdCAgICpcblx0ICAgKiBAcGFyYW0gez9vYmplY3R9IG1heWJlSXRlcmFibGVc
blx0ICAgKiBAcmV0dXJuIHs/ZnVuY3Rpb259XG5cdCAgICovXG5cdCAgZnVuY3Rpb24gZ2V0SXRl
cmF0b3JGbihtYXliZUl0ZXJhYmxlKSB7XG5cdCAgICB2YXIgaXRlcmF0b3JGbiA9IG1heWJlSXRl
cmFibGUgJiYgKElURVJBVE9SX1NZTUJPTCAmJiBtYXliZUl0ZXJhYmxlW0lURVJBVE9SX1NZTUJP
TF0gfHwgbWF5YmVJdGVyYWJsZVtGQVVYX0lURVJBVE9SX1NZTUJPTF0pO1xuXHQgICAgaWYgKHR5
cGVvZiBpdGVyYXRvckZuID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAgIHJldHVybiBpdGVyYXRv
ckZuO1xuXHQgICAgfVxuXHQgIH1cblx0XG5cdCAgLyoqXG5cdCAgICogQ29sbGVjdGlvbiBvZiBt
ZXRob2RzIHRoYXQgYWxsb3cgZGVjbGFyYXRpb24gYW5kIHZhbGlkYXRpb24gb2YgcHJvcHMgdGhh
dCBhcmVcblx0ICAgKiBzdXBwbGllZCB0byBSZWFjdCBjb21wb25lbnRzLiBFeGFtcGxlIHVzYWdl
OlxuXHQgICAqXG5cdCAgICogICB2YXIgUHJvcHMgPSByZXF1aXJlKCdSZWFjdFByb3BUeXBlcycp
O1xuXHQgICAqICAgdmFyIE15QXJ0aWNsZSA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcblx0ICAgKiAg
ICAgcHJvcFR5cGVzOiB7XG5cdCAgICogICAgICAgLy8gQW4gb3B0aW9uYWwgc3RyaW5nIHByb3Ag
bmFtZWQgXCJkZXNjcmlwdGlvblwiLlxuXHQgICAqICAgICAgIGRlc2NyaXB0aW9uOiBQcm9wcy5z
dHJpbmcsXG5cdCAgICpcblx0ICAgKiAgICAgICAvLyBBIHJlcXVpcmVkIGVudW0gcHJvcCBuYW1l
ZCBcImNhdGVnb3J5XCIuXG5cdCAgICogICAgICAgY2F0ZWdvcnk6IFByb3BzLm9uZU9mKFsnTmV3
cycsJ1Bob3RvcyddKS5pc1JlcXVpcmVkLFxuXHQgICAqXG5cdCAgICogICAgICAgLy8gQSBwcm9w
IG5hbWVkIFwiZGlhbG9nXCIgdGhhdCByZXF1aXJlcyBhbiBpbnN0YW5jZSBvZiBEaWFsb2cuXG5c
dCAgICogICAgICAgZGlhbG9nOiBQcm9wcy5pbnN0YW5jZU9mKERpYWxvZykuaXNSZXF1aXJlZFxu
XHQgICAqICAgICB9LFxuXHQgICAqICAgICByZW5kZXI6IGZ1bmN0aW9uKCkgeyAuLi4gfVxuXHQg
ICAqICAgfSk7XG5cdCAgICpcblx0ICAgKiBBIG1vcmUgZm9ybWFsIHNwZWNpZmljYXRpb24gb2Yg
aG93IHRoZXNlIG1ldGhvZHMgYXJlIHVzZWQ6XG5cdCAgICpcblx0ICAgKiAgIHR5cGUgOj0gYXJy
YXl8Ym9vbHxmdW5jfG9iamVjdHxudW1iZXJ8c3RyaW5nfG9uZU9mKFsuLi5dKXxpbnN0YW5jZU9m
KC4uLilcblx0ICAgKiAgIGRlY2wgOj0gUmVhY3RQcm9wVHlwZXMue3R5cGV9KC5pc1JlcXVpcmVk
KT9cblx0ICAgKlxuXHQgICAqIEVhY2ggYW5kIGV2ZXJ5IGRlY2xhcmF0aW9uIHByb2R1Y2VzIGEg
ZnVuY3Rpb24gd2l0aCB0aGUgc2FtZSBzaWduYXR1cmUuIFRoaXNcblx0ICAgKiBhbGxvd3MgdGhl
IGNyZWF0aW9uIG9mIGN1c3RvbSB2YWxpZGF0aW9uIGZ1bmN0aW9ucy4gRm9yIGV4YW1wbGU6XG5c
dCAgICpcblx0ICAgKiAgdmFyIE15TGluayA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcblx0ICAgKiAg
ICBwcm9wVHlwZXM6IHtcblx0ICAgKiAgICAgIC8vIEFuIG9wdGlvbmFsIHN0cmluZyBvciBVUkkg
cHJvcCBuYW1lZCBcImhyZWZcIi5cblx0ICAgKiAgICAgIGhyZWY6IGZ1bmN0aW9uKHByb3BzLCBw
cm9wTmFtZSwgY29tcG9uZW50TmFtZSkge1xuXHQgICAqICAgICAgICB2YXIgcHJvcFZhbHVlID0g
cHJvcHNbcHJvcE5hbWVdO1xuXHQgICAqICAgICAgICBpZiAocHJvcFZhbHVlICE9IG51bGwgJiYg
dHlwZW9mIHByb3BWYWx1ZSAhPT0gJ3N0cmluZycgJiZcblx0ICAgKiAgICAgICAgICAgICEocHJv
cFZhbHVlIGluc3RhbmNlb2YgVVJJKSkge1xuXHQgICAqICAgICAgICAgIHJldHVybiBuZXcgRXJy
b3IoXG5cdCAgICogICAgICAgICAgICAnRXhwZWN0ZWQgYSBzdHJpbmcgb3IgYW4gVVJJIGZvciAn
ICsgcHJvcE5hbWUgKyAnIGluICcgK1xuXHQgICAqICAgICAgICAgICAgY29tcG9uZW50TmFtZVxu
XHQgICAqICAgICAgICAgICk7XG5cdCAgICogICAgICAgIH1cblx0ICAgKiAgICAgIH1cblx0ICAg
KiAgICB9LFxuXHQgICAqICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7Li4ufVxuXHQgICAqICB9KTtc
blx0ICAgKlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHRcblx0ICB2YXIgQU5PTllNT1VT
ID0gJzw8YW5vbnltb3VzPj4nO1xuXHRcblx0ICAvLyBJbXBvcnRhbnQhXG5cdCAgLy8gS2VlcCB0
aGlzIGxpc3QgaW4gc3luYyB3aXRoIHByb2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9mYWN0b3J5V2l0
aFRocm93aW5nU2hpbXMuanNgLlxuXHQgIHZhciBSZWFjdFByb3BUeXBlcyA9IHtcblx0ICAgIGFy
cmF5OiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignYXJyYXknKSxcblx0ICAgIGJvb2w6IGNy
ZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdib29sZWFuJyksXG5cdCAgICBmdW5jOiBjcmVhdGVQ
cmltaXRpdmVUeXBlQ2hlY2tlcignZnVuY3Rpb24nKSxcblx0ICAgIG51bWJlcjogY3JlYXRlUHJp
bWl0aXZlVHlwZUNoZWNrZXIoJ251bWJlcicpLFxuXHQgICAgb2JqZWN0OiBjcmVhdGVQcmltaXRp
dmVUeXBlQ2hlY2tlcignb2JqZWN0JyksXG5cdCAgICBzdHJpbmc6IGNyZWF0ZVByaW1pdGl2ZVR5
cGVDaGVja2VyKCdzdHJpbmcnKSxcblx0ICAgIHN5bWJvbDogY3JlYXRlUHJpbWl0aXZlVHlwZUNo
ZWNrZXIoJ3N5bWJvbCcpLFxuXHRcblx0ICAgIGFueTogY3JlYXRlQW55VHlwZUNoZWNrZXIoKSxc
blx0ICAgIGFycmF5T2Y6IGNyZWF0ZUFycmF5T2ZUeXBlQ2hlY2tlcixcblx0ICAgIGVsZW1lbnQ6
IGNyZWF0ZUVsZW1lbnRUeXBlQ2hlY2tlcigpLFxuXHQgICAgaW5zdGFuY2VPZjogY3JlYXRlSW5z
dGFuY2VUeXBlQ2hlY2tlcixcblx0ICAgIG5vZGU6IGNyZWF0ZU5vZGVDaGVja2VyKCksXG5cdCAg
ICBvYmplY3RPZjogY3JlYXRlT2JqZWN0T2ZUeXBlQ2hlY2tlcixcblx0ICAgIG9uZU9mOiBjcmVh
dGVFbnVtVHlwZUNoZWNrZXIsXG5cdCAgICBvbmVPZlR5cGU6IGNyZWF0ZVVuaW9uVHlwZUNoZWNr
ZXIsXG5cdCAgICBzaGFwZTogY3JlYXRlU2hhcGVUeXBlQ2hlY2tlclxuXHQgIH07XG5cdFxuXHQg
IC8qKlxuXHQgICAqIGlubGluZWQgT2JqZWN0LmlzIHBvbHlmaWxsIHRvIGF2b2lkIHJlcXVpcmlu
ZyBjb25zdW1lcnMgc2hpcCB0aGVpciBvd25cblx0ICAgKiBodHRwczovL2RldmVsb3Blci5tb3pp
bGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9KYXZhU2NyaXB0L1JlZmVyZW5jZS9HbG9iYWxfT2JqZWN0
cy9PYmplY3QvaXNcblx0ICAgKi9cblx0ICAvKmVzbGludC1kaXNhYmxlIG5vLXNlbGYtY29tcGFy
ZSovXG5cdCAgZnVuY3Rpb24gaXMoeCwgeSkge1xuXHQgICAgLy8gU2FtZVZhbHVlIGFsZ29yaXRo
bVxuXHQgICAgaWYgKHggPT09IHkpIHtcblx0ICAgICAgLy8gU3RlcHMgMS01LCA3LTEwXG5cdCAg
ICAgIC8vIFN0ZXBzIDYuYi02LmU6ICswICE9IC0wXG5cdCAgICAgIHJldHVybiB4ICE9PSAwIHx8
IDEgLyB4ID09PSAxIC8geTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIC8vIFN0ZXAgNi5hOiBO
YU4gPT0gTmFOXG5cdCAgICAgIHJldHVybiB4ICE9PSB4ICYmIHkgIT09IHk7XG5cdCAgICB9XG5c
dCAgfVxuXHQgIC8qZXNsaW50LWVuYWJsZSBuby1zZWxmLWNvbXBhcmUqL1xuXHRcblx0ICAvKipc
blx0ICAgKiBXZSB1c2UgYW4gRXJyb3ItbGlrZSBvYmplY3QgZm9yIGJhY2t3YXJkIGNvbXBhdGli
aWxpdHkgYXMgcGVvcGxlIG1heSBjYWxsXG5cdCAgICogUHJvcFR5cGVzIGRpcmVjdGx5IGFuZCBp
bnNwZWN0IHRoZWlyIG91dHB1dC4gSG93ZXZlciwgd2UgZG9uJ3QgdXNlIHJlYWxcblx0ICAgKiBF
cnJvcnMgYW55bW9yZS4gV2UgZG9uJ3QgaW5zcGVjdCB0aGVpciBzdGFjayBhbnl3YXksIGFuZCBj
cmVhdGluZyB0aGVtXG5cdCAgICogaXMgcHJvaGliaXRpdmVseSBleHBlbnNpdmUgaWYgdGhleSBh
cmUgY3JlYXRlZCB0b28gb2Z0ZW4sIHN1Y2ggYXMgd2hhdFxuXHQgICAqIGhhcHBlbnMgaW4gb25l
T2ZUeXBlKCkgZm9yIGFueSB0eXBlIGJlZm9yZSB0aGUgb25lIHRoYXQgbWF0Y2hlZC5cblx0ICAg
Ki9cblx0ICBmdW5jdGlvbiBQcm9wVHlwZUVycm9yKG1lc3NhZ2UpIHtcblx0ICAgIHRoaXMubWVz
c2FnZSA9IG1lc3NhZ2U7XG5cdCAgICB0aGlzLnN0YWNrID0gJyc7XG5cdCAgfVxuXHQgIC8vIE1h
a2UgYGluc3RhbmNlb2YgRXJyb3JgIHN0aWxsIHdvcmsgZm9yIHJldHVybmVkIGVycm9ycy5cblx0
ICBQcm9wVHlwZUVycm9yLnByb3RvdHlwZSA9IEVycm9yLnByb3RvdHlwZTtcblx0XG5cdCAgZnVu
Y3Rpb24gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpIHtcblx0ICAgIGlmIChm
YWxzZSkge1xuXHQgICAgICB2YXIgbWFudWFsUHJvcFR5cGVDYWxsQ2FjaGUgPSB7fTtcblx0ICAg
ICAgdmFyIG1hbnVhbFByb3BUeXBlV2FybmluZ0NvdW50ID0gMDtcblx0ICAgIH1cblx0ICAgIGZ1
bmN0aW9uIGNoZWNrVHlwZShpc1JlcXVpcmVkLCBwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5h
bWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuXHQgICAgICBjb21wb25lbnRO
YW1lID0gY29tcG9uZW50TmFtZSB8fCBBTk9OWU1PVVM7XG5cdCAgICAgIHByb3BGdWxsTmFtZSA9
IHByb3BGdWxsTmFtZSB8fCBwcm9wTmFtZTtcblx0XG5cdCAgICAgIGlmIChzZWNyZXQgIT09IFJl
YWN0UHJvcFR5cGVzU2VjcmV0KSB7XG5cdCAgICAgICAgaWYgKHRocm93T25EaXJlY3RBY2Nlc3Mp
IHtcblx0ICAgICAgICAgIC8vIE5ldyBiZWhhdmlvciBvbmx5IGZvciB1c2VycyBvZiBgcHJvcC10
eXBlc2AgcGFja2FnZVxuXHQgICAgICAgICAgaW52YXJpYW50KFxuXHQgICAgICAgICAgICBmYWxz
ZSxcblx0ICAgICAgICAgICAgJ0NhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRvcnMgZGlyZWN0bHkg
aXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2UuICcgK1xuXHQgICAg
ICAgICAgICAnVXNlIGBQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMoKWAgdG8gY2FsbCB0aGVtLiAn
ICtcblx0ICAgICAgICAgICAgJ1JlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUvdXNlLWNoZWNrLXBy
b3AtdHlwZXMnXG5cdCAgICAgICAgICApO1xuXHQgICAgICAgIH0gZWxzZSBpZiAoZmFsc2UpIHtc
blx0ICAgICAgICAgIC8vIE9sZCBiZWhhdmlvciBmb3IgcGVvcGxlIHVzaW5nIFJlYWN0LlByb3BU
eXBlc1xuXHQgICAgICAgICAgdmFyIGNhY2hlS2V5ID0gY29tcG9uZW50TmFtZSArICc6JyArIHBy
b3BOYW1lO1xuXHQgICAgICAgICAgaWYgKFxuXHQgICAgICAgICAgICAhbWFudWFsUHJvcFR5cGVD
YWxsQ2FjaGVbY2FjaGVLZXldICYmXG5cdCAgICAgICAgICAgIC8vIEF2b2lkIHNwYW1taW5nIHRo
ZSBjb25zb2xlIGJlY2F1c2UgdGhleSBhcmUgb2Z0ZW4gbm90IGFjdGlvbmFibGUgZXhjZXB0IGZv
ciBsaWIgYXV0aG9yc1xuXHQgICAgICAgICAgICBtYW51YWxQcm9wVHlwZVdhcm5pbmdDb3VudCA8
IDNcblx0ICAgICAgICAgICkge1xuXHQgICAgICAgICAgICB3YXJuaW5nKFxuXHQgICAgICAgICAg
ICAgIGZhbHNlLFxuXHQgICAgICAgICAgICAgICdZb3UgYXJlIG1hbnVhbGx5IGNhbGxpbmcgYSBS
ZWFjdC5Qcm9wVHlwZXMgdmFsaWRhdGlvbiAnICtcblx0ICAgICAgICAgICAgICAnZnVuY3Rpb24g
Zm9yIHRoZSBgJXNgIHByb3Agb24gYCVzYC4gVGhpcyBpcyBkZXByZWNhdGVkICcgK1xuXHQgICAg
ICAgICAgICAgICdhbmQgd2lsbCB0aHJvdyBpbiB0aGUgc3RhbmRhbG9uZSBgcHJvcC10eXBlc2Ag
cGFja2FnZS4gJyArXG5cdCAgICAgICAgICAgICAgJ1lvdSBtYXkgYmUgc2VlaW5nIHRoaXMgd2Fy
bmluZyBkdWUgdG8gYSB0aGlyZC1wYXJ0eSBQcm9wVHlwZXMgJyArXG5cdCAgICAgICAgICAgICAg
J2xpYnJhcnkuIFNlZSBodHRwczovL2ZiLm1lL3JlYWN0LXdhcm5pbmctZG9udC1jYWxsLXByb3B0
eXBlcyAnICsgJ2ZvciBkZXRhaWxzLicsXG5cdCAgICAgICAgICAgICAgcHJvcEZ1bGxOYW1lLFxu
XHQgICAgICAgICAgICAgIGNvbXBvbmVudE5hbWVcblx0ICAgICAgICAgICAgKTtcblx0ICAgICAg
ICAgICAgbWFudWFsUHJvcFR5cGVDYWxsQ2FjaGVbY2FjaGVLZXldID0gdHJ1ZTtcblx0ICAgICAg
ICAgICAgbWFudWFsUHJvcFR5cGVXYXJuaW5nQ291bnQrKztcblx0ICAgICAgICAgIH1cblx0ICAg
ICAgICB9XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKHByb3BzW3Byb3BOYW1lXSA9PSBudWxsKSB7
XG5cdCAgICAgICAgaWYgKGlzUmVxdWlyZWQpIHtcblx0ICAgICAgICAgIGlmIChwcm9wc1twcm9w
TmFtZV0gPT09IG51bGwpIHtcblx0ICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9y
KCdUaGUgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIGlzIG1hcmtlZCBh
cyByZXF1aXJlZCAnICsgKCdpbiBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgYnV0IGl0cyB2YWx1
ZSBpcyBgbnVsbGAuJykpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgcmV0dXJuIG5ldyBQ
cm9wVHlwZUVycm9yKCdUaGUgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdg
IGlzIG1hcmtlZCBhcyByZXF1aXJlZCBpbiAnICsgKCdgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwg
YnV0IGl0cyB2YWx1ZSBpcyBgdW5kZWZpbmVkYC4nKSk7XG5cdCAgICAgICAgfVxuXHQgICAgICAg
IHJldHVybiBudWxsO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIHJldHVybiB2YWxpZGF0
ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUp
O1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIGNoYWluZWRDaGVja1R5cGUgPSBj
aGVja1R5cGUuYmluZChudWxsLCBmYWxzZSk7XG5cdCAgICBjaGFpbmVkQ2hlY2tUeXBlLmlzUmVx
dWlyZWQgPSBjaGVja1R5cGUuYmluZChudWxsLCB0cnVlKTtcblx0XG5cdCAgICByZXR1cm4gY2hh
aW5lZENoZWNrVHlwZTtcblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIGNyZWF0ZVByaW1pdGl2ZVR5
cGVDaGVja2VyKGV4cGVjdGVkVHlwZSkge1xuXHQgICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMs
IHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lLCBzZWNyZXQp
IHtcblx0ICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcblx0ICAgICAgdmFy
IHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcblx0ICAgICAgaWYgKHByb3BUeXBl
ICE9PSBleHBlY3RlZFR5cGUpIHtcblx0ICAgICAgICAvLyBgcHJvcFZhbHVlYCBiZWluZyBpbnN0
YW5jZSBvZiwgc2F5LCBkYXRlL3JlZ2V4cCwgcGFzcyB0aGUgJ29iamVjdCdcblx0ICAgICAgICAv
LyBjaGVjaywgYnV0IHdlIGNhbiBvZmZlciBhIG1vcmUgcHJlY2lzZSBlcnJvciBtZXNzYWdlIGhl
cmUgcmF0aGVyIHRoYW5cblx0ICAgICAgICAvLyAnb2YgdHlwZSBgb2JqZWN0YCcuXG5cdCAgICAg
ICAgdmFyIHByZWNpc2VUeXBlID0gZ2V0UHJlY2lzZVR5cGUocHJvcFZhbHVlKTtcblx0XG5cdCAg
ICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcg
YCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcgKyAoJ2AnICsgcHJlY2lzZVR5cGUgKyAn
YCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCwgZXhwZWN0ZWQgJykgKyAoJ2An
ICsgZXhwZWN0ZWRUeXBlICsgJ2AuJykpO1xuXHQgICAgICB9XG5cdCAgICAgIHJldHVybiBudWxs
O1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlk
YXRlKTtcblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIGNyZWF0ZUFueVR5cGVDaGVja2VyKCkge1xu
XHQgICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKGVtcHR5RnVuY3Rpb24udGhh
dFJldHVybnNOdWxsKTtcblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIGNyZWF0ZUFycmF5T2ZUeXBl
Q2hlY2tlcih0eXBlQ2hlY2tlcikge1xuXHQgICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHBy
b3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG5cdCAgICAg
IGlmICh0eXBlb2YgdHlwZUNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHtcblx0ICAgICAgICByZXR1
cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1Byb3BlcnR5IGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2Yg
Y29tcG9uZW50IGAnICsgY29tcG9uZW50TmFtZSArICdgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5v
dGF0aW9uIGluc2lkZSBhcnJheU9mLicpO1xuXHQgICAgICB9XG5cdCAgICAgIHZhciBwcm9wVmFs
dWUgPSBwcm9wc1twcm9wTmFtZV07XG5cdCAgICAgIGlmICghQXJyYXkuaXNBcnJheShwcm9wVmFs
dWUpKSB7XG5cdCAgICAgICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtc
blx0ICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9u
ICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSAr
ICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhbiBhcnJh
eS4nKSk7XG5cdCAgICAgIH1cblx0ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wVmFsdWUu
bGVuZ3RoOyBpKyspIHtcblx0ICAgICAgICB2YXIgZXJyb3IgPSB0eXBlQ2hlY2tlcihwcm9wVmFs
dWUsIGksIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUgKyAnWycgKyBpICsg
J10nLCBSZWFjdFByb3BUeXBlc1NlY3JldCk7XG5cdCAgICAgICAgaWYgKGVycm9yIGluc3RhbmNl
b2YgRXJyb3IpIHtcblx0ICAgICAgICAgIHJldHVybiBlcnJvcjtcblx0ICAgICAgICB9XG5cdCAg
ICAgIH1cblx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gY3JlYXRl
Q2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuXHQgIH1cblx0XG5cdCAgZnVuY3Rpb24g
Y3JlYXRlRWxlbWVudFR5cGVDaGVja2VyKCkge1xuXHQgICAgZnVuY3Rpb24gdmFsaWRhdGUocHJv
cHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG5c
dCAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG5cdCAgICAgIGlmICghaXNW
YWxpZEVsZW1lbnQocHJvcFZhbHVlKSkge1xuXHQgICAgICAgIHZhciBwcm9wVHlwZSA9IGdldFBy
b3BUeXBlKHByb3BWYWx1ZSk7XG5cdCAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJ
bnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0eXBlICcg
KyAoJ2AnICsgcHJvcFR5cGUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5hbWUgKyAn
YCwgZXhwZWN0ZWQgYSBzaW5nbGUgUmVhY3RFbGVtZW50LicpKTtcblx0ICAgICAgfVxuXHQgICAg
ICByZXR1cm4gbnVsbDtcblx0ICAgIH1cblx0ICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBl
Q2hlY2tlcih2YWxpZGF0ZSk7XG5cdCAgfVxuXHRcblx0ICBmdW5jdGlvbiBjcmVhdGVJbnN0YW5j
ZVR5cGVDaGVja2VyKGV4cGVjdGVkQ2xhc3MpIHtcblx0ICAgIGZ1bmN0aW9uIHZhbGlkYXRlKHBy
b3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSkge1xu
XHQgICAgICBpZiAoIShwcm9wc1twcm9wTmFtZV0gaW5zdGFuY2VvZiBleHBlY3RlZENsYXNzKSkg
e1xuXHQgICAgICAgIHZhciBleHBlY3RlZENsYXNzTmFtZSA9IGV4cGVjdGVkQ2xhc3MubmFtZSB8
fCBBTk9OWU1PVVM7XG5cdCAgICAgICAgdmFyIGFjdHVhbENsYXNzTmFtZSA9IGdldENsYXNzTmFt
ZShwcm9wc1twcm9wTmFtZV0pO1xuXHQgICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcign
SW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAn
ICsgKCdgJyArIGFjdHVhbENsYXNzTmFtZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50
TmFtZSArICdgLCBleHBlY3RlZCAnKSArICgnaW5zdGFuY2Ugb2YgYCcgKyBleHBlY3RlZENsYXNz
TmFtZSArICdgLicpKTtcblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4gbnVsbDtcblx0ICAgIH1c
blx0ICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG5cdCAg
fVxuXHRcblx0ICBmdW5jdGlvbiBjcmVhdGVFbnVtVHlwZUNoZWNrZXIoZXhwZWN0ZWRWYWx1ZXMp
IHtcblx0ICAgIGlmICghQXJyYXkuaXNBcnJheShleHBlY3RlZFZhbHVlcykpIHtcblx0ICAgICAg
IGZhbHNlID8gd2FybmluZyhmYWxzZSwgJ0ludmFsaWQgYXJndW1lbnQgc3VwcGxpZWQgdG8gb25l
T2YsIGV4cGVjdGVkIGFuIGluc3RhbmNlIG9mIGFycmF5LicpIDogdm9pZCAwO1xuXHQgICAgICBy
ZXR1cm4gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc051bGw7XG5cdCAgICB9XG5cdFxuXHQgICAg
ZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlv
biwgcHJvcEZ1bGxOYW1lKSB7XG5cdCAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFt
ZV07XG5cdCAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXhwZWN0ZWRWYWx1ZXMubGVuZ3RoOyBp
KyspIHtcblx0ICAgICAgICBpZiAoaXMocHJvcFZhbHVlLCBleHBlY3RlZFZhbHVlc1tpXSkpIHtc
blx0ICAgICAgICAgIHJldHVybiBudWxsO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHRcblx0
ICAgICAgdmFyIHZhbHVlc1N0cmluZyA9IEpTT04uc3RyaW5naWZ5KGV4cGVjdGVkVmFsdWVzKTtc
blx0ICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiAr
ICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB2YWx1ZSBgJyArIHByb3BWYWx1ZSArICdgICcg
KyAoJ3N1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBvbmUgb2Yg
JyArIHZhbHVlc1N0cmluZyArICcuJykpO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIGNyZWF0ZUNo
YWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIGNy
ZWF0ZU9iamVjdE9mVHlwZUNoZWNrZXIodHlwZUNoZWNrZXIpIHtcblx0ICAgIGZ1bmN0aW9uIHZh
bGlkYXRlKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxs
TmFtZSkge1xuXHQgICAgICBpZiAodHlwZW9mIHR5cGVDaGVja2VyICE9PSAnZnVuY3Rpb24nKSB7
XG5cdCAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdQcm9wZXJ0eSBgJyArIHByb3BG
dWxsTmFtZSArICdgIG9mIGNvbXBvbmVudCBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCBoYXMgaW52
YWxpZCBQcm9wVHlwZSBub3RhdGlvbiBpbnNpZGUgb2JqZWN0T2YuJyk7XG5cdCAgICAgIH1cblx0
ICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcblx0ICAgICAgdmFyIHByb3BU
eXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcblx0ICAgICAgaWYgKHByb3BUeXBlICE9PSAn
b2JqZWN0Jykge1xuXHQgICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAn
ICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyAr
IHByb3BUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVj
dGVkIGFuIG9iamVjdC4nKSk7XG5cdCAgICAgIH1cblx0ICAgICAgZm9yICh2YXIga2V5IGluIHBy
b3BWYWx1ZSkge1xuXHQgICAgICAgIGlmIChwcm9wVmFsdWUuaGFzT3duUHJvcGVydHkoa2V5KSkg
e1xuXHQgICAgICAgICAgdmFyIGVycm9yID0gdHlwZUNoZWNrZXIocHJvcFZhbHVlLCBrZXksIGNv
bXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUgKyAnLicgKyBrZXksIFJlYWN0UHJv
cFR5cGVzU2VjcmV0KTtcblx0ICAgICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7
XG5cdCAgICAgICAgICAgIHJldHVybiBlcnJvcjtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9
XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICB9XG5cdCAgICByZXR1cm4g
Y3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuXHQgIH1cblx0XG5cdCAgZnVu
Y3Rpb24gY3JlYXRlVW5pb25UeXBlQ2hlY2tlcihhcnJheU9mVHlwZUNoZWNrZXJzKSB7XG5cdCAg
ICBpZiAoIUFycmF5LmlzQXJyYXkoYXJyYXlPZlR5cGVDaGVja2VycykpIHtcblx0ICAgICAgIGZh
bHNlID8gd2FybmluZyhmYWxzZSwgJ0ludmFsaWQgYXJndW1lbnQgc3VwcGxpZWQgdG8gb25lT2ZU
eXBlLCBleHBlY3RlZCBhbiBpbnN0YW5jZSBvZiBhcnJheS4nKSA6IHZvaWQgMDtcblx0ICAgICAg
cmV0dXJuIGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxsO1xuXHQgICAgfVxuXHRcblx0ICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXlPZlR5cGVDaGVja2Vycy5sZW5ndGg7IGkrKykge1xu
XHQgICAgICB2YXIgY2hlY2tlciA9IGFycmF5T2ZUeXBlQ2hlY2tlcnNbaV07XG5cdCAgICAgIGlm
ICh0eXBlb2YgY2hlY2tlciAhPT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgICAgIHdhcm5pbmcoXG5c
dCAgICAgICAgICBmYWxzZSxcblx0ICAgICAgICAgICdJbnZhbGlkIGFyZ3VtZW50IHN1cHBsaWQg
dG8gb25lT2ZUeXBlLiBFeHBlY3RlZCBhbiBhcnJheSBvZiBjaGVjayBmdW5jdGlvbnMsIGJ1dCAn
ICtcblx0ICAgICAgICAgICdyZWNlaXZlZCAlcyBhdCBpbmRleCAlcy4nLFxuXHQgICAgICAgICAg
Z2V0UG9zdGZpeEZvclR5cGVXYXJuaW5nKGNoZWNrZXIpLFxuXHQgICAgICAgICAgaVxuXHQgICAg
ICAgICk7XG5cdCAgICAgICAgcmV0dXJuIGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNOdWxsO1xu
XHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHBy
b3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG5cdCAgICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgYXJyYXlPZlR5cGVDaGVja2Vycy5sZW5ndGg7IGkrKykge1xu
XHQgICAgICAgIHZhciBjaGVja2VyID0gYXJyYXlPZlR5cGVDaGVja2Vyc1tpXTtcblx0ICAgICAg
ICBpZiAoY2hlY2tlcihwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBw
cm9wRnVsbE5hbWUsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KSA9PSBudWxsKSB7XG5cdCAgICAgICAg
ICByZXR1cm4gbnVsbDtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHJldHVy
biBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1
bGxOYW1lICsgJ2Agc3VwcGxpZWQgdG8gJyArICgnYCcgKyBjb21wb25lbnROYW1lICsgJ2AuJykp
O1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlk
YXRlKTtcblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIGNyZWF0ZU5vZGVDaGVja2VyKCkge1xuXHQg
ICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2Nh
dGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG5cdCAgICAgIGlmICghaXNOb2RlKHByb3BzW3Byb3BOYW1l
XSkpIHtcblx0ICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxv
Y2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIHN1cHBsaWVkIHRvICcgKyAoJ2AnICsg
Y29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhIFJlYWN0Tm9kZS4nKSk7XG5cdCAgICAgIH1c
blx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gY3JlYXRlQ2hhaW5h
YmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuXHQgIH1cblx0XG5cdCAgZnVuY3Rpb24gY3JlYXRl
U2hhcGVUeXBlQ2hlY2tlcihzaGFwZVR5cGVzKSB7XG5cdCAgICBmdW5jdGlvbiB2YWxpZGF0ZShw
cm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtc
blx0ICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcblx0ICAgICAgdmFyIHBy
b3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcblx0ICAgICAgaWYgKHByb3BUeXBlICE9
PSAnb2JqZWN0Jykge1xuXHQgICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxp
ZCAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSBgJyArIHBy
b3BUeXBlICsgJ2AgJyArICgnc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4
cGVjdGVkIGBvYmplY3RgLicpKTtcblx0ICAgICAgfVxuXHQgICAgICBmb3IgKHZhciBrZXkgaW4g
c2hhcGVUeXBlcykge1xuXHQgICAgICAgIHZhciBjaGVja2VyID0gc2hhcGVUeXBlc1trZXldO1xu
XHQgICAgICAgIGlmICghY2hlY2tlcikge1xuXHQgICAgICAgICAgY29udGludWU7XG5cdCAgICAg
ICAgfVxuXHQgICAgICAgIHZhciBlcnJvciA9IGNoZWNrZXIocHJvcFZhbHVlLCBrZXksIGNvbXBv
bmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUgKyAnLicgKyBrZXksIFJlYWN0UHJvcFR5
cGVzU2VjcmV0KTtcblx0ICAgICAgICBpZiAoZXJyb3IpIHtcblx0ICAgICAgICAgIHJldHVybiBl
cnJvcjtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAg
ICB9XG5cdCAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xu
XHQgIH1cblx0XG5cdCAgZnVuY3Rpb24gaXNOb2RlKHByb3BWYWx1ZSkge1xuXHQgICAgc3dpdGNo
ICh0eXBlb2YgcHJvcFZhbHVlKSB7XG5cdCAgICAgIGNhc2UgJ251bWJlcic6XG5cdCAgICAgIGNh
c2UgJ3N0cmluZyc6XG5cdCAgICAgIGNhc2UgJ3VuZGVmaW5lZCc6XG5cdCAgICAgICAgcmV0dXJu
IHRydWU7XG5cdCAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuXHQgICAgICAgIHJldHVybiAhcHJvcFZh
bHVlO1xuXHQgICAgICBjYXNlICdvYmplY3QnOlxuXHQgICAgICAgIGlmIChBcnJheS5pc0FycmF5
KHByb3BWYWx1ZSkpIHtcblx0ICAgICAgICAgIHJldHVybiBwcm9wVmFsdWUuZXZlcnkoaXNOb2Rl
KTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgaWYgKHByb3BWYWx1ZSA9PT0gbnVsbCB8fCBpc1Zh
bGlkRWxlbWVudChwcm9wVmFsdWUpKSB7XG5cdCAgICAgICAgICByZXR1cm4gdHJ1ZTtcblx0ICAg
ICAgICB9XG5cdFxuXHQgICAgICAgIHZhciBpdGVyYXRvckZuID0gZ2V0SXRlcmF0b3JGbihwcm9w
VmFsdWUpO1xuXHQgICAgICAgIGlmIChpdGVyYXRvckZuKSB7XG5cdCAgICAgICAgICB2YXIgaXRl
cmF0b3IgPSBpdGVyYXRvckZuLmNhbGwocHJvcFZhbHVlKTtcblx0ICAgICAgICAgIHZhciBzdGVw
O1xuXHQgICAgICAgICAgaWYgKGl0ZXJhdG9yRm4gIT09IHByb3BWYWx1ZS5lbnRyaWVzKSB7XG5c
dCAgICAgICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcblx0
ICAgICAgICAgICAgICBpZiAoIWlzTm9kZShzdGVwLnZhbHVlKSkge1xuXHQgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlO1xuXHQgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgfVxuXHQg
ICAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgICAgLy8gSXRlcmF0b3Igd2lsbCBwcm92aWRl
IGVudHJ5IFtrLHZdIHR1cGxlcyByYXRoZXIgdGhhbiB2YWx1ZXMuXG5cdCAgICAgICAgICAgIHdo
aWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcblx0ICAgICAgICAgICAgICB2
YXIgZW50cnkgPSBzdGVwLnZhbHVlO1xuXHQgICAgICAgICAgICAgIGlmIChlbnRyeSkge1xuXHQg
ICAgICAgICAgICAgICAgaWYgKCFpc05vZGUoZW50cnlbMV0pKSB7XG5cdCAgICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTtcblx0ICAgICAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgICB9
XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9IGVsc2Uge1xuXHQg
ICAgICAgICAgcmV0dXJuIGZhbHNlO1xuXHQgICAgICAgIH1cblx0XG5cdCAgICAgICAgcmV0dXJu
IHRydWU7XG5cdCAgICAgIGRlZmF1bHQ6XG5cdCAgICAgICAgcmV0dXJuIGZhbHNlO1xuXHQgICAg
fVxuXHQgIH1cblx0XG5cdCAgZnVuY3Rpb24gaXNTeW1ib2wocHJvcFR5cGUsIHByb3BWYWx1ZSkg
e1xuXHQgICAgLy8gTmF0aXZlIFN5bWJvbC5cblx0ICAgIGlmIChwcm9wVHlwZSA9PT0gJ3N5bWJv
bCcpIHtcblx0ICAgICAgcmV0dXJuIHRydWU7XG5cdCAgICB9XG5cdFxuXHQgICAgLy8gMTkuNC4z
LjUgU3ltYm9sLnByb3RvdHlwZVtAQHRvU3RyaW5nVGFnXSA9PT0gJ1N5bWJvbCdcblx0ICAgIGlm
IChwcm9wVmFsdWVbJ0BAdG9TdHJpbmdUYWcnXSA9PT0gJ1N5bWJvbCcpIHtcblx0ICAgICAgcmV0
dXJuIHRydWU7XG5cdCAgICB9XG5cdFxuXHQgICAgLy8gRmFsbGJhY2sgZm9yIG5vbi1zcGVjIGNv
bXBsaWFudCBTeW1ib2xzIHdoaWNoIGFyZSBwb2x5ZmlsbGVkLlxuXHQgICAgaWYgKHR5cGVvZiBT
eW1ib2wgPT09ICdmdW5jdGlvbicgJiYgcHJvcFZhbHVlIGluc3RhbmNlb2YgU3ltYm9sKSB7XG5c
dCAgICAgIHJldHVybiB0cnVlO1xuXHQgICAgfVxuXHRcblx0ICAgIHJldHVybiBmYWxzZTtcblx0
ICB9XG5cdFxuXHQgIC8vIEVxdWl2YWxlbnQgb2YgYHR5cGVvZmAgYnV0IHdpdGggc3BlY2lhbCBo
YW5kbGluZyBmb3IgYXJyYXkgYW5kIHJlZ2V4cC5cblx0ICBmdW5jdGlvbiBnZXRQcm9wVHlwZShw
cm9wVmFsdWUpIHtcblx0ICAgIHZhciBwcm9wVHlwZSA9IHR5cGVvZiBwcm9wVmFsdWU7XG5cdCAg
ICBpZiAoQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7XG5cdCAgICAgIHJldHVybiAnYXJyYXkn
O1xuXHQgICAgfVxuXHQgICAgaWYgKHByb3BWYWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuXHQg
ICAgICAvLyBPbGQgd2Via2l0cyAoYXQgbGVhc3QgdW50aWwgQW5kcm9pZCA0LjApIHJldHVybiAn
ZnVuY3Rpb24nIHJhdGhlciB0aGFuXG5cdCAgICAgIC8vICdvYmplY3QnIGZvciB0eXBlb2YgYSBS
ZWdFeHAuIFdlJ2xsIG5vcm1hbGl6ZSB0aGlzIGhlcmUgc28gdGhhdCAvYmxhL1xuXHQgICAgICAv
LyBwYXNzZXMgUHJvcFR5cGVzLm9iamVjdC5cblx0ICAgICAgcmV0dXJuICdvYmplY3QnO1xuXHQg
ICAgfVxuXHQgICAgaWYgKGlzU3ltYm9sKHByb3BUeXBlLCBwcm9wVmFsdWUpKSB7XG5cdCAgICAg
IHJldHVybiAnc3ltYm9sJztcblx0ICAgIH1cblx0ICAgIHJldHVybiBwcm9wVHlwZTtcblx0ICB9
XG5cdFxuXHQgIC8vIFRoaXMgaGFuZGxlcyBtb3JlIHR5cGVzIHRoYW4gYGdldFByb3BUeXBlYC4g
T25seSB1c2VkIGZvciBlcnJvciBtZXNzYWdlcy5cblx0ICAvLyBTZWUgYGNyZWF0ZVByaW1pdGl2
ZVR5cGVDaGVja2VyYC5cblx0ICBmdW5jdGlvbiBnZXRQcmVjaXNlVHlwZShwcm9wVmFsdWUpIHtc
blx0ICAgIGlmICh0eXBlb2YgcHJvcFZhbHVlID09PSAndW5kZWZpbmVkJyB8fCBwcm9wVmFsdWUg
PT09IG51bGwpIHtcblx0ICAgICAgcmV0dXJuICcnICsgcHJvcFZhbHVlO1xuXHQgICAgfVxuXHQg
ICAgdmFyIHByb3BUeXBlID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcblx0ICAgIGlmIChwcm9w
VHlwZSA9PT0gJ29iamVjdCcpIHtcblx0ICAgICAgaWYgKHByb3BWYWx1ZSBpbnN0YW5jZW9mIERh
dGUpIHtcblx0ICAgICAgICByZXR1cm4gJ2RhdGUnO1xuXHQgICAgICB9IGVsc2UgaWYgKHByb3BW
YWx1ZSBpbnN0YW5jZW9mIFJlZ0V4cCkge1xuXHQgICAgICAgIHJldHVybiAncmVnZXhwJztcblx0
ICAgICAgfVxuXHQgICAgfVxuXHQgICAgcmV0dXJuIHByb3BUeXBlO1xuXHQgIH1cblx0XG5cdCAg
Ly8gUmV0dXJucyBhIHN0cmluZyB0aGF0IGlzIHBvc3RmaXhlZCB0byBhIHdhcm5pbmcgYWJvdXQg
YW4gaW52YWxpZCB0eXBlLlxuXHQgIC8vIEZvciBleGFtcGxlLCBcInVuZGVmaW5lZFwiIG9yIFwi
b2YgdHlwZSBhcnJheVwiXG5cdCAgZnVuY3Rpb24gZ2V0UG9zdGZpeEZvclR5cGVXYXJuaW5nKHZh
bHVlKSB7XG5cdCAgICB2YXIgdHlwZSA9IGdldFByZWNpc2VUeXBlKHZhbHVlKTtcblx0ICAgIHN3
aXRjaCAodHlwZSkge1xuXHQgICAgICBjYXNlICdhcnJheSc6XG5cdCAgICAgIGNhc2UgJ29iamVj
dCc6XG5cdCAgICAgICAgcmV0dXJuICdhbiAnICsgdHlwZTtcblx0ICAgICAgY2FzZSAnYm9vbGVh
bic6XG5cdCAgICAgIGNhc2UgJ2RhdGUnOlxuXHQgICAgICBjYXNlICdyZWdleHAnOlxuXHQgICAg
ICAgIHJldHVybiAnYSAnICsgdHlwZTtcblx0ICAgICAgZGVmYXVsdDpcblx0ICAgICAgICByZXR1
cm4gdHlwZTtcblx0ICAgIH1cblx0ICB9XG5cdFxuXHQgIC8vIFJldHVybnMgY2xhc3MgbmFtZSBv
ZiB0aGUgb2JqZWN0LCBpZiBhbnkuXG5cdCAgZnVuY3Rpb24gZ2V0Q2xhc3NOYW1lKHByb3BWYWx1
ZSkge1xuXHQgICAgaWYgKCFwcm9wVmFsdWUuY29uc3RydWN0b3IgfHwgIXByb3BWYWx1ZS5jb25z
dHJ1Y3Rvci5uYW1lKSB7XG5cdCAgICAgIHJldHVybiBBTk9OWU1PVVM7XG5cdCAgICB9XG5cdCAg
ICByZXR1cm4gcHJvcFZhbHVlLmNvbnN0cnVjdG9yLm5hbWU7XG5cdCAgfVxuXHRcblx0ICBSZWFj
dFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcyA9IGNoZWNrUHJvcFR5cGVzO1xuXHQgIFJlYWN0UHJv
cFR5cGVzLlByb3BUeXBlcyA9IFJlYWN0UHJvcFR5cGVzO1xuXHRcblx0ICByZXR1cm4gUmVhY3RQ
cm9wVHlwZXM7XG5cdH07XG5cblxuLyoqKi8gfSxcbi8qIDEyMyAqL1xuLyoqKi8gZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3Qn
O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzNyk7XG5cblxu
LyoqKi8gfSxcbi8qIDEyNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5c
blx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0
J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIEFSSUFET01Qcm9wZXJ0eUNvbmZpZyA9IHtcblx0ICBQ
cm9wZXJ0aWVzOiB7XG5cdCAgICAvLyBHbG9iYWwgU3RhdGVzIGFuZCBQcm9wZXJ0aWVzXG5cdCAg
ICAnYXJpYS1jdXJyZW50JzogMCwgLy8gc3RhdGVcblx0ICAgICdhcmlhLWRldGFpbHMnOiAwLFxu
XHQgICAgJ2FyaWEtZGlzYWJsZWQnOiAwLCAvLyBzdGF0ZVxuXHQgICAgJ2FyaWEtaGlkZGVuJzog
MCwgLy8gc3RhdGVcblx0ICAgICdhcmlhLWludmFsaWQnOiAwLCAvLyBzdGF0ZVxuXHQgICAgJ2Fy
aWEta2V5c2hvcnRjdXRzJzogMCxcblx0ICAgICdhcmlhLWxhYmVsJzogMCxcblx0ICAgICdhcmlh
LXJvbGVkZXNjcmlwdGlvbic6IDAsXG5cdCAgICAvLyBXaWRnZXQgQXR0cmlidXRlc1xuXHQgICAg
J2FyaWEtYXV0b2NvbXBsZXRlJzogMCxcblx0ICAgICdhcmlhLWNoZWNrZWQnOiAwLFxuXHQgICAg
J2FyaWEtZXhwYW5kZWQnOiAwLFxuXHQgICAgJ2FyaWEtaGFzcG9wdXAnOiAwLFxuXHQgICAgJ2Fy
aWEtbGV2ZWwnOiAwLFxuXHQgICAgJ2FyaWEtbW9kYWwnOiAwLFxuXHQgICAgJ2FyaWEtbXVsdGls
aW5lJzogMCxcblx0ICAgICdhcmlhLW11bHRpc2VsZWN0YWJsZSc6IDAsXG5cdCAgICAnYXJpYS1v
cmllbnRhdGlvbic6IDAsXG5cdCAgICAnYXJpYS1wbGFjZWhvbGRlcic6IDAsXG5cdCAgICAnYXJp
YS1wcmVzc2VkJzogMCxcblx0ICAgICdhcmlhLXJlYWRvbmx5JzogMCxcblx0ICAgICdhcmlhLXJl
cXVpcmVkJzogMCxcblx0ICAgICdhcmlhLXNlbGVjdGVkJzogMCxcblx0ICAgICdhcmlhLXNvcnQn
OiAwLFxuXHQgICAgJ2FyaWEtdmFsdWVtYXgnOiAwLFxuXHQgICAgJ2FyaWEtdmFsdWVtaW4nOiAw
LFxuXHQgICAgJ2FyaWEtdmFsdWVub3cnOiAwLFxuXHQgICAgJ2FyaWEtdmFsdWV0ZXh0JzogMCxc
blx0ICAgIC8vIExpdmUgUmVnaW9uIEF0dHJpYnV0ZXNcblx0ICAgICdhcmlhLWF0b21pYyc6IDAs
XG5cdCAgICAnYXJpYS1idXN5JzogMCxcblx0ICAgICdhcmlhLWxpdmUnOiAwLFxuXHQgICAgJ2Fy
aWEtcmVsZXZhbnQnOiAwLFxuXHQgICAgLy8gRHJhZy1hbmQtRHJvcCBBdHRyaWJ1dGVzXG5cdCAg
ICAnYXJpYS1kcm9wZWZmZWN0JzogMCxcblx0ICAgICdhcmlhLWdyYWJiZWQnOiAwLFxuXHQgICAg
Ly8gUmVsYXRpb25zaGlwIEF0dHJpYnV0ZXNcblx0ICAgICdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQn
OiAwLFxuXHQgICAgJ2FyaWEtY29sY291bnQnOiAwLFxuXHQgICAgJ2FyaWEtY29saW5kZXgnOiAw
LFxuXHQgICAgJ2FyaWEtY29sc3Bhbic6IDAsXG5cdCAgICAnYXJpYS1jb250cm9scyc6IDAsXG5c
dCAgICAnYXJpYS1kZXNjcmliZWRieSc6IDAsXG5cdCAgICAnYXJpYS1lcnJvcm1lc3NhZ2UnOiAw
LFxuXHQgICAgJ2FyaWEtZmxvd3RvJzogMCxcblx0ICAgICdhcmlhLWxhYmVsbGVkYnknOiAwLFxu
XHQgICAgJ2FyaWEtb3ducyc6IDAsXG5cdCAgICAnYXJpYS1wb3NpbnNldCc6IDAsXG5cdCAgICAn
YXJpYS1yb3djb3VudCc6IDAsXG5cdCAgICAnYXJpYS1yb3dpbmRleCc6IDAsXG5cdCAgICAnYXJp
YS1yb3dzcGFuJzogMCxcblx0ICAgICdhcmlhLXNldHNpemUnOiAwXG5cdCAgfSxcblx0ICBET01B
dHRyaWJ1dGVOYW1lczoge30sXG5cdCAgRE9NUHJvcGVydHlOYW1lczoge31cblx0fTtcblx0XG5c
dG1vZHVsZS5leHBvcnRzID0gQVJJQURPTVByb3BlcnR5Q29uZmlnO1xuXG4vKioqLyB9LFxuLyog
MTI1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJl
X18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5c
dCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICov
XG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblx0XG5cdHZhciBmb2N1c05vZGUgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDUyKTtcblx0XG5cdHZhciBBdXRvRm9jdXNVdGlscyA9IHtcblx0ICBmb2N1c0RP
TUNvbXBvbmVudDogZnVuY3Rpb24gKCkge1xuXHQgICAgZm9jdXNOb2RlKFJlYWN0RE9NQ29tcG9u
ZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKHRoaXMpKTtcblx0ICB9XG5cdH07XG5cdFxuXHRt
b2R1bGUuZXhwb3J0cyA9IEF1dG9Gb2N1c1V0aWxzO1xuXG4vKioqLyB9LFxuLyogMTI2ICovXG4v
KioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxu
XHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCBGYWNlYm9vaywgSW5jLlxuXHQgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1
c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBFdmVudFByb3BhZ2F0b3JzID0gX193ZWJwYWNrX3JlcXVp
cmVfXygyMCk7XG5cdHZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IF9fd2VicGFja19yZXF1aXJl
X18oNik7XG5cdHZhciBGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDEzMik7XG5cdHZhciBTeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50ID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxNjkpO1xuXHR2YXIgU3ludGhldGljSW5wdXRFdmVudCA9IF9fd2VicGFja19yZXF1
aXJlX18oMTcyKTtcblx0XG5cdHZhciBFTkRfS0VZQ09ERVMgPSBbOSwgMTMsIDI3LCAzMl07IC8v
IFRhYiwgUmV0dXJuLCBFc2MsIFNwYWNlXG5cdHZhciBTVEFSVF9LRVlDT0RFID0gMjI5O1xuXHRc
blx0dmFyIGNhblVzZUNvbXBvc2l0aW9uRXZlbnQgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5V
c2VET00gJiYgJ0NvbXBvc2l0aW9uRXZlbnQnIGluIHdpbmRvdztcblx0XG5cdHZhciBkb2N1bWVu
dE1vZGUgPSBudWxsO1xuXHRpZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYmICdk
b2N1bWVudE1vZGUnIGluIGRvY3VtZW50KSB7XG5cdCAgZG9jdW1lbnRNb2RlID0gZG9jdW1lbnQu
ZG9jdW1lbnRNb2RlO1xuXHR9XG5cdFxuXHQvLyBXZWJraXQgb2ZmZXJzIGEgdmVyeSB1c2VmdWwg
YHRleHRJbnB1dGAgZXZlbnQgdGhhdCBjYW4gYmUgdXNlZCB0b1xuXHQvLyBkaXJlY3RseSByZXBy
ZXNlbnQgYGJlZm9yZUlucHV0YC4gVGhlIElFIGB0ZXh0aW5wdXRgIGV2ZW50IGlzIG5vdCBhc1xu
XHQvLyB1c2VmdWwsIHNvIHdlIGRvbid0IHVzZSBpdC5cblx0dmFyIGNhblVzZVRleHRJbnB1dEV2
ZW50ID0gRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYmICdUZXh0RXZlbnQnIGluIHdp
bmRvdyAmJiAhZG9jdW1lbnRNb2RlICYmICFpc1ByZXN0bygpO1xuXHRcblx0Ly8gSW4gSUU5Kywg
d2UgaGF2ZSBhY2Nlc3MgdG8gY29tcG9zaXRpb24gZXZlbnRzLCBidXQgdGhlIGRhdGEgc3VwcGxp
ZWRcblx0Ly8gYnkgdGhlIG5hdGl2ZSBjb21wb3NpdGlvbmVuZCBldmVudCBtYXkgYmUgaW5jb3Jy
ZWN0LiBKYXBhbmVzZSBpZGVvZ3JhcGhpY1xuXHQvLyBzcGFjZXMsIGZvciBpbnN0YW5jZSAoXFx1
MzAwMCkgYXJlIG5vdCByZWNvcmRlZCBjb3JyZWN0bHkuXG5cdHZhciB1c2VGYWxsYmFja0NvbXBv
c2l0aW9uRGF0YSA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAmJiAoIWNhblVzZUNv
bXBvc2l0aW9uRXZlbnQgfHwgZG9jdW1lbnRNb2RlICYmIGRvY3VtZW50TW9kZSA+IDggJiYgZG9j
dW1lbnRNb2RlIDw9IDExKTtcblx0XG5cdC8qKlxuXHQgKiBPcGVyYSA8PSAxMiBpbmNsdWRlcyBU
ZXh0RXZlbnQgaW4gd2luZG93LCBidXQgZG9lcyBub3QgZmlyZVxuXHQgKiB0ZXh0IGlucHV0IGV2
ZW50cy4gUmVseSBvbiBrZXlwcmVzcyBpbnN0ZWFkLlxuXHQgKi9cblx0ZnVuY3Rpb24gaXNQcmVz
dG8oKSB7XG5cdCAgdmFyIG9wZXJhID0gd2luZG93Lm9wZXJhO1xuXHQgIHJldHVybiB0eXBlb2Yg
b3BlcmEgPT09ICdvYmplY3QnICYmIHR5cGVvZiBvcGVyYS52ZXJzaW9uID09PSAnZnVuY3Rpb24n
ICYmIHBhcnNlSW50KG9wZXJhLnZlcnNpb24oKSwgMTApIDw9IDEyO1xuXHR9XG5cdFxuXHR2YXIg
U1BBQ0VCQVJfQ09ERSA9IDMyO1xuXHR2YXIgU1BBQ0VCQVJfQ0hBUiA9IFN0cmluZy5mcm9tQ2hh
ckNvZGUoU1BBQ0VCQVJfQ09ERSk7XG5cdFxuXHQvLyBFdmVudHMgYW5kIHRoZWlyIGNvcnJlc3Bv
bmRpbmcgcHJvcGVydHkgbmFtZXMuXG5cdHZhciBldmVudFR5cGVzID0ge1xuXHQgIGJlZm9yZUlu
cHV0OiB7XG5cdCAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuXHQgICAgICBidWJibGVk
OiAnb25CZWZvcmVJbnB1dCcsXG5cdCAgICAgIGNhcHR1cmVkOiAnb25CZWZvcmVJbnB1dENhcHR1
cmUnXG5cdCAgICB9LFxuXHQgICAgZGVwZW5kZW5jaWVzOiBbJ3RvcENvbXBvc2l0aW9uRW5kJywg
J3RvcEtleVByZXNzJywgJ3RvcFRleHRJbnB1dCcsICd0b3BQYXN0ZSddXG5cdCAgfSxcblx0ICBj
b21wb3NpdGlvbkVuZDoge1xuXHQgICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcblx0ICAg
ICAgYnViYmxlZDogJ29uQ29tcG9zaXRpb25FbmQnLFxuXHQgICAgICBjYXB0dXJlZDogJ29uQ29t
cG9zaXRpb25FbmRDYXB0dXJlJ1xuXHQgICAgfSxcblx0ICAgIGRlcGVuZGVuY2llczogWyd0b3BC
bHVyJywgJ3RvcENvbXBvc2l0aW9uRW5kJywgJ3RvcEtleURvd24nLCAndG9wS2V5UHJlc3MnLCAn
dG9wS2V5VXAnLCAndG9wTW91c2VEb3duJ11cblx0ICB9LFxuXHQgIGNvbXBvc2l0aW9uU3RhcnQ6
IHtcblx0ICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG5cdCAgICAgIGJ1YmJsZWQ6ICdv
bkNvbXBvc2l0aW9uU3RhcnQnLFxuXHQgICAgICBjYXB0dXJlZDogJ29uQ29tcG9zaXRpb25TdGFy
dENhcHR1cmUnXG5cdCAgICB9LFxuXHQgICAgZGVwZW5kZW5jaWVzOiBbJ3RvcEJsdXInLCAndG9w
Q29tcG9zaXRpb25TdGFydCcsICd0b3BLZXlEb3duJywgJ3RvcEtleVByZXNzJywgJ3RvcEtleVVw
JywgJ3RvcE1vdXNlRG93biddXG5cdCAgfSxcblx0ICBjb21wb3NpdGlvblVwZGF0ZToge1xuXHQg
ICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcblx0ICAgICAgYnViYmxlZDogJ29uQ29tcG9z
aXRpb25VcGRhdGUnLFxuXHQgICAgICBjYXB0dXJlZDogJ29uQ29tcG9zaXRpb25VcGRhdGVDYXB0
dXJlJ1xuXHQgICAgfSxcblx0ICAgIGRlcGVuZGVuY2llczogWyd0b3BCbHVyJywgJ3RvcENvbXBv
c2l0aW9uVXBkYXRlJywgJ3RvcEtleURvd24nLCAndG9wS2V5UHJlc3MnLCAndG9wS2V5VXAnLCAn
dG9wTW91c2VEb3duJ11cblx0ICB9XG5cdH07XG5cdFxuXHQvLyBUcmFjayB3aGV0aGVyIHdlJ3Zl
IGV2ZXIgaGFuZGxlZCBhIGtleXByZXNzIG9uIHRoZSBzcGFjZSBrZXkuXG5cdHZhciBoYXNTcGFj
ZUtleXByZXNzID0gZmFsc2U7XG5cdFxuXHQvKipcblx0ICogUmV0dXJuIHdoZXRoZXIgYSBuYXRp
dmUga2V5cHJlc3MgZXZlbnQgaXMgYXNzdW1lZCB0byBiZSBhIGNvbW1hbmQuXG5cdCAqIFRoaXMg
aXMgcmVxdWlyZWQgYmVjYXVzZSBGaXJlZm94IGZpcmVzIGBrZXlwcmVzc2AgZXZlbnRzIGZvciBr
ZXkgY29tbWFuZHNcblx0ICogKGN1dCwgY29weSwgc2VsZWN0LWFsbCwgZXRjLikgZXZlbiB0aG91
Z2ggbm8gY2hhcmFjdGVyIGlzIGluc2VydGVkLlxuXHQgKi9cblx0ZnVuY3Rpb24gaXNLZXlwcmVz
c0NvbW1hbmQobmF0aXZlRXZlbnQpIHtcblx0ICByZXR1cm4gKG5hdGl2ZUV2ZW50LmN0cmxLZXkg
fHwgbmF0aXZlRXZlbnQuYWx0S2V5IHx8IG5hdGl2ZUV2ZW50Lm1ldGFLZXkpICYmXG5cdCAgLy8g
Y3RybEtleSAmJiBhbHRLZXkgaXMgZXF1aXZhbGVudCB0byBBbHRHciwgYW5kIGlzIG5vdCBhIGNv
bW1hbmQuXG5cdCAgIShuYXRpdmVFdmVudC5jdHJsS2V5ICYmIG5hdGl2ZUV2ZW50LmFsdEtleSk7
XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBUcmFuc2xhdGUgbmF0aXZlIHRvcCBsZXZlbCBldmVudHMg
aW50byBldmVudCB0eXBlcy5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlw
ZVxuXHQgKiBAcmV0dXJuIHtvYmplY3R9XG5cdCAqL1xuXHRmdW5jdGlvbiBnZXRDb21wb3NpdGlv
bkV2ZW50VHlwZSh0b3BMZXZlbFR5cGUpIHtcblx0ICBzd2l0Y2ggKHRvcExldmVsVHlwZSkge1xu
XHQgICAgY2FzZSAndG9wQ29tcG9zaXRpb25TdGFydCc6XG5cdCAgICAgIHJldHVybiBldmVudFR5
cGVzLmNvbXBvc2l0aW9uU3RhcnQ7XG5cdCAgICBjYXNlICd0b3BDb21wb3NpdGlvbkVuZCc6XG5c
dCAgICAgIHJldHVybiBldmVudFR5cGVzLmNvbXBvc2l0aW9uRW5kO1xuXHQgICAgY2FzZSAndG9w
Q29tcG9zaXRpb25VcGRhdGUnOlxuXHQgICAgICByZXR1cm4gZXZlbnRUeXBlcy5jb21wb3NpdGlv
blVwZGF0ZTtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBEb2VzIG91ciBmYWxsYmFjayBi
ZXN0LWd1ZXNzIG1vZGVsIHRoaW5rIHRoaXMgZXZlbnQgc2lnbmlmaWVzIHRoYXRcblx0ICogY29t
cG9zaXRpb24gaGFzIGJlZ3VuP1xuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxU
eXBlXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudFxuXHQgKiBAcmV0dXJuIHtib29s
ZWFufVxuXHQgKi9cblx0ZnVuY3Rpb24gaXNGYWxsYmFja0NvbXBvc2l0aW9uU3RhcnQodG9wTGV2
ZWxUeXBlLCBuYXRpdmVFdmVudCkge1xuXHQgIHJldHVybiB0b3BMZXZlbFR5cGUgPT09ICd0b3BL
ZXlEb3duJyAmJiBuYXRpdmVFdmVudC5rZXlDb2RlID09PSBTVEFSVF9LRVlDT0RFO1xuXHR9XG5c
dFxuXHQvKipcblx0ICogRG9lcyBvdXIgZmFsbGJhY2sgbW9kZSB0aGluayB0aGF0IHRoaXMgZXZl
bnQgaXMgdGhlIGVuZCBvZiBjb21wb3NpdGlvbj9cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9
IHRvcExldmVsVHlwZVxuXHQgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnRcblx0ICogQHJl
dHVybiB7Ym9vbGVhbn1cblx0ICovXG5cdGZ1bmN0aW9uIGlzRmFsbGJhY2tDb21wb3NpdGlvbkVu
ZCh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSB7XG5cdCAgc3dpdGNoICh0b3BMZXZlbFR5cGUp
IHtcblx0ICAgIGNhc2UgJ3RvcEtleVVwJzpcblx0ICAgICAgLy8gQ29tbWFuZCBrZXlzIGluc2Vy
dCBvciBjbGVhciBJTUUgaW5wdXQuXG5cdCAgICAgIHJldHVybiBFTkRfS0VZQ09ERVMuaW5kZXhP
ZihuYXRpdmVFdmVudC5rZXlDb2RlKSAhPT0gLTE7XG5cdCAgICBjYXNlICd0b3BLZXlEb3duJzpc
blx0ICAgICAgLy8gRXhwZWN0IElNRSBrZXlDb2RlIG9uIGVhY2gga2V5ZG93bi4gSWYgd2UgZ2V0
IGFueSBvdGhlclxuXHQgICAgICAvLyBjb2RlIHdlIG11c3QgaGF2ZSBleGl0ZWQgZWFybGllci5c
blx0ICAgICAgcmV0dXJuIG5hdGl2ZUV2ZW50LmtleUNvZGUgIT09IFNUQVJUX0tFWUNPREU7XG5c
dCAgICBjYXNlICd0b3BLZXlQcmVzcyc6XG5cdCAgICBjYXNlICd0b3BNb3VzZURvd24nOlxuXHQg
ICAgY2FzZSAndG9wQmx1cic6XG5cdCAgICAgIC8vIEV2ZW50cyBhcmUgbm90IHBvc3NpYmxlIHdp
dGhvdXQgY2FuY2VsbGluZyBJTUUuXG5cdCAgICAgIHJldHVybiB0cnVlO1xuXHQgICAgZGVmYXVs
dDpcblx0ICAgICAgcmV0dXJuIGZhbHNlO1xuXHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIEdv
b2dsZSBJbnB1dCBUb29scyBwcm92aWRlcyBjb21wb3NpdGlvbiBkYXRhIHZpYSBhIEN1c3RvbUV2
ZW50LFxuXHQgKiB3aXRoIHRoZSBgZGF0YWAgcHJvcGVydHkgcG9wdWxhdGVkIGluIHRoZSBgZGV0
YWlsYCBvYmplY3QuIElmIHRoaXNcblx0ICogaXMgYXZhaWxhYmxlIG9uIHRoZSBldmVudCBvYmpl
Y3QsIHVzZSBpdC4gSWYgbm90LCB0aGlzIGlzIGEgcGxhaW5cblx0ICogY29tcG9zaXRpb24gZXZl
bnQgYW5kIHdlIGhhdmUgbm90aGluZyBzcGVjaWFsIHRvIGV4dHJhY3QuXG5cdCAqXG5cdCAqIEBw
YXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudFxuXHQgKiBAcmV0dXJuIHs/c3RyaW5nfVxuXHQgKi9c
blx0ZnVuY3Rpb24gZ2V0RGF0YUZyb21DdXN0b21FdmVudChuYXRpdmVFdmVudCkge1xuXHQgIHZh
ciBkZXRhaWwgPSBuYXRpdmVFdmVudC5kZXRhaWw7XG5cdCAgaWYgKHR5cGVvZiBkZXRhaWwgPT09
ICdvYmplY3QnICYmICdkYXRhJyBpbiBkZXRhaWwpIHtcblx0ICAgIHJldHVybiBkZXRhaWwuZGF0
YTtcblx0ICB9XG5cdCAgcmV0dXJuIG51bGw7XG5cdH1cblx0XG5cdC8vIFRyYWNrIHRoZSBjdXJy
ZW50IElNRSBjb21wb3NpdGlvbiBmYWxsYmFjayBvYmplY3QsIGlmIGFueS5cblx0dmFyIGN1cnJl
bnRDb21wb3NpdGlvbiA9IG51bGw7XG5cdFxuXHQvKipcblx0ICogQHJldHVybiB7P29iamVjdH0g
QSBTeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50LlxuXHQgKi9cblx0ZnVuY3Rpb24gZXh0cmFjdENv
bXBvc2l0aW9uRXZlbnQodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0
aXZlRXZlbnRUYXJnZXQpIHtcblx0ICB2YXIgZXZlbnRUeXBlO1xuXHQgIHZhciBmYWxsYmFja0Rh
dGE7XG5cdFxuXHQgIGlmIChjYW5Vc2VDb21wb3NpdGlvbkV2ZW50KSB7XG5cdCAgICBldmVudFR5
cGUgPSBnZXRDb21wb3NpdGlvbkV2ZW50VHlwZSh0b3BMZXZlbFR5cGUpO1xuXHQgIH0gZWxzZSBp
ZiAoIWN1cnJlbnRDb21wb3NpdGlvbikge1xuXHQgICAgaWYgKGlzRmFsbGJhY2tDb21wb3NpdGlv
blN0YXJ0KHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpKSB7XG5cdCAgICAgIGV2ZW50VHlwZSA9
IGV2ZW50VHlwZXMuY29tcG9zaXRpb25TdGFydDtcblx0ICAgIH1cblx0ICB9IGVsc2UgaWYgKGlz
RmFsbGJhY2tDb21wb3NpdGlvbkVuZCh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSkge1xuXHQg
ICAgZXZlbnRUeXBlID0gZXZlbnRUeXBlcy5jb21wb3NpdGlvbkVuZDtcblx0ICB9XG5cdFxuXHQg
IGlmICghZXZlbnRUeXBlKSB7XG5cdCAgICByZXR1cm4gbnVsbDtcblx0ICB9XG5cdFxuXHQgIGlm
ICh1c2VGYWxsYmFja0NvbXBvc2l0aW9uRGF0YSkge1xuXHQgICAgLy8gVGhlIGN1cnJlbnQgY29t
cG9zaXRpb24gaXMgc3RvcmVkIHN0YXRpY2FsbHkgYW5kIG11c3Qgbm90IGJlXG5cdCAgICAvLyBv
dmVyd3JpdHRlbiB3aGlsZSBjb21wb3NpdGlvbiBjb250aW51ZXMuXG5cdCAgICBpZiAoIWN1cnJl
bnRDb21wb3NpdGlvbiAmJiBldmVudFR5cGUgPT09IGV2ZW50VHlwZXMuY29tcG9zaXRpb25TdGFy
dCkge1xuXHQgICAgICBjdXJyZW50Q29tcG9zaXRpb24gPSBGYWxsYmFja0NvbXBvc2l0aW9uU3Rh
dGUuZ2V0UG9vbGVkKG5hdGl2ZUV2ZW50VGFyZ2V0KTtcblx0ICAgIH0gZWxzZSBpZiAoZXZlbnRU
eXBlID09PSBldmVudFR5cGVzLmNvbXBvc2l0aW9uRW5kKSB7XG5cdCAgICAgIGlmIChjdXJyZW50
Q29tcG9zaXRpb24pIHtcblx0ICAgICAgICBmYWxsYmFja0RhdGEgPSBjdXJyZW50Q29tcG9zaXRp
b24uZ2V0RGF0YSgpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0ICB2YXIgZXZl
bnQgPSBTeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50LmdldFBvb2xlZChldmVudFR5cGUsIHRhcmdl
dEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cdFxuXHQgIGlmIChmYWxs
YmFja0RhdGEpIHtcblx0ICAgIC8vIEluamVjdCBkYXRhIGdlbmVyYXRlZCBmcm9tIGZhbGxiYWNr
IHBhdGggaW50byB0aGUgc3ludGhldGljIGV2ZW50LlxuXHQgICAgLy8gVGhpcyBtYXRjaGVzIHRo
ZSBwcm9wZXJ0eSBvZiBuYXRpdmUgQ29tcG9zaXRpb25FdmVudEludGVyZmFjZS5cblx0ICAgIGV2
ZW50LmRhdGEgPSBmYWxsYmFja0RhdGE7XG5cdCAgfSBlbHNlIHtcblx0ICAgIHZhciBjdXN0b21E
YXRhID0gZ2V0RGF0YUZyb21DdXN0b21FdmVudChuYXRpdmVFdmVudCk7XG5cdCAgICBpZiAoY3Vz
dG9tRGF0YSAhPT0gbnVsbCkge1xuXHQgICAgICBldmVudC5kYXRhID0gY3VzdG9tRGF0YTtcblx0
ICAgIH1cblx0ICB9XG5cdFxuXHQgIEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0ZVR3b1BoYXNl
RGlzcGF0Y2hlcyhldmVudCk7XG5cdCAgcmV0dXJuIGV2ZW50O1xuXHR9XG5cdFxuXHQvKipcblx0
ICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZSBSZWNvcmQgZnJvbSBgRXZlbnRDb25zdGFu
dHNgLlxuXHQgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZl
bnQuXG5cdCAqIEByZXR1cm4gez9zdHJpbmd9IFRoZSBzdHJpbmcgY29ycmVzcG9uZGluZyB0byB0
aGlzIGBiZWZvcmVJbnB1dGAgZXZlbnQuXG5cdCAqL1xuXHRmdW5jdGlvbiBnZXROYXRpdmVCZWZv
cmVJbnB1dENoYXJzKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpIHtcblx0ICBzd2l0Y2ggKHRv
cExldmVsVHlwZSkge1xuXHQgICAgY2FzZSAndG9wQ29tcG9zaXRpb25FbmQnOlxuXHQgICAgICBy
ZXR1cm4gZ2V0RGF0YUZyb21DdXN0b21FdmVudChuYXRpdmVFdmVudCk7XG5cdCAgICBjYXNlICd0
b3BLZXlQcmVzcyc6XG5cdCAgICAgIC8qKlxuXHQgICAgICAgKiBJZiBuYXRpdmUgYHRleHRJbnB1
dGAgZXZlbnRzIGFyZSBhdmFpbGFibGUsIG91ciBnb2FsIGlzIHRvIG1ha2Vcblx0ICAgICAgICog
dXNlIG9mIHRoZW0uIEhvd2V2ZXIsIHRoZXJlIGlzIGEgc3BlY2lhbCBjYXNlOiB0aGUgc3BhY2Vi
YXIga2V5LlxuXHQgICAgICAgKiBJbiBXZWJraXQsIHByZXZlbnRpbmcgZGVmYXVsdCBvbiBhIHNw
YWNlYmFyIGB0ZXh0SW5wdXRgIGV2ZW50XG5cdCAgICAgICAqIGNhbmNlbHMgY2hhcmFjdGVyIGlu
c2VydGlvbiwgYnV0IGl0ICphbHNvKiBjYXVzZXMgdGhlIGJyb3dzZXJcblx0ICAgICAgICogdG8g
ZmFsbCBiYWNrIHRvIGl0cyBkZWZhdWx0IHNwYWNlYmFyIGJlaGF2aW9yIG9mIHNjcm9sbGluZyB0
aGVcblx0ICAgICAgICogcGFnZS5cblx0ICAgICAgICpcblx0ICAgICAgICogVHJhY2tpbmcgYXQ6
XG5cdCAgICAgICAqIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2Rl
dGFpbD9pZD0zNTUxMDNcblx0ICAgICAgICpcblx0ICAgICAgICogVG8gYXZvaWQgdGhpcyBpc3N1
ZSwgdXNlIHRoZSBrZXlwcmVzcyBldmVudCBhcyBpZiBubyBgdGV4dElucHV0YFxuXHQgICAgICAg
KiBldmVudCBpcyBhdmFpbGFibGUuXG5cdCAgICAgICAqL1xuXHQgICAgICB2YXIgd2hpY2ggPSBu
YXRpdmVFdmVudC53aGljaDtcblx0ICAgICAgaWYgKHdoaWNoICE9PSBTUEFDRUJBUl9DT0RFKSB7
XG5cdCAgICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIGhhc1NwYWNl
S2V5cHJlc3MgPSB0cnVlO1xuXHQgICAgICByZXR1cm4gU1BBQ0VCQVJfQ0hBUjtcblx0XG5cdCAg
ICBjYXNlICd0b3BUZXh0SW5wdXQnOlxuXHQgICAgICAvLyBSZWNvcmQgdGhlIGNoYXJhY3RlcnMg
dG8gYmUgYWRkZWQgdG8gdGhlIERPTS5cblx0ICAgICAgdmFyIGNoYXJzID0gbmF0aXZlRXZlbnQu
ZGF0YTtcblx0XG5cdCAgICAgIC8vIElmIGl0J3MgYSBzcGFjZWJhciBjaGFyYWN0ZXIsIGFzc3Vt
ZSB0aGF0IHdlIGhhdmUgYWxyZWFkeSBoYW5kbGVkXG5cdCAgICAgIC8vIGl0IGF0IHRoZSBrZXlw
cmVzcyBsZXZlbCBhbmQgYmFpbCBpbW1lZGlhdGVseS4gQW5kcm9pZCBDaHJvbWVcblx0ICAgICAg
Ly8gZG9lc24ndCBnaXZlIHVzIGtleWNvZGVzLCBzbyB3ZSBuZWVkIHRvIGJsYWNrbGlzdCBpdC5c
blx0ICAgICAgaWYgKGNoYXJzID09PSBTUEFDRUJBUl9DSEFSICYmIGhhc1NwYWNlS2V5cHJlc3Mp
IHtcblx0ICAgICAgICByZXR1cm4gbnVsbDtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgcmV0dXJu
IGNoYXJzO1xuXHRcblx0ICAgIGRlZmF1bHQ6XG5cdCAgICAgIC8vIEZvciBvdGhlciBuYXRpdmUg
ZXZlbnQgdHlwZXMsIGRvIG5vdGhpbmcuXG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQgIH1cblx0
fVxuXHRcblx0LyoqXG5cdCAqIEZvciBicm93c2VycyB0aGF0IGRvIG5vdCBwcm92aWRlIHRoZSBg
dGV4dElucHV0YCBldmVudCwgZXh0cmFjdCB0aGVcblx0ICogYXBwcm9wcmlhdGUgc3RyaW5nIHRv
IHVzZSBmb3IgU3ludGhldGljSW5wdXRFdmVudC5cblx0ICpcblx0ICogQHBhcmFtIHtzdHJpbmd9
IHRvcExldmVsVHlwZSBSZWNvcmQgZnJvbSBgRXZlbnRDb25zdGFudHNgLlxuXHQgKiBAcGFyYW0g
e29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG5cdCAqIEByZXR1cm4g
ez9zdHJpbmd9IFRoZSBmYWxsYmFjayBzdHJpbmcgZm9yIHRoaXMgYGJlZm9yZUlucHV0YCBldmVu
dC5cblx0ICovXG5cdGZ1bmN0aW9uIGdldEZhbGxiYWNrQmVmb3JlSW5wdXRDaGFycyh0b3BMZXZl
bFR5cGUsIG5hdGl2ZUV2ZW50KSB7XG5cdCAgLy8gSWYgd2UgYXJlIGN1cnJlbnRseSBjb21wb3Np
bmcgKElNRSkgYW5kIHVzaW5nIGEgZmFsbGJhY2sgdG8gZG8gc28sXG5cdCAgLy8gdHJ5IHRvIGV4
dHJhY3QgdGhlIGNvbXBvc2VkIGNoYXJhY3RlcnMgZnJvbSB0aGUgZmFsbGJhY2sgb2JqZWN0Llxu
XHQgIC8vIElmIGNvbXBvc2l0aW9uIGV2ZW50IGlzIGF2YWlsYWJsZSwgd2UgZXh0cmFjdCBhIHN0
cmluZyBvbmx5IGF0XG5cdCAgLy8gY29tcG9zaXRpb25ldmVudCwgb3RoZXJ3aXNlIGV4dHJhY3Qg
aXQgYXQgZmFsbGJhY2sgZXZlbnRzLlxuXHQgIGlmIChjdXJyZW50Q29tcG9zaXRpb24pIHtcblx0
ICAgIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BDb21wb3NpdGlvbkVuZCcgfHwgIWNhblVzZUNv
bXBvc2l0aW9uRXZlbnQgJiYgaXNGYWxsYmFja0NvbXBvc2l0aW9uRW5kKHRvcExldmVsVHlwZSwg
bmF0aXZlRXZlbnQpKSB7XG5cdCAgICAgIHZhciBjaGFycyA9IGN1cnJlbnRDb21wb3NpdGlvbi5n
ZXREYXRhKCk7XG5cdCAgICAgIEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZS5yZWxlYXNlKGN1cnJl
bnRDb21wb3NpdGlvbik7XG5cdCAgICAgIGN1cnJlbnRDb21wb3NpdGlvbiA9IG51bGw7XG5cdCAg
ICAgIHJldHVybiBjaGFycztcblx0ICAgIH1cblx0ICAgIHJldHVybiBudWxsO1xuXHQgIH1cblx0
XG5cdCAgc3dpdGNoICh0b3BMZXZlbFR5cGUpIHtcblx0ICAgIGNhc2UgJ3RvcFBhc3RlJzpcblx0
ICAgICAgLy8gSWYgYSBwYXN0ZSBldmVudCBvY2N1cnMgYWZ0ZXIgYSBrZXlwcmVzcywgdGhyb3cg
b3V0IHRoZSBpbnB1dFxuXHQgICAgICAvLyBjaGFycy4gUGFzdGUgZXZlbnRzIHNob3VsZCBub3Qg
bGVhZCB0byBCZWZvcmVJbnB1dCBldmVudHMuXG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQgICAg
Y2FzZSAndG9wS2V5UHJlc3MnOlxuXHQgICAgICAvKipcblx0ICAgICAgICogQXMgb2YgdjI3LCBG
aXJlZm94IG1heSBmaXJlIGtleXByZXNzIGV2ZW50cyBldmVuIHdoZW4gbm8gY2hhcmFjdGVyXG5c
dCAgICAgICAqIHdpbGwgYmUgaW5zZXJ0ZWQuIEEgZmV3IHBvc3NpYmlsaXRpZXM6XG5cdCAgICAg
ICAqXG5cdCAgICAgICAqIC0gYHdoaWNoYCBpcyBgMGAuIEFycm93IGtleXMsIEVzYyBrZXksIGV0
Yy5cblx0ICAgICAgICpcblx0ICAgICAgICogLSBgd2hpY2hgIGlzIHRoZSBwcmVzc2VkIGtleSBj
b2RlLCBidXQgbm8gY2hhciBpcyBhdmFpbGFibGUuXG5cdCAgICAgICAqICAgRXg6ICdBbHRHciAr
IGRgIGluIFBvbGlzaC4gVGhlcmUgaXMgbm8gbW9kaWZpZWQgY2hhcmFjdGVyIGZvclxuXHQgICAg
ICAgKiAgIHRoaXMga2V5IGNvbWJpbmF0aW9uIGFuZCBubyBjaGFyYWN0ZXIgaXMgaW5zZXJ0ZWQg
aW50byB0aGVcblx0ICAgICAgICogICBkb2N1bWVudCwgYnV0IEZGIGZpcmVzIHRoZSBrZXlwcmVz
cyBmb3IgY2hhciBjb2RlIGAxMDBgIGFueXdheS5cblx0ICAgICAgICogICBObyBgaW5wdXRgIGV2
ZW50IHdpbGwgb2NjdXIuXG5cdCAgICAgICAqXG5cdCAgICAgICAqIC0gYHdoaWNoYCBpcyB0aGUg
cHJlc3NlZCBrZXkgY29kZSwgYnV0IGEgY29tbWFuZCBjb21iaW5hdGlvbiBpc1xuXHQgICAgICAg
KiAgIGJlaW5nIHVzZWQuIEV4OiBgQ21kK0NgLiBObyBjaGFyYWN0ZXIgaXMgaW5zZXJ0ZWQsIGFu
ZCBub1xuXHQgICAgICAgKiAgIGBpbnB1dGAgZXZlbnQgd2lsbCBvY2N1ci5cblx0ICAgICAgICov
XG5cdCAgICAgIGlmIChuYXRpdmVFdmVudC53aGljaCAmJiAhaXNLZXlwcmVzc0NvbW1hbmQobmF0
aXZlRXZlbnQpKSB7XG5cdCAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUobmF0aXZl
RXZlbnQud2hpY2gpO1xuXHQgICAgICB9XG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQgICAgY2Fz
ZSAndG9wQ29tcG9zaXRpb25FbmQnOlxuXHQgICAgICByZXR1cm4gdXNlRmFsbGJhY2tDb21wb3Np
dGlvbkRhdGEgPyBudWxsIDogbmF0aXZlRXZlbnQuZGF0YTtcblx0ICAgIGRlZmF1bHQ6XG5cdCAg
ICAgIHJldHVybiBudWxsO1xuXHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIEV4dHJhY3QgYSBT
eW50aGV0aWNJbnB1dEV2ZW50IGZvciBgYmVmb3JlSW5wdXRgLCBiYXNlZCBvbiBlaXRoZXIgbmF0
aXZlXG5cdCAqIGB0ZXh0SW5wdXRgIG9yIGZhbGxiYWNrIGJlaGF2aW9yLlxuXHQgKlxuXHQgKiBA
cmV0dXJuIHs/b2JqZWN0fSBBIFN5bnRoZXRpY0lucHV0RXZlbnQuXG5cdCAqL1xuXHRmdW5jdGlv
biBleHRyYWN0QmVmb3JlSW5wdXRFdmVudCh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2
ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuXHQgIHZhciBjaGFycztcblx0XG5cdCAgaWYg
KGNhblVzZVRleHRJbnB1dEV2ZW50KSB7XG5cdCAgICBjaGFycyA9IGdldE5hdGl2ZUJlZm9yZUlu
cHV0Q2hhcnModG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCk7XG5cdCAgfSBlbHNlIHtcblx0ICAg
IGNoYXJzID0gZ2V0RmFsbGJhY2tCZWZvcmVJbnB1dENoYXJzKHRvcExldmVsVHlwZSwgbmF0aXZl
RXZlbnQpO1xuXHQgIH1cblx0XG5cdCAgLy8gSWYgbm8gY2hhcmFjdGVycyBhcmUgYmVpbmcgaW5z
ZXJ0ZWQsIG5vIEJlZm9yZUlucHV0IGV2ZW50IHNob3VsZFxuXHQgIC8vIGJlIGZpcmVkLlxuXHQg
IGlmICghY2hhcnMpIHtcblx0ICAgIHJldHVybiBudWxsO1xuXHQgIH1cblx0XG5cdCAgdmFyIGV2
ZW50ID0gU3ludGhldGljSW5wdXRFdmVudC5nZXRQb29sZWQoZXZlbnRUeXBlcy5iZWZvcmVJbnB1
dCwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcblx0XG5cdCAg
ZXZlbnQuZGF0YSA9IGNoYXJzO1xuXHQgIEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0ZVR3b1Bo
YXNlRGlzcGF0Y2hlcyhldmVudCk7XG5cdCAgcmV0dXJuIGV2ZW50O1xuXHR9XG5cdFxuXHQvKipc
blx0ICogQ3JlYXRlIGFuIGBvbkJlZm9yZUlucHV0YCBldmVudCB0byBtYXRjaFxuXHQgKiBodHRw
Oi8vd3d3LnczLm9yZy9UUi8yMDEzL1dELURPTS1MZXZlbC0zLUV2ZW50cy0yMDEzMTEwNS8jZXZl
bnRzLWlucHV0ZXZlbnRzLlxuXHQgKlxuXHQgKiBUaGlzIGV2ZW50IHBsdWdpbiBpcyBiYXNlZCBv
biB0aGUgbmF0aXZlIGB0ZXh0SW5wdXRgIGV2ZW50XG5cdCAqIGF2YWlsYWJsZSBpbiBDaHJvbWUs
IFNhZmFyaSwgT3BlcmEsIGFuZCBJRS4gVGhpcyBldmVudCBmaXJlcyBhZnRlclxuXHQgKiBgb25L
ZXlQcmVzc2AgYW5kIGBvbkNvbXBvc2l0aW9uRW5kYCwgYnV0IGJlZm9yZSBgb25JbnB1dGAuXG5c
dCAqXG5cdCAqIGBiZWZvcmVJbnB1dGAgaXMgc3BlYydkIGJ1dCBub3QgaW1wbGVtZW50ZWQgaW4g
YW55IGJyb3dzZXJzLCBhbmRcblx0ICogdGhlIGBpbnB1dGAgZXZlbnQgZG9lcyBub3QgcHJvdmlk
ZSBhbnkgdXNlZnVsIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgaGFzXG5cdCAqIGFjdHVhbGx5IGJl
ZW4gYWRkZWQsIGNvbnRyYXJ5IHRvIHRoZSBzcGVjLiBUaHVzLCBgdGV4dElucHV0YCBpcyB0aGUg
YmVzdFxuXHQgKiBhdmFpbGFibGUgZXZlbnQgdG8gaWRlbnRpZnkgdGhlIGNoYXJhY3RlcnMgdGhh
dCBoYXZlIGFjdHVhbGx5IGJlZW4gaW5zZXJ0ZWRcblx0ICogaW50byB0aGUgdGFyZ2V0IG5vZGUu
XG5cdCAqXG5cdCAqIFRoaXMgcGx1Z2luIGlzIGFsc28gcmVzcG9uc2libGUgZm9yIGVtaXR0aW5n
IGBjb21wb3NpdGlvbmAgZXZlbnRzLCB0aHVzXG5cdCAqIGFsbG93aW5nIHVzIHRvIHNoYXJlIGNv
bXBvc2l0aW9uIGZhbGxiYWNrIGNvZGUgZm9yIGJvdGggYGJlZm9yZUlucHV0YCBhbmRcblx0ICog
YGNvbXBvc2l0aW9uYCBldmVudCB0eXBlcy5cblx0ICovXG5cdHZhciBCZWZvcmVJbnB1dEV2ZW50
UGx1Z2luID0ge1xuXHQgIGV2ZW50VHlwZXM6IGV2ZW50VHlwZXMsXG5cdFxuXHQgIGV4dHJhY3RF
dmVudHM6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBu
YXRpdmVFdmVudFRhcmdldCkge1xuXHQgICAgcmV0dXJuIFtleHRyYWN0Q29tcG9zaXRpb25FdmVu
dCh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdl
dCksIGV4dHJhY3RCZWZvcmVJbnB1dEV2ZW50KHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0
aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KV07XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxl
LmV4cG9ydHMgPSBCZWZvcmVJbnB1dEV2ZW50UGx1Z2luO1xuXG4vKioqLyB9LFxuLyogMTI3ICov
XG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtc
blxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxu
XHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgQ1NTUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDU4KTtcblx0dmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX193ZWJwYWNrX3JlcXVpcmVf
Xyg2KTtcblx0dmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4
KTtcblx0XG5cdHZhciBjYW1lbGl6ZVN0eWxlTmFtZSA9IF9fd2VicGFja19yZXF1aXJlX18oOTkp
O1xuXHR2YXIgZGFuZ2Vyb3VzU3R5bGVWYWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTc4KTtc
blx0dmFyIGh5cGhlbmF0ZVN0eWxlTmFtZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTA2KTtcblx0
dmFyIG1lbW9pemVTdHJpbmdPbmx5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMDkpO1xuXHR2YXIg
d2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cdFxuXHR2YXIgcHJvY2Vzc1N0eWxl
TmFtZSA9IG1lbW9pemVTdHJpbmdPbmx5KGZ1bmN0aW9uIChzdHlsZU5hbWUpIHtcblx0ICByZXR1
cm4gaHlwaGVuYXRlU3R5bGVOYW1lKHN0eWxlTmFtZSk7XG5cdH0pO1xuXHRcblx0dmFyIGhhc1No
b3J0aGFuZFByb3BlcnR5QnVnID0gZmFsc2U7XG5cdHZhciBzdHlsZUZsb2F0QWNjZXNzb3IgPSAn
Y3NzRmxvYXQnO1xuXHRpZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG5cdCAg
dmFyIHRlbXBTdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLnN0eWxlO1xuXHQg
IHRyeSB7XG5cdCAgICAvLyBJRTggdGhyb3dzIFwiSW52YWxpZCBhcmd1bWVudC5cIiBpZiByZXNl
dHRpbmcgc2hvcnRoYW5kIHN0eWxlIHByb3BlcnRpZXMuXG5cdCAgICB0ZW1wU3R5bGUuZm9udCA9
ICcnO1xuXHQgIH0gY2F0Y2ggKGUpIHtcblx0ICAgIGhhc1Nob3J0aGFuZFByb3BlcnR5QnVnID0g
dHJ1ZTtcblx0ICB9XG5cdCAgLy8gSUU4IG9ubHkgc3VwcG9ydHMgYWNjZXNzaW5nIGNzc0Zsb2F0
IChzdGFuZGFyZCkgYXMgc3R5bGVGbG9hdFxuXHQgIGlmIChkb2N1bWVudC5kb2N1bWVudEVsZW1l
bnQuc3R5bGUuY3NzRmxvYXQgPT09IHVuZGVmaW5lZCkge1xuXHQgICAgc3R5bGVGbG9hdEFjY2Vz
c29yID0gJ3N0eWxlRmxvYXQnO1xuXHQgIH1cblx0fVxuXHRcblx0aWYgKGZhbHNlKSB7XG5cdCAg
Ly8gJ21zVHJhbnNmb3JtJyBpcyBjb3JyZWN0LCBidXQgdGhlIG90aGVyIHByZWZpeGVzIHNob3Vs
ZCBiZSBjYXBpdGFsaXplZFxuXHQgIHZhciBiYWRWZW5kb3JlZFN0eWxlTmFtZVBhdHRlcm4gPSAv
Xig/OndlYmtpdHxtb3p8bylbQS1aXS87XG5cdFxuXHQgIC8vIHN0eWxlIHZhbHVlcyBzaG91bGRu
J3QgY29udGFpbiBhIHNlbWljb2xvblxuXHQgIHZhciBiYWRTdHlsZVZhbHVlV2l0aFNlbWljb2xv
blBhdHRlcm4gPSAvO1xccyokLztcblx0XG5cdCAgdmFyIHdhcm5lZFN0eWxlTmFtZXMgPSB7fTtc
blx0ICB2YXIgd2FybmVkU3R5bGVWYWx1ZXMgPSB7fTtcblx0ICB2YXIgd2FybmVkRm9yTmFOVmFs
dWUgPSBmYWxzZTtcblx0XG5cdCAgdmFyIHdhcm5IeXBoZW5hdGVkU3R5bGVOYW1lID0gZnVuY3Rp
b24gKG5hbWUsIG93bmVyKSB7XG5cdCAgICBpZiAod2FybmVkU3R5bGVOYW1lcy5oYXNPd25Qcm9w
ZXJ0eShuYW1lKSAmJiB3YXJuZWRTdHlsZU5hbWVzW25hbWVdKSB7XG5cdCAgICAgIHJldHVybjtc
blx0ICAgIH1cblx0XG5cdCAgICB3YXJuZWRTdHlsZU5hbWVzW25hbWVdID0gdHJ1ZTtcblx0ICAg
IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAn
VW5zdXBwb3J0ZWQgc3R5bGUgcHJvcGVydHkgJXMuIERpZCB5b3UgbWVhbiAlcz8lcycsIG5hbWUs
IGNhbWVsaXplU3R5bGVOYW1lKG5hbWUpLCBjaGVja1JlbmRlck1lc3NhZ2Uob3duZXIpKSA6IHZv
aWQgMDtcblx0ICB9O1xuXHRcblx0ICB2YXIgd2FybkJhZFZlbmRvcmVkU3R5bGVOYW1lID0gZnVu
Y3Rpb24gKG5hbWUsIG93bmVyKSB7XG5cdCAgICBpZiAod2FybmVkU3R5bGVOYW1lcy5oYXNPd25Q
cm9wZXJ0eShuYW1lKSAmJiB3YXJuZWRTdHlsZU5hbWVzW25hbWVdKSB7XG5cdCAgICAgIHJldHVy
bjtcblx0ICAgIH1cblx0XG5cdCAgICB3YXJuZWRTdHlsZU5hbWVzW25hbWVdID0gdHJ1ZTtcblx0
ICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNl
LCAnVW5zdXBwb3J0ZWQgdmVuZG9yLXByZWZpeGVkIHN0eWxlIHByb3BlcnR5ICVzLiBEaWQgeW91
IG1lYW4gJXM/JXMnLCBuYW1lLCBuYW1lLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgbmFtZS5z
bGljZSgxKSwgY2hlY2tSZW5kZXJNZXNzYWdlKG93bmVyKSkgOiB2b2lkIDA7XG5cdCAgfTtcblx0
XG5cdCAgdmFyIHdhcm5TdHlsZVZhbHVlV2l0aFNlbWljb2xvbiA9IGZ1bmN0aW9uIChuYW1lLCB2
YWx1ZSwgb3duZXIpIHtcblx0ICAgIGlmICh3YXJuZWRTdHlsZVZhbHVlcy5oYXNPd25Qcm9wZXJ0
eSh2YWx1ZSkgJiYgd2FybmVkU3R5bGVWYWx1ZXNbdmFsdWVdKSB7XG5cdCAgICAgIHJldHVybjtc
blx0ICAgIH1cblx0XG5cdCAgICB3YXJuZWRTdHlsZVZhbHVlc1t2YWx1ZV0gPSB0cnVlO1xuXHQg
ICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2Us
IFwiU3R5bGUgcHJvcGVydHkgdmFsdWVzIHNob3VsZG4ndCBjb250YWluIGEgc2VtaWNvbG9uLiVz
IFwiICsgJ1RyeSBcIiVzOiAlc1wiIGluc3RlYWQuJywgY2hlY2tSZW5kZXJNZXNzYWdlKG93bmVy
KSwgbmFtZSwgdmFsdWUucmVwbGFjZShiYWRTdHlsZVZhbHVlV2l0aFNlbWljb2xvblBhdHRlcm4s
ICcnKSkgOiB2b2lkIDA7XG5cdCAgfTtcblx0XG5cdCAgdmFyIHdhcm5TdHlsZVZhbHVlSXNOYU4g
PSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIG93bmVyKSB7XG5cdCAgICBpZiAod2FybmVkRm9yTmFO
VmFsdWUpIHtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHRcblx0ICAgIHdhcm5lZEZvck5h
TlZhbHVlID0gdHJ1ZTtcblx0ICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicgPyB3YXJuaW5nKGZhbHNlLCAnYE5hTmAgaXMgYW4gaW52YWxpZCB2YWx1ZSBmb3IgdGhlIGAl
c2AgY3NzIHN0eWxlIHByb3BlcnR5LiVzJywgbmFtZSwgY2hlY2tSZW5kZXJNZXNzYWdlKG93bmVy
KSkgOiB2b2lkIDA7XG5cdCAgfTtcblx0XG5cdCAgdmFyIGNoZWNrUmVuZGVyTWVzc2FnZSA9IGZ1
bmN0aW9uIChvd25lcikge1xuXHQgICAgaWYgKG93bmVyKSB7XG5cdCAgICAgIHZhciBuYW1lID0g
b3duZXIuZ2V0TmFtZSgpO1xuXHQgICAgICBpZiAobmFtZSkge1xuXHQgICAgICAgIHJldHVybiAn
IENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7XG5cdCAgICAgIH1c
blx0ICAgIH1cblx0ICAgIHJldHVybiAnJztcblx0ICB9O1xuXHRcblx0ICAvKipcblx0ICAgKiBA
cGFyYW0ge3N0cmluZ30gbmFtZVxuXHQgICAqIEBwYXJhbSB7Kn0gdmFsdWVcblx0ICAgKiBAcGFy
YW0ge1JlYWN0RE9NQ29tcG9uZW50fSBjb21wb25lbnRcblx0ICAgKi9cblx0ICB2YXIgd2FyblZh
bGlkU3R5bGUgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIGNvbXBvbmVudCkge1xuXHQgICAgdmFy
IG93bmVyO1xuXHQgICAgaWYgKGNvbXBvbmVudCkge1xuXHQgICAgICBvd25lciA9IGNvbXBvbmVu
dC5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuXHQgICAgfVxuXHQgICAgaWYgKG5hbWUuaW5kZXhP
ZignLScpID4gLTEpIHtcblx0ICAgICAgd2Fybkh5cGhlbmF0ZWRTdHlsZU5hbWUobmFtZSwgb3du
ZXIpO1xuXHQgICAgfSBlbHNlIGlmIChiYWRWZW5kb3JlZFN0eWxlTmFtZVBhdHRlcm4udGVzdChu
YW1lKSkge1xuXHQgICAgICB3YXJuQmFkVmVuZG9yZWRTdHlsZU5hbWUobmFtZSwgb3duZXIpO1xu
XHQgICAgfSBlbHNlIGlmIChiYWRTdHlsZVZhbHVlV2l0aFNlbWljb2xvblBhdHRlcm4udGVzdCh2
YWx1ZSkpIHtcblx0ICAgICAgd2FyblN0eWxlVmFsdWVXaXRoU2VtaWNvbG9uKG5hbWUsIHZhbHVl
LCBvd25lcik7XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJl
cicgJiYgaXNOYU4odmFsdWUpKSB7XG5cdCAgICAgIHdhcm5TdHlsZVZhbHVlSXNOYU4obmFtZSwg
dmFsdWUsIG93bmVyKTtcblx0ICAgIH1cblx0ICB9O1xuXHR9XG5cdFxuXHQvKipcblx0ICogT3Bl
cmF0aW9ucyBmb3IgZGVhbGluZyB3aXRoIENTUyBwcm9wZXJ0aWVzLlxuXHQgKi9cblx0dmFyIENT
U1Byb3BlcnR5T3BlcmF0aW9ucyA9IHtcblx0ICAvKipcblx0ICAgKiBTZXJpYWxpemVzIGEgbWFw
cGluZyBvZiBzdHlsZSBwcm9wZXJ0aWVzIGZvciB1c2UgYXMgaW5saW5lIHN0eWxlczpcblx0ICAg
KlxuXHQgICAqICAgPiBjcmVhdGVNYXJrdXBGb3JTdHlsZXMoe3dpZHRoOiAnMjAwcHgnLCBoZWln
aHQ6IDB9KVxuXHQgICAqICAgXCJ3aWR0aDoyMDBweDtoZWlnaHQ6MDtcIlxuXHQgICAqXG5cdCAg
ICogVW5kZWZpbmVkIHZhbHVlcyBhcmUgaWdub3JlZCBzbyB0aGF0IGRlY2xhcmF0aXZlIHByb2dy
YW1taW5nIGlzIGVhc2llci5cblx0ICAgKiBUaGUgcmVzdWx0IHNob3VsZCBiZSBIVE1MLWVzY2Fw
ZWQgYmVmb3JlIGluc2VydGlvbiBpbnRvIHRoZSBET00uXG5cdCAgICpcblx0ICAgKiBAcGFyYW0g
e29iamVjdH0gc3R5bGVzXG5cdCAgICogQHBhcmFtIHtSZWFjdERPTUNvbXBvbmVudH0gY29tcG9u
ZW50XG5cdCAgICogQHJldHVybiB7P3N0cmluZ31cblx0ICAgKi9cblx0ICBjcmVhdGVNYXJrdXBG
b3JTdHlsZXM6IGZ1bmN0aW9uIChzdHlsZXMsIGNvbXBvbmVudCkge1xuXHQgICAgdmFyIHNlcmlh
bGl6ZWQgPSAnJztcblx0ICAgIGZvciAodmFyIHN0eWxlTmFtZSBpbiBzdHlsZXMpIHtcblx0ICAg
ICAgaWYgKCFzdHlsZXMuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSkge1xuXHQgICAgICAgIGNv
bnRpbnVlO1xuXHQgICAgICB9XG5cdCAgICAgIHZhciBpc0N1c3RvbVByb3BlcnR5ID0gc3R5bGVO
YW1lLmluZGV4T2YoJy0tJykgPT09IDA7XG5cdCAgICAgIHZhciBzdHlsZVZhbHVlID0gc3R5bGVz
W3N0eWxlTmFtZV07XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIGlmICghaXNDdXN0
b21Qcm9wZXJ0eSkge1xuXHQgICAgICAgICAgd2FyblZhbGlkU3R5bGUoc3R5bGVOYW1lLCBzdHls
ZVZhbHVlLCBjb21wb25lbnQpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgICBpZiAo
c3R5bGVWYWx1ZSAhPSBudWxsKSB7XG5cdCAgICAgICAgc2VyaWFsaXplZCArPSBwcm9jZXNzU3R5
bGVOYW1lKHN0eWxlTmFtZSkgKyAnOic7XG5cdCAgICAgICAgc2VyaWFsaXplZCArPSBkYW5nZXJv
dXNTdHlsZVZhbHVlKHN0eWxlTmFtZSwgc3R5bGVWYWx1ZSwgY29tcG9uZW50LCBpc0N1c3RvbVBy
b3BlcnR5KSArICc7Jztcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgcmV0dXJuIHNlcmlhbGl6
ZWQgfHwgbnVsbDtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBTZXRzIHRoZSB2YWx1ZSBm
b3IgbXVsdGlwbGUgc3R5bGVzIG9uIGEgbm9kZS4gIElmIGEgdmFsdWUgaXMgc3BlY2lmaWVkIGFz
XG5cdCAgICogJycgKGVtcHR5IHN0cmluZyksIHRoZSBjb3JyZXNwb25kaW5nIHN0eWxlIHByb3Bl
cnR5IHdpbGwgYmUgdW5zZXQuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5v
ZGVcblx0ICAgKiBAcGFyYW0ge29iamVjdH0gc3R5bGVzXG5cdCAgICogQHBhcmFtIHtSZWFjdERP
TUNvbXBvbmVudH0gY29tcG9uZW50XG5cdCAgICovXG5cdCAgc2V0VmFsdWVGb3JTdHlsZXM6IGZ1
bmN0aW9uIChub2RlLCBzdHlsZXMsIGNvbXBvbmVudCkge1xuXHQgICAgaWYgKGZhbHNlKSB7XG5c
dCAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xu
XHQgICAgICAgIGluc3RhbmNlSUQ6IGNvbXBvbmVudC5fZGVidWdJRCxcblx0ICAgICAgICB0eXBl
OiAndXBkYXRlIHN0eWxlcycsXG5cdCAgICAgICAgcGF5bG9hZDogc3R5bGVzXG5cdCAgICAgIH0p
O1xuXHQgICAgfVxuXHRcblx0ICAgIHZhciBzdHlsZSA9IG5vZGUuc3R5bGU7XG5cdCAgICBmb3Ig
KHZhciBzdHlsZU5hbWUgaW4gc3R5bGVzKSB7XG5cdCAgICAgIGlmICghc3R5bGVzLmhhc093blBy
b3BlcnR5KHN0eWxlTmFtZSkpIHtcblx0ICAgICAgICBjb250aW51ZTtcblx0ICAgICAgfVxuXHQg
ICAgICB2YXIgaXNDdXN0b21Qcm9wZXJ0eSA9IHN0eWxlTmFtZS5pbmRleE9mKCctLScpID09PSAw
O1xuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICBpZiAoIWlzQ3VzdG9tUHJvcGVydHkp
IHtcblx0ICAgICAgICAgIHdhcm5WYWxpZFN0eWxlKHN0eWxlTmFtZSwgc3R5bGVzW3N0eWxlTmFt
ZV0sIGNvbXBvbmVudCk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICAgIHZhciBzdHls
ZVZhbHVlID0gZGFuZ2Vyb3VzU3R5bGVWYWx1ZShzdHlsZU5hbWUsIHN0eWxlc1tzdHlsZU5hbWVd
LCBjb21wb25lbnQsIGlzQ3VzdG9tUHJvcGVydHkpO1xuXHQgICAgICBpZiAoc3R5bGVOYW1lID09
PSAnZmxvYXQnIHx8IHN0eWxlTmFtZSA9PT0gJ2Nzc0Zsb2F0Jykge1xuXHQgICAgICAgIHN0eWxl
TmFtZSA9IHN0eWxlRmxvYXRBY2Nlc3Nvcjtcblx0ICAgICAgfVxuXHQgICAgICBpZiAoaXNDdXN0
b21Qcm9wZXJ0eSkge1xuXHQgICAgICAgIHN0eWxlLnNldFByb3BlcnR5KHN0eWxlTmFtZSwgc3R5
bGVWYWx1ZSk7XG5cdCAgICAgIH0gZWxzZSBpZiAoc3R5bGVWYWx1ZSkge1xuXHQgICAgICAgIHN0
eWxlW3N0eWxlTmFtZV0gPSBzdHlsZVZhbHVlO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAg
IHZhciBleHBhbnNpb24gPSBoYXNTaG9ydGhhbmRQcm9wZXJ0eUJ1ZyAmJiBDU1NQcm9wZXJ0eS5z
aG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lvbnNbc3R5bGVOYW1lXTtcblx0ICAgICAgICBpZiAoZXhw
YW5zaW9uKSB7XG5cdCAgICAgICAgICAvLyBTaG9ydGhhbmQgcHJvcGVydHkgdGhhdCBJRTggd29u
J3QgbGlrZSB1bnNldHRpbmcsIHNvIHVuc2V0IGVhY2hcblx0ICAgICAgICAgIC8vIGNvbXBvbmVu
dCB0byBwbGFjYXRlIGl0XG5cdCAgICAgICAgICBmb3IgKHZhciBpbmRpdmlkdWFsU3R5bGVOYW1l
IGluIGV4cGFuc2lvbikge1xuXHQgICAgICAgICAgICBzdHlsZVtpbmRpdmlkdWFsU3R5bGVOYW1l
XSA9ICcnO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICBz
dHlsZVtzdHlsZU5hbWVdID0gJyc7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9XG5c
dCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBDU1NQcm9wZXJ0eU9wZXJhdGlvbnM7
XG5cbi8qKiovIH0sXG4vKiAxMjggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywg
X193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBFdmVudFBs
dWdpbkh1YiA9IF9fd2VicGFja19yZXF1aXJlX18oMTkpO1xuXHR2YXIgRXZlbnRQcm9wYWdhdG9y
cyA9IF9fd2VicGFja19yZXF1aXJlX18oMjApO1xuXHR2YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xuXHR2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblx0dmFyIFJlYWN0VXBkYXRlcyA9IF9fd2VicGFja19y
ZXF1aXJlX18oOSk7XG5cdHZhciBTeW50aGV0aWNFdmVudCA9IF9fd2VicGFja19yZXF1aXJlX18o
MTApO1xuXHRcblx0dmFyIGlucHV0VmFsdWVUcmFja2luZyA9IF9fd2VicGFja19yZXF1aXJlX18o
NzQpO1xuXHR2YXIgZ2V0RXZlbnRUYXJnZXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ2KTtcblx0
dmFyIGlzRXZlbnRTdXBwb3J0ZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ3KTtcblx0dmFyIGlz
VGV4dElucHV0RWxlbWVudCA9IF9fd2VicGFja19yZXF1aXJlX18oNzYpO1xuXHRcblx0dmFyIGV2
ZW50VHlwZXMgPSB7XG5cdCAgY2hhbmdlOiB7XG5cdCAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1l
czoge1xuXHQgICAgICBidWJibGVkOiAnb25DaGFuZ2UnLFxuXHQgICAgICBjYXB0dXJlZDogJ29u
Q2hhbmdlQ2FwdHVyZSdcblx0ICAgIH0sXG5cdCAgICBkZXBlbmRlbmNpZXM6IFsndG9wQmx1cics
ICd0b3BDaGFuZ2UnLCAndG9wQ2xpY2snLCAndG9wRm9jdXMnLCAndG9wSW5wdXQnLCAndG9wS2V5
RG93bicsICd0b3BLZXlVcCcsICd0b3BTZWxlY3Rpb25DaGFuZ2UnXVxuXHQgIH1cblx0fTtcblx0
XG5cdGZ1bmN0aW9uIGNyZWF0ZUFuZEFjY3VtdWxhdGVDaGFuZ2VFdmVudChpbnN0LCBuYXRpdmVF
dmVudCwgdGFyZ2V0KSB7XG5cdCAgdmFyIGV2ZW50ID0gU3ludGhldGljRXZlbnQuZ2V0UG9vbGVk
KGV2ZW50VHlwZXMuY2hhbmdlLCBpbnN0LCBuYXRpdmVFdmVudCwgdGFyZ2V0KTtcblx0ICBldmVu
dC50eXBlID0gJ2NoYW5nZSc7XG5cdCAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlVHdvUGhh
c2VEaXNwYXRjaGVzKGV2ZW50KTtcblx0ICByZXR1cm4gZXZlbnQ7XG5cdH1cblx0LyoqXG5cdCAq
IEZvciBJRSBzaGltc1xuXHQgKi9cblx0dmFyIGFjdGl2ZUVsZW1lbnQgPSBudWxsO1xuXHR2YXIg
YWN0aXZlRWxlbWVudEluc3QgPSBudWxsO1xuXHRcblx0LyoqXG5cdCAqIFNFQ1RJT046IGhhbmRs
ZSBgY2hhbmdlYCBldmVudFxuXHQgKi9cblx0ZnVuY3Rpb24gc2hvdWxkVXNlQ2hhbmdlRXZlbnQo
ZWxlbSkge1xuXHQgIHZhciBub2RlTmFtZSA9IGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFt
ZS50b0xvd2VyQ2FzZSgpO1xuXHQgIHJldHVybiBub2RlTmFtZSA9PT0gJ3NlbGVjdCcgfHwgbm9k
ZU5hbWUgPT09ICdpbnB1dCcgJiYgZWxlbS50eXBlID09PSAnZmlsZSc7XG5cdH1cblx0XG5cdHZh
ciBkb2VzQ2hhbmdlRXZlbnRCdWJibGUgPSBmYWxzZTtcblx0aWYgKEV4ZWN1dGlvbkVudmlyb25t
ZW50LmNhblVzZURPTSkge1xuXHQgIC8vIFNlZSBgaGFuZGxlQ2hhbmdlYCBjb21tZW50IGJlbG93
XG5cdCAgZG9lc0NoYW5nZUV2ZW50QnViYmxlID0gaXNFdmVudFN1cHBvcnRlZCgnY2hhbmdlJykg
JiYgKCFkb2N1bWVudC5kb2N1bWVudE1vZGUgfHwgZG9jdW1lbnQuZG9jdW1lbnRNb2RlID4gOCk7
XG5cdH1cblx0XG5cdGZ1bmN0aW9uIG1hbnVhbERpc3BhdGNoQ2hhbmdlRXZlbnQobmF0aXZlRXZl
bnQpIHtcblx0ICB2YXIgZXZlbnQgPSBjcmVhdGVBbmRBY2N1bXVsYXRlQ2hhbmdlRXZlbnQoYWN0
aXZlRWxlbWVudEluc3QsIG5hdGl2ZUV2ZW50LCBnZXRFdmVudFRhcmdldChuYXRpdmVFdmVudCkp
O1xuXHRcblx0ICAvLyBJZiBjaGFuZ2UgYW5kIHByb3BlcnR5Y2hhbmdlIGJ1YmJsZWQsIHdlJ2Qg
anVzdCBiaW5kIHRvIGl0IGxpa2UgYWxsIHRoZVxuXHQgIC8vIG90aGVyIGV2ZW50cyBhbmQgaGF2
ZSBpdCBnbyB0aHJvdWdoIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci4gU2luY2UgaXRcblx0ICAv
LyBkb2Vzbid0LCB3ZSBtYW51YWxseSBsaXN0ZW4gZm9yIHRoZSBldmVudHMgYW5kIHNvIHdlIGhh
dmUgdG8gZW5xdWV1ZSBhbmRcblx0ICAvLyBwcm9jZXNzIHRoZSBhYnN0cmFjdCBldmVudCBtYW51
YWxseS5cblx0ICAvL1xuXHQgIC8vIEJhdGNoaW5nIGlzIG5lY2Vzc2FyeSBoZXJlIGluIG9yZGVy
IHRvIGVuc3VyZSB0aGF0IGFsbCBldmVudCBoYW5kbGVycyBydW5cblx0ICAvLyBiZWZvcmUgdGhl
IG5leHQgcmVyZW5kZXIgKGluY2x1ZGluZyBldmVudCBoYW5kbGVycyBhdHRhY2hlZCB0byBhbmNl
c3RvclxuXHQgIC8vIGVsZW1lbnRzIGluc3RlYWQgb2YgZGlyZWN0bHkgb24gdGhlIGlucHV0KS4g
V2l0aG91dCB0aGlzLCBjb250cm9sbGVkXG5cdCAgLy8gY29tcG9uZW50cyBkb24ndCB3b3JrIHBy
b3Blcmx5IGluIGNvbmp1bmN0aW9uIHdpdGggZXZlbnQgYnViYmxpbmcgYmVjYXVzZVxuXHQgIC8v
IHRoZSBjb21wb25lbnQgaXMgcmVyZW5kZXJlZCBhbmQgdGhlIHZhbHVlIHJldmVydGVkIGJlZm9y
ZSBhbGwgdGhlIGV2ZW50XG5cdCAgLy8gaGFuZGxlcnMgY2FuIHJ1bi4gU2VlIGh0dHBzOi8vZ2l0
aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzA4LlxuXHQgIFJlYWN0VXBkYXRlcy5iYXRj
aGVkVXBkYXRlcyhydW5FdmVudEluQmF0Y2gsIGV2ZW50KTtcblx0fVxuXHRcblx0ZnVuY3Rpb24g
cnVuRXZlbnRJbkJhdGNoKGV2ZW50KSB7XG5cdCAgRXZlbnRQbHVnaW5IdWIuZW5xdWV1ZUV2ZW50
cyhldmVudCk7XG5cdCAgRXZlbnRQbHVnaW5IdWIucHJvY2Vzc0V2ZW50UXVldWUoZmFsc2UpO1xu
XHR9XG5cdFxuXHRmdW5jdGlvbiBzdGFydFdhdGNoaW5nRm9yQ2hhbmdlRXZlbnRJRTgodGFyZ2V0
LCB0YXJnZXRJbnN0KSB7XG5cdCAgYWN0aXZlRWxlbWVudCA9IHRhcmdldDtcblx0ICBhY3RpdmVF
bGVtZW50SW5zdCA9IHRhcmdldEluc3Q7XG5cdCAgYWN0aXZlRWxlbWVudC5hdHRhY2hFdmVudCgn
b25jaGFuZ2UnLCBtYW51YWxEaXNwYXRjaENoYW5nZUV2ZW50KTtcblx0fVxuXHRcblx0ZnVuY3Rp
b24gc3RvcFdhdGNoaW5nRm9yQ2hhbmdlRXZlbnRJRTgoKSB7XG5cdCAgaWYgKCFhY3RpdmVFbGVt
ZW50KSB7XG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHQgIGFjdGl2ZUVsZW1lbnQuZGV0YWNoRXZl
bnQoJ29uY2hhbmdlJywgbWFudWFsRGlzcGF0Y2hDaGFuZ2VFdmVudCk7XG5cdCAgYWN0aXZlRWxl
bWVudCA9IG51bGw7XG5cdCAgYWN0aXZlRWxlbWVudEluc3QgPSBudWxsO1xuXHR9XG5cdFxuXHRm
dW5jdGlvbiBnZXRJbnN0SWZWYWx1ZUNoYW5nZWQodGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQpIHtc
blx0ICB2YXIgdXBkYXRlZCA9IGlucHV0VmFsdWVUcmFja2luZy51cGRhdGVWYWx1ZUlmQ2hhbmdl
ZCh0YXJnZXRJbnN0KTtcblx0ICB2YXIgc2ltdWxhdGVkID0gbmF0aXZlRXZlbnQuc2ltdWxhdGVk
ID09PSB0cnVlICYmIENoYW5nZUV2ZW50UGx1Z2luLl9hbGxvd1NpbXVsYXRlZFBhc3NUaHJvdWdo
O1xuXHRcblx0ICBpZiAodXBkYXRlZCB8fCBzaW11bGF0ZWQpIHtcblx0ICAgIHJldHVybiB0YXJn
ZXRJbnN0O1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gZ2V0VGFyZ2V0SW5zdEZvckNoYW5n
ZUV2ZW50KHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCkge1xuXHQgIGlmICh0b3BMZXZlbFR5cGUg
PT09ICd0b3BDaGFuZ2UnKSB7XG5cdCAgICByZXR1cm4gdGFyZ2V0SW5zdDtcblx0ICB9XG5cdH1c
blx0XG5cdGZ1bmN0aW9uIGhhbmRsZUV2ZW50c0ZvckNoYW5nZUV2ZW50SUU4KHRvcExldmVsVHlw
ZSwgdGFyZ2V0LCB0YXJnZXRJbnN0KSB7XG5cdCAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcEZv
Y3VzJykge1xuXHQgICAgLy8gc3RvcFdhdGNoaW5nKCkgc2hvdWxkIGJlIGEgbm9vcCBoZXJlIGJ1
dCB3ZSBjYWxsIGl0IGp1c3QgaW4gY2FzZSB3ZVxuXHQgICAgLy8gbWlzc2VkIGEgYmx1ciBldmVu
dCBzb21laG93LlxuXHQgICAgc3RvcFdhdGNoaW5nRm9yQ2hhbmdlRXZlbnRJRTgoKTtcblx0ICAg
IHN0YXJ0V2F0Y2hpbmdGb3JDaGFuZ2VFdmVudElFOCh0YXJnZXQsIHRhcmdldEluc3QpO1xuXHQg
IH0gZWxzZSBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wQmx1cicpIHtcblx0ICAgIHN0b3BXYXRj
aGluZ0ZvckNoYW5nZUV2ZW50SUU4KCk7XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICogU0VD
VElPTjogaGFuZGxlIGBpbnB1dGAgZXZlbnRcblx0ICovXG5cdHZhciBpc0lucHV0RXZlbnRTdXBw
b3J0ZWQgPSBmYWxzZTtcblx0aWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkge1xu
XHQgIC8vIElFOSBjbGFpbXMgdG8gc3VwcG9ydCB0aGUgaW5wdXQgZXZlbnQgYnV0IGZhaWxzIHRv
IHRyaWdnZXIgaXQgd2hlblxuXHQgIC8vIGRlbGV0aW5nIHRleHQsIHNvIHdlIGlnbm9yZSBpdHMg
aW5wdXQgZXZlbnRzLlxuXHRcblx0ICBpc0lucHV0RXZlbnRTdXBwb3J0ZWQgPSBpc0V2ZW50U3Vw
cG9ydGVkKCdpbnB1dCcpICYmICghKCdkb2N1bWVudE1vZGUnIGluIGRvY3VtZW50KSB8fCBkb2N1
bWVudC5kb2N1bWVudE1vZGUgPiA5KTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIChGb3IgSUUgPD05
KSBTdGFydHMgdHJhY2tpbmcgcHJvcGVydHljaGFuZ2UgZXZlbnRzIG9uIHRoZSBwYXNzZWQtaW4g
ZWxlbWVudFxuXHQgKiBhbmQgb3ZlcnJpZGUgdGhlIHZhbHVlIHByb3BlcnR5IHNvIHRoYXQgd2Ug
Y2FuIGRpc3Rpbmd1aXNoIHVzZXIgZXZlbnRzIGZyb21cblx0ICogdmFsdWUgY2hhbmdlcyBpbiBK
Uy5cblx0ICovXG5cdGZ1bmN0aW9uIHN0YXJ0V2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSh0YXJnZXQs
IHRhcmdldEluc3QpIHtcblx0ICBhY3RpdmVFbGVtZW50ID0gdGFyZ2V0O1xuXHQgIGFjdGl2ZUVs
ZW1lbnRJbnN0ID0gdGFyZ2V0SW5zdDtcblx0ICBhY3RpdmVFbGVtZW50LmF0dGFjaEV2ZW50KCdv
bnByb3BlcnR5Y2hhbmdlJywgaGFuZGxlUHJvcGVydHlDaGFuZ2UpO1xuXHR9XG5cdFxuXHQvKipc
blx0ICogKEZvciBJRSA8PTkpIFJlbW92ZXMgdGhlIGV2ZW50IGxpc3RlbmVycyBmcm9tIHRoZSBj
dXJyZW50bHktdHJhY2tlZCBlbGVtZW50LFxuXHQgKiBpZiBhbnkgZXhpc3RzLlxuXHQgKi9cblx0
ZnVuY3Rpb24gc3RvcFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UoKSB7XG5cdCAgaWYgKCFhY3RpdmVF
bGVtZW50KSB7XG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHQgIGFjdGl2ZUVsZW1lbnQuZGV0YWNo
RXZlbnQoJ29ucHJvcGVydHljaGFuZ2UnLCBoYW5kbGVQcm9wZXJ0eUNoYW5nZSk7XG5cdFxuXHQg
IGFjdGl2ZUVsZW1lbnQgPSBudWxsO1xuXHQgIGFjdGl2ZUVsZW1lbnRJbnN0ID0gbnVsbDtcblx0
fVxuXHRcblx0LyoqXG5cdCAqIChGb3IgSUUgPD05KSBIYW5kbGVzIGEgcHJvcGVydHljaGFuZ2Ug
ZXZlbnQsIHNlbmRpbmcgYSBgY2hhbmdlYCBldmVudCBpZlxuXHQgKiB0aGUgdmFsdWUgb2YgdGhl
IGFjdGl2ZSBlbGVtZW50IGhhcyBjaGFuZ2VkLlxuXHQgKi9cblx0ZnVuY3Rpb24gaGFuZGxlUHJv
cGVydHlDaGFuZ2UobmF0aXZlRXZlbnQpIHtcblx0ICBpZiAobmF0aXZlRXZlbnQucHJvcGVydHlO
YW1lICE9PSAndmFsdWUnKSB7XG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHQgIGlmIChnZXRJbnN0
SWZWYWx1ZUNoYW5nZWQoYWN0aXZlRWxlbWVudEluc3QsIG5hdGl2ZUV2ZW50KSkge1xuXHQgICAg
bWFudWFsRGlzcGF0Y2hDaGFuZ2VFdmVudChuYXRpdmVFdmVudCk7XG5cdCAgfVxuXHR9XG5cdFxu
XHRmdW5jdGlvbiBoYW5kbGVFdmVudHNGb3JJbnB1dEV2ZW50UG9seWZpbGwodG9wTGV2ZWxUeXBl
LCB0YXJnZXQsIHRhcmdldEluc3QpIHtcblx0ICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wRm9j
dXMnKSB7XG5cdCAgICAvLyBJbiBJRTgsIHdlIGNhbiBjYXB0dXJlIGFsbW9zdCBhbGwgLnZhbHVl
IGNoYW5nZXMgYnkgYWRkaW5nIGFcblx0ICAgIC8vIHByb3BlcnR5Y2hhbmdlIGhhbmRsZXIgYW5k
IGxvb2tpbmcgZm9yIGV2ZW50cyB3aXRoIHByb3BlcnR5TmFtZVxuXHQgICAgLy8gZXF1YWwgdG8g
J3ZhbHVlJ1xuXHQgICAgLy8gSW4gSUU5LCBwcm9wZXJ0eWNoYW5nZSBmaXJlcyBmb3IgbW9zdCBp
bnB1dCBldmVudHMgYnV0IGlzIGJ1Z2d5IGFuZFxuXHQgICAgLy8gZG9lc24ndCBmaXJlIHdoZW4g
dGV4dCBpcyBkZWxldGVkLCBidXQgY29udmVuaWVudGx5LCBzZWxlY3Rpb25jaGFuZ2Vcblx0ICAg
IC8vIGFwcGVhcnMgdG8gZmlyZSBpbiBhbGwgb2YgdGhlIHJlbWFpbmluZyBjYXNlcyBzbyB3ZSBj
YXRjaCB0aG9zZSBhbmRcblx0ICAgIC8vIGZvcndhcmQgdGhlIGV2ZW50IGlmIHRoZSB2YWx1ZSBo
YXMgY2hhbmdlZFxuXHQgICAgLy8gSW4gZWl0aGVyIGNhc2UsIHdlIGRvbid0IHdhbnQgdG8gY2Fs
bCB0aGUgZXZlbnQgaGFuZGxlciBpZiB0aGUgdmFsdWVcblx0ICAgIC8vIGlzIGNoYW5nZWQgZnJv
bSBKUyBzbyB3ZSByZWRlZmluZSBhIHNldHRlciBmb3IgYC52YWx1ZWAgdGhhdCB1cGRhdGVzXG5c
dCAgICAvLyBvdXIgYWN0aXZlRWxlbWVudFZhbHVlIHZhcmlhYmxlLCBhbGxvd2luZyB1cyB0byBp
Z25vcmUgdGhvc2UgY2hhbmdlc1xuXHQgICAgLy9cblx0ICAgIC8vIHN0b3BXYXRjaGluZygpIHNo
b3VsZCBiZSBhIG5vb3AgaGVyZSBidXQgd2UgY2FsbCBpdCBqdXN0IGluIGNhc2Ugd2Vcblx0ICAg
IC8vIG1pc3NlZCBhIGJsdXIgZXZlbnQgc29tZWhvdy5cblx0ICAgIHN0b3BXYXRjaGluZ0ZvclZh
bHVlQ2hhbmdlKCk7XG5cdCAgICBzdGFydFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UodGFyZ2V0LCB0
YXJnZXRJbnN0KTtcblx0ICB9IGVsc2UgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcEJsdXInKSB7
XG5cdCAgICBzdG9wV2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSgpO1xuXHQgIH1cblx0fVxuXHRcblx0
Ly8gRm9yIElFOCBhbmQgSUU5LlxuXHRmdW5jdGlvbiBnZXRUYXJnZXRJbnN0Rm9ySW5wdXRFdmVu
dFBvbHlmaWxsKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQpIHtcblx0ICBp
ZiAodG9wTGV2ZWxUeXBlID09PSAndG9wU2VsZWN0aW9uQ2hhbmdlJyB8fCB0b3BMZXZlbFR5cGUg
PT09ICd0b3BLZXlVcCcgfHwgdG9wTGV2ZWxUeXBlID09PSAndG9wS2V5RG93bicpIHtcblx0ICAg
IC8vIE9uIHRoZSBzZWxlY3Rpb25jaGFuZ2UgZXZlbnQsIHRoZSB0YXJnZXQgaXMganVzdCBkb2N1
bWVudCB3aGljaCBpc24ndFxuXHQgICAgLy8gaGVscGZ1bCBmb3IgdXMgc28ganVzdCBjaGVjayBh
Y3RpdmVFbGVtZW50IGluc3RlYWQuXG5cdCAgICAvL1xuXHQgICAgLy8gOTklIG9mIHRoZSB0aW1l
LCBrZXlkb3duIGFuZCBrZXl1cCBhcmVuJ3QgbmVjZXNzYXJ5LiBJRTggZmFpbHMgdG8gZmlyZVxu
XHQgICAgLy8gcHJvcGVydHljaGFuZ2Ugb24gdGhlIGZpcnN0IGlucHV0IGV2ZW50IGFmdGVyIHNl
dHRpbmcgYHZhbHVlYCBmcm9tIGFcblx0ICAgIC8vIHNjcmlwdCBhbmQgZmlyZXMgb25seSBrZXlk
b3duLCBrZXlwcmVzcywga2V5dXAuIENhdGNoaW5nIGtleXVwIHVzdWFsbHlcblx0ICAgIC8vIGdl
dHMgaXQgYW5kIGNhdGNoaW5nIGtleWRvd24gbGV0cyB1cyBmaXJlIGFuIGV2ZW50IGZvciB0aGUg
Zmlyc3Rcblx0ICAgIC8vIGtleXN0cm9rZSBpZiB1c2VyIGRvZXMgYSBrZXkgcmVwZWF0IChpdCds
bCBiZSBhIGxpdHRsZSBkZWxheWVkOiByaWdodFxuXHQgICAgLy8gYmVmb3JlIHRoZSBzZWNvbmQg
a2V5c3Ryb2tlKS4gT3RoZXIgaW5wdXQgbWV0aG9kcyAoZS5nLiwgcGFzdGUpIHNlZW0gdG9cblx0
ICAgIC8vIGZpcmUgc2VsZWN0aW9uY2hhbmdlIG5vcm1hbGx5LlxuXHQgICAgcmV0dXJuIGdldElu
c3RJZlZhbHVlQ2hhbmdlZChhY3RpdmVFbGVtZW50SW5zdCwgbmF0aXZlRXZlbnQpO1xuXHQgIH1c
blx0fVxuXHRcblx0LyoqXG5cdCAqIFNFQ1RJT046IGhhbmRsZSBgY2xpY2tgIGV2ZW50XG5cdCAq
L1xuXHRmdW5jdGlvbiBzaG91bGRVc2VDbGlja0V2ZW50KGVsZW0pIHtcblx0ICAvLyBVc2UgdGhl
IGBjbGlja2AgZXZlbnQgdG8gZGV0ZWN0IGNoYW5nZXMgdG8gY2hlY2tib3ggYW5kIHJhZGlvIGlu
cHV0cy5cblx0ICAvLyBUaGlzIGFwcHJvYWNoIHdvcmtzIGFjcm9zcyBhbGwgYnJvd3NlcnMsIHdo
ZXJlYXMgYGNoYW5nZWAgZG9lcyBub3QgZmlyZVxuXHQgIC8vIHVudGlsIGBibHVyYCBpbiBJRTgu
XG5cdCAgdmFyIG5vZGVOYW1lID0gZWxlbS5ub2RlTmFtZTtcblx0ICByZXR1cm4gbm9kZU5hbWUg
JiYgbm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2lucHV0JyAmJiAoZWxlbS50eXBlID09PSAn
Y2hlY2tib3gnIHx8IGVsZW0udHlwZSA9PT0gJ3JhZGlvJyk7XG5cdH1cblx0XG5cdGZ1bmN0aW9u
IGdldFRhcmdldEluc3RGb3JDbGlja0V2ZW50KHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0
aXZlRXZlbnQpIHtcblx0ICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wQ2xpY2snKSB7XG5cdCAg
ICByZXR1cm4gZ2V0SW5zdElmVmFsdWVDaGFuZ2VkKHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50KTtc
blx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGdldFRhcmdldEluc3RGb3JJbnB1dE9yQ2hhbmdl
RXZlbnQodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCkge1xuXHQgIGlmICh0
b3BMZXZlbFR5cGUgPT09ICd0b3BJbnB1dCcgfHwgdG9wTGV2ZWxUeXBlID09PSAndG9wQ2hhbmdl
Jykge1xuXHQgICAgcmV0dXJuIGdldEluc3RJZlZhbHVlQ2hhbmdlZCh0YXJnZXRJbnN0LCBuYXRp
dmVFdmVudCk7XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBoYW5kbGVDb250cm9sbGVkSW5w
dXRCbHVyKGluc3QsIG5vZGUpIHtcblx0ICAvLyBUT0RPOiBJbiBJRSwgaW5zdCBpcyBvY2Nhc2lv
bmFsbHkgbnVsbC4gV2h5P1xuXHQgIGlmIChpbnN0ID09IG51bGwpIHtcblx0ICAgIHJldHVybjtc
blx0ICB9XG5cdFxuXHQgIC8vIEZpYmVyIGFuZCBSZWFjdERPTSBrZWVwIHdyYXBwZXIgc3RhdGUg
aW4gc2VwYXJhdGUgcGxhY2VzXG5cdCAgdmFyIHN0YXRlID0gaW5zdC5fd3JhcHBlclN0YXRlIHx8
IG5vZGUuX3dyYXBwZXJTdGF0ZTtcblx0XG5cdCAgaWYgKCFzdGF0ZSB8fCAhc3RhdGUuY29udHJv
bGxlZCB8fCBub2RlLnR5cGUgIT09ICdudW1iZXInKSB7XG5cdCAgICByZXR1cm47XG5cdCAgfVxu
XHRcblx0ICAvLyBJZiBjb250cm9sbGVkLCBhc3NpZ24gdGhlIHZhbHVlIGF0dHJpYnV0ZSB0byB0
aGUgY3VycmVudCB2YWx1ZSBvbiBibHVyXG5cdCAgdmFyIHZhbHVlID0gJycgKyBub2RlLnZhbHVl
O1xuXHQgIGlmIChub2RlLmdldEF0dHJpYnV0ZSgndmFsdWUnKSAhPT0gdmFsdWUpIHtcblx0ICAg
IG5vZGUuc2V0QXR0cmlidXRlKCd2YWx1ZScsIHZhbHVlKTtcblx0ICB9XG5cdH1cblx0XG5cdC8q
KlxuXHQgKiBUaGlzIHBsdWdpbiBjcmVhdGVzIGFuIGBvbkNoYW5nZWAgZXZlbnQgdGhhdCBub3Jt
YWxpemVzIGNoYW5nZSBldmVudHNcblx0ICogYWNyb3NzIGZvcm0gZWxlbWVudHMuIFRoaXMgZXZl
bnQgZmlyZXMgYXQgYSB0aW1lIHdoZW4gaXQncyBwb3NzaWJsZSB0b1xuXHQgKiBjaGFuZ2UgdGhl
IGVsZW1lbnQncyB2YWx1ZSB3aXRob3V0IHNlZWluZyBhIGZsaWNrZXIuXG5cdCAqXG5cdCAqIFN1
cHBvcnRlZCBlbGVtZW50cyBhcmU6XG5cdCAqIC0gaW5wdXQgKHNlZSBgaXNUZXh0SW5wdXRFbGVt
ZW50YClcblx0ICogLSB0ZXh0YXJlYVxuXHQgKiAtIHNlbGVjdFxuXHQgKi9cblx0dmFyIENoYW5n
ZUV2ZW50UGx1Z2luID0ge1xuXHQgIGV2ZW50VHlwZXM6IGV2ZW50VHlwZXMsXG5cdFxuXHQgIF9h
bGxvd1NpbXVsYXRlZFBhc3NUaHJvdWdoOiB0cnVlLFxuXHQgIF9pc0lucHV0RXZlbnRTdXBwb3J0
ZWQ6IGlzSW5wdXRFdmVudFN1cHBvcnRlZCxcblx0XG5cdCAgZXh0cmFjdEV2ZW50czogZnVuY3Rp
b24gKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFy
Z2V0KSB7XG5cdCAgICB2YXIgdGFyZ2V0Tm9kZSA9IHRhcmdldEluc3QgPyBSZWFjdERPTUNvbXBv
bmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0YXJnZXRJbnN0KSA6IHdpbmRvdztcblx0XG5c
dCAgICB2YXIgZ2V0VGFyZ2V0SW5zdEZ1bmMsIGhhbmRsZUV2ZW50RnVuYztcblx0ICAgIGlmIChz
aG91bGRVc2VDaGFuZ2VFdmVudCh0YXJnZXROb2RlKSkge1xuXHQgICAgICBpZiAoZG9lc0NoYW5n
ZUV2ZW50QnViYmxlKSB7XG5cdCAgICAgICAgZ2V0VGFyZ2V0SW5zdEZ1bmMgPSBnZXRUYXJnZXRJ
bnN0Rm9yQ2hhbmdlRXZlbnQ7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgaGFuZGxlRXZl
bnRGdW5jID0gaGFuZGxlRXZlbnRzRm9yQ2hhbmdlRXZlbnRJRTg7XG5cdCAgICAgIH1cblx0ICAg
IH0gZWxzZSBpZiAoaXNUZXh0SW5wdXRFbGVtZW50KHRhcmdldE5vZGUpKSB7XG5cdCAgICAgIGlm
IChpc0lucHV0RXZlbnRTdXBwb3J0ZWQpIHtcblx0ICAgICAgICBnZXRUYXJnZXRJbnN0RnVuYyA9
IGdldFRhcmdldEluc3RGb3JJbnB1dE9yQ2hhbmdlRXZlbnQ7XG5cdCAgICAgIH0gZWxzZSB7XG5c
dCAgICAgICAgZ2V0VGFyZ2V0SW5zdEZ1bmMgPSBnZXRUYXJnZXRJbnN0Rm9ySW5wdXRFdmVudFBv
bHlmaWxsO1xuXHQgICAgICAgIGhhbmRsZUV2ZW50RnVuYyA9IGhhbmRsZUV2ZW50c0ZvcklucHV0
RXZlbnRQb2x5ZmlsbDtcblx0ICAgICAgfVxuXHQgICAgfSBlbHNlIGlmIChzaG91bGRVc2VDbGlj
a0V2ZW50KHRhcmdldE5vZGUpKSB7XG5cdCAgICAgIGdldFRhcmdldEluc3RGdW5jID0gZ2V0VGFy
Z2V0SW5zdEZvckNsaWNrRXZlbnQ7XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKGdldFRhcmdldElu
c3RGdW5jKSB7XG5cdCAgICAgIHZhciBpbnN0ID0gZ2V0VGFyZ2V0SW5zdEZ1bmModG9wTGV2ZWxU
eXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCk7XG5cdCAgICAgIGlmIChpbnN0KSB7XG5cdCAg
ICAgICAgdmFyIGV2ZW50ID0gY3JlYXRlQW5kQWNjdW11bGF0ZUNoYW5nZUV2ZW50KGluc3QsIG5h
dGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cdCAgICAgICAgcmV0dXJuIGV2ZW50O1xu
XHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKGhhbmRsZUV2ZW50RnVuYykge1xuXHQg
ICAgICBoYW5kbGVFdmVudEZ1bmModG9wTGV2ZWxUeXBlLCB0YXJnZXROb2RlLCB0YXJnZXRJbnN0
KTtcblx0ICAgIH1cblx0XG5cdCAgICAvLyBXaGVuIGJsdXJyaW5nLCBzZXQgdGhlIHZhbHVlIGF0
dHJpYnV0ZSBmb3IgbnVtYmVyIGlucHV0c1xuXHQgICAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3Rv
cEJsdXInKSB7XG5cdCAgICAgIGhhbmRsZUNvbnRyb2xsZWRJbnB1dEJsdXIodGFyZ2V0SW5zdCwg
dGFyZ2V0Tm9kZSk7XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMg
PSBDaGFuZ2VFdmVudFBsdWdpbjtcblxuLyoqKi8gfSxcbi8qIDEyOSAqL1xuLyoqKi8gZnVuY3Rp
b24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3Qn
O1xuXHRcblx0dmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKTtcblx0
XG5cdHZhciBET01MYXp5VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18oMTQpO1xuXHR2YXIgRXhl
Y3V0aW9uRW52aXJvbm1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYpO1xuXHRcblx0dmFyIGNy
ZWF0ZU5vZGVzRnJvbU1hcmt1cCA9IF9fd2VicGFja19yZXF1aXJlX18oMTAyKTtcblx0dmFyIGVt
cHR5RnVuY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcpO1xuXHR2YXIgaW52YXJpYW50ID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0XG5cdHZhciBEYW5nZXIgPSB7XG5cdCAgLyoqXG5c
dCAgICogUmVwbGFjZXMgYSBub2RlIHdpdGggYSBzdHJpbmcgb2YgbWFya3VwIGF0IGl0cyBjdXJy
ZW50IHBvc2l0aW9uIHdpdGhpbiBpdHNcblx0ICAgKiBwYXJlbnQuIFRoZSBtYXJrdXAgbXVzdCBy
ZW5kZXIgaW50byBhIHNpbmdsZSByb290IG5vZGUuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge0RP
TUVsZW1lbnR9IG9sZENoaWxkIENoaWxkIG5vZGUgdG8gcmVwbGFjZS5cblx0ICAgKiBAcGFyYW0g
e3N0cmluZ30gbWFya3VwIE1hcmt1cCB0byByZW5kZXIgaW4gcGxhY2Ugb2YgdGhlIGNoaWxkIG5v
ZGUuXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAgZGFuZ2Vyb3VzbHlSZXBsYWNlTm9k
ZVdpdGhNYXJrdXA6IGZ1bmN0aW9uIChvbGRDaGlsZCwgbWFya3VwKSB7XG5cdCAgICAhRXhlY3V0
aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnZGFu
Z2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAoLi4uKTogQ2Fubm90IHJlbmRlciBtYXJrdXAg
aW4gYSB3b3JrZXIgdGhyZWFkLiBNYWtlIHN1cmUgYHdpbmRvd2AgYW5kIGBkb2N1bWVudGAgYXJl
IGF2YWlsYWJsZSBnbG9iYWxseSBiZWZvcmUgcmVxdWlyaW5nIFJlYWN0IHdoZW4gdW5pdCB0ZXN0
aW5nIG9yIHVzZSBSZWFjdERPTVNlcnZlci5yZW5kZXJUb1N0cmluZygpIGZvciBzZXJ2ZXIgcmVu
ZGVyaW5nLicpIDogX3Byb2RJbnZhcmlhbnQoJzU2JykgOiB2b2lkIDA7XG5cdCAgICAhbWFya3Vw
ID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhN
YXJrdXAoLi4uKTogTWlzc2luZyBtYXJrdXAuJykgOiBfcHJvZEludmFyaWFudCgnNTcnKSA6IHZv
aWQgMDtcblx0ICAgICEob2xkQ2hpbGQubm9kZU5hbWUgIT09ICdIVE1MJykgPyAgZmFsc2UgPyBp
bnZhcmlhbnQoZmFsc2UsICdkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cCguLi4pOiBD
YW5ub3QgcmVwbGFjZSBtYXJrdXAgb2YgdGhlIDxodG1sPiBub2RlLiBUaGlzIGlzIGJlY2F1c2Ug
YnJvd3NlciBxdWlya3MgbWFrZSB0aGlzIHVucmVsaWFibGUgYW5kL29yIHNsb3cuIElmIHlvdSB3
YW50IHRvIHJlbmRlciB0byB0aGUgcm9vdCB5b3UgbXVzdCB1c2Ugc2VydmVyIHJlbmRlcmluZy4g
U2VlIFJlYWN0RE9NU2VydmVyLnJlbmRlclRvU3RyaW5nKCkuJykgOiBfcHJvZEludmFyaWFudCgn
NTgnKSA6IHZvaWQgMDtcblx0XG5cdCAgICBpZiAodHlwZW9mIG1hcmt1cCA9PT0gJ3N0cmluZycp
IHtcblx0ICAgICAgdmFyIG5ld0NoaWxkID0gY3JlYXRlTm9kZXNGcm9tTWFya3VwKG1hcmt1cCwg
ZW1wdHlGdW5jdGlvbilbMF07XG5cdCAgICAgIG9sZENoaWxkLnBhcmVudE5vZGUucmVwbGFjZUNo
aWxkKG5ld0NoaWxkLCBvbGRDaGlsZCk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBET01MYXp5
VHJlZS5yZXBsYWNlQ2hpbGRXaXRoVHJlZShvbGRDaGlsZCwgbWFya3VwKTtcblx0ICAgIH1cblx0
ICB9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IERhbmdlcjtcblxuLyoqKi8gfSxcbi8q
IDEzMCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3Qn
O1xuXHRcblx0LyoqXG5cdCAqIE1vZHVsZSB0aGF0IGlzIGluamVjdGFibGUgaW50byBgRXZlbnRQ
bHVnaW5IdWJgLCB0aGF0IHNwZWNpZmllcyBhXG5cdCAqIGRldGVybWluaXN0aWMgb3JkZXJpbmcg
b2YgYEV2ZW50UGx1Z2luYHMuIEEgY29udmVuaWVudCB3YXkgdG8gcmVhc29uIGFib3V0XG5cdCAq
IHBsdWdpbnMsIHdpdGhvdXQgaGF2aW5nIHRvIHBhY2thZ2UgZXZlcnkgb25lIG9mIHRoZW0uIFRo
aXMgaXMgYmV0dGVyIHRoYW5cblx0ICogaGF2aW5nIHBsdWdpbnMgYmUgb3JkZXJlZCBpbiB0aGUg
c2FtZSBvcmRlciB0aGF0IHRoZXkgYXJlIGluamVjdGVkIGJlY2F1c2Vcblx0ICogdGhhdCBvcmRl
cmluZyB3b3VsZCBiZSBpbmZsdWVuY2VkIGJ5IHRoZSBwYWNrYWdpbmcgb3JkZXIuXG5cdCAqIGBS
ZXNwb25kZXJFdmVudFBsdWdpbmAgbXVzdCBvY2N1ciBiZWZvcmUgYFNpbXBsZUV2ZW50UGx1Z2lu
YCBzbyB0aGF0XG5cdCAqIHByZXZlbnRpbmcgZGVmYXVsdCBvbiBldmVudHMgaXMgY29udmVuaWVu
dCBpbiBgU2ltcGxlRXZlbnRQbHVnaW5gIGhhbmRsZXJzLlxuXHQgKi9cblx0XG5cdHZhciBEZWZh
dWx0RXZlbnRQbHVnaW5PcmRlciA9IFsnUmVzcG9uZGVyRXZlbnRQbHVnaW4nLCAnU2ltcGxlRXZl
bnRQbHVnaW4nLCAnVGFwRXZlbnRQbHVnaW4nLCAnRW50ZXJMZWF2ZUV2ZW50UGx1Z2luJywgJ0No
YW5nZUV2ZW50UGx1Z2luJywgJ1NlbGVjdEV2ZW50UGx1Z2luJywgJ0JlZm9yZUlucHV0RXZlbnRQ
bHVnaW4nXTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gRGVmYXVsdEV2ZW50UGx1Z2luT3JkZXI7
XG5cbi8qKiovIH0sXG4vKiAxMzEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywg
X193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBFdmVudFBy
b3BhZ2F0b3JzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMCk7XG5cdHZhciBSZWFjdERPTUNvbXBv
bmVudFRyZWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuXHR2YXIgU3ludGhldGljTW91c2VF
dmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMjYpO1xuXHRcblx0dmFyIGV2ZW50VHlwZXMgPSB7
XG5cdCAgbW91c2VFbnRlcjoge1xuXHQgICAgcmVnaXN0cmF0aW9uTmFtZTogJ29uTW91c2VFbnRl
cicsXG5cdCAgICBkZXBlbmRlbmNpZXM6IFsndG9wTW91c2VPdXQnLCAndG9wTW91c2VPdmVyJ11c
blx0ICB9LFxuXHQgIG1vdXNlTGVhdmU6IHtcblx0ICAgIHJlZ2lzdHJhdGlvbk5hbWU6ICdvbk1v
dXNlTGVhdmUnLFxuXHQgICAgZGVwZW5kZW5jaWVzOiBbJ3RvcE1vdXNlT3V0JywgJ3RvcE1vdXNl
T3ZlciddXG5cdCAgfVxuXHR9O1xuXHRcblx0dmFyIEVudGVyTGVhdmVFdmVudFBsdWdpbiA9IHtc
blx0ICBldmVudFR5cGVzOiBldmVudFR5cGVzLFxuXHRcblx0ICAvKipcblx0ICAgKiBGb3IgYWxt
b3N0IGV2ZXJ5IGludGVyYWN0aW9uIHdlIGNhcmUgYWJvdXQsIHRoZXJlIHdpbGwgYmUgYm90aCBh
IHRvcC1sZXZlbFxuXHQgICAqIGBtb3VzZW92ZXJgIGFuZCBgbW91c2VvdXRgIGV2ZW50IHRoYXQg
b2NjdXJzLiBPbmx5IHVzZSBgbW91c2VvdXRgIHNvIHRoYXRcblx0ICAgKiB3ZSBkbyBub3QgZXh0
cmFjdCBkdXBsaWNhdGUgZXZlbnRzLiBIb3dldmVyLCBtb3ZpbmcgdGhlIG1vdXNlIGludG8gdGhl
XG5cdCAgICogYnJvd3NlciBmcm9tIG91dHNpZGUgd2lsbCBub3QgZmlyZSBhIGBtb3VzZW91dGAg
ZXZlbnQuIEluIHRoaXMgY2FzZSwgd2UgdXNlXG5cdCAgICogdGhlIGBtb3VzZW92ZXJgIHRvcC1s
ZXZlbCBldmVudC5cblx0ICAgKi9cblx0ICBleHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9wTGV2
ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcblx0
ICAgIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BNb3VzZU92ZXInICYmIChuYXRpdmVFdmVudC5y
ZWxhdGVkVGFyZ2V0IHx8IG5hdGl2ZUV2ZW50LmZyb21FbGVtZW50KSkge1xuXHQgICAgICByZXR1
cm4gbnVsbDtcblx0ICAgIH1cblx0ICAgIGlmICh0b3BMZXZlbFR5cGUgIT09ICd0b3BNb3VzZU91
dCcgJiYgdG9wTGV2ZWxUeXBlICE9PSAndG9wTW91c2VPdmVyJykge1xuXHQgICAgICAvLyBNdXN0
IG5vdCBiZSBhIG1vdXNlIGluIG9yIG1vdXNlIG91dCAtIGlnbm9yaW5nLlxuXHQgICAgICByZXR1
cm4gbnVsbDtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgd2luO1xuXHQgICAgaWYgKG5hdGl2ZUV2
ZW50VGFyZ2V0LndpbmRvdyA9PT0gbmF0aXZlRXZlbnRUYXJnZXQpIHtcblx0ICAgICAgLy8gYG5h
dGl2ZUV2ZW50VGFyZ2V0YCBpcyBwcm9iYWJseSBhIHdpbmRvdyBvYmplY3QuXG5cdCAgICAgIHdp
biA9IG5hdGl2ZUV2ZW50VGFyZ2V0O1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgLy8gVE9ETzog
RmlndXJlIG91dCB3aHkgYG93bmVyRG9jdW1lbnRgIGlzIHNvbWV0aW1lcyB1bmRlZmluZWQgaW4g
SUU4LlxuXHQgICAgICB2YXIgZG9jID0gbmF0aXZlRXZlbnRUYXJnZXQub3duZXJEb2N1bWVudDtc
blx0ICAgICAgaWYgKGRvYykge1xuXHQgICAgICAgIHdpbiA9IGRvYy5kZWZhdWx0VmlldyB8fCBk
b2MucGFyZW50V2luZG93O1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIHdpbiA9IHdpbmRv
dztcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIHZhciBmcm9tO1xuXHQgICAgdmFyIHRv
O1xuXHQgICAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcE1vdXNlT3V0Jykge1xuXHQgICAgICBm
cm9tID0gdGFyZ2V0SW5zdDtcblx0ICAgICAgdmFyIHJlbGF0ZWQgPSBuYXRpdmVFdmVudC5yZWxh
dGVkVGFyZ2V0IHx8IG5hdGl2ZUV2ZW50LnRvRWxlbWVudDtcblx0ICAgICAgdG8gPSByZWxhdGVk
ID8gUmVhY3RET01Db21wb25lbnRUcmVlLmdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKHJlbGF0
ZWQpIDogbnVsbDtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIC8vIE1vdmluZyB0byBhIG5vZGUg
ZnJvbSBvdXRzaWRlIHRoZSB3aW5kb3cuXG5cdCAgICAgIGZyb20gPSBudWxsO1xuXHQgICAgICB0
byA9IHRhcmdldEluc3Q7XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKGZyb20gPT09IHRvKSB7XG5c
dCAgICAgIC8vIE5vdGhpbmcgcGVydGFpbnMgdG8gb3VyIG1hbmFnZWQgY29tcG9uZW50cy5cblx0
ICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIGZyb21Ob2RlID0gZnJv
bSA9PSBudWxsID8gd2luIDogUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFu
Y2UoZnJvbSk7XG5cdCAgICB2YXIgdG9Ob2RlID0gdG8gPT0gbnVsbCA/IHdpbiA6IFJlYWN0RE9N
Q29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKHRvKTtcblx0XG5cdCAgICB2YXIgbGVh
dmUgPSBTeW50aGV0aWNNb3VzZUV2ZW50LmdldFBvb2xlZChldmVudFR5cGVzLm1vdXNlTGVhdmUs
IGZyb20sIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cdCAgICBsZWF2ZS50eXBl
ID0gJ21vdXNlbGVhdmUnO1xuXHQgICAgbGVhdmUudGFyZ2V0ID0gZnJvbU5vZGU7XG5cdCAgICBs
ZWF2ZS5yZWxhdGVkVGFyZ2V0ID0gdG9Ob2RlO1xuXHRcblx0ICAgIHZhciBlbnRlciA9IFN5bnRo
ZXRpY01vdXNlRXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMubW91c2VFbnRlciwgdG8sIG5hdGl2
ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cdCAgICBlbnRlci50eXBlID0gJ21vdXNlZW50
ZXInO1xuXHQgICAgZW50ZXIudGFyZ2V0ID0gdG9Ob2RlO1xuXHQgICAgZW50ZXIucmVsYXRlZFRh
cmdldCA9IGZyb21Ob2RlO1xuXHRcblx0ICAgIEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0ZUVu
dGVyTGVhdmVEaXNwYXRjaGVzKGxlYXZlLCBlbnRlciwgZnJvbSwgdG8pO1xuXHRcblx0ICAgIHJl
dHVybiBbbGVhdmUsIGVudGVyXTtcblx0ICB9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9
IEVudGVyTGVhdmVFdmVudFBsdWdpbjtcblxuLyoqKi8gfSxcbi8qIDEzMiAqL1xuLyoqKi8gZnVu
Y3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5c
dCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJp
Y3QnO1xuXHRcblx0dmFyIF9hc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRcblx0
dmFyIFBvb2xlZENsYXNzID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMyk7XG5cdFxuXHR2YXIgZ2V0
VGV4dENvbnRlbnRBY2Nlc3NvciA9IF9fd2VicGFja19yZXF1aXJlX18oNzMpO1xuXHRcblx0Lyoq
XG5cdCAqIFRoaXMgaGVscGVyIGNsYXNzIHN0b3JlcyBpbmZvcm1hdGlvbiBhYm91dCB0ZXh0IGNv
bnRlbnQgb2YgYSB0YXJnZXQgbm9kZSxcblx0ICogYWxsb3dpbmcgY29tcGFyaXNvbiBvZiBjb250
ZW50IGJlZm9yZSBhbmQgYWZ0ZXIgYSBnaXZlbiBldmVudC5cblx0ICpcblx0ICogSWRlbnRpZnkg
dGhlIG5vZGUgd2hlcmUgc2VsZWN0aW9uIGN1cnJlbnRseSBiZWdpbnMsIHRoZW4gb2JzZXJ2ZVxu
XHQgKiBib3RoIGl0cyB0ZXh0IGNvbnRlbnQgYW5kIGl0cyBjdXJyZW50IHBvc2l0aW9uIGluIHRo
ZSBET00uIFNpbmNlIHRoZVxuXHQgKiBicm93c2VyIG1heSBuYXRpdmVseSByZXBsYWNlIHRoZSB0
YXJnZXQgbm9kZSBkdXJpbmcgY29tcG9zaXRpb24sIHdlIGNhblxuXHQgKiB1c2UgaXRzIHBvc2l0
aW9uIHRvIGZpbmQgaXRzIHJlcGxhY2VtZW50LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0RPTUV2ZW50
VGFyZ2V0fSByb290XG5cdCAqL1xuXHRmdW5jdGlvbiBGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUo
cm9vdCkge1xuXHQgIHRoaXMuX3Jvb3QgPSByb290O1xuXHQgIHRoaXMuX3N0YXJ0VGV4dCA9IHRo
aXMuZ2V0VGV4dCgpO1xuXHQgIHRoaXMuX2ZhbGxiYWNrVGV4dCA9IG51bGw7XG5cdH1cblx0XG5c
dF9hc3NpZ24oRmFsbGJhY2tDb21wb3NpdGlvblN0YXRlLnByb3RvdHlwZSwge1xuXHQgIGRlc3Ry
dWN0b3I6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHRoaXMuX3Jvb3QgPSBudWxsO1xuXHQgICAgdGhp
cy5fc3RhcnRUZXh0ID0gbnVsbDtcblx0ICAgIHRoaXMuX2ZhbGxiYWNrVGV4dCA9IG51bGw7XG5c
dCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogR2V0IGN1cnJlbnQgdGV4dCBvZiBpbnB1dC5cblx0
ICAgKlxuXHQgICAqIEByZXR1cm4ge3N0cmluZ31cblx0ICAgKi9cblx0ICBnZXRUZXh0OiBmdW5j
dGlvbiAoKSB7XG5cdCAgICBpZiAoJ3ZhbHVlJyBpbiB0aGlzLl9yb290KSB7XG5cdCAgICAgIHJl
dHVybiB0aGlzLl9yb290LnZhbHVlO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIHRoaXMuX3Jvb3Rb
Z2V0VGV4dENvbnRlbnRBY2Nlc3NvcigpXTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBE
ZXRlcm1pbmUgdGhlIGRpZmZlcmluZyBzdWJzdHJpbmcgYmV0d2VlbiB0aGUgaW5pdGlhbGx5IHN0
b3JlZFxuXHQgICAqIHRleHQgY29udGVudCBhbmQgdGhlIGN1cnJlbnQgY29udGVudC5cblx0ICAg
KlxuXHQgICAqIEByZXR1cm4ge3N0cmluZ31cblx0ICAgKi9cblx0ICBnZXREYXRhOiBmdW5jdGlv
biAoKSB7XG5cdCAgICBpZiAodGhpcy5fZmFsbGJhY2tUZXh0KSB7XG5cdCAgICAgIHJldHVybiB0
aGlzLl9mYWxsYmFja1RleHQ7XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIHN0YXJ0O1xuXHQgICAg
dmFyIHN0YXJ0VmFsdWUgPSB0aGlzLl9zdGFydFRleHQ7XG5cdCAgICB2YXIgc3RhcnRMZW5ndGgg
PSBzdGFydFZhbHVlLmxlbmd0aDtcblx0ICAgIHZhciBlbmQ7XG5cdCAgICB2YXIgZW5kVmFsdWUg
PSB0aGlzLmdldFRleHQoKTtcblx0ICAgIHZhciBlbmRMZW5ndGggPSBlbmRWYWx1ZS5sZW5ndGg7
XG5cdFxuXHQgICAgZm9yIChzdGFydCA9IDA7IHN0YXJ0IDwgc3RhcnRMZW5ndGg7IHN0YXJ0Kysp
IHtcblx0ICAgICAgaWYgKHN0YXJ0VmFsdWVbc3RhcnRdICE9PSBlbmRWYWx1ZVtzdGFydF0pIHtc
blx0ICAgICAgICBicmVhaztcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIHZhciBtaW5F
bmQgPSBzdGFydExlbmd0aCAtIHN0YXJ0O1xuXHQgICAgZm9yIChlbmQgPSAxOyBlbmQgPD0gbWlu
RW5kOyBlbmQrKykge1xuXHQgICAgICBpZiAoc3RhcnRWYWx1ZVtzdGFydExlbmd0aCAtIGVuZF0g
IT09IGVuZFZhbHVlW2VuZExlbmd0aCAtIGVuZF0pIHtcblx0ICAgICAgICBicmVhaztcblx0ICAg
ICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIHZhciBzbGljZVRhaWwgPSBlbmQgPiAxID8gMSAtIGVu
ZCA6IHVuZGVmaW5lZDtcblx0ICAgIHRoaXMuX2ZhbGxiYWNrVGV4dCA9IGVuZFZhbHVlLnNsaWNl
KHN0YXJ0LCBzbGljZVRhaWwpO1xuXHQgICAgcmV0dXJuIHRoaXMuX2ZhbGxiYWNrVGV4dDtcblx0
ICB9XG5cdH0pO1xuXHRcblx0UG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1RvKEZhbGxiYWNrQ29tcG9z
aXRpb25TdGF0ZSk7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IEZhbGxiYWNrQ29tcG9zaXRpb25T
dGF0ZTtcblxuLyoqKi8gfSxcbi8qIDEzMyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAq
XG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIERP
TVByb3BlcnR5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNSk7XG5cdFxuXHR2YXIgTVVTVF9VU0Vf
UFJPUEVSVFkgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uTVVTVF9VU0VfUFJPUEVSVFk7XG5cdHZh
ciBIQVNfQk9PTEVBTl9WQUxVRSA9IERPTVByb3BlcnR5LmluamVjdGlvbi5IQVNfQk9PTEVBTl9W
QUxVRTtcblx0dmFyIEhBU19OVU1FUklDX1ZBTFVFID0gRE9NUHJvcGVydHkuaW5qZWN0aW9uLkhB
U19OVU1FUklDX1ZBTFVFO1xuXHR2YXIgSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUgPSBET01Q
cm9wZXJ0eS5pbmplY3Rpb24uSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUU7XG5cdHZhciBIQVNf
T1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFID0gRE9NUHJvcGVydHkuaW5qZWN0aW9uLkhBU19PVkVS
TE9BREVEX0JPT0xFQU5fVkFMVUU7XG5cdFxuXHR2YXIgSFRNTERPTVByb3BlcnR5Q29uZmlnID0g
e1xuXHQgIGlzQ3VzdG9tQXR0cmlidXRlOiBSZWdFeHAucHJvdG90eXBlLnRlc3QuYmluZChuZXcg
UmVnRXhwKCdeKGRhdGF8YXJpYSktWycgKyBET01Qcm9wZXJ0eS5BVFRSSUJVVEVfTkFNRV9DSEFS
ICsgJ10qJCcpKSxcblx0ICBQcm9wZXJ0aWVzOiB7XG5cdCAgICAvKipcblx0ICAgICAqIFN0YW5k
YXJkIFByb3BlcnRpZXNcblx0ICAgICAqL1xuXHQgICAgYWNjZXB0OiAwLFxuXHQgICAgYWNjZXB0
Q2hhcnNldDogMCxcblx0ICAgIGFjY2Vzc0tleTogMCxcblx0ICAgIGFjdGlvbjogMCxcblx0ICAg
IGFsbG93RnVsbFNjcmVlbjogSEFTX0JPT0xFQU5fVkFMVUUsXG5cdCAgICBhbGxvd1RyYW5zcGFy
ZW5jeTogMCxcblx0ICAgIGFsdDogMCxcblx0ICAgIC8vIHNwZWNpZmllcyB0YXJnZXQgY29udGV4
dCBmb3IgbGlua3Mgd2l0aCBgcHJlbG9hZGAgdHlwZVxuXHQgICAgYXM6IDAsXG5cdCAgICBhc3lu
YzogSEFTX0JPT0xFQU5fVkFMVUUsXG5cdCAgICBhdXRvQ29tcGxldGU6IDAsXG5cdCAgICAvLyBh
dXRvRm9jdXMgaXMgcG9seWZpbGxlZC9ub3JtYWxpemVkIGJ5IEF1dG9Gb2N1c1V0aWxzXG5cdCAg
ICAvLyBhdXRvRm9jdXM6IEhBU19CT09MRUFOX1ZBTFVFLFxuXHQgICAgYXV0b1BsYXk6IEhBU19C
T09MRUFOX1ZBTFVFLFxuXHQgICAgY2FwdHVyZTogSEFTX0JPT0xFQU5fVkFMVUUsXG5cdCAgICBj
ZWxsUGFkZGluZzogMCxcblx0ICAgIGNlbGxTcGFjaW5nOiAwLFxuXHQgICAgY2hhclNldDogMCxc
blx0ICAgIGNoYWxsZW5nZTogMCxcblx0ICAgIGNoZWNrZWQ6IE1VU1RfVVNFX1BST1BFUlRZIHwg
SEFTX0JPT0xFQU5fVkFMVUUsXG5cdCAgICBjaXRlOiAwLFxuXHQgICAgY2xhc3NJRDogMCxcblx0
ICAgIGNsYXNzTmFtZTogMCxcblx0ICAgIGNvbHM6IEhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVF
LFxuXHQgICAgY29sU3BhbjogMCxcblx0ICAgIGNvbnRlbnQ6IDAsXG5cdCAgICBjb250ZW50RWRp
dGFibGU6IDAsXG5cdCAgICBjb250ZXh0TWVudTogMCxcblx0ICAgIGNvbnRyb2xzOiBIQVNfQk9P
TEVBTl9WQUxVRSxcblx0ICAgIGNvb3JkczogMCxcblx0ICAgIGNyb3NzT3JpZ2luOiAwLFxuXHQg
ICAgZGF0YTogMCwgLy8gRm9yIGA8b2JqZWN0IC8+YCBhY3RzIGFzIGBzcmNgLlxuXHQgICAgZGF0
ZVRpbWU6IDAsXG5cdCAgICAnZGVmYXVsdCc6IEhBU19CT09MRUFOX1ZBTFVFLFxuXHQgICAgZGVm
ZXI6IEhBU19CT09MRUFOX1ZBTFVFLFxuXHQgICAgZGlyOiAwLFxuXHQgICAgZGlzYWJsZWQ6IEhB
U19CT09MRUFOX1ZBTFVFLFxuXHQgICAgZG93bmxvYWQ6IEhBU19PVkVSTE9BREVEX0JPT0xFQU5f
VkFMVUUsXG5cdCAgICBkcmFnZ2FibGU6IDAsXG5cdCAgICBlbmNUeXBlOiAwLFxuXHQgICAgZm9y
bTogMCxcblx0ICAgIGZvcm1BY3Rpb246IDAsXG5cdCAgICBmb3JtRW5jVHlwZTogMCxcblx0ICAg
IGZvcm1NZXRob2Q6IDAsXG5cdCAgICBmb3JtTm9WYWxpZGF0ZTogSEFTX0JPT0xFQU5fVkFMVUUs
XG5cdCAgICBmb3JtVGFyZ2V0OiAwLFxuXHQgICAgZnJhbWVCb3JkZXI6IDAsXG5cdCAgICBoZWFk
ZXJzOiAwLFxuXHQgICAgaGVpZ2h0OiAwLFxuXHQgICAgaGlkZGVuOiBIQVNfQk9PTEVBTl9WQUxV
RSxcblx0ICAgIGhpZ2g6IDAsXG5cdCAgICBocmVmOiAwLFxuXHQgICAgaHJlZkxhbmc6IDAsXG5c
dCAgICBodG1sRm9yOiAwLFxuXHQgICAgaHR0cEVxdWl2OiAwLFxuXHQgICAgaWNvbjogMCxcblx0
ICAgIGlkOiAwLFxuXHQgICAgaW5wdXRNb2RlOiAwLFxuXHQgICAgaW50ZWdyaXR5OiAwLFxuXHQg
ICAgaXM6IDAsXG5cdCAgICBrZXlQYXJhbXM6IDAsXG5cdCAgICBrZXlUeXBlOiAwLFxuXHQgICAg
a2luZDogMCxcblx0ICAgIGxhYmVsOiAwLFxuXHQgICAgbGFuZzogMCxcblx0ICAgIGxpc3Q6IDAs
XG5cdCAgICBsb29wOiBIQVNfQk9PTEVBTl9WQUxVRSxcblx0ICAgIGxvdzogMCxcblx0ICAgIG1h
bmlmZXN0OiAwLFxuXHQgICAgbWFyZ2luSGVpZ2h0OiAwLFxuXHQgICAgbWFyZ2luV2lkdGg6IDAs
XG5cdCAgICBtYXg6IDAsXG5cdCAgICBtYXhMZW5ndGg6IDAsXG5cdCAgICBtZWRpYTogMCxcblx0
ICAgIG1lZGlhR3JvdXA6IDAsXG5cdCAgICBtZXRob2Q6IDAsXG5cdCAgICBtaW46IDAsXG5cdCAg
ICBtaW5MZW5ndGg6IDAsXG5cdCAgICAvLyBDYXV0aW9uOyBgb3B0aW9uLnNlbGVjdGVkYCBpcyBu
b3QgdXBkYXRlZCBpZiBgc2VsZWN0Lm11bHRpcGxlYCBpc1xuXHQgICAgLy8gZGlzYWJsZWQgd2l0
aCBgcmVtb3ZlQXR0cmlidXRlYC5cblx0ICAgIG11bHRpcGxlOiBNVVNUX1VTRV9QUk9QRVJUWSB8
IEhBU19CT09MRUFOX1ZBTFVFLFxuXHQgICAgbXV0ZWQ6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFT
X0JPT0xFQU5fVkFMVUUsXG5cdCAgICBuYW1lOiAwLFxuXHQgICAgbm9uY2U6IDAsXG5cdCAgICBu
b1ZhbGlkYXRlOiBIQVNfQk9PTEVBTl9WQUxVRSxcblx0ICAgIG9wZW46IEhBU19CT09MRUFOX1ZB
TFVFLFxuXHQgICAgb3B0aW11bTogMCxcblx0ICAgIHBhdHRlcm46IDAsXG5cdCAgICBwbGFjZWhv
bGRlcjogMCxcblx0ICAgIHBsYXlzSW5saW5lOiBIQVNfQk9PTEVBTl9WQUxVRSxcblx0ICAgIHBv
c3RlcjogMCxcblx0ICAgIHByZWxvYWQ6IDAsXG5cdCAgICBwcm9maWxlOiAwLFxuXHQgICAgcmFk
aW9Hcm91cDogMCxcblx0ICAgIHJlYWRPbmx5OiBIQVNfQk9PTEVBTl9WQUxVRSxcblx0ICAgIHJl
ZmVycmVyUG9saWN5OiAwLFxuXHQgICAgcmVsOiAwLFxuXHQgICAgcmVxdWlyZWQ6IEhBU19CT09M
RUFOX1ZBTFVFLFxuXHQgICAgcmV2ZXJzZWQ6IEhBU19CT09MRUFOX1ZBTFVFLFxuXHQgICAgcm9s
ZTogMCxcblx0ICAgIHJvd3M6IEhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFLFxuXHQgICAgcm93
U3BhbjogSEFTX05VTUVSSUNfVkFMVUUsXG5cdCAgICBzYW5kYm94OiAwLFxuXHQgICAgc2NvcGU6
IDAsXG5cdCAgICBzY29wZWQ6IEhBU19CT09MRUFOX1ZBTFVFLFxuXHQgICAgc2Nyb2xsaW5nOiAw
LFxuXHQgICAgc2VhbWxlc3M6IEhBU19CT09MRUFOX1ZBTFVFLFxuXHQgICAgc2VsZWN0ZWQ6IE1V
U1RfVVNFX1BST1BFUlRZIHwgSEFTX0JPT0xFQU5fVkFMVUUsXG5cdCAgICBzaGFwZTogMCxcblx0
ICAgIHNpemU6IEhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFLFxuXHQgICAgc2l6ZXM6IDAsXG5c
dCAgICBzcGFuOiBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSxcblx0ICAgIHNwZWxsQ2hlY2s6
IDAsXG5cdCAgICBzcmM6IDAsXG5cdCAgICBzcmNEb2M6IDAsXG5cdCAgICBzcmNMYW5nOiAwLFxu
XHQgICAgc3JjU2V0OiAwLFxuXHQgICAgc3RhcnQ6IEhBU19OVU1FUklDX1ZBTFVFLFxuXHQgICAg
c3RlcDogMCxcblx0ICAgIHN0eWxlOiAwLFxuXHQgICAgc3VtbWFyeTogMCxcblx0ICAgIHRhYklu
ZGV4OiAwLFxuXHQgICAgdGFyZ2V0OiAwLFxuXHQgICAgdGl0bGU6IDAsXG5cdCAgICAvLyBTZXR0
aW5nIC50eXBlIHRocm93cyBvbiBub24tPGlucHV0PiB0YWdzXG5cdCAgICB0eXBlOiAwLFxuXHQg
ICAgdXNlTWFwOiAwLFxuXHQgICAgdmFsdWU6IDAsXG5cdCAgICB3aWR0aDogMCxcblx0ICAgIHdt
b2RlOiAwLFxuXHQgICAgd3JhcDogMCxcblx0XG5cdCAgICAvKipcblx0ICAgICAqIFJERmEgUHJv
cGVydGllc1xuXHQgICAgICovXG5cdCAgICBhYm91dDogMCxcblx0ICAgIGRhdGF0eXBlOiAwLFxu
XHQgICAgaW5saXN0OiAwLFxuXHQgICAgcHJlZml4OiAwLFxuXHQgICAgLy8gcHJvcGVydHkgaXMg
YWxzbyBzdXBwb3J0ZWQgZm9yIE9wZW5HcmFwaCBpbiBtZXRhIHRhZ3MuXG5cdCAgICBwcm9wZXJ0
eTogMCxcblx0ICAgIHJlc291cmNlOiAwLFxuXHQgICAgJ3R5cGVvZic6IDAsXG5cdCAgICB2b2Nh
YjogMCxcblx0XG5cdCAgICAvKipcblx0ICAgICAqIE5vbi1zdGFuZGFyZCBQcm9wZXJ0aWVzXG5c
dCAgICAgKi9cblx0ICAgIC8vIGF1dG9DYXBpdGFsaXplIGFuZCBhdXRvQ29ycmVjdCBhcmUgc3Vw
cG9ydGVkIGluIE1vYmlsZSBTYWZhcmkgZm9yXG5cdCAgICAvLyBrZXlib2FyZCBoaW50cy5cblx0
ICAgIGF1dG9DYXBpdGFsaXplOiAwLFxuXHQgICAgYXV0b0NvcnJlY3Q6IDAsXG5cdCAgICAvLyBh
dXRvU2F2ZSBhbGxvd3MgV2ViS2l0L0JsaW5rIHRvIHBlcnNpc3QgdmFsdWVzIG9mIGlucHV0IGZp
ZWxkcyBvbiBwYWdlIHJlbG9hZHNcblx0ICAgIGF1dG9TYXZlOiAwLFxuXHQgICAgLy8gY29sb3Ig
aXMgZm9yIFNhZmFyaSBtYXNrLWljb24gbGlua1xuXHQgICAgY29sb3I6IDAsXG5cdCAgICAvLyBp
dGVtUHJvcCwgaXRlbVNjb3BlLCBpdGVtVHlwZSBhcmUgZm9yXG5cdCAgICAvLyBNaWNyb2RhdGEg
c3VwcG9ydC4gU2VlIGh0dHA6Ly9zY2hlbWEub3JnL2RvY3MvZ3MuaHRtbFxuXHQgICAgaXRlbVBy
b3A6IDAsXG5cdCAgICBpdGVtU2NvcGU6IEhBU19CT09MRUFOX1ZBTFVFLFxuXHQgICAgaXRlbVR5
cGU6IDAsXG5cdCAgICAvLyBpdGVtSUQgYW5kIGl0ZW1SZWYgYXJlIGZvciBNaWNyb2RhdGEgc3Vw
cG9ydCBhcyB3ZWxsIGJ1dFxuXHQgICAgLy8gb25seSBzcGVjaWZpZWQgaW4gdGhlIFdIQVRXRyBz
cGVjIGRvY3VtZW50LiBTZWVcblx0ICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcv
bXVsdGlwYWdlL21pY3JvZGF0YS5odG1sI21pY3JvZGF0YS1kb20tYXBpXG5cdCAgICBpdGVtSUQ6
IDAsXG5cdCAgICBpdGVtUmVmOiAwLFxuXHQgICAgLy8gcmVzdWx0cyBzaG93IGxvb2tpbmcgZ2xh
c3MgaWNvbiBhbmQgcmVjZW50IHNlYXJjaGVzIG9uIGlucHV0XG5cdCAgICAvLyBzZWFyY2ggZmll
bGRzIGluIFdlYktpdC9CbGlua1xuXHQgICAgcmVzdWx0czogMCxcblx0ICAgIC8vIElFLW9ubHkg
YXR0cmlidXRlIHRoYXQgc3BlY2lmaWVzIHNlY3VyaXR5IHJlc3RyaWN0aW9ucyBvbiBhbiBpZnJh
bWVcblx0ICAgIC8vIGFzIGFuIGFsdGVybmF0aXZlIHRvIHRoZSBzYW5kYm94IGF0dHJpYnV0ZSBv
biBJRTwxMFxuXHQgICAgc2VjdXJpdHk6IDAsXG5cdCAgICAvLyBJRS1vbmx5IGF0dHJpYnV0ZSB0
aGF0IGNvbnRyb2xzIGZvY3VzIGJlaGF2aW9yXG5cdCAgICB1bnNlbGVjdGFibGU6IDBcblx0ICB9
LFxuXHQgIERPTUF0dHJpYnV0ZU5hbWVzOiB7XG5cdCAgICBhY2NlcHRDaGFyc2V0OiAnYWNjZXB0
LWNoYXJzZXQnLFxuXHQgICAgY2xhc3NOYW1lOiAnY2xhc3MnLFxuXHQgICAgaHRtbEZvcjogJ2Zv
cicsXG5cdCAgICBodHRwRXF1aXY6ICdodHRwLWVxdWl2J1xuXHQgIH0sXG5cdCAgRE9NUHJvcGVy
dHlOYW1lczoge30sXG5cdCAgRE9NTXV0YXRpb25NZXRob2RzOiB7XG5cdCAgICB2YWx1ZTogZnVu
Y3Rpb24gKG5vZGUsIHZhbHVlKSB7XG5cdCAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG5cdCAg
ICAgICAgcmV0dXJuIG5vZGUucmVtb3ZlQXR0cmlidXRlKCd2YWx1ZScpO1xuXHQgICAgICB9XG5c
dFxuXHQgICAgICAvLyBOdW1iZXIgaW5wdXRzIGdldCBzcGVjaWFsIHRyZWF0bWVudCBkdWUgdG8g
c29tZSBlZGdlIGNhc2VzIGluXG5cdCAgICAgIC8vIENocm9tZS4gTGV0IGV2ZXJ5dGhpbmcgZWxz
ZSBhc3NpZ24gdGhlIHZhbHVlIGF0dHJpYnV0ZSBhcyBub3JtYWwuXG5cdCAgICAgIC8vIGh0dHBz
Oi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzI1MyNpc3N1ZWNvbW1lbnQtMjM2
MDc0MzI2XG5cdCAgICAgIGlmIChub2RlLnR5cGUgIT09ICdudW1iZXInIHx8IG5vZGUuaGFzQXR0
cmlidXRlKCd2YWx1ZScpID09PSBmYWxzZSkge1xuXHQgICAgICAgIG5vZGUuc2V0QXR0cmlidXRl
KCd2YWx1ZScsICcnICsgdmFsdWUpO1xuXHQgICAgICB9IGVsc2UgaWYgKG5vZGUudmFsaWRpdHkg
JiYgIW5vZGUudmFsaWRpdHkuYmFkSW5wdXQgJiYgbm9kZS5vd25lckRvY3VtZW50LmFjdGl2ZUVs
ZW1lbnQgIT09IG5vZGUpIHtcblx0ICAgICAgICAvLyBEb24ndCBhc3NpZ24gYW4gYXR0cmlidXRl
IGlmIHZhbGlkYXRpb24gcmVwb3J0cyBiYWRcblx0ICAgICAgICAvLyBpbnB1dC4gQ2hyb21lIHdp
bGwgY2xlYXIgdGhlIHZhbHVlLiBBZGRpdGlvbmFsbHksIGRvbid0XG5cdCAgICAgICAgLy8gb3Bl
cmF0ZSBvbiBpbnB1dHMgdGhhdCBoYXZlIGZvY3VzLCBvdGhlcndpc2UgQ2hyb21lIG1pZ2h0XG5c
dCAgICAgICAgLy8gc3RyaXAgb2ZmIHRyYWlsaW5nIGRlY2ltYWwgcGxhY2VzIGFuZCBjYXVzZSB0
aGUgdXNlcidzXG5cdCAgICAgICAgLy8gY3Vyc29yIHBvc2l0aW9uIHRvIGp1bXAgdG8gdGhlIGJl
Z2lubmluZyBvZiB0aGUgaW5wdXQuXG5cdCAgICAgICAgLy9cblx0ICAgICAgICAvLyBJbiBSZWFj
dERPTUlucHV0LCB3ZSBoYXZlIGFuIG9uQmx1ciBldmVudCB0aGF0IHdpbGwgdHJpZ2dlclxuXHQg
ICAgICAgIC8vIHRoaXMgZnVuY3Rpb24gYWdhaW4gd2hlbiBmb2N1cyBpcyBsb3N0LlxuXHQgICAg
ICAgIG5vZGUuc2V0QXR0cmlidXRlKCd2YWx1ZScsICcnICsgdmFsdWUpO1xuXHQgICAgICB9XG5c
dCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBIVE1MRE9NUHJvcGVy
dHlDb25maWc7XG5cbi8qKiovIH0sXG4vKiAxMzQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwg
ZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qIFdFQlBBQ0sgVkFSIElOSkVD
VElPTiAqLyhmdW5jdGlvbihwcm9jZXNzKSB7LyoqXG5cdCAqIENvcHlyaWdodCAyMDE0LXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIFJlYWN0UmVj
b25jaWxlciA9IF9fd2VicGFja19yZXF1aXJlX18oMTYpO1xuXHRcblx0dmFyIGluc3RhbnRpYXRl
UmVhY3RDb21wb25lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDc1KTtcblx0dmFyIEtleUVzY2Fw
ZVV0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXygzOCk7XG5cdHZhciBzaG91bGRVcGRhdGVSZWFj
dENvbXBvbmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oNDgpO1xuXHR2YXIgdHJhdmVyc2VBbGxD
aGlsZHJlbiA9IF9fd2VicGFja19yZXF1aXJlX18oNzgpO1xuXHR2YXIgd2FybmluZyA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMik7XG5cdFxuXHR2YXIgUmVhY3RDb21wb25lbnRUcmVlSG9vaztcblx0
XG5cdGlmICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy5lbnYgJiYg
KFwicHJvZHVjdGlvblwiKSA9PT0gJ3Rlc3QnKSB7XG5cdCAgLy8gVGVtcG9yYXJ5IGhhY2suXG5c
dCAgLy8gSW5saW5lIHJlcXVpcmVzIGRvbid0IHdvcmsgd2VsbCB3aXRoIEplc3Q6XG5cdCAgLy8g
aHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy83MjQwXG5cdCAgLy8gUmVt
b3ZlIHRoZSBpbmxpbmUgcmVxdWlyZXMgd2hlbiB3ZSBkb24ndCBuZWVkIHRoZW0gYW55bW9yZTpc
blx0ICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC83MTc4XG5cdCAg
UmVhY3RDb21wb25lbnRUcmVlSG9vayA9IF9fd2VicGFja19yZXF1aXJlX18oOTApO1xuXHR9XG5c
dFxuXHRmdW5jdGlvbiBpbnN0YW50aWF0ZUNoaWxkKGNoaWxkSW5zdGFuY2VzLCBjaGlsZCwgbmFt
ZSwgc2VsZkRlYnVnSUQpIHtcblx0ICAvLyBXZSBmb3VuZCBhIGNvbXBvbmVudCBpbnN0YW5jZS5c
blx0ICB2YXIga2V5VW5pcXVlID0gY2hpbGRJbnN0YW5jZXNbbmFtZV0gPT09IHVuZGVmaW5lZDtc
blx0ICBpZiAoZmFsc2UpIHtcblx0ICAgIGlmICghUmVhY3RDb21wb25lbnRUcmVlSG9vaykge1xu
XHQgICAgICBSZWFjdENvbXBvbmVudFRyZWVIb29rID0gcmVxdWlyZSgncmVhY3QvbGliL1JlYWN0
Q29tcG9uZW50VHJlZUhvb2snKTtcblx0ICAgIH1cblx0ICAgIGlmICgha2V5VW5pcXVlKSB7XG5c
dCAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZh
bHNlLCAnZmxhdHRlbkNoaWxkcmVuKC4uLik6IEVuY291bnRlcmVkIHR3byBjaGlsZHJlbiB3aXRo
IHRoZSBzYW1lIGtleSwgJyArICdgJXNgLiBDaGlsZCBrZXlzIG11c3QgYmUgdW5pcXVlOyB3aGVu
IHR3byBjaGlsZHJlbiBzaGFyZSBhIGtleSwgb25seSAnICsgJ3RoZSBmaXJzdCBjaGlsZCB3aWxs
IGJlIHVzZWQuJXMnLCBLZXlFc2NhcGVVdGlscy51bmVzY2FwZShuYW1lKSwgUmVhY3RDb21wb25l
bnRUcmVlSG9vay5nZXRTdGFja0FkZGVuZHVtQnlJRChzZWxmRGVidWdJRCkpIDogdm9pZCAwO1xu
XHQgICAgfVxuXHQgIH1cblx0ICBpZiAoY2hpbGQgIT0gbnVsbCAmJiBrZXlVbmlxdWUpIHtcblx0
ICAgIGNoaWxkSW5zdGFuY2VzW25hbWVdID0gaW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChjaGls
ZCwgdHJ1ZSk7XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICogUmVhY3RDaGlsZFJlY29uY2ls
ZXIgcHJvdmlkZXMgaGVscGVycyBmb3IgaW5pdGlhbGl6aW5nIG9yIHVwZGF0aW5nIGEgc2V0IG9m
XG5cdCAqIGNoaWxkcmVuLiBJdHMgb3V0cHV0IGlzIHN1aXRhYmxlIGZvciBwYXNzaW5nIGl0IG9u
dG8gUmVhY3RNdWx0aUNoaWxkIHdoaWNoXG5cdCAqIGRvZXMgZGlmZmVkIHJlb3JkZXJpbmcgYW5k
IGluc2VydGlvbi5cblx0ICovXG5cdHZhciBSZWFjdENoaWxkUmVjb25jaWxlciA9IHtcblx0ICAv
Kipcblx0ICAgKiBHZW5lcmF0ZXMgYSBcIm1vdW50IGltYWdlXCIgZm9yIGVhY2ggb2YgdGhlIHN1
cHBsaWVkIGNoaWxkcmVuLiBJbiB0aGUgY2FzZVxuXHQgICAqIG9mIGBSZWFjdERPTUNvbXBvbmVu
dGAsIGEgbW91bnQgaW1hZ2UgaXMgYSBzdHJpbmcgb2YgbWFya3VwLlxuXHQgICAqXG5cdCAgICog
QHBhcmFtIHs/b2JqZWN0fSBuZXN0ZWRDaGlsZE5vZGVzIE5lc3RlZCBjaGlsZCBtYXBzLlxuXHQg
ICAqIEByZXR1cm4gez9vYmplY3R9IEEgc2V0IG9mIGNoaWxkIGluc3RhbmNlcy5cblx0ICAgKiBA
aW50ZXJuYWxcblx0ICAgKi9cblx0ICBpbnN0YW50aWF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAobmVz
dGVkQ2hpbGROb2RlcywgdHJhbnNhY3Rpb24sIGNvbnRleHQsIHNlbGZEZWJ1Z0lEKSAvLyAwIGlu
IHByb2R1Y3Rpb24gYW5kIGZvciByb290c1xuXHQgIHtcblx0ICAgIGlmIChuZXN0ZWRDaGlsZE5v
ZGVzID09IG51bGwpIHtcblx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICB9XG5cdCAgICB2YXIg
Y2hpbGRJbnN0YW5jZXMgPSB7fTtcblx0XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgdHJh
dmVyc2VBbGxDaGlsZHJlbihuZXN0ZWRDaGlsZE5vZGVzLCBmdW5jdGlvbiAoY2hpbGRJbnN0cywg
Y2hpbGQsIG5hbWUpIHtcblx0ICAgICAgICByZXR1cm4gaW5zdGFudGlhdGVDaGlsZChjaGlsZElu
c3RzLCBjaGlsZCwgbmFtZSwgc2VsZkRlYnVnSUQpO1xuXHQgICAgICB9LCBjaGlsZEluc3RhbmNl
cyk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB0cmF2ZXJzZUFsbENoaWxkcmVuKG5lc3RlZENo
aWxkTm9kZXMsIGluc3RhbnRpYXRlQ2hpbGQsIGNoaWxkSW5zdGFuY2VzKTtcblx0ICAgIH1cblx0
ICAgIHJldHVybiBjaGlsZEluc3RhbmNlcztcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBV
cGRhdGVzIHRoZSByZW5kZXJlZCBjaGlsZHJlbiBhbmQgcmV0dXJucyBhIG5ldyBzZXQgb2YgY2hp
bGRyZW4uXG5cdCAgICpcblx0ICAgKiBAcGFyYW0gez9vYmplY3R9IHByZXZDaGlsZHJlbiBQcmV2
aW91c2x5IGluaXRpYWxpemVkIHNldCBvZiBjaGlsZHJlbi5cblx0ICAgKiBAcGFyYW0gez9vYmpl
Y3R9IG5leHRDaGlsZHJlbiBGbGF0IGNoaWxkIGVsZW1lbnQgbWFwcy5cblx0ICAgKiBAcGFyYW0g
e1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG5cdCAgICogQHBhcmFtIHtv
YmplY3R9IGNvbnRleHRcblx0ICAgKiBAcmV0dXJuIHs/b2JqZWN0fSBBIG5ldyBzZXQgb2YgY2hp
bGQgaW5zdGFuY2VzLlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIHVwZGF0ZUNoaWxk
cmVuOiBmdW5jdGlvbiAocHJldkNoaWxkcmVuLCBuZXh0Q2hpbGRyZW4sIG1vdW50SW1hZ2VzLCBy
ZW1vdmVkTm9kZXMsIHRyYW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywg
Y29udGV4dCwgc2VsZkRlYnVnSUQpIC8vIDAgaW4gcHJvZHVjdGlvbiBhbmQgZm9yIHJvb3RzXG5c
dCAge1xuXHQgICAgLy8gV2UgY3VycmVudGx5IGRvbid0IGhhdmUgYSB3YXkgdG8gdHJhY2sgbW92
ZXMgaGVyZSBidXQgaWYgd2UgdXNlIGl0ZXJhdG9yc1xuXHQgICAgLy8gaW5zdGVhZCBvZiBmb3Iu
LmluIHdlIGNhbiB6aXAgdGhlIGl0ZXJhdG9ycyBhbmQgY2hlY2sgaWYgYW4gaXRlbSBoYXNcblx0
ICAgIC8vIG1vdmVkLlxuXHQgICAgLy8gVE9ETzogSWYgbm90aGluZyBoYXMgY2hhbmdlZCwgcmV0
dXJuIHRoZSBwcmV2Q2hpbGRyZW4gb2JqZWN0IHNvIHRoYXQgd2Vcblx0ICAgIC8vIGNhbiBxdWlj
a2x5IGJhaWxvdXQgaWYgbm90aGluZyBoYXMgY2hhbmdlZC5cblx0ICAgIGlmICghbmV4dENoaWxk
cmVuICYmICFwcmV2Q2hpbGRyZW4pIHtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHQgICAg
dmFyIG5hbWU7XG5cdCAgICB2YXIgcHJldkNoaWxkO1xuXHQgICAgZm9yIChuYW1lIGluIG5leHRD
aGlsZHJlbikge1xuXHQgICAgICBpZiAoIW5leHRDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1l
KSkge1xuXHQgICAgICAgIGNvbnRpbnVlO1xuXHQgICAgICB9XG5cdCAgICAgIHByZXZDaGlsZCA9
IHByZXZDaGlsZHJlbiAmJiBwcmV2Q2hpbGRyZW5bbmFtZV07XG5cdCAgICAgIHZhciBwcmV2RWxl
bWVudCA9IHByZXZDaGlsZCAmJiBwcmV2Q2hpbGQuX2N1cnJlbnRFbGVtZW50O1xuXHQgICAgICB2
YXIgbmV4dEVsZW1lbnQgPSBuZXh0Q2hpbGRyZW5bbmFtZV07XG5cdCAgICAgIGlmIChwcmV2Q2hp
bGQgIT0gbnVsbCAmJiBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudChwcmV2RWxlbWVudCwgbmV4
dEVsZW1lbnQpKSB7XG5cdCAgICAgICAgUmVhY3RSZWNvbmNpbGVyLnJlY2VpdmVDb21wb25lbnQo
cHJldkNoaWxkLCBuZXh0RWxlbWVudCwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuXHQgICAgICAg
IG5leHRDaGlsZHJlbltuYW1lXSA9IHByZXZDaGlsZDtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAg
ICAgICBpZiAocHJldkNoaWxkKSB7XG5cdCAgICAgICAgICByZW1vdmVkTm9kZXNbbmFtZV0gPSBS
ZWFjdFJlY29uY2lsZXIuZ2V0SG9zdE5vZGUocHJldkNoaWxkKTtcblx0ICAgICAgICAgIFJlYWN0
UmVjb25jaWxlci51bm1vdW50Q29tcG9uZW50KHByZXZDaGlsZCwgZmFsc2UpO1xuXHQgICAgICAg
IH1cblx0ICAgICAgICAvLyBUaGUgY2hpbGQgbXVzdCBiZSBpbnN0YW50aWF0ZWQgYmVmb3JlIGl0
J3MgbW91bnRlZC5cblx0ICAgICAgICB2YXIgbmV4dENoaWxkSW5zdGFuY2UgPSBpbnN0YW50aWF0
ZVJlYWN0Q29tcG9uZW50KG5leHRFbGVtZW50LCB0cnVlKTtcblx0ICAgICAgICBuZXh0Q2hpbGRy
ZW5bbmFtZV0gPSBuZXh0Q2hpbGRJbnN0YW5jZTtcblx0ICAgICAgICAvLyBDcmVhdGluZyBtb3Vu
dCBpbWFnZSBub3cgZW5zdXJlcyByZWZzIGFyZSByZXNvbHZlZCBpbiByaWdodCBvcmRlclxuXHQg
ICAgICAgIC8vIChzZWUgaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwvNzEw
MSBmb3IgZXhwbGFuYXRpb24pLlxuXHQgICAgICAgIHZhciBuZXh0Q2hpbGRNb3VudEltYWdlID0g
UmVhY3RSZWNvbmNpbGVyLm1vdW50Q29tcG9uZW50KG5leHRDaGlsZEluc3RhbmNlLCB0cmFuc2Fj
dGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIGNvbnRleHQsIHNlbGZEZWJ1Z0lE
KTtcblx0ICAgICAgICBtb3VudEltYWdlcy5wdXNoKG5leHRDaGlsZE1vdW50SW1hZ2UpO1xuXHQg
ICAgICB9XG5cdCAgICB9XG5cdCAgICAvLyBVbm1vdW50IGNoaWxkcmVuIHRoYXQgYXJlIG5vIGxv
bmdlciBwcmVzZW50LlxuXHQgICAgZm9yIChuYW1lIGluIHByZXZDaGlsZHJlbikge1xuXHQgICAg
ICBpZiAocHJldkNoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpICYmICEobmV4dENoaWxkcmVu
ICYmIG5leHRDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkpIHtcblx0ICAgICAgICBwcmV2
Q2hpbGQgPSBwcmV2Q2hpbGRyZW5bbmFtZV07XG5cdCAgICAgICAgcmVtb3ZlZE5vZGVzW25hbWVd
ID0gUmVhY3RSZWNvbmNpbGVyLmdldEhvc3ROb2RlKHByZXZDaGlsZCk7XG5cdCAgICAgICAgUmVh
Y3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQocHJldkNoaWxkLCBmYWxzZSk7XG5cdCAgICAg
IH1cblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBVbm1vdW50cyBhbGwgcmVu
ZGVyZWQgY2hpbGRyZW4uIFRoaXMgc2hvdWxkIGJlIHVzZWQgdG8gY2xlYW4gdXAgY2hpbGRyZW5c
blx0ICAgKiB3aGVuIHRoaXMgY29tcG9uZW50IGlzIHVubW91bnRlZC5cblx0ICAgKlxuXHQgICAq
IEBwYXJhbSB7P29iamVjdH0gcmVuZGVyZWRDaGlsZHJlbiBQcmV2aW91c2x5IGluaXRpYWxpemVk
IHNldCBvZiBjaGlsZHJlbi5cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICB1bm1vdW50
Q2hpbGRyZW46IGZ1bmN0aW9uIChyZW5kZXJlZENoaWxkcmVuLCBzYWZlbHkpIHtcblx0ICAgIGZv
ciAodmFyIG5hbWUgaW4gcmVuZGVyZWRDaGlsZHJlbikge1xuXHQgICAgICBpZiAocmVuZGVyZWRD
aGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuXHQgICAgICAgIHZhciByZW5kZXJlZENo
aWxkID0gcmVuZGVyZWRDaGlsZHJlbltuYW1lXTtcblx0ICAgICAgICBSZWFjdFJlY29uY2lsZXIu
dW5tb3VudENvbXBvbmVudChyZW5kZXJlZENoaWxkLCBzYWZlbHkpO1xuXHQgICAgICB9XG5cdCAg
ICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdENoaWxkUmVjb25j
aWxlcjtcblx0LyogV0VCUEFDSyBWQVIgSU5KRUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIF9fd2Vi
cGFja19yZXF1aXJlX18oODcpKSlcblxuLyoqKi8gfSxcbi8qIDEzNSAqL1xuLyoqKi8gZnVuY3Rp
b24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3Qn
O1xuXHRcblx0dmFyIERPTUNoaWxkcmVuT3BlcmF0aW9ucyA9IF9fd2VicGFja19yZXF1aXJlX18o
MzQpO1xuXHR2YXIgUmVhY3RET01JRE9wZXJhdGlvbnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0
Mik7XG5cdFxuXHQvKipcblx0ICogQWJzdHJhY3RzIGF3YXkgYWxsIGZ1bmN0aW9uYWxpdHkgb2Yg
dGhlIHJlY29uY2lsZXIgdGhhdCByZXF1aXJlcyBrbm93bGVkZ2Ugb2Zcblx0ICogdGhlIGJyb3dz
ZXIgY29udGV4dC4gVE9ETzogVGhlc2UgY2FsbGVycyBzaG91bGQgYmUgcmVmYWN0b3JlZCB0byBh
dm9pZCB0aGVcblx0ICogbmVlZCBmb3IgdGhpcyBpbmplY3Rpb24uXG5cdCAqL1xuXHR2YXIgUmVh
Y3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQgPSB7XG5cdCAgcHJvY2Vzc0NoaWxkcmVuVXBk
YXRlczogUmVhY3RET01JRE9wZXJhdGlvbnMuZGFuZ2Vyb3VzbHlQcm9jZXNzQ2hpbGRyZW5VcGRh
dGVzLFxuXHRcblx0ICByZXBsYWNlTm9kZVdpdGhNYXJrdXA6IERPTUNoaWxkcmVuT3BlcmF0aW9u
cy5kYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cFxuXHR9O1xuXHRcblx0bW9kdWxlLmV4
cG9ydHMgPSBSZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudDtcblxuLyoqKi8gfSxcbi8q
IDEzNiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWly
ZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
XHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAq
L1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJw
YWNrX3JlcXVpcmVfXygzKSxcblx0ICAgIF9hc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQp
O1xuXHRcblx0dmFyIFJlYWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNyk7XG5cdHZhciBSZWFj
dENvbXBvbmVudEVudmlyb25tZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0MCk7XG5cdHZhciBS
ZWFjdEN1cnJlbnRPd25lciA9IF9fd2VicGFja19yZXF1aXJlX18oMTEpO1xuXHR2YXIgUmVhY3RF
cnJvclV0aWxzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0MSk7XG5cdHZhciBSZWFjdEluc3RhbmNl
TWFwID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMSk7XG5cdHZhciBSZWFjdEluc3RydW1lbnRhdGlv
biA9IF9fd2VicGFja19yZXF1aXJlX18oOCk7XG5cdHZhciBSZWFjdE5vZGVUeXBlcyA9IF9fd2Vi
cGFja19yZXF1aXJlX18oNjgpO1xuXHR2YXIgUmVhY3RSZWNvbmNpbGVyID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxNik7XG5cdFxuXHRpZiAoZmFsc2UpIHtcblx0ICB2YXIgY2hlY2tSZWFjdFR5cGVT
cGVjID0gcmVxdWlyZSgnLi9jaGVja1JlYWN0VHlwZVNwZWMnKTtcblx0fVxuXHRcblx0dmFyIGVt
cHR5T2JqZWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNCk7XG5cdHZhciBpbnZhcmlhbnQgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHR2YXIgc2hhbGxvd0VxdWFsID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygzMik7XG5cdHZhciBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudCA9IF9fd2VicGFj
a19yZXF1aXJlX18oNDgpO1xuXHR2YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7
XG5cdFxuXHR2YXIgQ29tcG9zaXRlVHlwZXMgPSB7XG5cdCAgSW1wdXJlQ2xhc3M6IDAsXG5cdCAg
UHVyZUNsYXNzOiAxLFxuXHQgIFN0YXRlbGVzc0Z1bmN0aW9uYWw6IDJcblx0fTtcblx0XG5cdGZ1
bmN0aW9uIFN0YXRlbGVzc0NvbXBvbmVudChDb21wb25lbnQpIHt9XG5cdFN0YXRlbGVzc0NvbXBv
bmVudC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuXHQgIHZhciBDb21wb25lbnQg
PSBSZWFjdEluc3RhbmNlTWFwLmdldCh0aGlzKS5fY3VycmVudEVsZW1lbnQudHlwZTtcblx0ICB2
YXIgZWxlbWVudCA9IENvbXBvbmVudCh0aGlzLnByb3BzLCB0aGlzLmNvbnRleHQsIHRoaXMudXBk
YXRlcik7XG5cdCAgd2FybklmSW52YWxpZEVsZW1lbnQoQ29tcG9uZW50LCBlbGVtZW50KTtcblx0
ICByZXR1cm4gZWxlbWVudDtcblx0fTtcblx0XG5cdGZ1bmN0aW9uIHdhcm5JZkludmFsaWRFbGVt
ZW50KENvbXBvbmVudCwgZWxlbWVudCkge1xuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgcHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZWxlbWVudCA9PT0gbnVs
bCB8fCBlbGVtZW50ID09PSBmYWxzZSB8fCBSZWFjdC5pc1ZhbGlkRWxlbWVudChlbGVtZW50KSwg
JyVzKC4uLik6IEEgdmFsaWQgUmVhY3QgZWxlbWVudCAob3IgbnVsbCkgbXVzdCBiZSByZXR1cm5l
ZC4gWW91IG1heSBoYXZlICcgKyAncmV0dXJuZWQgdW5kZWZpbmVkLCBhbiBhcnJheSBvciBzb21l
IG90aGVyIGludmFsaWQgb2JqZWN0LicsIENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21wb25l
bnQubmFtZSB8fCAnQ29tcG9uZW50JykgOiB2b2lkIDA7XG5cdCAgICBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghQ29tcG9uZW50LmNoaWxkQ29udGV4dFR5
cGVzLCAnJXMoLi4uKTogY2hpbGRDb250ZXh0VHlwZXMgY2Fubm90IGJlIGRlZmluZWQgb24gYSBm
dW5jdGlvbmFsIGNvbXBvbmVudC4nLCBDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50
Lm5hbWUgfHwgJ0NvbXBvbmVudCcpIDogdm9pZCAwO1xuXHQgIH1cblx0fVxuXHRcblx0ZnVuY3Rp
b24gc2hvdWxkQ29uc3RydWN0KENvbXBvbmVudCkge1xuXHQgIHJldHVybiAhIShDb21wb25lbnQu
cHJvdG90eXBlICYmIENvbXBvbmVudC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVudCk7XG5cdH1c
blx0XG5cdGZ1bmN0aW9uIGlzUHVyZUNvbXBvbmVudChDb21wb25lbnQpIHtcblx0ICByZXR1cm4g
ISEoQ29tcG9uZW50LnByb3RvdHlwZSAmJiBDb21wb25lbnQucHJvdG90eXBlLmlzUHVyZVJlYWN0
Q29tcG9uZW50KTtcblx0fVxuXHRcblx0Ly8gU2VwYXJhdGVkIGludG8gYSBmdW5jdGlvbiB0byBj
b250YWluIGRlb3B0aW1pemF0aW9ucyBjYXVzZWQgYnkgdHJ5L2ZpbmFsbHkuXG5cdGZ1bmN0aW9u
IG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZuLCBkZWJ1Z0lELCB0aW1lclR5cGUpIHtcblx0ICBpZiAo
ZGVidWdJRCA9PT0gMCkge1xuXHQgICAgLy8gVG9wLWxldmVsIHdyYXBwZXJzIChzZWUgUmVhY3RN
b3VudCkgYW5kIGVtcHR5IGNvbXBvbmVudHMgKHNlZVxuXHQgICAgLy8gUmVhY3RET01FbXB0eUNv
bXBvbmVudCkgYXJlIGludmlzaWJsZSB0byBob29rcyBhbmQgZGV2dG9vbHMuXG5cdCAgICAvLyBC
b3RoIGFyZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHRoYXQgc2hvdWxkIGdvIGF3YXkgaW4gdGhl
IGZ1dHVyZS5cblx0ICAgIHJldHVybiBmbigpO1xuXHQgIH1cblx0XG5cdCAgUmVhY3RJbnN0cnVt
ZW50YXRpb24uZGVidWdUb29sLm9uQmVnaW5MaWZlQ3ljbGVUaW1lcihkZWJ1Z0lELCB0aW1lclR5
cGUpO1xuXHQgIHRyeSB7XG5cdCAgICByZXR1cm4gZm4oKTtcblx0ICB9IGZpbmFsbHkge1xuXHQg
ICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uRW5kTGlmZUN5Y2xlVGltZXIoZGVi
dWdJRCwgdGltZXJUeXBlKTtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxuXHQgKiAtLS0tLS0tLS0t
LS0tLS0tLS0gVGhlIExpZmUtQ3ljbGUgb2YgYSBDb21wb3NpdGUgQ29tcG9uZW50IC0tLS0tLS0t
LS0tLS0tLS0tLVxuXHQgKlxuXHQgKiAtIGNvbnN0cnVjdG9yOiBJbml0aWFsaXphdGlvbiBvZiBz
dGF0ZS4gVGhlIGluc3RhbmNlIGlzIG5vdyByZXRhaW5lZC5cblx0ICogICAtIGNvbXBvbmVudFdp
bGxNb3VudFxuXHQgKiAgIC0gcmVuZGVyXG5cdCAqICAgLSBbY2hpbGRyZW4ncyBjb25zdHJ1Y3Rv
cnNdXG5cdCAqICAgICAtIFtjaGlsZHJlbidzIGNvbXBvbmVudFdpbGxNb3VudCBhbmQgcmVuZGVy
XVxuXHQgKiAgICAgLSBbY2hpbGRyZW4ncyBjb21wb25lbnREaWRNb3VudF1cblx0ICogICAgIC0g
Y29tcG9uZW50RGlkTW91bnRcblx0ICpcblx0ICogICAgICAgVXBkYXRlIFBoYXNlczpcblx0ICog
ICAgICAgLSBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIChvbmx5IGNhbGxlZCBpZiBwYXJlbnQg
dXBkYXRlZClcblx0ICogICAgICAgLSBzaG91bGRDb21wb25lbnRVcGRhdGVcblx0ICogICAgICAg
ICAtIGNvbXBvbmVudFdpbGxVcGRhdGVcblx0ICogICAgICAgICAgIC0gcmVuZGVyXG5cdCAqICAg
ICAgICAgICAtIFtjaGlsZHJlbidzIGNvbnN0cnVjdG9ycyBvciByZWNlaXZlIHByb3BzIHBoYXNl
c11cblx0ICogICAgICAgICAtIGNvbXBvbmVudERpZFVwZGF0ZVxuXHQgKlxuXHQgKiAgICAgLSBj
b21wb25lbnRXaWxsVW5tb3VudFxuXHQgKiAgICAgLSBbY2hpbGRyZW4ncyBjb21wb25lbnRXaWxs
VW5tb3VudF1cblx0ICogICAtIFtjaGlsZHJlbiBkZXN0cm95ZWRdXG5cdCAqIC0gKGRlc3Ryb3ll
ZCk6IFRoZSBpbnN0YW5jZSBpcyBub3cgYmxhbmssIHJlbGVhc2VkIGJ5IFJlYWN0IGFuZCByZWFk
eSBmb3IgR0MuXG5cdCAqXG5cdCAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdCAqL1xuXHRcblx0
LyoqXG5cdCAqIEFuIGluY3JlbWVudGluZyBJRCBhc3NpZ25lZCB0byBlYWNoIGNvbXBvbmVudCB3
aGVuIGl0IGlzIG1vdW50ZWQuIFRoaXMgaXNcblx0ICogdXNlZCB0byBlbmZvcmNlIHRoZSBvcmRl
ciBpbiB3aGljaCBgUmVhY3RVcGRhdGVzYCB1cGRhdGVzIGRpcnR5IGNvbXBvbmVudHMuXG5cdCAq
XG5cdCAqIEBwcml2YXRlXG5cdCAqL1xuXHR2YXIgbmV4dE1vdW50SUQgPSAxO1xuXHRcblx0Lyoq
XG5cdCAqIEBsZW5kcyB7UmVhY3RDb21wb3NpdGVDb21wb25lbnQucHJvdG90eXBlfVxuXHQgKi9c
blx0dmFyIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50ID0ge1xuXHQgIC8qKlxuXHQgICAqIEJhc2Ug
Y29uc3RydWN0b3IgZm9yIGFsbCBjb21wb3NpdGUgY29tcG9uZW50LlxuXHQgICAqXG5cdCAgICog
QHBhcmFtIHtSZWFjdEVsZW1lbnR9IGVsZW1lbnRcblx0ICAgKiBAZmluYWxcblx0ICAgKiBAaW50
ZXJuYWxcblx0ICAgKi9cblx0ICBjb25zdHJ1Y3Q6IGZ1bmN0aW9uIChlbGVtZW50KSB7XG5cdCAg
ICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IGVsZW1lbnQ7XG5cdCAgICB0aGlzLl9yb290Tm9kZUlE
ID0gMDtcblx0ICAgIHRoaXMuX2NvbXBvc2l0ZVR5cGUgPSBudWxsO1xuXHQgICAgdGhpcy5faW5z
dGFuY2UgPSBudWxsO1xuXHQgICAgdGhpcy5faG9zdFBhcmVudCA9IG51bGw7XG5cdCAgICB0aGlz
Ll9ob3N0Q29udGFpbmVySW5mbyA9IG51bGw7XG5cdFxuXHQgICAgLy8gU2VlIFJlYWN0VXBkYXRl
UXVldWVcblx0ICAgIHRoaXMuX3VwZGF0ZUJhdGNoTnVtYmVyID0gbnVsbDtcblx0ICAgIHRoaXMu
X3BlbmRpbmdFbGVtZW50ID0gbnVsbDtcblx0ICAgIHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlID0g
bnVsbDtcblx0ICAgIHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGUgPSBmYWxzZTtcblx0ICAgIHRo
aXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSA9IGZhbHNlO1xuXHRcblx0ICAgIHRoaXMuX3JlbmRlcmVk
Tm9kZVR5cGUgPSBudWxsO1xuXHQgICAgdGhpcy5fcmVuZGVyZWRDb21wb25lbnQgPSBudWxsO1xu
XHQgICAgdGhpcy5fY29udGV4dCA9IG51bGw7XG5cdCAgICB0aGlzLl9tb3VudE9yZGVyID0gMDtc
blx0ICAgIHRoaXMuX3RvcExldmVsV3JhcHBlciA9IG51bGw7XG5cdFxuXHQgICAgLy8gU2VlIFJl
YWN0VXBkYXRlcyBhbmQgUmVhY3RVcGRhdGVRdWV1ZS5cblx0ICAgIHRoaXMuX3BlbmRpbmdDYWxs
YmFja3MgPSBudWxsO1xuXHRcblx0ICAgIC8vIENvbXBvbmVudFdpbGxVbm1vdW50IHNoYWxsIG9u
bHkgYmUgY2FsbGVkIG9uY2Vcblx0ICAgIHRoaXMuX2NhbGxlZENvbXBvbmVudFdpbGxVbm1vdW50
ID0gZmFsc2U7XG5cdFxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHRoaXMuX3dhcm5lZEFi
b3V0UmVmc0luUmVuZGVyID0gZmFsc2U7XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5c
dCAgICogSW5pdGlhbGl6ZXMgdGhlIGNvbXBvbmVudCwgcmVuZGVycyBtYXJrdXAsIGFuZCByZWdp
c3RlcnMgZXZlbnQgbGlzdGVuZXJzLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtSZWFjdFJlY29u
Y2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0
aW9uXG5cdCAgICogQHBhcmFtIHs/b2JqZWN0fSBob3N0UGFyZW50XG5cdCAgICogQHBhcmFtIHs/
b2JqZWN0fSBob3N0Q29udGFpbmVySW5mb1xuXHQgICAqIEBwYXJhbSB7P29iamVjdH0gY29udGV4
dFxuXHQgICAqIEByZXR1cm4gez9zdHJpbmd9IFJlbmRlcmVkIG1hcmt1cCB0byBiZSBpbnNlcnRl
ZCBpbnRvIHRoZSBET00uXG5cdCAgICogQGZpbmFsXG5cdCAgICogQGludGVybmFsXG5cdCAgICov
XG5cdCAgbW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwg
aG9zdENvbnRhaW5lckluZm8sIGNvbnRleHQpIHtcblx0ICAgIHZhciBfdGhpcyA9IHRoaXM7XG5c
dFxuXHQgICAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG5cdCAgICB0aGlzLl9tb3VudE9yZGVy
ID0gbmV4dE1vdW50SUQrKztcblx0ICAgIHRoaXMuX2hvc3RQYXJlbnQgPSBob3N0UGFyZW50O1xu
XHQgICAgdGhpcy5faG9zdENvbnRhaW5lckluZm8gPSBob3N0Q29udGFpbmVySW5mbztcblx0XG5c
dCAgICB2YXIgcHVibGljUHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztcblx0ICAg
IHZhciBwdWJsaWNDb250ZXh0ID0gdGhpcy5fcHJvY2Vzc0NvbnRleHQoY29udGV4dCk7XG5cdFxu
XHQgICAgdmFyIENvbXBvbmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG5cdFxuXHQg
ICAgdmFyIHVwZGF0ZVF1ZXVlID0gdHJhbnNhY3Rpb24uZ2V0VXBkYXRlUXVldWUoKTtcblx0XG5c
dCAgICAvLyBJbml0aWFsaXplIHRoZSBwdWJsaWMgY2xhc3Ncblx0ICAgIHZhciBkb0NvbnN0cnVj
dCA9IHNob3VsZENvbnN0cnVjdChDb21wb25lbnQpO1xuXHQgICAgdmFyIGluc3QgPSB0aGlzLl9j
b25zdHJ1Y3RDb21wb25lbnQoZG9Db25zdHJ1Y3QsIHB1YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0
LCB1cGRhdGVRdWV1ZSk7XG5cdCAgICB2YXIgcmVuZGVyZWRFbGVtZW50O1xuXHRcblx0ICAgIC8v
IFN1cHBvcnQgZnVuY3Rpb25hbCBjb21wb25lbnRzXG5cdCAgICBpZiAoIWRvQ29uc3RydWN0ICYm
IChpbnN0ID09IG51bGwgfHwgaW5zdC5yZW5kZXIgPT0gbnVsbCkpIHtcblx0ICAgICAgcmVuZGVy
ZWRFbGVtZW50ID0gaW5zdDtcblx0ICAgICAgd2FybklmSW52YWxpZEVsZW1lbnQoQ29tcG9uZW50
LCByZW5kZXJlZEVsZW1lbnQpO1xuXHQgICAgICAhKGluc3QgPT09IG51bGwgfHwgaW5zdCA9PT0g
ZmFsc2UgfHwgUmVhY3QuaXNWYWxpZEVsZW1lbnQoaW5zdCkpID8gIGZhbHNlID8gaW52YXJpYW50
KGZhbHNlLCAnJXMoLi4uKTogQSB2YWxpZCBSZWFjdCBlbGVtZW50IChvciBudWxsKSBtdXN0IGJl
IHJldHVybmVkLiBZb3UgbWF5IGhhdmUgcmV0dXJuZWQgdW5kZWZpbmVkLCBhbiBhcnJheSBvciBz
b21lIG90aGVyIGludmFsaWQgb2JqZWN0LicsIENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21w
b25lbnQubmFtZSB8fCAnQ29tcG9uZW50JykgOiBfcHJvZEludmFyaWFudCgnMTA1JywgQ29tcG9u
ZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdDb21wb25lbnQnKSA6IHZvaWQg
MDtcblx0ICAgICAgaW5zdCA9IG5ldyBTdGF0ZWxlc3NDb21wb25lbnQoQ29tcG9uZW50KTtcblx0
ICAgICAgdGhpcy5fY29tcG9zaXRlVHlwZSA9IENvbXBvc2l0ZVR5cGVzLlN0YXRlbGVzc0Z1bmN0
aW9uYWw7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICBpZiAoaXNQdXJlQ29tcG9uZW50KENvbXBv
bmVudCkpIHtcblx0ICAgICAgICB0aGlzLl9jb21wb3NpdGVUeXBlID0gQ29tcG9zaXRlVHlwZXMu
UHVyZUNsYXNzO1xuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIHRoaXMuX2NvbXBvc2l0ZVR5
cGUgPSBDb21wb3NpdGVUeXBlcy5JbXB1cmVDbGFzcztcblx0ICAgICAgfVxuXHQgICAgfVxuXHRc
blx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAvLyBUaGlzIHdpbGwgdGhyb3cgbGF0ZXIgaW4g
X3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCwgYnV0IGFkZCBhbiBlYXJseVxuXHQgICAgICAvLyB3
YXJuaW5nIG5vdyB0byBoZWxwIGRlYnVnZ2luZ1xuXHQgICAgICBpZiAoaW5zdC5yZW5kZXIgPT0g
bnVsbCkge1xuXHQgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKGZhbHNlLCAnJXMoLi4uKTogTm8gYHJlbmRlcmAgbWV0aG9kIGZvdW5kIG9uIHRo
ZSByZXR1cm5lZCBjb21wb25lbnQgJyArICdpbnN0YW5jZTogeW91IG1heSBoYXZlIGZvcmdvdHRl
biB0byBkZWZpbmUgYHJlbmRlcmAuJywgQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVu
dC5uYW1lIHx8ICdDb21wb25lbnQnKSA6IHZvaWQgMDtcblx0ICAgICAgfVxuXHRcblx0ICAgICAg
dmFyIHByb3BzTXV0YXRlZCA9IGluc3QucHJvcHMgIT09IHB1YmxpY1Byb3BzO1xuXHQgICAgICB2
YXIgY29tcG9uZW50TmFtZSA9IENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFt
ZSB8fCAnQ29tcG9uZW50Jztcblx0XG5cdCAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicgPyB3YXJuaW5nKGluc3QucHJvcHMgPT09IHVuZGVmaW5lZCB8fCAhcHJvcHNN
dXRhdGVkLCAnJXMoLi4uKTogV2hlbiBjYWxsaW5nIHN1cGVyKCkgaW4gYCVzYCwgbWFrZSBzdXJl
IHRvIHBhc3MgJyArIFwidXAgdGhlIHNhbWUgcHJvcHMgdGhhdCB5b3VyIGNvbXBvbmVudCdzIGNv
bnN0cnVjdG9yIHdhcyBwYXNzZWQuXCIsIGNvbXBvbmVudE5hbWUsIGNvbXBvbmVudE5hbWUpIDog
dm9pZCAwO1xuXHQgICAgfVxuXHRcblx0ICAgIC8vIFRoZXNlIHNob3VsZCBiZSBzZXQgdXAgaW4g
dGhlIGNvbnN0cnVjdG9yLCBidXQgYXMgYSBjb252ZW5pZW5jZSBmb3Jcblx0ICAgIC8vIHNpbXBs
ZXIgY2xhc3MgYWJzdHJhY3Rpb25zLCB3ZSBzZXQgdGhlbSB1cCBhZnRlciB0aGUgZmFjdC5cblx0
ICAgIGluc3QucHJvcHMgPSBwdWJsaWNQcm9wcztcblx0ICAgIGluc3QuY29udGV4dCA9IHB1Ymxp
Y0NvbnRleHQ7XG5cdCAgICBpbnN0LnJlZnMgPSBlbXB0eU9iamVjdDtcblx0ICAgIGluc3QudXBk
YXRlciA9IHVwZGF0ZVF1ZXVlO1xuXHRcblx0ICAgIHRoaXMuX2luc3RhbmNlID0gaW5zdDtcblx0
XG5cdCAgICAvLyBTdG9yZSBhIHJlZmVyZW5jZSBmcm9tIHRoZSBpbnN0YW5jZSBiYWNrIHRvIHRo
ZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvblxuXHQgICAgUmVhY3RJbnN0YW5jZU1hcC5zZXQoaW5z
dCwgdGhpcyk7XG5cdFxuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIC8vIFNpbmNlIHBsYWlu
IEpTIGNsYXNzZXMgYXJlIGRlZmluZWQgd2l0aG91dCBhbnkgc3BlY2lhbCBpbml0aWFsaXphdGlv
blxuXHQgICAgICAvLyBsb2dpYywgd2UgY2FuIG5vdCBjYXRjaCBjb21tb24gZXJyb3JzIGVhcmx5
LiBUaGVyZWZvcmUsIHdlIGhhdmUgdG9cblx0ICAgICAgLy8gY2F0Y2ggdGhlbSBoZXJlLCBhdCBp
bml0aWFsaXphdGlvbiB0aW1lLCBpbnN0ZWFkLlxuXHQgICAgICBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghaW5zdC5nZXRJbml0aWFsU3RhdGUgfHwgaW5z
dC5nZXRJbml0aWFsU3RhdGUuaXNSZWFjdENsYXNzQXBwcm92ZWQgfHwgaW5zdC5zdGF0ZSwgJ2dl
dEluaXRpYWxTdGF0ZSB3YXMgZGVmaW5lZCBvbiAlcywgYSBwbGFpbiBKYXZhU2NyaXB0IGNsYXNz
LiAnICsgJ1RoaXMgaXMgb25seSBzdXBwb3J0ZWQgZm9yIGNsYXNzZXMgY3JlYXRlZCB1c2luZyBS
ZWFjdC5jcmVhdGVDbGFzcy4gJyArICdEaWQgeW91IG1lYW4gdG8gZGVmaW5lIGEgc3RhdGUgcHJv
cGVydHkgaW5zdGVhZD8nLCB0aGlzLmdldE5hbWUoKSB8fCAnYSBjb21wb25lbnQnKSA6IHZvaWQg
MDtcblx0ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5p
bmcoIWluc3QuZ2V0RGVmYXVsdFByb3BzIHx8IGluc3QuZ2V0RGVmYXVsdFByb3BzLmlzUmVhY3RD
bGFzc0FwcHJvdmVkLCAnZ2V0RGVmYXVsdFByb3BzIHdhcyBkZWZpbmVkIG9uICVzLCBhIHBsYWlu
IEphdmFTY3JpcHQgY2xhc3MuICcgKyAnVGhpcyBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgY2xhc3Nl
cyBjcmVhdGVkIHVzaW5nIFJlYWN0LmNyZWF0ZUNsYXNzLiAnICsgJ1VzZSBhIHN0YXRpYyBwcm9w
ZXJ0eSB0byBkZWZpbmUgZGVmYXVsdFByb3BzIGluc3RlYWQuJywgdGhpcy5nZXROYW1lKCkgfHwg
J2EgY29tcG9uZW50JykgOiB2b2lkIDA7XG5cdCAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFpbnN0LnByb3BUeXBlcywgJ3Byb3BUeXBlcyB3YXMg
ZGVmaW5lZCBhcyBhbiBpbnN0YW5jZSBwcm9wZXJ0eSBvbiAlcy4gVXNlIGEgc3RhdGljICcgKyAn
cHJvcGVydHkgdG8gZGVmaW5lIHByb3BUeXBlcyBpbnN0ZWFkLicsIHRoaXMuZ2V0TmFtZSgpIHx8
ICdhIGNvbXBvbmVudCcpIDogdm9pZCAwO1xuXHQgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghaW5zdC5jb250ZXh0VHlwZXMsICdjb250ZXh0VHlw
ZXMgd2FzIGRlZmluZWQgYXMgYW4gaW5zdGFuY2UgcHJvcGVydHkgb24gJXMuIFVzZSBhICcgKyAn
c3RhdGljIHByb3BlcnR5IHRvIGRlZmluZSBjb250ZXh0VHlwZXMgaW5zdGVhZC4nLCB0aGlzLmdl
dE5hbWUoKSB8fCAnYSBjb21wb25lbnQnKSA6IHZvaWQgMDtcblx0ICAgICAgcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodHlwZW9mIGluc3QuY29tcG9uZW50
U2hvdWxkVXBkYXRlICE9PSAnZnVuY3Rpb24nLCAnJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCAnICsg
J2NvbXBvbmVudFNob3VsZFVwZGF0ZSgpLiBEaWQgeW91IG1lYW4gc2hvdWxkQ29tcG9uZW50VXBk
YXRlKCk/ICcgKyAnVGhlIG5hbWUgaXMgcGhyYXNlZCBhcyBhIHF1ZXN0aW9uIGJlY2F1c2UgdGhl
IGZ1bmN0aW9uIGlzICcgKyAnZXhwZWN0ZWQgdG8gcmV0dXJuIGEgdmFsdWUuJywgdGhpcy5nZXRO
YW1lKCkgfHwgJ0EgY29tcG9uZW50JykgOiB2b2lkIDA7XG5cdCAgICAgIHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHR5cGVvZiBpbnN0LmNvbXBvbmVudERp
ZFVubW91bnQgIT09ICdmdW5jdGlvbicsICclcyBoYXMgYSBtZXRob2QgY2FsbGVkICcgKyAnY29t
cG9uZW50RGlkVW5tb3VudCgpLiBCdXQgdGhlcmUgaXMgbm8gc3VjaCBsaWZlY3ljbGUgbWV0aG9k
LiAnICsgJ0RpZCB5b3UgbWVhbiBjb21wb25lbnRXaWxsVW5tb3VudCgpPycsIHRoaXMuZ2V0TmFt
ZSgpIHx8ICdBIGNvbXBvbmVudCcpIDogdm9pZCAwO1xuXHQgICAgICBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh0eXBlb2YgaW5zdC5jb21wb25lbnRXaWxs
UmVjaWV2ZVByb3BzICE9PSAnZnVuY3Rpb24nLCAnJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCAnICsg
J2NvbXBvbmVudFdpbGxSZWNpZXZlUHJvcHMoKS4gRGlkIHlvdSBtZWFuIGNvbXBvbmVudFdpbGxS
ZWNlaXZlUHJvcHMoKT8nLCB0aGlzLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnKSA6IHZvaWQg
MDtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgaW5pdGlhbFN0YXRlID0gaW5zdC5zdGF0ZTtcblx0
ICAgIGlmIChpbml0aWFsU3RhdGUgPT09IHVuZGVmaW5lZCkge1xuXHQgICAgICBpbnN0LnN0YXRl
ID0gaW5pdGlhbFN0YXRlID0gbnVsbDtcblx0ICAgIH1cblx0ICAgICEodHlwZW9mIGluaXRpYWxT
dGF0ZSA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkoaW5pdGlhbFN0YXRlKSkgPyAgZmFs
c2UgPyBpbnZhcmlhbnQoZmFsc2UsICclcy5zdGF0ZTogbXVzdCBiZSBzZXQgdG8gYW4gb2JqZWN0
IG9yIG51bGwnLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6
IF9wcm9kSW52YXJpYW50KCcxMDYnLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVD
b21wb25lbnQnKSA6IHZvaWQgMDtcblx0XG5cdCAgICB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSA9
IG51bGw7XG5cdCAgICB0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlID0gZmFsc2U7XG5cdCAgICB0
aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGUgPSBmYWxzZTtcblx0XG5cdCAgICB2YXIgbWFya3VwO1xu
XHQgICAgaWYgKGluc3QudW5zdGFibGVfaGFuZGxlRXJyb3IpIHtcblx0ICAgICAgbWFya3VwID0g
dGhpcy5wZXJmb3JtSW5pdGlhbE1vdW50V2l0aEVycm9ySGFuZGxpbmcocmVuZGVyZWRFbGVtZW50
LCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xu
XHQgICAgfSBlbHNlIHtcblx0ICAgICAgbWFya3VwID0gdGhpcy5wZXJmb3JtSW5pdGlhbE1vdW50
KHJlbmRlcmVkRWxlbWVudCwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIHRyYW5zYWN0
aW9uLCBjb250ZXh0KTtcblx0ICAgIH1cblx0XG5cdCAgICBpZiAoaW5zdC5jb21wb25lbnREaWRN
b3VudCkge1xuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICB0cmFuc2FjdGlvbi5nZXRS
ZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgIG1lYXN1
cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgcmV0dXJuIGluc3Qu
Y29tcG9uZW50RGlkTW91bnQoKTtcblx0ICAgICAgICAgIH0sIF90aGlzLl9kZWJ1Z0lELCAnY29t
cG9uZW50RGlkTW91bnQnKTtcblx0ICAgICAgICB9KTtcblx0ICAgICAgfSBlbHNlIHtcblx0ICAg
ICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGluc3QuY29tcG9u
ZW50RGlkTW91bnQsIGluc3QpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgcmV0dXJu
IG1hcmt1cDtcblx0ICB9LFxuXHRcblx0ICBfY29uc3RydWN0Q29tcG9uZW50OiBmdW5jdGlvbiAo
ZG9Db25zdHJ1Y3QsIHB1YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCB1cGRhdGVRdWV1ZSkge1xu
XHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSB0
aGlzO1xuXHQgICAgICB0cnkge1xuXHQgICAgICAgIHJldHVybiB0aGlzLl9jb25zdHJ1Y3RDb21w
b25lbnRXaXRob3V0T3duZXIoZG9Db25zdHJ1Y3QsIHB1YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0
LCB1cGRhdGVRdWV1ZSk7XG5cdCAgICAgIH0gZmluYWxseSB7XG5cdCAgICAgICAgUmVhY3RDdXJy
ZW50T3duZXIuY3VycmVudCA9IG51bGw7XG5cdCAgICAgIH1cblx0ICAgIH0gZWxzZSB7XG5cdCAg
ICAgIHJldHVybiB0aGlzLl9jb25zdHJ1Y3RDb21wb25lbnRXaXRob3V0T3duZXIoZG9Db25zdHJ1
Y3QsIHB1YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCB1cGRhdGVRdWV1ZSk7XG5cdCAgICB9XG5c
dCAgfSxcblx0XG5cdCAgX2NvbnN0cnVjdENvbXBvbmVudFdpdGhvdXRPd25lcjogZnVuY3Rpb24g
KGRvQ29uc3RydWN0LCBwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpIHtc
blx0ICAgIHZhciBDb21wb25lbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlO1xuXHRcblx0
ICAgIGlmIChkb0NvbnN0cnVjdCkge1xuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICBy
ZXR1cm4gbWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgcmV0
dXJuIG5ldyBDb21wb25lbnQocHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0ZVF1ZXVl
KTtcblx0ICAgICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAnY3RvcicpO1xuXHQgICAgICB9IGVsc2Ug
e1xuXHQgICAgICAgIHJldHVybiBuZXcgQ29tcG9uZW50KHB1YmxpY1Byb3BzLCBwdWJsaWNDb250
ZXh0LCB1cGRhdGVRdWV1ZSk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICAvLyBUaGlz
IGNhbiBzdGlsbCBiZSBhbiBpbnN0YW5jZSBpbiBjYXNlIG9mIGZhY3RvcnkgY29tcG9uZW50c1xu
XHQgICAgLy8gYnV0IHdlJ2xsIGNvdW50IHRoaXMgYXMgdGltZSBzcGVudCByZW5kZXJpbmcgYXMg
dGhlIG1vcmUgY29tbW9uIGNhc2UuXG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgcmV0dXJu
IG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICByZXR1cm4gQ29t
cG9uZW50KHB1YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCB1cGRhdGVRdWV1ZSk7XG5cdCAgICAg
IH0sIHRoaXMuX2RlYnVnSUQsICdyZW5kZXInKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHJl
dHVybiBDb21wb25lbnQocHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0ZVF1ZXVlKTtc
blx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICBwZXJmb3JtSW5pdGlhbE1vdW50V2l0aEVycm9ySGFu
ZGxpbmc6IGZ1bmN0aW9uIChyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhvc3RDb250YWlu
ZXJJbmZvLCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuXHQgICAgdmFyIG1hcmt1cDtcblx0ICAg
IHZhciBjaGVja3BvaW50ID0gdHJhbnNhY3Rpb24uY2hlY2twb2ludCgpO1xuXHQgICAgdHJ5IHtc
blx0ICAgICAgbWFya3VwID0gdGhpcy5wZXJmb3JtSW5pdGlhbE1vdW50KHJlbmRlcmVkRWxlbWVu
dCwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtc
blx0ICAgIH0gY2F0Y2ggKGUpIHtcblx0ICAgICAgLy8gUm9sbCBiYWNrIHRvIGNoZWNrcG9pbnQs
IGhhbmRsZSBlcnJvciAod2hpY2ggbWF5IGFkZCBpdGVtcyB0byB0aGUgdHJhbnNhY3Rpb24pLCBh
bmQgdGFrZSBhIG5ldyBjaGVja3BvaW50XG5cdCAgICAgIHRyYW5zYWN0aW9uLnJvbGxiYWNrKGNo
ZWNrcG9pbnQpO1xuXHQgICAgICB0aGlzLl9pbnN0YW5jZS51bnN0YWJsZV9oYW5kbGVFcnJvcihl
KTtcblx0ICAgICAgaWYgKHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlKSB7XG5cdCAgICAgICAgdGhp
cy5faW5zdGFuY2Uuc3RhdGUgPSB0aGlzLl9wcm9jZXNzUGVuZGluZ1N0YXRlKHRoaXMuX2luc3Rh
bmNlLnByb3BzLCB0aGlzLl9pbnN0YW5jZS5jb250ZXh0KTtcblx0ICAgICAgfVxuXHQgICAgICBj
aGVja3BvaW50ID0gdHJhbnNhY3Rpb24uY2hlY2twb2ludCgpO1xuXHRcblx0ICAgICAgdGhpcy5f
cmVuZGVyZWRDb21wb25lbnQudW5tb3VudENvbXBvbmVudCh0cnVlKTtcblx0ICAgICAgdHJhbnNh
Y3Rpb24ucm9sbGJhY2soY2hlY2twb2ludCk7XG5cdFxuXHQgICAgICAvLyBUcnkgYWdhaW4gLSB3
ZSd2ZSBpbmZvcm1lZCB0aGUgY29tcG9uZW50IGFib3V0IHRoZSBlcnJvciwgc28gdGhleSBjYW4g
cmVuZGVyIGFuIGVycm9yIG1lc3NhZ2UgdGhpcyB0aW1lLlxuXHQgICAgICAvLyBJZiB0aGlzIHRo
cm93cyBhZ2FpbiwgdGhlIGVycm9yIHdpbGwgYnViYmxlIHVwIChhbmQgY2FuIGJlIGNhdWdodCBi
eSBhIGhpZ2hlciBlcnJvciBib3VuZGFyeSkuXG5cdCAgICAgIG1hcmt1cCA9IHRoaXMucGVyZm9y
bUluaXRpYWxNb3VudChyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJ
bmZvLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gbWFya3Vw
O1xuXHQgIH0sXG5cdFxuXHQgIHBlcmZvcm1Jbml0aWFsTW91bnQ6IGZ1bmN0aW9uIChyZW5kZXJl
ZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCB0cmFuc2FjdGlvbiwgY29u
dGV4dCkge1xuXHQgICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTtcblx0XG5cdCAgICB2YXIg
ZGVidWdJRCA9IDA7XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgZGVidWdJRCA9IHRoaXMu
X2RlYnVnSUQ7XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKGluc3QuY29tcG9uZW50V2lsbE1vdW50
KSB7XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIG1lYXN1cmVMaWZlQ3ljbGVQZXJm
KGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgIHJldHVybiBpbnN0LmNvbXBvbmVudFdpbGxNb3Vu
dCgpO1xuXHQgICAgICAgIH0sIGRlYnVnSUQsICdjb21wb25lbnRXaWxsTW91bnQnKTtcblx0ICAg
ICAgfSBlbHNlIHtcblx0ICAgICAgICBpbnN0LmNvbXBvbmVudFdpbGxNb3VudCgpO1xuXHQgICAg
ICB9XG5cdCAgICAgIC8vIFdoZW4gbW91bnRpbmcsIGNhbGxzIHRvIGBzZXRTdGF0ZWAgYnkgYGNv
bXBvbmVudFdpbGxNb3VudGAgd2lsbCBzZXRcblx0ICAgICAgLy8gYHRoaXMuX3BlbmRpbmdTdGF0
ZVF1ZXVlYCB3aXRob3V0IHRyaWdnZXJpbmcgYSByZS1yZW5kZXIuXG5cdCAgICAgIGlmICh0aGlz
Ll9wZW5kaW5nU3RhdGVRdWV1ZSkge1xuXHQgICAgICAgIGluc3Quc3RhdGUgPSB0aGlzLl9wcm9j
ZXNzUGVuZGluZ1N0YXRlKGluc3QucHJvcHMsIGluc3QuY29udGV4dCk7XG5cdCAgICAgIH1cblx0
ICAgIH1cblx0XG5cdCAgICAvLyBJZiBub3QgYSBzdGF0ZWxlc3MgY29tcG9uZW50LCB3ZSBub3cg
cmVuZGVyXG5cdCAgICBpZiAocmVuZGVyZWRFbGVtZW50ID09PSB1bmRlZmluZWQpIHtcblx0ICAg
ICAgcmVuZGVyZWRFbGVtZW50ID0gdGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KCk7XG5c
dCAgICB9XG5cdFxuXHQgICAgdmFyIG5vZGVUeXBlID0gUmVhY3ROb2RlVHlwZXMuZ2V0VHlwZShy
ZW5kZXJlZEVsZW1lbnQpO1xuXHQgICAgdGhpcy5fcmVuZGVyZWROb2RlVHlwZSA9IG5vZGVUeXBl
O1xuXHQgICAgdmFyIGNoaWxkID0gdGhpcy5faW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChyZW5k
ZXJlZEVsZW1lbnQsIG5vZGVUeXBlICE9PSBSZWFjdE5vZGVUeXBlcy5FTVBUWSAvKiBzaG91bGRI
YXZlRGVidWdJRCAqL1xuXHQgICAgKTtcblx0ICAgIHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50ID0g
Y2hpbGQ7XG5cdFxuXHQgICAgdmFyIG1hcmt1cCA9IFJlYWN0UmVjb25jaWxlci5tb3VudENvbXBv
bmVudChjaGlsZCwgdHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCB0
aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KGNvbnRleHQpLCBkZWJ1Z0lEKTtcblx0XG5cdCAgICBp
ZiAoZmFsc2UpIHtcblx0ICAgICAgaWYgKGRlYnVnSUQgIT09IDApIHtcblx0ICAgICAgICB2YXIg
Y2hpbGREZWJ1Z0lEcyA9IGNoaWxkLl9kZWJ1Z0lEICE9PSAwID8gW2NoaWxkLl9kZWJ1Z0lEXSA6
IFtdO1xuXHQgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblNldENoaWxk
cmVuKGRlYnVnSUQsIGNoaWxkRGVidWdJRHMpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQg
ICAgcmV0dXJuIG1hcmt1cDtcblx0ICB9LFxuXHRcblx0ICBnZXRIb3N0Tm9kZTogZnVuY3Rpb24g
KCkge1xuXHQgICAgcmV0dXJuIFJlYWN0UmVjb25jaWxlci5nZXRIb3N0Tm9kZSh0aGlzLl9yZW5k
ZXJlZENvbXBvbmVudCk7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogUmVsZWFzZXMgYW55
IHJlc291cmNlcyBhbGxvY2F0ZWQgYnkgYG1vdW50Q29tcG9uZW50YC5cblx0ICAgKlxuXHQgICAq
IEBmaW5hbFxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIHVubW91bnRDb21wb25lbnQ6
IGZ1bmN0aW9uIChzYWZlbHkpIHtcblx0ICAgIGlmICghdGhpcy5fcmVuZGVyZWRDb21wb25lbnQp
IHtcblx0ICAgICAgcmV0dXJuO1xuXHQgICAgfVxuXHRcblx0ICAgIHZhciBpbnN0ID0gdGhpcy5f
aW5zdGFuY2U7XG5cdFxuXHQgICAgaWYgKGluc3QuY29tcG9uZW50V2lsbFVubW91bnQgJiYgIWlu
c3QuX2NhbGxlZENvbXBvbmVudFdpbGxVbm1vdW50KSB7XG5cdCAgICAgIGluc3QuX2NhbGxlZENv
bXBvbmVudFdpbGxVbm1vdW50ID0gdHJ1ZTtcblx0XG5cdCAgICAgIGlmIChzYWZlbHkpIHtcblx0
ICAgICAgICB2YXIgbmFtZSA9IHRoaXMuZ2V0TmFtZSgpICsgJy5jb21wb25lbnRXaWxsVW5tb3Vu
dCgpJztcblx0ICAgICAgICBSZWFjdEVycm9yVXRpbHMuaW52b2tlR3VhcmRlZENhbGxiYWNrKG5h
bWUsIGluc3QuY29tcG9uZW50V2lsbFVubW91bnQuYmluZChpbnN0KSk7XG5cdCAgICAgIH0gZWxz
ZSB7XG5cdCAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgICBtZWFzdXJlTGlmZUN5Y2xl
UGVyZihmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICAgIHJldHVybiBpbnN0LmNvbXBvbmVudFdp
bGxVbm1vdW50KCk7XG5cdCAgICAgICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAnY29tcG9uZW50V2ls
bFVubW91bnQnKTtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgaW5zdC5jb21wb25l
bnRXaWxsVW5tb3VudCgpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0
ICAgIGlmICh0aGlzLl9yZW5kZXJlZENvbXBvbmVudCkge1xuXHQgICAgICBSZWFjdFJlY29uY2ls
ZXIudW5tb3VudENvbXBvbmVudCh0aGlzLl9yZW5kZXJlZENvbXBvbmVudCwgc2FmZWx5KTtcblx0
ICAgICAgdGhpcy5fcmVuZGVyZWROb2RlVHlwZSA9IG51bGw7XG5cdCAgICAgIHRoaXMuX3JlbmRl
cmVkQ29tcG9uZW50ID0gbnVsbDtcblx0ICAgICAgdGhpcy5faW5zdGFuY2UgPSBudWxsO1xuXHQg
ICAgfVxuXHRcblx0ICAgIC8vIFJlc2V0IHBlbmRpbmcgZmllbGRzXG5cdCAgICAvLyBFdmVuIGlm
IHRoaXMgY29tcG9uZW50IGlzIHNjaGVkdWxlZCBmb3IgYW5vdGhlciB1cGRhdGUgaW4gUmVhY3RV
cGRhdGVzLFxuXHQgICAgLy8gaXQgd291bGQgc3RpbGwgYmUgaWdub3JlZCBiZWNhdXNlIHRoZXNl
IGZpZWxkcyBhcmUgcmVzZXQuXG5cdCAgICB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSA9IG51bGw7
XG5cdCAgICB0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlID0gZmFsc2U7XG5cdCAgICB0aGlzLl9w
ZW5kaW5nRm9yY2VVcGRhdGUgPSBmYWxzZTtcblx0ICAgIHRoaXMuX3BlbmRpbmdDYWxsYmFja3Mg
PSBudWxsO1xuXHQgICAgdGhpcy5fcGVuZGluZ0VsZW1lbnQgPSBudWxsO1xuXHRcblx0ICAgIC8v
IFRoZXNlIGZpZWxkcyBkbyBub3QgcmVhbGx5IG5lZWQgdG8gYmUgcmVzZXQgc2luY2UgdGhpcyBv
YmplY3QgaXMgbm9cblx0ICAgIC8vIGxvbmdlciBhY2Nlc3NpYmxlLlxuXHQgICAgdGhpcy5fY29u
dGV4dCA9IG51bGw7XG5cdCAgICB0aGlzLl9yb290Tm9kZUlEID0gMDtcblx0ICAgIHRoaXMuX3Rv
cExldmVsV3JhcHBlciA9IG51bGw7XG5cdFxuXHQgICAgLy8gRGVsZXRlIHRoZSByZWZlcmVuY2Ug
ZnJvbSB0aGUgaW5zdGFuY2UgdG8gdGhpcyBpbnRlcm5hbCByZXByZXNlbnRhdGlvblxuXHQgICAg
Ly8gd2hpY2ggYWxsb3cgdGhlIGludGVybmFscyB0byBiZSBwcm9wZXJseSBjbGVhbmVkIHVwIGV2
ZW4gaWYgdGhlIHVzZXJcblx0ICAgIC8vIGxlYWtzIGEgcmVmZXJlbmNlIHRvIHRoZSBwdWJsaWMg
aW5zdGFuY2UuXG5cdCAgICBSZWFjdEluc3RhbmNlTWFwLnJlbW92ZShpbnN0KTtcblx0XG5cdCAg
ICAvLyBTb21lIGV4aXN0aW5nIGNvbXBvbmVudHMgcmVseSBvbiBpbnN0LnByb3BzIGV2ZW4gYWZ0
ZXIgdGhleSd2ZSBiZWVuXG5cdCAgICAvLyBkZXN0cm95ZWQgKGluIGV2ZW50IGhhbmRsZXJzKS5c
blx0ICAgIC8vIFRPRE86IGluc3QucHJvcHMgPSBudWxsO1xuXHQgICAgLy8gVE9ETzogaW5zdC5z
dGF0ZSA9IG51bGw7XG5cdCAgICAvLyBUT0RPOiBpbnN0LmNvbnRleHQgPSBudWxsO1xuXHQgIH0s
XG5cdFxuXHQgIC8qKlxuXHQgICAqIEZpbHRlcnMgdGhlIGNvbnRleHQgb2JqZWN0IHRvIG9ubHkg
Y29udGFpbiBrZXlzIHNwZWNpZmllZCBpblxuXHQgICAqIGBjb250ZXh0VHlwZXNgXG5cdCAgICpc
blx0ICAgKiBAcGFyYW0ge29iamVjdH0gY29udGV4dFxuXHQgICAqIEByZXR1cm4gez9vYmplY3R9
XG5cdCAgICogQHByaXZhdGVcblx0ICAgKi9cblx0ICBfbWFza0NvbnRleHQ6IGZ1bmN0aW9uIChj
b250ZXh0KSB7XG5cdCAgICB2YXIgQ29tcG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlw
ZTtcblx0ICAgIHZhciBjb250ZXh0VHlwZXMgPSBDb21wb25lbnQuY29udGV4dFR5cGVzO1xuXHQg
ICAgaWYgKCFjb250ZXh0VHlwZXMpIHtcblx0ICAgICAgcmV0dXJuIGVtcHR5T2JqZWN0O1xuXHQg
ICAgfVxuXHQgICAgdmFyIG1hc2tlZENvbnRleHQgPSB7fTtcblx0ICAgIGZvciAodmFyIGNvbnRl
eHROYW1lIGluIGNvbnRleHRUeXBlcykge1xuXHQgICAgICBtYXNrZWRDb250ZXh0W2NvbnRleHRO
YW1lXSA9IGNvbnRleHRbY29udGV4dE5hbWVdO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIG1hc2tl
ZENvbnRleHQ7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogRmlsdGVycyB0aGUgY29udGV4
dCBvYmplY3QgdG8gb25seSBjb250YWluIGtleXMgc3BlY2lmaWVkIGluXG5cdCAgICogYGNvbnRl
eHRUeXBlc2AsIGFuZCBhc3NlcnRzIHRoYXQgdGhleSBhcmUgdmFsaWQuXG5cdCAgICpcblx0ICAg
KiBAcGFyYW0ge29iamVjdH0gY29udGV4dFxuXHQgICAqIEByZXR1cm4gez9vYmplY3R9XG5cdCAg
ICogQHByaXZhdGVcblx0ICAgKi9cblx0ICBfcHJvY2Vzc0NvbnRleHQ6IGZ1bmN0aW9uIChjb250
ZXh0KSB7XG5cdCAgICB2YXIgbWFza2VkQ29udGV4dCA9IHRoaXMuX21hc2tDb250ZXh0KGNvbnRl
eHQpO1xuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIHZhciBDb21wb25lbnQgPSB0aGlzLl9j
dXJyZW50RWxlbWVudC50eXBlO1xuXHQgICAgICBpZiAoQ29tcG9uZW50LmNvbnRleHRUeXBlcykg
e1xuXHQgICAgICAgIHRoaXMuX2NoZWNrQ29udGV4dFR5cGVzKENvbXBvbmVudC5jb250ZXh0VHlw
ZXMsIG1hc2tlZENvbnRleHQsICdjb250ZXh0Jyk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAg
IHJldHVybiBtYXNrZWRDb250ZXh0O1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEBwYXJh
bSB7b2JqZWN0fSBjdXJyZW50Q29udGV4dFxuXHQgICAqIEByZXR1cm4ge29iamVjdH1cblx0ICAg
KiBAcHJpdmF0ZVxuXHQgICAqL1xuXHQgIF9wcm9jZXNzQ2hpbGRDb250ZXh0OiBmdW5jdGlvbiAo
Y3VycmVudENvbnRleHQpIHtcblx0ICAgIHZhciBDb21wb25lbnQgPSB0aGlzLl9jdXJyZW50RWxl
bWVudC50eXBlO1xuXHQgICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTtcblx0ICAgIHZhciBj
aGlsZENvbnRleHQ7XG5cdFxuXHQgICAgaWYgKGluc3QuZ2V0Q2hpbGRDb250ZXh0KSB7XG5cdCAg
ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9v
bC5vbkJlZ2luUHJvY2Vzc2luZ0NoaWxkQ29udGV4dCgpO1xuXHQgICAgICAgIHRyeSB7XG5cdCAg
ICAgICAgICBjaGlsZENvbnRleHQgPSBpbnN0LmdldENoaWxkQ29udGV4dCgpO1xuXHQgICAgICAg
IH0gZmluYWxseSB7XG5cdCAgICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wu
b25FbmRQcm9jZXNzaW5nQ2hpbGRDb250ZXh0KCk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9IGVs
c2Uge1xuXHQgICAgICAgIGNoaWxkQ29udGV4dCA9IGluc3QuZ2V0Q2hpbGRDb250ZXh0KCk7XG5c
dCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICBpZiAoY2hpbGRDb250ZXh0KSB7XG5cdCAgICAg
ICEodHlwZW9mIENvbXBvbmVudC5jaGlsZENvbnRleHRUeXBlcyA9PT0gJ29iamVjdCcpID8gIGZh
bHNlID8gaW52YXJpYW50KGZhbHNlLCAnJXMuZ2V0Q2hpbGRDb250ZXh0KCk6IGNoaWxkQ29udGV4
dFR5cGVzIG11c3QgYmUgZGVmaW5lZCBpbiBvcmRlciB0byB1c2UgZ2V0Q2hpbGRDb250ZXh0KCku
JywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50JykgOiBfcHJvZElu
dmFyaWFudCgnMTA3JywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50
JykgOiB2b2lkIDA7XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIHRoaXMuX2NoZWNr
Q29udGV4dFR5cGVzKENvbXBvbmVudC5jaGlsZENvbnRleHRUeXBlcywgY2hpbGRDb250ZXh0LCAn
Y2hpbGQgY29udGV4dCcpO1xuXHQgICAgICB9XG5cdCAgICAgIGZvciAodmFyIG5hbWUgaW4gY2hp
bGRDb250ZXh0KSB7XG5cdCAgICAgICAgIShuYW1lIGluIENvbXBvbmVudC5jaGlsZENvbnRleHRU
eXBlcykgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICclcy5nZXRDaGlsZENvbnRleHQoKTog
a2V5IFwiJXNcIiBpcyBub3QgZGVmaW5lZCBpbiBjaGlsZENvbnRleHRUeXBlcy4nLCB0aGlzLmdl
dE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnLCBuYW1lKSA6IF9wcm9kSW52YXJp
YW50KCcxMDgnLCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnLCBu
YW1lKSA6IHZvaWQgMDtcblx0ICAgICAgfVxuXHQgICAgICByZXR1cm4gX2Fzc2lnbih7fSwgY3Vy
cmVudENvbnRleHQsIGNoaWxkQ29udGV4dCk7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gY3VycmVu
dENvbnRleHQ7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogQXNzZXJ0IHRoYXQgdGhlIGNv
bnRleHQgdHlwZXMgYXJlIHZhbGlkXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge29iamVjdH0gdHlw
ZVNwZWNzIE1hcCBvZiBjb250ZXh0IGZpZWxkIHRvIGEgUmVhY3RQcm9wVHlwZVxuXHQgICAqIEBw
YXJhbSB7b2JqZWN0fSB2YWx1ZXMgUnVudGltZSB2YWx1ZXMgdGhhdCBuZWVkIHRvIGJlIHR5cGUt
Y2hlY2tlZFxuXHQgICAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhdGlvbiBlLmcuIFwicHJvcFwiLCBc
ImNvbnRleHRcIiwgXCJjaGlsZCBjb250ZXh0XCJcblx0ICAgKiBAcHJpdmF0ZVxuXHQgICAqL1xu
XHQgIF9jaGVja0NvbnRleHRUeXBlczogZnVuY3Rpb24gKHR5cGVTcGVjcywgdmFsdWVzLCBsb2Nh
dGlvbikge1xuXHQgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgIGNoZWNrUmVhY3RUeXBlU3BlYyh0
eXBlU3BlY3MsIHZhbHVlcywgbG9jYXRpb24sIHRoaXMuZ2V0TmFtZSgpLCBudWxsLCB0aGlzLl9k
ZWJ1Z0lEKTtcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICByZWNlaXZlQ29tcG9uZW50OiBmdW5j
dGlvbiAobmV4dEVsZW1lbnQsIHRyYW5zYWN0aW9uLCBuZXh0Q29udGV4dCkge1xuXHQgICAgdmFy
IHByZXZFbGVtZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQ7XG5cdCAgICB2YXIgcHJldkNvbnRl
eHQgPSB0aGlzLl9jb250ZXh0O1xuXHRcblx0ICAgIHRoaXMuX3BlbmRpbmdFbGVtZW50ID0gbnVs
bDtcblx0XG5cdCAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudCh0cmFuc2FjdGlvbiwgcHJldkVsZW1l
bnQsIG5leHRFbGVtZW50LCBwcmV2Q29udGV4dCwgbmV4dENvbnRleHQpO1xuXHQgIH0sXG5cdFxu
XHQgIC8qKlxuXHQgICAqIElmIGFueSBvZiBgX3BlbmRpbmdFbGVtZW50YCwgYF9wZW5kaW5nU3Rh
dGVRdWV1ZWAsIG9yIGBfcGVuZGluZ0ZvcmNlVXBkYXRlYFxuXHQgICAqIGlzIHNldCwgdXBkYXRl
IHRoZSBjb21wb25lbnQuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJh
bnNhY3Rpb259IHRyYW5zYWN0aW9uXG5cdCAgICogQGludGVybmFsXG5cdCAgICovXG5cdCAgcGVy
Zm9ybVVwZGF0ZUlmTmVjZXNzYXJ5OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24pIHtcblx0ICAgIGlm
ICh0aGlzLl9wZW5kaW5nRWxlbWVudCAhPSBudWxsKSB7XG5cdCAgICAgIFJlYWN0UmVjb25jaWxl
ci5yZWNlaXZlQ29tcG9uZW50KHRoaXMsIHRoaXMuX3BlbmRpbmdFbGVtZW50LCB0cmFuc2FjdGlv
biwgdGhpcy5fY29udGV4dCk7XG5cdCAgICB9IGVsc2UgaWYgKHRoaXMuX3BlbmRpbmdTdGF0ZVF1
ZXVlICE9PSBudWxsIHx8IHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSkge1xuXHQgICAgICB0aGlz
LnVwZGF0ZUNvbXBvbmVudCh0cmFuc2FjdGlvbiwgdGhpcy5fY3VycmVudEVsZW1lbnQsIHRoaXMu
X2N1cnJlbnRFbGVtZW50LCB0aGlzLl9jb250ZXh0LCB0aGlzLl9jb250ZXh0KTtcblx0ICAgIH0g
ZWxzZSB7XG5cdCAgICAgIHRoaXMuX3VwZGF0ZUJhdGNoTnVtYmVyID0gbnVsbDtcblx0ICAgIH1c
blx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBQZXJmb3JtIGFuIHVwZGF0ZSB0byBhIG1vdW50
ZWQgY29tcG9uZW50LiBUaGUgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyBhbmRcblx0ICAgKiBz
aG91bGRDb21wb25lbnRVcGRhdGUgbWV0aG9kcyBhcmUgY2FsbGVkLCB0aGVuIChhc3N1bWluZyB0
aGUgdXBkYXRlIGlzbid0XG5cdCAgICogc2tpcHBlZCkgdGhlIHJlbWFpbmluZyB1cGRhdGUgbGlm
ZWN5Y2xlIG1ldGhvZHMgYXJlIGNhbGxlZCBhbmQgdGhlIERPTVxuXHQgICAqIHJlcHJlc2VudGF0
aW9uIGlzIHVwZGF0ZWQuXG5cdCAgICpcblx0ICAgKiBCeSBkZWZhdWx0LCB0aGlzIGltcGxlbWVu
dHMgUmVhY3QncyByZW5kZXJpbmcgYW5kIHJlY29uY2lsaWF0aW9uIGFsZ29yaXRobS5cblx0ICAg
KiBTb3BoaXN0aWNhdGVkIGNsaWVudHMgbWF5IHdpc2ggdG8gb3ZlcnJpZGUgdGhpcy5cblx0ICAg
KlxuXHQgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25c
blx0ICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gcHJldlBhcmVudEVsZW1lbnRcblx0ICAgKiBA
cGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dFBhcmVudEVsZW1lbnRcblx0ICAgKiBAaW50ZXJuYWxc
blx0ICAgKiBAb3ZlcnJpZGFibGVcblx0ICAgKi9cblx0ICB1cGRhdGVDb21wb25lbnQ6IGZ1bmN0
aW9uICh0cmFuc2FjdGlvbiwgcHJldlBhcmVudEVsZW1lbnQsIG5leHRQYXJlbnRFbGVtZW50LCBw
cmV2VW5tYXNrZWRDb250ZXh0LCBuZXh0VW5tYXNrZWRDb250ZXh0KSB7XG5cdCAgICB2YXIgaW5z
dCA9IHRoaXMuX2luc3RhbmNlO1xuXHQgICAgIShpbnN0ICE9IG51bGwpID8gIGZhbHNlID8gaW52
YXJpYW50KGZhbHNlLCAnQXR0ZW1wdGVkIHRvIHVwZGF0ZSBjb21wb25lbnQgYCVzYCB0aGF0IGhh
cyBhbHJlYWR5IGJlZW4gdW5tb3VudGVkIChvciBmYWlsZWQgdG8gbW91bnQpLicsIHRoaXMuZ2V0
TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogX3Byb2RJbnZhcmlhbnQoJzEz
NicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAw
O1xuXHRcblx0ICAgIHZhciB3aWxsUmVjZWl2ZSA9IGZhbHNlO1xuXHQgICAgdmFyIG5leHRDb250
ZXh0O1xuXHRcblx0ICAgIC8vIERldGVybWluZSBpZiB0aGUgY29udGV4dCBoYXMgY2hhbmdlZCBv
ciBub3Rcblx0ICAgIGlmICh0aGlzLl9jb250ZXh0ID09PSBuZXh0VW5tYXNrZWRDb250ZXh0KSB7
XG5cdCAgICAgIG5leHRDb250ZXh0ID0gaW5zdC5jb250ZXh0O1xuXHQgICAgfSBlbHNlIHtcblx0
ICAgICAgbmV4dENvbnRleHQgPSB0aGlzLl9wcm9jZXNzQ29udGV4dChuZXh0VW5tYXNrZWRDb250
ZXh0KTtcblx0ICAgICAgd2lsbFJlY2VpdmUgPSB0cnVlO1xuXHQgICAgfVxuXHRcblx0ICAgIHZh
ciBwcmV2UHJvcHMgPSBwcmV2UGFyZW50RWxlbWVudC5wcm9wcztcblx0ICAgIHZhciBuZXh0UHJv
cHMgPSBuZXh0UGFyZW50RWxlbWVudC5wcm9wcztcblx0XG5cdCAgICAvLyBOb3QgYSBzaW1wbGUg
c3RhdGUgdXBkYXRlIGJ1dCBhIHByb3BzIHVwZGF0ZVxuXHQgICAgaWYgKHByZXZQYXJlbnRFbGVt
ZW50ICE9PSBuZXh0UGFyZW50RWxlbWVudCkge1xuXHQgICAgICB3aWxsUmVjZWl2ZSA9IHRydWU7
XG5cdCAgICB9XG5cdFxuXHQgICAgLy8gQW4gdXBkYXRlIGhlcmUgd2lsbCBzY2hlZHVsZSBhbiB1
cGRhdGUgYnV0IGltbWVkaWF0ZWx5IHNldFxuXHQgICAgLy8gX3BlbmRpbmdTdGF0ZVF1ZXVlIHdo
aWNoIHdpbGwgZW5zdXJlIHRoYXQgYW55IHN0YXRlIHVwZGF0ZXMgZ2V0c1xuXHQgICAgLy8gaW1t
ZWRpYXRlbHkgcmVjb25jaWxlZCBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIHRoZSBuZXh0IGJhdGNo
LlxuXHQgICAgaWYgKHdpbGxSZWNlaXZlICYmIGluc3QuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9w
cykge1xuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICBtZWFzdXJlTGlmZUN5Y2xlUGVy
ZihmdW5jdGlvbiAoKSB7XG5cdCAgICAgICAgICByZXR1cm4gaW5zdC5jb21wb25lbnRXaWxsUmVj
ZWl2ZVByb3BzKG5leHRQcm9wcywgbmV4dENvbnRleHQpO1xuXHQgICAgICAgIH0sIHRoaXMuX2Rl
YnVnSUQsICdjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzJyk7XG5cdCAgICAgIH0gZWxzZSB7XG5c
dCAgICAgICAgaW5zdC5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcywgbmV4dENv
bnRleHQpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIG5leHRTdGF0ZSA9IHRo
aXMuX3Byb2Nlc3NQZW5kaW5nU3RhdGUobmV4dFByb3BzLCBuZXh0Q29udGV4dCk7XG5cdCAgICB2
YXIgc2hvdWxkVXBkYXRlID0gdHJ1ZTtcblx0XG5cdCAgICBpZiAoIXRoaXMuX3BlbmRpbmdGb3Jj
ZVVwZGF0ZSkge1xuXHQgICAgICBpZiAoaW5zdC5zaG91bGRDb21wb25lbnRVcGRhdGUpIHtcblx0
ICAgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICAgIHNob3VsZFVwZGF0ZSA9IG1lYXN1cmVM
aWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgICAgcmV0dXJuIGluc3Quc2hv
dWxkQ29tcG9uZW50VXBkYXRlKG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCk7XG5c
dCAgICAgICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAnc2hvdWxkQ29tcG9uZW50VXBkYXRlJyk7XG5c
dCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIHNob3VsZFVwZGF0ZSA9IGluc3Quc2hvdWxk
Q29tcG9uZW50VXBkYXRlKG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCk7XG5cdCAg
ICAgICAgfVxuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAgIGlmICh0aGlzLl9jb21wb3NpdGVU
eXBlID09PSBDb21wb3NpdGVUeXBlcy5QdXJlQ2xhc3MpIHtcblx0ICAgICAgICAgIHNob3VsZFVw
ZGF0ZSA9ICFzaGFsbG93RXF1YWwocHJldlByb3BzLCBuZXh0UHJvcHMpIHx8ICFzaGFsbG93RXF1
YWwoaW5zdC5zdGF0ZSwgbmV4dFN0YXRlKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAg
IH1cblx0XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoc2hvdWxkVXBkYXRlICE9PSB1bmRlZmluZWQsICcl
cy5zaG91bGRDb21wb25lbnRVcGRhdGUoKTogUmV0dXJuZWQgdW5kZWZpbmVkIGluc3RlYWQgb2Yg
YSAnICsgJ2Jvb2xlYW4gdmFsdWUuIE1ha2Ugc3VyZSB0byByZXR1cm4gdHJ1ZSBvciBmYWxzZS4n
LCB0aGlzLmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IHZvaWQgMDtc
blx0ICAgIH1cblx0XG5cdCAgICB0aGlzLl91cGRhdGVCYXRjaE51bWJlciA9IG51bGw7XG5cdCAg
ICBpZiAoc2hvdWxkVXBkYXRlKSB7XG5cdCAgICAgIHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSA9
IGZhbHNlO1xuXHQgICAgICAvLyBXaWxsIHNldCBgdGhpcy5wcm9wc2AsIGB0aGlzLnN0YXRlYCBh
bmQgYHRoaXMuY29udGV4dGAuXG5cdCAgICAgIHRoaXMuX3BlcmZvcm1Db21wb25lbnRVcGRhdGUo
bmV4dFBhcmVudEVsZW1lbnQsIG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCwgdHJh
bnNhY3Rpb24sIG5leHRVbm1hc2tlZENvbnRleHQpO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAg
Ly8gSWYgaXQncyBkZXRlcm1pbmVkIHRoYXQgYSBjb21wb25lbnQgc2hvdWxkIG5vdCB1cGRhdGUs
IHdlIHN0aWxsIHdhbnRcblx0ICAgICAgLy8gdG8gc2V0IHByb3BzIGFuZCBzdGF0ZSBidXQgd2Ug
c2hvcnRjdXQgdGhlIHJlc3Qgb2YgdGhlIHVwZGF0ZS5cblx0ICAgICAgdGhpcy5fY3VycmVudEVs
ZW1lbnQgPSBuZXh0UGFyZW50RWxlbWVudDtcblx0ICAgICAgdGhpcy5fY29udGV4dCA9IG5leHRV
bm1hc2tlZENvbnRleHQ7XG5cdCAgICAgIGluc3QucHJvcHMgPSBuZXh0UHJvcHM7XG5cdCAgICAg
IGluc3Quc3RhdGUgPSBuZXh0U3RhdGU7XG5cdCAgICAgIGluc3QuY29udGV4dCA9IG5leHRDb250
ZXh0O1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIF9wcm9jZXNzUGVuZGluZ1N0YXRlOiBmdW5j
dGlvbiAocHJvcHMsIGNvbnRleHQpIHtcblx0ICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7
XG5cdCAgICB2YXIgcXVldWUgPSB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZTtcblx0ICAgIHZhciBy
ZXBsYWNlID0gdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZTtcblx0ICAgIHRoaXMuX3BlbmRpbmdS
ZXBsYWNlU3RhdGUgPSBmYWxzZTtcblx0ICAgIHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gbnVs
bDtcblx0XG5cdCAgICBpZiAoIXF1ZXVlKSB7XG5cdCAgICAgIHJldHVybiBpbnN0LnN0YXRlO1xu
XHQgICAgfVxuXHRcblx0ICAgIGlmIChyZXBsYWNlICYmIHF1ZXVlLmxlbmd0aCA9PT0gMSkge1xu
XHQgICAgICByZXR1cm4gcXVldWVbMF07XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIG5leHRTdGF0
ZSA9IF9hc3NpZ24oe30sIHJlcGxhY2UgPyBxdWV1ZVswXSA6IGluc3Quc3RhdGUpO1xuXHQgICAg
Zm9yICh2YXIgaSA9IHJlcGxhY2UgPyAxIDogMDsgaSA8IHF1ZXVlLmxlbmd0aDsgaSsrKSB7XG5c
dCAgICAgIHZhciBwYXJ0aWFsID0gcXVldWVbaV07XG5cdCAgICAgIF9hc3NpZ24obmV4dFN0YXRl
LCB0eXBlb2YgcGFydGlhbCA9PT0gJ2Z1bmN0aW9uJyA/IHBhcnRpYWwuY2FsbChpbnN0LCBuZXh0
U3RhdGUsIHByb3BzLCBjb250ZXh0KSA6IHBhcnRpYWwpO1xuXHQgICAgfVxuXHRcblx0ICAgIHJl
dHVybiBuZXh0U3RhdGU7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogTWVyZ2VzIG5ldyBw
cm9wcyBhbmQgc3RhdGUsIG5vdGlmaWVzIGRlbGVnYXRlIG1ldGhvZHMgb2YgdXBkYXRlIGFuZFxu
XHQgICAqIHBlcmZvcm1zIHVwZGF0ZS5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RFbGVt
ZW50fSBuZXh0RWxlbWVudCBOZXh0IGVsZW1lbnRcblx0ICAgKiBAcGFyYW0ge29iamVjdH0gbmV4
dFByb3BzIE5leHQgcHVibGljIG9iamVjdCB0byBzZXQgYXMgcHJvcGVydGllcy5cblx0ICAgKiBA
cGFyYW0gez9vYmplY3R9IG5leHRTdGF0ZSBOZXh0IG9iamVjdCB0byBzZXQgYXMgc3RhdGUuXG5c
dCAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0Q29udGV4dCBOZXh0IHB1YmxpYyBvYmplY3QgdG8g
c2V0IGFzIGNvbnRleHQuXG5cdCAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9u
fSB0cmFuc2FjdGlvblxuXHQgICAqIEBwYXJhbSB7P29iamVjdH0gdW5tYXNrZWRDb250ZXh0XG5c
dCAgICogQHByaXZhdGVcblx0ICAgKi9cblx0ICBfcGVyZm9ybUNvbXBvbmVudFVwZGF0ZTogZnVu
Y3Rpb24gKG5leHRFbGVtZW50LCBuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQsIHRy
YW5zYWN0aW9uLCB1bm1hc2tlZENvbnRleHQpIHtcblx0ICAgIHZhciBfdGhpczIgPSB0aGlzO1xu
XHRcblx0ICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7XG5cdFxuXHQgICAgdmFyIGhhc0Nv
bXBvbmVudERpZFVwZGF0ZSA9IEJvb2xlYW4oaW5zdC5jb21wb25lbnREaWRVcGRhdGUpO1xuXHQg
ICAgdmFyIHByZXZQcm9wcztcblx0ICAgIHZhciBwcmV2U3RhdGU7XG5cdCAgICB2YXIgcHJldkNv
bnRleHQ7XG5cdCAgICBpZiAoaGFzQ29tcG9uZW50RGlkVXBkYXRlKSB7XG5cdCAgICAgIHByZXZQ
cm9wcyA9IGluc3QucHJvcHM7XG5cdCAgICAgIHByZXZTdGF0ZSA9IGluc3Quc3RhdGU7XG5cdCAg
ICAgIHByZXZDb250ZXh0ID0gaW5zdC5jb250ZXh0O1xuXHQgICAgfVxuXHRcblx0ICAgIGlmIChp
bnN0LmNvbXBvbmVudFdpbGxVcGRhdGUpIHtcblx0ICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAg
ICAgbWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgICAgcmV0dXJu
IGluc3QuY29tcG9uZW50V2lsbFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRl
eHQpO1xuXHQgICAgICAgIH0sIHRoaXMuX2RlYnVnSUQsICdjb21wb25lbnRXaWxsVXBkYXRlJyk7
XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgaW5zdC5jb21wb25lbnRXaWxsVXBkYXRlKG5l
eHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0
XG5cdCAgICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IG5leHRFbGVtZW50O1xuXHQgICAgdGhpcy5f
Y29udGV4dCA9IHVubWFza2VkQ29udGV4dDtcblx0ICAgIGluc3QucHJvcHMgPSBuZXh0UHJvcHM7
XG5cdCAgICBpbnN0LnN0YXRlID0gbmV4dFN0YXRlO1xuXHQgICAgaW5zdC5jb250ZXh0ID0gbmV4
dENvbnRleHQ7XG5cdFxuXHQgICAgdGhpcy5fdXBkYXRlUmVuZGVyZWRDb21wb25lbnQodHJhbnNh
Y3Rpb24sIHVubWFza2VkQ29udGV4dCk7XG5cdFxuXHQgICAgaWYgKGhhc0NvbXBvbmVudERpZFVw
ZGF0ZSkge1xuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICB0cmFuc2FjdGlvbi5nZXRS
ZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGZ1bmN0aW9uICgpIHtcblx0ICAgICAgICAgIG1lYXN1
cmVMaWZlQ3ljbGVQZXJmKGluc3QuY29tcG9uZW50RGlkVXBkYXRlLmJpbmQoaW5zdCwgcHJldlBy
b3BzLCBwcmV2U3RhdGUsIHByZXZDb250ZXh0KSwgX3RoaXMyLl9kZWJ1Z0lELCAnY29tcG9uZW50
RGlkVXBkYXRlJyk7XG5cdCAgICAgICAgfSk7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAg
dHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShpbnN0LmNvbXBvbmVudERp
ZFVwZGF0ZS5iaW5kKGluc3QsIHByZXZQcm9wcywgcHJldlN0YXRlLCBwcmV2Q29udGV4dCksIGlu
c3QpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogQ2Fs
bCB0aGUgY29tcG9uZW50J3MgYHJlbmRlcmAgbWV0aG9kIGFuZCB1cGRhdGUgdGhlIERPTSBhY2Nv
cmRpbmdseS5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlv
bn0gdHJhbnNhY3Rpb25cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICBfdXBkYXRlUmVu
ZGVyZWRDb21wb25lbnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuXHQgICAg
dmFyIHByZXZDb21wb25lbnRJbnN0YW5jZSA9IHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50O1xuXHQg
ICAgdmFyIHByZXZSZW5kZXJlZEVsZW1lbnQgPSBwcmV2Q29tcG9uZW50SW5zdGFuY2UuX2N1cnJl
bnRFbGVtZW50O1xuXHQgICAgdmFyIG5leHRSZW5kZXJlZEVsZW1lbnQgPSB0aGlzLl9yZW5kZXJW
YWxpZGF0ZWRDb21wb25lbnQoKTtcblx0XG5cdCAgICB2YXIgZGVidWdJRCA9IDA7XG5cdCAgICBp
ZiAoZmFsc2UpIHtcblx0ICAgICAgZGVidWdJRCA9IHRoaXMuX2RlYnVnSUQ7XG5cdCAgICB9XG5c
dFxuXHQgICAgaWYgKHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50KHByZXZSZW5kZXJlZEVsZW1l
bnQsIG5leHRSZW5kZXJlZEVsZW1lbnQpKSB7XG5cdCAgICAgIFJlYWN0UmVjb25jaWxlci5yZWNl
aXZlQ29tcG9uZW50KHByZXZDb21wb25lbnRJbnN0YW5jZSwgbmV4dFJlbmRlcmVkRWxlbWVudCwg
dHJhbnNhY3Rpb24sIHRoaXMuX3Byb2Nlc3NDaGlsZENvbnRleHQoY29udGV4dCkpO1xuXHQgICAg
fSBlbHNlIHtcblx0ICAgICAgdmFyIG9sZEhvc3ROb2RlID0gUmVhY3RSZWNvbmNpbGVyLmdldEhv
c3ROb2RlKHByZXZDb21wb25lbnRJbnN0YW5jZSk7XG5cdCAgICAgIFJlYWN0UmVjb25jaWxlci51
bm1vdW50Q29tcG9uZW50KHByZXZDb21wb25lbnRJbnN0YW5jZSwgZmFsc2UpO1xuXHRcblx0ICAg
ICAgdmFyIG5vZGVUeXBlID0gUmVhY3ROb2RlVHlwZXMuZ2V0VHlwZShuZXh0UmVuZGVyZWRFbGVt
ZW50KTtcblx0ICAgICAgdGhpcy5fcmVuZGVyZWROb2RlVHlwZSA9IG5vZGVUeXBlO1xuXHQgICAg
ICB2YXIgY2hpbGQgPSB0aGlzLl9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KG5leHRSZW5kZXJl
ZEVsZW1lbnQsIG5vZGVUeXBlICE9PSBSZWFjdE5vZGVUeXBlcy5FTVBUWSAvKiBzaG91bGRIYXZl
RGVidWdJRCAqL1xuXHQgICAgICApO1xuXHQgICAgICB0aGlzLl9yZW5kZXJlZENvbXBvbmVudCA9
IGNoaWxkO1xuXHRcblx0ICAgICAgdmFyIG5leHRNYXJrdXAgPSBSZWFjdFJlY29uY2lsZXIubW91
bnRDb21wb25lbnQoY2hpbGQsIHRyYW5zYWN0aW9uLCB0aGlzLl9ob3N0UGFyZW50LCB0aGlzLl9o
b3N0Q29udGFpbmVySW5mbywgdGhpcy5fcHJvY2Vzc0NoaWxkQ29udGV4dChjb250ZXh0KSwgZGVi
dWdJRCk7XG5cdFxuXHQgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICBpZiAoZGVidWdJRCAh
PT0gMCkge1xuXHQgICAgICAgICAgdmFyIGNoaWxkRGVidWdJRHMgPSBjaGlsZC5fZGVidWdJRCAh
PT0gMCA/IFtjaGlsZC5fZGVidWdJRF0gOiBbXTtcblx0ICAgICAgICAgIFJlYWN0SW5zdHJ1bWVu
dGF0aW9uLmRlYnVnVG9vbC5vblNldENoaWxkcmVuKGRlYnVnSUQsIGNoaWxkRGVidWdJRHMpO1xu
XHQgICAgICAgIH1cblx0ICAgICAgfVxuXHRcblx0ICAgICAgdGhpcy5fcmVwbGFjZU5vZGVXaXRo
TWFya3VwKG9sZEhvc3ROb2RlLCBuZXh0TWFya3VwLCBwcmV2Q29tcG9uZW50SW5zdGFuY2UpO1xu
XHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIE92ZXJyaWRkZW4gaW4gc2hhbGxv
dyByZW5kZXJpbmcuXG5cdCAgICpcblx0ICAgKiBAcHJvdGVjdGVkXG5cdCAgICovXG5cdCAgX3Jl
cGxhY2VOb2RlV2l0aE1hcmt1cDogZnVuY3Rpb24gKG9sZEhvc3ROb2RlLCBuZXh0TWFya3VwLCBw
cmV2SW5zdGFuY2UpIHtcblx0ICAgIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQucmVwbGFjZU5v
ZGVXaXRoTWFya3VwKG9sZEhvc3ROb2RlLCBuZXh0TWFya3VwLCBwcmV2SW5zdGFuY2UpO1xuXHQg
IH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEBwcm90ZWN0ZWRcblx0ICAgKi9cblx0ICBfcmVuZGVy
VmFsaWRhdGVkQ29tcG9uZW50V2l0aG91dE93bmVyT3JDb250ZXh0OiBmdW5jdGlvbiAoKSB7XG5c
dCAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlO1xuXHQgICAgdmFyIHJlbmRlcmVkRWxlbWVu
dDtcblx0XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgcmVuZGVyZWRFbGVtZW50ID0gbWVh
c3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rpb24gKCkge1xuXHQgICAgICAgIHJldHVybiBpbnN0LnJl
bmRlcigpO1xuXHQgICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAncmVuZGVyJyk7XG5cdCAgICB9IGVs
c2Uge1xuXHQgICAgICByZW5kZXJlZEVsZW1lbnQgPSBpbnN0LnJlbmRlcigpO1xuXHQgICAgfVxu
XHRcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAvLyBXZSBhbGxvdyBhdXRvLW1vY2tzIHRv
IHByb2NlZWQgYXMgaWYgdGhleSdyZSByZXR1cm5pbmcgbnVsbC5cblx0ICAgICAgaWYgKHJlbmRl
cmVkRWxlbWVudCA9PT0gdW5kZWZpbmVkICYmIGluc3QucmVuZGVyLl9pc01vY2tGdW5jdGlvbikg
e1xuXHQgICAgICAgIC8vIFRoaXMgaXMgcHJvYmFibHkgYmFkIHByYWN0aWNlLiBDb25zaWRlciB3
YXJuaW5nIGhlcmUgYW5kXG5cdCAgICAgICAgLy8gZGVwcmVjYXRpbmcgdGhpcyBjb252ZW5pZW5j
ZS5cblx0ICAgICAgICByZW5kZXJlZEVsZW1lbnQgPSBudWxsO1xuXHQgICAgICB9XG5cdCAgICB9
XG5cdFxuXHQgICAgcmV0dXJuIHJlbmRlcmVkRWxlbWVudDtcblx0ICB9LFxuXHRcblx0ICAvKipc
blx0ICAgKiBAcHJpdmF0ZVxuXHQgICAqL1xuXHQgIF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQ6
IGZ1bmN0aW9uICgpIHtcblx0ICAgIHZhciByZW5kZXJlZEVsZW1lbnQ7XG5cdCAgICBpZiAoKFwi
cHJvZHVjdGlvblwiKSAhPT0gJ3Byb2R1Y3Rpb24nIHx8IHRoaXMuX2NvbXBvc2l0ZVR5cGUgIT09
IENvbXBvc2l0ZVR5cGVzLlN0YXRlbGVzc0Z1bmN0aW9uYWwpIHtcblx0ICAgICAgUmVhY3RDdXJy
ZW50T3duZXIuY3VycmVudCA9IHRoaXM7XG5cdCAgICAgIHRyeSB7XG5cdCAgICAgICAgcmVuZGVy
ZWRFbGVtZW50ID0gdGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50V2l0aG91dE93bmVyT3JD
b250ZXh0KCk7XG5cdCAgICAgIH0gZmluYWxseSB7XG5cdCAgICAgICAgUmVhY3RDdXJyZW50T3du
ZXIuY3VycmVudCA9IG51bGw7XG5cdCAgICAgIH1cblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHJl
bmRlcmVkRWxlbWVudCA9IHRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudFdpdGhvdXRPd25l
ck9yQ29udGV4dCgpO1xuXHQgICAgfVxuXHQgICAgIShcblx0ICAgIC8vIFRPRE86IEFuIGBpc1Zh
bGlkTm9kZWAgZnVuY3Rpb24gd291bGQgcHJvYmFibHkgYmUgbW9yZSBhcHByb3ByaWF0ZVxuXHQg
ICAgcmVuZGVyZWRFbGVtZW50ID09PSBudWxsIHx8IHJlbmRlcmVkRWxlbWVudCA9PT0gZmFsc2Ug
fHwgUmVhY3QuaXNWYWxpZEVsZW1lbnQocmVuZGVyZWRFbGVtZW50KSkgPyAgZmFsc2UgPyBpbnZh
cmlhbnQoZmFsc2UsICclcy5yZW5kZXIoKTogQSB2YWxpZCBSZWFjdCBlbGVtZW50IChvciBudWxs
KSBtdXN0IGJlIHJldHVybmVkLiBZb3UgbWF5IGhhdmUgcmV0dXJuZWQgdW5kZWZpbmVkLCBhbiBh
cnJheSBvciBzb21lIG90aGVyIGludmFsaWQgb2JqZWN0LicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdS
ZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogX3Byb2RJbnZhcmlhbnQoJzEwOScsIHRoaXMuZ2V0
TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwO1xuXHRcblx0ICAg
IHJldHVybiByZW5kZXJlZEVsZW1lbnQ7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogTGF6
aWx5IGFsbG9jYXRlcyB0aGUgcmVmcyBvYmplY3QgYW5kIHN0b3JlcyBgY29tcG9uZW50YCBhcyBg
cmVmYC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7c3RyaW5nfSByZWYgUmVmZXJlbmNlIG5hbWUu
XG5cdCAgICogQHBhcmFtIHtjb21wb25lbnR9IGNvbXBvbmVudCBDb21wb25lbnQgdG8gc3RvcmUg
YXMgYHJlZmAuXG5cdCAgICogQGZpbmFsXG5cdCAgICogQHByaXZhdGVcblx0ICAgKi9cblx0ICBh
dHRhY2hSZWY6IGZ1bmN0aW9uIChyZWYsIGNvbXBvbmVudCkge1xuXHQgICAgdmFyIGluc3QgPSB0
aGlzLmdldFB1YmxpY0luc3RhbmNlKCk7XG5cdCAgICAhKGluc3QgIT0gbnVsbCkgPyAgZmFsc2Ug
PyBpbnZhcmlhbnQoZmFsc2UsICdTdGF0ZWxlc3MgZnVuY3Rpb24gY29tcG9uZW50cyBjYW5ub3Qg
aGF2ZSByZWZzLicpIDogX3Byb2RJbnZhcmlhbnQoJzExMCcpIDogdm9pZCAwO1xuXHQgICAgdmFy
IHB1YmxpY0NvbXBvbmVudEluc3RhbmNlID0gY29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCk7
XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgdmFyIGNvbXBvbmVudE5hbWUgPSBjb21wb25l
bnQgJiYgY29tcG9uZW50LmdldE5hbWUgPyBjb21wb25lbnQuZ2V0TmFtZSgpIDogJ2EgY29tcG9u
ZW50Jztcblx0ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdh
cm5pbmcocHVibGljQ29tcG9uZW50SW5zdGFuY2UgIT0gbnVsbCB8fCBjb21wb25lbnQuX2NvbXBv
c2l0ZVR5cGUgIT09IENvbXBvc2l0ZVR5cGVzLlN0YXRlbGVzc0Z1bmN0aW9uYWwsICdTdGF0ZWxl
c3MgZnVuY3Rpb24gY29tcG9uZW50cyBjYW5ub3QgYmUgZ2l2ZW4gcmVmcyAnICsgJyhTZWUgcmVm
IFwiJXNcIiBpbiAlcyBjcmVhdGVkIGJ5ICVzKS4gJyArICdBdHRlbXB0cyB0byBhY2Nlc3MgdGhp
cyByZWYgd2lsbCBmYWlsLicsIHJlZiwgY29tcG9uZW50TmFtZSwgdGhpcy5nZXROYW1lKCkpIDog
dm9pZCAwO1xuXHQgICAgfVxuXHQgICAgdmFyIHJlZnMgPSBpbnN0LnJlZnMgPT09IGVtcHR5T2Jq
ZWN0ID8gaW5zdC5yZWZzID0ge30gOiBpbnN0LnJlZnM7XG5cdCAgICByZWZzW3JlZl0gPSBwdWJs
aWNDb21wb25lbnRJbnN0YW5jZTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBEZXRhY2hl
cyBhIHJlZmVyZW5jZSBuYW1lLlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtzdHJpbmd9IHJlZiBO
YW1lIHRvIGRlcmVmZXJlbmNlLlxuXHQgICAqIEBmaW5hbFxuXHQgICAqIEBwcml2YXRlXG5cdCAg
ICovXG5cdCAgZGV0YWNoUmVmOiBmdW5jdGlvbiAocmVmKSB7XG5cdCAgICB2YXIgcmVmcyA9IHRo
aXMuZ2V0UHVibGljSW5zdGFuY2UoKS5yZWZzO1xuXHQgICAgZGVsZXRlIHJlZnNbcmVmXTtcblx0
ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBHZXQgYSB0ZXh0IGRlc2NyaXB0aW9uIG9mIHRoZSBj
b21wb25lbnQgdGhhdCBjYW4gYmUgdXNlZCB0byBpZGVudGlmeSBpdFxuXHQgICAqIGluIGVycm9y
IG1lc3NhZ2VzLlxuXHQgICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIG5hbWUgb3IgbnVsbC5cblx0
ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICBnZXROYW1lOiBmdW5jdGlvbiAoKSB7XG5cdCAg
ICB2YXIgdHlwZSA9IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG5cdCAgICB2YXIgY29uc3Ry
dWN0b3IgPSB0aGlzLl9pbnN0YW5jZSAmJiB0aGlzLl9pbnN0YW5jZS5jb25zdHJ1Y3Rvcjtcblx0
ICAgIHJldHVybiB0eXBlLmRpc3BsYXlOYW1lIHx8IGNvbnN0cnVjdG9yICYmIGNvbnN0cnVjdG9y
LmRpc3BsYXlOYW1lIHx8IHR5cGUubmFtZSB8fCBjb25zdHJ1Y3RvciAmJiBjb25zdHJ1Y3Rvci5u
YW1lIHx8IG51bGw7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogR2V0IHRoZSBwdWJsaWNs
eSBhY2Nlc3NpYmxlIHJlcHJlc2VudGF0aW9uIG9mIHRoaXMgY29tcG9uZW50IC0gaS5lLiB3aGF0
XG5cdCAgICogaXMgZXhwb3NlZCBieSByZWZzIGFuZCByZXR1cm5lZCBieSByZW5kZXIuIENhbiBi
ZSBudWxsIGZvciBzdGF0ZWxlc3Ncblx0ICAgKiBjb21wb25lbnRzLlxuXHQgICAqXG5cdCAgICog
QHJldHVybiB7UmVhY3RDb21wb25lbnR9IHRoZSBwdWJsaWMgY29tcG9uZW50IGluc3RhbmNlLlxu
XHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIGdldFB1YmxpY0luc3RhbmNlOiBmdW5jdGlv
biAoKSB7XG5cdCAgICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlO1xuXHQgICAgaWYgKHRoaXMu
X2NvbXBvc2l0ZVR5cGUgPT09IENvbXBvc2l0ZVR5cGVzLlN0YXRlbGVzc0Z1bmN0aW9uYWwpIHtc
blx0ICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gaW5zdDtcblx0ICB9
LFxuXHRcblx0ICAvLyBTdHViXG5cdCAgX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQ6IG51bGxc
blx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RDb21wb3NpdGVDb21wb25lbnQ7XG5c
bi8qKiovIH0sXG4vKiAxMzcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193
ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuXHQgKlxuXHQgKi9cblx0XG5cdC8qIGdsb2JhbHMgX19SRUFDVF9ERVZUT09MU19HTE9CQUxf
SE9PS19fKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBSZWFjdERPTUNvbXBvbmVu
dFRyZWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuXHR2YXIgUmVhY3REZWZhdWx0SW5qZWN0
aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNTApO1xuXHR2YXIgUmVhY3RNb3VudCA9IF9fd2Vi
cGFja19yZXF1aXJlX18oNjcpO1xuXHR2YXIgUmVhY3RSZWNvbmNpbGVyID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxNik7XG5cdHZhciBSZWFjdFVwZGF0ZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkp
O1xuXHR2YXIgUmVhY3RWZXJzaW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNjMpO1xuXHRcblx0
dmFyIGZpbmRET01Ob2RlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNzkpO1xuXHR2YXIgZ2V0SG9z
dENvbXBvbmVudEZyb21Db21wb3NpdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDcyKTtcblx0dmFy
IHJlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxODYpO1xu
XHR2YXIgd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cdFxuXHRSZWFjdERlZmF1
bHRJbmplY3Rpb24uaW5qZWN0KCk7XG5cdFxuXHR2YXIgUmVhY3RET00gPSB7XG5cdCAgZmluZERP
TU5vZGU6IGZpbmRET01Ob2RlLFxuXHQgIHJlbmRlcjogUmVhY3RNb3VudC5yZW5kZXIsXG5cdCAg
dW5tb3VudENvbXBvbmVudEF0Tm9kZTogUmVhY3RNb3VudC51bm1vdW50Q29tcG9uZW50QXROb2Rl
LFxuXHQgIHZlcnNpb246IFJlYWN0VmVyc2lvbixcblx0XG5cdCAgLyogZXNsaW50LWRpc2FibGUg
Y2FtZWxjYXNlICovXG5cdCAgdW5zdGFibGVfYmF0Y2hlZFVwZGF0ZXM6IFJlYWN0VXBkYXRlcy5i
YXRjaGVkVXBkYXRlcyxcblx0ICB1bnN0YWJsZV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjog
cmVuZGVyU3VidHJlZUludG9Db250YWluZXJcblx0ICAvKiBlc2xpbnQtZW5hYmxlIGNhbWVsY2Fz
ZSAqL1xuXHR9O1xuXHRcblx0Ly8gSW5qZWN0IHRoZSBydW50aW1lIGludG8gYSBkZXZ0b29scyBn
bG9iYWwgaG9vayByZWdhcmRsZXNzIG9mIGJyb3dzZXIuXG5cdC8vIEFsbG93cyBmb3IgZGVidWdn
aW5nIHdoZW4gdGhlIGhvb2sgaXMgaW5qZWN0ZWQgb24gdGhlIHBhZ2UuXG5cdGlmICh0eXBlb2Yg
X19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2Yg
X19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmluamVjdCA9PT0gJ2Z1bmN0aW9uJykge1xu
XHQgIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXy5pbmplY3Qoe1xuXHQgICAgQ29tcG9u
ZW50VHJlZToge1xuXHQgICAgICBnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZTogUmVhY3RET01D
b21wb25lbnRUcmVlLmdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlLFxuXHQgICAgICBnZXROb2Rl
RnJvbUluc3RhbmNlOiBmdW5jdGlvbiAoaW5zdCkge1xuXHQgICAgICAgIC8vIGluc3QgaXMgYW4g
aW50ZXJuYWwgaW5zdGFuY2UgKGJ1dCBjb3VsZCBiZSBhIGNvbXBvc2l0ZSlcblx0ICAgICAgICBp
ZiAoaW5zdC5fcmVuZGVyZWRDb21wb25lbnQpIHtcblx0ICAgICAgICAgIGluc3QgPSBnZXRIb3N0
Q29tcG9uZW50RnJvbUNvbXBvc2l0ZShpbnN0KTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgaWYg
KGluc3QpIHtcblx0ICAgICAgICAgIHJldHVybiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9k
ZUZyb21JbnN0YW5jZShpbnN0KTtcblx0ICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgcmV0
dXJuIG51bGw7XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9LFxuXHQgICAgTW91bnQ6
IFJlYWN0TW91bnQsXG5cdCAgICBSZWNvbmNpbGVyOiBSZWFjdFJlY29uY2lsZXJcblx0ICB9KTtc
blx0fVxuXHRcblx0aWYgKGZhbHNlKSB7XG5cdCAgdmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0g
cmVxdWlyZSgnZmJqcy9saWIvRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcblx0ICBpZiAoRXhlY3V0
aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYmIHdpbmRvdy50b3AgPT09IHdpbmRvdy5zZWxmKSB7
XG5cdCAgICAvLyBGaXJzdCBjaGVjayBpZiBkZXZ0b29scyBpcyBub3QgaW5zdGFsbGVkXG5cdCAg
ICBpZiAodHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyA9PT0gJ3VuZGVmaW5l
ZCcpIHtcblx0ICAgICAgLy8gSWYgd2UncmUgaW4gQ2hyb21lIG9yIEZpcmVmb3gsIHByb3ZpZGUg
YSBkb3dubG9hZCBsaW5rIGlmIG5vdCBpbnN0YWxsZWQuXG5cdCAgICAgIGlmIChuYXZpZ2F0b3Iu
dXNlckFnZW50LmluZGV4T2YoJ0Nocm9tZScpID4gLTEgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC5p
bmRleE9mKCdFZGdlJykgPT09IC0xIHx8IG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignRmly
ZWZveCcpID4gLTEpIHtcblx0ICAgICAgICAvLyBGaXJlZm94IGRvZXMgbm90IGhhdmUgdGhlIGlz
c3VlIHdpdGggZGV2dG9vbHMgbG9hZGVkIG92ZXIgZmlsZTovL1xuXHQgICAgICAgIHZhciBzaG93
RmlsZVVybE1lc3NhZ2UgPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wuaW5kZXhPZignaHR0cCcp
ID09PSAtMSAmJiBuYXZpZ2F0b3IudXNlckFnZW50LmluZGV4T2YoJ0ZpcmVmb3gnKSA9PT0gLTE7
XG5cdCAgICAgICAgY29uc29sZS5kZWJ1ZygnRG93bmxvYWQgdGhlIFJlYWN0IERldlRvb2xzICcg
KyAoc2hvd0ZpbGVVcmxNZXNzYWdlID8gJ2FuZCB1c2UgYW4gSFRUUCBzZXJ2ZXIgKGluc3RlYWQg
b2YgYSBmaWxlOiBVUkwpICcgOiAnJykgKyAnZm9yIGEgYmV0dGVyIGRldmVsb3BtZW50IGV4cGVy
aWVuY2U6ICcgKyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC1kZXZ0b29scycpO1xuXHQgICAgICB9XG5c
dCAgICB9XG5cdFxuXHQgICAgdmFyIHRlc3RGdW5jID0gZnVuY3Rpb24gdGVzdEZuKCkge307XG5c
dCAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZygodGVz
dEZ1bmMubmFtZSB8fCB0ZXN0RnVuYy50b1N0cmluZygpKS5pbmRleE9mKCd0ZXN0Rm4nKSAhPT0g
LTEsIFwiSXQgbG9va3MgbGlrZSB5b3UncmUgdXNpbmcgYSBtaW5pZmllZCBjb3B5IG9mIHRoZSBk
ZXZlbG9wbWVudCBidWlsZCBcIiArICdvZiBSZWFjdC4gV2hlbiBkZXBsb3lpbmcgUmVhY3QgYXBw
cyB0byBwcm9kdWN0aW9uLCBtYWtlIHN1cmUgdG8gdXNlICcgKyAndGhlIHByb2R1Y3Rpb24gYnVp
bGQgd2hpY2ggc2tpcHMgZGV2ZWxvcG1lbnQgd2FybmluZ3MgYW5kIGlzIGZhc3Rlci4gJyArICdT
ZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC1taW5pZmljYXRpb24gZm9yIG1vcmUgZGV0YWlscy4nKSA6
IHZvaWQgMDtcblx0XG5cdCAgICAvLyBJZiB3ZSdyZSBpbiBJRTgsIGNoZWNrIHRvIHNlZSBpZiB3
ZSBhcmUgaW4gY29tcGF0aWJpbGl0eSBtb2RlIGFuZCBwcm92aWRlXG5cdCAgICAvLyBpbmZvcm1h
dGlvbiBvbiBwcmV2ZW50aW5nIGNvbXBhdGliaWxpdHkgbW9kZVxuXHQgICAgdmFyIGllQ29tcGF0
aWJpbGl0eU1vZGUgPSBkb2N1bWVudC5kb2N1bWVudE1vZGUgJiYgZG9jdW1lbnQuZG9jdW1lbnRN
b2RlIDwgODtcblx0XG5cdCAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ID8gd2FybmluZyghaWVDb21wYXRpYmlsaXR5TW9kZSwgJ0ludGVybmV0IEV4cGxvcmVyIGlzIHJ1
bm5pbmcgaW4gY29tcGF0aWJpbGl0eSBtb2RlOyBwbGVhc2UgYWRkIHRoZSAnICsgJ2ZvbGxvd2lu
ZyB0YWcgdG8geW91ciBIVE1MIHRvIHByZXZlbnQgdGhpcyBmcm9tIGhhcHBlbmluZzogJyArICc8
bWV0YSBodHRwLWVxdWl2PVwiWC1VQS1Db21wYXRpYmxlXCIgY29udGVudD1cIklFPWVkZ2VcIiAv
PicpIDogdm9pZCAwO1xuXHRcblx0ICAgIHZhciBleHBlY3RlZEZlYXR1cmVzID0gW1xuXHQgICAg
Ly8gc2hpbXNcblx0ICAgIEFycmF5LmlzQXJyYXksIEFycmF5LnByb3RvdHlwZS5ldmVyeSwgQXJy
YXkucHJvdG90eXBlLmZvckVhY2gsIEFycmF5LnByb3RvdHlwZS5pbmRleE9mLCBBcnJheS5wcm90
b3R5cGUubWFwLCBEYXRlLm5vdywgRnVuY3Rpb24ucHJvdG90eXBlLmJpbmQsIE9iamVjdC5rZXlz
LCBTdHJpbmcucHJvdG90eXBlLnRyaW1dO1xuXHRcblx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
ZXhwZWN0ZWRGZWF0dXJlcy5sZW5ndGg7IGkrKykge1xuXHQgICAgICBpZiAoIWV4cGVjdGVkRmVh
dHVyZXNbaV0pIHtcblx0ICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gd2FybmluZyhmYWxzZSwgJ09uZSBvciBtb3JlIEVTNSBzaGltcyBleHBlY3RlZCBieSBS
ZWFjdCBhcmUgbm90IGF2YWlsYWJsZTogJyArICdodHRwczovL2ZiLm1lL3JlYWN0LXdhcm5pbmct
cG9seWZpbGxzJykgOiB2b2lkIDA7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIH1cblx0ICAg
IH1cblx0ICB9XG5cdH1cblx0XG5cdGlmIChmYWxzZSkge1xuXHQgIHZhciBSZWFjdEluc3RydW1l
bnRhdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0cnVtZW50YXRpb24nKTtcblx0ICB2YXIgUmVh
Y3RET01Vbmtub3duUHJvcGVydHlIb29rID0gcmVxdWlyZSgnLi9SZWFjdERPTVVua25vd25Qcm9w
ZXJ0eUhvb2snKTtcblx0ICB2YXIgUmVhY3RET01OdWxsSW5wdXRWYWx1ZVByb3BIb29rID0gcmVx
dWlyZSgnLi9SZWFjdERPTU51bGxJbnB1dFZhbHVlUHJvcEhvb2snKTtcblx0ICB2YXIgUmVhY3RE
T01JbnZhbGlkQVJJQUhvb2sgPSByZXF1aXJlKCcuL1JlYWN0RE9NSW52YWxpZEFSSUFIb29rJyk7
XG5cdFxuXHQgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5hZGRIb29rKFJlYWN0RE9N
VW5rbm93blByb3BlcnR5SG9vayk7XG5cdCAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29s
LmFkZEhvb2soUmVhY3RET01OdWxsSW5wdXRWYWx1ZVByb3BIb29rKTtcblx0ICBSZWFjdEluc3Ry
dW1lbnRhdGlvbi5kZWJ1Z1Rvb2wuYWRkSG9vayhSZWFjdERPTUludmFsaWRBUklBSG9vayk7XG5c
dH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RET007XG5cbi8qKiovIH0sXG4vKiAxMzgg
Ki9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykg
e1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
XHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0
XG5cdC8qIGdsb2JhbCBoYXNPd25Qcm9wZXJ0eTp0cnVlICovXG5cdFxuXHQndXNlIHN0cmljdCc7
XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpLFxuXHQg
ICAgX2Fzc2lnbiA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdFxuXHR2YXIgQXV0b0ZvY3Vz
VXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyNSk7XG5cdHZhciBDU1NQcm9wZXJ0eU9wZXJh
dGlvbnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyNyk7XG5cdHZhciBET01MYXp5VHJlZSA9IF9f
d2VicGFja19yZXF1aXJlX18oMTQpO1xuXHR2YXIgRE9NTmFtZXNwYWNlcyA9IF9fd2VicGFja19y
ZXF1aXJlX18oMzUpO1xuXHR2YXIgRE9NUHJvcGVydHkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1
KTtcblx0dmFyIERPTVByb3BlcnR5T3BlcmF0aW9ucyA9IF9fd2VicGFja19yZXF1aXJlX18oNjAp
O1xuXHR2YXIgRXZlbnRQbHVnaW5IdWIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5KTtcblx0dmFy
IEV2ZW50UGx1Z2luUmVnaXN0cnkgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM2KTtcblx0dmFyIFJl
YWN0QnJvd3NlckV2ZW50RW1pdHRlciA9IF9fd2VicGFja19yZXF1aXJlX18oMjUpO1xuXHR2YXIg
UmVhY3RET01Db21wb25lbnRGbGFncyA9IF9fd2VicGFja19yZXF1aXJlX18oNjEpO1xuXHR2YXIg
UmVhY3RET01Db21wb25lbnRUcmVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblx0dmFyIFJl
YWN0RE9NSW5wdXQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0Myk7XG5cdHZhciBSZWFjdERPTU9w
dGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oMTQ0KTtcblx0dmFyIFJlYWN0RE9NU2VsZWN0ID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg2Mik7XG5cdHZhciBSZWFjdERPTVRleHRhcmVhID0gX193ZWJw
YWNrX3JlcXVpcmVfXygxNDcpO1xuXHR2YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDgpO1xuXHR2YXIgUmVhY3RNdWx0aUNoaWxkID0gX193ZWJwYWNrX3JlcXVp
cmVfXygxNTYpO1xuXHR2YXIgUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbiA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMTYxKTtcblx0XG5cdHZhciBlbXB0eUZ1bmN0aW9uID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg3KTtcblx0dmFyIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlciA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMjgpO1xuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVf
XygxKTtcblx0dmFyIGlzRXZlbnRTdXBwb3J0ZWQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ3KTtc
blx0dmFyIHNoYWxsb3dFcXVhbCA9IF9fd2VicGFja19yZXF1aXJlX18oMzIpO1xuXHR2YXIgaW5w
dXRWYWx1ZVRyYWNraW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3NCk7XG5cdHZhciB2YWxpZGF0
ZURPTU5lc3RpbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ5KTtcblx0dmFyIHdhcm5pbmcgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHRcblx0dmFyIEZsYWdzID0gUmVhY3RET01Db21wb25l
bnRGbGFncztcblx0dmFyIGRlbGV0ZUxpc3RlbmVyID0gRXZlbnRQbHVnaW5IdWIuZGVsZXRlTGlz
dGVuZXI7XG5cdHZhciBnZXROb2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9t
SW5zdGFuY2U7XG5cdHZhciBsaXN0ZW5UbyA9IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5saXN0
ZW5Ubztcblx0dmFyIHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzID0gRXZlbnRQbHVnaW5SZWdpc3Ry
eS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlcztcblx0XG5cdC8vIEZvciBxdWlja2x5IG1hdGNoaW5n
IGNoaWxkcmVuIHR5cGUsIHRvIHRlc3QgaWYgY2FuIGJlIHRyZWF0ZWQgYXMgY29udGVudC5cblx0
dmFyIENPTlRFTlRfVFlQRVMgPSB7IHN0cmluZzogdHJ1ZSwgbnVtYmVyOiB0cnVlIH07XG5cdFxu
XHR2YXIgU1RZTEUgPSAnc3R5bGUnO1xuXHR2YXIgSFRNTCA9ICdfX2h0bWwnO1xuXHR2YXIgUkVT
RVJWRURfUFJPUFMgPSB7XG5cdCAgY2hpbGRyZW46IG51bGwsXG5cdCAgZGFuZ2Vyb3VzbHlTZXRJ
bm5lckhUTUw6IG51bGwsXG5cdCAgc3VwcHJlc3NDb250ZW50RWRpdGFibGVXYXJuaW5nOiBudWxs
XG5cdH07XG5cdFxuXHQvLyBOb2RlIHR5cGUgZm9yIGRvY3VtZW50IGZyYWdtZW50cyAoTm9kZS5E
T0NVTUVOVF9GUkFHTUVOVF9OT0RFKS5cblx0dmFyIERPQ19GUkFHTUVOVF9UWVBFID0gMTE7XG5c
dFxuXHRmdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0oaW50ZXJuYWxJbnN0YW5j
ZSkge1xuXHQgIGlmIChpbnRlcm5hbEluc3RhbmNlKSB7XG5cdCAgICB2YXIgb3duZXIgPSBpbnRl
cm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5fb3duZXIgfHwgbnVsbDtcblx0ICAgIGlmIChv
d25lcikge1xuXHQgICAgICB2YXIgbmFtZSA9IG93bmVyLmdldE5hbWUoKTtcblx0ICAgICAgaWYg
KG5hbWUpIHtcblx0ICAgICAgICByZXR1cm4gJyBUaGlzIERPTSBub2RlIHdhcyByZW5kZXJlZCBi
eSBgJyArIG5hbWUgKyAnYC4nO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgfVxuXHQgIHJldHVy
biAnJztcblx0fVxuXHRcblx0ZnVuY3Rpb24gZnJpZW5kbHlTdHJpbmdpZnkob2JqKSB7XG5cdCAg
aWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnKSB7XG5cdCAgICBpZiAoQXJyYXkuaXNBcnJheShv
YmopKSB7XG5cdCAgICAgIHJldHVybiAnWycgKyBvYmoubWFwKGZyaWVuZGx5U3RyaW5naWZ5KS5q
b2luKCcsICcpICsgJ10nO1xuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgdmFyIHBhaXJzID0gW107
XG5cdCAgICAgIGZvciAodmFyIGtleSBpbiBvYmopIHtcblx0ICAgICAgICBpZiAoT2JqZWN0LnBy
b3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuXHQgICAgICAgICAgdmFy
IGtleUVzY2FwZWQgPSAvXlthLXokX11bXFx3JF9dKiQvaS50ZXN0KGtleSkgPyBrZXkgOiBKU09O
LnN0cmluZ2lmeShrZXkpO1xuXHQgICAgICAgICAgcGFpcnMucHVzaChrZXlFc2NhcGVkICsgJzog
JyArIGZyaWVuZGx5U3RyaW5naWZ5KG9ialtrZXldKSk7XG5cdCAgICAgICAgfVxuXHQgICAgICB9
XG5cdCAgICAgIHJldHVybiAneycgKyBwYWlycy5qb2luKCcsICcpICsgJ30nO1xuXHQgICAgfVxu
XHQgIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gJ3N0cmluZycpIHtcblx0ICAgIHJldHVybiBK
U09OLnN0cmluZ2lmeShvYmopO1xuXHQgIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gJ2Z1bmN0
aW9uJykge1xuXHQgICAgcmV0dXJuICdbZnVuY3Rpb24gb2JqZWN0XSc7XG5cdCAgfVxuXHQgIC8v
IERpZmZlcnMgZnJvbSBKU09OLnN0cmluZ2lmeSBpbiB0aGF0IHVuZGVmaW5lZCBiZWNhdXNlIHVu
ZGVmaW5lZCBhbmQgdGhhdFxuXHQgIC8vIGluZiBhbmQgbmFuIGRvbid0IGJlY29tZSBudWxsXG5c
dCAgcmV0dXJuIFN0cmluZyhvYmopO1xuXHR9XG5cdFxuXHR2YXIgc3R5bGVNdXRhdGlvbldhcm5p
bmcgPSB7fTtcblx0XG5cdGZ1bmN0aW9uIGNoZWNrQW5kV2FybkZvck11dGF0ZWRTdHlsZShzdHls
ZTEsIHN0eWxlMiwgY29tcG9uZW50KSB7XG5cdCAgaWYgKHN0eWxlMSA9PSBudWxsIHx8IHN0eWxl
MiA9PSBudWxsKSB7XG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHQgIGlmIChzaGFsbG93RXF1YWwo
c3R5bGUxLCBzdHlsZTIpKSB7XG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHRcblx0ICB2YXIgY29t
cG9uZW50TmFtZSA9IGNvbXBvbmVudC5fdGFnO1xuXHQgIHZhciBvd25lciA9IGNvbXBvbmVudC5f
Y3VycmVudEVsZW1lbnQuX293bmVyO1xuXHQgIHZhciBvd25lck5hbWU7XG5cdCAgaWYgKG93bmVy
KSB7XG5cdCAgICBvd25lck5hbWUgPSBvd25lci5nZXROYW1lKCk7XG5cdCAgfVxuXHRcblx0ICB2
YXIgaGFzaCA9IG93bmVyTmFtZSArICd8JyArIGNvbXBvbmVudE5hbWU7XG5cdFxuXHQgIGlmIChz
dHlsZU11dGF0aW9uV2FybmluZy5oYXNPd25Qcm9wZXJ0eShoYXNoKSkge1xuXHQgICAgcmV0dXJu
O1xuXHQgIH1cblx0XG5cdCAgc3R5bGVNdXRhdGlvbldhcm5pbmdbaGFzaF0gPSB0cnVlO1xuXHRc
blx0ICAgZmFsc2UgPyB3YXJuaW5nKGZhbHNlLCAnYCVzYCB3YXMgcGFzc2VkIGEgc3R5bGUgb2Jq
ZWN0IHRoYXQgaGFzIHByZXZpb3VzbHkgYmVlbiBtdXRhdGVkLiAnICsgJ011dGF0aW5nIGBzdHls
ZWAgaXMgZGVwcmVjYXRlZC4gQ29uc2lkZXIgY2xvbmluZyBpdCBiZWZvcmVoYW5kLiBDaGVjayAn
ICsgJ3RoZSBgcmVuZGVyYCAlcy4gUHJldmlvdXMgc3R5bGU6ICVzLiBNdXRhdGVkIHN0eWxlOiAl
cy4nLCBjb21wb25lbnROYW1lLCBvd25lciA/ICdvZiBgJyArIG93bmVyTmFtZSArICdgJyA6ICd1
c2luZyA8JyArIGNvbXBvbmVudE5hbWUgKyAnPicsIGZyaWVuZGx5U3RyaW5naWZ5KHN0eWxlMSks
IGZyaWVuZGx5U3RyaW5naWZ5KHN0eWxlMikpIDogdm9pZCAwO1xuXHR9XG5cdFxuXHQvKipcblx0
ICogQHBhcmFtIHtvYmplY3R9IGNvbXBvbmVudFxuXHQgKiBAcGFyYW0gez9vYmplY3R9IHByb3Bz
XG5cdCAqL1xuXHRmdW5jdGlvbiBhc3NlcnRWYWxpZFByb3BzKGNvbXBvbmVudCwgcHJvcHMpIHtc
blx0ICBpZiAoIXByb3BzKSB7XG5cdCAgICByZXR1cm47XG5cdCAgfVxuXHQgIC8vIE5vdGUgdGhl
IHVzZSBvZiBgPT1gIHdoaWNoIGNoZWNrcyBmb3IgbnVsbCBvciB1bmRlZmluZWQuXG5cdCAgaWYg
KHZvaWRFbGVtZW50VGFnc1tjb21wb25lbnQuX3RhZ10pIHtcblx0ICAgICEocHJvcHMuY2hpbGRy
ZW4gPT0gbnVsbCAmJiBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCA9PSBudWxsKSA/ICBm
YWxzZSA/IGludmFyaWFudChmYWxzZSwgJyVzIGlzIGEgdm9pZCBlbGVtZW50IHRhZyBhbmQgbXVz
dCBuZWl0aGVyIGhhdmUgYGNoaWxkcmVuYCBub3IgdXNlIGBkYW5nZXJvdXNseVNldElubmVySFRN
TGAuJXMnLCBjb21wb25lbnQuX3RhZywgY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXIg
PyAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mICcgKyBjb21wb25lbnQuX2N1cnJlbnRFbGVt
ZW50Ll9vd25lci5nZXROYW1lKCkgKyAnLicgOiAnJykgOiBfcHJvZEludmFyaWFudCgnMTM3Jywg
Y29tcG9uZW50Ll90YWcsIGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQuX293bmVyID8gJyBDaGVj
ayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAnICsgY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3du
ZXIuZ2V0TmFtZSgpICsgJy4nIDogJycpIDogdm9pZCAwO1xuXHQgIH1cblx0ICBpZiAocHJvcHMu
ZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgIT0gbnVsbCkge1xuXHQgICAgIShwcm9wcy5jaGlsZHJl
biA9PSBudWxsKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ0NhbiBvbmx5IHNldCBvbmUg
b2YgYGNoaWxkcmVuYCBvciBgcHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgLicpIDogX3By
b2RJbnZhcmlhbnQoJzYwJykgOiB2b2lkIDA7XG5cdCAgICAhKHR5cGVvZiBwcm9wcy5kYW5nZXJv
dXNseVNldElubmVySFRNTCA9PT0gJ29iamVjdCcgJiYgSFRNTCBpbiBwcm9wcy5kYW5nZXJvdXNs
eVNldElubmVySFRNTCkgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdgcHJvcHMuZGFuZ2Vy
b3VzbHlTZXRJbm5lckhUTUxgIG11c3QgYmUgaW4gdGhlIGZvcm0gYHtfX2h0bWw6IC4uLn1gLiBQ
bGVhc2UgdmlzaXQgaHR0cHM6Ly9mYi5tZS9yZWFjdC1pbnZhcmlhbnQtZGFuZ2Vyb3VzbHktc2V0
LWlubmVyLWh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uJykgOiBfcHJvZEludmFyaWFudCgnNjEn
KSA6IHZvaWQgMDtcblx0ICB9XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICBwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhwcm9wcy5pbm5lckhUTUwgPT0gbnVs
bCwgJ0RpcmVjdGx5IHNldHRpbmcgcHJvcGVydHkgYGlubmVySFRNTGAgaXMgbm90IHBlcm1pdHRl
ZC4gJyArICdGb3IgbW9yZSBpbmZvcm1hdGlvbiwgbG9va3VwIGRvY3VtZW50YXRpb24gb24gYGRh
bmdlcm91c2x5U2V0SW5uZXJIVE1MYC4nKSA6IHZvaWQgMDtcblx0ICAgIHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHByb3BzLnN1cHByZXNzQ29udGVudEVk
aXRhYmxlV2FybmluZyB8fCAhcHJvcHMuY29udGVudEVkaXRhYmxlIHx8IHByb3BzLmNoaWxkcmVu
ID09IG51bGwsICdBIGNvbXBvbmVudCBpcyBgY29udGVudEVkaXRhYmxlYCBhbmQgY29udGFpbnMg
YGNoaWxkcmVuYCBtYW5hZ2VkIGJ5ICcgKyAnUmVhY3QuIEl0IGlzIG5vdyB5b3VyIHJlc3BvbnNp
YmlsaXR5IHRvIGd1YXJhbnRlZSB0aGF0IG5vbmUgb2YgJyArICd0aG9zZSBub2RlcyBhcmUgdW5l
eHBlY3RlZGx5IG1vZGlmaWVkIG9yIGR1cGxpY2F0ZWQuIFRoaXMgaXMgJyArICdwcm9iYWJseSBu
b3QgaW50ZW50aW9uYWwuJykgOiB2b2lkIDA7XG5cdCAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhwcm9wcy5vbkZvY3VzSW4gPT0gbnVsbCAmJiBwcm9w
cy5vbkZvY3VzT3V0ID09IG51bGwsICdSZWFjdCB1c2VzIG9uRm9jdXMgYW5kIG9uQmx1ciBpbnN0
ZWFkIG9mIG9uRm9jdXNJbiBhbmQgb25Gb2N1c091dC4gJyArICdBbGwgUmVhY3QgZXZlbnRzIGFy
ZSBub3JtYWxpemVkIHRvIGJ1YmJsZSwgc28gb25Gb2N1c0luIGFuZCBvbkZvY3VzT3V0ICcgKyAn
YXJlIG5vdCBuZWVkZWQvc3VwcG9ydGVkIGJ5IFJlYWN0LicpIDogdm9pZCAwO1xuXHQgIH1cblx0
ICAhKHByb3BzLnN0eWxlID09IG51bGwgfHwgdHlwZW9mIHByb3BzLnN0eWxlID09PSAnb2JqZWN0
JykgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdUaGUgYHN0eWxlYCBwcm9wIGV4cGVjdHMg
YSBtYXBwaW5nIGZyb20gc3R5bGUgcHJvcGVydGllcyB0byB2YWx1ZXMsIG5vdCBhIHN0cmluZy4g
Rm9yIGV4YW1wbGUsIHN0eWxlPXt7bWFyZ2luUmlnaHQ6IHNwYWNpbmcgKyBcXCdlbVxcJ319IHdo
ZW4gdXNpbmcgSlNYLiVzJywgZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKGNvbXBvbmVudCkp
IDogX3Byb2RJbnZhcmlhbnQoJzYyJywgZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKGNvbXBv
bmVudCkpIDogdm9pZCAwO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBlbnF1ZXVlUHV0TGlzdGVuZXIo
aW5zdCwgcmVnaXN0cmF0aW9uTmFtZSwgbGlzdGVuZXIsIHRyYW5zYWN0aW9uKSB7XG5cdCAgaWYg
KHRyYW5zYWN0aW9uIGluc3RhbmNlb2YgUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbikg
e1xuXHQgICAgcmV0dXJuO1xuXHQgIH1cblx0ICBpZiAoZmFsc2UpIHtcblx0ICAgIC8vIElFOCBo
YXMgbm8gQVBJIGZvciBldmVudCBjYXB0dXJpbmcgYW5kIHRoZSBgb25TY3JvbGxgIGV2ZW50IGRv
ZXNuJ3Rcblx0ICAgIC8vIGJ1YmJsZS5cblx0ICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicgPyB3YXJuaW5nKHJlZ2lzdHJhdGlvbk5hbWUgIT09ICdvblNjcm9sbCcgfHwg
aXNFdmVudFN1cHBvcnRlZCgnc2Nyb2xsJywgdHJ1ZSksIFwiVGhpcyBicm93c2VyIGRvZXNuJ3Qg
c3VwcG9ydCB0aGUgYG9uU2Nyb2xsYCBldmVudFwiKSA6IHZvaWQgMDtcblx0ICB9XG5cdCAgdmFy
IGNvbnRhaW5lckluZm8gPSBpbnN0Ll9ob3N0Q29udGFpbmVySW5mbztcblx0ICB2YXIgaXNEb2N1
bWVudEZyYWdtZW50ID0gY29udGFpbmVySW5mby5fbm9kZSAmJiBjb250YWluZXJJbmZvLl9ub2Rl
Lm5vZGVUeXBlID09PSBET0NfRlJBR01FTlRfVFlQRTtcblx0ICB2YXIgZG9jID0gaXNEb2N1bWVu
dEZyYWdtZW50ID8gY29udGFpbmVySW5mby5fbm9kZSA6IGNvbnRhaW5lckluZm8uX293bmVyRG9j
dW1lbnQ7XG5cdCAgbGlzdGVuVG8ocmVnaXN0cmF0aW9uTmFtZSwgZG9jKTtcblx0ICB0cmFuc2Fj
dGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHB1dExpc3RlbmVyLCB7XG5cdCAgICBp
bnN0OiBpbnN0LFxuXHQgICAgcmVnaXN0cmF0aW9uTmFtZTogcmVnaXN0cmF0aW9uTmFtZSxcblx0
ICAgIGxpc3RlbmVyOiBsaXN0ZW5lclxuXHQgIH0pO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBwdXRM
aXN0ZW5lcigpIHtcblx0ICB2YXIgbGlzdGVuZXJUb1B1dCA9IHRoaXM7XG5cdCAgRXZlbnRQbHVn
aW5IdWIucHV0TGlzdGVuZXIobGlzdGVuZXJUb1B1dC5pbnN0LCBsaXN0ZW5lclRvUHV0LnJlZ2lz
dHJhdGlvbk5hbWUsIGxpc3RlbmVyVG9QdXQubGlzdGVuZXIpO1xuXHR9XG5cdFxuXHRmdW5jdGlv
biBpbnB1dFBvc3RNb3VudCgpIHtcblx0ICB2YXIgaW5zdCA9IHRoaXM7XG5cdCAgUmVhY3RET01J
bnB1dC5wb3N0TW91bnRXcmFwcGVyKGluc3QpO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiB0ZXh0YXJl
YVBvc3RNb3VudCgpIHtcblx0ICB2YXIgaW5zdCA9IHRoaXM7XG5cdCAgUmVhY3RET01UZXh0YXJl
YS5wb3N0TW91bnRXcmFwcGVyKGluc3QpO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBvcHRpb25Qb3N0
TW91bnQoKSB7XG5cdCAgdmFyIGluc3QgPSB0aGlzO1xuXHQgIFJlYWN0RE9NT3B0aW9uLnBvc3RN
b3VudFdyYXBwZXIoaW5zdCk7XG5cdH1cblx0XG5cdHZhciBzZXRBbmRWYWxpZGF0ZUNvbnRlbnRD
aGlsZERldiA9IGVtcHR5RnVuY3Rpb247XG5cdGlmIChmYWxzZSkge1xuXHQgIHNldEFuZFZhbGlk
YXRlQ29udGVudENoaWxkRGV2ID0gZnVuY3Rpb24gKGNvbnRlbnQpIHtcblx0ICAgIHZhciBoYXNF
eGlzdGluZ0NvbnRlbnQgPSB0aGlzLl9jb250ZW50RGVidWdJRCAhPSBudWxsO1xuXHQgICAgdmFy
IGRlYnVnSUQgPSB0aGlzLl9kZWJ1Z0lEO1xuXHQgICAgLy8gVGhpcyBJRCByZXByZXNlbnRzIHRo
ZSBpbmxpbmVkIGNoaWxkIHRoYXQgaGFzIG5vIGJhY2tpbmcgaW5zdGFuY2U6XG5cdCAgICB2YXIg
Y29udGVudERlYnVnSUQgPSAtZGVidWdJRDtcblx0XG5cdCAgICBpZiAoY29udGVudCA9PSBudWxs
KSB7XG5cdCAgICAgIGlmIChoYXNFeGlzdGluZ0NvbnRlbnQpIHtcblx0ICAgICAgICBSZWFjdElu
c3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Vbm1vdW50Q29tcG9uZW50KHRoaXMuX2NvbnRlbnRE
ZWJ1Z0lEKTtcblx0ICAgICAgfVxuXHQgICAgICB0aGlzLl9jb250ZW50RGVidWdJRCA9IG51bGw7
XG5cdCAgICAgIHJldHVybjtcblx0ICAgIH1cblx0XG5cdCAgICB2YWxpZGF0ZURPTU5lc3Rpbmco
bnVsbCwgU3RyaW5nKGNvbnRlbnQpLCB0aGlzLCB0aGlzLl9hbmNlc3RvckluZm8pO1xuXHQgICAg
dGhpcy5fY29udGVudERlYnVnSUQgPSBjb250ZW50RGVidWdJRDtcblx0ICAgIGlmIChoYXNFeGlz
dGluZ0NvbnRlbnQpIHtcblx0ICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9u
QmVmb3JlVXBkYXRlQ29tcG9uZW50KGNvbnRlbnREZWJ1Z0lELCBjb250ZW50KTtcblx0ICAgICAg
UmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uVXBkYXRlQ29tcG9uZW50KGNvbnRlbnRE
ZWJ1Z0lEKTtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRl
YnVnVG9vbC5vbkJlZm9yZU1vdW50Q29tcG9uZW50KGNvbnRlbnREZWJ1Z0lELCBjb250ZW50LCBk
ZWJ1Z0lEKTtcblx0ICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uTW91bnRD
b21wb25lbnQoY29udGVudERlYnVnSUQpO1xuXHQgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5k
ZWJ1Z1Rvb2wub25TZXRDaGlsZHJlbihkZWJ1Z0lELCBbY29udGVudERlYnVnSURdKTtcblx0ICAg
IH1cblx0ICB9O1xuXHR9XG5cdFxuXHQvLyBUaGVyZSBhcmUgc28gbWFueSBtZWRpYSBldmVudHMs
IGl0IG1ha2VzIHNlbnNlIHRvIGp1c3Rcblx0Ly8gbWFpbnRhaW4gYSBsaXN0IHJhdGhlciB0aGFu
IGNyZWF0ZSBhIGB0cmFwQnViYmxlZEV2ZW50YCBmb3IgZWFjaFxuXHR2YXIgbWVkaWFFdmVudHMg
PSB7XG5cdCAgdG9wQWJvcnQ6ICdhYm9ydCcsXG5cdCAgdG9wQ2FuUGxheTogJ2NhbnBsYXknLFxu
XHQgIHRvcENhblBsYXlUaHJvdWdoOiAnY2FucGxheXRocm91Z2gnLFxuXHQgIHRvcER1cmF0aW9u
Q2hhbmdlOiAnZHVyYXRpb25jaGFuZ2UnLFxuXHQgIHRvcEVtcHRpZWQ6ICdlbXB0aWVkJyxcblx0
ICB0b3BFbmNyeXB0ZWQ6ICdlbmNyeXB0ZWQnLFxuXHQgIHRvcEVuZGVkOiAnZW5kZWQnLFxuXHQg
IHRvcEVycm9yOiAnZXJyb3InLFxuXHQgIHRvcExvYWRlZERhdGE6ICdsb2FkZWRkYXRhJyxcblx0
ICB0b3BMb2FkZWRNZXRhZGF0YTogJ2xvYWRlZG1ldGFkYXRhJyxcblx0ICB0b3BMb2FkU3RhcnQ6
ICdsb2Fkc3RhcnQnLFxuXHQgIHRvcFBhdXNlOiAncGF1c2UnLFxuXHQgIHRvcFBsYXk6ICdwbGF5
Jyxcblx0ICB0b3BQbGF5aW5nOiAncGxheWluZycsXG5cdCAgdG9wUHJvZ3Jlc3M6ICdwcm9ncmVz
cycsXG5cdCAgdG9wUmF0ZUNoYW5nZTogJ3JhdGVjaGFuZ2UnLFxuXHQgIHRvcFNlZWtlZDogJ3Nl
ZWtlZCcsXG5cdCAgdG9wU2Vla2luZzogJ3NlZWtpbmcnLFxuXHQgIHRvcFN0YWxsZWQ6ICdzdGFs
bGVkJyxcblx0ICB0b3BTdXNwZW5kOiAnc3VzcGVuZCcsXG5cdCAgdG9wVGltZVVwZGF0ZTogJ3Rp
bWV1cGRhdGUnLFxuXHQgIHRvcFZvbHVtZUNoYW5nZTogJ3ZvbHVtZWNoYW5nZScsXG5cdCAgdG9w
V2FpdGluZzogJ3dhaXRpbmcnXG5cdH07XG5cdFxuXHRmdW5jdGlvbiB0cmFja0lucHV0VmFsdWUo
KSB7XG5cdCAgaW5wdXRWYWx1ZVRyYWNraW5nLnRyYWNrKHRoaXMpO1xuXHR9XG5cdFxuXHRmdW5j
dGlvbiB0cmFwQnViYmxlZEV2ZW50c0xvY2FsKCkge1xuXHQgIHZhciBpbnN0ID0gdGhpcztcblx0
ICAvLyBJZiBhIGNvbXBvbmVudCByZW5kZXJzIHRvIG51bGwgb3IgaWYgYW5vdGhlciBjb21wb25l
bnQgZmF0YWxzIGFuZCBjYXVzZXNcblx0ICAvLyB0aGUgc3RhdGUgb2YgdGhlIHRyZWUgdG8gYmUg
Y29ycnVwdGVkLCBgbm9kZWAgaGVyZSBjYW4gYmUgbnVsbC5cblx0ICAhaW5zdC5fcm9vdE5vZGVJ
RCA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ011c3QgYmUgbW91bnRlZCB0byB0cmFwIGV2
ZW50cycpIDogX3Byb2RJbnZhcmlhbnQoJzYzJykgOiB2b2lkIDA7XG5cdCAgdmFyIG5vZGUgPSBn
ZXROb2RlKGluc3QpO1xuXHQgICFub2RlID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAndHJh
cEJ1YmJsZWRFdmVudCguLi4pOiBSZXF1aXJlcyBub2RlIHRvIGJlIHJlbmRlcmVkLicpIDogX3By
b2RJbnZhcmlhbnQoJzY0JykgOiB2b2lkIDA7XG5cdFxuXHQgIHN3aXRjaCAoaW5zdC5fdGFnKSB7
XG5cdCAgICBjYXNlICdpZnJhbWUnOlxuXHQgICAgY2FzZSAnb2JqZWN0Jzpcblx0ICAgICAgaW5z
dC5fd3JhcHBlclN0YXRlLmxpc3RlbmVycyA9IFtSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJh
cEJ1YmJsZWRFdmVudCgndG9wTG9hZCcsICdsb2FkJywgbm9kZSldO1xuXHQgICAgICBicmVhaztc
blx0ICAgIGNhc2UgJ3ZpZGVvJzpcblx0ICAgIGNhc2UgJ2F1ZGlvJzpcblx0ICAgICAgaW5zdC5f
d3JhcHBlclN0YXRlLmxpc3RlbmVycyA9IFtdO1xuXHQgICAgICAvLyBDcmVhdGUgbGlzdGVuZXIg
Zm9yIGVhY2ggbWVkaWEgZXZlbnRcblx0ICAgICAgZm9yICh2YXIgZXZlbnQgaW4gbWVkaWFFdmVu
dHMpIHtcblx0ICAgICAgICBpZiAobWVkaWFFdmVudHMuaGFzT3duUHJvcGVydHkoZXZlbnQpKSB7
XG5cdCAgICAgICAgICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzLnB1c2goUmVhY3RCcm93
c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoZXZlbnQsIG1lZGlhRXZlbnRzW2V2ZW50
XSwgbm9kZSkpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgICBicmVhaztcblx0ICAg
IGNhc2UgJ3NvdXJjZSc6XG5cdCAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBb
UmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcEVycm9yJywgJ2Vy
cm9yJywgbm9kZSldO1xuXHQgICAgICBicmVhaztcblx0ICAgIGNhc2UgJ2ltZyc6XG5cdCAgICAg
IGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVy
LnRyYXBCdWJibGVkRXZlbnQoJ3RvcEVycm9yJywgJ2Vycm9yJywgbm9kZSksIFJlYWN0QnJvd3Nl
ckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KCd0b3BMb2FkJywgJ2xvYWQnLCBub2RlKV07
XG5cdCAgICAgIGJyZWFrO1xuXHQgICAgY2FzZSAnZm9ybSc6XG5cdCAgICAgIGluc3QuX3dyYXBw
ZXJTdGF0ZS5saXN0ZW5lcnMgPSBbUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVk
RXZlbnQoJ3RvcFJlc2V0JywgJ3Jlc2V0Jywgbm9kZSksIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRl
ci50cmFwQnViYmxlZEV2ZW50KCd0b3BTdWJtaXQnLCAnc3VibWl0Jywgbm9kZSldO1xuXHQgICAg
ICBicmVhaztcblx0ICAgIGNhc2UgJ2lucHV0Jzpcblx0ICAgIGNhc2UgJ3NlbGVjdCc6XG5cdCAg
ICBjYXNlICd0ZXh0YXJlYSc6XG5cdCAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMg
PSBbUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcEludmFsaWQn
LCAnaW52YWxpZCcsIG5vZGUpXTtcblx0ICAgICAgYnJlYWs7XG5cdCAgfVxuXHR9XG5cdFxuXHRm
dW5jdGlvbiBwb3N0VXBkYXRlU2VsZWN0V3JhcHBlcigpIHtcblx0ICBSZWFjdERPTVNlbGVjdC5w
b3N0VXBkYXRlV3JhcHBlcih0aGlzKTtcblx0fVxuXHRcblx0Ly8gRm9yIEhUTUwsIGNlcnRhaW4g
dGFncyBzaG91bGQgb21pdCB0aGVpciBjbG9zZSB0YWcuIFdlIGtlZXAgYSB3aGl0ZWxpc3QgZm9y
XG5cdC8vIHRob3NlIHNwZWNpYWwtY2FzZSB0YWdzLlxuXHRcblx0dmFyIG9taXR0ZWRDbG9zZVRh
Z3MgPSB7XG5cdCAgYXJlYTogdHJ1ZSxcblx0ICBiYXNlOiB0cnVlLFxuXHQgIGJyOiB0cnVlLFxu
XHQgIGNvbDogdHJ1ZSxcblx0ICBlbWJlZDogdHJ1ZSxcblx0ICBocjogdHJ1ZSxcblx0ICBpbWc6
IHRydWUsXG5cdCAgaW5wdXQ6IHRydWUsXG5cdCAga2V5Z2VuOiB0cnVlLFxuXHQgIGxpbms6IHRy
dWUsXG5cdCAgbWV0YTogdHJ1ZSxcblx0ICBwYXJhbTogdHJ1ZSxcblx0ICBzb3VyY2U6IHRydWUs
XG5cdCAgdHJhY2s6IHRydWUsXG5cdCAgd2JyOiB0cnVlXG5cdCAgLy8gTk9URTogbWVudWl0ZW0n
cyBjbG9zZSB0YWcgc2hvdWxkIGJlIG9taXR0ZWQsIGJ1dCB0aGF0IGNhdXNlcyBwcm9ibGVtcy5c
blx0fTtcblx0XG5cdHZhciBuZXdsaW5lRWF0aW5nVGFncyA9IHtcblx0ICBsaXN0aW5nOiB0cnVl
LFxuXHQgIHByZTogdHJ1ZSxcblx0ICB0ZXh0YXJlYTogdHJ1ZVxuXHR9O1xuXHRcblx0Ly8gRm9y
IEhUTUwsIGNlcnRhaW4gdGFncyBjYW5ub3QgaGF2ZSBjaGlsZHJlbi4gVGhpcyBoYXMgdGhlIHNh
bWUgcHVycG9zZSBhc1xuXHQvLyBgb21pdHRlZENsb3NlVGFnc2AgZXhjZXB0IHRoYXQgYG1lbnVp
dGVtYCBzaG91bGQgc3RpbGwgaGF2ZSBpdHMgY2xvc2luZyB0YWcuXG5cdFxuXHR2YXIgdm9pZEVs
ZW1lbnRUYWdzID0gX2Fzc2lnbih7XG5cdCAgbWVudWl0ZW06IHRydWVcblx0fSwgb21pdHRlZENs
b3NlVGFncyk7XG5cdFxuXHQvLyBXZSBhY2NlcHQgYW55IHRhZyB0byBiZSByZW5kZXJlZCBidXQg
c2luY2UgdGhpcyBnZXRzIGluamVjdGVkIGludG8gYXJiaXRyYXJ5XG5cdC8vIEhUTUwsIHdlIHdh
bnQgdG8gbWFrZSBzdXJlIHRoYXQgaXQncyBhIHNhZmUgdGFnLlxuXHQvLyBodHRwOi8vd3d3Lncz
Lm9yZy9UUi9SRUMteG1sLyNOVC1OYW1lXG5cdFxuXHR2YXIgVkFMSURfVEFHX1JFR0VYID0gL15b
YS16QS1aXVthLXpBLVo6X1xcLlxcLVxcZF0qJC87IC8vIFNpbXBsaWZpZWQgc3Vic2V0XG5cdHZh
ciB2YWxpZGF0ZWRUYWdDYWNoZSA9IHt9O1xuXHR2YXIgaGFzT3duUHJvcGVydHkgPSB7fS5oYXNP
d25Qcm9wZXJ0eTtcblx0XG5cdGZ1bmN0aW9uIHZhbGlkYXRlRGFuZ2Vyb3VzVGFnKHRhZykge1xu
XHQgIGlmICghaGFzT3duUHJvcGVydHkuY2FsbCh2YWxpZGF0ZWRUYWdDYWNoZSwgdGFnKSkge1xu
XHQgICAgIVZBTElEX1RBR19SRUdFWC50ZXN0KHRhZykgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFs
c2UsICdJbnZhbGlkIHRhZzogJXMnLCB0YWcpIDogX3Byb2RJbnZhcmlhbnQoJzY1JywgdGFnKSA6
IHZvaWQgMDtcblx0ICAgIHZhbGlkYXRlZFRhZ0NhY2hlW3RhZ10gPSB0cnVlO1xuXHQgIH1cblx0
fVxuXHRcblx0ZnVuY3Rpb24gaXNDdXN0b21Db21wb25lbnQodGFnTmFtZSwgcHJvcHMpIHtcblx0
ICByZXR1cm4gdGFnTmFtZS5pbmRleE9mKCctJykgPj0gMCB8fCBwcm9wcy5pcyAhPSBudWxsO1xu
XHR9XG5cdFxuXHR2YXIgZ2xvYmFsSWRDb3VudGVyID0gMTtcblx0XG5cdC8qKlxuXHQgKiBDcmVh
dGVzIGEgbmV3IFJlYWN0IGNsYXNzIHRoYXQgaXMgaWRlbXBvdGVudCBhbmQgY2FwYWJsZSBvZiBj
b250YWluaW5nIG90aGVyXG5cdCAqIFJlYWN0IGNvbXBvbmVudHMuIEl0IGFjY2VwdHMgZXZlbnQg
bGlzdGVuZXJzIGFuZCBET00gcHJvcGVydGllcyB0aGF0IGFyZVxuXHQgKiB2YWxpZCBhY2NvcmRp
bmcgdG8gYERPTVByb3BlcnR5YC5cblx0ICpcblx0ICogIC0gRXZlbnQgbGlzdGVuZXJzOiBgb25D
bGlja2AsIGBvbk1vdXNlRG93bmAsIGV0Yy5cblx0ICogIC0gRE9NIHByb3BlcnRpZXM6IGBjbGFz
c05hbWVgLCBgbmFtZWAsIGB0aXRsZWAsIGV0Yy5cblx0ICpcblx0ICogVGhlIGBzdHlsZWAgcHJv
cGVydHkgZnVuY3Rpb25zIGRpZmZlcmVudGx5IGZyb20gdGhlIERPTSBBUEkuIEl0IGFjY2VwdHMg
YW5cblx0ICogb2JqZWN0IG1hcHBpbmcgb2Ygc3R5bGUgcHJvcGVydGllcyB0byB2YWx1ZXMuXG5c
dCAqXG5cdCAqIEBjb25zdHJ1Y3RvciBSZWFjdERPTUNvbXBvbmVudFxuXHQgKiBAZXh0ZW5kcyBS
ZWFjdE11bHRpQ2hpbGRcblx0ICovXG5cdGZ1bmN0aW9uIFJlYWN0RE9NQ29tcG9uZW50KGVsZW1l
bnQpIHtcblx0ICB2YXIgdGFnID0gZWxlbWVudC50eXBlO1xuXHQgIHZhbGlkYXRlRGFuZ2Vyb3Vz
VGFnKHRhZyk7XG5cdCAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBlbGVtZW50O1xuXHQgIHRoaXMu
X3RhZyA9IHRhZy50b0xvd2VyQ2FzZSgpO1xuXHQgIHRoaXMuX25hbWVzcGFjZVVSSSA9IG51bGw7
XG5cdCAgdGhpcy5fcmVuZGVyZWRDaGlsZHJlbiA9IG51bGw7XG5cdCAgdGhpcy5fcHJldmlvdXNT
dHlsZSA9IG51bGw7XG5cdCAgdGhpcy5fcHJldmlvdXNTdHlsZUNvcHkgPSBudWxsO1xuXHQgIHRo
aXMuX2hvc3ROb2RlID0gbnVsbDtcblx0ICB0aGlzLl9ob3N0UGFyZW50ID0gbnVsbDtcblx0ICB0
aGlzLl9yb290Tm9kZUlEID0gMDtcblx0ICB0aGlzLl9kb21JRCA9IDA7XG5cdCAgdGhpcy5faG9z
dENvbnRhaW5lckluZm8gPSBudWxsO1xuXHQgIHRoaXMuX3dyYXBwZXJTdGF0ZSA9IG51bGw7XG5c
dCAgdGhpcy5fdG9wTGV2ZWxXcmFwcGVyID0gbnVsbDtcblx0ICB0aGlzLl9mbGFncyA9IDA7XG5c
dCAgaWYgKGZhbHNlKSB7XG5cdCAgICB0aGlzLl9hbmNlc3RvckluZm8gPSBudWxsO1xuXHQgICAg
c2V0QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYuY2FsbCh0aGlzLCBudWxsKTtcblx0ICB9XG5c
dH1cblx0XG5cdFJlYWN0RE9NQ29tcG9uZW50LmRpc3BsYXlOYW1lID0gJ1JlYWN0RE9NQ29tcG9u
ZW50Jztcblx0XG5cdFJlYWN0RE9NQ29tcG9uZW50Lk1peGluID0ge1xuXHQgIC8qKlxuXHQgICAq
IEdlbmVyYXRlcyByb290IHRhZyBtYXJrdXAgdGhlbiByZWN1cnNlcy4gVGhpcyBtZXRob2QgaGFz
IHNpZGUgZWZmZWN0cyBhbmRcblx0ICAgKiBpcyBub3QgaWRlbXBvdGVudC5cblx0ICAgKlxuXHQg
ICAqIEBpbnRlcm5hbFxuXHQgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxS
ZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuXHQgICAqIEBwYXJh
bSB7P1JlYWN0RE9NQ29tcG9uZW50fSB0aGUgcGFyZW50IGNvbXBvbmVudCBpbnN0YW5jZVxuXHQg
ICAqIEBwYXJhbSB7P29iamVjdH0gaW5mbyBhYm91dCB0aGUgaG9zdCBjb250YWluZXJcblx0ICAg
KiBAcGFyYW0ge29iamVjdH0gY29udGV4dFxuXHQgICAqIEByZXR1cm4ge3N0cmluZ30gVGhlIGNv
bXB1dGVkIG1hcmt1cC5cblx0ICAgKi9cblx0ICBtb3VudENvbXBvbmVudDogZnVuY3Rpb24gKHRy
YW5zYWN0aW9uLCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgY29udGV4dCkge1xuXHQg
ICAgdGhpcy5fcm9vdE5vZGVJRCA9IGdsb2JhbElkQ291bnRlcisrO1xuXHQgICAgdGhpcy5fZG9t
SUQgPSBob3N0Q29udGFpbmVySW5mby5faWRDb3VudGVyKys7XG5cdCAgICB0aGlzLl9ob3N0UGFy
ZW50ID0gaG9zdFBhcmVudDtcblx0ICAgIHRoaXMuX2hvc3RDb250YWluZXJJbmZvID0gaG9zdENv
bnRhaW5lckluZm87XG5cdFxuXHQgICAgdmFyIHByb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQu
cHJvcHM7XG5cdFxuXHQgICAgc3dpdGNoICh0aGlzLl90YWcpIHtcblx0ICAgICAgY2FzZSAnYXVk
aW8nOlxuXHQgICAgICBjYXNlICdmb3JtJzpcblx0ICAgICAgY2FzZSAnaWZyYW1lJzpcblx0ICAg
ICAgY2FzZSAnaW1nJzpcblx0ICAgICAgY2FzZSAnbGluayc6XG5cdCAgICAgIGNhc2UgJ29iamVj
dCc6XG5cdCAgICAgIGNhc2UgJ3NvdXJjZSc6XG5cdCAgICAgIGNhc2UgJ3ZpZGVvJzpcblx0ICAg
ICAgICB0aGlzLl93cmFwcGVyU3RhdGUgPSB7XG5cdCAgICAgICAgICBsaXN0ZW5lcnM6IG51bGxc
blx0ICAgICAgICB9O1xuXHQgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgp
LmVucXVldWUodHJhcEJ1YmJsZWRFdmVudHNMb2NhbCwgdGhpcyk7XG5cdCAgICAgICAgYnJlYWs7
XG5cdCAgICAgIGNhc2UgJ2lucHV0Jzpcblx0ICAgICAgICBSZWFjdERPTUlucHV0Lm1vdW50V3Jh
cHBlcih0aGlzLCBwcm9wcywgaG9zdFBhcmVudCk7XG5cdCAgICAgICAgcHJvcHMgPSBSZWFjdERP
TUlucHV0LmdldEhvc3RQcm9wcyh0aGlzLCBwcm9wcyk7XG5cdCAgICAgICAgdHJhbnNhY3Rpb24u
Z2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZSh0cmFja0lucHV0VmFsdWUsIHRoaXMpO1xuXHQg
ICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodHJhcEJ1YmJs
ZWRFdmVudHNMb2NhbCwgdGhpcyk7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIGNhc2UgJ29w
dGlvbic6XG5cdCAgICAgICAgUmVhY3RET01PcHRpb24ubW91bnRXcmFwcGVyKHRoaXMsIHByb3Bz
LCBob3N0UGFyZW50KTtcblx0ICAgICAgICBwcm9wcyA9IFJlYWN0RE9NT3B0aW9uLmdldEhvc3RQ
cm9wcyh0aGlzLCBwcm9wcyk7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIGNhc2UgJ3NlbGVj
dCc6XG5cdCAgICAgICAgUmVhY3RET01TZWxlY3QubW91bnRXcmFwcGVyKHRoaXMsIHByb3BzLCBo
b3N0UGFyZW50KTtcblx0ICAgICAgICBwcm9wcyA9IFJlYWN0RE9NU2VsZWN0LmdldEhvc3RQcm9w
cyh0aGlzLCBwcm9wcyk7XG5cdCAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5
KCkuZW5xdWV1ZSh0cmFwQnViYmxlZEV2ZW50c0xvY2FsLCB0aGlzKTtcblx0ICAgICAgICBicmVh
aztcblx0ICAgICAgY2FzZSAndGV4dGFyZWEnOlxuXHQgICAgICAgIFJlYWN0RE9NVGV4dGFyZWEu
bW91bnRXcmFwcGVyKHRoaXMsIHByb3BzLCBob3N0UGFyZW50KTtcblx0ICAgICAgICBwcm9wcyA9
IFJlYWN0RE9NVGV4dGFyZWEuZ2V0SG9zdFByb3BzKHRoaXMsIHByb3BzKTtcblx0ICAgICAgICB0
cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHRyYWNrSW5wdXRWYWx1ZSwg
dGhpcyk7XG5cdCAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1
ZSh0cmFwQnViYmxlZEV2ZW50c0xvY2FsLCB0aGlzKTtcblx0ICAgICAgICBicmVhaztcblx0ICAg
IH1cblx0XG5cdCAgICBhc3NlcnRWYWxpZFByb3BzKHRoaXMsIHByb3BzKTtcblx0XG5cdCAgICAv
LyBXZSBjcmVhdGUgdGFncyBpbiB0aGUgbmFtZXNwYWNlIG9mIHRoZWlyIHBhcmVudCBjb250YWlu
ZXIsIGV4Y2VwdCBIVE1MXG5cdCAgICAvLyB0YWdzIGdldCBubyBuYW1lc3BhY2UuXG5cdCAgICB2
YXIgbmFtZXNwYWNlVVJJO1xuXHQgICAgdmFyIHBhcmVudFRhZztcblx0ICAgIGlmIChob3N0UGFy
ZW50ICE9IG51bGwpIHtcblx0ICAgICAgbmFtZXNwYWNlVVJJID0gaG9zdFBhcmVudC5fbmFtZXNw
YWNlVVJJO1xuXHQgICAgICBwYXJlbnRUYWcgPSBob3N0UGFyZW50Ll90YWc7XG5cdCAgICB9IGVs
c2UgaWYgKGhvc3RDb250YWluZXJJbmZvLl90YWcpIHtcblx0ICAgICAgbmFtZXNwYWNlVVJJID0g
aG9zdENvbnRhaW5lckluZm8uX25hbWVzcGFjZVVSSTtcblx0ICAgICAgcGFyZW50VGFnID0gaG9z
dENvbnRhaW5lckluZm8uX3RhZztcblx0ICAgIH1cblx0ICAgIGlmIChuYW1lc3BhY2VVUkkgPT0g
bnVsbCB8fCBuYW1lc3BhY2VVUkkgPT09IERPTU5hbWVzcGFjZXMuc3ZnICYmIHBhcmVudFRhZyA9
PT0gJ2ZvcmVpZ25vYmplY3QnKSB7XG5cdCAgICAgIG5hbWVzcGFjZVVSSSA9IERPTU5hbWVzcGFj
ZXMuaHRtbDtcblx0ICAgIH1cblx0ICAgIGlmIChuYW1lc3BhY2VVUkkgPT09IERPTU5hbWVzcGFj
ZXMuaHRtbCkge1xuXHQgICAgICBpZiAodGhpcy5fdGFnID09PSAnc3ZnJykge1xuXHQgICAgICAg
IG5hbWVzcGFjZVVSSSA9IERPTU5hbWVzcGFjZXMuc3ZnO1xuXHQgICAgICB9IGVsc2UgaWYgKHRo
aXMuX3RhZyA9PT0gJ21hdGgnKSB7XG5cdCAgICAgICAgbmFtZXNwYWNlVVJJID0gRE9NTmFtZXNw
YWNlcy5tYXRobWw7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICAgIHRoaXMuX25hbWVzcGFjZVVS
SSA9IG5hbWVzcGFjZVVSSTtcblx0XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgdmFyIHBh
cmVudEluZm87XG5cdCAgICAgIGlmIChob3N0UGFyZW50ICE9IG51bGwpIHtcblx0ICAgICAgICBw
YXJlbnRJbmZvID0gaG9zdFBhcmVudC5fYW5jZXN0b3JJbmZvO1xuXHQgICAgICB9IGVsc2UgaWYg
KGhvc3RDb250YWluZXJJbmZvLl90YWcpIHtcblx0ICAgICAgICBwYXJlbnRJbmZvID0gaG9zdENv
bnRhaW5lckluZm8uX2FuY2VzdG9ySW5mbztcblx0ICAgICAgfVxuXHQgICAgICBpZiAocGFyZW50
SW5mbykge1xuXHQgICAgICAgIC8vIHBhcmVudEluZm8gc2hvdWxkIGFsd2F5cyBiZSBwcmVzZW50
IGV4Y2VwdCBmb3IgdGhlIHRvcC1sZXZlbFxuXHQgICAgICAgIC8vIGNvbXBvbmVudCB3aGVuIHNl
cnZlciByZW5kZXJpbmdcblx0ICAgICAgICB2YWxpZGF0ZURPTU5lc3RpbmcodGhpcy5fdGFnLCBu
dWxsLCB0aGlzLCBwYXJlbnRJbmZvKTtcblx0ICAgICAgfVxuXHQgICAgICB0aGlzLl9hbmNlc3Rv
ckluZm8gPSB2YWxpZGF0ZURPTU5lc3RpbmcudXBkYXRlZEFuY2VzdG9ySW5mbyhwYXJlbnRJbmZv
LCB0aGlzLl90YWcsIHRoaXMpO1xuXHQgICAgfVxuXHRcblx0ICAgIHZhciBtb3VudEltYWdlO1xu
XHQgICAgaWYgKHRyYW5zYWN0aW9uLnVzZUNyZWF0ZUVsZW1lbnQpIHtcblx0ICAgICAgdmFyIG93
bmVyRG9jdW1lbnQgPSBob3N0Q29udGFpbmVySW5mby5fb3duZXJEb2N1bWVudDtcblx0ICAgICAg
dmFyIGVsO1xuXHQgICAgICBpZiAobmFtZXNwYWNlVVJJID09PSBET01OYW1lc3BhY2VzLmh0bWwp
IHtcblx0ICAgICAgICBpZiAodGhpcy5fdGFnID09PSAnc2NyaXB0Jykge1xuXHQgICAgICAgICAg
Ly8gQ3JlYXRlIHRoZSBzY3JpcHQgdmlhIC5pbm5lckhUTUwgc28gaXRzIFwicGFyc2VyLWluc2Vy
dGVkXCIgZmxhZyBpc1xuXHQgICAgICAgICAgLy8gc2V0IHRvIHRydWUgYW5kIGl0IGRvZXMgbm90
IGV4ZWN1dGVcblx0ICAgICAgICAgIHZhciBkaXYgPSBvd25lckRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpO1xuXHQgICAgICAgICAgdmFyIHR5cGUgPSB0aGlzLl9jdXJyZW50RWxlbWVudC50
eXBlO1xuXHQgICAgICAgICAgZGl2LmlubmVySFRNTCA9ICc8JyArIHR5cGUgKyAnPjwvJyArIHR5
cGUgKyAnPic7XG5cdCAgICAgICAgICBlbCA9IGRpdi5yZW1vdmVDaGlsZChkaXYuZmlyc3RDaGls
ZCk7XG5cdCAgICAgICAgfSBlbHNlIGlmIChwcm9wcy5pcykge1xuXHQgICAgICAgICAgZWwgPSBv
d25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSwgcHJv
cHMuaXMpO1xuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAvLyBTZXBhcmF0ZSBlbHNl
IGJyYW5jaCBpbnN0ZWFkIG9mIHVzaW5nIGBwcm9wcy5pcyB8fCB1bmRlZmluZWRgIGFib3ZlIGJl
Y3Vhc2Ugb2YgYSBGaXJlZm94IGJ1Zy5cblx0ICAgICAgICAgIC8vIFNlZSBkaXNjdXNzaW9uIGlu
IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzY4OTZcblx0ICAgICAgICAg
IC8vIGFuZCBkaXNjdXNzaW9uIGluIGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19i
dWcuY2dpP2lkPTEyNzYyNDBcblx0ICAgICAgICAgIGVsID0gb3duZXJEb2N1bWVudC5jcmVhdGVF
bGVtZW50KHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUpO1xuXHQgICAgICAgIH1cblx0ICAgICAg
fSBlbHNlIHtcblx0ICAgICAgICBlbCA9IG93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudE5TKG5h
bWVzcGFjZVVSSSwgdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSk7XG5cdCAgICAgIH1cblx0ICAg
ICAgUmVhY3RET01Db21wb25lbnRUcmVlLnByZWNhY2hlTm9kZSh0aGlzLCBlbCk7XG5cdCAgICAg
IHRoaXMuX2ZsYWdzIHw9IEZsYWdzLmhhc0NhY2hlZENoaWxkTm9kZXM7XG5cdCAgICAgIGlmICgh
dGhpcy5faG9zdFBhcmVudCkge1xuXHQgICAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5zZXRB
dHRyaWJ1dGVGb3JSb290KGVsKTtcblx0ICAgICAgfVxuXHQgICAgICB0aGlzLl91cGRhdGVET01Q
cm9wZXJ0aWVzKG51bGwsIHByb3BzLCB0cmFuc2FjdGlvbik7XG5cdCAgICAgIHZhciBsYXp5VHJl
ZSA9IERPTUxhenlUcmVlKGVsKTtcblx0ICAgICAgdGhpcy5fY3JlYXRlSW5pdGlhbENoaWxkcmVu
KHRyYW5zYWN0aW9uLCBwcm9wcywgY29udGV4dCwgbGF6eVRyZWUpO1xuXHQgICAgICBtb3VudElt
YWdlID0gbGF6eVRyZWU7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB2YXIgdGFnT3BlbiA9IHRo
aXMuX2NyZWF0ZU9wZW5UYWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnModHJhbnNhY3Rpb24sIHByb3Bz
KTtcblx0ICAgICAgdmFyIHRhZ0NvbnRlbnQgPSB0aGlzLl9jcmVhdGVDb250ZW50TWFya3VwKHRy
YW5zYWN0aW9uLCBwcm9wcywgY29udGV4dCk7XG5cdCAgICAgIGlmICghdGFnQ29udGVudCAmJiBv
bWl0dGVkQ2xvc2VUYWdzW3RoaXMuX3RhZ10pIHtcblx0ICAgICAgICBtb3VudEltYWdlID0gdGFn
T3BlbiArICcvPic7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgbW91bnRJbWFnZSA9IHRh
Z09wZW4gKyAnPicgKyB0YWdDb250ZW50ICsgJzwvJyArIHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5
cGUgKyAnPic7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICBzd2l0Y2ggKHRoaXMuX3Rh
Zykge1xuXHQgICAgICBjYXNlICdpbnB1dCc6XG5cdCAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVh
Y3RNb3VudFJlYWR5KCkuZW5xdWV1ZShpbnB1dFBvc3RNb3VudCwgdGhpcyk7XG5cdCAgICAgICAg
aWYgKHByb3BzLmF1dG9Gb2N1cykge1xuXHQgICAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RN
b3VudFJlYWR5KCkuZW5xdWV1ZShBdXRvRm9jdXNVdGlscy5mb2N1c0RPTUNvbXBvbmVudCwgdGhp
cyk7XG5cdCAgICAgICAgfVxuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICd0ZXh0YXJl
YSc6XG5cdCAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZSh0
ZXh0YXJlYVBvc3RNb3VudCwgdGhpcyk7XG5cdCAgICAgICAgaWYgKHByb3BzLmF1dG9Gb2N1cykg
e1xuXHQgICAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShB
dXRvRm9jdXNVdGlscy5mb2N1c0RPTUNvbXBvbmVudCwgdGhpcyk7XG5cdCAgICAgICAgfVxuXHQg
ICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICdzZWxlY3QnOlxuXHQgICAgICAgIGlmIChwcm9w
cy5hdXRvRm9jdXMpIHtcblx0ICAgICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFk
eSgpLmVucXVldWUoQXV0b0ZvY3VzVXRpbHMuZm9jdXNET01Db21wb25lbnQsIHRoaXMpO1xuXHQg
ICAgICAgIH1cblx0ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSAnYnV0dG9uJzpcblx0ICAg
ICAgICBpZiAocHJvcHMuYXV0b0ZvY3VzKSB7XG5cdCAgICAgICAgICB0cmFuc2FjdGlvbi5nZXRS
ZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKEF1dG9Gb2N1c1V0aWxzLmZvY3VzRE9NQ29tcG9uZW50
LCB0aGlzKTtcblx0ICAgICAgICB9XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIGNhc2UgJ29w
dGlvbic6XG5cdCAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1
ZShvcHRpb25Qb3N0TW91bnQsIHRoaXMpO1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgfVxuXHRc
blx0ICAgIHJldHVybiBtb3VudEltYWdlO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIENy
ZWF0ZXMgbWFya3VwIGZvciB0aGUgb3BlbiB0YWcgYW5kIGFsbCBhdHRyaWJ1dGVzLlxuXHQgICAq
XG5cdCAgICogVGhpcyBtZXRob2QgaGFzIHNpZGUgZWZmZWN0cyBiZWNhdXNlIGV2ZW50cyBnZXQg
cmVnaXN0ZXJlZC5cblx0ICAgKlxuXHQgICAqIEl0ZXJhdGluZyBvdmVyIG9iamVjdCBwcm9wZXJ0
aWVzIGlzIGZhc3RlciB0aGFuIGl0ZXJhdGluZyBvdmVyIGFycmF5cy5cblx0ICAgKiBAc2VlIGh0
dHA6Ly9qc3BlcmYuY29tL29iai12cy1hcnItaXRlcmF0aW9uXG5cdCAgICpcblx0ICAgKiBAcHJp
dmF0ZVxuXHQgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNlcnZl
clJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuXHQgICAqIEBwYXJhbSB7b2JqZWN0
fSBwcm9wc1xuXHQgICAqIEByZXR1cm4ge3N0cmluZ30gTWFya3VwIG9mIG9wZW5pbmcgdGFnLlxu
XHQgICAqL1xuXHQgIF9jcmVhdGVPcGVuVGFnTWFya3VwQW5kUHV0TGlzdGVuZXJzOiBmdW5jdGlv
biAodHJhbnNhY3Rpb24sIHByb3BzKSB7XG5cdCAgICB2YXIgcmV0ID0gJzwnICsgdGhpcy5fY3Vy
cmVudEVsZW1lbnQudHlwZTtcblx0XG5cdCAgICBmb3IgKHZhciBwcm9wS2V5IGluIHByb3BzKSB7
XG5cdCAgICAgIGlmICghcHJvcHMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtcblx0ICAgICAg
ICBjb250aW51ZTtcblx0ICAgICAgfVxuXHQgICAgICB2YXIgcHJvcFZhbHVlID0gcHJvcHNbcHJv
cEtleV07XG5cdCAgICAgIGlmIChwcm9wVmFsdWUgPT0gbnVsbCkge1xuXHQgICAgICAgIGNvbnRp
bnVlO1xuXHQgICAgICB9XG5cdCAgICAgIGlmIChyZWdpc3RyYXRpb25OYW1lTW9kdWxlcy5oYXNP
d25Qcm9wZXJ0eShwcm9wS2V5KSkge1xuXHQgICAgICAgIGlmIChwcm9wVmFsdWUpIHtcblx0ICAg
ICAgICAgIGVucXVldWVQdXRMaXN0ZW5lcih0aGlzLCBwcm9wS2V5LCBwcm9wVmFsdWUsIHRyYW5z
YWN0aW9uKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgaWYgKHBy
b3BLZXkgPT09IFNUWUxFKSB7XG5cdCAgICAgICAgICBpZiAocHJvcFZhbHVlKSB7XG5cdCAgICAg
ICAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgICAgICAgIC8vIFNlZSBgX3VwZGF0ZURPTVBy
b3BlcnRpZXNgLiBzdHlsZSBibG9ja1xuXHQgICAgICAgICAgICAgIHRoaXMuX3ByZXZpb3VzU3R5
bGUgPSBwcm9wVmFsdWU7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgICAgcHJvcFZhbHVl
ID0gdGhpcy5fcHJldmlvdXNTdHlsZUNvcHkgPSBfYXNzaWduKHt9LCBwcm9wcy5zdHlsZSk7XG5c
dCAgICAgICAgICB9XG5cdCAgICAgICAgICBwcm9wVmFsdWUgPSBDU1NQcm9wZXJ0eU9wZXJhdGlv
bnMuY3JlYXRlTWFya3VwRm9yU3R5bGVzKHByb3BWYWx1ZSwgdGhpcyk7XG5cdCAgICAgICAgfVxu
XHQgICAgICAgIHZhciBtYXJrdXAgPSBudWxsO1xuXHQgICAgICAgIGlmICh0aGlzLl90YWcgIT0g
bnVsbCAmJiBpc0N1c3RvbUNvbXBvbmVudCh0aGlzLl90YWcsIHByb3BzKSkge1xuXHQgICAgICAg
ICAgaWYgKCFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkge1xuXHQgICAg
ICAgICAgICBtYXJrdXAgPSBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9yQ3Vz
dG9tQXR0cmlidXRlKHByb3BLZXksIHByb3BWYWx1ZSk7XG5cdCAgICAgICAgICB9XG5cdCAgICAg
ICAgfSBlbHNlIHtcblx0ICAgICAgICAgIG1hcmt1cCA9IERPTVByb3BlcnR5T3BlcmF0aW9ucy5j
cmVhdGVNYXJrdXBGb3JQcm9wZXJ0eShwcm9wS2V5LCBwcm9wVmFsdWUpO1xuXHQgICAgICAgIH1c
blx0ICAgICAgICBpZiAobWFya3VwKSB7XG5cdCAgICAgICAgICByZXQgKz0gJyAnICsgbWFya3Vw
O1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIC8vIEZvciBzdGF0
aWMgcGFnZXMsIG5vIG5lZWQgdG8gcHV0IFJlYWN0IElEIGFuZCBjaGVja3N1bS4gU2F2ZXMgbG90
cyBvZlxuXHQgICAgLy8gYnl0ZXMuXG5cdCAgICBpZiAodHJhbnNhY3Rpb24ucmVuZGVyVG9TdGF0
aWNNYXJrdXApIHtcblx0ICAgICAgcmV0dXJuIHJldDtcblx0ICAgIH1cblx0XG5cdCAgICBpZiAo
IXRoaXMuX2hvc3RQYXJlbnQpIHtcblx0ICAgICAgcmV0ICs9ICcgJyArIERPTVByb3BlcnR5T3Bl
cmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JSb290KCk7XG5cdCAgICB9XG5cdCAgICByZXQgKz0gJyAn
ICsgRE9NUHJvcGVydHlPcGVyYXRpb25zLmNyZWF0ZU1hcmt1cEZvcklEKHRoaXMuX2RvbUlEKTtc
blx0ICAgIHJldHVybiByZXQ7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogQ3JlYXRlcyBt
YXJrdXAgZm9yIHRoZSBjb250ZW50IGJldHdlZW4gdGhlIHRhZ3MuXG5cdCAgICpcblx0ICAgKiBA
cHJpdmF0ZVxuXHQgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbnxSZWFjdFNl
cnZlclJlbmRlcmluZ1RyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuXHQgICAqIEBwYXJhbSB7b2Jq
ZWN0fSBwcm9wc1xuXHQgICAqIEBwYXJhbSB7b2JqZWN0fSBjb250ZXh0XG5cdCAgICogQHJldHVy
biB7c3RyaW5nfSBDb250ZW50IG1hcmt1cC5cblx0ICAgKi9cblx0ICBfY3JlYXRlQ29udGVudE1h
cmt1cDogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBwcm9wcywgY29udGV4dCkge1xuXHQgICAgdmFy
IHJldCA9ICcnO1xuXHRcblx0ICAgIC8vIEludGVudGlvbmFsIHVzZSBvZiAhPSB0byBhdm9pZCBj
YXRjaGluZyB6ZXJvL2ZhbHNlLlxuXHQgICAgdmFyIGlubmVySFRNTCA9IHByb3BzLmRhbmdlcm91
c2x5U2V0SW5uZXJIVE1MO1xuXHQgICAgaWYgKGlubmVySFRNTCAhPSBudWxsKSB7XG5cdCAgICAg
IGlmIChpbm5lckhUTUwuX19odG1sICE9IG51bGwpIHtcblx0ICAgICAgICByZXQgPSBpbm5lckhU
TUwuX19odG1sO1xuXHQgICAgICB9XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB2YXIgY29udGVu
dFRvVXNlID0gQ09OVEVOVF9UWVBFU1t0eXBlb2YgcHJvcHMuY2hpbGRyZW5dID8gcHJvcHMuY2hp
bGRyZW4gOiBudWxsO1xuXHQgICAgICB2YXIgY2hpbGRyZW5Ub1VzZSA9IGNvbnRlbnRUb1VzZSAh
PSBudWxsID8gbnVsbCA6IHByb3BzLmNoaWxkcmVuO1xuXHQgICAgICBpZiAoY29udGVudFRvVXNl
ICE9IG51bGwpIHtcblx0ICAgICAgICAvLyBUT0RPOiBWYWxpZGF0ZSB0aGF0IHRleHQgaXMgYWxs
b3dlZCBhcyBhIGNoaWxkIG9mIHRoaXMgbm9kZVxuXHQgICAgICAgIHJldCA9IGVzY2FwZVRleHRD
b250ZW50Rm9yQnJvd3Nlcihjb250ZW50VG9Vc2UpO1xuXHQgICAgICAgIGlmIChmYWxzZSkge1xu
XHQgICAgICAgICAgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYuY2FsbCh0aGlzLCBjb250
ZW50VG9Vc2UpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSBlbHNlIGlmIChjaGlsZHJlblRvVXNl
ICE9IG51bGwpIHtcblx0ICAgICAgICB2YXIgbW91bnRJbWFnZXMgPSB0aGlzLm1vdW50Q2hpbGRy
ZW4oY2hpbGRyZW5Ub1VzZSwgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuXHQgICAgICAgIHJldCA9
IG1vdW50SW1hZ2VzLmpvaW4oJycpO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICBpZiAobmV3
bGluZUVhdGluZ1RhZ3NbdGhpcy5fdGFnXSAmJiByZXQuY2hhckF0KDApID09PSAnXFxuJykge1xu
XHQgICAgICAvLyB0ZXh0L2h0bWwgaWdub3JlcyB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHRoZXNl
IHRhZ3MgaWYgaXQncyBhIG5ld2xpbmVcblx0ICAgICAgLy8gUHJlZmVyIHRvIGJyZWFrIGFwcGxp
Y2F0aW9uL3htbCBvdmVyIHRleHQvaHRtbCAoZm9yIG5vdykgYnkgYWRkaW5nXG5cdCAgICAgIC8v
IGEgbmV3bGluZSBzcGVjaWZpY2FsbHkgdG8gZ2V0IGVhdGVuIGJ5IHRoZSBwYXJzZXIuIChBbHRl
cm5hdGVseSBmb3Jcblx0ICAgICAgLy8gdGV4dGFyZWFzLCByZXBsYWNpbmcgXCJeXFxuXCIgd2l0
aCBcIlxcclxcblwiIGRvZXNuJ3QgZ2V0IGVhdGVuLCBhbmQgdGhlIGZpcnN0XG5cdCAgICAgIC8v
IFxcciBpcyBub3JtYWxpemVkIG91dCBieSBIVE1MVGV4dEFyZWFFbGVtZW50I3ZhbHVlLilcblx0
ICAgICAgLy8gU2VlOiA8aHR0cDovL3d3dy53My5vcmcvVFIvaHRtbC1wb2x5Z2xvdC8jbmV3bGlu
ZXMtaW4tdGV4dGFyZWEtYW5kLXByZT5cblx0ICAgICAgLy8gU2VlOiA8aHR0cDovL3d3dy53My5v
cmcvVFIvaHRtbDUvc3ludGF4Lmh0bWwjZWxlbWVudC1yZXN0cmljdGlvbnM+XG5cdCAgICAgIC8v
IFNlZTogPGh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw1L3N5bnRheC5odG1sI25ld2xpbmVzPlxu
XHQgICAgICAvLyBTZWU6IFBhcnNpbmcgb2YgXCJ0ZXh0YXJlYVwiIFwibGlzdGluZ1wiIGFuZCBc
InByZVwiIGVsZW1lbnRzXG5cdCAgICAgIC8vICBmcm9tIDxodHRwOi8vd3d3LnczLm9yZy9UUi9o
dG1sNS9zeW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5ib2R5PlxuXHQgICAgICByZXR1cm4gJ1xc
bicgKyByZXQ7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICByZXR1cm4gcmV0O1xuXHQgICAgfVxu
XHQgIH0sXG5cdFxuXHQgIF9jcmVhdGVJbml0aWFsQ2hpbGRyZW46IGZ1bmN0aW9uICh0cmFuc2Fj
dGlvbiwgcHJvcHMsIGNvbnRleHQsIGxhenlUcmVlKSB7XG5cdCAgICAvLyBJbnRlbnRpb25hbCB1
c2Ugb2YgIT0gdG8gYXZvaWQgY2F0Y2hpbmcgemVyby9mYWxzZS5cblx0ICAgIHZhciBpbm5lckhU
TUwgPSBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTDtcblx0ICAgIGlmIChpbm5lckhUTUwg
IT0gbnVsbCkge1xuXHQgICAgICBpZiAoaW5uZXJIVE1MLl9faHRtbCAhPSBudWxsKSB7XG5cdCAg
ICAgICAgRE9NTGF6eVRyZWUucXVldWVIVE1MKGxhenlUcmVlLCBpbm5lckhUTUwuX19odG1sKTtc
blx0ICAgICAgfVxuXHQgICAgfSBlbHNlIHtcblx0ICAgICAgdmFyIGNvbnRlbnRUb1VzZSA9IENP
TlRFTlRfVFlQRVNbdHlwZW9mIHByb3BzLmNoaWxkcmVuXSA/IHByb3BzLmNoaWxkcmVuIDogbnVs
bDtcblx0ICAgICAgdmFyIGNoaWxkcmVuVG9Vc2UgPSBjb250ZW50VG9Vc2UgIT0gbnVsbCA/IG51
bGwgOiBwcm9wcy5jaGlsZHJlbjtcblx0ICAgICAgLy8gVE9ETzogVmFsaWRhdGUgdGhhdCB0ZXh0
IGlzIGFsbG93ZWQgYXMgYSBjaGlsZCBvZiB0aGlzIG5vZGVcblx0ICAgICAgaWYgKGNvbnRlbnRU
b1VzZSAhPSBudWxsKSB7XG5cdCAgICAgICAgLy8gQXZvaWQgc2V0dGluZyB0ZXh0Q29udGVudCB3
aGVuIHRoZSB0ZXh0IGlzIGVtcHR5LiBJbiBJRTExIHNldHRpbmdcblx0ICAgICAgICAvLyB0ZXh0
Q29udGVudCBvbiBhIHRleHQgYXJlYSB3aWxsIGNhdXNlIHRoZSBwbGFjZWhvbGRlciB0byBub3Rc
blx0ICAgICAgICAvLyBzaG93IHdpdGhpbiB0aGUgdGV4dGFyZWEgdW50aWwgaXQgaGFzIGJlZW4g
Zm9jdXNlZCBhbmQgYmx1cnJlZCBhZ2Fpbi5cblx0ICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5j
b20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzY3MzEjaXNzdWVjb21tZW50LTI1NDg3NDU1M1xuXHQg
ICAgICAgIGlmIChjb250ZW50VG9Vc2UgIT09ICcnKSB7XG5cdCAgICAgICAgICBpZiAoZmFsc2Up
IHtcblx0ICAgICAgICAgICAgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYuY2FsbCh0aGlz
LCBjb250ZW50VG9Vc2UpO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgRE9NTGF6eVRyZWUu
cXVldWVUZXh0KGxhenlUcmVlLCBjb250ZW50VG9Vc2UpO1xuXHQgICAgICAgIH1cblx0ICAgICAg
fSBlbHNlIGlmIChjaGlsZHJlblRvVXNlICE9IG51bGwpIHtcblx0ICAgICAgICB2YXIgbW91bnRJ
bWFnZXMgPSB0aGlzLm1vdW50Q2hpbGRyZW4oY2hpbGRyZW5Ub1VzZSwgdHJhbnNhY3Rpb24sIGNv
bnRleHQpO1xuXHQgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbW91bnRJbWFnZXMubGVuZ3Ro
OyBpKyspIHtcblx0ICAgICAgICAgIERPTUxhenlUcmVlLnF1ZXVlQ2hpbGQobGF6eVRyZWUsIG1v
dW50SW1hZ2VzW2ldKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9LFxu
XHRcblx0ICAvKipcblx0ICAgKiBSZWNlaXZlcyBhIG5leHQgZWxlbWVudCBhbmQgdXBkYXRlcyB0
aGUgY29tcG9uZW50LlxuXHQgICAqXG5cdCAgICogQGludGVybmFsXG5cdCAgICogQHBhcmFtIHtS
ZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50XG5cdCAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRy
YW5zYWN0aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG5c
dCAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcblx0ICAgKi9cblx0ICByZWNlaXZlQ29tcG9u
ZW50OiBmdW5jdGlvbiAobmV4dEVsZW1lbnQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG5cdCAg
ICB2YXIgcHJldkVsZW1lbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudDtcblx0ICAgIHRoaXMuX2N1
cnJlbnRFbGVtZW50ID0gbmV4dEVsZW1lbnQ7XG5cdCAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudCh0
cmFuc2FjdGlvbiwgcHJldkVsZW1lbnQsIG5leHRFbGVtZW50LCBjb250ZXh0KTtcblx0ICB9LFxu
XHRcblx0ICAvKipcblx0ICAgKiBVcGRhdGVzIGEgRE9NIGNvbXBvbmVudCBhZnRlciBpdCBoYXMg
YWxyZWFkeSBiZWVuIGFsbG9jYXRlZCBhbmRcblx0ICAgKiBhdHRhY2hlZCB0byB0aGUgRE9NLiBS
ZWNvbmNpbGVzIHRoZSByb290IERPTSBub2RlLCB0aGVuIHJlY3Vyc2VzLlxuXHQgICAqXG5cdCAg
ICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuXHQgICAq
IEBwYXJhbSB7UmVhY3RFbGVtZW50fSBwcmV2RWxlbWVudFxuXHQgICAqIEBwYXJhbSB7UmVhY3RF
bGVtZW50fSBuZXh0RWxlbWVudFxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqIEBvdmVycmlkYWJs
ZVxuXHQgICAqL1xuXHQgIHVwZGF0ZUNvbXBvbmVudDogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBw
cmV2RWxlbWVudCwgbmV4dEVsZW1lbnQsIGNvbnRleHQpIHtcblx0ICAgIHZhciBsYXN0UHJvcHMg
PSBwcmV2RWxlbWVudC5wcm9wcztcblx0ICAgIHZhciBuZXh0UHJvcHMgPSB0aGlzLl9jdXJyZW50
RWxlbWVudC5wcm9wcztcblx0XG5cdCAgICBzd2l0Y2ggKHRoaXMuX3RhZykge1xuXHQgICAgICBj
YXNlICdpbnB1dCc6XG5cdCAgICAgICAgbGFzdFByb3BzID0gUmVhY3RET01JbnB1dC5nZXRIb3N0
UHJvcHModGhpcywgbGFzdFByb3BzKTtcblx0ICAgICAgICBuZXh0UHJvcHMgPSBSZWFjdERPTUlu
cHV0LmdldEhvc3RQcm9wcyh0aGlzLCBuZXh0UHJvcHMpO1xuXHQgICAgICAgIGJyZWFrO1xuXHQg
ICAgICBjYXNlICdvcHRpb24nOlxuXHQgICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NT3B0aW9u
LmdldEhvc3RQcm9wcyh0aGlzLCBsYXN0UHJvcHMpO1xuXHQgICAgICAgIG5leHRQcm9wcyA9IFJl
YWN0RE9NT3B0aW9uLmdldEhvc3RQcm9wcyh0aGlzLCBuZXh0UHJvcHMpO1xuXHQgICAgICAgIGJy
ZWFrO1xuXHQgICAgICBjYXNlICdzZWxlY3QnOlxuXHQgICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0
RE9NU2VsZWN0LmdldEhvc3RQcm9wcyh0aGlzLCBsYXN0UHJvcHMpO1xuXHQgICAgICAgIG5leHRQ
cm9wcyA9IFJlYWN0RE9NU2VsZWN0LmdldEhvc3RQcm9wcyh0aGlzLCBuZXh0UHJvcHMpO1xuXHQg
ICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICd0ZXh0YXJlYSc6XG5cdCAgICAgICAgbGFzdFBy
b3BzID0gUmVhY3RET01UZXh0YXJlYS5nZXRIb3N0UHJvcHModGhpcywgbGFzdFByb3BzKTtcblx0
ICAgICAgICBuZXh0UHJvcHMgPSBSZWFjdERPTVRleHRhcmVhLmdldEhvc3RQcm9wcyh0aGlzLCBu
ZXh0UHJvcHMpO1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgfVxuXHRcblx0ICAgIGFzc2VydFZh
bGlkUHJvcHModGhpcywgbmV4dFByb3BzKTtcblx0ICAgIHRoaXMuX3VwZGF0ZURPTVByb3BlcnRp
ZXMobGFzdFByb3BzLCBuZXh0UHJvcHMsIHRyYW5zYWN0aW9uKTtcblx0ICAgIHRoaXMuX3VwZGF0
ZURPTUNoaWxkcmVuKGxhc3RQcm9wcywgbmV4dFByb3BzLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7
XG5cdFxuXHQgICAgc3dpdGNoICh0aGlzLl90YWcpIHtcblx0ICAgICAgY2FzZSAnaW5wdXQnOlxu
XHQgICAgICAgIC8vIFVwZGF0ZSB0aGUgd3JhcHBlciBhcm91bmQgaW5wdXRzICphZnRlciogdXBk
YXRpbmcgcHJvcHMuIFRoaXMgaGFzIHRvXG5cdCAgICAgICAgLy8gaGFwcGVuIGFmdGVyIGBfdXBk
YXRlRE9NUHJvcGVydGllc2AuIE90aGVyd2lzZSBIVE1MNSBpbnB1dCB2YWxpZGF0aW9uc1xuXHQg
ICAgICAgIC8vIHJhaXNlIHdhcm5pbmdzIGFuZCBwcmV2ZW50IHRoZSBuZXcgdmFsdWUgZnJvbSBi
ZWluZyBhc3NpZ25lZC5cblx0ICAgICAgICBSZWFjdERPTUlucHV0LnVwZGF0ZVdyYXBwZXIodGhp
cyk7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIGNhc2UgJ3RleHRhcmVhJzpcblx0ICAgICAg
ICBSZWFjdERPTVRleHRhcmVhLnVwZGF0ZVdyYXBwZXIodGhpcyk7XG5cdCAgICAgICAgYnJlYWs7
XG5cdCAgICAgIGNhc2UgJ3NlbGVjdCc6XG5cdCAgICAgICAgLy8gPHNlbGVjdD4gdmFsdWUgdXBk
YXRlIG5lZWRzIHRvIG9jY3VyIGFmdGVyIDxvcHRpb24+IGNoaWxkcmVuXG5cdCAgICAgICAgLy8g
cmVjb25jaWxpYXRpb25cblx0ICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHko
KS5lbnF1ZXVlKHBvc3RVcGRhdGVTZWxlY3RXcmFwcGVyLCB0aGlzKTtcblx0ICAgICAgICBicmVh
aztcblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBSZWNvbmNpbGVzIHRoZSBw
cm9wZXJ0aWVzIGJ5IGRldGVjdGluZyBkaWZmZXJlbmNlcyBpbiBwcm9wZXJ0eSB2YWx1ZXMgYW5k
XG5cdCAgICogdXBkYXRpbmcgdGhlIERPTSBhcyBuZWNlc3NhcnkuIFRoaXMgZnVuY3Rpb24gaXMg
cHJvYmFibHkgdGhlIHNpbmdsZSBtb3N0XG5cdCAgICogY3JpdGljYWwgcGF0aCBmb3IgcGVyZm9y
bWFuY2Ugb3B0aW1pemF0aW9uLlxuXHQgICAqXG5cdCAgICogVE9ETzogQmVuY2htYXJrIHdoZXRo
ZXIgY2hlY2tpbmcgZm9yIGNoYW5nZWQgdmFsdWVzIGluIG1lbW9yeSBhY3R1YWxseVxuXHQgICAq
ICAgICAgIGltcHJvdmVzIHBlcmZvcm1hbmNlIChlc3BlY2lhbGx5IHN0YXRpY2FsbHkgcG9zaXRp
b25lZCBlbGVtZW50cykuXG5cdCAgICogVE9ETzogQmVuY2htYXJrIHRoZSBlZmZlY3RzIG9mIHB1
dHRpbmcgdGhpcyBhdCB0aGUgdG9wIHNpbmNlIDk5JSBvZiBwcm9wc1xuXHQgICAqICAgICAgIGRv
IG5vdCBjaGFuZ2UgZm9yIGEgZ2l2ZW4gcmVjb25jaWxpYXRpb24uXG5cdCAgICogVE9ETzogQmVu
Y2htYXJrIGFyZWFzIHRoYXQgY2FuIGJlIGltcHJvdmVkIHdpdGggY2FjaGluZy5cblx0ICAgKlxu
XHQgICAqIEBwcml2YXRlXG5cdCAgICogQHBhcmFtIHtvYmplY3R9IGxhc3RQcm9wc1xuXHQgICAq
IEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHNcblx0ICAgKiBAcGFyYW0gez9ET01FbGVtZW50fSBu
b2RlXG5cdCAgICovXG5cdCAgX3VwZGF0ZURPTVByb3BlcnRpZXM6IGZ1bmN0aW9uIChsYXN0UHJv
cHMsIG5leHRQcm9wcywgdHJhbnNhY3Rpb24pIHtcblx0ICAgIHZhciBwcm9wS2V5O1xuXHQgICAg
dmFyIHN0eWxlTmFtZTtcblx0ICAgIHZhciBzdHlsZVVwZGF0ZXM7XG5cdCAgICBmb3IgKHByb3BL
ZXkgaW4gbGFzdFByb3BzKSB7XG5cdCAgICAgIGlmIChuZXh0UHJvcHMuaGFzT3duUHJvcGVydHko
cHJvcEtleSkgfHwgIWxhc3RQcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSB8fCBsYXN0UHJv
cHNbcHJvcEtleV0gPT0gbnVsbCkge1xuXHQgICAgICAgIGNvbnRpbnVlO1xuXHQgICAgICB9XG5c
dCAgICAgIGlmIChwcm9wS2V5ID09PSBTVFlMRSkge1xuXHQgICAgICAgIHZhciBsYXN0U3R5bGUg
PSB0aGlzLl9wcmV2aW91c1N0eWxlQ29weTtcblx0ICAgICAgICBmb3IgKHN0eWxlTmFtZSBpbiBs
YXN0U3R5bGUpIHtcblx0ICAgICAgICAgIGlmIChsYXN0U3R5bGUuaGFzT3duUHJvcGVydHkoc3R5
bGVOYW1lKSkge1xuXHQgICAgICAgICAgICBzdHlsZVVwZGF0ZXMgPSBzdHlsZVVwZGF0ZXMgfHwg
e307XG5cdCAgICAgICAgICAgIHN0eWxlVXBkYXRlc1tzdHlsZU5hbWVdID0gJyc7XG5cdCAgICAg
ICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5ID0g
bnVsbDtcblx0ICAgICAgfSBlbHNlIGlmIChyZWdpc3RyYXRpb25OYW1lTW9kdWxlcy5oYXNPd25Q
cm9wZXJ0eShwcm9wS2V5KSkge1xuXHQgICAgICAgIGlmIChsYXN0UHJvcHNbcHJvcEtleV0pIHtc
blx0ICAgICAgICAgIC8vIE9ubHkgY2FsbCBkZWxldGVMaXN0ZW5lciBpZiB0aGVyZSB3YXMgYSBs
aXN0ZW5lciBwcmV2aW91c2x5IG9yXG5cdCAgICAgICAgICAvLyBlbHNlIHdpbGxEZWxldGVMaXN0
ZW5lciBnZXRzIGNhbGxlZCB3aGVuIHRoZXJlIHdhc24ndCBhY3R1YWxseSBhXG5cdCAgICAgICAg
ICAvLyBsaXN0ZW5lciAoZS5nLiwgb25DbGljaz17bnVsbH0pXG5cdCAgICAgICAgICBkZWxldGVM
aXN0ZW5lcih0aGlzLCBwcm9wS2V5KTtcblx0ICAgICAgICB9XG5cdCAgICAgIH0gZWxzZSBpZiAo
aXNDdXN0b21Db21wb25lbnQodGhpcy5fdGFnLCBsYXN0UHJvcHMpKSB7XG5cdCAgICAgICAgaWYg
KCFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkge1xuXHQgICAgICAgICAg
RE9NUHJvcGVydHlPcGVyYXRpb25zLmRlbGV0ZVZhbHVlRm9yQXR0cmlidXRlKGdldE5vZGUodGhp
cyksIHByb3BLZXkpO1xuXHQgICAgICAgIH1cblx0ICAgICAgfSBlbHNlIGlmIChET01Qcm9wZXJ0
eS5wcm9wZXJ0aWVzW3Byb3BLZXldIHx8IERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0cmlidXRlKHBy
b3BLZXkpKSB7XG5cdCAgICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLmRlbGV0ZVZhbHVlRm9y
UHJvcGVydHkoZ2V0Tm9kZSh0aGlzKSwgcHJvcEtleSk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0
ICAgIGZvciAocHJvcEtleSBpbiBuZXh0UHJvcHMpIHtcblx0ICAgICAgdmFyIG5leHRQcm9wID0g
bmV4dFByb3BzW3Byb3BLZXldO1xuXHQgICAgICB2YXIgbGFzdFByb3AgPSBwcm9wS2V5ID09PSBT
VFlMRSA/IHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5IDogbGFzdFByb3BzICE9IG51bGwgPyBsYXN0
UHJvcHNbcHJvcEtleV0gOiB1bmRlZmluZWQ7XG5cdCAgICAgIGlmICghbmV4dFByb3BzLmhhc093
blByb3BlcnR5KHByb3BLZXkpIHx8IG5leHRQcm9wID09PSBsYXN0UHJvcCB8fCBuZXh0UHJvcCA9
PSBudWxsICYmIGxhc3RQcm9wID09IG51bGwpIHtcblx0ICAgICAgICBjb250aW51ZTtcblx0ICAg
ICAgfVxuXHQgICAgICBpZiAocHJvcEtleSA9PT0gU1RZTEUpIHtcblx0ICAgICAgICBpZiAobmV4
dFByb3ApIHtcblx0ICAgICAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgICAgICBjaGVja0Fu
ZFdhcm5Gb3JNdXRhdGVkU3R5bGUodGhpcy5fcHJldmlvdXNTdHlsZUNvcHksIHRoaXMuX3ByZXZp
b3VzU3R5bGUsIHRoaXMpO1xuXHQgICAgICAgICAgICB0aGlzLl9wcmV2aW91c1N0eWxlID0gbmV4
dFByb3A7XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgICBuZXh0UHJvcCA9IHRoaXMuX3ByZXZp
b3VzU3R5bGVDb3B5ID0gX2Fzc2lnbih7fSwgbmV4dFByb3ApO1xuXHQgICAgICAgIH0gZWxzZSB7
XG5cdCAgICAgICAgICB0aGlzLl9wcmV2aW91c1N0eWxlQ29weSA9IG51bGw7XG5cdCAgICAgICAg
fVxuXHQgICAgICAgIGlmIChsYXN0UHJvcCkge1xuXHQgICAgICAgICAgLy8gVW5zZXQgc3R5bGVz
IG9uIGBsYXN0UHJvcGAgYnV0IG5vdCBvbiBgbmV4dFByb3BgLlxuXHQgICAgICAgICAgZm9yIChz
dHlsZU5hbWUgaW4gbGFzdFByb3ApIHtcblx0ICAgICAgICAgICAgaWYgKGxhc3RQcm9wLmhhc093
blByb3BlcnR5KHN0eWxlTmFtZSkgJiYgKCFuZXh0UHJvcCB8fCAhbmV4dFByb3AuaGFzT3duUHJv
cGVydHkoc3R5bGVOYW1lKSkpIHtcblx0ICAgICAgICAgICAgICBzdHlsZVVwZGF0ZXMgPSBzdHls
ZVVwZGF0ZXMgfHwge307XG5cdCAgICAgICAgICAgICAgc3R5bGVVcGRhdGVzW3N0eWxlTmFtZV0g
PSAnJztcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgICAgfVxuXHQgICAgICAgICAgLy8gVXBk
YXRlIHN0eWxlcyB0aGF0IGNoYW5nZWQgc2luY2UgYGxhc3RQcm9wYC5cblx0ICAgICAgICAgIGZv
ciAoc3R5bGVOYW1lIGluIG5leHRQcm9wKSB7XG5cdCAgICAgICAgICAgIGlmIChuZXh0UHJvcC5o
YXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUpICYmIGxhc3RQcm9wW3N0eWxlTmFtZV0gIT09IG5leHRQ
cm9wW3N0eWxlTmFtZV0pIHtcblx0ICAgICAgICAgICAgICBzdHlsZVVwZGF0ZXMgPSBzdHlsZVVw
ZGF0ZXMgfHwge307XG5cdCAgICAgICAgICAgICAgc3R5bGVVcGRhdGVzW3N0eWxlTmFtZV0gPSBu
ZXh0UHJvcFtzdHlsZU5hbWVdO1xuXHQgICAgICAgICAgICB9XG5cdCAgICAgICAgICB9XG5cdCAg
ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIC8vIFJlbGllcyBvbiBgdXBkYXRlU3R5bGVzQnlJ
RGAgbm90IG11dGF0aW5nIGBzdHlsZVVwZGF0ZXNgLlxuXHQgICAgICAgICAgc3R5bGVVcGRhdGVz
ID0gbmV4dFByb3A7XG5cdCAgICAgICAgfVxuXHQgICAgICB9IGVsc2UgaWYgKHJlZ2lzdHJhdGlv
bk5hbWVNb2R1bGVzLmhhc093blByb3BlcnR5KHByb3BLZXkpKSB7XG5cdCAgICAgICAgaWYgKG5l
eHRQcm9wKSB7XG5cdCAgICAgICAgICBlbnF1ZXVlUHV0TGlzdGVuZXIodGhpcywgcHJvcEtleSwg
bmV4dFByb3AsIHRyYW5zYWN0aW9uKTtcblx0ICAgICAgICB9IGVsc2UgaWYgKGxhc3RQcm9wKSB7
XG5cdCAgICAgICAgICBkZWxldGVMaXN0ZW5lcih0aGlzLCBwcm9wS2V5KTtcblx0ICAgICAgICB9
XG5cdCAgICAgIH0gZWxzZSBpZiAoaXNDdXN0b21Db21wb25lbnQodGhpcy5fdGFnLCBuZXh0UHJv
cHMpKSB7XG5cdCAgICAgICAgaWYgKCFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9w
S2V5KSkge1xuXHQgICAgICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldFZhbHVlRm9yQXR0
cmlidXRlKGdldE5vZGUodGhpcyksIHByb3BLZXksIG5leHRQcm9wKTtcblx0ICAgICAgICB9XG5c
dCAgICAgIH0gZWxzZSBpZiAoRE9NUHJvcGVydHkucHJvcGVydGllc1twcm9wS2V5XSB8fCBET01Q
cm9wZXJ0eS5pc0N1c3RvbUF0dHJpYnV0ZShwcm9wS2V5KSkge1xuXHQgICAgICAgIHZhciBub2Rl
ID0gZ2V0Tm9kZSh0aGlzKTtcblx0ICAgICAgICAvLyBJZiB3ZSdyZSB1cGRhdGluZyB0byBudWxs
IG9yIHVuZGVmaW5lZCwgd2Ugc2hvdWxkIHJlbW92ZSB0aGUgcHJvcGVydHlcblx0ICAgICAgICAv
LyBmcm9tIHRoZSBET00gbm9kZSBpbnN0ZWFkIG9mIGluYWR2ZXJ0ZW50bHkgc2V0dGluZyB0byBh
IHN0cmluZy4gVGhpc1xuXHQgICAgICAgIC8vIGJyaW5ncyB1cyBpbiBsaW5lIHdpdGggdGhlIHNh
bWUgYmVoYXZpb3Igd2UgaGF2ZSBvbiBpbml0aWFsIHJlbmRlci5cblx0ICAgICAgICBpZiAobmV4
dFByb3AgIT0gbnVsbCkge1xuXHQgICAgICAgICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldFZh
bHVlRm9yUHJvcGVydHkobm9kZSwgcHJvcEtleSwgbmV4dFByb3ApO1xuXHQgICAgICAgIH0gZWxz
ZSB7XG5cdCAgICAgICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuZGVsZXRlVmFsdWVGb3JQcm9w
ZXJ0eShub2RlLCBwcm9wS2V5KTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH1cblx0
ICAgIGlmIChzdHlsZVVwZGF0ZXMpIHtcblx0ICAgICAgQ1NTUHJvcGVydHlPcGVyYXRpb25zLnNl
dFZhbHVlRm9yU3R5bGVzKGdldE5vZGUodGhpcyksIHN0eWxlVXBkYXRlcywgdGhpcyk7XG5cdCAg
ICB9XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogUmVjb25jaWxlcyB0aGUgY2hpbGRyZW4g
d2l0aCB0aGUgdmFyaW91cyBwcm9wZXJ0aWVzIHRoYXQgYWZmZWN0IHRoZVxuXHQgICAqIGNoaWxk
cmVuIGNvbnRlbnQuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge29iamVjdH0gbGFzdFByb3BzXG5c
dCAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wc1xuXHQgICAqIEBwYXJhbSB7UmVhY3RSZWNv
bmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cblx0ICAgKiBAcGFyYW0ge29iamVjdH0gY29u
dGV4dFxuXHQgICAqL1xuXHQgIF91cGRhdGVET01DaGlsZHJlbjogZnVuY3Rpb24gKGxhc3RQcm9w
cywgbmV4dFByb3BzLCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuXHQgICAgdmFyIGxhc3RDb250
ZW50ID0gQ09OVEVOVF9UWVBFU1t0eXBlb2YgbGFzdFByb3BzLmNoaWxkcmVuXSA/IGxhc3RQcm9w
cy5jaGlsZHJlbiA6IG51bGw7XG5cdCAgICB2YXIgbmV4dENvbnRlbnQgPSBDT05URU5UX1RZUEVT
W3R5cGVvZiBuZXh0UHJvcHMuY2hpbGRyZW5dID8gbmV4dFByb3BzLmNoaWxkcmVuIDogbnVsbDtc
blx0XG5cdCAgICB2YXIgbGFzdEh0bWwgPSBsYXN0UHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhU
TUwgJiYgbGFzdFByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbDtcblx0ICAgIHZh
ciBuZXh0SHRtbCA9IG5leHRQcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCAmJiBuZXh0UHJv
cHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sO1xuXHRcblx0ICAgIC8vIE5vdGUgdGhl
IHVzZSBvZiBgIT1gIHdoaWNoIGNoZWNrcyBmb3IgbnVsbCBvciB1bmRlZmluZWQuXG5cdCAgICB2
YXIgbGFzdENoaWxkcmVuID0gbGFzdENvbnRlbnQgIT0gbnVsbCA/IG51bGwgOiBsYXN0UHJvcHMu
Y2hpbGRyZW47XG5cdCAgICB2YXIgbmV4dENoaWxkcmVuID0gbmV4dENvbnRlbnQgIT0gbnVsbCA/
IG51bGwgOiBuZXh0UHJvcHMuY2hpbGRyZW47XG5cdFxuXHQgICAgLy8gSWYgd2UncmUgc3dpdGNo
aW5nIGZyb20gY2hpbGRyZW4gdG8gY29udGVudC9odG1sIG9yIHZpY2UgdmVyc2EsIHJlbW92ZVxu
XHQgICAgLy8gdGhlIG9sZCBjb250ZW50XG5cdCAgICB2YXIgbGFzdEhhc0NvbnRlbnRPckh0bWwg
PSBsYXN0Q29udGVudCAhPSBudWxsIHx8IGxhc3RIdG1sICE9IG51bGw7XG5cdCAgICB2YXIgbmV4
dEhhc0NvbnRlbnRPckh0bWwgPSBuZXh0Q29udGVudCAhPSBudWxsIHx8IG5leHRIdG1sICE9IG51
bGw7XG5cdCAgICBpZiAobGFzdENoaWxkcmVuICE9IG51bGwgJiYgbmV4dENoaWxkcmVuID09IG51
bGwpIHtcblx0ICAgICAgdGhpcy51cGRhdGVDaGlsZHJlbihudWxsLCB0cmFuc2FjdGlvbiwgY29u
dGV4dCk7XG5cdCAgICB9IGVsc2UgaWYgKGxhc3RIYXNDb250ZW50T3JIdG1sICYmICFuZXh0SGFz
Q29udGVudE9ySHRtbCkge1xuXHQgICAgICB0aGlzLnVwZGF0ZVRleHRDb250ZW50KCcnKTtcblx0
ICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdU
b29sLm9uU2V0Q2hpbGRyZW4odGhpcy5fZGVidWdJRCwgW10pO1xuXHQgICAgICB9XG5cdCAgICB9
XG5cdFxuXHQgICAgaWYgKG5leHRDb250ZW50ICE9IG51bGwpIHtcblx0ICAgICAgaWYgKGxhc3RD
b250ZW50ICE9PSBuZXh0Q29udGVudCkge1xuXHQgICAgICAgIHRoaXMudXBkYXRlVGV4dENvbnRl
bnQoJycgKyBuZXh0Q29udGVudCk7XG5cdCAgICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAgICAg
ICBzZXRBbmRWYWxpZGF0ZUNvbnRlbnRDaGlsZERldi5jYWxsKHRoaXMsIG5leHRDb250ZW50KTtc
blx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgIH0gZWxzZSBpZiAobmV4dEh0bWwgIT0gbnVs
bCkge1xuXHQgICAgICBpZiAobGFzdEh0bWwgIT09IG5leHRIdG1sKSB7XG5cdCAgICAgICAgdGhp
cy51cGRhdGVNYXJrdXAoJycgKyBuZXh0SHRtbCk7XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKGZh
bHNlKSB7XG5cdCAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uU2V0Q2hp
bGRyZW4odGhpcy5fZGVidWdJRCwgW10pO1xuXHQgICAgICB9XG5cdCAgICB9IGVsc2UgaWYgKG5l
eHRDaGlsZHJlbiAhPSBudWxsKSB7XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIHNl
dEFuZFZhbGlkYXRlQ29udGVudENoaWxkRGV2LmNhbGwodGhpcywgbnVsbCk7XG5cdCAgICAgIH1c
blx0XG5cdCAgICAgIHRoaXMudXBkYXRlQ2hpbGRyZW4obmV4dENoaWxkcmVuLCB0cmFuc2FjdGlv
biwgY29udGV4dCk7XG5cdCAgICB9XG5cdCAgfSxcblx0XG5cdCAgZ2V0SG9zdE5vZGU6IGZ1bmN0
aW9uICgpIHtcblx0ICAgIHJldHVybiBnZXROb2RlKHRoaXMpO1xuXHQgIH0sXG5cdFxuXHQgIC8q
KlxuXHQgICAqIERlc3Ryb3lzIGFsbCBldmVudCByZWdpc3RyYXRpb25zIGZvciB0aGlzIGluc3Rh
bmNlLiBEb2VzIG5vdCByZW1vdmUgZnJvbVxuXHQgICAqIHRoZSBET00uIFRoYXQgbXVzdCBiZSBk
b25lIGJ5IHRoZSBwYXJlbnQuXG5cdCAgICpcblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0
ICB1bm1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAoc2FmZWx5KSB7XG5cdCAgICBzd2l0Y2ggKHRo
aXMuX3RhZykge1xuXHQgICAgICBjYXNlICdhdWRpbyc6XG5cdCAgICAgIGNhc2UgJ2Zvcm0nOlxu
XHQgICAgICBjYXNlICdpZnJhbWUnOlxuXHQgICAgICBjYXNlICdpbWcnOlxuXHQgICAgICBjYXNl
ICdsaW5rJzpcblx0ICAgICAgY2FzZSAnb2JqZWN0Jzpcblx0ICAgICAgY2FzZSAnc291cmNlJzpc
blx0ICAgICAgY2FzZSAndmlkZW8nOlxuXHQgICAgICAgIHZhciBsaXN0ZW5lcnMgPSB0aGlzLl93
cmFwcGVyU3RhdGUubGlzdGVuZXJzO1xuXHQgICAgICAgIGlmIChsaXN0ZW5lcnMpIHtcblx0ICAg
ICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlzdGVuZXJzLmxlbmd0aDsgaSsrKSB7XG5cdCAg
ICAgICAgICAgIGxpc3RlbmVyc1tpXS5yZW1vdmUoKTtcblx0ICAgICAgICAgIH1cblx0ICAgICAg
ICB9XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIGNhc2UgJ2lucHV0Jzpcblx0ICAgICAgY2Fz
ZSAndGV4dGFyZWEnOlxuXHQgICAgICAgIGlucHV0VmFsdWVUcmFja2luZy5zdG9wVHJhY2tpbmco
dGhpcyk7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAgICAgIGNhc2UgJ2h0bWwnOlxuXHQgICAgICBj
YXNlICdoZWFkJzpcblx0ICAgICAgY2FzZSAnYm9keSc6XG5cdCAgICAgICAgLyoqXG5cdCAgICAg
ICAgICogQ29tcG9uZW50cyBsaWtlIDxodG1sPiA8aGVhZD4gYW5kIDxib2R5PiBjYW4ndCBiZSBy
ZW1vdmVkIG9yIGFkZGVkXG5cdCAgICAgICAgICogZWFzaWx5IGluIGEgY3Jvc3MtYnJvd3NlciB3
YXksIGhvd2V2ZXIgaXQncyB2YWx1YWJsZSB0byBiZSBhYmxlIHRvXG5cdCAgICAgICAgICogdGFr
ZSBhZHZhbnRhZ2Ugb2YgUmVhY3QncyByZWNvbmNpbGlhdGlvbiBmb3Igc3R5bGluZyBhbmQgPHRp
dGxlPlxuXHQgICAgICAgICAqIG1hbmFnZW1lbnQuIFNvIHdlIGp1c3QgZG9jdW1lbnQgaXQgYW5k
IHRocm93IGluIGRhbmdlcm91cyBjYXNlcy5cblx0ICAgICAgICAgKi9cblx0ICAgICAgICAgdHJ1
ZSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJzwlcz4gdHJpZWQgdG8gdW5tb3VudC4gQmVj
YXVzZSBvZiBjcm9zcy1icm93c2VyIHF1aXJrcyBpdCBpcyBpbXBvc3NpYmxlIHRvIHVubW91bnQg
c29tZSB0b3AtbGV2ZWwgY29tcG9uZW50cyAoZWcgPGh0bWw+LCA8aGVhZD4sIGFuZCA8Ym9keT4p
IHJlbGlhYmx5IGFuZCBlZmZpY2llbnRseS4gVG8gZml4IHRoaXMsIGhhdmUgYSBzaW5nbGUgdG9w
LWxldmVsIGNvbXBvbmVudCB0aGF0IG5ldmVyIHVubW91bnRzIHJlbmRlciB0aGVzZSBlbGVtZW50
cy4nLCB0aGlzLl90YWcpIDogX3Byb2RJbnZhcmlhbnQoJzY2JywgdGhpcy5fdGFnKSA6IHZvaWQg
MDtcblx0ICAgICAgICBicmVhaztcblx0ICAgIH1cblx0XG5cdCAgICB0aGlzLnVubW91bnRDaGls
ZHJlbihzYWZlbHkpO1xuXHQgICAgUmVhY3RET01Db21wb25lbnRUcmVlLnVuY2FjaGVOb2RlKHRo
aXMpO1xuXHQgICAgRXZlbnRQbHVnaW5IdWIuZGVsZXRlQWxsTGlzdGVuZXJzKHRoaXMpO1xuXHQg
ICAgdGhpcy5fcm9vdE5vZGVJRCA9IDA7XG5cdCAgICB0aGlzLl9kb21JRCA9IDA7XG5cdCAgICB0
aGlzLl93cmFwcGVyU3RhdGUgPSBudWxsO1xuXHRcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAg
ICBzZXRBbmRWYWxpZGF0ZUNvbnRlbnRDaGlsZERldi5jYWxsKHRoaXMsIG51bGwpO1xuXHQgICAg
fVxuXHQgIH0sXG5cdFxuXHQgIGdldFB1YmxpY0luc3RhbmNlOiBmdW5jdGlvbiAoKSB7XG5cdCAg
ICByZXR1cm4gZ2V0Tm9kZSh0aGlzKTtcblx0ICB9XG5cdH07XG5cdFxuXHRfYXNzaWduKFJlYWN0
RE9NQ29tcG9uZW50LnByb3RvdHlwZSwgUmVhY3RET01Db21wb25lbnQuTWl4aW4sIFJlYWN0TXVs
dGlDaGlsZC5NaXhpbik7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NQ29tcG9uZW50
O1xuXG4vKioqLyB9LFxuLyogMTM5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMs
IF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgdmFsaWRh
dGVET01OZXN0aW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0OSk7XG5cdFxuXHR2YXIgRE9DX05P
REVfVFlQRSA9IDk7XG5cdFxuXHRmdW5jdGlvbiBSZWFjdERPTUNvbnRhaW5lckluZm8odG9wTGV2
ZWxXcmFwcGVyLCBub2RlKSB7XG5cdCAgdmFyIGluZm8gPSB7XG5cdCAgICBfdG9wTGV2ZWxXcmFw
cGVyOiB0b3BMZXZlbFdyYXBwZXIsXG5cdCAgICBfaWRDb3VudGVyOiAxLFxuXHQgICAgX293bmVy
RG9jdW1lbnQ6IG5vZGUgPyBub2RlLm5vZGVUeXBlID09PSBET0NfTk9ERV9UWVBFID8gbm9kZSA6
IG5vZGUub3duZXJEb2N1bWVudCA6IG51bGwsXG5cdCAgICBfbm9kZTogbm9kZSxcblx0ICAgIF90
YWc6IG5vZGUgPyBub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkgOiBudWxsLFxuXHQgICAgX25h
bWVzcGFjZVVSSTogbm9kZSA/IG5vZGUubmFtZXNwYWNlVVJJIDogbnVsbFxuXHQgIH07XG5cdCAg
aWYgKGZhbHNlKSB7XG5cdCAgICBpbmZvLl9hbmNlc3RvckluZm8gPSBub2RlID8gdmFsaWRhdGVE
T01OZXN0aW5nLnVwZGF0ZWRBbmNlc3RvckluZm8obnVsbCwgaW5mby5fdGFnLCBudWxsKSA6IG51
bGw7XG5cdCAgfVxuXHQgIHJldHVybiBpbmZvO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9
IFJlYWN0RE9NQ29udGFpbmVySW5mbztcblxuLyoqKi8gfSxcbi8qIDE0MCAqL1xuLyoqKi8gZnVu
Y3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5c
dCAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMg
ZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJp
Y3QnO1xuXHRcblx0dmFyIF9hc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRcblx0
dmFyIERPTUxhenlUcmVlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNCk7XG5cdHZhciBSZWFjdERP
TUNvbXBvbmVudFRyZWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuXHRcblx0dmFyIFJlYWN0
RE9NRW1wdHlDb21wb25lbnQgPSBmdW5jdGlvbiAoaW5zdGFudGlhdGUpIHtcblx0ICAvLyBSZWFj
dENvbXBvc2l0ZUNvbXBvbmVudCB1c2VzIHRoaXM6XG5cdCAgdGhpcy5fY3VycmVudEVsZW1lbnQg
PSBudWxsO1xuXHQgIC8vIFJlYWN0RE9NQ29tcG9uZW50VHJlZSB1c2VzIHRoZXNlOlxuXHQgIHRo
aXMuX2hvc3ROb2RlID0gbnVsbDtcblx0ICB0aGlzLl9ob3N0UGFyZW50ID0gbnVsbDtcblx0ICB0
aGlzLl9ob3N0Q29udGFpbmVySW5mbyA9IG51bGw7XG5cdCAgdGhpcy5fZG9tSUQgPSAwO1xuXHR9
O1xuXHRfYXNzaWduKFJlYWN0RE9NRW1wdHlDb21wb25lbnQucHJvdG90eXBlLCB7XG5cdCAgbW91
bnRDb21wb25lbnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRh
aW5lckluZm8sIGNvbnRleHQpIHtcblx0ICAgIHZhciBkb21JRCA9IGhvc3RDb250YWluZXJJbmZv
Ll9pZENvdW50ZXIrKztcblx0ICAgIHRoaXMuX2RvbUlEID0gZG9tSUQ7XG5cdCAgICB0aGlzLl9o
b3N0UGFyZW50ID0gaG9zdFBhcmVudDtcblx0ICAgIHRoaXMuX2hvc3RDb250YWluZXJJbmZvID0g
aG9zdENvbnRhaW5lckluZm87XG5cdFxuXHQgICAgdmFyIG5vZGVWYWx1ZSA9ICcgcmVhY3QtZW1w
dHk6ICcgKyB0aGlzLl9kb21JRCArICcgJztcblx0ICAgIGlmICh0cmFuc2FjdGlvbi51c2VDcmVh
dGVFbGVtZW50KSB7XG5cdCAgICAgIHZhciBvd25lckRvY3VtZW50ID0gaG9zdENvbnRhaW5lcklu
Zm8uX293bmVyRG9jdW1lbnQ7XG5cdCAgICAgIHZhciBub2RlID0gb3duZXJEb2N1bWVudC5jcmVh
dGVDb21tZW50KG5vZGVWYWx1ZSk7XG5cdCAgICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5wcmVj
YWNoZU5vZGUodGhpcywgbm9kZSk7XG5cdCAgICAgIHJldHVybiBET01MYXp5VHJlZShub2RlKTtc
blx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIGlmICh0cmFuc2FjdGlvbi5yZW5kZXJUb1N0YXRpY01h
cmt1cCkge1xuXHQgICAgICAgIC8vIE5vcm1hbGx5IHdlJ2QgaW5zZXJ0IGEgY29tbWVudCBub2Rl
LCBidXQgc2luY2UgdGhpcyBpcyBhIHNpdHVhdGlvblxuXHQgICAgICAgIC8vIHdoZXJlIFJlYWN0
IHdvbid0IHRha2Ugb3ZlciAoc3RhdGljIHBhZ2VzKSwgd2UgY2FuIHNpbXBseSByZXR1cm5cblx0
ICAgICAgICAvLyBub3RoaW5nLlxuXHQgICAgICAgIHJldHVybiAnJztcblx0ICAgICAgfVxuXHQg
ICAgICByZXR1cm4gJzwhLS0nICsgbm9kZVZhbHVlICsgJy0tPic7XG5cdCAgICB9XG5cdCAgfSxc
blx0ICByZWNlaXZlQ29tcG9uZW50OiBmdW5jdGlvbiAoKSB7fSxcblx0ICBnZXRIb3N0Tm9kZTog
ZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0dXJuIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2Rl
RnJvbUluc3RhbmNlKHRoaXMpO1xuXHQgIH0sXG5cdCAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rp
b24gKCkge1xuXHQgICAgUmVhY3RET01Db21wb25lbnRUcmVlLnVuY2FjaGVOb2RlKHRoaXMpO1xu
XHQgIH1cblx0fSk7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NRW1wdHlDb21wb25l
bnQ7XG5cbi8qKiovIH0sXG4vKiAxNDEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0
cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9c
blx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBSZWFjdERPTUZlYXR1cmVGbGFncyA9IHtc
blx0ICB1c2VDcmVhdGVFbGVtZW50OiB0cnVlLFxuXHQgIHVzZUZpYmVyOiBmYWxzZVxuXHR9O1xu
XHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUZlYXR1cmVGbGFncztcblxuLyoqKi8gfSxc
bi8qIDE0MiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVx
dWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5c
dCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIERPTUNoaWxkcmVuT3BlcmF0aW9u
cyA9IF9fd2VicGFja19yZXF1aXJlX18oMzQpO1xuXHR2YXIgUmVhY3RET01Db21wb25lbnRUcmVl
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblx0XG5cdC8qKlxuXHQgKiBPcGVyYXRpb25zIHVz
ZWQgdG8gcHJvY2VzcyB1cGRhdGVzIHRvIERPTSBub2Rlcy5cblx0ICovXG5cdHZhciBSZWFjdERP
TUlET3BlcmF0aW9ucyA9IHtcblx0ICAvKipcblx0ICAgKiBVcGRhdGVzIGEgY29tcG9uZW50J3Mg
Y2hpbGRyZW4gYnkgcHJvY2Vzc2luZyBhIHNlcmllcyBvZiB1cGRhdGVzLlxuXHQgICAqXG5cdCAg
ICogQHBhcmFtIHthcnJheTxvYmplY3Q+fSB1cGRhdGVzIExpc3Qgb2YgdXBkYXRlIGNvbmZpZ3Vy
YXRpb25zLlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHQgIGRhbmdlcm91c2x5UHJvY2Vz
c0NoaWxkcmVuVXBkYXRlczogZnVuY3Rpb24gKHBhcmVudEluc3QsIHVwZGF0ZXMpIHtcblx0ICAg
IHZhciBub2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UocGFy
ZW50SW5zdCk7XG5cdCAgICBET01DaGlsZHJlbk9wZXJhdGlvbnMucHJvY2Vzc1VwZGF0ZXMobm9k
ZSwgdXBkYXRlcyk7XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdERP
TUlET3BlcmF0aW9ucztcblxuLyoqKi8gfSxcbi8qIDE0MyAqL1xuLyoqKi8gZnVuY3Rpb24obW9k
dWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRc
blx0dmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygzKSxcblx0ICAgIF9h
c3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRcblx0dmFyIERPTVByb3BlcnR5T3Bl
cmF0aW9ucyA9IF9fd2VicGFja19yZXF1aXJlX18oNjApO1xuXHR2YXIgTGlua2VkVmFsdWVVdGls
cyA9IF9fd2VicGFja19yZXF1aXJlX18oMzkpO1xuXHR2YXIgUmVhY3RET01Db21wb25lbnRUcmVl
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblx0dmFyIFJlYWN0VXBkYXRlcyA9IF9fd2VicGFj
a19yZXF1aXJlX18oOSk7XG5cdFxuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVf
XygxKTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHRcblx0dmFy
IGRpZFdhcm5WYWx1ZUxpbmsgPSBmYWxzZTtcblx0dmFyIGRpZFdhcm5DaGVja2VkTGluayA9IGZh
bHNlO1xuXHR2YXIgZGlkV2FyblZhbHVlRGVmYXVsdFZhbHVlID0gZmFsc2U7XG5cdHZhciBkaWRX
YXJuQ2hlY2tlZERlZmF1bHRDaGVja2VkID0gZmFsc2U7XG5cdHZhciBkaWRXYXJuQ29udHJvbGxl
ZFRvVW5jb250cm9sbGVkID0gZmFsc2U7XG5cdHZhciBkaWRXYXJuVW5jb250cm9sbGVkVG9Db250
cm9sbGVkID0gZmFsc2U7XG5cdFxuXHRmdW5jdGlvbiBmb3JjZVVwZGF0ZUlmTW91bnRlZCgpIHtc
blx0ICBpZiAodGhpcy5fcm9vdE5vZGVJRCkge1xuXHQgICAgLy8gRE9NIGNvbXBvbmVudCBpcyBz
dGlsbCBtb3VudGVkOyB1cGRhdGVcblx0ICAgIFJlYWN0RE9NSW5wdXQudXBkYXRlV3JhcHBlcih0
aGlzKTtcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGlzQ29udHJvbGxlZChwcm9wcykge1xu
XHQgIHZhciB1c2VzQ2hlY2tlZCA9IHByb3BzLnR5cGUgPT09ICdjaGVja2JveCcgfHwgcHJvcHMu
dHlwZSA9PT0gJ3JhZGlvJztcblx0ICByZXR1cm4gdXNlc0NoZWNrZWQgPyBwcm9wcy5jaGVja2Vk
ICE9IG51bGwgOiBwcm9wcy52YWx1ZSAhPSBudWxsO1xuXHR9XG5cdFxuXHQvKipcblx0ICogSW1w
bGVtZW50cyBhbiA8aW5wdXQ+IGhvc3QgY29tcG9uZW50IHRoYXQgYWxsb3dzIHNldHRpbmcgdGhl
c2Ugb3B0aW9uYWxcblx0ICogcHJvcHM6IGBjaGVja2VkYCwgYHZhbHVlYCwgYGRlZmF1bHRDaGVj
a2VkYCwgYW5kIGBkZWZhdWx0VmFsdWVgLlxuXHQgKlxuXHQgKiBJZiBgY2hlY2tlZGAgb3IgYHZh
bHVlYCBhcmUgbm90IHN1cHBsaWVkIChvciBudWxsL3VuZGVmaW5lZCksIHVzZXIgYWN0aW9uc1xu
XHQgKiB0aGF0IGFmZmVjdCB0aGUgY2hlY2tlZCBzdGF0ZSBvciB2YWx1ZSB3aWxsIHRyaWdnZXIg
dXBkYXRlcyB0byB0aGUgZWxlbWVudC5cblx0ICpcblx0ICogSWYgdGhleSBhcmUgc3VwcGxpZWQg
KGFuZCBub3QgbnVsbC91bmRlZmluZWQpLCB0aGUgcmVuZGVyZWQgZWxlbWVudCB3aWxsIG5vdFxu
XHQgKiB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQuIEluc3RlYWQsIHRoZSBwcm9wcyBt
dXN0IGNoYW5nZSBpbiBvcmRlciBmb3Jcblx0ICogdGhlIHJlbmRlcmVkIGVsZW1lbnQgdG8gYmUg
dXBkYXRlZC5cblx0ICpcblx0ICogVGhlIHJlbmRlcmVkIGVsZW1lbnQgd2lsbCBiZSBpbml0aWFs
aXplZCBhcyB1bmNoZWNrZWQgKG9yIGBkZWZhdWx0Q2hlY2tlZGApXG5cdCAqIHdpdGggYW4gZW1w
dHkgdmFsdWUgKG9yIGBkZWZhdWx0VmFsdWVgKS5cblx0ICpcblx0ICogQHNlZSBodHRwOi8vd3d3
LnczLm9yZy9UUi8yMDEyL1dELWh0bWw1LTIwMTIxMDI1L3RoZS1pbnB1dC1lbGVtZW50Lmh0bWxc
blx0ICovXG5cdHZhciBSZWFjdERPTUlucHV0ID0ge1xuXHQgIGdldEhvc3RQcm9wczogZnVuY3Rp
b24gKGluc3QsIHByb3BzKSB7XG5cdCAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdl
dFZhbHVlKHByb3BzKTtcblx0ICAgIHZhciBjaGVja2VkID0gTGlua2VkVmFsdWVVdGlscy5nZXRD
aGVja2VkKHByb3BzKTtcblx0XG5cdCAgICB2YXIgaG9zdFByb3BzID0gX2Fzc2lnbih7XG5cdCAg
ICAgIC8vIE1ha2Ugc3VyZSB3ZSBzZXQgLnR5cGUgYmVmb3JlIGFueSBvdGhlciBwcm9wZXJ0aWVz
IChzZXR0aW5nIC52YWx1ZVxuXHQgICAgICAvLyBiZWZvcmUgLnR5cGUgbWVhbnMgLnZhbHVlIGlz
IGxvc3QgaW4gSUUxMSBhbmQgYmVsb3cpXG5cdCAgICAgIHR5cGU6IHVuZGVmaW5lZCxcblx0ICAg
ICAgLy8gTWFrZSBzdXJlIHdlIHNldCAuc3RlcCBiZWZvcmUgLnZhbHVlIChzZXR0aW5nIC52YWx1
ZSBiZWZvcmUgLnN0ZXBcblx0ICAgICAgLy8gbWVhbnMgLnZhbHVlIGlzIHJvdW5kZWQgb24gbW91
bnQsIGJhc2VkIHVwb24gc3RlcCBwcmVjaXNpb24pXG5cdCAgICAgIHN0ZXA6IHVuZGVmaW5lZCxc
blx0ICAgICAgLy8gTWFrZSBzdXJlIHdlIHNldCAubWluICYgLm1heCBiZWZvcmUgLnZhbHVlICh0
byBlbnN1cmUgcHJvcGVyIG9yZGVyXG5cdCAgICAgIC8vIGluIGNvcm5lciBjYXNlcyBzdWNoIGFz
IG1pbiBvciBtYXggZGVyaXZpbmcgZnJvbSB2YWx1ZSwgZS5nLiBJc3N1ZSAjNzE3MClcblx0ICAg
ICAgbWluOiB1bmRlZmluZWQsXG5cdCAgICAgIG1heDogdW5kZWZpbmVkXG5cdCAgICB9LCBwcm9w
cywge1xuXHQgICAgICBkZWZhdWx0Q2hlY2tlZDogdW5kZWZpbmVkLFxuXHQgICAgICBkZWZhdWx0
VmFsdWU6IHVuZGVmaW5lZCxcblx0ICAgICAgdmFsdWU6IHZhbHVlICE9IG51bGwgPyB2YWx1ZSA6
IGluc3QuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUsXG5cdCAgICAgIGNoZWNrZWQ6IGNoZWNr
ZWQgIT0gbnVsbCA/IGNoZWNrZWQgOiBpbnN0Ll93cmFwcGVyU3RhdGUuaW5pdGlhbENoZWNrZWQs
XG5cdCAgICAgIG9uQ2hhbmdlOiBpbnN0Ll93cmFwcGVyU3RhdGUub25DaGFuZ2Vcblx0ICAgIH0p
O1xuXHRcblx0ICAgIHJldHVybiBob3N0UHJvcHM7XG5cdCAgfSxcblx0XG5cdCAgbW91bnRXcmFw
cGVyOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHtcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAg
ICBMaW5rZWRWYWx1ZVV0aWxzLmNoZWNrUHJvcFR5cGVzKCdpbnB1dCcsIHByb3BzLCBpbnN0Ll9j
dXJyZW50RWxlbWVudC5fb3duZXIpO1xuXHRcblx0ICAgICAgdmFyIG93bmVyID0gaW5zdC5fY3Vy
cmVudEVsZW1lbnQuX293bmVyO1xuXHRcblx0ICAgICAgaWYgKHByb3BzLnZhbHVlTGluayAhPT0g
dW5kZWZpbmVkICYmICFkaWRXYXJuVmFsdWVMaW5rKSB7XG5cdCAgICAgICAgcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdgdmFsdWVMaW5rYCBw
cm9wIG9uIGBpbnB1dGAgaXMgZGVwcmVjYXRlZDsgc2V0IGB2YWx1ZWAgYW5kIGBvbkNoYW5nZWAg
aW5zdGVhZC4nKSA6IHZvaWQgMDtcblx0ICAgICAgICBkaWRXYXJuVmFsdWVMaW5rID0gdHJ1ZTtc
blx0ICAgICAgfVxuXHQgICAgICBpZiAocHJvcHMuY2hlY2tlZExpbmsgIT09IHVuZGVmaW5lZCAm
JiAhZGlkV2FybkNoZWNrZWRMaW5rKSB7XG5cdCAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdgY2hlY2tlZExpbmtgIHByb3Agb24g
YGlucHV0YCBpcyBkZXByZWNhdGVkOyBzZXQgYHZhbHVlYCBhbmQgYG9uQ2hhbmdlYCBpbnN0ZWFk
LicpIDogdm9pZCAwO1xuXHQgICAgICAgIGRpZFdhcm5DaGVja2VkTGluayA9IHRydWU7XG5cdCAg
ICAgIH1cblx0ICAgICAgaWYgKHByb3BzLmNoZWNrZWQgIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5k
ZWZhdWx0Q2hlY2tlZCAhPT0gdW5kZWZpbmVkICYmICFkaWRXYXJuQ2hlY2tlZERlZmF1bHRDaGVj
a2VkKSB7XG5cdCAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IHdhcm5pbmcoZmFsc2UsICclcyBjb250YWlucyBhbiBpbnB1dCBvZiB0eXBlICVzIHdpdGggYm90
aCBjaGVja2VkIGFuZCBkZWZhdWx0Q2hlY2tlZCBwcm9wcy4gJyArICdJbnB1dCBlbGVtZW50cyBt
dXN0IGJlIGVpdGhlciBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCAnICsgJyhzcGVjaWZ5IGVp
dGhlciB0aGUgY2hlY2tlZCBwcm9wLCBvciB0aGUgZGVmYXVsdENoZWNrZWQgcHJvcCwgYnV0IG5v
dCAnICsgJ2JvdGgpLiBEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250
cm9sbGVkIGlucHV0ICcgKyAnZWxlbWVudCBhbmQgcmVtb3ZlIG9uZSBvZiB0aGVzZSBwcm9wcy4g
TW9yZSBpbmZvOiAnICsgJ2h0dHBzOi8vZmIubWUvcmVhY3QtY29udHJvbGxlZC1jb21wb25lbnRz
Jywgb3duZXIgJiYgb3duZXIuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcsIHByb3BzLnR5cGUp
IDogdm9pZCAwO1xuXHQgICAgICAgIGRpZFdhcm5DaGVja2VkRGVmYXVsdENoZWNrZWQgPSB0cnVl
O1xuXHQgICAgICB9XG5cdCAgICAgIGlmIChwcm9wcy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHBy
b3BzLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmICFkaWRXYXJuVmFsdWVEZWZhdWx0VmFs
dWUpIHtcblx0ICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8g
d2FybmluZyhmYWxzZSwgJyVzIGNvbnRhaW5zIGFuIGlucHV0IG9mIHR5cGUgJXMgd2l0aCBib3Ro
IHZhbHVlIGFuZCBkZWZhdWx0VmFsdWUgcHJvcHMuICcgKyAnSW5wdXQgZWxlbWVudHMgbXVzdCBi
ZSBlaXRoZXIgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgJyArICcoc3BlY2lmeSBlaXRoZXIg
dGhlIHZhbHVlIHByb3AsIG9yIHRoZSBkZWZhdWx0VmFsdWUgcHJvcCwgYnV0IG5vdCAnICsgJ2Jv
dGgpLiBEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkIGlu
cHV0ICcgKyAnZWxlbWVudCBhbmQgcmVtb3ZlIG9uZSBvZiB0aGVzZSBwcm9wcy4gTW9yZSBpbmZv
OiAnICsgJ2h0dHBzOi8vZmIubWUvcmVhY3QtY29udHJvbGxlZC1jb21wb25lbnRzJywgb3duZXIg
JiYgb3duZXIuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcsIHByb3BzLnR5cGUpIDogdm9pZCAw
O1xuXHQgICAgICAgIGRpZFdhcm5WYWx1ZURlZmF1bHRWYWx1ZSA9IHRydWU7XG5cdCAgICAgIH1c
blx0ICAgIH1cblx0XG5cdCAgICB2YXIgZGVmYXVsdFZhbHVlID0gcHJvcHMuZGVmYXVsdFZhbHVl
O1xuXHQgICAgaW5zdC5fd3JhcHBlclN0YXRlID0ge1xuXHQgICAgICBpbml0aWFsQ2hlY2tlZDog
cHJvcHMuY2hlY2tlZCAhPSBudWxsID8gcHJvcHMuY2hlY2tlZCA6IHByb3BzLmRlZmF1bHRDaGVj
a2VkLFxuXHQgICAgICBpbml0aWFsVmFsdWU6IHByb3BzLnZhbHVlICE9IG51bGwgPyBwcm9wcy52
YWx1ZSA6IGRlZmF1bHRWYWx1ZSxcblx0ICAgICAgbGlzdGVuZXJzOiBudWxsLFxuXHQgICAgICBv
bkNoYW5nZTogX2hhbmRsZUNoYW5nZS5iaW5kKGluc3QpLFxuXHQgICAgICBjb250cm9sbGVkOiBp
c0NvbnRyb2xsZWQocHJvcHMpXG5cdCAgICB9O1xuXHQgIH0sXG5cdFxuXHQgIHVwZGF0ZVdyYXBw
ZXI6IGZ1bmN0aW9uIChpbnN0KSB7XG5cdCAgICB2YXIgcHJvcHMgPSBpbnN0Ll9jdXJyZW50RWxl
bWVudC5wcm9wcztcblx0XG5cdCAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgdmFyIGNvbnRyb2xs
ZWQgPSBpc0NvbnRyb2xsZWQocHJvcHMpO1xuXHQgICAgICB2YXIgb3duZXIgPSBpbnN0Ll9jdXJy
ZW50RWxlbWVudC5fb3duZXI7XG5cdFxuXHQgICAgICBpZiAoIWluc3QuX3dyYXBwZXJTdGF0ZS5j
b250cm9sbGVkICYmIGNvbnRyb2xsZWQgJiYgIWRpZFdhcm5VbmNvbnRyb2xsZWRUb0NvbnRyb2xs
ZWQpIHtcblx0ICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8g
d2FybmluZyhmYWxzZSwgJyVzIGlzIGNoYW5naW5nIGFuIHVuY29udHJvbGxlZCBpbnB1dCBvZiB0
eXBlICVzIHRvIGJlIGNvbnRyb2xsZWQuICcgKyAnSW5wdXQgZWxlbWVudHMgc2hvdWxkIG5vdCBz
d2l0Y2ggZnJvbSB1bmNvbnRyb2xsZWQgdG8gY29udHJvbGxlZCAob3IgdmljZSB2ZXJzYSkuICcg
KyAnRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCBpbnB1
dCAnICsgJ2VsZW1lbnQgZm9yIHRoZSBsaWZldGltZSBvZiB0aGUgY29tcG9uZW50LiBNb3JlIGlu
Zm86IGh0dHBzOi8vZmIubWUvcmVhY3QtY29udHJvbGxlZC1jb21wb25lbnRzJywgb3duZXIgJiYg
b3duZXIuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcsIHByb3BzLnR5cGUpIDogdm9pZCAwO1xu
XHQgICAgICAgIGRpZFdhcm5VbmNvbnRyb2xsZWRUb0NvbnRyb2xsZWQgPSB0cnVlO1xuXHQgICAg
ICB9XG5cdCAgICAgIGlmIChpbnN0Ll93cmFwcGVyU3RhdGUuY29udHJvbGxlZCAmJiAhY29udHJv
bGxlZCAmJiAhZGlkV2FybkNvbnRyb2xsZWRUb1VuY29udHJvbGxlZCkge1xuXHQgICAgICAgIHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXMg
aXMgY2hhbmdpbmcgYSBjb250cm9sbGVkIGlucHV0IG9mIHR5cGUgJXMgdG8gYmUgdW5jb250cm9s
bGVkLiAnICsgJ0lucHV0IGVsZW1lbnRzIHNob3VsZCBub3Qgc3dpdGNoIGZyb20gY29udHJvbGxl
ZCB0byB1bmNvbnRyb2xsZWQgKG9yIHZpY2UgdmVyc2EpLiAnICsgJ0RlY2lkZSBiZXR3ZWVuIHVz
aW5nIGEgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgaW5wdXQgJyArICdlbGVtZW50IGZvciB0
aGUgbGlmZXRpbWUgb2YgdGhlIGNvbXBvbmVudC4gTW9yZSBpbmZvOiBodHRwczovL2ZiLm1lL3Jl
YWN0LWNvbnRyb2xsZWQtY29tcG9uZW50cycsIG93bmVyICYmIG93bmVyLmdldE5hbWUoKSB8fCAn
QSBjb21wb25lbnQnLCBwcm9wcy50eXBlKSA6IHZvaWQgMDtcblx0ICAgICAgICBkaWRXYXJuQ29u
dHJvbGxlZFRvVW5jb250cm9sbGVkID0gdHJ1ZTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0
ICAgIC8vIFRPRE86IFNob3VsZG4ndCB0aGlzIGJlIGdldENoZWNrZWQocHJvcHMpP1xuXHQgICAg
dmFyIGNoZWNrZWQgPSBwcm9wcy5jaGVja2VkO1xuXHQgICAgaWYgKGNoZWNrZWQgIT0gbnVsbCkg
e1xuXHQgICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVGb3JQcm9wZXJ0eShSZWFj
dERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KSwgJ2NoZWNrZWQnLCBj
aGVja2VkIHx8IGZhbHNlKTtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgbm9kZSA9IFJlYWN0RE9N
Q29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpO1xuXHQgICAgdmFyIHZhbHVl
ID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7XG5cdCAgICBpZiAodmFsdWUgIT0g
bnVsbCkge1xuXHQgICAgICBpZiAodmFsdWUgPT09IDAgJiYgbm9kZS52YWx1ZSA9PT0gJycpIHtc
blx0ICAgICAgICBub2RlLnZhbHVlID0gJzAnO1xuXHQgICAgICAgIC8vIE5vdGU6IElFOSByZXBv
cnRzIGEgbnVtYmVyIGlucHV0cyBhcyAndGV4dCcsIHNvIGNoZWNrIHByb3BzIGluc3RlYWQuXG5c
dCAgICAgIH0gZWxzZSBpZiAocHJvcHMudHlwZSA9PT0gJ251bWJlcicpIHtcblx0ICAgICAgICAv
LyBTaW11bGF0ZSBgaW5wdXQudmFsdWVBc051bWJlcmAuIElFOSBkb2VzIG5vdCBzdXBwb3J0IGl0
XG5cdCAgICAgICAgdmFyIHZhbHVlQXNOdW1iZXIgPSBwYXJzZUZsb2F0KG5vZGUudmFsdWUsIDEw
KSB8fCAwO1xuXHRcblx0ICAgICAgICBpZiAoXG5cdCAgICAgICAgLy8gZXNsaW50LWRpc2FibGUt
bmV4dC1saW5lXG5cdCAgICAgICAgdmFsdWUgIT0gdmFsdWVBc051bWJlciB8fFxuXHQgICAgICAg
IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuXHQgICAgICAgIHZhbHVlID09IHZhbHVlQXNO
dW1iZXIgJiYgbm9kZS52YWx1ZSAhPSB2YWx1ZSkge1xuXHQgICAgICAgICAgLy8gQ2FzdCBgdmFs
dWVgIHRvIGEgc3RyaW5nIHRvIGVuc3VyZSB0aGUgdmFsdWUgaXMgc2V0IGNvcnJlY3RseS4gV2hp
bGVcblx0ICAgICAgICAgIC8vIGJyb3dzZXJzIHR5cGljYWxseSBkbyB0aGlzIGFzIG5lY2Vzc2Fy
eSwganNkb20gZG9lc24ndC5cblx0ICAgICAgICAgIG5vZGUudmFsdWUgPSAnJyArIHZhbHVlO1xu
XHQgICAgICAgIH1cblx0ICAgICAgfSBlbHNlIGlmIChub2RlLnZhbHVlICE9PSAnJyArIHZhbHVl
KSB7XG5cdCAgICAgICAgLy8gQ2FzdCBgdmFsdWVgIHRvIGEgc3RyaW5nIHRvIGVuc3VyZSB0aGUg
dmFsdWUgaXMgc2V0IGNvcnJlY3RseS4gV2hpbGVcblx0ICAgICAgICAvLyBicm93c2VycyB0eXBp
Y2FsbHkgZG8gdGhpcyBhcyBuZWNlc3NhcnksIGpzZG9tIGRvZXNuJ3QuXG5cdCAgICAgICAgbm9k
ZS52YWx1ZSA9ICcnICsgdmFsdWU7XG5cdCAgICAgIH1cblx0ICAgIH0gZWxzZSB7XG5cdCAgICAg
IGlmIChwcm9wcy52YWx1ZSA9PSBudWxsICYmIHByb3BzLmRlZmF1bHRWYWx1ZSAhPSBudWxsKSB7
XG5cdCAgICAgICAgLy8gSW4gQ2hyb21lLCBhc3NpZ25pbmcgZGVmYXVsdFZhbHVlIHRvIGNlcnRh
aW4gaW5wdXQgdHlwZXMgdHJpZ2dlcnMgaW5wdXQgdmFsaWRhdGlvbi5cblx0ICAgICAgICAvLyBG
b3IgbnVtYmVyIGlucHV0cywgdGhlIGRpc3BsYXkgdmFsdWUgbG9zZXMgdHJhaWxpbmcgZGVjaW1h
bCBwb2ludHMuIEZvciBlbWFpbCBpbnB1dHMsXG5cdCAgICAgICAgLy8gQ2hyb21lIHJhaXNlcyBc
IlRoZSBzcGVjaWZpZWQgdmFsdWUgPHg+IGlzIG5vdCBhIHZhbGlkIGVtYWlsIGFkZHJlc3NcIi5c
blx0ICAgICAgICAvL1xuXHQgICAgICAgIC8vIEhlcmUgd2UgY2hlY2sgdG8gc2VlIGlmIHRoZSBk
ZWZhdWx0VmFsdWUgaGFzIGFjdHVhbGx5IGNoYW5nZWQsIGF2b2lkaW5nIHRoZXNlIHByb2JsZW1z
XG5cdCAgICAgICAgLy8gd2hlbiB0aGUgdXNlciBpcyBpbnB1dHRpbmcgdGV4dFxuXHQgICAgICAg
IC8vXG5cdCAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vl
cy83MjUzXG5cdCAgICAgICAgaWYgKG5vZGUuZGVmYXVsdFZhbHVlICE9PSAnJyArIHByb3BzLmRl
ZmF1bHRWYWx1ZSkge1xuXHQgICAgICAgICAgbm9kZS5kZWZhdWx0VmFsdWUgPSAnJyArIHByb3Bz
LmRlZmF1bHRWYWx1ZTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgICAgaWYgKHByb3Bz
LmNoZWNrZWQgPT0gbnVsbCAmJiBwcm9wcy5kZWZhdWx0Q2hlY2tlZCAhPSBudWxsKSB7XG5cdCAg
ICAgICAgbm9kZS5kZWZhdWx0Q2hlY2tlZCA9ICEhcHJvcHMuZGVmYXVsdENoZWNrZWQ7XG5cdCAg
ICAgIH1cblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICBwb3N0TW91bnRXcmFwcGVyOiBmdW5jdGlv
biAoaW5zdCkge1xuXHQgICAgdmFyIHByb3BzID0gaW5zdC5fY3VycmVudEVsZW1lbnQucHJvcHM7
XG5cdFxuXHQgICAgLy8gVGhpcyBpcyBpbiBwb3N0TW91bnQgYmVjYXVzZSB3ZSBuZWVkIGFjY2Vz
cyB0byB0aGUgRE9NIG5vZGUsIHdoaWNoIGlzIG5vdFxuXHQgICAgLy8gYXZhaWxhYmxlIHVudGls
IGFmdGVyIHRoZSBjb21wb25lbnQgaGFzIG1vdW50ZWQuXG5cdCAgICB2YXIgbm9kZSA9IFJlYWN0
RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpO1xuXHRcblx0ICAgIC8v
IERldGFjaCB2YWx1ZSBmcm9tIGRlZmF1bHRWYWx1ZS4gV2Ugd29uJ3QgZG8gYW55dGhpbmcgaWYg
d2UncmUgd29ya2luZyBvblxuXHQgICAgLy8gc3VibWl0IG9yIHJlc2V0IGlucHV0cyBhcyB0aG9z
ZSB2YWx1ZXMgJiBkZWZhdWx0VmFsdWVzIGFyZSBsaW5rZWQuIFRoZXlcblx0ICAgIC8vIGFyZSBu
b3QgcmVzZXRhYmxlIG5vZGVzIHNvIHRoaXMgb3BlcmF0aW9uIGRvZXNuJ3QgbWF0dGVyIGFuZCBh
Y3R1YWxseVxuXHQgICAgLy8gcmVtb3ZlcyBicm93c2VyLWRlZmF1bHQgdmFsdWVzIChlZyBcIlN1
Ym1pdCBRdWVyeVwiKSB3aGVuIG5vIHZhbHVlIGlzXG5cdCAgICAvLyBwcm92aWRlZC5cblx0XG5c
dCAgICBzd2l0Y2ggKHByb3BzLnR5cGUpIHtcblx0ICAgICAgY2FzZSAnc3VibWl0Jzpcblx0ICAg
ICAgY2FzZSAncmVzZXQnOlxuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICdjb2xvcic6
XG5cdCAgICAgIGNhc2UgJ2RhdGUnOlxuXHQgICAgICBjYXNlICdkYXRldGltZSc6XG5cdCAgICAg
IGNhc2UgJ2RhdGV0aW1lLWxvY2FsJzpcblx0ICAgICAgY2FzZSAnbW9udGgnOlxuXHQgICAgICBj
YXNlICd0aW1lJzpcblx0ICAgICAgY2FzZSAnd2Vlayc6XG5cdCAgICAgICAgLy8gVGhpcyBmaXhl
cyB0aGUgbm8tc2hvdyBpc3N1ZSBvbiBpT1MgU2FmYXJpIGFuZCBBbmRyb2lkIENocm9tZTpcblx0
ICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzcyMzNc
blx0ICAgICAgICBub2RlLnZhbHVlID0gJyc7XG5cdCAgICAgICAgbm9kZS52YWx1ZSA9IG5vZGUu
ZGVmYXVsdFZhbHVlO1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBkZWZhdWx0OlxuXHQgICAg
ICAgIG5vZGUudmFsdWUgPSBub2RlLnZhbHVlO1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgfVxu
XHRcblx0ICAgIC8vIE5vcm1hbGx5LCB3ZSdkIGp1c3QgZG8gYG5vZGUuY2hlY2tlZCA9IG5vZGUu
Y2hlY2tlZGAgdXBvbiBpbml0aWFsIG1vdW50LCBsZXNzIHRoaXMgYnVnXG5cdCAgICAvLyB0aGlz
IGlzIG5lZWRlZCB0byB3b3JrIGFyb3VuZCBhIGNocm9tZSBidWcgd2hlcmUgc2V0dGluZyBkZWZh
dWx0Q2hlY2tlZFxuXHQgICAgLy8gd2lsbCBzb21ldGltZXMgaW5mbHVlbmNlIHRoZSB2YWx1ZSBv
ZiBjaGVja2VkIChldmVuIGFmdGVyIGRldGFjaG1lbnQpLlxuXHQgICAgLy8gUmVmZXJlbmNlOiBo
dHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD02MDg0
MTZcblx0ICAgIC8vIFdlIG5lZWQgdG8gdGVtcG9yYXJpbHkgdW5zZXQgbmFtZSB0byBhdm9pZCBk
aXNydXB0aW5nIHJhZGlvIGJ1dHRvbiBncm91cHMuXG5cdCAgICB2YXIgbmFtZSA9IG5vZGUubmFt
ZTtcblx0ICAgIGlmIChuYW1lICE9PSAnJykge1xuXHQgICAgICBub2RlLm5hbWUgPSAnJztcblx0
ICAgIH1cblx0ICAgIG5vZGUuZGVmYXVsdENoZWNrZWQgPSAhbm9kZS5kZWZhdWx0Q2hlY2tlZDtc
blx0ICAgIG5vZGUuZGVmYXVsdENoZWNrZWQgPSAhbm9kZS5kZWZhdWx0Q2hlY2tlZDtcblx0ICAg
IGlmIChuYW1lICE9PSAnJykge1xuXHQgICAgICBub2RlLm5hbWUgPSBuYW1lO1xuXHQgICAgfVxu
XHQgIH1cblx0fTtcblx0XG5cdGZ1bmN0aW9uIF9oYW5kbGVDaGFuZ2UoZXZlbnQpIHtcblx0ICB2
YXIgcHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztcblx0XG5cdCAgdmFyIHJldHVy
blZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5leGVjdXRlT25DaGFuZ2UocHJvcHMsIGV2ZW50KTtc
blx0XG5cdCAgLy8gSGVyZSB3ZSB1c2UgYXNhcCB0byB3YWl0IHVudGlsIGFsbCB1cGRhdGVzIGhh
dmUgcHJvcGFnYXRlZCwgd2hpY2hcblx0ICAvLyBpcyBpbXBvcnRhbnQgd2hlbiB1c2luZyBjb250
cm9sbGVkIGNvbXBvbmVudHMgd2l0aGluIGxheWVyczpcblx0ICAvLyBodHRwczovL2dpdGh1Yi5j
b20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzE2OThcblx0ICBSZWFjdFVwZGF0ZXMuYXNhcChmb3Jj
ZVVwZGF0ZUlmTW91bnRlZCwgdGhpcyk7XG5cdFxuXHQgIHZhciBuYW1lID0gcHJvcHMubmFtZTtc
blx0ICBpZiAocHJvcHMudHlwZSA9PT0gJ3JhZGlvJyAmJiBuYW1lICE9IG51bGwpIHtcblx0ICAg
IHZhciByb290Tm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNl
KHRoaXMpO1xuXHQgICAgdmFyIHF1ZXJ5Um9vdCA9IHJvb3ROb2RlO1xuXHRcblx0ICAgIHdoaWxl
IChxdWVyeVJvb3QucGFyZW50Tm9kZSkge1xuXHQgICAgICBxdWVyeVJvb3QgPSBxdWVyeVJvb3Qu
cGFyZW50Tm9kZTtcblx0ICAgIH1cblx0XG5cdCAgICAvLyBJZiBgcm9vdE5vZGUuZm9ybWAgd2Fz
IG5vbi1udWxsLCB0aGVuIHdlIGNvdWxkIHRyeSBgZm9ybS5lbGVtZW50c2AsXG5cdCAgICAvLyBi
dXQgdGhhdCBzb21ldGltZXMgYmVoYXZlcyBzdHJhbmdlbHkgaW4gSUU4LiBXZSBjb3VsZCBhbHNv
IHRyeSB1c2luZ1xuXHQgICAgLy8gYGZvcm0uZ2V0RWxlbWVudHNCeU5hbWVgLCBidXQgdGhhdCB3
aWxsIG9ubHkgcmV0dXJuIGRpcmVjdCBjaGlsZHJlblxuXHQgICAgLy8gYW5kIHdvbid0IGluY2x1
ZGUgaW5wdXRzIHRoYXQgdXNlIHRoZSBIVE1MNSBgZm9ybT1gIGF0dHJpYnV0ZS4gU2luY2Vcblx0
ICAgIC8vIHRoZSBpbnB1dCBtaWdodCBub3QgZXZlbiBiZSBpbiBhIGZvcm0sIGxldCdzIGp1c3Qg
dXNlIHRoZSBnbG9iYWxcblx0ICAgIC8vIGBxdWVyeVNlbGVjdG9yQWxsYCB0byBlbnN1cmUgd2Ug
ZG9uJ3QgbWlzcyBhbnl0aGluZy5cblx0ICAgIHZhciBncm91cCA9IHF1ZXJ5Um9vdC5xdWVyeVNl
bGVjdG9yQWxsKCdpbnB1dFtuYW1lPScgKyBKU09OLnN0cmluZ2lmeSgnJyArIG5hbWUpICsgJ11b
dHlwZT1cInJhZGlvXCJdJyk7XG5cdFxuXHQgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBncm91cC5s
ZW5ndGg7IGkrKykge1xuXHQgICAgICB2YXIgb3RoZXJOb2RlID0gZ3JvdXBbaV07XG5cdCAgICAg
IGlmIChvdGhlck5vZGUgPT09IHJvb3ROb2RlIHx8IG90aGVyTm9kZS5mb3JtICE9PSByb290Tm9k
ZS5mb3JtKSB7XG5cdCAgICAgICAgY29udGludWU7XG5cdCAgICAgIH1cblx0ICAgICAgLy8gVGhp
cyB3aWxsIHRocm93IGlmIHJhZGlvIGJ1dHRvbnMgcmVuZGVyZWQgYnkgZGlmZmVyZW50IGNvcGll
cyBvZiBSZWFjdFxuXHQgICAgICAvLyBhbmQgdGhlIHNhbWUgbmFtZSBhcmUgcmVuZGVyZWQgaW50
byB0aGUgc2FtZSBmb3JtIChzYW1lIGFzICMxOTM5KS5cblx0ICAgICAgLy8gVGhhdCdzIHByb2Jh
Ymx5IG9rYXk7IHdlIGRvbid0IHN1cHBvcnQgaXQganVzdCBhcyB3ZSBkb24ndCBzdXBwb3J0XG5c
dCAgICAgIC8vIG1peGluZyBSZWFjdCByYWRpbyBidXR0b25zIHdpdGggbm9uLVJlYWN0IG9uZXMu
XG5cdCAgICAgIHZhciBvdGhlckluc3RhbmNlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldElu
c3RhbmNlRnJvbU5vZGUob3RoZXJOb2RlKTtcblx0ICAgICAgIW90aGVySW5zdGFuY2UgPyAgZmFs
c2UgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdERPTUlucHV0OiBNaXhpbmcgUmVhY3QgYW5kIG5v
bi1SZWFjdCByYWRpbyBpbnB1dHMgd2l0aCB0aGUgc2FtZSBgbmFtZWAgaXMgbm90IHN1cHBvcnRl
ZC4nKSA6IF9wcm9kSW52YXJpYW50KCc5MCcpIDogdm9pZCAwO1xuXHQgICAgICAvLyBJZiB0aGlz
IGlzIGEgY29udHJvbGxlZCByYWRpbyBidXR0b24gZ3JvdXAsIGZvcmNpbmcgdGhlIGlucHV0IHRo
YXRcblx0ICAgICAgLy8gd2FzIHByZXZpb3VzbHkgY2hlY2tlZCB0byB1cGRhdGUgd2lsbCBjYXVz
ZSBpdCB0byBiZSBjb21lIHJlLWNoZWNrZWRcblx0ICAgICAgLy8gYXMgYXBwcm9wcmlhdGUuXG5c
dCAgICAgIFJlYWN0VXBkYXRlcy5hc2FwKGZvcmNlVXBkYXRlSWZNb3VudGVkLCBvdGhlckluc3Rh
bmNlKTtcblx0ICAgIH1cblx0ICB9XG5cdFxuXHQgIHJldHVybiByZXR1cm5WYWx1ZTtcblx0fVxu
XHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUlucHV0O1xuXG4vKioqLyB9LFxuLyogMTQ0
ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18p
IHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5c
blx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5c
dFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX2Fzc2lnbiA9IF9fd2VicGFja19yZXF1aXJl
X18oNCk7XG5cdFxuXHR2YXIgUmVhY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3KTtcblx0dmFy
IFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG5cdHZhciBS
ZWFjdERPTVNlbGVjdCA9IF9fd2VicGFja19yZXF1aXJlX18oNjIpO1xuXHRcblx0dmFyIHdhcm5p
bmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIpO1xuXHR2YXIgZGlkV2FybkludmFsaWRPcHRpb25D
aGlsZHJlbiA9IGZhbHNlO1xuXHRcblx0ZnVuY3Rpb24gZmxhdHRlbkNoaWxkcmVuKGNoaWxkcmVu
KSB7XG5cdCAgdmFyIGNvbnRlbnQgPSAnJztcblx0XG5cdCAgLy8gRmxhdHRlbiBjaGlsZHJlbiBh
bmQgd2FybiBpZiB0aGV5IGFyZW4ndCBzdHJpbmdzIG9yIG51bWJlcnM7XG5cdCAgLy8gaW52YWxp
ZCB0eXBlcyBhcmUgaWdub3JlZC5cblx0ICBSZWFjdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVu
LCBmdW5jdGlvbiAoY2hpbGQpIHtcblx0ICAgIGlmIChjaGlsZCA9PSBudWxsKSB7XG5cdCAgICAg
IHJldHVybjtcblx0ICAgIH1cblx0ICAgIGlmICh0eXBlb2YgY2hpbGQgPT09ICdzdHJpbmcnIHx8
IHR5cGVvZiBjaGlsZCA9PT0gJ251bWJlcicpIHtcblx0ICAgICAgY29udGVudCArPSBjaGlsZDtc
blx0ICAgIH0gZWxzZSBpZiAoIWRpZFdhcm5JbnZhbGlkT3B0aW9uQ2hpbGRyZW4pIHtcblx0ICAg
ICAgZGlkV2FybkludmFsaWRPcHRpb25DaGlsZHJlbiA9IHRydWU7XG5cdCAgICAgICBmYWxzZSA/
IHdhcm5pbmcoZmFsc2UsICdPbmx5IHN0cmluZ3MgYW5kIG51bWJlcnMgYXJlIHN1cHBvcnRlZCBh
cyA8b3B0aW9uPiBjaGlsZHJlbi4nKSA6IHZvaWQgMDtcblx0ICAgIH1cblx0ICB9KTtcblx0XG5c
dCAgcmV0dXJuIGNvbnRlbnQ7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBJbXBsZW1lbnRzIGFuIDxv
cHRpb24+IGhvc3QgY29tcG9uZW50IHRoYXQgd2FybnMgd2hlbiBgc2VsZWN0ZWRgIGlzIHNldC5c
blx0ICovXG5cdHZhciBSZWFjdERPTU9wdGlvbiA9IHtcblx0ICBtb3VudFdyYXBwZXI6IGZ1bmN0
aW9uIChpbnN0LCBwcm9wcywgaG9zdFBhcmVudCkge1xuXHQgICAgLy8gVE9ETyAoeXVuZ3N0ZXJz
KTogUmVtb3ZlIHN1cHBvcnQgZm9yIGBzZWxlY3RlZGAgaW4gPG9wdGlvbj4uXG5cdCAgICBpZiAo
ZmFsc2UpIHtcblx0ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IHdhcm5pbmcocHJvcHMuc2VsZWN0ZWQgPT0gbnVsbCwgJ1VzZSB0aGUgYGRlZmF1bHRWYWx1ZWAg
b3IgYHZhbHVlYCBwcm9wcyBvbiA8c2VsZWN0PiBpbnN0ZWFkIG9mICcgKyAnc2V0dGluZyBgc2Vs
ZWN0ZWRgIG9uIDxvcHRpb24+LicpIDogdm9pZCAwO1xuXHQgICAgfVxuXHRcblx0ICAgIC8vIExv
b2sgdXAgd2hldGhlciB0aGlzIG9wdGlvbiBpcyAnc2VsZWN0ZWQnXG5cdCAgICB2YXIgc2VsZWN0
VmFsdWUgPSBudWxsO1xuXHQgICAgaWYgKGhvc3RQYXJlbnQgIT0gbnVsbCkge1xuXHQgICAgICB2
YXIgc2VsZWN0UGFyZW50ID0gaG9zdFBhcmVudDtcblx0XG5cdCAgICAgIGlmIChzZWxlY3RQYXJl
bnQuX3RhZyA9PT0gJ29wdGdyb3VwJykge1xuXHQgICAgICAgIHNlbGVjdFBhcmVudCA9IHNlbGVj
dFBhcmVudC5faG9zdFBhcmVudDtcblx0ICAgICAgfVxuXHRcblx0ICAgICAgaWYgKHNlbGVjdFBh
cmVudCAhPSBudWxsICYmIHNlbGVjdFBhcmVudC5fdGFnID09PSAnc2VsZWN0Jykge1xuXHQgICAg
ICAgIHNlbGVjdFZhbHVlID0gUmVhY3RET01TZWxlY3QuZ2V0U2VsZWN0VmFsdWVDb250ZXh0KHNl
bGVjdFBhcmVudCk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICAvLyBJZiB0aGUgdmFs
dWUgaXMgbnVsbCAoZS5nLiwgbm8gc3BlY2lmaWVkIHZhbHVlIG9yIGFmdGVyIGluaXRpYWwgbW91
bnQpXG5cdCAgICAvLyBvciBtaXNzaW5nIChlLmcuLCBmb3IgPGRhdGFsaXN0PiksIHdlIGRvbid0
IGNoYW5nZSBwcm9wcy5zZWxlY3RlZFxuXHQgICAgdmFyIHNlbGVjdGVkID0gbnVsbDtcblx0ICAg
IGlmIChzZWxlY3RWYWx1ZSAhPSBudWxsKSB7XG5cdCAgICAgIHZhciB2YWx1ZTtcblx0ICAgICAg
aWYgKHByb3BzLnZhbHVlICE9IG51bGwpIHtcblx0ICAgICAgICB2YWx1ZSA9IHByb3BzLnZhbHVl
ICsgJyc7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgdmFsdWUgPSBmbGF0dGVuQ2hpbGRy
ZW4ocHJvcHMuY2hpbGRyZW4pO1xuXHQgICAgICB9XG5cdCAgICAgIHNlbGVjdGVkID0gZmFsc2U7
XG5cdCAgICAgIGlmIChBcnJheS5pc0FycmF5KHNlbGVjdFZhbHVlKSkge1xuXHQgICAgICAgIC8v
IG11bHRpcGxlXG5cdCAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxlY3RWYWx1ZS5sZW5n
dGg7IGkrKykge1xuXHQgICAgICAgICAgaWYgKCcnICsgc2VsZWN0VmFsdWVbaV0gPT09IHZhbHVl
KSB7XG5cdCAgICAgICAgICAgIHNlbGVjdGVkID0gdHJ1ZTtcblx0ICAgICAgICAgICAgYnJlYWs7
XG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9IGVsc2Uge1xuXHQgICAgICAg
IHNlbGVjdGVkID0gJycgKyBzZWxlY3RWYWx1ZSA9PT0gdmFsdWU7XG5cdCAgICAgIH1cblx0ICAg
IH1cblx0XG5cdCAgICBpbnN0Ll93cmFwcGVyU3RhdGUgPSB7IHNlbGVjdGVkOiBzZWxlY3RlZCB9
O1xuXHQgIH0sXG5cdFxuXHQgIHBvc3RNb3VudFdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7XG5c
dCAgICAvLyB2YWx1ZT1cIlwiIHNob3VsZCBtYWtlIGEgdmFsdWUgYXR0cmlidXRlICgjNjIxOSlc
blx0ICAgIHZhciBwcm9wcyA9IGluc3QuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXHQgICAgaWYg
KHByb3BzLnZhbHVlICE9IG51bGwpIHtcblx0ICAgICAgdmFyIG5vZGUgPSBSZWFjdERPTUNvbXBv
bmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KTtcblx0ICAgICAgbm9kZS5zZXRBdHRy
aWJ1dGUoJ3ZhbHVlJywgcHJvcHMudmFsdWUpO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIGdl
dEhvc3RQcm9wczogZnVuY3Rpb24gKGluc3QsIHByb3BzKSB7XG5cdCAgICB2YXIgaG9zdFByb3Bz
ID0gX2Fzc2lnbih7IHNlbGVjdGVkOiB1bmRlZmluZWQsIGNoaWxkcmVuOiB1bmRlZmluZWQgfSwg
cHJvcHMpO1xuXHRcblx0ICAgIC8vIFJlYWQgc3RhdGUgb25seSBmcm9tIGluaXRpYWwgbW91bnQg
YmVjYXVzZSA8c2VsZWN0PiB1cGRhdGVzIHZhbHVlXG5cdCAgICAvLyBtYW51YWxseTsgd2UgbmVl
ZCB0aGUgaW5pdGlhbCBzdGF0ZSBvbmx5IGZvciBzZXJ2ZXIgcmVuZGVyaW5nXG5cdCAgICBpZiAo
aW5zdC5fd3JhcHBlclN0YXRlLnNlbGVjdGVkICE9IG51bGwpIHtcblx0ICAgICAgaG9zdFByb3Bz
LnNlbGVjdGVkID0gaW5zdC5fd3JhcHBlclN0YXRlLnNlbGVjdGVkO1xuXHQgICAgfVxuXHRcblx0
ICAgIHZhciBjb250ZW50ID0gZmxhdHRlbkNoaWxkcmVuKHByb3BzLmNoaWxkcmVuKTtcblx0XG5c
dCAgICBpZiAoY29udGVudCkge1xuXHQgICAgICBob3N0UHJvcHMuY2hpbGRyZW4gPSBjb250ZW50
O1xuXHQgICAgfVxuXHRcblx0ICAgIHJldHVybiBob3N0UHJvcHM7XG5cdCAgfVxuXHR9O1xuXHRc
blx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTU9wdGlvbjtcblxuLyoqKi8gfSxcbi8qIDE0NSAq
L1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7
XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5c
dCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRc
blx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg2KTtcblx0XG5cdHZhciBnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0ID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxODMpO1xuXHR2YXIgZ2V0VGV4dENvbnRlbnRBY2Nlc3NvciA9
IF9fd2VicGFja19yZXF1aXJlX18oNzMpO1xuXHRcblx0LyoqXG5cdCAqIFdoaWxlIGBpc0NvbGxh
cHNlZGAgaXMgYXZhaWxhYmxlIG9uIHRoZSBTZWxlY3Rpb24gb2JqZWN0IGFuZCBgY29sbGFwc2Vk
YFxuXHQgKiBpcyBhdmFpbGFibGUgb24gdGhlIFJhbmdlIG9iamVjdCwgSUUxMSBzb21ldGltZXMg
Z2V0cyB0aGVtIHdyb25nLlxuXHQgKiBJZiB0aGUgYW5jaG9yL2ZvY3VzIG5vZGVzIGFuZCBvZmZz
ZXRzIGFyZSB0aGUgc2FtZSwgdGhlIHJhbmdlIGlzIGNvbGxhcHNlZC5cblx0ICovXG5cdGZ1bmN0
aW9uIGlzQ29sbGFwc2VkKGFuY2hvck5vZGUsIGFuY2hvck9mZnNldCwgZm9jdXNOb2RlLCBmb2N1
c09mZnNldCkge1xuXHQgIHJldHVybiBhbmNob3JOb2RlID09PSBmb2N1c05vZGUgJiYgYW5jaG9y
T2Zmc2V0ID09PSBmb2N1c09mZnNldDtcblx0fVxuXHRcblx0LyoqXG5cdCAqIEdldCB0aGUgYXBw
cm9wcmlhdGUgYW5jaG9yIGFuZCBmb2N1cyBub2RlL29mZnNldCBwYWlycyBmb3IgSUUuXG5cdCAq
XG5cdCAqIFRoZSBjYXRjaCBoZXJlIGlzIHRoYXQgSUUncyBzZWxlY3Rpb24gQVBJIGRvZXNuJ3Qg
cHJvdmlkZSBpbmZvcm1hdGlvblxuXHQgKiBhYm91dCB3aGV0aGVyIHRoZSBzZWxlY3Rpb24gaXMg
Zm9yd2FyZCBvciBiYWNrd2FyZCwgc28gd2UgaGF2ZSB0b1xuXHQgKiBiZWhhdmUgYXMgdGhvdWdo
IGl0J3MgYWx3YXlzIGZvcndhcmQuXG5cdCAqXG5cdCAqIElFIHRleHQgZGlmZmVycyBmcm9tIG1v
ZGVybiBzZWxlY3Rpb24gaW4gdGhhdCBpdCBiZWhhdmVzIGFzIHRob3VnaFxuXHQgKiBibG9jayBl
bGVtZW50cyBlbmQgd2l0aCBhIG5ldyBsaW5lLiBUaGlzIG1lYW5zIGNoYXJhY3RlciBvZmZzZXRz
IHdpbGxcblx0ICogZGlmZmVyIGJldHdlZW4gdGhlIHR3byBBUElzLlxuXHQgKlxuXHQgKiBAcGFy
YW0ge0RPTUVsZW1lbnR9IG5vZGVcblx0ICogQHJldHVybiB7b2JqZWN0fVxuXHQgKi9cblx0ZnVu
Y3Rpb24gZ2V0SUVPZmZzZXRzKG5vZGUpIHtcblx0ICB2YXIgc2VsZWN0aW9uID0gZG9jdW1lbnQu
c2VsZWN0aW9uO1xuXHQgIHZhciBzZWxlY3RlZFJhbmdlID0gc2VsZWN0aW9uLmNyZWF0ZVJhbmdl
KCk7XG5cdCAgdmFyIHNlbGVjdGVkTGVuZ3RoID0gc2VsZWN0ZWRSYW5nZS50ZXh0Lmxlbmd0aDtc
blx0XG5cdCAgLy8gRHVwbGljYXRlIHNlbGVjdGlvbiBzbyB3ZSBjYW4gbW92ZSByYW5nZSB3aXRo
b3V0IGJyZWFraW5nIHVzZXIgc2VsZWN0aW9uLlxuXHQgIHZhciBmcm9tU3RhcnQgPSBzZWxlY3Rl
ZFJhbmdlLmR1cGxpY2F0ZSgpO1xuXHQgIGZyb21TdGFydC5tb3ZlVG9FbGVtZW50VGV4dChub2Rl
KTtcblx0ICBmcm9tU3RhcnQuc2V0RW5kUG9pbnQoJ0VuZFRvU3RhcnQnLCBzZWxlY3RlZFJhbmdl
KTtcblx0XG5cdCAgdmFyIHN0YXJ0T2Zmc2V0ID0gZnJvbVN0YXJ0LnRleHQubGVuZ3RoO1xuXHQg
IHZhciBlbmRPZmZzZXQgPSBzdGFydE9mZnNldCArIHNlbGVjdGVkTGVuZ3RoO1xuXHRcblx0ICBy
ZXR1cm4ge1xuXHQgICAgc3RhcnQ6IHN0YXJ0T2Zmc2V0LFxuXHQgICAgZW5kOiBlbmRPZmZzZXRc
blx0ICB9O1xuXHR9XG5cdFxuXHQvKipcblx0ICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG5c
dCAqIEByZXR1cm4gez9vYmplY3R9XG5cdCAqL1xuXHRmdW5jdGlvbiBnZXRNb2Rlcm5PZmZzZXRz
KG5vZGUpIHtcblx0ICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbiAmJiB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCk7XG5cdFxuXHQgIGlmICghc2VsZWN0aW9uIHx8IHNlbGVjdGlvbi5y
YW5nZUNvdW50ID09PSAwKSB7XG5cdCAgICByZXR1cm4gbnVsbDtcblx0ICB9XG5cdFxuXHQgIHZh
ciBhbmNob3JOb2RlID0gc2VsZWN0aW9uLmFuY2hvck5vZGU7XG5cdCAgdmFyIGFuY2hvck9mZnNl
dCA9IHNlbGVjdGlvbi5hbmNob3JPZmZzZXQ7XG5cdCAgdmFyIGZvY3VzTm9kZSA9IHNlbGVjdGlv
bi5mb2N1c05vZGU7XG5cdCAgdmFyIGZvY3VzT2Zmc2V0ID0gc2VsZWN0aW9uLmZvY3VzT2Zmc2V0
O1xuXHRcblx0ICB2YXIgY3VycmVudFJhbmdlID0gc2VsZWN0aW9uLmdldFJhbmdlQXQoMCk7XG5c
dFxuXHQgIC8vIEluIEZpcmVmb3gsIHJhbmdlLnN0YXJ0Q29udGFpbmVyIGFuZCByYW5nZS5lbmRD
b250YWluZXIgY2FuIGJlIFwiYW5vbnltb3VzXG5cdCAgLy8gZGl2c1wiLCBlLmcuIHRoZSB1cC9k
b3duIGJ1dHRvbnMgb24gYW4gPGlucHV0IHR5cGU9XCJudW1iZXJcIj4uIEFub255bW91c1xuXHQg
IC8vIGRpdnMgZG8gbm90IHNlZW0gdG8gZXhwb3NlIHByb3BlcnRpZXMsIHRyaWdnZXJpbmcgYSBc
IlBlcm1pc3Npb24gZGVuaWVkXG5cdCAgLy8gZXJyb3JcIiBpZiBhbnkgb2YgaXRzIHByb3BlcnRp
ZXMgYXJlIGFjY2Vzc2VkLiBUaGUgb25seSBzZWVtaW5nbHkgcG9zc2libGVcblx0ICAvLyB3YXkg
dG8gYXZvaWQgZXJyb3JpbmcgaXMgdG8gYWNjZXNzIGEgcHJvcGVydHkgdGhhdCB0eXBpY2FsbHkg
d29ya3MgZm9yXG5cdCAgLy8gbm9uLWFub255bW91cyBkaXZzIGFuZCBjYXRjaCBhbnkgZXJyb3Ig
dGhhdCBtYXkgb3RoZXJ3aXNlIGFyaXNlLiBTZWVcblx0ICAvLyBodHRwczovL2J1Z3ppbGxhLm1v
emlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDg0Mjdcblx0ICB0cnkge1xuXHQgICAgLyogZXNs
aW50LWRpc2FibGUgbm8tdW51c2VkLWV4cHJlc3Npb25zICovXG5cdCAgICBjdXJyZW50UmFuZ2Uu
c3RhcnRDb250YWluZXIubm9kZVR5cGU7XG5cdCAgICBjdXJyZW50UmFuZ2UuZW5kQ29udGFpbmVy
Lm5vZGVUeXBlO1xuXHQgICAgLyogZXNsaW50LWVuYWJsZSBuby11bnVzZWQtZXhwcmVzc2lvbnMg
Ki9cblx0ICB9IGNhdGNoIChlKSB7XG5cdCAgICByZXR1cm4gbnVsbDtcblx0ICB9XG5cdFxuXHQg
IC8vIElmIHRoZSBub2RlIGFuZCBvZmZzZXQgdmFsdWVzIGFyZSB0aGUgc2FtZSwgdGhlIHNlbGVj
dGlvbiBpcyBjb2xsYXBzZWQuXG5cdCAgLy8gYFNlbGVjdGlvbi5pc0NvbGxhcHNlZGAgaXMgYXZh
aWxhYmxlIG5hdGl2ZWx5LCBidXQgSUUgc29tZXRpbWVzIGdldHNcblx0ICAvLyB0aGlzIHZhbHVl
IHdyb25nLlxuXHQgIHZhciBpc1NlbGVjdGlvbkNvbGxhcHNlZCA9IGlzQ29sbGFwc2VkKHNlbGVj
dGlvbi5hbmNob3JOb2RlLCBzZWxlY3Rpb24uYW5jaG9yT2Zmc2V0LCBzZWxlY3Rpb24uZm9jdXNO
b2RlLCBzZWxlY3Rpb24uZm9jdXNPZmZzZXQpO1xuXHRcblx0ICB2YXIgcmFuZ2VMZW5ndGggPSBp
c1NlbGVjdGlvbkNvbGxhcHNlZCA/IDAgOiBjdXJyZW50UmFuZ2UudG9TdHJpbmcoKS5sZW5ndGg7
XG5cdFxuXHQgIHZhciB0ZW1wUmFuZ2UgPSBjdXJyZW50UmFuZ2UuY2xvbmVSYW5nZSgpO1xuXHQg
IHRlbXBSYW5nZS5zZWxlY3ROb2RlQ29udGVudHMobm9kZSk7XG5cdCAgdGVtcFJhbmdlLnNldEVu
ZChjdXJyZW50UmFuZ2Uuc3RhcnRDb250YWluZXIsIGN1cnJlbnRSYW5nZS5zdGFydE9mZnNldCk7
XG5cdFxuXHQgIHZhciBpc1RlbXBSYW5nZUNvbGxhcHNlZCA9IGlzQ29sbGFwc2VkKHRlbXBSYW5n
ZS5zdGFydENvbnRhaW5lciwgdGVtcFJhbmdlLnN0YXJ0T2Zmc2V0LCB0ZW1wUmFuZ2UuZW5kQ29u
dGFpbmVyLCB0ZW1wUmFuZ2UuZW5kT2Zmc2V0KTtcblx0XG5cdCAgdmFyIHN0YXJ0ID0gaXNUZW1w
UmFuZ2VDb2xsYXBzZWQgPyAwIDogdGVtcFJhbmdlLnRvU3RyaW5nKCkubGVuZ3RoO1xuXHQgIHZh
ciBlbmQgPSBzdGFydCArIHJhbmdlTGVuZ3RoO1xuXHRcblx0ICAvLyBEZXRlY3Qgd2hldGhlciB0
aGUgc2VsZWN0aW9uIGlzIGJhY2t3YXJkLlxuXHQgIHZhciBkZXRlY3Rpb25SYW5nZSA9IGRvY3Vt
ZW50LmNyZWF0ZVJhbmdlKCk7XG5cdCAgZGV0ZWN0aW9uUmFuZ2Uuc2V0U3RhcnQoYW5jaG9yTm9k
ZSwgYW5jaG9yT2Zmc2V0KTtcblx0ICBkZXRlY3Rpb25SYW5nZS5zZXRFbmQoZm9jdXNOb2RlLCBm
b2N1c09mZnNldCk7XG5cdCAgdmFyIGlzQmFja3dhcmQgPSBkZXRlY3Rpb25SYW5nZS5jb2xsYXBz
ZWQ7XG5cdFxuXHQgIHJldHVybiB7XG5cdCAgICBzdGFydDogaXNCYWNrd2FyZCA/IGVuZCA6IHN0
YXJ0LFxuXHQgICAgZW5kOiBpc0JhY2t3YXJkID8gc3RhcnQgOiBlbmRcblx0ICB9O1xuXHR9XG5c
dFxuXHQvKipcblx0ICogQHBhcmFtIHtET01FbGVtZW50fERPTVRleHROb2RlfSBub2RlXG5cdCAq
IEBwYXJhbSB7b2JqZWN0fSBvZmZzZXRzXG5cdCAqL1xuXHRmdW5jdGlvbiBzZXRJRU9mZnNldHMo
bm9kZSwgb2Zmc2V0cykge1xuXHQgIHZhciByYW5nZSA9IGRvY3VtZW50LnNlbGVjdGlvbi5jcmVh
dGVSYW5nZSgpLmR1cGxpY2F0ZSgpO1xuXHQgIHZhciBzdGFydCwgZW5kO1xuXHRcblx0ICBpZiAo
b2Zmc2V0cy5lbmQgPT09IHVuZGVmaW5lZCkge1xuXHQgICAgc3RhcnQgPSBvZmZzZXRzLnN0YXJ0
O1xuXHQgICAgZW5kID0gc3RhcnQ7XG5cdCAgfSBlbHNlIGlmIChvZmZzZXRzLnN0YXJ0ID4gb2Zm
c2V0cy5lbmQpIHtcblx0ICAgIHN0YXJ0ID0gb2Zmc2V0cy5lbmQ7XG5cdCAgICBlbmQgPSBvZmZz
ZXRzLnN0YXJ0O1xuXHQgIH0gZWxzZSB7XG5cdCAgICBzdGFydCA9IG9mZnNldHMuc3RhcnQ7XG5c
dCAgICBlbmQgPSBvZmZzZXRzLmVuZDtcblx0ICB9XG5cdFxuXHQgIHJhbmdlLm1vdmVUb0VsZW1l
bnRUZXh0KG5vZGUpO1xuXHQgIHJhbmdlLm1vdmVTdGFydCgnY2hhcmFjdGVyJywgc3RhcnQpO1xu
XHQgIHJhbmdlLnNldEVuZFBvaW50KCdFbmRUb1N0YXJ0JywgcmFuZ2UpO1xuXHQgIHJhbmdlLm1v
dmVFbmQoJ2NoYXJhY3RlcicsIGVuZCAtIHN0YXJ0KTtcblx0ICByYW5nZS5zZWxlY3QoKTtcblx0
fVxuXHRcblx0LyoqXG5cdCAqIEluIG1vZGVybiBub24tSUUgYnJvd3NlcnMsIHdlIGNhbiBzdXBw
b3J0IGJvdGggZm9yd2FyZCBhbmQgYmFja3dhcmRcblx0ICogc2VsZWN0aW9ucy5cblx0ICpcblx0
ICogTm90ZTogSUUxMCsgc3VwcG9ydHMgdGhlIFNlbGVjdGlvbiBvYmplY3QsIGJ1dCBpdCBkb2Vz
IG5vdCBzdXBwb3J0XG5cdCAqIHRoZSBgZXh0ZW5kYCBtZXRob2QsIHdoaWNoIG1lYW5zIHRoYXQg
ZXZlbiBpbiBtb2Rlcm4gSUUsIGl0J3Mgbm90IHBvc3NpYmxlXG5cdCAqIHRvIHByb2dyYW1tYXRp
Y2FsbHkgY3JlYXRlIGEgYmFja3dhcmQgc2VsZWN0aW9uLiBUaHVzLCBmb3IgYWxsIElFXG5cdCAq
IHZlcnNpb25zLCB3ZSB1c2UgdGhlIG9sZCBJRSBBUEkgdG8gY3JlYXRlIG91ciBzZWxlY3Rpb25z
LlxuXHQgKlxuXHQgKiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9NVGV4dE5vZGV9IG5vZGVcblx0ICog
QHBhcmFtIHtvYmplY3R9IG9mZnNldHNcblx0ICovXG5cdGZ1bmN0aW9uIHNldE1vZGVybk9mZnNl
dHMobm9kZSwgb2Zmc2V0cykge1xuXHQgIGlmICghd2luZG93LmdldFNlbGVjdGlvbikge1xuXHQg
ICAgcmV0dXJuO1xuXHQgIH1cblx0XG5cdCAgdmFyIHNlbGVjdGlvbiA9IHdpbmRvdy5nZXRTZWxl
Y3Rpb24oKTtcblx0ICB2YXIgbGVuZ3RoID0gbm9kZVtnZXRUZXh0Q29udGVudEFjY2Vzc29yKCld
Lmxlbmd0aDtcblx0ICB2YXIgc3RhcnQgPSBNYXRoLm1pbihvZmZzZXRzLnN0YXJ0LCBsZW5ndGgp
O1xuXHQgIHZhciBlbmQgPSBvZmZzZXRzLmVuZCA9PT0gdW5kZWZpbmVkID8gc3RhcnQgOiBNYXRo
Lm1pbihvZmZzZXRzLmVuZCwgbGVuZ3RoKTtcblx0XG5cdCAgLy8gSUUgMTEgdXNlcyBtb2Rlcm4g
c2VsZWN0aW9uLCBidXQgZG9lc24ndCBzdXBwb3J0IHRoZSBleHRlbmQgbWV0aG9kLlxuXHQgIC8v
IEZsaXAgYmFja3dhcmQgc2VsZWN0aW9ucywgc28gd2UgY2FuIHNldCB3aXRoIGEgc2luZ2xlIHJh
bmdlLlxuXHQgIGlmICghc2VsZWN0aW9uLmV4dGVuZCAmJiBzdGFydCA+IGVuZCkge1xuXHQgICAg
dmFyIHRlbXAgPSBlbmQ7XG5cdCAgICBlbmQgPSBzdGFydDtcblx0ICAgIHN0YXJ0ID0gdGVtcDtc
blx0ICB9XG5cdFxuXHQgIHZhciBzdGFydE1hcmtlciA9IGdldE5vZGVGb3JDaGFyYWN0ZXJPZmZz
ZXQobm9kZSwgc3RhcnQpO1xuXHQgIHZhciBlbmRNYXJrZXIgPSBnZXROb2RlRm9yQ2hhcmFjdGVy
T2Zmc2V0KG5vZGUsIGVuZCk7XG5cdFxuXHQgIGlmIChzdGFydE1hcmtlciAmJiBlbmRNYXJrZXIp
IHtcblx0ICAgIHZhciByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG5cdCAgICByYW5n
ZS5zZXRTdGFydChzdGFydE1hcmtlci5ub2RlLCBzdGFydE1hcmtlci5vZmZzZXQpO1xuXHQgICAg
c2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuXHRcblx0ICAgIGlmIChzdGFydCA+IGVuZCkg
e1xuXHQgICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UocmFuZ2UpO1xuXHQgICAgICBzZWxlY3Rpb24u
ZXh0ZW5kKGVuZE1hcmtlci5ub2RlLCBlbmRNYXJrZXIub2Zmc2V0KTtcblx0ICAgIH0gZWxzZSB7
XG5cdCAgICAgIHJhbmdlLnNldEVuZChlbmRNYXJrZXIubm9kZSwgZW5kTWFya2VyLm9mZnNldCk7
XG5cdCAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7XG5cdCAgICB9XG5cdCAgfVxuXHR9
XG5cdFxuXHR2YXIgdXNlSUVPZmZzZXRzID0gRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9N
ICYmICdzZWxlY3Rpb24nIGluIGRvY3VtZW50ICYmICEoJ2dldFNlbGVjdGlvbicgaW4gd2luZG93
KTtcblx0XG5cdHZhciBSZWFjdERPTVNlbGVjdGlvbiA9IHtcblx0ICAvKipcblx0ICAgKiBAcGFy
YW0ge0RPTUVsZW1lbnR9IG5vZGVcblx0ICAgKi9cblx0ICBnZXRPZmZzZXRzOiB1c2VJRU9mZnNl
dHMgPyBnZXRJRU9mZnNldHMgOiBnZXRNb2Rlcm5PZmZzZXRzLFxuXHRcblx0ICAvKipcblx0ICAg
KiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9NVGV4dE5vZGV9IG5vZGVcblx0ICAgKiBAcGFyYW0ge29i
amVjdH0gb2Zmc2V0c1xuXHQgICAqL1xuXHQgIHNldE9mZnNldHM6IHVzZUlFT2Zmc2V0cyA/IHNl
dElFT2Zmc2V0cyA6IHNldE1vZGVybk9mZnNldHNcblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRz
ID0gUmVhY3RET01TZWxlY3Rpb247XG5cbi8qKiovIH0sXG4vKiAxNDYgKi9cbi8qKiovIGZ1bmN0
aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQg
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0
Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyksXG5c
dCAgICBfYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0KTtcblx0XG5cdHZhciBET01DaGls
ZHJlbk9wZXJhdGlvbnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM0KTtcblx0dmFyIERPTUxhenlU
cmVlID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNCk7XG5cdHZhciBSZWFjdERPTUNvbXBvbmVudFRy
ZWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuXHRcblx0dmFyIGVzY2FwZVRleHRDb250ZW50
Rm9yQnJvd3NlciA9IF9fd2VicGFja19yZXF1aXJlX18oMjgpO1xuXHR2YXIgaW52YXJpYW50ID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0dmFyIHZhbGlkYXRlRE9NTmVzdGluZyA9IF9fd2Vi
cGFja19yZXF1aXJlX18oNDkpO1xuXHRcblx0LyoqXG5cdCAqIFRleHQgbm9kZXMgdmlvbGF0ZSBh
IGNvdXBsZSBhc3N1bXB0aW9ucyB0aGF0IFJlYWN0IG1ha2VzIGFib3V0IGNvbXBvbmVudHM6XG5c
dCAqXG5cdCAqICAtIFdoZW4gbW91bnRpbmcgdGV4dCBpbnRvIHRoZSBET00sIGFkamFjZW50IHRl
eHQgbm9kZXMgYXJlIG1lcmdlZC5cblx0ICogIC0gVGV4dCBub2RlcyBjYW5ub3QgYmUgYXNzaWdu
ZWQgYSBSZWFjdCByb290IElELlxuXHQgKlxuXHQgKiBUaGlzIGNvbXBvbmVudCBpcyB1c2VkIHRv
IHdyYXAgc3RyaW5ncyBiZXR3ZWVuIGNvbW1lbnQgbm9kZXMgc28gdGhhdCB0aGV5XG5cdCAqIGNh
biB1bmRlcmdvIHRoZSBzYW1lIHJlY29uY2lsaWF0aW9uIHRoYXQgaXMgYXBwbGllZCB0byBlbGVt
ZW50cy5cblx0ICpcblx0ICogVE9ETzogSW52ZXN0aWdhdGUgcmVwcmVzZW50aW5nIFJlYWN0IGNv
bXBvbmVudHMgaW4gdGhlIERPTSB3aXRoIHRleHQgbm9kZXMuXG5cdCAqXG5cdCAqIEBjbGFzcyBS
ZWFjdERPTVRleHRDb21wb25lbnRcblx0ICogQGV4dGVuZHMgUmVhY3RDb21wb25lbnRcblx0ICog
QGludGVybmFsXG5cdCAqL1xuXHR2YXIgUmVhY3RET01UZXh0Q29tcG9uZW50ID0gZnVuY3Rpb24g
KHRleHQpIHtcblx0ICAvLyBUT0RPOiBUaGlzIGlzIHJlYWxseSBhIFJlYWN0VGV4dCAoUmVhY3RO
b2RlKSwgbm90IGEgUmVhY3RFbGVtZW50XG5cdCAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSB0ZXh0
O1xuXHQgIHRoaXMuX3N0cmluZ1RleHQgPSAnJyArIHRleHQ7XG5cdCAgLy8gUmVhY3RET01Db21w
b25lbnRUcmVlIHVzZXMgdGhlc2U6XG5cdCAgdGhpcy5faG9zdE5vZGUgPSBudWxsO1xuXHQgIHRo
aXMuX2hvc3RQYXJlbnQgPSBudWxsO1xuXHRcblx0ICAvLyBQcm9wZXJ0aWVzXG5cdCAgdGhpcy5f
ZG9tSUQgPSAwO1xuXHQgIHRoaXMuX21vdW50SW5kZXggPSAwO1xuXHQgIHRoaXMuX2Nsb3NpbmdD
b21tZW50ID0gbnVsbDtcblx0ICB0aGlzLl9jb21tZW50Tm9kZXMgPSBudWxsO1xuXHR9O1xuXHRc
blx0X2Fzc2lnbihSZWFjdERPTVRleHRDb21wb25lbnQucHJvdG90eXBlLCB7XG5cdCAgLyoqXG5c
dCAgICogQ3JlYXRlcyB0aGUgbWFya3VwIGZvciB0aGlzIHRleHQgbm9kZS4gVGhpcyBub2RlIGlz
IG5vdCBpbnRlbmRlZCB0byBoYXZlXG5cdCAgICogYW55IGZlYXR1cmVzIGJlc2lkZXMgY29udGFp
bmluZyB0ZXh0IGNvbnRlbnQuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxl
VHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25c
blx0ICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1hcmt1cCBmb3IgdGhpcyB0ZXh0IG5vZGUuXG5cdCAg
ICogQGludGVybmFsXG5cdCAgICovXG5cdCAgbW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uICh0cmFu
c2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIGNvbnRleHQpIHtcblx0ICAg
IGlmIChmYWxzZSkge1xuXHQgICAgICB2YXIgcGFyZW50SW5mbztcblx0ICAgICAgaWYgKGhvc3RQ
YXJlbnQgIT0gbnVsbCkge1xuXHQgICAgICAgIHBhcmVudEluZm8gPSBob3N0UGFyZW50Ll9hbmNl
c3RvckluZm87XG5cdCAgICAgIH0gZWxzZSBpZiAoaG9zdENvbnRhaW5lckluZm8gIT0gbnVsbCkg
e1xuXHQgICAgICAgIHBhcmVudEluZm8gPSBob3N0Q29udGFpbmVySW5mby5fYW5jZXN0b3JJbmZv
O1xuXHQgICAgICB9XG5cdCAgICAgIGlmIChwYXJlbnRJbmZvKSB7XG5cdCAgICAgICAgLy8gcGFy
ZW50SW5mbyBzaG91bGQgYWx3YXlzIGJlIHByZXNlbnQgZXhjZXB0IGZvciB0aGUgdG9wLWxldmVs
XG5cdCAgICAgICAgLy8gY29tcG9uZW50IHdoZW4gc2VydmVyIHJlbmRlcmluZ1xuXHQgICAgICAg
IHZhbGlkYXRlRE9NTmVzdGluZyhudWxsLCB0aGlzLl9zdHJpbmdUZXh0LCB0aGlzLCBwYXJlbnRJ
bmZvKTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIHZhciBkb21JRCA9IGhvc3RDb250
YWluZXJJbmZvLl9pZENvdW50ZXIrKztcblx0ICAgIHZhciBvcGVuaW5nVmFsdWUgPSAnIHJlYWN0
LXRleHQ6ICcgKyBkb21JRCArICcgJztcblx0ICAgIHZhciBjbG9zaW5nVmFsdWUgPSAnIC9yZWFj
dC10ZXh0ICc7XG5cdCAgICB0aGlzLl9kb21JRCA9IGRvbUlEO1xuXHQgICAgdGhpcy5faG9zdFBh
cmVudCA9IGhvc3RQYXJlbnQ7XG5cdCAgICBpZiAodHJhbnNhY3Rpb24udXNlQ3JlYXRlRWxlbWVu
dCkge1xuXHQgICAgICB2YXIgb3duZXJEb2N1bWVudCA9IGhvc3RDb250YWluZXJJbmZvLl9vd25l
ckRvY3VtZW50O1xuXHQgICAgICB2YXIgb3BlbmluZ0NvbW1lbnQgPSBvd25lckRvY3VtZW50LmNy
ZWF0ZUNvbW1lbnQob3BlbmluZ1ZhbHVlKTtcblx0ICAgICAgdmFyIGNsb3NpbmdDb21tZW50ID0g
b3duZXJEb2N1bWVudC5jcmVhdGVDb21tZW50KGNsb3NpbmdWYWx1ZSk7XG5cdCAgICAgIHZhciBs
YXp5VHJlZSA9IERPTUxhenlUcmVlKG93bmVyRG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVu
dCgpKTtcblx0ICAgICAgRE9NTGF6eVRyZWUucXVldWVDaGlsZChsYXp5VHJlZSwgRE9NTGF6eVRy
ZWUob3BlbmluZ0NvbW1lbnQpKTtcblx0ICAgICAgaWYgKHRoaXMuX3N0cmluZ1RleHQpIHtcblx0
ICAgICAgICBET01MYXp5VHJlZS5xdWV1ZUNoaWxkKGxhenlUcmVlLCBET01MYXp5VHJlZShvd25l
ckRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRoaXMuX3N0cmluZ1RleHQpKSk7XG5cdCAgICAgIH1c
blx0ICAgICAgRE9NTGF6eVRyZWUucXVldWVDaGlsZChsYXp5VHJlZSwgRE9NTGF6eVRyZWUoY2xv
c2luZ0NvbW1lbnQpKTtcblx0ICAgICAgUmVhY3RET01Db21wb25lbnRUcmVlLnByZWNhY2hlTm9k
ZSh0aGlzLCBvcGVuaW5nQ29tbWVudCk7XG5cdCAgICAgIHRoaXMuX2Nsb3NpbmdDb21tZW50ID0g
Y2xvc2luZ0NvbW1lbnQ7XG5cdCAgICAgIHJldHVybiBsYXp5VHJlZTtcblx0ICAgIH0gZWxzZSB7
XG5cdCAgICAgIHZhciBlc2NhcGVkVGV4dCA9IGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nlcih0
aGlzLl9zdHJpbmdUZXh0KTtcblx0XG5cdCAgICAgIGlmICh0cmFuc2FjdGlvbi5yZW5kZXJUb1N0
YXRpY01hcmt1cCkge1xuXHQgICAgICAgIC8vIE5vcm1hbGx5IHdlJ2Qgd3JhcCB0aGlzIGJldHdl
ZW4gY29tbWVudCBub2RlcyBmb3IgdGhlIHJlYXNvbnMgc3RhdGVkXG5cdCAgICAgICAgLy8gYWJv
dmUsIGJ1dCBzaW5jZSB0aGlzIGlzIGEgc2l0dWF0aW9uIHdoZXJlIFJlYWN0IHdvbid0IHRha2Ug
b3ZlclxuXHQgICAgICAgIC8vIChzdGF0aWMgcGFnZXMpLCB3ZSBjYW4gc2ltcGx5IHJldHVybiB0
aGUgdGV4dCBhcyBpdCBpcy5cblx0ICAgICAgICByZXR1cm4gZXNjYXBlZFRleHQ7XG5cdCAgICAg
IH1cblx0XG5cdCAgICAgIHJldHVybiAnPCEtLScgKyBvcGVuaW5nVmFsdWUgKyAnLS0+JyArIGVz
Y2FwZWRUZXh0ICsgJzwhLS0nICsgY2xvc2luZ1ZhbHVlICsgJy0tPic7XG5cdCAgICB9XG5cdCAg
fSxcblx0XG5cdCAgLyoqXG5cdCAgICogVXBkYXRlcyB0aGlzIGNvbXBvbmVudCBieSB1cGRhdGlu
ZyB0aGUgdGV4dCBjb250ZW50LlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtSZWFjdFRleHR9IG5l
eHRUZXh0IFRoZSBuZXh0IHRleHQgY29udGVudFxuXHQgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNp
bGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0
ICByZWNlaXZlQ29tcG9uZW50OiBmdW5jdGlvbiAobmV4dFRleHQsIHRyYW5zYWN0aW9uKSB7XG5c
dCAgICBpZiAobmV4dFRleHQgIT09IHRoaXMuX2N1cnJlbnRFbGVtZW50KSB7XG5cdCAgICAgIHRo
aXMuX2N1cnJlbnRFbGVtZW50ID0gbmV4dFRleHQ7XG5cdCAgICAgIHZhciBuZXh0U3RyaW5nVGV4
dCA9ICcnICsgbmV4dFRleHQ7XG5cdCAgICAgIGlmIChuZXh0U3RyaW5nVGV4dCAhPT0gdGhpcy5f
c3RyaW5nVGV4dCkge1xuXHQgICAgICAgIC8vIFRPRE86IFNhdmUgdGhpcyBhcyBwZW5kaW5nIHBy
b3BzIGFuZCB1c2UgcGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5XG5cdCAgICAgICAgLy8gYW5kL29y
IHVwZGF0ZUNvbXBvbmVudCB0byBkbyB0aGUgYWN0dWFsIHVwZGF0ZSBmb3IgY29uc2lzdGVuY3kg
d2l0aFxuXHQgICAgICAgIC8vIG90aGVyIGNvbXBvbmVudCB0eXBlcz9cblx0ICAgICAgICB0aGlz
Ll9zdHJpbmdUZXh0ID0gbmV4dFN0cmluZ1RleHQ7XG5cdCAgICAgICAgdmFyIGNvbW1lbnROb2Rl
cyA9IHRoaXMuZ2V0SG9zdE5vZGUoKTtcblx0ICAgICAgICBET01DaGlsZHJlbk9wZXJhdGlvbnMu
cmVwbGFjZURlbGltaXRlZFRleHQoY29tbWVudE5vZGVzWzBdLCBjb21tZW50Tm9kZXNbMV0sIG5l
eHRTdHJpbmdUZXh0KTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIGdldEhv
c3ROb2RlOiBmdW5jdGlvbiAoKSB7XG5cdCAgICB2YXIgaG9zdE5vZGUgPSB0aGlzLl9jb21tZW50
Tm9kZXM7XG5cdCAgICBpZiAoaG9zdE5vZGUpIHtcblx0ICAgICAgcmV0dXJuIGhvc3ROb2RlO1xu
XHQgICAgfVxuXHQgICAgaWYgKCF0aGlzLl9jbG9zaW5nQ29tbWVudCkge1xuXHQgICAgICB2YXIg
b3BlbmluZ0NvbW1lbnQgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5j
ZSh0aGlzKTtcblx0ICAgICAgdmFyIG5vZGUgPSBvcGVuaW5nQ29tbWVudC5uZXh0U2libGluZztc
blx0ICAgICAgd2hpbGUgKHRydWUpIHtcblx0ICAgICAgICAhKG5vZGUgIT0gbnVsbCkgPyAgZmFs
c2UgPyBpbnZhcmlhbnQoZmFsc2UsICdNaXNzaW5nIGNsb3NpbmcgY29tbWVudCBmb3IgdGV4dCBj
b21wb25lbnQgJXMnLCB0aGlzLl9kb21JRCkgOiBfcHJvZEludmFyaWFudCgnNjcnLCB0aGlzLl9k
b21JRCkgOiB2b2lkIDA7XG5cdCAgICAgICAgaWYgKG5vZGUubm9kZVR5cGUgPT09IDggJiYgbm9k
ZS5ub2RlVmFsdWUgPT09ICcgL3JlYWN0LXRleHQgJykge1xuXHQgICAgICAgICAgdGhpcy5fY2xv
c2luZ0NvbW1lbnQgPSBub2RlO1xuXHQgICAgICAgICAgYnJlYWs7XG5cdCAgICAgICAgfVxuXHQg
ICAgICAgIG5vZGUgPSBub2RlLm5leHRTaWJsaW5nO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAg
ICBob3N0Tm9kZSA9IFt0aGlzLl9ob3N0Tm9kZSwgdGhpcy5fY2xvc2luZ0NvbW1lbnRdO1xuXHQg
ICAgdGhpcy5fY29tbWVudE5vZGVzID0gaG9zdE5vZGU7XG5cdCAgICByZXR1cm4gaG9zdE5vZGU7
XG5cdCAgfSxcblx0XG5cdCAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKCkge1xuXHQgICAg
dGhpcy5fY2xvc2luZ0NvbW1lbnQgPSBudWxsO1xuXHQgICAgdGhpcy5fY29tbWVudE5vZGVzID0g
bnVsbDtcblx0ICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS51bmNhY2hlTm9kZSh0aGlzKTtcblx0
ICB9XG5cdH0pO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVRleHRDb21wb25lbnQ7
XG5cbi8qKiovIH0sXG4vKiAxNDcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywg
X193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZElu
dmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyksXG5cdCAgICBfYXNzaWduID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg0KTtcblx0XG5cdHZhciBMaW5rZWRWYWx1ZVV0aWxzID0gX193ZWJwYWNr
X3JlcXVpcmVfXygzOSk7XG5cdHZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfX3dlYnBhY2tf
cmVxdWlyZV9fKDUpO1xuXHR2YXIgUmVhY3RVcGRhdGVzID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5
KTtcblx0XG5cdHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHR2YXIg
d2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cdFxuXHR2YXIgZGlkV2FyblZhbHVl
TGluayA9IGZhbHNlO1xuXHR2YXIgZGlkV2FyblZhbERlZmF1bHRWYWwgPSBmYWxzZTtcblx0XG5c
dGZ1bmN0aW9uIGZvcmNlVXBkYXRlSWZNb3VudGVkKCkge1xuXHQgIGlmICh0aGlzLl9yb290Tm9k
ZUlEKSB7XG5cdCAgICAvLyBET00gY29tcG9uZW50IGlzIHN0aWxsIG1vdW50ZWQ7IHVwZGF0ZVxu
XHQgICAgUmVhY3RET01UZXh0YXJlYS51cGRhdGVXcmFwcGVyKHRoaXMpO1xuXHQgIH1cblx0fVxu
XHRcblx0LyoqXG5cdCAqIEltcGxlbWVudHMgYSA8dGV4dGFyZWE+IGhvc3QgY29tcG9uZW50IHRo
YXQgYWxsb3dzIHNldHRpbmcgYHZhbHVlYCwgYW5kXG5cdCAqIGBkZWZhdWx0VmFsdWVgLiBUaGlz
IGRpZmZlcnMgZnJvbSB0aGUgdHJhZGl0aW9uYWwgRE9NIEFQSSBiZWNhdXNlIHZhbHVlIGlzXG5c
dCAqIHVzdWFsbHkgc2V0IGFzIFBDREFUQSBjaGlsZHJlbi5cblx0ICpcblx0ICogSWYgYHZhbHVl
YCBpcyBub3Qgc3VwcGxpZWQgKG9yIG51bGwvdW5kZWZpbmVkKSwgdXNlciBhY3Rpb25zIHRoYXQg
YWZmZWN0IHRoZVxuXHQgKiB2YWx1ZSB3aWxsIHRyaWdnZXIgdXBkYXRlcyB0byB0aGUgZWxlbWVu
dC5cblx0ICpcblx0ICogSWYgYHZhbHVlYCBpcyBzdXBwbGllZCAoYW5kIG5vdCBudWxsL3VuZGVm
aW5lZCksIHRoZSByZW5kZXJlZCBlbGVtZW50IHdpbGxcblx0ICogbm90IHRyaWdnZXIgdXBkYXRl
cyB0byB0aGUgZWxlbWVudC4gSW5zdGVhZCwgdGhlIGB2YWx1ZWAgcHJvcCBtdXN0IGNoYW5nZSBp
blxuXHQgKiBvcmRlciBmb3IgdGhlIHJlbmRlcmVkIGVsZW1lbnQgdG8gYmUgdXBkYXRlZC5cblx0
ICpcblx0ICogVGhlIHJlbmRlcmVkIGVsZW1lbnQgd2lsbCBiZSBpbml0aWFsaXplZCB3aXRoIGFu
IGVtcHR5IHZhbHVlLCB0aGUgcHJvcFxuXHQgKiBgZGVmYXVsdFZhbHVlYCBpZiBzcGVjaWZpZWQs
IG9yIHRoZSBjaGlsZHJlbiBjb250ZW50IChkZXByZWNhdGVkKS5cblx0ICovXG5cdHZhciBSZWFj
dERPTVRleHRhcmVhID0ge1xuXHQgIGdldEhvc3RQcm9wczogZnVuY3Rpb24gKGluc3QsIHByb3Bz
KSB7XG5cdCAgICAhKHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MID09IG51bGwpID8gIGZh
bHNlID8gaW52YXJpYW50KGZhbHNlLCAnYGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MYCBkb2VzIG5v
dCBtYWtlIHNlbnNlIG9uIDx0ZXh0YXJlYT4uJykgOiBfcHJvZEludmFyaWFudCgnOTEnKSA6IHZv
aWQgMDtcblx0XG5cdCAgICAvLyBBbHdheXMgc2V0IGNoaWxkcmVuIHRvIHRoZSBzYW1lIHRoaW5n
LiBJbiBJRTksIHRoZSBzZWxlY3Rpb24gcmFuZ2Ugd2lsbFxuXHQgICAgLy8gZ2V0IHJlc2V0IGlm
IGB0ZXh0Q29udGVudGAgaXMgbXV0YXRlZC4gIFdlIGNvdWxkIGFkZCBhIGNoZWNrIGluIHNldFRl
eHRDb250ZW50XG5cdCAgICAvLyB0byBvbmx5IHNldCB0aGUgdmFsdWUgaWYvd2hlbiB0aGUgdmFs
dWUgZGlmZmVycyBmcm9tIHRoZSBub2RlIHZhbHVlICh3aGljaCB3b3VsZFxuXHQgICAgLy8gY29t
cGxldGVseSBzb2x2ZSB0aGlzIElFOSBidWcpLCBidXQgU2ViYXN0aWFuK0JlbiBzZWVtZWQgdG8g
bGlrZSB0aGlzIHNvbHV0aW9uLlxuXHQgICAgLy8gVGhlIHZhbHVlIGNhbiBiZSBhIGJvb2xlYW4g
b3Igb2JqZWN0IHNvIHRoYXQncyB3aHkgaXQncyBmb3JjZWQgdG8gYmUgYSBzdHJpbmcuXG5cdCAg
ICB2YXIgaG9zdFByb3BzID0gX2Fzc2lnbih7fSwgcHJvcHMsIHtcblx0ICAgICAgdmFsdWU6IHVu
ZGVmaW5lZCxcblx0ICAgICAgZGVmYXVsdFZhbHVlOiB1bmRlZmluZWQsXG5cdCAgICAgIGNoaWxk
cmVuOiAnJyArIGluc3QuX3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUsXG5cdCAgICAgIG9uQ2hh
bmdlOiBpbnN0Ll93cmFwcGVyU3RhdGUub25DaGFuZ2Vcblx0ICAgIH0pO1xuXHRcblx0ICAgIHJl
dHVybiBob3N0UHJvcHM7XG5cdCAgfSxcblx0XG5cdCAgbW91bnRXcmFwcGVyOiBmdW5jdGlvbiAo
aW5zdCwgcHJvcHMpIHtcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBMaW5rZWRWYWx1ZVV0
aWxzLmNoZWNrUHJvcFR5cGVzKCd0ZXh0YXJlYScsIHByb3BzLCBpbnN0Ll9jdXJyZW50RWxlbWVu
dC5fb3duZXIpO1xuXHQgICAgICBpZiAocHJvcHMudmFsdWVMaW5rICE9PSB1bmRlZmluZWQgJiYg
IWRpZFdhcm5WYWx1ZUxpbmspIHtcblx0ICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2B2YWx1ZUxpbmtgIHByb3Agb24gYHRleHRh
cmVhYCBpcyBkZXByZWNhdGVkOyBzZXQgYHZhbHVlYCBhbmQgYG9uQ2hhbmdlYCBpbnN0ZWFkLicp
IDogdm9pZCAwO1xuXHQgICAgICAgIGRpZFdhcm5WYWx1ZUxpbmsgPSB0cnVlO1xuXHQgICAgICB9
XG5cdCAgICAgIGlmIChwcm9wcy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHByb3BzLmRlZmF1bHRW
YWx1ZSAhPT0gdW5kZWZpbmVkICYmICFkaWRXYXJuVmFsRGVmYXVsdFZhbCkge1xuXHQgICAgICAg
IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAn
VGV4dGFyZWEgZWxlbWVudHMgbXVzdCBiZSBlaXRoZXIgY29udHJvbGxlZCBvciB1bmNvbnRyb2xs
ZWQgJyArICcoc3BlY2lmeSBlaXRoZXIgdGhlIHZhbHVlIHByb3AsIG9yIHRoZSBkZWZhdWx0VmFs
dWUgcHJvcCwgYnV0IG5vdCAnICsgJ2JvdGgpLiBEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRy
b2xsZWQgb3IgdW5jb250cm9sbGVkIHRleHRhcmVhICcgKyAnYW5kIHJlbW92ZSBvbmUgb2YgdGhl
c2UgcHJvcHMuIE1vcmUgaW5mbzogJyArICdodHRwczovL2ZiLm1lL3JlYWN0LWNvbnRyb2xsZWQt
Y29tcG9uZW50cycpIDogdm9pZCAwO1xuXHQgICAgICAgIGRpZFdhcm5WYWxEZWZhdWx0VmFsID0g
dHJ1ZTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIHZhciB2YWx1ZSA9IExpbmtlZFZh
bHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpO1xuXHQgICAgdmFyIGluaXRpYWxWYWx1ZSA9IHZhbHVl
O1xuXHRcblx0ICAgIC8vIE9ubHkgYm90aGVyIGZldGNoaW5nIGRlZmF1bHQgdmFsdWUgaWYgd2Un
cmUgZ29pbmcgdG8gdXNlIGl0XG5cdCAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuXHQgICAgICB2
YXIgZGVmYXVsdFZhbHVlID0gcHJvcHMuZGVmYXVsdFZhbHVlO1xuXHQgICAgICAvLyBUT0RPICh5
dW5nc3RlcnMpOiBSZW1vdmUgc3VwcG9ydCBmb3IgY2hpbGRyZW4gY29udGVudCBpbiA8dGV4dGFy
ZWE+LlxuXHQgICAgICB2YXIgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbjtcblx0ICAgICAgaWYg
KGNoaWxkcmVuICE9IG51bGwpIHtcblx0ICAgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICAg
IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAn
VXNlIHRoZSBgZGVmYXVsdFZhbHVlYCBvciBgdmFsdWVgIHByb3BzIGluc3RlYWQgb2Ygc2V0dGlu
ZyAnICsgJ2NoaWxkcmVuIG9uIDx0ZXh0YXJlYT4uJykgOiB2b2lkIDA7XG5cdCAgICAgICAgfVxu
XHQgICAgICAgICEoZGVmYXVsdFZhbHVlID09IG51bGwpID8gIGZhbHNlID8gaW52YXJpYW50KGZh
bHNlLCAnSWYgeW91IHN1cHBseSBgZGVmYXVsdFZhbHVlYCBvbiBhIDx0ZXh0YXJlYT4sIGRvIG5v
dCBwYXNzIGNoaWxkcmVuLicpIDogX3Byb2RJbnZhcmlhbnQoJzkyJykgOiB2b2lkIDA7XG5cdCAg
ICAgICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XG5cdCAgICAgICAgICAhKGNoaWxk
cmVuLmxlbmd0aCA8PSAxKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJzx0ZXh0YXJlYT4g
Y2FuIG9ubHkgaGF2ZSBhdCBtb3N0IG9uZSBjaGlsZC4nKSA6IF9wcm9kSW52YXJpYW50KCc5Mycp
IDogdm9pZCAwO1xuXHQgICAgICAgICAgY2hpbGRyZW4gPSBjaGlsZHJlblswXTtcblx0ICAgICAg
ICB9XG5cdFxuXHQgICAgICAgIGRlZmF1bHRWYWx1ZSA9ICcnICsgY2hpbGRyZW47XG5cdCAgICAg
IH1cblx0ICAgICAgaWYgKGRlZmF1bHRWYWx1ZSA9PSBudWxsKSB7XG5cdCAgICAgICAgZGVmYXVs
dFZhbHVlID0gJyc7XG5cdCAgICAgIH1cblx0ICAgICAgaW5pdGlhbFZhbHVlID0gZGVmYXVsdFZh
bHVlO1xuXHQgICAgfVxuXHRcblx0ICAgIGluc3QuX3dyYXBwZXJTdGF0ZSA9IHtcblx0ICAgICAg
aW5pdGlhbFZhbHVlOiAnJyArIGluaXRpYWxWYWx1ZSxcblx0ICAgICAgbGlzdGVuZXJzOiBudWxs
LFxuXHQgICAgICBvbkNoYW5nZTogX2hhbmRsZUNoYW5nZS5iaW5kKGluc3QpXG5cdCAgICB9O1xu
XHQgIH0sXG5cdFxuXHQgIHVwZGF0ZVdyYXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7XG5cdCAgICB2
YXIgcHJvcHMgPSBpbnN0Ll9jdXJyZW50RWxlbWVudC5wcm9wcztcblx0XG5cdCAgICB2YXIgbm9k
ZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpO1xuXHQg
ICAgdmFyIHZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7XG5cdCAgICBp
ZiAodmFsdWUgIT0gbnVsbCkge1xuXHQgICAgICAvLyBDYXN0IGB2YWx1ZWAgdG8gYSBzdHJpbmcg
dG8gZW5zdXJlIHRoZSB2YWx1ZSBpcyBzZXQgY29ycmVjdGx5LiBXaGlsZVxuXHQgICAgICAvLyBi
cm93c2VycyB0eXBpY2FsbHkgZG8gdGhpcyBhcyBuZWNlc3NhcnksIGpzZG9tIGRvZXNuJ3QuXG5c
dCAgICAgIHZhciBuZXdWYWx1ZSA9ICcnICsgdmFsdWU7XG5cdFxuXHQgICAgICAvLyBUbyBhdm9p
ZCBzaWRlIGVmZmVjdHMgKHN1Y2ggYXMgbG9zaW5nIHRleHQgc2VsZWN0aW9uKSwgb25seSBzZXQg
dmFsdWUgaWYgY2hhbmdlZFxuXHQgICAgICBpZiAobmV3VmFsdWUgIT09IG5vZGUudmFsdWUpIHtc
blx0ICAgICAgICBub2RlLnZhbHVlID0gbmV3VmFsdWU7XG5cdCAgICAgIH1cblx0ICAgICAgaWYg
KHByb3BzLmRlZmF1bHRWYWx1ZSA9PSBudWxsKSB7XG5cdCAgICAgICAgbm9kZS5kZWZhdWx0VmFs
dWUgPSBuZXdWYWx1ZTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgICAgaWYgKHByb3BzLmRlZmF1
bHRWYWx1ZSAhPSBudWxsKSB7XG5cdCAgICAgIG5vZGUuZGVmYXVsdFZhbHVlID0gcHJvcHMuZGVm
YXVsdFZhbHVlO1xuXHQgICAgfVxuXHQgIH0sXG5cdFxuXHQgIHBvc3RNb3VudFdyYXBwZXI6IGZ1
bmN0aW9uIChpbnN0KSB7XG5cdCAgICAvLyBUaGlzIGlzIGluIHBvc3RNb3VudCBiZWNhdXNlIHdl
IG5lZWQgYWNjZXNzIHRvIHRoZSBET00gbm9kZSwgd2hpY2ggaXMgbm90XG5cdCAgICAvLyBhdmFp
bGFibGUgdW50aWwgYWZ0ZXIgdGhlIGNvbXBvbmVudCBoYXMgbW91bnRlZC5cblx0ICAgIHZhciBu
b2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7XG5c
dCAgICB2YXIgdGV4dENvbnRlbnQgPSBub2RlLnRleHRDb250ZW50O1xuXHRcblx0ICAgIC8vIE9u
bHkgc2V0IG5vZGUudmFsdWUgaWYgdGV4dENvbnRlbnQgaXMgZXF1YWwgdG8gdGhlIGV4cGVjdGVk
XG5cdCAgICAvLyBpbml0aWFsIHZhbHVlLiBJbiBJRTEwL0lFMTEgdGhlcmUgaXMgYSBidWcgd2hl
cmUgdGhlIHBsYWNlaG9sZGVyIGF0dHJpYnV0ZVxuXHQgICAgLy8gd2lsbCBwb3B1bGF0ZSB0ZXh0
Q29udGVudCBhcyB3ZWxsLlxuXHQgICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubWljcm9zb2Z0LmNv
bS9taWNyb3NvZnQtZWRnZS9wbGF0Zm9ybS9pc3N1ZXMvMTAxNTI1L1xuXHQgICAgaWYgKHRleHRD
b250ZW50ID09PSBpbnN0Ll93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlKSB7XG5cdCAgICAgIG5v
ZGUudmFsdWUgPSB0ZXh0Q29udGVudDtcblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdFxuXHRmdW5j
dGlvbiBfaGFuZGxlQ2hhbmdlKGV2ZW50KSB7XG5cdCAgdmFyIHByb3BzID0gdGhpcy5fY3VycmVu
dEVsZW1lbnQucHJvcHM7XG5cdCAgdmFyIHJldHVyblZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5l
eGVjdXRlT25DaGFuZ2UocHJvcHMsIGV2ZW50KTtcblx0ICBSZWFjdFVwZGF0ZXMuYXNhcChmb3Jj
ZVVwZGF0ZUlmTW91bnRlZCwgdGhpcyk7XG5cdCAgcmV0dXJuIHJldHVyblZhbHVlO1xuXHR9XG5c
dFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NVGV4dGFyZWE7XG5cbi8qKiovIH0sXG4vKiAx
NDggKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVf
Xykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxNS1wcmVzZW50LCBGYWNlYm9vaywgSW5j
LlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9c
blx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFj
a19yZXF1aXJlX18oMyk7XG5cdFxuXHR2YXIgaW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVf
XygxKTtcblx0XG5cdC8qKlxuXHQgKiBSZXR1cm4gdGhlIGxvd2VzdCBjb21tb24gYW5jZXN0b3Ig
b2YgQSBhbmQgQiwgb3IgbnVsbCBpZiB0aGV5IGFyZSBpblxuXHQgKiBkaWZmZXJlbnQgdHJlZXMu
XG5cdCAqL1xuXHRmdW5jdGlvbiBnZXRMb3dlc3RDb21tb25BbmNlc3RvcihpbnN0QSwgaW5zdEIp
IHtcblx0ICAhKCdfaG9zdE5vZGUnIGluIGluc3RBKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxz
ZSwgJ2dldE5vZGVGcm9tSW5zdGFuY2U6IEludmFsaWQgYXJndW1lbnQuJykgOiBfcHJvZEludmFy
aWFudCgnMzMnKSA6IHZvaWQgMDtcblx0ICAhKCdfaG9zdE5vZGUnIGluIGluc3RCKSA/ICBmYWxz
ZSA/IGludmFyaWFudChmYWxzZSwgJ2dldE5vZGVGcm9tSW5zdGFuY2U6IEludmFsaWQgYXJndW1l
bnQuJykgOiBfcHJvZEludmFyaWFudCgnMzMnKSA6IHZvaWQgMDtcblx0XG5cdCAgdmFyIGRlcHRo
QSA9IDA7XG5cdCAgZm9yICh2YXIgdGVtcEEgPSBpbnN0QTsgdGVtcEE7IHRlbXBBID0gdGVtcEEu
X2hvc3RQYXJlbnQpIHtcblx0ICAgIGRlcHRoQSsrO1xuXHQgIH1cblx0ICB2YXIgZGVwdGhCID0g
MDtcblx0ICBmb3IgKHZhciB0ZW1wQiA9IGluc3RCOyB0ZW1wQjsgdGVtcEIgPSB0ZW1wQi5faG9z
dFBhcmVudCkge1xuXHQgICAgZGVwdGhCKys7XG5cdCAgfVxuXHRcblx0ICAvLyBJZiBBIGlzIGRl
ZXBlciwgY3Jhd2wgdXAuXG5cdCAgd2hpbGUgKGRlcHRoQSAtIGRlcHRoQiA+IDApIHtcblx0ICAg
IGluc3RBID0gaW5zdEEuX2hvc3RQYXJlbnQ7XG5cdCAgICBkZXB0aEEtLTtcblx0ICB9XG5cdFxu
XHQgIC8vIElmIEIgaXMgZGVlcGVyLCBjcmF3bCB1cC5cblx0ICB3aGlsZSAoZGVwdGhCIC0gZGVw
dGhBID4gMCkge1xuXHQgICAgaW5zdEIgPSBpbnN0Qi5faG9zdFBhcmVudDtcblx0ICAgIGRlcHRo
Qi0tO1xuXHQgIH1cblx0XG5cdCAgLy8gV2FsayBpbiBsb2Nrc3RlcCB1bnRpbCB3ZSBmaW5kIGEg
bWF0Y2guXG5cdCAgdmFyIGRlcHRoID0gZGVwdGhBO1xuXHQgIHdoaWxlIChkZXB0aC0tKSB7XG5c
dCAgICBpZiAoaW5zdEEgPT09IGluc3RCKSB7XG5cdCAgICAgIHJldHVybiBpbnN0QTtcblx0ICAg
IH1cblx0ICAgIGluc3RBID0gaW5zdEEuX2hvc3RQYXJlbnQ7XG5cdCAgICBpbnN0QiA9IGluc3RC
Ll9ob3N0UGFyZW50O1xuXHQgIH1cblx0ICByZXR1cm4gbnVsbDtcblx0fVxuXHRcblx0LyoqXG5c
dCAqIFJldHVybiBpZiBBIGlzIGFuIGFuY2VzdG9yIG9mIEIuXG5cdCAqL1xuXHRmdW5jdGlvbiBp
c0FuY2VzdG9yKGluc3RBLCBpbnN0Qikge1xuXHQgICEoJ19ob3N0Tm9kZScgaW4gaW5zdEEpID8g
IGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnaXNBbmNlc3RvcjogSW52YWxpZCBhcmd1bWVudC4n
KSA6IF9wcm9kSW52YXJpYW50KCczNScpIDogdm9pZCAwO1xuXHQgICEoJ19ob3N0Tm9kZScgaW4g
aW5zdEIpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnaXNBbmNlc3RvcjogSW52YWxpZCBh
cmd1bWVudC4nKSA6IF9wcm9kSW52YXJpYW50KCczNScpIDogdm9pZCAwO1xuXHRcblx0ICB3aGls
ZSAoaW5zdEIpIHtcblx0ICAgIGlmIChpbnN0QiA9PT0gaW5zdEEpIHtcblx0ICAgICAgcmV0dXJu
IHRydWU7XG5cdCAgICB9XG5cdCAgICBpbnN0QiA9IGluc3RCLl9ob3N0UGFyZW50O1xuXHQgIH1c
blx0ICByZXR1cm4gZmFsc2U7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBSZXR1cm4gdGhlIHBhcmVu
dCBpbnN0YW5jZSBvZiB0aGUgcGFzc2VkLWluIGluc3RhbmNlLlxuXHQgKi9cblx0ZnVuY3Rpb24g
Z2V0UGFyZW50SW5zdGFuY2UoaW5zdCkge1xuXHQgICEoJ19ob3N0Tm9kZScgaW4gaW5zdCkgPyAg
ZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdnZXRQYXJlbnRJbnN0YW5jZTogSW52YWxpZCBhcmd1
bWVudC4nKSA6IF9wcm9kSW52YXJpYW50KCczNicpIDogdm9pZCAwO1xuXHRcblx0ICByZXR1cm4g
aW5zdC5faG9zdFBhcmVudDtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFNpbXVsYXRlcyB0aGUgdHJh
dmVyc2FsIG9mIGEgdHdvLXBoYXNlLCBjYXB0dXJlL2J1YmJsZSBldmVudCBkaXNwYXRjaC5cblx0
ICovXG5cdGZ1bmN0aW9uIHRyYXZlcnNlVHdvUGhhc2UoaW5zdCwgZm4sIGFyZykge1xuXHQgIHZh
ciBwYXRoID0gW107XG5cdCAgd2hpbGUgKGluc3QpIHtcblx0ICAgIHBhdGgucHVzaChpbnN0KTtc
blx0ICAgIGluc3QgPSBpbnN0Ll9ob3N0UGFyZW50O1xuXHQgIH1cblx0ICB2YXIgaTtcblx0ICBm
b3IgKGkgPSBwYXRoLmxlbmd0aDsgaS0tID4gMDspIHtcblx0ICAgIGZuKHBhdGhbaV0sICdjYXB0
dXJlZCcsIGFyZyk7XG5cdCAgfVxuXHQgIGZvciAoaSA9IDA7IGkgPCBwYXRoLmxlbmd0aDsgaSsr
KSB7XG5cdCAgICBmbihwYXRoW2ldLCAnYnViYmxlZCcsIGFyZyk7XG5cdCAgfVxuXHR9XG5cdFxu
XHQvKipcblx0ICogVHJhdmVyc2VzIHRoZSBJRCBoaWVyYXJjaHkgYW5kIGludm9rZXMgdGhlIHN1
cHBsaWVkIGBjYmAgb24gYW55IElEcyB0aGF0XG5cdCAqIHNob3VsZCB3b3VsZCByZWNlaXZlIGEg
YG1vdXNlRW50ZXJgIG9yIGBtb3VzZUxlYXZlYCBldmVudC5cblx0ICpcblx0ICogRG9lcyBub3Qg
aW52b2tlIHRoZSBjYWxsYmFjayBvbiB0aGUgbmVhcmVzdCBjb21tb24gYW5jZXN0b3IgYmVjYXVz
ZSBub3RoaW5nXG5cdCAqIFwiZW50ZXJlZFwiIG9yIFwibGVmdFwiIHRoYXQgZWxlbWVudC5cblx0
ICovXG5cdGZ1bmN0aW9uIHRyYXZlcnNlRW50ZXJMZWF2ZShmcm9tLCB0bywgZm4sIGFyZ0Zyb20s
IGFyZ1RvKSB7XG5cdCAgdmFyIGNvbW1vbiA9IGZyb20gJiYgdG8gPyBnZXRMb3dlc3RDb21tb25B
bmNlc3Rvcihmcm9tLCB0bykgOiBudWxsO1xuXHQgIHZhciBwYXRoRnJvbSA9IFtdO1xuXHQgIHdo
aWxlIChmcm9tICYmIGZyb20gIT09IGNvbW1vbikge1xuXHQgICAgcGF0aEZyb20ucHVzaChmcm9t
KTtcblx0ICAgIGZyb20gPSBmcm9tLl9ob3N0UGFyZW50O1xuXHQgIH1cblx0ICB2YXIgcGF0aFRv
ID0gW107XG5cdCAgd2hpbGUgKHRvICYmIHRvICE9PSBjb21tb24pIHtcblx0ICAgIHBhdGhUby5w
dXNoKHRvKTtcblx0ICAgIHRvID0gdG8uX2hvc3RQYXJlbnQ7XG5cdCAgfVxuXHQgIHZhciBpO1xu
XHQgIGZvciAoaSA9IDA7IGkgPCBwYXRoRnJvbS5sZW5ndGg7IGkrKykge1xuXHQgICAgZm4ocGF0
aEZyb21baV0sICdidWJibGVkJywgYXJnRnJvbSk7XG5cdCAgfVxuXHQgIGZvciAoaSA9IHBhdGhU
by5sZW5ndGg7IGktLSA+IDA7KSB7XG5cdCAgICBmbihwYXRoVG9baV0sICdjYXB0dXJlZCcsIGFy
Z1RvKTtcblx0ICB9XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0ge1xuXHQgIGlzQW5jZXN0
b3I6IGlzQW5jZXN0b3IsXG5cdCAgZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3I6IGdldExvd2VzdENv
bW1vbkFuY2VzdG9yLFxuXHQgIGdldFBhcmVudEluc3RhbmNlOiBnZXRQYXJlbnRJbnN0YW5jZSxc
blx0ICB0cmF2ZXJzZVR3b1BoYXNlOiB0cmF2ZXJzZVR3b1BoYXNlLFxuXHQgIHRyYXZlcnNlRW50
ZXJMZWF2ZTogdHJhdmVyc2VFbnRlckxlYXZlXG5cdH07XG5cbi8qKiovIH0sXG4vKiAxNDkgKi9c
bi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xu
XG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5c
dCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0
KTtcblx0XG5cdHZhciBSZWFjdFVwZGF0ZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuXHR2
YXIgVHJhbnNhY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI3KTtcblx0XG5cdHZhciBlbXB0
eUZ1bmN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcblx0XG5cdHZhciBSRVNFVF9CQVRD
SEVEX1VQREFURVMgPSB7XG5cdCAgaW5pdGlhbGl6ZTogZW1wdHlGdW5jdGlvbixcblx0ICBjbG9z
ZTogZnVuY3Rpb24gKCkge1xuXHQgICAgUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneS5pc0Jh
dGNoaW5nVXBkYXRlcyA9IGZhbHNlO1xuXHQgIH1cblx0fTtcblx0XG5cdHZhciBGTFVTSF9CQVRD
SEVEX1VQREFURVMgPSB7XG5cdCAgaW5pdGlhbGl6ZTogZW1wdHlGdW5jdGlvbixcblx0ICBjbG9z
ZTogUmVhY3RVcGRhdGVzLmZsdXNoQmF0Y2hlZFVwZGF0ZXMuYmluZChSZWFjdFVwZGF0ZXMpXG5c
dH07XG5cdFxuXHR2YXIgVFJBTlNBQ1RJT05fV1JBUFBFUlMgPSBbRkxVU0hfQkFUQ0hFRF9VUERB
VEVTLCBSRVNFVF9CQVRDSEVEX1VQREFURVNdO1xuXHRcblx0ZnVuY3Rpb24gUmVhY3REZWZhdWx0
QmF0Y2hpbmdTdHJhdGVneVRyYW5zYWN0aW9uKCkge1xuXHQgIHRoaXMucmVpbml0aWFsaXplVHJh
bnNhY3Rpb24oKTtcblx0fVxuXHRcblx0X2Fzc2lnbihSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0
ZWd5VHJhbnNhY3Rpb24ucHJvdG90eXBlLCBUcmFuc2FjdGlvbiwge1xuXHQgIGdldFRyYW5zYWN0
aW9uV3JhcHBlcnM6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHJldHVybiBUUkFOU0FDVElPTl9XUkFQ
UEVSUztcblx0ICB9XG5cdH0pO1xuXHRcblx0dmFyIHRyYW5zYWN0aW9uID0gbmV3IFJlYWN0RGVm
YXVsdEJhdGNoaW5nU3RyYXRlZ3lUcmFuc2FjdGlvbigpO1xuXHRcblx0dmFyIFJlYWN0RGVmYXVs
dEJhdGNoaW5nU3RyYXRlZ3kgPSB7XG5cdCAgaXNCYXRjaGluZ1VwZGF0ZXM6IGZhbHNlLFxuXHRc
blx0ICAvKipcblx0ICAgKiBDYWxsIHRoZSBwcm92aWRlZCBmdW5jdGlvbiBpbiBhIGNvbnRleHQg
d2l0aGluIHdoaWNoIGNhbGxzIHRvIGBzZXRTdGF0ZWBcblx0ICAgKiBhbmQgZnJpZW5kcyBhcmUg
YmF0Y2hlZCBzdWNoIHRoYXQgY29tcG9uZW50cyBhcmVuJ3QgdXBkYXRlZCB1bm5lY2Vzc2FyaWx5
LlxuXHQgICAqL1xuXHQgIGJhdGNoZWRVcGRhdGVzOiBmdW5jdGlvbiAoY2FsbGJhY2ssIGEsIGIs
IGMsIGQsIGUpIHtcblx0ICAgIHZhciBhbHJlYWR5QmF0Y2hpbmdVcGRhdGVzID0gUmVhY3REZWZh
dWx0QmF0Y2hpbmdTdHJhdGVneS5pc0JhdGNoaW5nVXBkYXRlcztcblx0XG5cdCAgICBSZWFjdERl
ZmF1bHRCYXRjaGluZ1N0cmF0ZWd5LmlzQmF0Y2hpbmdVcGRhdGVzID0gdHJ1ZTtcblx0XG5cdCAg
ICAvLyBUaGUgY29kZSBpcyB3cml0dGVuIHRoaXMgd2F5IHRvIGF2b2lkIGV4dHJhIGFsbG9jYXRp
b25zXG5cdCAgICBpZiAoYWxyZWFkeUJhdGNoaW5nVXBkYXRlcykge1xuXHQgICAgICByZXR1cm4g
Y2FsbGJhY2soYSwgYiwgYywgZCwgZSk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICByZXR1cm4g
dHJhbnNhY3Rpb24ucGVyZm9ybShjYWxsYmFjaywgbnVsbCwgYSwgYiwgYywgZCwgZSk7XG5cdCAg
ICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdERlZmF1bHRCYXRj
aGluZ1N0cmF0ZWd5O1xuXG4vKioqLyB9LFxuLyogMTUwICovXG4vKioqLyBmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxu
XHR2YXIgQVJJQURPTVByb3BlcnR5Q29uZmlnID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMjQpO1xu
XHR2YXIgQmVmb3JlSW5wdXRFdmVudFBsdWdpbiA9IF9fd2VicGFja19yZXF1aXJlX18oMTI2KTtc
blx0dmFyIENoYW5nZUV2ZW50UGx1Z2luID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMjgpO1xuXHR2
YXIgRGVmYXVsdEV2ZW50UGx1Z2luT3JkZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzMCk7XG5c
dHZhciBFbnRlckxlYXZlRXZlbnRQbHVnaW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzMSk7XG5c
dHZhciBIVE1MRE9NUHJvcGVydHlDb25maWcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzMyk7XG5c
dHZhciBSZWFjdENvbXBvbmVudEJyb3dzZXJFbnZpcm9ubWVudCA9IF9fd2VicGFja19yZXF1aXJl
X18oMTM1KTtcblx0dmFyIFJlYWN0RE9NQ29tcG9uZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygx
MzgpO1xuXHR2YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1
KTtcblx0dmFyIFJlYWN0RE9NRW1wdHlDb21wb25lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0
MCk7XG5cdHZhciBSZWFjdERPTVRyZWVUcmF2ZXJzYWwgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0
OCk7XG5cdHZhciBSZWFjdERPTVRleHRDb21wb25lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE0
Nik7XG5cdHZhciBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5ID0gX193ZWJwYWNrX3JlcXVp
cmVfXygxNDkpO1xuXHR2YXIgUmVhY3RFdmVudExpc3RlbmVyID0gX193ZWJwYWNrX3JlcXVpcmVf
XygxNTMpO1xuXHR2YXIgUmVhY3RJbmplY3Rpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1NCk7
XG5cdHZhciBSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygx
NTkpO1xuXHR2YXIgU1ZHRE9NUHJvcGVydHlDb25maWcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2
NCk7XG5cdHZhciBTZWxlY3RFdmVudFBsdWdpbiA9IF9fd2VicGFja19yZXF1aXJlX18oMTY1KTtc
blx0dmFyIFNpbXBsZUV2ZW50UGx1Z2luID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNjYpO1xuXHRc
blx0dmFyIGFscmVhZHlJbmplY3RlZCA9IGZhbHNlO1xuXHRcblx0ZnVuY3Rpb24gaW5qZWN0KCkg
e1xuXHQgIGlmIChhbHJlYWR5SW5qZWN0ZWQpIHtcblx0ICAgIC8vIFRPRE86IFRoaXMgaXMgY3Vy
cmVudGx5IHRydWUgYmVjYXVzZSB0aGVzZSBpbmplY3Rpb25zIGFyZSBzaGFyZWQgYmV0d2Vlblxu
XHQgICAgLy8gdGhlIGNsaWVudCBhbmQgdGhlIHNlcnZlciBwYWNrYWdlLiBUaGV5IHNob3VsZCBi
ZSBidWlsdCBpbmRlcGVuZGVudGx5XG5cdCAgICAvLyBhbmQgbm90IHNoYXJlIGFueSBpbmplY3Rp
b24gc3RhdGUuIFRoZW4gdGhpcyBwcm9ibGVtIHdpbGwgYmUgc29sdmVkLlxuXHQgICAgcmV0dXJu
O1xuXHQgIH1cblx0ICBhbHJlYWR5SW5qZWN0ZWQgPSB0cnVlO1xuXHRcblx0ICBSZWFjdEluamVj
dGlvbi5FdmVudEVtaXR0ZXIuaW5qZWN0UmVhY3RFdmVudExpc3RlbmVyKFJlYWN0RXZlbnRMaXN0
ZW5lcik7XG5cdFxuXHQgIC8qKlxuXHQgICAqIEluamVjdCBtb2R1bGVzIGZvciByZXNvbHZpbmcg
RE9NIGhpZXJhcmNoeSBhbmQgcGx1Z2luIG9yZGVyaW5nLlxuXHQgICAqL1xuXHQgIFJlYWN0SW5q
ZWN0aW9uLkV2ZW50UGx1Z2luSHViLmluamVjdEV2ZW50UGx1Z2luT3JkZXIoRGVmYXVsdEV2ZW50
UGx1Z2luT3JkZXIpO1xuXHQgIFJlYWN0SW5qZWN0aW9uLkV2ZW50UGx1Z2luVXRpbHMuaW5qZWN0
Q29tcG9uZW50VHJlZShSZWFjdERPTUNvbXBvbmVudFRyZWUpO1xuXHQgIFJlYWN0SW5qZWN0aW9u
LkV2ZW50UGx1Z2luVXRpbHMuaW5qZWN0VHJlZVRyYXZlcnNhbChSZWFjdERPTVRyZWVUcmF2ZXJz
YWwpO1xuXHRcblx0ICAvKipcblx0ICAgKiBTb21lIGltcG9ydGFudCBldmVudCBwbHVnaW5zIGlu
Y2x1ZGVkIGJ5IGRlZmF1bHQgKHdpdGhvdXQgaGF2aW5nIHRvIHJlcXVpcmVcblx0ICAgKiB0aGVt
KS5cblx0ICAgKi9cblx0ICBSZWFjdEluamVjdGlvbi5FdmVudFBsdWdpbkh1Yi5pbmplY3RFdmVu
dFBsdWdpbnNCeU5hbWUoe1xuXHQgICAgU2ltcGxlRXZlbnRQbHVnaW46IFNpbXBsZUV2ZW50UGx1
Z2luLFxuXHQgICAgRW50ZXJMZWF2ZUV2ZW50UGx1Z2luOiBFbnRlckxlYXZlRXZlbnRQbHVnaW4s
XG5cdCAgICBDaGFuZ2VFdmVudFBsdWdpbjogQ2hhbmdlRXZlbnRQbHVnaW4sXG5cdCAgICBTZWxl
Y3RFdmVudFBsdWdpbjogU2VsZWN0RXZlbnRQbHVnaW4sXG5cdCAgICBCZWZvcmVJbnB1dEV2ZW50
UGx1Z2luOiBCZWZvcmVJbnB1dEV2ZW50UGx1Z2luXG5cdCAgfSk7XG5cdFxuXHQgIFJlYWN0SW5q
ZWN0aW9uLkhvc3RDb21wb25lbnQuaW5qZWN0R2VuZXJpY0NvbXBvbmVudENsYXNzKFJlYWN0RE9N
Q29tcG9uZW50KTtcblx0XG5cdCAgUmVhY3RJbmplY3Rpb24uSG9zdENvbXBvbmVudC5pbmplY3RU
ZXh0Q29tcG9uZW50Q2xhc3MoUmVhY3RET01UZXh0Q29tcG9uZW50KTtcblx0XG5cdCAgUmVhY3RJ
bmplY3Rpb24uRE9NUHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcoQVJJQURPTVByb3Bl
cnR5Q29uZmlnKTtcblx0ICBSZWFjdEluamVjdGlvbi5ET01Qcm9wZXJ0eS5pbmplY3RET01Qcm9w
ZXJ0eUNvbmZpZyhIVE1MRE9NUHJvcGVydHlDb25maWcpO1xuXHQgIFJlYWN0SW5qZWN0aW9uLkRP
TVByb3BlcnR5LmluamVjdERPTVByb3BlcnR5Q29uZmlnKFNWR0RPTVByb3BlcnR5Q29uZmlnKTtc
blx0XG5cdCAgUmVhY3RJbmplY3Rpb24uRW1wdHlDb21wb25lbnQuaW5qZWN0RW1wdHlDb21wb25l
bnRGYWN0b3J5KGZ1bmN0aW9uIChpbnN0YW50aWF0ZSkge1xuXHQgICAgcmV0dXJuIG5ldyBSZWFj
dERPTUVtcHR5Q29tcG9uZW50KGluc3RhbnRpYXRlKTtcblx0ICB9KTtcblx0XG5cdCAgUmVhY3RJ
bmplY3Rpb24uVXBkYXRlcy5pbmplY3RSZWNvbmNpbGVUcmFuc2FjdGlvbihSZWFjdFJlY29uY2ls
ZVRyYW5zYWN0aW9uKTtcblx0ICBSZWFjdEluamVjdGlvbi5VcGRhdGVzLmluamVjdEJhdGNoaW5n
U3RyYXRlZ3koUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneSk7XG5cdFxuXHQgIFJlYWN0SW5q
ZWN0aW9uLkNvbXBvbmVudC5pbmplY3RFbnZpcm9ubWVudChSZWFjdENvbXBvbmVudEJyb3dzZXJF
bnZpcm9ubWVudCk7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0ge1xuXHQgIGluamVjdDog
aW5qZWN0XG5cdH07XG5cbi8qKiovIH0sXG4vKiAxNTEgKi9cbjkxLFxuLyogMTUyICovXG4vKioq
LyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQv
Kipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNl
IHN0cmljdCc7XG5cdFxuXHR2YXIgRXZlbnRQbHVnaW5IdWIgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDE5KTtcblx0XG5cdGZ1bmN0aW9uIHJ1bkV2ZW50UXVldWVJbkJhdGNoKGV2ZW50cykge1xuXHQg
IEV2ZW50UGx1Z2luSHViLmVucXVldWVFdmVudHMoZXZlbnRzKTtcblx0ICBFdmVudFBsdWdpbkh1
Yi5wcm9jZXNzRXZlbnRRdWV1ZShmYWxzZSk7XG5cdH1cblx0XG5cdHZhciBSZWFjdEV2ZW50RW1p
dHRlck1peGluID0ge1xuXHQgIC8qKlxuXHQgICAqIFN0cmVhbXMgYSBmaXJlZCB0b3AtbGV2ZWwg
ZXZlbnQgdG8gYEV2ZW50UGx1Z2luSHViYCB3aGVyZSBwbHVnaW5zIGhhdmUgdGhlXG5cdCAgICog
b3Bwb3J0dW5pdHkgdG8gY3JlYXRlIGBSZWFjdEV2ZW50YHMgdG8gYmUgZGlzcGF0Y2hlZC5cblx0
ICAgKi9cblx0ICBoYW5kbGVUb3BMZXZlbDogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdGFyZ2V0
SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG5cdCAgICB2YXIgZXZlbnRz
ID0gRXZlbnRQbHVnaW5IdWIuZXh0cmFjdEV2ZW50cyh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3Qs
IG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cdCAgICBydW5FdmVudFF1ZXVlSW5C
YXRjaChldmVudHMpO1xuXHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RF
dmVudEVtaXR0ZXJNaXhpbjtcblxuLyoqKi8gfSxcbi8qIDE1MyAqL1xuLyoqKi8gZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
blx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xu
XHRcblx0dmFyIF9hc3NpZ24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQpO1xuXHRcblx0dmFyIEV2
ZW50TGlzdGVuZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUxKTtcblx0dmFyIEV4ZWN1dGlvbkVu
dmlyb25tZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTtcblx0dmFyIFBvb2xlZENsYXNzID0g
X193ZWJwYWNrX3JlcXVpcmVfXygxMyk7XG5cdHZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuXHR2YXIgUmVhY3RVcGRhdGVzID0gX193ZWJwYWNrX3Jl
cXVpcmVfXyg5KTtcblx0XG5cdHZhciBnZXRFdmVudFRhcmdldCA9IF9fd2VicGFja19yZXF1aXJl
X18oNDYpO1xuXHR2YXIgZ2V0VW5ib3VuZGVkU2Nyb2xsUG9zaXRpb24gPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDEwNCk7XG5cdFxuXHQvKipcblx0ICogRmluZCB0aGUgZGVlcGVzdCBSZWFjdCBjb21w
b25lbnQgY29tcGxldGVseSBjb250YWluaW5nIHRoZSByb290IG9mIHRoZVxuXHQgKiBwYXNzZWQt
aW4gaW5zdGFuY2UgKGZvciB1c2Ugd2hlbiBlbnRpcmUgUmVhY3QgdHJlZXMgYXJlIG5lc3RlZCB3
aXRoaW4gZWFjaFxuXHQgKiBvdGhlcikuIElmIFJlYWN0IHRyZWVzIGFyZSBub3QgbmVzdGVkLCBy
ZXR1cm5zIG51bGwuXG5cdCAqL1xuXHRmdW5jdGlvbiBmaW5kUGFyZW50KGluc3QpIHtcblx0ICAv
LyBUT0RPOiBJdCBtYXkgYmUgYSBnb29kIGlkZWEgdG8gY2FjaGUgdGhpcyB0byBwcmV2ZW50IHVu
bmVjZXNzYXJ5IERPTVxuXHQgIC8vIHRyYXZlcnNhbCwgYnV0IGNhY2hpbmcgaXMgZGlmZmljdWx0
IHRvIGRvIGNvcnJlY3RseSB3aXRob3V0IHVzaW5nIGFcblx0ICAvLyBtdXRhdGlvbiBvYnNlcnZl
ciB0byBsaXN0ZW4gZm9yIGFsbCBET00gY2hhbmdlcy5cblx0ICB3aGlsZSAoaW5zdC5faG9zdFBh
cmVudCkge1xuXHQgICAgaW5zdCA9IGluc3QuX2hvc3RQYXJlbnQ7XG5cdCAgfVxuXHQgIHZhciBy
b290Tm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3Qp
O1xuXHQgIHZhciBjb250YWluZXIgPSByb290Tm9kZS5wYXJlbnROb2RlO1xuXHQgIHJldHVybiBS
ZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUoY29udGFpbmVy
KTtcblx0fVxuXHRcblx0Ly8gVXNlZCB0byBzdG9yZSBhbmNlc3RvciBoaWVyYXJjaHkgaW4gdG9w
IGxldmVsIGNhbGxiYWNrXG5cdGZ1bmN0aW9uIFRvcExldmVsQ2FsbGJhY2tCb29rS2VlcGluZyh0
b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSB7XG5cdCAgdGhpcy50b3BMZXZlbFR5cGUgPSB0b3BM
ZXZlbFR5cGU7XG5cdCAgdGhpcy5uYXRpdmVFdmVudCA9IG5hdGl2ZUV2ZW50O1xuXHQgIHRoaXMu
YW5jZXN0b3JzID0gW107XG5cdH1cblx0X2Fzc2lnbihUb3BMZXZlbENhbGxiYWNrQm9va0tlZXBp
bmcucHJvdG90eXBlLCB7XG5cdCAgZGVzdHJ1Y3RvcjogZnVuY3Rpb24gKCkge1xuXHQgICAgdGhp
cy50b3BMZXZlbFR5cGUgPSBudWxsO1xuXHQgICAgdGhpcy5uYXRpdmVFdmVudCA9IG51bGw7XG5c
dCAgICB0aGlzLmFuY2VzdG9ycy5sZW5ndGggPSAwO1xuXHQgIH1cblx0fSk7XG5cdFBvb2xlZENs
YXNzLmFkZFBvb2xpbmdUbyhUb3BMZXZlbENhbGxiYWNrQm9va0tlZXBpbmcsIFBvb2xlZENsYXNz
LnR3b0FyZ3VtZW50UG9vbGVyKTtcblx0XG5cdGZ1bmN0aW9uIGhhbmRsZVRvcExldmVsSW1wbChi
b29rS2VlcGluZykge1xuXHQgIHZhciBuYXRpdmVFdmVudFRhcmdldCA9IGdldEV2ZW50VGFyZ2V0
KGJvb2tLZWVwaW5nLm5hdGl2ZUV2ZW50KTtcblx0ICB2YXIgdGFyZ2V0SW5zdCA9IFJlYWN0RE9N
Q29tcG9uZW50VHJlZS5nZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZShuYXRpdmVFdmVudFRhcmdl
dCk7XG5cdFxuXHQgIC8vIExvb3AgdGhyb3VnaCB0aGUgaGllcmFyY2h5LCBpbiBjYXNlIHRoZXJl
J3MgYW55IG5lc3RlZCBjb21wb25lbnRzLlxuXHQgIC8vIEl0J3MgaW1wb3J0YW50IHRoYXQgd2Ug
YnVpbGQgdGhlIGFycmF5IG9mIGFuY2VzdG9ycyBiZWZvcmUgY2FsbGluZyBhbnlcblx0ICAvLyBl
dmVudCBoYW5kbGVycywgYmVjYXVzZSBldmVudCBoYW5kbGVycyBjYW4gbW9kaWZ5IHRoZSBET00s
IGxlYWRpbmcgdG9cblx0ICAvLyBpbmNvbnNpc3RlbmNpZXMgd2l0aCBSZWFjdE1vdW50J3Mgbm9k
ZSBjYWNoZS4gU2VlICMxMTA1LlxuXHQgIHZhciBhbmNlc3RvciA9IHRhcmdldEluc3Q7XG5cdCAg
ZG8ge1xuXHQgICAgYm9va0tlZXBpbmcuYW5jZXN0b3JzLnB1c2goYW5jZXN0b3IpO1xuXHQgICAg
YW5jZXN0b3IgPSBhbmNlc3RvciAmJiBmaW5kUGFyZW50KGFuY2VzdG9yKTtcblx0ICB9IHdoaWxl
IChhbmNlc3Rvcik7XG5cdFxuXHQgIGZvciAodmFyIGkgPSAwOyBpIDwgYm9va0tlZXBpbmcuYW5j
ZXN0b3JzLmxlbmd0aDsgaSsrKSB7XG5cdCAgICB0YXJnZXRJbnN0ID0gYm9va0tlZXBpbmcuYW5j
ZXN0b3JzW2ldO1xuXHQgICAgUmVhY3RFdmVudExpc3RlbmVyLl9oYW5kbGVUb3BMZXZlbChib29r
S2VlcGluZy50b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIGJvb2tLZWVwaW5nLm5hdGl2ZUV2ZW50
LCBnZXRFdmVudFRhcmdldChib29rS2VlcGluZy5uYXRpdmVFdmVudCkpO1xuXHQgIH1cblx0fVxu
XHRcblx0ZnVuY3Rpb24gc2Nyb2xsVmFsdWVNb25pdG9yKGNiKSB7XG5cdCAgdmFyIHNjcm9sbFBv
c2l0aW9uID0gZ2V0VW5ib3VuZGVkU2Nyb2xsUG9zaXRpb24od2luZG93KTtcblx0ICBjYihzY3Jv
bGxQb3NpdGlvbik7XG5cdH1cblx0XG5cdHZhciBSZWFjdEV2ZW50TGlzdGVuZXIgPSB7XG5cdCAg
X2VuYWJsZWQ6IHRydWUsXG5cdCAgX2hhbmRsZVRvcExldmVsOiBudWxsLFxuXHRcblx0ICBXSU5E
T1dfSEFORExFOiBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gPyB3aW5kb3cgOiBudWxs
LFxuXHRcblx0ICBzZXRIYW5kbGVUb3BMZXZlbDogZnVuY3Rpb24gKGhhbmRsZVRvcExldmVsKSB7
XG5cdCAgICBSZWFjdEV2ZW50TGlzdGVuZXIuX2hhbmRsZVRvcExldmVsID0gaGFuZGxlVG9wTGV2
ZWw7XG5cdCAgfSxcblx0XG5cdCAgc2V0RW5hYmxlZDogZnVuY3Rpb24gKGVuYWJsZWQpIHtcblx0
ICAgIFJlYWN0RXZlbnRMaXN0ZW5lci5fZW5hYmxlZCA9ICEhZW5hYmxlZDtcblx0ICB9LFxuXHRc
blx0ICBpc0VuYWJsZWQ6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHJldHVybiBSZWFjdEV2ZW50TGlz
dGVuZXIuX2VuYWJsZWQ7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogVHJhcHMgdG9wLWxl
dmVsIGV2ZW50cyBieSB1c2luZyBldmVudCBidWJibGluZy5cblx0ICAgKlxuXHQgICAqIEBwYXJh
bSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUgUmVjb3JkIGZyb20gYEV2ZW50Q29uc3RhbnRzYC5cblx0
ICAgKiBAcGFyYW0ge3N0cmluZ30gaGFuZGxlckJhc2VOYW1lIEV2ZW50IG5hbWUgKGUuZy4gXCJj
bGlja1wiKS5cblx0ICAgKiBAcGFyYW0ge29iamVjdH0gZWxlbWVudCBFbGVtZW50IG9uIHdoaWNo
IHRvIGF0dGFjaCBsaXN0ZW5lci5cblx0ICAgKiBAcmV0dXJuIHs/b2JqZWN0fSBBbiBvYmplY3Qg
d2l0aCBhIHJlbW92ZSBmdW5jdGlvbiB3aGljaCB3aWxsIGZvcmNlZnVsbHlcblx0ICAgKiAgICAg
ICAgICAgICAgICAgIHJlbW92ZSB0aGUgbGlzdGVuZXIuXG5cdCAgICogQGludGVybmFsXG5cdCAg
ICovXG5cdCAgdHJhcEJ1YmJsZWRFdmVudDogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgaGFuZGxl
ckJhc2VOYW1lLCBlbGVtZW50KSB7XG5cdCAgICBpZiAoIWVsZW1lbnQpIHtcblx0ICAgICAgcmV0
dXJuIG51bGw7XG5cdCAgICB9XG5cdCAgICByZXR1cm4gRXZlbnRMaXN0ZW5lci5saXN0ZW4oZWxl
bWVudCwgaGFuZGxlckJhc2VOYW1lLCBSZWFjdEV2ZW50TGlzdGVuZXIuZGlzcGF0Y2hFdmVudC5i
aW5kKG51bGwsIHRvcExldmVsVHlwZSkpO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFRy
YXBzIGEgdG9wLWxldmVsIGV2ZW50IGJ5IHVzaW5nIGV2ZW50IGNhcHR1cmluZy5cblx0ICAgKlxu
XHQgICAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUgUmVjb3JkIGZyb20gYEV2ZW50Q29u
c3RhbnRzYC5cblx0ICAgKiBAcGFyYW0ge3N0cmluZ30gaGFuZGxlckJhc2VOYW1lIEV2ZW50IG5h
bWUgKGUuZy4gXCJjbGlja1wiKS5cblx0ICAgKiBAcGFyYW0ge29iamVjdH0gZWxlbWVudCBFbGVt
ZW50IG9uIHdoaWNoIHRvIGF0dGFjaCBsaXN0ZW5lci5cblx0ICAgKiBAcmV0dXJuIHs/b2JqZWN0
fSBBbiBvYmplY3Qgd2l0aCBhIHJlbW92ZSBmdW5jdGlvbiB3aGljaCB3aWxsIGZvcmNlZnVsbHlc
blx0ICAgKiAgICAgICAgICAgICAgICAgIHJlbW92ZSB0aGUgbGlzdGVuZXIuXG5cdCAgICogQGlu
dGVybmFsXG5cdCAgICovXG5cdCAgdHJhcENhcHR1cmVkRXZlbnQ6IGZ1bmN0aW9uICh0b3BMZXZl
bFR5cGUsIGhhbmRsZXJCYXNlTmFtZSwgZWxlbWVudCkge1xuXHQgICAgaWYgKCFlbGVtZW50KSB7
XG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIEV2ZW50TGlzdGVu
ZXIuY2FwdHVyZShlbGVtZW50LCBoYW5kbGVyQmFzZU5hbWUsIFJlYWN0RXZlbnRMaXN0ZW5lci5k
aXNwYXRjaEV2ZW50LmJpbmQobnVsbCwgdG9wTGV2ZWxUeXBlKSk7XG5cdCAgfSxcblx0XG5cdCAg
bW9uaXRvclNjcm9sbFZhbHVlOiBmdW5jdGlvbiAocmVmcmVzaCkge1xuXHQgICAgdmFyIGNhbGxi
YWNrID0gc2Nyb2xsVmFsdWVNb25pdG9yLmJpbmQobnVsbCwgcmVmcmVzaCk7XG5cdCAgICBFdmVu
dExpc3RlbmVyLmxpc3Rlbih3aW5kb3csICdzY3JvbGwnLCBjYWxsYmFjayk7XG5cdCAgfSxcblx0
XG5cdCAgZGlzcGF0Y2hFdmVudDogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQp
IHtcblx0ICAgIGlmICghUmVhY3RFdmVudExpc3RlbmVyLl9lbmFibGVkKSB7XG5cdCAgICAgIHJl
dHVybjtcblx0ICAgIH1cblx0XG5cdCAgICB2YXIgYm9va0tlZXBpbmcgPSBUb3BMZXZlbENhbGxi
YWNrQm9va0tlZXBpbmcuZ2V0UG9vbGVkKHRvcExldmVsVHlwZSwgbmF0aXZlRXZlbnQpO1xuXHQg
ICAgdHJ5IHtcblx0ICAgICAgLy8gRXZlbnQgcXVldWUgYmVpbmcgcHJvY2Vzc2VkIGluIHRoZSBz
YW1lIGN5Y2xlIGFsbG93c1xuXHQgICAgICAvLyBgcHJldmVudERlZmF1bHRgLlxuXHQgICAgICBS
ZWFjdFVwZGF0ZXMuYmF0Y2hlZFVwZGF0ZXMoaGFuZGxlVG9wTGV2ZWxJbXBsLCBib29rS2VlcGlu
Zyk7XG5cdCAgICB9IGZpbmFsbHkge1xuXHQgICAgICBUb3BMZXZlbENhbGxiYWNrQm9va0tlZXBp
bmcucmVsZWFzZShib29rS2VlcGluZyk7XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9k
dWxlLmV4cG9ydHMgPSBSZWFjdEV2ZW50TGlzdGVuZXI7XG5cbi8qKiovIH0sXG4vKiAxNTQgKi9c
bi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xu
XG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5c
dCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBET01Qcm9wZXJ0eSA9IF9fd2VicGFja19yZXF1aXJl
X18oMTUpO1xuXHR2YXIgRXZlbnRQbHVnaW5IdWIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5KTtc
blx0dmFyIEV2ZW50UGx1Z2luVXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDM3KTtcblx0dmFy
IFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQwKTtcblx0
dmFyIFJlYWN0RW1wdHlDb21wb25lbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDYzKTtcblx0dmFy
IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlciA9IF9fd2VicGFja19yZXF1aXJlX18oMjUpO1xuXHR2
YXIgUmVhY3RIb3N0Q29tcG9uZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2NSk7XG5cdHZhciBS
ZWFjdFVwZGF0ZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDkpO1xuXHRcblx0dmFyIFJlYWN0SW5q
ZWN0aW9uID0ge1xuXHQgIENvbXBvbmVudDogUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudC5pbmpl
Y3Rpb24sXG5cdCAgRE9NUHJvcGVydHk6IERPTVByb3BlcnR5LmluamVjdGlvbixcblx0ICBFbXB0
eUNvbXBvbmVudDogUmVhY3RFbXB0eUNvbXBvbmVudC5pbmplY3Rpb24sXG5cdCAgRXZlbnRQbHVn
aW5IdWI6IEV2ZW50UGx1Z2luSHViLmluamVjdGlvbixcblx0ICBFdmVudFBsdWdpblV0aWxzOiBF
dmVudFBsdWdpblV0aWxzLmluamVjdGlvbixcblx0ICBFdmVudEVtaXR0ZXI6IFJlYWN0QnJvd3Nl
ckV2ZW50RW1pdHRlci5pbmplY3Rpb24sXG5cdCAgSG9zdENvbXBvbmVudDogUmVhY3RIb3N0Q29t
cG9uZW50LmluamVjdGlvbixcblx0ICBVcGRhdGVzOiBSZWFjdFVwZGF0ZXMuaW5qZWN0aW9uXG5c
dH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0SW5qZWN0aW9uO1xuXG4vKioqLyB9LFxu
LyogMTU1ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1
aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
XG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0
ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgYWRsZXIzMiA9IF9fd2VicGFja19y
ZXF1aXJlX18oMTc3KTtcblx0XG5cdHZhciBUQUdfRU5EID0gL1xcLz8+Lztcblx0dmFyIENPTU1F
TlRfU1RBUlQgPSAvXjxcXCFcXC1cXC0vO1xuXHRcblx0dmFyIFJlYWN0TWFya3VwQ2hlY2tzdW0g
PSB7XG5cdCAgQ0hFQ0tTVU1fQVRUUl9OQU1FOiAnZGF0YS1yZWFjdC1jaGVja3N1bScsXG5cdFxu
XHQgIC8qKlxuXHQgICAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgTWFya3VwIHN0cmluZ1xuXHQg
ICAqIEByZXR1cm4ge3N0cmluZ30gTWFya3VwIHN0cmluZyB3aXRoIGNoZWNrc3VtIGF0dHJpYnV0
ZSBhdHRhY2hlZFxuXHQgICAqL1xuXHQgIGFkZENoZWNrc3VtVG9NYXJrdXA6IGZ1bmN0aW9uICht
YXJrdXApIHtcblx0ICAgIHZhciBjaGVja3N1bSA9IGFkbGVyMzIobWFya3VwKTtcblx0XG5cdCAg
ICAvLyBBZGQgY2hlY2tzdW0gKGhhbmRsZSBib3RoIHBhcmVudCB0YWdzLCBjb21tZW50cyBhbmQg
c2VsZi1jbG9zaW5nIHRhZ3MpXG5cdCAgICBpZiAoQ09NTUVOVF9TVEFSVC50ZXN0KG1hcmt1cCkp
IHtcblx0ICAgICAgcmV0dXJuIG1hcmt1cDtcblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHJldHVy
biBtYXJrdXAucmVwbGFjZShUQUdfRU5ELCAnICcgKyBSZWFjdE1hcmt1cENoZWNrc3VtLkNIRUNL
U1VNX0FUVFJfTkFNRSArICc9XCInICsgY2hlY2tzdW0gKyAnXCIkJicpO1xuXHQgICAgfVxuXHQg
IH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgdG8gdXNlXG5c
dCAgICogQHBhcmFtIHtET01FbGVtZW50fSBlbGVtZW50IHJvb3QgUmVhY3QgZWxlbWVudFxuXHQg
ICAqIEByZXR1cm5zIHtib29sZWFufSB3aGV0aGVyIG9yIG5vdCB0aGUgbWFya3VwIGlzIHRoZSBz
YW1lXG5cdCAgICovXG5cdCAgY2FuUmV1c2VNYXJrdXA6IGZ1bmN0aW9uIChtYXJrdXAsIGVsZW1l
bnQpIHtcblx0ICAgIHZhciBleGlzdGluZ0NoZWNrc3VtID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUo
UmVhY3RNYXJrdXBDaGVja3N1bS5DSEVDS1NVTV9BVFRSX05BTUUpO1xuXHQgICAgZXhpc3RpbmdD
aGVja3N1bSA9IGV4aXN0aW5nQ2hlY2tzdW0gJiYgcGFyc2VJbnQoZXhpc3RpbmdDaGVja3N1bSwg
MTApO1xuXHQgICAgdmFyIG1hcmt1cENoZWNrc3VtID0gYWRsZXIzMihtYXJrdXApO1xuXHQgICAg
cmV0dXJuIG1hcmt1cENoZWNrc3VtID09PSBleGlzdGluZ0NoZWNrc3VtO1xuXHQgIH1cblx0fTtc
blx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RNYXJrdXBDaGVja3N1bTtcblxuLyoqKi8gfSxc
bi8qIDE1NiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVx
dWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5c
dCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52YXJpYW50ID0gX193
ZWJwYWNrX3JlcXVpcmVfXygzKTtcblx0XG5cdHZhciBSZWFjdENvbXBvbmVudEVudmlyb25tZW50
ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0MCk7XG5cdHZhciBSZWFjdEluc3RhbmNlTWFwID0gX193
ZWJwYWNrX3JlcXVpcmVfXygyMSk7XG5cdHZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IF9fd2Vi
cGFja19yZXF1aXJlX18oOCk7XG5cdFxuXHR2YXIgUmVhY3RDdXJyZW50T3duZXIgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDExKTtcblx0dmFyIFJlYWN0UmVjb25jaWxlciA9IF9fd2VicGFja19yZXF1
aXJlX18oMTYpO1xuXHR2YXIgUmVhY3RDaGlsZFJlY29uY2lsZXIgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDEzNCk7XG5cdFxuXHR2YXIgZW1wdHlGdW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18o
Nyk7XG5cdHZhciBmbGF0dGVuQ2hpbGRyZW4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4MCk7XG5c
dHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHRcblx0LyoqXG5cdCAq
IE1ha2UgYW4gdXBkYXRlIGZvciBtYXJrdXAgdG8gYmUgcmVuZGVyZWQgYW5kIGluc2VydGVkIGF0
IGEgc3VwcGxpZWQgaW5kZXguXG5cdCAqXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgTWFy
a3VwIHRoYXQgcmVuZGVycyBpbnRvIGFuIGVsZW1lbnQuXG5cdCAqIEBwYXJhbSB7bnVtYmVyfSB0
b0luZGV4IERlc3RpbmF0aW9uIGluZGV4LlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0ZnVuY3Rp
b24gbWFrZUluc2VydE1hcmt1cChtYXJrdXAsIGFmdGVyTm9kZSwgdG9JbmRleCkge1xuXHQgIC8v
IE5PVEU6IE51bGwgdmFsdWVzIHJlZHVjZSBoaWRkZW4gY2xhc3Nlcy5cblx0ICByZXR1cm4ge1xu
XHQgICAgdHlwZTogJ0lOU0VSVF9NQVJLVVAnLFxuXHQgICAgY29udGVudDogbWFya3VwLFxuXHQg
ICAgZnJvbUluZGV4OiBudWxsLFxuXHQgICAgZnJvbU5vZGU6IG51bGwsXG5cdCAgICB0b0luZGV4
OiB0b0luZGV4LFxuXHQgICAgYWZ0ZXJOb2RlOiBhZnRlck5vZGVcblx0ICB9O1xuXHR9XG5cdFxu
XHQvKipcblx0ICogTWFrZSBhbiB1cGRhdGUgZm9yIG1vdmluZyBhbiBleGlzdGluZyBlbGVtZW50
IHRvIGFub3RoZXIgaW5kZXguXG5cdCAqXG5cdCAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXgg
U291cmNlIGluZGV4IG9mIHRoZSBleGlzdGluZyBlbGVtZW50LlxuXHQgKiBAcGFyYW0ge251bWJl
cn0gdG9JbmRleCBEZXN0aW5hdGlvbiBpbmRleCBvZiB0aGUgZWxlbWVudC5cblx0ICogQHByaXZh
dGVcblx0ICovXG5cdGZ1bmN0aW9uIG1ha2VNb3ZlKGNoaWxkLCBhZnRlck5vZGUsIHRvSW5kZXgp
IHtcblx0ICAvLyBOT1RFOiBOdWxsIHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNzZXMuXG5cdCAg
cmV0dXJuIHtcblx0ICAgIHR5cGU6ICdNT1ZFX0VYSVNUSU5HJyxcblx0ICAgIGNvbnRlbnQ6IG51
bGwsXG5cdCAgICBmcm9tSW5kZXg6IGNoaWxkLl9tb3VudEluZGV4LFxuXHQgICAgZnJvbU5vZGU6
IFJlYWN0UmVjb25jaWxlci5nZXRIb3N0Tm9kZShjaGlsZCksXG5cdCAgICB0b0luZGV4OiB0b0lu
ZGV4LFxuXHQgICAgYWZ0ZXJOb2RlOiBhZnRlck5vZGVcblx0ICB9O1xuXHR9XG5cdFxuXHQvKipc
blx0ICogTWFrZSBhbiB1cGRhdGUgZm9yIHJlbW92aW5nIGFuIGVsZW1lbnQgYXQgYW4gaW5kZXgu
XG5cdCAqXG5cdCAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5kZXggSW5kZXggb2YgdGhlIGVsZW1l
bnQgdG8gcmVtb3ZlLlxuXHQgKiBAcHJpdmF0ZVxuXHQgKi9cblx0ZnVuY3Rpb24gbWFrZVJlbW92
ZShjaGlsZCwgbm9kZSkge1xuXHQgIC8vIE5PVEU6IE51bGwgdmFsdWVzIHJlZHVjZSBoaWRkZW4g
Y2xhc3Nlcy5cblx0ICByZXR1cm4ge1xuXHQgICAgdHlwZTogJ1JFTU9WRV9OT0RFJyxcblx0ICAg
IGNvbnRlbnQ6IG51bGwsXG5cdCAgICBmcm9tSW5kZXg6IGNoaWxkLl9tb3VudEluZGV4LFxuXHQg
ICAgZnJvbU5vZGU6IG5vZGUsXG5cdCAgICB0b0luZGV4OiBudWxsLFxuXHQgICAgYWZ0ZXJOb2Rl
OiBudWxsXG5cdCAgfTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIE1ha2UgYW4gdXBkYXRlIGZvciBz
ZXR0aW5nIHRoZSBtYXJrdXAgb2YgYSBub2RlLlxuXHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30g
bWFya3VwIE1hcmt1cCB0aGF0IHJlbmRlcnMgaW50byBhbiBlbGVtZW50LlxuXHQgKiBAcHJpdmF0
ZVxuXHQgKi9cblx0ZnVuY3Rpb24gbWFrZVNldE1hcmt1cChtYXJrdXApIHtcblx0ICAvLyBOT1RF
OiBOdWxsIHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNzZXMuXG5cdCAgcmV0dXJuIHtcblx0ICAg
IHR5cGU6ICdTRVRfTUFSS1VQJyxcblx0ICAgIGNvbnRlbnQ6IG1hcmt1cCxcblx0ICAgIGZyb21J
bmRleDogbnVsbCxcblx0ICAgIGZyb21Ob2RlOiBudWxsLFxuXHQgICAgdG9JbmRleDogbnVsbCxc
blx0ICAgIGFmdGVyTm9kZTogbnVsbFxuXHQgIH07XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBNYWtl
IGFuIHVwZGF0ZSBmb3Igc2V0dGluZyB0aGUgdGV4dCBjb250ZW50LlxuXHQgKlxuXHQgKiBAcGFy
YW0ge3N0cmluZ30gdGV4dENvbnRlbnQgVGV4dCBjb250ZW50IHRvIHNldC5cblx0ICogQHByaXZh
dGVcblx0ICovXG5cdGZ1bmN0aW9uIG1ha2VUZXh0Q29udGVudCh0ZXh0Q29udGVudCkge1xuXHQg
IC8vIE5PVEU6IE51bGwgdmFsdWVzIHJlZHVjZSBoaWRkZW4gY2xhc3Nlcy5cblx0ICByZXR1cm4g
e1xuXHQgICAgdHlwZTogJ1RFWFRfQ09OVEVOVCcsXG5cdCAgICBjb250ZW50OiB0ZXh0Q29udGVu
dCxcblx0ICAgIGZyb21JbmRleDogbnVsbCxcblx0ICAgIGZyb21Ob2RlOiBudWxsLFxuXHQgICAg
dG9JbmRleDogbnVsbCxcblx0ICAgIGFmdGVyTm9kZTogbnVsbFxuXHQgIH07XG5cdH1cblx0XG5c
dC8qKlxuXHQgKiBQdXNoIGFuIHVwZGF0ZSwgaWYgYW55LCBvbnRvIHRoZSBxdWV1ZS4gQ3JlYXRl
cyBhIG5ldyBxdWV1ZSBpZiBub25lIGlzXG5cdCAqIHBhc3NlZCBhbmQgYWx3YXlzIHJldHVybnMg
dGhlIHF1ZXVlLiBNdXRhdGl2ZS5cblx0ICovXG5cdGZ1bmN0aW9uIGVucXVldWUocXVldWUsIHVw
ZGF0ZSkge1xuXHQgIGlmICh1cGRhdGUpIHtcblx0ICAgIHF1ZXVlID0gcXVldWUgfHwgW107XG5c
dCAgICBxdWV1ZS5wdXNoKHVwZGF0ZSk7XG5cdCAgfVxuXHQgIHJldHVybiBxdWV1ZTtcblx0fVxu
XHRcblx0LyoqXG5cdCAqIFByb2Nlc3NlcyBhbnkgZW5xdWV1ZWQgdXBkYXRlcy5cblx0ICpcblx0
ICogQHByaXZhdGVcblx0ICovXG5cdGZ1bmN0aW9uIHByb2Nlc3NRdWV1ZShpbnN0LCB1cGRhdGVR
dWV1ZSkge1xuXHQgIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQucHJvY2Vzc0NoaWxkcmVuVXBk
YXRlcyhpbnN0LCB1cGRhdGVRdWV1ZSk7XG5cdH1cblx0XG5cdHZhciBzZXRDaGlsZHJlbkZvcklu
c3RydW1lbnRhdGlvbiA9IGVtcHR5RnVuY3Rpb247XG5cdGlmIChmYWxzZSkge1xuXHQgIHZhciBn
ZXREZWJ1Z0lEID0gZnVuY3Rpb24gKGluc3QpIHtcblx0ICAgIGlmICghaW5zdC5fZGVidWdJRCkg
e1xuXHQgICAgICAvLyBDaGVjayBmb3IgQVJULWxpa2UgaW5zdGFuY2VzLiBUT0RPOiBUaGlzIGlz
IHNpbGx5L2dyb3NzLlxuXHQgICAgICB2YXIgaW50ZXJuYWw7XG5cdCAgICAgIGlmIChpbnRlcm5h
bCA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0KGluc3QpKSB7XG5cdCAgICAgICAgaW5zdCA9IGludGVy
bmFsO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICByZXR1cm4gaW5zdC5fZGVidWdJRDtcblx0
ICB9O1xuXHQgIHNldENoaWxkcmVuRm9ySW5zdHJ1bWVudGF0aW9uID0gZnVuY3Rpb24gKGNoaWxk
cmVuKSB7XG5cdCAgICB2YXIgZGVidWdJRCA9IGdldERlYnVnSUQodGhpcyk7XG5cdCAgICAvLyBU
T0RPOiBSZWFjdCBOYXRpdmUgZW1wdHkgY29tcG9uZW50cyBhcmUgYWxzbyBtdWx0aWNoaWxkLlxu
XHQgICAgLy8gVGhpcyBtZWFucyB0aGV5IHN0aWxsIGdldCBpbnRvIHRoaXMgbWV0aG9kIGJ1dCBk
b24ndCBoYXZlIF9kZWJ1Z0lELlxuXHQgICAgaWYgKGRlYnVnSUQgIT09IDApIHtcblx0ICAgICAg
UmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uU2V0Q2hpbGRyZW4oZGVidWdJRCwgY2hp
bGRyZW4gPyBPYmplY3Qua2V5cyhjaGlsZHJlbikubWFwKGZ1bmN0aW9uIChrZXkpIHtcblx0ICAg
ICAgICByZXR1cm4gY2hpbGRyZW5ba2V5XS5fZGVidWdJRDtcblx0ICAgICAgfSkgOiBbXSk7XG5c
dCAgICB9XG5cdCAgfTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFJlYWN0TXVsdGlDaGlsZCBhcmUg
Y2FwYWJsZSBvZiByZWNvbmNpbGluZyBtdWx0aXBsZSBjaGlsZHJlbi5cblx0ICpcblx0ICogQGNs
YXNzIFJlYWN0TXVsdGlDaGlsZFxuXHQgKiBAaW50ZXJuYWxcblx0ICovXG5cdHZhciBSZWFjdE11
bHRpQ2hpbGQgPSB7XG5cdCAgLyoqXG5cdCAgICogUHJvdmlkZXMgY29tbW9uIGZ1bmN0aW9uYWxp
dHkgZm9yIGNvbXBvbmVudHMgdGhhdCBtdXN0IHJlY29uY2lsZSBtdWx0aXBsZVxuXHQgICAqIGNo
aWxkcmVuLiBUaGlzIGlzIHVzZWQgYnkgYFJlYWN0RE9NQ29tcG9uZW50YCB0byBtb3VudCwgdXBk
YXRlLCBhbmRcblx0ICAgKiB1bm1vdW50IGNoaWxkIGNvbXBvbmVudHMuXG5cdCAgICpcblx0ICAg
KiBAbGVuZHMge1JlYWN0TXVsdGlDaGlsZC5wcm90b3R5cGV9XG5cdCAgICovXG5cdCAgTWl4aW46
IHtcblx0ICAgIF9yZWNvbmNpbGVySW5zdGFudGlhdGVDaGlsZHJlbjogZnVuY3Rpb24gKG5lc3Rl
ZENoaWxkcmVuLCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuXHQgICAgICBpZiAoZmFsc2UpIHtc
blx0ICAgICAgICB2YXIgc2VsZkRlYnVnSUQgPSBnZXREZWJ1Z0lEKHRoaXMpO1xuXHQgICAgICAg
IGlmICh0aGlzLl9jdXJyZW50RWxlbWVudCkge1xuXHQgICAgICAgICAgdHJ5IHtcblx0ICAgICAg
ICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IHRoaXMuX2N1cnJlbnRFbGVtZW50Ll9v
d25lcjtcblx0ICAgICAgICAgICAgcmV0dXJuIFJlYWN0Q2hpbGRSZWNvbmNpbGVyLmluc3RhbnRp
YXRlQ2hpbGRyZW4obmVzdGVkQ2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0LCBzZWxmRGVi
dWdJRCk7XG5cdCAgICAgICAgICB9IGZpbmFsbHkge1xuXHQgICAgICAgICAgICBSZWFjdEN1cnJl
bnRPd25lci5jdXJyZW50ID0gbnVsbDtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAg
ICAgIH1cblx0ICAgICAgcmV0dXJuIFJlYWN0Q2hpbGRSZWNvbmNpbGVyLmluc3RhbnRpYXRlQ2hp
bGRyZW4obmVzdGVkQ2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcblx0ICAgIH0sXG5c
dFxuXHQgICAgX3JlY29uY2lsZXJVcGRhdGVDaGlsZHJlbjogZnVuY3Rpb24gKHByZXZDaGlsZHJl
biwgbmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMsIG1vdW50SW1hZ2VzLCByZW1vdmVkTm9kZXMs
IHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG5cdCAgICAgIHZhciBuZXh0Q2hpbGRyZW47XG5cdCAg
ICAgIHZhciBzZWxmRGVidWdJRCA9IDA7XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAg
IHNlbGZEZWJ1Z0lEID0gZ2V0RGVidWdJRCh0aGlzKTtcblx0ICAgICAgICBpZiAodGhpcy5fY3Vy
cmVudEVsZW1lbnQpIHtcblx0ICAgICAgICAgIHRyeSB7XG5cdCAgICAgICAgICAgIFJlYWN0Q3Vy
cmVudE93bmVyLmN1cnJlbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5fb3duZXI7XG5cdCAgICAg
ICAgICAgIG5leHRDaGlsZHJlbiA9IGZsYXR0ZW5DaGlsZHJlbihuZXh0TmVzdGVkQ2hpbGRyZW5F
bGVtZW50cywgc2VsZkRlYnVnSUQpO1xuXHQgICAgICAgICAgfSBmaW5hbGx5IHtcblx0ICAgICAg
ICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9IG51bGw7XG5cdCAgICAgICAgICB9XG5c
dCAgICAgICAgICBSZWFjdENoaWxkUmVjb25jaWxlci51cGRhdGVDaGlsZHJlbihwcmV2Q2hpbGRy
ZW4sIG5leHRDaGlsZHJlbiwgbW91bnRJbWFnZXMsIHJlbW92ZWROb2RlcywgdHJhbnNhY3Rpb24s
IHRoaXMsIHRoaXMuX2hvc3RDb250YWluZXJJbmZvLCBjb250ZXh0LCBzZWxmRGVidWdJRCk7XG5c
dCAgICAgICAgICByZXR1cm4gbmV4dENoaWxkcmVuO1xuXHQgICAgICAgIH1cblx0ICAgICAgfVxu
XHQgICAgICBuZXh0Q2hpbGRyZW4gPSBmbGF0dGVuQ2hpbGRyZW4obmV4dE5lc3RlZENoaWxkcmVu
RWxlbWVudHMsIHNlbGZEZWJ1Z0lEKTtcblx0ICAgICAgUmVhY3RDaGlsZFJlY29uY2lsZXIudXBk
YXRlQ2hpbGRyZW4ocHJldkNoaWxkcmVuLCBuZXh0Q2hpbGRyZW4sIG1vdW50SW1hZ2VzLCByZW1v
dmVkTm9kZXMsIHRyYW5zYWN0aW9uLCB0aGlzLCB0aGlzLl9ob3N0Q29udGFpbmVySW5mbywgY29u
dGV4dCwgc2VsZkRlYnVnSUQpO1xuXHQgICAgICByZXR1cm4gbmV4dENoaWxkcmVuO1xuXHQgICAg
fSxcblx0XG5cdCAgICAvKipcblx0ICAgICAqIEdlbmVyYXRlcyBhIFwibW91bnQgaW1hZ2VcIiBm
b3IgZWFjaCBvZiB0aGUgc3VwcGxpZWQgY2hpbGRyZW4uIEluIHRoZSBjYXNlXG5cdCAgICAgKiBv
ZiBgUmVhY3RET01Db21wb25lbnRgLCBhIG1vdW50IGltYWdlIGlzIGEgc3RyaW5nIG9mIG1hcmt1
cC5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5lc3RlZENoaWxkcmVuIE5l
c3RlZCBjaGlsZCBtYXBzLlxuXHQgICAgICogQHJldHVybiB7YXJyYXl9IEFuIGFycmF5IG9mIG1v
dW50ZWQgcmVwcmVzZW50YXRpb25zLlxuXHQgICAgICogQGludGVybmFsXG5cdCAgICAgKi9cblx0
ICAgIG1vdW50Q2hpbGRyZW46IGZ1bmN0aW9uIChuZXN0ZWRDaGlsZHJlbiwgdHJhbnNhY3Rpb24s
IGNvbnRleHQpIHtcblx0ICAgICAgdmFyIGNoaWxkcmVuID0gdGhpcy5fcmVjb25jaWxlckluc3Rh
bnRpYXRlQ2hpbGRyZW4obmVzdGVkQ2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcblx0
ICAgICAgdGhpcy5fcmVuZGVyZWRDaGlsZHJlbiA9IGNoaWxkcmVuO1xuXHRcblx0ICAgICAgdmFy
IG1vdW50SW1hZ2VzID0gW107XG5cdCAgICAgIHZhciBpbmRleCA9IDA7XG5cdCAgICAgIGZvciAo
dmFyIG5hbWUgaW4gY2hpbGRyZW4pIHtcblx0ICAgICAgICBpZiAoY2hpbGRyZW4uaGFzT3duUHJv
cGVydHkobmFtZSkpIHtcblx0ICAgICAgICAgIHZhciBjaGlsZCA9IGNoaWxkcmVuW25hbWVdO1xu
XHQgICAgICAgICAgdmFyIHNlbGZEZWJ1Z0lEID0gMDtcblx0ICAgICAgICAgIGlmIChmYWxzZSkg
e1xuXHQgICAgICAgICAgICBzZWxmRGVidWdJRCA9IGdldERlYnVnSUQodGhpcyk7XG5cdCAgICAg
ICAgICB9XG5cdCAgICAgICAgICB2YXIgbW91bnRJbWFnZSA9IFJlYWN0UmVjb25jaWxlci5tb3Vu
dENvbXBvbmVudChjaGlsZCwgdHJhbnNhY3Rpb24sIHRoaXMsIHRoaXMuX2hvc3RDb250YWluZXJJ
bmZvLCBjb250ZXh0LCBzZWxmRGVidWdJRCk7XG5cdCAgICAgICAgICBjaGlsZC5fbW91bnRJbmRl
eCA9IGluZGV4Kys7XG5cdCAgICAgICAgICBtb3VudEltYWdlcy5wdXNoKG1vdW50SW1hZ2UpO1xu
XHQgICAgICAgIH1cblx0ICAgICAgfVxuXHRcblx0ICAgICAgaWYgKGZhbHNlKSB7XG5cdCAgICAg
ICAgc2V0Q2hpbGRyZW5Gb3JJbnN0cnVtZW50YXRpb24uY2FsbCh0aGlzLCBjaGlsZHJlbik7XG5c
dCAgICAgIH1cblx0XG5cdCAgICAgIHJldHVybiBtb3VudEltYWdlcztcblx0ICAgIH0sXG5cdFxu
XHQgICAgLyoqXG5cdCAgICAgKiBSZXBsYWNlcyBhbnkgcmVuZGVyZWQgY2hpbGRyZW4gd2l0aCBh
IHRleHQgY29udGVudCBzdHJpbmcuXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtzdHJpbmd9
IG5leHRDb250ZW50IFN0cmluZyBvZiBjb250ZW50LlxuXHQgICAgICogQGludGVybmFsXG5cdCAg
ICAgKi9cblx0ICAgIHVwZGF0ZVRleHRDb250ZW50OiBmdW5jdGlvbiAobmV4dENvbnRlbnQpIHtc
blx0ICAgICAgdmFyIHByZXZDaGlsZHJlbiA9IHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47XG5cdCAg
ICAgIC8vIFJlbW92ZSBhbnkgcmVuZGVyZWQgY2hpbGRyZW4uXG5cdCAgICAgIFJlYWN0Q2hpbGRS
ZWNvbmNpbGVyLnVubW91bnRDaGlsZHJlbihwcmV2Q2hpbGRyZW4sIGZhbHNlKTtcblx0ICAgICAg
Zm9yICh2YXIgbmFtZSBpbiBwcmV2Q2hpbGRyZW4pIHtcblx0ICAgICAgICBpZiAocHJldkNoaWxk
cmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG5cdCAgICAgICAgICAgdHJ1ZSA/ICBmYWxzZSA/
IGludmFyaWFudChmYWxzZSwgJ3VwZGF0ZVRleHRDb250ZW50IGNhbGxlZCBvbiBub24tZW1wdHkg
Y29tcG9uZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzExOCcpIDogdm9pZCAwO1xuXHQgICAgICAg
IH1cblx0ICAgICAgfVxuXHQgICAgICAvLyBTZXQgbmV3IHRleHQgY29udGVudC5cblx0ICAgICAg
dmFyIHVwZGF0ZXMgPSBbbWFrZVRleHRDb250ZW50KG5leHRDb250ZW50KV07XG5cdCAgICAgIHBy
b2Nlc3NRdWV1ZSh0aGlzLCB1cGRhdGVzKTtcblx0ICAgIH0sXG5cdFxuXHQgICAgLyoqXG5cdCAg
ICAgKiBSZXBsYWNlcyBhbnkgcmVuZGVyZWQgY2hpbGRyZW4gd2l0aCBhIG1hcmt1cCBzdHJpbmcu
XG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtzdHJpbmd9IG5leHRNYXJrdXAgU3RyaW5nIG9m
IG1hcmt1cC5cblx0ICAgICAqIEBpbnRlcm5hbFxuXHQgICAgICovXG5cdCAgICB1cGRhdGVNYXJr
dXA6IGZ1bmN0aW9uIChuZXh0TWFya3VwKSB7XG5cdCAgICAgIHZhciBwcmV2Q2hpbGRyZW4gPSB0
aGlzLl9yZW5kZXJlZENoaWxkcmVuO1xuXHQgICAgICAvLyBSZW1vdmUgYW55IHJlbmRlcmVkIGNo
aWxkcmVuLlxuXHQgICAgICBSZWFjdENoaWxkUmVjb25jaWxlci51bm1vdW50Q2hpbGRyZW4ocHJl
dkNoaWxkcmVuLCBmYWxzZSk7XG5cdCAgICAgIGZvciAodmFyIG5hbWUgaW4gcHJldkNoaWxkcmVu
KSB7XG5cdCAgICAgICAgaWYgKHByZXZDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xu
XHQgICAgICAgICAgIHRydWUgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICd1cGRhdGVUZXh0
Q29udGVudCBjYWxsZWQgb24gbm9uLWVtcHR5IGNvbXBvbmVudC4nKSA6IF9wcm9kSW52YXJpYW50
KCcxMTgnKSA6IHZvaWQgMDtcblx0ICAgICAgICB9XG5cdCAgICAgIH1cblx0ICAgICAgdmFyIHVw
ZGF0ZXMgPSBbbWFrZVNldE1hcmt1cChuZXh0TWFya3VwKV07XG5cdCAgICAgIHByb2Nlc3NRdWV1
ZSh0aGlzLCB1cGRhdGVzKTtcblx0ICAgIH0sXG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBVcGRh
dGVzIHRoZSByZW5kZXJlZCBjaGlsZHJlbiB3aXRoIG5ldyBjaGlsZHJlbi5cblx0ICAgICAqXG5c
dCAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzIE5lc3Rl
ZCBjaGlsZCBlbGVtZW50IG1hcHMuXG5cdCAgICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJh
bnNhY3Rpb259IHRyYW5zYWN0aW9uXG5cdCAgICAgKiBAaW50ZXJuYWxcblx0ICAgICAqL1xuXHQg
ICAgdXBkYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cywg
dHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcblx0ICAgICAgLy8gSG9vayB1c2VkIGJ5IFJlYWN0IEFS
VFxuXHQgICAgICB0aGlzLl91cGRhdGVDaGlsZHJlbihuZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50
cywgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuXHQgICAgfSxcblx0XG5cdCAgICAvKipcblx0ICAg
ICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dE5lc3RlZENoaWxkcmVuRWxlbWVudHMgTmVzdGVkIGNo
aWxkIGVsZW1lbnQgbWFwcy5cblx0ICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2Fj
dGlvbn0gdHJhbnNhY3Rpb25cblx0ICAgICAqIEBmaW5hbFxuXHQgICAgICogQHByb3RlY3RlZFxu
XHQgICAgICovXG5cdCAgICBfdXBkYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChuZXh0TmVzdGVkQ2hp
bGRyZW5FbGVtZW50cywgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcblx0ICAgICAgdmFyIHByZXZD
aGlsZHJlbiA9IHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47XG5cdCAgICAgIHZhciByZW1vdmVkTm9k
ZXMgPSB7fTtcblx0ICAgICAgdmFyIG1vdW50SW1hZ2VzID0gW107XG5cdCAgICAgIHZhciBuZXh0
Q2hpbGRyZW4gPSB0aGlzLl9yZWNvbmNpbGVyVXBkYXRlQ2hpbGRyZW4ocHJldkNoaWxkcmVuLCBu
ZXh0TmVzdGVkQ2hpbGRyZW5FbGVtZW50cywgbW91bnRJbWFnZXMsIHJlbW92ZWROb2RlcywgdHJh
bnNhY3Rpb24sIGNvbnRleHQpO1xuXHQgICAgICBpZiAoIW5leHRDaGlsZHJlbiAmJiAhcHJldkNo
aWxkcmVuKSB7XG5cdCAgICAgICAgcmV0dXJuO1xuXHQgICAgICB9XG5cdCAgICAgIHZhciB1cGRh
dGVzID0gbnVsbDtcblx0ICAgICAgdmFyIG5hbWU7XG5cdCAgICAgIC8vIGBuZXh0SW5kZXhgIHdp
bGwgaW5jcmVtZW50IGZvciBlYWNoIGNoaWxkIGluIGBuZXh0Q2hpbGRyZW5gLCBidXRcblx0ICAg
ICAgLy8gYGxhc3RJbmRleGAgd2lsbCBiZSB0aGUgbGFzdCBpbmRleCB2aXNpdGVkIGluIGBwcmV2
Q2hpbGRyZW5gLlxuXHQgICAgICB2YXIgbmV4dEluZGV4ID0gMDtcblx0ICAgICAgdmFyIGxhc3RJ
bmRleCA9IDA7XG5cdCAgICAgIC8vIGBuZXh0TW91bnRJbmRleGAgd2lsbCBpbmNyZW1lbnQgZm9y
IGVhY2ggbmV3bHkgbW91bnRlZCBjaGlsZC5cblx0ICAgICAgdmFyIG5leHRNb3VudEluZGV4ID0g
MDtcblx0ICAgICAgdmFyIGxhc3RQbGFjZWROb2RlID0gbnVsbDtcblx0ICAgICAgZm9yIChuYW1l
IGluIG5leHRDaGlsZHJlbikge1xuXHQgICAgICAgIGlmICghbmV4dENoaWxkcmVuLmhhc093blBy
b3BlcnR5KG5hbWUpKSB7XG5cdCAgICAgICAgICBjb250aW51ZTtcblx0ICAgICAgICB9XG5cdCAg
ICAgICAgdmFyIHByZXZDaGlsZCA9IHByZXZDaGlsZHJlbiAmJiBwcmV2Q2hpbGRyZW5bbmFtZV07
XG5cdCAgICAgICAgdmFyIG5leHRDaGlsZCA9IG5leHRDaGlsZHJlbltuYW1lXTtcblx0ICAgICAg
ICBpZiAocHJldkNoaWxkID09PSBuZXh0Q2hpbGQpIHtcblx0ICAgICAgICAgIHVwZGF0ZXMgPSBl
bnF1ZXVlKHVwZGF0ZXMsIHRoaXMubW92ZUNoaWxkKHByZXZDaGlsZCwgbGFzdFBsYWNlZE5vZGUs
IG5leHRJbmRleCwgbGFzdEluZGV4KSk7XG5cdCAgICAgICAgICBsYXN0SW5kZXggPSBNYXRoLm1h
eChwcmV2Q2hpbGQuX21vdW50SW5kZXgsIGxhc3RJbmRleCk7XG5cdCAgICAgICAgICBwcmV2Q2hp
bGQuX21vdW50SW5kZXggPSBuZXh0SW5kZXg7XG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAg
ICAgIGlmIChwcmV2Q2hpbGQpIHtcblx0ICAgICAgICAgICAgLy8gVXBkYXRlIGBsYXN0SW5kZXhg
IGJlZm9yZSBgX21vdW50SW5kZXhgIGdldHMgdW5zZXQgYnkgdW5tb3VudGluZy5cblx0ICAgICAg
ICAgICAgbGFzdEluZGV4ID0gTWF0aC5tYXgocHJldkNoaWxkLl9tb3VudEluZGV4LCBsYXN0SW5k
ZXgpO1xuXHQgICAgICAgICAgICAvLyBUaGUgYHJlbW92ZWROb2Rlc2AgbG9vcCBiZWxvdyB3aWxs
IGFjdHVhbGx5IHJlbW92ZSB0aGUgY2hpbGQuXG5cdCAgICAgICAgICB9XG5cdCAgICAgICAgICAv
LyBUaGUgY2hpbGQgbXVzdCBiZSBpbnN0YW50aWF0ZWQgYmVmb3JlIGl0J3MgbW91bnRlZC5cblx0
ICAgICAgICAgIHVwZGF0ZXMgPSBlbnF1ZXVlKHVwZGF0ZXMsIHRoaXMuX21vdW50Q2hpbGRBdElu
ZGV4KG5leHRDaGlsZCwgbW91bnRJbWFnZXNbbmV4dE1vdW50SW5kZXhdLCBsYXN0UGxhY2VkTm9k
ZSwgbmV4dEluZGV4LCB0cmFuc2FjdGlvbiwgY29udGV4dCkpO1xuXHQgICAgICAgICAgbmV4dE1v
dW50SW5kZXgrKztcblx0ICAgICAgICB9XG5cdCAgICAgICAgbmV4dEluZGV4Kys7XG5cdCAgICAg
ICAgbGFzdFBsYWNlZE5vZGUgPSBSZWFjdFJlY29uY2lsZXIuZ2V0SG9zdE5vZGUobmV4dENoaWxk
KTtcblx0ICAgICAgfVxuXHQgICAgICAvLyBSZW1vdmUgY2hpbGRyZW4gdGhhdCBhcmUgbm8gbG9u
Z2VyIHByZXNlbnQuXG5cdCAgICAgIGZvciAobmFtZSBpbiByZW1vdmVkTm9kZXMpIHtcblx0ICAg
ICAgICBpZiAocmVtb3ZlZE5vZGVzLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG5cdCAgICAgICAg
ICB1cGRhdGVzID0gZW5xdWV1ZSh1cGRhdGVzLCB0aGlzLl91bm1vdW50Q2hpbGQocHJldkNoaWxk
cmVuW25hbWVdLCByZW1vdmVkTm9kZXNbbmFtZV0pKTtcblx0ICAgICAgICB9XG5cdCAgICAgIH1c
blx0ICAgICAgaWYgKHVwZGF0ZXMpIHtcblx0ICAgICAgICBwcm9jZXNzUXVldWUodGhpcywgdXBk
YXRlcyk7XG5cdCAgICAgIH1cblx0ICAgICAgdGhpcy5fcmVuZGVyZWRDaGlsZHJlbiA9IG5leHRD
aGlsZHJlbjtcblx0XG5cdCAgICAgIGlmIChmYWxzZSkge1xuXHQgICAgICAgIHNldENoaWxkcmVu
Rm9ySW5zdHJ1bWVudGF0aW9uLmNhbGwodGhpcywgbmV4dENoaWxkcmVuKTtcblx0ICAgICAgfVxu
XHQgICAgfSxcblx0XG5cdCAgICAvKipcblx0ICAgICAqIFVubW91bnRzIGFsbCByZW5kZXJlZCBj
aGlsZHJlbi4gVGhpcyBzaG91bGQgYmUgdXNlZCB0byBjbGVhbiB1cCBjaGlsZHJlblxuXHQgICAg
ICogd2hlbiB0aGlzIGNvbXBvbmVudCBpcyB1bm1vdW50ZWQuIEl0IGRvZXMgbm90IGFjdHVhbGx5
IHBlcmZvcm0gYW55XG5cdCAgICAgKiBiYWNrZW5kIG9wZXJhdGlvbnMuXG5cdCAgICAgKlxuXHQg
ICAgICogQGludGVybmFsXG5cdCAgICAgKi9cblx0ICAgIHVubW91bnRDaGlsZHJlbjogZnVuY3Rp
b24gKHNhZmVseSkge1xuXHQgICAgICB2YXIgcmVuZGVyZWRDaGlsZHJlbiA9IHRoaXMuX3JlbmRl
cmVkQ2hpbGRyZW47XG5cdCAgICAgIFJlYWN0Q2hpbGRSZWNvbmNpbGVyLnVubW91bnRDaGlsZHJl
bihyZW5kZXJlZENoaWxkcmVuLCBzYWZlbHkpO1xuXHQgICAgICB0aGlzLl9yZW5kZXJlZENoaWxk
cmVuID0gbnVsbDtcblx0ICAgIH0sXG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBNb3ZlcyBhIGNo
aWxkIGNvbXBvbmVudCB0byB0aGUgc3VwcGxpZWQgaW5kZXguXG5cdCAgICAgKlxuXHQgICAgICog
QHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY2hpbGQgQ29tcG9uZW50IHRvIG1vdmUuXG5cdCAgICAg
KiBAcGFyYW0ge251bWJlcn0gdG9JbmRleCBEZXN0aW5hdGlvbiBpbmRleCBvZiB0aGUgZWxlbWVu
dC5cblx0ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBsYXN0SW5kZXggTGFzdCBpbmRleCB2aXNpdGVk
IG9mIHRoZSBzaWJsaW5ncyBvZiBgY2hpbGRgLlxuXHQgICAgICogQHByb3RlY3RlZFxuXHQgICAg
ICovXG5cdCAgICBtb3ZlQ2hpbGQ6IGZ1bmN0aW9uIChjaGlsZCwgYWZ0ZXJOb2RlLCB0b0luZGV4
LCBsYXN0SW5kZXgpIHtcblx0ICAgICAgLy8gSWYgdGhlIGluZGV4IG9mIGBjaGlsZGAgaXMgbGVz
cyB0aGFuIGBsYXN0SW5kZXhgLCB0aGVuIGl0IG5lZWRzIHRvXG5cdCAgICAgIC8vIGJlIG1vdmVk
LiBPdGhlcndpc2UsIHdlIGRvIG5vdCBuZWVkIHRvIG1vdmUgaXQgYmVjYXVzZSBhIGNoaWxkIHdp
bGwgYmVcblx0ICAgICAgLy8gaW5zZXJ0ZWQgb3IgbW92ZWQgYmVmb3JlIGBjaGlsZGAuXG5cdCAg
ICAgIGlmIChjaGlsZC5fbW91bnRJbmRleCA8IGxhc3RJbmRleCkge1xuXHQgICAgICAgIHJldHVy
biBtYWtlTW92ZShjaGlsZCwgYWZ0ZXJOb2RlLCB0b0luZGV4KTtcblx0ICAgICAgfVxuXHQgICAg
fSxcblx0XG5cdCAgICAvKipcblx0ICAgICAqIENyZWF0ZXMgYSBjaGlsZCBjb21wb25lbnQuXG5c
dCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY2hpbGQgQ29tcG9uZW50
IHRvIGNyZWF0ZS5cblx0ICAgICAqIEBwYXJhbSB7c3RyaW5nfSBtb3VudEltYWdlIE1hcmt1cCB0
byBpbnNlcnQuXG5cdCAgICAgKiBAcHJvdGVjdGVkXG5cdCAgICAgKi9cblx0ICAgIGNyZWF0ZUNo
aWxkOiBmdW5jdGlvbiAoY2hpbGQsIGFmdGVyTm9kZSwgbW91bnRJbWFnZSkge1xuXHQgICAgICBy
ZXR1cm4gbWFrZUluc2VydE1hcmt1cChtb3VudEltYWdlLCBhZnRlck5vZGUsIGNoaWxkLl9tb3Vu
dEluZGV4KTtcblx0ICAgIH0sXG5cdFxuXHQgICAgLyoqXG5cdCAgICAgKiBSZW1vdmVzIGEgY2hp
bGQgY29tcG9uZW50LlxuXHQgICAgICpcblx0ICAgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9
IGNoaWxkIENoaWxkIHRvIHJlbW92ZS5cblx0ICAgICAqIEBwcm90ZWN0ZWRcblx0ICAgICAqL1xu
XHQgICAgcmVtb3ZlQ2hpbGQ6IGZ1bmN0aW9uIChjaGlsZCwgbm9kZSkge1xuXHQgICAgICByZXR1
cm4gbWFrZVJlbW92ZShjaGlsZCwgbm9kZSk7XG5cdCAgICB9LFxuXHRcblx0ICAgIC8qKlxuXHQg
ICAgICogTW91bnRzIGEgY2hpbGQgd2l0aCB0aGUgc3VwcGxpZWQgbmFtZS5cblx0ICAgICAqXG5c
dCAgICAgKiBOT1RFOiBUaGlzIGlzIHBhcnQgb2YgYHVwZGF0ZUNoaWxkcmVuYCBhbmQgaXMgaGVy
ZSBmb3IgcmVhZGFiaWxpdHkuXG5cdCAgICAgKlxuXHQgICAgICogQHBhcmFtIHtSZWFjdENvbXBv
bmVudH0gY2hpbGQgQ29tcG9uZW50IHRvIG1vdW50LlxuXHQgICAgICogQHBhcmFtIHtzdHJpbmd9
IG5hbWUgTmFtZSBvZiB0aGUgY2hpbGQuXG5cdCAgICAgKiBAcGFyYW0ge251bWJlcn0gaW5kZXgg
SW5kZXggYXQgd2hpY2ggdG8gaW5zZXJ0IHRoZSBjaGlsZC5cblx0ICAgICAqIEBwYXJhbSB7UmVh
Y3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cblx0ICAgICAqIEBwcml2YXRlXG5c
dCAgICAgKi9cblx0ICAgIF9tb3VudENoaWxkQXRJbmRleDogZnVuY3Rpb24gKGNoaWxkLCBtb3Vu
dEltYWdlLCBhZnRlck5vZGUsIGluZGV4LCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuXHQgICAg
ICBjaGlsZC5fbW91bnRJbmRleCA9IGluZGV4O1xuXHQgICAgICByZXR1cm4gdGhpcy5jcmVhdGVD
aGlsZChjaGlsZCwgYWZ0ZXJOb2RlLCBtb3VudEltYWdlKTtcblx0ICAgIH0sXG5cdFxuXHQgICAg
LyoqXG5cdCAgICAgKiBVbm1vdW50cyBhIHJlbmRlcmVkIGNoaWxkLlxuXHQgICAgICpcblx0ICAg
ICAqIE5PVEU6IFRoaXMgaXMgcGFydCBvZiBgdXBkYXRlQ2hpbGRyZW5gIGFuZCBpcyBoZXJlIGZv
ciByZWFkYWJpbGl0eS5cblx0ICAgICAqXG5cdCAgICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50
fSBjaGlsZCBDb21wb25lbnQgdG8gdW5tb3VudC5cblx0ICAgICAqIEBwcml2YXRlXG5cdCAgICAg
Ki9cblx0ICAgIF91bm1vdW50Q2hpbGQ6IGZ1bmN0aW9uIChjaGlsZCwgbm9kZSkge1xuXHQgICAg
ICB2YXIgdXBkYXRlID0gdGhpcy5yZW1vdmVDaGlsZChjaGlsZCwgbm9kZSk7XG5cdCAgICAgIGNo
aWxkLl9tb3VudEluZGV4ID0gbnVsbDtcblx0ICAgICAgcmV0dXJuIHVwZGF0ZTtcblx0ICAgIH1c
blx0ICB9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0TXVsdGlDaGlsZDtcblxu
LyoqKi8gfSxcbi8qIDE1NyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dl
YnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG5cdCAqXG5cdCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJv
ZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMyk7XG5cdFxuXHR2YXIgaW52YXJpYW50
ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxKTtcblx0XG5cdC8qKlxuXHQgKiBAcGFyYW0gez9vYmpl
Y3R9IG9iamVjdFxuXHQgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIGBvYmplY3RgIGlzIGEg
dmFsaWQgb3duZXIuXG5cdCAqIEBmaW5hbFxuXHQgKi9cblx0ZnVuY3Rpb24gaXNWYWxpZE93bmVy
KG9iamVjdCkge1xuXHQgIHJldHVybiAhIShvYmplY3QgJiYgdHlwZW9mIG9iamVjdC5hdHRhY2hS
ZWYgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9iamVjdC5kZXRhY2hSZWYgPT09ICdmdW5jdGlv
bicpO1xuXHR9XG5cdFxuXHQvKipcblx0ICogUmVhY3RPd25lcnMgYXJlIGNhcGFibGUgb2Ygc3Rv
cmluZyByZWZlcmVuY2VzIHRvIG93bmVkIGNvbXBvbmVudHMuXG5cdCAqXG5cdCAqIEFsbCBjb21w
b25lbnRzIGFyZSBjYXBhYmxlIG9mIC8vYmVpbmcvLyByZWZlcmVuY2VkIGJ5IG93bmVyIGNvbXBv
bmVudHMsIGJ1dFxuXHQgKiBvbmx5IFJlYWN0T3duZXIgY29tcG9uZW50cyBhcmUgY2FwYWJsZSBv
ZiAvL3JlZmVyZW5jaW5nLy8gb3duZWQgY29tcG9uZW50cy5cblx0ICogVGhlIG5hbWVkIHJlZmVy
ZW5jZSBpcyBrbm93biBhcyBhIFwicmVmXCIuXG5cdCAqXG5cdCAqIFJlZnMgYXJlIGF2YWlsYWJs
ZSB3aGVuIG1vdW50ZWQgYW5kIHVwZGF0ZWQgZHVyaW5nIHJlY29uY2lsaWF0aW9uLlxuXHQgKlxu
XHQgKiAgIHZhciBNeUNvbXBvbmVudCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcblx0ICogICAgIHJl
bmRlcjogZnVuY3Rpb24oKSB7XG5cdCAqICAgICAgIHJldHVybiAoXG5cdCAqICAgICAgICAgPGRp
diBvbkNsaWNrPXt0aGlzLmhhbmRsZUNsaWNrfT5cblx0ICogICAgICAgICAgIDxDdXN0b21Db21w
b25lbnQgcmVmPVwiY3VzdG9tXCIgLz5cblx0ICogICAgICAgICA8L2Rpdj5cblx0ICogICAgICAg
KTtcblx0ICogICAgIH0sXG5cdCAqICAgICBoYW5kbGVDbGljazogZnVuY3Rpb24oKSB7XG5cdCAq
ICAgICAgIHRoaXMucmVmcy5jdXN0b20uaGFuZGxlQ2xpY2soKTtcblx0ICogICAgIH0sXG5cdCAq
ICAgICBjb21wb25lbnREaWRNb3VudDogZnVuY3Rpb24oKSB7XG5cdCAqICAgICAgIHRoaXMucmVm
cy5jdXN0b20uaW5pdGlhbGl6ZSgpO1xuXHQgKiAgICAgfVxuXHQgKiAgIH0pO1xuXHQgKlxuXHQg
KiBSZWZzIHNob3VsZCByYXJlbHkgYmUgdXNlZC4gV2hlbiByZWZzIGFyZSB1c2VkLCB0aGV5IHNo
b3VsZCBvbmx5IGJlIGRvbmUgdG9cblx0ICogY29udHJvbCBkYXRhIHRoYXQgaXMgbm90IGhhbmRs
ZWQgYnkgUmVhY3QncyBkYXRhIGZsb3cuXG5cdCAqXG5cdCAqIEBjbGFzcyBSZWFjdE93bmVyXG5c
dCAqL1xuXHR2YXIgUmVhY3RPd25lciA9IHtcblx0ICAvKipcblx0ICAgKiBBZGRzIGEgY29tcG9u
ZW50IGJ5IHJlZiB0byBhbiBvd25lciBjb21wb25lbnQuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0g
e1JlYWN0Q29tcG9uZW50fSBjb21wb25lbnQgQ29tcG9uZW50IHRvIHJlZmVyZW5jZS5cblx0ICAg
KiBAcGFyYW0ge3N0cmluZ30gcmVmIE5hbWUgYnkgd2hpY2ggdG8gcmVmZXIgdG8gdGhlIGNvbXBv
bmVudC5cblx0ICAgKiBAcGFyYW0ge1JlYWN0T3duZXJ9IG93bmVyIENvbXBvbmVudCBvbiB3aGlj
aCB0byByZWNvcmQgdGhlIHJlZi5cblx0ICAgKiBAZmluYWxcblx0ICAgKiBAaW50ZXJuYWxcblx0
ICAgKi9cblx0ICBhZGRDb21wb25lbnRBc1JlZlRvOiBmdW5jdGlvbiAoY29tcG9uZW50LCByZWYs
IG93bmVyKSB7XG5cdCAgICAhaXNWYWxpZE93bmVyKG93bmVyKSA/ICBmYWxzZSA/IGludmFyaWFu
dChmYWxzZSwgJ2FkZENvbXBvbmVudEFzUmVmVG8oLi4uKTogT25seSBhIFJlYWN0T3duZXIgY2Fu
IGhhdmUgcmVmcy4gWW91IG1pZ2h0IGJlIGFkZGluZyBhIHJlZiB0byBhIGNvbXBvbmVudCB0aGF0
IHdhcyBub3QgY3JlYXRlZCBpbnNpZGUgYSBjb21wb25lbnRcXCdzIGByZW5kZXJgIG1ldGhvZCwg
b3IgeW91IGhhdmUgbXVsdGlwbGUgY29waWVzIG9mIFJlYWN0IGxvYWRlZCAoZGV0YWlsczogaHR0
cHM6Ly9mYi5tZS9yZWFjdC1yZWZzLW11c3QtaGF2ZS1vd25lcikuJykgOiBfcHJvZEludmFyaWFu
dCgnMTE5JykgOiB2b2lkIDA7XG5cdCAgICBvd25lci5hdHRhY2hSZWYocmVmLCBjb21wb25lbnQp
O1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIFJlbW92ZXMgYSBjb21wb25lbnQgYnkgcmVm
IGZyb20gYW4gb3duZXIgY29tcG9uZW50LlxuXHQgICAqXG5cdCAgICogQHBhcmFtIHtSZWFjdENv
bXBvbmVudH0gY29tcG9uZW50IENvbXBvbmVudCB0byBkZXJlZmVyZW5jZS5cblx0ICAgKiBAcGFy
YW0ge3N0cmluZ30gcmVmIE5hbWUgb2YgdGhlIHJlZiB0byByZW1vdmUuXG5cdCAgICogQHBhcmFt
IHtSZWFjdE93bmVyfSBvd25lciBDb21wb25lbnQgb24gd2hpY2ggdGhlIHJlZiBpcyByZWNvcmRl
ZC5cblx0ICAgKiBAZmluYWxcblx0ICAgKiBAaW50ZXJuYWxcblx0ICAgKi9cblx0ICByZW1vdmVD
b21wb25lbnRBc1JlZkZyb206IGZ1bmN0aW9uIChjb21wb25lbnQsIHJlZiwgb3duZXIpIHtcblx0
ICAgICFpc1ZhbGlkT3duZXIob3duZXIpID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAncmVt
b3ZlQ29tcG9uZW50QXNSZWZGcm9tKC4uLik6IE9ubHkgYSBSZWFjdE93bmVyIGNhbiBoYXZlIHJl
ZnMuIFlvdSBtaWdodCBiZSByZW1vdmluZyBhIHJlZiB0byBhIGNvbXBvbmVudCB0aGF0IHdhcyBu
b3QgY3JlYXRlZCBpbnNpZGUgYSBjb21wb25lbnRcXCdzIGByZW5kZXJgIG1ldGhvZCwgb3IgeW91
IGhhdmUgbXVsdGlwbGUgY29waWVzIG9mIFJlYWN0IGxvYWRlZCAoZGV0YWlsczogaHR0cHM6Ly9m
Yi5tZS9yZWFjdC1yZWZzLW11c3QtaGF2ZS1vd25lcikuJykgOiBfcHJvZEludmFyaWFudCgnMTIw
JykgOiB2b2lkIDA7XG5cdCAgICB2YXIgb3duZXJQdWJsaWNJbnN0YW5jZSA9IG93bmVyLmdldFB1
YmxpY0luc3RhbmNlKCk7XG5cdCAgICAvLyBDaGVjayB0aGF0IGBjb21wb25lbnRgJ3Mgb3duZXIg
aXMgc3RpbGwgYWxpdmUgYW5kIHRoYXQgYGNvbXBvbmVudGAgaXMgc3RpbGwgdGhlIGN1cnJlbnQg
cmVmXG5cdCAgICAvLyBiZWNhdXNlIHdlIGRvIG5vdCB3YW50IHRvIGRldGFjaCB0aGUgcmVmIGlm
IGFub3RoZXIgY29tcG9uZW50IHN0b2xlIGl0LlxuXHQgICAgaWYgKG93bmVyUHVibGljSW5zdGFu
Y2UgJiYgb3duZXJQdWJsaWNJbnN0YW5jZS5yZWZzW3JlZl0gPT09IGNvbXBvbmVudC5nZXRQdWJs
aWNJbnN0YW5jZSgpKSB7XG5cdCAgICAgIG93bmVyLmRldGFjaFJlZihyZWYpO1xuXHQgICAgfVxu
XHQgIH1cblx0fTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RPd25lcjtcblxuLyoqKi8g
fSxcbi8qIDE1OCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0Lyoq
XG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQgKi9cblx0XG5c
dCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRf
RE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lMTF9CRV9GSVJFRCc7XG5cdFxuXHRtb2R1bGUuZXhw
b3J0cyA9IFJlYWN0UHJvcFR5cGVzU2VjcmV0O1xuXG4vKioqLyB9LFxuLyogMTU5ICovXG4vKioq
LyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQv
Kipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNl
IHN0cmljdCc7XG5cdFxuXHR2YXIgX2Fzc2lnbiA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5c
dFxuXHR2YXIgQ2FsbGJhY2tRdWV1ZSA9IF9fd2VicGFja19yZXF1aXJlX18oNTkpO1xuXHR2YXIg
UG9vbGVkQ2xhc3MgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEzKTtcblx0dmFyIFJlYWN0QnJvd3Nl
ckV2ZW50RW1pdHRlciA9IF9fd2VicGFja19yZXF1aXJlX18oMjUpO1xuXHR2YXIgUmVhY3RJbnB1
dFNlbGVjdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNjYpO1xuXHR2YXIgUmVhY3RJbnN0cnVt
ZW50YXRpb24gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgpO1xuXHR2YXIgVHJhbnNhY3Rpb24gPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDI3KTtcblx0dmFyIFJlYWN0VXBkYXRlUXVldWUgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDQyKTtcblx0XG5cdC8qKlxuXHQgKiBFbnN1cmVzIHRoYXQsIHdoZW4gcG9z
c2libGUsIHRoZSBzZWxlY3Rpb24gcmFuZ2UgKGN1cnJlbnRseSBzZWxlY3RlZCB0ZXh0XG5cdCAq
IGlucHV0KSBpcyBub3QgZGlzdHVyYmVkIGJ5IHBlcmZvcm1pbmcgdGhlIHRyYW5zYWN0aW9uLlxu
XHQgKi9cblx0dmFyIFNFTEVDVElPTl9SRVNUT1JBVElPTiA9IHtcblx0ICAvKipcblx0ICAgKiBA
cmV0dXJuIHtTZWxlY3Rpb259IFNlbGVjdGlvbiBpbmZvcm1hdGlvbi5cblx0ICAgKi9cblx0ICBp
bml0aWFsaXplOiBSZWFjdElucHV0U2VsZWN0aW9uLmdldFNlbGVjdGlvbkluZm9ybWF0aW9uLFxu
XHQgIC8qKlxuXHQgICAqIEBwYXJhbSB7U2VsZWN0aW9ufSBzZWwgU2VsZWN0aW9uIGluZm9ybWF0
aW9uIHJldHVybmVkIGZyb20gYGluaXRpYWxpemVgLlxuXHQgICAqL1xuXHQgIGNsb3NlOiBSZWFj
dElucHV0U2VsZWN0aW9uLnJlc3RvcmVTZWxlY3Rpb25cblx0fTtcblx0XG5cdC8qKlxuXHQgKiBT
dXBwcmVzc2VzIGV2ZW50cyAoYmx1ci9mb2N1cykgdGhhdCBjb3VsZCBiZSBpbmFkdmVydGVudGx5
IGRpc3BhdGNoZWQgZHVlIHRvXG5cdCAqIGhpZ2ggbGV2ZWwgRE9NIG1hbmlwdWxhdGlvbnMgKGxp
a2UgdGVtcG9yYXJpbHkgcmVtb3ZpbmcgYSB0ZXh0IGlucHV0IGZyb20gdGhlXG5cdCAqIERPTSku
XG5cdCAqL1xuXHR2YXIgRVZFTlRfU1VQUFJFU1NJT04gPSB7XG5cdCAgLyoqXG5cdCAgICogQHJl
dHVybiB7Ym9vbGVhbn0gVGhlIGVuYWJsZWQgc3RhdHVzIG9mIGBSZWFjdEJyb3dzZXJFdmVudEVt
aXR0ZXJgIGJlZm9yZVxuXHQgICAqIHRoZSByZWNvbmNpbGlhdGlvbi5cblx0ICAgKi9cblx0ICBp
bml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG5cdCAgICB2YXIgY3VycmVudGx5RW5hYmxlZCA9IFJl
YWN0QnJvd3NlckV2ZW50RW1pdHRlci5pc0VuYWJsZWQoKTtcblx0ICAgIFJlYWN0QnJvd3NlckV2
ZW50RW1pdHRlci5zZXRFbmFibGVkKGZhbHNlKTtcblx0ICAgIHJldHVybiBjdXJyZW50bHlFbmFi
bGVkO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxuXHQgICAqIEBwYXJhbSB7Ym9vbGVhbn0gcHJldmlv
dXNseUVuYWJsZWQgRW5hYmxlZCBzdGF0dXMgb2Zcblx0ICAgKiAgIGBSZWFjdEJyb3dzZXJFdmVu
dEVtaXR0ZXJgIGJlZm9yZSB0aGUgcmVjb25jaWxpYXRpb24gb2NjdXJyZWQuIGBjbG9zZWBcblx0
ICAgKiAgIHJlc3RvcmVzIHRoZSBwcmV2aW91cyB2YWx1ZS5cblx0ICAgKi9cblx0ICBjbG9zZTog
ZnVuY3Rpb24gKHByZXZpb3VzbHlFbmFibGVkKSB7XG5cdCAgICBSZWFjdEJyb3dzZXJFdmVudEVt
aXR0ZXIuc2V0RW5hYmxlZChwcmV2aW91c2x5RW5hYmxlZCk7XG5cdCAgfVxuXHR9O1xuXHRcblx0
LyoqXG5cdCAqIFByb3ZpZGVzIGEgcXVldWUgZm9yIGNvbGxlY3RpbmcgYGNvbXBvbmVudERpZE1v
dW50YCBhbmRcblx0ICogYGNvbXBvbmVudERpZFVwZGF0ZWAgY2FsbGJhY2tzIGR1cmluZyB0aGUg
dHJhbnNhY3Rpb24uXG5cdCAqL1xuXHR2YXIgT05fRE9NX1JFQURZX1FVRVVFSU5HID0ge1xuXHQg
IC8qKlxuXHQgICAqIEluaXRpYWxpemVzIHRoZSBpbnRlcm5hbCBgb25ET01SZWFkeWAgcXVldWUu
XG5cdCAgICovXG5cdCAgaW5pdGlhbGl6ZTogZnVuY3Rpb24gKCkge1xuXHQgICAgdGhpcy5yZWFj
dE1vdW50UmVhZHkucmVzZXQoKTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBBZnRlciBE
T00gaXMgZmx1c2hlZCwgaW52b2tlIGFsbCByZWdpc3RlcmVkIGBvbkRPTVJlYWR5YCBjYWxsYmFj
a3MuXG5cdCAgICovXG5cdCAgY2xvc2U6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHRoaXMucmVhY3RN
b3VudFJlYWR5Lm5vdGlmeUFsbCgpO1xuXHQgIH1cblx0fTtcblx0XG5cdC8qKlxuXHQgKiBFeGVj
dXRlZCB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoZSBgVHJhbnNhY3Rpb25gIGluc3RhbmNlLiBDb25z
aWRlciB0aGVzZSBhc1xuXHQgKiBiZWluZyBtZW1iZXIgbWV0aG9kcywgYnV0IHdpdGggYW4gaW1w
bGllZCBvcmRlcmluZyB3aGlsZSBiZWluZyBpc29sYXRlZCBmcm9tXG5cdCAqIGVhY2ggb3RoZXIu
XG5cdCAqL1xuXHR2YXIgVFJBTlNBQ1RJT05fV1JBUFBFUlMgPSBbU0VMRUNUSU9OX1JFU1RPUkFU
SU9OLCBFVkVOVF9TVVBQUkVTU0lPTiwgT05fRE9NX1JFQURZX1FVRVVFSU5HXTtcblx0XG5cdGlm
IChmYWxzZSkge1xuXHQgIFRSQU5TQUNUSU9OX1dSQVBQRVJTLnB1c2goe1xuXHQgICAgaW5pdGlh
bGl6ZTogUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uQmVnaW5GbHVzaCxcblx0ICAg
IGNsb3NlOiBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25FbmRGbHVzaFxuXHQgIH0p
O1xuXHR9XG5cdFxuXHQvKipcblx0ICogQ3VycmVudGx5OlxuXHQgKiAtIFRoZSBvcmRlciB0aGF0
IHRoZXNlIGFyZSBsaXN0ZWQgaW4gdGhlIHRyYW5zYWN0aW9uIGlzIGNyaXRpY2FsOlxuXHQgKiAt
IFN1cHByZXNzZXMgZXZlbnRzLlxuXHQgKiAtIFJlc3RvcmVzIHNlbGVjdGlvbiByYW5nZS5cblx0
ICpcblx0ICogRnV0dXJlOlxuXHQgKiAtIFJlc3RvcmUgZG9jdW1lbnQvb3ZlcmZsb3cgc2Nyb2xs
IHBvc2l0aW9ucyB0aGF0IHdlcmUgdW5pbnRlbnRpb25hbGx5XG5cdCAqICAgbW9kaWZpZWQgdmlh
IERPTSBpbnNlcnRpb25zIGFib3ZlIHRoZSB0b3Agdmlld3BvcnQgYm91bmRhcnkuXG5cdCAqIC0g
SW1wbGVtZW50L2ludGVncmF0ZSB3aXRoIGN1c3RvbWl6ZWQgY29uc3RyYWludCBiYXNlZCBsYXlv
dXQgc3lzdGVtIGFuZCBrZWVwXG5cdCAqICAgdHJhY2sgb2Ygd2hpY2ggZGltZW5zaW9ucyBtdXN0
IGJlIHJlbWVhc3VyZWQuXG5cdCAqXG5cdCAqIEBjbGFzcyBSZWFjdFJlY29uY2lsZVRyYW5zYWN0
aW9uXG5cdCAqL1xuXHRmdW5jdGlvbiBSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uKHVzZUNyZWF0
ZUVsZW1lbnQpIHtcblx0ICB0aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCk7XG5cdCAgLy8g
T25seSBzZXJ2ZXItc2lkZSByZW5kZXJpbmcgcmVhbGx5IG5lZWRzIHRoaXMgb3B0aW9uIChzZWVc
blx0ICAvLyBgUmVhY3RTZXJ2ZXJSZW5kZXJpbmdgKSwgYnV0IHNlcnZlci1zaWRlIHVzZXNcblx0
ICAvLyBgUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbmAgaW5zdGVhZC4gVGhpcyBvcHRp
b24gaXMgaGVyZSBzbyB0aGF0IGl0J3Ncblx0ICAvLyBhY2Nlc3NpYmxlIGFuZCBkZWZhdWx0cyB0
byBmYWxzZSB3aGVuIGBSZWFjdERPTUNvbXBvbmVudGAgYW5kXG5cdCAgLy8gYFJlYWN0RE9NVGV4
dENvbXBvbmVudGAgY2hlY2tzIGl0IGluIGBtb3VudENvbXBvbmVudGAuYFxuXHQgIHRoaXMucmVu
ZGVyVG9TdGF0aWNNYXJrdXAgPSBmYWxzZTtcblx0ICB0aGlzLnJlYWN0TW91bnRSZWFkeSA9IENh
bGxiYWNrUXVldWUuZ2V0UG9vbGVkKG51bGwpO1xuXHQgIHRoaXMudXNlQ3JlYXRlRWxlbWVudCA9
IHVzZUNyZWF0ZUVsZW1lbnQ7XG5cdH1cblx0XG5cdHZhciBNaXhpbiA9IHtcblx0ICAvKipcblx0
ICAgKiBAc2VlIFRyYW5zYWN0aW9uXG5cdCAgICogQGFic3RyYWN0XG5cdCAgICogQGZpbmFsXG5c
dCAgICogQHJldHVybiB7YXJyYXk8b2JqZWN0Pn0gTGlzdCBvZiBvcGVyYXRpb24gd3JhcCBwcm9j
ZWR1cmVzLlxuXHQgICAqICAgVE9ETzogY29udmVydCB0byBhcnJheTxUcmFuc2FjdGlvbldyYXBw
ZXI+XG5cdCAgICovXG5cdCAgZ2V0VHJhbnNhY3Rpb25XcmFwcGVyczogZnVuY3Rpb24gKCkge1xu
XHQgICAgcmV0dXJuIFRSQU5TQUNUSU9OX1dSQVBQRVJTO1xuXHQgIH0sXG5cdFxuXHQgIC8qKlxu
XHQgICAqIEByZXR1cm4ge29iamVjdH0gVGhlIHF1ZXVlIHRvIGNvbGxlY3QgYG9uRE9NUmVhZHlg
IGNhbGxiYWNrcyB3aXRoLlxuXHQgICAqL1xuXHQgIGdldFJlYWN0TW91bnRSZWFkeTogZnVuY3Rp
b24gKCkge1xuXHQgICAgcmV0dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5O1xuXHQgIH0sXG5cdFxu
XHQgIC8qKlxuXHQgICAqIEByZXR1cm4ge29iamVjdH0gVGhlIHF1ZXVlIHRvIGNvbGxlY3QgUmVh
Y3QgYXN5bmMgZXZlbnRzLlxuXHQgICAqL1xuXHQgIGdldFVwZGF0ZVF1ZXVlOiBmdW5jdGlvbiAo
KSB7XG5cdCAgICByZXR1cm4gUmVhY3RVcGRhdGVRdWV1ZTtcblx0ICB9LFxuXHRcblx0ICAvKipc
blx0ICAgKiBTYXZlIGN1cnJlbnQgdHJhbnNhY3Rpb24gc3RhdGUgLS0gaWYgdGhlIHJldHVybiB2
YWx1ZSBmcm9tIHRoaXMgbWV0aG9kIGlzXG5cdCAgICogcGFzc2VkIHRvIGByb2xsYmFja2AsIHRo
ZSB0cmFuc2FjdGlvbiB3aWxsIGJlIHJlc2V0IHRvIHRoYXQgc3RhdGUuXG5cdCAgICovXG5cdCAg
Y2hlY2twb2ludDogZnVuY3Rpb24gKCkge1xuXHQgICAgLy8gcmVhY3RNb3VudFJlYWR5IGlzIHRo
ZSBvdXIgb25seSBzdGF0ZWZ1bCB3cmFwcGVyXG5cdCAgICByZXR1cm4gdGhpcy5yZWFjdE1vdW50
UmVhZHkuY2hlY2twb2ludCgpO1xuXHQgIH0sXG5cdFxuXHQgIHJvbGxiYWNrOiBmdW5jdGlvbiAo
Y2hlY2twb2ludCkge1xuXHQgICAgdGhpcy5yZWFjdE1vdW50UmVhZHkucm9sbGJhY2soY2hlY2tw
b2ludCk7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogYFBvb2xlZENsYXNzYCBsb29rcyBm
b3IgdGhpcywgYW5kIHdpbGwgaW52b2tlIHRoaXMgYmVmb3JlIGFsbG93aW5nIHRoaXNcblx0ICAg
KiBpbnN0YW5jZSB0byBiZSByZXVzZWQuXG5cdCAgICovXG5cdCAgZGVzdHJ1Y3RvcjogZnVuY3Rp
b24gKCkge1xuXHQgICAgQ2FsbGJhY2tRdWV1ZS5yZWxlYXNlKHRoaXMucmVhY3RNb3VudFJlYWR5
KTtcblx0ICAgIHRoaXMucmVhY3RNb3VudFJlYWR5ID0gbnVsbDtcblx0ICB9XG5cdH07XG5cdFxu
XHRfYXNzaWduKFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucHJvdG90eXBlLCBUcmFuc2FjdGlv
biwgTWl4aW4pO1xuXHRcblx0UG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1RvKFJlYWN0UmVjb25jaWxl
VHJhbnNhY3Rpb24pO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdFJlY29uY2lsZVRyYW5z
YWN0aW9uO1xuXG4vKioqLyB9LFxuLyogMTYwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4
cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0
ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cblx0ICpcblx0ICogXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRc
blx0dmFyIFJlYWN0T3duZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE1Nyk7XG5cdFxuXHR2YXIg
UmVhY3RSZWYgPSB7fTtcblx0XG5cdGZ1bmN0aW9uIGF0dGFjaFJlZihyZWYsIGNvbXBvbmVudCwg
b3duZXIpIHtcblx0ICBpZiAodHlwZW9mIHJlZiA9PT0gJ2Z1bmN0aW9uJykge1xuXHQgICAgcmVm
KGNvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpKTtcblx0ICB9IGVsc2Uge1xuXHQgICAgLy8g
TGVnYWN5IHJlZlxuXHQgICAgUmVhY3RPd25lci5hZGRDb21wb25lbnRBc1JlZlRvKGNvbXBvbmVu
dCwgcmVmLCBvd25lcik7XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBkZXRhY2hSZWYocmVm
LCBjb21wb25lbnQsIG93bmVyKSB7XG5cdCAgaWYgKHR5cGVvZiByZWYgPT09ICdmdW5jdGlvbicp
IHtcblx0ICAgIHJlZihudWxsKTtcblx0ICB9IGVsc2Uge1xuXHQgICAgLy8gTGVnYWN5IHJlZlxu
XHQgICAgUmVhY3RPd25lci5yZW1vdmVDb21wb25lbnRBc1JlZkZyb20oY29tcG9uZW50LCByZWYs
IG93bmVyKTtcblx0ICB9XG5cdH1cblx0XG5cdFJlYWN0UmVmLmF0dGFjaFJlZnMgPSBmdW5jdGlv
biAoaW5zdGFuY2UsIGVsZW1lbnQpIHtcblx0ICBpZiAoZWxlbWVudCA9PT0gbnVsbCB8fCB0eXBl
b2YgZWxlbWVudCAhPT0gJ29iamVjdCcpIHtcblx0ICAgIHJldHVybjtcblx0ICB9XG5cdCAgdmFy
IHJlZiA9IGVsZW1lbnQucmVmO1xuXHQgIGlmIChyZWYgIT0gbnVsbCkge1xuXHQgICAgYXR0YWNo
UmVmKHJlZiwgaW5zdGFuY2UsIGVsZW1lbnQuX293bmVyKTtcblx0ICB9XG5cdH07XG5cdFxuXHRS
ZWFjdFJlZi5zaG91bGRVcGRhdGVSZWZzID0gZnVuY3Rpb24gKHByZXZFbGVtZW50LCBuZXh0RWxl
bWVudCkge1xuXHQgIC8vIElmIGVpdGhlciB0aGUgb3duZXIgb3IgYSBgcmVmYCBoYXMgY2hhbmdl
ZCwgbWFrZSBzdXJlIHRoZSBuZXdlc3Qgb3duZXJcblx0ICAvLyBoYXMgc3RvcmVkIGEgcmVmZXJl
bmNlIHRvIGB0aGlzYCwgYW5kIHRoZSBwcmV2aW91cyBvd25lciAoaWYgZGlmZmVyZW50KVxuXHQg
IC8vIGhhcyBmb3Jnb3R0ZW4gdGhlIHJlZmVyZW5jZSB0byBgdGhpc2AuIFdlIHVzZSB0aGUgZWxl
bWVudCBpbnN0ZWFkXG5cdCAgLy8gb2YgdGhlIHB1YmxpYyB0aGlzLnByb3BzIGJlY2F1c2UgdGhl
IHBvc3QgcHJvY2Vzc2luZyBjYW5ub3QgZGV0ZXJtaW5lXG5cdCAgLy8gYSByZWYuIFRoZSByZWYg
Y29uY2VwdHVhbGx5IGxpdmVzIG9uIHRoZSBlbGVtZW50LlxuXHRcblx0ICAvLyBUT0RPOiBTaG91
bGQgdGhpcyBldmVuIGJlIHBvc3NpYmxlPyBUaGUgb3duZXIgY2Fubm90IGNoYW5nZSBiZWNhdXNl
XG5cdCAgLy8gaXQncyBmb3JiaWRkZW4gYnkgc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQuIFRo
ZSByZWYgY2FuIGNoYW5nZVxuXHQgIC8vIGlmIHlvdSBzd2FwIHRoZSBrZXlzIG9mIGJ1dCBub3Qg
dGhlIHJlZnMuIFJlY29uc2lkZXIgd2hlcmUgdGhpcyBjaGVja1xuXHQgIC8vIGlzIG1hZGUuIEl0
IHByb2JhYmx5IGJlbG9uZ3Mgd2hlcmUgdGhlIGtleSBjaGVja2luZyBhbmRcblx0ICAvLyBpbnN0
YW50aWF0ZVJlYWN0Q29tcG9uZW50IGlzIGRvbmUuXG5cdFxuXHQgIHZhciBwcmV2UmVmID0gbnVs
bDtcblx0ICB2YXIgcHJldk93bmVyID0gbnVsbDtcblx0ICBpZiAocHJldkVsZW1lbnQgIT09IG51
bGwgJiYgdHlwZW9mIHByZXZFbGVtZW50ID09PSAnb2JqZWN0Jykge1xuXHQgICAgcHJldlJlZiA9
IHByZXZFbGVtZW50LnJlZjtcblx0ICAgIHByZXZPd25lciA9IHByZXZFbGVtZW50Ll9vd25lcjtc
blx0ICB9XG5cdFxuXHQgIHZhciBuZXh0UmVmID0gbnVsbDtcblx0ICB2YXIgbmV4dE93bmVyID0g
bnVsbDtcblx0ICBpZiAobmV4dEVsZW1lbnQgIT09IG51bGwgJiYgdHlwZW9mIG5leHRFbGVtZW50
ID09PSAnb2JqZWN0Jykge1xuXHQgICAgbmV4dFJlZiA9IG5leHRFbGVtZW50LnJlZjtcblx0ICAg
IG5leHRPd25lciA9IG5leHRFbGVtZW50Ll9vd25lcjtcblx0ICB9XG5cdFxuXHQgIHJldHVybiBw
cmV2UmVmICE9PSBuZXh0UmVmIHx8XG5cdCAgLy8gSWYgb3duZXIgY2hhbmdlcyBidXQgd2UgaGF2
ZSBhbiB1bmNoYW5nZWQgZnVuY3Rpb24gcmVmLCBkb24ndCB1cGRhdGUgcmVmc1xuXHQgIHR5cGVv
ZiBuZXh0UmVmID09PSAnc3RyaW5nJyAmJiBuZXh0T3duZXIgIT09IHByZXZPd25lcjtcblx0fTtc
blx0XG5cdFJlYWN0UmVmLmRldGFjaFJlZnMgPSBmdW5jdGlvbiAoaW5zdGFuY2UsIGVsZW1lbnQp
IHtcblx0ICBpZiAoZWxlbWVudCA9PT0gbnVsbCB8fCB0eXBlb2YgZWxlbWVudCAhPT0gJ29iamVj
dCcpIHtcblx0ICAgIHJldHVybjtcblx0ICB9XG5cdCAgdmFyIHJlZiA9IGVsZW1lbnQucmVmO1xu
XHQgIGlmIChyZWYgIT0gbnVsbCkge1xuXHQgICAgZGV0YWNoUmVmKHJlZiwgaW5zdGFuY2UsIGVs
ZW1lbnQuX293bmVyKTtcblx0ICB9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0
UmVmO1xuXG4vKioqLyB9LFxuLyogMTYxICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTQt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpc
blx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX2Fz
c2lnbiA9IF9fd2VicGFja19yZXF1aXJlX18oNCk7XG5cdFxuXHR2YXIgUG9vbGVkQ2xhc3MgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDEzKTtcblx0dmFyIFRyYW5zYWN0aW9uID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygyNyk7XG5cdHZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IF9fd2VicGFja19yZXF1
aXJlX18oOCk7XG5cdHZhciBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlID0gX193ZWJwYWNrX3JlcXVp
cmVfXygxNjIpO1xuXHRcblx0LyoqXG5cdCAqIEV4ZWN1dGVkIHdpdGhpbiB0aGUgc2NvcGUgb2Yg
dGhlIGBUcmFuc2FjdGlvbmAgaW5zdGFuY2UuIENvbnNpZGVyIHRoZXNlIGFzXG5cdCAqIGJlaW5n
IG1lbWJlciBtZXRob2RzLCBidXQgd2l0aCBhbiBpbXBsaWVkIG9yZGVyaW5nIHdoaWxlIGJlaW5n
IGlzb2xhdGVkIGZyb21cblx0ICogZWFjaCBvdGhlci5cblx0ICovXG5cdHZhciBUUkFOU0FDVElP
Tl9XUkFQUEVSUyA9IFtdO1xuXHRcblx0aWYgKGZhbHNlKSB7XG5cdCAgVFJBTlNBQ1RJT05fV1JB
UFBFUlMucHVzaCh7XG5cdCAgICBpbml0aWFsaXplOiBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1
Z1Rvb2wub25CZWdpbkZsdXNoLFxuXHQgICAgY2xvc2U6IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRl
YnVnVG9vbC5vbkVuZEZsdXNoXG5cdCAgfSk7XG5cdH1cblx0XG5cdHZhciBub29wQ2FsbGJhY2tR
dWV1ZSA9IHtcblx0ICBlbnF1ZXVlOiBmdW5jdGlvbiAoKSB7fVxuXHR9O1xuXHRcblx0LyoqXG5c
dCAqIEBjbGFzcyBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uXG5cdCAqIEBwYXJhbSB7
Ym9vbGVhbn0gcmVuZGVyVG9TdGF0aWNNYXJrdXBcblx0ICovXG5cdGZ1bmN0aW9uIFJlYWN0U2Vy
dmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24ocmVuZGVyVG9TdGF0aWNNYXJrdXApIHtcblx0ICB0aGlz
LnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCk7XG5cdCAgdGhpcy5yZW5kZXJUb1N0YXRpY01hcmt1
cCA9IHJlbmRlclRvU3RhdGljTWFya3VwO1xuXHQgIHRoaXMudXNlQ3JlYXRlRWxlbWVudCA9IGZh
bHNlO1xuXHQgIHRoaXMudXBkYXRlUXVldWUgPSBuZXcgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZSh0
aGlzKTtcblx0fVxuXHRcblx0dmFyIE1peGluID0ge1xuXHQgIC8qKlxuXHQgICAqIEBzZWUgVHJh
bnNhY3Rpb25cblx0ICAgKiBAYWJzdHJhY3Rcblx0ICAgKiBAZmluYWxcblx0ICAgKiBAcmV0dXJu
IHthcnJheX0gRW1wdHkgbGlzdCBvZiBvcGVyYXRpb24gd3JhcCBwcm9jZWR1cmVzLlxuXHQgICAq
L1xuXHQgIGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6IGZ1bmN0aW9uICgpIHtcblx0ICAgIHJldHVy
biBUUkFOU0FDVElPTl9XUkFQUEVSUztcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAgKiBAcmV0
dXJuIHtvYmplY3R9IFRoZSBxdWV1ZSB0byBjb2xsZWN0IGBvbkRPTVJlYWR5YCBjYWxsYmFja3Mg
d2l0aC5cblx0ICAgKi9cblx0ICBnZXRSZWFjdE1vdW50UmVhZHk6IGZ1bmN0aW9uICgpIHtcblx0
ICAgIHJldHVybiBub29wQ2FsbGJhY2tRdWV1ZTtcblx0ICB9LFxuXHRcblx0ICAvKipcblx0ICAg
KiBAcmV0dXJuIHtvYmplY3R9IFRoZSBxdWV1ZSB0byBjb2xsZWN0IFJlYWN0IGFzeW5jIGV2ZW50
cy5cblx0ICAgKi9cblx0ICBnZXRVcGRhdGVRdWV1ZTogZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0
dXJuIHRoaXMudXBkYXRlUXVldWU7XG5cdCAgfSxcblx0XG5cdCAgLyoqXG5cdCAgICogYFBvb2xl
ZENsYXNzYCBsb29rcyBmb3IgdGhpcywgYW5kIHdpbGwgaW52b2tlIHRoaXMgYmVmb3JlIGFsbG93
aW5nIHRoaXNcblx0ICAgKiBpbnN0YW5jZSB0byBiZSByZXVzZWQuXG5cdCAgICovXG5cdCAgZGVz
dHJ1Y3RvcjogZnVuY3Rpb24gKCkge30sXG5cdFxuXHQgIGNoZWNrcG9pbnQ6IGZ1bmN0aW9uICgp
IHt9LFxuXHRcblx0ICByb2xsYmFjazogZnVuY3Rpb24gKCkge31cblx0fTtcblx0XG5cdF9hc3Np
Z24oUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbi5wcm90b3R5cGUsIFRyYW5zYWN0aW9u
LCBNaXhpbik7XG5cdFxuXHRQb29sZWRDbGFzcy5hZGRQb29saW5nVG8oUmVhY3RTZXJ2ZXJSZW5k
ZXJpbmdUcmFuc2FjdGlvbik7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0U2VydmVyUmVu
ZGVyaW5nVHJhbnNhY3Rpb247XG5cbi8qKiovIH0sXG4vKiAxNjIgKi9cbi8qKiovIGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBD
b3B5cmlnaHQgMjAxNS1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0ICovXG5cdFxuXHQndXNlIHN0
cmljdCc7XG5cdFxuXHRmdW5jdGlvbiBfY2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVj
dG9yKSB7IGlmICghKGluc3RhbmNlIGluc3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5l
dyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxu
XHRcblx0dmFyIFJlYWN0VXBkYXRlUXVldWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQyKTtcblx0
XG5cdHZhciB3YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXygyKTtcblx0XG5cdGZ1bmN0aW9u
IHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCBjYWxsZXJOYW1lKSB7XG5cdCAgaWYgKGZhbHNlKSB7
XG5cdCAgICB2YXIgY29uc3RydWN0b3IgPSBwdWJsaWNJbnN0YW5jZS5jb25zdHJ1Y3Rvcjtcblx0
ICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNl
LCAnJXMoLi4uKTogQ2FuIG9ubHkgdXBkYXRlIGEgbW91bnRpbmcgY29tcG9uZW50LiAnICsgJ1Ro
aXMgdXN1YWxseSBtZWFucyB5b3UgY2FsbGVkICVzKCkgb3V0c2lkZSBjb21wb25lbnRXaWxsTW91
bnQoKSBvbiB0aGUgc2VydmVyLiAnICsgJ1RoaXMgaXMgYSBuby1vcC4gUGxlYXNlIGNoZWNrIHRo
ZSBjb2RlIGZvciB0aGUgJXMgY29tcG9uZW50LicsIGNhbGxlck5hbWUsIGNhbGxlck5hbWUsIGNv
bnN0cnVjdG9yICYmIChjb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCBjb25zdHJ1Y3Rvci5uYW1l
KSB8fCAnUmVhY3RDbGFzcycpIDogdm9pZCAwO1xuXHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAq
IFRoaXMgaXMgdGhlIHVwZGF0ZSBxdWV1ZSB1c2VkIGZvciBzZXJ2ZXIgcmVuZGVyaW5nLlxuXHQg
KiBJdCBkZWxlZ2F0ZXMgdG8gUmVhY3RVcGRhdGVRdWV1ZSB3aGlsZSBzZXJ2ZXIgcmVuZGVyaW5n
IGlzIGluIHByb2dyZXNzIGFuZFxuXHQgKiBzd2l0Y2hlcyB0byBSZWFjdE5vb3BVcGRhdGVRdWV1
ZSBhZnRlciB0aGUgdHJhbnNhY3Rpb24gaGFzIGNvbXBsZXRlZC5cblx0ICogQGNsYXNzIFJlYWN0
U2VydmVyVXBkYXRlUXVldWVcblx0ICogQHBhcmFtIHtUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25c
blx0ICovXG5cdFxuXHR2YXIgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZSA9IGZ1bmN0aW9uICgpIHtc
blx0ICBmdW5jdGlvbiBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlKHRyYW5zYWN0aW9uKSB7XG5cdCAg
ICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZSk7XG5cdFxuXHQg
ICAgdGhpcy50cmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uO1xuXHQgIH1cblx0XG5cdCAgLyoqXG5c
dCAgICogQ2hlY2tzIHdoZXRoZXIgb3Igbm90IHRoaXMgY29tcG9zaXRlIGNvbXBvbmVudCBpcyBt
b3VudGVkLlxuXHQgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGlu
c3RhbmNlIHdlIHdhbnQgdG8gdGVzdC5cblx0ICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlm
IG1vdW50ZWQsIGZhbHNlIG90aGVyd2lzZS5cblx0ICAgKiBAcHJvdGVjdGVkXG5cdCAgICogQGZp
bmFsXG5cdCAgICovXG5cdFxuXHRcblx0ICBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlLnByb3RvdHlw
ZS5pc01vdW50ZWQgPSBmdW5jdGlvbiBpc01vdW50ZWQocHVibGljSW5zdGFuY2UpIHtcblx0ICAg
IHJldHVybiBmYWxzZTtcblx0ICB9O1xuXHRcblx0ICAvKipcblx0ICAgKiBFbnF1ZXVlIGEgY2Fs
bGJhY2sgdGhhdCB3aWxsIGJlIGV4ZWN1dGVkIGFmdGVyIGFsbCB0aGUgcGVuZGluZyB1cGRhdGVz
XG5cdCAgICogaGF2ZSBwcm9jZXNzZWQuXG5cdCAgICpcblx0ICAgKiBAcGFyYW0ge1JlYWN0Q2xh
c3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0byB1c2UgYXMgYHRoaXNgIGNvbnRleHQu
XG5cdCAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxlZCBhZnRlciBzdGF0ZSBp
cyB1cGRhdGVkLlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHRcblx0XG5cdCAgUmVhY3RT
ZXJ2ZXJVcGRhdGVRdWV1ZS5wcm90b3R5cGUuZW5xdWV1ZUNhbGxiYWNrID0gZnVuY3Rpb24gZW5x
dWV1ZUNhbGxiYWNrKHB1YmxpY0luc3RhbmNlLCBjYWxsYmFjaywgY2FsbGVyTmFtZSkge1xuXHQg
ICAgaWYgKHRoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCkpIHtcblx0ICAgICAgUmVh
Y3RVcGRhdGVRdWV1ZS5lbnF1ZXVlQ2FsbGJhY2socHVibGljSW5zdGFuY2UsIGNhbGxiYWNrLCBj
YWxsZXJOYW1lKTtcblx0ICAgIH1cblx0ICB9O1xuXHRcblx0ICAvKipcblx0ICAgKiBGb3JjZXMg
YW4gdXBkYXRlLiBUaGlzIHNob3VsZCBvbmx5IGJlIGludm9rZWQgd2hlbiBpdCBpcyBrbm93biB3
aXRoXG5cdCAgICogY2VydGFpbnR5IHRoYXQgd2UgYXJlICoqbm90KiogaW4gYSBET00gdHJhbnNh
Y3Rpb24uXG5cdCAgICpcblx0ICAgKiBZb3UgbWF5IHdhbnQgdG8gY2FsbCB0aGlzIHdoZW4geW91
IGtub3cgdGhhdCBzb21lIGRlZXBlciBhc3BlY3Qgb2YgdGhlXG5cdCAgICogY29tcG9uZW50J3Mg
c3RhdGUgaGFzIGNoYW5nZWQgYnV0IGBzZXRTdGF0ZWAgd2FzIG5vdCBjYWxsZWQuXG5cdCAgICpc
blx0ICAgKiBUaGlzIHdpbGwgbm90IGludm9rZSBgc2hvdWxkQ29tcG9uZW50VXBkYXRlYCwgYnV0
IGl0IHdpbGwgaW52b2tlXG5cdCAgICogYGNvbXBvbmVudFdpbGxVcGRhdGVgIGFuZCBgY29tcG9u
ZW50RGlkVXBkYXRlYC5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGlj
SW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuXHQgICAqIEBpbnRl
cm5hbFxuXHQgICAqL1xuXHRcblx0XG5cdCAgUmVhY3RTZXJ2ZXJVcGRhdGVRdWV1ZS5wcm90b3R5
cGUuZW5xdWV1ZUZvcmNlVXBkYXRlID0gZnVuY3Rpb24gZW5xdWV1ZUZvcmNlVXBkYXRlKHB1Ymxp
Y0luc3RhbmNlKSB7XG5cdCAgICBpZiAodGhpcy50cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24o
KSkge1xuXHQgICAgICBSZWFjdFVwZGF0ZVF1ZXVlLmVucXVldWVGb3JjZVVwZGF0ZShwdWJsaWNJ
bnN0YW5jZSk7XG5cdCAgICB9IGVsc2Uge1xuXHQgICAgICB3YXJuTm9vcChwdWJsaWNJbnN0YW5j
ZSwgJ2ZvcmNlVXBkYXRlJyk7XG5cdCAgICB9XG5cdCAgfTtcblx0XG5cdCAgLyoqXG5cdCAgICog
UmVwbGFjZXMgYWxsIG9mIHRoZSBzdGF0ZS4gQWx3YXlzIHVzZSB0aGlzIG9yIGBzZXRTdGF0ZWAg
dG8gbXV0YXRlIHN0YXRlLlxuXHQgICAqIFlvdSBzaG91bGQgdHJlYXQgYHRoaXMuc3RhdGVgIGFz
IGltbXV0YWJsZS5cblx0ICAgKlxuXHQgICAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGB0
aGlzLnN0YXRlYCB3aWxsIGJlIGltbWVkaWF0ZWx5IHVwZGF0ZWQsIHNvXG5cdCAgICogYWNjZXNz
aW5nIGB0aGlzLnN0YXRlYCBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kIG1heSByZXR1cm4gdGhl
IG9sZCB2YWx1ZS5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5z
dGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuXHQgICAqIEBwYXJhbSB7
b2JqZWN0fGZ1bmN0aW9ufSBjb21wbGV0ZVN0YXRlIE5leHQgc3RhdGUuXG5cdCAgICogQGludGVy
bmFsXG5cdCAgICovXG5cdFxuXHRcblx0ICBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlLnByb3RvdHlw
ZS5lbnF1ZXVlUmVwbGFjZVN0YXRlID0gZnVuY3Rpb24gZW5xdWV1ZVJlcGxhY2VTdGF0ZShwdWJs
aWNJbnN0YW5jZSwgY29tcGxldGVTdGF0ZSkge1xuXHQgICAgaWYgKHRoaXMudHJhbnNhY3Rpb24u
aXNJblRyYW5zYWN0aW9uKCkpIHtcblx0ICAgICAgUmVhY3RVcGRhdGVRdWV1ZS5lbnF1ZXVlUmVw
bGFjZVN0YXRlKHB1YmxpY0luc3RhbmNlLCBjb21wbGV0ZVN0YXRlKTtcblx0ICAgIH0gZWxzZSB7
XG5cdCAgICAgIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCAncmVwbGFjZVN0YXRlJyk7XG5cdCAg
ICB9XG5cdCAgfTtcblx0XG5cdCAgLyoqXG5cdCAgICogU2V0cyBhIHN1YnNldCBvZiB0aGUgc3Rh
dGUuIFRoaXMgb25seSBleGlzdHMgYmVjYXVzZSBfcGVuZGluZ1N0YXRlIGlzXG5cdCAgICogaW50
ZXJuYWwuIFRoaXMgcHJvdmlkZXMgYSBtZXJnaW5nIHN0cmF0ZWd5IHRoYXQgaXMgbm90IGF2YWls
YWJsZSB0byBkZWVwXG5cdCAgICogcHJvcGVydGllcyB3aGljaCBpcyBjb25mdXNpbmcuIFRPRE86
IEV4cG9zZSBwZW5kaW5nU3RhdGUgb3IgZG9uJ3QgdXNlIGl0XG5cdCAgICogZHVyaW5nIHRoZSBt
ZXJnZS5cblx0ICAgKlxuXHQgICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2Ug
VGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuXHQgICAqIEBwYXJhbSB7b2JqZWN0
fGZ1bmN0aW9ufSBwYXJ0aWFsU3RhdGUgTmV4dCBwYXJ0aWFsIHN0YXRlIHRvIGJlIG1lcmdlZCB3
aXRoIHN0YXRlLlxuXHQgICAqIEBpbnRlcm5hbFxuXHQgICAqL1xuXHRcblx0XG5cdCAgUmVhY3RT
ZXJ2ZXJVcGRhdGVRdWV1ZS5wcm90b3R5cGUuZW5xdWV1ZVNldFN0YXRlID0gZnVuY3Rpb24gZW5x
dWV1ZVNldFN0YXRlKHB1YmxpY0luc3RhbmNlLCBwYXJ0aWFsU3RhdGUpIHtcblx0ICAgIGlmICh0
aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpKSB7XG5cdCAgICAgIFJlYWN0VXBkYXRl
UXVldWUuZW5xdWV1ZVNldFN0YXRlKHB1YmxpY0luc3RhbmNlLCBwYXJ0aWFsU3RhdGUpO1xuXHQg
ICAgfSBlbHNlIHtcblx0ICAgICAgd2Fybk5vb3AocHVibGljSW5zdGFuY2UsICdzZXRTdGF0ZScp
O1xuXHQgICAgfVxuXHQgIH07XG5cdFxuXHQgIHJldHVybiBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVl
O1xuXHR9KCk7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0U2VydmVyVXBkYXRlUXVldWU7
XG5cbi8qKiovIH0sXG4vKiAxNjMgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykg
e1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
XHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0
XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gJzE1LjYuMSc7XG5cbi8q
KiovIH0sXG4vKiAxNjQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5c
dC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5T
RSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRp
dGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1
c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBOUyA9IHtcblx0ICB4bGluazogJ2h0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGxpbmsnLFxuXHQgIHhtbDogJ2h0dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25h
bWVzcGFjZSdcblx0fTtcblx0XG5cdC8vIFdlIHVzZSBhdHRyaWJ1dGVzIGZvciBldmVyeXRoaW5n
IFNWRyBzbyBsZXQncyBhdm9pZCBzb21lIGR1cGxpY2F0aW9uIGFuZCBydW5cblx0Ly8gY29kZSBp
bnN0ZWFkLlxuXHQvLyBUaGUgZm9sbG93aW5nIGFyZSBhbGwgc3BlY2lmaWVkIGluIHRoZSBIVE1M
IGNvbmZpZyBhbHJlYWR5IHNvIHdlIGV4Y2x1ZGUgaGVyZS5cblx0Ly8gLSBjbGFzcyAoYXMgY2xh
c3NOYW1lKVxuXHQvLyAtIGNvbG9yXG5cdC8vIC0gaGVpZ2h0XG5cdC8vIC0gaWRcblx0Ly8gLSBs
YW5nXG5cdC8vIC0gbWF4XG5cdC8vIC0gbWVkaWFcblx0Ly8gLSBtZXRob2Rcblx0Ly8gLSBtaW5c
blx0Ly8gLSBuYW1lXG5cdC8vIC0gc3R5bGVcblx0Ly8gLSB0YXJnZXRcblx0Ly8gLSB0eXBlXG5c
dC8vIC0gd2lkdGhcblx0dmFyIEFUVFJTID0ge1xuXHQgIGFjY2VudEhlaWdodDogJ2FjY2VudC1o
ZWlnaHQnLFxuXHQgIGFjY3VtdWxhdGU6IDAsXG5cdCAgYWRkaXRpdmU6IDAsXG5cdCAgYWxpZ25t
ZW50QmFzZWxpbmU6ICdhbGlnbm1lbnQtYmFzZWxpbmUnLFxuXHQgIGFsbG93UmVvcmRlcjogJ2Fs
bG93UmVvcmRlcicsXG5cdCAgYWxwaGFiZXRpYzogMCxcblx0ICBhbXBsaXR1ZGU6IDAsXG5cdCAg
YXJhYmljRm9ybTogJ2FyYWJpYy1mb3JtJyxcblx0ICBhc2NlbnQ6IDAsXG5cdCAgYXR0cmlidXRl
TmFtZTogJ2F0dHJpYnV0ZU5hbWUnLFxuXHQgIGF0dHJpYnV0ZVR5cGU6ICdhdHRyaWJ1dGVUeXBl
Jyxcblx0ICBhdXRvUmV2ZXJzZTogJ2F1dG9SZXZlcnNlJyxcblx0ICBhemltdXRoOiAwLFxuXHQg
IGJhc2VGcmVxdWVuY3k6ICdiYXNlRnJlcXVlbmN5Jyxcblx0ICBiYXNlUHJvZmlsZTogJ2Jhc2VQ
cm9maWxlJyxcblx0ICBiYXNlbGluZVNoaWZ0OiAnYmFzZWxpbmUtc2hpZnQnLFxuXHQgIGJib3g6
IDAsXG5cdCAgYmVnaW46IDAsXG5cdCAgYmlhczogMCxcblx0ICBieTogMCxcblx0ICBjYWxjTW9k
ZTogJ2NhbGNNb2RlJyxcblx0ICBjYXBIZWlnaHQ6ICdjYXAtaGVpZ2h0Jyxcblx0ICBjbGlwOiAw
LFxuXHQgIGNsaXBQYXRoOiAnY2xpcC1wYXRoJyxcblx0ICBjbGlwUnVsZTogJ2NsaXAtcnVsZScs
XG5cdCAgY2xpcFBhdGhVbml0czogJ2NsaXBQYXRoVW5pdHMnLFxuXHQgIGNvbG9ySW50ZXJwb2xh
dGlvbjogJ2NvbG9yLWludGVycG9sYXRpb24nLFxuXHQgIGNvbG9ySW50ZXJwb2xhdGlvbkZpbHRl
cnM6ICdjb2xvci1pbnRlcnBvbGF0aW9uLWZpbHRlcnMnLFxuXHQgIGNvbG9yUHJvZmlsZTogJ2Nv
bG9yLXByb2ZpbGUnLFxuXHQgIGNvbG9yUmVuZGVyaW5nOiAnY29sb3ItcmVuZGVyaW5nJyxcblx0
ICBjb250ZW50U2NyaXB0VHlwZTogJ2NvbnRlbnRTY3JpcHRUeXBlJyxcblx0ICBjb250ZW50U3R5
bGVUeXBlOiAnY29udGVudFN0eWxlVHlwZScsXG5cdCAgY3Vyc29yOiAwLFxuXHQgIGN4OiAwLFxu
XHQgIGN5OiAwLFxuXHQgIGQ6IDAsXG5cdCAgZGVjZWxlcmF0ZTogMCxcblx0ICBkZXNjZW50OiAw
LFxuXHQgIGRpZmZ1c2VDb25zdGFudDogJ2RpZmZ1c2VDb25zdGFudCcsXG5cdCAgZGlyZWN0aW9u
OiAwLFxuXHQgIGRpc3BsYXk6IDAsXG5cdCAgZGl2aXNvcjogMCxcblx0ICBkb21pbmFudEJhc2Vs
aW5lOiAnZG9taW5hbnQtYmFzZWxpbmUnLFxuXHQgIGR1cjogMCxcblx0ICBkeDogMCxcblx0ICBk
eTogMCxcblx0ICBlZGdlTW9kZTogJ2VkZ2VNb2RlJyxcblx0ICBlbGV2YXRpb246IDAsXG5cdCAg
ZW5hYmxlQmFja2dyb3VuZDogJ2VuYWJsZS1iYWNrZ3JvdW5kJyxcblx0ICBlbmQ6IDAsXG5cdCAg
ZXhwb25lbnQ6IDAsXG5cdCAgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDogJ2V4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQnLFxuXHQgIGZpbGw6IDAsXG5cdCAgZmlsbE9wYWNpdHk6ICdmaWxsLW9w
YWNpdHknLFxuXHQgIGZpbGxSdWxlOiAnZmlsbC1ydWxlJyxcblx0ICBmaWx0ZXI6IDAsXG5cdCAg
ZmlsdGVyUmVzOiAnZmlsdGVyUmVzJyxcblx0ICBmaWx0ZXJVbml0czogJ2ZpbHRlclVuaXRzJyxc
blx0ICBmbG9vZENvbG9yOiAnZmxvb2QtY29sb3InLFxuXHQgIGZsb29kT3BhY2l0eTogJ2Zsb29k
LW9wYWNpdHknLFxuXHQgIGZvY3VzYWJsZTogMCxcblx0ICBmb250RmFtaWx5OiAnZm9udC1mYW1p
bHknLFxuXHQgIGZvbnRTaXplOiAnZm9udC1zaXplJyxcblx0ICBmb250U2l6ZUFkanVzdDogJ2Zv
bnQtc2l6ZS1hZGp1c3QnLFxuXHQgIGZvbnRTdHJldGNoOiAnZm9udC1zdHJldGNoJyxcblx0ICBm
b250U3R5bGU6ICdmb250LXN0eWxlJyxcblx0ICBmb250VmFyaWFudDogJ2ZvbnQtdmFyaWFudCcs
XG5cdCAgZm9udFdlaWdodDogJ2ZvbnQtd2VpZ2h0Jyxcblx0ICBmb3JtYXQ6IDAsXG5cdCAgZnJv
bTogMCxcblx0ICBmeDogMCxcblx0ICBmeTogMCxcblx0ICBnMTogMCxcblx0ICBnMjogMCxcblx0
ICBnbHlwaE5hbWU6ICdnbHlwaC1uYW1lJyxcblx0ICBnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRh
bDogJ2dseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwnLFxuXHQgIGdseXBoT3JpZW50YXRpb25W
ZXJ0aWNhbDogJ2dseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsJyxcblx0ICBnbHlwaFJlZjogJ2ds
eXBoUmVmJyxcblx0ICBncmFkaWVudFRyYW5zZm9ybTogJ2dyYWRpZW50VHJhbnNmb3JtJyxcblx0
ICBncmFkaWVudFVuaXRzOiAnZ3JhZGllbnRVbml0cycsXG5cdCAgaGFuZ2luZzogMCxcblx0ICBo
b3JpekFkdlg6ICdob3Jpei1hZHYteCcsXG5cdCAgaG9yaXpPcmlnaW5YOiAnaG9yaXotb3JpZ2lu
LXgnLFxuXHQgIGlkZW9ncmFwaGljOiAwLFxuXHQgIGltYWdlUmVuZGVyaW5nOiAnaW1hZ2UtcmVu
ZGVyaW5nJyxcblx0ICAnaW4nOiAwLFxuXHQgIGluMjogMCxcblx0ICBpbnRlcmNlcHQ6IDAsXG5c
dCAgazogMCxcblx0ICBrMTogMCxcblx0ICBrMjogMCxcblx0ICBrMzogMCxcblx0ICBrNDogMCxc
blx0ICBrZXJuZWxNYXRyaXg6ICdrZXJuZWxNYXRyaXgnLFxuXHQgIGtlcm5lbFVuaXRMZW5ndGg6
ICdrZXJuZWxVbml0TGVuZ3RoJyxcblx0ICBrZXJuaW5nOiAwLFxuXHQgIGtleVBvaW50czogJ2tl
eVBvaW50cycsXG5cdCAga2V5U3BsaW5lczogJ2tleVNwbGluZXMnLFxuXHQgIGtleVRpbWVzOiAn
a2V5VGltZXMnLFxuXHQgIGxlbmd0aEFkanVzdDogJ2xlbmd0aEFkanVzdCcsXG5cdCAgbGV0dGVy
U3BhY2luZzogJ2xldHRlci1zcGFjaW5nJyxcblx0ICBsaWdodGluZ0NvbG9yOiAnbGlnaHRpbmct
Y29sb3InLFxuXHQgIGxpbWl0aW5nQ29uZUFuZ2xlOiAnbGltaXRpbmdDb25lQW5nbGUnLFxuXHQg
IGxvY2FsOiAwLFxuXHQgIG1hcmtlckVuZDogJ21hcmtlci1lbmQnLFxuXHQgIG1hcmtlck1pZDog
J21hcmtlci1taWQnLFxuXHQgIG1hcmtlclN0YXJ0OiAnbWFya2VyLXN0YXJ0Jyxcblx0ICBtYXJr
ZXJIZWlnaHQ6ICdtYXJrZXJIZWlnaHQnLFxuXHQgIG1hcmtlclVuaXRzOiAnbWFya2VyVW5pdHMn
LFxuXHQgIG1hcmtlcldpZHRoOiAnbWFya2VyV2lkdGgnLFxuXHQgIG1hc2s6IDAsXG5cdCAgbWFz
a0NvbnRlbnRVbml0czogJ21hc2tDb250ZW50VW5pdHMnLFxuXHQgIG1hc2tVbml0czogJ21hc2tV
bml0cycsXG5cdCAgbWF0aGVtYXRpY2FsOiAwLFxuXHQgIG1vZGU6IDAsXG5cdCAgbnVtT2N0YXZl
czogJ251bU9jdGF2ZXMnLFxuXHQgIG9mZnNldDogMCxcblx0ICBvcGFjaXR5OiAwLFxuXHQgIG9w
ZXJhdG9yOiAwLFxuXHQgIG9yZGVyOiAwLFxuXHQgIG9yaWVudDogMCxcblx0ICBvcmllbnRhdGlv
bjogMCxcblx0ICBvcmlnaW46IDAsXG5cdCAgb3ZlcmZsb3c6IDAsXG5cdCAgb3ZlcmxpbmVQb3Np
dGlvbjogJ292ZXJsaW5lLXBvc2l0aW9uJyxcblx0ICBvdmVybGluZVRoaWNrbmVzczogJ292ZXJs
aW5lLXRoaWNrbmVzcycsXG5cdCAgcGFpbnRPcmRlcjogJ3BhaW50LW9yZGVyJyxcblx0ICBwYW5v
c2UxOiAncGFub3NlLTEnLFxuXHQgIHBhdGhMZW5ndGg6ICdwYXRoTGVuZ3RoJyxcblx0ICBwYXR0
ZXJuQ29udGVudFVuaXRzOiAncGF0dGVybkNvbnRlbnRVbml0cycsXG5cdCAgcGF0dGVyblRyYW5z
Zm9ybTogJ3BhdHRlcm5UcmFuc2Zvcm0nLFxuXHQgIHBhdHRlcm5Vbml0czogJ3BhdHRlcm5Vbml0
cycsXG5cdCAgcG9pbnRlckV2ZW50czogJ3BvaW50ZXItZXZlbnRzJyxcblx0ICBwb2ludHM6IDAs
XG5cdCAgcG9pbnRzQXRYOiAncG9pbnRzQXRYJyxcblx0ICBwb2ludHNBdFk6ICdwb2ludHNBdFkn
LFxuXHQgIHBvaW50c0F0WjogJ3BvaW50c0F0WicsXG5cdCAgcHJlc2VydmVBbHBoYTogJ3ByZXNl
cnZlQWxwaGEnLFxuXHQgIHByZXNlcnZlQXNwZWN0UmF0aW86ICdwcmVzZXJ2ZUFzcGVjdFJhdGlv
Jyxcblx0ICBwcmltaXRpdmVVbml0czogJ3ByaW1pdGl2ZVVuaXRzJyxcblx0ICByOiAwLFxuXHQg
IHJhZGl1czogMCxcblx0ICByZWZYOiAncmVmWCcsXG5cdCAgcmVmWTogJ3JlZlknLFxuXHQgIHJl
bmRlcmluZ0ludGVudDogJ3JlbmRlcmluZy1pbnRlbnQnLFxuXHQgIHJlcGVhdENvdW50OiAncmVw
ZWF0Q291bnQnLFxuXHQgIHJlcGVhdER1cjogJ3JlcGVhdER1cicsXG5cdCAgcmVxdWlyZWRFeHRl
bnNpb25zOiAncmVxdWlyZWRFeHRlbnNpb25zJyxcblx0ICByZXF1aXJlZEZlYXR1cmVzOiAncmVx
dWlyZWRGZWF0dXJlcycsXG5cdCAgcmVzdGFydDogMCxcblx0ICByZXN1bHQ6IDAsXG5cdCAgcm90
YXRlOiAwLFxuXHQgIHJ4OiAwLFxuXHQgIHJ5OiAwLFxuXHQgIHNjYWxlOiAwLFxuXHQgIHNlZWQ6
IDAsXG5cdCAgc2hhcGVSZW5kZXJpbmc6ICdzaGFwZS1yZW5kZXJpbmcnLFxuXHQgIHNsb3BlOiAw
LFxuXHQgIHNwYWNpbmc6IDAsXG5cdCAgc3BlY3VsYXJDb25zdGFudDogJ3NwZWN1bGFyQ29uc3Rh
bnQnLFxuXHQgIHNwZWN1bGFyRXhwb25lbnQ6ICdzcGVjdWxhckV4cG9uZW50Jyxcblx0ICBzcGVl
ZDogMCxcblx0ICBzcHJlYWRNZXRob2Q6ICdzcHJlYWRNZXRob2QnLFxuXHQgIHN0YXJ0T2Zmc2V0
OiAnc3RhcnRPZmZzZXQnLFxuXHQgIHN0ZERldmlhdGlvbjogJ3N0ZERldmlhdGlvbicsXG5cdCAg
c3RlbWg6IDAsXG5cdCAgc3RlbXY6IDAsXG5cdCAgc3RpdGNoVGlsZXM6ICdzdGl0Y2hUaWxlcycs
XG5cdCAgc3RvcENvbG9yOiAnc3RvcC1jb2xvcicsXG5cdCAgc3RvcE9wYWNpdHk6ICdzdG9wLW9w
YWNpdHknLFxuXHQgIHN0cmlrZXRocm91Z2hQb3NpdGlvbjogJ3N0cmlrZXRocm91Z2gtcG9zaXRp
b24nLFxuXHQgIHN0cmlrZXRocm91Z2hUaGlja25lc3M6ICdzdHJpa2V0aHJvdWdoLXRoaWNrbmVz
cycsXG5cdCAgc3RyaW5nOiAwLFxuXHQgIHN0cm9rZTogMCxcblx0ICBzdHJva2VEYXNoYXJyYXk6
ICdzdHJva2UtZGFzaGFycmF5Jyxcblx0ICBzdHJva2VEYXNob2Zmc2V0OiAnc3Ryb2tlLWRhc2hv
ZmZzZXQnLFxuXHQgIHN0cm9rZUxpbmVjYXA6ICdzdHJva2UtbGluZWNhcCcsXG5cdCAgc3Ryb2tl
TGluZWpvaW46ICdzdHJva2UtbGluZWpvaW4nLFxuXHQgIHN0cm9rZU1pdGVybGltaXQ6ICdzdHJv
a2UtbWl0ZXJsaW1pdCcsXG5cdCAgc3Ryb2tlT3BhY2l0eTogJ3N0cm9rZS1vcGFjaXR5Jyxcblx0
ICBzdHJva2VXaWR0aDogJ3N0cm9rZS13aWR0aCcsXG5cdCAgc3VyZmFjZVNjYWxlOiAnc3VyZmFj
ZVNjYWxlJyxcblx0ICBzeXN0ZW1MYW5ndWFnZTogJ3N5c3RlbUxhbmd1YWdlJyxcblx0ICB0YWJs
ZVZhbHVlczogJ3RhYmxlVmFsdWVzJyxcblx0ICB0YXJnZXRYOiAndGFyZ2V0WCcsXG5cdCAgdGFy
Z2V0WTogJ3RhcmdldFknLFxuXHQgIHRleHRBbmNob3I6ICd0ZXh0LWFuY2hvcicsXG5cdCAgdGV4
dERlY29yYXRpb246ICd0ZXh0LWRlY29yYXRpb24nLFxuXHQgIHRleHRSZW5kZXJpbmc6ICd0ZXh0
LXJlbmRlcmluZycsXG5cdCAgdGV4dExlbmd0aDogJ3RleHRMZW5ndGgnLFxuXHQgIHRvOiAwLFxu
XHQgIHRyYW5zZm9ybTogMCxcblx0ICB1MTogMCxcblx0ICB1MjogMCxcblx0ICB1bmRlcmxpbmVQ
b3NpdGlvbjogJ3VuZGVybGluZS1wb3NpdGlvbicsXG5cdCAgdW5kZXJsaW5lVGhpY2tuZXNzOiAn
dW5kZXJsaW5lLXRoaWNrbmVzcycsXG5cdCAgdW5pY29kZTogMCxcblx0ICB1bmljb2RlQmlkaTog
J3VuaWNvZGUtYmlkaScsXG5cdCAgdW5pY29kZVJhbmdlOiAndW5pY29kZS1yYW5nZScsXG5cdCAg
dW5pdHNQZXJFbTogJ3VuaXRzLXBlci1lbScsXG5cdCAgdkFscGhhYmV0aWM6ICd2LWFscGhhYmV0
aWMnLFxuXHQgIHZIYW5naW5nOiAndi1oYW5naW5nJyxcblx0ICB2SWRlb2dyYXBoaWM6ICd2LWlk
ZW9ncmFwaGljJyxcblx0ICB2TWF0aGVtYXRpY2FsOiAndi1tYXRoZW1hdGljYWwnLFxuXHQgIHZh
bHVlczogMCxcblx0ICB2ZWN0b3JFZmZlY3Q6ICd2ZWN0b3ItZWZmZWN0Jyxcblx0ICB2ZXJzaW9u
OiAwLFxuXHQgIHZlcnRBZHZZOiAndmVydC1hZHYteScsXG5cdCAgdmVydE9yaWdpblg6ICd2ZXJ0
LW9yaWdpbi14Jyxcblx0ICB2ZXJ0T3JpZ2luWTogJ3ZlcnQtb3JpZ2luLXknLFxuXHQgIHZpZXdC
b3g6ICd2aWV3Qm94Jyxcblx0ICB2aWV3VGFyZ2V0OiAndmlld1RhcmdldCcsXG5cdCAgdmlzaWJp
bGl0eTogMCxcblx0ICB3aWR0aHM6IDAsXG5cdCAgd29yZFNwYWNpbmc6ICd3b3JkLXNwYWNpbmcn
LFxuXHQgIHdyaXRpbmdNb2RlOiAnd3JpdGluZy1tb2RlJyxcblx0ICB4OiAwLFxuXHQgIHhIZWln
aHQ6ICd4LWhlaWdodCcsXG5cdCAgeDE6IDAsXG5cdCAgeDI6IDAsXG5cdCAgeENoYW5uZWxTZWxl
Y3RvcjogJ3hDaGFubmVsU2VsZWN0b3InLFxuXHQgIHhsaW5rQWN0dWF0ZTogJ3hsaW5rOmFjdHVh
dGUnLFxuXHQgIHhsaW5rQXJjcm9sZTogJ3hsaW5rOmFyY3JvbGUnLFxuXHQgIHhsaW5rSHJlZjog
J3hsaW5rOmhyZWYnLFxuXHQgIHhsaW5rUm9sZTogJ3hsaW5rOnJvbGUnLFxuXHQgIHhsaW5rU2hv
dzogJ3hsaW5rOnNob3cnLFxuXHQgIHhsaW5rVGl0bGU6ICd4bGluazp0aXRsZScsXG5cdCAgeGxp
bmtUeXBlOiAneGxpbms6dHlwZScsXG5cdCAgeG1sQmFzZTogJ3htbDpiYXNlJyxcblx0ICB4bWxu
czogMCxcblx0ICB4bWxuc1hsaW5rOiAneG1sbnM6eGxpbmsnLFxuXHQgIHhtbExhbmc6ICd4bWw6
bGFuZycsXG5cdCAgeG1sU3BhY2U6ICd4bWw6c3BhY2UnLFxuXHQgIHk6IDAsXG5cdCAgeTE6IDAs
XG5cdCAgeTI6IDAsXG5cdCAgeUNoYW5uZWxTZWxlY3RvcjogJ3lDaGFubmVsU2VsZWN0b3InLFxu
XHQgIHo6IDAsXG5cdCAgem9vbUFuZFBhbjogJ3pvb21BbmRQYW4nXG5cdH07XG5cdFxuXHR2YXIg
U1ZHRE9NUHJvcGVydHlDb25maWcgPSB7XG5cdCAgUHJvcGVydGllczoge30sXG5cdCAgRE9NQXR0
cmlidXRlTmFtZXNwYWNlczoge1xuXHQgICAgeGxpbmtBY3R1YXRlOiBOUy54bGluayxcblx0ICAg
IHhsaW5rQXJjcm9sZTogTlMueGxpbmssXG5cdCAgICB4bGlua0hyZWY6IE5TLnhsaW5rLFxuXHQg
ICAgeGxpbmtSb2xlOiBOUy54bGluayxcblx0ICAgIHhsaW5rU2hvdzogTlMueGxpbmssXG5cdCAg
ICB4bGlua1RpdGxlOiBOUy54bGluayxcblx0ICAgIHhsaW5rVHlwZTogTlMueGxpbmssXG5cdCAg
ICB4bWxCYXNlOiBOUy54bWwsXG5cdCAgICB4bWxMYW5nOiBOUy54bWwsXG5cdCAgICB4bWxTcGFj
ZTogTlMueG1sXG5cdCAgfSxcblx0ICBET01BdHRyaWJ1dGVOYW1lczoge31cblx0fTtcblx0XG5c
dE9iamVjdC5rZXlzKEFUVFJTKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcblx0ICBTVkdET01Q
cm9wZXJ0eUNvbmZpZy5Qcm9wZXJ0aWVzW2tleV0gPSAwO1xuXHQgIGlmIChBVFRSU1trZXldKSB7
XG5cdCAgICBTVkdET01Qcm9wZXJ0eUNvbmZpZy5ET01BdHRyaWJ1dGVOYW1lc1trZXldID0gQVRU
UlNba2V5XTtcblx0ICB9XG5cdH0pO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBTVkdET01Qcm9w
ZXJ0eUNvbmZpZztcblxuLyoqKi8gfSxcbi8qIDE2NSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0
dmFyIEV2ZW50UHJvcGFnYXRvcnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIwKTtcblx0dmFyIEV4
ZWN1dGlvbkVudmlyb25tZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2KTtcblx0dmFyIFJlYWN0
RE9NQ29tcG9uZW50VHJlZSA9IF9fd2VicGFja19yZXF1aXJlX18oNSk7XG5cdHZhciBSZWFjdElu
cHV0U2VsZWN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXyg2Nik7XG5cdHZhciBTeW50aGV0aWNF
dmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMTApO1xuXHRcblx0dmFyIGdldEFjdGl2ZUVsZW1l
bnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUzKTtcblx0dmFyIGlzVGV4dElucHV0RWxlbWVudCA9
IF9fd2VicGFja19yZXF1aXJlX18oNzYpO1xuXHR2YXIgc2hhbGxvd0VxdWFsID0gX193ZWJwYWNr
X3JlcXVpcmVfXygzMik7XG5cdFxuXHR2YXIgc2tpcFNlbGVjdGlvbkNoYW5nZUV2ZW50ID0gRXhl
Y3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NICYmICdkb2N1bWVudE1vZGUnIGluIGRvY3VtZW50
ICYmIGRvY3VtZW50LmRvY3VtZW50TW9kZSA8PSAxMTtcblx0XG5cdHZhciBldmVudFR5cGVzID0g
e1xuXHQgIHNlbGVjdDoge1xuXHQgICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcblx0ICAg
ICAgYnViYmxlZDogJ29uU2VsZWN0Jyxcblx0ICAgICAgY2FwdHVyZWQ6ICdvblNlbGVjdENhcHR1
cmUnXG5cdCAgICB9LFxuXHQgICAgZGVwZW5kZW5jaWVzOiBbJ3RvcEJsdXInLCAndG9wQ29udGV4
dE1lbnUnLCAndG9wRm9jdXMnLCAndG9wS2V5RG93bicsICd0b3BLZXlVcCcsICd0b3BNb3VzZURv
d24nLCAndG9wTW91c2VVcCcsICd0b3BTZWxlY3Rpb25DaGFuZ2UnXVxuXHQgIH1cblx0fTtcblx0
XG5cdHZhciBhY3RpdmVFbGVtZW50ID0gbnVsbDtcblx0dmFyIGFjdGl2ZUVsZW1lbnRJbnN0ID0g
bnVsbDtcblx0dmFyIGxhc3RTZWxlY3Rpb24gPSBudWxsO1xuXHR2YXIgbW91c2VEb3duID0gZmFs
c2U7XG5cdFxuXHQvLyBUcmFjayB3aGV0aGVyIGEgbGlzdGVuZXIgZXhpc3RzIGZvciB0aGlzIHBs
dWdpbi4gSWYgbm9uZSBleGlzdCwgd2UgZG9cblx0Ly8gbm90IGV4dHJhY3QgZXZlbnRzLiBTZWUg
IzM2MzkuXG5cdHZhciBoYXNMaXN0ZW5lciA9IGZhbHNlO1xuXHRcblx0LyoqXG5cdCAqIEdldCBh
biBvYmplY3Qgd2hpY2ggaXMgYSB1bmlxdWUgcmVwcmVzZW50YXRpb24gb2YgdGhlIGN1cnJlbnQg
c2VsZWN0aW9uLlxuXHQgKlxuXHQgKiBUaGUgcmV0dXJuIHZhbHVlIHdpbGwgbm90IGJlIGNvbnNp
c3RlbnQgYWNyb3NzIG5vZGVzIG9yIGJyb3dzZXJzLCBidXRcblx0ICogdHdvIGlkZW50aWNhbCBz
ZWxlY3Rpb25zIG9uIHRoZSBzYW1lIG5vZGUgd2lsbCByZXR1cm4gaWRlbnRpY2FsIG9iamVjdHMu
XG5cdCAqXG5cdCAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuXHQgKiBAcmV0dXJuIHtvYmpl
Y3R9XG5cdCAqL1xuXHRmdW5jdGlvbiBnZXRTZWxlY3Rpb24obm9kZSkge1xuXHQgIGlmICgnc2Vs
ZWN0aW9uU3RhcnQnIGluIG5vZGUgJiYgUmVhY3RJbnB1dFNlbGVjdGlvbi5oYXNTZWxlY3Rpb25D
YXBhYmlsaXRpZXMobm9kZSkpIHtcblx0ICAgIHJldHVybiB7XG5cdCAgICAgIHN0YXJ0OiBub2Rl
LnNlbGVjdGlvblN0YXJ0LFxuXHQgICAgICBlbmQ6IG5vZGUuc2VsZWN0aW9uRW5kXG5cdCAgICB9
O1xuXHQgIH0gZWxzZSBpZiAod2luZG93LmdldFNlbGVjdGlvbikge1xuXHQgICAgdmFyIHNlbGVj
dGlvbiA9IHdpbmRvdy5nZXRTZWxlY3Rpb24oKTtcblx0ICAgIHJldHVybiB7XG5cdCAgICAgIGFu
Y2hvck5vZGU6IHNlbGVjdGlvbi5hbmNob3JOb2RlLFxuXHQgICAgICBhbmNob3JPZmZzZXQ6IHNl
bGVjdGlvbi5hbmNob3JPZmZzZXQsXG5cdCAgICAgIGZvY3VzTm9kZTogc2VsZWN0aW9uLmZvY3Vz
Tm9kZSxcblx0ICAgICAgZm9jdXNPZmZzZXQ6IHNlbGVjdGlvbi5mb2N1c09mZnNldFxuXHQgICAg
fTtcblx0ICB9IGVsc2UgaWYgKGRvY3VtZW50LnNlbGVjdGlvbikge1xuXHQgICAgdmFyIHJhbmdl
ID0gZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCk7XG5cdCAgICByZXR1cm4ge1xuXHQg
ICAgICBwYXJlbnRFbGVtZW50OiByYW5nZS5wYXJlbnRFbGVtZW50KCksXG5cdCAgICAgIHRleHQ6
IHJhbmdlLnRleHQsXG5cdCAgICAgIHRvcDogcmFuZ2UuYm91bmRpbmdUb3AsXG5cdCAgICAgIGxl
ZnQ6IHJhbmdlLmJvdW5kaW5nTGVmdFxuXHQgICAgfTtcblx0ICB9XG5cdH1cblx0XG5cdC8qKlxu
XHQgKiBQb2xsIHNlbGVjdGlvbiB0byBzZWUgd2hldGhlciBpdCdzIGNoYW5nZWQuXG5cdCAqXG5c
dCAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudFxuXHQgKiBAcmV0dXJuIHs/U3ludGhldGlj
RXZlbnR9XG5cdCAqL1xuXHRmdW5jdGlvbiBjb25zdHJ1Y3RTZWxlY3RFdmVudChuYXRpdmVFdmVu
dCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcblx0ICAvLyBFbnN1cmUgd2UgaGF2ZSB0aGUgcmlnaHQg
ZWxlbWVudCwgYW5kIHRoYXQgdGhlIHVzZXIgaXMgbm90IGRyYWdnaW5nIGFcblx0ICAvLyBzZWxl
Y3Rpb24gKHRoaXMgbWF0Y2hlcyBuYXRpdmUgYHNlbGVjdGAgZXZlbnQgYmVoYXZpb3IpLiBJbiBI
VE1MNSwgc2VsZWN0XG5cdCAgLy8gZmlyZXMgb25seSBvbiBpbnB1dCBhbmQgdGV4dGFyZWEgdGh1
cyBpZiB0aGVyZSdzIG5vIGZvY3VzZWQgZWxlbWVudCB3ZVxuXHQgIC8vIHdvbid0IGRpc3BhdGNo
LlxuXHQgIGlmIChtb3VzZURvd24gfHwgYWN0aXZlRWxlbWVudCA9PSBudWxsIHx8IGFjdGl2ZUVs
ZW1lbnQgIT09IGdldEFjdGl2ZUVsZW1lbnQoKSkge1xuXHQgICAgcmV0dXJuIG51bGw7XG5cdCAg
fVxuXHRcblx0ICAvLyBPbmx5IGZpcmUgd2hlbiBzZWxlY3Rpb24gaGFzIGFjdHVhbGx5IGNoYW5n
ZWQuXG5cdCAgdmFyIGN1cnJlbnRTZWxlY3Rpb24gPSBnZXRTZWxlY3Rpb24oYWN0aXZlRWxlbWVu
dCk7XG5cdCAgaWYgKCFsYXN0U2VsZWN0aW9uIHx8ICFzaGFsbG93RXF1YWwobGFzdFNlbGVjdGlv
biwgY3VycmVudFNlbGVjdGlvbikpIHtcblx0ICAgIGxhc3RTZWxlY3Rpb24gPSBjdXJyZW50U2Vs
ZWN0aW9uO1xuXHRcblx0ICAgIHZhciBzeW50aGV0aWNFdmVudCA9IFN5bnRoZXRpY0V2ZW50Lmdl
dFBvb2xlZChldmVudFR5cGVzLnNlbGVjdCwgYWN0aXZlRWxlbWVudEluc3QsIG5hdGl2ZUV2ZW50
LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cdFxuXHQgICAgc3ludGhldGljRXZlbnQudHlwZSA9ICdz
ZWxlY3QnO1xuXHQgICAgc3ludGhldGljRXZlbnQudGFyZ2V0ID0gYWN0aXZlRWxlbWVudDtcblx0
XG5cdCAgICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoc3lu
dGhldGljRXZlbnQpO1xuXHRcblx0ICAgIHJldHVybiBzeW50aGV0aWNFdmVudDtcblx0ICB9XG5c
dFxuXHQgIHJldHVybiBudWxsO1xuXHR9XG5cdFxuXHQvKipcblx0ICogVGhpcyBwbHVnaW4gY3Jl
YXRlcyBhbiBgb25TZWxlY3RgIGV2ZW50IHRoYXQgbm9ybWFsaXplcyBzZWxlY3QgZXZlbnRzXG5c
dCAqIGFjcm9zcyBmb3JtIGVsZW1lbnRzLlxuXHQgKlxuXHQgKiBTdXBwb3J0ZWQgZWxlbWVudHMg
YXJlOlxuXHQgKiAtIGlucHV0IChzZWUgYGlzVGV4dElucHV0RWxlbWVudGApXG5cdCAqIC0gdGV4
dGFyZWFcblx0ICogLSBjb250ZW50RWRpdGFibGVcblx0ICpcblx0ICogVGhpcyBkaWZmZXJzIGZy
b20gbmF0aXZlIGJyb3dzZXIgaW1wbGVtZW50YXRpb25zIGluIHRoZSBmb2xsb3dpbmcgd2F5czpc
blx0ICogLSBGaXJlcyBvbiBjb250ZW50RWRpdGFibGUgZmllbGRzIGFzIHdlbGwgYXMgaW5wdXRz
LlxuXHQgKiAtIEZpcmVzIGZvciBjb2xsYXBzZWQgc2VsZWN0aW9uLlxuXHQgKiAtIEZpcmVzIGFm
dGVyIHVzZXIgaW5wdXQuXG5cdCAqL1xuXHR2YXIgU2VsZWN0RXZlbnRQbHVnaW4gPSB7XG5cdCAg
ZXZlbnRUeXBlczogZXZlbnRUeXBlcyxcblx0XG5cdCAgZXh0cmFjdEV2ZW50czogZnVuY3Rpb24g
KHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0
KSB7XG5cdCAgICBpZiAoIWhhc0xpc3RlbmVyKSB7XG5cdCAgICAgIHJldHVybiBudWxsO1xuXHQg
ICAgfVxuXHRcblx0ICAgIHZhciB0YXJnZXROb2RlID0gdGFyZ2V0SW5zdCA/IFJlYWN0RE9NQ29t
cG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKHRhcmdldEluc3QpIDogd2luZG93O1xuXHRc
blx0ICAgIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG5cdCAgICAgIC8vIFRyYWNrIHRoZSBpbnB1
dCBub2RlIHRoYXQgaGFzIGZvY3VzLlxuXHQgICAgICBjYXNlICd0b3BGb2N1cyc6XG5cdCAgICAg
ICAgaWYgKGlzVGV4dElucHV0RWxlbWVudCh0YXJnZXROb2RlKSB8fCB0YXJnZXROb2RlLmNvbnRl
bnRFZGl0YWJsZSA9PT0gJ3RydWUnKSB7XG5cdCAgICAgICAgICBhY3RpdmVFbGVtZW50ID0gdGFy
Z2V0Tm9kZTtcblx0ICAgICAgICAgIGFjdGl2ZUVsZW1lbnRJbnN0ID0gdGFyZ2V0SW5zdDtcblx0
ICAgICAgICAgIGxhc3RTZWxlY3Rpb24gPSBudWxsO1xuXHQgICAgICAgIH1cblx0ICAgICAgICBi
cmVhaztcblx0ICAgICAgY2FzZSAndG9wQmx1cic6XG5cdCAgICAgICAgYWN0aXZlRWxlbWVudCA9
IG51bGw7XG5cdCAgICAgICAgYWN0aXZlRWxlbWVudEluc3QgPSBudWxsO1xuXHQgICAgICAgIGxh
c3RTZWxlY3Rpb24gPSBudWxsO1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICAvLyBEb24ndCBm
aXJlIHRoZSBldmVudCB3aGlsZSB0aGUgdXNlciBpcyBkcmFnZ2luZy4gVGhpcyBtYXRjaGVzIHRo
ZVxuXHQgICAgICAvLyBzZW1hbnRpY3Mgb2YgdGhlIG5hdGl2ZSBzZWxlY3QgZXZlbnQuXG5cdCAg
ICAgIGNhc2UgJ3RvcE1vdXNlRG93bic6XG5cdCAgICAgICAgbW91c2VEb3duID0gdHJ1ZTtcblx0
ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSAndG9wQ29udGV4dE1lbnUnOlxuXHQgICAgICBj
YXNlICd0b3BNb3VzZVVwJzpcblx0ICAgICAgICBtb3VzZURvd24gPSBmYWxzZTtcblx0ICAgICAg
ICByZXR1cm4gY29uc3RydWN0U2VsZWN0RXZlbnQobmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFy
Z2V0KTtcblx0ICAgICAgLy8gQ2hyb21lIGFuZCBJRSBmaXJlIG5vbi1zdGFuZGFyZCBldmVudCB3
aGVuIHNlbGVjdGlvbiBpcyBjaGFuZ2VkIChhbmRcblx0ICAgICAgLy8gc29tZXRpbWVzIHdoZW4g
aXQgaGFzbid0KS4gSUUncyBldmVudCBmaXJlcyBvdXQgb2Ygb3JkZXIgd2l0aCByZXNwZWN0XG5c
dCAgICAgIC8vIHRvIGtleSBhbmQgaW5wdXQgZXZlbnRzIG9uIGRlbGV0aW9uLCBzbyB3ZSBkaXNj
YXJkIGl0LlxuXHQgICAgICAvL1xuXHQgICAgICAvLyBGaXJlZm94IGRvZXNuJ3Qgc3VwcG9ydCBz
ZWxlY3Rpb25jaGFuZ2UsIHNvIGNoZWNrIHNlbGVjdGlvbiBzdGF0dXNcblx0ICAgICAgLy8gYWZ0
ZXIgZWFjaCBrZXkgZW50cnkuIFRoZSBzZWxlY3Rpb24gY2hhbmdlcyBhZnRlciBrZXlkb3duIGFu
ZCBiZWZvcmVcblx0ICAgICAgLy8ga2V5dXAsIGJ1dCB3ZSBjaGVjayBvbiBrZXlkb3duIGFzIHdl
bGwgaW4gdGhlIGNhc2Ugb2YgaG9sZGluZyBkb3duIGFcblx0ICAgICAgLy8ga2V5LCB3aGVuIG11
bHRpcGxlIGtleWRvd24gZXZlbnRzIGFyZSBmaXJlZCBidXQgb25seSBvbmUga2V5dXAgaXMuXG5c
dCAgICAgIC8vIFRoaXMgaXMgYWxzbyBvdXIgYXBwcm9hY2ggZm9yIElFIGhhbmRsaW5nLCBmb3Ig
dGhlIHJlYXNvbiBhYm92ZS5cblx0ICAgICAgY2FzZSAndG9wU2VsZWN0aW9uQ2hhbmdlJzpcblx0
ICAgICAgICBpZiAoc2tpcFNlbGVjdGlvbkNoYW5nZUV2ZW50KSB7XG5cdCAgICAgICAgICBicmVh
aztcblx0ICAgICAgICB9XG5cdCAgICAgIC8vIGZhbGxzIHRocm91Z2hcblx0ICAgICAgY2FzZSAn
dG9wS2V5RG93bic6XG5cdCAgICAgIGNhc2UgJ3RvcEtleVVwJzpcblx0ICAgICAgICByZXR1cm4g
Y29uc3RydWN0U2VsZWN0RXZlbnQobmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcblx0
ICAgIH1cblx0XG5cdCAgICByZXR1cm4gbnVsbDtcblx0ICB9LFxuXHRcblx0ICBkaWRQdXRMaXN0
ZW5lcjogZnVuY3Rpb24gKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyKSB7XG5cdCAg
ICBpZiAocmVnaXN0cmF0aW9uTmFtZSA9PT0gJ29uU2VsZWN0Jykge1xuXHQgICAgICBoYXNMaXN0
ZW5lciA9IHRydWU7XG5cdCAgICB9XG5cdCAgfVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMg
PSBTZWxlY3RFdmVudFBsdWdpbjtcblxuLyoqKi8gfSxcbi8qIDE2NiAqL1xuLyoqKi8gZnVuY3Rp
b24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ug
c3RyaWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18o
Myk7XG5cdFxuXHR2YXIgRXZlbnRMaXN0ZW5lciA9IF9fd2VicGFja19yZXF1aXJlX18oNTEpO1xu
XHR2YXIgRXZlbnRQcm9wYWdhdG9ycyA9IF9fd2VicGFja19yZXF1aXJlX18oMjApO1xuXHR2YXIg
UmVhY3RET01Db21wb25lbnRUcmVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1KTtcblx0dmFyIFN5
bnRoZXRpY0FuaW1hdGlvbkV2ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNjcpO1xuXHR2YXIg
U3ludGhldGljQ2xpcGJvYXJkRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE2OCk7XG5cdHZh
ciBTeW50aGV0aWNFdmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMTApO1xuXHR2YXIgU3ludGhl
dGljRm9jdXNFdmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMTcxKTtcblx0dmFyIFN5bnRoZXRp
Y0tleWJvYXJkRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3Myk7XG5cdHZhciBTeW50aGV0
aWNNb3VzZUV2ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygyNik7XG5cdHZhciBTeW50aGV0aWNE
cmFnRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE3MCk7XG5cdHZhciBTeW50aGV0aWNUb3Vj
aEV2ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNzQpO1xuXHR2YXIgU3ludGhldGljVHJhbnNp
dGlvbkV2ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxNzUpO1xuXHR2YXIgU3ludGhldGljVUlF
dmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMjIpO1xuXHR2YXIgU3ludGhldGljV2hlZWxFdmVu
dCA9IF9fd2VicGFja19yZXF1aXJlX18oMTc2KTtcblx0XG5cdHZhciBlbXB0eUZ1bmN0aW9uID0g
X193ZWJwYWNrX3JlcXVpcmVfXyg3KTtcblx0dmFyIGdldEV2ZW50Q2hhckNvZGUgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDQ0KTtcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18o
MSk7XG5cdFxuXHQvKipcblx0ICogVHVybnNcblx0ICogWydhYm9ydCcsIC4uLl1cblx0ICogaW50
b1xuXHQgKiBldmVudFR5cGVzID0ge1xuXHQgKiAgICdhYm9ydCc6IHtcblx0ICogICAgIHBoYXNl
ZFJlZ2lzdHJhdGlvbk5hbWVzOiB7XG5cdCAqICAgICAgIGJ1YmJsZWQ6ICdvbkFib3J0Jyxcblx0
ICogICAgICAgY2FwdHVyZWQ6ICdvbkFib3J0Q2FwdHVyZScsXG5cdCAqICAgICB9LFxuXHQgKiAg
ICAgZGVwZW5kZW5jaWVzOiBbJ3RvcEFib3J0J10sXG5cdCAqICAgfSxcblx0ICogICAuLi5cblx0
ICogfTtcblx0ICogdG9wTGV2ZWxFdmVudHNUb0Rpc3BhdGNoQ29uZmlnID0ge1xuXHQgKiAgICd0
b3BBYm9ydCc6IHsgc2FtZUNvbmZpZyB9XG5cdCAqIH07XG5cdCAqL1xuXHR2YXIgZXZlbnRUeXBl
cyA9IHt9O1xuXHR2YXIgdG9wTGV2ZWxFdmVudHNUb0Rpc3BhdGNoQ29uZmlnID0ge307XG5cdFsn
YWJvcnQnLCAnYW5pbWF0aW9uRW5kJywgJ2FuaW1hdGlvbkl0ZXJhdGlvbicsICdhbmltYXRpb25T
dGFydCcsICdibHVyJywgJ2NhblBsYXknLCAnY2FuUGxheVRocm91Z2gnLCAnY2xpY2snLCAnY29u
dGV4dE1lbnUnLCAnY29weScsICdjdXQnLCAnZG91YmxlQ2xpY2snLCAnZHJhZycsICdkcmFnRW5k
JywgJ2RyYWdFbnRlcicsICdkcmFnRXhpdCcsICdkcmFnTGVhdmUnLCAnZHJhZ092ZXInLCAnZHJh
Z1N0YXJ0JywgJ2Ryb3AnLCAnZHVyYXRpb25DaGFuZ2UnLCAnZW1wdGllZCcsICdlbmNyeXB0ZWQn
LCAnZW5kZWQnLCAnZXJyb3InLCAnZm9jdXMnLCAnaW5wdXQnLCAnaW52YWxpZCcsICdrZXlEb3du
JywgJ2tleVByZXNzJywgJ2tleVVwJywgJ2xvYWQnLCAnbG9hZGVkRGF0YScsICdsb2FkZWRNZXRh
ZGF0YScsICdsb2FkU3RhcnQnLCAnbW91c2VEb3duJywgJ21vdXNlTW92ZScsICdtb3VzZU91dCcs
ICdtb3VzZU92ZXInLCAnbW91c2VVcCcsICdwYXN0ZScsICdwYXVzZScsICdwbGF5JywgJ3BsYXlp
bmcnLCAncHJvZ3Jlc3MnLCAncmF0ZUNoYW5nZScsICdyZXNldCcsICdzY3JvbGwnLCAnc2Vla2Vk
JywgJ3NlZWtpbmcnLCAnc3RhbGxlZCcsICdzdWJtaXQnLCAnc3VzcGVuZCcsICd0aW1lVXBkYXRl
JywgJ3RvdWNoQ2FuY2VsJywgJ3RvdWNoRW5kJywgJ3RvdWNoTW92ZScsICd0b3VjaFN0YXJ0Jywg
J3RyYW5zaXRpb25FbmQnLCAndm9sdW1lQ2hhbmdlJywgJ3dhaXRpbmcnLCAnd2hlZWwnXS5mb3JF
YWNoKGZ1bmN0aW9uIChldmVudCkge1xuXHQgIHZhciBjYXBpdGFsaXplZEV2ZW50ID0gZXZlbnRb
MF0udG9VcHBlckNhc2UoKSArIGV2ZW50LnNsaWNlKDEpO1xuXHQgIHZhciBvbkV2ZW50ID0gJ29u
JyArIGNhcGl0YWxpemVkRXZlbnQ7XG5cdCAgdmFyIHRvcEV2ZW50ID0gJ3RvcCcgKyBjYXBpdGFs
aXplZEV2ZW50O1xuXHRcblx0ICB2YXIgdHlwZSA9IHtcblx0ICAgIHBoYXNlZFJlZ2lzdHJhdGlv
bk5hbWVzOiB7XG5cdCAgICAgIGJ1YmJsZWQ6IG9uRXZlbnQsXG5cdCAgICAgIGNhcHR1cmVkOiBv
bkV2ZW50ICsgJ0NhcHR1cmUnXG5cdCAgICB9LFxuXHQgICAgZGVwZW5kZW5jaWVzOiBbdG9wRXZl
bnRdXG5cdCAgfTtcblx0ICBldmVudFR5cGVzW2V2ZW50XSA9IHR5cGU7XG5cdCAgdG9wTGV2ZWxF
dmVudHNUb0Rpc3BhdGNoQ29uZmlnW3RvcEV2ZW50XSA9IHR5cGU7XG5cdH0pO1xuXHRcblx0dmFy
IG9uQ2xpY2tMaXN0ZW5lcnMgPSB7fTtcblx0XG5cdGZ1bmN0aW9uIGdldERpY3Rpb25hcnlLZXko
aW5zdCkge1xuXHQgIC8vIFByZXZlbnRzIFY4IHBlcmZvcm1hbmNlIGlzc3VlOlxuXHQgIC8vIGh0
dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9wdWxsLzcyMzJcblx0ICByZXR1cm4gJy4n
ICsgaW5zdC5fcm9vdE5vZGVJRDtcblx0fVxuXHRcblx0ZnVuY3Rpb24gaXNJbnRlcmFjdGl2ZSh0
YWcpIHtcblx0ICByZXR1cm4gdGFnID09PSAnYnV0dG9uJyB8fCB0YWcgPT09ICdpbnB1dCcgfHwg
dGFnID09PSAnc2VsZWN0JyB8fCB0YWcgPT09ICd0ZXh0YXJlYSc7XG5cdH1cblx0XG5cdHZhciBT
aW1wbGVFdmVudFBsdWdpbiA9IHtcblx0ICBldmVudFR5cGVzOiBldmVudFR5cGVzLFxuXHRcblx0
ICBleHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRp
dmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcblx0ICAgIHZhciBkaXNwYXRjaENvbmZpZyA9
IHRvcExldmVsRXZlbnRzVG9EaXNwYXRjaENvbmZpZ1t0b3BMZXZlbFR5cGVdO1xuXHQgICAgaWYg
KCFkaXNwYXRjaENvbmZpZykge1xuXHQgICAgICByZXR1cm4gbnVsbDtcblx0ICAgIH1cblx0ICAg
IHZhciBFdmVudENvbnN0cnVjdG9yO1xuXHQgICAgc3dpdGNoICh0b3BMZXZlbFR5cGUpIHtcblx0
ICAgICAgY2FzZSAndG9wQWJvcnQnOlxuXHQgICAgICBjYXNlICd0b3BDYW5QbGF5Jzpcblx0ICAg
ICAgY2FzZSAndG9wQ2FuUGxheVRocm91Z2gnOlxuXHQgICAgICBjYXNlICd0b3BEdXJhdGlvbkNo
YW5nZSc6XG5cdCAgICAgIGNhc2UgJ3RvcEVtcHRpZWQnOlxuXHQgICAgICBjYXNlICd0b3BFbmNy
eXB0ZWQnOlxuXHQgICAgICBjYXNlICd0b3BFbmRlZCc6XG5cdCAgICAgIGNhc2UgJ3RvcEVycm9y
Jzpcblx0ICAgICAgY2FzZSAndG9wSW5wdXQnOlxuXHQgICAgICBjYXNlICd0b3BJbnZhbGlkJzpc
blx0ICAgICAgY2FzZSAndG9wTG9hZCc6XG5cdCAgICAgIGNhc2UgJ3RvcExvYWRlZERhdGEnOlxu
XHQgICAgICBjYXNlICd0b3BMb2FkZWRNZXRhZGF0YSc6XG5cdCAgICAgIGNhc2UgJ3RvcExvYWRT
dGFydCc6XG5cdCAgICAgIGNhc2UgJ3RvcFBhdXNlJzpcblx0ICAgICAgY2FzZSAndG9wUGxheSc6
XG5cdCAgICAgIGNhc2UgJ3RvcFBsYXlpbmcnOlxuXHQgICAgICBjYXNlICd0b3BQcm9ncmVzcyc6
XG5cdCAgICAgIGNhc2UgJ3RvcFJhdGVDaGFuZ2UnOlxuXHQgICAgICBjYXNlICd0b3BSZXNldCc6
XG5cdCAgICAgIGNhc2UgJ3RvcFNlZWtlZCc6XG5cdCAgICAgIGNhc2UgJ3RvcFNlZWtpbmcnOlxu
XHQgICAgICBjYXNlICd0b3BTdGFsbGVkJzpcblx0ICAgICAgY2FzZSAndG9wU3VibWl0Jzpcblx0
ICAgICAgY2FzZSAndG9wU3VzcGVuZCc6XG5cdCAgICAgIGNhc2UgJ3RvcFRpbWVVcGRhdGUnOlxu
XHQgICAgICBjYXNlICd0b3BWb2x1bWVDaGFuZ2UnOlxuXHQgICAgICBjYXNlICd0b3BXYWl0aW5n
Jzpcblx0ICAgICAgICAvLyBIVE1MIEV2ZW50c1xuXHQgICAgICAgIC8vIEBzZWUgaHR0cDovL3d3
dy53My5vcmcvVFIvaHRtbDUvaW5kZXguaHRtbCNldmVudHMtMFxuXHQgICAgICAgIEV2ZW50Q29u
c3RydWN0b3IgPSBTeW50aGV0aWNFdmVudDtcblx0ICAgICAgICBicmVhaztcblx0ICAgICAgY2Fz
ZSAndG9wS2V5UHJlc3MnOlxuXHQgICAgICAgIC8vIEZpcmVmb3ggY3JlYXRlcyBhIGtleXByZXNz
IGV2ZW50IGZvciBmdW5jdGlvbiBrZXlzIHRvby4gVGhpcyByZW1vdmVzXG5cdCAgICAgICAgLy8g
dGhlIHVud2FudGVkIGtleXByZXNzIGV2ZW50cy4gRW50ZXIgaXMgaG93ZXZlciBib3RoIHByaW50
YWJsZSBhbmRcblx0ICAgICAgICAvLyBub24tcHJpbnRhYmxlLiBPbmUgd291bGQgZXhwZWN0IFRh
YiB0byBiZSBhcyB3ZWxsIChidXQgaXQgaXNuJ3QpLlxuXHQgICAgICAgIGlmIChnZXRFdmVudENo
YXJDb2RlKG5hdGl2ZUV2ZW50KSA9PT0gMCkge1xuXHQgICAgICAgICAgcmV0dXJuIG51bGw7XG5c
dCAgICAgICAgfVxuXHQgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG5cdCAgICAgIGNhc2UgJ3Rv
cEtleURvd24nOlxuXHQgICAgICBjYXNlICd0b3BLZXlVcCc6XG5cdCAgICAgICAgRXZlbnRDb25z
dHJ1Y3RvciA9IFN5bnRoZXRpY0tleWJvYXJkRXZlbnQ7XG5cdCAgICAgICAgYnJlYWs7XG5cdCAg
ICAgIGNhc2UgJ3RvcEJsdXInOlxuXHQgICAgICBjYXNlICd0b3BGb2N1cyc6XG5cdCAgICAgICAg
RXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY0ZvY3VzRXZlbnQ7XG5cdCAgICAgICAgYnJlYWs7
XG5cdCAgICAgIGNhc2UgJ3RvcENsaWNrJzpcblx0ICAgICAgICAvLyBGaXJlZm94IGNyZWF0ZXMg
YSBjbGljayBldmVudCBvbiByaWdodCBtb3VzZSBjbGlja3MuIFRoaXMgcmVtb3ZlcyB0aGVcblx0
ICAgICAgICAvLyB1bndhbnRlZCBjbGljayBldmVudHMuXG5cdCAgICAgICAgaWYgKG5hdGl2ZUV2
ZW50LmJ1dHRvbiA9PT0gMikge1xuXHQgICAgICAgICAgcmV0dXJuIG51bGw7XG5cdCAgICAgICAg
fVxuXHQgICAgICAvKiBmYWxscyB0aHJvdWdoICovXG5cdCAgICAgIGNhc2UgJ3RvcERvdWJsZUNs
aWNrJzpcblx0ICAgICAgY2FzZSAndG9wTW91c2VEb3duJzpcblx0ICAgICAgY2FzZSAndG9wTW91
c2VNb3ZlJzpcblx0ICAgICAgY2FzZSAndG9wTW91c2VVcCc6XG5cdCAgICAgIC8vIFRPRE86IERp
c2FibGVkIGVsZW1lbnRzIHNob3VsZCBub3QgcmVzcG9uZCB0byBtb3VzZSBldmVudHNcblx0ICAg
ICAgLyogZmFsbHMgdGhyb3VnaCAqL1xuXHQgICAgICBjYXNlICd0b3BNb3VzZU91dCc6XG5cdCAg
ICAgIGNhc2UgJ3RvcE1vdXNlT3Zlcic6XG5cdCAgICAgIGNhc2UgJ3RvcENvbnRleHRNZW51Jzpc
blx0ICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljTW91c2VFdmVudDtcblx0ICAg
ICAgICBicmVhaztcblx0ICAgICAgY2FzZSAndG9wRHJhZyc6XG5cdCAgICAgIGNhc2UgJ3RvcERy
YWdFbmQnOlxuXHQgICAgICBjYXNlICd0b3BEcmFnRW50ZXInOlxuXHQgICAgICBjYXNlICd0b3BE
cmFnRXhpdCc6XG5cdCAgICAgIGNhc2UgJ3RvcERyYWdMZWF2ZSc6XG5cdCAgICAgIGNhc2UgJ3Rv
cERyYWdPdmVyJzpcblx0ICAgICAgY2FzZSAndG9wRHJhZ1N0YXJ0Jzpcblx0ICAgICAgY2FzZSAn
dG9wRHJvcCc6XG5cdCAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY0RyYWdFdmVu
dDtcblx0ICAgICAgICBicmVhaztcblx0ICAgICAgY2FzZSAndG9wVG91Y2hDYW5jZWwnOlxuXHQg
ICAgICBjYXNlICd0b3BUb3VjaEVuZCc6XG5cdCAgICAgIGNhc2UgJ3RvcFRvdWNoTW92ZSc6XG5c
dCAgICAgIGNhc2UgJ3RvcFRvdWNoU3RhcnQnOlxuXHQgICAgICAgIEV2ZW50Q29uc3RydWN0b3Ig
PSBTeW50aGV0aWNUb3VjaEV2ZW50O1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICd0
b3BBbmltYXRpb25FbmQnOlxuXHQgICAgICBjYXNlICd0b3BBbmltYXRpb25JdGVyYXRpb24nOlxu
XHQgICAgICBjYXNlICd0b3BBbmltYXRpb25TdGFydCc6XG5cdCAgICAgICAgRXZlbnRDb25zdHJ1
Y3RvciA9IFN5bnRoZXRpY0FuaW1hdGlvbkV2ZW50O1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAg
ICBjYXNlICd0b3BUcmFuc2l0aW9uRW5kJzpcblx0ICAgICAgICBFdmVudENvbnN0cnVjdG9yID0g
U3ludGhldGljVHJhbnNpdGlvbkV2ZW50O1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNl
ICd0b3BTY3JvbGwnOlxuXHQgICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNVSUV2
ZW50O1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgICBjYXNlICd0b3BXaGVlbCc6XG5cdCAgICAg
ICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY1doZWVsRXZlbnQ7XG5cdCAgICAgICAgYnJl
YWs7XG5cdCAgICAgIGNhc2UgJ3RvcENvcHknOlxuXHQgICAgICBjYXNlICd0b3BDdXQnOlxuXHQg
ICAgICBjYXNlICd0b3BQYXN0ZSc6XG5cdCAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRo
ZXRpY0NsaXBib2FyZEV2ZW50O1xuXHQgICAgICAgIGJyZWFrO1xuXHQgICAgfVxuXHQgICAgIUV2
ZW50Q29uc3RydWN0b3IgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdTaW1wbGVFdmVudFBs
dWdpbjogVW5oYW5kbGVkIGV2ZW50IHR5cGUsIGAlc2AuJywgdG9wTGV2ZWxUeXBlKSA6IF9wcm9k
SW52YXJpYW50KCc4NicsIHRvcExldmVsVHlwZSkgOiB2b2lkIDA7XG5cdCAgICB2YXIgZXZlbnQg
PSBFdmVudENvbnN0cnVjdG9yLmdldFBvb2xlZChkaXNwYXRjaENvbmZpZywgdGFyZ2V0SW5zdCwg
bmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcblx0ICAgIEV2ZW50UHJvcGFnYXRvcnMu
YWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhldmVudCk7XG5cdCAgICByZXR1cm4gZXZlbnQ7
XG5cdCAgfSxcblx0XG5cdCAgZGlkUHV0TGlzdGVuZXI6IGZ1bmN0aW9uIChpbnN0LCByZWdpc3Ry
YXRpb25OYW1lLCBsaXN0ZW5lcikge1xuXHQgICAgLy8gTW9iaWxlIFNhZmFyaSBkb2VzIG5vdCBm
aXJlIHByb3Blcmx5IGJ1YmJsZSBjbGljayBldmVudHMgb25cblx0ICAgIC8vIG5vbi1pbnRlcmFj
dGl2ZSBlbGVtZW50cywgd2hpY2ggbWVhbnMgZGVsZWdhdGVkIGNsaWNrIGxpc3RlbmVycyBkbyBu
b3Rcblx0ICAgIC8vIGZpcmUuIFRoZSB3b3JrYXJvdW5kIGZvciB0aGlzIGJ1ZyBpbnZvbHZlcyBh
dHRhY2hpbmcgYW4gZW1wdHkgY2xpY2tcblx0ICAgIC8vIGxpc3RlbmVyIG9uIHRoZSB0YXJnZXQg
bm9kZS5cblx0ICAgIC8vIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8y
MDEwLzA5L2NsaWNrX2V2ZW50X2RlbC5odG1sXG5cdCAgICBpZiAocmVnaXN0cmF0aW9uTmFtZSA9
PT0gJ29uQ2xpY2snICYmICFpc0ludGVyYWN0aXZlKGluc3QuX3RhZykpIHtcblx0ICAgICAgdmFy
IGtleSA9IGdldERpY3Rpb25hcnlLZXkoaW5zdCk7XG5cdCAgICAgIHZhciBub2RlID0gUmVhY3RE
T01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7XG5cdCAgICAgIGlmICgh
b25DbGlja0xpc3RlbmVyc1trZXldKSB7XG5cdCAgICAgICAgb25DbGlja0xpc3RlbmVyc1trZXld
ID0gRXZlbnRMaXN0ZW5lci5saXN0ZW4obm9kZSwgJ2NsaWNrJywgZW1wdHlGdW5jdGlvbik7XG5c
dCAgICAgIH1cblx0ICAgIH1cblx0ICB9LFxuXHRcblx0ICB3aWxsRGVsZXRlTGlzdGVuZXI6IGZ1
bmN0aW9uIChpbnN0LCByZWdpc3RyYXRpb25OYW1lKSB7XG5cdCAgICBpZiAocmVnaXN0cmF0aW9u
TmFtZSA9PT0gJ29uQ2xpY2snICYmICFpc0ludGVyYWN0aXZlKGluc3QuX3RhZykpIHtcblx0ICAg
ICAgdmFyIGtleSA9IGdldERpY3Rpb25hcnlLZXkoaW5zdCk7XG5cdCAgICAgIG9uQ2xpY2tMaXN0
ZW5lcnNba2V5XS5yZW1vdmUoKTtcblx0ICAgICAgZGVsZXRlIG9uQ2xpY2tMaXN0ZW5lcnNba2V5
XTtcblx0ICAgIH1cblx0ICB9XG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFNpbXBsZUV2
ZW50UGx1Z2luO1xuXG4vKioqLyB9LFxuLyogMTY3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUs
IGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
blx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2
YXIgU3ludGhldGljRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTtcblx0XG5cdC8qKlxu
XHQgKiBAaW50ZXJmYWNlIEV2ZW50XG5cdCAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvY3Nz
My1hbmltYXRpb25zLyNBbmltYXRpb25FdmVudC1pbnRlcmZhY2Vcblx0ICogQHNlZSBodHRwczov
L2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvQW5pbWF0aW9uRXZlbnRc
blx0ICovXG5cdHZhciBBbmltYXRpb25FdmVudEludGVyZmFjZSA9IHtcblx0ICBhbmltYXRpb25O
YW1lOiBudWxsLFxuXHQgIGVsYXBzZWRUaW1lOiBudWxsLFxuXHQgIHBzZXVkb0VsZW1lbnQ6IG51
bGxcblx0fTtcblx0XG5cdC8qKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcg
Q29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG5cdCAqIEBwYXJhbSB7
c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdl
dC5cblx0ICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50
LlxuXHQgKiBAZXh0ZW5kcyB7U3ludGhldGljRXZlbnR9XG5cdCAqL1xuXHRmdW5jdGlvbiBTeW50
aGV0aWNBbmltYXRpb25FdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2
ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuXHQgIHJldHVybiBTeW50aGV0aWNFdmVudC5j
YWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5h
dGl2ZUV2ZW50VGFyZ2V0KTtcblx0fVxuXHRcblx0U3ludGhldGljRXZlbnQuYXVnbWVudENsYXNz
KFN5bnRoZXRpY0FuaW1hdGlvbkV2ZW50LCBBbmltYXRpb25FdmVudEludGVyZmFjZSk7XG5cdFxu
XHRtb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0FuaW1hdGlvbkV2ZW50O1xuXG4vKioqLyB9LFxu
LyogMTY4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1
aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
XG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0
ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgU3ludGhldGljRXZlbnQgPSBfX3dl
YnBhY2tfcmVxdWlyZV9fKDEwKTtcblx0XG5cdC8qKlxuXHQgKiBAaW50ZXJmYWNlIEV2ZW50XG5c
dCAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvY2xpcGJvYXJkLWFwaXMvXG5cdCAqL1xuXHR2
YXIgQ2xpcGJvYXJkRXZlbnRJbnRlcmZhY2UgPSB7XG5cdCAgY2xpcGJvYXJkRGF0YTogZnVuY3Rp
b24gKGV2ZW50KSB7XG5cdCAgICByZXR1cm4gJ2NsaXBib2FyZERhdGEnIGluIGV2ZW50ID8gZXZl
bnQuY2xpcGJvYXJkRGF0YSA6IHdpbmRvdy5jbGlwYm9hcmREYXRhO1xuXHQgIH1cblx0fTtcblx0
XG5cdC8qKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlv
biB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBkaXNw
YXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cblx0ICogQHBh
cmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuXHQgKiBAZXh0
ZW5kcyB7U3ludGhldGljVUlFdmVudH1cblx0ICovXG5cdGZ1bmN0aW9uIFN5bnRoZXRpY0NsaXBi
b2FyZEV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5h
dGl2ZUV2ZW50VGFyZ2V0KSB7XG5cdCAgcmV0dXJuIFN5bnRoZXRpY0V2ZW50LmNhbGwodGhpcywg
ZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRU
YXJnZXQpO1xuXHR9XG5cdFxuXHRTeW50aGV0aWNFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGlj
Q2xpcGJvYXJkRXZlbnQsIENsaXBib2FyZEV2ZW50SW50ZXJmYWNlKTtcblx0XG5cdG1vZHVsZS5l
eHBvcnRzID0gU3ludGhldGljQ2xpcGJvYXJkRXZlbnQ7XG5cbi8qKiovIH0sXG4vKiAxNjkgKi9c
bi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xu
XG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQg
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxp
Y2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5c
dCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBTeW50aGV0aWNFdmVudCA9IF9fd2VicGFja19yZXF1
aXJlX18oMTApO1xuXHRcblx0LyoqXG5cdCAqIEBpbnRlcmZhY2UgRXZlbnRcblx0ICogQHNlZSBo
dHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvI2V2ZW50cy1jb21wb3NpdGlv
bmV2ZW50c1xuXHQgKi9cblx0dmFyIENvbXBvc2l0aW9uRXZlbnRJbnRlcmZhY2UgPSB7XG5cdCAg
ZGF0YTogbnVsbFxuXHR9O1xuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRj
aENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cblx0ICog
QHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZl
bnQgdGFyZ2V0LlxuXHQgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dz
ZXIgZXZlbnQuXG5cdCAqIEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fVxuXHQgKi9cblx0ZnVu
Y3Rpb24gU3ludGhldGljQ29tcG9zaXRpb25FdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hN
YXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuXHQgIHJldHVybiBTeW50
aGV0aWNFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0
aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcblx0fVxuXHRcblx0U3ludGhldGljRXZlbnQu
YXVnbWVudENsYXNzKFN5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQsIENvbXBvc2l0aW9uRXZlbnRJ
bnRlcmZhY2UpO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNDb21wb3NpdGlvbkV2
ZW50O1xuXG4vKioqLyB9LFxuLyogMTcwICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9y
dHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpc
blx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgU3lu
dGhldGljTW91c2VFdmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMjYpO1xuXHRcblx0LyoqXG5c
dCAqIEBpbnRlcmZhY2UgRHJhZ0V2ZW50XG5cdCAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIv
RE9NLUxldmVsLTMtRXZlbnRzL1xuXHQgKi9cblx0dmFyIERyYWdFdmVudEludGVyZmFjZSA9IHtc
blx0ICBkYXRhVHJhbnNmZXI6IG51bGxcblx0fTtcblx0XG5cdC8qKlxuXHQgKiBAcGFyYW0ge29i
amVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMg
ZXZlbnQuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRp
ZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cblx0ICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50
IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuXHQgKiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH1c
blx0ICovXG5cdGZ1bmN0aW9uIFN5bnRoZXRpY0RyYWdFdmVudChkaXNwYXRjaENvbmZpZywgZGlz
cGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuXHQgIHJldHVy
biBTeW50aGV0aWNNb3VzZUV2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNo
TWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuXHR9XG5cdFxuXHRTeW50
aGV0aWNNb3VzZUV2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNEcmFnRXZlbnQsIERyYWdFdmVu
dEludGVyZmFjZSk7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0RyYWdFdmVudDtc
blxuLyoqKi8gfSxcbi8qIDE3MSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBf
X3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIFN5bnRoZXRp
Y1VJRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyKTtcblx0XG5cdC8qKlxuXHQgKiBAaW50
ZXJmYWNlIEZvY3VzRXZlbnRcblx0ICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2
ZWwtMy1FdmVudHMvXG5cdCAqL1xuXHR2YXIgRm9jdXNFdmVudEludGVyZmFjZSA9IHtcblx0ICBy
ZWxhdGVkVGFyZ2V0OiBudWxsXG5cdH07XG5cdFxuXHQvKipcblx0ICogQHBhcmFtIHtvYmplY3R9
IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50
LlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5n
IHRoZSBldmVudCB0YXJnZXQuXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRp
dmUgYnJvd3NlciBldmVudC5cblx0ICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9XG5cdCAq
L1xuXHRmdW5jdGlvbiBTeW50aGV0aWNGb2N1c0V2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRj
aE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG5cdCAgcmV0dXJuIFN5
bnRoZXRpY1VJRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIs
IG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cdH1cblx0XG5cdFN5bnRoZXRpY1VJ
RXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY0ZvY3VzRXZlbnQsIEZvY3VzRXZlbnRJbnRlcmZh
Y2UpO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNGb2N1c0V2ZW50O1xuXG4vKioq
LyB9LFxuLyogMTcyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFj
a19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0
ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgU3ludGhldGljRXZlbnQg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEwKTtcblx0XG5cdC8qKlxuXHQgKiBAaW50ZXJmYWNlIEV2
ZW50XG5cdCAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMy9XRC1ET00tTGV2ZWwtMy1F
dmVudHMtMjAxMzExMDVcblx0ICogICAgICAvI2V2ZW50cy1pbnB1dGV2ZW50c1xuXHQgKi9cblx0
dmFyIElucHV0RXZlbnRJbnRlcmZhY2UgPSB7XG5cdCAgZGF0YTogbnVsbFxuXHR9O1xuXHRcblx0
LyoqXG5cdCAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVz
ZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cblx0ICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNo
TWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuXHQgKiBAcGFyYW0g
e29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG5cdCAqIEBleHRlbmRz
IHtTeW50aGV0aWNVSUV2ZW50fVxuXHQgKi9cblx0ZnVuY3Rpb24gU3ludGhldGljSW5wdXRFdmVu
dChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVu
dFRhcmdldCkge1xuXHQgIHJldHVybiBTeW50aGV0aWNFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNo
Q29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtc
blx0fVxuXHRcblx0U3ludGhldGljRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY0lucHV0RXZl
bnQsIElucHV0RXZlbnRJbnRlcmZhY2UpO1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0
aWNJbnB1dEV2ZW50O1xuXG4vKioqLyB9LFxuLyogMTczICovXG4vKioqLyBmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZl
ZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQg
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxu
XHR2YXIgU3ludGhldGljVUlFdmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMjIpO1xuXHRcblx0
dmFyIGdldEV2ZW50Q2hhckNvZGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ0KTtcblx0dmFyIGdl
dEV2ZW50S2V5ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxODEpO1xuXHR2YXIgZ2V0RXZlbnRNb2Rp
ZmllclN0YXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0NSk7XG5cdFxuXHQvKipcblx0ICogQGlu
dGVyZmFjZSBLZXlib2FyZEV2ZW50XG5cdCAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9N
LUxldmVsLTMtRXZlbnRzL1xuXHQgKi9cblx0dmFyIEtleWJvYXJkRXZlbnRJbnRlcmZhY2UgPSB7
XG5cdCAga2V5OiBnZXRFdmVudEtleSxcblx0ICBsb2NhdGlvbjogbnVsbCxcblx0ICBjdHJsS2V5
OiBudWxsLFxuXHQgIHNoaWZ0S2V5OiBudWxsLFxuXHQgIGFsdEtleTogbnVsbCxcblx0ICBtZXRh
S2V5OiBudWxsLFxuXHQgIHJlcGVhdDogbnVsbCxcblx0ICBsb2NhbGU6IG51bGwsXG5cdCAgZ2V0
TW9kaWZpZXJTdGF0ZTogZ2V0RXZlbnRNb2RpZmllclN0YXRlLFxuXHQgIC8vIExlZ2FjeSBJbnRl
cmZhY2Vcblx0ICBjaGFyQ29kZTogZnVuY3Rpb24gKGV2ZW50KSB7XG5cdCAgICAvLyBgY2hhckNv
ZGVgIGlzIHRoZSByZXN1bHQgb2YgYSBLZXlQcmVzcyBldmVudCBhbmQgcmVwcmVzZW50cyB0aGUg
dmFsdWUgb2Zcblx0ICAgIC8vIHRoZSBhY3R1YWwgcHJpbnRhYmxlIGNoYXJhY3Rlci5cblx0XG5c
dCAgICAvLyBLZXlQcmVzcyBpcyBkZXByZWNhdGVkLCBidXQgaXRzIHJlcGxhY2VtZW50IGlzIG5v
dCB5ZXQgZmluYWwgYW5kIG5vdFxuXHQgICAgLy8gaW1wbGVtZW50ZWQgaW4gYW55IG1ham9yIGJy
b3dzZXIuIE9ubHkgS2V5UHJlc3MgaGFzIGNoYXJDb2RlLlxuXHQgICAgaWYgKGV2ZW50LnR5cGUg
PT09ICdrZXlwcmVzcycpIHtcblx0ICAgICAgcmV0dXJuIGdldEV2ZW50Q2hhckNvZGUoZXZlbnQp
O1xuXHQgICAgfVxuXHQgICAgcmV0dXJuIDA7XG5cdCAgfSxcblx0ICBrZXlDb2RlOiBmdW5jdGlv
biAoZXZlbnQpIHtcblx0ICAgIC8vIGBrZXlDb2RlYCBpcyB0aGUgcmVzdWx0IG9mIGEgS2V5RG93
bi9VcCBldmVudCBhbmQgcmVwcmVzZW50cyB0aGUgdmFsdWUgb2Zcblx0ICAgIC8vIHBoeXNpY2Fs
IGtleWJvYXJkIGtleS5cblx0XG5cdCAgICAvLyBUaGUgYWN0dWFsIG1lYW5pbmcgb2YgdGhlIHZh
bHVlIGRlcGVuZHMgb24gdGhlIHVzZXJzJyBrZXlib2FyZCBsYXlvdXRcblx0ICAgIC8vIHdoaWNo
IGNhbm5vdCBiZSBkZXRlY3RlZC4gQXNzdW1pbmcgdGhhdCBpdCBpcyBhIFVTIGtleWJvYXJkIGxh
eW91dFxuXHQgICAgLy8gcHJvdmlkZXMgYSBzdXJwcmlzaW5nbHkgYWNjdXJhdGUgbWFwcGluZyBm
b3IgVVMgYW5kIEV1cm9wZWFuIHVzZXJzLlxuXHQgICAgLy8gRHVlIHRvIHRoaXMsIGl0IGlzIGxl
ZnQgdG8gdGhlIHVzZXIgdG8gaW1wbGVtZW50IGF0IHRoaXMgdGltZS5cblx0ICAgIGlmIChldmVu
dC50eXBlID09PSAna2V5ZG93bicgfHwgZXZlbnQudHlwZSA9PT0gJ2tleXVwJykge1xuXHQgICAg
ICByZXR1cm4gZXZlbnQua2V5Q29kZTtcblx0ICAgIH1cblx0ICAgIHJldHVybiAwO1xuXHQgIH0s
XG5cdCAgd2hpY2g6IGZ1bmN0aW9uIChldmVudCkge1xuXHQgICAgLy8gYHdoaWNoYCBpcyBhbiBh
bGlhcyBmb3IgZWl0aGVyIGBrZXlDb2RlYCBvciBgY2hhckNvZGVgIGRlcGVuZGluZyBvbiB0aGVc
blx0ICAgIC8vIHR5cGUgb2YgdGhlIGV2ZW50LlxuXHQgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdr
ZXlwcmVzcycpIHtcblx0ICAgICAgcmV0dXJuIGdldEV2ZW50Q2hhckNvZGUoZXZlbnQpO1xuXHQg
ICAgfVxuXHQgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdrZXlkb3duJyB8fCBldmVudC50eXBlID09
PSAna2V5dXAnKSB7XG5cdCAgICAgIHJldHVybiBldmVudC5rZXlDb2RlO1xuXHQgICAgfVxuXHQg
ICAgcmV0dXJuIDA7XG5cdCAgfVxuXHR9O1xuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7b2JqZWN0
fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVu
dC5cblx0ICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWlu
ZyB0aGUgZXZlbnQgdGFyZ2V0LlxuXHQgKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0
aXZlIGJyb3dzZXIgZXZlbnQuXG5cdCAqIEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fVxuXHQg
Ki9cblx0ZnVuY3Rpb24gU3ludGhldGljS2V5Ym9hcmRFdmVudChkaXNwYXRjaENvbmZpZywgZGlz
cGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuXHQgIHJldHVy
biBTeW50aGV0aWNVSUV2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFy
a2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuXHR9XG5cdFxuXHRTeW50aGV0
aWNVSUV2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNLZXlib2FyZEV2ZW50LCBLZXlib2FyZEV2
ZW50SW50ZXJmYWNlKTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gU3ludGhldGljS2V5Ym9hcmRF
dmVudDtcblxuLyoqKi8gfSxcbi8qIDE3NCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBv
cnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAq
XG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0
ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBk
aXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIFN5
bnRoZXRpY1VJRXZlbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyKTtcblx0XG5cdHZhciBnZXRF
dmVudE1vZGlmaWVyU3RhdGUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDQ1KTtcblx0XG5cdC8qKlxu
XHQgKiBAaW50ZXJmYWNlIFRvdWNoRXZlbnRcblx0ICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9U
Ui90b3VjaC1ldmVudHMvXG5cdCAqL1xuXHR2YXIgVG91Y2hFdmVudEludGVyZmFjZSA9IHtcblx0
ICB0b3VjaGVzOiBudWxsLFxuXHQgIHRhcmdldFRvdWNoZXM6IG51bGwsXG5cdCAgY2hhbmdlZFRv
dWNoZXM6IG51bGwsXG5cdCAgYWx0S2V5OiBudWxsLFxuXHQgIG1ldGFLZXk6IG51bGwsXG5cdCAg
Y3RybEtleTogbnVsbCxcblx0ICBzaGlmdEtleTogbnVsbCxcblx0ICBnZXRNb2RpZmllclN0YXRl
OiBnZXRFdmVudE1vZGlmaWVyU3RhdGVcblx0fTtcblx0XG5cdC8qKlxuXHQgKiBAcGFyYW0ge29i
amVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMg
ZXZlbnQuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRp
ZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cblx0ICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50
IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuXHQgKiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH1c
blx0ICovXG5cdGZ1bmN0aW9uIFN5bnRoZXRpY1RvdWNoRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRp
c3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcblx0ICByZXR1
cm4gU3ludGhldGljVUlFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1h
cmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcblx0fVxuXHRcblx0U3ludGhl
dGljVUlFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljVG91Y2hFdmVudCwgVG91Y2hFdmVudElu
dGVyZmFjZSk7XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY1RvdWNoRXZlbnQ7XG5c
bi8qKiovIH0sXG4vKiAxNzUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193
ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBTeW50aGV0aWNF
dmVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMTApO1xuXHRcblx0LyoqXG5cdCAqIEBpbnRlcmZh
Y2UgRXZlbnRcblx0ICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDA5L1dELWNzczMtdHJh
bnNpdGlvbnMtMjAwOTAzMjAvI3RyYW5zaXRpb24tZXZlbnRzLVxuXHQgKiBAc2VlIGh0dHBzOi8v
ZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9UcmFuc2l0aW9uRXZlbnRc
blx0ICovXG5cdHZhciBUcmFuc2l0aW9uRXZlbnRJbnRlcmZhY2UgPSB7XG5cdCAgcHJvcGVydHlO
YW1lOiBudWxsLFxuXHQgIGVsYXBzZWRUaW1lOiBudWxsLFxuXHQgIHBzZXVkb0VsZW1lbnQ6IG51
bGxcblx0fTtcblx0XG5cdC8qKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcg
Q29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG5cdCAqIEBwYXJhbSB7
c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdl
dC5cblx0ICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50
LlxuXHQgKiBAZXh0ZW5kcyB7U3ludGhldGljRXZlbnR9XG5cdCAqL1xuXHRmdW5jdGlvbiBTeW50
aGV0aWNUcmFuc2l0aW9uRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRp
dmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcblx0ICByZXR1cm4gU3ludGhldGljRXZlbnQu
Y2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBu
YXRpdmVFdmVudFRhcmdldCk7XG5cdH1cblx0XG5cdFN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFz
cyhTeW50aGV0aWNUcmFuc2l0aW9uRXZlbnQsIFRyYW5zaXRpb25FdmVudEludGVyZmFjZSk7XG5c
dFxuXHRtb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY1RyYW5zaXRpb25FdmVudDtcblxuLyoqKi8g
fSxcbi8qIDE3NiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tf
cmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAq
XG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIFN5bnRoZXRpY01vdXNlRXZl
bnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI2KTtcblx0XG5cdC8qKlxuXHQgKiBAaW50ZXJmYWNl
IFdoZWVsRXZlbnRcblx0ICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1F
dmVudHMvXG5cdCAqL1xuXHR2YXIgV2hlZWxFdmVudEludGVyZmFjZSA9IHtcblx0ICBkZWx0YVg6
IGZ1bmN0aW9uIChldmVudCkge1xuXHQgICAgcmV0dXJuICdkZWx0YVgnIGluIGV2ZW50ID8gZXZl
bnQuZGVsdGFYIDogLy8gRmFsbGJhY2sgdG8gYHdoZWVsRGVsdGFYYCBmb3IgV2Via2l0IGFuZCBu
b3JtYWxpemUgKHJpZ2h0IGlzIHBvc2l0aXZlKS5cblx0ICAgICd3aGVlbERlbHRhWCcgaW4gZXZl
bnQgPyAtZXZlbnQud2hlZWxEZWx0YVggOiAwO1xuXHQgIH0sXG5cdCAgZGVsdGFZOiBmdW5jdGlv
biAoZXZlbnQpIHtcblx0ICAgIHJldHVybiAnZGVsdGFZJyBpbiBldmVudCA/IGV2ZW50LmRlbHRh
WSA6IC8vIEZhbGxiYWNrIHRvIGB3aGVlbERlbHRhWWAgZm9yIFdlYmtpdCBhbmQgbm9ybWFsaXpl
IChkb3duIGlzIHBvc2l0aXZlKS5cblx0ICAgICd3aGVlbERlbHRhWScgaW4gZXZlbnQgPyAtZXZl
bnQud2hlZWxEZWx0YVkgOiAvLyBGYWxsYmFjayB0byBgd2hlZWxEZWx0YWAgZm9yIElFPDkgYW5k
IG5vcm1hbGl6ZSAoZG93biBpcyBwb3NpdGl2ZSkuXG5cdCAgICAnd2hlZWxEZWx0YScgaW4gZXZl
bnQgPyAtZXZlbnQud2hlZWxEZWx0YSA6IDA7XG5cdCAgfSxcblx0ICBkZWx0YVo6IG51bGwsXG5c
dFxuXHQgIC8vIEJyb3dzZXJzIHdpdGhvdXQgXCJkZWx0YU1vZGVcIiBpcyByZXBvcnRpbmcgaW4g
cmF3IHdoZWVsIGRlbHRhIHdoZXJlIG9uZVxuXHQgIC8vIG5vdGNoIG9uIHRoZSBzY3JvbGwgaXMg
YWx3YXlzICsvLSAxMjAsIHJvdWdobHkgZXF1aXZhbGVudCB0byBwaXhlbHMuXG5cdCAgLy8gQSBn
b29kIGFwcHJveGltYXRpb24gb2YgRE9NX0RFTFRBX0xJTkUgKDEpIGlzIDUlIG9mIHZpZXdwb3J0
IHNpemUgb3Jcblx0ICAvLyB+NDAgcGl4ZWxzLCBmb3IgRE9NX0RFTFRBX1NDUkVFTiAoMikgaXQg
aXMgODcuNSUgb2Ygdmlld3BvcnQgc2l6ZS5cblx0ICBkZWx0YU1vZGU6IG51bGxcblx0fTtcblx0
XG5cdC8qKlxuXHQgKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlv
biB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG5cdCAqIEBwYXJhbSB7c3RyaW5nfSBkaXNw
YXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cblx0ICogQHBh
cmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuXHQgKiBAZXh0
ZW5kcyB7U3ludGhldGljTW91c2VFdmVudH1cblx0ICovXG5cdGZ1bmN0aW9uIFN5bnRoZXRpY1do
ZWVsRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0
aXZlRXZlbnRUYXJnZXQpIHtcblx0ICByZXR1cm4gU3ludGhldGljTW91c2VFdmVudC5jYWxsKHRo
aXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2
ZW50VGFyZ2V0KTtcblx0fVxuXHRcblx0U3ludGhldGljTW91c2VFdmVudC5hdWdtZW50Q2xhc3Mo
U3ludGhldGljV2hlZWxFdmVudCwgV2hlZWxFdmVudEludGVyZmFjZSk7XG5cdFxuXHRtb2R1bGUu
ZXhwb3J0cyA9IFN5bnRoZXRpY1doZWVsRXZlbnQ7XG5cbi8qKiovIH0sXG4vKiAxNzcgKi9cbi8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxu
XHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5c
dFxuXHR2YXIgTU9EID0gNjU1MjE7XG5cdFxuXHQvLyBhZGxlcjMyIGlzIG5vdCBjcnlwdG9ncmFw
aGljYWxseSBzdHJvbmcsIGFuZCBpcyBvbmx5IHVzZWQgdG8gc2FuaXR5IGNoZWNrIHRoYXRcblx0
Ly8gbWFya3VwIGdlbmVyYXRlZCBvbiB0aGUgc2VydmVyIG1hdGNoZXMgdGhlIG1hcmt1cCBnZW5l
cmF0ZWQgb24gdGhlIGNsaWVudC5cblx0Ly8gVGhpcyBpbXBsZW1lbnRhdGlvbiAoYSBtb2RpZmll
ZCB2ZXJzaW9uIG9mIHRoZSBTaGVldEpTIHZlcnNpb24pIGhhcyBiZWVuIG9wdGltaXplZFxuXHQv
LyBmb3Igb3VyIHVzZSBjYXNlLCBhdCB0aGUgZXhwZW5zZSBvZiBjb25mb3JtaW5nIHRvIHRoZSBh
ZGxlcjMyIHNwZWNpZmljYXRpb25cblx0Ly8gZm9yIG5vbi1hc2NpaSBpbnB1dHMuXG5cdGZ1bmN0
aW9uIGFkbGVyMzIoZGF0YSkge1xuXHQgIHZhciBhID0gMTtcblx0ICB2YXIgYiA9IDA7XG5cdCAg
dmFyIGkgPSAwO1xuXHQgIHZhciBsID0gZGF0YS5sZW5ndGg7XG5cdCAgdmFyIG0gPSBsICYgfjB4
Mztcblx0ICB3aGlsZSAoaSA8IG0pIHtcblx0ICAgIHZhciBuID0gTWF0aC5taW4oaSArIDQwOTYs
IG0pO1xuXHQgICAgZm9yICg7IGkgPCBuOyBpICs9IDQpIHtcblx0ICAgICAgYiArPSAoYSArPSBk
YXRhLmNoYXJDb2RlQXQoaSkpICsgKGEgKz0gZGF0YS5jaGFyQ29kZUF0KGkgKyAxKSkgKyAoYSAr
PSBkYXRhLmNoYXJDb2RlQXQoaSArIDIpKSArIChhICs9IGRhdGEuY2hhckNvZGVBdChpICsgMykp
O1xuXHQgICAgfVxuXHQgICAgYSAlPSBNT0Q7XG5cdCAgICBiICU9IE1PRDtcblx0ICB9XG5cdCAg
Zm9yICg7IGkgPCBsOyBpKyspIHtcblx0ICAgIGIgKz0gYSArPSBkYXRhLmNoYXJDb2RlQXQoaSk7
XG5cdCAgfVxuXHQgIGEgJT0gTU9EO1xuXHQgIGIgJT0gTU9EO1xuXHQgIHJldHVybiBhIHwgYiA8
PCAxNjtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBhZGxlcjMyO1xuXG4vKioqLyB9LFxu
LyogMTc4ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1
aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
XG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0
ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgQ1NTUHJvcGVydHkgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDU4KTtcblx0dmFyIHdhcm5pbmcgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIp
O1xuXHRcblx0dmFyIGlzVW5pdGxlc3NOdW1iZXIgPSBDU1NQcm9wZXJ0eS5pc1VuaXRsZXNzTnVt
YmVyO1xuXHR2YXIgc3R5bGVXYXJuaW5ncyA9IHt9O1xuXHRcblx0LyoqXG5cdCAqIENvbnZlcnQg
YSB2YWx1ZSBpbnRvIHRoZSBwcm9wZXIgY3NzIHdyaXRhYmxlIHZhbHVlLiBUaGUgc3R5bGUgbmFt
ZSBgbmFtZWBcblx0ICogc2hvdWxkIGJlIGxvZ2ljYWwgKG5vIGh5cGhlbnMpLCBhcyBzcGVjaWZp
ZWRcblx0ICogaW4gYENTU1Byb3BlcnR5LmlzVW5pdGxlc3NOdW1iZXJgLlxuXHQgKlxuXHQgKiBA
cGFyYW0ge3N0cmluZ30gbmFtZSBDU1MgcHJvcGVydHkgbmFtZSBzdWNoIGFzIGB0b3BNYXJnaW5g
LlxuXHQgKiBAcGFyYW0geyp9IHZhbHVlIENTUyBwcm9wZXJ0eSB2YWx1ZSBzdWNoIGFzIGAxMHB4
YC5cblx0ICogQHBhcmFtIHtSZWFjdERPTUNvbXBvbmVudH0gY29tcG9uZW50XG5cdCAqIEByZXR1
cm4ge3N0cmluZ30gTm9ybWFsaXplZCBzdHlsZSB2YWx1ZSB3aXRoIGRpbWVuc2lvbnMgYXBwbGll
ZC5cblx0ICovXG5cdGZ1bmN0aW9uIGRhbmdlcm91c1N0eWxlVmFsdWUobmFtZSwgdmFsdWUsIGNv
bXBvbmVudCwgaXNDdXN0b21Qcm9wZXJ0eSkge1xuXHQgIC8vIE5vdGUgdGhhdCB3ZSd2ZSByZW1v
dmVkIGVzY2FwZVRleHRGb3JCcm93c2VyKCkgY2FsbHMgaGVyZSBzaW5jZSB0aGVcblx0ICAvLyB3
aG9sZSBzdHJpbmcgd2lsbCBiZSBlc2NhcGVkIHdoZW4gdGhlIGF0dHJpYnV0ZSBpcyBpbmplY3Rl
ZCBpbnRvXG5cdCAgLy8gdGhlIG1hcmt1cC4gSWYgeW91IHByb3ZpZGUgdW5zYWZlIHVzZXIgZGF0
YSBoZXJlIHRoZXkgY2FuIGluamVjdFxuXHQgIC8vIGFyYml0cmFyeSBDU1Mgd2hpY2ggbWF5IGJl
IHByb2JsZW1hdGljIChJIGNvdWxkbid0IHJlcHJvIHRoaXMpOlxuXHQgIC8vIGh0dHBzOi8vd3d3
Lm93YXNwLm9yZy9pbmRleC5waHAvWFNTX0ZpbHRlcl9FdmFzaW9uX0NoZWF0X1NoZWV0XG5cdCAg
Ly8gaHR0cDovL3d3dy50aGVzcGFubmVyLmNvLnVrLzIwMDcvMTEvMjYvdWx0aW1hdGUteHNzLWNz
cy1pbmplY3Rpb24vXG5cdCAgLy8gVGhpcyBpcyBub3QgYW4gWFNTIGhvbGUgYnV0IGluc3RlYWQg
YSBwb3RlbnRpYWwgQ1NTIGluamVjdGlvbiBpc3N1ZVxuXHQgIC8vIHdoaWNoIGhhcyBsZWFkIHRv
IGEgZ3JlYXRlciBkaXNjdXNzaW9uIGFib3V0IGhvdyB3ZSdyZSBnb2luZyB0b1xuXHQgIC8vIHRy
dXN0IFVSTHMgbW92aW5nIGZvcndhcmQuIFNlZSAjMjExNTkwMVxuXHRcblx0ICB2YXIgaXNFbXB0
eSA9IHZhbHVlID09IG51bGwgfHwgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbicgfHwgdmFsdWUg
PT09ICcnO1xuXHQgIGlmIChpc0VtcHR5KSB7XG5cdCAgICByZXR1cm4gJyc7XG5cdCAgfVxuXHRc
blx0ICB2YXIgaXNOb25OdW1lcmljID0gaXNOYU4odmFsdWUpO1xuXHQgIGlmIChpc0N1c3RvbVBy
b3BlcnR5IHx8IGlzTm9uTnVtZXJpYyB8fCB2YWx1ZSA9PT0gMCB8fCBpc1VuaXRsZXNzTnVtYmVy
Lmhhc093blByb3BlcnR5KG5hbWUpICYmIGlzVW5pdGxlc3NOdW1iZXJbbmFtZV0pIHtcblx0ICAg
IHJldHVybiAnJyArIHZhbHVlOyAvLyBjYXN0IHRvIHN0cmluZ1xuXHQgIH1cblx0XG5cdCAgaWYg
KHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAg
ICAvLyBBbGxvdyAnMCcgdG8gcGFzcyB0aHJvdWdoIHdpdGhvdXQgd2FybmluZy4gMCBpcyBhbHJl
YWR5IHNwZWNpYWwgYW5kXG5cdCAgICAgIC8vIGRvZXNuJ3QgcmVxdWlyZSB1bml0cywgc28gd2Ug
ZG9uJ3QgbmVlZCB0byB3YXJuIGFib3V0IGl0LlxuXHQgICAgICBpZiAoY29tcG9uZW50ICYmIHZh
bHVlICE9PSAnMCcpIHtcblx0ICAgICAgICB2YXIgb3duZXIgPSBjb21wb25lbnQuX2N1cnJlbnRF
bGVtZW50Ll9vd25lcjtcblx0ICAgICAgICB2YXIgb3duZXJOYW1lID0gb3duZXIgPyBvd25lci5n
ZXROYW1lKCkgOiBudWxsO1xuXHQgICAgICAgIGlmIChvd25lck5hbWUgJiYgIXN0eWxlV2Fybmlu
Z3Nbb3duZXJOYW1lXSkge1xuXHQgICAgICAgICAgc3R5bGVXYXJuaW5nc1tvd25lck5hbWVdID0g
e307XG5cdCAgICAgICAgfVxuXHQgICAgICAgIHZhciB3YXJuZWQgPSBmYWxzZTtcblx0ICAgICAg
ICBpZiAob3duZXJOYW1lKSB7XG5cdCAgICAgICAgICB2YXIgd2FybmluZ3MgPSBzdHlsZVdhcm5p
bmdzW293bmVyTmFtZV07XG5cdCAgICAgICAgICB3YXJuZWQgPSB3YXJuaW5nc1tuYW1lXTtcblx0
ICAgICAgICAgIGlmICghd2FybmVkKSB7XG5cdCAgICAgICAgICAgIHdhcm5pbmdzW25hbWVdID0g
dHJ1ZTtcblx0ICAgICAgICAgIH1cblx0ICAgICAgICB9XG5cdCAgICAgICAgaWYgKCF3YXJuZWQp
IHtcblx0ICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3
YXJuaW5nKGZhbHNlLCAnYSBgJXNgIHRhZyAob3duZXI6IGAlc2ApIHdhcyBwYXNzZWQgYSBudW1l
cmljIHN0cmluZyB2YWx1ZSAnICsgJ2ZvciBDU1MgcHJvcGVydHkgYCVzYCAodmFsdWU6IGAlc2Ap
IHdoaWNoIHdpbGwgYmUgdHJlYXRlZCAnICsgJ2FzIGEgdW5pdGxlc3MgbnVtYmVyIGluIGEgZnV0
dXJlIHZlcnNpb24gb2YgUmVhY3QuJywgY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC50eXBlLCBv
d25lck5hbWUgfHwgJ3Vua25vd24nLCBuYW1lLCB2YWx1ZSkgOiB2b2lkIDA7XG5cdCAgICAgICAg
fVxuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICB2YWx1ZSA9IHZhbHVlLnRyaW0oKTtcblx0ICB9
XG5cdCAgcmV0dXJuIHZhbHVlICsgJ3B4Jztcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBk
YW5nZXJvdXNTdHlsZVZhbHVlO1xuXG4vKioqLyB9LFxuLyogMTc5ICovXG4vKioqLyBmdW5jdGlv
bihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7
XG5cdFxuXHR2YXIgX3Byb2RJbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMpO1xuXHRc
blx0dmFyIFJlYWN0Q3VycmVudE93bmVyID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMSk7XG5cdHZh
ciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDUpO1xuXHR2YXIg
UmVhY3RJbnN0YW5jZU1hcCA9IF9fd2VicGFja19yZXF1aXJlX18oMjEpO1xuXHRcblx0dmFyIGdl
dEhvc3RDb21wb25lbnRGcm9tQ29tcG9zaXRlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg3Mik7XG5c
dHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHR2YXIgd2FybmluZyA9
IF9fd2VicGFja19yZXF1aXJlX18oMik7XG5cdFxuXHQvKipcblx0ICogUmV0dXJucyB0aGUgRE9N
IG5vZGUgcmVuZGVyZWQgYnkgdGhpcyBlbGVtZW50LlxuXHQgKlxuXHQgKiBTZWUgaHR0cHM6Ly9m
YWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3Rkb20u
ZmluZGRvbW5vZGVcblx0ICpcblx0ICogQHBhcmFtIHtSZWFjdENvbXBvbmVudHxET01FbGVtZW50
fSBjb21wb25lbnRPckVsZW1lbnRcblx0ICogQHJldHVybiB7P0RPTUVsZW1lbnR9IFRoZSByb290
IG5vZGUgb2YgdGhpcyBlbGVtZW50LlxuXHQgKi9cblx0ZnVuY3Rpb24gZmluZERPTU5vZGUoY29t
cG9uZW50T3JFbGVtZW50KSB7XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICB2YXIgb3duZXIgPSBS
ZWFjdEN1cnJlbnRPd25lci5jdXJyZW50O1xuXHQgICAgaWYgKG93bmVyICE9PSBudWxsKSB7XG5c
dCAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKG93
bmVyLl93YXJuZWRBYm91dFJlZnNJblJlbmRlciwgJyVzIGlzIGFjY2Vzc2luZyBmaW5kRE9NTm9k
ZSBpbnNpZGUgaXRzIHJlbmRlcigpLiAnICsgJ3JlbmRlcigpIHNob3VsZCBiZSBhIHB1cmUgZnVu
Y3Rpb24gb2YgcHJvcHMgYW5kIHN0YXRlLiBJdCBzaG91bGQgJyArICduZXZlciBhY2Nlc3Mgc29t
ZXRoaW5nIHRoYXQgcmVxdWlyZXMgc3RhbGUgZGF0YSBmcm9tIHRoZSBwcmV2aW91cyAnICsgJ3Jl
bmRlciwgc3VjaCBhcyByZWZzLiBNb3ZlIHRoaXMgbG9naWMgdG8gY29tcG9uZW50RGlkTW91bnQg
YW5kICcgKyAnY29tcG9uZW50RGlkVXBkYXRlIGluc3RlYWQuJywgb3duZXIuZ2V0TmFtZSgpIHx8
ICdBIGNvbXBvbmVudCcpIDogdm9pZCAwO1xuXHQgICAgICBvd25lci5fd2FybmVkQWJvdXRSZWZz
SW5SZW5kZXIgPSB0cnVlO1xuXHQgICAgfVxuXHQgIH1cblx0ICBpZiAoY29tcG9uZW50T3JFbGVt
ZW50ID09IG51bGwpIHtcblx0ICAgIHJldHVybiBudWxsO1xuXHQgIH1cblx0ICBpZiAoY29tcG9u
ZW50T3JFbGVtZW50Lm5vZGVUeXBlID09PSAxKSB7XG5cdCAgICByZXR1cm4gY29tcG9uZW50T3JF
bGVtZW50O1xuXHQgIH1cblx0XG5cdCAgdmFyIGluc3QgPSBSZWFjdEluc3RhbmNlTWFwLmdldChj
b21wb25lbnRPckVsZW1lbnQpO1xuXHQgIGlmIChpbnN0KSB7XG5cdCAgICBpbnN0ID0gZ2V0SG9z
dENvbXBvbmVudEZyb21Db21wb3NpdGUoaW5zdCk7XG5cdCAgICByZXR1cm4gaW5zdCA/IFJlYWN0
RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKGluc3QpIDogbnVsbDtcblx0ICB9
XG5cdFxuXHQgIGlmICh0eXBlb2YgY29tcG9uZW50T3JFbGVtZW50LnJlbmRlciA9PT0gJ2Z1bmN0
aW9uJykge1xuXHQgICAgIHRydWUgPyAgZmFsc2UgPyBpbnZhcmlhbnQoZmFsc2UsICdmaW5kRE9N
Tm9kZSB3YXMgY2FsbGVkIG9uIGFuIHVubW91bnRlZCBjb21wb25lbnQuJykgOiBfcHJvZEludmFy
aWFudCgnNDQnKSA6IHZvaWQgMDtcblx0ICB9IGVsc2Uge1xuXHQgICAgIHRydWUgPyAgZmFsc2Ug
PyBpbnZhcmlhbnQoZmFsc2UsICdFbGVtZW50IGFwcGVhcnMgdG8gYmUgbmVpdGhlciBSZWFjdENv
bXBvbmVudCBub3IgRE9NTm9kZSAoa2V5czogJXMpJywgT2JqZWN0LmtleXMoY29tcG9uZW50T3JF
bGVtZW50KSkgOiBfcHJvZEludmFyaWFudCgnNDUnLCBPYmplY3Qua2V5cyhjb21wb25lbnRPckVs
ZW1lbnQpKSA6IHZvaWQgMDtcblx0ICB9XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZmlu
ZERPTU5vZGU7XG5cbi8qKiovIH0sXG4vKiAxODAgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwg
ZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qIFdFQlBBQ0sgVkFSIElOSkVD
VElPTiAqLyhmdW5jdGlvbihwcm9jZXNzKSB7LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG5cdCAqXG5cdCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBL
ZXlFc2NhcGVVdGlscyA9IF9fd2VicGFja19yZXF1aXJlX18oMzgpO1xuXHR2YXIgdHJhdmVyc2VB
bGxDaGlsZHJlbiA9IF9fd2VicGFja19yZXF1aXJlX18oNzgpO1xuXHR2YXIgd2FybmluZyA9IF9f
d2VicGFja19yZXF1aXJlX18oMik7XG5cdFxuXHR2YXIgUmVhY3RDb21wb25lbnRUcmVlSG9vaztc
blx0XG5cdGlmICh0eXBlb2YgcHJvY2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy5lbnYg
JiYgKFwicHJvZHVjdGlvblwiKSA9PT0gJ3Rlc3QnKSB7XG5cdCAgLy8gVGVtcG9yYXJ5IGhhY2su
XG5cdCAgLy8gSW5saW5lIHJlcXVpcmVzIGRvbid0IHdvcmsgd2VsbCB3aXRoIEplc3Q6XG5cdCAg
Ly8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy83MjQwXG5cdCAgLy8g
UmVtb3ZlIHRoZSBpbmxpbmUgcmVxdWlyZXMgd2hlbiB3ZSBkb24ndCBuZWVkIHRoZW0gYW55bW9y
ZTpcblx0ICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC83MTc4XG5c
dCAgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9IF9fd2VicGFja19yZXF1aXJlX18oOTApO1xuXHR9
XG5cdFxuXHQvKipcblx0ICogQHBhcmFtIHtmdW5jdGlvbn0gdHJhdmVyc2VDb250ZXh0IENvbnRl
eHQgcGFzc2VkIHRocm91Z2ggdHJhdmVyc2FsLlxuXHQgKiBAcGFyYW0gez9SZWFjdENvbXBvbmVu
dH0gY2hpbGQgUmVhY3QgY2hpbGQgY29tcG9uZW50LlxuXHQgKiBAcGFyYW0geyFzdHJpbmd9IG5h
bWUgU3RyaW5nIG5hbWUgb2Yga2V5IHBhdGggdG8gY2hpbGQuXG5cdCAqIEBwYXJhbSB7bnVtYmVy
PX0gc2VsZkRlYnVnSUQgT3B0aW9uYWwgZGVidWdJRCBvZiB0aGUgY3VycmVudCBpbnRlcm5hbCBp
bnN0YW5jZS5cblx0ICovXG5cdGZ1bmN0aW9uIGZsYXR0ZW5TaW5nbGVDaGlsZEludG9Db250ZXh0
KHRyYXZlcnNlQ29udGV4dCwgY2hpbGQsIG5hbWUsIHNlbGZEZWJ1Z0lEKSB7XG5cdCAgLy8gV2Ug
Zm91bmQgYSBjb21wb25lbnQgaW5zdGFuY2UuXG5cdCAgaWYgKHRyYXZlcnNlQ29udGV4dCAmJiB0
eXBlb2YgdHJhdmVyc2VDb250ZXh0ID09PSAnb2JqZWN0Jykge1xuXHQgICAgdmFyIHJlc3VsdCA9
IHRyYXZlcnNlQ29udGV4dDtcblx0ICAgIHZhciBrZXlVbmlxdWUgPSByZXN1bHRbbmFtZV0gPT09
IHVuZGVmaW5lZDtcblx0ICAgIGlmIChmYWxzZSkge1xuXHQgICAgICBpZiAoIVJlYWN0Q29tcG9u
ZW50VHJlZUhvb2spIHtcblx0ICAgICAgICBSZWFjdENvbXBvbmVudFRyZWVIb29rID0gcmVxdWly
ZSgncmVhY3QvbGliL1JlYWN0Q29tcG9uZW50VHJlZUhvb2snKTtcblx0ICAgICAgfVxuXHQgICAg
ICBpZiAoIWtleVVuaXF1ZSkge1xuXHQgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnZmxhdHRlbkNoaWxkcmVuKC4uLik6IEVuY291
bnRlcmVkIHR3byBjaGlsZHJlbiB3aXRoIHRoZSBzYW1lIGtleSwgJyArICdgJXNgLiBDaGlsZCBr
ZXlzIG11c3QgYmUgdW5pcXVlOyB3aGVuIHR3byBjaGlsZHJlbiBzaGFyZSBhIGtleSwgb25seSAn
ICsgJ3RoZSBmaXJzdCBjaGlsZCB3aWxsIGJlIHVzZWQuJXMnLCBLZXlFc2NhcGVVdGlscy51bmVz
Y2FwZShuYW1lKSwgUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRTdGFja0FkZGVuZHVtQnlJRChz
ZWxmRGVidWdJRCkpIDogdm9pZCAwO1xuXHQgICAgICB9XG5cdCAgICB9XG5cdCAgICBpZiAoa2V5
VW5pcXVlICYmIGNoaWxkICE9IG51bGwpIHtcblx0ICAgICAgcmVzdWx0W25hbWVdID0gY2hpbGQ7
XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICogRmxhdHRlbnMgY2hpbGRyZW4g
dGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gLiBBbnkgbnVs
bFxuXHQgKiBjaGlsZHJlbiB3aWxsIG5vdCBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0aW5nIG9i
amVjdC5cblx0ICogQHJldHVybiB7IW9iamVjdH0gZmxhdHRlbmVkIGNoaWxkcmVuIGtleWVkIGJ5
IG5hbWUuXG5cdCAqL1xuXHRmdW5jdGlvbiBmbGF0dGVuQ2hpbGRyZW4oY2hpbGRyZW4sIHNlbGZE
ZWJ1Z0lEKSB7XG5cdCAgaWYgKGNoaWxkcmVuID09IG51bGwpIHtcblx0ICAgIHJldHVybiBjaGls
ZHJlbjtcblx0ICB9XG5cdCAgdmFyIHJlc3VsdCA9IHt9O1xuXHRcblx0ICBpZiAoZmFsc2UpIHtc
blx0ICAgIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGZ1bmN0aW9uICh0cmF2ZXJzZUNv
bnRleHQsIGNoaWxkLCBuYW1lKSB7XG5cdCAgICAgIHJldHVybiBmbGF0dGVuU2luZ2xlQ2hpbGRJ
bnRvQ29udGV4dCh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkLCBuYW1lLCBzZWxmRGVidWdJRCk7XG5c
dCAgICB9LCByZXN1bHQpO1xuXHQgIH0gZWxzZSB7XG5cdCAgICB0cmF2ZXJzZUFsbENoaWxkcmVu
KGNoaWxkcmVuLCBmbGF0dGVuU2luZ2xlQ2hpbGRJbnRvQ29udGV4dCwgcmVzdWx0KTtcblx0ICB9
XG5cdCAgcmV0dXJuIHJlc3VsdDtcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBmbGF0dGVu
Q2hpbGRyZW47XG5cdC8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqL30uY2FsbChleHBvcnRzLCBf
X3dlYnBhY2tfcmVxdWlyZV9fKDg3KSkpXG5cbi8qKiovIH0sXG4vKiAxODEgKi9cbi8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxu
XHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdHZhciBnZXRFdmVudENoYXJDb2RlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg0
NCk7XG5cdFxuXHQvKipcblx0ICogTm9ybWFsaXphdGlvbiBvZiBkZXByZWNhdGVkIEhUTUw1IGBr
ZXlgIHZhbHVlc1xuXHQgKiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVT
L2RvY3MvV2ViL0FQSS9LZXlib2FyZEV2ZW50I0tleV9uYW1lc1xuXHQgKi9cblx0dmFyIG5vcm1h
bGl6ZUtleSA9IHtcblx0ICBFc2M6ICdFc2NhcGUnLFxuXHQgIFNwYWNlYmFyOiAnICcsXG5cdCAg
TGVmdDogJ0Fycm93TGVmdCcsXG5cdCAgVXA6ICdBcnJvd1VwJyxcblx0ICBSaWdodDogJ0Fycm93
UmlnaHQnLFxuXHQgIERvd246ICdBcnJvd0Rvd24nLFxuXHQgIERlbDogJ0RlbGV0ZScsXG5cdCAg
V2luOiAnT1MnLFxuXHQgIE1lbnU6ICdDb250ZXh0TWVudScsXG5cdCAgQXBwczogJ0NvbnRleHRN
ZW51Jyxcblx0ICBTY3JvbGw6ICdTY3JvbGxMb2NrJyxcblx0ICBNb3pQcmludGFibGVLZXk6ICdV
bmlkZW50aWZpZWQnXG5cdH07XG5cdFxuXHQvKipcblx0ICogVHJhbnNsYXRpb24gZnJvbSBsZWdh
Y3kgYGtleUNvZGVgIHRvIEhUTUw1IGBrZXlgXG5cdCAqIE9ubHkgc3BlY2lhbCBrZXlzIHN1cHBv
cnRlZCwgYWxsIG90aGVycyBkZXBlbmQgb24ga2V5Ym9hcmQgbGF5b3V0IG9yIGJyb3dzZXJcblx0
ICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkv
S2V5Ym9hcmRFdmVudCNLZXlfbmFtZXNcblx0ICovXG5cdHZhciB0cmFuc2xhdGVUb0tleSA9IHtc
blx0ICA4OiAnQmFja3NwYWNlJyxcblx0ICA5OiAnVGFiJyxcblx0ICAxMjogJ0NsZWFyJyxcblx0
ICAxMzogJ0VudGVyJyxcblx0ICAxNjogJ1NoaWZ0Jyxcblx0ICAxNzogJ0NvbnRyb2wnLFxuXHQg
IDE4OiAnQWx0Jyxcblx0ICAxOTogJ1BhdXNlJyxcblx0ICAyMDogJ0NhcHNMb2NrJyxcblx0ICAy
NzogJ0VzY2FwZScsXG5cdCAgMzI6ICcgJyxcblx0ICAzMzogJ1BhZ2VVcCcsXG5cdCAgMzQ6ICdQ
YWdlRG93bicsXG5cdCAgMzU6ICdFbmQnLFxuXHQgIDM2OiAnSG9tZScsXG5cdCAgMzc6ICdBcnJv
d0xlZnQnLFxuXHQgIDM4OiAnQXJyb3dVcCcsXG5cdCAgMzk6ICdBcnJvd1JpZ2h0Jyxcblx0ICA0
MDogJ0Fycm93RG93bicsXG5cdCAgNDU6ICdJbnNlcnQnLFxuXHQgIDQ2OiAnRGVsZXRlJyxcblx0
ICAxMTI6ICdGMScsXG5cdCAgMTEzOiAnRjInLFxuXHQgIDExNDogJ0YzJyxcblx0ICAxMTU6ICdG
NCcsXG5cdCAgMTE2OiAnRjUnLFxuXHQgIDExNzogJ0Y2Jyxcblx0ICAxMTg6ICdGNycsXG5cdCAg
MTE5OiAnRjgnLFxuXHQgIDEyMDogJ0Y5Jyxcblx0ICAxMjE6ICdGMTAnLFxuXHQgIDEyMjogJ0Yx
MScsXG5cdCAgMTIzOiAnRjEyJyxcblx0ICAxNDQ6ICdOdW1Mb2NrJyxcblx0ICAxNDU6ICdTY3Jv
bGxMb2NrJyxcblx0ICAyMjQ6ICdNZXRhJ1xuXHR9O1xuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7
b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cblx0ICogQHJldHVybiB7
c3RyaW5nfSBOb3JtYWxpemVkIGBrZXlgIHByb3BlcnR5LlxuXHQgKi9cblx0ZnVuY3Rpb24gZ2V0
RXZlbnRLZXkobmF0aXZlRXZlbnQpIHtcblx0ICBpZiAobmF0aXZlRXZlbnQua2V5KSB7XG5cdCAg
ICAvLyBOb3JtYWxpemUgaW5jb25zaXN0ZW50IHZhbHVlcyByZXBvcnRlZCBieSBicm93c2VycyBk
dWUgdG9cblx0ICAgIC8vIGltcGxlbWVudGF0aW9ucyBvZiBhIHdvcmtpbmcgZHJhZnQgc3BlY2lm
aWNhdGlvbi5cblx0XG5cdCAgICAvLyBGaXJlRm94IGltcGxlbWVudHMgYGtleWAgYnV0IHJldHVy
bnMgYE1velByaW50YWJsZUtleWAgZm9yIGFsbFxuXHQgICAgLy8gcHJpbnRhYmxlIGNoYXJhY3Rl
cnMgKG5vcm1hbGl6ZWQgdG8gYFVuaWRlbnRpZmllZGApLCBpZ25vcmUgaXQuXG5cdCAgICB2YXIg
a2V5ID0gbm9ybWFsaXplS2V5W25hdGl2ZUV2ZW50LmtleV0gfHwgbmF0aXZlRXZlbnQua2V5O1xu
XHQgICAgaWYgKGtleSAhPT0gJ1VuaWRlbnRpZmllZCcpIHtcblx0ICAgICAgcmV0dXJuIGtleTtc
blx0ICAgIH1cblx0ICB9XG5cdFxuXHQgIC8vIEJyb3dzZXIgZG9lcyBub3QgaW1wbGVtZW50IGBr
ZXlgLCBwb2x5ZmlsbCBhcyBtdWNoIG9mIGl0IGFzIHdlIGNhbi5cblx0ICBpZiAobmF0aXZlRXZl
bnQudHlwZSA9PT0gJ2tleXByZXNzJykge1xuXHQgICAgdmFyIGNoYXJDb2RlID0gZ2V0RXZlbnRD
aGFyQ29kZShuYXRpdmVFdmVudCk7XG5cdFxuXHQgICAgLy8gVGhlIGVudGVyLWtleSBpcyB0ZWNo
bmljYWxseSBib3RoIHByaW50YWJsZSBhbmQgbm9uLXByaW50YWJsZSBhbmQgY2FuXG5cdCAgICAv
LyB0aHVzIGJlIGNhcHR1cmVkIGJ5IGBrZXlwcmVzc2AsIG5vIG90aGVyIG5vbi1wcmludGFibGUg
a2V5IHNob3VsZC5cblx0ICAgIHJldHVybiBjaGFyQ29kZSA9PT0gMTMgPyAnRW50ZXInIDogU3Ry
aW5nLmZyb21DaGFyQ29kZShjaGFyQ29kZSk7XG5cdCAgfVxuXHQgIGlmIChuYXRpdmVFdmVudC50
eXBlID09PSAna2V5ZG93bicgfHwgbmF0aXZlRXZlbnQudHlwZSA9PT0gJ2tleXVwJykge1xuXHQg
ICAgLy8gV2hpbGUgdXNlciBrZXlib2FyZCBsYXlvdXQgZGV0ZXJtaW5lcyB0aGUgYWN0dWFsIG1l
YW5pbmcgb2YgZWFjaFxuXHQgICAgLy8gYGtleUNvZGVgIHZhbHVlLCBhbG1vc3QgYWxsIGZ1bmN0
aW9uIGtleXMgaGF2ZSBhIHVuaXZlcnNhbCB2YWx1ZS5cblx0ICAgIHJldHVybiB0cmFuc2xhdGVU
b0tleVtuYXRpdmVFdmVudC5rZXlDb2RlXSB8fCAnVW5pZGVudGlmaWVkJztcblx0ICB9XG5cdCAg
cmV0dXJuICcnO1xuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGdldEV2ZW50S2V5O1xuXG4v
KioqLyB9LFxuLyogMTgyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxu
XHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICog
QWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VO
U0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRk
aXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICogXG5cdCAqL1xu
XHRcblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0LyogZ2xvYmFsIFN5bWJvbCAqL1xuXHRcblx0dmFy
IElURVJBVE9SX1NZTUJPTCA9IHR5cGVvZiBTeW1ib2wgPT09ICdmdW5jdGlvbicgJiYgU3ltYm9s
Lml0ZXJhdG9yO1xuXHR2YXIgRkFVWF9JVEVSQVRPUl9TWU1CT0wgPSAnQEBpdGVyYXRvcic7IC8v
IEJlZm9yZSBTeW1ib2wgc3BlYy5cblx0XG5cdC8qKlxuXHQgKiBSZXR1cm5zIHRoZSBpdGVyYXRv
ciBtZXRob2QgZnVuY3Rpb24gY29udGFpbmVkIG9uIHRoZSBpdGVyYWJsZSBvYmplY3QuXG5cdCAq
XG5cdCAqIEJlIHN1cmUgdG8gaW52b2tlIHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBpdGVyYWJsZSBh
cyBjb250ZXh0OlxuXHQgKlxuXHQgKiAgICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZu
KG15SXRlcmFibGUpO1xuXHQgKiAgICAgaWYgKGl0ZXJhdG9yRm4pIHtcblx0ICogICAgICAgdmFy
IGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKG15SXRlcmFibGUpO1xuXHQgKiAgICAgICAuLi5c
blx0ICogICAgIH1cblx0ICpcblx0ICogQHBhcmFtIHs/b2JqZWN0fSBtYXliZUl0ZXJhYmxlXG5c
dCAqIEByZXR1cm4gez9mdW5jdGlvbn1cblx0ICovXG5cdGZ1bmN0aW9uIGdldEl0ZXJhdG9yRm4o
bWF5YmVJdGVyYWJsZSkge1xuXHQgIHZhciBpdGVyYXRvckZuID0gbWF5YmVJdGVyYWJsZSAmJiAo
SVRFUkFUT1JfU1lNQk9MICYmIG1heWJlSXRlcmFibGVbSVRFUkFUT1JfU1lNQk9MXSB8fCBtYXli
ZUl0ZXJhYmxlW0ZBVVhfSVRFUkFUT1JfU1lNQk9MXSk7XG5cdCAgaWYgKHR5cGVvZiBpdGVyYXRv
ckZuID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICByZXR1cm4gaXRlcmF0b3JGbjtcblx0ICB9XG5c
dH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gZ2V0SXRlcmF0b3JGbjtcblxuLyoqKi8gfSxcbi8q
IDE4MyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0LyoqXG5cdCAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3Qn
O1xuXHRcblx0LyoqXG5cdCAqIEdpdmVuIGFueSBub2RlIHJldHVybiB0aGUgZmlyc3QgbGVhZiBu
b2RlIHdpdGhvdXQgY2hpbGRyZW4uXG5cdCAqXG5cdCAqIEBwYXJhbSB7RE9NRWxlbWVudHxET01U
ZXh0Tm9kZX0gbm9kZVxuXHQgKiBAcmV0dXJuIHtET01FbGVtZW50fERPTVRleHROb2RlfVxuXHQg
Ki9cblx0XG5cdGZ1bmN0aW9uIGdldExlYWZOb2RlKG5vZGUpIHtcblx0ICB3aGlsZSAobm9kZSAm
JiBub2RlLmZpcnN0Q2hpbGQpIHtcblx0ICAgIG5vZGUgPSBub2RlLmZpcnN0Q2hpbGQ7XG5cdCAg
fVxuXHQgIHJldHVybiBub2RlO1xuXHR9XG5cdFxuXHQvKipcblx0ICogR2V0IHRoZSBuZXh0IHNp
Ymxpbmcgd2l0aGluIGEgY29udGFpbmVyLiBUaGlzIHdpbGwgd2FsayB1cCB0aGVcblx0ICogRE9N
IGlmIGEgbm9kZSdzIHNpYmxpbmdzIGhhdmUgYmVlbiBleGhhdXN0ZWQuXG5cdCAqXG5cdCAqIEBw
YXJhbSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gbm9kZVxuXHQgKiBAcmV0dXJuIHs/RE9NRWxl
bWVudHxET01UZXh0Tm9kZX1cblx0ICovXG5cdGZ1bmN0aW9uIGdldFNpYmxpbmdOb2RlKG5vZGUp
IHtcblx0ICB3aGlsZSAobm9kZSkge1xuXHQgICAgaWYgKG5vZGUubmV4dFNpYmxpbmcpIHtcblx0
ICAgICAgcmV0dXJuIG5vZGUubmV4dFNpYmxpbmc7XG5cdCAgICB9XG5cdCAgICBub2RlID0gbm9k
ZS5wYXJlbnROb2RlO1xuXHQgIH1cblx0fVxuXHRcblx0LyoqXG5cdCAqIEdldCBvYmplY3QgZGVz
Y3JpYmluZyB0aGUgbm9kZXMgd2hpY2ggY29udGFpbiBjaGFyYWN0ZXJzIGF0IG9mZnNldC5cblx0
ICpcblx0ICogQHBhcmFtIHtET01FbGVtZW50fERPTVRleHROb2RlfSByb290XG5cdCAqIEBwYXJh
bSB7bnVtYmVyfSBvZmZzZXRcblx0ICogQHJldHVybiB7P29iamVjdH1cblx0ICovXG5cdGZ1bmN0
aW9uIGdldE5vZGVGb3JDaGFyYWN0ZXJPZmZzZXQocm9vdCwgb2Zmc2V0KSB7XG5cdCAgdmFyIG5v
ZGUgPSBnZXRMZWFmTm9kZShyb290KTtcblx0ICB2YXIgbm9kZVN0YXJ0ID0gMDtcblx0ICB2YXIg
bm9kZUVuZCA9IDA7XG5cdFxuXHQgIHdoaWxlIChub2RlKSB7XG5cdCAgICBpZiAobm9kZS5ub2Rl
VHlwZSA9PT0gMykge1xuXHQgICAgICBub2RlRW5kID0gbm9kZVN0YXJ0ICsgbm9kZS50ZXh0Q29u
dGVudC5sZW5ndGg7XG5cdFxuXHQgICAgICBpZiAobm9kZVN0YXJ0IDw9IG9mZnNldCAmJiBub2Rl
RW5kID49IG9mZnNldCkge1xuXHQgICAgICAgIHJldHVybiB7XG5cdCAgICAgICAgICBub2RlOiBu
b2RlLFxuXHQgICAgICAgICAgb2Zmc2V0OiBvZmZzZXQgLSBub2RlU3RhcnRcblx0ICAgICAgICB9
O1xuXHQgICAgICB9XG5cdFxuXHQgICAgICBub2RlU3RhcnQgPSBub2RlRW5kO1xuXHQgICAgfVxu
XHRcblx0ICAgIG5vZGUgPSBnZXRMZWFmTm9kZShnZXRTaWJsaW5nTm9kZShub2RlKSk7XG5cdCAg
fVxuXHR9XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IGdldE5vZGVGb3JDaGFyYWN0ZXJPZmZzZXQ7
XG5cbi8qKiovIH0sXG4vKiAxODQgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywg
X193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQg
KiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5z
ZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBFeGVjdXRp
b25FbnZpcm9ubWVudCA9IF9fd2VicGFja19yZXF1aXJlX18oNik7XG5cdFxuXHQvKipcblx0ICog
R2VuZXJhdGUgYSBtYXBwaW5nIG9mIHN0YW5kYXJkIHZlbmRvciBwcmVmaXhlcyB1c2luZyB0aGUg
ZGVmaW5lZCBzdHlsZSBwcm9wZXJ0eSBhbmQgZXZlbnQgbmFtZS5cblx0ICpcblx0ICogQHBhcmFt
IHtzdHJpbmd9IHN0eWxlUHJvcFxuXHQgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnROYW1lXG5cdCAq
IEByZXR1cm5zIHtvYmplY3R9XG5cdCAqL1xuXHRmdW5jdGlvbiBtYWtlUHJlZml4TWFwKHN0eWxl
UHJvcCwgZXZlbnROYW1lKSB7XG5cdCAgdmFyIHByZWZpeGVzID0ge307XG5cdFxuXHQgIHByZWZp
eGVzW3N0eWxlUHJvcC50b0xvd2VyQ2FzZSgpXSA9IGV2ZW50TmFtZS50b0xvd2VyQ2FzZSgpO1xu
XHQgIHByZWZpeGVzWydXZWJraXQnICsgc3R5bGVQcm9wXSA9ICd3ZWJraXQnICsgZXZlbnROYW1l
O1xuXHQgIHByZWZpeGVzWydNb3onICsgc3R5bGVQcm9wXSA9ICdtb3onICsgZXZlbnROYW1lO1xu
XHQgIHByZWZpeGVzWydtcycgKyBzdHlsZVByb3BdID0gJ01TJyArIGV2ZW50TmFtZTtcblx0ICBw
cmVmaXhlc1snTycgKyBzdHlsZVByb3BdID0gJ28nICsgZXZlbnROYW1lLnRvTG93ZXJDYXNlKCk7
XG5cdFxuXHQgIHJldHVybiBwcmVmaXhlcztcblx0fVxuXHRcblx0LyoqXG5cdCAqIEEgbGlzdCBv
ZiBldmVudCBuYW1lcyB0byBhIGNvbmZpZ3VyYWJsZSBsaXN0IG9mIHZlbmRvciBwcmVmaXhlcy5c
blx0ICovXG5cdHZhciB2ZW5kb3JQcmVmaXhlcyA9IHtcblx0ICBhbmltYXRpb25lbmQ6IG1ha2VQ
cmVmaXhNYXAoJ0FuaW1hdGlvbicsICdBbmltYXRpb25FbmQnKSxcblx0ICBhbmltYXRpb25pdGVy
YXRpb246IG1ha2VQcmVmaXhNYXAoJ0FuaW1hdGlvbicsICdBbmltYXRpb25JdGVyYXRpb24nKSxc
blx0ICBhbmltYXRpb25zdGFydDogbWFrZVByZWZpeE1hcCgnQW5pbWF0aW9uJywgJ0FuaW1hdGlv
blN0YXJ0JyksXG5cdCAgdHJhbnNpdGlvbmVuZDogbWFrZVByZWZpeE1hcCgnVHJhbnNpdGlvbics
ICdUcmFuc2l0aW9uRW5kJylcblx0fTtcblx0XG5cdC8qKlxuXHQgKiBFdmVudCBuYW1lcyB0aGF0
IGhhdmUgYWxyZWFkeSBiZWVuIGRldGVjdGVkIGFuZCBwcmVmaXhlZCAoaWYgYXBwbGljYWJsZSku
XG5cdCAqL1xuXHR2YXIgcHJlZml4ZWRFdmVudE5hbWVzID0ge307XG5cdFxuXHQvKipcblx0ICog
RWxlbWVudCB0byBjaGVjayBmb3IgcHJlZml4ZXMgb24uXG5cdCAqL1xuXHR2YXIgc3R5bGUgPSB7
fTtcblx0XG5cdC8qKlxuXHQgKiBCb290c3RyYXAgaWYgYSBET00gZXhpc3RzLlxuXHQgKi9cblx0
aWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkge1xuXHQgIHN0eWxlID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCgnZGl2Jykuc3R5bGU7XG5cdFxuXHQgIC8vIE9uIHNvbWUgcGxhdGZv
cm1zLCBpbiBwYXJ0aWN1bGFyIHNvbWUgcmVsZWFzZXMgb2YgQW5kcm9pZCA0LngsXG5cdCAgLy8g
dGhlIHVuLXByZWZpeGVkIFwiYW5pbWF0aW9uXCIgYW5kIFwidHJhbnNpdGlvblwiIHByb3BlcnRp
ZXMgYXJlIGRlZmluZWQgb24gdGhlXG5cdCAgLy8gc3R5bGUgb2JqZWN0IGJ1dCB0aGUgZXZlbnRz
IHRoYXQgZmlyZSB3aWxsIHN0aWxsIGJlIHByZWZpeGVkLCBzbyB3ZSBuZWVkXG5cdCAgLy8gdG8g
Y2hlY2sgaWYgdGhlIHVuLXByZWZpeGVkIGV2ZW50cyBhcmUgdXNhYmxlLCBhbmQgaWYgbm90IHJl
bW92ZSB0aGVtIGZyb20gdGhlIG1hcC5cblx0ICBpZiAoISgnQW5pbWF0aW9uRXZlbnQnIGluIHdp
bmRvdykpIHtcblx0ICAgIGRlbGV0ZSB2ZW5kb3JQcmVmaXhlcy5hbmltYXRpb25lbmQuYW5pbWF0
aW9uO1xuXHQgICAgZGVsZXRlIHZlbmRvclByZWZpeGVzLmFuaW1hdGlvbml0ZXJhdGlvbi5hbmlt
YXRpb247XG5cdCAgICBkZWxldGUgdmVuZG9yUHJlZml4ZXMuYW5pbWF0aW9uc3RhcnQuYW5pbWF0
aW9uO1xuXHQgIH1cblx0XG5cdCAgLy8gU2FtZSBhcyBhYm92ZVxuXHQgIGlmICghKCdUcmFuc2l0
aW9uRXZlbnQnIGluIHdpbmRvdykpIHtcblx0ICAgIGRlbGV0ZSB2ZW5kb3JQcmVmaXhlcy50cmFu
c2l0aW9uZW5kLnRyYW5zaXRpb247XG5cdCAgfVxuXHR9XG5cdFxuXHQvKipcblx0ICogQXR0ZW1w
dHMgdG8gZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IHZlbmRvciBwcmVmaXhlZCBldmVudCBuYW1lLlxu
XHQgKlxuXHQgKiBAcGFyYW0ge3N0cmluZ30gZXZlbnROYW1lXG5cdCAqIEByZXR1cm5zIHtzdHJp
bmd9XG5cdCAqL1xuXHRmdW5jdGlvbiBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZShldmVudE5h
bWUpIHtcblx0ICBpZiAocHJlZml4ZWRFdmVudE5hbWVzW2V2ZW50TmFtZV0pIHtcblx0ICAgIHJl
dHVybiBwcmVmaXhlZEV2ZW50TmFtZXNbZXZlbnROYW1lXTtcblx0ICB9IGVsc2UgaWYgKCF2ZW5k
b3JQcmVmaXhlc1tldmVudE5hbWVdKSB7XG5cdCAgICByZXR1cm4gZXZlbnROYW1lO1xuXHQgIH1c
blx0XG5cdCAgdmFyIHByZWZpeE1hcCA9IHZlbmRvclByZWZpeGVzW2V2ZW50TmFtZV07XG5cdFxu
XHQgIGZvciAodmFyIHN0eWxlUHJvcCBpbiBwcmVmaXhNYXApIHtcblx0ICAgIGlmIChwcmVmaXhN
YXAuaGFzT3duUHJvcGVydHkoc3R5bGVQcm9wKSAmJiBzdHlsZVByb3AgaW4gc3R5bGUpIHtcblx0
ICAgICAgcmV0dXJuIHByZWZpeGVkRXZlbnROYW1lc1tldmVudE5hbWVdID0gcHJlZml4TWFwW3N0
eWxlUHJvcF07XG5cdCAgICB9XG5cdCAgfVxuXHRcblx0ICByZXR1cm4gJyc7XG5cdH1cblx0XG5c
dG1vZHVsZS5leHBvcnRzID0gZ2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWU7XG5cbi8qKiovIH0s
XG4vKiAxODUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3Jl
cXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxu
XHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBlc2NhcGVUZXh0Q29udGVudEZv
ckJyb3dzZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDI4KTtcblx0XG5cdC8qKlxuXHQgKiBFc2Nh
cGVzIGF0dHJpYnV0ZSB2YWx1ZSB0byBwcmV2ZW50IHNjcmlwdGluZyBhdHRhY2tzLlxuXHQgKlxu
XHQgKiBAcGFyYW0geyp9IHZhbHVlIFZhbHVlIHRvIGVzY2FwZS5cblx0ICogQHJldHVybiB7c3Ry
aW5nfSBBbiBlc2NhcGVkIHN0cmluZy5cblx0ICovXG5cdGZ1bmN0aW9uIHF1b3RlQXR0cmlidXRl
VmFsdWVGb3JCcm93c2VyKHZhbHVlKSB7XG5cdCAgcmV0dXJuICdcIicgKyBlc2NhcGVUZXh0Q29u
dGVudEZvckJyb3dzZXIodmFsdWUpICsgJ1wiJztcblx0fVxuXHRcblx0bW9kdWxlLmV4cG9ydHMg
PSBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9yQnJvd3NlcjtcblxuLyoqKi8gfSxcbi8qIDE4NiAqL1xu
LyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5c
blx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGlj
ZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0
J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIFJlYWN0TW91bnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDY3KTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUmVhY3RNb3VudC5yZW5kZXJTdWJ0cmVlSW50
b0NvbnRhaW5lcjtcblxuLyoqKi8gfSxcbi8qIDE4NyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRc
blx0ZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblx0ZXhwb3J0cy5jcmVhdGVQcm92aWRlciA9
IGNyZWF0ZVByb3ZpZGVyO1xuXHRcblx0dmFyIF9yZWFjdCA9IF9fd2VicGFja19yZXF1aXJlX18o
MTIpO1xuXHRcblx0dmFyIF9wcm9wVHlwZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDU2KTtcblx0
XG5cdHZhciBfcHJvcFR5cGVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3Byb3BUeXBlcyk7
XG5cdFxuXHR2YXIgX1Byb3BUeXBlcyA9IF9fd2VicGFja19yZXF1aXJlX18oODIpO1xuXHRcblx0
dmFyIF93YXJuaW5nID0gX193ZWJwYWNrX3JlcXVpcmVfXyg1MCk7XG5cdFxuXHR2YXIgX3dhcm5p
bmcyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfd2FybmluZyk7XG5cdFxuXHRmdW5jdGlvbiBf
aW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxl
ID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXHRcblx0ZnVuY3Rpb24gX2NsYXNzQ2FsbENo
ZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENv
bnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBh
cyBhIGZ1bmN0aW9uXCIpOyB9IH1cblx0XG5cdGZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9y
UmV0dXJuKHNlbGYsIGNhbGwpIHsgaWYgKCFzZWxmKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJv
cihcInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNh
bGxlZFwiKTsgfSByZXR1cm4gY2FsbCAmJiAodHlwZW9mIGNhbGwgPT09IFwib2JqZWN0XCIgfHwg
dHlwZW9mIGNhbGwgPT09IFwiZnVuY3Rpb25cIikgPyBjYWxsIDogc2VsZjsgfVxuXHRcblx0ZnVu
Y3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJD
bGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3
IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1
bmN0aW9uLCBub3QgXCIgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBl
ID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNv
bnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxl
OiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5z
ZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFz
cykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cdFxuXHR2YXIgZGlkV2Fy
bkFib3V0UmVjZWl2aW5nU3RvcmUgPSBmYWxzZTtcblx0ZnVuY3Rpb24gd2FybkFib3V0UmVjZWl2
aW5nU3RvcmUoKSB7XG5cdCAgaWYgKGRpZFdhcm5BYm91dFJlY2VpdmluZ1N0b3JlKSB7XG5cdCAg
ICByZXR1cm47XG5cdCAgfVxuXHQgIGRpZFdhcm5BYm91dFJlY2VpdmluZ1N0b3JlID0gdHJ1ZTtc
blx0XG5cdCAgKDAsIF93YXJuaW5nMi5kZWZhdWx0KSgnPFByb3ZpZGVyPiBkb2VzIG5vdCBzdXBw
b3J0IGNoYW5naW5nIGBzdG9yZWAgb24gdGhlIGZseS4gJyArICdJdCBpcyBtb3N0IGxpa2VseSB0
aGF0IHlvdSBzZWUgdGhpcyBlcnJvciBiZWNhdXNlIHlvdSB1cGRhdGVkIHRvICcgKyAnUmVkdXgg
Mi54IGFuZCBSZWFjdCBSZWR1eCAyLnggd2hpY2ggbm8gbG9uZ2VyIGhvdCByZWxvYWQgcmVkdWNl
cnMgJyArICdhdXRvbWF0aWNhbGx5LiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3JlYWN0anMvcmVh
Y3QtcmVkdXgvcmVsZWFzZXMvJyArICd0YWcvdjIuMC4wIGZvciB0aGUgbWlncmF0aW9uIGluc3Ry
dWN0aW9ucy4nKTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gY3JlYXRlUHJvdmlkZXIoKSB7XG5cdCAg
dmFyIF9Qcm92aWRlciRjaGlsZENvbnRleDtcblx0XG5cdCAgdmFyIHN0b3JlS2V5ID0gYXJndW1l
bnRzLmxlbmd0aCA+IDAgJiYgYXJndW1lbnRzWzBdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNb
MF0gOiAnc3RvcmUnO1xuXHQgIHZhciBzdWJLZXkgPSBhcmd1bWVudHNbMV07XG5cdFxuXHQgIHZh
ciBzdWJzY3JpcHRpb25LZXkgPSBzdWJLZXkgfHwgc3RvcmVLZXkgKyAnU3Vic2NyaXB0aW9uJztc
blx0XG5cdCAgdmFyIFByb3ZpZGVyID0gZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcblx0ICAgIF9p
bmhlcml0cyhQcm92aWRlciwgX0NvbXBvbmVudCk7XG5cdFxuXHQgICAgUHJvdmlkZXIucHJvdG90
eXBlLmdldENoaWxkQ29udGV4dCA9IGZ1bmN0aW9uIGdldENoaWxkQ29udGV4dCgpIHtcblx0ICAg
ICAgdmFyIF9yZWY7XG5cdFxuXHQgICAgICByZXR1cm4gX3JlZiA9IHt9LCBfcmVmW3N0b3JlS2V5
XSA9IHRoaXNbc3RvcmVLZXldLCBfcmVmW3N1YnNjcmlwdGlvbktleV0gPSBudWxsLCBfcmVmO1xu
XHQgICAgfTtcblx0XG5cdCAgICBmdW5jdGlvbiBQcm92aWRlcihwcm9wcywgY29udGV4dCkge1xu
XHQgICAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgUHJvdmlkZXIpO1xuXHRcblx0ICAgICAgdmFy
IF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX0NvbXBvbmVudC5jYWxs
KHRoaXMsIHByb3BzLCBjb250ZXh0KSk7XG5cdFxuXHQgICAgICBfdGhpc1tzdG9yZUtleV0gPSBw
cm9wcy5zdG9yZTtcblx0ICAgICAgcmV0dXJuIF90aGlzO1xuXHQgICAgfVxuXHRcblx0ICAgIFBy
b3ZpZGVyLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7XG5cdCAgICAgIHJl
dHVybiBfcmVhY3QuQ2hpbGRyZW4ub25seSh0aGlzLnByb3BzLmNoaWxkcmVuKTtcblx0ICAgIH07
XG5cdFxuXHQgICAgcmV0dXJuIFByb3ZpZGVyO1xuXHQgIH0oX3JlYWN0LkNvbXBvbmVudCk7XG5c
dFxuXHQgIGlmIChmYWxzZSkge1xuXHQgICAgUHJvdmlkZXIucHJvdG90eXBlLmNvbXBvbmVudFdp
bGxSZWNlaXZlUHJvcHMgPSBmdW5jdGlvbiAobmV4dFByb3BzKSB7XG5cdCAgICAgIGlmICh0aGlz
W3N0b3JlS2V5XSAhPT0gbmV4dFByb3BzLnN0b3JlKSB7XG5cdCAgICAgICAgd2FybkFib3V0UmVj
ZWl2aW5nU3RvcmUoKTtcblx0ICAgICAgfVxuXHQgICAgfTtcblx0ICB9XG5cdFxuXHQgIFByb3Zp
ZGVyLnByb3BUeXBlcyA9IHtcblx0ICAgIHN0b3JlOiBfUHJvcFR5cGVzLnN0b3JlU2hhcGUuaXNS
ZXF1aXJlZCxcblx0ICAgIGNoaWxkcmVuOiBfcHJvcFR5cGVzMi5kZWZhdWx0LmVsZW1lbnQuaXNS
ZXF1aXJlZFxuXHQgIH07XG5cdCAgUHJvdmlkZXIuY2hpbGRDb250ZXh0VHlwZXMgPSAoX1Byb3Zp
ZGVyJGNoaWxkQ29udGV4ID0ge30sIF9Qcm92aWRlciRjaGlsZENvbnRleFtzdG9yZUtleV0gPSBf
UHJvcFR5cGVzLnN0b3JlU2hhcGUuaXNSZXF1aXJlZCwgX1Byb3ZpZGVyJGNoaWxkQ29udGV4W3N1
YnNjcmlwdGlvbktleV0gPSBfUHJvcFR5cGVzLnN1YnNjcmlwdGlvblNoYXBlLCBfUHJvdmlkZXIk
Y2hpbGRDb250ZXgpO1xuXHRcblx0ICByZXR1cm4gUHJvdmlkZXI7XG5cdH1cblx0XG5cdGV4cG9y
dHMuZGVmYXVsdCA9IGNyZWF0ZVByb3ZpZGVyKCk7XG5cbi8qKiovIH0sXG4vKiAxODggKi9cbi8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5c
dCd1c2Ugc3RyaWN0Jztcblx0XG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cdFxuXHR2
YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2
YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3Vt
ZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5o
YXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtr
ZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9O1xuXHRcblx0ZXhwb3J0cy5jcmVhdGVDb25uZWN0
ID0gY3JlYXRlQ29ubmVjdDtcblx0XG5cdHZhciBfY29ubmVjdEFkdmFuY2VkID0gX193ZWJwYWNr
X3JlcXVpcmVfXyg3OSk7XG5cdFxuXHR2YXIgX2Nvbm5lY3RBZHZhbmNlZDIgPSBfaW50ZXJvcFJl
cXVpcmVEZWZhdWx0KF9jb25uZWN0QWR2YW5jZWQpO1xuXHRcblx0dmFyIF9zaGFsbG93RXF1YWwg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5NSk7XG5cdFxuXHR2YXIgX3NoYWxsb3dFcXVhbDIgPSBf
aW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9zaGFsbG93RXF1YWwpO1xuXHRcblx0dmFyIF9tYXBEaXNw
YXRjaFRvUHJvcHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE4OSk7XG5cdFxuXHR2YXIgX21hcERp
c3BhdGNoVG9Qcm9wczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9tYXBEaXNwYXRjaFRvUHJv
cHMpO1xuXHRcblx0dmFyIF9tYXBTdGF0ZVRvUHJvcHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5
MCk7XG5cdFxuXHR2YXIgX21hcFN0YXRlVG9Qcm9wczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0
KF9tYXBTdGF0ZVRvUHJvcHMpO1xuXHRcblx0dmFyIF9tZXJnZVByb3BzID0gX193ZWJwYWNrX3Jl
cXVpcmVfXygxOTEpO1xuXHRcblx0dmFyIF9tZXJnZVByb3BzMiA9IF9pbnRlcm9wUmVxdWlyZURl
ZmF1bHQoX21lcmdlUHJvcHMpO1xuXHRcblx0dmFyIF9zZWxlY3RvckZhY3RvcnkgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDE5Mik7XG5cdFxuXHR2YXIgX3NlbGVjdG9yRmFjdG9yeTIgPSBfaW50ZXJv
cFJlcXVpcmVEZWZhdWx0KF9zZWxlY3RvckZhY3RvcnkpO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVy
b3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9i
aiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblx0XG5cdGZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJv
cGVydGllcyhvYmosIGtleXMpIHsgdmFyIHRhcmdldCA9IHt9OyBmb3IgKHZhciBpIGluIG9iaikg
eyBpZiAoa2V5cy5pbmRleE9mKGkpID49IDApIGNvbnRpbnVlOyBpZiAoIU9iamVjdC5wcm90b3R5
cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGkpKSBjb250aW51ZTsgdGFyZ2V0W2ldID0gb2Jq
W2ldOyB9IHJldHVybiB0YXJnZXQ7IH1cblx0XG5cdC8qXG5cdCAgY29ubmVjdCBpcyBhIGZhY2Fk
ZSBvdmVyIGNvbm5lY3RBZHZhbmNlZC4gSXQgdHVybnMgaXRzIGFyZ3MgaW50byBhIGNvbXBhdGli
bGVcblx0ICBzZWxlY3RvckZhY3RvcnksIHdoaWNoIGhhcyB0aGUgc2lnbmF0dXJlOlxuXHRcblx0
ICAgIChkaXNwYXRjaCwgb3B0aW9ucykgPT4gKG5leHRTdGF0ZSwgbmV4dE93blByb3BzKSA9PiBu
ZXh0RmluYWxQcm9wc1xuXHQgIFxuXHQgIGNvbm5lY3QgcGFzc2VzIGl0cyBhcmdzIHRvIGNvbm5l
Y3RBZHZhbmNlZCBhcyBvcHRpb25zLCB3aGljaCB3aWxsIGluIHR1cm4gcGFzcyB0aGVtIHRvXG5c
dCAgc2VsZWN0b3JGYWN0b3J5IGVhY2ggdGltZSBhIENvbm5lY3QgY29tcG9uZW50IGluc3RhbmNl
IGlzIGluc3RhbnRpYXRlZCBvciBob3QgcmVsb2FkZWQuXG5cdFxuXHQgIHNlbGVjdG9yRmFjdG9y
eSByZXR1cm5zIGEgZmluYWwgcHJvcHMgc2VsZWN0b3IgZnJvbSBpdHMgbWFwU3RhdGVUb1Byb3Bz
LFxuXHQgIG1hcFN0YXRlVG9Qcm9wc0ZhY3RvcmllcywgbWFwRGlzcGF0Y2hUb1Byb3BzLCBtYXBE
aXNwYXRjaFRvUHJvcHNGYWN0b3JpZXMsIG1lcmdlUHJvcHMsXG5cdCAgbWVyZ2VQcm9wc0ZhY3Rv
cmllcywgYW5kIHB1cmUgYXJncy5cblx0XG5cdCAgVGhlIHJlc3VsdGluZyBmaW5hbCBwcm9wcyBz
ZWxlY3RvciBpcyBjYWxsZWQgYnkgdGhlIENvbm5lY3QgY29tcG9uZW50IGluc3RhbmNlIHdoZW5l
dmVyXG5cdCAgaXQgcmVjZWl2ZXMgbmV3IHByb3BzIG9yIHN0b3JlIHN0YXRlLlxuXHQgKi9cblx0
XG5cdGZ1bmN0aW9uIG1hdGNoKGFyZywgZmFjdG9yaWVzLCBuYW1lKSB7XG5cdCAgZm9yICh2YXIg
aSA9IGZhY3Rvcmllcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xuXHQgICAgdmFyIHJlc3Vs
dCA9IGZhY3Rvcmllc1tpXShhcmcpO1xuXHQgICAgaWYgKHJlc3VsdCkgcmV0dXJuIHJlc3VsdDtc
blx0ICB9XG5cdFxuXHQgIHJldHVybiBmdW5jdGlvbiAoZGlzcGF0Y2gsIG9wdGlvbnMpIHtcblx0
ICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB2YWx1ZSBvZiB0eXBlICcgKyB0eXBlb2YgYXJn
ICsgJyBmb3IgJyArIG5hbWUgKyAnIGFyZ3VtZW50IHdoZW4gY29ubmVjdGluZyBjb21wb25lbnQg
JyArIG9wdGlvbnMud3JhcHBlZENvbXBvbmVudE5hbWUgKyAnLicpO1xuXHQgIH07XG5cdH1cblx0
XG5cdGZ1bmN0aW9uIHN0cmljdEVxdWFsKGEsIGIpIHtcblx0ICByZXR1cm4gYSA9PT0gYjtcblx0
fVxuXHRcblx0Ly8gY3JlYXRlQ29ubmVjdCB3aXRoIGRlZmF1bHQgYXJncyBidWlsZHMgdGhlICdv
ZmZpY2lhbCcgY29ubmVjdCBiZWhhdmlvci4gQ2FsbGluZyBpdCB3aXRoXG5cdC8vIGRpZmZlcmVu
dCBvcHRpb25zIG9wZW5zIHVwIHNvbWUgdGVzdGluZyBhbmQgZXh0ZW5zaWJpbGl0eSBzY2VuYXJp
b3Ncblx0ZnVuY3Rpb24gY3JlYXRlQ29ubmVjdCgpIHtcblx0ICB2YXIgX3JlZiA9IGFyZ3VtZW50
cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBd
IDoge30sXG5cdCAgICAgIF9yZWYkY29ubmVjdEhPQyA9IF9yZWYuY29ubmVjdEhPQyxcblx0ICAg
ICAgY29ubmVjdEhPQyA9IF9yZWYkY29ubmVjdEhPQyA9PT0gdW5kZWZpbmVkID8gX2Nvbm5lY3RB
ZHZhbmNlZDIuZGVmYXVsdCA6IF9yZWYkY29ubmVjdEhPQyxcblx0ICAgICAgX3JlZiRtYXBTdGF0
ZVRvUHJvcHNGID0gX3JlZi5tYXBTdGF0ZVRvUHJvcHNGYWN0b3JpZXMsXG5cdCAgICAgIG1hcFN0
YXRlVG9Qcm9wc0ZhY3RvcmllcyA9IF9yZWYkbWFwU3RhdGVUb1Byb3BzRiA9PT0gdW5kZWZpbmVk
ID8gX21hcFN0YXRlVG9Qcm9wczIuZGVmYXVsdCA6IF9yZWYkbWFwU3RhdGVUb1Byb3BzRixcblx0
ICAgICAgX3JlZiRtYXBEaXNwYXRjaFRvUHJvID0gX3JlZi5tYXBEaXNwYXRjaFRvUHJvcHNGYWN0
b3JpZXMsXG5cdCAgICAgIG1hcERpc3BhdGNoVG9Qcm9wc0ZhY3RvcmllcyA9IF9yZWYkbWFwRGlz
cGF0Y2hUb1BybyA9PT0gdW5kZWZpbmVkID8gX21hcERpc3BhdGNoVG9Qcm9wczIuZGVmYXVsdCA6
IF9yZWYkbWFwRGlzcGF0Y2hUb1Bybyxcblx0ICAgICAgX3JlZiRtZXJnZVByb3BzRmFjdG9yID0g
X3JlZi5tZXJnZVByb3BzRmFjdG9yaWVzLFxuXHQgICAgICBtZXJnZVByb3BzRmFjdG9yaWVzID0g
X3JlZiRtZXJnZVByb3BzRmFjdG9yID09PSB1bmRlZmluZWQgPyBfbWVyZ2VQcm9wczIuZGVmYXVs
dCA6IF9yZWYkbWVyZ2VQcm9wc0ZhY3Rvcixcblx0ICAgICAgX3JlZiRzZWxlY3RvckZhY3Rvcnkg
PSBfcmVmLnNlbGVjdG9yRmFjdG9yeSxcblx0ICAgICAgc2VsZWN0b3JGYWN0b3J5ID0gX3JlZiRz
ZWxlY3RvckZhY3RvcnkgPT09IHVuZGVmaW5lZCA/IF9zZWxlY3RvckZhY3RvcnkyLmRlZmF1bHQg
OiBfcmVmJHNlbGVjdG9yRmFjdG9yeTtcblx0XG5cdCAgcmV0dXJuIGZ1bmN0aW9uIGNvbm5lY3Qo
bWFwU3RhdGVUb1Byb3BzLCBtYXBEaXNwYXRjaFRvUHJvcHMsIG1lcmdlUHJvcHMpIHtcblx0ICAg
IHZhciBfcmVmMiA9IGFyZ3VtZW50cy5sZW5ndGggPiAzICYmIGFyZ3VtZW50c1szXSAhPT0gdW5k
ZWZpbmVkID8gYXJndW1lbnRzWzNdIDoge30sXG5cdCAgICAgICAgX3JlZjIkcHVyZSA9IF9yZWYy
LnB1cmUsXG5cdCAgICAgICAgcHVyZSA9IF9yZWYyJHB1cmUgPT09IHVuZGVmaW5lZCA/IHRydWUg
OiBfcmVmMiRwdXJlLFxuXHQgICAgICAgIF9yZWYyJGFyZVN0YXRlc0VxdWFsID0gX3JlZjIuYXJl
U3RhdGVzRXF1YWwsXG5cdCAgICAgICAgYXJlU3RhdGVzRXF1YWwgPSBfcmVmMiRhcmVTdGF0ZXNF
cXVhbCA9PT0gdW5kZWZpbmVkID8gc3RyaWN0RXF1YWwgOiBfcmVmMiRhcmVTdGF0ZXNFcXVhbCxc
blx0ICAgICAgICBfcmVmMiRhcmVPd25Qcm9wc0VxdWEgPSBfcmVmMi5hcmVPd25Qcm9wc0VxdWFs
LFxuXHQgICAgICAgIGFyZU93blByb3BzRXF1YWwgPSBfcmVmMiRhcmVPd25Qcm9wc0VxdWEgPT09
IHVuZGVmaW5lZCA/IF9zaGFsbG93RXF1YWwyLmRlZmF1bHQgOiBfcmVmMiRhcmVPd25Qcm9wc0Vx
dWEsXG5cdCAgICAgICAgX3JlZjIkYXJlU3RhdGVQcm9wc0VxID0gX3JlZjIuYXJlU3RhdGVQcm9w
c0VxdWFsLFxuXHQgICAgICAgIGFyZVN0YXRlUHJvcHNFcXVhbCA9IF9yZWYyJGFyZVN0YXRlUHJv
cHNFcSA9PT0gdW5kZWZpbmVkID8gX3NoYWxsb3dFcXVhbDIuZGVmYXVsdCA6IF9yZWYyJGFyZVN0
YXRlUHJvcHNFcSxcblx0ICAgICAgICBfcmVmMiRhcmVNZXJnZWRQcm9wc0UgPSBfcmVmMi5hcmVN
ZXJnZWRQcm9wc0VxdWFsLFxuXHQgICAgICAgIGFyZU1lcmdlZFByb3BzRXF1YWwgPSBfcmVmMiRh
cmVNZXJnZWRQcm9wc0UgPT09IHVuZGVmaW5lZCA/IF9zaGFsbG93RXF1YWwyLmRlZmF1bHQgOiBf
cmVmMiRhcmVNZXJnZWRQcm9wc0UsXG5cdCAgICAgICAgZXh0cmFPcHRpb25zID0gX29iamVjdFdp
dGhvdXRQcm9wZXJ0aWVzKF9yZWYyLCBbJ3B1cmUnLCAnYXJlU3RhdGVzRXF1YWwnLCAnYXJlT3du
UHJvcHNFcXVhbCcsICdhcmVTdGF0ZVByb3BzRXF1YWwnLCAnYXJlTWVyZ2VkUHJvcHNFcXVhbCdd
KTtcblx0XG5cdCAgICB2YXIgaW5pdE1hcFN0YXRlVG9Qcm9wcyA9IG1hdGNoKG1hcFN0YXRlVG9Q
cm9wcywgbWFwU3RhdGVUb1Byb3BzRmFjdG9yaWVzLCAnbWFwU3RhdGVUb1Byb3BzJyk7XG5cdCAg
ICB2YXIgaW5pdE1hcERpc3BhdGNoVG9Qcm9wcyA9IG1hdGNoKG1hcERpc3BhdGNoVG9Qcm9wcywg
bWFwRGlzcGF0Y2hUb1Byb3BzRmFjdG9yaWVzLCAnbWFwRGlzcGF0Y2hUb1Byb3BzJyk7XG5cdCAg
ICB2YXIgaW5pdE1lcmdlUHJvcHMgPSBtYXRjaChtZXJnZVByb3BzLCBtZXJnZVByb3BzRmFjdG9y
aWVzLCAnbWVyZ2VQcm9wcycpO1xuXHRcblx0ICAgIHJldHVybiBjb25uZWN0SE9DKHNlbGVjdG9y
RmFjdG9yeSwgX2V4dGVuZHMoe1xuXHQgICAgICAvLyB1c2VkIGluIGVycm9yIG1lc3NhZ2VzXG5c
dCAgICAgIG1ldGhvZE5hbWU6ICdjb25uZWN0Jyxcblx0XG5cdCAgICAgIC8vIHVzZWQgdG8gY29t
cHV0ZSBDb25uZWN0J3MgZGlzcGxheU5hbWUgZnJvbSB0aGUgd3JhcHBlZCBjb21wb25lbnQncyBk
aXNwbGF5TmFtZS5cblx0ICAgICAgZ2V0RGlzcGxheU5hbWU6IGZ1bmN0aW9uIGdldERpc3BsYXlO
YW1lKG5hbWUpIHtcblx0ICAgICAgICByZXR1cm4gJ0Nvbm5lY3QoJyArIG5hbWUgKyAnKSc7XG5c
dCAgICAgIH0sXG5cdFxuXHQgICAgICAvLyBpZiBtYXBTdGF0ZVRvUHJvcHMgaXMgZmFsc3ksIHRo
ZSBDb25uZWN0IGNvbXBvbmVudCBkb2Vzbid0IHN1YnNjcmliZSB0byBzdG9yZSBzdGF0ZSBjaGFu
Z2VzXG5cdCAgICAgIHNob3VsZEhhbmRsZVN0YXRlQ2hhbmdlczogQm9vbGVhbihtYXBTdGF0ZVRv
UHJvcHMpLFxuXHRcblx0ICAgICAgLy8gcGFzc2VkIHRocm91Z2ggdG8gc2VsZWN0b3JGYWN0b3J5
XG5cdCAgICAgIGluaXRNYXBTdGF0ZVRvUHJvcHM6IGluaXRNYXBTdGF0ZVRvUHJvcHMsXG5cdCAg
ICAgIGluaXRNYXBEaXNwYXRjaFRvUHJvcHM6IGluaXRNYXBEaXNwYXRjaFRvUHJvcHMsXG5cdCAg
ICAgIGluaXRNZXJnZVByb3BzOiBpbml0TWVyZ2VQcm9wcyxcblx0ICAgICAgcHVyZTogcHVyZSxc
blx0ICAgICAgYXJlU3RhdGVzRXF1YWw6IGFyZVN0YXRlc0VxdWFsLFxuXHQgICAgICBhcmVPd25Q
cm9wc0VxdWFsOiBhcmVPd25Qcm9wc0VxdWFsLFxuXHQgICAgICBhcmVTdGF0ZVByb3BzRXF1YWw6
IGFyZVN0YXRlUHJvcHNFcXVhbCxcblx0ICAgICAgYXJlTWVyZ2VkUHJvcHNFcXVhbDogYXJlTWVy
Z2VkUHJvcHNFcXVhbFxuXHRcblx0ICAgIH0sIGV4dHJhT3B0aW9ucykpO1xuXHQgIH07XG5cdH1c
blx0XG5cdGV4cG9ydHMuZGVmYXVsdCA9IGNyZWF0ZUNvbm5lY3QoKTtcblxuLyoqKi8gfSxcbi8q
IDE4OSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWly
ZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0ZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1
ZTtcblx0ZXhwb3J0cy53aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNGdW5jdGlvbiA9IHdoZW5NYXBE
aXNwYXRjaFRvUHJvcHNJc0Z1bmN0aW9uO1xuXHRleHBvcnRzLndoZW5NYXBEaXNwYXRjaFRvUHJv
cHNJc01pc3NpbmcgPSB3aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNNaXNzaW5nO1xuXHRleHBvcnRz
LndoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc09iamVjdCA9IHdoZW5NYXBEaXNwYXRjaFRvUHJvcHNJ
c09iamVjdDtcblx0XG5cdHZhciBfcmVkdXggPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMwKTtcblx0
XG5cdHZhciBfd3JhcE1hcFRvUHJvcHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgwKTtcblx0XG5c
dGZ1bmN0aW9uIHdoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc0Z1bmN0aW9uKG1hcERpc3BhdGNoVG9Q
cm9wcykge1xuXHQgIHJldHVybiB0eXBlb2YgbWFwRGlzcGF0Y2hUb1Byb3BzID09PSAnZnVuY3Rp
b24nID8gKDAsIF93cmFwTWFwVG9Qcm9wcy53cmFwTWFwVG9Qcm9wc0Z1bmMpKG1hcERpc3BhdGNo
VG9Qcm9wcywgJ21hcERpc3BhdGNoVG9Qcm9wcycpIDogdW5kZWZpbmVkO1xuXHR9XG5cdFxuXHRm
dW5jdGlvbiB3aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNNaXNzaW5nKG1hcERpc3BhdGNoVG9Qcm9w
cykge1xuXHQgIHJldHVybiAhbWFwRGlzcGF0Y2hUb1Byb3BzID8gKDAsIF93cmFwTWFwVG9Qcm9w
cy53cmFwTWFwVG9Qcm9wc0NvbnN0YW50KShmdW5jdGlvbiAoZGlzcGF0Y2gpIHtcblx0ICAgIHJl
dHVybiB7IGRpc3BhdGNoOiBkaXNwYXRjaCB9O1xuXHQgIH0pIDogdW5kZWZpbmVkO1xuXHR9XG5c
dFxuXHRmdW5jdGlvbiB3aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNPYmplY3QobWFwRGlzcGF0Y2hU
b1Byb3BzKSB7XG5cdCAgcmV0dXJuIG1hcERpc3BhdGNoVG9Qcm9wcyAmJiB0eXBlb2YgbWFwRGlz
cGF0Y2hUb1Byb3BzID09PSAnb2JqZWN0JyA/ICgwLCBfd3JhcE1hcFRvUHJvcHMud3JhcE1hcFRv
UHJvcHNDb25zdGFudCkoZnVuY3Rpb24gKGRpc3BhdGNoKSB7XG5cdCAgICByZXR1cm4gKDAsIF9y
ZWR1eC5iaW5kQWN0aW9uQ3JlYXRvcnMpKG1hcERpc3BhdGNoVG9Qcm9wcywgZGlzcGF0Y2gpO1xu
XHQgIH0pIDogdW5kZWZpbmVkO1xuXHR9XG5cdFxuXHRleHBvcnRzLmRlZmF1bHQgPSBbd2hlbk1h
cERpc3BhdGNoVG9Qcm9wc0lzRnVuY3Rpb24sIHdoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc01pc3Np
bmcsIHdoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc09iamVjdF07XG5cbi8qKiovIH0sXG4vKiAxOTAg
Ki9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykg
e1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5c
dGV4cG9ydHMud2hlbk1hcFN0YXRlVG9Qcm9wc0lzRnVuY3Rpb24gPSB3aGVuTWFwU3RhdGVUb1By
b3BzSXNGdW5jdGlvbjtcblx0ZXhwb3J0cy53aGVuTWFwU3RhdGVUb1Byb3BzSXNNaXNzaW5nID0g
d2hlbk1hcFN0YXRlVG9Qcm9wc0lzTWlzc2luZztcblx0XG5cdHZhciBfd3JhcE1hcFRvUHJvcHMg
PSBfX3dlYnBhY2tfcmVxdWlyZV9fKDgwKTtcblx0XG5cdGZ1bmN0aW9uIHdoZW5NYXBTdGF0ZVRv
UHJvcHNJc0Z1bmN0aW9uKG1hcFN0YXRlVG9Qcm9wcykge1xuXHQgIHJldHVybiB0eXBlb2YgbWFw
U3RhdGVUb1Byb3BzID09PSAnZnVuY3Rpb24nID8gKDAsIF93cmFwTWFwVG9Qcm9wcy53cmFwTWFw
VG9Qcm9wc0Z1bmMpKG1hcFN0YXRlVG9Qcm9wcywgJ21hcFN0YXRlVG9Qcm9wcycpIDogdW5kZWZp
bmVkO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiB3aGVuTWFwU3RhdGVUb1Byb3BzSXNNaXNzaW5nKG1h
cFN0YXRlVG9Qcm9wcykge1xuXHQgIHJldHVybiAhbWFwU3RhdGVUb1Byb3BzID8gKDAsIF93cmFw
TWFwVG9Qcm9wcy53cmFwTWFwVG9Qcm9wc0NvbnN0YW50KShmdW5jdGlvbiAoKSB7XG5cdCAgICBy
ZXR1cm4ge307XG5cdCAgfSkgOiB1bmRlZmluZWQ7XG5cdH1cblx0XG5cdGV4cG9ydHMuZGVmYXVs
dCA9IFt3aGVuTWFwU3RhdGVUb1Byb3BzSXNGdW5jdGlvbiwgd2hlbk1hcFN0YXRlVG9Qcm9wc0lz
TWlzc2luZ107XG5cbi8qKiovIH0sXG4vKiAxOTEgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwg
ZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5c
dGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cdFxuXHR2YXIgX2V4dGVuZHMgPSBPYmplY3Qu
YXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVu
dHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5
IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNv
dXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFy
Z2V0OyB9O1xuXHRcblx0ZXhwb3J0cy5kZWZhdWx0TWVyZ2VQcm9wcyA9IGRlZmF1bHRNZXJnZVBy
b3BzO1xuXHRleHBvcnRzLndyYXBNZXJnZVByb3BzRnVuYyA9IHdyYXBNZXJnZVByb3BzRnVuYztc
blx0ZXhwb3J0cy53aGVuTWVyZ2VQcm9wc0lzRnVuY3Rpb24gPSB3aGVuTWVyZ2VQcm9wc0lzRnVu
Y3Rpb247XG5cdGV4cG9ydHMud2hlbk1lcmdlUHJvcHNJc09taXR0ZWQgPSB3aGVuTWVyZ2VQcm9w
c0lzT21pdHRlZDtcblx0XG5cdHZhciBfdmVyaWZ5UGxhaW5PYmplY3QgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDgzKTtcblx0XG5cdHZhciBfdmVyaWZ5UGxhaW5PYmplY3QyID0gX2ludGVyb3BSZXF1
aXJlRGVmYXVsdChfdmVyaWZ5UGxhaW5PYmplY3QpO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BS
ZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6
IHsgZGVmYXVsdDogb2JqIH07IH1cblx0XG5cdGZ1bmN0aW9uIGRlZmF1bHRNZXJnZVByb3BzKHN0
YXRlUHJvcHMsIGRpc3BhdGNoUHJvcHMsIG93blByb3BzKSB7XG5cdCAgcmV0dXJuIF9leHRlbmRz
KHt9LCBvd25Qcm9wcywgc3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9wcyk7XG5cdH1cblx0XG5cdGZ1
bmN0aW9uIHdyYXBNZXJnZVByb3BzRnVuYyhtZXJnZVByb3BzKSB7XG5cdCAgcmV0dXJuIGZ1bmN0
aW9uIGluaXRNZXJnZVByb3BzUHJveHkoZGlzcGF0Y2gsIF9yZWYpIHtcblx0ICAgIHZhciBkaXNw
bGF5TmFtZSA9IF9yZWYuZGlzcGxheU5hbWUsXG5cdCAgICAgICAgcHVyZSA9IF9yZWYucHVyZSxc
blx0ICAgICAgICBhcmVNZXJnZWRQcm9wc0VxdWFsID0gX3JlZi5hcmVNZXJnZWRQcm9wc0VxdWFs
O1xuXHRcblx0ICAgIHZhciBoYXNSdW5PbmNlID0gZmFsc2U7XG5cdCAgICB2YXIgbWVyZ2VkUHJv
cHMgPSB2b2lkIDA7XG5cdFxuXHQgICAgcmV0dXJuIGZ1bmN0aW9uIG1lcmdlUHJvcHNQcm94eShz
dGF0ZVByb3BzLCBkaXNwYXRjaFByb3BzLCBvd25Qcm9wcykge1xuXHQgICAgICB2YXIgbmV4dE1l
cmdlZFByb3BzID0gbWVyZ2VQcm9wcyhzdGF0ZVByb3BzLCBkaXNwYXRjaFByb3BzLCBvd25Qcm9w
cyk7XG5cdFxuXHQgICAgICBpZiAoaGFzUnVuT25jZSkge1xuXHQgICAgICAgIGlmICghcHVyZSB8
fCAhYXJlTWVyZ2VkUHJvcHNFcXVhbChuZXh0TWVyZ2VkUHJvcHMsIG1lcmdlZFByb3BzKSkgbWVy
Z2VkUHJvcHMgPSBuZXh0TWVyZ2VkUHJvcHM7XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAg
aGFzUnVuT25jZSA9IHRydWU7XG5cdCAgICAgICAgbWVyZ2VkUHJvcHMgPSBuZXh0TWVyZ2VkUHJv
cHM7XG5cdFxuXHQgICAgICAgIGlmIChmYWxzZSkgKDAsIF92ZXJpZnlQbGFpbk9iamVjdDIuZGVm
YXVsdCkobWVyZ2VkUHJvcHMsIGRpc3BsYXlOYW1lLCAnbWVyZ2VQcm9wcycpO1xuXHQgICAgICB9
XG5cdFxuXHQgICAgICByZXR1cm4gbWVyZ2VkUHJvcHM7XG5cdCAgICB9O1xuXHQgIH07XG5cdH1c
blx0XG5cdGZ1bmN0aW9uIHdoZW5NZXJnZVByb3BzSXNGdW5jdGlvbihtZXJnZVByb3BzKSB7XG5c
dCAgcmV0dXJuIHR5cGVvZiBtZXJnZVByb3BzID09PSAnZnVuY3Rpb24nID8gd3JhcE1lcmdlUHJv
cHNGdW5jKG1lcmdlUHJvcHMpIDogdW5kZWZpbmVkO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiB3aGVu
TWVyZ2VQcm9wc0lzT21pdHRlZChtZXJnZVByb3BzKSB7XG5cdCAgcmV0dXJuICFtZXJnZVByb3Bz
ID8gZnVuY3Rpb24gKCkge1xuXHQgICAgcmV0dXJuIGRlZmF1bHRNZXJnZVByb3BzO1xuXHQgIH0g
OiB1bmRlZmluZWQ7XG5cdH1cblx0XG5cdGV4cG9ydHMuZGVmYXVsdCA9IFt3aGVuTWVyZ2VQcm9w
c0lzRnVuY3Rpb24sIHdoZW5NZXJnZVByb3BzSXNPbWl0dGVkXTtcblxuLyoqKi8gfSxcbi8qIDE5
MiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9f
KSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0ZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtc
blx0ZXhwb3J0cy5pbXB1cmVGaW5hbFByb3BzU2VsZWN0b3JGYWN0b3J5ID0gaW1wdXJlRmluYWxQ
cm9wc1NlbGVjdG9yRmFjdG9yeTtcblx0ZXhwb3J0cy5wdXJlRmluYWxQcm9wc1NlbGVjdG9yRmFj
dG9yeSA9IHB1cmVGaW5hbFByb3BzU2VsZWN0b3JGYWN0b3J5O1xuXHRleHBvcnRzLmRlZmF1bHQg
PSBmaW5hbFByb3BzU2VsZWN0b3JGYWN0b3J5O1xuXHRcblx0dmFyIF92ZXJpZnlTdWJzZWxlY3Rv
cnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5Myk7XG5cdFxuXHR2YXIgX3ZlcmlmeVN1YnNlbGVj
dG9yczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF92ZXJpZnlTdWJzZWxlY3RvcnMpO1xuXHRc
blx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBv
YmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblx0XG5cdGZ1bmN0aW9u
IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhvYmosIGtleXMpIHsgdmFyIHRhcmdldCA9IHt9OyBm
b3IgKHZhciBpIGluIG9iaikgeyBpZiAoa2V5cy5pbmRleE9mKGkpID49IDApIGNvbnRpbnVlOyBp
ZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGkpKSBjb250aW51
ZTsgdGFyZ2V0W2ldID0gb2JqW2ldOyB9IHJldHVybiB0YXJnZXQ7IH1cblx0XG5cdGZ1bmN0aW9u
IGltcHVyZUZpbmFsUHJvcHNTZWxlY3RvckZhY3RvcnkobWFwU3RhdGVUb1Byb3BzLCBtYXBEaXNw
YXRjaFRvUHJvcHMsIG1lcmdlUHJvcHMsIGRpc3BhdGNoKSB7XG5cdCAgcmV0dXJuIGZ1bmN0aW9u
IGltcHVyZUZpbmFsUHJvcHNTZWxlY3RvcihzdGF0ZSwgb3duUHJvcHMpIHtcblx0ICAgIHJldHVy
biBtZXJnZVByb3BzKG1hcFN0YXRlVG9Qcm9wcyhzdGF0ZSwgb3duUHJvcHMpLCBtYXBEaXNwYXRj
aFRvUHJvcHMoZGlzcGF0Y2gsIG93blByb3BzKSwgb3duUHJvcHMpO1xuXHQgIH07XG5cdH1cblx0
XG5cdGZ1bmN0aW9uIHB1cmVGaW5hbFByb3BzU2VsZWN0b3JGYWN0b3J5KG1hcFN0YXRlVG9Qcm9w
cywgbWFwRGlzcGF0Y2hUb1Byb3BzLCBtZXJnZVByb3BzLCBkaXNwYXRjaCwgX3JlZikge1xuXHQg
IHZhciBhcmVTdGF0ZXNFcXVhbCA9IF9yZWYuYXJlU3RhdGVzRXF1YWwsXG5cdCAgICAgIGFyZU93
blByb3BzRXF1YWwgPSBfcmVmLmFyZU93blByb3BzRXF1YWwsXG5cdCAgICAgIGFyZVN0YXRlUHJv
cHNFcXVhbCA9IF9yZWYuYXJlU3RhdGVQcm9wc0VxdWFsO1xuXHRcblx0ICB2YXIgaGFzUnVuQXRM
ZWFzdE9uY2UgPSBmYWxzZTtcblx0ICB2YXIgc3RhdGUgPSB2b2lkIDA7XG5cdCAgdmFyIG93blBy
b3BzID0gdm9pZCAwO1xuXHQgIHZhciBzdGF0ZVByb3BzID0gdm9pZCAwO1xuXHQgIHZhciBkaXNw
YXRjaFByb3BzID0gdm9pZCAwO1xuXHQgIHZhciBtZXJnZWRQcm9wcyA9IHZvaWQgMDtcblx0XG5c
dCAgZnVuY3Rpb24gaGFuZGxlRmlyc3RDYWxsKGZpcnN0U3RhdGUsIGZpcnN0T3duUHJvcHMpIHtc
blx0ICAgIHN0YXRlID0gZmlyc3RTdGF0ZTtcblx0ICAgIG93blByb3BzID0gZmlyc3RPd25Qcm9w
cztcblx0ICAgIHN0YXRlUHJvcHMgPSBtYXBTdGF0ZVRvUHJvcHMoc3RhdGUsIG93blByb3BzKTtc
blx0ICAgIGRpc3BhdGNoUHJvcHMgPSBtYXBEaXNwYXRjaFRvUHJvcHMoZGlzcGF0Y2gsIG93blBy
b3BzKTtcblx0ICAgIG1lcmdlZFByb3BzID0gbWVyZ2VQcm9wcyhzdGF0ZVByb3BzLCBkaXNwYXRj
aFByb3BzLCBvd25Qcm9wcyk7XG5cdCAgICBoYXNSdW5BdExlYXN0T25jZSA9IHRydWU7XG5cdCAg
ICByZXR1cm4gbWVyZ2VkUHJvcHM7XG5cdCAgfVxuXHRcblx0ICBmdW5jdGlvbiBoYW5kbGVOZXdQ
cm9wc0FuZE5ld1N0YXRlKCkge1xuXHQgICAgc3RhdGVQcm9wcyA9IG1hcFN0YXRlVG9Qcm9wcyhz
dGF0ZSwgb3duUHJvcHMpO1xuXHRcblx0ICAgIGlmIChtYXBEaXNwYXRjaFRvUHJvcHMuZGVwZW5k
c09uT3duUHJvcHMpIGRpc3BhdGNoUHJvcHMgPSBtYXBEaXNwYXRjaFRvUHJvcHMoZGlzcGF0Y2gs
IG93blByb3BzKTtcblx0XG5cdCAgICBtZXJnZWRQcm9wcyA9IG1lcmdlUHJvcHMoc3RhdGVQcm9w
cywgZGlzcGF0Y2hQcm9wcywgb3duUHJvcHMpO1xuXHQgICAgcmV0dXJuIG1lcmdlZFByb3BzO1xu
XHQgIH1cblx0XG5cdCAgZnVuY3Rpb24gaGFuZGxlTmV3UHJvcHMoKSB7XG5cdCAgICBpZiAobWFw
U3RhdGVUb1Byb3BzLmRlcGVuZHNPbk93blByb3BzKSBzdGF0ZVByb3BzID0gbWFwU3RhdGVUb1By
b3BzKHN0YXRlLCBvd25Qcm9wcyk7XG5cdFxuXHQgICAgaWYgKG1hcERpc3BhdGNoVG9Qcm9wcy5k
ZXBlbmRzT25Pd25Qcm9wcykgZGlzcGF0Y2hQcm9wcyA9IG1hcERpc3BhdGNoVG9Qcm9wcyhkaXNw
YXRjaCwgb3duUHJvcHMpO1xuXHRcblx0ICAgIG1lcmdlZFByb3BzID0gbWVyZ2VQcm9wcyhzdGF0
ZVByb3BzLCBkaXNwYXRjaFByb3BzLCBvd25Qcm9wcyk7XG5cdCAgICByZXR1cm4gbWVyZ2VkUHJv
cHM7XG5cdCAgfVxuXHRcblx0ICBmdW5jdGlvbiBoYW5kbGVOZXdTdGF0ZSgpIHtcblx0ICAgIHZh
ciBuZXh0U3RhdGVQcm9wcyA9IG1hcFN0YXRlVG9Qcm9wcyhzdGF0ZSwgb3duUHJvcHMpO1xuXHQg
ICAgdmFyIHN0YXRlUHJvcHNDaGFuZ2VkID0gIWFyZVN0YXRlUHJvcHNFcXVhbChuZXh0U3RhdGVQ
cm9wcywgc3RhdGVQcm9wcyk7XG5cdCAgICBzdGF0ZVByb3BzID0gbmV4dFN0YXRlUHJvcHM7XG5c
dFxuXHQgICAgaWYgKHN0YXRlUHJvcHNDaGFuZ2VkKSBtZXJnZWRQcm9wcyA9IG1lcmdlUHJvcHMo
c3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9wcywgb3duUHJvcHMpO1xuXHRcblx0ICAgIHJldHVybiBt
ZXJnZWRQcm9wcztcblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIGhhbmRsZVN1YnNlcXVlbnRDYWxs
cyhuZXh0U3RhdGUsIG5leHRPd25Qcm9wcykge1xuXHQgICAgdmFyIHByb3BzQ2hhbmdlZCA9ICFh
cmVPd25Qcm9wc0VxdWFsKG5leHRPd25Qcm9wcywgb3duUHJvcHMpO1xuXHQgICAgdmFyIHN0YXRl
Q2hhbmdlZCA9ICFhcmVTdGF0ZXNFcXVhbChuZXh0U3RhdGUsIHN0YXRlKTtcblx0ICAgIHN0YXRl
ID0gbmV4dFN0YXRlO1xuXHQgICAgb3duUHJvcHMgPSBuZXh0T3duUHJvcHM7XG5cdFxuXHQgICAg
aWYgKHByb3BzQ2hhbmdlZCAmJiBzdGF0ZUNoYW5nZWQpIHJldHVybiBoYW5kbGVOZXdQcm9wc0Fu
ZE5ld1N0YXRlKCk7XG5cdCAgICBpZiAocHJvcHNDaGFuZ2VkKSByZXR1cm4gaGFuZGxlTmV3UHJv
cHMoKTtcblx0ICAgIGlmIChzdGF0ZUNoYW5nZWQpIHJldHVybiBoYW5kbGVOZXdTdGF0ZSgpO1xu
XHQgICAgcmV0dXJuIG1lcmdlZFByb3BzO1xuXHQgIH1cblx0XG5cdCAgcmV0dXJuIGZ1bmN0aW9u
IHB1cmVGaW5hbFByb3BzU2VsZWN0b3IobmV4dFN0YXRlLCBuZXh0T3duUHJvcHMpIHtcblx0ICAg
IHJldHVybiBoYXNSdW5BdExlYXN0T25jZSA/IGhhbmRsZVN1YnNlcXVlbnRDYWxscyhuZXh0U3Rh
dGUsIG5leHRPd25Qcm9wcykgOiBoYW5kbGVGaXJzdENhbGwobmV4dFN0YXRlLCBuZXh0T3duUHJv
cHMpO1xuXHQgIH07XG5cdH1cblx0XG5cdC8vIFRPRE86IEFkZCBtb3JlIGNvbW1lbnRzXG5cdFxu
XHQvLyBJZiBwdXJlIGlzIHRydWUsIHRoZSBzZWxlY3RvciByZXR1cm5lZCBieSBzZWxlY3RvckZh
Y3Rvcnkgd2lsbCBtZW1vaXplIGl0cyByZXN1bHRzLFxuXHQvLyBhbGxvd2luZyBjb25uZWN0QWR2
YW5jZWQncyBzaG91bGRDb21wb25lbnRVcGRhdGUgdG8gcmV0dXJuIGZhbHNlIGlmIGZpbmFsXG5c
dC8vIHByb3BzIGhhdmUgbm90IGNoYW5nZWQuIElmIGZhbHNlLCB0aGUgc2VsZWN0b3Igd2lsbCBh
bHdheXMgcmV0dXJuIGEgbmV3XG5cdC8vIG9iamVjdCBhbmQgc2hvdWxkQ29tcG9uZW50VXBkYXRl
IHdpbGwgYWx3YXlzIHJldHVybiB0cnVlLlxuXHRcblx0ZnVuY3Rpb24gZmluYWxQcm9wc1NlbGVj
dG9yRmFjdG9yeShkaXNwYXRjaCwgX3JlZjIpIHtcblx0ICB2YXIgaW5pdE1hcFN0YXRlVG9Qcm9w
cyA9IF9yZWYyLmluaXRNYXBTdGF0ZVRvUHJvcHMsXG5cdCAgICAgIGluaXRNYXBEaXNwYXRjaFRv
UHJvcHMgPSBfcmVmMi5pbml0TWFwRGlzcGF0Y2hUb1Byb3BzLFxuXHQgICAgICBpbml0TWVyZ2VQ
cm9wcyA9IF9yZWYyLmluaXRNZXJnZVByb3BzLFxuXHQgICAgICBvcHRpb25zID0gX29iamVjdFdp
dGhvdXRQcm9wZXJ0aWVzKF9yZWYyLCBbJ2luaXRNYXBTdGF0ZVRvUHJvcHMnLCAnaW5pdE1hcERp
c3BhdGNoVG9Qcm9wcycsICdpbml0TWVyZ2VQcm9wcyddKTtcblx0XG5cdCAgdmFyIG1hcFN0YXRl
VG9Qcm9wcyA9IGluaXRNYXBTdGF0ZVRvUHJvcHMoZGlzcGF0Y2gsIG9wdGlvbnMpO1xuXHQgIHZh
ciBtYXBEaXNwYXRjaFRvUHJvcHMgPSBpbml0TWFwRGlzcGF0Y2hUb1Byb3BzKGRpc3BhdGNoLCBv
cHRpb25zKTtcblx0ICB2YXIgbWVyZ2VQcm9wcyA9IGluaXRNZXJnZVByb3BzKGRpc3BhdGNoLCBv
cHRpb25zKTtcblx0XG5cdCAgaWYgKGZhbHNlKSB7XG5cdCAgICAoMCwgX3ZlcmlmeVN1YnNlbGVj
dG9yczIuZGVmYXVsdCkobWFwU3RhdGVUb1Byb3BzLCBtYXBEaXNwYXRjaFRvUHJvcHMsIG1lcmdl
UHJvcHMsIG9wdGlvbnMuZGlzcGxheU5hbWUpO1xuXHQgIH1cblx0XG5cdCAgdmFyIHNlbGVjdG9y
RmFjdG9yeSA9IG9wdGlvbnMucHVyZSA/IHB1cmVGaW5hbFByb3BzU2VsZWN0b3JGYWN0b3J5IDog
aW1wdXJlRmluYWxQcm9wc1NlbGVjdG9yRmFjdG9yeTtcblx0XG5cdCAgcmV0dXJuIHNlbGVjdG9y
RmFjdG9yeShtYXBTdGF0ZVRvUHJvcHMsIG1hcERpc3BhdGNoVG9Qcm9wcywgbWVyZ2VQcm9wcywg
ZGlzcGF0Y2gsIG9wdGlvbnMpO1xuXHR9XG5cbi8qKiovIH0sXG4vKiAxOTMgKi9cbi8qKiovIGZ1
bmN0aW9uKG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdCd1c2Ug
c3RyaWN0Jztcblx0XG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cdGV4cG9ydHMuZGVm
YXVsdCA9IHZlcmlmeVN1YnNlbGVjdG9ycztcblx0XG5cdHZhciBfd2FybmluZyA9IF9fd2VicGFj
a19yZXF1aXJlX18oNTApO1xuXHRcblx0dmFyIF93YXJuaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURl
ZmF1bHQoX3dhcm5pbmcpO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChv
YmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2Jq
IH07IH1cblx0XG5cdGZ1bmN0aW9uIHZlcmlmeShzZWxlY3RvciwgbWV0aG9kTmFtZSwgZGlzcGxh
eU5hbWUpIHtcblx0ICBpZiAoIXNlbGVjdG9yKSB7XG5cdCAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vu
ZXhwZWN0ZWQgdmFsdWUgZm9yICcgKyBtZXRob2ROYW1lICsgJyBpbiAnICsgZGlzcGxheU5hbWUg
KyAnLicpO1xuXHQgIH0gZWxzZSBpZiAobWV0aG9kTmFtZSA9PT0gJ21hcFN0YXRlVG9Qcm9wcycg
fHwgbWV0aG9kTmFtZSA9PT0gJ21hcERpc3BhdGNoVG9Qcm9wcycpIHtcblx0ICAgIGlmICghc2Vs
ZWN0b3IuaGFzT3duUHJvcGVydHkoJ2RlcGVuZHNPbk93blByb3BzJykpIHtcblx0ICAgICAgKDAs
IF93YXJuaW5nMi5kZWZhdWx0KSgnVGhlIHNlbGVjdG9yIGZvciAnICsgbWV0aG9kTmFtZSArICcg
b2YgJyArIGRpc3BsYXlOYW1lICsgJyBkaWQgbm90IHNwZWNpZnkgYSB2YWx1ZSBmb3IgZGVwZW5k
c09uT3duUHJvcHMuJyk7XG5cdCAgICB9XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiB2ZXJp
ZnlTdWJzZWxlY3RvcnMobWFwU3RhdGVUb1Byb3BzLCBtYXBEaXNwYXRjaFRvUHJvcHMsIG1lcmdl
UHJvcHMsIGRpc3BsYXlOYW1lKSB7XG5cdCAgdmVyaWZ5KG1hcFN0YXRlVG9Qcm9wcywgJ21hcFN0
YXRlVG9Qcm9wcycsIGRpc3BsYXlOYW1lKTtcblx0ICB2ZXJpZnkobWFwRGlzcGF0Y2hUb1Byb3Bz
LCAnbWFwRGlzcGF0Y2hUb1Byb3BzJywgZGlzcGxheU5hbWUpO1xuXHQgIHZlcmlmeShtZXJnZVBy
b3BzLCAnbWVyZ2VQcm9wcycsIGRpc3BsYXlOYW1lKTtcblx0fVxuXG4vKioqLyB9LFxuLyogMTk0
ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRcInVzZSBzdHJpY3Rc
Ijtcblx0XG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cdFxuXHRmdW5jdGlvbiBfY2xh
c3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGluc3Rh
bmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2FsbCBh
IGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXHRcblx0Ly8gZW5jYXBzdWxhdGVzIHRoZSBz
dWJzY3JpcHRpb24gbG9naWMgZm9yIGNvbm5lY3RpbmcgYSBjb21wb25lbnQgdG8gdGhlIHJlZHV4
IHN0b3JlLCBhc1xuXHQvLyB3ZWxsIGFzIG5lc3Rpbmcgc3Vic2NyaXB0aW9ucyBvZiBkZXNjZW5k
YW50IGNvbXBvbmVudHMsIHNvIHRoYXQgd2UgY2FuIGVuc3VyZSB0aGVcblx0Ly8gYW5jZXN0b3Ig
Y29tcG9uZW50cyByZS1yZW5kZXIgYmVmb3JlIGRlc2NlbmRhbnRzXG5cdFxuXHR2YXIgQ0xFQVJF
RCA9IG51bGw7XG5cdHZhciBudWxsTGlzdGVuZXJzID0ge1xuXHQgIG5vdGlmeTogZnVuY3Rpb24g
bm90aWZ5KCkge31cblx0fTtcblx0XG5cdGZ1bmN0aW9uIGNyZWF0ZUxpc3RlbmVyQ29sbGVjdGlv
bigpIHtcblx0ICAvLyB0aGUgY3VycmVudC9uZXh0IHBhdHRlcm4gaXMgY29waWVkIGZyb20gcmVk
dXgncyBjcmVhdGVTdG9yZSBjb2RlLlxuXHQgIC8vIFRPRE86IHJlZmFjdG9yK2V4cG9zZSB0aGF0
IGNvZGUgdG8gYmUgcmV1c2FibGUgaGVyZT9cblx0ICB2YXIgY3VycmVudCA9IFtdO1xuXHQgIHZh
ciBuZXh0ID0gW107XG5cdFxuXHQgIHJldHVybiB7XG5cdCAgICBjbGVhcjogZnVuY3Rpb24gY2xl
YXIoKSB7XG5cdCAgICAgIG5leHQgPSBDTEVBUkVEO1xuXHQgICAgICBjdXJyZW50ID0gQ0xFQVJF
RDtcblx0ICAgIH0sXG5cdCAgICBub3RpZnk6IGZ1bmN0aW9uIG5vdGlmeSgpIHtcblx0ICAgICAg
dmFyIGxpc3RlbmVycyA9IGN1cnJlbnQgPSBuZXh0O1xuXHQgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGxpc3RlbmVycy5sZW5ndGg7IGkrKykge1xuXHQgICAgICAgIGxpc3RlbmVyc1tpXSgpO1xu
XHQgICAgICB9XG5cdCAgICB9LFxuXHQgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG5cdCAgICAg
IHJldHVybiBuZXh0O1xuXHQgICAgfSxcblx0ICAgIHN1YnNjcmliZTogZnVuY3Rpb24gc3Vic2Ny
aWJlKGxpc3RlbmVyKSB7XG5cdCAgICAgIHZhciBpc1N1YnNjcmliZWQgPSB0cnVlO1xuXHQgICAg
ICBpZiAobmV4dCA9PT0gY3VycmVudCkgbmV4dCA9IGN1cnJlbnQuc2xpY2UoKTtcblx0ICAgICAg
bmV4dC5wdXNoKGxpc3RlbmVyKTtcblx0XG5cdCAgICAgIHJldHVybiBmdW5jdGlvbiB1bnN1YnNj
cmliZSgpIHtcblx0ICAgICAgICBpZiAoIWlzU3Vic2NyaWJlZCB8fCBjdXJyZW50ID09PSBDTEVB
UkVEKSByZXR1cm47XG5cdCAgICAgICAgaXNTdWJzY3JpYmVkID0gZmFsc2U7XG5cdFxuXHQgICAg
ICAgIGlmIChuZXh0ID09PSBjdXJyZW50KSBuZXh0ID0gY3VycmVudC5zbGljZSgpO1xuXHQgICAg
ICAgIG5leHQuc3BsaWNlKG5leHQuaW5kZXhPZihsaXN0ZW5lciksIDEpO1xuXHQgICAgICB9O1xu
XHQgICAgfVxuXHQgIH07XG5cdH1cblx0XG5cdHZhciBTdWJzY3JpcHRpb24gPSBmdW5jdGlvbiAo
KSB7XG5cdCAgZnVuY3Rpb24gU3Vic2NyaXB0aW9uKHN0b3JlLCBwYXJlbnRTdWIsIG9uU3RhdGVD
aGFuZ2UpIHtcblx0ICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTdWJzY3JpcHRpb24pO1xuXHRc
blx0ICAgIHRoaXMuc3RvcmUgPSBzdG9yZTtcblx0ICAgIHRoaXMucGFyZW50U3ViID0gcGFyZW50
U3ViO1xuXHQgICAgdGhpcy5vblN0YXRlQ2hhbmdlID0gb25TdGF0ZUNoYW5nZTtcblx0ICAgIHRo
aXMudW5zdWJzY3JpYmUgPSBudWxsO1xuXHQgICAgdGhpcy5saXN0ZW5lcnMgPSBudWxsTGlzdGVu
ZXJzO1xuXHQgIH1cblx0XG5cdCAgU3Vic2NyaXB0aW9uLnByb3RvdHlwZS5hZGROZXN0ZWRTdWIg
PSBmdW5jdGlvbiBhZGROZXN0ZWRTdWIobGlzdGVuZXIpIHtcblx0ICAgIHRoaXMudHJ5U3Vic2Ny
aWJlKCk7XG5cdCAgICByZXR1cm4gdGhpcy5saXN0ZW5lcnMuc3Vic2NyaWJlKGxpc3RlbmVyKTtc
blx0ICB9O1xuXHRcblx0ICBTdWJzY3JpcHRpb24ucHJvdG90eXBlLm5vdGlmeU5lc3RlZFN1YnMg
PSBmdW5jdGlvbiBub3RpZnlOZXN0ZWRTdWJzKCkge1xuXHQgICAgdGhpcy5saXN0ZW5lcnMubm90
aWZ5KCk7XG5cdCAgfTtcblx0XG5cdCAgU3Vic2NyaXB0aW9uLnByb3RvdHlwZS5pc1N1YnNjcmli
ZWQgPSBmdW5jdGlvbiBpc1N1YnNjcmliZWQoKSB7XG5cdCAgICByZXR1cm4gQm9vbGVhbih0aGlz
LnVuc3Vic2NyaWJlKTtcblx0ICB9O1xuXHRcblx0ICBTdWJzY3JpcHRpb24ucHJvdG90eXBlLnRy
eVN1YnNjcmliZSA9IGZ1bmN0aW9uIHRyeVN1YnNjcmliZSgpIHtcblx0ICAgIGlmICghdGhpcy51
bnN1YnNjcmliZSkge1xuXHQgICAgICB0aGlzLnVuc3Vic2NyaWJlID0gdGhpcy5wYXJlbnRTdWIg
PyB0aGlzLnBhcmVudFN1Yi5hZGROZXN0ZWRTdWIodGhpcy5vblN0YXRlQ2hhbmdlKSA6IHRoaXMu
c3RvcmUuc3Vic2NyaWJlKHRoaXMub25TdGF0ZUNoYW5nZSk7XG5cdFxuXHQgICAgICB0aGlzLmxp
c3RlbmVycyA9IGNyZWF0ZUxpc3RlbmVyQ29sbGVjdGlvbigpO1xuXHQgICAgfVxuXHQgIH07XG5c
dFxuXHQgIFN1YnNjcmlwdGlvbi5wcm90b3R5cGUudHJ5VW5zdWJzY3JpYmUgPSBmdW5jdGlvbiB0
cnlVbnN1YnNjcmliZSgpIHtcblx0ICAgIGlmICh0aGlzLnVuc3Vic2NyaWJlKSB7XG5cdCAgICAg
IHRoaXMudW5zdWJzY3JpYmUoKTtcblx0ICAgICAgdGhpcy51bnN1YnNjcmliZSA9IG51bGw7XG5c
dCAgICAgIHRoaXMubGlzdGVuZXJzLmNsZWFyKCk7XG5cdCAgICAgIHRoaXMubGlzdGVuZXJzID0g
bnVsbExpc3RlbmVycztcblx0ICAgIH1cblx0ICB9O1xuXHRcblx0ICByZXR1cm4gU3Vic2NyaXB0
aW9uO1xuXHR9KCk7XG5cdFxuXHRleHBvcnRzLmRlZmF1bHQgPSBTdWJzY3JpcHRpb247XG5cbi8q
KiovIH0sXG4vKiAxOTUgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5c
dCd1c2Ugc3RyaWN0Jztcblx0XG5cdGV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cdGV4cG9y
dHMuZGVmYXVsdCA9IHNoYWxsb3dFcXVhbDtcblx0dmFyIGhhc093biA9IE9iamVjdC5wcm90b3R5
cGUuaGFzT3duUHJvcGVydHk7XG5cdFxuXHRmdW5jdGlvbiBpcyh4LCB5KSB7XG5cdCAgaWYgKHgg
PT09IHkpIHtcblx0ICAgIHJldHVybiB4ICE9PSAwIHx8IHkgIT09IDAgfHwgMSAvIHggPT09IDEg
LyB5O1xuXHQgIH0gZWxzZSB7XG5cdCAgICByZXR1cm4geCAhPT0geCAmJiB5ICE9PSB5O1xuXHQg
IH1cblx0fVxuXHRcblx0ZnVuY3Rpb24gc2hhbGxvd0VxdWFsKG9iakEsIG9iakIpIHtcblx0ICBp
ZiAoaXMob2JqQSwgb2JqQikpIHJldHVybiB0cnVlO1xuXHRcblx0ICBpZiAodHlwZW9mIG9iakEg
IT09ICdvYmplY3QnIHx8IG9iakEgPT09IG51bGwgfHwgdHlwZW9mIG9iakIgIT09ICdvYmplY3Qn
IHx8IG9iakIgPT09IG51bGwpIHtcblx0ICAgIHJldHVybiBmYWxzZTtcblx0ICB9XG5cdFxuXHQg
IHZhciBrZXlzQSA9IE9iamVjdC5rZXlzKG9iakEpO1xuXHQgIHZhciBrZXlzQiA9IE9iamVjdC5r
ZXlzKG9iakIpO1xuXHRcblx0ICBpZiAoa2V5c0EubGVuZ3RoICE9PSBrZXlzQi5sZW5ndGgpIHJl
dHVybiBmYWxzZTtcblx0XG5cdCAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzQS5sZW5ndGg7IGkr
Kykge1xuXHQgICAgaWYgKCFoYXNPd24uY2FsbChvYmpCLCBrZXlzQVtpXSkgfHwgIWlzKG9iakFb
a2V5c0FbaV1dLCBvYmpCW2tleXNBW2ldXSkpIHtcblx0ICAgICAgcmV0dXJuIGZhbHNlO1xuXHQg
ICAgfVxuXHQgIH1cblx0XG5cdCAgcmV0dXJuIHRydWU7XG5cdH1cblxuLyoqKi8gfSxcbi8qIDE5
NiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9f
KSB7XG5cblx0Ly8gQHJlbW92ZS1vbi1lamVjdC1iZWdpblxuXHQvKipcblx0ICogQ29weXJpZ2h0
IChjKSAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqL1xuXHQvLyBAcmVtb3ZlLW9uLWVqZWN0LWVuZFxuXHRc
blx0aWYgKHR5cGVvZiBQcm9taXNlID09PSAndW5kZWZpbmVkJykge1xuXHQgIC8vIFJlamVjdGlv
biB0cmFja2luZyBwcmV2ZW50cyBhIGNvbW1vbiBpc3N1ZSB3aGVyZSBSZWFjdCBnZXRzIGludG8g
YW5cblx0ICAvLyBpbmNvbnNpc3RlbnQgc3RhdGUgZHVlIHRvIGFuIGVycm9yLCBidXQgaXQgZ2V0
cyBzd2FsbG93ZWQgYnkgYSBQcm9taXNlLFxuXHQgIC8vIGFuZCB0aGUgdXNlciBoYXMgbm8gaWRl
YSB3aGF0IGNhdXNlcyBSZWFjdCdzIGVycmF0aWMgZnV0dXJlIGJlaGF2aW9yLlxuXHQgIF9fd2Vi
cGFja19yZXF1aXJlX18oMjEwKS5lbmFibGUoKTtcblx0ICB3aW5kb3cuUHJvbWlzZSA9IF9fd2Vi
cGFja19yZXF1aXJlX18oMjA5KTtcblx0fVxuXHRcblx0Ly8gZmV0Y2goKSBwb2x5ZmlsbCBmb3Ig
bWFraW5nIEFQSSBjYWxscy5cblx0X193ZWJwYWNrX3JlcXVpcmVfXygyMTIpO1xuXHRcblx0Ly8g
T2JqZWN0LmFzc2lnbigpIGlzIGNvbW1vbmx5IHVzZWQgd2l0aCBSZWFjdC5cblx0Ly8gSXQgd2ls
bCB1c2UgdGhlIG5hdGl2ZSBpbXBsZW1lbnRhdGlvbiBpZiBpdCdzIHByZXNlbnQgYW5kIGlzbid0
IGJ1Z2d5LlxuXHRPYmplY3QuYXNzaWduID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMDgpO1xuXG5c
bi8qKiovIH0sXG4vKiAxOTcgKi9cbi8qKiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xu
XG5cdC8qIFdFQlBBQ0sgVkFSIElOSkVDVElPTiAqLyhmdW5jdGlvbihnbG9iYWwpIHtcInVzZSBz
dHJpY3RcIjtcblx0XG5cdC8vIFVzZSB0aGUgZmFzdGVzdCBtZWFucyBwb3NzaWJsZSB0byBleGVj
dXRlIGEgdGFzayBpbiBpdHMgb3duIHR1cm4sIHdpdGhcblx0Ly8gcHJpb3JpdHkgb3ZlciBvdGhl
ciBldmVudHMgaW5jbHVkaW5nIElPLCBhbmltYXRpb24sIHJlZmxvdywgYW5kIHJlZHJhd1xuXHQv
LyBldmVudHMgaW4gYnJvd3NlcnMuXG5cdC8vXG5cdC8vIEFuIGV4Y2VwdGlvbiB0aHJvd24gYnkg
YSB0YXNrIHdpbGwgcGVybWFuZW50bHkgaW50ZXJydXB0IHRoZSBwcm9jZXNzaW5nIG9mXG5cdC8v
IHN1YnNlcXVlbnQgdGFza3MuIFRoZSBoaWdoZXIgbGV2ZWwgYGFzYXBgIGZ1bmN0aW9uIGVuc3Vy
ZXMgdGhhdCBpZiBhblxuXHQvLyBleGNlcHRpb24gaXMgdGhyb3duIGJ5IGEgdGFzaywgdGhhdCB0
aGUgdGFzayBxdWV1ZSB3aWxsIGNvbnRpbnVlIGZsdXNoaW5nIGFzXG5cdC8vIHNvb24gYXMgcG9z
c2libGUsIGJ1dCBpZiB5b3UgdXNlIGByYXdBc2FwYCBkaXJlY3RseSwgeW91IGFyZSByZXNwb25z
aWJsZSB0b1xuXHQvLyBlaXRoZXIgZW5zdXJlIHRoYXQgbm8gZXhjZXB0aW9ucyBhcmUgdGhyb3du
IGZyb20geW91ciB0YXNrLCBvciB0byBtYW51YWxseVxuXHQvLyBjYWxsIGByYXdBc2FwLnJlcXVl
c3RGbHVzaGAgaWYgYW4gZXhjZXB0aW9uIGlzIHRocm93bi5cblx0bW9kdWxlLmV4cG9ydHMgPSBy
YXdBc2FwO1xuXHRmdW5jdGlvbiByYXdBc2FwKHRhc2spIHtcblx0ICAgIGlmICghcXVldWUubGVu
Z3RoKSB7XG5cdCAgICAgICAgcmVxdWVzdEZsdXNoKCk7XG5cdCAgICAgICAgZmx1c2hpbmcgPSB0
cnVlO1xuXHQgICAgfVxuXHQgICAgLy8gRXF1aXZhbGVudCB0byBwdXNoLCBidXQgYXZvaWRzIGEg
ZnVuY3Rpb24gY2FsbC5cblx0ICAgIHF1ZXVlW3F1ZXVlLmxlbmd0aF0gPSB0YXNrO1xuXHR9XG5c
dFxuXHR2YXIgcXVldWUgPSBbXTtcblx0Ly8gT25jZSBhIGZsdXNoIGhhcyBiZWVuIHJlcXVlc3Rl
ZCwgbm8gZnVydGhlciBjYWxscyB0byBgcmVxdWVzdEZsdXNoYCBhcmVcblx0Ly8gbmVjZXNzYXJ5
IHVudGlsIHRoZSBuZXh0IGBmbHVzaGAgY29tcGxldGVzLlxuXHR2YXIgZmx1c2hpbmcgPSBmYWxz
ZTtcblx0Ly8gYHJlcXVlc3RGbHVzaGAgaXMgYW4gaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgbWV0
aG9kIHRoYXQgYXR0ZW1wdHMgdG8ga2lja1xuXHQvLyBvZmYgYSBgZmx1c2hgIGV2ZW50IGFzIHF1
aWNrbHkgYXMgcG9zc2libGUuIGBmbHVzaGAgd2lsbCBhdHRlbXB0IHRvIGV4aGF1c3Rcblx0Ly8g
dGhlIGV2ZW50IHF1ZXVlIGJlZm9yZSB5aWVsZGluZyB0byB0aGUgYnJvd3NlcidzIG93biBldmVu
dCBsb29wLlxuXHR2YXIgcmVxdWVzdEZsdXNoO1xuXHQvLyBUaGUgcG9zaXRpb24gb2YgdGhlIG5l
eHQgdGFzayB0byBleGVjdXRlIGluIHRoZSB0YXNrIHF1ZXVlLiBUaGlzIGlzXG5cdC8vIHByZXNl
cnZlZCBiZXR3ZWVuIGNhbGxzIHRvIGBmbHVzaGAgc28gdGhhdCBpdCBjYW4gYmUgcmVzdW1lZCBp
ZlxuXHQvLyBhIHRhc2sgdGhyb3dzIGFuIGV4Y2VwdGlvbi5cblx0dmFyIGluZGV4ID0gMDtcblx0
Ly8gSWYgYSB0YXNrIHNjaGVkdWxlcyBhZGRpdGlvbmFsIHRhc2tzIHJlY3Vyc2l2ZWx5LCB0aGUg
dGFzayBxdWV1ZSBjYW4gZ3Jvd1xuXHQvLyB1bmJvdW5kZWQuIFRvIHByZXZlbnQgbWVtb3J5IGV4
aGF1c3Rpb24sIHRoZSB0YXNrIHF1ZXVlIHdpbGwgcGVyaW9kaWNhbGx5XG5cdC8vIHRydW5jYXRl
IGFscmVhZHktY29tcGxldGVkIHRhc2tzLlxuXHR2YXIgY2FwYWNpdHkgPSAxMDI0O1xuXHRcblx0
Ly8gVGhlIGZsdXNoIGZ1bmN0aW9uIHByb2Nlc3NlcyBhbGwgdGFza3MgdGhhdCBoYXZlIGJlZW4g
c2NoZWR1bGVkIHdpdGhcblx0Ly8gYHJhd0FzYXBgIHVubGVzcyBhbmQgdW50aWwgb25lIG9mIHRo
b3NlIHRhc2tzIHRocm93cyBhbiBleGNlcHRpb24uXG5cdC8vIElmIGEgdGFzayB0aHJvd3MgYW4g
ZXhjZXB0aW9uLCBgZmx1c2hgIGVuc3VyZXMgdGhhdCBpdHMgc3RhdGUgd2lsbCByZW1haW5cblx0
Ly8gY29uc2lzdGVudCBhbmQgd2lsbCByZXN1bWUgd2hlcmUgaXQgbGVmdCBvZmYgd2hlbiBjYWxs
ZWQgYWdhaW4uXG5cdC8vIEhvd2V2ZXIsIGBmbHVzaGAgZG9lcyBub3QgbWFrZSBhbnkgYXJyYW5n
ZW1lbnRzIHRvIGJlIGNhbGxlZCBhZ2FpbiBpZiBhblxuXHQvLyBleGNlcHRpb24gaXMgdGhyb3du
LlxuXHRmdW5jdGlvbiBmbHVzaCgpIHtcblx0ICAgIHdoaWxlIChpbmRleCA8IHF1ZXVlLmxlbmd0
aCkge1xuXHQgICAgICAgIHZhciBjdXJyZW50SW5kZXggPSBpbmRleDtcblx0ICAgICAgICAvLyBB
ZHZhbmNlIHRoZSBpbmRleCBiZWZvcmUgY2FsbGluZyB0aGUgdGFzay4gVGhpcyBlbnN1cmVzIHRo
YXQgd2Ugd2lsbFxuXHQgICAgICAgIC8vIGJlZ2luIGZsdXNoaW5nIG9uIHRoZSBuZXh0IHRhc2sg
dGhlIHRhc2sgdGhyb3dzIGFuIGVycm9yLlxuXHQgICAgICAgIGluZGV4ID0gaW5kZXggKyAxO1xu
XHQgICAgICAgIHF1ZXVlW2N1cnJlbnRJbmRleF0uY2FsbCgpO1xuXHQgICAgICAgIC8vIFByZXZl
bnQgbGVha2luZyBtZW1vcnkgZm9yIGxvbmcgY2hhaW5zIG9mIHJlY3Vyc2l2ZSBjYWxscyB0byBg
YXNhcGAuXG5cdCAgICAgICAgLy8gSWYgd2UgY2FsbCBgYXNhcGAgd2l0aGluIHRhc2tzIHNjaGVk
dWxlZCBieSBgYXNhcGAsIHRoZSBxdWV1ZSB3aWxsXG5cdCAgICAgICAgLy8gZ3JvdywgYnV0IHRv
IGF2b2lkIGFuIE8obikgd2FsayBmb3IgZXZlcnkgdGFzayB3ZSBleGVjdXRlLCB3ZSBkb24ndFxu
XHQgICAgICAgIC8vIHNoaWZ0IHRhc2tzIG9mZiB0aGUgcXVldWUgYWZ0ZXIgdGhleSBoYXZlIGJl
ZW4gZXhlY3V0ZWQuXG5cdCAgICAgICAgLy8gSW5zdGVhZCwgd2UgcGVyaW9kaWNhbGx5IHNoaWZ0
IDEwMjQgdGFza3Mgb2ZmIHRoZSBxdWV1ZS5cblx0ICAgICAgICBpZiAoaW5kZXggPiBjYXBhY2l0
eSkge1xuXHQgICAgICAgICAgICAvLyBNYW51YWxseSBzaGlmdCBhbGwgdmFsdWVzIHN0YXJ0aW5n
IGF0IHRoZSBpbmRleCBiYWNrIHRvIHRoZVxuXHQgICAgICAgICAgICAvLyBiZWdpbm5pbmcgb2Yg
dGhlIHF1ZXVlLlxuXHQgICAgICAgICAgICBmb3IgKHZhciBzY2FuID0gMCwgbmV3TGVuZ3RoID0g
cXVldWUubGVuZ3RoIC0gaW5kZXg7IHNjYW4gPCBuZXdMZW5ndGg7IHNjYW4rKykge1xuXHQgICAg
ICAgICAgICAgICAgcXVldWVbc2Nhbl0gPSBxdWV1ZVtzY2FuICsgaW5kZXhdO1xuXHQgICAgICAg
ICAgICB9XG5cdCAgICAgICAgICAgIHF1ZXVlLmxlbmd0aCAtPSBpbmRleDtcblx0ICAgICAgICAg
ICAgaW5kZXggPSAwO1xuXHQgICAgICAgIH1cblx0ICAgIH1cblx0ICAgIHF1ZXVlLmxlbmd0aCA9
IDA7XG5cdCAgICBpbmRleCA9IDA7XG5cdCAgICBmbHVzaGluZyA9IGZhbHNlO1xuXHR9XG5cdFxu
XHQvLyBgcmVxdWVzdEZsdXNoYCBpcyBpbXBsZW1lbnRlZCB1c2luZyBhIHN0cmF0ZWd5IGJhc2Vk
IG9uIGRhdGEgY29sbGVjdGVkIGZyb21cblx0Ly8gZXZlcnkgYXZhaWxhYmxlIFNhdWNlTGFicyBT
ZWxlbml1bSB3ZWIgZHJpdmVyIHdvcmtlciBhdCB0aW1lIG9mIHdyaXRpbmcuXG5cdC8vIGh0dHBz
Oi8vZG9jcy5nb29nbGUuY29tL3NwcmVhZHNoZWV0cy9kLzFtRy01VVlHdXA1cXhHZEVNV2toUDZC
V0N6MDUzTlViMkUxUW9VVFUxNnVBL2VkaXQjZ2lkPTc4MzcyNDU5M1xuXHRcblx0Ly8gU2FmYXJp
IDYgYW5kIDYuMSBmb3IgZGVza3RvcCwgaVBhZCwgYW5kIGlQaG9uZSBhcmUgdGhlIG9ubHkgYnJv
d3NlcnMgdGhhdFxuXHQvLyBoYXZlIFdlYktpdE11dGF0aW9uT2JzZXJ2ZXIgYnV0IG5vdCB1bi1w
cmVmaXhlZCBNdXRhdGlvbk9ic2VydmVyLlxuXHQvLyBNdXN0IHVzZSBgZ2xvYmFsYCBvciBgc2Vs
ZmAgaW5zdGVhZCBvZiBgd2luZG93YCB0byB3b3JrIGluIGJvdGggZnJhbWVzIGFuZCB3ZWJcblx0
Ly8gd29ya2Vycy4gYGdsb2JhbGAgaXMgYSBwcm92aXNpb24gb2YgQnJvd3NlcmlmeSwgTXIsIE1y
cywgb3IgTW9wLlxuXHRcblx0LyogZ2xvYmFscyBzZWxmICovXG5cdHZhciBzY29wZSA9IHR5cGVv
ZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgPyBnbG9iYWwgOiBzZWxmO1xuXHR2YXIgQnJvd3Nl
ck11dGF0aW9uT2JzZXJ2ZXIgPSBzY29wZS5NdXRhdGlvbk9ic2VydmVyIHx8IHNjb3BlLldlYktp
dE11dGF0aW9uT2JzZXJ2ZXI7XG5cdFxuXHQvLyBNdXRhdGlvbk9ic2VydmVycyBhcmUgZGVzaXJh
YmxlIGJlY2F1c2UgdGhleSBoYXZlIGhpZ2ggcHJpb3JpdHkgYW5kIHdvcmtcblx0Ly8gcmVsaWFi
bHkgZXZlcnl3aGVyZSB0aGV5IGFyZSBpbXBsZW1lbnRlZC5cblx0Ly8gVGhleSBhcmUgaW1wbGVt
ZW50ZWQgaW4gYWxsIG1vZGVybiBicm93c2Vycy5cblx0Ly9cblx0Ly8gLSBBbmRyb2lkIDQtNC4z
XG5cdC8vIC0gQ2hyb21lIDI2LTM0XG5cdC8vIC0gRmlyZWZveCAxNC0yOVxuXHQvLyAtIEludGVy
bmV0IEV4cGxvcmVyIDExXG5cdC8vIC0gaVBhZCBTYWZhcmkgNi03LjFcblx0Ly8gLSBpUGhvbmUg
U2FmYXJpIDctNy4xXG5cdC8vIC0gU2FmYXJpIDYtN1xuXHRpZiAodHlwZW9mIEJyb3dzZXJNdXRh
dGlvbk9ic2VydmVyID09PSBcImZ1bmN0aW9uXCIpIHtcblx0ICAgIHJlcXVlc3RGbHVzaCA9IG1h
a2VSZXF1ZXN0Q2FsbEZyb21NdXRhdGlvbk9ic2VydmVyKGZsdXNoKTtcblx0XG5cdC8vIE1lc3Nh
Z2VDaGFubmVscyBhcmUgZGVzaXJhYmxlIGJlY2F1c2UgdGhleSBnaXZlIGRpcmVjdCBhY2Nlc3Mg
dG8gdGhlIEhUTUxcblx0Ly8gdGFzayBxdWV1ZSwgYXJlIGltcGxlbWVudGVkIGluIEludGVybmV0
IEV4cGxvcmVyIDEwLCBTYWZhcmkgNS4wLTEsIGFuZCBPcGVyYVxuXHQvLyAxMS0xMiwgYW5kIGlu
IHdlYiB3b3JrZXJzIGluIG1hbnkgZW5naW5lcy5cblx0Ly8gQWx0aG91Z2ggbWVzc2FnZSBjaGFu
bmVscyB5aWVsZCB0byBhbnkgcXVldWVkIHJlbmRlcmluZyBhbmQgSU8gdGFza3MsIHRoZXlcblx0
Ly8gd291bGQgYmUgYmV0dGVyIHRoYW4gaW1wb3NpbmcgdGhlIDRtcyBkZWxheSBvZiB0aW1lcnMu
XG5cdC8vIEhvd2V2ZXIsIHRoZXkgZG8gbm90IHdvcmsgcmVsaWFibHkgaW4gSW50ZXJuZXQgRXhw
bG9yZXIgb3IgU2FmYXJpLlxuXHRcblx0Ly8gSW50ZXJuZXQgRXhwbG9yZXIgMTAgaXMgdGhlIG9u
bHkgYnJvd3NlciB0aGF0IGhhcyBzZXRJbW1lZGlhdGUgYnV0IGRvZXNcblx0Ly8gbm90IGhhdmUg
TXV0YXRpb25PYnNlcnZlcnMuXG5cdC8vIEFsdGhvdWdoIHNldEltbWVkaWF0ZSB5aWVsZHMgdG8g
dGhlIGJyb3dzZXIncyByZW5kZXJlciwgaXQgd291bGQgYmVcblx0Ly8gcHJlZmVycmFibGUgdG8g
ZmFsbGluZyBiYWNrIHRvIHNldFRpbWVvdXQgc2luY2UgaXQgZG9lcyBub3QgaGF2ZVxuXHQvLyB0
aGUgbWluaW11bSA0bXMgcGVuYWx0eS5cblx0Ly8gVW5mb3J0dW5hdGVseSB0aGVyZSBhcHBlYXJz
IHRvIGJlIGEgYnVnIGluIEludGVybmV0IEV4cGxvcmVyIDEwIE1vYmlsZSAoYW5kXG5cdC8vIERl
c2t0b3AgdG8gYSBsZXNzZXIgZXh0ZW50KSB0aGF0IHJlbmRlcnMgYm90aCBzZXRJbW1lZGlhdGUg
YW5kXG5cdC8vIE1lc3NhZ2VDaGFubmVsIHVzZWxlc3MgZm9yIHRoZSBwdXJwb3NlcyBvZiBBU0FQ
LlxuXHQvLyBodHRwczovL2dpdGh1Yi5jb20va3Jpc2tvd2FsL3EvaXNzdWVzLzM5NlxuXHRcblx0
Ly8gVGltZXJzIGFyZSBpbXBsZW1lbnRlZCB1bml2ZXJzYWxseS5cblx0Ly8gV2UgZmFsbCBiYWNr
IHRvIHRpbWVycyBpbiB3b3JrZXJzIGluIG1vc3QgZW5naW5lcywgYW5kIGluIGZvcmVncm91bmRc
blx0Ly8gY29udGV4dHMgaW4gdGhlIGZvbGxvd2luZyBicm93c2Vycy5cblx0Ly8gSG93ZXZlciwg
bm90ZSB0aGF0IGV2ZW4gdGhpcyBzaW1wbGUgY2FzZSByZXF1aXJlcyBudWFuY2VzIHRvIG9wZXJh
dGUgaW4gYVxuXHQvLyBicm9hZCBzcGVjdHJ1bSBvZiBicm93c2Vycy5cblx0Ly9cblx0Ly8gLSBG
aXJlZm94IDMtMTNcblx0Ly8gLSBJbnRlcm5ldCBFeHBsb3JlciA2LTlcblx0Ly8gLSBpUGFkIFNh
ZmFyaSA0LjNcblx0Ly8gLSBMeW54IDIuOC43XG5cdH0gZWxzZSB7XG5cdCAgICByZXF1ZXN0Rmx1
c2ggPSBtYWtlUmVxdWVzdENhbGxGcm9tVGltZXIoZmx1c2gpO1xuXHR9XG5cdFxuXHQvLyBgcmVx
dWVzdEZsdXNoYCByZXF1ZXN0cyB0aGF0IHRoZSBoaWdoIHByaW9yaXR5IGV2ZW50IHF1ZXVlIGJl
IGZsdXNoZWQgYXNcblx0Ly8gc29vbiBhcyBwb3NzaWJsZS5cblx0Ly8gVGhpcyBpcyB1c2VmdWwg
dG8gcHJldmVudCBhbiBlcnJvciB0aHJvd24gaW4gYSB0YXNrIGZyb20gc3RhbGxpbmcgdGhlIGV2
ZW50XG5cdC8vIHF1ZXVlIGlmIHRoZSBleGNlcHRpb24gaGFuZGxlZCBieSBOb2RlLmpz4oCZc1xu
XHQvLyBgcHJvY2Vzcy5vbihcInVuY2F1Z2h0RXhjZXB0aW9uXCIpYCBvciBieSBhIGRvbWFpbi5c
blx0cmF3QXNhcC5yZXF1ZXN0Rmx1c2ggPSByZXF1ZXN0Rmx1c2g7XG5cdFxuXHQvLyBUbyByZXF1
ZXN0IGEgaGlnaCBwcmlvcml0eSBldmVudCwgd2UgaW5kdWNlIGEgbXV0YXRpb24gb2JzZXJ2ZXIg
YnkgdG9nZ2xpbmdcblx0Ly8gdGhlIHRleHQgb2YgYSB0ZXh0IG5vZGUgYmV0d2VlbiBcIjFcIiBh
bmQgXCItMVwiLlxuXHRmdW5jdGlvbiBtYWtlUmVxdWVzdENhbGxGcm9tTXV0YXRpb25PYnNlcnZl
cihjYWxsYmFjaykge1xuXHQgICAgdmFyIHRvZ2dsZSA9IDE7XG5cdCAgICB2YXIgb2JzZXJ2ZXIg
PSBuZXcgQnJvd3Nlck11dGF0aW9uT2JzZXJ2ZXIoY2FsbGJhY2spO1xuXHQgICAgdmFyIG5vZGUg
PSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShcIlwiKTtcblx0ICAgIG9ic2VydmVyLm9ic2VydmUo
bm9kZSwge2NoYXJhY3RlckRhdGE6IHRydWV9KTtcblx0ICAgIHJldHVybiBmdW5jdGlvbiByZXF1
ZXN0Q2FsbCgpIHtcblx0ICAgICAgICB0b2dnbGUgPSAtdG9nZ2xlO1xuXHQgICAgICAgIG5vZGUu
ZGF0YSA9IHRvZ2dsZTtcblx0ICAgIH07XG5cdH1cblx0XG5cdC8vIFRoZSBtZXNzYWdlIGNoYW5u
ZWwgdGVjaG5pcXVlIHdhcyBkaXNjb3ZlcmVkIGJ5IE1hbHRlIFVibCBhbmQgd2FzIHRoZVxuXHQv
LyBvcmlnaW5hbCBmb3VuZGF0aW9uIGZvciB0aGlzIGxpYnJhcnkuXG5cdC8vIGh0dHA6Ly93d3cu
bm9uYmxvY2tpbmcuaW8vMjAxMS8wNi93aW5kb3duZXh0dGljay5odG1sXG5cdFxuXHQvLyBTYWZh
cmkgNi4wLjUgKGF0IGxlYXN0KSBpbnRlcm1pdHRlbnRseSBmYWlscyB0byBjcmVhdGUgbWVzc2Fn
ZSBwb3J0cyBvbiBhXG5cdC8vIHBhZ2UncyBmaXJzdCBsb2FkLiBUaGFua2Z1bGx5LCB0aGlzIHZl
cnNpb24gb2YgU2FmYXJpIHN1cHBvcnRzXG5cdC8vIE11dGF0aW9uT2JzZXJ2ZXJzLCBzbyB3ZSBk
b24ndCBuZWVkIHRvIGZhbGwgYmFjayBpbiB0aGF0IGNhc2UuXG5cdFxuXHQvLyBmdW5jdGlvbiBt
YWtlUmVxdWVzdENhbGxGcm9tTWVzc2FnZUNoYW5uZWwoY2FsbGJhY2spIHtcblx0Ly8gICAgIHZh
ciBjaGFubmVsID0gbmV3IE1lc3NhZ2VDaGFubmVsKCk7XG5cdC8vICAgICBjaGFubmVsLnBvcnQx
Lm9ubWVzc2FnZSA9IGNhbGxiYWNrO1xuXHQvLyAgICAgcmV0dXJuIGZ1bmN0aW9uIHJlcXVlc3RD
YWxsKCkge1xuXHQvLyAgICAgICAgIGNoYW5uZWwucG9ydDIucG9zdE1lc3NhZ2UoMCk7XG5cdC8v
ICAgICB9O1xuXHQvLyB9XG5cdFxuXHQvLyBGb3IgcmVhc29ucyBleHBsYWluZWQgYWJvdmUsIHdl
IGFyZSBhbHNvIHVuYWJsZSB0byB1c2UgYHNldEltbWVkaWF0ZWBcblx0Ly8gdW5kZXIgYW55IGNp
cmN1bXN0YW5jZXMuXG5cdC8vIEV2ZW4gaWYgd2Ugd2VyZSwgdGhlcmUgaXMgYW5vdGhlciBidWcg
aW4gSW50ZXJuZXQgRXhwbG9yZXIgMTAuXG5cdC8vIEl0IGlzIG5vdCBzdWZmaWNpZW50IHRvIGFz
c2lnbiBgc2V0SW1tZWRpYXRlYCB0byBgcmVxdWVzdEZsdXNoYCBiZWNhdXNlXG5cdC8vIGBzZXRJ
bW1lZGlhdGVgIG11c3QgYmUgY2FsbGVkICpieSBuYW1lKiBhbmQgdGhlcmVmb3JlIG11c3QgYmUg
d3JhcHBlZCBpbiBhXG5cdC8vIGNsb3N1cmUuXG5cdC8vIE5ldmVyIGZvcmdldC5cblx0XG5cdC8v
IGZ1bmN0aW9uIG1ha2VSZXF1ZXN0Q2FsbEZyb21TZXRJbW1lZGlhdGUoY2FsbGJhY2spIHtcblx0
Ly8gICAgIHJldHVybiBmdW5jdGlvbiByZXF1ZXN0Q2FsbCgpIHtcblx0Ly8gICAgICAgICBzZXRJ
bW1lZGlhdGUoY2FsbGJhY2spO1xuXHQvLyAgICAgfTtcblx0Ly8gfVxuXHRcblx0Ly8gU2FmYXJp
IDYuMCBoYXMgYSBwcm9ibGVtIHdoZXJlIHRpbWVycyB3aWxsIGdldCBsb3N0IHdoaWxlIHRoZSB1
c2VyIGlzXG5cdC8vIHNjcm9sbGluZy4gVGhpcyBwcm9ibGVtIGRvZXMgbm90IGltcGFjdCBBU0FQ
IGJlY2F1c2UgU2FmYXJpIDYuMCBzdXBwb3J0c1xuXHQvLyBtdXRhdGlvbiBvYnNlcnZlcnMsIHNv
IHRoYXQgaW1wbGVtZW50YXRpb24gaXMgdXNlZCBpbnN0ZWFkLlxuXHQvLyBIb3dldmVyLCBpZiB3
ZSBldmVyIGVsZWN0IHRvIHVzZSB0aW1lcnMgaW4gU2FmYXJpLCB0aGUgcHJldmFsZW50IHdvcmst
YXJvdW5kXG5cdC8vIGlzIHRvIGFkZCBhIHNjcm9sbCBldmVudCBsaXN0ZW5lciB0aGF0IGNhbGxz
IGZvciBhIGZsdXNoLlxuXHRcblx0Ly8gYHNldFRpbWVvdXRgIGRvZXMgbm90IGNhbGwgdGhlIHBh
c3NlZCBjYWxsYmFjayBpZiB0aGUgZGVsYXkgaXMgbGVzcyB0aGFuXG5cdC8vIGFwcHJveGltYXRl
bHkgNyBpbiB3ZWIgd29ya2VycyBpbiBGaXJlZm94IDggdGhyb3VnaCAxOCwgYW5kIHNvbWV0aW1l
cyBub3Rcblx0Ly8gZXZlbiB0aGVuLlxuXHRcblx0ZnVuY3Rpb24gbWFrZVJlcXVlc3RDYWxsRnJv
bVRpbWVyKGNhbGxiYWNrKSB7XG5cdCAgICByZXR1cm4gZnVuY3Rpb24gcmVxdWVzdENhbGwoKSB7
XG5cdCAgICAgICAgLy8gV2UgZGlzcGF0Y2ggYSB0aW1lb3V0IHdpdGggYSBzcGVjaWZpZWQgZGVs
YXkgb2YgMCBmb3IgZW5naW5lcyB0aGF0XG5cdCAgICAgICAgLy8gY2FuIHJlbGlhYmx5IGFjY29t
bW9kYXRlIHRoYXQgcmVxdWVzdC4gVGhpcyB3aWxsIHVzdWFsbHkgYmUgc25hcHBlZFxuXHQgICAg
ICAgIC8vIHRvIGEgNCBtaWxpc2Vjb25kIGRlbGF5LCBidXQgb25jZSB3ZSdyZSBmbHVzaGluZywg
dGhlcmUncyBubyBkZWxheVxuXHQgICAgICAgIC8vIGJldHdlZW4gZXZlbnRzLlxuXHQgICAgICAg
IHZhciB0aW1lb3V0SGFuZGxlID0gc2V0VGltZW91dChoYW5kbGVUaW1lciwgMCk7XG5cdCAgICAg
ICAgLy8gSG93ZXZlciwgc2luY2UgdGhpcyB0aW1lciBnZXRzIGZyZXF1ZW50bHkgZHJvcHBlZCBp
biBGaXJlZm94XG5cdCAgICAgICAgLy8gd29ya2Vycywgd2UgZW5saXN0IGFuIGludGVydmFsIGhh
bmRsZSB0aGF0IHdpbGwgdHJ5IHRvIGZpcmVcblx0ICAgICAgICAvLyBhbiBldmVudCAyMCB0aW1l
cyBwZXIgc2Vjb25kIHVudGlsIGl0IHN1Y2NlZWRzLlxuXHQgICAgICAgIHZhciBpbnRlcnZhbEhh
bmRsZSA9IHNldEludGVydmFsKGhhbmRsZVRpbWVyLCA1MCk7XG5cdFxuXHQgICAgICAgIGZ1bmN0
aW9uIGhhbmRsZVRpbWVyKCkge1xuXHQgICAgICAgICAgICAvLyBXaGljaGV2ZXIgdGltZXIgc3Vj
Y2VlZHMgd2lsbCBjYW5jZWwgYm90aCB0aW1lcnMgYW5kXG5cdCAgICAgICAgICAgIC8vIGV4ZWN1
dGUgdGhlIGNhbGxiYWNrLlxuXHQgICAgICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dEhhbmRs
ZSk7XG5cdCAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoaW50ZXJ2YWxIYW5kbGUpO1xuXHQgICAg
ICAgICAgICBjYWxsYmFjaygpO1xuXHQgICAgICAgIH1cblx0ICAgIH07XG5cdH1cblx0XG5cdC8v
IFRoaXMgaXMgZm9yIGBhc2FwLmpzYCBvbmx5LlxuXHQvLyBJdHMgbmFtZSB3aWxsIGJlIHBlcmlv
ZGljYWxseSByYW5kb21pemVkIHRvIGJyZWFrIGFueSBjb2RlIHRoYXQgZGVwZW5kcyBvblxuXHQv
LyBpdHMgZXhpc3RlbmNlLlxuXHRyYXdBc2FwLm1ha2VSZXF1ZXN0Q2FsbEZyb21UaW1lciA9IG1h
a2VSZXF1ZXN0Q2FsbEZyb21UaW1lcjtcblx0XG5cdC8vIEFTQVAgd2FzIG9yaWdpbmFsbHkgYSBu
ZXh0VGljayBzaGltIGluY2x1ZGVkIGluIFEuIFRoaXMgd2FzIGZhY3RvcmVkIG91dFxuXHQvLyBp
bnRvIHRoaXMgQVNBUCBwYWNrYWdlLiBJdCB3YXMgbGF0ZXIgYWRhcHRlZCB0byBSU1ZQIHdoaWNo
IG1hZGUgZnVydGhlclxuXHQvLyBhbWVuZG1lbnRzLiBUaGVzZSBkZWNpc2lvbnMsIHBhcnRpY3Vs
YXJseSB0byBtYXJnaW5hbGl6ZSBNZXNzYWdlQ2hhbm5lbCBhbmRcblx0Ly8gdG8gY2FwdHVyZSB0
aGUgTXV0YXRpb25PYnNlcnZlciBpbXBsZW1lbnRhdGlvbiBpbiBhIGNsb3N1cmUsIHdlcmUgaW50
ZWdyYXRlZFxuXHQvLyBiYWNrIGludG8gQVNBUCBwcm9wZXIuXG5cdC8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS90aWxkZWlvL3JzdnAuanMvYmxvYi9jZGRmNzIzMjU0NmE5Y2Y4NTg1MjRiNzVjZGU2Zjll
ZGY3MjYyMGE3L2xpYi9yc3ZwL2FzYXAuanNcblx0XG5cdC8qIFdFQlBBQ0sgVkFSIElOSkVDVElP
TiAqL30uY2FsbChleHBvcnRzLCAoZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KCkpKSlcblxu
LyoqKi8gfSxcbi8qIDE5OCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dl
YnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0T2JqZWN0LmRlZmlu
ZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0
fSk7XG5cdGV4cG9ydHMuY2xlYXJDb21wbGV0ZWQgPSBleHBvcnRzLmNvbXBsZXRlQWxsID0gZXhw
b3J0cy5jb21wbGV0ZVRvZG8gPSBleHBvcnRzLmVkaXRUb2RvID0gZXhwb3J0cy5kZWxldGVUb2Rv
ID0gZXhwb3J0cy5hZGRUb2RvID0gdW5kZWZpbmVkO1xuXHRcblx0dmFyIF9BY3Rpb25UeXBlcyA9
IF9fd2VicGFja19yZXF1aXJlX18oODUpO1xuXHRcblx0dmFyIHR5cGVzID0gX2ludGVyb3BSZXF1
aXJlV2lsZGNhcmQoX0FjdGlvblR5cGVzKTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWly
ZVdpbGRjYXJkKG9iaikgeyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7
IH0gZWxzZSB7IHZhciBuZXdPYmogPSB7fTsgaWYgKG9iaiAhPSBudWxsKSB7IGZvciAodmFyIGtl
eSBpbiBvYmopIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmos
IGtleSkpIG5ld09ialtrZXldID0gb2JqW2tleV07IH0gfSBuZXdPYmouZGVmYXVsdCA9IG9iajsg
cmV0dXJuIG5ld09iajsgfSB9XG5cdFxuXHR2YXIgYWRkVG9kbyA9IGV4cG9ydHMuYWRkVG9kbyA9
IGZ1bmN0aW9uIGFkZFRvZG8odGV4dCkge1xuXHQgIHJldHVybiB7IHR5cGU6IHR5cGVzLkFERF9U
T0RPLCB0ZXh0OiB0ZXh0IH07XG5cdH07XG5cdHZhciBkZWxldGVUb2RvID0gZXhwb3J0cy5kZWxl
dGVUb2RvID0gZnVuY3Rpb24gZGVsZXRlVG9kbyhpZCkge1xuXHQgIHJldHVybiB7IHR5cGU6IHR5
cGVzLkRFTEVURV9UT0RPLCBpZDogaWQgfTtcblx0fTtcblx0dmFyIGVkaXRUb2RvID0gZXhwb3J0
cy5lZGl0VG9kbyA9IGZ1bmN0aW9uIGVkaXRUb2RvKGlkLCB0ZXh0KSB7XG5cdCAgcmV0dXJuIHsg
dHlwZTogdHlwZXMuRURJVF9UT0RPLCBpZDogaWQsIHRleHQ6IHRleHQgfTtcblx0fTtcblx0dmFy
IGNvbXBsZXRlVG9kbyA9IGV4cG9ydHMuY29tcGxldGVUb2RvID0gZnVuY3Rpb24gY29tcGxldGVU
b2RvKGlkKSB7XG5cdCAgcmV0dXJuIHsgdHlwZTogdHlwZXMuQ09NUExFVEVfVE9ETywgaWQ6IGlk
IH07XG5cdH07XG5cdHZhciBjb21wbGV0ZUFsbCA9IGV4cG9ydHMuY29tcGxldGVBbGwgPSBmdW5j
dGlvbiBjb21wbGV0ZUFsbCgpIHtcblx0ICByZXR1cm4geyB0eXBlOiB0eXBlcy5DT01QTEVURV9B
TEwgfTtcblx0fTtcblx0dmFyIGNsZWFyQ29tcGxldGVkID0gZXhwb3J0cy5jbGVhckNvbXBsZXRl
ZCA9IGZ1bmN0aW9uIGNsZWFyQ29tcGxldGVkKCkge1xuXHQgIHJldHVybiB7IHR5cGU6IHR5cGVz
LkNMRUFSX0NPTVBMRVRFRCB9O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMTk5ICovXG4vKioqLyBm
dW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNl
IHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9k
dWxlXCIsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0XG5cdHZhciBfY3JlYXRlQ2xhc3Mg
PSBmdW5jdGlvbiAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykg
eyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9y
ID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJs
ZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwi
IGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5l
UHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4g
ZnVuY3Rpb24gKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJv
dG9Qcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJv
cHMpOyBpZiAoc3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRp
Y1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KCk7XG5cdFxuXHR2YXIgX0ZJTFRFUl9U
SVRMRVM7XG5cdFxuXHR2YXIgX3JlYWN0ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxMik7XG5cdFxu
XHR2YXIgX3JlYWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3JlYWN0KTtcblx0XG5cdHZh
ciBfY2xhc3NuYW1lcyA9IF9fd2VicGFja19yZXF1aXJlX18oMzEpO1xuXHRcblx0dmFyIF9jbGFz
c25hbWVzMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2NsYXNzbmFtZXMpO1xuXHRcblx0dmFy
IF9Ub2RvRmlsdGVycyA9IF9fd2VicGFja19yZXF1aXJlX18oODYpO1xuXHRcblx0ZnVuY3Rpb24g
X2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVs
ZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblx0XG5cdGZ1bmN0aW9uIF9jbGFzc0NhbGxD
aGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBD
b25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3Mg
YXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cdFxuXHRmdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3Rv
clJldHVybihzZWxmLCBjYWxsKSB7IGlmICghc2VsZikgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJy
b3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBj
YWxsZWRcIik7IH0gcmV0dXJuIGNhbGwgJiYgKHR5cGVvZiBjYWxsID09PSBcIm9iamVjdFwiIHx8
IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpID8gY2FsbCA6IHNlbGY7IH1cblx0XG5cdGZ1
bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVy
Q2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5l
dyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBm
dW5jdGlvbiwgbm90IFwiICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlw
ZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBj
b25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJs
ZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Qu
c2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xh
c3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXHRcblx0ZnVuY3Rpb24g
X2RlZmluZVByb3BlcnR5KG9iaiwga2V5LCB2YWx1ZSkgeyBpZiAoa2V5IGluIG9iaikgeyBPYmpl
Y3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHsgdmFsdWU6IHZhbHVlLCBlbnVtZXJhYmxlOiB0
cnVlLCBjb25maWd1cmFibGU6IHRydWUsIHdyaXRhYmxlOiB0cnVlIH0pOyB9IGVsc2UgeyBvYmpb
a2V5XSA9IHZhbHVlOyB9IHJldHVybiBvYmo7IH1cblx0XG5cdHZhciBGSUxURVJfVElUTEVTID0g
KF9GSUxURVJfVElUTEVTID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfRklMVEVSX1RJVExFUywgX1Rv
ZG9GaWx0ZXJzLlNIT1dfQUxMLCAnQWxsJyksIF9kZWZpbmVQcm9wZXJ0eShfRklMVEVSX1RJVExF
UywgX1RvZG9GaWx0ZXJzLlNIT1dfQUNUSVZFLCAnQWN0aXZlJyksIF9kZWZpbmVQcm9wZXJ0eShf
RklMVEVSX1RJVExFUywgX1RvZG9GaWx0ZXJzLlNIT1dfQ09NUExFVEVELCAnQ29tcGxldGVkJyks
IF9GSUxURVJfVElUTEVTKTtcblx0XG5cdHZhciBGb290ZXIgPSBmdW5jdGlvbiAoX0NvbXBvbmVu
dCkge1xuXHQgIF9pbmhlcml0cyhGb290ZXIsIF9Db21wb25lbnQpO1xuXHRcblx0ICBmdW5jdGlv
biBGb290ZXIoKSB7XG5cdCAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgRm9vdGVyKTtcblx0XG5c
dCAgICByZXR1cm4gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgKEZvb3Rlci5fX3By
b3RvX18gfHwgT2JqZWN0LmdldFByb3RvdHlwZU9mKEZvb3RlcikpLmFwcGx5KHRoaXMsIGFyZ3Vt
ZW50cykpO1xuXHQgIH1cblx0XG5cdCAgX2NyZWF0ZUNsYXNzKEZvb3RlciwgW3tcblx0ICAgIGtl
eTogJ3JlbmRlclRvZG9Db3VudCcsXG5cdCAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyVG9kb0Nv
dW50KCkge1xuXHQgICAgICB2YXIgYWN0aXZlQ291bnQgPSB0aGlzLnByb3BzLmFjdGl2ZUNvdW50
O1xuXHRcblx0ICAgICAgdmFyIGl0ZW1Xb3JkID0gYWN0aXZlQ291bnQgPT09IDEgPyAnaXRlbScg
OiAnaXRlbXMnO1xuXHRcblx0ICAgICAgcmV0dXJuIF9yZWFjdDIuZGVmYXVsdC5jcmVhdGVFbGVt
ZW50KFxuXHQgICAgICAgICdzcGFuJyxcblx0ICAgICAgICB7IGNsYXNzTmFtZTogJ3RvZG8tY291
bnQnIH0sXG5cdCAgICAgICAgX3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXG5cdCAgICAg
ICAgICAnc3Ryb25nJyxcblx0ICAgICAgICAgIG51bGwsXG5cdCAgICAgICAgICBhY3RpdmVDb3Vu
dCB8fCAnTm8nXG5cdCAgICAgICAgKSxcblx0ICAgICAgICAnICcsXG5cdCAgICAgICAgaXRlbVdv
cmQsXG5cdCAgICAgICAgJyBsZWZ0J1xuXHQgICAgICApO1xuXHQgICAgfVxuXHQgIH0sIHtcblx0
ICAgIGtleTogJ3JlbmRlckZpbHRlckxpbmsnLFxuXHQgICAgdmFsdWU6IGZ1bmN0aW9uIHJlbmRl
ckZpbHRlckxpbmsoZmlsdGVyKSB7XG5cdCAgICAgIHZhciB0aXRsZSA9IEZJTFRFUl9USVRMRVNb
ZmlsdGVyXTtcblx0ICAgICAgdmFyIF9wcm9wcyA9IHRoaXMucHJvcHM7XG5cdCAgICAgIHZhciBz
ZWxlY3RlZEZpbHRlciA9IF9wcm9wcy5maWx0ZXI7XG5cdCAgICAgIHZhciBvblNob3cgPSBfcHJv
cHMub25TaG93O1xuXHRcblx0XG5cdCAgICAgIHJldHVybiBfcmVhY3QyLmRlZmF1bHQuY3JlYXRl
RWxlbWVudChcblx0ICAgICAgICAnYScsXG5cdCAgICAgICAgeyBjbGFzc05hbWU6ICgwLCBfY2xh
c3NuYW1lczIuZGVmYXVsdCkoeyBzZWxlY3RlZDogZmlsdGVyID09PSBzZWxlY3RlZEZpbHRlciB9
KSxcblx0ICAgICAgICAgIHN0eWxlOiB7IGN1cnNvcjogJ3BvaW50ZXInIH0sXG5cdCAgICAgICAg
ICBvbkNsaWNrOiBmdW5jdGlvbiBvbkNsaWNrKCkge1xuXHQgICAgICAgICAgICByZXR1cm4gb25T
aG93KGZpbHRlcik7XG5cdCAgICAgICAgICB9IH0sXG5cdCAgICAgICAgdGl0bGVcblx0ICAgICAg
KTtcblx0ICAgIH1cblx0ICB9LCB7XG5cdCAgICBrZXk6ICdyZW5kZXJDbGVhckJ1dHRvbicsXG5c
dCAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyQ2xlYXJCdXR0b24oKSB7XG5cdCAgICAgIHZhciBf
cHJvcHMyID0gdGhpcy5wcm9wcztcblx0ICAgICAgdmFyIGNvbXBsZXRlZENvdW50ID0gX3Byb3Bz
Mi5jb21wbGV0ZWRDb3VudDtcblx0ICAgICAgdmFyIG9uQ2xlYXJDb21wbGV0ZWQgPSBfcHJvcHMy
Lm9uQ2xlYXJDb21wbGV0ZWQ7XG5cdFxuXHQgICAgICBpZiAoY29tcGxldGVkQ291bnQgPiAwKSB7
XG5cdCAgICAgICAgcmV0dXJuIF9yZWFjdDIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFxuXHQgICAg
ICAgICAgJ2J1dHRvbicsXG5cdCAgICAgICAgICB7IGNsYXNzTmFtZTogJ2NsZWFyLWNvbXBsZXRl
ZCcsXG5cdCAgICAgICAgICAgIG9uQ2xpY2s6IG9uQ2xlYXJDb21wbGV0ZWQgfSxcblx0ICAgICAg
ICAgICdDbGVhciBjb21wbGV0ZWQnXG5cdCAgICAgICAgKTtcblx0ICAgICAgfVxuXHQgICAgfVxu
XHQgIH0sIHtcblx0ICAgIGtleTogJ3JlbmRlcicsXG5cdCAgICB2YWx1ZTogZnVuY3Rpb24gcmVu
ZGVyKCkge1xuXHQgICAgICB2YXIgX3RoaXMyID0gdGhpcztcblx0XG5cdCAgICAgIHJldHVybiBf
cmVhY3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcblx0ICAgICAgICAnZm9vdGVyJyxcblx0ICAg
ICAgICB7IGNsYXNzTmFtZTogJ2Zvb3RlcicgfSxcblx0ICAgICAgICB0aGlzLnJlbmRlclRvZG9D
b3VudCgpLFxuXHQgICAgICAgIF9yZWFjdDIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFxuXHQgICAg
ICAgICAgJ3VsJyxcblx0ICAgICAgICAgIHsgY2xhc3NOYW1lOiAnZmlsdGVycycgfSxcblx0ICAg
ICAgICAgIFtfVG9kb0ZpbHRlcnMuU0hPV19BTEwsIF9Ub2RvRmlsdGVycy5TSE9XX0FDVElWRSwg
X1RvZG9GaWx0ZXJzLlNIT1dfQ09NUExFVEVEXS5tYXAoZnVuY3Rpb24gKGZpbHRlcikge1xuXHQg
ICAgICAgICAgICByZXR1cm4gX3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXG5cdCAgICAg
ICAgICAgICAgJ2xpJyxcblx0ICAgICAgICAgICAgICB7IGtleTogZmlsdGVyIH0sXG5cdCAgICAg
ICAgICAgICAgX3RoaXMyLnJlbmRlckZpbHRlckxpbmsoZmlsdGVyKVxuXHQgICAgICAgICAgICAp
O1xuXHQgICAgICAgICAgfSlcblx0ICAgICAgICApLFxuXHQgICAgICAgIHRoaXMucmVuZGVyQ2xl
YXJCdXR0b24oKVxuXHQgICAgICApO1xuXHQgICAgfVxuXHQgIH1dKTtcblx0XG5cdCAgcmV0dXJu
IEZvb3Rlcjtcblx0fShfcmVhY3QuQ29tcG9uZW50KTtcblx0XG5cdEZvb3Rlci5wcm9wVHlwZXMg
PSB7XG5cdCAgY29tcGxldGVkQ291bnQ6IF9yZWFjdC5Qcm9wVHlwZXMubnVtYmVyLmlzUmVxdWly
ZWQsXG5cdCAgYWN0aXZlQ291bnQ6IF9yZWFjdC5Qcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQs
XG5cdCAgZmlsdGVyOiBfcmVhY3QuUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuXHQgIG9u
Q2xlYXJDb21wbGV0ZWQ6IF9yZWFjdC5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuXHQgIG9u
U2hvdzogX3JlYWN0LlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcblx0fTtcblx0ZXhwb3J0cy5k
ZWZhdWx0ID0gRm9vdGVyO1xuXG4vKioqLyB9LFxuLyogMjAwICovXG4vKioqLyBmdW5jdGlvbiht
b2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7
XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtc
blx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0XG5cdHZhciBfY3JlYXRlQ2xhc3MgPSBmdW5jdGlv
biAoKSB7IGZ1bmN0aW9uIGRlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZh
ciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNb
aV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxz
ZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2Ny
aXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHko
dGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfSByZXR1cm4gZnVuY3Rpb24g
KENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykg
ZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAo
c3RhdGljUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsg
cmV0dXJuIENvbnN0cnVjdG9yOyB9OyB9KCk7XG5cdFxuXHR2YXIgX3JlYWN0ID0gX193ZWJwYWNr
X3JlcXVpcmVfXygxMik7XG5cdFxuXHR2YXIgX3JlYWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1
bHQoX3JlYWN0KTtcblx0XG5cdHZhciBfVG9kb1RleHRJbnB1dCA9IF9fd2VicGFja19yZXF1aXJl
X18oODQpO1xuXHRcblx0dmFyIF9Ub2RvVGV4dElucHV0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1
bHQoX1RvZG9UZXh0SW5wdXQpO1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVs
dChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDog
b2JqIH07IH1cblx0XG5cdGZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3Ry
dWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cg
bmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9
XG5cdFxuXHRmdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7
IGlmICghc2VsZikgeyB0aHJvdyBuZXcgUmVmZXJlbmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVu
IGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIGNh
bGwgJiYgKHR5cGVvZiBjYWxsID09PSBcIm9iamVjdFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1
bmN0aW9uXCIpID8gY2FsbCA6IHNlbGY7IH1cblx0XG5cdGZ1bmN0aW9uIF9pbmhlcml0cyhzdWJD
bGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25c
IiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBl
eHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90IFwiICsgdHlw
ZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3Vw
ZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTog
c3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxl
OiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmpl
Y3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90
b19fID0gc3VwZXJDbGFzczsgfVxuXHRcblx0dmFyIEhlYWRlciA9IGZ1bmN0aW9uIChfQ29tcG9u
ZW50KSB7XG5cdCAgX2luaGVyaXRzKEhlYWRlciwgX0NvbXBvbmVudCk7XG5cdFxuXHQgIGZ1bmN0
aW9uIEhlYWRlcigpIHtcblx0ICAgIHZhciBfcmVmO1xuXHRcblx0ICAgIHZhciBfdGVtcCwgX3Ro
aXMsIF9yZXQ7XG5cdFxuXHQgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIEhlYWRlcik7XG5cdFxu
XHQgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVu
KSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcblx0ICAgICAgYXJnc1tfa2V5XSA9
IGFyZ3VtZW50c1tfa2V5XTtcblx0ICAgIH1cblx0XG5cdCAgICByZXR1cm4gX3JldCA9IChfdGVt
cCA9IChfdGhpcyA9IF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHRoaXMsIChfcmVmID0gSGVh
ZGVyLl9fcHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoSGVhZGVyKSkuY2FsbC5hcHBs
eShfcmVmLCBbdGhpc10uY29uY2F0KGFyZ3MpKSksIF90aGlzKSwgX3RoaXMuaGFuZGxlU2F2ZSA9
IGZ1bmN0aW9uICh0ZXh0KSB7XG5cdCAgICAgIGlmICh0ZXh0Lmxlbmd0aCAhPT0gMCkge1xuXHQg
ICAgICAgIF90aGlzLnByb3BzLmFkZFRvZG8odGV4dCk7XG5cdCAgICAgIH1cblx0ICAgIH0sIF90
ZW1wKSwgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oX3RoaXMsIF9yZXQpO1xuXHQgIH1cblx0
XG5cdCAgX2NyZWF0ZUNsYXNzKEhlYWRlciwgW3tcblx0ICAgIGtleTogJ3JlbmRlcicsXG5cdCAg
ICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyKCkge1xuXHQgICAgICByZXR1cm4gX3JlYWN0Mi5kZWZh
dWx0LmNyZWF0ZUVsZW1lbnQoXG5cdCAgICAgICAgJ2hlYWRlcicsXG5cdCAgICAgICAgeyBjbGFz
c05hbWU6ICdoZWFkZXInIH0sXG5cdCAgICAgICAgX3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1l
bnQoXG5cdCAgICAgICAgICAnaDEnLFxuXHQgICAgICAgICAgbnVsbCxcblx0ICAgICAgICAgICd0
b2Rvcydcblx0ICAgICAgICApLFxuXHQgICAgICAgIF9yZWFjdDIuZGVmYXVsdC5jcmVhdGVFbGVt
ZW50KF9Ub2RvVGV4dElucHV0Mi5kZWZhdWx0LCB7IG5ld1RvZG86IHRydWUsXG5cdCAgICAgICAg
ICBvblNhdmU6IHRoaXMuaGFuZGxlU2F2ZSxcblx0ICAgICAgICAgIHBsYWNlaG9sZGVyOiAnV2hh
dCBuZWVkcyB0byBiZSBkb25lPycgfSlcblx0ICAgICAgKTtcblx0ICAgIH1cblx0ICB9XSk7XG5c
dFxuXHQgIHJldHVybiBIZWFkZXI7XG5cdH0oX3JlYWN0LkNvbXBvbmVudCk7XG5cdFxuXHRIZWFk
ZXIucHJvcFR5cGVzID0ge1xuXHQgIGFkZFRvZG86IF9yZWFjdC5Qcm9wVHlwZXMuZnVuYy5pc1Jl
cXVpcmVkXG5cdH07XG5cdGV4cG9ydHMuZGVmYXVsdCA9IEhlYWRlcjtcblxuLyoqKi8gfSxcbi8q
IDIwMSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWly
ZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4
cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7XG5cdFxuXHR2
YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2
YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3Vt
ZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5o
YXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtr
ZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9O1xuXHRcblx0dmFyIF9jcmVhdGVDbGFzcyA9IGZ1
bmN0aW9uICgpIHsgZnVuY3Rpb24gZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZv
ciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBw
cm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8
IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4g
ZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9w
ZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9IHJldHVybiBmdW5j
dGlvbiAoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1By
b3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7
IGlmIChzdGF0aWNQcm9wcykgZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJv
cHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH07IH0oKTtcblx0XG5cdHZhciBfVE9ET19GSUxURVJT
O1xuXHRcblx0dmFyIF9yZWFjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpO1xuXHRcblx0dmFy
IF9yZWFjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWFjdCk7XG5cdFxuXHR2YXIgX1Rv
ZG9JdGVtID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMDIpO1xuXHRcblx0dmFyIF9Ub2RvSXRlbTIg
PSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9Ub2RvSXRlbSk7XG5cdFxuXHR2YXIgX0Zvb3RlciA9
IF9fd2VicGFja19yZXF1aXJlX18oMTk5KTtcblx0XG5cdHZhciBfRm9vdGVyMiA9IF9pbnRlcm9w
UmVxdWlyZURlZmF1bHQoX0Zvb3Rlcik7XG5cdFxuXHR2YXIgX1RvZG9GaWx0ZXJzID0gX193ZWJw
YWNrX3JlcXVpcmVfXyg4Nik7XG5cdFxuXHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0
KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBv
YmogfTsgfVxuXHRcblx0ZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1
Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBu
ZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1c
blx0XG5cdGZ1bmN0aW9uIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKHNlbGYsIGNhbGwpIHsg
aWYgKCFzZWxmKSB7IHRocm93IG5ldyBSZWZlcmVuY2VFcnJvcihcInRoaXMgaGFzbid0IGJlZW4g
aW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBiZWVuIGNhbGxlZFwiKTsgfSByZXR1cm4gY2Fs
bCAmJiAodHlwZW9mIGNhbGwgPT09IFwib2JqZWN0XCIgfHwgdHlwZW9mIGNhbGwgPT09IFwiZnVu
Y3Rpb25cIikgPyBjYWxsIDogc2VsZjsgfVxuXHRcblx0ZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNs
YXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3VwZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwi
ICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4
cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgXCIgKyB0eXBl
b2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBl
ckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBz
dWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRhYmxlOiB0cnVlLCBjb25maWd1cmFibGU6
IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVjdC5zZXRQcm90b3R5cGVPZiA/IE9iamVj
dC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJDbGFzcykgOiBzdWJDbGFzcy5fX3Byb3Rv
X18gPSBzdXBlckNsYXNzOyB9XG5cdFxuXHRmdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBr
ZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmos
IGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1
ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJu
IG9iajsgfVxuXHRcblx0dmFyIFRPRE9fRklMVEVSUyA9IChfVE9ET19GSUxURVJTID0ge30sIF9k
ZWZpbmVQcm9wZXJ0eShfVE9ET19GSUxURVJTLCBfVG9kb0ZpbHRlcnMuU0hPV19BTEwsIGZ1bmN0
aW9uICgpIHtcblx0ICByZXR1cm4gdHJ1ZTtcblx0fSksIF9kZWZpbmVQcm9wZXJ0eShfVE9ET19G
SUxURVJTLCBfVG9kb0ZpbHRlcnMuU0hPV19BQ1RJVkUsIGZ1bmN0aW9uICh0b2RvKSB7XG5cdCAg
cmV0dXJuICF0b2RvLmNvbXBsZXRlZDtcblx0fSksIF9kZWZpbmVQcm9wZXJ0eShfVE9ET19GSUxU
RVJTLCBfVG9kb0ZpbHRlcnMuU0hPV19DT01QTEVURUQsIGZ1bmN0aW9uICh0b2RvKSB7XG5cdCAg
cmV0dXJuIHRvZG8uY29tcGxldGVkO1xuXHR9KSwgX1RPRE9fRklMVEVSUyk7XG5cdFxuXHR2YXIg
TWFpblNlY3Rpb24gPSBmdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuXHQgIF9pbmhlcml0cyhNYWlu
U2VjdGlvbiwgX0NvbXBvbmVudCk7XG5cdFxuXHQgIGZ1bmN0aW9uIE1haW5TZWN0aW9uKCkge1xu
XHQgICAgdmFyIF9yZWY7XG5cdFxuXHQgICAgdmFyIF90ZW1wLCBfdGhpcywgX3JldDtcblx0XG5c
dCAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgTWFpblNlY3Rpb24pO1xuXHRcblx0ICAgIGZvciAo
dmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJyYXkoX2xlbiksIF9rZXkgPSAw
OyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG5cdCAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNb
X2tleV07XG5cdCAgICB9XG5cdFxuXHQgICAgcmV0dXJuIF9yZXQgPSAoX3RlbXAgPSAoX3RoaXMg
PSBfcG9zc2libGVDb25zdHJ1Y3RvclJldHVybih0aGlzLCAoX3JlZiA9IE1haW5TZWN0aW9uLl9f
cHJvdG9fXyB8fCBPYmplY3QuZ2V0UHJvdG90eXBlT2YoTWFpblNlY3Rpb24pKS5jYWxsLmFwcGx5
KF9yZWYsIFt0aGlzXS5jb25jYXQoYXJncykpKSwgX3RoaXMpLCBfdGhpcy5zdGF0ZSA9IHsgZmls
dGVyOiBfVG9kb0ZpbHRlcnMuU0hPV19BTEwgfSwgX3RoaXMuaGFuZGxlQ2xlYXJDb21wbGV0ZWQg
PSBmdW5jdGlvbiAoKSB7XG5cdCAgICAgIF90aGlzLnByb3BzLmFjdGlvbnMuY2xlYXJDb21wbGV0
ZWQoKTtcblx0ICAgIH0sIF90aGlzLmhhbmRsZVNob3cgPSBmdW5jdGlvbiAoZmlsdGVyKSB7XG5c
dCAgICAgIF90aGlzLnNldFN0YXRlKHsgZmlsdGVyOiBmaWx0ZXIgfSk7XG5cdCAgICB9LCBfdGVt
cCksIF9wb3NzaWJsZUNvbnN0cnVjdG9yUmV0dXJuKF90aGlzLCBfcmV0KTtcblx0ICB9XG5cdFxu
XHQgIF9jcmVhdGVDbGFzcyhNYWluU2VjdGlvbiwgW3tcblx0ICAgIGtleTogJ3JlbmRlclRvZ2ds
ZUFsbCcsXG5cdCAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVyVG9nZ2xlQWxsKGNvbXBsZXRlZENv
dW50KSB7XG5cdCAgICAgIHZhciBfcHJvcHMgPSB0aGlzLnByb3BzO1xuXHQgICAgICB2YXIgdG9k
b3MgPSBfcHJvcHMudG9kb3M7XG5cdCAgICAgIHZhciBhY3Rpb25zID0gX3Byb3BzLmFjdGlvbnM7
XG5cdFxuXHQgICAgICBpZiAodG9kb3MubGVuZ3RoID4gMCkge1xuXHQgICAgICAgIHJldHVybiBf
cmVhY3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgnaW5wdXQnLCB7IGNsYXNzTmFtZTogJ3RvZ2ds
ZS1hbGwnLFxuXHQgICAgICAgICAgdHlwZTogJ2NoZWNrYm94Jyxcblx0ICAgICAgICAgIGNoZWNr
ZWQ6IGNvbXBsZXRlZENvdW50ID09PSB0b2Rvcy5sZW5ndGgsXG5cdCAgICAgICAgICBvbkNoYW5n
ZTogYWN0aW9ucy5jb21wbGV0ZUFsbCB9KTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQgIH0sIHtc
blx0ICAgIGtleTogJ3JlbmRlckZvb3RlcicsXG5cdCAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVy
Rm9vdGVyKGNvbXBsZXRlZENvdW50KSB7XG5cdCAgICAgIHZhciB0b2RvcyA9IHRoaXMucHJvcHMu
dG9kb3M7XG5cdCAgICAgIHZhciBmaWx0ZXIgPSB0aGlzLnN0YXRlLmZpbHRlcjtcblx0XG5cdCAg
ICAgIHZhciBhY3RpdmVDb3VudCA9IHRvZG9zLmxlbmd0aCAtIGNvbXBsZXRlZENvdW50O1xuXHRc
blx0ICAgICAgaWYgKHRvZG9zLmxlbmd0aCkge1xuXHQgICAgICAgIHJldHVybiBfcmVhY3QyLmRl
ZmF1bHQuY3JlYXRlRWxlbWVudChfRm9vdGVyMi5kZWZhdWx0LCB7IGNvbXBsZXRlZENvdW50OiBj
b21wbGV0ZWRDb3VudCxcblx0ICAgICAgICAgIGFjdGl2ZUNvdW50OiBhY3RpdmVDb3VudCxcblx0
ICAgICAgICAgIGZpbHRlcjogZmlsdGVyLFxuXHQgICAgICAgICAgb25DbGVhckNvbXBsZXRlZDog
dGhpcy5oYW5kbGVDbGVhckNvbXBsZXRlZC5iaW5kKHRoaXMpLFxuXHQgICAgICAgICAgb25TaG93
OiB0aGlzLmhhbmRsZVNob3cuYmluZCh0aGlzKSB9KTtcblx0ICAgICAgfVxuXHQgICAgfVxuXHQg
IH0sIHtcblx0ICAgIGtleTogJ3JlbmRlcicsXG5cdCAgICB2YWx1ZTogZnVuY3Rpb24gcmVuZGVy
KCkge1xuXHQgICAgICB2YXIgX3Byb3BzMiA9IHRoaXMucHJvcHM7XG5cdCAgICAgIHZhciB0b2Rv
cyA9IF9wcm9wczIudG9kb3M7XG5cdCAgICAgIHZhciBhY3Rpb25zID0gX3Byb3BzMi5hY3Rpb25z
O1xuXHQgICAgICB2YXIgZmlsdGVyID0gdGhpcy5zdGF0ZS5maWx0ZXI7XG5cdFxuXHRcblx0ICAg
ICAgdmFyIGZpbHRlcmVkVG9kb3MgPSB0b2Rvcy5maWx0ZXIoVE9ET19GSUxURVJTW2ZpbHRlcl0p
O1xuXHQgICAgICB2YXIgY29tcGxldGVkQ291bnQgPSB0b2Rvcy5yZWR1Y2UoZnVuY3Rpb24gKGNv
dW50LCB0b2RvKSB7XG5cdCAgICAgICAgcmV0dXJuIHRvZG8uY29tcGxldGVkID8gY291bnQgKyAx
IDogY291bnQ7XG5cdCAgICAgIH0sIDApO1xuXHRcblx0ICAgICAgcmV0dXJuIF9yZWFjdDIuZGVm
YXVsdC5jcmVhdGVFbGVtZW50KFxuXHQgICAgICAgICdzZWN0aW9uJyxcblx0ICAgICAgICB7IGNs
YXNzTmFtZTogJ21haW4nIH0sXG5cdCAgICAgICAgdGhpcy5yZW5kZXJUb2dnbGVBbGwoY29tcGxl
dGVkQ291bnQpLFxuXHQgICAgICAgIF9yZWFjdDIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KFxuXHQg
ICAgICAgICAgJ3VsJyxcblx0ICAgICAgICAgIHsgY2xhc3NOYW1lOiAndG9kby1saXN0JyB9LFxu
XHQgICAgICAgICAgZmlsdGVyZWRUb2Rvcy5tYXAoZnVuY3Rpb24gKHRvZG8pIHtcblx0ICAgICAg
ICAgICAgcmV0dXJuIF9yZWFjdDIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9Ub2RvSXRlbTIuZGVm
YXVsdCwgX2V4dGVuZHMoeyBrZXk6IHRvZG8uaWQsIHRvZG86IHRvZG8gfSwgYWN0aW9ucykpO1xu
XHQgICAgICAgICAgfSlcblx0ICAgICAgICApLFxuXHQgICAgICAgIHRoaXMucmVuZGVyRm9vdGVy
KGNvbXBsZXRlZENvdW50KVxuXHQgICAgICApO1xuXHQgICAgfVxuXHQgIH1dKTtcblx0XG5cdCAg
cmV0dXJuIE1haW5TZWN0aW9uO1xuXHR9KF9yZWFjdC5Db21wb25lbnQpO1xuXHRcblx0TWFpblNl
Y3Rpb24ucHJvcFR5cGVzID0ge1xuXHQgIHRvZG9zOiBfcmVhY3QuUHJvcFR5cGVzLmFycmF5Lmlz
UmVxdWlyZWQsXG5cdCAgYWN0aW9uczogX3JlYWN0LlByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJl
ZFxuXHR9O1xuXHRleHBvcnRzLmRlZmF1bHQgPSBNYWluU2VjdGlvbjtcblxuLyoqKi8gfSxcbi8q
IDIwMiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWly
ZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4
cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7XG5cdFxuXHR2
YXIgX2NyZWF0ZUNsYXNzID0gZnVuY3Rpb24gKCkgeyBmdW5jdGlvbiBkZWZpbmVQcm9wZXJ0aWVz
KHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykg
eyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNj
cmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1
ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1
ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0
b3IpOyB9IH0gcmV0dXJuIGZ1bmN0aW9uIChDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGlj
UHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIGRlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJv
dG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBkZWZpbmVQcm9wZXJ0aWVzKENv
bnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfTsgfSgpO1xuXHRc
blx0dmFyIF9yZWFjdCA9IF9fd2VicGFja19yZXF1aXJlX18oMTIpO1xuXHRcblx0dmFyIF9yZWFj
dDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9yZWFjdCk7XG5cdFxuXHR2YXIgX2NsYXNzbmFt
ZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMxKTtcblx0XG5cdHZhciBfY2xhc3NuYW1lczIgPSBf
aW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jbGFzc25hbWVzKTtcblx0XG5cdHZhciBfVG9kb1RleHRJ
bnB1dCA9IF9fd2VicGFja19yZXF1aXJlX18oODQpO1xuXHRcblx0dmFyIF9Ub2RvVGV4dElucHV0
MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX1RvZG9UZXh0SW5wdXQpO1xuXHRcblx0ZnVuY3Rp
b24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01v
ZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblx0XG5cdGZ1bmN0aW9uIF9jbGFzc0Nh
bGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2Vv
ZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xh
c3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cdFxuXHRmdW5jdGlvbiBfcG9zc2libGVDb25zdHJ1
Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmICghc2VsZikgeyB0aHJvdyBuZXcgUmVmZXJlbmNl
RXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVl
biBjYWxsZWRcIik7IH0gcmV0dXJuIGNhbGwgJiYgKHR5cGVvZiBjYWxsID09PSBcIm9iamVjdFwi
IHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpID8gY2FsbCA6IHNlbGY7IH1cblx0XG5c
dGZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9mIHN1
cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRocm93
IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3Ig
YSBmdW5jdGlvbiwgbm90IFwiICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnByb3Rv
dHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlwZSwg
eyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3cml0
YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBPYmpl
Y3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVy
Q2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXHRcblx0dmFyIFRv
ZG9JdGVtID0gZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcblx0ICBfaW5oZXJpdHMoVG9kb0l0ZW0s
IF9Db21wb25lbnQpO1xuXHRcblx0ICBmdW5jdGlvbiBUb2RvSXRlbSgpIHtcblx0ICAgIHZhciBf
cmVmO1xuXHRcblx0ICAgIHZhciBfdGVtcCwgX3RoaXMsIF9yZXQ7XG5cdFxuXHQgICAgX2NsYXNz
Q2FsbENoZWNrKHRoaXMsIFRvZG9JdGVtKTtcblx0XG5cdCAgICBmb3IgKHZhciBfbGVuID0gYXJn
dW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47
IF9rZXkrKykge1xuXHQgICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuXHQgICAg
fVxuXHRcblx0ICAgIHJldHVybiBfcmV0ID0gKF90ZW1wID0gKF90aGlzID0gX3Bvc3NpYmxlQ29u
c3RydWN0b3JSZXR1cm4odGhpcywgKF9yZWYgPSBUb2RvSXRlbS5fX3Byb3RvX18gfHwgT2JqZWN0
LmdldFByb3RvdHlwZU9mKFRvZG9JdGVtKSkuY2FsbC5hcHBseShfcmVmLCBbdGhpc10uY29uY2F0
KGFyZ3MpKSksIF90aGlzKSwgX3RoaXMuc3RhdGUgPSB7XG5cdCAgICAgIGVkaXRpbmc6IGZhbHNl
XG5cdCAgICB9LCBfdGhpcy5oYW5kbGVEb3VibGVDbGljayA9IGZ1bmN0aW9uICgpIHtcblx0ICAg
ICAgX3RoaXMuc2V0U3RhdGUoeyBlZGl0aW5nOiB0cnVlIH0pO1xuXHQgICAgfSwgX3RoaXMuaGFu
ZGxlU2F2ZSA9IGZ1bmN0aW9uIChpZCwgdGV4dCkge1xuXHQgICAgICBpZiAodGV4dC5sZW5ndGgg
PT09IDApIHtcblx0ICAgICAgICBfdGhpcy5wcm9wcy5kZWxldGVUb2RvKGlkKTtcblx0ICAgICAg
fSBlbHNlIHtcblx0ICAgICAgICBfdGhpcy5wcm9wcy5lZGl0VG9kbyhpZCwgdGV4dCk7XG5cdCAg
ICAgIH1cblx0ICAgICAgX3RoaXMuc2V0U3RhdGUoeyBlZGl0aW5nOiBmYWxzZSB9KTtcblx0ICAg
IH0sIF90ZW1wKSwgX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4oX3RoaXMsIF9yZXQpO1xuXHQg
IH1cblx0XG5cdCAgX2NyZWF0ZUNsYXNzKFRvZG9JdGVtLCBbe1xuXHQgICAga2V5OiAncmVuZGVy
Jyxcblx0ICAgIHZhbHVlOiBmdW5jdGlvbiByZW5kZXIoKSB7XG5cdCAgICAgIHZhciBfdGhpczIg
PSB0aGlzO1xuXHRcblx0ICAgICAgdmFyIF9wcm9wcyA9IHRoaXMucHJvcHM7XG5cdCAgICAgIHZh
ciB0b2RvID0gX3Byb3BzLnRvZG87XG5cdCAgICAgIHZhciBjb21wbGV0ZVRvZG8gPSBfcHJvcHMu
Y29tcGxldGVUb2RvO1xuXHQgICAgICB2YXIgZGVsZXRlVG9kbyA9IF9wcm9wcy5kZWxldGVUb2Rv
O1xuXHRcblx0XG5cdCAgICAgIHZhciBlbGVtZW50ID0gdm9pZCAwO1xuXHQgICAgICBpZiAodGhp
cy5zdGF0ZS5lZGl0aW5nKSB7XG5cdCAgICAgICAgZWxlbWVudCA9IF9yZWFjdDIuZGVmYXVsdC5j
cmVhdGVFbGVtZW50KF9Ub2RvVGV4dElucHV0Mi5kZWZhdWx0LCB7IHRleHQ6IHRvZG8udGV4dCxc
blx0ICAgICAgICAgIGVkaXRpbmc6IHRoaXMuc3RhdGUuZWRpdGluZyxcblx0ICAgICAgICAgIG9u
U2F2ZTogZnVuY3Rpb24gb25TYXZlKHRleHQpIHtcblx0ICAgICAgICAgICAgcmV0dXJuIF90aGlz
Mi5oYW5kbGVTYXZlKHRvZG8uaWQsIHRleHQpO1xuXHQgICAgICAgICAgfSB9KTtcblx0ICAgICAg
fSBlbHNlIHtcblx0ICAgICAgICBlbGVtZW50ID0gX3JlYWN0Mi5kZWZhdWx0LmNyZWF0ZUVsZW1l
bnQoXG5cdCAgICAgICAgICAnZGl2Jyxcblx0ICAgICAgICAgIHsgY2xhc3NOYW1lOiAndmlldycg
fSxcblx0ICAgICAgICAgIF9yZWFjdDIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCdpbnB1dCcsIHsg
Y2xhc3NOYW1lOiAndG9nZ2xlJyxcblx0ICAgICAgICAgICAgdHlwZTogJ2NoZWNrYm94Jyxcblx0
ICAgICAgICAgICAgY2hlY2tlZDogdG9kby5jb21wbGV0ZWQsXG5cdCAgICAgICAgICAgIG9uQ2hh
bmdlOiBmdW5jdGlvbiBvbkNoYW5nZSgpIHtcblx0ICAgICAgICAgICAgICByZXR1cm4gY29tcGxl
dGVUb2RvKHRvZG8uaWQpO1xuXHQgICAgICAgICAgICB9IH0pLFxuXHQgICAgICAgICAgX3JlYWN0
Mi5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoXG5cdCAgICAgICAgICAgICdsYWJlbCcsXG5cdCAgICAg
ICAgICAgIHsgb25Eb3VibGVDbGljazogdGhpcy5oYW5kbGVEb3VibGVDbGljayB9LFxuXHQgICAg
ICAgICAgICB0b2RvLnRleHRcblx0ICAgICAgICAgICksXG5cdCAgICAgICAgICBfcmVhY3QyLmRl
ZmF1bHQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJywgeyBjbGFzc05hbWU6ICdkZXN0cm95Jyxcblx0
ICAgICAgICAgICAgb25DbGljazogZnVuY3Rpb24gb25DbGljaygpIHtcblx0ICAgICAgICAgICAg
ICByZXR1cm4gZGVsZXRlVG9kbyh0b2RvLmlkKTtcblx0ICAgICAgICAgICAgfSB9KVxuXHQgICAg
ICAgICk7XG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHJldHVybiBfcmVhY3QyLmRlZmF1bHQuY3Jl
YXRlRWxlbWVudChcblx0ICAgICAgICAnbGknLFxuXHQgICAgICAgIHsgY2xhc3NOYW1lOiAoMCwg
X2NsYXNzbmFtZXMyLmRlZmF1bHQpKHtcblx0ICAgICAgICAgICAgY29tcGxldGVkOiB0b2RvLmNv
bXBsZXRlZCxcblx0ICAgICAgICAgICAgZWRpdGluZzogdGhpcy5zdGF0ZS5lZGl0aW5nXG5cdCAg
ICAgICAgICB9KSB9LFxuXHQgICAgICAgIGVsZW1lbnRcblx0ICAgICAgKTtcblx0ICAgIH1cblx0
ICB9XSk7XG5cdFxuXHQgIHJldHVybiBUb2RvSXRlbTtcblx0fShfcmVhY3QuQ29tcG9uZW50KTtc
blx0XG5cdFRvZG9JdGVtLnByb3BUeXBlcyA9IHtcblx0ICB0b2RvOiBfcmVhY3QuUHJvcFR5cGVz
Lm9iamVjdC5pc1JlcXVpcmVkLFxuXHQgIGVkaXRUb2RvOiBfcmVhY3QuUHJvcFR5cGVzLmZ1bmMu
aXNSZXF1aXJlZCxcblx0ICBkZWxldGVUb2RvOiBfcmVhY3QuUHJvcFR5cGVzLmZ1bmMuaXNSZXF1
aXJlZCxcblx0ICBjb21wbGV0ZVRvZG86IF9yZWFjdC5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVk
XG5cdH07XG5cdGV4cG9ydHMuZGVmYXVsdCA9IFRvZG9JdGVtO1xuXG4vKioqLyB9LFxuLyogMjAz
ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18p
IHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0
cywgXCJfX2VzTW9kdWxlXCIsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0XG5cdHZhciBf
cmVhY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEyKTtcblx0XG5cdHZhciBfcmVhY3QyID0gX2lu
dGVyb3BSZXF1aXJlRGVmYXVsdChfcmVhY3QpO1xuXHRcblx0dmFyIF9yZWR1eCA9IF9fd2VicGFj
a19yZXF1aXJlX18oMzApO1xuXHRcblx0dmFyIF9yZWFjdFJlZHV4ID0gX193ZWJwYWNrX3JlcXVp
cmVfXyg4MSk7XG5cdFxuXHR2YXIgX0hlYWRlciA9IF9fd2VicGFja19yZXF1aXJlX18oMjAwKTtc
blx0XG5cdHZhciBfSGVhZGVyMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX0hlYWRlcik7XG5c
dFxuXHR2YXIgX01haW5TZWN0aW9uID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMDEpO1xuXHRcblx0
dmFyIF9NYWluU2VjdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9NYWluU2VjdGlvbik7
XG5cdFxuXHR2YXIgX2FjdGlvbnMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDE5OCk7XG5cdFxuXHR2
YXIgVG9kb0FjdGlvbnMgPSBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChfYWN0aW9ucyk7XG5cdFxu
XHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZChvYmopIHsgaWYgKG9iaiAmJiBvYmou
X19lc01vZHVsZSkgeyByZXR1cm4gb2JqOyB9IGVsc2UgeyB2YXIgbmV3T2JqID0ge307IGlmIChv
YmogIT0gbnVsbCkgeyBmb3IgKHZhciBrZXkgaW4gb2JqKSB7IGlmIChPYmplY3QucHJvdG90eXBl
Lmhhc093blByb3BlcnR5LmNhbGwob2JqLCBrZXkpKSBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9
IH0gbmV3T2JqLmRlZmF1bHQgPSBvYmo7IHJldHVybiBuZXdPYmo7IH0gfVxuXHRcblx0ZnVuY3Rp
b24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01v
ZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblx0XG5cdHZhciBBcHAgPSBmdW5jdGlv
biBBcHAoX3JlZikge1xuXHQgIHZhciB0b2RvcyA9IF9yZWYudG9kb3M7XG5cdCAgdmFyIGFjdGlv
bnMgPSBfcmVmLmFjdGlvbnM7XG5cdCAgcmV0dXJuIF9yZWFjdDIuZGVmYXVsdC5jcmVhdGVFbGVt
ZW50KFxuXHQgICAgJ2RpdicsXG5cdCAgICBudWxsLFxuXHQgICAgX3JlYWN0Mi5kZWZhdWx0LmNy
ZWF0ZUVsZW1lbnQoX0hlYWRlcjIuZGVmYXVsdCwgeyBhZGRUb2RvOiBhY3Rpb25zLmFkZFRvZG8g
fSksXG5cdCAgICBfcmVhY3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChfTWFpblNlY3Rpb24yLmRl
ZmF1bHQsIHsgdG9kb3M6IHRvZG9zLCBhY3Rpb25zOiBhY3Rpb25zIH0pXG5cdCAgKTtcblx0fTtc
blx0XG5cdEFwcC5wcm9wVHlwZXMgPSB7XG5cdCAgdG9kb3M6IF9yZWFjdC5Qcm9wVHlwZXMuYXJy
YXkuaXNSZXF1aXJlZCxcblx0ICBhY3Rpb25zOiBfcmVhY3QuUHJvcFR5cGVzLm9iamVjdC5pc1Jl
cXVpcmVkXG5cdH07XG5cdFxuXHR2YXIgbWFwU3RhdGVUb1Byb3BzID0gZnVuY3Rpb24gbWFwU3Rh
dGVUb1Byb3BzKHN0YXRlKSB7XG5cdCAgcmV0dXJuIHtcblx0ICAgIHRvZG9zOiBzdGF0ZS50b2Rv
c1xuXHQgIH07XG5cdH07XG5cdFxuXHR2YXIgbWFwRGlzcGF0Y2hUb1Byb3BzID0gZnVuY3Rpb24g
bWFwRGlzcGF0Y2hUb1Byb3BzKGRpc3BhdGNoKSB7XG5cdCAgcmV0dXJuIHtcblx0ICAgIGFjdGlv
bnM6ICgwLCBfcmVkdXguYmluZEFjdGlvbkNyZWF0b3JzKShUb2RvQWN0aW9ucywgZGlzcGF0Y2gp
XG5cdCAgfTtcblx0fTtcblx0XG5cdGV4cG9ydHMuZGVmYXVsdCA9ICgwLCBfcmVhY3RSZWR1eC5j
b25uZWN0KShtYXBTdGF0ZVRvUHJvcHMsIG1hcERpc3BhdGNoVG9Qcm9wcykoQXBwKTtcblxuLyoq
Ki8gfSxcbi8qIDIwNCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBh
Y2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9yZWFjdCA9IF9f
d2VicGFja19yZXF1aXJlX18oMTIpO1xuXHRcblx0dmFyIF9yZWFjdDIgPSBfaW50ZXJvcFJlcXVp
cmVEZWZhdWx0KF9yZWFjdCk7XG5cdFxuXHR2YXIgX3JlYWN0RG9tID0gX193ZWJwYWNrX3JlcXVp
cmVfXygxMjMpO1xuXHRcblx0dmFyIF9yZWR1eCA9IF9fd2VicGFja19yZXF1aXJlX18oMzApO1xu
XHRcblx0dmFyIF9yZWFjdFJlZHV4ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg4MSk7XG5cdFxuXHR2
YXIgX0FwcCA9IF9fd2VicGFja19yZXF1aXJlX18oMjAzKTtcblx0XG5cdHZhciBfQXBwMiA9IF9p
bnRlcm9wUmVxdWlyZURlZmF1bHQoX0FwcCk7XG5cdFxuXHR2YXIgX3JlZHVjZXJzID0gX193ZWJw
YWNrX3JlcXVpcmVfXygyMDUpO1xuXHRcblx0dmFyIF9yZWR1Y2VyczIgPSBfaW50ZXJvcFJlcXVp
cmVEZWZhdWx0KF9yZWR1Y2Vycyk7XG5cdFxuXHRfX3dlYnBhY2tfcmVxdWlyZV9fKDIwNyk7XG5c
dFxuXHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYm
IG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXHRcblx0dmFyIHN0
b3JlID0gKDAsIF9yZWR1eC5jcmVhdGVTdG9yZSkoX3JlZHVjZXJzMi5kZWZhdWx0KTtcblx0XG5c
dCgwLCBfcmVhY3REb20ucmVuZGVyKShfcmVhY3QyLmRlZmF1bHQuY3JlYXRlRWxlbWVudChcblx0
ICBfcmVhY3RSZWR1eC5Qcm92aWRlcixcblx0ICB7IHN0b3JlOiBzdG9yZSB9LFxuXHQgIF9yZWFj
dDIuZGVmYXVsdC5jcmVhdGVFbGVtZW50KF9BcHAyLmRlZmF1bHQsIG51bGwpXG5cdCksIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdyb290JykpO1xuXG4vKioqLyB9LFxuLyogMjA1ICovXG4vKioq
LyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQn
dXNlIHN0cmljdCc7XG5cdFxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2Vz
TW9kdWxlXCIsIHtcblx0ICB2YWx1ZTogdHJ1ZVxuXHR9KTtcblx0XG5cdHZhciBfcmVkdXggPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDMwKTtcblx0XG5cdHZhciBfdG9kb3MgPSBfX3dlYnBhY2tfcmVx
dWlyZV9fKDIwNik7XG5cdFxuXHR2YXIgX3RvZG9zMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQo
X3RvZG9zKTtcblx0XG5cdGZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJl
dHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5c
dFxuXHR2YXIgcm9vdFJlZHVjZXIgPSAoMCwgX3JlZHV4LmNvbWJpbmVSZWR1Y2Vycykoe1xuXHQg
IHRvZG9zOiBfdG9kb3MyLmRlZmF1bHRcblx0fSk7XG5cdFxuXHRleHBvcnRzLmRlZmF1bHQgPSBy
b290UmVkdWNlcjtcblxuLyoqKi8gfSxcbi8qIDIwNiAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRc
blx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG5cdCAg
dmFsdWU6IHRydWVcblx0fSk7XG5cdFxuXHR2YXIgX3R5cGVvZiA9IHR5cGVvZiBTeW1ib2wgPT09
IFwiZnVuY3Rpb25cIiAmJiB0eXBlb2YgU3ltYm9sLml0ZXJhdG9yID09PSBcInN5bWJvbFwiID8g
ZnVuY3Rpb24gKG9iaikgeyByZXR1cm4gdHlwZW9mIG9iajsgfSA6IGZ1bmN0aW9uIChvYmopIHsg
cmV0dXJuIG9iaiAmJiB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvbnN0
cnVjdG9yID09PSBTeW1ib2wgPyBcInN5bWJvbFwiIDogdHlwZW9mIG9iajsgfTtcblx0XG5cdHZh
ciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZh
ciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1l
bnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhh
c093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tl
eV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cdFxuXHRleHBvcnRzLmRlZmF1bHQgPSB0b2Rv
cztcblx0XG5cdHZhciBfQWN0aW9uVHlwZXMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg1KTtcblx0
XG5cdGZ1bmN0aW9uIF90b0NvbnN1bWFibGVBcnJheShhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXko
YXJyKSkgeyBmb3IgKHZhciBpID0gMCwgYXJyMiA9IEFycmF5KGFyci5sZW5ndGgpOyBpIDwgYXJy
Lmxlbmd0aDsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH0gZWxzZSB7
IHJldHVybiBBcnJheS5mcm9tKGFycik7IH0gfVxuXHRcblx0dmFyIGluaXRpYWxTdGF0ZSA9IFtd
O1xuXHRcblx0ZnVuY3Rpb24gdG9kb3MoKSB7XG5cdCAgdmFyIHN0YXRlID0gYXJndW1lbnRzLmxl
bmd0aCA8PSAwIHx8IGFyZ3VtZW50c1swXSA9PT0gdW5kZWZpbmVkID8gaW5pdGlhbFN0YXRlIDog
YXJndW1lbnRzWzBdO1xuXHQgIHZhciBhY3Rpb24gPSBhcmd1bWVudHNbMV07XG5cdFxuXHQgIHZh
ciBfcmV0ID0gZnVuY3Rpb24gKCkge1xuXHQgICAgc3dpdGNoIChhY3Rpb24udHlwZSkge1xuXHQg
ICAgICBjYXNlIF9BY3Rpb25UeXBlcy5BRERfVE9ETzpcblx0ICAgICAgICByZXR1cm4ge1xuXHQg
ICAgICAgICAgdjogW3tcblx0ICAgICAgICAgICAgaWQ6IHN0YXRlLnJlZHVjZShmdW5jdGlvbiAo
bWF4SWQsIHRvZG8pIHtcblx0ICAgICAgICAgICAgICByZXR1cm4gTWF0aC5tYXgodG9kby5pZCwg
bWF4SWQpO1xuXHQgICAgICAgICAgICB9LCAtMSkgKyAxLFxuXHQgICAgICAgICAgICBjb21wbGV0
ZWQ6IGZhbHNlLFxuXHQgICAgICAgICAgICB0ZXh0OiBhY3Rpb24udGV4dFxuXHQgICAgICAgICAg
fV0uY29uY2F0KF90b0NvbnN1bWFibGVBcnJheShzdGF0ZSkpXG5cdCAgICAgICAgfTtcblx0XG5c
dCAgICAgIGNhc2UgX0FjdGlvblR5cGVzLkRFTEVURV9UT0RPOlxuXHQgICAgICAgIHJldHVybiB7
XG5cdCAgICAgICAgICB2OiBzdGF0ZS5maWx0ZXIoZnVuY3Rpb24gKHRvZG8pIHtcblx0ICAgICAg
ICAgICAgcmV0dXJuIHRvZG8uaWQgIT09IGFjdGlvbi5pZDtcblx0ICAgICAgICAgIH0pXG5cdCAg
ICAgICAgfTtcblx0XG5cdCAgICAgIGNhc2UgX0FjdGlvblR5cGVzLkVESVRfVE9ETzpcblx0ICAg
ICAgICByZXR1cm4ge1xuXHQgICAgICAgICAgdjogc3RhdGUubWFwKGZ1bmN0aW9uICh0b2RvKSB7
XG5cdCAgICAgICAgICAgIHJldHVybiB0b2RvLmlkID09PSBhY3Rpb24uaWQgPyBfZXh0ZW5kcyh7
fSwgdG9kbywgeyB0ZXh0OiBhY3Rpb24udGV4dCB9KSA6IHRvZG87XG5cdCAgICAgICAgICB9KVxu
XHQgICAgICAgIH07XG5cdFxuXHQgICAgICBjYXNlIF9BY3Rpb25UeXBlcy5DT01QTEVURV9UT0RP
OlxuXHQgICAgICAgIHJldHVybiB7XG5cdCAgICAgICAgICB2OiBzdGF0ZS5tYXAoZnVuY3Rpb24g
KHRvZG8pIHtcblx0ICAgICAgICAgICAgcmV0dXJuIHRvZG8uaWQgPT09IGFjdGlvbi5pZCA/IF9l
eHRlbmRzKHt9LCB0b2RvLCB7IGNvbXBsZXRlZDogIXRvZG8uY29tcGxldGVkIH0pIDogdG9kbztc
blx0ICAgICAgICAgIH0pXG5cdCAgICAgICAgfTtcblx0XG5cdCAgICAgIGNhc2UgX0FjdGlvblR5
cGVzLkNPTVBMRVRFX0FMTDpcblx0ICAgICAgICB2YXIgYXJlQWxsTWFya2VkID0gc3RhdGUuZXZl
cnkoZnVuY3Rpb24gKHRvZG8pIHtcblx0ICAgICAgICAgIHJldHVybiB0b2RvLmNvbXBsZXRlZDtc
blx0ICAgICAgICB9KTtcblx0ICAgICAgICByZXR1cm4ge1xuXHQgICAgICAgICAgdjogc3RhdGUu
bWFwKGZ1bmN0aW9uICh0b2RvKSB7XG5cdCAgICAgICAgICAgIHJldHVybiBfZXh0ZW5kcyh7fSwg
dG9kbywge1xuXHQgICAgICAgICAgICAgIGNvbXBsZXRlZDogIWFyZUFsbE1hcmtlZFxuXHQgICAg
ICAgICAgICB9KTtcblx0ICAgICAgICAgIH0pXG5cdCAgICAgICAgfTtcblx0XG5cdCAgICAgIGNh
c2UgX0FjdGlvblR5cGVzLkNMRUFSX0NPTVBMRVRFRDpcblx0ICAgICAgICByZXR1cm4ge1xuXHQg
ICAgICAgICAgdjogc3RhdGUuZmlsdGVyKGZ1bmN0aW9uICh0b2RvKSB7XG5cdCAgICAgICAgICAg
IHJldHVybiB0b2RvLmNvbXBsZXRlZCA9PT0gZmFsc2U7XG5cdCAgICAgICAgICB9KVxuXHQgICAg
ICAgIH07XG5cdFxuXHQgICAgICBkZWZhdWx0OlxuXHQgICAgICAgIHJldHVybiB7XG5cdCAgICAg
ICAgICB2OiBzdGF0ZVxuXHQgICAgICAgIH07XG5cdCAgICB9XG5cdCAgfSgpO1xuXHRcblx0ICBp
ZiAoKHR5cGVvZiBfcmV0ID09PSAndW5kZWZpbmVkJyA/ICd1bmRlZmluZWQnIDogX3R5cGVvZihf
cmV0KSkgPT09IFwib2JqZWN0XCIpIHJldHVybiBfcmV0LnY7XG5cdH1cblxuLyoqKi8gfSxcbi8q
IDIwNyAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0Ly8gcmVtb3Zl
ZCBieSBleHRyYWN0LXRleHQtd2VicGFjay1wbHVnaW5cblxuLyoqKi8gfSxcbi8qIDIwOCAqL1xu
LyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHQv
KiBlc2xpbnQtZGlzYWJsZSBuby11bnVzZWQtdmFycyAqL1xuXHR2YXIgaGFzT3duUHJvcGVydHkg
PSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXHR2YXIgcHJvcElzRW51bWVyYWJs
ZSA9IE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGU7XG5cdFxuXHRmdW5jdGlv
biB0b09iamVjdCh2YWwpIHtcblx0XHRpZiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdW5kZWZp
bmVkKSB7XG5cdFx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdPYmplY3QuYXNzaWduIGNhbm5vdCBi
ZSBjYWxsZWQgd2l0aCBudWxsIG9yIHVuZGVmaW5lZCcpO1xuXHRcdH1cblx0XG5cdFx0cmV0dXJu
IE9iamVjdCh2YWwpO1xuXHR9XG5cdFxuXHRmdW5jdGlvbiBzaG91bGRVc2VOYXRpdmUoKSB7XG5c
dFx0dHJ5IHtcblx0XHRcdGlmICghT2JqZWN0LmFzc2lnbikge1xuXHRcdFx0XHRyZXR1cm4gZmFs
c2U7XG5cdFx0XHR9XG5cdFxuXHRcdFx0Ly8gRGV0ZWN0IGJ1Z2d5IHByb3BlcnR5IGVudW1lcmF0
aW9uIG9yZGVyIGluIG9sZGVyIFY4IHZlcnNpb25zLlxuXHRcblx0XHRcdC8vIGh0dHBzOi8vYnVn
cy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1ZXMvZGV0YWlsP2lkPTQxMThcblx0XHRcdHZhciB0ZXN0
MSA9IG5ldyBTdHJpbmcoJ2FiYycpOyAgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuXHRcdFx0dGVz
dDFbNV0gPSAnZGUnO1xuXHRcdFx0aWYgKE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRlc3Qx
KVswXSA9PT0gJzUnKSB7XG5cdFx0XHRcdHJldHVybiBmYWxzZTtcblx0XHRcdH1cblx0XG5cdFx0
XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2
XG5cdFx0XHR2YXIgdGVzdDIgPSB7fTtcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgMTA7IGkr
Kykge1xuXHRcdFx0XHR0ZXN0MlsnXycgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGkpXSA9IGk7XG5c
dFx0XHR9XG5cdFx0XHR2YXIgb3JkZXIyID0gT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModGVz
dDIpLm1hcChmdW5jdGlvbiAobikge1xuXHRcdFx0XHRyZXR1cm4gdGVzdDJbbl07XG5cdFx0XHR9
KTtcblx0XHRcdGlmIChvcmRlcjIuam9pbignJykgIT09ICcwMTIzNDU2Nzg5Jykge1xuXHRcdFx0
XHRyZXR1cm4gZmFsc2U7XG5cdFx0XHR9XG5cdFxuXHRcdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9t
aXVtLm9yZy9wL3Y4L2lzc3Vlcy9kZXRhaWw/aWQ9MzA1NlxuXHRcdFx0dmFyIHRlc3QzID0ge307
XG5cdFx0XHQnYWJjZGVmZ2hpamtsbW5vcHFyc3QnLnNwbGl0KCcnKS5mb3JFYWNoKGZ1bmN0aW9u
IChsZXR0ZXIpIHtcblx0XHRcdFx0dGVzdDNbbGV0dGVyXSA9IGxldHRlcjtcblx0XHRcdH0pO1xu
XHRcdFx0aWYgKE9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30sIHRlc3QzKSkuam9pbignJykg
IT09XG5cdFx0XHRcdFx0J2FiY2RlZmdoaWprbG1ub3BxcnN0Jykge1xuXHRcdFx0XHRyZXR1cm4g
ZmFsc2U7XG5cdFx0XHR9XG5cdFxuXHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0fSBjYXRjaCAoZSkg
e1xuXHRcdFx0Ly8gV2UgZG9uJ3QgZXhwZWN0IGFueSBvZiB0aGUgYWJvdmUgdG8gdGhyb3csIGJ1
dCBiZXR0ZXIgdG8gYmUgc2FmZS5cblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cdH1cblx0
XG5cdG1vZHVsZS5leHBvcnRzID0gc2hvdWxkVXNlTmF0aXZlKCkgPyBPYmplY3QuYXNzaWduIDog
ZnVuY3Rpb24gKHRhcmdldCwgc291cmNlKSB7XG5cdFx0dmFyIGZyb207XG5cdFx0dmFyIHRvID0g
dG9PYmplY3QodGFyZ2V0KTtcblx0XHR2YXIgc3ltYm9scztcblx0XG5cdFx0Zm9yICh2YXIgcyA9
IDE7IHMgPCBhcmd1bWVudHMubGVuZ3RoOyBzKyspIHtcblx0XHRcdGZyb20gPSBPYmplY3QoYXJn
dW1lbnRzW3NdKTtcblx0XG5cdFx0XHRmb3IgKHZhciBrZXkgaW4gZnJvbSkge1xuXHRcdFx0XHRp
ZiAoaGFzT3duUHJvcGVydHkuY2FsbChmcm9tLCBrZXkpKSB7XG5cdFx0XHRcdFx0dG9ba2V5XSA9
IGZyb21ba2V5XTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcblx0XHRcdGlmIChPYmplY3QuZ2V0
T3duUHJvcGVydHlTeW1ib2xzKSB7XG5cdFx0XHRcdHN5bWJvbHMgPSBPYmplY3QuZ2V0T3duUHJv
cGVydHlTeW1ib2xzKGZyb20pO1xuXHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHN5bWJvbHMu
bGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRpZiAocHJvcElzRW51bWVyYWJsZS5jYWxsKGZyb20s
IHN5bWJvbHNbaV0pKSB7XG5cdFx0XHRcdFx0XHR0b1tzeW1ib2xzW2ldXSA9IGZyb21bc3ltYm9s
c1tpXV07XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXHRcblx0XHRy
ZXR1cm4gdG87XG5cdH07XG5cblxuLyoqKi8gfSxcbi8qIDIwOSAqL1xuLyoqKi8gZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3Qn
O1xuXHRcblx0Ly9UaGlzIGZpbGUgY29udGFpbnMgdGhlIEVTNiBleHRlbnNpb25zIHRvIHRoZSBj
b3JlIFByb21pc2VzL0ErIEFQSVxuXHRcblx0dmFyIFByb21pc2UgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDg4KTtcblx0XG5cdG1vZHVsZS5leHBvcnRzID0gUHJvbWlzZTtcblx0XG5cdC8qIFN0YXRp
YyBGdW5jdGlvbnMgKi9cblx0XG5cdHZhciBUUlVFID0gdmFsdWVQcm9taXNlKHRydWUpO1xuXHR2
YXIgRkFMU0UgPSB2YWx1ZVByb21pc2UoZmFsc2UpO1xuXHR2YXIgTlVMTCA9IHZhbHVlUHJvbWlz
ZShudWxsKTtcblx0dmFyIFVOREVGSU5FRCA9IHZhbHVlUHJvbWlzZSh1bmRlZmluZWQpO1xuXHR2
YXIgWkVSTyA9IHZhbHVlUHJvbWlzZSgwKTtcblx0dmFyIEVNUFRZU1RSSU5HID0gdmFsdWVQcm9t
aXNlKCcnKTtcblx0XG5cdGZ1bmN0aW9uIHZhbHVlUHJvbWlzZSh2YWx1ZSkge1xuXHQgIHZhciBw
ID0gbmV3IFByb21pc2UoUHJvbWlzZS5fNjEpO1xuXHQgIHAuXzgxID0gMTtcblx0ICBwLl82NSA9
IHZhbHVlO1xuXHQgIHJldHVybiBwO1xuXHR9XG5cdFByb21pc2UucmVzb2x2ZSA9IGZ1bmN0aW9u
ICh2YWx1ZSkge1xuXHQgIGlmICh2YWx1ZSBpbnN0YW5jZW9mIFByb21pc2UpIHJldHVybiB2YWx1
ZTtcblx0XG5cdCAgaWYgKHZhbHVlID09PSBudWxsKSByZXR1cm4gTlVMTDtcblx0ICBpZiAodmFs
dWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIFVOREVGSU5FRDtcblx0ICBpZiAodmFsdWUgPT09IHRy
dWUpIHJldHVybiBUUlVFO1xuXHQgIGlmICh2YWx1ZSA9PT0gZmFsc2UpIHJldHVybiBGQUxTRTtc
blx0ICBpZiAodmFsdWUgPT09IDApIHJldHVybiBaRVJPO1xuXHQgIGlmICh2YWx1ZSA9PT0gJycp
IHJldHVybiBFTVBUWVNUUklORztcblx0XG5cdCAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVj
dCcgfHwgdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICB0cnkge1xuXHQgICAg
ICB2YXIgdGhlbiA9IHZhbHVlLnRoZW47XG5cdCAgICAgIGlmICh0eXBlb2YgdGhlbiA9PT0gJ2Z1
bmN0aW9uJykge1xuXHQgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSh0aGVuLmJpbmQodmFsdWUp
KTtcblx0ICAgICAgfVxuXHQgICAgfSBjYXRjaCAoZXgpIHtcblx0ICAgICAgcmV0dXJuIG5ldyBQ
cm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcblx0ICAgICAgICByZWplY3QoZXgp
O1xuXHQgICAgICB9KTtcblx0ICAgIH1cblx0ICB9XG5cdCAgcmV0dXJuIHZhbHVlUHJvbWlzZSh2
YWx1ZSk7XG5cdH07XG5cdFxuXHRQcm9taXNlLmFsbCA9IGZ1bmN0aW9uIChhcnIpIHtcblx0ICB2
YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFycik7XG5cdFxuXHQgIHJldHVy
biBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG5cdCAgICBpZiAoYXJn
cy5sZW5ndGggPT09IDApIHJldHVybiByZXNvbHZlKFtdKTtcblx0ICAgIHZhciByZW1haW5pbmcg
PSBhcmdzLmxlbmd0aDtcblx0ICAgIGZ1bmN0aW9uIHJlcyhpLCB2YWwpIHtcblx0ICAgICAgaWYg
KHZhbCAmJiAodHlwZW9mIHZhbCA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0
aW9uJykpIHtcblx0ICAgICAgICBpZiAodmFsIGluc3RhbmNlb2YgUHJvbWlzZSAmJiB2YWwudGhl
biA9PT0gUHJvbWlzZS5wcm90b3R5cGUudGhlbikge1xuXHQgICAgICAgICAgd2hpbGUgKHZhbC5f
ODEgPT09IDMpIHtcblx0ICAgICAgICAgICAgdmFsID0gdmFsLl82NTtcblx0ICAgICAgICAgIH1c
blx0ICAgICAgICAgIGlmICh2YWwuXzgxID09PSAxKSByZXR1cm4gcmVzKGksIHZhbC5fNjUpO1xu
XHQgICAgICAgICAgaWYgKHZhbC5fODEgPT09IDIpIHJlamVjdCh2YWwuXzY1KTtcblx0ICAgICAg
ICAgIHZhbC50aGVuKGZ1bmN0aW9uICh2YWwpIHtcblx0ICAgICAgICAgICAgcmVzKGksIHZhbCk7
XG5cdCAgICAgICAgICB9LCByZWplY3QpO1xuXHQgICAgICAgICAgcmV0dXJuO1xuXHQgICAgICAg
IH0gZWxzZSB7XG5cdCAgICAgICAgICB2YXIgdGhlbiA9IHZhbC50aGVuO1xuXHQgICAgICAgICAg
aWYgKHR5cGVvZiB0aGVuID09PSAnZnVuY3Rpb24nKSB7XG5cdCAgICAgICAgICAgIHZhciBwID0g
bmV3IFByb21pc2UodGhlbi5iaW5kKHZhbCkpO1xuXHQgICAgICAgICAgICBwLnRoZW4oZnVuY3Rp
b24gKHZhbCkge1xuXHQgICAgICAgICAgICAgIHJlcyhpLCB2YWwpO1xuXHQgICAgICAgICAgICB9
LCByZWplY3QpO1xuXHQgICAgICAgICAgICByZXR1cm47XG5cdCAgICAgICAgICB9XG5cdCAgICAg
ICAgfVxuXHQgICAgICB9XG5cdCAgICAgIGFyZ3NbaV0gPSB2YWw7XG5cdCAgICAgIGlmICgtLXJl
bWFpbmluZyA9PT0gMCkge1xuXHQgICAgICAgIHJlc29sdmUoYXJncyk7XG5cdCAgICAgIH1cblx0
ICAgIH1cblx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuXHQg
ICAgICByZXMoaSwgYXJnc1tpXSk7XG5cdCAgICB9XG5cdCAgfSk7XG5cdH07XG5cdFxuXHRQcm9t
aXNlLnJlamVjdCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuXHQgIHJldHVybiBuZXcgUHJvbWlzZShm
dW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG5cdCAgICByZWplY3QodmFsdWUpO1xuXHQgIH0p
O1xuXHR9O1xuXHRcblx0UHJvbWlzZS5yYWNlID0gZnVuY3Rpb24gKHZhbHVlcykge1xuXHQgIHJl
dHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG5cdCAgICB2YWx1
ZXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSl7XG5cdCAgICAgIFByb21pc2UucmVzb2x2ZSh2YWx1
ZSkudGhlbihyZXNvbHZlLCByZWplY3QpO1xuXHQgICAgfSk7XG5cdCAgfSk7XG5cdH07XG5cdFxu
XHQvKiBQcm90b3R5cGUgTWV0aG9kcyAqL1xuXHRcblx0UHJvbWlzZS5wcm90b3R5cGVbJ2NhdGNo
J10gPSBmdW5jdGlvbiAob25SZWplY3RlZCkge1xuXHQgIHJldHVybiB0aGlzLnRoZW4obnVsbCwg
b25SZWplY3RlZCk7XG5cdH07XG5cblxuLyoqKi8gfSxcbi8qIDIxMCAqL1xuLyoqKi8gZnVuY3Rp
b24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJp
Y3QnO1xuXHRcblx0dmFyIFByb21pc2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg4KTtcblx0XG5c
dHZhciBERUZBVUxUX1dISVRFTElTVCA9IFtcblx0ICBSZWZlcmVuY2VFcnJvcixcblx0ICBUeXBl
RXJyb3IsXG5cdCAgUmFuZ2VFcnJvclxuXHRdO1xuXHRcblx0dmFyIGVuYWJsZWQgPSBmYWxzZTtc
blx0ZXhwb3J0cy5kaXNhYmxlID0gZGlzYWJsZTtcblx0ZnVuY3Rpb24gZGlzYWJsZSgpIHtcblx0
ICBlbmFibGVkID0gZmFsc2U7XG5cdCAgUHJvbWlzZS5fMTAgPSBudWxsO1xuXHQgIFByb21pc2Uu
Xzk3ID0gbnVsbDtcblx0fVxuXHRcblx0ZXhwb3J0cy5lbmFibGUgPSBlbmFibGU7XG5cdGZ1bmN0
aW9uIGVuYWJsZShvcHRpb25zKSB7XG5cdCAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cdCAg
aWYgKGVuYWJsZWQpIGRpc2FibGUoKTtcblx0ICBlbmFibGVkID0gdHJ1ZTtcblx0ICB2YXIgaWQg
PSAwO1xuXHQgIHZhciBkaXNwbGF5SWQgPSAwO1xuXHQgIHZhciByZWplY3Rpb25zID0ge307XG5c
dCAgUHJvbWlzZS5fMTAgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuXHQgICAgaWYgKFxuXHQgICAg
ICBwcm9taXNlLl84MSA9PT0gMiAmJiAvLyBJUyBSRUpFQ1RFRFxuXHQgICAgICByZWplY3Rpb25z
W3Byb21pc2UuXzcyXVxuXHQgICAgKSB7XG5cdCAgICAgIGlmIChyZWplY3Rpb25zW3Byb21pc2Uu
XzcyXS5sb2dnZWQpIHtcblx0ICAgICAgICBvbkhhbmRsZWQocHJvbWlzZS5fNzIpO1xuXHQgICAg
ICB9IGVsc2Uge1xuXHQgICAgICAgIGNsZWFyVGltZW91dChyZWplY3Rpb25zW3Byb21pc2UuXzcy
XS50aW1lb3V0KTtcblx0ICAgICAgfVxuXHQgICAgICBkZWxldGUgcmVqZWN0aW9uc1twcm9taXNl
Ll83Ml07XG5cdCAgICB9XG5cdCAgfTtcblx0ICBQcm9taXNlLl85NyA9IGZ1bmN0aW9uIChwcm9t
aXNlLCBlcnIpIHtcblx0ICAgIGlmIChwcm9taXNlLl80NSA9PT0gMCkgeyAvLyBub3QgeWV0IGhh
bmRsZWRcblx0ICAgICAgcHJvbWlzZS5fNzIgPSBpZCsrO1xuXHQgICAgICByZWplY3Rpb25zW3By
b21pc2UuXzcyXSA9IHtcblx0ICAgICAgICBkaXNwbGF5SWQ6IG51bGwsXG5cdCAgICAgICAgZXJy
b3I6IGVycixcblx0ICAgICAgICB0aW1lb3V0OiBzZXRUaW1lb3V0KFxuXHQgICAgICAgICAgb25V
bmhhbmRsZWQuYmluZChudWxsLCBwcm9taXNlLl83MiksXG5cdCAgICAgICAgICAvLyBGb3IgcmVm
ZXJlbmNlIGVycm9ycyBhbmQgdHlwZSBlcnJvcnMsIHRoaXMgYWxtb3N0IGFsd2F5c1xuXHQgICAg
ICAgICAgLy8gbWVhbnMgdGhlIHByb2dyYW1tZXIgbWFkZSBhIG1pc3Rha2UsIHNvIGxvZyB0aGVt
IGFmdGVyIGp1c3Rcblx0ICAgICAgICAgIC8vIDEwMG1zXG5cdCAgICAgICAgICAvLyBvdGhlcndp
c2UsIHdhaXQgMiBzZWNvbmRzIHRvIHNlZSBpZiB0aGV5IGdldCBoYW5kbGVkXG5cdCAgICAgICAg
ICBtYXRjaFdoaXRlbGlzdChlcnIsIERFRkFVTFRfV0hJVEVMSVNUKVxuXHQgICAgICAgICAgICA/
IDEwMFxuXHQgICAgICAgICAgICA6IDIwMDBcblx0ICAgICAgICApLFxuXHQgICAgICAgIGxvZ2dl
ZDogZmFsc2Vcblx0ICAgICAgfTtcblx0ICAgIH1cblx0ICB9O1xuXHQgIGZ1bmN0aW9uIG9uVW5o
YW5kbGVkKGlkKSB7XG5cdCAgICBpZiAoXG5cdCAgICAgIG9wdGlvbnMuYWxsUmVqZWN0aW9ucyB8
fFxuXHQgICAgICBtYXRjaFdoaXRlbGlzdChcblx0ICAgICAgICByZWplY3Rpb25zW2lkXS5lcnJv
cixcblx0ICAgICAgICBvcHRpb25zLndoaXRlbGlzdCB8fCBERUZBVUxUX1dISVRFTElTVFxuXHQg
ICAgICApXG5cdCAgICApIHtcblx0ICAgICAgcmVqZWN0aW9uc1tpZF0uZGlzcGxheUlkID0gZGlz
cGxheUlkKys7XG5cdCAgICAgIGlmIChvcHRpb25zLm9uVW5oYW5kbGVkKSB7XG5cdCAgICAgICAg
cmVqZWN0aW9uc1tpZF0ubG9nZ2VkID0gdHJ1ZTtcblx0ICAgICAgICBvcHRpb25zLm9uVW5oYW5k
bGVkKFxuXHQgICAgICAgICAgcmVqZWN0aW9uc1tpZF0uZGlzcGxheUlkLFxuXHQgICAgICAgICAg
cmVqZWN0aW9uc1tpZF0uZXJyb3Jcblx0ICAgICAgICApO1xuXHQgICAgICB9IGVsc2Uge1xuXHQg
ICAgICAgIHJlamVjdGlvbnNbaWRdLmxvZ2dlZCA9IHRydWU7XG5cdCAgICAgICAgbG9nRXJyb3Io
XG5cdCAgICAgICAgICByZWplY3Rpb25zW2lkXS5kaXNwbGF5SWQsXG5cdCAgICAgICAgICByZWpl
Y3Rpb25zW2lkXS5lcnJvclxuXHQgICAgICAgICk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0ICB9
XG5cdCAgZnVuY3Rpb24gb25IYW5kbGVkKGlkKSB7XG5cdCAgICBpZiAocmVqZWN0aW9uc1tpZF0u
bG9nZ2VkKSB7XG5cdCAgICAgIGlmIChvcHRpb25zLm9uSGFuZGxlZCkge1xuXHQgICAgICAgIG9w
dGlvbnMub25IYW5kbGVkKHJlamVjdGlvbnNbaWRdLmRpc3BsYXlJZCwgcmVqZWN0aW9uc1tpZF0u
ZXJyb3IpO1xuXHQgICAgICB9IGVsc2UgaWYgKCFyZWplY3Rpb25zW2lkXS5vblVuaGFuZGxlZCkg
e1xuXHQgICAgICAgIGNvbnNvbGUud2Fybihcblx0ICAgICAgICAgICdQcm9taXNlIFJlamVjdGlv
biBIYW5kbGVkIChpZDogJyArIHJlamVjdGlvbnNbaWRdLmRpc3BsYXlJZCArICcpOidcblx0ICAg
ICAgICApO1xuXHQgICAgICAgIGNvbnNvbGUud2Fybihcblx0ICAgICAgICAgICcgIFRoaXMgbWVh
bnMgeW91IGNhbiBpZ25vcmUgYW55IHByZXZpb3VzIG1lc3NhZ2VzIG9mIHRoZSBmb3JtIFwiUG9z
c2libGUgVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0aW9uXCIgd2l0aCBpZCAnICtcblx0ICAgICAg
ICAgIHJlamVjdGlvbnNbaWRdLmRpc3BsYXlJZCArICcuJ1xuXHQgICAgICAgICk7XG5cdCAgICAg
IH1cblx0ICAgIH1cblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIGxvZ0Vycm9yKGlkLCBlcnJv
cikge1xuXHQgIGNvbnNvbGUud2FybignUG9zc2libGUgVW5oYW5kbGVkIFByb21pc2UgUmVqZWN0
aW9uIChpZDogJyArIGlkICsgJyk6Jyk7XG5cdCAgdmFyIGVyclN0ciA9IChlcnJvciAmJiAoZXJy
b3Iuc3RhY2sgfHwgZXJyb3IpKSArICcnO1xuXHQgIGVyclN0ci5zcGxpdCgnXFxuJykuZm9yRWFj
aChmdW5jdGlvbiAobGluZSkge1xuXHQgICAgY29uc29sZS53YXJuKCcgICcgKyBsaW5lKTtcblx0
ICB9KTtcblx0fVxuXHRcblx0ZnVuY3Rpb24gbWF0Y2hXaGl0ZWxpc3QoZXJyb3IsIGxpc3QpIHtc
blx0ICByZXR1cm4gbGlzdC5zb21lKGZ1bmN0aW9uIChjbHMpIHtcblx0ICAgIHJldHVybiBlcnJv
ciBpbnN0YW5jZW9mIGNscztcblx0ICB9KTtcblx0fVxuXG4vKioqLyB9LFxuLyogMjExICovXG4v
KioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtcblxuXHRtb2R1bGUuZXhwb3J0cyA9IGZ1
bmN0aW9uKG1vZHVsZSkge1xyXG5cdFx0aWYoIW1vZHVsZS53ZWJwYWNrUG9seWZpbGwpIHtcclxu
XHRcdFx0bW9kdWxlLmRlcHJlY2F0ZSA9IGZ1bmN0aW9uKCkge307XHJcblx0XHRcdG1vZHVsZS5w
YXRocyA9IFtdO1xyXG5cdFx0XHQvLyBtb2R1bGUucGFyZW50ID0gdW5kZWZpbmVkIGJ5IGRlZmF1
bHRcclxuXHRcdFx0bW9kdWxlLmNoaWxkcmVuID0gW107XHJcblx0XHRcdG1vZHVsZS53ZWJwYWNr
UG9seWZpbGwgPSAxO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIG1vZHVsZTtcclxuXHR9XHJcblxu
XG4vKioqLyB9LFxuLyogMjEyICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMpIHtc
blxuXHQoZnVuY3Rpb24oc2VsZikge1xuXHQgICd1c2Ugc3RyaWN0Jztcblx0XG5cdCAgaWYgKHNl
bGYuZmV0Y2gpIHtcblx0ICAgIHJldHVyblxuXHQgIH1cblx0XG5cdCAgdmFyIHN1cHBvcnQgPSB7
XG5cdCAgICBzZWFyY2hQYXJhbXM6ICdVUkxTZWFyY2hQYXJhbXMnIGluIHNlbGYsXG5cdCAgICBp
dGVyYWJsZTogJ1N5bWJvbCcgaW4gc2VsZiAmJiAnaXRlcmF0b3InIGluIFN5bWJvbCxcblx0ICAg
IGJsb2I6ICdGaWxlUmVhZGVyJyBpbiBzZWxmICYmICdCbG9iJyBpbiBzZWxmICYmIChmdW5jdGlv
bigpIHtcblx0ICAgICAgdHJ5IHtcblx0ICAgICAgICBuZXcgQmxvYigpXG5cdCAgICAgICAgcmV0
dXJuIHRydWVcblx0ICAgICAgfSBjYXRjaChlKSB7XG5cdCAgICAgICAgcmV0dXJuIGZhbHNlXG5c
dCAgICAgIH1cblx0ICAgIH0pKCksXG5cdCAgICBmb3JtRGF0YTogJ0Zvcm1EYXRhJyBpbiBzZWxm
LFxuXHQgICAgYXJyYXlCdWZmZXI6ICdBcnJheUJ1ZmZlcicgaW4gc2VsZlxuXHQgIH1cblx0XG5c
dCAgZnVuY3Rpb24gbm9ybWFsaXplTmFtZShuYW1lKSB7XG5cdCAgICBpZiAodHlwZW9mIG5hbWUg
IT09ICdzdHJpbmcnKSB7XG5cdCAgICAgIG5hbWUgPSBTdHJpbmcobmFtZSlcblx0ICAgIH1cblx0
ICAgIGlmICgvW15hLXowLTlcXC0jJCUmJyorLlxcXl9gfH5dL2kudGVzdChuYW1lKSkge1xuXHQg
ICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIGNoYXJhY3RlciBpbiBoZWFkZXIgZmll
bGQgbmFtZScpXG5cdCAgICB9XG5cdCAgICByZXR1cm4gbmFtZS50b0xvd2VyQ2FzZSgpXG5cdCAg
fVxuXHRcblx0ICBmdW5jdGlvbiBub3JtYWxpemVWYWx1ZSh2YWx1ZSkge1xuXHQgICAgaWYgKHR5
cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycpIHtcblx0ICAgICAgdmFsdWUgPSBTdHJpbmcodmFsdWUp
XG5cdCAgICB9XG5cdCAgICByZXR1cm4gdmFsdWVcblx0ICB9XG5cdFxuXHQgIC8vIEJ1aWxkIGEg
ZGVzdHJ1Y3RpdmUgaXRlcmF0b3IgZm9yIHRoZSB2YWx1ZSBsaXN0XG5cdCAgZnVuY3Rpb24gaXRl
cmF0b3JGb3IoaXRlbXMpIHtcblx0ICAgIHZhciBpdGVyYXRvciA9IHtcblx0ICAgICAgbmV4dDog
ZnVuY3Rpb24oKSB7XG5cdCAgICAgICAgdmFyIHZhbHVlID0gaXRlbXMuc2hpZnQoKVxuXHQgICAg
ICAgIHJldHVybiB7ZG9uZTogdmFsdWUgPT09IHVuZGVmaW5lZCwgdmFsdWU6IHZhbHVlfVxuXHQg
ICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKHN1cHBvcnQuaXRlcmFibGUpIHtcblx0ICAg
ICAgaXRlcmF0b3JbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkge1xuXHQgICAgICAgIHJl
dHVybiBpdGVyYXRvclxuXHQgICAgICB9XG5cdCAgICB9XG5cdFxuXHQgICAgcmV0dXJuIGl0ZXJh
dG9yXG5cdCAgfVxuXHRcblx0ICBmdW5jdGlvbiBIZWFkZXJzKGhlYWRlcnMpIHtcblx0ICAgIHRo
aXMubWFwID0ge31cblx0XG5cdCAgICBpZiAoaGVhZGVycyBpbnN0YW5jZW9mIEhlYWRlcnMpIHtc
blx0ICAgICAgaGVhZGVycy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlLCBuYW1lKSB7XG5cdCAgICAg
ICAgdGhpcy5hcHBlbmQobmFtZSwgdmFsdWUpXG5cdCAgICAgIH0sIHRoaXMpXG5cdFxuXHQgICAg
fSBlbHNlIGlmIChoZWFkZXJzKSB7XG5cdCAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVz
KGhlYWRlcnMpLmZvckVhY2goZnVuY3Rpb24obmFtZSkge1xuXHQgICAgICAgIHRoaXMuYXBwZW5k
KG5hbWUsIGhlYWRlcnNbbmFtZV0pXG5cdCAgICAgIH0sIHRoaXMpXG5cdCAgICB9XG5cdCAgfVxu
XHRcblx0ICBIZWFkZXJzLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkg
e1xuXHQgICAgbmFtZSA9IG5vcm1hbGl6ZU5hbWUobmFtZSlcblx0ICAgIHZhbHVlID0gbm9ybWFs
aXplVmFsdWUodmFsdWUpXG5cdCAgICB2YXIgbGlzdCA9IHRoaXMubWFwW25hbWVdXG5cdCAgICBp
ZiAoIWxpc3QpIHtcblx0ICAgICAgbGlzdCA9IFtdXG5cdCAgICAgIHRoaXMubWFwW25hbWVdID0g
bGlzdFxuXHQgICAgfVxuXHQgICAgbGlzdC5wdXNoKHZhbHVlKVxuXHQgIH1cblx0XG5cdCAgSGVh
ZGVycy5wcm90b3R5cGVbJ2RlbGV0ZSddID0gZnVuY3Rpb24obmFtZSkge1xuXHQgICAgZGVsZXRl
IHRoaXMubWFwW25vcm1hbGl6ZU5hbWUobmFtZSldXG5cdCAgfVxuXHRcblx0ICBIZWFkZXJzLnBy
b3RvdHlwZS5nZXQgPSBmdW5jdGlvbihuYW1lKSB7XG5cdCAgICB2YXIgdmFsdWVzID0gdGhpcy5t
YXBbbm9ybWFsaXplTmFtZShuYW1lKV1cblx0ICAgIHJldHVybiB2YWx1ZXMgPyB2YWx1ZXNbMF0g
OiBudWxsXG5cdCAgfVxuXHRcblx0ICBIZWFkZXJzLnByb3RvdHlwZS5nZXRBbGwgPSBmdW5jdGlv
bihuYW1lKSB7XG5cdCAgICByZXR1cm4gdGhpcy5tYXBbbm9ybWFsaXplTmFtZShuYW1lKV0gfHwg
W11cblx0ICB9XG5cdFxuXHQgIEhlYWRlcnMucHJvdG90eXBlLmhhcyA9IGZ1bmN0aW9uKG5hbWUp
IHtcblx0ICAgIHJldHVybiB0aGlzLm1hcC5oYXNPd25Qcm9wZXJ0eShub3JtYWxpemVOYW1lKG5h
bWUpKVxuXHQgIH1cblx0XG5cdCAgSGVhZGVycy5wcm90b3R5cGUuc2V0ID0gZnVuY3Rpb24obmFt
ZSwgdmFsdWUpIHtcblx0ICAgIHRoaXMubWFwW25vcm1hbGl6ZU5hbWUobmFtZSldID0gW25vcm1h
bGl6ZVZhbHVlKHZhbHVlKV1cblx0ICB9XG5cdFxuXHQgIEhlYWRlcnMucHJvdG90eXBlLmZvckVh
Y2ggPSBmdW5jdGlvbihjYWxsYmFjaywgdGhpc0FyZykge1xuXHQgICAgT2JqZWN0LmdldE93blBy
b3BlcnR5TmFtZXModGhpcy5tYXApLmZvckVhY2goZnVuY3Rpb24obmFtZSkge1xuXHQgICAgICB0
aGlzLm1hcFtuYW1lXS5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKSB7XG5cdCAgICAgICAgY2FsbGJh
Y2suY2FsbCh0aGlzQXJnLCB2YWx1ZSwgbmFtZSwgdGhpcylcblx0ICAgICAgfSwgdGhpcylcblx0
ICAgIH0sIHRoaXMpXG5cdCAgfVxuXHRcblx0ICBIZWFkZXJzLnByb3RvdHlwZS5rZXlzID0gZnVu
Y3Rpb24oKSB7XG5cdCAgICB2YXIgaXRlbXMgPSBbXVxuXHQgICAgdGhpcy5mb3JFYWNoKGZ1bmN0
aW9uKHZhbHVlLCBuYW1lKSB7IGl0ZW1zLnB1c2gobmFtZSkgfSlcblx0ICAgIHJldHVybiBpdGVy
YXRvckZvcihpdGVtcylcblx0ICB9XG5cdFxuXHQgIEhlYWRlcnMucHJvdG90eXBlLnZhbHVlcyA9
IGZ1bmN0aW9uKCkge1xuXHQgICAgdmFyIGl0ZW1zID0gW11cblx0ICAgIHRoaXMuZm9yRWFjaChm
dW5jdGlvbih2YWx1ZSkgeyBpdGVtcy5wdXNoKHZhbHVlKSB9KVxuXHQgICAgcmV0dXJuIGl0ZXJh
dG9yRm9yKGl0ZW1zKVxuXHQgIH1cblx0XG5cdCAgSGVhZGVycy5wcm90b3R5cGUuZW50cmllcyA9
IGZ1bmN0aW9uKCkge1xuXHQgICAgdmFyIGl0ZW1zID0gW11cblx0ICAgIHRoaXMuZm9yRWFjaChm
dW5jdGlvbih2YWx1ZSwgbmFtZSkgeyBpdGVtcy5wdXNoKFtuYW1lLCB2YWx1ZV0pIH0pXG5cdCAg
ICByZXR1cm4gaXRlcmF0b3JGb3IoaXRlbXMpXG5cdCAgfVxuXHRcblx0ICBpZiAoc3VwcG9ydC5p
dGVyYWJsZSkge1xuXHQgICAgSGVhZGVycy5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSA9IEhl
YWRlcnMucHJvdG90eXBlLmVudHJpZXNcblx0ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIGNvbnN1bWVk
KGJvZHkpIHtcblx0ICAgIGlmIChib2R5LmJvZHlVc2VkKSB7XG5cdCAgICAgIHJldHVybiBQcm9t
aXNlLnJlamVjdChuZXcgVHlwZUVycm9yKCdBbHJlYWR5IHJlYWQnKSlcblx0ICAgIH1cblx0ICAg
IGJvZHkuYm9keVVzZWQgPSB0cnVlXG5cdCAgfVxuXHRcblx0ICBmdW5jdGlvbiBmaWxlUmVhZGVy
UmVhZHkocmVhZGVyKSB7XG5cdCAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2
ZSwgcmVqZWN0KSB7XG5cdCAgICAgIHJlYWRlci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcblx0ICAg
ICAgICByZXNvbHZlKHJlYWRlci5yZXN1bHQpXG5cdCAgICAgIH1cblx0ICAgICAgcmVhZGVyLm9u
ZXJyb3IgPSBmdW5jdGlvbigpIHtcblx0ICAgICAgICByZWplY3QocmVhZGVyLmVycm9yKVxuXHQg
ICAgICB9XG5cdCAgICB9KVxuXHQgIH1cblx0XG5cdCAgZnVuY3Rpb24gcmVhZEJsb2JBc0FycmF5
QnVmZmVyKGJsb2IpIHtcblx0ICAgIHZhciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpXG5cdCAg
ICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoYmxvYilcblx0ICAgIHJldHVybiBmaWxlUmVhZGVy
UmVhZHkocmVhZGVyKVxuXHQgIH1cblx0XG5cdCAgZnVuY3Rpb24gcmVhZEJsb2JBc1RleHQoYmxv
Yikge1xuXHQgICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKClcblx0ICAgIHJlYWRlci5y
ZWFkQXNUZXh0KGJsb2IpXG5cdCAgICByZXR1cm4gZmlsZVJlYWRlclJlYWR5KHJlYWRlcilcblx0
ICB9XG5cdFxuXHQgIGZ1bmN0aW9uIEJvZHkoKSB7XG5cdCAgICB0aGlzLmJvZHlVc2VkID0gZmFs
c2Vcblx0XG5cdCAgICB0aGlzLl9pbml0Qm9keSA9IGZ1bmN0aW9uKGJvZHkpIHtcblx0ICAgICAg
dGhpcy5fYm9keUluaXQgPSBib2R5XG5cdCAgICAgIGlmICh0eXBlb2YgYm9keSA9PT0gJ3N0cmlu
ZycpIHtcblx0ICAgICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHlcblx0ICAgICAgfSBlbHNlIGlm
IChzdXBwb3J0LmJsb2IgJiYgQmxvYi5wcm90b3R5cGUuaXNQcm90b3R5cGVPZihib2R5KSkge1xu
XHQgICAgICAgIHRoaXMuX2JvZHlCbG9iID0gYm9keVxuXHQgICAgICB9IGVsc2UgaWYgKHN1cHBv
cnQuZm9ybURhdGEgJiYgRm9ybURhdGEucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoYm9keSkpIHtc
blx0ICAgICAgICB0aGlzLl9ib2R5Rm9ybURhdGEgPSBib2R5XG5cdCAgICAgIH0gZWxzZSBpZiAo
c3VwcG9ydC5zZWFyY2hQYXJhbXMgJiYgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3Rv
dHlwZU9mKGJvZHkpKSB7XG5cdCAgICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5LnRvU3RyaW5n
KClcblx0ICAgICAgfSBlbHNlIGlmICghYm9keSkge1xuXHQgICAgICAgIHRoaXMuX2JvZHlUZXh0
ID0gJydcblx0ICAgICAgfSBlbHNlIGlmIChzdXBwb3J0LmFycmF5QnVmZmVyICYmIEFycmF5QnVm
ZmVyLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG5cdCAgICAgICAgLy8gT25seSBz
dXBwb3J0IEFycmF5QnVmZmVycyBmb3IgUE9TVCBtZXRob2QuXG5cdCAgICAgICAgLy8gUmVjZWl2
aW5nIEFycmF5QnVmZmVycyBoYXBwZW5zIHZpYSBCbG9icywgaW5zdGVhZC5cblx0ICAgICAgfSBl
bHNlIHtcblx0ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vuc3VwcG9ydGVkIEJvZHlJbml0IHR5
cGUnKVxuXHQgICAgICB9XG5cdFxuXHQgICAgICBpZiAoIXRoaXMuaGVhZGVycy5nZXQoJ2NvbnRl
bnQtdHlwZScpKSB7XG5cdCAgICAgICAgaWYgKHR5cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xu
XHQgICAgICAgICAgdGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgJ3RleHQvcGxhaW47
Y2hhcnNldD1VVEYtOCcpXG5cdCAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9ib2R5QmxvYiAmJiB0
aGlzLl9ib2R5QmxvYi50eXBlKSB7XG5cdCAgICAgICAgICB0aGlzLmhlYWRlcnMuc2V0KCdjb250
ZW50LXR5cGUnLCB0aGlzLl9ib2R5QmxvYi50eXBlKVxuXHQgICAgICAgIH0gZWxzZSBpZiAoc3Vw
cG9ydC5zZWFyY2hQYXJhbXMgJiYgVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlw
ZU9mKGJvZHkpKSB7XG5cdCAgICAgICAgICB0aGlzLmhlYWRlcnMuc2V0KCdjb250ZW50LXR5cGUn
LCAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkO2NoYXJzZXQ9VVRGLTgnKVxuXHQg
ICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfVxuXHRcblx0ICAgIGlmIChzdXBwb3J0LmJsb2Ip
IHtcblx0ICAgICAgdGhpcy5ibG9iID0gZnVuY3Rpb24oKSB7XG5cdCAgICAgICAgdmFyIHJlamVj
dGVkID0gY29uc3VtZWQodGhpcylcblx0ICAgICAgICBpZiAocmVqZWN0ZWQpIHtcblx0ICAgICAg
ICAgIHJldHVybiByZWplY3RlZFxuXHQgICAgICAgIH1cblx0XG5cdCAgICAgICAgaWYgKHRoaXMu
X2JvZHlCbG9iKSB7XG5cdCAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHRoaXMuX2Jv
ZHlCbG9iKVxuXHQgICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG5cdCAg
ICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCByZWFkIEZvcm1EYXRhIGJvZHkgYXMg
YmxvYicpXG5cdCAgICAgICAgfSBlbHNlIHtcblx0ICAgICAgICAgIHJldHVybiBQcm9taXNlLnJl
c29sdmUobmV3IEJsb2IoW3RoaXMuX2JvZHlUZXh0XSkpXG5cdCAgICAgICAgfVxuXHQgICAgICB9
XG5cdFxuXHQgICAgICB0aGlzLmFycmF5QnVmZmVyID0gZnVuY3Rpb24oKSB7XG5cdCAgICAgICAg
cmV0dXJuIHRoaXMuYmxvYigpLnRoZW4ocmVhZEJsb2JBc0FycmF5QnVmZmVyKVxuXHQgICAgICB9
XG5cdFxuXHQgICAgICB0aGlzLnRleHQgPSBmdW5jdGlvbigpIHtcblx0ICAgICAgICB2YXIgcmVq
ZWN0ZWQgPSBjb25zdW1lZCh0aGlzKVxuXHQgICAgICAgIGlmIChyZWplY3RlZCkge1xuXHQgICAg
ICAgICAgcmV0dXJuIHJlamVjdGVkXG5cdCAgICAgICAgfVxuXHRcblx0ICAgICAgICBpZiAodGhp
cy5fYm9keUJsb2IpIHtcblx0ICAgICAgICAgIHJldHVybiByZWFkQmxvYkFzVGV4dCh0aGlzLl9i
b2R5QmxvYilcblx0ICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2JvZHlGb3JtRGF0YSkge1xuXHQg
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5IGFz
IHRleHQnKVxuXHQgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICByZXR1cm4gUHJvbWlzZS5y
ZXNvbHZlKHRoaXMuX2JvZHlUZXh0KVxuXHQgICAgICAgIH1cblx0ICAgICAgfVxuXHQgICAgfSBl
bHNlIHtcblx0ICAgICAgdGhpcy50ZXh0ID0gZnVuY3Rpb24oKSB7XG5cdCAgICAgICAgdmFyIHJl
amVjdGVkID0gY29uc3VtZWQodGhpcylcblx0ICAgICAgICByZXR1cm4gcmVqZWN0ZWQgPyByZWpl
Y3RlZCA6IFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5VGV4dClcblx0ICAgICAgfVxuXHQgICAg
fVxuXHRcblx0ICAgIGlmIChzdXBwb3J0LmZvcm1EYXRhKSB7XG5cdCAgICAgIHRoaXMuZm9ybURh
dGEgPSBmdW5jdGlvbigpIHtcblx0ICAgICAgICByZXR1cm4gdGhpcy50ZXh0KCkudGhlbihkZWNv
ZGUpXG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICB0aGlzLmpzb24gPSBmdW5jdGlvbigp
IHtcblx0ICAgICAgcmV0dXJuIHRoaXMudGV4dCgpLnRoZW4oSlNPTi5wYXJzZSlcblx0ICAgIH1c
blx0XG5cdCAgICByZXR1cm4gdGhpc1xuXHQgIH1cblx0XG5cdCAgLy8gSFRUUCBtZXRob2RzIHdo
b3NlIGNhcGl0YWxpemF0aW9uIHNob3VsZCBiZSBub3JtYWxpemVkXG5cdCAgdmFyIG1ldGhvZHMg
PSBbJ0RFTEVURScsICdHRVQnLCAnSEVBRCcsICdPUFRJT05TJywgJ1BPU1QnLCAnUFVUJ11cblx0
XG5cdCAgZnVuY3Rpb24gbm9ybWFsaXplTWV0aG9kKG1ldGhvZCkge1xuXHQgICAgdmFyIHVwY2Fz
ZWQgPSBtZXRob2QudG9VcHBlckNhc2UoKVxuXHQgICAgcmV0dXJuIChtZXRob2RzLmluZGV4T2Yo
dXBjYXNlZCkgPiAtMSkgPyB1cGNhc2VkIDogbWV0aG9kXG5cdCAgfVxuXHRcblx0ICBmdW5jdGlv
biBSZXF1ZXN0KGlucHV0LCBvcHRpb25zKSB7XG5cdCAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7
fVxuXHQgICAgdmFyIGJvZHkgPSBvcHRpb25zLmJvZHlcblx0ICAgIGlmIChSZXF1ZXN0LnByb3Rv
dHlwZS5pc1Byb3RvdHlwZU9mKGlucHV0KSkge1xuXHQgICAgICBpZiAoaW5wdXQuYm9keVVzZWQp
IHtcblx0ICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBbHJlYWR5IHJlYWQnKVxuXHQgICAg
ICB9XG5cdCAgICAgIHRoaXMudXJsID0gaW5wdXQudXJsXG5cdCAgICAgIHRoaXMuY3JlZGVudGlh
bHMgPSBpbnB1dC5jcmVkZW50aWFsc1xuXHQgICAgICBpZiAoIW9wdGlvbnMuaGVhZGVycykge1xu
XHQgICAgICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKGlucHV0LmhlYWRlcnMpXG5cdCAg
ICAgIH1cblx0ICAgICAgdGhpcy5tZXRob2QgPSBpbnB1dC5tZXRob2Rcblx0ICAgICAgdGhpcy5t
b2RlID0gaW5wdXQubW9kZVxuXHQgICAgICBpZiAoIWJvZHkpIHtcblx0ICAgICAgICBib2R5ID0g
aW5wdXQuX2JvZHlJbml0XG5cdCAgICAgICAgaW5wdXQuYm9keVVzZWQgPSB0cnVlXG5cdCAgICAg
IH1cblx0ICAgIH0gZWxzZSB7XG5cdCAgICAgIHRoaXMudXJsID0gaW5wdXRcblx0ICAgIH1cblx0
XG5cdCAgICB0aGlzLmNyZWRlbnRpYWxzID0gb3B0aW9ucy5jcmVkZW50aWFscyB8fCB0aGlzLmNy
ZWRlbnRpYWxzIHx8ICdvbWl0J1xuXHQgICAgaWYgKG9wdGlvbnMuaGVhZGVycyB8fCAhdGhpcy5o
ZWFkZXJzKSB7XG5cdCAgICAgIHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKG9wdGlvbnMuaGVh
ZGVycylcblx0ICAgIH1cblx0ICAgIHRoaXMubWV0aG9kID0gbm9ybWFsaXplTWV0aG9kKG9wdGlv
bnMubWV0aG9kIHx8IHRoaXMubWV0aG9kIHx8ICdHRVQnKVxuXHQgICAgdGhpcy5tb2RlID0gb3B0
aW9ucy5tb2RlIHx8IHRoaXMubW9kZSB8fCBudWxsXG5cdCAgICB0aGlzLnJlZmVycmVyID0gbnVs
bFxuXHRcblx0ICAgIGlmICgodGhpcy5tZXRob2QgPT09ICdHRVQnIHx8IHRoaXMubWV0aG9kID09
PSAnSEVBRCcpICYmIGJvZHkpIHtcblx0ICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQm9keSBu
b3QgYWxsb3dlZCBmb3IgR0VUIG9yIEhFQUQgcmVxdWVzdHMnKVxuXHQgICAgfVxuXHQgICAgdGhp
cy5faW5pdEJvZHkoYm9keSlcblx0ICB9XG5cdFxuXHQgIFJlcXVlc3QucHJvdG90eXBlLmNsb25l
ID0gZnVuY3Rpb24oKSB7XG5cdCAgICByZXR1cm4gbmV3IFJlcXVlc3QodGhpcylcblx0ICB9XG5c
dFxuXHQgIGZ1bmN0aW9uIGRlY29kZShib2R5KSB7XG5cdCAgICB2YXIgZm9ybSA9IG5ldyBGb3Jt
RGF0YSgpXG5cdCAgICBib2R5LnRyaW0oKS5zcGxpdCgnJicpLmZvckVhY2goZnVuY3Rpb24oYnl0
ZXMpIHtcblx0ICAgICAgaWYgKGJ5dGVzKSB7XG5cdCAgICAgICAgdmFyIHNwbGl0ID0gYnl0ZXMu
c3BsaXQoJz0nKVxuXHQgICAgICAgIHZhciBuYW1lID0gc3BsaXQuc2hpZnQoKS5yZXBsYWNlKC9c
XCsvZywgJyAnKVxuXHQgICAgICAgIHZhciB2YWx1ZSA9IHNwbGl0LmpvaW4oJz0nKS5yZXBsYWNl
KC9cXCsvZywgJyAnKVxuXHQgICAgICAgIGZvcm0uYXBwZW5kKGRlY29kZVVSSUNvbXBvbmVudChu
YW1lKSwgZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKSlcblx0ICAgICAgfVxuXHQgICAgfSlcblx0
ICAgIHJldHVybiBmb3JtXG5cdCAgfVxuXHRcblx0ICBmdW5jdGlvbiBoZWFkZXJzKHhocikge1xu
XHQgICAgdmFyIGhlYWQgPSBuZXcgSGVhZGVycygpXG5cdCAgICB2YXIgcGFpcnMgPSAoeGhyLmdl
dEFsbFJlc3BvbnNlSGVhZGVycygpIHx8ICcnKS50cmltKCkuc3BsaXQoJ1xcbicpXG5cdCAgICBw
YWlycy5mb3JFYWNoKGZ1bmN0aW9uKGhlYWRlcikge1xuXHQgICAgICB2YXIgc3BsaXQgPSBoZWFk
ZXIudHJpbSgpLnNwbGl0KCc6Jylcblx0ICAgICAgdmFyIGtleSA9IHNwbGl0LnNoaWZ0KCkudHJp
bSgpXG5cdCAgICAgIHZhciB2YWx1ZSA9IHNwbGl0LmpvaW4oJzonKS50cmltKClcblx0ICAgICAg
aGVhZC5hcHBlbmQoa2V5LCB2YWx1ZSlcblx0ICAgIH0pXG5cdCAgICByZXR1cm4gaGVhZFxuXHQg
IH1cblx0XG5cdCAgQm9keS5jYWxsKFJlcXVlc3QucHJvdG90eXBlKVxuXHRcblx0ICBmdW5jdGlv
biBSZXNwb25zZShib2R5SW5pdCwgb3B0aW9ucykge1xuXHQgICAgaWYgKCFvcHRpb25zKSB7XG5c
dCAgICAgIG9wdGlvbnMgPSB7fVxuXHQgICAgfVxuXHRcblx0ICAgIHRoaXMudHlwZSA9ICdkZWZh
dWx0J1xuXHQgICAgdGhpcy5zdGF0dXMgPSBvcHRpb25zLnN0YXR1c1xuXHQgICAgdGhpcy5vayA9
IHRoaXMuc3RhdHVzID49IDIwMCAmJiB0aGlzLnN0YXR1cyA8IDMwMFxuXHQgICAgdGhpcy5zdGF0
dXNUZXh0ID0gb3B0aW9ucy5zdGF0dXNUZXh0XG5cdCAgICB0aGlzLmhlYWRlcnMgPSBvcHRpb25z
LmhlYWRlcnMgaW5zdGFuY2VvZiBIZWFkZXJzID8gb3B0aW9ucy5oZWFkZXJzIDogbmV3IEhlYWRl
cnMob3B0aW9ucy5oZWFkZXJzKVxuXHQgICAgdGhpcy51cmwgPSBvcHRpb25zLnVybCB8fCAnJ1xu
XHQgICAgdGhpcy5faW5pdEJvZHkoYm9keUluaXQpXG5cdCAgfVxuXHRcblx0ICBCb2R5LmNhbGwo
UmVzcG9uc2UucHJvdG90eXBlKVxuXHRcblx0ICBSZXNwb25zZS5wcm90b3R5cGUuY2xvbmUgPSBm
dW5jdGlvbigpIHtcblx0ICAgIHJldHVybiBuZXcgUmVzcG9uc2UodGhpcy5fYm9keUluaXQsIHtc
blx0ICAgICAgc3RhdHVzOiB0aGlzLnN0YXR1cyxcblx0ICAgICAgc3RhdHVzVGV4dDogdGhpcy5z
dGF0dXNUZXh0LFxuXHQgICAgICBoZWFkZXJzOiBuZXcgSGVhZGVycyh0aGlzLmhlYWRlcnMpLFxu
XHQgICAgICB1cmw6IHRoaXMudXJsXG5cdCAgICB9KVxuXHQgIH1cblx0XG5cdCAgUmVzcG9uc2Uu
ZXJyb3IgPSBmdW5jdGlvbigpIHtcblx0ICAgIHZhciByZXNwb25zZSA9IG5ldyBSZXNwb25zZShu
dWxsLCB7c3RhdHVzOiAwLCBzdGF0dXNUZXh0OiAnJ30pXG5cdCAgICByZXNwb25zZS50eXBlID0g
J2Vycm9yJ1xuXHQgICAgcmV0dXJuIHJlc3BvbnNlXG5cdCAgfVxuXHRcblx0ICB2YXIgcmVkaXJl
Y3RTdGF0dXNlcyA9IFszMDEsIDMwMiwgMzAzLCAzMDcsIDMwOF1cblx0XG5cdCAgUmVzcG9uc2Uu
cmVkaXJlY3QgPSBmdW5jdGlvbih1cmwsIHN0YXR1cykge1xuXHQgICAgaWYgKHJlZGlyZWN0U3Rh
dHVzZXMuaW5kZXhPZihzdGF0dXMpID09PSAtMSkge1xuXHQgICAgICB0aHJvdyBuZXcgUmFuZ2VF
cnJvcignSW52YWxpZCBzdGF0dXMgY29kZScpXG5cdCAgICB9XG5cdFxuXHQgICAgcmV0dXJuIG5l
dyBSZXNwb25zZShudWxsLCB7c3RhdHVzOiBzdGF0dXMsIGhlYWRlcnM6IHtsb2NhdGlvbjogdXJs
fX0pXG5cdCAgfVxuXHRcblx0ICBzZWxmLkhlYWRlcnMgPSBIZWFkZXJzXG5cdCAgc2VsZi5SZXF1
ZXN0ID0gUmVxdWVzdFxuXHQgIHNlbGYuUmVzcG9uc2UgPSBSZXNwb25zZVxuXHRcblx0ICBzZWxm
LmZldGNoID0gZnVuY3Rpb24oaW5wdXQsIGluaXQpIHtcblx0ICAgIHJldHVybiBuZXcgUHJvbWlz
ZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcblx0ICAgICAgdmFyIHJlcXVlc3Rcblx0ICAg
ICAgaWYgKFJlcXVlc3QucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoaW5wdXQpICYmICFpbml0KSB7
XG5cdCAgICAgICAgcmVxdWVzdCA9IGlucHV0XG5cdCAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAg
cmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGlucHV0LCBpbml0KVxuXHQgICAgICB9XG5cdFxuXHQgICAg
ICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KClcblx0XG5cdCAgICAgIGZ1bmN0aW9uIHJl
c3BvbnNlVVJMKCkge1xuXHQgICAgICAgIGlmICgncmVzcG9uc2VVUkwnIGluIHhocikge1xuXHQg
ICAgICAgICAgcmV0dXJuIHhoci5yZXNwb25zZVVSTFxuXHQgICAgICAgIH1cblx0XG5cdCAgICAg
ICAgLy8gQXZvaWQgc2VjdXJpdHkgd2FybmluZ3Mgb24gZ2V0UmVzcG9uc2VIZWFkZXIgd2hlbiBu
b3QgYWxsb3dlZCBieSBDT1JTXG5cdCAgICAgICAgaWYgKC9eWC1SZXF1ZXN0LVVSTDovbS50ZXN0
KHhoci5nZXRBbGxSZXNwb25zZUhlYWRlcnMoKSkpIHtcblx0ICAgICAgICAgIHJldHVybiB4aHIu
Z2V0UmVzcG9uc2VIZWFkZXIoJ1gtUmVxdWVzdC1VUkwnKVxuXHQgICAgICAgIH1cblx0XG5cdCAg
ICAgICAgcmV0dXJuXG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlv
bigpIHtcblx0ICAgICAgICB2YXIgb3B0aW9ucyA9IHtcblx0ICAgICAgICAgIHN0YXR1czogeGhy
LnN0YXR1cyxcblx0ICAgICAgICAgIHN0YXR1c1RleHQ6IHhoci5zdGF0dXNUZXh0LFxuXHQgICAg
ICAgICAgaGVhZGVyczogaGVhZGVycyh4aHIpLFxuXHQgICAgICAgICAgdXJsOiByZXNwb25zZVVS
TCgpXG5cdCAgICAgICAgfVxuXHQgICAgICAgIHZhciBib2R5ID0gJ3Jlc3BvbnNlJyBpbiB4aHIg
PyB4aHIucmVzcG9uc2UgOiB4aHIucmVzcG9uc2VUZXh0XG5cdCAgICAgICAgcmVzb2x2ZShuZXcg
UmVzcG9uc2UoYm9keSwgb3B0aW9ucykpXG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHhoci5vbmVy
cm9yID0gZnVuY3Rpb24oKSB7XG5cdCAgICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ05ldHdv
cmsgcmVxdWVzdCBmYWlsZWQnKSlcblx0ICAgICAgfVxuXHRcblx0ICAgICAgeGhyLm9udGltZW91
dCA9IGZ1bmN0aW9uKCkge1xuXHQgICAgICAgIHJlamVjdChuZXcgVHlwZUVycm9yKCdOZXR3b3Jr
IHJlcXVlc3QgZmFpbGVkJykpXG5cdCAgICAgIH1cblx0XG5cdCAgICAgIHhoci5vcGVuKHJlcXVl
c3QubWV0aG9kLCByZXF1ZXN0LnVybCwgdHJ1ZSlcblx0XG5cdCAgICAgIGlmIChyZXF1ZXN0LmNy
ZWRlbnRpYWxzID09PSAnaW5jbHVkZScpIHtcblx0ICAgICAgICB4aHIud2l0aENyZWRlbnRpYWxz
ID0gdHJ1ZVxuXHQgICAgICB9XG5cdFxuXHQgICAgICBpZiAoJ3Jlc3BvbnNlVHlwZScgaW4geGhy
ICYmIHN1cHBvcnQuYmxvYikge1xuXHQgICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAnYmxvYidc
blx0ICAgICAgfVxuXHRcblx0ICAgICAgcmVxdWVzdC5oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24o
dmFsdWUsIG5hbWUpIHtcblx0ICAgICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihuYW1lLCB2YWx1
ZSlcblx0ICAgICAgfSlcblx0XG5cdCAgICAgIHhoci5zZW5kKHR5cGVvZiByZXF1ZXN0Ll9ib2R5
SW5pdCA9PT0gJ3VuZGVmaW5lZCcgPyBudWxsIDogcmVxdWVzdC5fYm9keUluaXQpXG5cdCAgICB9
KVxuXHQgIH1cblx0ICBzZWxmLmZldGNoLnBvbHlmaWxsID0gdHJ1ZVxuXHR9KSh0eXBlb2Ygc2Vs
ZiAhPT0gJ3VuZGVmaW5lZCcgPyBzZWxmIDogdGhpcyk7XG5cblxuLyoqKi8gfSxcbi8qIDIxMyAq
L1xuMzgsXG4vKiAyMTQgKi9cblsyMzEsIDIzXSxcbi8qIDIxNSAqL1xuLyoqKi8gZnVuY3Rpb24o
bW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0LyoqXG5cdCAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
blx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3VzZSBzdHJpY3QnO1xu
XHRcblx0dmFyIFBvb2xlZENsYXNzID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMTQpO1xuXHR2YXIg
UmVhY3RFbGVtZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOCk7XG5cdFxuXHR2YXIgZW1wdHlG
dW5jdGlvbiA9IF9fd2VicGFja19yZXF1aXJlX18oNyk7XG5cdHZhciB0cmF2ZXJzZUFsbENoaWxk
cmVuID0gX193ZWJwYWNrX3JlcXVpcmVfXygyMjQpO1xuXHRcblx0dmFyIHR3b0FyZ3VtZW50UG9v
bGVyID0gUG9vbGVkQ2xhc3MudHdvQXJndW1lbnRQb29sZXI7XG5cdHZhciBmb3VyQXJndW1lbnRQ
b29sZXIgPSBQb29sZWRDbGFzcy5mb3VyQXJndW1lbnRQb29sZXI7XG5cdFxuXHR2YXIgdXNlclBy
b3ZpZGVkS2V5RXNjYXBlUmVnZXggPSAvXFwvKy9nO1xuXHRmdW5jdGlvbiBlc2NhcGVVc2VyUHJv
dmlkZWRLZXkodGV4dCkge1xuXHQgIHJldHVybiAoJycgKyB0ZXh0KS5yZXBsYWNlKHVzZXJQcm92
aWRlZEtleUVzY2FwZVJlZ2V4LCAnJCYvJyk7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBQb29sZWRD
bGFzcyByZXByZXNlbnRpbmcgdGhlIGJvb2trZWVwaW5nIGFzc29jaWF0ZWQgd2l0aCBwZXJmb3Jt
aW5nIGEgY2hpbGRcblx0ICogdHJhdmVyc2FsLiBBbGxvd3MgYXZvaWRpbmcgYmluZGluZyBjYWxs
YmFja3MuXG5cdCAqXG5cdCAqIEBjb25zdHJ1Y3RvciBGb3JFYWNoQm9va0tlZXBpbmdcblx0ICog
QHBhcmFtIHshZnVuY3Rpb259IGZvckVhY2hGdW5jdGlvbiBGdW5jdGlvbiB0byBwZXJmb3JtIHRy
YXZlcnNhbCB3aXRoLlxuXHQgKiBAcGFyYW0gez8qfSBmb3JFYWNoQ29udGV4dCBDb250ZXh0IHRv
IHBlcmZvcm0gY29udGV4dCB3aXRoLlxuXHQgKi9cblx0ZnVuY3Rpb24gRm9yRWFjaEJvb2tLZWVw
aW5nKGZvckVhY2hGdW5jdGlvbiwgZm9yRWFjaENvbnRleHQpIHtcblx0ICB0aGlzLmZ1bmMgPSBm
b3JFYWNoRnVuY3Rpb247XG5cdCAgdGhpcy5jb250ZXh0ID0gZm9yRWFjaENvbnRleHQ7XG5cdCAg
dGhpcy5jb3VudCA9IDA7XG5cdH1cblx0Rm9yRWFjaEJvb2tLZWVwaW5nLnByb3RvdHlwZS5kZXN0
cnVjdG9yID0gZnVuY3Rpb24gKCkge1xuXHQgIHRoaXMuZnVuYyA9IG51bGw7XG5cdCAgdGhpcy5j
b250ZXh0ID0gbnVsbDtcblx0ICB0aGlzLmNvdW50ID0gMDtcblx0fTtcblx0UG9vbGVkQ2xhc3Mu
YWRkUG9vbGluZ1RvKEZvckVhY2hCb29rS2VlcGluZywgdHdvQXJndW1lbnRQb29sZXIpO1xuXHRc
blx0ZnVuY3Rpb24gZm9yRWFjaFNpbmdsZUNoaWxkKGJvb2tLZWVwaW5nLCBjaGlsZCwgbmFtZSkg
e1xuXHQgIHZhciBmdW5jID0gYm9va0tlZXBpbmcuZnVuYyxcblx0ICAgICAgY29udGV4dCA9IGJv
b2tLZWVwaW5nLmNvbnRleHQ7XG5cdFxuXHQgIGZ1bmMuY2FsbChjb250ZXh0LCBjaGlsZCwgYm9v
a0tlZXBpbmcuY291bnQrKyk7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBJdGVyYXRlcyB0aHJvdWdo
IGNoaWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVu
YC5cblx0ICpcblx0ICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3Mv
dG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNoaWxkcmVuLmZvcmVhY2hcblx0ICpcblx0ICogVGhl
IHByb3ZpZGVkIGZvckVhY2hGdW5jKGNoaWxkLCBpbmRleCkgd2lsbCBiZSBjYWxsZWQgZm9yIGVh
Y2hcblx0ICogbGVhZiBjaGlsZC5cblx0ICpcblx0ICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hp
bGRyZW4gdHJlZSBjb250YWluZXIuXG5cdCAqIEBwYXJhbSB7ZnVuY3Rpb24oKiwgaW50KX0gZm9y
RWFjaEZ1bmNcblx0ICogQHBhcmFtIHsqfSBmb3JFYWNoQ29udGV4dCBDb250ZXh0IGZvciBmb3JF
YWNoQ29udGV4dC5cblx0ICovXG5cdGZ1bmN0aW9uIGZvckVhY2hDaGlsZHJlbihjaGlsZHJlbiwg
Zm9yRWFjaEZ1bmMsIGZvckVhY2hDb250ZXh0KSB7XG5cdCAgaWYgKGNoaWxkcmVuID09IG51bGwp
IHtcblx0ICAgIHJldHVybiBjaGlsZHJlbjtcblx0ICB9XG5cdCAgdmFyIHRyYXZlcnNlQ29udGV4
dCA9IEZvckVhY2hCb29rS2VlcGluZy5nZXRQb29sZWQoZm9yRWFjaEZ1bmMsIGZvckVhY2hDb250
ZXh0KTtcblx0ICB0cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBmb3JFYWNoU2luZ2xlQ2hp
bGQsIHRyYXZlcnNlQ29udGV4dCk7XG5cdCAgRm9yRWFjaEJvb2tLZWVwaW5nLnJlbGVhc2UodHJh
dmVyc2VDb250ZXh0KTtcblx0fVxuXHRcblx0LyoqXG5cdCAqIFBvb2xlZENsYXNzIHJlcHJlc2Vu
dGluZyB0aGUgYm9va2tlZXBpbmcgYXNzb2NpYXRlZCB3aXRoIHBlcmZvcm1pbmcgYSBjaGlsZFxu
XHQgKiBtYXBwaW5nLiBBbGxvd3MgYXZvaWRpbmcgYmluZGluZyBjYWxsYmFja3MuXG5cdCAqXG5c
dCAqIEBjb25zdHJ1Y3RvciBNYXBCb29rS2VlcGluZ1xuXHQgKiBAcGFyYW0geyEqfSBtYXBSZXN1
bHQgT2JqZWN0IGNvbnRhaW5pbmcgdGhlIG9yZGVyZWQgbWFwIG9mIHJlc3VsdHMuXG5cdCAqIEBw
YXJhbSB7IWZ1bmN0aW9ufSBtYXBGdW5jdGlvbiBGdW5jdGlvbiB0byBwZXJmb3JtIG1hcHBpbmcg
d2l0aC5cblx0ICogQHBhcmFtIHs/Kn0gbWFwQ29udGV4dCBDb250ZXh0IHRvIHBlcmZvcm0gbWFw
cGluZyB3aXRoLlxuXHQgKi9cblx0ZnVuY3Rpb24gTWFwQm9va0tlZXBpbmcobWFwUmVzdWx0LCBr
ZXlQcmVmaXgsIG1hcEZ1bmN0aW9uLCBtYXBDb250ZXh0KSB7XG5cdCAgdGhpcy5yZXN1bHQgPSBt
YXBSZXN1bHQ7XG5cdCAgdGhpcy5rZXlQcmVmaXggPSBrZXlQcmVmaXg7XG5cdCAgdGhpcy5mdW5j
ID0gbWFwRnVuY3Rpb247XG5cdCAgdGhpcy5jb250ZXh0ID0gbWFwQ29udGV4dDtcblx0ICB0aGlz
LmNvdW50ID0gMDtcblx0fVxuXHRNYXBCb29rS2VlcGluZy5wcm90b3R5cGUuZGVzdHJ1Y3RvciA9
IGZ1bmN0aW9uICgpIHtcblx0ICB0aGlzLnJlc3VsdCA9IG51bGw7XG5cdCAgdGhpcy5rZXlQcmVm
aXggPSBudWxsO1xuXHQgIHRoaXMuZnVuYyA9IG51bGw7XG5cdCAgdGhpcy5jb250ZXh0ID0gbnVs
bDtcblx0ICB0aGlzLmNvdW50ID0gMDtcblx0fTtcblx0UG9vbGVkQ2xhc3MuYWRkUG9vbGluZ1Rv
KE1hcEJvb2tLZWVwaW5nLCBmb3VyQXJndW1lbnRQb29sZXIpO1xuXHRcblx0ZnVuY3Rpb24gbWFw
U2luZ2xlQ2hpbGRJbnRvQ29udGV4dChib29rS2VlcGluZywgY2hpbGQsIGNoaWxkS2V5KSB7XG5c
dCAgdmFyIHJlc3VsdCA9IGJvb2tLZWVwaW5nLnJlc3VsdCxcblx0ICAgICAga2V5UHJlZml4ID0g
Ym9va0tlZXBpbmcua2V5UHJlZml4LFxuXHQgICAgICBmdW5jID0gYm9va0tlZXBpbmcuZnVuYyxc
blx0ICAgICAgY29udGV4dCA9IGJvb2tLZWVwaW5nLmNvbnRleHQ7XG5cdFxuXHRcblx0ICB2YXIg
bWFwcGVkQ2hpbGQgPSBmdW5jLmNhbGwoY29udGV4dCwgY2hpbGQsIGJvb2tLZWVwaW5nLmNvdW50
KyspO1xuXHQgIGlmIChBcnJheS5pc0FycmF5KG1hcHBlZENoaWxkKSkge1xuXHQgICAgbWFwSW50
b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChtYXBwZWRDaGlsZCwgcmVzdWx0LCBjaGlsZEtleSwgZW1w
dHlGdW5jdGlvbi50aGF0UmV0dXJuc0FyZ3VtZW50KTtcblx0ICB9IGVsc2UgaWYgKG1hcHBlZENo
aWxkICE9IG51bGwpIHtcblx0ICAgIGlmIChSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQobWFw
cGVkQ2hpbGQpKSB7XG5cdCAgICAgIG1hcHBlZENoaWxkID0gUmVhY3RFbGVtZW50LmNsb25lQW5k
UmVwbGFjZUtleShtYXBwZWRDaGlsZCxcblx0ICAgICAgLy8gS2VlcCBib3RoIHRoZSAobWFwcGVk
KSBhbmQgb2xkIGtleXMgaWYgdGhleSBkaWZmZXIsIGp1c3QgYXNcblx0ICAgICAgLy8gdHJhdmVy
c2VBbGxDaGlsZHJlbiB1c2VkIHRvIGRvIGZvciBvYmplY3RzIGFzIGNoaWxkcmVuXG5cdCAgICAg
IGtleVByZWZpeCArIChtYXBwZWRDaGlsZC5rZXkgJiYgKCFjaGlsZCB8fCBjaGlsZC5rZXkgIT09
IG1hcHBlZENoaWxkLmtleSkgPyBlc2NhcGVVc2VyUHJvdmlkZWRLZXkobWFwcGVkQ2hpbGQua2V5
KSArICcvJyA6ICcnKSArIGNoaWxkS2V5KTtcblx0ICAgIH1cblx0ICAgIHJlc3VsdC5wdXNoKG1h
cHBlZENoaWxkKTtcblx0ICB9XG5cdH1cblx0XG5cdGZ1bmN0aW9uIG1hcEludG9XaXRoS2V5UHJl
Zml4SW50ZXJuYWwoY2hpbGRyZW4sIGFycmF5LCBwcmVmaXgsIGZ1bmMsIGNvbnRleHQpIHtcblx0
ICB2YXIgZXNjYXBlZFByZWZpeCA9ICcnO1xuXHQgIGlmIChwcmVmaXggIT0gbnVsbCkge1xuXHQg
ICAgZXNjYXBlZFByZWZpeCA9IGVzY2FwZVVzZXJQcm92aWRlZEtleShwcmVmaXgpICsgJy8nO1xu
XHQgIH1cblx0ICB2YXIgdHJhdmVyc2VDb250ZXh0ID0gTWFwQm9va0tlZXBpbmcuZ2V0UG9vbGVk
KGFycmF5LCBlc2NhcGVkUHJlZml4LCBmdW5jLCBjb250ZXh0KTtcblx0ICB0cmF2ZXJzZUFsbENo
aWxkcmVuKGNoaWxkcmVuLCBtYXBTaW5nbGVDaGlsZEludG9Db250ZXh0LCB0cmF2ZXJzZUNvbnRl
eHQpO1xuXHQgIE1hcEJvb2tLZWVwaW5nLnJlbGVhc2UodHJhdmVyc2VDb250ZXh0KTtcblx0fVxu
XHRcblx0LyoqXG5cdCAqIE1hcHMgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmll
ZCBhcyBgcHJvcHMuY2hpbGRyZW5gLlxuXHQgKlxuXHQgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5n
aXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY2hpbGRyZW4ubWFw
XG5cdCAqXG5cdCAqIFRoZSBwcm92aWRlZCBtYXBGdW5jdGlvbihjaGlsZCwga2V5LCBpbmRleCkg
d2lsbCBiZSBjYWxsZWQgZm9yIGVhY2hcblx0ICogbGVhZiBjaGlsZC5cblx0ICpcblx0ICogQHBh
cmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIuXG5cdCAqIEBwYXJhbSB7
ZnVuY3Rpb24oKiwgaW50KX0gZnVuYyBUaGUgbWFwIGZ1bmN0aW9uLlxuXHQgKiBAcGFyYW0geyp9
IGNvbnRleHQgQ29udGV4dCBmb3IgbWFwRnVuY3Rpb24uXG5cdCAqIEByZXR1cm4ge29iamVjdH0g
T2JqZWN0IGNvbnRhaW5pbmcgdGhlIG9yZGVyZWQgbWFwIG9mIHJlc3VsdHMuXG5cdCAqL1xuXHRm
dW5jdGlvbiBtYXBDaGlsZHJlbihjaGlsZHJlbiwgZnVuYywgY29udGV4dCkge1xuXHQgIGlmIChj
aGlsZHJlbiA9PSBudWxsKSB7XG5cdCAgICByZXR1cm4gY2hpbGRyZW47XG5cdCAgfVxuXHQgIHZh
ciByZXN1bHQgPSBbXTtcblx0ICBtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsKGNoaWxkcmVu
LCByZXN1bHQsIG51bGwsIGZ1bmMsIGNvbnRleHQpO1xuXHQgIHJldHVybiByZXN1bHQ7XG5cdH1c
blx0XG5cdGZ1bmN0aW9uIGZvckVhY2hTaW5nbGVDaGlsZER1bW15KHRyYXZlcnNlQ29udGV4dCwg
Y2hpbGQsIG5hbWUpIHtcblx0ICByZXR1cm4gbnVsbDtcblx0fVxuXHRcblx0LyoqXG5cdCAqIENv
dW50IHRoZSBudW1iZXIgb2YgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBh
c1xuXHQgKiBgcHJvcHMuY2hpbGRyZW5gLlxuXHQgKlxuXHQgKiBTZWUgaHR0cHM6Ly9mYWNlYm9v
ay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY2hpbGRyZW4u
Y291bnRcblx0ICpcblx0ICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250
YWluZXIuXG5cdCAqIEByZXR1cm4ge251bWJlcn0gVGhlIG51bWJlciBvZiBjaGlsZHJlbi5cblx0
ICovXG5cdGZ1bmN0aW9uIGNvdW50Q2hpbGRyZW4oY2hpbGRyZW4sIGNvbnRleHQpIHtcblx0ICBy
ZXR1cm4gdHJhdmVyc2VBbGxDaGlsZHJlbihjaGlsZHJlbiwgZm9yRWFjaFNpbmdsZUNoaWxkRHVt
bXksIG51bGwpO1xuXHR9XG5cdFxuXHQvKipcblx0ICogRmxhdHRlbiBhIGNoaWxkcmVuIG9iamVj
dCAodHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gKSBhbmRcblx0ICogcmV0
dXJuIGFuIGFycmF5IHdpdGggYXBwcm9wcmlhdGVseSByZS1rZXllZCBjaGlsZHJlbi5cblx0ICpc
blx0ICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVs
LWFwaS5odG1sI3JlYWN0LmNoaWxkcmVuLnRvYXJyYXlcblx0ICovXG5cdGZ1bmN0aW9uIHRvQXJy
YXkoY2hpbGRyZW4pIHtcblx0ICB2YXIgcmVzdWx0ID0gW107XG5cdCAgbWFwSW50b1dpdGhLZXlQ
cmVmaXhJbnRlcm5hbChjaGlsZHJlbiwgcmVzdWx0LCBudWxsLCBlbXB0eUZ1bmN0aW9uLnRoYXRS
ZXR1cm5zQXJndW1lbnQpO1xuXHQgIHJldHVybiByZXN1bHQ7XG5cdH1cblx0XG5cdHZhciBSZWFj
dENoaWxkcmVuID0ge1xuXHQgIGZvckVhY2g6IGZvckVhY2hDaGlsZHJlbixcblx0ICBtYXA6IG1h
cENoaWxkcmVuLFxuXHQgIG1hcEludG9XaXRoS2V5UHJlZml4SW50ZXJuYWw6IG1hcEludG9XaXRo
S2V5UHJlZml4SW50ZXJuYWwsXG5cdCAgY291bnQ6IGNvdW50Q2hpbGRyZW4sXG5cdCAgdG9BcnJh
eTogdG9BcnJheVxuXHR9O1xuXHRcblx0bW9kdWxlLmV4cG9ydHMgPSBSZWFjdENoaWxkcmVuO1xu
XG4vKioqLyB9LFxuLyogMjE2ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9f
d2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2Yg
dGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgUmVhY3RFbGVt
ZW50ID0gX193ZWJwYWNrX3JlcXVpcmVfXygxOCk7XG5cdFxuXHQvKipcblx0ICogQ3JlYXRlIGEg
ZmFjdG9yeSB0aGF0IGNyZWF0ZXMgSFRNTCB0YWcgZWxlbWVudHMuXG5cdCAqXG5cdCAqIEBwcml2
YXRlXG5cdCAqL1xuXHR2YXIgY3JlYXRlRE9NRmFjdG9yeSA9IFJlYWN0RWxlbWVudC5jcmVhdGVG
YWN0b3J5O1xuXHRpZiAoZmFsc2UpIHtcblx0ICB2YXIgUmVhY3RFbGVtZW50VmFsaWRhdG9yID0g
cmVxdWlyZSgnLi9SZWFjdEVsZW1lbnRWYWxpZGF0b3InKTtcblx0ICBjcmVhdGVET01GYWN0b3J5
ID0gUmVhY3RFbGVtZW50VmFsaWRhdG9yLmNyZWF0ZUZhY3Rvcnk7XG5cdH1cblx0XG5cdC8qKlxu
XHQgKiBDcmVhdGVzIGEgbWFwcGluZyBmcm9tIHN1cHBvcnRlZCBIVE1MIHRhZ3MgdG8gYFJlYWN0
RE9NQ29tcG9uZW50YCBjbGFzc2VzLlxuXHQgKlxuXHQgKiBAcHVibGljXG5cdCAqL1xuXHR2YXIg
UmVhY3RET01GYWN0b3JpZXMgPSB7XG5cdCAgYTogY3JlYXRlRE9NRmFjdG9yeSgnYScpLFxuXHQg
IGFiYnI6IGNyZWF0ZURPTUZhY3RvcnkoJ2FiYnInKSxcblx0ICBhZGRyZXNzOiBjcmVhdGVET01G
YWN0b3J5KCdhZGRyZXNzJyksXG5cdCAgYXJlYTogY3JlYXRlRE9NRmFjdG9yeSgnYXJlYScpLFxu
XHQgIGFydGljbGU6IGNyZWF0ZURPTUZhY3RvcnkoJ2FydGljbGUnKSxcblx0ICBhc2lkZTogY3Jl
YXRlRE9NRmFjdG9yeSgnYXNpZGUnKSxcblx0ICBhdWRpbzogY3JlYXRlRE9NRmFjdG9yeSgnYXVk
aW8nKSxcblx0ICBiOiBjcmVhdGVET01GYWN0b3J5KCdiJyksXG5cdCAgYmFzZTogY3JlYXRlRE9N
RmFjdG9yeSgnYmFzZScpLFxuXHQgIGJkaTogY3JlYXRlRE9NRmFjdG9yeSgnYmRpJyksXG5cdCAg
YmRvOiBjcmVhdGVET01GYWN0b3J5KCdiZG8nKSxcblx0ICBiaWc6IGNyZWF0ZURPTUZhY3Rvcnko
J2JpZycpLFxuXHQgIGJsb2NrcXVvdGU6IGNyZWF0ZURPTUZhY3RvcnkoJ2Jsb2NrcXVvdGUnKSxc
blx0ICBib2R5OiBjcmVhdGVET01GYWN0b3J5KCdib2R5JyksXG5cdCAgYnI6IGNyZWF0ZURPTUZh
Y3RvcnkoJ2JyJyksXG5cdCAgYnV0dG9uOiBjcmVhdGVET01GYWN0b3J5KCdidXR0b24nKSxcblx0
ICBjYW52YXM6IGNyZWF0ZURPTUZhY3RvcnkoJ2NhbnZhcycpLFxuXHQgIGNhcHRpb246IGNyZWF0
ZURPTUZhY3RvcnkoJ2NhcHRpb24nKSxcblx0ICBjaXRlOiBjcmVhdGVET01GYWN0b3J5KCdjaXRl
JyksXG5cdCAgY29kZTogY3JlYXRlRE9NRmFjdG9yeSgnY29kZScpLFxuXHQgIGNvbDogY3JlYXRl
RE9NRmFjdG9yeSgnY29sJyksXG5cdCAgY29sZ3JvdXA6IGNyZWF0ZURPTUZhY3RvcnkoJ2NvbGdy
b3VwJyksXG5cdCAgZGF0YTogY3JlYXRlRE9NRmFjdG9yeSgnZGF0YScpLFxuXHQgIGRhdGFsaXN0
OiBjcmVhdGVET01GYWN0b3J5KCdkYXRhbGlzdCcpLFxuXHQgIGRkOiBjcmVhdGVET01GYWN0b3J5
KCdkZCcpLFxuXHQgIGRlbDogY3JlYXRlRE9NRmFjdG9yeSgnZGVsJyksXG5cdCAgZGV0YWlsczog
Y3JlYXRlRE9NRmFjdG9yeSgnZGV0YWlscycpLFxuXHQgIGRmbjogY3JlYXRlRE9NRmFjdG9yeSgn
ZGZuJyksXG5cdCAgZGlhbG9nOiBjcmVhdGVET01GYWN0b3J5KCdkaWFsb2cnKSxcblx0ICBkaXY6
IGNyZWF0ZURPTUZhY3RvcnkoJ2RpdicpLFxuXHQgIGRsOiBjcmVhdGVET01GYWN0b3J5KCdkbCcp
LFxuXHQgIGR0OiBjcmVhdGVET01GYWN0b3J5KCdkdCcpLFxuXHQgIGVtOiBjcmVhdGVET01GYWN0
b3J5KCdlbScpLFxuXHQgIGVtYmVkOiBjcmVhdGVET01GYWN0b3J5KCdlbWJlZCcpLFxuXHQgIGZp
ZWxkc2V0OiBjcmVhdGVET01GYWN0b3J5KCdmaWVsZHNldCcpLFxuXHQgIGZpZ2NhcHRpb246IGNy
ZWF0ZURPTUZhY3RvcnkoJ2ZpZ2NhcHRpb24nKSxcblx0ICBmaWd1cmU6IGNyZWF0ZURPTUZhY3Rv
cnkoJ2ZpZ3VyZScpLFxuXHQgIGZvb3RlcjogY3JlYXRlRE9NRmFjdG9yeSgnZm9vdGVyJyksXG5c
dCAgZm9ybTogY3JlYXRlRE9NRmFjdG9yeSgnZm9ybScpLFxuXHQgIGgxOiBjcmVhdGVET01GYWN0
b3J5KCdoMScpLFxuXHQgIGgyOiBjcmVhdGVET01GYWN0b3J5KCdoMicpLFxuXHQgIGgzOiBjcmVh
dGVET01GYWN0b3J5KCdoMycpLFxuXHQgIGg0OiBjcmVhdGVET01GYWN0b3J5KCdoNCcpLFxuXHQg
IGg1OiBjcmVhdGVET01GYWN0b3J5KCdoNScpLFxuXHQgIGg2OiBjcmVhdGVET01GYWN0b3J5KCdo
NicpLFxuXHQgIGhlYWQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2hlYWQnKSxcblx0ICBoZWFkZXI6IGNy
ZWF0ZURPTUZhY3RvcnkoJ2hlYWRlcicpLFxuXHQgIGhncm91cDogY3JlYXRlRE9NRmFjdG9yeSgn
aGdyb3VwJyksXG5cdCAgaHI6IGNyZWF0ZURPTUZhY3RvcnkoJ2hyJyksXG5cdCAgaHRtbDogY3Jl
YXRlRE9NRmFjdG9yeSgnaHRtbCcpLFxuXHQgIGk6IGNyZWF0ZURPTUZhY3RvcnkoJ2knKSxcblx0
ICBpZnJhbWU6IGNyZWF0ZURPTUZhY3RvcnkoJ2lmcmFtZScpLFxuXHQgIGltZzogY3JlYXRlRE9N
RmFjdG9yeSgnaW1nJyksXG5cdCAgaW5wdXQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2lucHV0JyksXG5c
dCAgaW5zOiBjcmVhdGVET01GYWN0b3J5KCdpbnMnKSxcblx0ICBrYmQ6IGNyZWF0ZURPTUZhY3Rv
cnkoJ2tiZCcpLFxuXHQgIGtleWdlbjogY3JlYXRlRE9NRmFjdG9yeSgna2V5Z2VuJyksXG5cdCAg
bGFiZWw6IGNyZWF0ZURPTUZhY3RvcnkoJ2xhYmVsJyksXG5cdCAgbGVnZW5kOiBjcmVhdGVET01G
YWN0b3J5KCdsZWdlbmQnKSxcblx0ICBsaTogY3JlYXRlRE9NRmFjdG9yeSgnbGknKSxcblx0ICBs
aW5rOiBjcmVhdGVET01GYWN0b3J5KCdsaW5rJyksXG5cdCAgbWFpbjogY3JlYXRlRE9NRmFjdG9y
eSgnbWFpbicpLFxuXHQgIG1hcDogY3JlYXRlRE9NRmFjdG9yeSgnbWFwJyksXG5cdCAgbWFyazog
Y3JlYXRlRE9NRmFjdG9yeSgnbWFyaycpLFxuXHQgIG1lbnU6IGNyZWF0ZURPTUZhY3RvcnkoJ21l
bnUnKSxcblx0ICBtZW51aXRlbTogY3JlYXRlRE9NRmFjdG9yeSgnbWVudWl0ZW0nKSxcblx0ICBt
ZXRhOiBjcmVhdGVET01GYWN0b3J5KCdtZXRhJyksXG5cdCAgbWV0ZXI6IGNyZWF0ZURPTUZhY3Rv
cnkoJ21ldGVyJyksXG5cdCAgbmF2OiBjcmVhdGVET01GYWN0b3J5KCduYXYnKSxcblx0ICBub3Nj
cmlwdDogY3JlYXRlRE9NRmFjdG9yeSgnbm9zY3JpcHQnKSxcblx0ICBvYmplY3Q6IGNyZWF0ZURP
TUZhY3RvcnkoJ29iamVjdCcpLFxuXHQgIG9sOiBjcmVhdGVET01GYWN0b3J5KCdvbCcpLFxuXHQg
IG9wdGdyb3VwOiBjcmVhdGVET01GYWN0b3J5KCdvcHRncm91cCcpLFxuXHQgIG9wdGlvbjogY3Jl
YXRlRE9NRmFjdG9yeSgnb3B0aW9uJyksXG5cdCAgb3V0cHV0OiBjcmVhdGVET01GYWN0b3J5KCdv
dXRwdXQnKSxcblx0ICBwOiBjcmVhdGVET01GYWN0b3J5KCdwJyksXG5cdCAgcGFyYW06IGNyZWF0
ZURPTUZhY3RvcnkoJ3BhcmFtJyksXG5cdCAgcGljdHVyZTogY3JlYXRlRE9NRmFjdG9yeSgncGlj
dHVyZScpLFxuXHQgIHByZTogY3JlYXRlRE9NRmFjdG9yeSgncHJlJyksXG5cdCAgcHJvZ3Jlc3M6
IGNyZWF0ZURPTUZhY3RvcnkoJ3Byb2dyZXNzJyksXG5cdCAgcTogY3JlYXRlRE9NRmFjdG9yeSgn
cScpLFxuXHQgIHJwOiBjcmVhdGVET01GYWN0b3J5KCdycCcpLFxuXHQgIHJ0OiBjcmVhdGVET01G
YWN0b3J5KCdydCcpLFxuXHQgIHJ1Ynk6IGNyZWF0ZURPTUZhY3RvcnkoJ3J1YnknKSxcblx0ICBz
OiBjcmVhdGVET01GYWN0b3J5KCdzJyksXG5cdCAgc2FtcDogY3JlYXRlRE9NRmFjdG9yeSgnc2Ft
cCcpLFxuXHQgIHNjcmlwdDogY3JlYXRlRE9NRmFjdG9yeSgnc2NyaXB0JyksXG5cdCAgc2VjdGlv
bjogY3JlYXRlRE9NRmFjdG9yeSgnc2VjdGlvbicpLFxuXHQgIHNlbGVjdDogY3JlYXRlRE9NRmFj
dG9yeSgnc2VsZWN0JyksXG5cdCAgc21hbGw6IGNyZWF0ZURPTUZhY3RvcnkoJ3NtYWxsJyksXG5c
dCAgc291cmNlOiBjcmVhdGVET01GYWN0b3J5KCdzb3VyY2UnKSxcblx0ICBzcGFuOiBjcmVhdGVE
T01GYWN0b3J5KCdzcGFuJyksXG5cdCAgc3Ryb25nOiBjcmVhdGVET01GYWN0b3J5KCdzdHJvbmcn
KSxcblx0ICBzdHlsZTogY3JlYXRlRE9NRmFjdG9yeSgnc3R5bGUnKSxcblx0ICBzdWI6IGNyZWF0
ZURPTUZhY3RvcnkoJ3N1YicpLFxuXHQgIHN1bW1hcnk6IGNyZWF0ZURPTUZhY3RvcnkoJ3N1bW1h
cnknKSxcblx0ICBzdXA6IGNyZWF0ZURPTUZhY3RvcnkoJ3N1cCcpLFxuXHQgIHRhYmxlOiBjcmVh
dGVET01GYWN0b3J5KCd0YWJsZScpLFxuXHQgIHRib2R5OiBjcmVhdGVET01GYWN0b3J5KCd0Ym9k
eScpLFxuXHQgIHRkOiBjcmVhdGVET01GYWN0b3J5KCd0ZCcpLFxuXHQgIHRleHRhcmVhOiBjcmVh
dGVET01GYWN0b3J5KCd0ZXh0YXJlYScpLFxuXHQgIHRmb290OiBjcmVhdGVET01GYWN0b3J5KCd0
Zm9vdCcpLFxuXHQgIHRoOiBjcmVhdGVET01GYWN0b3J5KCd0aCcpLFxuXHQgIHRoZWFkOiBjcmVh
dGVET01GYWN0b3J5KCd0aGVhZCcpLFxuXHQgIHRpbWU6IGNyZWF0ZURPTUZhY3RvcnkoJ3RpbWUn
KSxcblx0ICB0aXRsZTogY3JlYXRlRE9NRmFjdG9yeSgndGl0bGUnKSxcblx0ICB0cjogY3JlYXRl
RE9NRmFjdG9yeSgndHInKSxcblx0ICB0cmFjazogY3JlYXRlRE9NRmFjdG9yeSgndHJhY2snKSxc
blx0ICB1OiBjcmVhdGVET01GYWN0b3J5KCd1JyksXG5cdCAgdWw6IGNyZWF0ZURPTUZhY3Rvcnko
J3VsJyksXG5cdCAgJ3Zhcic6IGNyZWF0ZURPTUZhY3RvcnkoJ3ZhcicpLFxuXHQgIHZpZGVvOiBj
cmVhdGVET01GYWN0b3J5KCd2aWRlbycpLFxuXHQgIHdicjogY3JlYXRlRE9NRmFjdG9yeSgnd2Jy
JyksXG5cdFxuXHQgIC8vIFNWR1xuXHQgIGNpcmNsZTogY3JlYXRlRE9NRmFjdG9yeSgnY2lyY2xl
JyksXG5cdCAgY2xpcFBhdGg6IGNyZWF0ZURPTUZhY3RvcnkoJ2NsaXBQYXRoJyksXG5cdCAgZGVm
czogY3JlYXRlRE9NRmFjdG9yeSgnZGVmcycpLFxuXHQgIGVsbGlwc2U6IGNyZWF0ZURPTUZhY3Rv
cnkoJ2VsbGlwc2UnKSxcblx0ICBnOiBjcmVhdGVET01GYWN0b3J5KCdnJyksXG5cdCAgaW1hZ2U6
IGNyZWF0ZURPTUZhY3RvcnkoJ2ltYWdlJyksXG5cdCAgbGluZTogY3JlYXRlRE9NRmFjdG9yeSgn
bGluZScpLFxuXHQgIGxpbmVhckdyYWRpZW50OiBjcmVhdGVET01GYWN0b3J5KCdsaW5lYXJHcmFk
aWVudCcpLFxuXHQgIG1hc2s6IGNyZWF0ZURPTUZhY3RvcnkoJ21hc2snKSxcblx0ICBwYXRoOiBj
cmVhdGVET01GYWN0b3J5KCdwYXRoJyksXG5cdCAgcGF0dGVybjogY3JlYXRlRE9NRmFjdG9yeSgn
cGF0dGVybicpLFxuXHQgIHBvbHlnb246IGNyZWF0ZURPTUZhY3RvcnkoJ3BvbHlnb24nKSxcblx0
ICBwb2x5bGluZTogY3JlYXRlRE9NRmFjdG9yeSgncG9seWxpbmUnKSxcblx0ICByYWRpYWxHcmFk
aWVudDogY3JlYXRlRE9NRmFjdG9yeSgncmFkaWFsR3JhZGllbnQnKSxcblx0ICByZWN0OiBjcmVh
dGVET01GYWN0b3J5KCdyZWN0JyksXG5cdCAgc3RvcDogY3JlYXRlRE9NRmFjdG9yeSgnc3RvcCcp
LFxuXHQgIHN2ZzogY3JlYXRlRE9NRmFjdG9yeSgnc3ZnJyksXG5cdCAgdGV4dDogY3JlYXRlRE9N
RmFjdG9yeSgndGV4dCcpLFxuXHQgIHRzcGFuOiBjcmVhdGVET01GYWN0b3J5KCd0c3BhbicpXG5c
dH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NRmFjdG9yaWVzO1xuXG4vKioqLyB9
LFxuLyogMjE3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19y
ZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpc
blx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIgX3JlcXVpcmUgPSBfX3dlYnBh
Y2tfcmVxdWlyZV9fKDE4KSxcblx0ICAgIGlzVmFsaWRFbGVtZW50ID0gX3JlcXVpcmUuaXNWYWxp
ZEVsZW1lbnQ7XG5cdFxuXHR2YXIgZmFjdG9yeSA9IF9fd2VicGFja19yZXF1aXJlX18oNTUpO1xu
XHRcblx0bW9kdWxlLmV4cG9ydHMgPSBmYWN0b3J5KGlzVmFsaWRFbGVtZW50KTtcblxuLyoqKi8g
fSxcbi8qIDIxOCAqL1xuMTYzLFxuLyogMjE5ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4
cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQvKipcblx0ICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cblx0
ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJl
Y3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuXHQgKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHR2YXIg
X3JlcXVpcmUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDg5KSxcblx0ICAgIENvbXBvbmVudCA9IF9y
ZXF1aXJlLkNvbXBvbmVudDtcblx0XG5cdHZhciBfcmVxdWlyZTIgPSBfX3dlYnBhY2tfcmVxdWly
ZV9fKDE4KSxcblx0ICAgIGlzVmFsaWRFbGVtZW50ID0gX3JlcXVpcmUyLmlzVmFsaWRFbGVtZW50
O1xuXHRcblx0dmFyIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5
Mik7XG5cdHZhciBmYWN0b3J5ID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5Nyk7XG5cdFxuXHRtb2R1
bGUuZXhwb3J0cyA9IGZhY3RvcnkoQ29tcG9uZW50LCBpc1ZhbGlkRWxlbWVudCwgUmVhY3ROb29w
VXBkYXRlUXVldWUpO1xuXG4vKioqLyB9LFxuLyogMjIwICovXG4xODIsXG4vKiAyMjEgKi9cbi8q
KiovIGZ1bmN0aW9uKG1vZHVsZSwgZXhwb3J0cykge1xuXG5cdC8qKlxuXHQgKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxu
XHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5
bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5cdCAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKiBcblx0ICovXG5cdFxuXHQndXNlIHN0cmljdCc7XG5c
dFxuXHR2YXIgbmV4dERlYnVnSUQgPSAxO1xuXHRcblx0ZnVuY3Rpb24gZ2V0TmV4dERlYnVnSUQo
KSB7XG5cdCAgcmV0dXJuIG5leHREZWJ1Z0lEKys7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRz
ID0gZ2V0TmV4dERlYnVnSUQ7XG5cbi8qKiovIH0sXG4vKiAyMjIgKi9cbi8qKiovIGZ1bmN0aW9u
KG1vZHVsZSwgZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXykge1xuXG5cdC8qKlxuXHQgKiBD
b3B5cmlnaHQgMjAxNC0yMDE1LCBGYWNlYm9vaywgSW5jLlxuXHQgKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLlxuXHQgKlxuXHQgKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcblx0ICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG5c
dCAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuXHQgKlxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0
XG5cdC8qKlxuXHQgKiBGb3JrZWQgZnJvbSBmYmpzL3dhcm5pbmc6XG5cdCAqIGh0dHBzOi8vZ2l0
aHViLmNvbS9mYWNlYm9vay9mYmpzL2Jsb2IvZTY2YmEyMGFkNWJlNDMzZWI1NDQyM2YyYjA5N2Q4
MjkzMjRkOWRlNi9wYWNrYWdlcy9mYmpzL3NyYy9fX2ZvcmtzX18vd2FybmluZy5qc1xuXHQgKlxu
XHQgKiBPbmx5IGNoYW5nZSBpcyB3ZSB1c2UgY29uc29sZS53YXJuIGluc3RlYWQgb2YgY29uc29s
ZS5lcnJvcixcblx0ICogYW5kIGRvIG5vdGhpbmcgd2hlbiAnY29uc29sZScgaXMgbm90IHN1cHBv
cnRlZC5cblx0ICogVGhpcyByZWFsbHkgc2ltcGxpZmllcyB0aGUgY29kZS5cblx0ICogLS0tXG5c
dCAqIFNpbWlsYXIgdG8gaW52YXJpYW50IGJ1dCBvbmx5IGxvZ3MgYSB3YXJuaW5nIGlmIHRoZSBj
b25kaXRpb24gaXMgbm90IG1ldC5cblx0ICogVGhpcyBjYW4gYmUgdXNlZCB0byBsb2cgaXNzdWVz
IGluIGRldmVsb3BtZW50IGVudmlyb25tZW50cyBpbiBjcml0aWNhbFxuXHQgKiBwYXRocy4gUmVt
b3ZpbmcgdGhlIGxvZ2dpbmcgY29kZSBmb3IgcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMgd2lsbCBr
ZWVwIHRoZVxuXHQgKiBzYW1lIGxvZ2ljIGFuZCBmb2xsb3cgdGhlIHNhbWUgY29kZSBwYXRocy5c
blx0ICovXG5cdFxuXHR2YXIgbG93UHJpb3JpdHlXYXJuaW5nID0gZnVuY3Rpb24gKCkge307XG5c
dFxuXHRpZiAoZmFsc2UpIHtcblx0ICB2YXIgcHJpbnRXYXJuaW5nID0gZnVuY3Rpb24gKGZvcm1h
dCkge1xuXHQgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJh
eShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwgX2xlbjsgX2tleSsr
KSB7XG5cdCAgICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuXHQgICAgfVxu
XHRcblx0ICAgIHZhciBhcmdJbmRleCA9IDA7XG5cdCAgICB2YXIgbWVzc2FnZSA9ICdXYXJuaW5n
OiAnICsgZm9ybWF0LnJlcGxhY2UoLyVzL2csIGZ1bmN0aW9uICgpIHtcblx0ICAgICAgcmV0dXJu
IGFyZ3NbYXJnSW5kZXgrK107XG5cdCAgICB9KTtcblx0ICAgIGlmICh0eXBlb2YgY29uc29sZSAh
PT0gJ3VuZGVmaW5lZCcpIHtcblx0ICAgICAgY29uc29sZS53YXJuKG1lc3NhZ2UpO1xuXHQgICAg
fVxuXHQgICAgdHJ5IHtcblx0ICAgICAgLy8gLS0tIFdlbGNvbWUgdG8gZGVidWdnaW5nIFJlYWN0
IC0tLVxuXHQgICAgICAvLyBUaGlzIGVycm9yIHdhcyB0aHJvd24gYXMgYSBjb252ZW5pZW5jZSBz
byB0aGF0IHlvdSBjYW4gdXNlIHRoaXMgc3RhY2tcblx0ICAgICAgLy8gdG8gZmluZCB0aGUgY2Fs
bHNpdGUgdGhhdCBjYXVzZWQgdGhpcyB3YXJuaW5nIHRvIGZpcmUuXG5cdCAgICAgIHRocm93IG5l
dyBFcnJvcihtZXNzYWdlKTtcblx0ICAgIH0gY2F0Y2ggKHgpIHt9XG5cdCAgfTtcblx0XG5cdCAg
bG93UHJpb3JpdHlXYXJuaW5nID0gZnVuY3Rpb24gKGNvbmRpdGlvbiwgZm9ybWF0KSB7XG5cdCAg
ICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcblx0ICAgICAgdGhyb3cgbmV3IEVycm9yKCdg
d2FybmluZyhjb25kaXRpb24sIGZvcm1hdCwgLi4uYXJncylgIHJlcXVpcmVzIGEgd2FybmluZyAn
ICsgJ21lc3NhZ2UgYXJndW1lbnQnKTtcblx0ICAgIH1cblx0ICAgIGlmICghY29uZGl0aW9uKSB7
XG5cdCAgICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IEFycmF5
KF9sZW4yID4gMiA/IF9sZW4yIC0gMiA6IDApLCBfa2V5MiA9IDI7IF9rZXkyIDwgX2xlbjI7IF9r
ZXkyKyspIHtcblx0ICAgICAgICBhcmdzW19rZXkyIC0gMl0gPSBhcmd1bWVudHNbX2tleTJdO1xu
XHQgICAgICB9XG5cdFxuXHQgICAgICBwcmludFdhcm5pbmcuYXBwbHkodW5kZWZpbmVkLCBbZm9y
bWF0XS5jb25jYXQoYXJncykpO1xuXHQgICAgfVxuXHQgIH07XG5cdH1cblx0XG5cdG1vZHVsZS5l
eHBvcnRzID0gbG93UHJpb3JpdHlXYXJuaW5nO1xuXG4vKioqLyB9LFxuLyogMjIzICovXG4vKioq
LyBmdW5jdGlvbihtb2R1bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQv
Kipcblx0ICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cblx0ICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cblx0ICpcblx0ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG5cdCAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuXHQgKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFU
RU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cblx0ICpcblx0ICovXG5cdCd1c2Ugc3Ry
aWN0Jztcblx0XG5cdHZhciBfcHJvZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMjMp
O1xuXHRcblx0dmFyIFJlYWN0RWxlbWVudCA9IF9fd2VicGFja19yZXF1aXJlX18oMTgpO1xuXHRc
blx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oMSk7XG5cdFxuXHQvKipcblx0
ICogUmV0dXJucyB0aGUgZmlyc3QgY2hpbGQgaW4gYSBjb2xsZWN0aW9uIG9mIGNoaWxkcmVuIGFu
ZCB2ZXJpZmllcyB0aGF0IHRoZXJlXG5cdCAqIGlzIG9ubHkgb25lIGNoaWxkIGluIHRoZSBjb2xs
ZWN0aW9uLlxuXHQgKlxuXHQgKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3Qv
ZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3QuY2hpbGRyZW4ub25seVxuXHQgKlxuXHQgKiBU
aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiB0aGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhhdCBh
IHNpbmdsZSBjaGlsZCBnZXRzXG5cdCAqIHBhc3NlZCB3aXRob3V0IGEgd3JhcHBlciwgYnV0IHRo
ZSBwdXJwb3NlIG9mIHRoaXMgaGVscGVyIGZ1bmN0aW9uIGlzIHRvXG5cdCAqIGFic3RyYWN0IGF3
YXkgdGhlIHBhcnRpY3VsYXIgc3RydWN0dXJlIG9mIGNoaWxkcmVuLlxuXHQgKlxuXHQgKiBAcGFy
YW0gez9vYmplY3R9IGNoaWxkcmVuIENoaWxkIGNvbGxlY3Rpb24gc3RydWN0dXJlLlxuXHQgKiBA
cmV0dXJuIHtSZWFjdEVsZW1lbnR9IFRoZSBmaXJzdCBhbmQgb25seSBgUmVhY3RFbGVtZW50YCBj
b250YWluZWQgaW4gdGhlXG5cdCAqIHN0cnVjdHVyZS5cblx0ICovXG5cdGZ1bmN0aW9uIG9ubHlD
aGlsZChjaGlsZHJlbikge1xuXHQgICFSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQoY2hpbGRy
ZW4pID8gIGZhbHNlID8gaW52YXJpYW50KGZhbHNlLCAnUmVhY3QuQ2hpbGRyZW4ub25seSBleHBl
Y3RlZCB0byByZWNlaXZlIGEgc2luZ2xlIFJlYWN0IGVsZW1lbnQgY2hpbGQuJykgOiBfcHJvZElu
dmFyaWFudCgnMTQzJykgOiB2b2lkIDA7XG5cdCAgcmV0dXJuIGNoaWxkcmVuO1xuXHR9XG5cdFxu
XHRtb2R1bGUuZXhwb3J0cyA9IG9ubHlDaGlsZDtcblxuLyoqKi8gfSxcbi8qIDIyNCAqL1xuLyoq
Ki8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0
LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG5cdCAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuXHQgKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBB
VEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG5cdCAqXG5cdCAqL1xuXHRcblx0J3Vz
ZSBzdHJpY3QnO1xuXHRcblx0dmFyIF9wcm9kSW52YXJpYW50ID0gX193ZWJwYWNrX3JlcXVpcmVf
XygyMyk7XG5cdFxuXHR2YXIgUmVhY3RDdXJyZW50T3duZXIgPSBfX3dlYnBhY2tfcmVxdWlyZV9f
KDExKTtcblx0dmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IF9fd2VicGFja19yZXF1aXJlX18oOTEp
O1xuXHRcblx0dmFyIGdldEl0ZXJhdG9yRm4gPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIyMCk7XG5c
dHZhciBpbnZhcmlhbnQgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDEpO1xuXHR2YXIgS2V5RXNjYXBl
VXRpbHMgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDIxMyk7XG5cdHZhciB3YXJuaW5nID0gX193ZWJw
YWNrX3JlcXVpcmVfXygyKTtcblx0XG5cdHZhciBTRVBBUkFUT1IgPSAnLic7XG5cdHZhciBTVUJT
RVBBUkFUT1IgPSAnOic7XG5cdFxuXHQvKipcblx0ICogVGhpcyBpcyBpbmxpbmVkIGZyb20gUmVh
Y3RFbGVtZW50IHNpbmNlIHRoaXMgZmlsZSBpcyBzaGFyZWQgYmV0d2VlblxuXHQgKiBpc29tb3Jw
aGljIGFuZCByZW5kZXJlcnMuIFdlIGNvdWxkIGV4dHJhY3QgdGhpcyB0byBhXG5cdCAqXG5cdCAq
L1xuXHRcblx0LyoqXG5cdCAqIFRPRE86IFRlc3QgdGhhdCBhIHNpbmdsZSBjaGlsZCBhbmQgYW4g
YXJyYXkgd2l0aCBvbmUgaXRlbSBoYXZlIHRoZSBzYW1lIGtleVxuXHQgKiBwYXR0ZXJuLlxuXHQg
Ki9cblx0XG5cdHZhciBkaWRXYXJuQWJvdXRNYXBzID0gZmFsc2U7XG5cdFxuXHQvKipcblx0ICog
R2VuZXJhdGUgYSBrZXkgc3RyaW5nIHRoYXQgaWRlbnRpZmllcyBhIGNvbXBvbmVudCB3aXRoaW4g
YSBzZXQuXG5cdCAqXG5cdCAqIEBwYXJhbSB7Kn0gY29tcG9uZW50IEEgY29tcG9uZW50IHRoYXQg
Y291bGQgY29udGFpbiBhIG1hbnVhbCBrZXkuXG5cdCAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBJ
bmRleCB0aGF0IGlzIHVzZWQgaWYgYSBtYW51YWwga2V5IGlzIG5vdCBwcm92aWRlZC5cblx0ICog
QHJldHVybiB7c3RyaW5nfVxuXHQgKi9cblx0ZnVuY3Rpb24gZ2V0Q29tcG9uZW50S2V5KGNvbXBv
bmVudCwgaW5kZXgpIHtcblx0ICAvLyBEbyBzb21lIHR5cGVjaGVja2luZyBoZXJlIHNpbmNlIHdl
IGNhbGwgdGhpcyBibGluZGx5LiBXZSB3YW50IHRvIGVuc3VyZVxuXHQgIC8vIHRoYXQgd2UgZG9u
J3QgYmxvY2sgcG90ZW50aWFsIGZ1dHVyZSBFUyBBUElzLlxuXHQgIGlmIChjb21wb25lbnQgJiYg
dHlwZW9mIGNvbXBvbmVudCA9PT0gJ29iamVjdCcgJiYgY29tcG9uZW50LmtleSAhPSBudWxsKSB7
XG5cdCAgICAvLyBFeHBsaWNpdCBrZXlcblx0ICAgIHJldHVybiBLZXlFc2NhcGVVdGlscy5lc2Nh
cGUoY29tcG9uZW50LmtleSk7XG5cdCAgfVxuXHQgIC8vIEltcGxpY2l0IGtleSBkZXRlcm1pbmVk
IGJ5IHRoZSBpbmRleCBpbiB0aGUgc2V0XG5cdCAgcmV0dXJuIGluZGV4LnRvU3RyaW5nKDM2KTtc
blx0fVxuXHRcblx0LyoqXG5cdCAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUg
Y29udGFpbmVyLlxuXHQgKiBAcGFyYW0geyFzdHJpbmd9IG5hbWVTb0ZhciBOYW1lIG9mIHRoZSBr
ZXkgcGF0aCBzbyBmYXIuXG5cdCAqIEBwYXJhbSB7IWZ1bmN0aW9ufSBjYWxsYmFjayBDYWxsYmFj
ayB0byBpbnZva2Ugd2l0aCBlYWNoIGNoaWxkIGZvdW5kLlxuXHQgKiBAcGFyYW0gez8qfSB0cmF2
ZXJzZUNvbnRleHQgVXNlZCB0byBwYXNzIGluZm9ybWF0aW9uIHRocm91Z2hvdXQgdGhlIHRyYXZl
cnNhbFxuXHQgKiBwcm9jZXNzLlxuXHQgKiBAcmV0dXJuIHshbnVtYmVyfSBUaGUgbnVtYmVyIG9m
IGNoaWxkcmVuIGluIHRoaXMgc3VidHJlZS5cblx0ICovXG5cdGZ1bmN0aW9uIHRyYXZlcnNlQWxs
Q2hpbGRyZW5JbXBsKGNoaWxkcmVuLCBuYW1lU29GYXIsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRl
eHQpIHtcblx0ICB2YXIgdHlwZSA9IHR5cGVvZiBjaGlsZHJlbjtcblx0XG5cdCAgaWYgKHR5cGUg
PT09ICd1bmRlZmluZWQnIHx8IHR5cGUgPT09ICdib29sZWFuJykge1xuXHQgICAgLy8gQWxsIG9m
IHRoZSBhYm92ZSBhcmUgcGVyY2VpdmVkIGFzIG51bGwuXG5cdCAgICBjaGlsZHJlbiA9IG51bGw7
XG5cdCAgfVxuXHRcblx0ICBpZiAoY2hpbGRyZW4gPT09IG51bGwgfHwgdHlwZSA9PT0gJ3N0cmlu
ZycgfHwgdHlwZSA9PT0gJ251bWJlcicgfHxcblx0ICAvLyBUaGUgZm9sbG93aW5nIGlzIGlubGlu
ZWQgZnJvbSBSZWFjdEVsZW1lbnQuIFRoaXMgbWVhbnMgd2UgY2FuIG9wdGltaXplXG5cdCAgLy8g
c29tZSBjaGVja3MuIFJlYWN0IEZpYmVyIGFsc28gaW5saW5lcyB0aGlzIGxvZ2ljIGZvciBzaW1p
bGFyIHB1cnBvc2VzLlxuXHQgIHR5cGUgPT09ICdvYmplY3QnICYmIGNoaWxkcmVuLiQkdHlwZW9m
ID09PSBSRUFDVF9FTEVNRU5UX1RZUEUpIHtcblx0ICAgIGNhbGxiYWNrKHRyYXZlcnNlQ29udGV4
dCwgY2hpbGRyZW4sXG5cdCAgICAvLyBJZiBpdCdzIHRoZSBvbmx5IGNoaWxkLCB0cmVhdCB0aGUg
bmFtZSBhcyBpZiBpdCB3YXMgd3JhcHBlZCBpbiBhbiBhcnJheVxuXHQgICAgLy8gc28gdGhhdCBp
dCdzIGNvbnNpc3RlbnQgaWYgdGhlIG51bWJlciBvZiBjaGlsZHJlbiBncm93cy5cblx0ICAgIG5h
bWVTb0ZhciA9PT0gJycgPyBTRVBBUkFUT1IgKyBnZXRDb21wb25lbnRLZXkoY2hpbGRyZW4sIDAp
IDogbmFtZVNvRmFyKTtcblx0ICAgIHJldHVybiAxO1xuXHQgIH1cblx0XG5cdCAgdmFyIGNoaWxk
O1xuXHQgIHZhciBuZXh0TmFtZTtcblx0ICB2YXIgc3VidHJlZUNvdW50ID0gMDsgLy8gQ291bnQg
b2YgY2hpbGRyZW4gZm91bmQgaW4gdGhlIGN1cnJlbnQgc3VidHJlZS5cblx0ICB2YXIgbmV4dE5h
bWVQcmVmaXggPSBuYW1lU29GYXIgPT09ICcnID8gU0VQQVJBVE9SIDogbmFtZVNvRmFyICsgU1VC
U0VQQVJBVE9SO1xuXHRcblx0ICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcblx0ICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcblx0ICAgICAgY2hp
bGQgPSBjaGlsZHJlbltpXTtcblx0ICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIGdl
dENvbXBvbmVudEtleShjaGlsZCwgaSk7XG5cdCAgICAgIHN1YnRyZWVDb3VudCArPSB0cmF2ZXJz
ZUFsbENoaWxkcmVuSW1wbChjaGlsZCwgbmV4dE5hbWUsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRl
eHQpO1xuXHQgICAgfVxuXHQgIH0gZWxzZSB7XG5cdCAgICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0
ZXJhdG9yRm4oY2hpbGRyZW4pO1xuXHQgICAgaWYgKGl0ZXJhdG9yRm4pIHtcblx0ICAgICAgdmFy
IGl0ZXJhdG9yID0gaXRlcmF0b3JGbi5jYWxsKGNoaWxkcmVuKTtcblx0ICAgICAgdmFyIHN0ZXA7
XG5cdCAgICAgIGlmIChpdGVyYXRvckZuICE9PSBjaGlsZHJlbi5lbnRyaWVzKSB7XG5cdCAgICAg
ICAgdmFyIGlpID0gMDtcblx0ICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgp
KS5kb25lKSB7XG5cdCAgICAgICAgICBjaGlsZCA9IHN0ZXAudmFsdWU7XG5cdCAgICAgICAgICBu
ZXh0TmFtZSA9IG5leHROYW1lUHJlZml4ICsgZ2V0Q29tcG9uZW50S2V5KGNoaWxkLCBpaSsrKTtc
blx0ICAgICAgICAgIHN1YnRyZWVDb3VudCArPSB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChjaGls
ZCwgbmV4dE5hbWUsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpO1xuXHQgICAgICAgIH1cblx0
ICAgICAgfSBlbHNlIHtcblx0ICAgICAgICBpZiAoZmFsc2UpIHtcblx0ICAgICAgICAgIHZhciBt
YXBzQXNDaGlsZHJlbkFkZGVuZHVtID0gJyc7XG5cdCAgICAgICAgICBpZiAoUmVhY3RDdXJyZW50
T3duZXIuY3VycmVudCkge1xuXHQgICAgICAgICAgICB2YXIgbWFwc0FzQ2hpbGRyZW5Pd25lck5h
bWUgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKTtcblx0ICAgICAgICAgICAg
aWYgKG1hcHNBc0NoaWxkcmVuT3duZXJOYW1lKSB7XG5cdCAgICAgICAgICAgICAgbWFwc0FzQ2hp
bGRyZW5BZGRlbmR1bSA9ICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBtYXBzQXND
aGlsZHJlbk93bmVyTmFtZSArICdgLic7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICAgIH1c
blx0ICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKGRpZFdhcm5BYm91dE1hcHMsICdVc2luZyBNYXBzIGFzIGNoaWxkcmVuIGlzIG5vdCB5ZXQg
ZnVsbHkgc3VwcG9ydGVkLiBJdCBpcyBhbiAnICsgJ2V4cGVyaW1lbnRhbCBmZWF0dXJlIHRoYXQg
bWlnaHQgYmUgcmVtb3ZlZC4gQ29udmVydCBpdCB0byBhICcgKyAnc2VxdWVuY2UgLyBpdGVyYWJs
ZSBvZiBrZXllZCBSZWFjdEVsZW1lbnRzIGluc3RlYWQuJXMnLCBtYXBzQXNDaGlsZHJlbkFkZGVu
ZHVtKSA6IHZvaWQgMDtcblx0ICAgICAgICAgIGRpZFdhcm5BYm91dE1hcHMgPSB0cnVlO1xuXHQg
ICAgICAgIH1cblx0ICAgICAgICAvLyBJdGVyYXRvciB3aWxsIHByb3ZpZGUgZW50cnkgW2ssdl0g
dHVwbGVzIHJhdGhlciB0aGFuIHZhbHVlcy5cblx0ICAgICAgICB3aGlsZSAoIShzdGVwID0gaXRl
cmF0b3IubmV4dCgpKS5kb25lKSB7XG5cdCAgICAgICAgICB2YXIgZW50cnkgPSBzdGVwLnZhbHVl
O1xuXHQgICAgICAgICAgaWYgKGVudHJ5KSB7XG5cdCAgICAgICAgICAgIGNoaWxkID0gZW50cnlb
MV07XG5cdCAgICAgICAgICAgIG5leHROYW1lID0gbmV4dE5hbWVQcmVmaXggKyBLZXlFc2NhcGVV
dGlscy5lc2NhcGUoZW50cnlbMF0pICsgU1VCU0VQQVJBVE9SICsgZ2V0Q29tcG9uZW50S2V5KGNo
aWxkLCAwKTtcblx0ICAgICAgICAgICAgc3VidHJlZUNvdW50ICs9IHRyYXZlcnNlQWxsQ2hpbGRy
ZW5JbXBsKGNoaWxkLCBuZXh0TmFtZSwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCk7XG5cdCAg
ICAgICAgICB9XG5cdCAgICAgICAgfVxuXHQgICAgICB9XG5cdCAgICB9IGVsc2UgaWYgKHR5cGUg
PT09ICdvYmplY3QnKSB7XG5cdCAgICAgIHZhciBhZGRlbmR1bSA9ICcnO1xuXHQgICAgICBpZiAo
ZmFsc2UpIHtcblx0ICAgICAgICBhZGRlbmR1bSA9ICcgSWYgeW91IG1lYW50IHRvIHJlbmRlciBh
IGNvbGxlY3Rpb24gb2YgY2hpbGRyZW4sIHVzZSBhbiBhcnJheSAnICsgJ2luc3RlYWQgb3Igd3Jh
cCB0aGUgb2JqZWN0IHVzaW5nIGNyZWF0ZUZyYWdtZW50KG9iamVjdCkgZnJvbSB0aGUgJyArICdS
ZWFjdCBhZGQtb25zLic7XG5cdCAgICAgICAgaWYgKGNoaWxkcmVuLl9pc1JlYWN0RWxlbWVudCkg
e1xuXHQgICAgICAgICAgYWRkZW5kdW0gPSBcIiBJdCBsb29rcyBsaWtlIHlvdSdyZSB1c2luZyBh
biBlbGVtZW50IGNyZWF0ZWQgYnkgYSBkaWZmZXJlbnQgXCIgKyAndmVyc2lvbiBvZiBSZWFjdC4g
TWFrZSBzdXJlIHRvIHVzZSBvbmx5IG9uZSBjb3B5IG9mIFJlYWN0Lic7XG5cdCAgICAgICAgfVxu
XHQgICAgICAgIGlmIChSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50KSB7XG5cdCAgICAgICAgICB2
YXIgbmFtZSA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQuZ2V0TmFtZSgpO1xuXHQgICAgICAg
ICAgaWYgKG5hbWUpIHtcblx0ICAgICAgICAgICAgYWRkZW5kdW0gKz0gJyBDaGVjayB0aGUgcmVu
ZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xuXHQgICAgICAgICAgfVxuXHQgICAgICAg
IH1cblx0ICAgICAgfVxuXHQgICAgICB2YXIgY2hpbGRyZW5TdHJpbmcgPSBTdHJpbmcoY2hpbGRy
ZW4pO1xuXHQgICAgICAgdHJ1ZSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ09iamVjdHMg
YXJlIG5vdCB2YWxpZCBhcyBhIFJlYWN0IGNoaWxkIChmb3VuZDogJXMpLiVzJywgY2hpbGRyZW5T
dHJpbmcgPT09ICdbb2JqZWN0IE9iamVjdF0nID8gJ29iamVjdCB3aXRoIGtleXMgeycgKyBPYmpl
Y3Qua2V5cyhjaGlsZHJlbikuam9pbignLCAnKSArICd9JyA6IGNoaWxkcmVuU3RyaW5nLCBhZGRl
bmR1bSkgOiBfcHJvZEludmFyaWFudCgnMzEnLCBjaGlsZHJlblN0cmluZyA9PT0gJ1tvYmplY3Qg
T2JqZWN0XScgPyAnb2JqZWN0IHdpdGgga2V5cyB7JyArIE9iamVjdC5rZXlzKGNoaWxkcmVuKS5q
b2luKCcsICcpICsgJ30nIDogY2hpbGRyZW5TdHJpbmcsIGFkZGVuZHVtKSA6IHZvaWQgMDtcblx0
ICAgIH1cblx0ICB9XG5cdFxuXHQgIHJldHVybiBzdWJ0cmVlQ291bnQ7XG5cdH1cblx0XG5cdC8q
KlxuXHQgKiBUcmF2ZXJzZXMgY2hpbGRyZW4gdGhhdCBhcmUgdHlwaWNhbGx5IHNwZWNpZmllZCBh
cyBgcHJvcHMuY2hpbGRyZW5gLCBidXRcblx0ICogbWlnaHQgYWxzbyBiZSBzcGVjaWZpZWQgdGhy
b3VnaCBhdHRyaWJ1dGVzOlxuXHQgKlxuXHQgKiAtIGB0cmF2ZXJzZUFsbENoaWxkcmVuKHRoaXMu
cHJvcHMuY2hpbGRyZW4sIC4uLilgXG5cdCAqIC0gYHRyYXZlcnNlQWxsQ2hpbGRyZW4odGhpcy5w
cm9wcy5sZWZ0UGFuZWxDaGlsZHJlbiwgLi4uKWBcblx0ICpcblx0ICogVGhlIGB0cmF2ZXJzZUNv
bnRleHRgIGlzIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHRoYXQgaXMgcGFzc2VkIHRocm91Z2ggdGhl
XG5cdCAqIGVudGlyZSB0cmF2ZXJzYWwuIEl0IGNhbiBiZSB1c2VkIHRvIHN0b3JlIGFjY3VtdWxh
dGlvbnMgb3IgYW55dGhpbmcgZWxzZSB0aGF0XG5cdCAqIHRoZSBjYWxsYmFjayBtaWdodCBmaW5k
IHJlbGV2YW50LlxuXHQgKlxuXHQgKiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVl
IG9iamVjdC5cblx0ICogQHBhcmFtIHshZnVuY3Rpb259IGNhbGxiYWNrIFRvIGludm9rZSB1cG9u
IHRyYXZlcnNpbmcgZWFjaCBjaGlsZC5cblx0ICogQHBhcmFtIHs/Kn0gdHJhdmVyc2VDb250ZXh0
IENvbnRleHQgZm9yIHRyYXZlcnNhbC5cblx0ICogQHJldHVybiB7IW51bWJlcn0gVGhlIG51bWJl
ciBvZiBjaGlsZHJlbiBpbiB0aGlzIHN1YnRyZWUuXG5cdCAqL1xuXHRmdW5jdGlvbiB0cmF2ZXJz
ZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KSB7XG5cdCAg
aWYgKGNoaWxkcmVuID09IG51bGwpIHtcblx0ICAgIHJldHVybiAwO1xuXHQgIH1cblx0XG5cdCAg
cmV0dXJuIHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBsKGNoaWxkcmVuLCAnJywgY2FsbGJhY2ssIHRy
YXZlcnNlQ29udGV4dCk7XG5cdH1cblx0XG5cdG1vZHVsZS5leHBvcnRzID0gdHJhdmVyc2VBbGxD
aGlsZHJlbjtcblxuLyoqKi8gfSxcbi8qIDIyNSAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBl
eHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0
ZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblx0XG5cdHZhciBfZXh0ZW5kcyA9IE9iamVjdC5h
c3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50
cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkg
aW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291
cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJn
ZXQ7IH07XG5cdFxuXHRleHBvcnRzWydkZWZhdWx0J10gPSBhcHBseU1pZGRsZXdhcmU7XG5cdFxu
XHR2YXIgX2NvbXBvc2UgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDk0KTtcblx0XG5cdHZhciBfY29t
cG9zZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb21wb3NlKTtcblx0XG5cdGZ1bmN0aW9u
IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1
bGUgPyBvYmogOiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblx0XG5cdC8qKlxuXHQgKiBDcmVhdGVz
IGEgc3RvcmUgZW5oYW5jZXIgdGhhdCBhcHBsaWVzIG1pZGRsZXdhcmUgdG8gdGhlIGRpc3BhdGNo
IG1ldGhvZFxuXHQgKiBvZiB0aGUgUmVkdXggc3RvcmUuIFRoaXMgaXMgaGFuZHkgZm9yIGEgdmFy
aWV0eSBvZiB0YXNrcywgc3VjaCBhcyBleHByZXNzaW5nXG5cdCAqIGFzeW5jaHJvbm91cyBhY3Rp
b25zIGluIGEgY29uY2lzZSBtYW5uZXIsIG9yIGxvZ2dpbmcgZXZlcnkgYWN0aW9uIHBheWxvYWQu
XG5cdCAqXG5cdCAqIFNlZSBgcmVkdXgtdGh1bmtgIHBhY2thZ2UgYXMgYW4gZXhhbXBsZSBvZiB0
aGUgUmVkdXggbWlkZGxld2FyZS5cblx0ICpcblx0ICogQmVjYXVzZSBtaWRkbGV3YXJlIGlzIHBv
dGVudGlhbGx5IGFzeW5jaHJvbm91cywgdGhpcyBzaG91bGQgYmUgdGhlIGZpcnN0XG5cdCAqIHN0
b3JlIGVuaGFuY2VyIGluIHRoZSBjb21wb3NpdGlvbiBjaGFpbi5cblx0ICpcblx0ICogTm90ZSB0
aGF0IGVhY2ggbWlkZGxld2FyZSB3aWxsIGJlIGdpdmVuIHRoZSBgZGlzcGF0Y2hgIGFuZCBgZ2V0
U3RhdGVgIGZ1bmN0aW9uc1xuXHQgKiBhcyBuYW1lZCBhcmd1bWVudHMuXG5cdCAqXG5cdCAqIEBw
YXJhbSB7Li4uRnVuY3Rpb259IG1pZGRsZXdhcmVzIFRoZSBtaWRkbGV3YXJlIGNoYWluIHRvIGJl
IGFwcGxpZWQuXG5cdCAqIEByZXR1cm5zIHtGdW5jdGlvbn0gQSBzdG9yZSBlbmhhbmNlciBhcHBs
eWluZyB0aGUgbWlkZGxld2FyZS5cblx0ICovXG5cdGZ1bmN0aW9uIGFwcGx5TWlkZGxld2FyZSgp
IHtcblx0ICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgbWlkZGxld2FyZXMgPSBB
cnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcblx0ICAgIG1pZGRs
ZXdhcmVzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuXHQgIH1cblx0XG5cdCAgcmV0dXJuIGZ1
bmN0aW9uIChjcmVhdGVTdG9yZSkge1xuXHQgICAgcmV0dXJuIGZ1bmN0aW9uIChyZWR1Y2VyLCBw
cmVsb2FkZWRTdGF0ZSwgZW5oYW5jZXIpIHtcblx0ICAgICAgdmFyIHN0b3JlID0gY3JlYXRlU3Rv
cmUocmVkdWNlciwgcHJlbG9hZGVkU3RhdGUsIGVuaGFuY2VyKTtcblx0ICAgICAgdmFyIF9kaXNw
YXRjaCA9IHN0b3JlLmRpc3BhdGNoO1xuXHQgICAgICB2YXIgY2hhaW4gPSBbXTtcblx0XG5cdCAg
ICAgIHZhciBtaWRkbGV3YXJlQVBJID0ge1xuXHQgICAgICAgIGdldFN0YXRlOiBzdG9yZS5nZXRT
dGF0ZSxcblx0ICAgICAgICBkaXNwYXRjaDogZnVuY3Rpb24gZGlzcGF0Y2goYWN0aW9uKSB7XG5c
dCAgICAgICAgICByZXR1cm4gX2Rpc3BhdGNoKGFjdGlvbik7XG5cdCAgICAgICAgfVxuXHQgICAg
ICB9O1xuXHQgICAgICBjaGFpbiA9IG1pZGRsZXdhcmVzLm1hcChmdW5jdGlvbiAobWlkZGxld2Fy
ZSkge1xuXHQgICAgICAgIHJldHVybiBtaWRkbGV3YXJlKG1pZGRsZXdhcmVBUEkpO1xuXHQgICAg
ICB9KTtcblx0ICAgICAgX2Rpc3BhdGNoID0gX2NvbXBvc2UyWydkZWZhdWx0J10uYXBwbHkodW5k
ZWZpbmVkLCBjaGFpbikoc3RvcmUuZGlzcGF0Y2gpO1xuXHRcblx0ICAgICAgcmV0dXJuIF9leHRl
bmRzKHt9LCBzdG9yZSwge1xuXHQgICAgICAgIGRpc3BhdGNoOiBfZGlzcGF0Y2hcblx0ICAgICAg
fSk7XG5cdCAgICB9O1xuXHQgIH07XG5cdH1cblxuLyoqKi8gfSxcbi8qIDIyNiAqL1xuLyoqKi8g
ZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xuXHRcblx0ZXhw
b3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblx0ZXhwb3J0c1snZGVmYXVsdCddID0gYmluZEFjdGlv
bkNyZWF0b3JzO1xuXHRmdW5jdGlvbiBiaW5kQWN0aW9uQ3JlYXRvcihhY3Rpb25DcmVhdG9yLCBk
aXNwYXRjaCkge1xuXHQgIHJldHVybiBmdW5jdGlvbiAoKSB7XG5cdCAgICByZXR1cm4gZGlzcGF0
Y2goYWN0aW9uQ3JlYXRvci5hcHBseSh1bmRlZmluZWQsIGFyZ3VtZW50cykpO1xuXHQgIH07XG5c
dH1cblx0XG5cdC8qKlxuXHQgKiBUdXJucyBhbiBvYmplY3Qgd2hvc2UgdmFsdWVzIGFyZSBhY3Rp
b24gY3JlYXRvcnMsIGludG8gYW4gb2JqZWN0IHdpdGggdGhlXG5cdCAqIHNhbWUga2V5cywgYnV0
IHdpdGggZXZlcnkgZnVuY3Rpb24gd3JhcHBlZCBpbnRvIGEgYGRpc3BhdGNoYCBjYWxsIHNvIHRo
ZXlcblx0ICogbWF5IGJlIGludm9rZWQgZGlyZWN0bHkuIFRoaXMgaXMganVzdCBhIGNvbnZlbmll
bmNlIG1ldGhvZCwgYXMgeW91IGNhbiBjYWxsXG5cdCAqIGBzdG9yZS5kaXNwYXRjaChNeUFjdGlv
bkNyZWF0b3JzLmRvU29tZXRoaW5nKCkpYCB5b3Vyc2VsZiBqdXN0IGZpbmUuXG5cdCAqXG5cdCAq
IEZvciBjb252ZW5pZW5jZSwgeW91IGNhbiBhbHNvIHBhc3MgYSBzaW5nbGUgZnVuY3Rpb24gYXMg
dGhlIGZpcnN0IGFyZ3VtZW50LFxuXHQgKiBhbmQgZ2V0IGEgZnVuY3Rpb24gaW4gcmV0dXJuLlxu
XHQgKlxuXHQgKiBAcGFyYW0ge0Z1bmN0aW9ufE9iamVjdH0gYWN0aW9uQ3JlYXRvcnMgQW4gb2Jq
ZWN0IHdob3NlIHZhbHVlcyBhcmUgYWN0aW9uXG5cdCAqIGNyZWF0b3IgZnVuY3Rpb25zLiBPbmUg
aGFuZHkgd2F5IHRvIG9idGFpbiBpdCBpcyB0byB1c2UgRVM2IGBpbXBvcnQgKiBhc2Bcblx0ICog
c3ludGF4LiBZb3UgbWF5IGFsc28gcGFzcyBhIHNpbmdsZSBmdW5jdGlvbi5cblx0ICpcblx0ICog
QHBhcmFtIHtGdW5jdGlvbn0gZGlzcGF0Y2ggVGhlIGBkaXNwYXRjaGAgZnVuY3Rpb24gYXZhaWxh
YmxlIG9uIHlvdXIgUmVkdXhcblx0ICogc3RvcmUuXG5cdCAqXG5cdCAqIEByZXR1cm5zIHtGdW5j
dGlvbnxPYmplY3R9IFRoZSBvYmplY3QgbWltaWNraW5nIHRoZSBvcmlnaW5hbCBvYmplY3QsIGJ1
dCB3aXRoXG5cdCAqIGV2ZXJ5IGFjdGlvbiBjcmVhdG9yIHdyYXBwZWQgaW50byB0aGUgYGRpc3Bh
dGNoYCBjYWxsLiBJZiB5b3UgcGFzc2VkIGFcblx0ICogZnVuY3Rpb24gYXMgYGFjdGlvbkNyZWF0
b3JzYCwgdGhlIHJldHVybiB2YWx1ZSB3aWxsIGFsc28gYmUgYSBzaW5nbGVcblx0ICogZnVuY3Rp
b24uXG5cdCAqL1xuXHRmdW5jdGlvbiBiaW5kQWN0aW9uQ3JlYXRvcnMoYWN0aW9uQ3JlYXRvcnMs
IGRpc3BhdGNoKSB7XG5cdCAgaWYgKHR5cGVvZiBhY3Rpb25DcmVhdG9ycyA9PT0gJ2Z1bmN0aW9u
Jykge1xuXHQgICAgcmV0dXJuIGJpbmRBY3Rpb25DcmVhdG9yKGFjdGlvbkNyZWF0b3JzLCBkaXNw
YXRjaCk7XG5cdCAgfVxuXHRcblx0ICBpZiAodHlwZW9mIGFjdGlvbkNyZWF0b3JzICE9PSAnb2Jq
ZWN0JyB8fCBhY3Rpb25DcmVhdG9ycyA9PT0gbnVsbCkge1xuXHQgICAgdGhyb3cgbmV3IEVycm9y
KCdiaW5kQWN0aW9uQ3JlYXRvcnMgZXhwZWN0ZWQgYW4gb2JqZWN0IG9yIGEgZnVuY3Rpb24sIGlu
c3RlYWQgcmVjZWl2ZWQgJyArIChhY3Rpb25DcmVhdG9ycyA9PT0gbnVsbCA/ICdudWxsJyA6IHR5
cGVvZiBhY3Rpb25DcmVhdG9ycykgKyAnLiAnICsgJ0RpZCB5b3Ugd3JpdGUgXCJpbXBvcnQgQWN0
aW9uQ3JlYXRvcnMgZnJvbVwiIGluc3RlYWQgb2YgXCJpbXBvcnQgKiBhcyBBY3Rpb25DcmVhdG9y
cyBmcm9tXCI/Jyk7XG5cdCAgfVxuXHRcblx0ICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKGFjdGlv
bkNyZWF0b3JzKTtcblx0ICB2YXIgYm91bmRBY3Rpb25DcmVhdG9ycyA9IHt9O1xuXHQgIGZvciAo
dmFyIGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xuXHQgICAgdmFyIGtleSA9IGtleXNb
aV07XG5cdCAgICB2YXIgYWN0aW9uQ3JlYXRvciA9IGFjdGlvbkNyZWF0b3JzW2tleV07XG5cdCAg
ICBpZiAodHlwZW9mIGFjdGlvbkNyZWF0b3IgPT09ICdmdW5jdGlvbicpIHtcblx0ICAgICAgYm91
bmRBY3Rpb25DcmVhdG9yc1trZXldID0gYmluZEFjdGlvbkNyZWF0b3IoYWN0aW9uQ3JlYXRvciwg
ZGlzcGF0Y2gpO1xuXHQgICAgfVxuXHQgIH1cblx0ICByZXR1cm4gYm91bmRBY3Rpb25DcmVhdG9y
cztcblx0fVxuXG4vKioqLyB9LFxuLyogMjI3ICovXG4vKioqLyBmdW5jdGlvbihtb2R1bGUsIGV4
cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pIHtcblxuXHQndXNlIHN0cmljdCc7XG5cdFxuXHRl
eHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXHRleHBvcnRzWydkZWZhdWx0J10gPSBjb21iaW5l
UmVkdWNlcnM7XG5cdFxuXHR2YXIgX2NyZWF0ZVN0b3JlID0gX193ZWJwYWNrX3JlcXVpcmVfXyg5
NSk7XG5cdFxuXHR2YXIgX2lzUGxhaW5PYmplY3QgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKDMzKTtc
blx0XG5cdHZhciBfaXNQbGFpbk9iamVjdDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc1Bs
YWluT2JqZWN0KTtcblx0XG5cdHZhciBfd2FybmluZyA9IF9fd2VicGFja19yZXF1aXJlX18oOTYp
O1xuXHRcblx0dmFyIF93YXJuaW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3dhcm5pbmcp
O1xuXHRcblx0ZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9i
aiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXHRcblx0
ZnVuY3Rpb24gZ2V0VW5kZWZpbmVkU3RhdGVFcnJvck1lc3NhZ2Uoa2V5LCBhY3Rpb24pIHtcblx0
ICB2YXIgYWN0aW9uVHlwZSA9IGFjdGlvbiAmJiBhY3Rpb24udHlwZTtcblx0ICB2YXIgYWN0aW9u
TmFtZSA9IGFjdGlvblR5cGUgJiYgJ1wiJyArIGFjdGlvblR5cGUudG9TdHJpbmcoKSArICdcIicg
fHwgJ2FuIGFjdGlvbic7XG5cdFxuXHQgIHJldHVybiAnR2l2ZW4gYWN0aW9uICcgKyBhY3Rpb25O
YW1lICsgJywgcmVkdWNlciBcIicgKyBrZXkgKyAnXCIgcmV0dXJuZWQgdW5kZWZpbmVkLiAnICsg
J1RvIGlnbm9yZSBhbiBhY3Rpb24sIHlvdSBtdXN0IGV4cGxpY2l0bHkgcmV0dXJuIHRoZSBwcmV2
aW91cyBzdGF0ZS4gJyArICdJZiB5b3Ugd2FudCB0aGlzIHJlZHVjZXIgdG8gaG9sZCBubyB2YWx1
ZSwgeW91IGNhbiByZXR1cm4gbnVsbCBpbnN0ZWFkIG9mIHVuZGVmaW5lZC4nO1xuXHR9XG5cdFxu
XHRmdW5jdGlvbiBnZXRVbmV4cGVjdGVkU3RhdGVTaGFwZVdhcm5pbmdNZXNzYWdlKGlucHV0U3Rh
dGUsIHJlZHVjZXJzLCBhY3Rpb24sIHVuZXhwZWN0ZWRLZXlDYWNoZSkge1xuXHQgIHZhciByZWR1
Y2VyS2V5cyA9IE9iamVjdC5rZXlzKHJlZHVjZXJzKTtcblx0ICB2YXIgYXJndW1lbnROYW1lID0g
YWN0aW9uICYmIGFjdGlvbi50eXBlID09PSBfY3JlYXRlU3RvcmUuQWN0aW9uVHlwZXMuSU5JVCA/
ICdwcmVsb2FkZWRTdGF0ZSBhcmd1bWVudCBwYXNzZWQgdG8gY3JlYXRlU3RvcmUnIDogJ3ByZXZp
b3VzIHN0YXRlIHJlY2VpdmVkIGJ5IHRoZSByZWR1Y2VyJztcblx0XG5cdCAgaWYgKHJlZHVjZXJL
ZXlzLmxlbmd0aCA9PT0gMCkge1xuXHQgICAgcmV0dXJuICdTdG9yZSBkb2VzIG5vdCBoYXZlIGEg
dmFsaWQgcmVkdWNlci4gTWFrZSBzdXJlIHRoZSBhcmd1bWVudCBwYXNzZWQgJyArICd0byBjb21i
aW5lUmVkdWNlcnMgaXMgYW4gb2JqZWN0IHdob3NlIHZhbHVlcyBhcmUgcmVkdWNlcnMuJztcblx0
ICB9XG5cdFxuXHQgIGlmICghKDAsIF9pc1BsYWluT2JqZWN0MlsnZGVmYXVsdCddKShpbnB1dFN0
YXRlKSkge1xuXHQgICAgcmV0dXJuICdUaGUgJyArIGFyZ3VtZW50TmFtZSArICcgaGFzIHVuZXhw
ZWN0ZWQgdHlwZSBvZiBcIicgKyB7fS50b1N0cmluZy5jYWxsKGlucHV0U3RhdGUpLm1hdGNoKC9c
XHMoW2EtenxBLVpdKykvKVsxXSArICdcIi4gRXhwZWN0ZWQgYXJndW1lbnQgdG8gYmUgYW4gb2Jq
ZWN0IHdpdGggdGhlIGZvbGxvd2luZyAnICsgKCdrZXlzOiBcIicgKyByZWR1Y2VyS2V5cy5qb2lu
KCdcIiwgXCInKSArICdcIicpO1xuXHQgIH1cblx0XG5cdCAgdmFyIHVuZXhwZWN0ZWRLZXlzID0g
T2JqZWN0LmtleXMoaW5wdXRTdGF0ZSkuZmlsdGVyKGZ1bmN0aW9uIChrZXkpIHtcblx0ICAgIHJl
dHVybiAhcmVkdWNlcnMuaGFzT3duUHJvcGVydHkoa2V5KSAmJiAhdW5leHBlY3RlZEtleUNhY2hl
W2tleV07XG5cdCAgfSk7XG5cdFxuXHQgIHVuZXhwZWN0ZWRLZXlzLmZvckVhY2goZnVuY3Rpb24g
KGtleSkge1xuXHQgICAgdW5leHBlY3RlZEtleUNhY2hlW2tleV0gPSB0cnVlO1xuXHQgIH0pO1xu
XHRcblx0ICBpZiAodW5leHBlY3RlZEtleXMubGVuZ3RoID4gMCkge1xuXHQgICAgcmV0dXJuICdV
bmV4cGVjdGVkICcgKyAodW5leHBlY3RlZEtleXMubGVuZ3RoID4gMSA/ICdrZXlzJyA6ICdrZXkn
KSArICcgJyArICgnXCInICsgdW5leHBlY3RlZEtleXMuam9pbignXCIsIFwiJykgKyAnXCIgZm91
bmQgaW4gJyArIGFyZ3VtZW50TmFtZSArICcuICcpICsgJ0V4cGVjdGVkIHRvIGZpbmQgb25lIG9m
IHRoZSBrbm93biByZWR1Y2VyIGtleXMgaW5zdGVhZDogJyArICgnXCInICsgcmVkdWNlcktleXMu
am9pbignXCIsIFwiJykgKyAnXCIuIFVuZXhwZWN0ZWQga2V5cyB3aWxsIGJlIGlnbm9yZWQuJyk7
XG5cdCAgfVxuXHR9XG5cdFxuXHRmdW5jdGlvbiBhc3NlcnRSZWR1Y2VyU2hhcGUocmVkdWNlcnMp
IHtcblx0ICBPYmplY3Qua2V5cyhyZWR1Y2VycykuZm9yRWFjaChmdW5jdGlvbiAoa2V5KSB7XG5c
dCAgICB2YXIgcmVkdWNlciA9IHJlZHVjZXJzW2tleV07XG5cdCAgICB2YXIgaW5pdGlhbFN0YXRl
ID0gcmVkdWNlcih1bmRlZmluZWQsIHsgdHlwZTogX2NyZWF0ZVN0b3JlLkFjdGlvblR5cGVzLklO
SVQgfSk7XG5cdFxuXHQgICAgaWYgKHR5cGVvZiBpbml0aWFsU3RhdGUgPT09ICd1bmRlZmluZWQn
KSB7XG5cdCAgICAgIHRocm93IG5ldyBFcnJvcignUmVkdWNlciBcIicgKyBrZXkgKyAnXCIgcmV0
dXJuZWQgdW5kZWZpbmVkIGR1cmluZyBpbml0aWFsaXphdGlvbi4gJyArICdJZiB0aGUgc3RhdGUg
cGFzc2VkIHRvIHRoZSByZWR1Y2VyIGlzIHVuZGVmaW5lZCwgeW91IG11c3QgJyArICdleHBsaWNp
dGx5IHJldHVybiB0aGUgaW5pdGlhbCBzdGF0ZS4gVGhlIGluaXRpYWwgc3RhdGUgbWF5ICcgKyAn
bm90IGJlIHVuZGVmaW5lZC4gSWYgeW91IGRvblxcJ3Qgd2FudCB0byBzZXQgYSB2YWx1ZSBmb3Ig
dGhpcyByZWR1Y2VyLCAnICsgJ3lvdSBjYW4gdXNlIG51bGwgaW5zdGVhZCBvZiB1bmRlZmluZWQu
Jyk7XG5cdCAgICB9XG5cdFxuXHQgICAgdmFyIHR5cGUgPSAnQEByZWR1eC9QUk9CRV9VTktOT1dO
X0FDVElPTl8nICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDcpLnNwbGl0
KCcnKS5qb2luKCcuJyk7XG5cdCAgICBpZiAodHlwZW9mIHJlZHVjZXIodW5kZWZpbmVkLCB7IHR5
cGU6IHR5cGUgfSkgPT09ICd1bmRlZmluZWQnKSB7XG5cdCAgICAgIHRocm93IG5ldyBFcnJvcign
UmVkdWNlciBcIicgKyBrZXkgKyAnXCIgcmV0dXJuZWQgdW5kZWZpbmVkIHdoZW4gcHJvYmVkIHdp
dGggYSByYW5kb20gdHlwZS4gJyArICgnRG9uXFwndCB0cnkgdG8gaGFuZGxlICcgKyBfY3JlYXRl
U3RvcmUuQWN0aW9uVHlwZXMuSU5JVCArICcgb3Igb3RoZXIgYWN0aW9ucyBpbiBcInJlZHV4Lypc
IiAnKSArICduYW1lc3BhY2UuIFRoZXkgYXJlIGNvbnNpZGVyZWQgcHJpdmF0ZS4gSW5zdGVhZCwg
eW91IG11c3QgcmV0dXJuIHRoZSAnICsgJ2N1cnJlbnQgc3RhdGUgZm9yIGFueSB1bmtub3duIGFj
dGlvbnMsIHVubGVzcyBpdCBpcyB1bmRlZmluZWQsICcgKyAnaW4gd2hpY2ggY2FzZSB5b3UgbXVz
dCByZXR1cm4gdGhlIGluaXRpYWwgc3RhdGUsIHJlZ2FyZGxlc3Mgb2YgdGhlICcgKyAnYWN0aW9u
IHR5cGUuIFRoZSBpbml0aWFsIHN0YXRlIG1heSBub3QgYmUgdW5kZWZpbmVkLCBidXQgY2FuIGJl
IG51bGwuJyk7XG5cdCAgICB9XG5cdCAgfSk7XG5cdH1cblx0XG5cdC8qKlxuXHQgKiBUdXJucyBh
biBvYmplY3Qgd2hvc2UgdmFsdWVzIGFyZSBkaWZmZXJlbnQgcmVkdWNlciBmdW5jdGlvbnMsIGlu
dG8gYSBzaW5nbGVcblx0ICogcmVkdWNlciBmdW5jdGlvbi4gSXQgd2lsbCBjYWxsIGV2ZXJ5IGNo
aWxkIHJlZHVjZXIsIGFuZCBnYXRoZXIgdGhlaXIgcmVzdWx0c1xuXHQgKiBpbnRvIGEgc2luZ2xl
IHN0YXRlIG9iamVjdCwgd2hvc2Uga2V5cyBjb3JyZXNwb25kIHRvIHRoZSBrZXlzIG9mIHRoZSBw
YXNzZWRcblx0ICogcmVkdWNlciBmdW5jdGlvbnMuXG5cdCAqXG5cdCAqIEBwYXJhbSB7T2JqZWN0
fSByZWR1Y2VycyBBbiBvYmplY3Qgd2hvc2UgdmFsdWVzIGNvcnJlc3BvbmQgdG8gZGlmZmVyZW50
XG5cdCAqIHJlZHVjZXIgZnVuY3Rpb25zIHRoYXQgbmVlZCB0byBiZSBjb21iaW5lZCBpbnRvIG9u
ZS4gT25lIGhhbmR5IHdheSB0byBvYnRhaW5cblx0ICogaXQgaXMgdG8gdXNlIEVTNiBgaW1wb3J0
ICogYXMgcmVkdWNlcnNgIHN5bnRheC4gVGhlIHJlZHVjZXJzIG1heSBuZXZlciByZXR1cm5cblx0
ICogdW5kZWZpbmVkIGZvciBhbnkgYWN0aW9uLiBJbnN0ZWFkLCB0aGV5IHNob3VsZCByZXR1cm4g
dGhlaXIgaW5pdGlhbCBzdGF0ZVxuXHQgKiBpZiB0aGUgc3RhdGUgcGFzc2VkIHRvIHRoZW0gd2Fz
IHVuZGVmaW5lZCwgYW5kIHRoZSBjdXJyZW50IHN0YXRlIGZvciBhbnlcblx0ICogdW5yZWNvZ25p
emVkIGFjdGlvbi5cblx0ICpcblx0ICogQHJldHVybnMge0Z1bmN0aW9ufSBBIHJlZHVjZXIgZnVu
Y3Rpb24gdGhhdCBpbnZva2VzIGV2ZXJ5IHJlZHVjZXIgaW5zaWRlIHRoZVxuXHQgKiBwYXNzZWQg
b2JqZWN0LCBhbmQgYnVpbGRzIGEgc3RhdGUgb2JqZWN0IHdpdGggdGhlIHNhbWUgc2hhcGUuXG5c
dCAqL1xuXHRmdW5jdGlvbiBjb21iaW5lUmVkdWNlcnMocmVkdWNlcnMpIHtcblx0ICB2YXIgcmVk
dWNlcktleXMgPSBPYmplY3Qua2V5cyhyZWR1Y2Vycyk7XG5cdCAgdmFyIGZpbmFsUmVkdWNlcnMg
PSB7fTtcblx0ICBmb3IgKHZhciBpID0gMDsgaSA8IHJlZHVjZXJLZXlzLmxlbmd0aDsgaSsrKSB7
XG5cdCAgICB2YXIga2V5ID0gcmVkdWNlcktleXNbaV07XG5cdFxuXHQgICAgaWYgKGZhbHNlKSB7
XG5cdCAgICAgIGlmICh0eXBlb2YgcmVkdWNlcnNba2V5XSA9PT0gJ3VuZGVmaW5lZCcpIHtcblx0
ICAgICAgICAoMCwgX3dhcm5pbmcyWydkZWZhdWx0J10pKCdObyByZWR1Y2VyIHByb3ZpZGVkIGZv
ciBrZXkgXCInICsga2V5ICsgJ1wiJyk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0XG5cdCAgICBp
ZiAodHlwZW9mIHJlZHVjZXJzW2tleV0gPT09ICdmdW5jdGlvbicpIHtcblx0ICAgICAgZmluYWxS
ZWR1Y2Vyc1trZXldID0gcmVkdWNlcnNba2V5XTtcblx0ICAgIH1cblx0ICB9XG5cdCAgdmFyIGZp
bmFsUmVkdWNlcktleXMgPSBPYmplY3Qua2V5cyhmaW5hbFJlZHVjZXJzKTtcblx0XG5cdCAgdmFy
IHVuZXhwZWN0ZWRLZXlDYWNoZSA9IHZvaWQgMDtcblx0ICBpZiAoZmFsc2UpIHtcblx0ICAgIHVu
ZXhwZWN0ZWRLZXlDYWNoZSA9IHt9O1xuXHQgIH1cblx0XG5cdCAgdmFyIHNoYXBlQXNzZXJ0aW9u
RXJyb3IgPSB2b2lkIDA7XG5cdCAgdHJ5IHtcblx0ICAgIGFzc2VydFJlZHVjZXJTaGFwZShmaW5h
bFJlZHVjZXJzKTtcblx0ICB9IGNhdGNoIChlKSB7XG5cdCAgICBzaGFwZUFzc2VydGlvbkVycm9y
ID0gZTtcblx0ICB9XG5cdFxuXHQgIHJldHVybiBmdW5jdGlvbiBjb21iaW5hdGlvbigpIHtcblx0
ICAgIHZhciBzdGF0ZSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0g
dW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge307XG5cdCAgICB2YXIgYWN0aW9uID0gYXJndW1l
bnRzWzFdO1xuXHRcblx0ICAgIGlmIChzaGFwZUFzc2VydGlvbkVycm9yKSB7XG5cdCAgICAgIHRo
cm93IHNoYXBlQXNzZXJ0aW9uRXJyb3I7XG5cdCAgICB9XG5cdFxuXHQgICAgaWYgKGZhbHNlKSB7
XG5cdCAgICAgIHZhciB3YXJuaW5nTWVzc2FnZSA9IGdldFVuZXhwZWN0ZWRTdGF0ZVNoYXBlV2Fy
bmluZ01lc3NhZ2Uoc3RhdGUsIGZpbmFsUmVkdWNlcnMsIGFjdGlvbiwgdW5leHBlY3RlZEtleUNh
Y2hlKTtcblx0ICAgICAgaWYgKHdhcm5pbmdNZXNzYWdlKSB7XG5cdCAgICAgICAgKDAsIF93YXJu
aW5nMlsnZGVmYXVsdCddKSh3YXJuaW5nTWVzc2FnZSk7XG5cdCAgICAgIH1cblx0ICAgIH1cblx0
XG5cdCAgICB2YXIgaGFzQ2hhbmdlZCA9IGZhbHNlO1xuXHQgICAgdmFyIG5leHRTdGF0ZSA9IHt9
O1xuXHQgICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGZpbmFsUmVkdWNlcktleXMubGVuZ3RoOyBf
aSsrKSB7XG5cdCAgICAgIHZhciBfa2V5ID0gZmluYWxSZWR1Y2VyS2V5c1tfaV07XG5cdCAgICAg
IHZhciByZWR1Y2VyID0gZmluYWxSZWR1Y2Vyc1tfa2V5XTtcblx0ICAgICAgdmFyIHByZXZpb3Vz
U3RhdGVGb3JLZXkgPSBzdGF0ZVtfa2V5XTtcblx0ICAgICAgdmFyIG5leHRTdGF0ZUZvcktleSA9
IHJlZHVjZXIocHJldmlvdXNTdGF0ZUZvcktleSwgYWN0aW9uKTtcblx0ICAgICAgaWYgKHR5cGVv
ZiBuZXh0U3RhdGVGb3JLZXkgPT09ICd1bmRlZmluZWQnKSB7XG5cdCAgICAgICAgdmFyIGVycm9y
TWVzc2FnZSA9IGdldFVuZGVmaW5lZFN0YXRlRXJyb3JNZXNzYWdlKF9rZXksIGFjdGlvbik7XG5c
dCAgICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yTWVzc2FnZSk7XG5cdCAgICAgIH1cblx0ICAg
ICAgbmV4dFN0YXRlW19rZXldID0gbmV4dFN0YXRlRm9yS2V5O1xuXHQgICAgICBoYXNDaGFuZ2Vk
ID0gaGFzQ2hhbmdlZCB8fCBuZXh0U3RhdGVGb3JLZXkgIT09IHByZXZpb3VzU3RhdGVGb3JLZXk7
XG5cdCAgICB9XG5cdCAgICByZXR1cm4gaGFzQ2hhbmdlZCA/IG5leHRTdGF0ZSA6IHN0YXRlO1xu
XHQgIH07XG5cdH1cblxuLyoqKi8gfSxcbi8qIDIyOCAqL1xuLyoqKi8gZnVuY3Rpb24obW9kdWxl
LCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0bW9kdWxlLmV4cG9ydHMgPSBf
X3dlYnBhY2tfcmVxdWlyZV9fKDIyOSk7XG5cblxuLyoqKi8gfSxcbi8qIDIyOSAqL1xuLyoqKi8g
ZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKSB7XG5cblx0Lyog
V0VCUEFDSyBWQVIgSU5KRUNUSU9OICovKGZ1bmN0aW9uKGdsb2JhbCwgbW9kdWxlKSB7J3VzZSBz
dHJpY3QnO1xuXHRcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVs
ZVwiLCB7XG5cdCAgdmFsdWU6IHRydWVcblx0fSk7XG5cdFxuXHR2YXIgX3BvbnlmaWxsID0gX193
ZWJwYWNrX3JlcXVpcmVfXygyMzApO1xuXHRcblx0dmFyIF9wb255ZmlsbDIgPSBfaW50ZXJvcFJl
cXVpcmVEZWZhdWx0KF9wb255ZmlsbCk7XG5cdFxuXHRmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVE
ZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyAnZGVm
YXVsdCc6IG9iaiB9OyB9XG5cdFxuXHR2YXIgcm9vdDsgLyogZ2xvYmFsIHdpbmRvdyAqL1xuXHRc
blx0XG5cdGlmICh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcpIHtcblx0ICByb290ID0gc2Vs
Zjtcblx0fSBlbHNlIGlmICh0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJykge1xuXHQgIHJv
b3QgPSB3aW5kb3c7XG5cdH0gZWxzZSBpZiAodHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcp
IHtcblx0ICByb290ID0gZ2xvYmFsO1xuXHR9IGVsc2UgaWYgKHRydWUpIHtcblx0ICByb290ID0g
bW9kdWxlO1xuXHR9IGVsc2Uge1xuXHQgIHJvb3QgPSBGdW5jdGlvbigncmV0dXJuIHRoaXMnKSgp
O1xuXHR9XG5cdFxuXHR2YXIgcmVzdWx0ID0gKDAsIF9wb255ZmlsbDJbJ2RlZmF1bHQnXSkocm9v
dCk7XG5cdGV4cG9ydHNbJ2RlZmF1bHQnXSA9IHJlc3VsdDtcblx0LyogV0VCUEFDSyBWQVIgSU5K
RUNUSU9OICovfS5jYWxsKGV4cG9ydHMsIChmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0oKSks
IF9fd2VicGFja19yZXF1aXJlX18oMjExKShtb2R1bGUpKSlcblxuLyoqKi8gfSxcbi8qIDIzMCAq
L1xuLyoqKi8gZnVuY3Rpb24obW9kdWxlLCBleHBvcnRzKSB7XG5cblx0J3VzZSBzdHJpY3QnO1xu
XHRcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7XG5c
dFx0dmFsdWU6IHRydWVcblx0fSk7XG5cdGV4cG9ydHNbJ2RlZmF1bHQnXSA9IHN5bWJvbE9ic2Vy
dmFibGVQb255ZmlsbDtcblx0ZnVuY3Rpb24gc3ltYm9sT2JzZXJ2YWJsZVBvbnlmaWxsKHJvb3Qp
IHtcblx0XHR2YXIgcmVzdWx0O1xuXHRcdHZhciBfU3ltYm9sID0gcm9vdC5TeW1ib2w7XG5cdFxu
XHRcdGlmICh0eXBlb2YgX1N5bWJvbCA9PT0gJ2Z1bmN0aW9uJykge1xuXHRcdFx0aWYgKF9TeW1i
b2wub2JzZXJ2YWJsZSkge1xuXHRcdFx0XHRyZXN1bHQgPSBfU3ltYm9sLm9ic2VydmFibGU7XG5c
dFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXN1bHQgPSBfU3ltYm9sKCdvYnNlcnZhYmxlJyk7XG5c
dFx0XHRcdF9TeW1ib2wub2JzZXJ2YWJsZSA9IHJlc3VsdDtcblx0XHRcdH1cblx0XHR9IGVsc2Ug
e1xuXHRcdFx0cmVzdWx0ID0gJ0BAb2JzZXJ2YWJsZSc7XG5cdFx0fVxuXHRcblx0XHRyZXR1cm4g
cmVzdWx0O1xuXHR9O1xuXG4vKioqLyB9LFxuLyogMjMxICovXG4vKioqLyBmdW5jdGlvbihtb2R1
bGUsIGV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18sIF9fd2VicGFja19tb2R1bGVfdGVtcGxh
dGVfYXJndW1lbnRfMF9fKSB7XG5cblx0LyoqXG5cdCAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG5cdCAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5cdCAqXG5cdCAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuXHQgKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcblx0ICogb2YgcGF0ZW50IHJpZ2h0
cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rvcnku
XG5cdCAqXG5cdCAqIFxuXHQgKi9cblx0XG5cdCd1c2Ugc3RyaWN0Jztcblx0XG5cdHZhciBfcHJv
ZEludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX21vZHVsZV90ZW1wbGF0
ZV9hcmd1bWVudF8wX18pO1xuXHRcblx0dmFyIGludmFyaWFudCA9IF9fd2VicGFja19yZXF1aXJl
X18oMSk7XG5cdFxuXHQvKipcblx0ICogU3RhdGljIHBvb2xlcnMuIFNldmVyYWwgY3VzdG9tIHZl
cnNpb25zIGZvciBlYWNoIHBvdGVudGlhbCBudW1iZXIgb2Zcblx0ICogYXJndW1lbnRzLiBBIGNv
bXBsZXRlbHkgZ2VuZXJpYyBwb29sZXIgaXMgZWFzeSB0byBpbXBsZW1lbnQsIGJ1dCB3b3VsZFxu
XHQgKiByZXF1aXJlIGFjY2Vzc2luZyB0aGUgYGFyZ3VtZW50c2Agb2JqZWN0LiBJbiBlYWNoIG9m
IHRoZXNlLCBgdGhpc2AgcmVmZXJzIHRvXG5cdCAqIHRoZSBDbGFzcyBpdHNlbGYsIG5vdCBhbiBp
bnN0YW5jZS4gSWYgYW55IG90aGVycyBhcmUgbmVlZGVkLCBzaW1wbHkgYWRkIHRoZW1cblx0ICog
aGVyZSwgb3IgaW4gdGhlaXIgb3duIGZpbGVzLlxuXHQgKi9cblx0dmFyIG9uZUFyZ3VtZW50UG9v
bGVyID0gZnVuY3Rpb24gKGNvcHlGaWVsZHNGcm9tKSB7XG5cdCAgdmFyIEtsYXNzID0gdGhpcztc
blx0ICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkge1xuXHQgICAgdmFyIGluc3RhbmNl
ID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpO1xuXHQgICAgS2xhc3MuY2FsbChpbnN0YW5jZSwg
Y29weUZpZWxkc0Zyb20pO1xuXHQgICAgcmV0dXJuIGluc3RhbmNlO1xuXHQgIH0gZWxzZSB7XG5c
dCAgICByZXR1cm4gbmV3IEtsYXNzKGNvcHlGaWVsZHNGcm9tKTtcblx0ICB9XG5cdH07XG5cdFxu
XHR2YXIgdHdvQXJndW1lbnRQb29sZXIgPSBmdW5jdGlvbiAoYTEsIGEyKSB7XG5cdCAgdmFyIEts
YXNzID0gdGhpcztcblx0ICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkge1xuXHQgICAg
dmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpO1xuXHQgICAgS2xhc3MuY2Fs
bChpbnN0YW5jZSwgYTEsIGEyKTtcblx0ICAgIHJldHVybiBpbnN0YW5jZTtcblx0ICB9IGVsc2Ug
e1xuXHQgICAgcmV0dXJuIG5ldyBLbGFzcyhhMSwgYTIpO1xuXHQgIH1cblx0fTtcblx0XG5cdHZh
ciB0aHJlZUFyZ3VtZW50UG9vbGVyID0gZnVuY3Rpb24gKGExLCBhMiwgYTMpIHtcblx0ICB2YXIg
S2xhc3MgPSB0aGlzO1xuXHQgIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7XG5cdCAg
ICB2YXIgaW5zdGFuY2UgPSBLbGFzcy5pbnN0YW5jZVBvb2wucG9wKCk7XG5cdCAgICBLbGFzcy5j
YWxsKGluc3RhbmNlLCBhMSwgYTIsIGEzKTtcblx0ICAgIHJldHVybiBpbnN0YW5jZTtcblx0ICB9
IGVsc2Uge1xuXHQgICAgcmV0dXJuIG5ldyBLbGFzcyhhMSwgYTIsIGEzKTtcblx0ICB9XG5cdH07
XG5cdFxuXHR2YXIgZm91ckFyZ3VtZW50UG9vbGVyID0gZnVuY3Rpb24gKGExLCBhMiwgYTMsIGE0
KSB7XG5cdCAgdmFyIEtsYXNzID0gdGhpcztcblx0ICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxl
bmd0aCkge1xuXHQgICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpO1xu
XHQgICAgS2xhc3MuY2FsbChpbnN0YW5jZSwgYTEsIGEyLCBhMywgYTQpO1xuXHQgICAgcmV0dXJu
IGluc3RhbmNlO1xuXHQgIH0gZWxzZSB7XG5cdCAgICByZXR1cm4gbmV3IEtsYXNzKGExLCBhMiwg
YTMsIGE0KTtcblx0ICB9XG5cdH07XG5cdFxuXHR2YXIgc3RhbmRhcmRSZWxlYXNlciA9IGZ1bmN0
aW9uIChpbnN0YW5jZSkge1xuXHQgIHZhciBLbGFzcyA9IHRoaXM7XG5cdCAgIShpbnN0YW5jZSBp
bnN0YW5jZW9mIEtsYXNzKSA/ICBmYWxzZSA/IGludmFyaWFudChmYWxzZSwgJ1RyeWluZyB0byBy
ZWxlYXNlIGFuIGluc3RhbmNlIGludG8gYSBwb29sIG9mIGEgZGlmZmVyZW50IHR5cGUuJykgOiBf
cHJvZEludmFyaWFudCgnMjUnKSA6IHZvaWQgMDtcblx0ICBpbnN0YW5jZS5kZXN0cnVjdG9yKCk7
XG5cdCAgaWYgKEtsYXNzLmluc3RhbmNlUG9vbC5sZW5ndGggPCBLbGFzcy5wb29sU2l6ZSkge1xu
XHQgICAgS2xhc3MuaW5zdGFuY2VQb29sLnB1c2goaW5zdGFuY2UpO1xuXHQgIH1cblx0fTtcblx0
XG5cdHZhciBERUZBVUxUX1BPT0xfU0laRSA9IDEwO1xuXHR2YXIgREVGQVVMVF9QT09MRVIgPSBv
bmVBcmd1bWVudFBvb2xlcjtcblx0XG5cdC8qKlxuXHQgKiBBdWdtZW50cyBgQ29weUNvbnN0cnVj
dG9yYCB0byBiZSBhIHBvb2xhYmxlIGNsYXNzLCBhdWdtZW50aW5nIG9ubHkgdGhlIGNsYXNzXG5c
dCAqIGl0c2VsZiAoc3RhdGljYWxseSkgbm90IGFkZGluZyBhbnkgcHJvdG90eXBpY2FsIGZpZWxk
cy4gQW55IENvcHlDb25zdHJ1Y3RvclxuXHQgKiB5b3UgZ2l2ZSB0aGlzIG1heSBoYXZlIGEgYHBv
b2xTaXplYCBwcm9wZXJ0eSwgYW5kIHdpbGwgbG9vayBmb3IgYVxuXHQgKiBwcm90b3R5cGljYWwg
YGRlc3RydWN0b3JgIG9uIGluc3RhbmNlcy5cblx0ICpcblx0ICogQHBhcmFtIHtGdW5jdGlvbn0g
Q29weUNvbnN0cnVjdG9yIENvbnN0cnVjdG9yIHRoYXQgY2FuIGJlIHVzZWQgdG8gcmVzZXQuXG5c
dCAqIEBwYXJhbSB7RnVuY3Rpb259IHBvb2xlciBDdXN0b21pemFibGUgcG9vbGVyLlxuXHQgKi9c
blx0dmFyIGFkZFBvb2xpbmdUbyA9IGZ1bmN0aW9uIChDb3B5Q29uc3RydWN0b3IsIHBvb2xlcikg
e1xuXHQgIC8vIENhc3RpbmcgYXMgYW55IHNvIHRoYXQgZmxvdyBpZ25vcmVzIHRoZSBhY3R1YWwg
aW1wbGVtZW50YXRpb24gYW5kIHRydXN0c1xuXHQgIC8vIGl0IHRvIG1hdGNoIHRoZSB0eXBlIHdl
IGRlY2xhcmVkXG5cdCAgdmFyIE5ld0tsYXNzID0gQ29weUNvbnN0cnVjdG9yO1xuXHQgIE5ld0ts
YXNzLmluc3RhbmNlUG9vbCA9IFtdO1xuXHQgIE5ld0tsYXNzLmdldFBvb2xlZCA9IHBvb2xlciB8
fCBERUZBVUxUX1BPT0xFUjtcblx0ICBpZiAoIU5ld0tsYXNzLnBvb2xTaXplKSB7XG5cdCAgICBO
ZXdLbGFzcy5wb29sU2l6ZSA9IERFRkFVTFRfUE9PTF9TSVpFO1xuXHQgIH1cblx0ICBOZXdLbGFz
cy5yZWxlYXNlID0gc3RhbmRhcmRSZWxlYXNlcjtcblx0ICByZXR1cm4gTmV3S2xhc3M7XG5cdH07
XG5cdFxuXHR2YXIgUG9vbGVkQ2xhc3MgPSB7XG5cdCAgYWRkUG9vbGluZ1RvOiBhZGRQb29saW5n
VG8sXG5cdCAgb25lQXJndW1lbnRQb29sZXI6IG9uZUFyZ3VtZW50UG9vbGVyLFxuXHQgIHR3b0Fy
Z3VtZW50UG9vbGVyOiB0d29Bcmd1bWVudFBvb2xlcixcblx0ICB0aHJlZUFyZ3VtZW50UG9vbGVy
OiB0aHJlZUFyZ3VtZW50UG9vbGVyLFxuXHQgIGZvdXJBcmd1bWVudFBvb2xlcjogZm91ckFyZ3Vt
ZW50UG9vbGVyXG5cdH07XG5cdFxuXHRtb2R1bGUuZXhwb3J0cyA9IFBvb2xlZENsYXNzO1xuXG4v
KioqLyB9XG4vKioqKioqLyBdKSkpO1xuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIHN0
YXRpYy9qcy9tYWluLjQzYTA5NDhjLmpzXG4gKiovIiwiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxu
IFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rp
b25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQv
LyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1tt
b2R1bGVJZF0pXG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9y
dHM7XG5cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBj
YWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xu
IFx0XHRcdGV4cG9ydHM6IHt9LFxuIFx0XHRcdGlkOiBtb2R1bGVJZCxcbiBcdFx0XHRsb2FkZWQ6
IGZhbHNlXG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4g
XHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxl
LmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVs
ZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmxvYWRlZCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJu
IHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xu
IFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1
bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBv
c2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVk
TW9kdWxlcztcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19y
ZXF1aXJlX18ucCA9IFwiLi9cIjtcblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVy
biBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXygwKTtcblxuXG5cbi8qKiBX
RUJQQUNLIEZPT1RFUiAqKlxuICoqIHdlYnBhY2svYm9vdHN0cmFwIDZhM2E2ODA3ZTEyZDE1N2U2
OTBjXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0
cmljdCc7XG5cbi8qKlxuICogVXNlIGludmFyaWFudCgpIHRvIGFzc2VydCBzdGF0ZSB3aGljaCB5
b3VyIHByb2dyYW0gYXNzdW1lcyB0byBiZSB0cnVlLlxuICpcbiAqIFByb3ZpZGUgc3ByaW50Zi1z
dHlsZSBmb3JtYXQgKG9ubHkgJXMgaXMgc3VwcG9ydGVkKSBhbmQgYXJndW1lbnRzXG4gKiB0byBw
cm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgYnJva2UgYW5kIHdoYXQgeW91IHdlcmVcbiAq
IGV4cGVjdGluZy5cbiAqXG4gKiBUaGUgaW52YXJpYW50IG1lc3NhZ2Ugd2lsbCBiZSBzdHJpcHBl
ZCBpbiBwcm9kdWN0aW9uLCBidXQgdGhlIGludmFyaWFudFxuICogd2lsbCByZW1haW4gdG8gZW5z
dXJlIGxvZ2ljIGRvZXMgbm90IGRpZmZlciBpbiBwcm9kdWN0aW9uLlxuICovXG5cbnZhciB2YWxp
ZGF0ZUZvcm1hdCA9IGZ1bmN0aW9uIHZhbGlkYXRlRm9ybWF0KGZvcm1hdCkge307XG5cbmlmIChw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhbGlkYXRlRm9ybWF0
ID0gZnVuY3Rpb24gdmFsaWRhdGVGb3JtYXQoZm9ybWF0KSB7XG4gICAgaWYgKGZvcm1hdCA9PT0g
dW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2ludmFyaWFudCByZXF1aXJlcyBh
biBlcnJvciBtZXNzYWdlIGFyZ3VtZW50Jyk7XG4gICAgfVxuICB9O1xufVxuXG5mdW5jdGlvbiBp
bnZhcmlhbnQoY29uZGl0aW9uLCBmb3JtYXQsIGEsIGIsIGMsIGQsIGUsIGYpIHtcbiAgdmFsaWRh
dGVGb3JtYXQoZm9ybWF0KTtcblxuICBpZiAoIWNvbmRpdGlvbikge1xuICAgIHZhciBlcnJvcjtc
biAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGVycm9yID0gbmV3IEVycm9y
KCdNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBl
bnZpcm9ubWVudCAnICsgJ2ZvciB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFs
IGhlbHBmdWwgd2FybmluZ3MuJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBhcmdzID0gW2Es
IGIsIGMsIGQsIGUsIGZdO1xuICAgICAgdmFyIGFyZ0luZGV4ID0gMDtcbiAgICAgIGVycm9yID0g
bmV3IEVycm9yKGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJl
dHVybiBhcmdzW2FyZ0luZGV4KytdO1xuICAgICAgfSkpO1xuICAgICAgZXJyb3IubmFtZSA9ICdJ
bnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB9XG5cbiAgICBlcnJvci5mcmFtZXNUb1BvcCA9IDE7
IC8vIHdlIGRvbid0IGNhcmUgYWJvdXQgaW52YXJpYW50J3Mgb3duIGZyYW1lXG4gICAgdGhyb3cg
ZXJyb3I7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbnZhcmlhbnQ7XG5cblxuLyoqKioq
KioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vZmJqcy9saWIvaW52YXJp
YW50LmpzXG4gKiogbW9kdWxlIGlkID0gMVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwi
LyoqXG4gKiBDb3B5cmlnaHQgMjAxNC0yMDE1LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0
cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxu
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGVtcHR5
RnVuY3Rpb24gPSByZXF1aXJlKCcuL2VtcHR5RnVuY3Rpb24nKTtcblxuLyoqXG4gKiBTaW1pbGFy
IHRvIGludmFyaWFudCBidXQgb25seSBsb2dzIGEgd2FybmluZyBpZiB0aGUgY29uZGl0aW9uIGlz
IG5vdCBtZXQuXG4gKiBUaGlzIGNhbiBiZSB1c2VkIHRvIGxvZyBpc3N1ZXMgaW4gZGV2ZWxvcG1l
bnQgZW52aXJvbm1lbnRzIGluIGNyaXRpY2FsXG4gKiBwYXRocy4gUmVtb3ZpbmcgdGhlIGxvZ2dp
bmcgY29kZSBmb3IgcHJvZHVjdGlvbiBlbnZpcm9ubWVudHMgd2lsbCBrZWVwIHRoZVxuICogc2Ft
ZSBsb2dpYyBhbmQgZm9sbG93IHRoZSBzYW1lIGNvZGUgcGF0aHMuXG4gKi9cblxudmFyIHdhcm5p
bmcgPSBlbXB0eUZ1bmN0aW9uO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJykge1xuICB2YXIgcHJpbnRXYXJuaW5nID0gZnVuY3Rpb24gcHJpbnRXYXJuaW5nKGZv
cm1hdCkge1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gQXJy
YXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkr
Kykge1xuICAgICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4g
ICAgdmFyIGFyZ0luZGV4ID0gMDtcbiAgICB2YXIgbWVzc2FnZSA9ICdXYXJuaW5nOiAnICsgZm9y
bWF0LnJlcGxhY2UoLyVzL2csIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBhcmdzW2FyZ0lu
ZGV4KytdO1xuICAgIH0pO1xuICAgIGlmICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcp
IHtcbiAgICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAg
ICAvLyAtLS0gV2VsY29tZSB0byBkZWJ1Z2dpbmcgUmVhY3QgLS0tXG4gICAgICAvLyBUaGlzIGVy
cm9yIHdhcyB0aHJvd24gYXMgYSBjb252ZW5pZW5jZSBzbyB0aGF0IHlvdSBjYW4gdXNlIHRoaXMg
c3RhY2tcbiAgICAgIC8vIHRvIGZpbmQgdGhlIGNhbGxzaXRlIHRoYXQgY2F1c2VkIHRoaXMgd2Fy
bmluZyB0byBmaXJlLlxuICAgICAgdGhyb3cgbmV3IEVycm9yKG1lc3NhZ2UpO1xuICAgIH0gY2F0
Y2ggKHgpIHt9XG4gIH07XG5cbiAgd2FybmluZyA9IGZ1bmN0aW9uIHdhcm5pbmcoY29uZGl0aW9u
LCBmb3JtYXQpIHtcbiAgICBpZiAoZm9ybWF0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93
IG5ldyBFcnJvcignYHdhcm5pbmcoY29uZGl0aW9uLCBmb3JtYXQsIC4uLmFyZ3MpYCByZXF1aXJl
cyBhIHdhcm5pbmcgJyArICdtZXNzYWdlIGFyZ3VtZW50Jyk7XG4gICAgfVxuXG4gICAgaWYgKGZv
cm1hdC5pbmRleE9mKCdGYWlsZWQgQ29tcG9zaXRlIHByb3BUeXBlOiAnKSA9PT0gMCkge1xuICAg
ICAgcmV0dXJuOyAvLyBJZ25vcmUgQ29tcG9zaXRlQ29tcG9uZW50IHByb3B0eXBlIGNoZWNrLlxu
ICAgIH1cblxuICAgIGlmICghY29uZGl0aW9uKSB7XG4gICAgICBmb3IgKHZhciBfbGVuMiA9IGFy
Z3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuMiA+IDIgPyBfbGVuMiAtIDIgOiAwKSwg
X2tleTIgPSAyOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICAgIGFyZ3NbX2tleTIg
LSAyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgICB9XG5cbiAgICAgIHByaW50V2FybmluZy5h
cHBseSh1bmRlZmluZWQsIFtmb3JtYXRdLmNvbmNhdChhcmdzKSk7XG4gICAgfVxuICB9O1xufVxu
XG5tb2R1bGUuZXhwb3J0cyA9IHdhcm5pbmc7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiog
V0VCUEFDSyBGT09URVJcbiAqKiAuL34vZmJqcy9saWIvd2FybmluZy5qc1xuICoqIG1vZHVsZSBp
ZCA9IDJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IChj
KSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxu
ICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cbiAqXG4gKiBcbiAqL1xuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIFdBUk5JTkc6IERP
IE5PVCBtYW51YWxseSByZXF1aXJlIHRoaXMgbW9kdWxlLlxuICogVGhpcyBpcyBhIHJlcGxhY2Vt
ZW50IGZvciBgaW52YXJpYW50KC4uLilgIHVzZWQgYnkgdGhlIGVycm9yIGNvZGUgc3lzdGVtXG4g
KiBhbmQgd2lsbCBfb25seV8gYmUgcmVxdWlyZWQgYnkgdGhlIGNvcnJlc3BvbmRpbmcgYmFiZWwg
cGFzcy5cbiAqIEl0IGFsd2F5cyB0aHJvd3MuXG4gKi9cblxuZnVuY3Rpb24gcmVhY3RQcm9kSW52
YXJpYW50KGNvZGUpIHtcbiAgdmFyIGFyZ0NvdW50ID0gYXJndW1lbnRzLmxlbmd0aCAtIDE7XG5c
biAgdmFyIG1lc3NhZ2UgPSAnTWluaWZpZWQgUmVhY3QgZXJyb3IgIycgKyBjb2RlICsgJzsgdmlz
aXQgJyArICdodHRwOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvZXJyb3ItZGVjb2Rl
ci5odG1sP2ludmFyaWFudD0nICsgY29kZTtcblxuICBmb3IgKHZhciBhcmdJZHggPSAwOyBhcmdJ
ZHggPCBhcmdDb3VudDsgYXJnSWR4KyspIHtcbiAgICBtZXNzYWdlICs9ICcmYXJnc1tdPScgKyBl
bmNvZGVVUklDb21wb25lbnQoYXJndW1lbnRzW2FyZ0lkeCArIDFdKTtcbiAgfVxuXG4gIG1lc3Nh
Z2UgKz0gJyBmb3IgdGhlIGZ1bGwgbWVzc2FnZSBvciB1c2UgdGhlIG5vbi1taW5pZmllZCBkZXYg
ZW52aXJvbm1lbnQnICsgJyBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3
YXJuaW5ncy4nO1xuXG4gIHZhciBlcnJvciA9IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgZXJyb3Iu
bmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgZXJyb3IuZnJhbWVzVG9Qb3AgPSAxOyAv
LyB3ZSBkb24ndCBjYXJlIGFib3V0IHJlYWN0UHJvZEludmFyaWFudCdzIG93biBmcmFtZVxuXG4g
IHRocm93IGVycm9yO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHJlYWN0UHJvZEludmFyaWFudDtc
blxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFj
dC1kb20vbGliL3JlYWN0UHJvZEludmFyaWFudC5qc1xuICoqIG1vZHVsZSBpZCA9IDNcbiAqKiBt
b2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qXG5vYmplY3QtYXNzaWduXG4oYykgU2luZHJlIFNv
cmh1c1xuQGxpY2Vuc2UgTUlUXG4qL1xuXG4ndXNlIHN0cmljdCc7XG4vKiBlc2xpbnQtZGlzYWJs
ZSBuby11bnVzZWQtdmFycyAqL1xudmFyIGdldE93blByb3BlcnR5U3ltYm9scyA9IE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eVN5bWJvbHM7XG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90
eXBlLmhhc093blByb3BlcnR5O1xudmFyIHByb3BJc0VudW1lcmFibGUgPSBPYmplY3QucHJvdG90
eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG5mdW5jdGlvbiB0b09iamVjdCh2YWwpIHtcblx0
aWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVuZGVmaW5lZCkge1xuXHRcdHRocm93IG5ldyBU
eXBlRXJyb3IoJ09iamVjdC5hc3NpZ24gY2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5k
ZWZpbmVkJyk7XG5cdH1cblxuXHRyZXR1cm4gT2JqZWN0KHZhbCk7XG59XG5cbmZ1bmN0aW9uIHNo
b3VsZFVzZU5hdGl2ZSgpIHtcblx0dHJ5IHtcblx0XHRpZiAoIU9iamVjdC5hc3NpZ24pIHtcblx0
XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBEZXRlY3QgYnVnZ3kgcHJvcGVydHkg
ZW51bWVyYXRpb24gb3JkZXIgaW4gb2xkZXIgVjggdmVyc2lvbnMuXG5cblx0XHQvLyBodHRwczov
L2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9pZD00MTE4XG5cdFx0dmFyIHRl
c3QxID0gbmV3IFN0cmluZygnYWJjJyk7ICAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLW5ldy13
cmFwcGVyc1xuXHRcdHRlc3QxWzVdID0gJ2RlJztcblx0XHRpZiAoT2JqZWN0LmdldE93blByb3Bl
cnR5TmFtZXModGVzdDEpWzBdID09PSAnNScpIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9
XG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVzL2RldGFpbD9p
ZD0zMDU2XG5cdFx0dmFyIHRlc3QyID0ge307XG5cdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCAxMDsg
aSsrKSB7XG5cdFx0XHR0ZXN0MlsnXycgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGkpXSA9IGk7XG5c
dFx0fVxuXHRcdHZhciBvcmRlcjIgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0Miku
bWFwKGZ1bmN0aW9uIChuKSB7XG5cdFx0XHRyZXR1cm4gdGVzdDJbbl07XG5cdFx0fSk7XG5cdFx0
aWYgKG9yZGVyMi5qb2luKCcnKSAhPT0gJzAxMjM0NTY3ODknKSB7XG5cdFx0XHRyZXR1cm4gZmFs
c2U7XG5cdFx0fVxuXG5cdFx0Ly8gaHR0cHM6Ly9idWdzLmNocm9taXVtLm9yZy9wL3Y4L2lzc3Vl
cy9kZXRhaWw/aWQ9MzA1NlxuXHRcdHZhciB0ZXN0MyA9IHt9O1xuXHRcdCdhYmNkZWZnaGlqa2xt
bm9wcXJzdCcuc3BsaXQoJycpLmZvckVhY2goZnVuY3Rpb24gKGxldHRlcikge1xuXHRcdFx0dGVz
dDNbbGV0dGVyXSA9IGxldHRlcjtcblx0XHR9KTtcblx0XHRpZiAoT2JqZWN0LmtleXMoT2JqZWN0
LmFzc2lnbih7fSwgdGVzdDMpKS5qb2luKCcnKSAhPT1cblx0XHRcdFx0J2FiY2RlZmdoaWprbG1u
b3BxcnN0Jykge1xuXHRcdFx0cmV0dXJuIGZhbHNlO1xuXHRcdH1cblxuXHRcdHJldHVybiB0cnVl
O1xuXHR9IGNhdGNoIChlcnIpIHtcblx0XHQvLyBXZSBkb24ndCBleHBlY3QgYW55IG9mIHRoZSBh
Ym92ZSB0byB0aHJvdywgYnV0IGJldHRlciB0byBiZSBzYWZlLlxuXHRcdHJldHVybiBmYWxzZTtc
blx0fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNob3VsZFVzZU5hdGl2ZSgpID8gT2JqZWN0LmFz
c2lnbiA6IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSkge1xuXHR2YXIgZnJvbTtcblx0dmFyIHRv
ID0gdG9PYmplY3QodGFyZ2V0KTtcblx0dmFyIHN5bWJvbHM7XG5cblx0Zm9yICh2YXIgcyA9IDE7
IHMgPCBhcmd1bWVudHMubGVuZ3RoOyBzKyspIHtcblx0XHRmcm9tID0gT2JqZWN0KGFyZ3VtZW50
c1tzXSk7XG5cblx0XHRmb3IgKHZhciBrZXkgaW4gZnJvbSkge1xuXHRcdFx0aWYgKGhhc093blBy
b3BlcnR5LmNhbGwoZnJvbSwga2V5KSkge1xuXHRcdFx0XHR0b1trZXldID0gZnJvbVtrZXldO1xu
XHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChnZXRPd25Qcm9wZXJ0eVN5bWJvbHMpIHtcblx0XHRc
dHN5bWJvbHMgPSBnZXRPd25Qcm9wZXJ0eVN5bWJvbHMoZnJvbSk7XG5cdFx0XHRmb3IgKHZhciBp
ID0gMDsgaSA8IHN5bWJvbHMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0aWYgKHByb3BJc0VudW1l
cmFibGUuY2FsbChmcm9tLCBzeW1ib2xzW2ldKSkge1xuXHRcdFx0XHRcdHRvW3N5bWJvbHNbaV1d
ID0gZnJvbVtzeW1ib2xzW2ldXTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5c
dHJldHVybiB0bztcbn07XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZP
T1RFUlxuICoqIC4vfi9vYmplY3QtYXNzaWduL2luZGV4LmpzXG4gKiogbW9kdWxlIGlkID0gNFxu
ICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxu
ICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9y
ZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFyIERPTVByb3BlcnR5ID0gcmVxdWlyZSgnLi9ET01Q
cm9wZXJ0eScpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50RmxhZ3MgPSByZXF1aXJlKCcuL1JlYWN0
RE9NQ29tcG9uZW50RmxhZ3MnKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGli
L2ludmFyaWFudCcpO1xuXG52YXIgQVRUUl9OQU1FID0gRE9NUHJvcGVydHkuSURfQVRUUklCVVRF
X05BTUU7XG52YXIgRmxhZ3MgPSBSZWFjdERPTUNvbXBvbmVudEZsYWdzO1xuXG52YXIgaW50ZXJu
YWxJbnN0YW5jZUtleSA9ICdfX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSQnICsgTWF0aC5yYW5kb20o
KS50b1N0cmluZygzNikuc2xpY2UoMik7XG5cbi8qKlxuICogQ2hlY2sgaWYgYSBnaXZlbiBub2Rl
IHNob3VsZCBiZSBjYWNoZWQuXG4gKi9cbmZ1bmN0aW9uIHNob3VsZFByZWNhY2hlTm9kZShub2Rl
LCBub2RlSUQpIHtcbiAgcmV0dXJuIG5vZGUubm9kZVR5cGUgPT09IDEgJiYgbm9kZS5nZXRBdHRy
aWJ1dGUoQVRUUl9OQU1FKSA9PT0gU3RyaW5nKG5vZGVJRCkgfHwgbm9kZS5ub2RlVHlwZSA9PT0g
OCAmJiBub2RlLm5vZGVWYWx1ZSA9PT0gJyByZWFjdC10ZXh0OiAnICsgbm9kZUlEICsgJyAnIHx8
IG5vZGUubm9kZVR5cGUgPT09IDggJiYgbm9kZS5ub2RlVmFsdWUgPT09ICcgcmVhY3QtZW1wdHk6
ICcgKyBub2RlSUQgKyAnICc7XG59XG5cbi8qKlxuICogRHJpbGwgZG93biAodGhyb3VnaCBjb21w
b3NpdGVzIGFuZCBlbXB0eSBjb21wb25lbnRzKSB1bnRpbCB3ZSBnZXQgYSBob3N0IG9yXG4gKiBo
b3N0IHRleHQgY29tcG9uZW50LlxuICpcbiAqIFRoaXMgaXMgcHJldHR5IHBvbHltb3JwaGljIGJ1
dCB1bmF2b2lkYWJsZSB3aXRoIHRoZSBjdXJyZW50IHN0cnVjdHVyZSB3ZSBoYXZlXG4gKiBmb3Ig
YF9yZW5kZXJlZENoaWxkcmVuYC5cbiAqL1xuZnVuY3Rpb24gZ2V0UmVuZGVyZWRIb3N0T3JUZXh0
RnJvbUNvbXBvbmVudChjb21wb25lbnQpIHtcbiAgdmFyIHJlbmRlcmVkO1xuICB3aGlsZSAocmVu
ZGVyZWQgPSBjb21wb25lbnQuX3JlbmRlcmVkQ29tcG9uZW50KSB7XG4gICAgY29tcG9uZW50ID0g
cmVuZGVyZWQ7XG4gIH1cbiAgcmV0dXJuIGNvbXBvbmVudDtcbn1cblxuLyoqXG4gKiBQb3B1bGF0
ZSBgX2hvc3ROb2RlYCBvbiB0aGUgcmVuZGVyZWQgaG9zdC90ZXh0IGNvbXBvbmVudCB3aXRoIHRo
ZSBnaXZlblxuICogRE9NIG5vZGUuIFRoZSBwYXNzZWQgYGluc3RgIGNhbiBiZSBhIGNvbXBvc2l0
ZS5cbiAqL1xuZnVuY3Rpb24gcHJlY2FjaGVOb2RlKGluc3QsIG5vZGUpIHtcbiAgdmFyIGhvc3RJ
bnN0ID0gZ2V0UmVuZGVyZWRIb3N0T3JUZXh0RnJvbUNvbXBvbmVudChpbnN0KTtcbiAgaG9zdElu
c3QuX2hvc3ROb2RlID0gbm9kZTtcbiAgbm9kZVtpbnRlcm5hbEluc3RhbmNlS2V5XSA9IGhvc3RJ
bnN0O1xufVxuXG5mdW5jdGlvbiB1bmNhY2hlTm9kZShpbnN0KSB7XG4gIHZhciBub2RlID0gaW5z
dC5faG9zdE5vZGU7XG4gIGlmIChub2RlKSB7XG4gICAgZGVsZXRlIG5vZGVbaW50ZXJuYWxJbnN0
YW5jZUtleV07XG4gICAgaW5zdC5faG9zdE5vZGUgPSBudWxsO1xuICB9XG59XG5cbi8qKlxuICog
UG9wdWxhdGUgYF9ob3N0Tm9kZWAgb24gZWFjaCBjaGlsZCBvZiBgaW5zdGAsIGFzc3VtaW5nIHRo
YXQgdGhlIGNoaWxkcmVuXG4gKiBtYXRjaCB1cCB3aXRoIHRoZSBET00gKGVsZW1lbnQpIGNoaWxk
cmVuIG9mIGBub2RlYC5cbiAqXG4gKiBXZSBjYWNoZSBlbnRpcmUgbGV2ZWxzIGF0IG9uY2UgdG8g
YXZvaWQgYW4gbl4yIHByb2JsZW0gd2hlcmUgd2UgYWNjZXNzIHRoZVxuICogY2hpbGRyZW4gb2Yg
YSBub2RlIHNlcXVlbnRpYWxseSBhbmQgaGF2ZSB0byB3YWxrIGZyb20gdGhlIHN0YXJ0IHRvIG91
ciB0YXJnZXRcbiAqIG5vZGUgZXZlcnkgdGltZS5cbiAqXG4gKiBTaW5jZSB3ZSB1cGRhdGUgYF9y
ZW5kZXJlZENoaWxkcmVuYCBhbmQgdGhlIGFjdHVhbCBET00gYXQgKHNsaWdodGx5KVxuICogZGlm
ZmVyZW50IHRpbWVzLCB3ZSBjb3VsZCByYWNlIGhlcmUgYW5kIHNlZSBhIG5ld2VyIGBfcmVuZGVy
ZWRDaGlsZHJlbmAgdGhhblxuICogdGhlIERPTSBub2RlcyB3ZSBzZWUuIFRvIGF2b2lkIHRoaXMs
IFJlYWN0TXVsdGlDaGlsZCBjYWxsc1xuICogYHByZXBhcmVUb01hbmFnZUNoaWxkcmVuYCBiZWZv
cmUgd2UgY2hhbmdlIGBfcmVuZGVyZWRDaGlsZHJlbmAsIGF0IHdoaWNoXG4gKiB0aW1lIHRoZSBj
b250YWluZXIncyBjaGlsZCBub2RlcyBhcmUgYWx3YXlzIGNhY2hlZCAodW50aWwgaXQgdW5tb3Vu
dHMpLlxuICovXG5mdW5jdGlvbiBwcmVjYWNoZUNoaWxkTm9kZXMoaW5zdCwgbm9kZSkge1xuICBp
ZiAoaW5zdC5fZmxhZ3MgJiBGbGFncy5oYXNDYWNoZWRDaGlsZE5vZGVzKSB7XG4gICAgcmV0dXJu
O1xuICB9XG4gIHZhciBjaGlsZHJlbiA9IGluc3QuX3JlbmRlcmVkQ2hpbGRyZW47XG4gIHZhciBj
aGlsZE5vZGUgPSBub2RlLmZpcnN0Q2hpbGQ7XG4gIG91dGVyOiBmb3IgKHZhciBuYW1lIGluIGNo
aWxkcmVuKSB7XG4gICAgaWYgKCFjaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAg
ICAgY29udGludWU7XG4gICAgfVxuICAgIHZhciBjaGlsZEluc3QgPSBjaGlsZHJlbltuYW1lXTtc
biAgICB2YXIgY2hpbGRJRCA9IGdldFJlbmRlcmVkSG9zdE9yVGV4dEZyb21Db21wb25lbnQoY2hp
bGRJbnN0KS5fZG9tSUQ7XG4gICAgaWYgKGNoaWxkSUQgPT09IDApIHtcbiAgICAgIC8vIFdlJ3Jl
IGN1cnJlbnRseSB1bm1vdW50aW5nIHRoaXMgY2hpbGQgaW4gUmVhY3RNdWx0aUNoaWxkOyBza2lw
IGl0LlxuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIC8vIFdlIGFzc3VtZSB0aGUgY2hpbGQg
bm9kZXMgYXJlIGluIHRoZSBzYW1lIG9yZGVyIGFzIHRoZSBjaGlsZCBpbnN0YW5jZXMuXG4gICAg
Zm9yICg7IGNoaWxkTm9kZSAhPT0gbnVsbDsgY2hpbGROb2RlID0gY2hpbGROb2RlLm5leHRTaWJs
aW5nKSB7XG4gICAgICBpZiAoc2hvdWxkUHJlY2FjaGVOb2RlKGNoaWxkTm9kZSwgY2hpbGRJRCkp
IHtcbiAgICAgICAgcHJlY2FjaGVOb2RlKGNoaWxkSW5zdCwgY2hpbGROb2RlKTtcbiAgICAgICAg
Y29udGludWUgb3V0ZXI7XG4gICAgICB9XG4gICAgfVxuICAgIC8vIFdlIHJlYWNoZWQgdGhlIGVu
ZCBvZiB0aGUgRE9NIGNoaWxkcmVuIHdpdGhvdXQgZmluZGluZyBhbiBJRCBtYXRjaC5cbiAgICAh
ZmFsc2UgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAnVW5hYmxlIHRvIGZpbmQgZWxlbWVudCB3aXRoIElEICVzLicsIGNoaWxkSUQpIDog
X3Byb2RJbnZhcmlhbnQoJzMyJywgY2hpbGRJRCkgOiB2b2lkIDA7XG4gIH1cbiAgaW5zdC5fZmxh
Z3MgfD0gRmxhZ3MuaGFzQ2FjaGVkQ2hpbGROb2Rlcztcbn1cblxuLyoqXG4gKiBHaXZlbiBhIERP
TSBub2RlLCByZXR1cm4gdGhlIGNsb3Nlc3QgUmVhY3RET01Db21wb25lbnQgb3JcbiAqIFJlYWN0
RE9NVGV4dENvbXBvbmVudCBpbnN0YW5jZSBhbmNlc3Rvci5cbiAqL1xuZnVuY3Rpb24gZ2V0Q2xv
c2VzdEluc3RhbmNlRnJvbU5vZGUobm9kZSkge1xuICBpZiAobm9kZVtpbnRlcm5hbEluc3RhbmNl
S2V5XSkge1xuICAgIHJldHVybiBub2RlW2ludGVybmFsSW5zdGFuY2VLZXldO1xuICB9XG5cbiAg
Ly8gV2FsayB1cCB0aGUgdHJlZSB1bnRpbCB3ZSBmaW5kIGFuIGFuY2VzdG9yIHdob3NlIGluc3Rh
bmNlIHdlIGhhdmUgY2FjaGVkLlxuICB2YXIgcGFyZW50cyA9IFtdO1xuICB3aGlsZSAoIW5vZGVb
aW50ZXJuYWxJbnN0YW5jZUtleV0pIHtcbiAgICBwYXJlbnRzLnB1c2gobm9kZSk7XG4gICAgaWYg
KG5vZGUucGFyZW50Tm9kZSkge1xuICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICB9
IGVsc2Uge1xuICAgICAgLy8gVG9wIG9mIHRoZSB0cmVlLiBUaGlzIG5vZGUgbXVzdCBub3QgYmUg
cGFydCBvZiBhIFJlYWN0IHRyZWUgKG9yIGlzXG4gICAgICAvLyB1bm1vdW50ZWQsIHBvdGVudGlh
bGx5KS5cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHZhciBjbG9zZXN0O1xu
ICB2YXIgaW5zdDtcbiAgZm9yICg7IG5vZGUgJiYgKGluc3QgPSBub2RlW2ludGVybmFsSW5zdGFu
Y2VLZXldKTsgbm9kZSA9IHBhcmVudHMucG9wKCkpIHtcbiAgICBjbG9zZXN0ID0gaW5zdDtcbiAg
ICBpZiAocGFyZW50cy5sZW5ndGgpIHtcbiAgICAgIHByZWNhY2hlQ2hpbGROb2RlcyhpbnN0LCBu
b2RlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2xvc2VzdDtcbn1cblxuLyoqXG4gKiBHaXZl
biBhIERPTSBub2RlLCByZXR1cm4gdGhlIFJlYWN0RE9NQ29tcG9uZW50IG9yIFJlYWN0RE9NVGV4
dENvbXBvbmVudFxuICogaW5zdGFuY2UsIG9yIG51bGwgaWYgdGhlIG5vZGUgd2FzIG5vdCByZW5k
ZXJlZCBieSB0aGlzIFJlYWN0LlxuICovXG5mdW5jdGlvbiBnZXRJbnN0YW5jZUZyb21Ob2RlKG5v
ZGUpIHtcbiAgdmFyIGluc3QgPSBnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZShub2RlKTtcbiAg
aWYgKGluc3QgIT0gbnVsbCAmJiBpbnN0Ll9ob3N0Tm9kZSA9PT0gbm9kZSkge1xuICAgIHJldHVy
biBpbnN0O1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBudWxsO1xuICB9XG59XG5cbi8qKlxuICog
R2l2ZW4gYSBSZWFjdERPTUNvbXBvbmVudCBvciBSZWFjdERPTVRleHRDb21wb25lbnQsIHJldHVy
biB0aGUgY29ycmVzcG9uZGluZ1xuICogRE9NIG5vZGUuXG4gKi9cbmZ1bmN0aW9uIGdldE5vZGVG
cm9tSW5zdGFuY2UoaW5zdCkge1xuICAvLyBXaXRob3V0IHRoaXMgZmlyc3QgaW52YXJpYW50LCBw
YXNzaW5nIGEgbm9uLURPTS1jb21wb25lbnQgdHJpZ2dlcnMgdGhlIG5leHRcbiAgLy8gaW52YXJp
YW50IGZvciBhIG1pc3NpbmcgcGFyZW50LCB3aGljaCBpcyBzdXBlciBjb25mdXNpbmcuXG4gICEo
aW5zdC5faG9zdE5vZGUgIT09IHVuZGVmaW5lZCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZ2V0Tm9kZUZyb21JbnN0YW5jZTogSW52
YWxpZCBhcmd1bWVudC4nKSA6IF9wcm9kSW52YXJpYW50KCczMycpIDogdm9pZCAwO1xuXG4gIGlm
IChpbnN0Ll9ob3N0Tm9kZSkge1xuICAgIHJldHVybiBpbnN0Ll9ob3N0Tm9kZTtcbiAgfVxuXG4g
IC8vIFdhbGsgdXAgdGhlIHRyZWUgdW50aWwgd2UgZmluZCBhbiBhbmNlc3RvciB3aG9zZSBET00g
bm9kZSB3ZSBoYXZlIGNhY2hlZC5cbiAgdmFyIHBhcmVudHMgPSBbXTtcbiAgd2hpbGUgKCFpbnN0
Ll9ob3N0Tm9kZSkge1xuICAgIHBhcmVudHMucHVzaChpbnN0KTtcbiAgICAhaW5zdC5faG9zdFBh
cmVudCA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQo
ZmFsc2UsICdSZWFjdCBET00gdHJlZSByb290IHNob3VsZCBhbHdheXMgaGF2ZSBhIG5vZGUgcmVm
ZXJlbmNlLicpIDogX3Byb2RJbnZhcmlhbnQoJzM0JykgOiB2b2lkIDA7XG4gICAgaW5zdCA9IGlu
c3QuX2hvc3RQYXJlbnQ7XG4gIH1cblxuICAvLyBOb3cgcGFyZW50cyBjb250YWlucyBlYWNoIGFu
Y2VzdG9yIHRoYXQgZG9lcyAqbm90KiBoYXZlIGEgY2FjaGVkIG5hdGl2ZVxuICAvLyBub2RlLCBh
bmQgYGluc3RgIGlzIHRoZSBkZWVwZXN0IGFuY2VzdG9yIHRoYXQgZG9lcy5cbiAgZm9yICg7IHBh
cmVudHMubGVuZ3RoOyBpbnN0ID0gcGFyZW50cy5wb3AoKSkge1xuICAgIHByZWNhY2hlQ2hpbGRO
b2RlcyhpbnN0LCBpbnN0Ll9ob3N0Tm9kZSk7XG4gIH1cblxuICByZXR1cm4gaW5zdC5faG9zdE5v
ZGU7XG59XG5cbnZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSB7XG4gIGdldENsb3Nlc3RJbnN0
YW5jZUZyb21Ob2RlOiBnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZSxcbiAgZ2V0SW5zdGFuY2VG
cm9tTm9kZTogZ2V0SW5zdGFuY2VGcm9tTm9kZSxcbiAgZ2V0Tm9kZUZyb21JbnN0YW5jZTogZ2V0
Tm9kZUZyb21JbnN0YW5jZSxcbiAgcHJlY2FjaGVDaGlsZE5vZGVzOiBwcmVjYWNoZUNoaWxkTm9k
ZXMsXG4gIHByZWNhY2hlTm9kZTogcHJlY2FjaGVOb2RlLFxuICB1bmNhY2hlTm9kZTogdW5jYWNo
ZU5vZGVcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01Db21wb25lbnRUcmVlO1xuXG5c
bi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRv
bS9saWIvUmVhY3RET01Db21wb25lbnRUcmVlLmpzXG4gKiogbW9kdWxlIGlkID0gNVxuICoqIG1v
ZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAq
L1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBjYW5Vc2VET00gPSAhISh0eXBlb2Ygd2luZG93ICE9
PSAndW5kZWZpbmVkJyAmJiB3aW5kb3cuZG9jdW1lbnQgJiYgd2luZG93LmRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQpO1xuXG4vKipcbiAqIFNpbXBsZSwgbGlnaHR3ZWlnaHQgbW9kdWxlIGFzc2lzdGlu
ZyB3aXRoIHRoZSBkZXRlY3Rpb24gYW5kIGNvbnRleHQgb2ZcbiAqIFdvcmtlci4gSGVscHMgYXZv
aWQgY2lyY3VsYXIgZGVwZW5kZW5jaWVzIGFuZCBhbGxvd3MgY29kZSB0byByZWFzb24gYWJvdXRc
biAqIHdoZXRoZXIgb3Igbm90IHRoZXkgYXJlIGluIGEgV29ya2VyLCBldmVuIGlmIHRoZXkgbmV2
ZXIgaW5jbHVkZSB0aGUgbWFpblxuICogYFJlYWN0V29ya2VyYCBkZXBlbmRlbmN5LlxuICovXG52
YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSB7XG5cbiAgY2FuVXNlRE9NOiBjYW5Vc2VET00sXG5c
biAgY2FuVXNlV29ya2VyczogdHlwZW9mIFdvcmtlciAhPT0gJ3VuZGVmaW5lZCcsXG5cbiAgY2Fu
VXNlRXZlbnRMaXN0ZW5lcnM6IGNhblVzZURPTSAmJiAhISh3aW5kb3cuYWRkRXZlbnRMaXN0ZW5l
ciB8fCB3aW5kb3cuYXR0YWNoRXZlbnQpLFxuXG4gIGNhblVzZVZpZXdwb3J0OiBjYW5Vc2VET00g
JiYgISF3aW5kb3cuc2NyZWVuLFxuXG4gIGlzSW5Xb3JrZXI6ICFjYW5Vc2VET00gLy8gRm9yIG5v
dywgdGhpcyBpcyB0cnVlIC0gbWlnaHQgY2hhbmdlIGluIHRoZSBmdXR1cmUuXG5cbn07XG5cbm1v
ZHVsZS5leHBvcnRzID0gRXhlY3V0aW9uRW52aXJvbm1lbnQ7XG5cblxuLyoqKioqKioqKioqKioq
KioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vZmJqcy9saWIvRXhlY3V0aW9uRW52aXJv
bm1lbnQuanNcbiAqKiBtb2R1bGUgaWQgPSA2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8i
LCJcInVzZSBzdHJpY3RcIjtcblxuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxu
ICovXG5cbmZ1bmN0aW9uIG1ha2VFbXB0eUZ1bmN0aW9uKGFyZykge1xuICByZXR1cm4gZnVuY3Rp
b24gKCkge1xuICAgIHJldHVybiBhcmc7XG4gIH07XG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlv
biBhY2NlcHRzIGFuZCBkaXNjYXJkcyBpbnB1dHM7IGl0IGhhcyBubyBzaWRlIGVmZmVjdHMuIFRo
aXMgaXNcbiAqIHByaW1hcmlseSB1c2VmdWwgaWRpb21hdGljYWxseSBmb3Igb3ZlcnJpZGFibGUg
ZnVuY3Rpb24gZW5kcG9pbnRzIHdoaWNoXG4gKiBhbHdheXMgbmVlZCB0byBiZSBjYWxsYWJsZSwg
c2luY2UgSlMgbGFja3MgYSBudWxsLWNhbGwgaWRpb20gYWxhIENvY29hLlxuICovXG52YXIgZW1w
dHlGdW5jdGlvbiA9IGZ1bmN0aW9uIGVtcHR5RnVuY3Rpb24oKSB7fTtcblxuZW1wdHlGdW5jdGlv
bi50aGF0UmV0dXJucyA9IG1ha2VFbXB0eUZ1bmN0aW9uO1xuZW1wdHlGdW5jdGlvbi50aGF0UmV0
dXJuc0ZhbHNlID0gbWFrZUVtcHR5RnVuY3Rpb24oZmFsc2UpO1xuZW1wdHlGdW5jdGlvbi50aGF0
UmV0dXJuc1RydWUgPSBtYWtlRW1wdHlGdW5jdGlvbih0cnVlKTtcbmVtcHR5RnVuY3Rpb24udGhh
dFJldHVybnNOdWxsID0gbWFrZUVtcHR5RnVuY3Rpb24obnVsbCk7XG5lbXB0eUZ1bmN0aW9uLnRo
YXRSZXR1cm5zVGhpcyA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHRoaXM7XG59O1xuZW1wdHlG
dW5jdGlvbi50aGF0UmV0dXJuc0FyZ3VtZW50ID0gZnVuY3Rpb24gKGFyZykge1xuICByZXR1cm4g
YXJnO1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBlbXB0eUZ1bmN0aW9uO1xuXG5cbi8qKioqKioq
KioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2ZianMvbGliL2VtcHR5RnVu
Y3Rpb24uanNcbiAqKiBtb2R1bGUgaWQgPSA3XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8i
LCIvKipcbiAqIENvcHlyaWdodCAyMDE2LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwg
cmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5c
bi8vIFRydXN0IHRoZSBkZXZlbG9wZXIgdG8gb25seSB1c2UgUmVhY3RJbnN0cnVtZW50YXRpb24g
d2l0aCBhIF9fREVWX18gY2hlY2tcblxudmFyIGRlYnVnVG9vbCA9IG51bGw7XG5cbmlmIChwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSZWFjdERlYnVnVG9v
bCA9IHJlcXVpcmUoJy4vUmVhY3REZWJ1Z1Rvb2wnKTtcbiAgZGVidWdUb29sID0gUmVhY3REZWJ1
Z1Rvb2w7XG59XG5cbm1vZHVsZS5leHBvcnRzID0geyBkZWJ1Z1Rvb2w6IGRlYnVnVG9vbCB9O1xu
XG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0
LWRvbS9saWIvUmVhY3RJbnN0cnVtZW50YXRpb24uanNcbiAqKiBtb2R1bGUgaWQgPSA4XG4gKiog
bW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9c
blxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0
UHJvZEludmFyaWFudCcpLFxuICAgIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7
XG5cbnZhciBDYWxsYmFja1F1ZXVlID0gcmVxdWlyZSgnLi9DYWxsYmFja1F1ZXVlJyk7XG52YXIg
UG9vbGVkQ2xhc3MgPSByZXF1aXJlKCcuL1Bvb2xlZENsYXNzJyk7XG52YXIgUmVhY3RGZWF0dXJl
RmxhZ3MgPSByZXF1aXJlKCcuL1JlYWN0RmVhdHVyZUZsYWdzJyk7XG52YXIgUmVhY3RSZWNvbmNp
bGVyID0gcmVxdWlyZSgnLi9SZWFjdFJlY29uY2lsZXInKTtcbnZhciBUcmFuc2FjdGlvbiA9IHJl
cXVpcmUoJy4vVHJhbnNhY3Rpb24nKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMv
bGliL2ludmFyaWFudCcpO1xuXG52YXIgZGlydHlDb21wb25lbnRzID0gW107XG52YXIgdXBkYXRl
QmF0Y2hOdW1iZXIgPSAwO1xudmFyIGFzYXBDYWxsYmFja1F1ZXVlID0gQ2FsbGJhY2tRdWV1ZS5n
ZXRQb29sZWQoKTtcbnZhciBhc2FwRW5xdWV1ZWQgPSBmYWxzZTtcblxudmFyIGJhdGNoaW5nU3Ry
YXRlZ3kgPSBudWxsO1xuXG5mdW5jdGlvbiBlbnN1cmVJbmplY3RlZCgpIHtcbiAgIShSZWFjdFVw
ZGF0ZXMuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbiAmJiBiYXRjaGluZ1N0cmF0ZWd5KSA/IHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdS
ZWFjdFVwZGF0ZXM6IG11c3QgaW5qZWN0IGEgcmVjb25jaWxlIHRyYW5zYWN0aW9uIGNsYXNzIGFu
ZCBiYXRjaGluZyBzdHJhdGVneScpIDogX3Byb2RJbnZhcmlhbnQoJzEyMycpIDogdm9pZCAwO1xu
fVxuXG52YXIgTkVTVEVEX1VQREFURVMgPSB7XG4gIGluaXRpYWxpemU6IGZ1bmN0aW9uICgpIHtc
biAgICB0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aCA9IGRpcnR5Q29tcG9uZW50cy5sZW5ndGg7
XG4gIH0sXG4gIGNsb3NlOiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuZGlydHlDb21wb25l
bnRzTGVuZ3RoICE9PSBkaXJ0eUNvbXBvbmVudHMubGVuZ3RoKSB7XG4gICAgICAvLyBBZGRpdGlv
bmFsIHVwZGF0ZXMgd2VyZSBlbnF1ZXVlZCBieSBjb21wb25lbnREaWRVcGRhdGUgaGFuZGxlcnMg
b3JcbiAgICAgIC8vIHNpbWlsYXI7IGJlZm9yZSBvdXIgb3duIFVQREFURV9RVUVVRUlORyB3cmFw
cGVyIGNsb3Nlcywgd2Ugd2FudCB0byBydW5cbiAgICAgIC8vIHRoZXNlIG5ldyB1cGRhdGVzIHNv
IHRoYXQgaWYgQSdzIGNvbXBvbmVudERpZFVwZGF0ZSBjYWxscyBzZXRTdGF0ZSBvblxuICAgICAg
Ly8gQiwgQiB3aWxsIHVwZGF0ZSBiZWZvcmUgdGhlIGNhbGxiYWNrIEEncyB1cGRhdGVyIHByb3Zp
ZGVkIHdoZW4gY2FsbGluZ1xuICAgICAgLy8gc2V0U3RhdGUuXG4gICAgICBkaXJ0eUNvbXBvbmVu
dHMuc3BsaWNlKDAsIHRoaXMuZGlydHlDb21wb25lbnRzTGVuZ3RoKTtcbiAgICAgIGZsdXNoQmF0
Y2hlZFVwZGF0ZXMoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZGlydHlDb21wb25lbnRzLmxlbmd0
aCA9IDA7XG4gICAgfVxuICB9XG59O1xuXG52YXIgVVBEQVRFX1FVRVVFSU5HID0ge1xuICBpbml0
aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jYWxsYmFja1F1ZXVlLnJlc2V0KCk7XG4g
IH0sXG4gIGNsb3NlOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5jYWxsYmFja1F1ZXVlLm5vdGlm
eUFsbCgpO1xuICB9XG59O1xuXG52YXIgVFJBTlNBQ1RJT05fV1JBUFBFUlMgPSBbTkVTVEVEX1VQ
REFURVMsIFVQREFURV9RVUVVRUlOR107XG5cbmZ1bmN0aW9uIFJlYWN0VXBkYXRlc0ZsdXNoVHJh
bnNhY3Rpb24oKSB7XG4gIHRoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKTtcbiAgdGhpcy5k
aXJ0eUNvbXBvbmVudHNMZW5ndGggPSBudWxsO1xuICB0aGlzLmNhbGxiYWNrUXVldWUgPSBDYWxs
YmFja1F1ZXVlLmdldFBvb2xlZCgpO1xuICB0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uID0gUmVh
Y3RVcGRhdGVzLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24uZ2V0UG9vbGVkKFxuICAvKiB1c2VD
cmVhdGVFbGVtZW50ICovdHJ1ZSk7XG59XG5cbl9hc3NpZ24oUmVhY3RVcGRhdGVzRmx1c2hUcmFu
c2FjdGlvbi5wcm90b3R5cGUsIFRyYW5zYWN0aW9uLCB7XG4gIGdldFRyYW5zYWN0aW9uV3JhcHBl
cnM6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gVFJBTlNBQ1RJT05fV1JBUFBFUlM7XG4gIH0s
XG5cbiAgZGVzdHJ1Y3RvcjogZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZGlydHlDb21wb25lbnRz
TGVuZ3RoID0gbnVsbDtcbiAgICBDYWxsYmFja1F1ZXVlLnJlbGVhc2UodGhpcy5jYWxsYmFja1F1
ZXVlKTtcbiAgICB0aGlzLmNhbGxiYWNrUXVldWUgPSBudWxsO1xuICAgIFJlYWN0VXBkYXRlcy5S
ZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLnJlbGVhc2UodGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlv
bik7XG4gICAgdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbiA9IG51bGw7XG4gIH0sXG5cbiAgcGVy
Zm9ybTogZnVuY3Rpb24gKG1ldGhvZCwgc2NvcGUsIGEpIHtcbiAgICAvLyBFc3NlbnRpYWxseSBj
YWxscyBgdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbi5wZXJmb3JtKG1ldGhvZCwgc2NvcGUsIGEp
YFxuICAgIC8vIHdpdGggdGhpcyB0cmFuc2FjdGlvbidzIHdyYXBwZXJzIGFyb3VuZCBpdC5cbiAg
ICByZXR1cm4gVHJhbnNhY3Rpb24ucGVyZm9ybS5jYWxsKHRoaXMsIHRoaXMucmVjb25jaWxlVHJh
bnNhY3Rpb24ucGVyZm9ybSwgdGhpcy5yZWNvbmNpbGVUcmFuc2FjdGlvbiwgbWV0aG9kLCBzY29w
ZSwgYSk7XG4gIH1cbn0pO1xuXG5Qb29sZWRDbGFzcy5hZGRQb29saW5nVG8oUmVhY3RVcGRhdGVz
Rmx1c2hUcmFuc2FjdGlvbik7XG5cbmZ1bmN0aW9uIGJhdGNoZWRVcGRhdGVzKGNhbGxiYWNrLCBh
LCBiLCBjLCBkLCBlKSB7XG4gIGVuc3VyZUluamVjdGVkKCk7XG4gIHJldHVybiBiYXRjaGluZ1N0
cmF0ZWd5LmJhdGNoZWRVcGRhdGVzKGNhbGxiYWNrLCBhLCBiLCBjLCBkLCBlKTtcbn1cblxuLyoq
XG4gKiBBcnJheSBjb21wYXJhdG9yIGZvciBSZWFjdENvbXBvbmVudHMgYnkgbW91bnQgb3JkZXJp
bmcuXG4gKlxuICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gYzEgZmlyc3QgY29tcG9uZW50IHlv
dSdyZSBjb21wYXJpbmdcbiAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGMyIHNlY29uZCBjb21w
b25lbnQgeW91J3JlIGNvbXBhcmluZ1xuICogQHJldHVybiB7bnVtYmVyfSBSZXR1cm4gdmFsdWUg
dXNhYmxlIGJ5IEFycmF5LnByb3RvdHlwZS5zb3J0KCkuXG4gKi9cbmZ1bmN0aW9uIG1vdW50T3Jk
ZXJDb21wYXJhdG9yKGMxLCBjMikge1xuICByZXR1cm4gYzEuX21vdW50T3JkZXIgLSBjMi5fbW91
bnRPcmRlcjtcbn1cblxuZnVuY3Rpb24gcnVuQmF0Y2hlZFVwZGF0ZXModHJhbnNhY3Rpb24pIHtc
biAgdmFyIGxlbiA9IHRyYW5zYWN0aW9uLmRpcnR5Q29tcG9uZW50c0xlbmd0aDtcbiAgIShsZW4g
PT09IGRpcnR5Q29tcG9uZW50cy5sZW5ndGgpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V4cGVjdGVkIGZsdXNoIHRyYW5zYWN0aW9u
XFwncyBzdG9yZWQgZGlydHktY29tcG9uZW50cyBsZW5ndGggKCVzKSB0byBtYXRjaCBkaXJ0eS1j
b21wb25lbnRzIGFycmF5IGxlbmd0aCAoJXMpLicsIGxlbiwgZGlydHlDb21wb25lbnRzLmxlbmd0
aCkgOiBfcHJvZEludmFyaWFudCgnMTI0JywgbGVuLCBkaXJ0eUNvbXBvbmVudHMubGVuZ3RoKSA6
IHZvaWQgMDtcblxuICAvLyBTaW5jZSByZWNvbmNpbGluZyBhIGNvbXBvbmVudCBoaWdoZXIgaW4g
dGhlIG93bmVyIGhpZXJhcmNoeSB1c3VhbGx5IChub3RcbiAgLy8gYWx3YXlzIC0tIHNlZSBzaG91
bGRDb21wb25lbnRVcGRhdGUoKSkgd2lsbCByZWNvbmNpbGUgY2hpbGRyZW4sIHJlY29uY2lsZVxu
ICAvLyB0aGVtIGJlZm9yZSB0aGVpciBjaGlsZHJlbiBieSBzb3J0aW5nIHRoZSBhcnJheS5cbiAg
ZGlydHlDb21wb25lbnRzLnNvcnQobW91bnRPcmRlckNvbXBhcmF0b3IpO1xuXG4gIC8vIEFueSB1
cGRhdGVzIGVucXVldWVkIHdoaWxlIHJlY29uY2lsaW5nIG11c3QgYmUgcGVyZm9ybWVkIGFmdGVy
IHRoaXMgZW50aXJlXG4gIC8vIGJhdGNoLiBPdGhlcndpc2UsIGlmIGRpcnR5Q29tcG9uZW50cyBp
cyBbQSwgQl0gd2hlcmUgQSBoYXMgY2hpbGRyZW4gQiBhbmRcbiAgLy8gQywgQiBjb3VsZCB1cGRh
dGUgdHdpY2UgaW4gYSBzaW5nbGUgYmF0Y2ggaWYgQydzIHJlbmRlciBlbnF1ZXVlcyBhbiB1cGRh
dGVcbiAgLy8gdG8gQiAoc2luY2UgQiB3b3VsZCBoYXZlIGFscmVhZHkgdXBkYXRlZCwgd2Ugc2hv
dWxkIHNraXAgaXQsIGFuZCB0aGUgb25seVxuICAvLyB3YXkgd2UgY2FuIGtub3cgdG8gZG8gc28g
aXMgYnkgY2hlY2tpbmcgdGhlIGJhdGNoIGNvdW50ZXIpLlxuICB1cGRhdGVCYXRjaE51bWJlcisr
O1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAvLyBJZiBhIGNvbXBv
bmVudCBpcyB1bm1vdW50ZWQgYmVmb3JlIHBlbmRpbmcgY2hhbmdlcyBhcHBseSwgaXQgd2lsbCBz
dGlsbFxuICAgIC8vIGJlIGhlcmUsIGJ1dCB3ZSBhc3N1bWUgdGhhdCBpdCBoYXMgY2xlYXJlZCBp
dHMgX3BlbmRpbmdDYWxsYmFja3MgYW5kXG4gICAgLy8gdGhhdCBwZXJmb3JtVXBkYXRlSWZOZWNl
c3NhcnkgaXMgYSBub29wLlxuICAgIHZhciBjb21wb25lbnQgPSBkaXJ0eUNvbXBvbmVudHNbaV07
XG5cbiAgICAvLyBJZiBwZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnkgaGFwcGVucyB0byBlbnF1ZXVl
IGFueSBuZXcgdXBkYXRlcywgd2VcbiAgICAvLyBzaG91bGRuJ3QgZXhlY3V0ZSB0aGUgY2FsbGJh
Y2tzIHVudGlsIHRoZSBuZXh0IHJlbmRlciBoYXBwZW5zLCBzb1xuICAgIC8vIHN0YXNoIHRoZSBj
YWxsYmFja3MgZmlyc3RcbiAgICB2YXIgY2FsbGJhY2tzID0gY29tcG9uZW50Ll9wZW5kaW5nQ2Fs
bGJhY2tzO1xuICAgIGNvbXBvbmVudC5fcGVuZGluZ0NhbGxiYWNrcyA9IG51bGw7XG5cbiAgICB2
YXIgbWFya2VyTmFtZTtcbiAgICBpZiAoUmVhY3RGZWF0dXJlRmxhZ3MubG9nVG9wTGV2ZWxSZW5k
ZXJzKSB7XG4gICAgICB2YXIgbmFtZWRDb21wb25lbnQgPSBjb21wb25lbnQ7XG4gICAgICAvLyBE
dWNrIHR5cGUgVG9wTGV2ZWxXcmFwcGVyLiBUaGlzIGlzIHByb2JhYmx5IGFsd2F5cyB0cnVlLlxu
ICAgICAgaWYgKGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQudHlwZS5pc1JlYWN0VG9wTGV2ZWxX
cmFwcGVyKSB7XG4gICAgICAgIG5hbWVkQ29tcG9uZW50ID0gY29tcG9uZW50Ll9yZW5kZXJlZENv
bXBvbmVudDtcbiAgICAgIH1cbiAgICAgIG1hcmtlck5hbWUgPSAnUmVhY3QgdXBkYXRlOiAnICsg
bmFtZWRDb21wb25lbnQuZ2V0TmFtZSgpO1xuICAgICAgY29uc29sZS50aW1lKG1hcmtlck5hbWUp
O1xuICAgIH1cblxuICAgIFJlYWN0UmVjb25jaWxlci5wZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnko
Y29tcG9uZW50LCB0cmFuc2FjdGlvbi5yZWNvbmNpbGVUcmFuc2FjdGlvbiwgdXBkYXRlQmF0Y2hO
dW1iZXIpO1xuXG4gICAgaWYgKG1hcmtlck5hbWUpIHtcbiAgICAgIGNvbnNvbGUudGltZUVuZCht
YXJrZXJOYW1lKTtcbiAgICB9XG5cbiAgICBpZiAoY2FsbGJhY2tzKSB7XG4gICAgICBmb3IgKHZh
ciBqID0gMDsgaiA8IGNhbGxiYWNrcy5sZW5ndGg7IGorKykge1xuICAgICAgICB0cmFuc2FjdGlv
bi5jYWxsYmFja1F1ZXVlLmVucXVldWUoY2FsbGJhY2tzW2pdLCBjb21wb25lbnQuZ2V0UHVibGlj
SW5zdGFuY2UoKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbnZhciBmbHVzaEJhdGNoZWRV
cGRhdGVzID0gZnVuY3Rpb24gKCkge1xuICAvLyBSZWFjdFVwZGF0ZXNGbHVzaFRyYW5zYWN0aW9u
J3Mgd3JhcHBlcnMgd2lsbCBjbGVhciB0aGUgZGlydHlDb21wb25lbnRzXG4gIC8vIGFycmF5IGFu
ZCBwZXJmb3JtIGFueSB1cGRhdGVzIGVucXVldWVkIGJ5IG1vdW50LXJlYWR5IGhhbmRsZXJzIChp
LmUuLFxuICAvLyBjb21wb25lbnREaWRVcGRhdGUpIGJ1dCB3ZSBuZWVkIHRvIGNoZWNrIGhlcmUg
dG9vIGluIG9yZGVyIHRvIGNhdGNoXG4gIC8vIHVwZGF0ZXMgZW5xdWV1ZWQgYnkgc2V0U3RhdGUg
Y2FsbGJhY2tzIGFuZCBhc2FwIGNhbGxzLlxuICB3aGlsZSAoZGlydHlDb21wb25lbnRzLmxlbmd0
aCB8fCBhc2FwRW5xdWV1ZWQpIHtcbiAgICBpZiAoZGlydHlDb21wb25lbnRzLmxlbmd0aCkge1xu
ICAgICAgdmFyIHRyYW5zYWN0aW9uID0gUmVhY3RVcGRhdGVzRmx1c2hUcmFuc2FjdGlvbi5nZXRQ
b29sZWQoKTtcbiAgICAgIHRyYW5zYWN0aW9uLnBlcmZvcm0ocnVuQmF0Y2hlZFVwZGF0ZXMsIG51
bGwsIHRyYW5zYWN0aW9uKTtcbiAgICAgIFJlYWN0VXBkYXRlc0ZsdXNoVHJhbnNhY3Rpb24ucmVs
ZWFzZSh0cmFuc2FjdGlvbik7XG4gICAgfVxuXG4gICAgaWYgKGFzYXBFbnF1ZXVlZCkge1xuICAg
ICAgYXNhcEVucXVldWVkID0gZmFsc2U7XG4gICAgICB2YXIgcXVldWUgPSBhc2FwQ2FsbGJhY2tR
dWV1ZTtcbiAgICAgIGFzYXBDYWxsYmFja1F1ZXVlID0gQ2FsbGJhY2tRdWV1ZS5nZXRQb29sZWQo
KTtcbiAgICAgIHF1ZXVlLm5vdGlmeUFsbCgpO1xuICAgICAgQ2FsbGJhY2tRdWV1ZS5yZWxlYXNl
KHF1ZXVlKTtcbiAgICB9XG4gIH1cbn07XG5cbi8qKlxuICogTWFyayBhIGNvbXBvbmVudCBhcyBu
ZWVkaW5nIGEgcmVyZW5kZXIsIGFkZGluZyBhbiBvcHRpb25hbCBjYWxsYmFjayB0byBhXG4gKiBs
aXN0IG9mIGZ1bmN0aW9ucyB3aGljaCB3aWxsIGJlIGV4ZWN1dGVkIG9uY2UgdGhlIHJlcmVuZGVy
IG9jY3Vycy5cbiAqL1xuZnVuY3Rpb24gZW5xdWV1ZVVwZGF0ZShjb21wb25lbnQpIHtcbiAgZW5z
dXJlSW5qZWN0ZWQoKTtcblxuICAvLyBWYXJpb3VzIHBhcnRzIG9mIG91ciBjb2RlIChzdWNoIGFz
IFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50J3NcbiAgLy8gX3JlbmRlclZhbGlkYXRlZENvbXBvbmVu
dCkgYXNzdW1lIHRoYXQgY2FsbHMgdG8gcmVuZGVyIGFyZW4ndCBuZXN0ZWQ7XG4gIC8vIHZlcmlm
eSB0aGF0IHRoYXQncyB0aGUgY2FzZS4gKFRoaXMgaXMgY2FsbGVkIGJ5IGVhY2ggdG9wLWxldmVs
IHVwZGF0ZVxuICAvLyBmdW5jdGlvbiwgbGlrZSBzZXRTdGF0ZSwgZm9yY2VVcGRhdGUsIGV0Yy47
IGNyZWF0aW9uIGFuZFxuICAvLyBkZXN0cnVjdGlvbiBvZiB0b3AtbGV2ZWwgY29tcG9uZW50cyBp
cyBndWFyZGVkIGluIFJlYWN0TW91bnQuKVxuXG4gIGlmICghYmF0Y2hpbmdTdHJhdGVneS5pc0Jh
dGNoaW5nVXBkYXRlcykge1xuICAgIGJhdGNoaW5nU3RyYXRlZ3kuYmF0Y2hlZFVwZGF0ZXMoZW5x
dWV1ZVVwZGF0ZSwgY29tcG9uZW50KTtcbiAgICByZXR1cm47XG4gIH1cblxuICBkaXJ0eUNvbXBv
bmVudHMucHVzaChjb21wb25lbnQpO1xuICBpZiAoY29tcG9uZW50Ll91cGRhdGVCYXRjaE51bWJl
ciA9PSBudWxsKSB7XG4gICAgY29tcG9uZW50Ll91cGRhdGVCYXRjaE51bWJlciA9IHVwZGF0ZUJh
dGNoTnVtYmVyICsgMTtcbiAgfVxufVxuXG4vKipcbiAqIEVucXVldWUgYSBjYWxsYmFjayB0byBi
ZSBydW4gYXQgdGhlIGVuZCBvZiB0aGUgY3VycmVudCBiYXRjaGluZyBjeWNsZS4gVGhyb3dzXG4g
KiBpZiBubyB1cGRhdGVzIGFyZSBjdXJyZW50bHkgYmVpbmcgcGVyZm9ybWVkLlxuICovXG5mdW5j
dGlvbiBhc2FwKGNhbGxiYWNrLCBjb250ZXh0KSB7XG4gICFiYXRjaGluZ1N0cmF0ZWd5LmlzQmF0
Y2hpbmdVcGRhdGVzID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGlu
dmFyaWFudChmYWxzZSwgJ1JlYWN0VXBkYXRlcy5hc2FwOiBDYW5cXCd0IGVucXVldWUgYW4gYXNh
cCBjYWxsYmFjayBpbiBhIGNvbnRleHQgd2hlcmV1cGRhdGVzIGFyZSBub3QgYmVpbmcgYmF0Y2hl
ZC4nKSA6IF9wcm9kSW52YXJpYW50KCcxMjUnKSA6IHZvaWQgMDtcbiAgYXNhcENhbGxiYWNrUXVl
dWUuZW5xdWV1ZShjYWxsYmFjaywgY29udGV4dCk7XG4gIGFzYXBFbnF1ZXVlZCA9IHRydWU7XG59
XG5cbnZhciBSZWFjdFVwZGF0ZXNJbmplY3Rpb24gPSB7XG4gIGluamVjdFJlY29uY2lsZVRyYW5z
YWN0aW9uOiBmdW5jdGlvbiAoUmVjb25jaWxlVHJhbnNhY3Rpb24pIHtcbiAgICAhUmVjb25jaWxl
VHJhbnNhY3Rpb24gPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52
YXJpYW50KGZhbHNlLCAnUmVhY3RVcGRhdGVzOiBtdXN0IHByb3ZpZGUgYSByZWNvbmNpbGUgdHJh
bnNhY3Rpb24gY2xhc3MnKSA6IF9wcm9kSW52YXJpYW50KCcxMjYnKSA6IHZvaWQgMDtcbiAgICBS
ZWFjdFVwZGF0ZXMuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbiA9IFJlY29uY2lsZVRyYW5zYWN0
aW9uO1xuICB9LFxuXG4gIGluamVjdEJhdGNoaW5nU3RyYXRlZ3k6IGZ1bmN0aW9uIChfYmF0Y2hp
bmdTdHJhdGVneSkge1xuICAgICFfYmF0Y2hpbmdTdHJhdGVneSA/IHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdFVwZGF0ZXM6IG11
c3QgcHJvdmlkZSBhIGJhdGNoaW5nIHN0cmF0ZWd5JykgOiBfcHJvZEludmFyaWFudCgnMTI3Jykg
OiB2b2lkIDA7XG4gICAgISh0eXBlb2YgX2JhdGNoaW5nU3RyYXRlZ3kuYmF0Y2hlZFVwZGF0ZXMg
PT09ICdmdW5jdGlvbicpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IGludmFyaWFudChmYWxzZSwgJ1JlYWN0VXBkYXRlczogbXVzdCBwcm92aWRlIGEgYmF0Y2hlZFVw
ZGF0ZXMoKSBmdW5jdGlvbicpIDogX3Byb2RJbnZhcmlhbnQoJzEyOCcpIDogdm9pZCAwO1xuICAg
ICEodHlwZW9mIF9iYXRjaGluZ1N0cmF0ZWd5LmlzQmF0Y2hpbmdVcGRhdGVzID09PSAnYm9vbGVh
bicpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChm
YWxzZSwgJ1JlYWN0VXBkYXRlczogbXVzdCBwcm92aWRlIGFuIGlzQmF0Y2hpbmdVcGRhdGVzIGJv
b2xlYW4gYXR0cmlidXRlJykgOiBfcHJvZEludmFyaWFudCgnMTI5JykgOiB2b2lkIDA7XG4gICAg
YmF0Y2hpbmdTdHJhdGVneSA9IF9iYXRjaGluZ1N0cmF0ZWd5O1xuICB9XG59O1xuXG52YXIgUmVh
Y3RVcGRhdGVzID0ge1xuICAvKipcbiAgICogUmVhY3QgcmVmZXJlbmNlcyBgUmVhY3RSZWNvbmNp
bGVUcmFuc2FjdGlvbmAgdXNpbmcgdGhpcyBwcm9wZXJ0eSBpbiBvcmRlclxuICAgKiB0byBhbGxv
dyBkZXBlbmRlbmN5IGluamVjdGlvbi5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBS
ZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uOiBudWxsLFxuXG4gIGJhdGNoZWRVcGRhdGVzOiBiYXRj
aGVkVXBkYXRlcyxcbiAgZW5xdWV1ZVVwZGF0ZTogZW5xdWV1ZVVwZGF0ZSxcbiAgZmx1c2hCYXRj
aGVkVXBkYXRlczogZmx1c2hCYXRjaGVkVXBkYXRlcyxcbiAgaW5qZWN0aW9uOiBSZWFjdFVwZGF0
ZXNJbmplY3Rpb24sXG4gIGFzYXA6IGFzYXBcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RV
cGRhdGVzO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiog
Li9+L3JlYWN0LWRvbS9saWIvUmVhY3RVcGRhdGVzLmpzXG4gKiogbW9kdWxlIGlkID0gOVxuICoq
IG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICov
XG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWdu
Jyk7XG5cbnZhciBQb29sZWRDbGFzcyA9IHJlcXVpcmUoJy4vUG9vbGVkQ2xhc3MnKTtcblxudmFy
IGVtcHR5RnVuY3Rpb24gPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eUZ1bmN0aW9uJyk7XG52YXIg
d2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxudmFyIGRpZFdhcm5Gb3JB
ZGRlZE5ld1Byb3BlcnR5ID0gZmFsc2U7XG52YXIgaXNQcm94eVN1cHBvcnRlZCA9IHR5cGVvZiBQ
cm94eSA9PT0gJ2Z1bmN0aW9uJztcblxudmFyIHNob3VsZEJlUmVsZWFzZWRQcm9wZXJ0aWVzID0g
WydkaXNwYXRjaENvbmZpZycsICdfdGFyZ2V0SW5zdCcsICduYXRpdmVFdmVudCcsICdpc0RlZmF1
bHRQcmV2ZW50ZWQnLCAnaXNQcm9wYWdhdGlvblN0b3BwZWQnLCAnX2Rpc3BhdGNoTGlzdGVuZXJz
JywgJ19kaXNwYXRjaEluc3RhbmNlcyddO1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgRXZlbnRcbiAq
IEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvRE9NLUxldmVsLTMtRXZlbnRzL1xuICovXG52YXIg
RXZlbnRJbnRlcmZhY2UgPSB7XG4gIHR5cGU6IG51bGwsXG4gIHRhcmdldDogbnVsbCxcbiAgLy8g
Y3VycmVudFRhcmdldCBpcyBzZXQgd2hlbiBkaXNwYXRjaGluZzsgbm8gdXNlIGluIGNvcHlpbmcg
aXQgaGVyZVxuICBjdXJyZW50VGFyZ2V0OiBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVsbCxc
biAgZXZlbnRQaGFzZTogbnVsbCxcbiAgYnViYmxlczogbnVsbCxcbiAgY2FuY2VsYWJsZTogbnVs
bCxcbiAgdGltZVN0YW1wOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICByZXR1cm4gZXZlbnQudGlt
ZVN0YW1wIHx8IERhdGUubm93KCk7XG4gIH0sXG4gIGRlZmF1bHRQcmV2ZW50ZWQ6IG51bGwsXG4g
IGlzVHJ1c3RlZDogbnVsbFxufTtcblxuLyoqXG4gKiBTeW50aGV0aWMgZXZlbnRzIGFyZSBkaXNw
YXRjaGVkIGJ5IGV2ZW50IHBsdWdpbnMsIHR5cGljYWxseSBpbiByZXNwb25zZSB0byBhXG4gKiB0
b3AtbGV2ZWwgZXZlbnQgZGVsZWdhdGlvbiBoYW5kbGVyLlxuICpcbiAqIFRoZXNlIHN5c3RlbXMg
c2hvdWxkIGdlbmVyYWxseSB1c2UgcG9vbGluZyB0byByZWR1Y2UgdGhlIGZyZXF1ZW5jeSBvZiBn
YXJiYWdlXG4gKiBjb2xsZWN0aW9uLiBUaGUgc3lzdGVtIHNob3VsZCBjaGVjayBgaXNQZXJzaXN0
ZW50YCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGVcbiAqIGV2ZW50IHNob3VsZCBiZSByZWxlYXNl
ZCBpbnRvIHRoZSBwb29sIGFmdGVyIGJlaW5nIGRpc3BhdGNoZWQuIFVzZXJzIHRoYXRcbiAqIG5l
ZWQgYSBwZXJzaXN0ZWQgZXZlbnQgc2hvdWxkIGludm9rZSBgcGVyc2lzdGAuXG4gKlxuICogU3lu
dGhldGljIGV2ZW50cyAoYW5kIHN1YmNsYXNzZXMpIGltcGxlbWVudCB0aGUgRE9NIExldmVsIDMg
RXZlbnRzIEFQSSBieVxuICogbm9ybWFsaXppbmcgYnJvd3NlciBxdWlya3MuIFN1YmNsYXNzZXMg
ZG8gbm90IG5lY2Vzc2FyaWx5IGhhdmUgdG8gaW1wbGVtZW50IGFcbiAqIERPTSBpbnRlcmZhY2U7
IGN1c3RvbSBhcHBsaWNhdGlvbi1zcGVjaWZpYyBldmVudHMgY2FuIGFsc28gc3ViY2xhc3MgdGhp
cy5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1
c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG4gKiBAcGFyYW0geyp9IHRhcmdldEluc3QgTWFy
a2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0
aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBAcGFyYW0ge0RPTUV2ZW50VGFyZ2V0
fSBuYXRpdmVFdmVudFRhcmdldCBUYXJnZXQgbm9kZS5cbiAqL1xuZnVuY3Rpb24gU3ludGhldGlj
RXZlbnQoZGlzcGF0Y2hDb25maWcsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVu
dFRhcmdldCkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykg
e1xuICAgIC8vIHRoZXNlIGhhdmUgYSBnZXR0ZXIvc2V0dGVyIGZvciB3YXJuaW5nc1xuICAgIGRl
bGV0ZSB0aGlzLm5hdGl2ZUV2ZW50O1xuICAgIGRlbGV0ZSB0aGlzLnByZXZlbnREZWZhdWx0O1xu
ICAgIGRlbGV0ZSB0aGlzLnN0b3BQcm9wYWdhdGlvbjtcbiAgfVxuXG4gIHRoaXMuZGlzcGF0Y2hD
b25maWcgPSBkaXNwYXRjaENvbmZpZztcbiAgdGhpcy5fdGFyZ2V0SW5zdCA9IHRhcmdldEluc3Q7
XG4gIHRoaXMubmF0aXZlRXZlbnQgPSBuYXRpdmVFdmVudDtcblxuICB2YXIgSW50ZXJmYWNlID0g
dGhpcy5jb25zdHJ1Y3Rvci5JbnRlcmZhY2U7XG4gIGZvciAodmFyIHByb3BOYW1lIGluIEludGVy
ZmFjZSkge1xuICAgIGlmICghSW50ZXJmYWNlLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xu
ICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nKSB7XG4gICAgICBkZWxldGUgdGhpc1twcm9wTmFtZV07IC8vIHRoaXMgaGFz
IGEgZ2V0dGVyL3NldHRlciBmb3Igd2FybmluZ3NcbiAgICB9XG4gICAgdmFyIG5vcm1hbGl6ZSA9
IEludGVyZmFjZVtwcm9wTmFtZV07XG4gICAgaWYgKG5vcm1hbGl6ZSkge1xuICAgICAgdGhpc1tw
cm9wTmFtZV0gPSBub3JtYWxpemUobmF0aXZlRXZlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBp
ZiAocHJvcE5hbWUgPT09ICd0YXJnZXQnKSB7XG4gICAgICAgIHRoaXMudGFyZ2V0ID0gbmF0aXZl
RXZlbnRUYXJnZXQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzW3Byb3BOYW1lXSA9IG5h
dGl2ZUV2ZW50W3Byb3BOYW1lXTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2YXIgZGVmYXVs
dFByZXZlbnRlZCA9IG5hdGl2ZUV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgIT0gbnVsbCA/IG5hdGl2
ZUV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgOiBuYXRpdmVFdmVudC5yZXR1cm5WYWx1ZSA9PT0gZmFs
c2U7XG4gIGlmIChkZWZhdWx0UHJldmVudGVkKSB7XG4gICAgdGhpcy5pc0RlZmF1bHRQcmV2ZW50
ZWQgPSBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zVHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICB0aGlz
LmlzRGVmYXVsdFByZXZlbnRlZCA9IGVtcHR5RnVuY3Rpb24udGhhdFJldHVybnNGYWxzZTtcbiAg
fVxuICB0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJu
c0ZhbHNlO1xuICByZXR1cm4gdGhpcztcbn1cblxuX2Fzc2lnbihTeW50aGV0aWNFdmVudC5wcm90
b3R5cGUsIHtcbiAgcHJldmVudERlZmF1bHQ6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmRlZmF1
bHRQcmV2ZW50ZWQgPSB0cnVlO1xuICAgIHZhciBldmVudCA9IHRoaXMubmF0aXZlRXZlbnQ7XG4g
ICAgaWYgKCFldmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldmVudC5w
cmV2ZW50RGVmYXVsdCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIC8v
IGVzbGludC1kaXNhYmxlLW5leHQtbGluZSB2YWxpZC10eXBlb2ZcbiAgICB9IGVsc2UgaWYgKHR5
cGVvZiBldmVudC5yZXR1cm5WYWx1ZSAhPT0gJ3Vua25vd24nKSB7XG4gICAgICBldmVudC5yZXR1
cm5WYWx1ZSA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLmlzRGVmYXVsdFByZXZlbnRlZCA9IGVt
cHR5RnVuY3Rpb24udGhhdFJldHVybnNUcnVlO1xuICB9LFxuXG4gIHN0b3BQcm9wYWdhdGlvbjog
ZnVuY3Rpb24gKCkge1xuICAgIHZhciBldmVudCA9IHRoaXMubmF0aXZlRXZlbnQ7XG4gICAgaWYg
KCFldmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldmVudC5zdG9wUHJv
cGFnYXRpb24pIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgLy8gZXNs
aW50LWRpc2FibGUtbmV4dC1saW5lIHZhbGlkLXR5cGVvZlxuICAgIH0gZWxzZSBpZiAodHlwZW9m
IGV2ZW50LmNhbmNlbEJ1YmJsZSAhPT0gJ3Vua25vd24nKSB7XG4gICAgICAvLyBUaGUgQ2hhbmdl
RXZlbnRQbHVnaW4gcmVnaXN0ZXJzIGEgXCJwcm9wZXJ0eWNoYW5nZVwiIGV2ZW50IGZvclxuICAg
ICAgLy8gSUUuIFRoaXMgZXZlbnQgZG9lcyBub3Qgc3VwcG9ydCBidWJibGluZyBvciBjYW5jZWxs
aW5nLCBhbmRcbiAgICAgIC8vIGFueSByZWZlcmVuY2VzIHRvIGNhbmNlbEJ1YmJsZSB0aHJvdyBc
Ik1lbWJlciBub3QgZm91bmRcIi4gIEFcbiAgICAgIC8vIHR5cGVvZiBjaGVjayBvZiBcInVua25v
d25cIiBjaXJjdW12ZW50cyB0aGlzIGlzc3VlIChhbmQgaXMgYWxzb1xuICAgICAgLy8gSUUgc3Bl
Y2lmaWMpLlxuICAgICAgZXZlbnQuY2FuY2VsQnViYmxlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB0
aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkID0gZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc1RydWU7
XG4gIH0sXG5cbiAgLyoqXG4gICAqIFdlIHJlbGVhc2UgYWxsIGRpc3BhdGNoZWQgYFN5bnRoZXRp
Y0V2ZW50YHMgYWZ0ZXIgZWFjaCBldmVudCBsb29wLCBhZGRpbmdcbiAgICogdGhlbSBiYWNrIGlu
dG8gdGhlIHBvb2wuIFRoaXMgYWxsb3dzIGEgd2F5IHRvIGhvbGQgb250byBhIHJlZmVyZW5jZSB0
aGF0XG4gICAqIHdvbid0IGJlIGFkZGVkIGJhY2sgaW50byB0aGUgcG9vbC5cbiAgICovXG4gIHBl
cnNpc3Q6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmlzUGVyc2lzdGVudCA9IGVtcHR5RnVuY3Rp
b24udGhhdFJldHVybnNUcnVlO1xuICB9LFxuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhpcyBl
dmVudCBzaG91bGQgYmUgcmVsZWFzZWQgYmFjayBpbnRvIHRoZSBwb29sLlxuICAgKlxuICAgKiBA
cmV0dXJuIHtib29sZWFufSBUcnVlIGlmIHRoaXMgc2hvdWxkIG5vdCBiZSByZWxlYXNlZCwgZmFs
c2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgaXNQZXJzaXN0ZW50OiBlbXB0eUZ1bmN0aW9uLnRoYXRS
ZXR1cm5zRmFsc2UsXG5cbiAgLyoqXG4gICAqIGBQb29sZWRDbGFzc2AgbG9va3MgZm9yIGBkZXN0
cnVjdG9yYCBvbiBlYWNoIGluc3RhbmNlIGl0IHJlbGVhc2VzLlxuICAgKi9cbiAgZGVzdHJ1Y3Rv
cjogZnVuY3Rpb24gKCkge1xuICAgIHZhciBJbnRlcmZhY2UgPSB0aGlzLmNvbnN0cnVjdG9yLklu
dGVyZmFjZTtcbiAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBJbnRlcmZhY2UpIHtcbiAgICAgIGlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIE9iamVj
dC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBwcm9wTmFtZSwgZ2V0UG9vbGVkV2FybmluZ1Byb3BlcnR5
RGVmaW5pdGlvbihwcm9wTmFtZSwgSW50ZXJmYWNlW3Byb3BOYW1lXSkpO1xuICAgICAgfSBlbHNl
IHtcbiAgICAgICAgdGhpc1twcm9wTmFtZV0gPSBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHNob3VsZEJlUmVsZWFzZWRQcm9wZXJ0aWVzLmxlbmd0aDsgaSsr
KSB7XG4gICAgICB0aGlzW3Nob3VsZEJlUmVsZWFzZWRQcm9wZXJ0aWVzW2ldXSA9IG51bGw7XG4g
ICAgfVxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
ICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ25hdGl2ZUV2ZW50JywgZ2V0UG9vbGVk
V2FybmluZ1Byb3BlcnR5RGVmaW5pdGlvbignbmF0aXZlRXZlbnQnLCBudWxsKSk7XG4gICAgICBP
YmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ3ByZXZlbnREZWZhdWx0JywgZ2V0UG9vbGVkV2Fy
bmluZ1Byb3BlcnR5RGVmaW5pdGlvbigncHJldmVudERlZmF1bHQnLCBlbXB0eUZ1bmN0aW9uKSk7
XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ3N0b3BQcm9wYWdhdGlvbicsIGdl
dFBvb2xlZFdhcm5pbmdQcm9wZXJ0eURlZmluaXRpb24oJ3N0b3BQcm9wYWdhdGlvbicsIGVtcHR5
RnVuY3Rpb24pKTtcbiAgICB9XG4gIH1cbn0pO1xuXG5TeW50aGV0aWNFdmVudC5JbnRlcmZhY2Ug
PSBFdmVudEludGVyZmFjZTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicpIHtcbiAgaWYgKGlzUHJveHlTdXBwb3J0ZWQpIHtcbiAgICAvKmVzbGludC1kaXNhYmxl
IG5vLWZ1bmMtYXNzaWduICovXG4gICAgU3ludGhldGljRXZlbnQgPSBuZXcgUHJveHkoU3ludGhl
dGljRXZlbnQsIHtcbiAgICAgIGNvbnN0cnVjdDogZnVuY3Rpb24gKHRhcmdldCwgYXJncykge1xu
ICAgICAgICByZXR1cm4gdGhpcy5hcHBseSh0YXJnZXQsIE9iamVjdC5jcmVhdGUodGFyZ2V0LnBy
b3RvdHlwZSksIGFyZ3MpO1xuICAgICAgfSxcbiAgICAgIGFwcGx5OiBmdW5jdGlvbiAoY29uc3Ry
dWN0b3IsIHRoYXQsIGFyZ3MpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm94eShjb25zdHJ1Y3Rv
ci5hcHBseSh0aGF0LCBhcmdzKSwge1xuICAgICAgICAgIHNldDogZnVuY3Rpb24gKHRhcmdldCwg
cHJvcCwgdmFsdWUpIHtcbiAgICAgICAgICAgIGlmIChwcm9wICE9PSAnaXNQZXJzaXN0ZW50JyAm
JiAhdGFyZ2V0LmNvbnN0cnVjdG9yLkludGVyZmFjZS5oYXNPd25Qcm9wZXJ0eShwcm9wKSAmJiBz
aG91bGRCZVJlbGVhc2VkUHJvcGVydGllcy5pbmRleE9mKHByb3ApID09PSAtMSkge1xuICAgICAg
ICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhk
aWRXYXJuRm9yQWRkZWROZXdQcm9wZXJ0eSB8fCB0YXJnZXQuaXNQZXJzaXN0ZW50KCksIFwiVGhp
cyBzeW50aGV0aWMgZXZlbnQgaXMgcmV1c2VkIGZvciBwZXJmb3JtYW5jZSByZWFzb25zLiBJZiB5
b3UncmUgXCIgKyBcInNlZWluZyB0aGlzLCB5b3UncmUgYWRkaW5nIGEgbmV3IHByb3BlcnR5IGlu
IHRoZSBzeW50aGV0aWMgZXZlbnQgb2JqZWN0LiBcIiArICdUaGUgcHJvcGVydHkgaXMgbmV2ZXIg
cmVsZWFzZWQuIFNlZSAnICsgJ2h0dHBzOi8vZmIubWUvcmVhY3QtZXZlbnQtcG9vbGluZyBmb3Ig
bW9yZSBpbmZvcm1hdGlvbi4nKSA6IHZvaWQgMDtcbiAgICAgICAgICAgICAgZGlkV2FybkZvckFk
ZGVkTmV3UHJvcGVydHkgPSB0cnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGFyZ2V0
W3Byb3BdID0gdmFsdWU7XG4gICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICB9XG4g
ICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIC8qZXNsaW50LWVuYWJsZSBuby1mdW5j
LWFzc2lnbiAqL1xuICB9XG59XG4vKipcbiAqIEhlbHBlciB0byByZWR1Y2UgYm9pbGVycGxhdGUg
d2hlbiBjcmVhdGluZyBzdWJjbGFzc2VzLlxuICpcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IENsYXNz
XG4gKiBAcGFyYW0gez9vYmplY3R9IEludGVyZmFjZVxuICovXG5TeW50aGV0aWNFdmVudC5hdWdt
ZW50Q2xhc3MgPSBmdW5jdGlvbiAoQ2xhc3MsIEludGVyZmFjZSkge1xuICB2YXIgU3VwZXIgPSB0
aGlzO1xuXG4gIHZhciBFID0gZnVuY3Rpb24gKCkge307XG4gIEUucHJvdG90eXBlID0gU3VwZXIu
cHJvdG90eXBlO1xuICB2YXIgcHJvdG90eXBlID0gbmV3IEUoKTtcblxuICBfYXNzaWduKHByb3Rv
dHlwZSwgQ2xhc3MucHJvdG90eXBlKTtcbiAgQ2xhc3MucHJvdG90eXBlID0gcHJvdG90eXBlO1xu
ICBDbGFzcy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBDbGFzcztcblxuICBDbGFzcy5JbnRlcmZh
Y2UgPSBfYXNzaWduKHt9LCBTdXBlci5JbnRlcmZhY2UsIEludGVyZmFjZSk7XG4gIENsYXNzLmF1
Z21lbnRDbGFzcyA9IFN1cGVyLmF1Z21lbnRDbGFzcztcblxuICBQb29sZWRDbGFzcy5hZGRQb29s
aW5nVG8oQ2xhc3MsIFBvb2xlZENsYXNzLmZvdXJBcmd1bWVudFBvb2xlcik7XG59O1xuXG5Qb29s
ZWRDbGFzcy5hZGRQb29saW5nVG8oU3ludGhldGljRXZlbnQsIFBvb2xlZENsYXNzLmZvdXJBcmd1
bWVudFBvb2xlcik7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ludGhldGljRXZlbnQ7XG5cbi8qKlxu
ICAqIEhlbHBlciB0byBudWxsaWZ5IHN5bnRoZXRpY0V2ZW50IGluc3RhbmNlIHByb3BlcnRpZXMg
d2hlbiBkZXN0cnVjdGluZ1xuICAqXG4gICogQHBhcmFtIHtvYmplY3R9IFN5bnRoZXRpY0V2ZW50
XG4gICogQHBhcmFtIHtTdHJpbmd9IHByb3BOYW1lXG4gICogQHJldHVybiB7b2JqZWN0fSBkZWZp
bmVQcm9wZXJ0eSBvYmplY3RcbiAgKi9cbmZ1bmN0aW9uIGdldFBvb2xlZFdhcm5pbmdQcm9wZXJ0
eURlZmluaXRpb24ocHJvcE5hbWUsIGdldFZhbCkge1xuICB2YXIgaXNGdW5jdGlvbiA9IHR5cGVv
ZiBnZXRWYWwgPT09ICdmdW5jdGlvbic7XG4gIHJldHVybiB7XG4gICAgY29uZmlndXJhYmxlOiB0
cnVlLFxuICAgIHNldDogc2V0LFxuICAgIGdldDogZ2V0XG4gIH07XG5cbiAgZnVuY3Rpb24gc2V0
KHZhbCkge1xuICAgIHZhciBhY3Rpb24gPSBpc0Z1bmN0aW9uID8gJ3NldHRpbmcgdGhlIG1ldGhv
ZCcgOiAnc2V0dGluZyB0aGUgcHJvcGVydHknO1xuICAgIHdhcm4oYWN0aW9uLCAnVGhpcyBpcyBl
ZmZlY3RpdmVseSBhIG5vLW9wJyk7XG4gICAgcmV0dXJuIHZhbDtcbiAgfVxuXG4gIGZ1bmN0aW9u
IGdldCgpIHtcbiAgICB2YXIgYWN0aW9uID0gaXNGdW5jdGlvbiA/ICdhY2Nlc3NpbmcgdGhlIG1l
dGhvZCcgOiAnYWNjZXNzaW5nIHRoZSBwcm9wZXJ0eSc7XG4gICAgdmFyIHJlc3VsdCA9IGlzRnVu
Y3Rpb24gPyAnVGhpcyBpcyBhIG5vLW9wIGZ1bmN0aW9uJyA6ICdUaGlzIGlzIHNldCB0byBudWxs
JztcbiAgICB3YXJuKGFjdGlvbiwgcmVzdWx0KTtcbiAgICByZXR1cm4gZ2V0VmFsO1xuICB9XG5c
biAgZnVuY3Rpb24gd2FybihhY3Rpb24sIHJlc3VsdCkge1xuICAgIHZhciB3YXJuaW5nQ29uZGl0
aW9uID0gZmFsc2U7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IHdhcm5pbmcod2FybmluZ0NvbmRpdGlvbiwgXCJUaGlzIHN5bnRoZXRpYyBldmVudCBpcyByZXVz
ZWQgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuIElmIHlvdSdyZSBzZWVpbmcgdGhpcywgXCIgKyBc
InlvdSdyZSAlcyBgJXNgIG9uIGEgcmVsZWFzZWQvbnVsbGlmaWVkIHN5bnRoZXRpYyBldmVudC4g
JXMuIFwiICsgJ0lmIHlvdSBtdXN0IGtlZXAgdGhlIG9yaWdpbmFsIHN5bnRoZXRpYyBldmVudCBh
cm91bmQsIHVzZSBldmVudC5wZXJzaXN0KCkuICcgKyAnU2VlIGh0dHBzOi8vZmIubWUvcmVhY3Qt
ZXZlbnQtcG9vbGluZyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nLCBhY3Rpb24sIHByb3BOYW1lLCBy
ZXN1bHQpIDogdm9pZCAwO1xuICB9XG59XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VC
UEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNFdmVudC5qc1xuICoq
IG1vZHVsZSBpZCA9IDEwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogS2Vl
cHMgdHJhY2sgb2YgdGhlIGN1cnJlbnQgb3duZXIuXG4gKlxuICogVGhlIGN1cnJlbnQgb3duZXIg
aXMgdGhlIGNvbXBvbmVudCB3aG8gc2hvdWxkIG93biBhbnkgY29tcG9uZW50cyB0aGF0IGFyZVxu
ICogY3VycmVudGx5IGJlaW5nIGNvbnN0cnVjdGVkLlxuICovXG52YXIgUmVhY3RDdXJyZW50T3du
ZXIgPSB7XG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogQHR5cGUge1JlYWN0Q29tcG9uZW50
fVxuICAgKi9cbiAgY3VycmVudDogbnVsbFxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEN1
cnJlbnRPd25lcjtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxu
ICoqIC4vfi9yZWFjdC9saWIvUmVhY3RDdXJyZW50T3duZXIuanNcbiAqKiBtb2R1bGUgaWQgPSAx
MVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUu
ZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL1JlYWN0Jyk7XG5cblxuXG4vKioqKioqKioqKioqKioq
KipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC9yZWFjdC5qc1xuICoqIG1vZHVs
ZSBpZCA9IDEyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdo
dCAyMDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxu
ICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRE9NTmFtZXNwYWNlcyA9IHJl
cXVpcmUoJy4vRE9NTmFtZXNwYWNlcycpO1xudmFyIHNldElubmVySFRNTCA9IHJlcXVpcmUoJy4v
c2V0SW5uZXJIVE1MJyk7XG5cbnZhciBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9u
ID0gcmVxdWlyZSgnLi9jcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uJyk7XG52YXIg
c2V0VGV4dENvbnRlbnQgPSByZXF1aXJlKCcuL3NldFRleHRDb250ZW50Jyk7XG5cbnZhciBFTEVN
RU5UX05PREVfVFlQRSA9IDE7XG52YXIgRE9DVU1FTlRfRlJBR01FTlRfTk9ERV9UWVBFID0gMTE7
XG5cbi8qKlxuICogSW4gSUUgKDgtMTEpIGFuZCBFZGdlLCBhcHBlbmRpbmcgbm9kZXMgd2l0aCBu
byBjaGlsZHJlbiBpcyBkcmFtYXRpY2FsbHlcbiAqIGZhc3RlciB0aGFuIGFwcGVuZGluZyBhIGZ1
bGwgc3VidHJlZSwgc28gd2UgZXNzZW50aWFsbHkgcXVldWUgdXAgdGhlXG4gKiAuYXBwZW5kQ2hp
bGQgY2FsbHMgaGVyZSBhbmQgYXBwbHkgdGhlbSBzbyBlYWNoIG5vZGUgaXMgYWRkZWQgdG8gaXRz
IHBhcmVudFxuICogYmVmb3JlIGFueSBjaGlsZHJlbiBhcmUgYWRkZWQuXG4gKlxuICogSW4gb3Ro
ZXIgYnJvd3NlcnMsIGRvaW5nIHNvIGlzIHNsb3dlciBvciBuZXV0cmFsIGNvbXBhcmVkIHRvIHRo
ZSBvdGhlciBvcmRlclxuICogKGluIEZpcmVmb3gsIHR3aWNlIGFzIHNsb3cpIHNvIHdlIG9ubHkg
ZG8gdGhpcyBpbnZlcnNpb24gaW4gSUUuXG4gKlxuICogU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9z
cGljeWovaW5uZXJodG1sLXZzLWNyZWF0ZWVsZW1lbnQtdnMtY2xvbmVub2RlLlxuICovXG52YXIg
ZW5hYmxlTGF6eSA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGRv
Y3VtZW50LmRvY3VtZW50TW9kZSA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG5hdmlnYXRvciAhPT0g
J3VuZGVmaW5lZCcgJiYgdHlwZW9mIG5hdmlnYXRvci51c2VyQWdlbnQgPT09ICdzdHJpbmcnICYm
IC9cXGJFZGdlXFwvXFxkLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQpO1xuXG5mdW5jdGlvbiBp
bnNlcnRUcmVlQ2hpbGRyZW4odHJlZSkge1xuICBpZiAoIWVuYWJsZUxhenkpIHtcbiAgICByZXR1
cm47XG4gIH1cbiAgdmFyIG5vZGUgPSB0cmVlLm5vZGU7XG4gIHZhciBjaGlsZHJlbiA9IHRyZWUu
Y2hpbGRyZW47XG4gIGlmIChjaGlsZHJlbi5sZW5ndGgpIHtcbiAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpbnNlcnRUcmVlQmVmb3JlKG5vZGUs
IGNoaWxkcmVuW2ldLCBudWxsKTtcbiAgICB9XG4gIH0gZWxzZSBpZiAodHJlZS5odG1sICE9IG51
bGwpIHtcbiAgICBzZXRJbm5lckhUTUwobm9kZSwgdHJlZS5odG1sKTtcbiAgfSBlbHNlIGlmICh0
cmVlLnRleHQgIT0gbnVsbCkge1xuICAgIHNldFRleHRDb250ZW50KG5vZGUsIHRyZWUudGV4dCk7
XG4gIH1cbn1cblxudmFyIGluc2VydFRyZWVCZWZvcmUgPSBjcmVhdGVNaWNyb3NvZnRVbnNhZmVM
b2NhbEZ1bmN0aW9uKGZ1bmN0aW9uIChwYXJlbnROb2RlLCB0cmVlLCByZWZlcmVuY2VOb2RlKSB7
XG4gIC8vIERvY3VtZW50RnJhZ21lbnRzIGFyZW4ndCBhY3R1YWxseSBwYXJ0IG9mIHRoZSBET00g
YWZ0ZXIgaW5zZXJ0aW9uIHNvXG4gIC8vIGFwcGVuZGluZyBjaGlsZHJlbiB3b24ndCB1cGRhdGUg
dGhlIERPTS4gV2UgbmVlZCB0byBlbnN1cmUgdGhlIGZyYWdtZW50XG4gIC8vIGlzIHByb3Blcmx5
IHBvcHVsYXRlZCBmaXJzdCwgYnJlYWtpbmcgb3V0IG9mIG91ciBsYXp5IGFwcHJvYWNoIGZvciBq
dXN0XG4gIC8vIHRoaXMgbGV2ZWwuIEFsc28sIHNvbWUgPG9iamVjdD4gcGx1Z2lucyAobGlrZSBG
bGFzaCBQbGF5ZXIpIHdpbGwgcmVhZFxuICAvLyA8cGFyYW0+IG5vZGVzIGltbWVkaWF0ZWx5IHVw
b24gaW5zZXJ0aW9uIGludG8gdGhlIERPTSwgc28gPG9iamVjdD5cbiAgLy8gbXVzdCBhbHNvIGJl
IHBvcHVsYXRlZCBwcmlvciB0byBpbnNlcnRpb24gaW50byB0aGUgRE9NLlxuICBpZiAodHJlZS5u
b2RlLm5vZGVUeXBlID09PSBET0NVTUVOVF9GUkFHTUVOVF9OT0RFX1RZUEUgfHwgdHJlZS5ub2Rl
Lm5vZGVUeXBlID09PSBFTEVNRU5UX05PREVfVFlQRSAmJiB0cmVlLm5vZGUubm9kZU5hbWUudG9M
b3dlckNhc2UoKSA9PT0gJ29iamVjdCcgJiYgKHRyZWUubm9kZS5uYW1lc3BhY2VVUkkgPT0gbnVs
bCB8fCB0cmVlLm5vZGUubmFtZXNwYWNlVVJJID09PSBET01OYW1lc3BhY2VzLmh0bWwpKSB7XG4g
ICAgaW5zZXJ0VHJlZUNoaWxkcmVuKHRyZWUpO1xuICAgIHBhcmVudE5vZGUuaW5zZXJ0QmVmb3Jl
KHRyZWUubm9kZSwgcmVmZXJlbmNlTm9kZSk7XG4gIH0gZWxzZSB7XG4gICAgcGFyZW50Tm9kZS5p
bnNlcnRCZWZvcmUodHJlZS5ub2RlLCByZWZlcmVuY2VOb2RlKTtcbiAgICBpbnNlcnRUcmVlQ2hp
bGRyZW4odHJlZSk7XG4gIH1cbn0pO1xuXG5mdW5jdGlvbiByZXBsYWNlQ2hpbGRXaXRoVHJlZShv
bGROb2RlLCBuZXdUcmVlKSB7XG4gIG9sZE5vZGUucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobmV3
VHJlZS5ub2RlLCBvbGROb2RlKTtcbiAgaW5zZXJ0VHJlZUNoaWxkcmVuKG5ld1RyZWUpO1xufVxu
XG5mdW5jdGlvbiBxdWV1ZUNoaWxkKHBhcmVudFRyZWUsIGNoaWxkVHJlZSkge1xuICBpZiAoZW5h
YmxlTGF6eSkge1xuICAgIHBhcmVudFRyZWUuY2hpbGRyZW4ucHVzaChjaGlsZFRyZWUpO1xuICB9
IGVsc2Uge1xuICAgIHBhcmVudFRyZWUubm9kZS5hcHBlbmRDaGlsZChjaGlsZFRyZWUubm9kZSk7
XG4gIH1cbn1cblxuZnVuY3Rpb24gcXVldWVIVE1MKHRyZWUsIGh0bWwpIHtcbiAgaWYgKGVuYWJs
ZUxhenkpIHtcbiAgICB0cmVlLmh0bWwgPSBodG1sO1xuICB9IGVsc2Uge1xuICAgIHNldElubmVy
SFRNTCh0cmVlLm5vZGUsIGh0bWwpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHF1ZXVlVGV4dCh0cmVl
LCB0ZXh0KSB7XG4gIGlmIChlbmFibGVMYXp5KSB7XG4gICAgdHJlZS50ZXh0ID0gdGV4dDtcbiAg
fSBlbHNlIHtcbiAgICBzZXRUZXh0Q29udGVudCh0cmVlLm5vZGUsIHRleHQpO1xuICB9XG59XG5c
bmZ1bmN0aW9uIHRvU3RyaW5nKCkge1xuICByZXR1cm4gdGhpcy5ub2RlLm5vZGVOYW1lO1xufVxu
XG5mdW5jdGlvbiBET01MYXp5VHJlZShub2RlKSB7XG4gIHJldHVybiB7XG4gICAgbm9kZTogbm9k
ZSxcbiAgICBjaGlsZHJlbjogW10sXG4gICAgaHRtbDogbnVsbCxcbiAgICB0ZXh0OiBudWxsLFxu
ICAgIHRvU3RyaW5nOiB0b1N0cmluZ1xuICB9O1xufVxuXG5ET01MYXp5VHJlZS5pbnNlcnRUcmVl
QmVmb3JlID0gaW5zZXJ0VHJlZUJlZm9yZTtcbkRPTUxhenlUcmVlLnJlcGxhY2VDaGlsZFdpdGhU
cmVlID0gcmVwbGFjZUNoaWxkV2l0aFRyZWU7XG5ET01MYXp5VHJlZS5xdWV1ZUNoaWxkID0gcXVl
dWVDaGlsZDtcbkRPTUxhenlUcmVlLnF1ZXVlSFRNTCA9IHF1ZXVlSFRNTDtcbkRPTUxhenlUcmVl
LnF1ZXVlVGV4dCA9IHF1ZXVlVGV4dDtcblxubW9kdWxlLmV4cG9ydHMgPSBET01MYXp5VHJlZTtc
blxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFj
dC1kb20vbGliL0RPTUxhenlUcmVlLmpzXG4gKiogbW9kdWxlIGlkID0gMTRcbiAqKiBtb2R1bGUg
Y2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4g
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNl
IHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52
YXJpYW50Jyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQn
KTtcblxuZnVuY3Rpb24gY2hlY2tNYXNrKHZhbHVlLCBiaXRtYXNrKSB7XG4gIHJldHVybiAodmFs
dWUgJiBiaXRtYXNrKSA9PT0gYml0bWFzaztcbn1cblxudmFyIERPTVByb3BlcnR5SW5qZWN0aW9u
ID0ge1xuICAvKipcbiAgICogTWFwcGluZyBmcm9tIG5vcm1hbGl6ZWQsIGNhbWVsY2FzZWQgcHJv
cGVydHkgbmFtZXMgdG8gYSBjb25maWd1cmF0aW9uIHRoYXRcbiAgICogc3BlY2lmaWVzIGhvdyB0
aGUgYXNzb2NpYXRlZCBET00gcHJvcGVydHkgc2hvdWxkIGJlIGFjY2Vzc2VkIG9yIHJlbmRlcmVk
LlxuICAgKi9cbiAgTVVTVF9VU0VfUFJPUEVSVFk6IDB4MSxcbiAgSEFTX0JPT0xFQU5fVkFMVUU6
IDB4NCxcbiAgSEFTX05VTUVSSUNfVkFMVUU6IDB4OCxcbiAgSEFTX1BPU0lUSVZFX05VTUVSSUNf
VkFMVUU6IDB4MTAgfCAweDgsXG4gIEhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUU6IDB4MjAs
XG5cbiAgLyoqXG4gICAqIEluamVjdCBzb21lIHNwZWNpYWxpemVkIGtub3dsZWRnZSBhYm91dCB0
aGUgRE9NLiBUaGlzIHRha2VzIGEgY29uZmlnIG9iamVjdFxuICAgKiB3aXRoIHRoZSBmb2xsb3dp
bmcgcHJvcGVydGllczpcbiAgICpcbiAgICogaXNDdXN0b21BdHRyaWJ1dGU6IGZ1bmN0aW9uIHRo
YXQgZ2l2ZW4gYW4gYXR0cmlidXRlIG5hbWUgd2lsbCByZXR1cm4gdHJ1ZVxuICAgKiBpZiBpdCBj
YW4gYmUgaW5zZXJ0ZWQgaW50byB0aGUgRE9NIHZlcmJhdGltLiBVc2VmdWwgZm9yIGRhdGEtKiBv
ciBhcmlhLSpcbiAgICogYXR0cmlidXRlcyB3aGVyZSBpdCdzIGltcG9zc2libGUgdG8gZW51bWVy
YXRlIGFsbCBvZiB0aGUgcG9zc2libGVcbiAgICogYXR0cmlidXRlIG5hbWVzLFxuICAgKlxuICAg
KiBQcm9wZXJ0aWVzOiBvYmplY3QgbWFwcGluZyBET00gcHJvcGVydHkgbmFtZSB0byBvbmUgb2Yg
dGhlXG4gICAqIERPTVByb3BlcnR5SW5qZWN0aW9uIGNvbnN0YW50cyBvciBudWxsLiBJZiB5b3Vy
IGF0dHJpYnV0ZSBpc24ndCBpbiBoZXJlLFxuICAgKiBpdCB3b24ndCBnZXQgd3JpdHRlbiB0byB0
aGUgRE9NLlxuICAgKlxuICAgKiBET01BdHRyaWJ1dGVOYW1lczogb2JqZWN0IG1hcHBpbmcgUmVh
Y3QgYXR0cmlidXRlIG5hbWUgdG8gdGhlIERPTVxuICAgKiBhdHRyaWJ1dGUgbmFtZS4gQXR0cmli
dXRlIG5hbWVzIG5vdCBzcGVjaWZpZWQgdXNlIHRoZSAqKmxvd2VyY2FzZSoqXG4gICAqIG5vcm1h
bGl6ZWQgbmFtZS5cbiAgICpcbiAgICogRE9NQXR0cmlidXRlTmFtZXNwYWNlczogb2JqZWN0IG1h
cHBpbmcgUmVhY3QgYXR0cmlidXRlIG5hbWUgdG8gdGhlIERPTVxuICAgKiBhdHRyaWJ1dGUgbmFt
ZXNwYWNlIFVSTC4gKEF0dHJpYnV0ZSBuYW1lcyBub3Qgc3BlY2lmaWVkIHVzZSBubyBuYW1lc3Bh
Y2UuKVxuICAgKlxuICAgKiBET01Qcm9wZXJ0eU5hbWVzOiBzaW1pbGFyIHRvIERPTUF0dHJpYnV0
ZU5hbWVzIGJ1dCBmb3IgRE9NIHByb3BlcnRpZXMuXG4gICAqIFByb3BlcnR5IG5hbWVzIG5vdCBz
cGVjaWZpZWQgdXNlIHRoZSBub3JtYWxpemVkIG5hbWUuXG4gICAqXG4gICAqIERPTU11dGF0aW9u
TWV0aG9kczogUHJvcGVydGllcyB0aGF0IHJlcXVpcmUgc3BlY2lhbCBtdXRhdGlvbiBtZXRob2Rz
LiBJZlxuICAgKiBgdmFsdWVgIGlzIHVuZGVmaW5lZCwgdGhlIG11dGF0aW9uIG1ldGhvZCBzaG91
bGQgdW5zZXQgdGhlIHByb3BlcnR5LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gZG9tUHJv
cGVydHlDb25maWcgdGhlIGNvbmZpZyBhcyBkZXNjcmliZWQgYWJvdmUuXG4gICAqL1xuICBpbmpl
Y3RET01Qcm9wZXJ0eUNvbmZpZzogZnVuY3Rpb24gKGRvbVByb3BlcnR5Q29uZmlnKSB7XG4gICAg
dmFyIEluamVjdGlvbiA9IERPTVByb3BlcnR5SW5qZWN0aW9uO1xuICAgIHZhciBQcm9wZXJ0aWVz
ID0gZG9tUHJvcGVydHlDb25maWcuUHJvcGVydGllcyB8fCB7fTtcbiAgICB2YXIgRE9NQXR0cmli
dXRlTmFtZXNwYWNlcyA9IGRvbVByb3BlcnR5Q29uZmlnLkRPTUF0dHJpYnV0ZU5hbWVzcGFjZXMg
fHwge307XG4gICAgdmFyIERPTUF0dHJpYnV0ZU5hbWVzID0gZG9tUHJvcGVydHlDb25maWcuRE9N
QXR0cmlidXRlTmFtZXMgfHwge307XG4gICAgdmFyIERPTVByb3BlcnR5TmFtZXMgPSBkb21Qcm9w
ZXJ0eUNvbmZpZy5ET01Qcm9wZXJ0eU5hbWVzIHx8IHt9O1xuICAgIHZhciBET01NdXRhdGlvbk1l
dGhvZHMgPSBkb21Qcm9wZXJ0eUNvbmZpZy5ET01NdXRhdGlvbk1ldGhvZHMgfHwge307XG5cbiAg
ICBpZiAoZG9tUHJvcGVydHlDb25maWcuaXNDdXN0b21BdHRyaWJ1dGUpIHtcbiAgICAgIERPTVBy
b3BlcnR5Ll9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9ucy5wdXNoKGRvbVByb3BlcnR5Q29uZmln
LmlzQ3VzdG9tQXR0cmlidXRlKTtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBQ
cm9wZXJ0aWVzKSB7XG4gICAgICAhIURPTVByb3BlcnR5LnByb3BlcnRpZXMuaGFzT3duUHJvcGVy
dHkocHJvcE5hbWUpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGlu
dmFyaWFudChmYWxzZSwgJ2luamVjdERPTVByb3BlcnR5Q29uZmlnKC4uLik6IFlvdVxcJ3JlIHRy
eWluZyB0byBpbmplY3QgRE9NIHByb3BlcnR5IFxcJyVzXFwnIHdoaWNoIGhhcyBhbHJlYWR5IGJl
ZW4gaW5qZWN0ZWQuIFlvdSBtYXkgYmUgYWNjaWRlbnRhbGx5IGluamVjdGluZyB0aGUgc2FtZSBE
T00gcHJvcGVydHkgY29uZmlnIHR3aWNlLCBvciB5b3UgbWF5IGJlIGluamVjdGluZyB0d28gY29u
ZmlncyB0aGF0IGhhdmUgY29uZmxpY3RpbmcgcHJvcGVydHkgbmFtZXMuJywgcHJvcE5hbWUpIDog
X3Byb2RJbnZhcmlhbnQoJzQ4JywgcHJvcE5hbWUpIDogdm9pZCAwO1xuXG4gICAgICB2YXIgbG93
ZXJDYXNlZCA9IHByb3BOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgICB2YXIgcHJvcENvbmZpZyA9
IFByb3BlcnRpZXNbcHJvcE5hbWVdO1xuXG4gICAgICB2YXIgcHJvcGVydHlJbmZvID0ge1xuICAg
ICAgICBhdHRyaWJ1dGVOYW1lOiBsb3dlckNhc2VkLFxuICAgICAgICBhdHRyaWJ1dGVOYW1lc3Bh
Y2U6IG51bGwsXG4gICAgICAgIHByb3BlcnR5TmFtZTogcHJvcE5hbWUsXG4gICAgICAgIG11dGF0
aW9uTWV0aG9kOiBudWxsLFxuXG4gICAgICAgIG11c3RVc2VQcm9wZXJ0eTogY2hlY2tNYXNrKHBy
b3BDb25maWcsIEluamVjdGlvbi5NVVNUX1VTRV9QUk9QRVJUWSksXG4gICAgICAgIGhhc0Jvb2xl
YW5WYWx1ZTogY2hlY2tNYXNrKHByb3BDb25maWcsIEluamVjdGlvbi5IQVNfQk9PTEVBTl9WQUxV
RSksXG4gICAgICAgIGhhc051bWVyaWNWYWx1ZTogY2hlY2tNYXNrKHByb3BDb25maWcsIEluamVj
dGlvbi5IQVNfTlVNRVJJQ19WQUxVRSksXG4gICAgICAgIGhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVl
OiBjaGVja01hc2socHJvcENvbmZpZywgSW5qZWN0aW9uLkhBU19QT1NJVElWRV9OVU1FUklDX1ZB
TFVFKSxcbiAgICAgICAgaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZTogY2hlY2tNYXNrKHByb3BD
b25maWcsIEluamVjdGlvbi5IQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFKVxuICAgICAgfTtc
biAgICAgICEocHJvcGVydHlJbmZvLmhhc0Jvb2xlYW5WYWx1ZSArIHByb3BlcnR5SW5mby5oYXNO
dW1lcmljVmFsdWUgKyBwcm9wZXJ0eUluZm8uaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1ZSA8PSAx
KSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICdET01Qcm9wZXJ0eTogVmFsdWUgY2FuIGJlIG9uZSBvZiBib29sZWFuLCBvdmVybG9hZGVk
IGJvb2xlYW4sIG9yIG51bWVyaWMgdmFsdWUsIGJ1dCBub3QgYSBjb21iaW5hdGlvbjogJXMnLCBw
cm9wTmFtZSkgOiBfcHJvZEludmFyaWFudCgnNTAnLCBwcm9wTmFtZSkgOiB2b2lkIDA7XG5cbiAg
ICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAg
IERPTVByb3BlcnR5LmdldFBvc3NpYmxlU3RhbmRhcmROYW1lW2xvd2VyQ2FzZWRdID0gcHJvcE5h
bWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChET01BdHRyaWJ1dGVOYW1lcy5oYXNPd25Qcm9wZXJ0
eShwcm9wTmFtZSkpIHtcbiAgICAgICAgdmFyIGF0dHJpYnV0ZU5hbWUgPSBET01BdHRyaWJ1dGVO
YW1lc1twcm9wTmFtZV07XG4gICAgICAgIHByb3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1lID0gYXR0
cmlidXRlTmFtZTtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVj
dGlvbicpIHtcbiAgICAgICAgICBET01Qcm9wZXJ0eS5nZXRQb3NzaWJsZVN0YW5kYXJkTmFtZVth
dHRyaWJ1dGVOYW1lXSA9IHByb3BOYW1lO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlm
IChET01BdHRyaWJ1dGVOYW1lc3BhY2VzLmhhc093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAg
ICAgICBwcm9wZXJ0eUluZm8uYXR0cmlidXRlTmFtZXNwYWNlID0gRE9NQXR0cmlidXRlTmFtZXNw
YWNlc1twcm9wTmFtZV07XG4gICAgICB9XG5cbiAgICAgIGlmIChET01Qcm9wZXJ0eU5hbWVzLmhh
c093blByb3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICBwcm9wZXJ0eUluZm8ucHJvcGVydHlO
YW1lID0gRE9NUHJvcGVydHlOYW1lc1twcm9wTmFtZV07XG4gICAgICB9XG5cbiAgICAgIGlmIChE
T01NdXRhdGlvbk1ldGhvZHMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgIHBy
b3BlcnR5SW5mby5tdXRhdGlvbk1ldGhvZCA9IERPTU11dGF0aW9uTWV0aG9kc1twcm9wTmFtZV07
XG4gICAgICB9XG5cbiAgICAgIERPTVByb3BlcnR5LnByb3BlcnRpZXNbcHJvcE5hbWVdID0gcHJv
cGVydHlJbmZvO1xuICAgIH1cbiAgfVxufTtcblxuLyogZXNsaW50LWRpc2FibGUgbWF4LWxlbiAq
L1xudmFyIEFUVFJJQlVURV9OQU1FX1NUQVJUX0NIQVIgPSAnOkEtWl9hLXpcXFxcdTAwQzAtXFxc
XHUwMEQ2XFxcXHUwMEQ4LVxcXFx1MDBGNlxcXFx1MDBGOC1cXFxcdTAyRkZcXFxcdTAzNzAtXFxc
XHUwMzdEXFxcXHUwMzdGLVxcXFx1MUZGRlxcXFx1MjAwQy1cXFxcdTIwMERcXFxcdTIwNzAtXFxc
XHUyMThGXFxcXHUyQzAwLVxcXFx1MkZFRlxcXFx1MzAwMS1cXFxcdUQ3RkZcXFxcdUY5MDAtXFxc
XHVGRENGXFxcXHVGREYwLVxcXFx1RkZGRCc7XG4vKiBlc2xpbnQtZW5hYmxlIG1heC1sZW4gKi9c
blxuLyoqXG4gKiBET01Qcm9wZXJ0eSBleHBvcnRzIGxvb2t1cCBvYmplY3RzIHRoYXQgY2FuIGJl
IHVzZWQgbGlrZSBmdW5jdGlvbnM6XG4gKlxuICogICA+IERPTVByb3BlcnR5LmlzVmFsaWRbJ2lk
J11cbiAqICAgdHJ1ZVxuICogICA+IERPTVByb3BlcnR5LmlzVmFsaWRbJ2Zvb2JhciddXG4gKiAg
IHVuZGVmaW5lZFxuICpcbiAqIEFsdGhvdWdoIHRoaXMgbWF5IGJlIGNvbmZ1c2luZywgaXQgcGVy
Zm9ybXMgYmV0dGVyIGluIGdlbmVyYWwuXG4gKlxuICogQHNlZSBodHRwOi8vanNwZXJmLmNvbS9r
ZXktZXhpc3RzXG4gKiBAc2VlIGh0dHA6Ly9qc3BlcmYuY29tL2tleS1taXNzaW5nXG4gKi9cbnZh
ciBET01Qcm9wZXJ0eSA9IHtcbiAgSURfQVRUUklCVVRFX05BTUU6ICdkYXRhLXJlYWN0aWQnLFxu
ICBST09UX0FUVFJJQlVURV9OQU1FOiAnZGF0YS1yZWFjdHJvb3QnLFxuXG4gIEFUVFJJQlVURV9O
QU1FX1NUQVJUX0NIQVI6IEFUVFJJQlVURV9OQU1FX1NUQVJUX0NIQVIsXG4gIEFUVFJJQlVURV9O
QU1FX0NIQVI6IEFUVFJJQlVURV9OQU1FX1NUQVJUX0NIQVIgKyAnXFxcXC0uMC05XFxcXHUwMEI3
XFxcXHUwMzAwLVxcXFx1MDM2RlxcXFx1MjAzRi1cXFxcdTIwNDAnLFxuXG4gIC8qKlxuICAgKiBN
YXAgZnJvbSBwcm9wZXJ0eSBcInN0YW5kYXJkIG5hbWVcIiB0byBhbiBvYmplY3Qgd2l0aCBpbmZv
IGFib3V0IGhvdyB0byBzZXRcbiAgICogdGhlIHByb3BlcnR5IGluIHRoZSBET00uIEVhY2ggb2Jq
ZWN0IGNvbnRhaW5zOlxuICAgKlxuICAgKiBhdHRyaWJ1dGVOYW1lOlxuICAgKiAgIFVzZWQgd2hl
biByZW5kZXJpbmcgbWFya3VwIG9yIHdpdGggYCpBdHRyaWJ1dGUoKWAuXG4gICAqIGF0dHJpYnV0
ZU5hbWVzcGFjZVxuICAgKiBwcm9wZXJ0eU5hbWU6XG4gICAqICAgVXNlZCBvbiBET00gbm9kZSBp
bnN0YW5jZXMuIChUaGlzIGluY2x1ZGVzIHByb3BlcnRpZXMgdGhhdCBtdXRhdGUgZHVlIHRvXG4g
ICAqICAgZXh0ZXJuYWwgZmFjdG9ycy4pXG4gICAqIG11dGF0aW9uTWV0aG9kOlxuICAgKiAgIElm
IG5vbi1udWxsLCB1c2VkIGluc3RlYWQgb2YgdGhlIHByb3BlcnR5IG9yIGBzZXRBdHRyaWJ1dGUo
KWAgYWZ0ZXJcbiAgICogICBpbml0aWFsIHJlbmRlci5cbiAgICogbXVzdFVzZVByb3BlcnR5Olxu
ICAgKiAgIFdoZXRoZXIgdGhlIHByb3BlcnR5IG11c3QgYmUgYWNjZXNzZWQgYW5kIG11dGF0ZWQg
YXMgYW4gb2JqZWN0IHByb3BlcnR5LlxuICAgKiBoYXNCb29sZWFuVmFsdWU6XG4gICAqICAgV2hl
dGhlciB0aGUgcHJvcGVydHkgc2hvdWxkIGJlIHJlbW92ZWQgd2hlbiBzZXQgdG8gYSBmYWxzZXkg
dmFsdWUuXG4gICAqIGhhc051bWVyaWNWYWx1ZTpcbiAgICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0
eSBtdXN0IGJlIG51bWVyaWMgb3IgcGFyc2UgYXMgYSBudW1lcmljIGFuZCBzaG91bGQgYmVcbiAg
ICogICByZW1vdmVkIHdoZW4gc2V0IHRvIGEgZmFsc2V5IHZhbHVlLlxuICAgKiBoYXNQb3NpdGl2
ZU51bWVyaWNWYWx1ZTpcbiAgICogICBXaGV0aGVyIHRoZSBwcm9wZXJ0eSBtdXN0IGJlIHBvc2l0
aXZlIG51bWVyaWMgb3IgcGFyc2UgYXMgYSBwb3NpdGl2ZVxuICAgKiAgIG51bWVyaWMgYW5kIHNo
b3VsZCBiZSByZW1vdmVkIHdoZW4gc2V0IHRvIGEgZmFsc2V5IHZhbHVlLlxuICAgKiBoYXNPdmVy
bG9hZGVkQm9vbGVhblZhbHVlOlxuICAgKiAgIFdoZXRoZXIgdGhlIHByb3BlcnR5IGNhbiBiZSB1
c2VkIGFzIGEgZmxhZyBhcyB3ZWxsIGFzIHdpdGggYSB2YWx1ZS5cbiAgICogICBSZW1vdmVkIHdo
ZW4gc3RyaWN0bHkgZXF1YWwgdG8gZmFsc2U7IHByZXNlbnQgd2l0aG91dCBhIHZhbHVlIHdoZW5c
biAgICogICBzdHJpY3RseSBlcXVhbCB0byB0cnVlOyBwcmVzZW50IHdpdGggYSB2YWx1ZSBvdGhl
cndpc2UuXG4gICAqL1xuICBwcm9wZXJ0aWVzOiB7fSxcblxuICAvKipcbiAgICogTWFwcGluZyBm
cm9tIGxvd2VyY2FzZSBwcm9wZXJ0eSBuYW1lcyB0byB0aGUgcHJvcGVybHkgY2FzZWQgdmVyc2lv
biwgdXNlZFxuICAgKiB0byB3YXJuIGluIHRoZSBjYXNlIG9mIG1pc3NpbmcgcHJvcGVydGllcy4g
QXZhaWxhYmxlIG9ubHkgaW4gX19ERVZfXy5cbiAgICpcbiAgICogYXV0b2ZvY3VzIGlzIHByZWRl
ZmluZWQsIGJlY2F1c2UgYWRkaW5nIGl0IHRvIHRoZSBwcm9wZXJ0eSB3aGl0ZWxpc3RcbiAgICog
Y2F1c2VzIHVuaW50ZW5kZWQgc2lkZSBlZmZlY3RzLlxuICAgKlxuICAgKiBAdHlwZSB7T2JqZWN0
fVxuICAgKi9cbiAgZ2V0UG9zc2libGVTdGFuZGFyZE5hbWU6IHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyB7IGF1dG9mb2N1czogJ2F1dG9Gb2N1cycgfSA6IG51bGwsXG5c
biAgLyoqXG4gICAqIEFsbCBvZiB0aGUgaXNDdXN0b21BdHRyaWJ1dGUoKSBmdW5jdGlvbnMgdGhh
dCBoYXZlIGJlZW4gaW5qZWN0ZWQuXG4gICAqL1xuICBfaXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlv
bnM6IFtdLFxuXG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBhIHByb3BlcnR5IG5hbWUgaXMg
YSBjdXN0b20gYXR0cmlidXRlLlxuICAgKiBAbWV0aG9kXG4gICAqL1xuICBpc0N1c3RvbUF0dHJp
YnV0ZTogZnVuY3Rpb24gKGF0dHJpYnV0ZU5hbWUpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8
IERPTVByb3BlcnR5Ll9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9ucy5sZW5ndGg7IGkrKykge1xu
ICAgICAgdmFyIGlzQ3VzdG9tQXR0cmlidXRlRm4gPSBET01Qcm9wZXJ0eS5faXNDdXN0b21BdHRy
aWJ1dGVGdW5jdGlvbnNbaV07XG4gICAgICBpZiAoaXNDdXN0b21BdHRyaWJ1dGVGbihhdHRyaWJ1
dGVOYW1lKSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0
dXJuIGZhbHNlO1xuICB9LFxuXG4gIGluamVjdGlvbjogRE9NUHJvcGVydHlJbmplY3Rpb25cbn07
XG5cbm1vZHVsZS5leHBvcnRzID0gRE9NUHJvcGVydHk7XG5cblxuLyoqKioqKioqKioqKioqKioq
XG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9ET01Qcm9wZXJ0eS5q
c1xuICoqIG1vZHVsZSBpZCA9IDE1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipc
biAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4g
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RS
ZWYgPSByZXF1aXJlKCcuL1JlYWN0UmVmJyk7XG52YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSBy
ZXF1aXJlKCcuL1JlYWN0SW5zdHJ1bWVudGF0aW9uJyk7XG5cbnZhciB3YXJuaW5nID0gcmVxdWly
ZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG4vKipcbiAqIEhlbHBlciB0byBjYWxsIFJlYWN0UmVm
LmF0dGFjaFJlZnMgd2l0aCB0aGlzIGNvbXBvc2l0ZSBjb21wb25lbnQsIHNwbGl0IG91dFxuICog
dG8gYXZvaWQgYWxsb2NhdGlvbnMgaW4gdGhlIHRyYW5zYWN0aW9uIG1vdW50LXJlYWR5IHF1ZXVl
LlxuICovXG5mdW5jdGlvbiBhdHRhY2hSZWZzKCkge1xuICBSZWFjdFJlZi5hdHRhY2hSZWZzKHRo
aXMsIHRoaXMuX2N1cnJlbnRFbGVtZW50KTtcbn1cblxudmFyIFJlYWN0UmVjb25jaWxlciA9IHtc
biAgLyoqXG4gICAqIEluaXRpYWxpemVzIHRoZSBjb21wb25lbnQsIHJlbmRlcnMgbWFya3VwLCBh
bmQgcmVnaXN0ZXJzIGV2ZW50IGxpc3RlbmVycy5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENv
bXBvbmVudH0gaW50ZXJuYWxJbnN0YW5jZVxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJh
bnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAg
ICogQHBhcmFtIHs/b2JqZWN0fSB0aGUgY29udGFpbmluZyBob3N0IGNvbXBvbmVudCBpbnN0YW5j
ZVxuICAgKiBAcGFyYW0gez9vYmplY3R9IGluZm8gYWJvdXQgdGhlIGhvc3QgY29udGFpbmVyXG4g
ICAqIEByZXR1cm4gez9zdHJpbmd9IFJlbmRlcmVkIG1hcmt1cCB0byBiZSBpbnNlcnRlZCBpbnRv
IHRoZSBET00uXG4gICAqIEBmaW5hbFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIG1vdW50Q29t
cG9uZW50OiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSwgdHJhbnNhY3Rpb24sIGhvc3RQYXJl
bnQsIGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0LCBwYXJlbnREZWJ1Z0lEKSAvLyAwIGluIHBy
b2R1Y3Rpb24gYW5kIGZvciByb290c1xuICB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lE
ICE9PSAwKSB7XG4gICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZm9y
ZU1vdW50Q29tcG9uZW50KGludGVybmFsSW5zdGFuY2UuX2RlYnVnSUQsIGludGVybmFsSW5zdGFu
Y2UuX2N1cnJlbnRFbGVtZW50LCBwYXJlbnREZWJ1Z0lEKTtcbiAgICAgIH1cbiAgICB9XG4gICAg
dmFyIG1hcmt1cCA9IGludGVybmFsSW5zdGFuY2UubW91bnRDb21wb25lbnQodHJhbnNhY3Rpb24s
IGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0LCBwYXJlbnREZWJ1Z0lEKTtc
biAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQgJiYgaW50ZXJuYWxJbnN0
YW5jZS5fY3VycmVudEVsZW1lbnQucmVmICE9IG51bGwpIHtcbiAgICAgIHRyYW5zYWN0aW9uLmdl
dFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoYXR0YWNoUmVmcywgaW50ZXJuYWxJbnN0YW5jZSk7
XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7
XG4gICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkge1xuICAgICAgICBS
ZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Nb3VudENvbXBvbmVudChpbnRlcm5hbElu
c3RhbmNlLl9kZWJ1Z0lEKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG1hcmt1cDtcbiAg
fSxcblxuICAvKipcbiAgICogUmV0dXJucyBhIHZhbHVlIHRoYXQgY2FuIGJlIHBhc3NlZCB0b1xu
ICAgKiBSZWFjdENvbXBvbmVudEVudmlyb25tZW50LnJlcGxhY2VOb2RlV2l0aE1hcmt1cC5cbiAg
ICovXG4gIGdldEhvc3ROb2RlOiBmdW5jdGlvbiAoaW50ZXJuYWxJbnN0YW5jZSkge1xuICAgIHJl
dHVybiBpbnRlcm5hbEluc3RhbmNlLmdldEhvc3ROb2RlKCk7XG4gIH0sXG5cbiAgLyoqXG4gICAq
IFJlbGVhc2VzIGFueSByZXNvdXJjZXMgYWxsb2NhdGVkIGJ5IGBtb3VudENvbXBvbmVudGAuXG4g
ICAqXG4gICAqIEBmaW5hbFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHVubW91bnRDb21wb25l
bnQ6IGZ1bmN0aW9uIChpbnRlcm5hbEluc3RhbmNlLCBzYWZlbHkpIHtcbiAgICBpZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKGludGVybmFsSW5z
dGFuY2UuX2RlYnVnSUQgIT09IDApIHtcbiAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVi
dWdUb29sLm9uQmVmb3JlVW5tb3VudENvbXBvbmVudChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lE
KTtcbiAgICAgIH1cbiAgICB9XG4gICAgUmVhY3RSZWYuZGV0YWNoUmVmcyhpbnRlcm5hbEluc3Rh
bmNlLCBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxlbWVudCk7XG4gICAgaW50ZXJuYWxJbnN0
YW5jZS51bm1vdW50Q29tcG9uZW50KHNhZmVseSk7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1
Z0lEICE9PSAwKSB7XG4gICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblVu
bW91bnRDb21wb25lbnQoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCk7XG4gICAgICB9XG4gICAg
fVxuICB9LFxuXG4gIC8qKlxuICAgKiBVcGRhdGUgYSBjb21wb25lbnQgdXNpbmcgYSBuZXcgZWxl
bWVudC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gaW50ZXJuYWxJbnN0YW5j
ZVxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4dEVsZW1lbnRcbiAgICogQHBhcmFtIHtS
ZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge29iamVj
dH0gY29udGV4dFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHJlY2VpdmVDb21wb25lbnQ6IGZ1
bmN0aW9uIChpbnRlcm5hbEluc3RhbmNlLCBuZXh0RWxlbWVudCwgdHJhbnNhY3Rpb24sIGNvbnRl
eHQpIHtcbiAgICB2YXIgcHJldkVsZW1lbnQgPSBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxl
bWVudDtcblxuICAgIGlmIChuZXh0RWxlbWVudCA9PT0gcHJldkVsZW1lbnQgJiYgY29udGV4dCA9
PT0gaW50ZXJuYWxJbnN0YW5jZS5fY29udGV4dCkge1xuICAgICAgLy8gU2luY2UgZWxlbWVudHMg
YXJlIGltbXV0YWJsZSBhZnRlciB0aGUgb3duZXIgaXMgcmVuZGVyZWQsXG4gICAgICAvLyB3ZSBj
YW4gZG8gYSBjaGVhcCBpZGVudGl0eSBjb21wYXJlIGhlcmUgdG8gZGV0ZXJtaW5lIGlmIHRoaXMg
aXMgYVxuICAgICAgLy8gc3VwZXJmbHVvdXMgcmVjb25jaWxlLiBJdCdzIHBvc3NpYmxlIGZvciBz
dGF0ZSB0byBiZSBtdXRhYmxlIGJ1dCBzdWNoXG4gICAgICAvLyBjaGFuZ2Ugc2hvdWxkIHRyaWdn
ZXIgYW4gdXBkYXRlIG9mIHRoZSBvd25lciB3aGljaCB3b3VsZCByZWNyZWF0ZVxuICAgICAgLy8g
dGhlIGVsZW1lbnQuIFdlIGV4cGxpY2l0bHkgY2hlY2sgZm9yIHRoZSBleGlzdGVuY2Ugb2YgYW4g
b3duZXIgc2luY2VcbiAgICAgIC8vIGl0J3MgcG9zc2libGUgZm9yIGFuIGVsZW1lbnQgY3JlYXRl
ZCBvdXRzaWRlIGEgY29tcG9zaXRlIHRvIGJlXG4gICAgICAvLyBkZWVwbHkgbXV0YXRlZCBhbmQg
cmV1c2VkLlxuXG4gICAgICAvLyBUT0RPOiBCYWlsaW5nIG91dCBlYXJseSBpcyBqdXN0IGEgcGVy
ZiBvcHRpbWl6YXRpb24gcmlnaHQ/XG4gICAgICAvLyBUT0RPOiBSZW1vdmluZyB0aGUgcmV0dXJu
IHN0YXRlbWVudCBzaG91bGQgYWZmZWN0IGNvcnJlY3RuZXNzP1xuICAgICAgcmV0dXJuO1xuICAg
IH1cblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
ICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkge1xuICAgICAgICBSZWFj
dEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVVcGRhdGVDb21wb25lbnQoaW50ZXJu
YWxJbnN0YW5jZS5fZGVidWdJRCwgbmV4dEVsZW1lbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAg
IHZhciByZWZzQ2hhbmdlZCA9IFJlYWN0UmVmLnNob3VsZFVwZGF0ZVJlZnMocHJldkVsZW1lbnQs
IG5leHRFbGVtZW50KTtcblxuICAgIGlmIChyZWZzQ2hhbmdlZCkge1xuICAgICAgUmVhY3RSZWYu
ZGV0YWNoUmVmcyhpbnRlcm5hbEluc3RhbmNlLCBwcmV2RWxlbWVudCk7XG4gICAgfVxuXG4gICAg
aW50ZXJuYWxJbnN0YW5jZS5yZWNlaXZlQ29tcG9uZW50KG5leHRFbGVtZW50LCB0cmFuc2FjdGlv
biwgY29udGV4dCk7XG5cbiAgICBpZiAocmVmc0NoYW5nZWQgJiYgaW50ZXJuYWxJbnN0YW5jZS5f
Y3VycmVudEVsZW1lbnQgJiYgaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVsZW1lbnQucmVmICE9
IG51bGwpIHtcbiAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUo
YXR0YWNoUmVmcywgaW50ZXJuYWxJbnN0YW5jZSk7XG4gICAgfVxuXG4gICAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChpbnRlcm5hbEluc3Rh
bmNlLl9kZWJ1Z0lEICE9PSAwKSB7XG4gICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVn
VG9vbC5vblVwZGF0ZUNvbXBvbmVudChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lEKTtcbiAgICAg
IH1cbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIEZsdXNoIGFueSBkaXJ0eSBjaGFuZ2VzIGlu
IGEgY29tcG9uZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBpbnRlcm5h
bEluc3RhbmNlXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNh
Y3Rpb25cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnk6
IGZ1bmN0aW9uIChpbnRlcm5hbEluc3RhbmNlLCB0cmFuc2FjdGlvbiwgdXBkYXRlQmF0Y2hOdW1i
ZXIpIHtcbiAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fdXBkYXRlQmF0Y2hOdW1iZXIgIT09IHVw
ZGF0ZUJhdGNoTnVtYmVyKSB7XG4gICAgICAvLyBUaGUgY29tcG9uZW50J3MgZW5xdWV1ZWQgYmF0
Y2ggbnVtYmVyIHNob3VsZCBhbHdheXMgYmUgdGhlIGN1cnJlbnRcbiAgICAgIC8vIGJhdGNoIG9y
IHRoZSBmb2xsb3dpbmcgb25lLlxuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyA/IHdhcm5pbmcoaW50ZXJuYWxJbnN0YW5jZS5fdXBkYXRlQmF0Y2hOdW1iZXIgPT0g
bnVsbCB8fCBpbnRlcm5hbEluc3RhbmNlLl91cGRhdGVCYXRjaE51bWJlciA9PT0gdXBkYXRlQmF0
Y2hOdW1iZXIgKyAxLCAncGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5OiBVbmV4cGVjdGVkIGJhdGNo
IG51bWJlciAoY3VycmVudCAlcywgJyArICdwZW5kaW5nICVzKScsIHVwZGF0ZUJhdGNoTnVtYmVy
LCBpbnRlcm5hbEluc3RhbmNlLl91cGRhdGVCYXRjaE51bWJlcikgOiB2b2lkIDA7XG4gICAgICBy
ZXR1cm47XG4gICAgfVxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgICBpZiAoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkge1xuICAg
ICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZvcmVVcGRhdGVDb21wb25l
bnQoaW50ZXJuYWxJbnN0YW5jZS5fZGVidWdJRCwgaW50ZXJuYWxJbnN0YW5jZS5fY3VycmVudEVs
ZW1lbnQpO1xuICAgICAgfVxuICAgIH1cbiAgICBpbnRlcm5hbEluc3RhbmNlLnBlcmZvcm1VcGRh
dGVJZk5lY2Vzc2FyeSh0cmFuc2FjdGlvbik7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGlmIChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lE
ICE9PSAwKSB7XG4gICAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vblVwZGF0
ZUNvbXBvbmVudChpbnRlcm5hbEluc3RhbmNlLl9kZWJ1Z0lEKTtcbiAgICAgIH1cbiAgICB9XG4g
IH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RSZWNvbmNpbGVyO1xuXG5cbi8qKioqKioq
KioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVh
Y3RSZWNvbmNpbGVyLmpzXG4gKiogbW9kdWxlIGlkID0gMTZcbiAqKiBtb2R1bGUgY2h1bmtzID0g
MFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5c
biAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7
XG5cbnZhciBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuXG52YXIgUmVhY3RC
YXNlQ2xhc3NlcyA9IHJlcXVpcmUoJy4vUmVhY3RCYXNlQ2xhc3NlcycpO1xudmFyIFJlYWN0Q2hp
bGRyZW4gPSByZXF1aXJlKCcuL1JlYWN0Q2hpbGRyZW4nKTtcbnZhciBSZWFjdERPTUZhY3Rvcmll
cyA9IHJlcXVpcmUoJy4vUmVhY3RET01GYWN0b3JpZXMnKTtcbnZhciBSZWFjdEVsZW1lbnQgPSBy
ZXF1aXJlKCcuL1JlYWN0RWxlbWVudCcpO1xudmFyIFJlYWN0UHJvcFR5cGVzID0gcmVxdWlyZSgn
Li9SZWFjdFByb3BUeXBlcycpO1xudmFyIFJlYWN0VmVyc2lvbiA9IHJlcXVpcmUoJy4vUmVhY3RW
ZXJzaW9uJyk7XG5cbnZhciBjcmVhdGVSZWFjdENsYXNzID0gcmVxdWlyZSgnLi9jcmVhdGVDbGFz
cycpO1xudmFyIG9ubHlDaGlsZCA9IHJlcXVpcmUoJy4vb25seUNoaWxkJyk7XG5cbnZhciBjcmVh
dGVFbGVtZW50ID0gUmVhY3RFbGVtZW50LmNyZWF0ZUVsZW1lbnQ7XG52YXIgY3JlYXRlRmFjdG9y
eSA9IFJlYWN0RWxlbWVudC5jcmVhdGVGYWN0b3J5O1xudmFyIGNsb25lRWxlbWVudCA9IFJlYWN0
RWxlbWVudC5jbG9uZUVsZW1lbnQ7XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nKSB7XG4gIHZhciBsb3dQcmlvcml0eVdhcm5pbmcgPSByZXF1aXJlKCcuL2xvd1By
aW9yaXR5V2FybmluZycpO1xuICB2YXIgY2FuRGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL2Nh
bkRlZmluZVByb3BlcnR5Jyk7XG4gIHZhciBSZWFjdEVsZW1lbnRWYWxpZGF0b3IgPSByZXF1aXJl
KCcuL1JlYWN0RWxlbWVudFZhbGlkYXRvcicpO1xuICB2YXIgZGlkV2FyblByb3BUeXBlc0RlcHJl
Y2F0ZWQgPSBmYWxzZTtcbiAgY3JlYXRlRWxlbWVudCA9IFJlYWN0RWxlbWVudFZhbGlkYXRvci5j
cmVhdGVFbGVtZW50O1xuICBjcmVhdGVGYWN0b3J5ID0gUmVhY3RFbGVtZW50VmFsaWRhdG9yLmNy
ZWF0ZUZhY3Rvcnk7XG4gIGNsb25lRWxlbWVudCA9IFJlYWN0RWxlbWVudFZhbGlkYXRvci5jbG9u
ZUVsZW1lbnQ7XG59XG5cbnZhciBfX3NwcmVhZCA9IF9hc3NpZ247XG52YXIgY3JlYXRlTWl4aW4g
PSBmdW5jdGlvbiAobWl4aW4pIHtcbiAgcmV0dXJuIG1peGluO1xufTtcblxuaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIHdhcm5lZEZvclNwcmVhZCA9
IGZhbHNlO1xuICB2YXIgd2FybmVkRm9yQ3JlYXRlTWl4aW4gPSBmYWxzZTtcbiAgX19zcHJlYWQg
PSBmdW5jdGlvbiAoKSB7XG4gICAgbG93UHJpb3JpdHlXYXJuaW5nKHdhcm5lZEZvclNwcmVhZCwg
J1JlYWN0Ll9fc3ByZWFkIGlzIGRlcHJlY2F0ZWQgYW5kIHNob3VsZCBub3QgYmUgdXNlZC4gVXNl
ICcgKyAnT2JqZWN0LmFzc2lnbiBkaXJlY3RseSBvciBhbm90aGVyIGhlbHBlciBmdW5jdGlvbiB3
aXRoIHNpbWlsYXIgJyArICdzZW1hbnRpY3MuIFlvdSBtYXkgYmUgc2VlaW5nIHRoaXMgd2Fybmlu
ZyBkdWUgdG8geW91ciBjb21waWxlci4gJyArICdTZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC1zcHJl
YWQtZGVwcmVjYXRpb24gZm9yIG1vcmUgZGV0YWlscy4nKTtcbiAgICB3YXJuZWRGb3JTcHJlYWQg
PSB0cnVlO1xuICAgIHJldHVybiBfYXNzaWduLmFwcGx5KG51bGwsIGFyZ3VtZW50cyk7XG4gIH07
XG5cbiAgY3JlYXRlTWl4aW4gPSBmdW5jdGlvbiAobWl4aW4pIHtcbiAgICBsb3dQcmlvcml0eVdh
cm5pbmcod2FybmVkRm9yQ3JlYXRlTWl4aW4sICdSZWFjdC5jcmVhdGVNaXhpbiBpcyBkZXByZWNh
dGVkIGFuZCBzaG91bGQgbm90IGJlIHVzZWQuICcgKyAnSW4gUmVhY3QgdjE2LjAsIGl0IHdpbGwg
YmUgcmVtb3ZlZC4gJyArICdZb3UgY2FuIHVzZSB0aGlzIG1peGluIGRpcmVjdGx5IGluc3RlYWQu
ICcgKyAnU2VlIGh0dHBzOi8vZmIubWUvY3JlYXRlbWl4aW4td2FzLW5ldmVyLWltcGxlbWVudGVk
IGZvciBtb3JlIGluZm8uJyk7XG4gICAgd2FybmVkRm9yQ3JlYXRlTWl4aW4gPSB0cnVlO1xuICAg
IHJldHVybiBtaXhpbjtcbiAgfTtcbn1cblxudmFyIFJlYWN0ID0ge1xuICAvLyBNb2Rlcm5cblxu
ICBDaGlsZHJlbjoge1xuICAgIG1hcDogUmVhY3RDaGlsZHJlbi5tYXAsXG4gICAgZm9yRWFjaDog
UmVhY3RDaGlsZHJlbi5mb3JFYWNoLFxuICAgIGNvdW50OiBSZWFjdENoaWxkcmVuLmNvdW50LFxu
ICAgIHRvQXJyYXk6IFJlYWN0Q2hpbGRyZW4udG9BcnJheSxcbiAgICBvbmx5OiBvbmx5Q2hpbGRc
biAgfSxcblxuICBDb21wb25lbnQ6IFJlYWN0QmFzZUNsYXNzZXMuQ29tcG9uZW50LFxuICBQdXJl
Q29tcG9uZW50OiBSZWFjdEJhc2VDbGFzc2VzLlB1cmVDb21wb25lbnQsXG5cbiAgY3JlYXRlRWxl
bWVudDogY3JlYXRlRWxlbWVudCxcbiAgY2xvbmVFbGVtZW50OiBjbG9uZUVsZW1lbnQsXG4gIGlz
VmFsaWRFbGVtZW50OiBSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQsXG5cbiAgLy8gQ2xhc3Np
Y1xuXG4gIFByb3BUeXBlczogUmVhY3RQcm9wVHlwZXMsXG4gIGNyZWF0ZUNsYXNzOiBjcmVhdGVS
ZWFjdENsYXNzLFxuICBjcmVhdGVGYWN0b3J5OiBjcmVhdGVGYWN0b3J5LFxuICBjcmVhdGVNaXhp
bjogY3JlYXRlTWl4aW4sXG5cbiAgLy8gVGhpcyBsb29rcyBET00gc3BlY2lmaWMgYnV0IHRoZXNl
IGFyZSBhY3R1YWxseSBpc29tb3JwaGljIGhlbHBlcnNcbiAgLy8gc2luY2UgdGhleSBhcmUganVz
dCBnZW5lcmF0aW5nIERPTSBzdHJpbmdzLlxuICBET006IFJlYWN0RE9NRmFjdG9yaWVzLFxuXG4g
IHZlcnNpb246IFJlYWN0VmVyc2lvbixcblxuICAvLyBEZXByZWNhdGVkIGhvb2sgZm9yIEpTWCBz
cHJlYWQsIGRvbid0IHVzZSB0aGlzIGZvciBhbnl0aGluZy5cbiAgX19zcHJlYWQ6IF9fc3ByZWFk
XG59O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2
YXIgd2FybmVkRm9yQ3JlYXRlQ2xhc3MgPSBmYWxzZTtcbiAgaWYgKGNhbkRlZmluZVByb3BlcnR5
KSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWN0LCAnUHJvcFR5cGVzJywge1xuICAg
ICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxvd1ByaW9yaXR5V2FybmluZyhkaWRXYXJu
UHJvcFR5cGVzRGVwcmVjYXRlZCwgJ0FjY2Vzc2luZyBQcm9wVHlwZXMgdmlhIHRoZSBtYWluIFJl
YWN0IHBhY2thZ2UgaXMgZGVwcmVjYXRlZCwnICsgJyBhbmQgd2lsbCBiZSByZW1vdmVkIGluICBS
ZWFjdCB2MTYuMC4nICsgJyBVc2UgdGhlIGxhdGVzdCBhdmFpbGFibGUgdjE1LiogcHJvcC10eXBl
cyBwYWNrYWdlIGZyb20gbnBtIGluc3RlYWQuJyArICcgRm9yIGluZm8gb24gdXNhZ2UsIGNvbXBh
dGliaWxpdHksIG1pZ3JhdGlvbiBhbmQgbW9yZSwgc2VlICcgKyAnaHR0cHM6Ly9mYi5tZS9wcm9w
LXR5cGVzLWRvY3MnKTtcbiAgICAgICAgZGlkV2FyblByb3BUeXBlc0RlcHJlY2F0ZWQgPSB0cnVl
O1xuICAgICAgICByZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG4gICAgICB9XG4gICAgfSk7XG5cbiAg
ICBPYmplY3QuZGVmaW5lUHJvcGVydHkoUmVhY3QsICdjcmVhdGVDbGFzcycsIHtcbiAgICAgIGdl
dDogZnVuY3Rpb24gKCkge1xuICAgICAgICBsb3dQcmlvcml0eVdhcm5pbmcod2FybmVkRm9yQ3Jl
YXRlQ2xhc3MsICdBY2Nlc3NpbmcgY3JlYXRlQ2xhc3MgdmlhIHRoZSBtYWluIFJlYWN0IHBhY2th
Z2UgaXMgZGVwcmVjYXRlZCwnICsgJyBhbmQgd2lsbCBiZSByZW1vdmVkIGluIFJlYWN0IHYxNi4w
LicgKyBcIiBVc2UgYSBwbGFpbiBKYXZhU2NyaXB0IGNsYXNzIGluc3RlYWQuIElmIHlvdSdyZSBu
b3QgeWV0IFwiICsgJ3JlYWR5IHRvIG1pZ3JhdGUsIGNyZWF0ZS1yZWFjdC1jbGFzcyB2MTUuKiBp
cyBhdmFpbGFibGUgJyArICdvbiBucG0gYXMgYSB0ZW1wb3JhcnksIGRyb3AtaW4gcmVwbGFjZW1l
bnQuICcgKyAnRm9yIG1vcmUgaW5mbyBzZWUgaHR0cHM6Ly9mYi5tZS9yZWFjdC1jcmVhdGUtY2xh
c3MnKTtcbiAgICAgICAgd2FybmVkRm9yQ3JlYXRlQ2xhc3MgPSB0cnVlO1xuICAgICAgICByZXR1
cm4gY3JlYXRlUmVhY3RDbGFzcztcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIFJlYWN0
LkRPTSBmYWN0b3JpZXMgYXJlIGRlcHJlY2F0ZWQuIFdyYXAgdGhlc2UgbWV0aG9kcyBzbyB0aGF0
XG4gIC8vIGludm9jYXRpb25zIG9mIHRoZSBSZWFjdC5ET00gbmFtZXNwYWNlIGFuZCBhbGVydCB1
c2VycyB0byBzd2l0Y2hcbiAgLy8gdG8gdGhlIGByZWFjdC1kb20tZmFjdG9yaWVzYCBwYWNrYWdl
LlxuICBSZWFjdC5ET00gPSB7fTtcbiAgdmFyIHdhcm5lZEZvckZhY3RvcmllcyA9IGZhbHNlO1xu
ICBPYmplY3Qua2V5cyhSZWFjdERPTUZhY3RvcmllcykuZm9yRWFjaChmdW5jdGlvbiAoZmFjdG9y
eSkge1xuICAgIFJlYWN0LkRPTVtmYWN0b3J5XSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICgh
d2FybmVkRm9yRmFjdG9yaWVzKSB7XG4gICAgICAgIGxvd1ByaW9yaXR5V2FybmluZyhmYWxzZSwg
J0FjY2Vzc2luZyBmYWN0b3JpZXMgbGlrZSBSZWFjdC5ET00uJXMgaGFzIGJlZW4gZGVwcmVjYXRl
ZCAnICsgJ2FuZCB3aWxsIGJlIHJlbW92ZWQgaW4gdjE2LjArLiBVc2UgdGhlICcgKyAncmVhY3Qt
ZG9tLWZhY3RvcmllcyBwYWNrYWdlIGluc3RlYWQuICcgKyAnIFZlcnNpb24gMS4wIHByb3ZpZGVz
IGEgZHJvcC1pbiByZXBsYWNlbWVudC4nICsgJyBGb3IgbW9yZSBpbmZvLCBzZWUgaHR0cHM6Ly9m
Yi5tZS9yZWFjdC1kb20tZmFjdG9yaWVzJywgZmFjdG9yeSk7XG4gICAgICAgIHdhcm5lZEZvckZh
Y3RvcmllcyA9IHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gUmVhY3RET01GYWN0b3JpZXNb
ZmFjdG9yeV0uYXBwbHkoUmVhY3RET01GYWN0b3JpZXMsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAg
fSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3Q7XG5cblxuLyoqKioqKioqKioqKioqKioq
XG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QvbGliL1JlYWN0LmpzXG4gKiogbW9k
dWxlIGlkID0gMTdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJp
Z2h0IDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfYXNzaWduID0gcmVxdWly
ZSgnb2JqZWN0LWFzc2lnbicpO1xuXG52YXIgUmVhY3RDdXJyZW50T3duZXIgPSByZXF1aXJlKCcu
L1JlYWN0Q3VycmVudE93bmVyJyk7XG5cbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIv
d2FybmluZycpO1xudmFyIGNhbkRlZmluZVByb3BlcnR5ID0gcmVxdWlyZSgnLi9jYW5EZWZpbmVQ
cm9wZXJ0eScpO1xudmFyIGhhc093blByb3BlcnR5ID0gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Q
cm9wZXJ0eTtcblxudmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IHJlcXVpcmUoJy4vUmVhY3RFbGVt
ZW50U3ltYm9sJyk7XG5cbnZhciBSRVNFUlZFRF9QUk9QUyA9IHtcbiAga2V5OiB0cnVlLFxuICBy
ZWY6IHRydWUsXG4gIF9fc2VsZjogdHJ1ZSxcbiAgX19zb3VyY2U6IHRydWVcbn07XG5cbnZhciBz
cGVjaWFsUHJvcEtleVdhcm5pbmdTaG93biwgc3BlY2lhbFByb3BSZWZXYXJuaW5nU2hvd247XG5c
bmZ1bmN0aW9uIGhhc1ZhbGlkUmVmKGNvbmZpZykge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZp
ZywgJ3JlZicpKSB7XG4gICAgICB2YXIgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVz
Y3JpcHRvcihjb25maWcsICdyZWYnKS5nZXQ7XG4gICAgICBpZiAoZ2V0dGVyICYmIGdldHRlci5p
c1JlYWN0V2FybmluZykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxu
ICB9XG4gIHJldHVybiBjb25maWcucmVmICE9PSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGhh
c1ZhbGlkS2V5KGNvbmZpZykge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJykge1xuICAgIGlmIChoYXNPd25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgJ2tleScpKSB7
XG4gICAgICB2YXIgZ2V0dGVyID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihjb25m
aWcsICdrZXknKS5nZXQ7XG4gICAgICBpZiAoZ2V0dGVyICYmIGdldHRlci5pc1JlYWN0V2Fybmlu
Zykge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVy
biBjb25maWcua2V5ICE9PSB1bmRlZmluZWQ7XG59XG5cbmZ1bmN0aW9uIGRlZmluZUtleVByb3BX
YXJuaW5nR2V0dGVyKHByb3BzLCBkaXNwbGF5TmFtZSkge1xuICB2YXIgd2FybkFib3V0QWNjZXNz
aW5nS2V5ID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICghc3BlY2lhbFByb3BLZXlXYXJuaW5nU2hv
d24pIHtcbiAgICAgIHNwZWNpYWxQcm9wS2V5V2FybmluZ1Nob3duID0gdHJ1ZTtcbiAgICAgIHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnJXM6
IGBrZXlgIGlzIG5vdCBhIHByb3AuIFRyeWluZyB0byBhY2Nlc3MgaXQgd2lsbCByZXN1bHQgJyAr
ICdpbiBgdW5kZWZpbmVkYCBiZWluZyByZXR1cm5lZC4gSWYgeW91IG5lZWQgdG8gYWNjZXNzIHRo
ZSBzYW1lICcgKyAndmFsdWUgd2l0aGluIHRoZSBjaGlsZCBjb21wb25lbnQsIHlvdSBzaG91bGQg
cGFzcyBpdCBhcyBhIGRpZmZlcmVudCAnICsgJ3Byb3AuIChodHRwczovL2ZiLm1lL3JlYWN0LXNw
ZWNpYWwtcHJvcHMpJywgZGlzcGxheU5hbWUpIDogdm9pZCAwO1xuICAgIH1cbiAgfTtcbiAgd2Fy
bkFib3V0QWNjZXNzaW5nS2V5LmlzUmVhY3RXYXJuaW5nID0gdHJ1ZTtcbiAgT2JqZWN0LmRlZmlu
ZVByb3BlcnR5KHByb3BzLCAna2V5Jywge1xuICAgIGdldDogd2FybkFib3V0QWNjZXNzaW5nS2V5
LFxuICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICB9KTtcbn1cblxuZnVuY3Rpb24gZGVmaW5lUmVm
UHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMsIGRpc3BsYXlOYW1lKSB7XG4gIHZhciB3YXJuQWJvdXRB
Y2Nlc3NpbmdSZWYgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFzcGVjaWFsUHJvcFJlZldhcm5p
bmdTaG93bikge1xuICAgICAgc3BlY2lhbFByb3BSZWZXYXJuaW5nU2hvd24gPSB0cnVlO1xuICAg
ICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2Us
ICclczogYHJlZmAgaXMgbm90IGEgcHJvcC4gVHJ5aW5nIHRvIGFjY2VzcyBpdCB3aWxsIHJlc3Vs
dCAnICsgJ2luIGB1bmRlZmluZWRgIGJlaW5nIHJldHVybmVkLiBJZiB5b3UgbmVlZCB0byBhY2Nl
c3MgdGhlIHNhbWUgJyArICd2YWx1ZSB3aXRoaW4gdGhlIGNoaWxkIGNvbXBvbmVudCwgeW91IHNo
b3VsZCBwYXNzIGl0IGFzIGEgZGlmZmVyZW50ICcgKyAncHJvcC4gKGh0dHBzOi8vZmIubWUvcmVh
Y3Qtc3BlY2lhbC1wcm9wcyknLCBkaXNwbGF5TmFtZSkgOiB2b2lkIDA7XG4gICAgfVxuICB9O1xu
ICB3YXJuQWJvdXRBY2Nlc3NpbmdSZWYuaXNSZWFjdFdhcm5pbmcgPSB0cnVlO1xuICBPYmplY3Qu
ZGVmaW5lUHJvcGVydHkocHJvcHMsICdyZWYnLCB7XG4gICAgZ2V0OiB3YXJuQWJvdXRBY2Nlc3Np
bmdSZWYsXG4gICAgY29uZmlndXJhYmxlOiB0cnVlXG4gIH0pO1xufVxuXG4vKipcbiAqIEZhY3Rv
cnkgbWV0aG9kIHRvIGNyZWF0ZSBhIG5ldyBSZWFjdCBlbGVtZW50LiBUaGlzIG5vIGxvbmdlciBh
ZGhlcmVzIHRvXG4gKiB0aGUgY2xhc3MgcGF0dGVybiwgc28gZG8gbm90IHVzZSBuZXcgdG8gY2Fs
bCBpdC4gQWxzbywgbm8gaW5zdGFuY2VvZiBjaGVja1xuICogd2lsbCB3b3JrLiBJbnN0ZWFkIHRl
c3QgJCR0eXBlb2YgZmllbGQgYWdhaW5zdCBTeW1ib2wuZm9yKCdyZWFjdC5lbGVtZW50JykgdG8g
Y2hlY2tcbiAqIGlmIHNvbWV0aGluZyBpcyBhIFJlYWN0IEVsZW1lbnQuXG4gKlxuICogQHBhcmFt
IHsqfSB0eXBlXG4gKiBAcGFyYW0geyp9IGtleVxuICogQHBhcmFtIHtzdHJpbmd8b2JqZWN0fSBy
ZWZcbiAqIEBwYXJhbSB7Kn0gc2VsZiBBICp0ZW1wb3JhcnkqIGhlbHBlciB0byBkZXRlY3QgcGxh
Y2VzIHdoZXJlIGB0aGlzYCBpc1xuICogZGlmZmVyZW50IGZyb20gdGhlIGBvd25lcmAgd2hlbiBS
ZWFjdC5jcmVhdGVFbGVtZW50IGlzIGNhbGxlZCwgc28gdGhhdCB3ZVxuICogY2FuIHdhcm4uIFdl
IHdhbnQgdG8gZ2V0IHJpZCBvZiBvd25lciBhbmQgcmVwbGFjZSBzdHJpbmcgYHJlZmBzIHdpdGgg
YXJyb3dcbiAqIGZ1bmN0aW9ucywgYW5kIGFzIGxvbmcgYXMgYHRoaXNgIGFuZCBvd25lciBhcmUg
dGhlIHNhbWUsIHRoZXJlIHdpbGwgYmUgbm9cbiAqIGNoYW5nZSBpbiBiZWhhdmlvci5cbiAqIEBw
YXJhbSB7Kn0gc291cmNlIEFuIGFubm90YXRpb24gb2JqZWN0IChhZGRlZCBieSBhIHRyYW5zcGls
ZXIgb3Igb3RoZXJ3aXNlKVxuICogaW5kaWNhdGluZyBmaWxlbmFtZSwgbGluZSBudW1iZXIsIGFu
ZC9vciBvdGhlciBpbmZvcm1hdGlvbi5cbiAqIEBwYXJhbSB7Kn0gb3duZXJcbiAqIEBwYXJhbSB7
Kn0gcHJvcHNcbiAqIEBpbnRlcm5hbFxuICovXG52YXIgUmVhY3RFbGVtZW50ID0gZnVuY3Rpb24g
KHR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIG93bmVyLCBwcm9wcykge1xuICB2YXIgZWxl
bWVudCA9IHtcbiAgICAvLyBUaGlzIHRhZyBhbGxvdyB1cyB0byB1bmlxdWVseSBpZGVudGlmeSB0
aGlzIGFzIGEgUmVhY3QgRWxlbWVudFxuICAgICQkdHlwZW9mOiBSRUFDVF9FTEVNRU5UX1RZUEUs
XG5cbiAgICAvLyBCdWlsdC1pbiBwcm9wZXJ0aWVzIHRoYXQgYmVsb25nIG9uIHRoZSBlbGVtZW50
XG4gICAgdHlwZTogdHlwZSxcbiAgICBrZXk6IGtleSxcbiAgICByZWY6IHJlZixcbiAgICBwcm9w
czogcHJvcHMsXG5cbiAgICAvLyBSZWNvcmQgdGhlIGNvbXBvbmVudCByZXNwb25zaWJsZSBmb3Ig
Y3JlYXRpbmcgdGhpcyBlbGVtZW50LlxuICAgIF9vd25lcjogb3duZXJcbiAgfTtcblxuICBpZiAo
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIC8vIFRoZSB2YWxp
ZGF0aW9uIGZsYWcgaXMgY3VycmVudGx5IG11dGF0aXZlLiBXZSBwdXQgaXQgb25cbiAgICAvLyBh
biBleHRlcm5hbCBiYWNraW5nIHN0b3JlIHNvIHRoYXQgd2UgY2FuIGZyZWV6ZSB0aGUgd2hvbGUg
b2JqZWN0LlxuICAgIC8vIFRoaXMgY2FuIGJlIHJlcGxhY2VkIHdpdGggYSBXZWFrTWFwIG9uY2Ug
dGhleSBhcmUgaW1wbGVtZW50ZWQgaW5cbiAgICAvLyBjb21tb25seSB1c2VkIGRldmVsb3BtZW50
IGVudmlyb25tZW50cy5cbiAgICBlbGVtZW50Ll9zdG9yZSA9IHt9O1xuXG4gICAgLy8gVG8gbWFr
ZSBjb21wYXJpbmcgUmVhY3RFbGVtZW50cyBlYXNpZXIgZm9yIHRlc3RpbmcgcHVycG9zZXMsIHdl
IG1ha2VcbiAgICAvLyB0aGUgdmFsaWRhdGlvbiBmbGFnIG5vbi1lbnVtZXJhYmxlICh3aGVyZSBw
b3NzaWJsZSwgd2hpY2ggc2hvdWxkXG4gICAgLy8gaW5jbHVkZSBldmVyeSBlbnZpcm9ubWVudCB3
ZSBydW4gdGVzdHMgaW4pLCBzbyB0aGUgdGVzdCBmcmFtZXdvcmtcbiAgICAvLyBpZ25vcmVzIGl0
LlxuICAgIGlmIChjYW5EZWZpbmVQcm9wZXJ0eSkge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3Bl
cnR5KGVsZW1lbnQuX3N0b3JlLCAndmFsaWRhdGVkJywge1xuICAgICAgICBjb25maWd1cmFibGU6
IGZhbHNlLFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgd3JpdGFibGU6IHRy
dWUsXG4gICAgICAgIHZhbHVlOiBmYWxzZVxuICAgICAgfSk7XG4gICAgICAvLyBzZWxmIGFuZCBz
b3VyY2UgYXJlIERFViBvbmx5IHByb3BlcnRpZXMuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVy
dHkoZWxlbWVudCwgJ19zZWxmJywge1xuICAgICAgICBjb25maWd1cmFibGU6IGZhbHNlLFxuICAg
ICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAg
ICB2YWx1ZTogc2VsZlxuICAgICAgfSk7XG4gICAgICAvLyBUd28gZWxlbWVudHMgY3JlYXRlZCBp
biB0d28gZGlmZmVyZW50IHBsYWNlcyBzaG91bGQgYmUgY29uc2lkZXJlZFxuICAgICAgLy8gZXF1
YWwgZm9yIHRlc3RpbmcgcHVycG9zZXMgYW5kIHRoZXJlZm9yZSB3ZSBoaWRlIGl0IGZyb20gZW51
bWVyYXRpb24uXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudCwgJ19zb3VyY2Un
LCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgIGVudW1lcmFibGU6IGZh
bHNlLFxuICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgIHZhbHVlOiBzb3VyY2VcbiAg
ICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBlbGVtZW50Ll9zdG9yZS52YWxpZGF0ZWQgPSBm
YWxzZTtcbiAgICAgIGVsZW1lbnQuX3NlbGYgPSBzZWxmO1xuICAgICAgZWxlbWVudC5fc291cmNl
ID0gc291cmNlO1xuICAgIH1cbiAgICBpZiAoT2JqZWN0LmZyZWV6ZSkge1xuICAgICAgT2JqZWN0
LmZyZWV6ZShlbGVtZW50LnByb3BzKTtcbiAgICAgIE9iamVjdC5mcmVlemUoZWxlbWVudCk7XG4g
ICAgfVxuICB9XG5cbiAgcmV0dXJuIGVsZW1lbnQ7XG59O1xuXG4vKipcbiAqIENyZWF0ZSBhbmQg
cmV0dXJuIGEgbmV3IFJlYWN0RWxlbWVudCBvZiB0aGUgZ2l2ZW4gdHlwZS5cbiAqIFNlZSBodHRw
czovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFj
dC5jcmVhdGVlbGVtZW50XG4gKi9cblJlYWN0RWxlbWVudC5jcmVhdGVFbGVtZW50ID0gZnVuY3Rp
b24gKHR5cGUsIGNvbmZpZywgY2hpbGRyZW4pIHtcbiAgdmFyIHByb3BOYW1lO1xuXG4gIC8vIFJl
c2VydmVkIG5hbWVzIGFyZSBleHRyYWN0ZWRcbiAgdmFyIHByb3BzID0ge307XG5cbiAgdmFyIGtl
eSA9IG51bGw7XG4gIHZhciByZWYgPSBudWxsO1xuICB2YXIgc2VsZiA9IG51bGw7XG4gIHZhciBz
b3VyY2UgPSBudWxsO1xuXG4gIGlmIChjb25maWcgIT0gbnVsbCkge1xuICAgIGlmIChoYXNWYWxp
ZFJlZihjb25maWcpKSB7XG4gICAgICByZWYgPSBjb25maWcucmVmO1xuICAgIH1cbiAgICBpZiAo
aGFzVmFsaWRLZXkoY29uZmlnKSkge1xuICAgICAga2V5ID0gJycgKyBjb25maWcua2V5O1xuICAg
IH1cblxuICAgIHNlbGYgPSBjb25maWcuX19zZWxmID09PSB1bmRlZmluZWQgPyBudWxsIDogY29u
ZmlnLl9fc2VsZjtcbiAgICBzb3VyY2UgPSBjb25maWcuX19zb3VyY2UgPT09IHVuZGVmaW5lZCA/
IG51bGwgOiBjb25maWcuX19zb3VyY2U7XG4gICAgLy8gUmVtYWluaW5nIHByb3BlcnRpZXMgYXJl
IGFkZGVkIHRvIGEgbmV3IHByb3BzIG9iamVjdFxuICAgIGZvciAocHJvcE5hbWUgaW4gY29uZmln
KSB7XG4gICAgICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbChjb25maWcsIHByb3BOYW1lKSAmJiAh
UkVTRVJWRURfUFJPUFMuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpKSB7XG4gICAgICAgIHByb3Bz
W3Byb3BOYW1lXSA9IGNvbmZpZ1twcm9wTmFtZV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAg
Ly8gQ2hpbGRyZW4gY2FuIGJlIG1vcmUgdGhhbiBvbmUgYXJndW1lbnQsIGFuZCB0aG9zZSBhcmUg
dHJhbnNmZXJyZWQgb250b1xuICAvLyB0aGUgbmV3bHkgYWxsb2NhdGVkIHByb3BzIG9iamVjdC5c
biAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7XG4gIGlmIChjaGls
ZHJlbkxlbmd0aCA9PT0gMSkge1xuICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gIH0g
ZWxzZSBpZiAoY2hpbGRyZW5MZW5ndGggPiAxKSB7XG4gICAgdmFyIGNoaWxkQXJyYXkgPSBBcnJh
eShjaGlsZHJlbkxlbmd0aCk7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjaGlsZHJlbkxlbmd0
aDsgaSsrKSB7XG4gICAgICBjaGlsZEFycmF5W2ldID0gYXJndW1lbnRzW2kgKyAyXTtcbiAgICB9
XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAg
IGlmIChPYmplY3QuZnJlZXplKSB7XG4gICAgICAgIE9iamVjdC5mcmVlemUoY2hpbGRBcnJheSk7
XG4gICAgICB9XG4gICAgfVxuICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRBcnJheTtcbiAgfVxu
XG4gIC8vIFJlc29sdmUgZGVmYXVsdCBwcm9wc1xuICBpZiAodHlwZSAmJiB0eXBlLmRlZmF1bHRQ
cm9wcykge1xuICAgIHZhciBkZWZhdWx0UHJvcHMgPSB0eXBlLmRlZmF1bHRQcm9wcztcbiAgICBm
b3IgKHByb3BOYW1lIGluIGRlZmF1bHRQcm9wcykge1xuICAgICAgaWYgKHByb3BzW3Byb3BOYW1l
XSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGRlZmF1bHRQcm9w
c1twcm9wTmFtZV07XG4gICAgICB9XG4gICAgfVxuICB9XG4gIGlmIChwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgaWYgKGtleSB8fCByZWYpIHtcbiAgICAgIGlm
ICh0eXBlb2YgcHJvcHMuJCR0eXBlb2YgPT09ICd1bmRlZmluZWQnIHx8IHByb3BzLiQkdHlwZW9m
ICE9PSBSRUFDVF9FTEVNRU5UX1RZUEUpIHtcbiAgICAgICAgdmFyIGRpc3BsYXlOYW1lID0gdHlw
ZW9mIHR5cGUgPT09ICdmdW5jdGlvbicgPyB0eXBlLmRpc3BsYXlOYW1lIHx8IHR5cGUubmFtZSB8
fCAnVW5rbm93bicgOiB0eXBlO1xuICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgZGVmaW5l
S2V5UHJvcFdhcm5pbmdHZXR0ZXIocHJvcHMsIGRpc3BsYXlOYW1lKTtcbiAgICAgICAgfVxuICAg
ICAgICBpZiAocmVmKSB7XG4gICAgICAgICAgZGVmaW5lUmVmUHJvcFdhcm5pbmdHZXR0ZXIocHJv
cHMsIGRpc3BsYXlOYW1lKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1
cm4gUmVhY3RFbGVtZW50KHR5cGUsIGtleSwgcmVmLCBzZWxmLCBzb3VyY2UsIFJlYWN0Q3VycmVu
dE93bmVyLmN1cnJlbnQsIHByb3BzKTtcbn07XG5cbi8qKlxuICogUmV0dXJuIGEgZnVuY3Rpb24g
dGhhdCBwcm9kdWNlcyBSZWFjdEVsZW1lbnRzIG9mIGEgZ2l2ZW4gdHlwZS5cbiAqIFNlZSBodHRw
czovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFj
dC5jcmVhdGVmYWN0b3J5XG4gKi9cblJlYWN0RWxlbWVudC5jcmVhdGVGYWN0b3J5ID0gZnVuY3Rp
b24gKHR5cGUpIHtcbiAgdmFyIGZhY3RvcnkgPSBSZWFjdEVsZW1lbnQuY3JlYXRlRWxlbWVudC5i
aW5kKG51bGwsIHR5cGUpO1xuICAvLyBFeHBvc2UgdGhlIHR5cGUgb24gdGhlIGZhY3RvcnkgYW5k
IHRoZSBwcm90b3R5cGUgc28gdGhhdCBpdCBjYW4gYmVcbiAgLy8gZWFzaWx5IGFjY2Vzc2VkIG9u
IGVsZW1lbnRzLiBFLmcuIGA8Rm9vIC8+LnR5cGUgPT09IEZvb2AuXG4gIC8vIFRoaXMgc2hvdWxk
IG5vdCBiZSBuYW1lZCBgY29uc3RydWN0b3JgIHNpbmNlIHRoaXMgbWF5IG5vdCBiZSB0aGUgZnVu
Y3Rpb25cbiAgLy8gdGhhdCBjcmVhdGVkIHRoZSBlbGVtZW50LCBhbmQgaXQgbWF5IG5vdCBldmVu
IGJlIGEgY29uc3RydWN0b3IuXG4gIC8vIExlZ2FjeSBob29rIFRPRE86IFdhcm4gaWYgdGhpcyBp
cyBhY2Nlc3NlZFxuICBmYWN0b3J5LnR5cGUgPSB0eXBlO1xuICByZXR1cm4gZmFjdG9yeTtcbn07
XG5cblJlYWN0RWxlbWVudC5jbG9uZUFuZFJlcGxhY2VLZXkgPSBmdW5jdGlvbiAob2xkRWxlbWVu
dCwgbmV3S2V5KSB7XG4gIHZhciBuZXdFbGVtZW50ID0gUmVhY3RFbGVtZW50KG9sZEVsZW1lbnQu
dHlwZSwgbmV3S2V5LCBvbGRFbGVtZW50LnJlZiwgb2xkRWxlbWVudC5fc2VsZiwgb2xkRWxlbWVu
dC5fc291cmNlLCBvbGRFbGVtZW50Ll9vd25lciwgb2xkRWxlbWVudC5wcm9wcyk7XG5cbiAgcmV0
dXJuIG5ld0VsZW1lbnQ7XG59O1xuXG4vKipcbiAqIENsb25lIGFuZCByZXR1cm4gYSBuZXcgUmVh
Y3RFbGVtZW50IHVzaW5nIGVsZW1lbnQgYXMgdGhlIHN0YXJ0aW5nIHBvaW50LlxuICogU2VlIGh0
dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3Jl
YWN0LmNsb25lZWxlbWVudFxuICovXG5SZWFjdEVsZW1lbnQuY2xvbmVFbGVtZW50ID0gZnVuY3Rp
b24gKGVsZW1lbnQsIGNvbmZpZywgY2hpbGRyZW4pIHtcbiAgdmFyIHByb3BOYW1lO1xuXG4gIC8v
IE9yaWdpbmFsIHByb3BzIGFyZSBjb3BpZWRcbiAgdmFyIHByb3BzID0gX2Fzc2lnbih7fSwgZWxl
bWVudC5wcm9wcyk7XG5cbiAgLy8gUmVzZXJ2ZWQgbmFtZXMgYXJlIGV4dHJhY3RlZFxuICB2YXIg
a2V5ID0gZWxlbWVudC5rZXk7XG4gIHZhciByZWYgPSBlbGVtZW50LnJlZjtcbiAgLy8gU2VsZiBp
cyBwcmVzZXJ2ZWQgc2luY2UgdGhlIG93bmVyIGlzIHByZXNlcnZlZC5cbiAgdmFyIHNlbGYgPSBl
bGVtZW50Ll9zZWxmO1xuICAvLyBTb3VyY2UgaXMgcHJlc2VydmVkIHNpbmNlIGNsb25lRWxlbWVu
dCBpcyB1bmxpa2VseSB0byBiZSB0YXJnZXRlZCBieSBhXG4gIC8vIHRyYW5zcGlsZXIsIGFuZCB0
aGUgb3JpZ2luYWwgc291cmNlIGlzIHByb2JhYmx5IGEgYmV0dGVyIGluZGljYXRvciBvZiB0aGVc
biAgLy8gdHJ1ZSBvd25lci5cbiAgdmFyIHNvdXJjZSA9IGVsZW1lbnQuX3NvdXJjZTtcblxuICAv
LyBPd25lciB3aWxsIGJlIHByZXNlcnZlZCwgdW5sZXNzIHJlZiBpcyBvdmVycmlkZGVuXG4gIHZh
ciBvd25lciA9IGVsZW1lbnQuX293bmVyO1xuXG4gIGlmIChjb25maWcgIT0gbnVsbCkge1xuICAg
IGlmIChoYXNWYWxpZFJlZihjb25maWcpKSB7XG4gICAgICAvLyBTaWxlbnRseSBzdGVhbCB0aGUg
cmVmIGZyb20gdGhlIHBhcmVudC5cbiAgICAgIHJlZiA9IGNvbmZpZy5yZWY7XG4gICAgICBvd25l
ciA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQ7XG4gICAgfVxuICAgIGlmIChoYXNWYWxpZEtl
eShjb25maWcpKSB7XG4gICAgICBrZXkgPSAnJyArIGNvbmZpZy5rZXk7XG4gICAgfVxuXG4gICAg
Ly8gUmVtYWluaW5nIHByb3BlcnRpZXMgb3ZlcnJpZGUgZXhpc3RpbmcgcHJvcHNcbiAgICB2YXIg
ZGVmYXVsdFByb3BzO1xuICAgIGlmIChlbGVtZW50LnR5cGUgJiYgZWxlbWVudC50eXBlLmRlZmF1
bHRQcm9wcykge1xuICAgICAgZGVmYXVsdFByb3BzID0gZWxlbWVudC50eXBlLmRlZmF1bHRQcm9w
cztcbiAgICB9XG4gICAgZm9yIChwcm9wTmFtZSBpbiBjb25maWcpIHtcbiAgICAgIGlmIChoYXNP
d25Qcm9wZXJ0eS5jYWxsKGNvbmZpZywgcHJvcE5hbWUpICYmICFSRVNFUlZFRF9QUk9QUy5oYXNP
d25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgaWYgKGNvbmZpZ1twcm9wTmFtZV0gPT09
IHVuZGVmaW5lZCAmJiBkZWZhdWx0UHJvcHMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIC8v
IFJlc29sdmUgZGVmYXVsdCBwcm9wc1xuICAgICAgICAgIHByb3BzW3Byb3BOYW1lXSA9IGRlZmF1
bHRQcm9wc1twcm9wTmFtZV07XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJvcHNbcHJv
cE5hbWVdID0gY29uZmlnW3Byb3BOYW1lXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAg
fVxuXG4gIC8vIENoaWxkcmVuIGNhbiBiZSBtb3JlIHRoYW4gb25lIGFyZ3VtZW50LCBhbmQgdGhv
c2UgYXJlIHRyYW5zZmVycmVkIG9udG9cbiAgLy8gdGhlIG5ld2x5IGFsbG9jYXRlZCBwcm9wcyBv
YmplY3QuXG4gIHZhciBjaGlsZHJlbkxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGggLSAyO1xuICBp
ZiAoY2hpbGRyZW5MZW5ndGggPT09IDEpIHtcbiAgICBwcm9wcy5jaGlsZHJlbiA9IGNoaWxkcmVu
O1xuICB9IGVsc2UgaWYgKGNoaWxkcmVuTGVuZ3RoID4gMSkge1xuICAgIHZhciBjaGlsZEFycmF5
ID0gQXJyYXkoY2hpbGRyZW5MZW5ndGgpO1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRy
ZW5MZW5ndGg7IGkrKykge1xuICAgICAgY2hpbGRBcnJheVtpXSA9IGFyZ3VtZW50c1tpICsgMl07
XG4gICAgfVxuICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRBcnJheTtcbiAgfVxuXG4gIHJldHVy
biBSZWFjdEVsZW1lbnQoZWxlbWVudC50eXBlLCBrZXksIHJlZiwgc2VsZiwgc291cmNlLCBvd25l
ciwgcHJvcHMpO1xufTtcblxuLyoqXG4gKiBWZXJpZmllcyB0aGUgb2JqZWN0IGlzIGEgUmVhY3RF
bGVtZW50LlxuICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9w
LWxldmVsLWFwaS5odG1sI3JlYWN0LmlzdmFsaWRlbGVtZW50XG4gKiBAcGFyYW0gez9vYmplY3R9
IG9iamVjdFxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBgb2JqZWN0YCBpcyBhIHZhbGlk
IGNvbXBvbmVudC5cbiAqIEBmaW5hbFxuICovXG5SZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1lbnQg
PSBmdW5jdGlvbiAob2JqZWN0KSB7XG4gIHJldHVybiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0
JyAmJiBvYmplY3QgIT09IG51bGwgJiYgb2JqZWN0LiQkdHlwZW9mID09PSBSRUFDVF9FTEVNRU5U
X1RZUEU7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RWxlbWVudDtcblxuXG4vKioqKioq
KioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC9saWIvUmVhY3RF
bGVtZW50LmpzXG4gKiogbW9kdWxlIGlkID0gMThcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoq
LyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZh
ciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50Jyk7XG5cbnZh
ciBFdmVudFBsdWdpblJlZ2lzdHJ5ID0gcmVxdWlyZSgnLi9FdmVudFBsdWdpblJlZ2lzdHJ5Jyk7
XG52YXIgRXZlbnRQbHVnaW5VdGlscyA9IHJlcXVpcmUoJy4vRXZlbnRQbHVnaW5VdGlscycpO1xu
dmFyIFJlYWN0RXJyb3JVdGlscyA9IHJlcXVpcmUoJy4vUmVhY3RFcnJvclV0aWxzJyk7XG5cbnZh
ciBhY2N1bXVsYXRlSW50byA9IHJlcXVpcmUoJy4vYWNjdW11bGF0ZUludG8nKTtcbnZhciBmb3JF
YWNoQWNjdW11bGF0ZWQgPSByZXF1aXJlKCcuL2ZvckVhY2hBY2N1bXVsYXRlZCcpO1xudmFyIGlu
dmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG4vKipcbiAqIEludGVy
bmFsIHN0b3JlIGZvciBldmVudCBsaXN0ZW5lcnNcbiAqL1xudmFyIGxpc3RlbmVyQmFuayA9IHt9
O1xuXG4vKipcbiAqIEludGVybmFsIHF1ZXVlIG9mIGV2ZW50cyB0aGF0IGhhdmUgYWNjdW11bGF0
ZWQgdGhlaXIgZGlzcGF0Y2hlcyBhbmQgYXJlXG4gKiB3YWl0aW5nIHRvIGhhdmUgdGhlaXIgZGlz
cGF0Y2hlcyBleGVjdXRlZC5cbiAqL1xudmFyIGV2ZW50UXVldWUgPSBudWxsO1xuXG4vKipcbiAq
IERpc3BhdGNoZXMgYW4gZXZlbnQgYW5kIHJlbGVhc2VzIGl0IGJhY2sgaW50byB0aGUgcG9vbCwg
dW5sZXNzIHBlcnNpc3RlbnQuXG4gKlxuICogQHBhcmFtIHs/b2JqZWN0fSBldmVudCBTeW50aGV0
aWMgZXZlbnQgdG8gYmUgZGlzcGF0Y2hlZC5cbiAqIEBwYXJhbSB7Ym9vbGVhbn0gc2ltdWxhdGVk
IElmIHRoZSBldmVudCBpcyBzaW11bGF0ZWQgKGNoYW5nZXMgZXhuIGJlaGF2aW9yKVxuICogQHBy
aXZhdGVcbiAqL1xudmFyIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZSA9IGZ1bmN0aW9uIChl
dmVudCwgc2ltdWxhdGVkKSB7XG4gIGlmIChldmVudCkge1xuICAgIEV2ZW50UGx1Z2luVXRpbHMu
ZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyKGV2ZW50LCBzaW11bGF0ZWQpO1xuXG4gICAgaWYgKCFl
dmVudC5pc1BlcnNpc3RlbnQoKSkge1xuICAgICAgZXZlbnQuY29uc3RydWN0b3IucmVsZWFzZShl
dmVudCk7XG4gICAgfVxuICB9XG59O1xudmFyIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZVNp
bXVsYXRlZCA9IGZ1bmN0aW9uIChlKSB7XG4gIHJldHVybiBleGVjdXRlRGlzcGF0Y2hlc0FuZFJl
bGVhc2UoZSwgdHJ1ZSk7XG59O1xudmFyIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZVRvcExl
dmVsID0gZnVuY3Rpb24gKGUpIHtcbiAgcmV0dXJuIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFz
ZShlLCBmYWxzZSk7XG59O1xuXG52YXIgZ2V0RGljdGlvbmFyeUtleSA9IGZ1bmN0aW9uIChpbnN0
KSB7XG4gIC8vIFByZXZlbnRzIFY4IHBlcmZvcm1hbmNlIGlzc3VlOlxuICAvLyBodHRwczovL2dp
dGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC83MjMyXG4gIHJldHVybiAnLicgKyBpbnN0Ll9y
b290Tm9kZUlEO1xufTtcblxuZnVuY3Rpb24gaXNJbnRlcmFjdGl2ZSh0YWcpIHtcbiAgcmV0dXJu
IHRhZyA9PT0gJ2J1dHRvbicgfHwgdGFnID09PSAnaW5wdXQnIHx8IHRhZyA9PT0gJ3NlbGVjdCcg
fHwgdGFnID09PSAndGV4dGFyZWEnO1xufVxuXG5mdW5jdGlvbiBzaG91bGRQcmV2ZW50TW91c2VF
dmVudChuYW1lLCB0eXBlLCBwcm9wcykge1xuICBzd2l0Y2ggKG5hbWUpIHtcbiAgICBjYXNlICdv
bkNsaWNrJzpcbiAgICBjYXNlICdvbkNsaWNrQ2FwdHVyZSc6XG4gICAgY2FzZSAnb25Eb3VibGVD
bGljayc6XG4gICAgY2FzZSAnb25Eb3VibGVDbGlja0NhcHR1cmUnOlxuICAgIGNhc2UgJ29uTW91
c2VEb3duJzpcbiAgICBjYXNlICdvbk1vdXNlRG93bkNhcHR1cmUnOlxuICAgIGNhc2UgJ29uTW91
c2VNb3ZlJzpcbiAgICBjYXNlICdvbk1vdXNlTW92ZUNhcHR1cmUnOlxuICAgIGNhc2UgJ29uTW91
c2VVcCc6XG4gICAgY2FzZSAnb25Nb3VzZVVwQ2FwdHVyZSc6XG4gICAgICByZXR1cm4gISEocHJv
cHMuZGlzYWJsZWQgJiYgaXNJbnRlcmFjdGl2ZSh0eXBlKSk7XG4gICAgZGVmYXVsdDpcbiAgICAg
IHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgaXMgYSB1bmlmaWVkIGludGVy
ZmFjZSBmb3IgZXZlbnQgcGx1Z2lucyB0byBiZSBpbnN0YWxsZWQgYW5kIGNvbmZpZ3VyZWQuXG4g
KlxuICogRXZlbnQgcGx1Z2lucyBjYW4gaW1wbGVtZW50IHRoZSBmb2xsb3dpbmcgcHJvcGVydGll
czpcbiAqXG4gKiAgIGBleHRyYWN0RXZlbnRzYCB7ZnVuY3Rpb24oc3RyaW5nLCBET01FdmVudFRh
cmdldCwgc3RyaW5nLCBvYmplY3QpOiAqfVxuICogICAgIFJlcXVpcmVkLiBXaGVuIGEgdG9wLWxl
dmVsIGV2ZW50IGlzIGZpcmVkLCB0aGlzIG1ldGhvZCBpcyBleHBlY3RlZCB0b1xuICogICAgIGV4
dHJhY3Qgc3ludGhldGljIGV2ZW50cyB0aGF0IHdpbGwgaW4gdHVybiBiZSBxdWV1ZWQgYW5kIGRp
c3BhdGNoZWQuXG4gKlxuICogICBgZXZlbnRUeXBlc2Age29iamVjdH1cbiAqICAgICBPcHRpb25h
bCwgcGx1Z2lucyB0aGF0IGZpcmUgZXZlbnRzIG11c3QgcHVibGlzaCBhIG1hcHBpbmcgb2YgcmVn
aXN0cmF0aW9uXG4gKiAgICAgbmFtZXMgdGhhdCBhcmUgdXNlZCB0byByZWdpc3RlciBsaXN0ZW5l
cnMuIFZhbHVlcyBvZiB0aGlzIG1hcHBpbmcgbXVzdFxuICogICAgIGJlIG9iamVjdHMgdGhhdCBj
b250YWluIGByZWdpc3RyYXRpb25OYW1lYCBvciBgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXNgLlxu
ICpcbiAqICAgYGV4ZWN1dGVEaXNwYXRjaGAge2Z1bmN0aW9uKG9iamVjdCwgZnVuY3Rpb24sIHN0
cmluZyl9XG4gKiAgICAgT3B0aW9uYWwsIGFsbG93cyBwbHVnaW5zIHRvIG92ZXJyaWRlIGhvdyBh
biBldmVudCBnZXRzIGRpc3BhdGNoZWQuIEJ5XG4gKiAgICAgZGVmYXVsdCwgdGhlIGxpc3RlbmVy
IGlzIHNpbXBseSBpbnZva2VkLlxuICpcbiAqIEVhY2ggcGx1Z2luIHRoYXQgaXMgaW5qZWN0ZWQg
aW50byBgRXZlbnRzUGx1Z2luSHViYCBpcyBpbW1lZGlhdGVseSBvcGVyYWJsZS5cbiAqXG4gKiBA
cHVibGljXG4gKi9cbnZhciBFdmVudFBsdWdpbkh1YiA9IHtcbiAgLyoqXG4gICAqIE1ldGhvZHMg
Zm9yIGluamVjdGluZyBkZXBlbmRlbmNpZXMuXG4gICAqL1xuICBpbmplY3Rpb246IHtcbiAgICAv
KipcbiAgICAgKiBAcGFyYW0ge2FycmF5fSBJbmplY3RlZEV2ZW50UGx1Z2luT3JkZXJcbiAgICAg
KiBAcHVibGljXG4gICAgICovXG4gICAgaW5qZWN0RXZlbnRQbHVnaW5PcmRlcjogRXZlbnRQbHVn
aW5SZWdpc3RyeS5pbmplY3RFdmVudFBsdWdpbk9yZGVyLFxuXG4gICAgLyoqXG4gICAgICogQHBh
cmFtIHtvYmplY3R9IGluamVjdGVkTmFtZXNUb1BsdWdpbnMgTWFwIGZyb20gbmFtZXMgdG8gcGx1
Z2luIG1vZHVsZXMuXG4gICAgICovXG4gICAgaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lOiBFdmVu
dFBsdWdpblJlZ2lzdHJ5LmluamVjdEV2ZW50UGx1Z2luc0J5TmFtZVxuICB9LFxuXG4gIC8qKlxu
ICAgKiBTdG9yZXMgYGxpc3RlbmVyYCBhdCBgbGlzdGVuZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVd
W2tleV1gLiBJcyBpZGVtcG90ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gaW5zdCBU
aGUgaW5zdGFuY2UsIHdoaWNoIGlzIHRoZSBzb3VyY2Ugb2YgZXZlbnRzLlxuICAgKiBAcGFyYW0g
e3N0cmluZ30gcmVnaXN0cmF0aW9uTmFtZSBOYW1lIG9mIGxpc3RlbmVyIChlLmcuIGBvbkNsaWNr
YCkuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGxpc3RlbmVyIFRoZSBjYWxsYmFjayB0byBzdG9y
ZS5cbiAgICovXG4gIHB1dExpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwgcmVnaXN0cmF0aW9uTmFt
ZSwgbGlzdGVuZXIpIHtcbiAgICAhKHR5cGVvZiBsaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJykgPyBw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAn
RXhwZWN0ZWQgJXMgbGlzdGVuZXIgdG8gYmUgYSBmdW5jdGlvbiwgaW5zdGVhZCBnb3QgdHlwZSAl
cycsIHJlZ2lzdHJhdGlvbk5hbWUsIHR5cGVvZiBsaXN0ZW5lcikgOiBfcHJvZEludmFyaWFudCgn
OTQnLCByZWdpc3RyYXRpb25OYW1lLCB0eXBlb2YgbGlzdGVuZXIpIDogdm9pZCAwO1xuXG4gICAg
dmFyIGtleSA9IGdldERpY3Rpb25hcnlLZXkoaW5zdCk7XG4gICAgdmFyIGJhbmtGb3JSZWdpc3Ry
YXRpb25OYW1lID0gbGlzdGVuZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdIHx8IChsaXN0ZW5lckJh
bmtbcmVnaXN0cmF0aW9uTmFtZV0gPSB7fSk7XG4gICAgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWVb
a2V5XSA9IGxpc3RlbmVyO1xuXG4gICAgdmFyIFBsdWdpbk1vZHVsZSA9IEV2ZW50UGx1Z2luUmVn
aXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbcmVnaXN0cmF0aW9uTmFtZV07XG4gICAgaWYg
KFBsdWdpbk1vZHVsZSAmJiBQbHVnaW5Nb2R1bGUuZGlkUHV0TGlzdGVuZXIpIHtcbiAgICAgIFBs
dWdpbk1vZHVsZS5kaWRQdXRMaXN0ZW5lcihpbnN0LCByZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5l
cik7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gaW5zdCBUaGUg
aW5zdGFuY2UsIHdoaWNoIGlzIHRoZSBzb3VyY2Ugb2YgZXZlbnRzLlxuICAgKiBAcGFyYW0ge3N0
cmluZ30gcmVnaXN0cmF0aW9uTmFtZSBOYW1lIG9mIGxpc3RlbmVyIChlLmcuIGBvbkNsaWNrYCku
XG4gICAqIEByZXR1cm4gez9mdW5jdGlvbn0gVGhlIHN0b3JlZCBjYWxsYmFjay5cbiAgICovXG4g
IGdldExpc3RlbmVyOiBmdW5jdGlvbiAoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSkge1xuICAgIC8v
IFRPRE86IHNob3VsZFByZXZlbnRNb3VzZUV2ZW50IGlzIERPTS1zcGVjaWZpYyBhbmQgZGVmaW5p
dGVseSBzaG91bGQgbm90XG4gICAgLy8gbGl2ZSBoZXJlOyBuZWVkcyB0byBiZSBtb3ZlZCB0byBh
IGJldHRlciBwbGFjZSBzb29uXG4gICAgdmFyIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lID0gbGlz
dGVuZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdO1xuICAgIGlmIChzaG91bGRQcmV2ZW50TW91c2VF
dmVudChyZWdpc3RyYXRpb25OYW1lLCBpbnN0Ll9jdXJyZW50RWxlbWVudC50eXBlLCBpbnN0Ll9j
dXJyZW50RWxlbWVudC5wcm9wcykpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB2
YXIga2V5ID0gZ2V0RGljdGlvbmFyeUtleShpbnN0KTtcbiAgICByZXR1cm4gYmFua0ZvclJlZ2lz
dHJhdGlvbk5hbWUgJiYgYmFua0ZvclJlZ2lzdHJhdGlvbk5hbWVba2V5XTtcbiAgfSxcblxuICAv
KipcbiAgICogRGVsZXRlcyBhIGxpc3RlbmVyIGZyb20gdGhlIHJlZ2lzdHJhdGlvbiBiYW5rLlxu
ICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gaW5zdCBUaGUgaW5zdGFuY2UsIHdoaWNoIGlzIHRo
ZSBzb3VyY2Ugb2YgZXZlbnRzLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gcmVnaXN0cmF0aW9uTmFt
ZSBOYW1lIG9mIGxpc3RlbmVyIChlLmcuIGBvbkNsaWNrYCkuXG4gICAqL1xuICBkZWxldGVMaXN0
ZW5lcjogZnVuY3Rpb24gKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUpIHtcbiAgICB2YXIgUGx1Z2lu
TW9kdWxlID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1tyZWdp
c3RyYXRpb25OYW1lXTtcbiAgICBpZiAoUGx1Z2luTW9kdWxlICYmIFBsdWdpbk1vZHVsZS53aWxs
RGVsZXRlTGlzdGVuZXIpIHtcbiAgICAgIFBsdWdpbk1vZHVsZS53aWxsRGVsZXRlTGlzdGVuZXIo
aW5zdCwgcmVnaXN0cmF0aW9uTmFtZSk7XG4gICAgfVxuXG4gICAgdmFyIGJhbmtGb3JSZWdpc3Ry
YXRpb25OYW1lID0gbGlzdGVuZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdO1xuICAgIC8vIFRPRE86
IFRoaXMgc2hvdWxkIG5ldmVyIGJlIG51bGwgLS0gd2hlbiBpcyBpdD9cbiAgICBpZiAoYmFua0Zv
clJlZ2lzdHJhdGlvbk5hbWUpIHtcbiAgICAgIHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5S2V5KGlu
c3QpO1xuICAgICAgZGVsZXRlIGJhbmtGb3JSZWdpc3RyYXRpb25OYW1lW2tleV07XG4gICAgfVxu
ICB9LFxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGFsbCBsaXN0ZW5lcnMgZm9yIHRoZSBET00gZWxl
bWVudCB3aXRoIHRoZSBzdXBwbGllZCBJRC5cbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IGlu
c3QgVGhlIGluc3RhbmNlLCB3aGljaCBpcyB0aGUgc291cmNlIG9mIGV2ZW50cy5cbiAgICovXG4g
IGRlbGV0ZUFsbExpc3RlbmVyczogZnVuY3Rpb24gKGluc3QpIHtcbiAgICB2YXIga2V5ID0gZ2V0
RGljdGlvbmFyeUtleShpbnN0KTtcbiAgICBmb3IgKHZhciByZWdpc3RyYXRpb25OYW1lIGluIGxp
c3RlbmVyQmFuaykge1xuICAgICAgaWYgKCFsaXN0ZW5lckJhbmsuaGFzT3duUHJvcGVydHkocmVn
aXN0cmF0aW9uTmFtZSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlm
ICghbGlzdGVuZXJCYW5rW3JlZ2lzdHJhdGlvbk5hbWVdW2tleV0pIHtcbiAgICAgICAgY29udGlu
dWU7XG4gICAgICB9XG5cbiAgICAgIHZhciBQbHVnaW5Nb2R1bGUgPSBFdmVudFBsdWdpblJlZ2lz
dHJ5LnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdO1xuICAgICAgaWYg
KFBsdWdpbk1vZHVsZSAmJiBQbHVnaW5Nb2R1bGUud2lsbERlbGV0ZUxpc3RlbmVyKSB7XG4gICAg
ICAgIFBsdWdpbk1vZHVsZS53aWxsRGVsZXRlTGlzdGVuZXIoaW5zdCwgcmVnaXN0cmF0aW9uTmFt
ZSk7XG4gICAgICB9XG5cbiAgICAgIGRlbGV0ZSBsaXN0ZW5lckJhbmtbcmVnaXN0cmF0aW9uTmFt
ZV1ba2V5XTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIEFsbG93cyByZWdpc3RlcmVkIHBs
dWdpbnMgYW4gb3Bwb3J0dW5pdHkgdG8gZXh0cmFjdCBldmVudHMgZnJvbSB0b3AtbGV2ZWxcbiAg
ICogbmF0aXZlIGJyb3dzZXIgZXZlbnRzLlxuICAgKlxuICAgKiBAcmV0dXJuIHsqfSBBbiBhY2N1
bXVsYXRpb24gb2Ygc3ludGhldGljIGV2ZW50cy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBl
eHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVF
dmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgICB2YXIgZXZlbnRzO1xuICAgIHZhciBwbHVn
aW5zID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5wbHVnaW5zO1xuICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgcGx1Z2lucy5sZW5ndGg7IGkrKykge1xuICAgICAgLy8gTm90IGV2ZXJ5IHBsdWdpbiBpbiB0
aGUgb3JkZXJpbmcgbWF5IGJlIGxvYWRlZCBhdCBydW50aW1lLlxuICAgICAgdmFyIHBvc3NpYmxl
UGx1Z2luID0gcGx1Z2luc1tpXTtcbiAgICAgIGlmIChwb3NzaWJsZVBsdWdpbikge1xuICAgICAg
ICB2YXIgZXh0cmFjdGVkRXZlbnRzID0gcG9zc2libGVQbHVnaW4uZXh0cmFjdEV2ZW50cyh0b3BM
ZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG4g
ICAgICAgIGlmIChleHRyYWN0ZWRFdmVudHMpIHtcbiAgICAgICAgICBldmVudHMgPSBhY2N1bXVs
YXRlSW50byhldmVudHMsIGV4dHJhY3RlZEV2ZW50cyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAg
ICB9XG4gICAgcmV0dXJuIGV2ZW50cztcbiAgfSxcblxuICAvKipcbiAgICogRW5xdWV1ZXMgYSBz
eW50aGV0aWMgZXZlbnQgdGhhdCBzaG91bGQgYmUgZGlzcGF0Y2hlZCB3aGVuXG4gICAqIGBwcm9j
ZXNzRXZlbnRRdWV1ZWAgaXMgaW52b2tlZC5cbiAgICpcbiAgICogQHBhcmFtIHsqfSBldmVudHMg
QW4gYWNjdW11bGF0aW9uIG9mIHN5bnRoZXRpYyBldmVudHMuXG4gICAqIEBpbnRlcm5hbFxuICAg
Ki9cbiAgZW5xdWV1ZUV2ZW50czogZnVuY3Rpb24gKGV2ZW50cykge1xuICAgIGlmIChldmVudHMp
IHtcbiAgICAgIGV2ZW50UXVldWUgPSBhY2N1bXVsYXRlSW50byhldmVudFF1ZXVlLCBldmVudHMp
O1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogRGlzcGF0Y2hlcyBhbGwgc3ludGhldGljIGV2
ZW50cyBvbiB0aGUgZXZlbnQgcXVldWUuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAg
cHJvY2Vzc0V2ZW50UXVldWU6IGZ1bmN0aW9uIChzaW11bGF0ZWQpIHtcbiAgICAvLyBTZXQgYGV2
ZW50UXVldWVgIHRvIG51bGwgYmVmb3JlIHByb2Nlc3NpbmcgaXQgc28gdGhhdCB3ZSBjYW4gdGVs
bCBpZiBtb3JlXG4gICAgLy8gZXZlbnRzIGdldCBlbnF1ZXVlZCB3aGlsZSBwcm9jZXNzaW5nLlxu
ICAgIHZhciBwcm9jZXNzaW5nRXZlbnRRdWV1ZSA9IGV2ZW50UXVldWU7XG4gICAgZXZlbnRRdWV1
ZSA9IG51bGw7XG4gICAgaWYgKHNpbXVsYXRlZCkge1xuICAgICAgZm9yRWFjaEFjY3VtdWxhdGVk
KHByb2Nlc3NpbmdFdmVudFF1ZXVlLCBleGVjdXRlRGlzcGF0Y2hlc0FuZFJlbGVhc2VTaW11bGF0
ZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3JFYWNoQWNjdW11bGF0ZWQocHJvY2Vzc2luZ0V2
ZW50UXVldWUsIGV4ZWN1dGVEaXNwYXRjaGVzQW5kUmVsZWFzZVRvcExldmVsKTtcbiAgICB9XG4g
ICAgISFldmVudFF1ZXVlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IGludmFyaWFudChmYWxzZSwgJ3Byb2Nlc3NFdmVudFF1ZXVlKCk6IEFkZGl0aW9uYWwgZXZlbnRz
IHdlcmUgZW5xdWV1ZWQgd2hpbGUgcHJvY2Vzc2luZyBhbiBldmVudCBxdWV1ZS4gU3VwcG9ydCBm
b3IgdGhpcyBoYXMgbm90IHlldCBiZWVuIGltcGxlbWVudGVkLicpIDogX3Byb2RJbnZhcmlhbnQo
Jzk1JykgOiB2b2lkIDA7XG4gICAgLy8gVGhpcyB3b3VsZCBiZSBhIGdvb2QgdGltZSB0byByZXRo
cm93IGlmIGFueSBvZiB0aGUgZXZlbnQgaGFuZGxlcnMgdGhyZXcuXG4gICAgUmVhY3RFcnJvclV0
aWxzLnJldGhyb3dDYXVnaHRFcnJvcigpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBUaGVzZSBhcmUg
bmVlZGVkIGZvciB0ZXN0cyBvbmx5LiBEbyBub3QgdXNlIVxuICAgKi9cbiAgX19wdXJnZTogZnVu
Y3Rpb24gKCkge1xuICAgIGxpc3RlbmVyQmFuayA9IHt9O1xuICB9LFxuXG4gIF9fZ2V0TGlzdGVu
ZXJCYW5rOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGxpc3RlbmVyQmFuaztcbiAgfVxufTtc
blxubW9kdWxlLmV4cG9ydHMgPSBFdmVudFBsdWdpbkh1YjtcblxuXG4vKioqKioqKioqKioqKioq
KipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL0V2ZW50UGx1Z2lu
SHViLmpzXG4gKiogbW9kdWxlIGlkID0gMTlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIs
Ii8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBF
dmVudFBsdWdpbkh1YiA9IHJlcXVpcmUoJy4vRXZlbnRQbHVnaW5IdWInKTtcbnZhciBFdmVudFBs
dWdpblV0aWxzID0gcmVxdWlyZSgnLi9FdmVudFBsdWdpblV0aWxzJyk7XG5cbnZhciBhY2N1bXVs
YXRlSW50byA9IHJlcXVpcmUoJy4vYWNjdW11bGF0ZUludG8nKTtcbnZhciBmb3JFYWNoQWNjdW11
bGF0ZWQgPSByZXF1aXJlKCcuL2ZvckVhY2hBY2N1bXVsYXRlZCcpO1xudmFyIHdhcm5pbmcgPSBy
ZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBnZXRMaXN0ZW5lciA9IEV2ZW50UGx1
Z2luSHViLmdldExpc3RlbmVyO1xuXG4vKipcbiAqIFNvbWUgZXZlbnQgdHlwZXMgaGF2ZSBhIG5v
dGlvbiBvZiBkaWZmZXJlbnQgcmVnaXN0cmF0aW9uIG5hbWVzIGZvciBkaWZmZXJlbnRcbiAqIFwi
cGhhc2VzXCIgb2YgcHJvcGFnYXRpb24uIFRoaXMgZmluZHMgbGlzdGVuZXJzIGJ5IGEgZ2l2ZW4g
cGhhc2UuXG4gKi9cbmZ1bmN0aW9uIGxpc3RlbmVyQXRQaGFzZShpbnN0LCBldmVudCwgcHJvcGFn
YXRpb25QaGFzZSkge1xuICB2YXIgcmVnaXN0cmF0aW9uTmFtZSA9IGV2ZW50LmRpc3BhdGNoQ29u
ZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzW3Byb3BhZ2F0aW9uUGhhc2VdO1xuICByZXR1cm4g
Z2V0TGlzdGVuZXIoaW5zdCwgcmVnaXN0cmF0aW9uTmFtZSk7XG59XG5cbi8qKlxuICogVGFncyBh
IGBTeW50aGV0aWNFdmVudGAgd2l0aCBkaXNwYXRjaGVkIGxpc3RlbmVycy4gQ3JlYXRpbmcgdGhp
cyBmdW5jdGlvblxuICogaGVyZSwgYWxsb3dzIHVzIHRvIG5vdCBoYXZlIHRvIGJpbmQgb3IgY3Jl
YXRlIGZ1bmN0aW9ucyBmb3IgZWFjaCBldmVudC5cbiAqIE11dGF0aW5nIHRoZSBldmVudCdzIG1l
bWJlcnMgYWxsb3dzIHVzIHRvIG5vdCBoYXZlIHRvIGNyZWF0ZSBhIHdyYXBwaW5nXG4gKiBcImRp
c3BhdGNoXCIgb2JqZWN0IHRoYXQgcGFpcnMgdGhlIGV2ZW50IHdpdGggdGhlIGxpc3RlbmVyLlxu
ICovXG5mdW5jdGlvbiBhY2N1bXVsYXRlRGlyZWN0aW9uYWxEaXNwYXRjaGVzKGluc3QsIHBoYXNl
LCBldmVudCkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykg
e1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGlu
c3QsICdEaXNwYXRjaGluZyBpbnN0IG11c3Qgbm90IGJlIG51bGwnKSA6IHZvaWQgMDtcbiAgfVxu
ICB2YXIgbGlzdGVuZXIgPSBsaXN0ZW5lckF0UGhhc2UoaW5zdCwgZXZlbnQsIHBoYXNlKTtcbiAg
aWYgKGxpc3RlbmVyKSB7XG4gICAgZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzID0gYWNjdW11bGF0
ZUludG8oZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzLCBsaXN0ZW5lcik7XG4gICAgZXZlbnQuX2Rp
c3BhdGNoSW5zdGFuY2VzID0gYWNjdW11bGF0ZUludG8oZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2Vz
LCBpbnN0KTtcbiAgfVxufVxuXG4vKipcbiAqIENvbGxlY3QgZGlzcGF0Y2hlcyAobXVzdCBiZSBl
bnRpcmVseSBjb2xsZWN0ZWQgYmVmb3JlIGRpc3BhdGNoaW5nIC0gc2VlIHVuaXRcbiAqIHRlc3Rz
KS4gTGF6aWx5IGFsbG9jYXRlIHRoZSBhcnJheSB0byBjb25zZXJ2ZSBtZW1vcnkuICBXZSBtdXN0
IGxvb3AgdGhyb3VnaFxuICogZWFjaCBldmVudCBhbmQgcGVyZm9ybSB0aGUgdHJhdmVyc2FsIGZv
ciBlYWNoIG9uZS4gV2UgY2Fubm90IHBlcmZvcm0gYVxuICogc2luZ2xlIHRyYXZlcnNhbCBmb3Ig
dGhlIGVudGlyZSBjb2xsZWN0aW9uIG9mIGV2ZW50cyBiZWNhdXNlIGVhY2ggZXZlbnQgbWF5XG4g
KiBoYXZlIGEgZGlmZmVyZW50IHRhcmdldC5cbiAqL1xuZnVuY3Rpb24gYWNjdW11bGF0ZVR3b1Bo
YXNlRGlzcGF0Y2hlc1NpbmdsZShldmVudCkge1xuICBpZiAoZXZlbnQgJiYgZXZlbnQuZGlzcGF0
Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpIHtcbiAgICBFdmVudFBsdWdpblV0aWxz
LnRyYXZlcnNlVHdvUGhhc2UoZXZlbnQuX3RhcmdldEluc3QsIGFjY3VtdWxhdGVEaXJlY3Rpb25h
bERpc3BhdGNoZXMsIGV2ZW50KTtcbiAgfVxufVxuXG4vKipcbiAqIFNhbWUgYXMgYGFjY3VtdWxh
dGVUd29QaGFzZURpc3BhdGNoZXNTaW5nbGVgLCBidXQgc2tpcHMgb3ZlciB0aGUgdGFyZ2V0SUQu
XG4gKi9cbmZ1bmN0aW9uIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNTaW5nbGVTa2lwVGFy
Z2V0KGV2ZW50KSB7XG4gIGlmIChldmVudCAmJiBldmVudC5kaXNwYXRjaENvbmZpZy5waGFzZWRS
ZWdpc3RyYXRpb25OYW1lcykge1xuICAgIHZhciB0YXJnZXRJbnN0ID0gZXZlbnQuX3RhcmdldElu
c3Q7XG4gICAgdmFyIHBhcmVudEluc3QgPSB0YXJnZXRJbnN0ID8gRXZlbnRQbHVnaW5VdGlscy5n
ZXRQYXJlbnRJbnN0YW5jZSh0YXJnZXRJbnN0KSA6IG51bGw7XG4gICAgRXZlbnRQbHVnaW5VdGls
cy50cmF2ZXJzZVR3b1BoYXNlKHBhcmVudEluc3QsIGFjY3VtdWxhdGVEaXJlY3Rpb25hbERpc3Bh
dGNoZXMsIGV2ZW50KTtcbiAgfVxufVxuXG4vKipcbiAqIEFjY3VtdWxhdGVzIHdpdGhvdXQgcmVn
YXJkIHRvIGRpcmVjdGlvbiwgZG9lcyBub3QgbG9vayBmb3IgcGhhc2VkXG4gKiByZWdpc3RyYXRp
b24gbmFtZXMuIFNhbWUgYXMgYGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzU2luZ2xlYCBidXQg
d2l0aG91dFxuICogcmVxdWlyaW5nIHRoYXQgdGhlIGBkaXNwYXRjaE1hcmtlcmAgYmUgdGhlIHNh
bWUgYXMgdGhlIGRpc3BhdGNoZWQgSUQuXG4gKi9cbmZ1bmN0aW9uIGFjY3VtdWxhdGVEaXNwYXRj
aGVzKGluc3QsIGlnbm9yZWREaXJlY3Rpb24sIGV2ZW50KSB7XG4gIGlmIChldmVudCAmJiBldmVu
dC5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKSB7XG4gICAgdmFyIHJlZ2lzdHJhdGlv
bk5hbWUgPSBldmVudC5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lO1xuICAgIHZhciBs
aXN0ZW5lciA9IGdldExpc3RlbmVyKGluc3QsIHJlZ2lzdHJhdGlvbk5hbWUpO1xuICAgIGlmIChs
aXN0ZW5lcikge1xuICAgICAgZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzID0gYWNjdW11bGF0ZUlu
dG8oZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzLCBsaXN0ZW5lcik7XG4gICAgICBldmVudC5fZGlz
cGF0Y2hJbnN0YW5jZXMgPSBhY2N1bXVsYXRlSW50byhldmVudC5fZGlzcGF0Y2hJbnN0YW5jZXMs
IGluc3QpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEFjY3VtdWxhdGVzIGRpc3BhdGNoZXMg
b24gYW4gYFN5bnRoZXRpY0V2ZW50YCwgYnV0IG9ubHkgZm9yIHRoZVxuICogYGRpc3BhdGNoTWFy
a2VyYC5cbiAqIEBwYXJhbSB7U3ludGhldGljRXZlbnR9IGV2ZW50XG4gKi9cbmZ1bmN0aW9uIGFj
Y3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzU2luZ2xlKGV2ZW50KSB7XG4gIGlmIChldmVudCAmJiBl
dmVudC5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKSB7XG4gICAgYWNjdW11bGF0ZURp
c3BhdGNoZXMoZXZlbnQuX3RhcmdldEluc3QsIG51bGwsIGV2ZW50KTtcbiAgfVxufVxuXG5mdW5j
dGlvbiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGV2ZW50cykge1xuICBmb3JFYWNoQWNj
dW11bGF0ZWQoZXZlbnRzLCBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2luZ2xlKTtcbn1c
blxuZnVuY3Rpb24gYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlc1NraXBUYXJnZXQoZXZlbnRz
KSB7XG4gIGZvckVhY2hBY2N1bXVsYXRlZChldmVudHMsIGFjY3VtdWxhdGVUd29QaGFzZURpc3Bh
dGNoZXNTaW5nbGVTa2lwVGFyZ2V0KTtcbn1cblxuZnVuY3Rpb24gYWNjdW11bGF0ZUVudGVyTGVh
dmVEaXNwYXRjaGVzKGxlYXZlLCBlbnRlciwgZnJvbSwgdG8pIHtcbiAgRXZlbnRQbHVnaW5VdGls
cy50cmF2ZXJzZUVudGVyTGVhdmUoZnJvbSwgdG8sIGFjY3VtdWxhdGVEaXNwYXRjaGVzLCBsZWF2
ZSwgZW50ZXIpO1xufVxuXG5mdW5jdGlvbiBhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlcyhldmVu
dHMpIHtcbiAgZm9yRWFjaEFjY3VtdWxhdGVkKGV2ZW50cywgYWNjdW11bGF0ZURpcmVjdERpc3Bh
dGNoZXNTaW5nbGUpO1xufVxuXG4vKipcbiAqIEEgc21hbGwgc2V0IG9mIHByb3BhZ2F0aW9uIHBh
dHRlcm5zLCBlYWNoIG9mIHdoaWNoIHdpbGwgYWNjZXB0IGEgc21hbGwgYW1vdW50XG4gKiBvZiBp
bmZvcm1hdGlvbiwgYW5kIGdlbmVyYXRlIGEgc2V0IG9mIFwiZGlzcGF0Y2ggcmVhZHkgZXZlbnQg
b2JqZWN0c1wiIC0gd2hpY2hcbiAqIGFyZSBzZXRzIG9mIGV2ZW50cyB0aGF0IGhhdmUgYWxyZWFk
eSBiZWVuIGFubm90YXRlZCB3aXRoIGEgc2V0IG9mIGRpc3BhdGNoZWRcbiAqIGxpc3RlbmVyIGZ1
bmN0aW9ucy9pZHMuIFRoZSBBUEkgaXMgZGVzaWduZWQgdGhpcyB3YXkgdG8gZGlzY291cmFnZSB0
aGVzZVxuICogcHJvcGFnYXRpb24gc3RyYXRlZ2llcyBmcm9tIGFjdHVhbGx5IGV4ZWN1dGluZyB0
aGUgZGlzcGF0Y2hlcywgc2luY2Ugd2VcbiAqIGFsd2F5cyB3YW50IHRvIGNvbGxlY3QgdGhlIGVu
dGlyZSBzZXQgb2YgZGlzcGF0Y2hlcyBiZWZvcmUgZXhlY3V0aW5nIGV2ZW50IGFcbiAqIHNpbmds
ZSBvbmUuXG4gKlxuICogQGNvbnN0cnVjdG9yIEV2ZW50UHJvcGFnYXRvcnNcbiAqL1xudmFyIEV2
ZW50UHJvcGFnYXRvcnMgPSB7XG4gIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXM6IGFjY3Vt
dWxhdGVUd29QaGFzZURpc3BhdGNoZXMsXG4gIGFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXNT
a2lwVGFyZ2V0OiBhY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzU2tpcFRhcmdldCxcbiAgYWNj
dW11bGF0ZURpcmVjdERpc3BhdGNoZXM6IGFjY3VtdWxhdGVEaXJlY3REaXNwYXRjaGVzLFxuICBh
Y2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXM6IGFjY3VtdWxhdGVFbnRlckxlYXZlRGlzcGF0
Y2hlc1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBFdmVudFByb3BhZ2F0b3JzO1xuXG5cbi8qKioq
KioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIv
RXZlbnRQcm9wYWdhdG9ycy5qc1xuICoqIG1vZHVsZSBpZCA9IDIwXG4gKiogbW9kdWxlIGNodW5r
cyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJp
Y3QnO1xuXG4vKipcbiAqIGBSZWFjdEluc3RhbmNlTWFwYCBtYWludGFpbnMgYSBtYXBwaW5nIGZy
b20gYSBwdWJsaWMgZmFjaW5nIHN0YXRlZnVsXG4gKiBpbnN0YW5jZSAoa2V5KSBhbmQgdGhlIGlu
dGVybmFsIHJlcHJlc2VudGF0aW9uICh2YWx1ZSkuIFRoaXMgYWxsb3dzIHB1YmxpY1xuICogbWV0
aG9kcyB0byBhY2NlcHQgdGhlIHVzZXIgZmFjaW5nIGluc3RhbmNlIGFzIGFuIGFyZ3VtZW50IGFu
ZCBtYXAgdGhlbSBiYWNrXG4gKiB0byBpbnRlcm5hbCBtZXRob2RzLlxuICovXG5cbi8vIFRPRE86
IFJlcGxhY2UgdGhpcyB3aXRoIEVTNjogdmFyIFJlYWN0SW5zdGFuY2VNYXAgPSBuZXcgTWFwKCk7
XG5cbnZhciBSZWFjdEluc3RhbmNlTWFwID0ge1xuICAvKipcbiAgICogVGhpcyBBUEkgc2hvdWxk
IGJlIGNhbGxlZCBgZGVsZXRlYCBidXQgd2UnZCBoYXZlIHRvIG1ha2Ugc3VyZSB0byBhbHdheXNc
biAgICogdHJhbnNmb3JtIHRoZXNlIHRvIHN0cmluZ3MgZm9yIElFIHN1cHBvcnQuIFdoZW4gdGhp
cyB0cmFuc2Zvcm0gaXMgZnVsbHlcbiAgICogc3VwcG9ydGVkIHdlIGNhbiByZW5hbWUgaXQuXG4g
ICAqL1xuICByZW1vdmU6IGZ1bmN0aW9uIChrZXkpIHtcbiAgICBrZXkuX3JlYWN0SW50ZXJuYWxJ
bnN0YW5jZSA9IHVuZGVmaW5lZDtcbiAgfSxcblxuICBnZXQ6IGZ1bmN0aW9uIChrZXkpIHtcbiAg
ICByZXR1cm4ga2V5Ll9yZWFjdEludGVybmFsSW5zdGFuY2U7XG4gIH0sXG5cbiAgaGFzOiBmdW5j
dGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIGtleS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlICE9PSB1
bmRlZmluZWQ7XG4gIH0sXG5cbiAgc2V0OiBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgIGtl
eS5fcmVhY3RJbnRlcm5hbEluc3RhbmNlID0gdmFsdWU7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBv
cnRzID0gUmVhY3RJbnN0YW5jZU1hcDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQ
QUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0SW5zdGFuY2VNYXAuanNcbiAq
KiBtb2R1bGUgaWQgPSAyMVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNl
cnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFN5bnRoZXRpY0V2
ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNFdmVudCcpO1xuXG52YXIgZ2V0RXZlbnRUYXJnZXQg
PSByZXF1aXJlKCcuL2dldEV2ZW50VGFyZ2V0Jyk7XG5cbi8qKlxuICogQGludGVyZmFjZSBVSUV2
ZW50XG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy9cbiAq
L1xudmFyIFVJRXZlbnRJbnRlcmZhY2UgPSB7XG4gIHZpZXc6IGZ1bmN0aW9uIChldmVudCkge1xu
ICAgIGlmIChldmVudC52aWV3KSB7XG4gICAgICByZXR1cm4gZXZlbnQudmlldztcbiAgICB9XG5c
biAgICB2YXIgdGFyZ2V0ID0gZ2V0RXZlbnRUYXJnZXQoZXZlbnQpO1xuICAgIGlmICh0YXJnZXQu
d2luZG93ID09PSB0YXJnZXQpIHtcbiAgICAgIC8vIHRhcmdldCBpcyBhIHdpbmRvdyBvYmplY3Rc
biAgICAgIHJldHVybiB0YXJnZXQ7XG4gICAgfVxuXG4gICAgdmFyIGRvYyA9IHRhcmdldC5vd25l
ckRvY3VtZW50O1xuICAgIC8vIFRPRE86IEZpZ3VyZSBvdXQgd2h5IGBvd25lckRvY3VtZW50YCBp
cyBzb21ldGltZXMgdW5kZWZpbmVkIGluIElFOC5cbiAgICBpZiAoZG9jKSB7XG4gICAgICByZXR1
cm4gZG9jLmRlZmF1bHRWaWV3IHx8IGRvYy5wYXJlbnRXaW5kb3c7XG4gICAgfSBlbHNlIHtcbiAg
ICAgIHJldHVybiB3aW5kb3c7XG4gICAgfVxuICB9LFxuICBkZXRhaWw6IGZ1bmN0aW9uIChldmVu
dCkge1xuICAgIHJldHVybiBldmVudC5kZXRhaWwgfHwgMDtcbiAgfVxufTtcblxuLyoqXG4gKiBA
cGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3Bh
dGNoIHRoaXMgZXZlbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2Vy
IGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZl
RXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBAZXh0ZW5kcyB7U3ludGhldGljRXZlbnR9
XG4gKi9cbmZ1bmN0aW9uIFN5bnRoZXRpY1VJRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNo
TWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgcmV0dXJuIFN5bnRo
ZXRpY0V2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRp
dmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xufVxuXG5TeW50aGV0aWNFdmVudC5hdWdtZW50
Q2xhc3MoU3ludGhldGljVUlFdmVudCwgVUlFdmVudEludGVyZmFjZSk7XG5cbm1vZHVsZS5leHBv
cnRzID0gU3ludGhldGljVUlFdmVudDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQ
QUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY1VJRXZlbnQuanNcbiAq
KiBtb2R1bGUgaWQgPSAyMlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBD
b3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMg
cmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUg
QlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJv
b3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAq
IG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhl
IHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBlbXB0eU9i
amVjdCA9IHt9O1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykg
e1xuICBPYmplY3QuZnJlZXplKGVtcHR5T2JqZWN0KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBl
bXB0eU9iamVjdDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxu
ICoqIC4vfi9mYmpzL2xpYi9lbXB0eU9iamVjdC5qc1xuICoqIG1vZHVsZSBpZCA9IDI0XG4gKiog
bW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9c
blxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24n
KTtcblxudmFyIEV2ZW50UGx1Z2luUmVnaXN0cnkgPSByZXF1aXJlKCcuL0V2ZW50UGx1Z2luUmVn
aXN0cnknKTtcbnZhciBSZWFjdEV2ZW50RW1pdHRlck1peGluID0gcmVxdWlyZSgnLi9SZWFjdEV2
ZW50RW1pdHRlck1peGluJyk7XG52YXIgVmlld3BvcnRNZXRyaWNzID0gcmVxdWlyZSgnLi9WaWV3
cG9ydE1ldHJpY3MnKTtcblxudmFyIGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lID0gcmVxdWly
ZSgnLi9nZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZScpO1xudmFyIGlzRXZlbnRTdXBwb3J0ZWQg
PSByZXF1aXJlKCcuL2lzRXZlbnRTdXBwb3J0ZWQnKTtcblxuLyoqXG4gKiBTdW1tYXJ5IG9mIGBS
ZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXJgIGV2ZW50IGhhbmRsaW5nOlxuICpcbiAqICAtIFRvcC1s
ZXZlbCBkZWxlZ2F0aW9uIGlzIHVzZWQgdG8gdHJhcCBtb3N0IG5hdGl2ZSBicm93c2VyIGV2ZW50
cy4gVGhpc1xuICogICAgbWF5IG9ubHkgb2NjdXIgaW4gdGhlIG1haW4gdGhyZWFkIGFuZCBpcyB0
aGUgcmVzcG9uc2liaWxpdHkgb2ZcbiAqICAgIFJlYWN0RXZlbnRMaXN0ZW5lciwgd2hpY2ggaXMg
aW5qZWN0ZWQgYW5kIGNhbiB0aGVyZWZvcmUgc3VwcG9ydCBwbHVnZ2FibGVcbiAqICAgIGV2ZW50
IHNvdXJjZXMuIFRoaXMgaXMgdGhlIG9ubHkgd29yayB0aGF0IG9jY3VycyBpbiB0aGUgbWFpbiB0
aHJlYWQuXG4gKlxuICogIC0gV2Ugbm9ybWFsaXplIGFuZCBkZS1kdXBsaWNhdGUgZXZlbnRzIHRv
IGFjY291bnQgZm9yIGJyb3dzZXIgcXVpcmtzLiBUaGlzXG4gKiAgICBtYXkgYmUgZG9uZSBpbiB0
aGUgd29ya2VyIHRocmVhZC5cbiAqXG4gKiAgLSBGb3J3YXJkIHRoZXNlIG5hdGl2ZSBldmVudHMg
KHdpdGggdGhlIGFzc29jaWF0ZWQgdG9wLWxldmVsIHR5cGUgdXNlZCB0b1xuICogICAgdHJhcCBp
dCkgdG8gYEV2ZW50UGx1Z2luSHViYCwgd2hpY2ggaW4gdHVybiB3aWxsIGFzayBwbHVnaW5zIGlm
IHRoZXkgd2FudFxuICogICAgdG8gZXh0cmFjdCBhbnkgc3ludGhldGljIGV2ZW50cy5cbiAqXG4g
KiAgLSBUaGUgYEV2ZW50UGx1Z2luSHViYCB3aWxsIHRoZW4gcHJvY2VzcyBlYWNoIGV2ZW50IGJ5
IGFubm90YXRpbmcgdGhlbSB3aXRoXG4gKiAgICBcImRpc3BhdGNoZXNcIiwgYSBzZXF1ZW5jZSBv
ZiBsaXN0ZW5lcnMgYW5kIElEcyB0aGF0IGNhcmUgYWJvdXQgdGhhdCBldmVudC5cbiAqXG4gKiAg
LSBUaGUgYEV2ZW50UGx1Z2luSHViYCB0aGVuIGRpc3BhdGNoZXMgdGhlIGV2ZW50cy5cbiAqXG4g
KiBPdmVydmlldyBvZiBSZWFjdCBhbmQgdGhlIGV2ZW50IHN5c3RlbTpcbiAqXG4gKiArLS0tLS0t
LS0tLS0tKyAgICAuXG4gKiB8ICAgIERPTSAgICAgfCAgICAuXG4gKiArLS0tLS0tLS0tLS0tKyAg
ICAuXG4gKiAgICAgICB8ICAgICAgICAgICAuXG4gKiAgICAgICB2ICAgICAgICAgICAuXG4gKiAr
LS0tLS0tLS0tLS0tKyAgICAuXG4gKiB8IFJlYWN0RXZlbnQgfCAgICAuXG4gKiB8ICBMaXN0ZW5l
ciAgfCAgICAuXG4gKiArLS0tLS0tLS0tLS0tKyAgICAuICAgICAgICAgICAgICAgICAgICAgICAg
ICstLS0tLS0tLS0tLStcbiAqICAgICAgIHwgICAgICAgICAgIC4gICAgICAgICAgICAgICArLS0t
LS0tLS0rfFNpbXBsZUV2ZW50fFxuICogICAgICAgfCAgICAgICAgICAgLiAgICAgICAgICAgICAg
IHwgICAgICAgICB8UGx1Z2luICAgICB8XG4gKiArLS0tLS18LS0tLS0tKyAgICAuICAgICAgICAg
ICAgICAgdiAgICAgICAgICstLS0tLS0tLS0tLStcbiAqIHwgICAgIHwgICAgICB8ICAgIC4gICAg
Ky0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLStcbiAqIHwg
ICAgICstLS0tLS0tLS0tLS4tLS0+fEV2ZW50UGx1Z2luSHVifCAgICAgICAgICAgICAgICAgICAg
fCAgICBFdmVudCAgIHxcbiAqIHwgICAgICAgICAgICB8ICAgIC4gICAgfCAgICAgICAgICAgICAg
fCAgICAgKy0tLS0tLS0tLS0tKyAgfCBQcm9wYWdhdG9yc3xcbiAqIHwgUmVhY3RFdmVudCB8ICAg
IC4gICAgfCAgICAgICAgICAgICAgfCAgICAgfFRhcEV2ZW50ICAgfCAgfC0tLS0tLS0tLS0tLXxc
biAqIHwgIEVtaXR0ZXIgICB8ICAgIC4gICAgfCAgICAgICAgICAgICAgfDwtLS0rfFBsdWdpbiAg
ICAgfCAgfG90aGVyIHBsdWdpbnxcbiAqIHwgICAgICAgICAgICB8ICAgIC4gICAgfCAgICAgICAg
ICAgICAgfCAgICAgKy0tLS0tLS0tLS0tKyAgfCAgdXRpbGl0aWVzIHxcbiAqIHwgICAgICstLS0t
LS0tLS0tLS4tLS0+fCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0t
LS0tLStcbiAqIHwgICAgIHwgICAgICB8ICAgIC4gICAgKy0tLS0tLS0tLS0tLS0tK1xuICogKy0t
LS0tfC0tLS0tLSsgICAgLiAgICAgICAgICAgICAgICBeICAgICAgICArLS0tLS0tLS0tLS0rXG4g
KiAgICAgICB8ICAgICAgICAgICAuICAgICAgICAgICAgICAgIHwgICAgICAgIHxFbnRlci9MZWF2
ZXxcbiAqICAgICAgICsgICAgICAgICAgIC4gICAgICAgICAgICAgICAgKy0tLS0tLS0rfFBsdWdp
biAgICAgfFxuICogKy0tLS0tLS0tLS0tLS0rICAgLiAgICAgICAgICAgICAgICAgICAgICAgICAr
LS0tLS0tLS0tLS0rXG4gKiB8IGFwcGxpY2F0aW9uIHwgICAuXG4gKiB8LS0tLS0tLS0tLS0tLXwg
ICAuXG4gKiB8ICAgICAgICAgICAgIHwgICAuXG4gKiB8ICAgICAgICAgICAgIHwgICAuXG4gKiAr
LS0tLS0tLS0tLS0tLSsgICAuXG4gKiAgICAgICAgICAgICAgICAgICAuXG4gKiAgICBSZWFjdCBD
b3JlICAgICAuICBHZW5lcmFsIFB1cnBvc2UgRXZlbnQgUGx1Z2luIFN5c3RlbVxuICovXG5cbnZh
ciBoYXNFdmVudFBhZ2VYWTtcbnZhciBhbHJlYWR5TGlzdGVuaW5nVG8gPSB7fTtcbnZhciBpc01v
bml0b3JpbmdTY3JvbGxWYWx1ZSA9IGZhbHNlO1xudmFyIHJlYWN0VG9wTGlzdGVuZXJzQ291bnRl
ciA9IDA7XG5cbi8vIEZvciBldmVudHMgbGlrZSAnc3VibWl0JyB3aGljaCBkb24ndCBjb25zaXN0
ZW50bHkgYnViYmxlICh3aGljaCB3ZSB0cmFwIGF0IGFcbi8vIGxvd2VyIG5vZGUgdGhhbiBgZG9j
dW1lbnRgKSwgYmluZGluZyBhdCBgZG9jdW1lbnRgIHdvdWxkIGNhdXNlIGR1cGxpY2F0ZVxuLy8g
ZXZlbnRzIHNvIHdlIGRvbid0IGluY2x1ZGUgdGhlbSBoZXJlXG52YXIgdG9wRXZlbnRNYXBwaW5n
ID0ge1xuICB0b3BBYm9ydDogJ2Fib3J0JyxcbiAgdG9wQW5pbWF0aW9uRW5kOiBnZXRWZW5kb3JQ
cmVmaXhlZEV2ZW50TmFtZSgnYW5pbWF0aW9uZW5kJykgfHwgJ2FuaW1hdGlvbmVuZCcsXG4gIHRv
cEFuaW1hdGlvbkl0ZXJhdGlvbjogZ2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUoJ2FuaW1hdGlv
bml0ZXJhdGlvbicpIHx8ICdhbmltYXRpb25pdGVyYXRpb24nLFxuICB0b3BBbmltYXRpb25TdGFy
dDogZ2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUoJ2FuaW1hdGlvbnN0YXJ0JykgfHwgJ2FuaW1h
dGlvbnN0YXJ0JyxcbiAgdG9wQmx1cjogJ2JsdXInLFxuICB0b3BDYW5QbGF5OiAnY2FucGxheScs
XG4gIHRvcENhblBsYXlUaHJvdWdoOiAnY2FucGxheXRocm91Z2gnLFxuICB0b3BDaGFuZ2U6ICdj
aGFuZ2UnLFxuICB0b3BDbGljazogJ2NsaWNrJyxcbiAgdG9wQ29tcG9zaXRpb25FbmQ6ICdjb21w
b3NpdGlvbmVuZCcsXG4gIHRvcENvbXBvc2l0aW9uU3RhcnQ6ICdjb21wb3NpdGlvbnN0YXJ0Jyxc
biAgdG9wQ29tcG9zaXRpb25VcGRhdGU6ICdjb21wb3NpdGlvbnVwZGF0ZScsXG4gIHRvcENvbnRl
eHRNZW51OiAnY29udGV4dG1lbnUnLFxuICB0b3BDb3B5OiAnY29weScsXG4gIHRvcEN1dDogJ2N1
dCcsXG4gIHRvcERvdWJsZUNsaWNrOiAnZGJsY2xpY2snLFxuICB0b3BEcmFnOiAnZHJhZycsXG4g
IHRvcERyYWdFbmQ6ICdkcmFnZW5kJyxcbiAgdG9wRHJhZ0VudGVyOiAnZHJhZ2VudGVyJyxcbiAg
dG9wRHJhZ0V4aXQ6ICdkcmFnZXhpdCcsXG4gIHRvcERyYWdMZWF2ZTogJ2RyYWdsZWF2ZScsXG4g
IHRvcERyYWdPdmVyOiAnZHJhZ292ZXInLFxuICB0b3BEcmFnU3RhcnQ6ICdkcmFnc3RhcnQnLFxu
ICB0b3BEcm9wOiAnZHJvcCcsXG4gIHRvcER1cmF0aW9uQ2hhbmdlOiAnZHVyYXRpb25jaGFuZ2Un
LFxuICB0b3BFbXB0aWVkOiAnZW1wdGllZCcsXG4gIHRvcEVuY3J5cHRlZDogJ2VuY3J5cHRlZCcs
XG4gIHRvcEVuZGVkOiAnZW5kZWQnLFxuICB0b3BFcnJvcjogJ2Vycm9yJyxcbiAgdG9wRm9jdXM6
ICdmb2N1cycsXG4gIHRvcElucHV0OiAnaW5wdXQnLFxuICB0b3BLZXlEb3duOiAna2V5ZG93bics
XG4gIHRvcEtleVByZXNzOiAna2V5cHJlc3MnLFxuICB0b3BLZXlVcDogJ2tleXVwJyxcbiAgdG9w
TG9hZGVkRGF0YTogJ2xvYWRlZGRhdGEnLFxuICB0b3BMb2FkZWRNZXRhZGF0YTogJ2xvYWRlZG1l
dGFkYXRhJyxcbiAgdG9wTG9hZFN0YXJ0OiAnbG9hZHN0YXJ0JyxcbiAgdG9wTW91c2VEb3duOiAn
bW91c2Vkb3duJyxcbiAgdG9wTW91c2VNb3ZlOiAnbW91c2Vtb3ZlJyxcbiAgdG9wTW91c2VPdXQ6
ICdtb3VzZW91dCcsXG4gIHRvcE1vdXNlT3ZlcjogJ21vdXNlb3ZlcicsXG4gIHRvcE1vdXNlVXA6
ICdtb3VzZXVwJyxcbiAgdG9wUGFzdGU6ICdwYXN0ZScsXG4gIHRvcFBhdXNlOiAncGF1c2UnLFxu
ICB0b3BQbGF5OiAncGxheScsXG4gIHRvcFBsYXlpbmc6ICdwbGF5aW5nJyxcbiAgdG9wUHJvZ3Jl
c3M6ICdwcm9ncmVzcycsXG4gIHRvcFJhdGVDaGFuZ2U6ICdyYXRlY2hhbmdlJyxcbiAgdG9wU2Ny
b2xsOiAnc2Nyb2xsJyxcbiAgdG9wU2Vla2VkOiAnc2Vla2VkJyxcbiAgdG9wU2Vla2luZzogJ3Nl
ZWtpbmcnLFxuICB0b3BTZWxlY3Rpb25DaGFuZ2U6ICdzZWxlY3Rpb25jaGFuZ2UnLFxuICB0b3BT
dGFsbGVkOiAnc3RhbGxlZCcsXG4gIHRvcFN1c3BlbmQ6ICdzdXNwZW5kJyxcbiAgdG9wVGV4dElu
cHV0OiAndGV4dElucHV0JyxcbiAgdG9wVGltZVVwZGF0ZTogJ3RpbWV1cGRhdGUnLFxuICB0b3BU
b3VjaENhbmNlbDogJ3RvdWNoY2FuY2VsJyxcbiAgdG9wVG91Y2hFbmQ6ICd0b3VjaGVuZCcsXG4g
IHRvcFRvdWNoTW92ZTogJ3RvdWNobW92ZScsXG4gIHRvcFRvdWNoU3RhcnQ6ICd0b3VjaHN0YXJ0
JyxcbiAgdG9wVHJhbnNpdGlvbkVuZDogZ2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUoJ3RyYW5z
aXRpb25lbmQnKSB8fCAndHJhbnNpdGlvbmVuZCcsXG4gIHRvcFZvbHVtZUNoYW5nZTogJ3ZvbHVt
ZWNoYW5nZScsXG4gIHRvcFdhaXRpbmc6ICd3YWl0aW5nJyxcbiAgdG9wV2hlZWw6ICd3aGVlbCdc
bn07XG5cbi8qKlxuICogVG8gZW5zdXJlIG5vIGNvbmZsaWN0cyB3aXRoIG90aGVyIHBvdGVudGlh
bCBSZWFjdCBpbnN0YW5jZXMgb24gdGhlIHBhZ2VcbiAqL1xudmFyIHRvcExpc3RlbmVyc0lES2V5
ID0gJ19yZWFjdExpc3RlbmVyc0lEJyArIFN0cmluZyhNYXRoLnJhbmRvbSgpKS5zbGljZSgyKTtc
blxuZnVuY3Rpb24gZ2V0TGlzdGVuaW5nRm9yRG9jdW1lbnQobW91bnRBdCkge1xuICAvLyBJbiBJ
RTgsIGBtb3VudEF0YCBpcyBhIGhvc3Qgb2JqZWN0IGFuZCBkb2Vzbid0IGhhdmUgYGhhc093blBy
b3BlcnR5YFxuICAvLyBkaXJlY3RseS5cbiAgaWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blBy
b3BlcnR5LmNhbGwobW91bnRBdCwgdG9wTGlzdGVuZXJzSURLZXkpKSB7XG4gICAgbW91bnRBdFt0
b3BMaXN0ZW5lcnNJREtleV0gPSByZWFjdFRvcExpc3RlbmVyc0NvdW50ZXIrKztcbiAgICBhbHJl
YWR5TGlzdGVuaW5nVG9bbW91bnRBdFt0b3BMaXN0ZW5lcnNJREtleV1dID0ge307XG4gIH1cbiAg
cmV0dXJuIGFscmVhZHlMaXN0ZW5pbmdUb1ttb3VudEF0W3RvcExpc3RlbmVyc0lES2V5XV07XG59
XG5cbi8qKlxuICogYFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlcmAgaXMgdXNlZCB0byBhdHRhY2gg
dG9wLWxldmVsIGV2ZW50IGxpc3RlbmVycy4gRm9yXG4gKiBleGFtcGxlOlxuICpcbiAqICAgRXZl
bnRQbHVnaW5IdWIucHV0TGlzdGVuZXIoJ215SUQnLCAnb25DbGljaycsIG15RnVuY3Rpb24pO1xu
ICpcbiAqIFRoaXMgd291bGQgYWxsb2NhdGUgYSBcInJlZ2lzdHJhdGlvblwiIG9mIGAoJ29uQ2xp
Y2snLCBteUZ1bmN0aW9uKWAgb24gJ215SUQnLlxuICpcbiAqIEBpbnRlcm5hbFxuICovXG52YXIg
UmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyID0gX2Fzc2lnbih7fSwgUmVhY3RFdmVudEVtaXR0ZXJN
aXhpbiwge1xuICAvKipcbiAgICogSW5qZWN0YWJsZSBldmVudCBiYWNrZW5kXG4gICAqL1xuICBS
ZWFjdEV2ZW50TGlzdGVuZXI6IG51bGwsXG5cbiAgaW5qZWN0aW9uOiB7XG4gICAgLyoqXG4gICAg
ICogQHBhcmFtIHtvYmplY3R9IFJlYWN0RXZlbnRMaXN0ZW5lclxuICAgICAqL1xuICAgIGluamVj
dFJlYWN0RXZlbnRMaXN0ZW5lcjogZnVuY3Rpb24gKFJlYWN0RXZlbnRMaXN0ZW5lcikge1xuICAg
ICAgUmVhY3RFdmVudExpc3RlbmVyLnNldEhhbmRsZVRvcExldmVsKFJlYWN0QnJvd3NlckV2ZW50
RW1pdHRlci5oYW5kbGVUb3BMZXZlbCk7XG4gICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIu
UmVhY3RFdmVudExpc3RlbmVyID0gUmVhY3RFdmVudExpc3RlbmVyO1xuICAgIH1cbiAgfSxcblxu
ICAvKipcbiAgICogU2V0cyB3aGV0aGVyIG9yIG5vdCBhbnkgY3JlYXRlZCBjYWxsYmFja3Mgc2hv
dWxkIGJlIGVuYWJsZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gZW5hYmxlZCBUcnVl
IGlmIGNhbGxiYWNrcyBzaG91bGQgYmUgZW5hYmxlZC5cbiAgICovXG4gIHNldEVuYWJsZWQ6IGZ1
bmN0aW9uIChlbmFibGVkKSB7XG4gICAgaWYgKFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFj
dEV2ZW50TGlzdGVuZXIpIHtcbiAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2
ZW50TGlzdGVuZXIuc2V0RW5hYmxlZChlbmFibGVkKTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4g
ICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgY2FsbGJhY2tzIGFyZSBlbmFibGVkLlxuICAg
Ki9cbiAgaXNFbmFibGVkOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICEhKFJlYWN0QnJvd3Nl
ckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIgJiYgUmVhY3RCcm93c2VyRXZlbnRFbWl0
dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci5pc0VuYWJsZWQoKSk7XG4gIH0sXG5cbiAgLyoqXG4gICAq
IFdlIGxpc3RlbiBmb3IgYnViYmxlZCB0b3VjaCBldmVudHMgb24gdGhlIGRvY3VtZW50IG9iamVj
dC5cbiAgICpcbiAgICogRmlyZWZveCB2OC4wMSAoYW5kIHBvc3NpYmx5IG90aGVycykgZXhoaWJp
dGVkIHN0cmFuZ2UgYmVoYXZpb3Igd2hlblxuICAgKiBtb3VudGluZyBgb25tb3VzZW1vdmVgIGV2
ZW50cyBhdCBzb21lIG5vZGUgdGhhdCB3YXMgbm90IHRoZSBkb2N1bWVudFxuICAgKiBlbGVtZW50
LiBUaGUgc3ltcHRvbXMgd2VyZSB0aGF0IGlmIHlvdXIgbW91c2UgaXMgbm90IG1vdmluZyBvdmVy
IHNvbWV0aGluZ1xuICAgKiBjb250YWluZWQgd2l0aGluIHRoYXQgbW91bnQgcG9pbnQgKGZvciBl
eGFtcGxlIG9uIHRoZSBiYWNrZ3JvdW5kKSB0aGVcbiAgICogdG9wLWxldmVsIGxpc3RlbmVycyBm
b3IgYG9ubW91c2Vtb3ZlYCB3b24ndCBiZSBjYWxsZWQuIEhvd2V2ZXIsIGlmIHlvdVxuICAgKiBy
ZWdpc3RlciB0aGUgYG1vdXNlbW92ZWAgb24gdGhlIGRvY3VtZW50IG9iamVjdCwgdGhlbiBpdCB3
aWxsIG9mIGNvdXJzZVxuICAgKiBjYXRjaCBhbGwgYG1vdXNlbW92ZWBzLiBUaGlzIGFsb25nIHdp
dGggaU9TIHF1aXJrcywganVzdGlmaWVzIHJlc3RyaWN0aW5nXG4gICAqIHRvcC1sZXZlbCBsaXN0
ZW5lcnMgdG8gdGhlIGRvY3VtZW50IG9iamVjdCBvbmx5LCBhdCBsZWFzdCBmb3IgdGhlc2VcbiAg
ICogbW92ZW1lbnQgdHlwZXMgb2YgZXZlbnRzIGFuZCBwb3NzaWJseSBhbGwgZXZlbnRzLlxuICAg
KlxuICAgKiBAc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8yMDEw
LzA5L2NsaWNrX2V2ZW50X2RlbC5odG1sXG4gICAqXG4gICAqIEFsc28sIGBrZXl1cGAvYGtleXBy
ZXNzYC9ga2V5ZG93bmAgZG8gbm90IGJ1YmJsZSB0byB0aGUgd2luZG93IG9uIElFLCBidXRcbiAg
ICogdGhleSBidWJibGUgdG8gZG9jdW1lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBy
ZWdpc3RyYXRpb25OYW1lIE5hbWUgb2YgbGlzdGVuZXIgKGUuZy4gYG9uQ2xpY2tgKS5cbiAgICog
QHBhcmFtIHtvYmplY3R9IGNvbnRlbnREb2N1bWVudEhhbmRsZSBEb2N1bWVudCB3aGljaCBvd25z
IHRoZSBjb250YWluZXJcbiAgICovXG4gIGxpc3RlblRvOiBmdW5jdGlvbiAocmVnaXN0cmF0aW9u
TmFtZSwgY29udGVudERvY3VtZW50SGFuZGxlKSB7XG4gICAgdmFyIG1vdW50QXQgPSBjb250ZW50
RG9jdW1lbnRIYW5kbGU7XG4gICAgdmFyIGlzTGlzdGVuaW5nID0gZ2V0TGlzdGVuaW5nRm9yRG9j
dW1lbnQobW91bnRBdCk7XG4gICAgdmFyIGRlcGVuZGVuY2llcyA9IEV2ZW50UGx1Z2luUmVnaXN0
cnkucmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llc1tyZWdpc3RyYXRpb25OYW1lXTtcblxuICAg
IGZvciAodmFyIGkgPSAwOyBpIDwgZGVwZW5kZW5jaWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2
YXIgZGVwZW5kZW5jeSA9IGRlcGVuZGVuY2llc1tpXTtcbiAgICAgIGlmICghKGlzTGlzdGVuaW5n
Lmhhc093blByb3BlcnR5KGRlcGVuZGVuY3kpICYmIGlzTGlzdGVuaW5nW2RlcGVuZGVuY3ldKSkg
e1xuICAgICAgICBpZiAoZGVwZW5kZW5jeSA9PT0gJ3RvcFdoZWVsJykge1xuICAgICAgICAgIGlm
IChpc0V2ZW50U3VwcG9ydGVkKCd3aGVlbCcpKSB7XG4gICAgICAgICAgICBSZWFjdEJyb3dzZXJF
dmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcFdoZWVs
JywgJ3doZWVsJywgbW91bnRBdCk7XG4gICAgICAgICAgfSBlbHNlIGlmIChpc0V2ZW50U3VwcG9y
dGVkKCdtb3VzZXdoZWVsJykpIHtcbiAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRl
ci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wV2hlZWwnLCAnbW91c2V3
aGVlbCcsIG1vdW50QXQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAvLyBGaXJl
Zm94IG5lZWRzIHRvIGNhcHR1cmUgYSBkaWZmZXJlbnQgbW91c2Ugc2Nyb2xsIGV2ZW50LlxuICAg
ICAgICAgICAgLy8gQHNlZSBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL2RvbS9ldmVudHMvdGVz
dHMvc2Nyb2xsLmh0bWxcbiAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFj
dEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wV2hlZWwnLCAnRE9NTW91c2VTY3Jv
bGwnLCBtb3VudEF0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZGVwZW5kZW5j
eSA9PT0gJ3RvcFNjcm9sbCcpIHtcbiAgICAgICAgICBpZiAoaXNFdmVudFN1cHBvcnRlZCgnc2Ny
b2xsJywgdHJ1ZSkpIHtcbiAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFj
dEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQoJ3RvcFNjcm9sbCcsICdzY3JvbGwnLCBt
b3VudEF0KTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZl
bnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCd0b3BTY3JvbGwn
LCAnc2Nyb2xsJywgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci5X
SU5ET1dfSEFORExFKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoZGVwZW5kZW5j
eSA9PT0gJ3RvcEZvY3VzJyB8fCBkZXBlbmRlbmN5ID09PSAndG9wQmx1cicpIHtcbiAgICAgICAg
ICBpZiAoaXNFdmVudFN1cHBvcnRlZCgnZm9jdXMnLCB0cnVlKSkge1xuICAgICAgICAgICAgUmVh
Y3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVu
dCgndG9wRm9jdXMnLCAnZm9jdXMnLCBtb3VudEF0KTtcbiAgICAgICAgICAgIFJlYWN0QnJvd3Nl
ckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQoJ3RvcEJs
dXInLCAnYmx1cicsIG1vdW50QXQpO1xuICAgICAgICAgIH0gZWxzZSBpZiAoaXNFdmVudFN1cHBv
cnRlZCgnZm9jdXNpbicpKSB7XG4gICAgICAgICAgICAvLyBJRSBoYXMgYGZvY3VzaW5gIGFuZCBg
Zm9jdXNvdXRgIGV2ZW50cyB3aGljaCBidWJibGUuXG4gICAgICAgICAgICAvLyBAc2VlIGh0dHA6
Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8yMDA4LzA0L2RlbGVnYXRpbmdfdGhl
Lmh0bWxcbiAgICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlz
dGVuZXIudHJhcEJ1YmJsZWRFdmVudCgndG9wRm9jdXMnLCAnZm9jdXNpbicsIG1vdW50QXQpO1xu
ICAgICAgICAgICAgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLlJlYWN0RXZlbnRMaXN0ZW5lci50
cmFwQnViYmxlZEV2ZW50KCd0b3BCbHVyJywgJ2ZvY3Vzb3V0JywgbW91bnRBdCk7XG4gICAgICAg
ICAgfVxuXG4gICAgICAgICAgLy8gdG8gbWFrZSBzdXJlIGJsdXIgYW5kIGZvY3VzIGV2ZW50IGxp
c3RlbmVycyBhcmUgb25seSBhdHRhY2hlZCBvbmNlXG4gICAgICAgICAgaXNMaXN0ZW5pbmcudG9w
Qmx1ciA9IHRydWU7XG4gICAgICAgICAgaXNMaXN0ZW5pbmcudG9wRm9jdXMgPSB0cnVlO1xuICAg
ICAgICB9IGVsc2UgaWYgKHRvcEV2ZW50TWFwcGluZy5oYXNPd25Qcm9wZXJ0eShkZXBlbmRlbmN5
KSkge1xuICAgICAgICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFjdEV2ZW50TGlzdGVu
ZXIudHJhcEJ1YmJsZWRFdmVudChkZXBlbmRlbmN5LCB0b3BFdmVudE1hcHBpbmdbZGVwZW5kZW5j
eV0sIG1vdW50QXQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaXNMaXN0ZW5pbmdbZGVwZW5kZW5j
eV0gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICB0cmFwQnViYmxlZEV2ZW50OiBm
dW5jdGlvbiAodG9wTGV2ZWxUeXBlLCBoYW5kbGVyQmFzZU5hbWUsIGhhbmRsZSkge1xuICAgIHJl
dHVybiBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJi
bGVkRXZlbnQodG9wTGV2ZWxUeXBlLCBoYW5kbGVyQmFzZU5hbWUsIGhhbmRsZSk7XG4gIH0sXG5c
biAgdHJhcENhcHR1cmVkRXZlbnQ6IGZ1bmN0aW9uICh0b3BMZXZlbFR5cGUsIGhhbmRsZXJCYXNl
TmFtZSwgaGFuZGxlKSB7XG4gICAgcmV0dXJuIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5SZWFj
dEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQodG9wTGV2ZWxUeXBlLCBoYW5kbGVyQmFz
ZU5hbWUsIGhhbmRsZSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFByb3RlY3QgYWdhaW5zdCBkb2N1
bWVudC5jcmVhdGVFdmVudCgpIHJldHVybmluZyBudWxsXG4gICAqIFNvbWUgcG9wdXAgYmxvY2tl
ciBleHRlbnNpb25zIGFwcGVhciB0byBkbyB0aGlzOlxuICAgKiBodHRwczovL2dpdGh1Yi5jb20v
ZmFjZWJvb2svcmVhY3QvaXNzdWVzLzY4ODdcbiAgICovXG4gIHN1cHBvcnRzRXZlbnRQYWdlWFk6
IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAoIWRvY3VtZW50LmNyZWF0ZUV2ZW50KSB7XG4gICAgICBy
ZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHZhciBldiA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdN
b3VzZUV2ZW50Jyk7XG4gICAgcmV0dXJuIGV2ICE9IG51bGwgJiYgJ3BhZ2VYJyBpbiBldjtcbiAg
fSxcblxuICAvKipcbiAgICogTGlzdGVucyB0byB3aW5kb3cgc2Nyb2xsIGFuZCByZXNpemUgZXZl
bnRzLiBXZSBjYWNoZSBzY3JvbGwgdmFsdWVzIHNvIHRoYXRcbiAgICogYXBwbGljYXRpb24gY29k
ZSBjYW4gYWNjZXNzIHRoZW0gd2l0aG91dCB0cmlnZ2VyaW5nIHJlZmxvd3MuXG4gICAqXG4gICAq
IFZpZXdwb3J0TWV0cmljcyBpcyBvbmx5IHVzZWQgYnkgU3ludGhldGljTW91c2UvVG91Y2hFdmVu
dCBhbmQgb25seSB3aGVuXG4gICAqIHBhZ2VYL3BhZ2VZIGlzbid0IHN1cHBvcnRlZCAobGVnYWN5
IGJyb3dzZXJzKS5cbiAgICpcbiAgICogTk9URTogU2Nyb2xsIGV2ZW50cyBkbyBub3QgYnViYmxl
LlxuICAgKlxuICAgKiBAc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvZG9tL2V2ZW50cy9z
Y3JvbGwuaHRtbFxuICAgKi9cbiAgZW5zdXJlU2Nyb2xsVmFsdWVNb25pdG9yaW5nOiBmdW5jdGlv
biAoKSB7XG4gICAgaWYgKGhhc0V2ZW50UGFnZVhZID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGhh
c0V2ZW50UGFnZVhZID0gUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnN1cHBvcnRzRXZlbnRQYWdl
WFkoKTtcbiAgICB9XG4gICAgaWYgKCFoYXNFdmVudFBhZ2VYWSAmJiAhaXNNb25pdG9yaW5nU2Ny
b2xsVmFsdWUpIHtcbiAgICAgIHZhciByZWZyZXNoID0gVmlld3BvcnRNZXRyaWNzLnJlZnJlc2hT
Y3JvbGxWYWx1ZXM7XG4gICAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuUmVhY3RFdmVudExp
c3RlbmVyLm1vbml0b3JTY3JvbGxWYWx1ZShyZWZyZXNoKTtcbiAgICAgIGlzTW9uaXRvcmluZ1Nj
cm9sbFZhbHVlID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJl
YWN0QnJvd3NlckV2ZW50RW1pdHRlcjtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQ
QUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0QnJvd3NlckV2ZW50RW1pdHRl
ci5qc1xuICoqIG1vZHVsZSBpZCA9IDI1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIv
KipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgU3lu
dGhldGljVUlFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljVUlFdmVudCcpO1xudmFyIFZpZXdw
b3J0TWV0cmljcyA9IHJlcXVpcmUoJy4vVmlld3BvcnRNZXRyaWNzJyk7XG5cbnZhciBnZXRFdmVu
dE1vZGlmaWVyU3RhdGUgPSByZXF1aXJlKCcuL2dldEV2ZW50TW9kaWZpZXJTdGF0ZScpO1xuXG4v
KipcbiAqIEBpbnRlcmZhY2UgTW91c2VFdmVudFxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9U
Ui9ET00tTGV2ZWwtMy1FdmVudHMvXG4gKi9cbnZhciBNb3VzZUV2ZW50SW50ZXJmYWNlID0ge1xu
ICBzY3JlZW5YOiBudWxsLFxuICBzY3JlZW5ZOiBudWxsLFxuICBjbGllbnRYOiBudWxsLFxuICBj
bGllbnRZOiBudWxsLFxuICBjdHJsS2V5OiBudWxsLFxuICBzaGlmdEtleTogbnVsbCxcbiAgYWx0
S2V5OiBudWxsLFxuICBtZXRhS2V5OiBudWxsLFxuICBnZXRNb2RpZmllclN0YXRlOiBnZXRFdmVu
dE1vZGlmaWVyU3RhdGUsXG4gIGJ1dHRvbjogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgLy8gV2Vi
a2l0LCBGaXJlZm94LCBJRTkrXG4gICAgLy8gd2hpY2g6ICAxIDIgM1xuICAgIC8vIGJ1dHRvbjog
MCAxIDIgKHN0YW5kYXJkKVxuICAgIHZhciBidXR0b24gPSBldmVudC5idXR0b247XG4gICAgaWYg
KCd3aGljaCcgaW4gZXZlbnQpIHtcbiAgICAgIHJldHVybiBidXR0b247XG4gICAgfVxuICAgIC8v
IElFPDlcbiAgICAvLyB3aGljaDogIHVuZGVmaW5lZFxuICAgIC8vIGJ1dHRvbjogMCAwIDBcbiAg
ICAvLyBidXR0b246IDEgNCAyIChvbm1vdXNldXApXG4gICAgcmV0dXJuIGJ1dHRvbiA9PT0gMiA/
IDIgOiBidXR0b24gPT09IDQgPyAxIDogMDtcbiAgfSxcbiAgYnV0dG9uczogbnVsbCxcbiAgcmVs
YXRlZFRhcmdldDogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgcmV0dXJuIGV2ZW50LnJlbGF0ZWRU
YXJnZXQgfHwgKGV2ZW50LmZyb21FbGVtZW50ID09PSBldmVudC5zcmNFbGVtZW50ID8gZXZlbnQu
dG9FbGVtZW50IDogZXZlbnQuZnJvbUVsZW1lbnQpO1xuICB9LFxuICAvLyBcIlByb3ByaWV0YXJ5
XCIgSW50ZXJmYWNlLlxuICBwYWdlWDogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgcmV0dXJuICdw
YWdlWCcgaW4gZXZlbnQgPyBldmVudC5wYWdlWCA6IGV2ZW50LmNsaWVudFggKyBWaWV3cG9ydE1l
dHJpY3MuY3VycmVudFNjcm9sbExlZnQ7XG4gIH0sXG4gIHBhZ2VZOiBmdW5jdGlvbiAoZXZlbnQp
IHtcbiAgICByZXR1cm4gJ3BhZ2VZJyBpbiBldmVudCA/IGV2ZW50LnBhZ2VZIDogZXZlbnQuY2xp
ZW50WSArIFZpZXdwb3J0TWV0cmljcy5jdXJyZW50U2Nyb2xsVG9wO1xuICB9XG59O1xuXG4vKipc
biAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8g
ZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBN
YXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBu
YXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEBleHRlbmRzIHtTeW50aGV0aWNV
SUV2ZW50fVxuICovXG5mdW5jdGlvbiBTeW50aGV0aWNNb3VzZUV2ZW50KGRpc3BhdGNoQ29uZmln
LCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIHJl
dHVybiBTeW50aGV0aWNVSUV2ZW50LmNhbGwodGhpcywgZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNo
TWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xufVxuXG5TeW50aGV0aWNV
SUV2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNNb3VzZUV2ZW50LCBNb3VzZUV2ZW50SW50ZXJm
YWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0aWNNb3VzZUV2ZW50O1xuXG5cbi8qKioq
KioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIv
U3ludGhldGljTW91c2VFdmVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDI2XG4gKiogbW9kdWxlIGNo
dW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4n
dXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9k
SW52YXJpYW50Jyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlh
bnQnKTtcblxudmFyIE9CU0VSVkVEX0VSUk9SID0ge307XG5cbi8qKlxuICogYFRyYW5zYWN0aW9u
YCBjcmVhdGVzIGEgYmxhY2sgYm94IHRoYXQgaXMgYWJsZSB0byB3cmFwIGFueSBtZXRob2Qgc3Vj
aCB0aGF0XG4gKiBjZXJ0YWluIGludmFyaWFudHMgYXJlIG1haW50YWluZWQgYmVmb3JlIGFuZCBh
ZnRlciB0aGUgbWV0aG9kIGlzIGludm9rZWRcbiAqIChFdmVuIGlmIGFuIGV4Y2VwdGlvbiBpcyB0
aHJvd24gd2hpbGUgaW52b2tpbmcgdGhlIHdyYXBwZWQgbWV0aG9kKS4gV2hvZXZlclxuICogaW5z
dGFudGlhdGVzIGEgdHJhbnNhY3Rpb24gY2FuIHByb3ZpZGUgZW5mb3JjZXJzIG9mIHRoZSBpbnZh
cmlhbnRzIGF0XG4gKiBjcmVhdGlvbiB0aW1lLiBUaGUgYFRyYW5zYWN0aW9uYCBjbGFzcyBpdHNl
bGYgd2lsbCBzdXBwbHkgb25lIGFkZGl0aW9uYWxcbiAqIGF1dG9tYXRpYyBpbnZhcmlhbnQgZm9y
IHlvdSAtIHRoZSBpbnZhcmlhbnQgdGhhdCBhbnkgdHJhbnNhY3Rpb24gaW5zdGFuY2VcbiAqIHNo
b3VsZCBub3QgYmUgcnVuIHdoaWxlIGl0IGlzIGFscmVhZHkgYmVpbmcgcnVuLiBZb3Ugd291bGQg
dHlwaWNhbGx5IGNyZWF0ZSBhXG4gKiBzaW5nbGUgaW5zdGFuY2Ugb2YgYSBgVHJhbnNhY3Rpb25g
IGZvciByZXVzZSBtdWx0aXBsZSB0aW1lcywgdGhhdCBwb3RlbnRpYWxseVxuICogaXMgdXNlZCB0
byB3cmFwIHNldmVyYWwgZGlmZmVyZW50IG1ldGhvZHMuIFdyYXBwZXJzIGFyZSBleHRyZW1lbHkg
c2ltcGxlIC1cbiAqIHRoZXkgb25seSByZXF1aXJlIGltcGxlbWVudGluZyB0d28gbWV0aG9kcy5c
biAqXG4gKiA8cHJlPlxuICogICAgICAgICAgICAgICAgICAgICAgIHdyYXBwZXJzIChpbmplY3Rl
ZCBhdCBjcmVhdGlvbiB0aW1lKVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICsgICAgICAgICtcbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgICAgICB8XG4gKiAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tfC0tLS0t
LS0tfC0tLS0tLS0tLS0tLS0tK1xuICogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAg
ICAgIHYgICAgICAgIHwgICAgICAgICAgICAgIHxcbiAqICAgICAgICAgICAgICAgICAgICB8ICAg
ICAgKy0tLS0tLS0tLS0tLS0tLSsgICB8ICAgICAgICAgICAgICB8XG4gKiAgICAgICAgICAgICAg
ICAgICAgfCAgICstLXwgICAgd3JhcHBlcjEgICB8LS0tfC0tLS0rICAgICAgICAgfFxuICogICAg
ICAgICAgICAgICAgICAgIHwgICB8ICArLS0tLS0tLS0tLS0tLS0tKyAgIHYgICAgfCAgICAgICAg
IHxcbiAqICAgICAgICAgICAgICAgICAgICB8ICAgfCAgICAgICAgICArLS0tLS0tLS0tLS0tLSsg
IHwgICAgICAgICB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCAgIHwgICAgICstLS0tfCAgIHdy
YXBwZXIyICB8LS0tLS0tLS0rICAgfFxuICogICAgICAgICAgICAgICAgICAgIHwgICB8ICAgICB8
ICAgICstLS0tLS0tLS0tLS0tKyAgfCAgICAgfCAgIHxcbiAqICAgICAgICAgICAgICAgICAgICB8
ICAgfCAgICAgfCAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwgICB8XG4gKiAgICAgICAgICAg
ICAgICAgICAgfCAgIHYgICAgIHYgICAgICAgICAgICAgICAgICAgICB2ICAgICB2ICAgfCB3cmFw
cGVyXG4gKiAgICAgICAgICAgICAgICAgICAgfCArLS0tKyArLS0tKyAgICstLS0tLS0tLS0rICAg
Ky0tLSsgKy0tLSsgfCBpbnZhcmlhbnRzXG4gKiBwZXJmb3JtKGFueU1ldGhvZCkgfCB8ICAgfCB8
ICAgfCAgIHwgICAgICAgICB8ICAgfCAgIHwgfCAgIHwgfCBtYWludGFpbmVkXG4gKiArLS0tLS0t
LS0tLS0tLS0tLS0+fC18LS0tfC18LS0tfC0tPnxhbnlNZXRob2R8LS0tfC0tLXwtfC0tLXwtfC0t
LS0tLS0tPlxuICogICAgICAgICAgICAgICAgICAgIHwgfCAgIHwgfCAgIHwgICB8ICAgICAgICAg
fCAgIHwgICB8IHwgICB8IHxcbiAqICAgICAgICAgICAgICAgICAgICB8IHwgICB8IHwgICB8ICAg
fCAgICAgICAgIHwgICB8ICAgfCB8ICAgfCB8XG4gKiAgICAgICAgICAgICAgICAgICAgfCB8ICAg
fCB8ICAgfCAgIHwgICAgICAgICB8ICAgfCAgIHwgfCAgIHwgfFxuICogICAgICAgICAgICAgICAg
ICAgIHwgKy0tLSsgKy0tLSsgICArLS0tLS0tLS0tKyAgICstLS0rICstLS0rIHxcbiAqICAgICAg
ICAgICAgICAgICAgICB8ICBpbml0aWFsaXplICAgICAgICAgICAgICAgICAgICBjbG9zZSAgICB8
XG4gKiAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tK1xuICogPC9wcmU+XG4gKlxuICogVXNlIGNhc2VzOlxuICogLSBQcmVzZXJ2aW5n
IHRoZSBpbnB1dCBzZWxlY3Rpb24gcmFuZ2VzIGJlZm9yZS9hZnRlciByZWNvbmNpbGlhdGlvbi5c
biAqICAgUmVzdG9yaW5nIHNlbGVjdGlvbiBldmVuIGluIHRoZSBldmVudCBvZiBhbiB1bmV4cGVj
dGVkIGVycm9yLlxuICogLSBEZWFjdGl2YXRpbmcgZXZlbnRzIHdoaWxlIHJlYXJyYW5naW5nIHRo
ZSBET00sIHByZXZlbnRpbmcgYmx1cnMvZm9jdXNlcyxcbiAqICAgd2hpbGUgZ3VhcmFudGVlaW5n
IHRoYXQgYWZ0ZXJ3YXJkcywgdGhlIGV2ZW50IHN5c3RlbSBpcyByZWFjdGl2YXRlZC5cbiAqIC0g
Rmx1c2hpbmcgYSBxdWV1ZSBvZiBjb2xsZWN0ZWQgRE9NIG11dGF0aW9ucyB0byB0aGUgbWFpbiBV
SSB0aHJlYWQgYWZ0ZXIgYVxuICogICByZWNvbmNpbGlhdGlvbiB0YWtlcyBwbGFjZSBpbiBhIHdv
cmtlciB0aHJlYWQuXG4gKiAtIEludm9raW5nIGFueSBjb2xsZWN0ZWQgYGNvbXBvbmVudERpZFVw
ZGF0ZWAgY2FsbGJhY2tzIGFmdGVyIHJlbmRlcmluZyBuZXdcbiAqICAgY29udGVudC5cbiAqIC0g
KEZ1dHVyZSB1c2UgY2FzZSk6IFdyYXBwaW5nIHBhcnRpY3VsYXIgZmx1c2hlcyBvZiB0aGUgYFJl
YWN0V29ya2VyYCBxdWV1ZVxuICogICB0byBwcmVzZXJ2ZSB0aGUgYHNjcm9sbFRvcGAgKGFuIGF1
dG9tYXRpYyBzY3JvbGwgYXdhcmUgRE9NKS5cbiAqIC0gKEZ1dHVyZSB1c2UgY2FzZSk6IExheW91
dCBjYWxjdWxhdGlvbnMgYmVmb3JlIGFuZCBhZnRlciBET00gdXBkYXRlcy5cbiAqXG4gKiBUcmFu
c2FjdGlvbmFsIHBsdWdpbiBBUEk6XG4gKiAtIEEgbW9kdWxlIHRoYXQgaGFzIGFuIGBpbml0aWFs
aXplYCBtZXRob2QgdGhhdCByZXR1cm5zIGFueSBwcmVjb21wdXRhdGlvbi5cbiAqIC0gYW5kIGEg
YGNsb3NlYCBtZXRob2QgdGhhdCBhY2NlcHRzIHRoZSBwcmVjb21wdXRhdGlvbi4gYGNsb3NlYCBp
cyBpbnZva2VkXG4gKiAgIHdoZW4gdGhlIHdyYXBwZWQgcHJvY2VzcyBpcyBjb21wbGV0ZWQsIG9y
IGhhcyBmYWlsZWQuXG4gKlxuICogQHBhcmFtIHtBcnJheTxUcmFuc2FjdGlvbmFsV3JhcHBlcj59
IHRyYW5zYWN0aW9uV3JhcHBlciBXcmFwcGVyIG1vZHVsZXNcbiAqIHRoYXQgaW1wbGVtZW50IGBp
bml0aWFsaXplYCBhbmQgYGNsb3NlYC5cbiAqIEByZXR1cm4ge1RyYW5zYWN0aW9ufSBTaW5nbGUg
dHJhbnNhY3Rpb24gZm9yIHJldXNlIGluIHRocmVhZC5cbiAqXG4gKiBAY2xhc3MgVHJhbnNhY3Rp
b25cbiAqL1xudmFyIFRyYW5zYWN0aW9uSW1wbCA9IHtcbiAgLyoqXG4gICAqIFNldHMgdXAgdGhp
cyBpbnN0YW5jZSBzbyB0aGF0IGl0IGlzIHByZXBhcmVkIGZvciBjb2xsZWN0aW5nIG1ldHJpY3Mu
IERvZXNcbiAgICogc28gc3VjaCB0aGF0IHRoaXMgc2V0dXAgbWV0aG9kIG1heSBiZSB1c2VkIG9u
IGFuIGluc3RhbmNlIHRoYXQgaXMgYWxyZWFkeVxuICAgKiBpbml0aWFsaXplZCwgaW4gYSB3YXkg
dGhhdCBkb2VzIG5vdCBjb25zdW1lIGFkZGl0aW9uYWwgbWVtb3J5IHVwb24gcmV1c2UuXG4gICAq
IFRoYXQgY2FuIGJlIHVzZWZ1bCBpZiB5b3UgZGVjaWRlIHRvIG1ha2UgeW91ciBzdWJjbGFzcyBv
ZiB0aGlzIG1peGluIGFcbiAgICogXCJQb29sZWRDbGFzc1wiLlxuICAgKi9cbiAgcmVpbml0aWFs
aXplVHJhbnNhY3Rpb246IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnRyYW5zYWN0aW9uV3JhcHBl
cnMgPSB0aGlzLmdldFRyYW5zYWN0aW9uV3JhcHBlcnMoKTtcbiAgICBpZiAodGhpcy53cmFwcGVy
SW5pdERhdGEpIHtcbiAgICAgIHRoaXMud3JhcHBlckluaXREYXRhLmxlbmd0aCA9IDA7XG4gICAg
fSBlbHNlIHtcbiAgICAgIHRoaXMud3JhcHBlckluaXREYXRhID0gW107XG4gICAgfVxuICAgIHRo
aXMuX2lzSW5UcmFuc2FjdGlvbiA9IGZhbHNlO1xuICB9LFxuXG4gIF9pc0luVHJhbnNhY3Rpb246
IGZhbHNlLFxuXG4gIC8qKlxuICAgKiBAYWJzdHJhY3RcbiAgICogQHJldHVybiB7QXJyYXk8VHJh
bnNhY3Rpb25XcmFwcGVyPn0gQXJyYXkgb2YgdHJhbnNhY3Rpb24gd3JhcHBlcnMuXG4gICAqL1xu
ICBnZXRUcmFuc2FjdGlvbldyYXBwZXJzOiBudWxsLFxuXG4gIGlzSW5UcmFuc2FjdGlvbjogZnVu
Y3Rpb24gKCkge1xuICAgIHJldHVybiAhIXRoaXMuX2lzSW5UcmFuc2FjdGlvbjtcbiAgfSxcblxu
ICAvKiBlc2xpbnQtZGlzYWJsZSBzcGFjZS1iZWZvcmUtZnVuY3Rpb24tcGFyZW4gKi9cblxuICAv
KipcbiAgICogRXhlY3V0ZXMgdGhlIGZ1bmN0aW9uIHdpdGhpbiBhIHNhZmV0eSB3aW5kb3cuIFVz
ZSB0aGlzIGZvciB0aGUgdG9wIGxldmVsXG4gICAqIG1ldGhvZHMgdGhhdCByZXN1bHQgaW4gbGFy
Z2UgYW1vdW50cyBvZiBjb21wdXRhdGlvbi9tdXRhdGlvbnMgdGhhdCB3b3VsZFxuICAgKiBuZWVk
IHRvIGJlIHNhZmV0eSBjaGVja2VkLiBUaGUgb3B0aW9uYWwgYXJndW1lbnRzIGhlbHBzIHByZXZl
bnQgdGhlIG5lZWRcbiAgICogdG8gYmluZCBpbiBtYW55IGNhc2VzLlxuICAgKlxuICAgKiBAcGFy
YW0ge2Z1bmN0aW9ufSBtZXRob2QgTWVtYmVyIG9mIHNjb3BlIHRvIGNhbGwuXG4gICAqIEBwYXJh
bSB7T2JqZWN0fSBzY29wZSBTY29wZSB0byBpbnZva2UgZnJvbS5cbiAgICogQHBhcmFtIHtPYmpl
Y3Q/PX0gYSBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBtZXRob2QuXG4gICAqIEBwYXJhbSB7T2Jq
ZWN0Pz19IGIgQXJndW1lbnQgdG8gcGFzcyB0byB0aGUgbWV0aG9kLlxuICAgKiBAcGFyYW0ge09i
amVjdD89fSBjIEFyZ3VtZW50IHRvIHBhc3MgdG8gdGhlIG1ldGhvZC5cbiAgICogQHBhcmFtIHtP
YmplY3Q/PX0gZCBBcmd1bWVudCB0byBwYXNzIHRvIHRoZSBtZXRob2QuXG4gICAqIEBwYXJhbSB7
T2JqZWN0Pz19IGUgQXJndW1lbnQgdG8gcGFzcyB0byB0aGUgbWV0aG9kLlxuICAgKiBAcGFyYW0g
e09iamVjdD89fSBmIEFyZ3VtZW50IHRvIHBhc3MgdG8gdGhlIG1ldGhvZC5cbiAgICpcbiAgICog
QHJldHVybiB7Kn0gUmV0dXJuIHZhbHVlIGZyb20gYG1ldGhvZGAuXG4gICAqL1xuICBwZXJmb3Jt
OiBmdW5jdGlvbiAobWV0aG9kLCBzY29wZSwgYSwgYiwgYywgZCwgZSwgZikge1xuICAgIC8qIGVz
bGludC1lbmFibGUgc3BhY2UtYmVmb3JlLWZ1bmN0aW9uLXBhcmVuICovXG4gICAgISF0aGlzLmlz
SW5UcmFuc2FjdGlvbigpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IGludmFyaWFudChmYWxzZSwgJ1RyYW5zYWN0aW9uLnBlcmZvcm0oLi4uKTogQ2Fubm90IGluaXRp
YWxpemUgYSB0cmFuc2FjdGlvbiB3aGVuIHRoZXJlIGlzIGFscmVhZHkgYW4gb3V0c3RhbmRpbmcg
dHJhbnNhY3Rpb24uJykgOiBfcHJvZEludmFyaWFudCgnMjcnKSA6IHZvaWQgMDtcbiAgICB2YXIg
ZXJyb3JUaHJvd247XG4gICAgdmFyIHJldDtcbiAgICB0cnkge1xuICAgICAgdGhpcy5faXNJblRy
YW5zYWN0aW9uID0gdHJ1ZTtcbiAgICAgIC8vIENhdGNoaW5nIGVycm9ycyBtYWtlcyBkZWJ1Z2dp
bmcgbW9yZSBkaWZmaWN1bHQsIHNvIHdlIHN0YXJ0IHdpdGhcbiAgICAgIC8vIGVycm9yVGhyb3du
IHNldCB0byB0cnVlIGJlZm9yZSBzZXR0aW5nIGl0IHRvIGZhbHNlIGFmdGVyIGNhbGxpbmdcbiAg
ICAgIC8vIGNsb3NlIC0tIGlmIGl0J3Mgc3RpbGwgc2V0IHRvIHRydWUgaW4gdGhlIGZpbmFsbHkg
YmxvY2ssIGl0IG1lYW5zXG4gICAgICAvLyBvbmUgb2YgdGhlc2UgY2FsbHMgdGhyZXcuXG4gICAg
ICBlcnJvclRocm93biA9IHRydWU7XG4gICAgICB0aGlzLmluaXRpYWxpemVBbGwoMCk7XG4gICAg
ICByZXQgPSBtZXRob2QuY2FsbChzY29wZSwgYSwgYiwgYywgZCwgZSwgZik7XG4gICAgICBlcnJv
clRocm93biA9IGZhbHNlO1xuICAgIH0gZmluYWxseSB7XG4gICAgICB0cnkge1xuICAgICAgICBp
ZiAoZXJyb3JUaHJvd24pIHtcbiAgICAgICAgICAvLyBJZiBgbWV0aG9kYCB0aHJvd3MsIHByZWZl
ciB0byBzaG93IHRoYXQgc3RhY2sgdHJhY2Ugb3ZlciBhbnkgdGhyb3duXG4gICAgICAgICAgLy8g
YnkgaW52b2tpbmcgYGNsb3NlQWxsYC5cbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgdGhp
cy5jbG9zZUFsbCgwKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHt9XG4gICAgICAgIH0gZWxz
ZSB7XG4gICAgICAgICAgLy8gU2luY2UgYG1ldGhvZGAgZGlkbid0IHRocm93LCB3ZSBkb24ndCB3
YW50IHRvIHNpbGVuY2UgdGhlIGV4Y2VwdGlvblxuICAgICAgICAgIC8vIGhlcmUuXG4gICAgICAg
ICAgdGhpcy5jbG9zZUFsbCgwKTtcbiAgICAgICAgfVxuICAgICAgfSBmaW5hbGx5IHtcbiAgICAg
ICAgdGhpcy5faXNJblRyYW5zYWN0aW9uID0gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIHJl
dHVybiByZXQ7XG4gIH0sXG5cbiAgaW5pdGlhbGl6ZUFsbDogZnVuY3Rpb24gKHN0YXJ0SW5kZXgp
IHtcbiAgICB2YXIgdHJhbnNhY3Rpb25XcmFwcGVycyA9IHRoaXMudHJhbnNhY3Rpb25XcmFwcGVy
cztcbiAgICBmb3IgKHZhciBpID0gc3RhcnRJbmRleDsgaSA8IHRyYW5zYWN0aW9uV3JhcHBlcnMu
bGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciB3cmFwcGVyID0gdHJhbnNhY3Rpb25XcmFwcGVyc1tp
XTtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIENhdGNoaW5nIGVycm9ycyBtYWtlcyBkZWJ1Z2dp
bmcgbW9yZSBkaWZmaWN1bHQsIHNvIHdlIHN0YXJ0IHdpdGggdGhlXG4gICAgICAgIC8vIE9CU0VS
VkVEX0VSUk9SIHN0YXRlIGJlZm9yZSBvdmVyd3JpdGluZyBpdCB3aXRoIHRoZSByZWFsIHJldHVy
biB2YWx1ZVxuICAgICAgICAvLyBvZiBpbml0aWFsaXplIC0tIGlmIGl0J3Mgc3RpbGwgc2V0IHRv
IE9CU0VSVkVEX0VSUk9SIGluIHRoZSBmaW5hbGx5XG4gICAgICAgIC8vIGJsb2NrLCBpdCBtZWFu
cyB3cmFwcGVyLmluaXRpYWxpemUgdGhyZXcuXG4gICAgICAgIHRoaXMud3JhcHBlckluaXREYXRh
W2ldID0gT0JTRVJWRURfRVJST1I7XG4gICAgICAgIHRoaXMud3JhcHBlckluaXREYXRhW2ldID0g
d3JhcHBlci5pbml0aWFsaXplID8gd3JhcHBlci5pbml0aWFsaXplLmNhbGwodGhpcykgOiBudWxs
O1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgaWYgKHRoaXMud3JhcHBlckluaXREYXRhW2ld
ID09PSBPQlNFUlZFRF9FUlJPUikge1xuICAgICAgICAgIC8vIFRoZSBpbml0aWFsaXplciBmb3Ig
d3JhcHBlciBpIHRocmV3IGFuIGVycm9yOyBpbml0aWFsaXplIHRoZVxuICAgICAgICAgIC8vIHJl
bWFpbmluZyB3cmFwcGVycyBidXQgc2lsZW5jZSBhbnkgZXhjZXB0aW9ucyBmcm9tIHRoZW0gdG8g
ZW5zdXJlXG4gICAgICAgICAgLy8gdGhhdCB0aGUgZmlyc3QgZXJyb3IgaXMgdGhlIG9uZSB0byBi
dWJibGUgdXAuXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMuaW5pdGlhbGl6ZUFs
bChpICsgMSk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7fVxuICAgICAgICB9XG4gICAgICB9
XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBJbnZva2VzIGVhY2ggb2YgYHRoaXMudHJhbnNh
Y3Rpb25XcmFwcGVycy5jbG9zZVtpXWAgZnVuY3Rpb25zLCBwYXNzaW5nIGludG9cbiAgICogdGhl
bSB0aGUgcmVzcGVjdGl2ZSByZXR1cm4gdmFsdWVzIG9mIGB0aGlzLnRyYW5zYWN0aW9uV3JhcHBl
cnMuaW5pdFtpXWBcbiAgICogKGBjbG9zZWBycyB0aGF0IGNvcnJlc3BvbmQgdG8gaW5pdGlhbGl6
ZXJzIHRoYXQgZmFpbGVkIHdpbGwgbm90IGJlXG4gICAqIGludm9rZWQpLlxuICAgKi9cbiAgY2xv
c2VBbGw6IGZ1bmN0aW9uIChzdGFydEluZGV4KSB7XG4gICAgIXRoaXMuaXNJblRyYW5zYWN0aW9u
KCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZh
bHNlLCAnVHJhbnNhY3Rpb24uY2xvc2VBbGwoKTogQ2Fubm90IGNsb3NlIHRyYW5zYWN0aW9uIHdo
ZW4gbm9uZSBhcmUgb3Blbi4nKSA6IF9wcm9kSW52YXJpYW50KCcyOCcpIDogdm9pZCAwO1xuICAg
IHZhciB0cmFuc2FjdGlvbldyYXBwZXJzID0gdGhpcy50cmFuc2FjdGlvbldyYXBwZXJzO1xuICAg
IGZvciAodmFyIGkgPSBzdGFydEluZGV4OyBpIDwgdHJhbnNhY3Rpb25XcmFwcGVycy5sZW5ndGg7
IGkrKykge1xuICAgICAgdmFyIHdyYXBwZXIgPSB0cmFuc2FjdGlvbldyYXBwZXJzW2ldO1xuICAg
ICAgdmFyIGluaXREYXRhID0gdGhpcy53cmFwcGVySW5pdERhdGFbaV07XG4gICAgICB2YXIgZXJy
b3JUaHJvd247XG4gICAgICB0cnkge1xuICAgICAgICAvLyBDYXRjaGluZyBlcnJvcnMgbWFrZXMg
ZGVidWdnaW5nIG1vcmUgZGlmZmljdWx0LCBzbyB3ZSBzdGFydCB3aXRoXG4gICAgICAgIC8vIGVy
cm9yVGhyb3duIHNldCB0byB0cnVlIGJlZm9yZSBzZXR0aW5nIGl0IHRvIGZhbHNlIGFmdGVyIGNh
bGxpbmdcbiAgICAgICAgLy8gY2xvc2UgLS0gaWYgaXQncyBzdGlsbCBzZXQgdG8gdHJ1ZSBpbiB0
aGUgZmluYWxseSBibG9jaywgaXQgbWVhbnNcbiAgICAgICAgLy8gd3JhcHBlci5jbG9zZSB0aHJl
dy5cbiAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlO1xuICAgICAgICBpZiAoaW5pdERhdGEgIT09
IE9CU0VSVkVEX0VSUk9SICYmIHdyYXBwZXIuY2xvc2UpIHtcbiAgICAgICAgICB3cmFwcGVyLmNs
b3NlLmNhbGwodGhpcywgaW5pdERhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGVycm9yVGhyb3du
ID0gZmFsc2U7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBpZiAoZXJyb3JUaHJvd24pIHtc
biAgICAgICAgICAvLyBUaGUgY2xvc2VyIGZvciB3cmFwcGVyIGkgdGhyZXcgYW4gZXJyb3I7IGNs
b3NlIHRoZSByZW1haW5pbmdcbiAgICAgICAgICAvLyB3cmFwcGVycyBidXQgc2lsZW5jZSBhbnkg
ZXhjZXB0aW9ucyBmcm9tIHRoZW0gdG8gZW5zdXJlIHRoYXQgdGhlXG4gICAgICAgICAgLy8gZmly
c3QgZXJyb3IgaXMgdGhlIG9uZSB0byBidWJibGUgdXAuXG4gICAgICAgICAgdHJ5IHtcbiAgICAg
ICAgICAgIHRoaXMuY2xvc2VBbGwoaSArIDEpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4g
ICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy53cmFwcGVySW5pdERhdGEubGVuZ3Ro
ID0gMDtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBUcmFuc2FjdGlvbkltcGw7XG5cblxu
LyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9t
L2xpYi9UcmFuc2FjdGlvbi5qc1xuICoqIG1vZHVsZSBpZCA9IDI3XG4gKiogbW9kdWxlIGNodW5r
cyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDE2LXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBCYXNlZCBvbiB0aGUg
ZXNjYXBlLWh0bWwgbGlicmFyeSwgd2hpY2ggaXMgdXNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2Ug
YmVsb3c6XG4gKlxuICogQ29weXJpZ2h0IChjKSAyMDEyLTIwMTMgVEogSG9sb3dheWNodWtcbiAq
IENvcHlyaWdodCAoYykgMjAxNSBBbmRyZWFzIEx1YmJlXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTUg
VGlhbmNoZW5nIFwiVGltb3RoeVwiIEd1XG4gKlxuICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3Jh
bnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nXG4gKiBhIGNvcHkg
b2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVc
biAqICdTb2Z0d2FyZScpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0
aW9uLCBpbmNsdWRpbmdcbiAqIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwg
Y29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbiAqIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2Us
IGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0b1xuICogcGVybWl0IHBl
cnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0
IHRvXG4gKiB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4gKlxuICogVGhlIGFib3ZlIGNvcHly
aWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmVcbiAqIGluY2x1
ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJl
LlxuICpcbiAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAnQVMgSVMnLCBXSVRIT1VUIFdBUlJB
TlRZIE9GIEFOWSBLSU5ELFxuICogRVhQUkVTUyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5P
VCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4gKiBNRVJDSEFOVEFCSUxJVFksIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuXG4gKiBJTiBO
TyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUg
Rk9SIEFOWVxuICogQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElO
IEFOIEFDVElPTiBPRiBDT05UUkFDVCxcbiAqIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZS
T00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFXG4gKiBTT0ZUV0FSRSBPUiBUSEUg
VVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cbiAqXG4gKi9cblxuJ3VzZSBz
dHJpY3QnO1xuXG4vLyBjb2RlIGNvcGllZCBhbmQgbW9kaWZpZWQgZnJvbSBlc2NhcGUtaHRtbFxu
LyoqXG4gKiBNb2R1bGUgdmFyaWFibGVzLlxuICogQHByaXZhdGVcbiAqL1xuXG52YXIgbWF0Y2hI
dG1sUmVnRXhwID0gL1tcIicmPD5dLztcblxuLyoqXG4gKiBFc2NhcGUgc3BlY2lhbCBjaGFyYWN0
ZXJzIGluIHRoZSBnaXZlbiBzdHJpbmcgb2YgaHRtbC5cbiAqXG4gKiBAcGFyYW0gIHtzdHJpbmd9
IHN0cmluZyBUaGUgc3RyaW5nIHRvIGVzY2FwZSBmb3IgaW5zZXJ0aW5nIGludG8gSFRNTFxuICog
QHJldHVybiB7c3RyaW5nfVxuICogQHB1YmxpY1xuICovXG5cbmZ1bmN0aW9uIGVzY2FwZUh0bWwo
c3RyaW5nKSB7XG4gIHZhciBzdHIgPSAnJyArIHN0cmluZztcbiAgdmFyIG1hdGNoID0gbWF0Y2hI
dG1sUmVnRXhwLmV4ZWMoc3RyKTtcblxuICBpZiAoIW1hdGNoKSB7XG4gICAgcmV0dXJuIHN0cjtc
biAgfVxuXG4gIHZhciBlc2NhcGU7XG4gIHZhciBodG1sID0gJyc7XG4gIHZhciBpbmRleCA9IDA7
XG4gIHZhciBsYXN0SW5kZXggPSAwO1xuXG4gIGZvciAoaW5kZXggPSBtYXRjaC5pbmRleDsgaW5k
ZXggPCBzdHIubGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgc3dpdGNoIChzdHIuY2hhckNvZGVBdChp
bmRleCkpIHtcbiAgICAgIGNhc2UgMzQ6XG4gICAgICAgIC8vIFwiXG4gICAgICAgIGVzY2FwZSA9
ICcmcXVvdDsnO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMzg6XG4gICAgICAgIC8vICZc
biAgICAgICAgZXNjYXBlID0gJyZhbXA7JztcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDM5
OlxuICAgICAgICAvLyAnXG4gICAgICAgIGVzY2FwZSA9ICcmI3gyNzsnOyAvLyBtb2RpZmllZCBm
cm9tIGVzY2FwZS1odG1sOyB1c2VkIHRvIGJlICcmIzM5J1xuICAgICAgICBicmVhaztcbiAgICAg
IGNhc2UgNjA6XG4gICAgICAgIC8vIDxcbiAgICAgICAgZXNjYXBlID0gJyZsdDsnO1xuICAgICAg
ICBicmVhaztcbiAgICAgIGNhc2UgNjI6XG4gICAgICAgIC8vID5cbiAgICAgICAgZXNjYXBlID0g
JyZndDsnO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGNvbnRpbnVl
O1xuICAgIH1cblxuICAgIGlmIChsYXN0SW5kZXggIT09IGluZGV4KSB7XG4gICAgICBodG1sICs9
IHN0ci5zdWJzdHJpbmcobGFzdEluZGV4LCBpbmRleCk7XG4gICAgfVxuXG4gICAgbGFzdEluZGV4
ID0gaW5kZXggKyAxO1xuICAgIGh0bWwgKz0gZXNjYXBlO1xuICB9XG5cbiAgcmV0dXJuIGxhc3RJ
bmRleCAhPT0gaW5kZXggPyBodG1sICsgc3RyLnN1YnN0cmluZyhsYXN0SW5kZXgsIGluZGV4KSA6
IGh0bWw7XG59XG4vLyBlbmQgY29kZSBjb3BpZWQgYW5kIG1vZGlmaWVkIGZyb20gZXNjYXBlLWh0
bWxcblxuLyoqXG4gKiBFc2NhcGVzIHRleHQgdG8gcHJldmVudCBzY3JpcHRpbmcgYXR0YWNrcy5c
biAqXG4gKiBAcGFyYW0geyp9IHRleHQgVGV4dCB2YWx1ZSB0byBlc2NhcGUuXG4gKiBAcmV0dXJu
IHtzdHJpbmd9IEFuIGVzY2FwZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBlc2NhcGVUZXh0Q29u
dGVudEZvckJyb3dzZXIodGV4dCkge1xuICBpZiAodHlwZW9mIHRleHQgPT09ICdib29sZWFuJyB8
fCB0eXBlb2YgdGV4dCA9PT0gJ251bWJlcicpIHtcbiAgICAvLyB0aGlzIHNob3J0Y2lyY3VpdCBo
ZWxwcyBwZXJmIGZvciB0eXBlcyB0aGF0IHdlIGtub3cgd2lsbCBuZXZlciBoYXZlXG4gICAgLy8g
c3BlY2lhbCBjaGFyYWN0ZXJzLCBlc3BlY2lhbGx5IGdpdmVuIHRoYXQgdGhpcyBmdW5jdGlvbiBp
cyB1c2VkIG9mdGVuXG4gICAgLy8gZm9yIG51bWVyaWMgZG9tIGlkcy5cbiAgICByZXR1cm4gJycg
KyB0ZXh0O1xuICB9XG4gIHJldHVybiBlc2NhcGVIdG1sKHRleHQpO1xufVxuXG5tb2R1bGUuZXhw
b3J0cyA9IGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlcjtcblxuXG4vKioqKioqKioqKioqKioq
KipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL2VzY2FwZVRleHRD
b250ZW50Rm9yQnJvd3Nlci5qc1xuICoqIG1vZHVsZSBpZCA9IDI4XG4gKiogbW9kdWxlIGNodW5r
cyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJp
Y3QnO1xuXG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVj
dXRpb25FbnZpcm9ubWVudCcpO1xudmFyIERPTU5hbWVzcGFjZXMgPSByZXF1aXJlKCcuL0RPTU5h
bWVzcGFjZXMnKTtcblxudmFyIFdISVRFU1BBQ0VfVEVTVCA9IC9eWyBcXHJcXG5cXHRcXGZdLztc
bnZhciBOT05WSVNJQkxFX1RFU1QgPSAvPCghLS18bGlua3xub3NjcmlwdHxtZXRhfHNjcmlwdHxz
dHlsZSlbIFxcclxcblxcdFxcZlxcLz5dLztcblxudmFyIGNyZWF0ZU1pY3Jvc29mdFVuc2FmZUxv
Y2FsRnVuY3Rpb24gPSByZXF1aXJlKCcuL2NyZWF0ZU1pY3Jvc29mdFVuc2FmZUxvY2FsRnVuY3Rp
b24nKTtcblxuLy8gU1ZHIHRlbXAgY29udGFpbmVyIGZvciBJRSBsYWNraW5nIGlubmVySFRNTFxu
dmFyIHJldXNhYmxlU1ZHQ29udGFpbmVyO1xuXG4vKipcbiAqIFNldCB0aGUgaW5uZXJIVE1MIHBy
b3BlcnR5IG9mIGEgbm9kZSwgZW5zdXJpbmcgdGhhdCB3aGl0ZXNwYWNlIGlzIHByZXNlcnZlZFxu
ICogZXZlbiBpbiBJRTguXG4gKlxuICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG4gKiBAcGFy
YW0ge3N0cmluZ30gaHRtbFxuICogQGludGVybmFsXG4gKi9cbnZhciBzZXRJbm5lckhUTUwgPSBj
cmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0aW9uKGZ1bmN0aW9uIChub2RlLCBodG1sKSB7
XG4gIC8vIElFIGRvZXMgbm90IGhhdmUgaW5uZXJIVE1MIGZvciBTVkcgbm9kZXMsIHNvIGluc3Rl
YWQgd2UgaW5qZWN0IHRoZVxuICAvLyBuZXcgbWFya3VwIGluIGEgdGVtcCBub2RlIGFuZCB0aGVu
IG1vdmUgdGhlIGNoaWxkIG5vZGVzIGFjcm9zcyBpbnRvXG4gIC8vIHRoZSB0YXJnZXQgbm9kZVxu
ICBpZiAobm9kZS5uYW1lc3BhY2VVUkkgPT09IERPTU5hbWVzcGFjZXMuc3ZnICYmICEoJ2lubmVy
SFRNTCcgaW4gbm9kZSkpIHtcbiAgICByZXVzYWJsZVNWR0NvbnRhaW5lciA9IHJldXNhYmxlU1ZH
Q29udGFpbmVyIHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHJldXNhYmxl
U1ZHQ29udGFpbmVyLmlubmVySFRNTCA9ICc8c3ZnPicgKyBodG1sICsgJzwvc3ZnPic7XG4gICAg
dmFyIHN2Z05vZGUgPSByZXVzYWJsZVNWR0NvbnRhaW5lci5maXJzdENoaWxkO1xuICAgIHdoaWxl
IChzdmdOb2RlLmZpcnN0Q2hpbGQpIHtcbiAgICAgIG5vZGUuYXBwZW5kQ2hpbGQoc3ZnTm9kZS5m
aXJzdENoaWxkKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbm9kZS5pbm5lckhUTUwgPSBodG1s
O1xuICB9XG59KTtcblxuaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkge1xuICAv
LyBJRTg6IFdoZW4gdXBkYXRpbmcgYSBqdXN0IGNyZWF0ZWQgbm9kZSB3aXRoIGlubmVySFRNTCBv
bmx5IGxlYWRpbmdcbiAgLy8gd2hpdGVzcGFjZSBpcyByZW1vdmVkLiBXaGVuIHVwZGF0aW5nIGFu
IGV4aXN0aW5nIG5vZGUgd2l0aCBpbm5lckhUTUxcbiAgLy8gd2hpdGVzcGFjZSBpbiByb290IFRl
eHROb2RlcyBpcyBhbHNvIGNvbGxhcHNlZC5cbiAgLy8gQHNlZSBxdWlya3Ntb2RlLm9yZy9idWdy
ZXBvcnRzL2FyY2hpdmVzLzIwMDQvMTEvaW5uZXJodG1sX2FuZF90Lmh0bWxcblxuICAvLyBGZWF0
dXJlIGRldGVjdGlvbjsgb25seSBJRTggaXMga25vd24gdG8gYmVoYXZlIGltcHJvcGVybHkgbGlr
ZSB0aGlzLlxuICB2YXIgdGVzdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYn
KTtcbiAgdGVzdEVsZW1lbnQuaW5uZXJIVE1MID0gJyAnO1xuICBpZiAodGVzdEVsZW1lbnQuaW5u
ZXJIVE1MID09PSAnJykge1xuICAgIHNldElubmVySFRNTCA9IGZ1bmN0aW9uIChub2RlLCBodG1s
KSB7XG4gICAgICAvLyBNYWdpYyB0aGVvcnk6IElFOCBzdXBwb3NlZGx5IGRpZmZlcmVudGlhdGVz
IGJldHdlZW4gYWRkZWQgYW5kIHVwZGF0ZWRcbiAgICAgIC8vIG5vZGVzIHdoZW4gcHJvY2Vzc2lu
ZyBpbm5lckhUTUwsIGlubmVySFRNTCBvbiB1cGRhdGVkIG5vZGVzIHN1ZmZlcnNcbiAgICAgIC8v
IGZyb20gd29yc2Ugd2hpdGVzcGFjZSBiZWhhdmlvci4gUmUtYWRkaW5nIGEgbm9kZSBsaWtlIHRo
aXMgdHJpZ2dlcnNcbiAgICAgIC8vIHRoZSBpbml0aWFsIGFuZCBtb3JlIGZhdm9yYWJsZSB3aGl0
ZXNwYWNlIGJlaGF2aW9yLlxuICAgICAgLy8gVE9ETzogV2hhdCB0byBkbyBvbiBhIGRldGFjaGVk
IG5vZGU/XG4gICAgICBpZiAobm9kZS5wYXJlbnROb2RlKSB7XG4gICAgICAgIG5vZGUucGFyZW50
Tm9kZS5yZXBsYWNlQ2hpbGQobm9kZSwgbm9kZSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFdlIGFs
c28gaW1wbGVtZW50IGEgd29ya2Fyb3VuZCBmb3Igbm9uLXZpc2libGUgdGFncyBkaXNhcHBlYXJp
bmcgaW50b1xuICAgICAgLy8gdGhpbiBhaXIgb24gSUU4LCB0aGlzIG9ubHkgaGFwcGVucyBpZiB0
aGVyZSBpcyBubyB2aXNpYmxlIHRleHRcbiAgICAgIC8vIGluLWZyb250IG9mIHRoZSBub24tdmlz
aWJsZSB0YWdzLiBQaWdneWJhY2sgb24gdGhlIHdoaXRlc3BhY2UgZml4XG4gICAgICAvLyBhbmQg
c2ltcGx5IGNoZWNrIGlmIGFueSBub24tdmlzaWJsZSB0YWdzIGFwcGVhciBpbiB0aGUgc291cmNl
LlxuICAgICAgaWYgKFdISVRFU1BBQ0VfVEVTVC50ZXN0KGh0bWwpIHx8IGh0bWxbMF0gPT09ICc8
JyAmJiBOT05WSVNJQkxFX1RFU1QudGVzdChodG1sKSkge1xuICAgICAgICAvLyBSZWNvdmVyIGxl
YWRpbmcgd2hpdGVzcGFjZSBieSB0ZW1wb3JhcmlseSBwcmVwZW5kaW5nIGFueSBjaGFyYWN0ZXIu
XG4gICAgICAgIC8vIFxcdUZFRkYgaGFzIHRoZSBwb3RlbnRpYWwgYWR2YW50YWdlIG9mIGJlaW5n
IHplcm8td2lkdGgvaW52aXNpYmxlLlxuICAgICAgICAvLyBVZ2xpZnlKUyBkcm9wcyBVK0ZFRkYg
Y2hhcnMgd2hlbiBwYXJzaW5nLCBzbyB1c2UgU3RyaW5nLmZyb21DaGFyQ29kZVxuICAgICAgICAv
LyBpbiBob3BlcyB0aGF0IHRoaXMgaXMgcHJlc2VydmVkIGV2ZW4gaWYgXCJcXHVGRUZGXCIgaXMg
dHJhbnNmb3JtZWQgdG9cbiAgICAgICAgLy8gdGhlIGFjdHVhbCBVbmljb2RlIGNoYXJhY3RlciAo
YnkgQmFiZWwsIGZvciBleGFtcGxlKS5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL21p
c2hvby9VZ2xpZnlKUzIvYmxvYi92Mi40LjIwL2xpYi9wYXJzZS5qcyNMMjE2XG4gICAgICAgIG5v
ZGUuaW5uZXJIVE1MID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweGZlZmYpICsgaHRtbDtcblxuICAg
ICAgICAvLyBkZWxldGVEYXRhIGxlYXZlcyBhbiBlbXB0eSBgVGV4dE5vZGVgIHdoaWNoIG9mZnNl
dHMgdGhlIGluZGV4IG9mIGFsbFxuICAgICAgICAvLyBjaGlsZHJlbi4gRGVmaW5pdGVseSB3YW50
IHRvIGF2b2lkIHRoaXMuXG4gICAgICAgIHZhciB0ZXh0Tm9kZSA9IG5vZGUuZmlyc3RDaGlsZDtc
biAgICAgICAgaWYgKHRleHROb2RlLmRhdGEubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgbm9k
ZS5yZW1vdmVDaGlsZCh0ZXh0Tm9kZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGV4
dE5vZGUuZGVsZXRlRGF0YSgwLCAxKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAg
ICAgbm9kZS5pbm5lckhUTUwgPSBodG1sO1xuICAgICAgfVxuICAgIH07XG4gIH1cbiAgdGVzdEVs
ZW1lbnQgPSBudWxsO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNldElubmVySFRNTDtcblxuXG4v
KioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20v
bGliL3NldElubmVySFRNTC5qc1xuICoqIG1vZHVsZSBpZCA9IDI5XG4gKiogbW9kdWxlIGNodW5r
cyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7
XG5leHBvcnRzLmNvbXBvc2UgPSBleHBvcnRzLmFwcGx5TWlkZGxld2FyZSA9IGV4cG9ydHMuYmlu
ZEFjdGlvbkNyZWF0b3JzID0gZXhwb3J0cy5jb21iaW5lUmVkdWNlcnMgPSBleHBvcnRzLmNyZWF0
ZVN0b3JlID0gdW5kZWZpbmVkO1xuXG52YXIgX2NyZWF0ZVN0b3JlID0gcmVxdWlyZSgnLi9jcmVh
dGVTdG9yZScpO1xuXG52YXIgX2NyZWF0ZVN0b3JlMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQo
X2NyZWF0ZVN0b3JlKTtcblxudmFyIF9jb21iaW5lUmVkdWNlcnMgPSByZXF1aXJlKCcuL2NvbWJp
bmVSZWR1Y2VycycpO1xuXG52YXIgX2NvbWJpbmVSZWR1Y2VyczIgPSBfaW50ZXJvcFJlcXVpcmVE
ZWZhdWx0KF9jb21iaW5lUmVkdWNlcnMpO1xuXG52YXIgX2JpbmRBY3Rpb25DcmVhdG9ycyA9IHJl
cXVpcmUoJy4vYmluZEFjdGlvbkNyZWF0b3JzJyk7XG5cbnZhciBfYmluZEFjdGlvbkNyZWF0b3Jz
MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2JpbmRBY3Rpb25DcmVhdG9ycyk7XG5cbnZhciBf
YXBwbHlNaWRkbGV3YXJlID0gcmVxdWlyZSgnLi9hcHBseU1pZGRsZXdhcmUnKTtcblxudmFyIF9h
cHBseU1pZGRsZXdhcmUyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXBwbHlNaWRkbGV3YXJl
KTtcblxudmFyIF9jb21wb3NlID0gcmVxdWlyZSgnLi9jb21wb3NlJyk7XG5cbnZhciBfY29tcG9z
ZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb21wb3NlKTtcblxudmFyIF93YXJuaW5nID0g
cmVxdWlyZSgnLi91dGlscy93YXJuaW5nJyk7XG5cbnZhciBfd2FybmluZzIgPSBfaW50ZXJvcFJl
cXVpcmVEZWZhdWx0KF93YXJuaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVs
dChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQn
OiBvYmogfTsgfVxuXG4vKlxuKiBUaGlzIGlzIGEgZHVtbXkgZnVuY3Rpb24gdG8gY2hlY2sgaWYg
dGhlIGZ1bmN0aW9uIG5hbWUgaGFzIGJlZW4gYWx0ZXJlZCBieSBtaW5pZmljYXRpb24uXG4qIElm
IHRoZSBmdW5jdGlvbiBoYXMgYmVlbiBtaW5pZmllZCBhbmQgTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJywgd2FybiB0aGUgdXNlci5cbiovXG5mdW5jdGlvbiBpc0NydXNoZWQoKSB7fVxuXG5pZiAo
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiB0eXBlb2YgaXNDcnVzaGVk
Lm5hbWUgPT09ICdzdHJpbmcnICYmIGlzQ3J1c2hlZC5uYW1lICE9PSAnaXNDcnVzaGVkJykge1xu
ICAoMCwgX3dhcm5pbmcyWydkZWZhdWx0J10pKCdZb3UgYXJlIGN1cnJlbnRseSB1c2luZyBtaW5p
ZmllZCBjb2RlIG91dHNpZGUgb2YgTk9ERV9FTlYgPT09IFxcJ3Byb2R1Y3Rpb25cXCcuICcgKyAn
VGhpcyBtZWFucyB0aGF0IHlvdSBhcmUgcnVubmluZyBhIHNsb3dlciBkZXZlbG9wbWVudCBidWls
ZCBvZiBSZWR1eC4gJyArICdZb3UgY2FuIHVzZSBsb29zZS1lbnZpZnkgKGh0dHBzOi8vZ2l0aHVi
LmNvbS96ZXJ0b3NoL2xvb3NlLWVudmlmeSkgZm9yIGJyb3dzZXJpZnkgJyArICdvciBEZWZpbmVQ
bHVnaW4gZm9yIHdlYnBhY2sgKGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMzAw
MzAwMzEpICcgKyAndG8gZW5zdXJlIHlvdSBoYXZlIHRoZSBjb3JyZWN0IGNvZGUgZm9yIHlvdXIg
cHJvZHVjdGlvbiBidWlsZC4nKTtcbn1cblxuZXhwb3J0cy5jcmVhdGVTdG9yZSA9IF9jcmVhdGVT
dG9yZTJbJ2RlZmF1bHQnXTtcbmV4cG9ydHMuY29tYmluZVJlZHVjZXJzID0gX2NvbWJpbmVSZWR1
Y2VyczJbJ2RlZmF1bHQnXTtcbmV4cG9ydHMuYmluZEFjdGlvbkNyZWF0b3JzID0gX2JpbmRBY3Rp
b25DcmVhdG9yczJbJ2RlZmF1bHQnXTtcbmV4cG9ydHMuYXBwbHlNaWRkbGV3YXJlID0gX2FwcGx5
TWlkZGxld2FyZTJbJ2RlZmF1bHQnXTtcbmV4cG9ydHMuY29tcG9zZSA9IF9jb21wb3NlMlsnZGVm
YXVsdCddO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiog
Li9+L3JlZHV4L2xpYi9pbmRleC5qc1xuICoqIG1vZHVsZSBpZCA9IDMwXG4gKiogbW9kdWxlIGNo
dW5rcyA9IDBcbiAqKi8iLCIvKiFcbiAgQ29weXJpZ2h0IChjKSAyMDE2IEplZCBXYXRzb24uXG4g
IExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZSAoTUlUKSwgc2VlXG4gIGh0dHA6Ly9qZWR3
YXRzb24uZ2l0aHViLmlvL2NsYXNzbmFtZXNcbiovXG4vKiBnbG9iYWwgZGVmaW5lICovXG5cbihm
dW5jdGlvbiAoKSB7XG5cdCd1c2Ugc3RyaWN0JztcblxuXHR2YXIgaGFzT3duID0ge30uaGFzT3du
UHJvcGVydHk7XG5cblx0ZnVuY3Rpb24gY2xhc3NOYW1lcyAoKSB7XG5cdFx0dmFyIGNsYXNzZXMg
PSBbXTtcblxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7
XG5cdFx0XHR2YXIgYXJnID0gYXJndW1lbnRzW2ldO1xuXHRcdFx0aWYgKCFhcmcpIGNvbnRpbnVl
O1xuXG5cdFx0XHR2YXIgYXJnVHlwZSA9IHR5cGVvZiBhcmc7XG5cblx0XHRcdGlmIChhcmdUeXBl
ID09PSAnc3RyaW5nJyB8fCBhcmdUeXBlID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRjbGFzc2Vz
LnB1c2goYXJnKTtcblx0XHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG5cdFx0
XHRcdGNsYXNzZXMucHVzaChjbGFzc05hbWVzLmFwcGx5KG51bGwsIGFyZykpO1xuXHRcdFx0fSBl
bHNlIGlmIChhcmdUeXBlID09PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRmb3IgKHZhciBrZXkgaW4g
YXJnKSB7XG5cdFx0XHRcdFx0aWYgKGhhc093bi5jYWxsKGFyZywga2V5KSAmJiBhcmdba2V5XSkg
e1xuXHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGtleSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9
XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNsYXNzZXMuam9pbignICcpO1xuXHR9XG5c
blx0aWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7
XG5cdFx0bW9kdWxlLmV4cG9ydHMgPSBjbGFzc05hbWVzO1xuXHR9IGVsc2UgaWYgKHR5cGVvZiBk
ZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGRlZmluZS5hbWQgPT09ICdvYmplY3QnICYm
IGRlZmluZS5hbWQpIHtcblx0XHQvLyByZWdpc3RlciBhcyAnY2xhc3NuYW1lcycsIGNvbnNpc3Rl
bnQgd2l0aCBucG0gcGFja2FnZSBuYW1lXG5cdFx0ZGVmaW5lKCdjbGFzc25hbWVzJywgW10sIGZ1
bmN0aW9uICgpIHtcblx0XHRcdHJldHVybiBjbGFzc05hbWVzO1xuXHRcdH0pO1xuXHR9IGVsc2Ug
e1xuXHRcdHdpbmRvdy5jbGFzc05hbWVzID0gY2xhc3NOYW1lcztcblx0fVxufSgpKTtcblxuXG5c
bi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2NsYXNzbmFt
ZXMvaW5kZXguanNcbiAqKiBtb2R1bGUgaWQgPSAzMVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4g
KiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5c
biAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEB0eXBlY2hlY2tzXG4gKiBc
biAqL1xuXG4vKmVzbGludC1kaXNhYmxlIG5vLXNlbGYtY29tcGFyZSAqL1xuXG4ndXNlIHN0cmlj
dCc7XG5cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVy
dHk7XG5cbi8qKlxuICogaW5saW5lZCBPYmplY3QuaXMgcG9seWZpbGwgdG8gYXZvaWQgcmVxdWly
aW5nIGNvbnN1bWVycyBzaGlwIHRoZWlyIG93blxuICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxs
YS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMv
T2JqZWN0L2lzXG4gKi9cbmZ1bmN0aW9uIGlzKHgsIHkpIHtcbiAgLy8gU2FtZVZhbHVlIGFsZ29y
aXRobVxuICBpZiAoeCA9PT0geSkge1xuICAgIC8vIFN0ZXBzIDEtNSwgNy0xMFxuICAgIC8vIFN0
ZXBzIDYuYi02LmU6ICswICE9IC0wXG4gICAgLy8gQWRkZWQgdGhlIG5vbnplcm8geSBjaGVjayB0
byBtYWtlIEZsb3cgaGFwcHksIGJ1dCBpdCBpcyByZWR1bmRhbnRcbiAgICByZXR1cm4geCAhPT0g
MCB8fCB5ICE9PSAwIHx8IDEgLyB4ID09PSAxIC8geTtcbiAgfSBlbHNlIHtcbiAgICAvLyBTdGVw
IDYuYTogTmFOID09IE5hTlxuICAgIHJldHVybiB4ICE9PSB4ICYmIHkgIT09IHk7XG4gIH1cbn1c
blxuLyoqXG4gKiBQZXJmb3JtcyBlcXVhbGl0eSBieSBpdGVyYXRpbmcgdGhyb3VnaCBrZXlzIG9u
IGFuIG9iamVjdCBhbmQgcmV0dXJuaW5nIGZhbHNlXG4gKiB3aGVuIGFueSBrZXkgaGFzIHZhbHVl
cyB3aGljaCBhcmUgbm90IHN0cmljdGx5IGVxdWFsIGJldHdlZW4gdGhlIGFyZ3VtZW50cy5cbiAq
IFJldHVybnMgdHJ1ZSB3aGVuIHRoZSB2YWx1ZXMgb2YgYWxsIGtleXMgYXJlIHN0cmljdGx5IGVx
dWFsLlxuICovXG5mdW5jdGlvbiBzaGFsbG93RXF1YWwob2JqQSwgb2JqQikge1xuICBpZiAoaXMo
b2JqQSwgb2JqQikpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2Jq
QSAhPT0gJ29iamVjdCcgfHwgb2JqQSA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqQiAhPT0gJ29iamVj
dCcgfHwgb2JqQiA9PT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHZhciBr
ZXlzQSA9IE9iamVjdC5rZXlzKG9iakEpO1xuICB2YXIga2V5c0IgPSBPYmplY3Qua2V5cyhvYmpC
KTtcblxuICBpZiAoa2V5c0EubGVuZ3RoICE9PSBrZXlzQi5sZW5ndGgpIHtcbiAgICByZXR1cm4g
ZmFsc2U7XG4gIH1cblxuICAvLyBUZXN0IGZvciBBJ3Mga2V5cyBkaWZmZXJlbnQgZnJvbSBCLlxu
ICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXNBLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKCFoYXNP
d25Qcm9wZXJ0eS5jYWxsKG9iakIsIGtleXNBW2ldKSB8fCAhaXMob2JqQVtrZXlzQVtpXV0sIG9i
akJba2V5c0FbaV1dKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJl
dHVybiB0cnVlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNoYWxsb3dFcXVhbDtcblxuXG4vKioq
KioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9mYmpzL2xpYi9zaGFs
bG93RXF1YWwuanNcbiAqKiBtb2R1bGUgaWQgPSAzMlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4g
KiovIiwidmFyIGJhc2VHZXRUYWcgPSByZXF1aXJlKCcuL19iYXNlR2V0VGFnJyksXG4gICAgZ2V0
UHJvdG90eXBlID0gcmVxdWlyZSgnLi9fZ2V0UHJvdG90eXBlJyksXG4gICAgaXNPYmplY3RMaWtl
ID0gcmVxdWlyZSgnLi9pc09iamVjdExpa2UnKTtcblxuLyoqIGBPYmplY3QjdG9TdHJpbmdgIHJl
c3VsdCByZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFRhZyA9ICdbb2JqZWN0IE9iamVjdF0nO1xu
XG4vKiogVXNlZCBmb3IgYnVpbHQtaW4gbWV0aG9kIHJlZmVyZW5jZXMuICovXG52YXIgZnVuY1By
b3RvID0gRnVuY3Rpb24ucHJvdG90eXBlLFxuICAgIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3Rv
dHlwZTtcblxuLyoqIFVzZWQgdG8gcmVzb2x2ZSB0aGUgZGVjb21waWxlZCBzb3VyY2Ugb2YgZnVu
Y3Rpb25zLiAqL1xudmFyIGZ1bmNUb1N0cmluZyA9IGZ1bmNQcm90by50b1N0cmluZztcblxuLyoq
IFVzZWQgdG8gY2hlY2sgb2JqZWN0cyBmb3Igb3duIHByb3BlcnRpZXMuICovXG52YXIgaGFzT3du
UHJvcGVydHkgPSBvYmplY3RQcm90by5oYXNPd25Qcm9wZXJ0eTtcblxuLyoqIFVzZWQgdG8gaW5m
ZXIgdGhlIGBPYmplY3RgIGNvbnN0cnVjdG9yLiAqL1xudmFyIG9iamVjdEN0b3JTdHJpbmcgPSBm
dW5jVG9TdHJpbmcuY2FsbChPYmplY3QpO1xuXG4vKipcbiAqIENoZWNrcyBpZiBgdmFsdWVgIGlz
IGEgcGxhaW4gb2JqZWN0LCB0aGF0IGlzLCBhbiBvYmplY3QgY3JlYXRlZCBieSB0aGVcbiAqIGBP
YmplY3RgIGNvbnN0cnVjdG9yIG9yIG9uZSB3aXRoIGEgYFtbUHJvdG90eXBlXV1gIG9mIGBudWxs
YC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuOC4wXG4gKiBA
Y2F0ZWdvcnkgTGFuZ1xuICogQHBhcmFtIHsqfSB2YWx1ZSBUaGUgdmFsdWUgdG8gY2hlY2suXG4g
KiBAcmV0dXJucyB7Ym9vbGVhbn0gUmV0dXJucyBgdHJ1ZWAgaWYgYHZhbHVlYCBpcyBhIHBsYWlu
IG9iamVjdCwgZWxzZSBgZmFsc2VgLlxuICogQGV4YW1wbGVcbiAqXG4gKiBmdW5jdGlvbiBGb28o
KSB7XG4gKiAgIHRoaXMuYSA9IDE7XG4gKiB9XG4gKlxuICogXy5pc1BsYWluT2JqZWN0KG5ldyBG
b28pO1xuICogLy8gPT4gZmFsc2VcbiAqXG4gKiBfLmlzUGxhaW5PYmplY3QoWzEsIDIsIDNdKTtc
biAqIC8vID0+IGZhbHNlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KHsgJ3gnOiAwLCAneSc6IDAg
fSk7XG4gKiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc1BsYWluT2JqZWN0KE9iamVjdC5jcmVhdGUo
bnVsbCkpO1xuICogLy8gPT4gdHJ1ZVxuICovXG5mdW5jdGlvbiBpc1BsYWluT2JqZWN0KHZhbHVl
KSB7XG4gIGlmICghaXNPYmplY3RMaWtlKHZhbHVlKSB8fCBiYXNlR2V0VGFnKHZhbHVlKSAhPSBv
YmplY3RUYWcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgdmFyIHByb3RvID0gZ2V0UHJv
dG90eXBlKHZhbHVlKTtcbiAgaWYgKHByb3RvID09PSBudWxsKSB7XG4gICAgcmV0dXJuIHRydWU7
XG4gIH1cbiAgdmFyIEN0b3IgPSBoYXNPd25Qcm9wZXJ0eS5jYWxsKHByb3RvLCAnY29uc3RydWN0
b3InKSAmJiBwcm90by5jb25zdHJ1Y3RvcjtcbiAgcmV0dXJuIHR5cGVvZiBDdG9yID09ICdmdW5j
dGlvbicgJiYgQ3RvciBpbnN0YW5jZW9mIEN0b3IgJiZcbiAgICBmdW5jVG9TdHJpbmcuY2FsbChD
dG9yKSA9PSBvYmplY3RDdG9yU3RyaW5nO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzUGxhaW5P
YmplY3Q7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoq
IC4vfi9sb2Rhc2gvaXNQbGFpbk9iamVjdC5qc1xuICoqIG1vZHVsZSBpZCA9IDMzXG4gKiogbW9k
dWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxu
J3VzZSBzdHJpY3QnO1xuXG52YXIgRE9NTGF6eVRyZWUgPSByZXF1aXJlKCcuL0RPTUxhenlUcmVl
Jyk7XG52YXIgRGFuZ2VyID0gcmVxdWlyZSgnLi9EYW5nZXInKTtcbnZhciBSZWFjdERPTUNvbXBv
bmVudFRyZWUgPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpO1xudmFyIFJlYWN0
SW5zdHJ1bWVudGF0aW9uID0gcmVxdWlyZSgnLi9SZWFjdEluc3RydW1lbnRhdGlvbicpO1xuXG52
YXIgY3JlYXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbiA9IHJlcXVpcmUoJy4vY3JlYXRl
TWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbicpO1xudmFyIHNldElubmVySFRNTCA9IHJlcXVp
cmUoJy4vc2V0SW5uZXJIVE1MJyk7XG52YXIgc2V0VGV4dENvbnRlbnQgPSByZXF1aXJlKCcuL3Nl
dFRleHRDb250ZW50Jyk7XG5cbmZ1bmN0aW9uIGdldE5vZGVBZnRlcihwYXJlbnROb2RlLCBub2Rl
KSB7XG4gIC8vIFNwZWNpYWwgY2FzZSBmb3IgdGV4dCBjb21wb25lbnRzLCB3aGljaCByZXR1cm4g
W29wZW4sIGNsb3NlXSBjb21tZW50c1xuICAvLyBmcm9tIGdldEhvc3ROb2RlLlxuICBpZiAoQXJy
YXkuaXNBcnJheShub2RlKSkge1xuICAgIG5vZGUgPSBub2RlWzFdO1xuICB9XG4gIHJldHVybiBu
b2RlID8gbm9kZS5uZXh0U2libGluZyA6IHBhcmVudE5vZGUuZmlyc3RDaGlsZDtcbn1cblxuLyoq
XG4gKiBJbnNlcnRzIGBjaGlsZE5vZGVgIGFzIGEgY2hpbGQgb2YgYHBhcmVudE5vZGVgIGF0IHRo
ZSBgaW5kZXhgLlxuICpcbiAqIEBwYXJhbSB7RE9NRWxlbWVudH0gcGFyZW50Tm9kZSBQYXJlbnQg
bm9kZSBpbiB3aGljaCB0byBpbnNlcnQuXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR9IGNoaWxkTm9k
ZSBDaGlsZCBub2RlIHRvIGluc2VydC5cbiAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBJbmRleCBh
dCB3aGljaCB0byBpbnNlcnQgdGhlIGNoaWxkLlxuICogQGludGVybmFsXG4gKi9cbnZhciBpbnNl
cnRDaGlsZEF0ID0gY3JlYXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbihmdW5jdGlvbiAo
cGFyZW50Tm9kZSwgY2hpbGROb2RlLCByZWZlcmVuY2VOb2RlKSB7XG4gIC8vIFdlIHJlbHkgZXhj
bHVzaXZlbHkgb24gYGluc2VydEJlZm9yZShub2RlLCBudWxsKWAgaW5zdGVhZCBvZiBhbHNvIHVz
aW5nXG4gIC8vIGBhcHBlbmRDaGlsZChub2RlKWAuIChVc2luZyBgdW5kZWZpbmVkYCBpcyBub3Qg
YWxsb3dlZCBieSBhbGwgYnJvd3NlcnMgc29cbiAgLy8gd2UgYXJlIGNhcmVmdWwgdG8gdXNlIGBu
dWxsYC4pXG4gIHBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGNoaWxkTm9kZSwgcmVmZXJlbmNlTm9k
ZSk7XG59KTtcblxuZnVuY3Rpb24gaW5zZXJ0TGF6eVRyZWVDaGlsZEF0KHBhcmVudE5vZGUsIGNo
aWxkVHJlZSwgcmVmZXJlbmNlTm9kZSkge1xuICBET01MYXp5VHJlZS5pbnNlcnRUcmVlQmVmb3Jl
KHBhcmVudE5vZGUsIGNoaWxkVHJlZSwgcmVmZXJlbmNlTm9kZSk7XG59XG5cbmZ1bmN0aW9uIG1v
dmVDaGlsZChwYXJlbnROb2RlLCBjaGlsZE5vZGUsIHJlZmVyZW5jZU5vZGUpIHtcbiAgaWYgKEFy
cmF5LmlzQXJyYXkoY2hpbGROb2RlKSkge1xuICAgIG1vdmVEZWxpbWl0ZWRUZXh0KHBhcmVudE5v
ZGUsIGNoaWxkTm9kZVswXSwgY2hpbGROb2RlWzFdLCByZWZlcmVuY2VOb2RlKTtcbiAgfSBlbHNl
IHtcbiAgICBpbnNlcnRDaGlsZEF0KHBhcmVudE5vZGUsIGNoaWxkTm9kZSwgcmVmZXJlbmNlTm9k
ZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVtb3ZlQ2hpbGQocGFyZW50Tm9kZSwgY2hpbGROb2Rl
KSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGNoaWxkTm9kZSkpIHtcbiAgICB2YXIgY2xvc2luZ0Nv
bW1lbnQgPSBjaGlsZE5vZGVbMV07XG4gICAgY2hpbGROb2RlID0gY2hpbGROb2RlWzBdO1xuICAg
IHJlbW92ZURlbGltaXRlZFRleHQocGFyZW50Tm9kZSwgY2hpbGROb2RlLCBjbG9zaW5nQ29tbWVu
dCk7XG4gICAgcGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjbG9zaW5nQ29tbWVudCk7XG4gIH1cbiAg
cGFyZW50Tm9kZS5yZW1vdmVDaGlsZChjaGlsZE5vZGUpO1xufVxuXG5mdW5jdGlvbiBtb3ZlRGVs
aW1pdGVkVGV4dChwYXJlbnROb2RlLCBvcGVuaW5nQ29tbWVudCwgY2xvc2luZ0NvbW1lbnQsIHJl
ZmVyZW5jZU5vZGUpIHtcbiAgdmFyIG5vZGUgPSBvcGVuaW5nQ29tbWVudDtcbiAgd2hpbGUgKHRy
dWUpIHtcbiAgICB2YXIgbmV4dE5vZGUgPSBub2RlLm5leHRTaWJsaW5nO1xuICAgIGluc2VydENo
aWxkQXQocGFyZW50Tm9kZSwgbm9kZSwgcmVmZXJlbmNlTm9kZSk7XG4gICAgaWYgKG5vZGUgPT09
IGNsb3NpbmdDb21tZW50KSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gICAgbm9kZSA9IG5leHRO
b2RlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlbW92ZURlbGltaXRlZFRleHQocGFyZW50Tm9kZSwg
c3RhcnROb2RlLCBjbG9zaW5nQ29tbWVudCkge1xuICB3aGlsZSAodHJ1ZSkge1xuICAgIHZhciBu
b2RlID0gc3RhcnROb2RlLm5leHRTaWJsaW5nO1xuICAgIGlmIChub2RlID09PSBjbG9zaW5nQ29t
bWVudCkge1xuICAgICAgLy8gVGhlIGNsb3NpbmcgY29tbWVudCBpcyByZW1vdmVkIGJ5IFJlYWN0
TXVsdGlDaGlsZC5cbiAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJlbnROb2Rl
LnJlbW92ZUNoaWxkKG5vZGUpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiByZXBsYWNlRGVs
aW1pdGVkVGV4dChvcGVuaW5nQ29tbWVudCwgY2xvc2luZ0NvbW1lbnQsIHN0cmluZ1RleHQpIHtc
biAgdmFyIHBhcmVudE5vZGUgPSBvcGVuaW5nQ29tbWVudC5wYXJlbnROb2RlO1xuICB2YXIgbm9k
ZUFmdGVyQ29tbWVudCA9IG9wZW5pbmdDb21tZW50Lm5leHRTaWJsaW5nO1xuICBpZiAobm9kZUFm
dGVyQ29tbWVudCA9PT0gY2xvc2luZ0NvbW1lbnQpIHtcbiAgICAvLyBUaGVyZSBhcmUgbm8gdGV4
dCBub2RlcyBiZXR3ZWVuIHRoZSBvcGVuaW5nIGFuZCBjbG9zaW5nIGNvbW1lbnRzOyBpbnNlcnRc
biAgICAvLyBhIG5ldyBvbmUgaWYgc3RyaW5nVGV4dCBpc24ndCBlbXB0eS5cbiAgICBpZiAoc3Ry
aW5nVGV4dCkge1xuICAgICAgaW5zZXJ0Q2hpbGRBdChwYXJlbnROb2RlLCBkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZShzdHJpbmdUZXh0KSwgbm9kZUFmdGVyQ29tbWVudCk7XG4gICAgfVxuICB9IGVs
c2Uge1xuICAgIGlmIChzdHJpbmdUZXh0KSB7XG4gICAgICAvLyBTZXQgdGhlIHRleHQgY29udGVu
dCBvZiB0aGUgZmlyc3Qgbm9kZSBhZnRlciB0aGUgb3BlbmluZyBjb21tZW50LCBhbmRcbiAgICAg
IC8vIHJlbW92ZSBhbGwgZm9sbG93aW5nIG5vZGVzIHVwIHVudGlsIHRoZSBjbG9zaW5nIGNvbW1l
bnQuXG4gICAgICBzZXRUZXh0Q29udGVudChub2RlQWZ0ZXJDb21tZW50LCBzdHJpbmdUZXh0KTtc
biAgICAgIHJlbW92ZURlbGltaXRlZFRleHQocGFyZW50Tm9kZSwgbm9kZUFmdGVyQ29tbWVudCwg
Y2xvc2luZ0NvbW1lbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZW1vdmVEZWxpbWl0ZWRUZXh0
KHBhcmVudE5vZGUsIG9wZW5pbmdDb21tZW50LCBjbG9zaW5nQ29tbWVudCk7XG4gICAgfVxuICB9
XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBS
ZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtcbiAgICAgIGlu
c3RhbmNlSUQ6IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG9wZW5p
bmdDb21tZW50KS5fZGVidWdJRCxcbiAgICAgIHR5cGU6ICdyZXBsYWNlIHRleHQnLFxuICAgICAg
cGF5bG9hZDogc3RyaW5nVGV4dFxuICAgIH0pO1xuICB9XG59XG5cbnZhciBkYW5nZXJvdXNseVJl
cGxhY2VOb2RlV2l0aE1hcmt1cCA9IERhbmdlci5kYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1h
cmt1cDtcbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIGRh
bmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwID0gZnVuY3Rpb24gKG9sZENoaWxkLCBtYXJr
dXAsIHByZXZJbnN0YW5jZSkge1xuICAgIERhbmdlci5kYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0
aE1hcmt1cChvbGRDaGlsZCwgbWFya3VwKTtcbiAgICBpZiAocHJldkluc3RhbmNlLl9kZWJ1Z0lE
ICE9PSAwKSB7XG4gICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3Bl
cmF0aW9uKHtcbiAgICAgICAgaW5zdGFuY2VJRDogcHJldkluc3RhbmNlLl9kZWJ1Z0lELFxuICAg
ICAgICB0eXBlOiAncmVwbGFjZSB3aXRoJyxcbiAgICAgICAgcGF5bG9hZDogbWFya3VwLnRvU3Ry
aW5nKClcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbmV4dEluc3RhbmNlID0g
UmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUobWFya3VwLm5vZGUpO1xu
ICAgICAgaWYgKG5leHRJbnN0YW5jZS5fZGVidWdJRCAhPT0gMCkge1xuICAgICAgICBSZWFjdElu
c3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtcbiAgICAgICAgICBpbnN0
YW5jZUlEOiBuZXh0SW5zdGFuY2UuX2RlYnVnSUQsXG4gICAgICAgICAgdHlwZTogJ21vdW50Jyxc
biAgICAgICAgICBwYXlsb2FkOiBtYXJrdXAudG9TdHJpbmcoKVxuICAgICAgICB9KTtcbiAgICAg
IH1cbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICogT3BlcmF0aW9ucyBmb3IgdXBkYXRpbmcgd2l0
aCBET00gY2hpbGRyZW4uXG4gKi9cbnZhciBET01DaGlsZHJlbk9wZXJhdGlvbnMgPSB7XG4gIGRh
bmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwOiBkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0
aE1hcmt1cCxcblxuICByZXBsYWNlRGVsaW1pdGVkVGV4dDogcmVwbGFjZURlbGltaXRlZFRleHQs
XG5cbiAgLyoqXG4gICAqIFVwZGF0ZXMgYSBjb21wb25lbnQncyBjaGlsZHJlbiBieSBwcm9jZXNz
aW5nIGEgc2VyaWVzIG9mIHVwZGF0ZXMuIFRoZVxuICAgKiB1cGRhdGUgY29uZmlndXJhdGlvbnMg
YXJlIGVhY2ggZXhwZWN0ZWQgdG8gaGF2ZSBhIGBwYXJlbnROb2RlYCBwcm9wZXJ0eS5cbiAgICpc
biAgICogQHBhcmFtIHthcnJheTxvYmplY3Q+fSB1cGRhdGVzIExpc3Qgb2YgdXBkYXRlIGNvbmZp
Z3VyYXRpb25zLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb2Nlc3NVcGRhdGVzOiBmdW5j
dGlvbiAocGFyZW50Tm9kZSwgdXBkYXRlcykge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgcGFyZW50Tm9kZURlYnVnSUQgPSBSZWFj
dERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShwYXJlbnROb2RlKS5fZGVidWdJ
RDtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBrID0gMDsgayA8IHVwZGF0ZXMubGVuZ3RoOyBrKysp
IHtcbiAgICAgIHZhciB1cGRhdGUgPSB1cGRhdGVzW2tdO1xuICAgICAgc3dpdGNoICh1cGRhdGUu
dHlwZSkge1xuICAgICAgICBjYXNlICdJTlNFUlRfTUFSS1VQJzpcbiAgICAgICAgICBpbnNlcnRM
YXp5VHJlZUNoaWxkQXQocGFyZW50Tm9kZSwgdXBkYXRlLmNvbnRlbnQsIGdldE5vZGVBZnRlcihw
YXJlbnROb2RlLCB1cGRhdGUuYWZ0ZXJOb2RlKSk7XG4gICAgICAgICAgaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIFJlYWN0SW5zdHJ1bWVu
dGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuICAgICAgICAgICAgICBpbnN0YW5j
ZUlEOiBwYXJlbnROb2RlRGVidWdJRCxcbiAgICAgICAgICAgICAgdHlwZTogJ2luc2VydCBjaGls
ZCcsXG4gICAgICAgICAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgICAgICAgICB0b0luZGV4OiB1
cGRhdGUudG9JbmRleCxcbiAgICAgICAgICAgICAgICBjb250ZW50OiB1cGRhdGUuY29udGVudC50
b1N0cmluZygpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1c
biAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnTU9WRV9FWElTVElORyc6XG4gICAgICAg
ICAgbW92ZUNoaWxkKHBhcmVudE5vZGUsIHVwZGF0ZS5mcm9tTm9kZSwgZ2V0Tm9kZUFmdGVyKHBh
cmVudE5vZGUsIHVwZGF0ZS5hZnRlck5vZGUpKTtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgUmVhY3RJbnN0cnVtZW50
YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7XG4gICAgICAgICAgICAgIGluc3RhbmNl
SUQ6IHBhcmVudE5vZGVEZWJ1Z0lELFxuICAgICAgICAgICAgICB0eXBlOiAnbW92ZSBjaGlsZCcs
XG4gICAgICAgICAgICAgIHBheWxvYWQ6IHsgZnJvbUluZGV4OiB1cGRhdGUuZnJvbUluZGV4LCB0
b0luZGV4OiB1cGRhdGUudG9JbmRleCB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4g
ICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ1NFVF9NQVJLVVAnOlxuICAgICAgICAgIHNl
dElubmVySFRNTChwYXJlbnROb2RlLCB1cGRhdGUuY29udGVudCk7XG4gICAgICAgICAgaWYgKHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAgIFJlYWN0
SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuICAgICAgICAgICAg
ICBpbnN0YW5jZUlEOiBwYXJlbnROb2RlRGVidWdJRCxcbiAgICAgICAgICAgICAgdHlwZTogJ3Jl
cGxhY2UgY2hpbGRyZW4nLFxuICAgICAgICAgICAgICBwYXlsb2FkOiB1cGRhdGUuY29udGVudC50
b1N0cmluZygpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7
XG4gICAgICAgIGNhc2UgJ1RFWFRfQ09OVEVOVCc6XG4gICAgICAgICAgc2V0VGV4dENvbnRlbnQo
cGFyZW50Tm9kZSwgdXBkYXRlLmNvbnRlbnQpO1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICBSZWFjdEluc3RydW1lbnRh
dGlvbi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtcbiAgICAgICAgICAgICAgaW5zdGFuY2VJ
RDogcGFyZW50Tm9kZURlYnVnSUQsXG4gICAgICAgICAgICAgIHR5cGU6ICdyZXBsYWNlIHRleHQn
LFxuICAgICAgICAgICAgICBwYXlsb2FkOiB1cGRhdGUuY29udGVudC50b1N0cmluZygpXG4gICAg
ICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2Ug
J1JFTU9WRV9OT0RFJzpcbiAgICAgICAgICByZW1vdmVDaGlsZChwYXJlbnROb2RlLCB1cGRhdGUu
ZnJvbU5vZGUpO1xuICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nKSB7XG4gICAgICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25I
b3N0T3BlcmF0aW9uKHtcbiAgICAgICAgICAgICAgaW5zdGFuY2VJRDogcGFyZW50Tm9kZURlYnVn
SUQsXG4gICAgICAgICAgICAgIHR5cGU6ICdyZW1vdmUgY2hpbGQnLFxuICAgICAgICAgICAgICBw
YXlsb2FkOiB7IGZyb21JbmRleDogdXBkYXRlLmZyb21JbmRleCB9XG4gICAgICAgICAgICB9KTtc
biAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG59O1xu
XG5tb2R1bGUuZXhwb3J0cyA9IERPTUNoaWxkcmVuT3BlcmF0aW9ucztcblxuXG4vKioqKioqKioq
KioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL0RPTUNo
aWxkcmVuT3BlcmF0aW9ucy5qc1xuICoqIG1vZHVsZSBpZCA9IDM0XG4gKiogbW9kdWxlIGNodW5r
cyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJp
Y3QnO1xuXG52YXIgRE9NTmFtZXNwYWNlcyA9IHtcbiAgaHRtbDogJ2h0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGh0bWwnLFxuICBtYXRobWw6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0
aE1MJyxcbiAgc3ZnOiAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnXG59O1xuXG5tb2R1bGUu
ZXhwb3J0cyA9IERPTU5hbWVzcGFjZXM7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VC
UEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9ET01OYW1lc3BhY2VzLmpzXG4gKiog
bW9kdWxlIGlkID0gMzVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52
YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFyIGludmFyaWFu
dCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG4vKipcbiAqIEluamVjdGFibGUg
b3JkZXJpbmcgb2YgZXZlbnQgcGx1Z2lucy5cbiAqL1xudmFyIGV2ZW50UGx1Z2luT3JkZXIgPSBu
dWxsO1xuXG4vKipcbiAqIEluamVjdGFibGUgbWFwcGluZyBmcm9tIG5hbWVzIHRvIGV2ZW50IHBs
dWdpbiBtb2R1bGVzLlxuICovXG52YXIgbmFtZXNUb1BsdWdpbnMgPSB7fTtcblxuLyoqXG4gKiBS
ZWNvbXB1dGVzIHRoZSBwbHVnaW4gbGlzdCB1c2luZyB0aGUgaW5qZWN0ZWQgcGx1Z2lucyBhbmQg
cGx1Z2luIG9yZGVyaW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIHJlY29tcHV0
ZVBsdWdpbk9yZGVyaW5nKCkge1xuICBpZiAoIWV2ZW50UGx1Z2luT3JkZXIpIHtcbiAgICAvLyBX
YWl0IHVudGlsIGFuIGBldmVudFBsdWdpbk9yZGVyYCBpcyBpbmplY3RlZC5cbiAgICByZXR1cm47
XG4gIH1cbiAgZm9yICh2YXIgcGx1Z2luTmFtZSBpbiBuYW1lc1RvUGx1Z2lucykge1xuICAgIHZh
ciBwbHVnaW5Nb2R1bGUgPSBuYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXTtcbiAgICB2YXIgcGx1
Z2luSW5kZXggPSBldmVudFBsdWdpbk9yZGVyLmluZGV4T2YocGx1Z2luTmFtZSk7XG4gICAgIShw
bHVnaW5JbmRleCA+IC0xKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
PyBpbnZhcmlhbnQoZmFsc2UsICdFdmVudFBsdWdpblJlZ2lzdHJ5OiBDYW5ub3QgaW5qZWN0IGV2
ZW50IHBsdWdpbnMgdGhhdCBkbyBub3QgZXhpc3QgaW4gdGhlIHBsdWdpbiBvcmRlcmluZywgYCVz
YC4nLCBwbHVnaW5OYW1lKSA6IF9wcm9kSW52YXJpYW50KCc5NicsIHBsdWdpbk5hbWUpIDogdm9p
ZCAwO1xuICAgIGlmIChFdmVudFBsdWdpblJlZ2lzdHJ5LnBsdWdpbnNbcGx1Z2luSW5kZXhdKSB7
XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgIXBsdWdpbk1vZHVsZS5leHRyYWN0RXZlbnRz
ID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxz
ZSwgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IEV2ZW50IHBsdWdpbnMgbXVzdCBpbXBsZW1lbnQgYW4g
YGV4dHJhY3RFdmVudHNgIG1ldGhvZCwgYnV0IGAlc2AgZG9lcyBub3QuJywgcGx1Z2luTmFtZSkg
OiBfcHJvZEludmFyaWFudCgnOTcnLCBwbHVnaW5OYW1lKSA6IHZvaWQgMDtcbiAgICBFdmVudFBs
dWdpblJlZ2lzdHJ5LnBsdWdpbnNbcGx1Z2luSW5kZXhdID0gcGx1Z2luTW9kdWxlO1xuICAgIHZh
ciBwdWJsaXNoZWRFdmVudHMgPSBwbHVnaW5Nb2R1bGUuZXZlbnRUeXBlcztcbiAgICBmb3IgKHZh
ciBldmVudE5hbWUgaW4gcHVibGlzaGVkRXZlbnRzKSB7XG4gICAgICAhcHVibGlzaEV2ZW50Rm9y
UGx1Z2luKHB1Ymxpc2hlZEV2ZW50c1tldmVudE5hbWVdLCBwbHVnaW5Nb2R1bGUsIGV2ZW50TmFt
ZSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZh
bHNlLCAnRXZlbnRQbHVnaW5SZWdpc3RyeTogRmFpbGVkIHRvIHB1Ymxpc2ggZXZlbnQgYCVzYCBm
b3IgcGx1Z2luIGAlc2AuJywgZXZlbnROYW1lLCBwbHVnaW5OYW1lKSA6IF9wcm9kSW52YXJpYW50
KCc5OCcsIGV2ZW50TmFtZSwgcGx1Z2luTmFtZSkgOiB2b2lkIDA7XG4gICAgfVxuICB9XG59XG5c
bi8qKlxuICogUHVibGlzaGVzIGFuIGV2ZW50IHNvIHRoYXQgaXQgY2FuIGJlIGRpc3BhdGNoZWQg
YnkgdGhlIHN1cHBsaWVkIHBsdWdpbi5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hD
b25maWcgRGlzcGF0Y2ggY29uZmlndXJhdGlvbiBmb3IgdGhlIGV2ZW50LlxuICogQHBhcmFtIHtv
YmplY3R9IFBsdWdpbk1vZHVsZSBQbHVnaW4gcHVibGlzaGluZyB0aGUgZXZlbnQuXG4gKiBAcmV0
dXJuIHtib29sZWFufSBUcnVlIGlmIHRoZSBldmVudCB3YXMgc3VjY2Vzc2Z1bGx5IHB1Ymxpc2hl
ZC5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9uIHB1Ymxpc2hFdmVudEZvclBsdWdpbihkaXNw
YXRjaENvbmZpZywgcGx1Z2luTW9kdWxlLCBldmVudE5hbWUpIHtcbiAgISFFdmVudFBsdWdpblJl
Z2lzdHJ5LmV2ZW50TmFtZURpc3BhdGNoQ29uZmlncy5oYXNPd25Qcm9wZXJ0eShldmVudE5hbWUp
ID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxz
ZSwgJ0V2ZW50UGx1Z2luSHViOiBNb3JlIHRoYW4gb25lIHBsdWdpbiBhdHRlbXB0ZWQgdG8gcHVi
bGlzaCB0aGUgc2FtZSBldmVudCBuYW1lLCBgJXNgLicsIGV2ZW50TmFtZSkgOiBfcHJvZEludmFy
aWFudCgnOTknLCBldmVudE5hbWUpIDogdm9pZCAwO1xuICBFdmVudFBsdWdpblJlZ2lzdHJ5LmV2
ZW50TmFtZURpc3BhdGNoQ29uZmlnc1tldmVudE5hbWVdID0gZGlzcGF0Y2hDb25maWc7XG5cbiAg
dmFyIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzID0gZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0
cmF0aW9uTmFtZXM7XG4gIGlmIChwaGFzZWRSZWdpc3RyYXRpb25OYW1lcykge1xuICAgIGZvciAo
dmFyIHBoYXNlTmFtZSBpbiBwaGFzZWRSZWdpc3RyYXRpb25OYW1lcykge1xuICAgICAgaWYgKHBo
YXNlZFJlZ2lzdHJhdGlvbk5hbWVzLmhhc093blByb3BlcnR5KHBoYXNlTmFtZSkpIHtcbiAgICAg
ICAgdmFyIHBoYXNlZFJlZ2lzdHJhdGlvbk5hbWUgPSBwaGFzZWRSZWdpc3RyYXRpb25OYW1lc1tw
aGFzZU5hbWVdO1xuICAgICAgICBwdWJsaXNoUmVnaXN0cmF0aW9uTmFtZShwaGFzZWRSZWdpc3Ry
YXRpb25OYW1lLCBwbHVnaW5Nb2R1bGUsIGV2ZW50TmFtZSk7XG4gICAgICB9XG4gICAgfVxuICAg
IHJldHVybiB0cnVlO1xuICB9IGVsc2UgaWYgKGRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5h
bWUpIHtcbiAgICBwdWJsaXNoUmVnaXN0cmF0aW9uTmFtZShkaXNwYXRjaENvbmZpZy5yZWdpc3Ry
YXRpb25OYW1lLCBwbHVnaW5Nb2R1bGUsIGV2ZW50TmFtZSk7XG4gICAgcmV0dXJuIHRydWU7XG4g
IH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIFB1Ymxpc2hlcyBhIHJlZ2lzdHJhdGlv
biBuYW1lIHRoYXQgaXMgdXNlZCB0byBpZGVudGlmeSBkaXNwYXRjaGVkIGV2ZW50cyBhbmRcbiAq
IGNhbiBiZSB1c2VkIHdpdGggYEV2ZW50UGx1Z2luSHViLnB1dExpc3RlbmVyYCB0byByZWdpc3Rl
ciBsaXN0ZW5lcnMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHJlZ2lzdHJhdGlvbk5hbWUgUmVn
aXN0cmF0aW9uIG5hbWUgdG8gYWRkLlxuICogQHBhcmFtIHtvYmplY3R9IFBsdWdpbk1vZHVsZSBQ
bHVnaW4gcHVibGlzaGluZyB0aGUgZXZlbnQuXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBw
dWJsaXNoUmVnaXN0cmF0aW9uTmFtZShyZWdpc3RyYXRpb25OYW1lLCBwbHVnaW5Nb2R1bGUsIGV2
ZW50TmFtZSkge1xuICAhIUV2ZW50UGx1Z2luUmVnaXN0cnkucmVnaXN0cmF0aW9uTmFtZU1vZHVs
ZXNbcmVnaXN0cmF0aW9uTmFtZV0gPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gaW52YXJpYW50KGZhbHNlLCAnRXZlbnRQbHVnaW5IdWI6IE1vcmUgdGhhbiBvbmUgcGx1
Z2luIGF0dGVtcHRlZCB0byBwdWJsaXNoIHRoZSBzYW1lIHJlZ2lzdHJhdGlvbiBuYW1lLCBgJXNg
LicsIHJlZ2lzdHJhdGlvbk5hbWUpIDogX3Byb2RJbnZhcmlhbnQoJzEwMCcsIHJlZ2lzdHJhdGlv
bk5hbWUpIDogdm9pZCAwO1xuICBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVN
b2R1bGVzW3JlZ2lzdHJhdGlvbk5hbWVdID0gcGx1Z2luTW9kdWxlO1xuICBFdmVudFBsdWdpblJl
Z2lzdHJ5LnJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRlbmNpZXNbcmVnaXN0cmF0aW9uTmFtZV0gPSBw
bHVnaW5Nb2R1bGUuZXZlbnRUeXBlc1tldmVudE5hbWVdLmRlcGVuZGVuY2llcztcblxuICBpZiAo
cHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIHZhciBsb3dlckNh
c2VkTmFtZSA9IHJlZ2lzdHJhdGlvbk5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICBFdmVudFBsdWdp
blJlZ2lzdHJ5LnBvc3NpYmxlUmVnaXN0cmF0aW9uTmFtZXNbbG93ZXJDYXNlZE5hbWVdID0gcmVn
aXN0cmF0aW9uTmFtZTtcblxuICAgIGlmIChyZWdpc3RyYXRpb25OYW1lID09PSAnb25Eb3VibGVD
bGljaycpIHtcbiAgICAgIEV2ZW50UGx1Z2luUmVnaXN0cnkucG9zc2libGVSZWdpc3RyYXRpb25O
YW1lcy5vbmRibGNsaWNrID0gcmVnaXN0cmF0aW9uTmFtZTtcbiAgICB9XG4gIH1cbn1cblxuLyoq
XG4gKiBSZWdpc3RlcnMgcGx1Z2lucyBzbyB0aGF0IHRoZXkgY2FuIGV4dHJhY3QgYW5kIGRpc3Bh
dGNoIGV2ZW50cy5cbiAqXG4gKiBAc2VlIHtFdmVudFBsdWdpbkh1Yn1cbiAqL1xudmFyIEV2ZW50
UGx1Z2luUmVnaXN0cnkgPSB7XG4gIC8qKlxuICAgKiBPcmRlcmVkIGxpc3Qgb2YgaW5qZWN0ZWQg
cGx1Z2lucy5cbiAgICovXG4gIHBsdWdpbnM6IFtdLFxuXG4gIC8qKlxuICAgKiBNYXBwaW5nIGZy
b20gZXZlbnQgbmFtZSB0byBkaXNwYXRjaCBjb25maWdcbiAgICovXG4gIGV2ZW50TmFtZURpc3Bh
dGNoQ29uZmlnczoge30sXG5cbiAgLyoqXG4gICAqIE1hcHBpbmcgZnJvbSByZWdpc3RyYXRpb24g
bmFtZSB0byBwbHVnaW4gbW9kdWxlXG4gICAqL1xuICByZWdpc3RyYXRpb25OYW1lTW9kdWxlczog
e30sXG5cbiAgLyoqXG4gICAqIE1hcHBpbmcgZnJvbSByZWdpc3RyYXRpb24gbmFtZSB0byBldmVu
dCBuYW1lXG4gICAqL1xuICByZWdpc3RyYXRpb25OYW1lRGVwZW5kZW5jaWVzOiB7fSxcblxuICAv
KipcbiAgICogTWFwcGluZyBmcm9tIGxvd2VyY2FzZSByZWdpc3RyYXRpb24gbmFtZXMgdG8gdGhl
IHByb3Blcmx5IGNhc2VkIHZlcnNpb24sXG4gICAqIHVzZWQgdG8gd2FybiBpbiB0aGUgY2FzZSBv
ZiBtaXNzaW5nIGV2ZW50IGhhbmRsZXJzLiBBdmFpbGFibGVcbiAgICogb25seSBpbiBfX0RFVl9f
LlxuICAgKiBAdHlwZSB7T2JqZWN0fVxuICAgKi9cbiAgcG9zc2libGVSZWdpc3RyYXRpb25OYW1l
czogcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHt9IDogbnVsbCxcbiAg
Ly8gVHJ1c3QgdGhlIGRldmVsb3BlciB0byBvbmx5IHVzZSBwb3NzaWJsZVJlZ2lzdHJhdGlvbk5h
bWVzIGluIF9fREVWX19cblxuICAvKipcbiAgICogSW5qZWN0cyBhbiBvcmRlcmluZyBvZiBwbHVn
aW5zIChieSBwbHVnaW4gbmFtZSkuIFRoaXMgYWxsb3dzIHRoZSBvcmRlcmluZ1xuICAgKiB0byBi
ZSBkZWNvdXBsZWQgZnJvbSBpbmplY3Rpb24gb2YgdGhlIGFjdHVhbCBwbHVnaW5zIHNvIHRoYXQg
b3JkZXJpbmcgaXNcbiAgICogYWx3YXlzIGRldGVybWluaXN0aWMgcmVnYXJkbGVzcyBvZiBwYWNr
YWdpbmcsIG9uLXRoZS1mbHkgaW5qZWN0aW9uLCBldGMuXG4gICAqXG4gICAqIEBwYXJhbSB7YXJy
YXl9IEluamVjdGVkRXZlbnRQbHVnaW5PcmRlclxuICAgKiBAaW50ZXJuYWxcbiAgICogQHNlZSB7
RXZlbnRQbHVnaW5IdWIuaW5qZWN0aW9uLmluamVjdEV2ZW50UGx1Z2luT3JkZXJ9XG4gICAqL1xu
ICBpbmplY3RFdmVudFBsdWdpbk9yZGVyOiBmdW5jdGlvbiAoaW5qZWN0ZWRFdmVudFBsdWdpbk9y
ZGVyKSB7XG4gICAgISFldmVudFBsdWdpbk9yZGVyID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ0V2ZW50UGx1Z2luUmVnaXN0cnk6IENh
bm5vdCBpbmplY3QgZXZlbnQgcGx1Z2luIG9yZGVyaW5nIG1vcmUgdGhhbiBvbmNlLiBZb3UgYXJl
IGxpa2VseSB0cnlpbmcgdG8gbG9hZCBtb3JlIHRoYW4gb25lIGNvcHkgb2YgUmVhY3QuJykgOiBf
cHJvZEludmFyaWFudCgnMTAxJykgOiB2b2lkIDA7XG4gICAgLy8gQ2xvbmUgdGhlIG9yZGVyaW5n
IHNvIGl0IGNhbm5vdCBiZSBkeW5hbWljYWxseSBtdXRhdGVkLlxuICAgIGV2ZW50UGx1Z2luT3Jk
ZXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChpbmplY3RlZEV2ZW50UGx1Z2luT3JkZXIp
O1xuICAgIHJlY29tcHV0ZVBsdWdpbk9yZGVyaW5nKCk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIElu
amVjdHMgcGx1Z2lucyB0byBiZSB1c2VkIGJ5IGBFdmVudFBsdWdpbkh1YmAuIFRoZSBwbHVnaW4g
bmFtZXMgbXVzdCBiZVxuICAgKiBpbiB0aGUgb3JkZXJpbmcgaW5qZWN0ZWQgYnkgYGluamVjdEV2
ZW50UGx1Z2luT3JkZXJgLlxuICAgKlxuICAgKiBQbHVnaW5zIGNhbiBiZSBpbmplY3RlZCBhcyBw
YXJ0IG9mIHBhZ2UgaW5pdGlhbGl6YXRpb24gb3Igb24tdGhlLWZseS5cbiAgICpcbiAgICogQHBh
cmFtIHtvYmplY3R9IGluamVjdGVkTmFtZXNUb1BsdWdpbnMgTWFwIGZyb20gbmFtZXMgdG8gcGx1
Z2luIG1vZHVsZXMuXG4gICAqIEBpbnRlcm5hbFxuICAgKiBAc2VlIHtFdmVudFBsdWdpbkh1Yi5p
bmplY3Rpb24uaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lfVxuICAgKi9cbiAgaW5qZWN0RXZlbnRQ
bHVnaW5zQnlOYW1lOiBmdW5jdGlvbiAoaW5qZWN0ZWROYW1lc1RvUGx1Z2lucykge1xuICAgIHZh
ciBpc09yZGVyaW5nRGlydHkgPSBmYWxzZTtcbiAgICBmb3IgKHZhciBwbHVnaW5OYW1lIGluIGlu
amVjdGVkTmFtZXNUb1BsdWdpbnMpIHtcbiAgICAgIGlmICghaW5qZWN0ZWROYW1lc1RvUGx1Z2lu
cy5oYXNPd25Qcm9wZXJ0eShwbHVnaW5OYW1lKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAg
IH1cbiAgICAgIHZhciBwbHVnaW5Nb2R1bGUgPSBpbmplY3RlZE5hbWVzVG9QbHVnaW5zW3BsdWdp
bk5hbWVdO1xuICAgICAgaWYgKCFuYW1lc1RvUGx1Z2lucy5oYXNPd25Qcm9wZXJ0eShwbHVnaW5O
YW1lKSB8fCBuYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1lXSAhPT0gcGx1Z2luTW9kdWxlKSB7XG4g
ICAgICAgICEhbmFtZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV0gPyBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXZlbnRQbHVnaW5SZWdpc3Ry
eTogQ2Fubm90IGluamVjdCB0d28gZGlmZmVyZW50IGV2ZW50IHBsdWdpbnMgdXNpbmcgdGhlIHNh
bWUgbmFtZSwgYCVzYC4nLCBwbHVnaW5OYW1lKSA6IF9wcm9kSW52YXJpYW50KCcxMDInLCBwbHVn
aW5OYW1lKSA6IHZvaWQgMDtcbiAgICAgICAgbmFtZXNUb1BsdWdpbnNbcGx1Z2luTmFtZV0gPSBw
bHVnaW5Nb2R1bGU7XG4gICAgICAgIGlzT3JkZXJpbmdEaXJ0eSA9IHRydWU7XG4gICAgICB9XG4g
ICAgfVxuICAgIGlmIChpc09yZGVyaW5nRGlydHkpIHtcbiAgICAgIHJlY29tcHV0ZVBsdWdpbk9y
ZGVyaW5nKCk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBMb29rcyB1cCB0aGUgcGx1Z2lu
IGZvciB0aGUgc3VwcGxpZWQgZXZlbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBldmVu
dCBBIHN5bnRoZXRpYyBldmVudC5cbiAgICogQHJldHVybiB7P29iamVjdH0gVGhlIHBsdWdpbiB0
aGF0IGNyZWF0ZWQgdGhlIHN1cHBsaWVkIGV2ZW50LlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4g
IGdldFBsdWdpbk1vZHVsZUZvckV2ZW50OiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICB2YXIgZGlz
cGF0Y2hDb25maWcgPSBldmVudC5kaXNwYXRjaENvbmZpZztcbiAgICBpZiAoZGlzcGF0Y2hDb25m
aWcucmVnaXN0cmF0aW9uTmFtZSkge1xuICAgICAgcmV0dXJuIEV2ZW50UGx1Z2luUmVnaXN0cnku
cmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZV0g
fHwgbnVsbDtcbiAgICB9XG4gICAgaWYgKGRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlv
bk5hbWVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIHB1bGxpbmcgcGhhc2VkUmVnaXN0cmF0
aW9uTmFtZXMgb3V0IG9mIGRpc3BhdGNoQ29uZmlnIGhlbHBzIEZsb3cgc2VlXG4gICAgICAvLyB0
aGF0IGl0IGlzIG5vdCB1bmRlZmluZWQuXG4gICAgICB2YXIgcGhhc2VkUmVnaXN0cmF0aW9uTmFt
ZXMgPSBkaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25OYW1lcztcblxuICAgICAgZm9y
ICh2YXIgcGhhc2UgaW4gcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpIHtcbiAgICAgICAgaWYgKCFw
aGFzZWRSZWdpc3RyYXRpb25OYW1lcy5oYXNPd25Qcm9wZXJ0eShwaGFzZSkpIHtcbiAgICAgICAg
ICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgcGx1Z2luTW9kdWxlID0gRXZlbnRQ
bHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlc1twaGFzZWRSZWdpc3RyYXRpb25O
YW1lc1twaGFzZV1dO1xuICAgICAgICBpZiAocGx1Z2luTW9kdWxlKSB7XG4gICAgICAgICAgcmV0
dXJuIHBsdWdpbk1vZHVsZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4g
bnVsbDtcbiAgfSxcblxuICAvKipcbiAgICogRXhwb3NlZCBmb3IgdW5pdCB0ZXN0aW5nLlxuICAg
KiBAcHJpdmF0ZVxuICAgKi9cbiAgX3Jlc2V0RXZlbnRQbHVnaW5zOiBmdW5jdGlvbiAoKSB7XG4g
ICAgZXZlbnRQbHVnaW5PcmRlciA9IG51bGw7XG4gICAgZm9yICh2YXIgcGx1Z2luTmFtZSBpbiBu
YW1lc1RvUGx1Z2lucykge1xuICAgICAgaWYgKG5hbWVzVG9QbHVnaW5zLmhhc093blByb3BlcnR5
KHBsdWdpbk5hbWUpKSB7XG4gICAgICAgIGRlbGV0ZSBuYW1lc1RvUGx1Z2luc1twbHVnaW5OYW1l
XTtcbiAgICAgIH1cbiAgICB9XG4gICAgRXZlbnRQbHVnaW5SZWdpc3RyeS5wbHVnaW5zLmxlbmd0
aCA9IDA7XG5cbiAgICB2YXIgZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzID0gRXZlbnRQbHVnaW5S
ZWdpc3RyeS5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3M7XG4gICAgZm9yICh2YXIgZXZlbnROYW1l
IGluIGV2ZW50TmFtZURpc3BhdGNoQ29uZmlncykge1xuICAgICAgaWYgKGV2ZW50TmFtZURpc3Bh
dGNoQ29uZmlncy5oYXNPd25Qcm9wZXJ0eShldmVudE5hbWUpKSB7XG4gICAgICAgIGRlbGV0ZSBl
dmVudE5hbWVEaXNwYXRjaENvbmZpZ3NbZXZlbnROYW1lXTtcbiAgICAgIH1cbiAgICB9XG5cbiAg
ICB2YXIgcmVnaXN0cmF0aW9uTmFtZU1vZHVsZXMgPSBFdmVudFBsdWdpblJlZ2lzdHJ5LnJlZ2lz
dHJhdGlvbk5hbWVNb2R1bGVzO1xuICAgIGZvciAodmFyIHJlZ2lzdHJhdGlvbk5hbWUgaW4gcmVn
aXN0cmF0aW9uTmFtZU1vZHVsZXMpIHtcbiAgICAgIGlmIChyZWdpc3RyYXRpb25OYW1lTW9kdWxl
cy5oYXNPd25Qcm9wZXJ0eShyZWdpc3RyYXRpb25OYW1lKSkge1xuICAgICAgICBkZWxldGUgcmVn
aXN0cmF0aW9uTmFtZU1vZHVsZXNbcmVnaXN0cmF0aW9uTmFtZV07XG4gICAgICB9XG4gICAgfVxu
XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAg
IHZhciBwb3NzaWJsZVJlZ2lzdHJhdGlvbk5hbWVzID0gRXZlbnRQbHVnaW5SZWdpc3RyeS5wb3Nz
aWJsZVJlZ2lzdHJhdGlvbk5hbWVzO1xuICAgICAgZm9yICh2YXIgbG93ZXJDYXNlZE5hbWUgaW4g
cG9zc2libGVSZWdpc3RyYXRpb25OYW1lcykge1xuICAgICAgICBpZiAocG9zc2libGVSZWdpc3Ry
YXRpb25OYW1lcy5oYXNPd25Qcm9wZXJ0eShsb3dlckNhc2VkTmFtZSkpIHtcbiAgICAgICAgICBk
ZWxldGUgcG9zc2libGVSZWdpc3RyYXRpb25OYW1lc1tsb3dlckNhc2VkTmFtZV07XG4gICAgICAg
IH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gRXZlbnRQbHVn
aW5SZWdpc3RyeTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxu
ICoqIC4vfi9yZWFjdC1kb20vbGliL0V2ZW50UGx1Z2luUmVnaXN0cnkuanNcbiAqKiBtb2R1bGUg
aWQgPSAzNlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAq
XG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVx
dWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFyIFJlYWN0RXJyb3JVdGlscyA9IHJl
cXVpcmUoJy4vUmVhY3RFcnJvclV0aWxzJyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdm
YmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2Fy
bmluZycpO1xuXG4vKipcbiAqIEluamVjdGVkIGRlcGVuZGVuY2llczpcbiAqL1xuXG4vKipcbiAq
IC0gYENvbXBvbmVudFRyZWVgOiBbcmVxdWlyZWRdIE1vZHVsZSB0aGF0IGNhbiBjb252ZXJ0IGJl
dHdlZW4gUmVhY3QgaW5zdGFuY2VzXG4gKiAgIGFuZCBhY3R1YWwgbm9kZSByZWZlcmVuY2VzLlxu
ICovXG52YXIgQ29tcG9uZW50VHJlZTtcbnZhciBUcmVlVHJhdmVyc2FsO1xudmFyIGluamVjdGlv
biA9IHtcbiAgaW5qZWN0Q29tcG9uZW50VHJlZTogZnVuY3Rpb24gKEluamVjdGVkKSB7XG4gICAg
Q29tcG9uZW50VHJlZSA9IEluamVjdGVkO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gd2FybmluZyhJbmplY3RlZCAmJiBJbmplY3RlZC5nZXROb2RlRnJvbUluc3RhbmNl
ICYmIEluamVjdGVkLmdldEluc3RhbmNlRnJvbU5vZGUsICdFdmVudFBsdWdpblV0aWxzLmluamVj
dGlvbi5pbmplY3RDb21wb25lbnRUcmVlKC4uLik6IEluamVjdGVkICcgKyAnbW9kdWxlIGlzIG1p
c3NpbmcgZ2V0Tm9kZUZyb21JbnN0YW5jZSBvciBnZXRJbnN0YW5jZUZyb21Ob2RlLicpIDogdm9p
ZCAwO1xuICAgIH1cbiAgfSxcbiAgaW5qZWN0VHJlZVRyYXZlcnNhbDogZnVuY3Rpb24gKEluamVj
dGVkKSB7XG4gICAgVHJlZVRyYXZlcnNhbCA9IEluamVjdGVkO1xuICAgIGlmIChwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhJbmplY3RlZCAmJiBJbmplY3RlZC5pc0FuY2Vz
dG9yICYmIEluamVjdGVkLmdldExvd2VzdENvbW1vbkFuY2VzdG9yLCAnRXZlbnRQbHVnaW5VdGls
cy5pbmplY3Rpb24uaW5qZWN0VHJlZVRyYXZlcnNhbCguLi4pOiBJbmplY3RlZCAnICsgJ21vZHVs
ZSBpcyBtaXNzaW5nIGlzQW5jZXN0b3Igb3IgZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3IuJykgOiB2
b2lkIDA7XG4gICAgfVxuICB9XG59O1xuXG5mdW5jdGlvbiBpc0VuZGlzaCh0b3BMZXZlbFR5cGUp
IHtcbiAgcmV0dXJuIHRvcExldmVsVHlwZSA9PT0gJ3RvcE1vdXNlVXAnIHx8IHRvcExldmVsVHlw
ZSA9PT0gJ3RvcFRvdWNoRW5kJyB8fCB0b3BMZXZlbFR5cGUgPT09ICd0b3BUb3VjaENhbmNlbCc7
XG59XG5cbmZ1bmN0aW9uIGlzTW92ZWlzaCh0b3BMZXZlbFR5cGUpIHtcbiAgcmV0dXJuIHRvcExl
dmVsVHlwZSA9PT0gJ3RvcE1vdXNlTW92ZScgfHwgdG9wTGV2ZWxUeXBlID09PSAndG9wVG91Y2hN
b3ZlJztcbn1cbmZ1bmN0aW9uIGlzU3RhcnRpc2godG9wTGV2ZWxUeXBlKSB7XG4gIHJldHVybiB0
b3BMZXZlbFR5cGUgPT09ICd0b3BNb3VzZURvd24nIHx8IHRvcExldmVsVHlwZSA9PT0gJ3RvcFRv
dWNoU3RhcnQnO1xufVxuXG52YXIgdmFsaWRhdGVFdmVudERpc3BhdGNoZXM7XG5pZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YWxpZGF0ZUV2ZW50RGlzcGF0
Y2hlcyA9IGZ1bmN0aW9uIChldmVudCkge1xuICAgIHZhciBkaXNwYXRjaExpc3RlbmVycyA9IGV2
ZW50Ll9kaXNwYXRjaExpc3RlbmVycztcbiAgICB2YXIgZGlzcGF0Y2hJbnN0YW5jZXMgPSBldmVu
dC5fZGlzcGF0Y2hJbnN0YW5jZXM7XG5cbiAgICB2YXIgbGlzdGVuZXJzSXNBcnIgPSBBcnJheS5p
c0FycmF5KGRpc3BhdGNoTGlzdGVuZXJzKTtcbiAgICB2YXIgbGlzdGVuZXJzTGVuID0gbGlzdGVu
ZXJzSXNBcnIgPyBkaXNwYXRjaExpc3RlbmVycy5sZW5ndGggOiBkaXNwYXRjaExpc3RlbmVycyA/
IDEgOiAwO1xuXG4gICAgdmFyIGluc3RhbmNlc0lzQXJyID0gQXJyYXkuaXNBcnJheShkaXNwYXRj
aEluc3RhbmNlcyk7XG4gICAgdmFyIGluc3RhbmNlc0xlbiA9IGluc3RhbmNlc0lzQXJyID8gZGlz
cGF0Y2hJbnN0YW5jZXMubGVuZ3RoIDogZGlzcGF0Y2hJbnN0YW5jZXMgPyAxIDogMDtcblxuICAg
IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGluc3RhbmNl
c0lzQXJyID09PSBsaXN0ZW5lcnNJc0FyciAmJiBpbnN0YW5jZXNMZW4gPT09IGxpc3RlbmVyc0xl
biwgJ0V2ZW50UGx1Z2luVXRpbHM6IEludmFsaWQgYGV2ZW50YC4nKSA6IHZvaWQgMDtcbiAgfTtc
bn1cblxuLyoqXG4gKiBEaXNwYXRjaCB0aGUgZXZlbnQgdG8gdGhlIGxpc3RlbmVyLlxuICogQHBh
cmFtIHtTeW50aGV0aWNFdmVudH0gZXZlbnQgU3ludGhldGljRXZlbnQgdG8gaGFuZGxlXG4gKiBA
cGFyYW0ge2Jvb2xlYW59IHNpbXVsYXRlZCBJZiB0aGUgZXZlbnQgaXMgc2ltdWxhdGVkIChjaGFu
Z2VzIGV4biBiZWhhdmlvcilcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGxpc3RlbmVyIEFwcGxpY2F0
aW9uLWxldmVsIGNhbGxiYWNrXG4gKiBAcGFyYW0geyp9IGluc3QgSW50ZXJuYWwgY29tcG9uZW50
IGluc3RhbmNlXG4gKi9cbmZ1bmN0aW9uIGV4ZWN1dGVEaXNwYXRjaChldmVudCwgc2ltdWxhdGVk
LCBsaXN0ZW5lciwgaW5zdCkge1xuICB2YXIgdHlwZSA9IGV2ZW50LnR5cGUgfHwgJ3Vua25vd24t
ZXZlbnQnO1xuICBldmVudC5jdXJyZW50VGFyZ2V0ID0gRXZlbnRQbHVnaW5VdGlscy5nZXROb2Rl
RnJvbUluc3RhbmNlKGluc3QpO1xuICBpZiAoc2ltdWxhdGVkKSB7XG4gICAgUmVhY3RFcnJvclV0
aWxzLmludm9rZUd1YXJkZWRDYWxsYmFja1dpdGhDYXRjaCh0eXBlLCBsaXN0ZW5lciwgZXZlbnQp
O1xuICB9IGVsc2Uge1xuICAgIFJlYWN0RXJyb3JVdGlscy5pbnZva2VHdWFyZGVkQ2FsbGJhY2so
dHlwZSwgbGlzdGVuZXIsIGV2ZW50KTtcbiAgfVxuICBldmVudC5jdXJyZW50VGFyZ2V0ID0gbnVs
bDtcbn1cblxuLyoqXG4gKiBTdGFuZGFyZC9zaW1wbGUgaXRlcmF0aW9uIHRocm91Z2ggYW4gZXZl
bnQncyBjb2xsZWN0ZWQgZGlzcGF0Y2hlcy5cbiAqL1xuZnVuY3Rpb24gZXhlY3V0ZURpc3BhdGNo
ZXNJbk9yZGVyKGV2ZW50LCBzaW11bGF0ZWQpIHtcbiAgdmFyIGRpc3BhdGNoTGlzdGVuZXJzID0g
ZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzO1xuICB2YXIgZGlzcGF0Y2hJbnN0YW5jZXMgPSBldmVu
dC5fZGlzcGF0Y2hJbnN0YW5jZXM7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nKSB7XG4gICAgdmFsaWRhdGVFdmVudERpc3BhdGNoZXMoZXZlbnQpO1xuICB9XG4g
IGlmIChBcnJheS5pc0FycmF5KGRpc3BhdGNoTGlzdGVuZXJzKSkge1xuICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgZGlzcGF0Y2hMaXN0ZW5lcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChldmVu
dC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAg
ICAgLy8gTGlzdGVuZXJzIGFuZCBJbnN0YW5jZXMgYXJlIHR3byBwYXJhbGxlbCBhcnJheXMgdGhh
dCBhcmUgYWx3YXlzIGluIHN5bmMuXG4gICAgICBleGVjdXRlRGlzcGF0Y2goZXZlbnQsIHNpbXVs
YXRlZCwgZGlzcGF0Y2hMaXN0ZW5lcnNbaV0sIGRpc3BhdGNoSW5zdGFuY2VzW2ldKTtcbiAgICB9
XG4gIH0gZWxzZSBpZiAoZGlzcGF0Y2hMaXN0ZW5lcnMpIHtcbiAgICBleGVjdXRlRGlzcGF0Y2go
ZXZlbnQsIHNpbXVsYXRlZCwgZGlzcGF0Y2hMaXN0ZW5lcnMsIGRpc3BhdGNoSW5zdGFuY2VzKTtc
biAgfVxuICBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMgPSBudWxsO1xuICBldmVudC5fZGlzcGF0
Y2hJbnN0YW5jZXMgPSBudWxsO1xufVxuXG4vKipcbiAqIFN0YW5kYXJkL3NpbXBsZSBpdGVyYXRp
b24gdGhyb3VnaCBhbiBldmVudCdzIGNvbGxlY3RlZCBkaXNwYXRjaGVzLCBidXQgc3RvcHNcbiAq
IGF0IHRoZSBmaXJzdCBkaXNwYXRjaCBleGVjdXRpb24gcmV0dXJuaW5nIHRydWUsIGFuZCByZXR1
cm5zIHRoYXQgaWQuXG4gKlxuICogQHJldHVybiB7P3N0cmluZ30gaWQgb2YgdGhlIGZpcnN0IGRp
c3BhdGNoIGV4ZWN1dGlvbiB3aG8ncyBsaXN0ZW5lciByZXR1cm5zXG4gKiB0cnVlLCBvciBudWxs
IGlmIG5vIGxpc3RlbmVyIHJldHVybmVkIHRydWUuXG4gKi9cbmZ1bmN0aW9uIGV4ZWN1dGVEaXNw
YXRjaGVzSW5PcmRlclN0b3BBdFRydWVJbXBsKGV2ZW50KSB7XG4gIHZhciBkaXNwYXRjaExpc3Rl
bmVycyA9IGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycztcbiAgdmFyIGRpc3BhdGNoSW5zdGFuY2Vz
ID0gZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2VzO1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJykge1xuICAgIHZhbGlkYXRlRXZlbnREaXNwYXRjaGVzKGV2ZW50KTtc
biAgfVxuICBpZiAoQXJyYXkuaXNBcnJheShkaXNwYXRjaExpc3RlbmVycykpIHtcbiAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGRpc3BhdGNoTGlzdGVuZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBp
ZiAoZXZlbnQuaXNQcm9wYWdhdGlvblN0b3BwZWQoKSkge1xuICAgICAgICBicmVhaztcbiAgICAg
IH1cbiAgICAgIC8vIExpc3RlbmVycyBhbmQgSW5zdGFuY2VzIGFyZSB0d28gcGFyYWxsZWwgYXJy
YXlzIHRoYXQgYXJlIGFsd2F5cyBpbiBzeW5jLlxuICAgICAgaWYgKGRpc3BhdGNoTGlzdGVuZXJz
W2ldKGV2ZW50LCBkaXNwYXRjaEluc3RhbmNlc1tpXSkpIHtcbiAgICAgICAgcmV0dXJuIGRpc3Bh
dGNoSW5zdGFuY2VzW2ldO1xuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIGlmIChkaXNwYXRjaExp
c3RlbmVycykge1xuICAgIGlmIChkaXNwYXRjaExpc3RlbmVycyhldmVudCwgZGlzcGF0Y2hJbnN0
YW5jZXMpKSB7XG4gICAgICByZXR1cm4gZGlzcGF0Y2hJbnN0YW5jZXM7XG4gICAgfVxuICB9XG4g
IHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIEBzZWUgZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVy
U3RvcEF0VHJ1ZUltcGxcbiAqL1xuZnVuY3Rpb24gZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3Rv
cEF0VHJ1ZShldmVudCkge1xuICB2YXIgcmV0ID0gZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyU3Rv
cEF0VHJ1ZUltcGwoZXZlbnQpO1xuICBldmVudC5fZGlzcGF0Y2hJbnN0YW5jZXMgPSBudWxsO1xu
ICBldmVudC5fZGlzcGF0Y2hMaXN0ZW5lcnMgPSBudWxsO1xuICByZXR1cm4gcmV0O1xufVxuXG4v
KipcbiAqIEV4ZWN1dGlvbiBvZiBhIFwiZGlyZWN0XCIgZGlzcGF0Y2ggLSB0aGVyZSBtdXN0IGJl
IGF0IG1vc3Qgb25lIGRpc3BhdGNoXG4gKiBhY2N1bXVsYXRlZCBvbiB0aGUgZXZlbnQgb3IgaXQg
aXMgY29uc2lkZXJlZCBhbiBlcnJvci4gSXQgZG9lc24ndCByZWFsbHkgbWFrZVxuICogc2Vuc2Ug
Zm9yIGFuIGV2ZW50IHdpdGggbXVsdGlwbGUgZGlzcGF0Y2hlcyAoYnViYmxlZCkgdG8ga2VlcCB0
cmFjayBvZiB0aGVcbiAqIHJldHVybiB2YWx1ZXMgYXQgZWFjaCBkaXNwYXRjaCBleGVjdXRpb24s
IGJ1dCBpdCBkb2VzIHRlbmQgdG8gbWFrZSBzZW5zZSB3aGVuXG4gKiBkZWFsaW5nIHdpdGggXCJk
aXJlY3RcIiBkaXNwYXRjaGVzLlxuICpcbiAqIEByZXR1cm4geyp9IFRoZSByZXR1cm4gdmFsdWUg
b2YgZXhlY3V0aW5nIHRoZSBzaW5nbGUgZGlzcGF0Y2guXG4gKi9cbmZ1bmN0aW9uIGV4ZWN1dGVE
aXJlY3REaXNwYXRjaChldmVudCkge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJykge1xuICAgIHZhbGlkYXRlRXZlbnREaXNwYXRjaGVzKGV2ZW50KTtcbiAgfVxu
ICB2YXIgZGlzcGF0Y2hMaXN0ZW5lciA9IGV2ZW50Ll9kaXNwYXRjaExpc3RlbmVycztcbiAgdmFy
IGRpc3BhdGNoSW5zdGFuY2UgPSBldmVudC5fZGlzcGF0Y2hJbnN0YW5jZXM7XG4gICEhQXJyYXku
aXNBcnJheShkaXNwYXRjaExpc3RlbmVyKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdleGVjdXRlRGlyZWN0RGlzcGF0Y2goLi4uKTog
SW52YWxpZCBgZXZlbnRgLicpIDogX3Byb2RJbnZhcmlhbnQoJzEwMycpIDogdm9pZCAwO1xuICBl
dmVudC5jdXJyZW50VGFyZ2V0ID0gZGlzcGF0Y2hMaXN0ZW5lciA/IEV2ZW50UGx1Z2luVXRpbHMu
Z2V0Tm9kZUZyb21JbnN0YW5jZShkaXNwYXRjaEluc3RhbmNlKSA6IG51bGw7XG4gIHZhciByZXMg
PSBkaXNwYXRjaExpc3RlbmVyID8gZGlzcGF0Y2hMaXN0ZW5lcihldmVudCkgOiBudWxsO1xuICBl
dmVudC5jdXJyZW50VGFyZ2V0ID0gbnVsbDtcbiAgZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzID0g
bnVsbDtcbiAgZXZlbnQuX2Rpc3BhdGNoSW5zdGFuY2VzID0gbnVsbDtcbiAgcmV0dXJuIHJlcztc
bn1cblxuLyoqXG4gKiBAcGFyYW0ge1N5bnRoZXRpY0V2ZW50fSBldmVudFxuICogQHJldHVybiB7
Ym9vbGVhbn0gVHJ1ZSBpZmYgbnVtYmVyIG9mIGRpc3BhdGNoZXMgYWNjdW11bGF0ZWQgaXMgZ3Jl
YXRlciB0aGFuIDAuXG4gKi9cbmZ1bmN0aW9uIGhhc0Rpc3BhdGNoZXMoZXZlbnQpIHtcbiAgcmV0
dXJuICEhZXZlbnQuX2Rpc3BhdGNoTGlzdGVuZXJzO1xufVxuXG4vKipcbiAqIEdlbmVyYWwgdXRp
bGl0aWVzIHRoYXQgYXJlIHVzZWZ1bCBpbiBjcmVhdGluZyBjdXN0b20gRXZlbnQgUGx1Z2lucy5c
biAqL1xudmFyIEV2ZW50UGx1Z2luVXRpbHMgPSB7XG4gIGlzRW5kaXNoOiBpc0VuZGlzaCxcbiAg
aXNNb3ZlaXNoOiBpc01vdmVpc2gsXG4gIGlzU3RhcnRpc2g6IGlzU3RhcnRpc2gsXG5cbiAgZXhl
Y3V0ZURpcmVjdERpc3BhdGNoOiBleGVjdXRlRGlyZWN0RGlzcGF0Y2gsXG4gIGV4ZWN1dGVEaXNw
YXRjaGVzSW5PcmRlcjogZXhlY3V0ZURpc3BhdGNoZXNJbk9yZGVyLFxuICBleGVjdXRlRGlzcGF0
Y2hlc0luT3JkZXJTdG9wQXRUcnVlOiBleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXJTdG9wQXRUcnVl
LFxuICBoYXNEaXNwYXRjaGVzOiBoYXNEaXNwYXRjaGVzLFxuXG4gIGdldEluc3RhbmNlRnJvbU5v
ZGU6IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgcmV0dXJuIENvbXBvbmVudFRyZWUuZ2V0SW5zdGFu
Y2VGcm9tTm9kZShub2RlKTtcbiAgfSxcbiAgZ2V0Tm9kZUZyb21JbnN0YW5jZTogZnVuY3Rpb24g
KG5vZGUpIHtcbiAgICByZXR1cm4gQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKG5v
ZGUpO1xuICB9LFxuICBpc0FuY2VzdG9yOiBmdW5jdGlvbiAoYSwgYikge1xuICAgIHJldHVybiBU
cmVlVHJhdmVyc2FsLmlzQW5jZXN0b3IoYSwgYik7XG4gIH0sXG4gIGdldExvd2VzdENvbW1vbkFu
Y2VzdG9yOiBmdW5jdGlvbiAoYSwgYikge1xuICAgIHJldHVybiBUcmVlVHJhdmVyc2FsLmdldExv
d2VzdENvbW1vbkFuY2VzdG9yKGEsIGIpO1xuICB9LFxuICBnZXRQYXJlbnRJbnN0YW5jZTogZnVu
Y3Rpb24gKGluc3QpIHtcbiAgICByZXR1cm4gVHJlZVRyYXZlcnNhbC5nZXRQYXJlbnRJbnN0YW5j
ZShpbnN0KTtcbiAgfSxcbiAgdHJhdmVyc2VUd29QaGFzZTogZnVuY3Rpb24gKHRhcmdldCwgZm4s
IGFyZykge1xuICAgIHJldHVybiBUcmVlVHJhdmVyc2FsLnRyYXZlcnNlVHdvUGhhc2UodGFyZ2V0
LCBmbiwgYXJnKTtcbiAgfSxcbiAgdHJhdmVyc2VFbnRlckxlYXZlOiBmdW5jdGlvbiAoZnJvbSwg
dG8sIGZuLCBhcmdGcm9tLCBhcmdUbykge1xuICAgIHJldHVybiBUcmVlVHJhdmVyc2FsLnRyYXZl
cnNlRW50ZXJMZWF2ZShmcm9tLCB0bywgZm4sIGFyZ0Zyb20sIGFyZ1RvKTtcbiAgfSxcblxuICBp
bmplY3Rpb246IGluamVjdGlvblxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBFdmVudFBsdWdpblV0
aWxzO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+
L3JlYWN0LWRvbS9saWIvRXZlbnRQbHVnaW5VdGlscy5qc1xuICoqIG1vZHVsZSBpZCA9IDM3XG4g
KiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4g
KiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogRXNjYXBlIGFuZCB3cmFwIGtleSBz
byBpdCBpcyBzYWZlIHRvIHVzZSBhcyBhIHJlYWN0aWRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30g
a2V5IHRvIGJlIGVzY2FwZWQuXG4gKiBAcmV0dXJuIHtzdHJpbmd9IHRoZSBlc2NhcGVkIGtleS5c
biAqL1xuXG5mdW5jdGlvbiBlc2NhcGUoa2V5KSB7XG4gIHZhciBlc2NhcGVSZWdleCA9IC9bPTpd
L2c7XG4gIHZhciBlc2NhcGVyTG9va3VwID0ge1xuICAgICc9JzogJz0wJyxcbiAgICAnOic6ICc9
MidcbiAgfTtcbiAgdmFyIGVzY2FwZWRTdHJpbmcgPSAoJycgKyBrZXkpLnJlcGxhY2UoZXNjYXBl
UmVnZXgsIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgIHJldHVybiBlc2NhcGVyTG9va3VwW21hdGNo
XTtcbiAgfSk7XG5cbiAgcmV0dXJuICckJyArIGVzY2FwZWRTdHJpbmc7XG59XG5cbi8qKlxuICog
VW5lc2NhcGUgYW5kIHVud3JhcCBrZXkgZm9yIGh1bWFuLXJlYWRhYmxlIGRpc3BsYXlcbiAqXG4g
KiBAcGFyYW0ge3N0cmluZ30ga2V5IHRvIHVuZXNjYXBlLlxuICogQHJldHVybiB7c3RyaW5nfSB0
aGUgdW5lc2NhcGVkIGtleS5cbiAqL1xuZnVuY3Rpb24gdW5lc2NhcGUoa2V5KSB7XG4gIHZhciB1
bmVzY2FwZVJlZ2V4ID0gLyg9MHw9MikvZztcbiAgdmFyIHVuZXNjYXBlckxvb2t1cCA9IHtcbiAg
ICAnPTAnOiAnPScsXG4gICAgJz0yJzogJzonXG4gIH07XG4gIHZhciBrZXlTdWJzdHJpbmcgPSBr
ZXlbMF0gPT09ICcuJyAmJiBrZXlbMV0gPT09ICckJyA/IGtleS5zdWJzdHJpbmcoMikgOiBrZXku
c3Vic3RyaW5nKDEpO1xuXG4gIHJldHVybiAoJycgKyBrZXlTdWJzdHJpbmcpLnJlcGxhY2UodW5l
c2NhcGVSZWdleCwgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgcmV0dXJuIHVuZXNjYXBlckxvb2t1
cFttYXRjaF07XG4gIH0pO1xufVxuXG52YXIgS2V5RXNjYXBlVXRpbHMgPSB7XG4gIGVzY2FwZTog
ZXNjYXBlLFxuICB1bmVzY2FwZTogdW5lc2NhcGVcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gS2V5
RXNjYXBlVXRpbHM7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJc
biAqKiAuL34vcmVhY3QtZG9tL2xpYi9LZXlFc2NhcGVVdGlscy5qc1xuICoqIG1vZHVsZSBpZCA9
IDM4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEz
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
biAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJl
KCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSBy
ZXF1aXJlKCcuL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG52YXIgcHJvcFR5cGVzRmFjdG9yeSA9
IHJlcXVpcmUoJ3Byb3AtdHlwZXMvZmFjdG9yeScpO1xuXG52YXIgUmVhY3QgPSByZXF1aXJlKCdy
ZWFjdC9saWIvUmVhY3QnKTtcbnZhciBQcm9wVHlwZXMgPSBwcm9wVHlwZXNGYWN0b3J5KFJlYWN0
LmlzVmFsaWRFbGVtZW50KTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2lu
dmFyaWFudCcpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5c
bnZhciBoYXNSZWFkT25seVZhbHVlID0ge1xuICBidXR0b246IHRydWUsXG4gIGNoZWNrYm94OiB0
cnVlLFxuICBpbWFnZTogdHJ1ZSxcbiAgaGlkZGVuOiB0cnVlLFxuICByYWRpbzogdHJ1ZSxcbiAg
cmVzZXQ6IHRydWUsXG4gIHN1Ym1pdDogdHJ1ZVxufTtcblxuZnVuY3Rpb24gX2Fzc2VydFNpbmds
ZUxpbmsoaW5wdXRQcm9wcykge1xuICAhKGlucHV0UHJvcHMuY2hlY2tlZExpbmsgPT0gbnVsbCB8
fCBpbnB1dFByb3BzLnZhbHVlTGluayA9PSBudWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW5ub3QgcHJvdmlkZSBhIGNoZWNr
ZWRMaW5rIGFuZCBhIHZhbHVlTGluay4gSWYgeW91IHdhbnQgdG8gdXNlIGNoZWNrZWRMaW5rLCB5
b3UgcHJvYmFibHkgZG9uXFwndCB3YW50IHRvIHVzZSB2YWx1ZUxpbmsgYW5kIHZpY2UgdmVyc2Eu
JykgOiBfcHJvZEludmFyaWFudCgnODcnKSA6IHZvaWQgMDtcbn1cbmZ1bmN0aW9uIF9hc3NlcnRW
YWx1ZUxpbmsoaW5wdXRQcm9wcykge1xuICBfYXNzZXJ0U2luZ2xlTGluayhpbnB1dFByb3BzKTtc
biAgIShpbnB1dFByb3BzLnZhbHVlID09IG51bGwgJiYgaW5wdXRQcm9wcy5vbkNoYW5nZSA9PSBu
dWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQo
ZmFsc2UsICdDYW5ub3QgcHJvdmlkZSBhIHZhbHVlTGluayBhbmQgYSB2YWx1ZSBvciBvbkNoYW5n
ZSBldmVudC4gSWYgeW91IHdhbnQgdG8gdXNlIHZhbHVlIG9yIG9uQ2hhbmdlLCB5b3UgcHJvYmFi
bHkgZG9uXFwndCB3YW50IHRvIHVzZSB2YWx1ZUxpbmsuJykgOiBfcHJvZEludmFyaWFudCgnODgn
KSA6IHZvaWQgMDtcbn1cblxuZnVuY3Rpb24gX2Fzc2VydENoZWNrZWRMaW5rKGlucHV0UHJvcHMp
IHtcbiAgX2Fzc2VydFNpbmdsZUxpbmsoaW5wdXRQcm9wcyk7XG4gICEoaW5wdXRQcm9wcy5jaGVj
a2VkID09IG51bGwgJiYgaW5wdXRQcm9wcy5vbkNoYW5nZSA9PSBudWxsKSA/IHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdDYW5ub3QgcHJv
dmlkZSBhIGNoZWNrZWRMaW5rIGFuZCBhIGNoZWNrZWQgcHJvcGVydHkgb3Igb25DaGFuZ2UgZXZl
bnQuIElmIHlvdSB3YW50IHRvIHVzZSBjaGVja2VkIG9yIG9uQ2hhbmdlLCB5b3UgcHJvYmFibHkg
ZG9uXFwndCB3YW50IHRvIHVzZSBjaGVja2VkTGluaycpIDogX3Byb2RJbnZhcmlhbnQoJzg5Jykg
OiB2b2lkIDA7XG59XG5cbnZhciBwcm9wVHlwZXMgPSB7XG4gIHZhbHVlOiBmdW5jdGlvbiAocHJv
cHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lKSB7XG4gICAgaWYgKCFwcm9wc1twcm9wTmFtZV0g
fHwgaGFzUmVhZE9ubHlWYWx1ZVtwcm9wcy50eXBlXSB8fCBwcm9wcy5vbkNoYW5nZSB8fCBwcm9w
cy5yZWFkT25seSB8fCBwcm9wcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAg
fVxuICAgIHJldHVybiBuZXcgRXJyb3IoJ1lvdSBwcm92aWRlZCBhIGB2YWx1ZWAgcHJvcCB0byBh
IGZvcm0gZmllbGQgd2l0aG91dCBhbiAnICsgJ2BvbkNoYW5nZWAgaGFuZGxlci4gVGhpcyB3aWxs
IHJlbmRlciBhIHJlYWQtb25seSBmaWVsZC4gSWYgJyArICd0aGUgZmllbGQgc2hvdWxkIGJlIG11
dGFibGUgdXNlIGBkZWZhdWx0VmFsdWVgLiBPdGhlcndpc2UsICcgKyAnc2V0IGVpdGhlciBgb25D
aGFuZ2VgIG9yIGByZWFkT25seWAuJyk7XG4gIH0sXG4gIGNoZWNrZWQ6IGZ1bmN0aW9uIChwcm9w
cywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUpIHtcbiAgICBpZiAoIXByb3BzW3Byb3BOYW1lXSB8
fCBwcm9wcy5vbkNoYW5nZSB8fCBwcm9wcy5yZWFkT25seSB8fCBwcm9wcy5kaXNhYmxlZCkge1xu
ICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBuZXcgRXJyb3IoJ1lvdSBwcm92
aWRlZCBhIGBjaGVja2VkYCBwcm9wIHRvIGEgZm9ybSBmaWVsZCB3aXRob3V0IGFuICcgKyAnYG9u
Q2hhbmdlYCBoYW5kbGVyLiBUaGlzIHdpbGwgcmVuZGVyIGEgcmVhZC1vbmx5IGZpZWxkLiBJZiAn
ICsgJ3RoZSBmaWVsZCBzaG91bGQgYmUgbXV0YWJsZSB1c2UgYGRlZmF1bHRDaGVja2VkYC4gT3Ro
ZXJ3aXNlLCAnICsgJ3NldCBlaXRoZXIgYG9uQ2hhbmdlYCBvciBgcmVhZE9ubHlgLicpO1xuICB9
LFxuICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmNcbn07XG5cbnZhciBsb2dnZWRUeXBlRmFpbHVy
ZXMgPSB7fTtcbmZ1bmN0aW9uIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShvd25lcikge1xu
ICBpZiAob3duZXIpIHtcbiAgICB2YXIgbmFtZSA9IG93bmVyLmdldE5hbWUoKTtcbiAgICBpZiAo
bmFtZSkge1xuICAgICAgcmV0dXJuICcgQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCcgKyBu
YW1lICsgJ2AuJztcbiAgICB9XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG4vKipcbiAqIFByb3Zp
ZGUgYSBsaW5rZWQgYHZhbHVlYCBhdHRyaWJ1dGUgZm9yIGNvbnRyb2xsZWQgZm9ybXMuIFlvdSBz
aG91bGQgbm90IHVzZVxuICogdGhpcyBvdXRzaWRlIG9mIHRoZSBSZWFjdERPTSBjb250cm9sbGVk
IGZvcm0gY29tcG9uZW50cy5cbiAqL1xudmFyIExpbmtlZFZhbHVlVXRpbHMgPSB7XG4gIGNoZWNr
UHJvcFR5cGVzOiBmdW5jdGlvbiAodGFnTmFtZSwgcHJvcHMsIG93bmVyKSB7XG4gICAgZm9yICh2
YXIgcHJvcE5hbWUgaW4gcHJvcFR5cGVzKSB7XG4gICAgICBpZiAocHJvcFR5cGVzLmhhc093blBy
b3BlcnR5KHByb3BOYW1lKSkge1xuICAgICAgICB2YXIgZXJyb3IgPSBwcm9wVHlwZXNbcHJvcE5h
bWVdKHByb3BzLCBwcm9wTmFtZSwgdGFnTmFtZSwgJ3Byb3AnLCBudWxsLCBSZWFjdFByb3BUeXBl
c1NlY3JldCk7XG4gICAgICB9XG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciAmJiAh
KGVycm9yLm1lc3NhZ2UgaW4gbG9nZ2VkVHlwZUZhaWx1cmVzKSkge1xuICAgICAgICAvLyBPbmx5
IG1vbml0b3IgdGhpcyBmYWlsdXJlIG9uY2UgYmVjYXVzZSB0aGVyZSB0ZW5kcyB0byBiZSBhIGxv
dCBvZiB0aGVcbiAgICAgICAgLy8gc2FtZSBlcnJvci5cbiAgICAgICAgbG9nZ2VkVHlwZUZhaWx1
cmVzW2Vycm9yLm1lc3NhZ2VdID0gdHJ1ZTtcblxuICAgICAgICB2YXIgYWRkZW5kdW0gPSBnZXRE
ZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0ob3duZXIpO1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ0ZhaWxlZCBmb3JtIHByb3BU
eXBlOiAlcyVzJywgZXJyb3IubWVzc2FnZSwgYWRkZW5kdW0pIDogdm9pZCAwO1xuICAgICAgfVxu
ICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogQHBhcmFtIHtvYmplY3R9IGlucHV0UHJvcHMgUHJv
cHMgZm9yIGZvcm0gY29tcG9uZW50XG4gICAqIEByZXR1cm4geyp9IGN1cnJlbnQgdmFsdWUgb2Yg
dGhlIGlucHV0IGVpdGhlciBmcm9tIHZhbHVlIHByb3Agb3IgbGluay5cbiAgICovXG4gIGdldFZh
bHVlOiBmdW5jdGlvbiAoaW5wdXRQcm9wcykge1xuICAgIGlmIChpbnB1dFByb3BzLnZhbHVlTGlu
aykge1xuICAgICAgX2Fzc2VydFZhbHVlTGluayhpbnB1dFByb3BzKTtcbiAgICAgIHJldHVybiBp
bnB1dFByb3BzLnZhbHVlTGluay52YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGlucHV0UHJvcHMu
dmFsdWU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBpbnB1dFByb3BzIFBy
b3BzIGZvciBmb3JtIGNvbXBvbmVudFxuICAgKiBAcmV0dXJuIHsqfSBjdXJyZW50IGNoZWNrZWQg
c3RhdHVzIG9mIHRoZSBpbnB1dCBlaXRoZXIgZnJvbSBjaGVja2VkIHByb3BcbiAgICogICAgICAg
ICAgICAgb3IgbGluay5cbiAgICovXG4gIGdldENoZWNrZWQ6IGZ1bmN0aW9uIChpbnB1dFByb3Bz
KSB7XG4gICAgaWYgKGlucHV0UHJvcHMuY2hlY2tlZExpbmspIHtcbiAgICAgIF9hc3NlcnRDaGVj
a2VkTGluayhpbnB1dFByb3BzKTtcbiAgICAgIHJldHVybiBpbnB1dFByb3BzLmNoZWNrZWRMaW5r
LnZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gaW5wdXRQcm9wcy5jaGVja2VkO1xuICB9LFxuXG4g
IC8qKlxuICAgKiBAcGFyYW0ge29iamVjdH0gaW5wdXRQcm9wcyBQcm9wcyBmb3IgZm9ybSBjb21w
b25lbnRcbiAgICogQHBhcmFtIHtTeW50aGV0aWNFdmVudH0gZXZlbnQgY2hhbmdlIGV2ZW50IHRv
IGhhbmRsZVxuICAgKi9cbiAgZXhlY3V0ZU9uQ2hhbmdlOiBmdW5jdGlvbiAoaW5wdXRQcm9wcywg
ZXZlbnQpIHtcbiAgICBpZiAoaW5wdXRQcm9wcy52YWx1ZUxpbmspIHtcbiAgICAgIF9hc3NlcnRW
YWx1ZUxpbmsoaW5wdXRQcm9wcyk7XG4gICAgICByZXR1cm4gaW5wdXRQcm9wcy52YWx1ZUxpbmsu
cmVxdWVzdENoYW5nZShldmVudC50YXJnZXQudmFsdWUpO1xuICAgIH0gZWxzZSBpZiAoaW5wdXRQ
cm9wcy5jaGVja2VkTGluaykge1xuICAgICAgX2Fzc2VydENoZWNrZWRMaW5rKGlucHV0UHJvcHMp
O1xuICAgICAgcmV0dXJuIGlucHV0UHJvcHMuY2hlY2tlZExpbmsucmVxdWVzdENoYW5nZShldmVu
dC50YXJnZXQuY2hlY2tlZCk7XG4gICAgfSBlbHNlIGlmIChpbnB1dFByb3BzLm9uQ2hhbmdlKSB7
XG4gICAgICByZXR1cm4gaW5wdXRQcm9wcy5vbkNoYW5nZS5jYWxsKHVuZGVmaW5lZCwgZXZlbnQp
O1xuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBMaW5rZWRWYWx1ZVV0aWxzO1xu
XG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0
LWRvbS9saWIvTGlua2VkVmFsdWVVdGlscy5qc1xuICoqIG1vZHVsZSBpZCA9IDM5XG4gKiogbW9k
dWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZh
Y2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNl
IGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRo
ZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0
cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3Vu
ZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAq
L1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVh
Y3RQcm9kSW52YXJpYW50Jyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9p
bnZhcmlhbnQnKTtcblxudmFyIGluamVjdGVkID0gZmFsc2U7XG5cbnZhciBSZWFjdENvbXBvbmVu
dEVudmlyb25tZW50ID0ge1xuICAvKipcbiAgICogT3B0aW9uYWxseSBpbmplY3RhYmxlIGhvb2sg
Zm9yIHN3YXBwaW5nIG91dCBtb3VudCBpbWFnZXMgaW4gdGhlIG1pZGRsZSBvZlxuICAgKiB0aGUg
dHJlZS5cbiAgICovXG4gIHJlcGxhY2VOb2RlV2l0aE1hcmt1cDogbnVsbCxcblxuICAvKipcbiAg
ICogT3B0aW9uYWxseSBpbmplY3RhYmxlIGhvb2sgZm9yIHByb2Nlc3NpbmcgYSBxdWV1ZSBvZiBj
aGlsZCB1cGRhdGVzLiBXaWxsXG4gICAqIGxhdGVyIG1vdmUgaW50byBNdWx0aUNoaWxkQ29tcG9u
ZW50cy5cbiAgICovXG4gIHByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6IG51bGwsXG5cbiAgaW5qZWN0
aW9uOiB7XG4gICAgaW5qZWN0RW52aXJvbm1lbnQ6IGZ1bmN0aW9uIChlbnZpcm9ubWVudCkge1xu
ICAgICAgISFpbmplY3RlZCA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
PyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudDogaW5qZWN0RW52aXJv
bm1lbnQoKSBjYW4gb25seSBiZSBjYWxsZWQgb25jZS4nKSA6IF9wcm9kSW52YXJpYW50KCcxMDQn
KSA6IHZvaWQgMDtcbiAgICAgIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQucmVwbGFjZU5vZGVX
aXRoTWFya3VwID0gZW52aXJvbm1lbnQucmVwbGFjZU5vZGVXaXRoTWFya3VwO1xuICAgICAgUmVh
Y3RDb21wb25lbnRFbnZpcm9ubWVudC5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVzID0gZW52aXJvbm1l
bnQucHJvY2Vzc0NoaWxkcmVuVXBkYXRlcztcbiAgICAgIGluamVjdGVkID0gdHJ1ZTtcbiAgICB9
XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RDb21wb25lbnRFbnZpcm9ubWVudDtc
blxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFj
dC1kb20vbGliL1JlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQuanNcbiAqKiBtb2R1bGUgaWQgPSA0
MFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1w
cmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBU
aGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBm
b3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhp
cyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBj
YW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4g
KlxuICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgY2F1Z2h0RXJyb3IgPSBudWxsO1xu
XG4vKipcbiAqIENhbGwgYSBmdW5jdGlvbiB3aGlsZSBndWFyZGluZyBhZ2FpbnN0IGVycm9ycyB0
aGF0IGhhcHBlbnMgd2l0aGluIGl0LlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lIG9mIHRo
ZSBndWFyZCB0byB1c2UgZm9yIGxvZ2dpbmcgb3IgZGVidWdnaW5nXG4gKiBAcGFyYW0ge0Z1bmN0
aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byBpbnZva2VcbiAqIEBwYXJhbSB7Kn0gYSBGaXJzdCBh
cmd1bWVudFxuICogQHBhcmFtIHsqfSBiIFNlY29uZCBhcmd1bWVudFxuICovXG5mdW5jdGlvbiBp
bnZva2VHdWFyZGVkQ2FsbGJhY2sobmFtZSwgZnVuYywgYSkge1xuICB0cnkge1xuICAgIGZ1bmMo
YSk7XG4gIH0gY2F0Y2ggKHgpIHtcbiAgICBpZiAoY2F1Z2h0RXJyb3IgPT09IG51bGwpIHtcbiAg
ICAgIGNhdWdodEVycm9yID0geDtcbiAgICB9XG4gIH1cbn1cblxudmFyIFJlYWN0RXJyb3JVdGls
cyA9IHtcbiAgaW52b2tlR3VhcmRlZENhbGxiYWNrOiBpbnZva2VHdWFyZGVkQ2FsbGJhY2ssXG5c
biAgLyoqXG4gICAqIEludm9rZWQgYnkgUmVhY3RUZXN0VXRpbHMuU2ltdWxhdGUgc28gdGhhdCBh
bnkgZXJyb3JzIHRocm93biBieSB0aGUgZXZlbnRcbiAgICogaGFuZGxlciBhcmUgc3VyZSB0byBi
ZSByZXRocm93biBieSByZXRocm93Q2F1Z2h0RXJyb3IuXG4gICAqL1xuICBpbnZva2VHdWFyZGVk
Q2FsbGJhY2tXaXRoQ2F0Y2g6IGludm9rZUd1YXJkZWRDYWxsYmFjayxcblxuICAvKipcbiAgICog
RHVyaW5nIGV4ZWN1dGlvbiBvZiBndWFyZGVkIGZ1bmN0aW9ucyB3ZSB3aWxsIGNhcHR1cmUgdGhl
IGZpcnN0IGVycm9yIHdoaWNoXG4gICAqIHdlIHdpbGwgcmV0aHJvdyB0byBiZSBoYW5kbGVkIGJ5
IHRoZSB0b3AgbGV2ZWwgZXJyb3IgaGFuZGxlci5cbiAgICovXG4gIHJldGhyb3dDYXVnaHRFcnJv
cjogZnVuY3Rpb24gKCkge1xuICAgIGlmIChjYXVnaHRFcnJvcikge1xuICAgICAgdmFyIGVycm9y
ID0gY2F1Z2h0RXJyb3I7XG4gICAgICBjYXVnaHRFcnJvciA9IG51bGw7XG4gICAgICB0aHJvdyBl
cnJvcjtcbiAgICB9XG4gIH1cbn07XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nKSB7XG4gIC8qKlxuICAgKiBUbyBoZWxwIGRldmVsb3BtZW50IHdlIGNhbiBnZXQg
YmV0dGVyIGRldnRvb2xzIGludGVncmF0aW9uIGJ5IHNpbXVsYXRpbmcgYVxuICAgKiByZWFsIGJy
b3dzZXIgZXZlbnQuXG4gICAqL1xuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcg
JiYgdHlwZW9mIHdpbmRvdy5kaXNwYXRjaEV2ZW50ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBk
b2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIGRvY3VtZW50LmNyZWF0ZUV2ZW50ID09
PSAnZnVuY3Rpb24nKSB7XG4gICAgdmFyIGZha2VOb2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgncmVhY3QnKTtcbiAgICBSZWFjdEVycm9yVXRpbHMuaW52b2tlR3VhcmRlZENhbGxiYWNrID0g
ZnVuY3Rpb24gKG5hbWUsIGZ1bmMsIGEpIHtcbiAgICAgIHZhciBib3VuZEZ1bmMgPSBmdW5jLmJp
bmQobnVsbCwgYSk7XG4gICAgICB2YXIgZXZ0VHlwZSA9ICdyZWFjdC0nICsgbmFtZTtcbiAgICAg
IGZha2VOb2RlLmFkZEV2ZW50TGlzdGVuZXIoZXZ0VHlwZSwgYm91bmRGdW5jLCBmYWxzZSk7XG4g
ICAgICB2YXIgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7XG4gICAgICBldnQu
aW5pdEV2ZW50KGV2dFR5cGUsIGZhbHNlLCBmYWxzZSk7XG4gICAgICBmYWtlTm9kZS5kaXNwYXRj
aEV2ZW50KGV2dCk7XG4gICAgICBmYWtlTm9kZS5yZW1vdmVFdmVudExpc3RlbmVyKGV2dFR5cGUs
IGJvdW5kRnVuYywgZmFsc2UpO1xuICAgIH07XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBS
ZWFjdEVycm9yVXRpbHM7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09U
RVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdEVycm9yVXRpbHMuanNcbiAqKiBtb2R1bGUg
aWQgPSA0MVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQg
MjAxNS1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAq
XG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVx
dWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFyIFJlYWN0Q3VycmVudE93bmVyID0g
cmVxdWlyZSgncmVhY3QvbGliL1JlYWN0Q3VycmVudE93bmVyJyk7XG52YXIgUmVhY3RJbnN0YW5j
ZU1hcCA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0YW5jZU1hcCcpO1xudmFyIFJlYWN0SW5zdHJ1bWVu
dGF0aW9uID0gcmVxdWlyZSgnLi9SZWFjdEluc3RydW1lbnRhdGlvbicpO1xudmFyIFJlYWN0VXBk
YXRlcyA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVzJyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1
aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9s
aWIvd2FybmluZycpO1xuXG5mdW5jdGlvbiBlbnF1ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2Up
IHtcbiAgUmVhY3RVcGRhdGVzLmVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7XG59XG5c
bmZ1bmN0aW9uIGZvcm1hdFVuZXhwZWN0ZWRBcmd1bWVudChhcmcpIHtcbiAgdmFyIHR5cGUgPSB0
eXBlb2YgYXJnO1xuICBpZiAodHlwZSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gdHlwZTtc
biAgfVxuICB2YXIgZGlzcGxheU5hbWUgPSBhcmcuY29uc3RydWN0b3IgJiYgYXJnLmNvbnN0cnVj
dG9yLm5hbWUgfHwgdHlwZTtcbiAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhhcmcpO1xuICBpZiAo
a2V5cy5sZW5ndGggPiAwICYmIGtleXMubGVuZ3RoIDwgMjApIHtcbiAgICByZXR1cm4gZGlzcGxh
eU5hbWUgKyAnIChrZXlzOiAnICsga2V5cy5qb2luKCcsICcpICsgJyknO1xuICB9XG4gIHJldHVy
biBkaXNwbGF5TmFtZTtcbn1cblxuZnVuY3Rpb24gZ2V0SW50ZXJuYWxJbnN0YW5jZVJlYWR5Rm9y
VXBkYXRlKHB1YmxpY0luc3RhbmNlLCBjYWxsZXJOYW1lKSB7XG4gIHZhciBpbnRlcm5hbEluc3Rh
bmNlID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQocHVibGljSW5zdGFuY2UpO1xuICBpZiAoIWludGVy
bmFsSW5zdGFuY2UpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJykge1xuICAgICAgdmFyIGN0b3IgPSBwdWJsaWNJbnN0YW5jZS5jb25zdHJ1Y3RvcjtcbiAg
ICAgIC8vIE9ubHkgd2FybiB3aGVuIHdlIGhhdmUgYSBjYWxsZXJOYW1lLiBPdGhlcndpc2Ugd2Ug
c2hvdWxkIGJlIHNpbGVudC5cbiAgICAgIC8vIFdlJ3JlIHByb2JhYmx5IGNhbGxpbmcgZnJvbSBl
bnF1ZXVlQ2FsbGJhY2suIFdlIGRvbid0IHdhbnQgdG8gd2FyblxuICAgICAgLy8gdGhlcmUgYmVj
YXVzZSB3ZSBhbHJlYWR5IHdhcm5lZCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgbGlmZWN5Y2xlIG1l
dGhvZC5cbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKCFjYWxsZXJOYW1lLCAnJXMoLi4uKTogQ2FuIG9ubHkgdXBkYXRlIGEgbW91bnRlZCBvciBt
b3VudGluZyBjb21wb25lbnQuICcgKyAnVGhpcyB1c3VhbGx5IG1lYW5zIHlvdSBjYWxsZWQgJXMo
KSBvbiBhbiB1bm1vdW50ZWQgY29tcG9uZW50LiAnICsgJ1RoaXMgaXMgYSBuby1vcC4gUGxlYXNl
IGNoZWNrIHRoZSBjb2RlIGZvciB0aGUgJXMgY29tcG9uZW50LicsIGNhbGxlck5hbWUsIGNhbGxl
ck5hbWUsIGN0b3IgJiYgKGN0b3IuZGlzcGxheU5hbWUgfHwgY3Rvci5uYW1lKSB8fCAnUmVhY3RD
bGFzcycpIDogdm9pZCAwO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmIChw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoUmVhY3RDdXJyZW50T3duZXIuY3Vy
cmVudCA9PSBudWxsLCAnJXMoLi4uKTogQ2Fubm90IHVwZGF0ZSBkdXJpbmcgYW4gZXhpc3Rpbmcg
c3RhdGUgdHJhbnNpdGlvbiAoc3VjaCBhcyAnICsgXCJ3aXRoaW4gYHJlbmRlcmAgb3IgYW5vdGhl
ciBjb21wb25lbnQncyBjb25zdHJ1Y3RvcikuIFJlbmRlciBtZXRob2RzIFwiICsgJ3Nob3VsZCBi
ZSBhIHB1cmUgZnVuY3Rpb24gb2YgcHJvcHMgYW5kIHN0YXRlOyBjb25zdHJ1Y3RvciAnICsgJ3Np
ZGUtZWZmZWN0cyBhcmUgYW4gYW50aS1wYXR0ZXJuLCBidXQgY2FuIGJlIG1vdmVkIHRvICcgKyAn
YGNvbXBvbmVudFdpbGxNb3VudGAuJywgY2FsbGVyTmFtZSkgOiB2b2lkIDA7XG4gIH1cblxuICBy
ZXR1cm4gaW50ZXJuYWxJbnN0YW5jZTtcbn1cblxuLyoqXG4gKiBSZWFjdFVwZGF0ZVF1ZXVlIGFs
bG93cyBmb3Igc3RhdGUgdXBkYXRlcyB0byBiZSBzY2hlZHVsZWQgaW50byBhIGxhdGVyXG4gKiBy
ZWNvbmNpbGlhdGlvbiBzdGVwLlxuICovXG52YXIgUmVhY3RVcGRhdGVRdWV1ZSA9IHtcbiAgLyoq
XG4gICAqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGNvbXBvc2l0ZSBjb21wb25lbnQgaXMg
bW91bnRlZC5cbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5z
dGFuY2Ugd2Ugd2FudCB0byB0ZXN0LlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIG1v
dW50ZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICogQHByb3RlY3RlZFxuICAgKiBAZmluYWxcbiAg
ICovXG4gIGlzTW91bnRlZDogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlKSB7XG4gICAgaWYgKHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBvd25lciA9
IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQ7XG4gICAgICBpZiAob3duZXIgIT09IG51bGwpIHtc
biAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmco
b3duZXIuX3dhcm5lZEFib3V0UmVmc0luUmVuZGVyLCAnJXMgaXMgYWNjZXNzaW5nIGlzTW91bnRl
ZCBpbnNpZGUgaXRzIHJlbmRlcigpIGZ1bmN0aW9uLiAnICsgJ3JlbmRlcigpIHNob3VsZCBiZSBh
IHB1cmUgZnVuY3Rpb24gb2YgcHJvcHMgYW5kIHN0YXRlLiBJdCBzaG91bGQgJyArICduZXZlciBh
Y2Nlc3Mgc29tZXRoaW5nIHRoYXQgcmVxdWlyZXMgc3RhbGUgZGF0YSBmcm9tIHRoZSBwcmV2aW91
cyAnICsgJ3JlbmRlciwgc3VjaCBhcyByZWZzLiBNb3ZlIHRoaXMgbG9naWMgdG8gY29tcG9uZW50
RGlkTW91bnQgYW5kICcgKyAnY29tcG9uZW50RGlkVXBkYXRlIGluc3RlYWQuJywgb3duZXIuZ2V0
TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcpIDogdm9pZCAwO1xuICAgICAgICBvd25lci5fd2FybmVk
QWJvdXRSZWZzSW5SZW5kZXIgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICB2YXIgaW50ZXJu
YWxJbnN0YW5jZSA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0KHB1YmxpY0luc3RhbmNlKTtcbiAgICBp
ZiAoaW50ZXJuYWxJbnN0YW5jZSkge1xuICAgICAgLy8gRHVyaW5nIGNvbXBvbmVudFdpbGxNb3Vu
dCBhbmQgcmVuZGVyIHRoaXMgd2lsbCBzdGlsbCBiZSBudWxsIGJ1dCBhZnRlclxuICAgICAgLy8g
dGhhdCB3aWxsIGFsd2F5cyByZW5kZXIgdG8gc29tZXRoaW5nLiBBdCBsZWFzdCBmb3Igbm93LiBT
byB3ZSBjYW4gdXNlXG4gICAgICAvLyB0aGlzIGhhY2suXG4gICAgICByZXR1cm4gISFpbnRlcm5h
bEluc3RhbmNlLl9yZW5kZXJlZENvbXBvbmVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJu
IGZhbHNlO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogRW5xdWV1ZSBhIGNhbGxiYWNrIHRo
YXQgd2lsbCBiZSBleGVjdXRlZCBhZnRlciBhbGwgdGhlIHBlbmRpbmcgdXBkYXRlc1xuICAgKiBo
YXZlIHByb2Nlc3NlZC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0
YW5jZSBUaGUgaW5zdGFuY2UgdG8gdXNlIGFzIGB0aGlzYCBjb250ZXh0LlxuICAgKiBAcGFyYW0g
ez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHN0YXRlIGlzIHVwZGF0ZWQuXG4gICAq
IEBwYXJhbSB7c3RyaW5nfSBjYWxsZXJOYW1lIE5hbWUgb2YgdGhlIGNhbGxpbmcgZnVuY3Rpb24g
aW4gdGhlIHB1YmxpYyBBUEkuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZUNhbGxi
YWNrOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIGNhbGxiYWNrLCBjYWxsZXJOYW1lKSB7XG4g
ICAgUmVhY3RVcGRhdGVRdWV1ZS52YWxpZGF0ZUNhbGxiYWNrKGNhbGxiYWNrLCBjYWxsZXJOYW1l
KTtcbiAgICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IGdldEludGVybmFsSW5zdGFuY2VSZWFkeUZv
clVwZGF0ZShwdWJsaWNJbnN0YW5jZSk7XG5cbiAgICAvLyBQcmV2aW91c2x5IHdlIHdvdWxkIHRo
cm93IGFuIGVycm9yIGlmIHdlIGRpZG4ndCBoYXZlIGFuIGludGVybmFsXG4gICAgLy8gaW5zdGFu
Y2UuIFNpbmNlIHdlIHdhbnQgdG8gbWFrZSBpdCBhIG5vLW9wIGluc3RlYWQsIHdlIG1pcnJvciB0
aGUgc2FtZVxuICAgIC8vIGJlaGF2aW9yIHdlIGhhdmUgaW4gb3RoZXIgZW5xdWV1ZSogbWV0aG9k
cy5cbiAgICAvLyBXZSBhbHNvIG5lZWQgdG8gaWdub3JlIGNhbGxiYWNrcyBpbiBjb21wb25lbnRX
aWxsTW91bnQuIFNlZVxuICAgIC8vIGVucXVldWVVcGRhdGVzLlxuICAgIGlmICghaW50ZXJuYWxJ
bnN0YW5jZSkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgaWYgKGludGVybmFs
SW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MpIHtcbiAgICAgIGludGVybmFsSW5zdGFuY2UuX3Bl
bmRpbmdDYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGludGVy
bmFsSW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MgPSBbY2FsbGJhY2tdO1xuICAgIH1cbiAgICAv
LyBUT0RPOiBUaGUgY2FsbGJhY2sgaGVyZSBpcyBpZ25vcmVkIHdoZW4gc2V0U3RhdGUgaXMgY2Fs
bGVkIGZyb21cbiAgICAvLyBjb21wb25lbnRXaWxsTW91bnQuIEVpdGhlciBmaXggaXQgb3IgZGlz
YWxsb3cgZG9pbmcgc28gY29tcGxldGVseSBpblxuICAgIC8vIGZhdm9yIG9mIGdldEluaXRpYWxT
dGF0ZS4gQWx0ZXJuYXRpdmVseSwgd2UgY2FuIGRpc2FsbG93XG4gICAgLy8gY29tcG9uZW50V2ls
bE1vdW50IGR1cmluZyBzZXJ2ZXItc2lkZSByZW5kZXJpbmcuXG4gICAgZW5xdWV1ZVVwZGF0ZShp
bnRlcm5hbEluc3RhbmNlKTtcbiAgfSxcblxuICBlbnF1ZXVlQ2FsbGJhY2tJbnRlcm5hbDogZnVu
Y3Rpb24gKGludGVybmFsSW5zdGFuY2UsIGNhbGxiYWNrKSB7XG4gICAgaWYgKGludGVybmFsSW5z
dGFuY2UuX3BlbmRpbmdDYWxsYmFja3MpIHtcbiAgICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRp
bmdDYWxsYmFja3MucHVzaChjYWxsYmFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGludGVybmFs
SW5zdGFuY2UuX3BlbmRpbmdDYWxsYmFja3MgPSBbY2FsbGJhY2tdO1xuICAgIH1cbiAgICBlbnF1
ZXVlVXBkYXRlKGludGVybmFsSW5zdGFuY2UpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBGb3JjZXMg
YW4gdXBkYXRlLiBUaGlzIHNob3VsZCBvbmx5IGJlIGludm9rZWQgd2hlbiBpdCBpcyBrbm93biB3
aXRoXG4gICAqIGNlcnRhaW50eSB0aGF0IHdlIGFyZSAqKm5vdCoqIGluIGEgRE9NIHRyYW5zYWN0
aW9uLlxuICAgKlxuICAgKiBZb3UgbWF5IHdhbnQgdG8gY2FsbCB0aGlzIHdoZW4geW91IGtub3cg
dGhhdCBzb21lIGRlZXBlciBhc3BlY3Qgb2YgdGhlXG4gICAqIGNvbXBvbmVudCdzIHN0YXRlIGhh
cyBjaGFuZ2VkIGJ1dCBgc2V0U3RhdGVgIHdhcyBub3QgY2FsbGVkLlxuICAgKlxuICAgKiBUaGlz
IHdpbGwgbm90IGludm9rZSBgc2hvdWxkQ29tcG9uZW50VXBkYXRlYCwgYnV0IGl0IHdpbGwgaW52
b2tlXG4gICAqIGBjb21wb25lbnRXaWxsVXBkYXRlYCBhbmQgYGNvbXBvbmVudERpZFVwZGF0ZWAu
XG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3Rh
bmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVl
dWVGb3JjZVVwZGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlKSB7XG4gICAgdmFyIGludGVy
bmFsSW5zdGFuY2UgPSBnZXRJbnRlcm5hbEluc3RhbmNlUmVhZHlGb3JVcGRhdGUocHVibGljSW5z
dGFuY2UsICdmb3JjZVVwZGF0ZScpO1xuXG4gICAgaWYgKCFpbnRlcm5hbEluc3RhbmNlKSB7XG4g
ICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0ZvcmNl
VXBkYXRlID0gdHJ1ZTtcblxuICAgIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7XG4g
IH0sXG5cbiAgLyoqXG4gICAqIFJlcGxhY2VzIGFsbCBvZiB0aGUgc3RhdGUuIEFsd2F5cyB1c2Ug
dGhpcyBvciBgc2V0U3RhdGVgIHRvIG11dGF0ZSBzdGF0ZS5cbiAgICogWW91IHNob3VsZCB0cmVh
dCBgdGhpcy5zdGF0ZWAgYXMgaW1tdXRhYmxlLlxuICAgKlxuICAgKiBUaGVyZSBpcyBubyBndWFy
YW50ZWUgdGhhdCBgdGhpcy5zdGF0ZWAgd2lsbCBiZSBpbW1lZGlhdGVseSB1cGRhdGVkLCBzb1xu
ICAgKiBhY2Nlc3NpbmcgYHRoaXMuc3RhdGVgIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgbWF5
IHJldHVybiB0aGUgb2xkIHZhbHVlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1
YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICogQHBh
cmFtIHtvYmplY3R9IGNvbXBsZXRlU3RhdGUgTmV4dCBzdGF0ZS5cbiAgICogQGludGVybmFsXG4g
ICAqL1xuICBlbnF1ZXVlUmVwbGFjZVN0YXRlOiBmdW5jdGlvbiAocHVibGljSW5zdGFuY2UsIGNv
bXBsZXRlU3RhdGUsIGNhbGxiYWNrKSB7XG4gICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBnZXRJ
bnRlcm5hbEluc3RhbmNlUmVhZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2UsICdyZXBsYWNlU3Rh
dGUnKTtcblxuICAgIGlmICghaW50ZXJuYWxJbnN0YW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAg
IH1cblxuICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gW2NvbXBsZXRl
U3RhdGVdO1xuICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdSZXBsYWNlU3RhdGUgPSB0cnVl
O1xuXG4gICAgLy8gRnV0dXJlLXByb29mIDE1LjVcbiAgICBpZiAoY2FsbGJhY2sgIT09IHVuZGVm
aW5lZCAmJiBjYWxsYmFjayAhPT0gbnVsbCkge1xuICAgICAgUmVhY3RVcGRhdGVRdWV1ZS52YWxp
ZGF0ZUNhbGxiYWNrKGNhbGxiYWNrLCAncmVwbGFjZVN0YXRlJyk7XG4gICAgICBpZiAoaW50ZXJu
YWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcykge1xuICAgICAgICBpbnRlcm5hbEluc3RhbmNl
Ll9wZW5kaW5nQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuICAgICAgfSBlbHNlIHtcbiAgICAg
ICAgaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ0NhbGxiYWNrcyA9IFtjYWxsYmFja107XG4gICAg
ICB9XG4gICAgfVxuXG4gICAgZW5xdWV1ZVVwZGF0ZShpbnRlcm5hbEluc3RhbmNlKTtcbiAgfSxc
blxuICAvKipcbiAgICogU2V0cyBhIHN1YnNldCBvZiB0aGUgc3RhdGUuIFRoaXMgb25seSBleGlz
dHMgYmVjYXVzZSBfcGVuZGluZ1N0YXRlIGlzXG4gICAqIGludGVybmFsLiBUaGlzIHByb3ZpZGVz
IGEgbWVyZ2luZyBzdHJhdGVneSB0aGF0IGlzIG5vdCBhdmFpbGFibGUgdG8gZGVlcFxuICAgKiBw
cm9wZXJ0aWVzIHdoaWNoIGlzIGNvbmZ1c2luZy4gVE9ETzogRXhwb3NlIHBlbmRpbmdTdGF0ZSBv
ciBkb24ndCB1c2UgaXRcbiAgICogZHVyaW5nIHRoZSBtZXJnZS5cbiAgICpcbiAgICogQHBhcmFt
IHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVy
ZW5kZXIuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwYXJ0aWFsU3RhdGUgTmV4dCBwYXJ0aWFsIHN0
YXRlIHRvIGJlIG1lcmdlZCB3aXRoIHN0YXRlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVu
cXVldWVTZXRTdGF0ZTogZnVuY3Rpb24gKHB1YmxpY0luc3RhbmNlLCBwYXJ0aWFsU3RhdGUpIHtc
biAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAg
UmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uU2V0U3RhdGUoKTtcbiAgICAgIHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHBhcnRpYWxTdGF0ZSAh
PSBudWxsLCAnc2V0U3RhdGUoLi4uKTogWW91IHBhc3NlZCBhbiB1bmRlZmluZWQgb3IgbnVsbCBz
dGF0ZSBvYmplY3Q7ICcgKyAnaW5zdGVhZCwgdXNlIGZvcmNlVXBkYXRlKCkuJykgOiB2b2lkIDA7
XG4gICAgfVxuXG4gICAgdmFyIGludGVybmFsSW5zdGFuY2UgPSBnZXRJbnRlcm5hbEluc3RhbmNl
UmVhZHlGb3JVcGRhdGUocHVibGljSW5zdGFuY2UsICdzZXRTdGF0ZScpO1xuXG4gICAgaWYgKCFp
bnRlcm5hbEluc3RhbmNlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHF1ZXVl
ID0gaW50ZXJuYWxJbnN0YW5jZS5fcGVuZGluZ1N0YXRlUXVldWUgfHwgKGludGVybmFsSW5zdGFu
Y2UuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gW10pO1xuICAgIHF1ZXVlLnB1c2gocGFydGlhbFN0YXRl
KTtcblxuICAgIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7XG4gIH0sXG5cbiAgZW5x
dWV1ZUVsZW1lbnRJbnRlcm5hbDogZnVuY3Rpb24gKGludGVybmFsSW5zdGFuY2UsIG5leHRFbGVt
ZW50LCBuZXh0Q29udGV4dCkge1xuICAgIGludGVybmFsSW5zdGFuY2UuX3BlbmRpbmdFbGVtZW50
ID0gbmV4dEVsZW1lbnQ7XG4gICAgLy8gVE9ETzogaW50cm9kdWNlIF9wZW5kaW5nQ29udGV4dCBp
bnN0ZWFkIG9mIHNldHRpbmcgaXQgZGlyZWN0bHkuXG4gICAgaW50ZXJuYWxJbnN0YW5jZS5fY29u
dGV4dCA9IG5leHRDb250ZXh0O1xuICAgIGVucXVldWVVcGRhdGUoaW50ZXJuYWxJbnN0YW5jZSk7
XG4gIH0sXG5cbiAgdmFsaWRhdGVDYWxsYmFjazogZnVuY3Rpb24gKGNhbGxiYWNrLCBjYWxsZXJO
YW1lKSB7XG4gICAgISghY2FsbGJhY2sgfHwgdHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24n
KSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICclcyguLi4pOiBFeHBlY3RlZCB0aGUgbGFzdCBvcHRpb25hbCBgY2FsbGJhY2tgIGFyZ3Vt
ZW50IHRvIGJlIGEgZnVuY3Rpb24uIEluc3RlYWQgcmVjZWl2ZWQ6ICVzLicsIGNhbGxlck5hbWUs
IGZvcm1hdFVuZXhwZWN0ZWRBcmd1bWVudChjYWxsYmFjaykpIDogX3Byb2RJbnZhcmlhbnQoJzEy
MicsIGNhbGxlck5hbWUsIGZvcm1hdFVuZXhwZWN0ZWRBcmd1bWVudChjYWxsYmFjaykpIDogdm9p
ZCAwO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0VXBkYXRlUXVldWU7XG5cblxu
LyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9t
L2xpYi9SZWFjdFVwZGF0ZVF1ZXVlLmpzXG4gKiogbW9kdWxlIGlkID0gNDJcbiAqKiBtb2R1bGUg
Y2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4g
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4vKiBn
bG9iYWxzIE1TQXBwICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBDcmVhdGUgYSBmdW5j
dGlvbiB3aGljaCBoYXMgJ3Vuc2FmZScgcHJpdmlsZWdlcyAocmVxdWlyZWQgYnkgd2luZG93czgg
YXBwcylcbiAqL1xuXG52YXIgY3JlYXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbiA9IGZ1
bmN0aW9uIChmdW5jKSB7XG4gIGlmICh0eXBlb2YgTVNBcHAgIT09ICd1bmRlZmluZWQnICYmIE1T
QXBwLmV4ZWNVbnNhZmVMb2NhbEZ1bmN0aW9uKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChhcmcw
LCBhcmcxLCBhcmcyLCBhcmczKSB7XG4gICAgICBNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlv
bihmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBmdW5jKGFyZzAsIGFyZzEsIGFyZzIsIGFy
ZzMpO1xuICAgICAgfSk7XG4gICAgfTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZnVuYztcbiAg
fVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBjcmVhdGVNaWNyb3NvZnRVbnNhZmVMb2NhbEZ1bmN0
aW9uO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+
L3JlYWN0LWRvbS9saWIvY3JlYXRlTWljcm9zb2Z0VW5zYWZlTG9jYWxGdW5jdGlvbi5qc1xuICoq
IG1vZHVsZSBpZCA9IDQzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIGBjaGFyQ29k
ZWAgcmVwcmVzZW50cyB0aGUgYWN0dWFsIFwiY2hhcmFjdGVyIGNvZGVcIiBhbmQgaXMgc2FmZSB0
byB1c2Ugd2l0aFxuICogYFN0cmluZy5mcm9tQ2hhckNvZGVgLiBBcyBzdWNoLCBvbmx5IGtleXMg
dGhhdCBjb3JyZXNwb25kIHRvIHByaW50YWJsZVxuICogY2hhcmFjdGVycyBwcm9kdWNlIGEgdmFs
aWQgYGNoYXJDb2RlYCwgdGhlIG9ubHkgZXhjZXB0aW9uIHRvIHRoaXMgaXMgRW50ZXIuXG4gKiBU
aGUgVGFiLWtleSBpcyBjb25zaWRlcmVkIG5vbi1wcmludGFibGUgYW5kIGRvZXMgbm90IGhhdmUg
YSBgY2hhckNvZGVgLFxuICogcHJlc3VtYWJseSBiZWNhdXNlIGl0IGRvZXMgbm90IHByb2R1Y2Ug
YSB0YWItY2hhcmFjdGVyIGluIGJyb3dzZXJzLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRp
dmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEByZXR1cm4ge251bWJlcn0gTm9ybWFs
aXplZCBgY2hhckNvZGVgIHByb3BlcnR5LlxuICovXG5cbmZ1bmN0aW9uIGdldEV2ZW50Q2hhckNv
ZGUobmF0aXZlRXZlbnQpIHtcbiAgdmFyIGNoYXJDb2RlO1xuICB2YXIga2V5Q29kZSA9IG5hdGl2
ZUV2ZW50LmtleUNvZGU7XG5cbiAgaWYgKCdjaGFyQ29kZScgaW4gbmF0aXZlRXZlbnQpIHtcbiAg
ICBjaGFyQ29kZSA9IG5hdGl2ZUV2ZW50LmNoYXJDb2RlO1xuXG4gICAgLy8gRkYgZG9lcyBub3Qg
c2V0IGBjaGFyQ29kZWAgZm9yIHRoZSBFbnRlci1rZXksIGNoZWNrIGFnYWluc3QgYGtleUNvZGVg
LlxuICAgIGlmIChjaGFyQ29kZSA9PT0gMCAmJiBrZXlDb2RlID09PSAxMykge1xuICAgICAgY2hh
ckNvZGUgPSAxMztcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gSUU4IGRvZXMgbm90IGltcGxl
bWVudCBgY2hhckNvZGVgLCBidXQgYGtleUNvZGVgIGhhcyB0aGUgY29ycmVjdCB2YWx1ZS5cbiAg
ICBjaGFyQ29kZSA9IGtleUNvZGU7XG4gIH1cblxuICAvLyBTb21lIG5vbi1wcmludGFibGUga2V5
cyBhcmUgcmVwb3J0ZWQgaW4gYGNoYXJDb2RlYC9ga2V5Q29kZWAsIGRpc2NhcmQgdGhlbS5cbiAg
Ly8gTXVzdCBub3QgZGlzY2FyZCB0aGUgKG5vbi0pcHJpbnRhYmxlIEVudGVyLWtleS5cbiAgaWYg
KGNoYXJDb2RlID49IDMyIHx8IGNoYXJDb2RlID09PSAxMykge1xuICAgIHJldHVybiBjaGFyQ29k
ZTtcbiAgfVxuXG4gIHJldHVybiAwO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldEV2ZW50Q2hh
ckNvZGU7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAu
L34vcmVhY3QtZG9tL2xpYi9nZXRFdmVudENoYXJDb2RlLmpzXG4gKiogbW9kdWxlIGlkID0gNDRc
biAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpc
biAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogVHJhbnNsYXRpb24gZnJvbSBtb2RpZmll
ciBrZXkgdG8gdGhlIGFzc29jaWF0ZWQgcHJvcGVydHkgaW4gdGhlIGV2ZW50LlxuICogQHNlZSBo
dHRwOi8vd3d3LnczLm9yZy9UUi9ET00tTGV2ZWwtMy1FdmVudHMvI2tleXMtTW9kaWZpZXJzXG4g
Ki9cblxudmFyIG1vZGlmaWVyS2V5VG9Qcm9wID0ge1xuICBBbHQ6ICdhbHRLZXknLFxuICBDb250
cm9sOiAnY3RybEtleScsXG4gIE1ldGE6ICdtZXRhS2V5JyxcbiAgU2hpZnQ6ICdzaGlmdEtleSdc
bn07XG5cbi8vIElFOCBkb2VzIG5vdCBpbXBsZW1lbnQgZ2V0TW9kaWZpZXJTdGF0ZSBzbyB3ZSBz
aW1wbHkgbWFwIGl0IHRvIHRoZSBvbmx5XG4vLyBtb2RpZmllciBrZXlzIGV4cG9zZWQgYnkgdGhl
IGV2ZW50IGl0c2VsZiwgZG9lcyBub3Qgc3VwcG9ydCBMb2NrLWtleXMuXG4vLyBDdXJyZW50bHks
IGFsbCBtYWpvciBicm93c2VycyBleGNlcHQgQ2hyb21lIHNlZW1zIHRvIHN1cHBvcnQgTG9jay1r
ZXlzLlxuZnVuY3Rpb24gbW9kaWZpZXJTdGF0ZUdldHRlcihrZXlBcmcpIHtcbiAgdmFyIHN5bnRo
ZXRpY0V2ZW50ID0gdGhpcztcbiAgdmFyIG5hdGl2ZUV2ZW50ID0gc3ludGhldGljRXZlbnQubmF0
aXZlRXZlbnQ7XG4gIGlmIChuYXRpdmVFdmVudC5nZXRNb2RpZmllclN0YXRlKSB7XG4gICAgcmV0
dXJuIG5hdGl2ZUV2ZW50LmdldE1vZGlmaWVyU3RhdGUoa2V5QXJnKTtcbiAgfVxuICB2YXIga2V5
UHJvcCA9IG1vZGlmaWVyS2V5VG9Qcm9wW2tleUFyZ107XG4gIHJldHVybiBrZXlQcm9wID8gISFu
YXRpdmVFdmVudFtrZXlQcm9wXSA6IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBnZXRFdmVudE1vZGlm
aWVyU3RhdGUobmF0aXZlRXZlbnQpIHtcbiAgcmV0dXJuIG1vZGlmaWVyU3RhdGVHZXR0ZXI7XG59
XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0RXZlbnRNb2RpZmllclN0YXRlO1xuXG5cbi8qKioqKioq
KioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvZ2V0
RXZlbnRNb2RpZmllclN0YXRlLmpzXG4gKiogbW9kdWxlIGlkID0gNDVcbiAqKiBtb2R1bGUgY2h1
bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0
cmljdCc7XG5cbi8qKlxuICogR2V0cyB0aGUgdGFyZ2V0IG5vZGUgZnJvbSBhIG5hdGl2ZSBicm93
c2VyIGV2ZW50IGJ5IGFjY291bnRpbmcgZm9yXG4gKiBpbmNvbnNpc3RlbmNpZXMgaW4gYnJvd3Nl
ciBET00gQVBJcy5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJy
b3dzZXIgZXZlbnQuXG4gKiBAcmV0dXJuIHtET01FdmVudFRhcmdldH0gVGFyZ2V0IG5vZGUuXG4g
Ki9cblxuZnVuY3Rpb24gZ2V0RXZlbnRUYXJnZXQobmF0aXZlRXZlbnQpIHtcbiAgdmFyIHRhcmdl
dCA9IG5hdGl2ZUV2ZW50LnRhcmdldCB8fCBuYXRpdmVFdmVudC5zcmNFbGVtZW50IHx8IHdpbmRv
dztcblxuICAvLyBOb3JtYWxpemUgU1ZHIDx1c2U+IGVsZW1lbnQgZXZlbnRzICM0OTYzXG4gIGlm
ICh0YXJnZXQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQpIHtcbiAgICB0YXJnZXQgPSB0YXJnZXQu
Y29ycmVzcG9uZGluZ1VzZUVsZW1lbnQ7XG4gIH1cblxuICAvLyBTYWZhcmkgbWF5IGZpcmUgZXZl
bnRzIG9uIHRleHQgbm9kZXMgKE5vZGUuVEVYVF9OT0RFIGlzIDMpLlxuICAvLyBAc2VlIGh0dHA6
Ly93d3cucXVpcmtzbW9kZS5vcmcvanMvZXZlbnRzX3Byb3BlcnRpZXMuaHRtbFxuICByZXR1cm4g
dGFyZ2V0Lm5vZGVUeXBlID09PSAzID8gdGFyZ2V0LnBhcmVudE5vZGUgOiB0YXJnZXQ7XG59XG5c
bm1vZHVsZS5leHBvcnRzID0gZ2V0RXZlbnRUYXJnZXQ7XG5cblxuLyoqKioqKioqKioqKioqKioq
XG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9nZXRFdmVudFRhcmdl
dC5qc1xuICoqIG1vZHVsZSBpZCA9IDQ2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIv
KipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXhl
Y3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVu
dCcpO1xuXG52YXIgdXNlSGFzRmVhdHVyZTtcbmlmIChFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5V
c2VET00pIHtcbiAgdXNlSGFzRmVhdHVyZSA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uICYmIGRv
Y3VtZW50LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUgJiZcbiAgLy8gYWx3YXlzIHJldHVybnMg
dHJ1ZSBpbiBuZXdlciBicm93c2VycyBhcyBwZXIgdGhlIHN0YW5kYXJkLlxuICAvLyBAc2VlIGh0
dHA6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNkb20tZG9taW1wbGVtZW50YXRpb24taGFzZmVhdHVy
ZVxuICBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlKCcnLCAnJykgIT09IHRydWU7
XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIGFuIGV2ZW50IGlzIHN1cHBvcnRlZCBpbiB0aGUgY3Vy
cmVudCBleGVjdXRpb24gZW52aXJvbm1lbnQuXG4gKlxuICogTk9URTogVGhpcyB3aWxsIG5vdCB3
b3JrIGNvcnJlY3RseSBmb3Igbm9uLWdlbmVyaWMgZXZlbnRzIHN1Y2ggYXMgYGNoYW5nZWAsXG4g
KiBgcmVzZXRgLCBgbG9hZGAsIGBlcnJvcmAsIGFuZCBgc2VsZWN0YC5cbiAqXG4gKiBCb3Jyb3dz
IGZyb20gTW9kZXJuaXpyLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBldmVudE5hbWVTdWZmaXgg
RXZlbnQgbmFtZSwgZS5nLiBcImNsaWNrXCIuXG4gKiBAcGFyYW0gez9ib29sZWFufSBjYXB0dXJl
IENoZWNrIGlmIHRoZSBjYXB0dXJlIHBoYXNlIGlzIHN1cHBvcnRlZC5cbiAqIEByZXR1cm4ge2Jv
b2xlYW59IFRydWUgaWYgdGhlIGV2ZW50IGlzIHN1cHBvcnRlZC5cbiAqIEBpbnRlcm5hbFxuICog
QGxpY2Vuc2UgTW9kZXJuaXpyIDMuMC4wcHJlIChDdXN0b20gQnVpbGQpIHwgTUlUXG4gKi9cbmZ1
bmN0aW9uIGlzRXZlbnRTdXBwb3J0ZWQoZXZlbnROYW1lU3VmZml4LCBjYXB0dXJlKSB7XG4gIGlm
ICghRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NIHx8IGNhcHR1cmUgJiYgISgnYWRkRXZl
bnRMaXN0ZW5lcicgaW4gZG9jdW1lbnQpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAg
dmFyIGV2ZW50TmFtZSA9ICdvbicgKyBldmVudE5hbWVTdWZmaXg7XG4gIHZhciBpc1N1cHBvcnRl
ZCA9IGV2ZW50TmFtZSBpbiBkb2N1bWVudDtcblxuICBpZiAoIWlzU3VwcG9ydGVkKSB7XG4gICAg
dmFyIGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICBlbGVtZW50
LnNldEF0dHJpYnV0ZShldmVudE5hbWUsICdyZXR1cm47Jyk7XG4gICAgaXNTdXBwb3J0ZWQgPSB0
eXBlb2YgZWxlbWVudFtldmVudE5hbWVdID09PSAnZnVuY3Rpb24nO1xuICB9XG5cbiAgaWYgKCFp
c1N1cHBvcnRlZCAmJiB1c2VIYXNGZWF0dXJlICYmIGV2ZW50TmFtZVN1ZmZpeCA9PT0gJ3doZWVs
Jykge1xuICAgIC8vIFRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIHRlc3Qgc3VwcG9ydCBmb3IgdGhl
IGB3aGVlbGAgZXZlbnQgaW4gSUU5Ky5cbiAgICBpc1N1cHBvcnRlZCA9IGRvY3VtZW50LmltcGxl
bWVudGF0aW9uLmhhc0ZlYXR1cmUoJ0V2ZW50cy53aGVlbCcsICczLjAnKTtcbiAgfVxuXG4gIHJl
dHVybiBpc1N1cHBvcnRlZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpc0V2ZW50U3VwcG9ydGVk
O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3Jl
YWN0LWRvbS9saWIvaXNFdmVudFN1cHBvcnRlZC5qc1xuICoqIG1vZHVsZSBpZCA9IDQ3XG4gKiog
bW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9c
blxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEdpdmVuIGEgYHByZXZFbGVtZW50YCBhbmQgYG5l
eHRFbGVtZW50YCwgZGV0ZXJtaW5lcyBpZiB0aGUgZXhpc3RpbmdcbiAqIGluc3RhbmNlIHNob3Vs
ZCBiZSB1cGRhdGVkIGFzIG9wcG9zZWQgdG8gYmVpbmcgZGVzdHJveWVkIG9yIHJlcGxhY2VkIGJ5
IGEgbmV3XG4gKiBpbnN0YW5jZS4gQm90aCBhcmd1bWVudHMgYXJlIGVsZW1lbnRzLiBUaGlzIGVu
c3VyZXMgdGhhdCB0aGlzIGxvZ2ljIGNhblxuICogb3BlcmF0ZSBvbiBzdGF0ZWxlc3MgdHJlZXMg
d2l0aG91dCBhbnkgYmFja2luZyBpbnN0YW5jZS5cbiAqXG4gKiBAcGFyYW0gez9vYmplY3R9IHBy
ZXZFbGVtZW50XG4gKiBAcGFyYW0gez9vYmplY3R9IG5leHRFbGVtZW50XG4gKiBAcmV0dXJuIHti
b29sZWFufSBUcnVlIGlmIHRoZSBleGlzdGluZyBpbnN0YW5jZSBzaG91bGQgYmUgdXBkYXRlZC5c
biAqIEBwcm90ZWN0ZWRcbiAqL1xuXG5mdW5jdGlvbiBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVu
dChwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQpIHtcbiAgdmFyIHByZXZFbXB0eSA9IHByZXZFbGVt
ZW50ID09PSBudWxsIHx8IHByZXZFbGVtZW50ID09PSBmYWxzZTtcbiAgdmFyIG5leHRFbXB0eSA9
IG5leHRFbGVtZW50ID09PSBudWxsIHx8IG5leHRFbGVtZW50ID09PSBmYWxzZTtcbiAgaWYgKHBy
ZXZFbXB0eSB8fCBuZXh0RW1wdHkpIHtcbiAgICByZXR1cm4gcHJldkVtcHR5ID09PSBuZXh0RW1w
dHk7XG4gIH1cblxuICB2YXIgcHJldlR5cGUgPSB0eXBlb2YgcHJldkVsZW1lbnQ7XG4gIHZhciBu
ZXh0VHlwZSA9IHR5cGVvZiBuZXh0RWxlbWVudDtcbiAgaWYgKHByZXZUeXBlID09PSAnc3RyaW5n
JyB8fCBwcmV2VHlwZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gbmV4dFR5cGUgPT09ICdz
dHJpbmcnIHx8IG5leHRUeXBlID09PSAnbnVtYmVyJztcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4g
bmV4dFR5cGUgPT09ICdvYmplY3QnICYmIHByZXZFbGVtZW50LnR5cGUgPT09IG5leHRFbGVtZW50
LnR5cGUgJiYgcHJldkVsZW1lbnQua2V5ID09PSBuZXh0RWxlbWVudC5rZXk7XG4gIH1cbn1cblxu
bW9kdWxlLmV4cG9ydHMgPSBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudDtcblxuXG4vKioqKioq
KioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL3No
b3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50LmpzXG4gKiogbW9kdWxlIGlkID0gNDhcbiAqKiBtb2R1
bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTUtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
XG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4n
dXNlIHN0cmljdCc7XG5cbnZhciBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xu
XG52YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5RnVuY3Rpb24nKTtc
bnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgdmFsaWRh
dGVET01OZXN0aW5nID0gZW1wdHlGdW5jdGlvbjtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicpIHtcbiAgLy8gVGhpcyB2YWxpZGF0aW9uIGNvZGUgd2FzIHdyaXR0
ZW4gYmFzZWQgb24gdGhlIEhUTUw1IHBhcnNpbmcgc3BlYzpcbiAgLy8gaHR0cHM6Ly9odG1sLnNw
ZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjaGFzLWFuLWVsZW1lbnQtaW4tc2Nv
cGVcbiAgLy9cbiAgLy8gTm90ZTogdGhpcyBkb2VzIG5vdCBjYXRjaCBhbGwgaW52YWxpZCBuZXN0
aW5nLCBub3IgZG9lcyBpdCB0cnkgdG8gKGFzIGl0J3NcbiAgLy8gbm90IGNsZWFyIHdoYXQgcHJh
Y3RpY2FsIGJlbmVmaXQgZG9pbmcgc28gcHJvdmlkZXMpOyBpbnN0ZWFkLCB3ZSB3YXJuIG9ubHlc
biAgLy8gZm9yIGNhc2VzIHdoZXJlIHRoZSBwYXJzZXIgd2lsbCBnaXZlIGEgcGFyc2UgdHJlZSBk
aWZmZXJpbmcgZnJvbSB3aGF0IFJlYWN0XG4gIC8vIGludGVuZGVkLiBGb3IgZXhhbXBsZSwgPGI+
PGRpdj48L2Rpdj48L2I+IGlzIGludmFsaWQgYnV0IHdlIGRvbid0IHdhcm5cbiAgLy8gYmVjYXVz
ZSBpdCBzdGlsbCBwYXJzZXMgY29ycmVjdGx5OyB3ZSBkbyB3YXJuIGZvciBvdGhlciBjYXNlcyBs
aWtlIG5lc3RlZFxuICAvLyA8cD4gdGFncyB3aGVyZSB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzZWNv
bmQgZWxlbWVudCBpbXBsaWNpdGx5IGNsb3NlcyB0aGVcbiAgLy8gZmlyc3QsIGNhdXNpbmcgYSBj
b25mdXNpbmcgbWVzcy5cblxuICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRp
cGFnZS9zeW50YXguaHRtbCNzcGVjaWFsXG4gIHZhciBzcGVjaWFsVGFncyA9IFsnYWRkcmVzcycs
ICdhcHBsZXQnLCAnYXJlYScsICdhcnRpY2xlJywgJ2FzaWRlJywgJ2Jhc2UnLCAnYmFzZWZvbnQn
LCAnYmdzb3VuZCcsICdibG9ja3F1b3RlJywgJ2JvZHknLCAnYnInLCAnYnV0dG9uJywgJ2NhcHRp
b24nLCAnY2VudGVyJywgJ2NvbCcsICdjb2xncm91cCcsICdkZCcsICdkZXRhaWxzJywgJ2Rpcics
ICdkaXYnLCAnZGwnLCAnZHQnLCAnZW1iZWQnLCAnZmllbGRzZXQnLCAnZmlnY2FwdGlvbicsICdm
aWd1cmUnLCAnZm9vdGVyJywgJ2Zvcm0nLCAnZnJhbWUnLCAnZnJhbWVzZXQnLCAnaDEnLCAnaDIn
LCAnaDMnLCAnaDQnLCAnaDUnLCAnaDYnLCAnaGVhZCcsICdoZWFkZXInLCAnaGdyb3VwJywgJ2hy
JywgJ2h0bWwnLCAnaWZyYW1lJywgJ2ltZycsICdpbnB1dCcsICdpc2luZGV4JywgJ2xpJywgJ2xp
bmsnLCAnbGlzdGluZycsICdtYWluJywgJ21hcnF1ZWUnLCAnbWVudScsICdtZW51aXRlbScsICdt
ZXRhJywgJ25hdicsICdub2VtYmVkJywgJ25vZnJhbWVzJywgJ25vc2NyaXB0JywgJ29iamVjdCcs
ICdvbCcsICdwJywgJ3BhcmFtJywgJ3BsYWludGV4dCcsICdwcmUnLCAnc2NyaXB0JywgJ3NlY3Rp
b24nLCAnc2VsZWN0JywgJ3NvdXJjZScsICdzdHlsZScsICdzdW1tYXJ5JywgJ3RhYmxlJywgJ3Ri
b2R5JywgJ3RkJywgJ3RlbXBsYXRlJywgJ3RleHRhcmVhJywgJ3Rmb290JywgJ3RoJywgJ3RoZWFk
JywgJ3RpdGxlJywgJ3RyJywgJ3RyYWNrJywgJ3VsJywgJ3dicicsICd4bXAnXTtcblxuICAvLyBo
dHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNoYXMtYW4t
ZWxlbWVudC1pbi1zY29wZVxuICB2YXIgaW5TY29wZVRhZ3MgPSBbJ2FwcGxldCcsICdjYXB0aW9u
JywgJ2h0bWwnLCAndGFibGUnLCAndGQnLCAndGgnLCAnbWFycXVlZScsICdvYmplY3QnLCAndGVt
cGxhdGUnLFxuXG4gIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5
bnRheC5odG1sI2h0bWwtaW50ZWdyYXRpb24tcG9pbnRcbiAgLy8gVE9ETzogRGlzdGluZ3Vpc2gg
YnkgbmFtZXNwYWNlIGhlcmUgLS0gZm9yIDx0aXRsZT4sIGluY2x1ZGluZyBpdCBoZXJlXG4gIC8v
IGVycnMgb24gdGhlIHNpZGUgb2YgZmV3ZXIgd2FybmluZ3NcbiAgJ2ZvcmVpZ25PYmplY3QnLCAn
ZGVzYycsICd0aXRsZSddO1xuXG4gIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVs
dGlwYWdlL3N5bnRheC5odG1sI2hhcy1hbi1lbGVtZW50LWluLWJ1dHRvbi1zY29wZVxuICB2YXIg
YnV0dG9uU2NvcGVUYWdzID0gaW5TY29wZVRhZ3MuY29uY2F0KFsnYnV0dG9uJ10pO1xuXG4gIC8v
IGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI2dlbmVy
YXRlLWltcGxpZWQtZW5kLXRhZ3NcbiAgdmFyIGltcGxpZWRFbmRUYWdzID0gWydkZCcsICdkdCcs
ICdsaScsICdvcHRpb24nLCAnb3B0Z3JvdXAnLCAncCcsICdycCcsICdydCddO1xuXG4gIHZhciBl
bXB0eUFuY2VzdG9ySW5mbyA9IHtcbiAgICBjdXJyZW50OiBudWxsLFxuXG4gICAgZm9ybVRhZzog
bnVsbCxcbiAgICBhVGFnSW5TY29wZTogbnVsbCxcbiAgICBidXR0b25UYWdJblNjb3BlOiBudWxs
LFxuICAgIG5vYnJUYWdJblNjb3BlOiBudWxsLFxuICAgIHBUYWdJbkJ1dHRvblNjb3BlOiBudWxs
LFxuXG4gICAgbGlzdEl0ZW1UYWdBdXRvY2xvc2luZzogbnVsbCxcbiAgICBkbEl0ZW1UYWdBdXRv
Y2xvc2luZzogbnVsbFxuICB9O1xuXG4gIHZhciB1cGRhdGVkQW5jZXN0b3JJbmZvID0gZnVuY3Rp
b24gKG9sZEluZm8sIHRhZywgaW5zdGFuY2UpIHtcbiAgICB2YXIgYW5jZXN0b3JJbmZvID0gX2Fz
c2lnbih7fSwgb2xkSW5mbyB8fCBlbXB0eUFuY2VzdG9ySW5mbyk7XG4gICAgdmFyIGluZm8gPSB7
IHRhZzogdGFnLCBpbnN0YW5jZTogaW5zdGFuY2UgfTtcblxuICAgIGlmIChpblNjb3BlVGFncy5p
bmRleE9mKHRhZykgIT09IC0xKSB7XG4gICAgICBhbmNlc3RvckluZm8uYVRhZ0luU2NvcGUgPSBu
dWxsO1xuICAgICAgYW5jZXN0b3JJbmZvLmJ1dHRvblRhZ0luU2NvcGUgPSBudWxsO1xuICAgICAg
YW5jZXN0b3JJbmZvLm5vYnJUYWdJblNjb3BlID0gbnVsbDtcbiAgICB9XG4gICAgaWYgKGJ1dHRv
blNjb3BlVGFncy5pbmRleE9mKHRhZykgIT09IC0xKSB7XG4gICAgICBhbmNlc3RvckluZm8ucFRh
Z0luQnV0dG9uU2NvcGUgPSBudWxsO1xuICAgIH1cblxuICAgIC8vIFNlZSBydWxlcyBmb3IgJ2xp
JywgJ2RkJywgJ2R0JyBzdGFydCB0YWdzIGluXG4gICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hh
dHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluYm9keVxuICAgIGlm
IChzcGVjaWFsVGFncy5pbmRleE9mKHRhZykgIT09IC0xICYmIHRhZyAhPT0gJ2FkZHJlc3MnICYm
IHRhZyAhPT0gJ2RpdicgJiYgdGFnICE9PSAncCcpIHtcbiAgICAgIGFuY2VzdG9ySW5mby5saXN0
SXRlbVRhZ0F1dG9jbG9zaW5nID0gbnVsbDtcbiAgICAgIGFuY2VzdG9ySW5mby5kbEl0ZW1UYWdB
dXRvY2xvc2luZyA9IG51bGw7XG4gICAgfVxuXG4gICAgYW5jZXN0b3JJbmZvLmN1cnJlbnQgPSBp
bmZvO1xuXG4gICAgaWYgKHRhZyA9PT0gJ2Zvcm0nKSB7XG4gICAgICBhbmNlc3RvckluZm8uZm9y
bVRhZyA9IGluZm87XG4gICAgfVxuICAgIGlmICh0YWcgPT09ICdhJykge1xuICAgICAgYW5jZXN0
b3JJbmZvLmFUYWdJblNjb3BlID0gaW5mbztcbiAgICB9XG4gICAgaWYgKHRhZyA9PT0gJ2J1dHRv
bicpIHtcbiAgICAgIGFuY2VzdG9ySW5mby5idXR0b25UYWdJblNjb3BlID0gaW5mbztcbiAgICB9
XG4gICAgaWYgKHRhZyA9PT0gJ25vYnInKSB7XG4gICAgICBhbmNlc3RvckluZm8ubm9iclRhZ0lu
U2NvcGUgPSBpbmZvO1xuICAgIH1cbiAgICBpZiAodGFnID09PSAncCcpIHtcbiAgICAgIGFuY2Vz
dG9ySW5mby5wVGFnSW5CdXR0b25TY29wZSA9IGluZm87XG4gICAgfVxuICAgIGlmICh0YWcgPT09
ICdsaScpIHtcbiAgICAgIGFuY2VzdG9ySW5mby5saXN0SXRlbVRhZ0F1dG9jbG9zaW5nID0gaW5m
bztcbiAgICB9XG4gICAgaWYgKHRhZyA9PT0gJ2RkJyB8fCB0YWcgPT09ICdkdCcpIHtcbiAgICAg
IGFuY2VzdG9ySW5mby5kbEl0ZW1UYWdBdXRvY2xvc2luZyA9IGluZm87XG4gICAgfVxuXG4gICAg
cmV0dXJuIGFuY2VzdG9ySW5mbztcbiAgfTtcblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVy
XG4gICAqL1xuICB2YXIgaXNUYWdWYWxpZFdpdGhQYXJlbnQgPSBmdW5jdGlvbiAodGFnLCBwYXJl
bnRUYWcpIHtcbiAgICAvLyBGaXJzdCwgbGV0J3MgY2hlY2sgaWYgd2UncmUgaW4gYW4gdW51c3Vh
bCBwYXJzaW5nIG1vZGUuLi5cbiAgICBzd2l0Y2ggKHBhcmVudFRhZykge1xuICAgICAgLy8gaHR0
cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1t
YWluLWluc2VsZWN0XG4gICAgICBjYXNlICdzZWxlY3QnOlxuICAgICAgICByZXR1cm4gdGFnID09
PSAnb3B0aW9uJyB8fCB0YWcgPT09ICdvcHRncm91cCcgfHwgdGFnID09PSAnI3RleHQnO1xuICAg
ICAgY2FzZSAnb3B0Z3JvdXAnOlxuICAgICAgICByZXR1cm4gdGFnID09PSAnb3B0aW9uJyB8fCB0
YWcgPT09ICcjdGV4dCc7XG4gICAgICAvLyBTdHJpY3RseSBzcGVha2luZywgc2VlaW5nIGFuIDxv
cHRpb24+IGRvZXNuJ3QgbWVhbiB3ZSdyZSBpbiBhIDxzZWxlY3Q+XG4gICAgICAvLyBidXRcbiAg
ICAgIGNhc2UgJ29wdGlvbic6XG4gICAgICAgIHJldHVybiB0YWcgPT09ICcjdGV4dCc7XG4gICAg
ICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zeW50YXguaHRtbCNw
YXJzaW5nLW1haW4taW50ZFxuICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9t
dWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluY2FwdGlvblxuICAgICAgLy8gTm8g
c3BlY2lhbCBiZWhhdmlvciBzaW5jZSB0aGVzZSBydWxlcyBmYWxsIGJhY2sgdG8gXCJpbiBib2R5
XCIgbW9kZSBmb3JcbiAgICAgIC8vIGFsbCBleGNlcHQgc3BlY2lhbCB0YWJsZSBub2RlcyB3aGlj
aCBjYXVzZSBiYWQgcGFyc2luZyBiZWhhdmlvciBhbnl3YXkuXG5cbiAgICAgIC8vIGh0dHBzOi8v
aHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVsdGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1p
bnRyXG4gICAgICBjYXNlICd0cic6XG4gICAgICAgIHJldHVybiB0YWcgPT09ICd0aCcgfHwgdGFn
ID09PSAndGQnIHx8IHRhZyA9PT0gJ3N0eWxlJyB8fCB0YWcgPT09ICdzY3JpcHQnIHx8IHRhZyA9
PT0gJ3RlbXBsYXRlJztcbiAgICAgIC8vIGh0dHBzOi8vaHRtbC5zcGVjLndoYXR3Zy5vcmcvbXVs
dGlwYWdlL3N5bnRheC5odG1sI3BhcnNpbmctbWFpbi1pbnRib2R5XG4gICAgICBjYXNlICd0Ym9k
eSc6XG4gICAgICBjYXNlICd0aGVhZCc6XG4gICAgICBjYXNlICd0Zm9vdCc6XG4gICAgICAgIHJl
dHVybiB0YWcgPT09ICd0cicgfHwgdGFnID09PSAnc3R5bGUnIHx8IHRhZyA9PT0gJ3NjcmlwdCcg
fHwgdGFnID09PSAndGVtcGxhdGUnO1xuICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdn
Lm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluY29sZ3JvdXBcbiAgICAg
IGNhc2UgJ2NvbGdyb3VwJzpcbiAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ2NvbCcgfHwgdGFnID09
PSAndGVtcGxhdGUnO1xuICAgICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMud2hhdHdnLm9yZy9tdWx0
aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWludGFibGVcbiAgICAgIGNhc2UgJ3RhYmxl
JzpcbiAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ2NhcHRpb24nIHx8IHRhZyA9PT0gJ2NvbGdyb3Vw
JyB8fCB0YWcgPT09ICd0Ym9keScgfHwgdGFnID09PSAndGZvb3QnIHx8IHRhZyA9PT0gJ3RoZWFk
JyB8fCB0YWcgPT09ICdzdHlsZScgfHwgdGFnID09PSAnc2NyaXB0JyB8fCB0YWcgPT09ICd0ZW1w
bGF0ZSc7XG4gICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9z
eW50YXguaHRtbCNwYXJzaW5nLW1haW4taW5oZWFkXG4gICAgICBjYXNlICdoZWFkJzpcbiAgICAg
ICAgcmV0dXJuIHRhZyA9PT0gJ2Jhc2UnIHx8IHRhZyA9PT0gJ2Jhc2Vmb250JyB8fCB0YWcgPT09
ICdiZ3NvdW5kJyB8fCB0YWcgPT09ICdsaW5rJyB8fCB0YWcgPT09ICdtZXRhJyB8fCB0YWcgPT09
ICd0aXRsZScgfHwgdGFnID09PSAnbm9zY3JpcHQnIHx8IHRhZyA9PT0gJ25vZnJhbWVzJyB8fCB0
YWcgPT09ICdzdHlsZScgfHwgdGFnID09PSAnc2NyaXB0JyB8fCB0YWcgPT09ICd0ZW1wbGF0ZSc7
XG4gICAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9zZW1hbnRp
Y3MuaHRtbCN0aGUtaHRtbC1lbGVtZW50XG4gICAgICBjYXNlICdodG1sJzpcbiAgICAgICAgcmV0
dXJuIHRhZyA9PT0gJ2hlYWQnIHx8IHRhZyA9PT0gJ2JvZHknO1xuICAgICAgY2FzZSAnI2RvY3Vt
ZW50JzpcbiAgICAgICAgcmV0dXJuIHRhZyA9PT0gJ2h0bWwnO1xuICAgIH1cblxuICAgIC8vIFBy
b2JhYmx5IGluIHRoZSBcImluIGJvZHlcIiBwYXJzaW5nIG1vZGUsIHNvIHdlIG91dGxhdyBvbmx5
IHRhZyBjb21ib3NcbiAgICAvLyB3aGVyZSB0aGUgcGFyc2luZyBydWxlcyBjYXVzZSBpbXBsaWNp
dCBvcGVucyBvciBjbG9zZXMgdG8gYmUgYWRkZWQuXG4gICAgLy8gaHR0cHM6Ly9odG1sLnNwZWMu
d2hhdHdnLm9yZy9tdWx0aXBhZ2Uvc3ludGF4Lmh0bWwjcGFyc2luZy1tYWluLWluYm9keVxuICAg
IHN3aXRjaCAodGFnKSB7XG4gICAgICBjYXNlICdoMSc6XG4gICAgICBjYXNlICdoMic6XG4gICAg
ICBjYXNlICdoMyc6XG4gICAgICBjYXNlICdoNCc6XG4gICAgICBjYXNlICdoNSc6XG4gICAgICBj
YXNlICdoNic6XG4gICAgICAgIHJldHVybiBwYXJlbnRUYWcgIT09ICdoMScgJiYgcGFyZW50VGFn
ICE9PSAnaDInICYmIHBhcmVudFRhZyAhPT0gJ2gzJyAmJiBwYXJlbnRUYWcgIT09ICdoNCcgJiYg
cGFyZW50VGFnICE9PSAnaDUnICYmIHBhcmVudFRhZyAhPT0gJ2g2JztcblxuICAgICAgY2FzZSAn
cnAnOlxuICAgICAgY2FzZSAncnQnOlxuICAgICAgICByZXR1cm4gaW1wbGllZEVuZFRhZ3MuaW5k
ZXhPZihwYXJlbnRUYWcpID09PSAtMTtcblxuICAgICAgY2FzZSAnYm9keSc6XG4gICAgICBjYXNl
ICdjYXB0aW9uJzpcbiAgICAgIGNhc2UgJ2NvbCc6XG4gICAgICBjYXNlICdjb2xncm91cCc6XG4g
ICAgICBjYXNlICdmcmFtZSc6XG4gICAgICBjYXNlICdoZWFkJzpcbiAgICAgIGNhc2UgJ2h0bWwn
OlxuICAgICAgY2FzZSAndGJvZHknOlxuICAgICAgY2FzZSAndGQnOlxuICAgICAgY2FzZSAndGZv
b3QnOlxuICAgICAgY2FzZSAndGgnOlxuICAgICAgY2FzZSAndGhlYWQnOlxuICAgICAgY2FzZSAn
dHInOlxuICAgICAgICAvLyBUaGVzZSB0YWdzIGFyZSBvbmx5IHZhbGlkIHdpdGggYSBmZXcgcGFy
ZW50cyB0aGF0IGhhdmUgc3BlY2lhbCBjaGlsZFxuICAgICAgICAvLyBwYXJzaW5nIHJ1bGVzIC0t
IGlmIHdlJ3JlIGRvd24gaGVyZSwgdGhlbiBub25lIG9mIHRob3NlIG1hdGNoZWQgYW5kXG4gICAg
ICAgIC8vIHNvIHdlIGFsbG93IGl0IG9ubHkgaWYgd2UgZG9uJ3Qga25vdyB3aGF0IHRoZSBwYXJl
bnQgaXMsIGFzIGFsbCBvdGhlclxuICAgICAgICAvLyBjYXNlcyBhcmUgaW52YWxpZC5cbiAgICAg
ICAgcmV0dXJuIHBhcmVudFRhZyA9PSBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xu
ICB9O1xuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHdoZXRoZXJcbiAgICovXG4gIHZhciBmaW5kSW52
YWxpZEFuY2VzdG9yRm9yVGFnID0gZnVuY3Rpb24gKHRhZywgYW5jZXN0b3JJbmZvKSB7XG4gICAg
c3dpdGNoICh0YWcpIHtcbiAgICAgIGNhc2UgJ2FkZHJlc3MnOlxuICAgICAgY2FzZSAnYXJ0aWNs
ZSc6XG4gICAgICBjYXNlICdhc2lkZSc6XG4gICAgICBjYXNlICdibG9ja3F1b3RlJzpcbiAgICAg
IGNhc2UgJ2NlbnRlcic6XG4gICAgICBjYXNlICdkZXRhaWxzJzpcbiAgICAgIGNhc2UgJ2RpYWxv
Zyc6XG4gICAgICBjYXNlICdkaXInOlxuICAgICAgY2FzZSAnZGl2JzpcbiAgICAgIGNhc2UgJ2Rs
JzpcbiAgICAgIGNhc2UgJ2ZpZWxkc2V0JzpcbiAgICAgIGNhc2UgJ2ZpZ2NhcHRpb24nOlxuICAg
ICAgY2FzZSAnZmlndXJlJzpcbiAgICAgIGNhc2UgJ2Zvb3Rlcic6XG4gICAgICBjYXNlICdoZWFk
ZXInOlxuICAgICAgY2FzZSAnaGdyb3VwJzpcbiAgICAgIGNhc2UgJ21haW4nOlxuICAgICAgY2Fz
ZSAnbWVudSc6XG4gICAgICBjYXNlICduYXYnOlxuICAgICAgY2FzZSAnb2wnOlxuICAgICAgY2Fz
ZSAncCc6XG4gICAgICBjYXNlICdzZWN0aW9uJzpcbiAgICAgIGNhc2UgJ3N1bW1hcnknOlxuICAg
ICAgY2FzZSAndWwnOlxuICAgICAgY2FzZSAncHJlJzpcbiAgICAgIGNhc2UgJ2xpc3RpbmcnOlxu
ICAgICAgY2FzZSAndGFibGUnOlxuICAgICAgY2FzZSAnaHInOlxuICAgICAgY2FzZSAneG1wJzpc
biAgICAgIGNhc2UgJ2gxJzpcbiAgICAgIGNhc2UgJ2gyJzpcbiAgICAgIGNhc2UgJ2gzJzpcbiAg
ICAgIGNhc2UgJ2g0JzpcbiAgICAgIGNhc2UgJ2g1JzpcbiAgICAgIGNhc2UgJ2g2JzpcbiAgICAg
ICAgcmV0dXJuIGFuY2VzdG9ySW5mby5wVGFnSW5CdXR0b25TY29wZTtcblxuICAgICAgY2FzZSAn
Zm9ybSc6XG4gICAgICAgIHJldHVybiBhbmNlc3RvckluZm8uZm9ybVRhZyB8fCBhbmNlc3Rvcklu
Zm8ucFRhZ0luQnV0dG9uU2NvcGU7XG5cbiAgICAgIGNhc2UgJ2xpJzpcbiAgICAgICAgcmV0dXJu
IGFuY2VzdG9ySW5mby5saXN0SXRlbVRhZ0F1dG9jbG9zaW5nO1xuXG4gICAgICBjYXNlICdkZCc6
XG4gICAgICBjYXNlICdkdCc6XG4gICAgICAgIHJldHVybiBhbmNlc3RvckluZm8uZGxJdGVtVGFn
QXV0b2Nsb3Npbmc7XG5cbiAgICAgIGNhc2UgJ2J1dHRvbic6XG4gICAgICAgIHJldHVybiBhbmNl
c3RvckluZm8uYnV0dG9uVGFnSW5TY29wZTtcblxuICAgICAgY2FzZSAnYSc6XG4gICAgICAgIC8v
IFNwZWMgc2F5cyBzb21ldGhpbmcgYWJvdXQgc3RvcmluZyBhIGxpc3Qgb2YgbWFya2VycywgYnV0
IGl0IHNvdW5kc1xuICAgICAgICAvLyBlcXVpdmFsZW50IHRvIHRoaXMgY2hlY2suXG4gICAgICAg
IHJldHVybiBhbmNlc3RvckluZm8uYVRhZ0luU2NvcGU7XG5cbiAgICAgIGNhc2UgJ25vYnInOlxu
ICAgICAgICByZXR1cm4gYW5jZXN0b3JJbmZvLm5vYnJUYWdJblNjb3BlO1xuICAgIH1cblxuICAg
IHJldHVybiBudWxsO1xuICB9O1xuXG4gIC8qKlxuICAgKiBHaXZlbiBhIFJlYWN0Q29tcG9zaXRl
Q29tcG9uZW50IGluc3RhbmNlLCByZXR1cm4gYSBsaXN0IG9mIGl0cyByZWN1cnNpdmVcbiAgICog
b3duZXJzLCBzdGFydGluZyBhdCB0aGUgcm9vdCBhbmQgZW5kaW5nIHdpdGggdGhlIGluc3RhbmNl
IGl0c2VsZi5cbiAgICovXG4gIHZhciBmaW5kT3duZXJTdGFjayA9IGZ1bmN0aW9uIChpbnN0YW5j
ZSkge1xuICAgIGlmICghaW5zdGFuY2UpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAg
ICB2YXIgc3RhY2sgPSBbXTtcbiAgICBkbyB7XG4gICAgICBzdGFjay5wdXNoKGluc3RhbmNlKTtc
biAgICB9IHdoaWxlIChpbnN0YW5jZSA9IGluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5fb3duZXIp
O1xuICAgIHN0YWNrLnJldmVyc2UoKTtcbiAgICByZXR1cm4gc3RhY2s7XG4gIH07XG5cbiAgdmFy
IGRpZFdhcm4gPSB7fTtcblxuICB2YWxpZGF0ZURPTU5lc3RpbmcgPSBmdW5jdGlvbiAoY2hpbGRU
YWcsIGNoaWxkVGV4dCwgY2hpbGRJbnN0YW5jZSwgYW5jZXN0b3JJbmZvKSB7XG4gICAgYW5jZXN0
b3JJbmZvID0gYW5jZXN0b3JJbmZvIHx8IGVtcHR5QW5jZXN0b3JJbmZvO1xuICAgIHZhciBwYXJl
bnRJbmZvID0gYW5jZXN0b3JJbmZvLmN1cnJlbnQ7XG4gICAgdmFyIHBhcmVudFRhZyA9IHBhcmVu
dEluZm8gJiYgcGFyZW50SW5mby50YWc7XG5cbiAgICBpZiAoY2hpbGRUZXh0ICE9IG51bGwpIHtc
biAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGNo
aWxkVGFnID09IG51bGwsICd2YWxpZGF0ZURPTU5lc3Rpbmc6IHdoZW4gY2hpbGRUZXh0IGlzIHBh
c3NlZCwgY2hpbGRUYWcgc2hvdWxkIGJlIG51bGwnKSA6IHZvaWQgMDtcbiAgICAgIGNoaWxkVGFn
ID0gJyN0ZXh0JztcbiAgICB9XG5cbiAgICB2YXIgaW52YWxpZFBhcmVudCA9IGlzVGFnVmFsaWRX
aXRoUGFyZW50KGNoaWxkVGFnLCBwYXJlbnRUYWcpID8gbnVsbCA6IHBhcmVudEluZm87XG4gICAg
dmFyIGludmFsaWRBbmNlc3RvciA9IGludmFsaWRQYXJlbnQgPyBudWxsIDogZmluZEludmFsaWRB
bmNlc3RvckZvclRhZyhjaGlsZFRhZywgYW5jZXN0b3JJbmZvKTtcbiAgICB2YXIgcHJvYmxlbWF0
aWMgPSBpbnZhbGlkUGFyZW50IHx8IGludmFsaWRBbmNlc3RvcjtcblxuICAgIGlmIChwcm9ibGVt
YXRpYykge1xuICAgICAgdmFyIGFuY2VzdG9yVGFnID0gcHJvYmxlbWF0aWMudGFnO1xuICAgICAg
dmFyIGFuY2VzdG9ySW5zdGFuY2UgPSBwcm9ibGVtYXRpYy5pbnN0YW5jZTtcblxuICAgICAgdmFy
IGNoaWxkT3duZXIgPSBjaGlsZEluc3RhbmNlICYmIGNoaWxkSW5zdGFuY2UuX2N1cnJlbnRFbGVt
ZW50Ll9vd25lcjtcbiAgICAgIHZhciBhbmNlc3Rvck93bmVyID0gYW5jZXN0b3JJbnN0YW5jZSAm
JiBhbmNlc3Rvckluc3RhbmNlLl9jdXJyZW50RWxlbWVudC5fb3duZXI7XG5cbiAgICAgIHZhciBj
aGlsZE93bmVycyA9IGZpbmRPd25lclN0YWNrKGNoaWxkT3duZXIpO1xuICAgICAgdmFyIGFuY2Vz
dG9yT3duZXJzID0gZmluZE93bmVyU3RhY2soYW5jZXN0b3JPd25lcik7XG5cbiAgICAgIHZhciBt
aW5TdGFja0xlbiA9IE1hdGgubWluKGNoaWxkT3duZXJzLmxlbmd0aCwgYW5jZXN0b3JPd25lcnMu
bGVuZ3RoKTtcbiAgICAgIHZhciBpO1xuXG4gICAgICB2YXIgZGVlcGVzdENvbW1vbiA9IC0xO1xu
ICAgICAgZm9yIChpID0gMDsgaSA8IG1pblN0YWNrTGVuOyBpKyspIHtcbiAgICAgICAgaWYgKGNo
aWxkT3duZXJzW2ldID09PSBhbmNlc3Rvck93bmVyc1tpXSkge1xuICAgICAgICAgIGRlZXBlc3RD
b21tb24gPSBpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9
XG4gICAgICB9XG5cbiAgICAgIHZhciBVTktOT1dOID0gJyh1bmtub3duKSc7XG4gICAgICB2YXIg
Y2hpbGRPd25lck5hbWVzID0gY2hpbGRPd25lcnMuc2xpY2UoZGVlcGVzdENvbW1vbiArIDEpLm1h
cChmdW5jdGlvbiAoaW5zdCkge1xuICAgICAgICByZXR1cm4gaW5zdC5nZXROYW1lKCkgfHwgVU5L
Tk9XTjtcbiAgICAgIH0pO1xuICAgICAgdmFyIGFuY2VzdG9yT3duZXJOYW1lcyA9IGFuY2VzdG9y
T3duZXJzLnNsaWNlKGRlZXBlc3RDb21tb24gKyAxKS5tYXAoZnVuY3Rpb24gKGluc3QpIHtcbiAg
ICAgICAgcmV0dXJuIGluc3QuZ2V0TmFtZSgpIHx8IFVOS05PV047XG4gICAgICB9KTtcbiAgICAg
IHZhciBvd25lckluZm8gPSBbXS5jb25jYXQoXG4gICAgICAvLyBJZiB0aGUgcGFyZW50IGFuZCBj
aGlsZCBpbnN0YW5jZXMgaGF2ZSBhIGNvbW1vbiBvd25lciBhbmNlc3Rvciwgc3RhcnRcbiAgICAg
IC8vIHdpdGggdGhhdCAtLSBvdGhlcndpc2Ugd2UganVzdCBzdGFydCB3aXRoIHRoZSBwYXJlbnQn
cyBvd25lcnMuXG4gICAgICBkZWVwZXN0Q29tbW9uICE9PSAtMSA/IGNoaWxkT3duZXJzW2RlZXBl
c3RDb21tb25dLmdldE5hbWUoKSB8fCBVTktOT1dOIDogW10sIGFuY2VzdG9yT3duZXJOYW1lcywg
YW5jZXN0b3JUYWcsXG4gICAgICAvLyBJZiB3ZSdyZSB3YXJuaW5nIGFib3V0IGFuIGludmFsaWQg
KG5vbi1wYXJlbnQpIGFuY2VzdHJ5LCBhZGQgJy4uLidcbiAgICAgIGludmFsaWRBbmNlc3RvciA/
IFsnLi4uJ10gOiBbXSwgY2hpbGRPd25lck5hbWVzLCBjaGlsZFRhZykuam9pbignID4gJyk7XG5c
biAgICAgIHZhciB3YXJuS2V5ID0gISFpbnZhbGlkUGFyZW50ICsgJ3wnICsgY2hpbGRUYWcgKyAn
fCcgKyBhbmNlc3RvclRhZyArICd8JyArIG93bmVySW5mbztcbiAgICAgIGlmIChkaWRXYXJuW3dh
cm5LZXldKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGRpZFdhcm5bd2Fybktl
eV0gPSB0cnVlO1xuXG4gICAgICB2YXIgdGFnRGlzcGxheU5hbWUgPSBjaGlsZFRhZztcbiAgICAg
IHZhciB3aGl0ZXNwYWNlSW5mbyA9ICcnO1xuICAgICAgaWYgKGNoaWxkVGFnID09PSAnI3RleHQn
KSB7XG4gICAgICAgIGlmICgvXFxTLy50ZXN0KGNoaWxkVGV4dCkpIHtcbiAgICAgICAgICB0YWdE
aXNwbGF5TmFtZSA9ICdUZXh0IG5vZGVzJztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0
YWdEaXNwbGF5TmFtZSA9ICdXaGl0ZXNwYWNlIHRleHQgbm9kZXMnO1xuICAgICAgICAgIHdoaXRl
c3BhY2VJbmZvID0gXCIgTWFrZSBzdXJlIHlvdSBkb24ndCBoYXZlIGFueSBleHRyYSB3aGl0ZXNw
YWNlIGJldHdlZW4gdGFncyBvbiBcIiArICdlYWNoIGxpbmUgb2YgeW91ciBzb3VyY2UgY29kZS4n
O1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0YWdEaXNwbGF5TmFtZSA9ICc8
JyArIGNoaWxkVGFnICsgJz4nO1xuICAgICAgfVxuXG4gICAgICBpZiAoaW52YWxpZFBhcmVudCkg
e1xuICAgICAgICB2YXIgaW5mbyA9ICcnO1xuICAgICAgICBpZiAoYW5jZXN0b3JUYWcgPT09ICd0
YWJsZScgJiYgY2hpbGRUYWcgPT09ICd0cicpIHtcbiAgICAgICAgICBpbmZvICs9ICcgQWRkIGEg
PHRib2R5PiB0byB5b3VyIGNvZGUgdG8gbWF0Y2ggdGhlIERPTSB0cmVlIGdlbmVyYXRlZCBieSAn
ICsgJ3RoZSBicm93c2VyLic7XG4gICAgICAgIH1cbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICd2YWxpZGF0ZURPTU5lc3Rpbmco
Li4uKTogJXMgY2Fubm90IGFwcGVhciBhcyBhIGNoaWxkIG9mIDwlcz4uJXMgJyArICdTZWUgJXMu
JXMnLCB0YWdEaXNwbGF5TmFtZSwgYW5jZXN0b3JUYWcsIHdoaXRlc3BhY2VJbmZvLCBvd25lcklu
Zm8sIGluZm8pIDogdm9pZCAwO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICd2YWxpZGF0ZURPTU5l
c3RpbmcoLi4uKTogJXMgY2Fubm90IGFwcGVhciBhcyBhIGRlc2NlbmRhbnQgb2YgJyArICc8JXM+
LiBTZWUgJXMuJywgdGFnRGlzcGxheU5hbWUsIGFuY2VzdG9yVGFnLCBvd25lckluZm8pIDogdm9p
ZCAwO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICB2YWxpZGF0ZURPTU5lc3RpbmcudXBkYXRl
ZEFuY2VzdG9ySW5mbyA9IHVwZGF0ZWRBbmNlc3RvckluZm87XG5cbiAgLy8gRm9yIHRlc3Rpbmdc
biAgdmFsaWRhdGVET01OZXN0aW5nLmlzVGFnVmFsaWRJbkNvbnRleHQgPSBmdW5jdGlvbiAodGFn
LCBhbmNlc3RvckluZm8pIHtcbiAgICBhbmNlc3RvckluZm8gPSBhbmNlc3RvckluZm8gfHwgZW1w
dHlBbmNlc3RvckluZm87XG4gICAgdmFyIHBhcmVudEluZm8gPSBhbmNlc3RvckluZm8uY3VycmVu
dDtcbiAgICB2YXIgcGFyZW50VGFnID0gcGFyZW50SW5mbyAmJiBwYXJlbnRJbmZvLnRhZztcbiAg
ICByZXR1cm4gaXNUYWdWYWxpZFdpdGhQYXJlbnQodGFnLCBwYXJlbnRUYWcpICYmICFmaW5kSW52
YWxpZEFuY2VzdG9yRm9yVGFnKHRhZywgYW5jZXN0b3JJbmZvKTtcbiAgfTtcbn1cblxubW9kdWxl
LmV4cG9ydHMgPSB2YWxpZGF0ZURPTU5lc3Rpbmc7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4g
KiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi92YWxpZGF0ZURPTU5lc3Rp
bmcuanNcbiAqKiBtb2R1bGUgaWQgPSA0OVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwi
J3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5kZWZh
dWx0ID0gd2FybmluZztcbi8qKlxuICogUHJpbnRzIGEgd2FybmluZyBpbiB0aGUgY29uc29sZSBp
ZiBpdCBleGlzdHMuXG4gKlxuICogQHBhcmFtIHtTdHJpbmd9IG1lc3NhZ2UgVGhlIHdhcm5pbmcg
bWVzc2FnZS5cbiAqIEByZXR1cm5zIHt2b2lkfVxuICovXG5mdW5jdGlvbiB3YXJuaW5nKG1lc3Nh
Z2UpIHtcbiAgLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuICBpZiAodHlwZW9mIGNv
bnNvbGUgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBjb25zb2xlLmVycm9yID09PSAnZnVuY3Rp
b24nKSB7XG4gICAgY29uc29sZS5lcnJvcihtZXNzYWdlKTtcbiAgfVxuICAvKiBlc2xpbnQtZW5h
YmxlIG5vLWNvbnNvbGUgKi9cbiAgdHJ5IHtcbiAgICAvLyBUaGlzIGVycm9yIHdhcyB0aHJvd24g
YXMgYSBjb252ZW5pZW5jZSBzbyB0aGF0IGlmIHlvdSBlbmFibGVcbiAgICAvLyBcImJyZWFrIG9u
IGFsbCBleGNlcHRpb25zXCIgaW4geW91ciBjb25zb2xlLFxuICAgIC8vIGl0IHdvdWxkIHBhdXNl
IHRoZSBleGVjdXRpb24gYXQgdGhpcyBsaW5lLlxuICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdl
KTtcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBuby1lbXB0eSAqL1xuICB9IGNhdGNoIChlKSB7fVxu
ICAvKiBlc2xpbnQtZW5hYmxlIG5vLWVtcHR5ICovXG59XG5cblxuLyoqKioqKioqKioqKioqKioq
XG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtcmVkdXgvbGliL3V0aWxzL3dhcm5p
bmcuanNcbiAqKiBtb2R1bGUgaWQgPSA1MFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwi
J3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
biAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHR5cGVj
aGVja3NcbiAqL1xuXG52YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoJy4vZW1wdHlGdW5jdGlv
bicpO1xuXG4vKipcbiAqIFVwc3RyZWFtIHZlcnNpb24gb2YgZXZlbnQgbGlzdGVuZXIuIERvZXMg
bm90IHRha2UgaW50byBhY2NvdW50IHNwZWNpZmljXG4gKiBuYXR1cmUgb2YgcGxhdGZvcm0uXG4g
Ki9cbnZhciBFdmVudExpc3RlbmVyID0ge1xuICAvKipcbiAgICogTGlzdGVuIHRvIERPTSBldmVu
dHMgZHVyaW5nIHRoZSBidWJibGUgcGhhc2UuXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRXZlbnRU
YXJnZXR9IHRhcmdldCBET00gZWxlbWVudCB0byByZWdpc3RlciBsaXN0ZW5lciBvbi5cbiAgICog
QHBhcmFtIHtzdHJpbmd9IGV2ZW50VHlwZSBFdmVudCB0eXBlLCBlLmcuICdjbGljaycgb3IgJ21v
dXNlb3ZlcicuXG4gICAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIENhbGxiYWNrIGZ1bmN0
aW9uLlxuICAgKiBAcmV0dXJuIHtvYmplY3R9IE9iamVjdCB3aXRoIGEgYHJlbW92ZWAgbWV0aG9k
LlxuICAgKi9cbiAgbGlzdGVuOiBmdW5jdGlvbiBsaXN0ZW4odGFyZ2V0LCBldmVudFR5cGUsIGNh
bGxiYWNrKSB7XG4gICAgaWYgKHRhcmdldC5hZGRFdmVudExpc3RlbmVyKSB7XG4gICAgICB0YXJn
ZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGNhbGxiYWNrLCBmYWxzZSk7XG4gICAgICBy
ZXR1cm4ge1xuICAgICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAgICAgICB0
YXJnZXQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGNhbGxiYWNrLCBmYWxzZSk7XG4g
ICAgICAgIH1cbiAgICAgIH07XG4gICAgfSBlbHNlIGlmICh0YXJnZXQuYXR0YWNoRXZlbnQpIHtc
biAgICAgIHRhcmdldC5hdHRhY2hFdmVudCgnb24nICsgZXZlbnRUeXBlLCBjYWxsYmFjayk7XG4g
ICAgICByZXR1cm4ge1xuICAgICAgICByZW1vdmU6IGZ1bmN0aW9uIHJlbW92ZSgpIHtcbiAgICAg
ICAgICB0YXJnZXQuZGV0YWNoRXZlbnQoJ29uJyArIGV2ZW50VHlwZSwgY2FsbGJhY2spO1xuICAg
ICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogTGlzdGVuIHRvIERP
TSBldmVudHMgZHVyaW5nIHRoZSBjYXB0dXJlIHBoYXNlLlxuICAgKlxuICAgKiBAcGFyYW0ge0RP
TUV2ZW50VGFyZ2V0fSB0YXJnZXQgRE9NIGVsZW1lbnQgdG8gcmVnaXN0ZXIgbGlzdGVuZXIgb24u
XG4gICAqIEBwYXJhbSB7c3RyaW5nfSBldmVudFR5cGUgRXZlbnQgdHlwZSwgZS5nLiAnY2xpY2sn
IG9yICdtb3VzZW92ZXInLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBDYWxsYmFj
ayBmdW5jdGlvbi5cbiAgICogQHJldHVybiB7b2JqZWN0fSBPYmplY3Qgd2l0aCBhIGByZW1vdmVg
IG1ldGhvZC5cbiAgICovXG4gIGNhcHR1cmU6IGZ1bmN0aW9uIGNhcHR1cmUodGFyZ2V0LCBldmVu
dFR5cGUsIGNhbGxiYWNrKSB7XG4gICAgaWYgKHRhcmdldC5hZGRFdmVudExpc3RlbmVyKSB7XG4g
ICAgICB0YXJnZXQuYWRkRXZlbnRMaXN0ZW5lcihldmVudFR5cGUsIGNhbGxiYWNrLCB0cnVlKTtc
biAgICAgIHJldHVybiB7XG4gICAgICAgIHJlbW92ZTogZnVuY3Rpb24gcmVtb3ZlKCkge1xuICAg
ICAgICAgIHRhcmdldC5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgY2FsbGJhY2ssIHRy
dWUpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBjb25zb2xlLmVycm9y
KCdBdHRlbXB0ZWQgdG8gbGlzdGVuIHRvIGV2ZW50cyBkdXJpbmcgdGhlIGNhcHR1cmUgcGhhc2Ug
b24gYSAnICsgJ2Jyb3dzZXIgdGhhdCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBjYXB0dXJlIHBoYXNl
LiBZb3VyIGFwcGxpY2F0aW9uICcgKyAnd2lsbCBub3QgcmVjZWl2ZSBzb21lIGV2ZW50cy4nKTtc
biAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJlbW92ZTogZW1wdHlGdW5jdGlvblxu
ICAgICAgfTtcbiAgICB9XG4gIH0sXG5cbiAgcmVnaXN0ZXJEZWZhdWx0OiBmdW5jdGlvbiByZWdp
c3RlckRlZmF1bHQoKSB7fVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBFdmVudExpc3RlbmVyO1xu
XG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2ZianMv
bGliL0V2ZW50TGlzdGVuZXIuanNcbiAqKiBtb2R1bGUgaWQgPSA1MVxuICoqIG1vZHVsZSBjaHVu
a3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4g
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNl
IHN0cmljdCc7XG5cbi8qKlxuICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlIGlucHV0L3RleHRh
cmVhIHRvIGZvY3VzXG4gKi9cblxuZnVuY3Rpb24gZm9jdXNOb2RlKG5vZGUpIHtcbiAgLy8gSUU4
IGNhbiB0aHJvdyBcIkNhbid0IG1vdmUgZm9jdXMgdG8gdGhlIGNvbnRyb2wgYmVjYXVzZSBpdCBp
cyBpbnZpc2libGUsXG4gIC8vIG5vdCBlbmFibGVkLCBvciBvZiBhIHR5cGUgdGhhdCBkb2VzIG5v
dCBhY2NlcHQgdGhlIGZvY3VzLlwiIGZvciBhbGwga2luZHMgb2ZcbiAgLy8gcmVhc29ucyB0aGF0
IGFyZSB0b28gZXhwZW5zaXZlIGFuZCBmcmFnaWxlIHRvIHRlc3QuXG4gIHRyeSB7XG4gICAgbm9k
ZS5mb2N1cygpO1xuICB9IGNhdGNoIChlKSB7fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZvY3Vz
Tm9kZTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4v
fi9mYmpzL2xpYi9mb2N1c05vZGUuanNcbiAqKiBtb2R1bGUgaWQgPSA1MlxuICoqIG1vZHVsZSBj
aHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIENvcHlyaWdodCAoYykg
MjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAq
XG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGlj
ZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkg
b2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJp
Z2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3Rv
cnkuXG4gKlxuICogQHR5cGVjaGVja3NcbiAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBmYi13d3cv
dHlwZW9mLXVuZGVmaW5lZCAqL1xuXG4vKipcbiAqIFNhbWUgYXMgZG9jdW1lbnQuYWN0aXZlRWxl
bWVudCBidXQgd3JhcHMgaW4gYSB0cnktY2F0Y2ggYmxvY2suIEluIElFIGl0IGlzXG4gKiBub3Qg
c2FmZSB0byBjYWxsIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgaWYgdGhlcmUgaXMgbm90aGluZyBm
b2N1c2VkLlxuICpcbiAqIFRoZSBhY3RpdmVFbGVtZW50IHdpbGwgYmUgbnVsbCBvbmx5IGlmIHRo
ZSBkb2N1bWVudCBvciBkb2N1bWVudCBib2R5IGlzIG5vdFxuICogeWV0IGRlZmluZWQuXG4gKlxu
ICogQHBhcmFtIHs/RE9NRG9jdW1lbnR9IGRvYyBEZWZhdWx0cyB0byBjdXJyZW50IGRvY3VtZW50
LlxuICogQHJldHVybiB7P0RPTUVsZW1lbnR9XG4gKi9cbmZ1bmN0aW9uIGdldEFjdGl2ZUVsZW1l
bnQoZG9jKSAvKj9ET01FbGVtZW50Ki97XG4gIGRvYyA9IGRvYyB8fCAodHlwZW9mIGRvY3VtZW50
ICE9PSAndW5kZWZpbmVkJyA/IGRvY3VtZW50IDogdW5kZWZpbmVkKTtcbiAgaWYgKHR5cGVvZiBk
b2MgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgdHJ5IHtcbiAg
ICByZXR1cm4gZG9jLmFjdGl2ZUVsZW1lbnQgfHwgZG9jLmJvZHk7XG4gIH0gY2F0Y2ggKGUpIHtc
biAgICByZXR1cm4gZG9jLmJvZHk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRBY3Rp
dmVFbGVtZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4g
KiogLi9+L2ZianMvbGliL2dldEFjdGl2ZUVsZW1lbnQuanNcbiAqKiBtb2R1bGUgaWQgPSA1M1xu
ICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwidmFyIHJvb3QgPSByZXF1aXJlKCcuL19yb290
Jyk7XG5cbi8qKiBCdWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIFN5bWJvbCA9IHJv
b3QuU3ltYm9sO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bWJvbDtcblxuXG5cbi8qKioqKioqKioq
KioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFzaC9fU3ltYm9sLmpzXG4g
KiogbW9kdWxlIGlkID0gNTRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLy8gUmVhY3QgMTUuNSByZWZl
cmVuY2VzIHRoaXMgbW9kdWxlLCBhbmQgYXNzdW1lcyBQcm9wVHlwZXMgYXJlIHN0aWxsIGNhbGxh
YmxlIGluIHByb2R1Y3Rpb24uXG4vLyBUaGVyZWZvcmUgd2UgcmUtZXhwb3J0IGRldmVsb3BtZW50
LW9ubHkgdmVyc2lvbiB3aXRoIGFsbCB0aGUgUHJvcFR5cGVzIGNoZWNrcyBoZXJlLlxuLy8gSG93
ZXZlciBpZiBvbmUgaXMgbWlncmF0aW5nIHRvIHRoZSBgcHJvcC10eXBlc2AgbnBtIGxpYnJhcnks
IHRoZXkgd2lsbCBnbyB0aHJvdWdoIHRoZVxuLy8gYGluZGV4LmpzYCBlbnRyeSBwb2ludCwgYW5k
IGl0IHdpbGwgYnJhbmNoIGRlcGVuZGluZyBvbiB0aGUgZW52aXJvbm1lbnQuXG52YXIgZmFjdG9y
eSA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMnKTtcbm1vZHVsZS5leHBvcnRz
ID0gZnVuY3Rpb24oaXNWYWxpZEVsZW1lbnQpIHtcbiAgLy8gSXQgaXMgc3RpbGwgYWxsb3dlZCBp
biAxNS41LlxuICB2YXIgdGhyb3dPbkRpcmVjdEFjY2VzcyA9IGZhbHNlO1xuICByZXR1cm4gZmFj
dG9yeShpc1ZhbGlkRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcyk7XG59O1xuXG5cblxuLyoq
KioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcHJvcC10eXBlcy9m
YWN0b3J5LmpzXG4gKiogbW9kdWxlIGlkID0gNTVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoq
LyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICovXG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSAodHlwZW9m
IFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgIFN5bWJvbC5mb3IgJiZcbiAgICBTeW1ib2wu
Zm9yKCdyZWFjdC5lbGVtZW50JykpIHx8XG4gICAgMHhlYWM3O1xuXG4gIHZhciBpc1ZhbGlkRWxl
bWVudCA9IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHJldHVybiB0eXBlb2Ygb2JqZWN0ID09PSAn
b2JqZWN0JyAmJlxuICAgICAgb2JqZWN0ICE9PSBudWxsICYmXG4gICAgICBvYmplY3QuJCR0eXBl
b2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRTtcbiAgfTtcblxuICAvLyBCeSBleHBsaWNpdGx5IHVz
aW5nIGBwcm9wLXR5cGVzYCB5b3UgYXJlIG9wdGluZyBpbnRvIG5ldyBkZXZlbG9wbWVudCBiZWhh
dmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICB2YXIgdGhyb3dP
bkRpcmVjdEFjY2VzcyA9IHRydWU7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9mYWN0
b3J5V2l0aFR5cGVDaGVja2VycycpKGlzVmFsaWRFbGVtZW50LCB0aHJvd09uRGlyZWN0QWNjZXNz
KTtcbn0gZWxzZSB7XG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBh
cmUgb3B0aW5nIGludG8gbmV3IHByb2R1Y3Rpb24gYmVoYXZpb3IuXG4gIC8vIGh0dHA6Ly9mYi5t
ZS9wcm9wLXR5cGVzLWluLXByb2RcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3Rv
cnlXaXRoVGhyb3dpbmdTaGltcycpKCk7XG59XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAq
KiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9wcm9wLXR5cGVzL2luZGV4LmpzXG4gKiogbW9kdWxl
IGlkID0gNTZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4g
KlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0g
J1NFQ1JFVF9ET19OT1RfUEFTU19USElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEJztcblxubW9kdWxl
LmV4cG9ydHMgPSBSZWFjdFByb3BUeXBlc1NlY3JldDtcblxuXG5cbi8qKioqKioqKioqKioqKioq
KlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5
cGVzU2VjcmV0LmpzXG4gKiogbW9kdWxlIGlkID0gNTdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxu
ICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5c
bi8qKlxuICogQ1NTIHByb3BlcnRpZXMgd2hpY2ggYWNjZXB0IG51bWJlcnMgYnV0IGFyZSBub3Qg
aW4gdW5pdHMgb2YgXCJweFwiLlxuICovXG5cbnZhciBpc1VuaXRsZXNzTnVtYmVyID0ge1xuICBh
bmltYXRpb25JdGVyYXRpb25Db3VudDogdHJ1ZSxcbiAgYm9yZGVySW1hZ2VPdXRzZXQ6IHRydWUs
XG4gIGJvcmRlckltYWdlU2xpY2U6IHRydWUsXG4gIGJvcmRlckltYWdlV2lkdGg6IHRydWUsXG4g
IGJveEZsZXg6IHRydWUsXG4gIGJveEZsZXhHcm91cDogdHJ1ZSxcbiAgYm94T3JkaW5hbEdyb3Vw
OiB0cnVlLFxuICBjb2x1bW5Db3VudDogdHJ1ZSxcbiAgZmxleDogdHJ1ZSxcbiAgZmxleEdyb3c6
IHRydWUsXG4gIGZsZXhQb3NpdGl2ZTogdHJ1ZSxcbiAgZmxleFNocmluazogdHJ1ZSxcbiAgZmxl
eE5lZ2F0aXZlOiB0cnVlLFxuICBmbGV4T3JkZXI6IHRydWUsXG4gIGdyaWRSb3c6IHRydWUsXG4g
IGdyaWRSb3dFbmQ6IHRydWUsXG4gIGdyaWRSb3dTcGFuOiB0cnVlLFxuICBncmlkUm93U3RhcnQ6
IHRydWUsXG4gIGdyaWRDb2x1bW46IHRydWUsXG4gIGdyaWRDb2x1bW5FbmQ6IHRydWUsXG4gIGdy
aWRDb2x1bW5TcGFuOiB0cnVlLFxuICBncmlkQ29sdW1uU3RhcnQ6IHRydWUsXG4gIGZvbnRXZWln
aHQ6IHRydWUsXG4gIGxpbmVDbGFtcDogdHJ1ZSxcbiAgbGluZUhlaWdodDogdHJ1ZSxcbiAgb3Bh
Y2l0eTogdHJ1ZSxcbiAgb3JkZXI6IHRydWUsXG4gIG9ycGhhbnM6IHRydWUsXG4gIHRhYlNpemU6
IHRydWUsXG4gIHdpZG93czogdHJ1ZSxcbiAgekluZGV4OiB0cnVlLFxuICB6b29tOiB0cnVlLFxu
XG4gIC8vIFNWRy1yZWxhdGVkIHByb3BlcnRpZXNcbiAgZmlsbE9wYWNpdHk6IHRydWUsXG4gIGZs
b29kT3BhY2l0eTogdHJ1ZSxcbiAgc3RvcE9wYWNpdHk6IHRydWUsXG4gIHN0cm9rZURhc2hhcnJh
eTogdHJ1ZSxcbiAgc3Ryb2tlRGFzaG9mZnNldDogdHJ1ZSxcbiAgc3Ryb2tlTWl0ZXJsaW1pdDog
dHJ1ZSxcbiAgc3Ryb2tlT3BhY2l0eTogdHJ1ZSxcbiAgc3Ryb2tlV2lkdGg6IHRydWVcbn07XG5c
bi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHByZWZpeCB2ZW5kb3Itc3BlY2lmaWMgcHJlZml4LCBl
ZzogV2Via2l0XG4gKiBAcGFyYW0ge3N0cmluZ30ga2V5IHN0eWxlIG5hbWUsIGVnOiB0cmFuc2l0
aW9uRHVyYXRpb25cbiAqIEByZXR1cm4ge3N0cmluZ30gc3R5bGUgbmFtZSBwcmVmaXhlZCB3aXRo
IGBwcmVmaXhgLCBwcm9wZXJseSBjYW1lbENhc2VkLCBlZzpcbiAqIFdlYmtpdFRyYW5zaXRpb25E
dXJhdGlvblxuICovXG5mdW5jdGlvbiBwcmVmaXhLZXkocHJlZml4LCBrZXkpIHtcbiAgcmV0dXJu
IHByZWZpeCArIGtleS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIGtleS5zdWJzdHJpbmcoMSk7
XG59XG5cbi8qKlxuICogU3VwcG9ydCBzdHlsZSBuYW1lcyB0aGF0IG1heSBjb21lIHBhc3NlZCBp
biBwcmVmaXhlZCBieSBhZGRpbmcgcGVybXV0YXRpb25zXG4gKiBvZiB2ZW5kb3IgcHJlZml4ZXMu
XG4gKi9cbnZhciBwcmVmaXhlcyA9IFsnV2Via2l0JywgJ21zJywgJ01veicsICdPJ107XG5cbi8v
IFVzaW5nIE9iamVjdC5rZXlzIGhlcmUsIG9yIGVsc2UgdGhlIHZhbmlsbGEgZm9yLWluIGxvb3Ag
bWFrZXMgSUU4IGdvIGludG8gYW5cbi8vIGluZmluaXRlIGxvb3AsIGJlY2F1c2UgaXQgaXRlcmF0
ZXMgb3ZlciB0aGUgbmV3bHkgYWRkZWQgcHJvcHMgdG9vLlxuT2JqZWN0LmtleXMoaXNVbml0bGVz
c051bWJlcikuZm9yRWFjaChmdW5jdGlvbiAocHJvcCkge1xuICBwcmVmaXhlcy5mb3JFYWNoKGZ1
bmN0aW9uIChwcmVmaXgpIHtcbiAgICBpc1VuaXRsZXNzTnVtYmVyW3ByZWZpeEtleShwcmVmaXgs
IHByb3ApXSA9IGlzVW5pdGxlc3NOdW1iZXJbcHJvcF07XG4gIH0pO1xufSk7XG5cbi8qKlxuICog
TW9zdCBzdHlsZSBwcm9wZXJ0aWVzIGNhbiBiZSB1bnNldCBieSBkb2luZyAuc3R5bGVbcHJvcF0g
PSAnJyBidXQgSUU4XG4gKiBkb2Vzbid0IGxpa2UgZG9pbmcgdGhhdCB3aXRoIHNob3J0aGFuZCBw
cm9wZXJ0aWVzIHNvIGZvciB0aGUgcHJvcGVydGllcyB0aGF0XG4gKiBJRTggYnJlYWtzIG9uLCB3
aGljaCBhcmUgbGlzdGVkIGhlcmUsIHdlIGluc3RlYWQgdW5zZXQgZWFjaCBvZiB0aGVcbiAqIGlu
ZGl2aWR1YWwgcHJvcGVydGllcy4gU2VlIGh0dHA6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzEy
Mzg1LlxuICogVGhlIDQtdmFsdWUgJ2Nsb2NrJyBwcm9wZXJ0aWVzIGxpa2UgbWFyZ2luLCBwYWRk
aW5nLCBib3JkZXItd2lkdGggc2VlbSB0b1xuICogYmVoYXZlIHdpdGhvdXQgYW55IHByb2JsZW1z
LiBDdXJpb3VzbHksIGxpc3Qtc3R5bGUgd29ya3MgdG9vIHdpdGhvdXQgYW55XG4gKiBzcGVjaWFs
IHByb2RkaW5nLlxuICovXG52YXIgc2hvcnRoYW5kUHJvcGVydHlFeHBhbnNpb25zID0ge1xuICBi
YWNrZ3JvdW5kOiB7XG4gICAgYmFja2dyb3VuZEF0dGFjaG1lbnQ6IHRydWUsXG4gICAgYmFja2dy
b3VuZENvbG9yOiB0cnVlLFxuICAgIGJhY2tncm91bmRJbWFnZTogdHJ1ZSxcbiAgICBiYWNrZ3Jv
dW5kUG9zaXRpb25YOiB0cnVlLFxuICAgIGJhY2tncm91bmRQb3NpdGlvblk6IHRydWUsXG4gICAg
YmFja2dyb3VuZFJlcGVhdDogdHJ1ZVxuICB9LFxuICBiYWNrZ3JvdW5kUG9zaXRpb246IHtcbiAg
ICBiYWNrZ3JvdW5kUG9zaXRpb25YOiB0cnVlLFxuICAgIGJhY2tncm91bmRQb3NpdGlvblk6IHRy
dWVcbiAgfSxcbiAgYm9yZGVyOiB7XG4gICAgYm9yZGVyV2lkdGg6IHRydWUsXG4gICAgYm9yZGVy
U3R5bGU6IHRydWUsXG4gICAgYm9yZGVyQ29sb3I6IHRydWVcbiAgfSxcbiAgYm9yZGVyQm90dG9t
OiB7XG4gICAgYm9yZGVyQm90dG9tV2lkdGg6IHRydWUsXG4gICAgYm9yZGVyQm90dG9tU3R5bGU6
IHRydWUsXG4gICAgYm9yZGVyQm90dG9tQ29sb3I6IHRydWVcbiAgfSxcbiAgYm9yZGVyTGVmdDog
e1xuICAgIGJvcmRlckxlZnRXaWR0aDogdHJ1ZSxcbiAgICBib3JkZXJMZWZ0U3R5bGU6IHRydWUs
XG4gICAgYm9yZGVyTGVmdENvbG9yOiB0cnVlXG4gIH0sXG4gIGJvcmRlclJpZ2h0OiB7XG4gICAg
Ym9yZGVyUmlnaHRXaWR0aDogdHJ1ZSxcbiAgICBib3JkZXJSaWdodFN0eWxlOiB0cnVlLFxuICAg
IGJvcmRlclJpZ2h0Q29sb3I6IHRydWVcbiAgfSxcbiAgYm9yZGVyVG9wOiB7XG4gICAgYm9yZGVy
VG9wV2lkdGg6IHRydWUsXG4gICAgYm9yZGVyVG9wU3R5bGU6IHRydWUsXG4gICAgYm9yZGVyVG9w
Q29sb3I6IHRydWVcbiAgfSxcbiAgZm9udDoge1xuICAgIGZvbnRTdHlsZTogdHJ1ZSxcbiAgICBm
b250VmFyaWFudDogdHJ1ZSxcbiAgICBmb250V2VpZ2h0OiB0cnVlLFxuICAgIGZvbnRTaXplOiB0
cnVlLFxuICAgIGxpbmVIZWlnaHQ6IHRydWUsXG4gICAgZm9udEZhbWlseTogdHJ1ZVxuICB9LFxu
ICBvdXRsaW5lOiB7XG4gICAgb3V0bGluZVdpZHRoOiB0cnVlLFxuICAgIG91dGxpbmVTdHlsZTog
dHJ1ZSxcbiAgICBvdXRsaW5lQ29sb3I6IHRydWVcbiAgfVxufTtcblxudmFyIENTU1Byb3BlcnR5
ID0ge1xuICBpc1VuaXRsZXNzTnVtYmVyOiBpc1VuaXRsZXNzTnVtYmVyLFxuICBzaG9ydGhhbmRQ
cm9wZXJ0eUV4cGFuc2lvbnM6IHNob3J0aGFuZFByb3BlcnR5RXhwYW5zaW9uc1xufTtcblxubW9k
dWxlLmV4cG9ydHMgPSBDU1NQcm9wZXJ0eTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBX
RUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL0NTU1Byb3BlcnR5LmpzXG4gKiog
bW9kdWxlIGlkID0gNThcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52
YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxuZnVuY3Rpb24gX2Ns
YXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0
YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwg
YSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxudmFyIFBvb2xlZENsYXNzID0gcmVxdWly
ZSgnLi9Qb29sZWRDbGFzcycpO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIv
aW52YXJpYW50Jyk7XG5cbi8qKlxuICogQSBzcGVjaWFsaXplZCBwc2V1ZG8tZXZlbnQgbW9kdWxl
IHRvIGhlbHAga2VlcCB0cmFjayBvZiBjb21wb25lbnRzIHdhaXRpbmcgdG9cbiAqIGJlIG5vdGlm
aWVkIHdoZW4gdGhlaXIgRE9NIHJlcHJlc2VudGF0aW9ucyBhcmUgYXZhaWxhYmxlIGZvciB1c2Uu
XG4gKlxuICogVGhpcyBpbXBsZW1lbnRzIGBQb29sZWRDbGFzc2AsIHNvIHlvdSBzaG91bGQgbmV2
ZXIgbmVlZCB0byBpbnN0YW50aWF0ZSB0aGlzLlxuICogSW5zdGVhZCwgdXNlIGBDYWxsYmFja1F1
ZXVlLmdldFBvb2xlZCgpYC5cbiAqXG4gKiBAY2xhc3MgUmVhY3RNb3VudFJlYWR5XG4gKiBAaW1w
bGVtZW50cyBQb29sZWRDbGFzc1xuICogQGludGVybmFsXG4gKi9cblxudmFyIENhbGxiYWNrUXVl
dWUgPSBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIENhbGxiYWNrUXVldWUoYXJnKSB7XG4gICAg
X2NsYXNzQ2FsbENoZWNrKHRoaXMsIENhbGxiYWNrUXVldWUpO1xuXG4gICAgdGhpcy5fY2FsbGJh
Y2tzID0gbnVsbDtcbiAgICB0aGlzLl9jb250ZXh0cyA9IG51bGw7XG4gICAgdGhpcy5fYXJnID0g
YXJnO1xuICB9XG5cbiAgLyoqXG4gICAqIEVucXVldWVzIGEgY2FsbGJhY2sgdG8gYmUgaW52b2tl
ZCB3aGVuIGBub3RpZnlBbGxgIGlzIGludm9rZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7ZnVuY3Rp
b259IGNhbGxiYWNrIEludm9rZWQgd2hlbiBgbm90aWZ5QWxsYCBpcyBpbnZva2VkLlxuICAgKiBA
cGFyYW0gez9vYmplY3R9IGNvbnRleHQgQ29udGV4dCB0byBjYWxsIGBjYWxsYmFja2Agd2l0aC5c
biAgICogQGludGVybmFsXG4gICAqL1xuXG5cbiAgQ2FsbGJhY2tRdWV1ZS5wcm90b3R5cGUuZW5x
dWV1ZSA9IGZ1bmN0aW9uIGVucXVldWUoY2FsbGJhY2ssIGNvbnRleHQpIHtcbiAgICB0aGlzLl9j
YWxsYmFja3MgPSB0aGlzLl9jYWxsYmFja3MgfHwgW107XG4gICAgdGhpcy5fY2FsbGJhY2tzLnB1
c2goY2FsbGJhY2spO1xuICAgIHRoaXMuX2NvbnRleHRzID0gdGhpcy5fY29udGV4dHMgfHwgW107
XG4gICAgdGhpcy5fY29udGV4dHMucHVzaChjb250ZXh0KTtcbiAgfTtcblxuICAvKipcbiAgICog
SW52b2tlcyBhbGwgZW5xdWV1ZWQgY2FsbGJhY2tzIGFuZCBjbGVhcnMgdGhlIHF1ZXVlLiBUaGlz
IGlzIGludm9rZWQgYWZ0ZXJcbiAgICogdGhlIERPTSByZXByZXNlbnRhdGlvbiBvZiBhIGNvbXBv
bmVudCBoYXMgYmVlbiBjcmVhdGVkIG9yIHVwZGF0ZWQuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxu
ICAgKi9cblxuXG4gIENhbGxiYWNrUXVldWUucHJvdG90eXBlLm5vdGlmeUFsbCA9IGZ1bmN0aW9u
IG5vdGlmeUFsbCgpIHtcbiAgICB2YXIgY2FsbGJhY2tzID0gdGhpcy5fY2FsbGJhY2tzO1xuICAg
IHZhciBjb250ZXh0cyA9IHRoaXMuX2NvbnRleHRzO1xuICAgIHZhciBhcmcgPSB0aGlzLl9hcmc7
XG4gICAgaWYgKGNhbGxiYWNrcyAmJiBjb250ZXh0cykge1xuICAgICAgIShjYWxsYmFja3MubGVu
Z3RoID09PSBjb250ZXh0cy5sZW5ndGgpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ01pc21hdGNoZWQgbGlzdCBvZiBjb250ZXh0cyBp
biBjYWxsYmFjayBxdWV1ZScpIDogX3Byb2RJbnZhcmlhbnQoJzI0JykgOiB2b2lkIDA7XG4gICAg
ICB0aGlzLl9jYWxsYmFja3MgPSBudWxsO1xuICAgICAgdGhpcy5fY29udGV4dHMgPSBudWxsO1xu
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjYWxsYmFja3MubGVuZ3RoOyBpKyspIHtcbiAgICAg
ICAgY2FsbGJhY2tzW2ldLmNhbGwoY29udGV4dHNbaV0sIGFyZyk7XG4gICAgICB9XG4gICAgICBj
YWxsYmFja3MubGVuZ3RoID0gMDtcbiAgICAgIGNvbnRleHRzLmxlbmd0aCA9IDA7XG4gICAgfVxu
ICB9O1xuXG4gIENhbGxiYWNrUXVldWUucHJvdG90eXBlLmNoZWNrcG9pbnQgPSBmdW5jdGlvbiBj
aGVja3BvaW50KCkge1xuICAgIHJldHVybiB0aGlzLl9jYWxsYmFja3MgPyB0aGlzLl9jYWxsYmFj
a3MubGVuZ3RoIDogMDtcbiAgfTtcblxuICBDYWxsYmFja1F1ZXVlLnByb3RvdHlwZS5yb2xsYmFj
ayA9IGZ1bmN0aW9uIHJvbGxiYWNrKGxlbikge1xuICAgIGlmICh0aGlzLl9jYWxsYmFja3MgJiYg
dGhpcy5fY29udGV4dHMpIHtcbiAgICAgIHRoaXMuX2NhbGxiYWNrcy5sZW5ndGggPSBsZW47XG4g
ICAgICB0aGlzLl9jb250ZXh0cy5sZW5ndGggPSBsZW47XG4gICAgfVxuICB9O1xuXG4gIC8qKlxu
ICAgKiBSZXNldHMgdGhlIGludGVybmFsIHF1ZXVlLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAg
ICovXG5cblxuICBDYWxsYmFja1F1ZXVlLnByb3RvdHlwZS5yZXNldCA9IGZ1bmN0aW9uIHJlc2V0
KCkge1xuICAgIHRoaXMuX2NhbGxiYWNrcyA9IG51bGw7XG4gICAgdGhpcy5fY29udGV4dHMgPSBu
dWxsO1xuICB9O1xuXG4gIC8qKlxuICAgKiBgUG9vbGVkQ2xhc3NgIGxvb2tzIGZvciB0aGlzLlxu
ICAgKi9cblxuXG4gIENhbGxiYWNrUXVldWUucHJvdG90eXBlLmRlc3RydWN0b3IgPSBmdW5jdGlv
biBkZXN0cnVjdG9yKCkge1xuICAgIHRoaXMucmVzZXQoKTtcbiAgfTtcblxuICByZXR1cm4gQ2Fs
bGJhY2tRdWV1ZTtcbn0oKTtcblxubW9kdWxlLmV4cG9ydHMgPSBQb29sZWRDbGFzcy5hZGRQb29s
aW5nVG8oQ2FsbGJhY2tRdWV1ZSk7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFD
SyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9DYWxsYmFja1F1ZXVlLmpzXG4gKiogbW9k
dWxlIGlkID0gNTlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJp
Z2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBET01Qcm9wZXJ0eSA9IHJl
cXVpcmUoJy4vRE9NUHJvcGVydHknKTtcbnZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSByZXF1
aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpO1xudmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9u
ID0gcmVxdWlyZSgnLi9SZWFjdEluc3RydW1lbnRhdGlvbicpO1xuXG52YXIgcXVvdGVBdHRyaWJ1
dGVWYWx1ZUZvckJyb3dzZXIgPSByZXF1aXJlKCcuL3F1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93
c2VyJyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxudmFy
IFZBTElEX0FUVFJJQlVURV9OQU1FX1JFR0VYID0gbmV3IFJlZ0V4cCgnXlsnICsgRE9NUHJvcGVy
dHkuQVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUiArICddWycgKyBET01Qcm9wZXJ0eS5BVFRSSUJV
VEVfTkFNRV9DSEFSICsgJ10qJCcpO1xudmFyIGlsbGVnYWxBdHRyaWJ1dGVOYW1lQ2FjaGUgPSB7
fTtcbnZhciB2YWxpZGF0ZWRBdHRyaWJ1dGVOYW1lQ2FjaGUgPSB7fTtcblxuZnVuY3Rpb24gaXNB
dHRyaWJ1dGVOYW1lU2FmZShhdHRyaWJ1dGVOYW1lKSB7XG4gIGlmICh2YWxpZGF0ZWRBdHRyaWJ1
dGVOYW1lQ2FjaGUuaGFzT3duUHJvcGVydHkoYXR0cmlidXRlTmFtZSkpIHtcbiAgICByZXR1cm4g
dHJ1ZTtcbiAgfVxuICBpZiAoaWxsZWdhbEF0dHJpYnV0ZU5hbWVDYWNoZS5oYXNPd25Qcm9wZXJ0
eShhdHRyaWJ1dGVOYW1lKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAoVkFMSURf
QVRUUklCVVRFX05BTUVfUkVHRVgudGVzdChhdHRyaWJ1dGVOYW1lKSkge1xuICAgIHZhbGlkYXRl
ZEF0dHJpYnV0ZU5hbWVDYWNoZVthdHRyaWJ1dGVOYW1lXSA9IHRydWU7XG4gICAgcmV0dXJuIHRy
dWU7XG4gIH1cbiAgaWxsZWdhbEF0dHJpYnV0ZU5hbWVDYWNoZVthdHRyaWJ1dGVOYW1lXSA9IHRy
dWU7XG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZh
bHNlLCAnSW52YWxpZCBhdHRyaWJ1dGUgbmFtZTogYCVzYCcsIGF0dHJpYnV0ZU5hbWUpIDogdm9p
ZCAwO1xuICByZXR1cm4gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIHNob3VsZElnbm9yZVZhbHVlKHBy
b3BlcnR5SW5mbywgdmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlID09IG51bGwgfHwgcHJvcGVydHlJ
bmZvLmhhc0Jvb2xlYW5WYWx1ZSAmJiAhdmFsdWUgfHwgcHJvcGVydHlJbmZvLmhhc051bWVyaWNW
YWx1ZSAmJiBpc05hTih2YWx1ZSkgfHwgcHJvcGVydHlJbmZvLmhhc1Bvc2l0aXZlTnVtZXJpY1Zh
bHVlICYmIHZhbHVlIDwgMSB8fCBwcm9wZXJ0eUluZm8uaGFzT3ZlcmxvYWRlZEJvb2xlYW5WYWx1
ZSAmJiB2YWx1ZSA9PT0gZmFsc2U7XG59XG5cbi8qKlxuICogT3BlcmF0aW9ucyBmb3IgZGVhbGlu
ZyB3aXRoIERPTSBwcm9wZXJ0aWVzLlxuICovXG52YXIgRE9NUHJvcGVydHlPcGVyYXRpb25zID0g
e1xuICAvKipcbiAgICogQ3JlYXRlcyBtYXJrdXAgZm9yIHRoZSBJRCBwcm9wZXJ0eS5cbiAgICpc
biAgICogQHBhcmFtIHtzdHJpbmd9IGlkIFVuZXNjYXBlZCBJRC5cbiAgICogQHJldHVybiB7c3Ry
aW5nfSBNYXJrdXAgc3RyaW5nLlxuICAgKi9cbiAgY3JlYXRlTWFya3VwRm9ySUQ6IGZ1bmN0aW9u
IChpZCkge1xuICAgIHJldHVybiBET01Qcm9wZXJ0eS5JRF9BVFRSSUJVVEVfTkFNRSArICc9JyAr
IHF1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyKGlkKTtcbiAgfSxcblxuICBzZXRBdHRyaWJ1
dGVGb3JJRDogZnVuY3Rpb24gKG5vZGUsIGlkKSB7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoRE9N
UHJvcGVydHkuSURfQVRUUklCVVRFX05BTUUsIGlkKTtcbiAgfSxcblxuICBjcmVhdGVNYXJrdXBG
b3JSb290OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIERPTVByb3BlcnR5LlJPT1RfQVRUUklC
VVRFX05BTUUgKyAnPVwiXCInO1xuICB9LFxuXG4gIHNldEF0dHJpYnV0ZUZvclJvb3Q6IGZ1bmN0
aW9uIChub2RlKSB7XG4gICAgbm9kZS5zZXRBdHRyaWJ1dGUoRE9NUHJvcGVydHkuUk9PVF9BVFRS
SUJVVEVfTkFNRSwgJycpO1xuICB9LFxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIG1hcmt1cCBmb3Ig
YSBwcm9wZXJ0eS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG5hbWVcbiAgICogQHBhcmFt
IHsqfSB2YWx1ZVxuICAgKiBAcmV0dXJuIHs/c3RyaW5nfSBNYXJrdXAgc3RyaW5nLCBvciBudWxs
IGlmIHRoZSBwcm9wZXJ0eSB3YXMgaW52YWxpZC5cbiAgICovXG4gIGNyZWF0ZU1hcmt1cEZvclBy
b3BlcnR5OiBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcbiAgICB2YXIgcHJvcGVydHlJbmZvID0g
RE9NUHJvcGVydHkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSA/IERPTVByb3BlcnR5
LnByb3BlcnRpZXNbbmFtZV0gOiBudWxsO1xuICAgIGlmIChwcm9wZXJ0eUluZm8pIHtcbiAgICAg
IGlmIChzaG91bGRJZ25vcmVWYWx1ZShwcm9wZXJ0eUluZm8sIHZhbHVlKSkge1xuICAgICAgICBy
ZXR1cm4gJyc7XG4gICAgICB9XG4gICAgICB2YXIgYXR0cmlidXRlTmFtZSA9IHByb3BlcnR5SW5m
by5hdHRyaWJ1dGVOYW1lO1xuICAgICAgaWYgKHByb3BlcnR5SW5mby5oYXNCb29sZWFuVmFsdWUg
fHwgcHJvcGVydHlJbmZvLmhhc092ZXJsb2FkZWRCb29sZWFuVmFsdWUgJiYgdmFsdWUgPT09IHRy
dWUpIHtcbiAgICAgICAgcmV0dXJuIGF0dHJpYnV0ZU5hbWUgKyAnPVwiXCInO1xuICAgICAgfVxu
ICAgICAgcmV0dXJuIGF0dHJpYnV0ZU5hbWUgKyAnPScgKyBxdW90ZUF0dHJpYnV0ZVZhbHVlRm9y
QnJvd3Nlcih2YWx1ZSk7XG4gICAgfSBlbHNlIGlmIChET01Qcm9wZXJ0eS5pc0N1c3RvbUF0dHJp
YnV0ZShuYW1lKSkge1xuICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJu
ICcnO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG5hbWUgKyAnPScgKyBxdW90ZUF0dHJpYnV0ZVZh
bHVlRm9yQnJvd3Nlcih2YWx1ZSk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9LFxuXG4g
IC8qKlxuICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgYSBjdXN0b20gcHJvcGVydHkuXG4gICAqXG4g
ICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJhbSB7Kn0gdmFsdWVcbiAgICogQHJl
dHVybiB7c3RyaW5nfSBNYXJrdXAgc3RyaW5nLCBvciBlbXB0eSBzdHJpbmcgaWYgdGhlIHByb3Bl
cnR5IHdhcyBpbnZhbGlkLlxuICAgKi9cbiAgY3JlYXRlTWFya3VwRm9yQ3VzdG9tQXR0cmlidXRl
OiBmdW5jdGlvbiAobmFtZSwgdmFsdWUpIHtcbiAgICBpZiAoIWlzQXR0cmlidXRlTmFtZVNhZmUo
bmFtZSkgfHwgdmFsdWUgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuICcnO1xuICAgIH1cbiAgICBy
ZXR1cm4gbmFtZSArICc9JyArIHF1b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyKHZhbHVlKTtc
biAgfSxcblxuICAvKipcbiAgICogU2V0cyB0aGUgdmFsdWUgZm9yIGEgcHJvcGVydHkgb24gYSBu
b2RlLlxuICAgKlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVcbiAgICogQHBhcmFtIHtz
dHJpbmd9IG5hbWVcbiAgICogQHBhcmFtIHsqfSB2YWx1ZVxuICAgKi9cbiAgc2V0VmFsdWVGb3JQ
cm9wZXJ0eTogZnVuY3Rpb24gKG5vZGUsIG5hbWUsIHZhbHVlKSB7XG4gICAgdmFyIHByb3BlcnR5
SW5mbyA9IERPTVByb3BlcnR5LnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkobmFtZSkgPyBET01Q
cm9wZXJ0eS5wcm9wZXJ0aWVzW25hbWVdIDogbnVsbDtcbiAgICBpZiAocHJvcGVydHlJbmZvKSB7
XG4gICAgICB2YXIgbXV0YXRpb25NZXRob2QgPSBwcm9wZXJ0eUluZm8ubXV0YXRpb25NZXRob2Q7
XG4gICAgICBpZiAobXV0YXRpb25NZXRob2QpIHtcbiAgICAgICAgbXV0YXRpb25NZXRob2Qobm9k
ZSwgdmFsdWUpO1xuICAgICAgfSBlbHNlIGlmIChzaG91bGRJZ25vcmVWYWx1ZShwcm9wZXJ0eUlu
Zm8sIHZhbHVlKSkge1xuICAgICAgICB0aGlzLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkobm9kZSwg
bmFtZSk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gZWxzZSBpZiAocHJvcGVydHlJbmZvLm11
c3RVc2VQcm9wZXJ0eSkge1xuICAgICAgICAvLyBDb250cmFyeSB0byBgc2V0QXR0cmlidXRlYCwg
b2JqZWN0IHByb3BlcnRpZXMgYXJlIHByb3Blcmx5XG4gICAgICAgIC8vIGB0b1N0cmluZ2BlZCBi
eSBJRTgvOS5cbiAgICAgICAgbm9kZVtwcm9wZXJ0eUluZm8ucHJvcGVydHlOYW1lXSA9IHZhbHVl
O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGF0dHJpYnV0ZU5hbWUgPSBwcm9wZXJ0eUlu
Zm8uYXR0cmlidXRlTmFtZTtcbiAgICAgICAgdmFyIG5hbWVzcGFjZSA9IHByb3BlcnR5SW5mby5h
dHRyaWJ1dGVOYW1lc3BhY2U7XG4gICAgICAgIC8vIGBzZXRBdHRyaWJ1dGVgIHdpdGggb2JqZWN0
cyBiZWNvbWVzIG9ubHkgYFtvYmplY3RdYCBpbiBJRTgvOSxcbiAgICAgICAgLy8gKCcnICsgdmFs
dWUpIG1ha2VzIGl0IG91dHB1dCB0aGUgY29ycmVjdCB0b1N0cmluZygpLXZhbHVlLlxuICAgICAg
ICBpZiAobmFtZXNwYWNlKSB7XG4gICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGVOUyhuYW1lc3Bh
Y2UsIGF0dHJpYnV0ZU5hbWUsICcnICsgdmFsdWUpO1xuICAgICAgICB9IGVsc2UgaWYgKHByb3Bl
cnR5SW5mby5oYXNCb29sZWFuVmFsdWUgfHwgcHJvcGVydHlJbmZvLmhhc092ZXJsb2FkZWRCb29s
ZWFuVmFsdWUgJiYgdmFsdWUgPT09IHRydWUpIHtcbiAgICAgICAgICBub2RlLnNldEF0dHJpYnV0
ZShhdHRyaWJ1dGVOYW1lLCAnJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbm9kZS5z
ZXRBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgJycgKyB2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAg
IH1cbiAgICB9IGVsc2UgaWYgKERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0cmlidXRlKG5hbWUpKSB7
XG4gICAgICBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuc2V0VmFsdWVGb3JBdHRyaWJ1dGUobm9kZSwg
bmFtZSwgdmFsdWUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIgcGF5bG9hZCA9IHt9O1xu
ICAgICAgcGF5bG9hZFtuYW1lXSA9IHZhbHVlO1xuICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24u
ZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7XG4gICAgICAgIGluc3RhbmNlSUQ6IFJlYWN0RE9N
Q29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG5vZGUpLl9kZWJ1Z0lELFxuICAgICAg
ICB0eXBlOiAndXBkYXRlIGF0dHJpYnV0ZScsXG4gICAgICAgIHBheWxvYWQ6IHBheWxvYWRcbiAg
ICAgIH0pO1xuICAgIH1cbiAgfSxcblxuICBzZXRWYWx1ZUZvckF0dHJpYnV0ZTogZnVuY3Rpb24g
KG5vZGUsIG5hbWUsIHZhbHVlKSB7XG4gICAgaWYgKCFpc0F0dHJpYnV0ZU5hbWVTYWZlKG5hbWUp
KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAg
ICBub2RlLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbm9kZS5z
ZXRBdHRyaWJ1dGUobmFtZSwgJycgKyB2YWx1ZSk7XG4gICAgfVxuXG4gICAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBwYXlsb2FkID0ge307
XG4gICAgICBwYXlsb2FkW25hbWVdID0gdmFsdWU7XG4gICAgICBSZWFjdEluc3RydW1lbnRhdGlv
bi5kZWJ1Z1Rvb2wub25Ib3N0T3BlcmF0aW9uKHtcbiAgICAgICAgaW5zdGFuY2VJRDogUmVhY3RE
T01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUobm9kZSkuX2RlYnVnSUQsXG4gICAg
ICAgIHR5cGU6ICd1cGRhdGUgYXR0cmlidXRlJyxcbiAgICAgICAgcGF5bG9hZDogcGF5bG9hZFxu
ICAgICAgfSk7XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBEZWxldGVzIGFuIGF0dHJpYnV0
ZXMgZnJvbSBhIG5vZGUuXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gbm9kZVxuICAg
KiBAcGFyYW0ge3N0cmluZ30gbmFtZVxuICAgKi9cbiAgZGVsZXRlVmFsdWVGb3JBdHRyaWJ1dGU6
IGZ1bmN0aW9uIChub2RlLCBuYW1lKSB7XG4gICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUobmFtZSk7
XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAg
IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuICAgICAg
ICBpbnN0YW5jZUlEOiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0SW5zdGFuY2VGcm9tTm9kZShu
b2RlKS5fZGVidWdJRCxcbiAgICAgICAgdHlwZTogJ3JlbW92ZSBhdHRyaWJ1dGUnLFxuICAgICAg
ICBwYXlsb2FkOiBuYW1lXG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG5cbiAgLyoqXG4gICAqIERl
bGV0ZXMgdGhlIHZhbHVlIGZvciBhIHByb3BlcnR5IG9uIGEgbm9kZS5cbiAgICpcbiAgICogQHBh
cmFtIHtET01FbGVtZW50fSBub2RlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqL1xu
ICBkZWxldGVWYWx1ZUZvclByb3BlcnR5OiBmdW5jdGlvbiAobm9kZSwgbmFtZSkge1xuICAgIHZh
ciBwcm9wZXJ0eUluZm8gPSBET01Qcm9wZXJ0eS5wcm9wZXJ0aWVzLmhhc093blByb3BlcnR5KG5h
bWUpID8gRE9NUHJvcGVydHkucHJvcGVydGllc1tuYW1lXSA6IG51bGw7XG4gICAgaWYgKHByb3Bl
cnR5SW5mbykge1xuICAgICAgdmFyIG11dGF0aW9uTWV0aG9kID0gcHJvcGVydHlJbmZvLm11dGF0
aW9uTWV0aG9kO1xuICAgICAgaWYgKG11dGF0aW9uTWV0aG9kKSB7XG4gICAgICAgIG11dGF0aW9u
TWV0aG9kKG5vZGUsIHVuZGVmaW5lZCk7XG4gICAgICB9IGVsc2UgaWYgKHByb3BlcnR5SW5mby5t
dXN0VXNlUHJvcGVydHkpIHtcbiAgICAgICAgdmFyIHByb3BOYW1lID0gcHJvcGVydHlJbmZvLnBy
b3BlcnR5TmFtZTtcbiAgICAgICAgaWYgKHByb3BlcnR5SW5mby5oYXNCb29sZWFuVmFsdWUpIHtc
biAgICAgICAgICBub2RlW3Byb3BOYW1lXSA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAg
ICAgICAgIG5vZGVbcHJvcE5hbWVdID0gJyc7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4g
ICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKHByb3BlcnR5SW5mby5hdHRyaWJ1dGVOYW1lKTtc
biAgICAgIH1cbiAgICB9IGVsc2UgaWYgKERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0cmlidXRlKG5h
bWUpKSB7XG4gICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgICB9XG5cbiAgICBp
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgUmVhY3RJ
bnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlvbih7XG4gICAgICAgIGluc3Rh
bmNlSUQ6IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21Ob2RlKG5vZGUpLl9k
ZWJ1Z0lELFxuICAgICAgICB0eXBlOiAncmVtb3ZlIGF0dHJpYnV0ZScsXG4gICAgICAgIHBheWxv
YWQ6IG5hbWVcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBE
T01Qcm9wZXJ0eU9wZXJhdGlvbnM7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFD
SyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9ET01Qcm9wZXJ0eU9wZXJhdGlvbnMuanNc
biAqKiBtb2R1bGUgaWQgPSA2MFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4g
KiBDb3B5cmlnaHQgMjAxNS1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0RE9N
Q29tcG9uZW50RmxhZ3MgPSB7XG4gIGhhc0NhY2hlZENoaWxkTm9kZXM6IDEgPDwgMFxufTtcblxu
bW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUNvbXBvbmVudEZsYWdzO1xuXG5cbi8qKioqKioqKioq
KioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RE
T01Db21wb25lbnRGbGFncy5qc1xuICoqIG1vZHVsZSBpZCA9IDYxXG4gKiogbW9kdWxlIGNodW5r
cyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJp
Y3QnO1xuXG52YXIgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIExp
bmtlZFZhbHVlVXRpbHMgPSByZXF1aXJlKCcuL0xpbmtlZFZhbHVlVXRpbHMnKTtcbnZhciBSZWFj
dERPTUNvbXBvbmVudFRyZWUgPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpO1xu
dmFyIFJlYWN0VXBkYXRlcyA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVzJyk7XG5cbnZhciB3YXJu
aW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgZGlkV2FyblZhbHVlTGlu
ayA9IGZhbHNlO1xudmFyIGRpZFdhcm5WYWx1ZURlZmF1bHRWYWx1ZSA9IGZhbHNlO1xuXG5mdW5j
dGlvbiB1cGRhdGVPcHRpb25zSWZQZW5kaW5nVXBkYXRlQW5kTW91bnRlZCgpIHtcbiAgaWYgKHRo
aXMuX3Jvb3ROb2RlSUQgJiYgdGhpcy5fd3JhcHBlclN0YXRlLnBlbmRpbmdVcGRhdGUpIHtcbiAg
ICB0aGlzLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZSA9IGZhbHNlO1xuXG4gICAgdmFyIHBy
b3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG4gICAgdmFyIHZhbHVlID0gTGlua2Vk
VmFsdWVVdGlscy5nZXRWYWx1ZShwcm9wcyk7XG5cbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xu
ICAgICAgdXBkYXRlT3B0aW9ucyh0aGlzLCBCb29sZWFuKHByb3BzLm11bHRpcGxlKSwgdmFsdWUp
O1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBnZXREZWNsYXJhdGlvbkVycm9yQWRkZW5kdW0o
b3duZXIpIHtcbiAgaWYgKG93bmVyKSB7XG4gICAgdmFyIG5hbWUgPSBvd25lci5nZXROYW1lKCk7
XG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIHJldHVybiAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9k
IG9mIGAnICsgbmFtZSArICdgLic7XG4gICAgfVxuICB9XG4gIHJldHVybiAnJztcbn1cblxudmFy
IHZhbHVlUHJvcE5hbWVzID0gWyd2YWx1ZScsICdkZWZhdWx0VmFsdWUnXTtcblxuLyoqXG4gKiBW
YWxpZGF0aW9uIGZ1bmN0aW9uIGZvciBgdmFsdWVgIGFuZCBgZGVmYXVsdFZhbHVlYC5cbiAqIEBw
cml2YXRlXG4gKi9cbmZ1bmN0aW9uIGNoZWNrU2VsZWN0UHJvcFR5cGVzKGluc3QsIHByb3BzKSB7
XG4gIHZhciBvd25lciA9IGluc3QuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcbiAgTGlua2VkVmFs
dWVVdGlscy5jaGVja1Byb3BUeXBlcygnc2VsZWN0JywgcHJvcHMsIG93bmVyKTtcblxuICBpZiAo
cHJvcHMudmFsdWVMaW5rICE9PSB1bmRlZmluZWQgJiYgIWRpZFdhcm5WYWx1ZUxpbmspIHtcbiAg
ICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwg
J2B2YWx1ZUxpbmtgIHByb3Agb24gYHNlbGVjdGAgaXMgZGVwcmVjYXRlZDsgc2V0IGB2YWx1ZWAg
YW5kIGBvbkNoYW5nZWAgaW5zdGVhZC4nKSA6IHZvaWQgMDtcbiAgICBkaWRXYXJuVmFsdWVMaW5r
ID0gdHJ1ZTtcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWVQcm9wTmFtZXMubGVu
Z3RoOyBpKyspIHtcbiAgICB2YXIgcHJvcE5hbWUgPSB2YWx1ZVByb3BOYW1lc1tpXTtcbiAgICBp
ZiAocHJvcHNbcHJvcE5hbWVdID09IG51bGwpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAg
ICB2YXIgaXNBcnJheSA9IEFycmF5LmlzQXJyYXkocHJvcHNbcHJvcE5hbWVdKTtcbiAgICBpZiAo
cHJvcHMubXVsdGlwbGUgJiYgIWlzQXJyYXkpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVGhlIGAlc2AgcHJvcCBzdXBwbGll
ZCB0byA8c2VsZWN0PiBtdXN0IGJlIGFuIGFycmF5IGlmICcgKyAnYG11bHRpcGxlYCBpcyB0cnVl
LiVzJywgcHJvcE5hbWUsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShvd25lcikpIDogdm9p
ZCAwO1xuICAgIH0gZWxzZSBpZiAoIXByb3BzLm11bHRpcGxlICYmIGlzQXJyYXkpIHtcbiAgICAg
IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAn
VGhlIGAlc2AgcHJvcCBzdXBwbGllZCB0byA8c2VsZWN0PiBtdXN0IGJlIGEgc2NhbGFyICcgKyAn
dmFsdWUgaWYgYG11bHRpcGxlYCBpcyBmYWxzZS4lcycsIHByb3BOYW1lLCBnZXREZWNsYXJhdGlv
bkVycm9yQWRkZW5kdW0ob3duZXIpKSA6IHZvaWQgMDtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4g
KiBAcGFyYW0ge1JlYWN0RE9NQ29tcG9uZW50fSBpbnN0XG4gKiBAcGFyYW0ge2Jvb2xlYW59IG11
bHRpcGxlXG4gKiBAcGFyYW0geyp9IHByb3BWYWx1ZSBBIHN0cmluZ2FibGUgKHdpdGggYG11bHRp
cGxlYCwgYSBsaXN0IG9mIHN0cmluZ2FibGVzKS5cbiAqIEBwcml2YXRlXG4gKi9cbmZ1bmN0aW9u
IHVwZGF0ZU9wdGlvbnMoaW5zdCwgbXVsdGlwbGUsIHByb3BWYWx1ZSkge1xuICB2YXIgc2VsZWN0
ZWRWYWx1ZSwgaTtcbiAgdmFyIG9wdGlvbnMgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9k
ZUZyb21JbnN0YW5jZShpbnN0KS5vcHRpb25zO1xuXG4gIGlmIChtdWx0aXBsZSkge1xuICAgIHNl
bGVjdGVkVmFsdWUgPSB7fTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgcHJvcFZhbHVlLmxlbmd0aDsg
aSsrKSB7XG4gICAgICBzZWxlY3RlZFZhbHVlWycnICsgcHJvcFZhbHVlW2ldXSA9IHRydWU7XG4g
ICAgfVxuICAgIGZvciAoaSA9IDA7IGkgPCBvcHRpb25zLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2
YXIgc2VsZWN0ZWQgPSBzZWxlY3RlZFZhbHVlLmhhc093blByb3BlcnR5KG9wdGlvbnNbaV0udmFs
dWUpO1xuICAgICAgaWYgKG9wdGlvbnNbaV0uc2VsZWN0ZWQgIT09IHNlbGVjdGVkKSB7XG4gICAg
ICAgIG9wdGlvbnNbaV0uc2VsZWN0ZWQgPSBzZWxlY3RlZDtcbiAgICAgIH1cbiAgICB9XG4gIH0g
ZWxzZSB7XG4gICAgLy8gRG8gbm90IHNldCBgc2VsZWN0LnZhbHVlYCBhcyBleGFjdCBiZWhhdmlv
ciBpc24ndCBjb25zaXN0ZW50IGFjcm9zcyBhbGxcbiAgICAvLyBicm93c2VycyBmb3IgYWxsIGNh
c2VzLlxuICAgIHNlbGVjdGVkVmFsdWUgPSAnJyArIHByb3BWYWx1ZTtcbiAgICBmb3IgKGkgPSAw
OyBpIDwgb3B0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKG9wdGlvbnNbaV0udmFsdWUg
PT09IHNlbGVjdGVkVmFsdWUpIHtcbiAgICAgICAgb3B0aW9uc1tpXS5zZWxlY3RlZCA9IHRydWU7
XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG9wdGlvbnMubGVuZ3Ro
KSB7XG4gICAgICBvcHRpb25zWzBdLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn1cblxu
LyoqXG4gKiBJbXBsZW1lbnRzIGEgPHNlbGVjdD4gaG9zdCBjb21wb25lbnQgdGhhdCBhbGxvd3Mg
b3B0aW9uYWxseSBzZXR0aW5nIHRoZVxuICogcHJvcHMgYHZhbHVlYCBhbmQgYGRlZmF1bHRWYWx1
ZWAuIElmIGBtdWx0aXBsZWAgaXMgZmFsc2UsIHRoZSBwcm9wIG11c3QgYmUgYVxuICogc3RyaW5n
YWJsZS4gSWYgYG11bHRpcGxlYCBpcyB0cnVlLCB0aGUgcHJvcCBtdXN0IGJlIGFuIGFycmF5IG9m
IHN0cmluZ2FibGVzLlxuICpcbiAqIElmIGB2YWx1ZWAgaXMgbm90IHN1cHBsaWVkIChvciBudWxs
L3VuZGVmaW5lZCksIHVzZXIgYWN0aW9ucyB0aGF0IGNoYW5nZSB0aGVcbiAqIHNlbGVjdGVkIG9w
dGlvbiB3aWxsIHRyaWdnZXIgdXBkYXRlcyB0byB0aGUgcmVuZGVyZWQgb3B0aW9ucy5cbiAqXG4g
KiBJZiBpdCBpcyBzdXBwbGllZCAoYW5kIG5vdCBudWxsL3VuZGVmaW5lZCksIHRoZSByZW5kZXJl
ZCBvcHRpb25zIHdpbGwgbm90XG4gKiB1cGRhdGUgaW4gcmVzcG9uc2UgdG8gdXNlciBhY3Rpb25z
LiBJbnN0ZWFkLCB0aGUgYHZhbHVlYCBwcm9wIG11c3QgY2hhbmdlIGluXG4gKiBvcmRlciBmb3Ig
dGhlIHJlbmRlcmVkIG9wdGlvbnMgdG8gdXBkYXRlLlxuICpcbiAqIElmIGBkZWZhdWx0VmFsdWVg
IGlzIHByb3ZpZGVkLCBhbnkgb3B0aW9ucyB3aXRoIHRoZSBzdXBwbGllZCB2YWx1ZXMgd2lsbCBi
ZVxuICogc2VsZWN0ZWQuXG4gKi9cbnZhciBSZWFjdERPTVNlbGVjdCA9IHtcbiAgZ2V0SG9zdFBy
b3BzOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHtcbiAgICByZXR1cm4gX2Fzc2lnbih7fSwgcHJv
cHMsIHtcbiAgICAgIG9uQ2hhbmdlOiBpbnN0Ll93cmFwcGVyU3RhdGUub25DaGFuZ2UsXG4gICAg
ICB2YWx1ZTogdW5kZWZpbmVkXG4gICAgfSk7XG4gIH0sXG5cbiAgbW91bnRXcmFwcGVyOiBmdW5j
dGlvbiAoaW5zdCwgcHJvcHMpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJykge1xuICAgICAgY2hlY2tTZWxlY3RQcm9wVHlwZXMoaW5zdCwgcHJvcHMpO1xu
ICAgIH1cblxuICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMp
O1xuICAgIGluc3QuX3dyYXBwZXJTdGF0ZSA9IHtcbiAgICAgIHBlbmRpbmdVcGRhdGU6IGZhbHNl
LFxuICAgICAgaW5pdGlhbFZhbHVlOiB2YWx1ZSAhPSBudWxsID8gdmFsdWUgOiBwcm9wcy5kZWZh
dWx0VmFsdWUsXG4gICAgICBsaXN0ZW5lcnM6IG51bGwsXG4gICAgICBvbkNoYW5nZTogX2hhbmRs
ZUNoYW5nZS5iaW5kKGluc3QpLFxuICAgICAgd2FzTXVsdGlwbGU6IEJvb2xlYW4ocHJvcHMubXVs
dGlwbGUpXG4gICAgfTtcblxuICAgIGlmIChwcm9wcy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHBy
b3BzLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmICFkaWRXYXJuVmFsdWVEZWZhdWx0VmFs
dWUpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKGZhbHNlLCAnU2VsZWN0IGVsZW1lbnRzIG11c3QgYmUgZWl0aGVyIGNvbnRyb2xsZWQgb3Ig
dW5jb250cm9sbGVkICcgKyAnKHNwZWNpZnkgZWl0aGVyIHRoZSB2YWx1ZSBwcm9wLCBvciB0aGUg
ZGVmYXVsdFZhbHVlIHByb3AsIGJ1dCBub3QgJyArICdib3RoKS4gRGVjaWRlIGJldHdlZW4gdXNp
bmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCBzZWxlY3QgJyArICdlbGVtZW50IGFuZCBy
ZW1vdmUgb25lIG9mIHRoZXNlIHByb3BzLiBNb3JlIGluZm86ICcgKyAnaHR0cHM6Ly9mYi5tZS9y
ZWFjdC1jb250cm9sbGVkLWNvbXBvbmVudHMnKSA6IHZvaWQgMDtcbiAgICAgIGRpZFdhcm5WYWx1
ZURlZmF1bHRWYWx1ZSA9IHRydWU7XG4gICAgfVxuICB9LFxuXG4gIGdldFNlbGVjdFZhbHVlQ29u
dGV4dDogZnVuY3Rpb24gKGluc3QpIHtcbiAgICAvLyBSZWFjdERPTU9wdGlvbiBsb29rcyBhdCB0
aGlzIGluaXRpYWwgdmFsdWUgc28gdGhlIGluaXRpYWwgZ2VuZXJhdGVkXG4gICAgLy8gbWFya3Vw
IGhhcyBjb3JyZWN0IGBzZWxlY3RlZGAgYXR0cmlidXRlc1xuICAgIHJldHVybiBpbnN0Ll93cmFw
cGVyU3RhdGUuaW5pdGlhbFZhbHVlO1xuICB9LFxuXG4gIHBvc3RVcGRhdGVXcmFwcGVyOiBmdW5j
dGlvbiAoaW5zdCkge1xuICAgIHZhciBwcm9wcyA9IGluc3QuX2N1cnJlbnRFbGVtZW50LnByb3Bz
O1xuXG4gICAgLy8gQWZ0ZXIgdGhlIGluaXRpYWwgbW91bnQsIHdlIGNvbnRyb2wgc2VsZWN0ZWQt
bmVzcyBtYW51YWxseSBzbyBkb24ndCBwYXNzXG4gICAgLy8gdGhpcyB2YWx1ZSBkb3duXG4gICAg
aW5zdC5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSA9IHVuZGVmaW5lZDtcblxuICAgIHZhciB3
YXNNdWx0aXBsZSA9IGluc3QuX3dyYXBwZXJTdGF0ZS53YXNNdWx0aXBsZTtcbiAgICBpbnN0Ll93
cmFwcGVyU3RhdGUud2FzTXVsdGlwbGUgPSBCb29sZWFuKHByb3BzLm11bHRpcGxlKTtcblxuICAg
IHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpO1xuICAgIGlmICh2
YWx1ZSAhPSBudWxsKSB7XG4gICAgICBpbnN0Ll93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZSA9
IGZhbHNlO1xuICAgICAgdXBkYXRlT3B0aW9ucyhpbnN0LCBCb29sZWFuKHByb3BzLm11bHRpcGxl
KSwgdmFsdWUpO1xuICAgIH0gZWxzZSBpZiAod2FzTXVsdGlwbGUgIT09IEJvb2xlYW4ocHJvcHMu
bXVsdGlwbGUpKSB7XG4gICAgICAvLyBGb3Igc2ltcGxpY2l0eSwgcmVhcHBseSBgZGVmYXVsdFZh
bHVlYCBpZiBgbXVsdGlwbGVgIGlzIHRvZ2dsZWQuXG4gICAgICBpZiAocHJvcHMuZGVmYXVsdFZh
bHVlICE9IG51bGwpIHtcbiAgICAgICAgdXBkYXRlT3B0aW9ucyhpbnN0LCBCb29sZWFuKHByb3Bz
Lm11bHRpcGxlKSwgcHJvcHMuZGVmYXVsdFZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAg
IC8vIFJldmVydCB0aGUgc2VsZWN0IGJhY2sgdG8gaXRzIGRlZmF1bHQgdW5zZWxlY3RlZCBzdGF0
ZS5cbiAgICAgICAgdXBkYXRlT3B0aW9ucyhpbnN0LCBCb29sZWFuKHByb3BzLm11bHRpcGxlKSwg
cHJvcHMubXVsdGlwbGUgPyBbXSA6ICcnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbmZ1
bmN0aW9uIF9oYW5kbGVDaGFuZ2UoZXZlbnQpIHtcbiAgdmFyIHByb3BzID0gdGhpcy5fY3VycmVu
dEVsZW1lbnQucHJvcHM7XG4gIHZhciByZXR1cm5WYWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZXhl
Y3V0ZU9uQ2hhbmdlKHByb3BzLCBldmVudCk7XG5cbiAgaWYgKHRoaXMuX3Jvb3ROb2RlSUQpIHtc
biAgICB0aGlzLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZSA9IHRydWU7XG4gIH1cbiAgUmVh
Y3RVcGRhdGVzLmFzYXAodXBkYXRlT3B0aW9uc0lmUGVuZGluZ1VwZGF0ZUFuZE1vdW50ZWQsIHRo
aXMpO1xuICByZXR1cm4gcmV0dXJuVmFsdWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RE
T01TZWxlY3Q7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAq
KiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTVNlbGVjdC5qc1xuICoqIG1vZHVsZSBpZCA9IDYy
XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDE0LXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAq
XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgZW1wdHlDb21wb25lbnRGYWN0b3J5O1xuXG52
YXIgUmVhY3RFbXB0eUNvbXBvbmVudEluamVjdGlvbiA9IHtcbiAgaW5qZWN0RW1wdHlDb21wb25l
bnRGYWN0b3J5OiBmdW5jdGlvbiAoZmFjdG9yeSkge1xuICAgIGVtcHR5Q29tcG9uZW50RmFjdG9y
eSA9IGZhY3Rvcnk7XG4gIH1cbn07XG5cbnZhciBSZWFjdEVtcHR5Q29tcG9uZW50ID0ge1xuICBj
cmVhdGU6IGZ1bmN0aW9uIChpbnN0YW50aWF0ZSkge1xuICAgIHJldHVybiBlbXB0eUNvbXBvbmVu
dEZhY3RvcnkoaW5zdGFudGlhdGUpO1xuICB9XG59O1xuXG5SZWFjdEVtcHR5Q29tcG9uZW50Lmlu
amVjdGlvbiA9IFJlYWN0RW1wdHlDb21wb25lbnRJbmplY3Rpb247XG5cbm1vZHVsZS5leHBvcnRz
ID0gUmVhY3RFbXB0eUNvbXBvbmVudDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQ
QUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0RW1wdHlDb21wb25lbnQuanNc
biAqKiBtb2R1bGUgaWQgPSA2M1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4g
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVh
Y3RGZWF0dXJlRmxhZ3MgPSB7XG4gIC8vIFdoZW4gdHJ1ZSwgY2FsbCBjb25zb2xlLnRpbWUoKSBi
ZWZvcmUgYW5kIC50aW1lRW5kKCkgYWZ0ZXIgZWFjaCB0b3AtbGV2ZWxcbiAgLy8gcmVuZGVyIChi
b3RoIGluaXRpYWwgcmVuZGVycyBhbmQgdXBkYXRlcykuIFVzZWZ1bCB3aGVuIGxvb2tpbmcgYXQg
cHJvZC1tb2RlXG4gIC8vIHRpbWVsaW5lIHByb2ZpbGVzIGluIENocm9tZSwgZm9yIGV4YW1wbGUu
XG4gIGxvZ1RvcExldmVsUmVuZGVyczogZmFsc2Vcbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVh
Y3RGZWF0dXJlRmxhZ3M7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09U
RVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdEZlYXR1cmVGbGFncy5qc1xuICoqIG1vZHVs
ZSBpZCA9IDY0XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdo
dCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxu
ICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSBy
ZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52YXIgaW52YXJpYW50ID0gcmVxdWly
ZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbnZhciBnZW5lcmljQ29tcG9uZW50Q2xhc3MgPSBu
dWxsO1xudmFyIHRleHRDb21wb25lbnRDbGFzcyA9IG51bGw7XG5cbnZhciBSZWFjdEhvc3RDb21w
b25lbnRJbmplY3Rpb24gPSB7XG4gIC8vIFRoaXMgYWNjZXB0cyBhIGNsYXNzIHRoYXQgcmVjZWl2
ZXMgdGhlIHRhZyBzdHJpbmcuIFRoaXMgaXMgYSBjYXRjaCBhbGxcbiAgLy8gdGhhdCBjYW4gcmVu
ZGVyIGFueSBraW5kIG9mIHRhZy5cbiAgaW5qZWN0R2VuZXJpY0NvbXBvbmVudENsYXNzOiBmdW5j
dGlvbiAoY29tcG9uZW50Q2xhc3MpIHtcbiAgICBnZW5lcmljQ29tcG9uZW50Q2xhc3MgPSBjb21w
b25lbnRDbGFzcztcbiAgfSxcbiAgLy8gVGhpcyBhY2NlcHRzIGEgdGV4dCBjb21wb25lbnQgY2xh
c3MgdGhhdCB0YWtlcyB0aGUgdGV4dCBzdHJpbmcgdG8gYmVcbiAgLy8gcmVuZGVyZWQgYXMgcHJv
cHMuXG4gIGluamVjdFRleHRDb21wb25lbnRDbGFzczogZnVuY3Rpb24gKGNvbXBvbmVudENsYXNz
KSB7XG4gICAgdGV4dENvbXBvbmVudENsYXNzID0gY29tcG9uZW50Q2xhc3M7XG4gIH1cbn07XG5c
bi8qKlxuICogR2V0IGEgaG9zdCBpbnRlcm5hbCBjb21wb25lbnQgY2xhc3MgZm9yIGEgc3BlY2lm
aWMgdGFnLlxuICpcbiAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBlbGVtZW50IFRoZSBlbGVtZW50
IHRvIGNyZWF0ZS5cbiAqIEByZXR1cm4ge2Z1bmN0aW9ufSBUaGUgaW50ZXJuYWwgY2xhc3MgY29u
c3RydWN0b3IgZnVuY3Rpb24uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUludGVybmFsQ29tcG9uZW50
KGVsZW1lbnQpIHtcbiAgIWdlbmVyaWNDb21wb25lbnRDbGFzcyA/IHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdUaGVyZSBpcyBubyByZWdp
c3RlcmVkIGNvbXBvbmVudCBmb3IgdGhlIHRhZyAlcycsIGVsZW1lbnQudHlwZSkgOiBfcHJvZElu
dmFyaWFudCgnMTExJywgZWxlbWVudC50eXBlKSA6IHZvaWQgMDtcbiAgcmV0dXJuIG5ldyBnZW5l
cmljQ29tcG9uZW50Q2xhc3MoZWxlbWVudCk7XG59XG5cbi8qKlxuICogQHBhcmFtIHtSZWFjdFRl
eHR9IHRleHRcbiAqIEByZXR1cm4ge1JlYWN0Q29tcG9uZW50fVxuICovXG5mdW5jdGlvbiBjcmVh
dGVJbnN0YW5jZUZvclRleHQodGV4dCkge1xuICByZXR1cm4gbmV3IHRleHRDb21wb25lbnRDbGFz
cyh0ZXh0KTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjb21wb25lbnRc
biAqIEByZXR1cm4ge2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzVGV4dENvbXBvbmVudChjb21w
b25lbnQpIHtcbiAgcmV0dXJuIGNvbXBvbmVudCBpbnN0YW5jZW9mIHRleHRDb21wb25lbnRDbGFz
cztcbn1cblxudmFyIFJlYWN0SG9zdENvbXBvbmVudCA9IHtcbiAgY3JlYXRlSW50ZXJuYWxDb21w
b25lbnQ6IGNyZWF0ZUludGVybmFsQ29tcG9uZW50LFxuICBjcmVhdGVJbnN0YW5jZUZvclRleHQ6
IGNyZWF0ZUluc3RhbmNlRm9yVGV4dCxcbiAgaXNUZXh0Q29tcG9uZW50OiBpc1RleHRDb21wb25l
bnQsXG4gIGluamVjdGlvbjogUmVhY3RIb3N0Q29tcG9uZW50SW5qZWN0aW9uXG59O1xuXG5tb2R1
bGUuZXhwb3J0cyA9IFJlYWN0SG9zdENvbXBvbmVudDtcblxuXG4vKioqKioqKioqKioqKioqKipc
biAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0SG9zdENvbXBv
bmVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDY1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8i
LCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwg
cmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIg
UmVhY3RET01TZWxlY3Rpb24gPSByZXF1aXJlKCcuL1JlYWN0RE9NU2VsZWN0aW9uJyk7XG5cbnZh
ciBjb250YWluc05vZGUgPSByZXF1aXJlKCdmYmpzL2xpYi9jb250YWluc05vZGUnKTtcbnZhciBm
b2N1c05vZGUgPSByZXF1aXJlKCdmYmpzL2xpYi9mb2N1c05vZGUnKTtcbnZhciBnZXRBY3RpdmVF
bGVtZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvZ2V0QWN0aXZlRWxlbWVudCcpO1xuXG5mdW5jdGlv
biBpc0luRG9jdW1lbnQobm9kZSkge1xuICByZXR1cm4gY29udGFpbnNOb2RlKGRvY3VtZW50LmRv
Y3VtZW50RWxlbWVudCwgbm9kZSk7XG59XG5cbi8qKlxuICogQFJlYWN0SW5wdXRTZWxlY3Rpb246
IFJlYWN0IGlucHV0IHNlbGVjdGlvbiBtb2R1bGUuIEJhc2VkIG9uIFNlbGVjdGlvbi5qcyxcbiAq
IGJ1dCBtb2RpZmllZCB0byBiZSBzdWl0YWJsZSBmb3IgcmVhY3QgYW5kIGhhcyBhIGNvdXBsZSBv
ZiBidWcgZml4ZXMgKGRvZXNuJ3RcbiAqIGFzc3VtZSBidXR0b25zIGhhdmUgcmFuZ2Ugc2VsZWN0
aW9ucyBhbGxvd2VkKS5cbiAqIElucHV0IHNlbGVjdGlvbiBtb2R1bGUgZm9yIFJlYWN0LlxuICov
XG52YXIgUmVhY3RJbnB1dFNlbGVjdGlvbiA9IHtcbiAgaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVz
OiBmdW5jdGlvbiAoZWxlbSkge1xuICAgIHZhciBub2RlTmFtZSA9IGVsZW0gJiYgZWxlbS5ub2Rl
TmFtZSAmJiBlbGVtLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7XG4gICAgcmV0dXJuIG5vZGVOYW1l
ICYmIChub2RlTmFtZSA9PT0gJ2lucHV0JyAmJiBlbGVtLnR5cGUgPT09ICd0ZXh0JyB8fCBub2Rl
TmFtZSA9PT0gJ3RleHRhcmVhJyB8fCBlbGVtLmNvbnRlbnRFZGl0YWJsZSA9PT0gJ3RydWUnKTtc
biAgfSxcblxuICBnZXRTZWxlY3Rpb25JbmZvcm1hdGlvbjogZnVuY3Rpb24gKCkge1xuICAgIHZh
ciBmb2N1c2VkRWxlbSA9IGdldEFjdGl2ZUVsZW1lbnQoKTtcbiAgICByZXR1cm4ge1xuICAgICAg
Zm9jdXNlZEVsZW06IGZvY3VzZWRFbGVtLFxuICAgICAgc2VsZWN0aW9uUmFuZ2U6IFJlYWN0SW5w
dXRTZWxlY3Rpb24uaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKGZvY3VzZWRFbGVtKSA/IFJlYWN0
SW5wdXRTZWxlY3Rpb24uZ2V0U2VsZWN0aW9uKGZvY3VzZWRFbGVtKSA6IG51bGxcbiAgICB9O1xu
ICB9LFxuXG4gIC8qKlxuICAgKiBAcmVzdG9yZVNlbGVjdGlvbjogSWYgYW55IHNlbGVjdGlvbiBp
bmZvcm1hdGlvbiB3YXMgcG90ZW50aWFsbHkgbG9zdCxcbiAgICogcmVzdG9yZSBpdC4gVGhpcyBp
cyB1c2VmdWwgd2hlbiBwZXJmb3JtaW5nIG9wZXJhdGlvbnMgdGhhdCBjb3VsZCByZW1vdmUgZG9t
XG4gICAqIG5vZGVzIGFuZCBwbGFjZSB0aGVtIGJhY2sgaW4sIHJlc3VsdGluZyBpbiBmb2N1cyBi
ZWluZyBsb3N0LlxuICAgKi9cbiAgcmVzdG9yZVNlbGVjdGlvbjogZnVuY3Rpb24gKHByaW9yU2Vs
ZWN0aW9uSW5mb3JtYXRpb24pIHtcbiAgICB2YXIgY3VyRm9jdXNlZEVsZW0gPSBnZXRBY3RpdmVF
bGVtZW50KCk7XG4gICAgdmFyIHByaW9yRm9jdXNlZEVsZW0gPSBwcmlvclNlbGVjdGlvbkluZm9y
bWF0aW9uLmZvY3VzZWRFbGVtO1xuICAgIHZhciBwcmlvclNlbGVjdGlvblJhbmdlID0gcHJpb3JT
ZWxlY3Rpb25JbmZvcm1hdGlvbi5zZWxlY3Rpb25SYW5nZTtcbiAgICBpZiAoY3VyRm9jdXNlZEVs
ZW0gIT09IHByaW9yRm9jdXNlZEVsZW0gJiYgaXNJbkRvY3VtZW50KHByaW9yRm9jdXNlZEVsZW0p
KSB7XG4gICAgICBpZiAoUmVhY3RJbnB1dFNlbGVjdGlvbi5oYXNTZWxlY3Rpb25DYXBhYmlsaXRp
ZXMocHJpb3JGb2N1c2VkRWxlbSkpIHtcbiAgICAgICAgUmVhY3RJbnB1dFNlbGVjdGlvbi5zZXRT
ZWxlY3Rpb24ocHJpb3JGb2N1c2VkRWxlbSwgcHJpb3JTZWxlY3Rpb25SYW5nZSk7XG4gICAgICB9
XG4gICAgICBmb2N1c05vZGUocHJpb3JGb2N1c2VkRWxlbSk7XG4gICAgfVxuICB9LFxuXG4gIC8q
KlxuICAgKiBAZ2V0U2VsZWN0aW9uOiBHZXRzIHRoZSBzZWxlY3Rpb24gYm91bmRzIG9mIGEgZm9j
dXNlZCB0ZXh0YXJlYSwgaW5wdXQgb3JcbiAgICogY29udGVudEVkaXRhYmxlIG5vZGUuXG4gICAq
IC1AaW5wdXQ6IExvb2sgdXAgc2VsZWN0aW9uIGJvdW5kcyBvZiB0aGlzIGlucHV0XG4gICAqIC1A
cmV0dXJuIHtzdGFydDogc2VsZWN0aW9uU3RhcnQsIGVuZDogc2VsZWN0aW9uRW5kfVxuICAgKi9c
biAgZ2V0U2VsZWN0aW9uOiBmdW5jdGlvbiAoaW5wdXQpIHtcbiAgICB2YXIgc2VsZWN0aW9uO1xu
XG4gICAgaWYgKCdzZWxlY3Rpb25TdGFydCcgaW4gaW5wdXQpIHtcbiAgICAgIC8vIE1vZGVybiBi
cm93c2VyIHdpdGggaW5wdXQgb3IgdGV4dGFyZWEuXG4gICAgICBzZWxlY3Rpb24gPSB7XG4gICAg
ICAgIHN0YXJ0OiBpbnB1dC5zZWxlY3Rpb25TdGFydCxcbiAgICAgICAgZW5kOiBpbnB1dC5zZWxl
Y3Rpb25FbmRcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChkb2N1bWVudC5zZWxlY3Rpb24gJiYg
aW5wdXQubm9kZU5hbWUgJiYgaW5wdXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2lucHV0
Jykge1xuICAgICAgLy8gSUU4IGlucHV0LlxuICAgICAgdmFyIHJhbmdlID0gZG9jdW1lbnQuc2Vs
ZWN0aW9uLmNyZWF0ZVJhbmdlKCk7XG4gICAgICAvLyBUaGVyZSBjYW4gb25seSBiZSBvbmUgc2Vs
ZWN0aW9uIHBlciBkb2N1bWVudCBpbiBJRSwgc28gaXQgbXVzdFxuICAgICAgLy8gYmUgaW4gb3Vy
IGVsZW1lbnQuXG4gICAgICBpZiAocmFuZ2UucGFyZW50RWxlbWVudCgpID09PSBpbnB1dCkge1xu
ICAgICAgICBzZWxlY3Rpb24gPSB7XG4gICAgICAgICAgc3RhcnQ6IC1yYW5nZS5tb3ZlU3RhcnQo
J2NoYXJhY3RlcicsIC1pbnB1dC52YWx1ZS5sZW5ndGgpLFxuICAgICAgICAgIGVuZDogLXJhbmdl
Lm1vdmVFbmQoJ2NoYXJhY3RlcicsIC1pbnB1dC52YWx1ZS5sZW5ndGgpXG4gICAgICAgIH07XG4g
ICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENvbnRlbnQgZWRpdGFibGUgb3Igb2xkIElF
IHRleHRhcmVhLlxuICAgICAgc2VsZWN0aW9uID0gUmVhY3RET01TZWxlY3Rpb24uZ2V0T2Zmc2V0
cyhpbnB1dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHNlbGVjdGlvbiB8fCB7IHN0YXJ0OiAwLCBl
bmQ6IDAgfTtcbiAgfSxcblxuICAvKipcbiAgICogQHNldFNlbGVjdGlvbjogU2V0cyB0aGUgc2Vs
ZWN0aW9uIGJvdW5kcyBvZiBhIHRleHRhcmVhIG9yIGlucHV0IGFuZCBmb2N1c2VzXG4gICAqIHRo
ZSBpbnB1dC5cbiAgICogLUBpbnB1dCAgICAgU2V0IHNlbGVjdGlvbiBib3VuZHMgb2YgdGhpcyBp
bnB1dCBvciB0ZXh0YXJlYVxuICAgKiAtQG9mZnNldHMgICBPYmplY3Qgb2Ygc2FtZSBmb3JtIHRo
YXQgaXMgcmV0dXJuZWQgZnJvbSBnZXQqXG4gICAqL1xuICBzZXRTZWxlY3Rpb246IGZ1bmN0aW9u
IChpbnB1dCwgb2Zmc2V0cykge1xuICAgIHZhciBzdGFydCA9IG9mZnNldHMuc3RhcnQ7XG4gICAg
dmFyIGVuZCA9IG9mZnNldHMuZW5kO1xuICAgIGlmIChlbmQgPT09IHVuZGVmaW5lZCkge1xuICAg
ICAgZW5kID0gc3RhcnQ7XG4gICAgfVxuXG4gICAgaWYgKCdzZWxlY3Rpb25TdGFydCcgaW4gaW5w
dXQpIHtcbiAgICAgIGlucHV0LnNlbGVjdGlvblN0YXJ0ID0gc3RhcnQ7XG4gICAgICBpbnB1dC5z
ZWxlY3Rpb25FbmQgPSBNYXRoLm1pbihlbmQsIGlucHV0LnZhbHVlLmxlbmd0aCk7XG4gICAgfSBl
bHNlIGlmIChkb2N1bWVudC5zZWxlY3Rpb24gJiYgaW5wdXQubm9kZU5hbWUgJiYgaW5wdXQubm9k
ZU5hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ2lucHV0Jykge1xuICAgICAgdmFyIHJhbmdlID0gaW5w
dXQuY3JlYXRlVGV4dFJhbmdlKCk7XG4gICAgICByYW5nZS5jb2xsYXBzZSh0cnVlKTtcbiAgICAg
IHJhbmdlLm1vdmVTdGFydCgnY2hhcmFjdGVyJywgc3RhcnQpO1xuICAgICAgcmFuZ2UubW92ZUVu
ZCgnY2hhcmFjdGVyJywgZW5kIC0gc3RhcnQpO1xuICAgICAgcmFuZ2Uuc2VsZWN0KCk7XG4gICAg
fSBlbHNlIHtcbiAgICAgIFJlYWN0RE9NU2VsZWN0aW9uLnNldE9mZnNldHMoaW5wdXQsIG9mZnNl
dHMpO1xuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdElucHV0U2VsZWN0
aW9uO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+
L3JlYWN0LWRvbS9saWIvUmVhY3RJbnB1dFNlbGVjdGlvbi5qc1xuICoqIG1vZHVsZSBpZCA9IDY2
XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAq
XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcu
L3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52YXIgRE9NTGF6eVRyZWUgPSByZXF1aXJlKCcuL0RP
TUxhenlUcmVlJyk7XG52YXIgRE9NUHJvcGVydHkgPSByZXF1aXJlKCcuL0RPTVByb3BlcnR5Jyk7
XG52YXIgUmVhY3QgPSByZXF1aXJlKCdyZWFjdC9saWIvUmVhY3QnKTtcbnZhciBSZWFjdEJyb3dz
ZXJFdmVudEVtaXR0ZXIgPSByZXF1aXJlKCcuL1JlYWN0QnJvd3NlckV2ZW50RW1pdHRlcicpO1xu
dmFyIFJlYWN0Q3VycmVudE93bmVyID0gcmVxdWlyZSgncmVhY3QvbGliL1JlYWN0Q3VycmVudE93
bmVyJyk7XG52YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9SZWFjdERPTUNv
bXBvbmVudFRyZWUnKTtcbnZhciBSZWFjdERPTUNvbnRhaW5lckluZm8gPSByZXF1aXJlKCcuL1Jl
YWN0RE9NQ29udGFpbmVySW5mbycpO1xudmFyIFJlYWN0RE9NRmVhdHVyZUZsYWdzID0gcmVxdWly
ZSgnLi9SZWFjdERPTUZlYXR1cmVGbGFncycpO1xudmFyIFJlYWN0RmVhdHVyZUZsYWdzID0gcmVx
dWlyZSgnLi9SZWFjdEZlYXR1cmVGbGFncycpO1xudmFyIFJlYWN0SW5zdGFuY2VNYXAgPSByZXF1
aXJlKCcuL1JlYWN0SW5zdGFuY2VNYXAnKTtcbnZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IHJl
cXVpcmUoJy4vUmVhY3RJbnN0cnVtZW50YXRpb24nKTtcbnZhciBSZWFjdE1hcmt1cENoZWNrc3Vt
ID0gcmVxdWlyZSgnLi9SZWFjdE1hcmt1cENoZWNrc3VtJyk7XG52YXIgUmVhY3RSZWNvbmNpbGVy
ID0gcmVxdWlyZSgnLi9SZWFjdFJlY29uY2lsZXInKTtcbnZhciBSZWFjdFVwZGF0ZVF1ZXVlID0g
cmVxdWlyZSgnLi9SZWFjdFVwZGF0ZVF1ZXVlJyk7XG52YXIgUmVhY3RVcGRhdGVzID0gcmVxdWly
ZSgnLi9SZWFjdFVwZGF0ZXMnKTtcblxudmFyIGVtcHR5T2JqZWN0ID0gcmVxdWlyZSgnZmJqcy9s
aWIvZW1wdHlPYmplY3QnKTtcbnZhciBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50ID0gcmVxdWly
ZSgnLi9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50Jyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWly
ZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIgc2V0SW5uZXJIVE1MID0gcmVxdWlyZSgnLi9z
ZXRJbm5lckhUTUwnKTtcbnZhciBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudCA9IHJlcXVpcmUo
Jy4vc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgn
ZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgQVRUUl9OQU1FID0gRE9NUHJvcGVydHkuSURfQVRU
UklCVVRFX05BTUU7XG52YXIgUk9PVF9BVFRSX05BTUUgPSBET01Qcm9wZXJ0eS5ST09UX0FUVFJJ
QlVURV9OQU1FO1xuXG52YXIgRUxFTUVOVF9OT0RFX1RZUEUgPSAxO1xudmFyIERPQ19OT0RFX1RZ
UEUgPSA5O1xudmFyIERPQ1VNRU5UX0ZSQUdNRU5UX05PREVfVFlQRSA9IDExO1xuXG52YXIgaW5z
dGFuY2VzQnlSZWFjdFJvb3RJRCA9IHt9O1xuXG4vKipcbiAqIEZpbmRzIHRoZSBpbmRleCBvZiB0
aGUgZmlyc3QgY2hhcmFjdGVyXG4gKiB0aGF0J3Mgbm90IGNvbW1vbiBiZXR3ZWVuIHRoZSB0d28g
Z2l2ZW4gc3RyaW5ncy5cbiAqXG4gKiBAcmV0dXJuIHtudW1iZXJ9IHRoZSBpbmRleCBvZiB0aGUg
Y2hhcmFjdGVyIHdoZXJlIHRoZSBzdHJpbmdzIGRpdmVyZ2VcbiAqL1xuZnVuY3Rpb24gZmlyc3RE
aWZmZXJlbmNlSW5kZXgoc3RyaW5nMSwgc3RyaW5nMikge1xuICB2YXIgbWluTGVuID0gTWF0aC5t
aW4oc3RyaW5nMS5sZW5ndGgsIHN0cmluZzIubGVuZ3RoKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkg
PCBtaW5MZW47IGkrKykge1xuICAgIGlmIChzdHJpbmcxLmNoYXJBdChpKSAhPT0gc3RyaW5nMi5j
aGFyQXQoaSkpIHtcbiAgICAgIHJldHVybiBpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gc3RyaW5n
MS5sZW5ndGggPT09IHN0cmluZzIubGVuZ3RoID8gLTEgOiBtaW5MZW47XG59XG5cbi8qKlxuICog
QHBhcmFtIHtET01FbGVtZW50fERPTURvY3VtZW50fSBjb250YWluZXIgRE9NIGVsZW1lbnQgdGhh
dCBtYXkgY29udGFpblxuICogYSBSZWFjdCBjb21wb25lbnRcbiAqIEByZXR1cm4gez8qfSBET00g
ZWxlbWVudCB0aGF0IG1heSBoYXZlIHRoZSByZWFjdFJvb3QgSUQsIG9yIG51bGwuXG4gKi9cbmZ1
bmN0aW9uIGdldFJlYWN0Um9vdEVsZW1lbnRJbkNvbnRhaW5lcihjb250YWluZXIpIHtcbiAgaWYg
KCFjb250YWluZXIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmIChjb250YWluZXIu
bm9kZVR5cGUgPT09IERPQ19OT0RFX1RZUEUpIHtcbiAgICByZXR1cm4gY29udGFpbmVyLmRvY3Vt
ZW50RWxlbWVudDtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gY29udGFpbmVyLmZpcnN0Q2hpbGQ7
XG4gIH1cbn1cblxuZnVuY3Rpb24gaW50ZXJuYWxHZXRJRChub2RlKSB7XG4gIC8vIElmIG5vZGUg
aXMgc29tZXRoaW5nIGxpa2UgYSB3aW5kb3csIGRvY3VtZW50LCBvciB0ZXh0IG5vZGUsIG5vbmUg
b2ZcbiAgLy8gd2hpY2ggc3VwcG9ydCBhdHRyaWJ1dGVzIG9yIGEgLmdldEF0dHJpYnV0ZSBtZXRo
b2QsIGdyYWNlZnVsbHkgcmV0dXJuXG4gIC8vIHRoZSBlbXB0eSBzdHJpbmcsIGFzIGlmIHRoZSBh
dHRyaWJ1dGUgd2VyZSBtaXNzaW5nLlxuICByZXR1cm4gbm9kZS5nZXRBdHRyaWJ1dGUgJiYgbm9k
ZS5nZXRBdHRyaWJ1dGUoQVRUUl9OQU1FKSB8fCAnJztcbn1cblxuLyoqXG4gKiBNb3VudHMgdGhp
cyBjb21wb25lbnQgYW5kIGluc2VydHMgaXQgaW50byB0aGUgRE9NLlxuICpcbiAqIEBwYXJhbSB7
UmVhY3RDb21wb25lbnR9IGNvbXBvbmVudEluc3RhbmNlIFRoZSBpbnN0YW5jZSB0byBtb3VudC5c
biAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRvIG1vdW50IGlu
dG8uXG4gKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4g
KiBAcGFyYW0ge2Jvb2xlYW59IHNob3VsZFJldXNlTWFya3VwIElmIHRydWUsIGRvIG5vdCBpbnNl
cnQgbWFya3VwXG4gKi9cbmZ1bmN0aW9uIG1vdW50Q29tcG9uZW50SW50b05vZGUod3JhcHBlcklu
c3RhbmNlLCBjb250YWluZXIsIHRyYW5zYWN0aW9uLCBzaG91bGRSZXVzZU1hcmt1cCwgY29udGV4
dCkge1xuICB2YXIgbWFya2VyTmFtZTtcbiAgaWYgKFJlYWN0RmVhdHVyZUZsYWdzLmxvZ1RvcExl
dmVsUmVuZGVycykge1xuICAgIHZhciB3cmFwcGVkRWxlbWVudCA9IHdyYXBwZXJJbnN0YW5jZS5f
Y3VycmVudEVsZW1lbnQucHJvcHMuY2hpbGQ7XG4gICAgdmFyIHR5cGUgPSB3cmFwcGVkRWxlbWVu
dC50eXBlO1xuICAgIG1hcmtlck5hbWUgPSAnUmVhY3QgbW91bnQ6ICcgKyAodHlwZW9mIHR5cGUg
PT09ICdzdHJpbmcnID8gdHlwZSA6IHR5cGUuZGlzcGxheU5hbWUgfHwgdHlwZS5uYW1lKTtcbiAg
ICBjb25zb2xlLnRpbWUobWFya2VyTmFtZSk7XG4gIH1cblxuICB2YXIgbWFya3VwID0gUmVhY3RS
ZWNvbmNpbGVyLm1vdW50Q29tcG9uZW50KHdyYXBwZXJJbnN0YW5jZSwgdHJhbnNhY3Rpb24sIG51
bGwsIFJlYWN0RE9NQ29udGFpbmVySW5mbyh3cmFwcGVySW5zdGFuY2UsIGNvbnRhaW5lciksIGNv
bnRleHQsIDAgLyogcGFyZW50RGVidWdJRCAqL1xuICApO1xuXG4gIGlmIChtYXJrZXJOYW1lKSB7
XG4gICAgY29uc29sZS50aW1lRW5kKG1hcmtlck5hbWUpO1xuICB9XG5cbiAgd3JhcHBlckluc3Rh
bmNlLl9yZW5kZXJlZENvbXBvbmVudC5fdG9wTGV2ZWxXcmFwcGVyID0gd3JhcHBlckluc3RhbmNl
O1xuICBSZWFjdE1vdW50Ll9tb3VudEltYWdlSW50b05vZGUobWFya3VwLCBjb250YWluZXIsIHdy
YXBwZXJJbnN0YW5jZSwgc2hvdWxkUmV1c2VNYXJrdXAsIHRyYW5zYWN0aW9uKTtcbn1cblxuLyoq
XG4gKiBCYXRjaGVkIG1vdW50LlxuICpcbiAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNvbXBv
bmVudEluc3RhbmNlIFRoZSBpbnN0YW5jZSB0byBtb3VudC5cbiAqIEBwYXJhbSB7RE9NRWxlbWVu
dH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRvIG1vdW50IGludG8uXG4gKiBAcGFyYW0ge2Jvb2xl
YW59IHNob3VsZFJldXNlTWFya3VwIElmIHRydWUsIGRvIG5vdCBpbnNlcnQgbWFya3VwXG4gKi9c
bmZ1bmN0aW9uIGJhdGNoZWRNb3VudENvbXBvbmVudEludG9Ob2RlKGNvbXBvbmVudEluc3RhbmNl
LCBjb250YWluZXIsIHNob3VsZFJldXNlTWFya3VwLCBjb250ZXh0KSB7XG4gIHZhciB0cmFuc2Fj
dGlvbiA9IFJlYWN0VXBkYXRlcy5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLmdldFBvb2xlZChc
biAgLyogdXNlQ3JlYXRlRWxlbWVudCAqL1xuICAhc2hvdWxkUmV1c2VNYXJrdXAgJiYgUmVhY3RE
T01GZWF0dXJlRmxhZ3MudXNlQ3JlYXRlRWxlbWVudCk7XG4gIHRyYW5zYWN0aW9uLnBlcmZvcm0o
bW91bnRDb21wb25lbnRJbnRvTm9kZSwgbnVsbCwgY29tcG9uZW50SW5zdGFuY2UsIGNvbnRhaW5l
ciwgdHJhbnNhY3Rpb24sIHNob3VsZFJldXNlTWFya3VwLCBjb250ZXh0KTtcbiAgUmVhY3RVcGRh
dGVzLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVsZWFzZSh0cmFuc2FjdGlvbik7XG59XG5c
bi8qKlxuICogVW5tb3VudHMgYSBjb21wb25lbnQgYW5kIHJlbW92ZXMgaXQgZnJvbSB0aGUgRE9N
LlxuICpcbiAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGluc3RhbmNlIFJlYWN0IGNvbXBvbmVu
dCBpbnN0YW5jZS5cbiAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50
IHRvIHVubW91bnQgZnJvbS5cbiAqIEBmaW5hbFxuICogQGludGVybmFsXG4gKiBAc2VlIHtSZWFj
dE1vdW50LnVubW91bnRDb21wb25lbnRBdE5vZGV9XG4gKi9cbmZ1bmN0aW9uIHVubW91bnRDb21w
b25lbnRGcm9tTm9kZShpbnN0YW5jZSwgY29udGFpbmVyLCBzYWZlbHkpIHtcbiAgaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBSZWFjdEluc3RydW1lbnRh
dGlvbi5kZWJ1Z1Rvb2wub25CZWdpbkZsdXNoKCk7XG4gIH1cbiAgUmVhY3RSZWNvbmNpbGVyLnVu
bW91bnRDb21wb25lbnQoaW5zdGFuY2UsIHNhZmVseSk7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdU
b29sLm9uRW5kRmx1c2goKTtcbiAgfVxuXG4gIGlmIChjb250YWluZXIubm9kZVR5cGUgPT09IERP
Q19OT0RFX1RZUEUpIHtcbiAgICBjb250YWluZXIgPSBjb250YWluZXIuZG9jdW1lbnRFbGVtZW50
O1xuICB9XG5cbiAgLy8gaHR0cDovL2pzcGVyZi5jb20vZW1wdHlpbmctYS1ub2RlXG4gIHdoaWxl
IChjb250YWluZXIubGFzdENoaWxkKSB7XG4gICAgY29udGFpbmVyLnJlbW92ZUNoaWxkKGNvbnRh
aW5lci5sYXN0Q2hpbGQpO1xuICB9XG59XG5cbi8qKlxuICogVHJ1ZSBpZiB0aGUgc3VwcGxpZWQg
RE9NIG5vZGUgaGFzIGEgZGlyZWN0IFJlYWN0LXJlbmRlcmVkIGNoaWxkIHRoYXQgaXNcbiAqIG5v
dCBhIFJlYWN0IHJvb3QgZWxlbWVudC4gVXNlZnVsIGZvciB3YXJuaW5nIGluIGByZW5kZXJgLFxu
ICogYHVubW91bnRDb21wb25lbnRBdE5vZGVgLCBldGMuXG4gKlxuICogQHBhcmFtIHs/RE9NRWxl
bWVudH0gbm9kZSBUaGUgY2FuZGlkYXRlIERPTSBub2RlLlxuICogQHJldHVybiB7Ym9vbGVhbn0g
VHJ1ZSBpZiB0aGUgRE9NIGVsZW1lbnQgY29udGFpbnMgYSBkaXJlY3QgY2hpbGQgdGhhdCB3YXNc
biAqIHJlbmRlcmVkIGJ5IFJlYWN0IGJ1dCBpcyBub3QgYSByb290IGVsZW1lbnQuXG4gKiBAaW50
ZXJuYWxcbiAqL1xuZnVuY3Rpb24gaGFzTm9uUm9vdFJlYWN0Q2hpbGQoY29udGFpbmVyKSB7XG4g
IHZhciByb290RWwgPSBnZXRSZWFjdFJvb3RFbGVtZW50SW5Db250YWluZXIoY29udGFpbmVyKTtc
biAgaWYgKHJvb3RFbCkge1xuICAgIHZhciBpbnN0ID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdl
dEluc3RhbmNlRnJvbU5vZGUocm9vdEVsKTtcbiAgICByZXR1cm4gISEoaW5zdCAmJiBpbnN0Ll9o
b3N0UGFyZW50KTtcbiAgfVxufVxuXG4vKipcbiAqIFRydWUgaWYgdGhlIHN1cHBsaWVkIERPTSBu
b2RlIGlzIGEgUmVhY3QgRE9NIGVsZW1lbnQgYW5kXG4gKiBpdCBoYXMgYmVlbiByZW5kZXJlZCBi
eSBhbm90aGVyIGNvcHkgb2YgUmVhY3QuXG4gKlxuICogQHBhcmFtIHs/RE9NRWxlbWVudH0gbm9k
ZSBUaGUgY2FuZGlkYXRlIERPTSBub2RlLlxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0
aGUgRE9NIGhhcyBiZWVuIHJlbmRlcmVkIGJ5IGFub3RoZXIgY29weSBvZiBSZWFjdFxuICogQGlu
dGVybmFsXG4gKi9cbmZ1bmN0aW9uIG5vZGVJc1JlbmRlcmVkQnlPdGhlckluc3RhbmNlKGNvbnRh
aW5lcikge1xuICB2YXIgcm9vdEVsID0gZ2V0UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVyKGNv
bnRhaW5lcik7XG4gIHJldHVybiAhIShyb290RWwgJiYgaXNSZWFjdE5vZGUocm9vdEVsKSAmJiAh
UmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUocm9vdEVsKSk7XG59XG5c
bi8qKlxuICogVHJ1ZSBpZiB0aGUgc3VwcGxpZWQgRE9NIG5vZGUgaXMgYSB2YWxpZCBub2RlIGVs
ZW1lbnQuXG4gKlxuICogQHBhcmFtIHs/RE9NRWxlbWVudH0gbm9kZSBUaGUgY2FuZGlkYXRlIERP
TSBub2RlLlxuICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgRE9NIGlzIGEgdmFsaWQg
RE9NIG5vZGUuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24gaXNWYWxpZENvbnRhaW5lcihu
b2RlKSB7XG4gIHJldHVybiAhIShub2RlICYmIChub2RlLm5vZGVUeXBlID09PSBFTEVNRU5UX05P
REVfVFlQRSB8fCBub2RlLm5vZGVUeXBlID09PSBET0NfTk9ERV9UWVBFIHx8IG5vZGUubm9kZVR5
cGUgPT09IERPQ1VNRU5UX0ZSQUdNRU5UX05PREVfVFlQRSkpO1xufVxuXG4vKipcbiAqIFRydWUg
aWYgdGhlIHN1cHBsaWVkIERPTSBub2RlIGlzIGEgdmFsaWQgUmVhY3Qgbm9kZSBlbGVtZW50Llxu
ICpcbiAqIEBwYXJhbSB7P0RPTUVsZW1lbnR9IG5vZGUgVGhlIGNhbmRpZGF0ZSBET00gbm9kZS5c
biAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhlIERPTSBpcyBhIHZhbGlkIFJlYWN0IERP
TSBub2RlLlxuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIGlzUmVhY3ROb2RlKG5vZGUpIHtc
biAgcmV0dXJuIGlzVmFsaWRDb250YWluZXIobm9kZSkgJiYgKG5vZGUuaGFzQXR0cmlidXRlKFJP
T1RfQVRUUl9OQU1FKSB8fCBub2RlLmhhc0F0dHJpYnV0ZShBVFRSX05BTUUpKTtcbn1cblxuZnVu
Y3Rpb24gZ2V0SG9zdFJvb3RJbnN0YW5jZUluQ29udGFpbmVyKGNvbnRhaW5lcikge1xuICB2YXIg
cm9vdEVsID0gZ2V0UmVhY3RSb290RWxlbWVudEluQ29udGFpbmVyKGNvbnRhaW5lcik7XG4gIHZh
ciBwcmV2SG9zdEluc3RhbmNlID0gcm9vdEVsICYmIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJ
bnN0YW5jZUZyb21Ob2RlKHJvb3RFbCk7XG4gIHJldHVybiBwcmV2SG9zdEluc3RhbmNlICYmICFw
cmV2SG9zdEluc3RhbmNlLl9ob3N0UGFyZW50ID8gcHJldkhvc3RJbnN0YW5jZSA6IG51bGw7XG59
XG5cbmZ1bmN0aW9uIGdldFRvcExldmVsV3JhcHBlckluQ29udGFpbmVyKGNvbnRhaW5lcikge1xu
ICB2YXIgcm9vdCA9IGdldEhvc3RSb290SW5zdGFuY2VJbkNvbnRhaW5lcihjb250YWluZXIpO1xu
ICByZXR1cm4gcm9vdCA/IHJvb3QuX2hvc3RDb250YWluZXJJbmZvLl90b3BMZXZlbFdyYXBwZXIg
OiBudWxsO1xufVxuXG4vKipcbiAqIFRlbXBvcmFyeSAoPykgaGFjayBzbyB0aGF0IHdlIGNhbiBz
dG9yZSBhbGwgdG9wLWxldmVsIHBlbmRpbmcgdXBkYXRlcyBvblxuICogY29tcG9zaXRlcyBpbnN0
ZWFkIG9mIGhhdmluZyB0byB3b3JyeSBhYm91dCBkaWZmZXJlbnQgdHlwZXMgb2YgY29tcG9uZW50
c1xuICogaGVyZS5cbiAqL1xudmFyIHRvcExldmVsUm9vdENvdW50ZXIgPSAxO1xudmFyIFRvcExl
dmVsV3JhcHBlciA9IGZ1bmN0aW9uICgpIHtcbiAgdGhpcy5yb290SUQgPSB0b3BMZXZlbFJvb3RD
b3VudGVyKys7XG59O1xuVG9wTGV2ZWxXcmFwcGVyLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50
ID0ge307XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBU
b3BMZXZlbFdyYXBwZXIuZGlzcGxheU5hbWUgPSAnVG9wTGV2ZWxXcmFwcGVyJztcbn1cblRvcExl
dmVsV3JhcHBlci5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhp
cy5wcm9wcy5jaGlsZDtcbn07XG5Ub3BMZXZlbFdyYXBwZXIuaXNSZWFjdFRvcExldmVsV3JhcHBl
ciA9IHRydWU7XG5cbi8qKlxuICogTW91bnRpbmcgaXMgdGhlIHByb2Nlc3Mgb2YgaW5pdGlhbGl6
aW5nIGEgUmVhY3QgY29tcG9uZW50IGJ5IGNyZWF0aW5nIGl0c1xuICogcmVwcmVzZW50YXRpdmUg
RE9NIGVsZW1lbnRzIGFuZCBpbnNlcnRpbmcgdGhlbSBpbnRvIGEgc3VwcGxpZWQgYGNvbnRhaW5l
cmAuXG4gKiBBbnkgcHJpb3IgY29udGVudCBpbnNpZGUgYGNvbnRhaW5lcmAgaXMgZGVzdHJveWVk
IGluIHRoZSBwcm9jZXNzLlxuICpcbiAqICAgUmVhY3RNb3VudC5yZW5kZXIoXG4gKiAgICAgY29t
cG9uZW50LFxuICogICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb250YWluZXInKVxuICog
ICApO1xuICpcbiAqICAgPGRpdiBpZD1cImNvbnRhaW5lclwiPiAgICAgICAgICAgICAgICAgICA8
LS0gU3VwcGxpZWQgYGNvbnRhaW5lcmAuXG4gKiAgICAgPGRpdiBkYXRhLXJlYWN0aWQ9XCIuM1wi
PiAgICAgICAgICAgICAgPC0tIFJlbmRlcmVkIHJlYWN0Um9vdCBvZiBSZWFjdFxuICogICAgICAg
Ly8gLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50LlxuICogICAg
IDwvZGl2PlxuICogICA8L2Rpdj5cbiAqXG4gKiBJbnNpZGUgb2YgYGNvbnRhaW5lcmAsIHRoZSBm
aXJzdCBlbGVtZW50IHJlbmRlcmVkIGlzIHRoZSBcInJlYWN0Um9vdFwiLlxuICovXG52YXIgUmVh
Y3RNb3VudCA9IHtcbiAgVG9wTGV2ZWxXcmFwcGVyOiBUb3BMZXZlbFdyYXBwZXIsXG5cbiAgLyoq
XG4gICAqIFVzZWQgYnkgZGV2dG9vbHMuIFRoZSBrZXlzIGFyZSBub3QgaW1wb3J0YW50LlxuICAg
Ki9cbiAgX2luc3RhbmNlc0J5UmVhY3RSb290SUQ6IGluc3RhbmNlc0J5UmVhY3RSb290SUQsXG5c
biAgLyoqXG4gICAqIFRoaXMgaXMgYSBob29rIHByb3ZpZGVkIHRvIHN1cHBvcnQgcmVuZGVyaW5n
IFJlYWN0IGNvbXBvbmVudHMgd2hpbGVcbiAgICogZW5zdXJpbmcgdGhhdCB0aGUgYXBwYXJlbnQg
c2Nyb2xsIHBvc2l0aW9uIG9mIGl0cyBgY29udGFpbmVyYCBkb2VzIG5vdFxuICAgKiBjaGFuZ2Uu
XG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIFRoZSBgY29udGFpbmVy
YCBiZWluZyByZW5kZXJlZCBpbnRvLlxuICAgKiBAcGFyYW0ge2Z1bmN0aW9ufSByZW5kZXJDYWxs
YmFjayBUaGlzIG11c3QgYmUgY2FsbGVkIG9uY2UgdG8gZG8gdGhlIHJlbmRlci5cbiAgICovXG4g
IHNjcm9sbE1vbml0b3I6IGZ1bmN0aW9uIChjb250YWluZXIsIHJlbmRlckNhbGxiYWNrKSB7XG4g
ICAgcmVuZGVyQ2FsbGJhY2soKTtcbiAgfSxcblxuICAvKipcbiAgICogVGFrZSBhIGNvbXBvbmVu
dCB0aGF0J3MgYWxyZWFkeSBtb3VudGVkIGludG8gdGhlIERPTSBhbmQgcmVwbGFjZSBpdHMgcHJv
cHNcbiAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gcHJldkNvbXBvbmVudCBjb21wb25lbnQg
aW5zdGFuY2UgYWxyZWFkeSBpbiB0aGUgRE9NXG4gICAqIEBwYXJhbSB7UmVhY3RFbGVtZW50fSBu
ZXh0RWxlbWVudCBjb21wb25lbnQgaW5zdGFuY2UgdG8gcmVuZGVyXG4gICAqIEBwYXJhbSB7RE9N
RWxlbWVudH0gY29udGFpbmVyIGNvbnRhaW5lciB0byByZW5kZXIgaW50b1xuICAgKiBAcGFyYW0g
ez9mdW5jdGlvbn0gY2FsbGJhY2sgZnVuY3Rpb24gdHJpZ2dlcmVkIG9uIGNvbXBsZXRpb25cbiAg
ICovXG4gIF91cGRhdGVSb290Q29tcG9uZW50OiBmdW5jdGlvbiAocHJldkNvbXBvbmVudCwgbmV4
dEVsZW1lbnQsIG5leHRDb250ZXh0LCBjb250YWluZXIsIGNhbGxiYWNrKSB7XG4gICAgUmVhY3RN
b3VudC5zY3JvbGxNb25pdG9yKGNvbnRhaW5lciwgZnVuY3Rpb24gKCkge1xuICAgICAgUmVhY3RV
cGRhdGVRdWV1ZS5lbnF1ZXVlRWxlbWVudEludGVybmFsKHByZXZDb21wb25lbnQsIG5leHRFbGVt
ZW50LCBuZXh0Q29udGV4dCk7XG4gICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgUmVhY3RV
cGRhdGVRdWV1ZS5lbnF1ZXVlQ2FsbGJhY2tJbnRlcm5hbChwcmV2Q29tcG9uZW50LCBjYWxsYmFj
ayk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHJldkNvbXBvbmVudDtcbiAgfSxc
blxuICAvKipcbiAgICogUmVuZGVyIGEgbmV3IGNvbXBvbmVudCBpbnRvIHRoZSBET00uIEhvb2tl
ZCBieSBob29rcyFcbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50
IGVsZW1lbnQgdG8gcmVuZGVyXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIGNv
bnRhaW5lciB0byByZW5kZXIgaW50b1xuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHNob3VsZFJldXNl
TWFya3VwIGlmIHdlIHNob3VsZCBza2lwIHRoZSBtYXJrdXAgaW5zZXJ0aW9uXG4gICAqIEByZXR1
cm4ge1JlYWN0Q29tcG9uZW50fSBuZXh0Q29tcG9uZW50XG4gICAqL1xuICBfcmVuZGVyTmV3Um9v
dENvbXBvbmVudDogZnVuY3Rpb24gKG5leHRFbGVtZW50LCBjb250YWluZXIsIHNob3VsZFJldXNl
TWFya3VwLCBjb250ZXh0KSB7XG4gICAgLy8gVmFyaW91cyBwYXJ0cyBvZiBvdXIgY29kZSAoc3Vj
aCBhcyBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCdzXG4gICAgLy8gX3JlbmRlclZhbGlkYXRlZENv
bXBvbmVudCkgYXNzdW1lIHRoYXQgY2FsbHMgdG8gcmVuZGVyIGFyZW4ndCBuZXN0ZWQ7XG4gICAg
Ly8gdmVyaWZ5IHRoYXQgdGhhdCdzIHRoZSBjYXNlLlxuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPT0g
bnVsbCwgJ19yZW5kZXJOZXdSb290Q29tcG9uZW50KCk6IFJlbmRlciBtZXRob2RzIHNob3VsZCBi
ZSBhIHB1cmUgZnVuY3Rpb24gJyArICdvZiBwcm9wcyBhbmQgc3RhdGU7IHRyaWdnZXJpbmcgbmVz
dGVkIGNvbXBvbmVudCB1cGRhdGVzIGZyb20gJyArICdyZW5kZXIgaXMgbm90IGFsbG93ZWQuIElm
IG5lY2Vzc2FyeSwgdHJpZ2dlciBuZXN0ZWQgdXBkYXRlcyBpbiAnICsgJ2NvbXBvbmVudERpZFVw
ZGF0ZS4gQ2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgJXMuJywgUmVhY3RDdXJyZW50T3duZXIu
Y3VycmVudCAmJiBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50LmdldE5hbWUoKSB8fCAnUmVhY3RD
b21wb3NpdGVDb21wb25lbnQnKSA6IHZvaWQgMDtcblxuICAgICFpc1ZhbGlkQ29udGFpbmVyKGNv
bnRhaW5lcikgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJp
YW50KGZhbHNlLCAnX3JlZ2lzdGVyQ29tcG9uZW50KC4uLik6IFRhcmdldCBjb250YWluZXIgaXMg
bm90IGEgRE9NIGVsZW1lbnQuJykgOiBfcHJvZEludmFyaWFudCgnMzcnKSA6IHZvaWQgMDtcblxu
ICAgIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci5lbnN1cmVTY3JvbGxWYWx1ZU1vbml0b3Jpbmco
KTtcbiAgICB2YXIgY29tcG9uZW50SW5zdGFuY2UgPSBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50
KG5leHRFbGVtZW50LCBmYWxzZSk7XG5cbiAgICAvLyBUaGUgaW5pdGlhbCByZW5kZXIgaXMgc3lu
Y2hyb25vdXMgYnV0IGFueSB1cGRhdGVzIHRoYXQgaGFwcGVuIGR1cmluZ1xuICAgIC8vIHJlbmRl
cmluZywgaW4gY29tcG9uZW50V2lsbE1vdW50IG9yIGNvbXBvbmVudERpZE1vdW50LCB3aWxsIGJl
IGJhdGNoZWRcbiAgICAvLyBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgYmF0Y2hpbmcgc3RyYXRl
Z3kuXG5cbiAgICBSZWFjdFVwZGF0ZXMuYmF0Y2hlZFVwZGF0ZXMoYmF0Y2hlZE1vdW50Q29tcG9u
ZW50SW50b05vZGUsIGNvbXBvbmVudEluc3RhbmNlLCBjb250YWluZXIsIHNob3VsZFJldXNlTWFy
a3VwLCBjb250ZXh0KTtcblxuICAgIHZhciB3cmFwcGVySUQgPSBjb21wb25lbnRJbnN0YW5jZS5f
aW5zdGFuY2Uucm9vdElEO1xuICAgIGluc3RhbmNlc0J5UmVhY3RSb290SURbd3JhcHBlcklEXSA9
IGNvbXBvbmVudEluc3RhbmNlO1xuXG4gICAgcmV0dXJuIGNvbXBvbmVudEluc3RhbmNlO1xuICB9
LFxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgUmVhY3QgY29tcG9uZW50IGludG8gdGhlIERPTSBp
biB0aGUgc3VwcGxpZWQgYGNvbnRhaW5lcmAuXG4gICAqXG4gICAqIElmIHRoZSBSZWFjdCBjb21w
b25lbnQgd2FzIHByZXZpb3VzbHkgcmVuZGVyZWQgaW50byBgY29udGFpbmVyYCwgdGhpcyB3aWxs
XG4gICAqIHBlcmZvcm0gYW4gdXBkYXRlIG9uIGl0IGFuZCBvbmx5IG11dGF0ZSB0aGUgRE9NIGFz
IG5lY2Vzc2FyeSB0byByZWZsZWN0IHRoZVxuICAgKiBsYXRlc3QgUmVhY3QgY29tcG9uZW50Llxu
ICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fSBwYXJlbnRDb21wb25lbnQgVGhlIGNv
bmNlcHR1YWwgcGFyZW50IG9mIHRoaXMgcmVuZGVyIHRyZWUuXG4gICAqIEBwYXJhbSB7UmVhY3RF
bGVtZW50fSBuZXh0RWxlbWVudCBDb21wb25lbnQgZWxlbWVudCB0byByZW5kZXIuXG4gICAqIEBw
YXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERPTSBlbGVtZW50IHRvIHJlbmRlciBpbnRvLlxu
ICAgKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgZnVuY3Rpb24gdHJpZ2dlcmVkIG9uIGNv
bXBsZXRpb25cbiAgICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9IENvbXBvbmVudCBpbnN0YW5j
ZSByZW5kZXJlZCBpbiBgY29udGFpbmVyYC5cbiAgICovXG4gIHJlbmRlclN1YnRyZWVJbnRvQ29u
dGFpbmVyOiBmdW5jdGlvbiAocGFyZW50Q29tcG9uZW50LCBuZXh0RWxlbWVudCwgY29udGFpbmVy
LCBjYWxsYmFjaykge1xuICAgICEocGFyZW50Q29tcG9uZW50ICE9IG51bGwgJiYgUmVhY3RJbnN0
YW5jZU1hcC5oYXMocGFyZW50Q29tcG9uZW50KSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAncGFyZW50Q29tcG9uZW50IG11c3QgYmUg
YSB2YWxpZCBSZWFjdCBDb21wb25lbnQnKSA6IF9wcm9kSW52YXJpYW50KCczOCcpIDogdm9pZCAw
O1xuICAgIHJldHVybiBSZWFjdE1vdW50Ll9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcihwYXJl
bnRDb21wb25lbnQsIG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKTtcbiAgfSxcblxu
ICBfcmVuZGVyU3VidHJlZUludG9Db250YWluZXI6IGZ1bmN0aW9uIChwYXJlbnRDb21wb25lbnQs
IG5leHRFbGVtZW50LCBjb250YWluZXIsIGNhbGxiYWNrKSB7XG4gICAgUmVhY3RVcGRhdGVRdWV1
ZS52YWxpZGF0ZUNhbGxiYWNrKGNhbGxiYWNrLCAnUmVhY3RET00ucmVuZGVyJyk7XG4gICAgIVJl
YWN0LmlzVmFsaWRFbGVtZW50KG5leHRFbGVtZW50KSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdSZWFjdERPTS5yZW5kZXIoKTogSW52
YWxpZCBjb21wb25lbnQgZWxlbWVudC4lcycsIHR5cGVvZiBuZXh0RWxlbWVudCA9PT0gJ3N0cmlu
ZycgPyBcIiBJbnN0ZWFkIG9mIHBhc3NpbmcgYSBzdHJpbmcgbGlrZSAnZGl2JywgcGFzcyBcIiAr
IFwiUmVhY3QuY3JlYXRlRWxlbWVudCgnZGl2Jykgb3IgPGRpdiAvPi5cIiA6IHR5cGVvZiBuZXh0
RWxlbWVudCA9PT0gJ2Z1bmN0aW9uJyA/ICcgSW5zdGVhZCBvZiBwYXNzaW5nIGEgY2xhc3MgbGlr
ZSBGb28sIHBhc3MgJyArICdSZWFjdC5jcmVhdGVFbGVtZW50KEZvbykgb3IgPEZvbyAvPi4nIDog
Ly8gQ2hlY2sgaWYgaXQgcXVhY2tzIGxpa2UgYW4gZWxlbWVudFxuICAgIG5leHRFbGVtZW50ICE9
IG51bGwgJiYgbmV4dEVsZW1lbnQucHJvcHMgIT09IHVuZGVmaW5lZCA/ICcgVGhpcyBtYXkgYmUg
Y2F1c2VkIGJ5IHVuaW50ZW50aW9uYWxseSBsb2FkaW5nIHR3byBpbmRlcGVuZGVudCAnICsgJ2Nv
cGllcyBvZiBSZWFjdC4nIDogJycpIDogX3Byb2RJbnZhcmlhbnQoJzM5JywgdHlwZW9mIG5leHRF
bGVtZW50ID09PSAnc3RyaW5nJyA/IFwiIEluc3RlYWQgb2YgcGFzc2luZyBhIHN0cmluZyBsaWtl
ICdkaXYnLCBwYXNzIFwiICsgXCJSZWFjdC5jcmVhdGVFbGVtZW50KCdkaXYnKSBvciA8ZGl2IC8+
LlwiIDogdHlwZW9mIG5leHRFbGVtZW50ID09PSAnZnVuY3Rpb24nID8gJyBJbnN0ZWFkIG9mIHBh
c3NpbmcgYSBjbGFzcyBsaWtlIEZvbywgcGFzcyAnICsgJ1JlYWN0LmNyZWF0ZUVsZW1lbnQoRm9v
KSBvciA8Rm9vIC8+LicgOiBuZXh0RWxlbWVudCAhPSBudWxsICYmIG5leHRFbGVtZW50LnByb3Bz
ICE9PSB1bmRlZmluZWQgPyAnIFRoaXMgbWF5IGJlIGNhdXNlZCBieSB1bmludGVudGlvbmFsbHkg
bG9hZGluZyB0d28gaW5kZXBlbmRlbnQgJyArICdjb3BpZXMgb2YgUmVhY3QuJyA6ICcnKSA6IHZv
aWQgMDtcblxuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKCFjb250YWluZXIgfHwgIWNvbnRhaW5lci50YWdOYW1lIHx8IGNvbnRhaW5lci50YWdOYW1l
LnRvVXBwZXJDYXNlKCkgIT09ICdCT0RZJywgJ3JlbmRlcigpOiBSZW5kZXJpbmcgY29tcG9uZW50
cyBkaXJlY3RseSBpbnRvIGRvY3VtZW50LmJvZHkgaXMgJyArICdkaXNjb3VyYWdlZCwgc2luY2Ug
aXRzIGNoaWxkcmVuIGFyZSBvZnRlbiBtYW5pcHVsYXRlZCBieSB0aGlyZC1wYXJ0eSAnICsgJ3Nj
cmlwdHMgYW5kIGJyb3dzZXIgZXh0ZW5zaW9ucy4gVGhpcyBtYXkgbGVhZCB0byBzdWJ0bGUgJyAr
ICdyZWNvbmNpbGlhdGlvbiBpc3N1ZXMuIFRyeSByZW5kZXJpbmcgaW50byBhIGNvbnRhaW5lciBl
bGVtZW50IGNyZWF0ZWQgJyArICdmb3IgeW91ciBhcHAuJykgOiB2b2lkIDA7XG5cbiAgICB2YXIg
bmV4dFdyYXBwZWRFbGVtZW50ID0gUmVhY3QuY3JlYXRlRWxlbWVudChUb3BMZXZlbFdyYXBwZXIs
IHtcbiAgICAgIGNoaWxkOiBuZXh0RWxlbWVudFxuICAgIH0pO1xuXG4gICAgdmFyIG5leHRDb250
ZXh0O1xuICAgIGlmIChwYXJlbnRDb21wb25lbnQpIHtcbiAgICAgIHZhciBwYXJlbnRJbnN0ID0g
UmVhY3RJbnN0YW5jZU1hcC5nZXQocGFyZW50Q29tcG9uZW50KTtcbiAgICAgIG5leHRDb250ZXh0
ID0gcGFyZW50SW5zdC5fcHJvY2Vzc0NoaWxkQ29udGV4dChwYXJlbnRJbnN0Ll9jb250ZXh0KTtc
biAgICB9IGVsc2Uge1xuICAgICAgbmV4dENvbnRleHQgPSBlbXB0eU9iamVjdDtcbiAgICB9XG5c
biAgICB2YXIgcHJldkNvbXBvbmVudCA9IGdldFRvcExldmVsV3JhcHBlckluQ29udGFpbmVyKGNv
bnRhaW5lcik7XG5cbiAgICBpZiAocHJldkNvbXBvbmVudCkge1xuICAgICAgdmFyIHByZXZXcmFw
cGVkRWxlbWVudCA9IHByZXZDb21wb25lbnQuX2N1cnJlbnRFbGVtZW50O1xuICAgICAgdmFyIHBy
ZXZFbGVtZW50ID0gcHJldldyYXBwZWRFbGVtZW50LnByb3BzLmNoaWxkO1xuICAgICAgaWYgKHNo
b3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50KHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCkpIHtcbiAg
ICAgICAgdmFyIHB1YmxpY0luc3QgPSBwcmV2Q29tcG9uZW50Ll9yZW5kZXJlZENvbXBvbmVudC5n
ZXRQdWJsaWNJbnN0YW5jZSgpO1xuICAgICAgICB2YXIgdXBkYXRlZENhbGxiYWNrID0gY2FsbGJh
Y2sgJiYgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNhbGxiYWNrLmNhbGwocHVibGljSW5zdCk7
XG4gICAgICAgIH07XG4gICAgICAgIFJlYWN0TW91bnQuX3VwZGF0ZVJvb3RDb21wb25lbnQocHJl
dkNvbXBvbmVudCwgbmV4dFdyYXBwZWRFbGVtZW50LCBuZXh0Q29udGV4dCwgY29udGFpbmVyLCB1
cGRhdGVkQ2FsbGJhY2spO1xuICAgICAgICByZXR1cm4gcHVibGljSW5zdDtcbiAgICAgIH0gZWxz
ZSB7XG4gICAgICAgIFJlYWN0TW91bnQudW5tb3VudENvbXBvbmVudEF0Tm9kZShjb250YWluZXIp
O1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciByZWFjdFJvb3RFbGVtZW50ID0gZ2V0UmVhY3RS
b290RWxlbWVudEluQ29udGFpbmVyKGNvbnRhaW5lcik7XG4gICAgdmFyIGNvbnRhaW5lckhhc1Jl
YWN0TWFya3VwID0gcmVhY3RSb290RWxlbWVudCAmJiAhIWludGVybmFsR2V0SUQocmVhY3RSb290
RWxlbWVudCk7XG4gICAgdmFyIGNvbnRhaW5lckhhc05vblJvb3RSZWFjdENoaWxkID0gaGFzTm9u
Um9vdFJlYWN0Q2hpbGQoY29udGFpbmVyKTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nID8gd2FybmluZyghY29udGFpbmVySGFzTm9uUm9vdFJlYWN0Q2hpbGQsICdyZW5k
ZXIoLi4uKTogUmVwbGFjaW5nIFJlYWN0LXJlbmRlcmVkIGNoaWxkcmVuIHdpdGggYSBuZXcgcm9v
dCAnICsgJ2NvbXBvbmVudC4gSWYgeW91IGludGVuZGVkIHRvIHVwZGF0ZSB0aGUgY2hpbGRyZW4g
b2YgdGhpcyBub2RlLCAnICsgJ3lvdSBzaG91bGQgaW5zdGVhZCBoYXZlIHRoZSBleGlzdGluZyBj
aGlsZHJlbiB1cGRhdGUgdGhlaXIgc3RhdGUgJyArICdhbmQgcmVuZGVyIHRoZSBuZXcgY29tcG9u
ZW50cyBpbnN0ZWFkIG9mIGNhbGxpbmcgUmVhY3RET00ucmVuZGVyLicpIDogdm9pZCAwO1xuXG4g
ICAgICBpZiAoIWNvbnRhaW5lckhhc1JlYWN0TWFya3VwIHx8IHJlYWN0Um9vdEVsZW1lbnQubmV4
dFNpYmxpbmcpIHtcbiAgICAgICAgdmFyIHJvb3RFbGVtZW50U2libGluZyA9IHJlYWN0Um9vdEVs
ZW1lbnQ7XG4gICAgICAgIHdoaWxlIChyb290RWxlbWVudFNpYmxpbmcpIHtcbiAgICAgICAgICBp
ZiAoaW50ZXJuYWxHZXRJRChyb290RWxlbWVudFNpYmxpbmcpKSB7XG4gICAgICAgICAgICBwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ3JlbmRl
cigpOiBUYXJnZXQgbm9kZSBoYXMgbWFya3VwIHJlbmRlcmVkIGJ5IFJlYWN0LCBidXQgdGhlcmUg
JyArICdhcmUgdW5yZWxhdGVkIG5vZGVzIGFzIHdlbGwuIFRoaXMgaXMgbW9zdCBjb21tb25seSBj
YXVzZWQgYnkgJyArICd3aGl0ZS1zcGFjZSBpbnNlcnRlZCBhcm91bmQgc2VydmVyLXJlbmRlcmVk
IG1hcmt1cC4nKSA6IHZvaWQgMDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAg
ICAgICAgICByb290RWxlbWVudFNpYmxpbmcgPSByb290RWxlbWVudFNpYmxpbmcubmV4dFNpYmxp
bmc7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB2YXIgc2hvdWxkUmV1c2VNYXJr
dXAgPSBjb250YWluZXJIYXNSZWFjdE1hcmt1cCAmJiAhcHJldkNvbXBvbmVudCAmJiAhY29udGFp
bmVySGFzTm9uUm9vdFJlYWN0Q2hpbGQ7XG4gICAgdmFyIGNvbXBvbmVudCA9IFJlYWN0TW91bnQu
X3JlbmRlck5ld1Jvb3RDb21wb25lbnQobmV4dFdyYXBwZWRFbGVtZW50LCBjb250YWluZXIsIHNo
b3VsZFJldXNlTWFya3VwLCBuZXh0Q29udGV4dCkuX3JlbmRlcmVkQ29tcG9uZW50LmdldFB1Ymxp
Y0luc3RhbmNlKCk7XG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICBjYWxsYmFjay5jYWxsKGNv
bXBvbmVudCk7XG4gICAgfVxuICAgIHJldHVybiBjb21wb25lbnQ7XG4gIH0sXG5cbiAgLyoqXG4g
ICAqIFJlbmRlcnMgYSBSZWFjdCBjb21wb25lbnQgaW50byB0aGUgRE9NIGluIHRoZSBzdXBwbGll
ZCBgY29udGFpbmVyYC5cbiAgICogU2VlIGh0dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0
L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0ZG9tLnJlbmRlclxuICAgKlxuICAgKiBJZiB0
aGUgUmVhY3QgY29tcG9uZW50IHdhcyBwcmV2aW91c2x5IHJlbmRlcmVkIGludG8gYGNvbnRhaW5l
cmAsIHRoaXMgd2lsbFxuICAgKiBwZXJmb3JtIGFuIHVwZGF0ZSBvbiBpdCBhbmQgb25seSBtdXRh
dGUgdGhlIERPTSBhcyBuZWNlc3NhcnkgdG8gcmVmbGVjdCB0aGVcbiAgICogbGF0ZXN0IFJlYWN0
IGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50
IENvbXBvbmVudCBlbGVtZW50IHRvIHJlbmRlci5cbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBj
b250YWluZXIgRE9NIGVsZW1lbnQgdG8gcmVuZGVyIGludG8uXG4gICAqIEBwYXJhbSB7P2Z1bmN0
aW9ufSBjYWxsYmFjayBmdW5jdGlvbiB0cmlnZ2VyZWQgb24gY29tcGxldGlvblxuICAgKiBAcmV0
dXJuIHtSZWFjdENvbXBvbmVudH0gQ29tcG9uZW50IGluc3RhbmNlIHJlbmRlcmVkIGluIGBjb250
YWluZXJgLlxuICAgKi9cbiAgcmVuZGVyOiBmdW5jdGlvbiAobmV4dEVsZW1lbnQsIGNvbnRhaW5l
ciwgY2FsbGJhY2spIHtcbiAgICByZXR1cm4gUmVhY3RNb3VudC5fcmVuZGVyU3VidHJlZUludG9D
b250YWluZXIobnVsbCwgbmV4dEVsZW1lbnQsIGNvbnRhaW5lciwgY2FsbGJhY2spO1xuICB9LFxu
XG4gIC8qKlxuICAgKiBVbm1vdW50cyBhbmQgZGVzdHJveXMgdGhlIFJlYWN0IGNvbXBvbmVudCBy
ZW5kZXJlZCBpbiB0aGUgYGNvbnRhaW5lcmAuXG4gICAqIFNlZSBodHRwczovL2ZhY2Vib29rLmdp
dGh1Yi5pby9yZWFjdC9kb2NzL3RvcC1sZXZlbC1hcGkuaHRtbCNyZWFjdGRvbS51bm1vdW50Y29t
cG9uZW50YXRub2RlXG4gICAqXG4gICAqIEBwYXJhbSB7RE9NRWxlbWVudH0gY29udGFpbmVyIERP
TSBlbGVtZW50IGNvbnRhaW5pbmcgYSBSZWFjdCBjb21wb25lbnQuXG4gICAqIEByZXR1cm4ge2Jv
b2xlYW59IFRydWUgaWYgYSBjb21wb25lbnQgd2FzIGZvdW5kIGluIGFuZCB1bm1vdW50ZWQgZnJv
bVxuICAgKiAgICAgICAgICAgICAgICAgICBgY29udGFpbmVyYFxuICAgKi9cbiAgdW5tb3VudENv
bXBvbmVudEF0Tm9kZTogZnVuY3Rpb24gKGNvbnRhaW5lcikge1xuICAgIC8vIFZhcmlvdXMgcGFy
dHMgb2Ygb3VyIGNvZGUgKHN1Y2ggYXMgUmVhY3RDb21wb3NpdGVDb21wb25lbnQnc1xuICAgIC8v
IF9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnQpIGFzc3VtZSB0aGF0IGNhbGxzIHRvIHJlbmRlciBh
cmVuJ3QgbmVzdGVkO1xuICAgIC8vIHZlcmlmeSB0aGF0IHRoYXQncyB0aGUgY2FzZS4gKFN0cmlj
dGx5IHNwZWFraW5nLCB1bm1vdW50aW5nIHdvbid0IGNhdXNlIGFcbiAgICAvLyByZW5kZXIgYnV0
IHdlIHN0aWxsIGRvbid0IGV4cGVjdCB0byBiZSBpbiBhIHJlbmRlciBjYWxsIGhlcmUuKVxuICAg
IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKFJlYWN0Q3Vy
cmVudE93bmVyLmN1cnJlbnQgPT0gbnVsbCwgJ3VubW91bnRDb21wb25lbnRBdE5vZGUoKTogUmVu
ZGVyIG1ldGhvZHMgc2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlvbiAnICsgJ29mIHByb3BzIGFuZCBz
dGF0ZTsgdHJpZ2dlcmluZyBuZXN0ZWQgY29tcG9uZW50IHVwZGF0ZXMgZnJvbSByZW5kZXIgJyAr
ICdpcyBub3QgYWxsb3dlZC4gSWYgbmVjZXNzYXJ5LCB0cmlnZ2VyIG5lc3RlZCB1cGRhdGVzIGlu
ICcgKyAnY29tcG9uZW50RGlkVXBkYXRlLiBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAlcy4n
LCBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ICYmIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQu
Z2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwO1xuXG4gICAg
IWlzVmFsaWRDb250YWluZXIoY29udGFpbmVyKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd1bm1vdW50Q29tcG9uZW50QXROb2RlKC4u
Lik6IFRhcmdldCBjb250YWluZXIgaXMgbm90IGEgRE9NIGVsZW1lbnQuJykgOiBfcHJvZEludmFy
aWFudCgnNDAnKSA6IHZvaWQgMDtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gd2FybmluZyghbm9kZUlzUmVuZGVyZWRCeU90aGVySW5zdGFuY2UoY29udGFpbmVyKSwg
XCJ1bm1vdW50Q29tcG9uZW50QXROb2RlKCk6IFRoZSBub2RlIHlvdSdyZSBhdHRlbXB0aW5nIHRv
IHVubW91bnQgXCIgKyAnd2FzIHJlbmRlcmVkIGJ5IGFub3RoZXIgY29weSBvZiBSZWFjdC4nKSA6
IHZvaWQgMDtcbiAgICB9XG5cbiAgICB2YXIgcHJldkNvbXBvbmVudCA9IGdldFRvcExldmVsV3Jh
cHBlckluQ29udGFpbmVyKGNvbnRhaW5lcik7XG4gICAgaWYgKCFwcmV2Q29tcG9uZW50KSB7XG4g
ICAgICAvLyBDaGVjayBpZiB0aGUgbm9kZSBiZWluZyB1bm1vdW50ZWQgd2FzIHJlbmRlcmVkIGJ5
IFJlYWN0LCBidXQgaXNuJ3QgYVxuICAgICAgLy8gcm9vdCBub2RlLlxuICAgICAgdmFyIGNvbnRh
aW5lckhhc05vblJvb3RSZWFjdENoaWxkID0gaGFzTm9uUm9vdFJlYWN0Q2hpbGQoY29udGFpbmVy
KTtcblxuICAgICAgLy8gQ2hlY2sgaWYgdGhlIGNvbnRhaW5lciBpdHNlbGYgaXMgYSBSZWFjdCBy
b290IG5vZGUuXG4gICAgICB2YXIgaXNDb250YWluZXJSZWFjdFJvb3QgPSBjb250YWluZXIubm9k
ZVR5cGUgPT09IDEgJiYgY29udGFpbmVyLmhhc0F0dHJpYnV0ZShST09UX0FUVFJfTkFNRSk7XG5c
biAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAg
ICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFjb250
YWluZXJIYXNOb25Sb290UmVhY3RDaGlsZCwgXCJ1bm1vdW50Q29tcG9uZW50QXROb2RlKCk6IFRo
ZSBub2RlIHlvdSdyZSBhdHRlbXB0aW5nIHRvIHVubW91bnQgXCIgKyAnd2FzIHJlbmRlcmVkIGJ5
IFJlYWN0IGFuZCBpcyBub3QgYSB0b3AtbGV2ZWwgY29udGFpbmVyLiAlcycsIGlzQ29udGFpbmVy
UmVhY3RSb290ID8gJ1lvdSBtYXkgaGF2ZSBhY2NpZGVudGFsbHkgcGFzc2VkIGluIGEgUmVhY3Qg
cm9vdCBub2RlIGluc3RlYWQgJyArICdvZiBpdHMgY29udGFpbmVyLicgOiAnSW5zdGVhZCwgaGF2
ZSB0aGUgcGFyZW50IGNvbXBvbmVudCB1cGRhdGUgaXRzIHN0YXRlIGFuZCAnICsgJ3JlcmVuZGVy
IGluIG9yZGVyIHRvIHJlbW92ZSB0aGlzIGNvbXBvbmVudC4nKSA6IHZvaWQgMDtcbiAgICAgIH1c
blxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBkZWxldGUgaW5zdGFuY2VzQnlSZWFj
dFJvb3RJRFtwcmV2Q29tcG9uZW50Ll9pbnN0YW5jZS5yb290SURdO1xuICAgIFJlYWN0VXBkYXRl
cy5iYXRjaGVkVXBkYXRlcyh1bm1vdW50Q29tcG9uZW50RnJvbU5vZGUsIHByZXZDb21wb25lbnQs
IGNvbnRhaW5lciwgZmFsc2UpO1xuICAgIHJldHVybiB0cnVlO1xuICB9LFxuXG4gIF9tb3VudElt
YWdlSW50b05vZGU6IGZ1bmN0aW9uIChtYXJrdXAsIGNvbnRhaW5lciwgaW5zdGFuY2UsIHNob3Vs
ZFJldXNlTWFya3VwLCB0cmFuc2FjdGlvbikge1xuICAgICFpc1ZhbGlkQ29udGFpbmVyKGNvbnRh
aW5lcikgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAnbW91bnRDb21wb25lbnRJbnRvTm9kZSguLi4pOiBUYXJnZXQgY29udGFpbmVyIGlz
IG5vdCB2YWxpZC4nKSA6IF9wcm9kSW52YXJpYW50KCc0MScpIDogdm9pZCAwO1xuXG4gICAgaWYg
KHNob3VsZFJldXNlTWFya3VwKSB7XG4gICAgICB2YXIgcm9vdEVsZW1lbnQgPSBnZXRSZWFjdFJv
b3RFbGVtZW50SW5Db250YWluZXIoY29udGFpbmVyKTtcbiAgICAgIGlmIChSZWFjdE1hcmt1cENo
ZWNrc3VtLmNhblJldXNlTWFya3VwKG1hcmt1cCwgcm9vdEVsZW1lbnQpKSB7XG4gICAgICAgIFJl
YWN0RE9NQ29tcG9uZW50VHJlZS5wcmVjYWNoZU5vZGUoaW5zdGFuY2UsIHJvb3RFbGVtZW50KTtc
biAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIGNoZWNrc3VtID0g
cm9vdEVsZW1lbnQuZ2V0QXR0cmlidXRlKFJlYWN0TWFya3VwQ2hlY2tzdW0uQ0hFQ0tTVU1fQVRU
Ul9OQU1FKTtcbiAgICAgICAgcm9vdEVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKFJlYWN0TWFya3Vw
Q2hlY2tzdW0uQ0hFQ0tTVU1fQVRUUl9OQU1FKTtcblxuICAgICAgICB2YXIgcm9vdE1hcmt1cCA9
IHJvb3RFbGVtZW50Lm91dGVySFRNTDtcbiAgICAgICAgcm9vdEVsZW1lbnQuc2V0QXR0cmlidXRl
KFJlYWN0TWFya3VwQ2hlY2tzdW0uQ0hFQ0tTVU1fQVRUUl9OQU1FLCBjaGVja3N1bSk7XG5cbiAg
ICAgICAgdmFyIG5vcm1hbGl6ZWRNYXJrdXAgPSBtYXJrdXA7XG4gICAgICAgIGlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgLy8gYmVjYXVzZSBy
b290TWFya3VwIGlzIHJldHJpZXZlZCBmcm9tIHRoZSBET00sIHZhcmlvdXMgbm9ybWFsaXphdGlv
bnNcbiAgICAgICAgICAvLyB3aWxsIGhhdmUgb2NjdXJyZWQgd2hpY2ggd2lsbCBub3QgYmUgcHJl
c2VudCBpbiBgbWFya3VwYC4gSGVyZSxcbiAgICAgICAgICAvLyBpbnNlcnQgbWFya3VwIGludG8g
YSA8ZGl2PiBvciA8aWZyYW1lPiBkZXBlbmRpbmcgb24gdGhlIGNvbnRhaW5lclxuICAgICAgICAg
IC8vIHR5cGUgdG8gcGVyZm9ybSB0aGUgc2FtZSBub3JtYWxpemF0aW9ucyBiZWZvcmUgY29tcGFy
aW5nLlxuICAgICAgICAgIHZhciBub3JtYWxpemVyO1xuICAgICAgICAgIGlmIChjb250YWluZXIu
bm9kZVR5cGUgPT09IEVMRU1FTlRfTk9ERV9UWVBFKSB7XG4gICAgICAgICAgICBub3JtYWxpemVy
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgICAgICBub3JtYWxpemVy
LmlubmVySFRNTCA9IG1hcmt1cDtcbiAgICAgICAgICAgIG5vcm1hbGl6ZWRNYXJrdXAgPSBub3Jt
YWxpemVyLmlubmVySFRNTDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbm9ybWFs
aXplciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lmcmFtZScpO1xuICAgICAgICAgICAgZG9j
dW1lbnQuYm9keS5hcHBlbmRDaGlsZChub3JtYWxpemVyKTtcbiAgICAgICAgICAgIG5vcm1hbGl6
ZXIuY29udGVudERvY3VtZW50LndyaXRlKG1hcmt1cCk7XG4gICAgICAgICAgICBub3JtYWxpemVk
TWFya3VwID0gbm9ybWFsaXplci5jb250ZW50RG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm91dGVy
SFRNTDtcbiAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobm9ybWFsaXplcik7
XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgdmFyIGRpZmZJbmRleCA9IGZpcnN0
RGlmZmVyZW5jZUluZGV4KG5vcm1hbGl6ZWRNYXJrdXAsIHJvb3RNYXJrdXApO1xuICAgICAgICB2
YXIgZGlmZmVyZW5jZSA9ICcgKGNsaWVudCkgJyArIG5vcm1hbGl6ZWRNYXJrdXAuc3Vic3RyaW5n
KGRpZmZJbmRleCAtIDIwLCBkaWZmSW5kZXggKyAyMCkgKyAnXFxuIChzZXJ2ZXIpICcgKyByb290
TWFya3VwLnN1YnN0cmluZyhkaWZmSW5kZXggLSAyMCwgZGlmZkluZGV4ICsgMjApO1xuXG4gICAg
ICAgICEoY29udGFpbmVyLm5vZGVUeXBlICE9PSBET0NfTk9ERV9UWVBFKSA/IHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdZb3VcXCdyZSB0
cnlpbmcgdG8gcmVuZGVyIGEgY29tcG9uZW50IHRvIHRoZSBkb2N1bWVudCB1c2luZyBzZXJ2ZXIg
cmVuZGVyaW5nIGJ1dCB0aGUgY2hlY2tzdW0gd2FzIGludmFsaWQuIFRoaXMgdXN1YWxseSBtZWFu
cyB5b3UgcmVuZGVyZWQgYSBkaWZmZXJlbnQgY29tcG9uZW50IHR5cGUgb3IgcHJvcHMgb24gdGhl
IGNsaWVudCBmcm9tIHRoZSBvbmUgb24gdGhlIHNlcnZlciwgb3IgeW91ciByZW5kZXIoKSBtZXRo
b2RzIGFyZSBpbXB1cmUuIFJlYWN0IGNhbm5vdCBoYW5kbGUgdGhpcyBjYXNlIGR1ZSB0byBjcm9z
cy1icm93c2VyIHF1aXJrcyBieSByZW5kZXJpbmcgYXQgdGhlIGRvY3VtZW50IHJvb3QuIFlvdSBz
aG91bGQgbG9vayBmb3IgZW52aXJvbm1lbnQgZGVwZW5kZW50IGNvZGUgaW4geW91ciBjb21wb25l
bnRzIGFuZCBlbnN1cmUgdGhlIHByb3BzIGFyZSB0aGUgc2FtZSBjbGllbnQgYW5kIHNlcnZlciBz
aWRlOlxcbiVzJywgZGlmZmVyZW5jZSkgOiBfcHJvZEludmFyaWFudCgnNDInLCBkaWZmZXJlbmNl
KSA6IHZvaWQgMDtcblxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJykge1xuICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicgPyB3YXJuaW5nKGZhbHNlLCAnUmVhY3QgYXR0ZW1wdGVkIHRvIHJldXNlIG1hcmt1cCBpbiBh
IGNvbnRhaW5lciBidXQgdGhlICcgKyAnY2hlY2tzdW0gd2FzIGludmFsaWQuIFRoaXMgZ2VuZXJh
bGx5IG1lYW5zIHRoYXQgeW91IGFyZSAnICsgJ3VzaW5nIHNlcnZlciByZW5kZXJpbmcgYW5kIHRo
ZSBtYXJrdXAgZ2VuZXJhdGVkIG9uIHRoZSAnICsgJ3NlcnZlciB3YXMgbm90IHdoYXQgdGhlIGNs
aWVudCB3YXMgZXhwZWN0aW5nLiBSZWFjdCBpbmplY3RlZCAnICsgJ25ldyBtYXJrdXAgdG8gY29t
cGVuc2F0ZSB3aGljaCB3b3JrcyBidXQgeW91IGhhdmUgbG9zdCBtYW55ICcgKyAnb2YgdGhlIGJl
bmVmaXRzIG9mIHNlcnZlciByZW5kZXJpbmcuIEluc3RlYWQsIGZpZ3VyZSBvdXQgJyArICd3aHkg
dGhlIG1hcmt1cCBiZWluZyBnZW5lcmF0ZWQgaXMgZGlmZmVyZW50IG9uIHRoZSBjbGllbnQgJyAr
ICdvciBzZXJ2ZXI6XFxuJXMnLCBkaWZmZXJlbmNlKSA6IHZvaWQgMDtcbiAgICAgICAgfVxuICAg
ICAgfVxuICAgIH1cblxuICAgICEoY29udGFpbmVyLm5vZGVUeXBlICE9PSBET0NfTk9ERV9UWVBF
KSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFs
c2UsICdZb3VcXCdyZSB0cnlpbmcgdG8gcmVuZGVyIGEgY29tcG9uZW50IHRvIHRoZSBkb2N1bWVu
dCBidXQgeW91IGRpZG5cXCd0IHVzZSBzZXJ2ZXIgcmVuZGVyaW5nLiBXZSBjYW5cXCd0IGRvIHRo
aXMgd2l0aG91dCB1c2luZyBzZXJ2ZXIgcmVuZGVyaW5nIGR1ZSB0byBjcm9zcy1icm93c2VyIHF1
aXJrcy4gU2VlIFJlYWN0RE9NU2VydmVyLnJlbmRlclRvU3RyaW5nKCkgZm9yIHNlcnZlciByZW5k
ZXJpbmcuJykgOiBfcHJvZEludmFyaWFudCgnNDMnKSA6IHZvaWQgMDtcblxuICAgIGlmICh0cmFu
c2FjdGlvbi51c2VDcmVhdGVFbGVtZW50KSB7XG4gICAgICB3aGlsZSAoY29udGFpbmVyLmxhc3RD
aGlsZCkge1xuICAgICAgICBjb250YWluZXIucmVtb3ZlQ2hpbGQoY29udGFpbmVyLmxhc3RDaGls
ZCk7XG4gICAgICB9XG4gICAgICBET01MYXp5VHJlZS5pbnNlcnRUcmVlQmVmb3JlKGNvbnRhaW5l
ciwgbWFya3VwLCBudWxsKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2V0SW5uZXJIVE1MKGNvbnRh
aW5lciwgbWFya3VwKTtcbiAgICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5wcmVjYWNoZU5vZGUo
aW5zdGFuY2UsIGNvbnRhaW5lci5maXJzdENoaWxkKTtcbiAgICB9XG5cbiAgICBpZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIGhvc3ROb2RlID0g
UmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3RhbmNlRnJvbU5vZGUoY29udGFpbmVyLmZpcnN0
Q2hpbGQpO1xuICAgICAgaWYgKGhvc3ROb2RlLl9kZWJ1Z0lEICE9PSAwKSB7XG4gICAgICAgIFJl
YWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkhvc3RPcGVyYXRpb24oe1xuICAgICAgICAg
IGluc3RhbmNlSUQ6IGhvc3ROb2RlLl9kZWJ1Z0lELFxuICAgICAgICAgIHR5cGU6ICdtb3VudCcs
XG4gICAgICAgICAgcGF5bG9hZDogbWFya3VwLnRvU3RyaW5nKClcbiAgICAgICAgfSk7XG4gICAg
ICB9XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0TW91bnQ7XG5cblxu
LyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9t
L2xpYi9SZWFjdE1vdW50LmpzXG4gKiogbW9kdWxlIGlkID0gNjdcbiAqKiBtb2R1bGUgY2h1bmtz
ID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIElu
Yy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBs
aWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNF
TlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFk
ZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQ
QVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ug
c3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZh
cmlhbnQnKTtcblxudmFyIFJlYWN0ID0gcmVxdWlyZSgncmVhY3QvbGliL1JlYWN0Jyk7XG5cbnZh
ciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxudmFyIFJlYWN0
Tm9kZVR5cGVzID0ge1xuICBIT1NUOiAwLFxuICBDT01QT1NJVEU6IDEsXG4gIEVNUFRZOiAyLFxu
XG4gIGdldFR5cGU6IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgaWYgKG5vZGUgPT09IG51bGwgfHwg
bm9kZSA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiBSZWFjdE5vZGVUeXBlcy5FTVBUWTtcbiAg
ICB9IGVsc2UgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KG5vZGUpKSB7XG4gICAgICBpZiAodHlw
ZW9mIG5vZGUudHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gUmVhY3ROb2Rl
VHlwZXMuQ09NUE9TSVRFO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFJlYWN0Tm9k
ZVR5cGVzLkhPU1Q7XG4gICAgICB9XG4gICAgfVxuICAgICFmYWxzZSA/IHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdVbmV4cGVjdGVkIG5v
ZGU6ICVzJywgbm9kZSkgOiBfcHJvZEludmFyaWFudCgnMjYnLCBub2RlKSA6IHZvaWQgMDtcbiAg
fVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdE5vZGVUeXBlcztcblxuXG4vKioqKioqKioq
KioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0
Tm9kZVR5cGVzLmpzXG4gKiogbW9kdWxlIGlkID0gNjhcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxu
ICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5c
bnZhciBWaWV3cG9ydE1ldHJpY3MgPSB7XG4gIGN1cnJlbnRTY3JvbGxMZWZ0OiAwLFxuXG4gIGN1
cnJlbnRTY3JvbGxUb3A6IDAsXG5cbiAgcmVmcmVzaFNjcm9sbFZhbHVlczogZnVuY3Rpb24gKHNj
cm9sbFBvc2l0aW9uKSB7XG4gICAgVmlld3BvcnRNZXRyaWNzLmN1cnJlbnRTY3JvbGxMZWZ0ID0g
c2Nyb2xsUG9zaXRpb24ueDtcbiAgICBWaWV3cG9ydE1ldHJpY3MuY3VycmVudFNjcm9sbFRvcCA9
IHNjcm9sbFBvc2l0aW9uLnk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gVmlld3BvcnRN
ZXRyaWNzO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiog
Li9+L3JlYWN0LWRvbS9saWIvVmlld3BvcnRNZXRyaWNzLmpzXG4gKiogbW9kdWxlIGlkID0gNjlc
biAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTQtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpc
biAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWly
ZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2Zi
anMvbGliL2ludmFyaWFudCcpO1xuXG4vKipcbiAqIEFjY3VtdWxhdGVzIGl0ZW1zIHRoYXQgbXVz
dCBub3QgYmUgbnVsbCBvciB1bmRlZmluZWQgaW50byB0aGUgZmlyc3Qgb25lLiBUaGlzXG4gKiBp
cyB1c2VkIHRvIGNvbnNlcnZlIG1lbW9yeSBieSBhdm9pZGluZyBhcnJheSBhbGxvY2F0aW9ucywg
YW5kIHRodXMgc2FjcmlmaWNlc1xuICogQVBJIGNsZWFubmVzcy4gU2luY2UgYGN1cnJlbnRgIGNh
biBiZSBudWxsIGJlZm9yZSBiZWluZyBwYXNzZWQgaW4gYW5kIG5vdFxuICogbnVsbCBhZnRlciB0
aGlzIGZ1bmN0aW9uLCBtYWtlIHN1cmUgdG8gYXNzaWduIGl0IGJhY2sgdG8gYGN1cnJlbnRgOlxu
ICpcbiAqIGBhID0gYWNjdW11bGF0ZUludG8oYSwgYik7YFxuICpcbiAqIFRoaXMgQVBJIHNob3Vs
ZCBiZSBzcGFyaW5nbHkgdXNlZC4gVHJ5IGBhY2N1bXVsYXRlYCBmb3Igc29tZXRoaW5nIGNsZWFu
ZXIuXG4gKlxuICogQHJldHVybiB7KnxhcnJheTwqPn0gQW4gYWNjdW11bGF0aW9uIG9mIGl0ZW1z
LlxuICovXG5cbmZ1bmN0aW9uIGFjY3VtdWxhdGVJbnRvKGN1cnJlbnQsIG5leHQpIHtcbiAgIShu
ZXh0ICE9IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGlu
dmFyaWFudChmYWxzZSwgJ2FjY3VtdWxhdGVJbnRvKC4uLik6IEFjY3VtdWxhdGVkIGl0ZW1zIG11
c3Qgbm90IGJlIG51bGwgb3IgdW5kZWZpbmVkLicpIDogX3Byb2RJbnZhcmlhbnQoJzMwJykgOiB2
b2lkIDA7XG5cbiAgaWYgKGN1cnJlbnQgPT0gbnVsbCkge1xuICAgIHJldHVybiBuZXh0O1xuICB9
XG5cbiAgLy8gQm90aCBhcmUgbm90IGVtcHR5LiBXYXJuaW5nOiBOZXZlciBjYWxsIHguY29uY2F0
KHkpIHdoZW4geW91IGFyZSBub3RcbiAgLy8gY2VydGFpbiB0aGF0IHggaXMgYW4gQXJyYXkgKHgg
Y291bGQgYmUgYSBzdHJpbmcgd2l0aCBjb25jYXQgbWV0aG9kKS5cbiAgaWYgKEFycmF5LmlzQXJy
YXkoY3VycmVudCkpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShuZXh0KSkge1xuICAgICAgY3Vy
cmVudC5wdXNoLmFwcGx5KGN1cnJlbnQsIG5leHQpO1xuICAgICAgcmV0dXJuIGN1cnJlbnQ7XG4g
ICAgfVxuICAgIGN1cnJlbnQucHVzaChuZXh0KTtcbiAgICByZXR1cm4gY3VycmVudDtcbiAgfVxu
XG4gIGlmIChBcnJheS5pc0FycmF5KG5leHQpKSB7XG4gICAgLy8gQSBiaXQgdG9vIGRhbmdlcm91
cyB0byBtdXRhdGUgYG5leHRgLlxuICAgIHJldHVybiBbY3VycmVudF0uY29uY2F0KG5leHQpO1xu
ICB9XG5cbiAgcmV0dXJuIFtjdXJyZW50LCBuZXh0XTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBh
Y2N1bXVsYXRlSW50bztcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RF
UlxuICoqIC4vfi9yZWFjdC1kb20vbGliL2FjY3VtdWxhdGVJbnRvLmpzXG4gKiogbW9kdWxlIGlk
ID0gNzBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxu
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBAcGFyYW0ge2FycmF5
fSBhcnIgYW4gXCJhY2N1bXVsYXRpb25cIiBvZiBpdGVtcyB3aGljaCBpcyBlaXRoZXIgYW4gQXJy
YXkgb3JcbiAqIGEgc2luZ2xlIGl0ZW0uIFVzZWZ1bCB3aGVuIHBhaXJlZCB3aXRoIHRoZSBgYWNj
dW11bGF0ZWAgbW9kdWxlLiBUaGlzIGlzIGFcbiAqIHNpbXBsZSB1dGlsaXR5IHRoYXQgYWxsb3dz
IHVzIHRvIHJlYXNvbiBhYm91dCBhIGNvbGxlY3Rpb24gb2YgaXRlbXMsIGJ1dFxuICogaGFuZGxp
bmcgdGhlIGNhc2Ugd2hlbiB0aGVyZSBpcyBleGFjdGx5IG9uZSBpdGVtIChhbmQgd2UgZG8gbm90
IG5lZWQgdG9cbiAqIGFsbG9jYXRlIGFuIGFycmF5KS5cbiAqL1xuXG5mdW5jdGlvbiBmb3JFYWNo
QWNjdW11bGF0ZWQoYXJyLCBjYiwgc2NvcGUpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkg
e1xuICAgIGFyci5mb3JFYWNoKGNiLCBzY29wZSk7XG4gIH0gZWxzZSBpZiAoYXJyKSB7XG4gICAg
Y2IuY2FsbChzY29wZSwgYXJyKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZvckVhY2hB
Y2N1bXVsYXRlZDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxu
ICoqIC4vfi9yZWFjdC1kb20vbGliL2ZvckVhY2hBY2N1bXVsYXRlZC5qc1xuICoqIG1vZHVsZSBp
ZCA9IDcxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAy
MDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpc
biAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3ROb2RlVHlwZXMgPSByZXF1
aXJlKCcuL1JlYWN0Tm9kZVR5cGVzJyk7XG5cbmZ1bmN0aW9uIGdldEhvc3RDb21wb25lbnRGcm9t
Q29tcG9zaXRlKGluc3QpIHtcbiAgdmFyIHR5cGU7XG5cbiAgd2hpbGUgKCh0eXBlID0gaW5zdC5f
cmVuZGVyZWROb2RlVHlwZSkgPT09IFJlYWN0Tm9kZVR5cGVzLkNPTVBPU0lURSkge1xuICAgIGlu
c3QgPSBpbnN0Ll9yZW5kZXJlZENvbXBvbmVudDtcbiAgfVxuXG4gIGlmICh0eXBlID09PSBSZWFj
dE5vZGVUeXBlcy5IT1NUKSB7XG4gICAgcmV0dXJuIGluc3QuX3JlbmRlcmVkQ29tcG9uZW50O1xu
ICB9IGVsc2UgaWYgKHR5cGUgPT09IFJlYWN0Tm9kZVR5cGVzLkVNUFRZKSB7XG4gICAgcmV0dXJu
IG51bGw7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRIb3N0Q29tcG9uZW50RnJvbUNv
bXBvc2l0ZTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoq
IC4vfi9yZWFjdC1kb20vbGliL2dldEhvc3RDb21wb25lbnRGcm9tQ29tcG9zaXRlLmpzXG4gKiog
bW9kdWxlIGlkID0gNzJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFeGVjdXRpb25FbnZp
cm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG5cbnZh
ciBjb250ZW50S2V5ID0gbnVsbDtcblxuLyoqXG4gKiBHZXRzIHRoZSBrZXkgdXNlZCB0byBhY2Nl
c3MgdGV4dCBjb250ZW50IG9uIGEgRE9NIG5vZGUuXG4gKlxuICogQHJldHVybiB7P3N0cmluZ30g
S2V5IHVzZWQgdG8gYWNjZXNzIHRleHQgY29udGVudC5cbiAqIEBpbnRlcm5hbFxuICovXG5mdW5j
dGlvbiBnZXRUZXh0Q29udGVudEFjY2Vzc29yKCkge1xuICBpZiAoIWNvbnRlbnRLZXkgJiYgRXhl
Y3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG4gICAgLy8gUHJlZmVyIHRleHRDb250ZW50
IHRvIGlubmVyVGV4dCBiZWNhdXNlIG1hbnkgYnJvd3NlcnMgc3VwcG9ydCBib3RoIGJ1dFxuICAg
IC8vIFNWRyA8dGV4dD4gZWxlbWVudHMgZG9uJ3Qgc3VwcG9ydCBpbm5lclRleHQgZXZlbiB3aGVu
IDxkaXY+IGRvZXMuXG4gICAgY29udGVudEtleSA9ICd0ZXh0Q29udGVudCcgaW4gZG9jdW1lbnQu
ZG9jdW1lbnRFbGVtZW50ID8gJ3RleHRDb250ZW50JyA6ICdpbm5lclRleHQnO1xuICB9XG4gIHJl
dHVybiBjb250ZW50S2V5O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFRleHRDb250ZW50QWNj
ZXNzb3I7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAu
L34vcmVhY3QtZG9tL2xpYi9nZXRUZXh0Q29udGVudEFjY2Vzc29yLmpzXG4gKiogbW9kdWxlIGlk
ID0gNzNcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIw
MTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxu
ICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vu
c2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9m
IHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdo
dHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5
LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUg
PSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpO1xuXG5mdW5jdGlvbiBpc0NoZWNr
YWJsZShlbGVtKSB7XG4gIHZhciB0eXBlID0gZWxlbS50eXBlO1xuICB2YXIgbm9kZU5hbWUgPSBl
bGVtLm5vZGVOYW1lO1xuICByZXR1cm4gbm9kZU5hbWUgJiYgbm9kZU5hbWUudG9Mb3dlckNhc2Uo
KSA9PT0gJ2lucHV0JyAmJiAodHlwZSA9PT0gJ2NoZWNrYm94JyB8fCB0eXBlID09PSAncmFkaW8n
KTtcbn1cblxuZnVuY3Rpb24gZ2V0VHJhY2tlcihpbnN0KSB7XG4gIHJldHVybiBpbnN0Ll93cmFw
cGVyU3RhdGUudmFsdWVUcmFja2VyO1xufVxuXG5mdW5jdGlvbiBhdHRhY2hUcmFja2VyKGluc3Qs
IHRyYWNrZXIpIHtcbiAgaW5zdC5fd3JhcHBlclN0YXRlLnZhbHVlVHJhY2tlciA9IHRyYWNrZXI7
XG59XG5cbmZ1bmN0aW9uIGRldGFjaFRyYWNrZXIoaW5zdCkge1xuICBkZWxldGUgaW5zdC5fd3Jh
cHBlclN0YXRlLnZhbHVlVHJhY2tlcjtcbn1cblxuZnVuY3Rpb24gZ2V0VmFsdWVGcm9tTm9kZShu
b2RlKSB7XG4gIHZhciB2YWx1ZTtcbiAgaWYgKG5vZGUpIHtcbiAgICB2YWx1ZSA9IGlzQ2hlY2th
YmxlKG5vZGUpID8gJycgKyBub2RlLmNoZWNrZWQgOiBub2RlLnZhbHVlO1xuICB9XG4gIHJldHVy
biB2YWx1ZTtcbn1cblxudmFyIGlucHV0VmFsdWVUcmFja2luZyA9IHtcbiAgLy8gZXhwb3NlZCBm
b3IgdGVzdGluZ1xuICBfZ2V0VHJhY2tlckZyb21Ob2RlOiBmdW5jdGlvbiAobm9kZSkge1xuICAg
IHJldHVybiBnZXRUcmFja2VyKFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXRJbnN0YW5jZUZyb21O
b2RlKG5vZGUpKTtcbiAgfSxcblxuXG4gIHRyYWNrOiBmdW5jdGlvbiAoaW5zdCkge1xuICAgIGlm
IChnZXRUcmFja2VyKGluc3QpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIG5v
ZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KTtcbiAg
ICB2YXIgdmFsdWVGaWVsZCA9IGlzQ2hlY2thYmxlKG5vZGUpID8gJ2NoZWNrZWQnIDogJ3ZhbHVl
JztcbiAgICB2YXIgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
bm9kZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHZhbHVlRmllbGQpO1xuXG4gICAgdmFyIGN1cnJl
bnRWYWx1ZSA9ICcnICsgbm9kZVt2YWx1ZUZpZWxkXTtcblxuICAgIC8vIGlmIHNvbWVvbmUgaGFz
IGFscmVhZHkgZGVmaW5lZCBhIHZhbHVlIG9yIFNhZmFyaSwgdGhlbiBiYWlsXG4gICAgLy8gYW5k
IGRvbid0IHRyYWNrIHZhbHVlIHdpbGwgY2F1c2Ugb3ZlciByZXBvcnRpbmcgb2YgY2hhbmdlcyxc
biAgICAvLyBidXQgaXQncyBiZXR0ZXIgdGhlbiBhIGhhcmQgZmFpbHVyZVxuICAgIC8vIChuZWVk
ZWQgZm9yIGNlcnRhaW4gdGVzdHMgdGhhdCBzcHlPbiBpbnB1dCB2YWx1ZXMgYW5kIFNhZmFyaSlc
biAgICBpZiAobm9kZS5oYXNPd25Qcm9wZXJ0eSh2YWx1ZUZpZWxkKSB8fCB0eXBlb2YgZGVzY3Jp
cHRvci5nZXQgIT09ICdmdW5jdGlvbicgfHwgdHlwZW9mIGRlc2NyaXB0b3Iuc2V0ICE9PSAnZnVu
Y3Rpb24nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgT2JqZWN0LmRlZmluZVByb3Bl
cnR5KG5vZGUsIHZhbHVlRmllbGQsIHtcbiAgICAgIGVudW1lcmFibGU6IGRlc2NyaXB0b3IuZW51
bWVyYWJsZSxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgIGdldDogZnVuY3Rpb24g
KCkge1xuICAgICAgICByZXR1cm4gZGVzY3JpcHRvci5nZXQuY2FsbCh0aGlzKTtcbiAgICAgIH0s
XG4gICAgICBzZXQ6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICBjdXJyZW50VmFsdWUgPSAn
JyArIHZhbHVlO1xuICAgICAgICBkZXNjcmlwdG9yLnNldC5jYWxsKHRoaXMsIHZhbHVlKTtcbiAg
ICAgIH1cbiAgICB9KTtcblxuICAgIGF0dGFjaFRyYWNrZXIoaW5zdCwge1xuICAgICAgZ2V0VmFs
dWU6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnRWYWx1ZTtcbiAgICAgIH0s
XG4gICAgICBzZXRWYWx1ZTogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIGN1cnJlbnRWYWx1
ZSA9ICcnICsgdmFsdWU7XG4gICAgICB9LFxuICAgICAgc3RvcFRyYWNraW5nOiBmdW5jdGlvbiAo
KSB7XG4gICAgICAgIGRldGFjaFRyYWNrZXIoaW5zdCk7XG4gICAgICAgIGRlbGV0ZSBub2RlW3Zh
bHVlRmllbGRdO1xuICAgICAgfVxuICAgIH0pO1xuICB9LFxuXG4gIHVwZGF0ZVZhbHVlSWZDaGFu
Z2VkOiBmdW5jdGlvbiAoaW5zdCkge1xuICAgIGlmICghaW5zdCkge1xuICAgICAgcmV0dXJuIGZh
bHNlO1xuICAgIH1cbiAgICB2YXIgdHJhY2tlciA9IGdldFRyYWNrZXIoaW5zdCk7XG5cbiAgICBp
ZiAoIXRyYWNrZXIpIHtcbiAgICAgIGlucHV0VmFsdWVUcmFja2luZy50cmFjayhpbnN0KTtcbiAg
ICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHZhciBsYXN0VmFsdWUgPSB0cmFja2VyLmdl
dFZhbHVlKCk7XG4gICAgdmFyIG5leHRWYWx1ZSA9IGdldFZhbHVlRnJvbU5vZGUoUmVhY3RET01D
b21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCkpO1xuXG4gICAgaWYgKG5leHRW
YWx1ZSAhPT0gbGFzdFZhbHVlKSB7XG4gICAgICB0cmFja2VyLnNldFZhbHVlKG5leHRWYWx1ZSk7
XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0sXG4g
IHN0b3BUcmFja2luZzogZnVuY3Rpb24gKGluc3QpIHtcbiAgICB2YXIgdHJhY2tlciA9IGdldFRy
YWNrZXIoaW5zdCk7XG4gICAgaWYgKHRyYWNrZXIpIHtcbiAgICAgIHRyYWNrZXIuc3RvcFRyYWNr
aW5nKCk7XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IGlucHV0VmFsdWVUcmFj
a2luZztcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4v
fi9yZWFjdC1kb20vbGliL2lucHV0VmFsdWVUcmFja2luZy5qc1xuICoqIG1vZHVsZSBpZCA9IDc0
XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXBy
ZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRo
aXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZv
dW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlz
IHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNh
biBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAq
XG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcu
L3JlYWN0UHJvZEludmFyaWFudCcpLFxuICAgIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNz
aWduJyk7XG5cbnZhciBSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCA9IHJlcXVpcmUoJy4vUmVhY3RD
b21wb3NpdGVDb21wb25lbnQnKTtcbnZhciBSZWFjdEVtcHR5Q29tcG9uZW50ID0gcmVxdWlyZSgn
Li9SZWFjdEVtcHR5Q29tcG9uZW50Jyk7XG52YXIgUmVhY3RIb3N0Q29tcG9uZW50ID0gcmVxdWly
ZSgnLi9SZWFjdEhvc3RDb21wb25lbnQnKTtcblxudmFyIGdldE5leHREZWJ1Z0lEID0gcmVxdWly
ZSgncmVhY3QvbGliL2dldE5leHREZWJ1Z0lEJyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgn
ZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dh
cm5pbmcnKTtcblxuLy8gVG8gYXZvaWQgYSBjeWNsaWMgZGVwZW5kZW5jeSwgd2UgY3JlYXRlIHRo
ZSBmaW5hbCBjbGFzcyBpbiB0aGlzIG1vZHVsZVxudmFyIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50
V3JhcHBlciA9IGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gIHRoaXMuY29uc3RydWN0KGVsZW1lbnQp
O1xufTtcblxuZnVuY3Rpb24gZ2V0RGVjbGFyYXRpb25FcnJvckFkZGVuZHVtKG93bmVyKSB7XG4g
IGlmIChvd25lcikge1xuICAgIHZhciBuYW1lID0gb3duZXIuZ2V0TmFtZSgpO1xuICAgIGlmIChu
YW1lKSB7XG4gICAgICByZXR1cm4gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5h
bWUgKyAnYC4nO1xuICAgIH1cbiAgfVxuICByZXR1cm4gJyc7XG59XG5cbi8qKlxuICogQ2hlY2sg
aWYgdGhlIHR5cGUgcmVmZXJlbmNlIGlzIGEga25vd24gaW50ZXJuYWwgdHlwZS4gSS5lLiBub3Qg
YSB1c2VyXG4gKiBwcm92aWRlZCBjb21wb3NpdGUgdHlwZS5cbiAqXG4gKiBAcGFyYW0ge2Z1bmN0
aW9ufSB0eXBlXG4gKiBAcmV0dXJuIHtib29sZWFufSBSZXR1cm5zIHRydWUgaWYgdGhpcyBpcyBh
IHZhbGlkIGludGVybmFsIHR5cGUuXG4gKi9cbmZ1bmN0aW9uIGlzSW50ZXJuYWxDb21wb25lbnRU
eXBlKHR5cGUpIHtcbiAgcmV0dXJuIHR5cGVvZiB0eXBlID09PSAnZnVuY3Rpb24nICYmIHR5cGVv
ZiB0eXBlLnByb3RvdHlwZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHR5cGUucHJvdG90eXBl
Lm1vdW50Q29tcG9uZW50ID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiB0eXBlLnByb3RvdHlwZS5y
ZWNlaXZlQ29tcG9uZW50ID09PSAnZnVuY3Rpb24nO1xufVxuXG4vKipcbiAqIEdpdmVuIGEgUmVh
Y3ROb2RlLCBjcmVhdGUgYW4gaW5zdGFuY2UgdGhhdCB3aWxsIGFjdHVhbGx5IGJlIG1vdW50ZWQu
XG4gKlxuICogQHBhcmFtIHtSZWFjdE5vZGV9IG5vZGVcbiAqIEBwYXJhbSB7Ym9vbGVhbn0gc2hv
dWxkSGF2ZURlYnVnSURcbiAqIEByZXR1cm4ge29iamVjdH0gQSBuZXcgaW5zdGFuY2Ugb2YgdGhl
IGVsZW1lbnQncyBjb25zdHJ1Y3Rvci5cbiAqIEBwcm90ZWN0ZWRcbiAqL1xuZnVuY3Rpb24gaW5z
dGFudGlhdGVSZWFjdENvbXBvbmVudChub2RlLCBzaG91bGRIYXZlRGVidWdJRCkge1xuICB2YXIg
aW5zdGFuY2U7XG5cbiAgaWYgKG5vZGUgPT09IG51bGwgfHwgbm9kZSA9PT0gZmFsc2UpIHtcbiAg
ICBpbnN0YW5jZSA9IFJlYWN0RW1wdHlDb21wb25lbnQuY3JlYXRlKGluc3RhbnRpYXRlUmVhY3RD
b21wb25lbnQpO1xuICB9IGVsc2UgaWYgKHR5cGVvZiBub2RlID09PSAnb2JqZWN0Jykge1xuICAg
IHZhciBlbGVtZW50ID0gbm9kZTtcbiAgICB2YXIgdHlwZSA9IGVsZW1lbnQudHlwZTtcbiAgICBp
ZiAodHlwZW9mIHR5cGUgIT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHR5cGUgIT09ICdzdHJpbmcn
KSB7XG4gICAgICB2YXIgaW5mbyA9ICcnO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgaWYgKHR5cGUgPT09IHVuZGVmaW5lZCB8fCB0
eXBlb2YgdHlwZSA9PT0gJ29iamVjdCcgJiYgdHlwZSAhPT0gbnVsbCAmJiBPYmplY3Qua2V5cyh0
eXBlKS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICBpbmZvICs9ICcgWW91IGxpa2VseSBmb3Jn
b3QgdG8gZXhwb3J0IHlvdXIgY29tcG9uZW50IGZyb20gdGhlIGZpbGUgJyArIFwiaXQncyBkZWZp
bmVkIGluLlwiO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpbmZvICs9IGdldERlY2xhcmF0
aW9uRXJyb3JBZGRlbmR1bShlbGVtZW50Ll9vd25lcik7XG4gICAgICAhZmFsc2UgPyBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRWxlbWVu
dCB0eXBlIGlzIGludmFsaWQ6IGV4cGVjdGVkIGEgc3RyaW5nIChmb3IgYnVpbHQtaW4gY29tcG9u
ZW50cykgb3IgYSBjbGFzcy9mdW5jdGlvbiAoZm9yIGNvbXBvc2l0ZSBjb21wb25lbnRzKSBidXQg
Z290OiAlcy4lcycsIHR5cGUgPT0gbnVsbCA/IHR5cGUgOiB0eXBlb2YgdHlwZSwgaW5mbykgOiBf
cHJvZEludmFyaWFudCgnMTMwJywgdHlwZSA9PSBudWxsID8gdHlwZSA6IHR5cGVvZiB0eXBlLCBp
bmZvKSA6IHZvaWQgMDtcbiAgICB9XG5cbiAgICAvLyBTcGVjaWFsIGNhc2Ugc3RyaW5nIHZhbHVl
c1xuICAgIGlmICh0eXBlb2YgZWxlbWVudC50eXBlID09PSAnc3RyaW5nJykge1xuICAgICAgaW5z
dGFuY2UgPSBSZWFjdEhvc3RDb21wb25lbnQuY3JlYXRlSW50ZXJuYWxDb21wb25lbnQoZWxlbWVu
dCk7XG4gICAgfSBlbHNlIGlmIChpc0ludGVybmFsQ29tcG9uZW50VHlwZShlbGVtZW50LnR5cGUp
KSB7XG4gICAgICAvLyBUaGlzIGlzIHRlbXBvcmFyaWx5IGF2YWlsYWJsZSBmb3IgY3VzdG9tIGNv
bXBvbmVudHMgdGhhdCBhcmUgbm90IHN0cmluZ1xuICAgICAgLy8gcmVwcmVzZW50YXRpb25zLiBJ
LmUuIEFSVC4gT25jZSB0aG9zZSBhcmUgdXBkYXRlZCB0byB1c2UgdGhlIHN0cmluZ1xuICAgICAg
Ly8gcmVwcmVzZW50YXRpb24sIHdlIGNhbiBkcm9wIHRoaXMgY29kZSBwYXRoLlxuICAgICAgaW5z
dGFuY2UgPSBuZXcgZWxlbWVudC50eXBlKGVsZW1lbnQpO1xuXG4gICAgICAvLyBXZSByZW5hbWVk
IHRoaXMuIEFsbG93IHRoZSBvbGQgbmFtZSBmb3IgY29tcGF0LiA6KFxuICAgICAgaWYgKCFpbnN0
YW5jZS5nZXRIb3N0Tm9kZSkge1xuICAgICAgICBpbnN0YW5jZS5nZXRIb3N0Tm9kZSA9IGluc3Rh
bmNlLmdldE5hdGl2ZU5vZGU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGluc3RhbmNl
ID0gbmV3IFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50V3JhcHBlcihlbGVtZW50KTtcbiAgICB9XG4g
IH0gZWxzZSBpZiAodHlwZW9mIG5vZGUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBub2RlID09PSAn
bnVtYmVyJykge1xuICAgIGluc3RhbmNlID0gUmVhY3RIb3N0Q29tcG9uZW50LmNyZWF0ZUluc3Rh
bmNlRm9yVGV4dChub2RlKTtcbiAgfSBlbHNlIHtcbiAgICAhZmFsc2UgPyBwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRW5jb3VudGVyZWQg
aW52YWxpZCBSZWFjdCBub2RlIG9mIHR5cGUgJXMnLCB0eXBlb2Ygbm9kZSkgOiBfcHJvZEludmFy
aWFudCgnMTMxJywgdHlwZW9mIG5vZGUpIDogdm9pZCAwO1xuICB9XG5cbiAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh0eXBlb2YgaW5zdGFuY2UubW91bnRDb21wb25l
bnQgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIGluc3RhbmNlLnJlY2VpdmVDb21wb25lbnQgPT09
ICdmdW5jdGlvbicgJiYgdHlwZW9mIGluc3RhbmNlLmdldEhvc3ROb2RlID09PSAnZnVuY3Rpb24n
ICYmIHR5cGVvZiBpbnN0YW5jZS51bm1vdW50Q29tcG9uZW50ID09PSAnZnVuY3Rpb24nLCAnT25s
eSBSZWFjdCBDb21wb25lbnRzIGNhbiBiZSBtb3VudGVkLicpIDogdm9pZCAwO1xuICB9XG5cbiAg
Ly8gVGhlc2UgdHdvIGZpZWxkcyBhcmUgdXNlZCBieSB0aGUgRE9NIGFuZCBBUlQgZGlmZmluZyBh
bGdvcml0aG1zXG4gIC8vIHJlc3BlY3RpdmVseS4gSW5zdGVhZCBvZiB1c2luZyBleHBhbmRvcyBv
biBjb21wb25lbnRzLCB3ZSBzaG91bGQgYmVcbiAgLy8gc3RvcmluZyB0aGUgc3RhdGUgbmVlZGVk
IGJ5IHRoZSBkaWZmaW5nIGFsZ29yaXRobXMgZWxzZXdoZXJlLlxuICBpbnN0YW5jZS5fbW91bnRJ
bmRleCA9IDA7XG4gIGluc3RhbmNlLl9tb3VudEltYWdlID0gbnVsbDtcblxuICBpZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGluc3RhbmNlLl9kZWJ1Z0lE
ID0gc2hvdWxkSGF2ZURlYnVnSUQgPyBnZXROZXh0RGVidWdJRCgpIDogMDtcbiAgfVxuXG4gIC8v
IEludGVybmFsIGluc3RhbmNlcyBzaG91bGQgZnVsbHkgY29uc3RydWN0ZWQgYXQgdGhpcyBwb2lu
dCwgc28gdGhleSBzaG91bGRcbiAgLy8gbm90IGdldCBhbnkgbmV3IGZpZWxkcyBhZGRlZCB0byB0
aGVtIGF0IHRoaXMgcG9pbnQuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nKSB7XG4gICAgaWYgKE9iamVjdC5wcmV2ZW50RXh0ZW5zaW9ucykge1xuICAgICAgT2Jq
ZWN0LnByZXZlbnRFeHRlbnNpb25zKGluc3RhbmNlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4g
aW5zdGFuY2U7XG59XG5cbl9hc3NpZ24oUmVhY3RDb21wb3NpdGVDb21wb25lbnRXcmFwcGVyLnBy
b3RvdHlwZSwgUmVhY3RDb21wb3NpdGVDb21wb25lbnQsIHtcbiAgX2luc3RhbnRpYXRlUmVhY3RD
b21wb25lbnQ6IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnRcbn0pO1xuXG5tb2R1bGUuZXhwb3J0
cyA9IGluc3RhbnRpYXRlUmVhY3RDb21wb25lbnQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4g
KiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9pbnN0YW50aWF0ZVJlYWN0
Q29tcG9uZW50LmpzXG4gKiogbW9kdWxlIGlkID0gNzVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxu
ICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0
JztcblxuLyoqXG4gKiBAc2VlIGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9j
dXJyZW50LXdvcmsvbXVsdGlwYWdlL3RoZS1pbnB1dC1lbGVtZW50Lmh0bWwjaW5wdXQtdHlwZS1h
dHRyLXN1bW1hcnlcbiAqL1xuXG52YXIgc3VwcG9ydGVkSW5wdXRUeXBlcyA9IHtcbiAgY29sb3I6
IHRydWUsXG4gIGRhdGU6IHRydWUsXG4gIGRhdGV0aW1lOiB0cnVlLFxuICAnZGF0ZXRpbWUtbG9j
YWwnOiB0cnVlLFxuICBlbWFpbDogdHJ1ZSxcbiAgbW9udGg6IHRydWUsXG4gIG51bWJlcjogdHJ1
ZSxcbiAgcGFzc3dvcmQ6IHRydWUsXG4gIHJhbmdlOiB0cnVlLFxuICBzZWFyY2g6IHRydWUsXG4g
IHRlbDogdHJ1ZSxcbiAgdGV4dDogdHJ1ZSxcbiAgdGltZTogdHJ1ZSxcbiAgdXJsOiB0cnVlLFxu
ICB3ZWVrOiB0cnVlXG59O1xuXG5mdW5jdGlvbiBpc1RleHRJbnB1dEVsZW1lbnQoZWxlbSkge1xu
ICB2YXIgbm9kZU5hbWUgPSBlbGVtICYmIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50
b0xvd2VyQ2FzZSgpO1xuXG4gIGlmIChub2RlTmFtZSA9PT0gJ2lucHV0Jykge1xuICAgIHJldHVy
biAhIXN1cHBvcnRlZElucHV0VHlwZXNbZWxlbS50eXBlXTtcbiAgfVxuXG4gIGlmIChub2RlTmFt
ZSA9PT0gJ3RleHRhcmVhJykge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZh
bHNlO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzVGV4dElucHV0RWxlbWVudDtcblxuXG4vKioq
KioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGli
L2lzVGV4dElucHV0RWxlbWVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDc2XG4gKiogbW9kdWxlIGNo
dW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29r
LCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUg
aXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICog
TElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBB
biBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0
aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBz
dHJpY3QnO1xuXG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9F
eGVjdXRpb25FbnZpcm9ubWVudCcpO1xudmFyIGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlciA9
IHJlcXVpcmUoJy4vZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93c2VyJyk7XG52YXIgc2V0SW5uZXJI
VE1MID0gcmVxdWlyZSgnLi9zZXRJbm5lckhUTUwnKTtcblxuLyoqXG4gKiBTZXQgdGhlIHRleHRD
b250ZW50IHByb3BlcnR5IG9mIGEgbm9kZSwgZW5zdXJpbmcgdGhhdCB3aGl0ZXNwYWNlIGlzIHBy
ZXNlcnZlZFxuICogZXZlbiBpbiBJRTguIGlubmVyVGV4dCBpcyBhIHBvb3Igc3Vic3RpdHV0ZSBm
b3IgdGV4dENvbnRlbnQgYW5kLCBhbW9uZyBtYW55XG4gKiBpc3N1ZXMsIGluc2VydHMgPGJyPiBp
bnN0ZWFkIG9mIHRoZSBsaXRlcmFsIG5ld2xpbmUgY2hhcnMuIGlubmVySFRNTCBiZWhhdmVzXG4g
KiBhcyBpdCBzaG91bGQuXG4gKlxuICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG4gKiBAcGFy
YW0ge3N0cmluZ30gdGV4dFxuICogQGludGVybmFsXG4gKi9cbnZhciBzZXRUZXh0Q29udGVudCA9
IGZ1bmN0aW9uIChub2RlLCB0ZXh0KSB7XG4gIGlmICh0ZXh0KSB7XG4gICAgdmFyIGZpcnN0Q2hp
bGQgPSBub2RlLmZpcnN0Q2hpbGQ7XG5cbiAgICBpZiAoZmlyc3RDaGlsZCAmJiBmaXJzdENoaWxk
ID09PSBub2RlLmxhc3RDaGlsZCAmJiBmaXJzdENoaWxkLm5vZGVUeXBlID09PSAzKSB7XG4gICAg
ICBmaXJzdENoaWxkLm5vZGVWYWx1ZSA9IHRleHQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9
XG4gIG5vZGUudGV4dENvbnRlbnQgPSB0ZXh0O1xufTtcblxuaWYgKEV4ZWN1dGlvbkVudmlyb25t
ZW50LmNhblVzZURPTSkge1xuICBpZiAoISgndGV4dENvbnRlbnQnIGluIGRvY3VtZW50LmRvY3Vt
ZW50RWxlbWVudCkpIHtcbiAgICBzZXRUZXh0Q29udGVudCA9IGZ1bmN0aW9uIChub2RlLCB0ZXh0
KSB7XG4gICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gMykge1xuICAgICAgICBub2RlLm5vZGVW
YWx1ZSA9IHRleHQ7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHNldElubmVySFRN
TChub2RlLCBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIodGV4dCkpO1xuICAgIH07XG4gIH1c
bn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXRUZXh0Q29udGVudDtcblxuXG4vKioqKioqKioqKioq
KioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL3NldFRleHRD
b250ZW50LmpzXG4gKiogbW9kdWxlIGlkID0gNzdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoq
LyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZh
ciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50Jyk7XG5cbnZh
ciBSZWFjdEN1cnJlbnRPd25lciA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9SZWFjdEN1cnJlbnRPd25l
cicpO1xudmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50U3lt
Ym9sJyk7XG5cbnZhciBnZXRJdGVyYXRvckZuID0gcmVxdWlyZSgnLi9nZXRJdGVyYXRvckZuJyk7
XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIgS2V5
RXNjYXBlVXRpbHMgPSByZXF1aXJlKCcuL0tleUVzY2FwZVV0aWxzJyk7XG52YXIgd2FybmluZyA9
IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcblxudmFyIFNFUEFSQVRPUiA9ICcuJztcbnZh
ciBTVUJTRVBBUkFUT1IgPSAnOic7XG5cbi8qKlxuICogVGhpcyBpcyBpbmxpbmVkIGZyb20gUmVh
Y3RFbGVtZW50IHNpbmNlIHRoaXMgZmlsZSBpcyBzaGFyZWQgYmV0d2VlblxuICogaXNvbW9ycGhp
YyBhbmQgcmVuZGVyZXJzLiBXZSBjb3VsZCBleHRyYWN0IHRoaXMgdG8gYVxuICpcbiAqL1xuXG4v
KipcbiAqIFRPRE86IFRlc3QgdGhhdCBhIHNpbmdsZSBjaGlsZCBhbmQgYW4gYXJyYXkgd2l0aCBv
bmUgaXRlbSBoYXZlIHRoZSBzYW1lIGtleVxuICogcGF0dGVybi5cbiAqL1xuXG52YXIgZGlkV2Fy
bkFib3V0TWFwcyA9IGZhbHNlO1xuXG4vKipcbiAqIEdlbmVyYXRlIGEga2V5IHN0cmluZyB0aGF0
IGlkZW50aWZpZXMgYSBjb21wb25lbnQgd2l0aGluIGEgc2V0LlxuICpcbiAqIEBwYXJhbSB7Kn0g
Y29tcG9uZW50IEEgY29tcG9uZW50IHRoYXQgY291bGQgY29udGFpbiBhIG1hbnVhbCBrZXkuXG4g
KiBAcGFyYW0ge251bWJlcn0gaW5kZXggSW5kZXggdGhhdCBpcyB1c2VkIGlmIGEgbWFudWFsIGtl
eSBpcyBub3QgcHJvdmlkZWQuXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGdl
dENvbXBvbmVudEtleShjb21wb25lbnQsIGluZGV4KSB7XG4gIC8vIERvIHNvbWUgdHlwZWNoZWNr
aW5nIGhlcmUgc2luY2Ugd2UgY2FsbCB0aGlzIGJsaW5kbHkuIFdlIHdhbnQgdG8gZW5zdXJlXG4g
IC8vIHRoYXQgd2UgZG9uJ3QgYmxvY2sgcG90ZW50aWFsIGZ1dHVyZSBFUyBBUElzLlxuICBpZiAo
Y29tcG9uZW50ICYmIHR5cGVvZiBjb21wb25lbnQgPT09ICdvYmplY3QnICYmIGNvbXBvbmVudC5r
ZXkgIT0gbnVsbCkge1xuICAgIC8vIEV4cGxpY2l0IGtleVxuICAgIHJldHVybiBLZXlFc2NhcGVV
dGlscy5lc2NhcGUoY29tcG9uZW50LmtleSk7XG4gIH1cbiAgLy8gSW1wbGljaXQga2V5IGRldGVy
bWluZWQgYnkgdGhlIGluZGV4IGluIHRoZSBzZXRcbiAgcmV0dXJuIGluZGV4LnRvU3RyaW5nKDM2
KTtcbn1cblxuLyoqXG4gKiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIGNvbnRh
aW5lci5cbiAqIEBwYXJhbSB7IXN0cmluZ30gbmFtZVNvRmFyIE5hbWUgb2YgdGhlIGtleSBwYXRo
IHNvIGZhci5cbiAqIEBwYXJhbSB7IWZ1bmN0aW9ufSBjYWxsYmFjayBDYWxsYmFjayB0byBpbnZv
a2Ugd2l0aCBlYWNoIGNoaWxkIGZvdW5kLlxuICogQHBhcmFtIHs/Kn0gdHJhdmVyc2VDb250ZXh0
IFVzZWQgdG8gcGFzcyBpbmZvcm1hdGlvbiB0aHJvdWdob3V0IHRoZSB0cmF2ZXJzYWxcbiAqIHBy
b2Nlc3MuXG4gKiBAcmV0dXJuIHshbnVtYmVyfSBUaGUgbnVtYmVyIG9mIGNoaWxkcmVuIGluIHRo
aXMgc3VidHJlZS5cbiAqL1xuZnVuY3Rpb24gdHJhdmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGRy
ZW4sIG5hbWVTb0ZhciwgY2FsbGJhY2ssIHRyYXZlcnNlQ29udGV4dCkge1xuICB2YXIgdHlwZSA9
IHR5cGVvZiBjaGlsZHJlbjtcblxuICBpZiAodHlwZSA9PT0gJ3VuZGVmaW5lZCcgfHwgdHlwZSA9
PT0gJ2Jvb2xlYW4nKSB7XG4gICAgLy8gQWxsIG9mIHRoZSBhYm92ZSBhcmUgcGVyY2VpdmVkIGFz
IG51bGwuXG4gICAgY2hpbGRyZW4gPSBudWxsO1xuICB9XG5cbiAgaWYgKGNoaWxkcmVuID09PSBu
dWxsIHx8IHR5cGUgPT09ICdzdHJpbmcnIHx8IHR5cGUgPT09ICdudW1iZXInIHx8XG4gIC8vIFRo
ZSBmb2xsb3dpbmcgaXMgaW5saW5lZCBmcm9tIFJlYWN0RWxlbWVudC4gVGhpcyBtZWFucyB3ZSBj
YW4gb3B0aW1pemVcbiAgLy8gc29tZSBjaGVja3MuIFJlYWN0IEZpYmVyIGFsc28gaW5saW5lcyB0
aGlzIGxvZ2ljIGZvciBzaW1pbGFyIHB1cnBvc2VzLlxuICB0eXBlID09PSAnb2JqZWN0JyAmJiBj
aGlsZHJlbi4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFKSB7XG4gICAgY2FsbGJhY2so
dHJhdmVyc2VDb250ZXh0LCBjaGlsZHJlbixcbiAgICAvLyBJZiBpdCdzIHRoZSBvbmx5IGNoaWxk
LCB0cmVhdCB0aGUgbmFtZSBhcyBpZiBpdCB3YXMgd3JhcHBlZCBpbiBhbiBhcnJheVxuICAgIC8v
IHNvIHRoYXQgaXQncyBjb25zaXN0ZW50IGlmIHRoZSBudW1iZXIgb2YgY2hpbGRyZW4gZ3Jvd3Mu
XG4gICAgbmFtZVNvRmFyID09PSAnJyA/IFNFUEFSQVRPUiArIGdldENvbXBvbmVudEtleShjaGls
ZHJlbiwgMCkgOiBuYW1lU29GYXIpO1xuICAgIHJldHVybiAxO1xuICB9XG5cbiAgdmFyIGNoaWxk
O1xuICB2YXIgbmV4dE5hbWU7XG4gIHZhciBzdWJ0cmVlQ291bnQgPSAwOyAvLyBDb3VudCBvZiBj
aGlsZHJlbiBmb3VuZCBpbiB0aGUgY3VycmVudCBzdWJ0cmVlLlxuICB2YXIgbmV4dE5hbWVQcmVm
aXggPSBuYW1lU29GYXIgPT09ICcnID8gU0VQQVJBVE9SIDogbmFtZVNvRmFyICsgU1VCU0VQQVJB
VE9SO1xuXG4gIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgY2hpbGRyZW4ubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNoaWxkID0gY2hpbGRyZW5b
aV07XG4gICAgICBuZXh0TmFtZSA9IG5leHROYW1lUHJlZml4ICsgZ2V0Q29tcG9uZW50S2V5KGNo
aWxkLCBpKTtcbiAgICAgIHN1YnRyZWVDb3VudCArPSB0cmF2ZXJzZUFsbENoaWxkcmVuSW1wbChj
aGlsZCwgbmV4dE5hbWUsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpO1xuICAgIH1cbiAgfSBl
bHNlIHtcbiAgICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0ZXJhdG9yRm4oY2hpbGRyZW4pO1xuICAg
IGlmIChpdGVyYXRvckZuKSB7XG4gICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwo
Y2hpbGRyZW4pO1xuICAgICAgdmFyIHN0ZXA7XG4gICAgICBpZiAoaXRlcmF0b3JGbiAhPT0gY2hp
bGRyZW4uZW50cmllcykge1xuICAgICAgICB2YXIgaWkgPSAwO1xuICAgICAgICB3aGlsZSAoIShz
dGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICAgICAgY2hpbGQgPSBzdGVwLnZh
bHVlO1xuICAgICAgICAgIG5leHROYW1lID0gbmV4dE5hbWVQcmVmaXggKyBnZXRDb21wb25lbnRL
ZXkoY2hpbGQsIGlpKyspO1xuICAgICAgICAgIHN1YnRyZWVDb3VudCArPSB0cmF2ZXJzZUFsbENo
aWxkcmVuSW1wbChjaGlsZCwgbmV4dE5hbWUsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpO1xu
ICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIHZhciBtYXBzQXNDaGlsZHJlbkFkZGVu
ZHVtID0gJyc7XG4gICAgICAgICAgaWYgKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQpIHtcbiAg
ICAgICAgICAgIHZhciBtYXBzQXNDaGlsZHJlbk93bmVyTmFtZSA9IFJlYWN0Q3VycmVudE93bmVy
LmN1cnJlbnQuZ2V0TmFtZSgpO1xuICAgICAgICAgICAgaWYgKG1hcHNBc0NoaWxkcmVuT3duZXJO
YW1lKSB7XG4gICAgICAgICAgICAgIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0gPSAnIENoZWNrIHRo
ZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbWFwc0FzQ2hpbGRyZW5Pd25lck5hbWUgKyAnYC4nO1xu
ICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhkaWRXYXJuQWJvdXRNYXBzLCAnVXNpbmcgTWFw
cyBhcyBjaGlsZHJlbiBpcyBub3QgeWV0IGZ1bGx5IHN1cHBvcnRlZC4gSXQgaXMgYW4gJyArICdl
eHBlcmltZW50YWwgZmVhdHVyZSB0aGF0IG1pZ2h0IGJlIHJlbW92ZWQuIENvbnZlcnQgaXQgdG8g
YSAnICsgJ3NlcXVlbmNlIC8gaXRlcmFibGUgb2Yga2V5ZWQgUmVhY3RFbGVtZW50cyBpbnN0ZWFk
LiVzJywgbWFwc0FzQ2hpbGRyZW5BZGRlbmR1bSkgOiB2b2lkIDA7XG4gICAgICAgICAgZGlkV2Fy
bkFib3V0TWFwcyA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gSXRlcmF0b3Igd2lsbCBw
cm92aWRlIGVudHJ5IFtrLHZdIHR1cGxlcyByYXRoZXIgdGhhbiB2YWx1ZXMuXG4gICAgICAgIHdo
aWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcbiAgICAgICAgICB2YXIgZW50
cnkgPSBzdGVwLnZhbHVlO1xuICAgICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgICAgY2hp
bGQgPSBlbnRyeVsxXTtcbiAgICAgICAgICAgIG5leHROYW1lID0gbmV4dE5hbWVQcmVmaXggKyBL
ZXlFc2NhcGVVdGlscy5lc2NhcGUoZW50cnlbMF0pICsgU1VCU0VQQVJBVE9SICsgZ2V0Q29tcG9u
ZW50S2V5KGNoaWxkLCAwKTtcbiAgICAgICAgICAgIHN1YnRyZWVDb3VudCArPSB0cmF2ZXJzZUFs
bENoaWxkcmVuSW1wbChjaGlsZCwgbmV4dE5hbWUsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQp
O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodHlwZSA9
PT0gJ29iamVjdCcpIHtcbiAgICAgIHZhciBhZGRlbmR1bSA9ICcnO1xuICAgICAgaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgYWRkZW5kdW0gPSAn
IElmIHlvdSBtZWFudCB0byByZW5kZXIgYSBjb2xsZWN0aW9uIG9mIGNoaWxkcmVuLCB1c2UgYW4g
YXJyYXkgJyArICdpbnN0ZWFkIG9yIHdyYXAgdGhlIG9iamVjdCB1c2luZyBjcmVhdGVGcmFnbWVu
dChvYmplY3QpIGZyb20gdGhlICcgKyAnUmVhY3QgYWRkLW9ucy4nO1xuICAgICAgICBpZiAoY2hp
bGRyZW4uX2lzUmVhY3RFbGVtZW50KSB7XG4gICAgICAgICAgYWRkZW5kdW0gPSBcIiBJdCBsb29r
cyBsaWtlIHlvdSdyZSB1c2luZyBhbiBlbGVtZW50IGNyZWF0ZWQgYnkgYSBkaWZmZXJlbnQgXCIg
KyAndmVyc2lvbiBvZiBSZWFjdC4gTWFrZSBzdXJlIHRvIHVzZSBvbmx5IG9uZSBjb3B5IG9mIFJl
YWN0Lic7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQp
IHtcbiAgICAgICAgICB2YXIgbmFtZSA9IFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQuZ2V0TmFt
ZSgpO1xuICAgICAgICAgIGlmIChuYW1lKSB7XG4gICAgICAgICAgICBhZGRlbmR1bSArPSAnIENo
ZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAnICsgbmFtZSArICdgLic7XG4gICAgICAgICAgfVxu
ICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YXIgY2hpbGRyZW5TdHJpbmcgPSBTdHJpbmcoY2hp
bGRyZW4pO1xuICAgICAgIWZhbHNlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ09iamVjdHMgYXJlIG5vdCB2YWxpZCBhcyBhIFJlYWN0
IGNoaWxkIChmb3VuZDogJXMpLiVzJywgY2hpbGRyZW5TdHJpbmcgPT09ICdbb2JqZWN0IE9iamVj
dF0nID8gJ29iamVjdCB3aXRoIGtleXMgeycgKyBPYmplY3Qua2V5cyhjaGlsZHJlbikuam9pbign
LCAnKSArICd9JyA6IGNoaWxkcmVuU3RyaW5nLCBhZGRlbmR1bSkgOiBfcHJvZEludmFyaWFudCgn
MzEnLCBjaGlsZHJlblN0cmluZyA9PT0gJ1tvYmplY3QgT2JqZWN0XScgPyAnb2JqZWN0IHdpdGgg
a2V5cyB7JyArIE9iamVjdC5rZXlzKGNoaWxkcmVuKS5qb2luKCcsICcpICsgJ30nIDogY2hpbGRy
ZW5TdHJpbmcsIGFkZGVuZHVtKSA6IHZvaWQgMDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gc3Vi
dHJlZUNvdW50O1xufVxuXG4vKipcbiAqIFRyYXZlcnNlcyBjaGlsZHJlbiB0aGF0IGFyZSB0eXBp
Y2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAsIGJ1dFxuICogbWlnaHQgYWxzbyBi
ZSBzcGVjaWZpZWQgdGhyb3VnaCBhdHRyaWJ1dGVzOlxuICpcbiAqIC0gYHRyYXZlcnNlQWxsQ2hp
bGRyZW4odGhpcy5wcm9wcy5jaGlsZHJlbiwgLi4uKWBcbiAqIC0gYHRyYXZlcnNlQWxsQ2hpbGRy
ZW4odGhpcy5wcm9wcy5sZWZ0UGFuZWxDaGlsZHJlbiwgLi4uKWBcbiAqXG4gKiBUaGUgYHRyYXZl
cnNlQ29udGV4dGAgaXMgYW4gb3B0aW9uYWwgYXJndW1lbnQgdGhhdCBpcyBwYXNzZWQgdGhyb3Vn
aCB0aGVcbiAqIGVudGlyZSB0cmF2ZXJzYWwuIEl0IGNhbiBiZSB1c2VkIHRvIHN0b3JlIGFjY3Vt
dWxhdGlvbnMgb3IgYW55dGhpbmcgZWxzZSB0aGF0XG4gKiB0aGUgY2FsbGJhY2sgbWlnaHQgZmlu
ZCByZWxldmFudC5cbiAqXG4gKiBAcGFyYW0gez8qfSBjaGlsZHJlbiBDaGlsZHJlbiB0cmVlIG9i
amVjdC5cbiAqIEBwYXJhbSB7IWZ1bmN0aW9ufSBjYWxsYmFjayBUbyBpbnZva2UgdXBvbiB0cmF2
ZXJzaW5nIGVhY2ggY2hpbGQuXG4gKiBAcGFyYW0gez8qfSB0cmF2ZXJzZUNvbnRleHQgQ29udGV4
dCBmb3IgdHJhdmVyc2FsLlxuICogQHJldHVybiB7IW51bWJlcn0gVGhlIG51bWJlciBvZiBjaGls
ZHJlbiBpbiB0aGlzIHN1YnRyZWUuXG4gKi9cbmZ1bmN0aW9uIHRyYXZlcnNlQWxsQ2hpbGRyZW4o
Y2hpbGRyZW4sIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpIHtcbiAgaWYgKGNoaWxkcmVuID09
IG51bGwpIHtcbiAgICByZXR1cm4gMDtcbiAgfVxuXG4gIHJldHVybiB0cmF2ZXJzZUFsbENoaWxk
cmVuSW1wbChjaGlsZHJlbiwgJycsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpO1xufVxuXG5t
b2R1bGUuZXhwb3J0cyA9IHRyYXZlcnNlQWxsQ2hpbGRyZW47XG5cblxuLyoqKioqKioqKioqKioq
KioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi90cmF2ZXJzZUFs
bENoaWxkcmVuLmpzXG4gKiogbW9kdWxlIGlkID0gNzhcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxu
ICoqLyIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcblxudmFy
IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFy
IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVu
dHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFz
T3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5
XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gY29ubmVjdEFk
dmFuY2VkO1xuXG52YXIgX2hvaXN0Tm9uUmVhY3RTdGF0aWNzID0gcmVxdWlyZSgnaG9pc3Qtbm9u
LXJlYWN0LXN0YXRpY3MnKTtcblxudmFyIF9ob2lzdE5vblJlYWN0U3RhdGljczIgPSBfaW50ZXJv
cFJlcXVpcmVEZWZhdWx0KF9ob2lzdE5vblJlYWN0U3RhdGljcyk7XG5cbnZhciBfaW52YXJpYW50
ID0gcmVxdWlyZSgnaW52YXJpYW50Jyk7XG5cbnZhciBfaW52YXJpYW50MiA9IF9pbnRlcm9wUmVx
dWlyZURlZmF1bHQoX2ludmFyaWFudCk7XG5cbnZhciBfcmVhY3QgPSByZXF1aXJlKCdyZWFjdCcp
O1xuXG52YXIgX1N1YnNjcmlwdGlvbiA9IHJlcXVpcmUoJy4uL3V0aWxzL1N1YnNjcmlwdGlvbicp
O1xuXG52YXIgX1N1YnNjcmlwdGlvbjIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9TdWJzY3Jp
cHRpb24pO1xuXG52YXIgX1Byb3BUeXBlcyA9IHJlcXVpcmUoJy4uL3V0aWxzL1Byb3BUeXBlcycp
O1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYm
IG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlvbiBf
Y2xhc3NDYWxsQ2hlY2soaW5zdGFuY2UsIENvbnN0cnVjdG9yKSB7IGlmICghKGluc3RhbmNlIGlu
c3RhbmNlb2YgQ29uc3RydWN0b3IpKSB7IHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3QgY2Fs
bCBhIGNsYXNzIGFzIGEgZnVuY3Rpb25cIik7IH0gfVxuXG5mdW5jdGlvbiBfcG9zc2libGVDb25z
dHJ1Y3RvclJldHVybihzZWxmLCBjYWxsKSB7IGlmICghc2VsZikgeyB0aHJvdyBuZXcgUmVmZXJl
bmNlRXJyb3IoXCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3Qg
YmVlbiBjYWxsZWRcIik7IH0gcmV0dXJuIGNhbGwgJiYgKHR5cGVvZiBjYWxsID09PSBcIm9iamVj
dFwiIHx8IHR5cGVvZiBjYWxsID09PSBcImZ1bmN0aW9uXCIpID8gY2FsbCA6IHNlbGY7IH1cblxu
ZnVuY3Rpb24gX2luaGVyaXRzKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7IGlmICh0eXBlb2Ygc3Vw
ZXJDbGFzcyAhPT0gXCJmdW5jdGlvblwiICYmIHN1cGVyQ2xhc3MgIT09IG51bGwpIHsgdGhyb3cg
bmV3IFR5cGVFcnJvcihcIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUgbnVsbCBvciBh
IGZ1bmN0aW9uLCBub3QgXCIgKyB0eXBlb2Ygc3VwZXJDbGFzcyk7IH0gc3ViQ2xhc3MucHJvdG90
eXBlID0gT2JqZWN0LmNyZWF0ZShzdXBlckNsYXNzICYmIHN1cGVyQ2xhc3MucHJvdG90eXBlLCB7
IGNvbnN0cnVjdG9yOiB7IHZhbHVlOiBzdWJDbGFzcywgZW51bWVyYWJsZTogZmFsc2UsIHdyaXRh
YmxlOiB0cnVlLCBjb25maWd1cmFibGU6IHRydWUgfSB9KTsgaWYgKHN1cGVyQ2xhc3MpIE9iamVj
dC5zZXRQcm90b3R5cGVPZiA/IE9iamVjdC5zZXRQcm90b3R5cGVPZihzdWJDbGFzcywgc3VwZXJD
bGFzcykgOiBzdWJDbGFzcy5fX3Byb3RvX18gPSBzdXBlckNsYXNzOyB9XG5cbmZ1bmN0aW9uIF9v
YmplY3RXaXRob3V0UHJvcGVydGllcyhvYmosIGtleXMpIHsgdmFyIHRhcmdldCA9IHt9OyBmb3Ig
KHZhciBpIGluIG9iaikgeyBpZiAoa2V5cy5pbmRleE9mKGkpID49IDApIGNvbnRpbnVlOyBpZiAo
IU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGkpKSBjb250aW51ZTsg
dGFyZ2V0W2ldID0gb2JqW2ldOyB9IHJldHVybiB0YXJnZXQ7IH1cblxudmFyIGhvdFJlbG9hZGlu
Z1ZlcnNpb24gPSAwO1xudmFyIGR1bW15U3RhdGUgPSB7fTtcbmZ1bmN0aW9uIG5vb3AoKSB7fVxu
ZnVuY3Rpb24gbWFrZVNlbGVjdG9yU3RhdGVmdWwoc291cmNlU2VsZWN0b3IsIHN0b3JlKSB7XG4g
IC8vIHdyYXAgdGhlIHNlbGVjdG9yIGluIGFuIG9iamVjdCB0aGF0IHRyYWNrcyBpdHMgcmVzdWx0
cyBiZXR3ZWVuIHJ1bnMuXG4gIHZhciBzZWxlY3RvciA9IHtcbiAgICBydW46IGZ1bmN0aW9uIHJ1
bkNvbXBvbmVudFNlbGVjdG9yKHByb3BzKSB7XG4gICAgICB0cnkge1xuICAgICAgICB2YXIgbmV4
dFByb3BzID0gc291cmNlU2VsZWN0b3Ioc3RvcmUuZ2V0U3RhdGUoKSwgcHJvcHMpO1xuICAgICAg
ICBpZiAobmV4dFByb3BzICE9PSBzZWxlY3Rvci5wcm9wcyB8fCBzZWxlY3Rvci5lcnJvcikge1xu
ICAgICAgICAgIHNlbGVjdG9yLnNob3VsZENvbXBvbmVudFVwZGF0ZSA9IHRydWU7XG4gICAgICAg
ICAgc2VsZWN0b3IucHJvcHMgPSBuZXh0UHJvcHM7XG4gICAgICAgICAgc2VsZWN0b3IuZXJyb3Ig
PSBudWxsO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBzZWxl
Y3Rvci5zaG91bGRDb21wb25lbnRVcGRhdGUgPSB0cnVlO1xuICAgICAgICBzZWxlY3Rvci5lcnJv
ciA9IGVycm9yO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICByZXR1cm4gc2VsZWN0b3I7XG59
XG5cbmZ1bmN0aW9uIGNvbm5lY3RBZHZhbmNlZChcbi8qXG4gIHNlbGVjdG9yRmFjdG9yeSBpcyBh
IGZ1bmMgdGhhdCBpcyByZXNwb25zaWJsZSBmb3IgcmV0dXJuaW5nIHRoZSBzZWxlY3RvciBmdW5j
dGlvbiB1c2VkIHRvXG4gIGNvbXB1dGUgbmV3IHByb3BzIGZyb20gc3RhdGUsIHByb3BzLCBhbmQg
ZGlzcGF0Y2guIEZvciBleGFtcGxlOlxuICAgICBleHBvcnQgZGVmYXVsdCBjb25uZWN0QWR2YW5j
ZWQoKGRpc3BhdGNoLCBvcHRpb25zKSA9PiAoc3RhdGUsIHByb3BzKSA9PiAoe1xuICAgICAgdGhp
bmc6IHN0YXRlLnRoaW5nc1twcm9wcy50aGluZ0lkXSxcbiAgICAgIHNhdmVUaGluZzogZmllbGRz
ID0+IGRpc3BhdGNoKGFjdGlvbkNyZWF0b3JzLnNhdmVUaGluZyhwcm9wcy50aGluZ0lkLCBmaWVs
ZHMpKSxcbiAgICB9KSkoWW91ckNvbXBvbmVudClcbiAgIEFjY2VzcyB0byBkaXNwYXRjaCBpcyBw
cm92aWRlZCB0byB0aGUgZmFjdG9yeSBzbyBzZWxlY3RvckZhY3RvcmllcyBjYW4gYmluZCBhY3Rp
b25DcmVhdG9yc1xuICBvdXRzaWRlIG9mIHRoZWlyIHNlbGVjdG9yIGFzIGFuIG9wdGltaXphdGlv
bi4gT3B0aW9ucyBwYXNzZWQgdG8gY29ubmVjdEFkdmFuY2VkIGFyZSBwYXNzZWQgdG9cbiAgdGhl
IHNlbGVjdG9yRmFjdG9yeSwgYWxvbmcgd2l0aCBkaXNwbGF5TmFtZSBhbmQgV3JhcHBlZENvbXBv
bmVudCwgYXMgdGhlIHNlY29uZCBhcmd1bWVudC5cbiAgIE5vdGUgdGhhdCBzZWxlY3RvckZhY3Rv
cnkgaXMgcmVzcG9uc2libGUgZm9yIGFsbCBjYWNoaW5nL21lbW9pemF0aW9uIG9mIGluYm91bmQg
YW5kIG91dGJvdW5kXG4gIHByb3BzLiBEbyBub3QgdXNlIGNvbm5lY3RBZHZhbmNlZCBkaXJlY3Rs
eSB3aXRob3V0IG1lbW9pemluZyByZXN1bHRzIGJldHdlZW4gY2FsbHMgdG8geW91clxuICBzZWxl
Y3Rvciwgb3RoZXJ3aXNlIHRoZSBDb25uZWN0IGNvbXBvbmVudCB3aWxsIHJlLXJlbmRlciBvbiBl
dmVyeSBzdGF0ZSBvciBwcm9wcyBjaGFuZ2UuXG4qL1xuc2VsZWN0b3JGYWN0b3J5KSB7XG4gIHZh
ciBfY29udGV4dFR5cGVzLCBfY2hpbGRDb250ZXh0VHlwZXM7XG5cbiAgdmFyIF9yZWYgPSBhcmd1
bWVudHMubGVuZ3RoID4gMSAmJiBhcmd1bWVudHNbMV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50
c1sxXSA6IHt9LFxuICAgICAgX3JlZiRnZXREaXNwbGF5TmFtZSA9IF9yZWYuZ2V0RGlzcGxheU5h
bWUsXG4gICAgICBnZXREaXNwbGF5TmFtZSA9IF9yZWYkZ2V0RGlzcGxheU5hbWUgPT09IHVuZGVm
aW5lZCA/IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgcmV0dXJuICdDb25uZWN0QWR2YW5jZWQoJyAr
IG5hbWUgKyAnKSc7XG4gIH0gOiBfcmVmJGdldERpc3BsYXlOYW1lLFxuICAgICAgX3JlZiRtZXRo
b2ROYW1lID0gX3JlZi5tZXRob2ROYW1lLFxuICAgICAgbWV0aG9kTmFtZSA9IF9yZWYkbWV0aG9k
TmFtZSA9PT0gdW5kZWZpbmVkID8gJ2Nvbm5lY3RBZHZhbmNlZCcgOiBfcmVmJG1ldGhvZE5hbWUs
XG4gICAgICBfcmVmJHJlbmRlckNvdW50UHJvcCA9IF9yZWYucmVuZGVyQ291bnRQcm9wLFxuICAg
ICAgcmVuZGVyQ291bnRQcm9wID0gX3JlZiRyZW5kZXJDb3VudFByb3AgPT09IHVuZGVmaW5lZCA/
IHVuZGVmaW5lZCA6IF9yZWYkcmVuZGVyQ291bnRQcm9wLFxuICAgICAgX3JlZiRzaG91bGRIYW5k
bGVTdGF0ID0gX3JlZi5zaG91bGRIYW5kbGVTdGF0ZUNoYW5nZXMsXG4gICAgICBzaG91bGRIYW5k
bGVTdGF0ZUNoYW5nZXMgPSBfcmVmJHNob3VsZEhhbmRsZVN0YXQgPT09IHVuZGVmaW5lZCA/IHRy
dWUgOiBfcmVmJHNob3VsZEhhbmRsZVN0YXQsXG4gICAgICBfcmVmJHN0b3JlS2V5ID0gX3JlZi5z
dG9yZUtleSxcbiAgICAgIHN0b3JlS2V5ID0gX3JlZiRzdG9yZUtleSA9PT0gdW5kZWZpbmVkID8g
J3N0b3JlJyA6IF9yZWYkc3RvcmVLZXksXG4gICAgICBfcmVmJHdpdGhSZWYgPSBfcmVmLndpdGhS
ZWYsXG4gICAgICB3aXRoUmVmID0gX3JlZiR3aXRoUmVmID09PSB1bmRlZmluZWQgPyBmYWxzZSA6
IF9yZWYkd2l0aFJlZixcbiAgICAgIGNvbm5lY3RPcHRpb25zID0gX29iamVjdFdpdGhvdXRQcm9w
ZXJ0aWVzKF9yZWYsIFsnZ2V0RGlzcGxheU5hbWUnLCAnbWV0aG9kTmFtZScsICdyZW5kZXJDb3Vu
dFByb3AnLCAnc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzJywgJ3N0b3JlS2V5JywgJ3dpdGhSZWYn
XSk7XG5cbiAgdmFyIHN1YnNjcmlwdGlvbktleSA9IHN0b3JlS2V5ICsgJ1N1YnNjcmlwdGlvbic7
XG4gIHZhciB2ZXJzaW9uID0gaG90UmVsb2FkaW5nVmVyc2lvbisrO1xuXG4gIHZhciBjb250ZXh0
VHlwZXMgPSAoX2NvbnRleHRUeXBlcyA9IHt9LCBfY29udGV4dFR5cGVzW3N0b3JlS2V5XSA9IF9Q
cm9wVHlwZXMuc3RvcmVTaGFwZSwgX2NvbnRleHRUeXBlc1tzdWJzY3JpcHRpb25LZXldID0gX1By
b3BUeXBlcy5zdWJzY3JpcHRpb25TaGFwZSwgX2NvbnRleHRUeXBlcyk7XG4gIHZhciBjaGlsZENv
bnRleHRUeXBlcyA9IChfY2hpbGRDb250ZXh0VHlwZXMgPSB7fSwgX2NoaWxkQ29udGV4dFR5cGVz
W3N1YnNjcmlwdGlvbktleV0gPSBfUHJvcFR5cGVzLnN1YnNjcmlwdGlvblNoYXBlLCBfY2hpbGRD
b250ZXh0VHlwZXMpO1xuXG4gIHJldHVybiBmdW5jdGlvbiB3cmFwV2l0aENvbm5lY3QoV3JhcHBl
ZENvbXBvbmVudCkge1xuICAgICgwLCBfaW52YXJpYW50Mi5kZWZhdWx0KSh0eXBlb2YgV3JhcHBl
ZENvbXBvbmVudCA9PSAnZnVuY3Rpb24nLCAnWW91IG11c3QgcGFzcyBhIGNvbXBvbmVudCB0byB0
aGUgZnVuY3Rpb24gcmV0dXJuZWQgYnkgJyArICgnY29ubmVjdC4gSW5zdGVhZCByZWNlaXZlZCAn
ICsgSlNPTi5zdHJpbmdpZnkoV3JhcHBlZENvbXBvbmVudCkpKTtcblxuICAgIHZhciB3cmFwcGVk
Q29tcG9uZW50TmFtZSA9IFdyYXBwZWRDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgV3JhcHBlZENv
bXBvbmVudC5uYW1lIHx8ICdDb21wb25lbnQnO1xuXG4gICAgdmFyIGRpc3BsYXlOYW1lID0gZ2V0
RGlzcGxheU5hbWUod3JhcHBlZENvbXBvbmVudE5hbWUpO1xuXG4gICAgdmFyIHNlbGVjdG9yRmFj
dG9yeU9wdGlvbnMgPSBfZXh0ZW5kcyh7fSwgY29ubmVjdE9wdGlvbnMsIHtcbiAgICAgIGdldERp
c3BsYXlOYW1lOiBnZXREaXNwbGF5TmFtZSxcbiAgICAgIG1ldGhvZE5hbWU6IG1ldGhvZE5hbWUs
XG4gICAgICByZW5kZXJDb3VudFByb3A6IHJlbmRlckNvdW50UHJvcCxcbiAgICAgIHNob3VsZEhh
bmRsZVN0YXRlQ2hhbmdlczogc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzLFxuICAgICAgc3RvcmVL
ZXk6IHN0b3JlS2V5LFxuICAgICAgd2l0aFJlZjogd2l0aFJlZixcbiAgICAgIGRpc3BsYXlOYW1l
OiBkaXNwbGF5TmFtZSxcbiAgICAgIHdyYXBwZWRDb21wb25lbnROYW1lOiB3cmFwcGVkQ29tcG9u
ZW50TmFtZSxcbiAgICAgIFdyYXBwZWRDb21wb25lbnQ6IFdyYXBwZWRDb21wb25lbnRcbiAgICB9
KTtcblxuICAgIHZhciBDb25uZWN0ID0gZnVuY3Rpb24gKF9Db21wb25lbnQpIHtcbiAgICAgIF9p
bmhlcml0cyhDb25uZWN0LCBfQ29tcG9uZW50KTtcblxuICAgICAgZnVuY3Rpb24gQ29ubmVjdChw
cm9wcywgY29udGV4dCkge1xuICAgICAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQ29ubmVjdCk7
XG5cbiAgICAgICAgdmFyIF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywg
X0NvbXBvbmVudC5jYWxsKHRoaXMsIHByb3BzLCBjb250ZXh0KSk7XG5cbiAgICAgICAgX3RoaXMu
dmVyc2lvbiA9IHZlcnNpb247XG4gICAgICAgIF90aGlzLnN0YXRlID0ge307XG4gICAgICAgIF90
aGlzLnJlbmRlckNvdW50ID0gMDtcbiAgICAgICAgX3RoaXMuc3RvcmUgPSBwcm9wc1tzdG9yZUtl
eV0gfHwgY29udGV4dFtzdG9yZUtleV07XG4gICAgICAgIF90aGlzLnByb3BzTW9kZSA9IEJvb2xl
YW4ocHJvcHNbc3RvcmVLZXldKTtcbiAgICAgICAgX3RoaXMuc2V0V3JhcHBlZEluc3RhbmNlID0g
X3RoaXMuc2V0V3JhcHBlZEluc3RhbmNlLmJpbmQoX3RoaXMpO1xuXG4gICAgICAgICgwLCBfaW52
YXJpYW50Mi5kZWZhdWx0KShfdGhpcy5zdG9yZSwgJ0NvdWxkIG5vdCBmaW5kIFwiJyArIHN0b3Jl
S2V5ICsgJ1wiIGluIGVpdGhlciB0aGUgY29udGV4dCBvciBwcm9wcyBvZiAnICsgKCdcIicgKyBk
aXNwbGF5TmFtZSArICdcIi4gRWl0aGVyIHdyYXAgdGhlIHJvb3QgY29tcG9uZW50IGluIGEgPFBy
b3ZpZGVyPiwgJykgKyAoJ29yIGV4cGxpY2l0bHkgcGFzcyBcIicgKyBzdG9yZUtleSArICdcIiBh
cyBhIHByb3AgdG8gXCInICsgZGlzcGxheU5hbWUgKyAnXCIuJykpO1xuXG4gICAgICAgIF90aGlz
LmluaXRTZWxlY3RvcigpO1xuICAgICAgICBfdGhpcy5pbml0U3Vic2NyaXB0aW9uKCk7XG4gICAg
ICAgIHJldHVybiBfdGhpcztcbiAgICAgIH1cblxuICAgICAgQ29ubmVjdC5wcm90b3R5cGUuZ2V0
Q2hpbGRDb250ZXh0ID0gZnVuY3Rpb24gZ2V0Q2hpbGRDb250ZXh0KCkge1xuICAgICAgICB2YXIg
X3JlZjI7XG5cbiAgICAgICAgLy8gSWYgdGhpcyBjb21wb25lbnQgcmVjZWl2ZWQgc3RvcmUgZnJv
bSBwcm9wcywgaXRzIHN1YnNjcmlwdGlvbiBzaG91bGQgYmUgdHJhbnNwYXJlbnRcbiAgICAgICAg
Ly8gdG8gYW55IGRlc2NlbmRhbnRzIHJlY2VpdmluZyBzdG9yZStzdWJzY3JpcHRpb24gZnJvbSBj
b250ZXh0OyBpdCBwYXNzZXMgYWxvbmdcbiAgICAgICAgLy8gc3Vic2NyaXB0aW9uIHBhc3NlZCB0
byBpdC4gT3RoZXJ3aXNlLCBpdCBzaGFkb3dzIHRoZSBwYXJlbnQgc3Vic2NyaXB0aW9uLCB3aGlj
aCBhbGxvd3NcbiAgICAgICAgLy8gQ29ubmVjdCB0byBjb250cm9sIG9yZGVyaW5nIG9mIG5vdGlm
aWNhdGlvbnMgdG8gZmxvdyB0b3AtZG93bi5cbiAgICAgICAgdmFyIHN1YnNjcmlwdGlvbiA9IHRo
aXMucHJvcHNNb2RlID8gbnVsbCA6IHRoaXMuc3Vic2NyaXB0aW9uO1xuICAgICAgICByZXR1cm4g
X3JlZjIgPSB7fSwgX3JlZjJbc3Vic2NyaXB0aW9uS2V5XSA9IHN1YnNjcmlwdGlvbiB8fCB0aGlz
LmNvbnRleHRbc3Vic2NyaXB0aW9uS2V5XSwgX3JlZjI7XG4gICAgICB9O1xuXG4gICAgICBDb25u
ZWN0LnByb3RvdHlwZS5jb21wb25lbnREaWRNb3VudCA9IGZ1bmN0aW9uIGNvbXBvbmVudERpZE1v
dW50KCkge1xuICAgICAgICBpZiAoIXNob3VsZEhhbmRsZVN0YXRlQ2hhbmdlcykgcmV0dXJuO1xu
XG4gICAgICAgIC8vIGNvbXBvbmVudFdpbGxNb3VudCBmaXJlcyBkdXJpbmcgc2VydmVyIHNpZGUg
cmVuZGVyaW5nLCBidXQgY29tcG9uZW50RGlkTW91bnQgYW5kXG4gICAgICAgIC8vIGNvbXBvbmVu
dFdpbGxVbm1vdW50IGRvIG5vdC4gQmVjYXVzZSBvZiB0aGlzLCB0cnlTdWJzY3JpYmUgaGFwcGVu
cyBkdXJpbmcgLi4uZGlkTW91bnQuXG4gICAgICAgIC8vIE90aGVyd2lzZSwgdW5zdWJzY3JpcHRp
b24gd291bGQgbmV2ZXIgdGFrZSBwbGFjZSBkdXJpbmcgU1NSLCBjYXVzaW5nIGEgbWVtb3J5IGxl
YWsuXG4gICAgICAgIC8vIFRvIGhhbmRsZSB0aGUgY2FzZSB3aGVyZSBhIGNoaWxkIGNvbXBvbmVu
dCBtYXkgaGF2ZSB0cmlnZ2VyZWQgYSBzdGF0ZSBjaGFuZ2UgYnlcbiAgICAgICAgLy8gZGlzcGF0
Y2hpbmcgYW4gYWN0aW9uIGluIGl0cyBjb21wb25lbnRXaWxsTW91bnQsIHdlIGhhdmUgdG8gcmUt
cnVuIHRoZSBzZWxlY3QgYW5kIG1heWJlXG4gICAgICAgIC8vIHJlLXJlbmRlci5cbiAgICAgICAg
dGhpcy5zdWJzY3JpcHRpb24udHJ5U3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0b3Iu
cnVuKHRoaXMucHJvcHMpO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3Rvci5zaG91bGRDb21wb25l
bnRVcGRhdGUpIHRoaXMuZm9yY2VVcGRhdGUoKTtcbiAgICAgIH07XG5cbiAgICAgIENvbm5lY3Qu
cHJvdG90eXBlLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgPSBmdW5jdGlvbiBjb21wb25lbnRX
aWxsUmVjZWl2ZVByb3BzKG5leHRQcm9wcykge1xuICAgICAgICB0aGlzLnNlbGVjdG9yLnJ1bihu
ZXh0UHJvcHMpO1xuICAgICAgfTtcblxuICAgICAgQ29ubmVjdC5wcm90b3R5cGUuc2hvdWxkQ29t
cG9uZW50VXBkYXRlID0gZnVuY3Rpb24gc2hvdWxkQ29tcG9uZW50VXBkYXRlKCkge1xuICAgICAg
ICByZXR1cm4gdGhpcy5zZWxlY3Rvci5zaG91bGRDb21wb25lbnRVcGRhdGU7XG4gICAgICB9O1xu
XG4gICAgICBDb25uZWN0LnByb3RvdHlwZS5jb21wb25lbnRXaWxsVW5tb3VudCA9IGZ1bmN0aW9u
IGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24p
IHRoaXMuc3Vic2NyaXB0aW9uLnRyeVVuc3Vic2NyaWJlKCk7XG4gICAgICAgIHRoaXMuc3Vic2Ny
aXB0aW9uID0gbnVsbDtcbiAgICAgICAgdGhpcy5ub3RpZnlOZXN0ZWRTdWJzID0gbm9vcDtcbiAg
ICAgICAgdGhpcy5zdG9yZSA9IG51bGw7XG4gICAgICAgIHRoaXMuc2VsZWN0b3IucnVuID0gbm9v
cDtcbiAgICAgICAgdGhpcy5zZWxlY3Rvci5zaG91bGRDb21wb25lbnRVcGRhdGUgPSBmYWxzZTtc
biAgICAgIH07XG5cbiAgICAgIENvbm5lY3QucHJvdG90eXBlLmdldFdyYXBwZWRJbnN0YW5jZSA9
IGZ1bmN0aW9uIGdldFdyYXBwZWRJbnN0YW5jZSgpIHtcbiAgICAgICAgKDAsIF9pbnZhcmlhbnQy
LmRlZmF1bHQpKHdpdGhSZWYsICdUbyBhY2Nlc3MgdGhlIHdyYXBwZWQgaW5zdGFuY2UsIHlvdSBu
ZWVkIHRvIHNwZWNpZnkgJyArICgneyB3aXRoUmVmOiB0cnVlIH0gaW4gdGhlIG9wdGlvbnMgYXJn
dW1lbnQgb2YgdGhlICcgKyBtZXRob2ROYW1lICsgJygpIGNhbGwuJykpO1xuICAgICAgICByZXR1
cm4gdGhpcy53cmFwcGVkSW5zdGFuY2U7XG4gICAgICB9O1xuXG4gICAgICBDb25uZWN0LnByb3Rv
dHlwZS5zZXRXcmFwcGVkSW5zdGFuY2UgPSBmdW5jdGlvbiBzZXRXcmFwcGVkSW5zdGFuY2UocmVm
KSB7XG4gICAgICAgIHRoaXMud3JhcHBlZEluc3RhbmNlID0gcmVmO1xuICAgICAgfTtcblxuICAg
ICAgQ29ubmVjdC5wcm90b3R5cGUuaW5pdFNlbGVjdG9yID0gZnVuY3Rpb24gaW5pdFNlbGVjdG9y
KCkge1xuICAgICAgICB2YXIgc291cmNlU2VsZWN0b3IgPSBzZWxlY3RvckZhY3RvcnkodGhpcy5z
dG9yZS5kaXNwYXRjaCwgc2VsZWN0b3JGYWN0b3J5T3B0aW9ucyk7XG4gICAgICAgIHRoaXMuc2Vs
ZWN0b3IgPSBtYWtlU2VsZWN0b3JTdGF0ZWZ1bChzb3VyY2VTZWxlY3RvciwgdGhpcy5zdG9yZSk7
XG4gICAgICAgIHRoaXMuc2VsZWN0b3IucnVuKHRoaXMucHJvcHMpO1xuICAgICAgfTtcblxuICAg
ICAgQ29ubmVjdC5wcm90b3R5cGUuaW5pdFN1YnNjcmlwdGlvbiA9IGZ1bmN0aW9uIGluaXRTdWJz
Y3JpcHRpb24oKSB7XG4gICAgICAgIGlmICghc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2VzKSByZXR1
cm47XG5cbiAgICAgICAgLy8gcGFyZW50U3ViJ3Mgc291cmNlIHNob3VsZCBtYXRjaCB3aGVyZSBz
dG9yZSBjYW1lIGZyb206IHByb3BzIHZzLiBjb250ZXh0LiBBIGNvbXBvbmVudFxuICAgICAgICAv
LyBjb25uZWN0ZWQgdG8gdGhlIHN0b3JlIHZpYSBwcm9wcyBzaG91bGRuJ3QgdXNlIHN1YnNjcmlw
dGlvbiBmcm9tIGNvbnRleHQsIG9yIHZpY2UgdmVyc2EuXG4gICAgICAgIHZhciBwYXJlbnRTdWIg
PSAodGhpcy5wcm9wc01vZGUgPyB0aGlzLnByb3BzIDogdGhpcy5jb250ZXh0KVtzdWJzY3JpcHRp
b25LZXldO1xuICAgICAgICB0aGlzLnN1YnNjcmlwdGlvbiA9IG5ldyBfU3Vic2NyaXB0aW9uMi5k
ZWZhdWx0KHRoaXMuc3RvcmUsIHBhcmVudFN1YiwgdGhpcy5vblN0YXRlQ2hhbmdlLmJpbmQodGhp
cykpO1xuXG4gICAgICAgIC8vIGBub3RpZnlOZXN0ZWRTdWJzYCBpcyBkdXBsaWNhdGVkIHRvIGhh
bmRsZSB0aGUgY2FzZSB3aGVyZSB0aGUgY29tcG9uZW50IGlzICB1bm1vdW50ZWQgaW5cbiAgICAg
ICAgLy8gdGhlIG1pZGRsZSBvZiB0aGUgbm90aWZpY2F0aW9uIGxvb3AsIHdoZXJlIGB0aGlzLnN1
YnNjcmlwdGlvbmAgd2lsbCB0aGVuIGJlIG51bGwuIEFuXG4gICAgICAgIC8vIGV4dHJhIG51bGwg
Y2hlY2sgZXZlcnkgY2hhbmdlIGNhbiBiZSBhdm9pZGVkIGJ5IGNvcHlpbmcgdGhlIG1ldGhvZCBv
bnRvIGB0aGlzYCBhbmQgdGhlblxuICAgICAgICAvLyByZXBsYWNpbmcgaXQgd2l0aCBhIG5vLW9w
IG9uIHVubW91bnQuIFRoaXMgY2FuIHByb2JhYmx5IGJlIGF2b2lkZWQgaWYgU3Vic2NyaXB0aW9u
J3NcbiAgICAgICAgLy8gbGlzdGVuZXJzIGxvZ2ljIGlzIGNoYW5nZWQgdG8gbm90IGNhbGwgbGlz
dGVuZXJzIHRoYXQgaGF2ZSBiZWVuIHVuc3Vic2NyaWJlZCBpbiB0aGVcbiAgICAgICAgLy8gbWlk
ZGxlIG9mIHRoZSBub3RpZmljYXRpb24gbG9vcC5cbiAgICAgICAgdGhpcy5ub3RpZnlOZXN0ZWRT
dWJzID0gdGhpcy5zdWJzY3JpcHRpb24ubm90aWZ5TmVzdGVkU3Vicy5iaW5kKHRoaXMuc3Vic2Ny
aXB0aW9uKTtcbiAgICAgIH07XG5cbiAgICAgIENvbm5lY3QucHJvdG90eXBlLm9uU3RhdGVDaGFu
Z2UgPSBmdW5jdGlvbiBvblN0YXRlQ2hhbmdlKCkge1xuICAgICAgICB0aGlzLnNlbGVjdG9yLnJ1
bih0aGlzLnByb3BzKTtcblxuICAgICAgICBpZiAoIXRoaXMuc2VsZWN0b3Iuc2hvdWxkQ29tcG9u
ZW50VXBkYXRlKSB7XG4gICAgICAgICAgdGhpcy5ub3RpZnlOZXN0ZWRTdWJzKCk7XG4gICAgICAg
IH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jb21wb25lbnREaWRVcGRhdGUgPSB0aGlzLm5vdGlm
eU5lc3RlZFN1YnNPbkNvbXBvbmVudERpZFVwZGF0ZTtcbiAgICAgICAgICB0aGlzLnNldFN0YXRl
KGR1bW15U3RhdGUpO1xuICAgICAgICB9XG4gICAgICB9O1xuXG4gICAgICBDb25uZWN0LnByb3Rv
dHlwZS5ub3RpZnlOZXN0ZWRTdWJzT25Db21wb25lbnREaWRVcGRhdGUgPSBmdW5jdGlvbiBub3Rp
ZnlOZXN0ZWRTdWJzT25Db21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgICAgIC8vIGBjb21wb25l
bnREaWRVcGRhdGVgIGlzIGNvbmRpdGlvbmFsbHkgaW1wbGVtZW50ZWQgd2hlbiBgb25TdGF0ZUNo
YW5nZWAgZGV0ZXJtaW5lcyBpdFxuICAgICAgICAvLyBuZWVkcyB0byBub3RpZnkgbmVzdGVkIHN1
YnMuIE9uY2UgY2FsbGVkLCBpdCB1bmltcGxlbWVudHMgaXRzZWxmIHVudGlsIGZ1cnRoZXIgc3Rh
dGVcbiAgICAgICAgLy8gY2hhbmdlcyBvY2N1ci4gRG9pbmcgaXQgdGhpcyB3YXkgdnMgaGF2aW5n
IGEgcGVybWFuZW50IGBjb21wb25lbnREaWRVcGRhdGVgIHRoYXQgZG9lc1xuICAgICAgICAvLyBh
IGJvb2xlYW4gY2hlY2sgZXZlcnkgdGltZSBhdm9pZHMgYW4gZXh0cmEgbWV0aG9kIGNhbGwgbW9z
dCBvZiB0aGUgdGltZSwgcmVzdWx0aW5nXG4gICAgICAgIC8vIGluIHNvbWUgcGVyZiBib29zdC5c
biAgICAgICAgdGhpcy5jb21wb25lbnREaWRVcGRhdGUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRo
aXMubm90aWZ5TmVzdGVkU3VicygpO1xuICAgICAgfTtcblxuICAgICAgQ29ubmVjdC5wcm90b3R5
cGUuaXNTdWJzY3JpYmVkID0gZnVuY3Rpb24gaXNTdWJzY3JpYmVkKCkge1xuICAgICAgICByZXR1
cm4gQm9vbGVhbih0aGlzLnN1YnNjcmlwdGlvbikgJiYgdGhpcy5zdWJzY3JpcHRpb24uaXNTdWJz
Y3JpYmVkKCk7XG4gICAgICB9O1xuXG4gICAgICBDb25uZWN0LnByb3RvdHlwZS5hZGRFeHRyYVBy
b3BzID0gZnVuY3Rpb24gYWRkRXh0cmFQcm9wcyhwcm9wcykge1xuICAgICAgICBpZiAoIXdpdGhS
ZWYgJiYgIXJlbmRlckNvdW50UHJvcCAmJiAhKHRoaXMucHJvcHNNb2RlICYmIHRoaXMuc3Vic2Ny
aXB0aW9uKSkgcmV0dXJuIHByb3BzO1xuICAgICAgICAvLyBtYWtlIGEgc2hhbGxvdyBjb3B5IHNv
IHRoYXQgZmllbGRzIGFkZGVkIGRvbid0IGxlYWsgdG8gdGhlIG9yaWdpbmFsIHNlbGVjdG9yLlxu
ICAgICAgICAvLyB0aGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50IGZvciAncmVmJyBzaW5jZSB0
aGF0J3MgYSByZWZlcmVuY2UgYmFjayB0byB0aGUgY29tcG9uZW50XG4gICAgICAgIC8vIGluc3Rh
bmNlLiBhIHNpbmdsZXRvbiBtZW1vaXplZCBzZWxlY3RvciB3b3VsZCB0aGVuIGJlIGhvbGRpbmcg
YSByZWZlcmVuY2UgdG8gdGhlXG4gICAgICAgIC8vIGluc3RhbmNlLCBwcmV2ZW50aW5nIHRoZSBp
bnN0YW5jZSBmcm9tIGJlaW5nIGdhcmJhZ2UgY29sbGVjdGVkLCBhbmQgdGhhdCB3b3VsZCBiZSBi
YWRcbiAgICAgICAgdmFyIHdpdGhFeHRyYXMgPSBfZXh0ZW5kcyh7fSwgcHJvcHMpO1xuICAgICAg
ICBpZiAod2l0aFJlZikgd2l0aEV4dHJhcy5yZWYgPSB0aGlzLnNldFdyYXBwZWRJbnN0YW5jZTtc
biAgICAgICAgaWYgKHJlbmRlckNvdW50UHJvcCkgd2l0aEV4dHJhc1tyZW5kZXJDb3VudFByb3Bd
ID0gdGhpcy5yZW5kZXJDb3VudCsrO1xuICAgICAgICBpZiAodGhpcy5wcm9wc01vZGUgJiYgdGhp
cy5zdWJzY3JpcHRpb24pIHdpdGhFeHRyYXNbc3Vic2NyaXB0aW9uS2V5XSA9IHRoaXMuc3Vic2Ny
aXB0aW9uO1xuICAgICAgICByZXR1cm4gd2l0aEV4dHJhcztcbiAgICAgIH07XG5cbiAgICAgIENv
bm5lY3QucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcigpIHtcbiAgICAgICAgdmFy
IHNlbGVjdG9yID0gdGhpcy5zZWxlY3RvcjtcbiAgICAgICAgc2VsZWN0b3Iuc2hvdWxkQ29tcG9u
ZW50VXBkYXRlID0gZmFsc2U7XG5cbiAgICAgICAgaWYgKHNlbGVjdG9yLmVycm9yKSB7XG4gICAg
ICAgICAgdGhyb3cgc2VsZWN0b3IuZXJyb3I7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAg
cmV0dXJuICgwLCBfcmVhY3QuY3JlYXRlRWxlbWVudCkoV3JhcHBlZENvbXBvbmVudCwgdGhpcy5h
ZGRFeHRyYVByb3BzKHNlbGVjdG9yLnByb3BzKSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAg
ICAgIHJldHVybiBDb25uZWN0O1xuICAgIH0oX3JlYWN0LkNvbXBvbmVudCk7XG5cbiAgICBDb25u
ZWN0LldyYXBwZWRDb21wb25lbnQgPSBXcmFwcGVkQ29tcG9uZW50O1xuICAgIENvbm5lY3QuZGlz
cGxheU5hbWUgPSBkaXNwbGF5TmFtZTtcbiAgICBDb25uZWN0LmNoaWxkQ29udGV4dFR5cGVzID0g
Y2hpbGRDb250ZXh0VHlwZXM7XG4gICAgQ29ubmVjdC5jb250ZXh0VHlwZXMgPSBjb250ZXh0VHlw
ZXM7XG4gICAgQ29ubmVjdC5wcm9wVHlwZXMgPSBjb250ZXh0VHlwZXM7XG5cbiAgICBpZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgQ29ubmVjdC5wcm90
b3R5cGUuY29tcG9uZW50V2lsbFVwZGF0ZSA9IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVcGRhdGUo
KSB7XG4gICAgICAgIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gICAgICAgIC8vIFdlIGFyZSBob3Qg
cmVsb2FkaW5nIVxuICAgICAgICBpZiAodGhpcy52ZXJzaW9uICE9PSB2ZXJzaW9uKSB7XG4gICAg
ICAgICAgdGhpcy52ZXJzaW9uID0gdmVyc2lvbjtcbiAgICAgICAgICB0aGlzLmluaXRTZWxlY3Rv
cigpO1xuXG4gICAgICAgICAgLy8gSWYgYW55IGNvbm5lY3RlZCBkZXNjZW5kYW50cyBkb24ndCBo
b3QgcmVsb2FkIChhbmQgcmVzdWJzY3JpYmUgaW4gdGhlIHByb2Nlc3MpLCB0aGVpclxuICAgICAg
ICAgIC8vIGxpc3RlbmVycyB3aWxsIGJlIGxvc3Qgd2hlbiB3ZSB1bnN1YnNjcmliZS4gVW5mb3J0
dW5hdGVseSwgYnkgY29weWluZyBvdmVyIGFsbFxuICAgICAgICAgIC8vIGxpc3RlbmVycywgdGhp
cyBkb2VzIG1lYW4gdGhhdCB0aGUgb2xkIHZlcnNpb25zIG9mIGNvbm5lY3RlZCBkZXNjZW5kYW50
cyB3aWxsIHN0aWxsIGJlXG4gICAgICAgICAgLy8gbm90aWZpZWQgb2Ygc3RhdGUgY2hhbmdlczsg
aG93ZXZlciwgdGhlaXIgb25TdGF0ZUNoYW5nZSBmdW5jdGlvbiBpcyBhIG5vLW9wIHNvIHRoaXNc
biAgICAgICAgICAvLyBpc24ndCBhIGh1Z2UgZGVhbC5cbiAgICAgICAgICB2YXIgb2xkTGlzdGVu
ZXJzID0gW107XG5cbiAgICAgICAgICBpZiAodGhpcy5zdWJzY3JpcHRpb24pIHtcbiAgICAgICAg
ICAgIG9sZExpc3RlbmVycyA9IHRoaXMuc3Vic2NyaXB0aW9uLmxpc3RlbmVycy5nZXQoKTtcbiAg
ICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnRyeVVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAg
fVxuICAgICAgICAgIHRoaXMuaW5pdFN1YnNjcmlwdGlvbigpO1xuICAgICAgICAgIGlmIChzaG91
bGRIYW5kbGVTdGF0ZUNoYW5nZXMpIHtcbiAgICAgICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uLnRy
eVN1YnNjcmliZSgpO1xuICAgICAgICAgICAgb2xkTGlzdGVuZXJzLmZvckVhY2goZnVuY3Rpb24g
KGxpc3RlbmVyKSB7XG4gICAgICAgICAgICAgIHJldHVybiBfdGhpczIuc3Vic2NyaXB0aW9uLmxp
c3RlbmVycy5zdWJzY3JpYmUobGlzdGVuZXIpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAg
fVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiAoMCwgX2hvaXN0Tm9u
UmVhY3RTdGF0aWNzMi5kZWZhdWx0KShDb25uZWN0LCBXcmFwcGVkQ29tcG9uZW50KTtcbiAgfTtc
bn1cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9y
ZWFjdC1yZWR1eC9saWIvY29tcG9uZW50cy9jb25uZWN0QWR2YW5jZWQuanNcbiAqKiBtb2R1bGUg
aWQgPSA3OVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG5l
eHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy53cmFwTWFwVG9Qcm9wc0NvbnN0YW50
ID0gd3JhcE1hcFRvUHJvcHNDb25zdGFudDtcbmV4cG9ydHMuZ2V0RGVwZW5kc09uT3duUHJvcHMg
PSBnZXREZXBlbmRzT25Pd25Qcm9wcztcbmV4cG9ydHMud3JhcE1hcFRvUHJvcHNGdW5jID0gd3Jh
cE1hcFRvUHJvcHNGdW5jO1xuXG52YXIgX3ZlcmlmeVBsYWluT2JqZWN0ID0gcmVxdWlyZSgnLi4v
dXRpbHMvdmVyaWZ5UGxhaW5PYmplY3QnKTtcblxudmFyIF92ZXJpZnlQbGFpbk9iamVjdDIgPSBf
aW50ZXJvcFJlcXVpcmVEZWZhdWx0KF92ZXJpZnlQbGFpbk9iamVjdCk7XG5cbmZ1bmN0aW9uIF9p
bnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUg
PyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIHdyYXBNYXBUb1Byb3BzQ29u
c3RhbnQoZ2V0Q29uc3RhbnQpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIGluaXRDb25zdGFudFNlbGVj
dG9yKGRpc3BhdGNoLCBvcHRpb25zKSB7XG4gICAgdmFyIGNvbnN0YW50ID0gZ2V0Q29uc3RhbnQo
ZGlzcGF0Y2gsIG9wdGlvbnMpO1xuXG4gICAgZnVuY3Rpb24gY29uc3RhbnRTZWxlY3RvcigpIHtc
biAgICAgIHJldHVybiBjb25zdGFudDtcbiAgICB9XG4gICAgY29uc3RhbnRTZWxlY3Rvci5kZXBl
bmRzT25Pd25Qcm9wcyA9IGZhbHNlO1xuICAgIHJldHVybiBjb25zdGFudFNlbGVjdG9yO1xuICB9
O1xufVxuXG4vLyBkZXBlbmRzT25Pd25Qcm9wcyBpcyB1c2VkIGJ5IGNyZWF0ZU1hcFRvUHJvcHNQ
cm94eSB0byBkZXRlcm1pbmUgd2hldGhlciB0byBwYXNzIHByb3BzIGFzIGFyZ3Ncbi8vIHRvIHRo
ZSBtYXBUb1Byb3BzIGZ1bmN0aW9uIGJlaW5nIHdyYXBwZWQuIEl0IGlzIGFsc28gdXNlZCBieSBt
YWtlUHVyZVByb3BzU2VsZWN0b3IgdG8gZGV0ZXJtaW5lXG4vLyB3aGV0aGVyIG1hcFRvUHJvcHMg
bmVlZHMgdG8gYmUgaW52b2tlZCB3aGVuIHByb3BzIGhhdmUgY2hhbmdlZC5cbi8vIFxuLy8gQSBs
ZW5ndGggb2Ygb25lIHNpZ25hbHMgdGhhdCBtYXBUb1Byb3BzIGRvZXMgbm90IGRlcGVuZCBvbiBw
cm9wcyBmcm9tIHRoZSBwYXJlbnQgY29tcG9uZW50LlxuLy8gQSBsZW5ndGggb2YgemVybyBpcyBh
c3N1bWVkIHRvIG1lYW4gbWFwVG9Qcm9wcyBpcyBnZXR0aW5nIGFyZ3MgdmlhIGFyZ3VtZW50cyBv
ciAuLi5hcmdzIGFuZFxuLy8gdGhlcmVmb3JlIG5vdCByZXBvcnRpbmcgaXRzIGxlbmd0aCBhY2N1
cmF0ZWx5Li5cbmZ1bmN0aW9uIGdldERlcGVuZHNPbk93blByb3BzKG1hcFRvUHJvcHMpIHtcbiAg
cmV0dXJuIG1hcFRvUHJvcHMuZGVwZW5kc09uT3duUHJvcHMgIT09IG51bGwgJiYgbWFwVG9Qcm9w
cy5kZXBlbmRzT25Pd25Qcm9wcyAhPT0gdW5kZWZpbmVkID8gQm9vbGVhbihtYXBUb1Byb3BzLmRl
cGVuZHNPbk93blByb3BzKSA6IG1hcFRvUHJvcHMubGVuZ3RoICE9PSAxO1xufVxuXG4vLyBVc2Vk
IGJ5IHdoZW5NYXBTdGF0ZVRvUHJvcHNJc0Z1bmN0aW9uIGFuZCB3aGVuTWFwRGlzcGF0Y2hUb1By
b3BzSXNGdW5jdGlvbixcbi8vIHRoaXMgZnVuY3Rpb24gd3JhcHMgbWFwVG9Qcm9wcyBpbiBhIHBy
b3h5IGZ1bmN0aW9uIHdoaWNoIGRvZXMgc2V2ZXJhbCB0aGluZ3M6XG4vLyBcbi8vICAqIERldGVj
dHMgd2hldGhlciB0aGUgbWFwVG9Qcm9wcyBmdW5jdGlvbiBiZWluZyBjYWxsZWQgZGVwZW5kcyBv
biBwcm9wcywgd2hpY2hcbi8vICAgIGlzIHVzZWQgYnkgc2VsZWN0b3JGYWN0b3J5IHRvIGRlY2lk
ZSBpZiBpdCBzaG91bGQgcmVpbnZva2Ugb24gcHJvcHMgY2hhbmdlcy5cbi8vICAgIFxuLy8gICog
T24gZmlyc3QgY2FsbCwgaGFuZGxlcyBtYXBUb1Byb3BzIGlmIHJldHVybnMgYW5vdGhlciBmdW5j
dGlvbiwgYW5kIHRyZWF0cyB0aGF0XG4vLyAgICBuZXcgZnVuY3Rpb24gYXMgdGhlIHRydWUgbWFw
VG9Qcm9wcyBmb3Igc3Vic2VxdWVudCBjYWxscy5cbi8vICAgIFxuLy8gICogT24gZmlyc3QgY2Fs
bCwgdmVyaWZpZXMgdGhlIGZpcnN0IHJlc3VsdCBpcyBhIHBsYWluIG9iamVjdCwgaW4gb3JkZXIg
dG8gd2FyblxuLy8gICAgdGhlIGRldmVsb3BlciB0aGF0IHRoZWlyIG1hcFRvUHJvcHMgZnVuY3Rp
b24gaXMgbm90IHJldHVybmluZyBhIHZhbGlkIHJlc3VsdC5cbi8vICAgIFxuZnVuY3Rpb24gd3Jh
cE1hcFRvUHJvcHNGdW5jKG1hcFRvUHJvcHMsIG1ldGhvZE5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0
aW9uIGluaXRQcm94eVNlbGVjdG9yKGRpc3BhdGNoLCBfcmVmKSB7XG4gICAgdmFyIGRpc3BsYXlO
YW1lID0gX3JlZi5kaXNwbGF5TmFtZTtcblxuICAgIHZhciBwcm94eSA9IGZ1bmN0aW9uIG1hcFRv
UHJvcHNQcm94eShzdGF0ZU9yRGlzcGF0Y2gsIG93blByb3BzKSB7XG4gICAgICByZXR1cm4gcHJv
eHkuZGVwZW5kc09uT3duUHJvcHMgPyBwcm94eS5tYXBUb1Byb3BzKHN0YXRlT3JEaXNwYXRjaCwg
b3duUHJvcHMpIDogcHJveHkubWFwVG9Qcm9wcyhzdGF0ZU9yRGlzcGF0Y2gpO1xuICAgIH07XG5c
biAgICAvLyBhbGxvdyBkZXRlY3RGYWN0b3J5QW5kVmVyaWZ5IHRvIGdldCBvd25Qcm9wc1xuICAg
IHByb3h5LmRlcGVuZHNPbk93blByb3BzID0gdHJ1ZTtcblxuICAgIHByb3h5Lm1hcFRvUHJvcHMg
PSBmdW5jdGlvbiBkZXRlY3RGYWN0b3J5QW5kVmVyaWZ5KHN0YXRlT3JEaXNwYXRjaCwgb3duUHJv
cHMpIHtcbiAgICAgIHByb3h5Lm1hcFRvUHJvcHMgPSBtYXBUb1Byb3BzO1xuICAgICAgcHJveHku
ZGVwZW5kc09uT3duUHJvcHMgPSBnZXREZXBlbmRzT25Pd25Qcm9wcyhtYXBUb1Byb3BzKTtcbiAg
ICAgIHZhciBwcm9wcyA9IHByb3h5KHN0YXRlT3JEaXNwYXRjaCwgb3duUHJvcHMpO1xuXG4gICAg
ICBpZiAodHlwZW9mIHByb3BzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHByb3h5Lm1hcFRv
UHJvcHMgPSBwcm9wcztcbiAgICAgICAgcHJveHkuZGVwZW5kc09uT3duUHJvcHMgPSBnZXREZXBl
bmRzT25Pd25Qcm9wcyhwcm9wcyk7XG4gICAgICAgIHByb3BzID0gcHJveHkoc3RhdGVPckRpc3Bh
dGNoLCBvd25Qcm9wcyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nKSAoMCwgX3ZlcmlmeVBsYWluT2JqZWN0Mi5kZWZhdWx0KShwcm9w
cywgZGlzcGxheU5hbWUsIG1ldGhvZE5hbWUpO1xuXG4gICAgICByZXR1cm4gcHJvcHM7XG4gICAg
fTtcblxuICAgIHJldHVybiBwcm94eTtcbiAgfTtcbn1cblxuXG4vKioqKioqKioqKioqKioqKipc
biAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1yZWR1eC9saWIvY29ubmVjdC93cmFw
TWFwVG9Qcm9wcy5qc1xuICoqIG1vZHVsZSBpZCA9IDgwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBc
biAqKi8iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBv
cnRzLmNvbm5lY3QgPSBleHBvcnRzLmNvbm5lY3RBZHZhbmNlZCA9IGV4cG9ydHMuY3JlYXRlUHJv
dmlkZXIgPSBleHBvcnRzLlByb3ZpZGVyID0gdW5kZWZpbmVkO1xuXG52YXIgX1Byb3ZpZGVyID0g
cmVxdWlyZSgnLi9jb21wb25lbnRzL1Byb3ZpZGVyJyk7XG5cbnZhciBfUHJvdmlkZXIyID0gX2lu
dGVyb3BSZXF1aXJlRGVmYXVsdChfUHJvdmlkZXIpO1xuXG52YXIgX2Nvbm5lY3RBZHZhbmNlZCA9
IHJlcXVpcmUoJy4vY29tcG9uZW50cy9jb25uZWN0QWR2YW5jZWQnKTtcblxudmFyIF9jb25uZWN0
QWR2YW5jZWQyID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfY29ubmVjdEFkdmFuY2VkKTtcblxu
dmFyIF9jb25uZWN0ID0gcmVxdWlyZSgnLi9jb25uZWN0L2Nvbm5lY3QnKTtcblxudmFyIF9jb25u
ZWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Nvbm5lY3QpO1xuXG5mdW5jdGlvbiBfaW50
ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8g
b2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5leHBvcnRzLlByb3ZpZGVyID0gX1Byb3ZpZGVy
Mi5kZWZhdWx0O1xuZXhwb3J0cy5jcmVhdGVQcm92aWRlciA9IF9Qcm92aWRlci5jcmVhdGVQcm92
aWRlcjtcbmV4cG9ydHMuY29ubmVjdEFkdmFuY2VkID0gX2Nvbm5lY3RBZHZhbmNlZDIuZGVmYXVs
dDtcbmV4cG9ydHMuY29ubmVjdCA9IF9jb25uZWN0Mi5kZWZhdWx0O1xuXG5cbi8qKioqKioqKioq
KioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LXJlZHV4L2xpYi9pbmRl
eC5qc1xuICoqIG1vZHVsZSBpZCA9IDgxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIn
dXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLnN0b3Jl
U2hhcGUgPSBleHBvcnRzLnN1YnNjcmlwdGlvblNoYXBlID0gdW5kZWZpbmVkO1xuXG52YXIgX3By
b3BUeXBlcyA9IHJlcXVpcmUoJ3Byb3AtdHlwZXMnKTtcblxudmFyIF9wcm9wVHlwZXMyID0gX2lu
dGVyb3BSZXF1aXJlRGVmYXVsdChfcHJvcFR5cGVzKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1
aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsg
ZGVmYXVsdDogb2JqIH07IH1cblxudmFyIHN1YnNjcmlwdGlvblNoYXBlID0gZXhwb3J0cy5zdWJz
Y3JpcHRpb25TaGFwZSA9IF9wcm9wVHlwZXMyLmRlZmF1bHQuc2hhcGUoe1xuICB0cnlTdWJzY3Jp
YmU6IF9wcm9wVHlwZXMyLmRlZmF1bHQuZnVuYy5pc1JlcXVpcmVkLFxuICB0cnlVbnN1YnNjcmli
ZTogX3Byb3BUeXBlczIuZGVmYXVsdC5mdW5jLmlzUmVxdWlyZWQsXG4gIG5vdGlmeU5lc3RlZFN1
YnM6IF9wcm9wVHlwZXMyLmRlZmF1bHQuZnVuYy5pc1JlcXVpcmVkLFxuICBpc1N1YnNjcmliZWQ6
IF9wcm9wVHlwZXMyLmRlZmF1bHQuZnVuYy5pc1JlcXVpcmVkXG59KTtcblxudmFyIHN0b3JlU2hh
cGUgPSBleHBvcnRzLnN0b3JlU2hhcGUgPSBfcHJvcFR5cGVzMi5kZWZhdWx0LnNoYXBlKHtcbiAg
c3Vic2NyaWJlOiBfcHJvcFR5cGVzMi5kZWZhdWx0LmZ1bmMuaXNSZXF1aXJlZCxcbiAgZGlzcGF0
Y2g6IF9wcm9wVHlwZXMyLmRlZmF1bHQuZnVuYy5pc1JlcXVpcmVkLFxuICBnZXRTdGF0ZTogX3By
b3BUeXBlczIuZGVmYXVsdC5mdW5jLmlzUmVxdWlyZWRcbn0pO1xuXG5cbi8qKioqKioqKioqKioq
KioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LXJlZHV4L2xpYi91dGlscy9Q
cm9wVHlwZXMuanNcbiAqKiBtb2R1bGUgaWQgPSA4MlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4g
KiovIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0
cy5kZWZhdWx0ID0gdmVyaWZ5UGxhaW5PYmplY3Q7XG5cbnZhciBfaXNQbGFpbk9iamVjdCA9IHJl
cXVpcmUoJ2xvZGFzaC9pc1BsYWluT2JqZWN0Jyk7XG5cbnZhciBfaXNQbGFpbk9iamVjdDIgPSBf
aW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9pc1BsYWluT2JqZWN0KTtcblxudmFyIF93YXJuaW5nID0g
cmVxdWlyZSgnLi93YXJuaW5nJyk7XG5cbnZhciBfd2FybmluZzIgPSBfaW50ZXJvcFJlcXVpcmVE
ZWZhdWx0KF93YXJuaW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmop
IHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07
IH1cblxuZnVuY3Rpb24gdmVyaWZ5UGxhaW5PYmplY3QodmFsdWUsIGRpc3BsYXlOYW1lLCBtZXRo
b2ROYW1lKSB7XG4gIGlmICghKDAsIF9pc1BsYWluT2JqZWN0Mi5kZWZhdWx0KSh2YWx1ZSkpIHtc
biAgICAoMCwgX3dhcm5pbmcyLmRlZmF1bHQpKG1ldGhvZE5hbWUgKyAnKCkgaW4gJyArIGRpc3Bs
YXlOYW1lICsgJyBtdXN0IHJldHVybiBhIHBsYWluIG9iamVjdC4gSW5zdGVhZCByZWNlaXZlZCAn
ICsgdmFsdWUgKyAnLicpO1xuICB9XG59XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VC
UEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtcmVkdXgvbGliL3V0aWxzL3ZlcmlmeVBsYWluT2Jq
ZWN0LmpzXG4gKiogbW9kdWxlIGlkID0gODNcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIs
ImltcG9ydCBSZWFjdCwgeyBDb21wb25lbnQsIFByb3BUeXBlcyB9IGZyb20gJ3JlYWN0J1xuaW1w
b3J0IGNsYXNzbmFtZXMgZnJvbSAnY2xhc3NuYW1lcydcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3Mg
VG9kb1RleHRJbnB1dCBleHRlbmRzIENvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7
XG4gICAgb25TYXZlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIHRleHQ6IFByb3BU
eXBlcy5zdHJpbmcsXG4gICAgcGxhY2Vob2xkZXI6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgZWRp
dGluZzogUHJvcFR5cGVzLmJvb2wsXG4gICAgbmV3VG9kbzogUHJvcFR5cGVzLmJvb2xcbiAgfVxu
XG4gIHN0YXRlID0ge1xuICAgIHRleHQ6IHRoaXMucHJvcHMudGV4dCB8fCAnJ1xuICB9XG5cbiAg
aGFuZGxlU3VibWl0ID0gZSA9PiB7XG4gICAgY29uc3QgdGV4dCA9IGUudGFyZ2V0LnZhbHVlLnRy
aW0oKVxuICAgIGlmIChlLndoaWNoID09PSAxMykge1xuICAgICAgdGhpcy5wcm9wcy5vblNhdmUo
dGV4dClcbiAgICAgIGlmICh0aGlzLnByb3BzLm5ld1RvZG8pIHtcbiAgICAgICAgdGhpcy5zZXRT
dGF0ZSh7IHRleHQ6ICcnIH0pXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaGFuZGxlQ2hhbmdl
ID0gZSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IHRleHQ6IGUudGFyZ2V0LnZhbHVlIH0pXG4g
IH1cblxuICBoYW5kbGVCbHVyID0gZSA9PiB7XG4gICAgaWYgKCF0aGlzLnByb3BzLm5ld1RvZG8p
IHtcbiAgICAgIHRoaXMucHJvcHMub25TYXZlKGUudGFyZ2V0LnZhbHVlKVxuICAgIH1cbiAgfVxu
XG4gIHJlbmRlcigpIHtcbiAgICByZXR1cm4gKFxuICAgICAgPGlucHV0IGNsYXNzTmFtZT17XG4g
ICAgICAgIGNsYXNzbmFtZXMoe1xuICAgICAgICAgIGVkaXQ6IHRoaXMucHJvcHMuZWRpdGluZyxc
biAgICAgICAgICAnbmV3LXRvZG8nOiB0aGlzLnByb3BzLm5ld1RvZG9cbiAgICAgICAgfSl9XG4g
ICAgICAgIHR5cGU9XCJ0ZXh0XCJcbiAgICAgICAgcGxhY2Vob2xkZXI9e3RoaXMucHJvcHMucGxh
Y2Vob2xkZXJ9XG4gICAgICAgIGF1dG9Gb2N1cz1cInRydWVcIlxuICAgICAgICB2YWx1ZT17dGhp
cy5zdGF0ZS50ZXh0fVxuICAgICAgICBvbkJsdXI9e3RoaXMuaGFuZGxlQmx1cn1cbiAgICAgICAg
b25DaGFuZ2U9e3RoaXMuaGFuZGxlQ2hhbmdlfVxuICAgICAgICBvbktleURvd249e3RoaXMuaGFu
ZGxlU3VibWl0fSAvPlxuICAgIClcbiAgfVxufVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoq
XG4gKiogLi9zcmMvY29tcG9uZW50cy9Ub2RvVGV4dElucHV0LmpzXG4gKiovIiwiZXhwb3J0IGNv
bnN0IEFERF9UT0RPID0gJ0FERF9UT0RPJ1xuZXhwb3J0IGNvbnN0IERFTEVURV9UT0RPID0gJ0RF
TEVURV9UT0RPJ1xuZXhwb3J0IGNvbnN0IEVESVRfVE9ETyA9ICdFRElUX1RPRE8nXG5leHBvcnQg
Y29uc3QgQ09NUExFVEVfVE9ETyA9ICdDT01QTEVURV9UT0RPJ1xuZXhwb3J0IGNvbnN0IENPTVBM
RVRFX0FMTCA9ICdDT01QTEVURV9BTEwnXG5leHBvcnQgY29uc3QgQ0xFQVJfQ09NUExFVEVEID0g
J0NMRUFSX0NPTVBMRVRFRCdcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4vc3Jj
L2NvbnN0YW50cy9BY3Rpb25UeXBlcy5qc1xuICoqLyIsImV4cG9ydCBjb25zdCBTSE9XX0FMTCA9
ICdzaG93X2FsbCdcbmV4cG9ydCBjb25zdCBTSE9XX0NPTVBMRVRFRCA9ICdzaG93X2NvbXBsZXRl
ZCdcbmV4cG9ydCBjb25zdCBTSE9XX0FDVElWRSA9ICdzaG93X2FjdGl2ZSdcblxuXG5cbi8qKiBX
RUJQQUNLIEZPT1RFUiAqKlxuICoqIC4vc3JjL2NvbnN0YW50cy9Ub2RvRmlsdGVycy5qc1xuICoq
LyIsIi8vIHNoaW0gZm9yIHVzaW5nIHByb2Nlc3MgaW4gYnJvd3NlclxudmFyIHByb2Nlc3MgPSBt
b2R1bGUuZXhwb3J0cyA9IHt9O1xuXG4vLyBjYWNoZWQgZnJvbSB3aGF0ZXZlciBnbG9iYWwgaXMg
cHJlc2VudCBzbyB0aGF0IHRlc3QgcnVubmVycyB0aGF0IHN0dWIgaXRcbi8vIGRvbid0IGJyZWFr
IHRoaW5ncy4gIEJ1dCB3ZSBuZWVkIHRvIHdyYXAgaXQgaW4gYSB0cnkgY2F0Y2ggaW4gY2FzZSBp
dCBpc1xuLy8gd3JhcHBlZCBpbiBzdHJpY3QgbW9kZSBjb2RlIHdoaWNoIGRvZXNuJ3QgZGVmaW5l
IGFueSBnbG9iYWxzLiAgSXQncyBpbnNpZGUgYVxuLy8gZnVuY3Rpb24gYmVjYXVzZSB0cnkvY2F0
Y2hlcyBkZW9wdGltaXplIGluIGNlcnRhaW4gZW5naW5lcy5cblxudmFyIGNhY2hlZFNldFRpbWVv
dXQ7XG52YXIgY2FjaGVkQ2xlYXJUaW1lb3V0O1xuXG5mdW5jdGlvbiBkZWZhdWx0U2V0VGltb3V0
KCkge1xuICAgIHRocm93IG5ldyBFcnJvcignc2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5l
ZCcpO1xufVxuZnVuY3Rpb24gZGVmYXVsdENsZWFyVGltZW91dCAoKSB7XG4gICAgdGhyb3cgbmV3
IEVycm9yKCdjbGVhclRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbihmdW5jdGlv
biAoKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgaWYgKHR5cGVvZiBzZXRUaW1lb3V0ID09PSAnZnVu
Y3Rpb24nKSB7XG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbiAg
ICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0
VGltb3V0O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjYWNoZWRTZXRU
aW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgaWYg
KHR5cGVvZiBjbGVhclRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hl
ZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAg
ICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRDbGVhclRpbWVvdXQ7XG4gICAgICAgIH1c
biAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGRlZmF1bHRD
bGVhclRpbWVvdXQ7XG4gICAgfVxufSAoKSlcbmZ1bmN0aW9uIHJ1blRpbWVvdXQoZnVuKSB7XG4g
ICAgaWYgKGNhY2hlZFNldFRpbWVvdXQgPT09IHNldFRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3Jt
YWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBzZXRUaW1l
b3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIC8vIGlmIHNldFRpbWVvdXQgd2Fzbid0IGF2YWlsYWJs
ZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRTZXRUaW1lb3V0ID09PSBk
ZWZhdWx0U2V0VGltb3V0IHx8ICFjYWNoZWRTZXRUaW1lb3V0KSAmJiBzZXRUaW1lb3V0KSB7XG4g
ICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICByZXR1cm4gc2V0
VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4g
c29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNz
XG4gICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfSBjYXRjaChl
KXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0
IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCB0cnVzdCB0aGUgZ2xv
YmFsIG9iamVjdCB3aGVuIGNhbGxlZCBub3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hl
ZFNldFRpbWVvdXQuY2FsbChudWxsLCBmdW4sIDApO1xuICAgICAgICB9IGNhdGNoKGUpe1xuICAg
ICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUu
IHRoYXQgbXVzdCBoYXZlIHRoZSBnbG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91
ciBjb250ZXh0IGNvcnJlY3Qgb3RoZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3Jc
biAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwodGhpcywgZnVuLCAwKTtc
biAgICAgICAgfVxuICAgIH1cblxuXG59XG5mdW5jdGlvbiBydW5DbGVhclRpbWVvdXQobWFya2Vy
KSB7XG4gICAgaWYgKGNhY2hlZENsZWFyVGltZW91dCA9PT0gY2xlYXJUaW1lb3V0KSB7XG4gICAg
ICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuICAgICAgICByZXR1
cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAgIC8vIGlmIGNsZWFyVGltZW91dCB3
YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZENs
ZWFyVGltZW91dCA9PT0gZGVmYXVsdENsZWFyVGltZW91dCB8fCAhY2FjaGVkQ2xlYXJUaW1lb3V0
KSAmJiBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJU
aW1lb3V0O1xuICAgICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfVxuICAg
IHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNl
dFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFy
VGltZW91dChtYXJrZXIpO1xuICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICB0cnkge1xuICAgICAg
ICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFs
ZWQgc28gSS5FLiBkb2Vzbid0ICB0cnVzdCB0aGUgZ2xvYmFsIG9iamVjdCB3aGVuIGNhbGxlZCBu
b3JtYWxseVxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKG51bGws
IG1hcmtlcik7XG4gICAgICAgIH0gY2F0Y2ggKGUpe1xuICAgICAgICAgICAgLy8gc2FtZSBhcyBh
Ym92ZSBidXQgd2hlbiBpdCdzIGEgdmVyc2lvbiBvZiBJLkUuIHRoYXQgbXVzdCBoYXZlIHRoZSBn
bG9iYWwgb2JqZWN0IGZvciAndGhpcycsIGhvcGZ1bGx5IG91ciBjb250ZXh0IGNvcnJlY3Qgb3Ro
ZXJ3aXNlIGl0IHdpbGwgdGhyb3cgYSBnbG9iYWwgZXJyb3IuXG4gICAgICAgICAgICAvLyBTb21l
IHZlcnNpb25zIG9mIEkuRS4gaGF2ZSBkaWZmZXJlbnQgcnVsZXMgZm9yIGNsZWFyVGltZW91dCB2
cyBzZXRUaW1lb3V0XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwo
dGhpcywgbWFya2VyKTtcbiAgICAgICAgfVxuICAgIH1cblxuXG5cbn1cbnZhciBxdWV1ZSA9IFtd
O1xudmFyIGRyYWluaW5nID0gZmFsc2U7XG52YXIgY3VycmVudFF1ZXVlO1xudmFyIHF1ZXVlSW5k
ZXggPSAtMTtcblxuZnVuY3Rpb24gY2xlYW5VcE5leHRUaWNrKCkge1xuICAgIGlmICghZHJhaW5p
bmcgfHwgIWN1cnJlbnRRdWV1ZSkge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIGRyYWlu
aW5nID0gZmFsc2U7XG4gICAgaWYgKGN1cnJlbnRRdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgcXVl
dWUgPSBjdXJyZW50UXVldWUuY29uY2F0KHF1ZXVlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgICBx
dWV1ZUluZGV4ID0gLTE7XG4gICAgfVxuICAgIGlmIChxdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAg
ZHJhaW5RdWV1ZSgpO1xuICAgIH1cbn1cblxuZnVuY3Rpb24gZHJhaW5RdWV1ZSgpIHtcbiAgICBp
ZiAoZHJhaW5pbmcpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgdGltZW91dCA9
IHJ1blRpbWVvdXQoY2xlYW5VcE5leHRUaWNrKTtcbiAgICBkcmFpbmluZyA9IHRydWU7XG5cbiAg
ICB2YXIgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIHdoaWxlKGxlbikge1xuICAgICAgICBjdXJy
ZW50UXVldWUgPSBxdWV1ZTtcbiAgICAgICAgcXVldWUgPSBbXTtcbiAgICAgICAgd2hpbGUgKCsr
cXVldWVJbmRleCA8IGxlbikge1xuICAgICAgICAgICAgaWYgKGN1cnJlbnRRdWV1ZSkge1xuICAg
ICAgICAgICAgICAgIGN1cnJlbnRRdWV1ZVtxdWV1ZUluZGV4XS5ydW4oKTtcbiAgICAgICAgICAg
IH1cbiAgICAgICAgfVxuICAgICAgICBxdWV1ZUluZGV4ID0gLTE7XG4gICAgICAgIGxlbiA9IHF1
ZXVlLmxlbmd0aDtcbiAgICB9XG4gICAgY3VycmVudFF1ZXVlID0gbnVsbDtcbiAgICBkcmFpbmlu
ZyA9IGZhbHNlO1xuICAgIHJ1bkNsZWFyVGltZW91dCh0aW1lb3V0KTtcbn1cblxucHJvY2Vzcy5u
ZXh0VGljayA9IGZ1bmN0aW9uIChmdW4pIHtcbiAgICB2YXIgYXJncyA9IG5ldyBBcnJheShhcmd1
bWVudHMubGVuZ3RoIC0gMSk7XG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPiAxKSB7XG4gICAg
ICAgIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAg
ICAgICBhcmdzW2kgLSAxXSA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBx
dWV1ZS5wdXNoKG5ldyBJdGVtKGZ1biwgYXJncykpO1xuICAgIGlmIChxdWV1ZS5sZW5ndGggPT09
IDEgJiYgIWRyYWluaW5nKSB7XG4gICAgICAgIHJ1blRpbWVvdXQoZHJhaW5RdWV1ZSk7XG4gICAg
fVxufTtcblxuLy8gdjggbGlrZXMgcHJlZGljdGlibGUgb2JqZWN0c1xuZnVuY3Rpb24gSXRlbShm
dW4sIGFycmF5KSB7XG4gICAgdGhpcy5mdW4gPSBmdW47XG4gICAgdGhpcy5hcnJheSA9IGFycmF5
O1xufVxuSXRlbS5wcm90b3R5cGUucnVuID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuZnVuLmFw
cGx5KG51bGwsIHRoaXMuYXJyYXkpO1xufTtcbnByb2Nlc3MudGl0bGUgPSAnYnJvd3Nlcic7XG5w
cm9jZXNzLmJyb3dzZXIgPSB0cnVlO1xucHJvY2Vzcy5lbnYgPSB7fTtcbnByb2Nlc3MuYXJndiA9
IFtdO1xucHJvY2Vzcy52ZXJzaW9uID0gJyc7IC8vIGVtcHR5IHN0cmluZyB0byBhdm9pZCByZWdl
eHAgaXNzdWVzXG5wcm9jZXNzLnZlcnNpb25zID0ge307XG5cbmZ1bmN0aW9uIG5vb3AoKSB7fVxu
XG5wcm9jZXNzLm9uID0gbm9vcDtcbnByb2Nlc3MuYWRkTGlzdGVuZXIgPSBub29wO1xucHJvY2Vz
cy5vbmNlID0gbm9vcDtcbnByb2Nlc3Mub2ZmID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlTGlzdGVu
ZXIgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVBbGxMaXN0ZW5lcnMgPSBub29wO1xucHJvY2Vzcy5l
bWl0ID0gbm9vcDtcblxucHJvY2Vzcy5iaW5kaW5nID0gZnVuY3Rpb24gKG5hbWUpIHtcbiAgICB0
aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuYmluZGluZyBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xu
XG5wcm9jZXNzLmN3ZCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICcvJyB9O1xucHJvY2Vzcy5jaGRp
ciA9IGZ1bmN0aW9uIChkaXIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3Byb2Nlc3MuY2hkaXIg
aXMgbm90IHN1cHBvcnRlZCcpO1xufTtcbnByb2Nlc3MudW1hc2sgPSBmdW5jdGlvbigpIHsgcmV0
dXJuIDA7IH07XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxu
ICoqIC4vfi9yZWFjdC1zY3JpcHRzL34vcHJvY2Vzcy9icm93c2VyLmpzXG4gKiogbW9kdWxlIGlk
ID0gODdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0JztcblxudmFy
IGFzYXAgPSByZXF1aXJlKCdhc2FwL3JhdycpO1xuXG5mdW5jdGlvbiBub29wKCkge31cblxuLy8g
U3RhdGVzOlxuLy9cbi8vIDAgLSBwZW5kaW5nXG4vLyAxIC0gZnVsZmlsbGVkIHdpdGggX3ZhbHVl
XG4vLyAyIC0gcmVqZWN0ZWQgd2l0aCBfdmFsdWVcbi8vIDMgLSBhZG9wdGVkIHRoZSBzdGF0ZSBv
ZiBhbm90aGVyIHByb21pc2UsIF92YWx1ZVxuLy9cbi8vIG9uY2UgdGhlIHN0YXRlIGlzIG5vIGxv
bmdlciBwZW5kaW5nICgwKSBpdCBpcyBpbW11dGFibGVcblxuLy8gQWxsIGBfYCBwcmVmaXhlZCBw
cm9wZXJ0aWVzIHdpbGwgYmUgcmVkdWNlZCB0byBgX3tyYW5kb20gbnVtYmVyfWBcbi8vIGF0IGJ1
aWxkIHRpbWUgdG8gb2JmdXNjYXRlIHRoZW0gYW5kIGRpc2NvdXJhZ2UgdGhlaXIgdXNlLlxuLy8g
V2UgZG9uJ3QgdXNlIHN5bWJvbHMgb3IgT2JqZWN0LmRlZmluZVByb3BlcnR5IHRvIGZ1bGx5IGhp
ZGUgdGhlbVxuLy8gYmVjYXVzZSB0aGUgcGVyZm9ybWFuY2UgaXNuJ3QgZ29vZCBlbm91Z2guXG5c
blxuLy8gdG8gYXZvaWQgdXNpbmcgdHJ5L2NhdGNoIGluc2lkZSBjcml0aWNhbCBmdW5jdGlvbnMs
IHdlXG4vLyBleHRyYWN0IHRoZW0gdG8gaGVyZS5cbnZhciBMQVNUX0VSUk9SID0gbnVsbDtcbnZh
ciBJU19FUlJPUiA9IHt9O1xuZnVuY3Rpb24gZ2V0VGhlbihvYmopIHtcbiAgdHJ5IHtcbiAgICBy
ZXR1cm4gb2JqLnRoZW47XG4gIH0gY2F0Y2ggKGV4KSB7XG4gICAgTEFTVF9FUlJPUiA9IGV4O1xu
ICAgIHJldHVybiBJU19FUlJPUjtcbiAgfVxufVxuXG5mdW5jdGlvbiB0cnlDYWxsT25lKGZuLCBh
KSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGZuKGEpO1xuICB9IGNhdGNoIChleCkge1xuICAgIExB
U1RfRVJST1IgPSBleDtcbiAgICByZXR1cm4gSVNfRVJST1I7XG4gIH1cbn1cbmZ1bmN0aW9uIHRy
eUNhbGxUd28oZm4sIGEsIGIpIHtcbiAgdHJ5IHtcbiAgICBmbihhLCBiKTtcbiAgfSBjYXRjaCAo
ZXgpIHtcbiAgICBMQVNUX0VSUk9SID0gZXg7XG4gICAgcmV0dXJuIElTX0VSUk9SO1xuICB9XG59
XG5cbm1vZHVsZS5leHBvcnRzID0gUHJvbWlzZTtcblxuZnVuY3Rpb24gUHJvbWlzZShmbikge1xu
ICBpZiAodHlwZW9mIHRoaXMgIT09ICdvYmplY3QnKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJv
cignUHJvbWlzZXMgbXVzdCBiZSBjb25zdHJ1Y3RlZCB2aWEgbmV3Jyk7XG4gIH1cbiAgaWYgKHR5
cGVvZiBmbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ25vdCBh
IGZ1bmN0aW9uJyk7XG4gIH1cbiAgdGhpcy5fNDUgPSAwO1xuICB0aGlzLl84MSA9IDA7XG4gIHRo
aXMuXzY1ID0gbnVsbDtcbiAgdGhpcy5fNTQgPSBudWxsO1xuICBpZiAoZm4gPT09IG5vb3ApIHJl
dHVybjtcbiAgZG9SZXNvbHZlKGZuLCB0aGlzKTtcbn1cblByb21pc2UuXzEwID0gbnVsbDtcblBy
b21pc2UuXzk3ID0gbnVsbDtcblByb21pc2UuXzYxID0gbm9vcDtcblxuUHJvbWlzZS5wcm90b3R5
cGUudGhlbiA9IGZ1bmN0aW9uKG9uRnVsZmlsbGVkLCBvblJlamVjdGVkKSB7XG4gIGlmICh0aGlz
LmNvbnN0cnVjdG9yICE9PSBQcm9taXNlKSB7XG4gICAgcmV0dXJuIHNhZmVUaGVuKHRoaXMsIG9u
RnVsZmlsbGVkLCBvblJlamVjdGVkKTtcbiAgfVxuICB2YXIgcmVzID0gbmV3IFByb21pc2Uobm9v
cCk7XG4gIGhhbmRsZSh0aGlzLCBuZXcgSGFuZGxlcihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCwg
cmVzKSk7XG4gIHJldHVybiByZXM7XG59O1xuXG5mdW5jdGlvbiBzYWZlVGhlbihzZWxmLCBvbkZ1
bGZpbGxlZCwgb25SZWplY3RlZCkge1xuICByZXR1cm4gbmV3IHNlbGYuY29uc3RydWN0b3IoZnVu
Y3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHZhciByZXMgPSBuZXcgUHJvbWlzZShub29w
KTtcbiAgICByZXMudGhlbihyZXNvbHZlLCByZWplY3QpO1xuICAgIGhhbmRsZShzZWxmLCBuZXcg
SGFuZGxlcihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCwgcmVzKSk7XG4gIH0pO1xufTtcbmZ1bmN0
aW9uIGhhbmRsZShzZWxmLCBkZWZlcnJlZCkge1xuICB3aGlsZSAoc2VsZi5fODEgPT09IDMpIHtc
biAgICBzZWxmID0gc2VsZi5fNjU7XG4gIH1cbiAgaWYgKFByb21pc2UuXzEwKSB7XG4gICAgUHJv
bWlzZS5fMTAoc2VsZik7XG4gIH1cbiAgaWYgKHNlbGYuXzgxID09PSAwKSB7XG4gICAgaWYgKHNl
bGYuXzQ1ID09PSAwKSB7XG4gICAgICBzZWxmLl80NSA9IDE7XG4gICAgICBzZWxmLl81NCA9IGRl
ZmVycmVkO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoc2VsZi5fNDUgPT09IDEpIHtc
biAgICAgIHNlbGYuXzQ1ID0gMjtcbiAgICAgIHNlbGYuXzU0ID0gW3NlbGYuXzU0LCBkZWZlcnJl
ZF07XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHNlbGYuXzU0LnB1c2goZGVmZXJyZWQpO1xu
ICAgIHJldHVybjtcbiAgfVxuICBoYW5kbGVSZXNvbHZlZChzZWxmLCBkZWZlcnJlZCk7XG59XG5c
bmZ1bmN0aW9uIGhhbmRsZVJlc29sdmVkKHNlbGYsIGRlZmVycmVkKSB7XG4gIGFzYXAoZnVuY3Rp
b24oKSB7XG4gICAgdmFyIGNiID0gc2VsZi5fODEgPT09IDEgPyBkZWZlcnJlZC5vbkZ1bGZpbGxl
ZCA6IGRlZmVycmVkLm9uUmVqZWN0ZWQ7XG4gICAgaWYgKGNiID09PSBudWxsKSB7XG4gICAgICBp
ZiAoc2VsZi5fODEgPT09IDEpIHtcbiAgICAgICAgcmVzb2x2ZShkZWZlcnJlZC5wcm9taXNlLCBz
ZWxmLl82NSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZWplY3QoZGVmZXJyZWQucHJvbWlz
ZSwgc2VsZi5fNjUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgcmV0
ID0gdHJ5Q2FsbE9uZShjYiwgc2VsZi5fNjUpO1xuICAgIGlmIChyZXQgPT09IElTX0VSUk9SKSB7
XG4gICAgICByZWplY3QoZGVmZXJyZWQucHJvbWlzZSwgTEFTVF9FUlJPUik7XG4gICAgfSBlbHNl
IHtcbiAgICAgIHJlc29sdmUoZGVmZXJyZWQucHJvbWlzZSwgcmV0KTtcbiAgICB9XG4gIH0pO1xu
fVxuZnVuY3Rpb24gcmVzb2x2ZShzZWxmLCBuZXdWYWx1ZSkge1xuICAvLyBQcm9taXNlIFJlc29s
dXRpb24gUHJvY2VkdXJlOiBodHRwczovL2dpdGh1Yi5jb20vcHJvbWlzZXMtYXBsdXMvcHJvbWlz
ZXMtc3BlYyN0aGUtcHJvbWlzZS1yZXNvbHV0aW9uLXByb2NlZHVyZVxuICBpZiAobmV3VmFsdWUg
PT09IHNlbGYpIHtcbiAgICByZXR1cm4gcmVqZWN0KFxuICAgICAgc2VsZixcbiAgICAgIG5ldyBU
eXBlRXJyb3IoJ0EgcHJvbWlzZSBjYW5ub3QgYmUgcmVzb2x2ZWQgd2l0aCBpdHNlbGYuJylcbiAg
ICApO1xuICB9XG4gIGlmIChcbiAgICBuZXdWYWx1ZSAmJlxuICAgICh0eXBlb2YgbmV3VmFsdWUg
PT09ICdvYmplY3QnIHx8IHR5cGVvZiBuZXdWYWx1ZSA9PT0gJ2Z1bmN0aW9uJylcbiAgKSB7XG4g
ICAgdmFyIHRoZW4gPSBnZXRUaGVuKG5ld1ZhbHVlKTtcbiAgICBpZiAodGhlbiA9PT0gSVNfRVJS
T1IpIHtcbiAgICAgIHJldHVybiByZWplY3Qoc2VsZiwgTEFTVF9FUlJPUik7XG4gICAgfVxuICAg
IGlmIChcbiAgICAgIHRoZW4gPT09IHNlbGYudGhlbiAmJlxuICAgICAgbmV3VmFsdWUgaW5zdGFu
Y2VvZiBQcm9taXNlXG4gICAgKSB7XG4gICAgICBzZWxmLl84MSA9IDM7XG4gICAgICBzZWxmLl82
NSA9IG5ld1ZhbHVlO1xuICAgICAgZmluYWxlKHNlbGYpO1xuICAgICAgcmV0dXJuO1xuICAgIH0g
ZWxzZSBpZiAodHlwZW9mIHRoZW4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGRvUmVzb2x2ZSh0
aGVuLmJpbmQobmV3VmFsdWUpLCBzZWxmKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cbiAg
c2VsZi5fODEgPSAxO1xuICBzZWxmLl82NSA9IG5ld1ZhbHVlO1xuICBmaW5hbGUoc2VsZik7XG59
XG5cbmZ1bmN0aW9uIHJlamVjdChzZWxmLCBuZXdWYWx1ZSkge1xuICBzZWxmLl84MSA9IDI7XG4g
IHNlbGYuXzY1ID0gbmV3VmFsdWU7XG4gIGlmIChQcm9taXNlLl85Nykge1xuICAgIFByb21pc2Uu
Xzk3KHNlbGYsIG5ld1ZhbHVlKTtcbiAgfVxuICBmaW5hbGUoc2VsZik7XG59XG5mdW5jdGlvbiBm
aW5hbGUoc2VsZikge1xuICBpZiAoc2VsZi5fNDUgPT09IDEpIHtcbiAgICBoYW5kbGUoc2VsZiwg
c2VsZi5fNTQpO1xuICAgIHNlbGYuXzU0ID0gbnVsbDtcbiAgfVxuICBpZiAoc2VsZi5fNDUgPT09
IDIpIHtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNlbGYuXzU0Lmxlbmd0aDsgaSsrKSB7XG4g
ICAgICBoYW5kbGUoc2VsZiwgc2VsZi5fNTRbaV0pO1xuICAgIH1cbiAgICBzZWxmLl81NCA9IG51
bGw7XG4gIH1cbn1cblxuZnVuY3Rpb24gSGFuZGxlcihvbkZ1bGZpbGxlZCwgb25SZWplY3RlZCwg
cHJvbWlzZSl7XG4gIHRoaXMub25GdWxmaWxsZWQgPSB0eXBlb2Ygb25GdWxmaWxsZWQgPT09ICdm
dW5jdGlvbicgPyBvbkZ1bGZpbGxlZCA6IG51bGw7XG4gIHRoaXMub25SZWplY3RlZCA9IHR5cGVv
ZiBvblJlamVjdGVkID09PSAnZnVuY3Rpb24nID8gb25SZWplY3RlZCA6IG51bGw7XG4gIHRoaXMu
cHJvbWlzZSA9IHByb21pc2U7XG59XG5cbi8qKlxuICogVGFrZSBhIHBvdGVudGlhbGx5IG1pc2Jl
aGF2aW5nIHJlc29sdmVyIGZ1bmN0aW9uIGFuZCBtYWtlIHN1cmVcbiAqIG9uRnVsZmlsbGVkIGFu
ZCBvblJlamVjdGVkIGFyZSBvbmx5IGNhbGxlZCBvbmNlLlxuICpcbiAqIE1ha2VzIG5vIGd1YXJh
bnRlZXMgYWJvdXQgYXN5bmNocm9ueS5cbiAqL1xuZnVuY3Rpb24gZG9SZXNvbHZlKGZuLCBwcm9t
aXNlKSB7XG4gIHZhciBkb25lID0gZmFsc2U7XG4gIHZhciByZXMgPSB0cnlDYWxsVHdvKGZuLCBm
dW5jdGlvbiAodmFsdWUpIHtcbiAgICBpZiAoZG9uZSkgcmV0dXJuO1xuICAgIGRvbmUgPSB0cnVl
O1xuICAgIHJlc29sdmUocHJvbWlzZSwgdmFsdWUpO1xuICB9LCBmdW5jdGlvbiAocmVhc29uKSB7
XG4gICAgaWYgKGRvbmUpIHJldHVybjtcbiAgICBkb25lID0gdHJ1ZTtcbiAgICByZWplY3QocHJv
bWlzZSwgcmVhc29uKTtcbiAgfSlcbiAgaWYgKCFkb25lICYmIHJlcyA9PT0gSVNfRVJST1IpIHtc
biAgICBkb25lID0gdHJ1ZTtcbiAgICByZWplY3QocHJvbWlzZSwgTEFTVF9FUlJPUik7XG4gIH1c
bn1cblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+
L3JlYWN0LXNjcmlwdHMvfi9wcm9taXNlL2xpYi9jb3JlLmpzXG4gKiogbW9kdWxlIGlkID0gODhc
biAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpc
biAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4v
cmVhY3RQcm9kSW52YXJpYW50JyksXG4gICAgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3Np
Z24nKTtcblxudmFyIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlID0gcmVxdWlyZSgnLi9SZWFjdE5vb3BV
cGRhdGVRdWV1ZScpO1xuXG52YXIgY2FuRGVmaW5lUHJvcGVydHkgPSByZXF1aXJlKCcuL2NhbkRl
ZmluZVByb3BlcnR5Jyk7XG52YXIgZW1wdHlPYmplY3QgPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0
eU9iamVjdCcpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcp
O1xudmFyIGxvd1ByaW9yaXR5V2FybmluZyA9IHJlcXVpcmUoJy4vbG93UHJpb3JpdHlXYXJuaW5n
Jyk7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBoZWxwZXJzIGZvciB0aGUgdXBkYXRpbmcgc3RhdGUg
b2YgYSBjb21wb25lbnQuXG4gKi9cbmZ1bmN0aW9uIFJlYWN0Q29tcG9uZW50KHByb3BzLCBjb250
ZXh0LCB1cGRhdGVyKSB7XG4gIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgdGhpcy5jb250ZXh0ID0g
Y29udGV4dDtcbiAgdGhpcy5yZWZzID0gZW1wdHlPYmplY3Q7XG4gIC8vIFdlIGluaXRpYWxpemUg
dGhlIGRlZmF1bHQgdXBkYXRlciBidXQgdGhlIHJlYWwgb25lIGdldHMgaW5qZWN0ZWQgYnkgdGhl
XG4gIC8vIHJlbmRlcmVyLlxuICB0aGlzLnVwZGF0ZXIgPSB1cGRhdGVyIHx8IFJlYWN0Tm9vcFVw
ZGF0ZVF1ZXVlO1xufVxuXG5SZWFjdENvbXBvbmVudC5wcm90b3R5cGUuaXNSZWFjdENvbXBvbmVu
dCA9IHt9O1xuXG4vKipcbiAqIFNldHMgYSBzdWJzZXQgb2YgdGhlIHN0YXRlLiBBbHdheXMgdXNl
IHRoaXMgdG8gbXV0YXRlXG4gKiBzdGF0ZS4gWW91IHNob3VsZCB0cmVhdCBgdGhpcy5zdGF0ZWAg
YXMgaW1tdXRhYmxlLlxuICpcbiAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGB0aGlzLnN0
YXRlYCB3aWxsIGJlIGltbWVkaWF0ZWx5IHVwZGF0ZWQsIHNvXG4gKiBhY2Nlc3NpbmcgYHRoaXMu
c3RhdGVgIGFmdGVyIGNhbGxpbmcgdGhpcyBtZXRob2QgbWF5IHJldHVybiB0aGUgb2xkIHZhbHVl
LlxuICpcbiAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGNhbGxzIHRvIGBzZXRTdGF0ZWAg
d2lsbCBydW4gc3luY2hyb25vdXNseSxcbiAqIGFzIHRoZXkgbWF5IGV2ZW50dWFsbHkgYmUgYmF0
Y2hlZCB0b2dldGhlci4gIFlvdSBjYW4gcHJvdmlkZSBhbiBvcHRpb25hbFxuICogY2FsbGJhY2sg
dGhhdCB3aWxsIGJlIGV4ZWN1dGVkIHdoZW4gdGhlIGNhbGwgdG8gc2V0U3RhdGUgaXMgYWN0dWFs
bHlcbiAqIGNvbXBsZXRlZC5cbiAqXG4gKiBXaGVuIGEgZnVuY3Rpb24gaXMgcHJvdmlkZWQgdG8g
c2V0U3RhdGUsIGl0IHdpbGwgYmUgY2FsbGVkIGF0IHNvbWUgcG9pbnQgaW5cbiAqIHRoZSBmdXR1
cmUgKG5vdCBzeW5jaHJvbm91c2x5KS4gSXQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgdXAgdG8g
ZGF0ZVxuICogY29tcG9uZW50IGFyZ3VtZW50cyAoc3RhdGUsIHByb3BzLCBjb250ZXh0KS4gVGhl
c2UgdmFsdWVzIGNhbiBiZSBkaWZmZXJlbnRcbiAqIGZyb20gdGhpcy4qIGJlY2F1c2UgeW91ciBm
dW5jdGlvbiBtYXkgYmUgY2FsbGVkIGFmdGVyIHJlY2VpdmVQcm9wcyBidXQgYmVmb3JlXG4gKiBz
aG91bGRDb21wb25lbnRVcGRhdGUsIGFuZCB0aGlzIG5ldyBzdGF0ZSwgcHJvcHMsIGFuZCBjb250
ZXh0IHdpbGwgbm90IHlldCBiZVxuICogYXNzaWduZWQgdG8gdGhpcy5cbiAqXG4gKiBAcGFyYW0g
e29iamVjdHxmdW5jdGlvbn0gcGFydGlhbFN0YXRlIE5leHQgcGFydGlhbCBzdGF0ZSBvciBmdW5j
dGlvbiB0b1xuICogICAgICAgIHByb2R1Y2UgbmV4dCBwYXJ0aWFsIHN0YXRlIHRvIGJlIG1lcmdl
ZCB3aXRoIGN1cnJlbnQgc3RhdGUuXG4gKiBAcGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2Fs
bGVkIGFmdGVyIHN0YXRlIGlzIHVwZGF0ZWQuXG4gKiBAZmluYWxcbiAqIEBwcm90ZWN0ZWRcbiAq
L1xuUmVhY3RDb21wb25lbnQucHJvdG90eXBlLnNldFN0YXRlID0gZnVuY3Rpb24gKHBhcnRpYWxT
dGF0ZSwgY2FsbGJhY2spIHtcbiAgISh0eXBlb2YgcGFydGlhbFN0YXRlID09PSAnb2JqZWN0JyB8
fCB0eXBlb2YgcGFydGlhbFN0YXRlID09PSAnZnVuY3Rpb24nIHx8IHBhcnRpYWxTdGF0ZSA9PSBu
dWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQo
ZmFsc2UsICdzZXRTdGF0ZSguLi4pOiB0YWtlcyBhbiBvYmplY3Qgb2Ygc3RhdGUgdmFyaWFibGVz
IHRvIHVwZGF0ZSBvciBhIGZ1bmN0aW9uIHdoaWNoIHJldHVybnMgYW4gb2JqZWN0IG9mIHN0YXRl
IHZhcmlhYmxlcy4nKSA6IF9wcm9kSW52YXJpYW50KCc4NScpIDogdm9pZCAwO1xuICB0aGlzLnVw
ZGF0ZXIuZW5xdWV1ZVNldFN0YXRlKHRoaXMsIHBhcnRpYWxTdGF0ZSk7XG4gIGlmIChjYWxsYmFj
aykge1xuICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2sodGhpcywgY2FsbGJhY2ssICdz
ZXRTdGF0ZScpO1xuICB9XG59O1xuXG4vKipcbiAqIEZvcmNlcyBhbiB1cGRhdGUuIFRoaXMgc2hv
dWxkIG9ubHkgYmUgaW52b2tlZCB3aGVuIGl0IGlzIGtub3duIHdpdGhcbiAqIGNlcnRhaW50eSB0
aGF0IHdlIGFyZSAqKm5vdCoqIGluIGEgRE9NIHRyYW5zYWN0aW9uLlxuICpcbiAqIFlvdSBtYXkg
d2FudCB0byBjYWxsIHRoaXMgd2hlbiB5b3Uga25vdyB0aGF0IHNvbWUgZGVlcGVyIGFzcGVjdCBv
ZiB0aGVcbiAqIGNvbXBvbmVudCdzIHN0YXRlIGhhcyBjaGFuZ2VkIGJ1dCBgc2V0U3RhdGVgIHdh
cyBub3QgY2FsbGVkLlxuICpcbiAqIFRoaXMgd2lsbCBub3QgaW52b2tlIGBzaG91bGRDb21wb25l
bnRVcGRhdGVgLCBidXQgaXQgd2lsbCBpbnZva2VcbiAqIGBjb21wb25lbnRXaWxsVXBkYXRlYCBh
bmQgYGNvbXBvbmVudERpZFVwZGF0ZWAuXG4gKlxuICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxi
YWNrIENhbGxlZCBhZnRlciB1cGRhdGUgaXMgY29tcGxldGUuXG4gKiBAZmluYWxcbiAqIEBwcm90
ZWN0ZWRcbiAqL1xuUmVhY3RDb21wb25lbnQucHJvdG90eXBlLmZvcmNlVXBkYXRlID0gZnVuY3Rp
b24gKGNhbGxiYWNrKSB7XG4gIHRoaXMudXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRhdGUodGhpcyk7
XG4gIGlmIChjYWxsYmFjaykge1xuICAgIHRoaXMudXBkYXRlci5lbnF1ZXVlQ2FsbGJhY2sodGhp
cywgY2FsbGJhY2ssICdmb3JjZVVwZGF0ZScpO1xuICB9XG59O1xuXG4vKipcbiAqIERlcHJlY2F0
ZWQgQVBJcy4gVGhlc2UgQVBJcyB1c2VkIHRvIGV4aXN0IG9uIGNsYXNzaWMgUmVhY3QgY2xhc3Nl
cyBidXQgc2luY2VcbiAqIHdlIHdvdWxkIGxpa2UgdG8gZGVwcmVjYXRlIHRoZW0sIHdlJ3JlIG5v
dCBnb2luZyB0byBtb3ZlIHRoZW0gb3ZlciB0byB0aGlzXG4gKiBtb2Rlcm4gYmFzZSBjbGFzcy4g
SW5zdGVhZCwgd2UgZGVmaW5lIGEgZ2V0dGVyIHRoYXQgd2FybnMgaWYgaXQncyBhY2Nlc3NlZC5c
biAqL1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFy
IGRlcHJlY2F0ZWRBUElzID0ge1xuICAgIGlzTW91bnRlZDogWydpc01vdW50ZWQnLCAnSW5zdGVh
ZCwgbWFrZSBzdXJlIHRvIGNsZWFuIHVwIHN1YnNjcmlwdGlvbnMgYW5kIHBlbmRpbmcgcmVxdWVz
dHMgaW4gJyArICdjb21wb25lbnRXaWxsVW5tb3VudCB0byBwcmV2ZW50IG1lbW9yeSBsZWFrcy4n
XSxcbiAgICByZXBsYWNlU3RhdGU6IFsncmVwbGFjZVN0YXRlJywgJ1JlZmFjdG9yIHlvdXIgY29k
ZSB0byB1c2Ugc2V0U3RhdGUgaW5zdGVhZCAoc2VlICcgKyAnaHR0cHM6Ly9naXRodWIuY29tL2Zh
Y2Vib29rL3JlYWN0L2lzc3Vlcy8zMjM2KS4nXVxuICB9O1xuICB2YXIgZGVmaW5lRGVwcmVjYXRp
b25XYXJuaW5nID0gZnVuY3Rpb24gKG1ldGhvZE5hbWUsIGluZm8pIHtcbiAgICBpZiAoY2FuRGVm
aW5lUHJvcGVydHkpIHtcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShSZWFjdENvbXBvbmVu
dC5wcm90b3R5cGUsIG1ldGhvZE5hbWUsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4g
ICAgICAgICAgbG93UHJpb3JpdHlXYXJuaW5nKGZhbHNlLCAnJXMoLi4uKSBpcyBkZXByZWNhdGVk
IGluIHBsYWluIEphdmFTY3JpcHQgUmVhY3QgY2xhc3Nlcy4gJXMnLCBpbmZvWzBdLCBpbmZvWzFd
KTtcbiAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAg
ICB9XG4gIH07XG4gIGZvciAodmFyIGZuTmFtZSBpbiBkZXByZWNhdGVkQVBJcykge1xuICAgIGlm
IChkZXByZWNhdGVkQVBJcy5oYXNPd25Qcm9wZXJ0eShmbk5hbWUpKSB7XG4gICAgICBkZWZpbmVE
ZXByZWNhdGlvbldhcm5pbmcoZm5OYW1lLCBkZXByZWNhdGVkQVBJc1tmbk5hbWVdKTtcbiAgICB9
XG4gIH1cbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGhlbHBlcnMgZm9yIHRoZSB1cGRhdGluZyBz
dGF0ZSBvZiBhIGNvbXBvbmVudC5cbiAqL1xuZnVuY3Rpb24gUmVhY3RQdXJlQ29tcG9uZW50KHBy
b3BzLCBjb250ZXh0LCB1cGRhdGVyKSB7XG4gIC8vIER1cGxpY2F0ZWQgZnJvbSBSZWFjdENvbXBv
bmVudC5cbiAgdGhpcy5wcm9wcyA9IHByb3BzO1xuICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xu
ICB0aGlzLnJlZnMgPSBlbXB0eU9iamVjdDtcbiAgLy8gV2UgaW5pdGlhbGl6ZSB0aGUgZGVmYXVs
dCB1cGRhdGVyIGJ1dCB0aGUgcmVhbCBvbmUgZ2V0cyBpbmplY3RlZCBieSB0aGVcbiAgLy8gcmVu
ZGVyZXIuXG4gIHRoaXMudXBkYXRlciA9IHVwZGF0ZXIgfHwgUmVhY3ROb29wVXBkYXRlUXVldWU7
XG59XG5cbmZ1bmN0aW9uIENvbXBvbmVudER1bW15KCkge31cbkNvbXBvbmVudER1bW15LnByb3Rv
dHlwZSA9IFJlYWN0Q29tcG9uZW50LnByb3RvdHlwZTtcblJlYWN0UHVyZUNvbXBvbmVudC5wcm90
b3R5cGUgPSBuZXcgQ29tcG9uZW50RHVtbXkoKTtcblJlYWN0UHVyZUNvbXBvbmVudC5wcm90b3R5
cGUuY29uc3RydWN0b3IgPSBSZWFjdFB1cmVDb21wb25lbnQ7XG4vLyBBdm9pZCBhbiBleHRyYSBw
cm90b3R5cGUganVtcCBmb3IgdGhlc2UgbWV0aG9kcy5cbl9hc3NpZ24oUmVhY3RQdXJlQ29tcG9u
ZW50LnByb3RvdHlwZSwgUmVhY3RDb21wb25lbnQucHJvdG90eXBlKTtcblJlYWN0UHVyZUNvbXBv
bmVudC5wcm90b3R5cGUuaXNQdXJlUmVhY3RDb21wb25lbnQgPSB0cnVlO1xuXG5tb2R1bGUuZXhw
b3J0cyA9IHtcbiAgQ29tcG9uZW50OiBSZWFjdENvbXBvbmVudCxcbiAgUHVyZUNvbXBvbmVudDog
UmVhY3RQdXJlQ29tcG9uZW50XG59O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBB
Q0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0L2xpYi9SZWFjdEJhc2VDbGFzc2VzLmpzXG4gKiogbW9k
dWxlIGlkID0gODlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJp
Z2h0IDIwMTYtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQu
XG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxl
IGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVu
dCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGly
ZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJp
YW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFyIFJlYWN0Q3VycmVu
dE93bmVyID0gcmVxdWlyZSgnLi9SZWFjdEN1cnJlbnRPd25lcicpO1xuXG52YXIgaW52YXJpYW50
ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUo
J2ZianMvbGliL3dhcm5pbmcnKTtcblxuZnVuY3Rpb24gaXNOYXRpdmUoZm4pIHtcbiAgLy8gQmFz
ZWQgb24gaXNOYXRpdmUoKSBmcm9tIExvZGFzaFxuICB2YXIgZnVuY1RvU3RyaW5nID0gRnVuY3Rp
b24ucHJvdG90eXBlLnRvU3RyaW5nO1xuICB2YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJv
dG90eXBlLmhhc093blByb3BlcnR5O1xuICB2YXIgcmVJc05hdGl2ZSA9IFJlZ0V4cCgnXicgKyBm
dW5jVG9TdHJpbmdcbiAgLy8gVGFrZSBhbiBleGFtcGxlIG5hdGl2ZSBmdW5jdGlvbiBzb3VyY2Ug
Zm9yIGNvbXBhcmlzb25cbiAgLmNhbGwoaGFzT3duUHJvcGVydHlcbiAgLy8gU3RyaXAgcmVnZXgg
Y2hhcmFjdGVycyBzbyB3ZSBjYW4gdXNlIGl0IGZvciByZWdleFxuICApLnJlcGxhY2UoL1tcXFxc
XiQuKis/KClbXFxde318XS9nLCAnXFxcXCQmJ1xuICAvLyBSZW1vdmUgaGFzT3duUHJvcGVydHkg
ZnJvbSB0aGUgdGVtcGxhdGUgdG8gbWFrZSBpdCBnZW5lcmljXG4gICkucmVwbGFjZSgvaGFzT3du
UHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXFxcXCgpfCBmb3IgLis/KD89XFxcXFxcXSkvZywg
JyQxLio/JykgKyAnJCcpO1xuICB0cnkge1xuICAgIHZhciBzb3VyY2UgPSBmdW5jVG9TdHJpbmcu
Y2FsbChmbik7XG4gICAgcmV0dXJuIHJlSXNOYXRpdmUudGVzdChzb3VyY2UpO1xuICB9IGNhdGNo
IChlcnIpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn1cblxudmFyIGNhblVzZUNvbGxlY3Rp
b25zID1cbi8vIEFycmF5LmZyb21cbnR5cGVvZiBBcnJheS5mcm9tID09PSAnZnVuY3Rpb24nICYm
XG4vLyBNYXBcbnR5cGVvZiBNYXAgPT09ICdmdW5jdGlvbicgJiYgaXNOYXRpdmUoTWFwKSAmJlxu
Ly8gTWFwLnByb3RvdHlwZS5rZXlzXG5NYXAucHJvdG90eXBlICE9IG51bGwgJiYgdHlwZW9mIE1h
cC5wcm90b3R5cGUua2V5cyA9PT0gJ2Z1bmN0aW9uJyAmJiBpc05hdGl2ZShNYXAucHJvdG90eXBl
LmtleXMpICYmXG4vLyBTZXRcbnR5cGVvZiBTZXQgPT09ICdmdW5jdGlvbicgJiYgaXNOYXRpdmUo
U2V0KSAmJlxuLy8gU2V0LnByb3RvdHlwZS5rZXlzXG5TZXQucHJvdG90eXBlICE9IG51bGwgJiYg
dHlwZW9mIFNldC5wcm90b3R5cGUua2V5cyA9PT0gJ2Z1bmN0aW9uJyAmJiBpc05hdGl2ZShTZXQu
cHJvdG90eXBlLmtleXMpO1xuXG52YXIgc2V0SXRlbTtcbnZhciBnZXRJdGVtO1xudmFyIHJlbW92
ZUl0ZW07XG52YXIgZ2V0SXRlbUlEcztcbnZhciBhZGRSb290O1xudmFyIHJlbW92ZVJvb3Q7XG52
YXIgZ2V0Um9vdElEcztcblxuaWYgKGNhblVzZUNvbGxlY3Rpb25zKSB7XG4gIHZhciBpdGVtTWFw
ID0gbmV3IE1hcCgpO1xuICB2YXIgcm9vdElEU2V0ID0gbmV3IFNldCgpO1xuXG4gIHNldEl0ZW0g
PSBmdW5jdGlvbiAoaWQsIGl0ZW0pIHtcbiAgICBpdGVtTWFwLnNldChpZCwgaXRlbSk7XG4gIH07
XG4gIGdldEl0ZW0gPSBmdW5jdGlvbiAoaWQpIHtcbiAgICByZXR1cm4gaXRlbU1hcC5nZXQoaWQp
O1xuICB9O1xuICByZW1vdmVJdGVtID0gZnVuY3Rpb24gKGlkKSB7XG4gICAgaXRlbU1hcFsnZGVs
ZXRlJ10oaWQpO1xuICB9O1xuICBnZXRJdGVtSURzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVy
biBBcnJheS5mcm9tKGl0ZW1NYXAua2V5cygpKTtcbiAgfTtcblxuICBhZGRSb290ID0gZnVuY3Rp
b24gKGlkKSB7XG4gICAgcm9vdElEU2V0LmFkZChpZCk7XG4gIH07XG4gIHJlbW92ZVJvb3QgPSBm
dW5jdGlvbiAoaWQpIHtcbiAgICByb290SURTZXRbJ2RlbGV0ZSddKGlkKTtcbiAgfTtcbiAgZ2V0
Um9vdElEcyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShyb290SURTZXQu
a2V5cygpKTtcbiAgfTtcbn0gZWxzZSB7XG4gIHZhciBpdGVtQnlLZXkgPSB7fTtcbiAgdmFyIHJv
b3RCeUtleSA9IHt9O1xuXG4gIC8vIFVzZSBub24tbnVtZXJpYyBrZXlzIHRvIHByZXZlbnQgVjgg
cGVyZm9ybWFuY2UgaXNzdWVzOlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVh
Y3QvcHVsbC83MjMyXG4gIHZhciBnZXRLZXlGcm9tSUQgPSBmdW5jdGlvbiAoaWQpIHtcbiAgICBy
ZXR1cm4gJy4nICsgaWQ7XG4gIH07XG4gIHZhciBnZXRJREZyb21LZXkgPSBmdW5jdGlvbiAoa2V5
KSB7XG4gICAgcmV0dXJuIHBhcnNlSW50KGtleS5zdWJzdHIoMSksIDEwKTtcbiAgfTtcblxuICBz
ZXRJdGVtID0gZnVuY3Rpb24gKGlkLCBpdGVtKSB7XG4gICAgdmFyIGtleSA9IGdldEtleUZyb21J
RChpZCk7XG4gICAgaXRlbUJ5S2V5W2tleV0gPSBpdGVtO1xuICB9O1xuICBnZXRJdGVtID0gZnVu
Y3Rpb24gKGlkKSB7XG4gICAgdmFyIGtleSA9IGdldEtleUZyb21JRChpZCk7XG4gICAgcmV0dXJu
IGl0ZW1CeUtleVtrZXldO1xuICB9O1xuICByZW1vdmVJdGVtID0gZnVuY3Rpb24gKGlkKSB7XG4g
ICAgdmFyIGtleSA9IGdldEtleUZyb21JRChpZCk7XG4gICAgZGVsZXRlIGl0ZW1CeUtleVtrZXld
O1xuICB9O1xuICBnZXRJdGVtSURzID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBPYmplY3Qu
a2V5cyhpdGVtQnlLZXkpLm1hcChnZXRJREZyb21LZXkpO1xuICB9O1xuXG4gIGFkZFJvb3QgPSBm
dW5jdGlvbiAoaWQpIHtcbiAgICB2YXIga2V5ID0gZ2V0S2V5RnJvbUlEKGlkKTtcbiAgICByb290
QnlLZXlba2V5XSA9IHRydWU7XG4gIH07XG4gIHJlbW92ZVJvb3QgPSBmdW5jdGlvbiAoaWQpIHtc
biAgICB2YXIga2V5ID0gZ2V0S2V5RnJvbUlEKGlkKTtcbiAgICBkZWxldGUgcm9vdEJ5S2V5W2tl
eV07XG4gIH07XG4gIGdldFJvb3RJRHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIE9iamVj
dC5rZXlzKHJvb3RCeUtleSkubWFwKGdldElERnJvbUtleSk7XG4gIH07XG59XG5cbnZhciB1bm1v
dW50ZWRJRHMgPSBbXTtcblxuZnVuY3Rpb24gcHVyZ2VEZWVwKGlkKSB7XG4gIHZhciBpdGVtID0g
Z2V0SXRlbShpZCk7XG4gIGlmIChpdGVtKSB7XG4gICAgdmFyIGNoaWxkSURzID0gaXRlbS5jaGls
ZElEcztcblxuICAgIHJlbW92ZUl0ZW0oaWQpO1xuICAgIGNoaWxkSURzLmZvckVhY2gocHVyZ2VE
ZWVwKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkZXNjcmliZUNvbXBvbmVudEZyYW1lKG5hbWUsIHNv
dXJjZSwgb3duZXJOYW1lKSB7XG4gIHJldHVybiAnXFxuICAgIGluICcgKyAobmFtZSB8fCAnVW5r
bm93bicpICsgKHNvdXJjZSA/ICcgKGF0ICcgKyBzb3VyY2UuZmlsZU5hbWUucmVwbGFjZSgvXi4q
W1xcXFxcXC9dLywgJycpICsgJzonICsgc291cmNlLmxpbmVOdW1iZXIgKyAnKScgOiBvd25lck5h
bWUgPyAnIChjcmVhdGVkIGJ5ICcgKyBvd25lck5hbWUgKyAnKScgOiAnJyk7XG59XG5cbmZ1bmN0
aW9uIGdldERpc3BsYXlOYW1lKGVsZW1lbnQpIHtcbiAgaWYgKGVsZW1lbnQgPT0gbnVsbCkge1xu
ICAgIHJldHVybiAnI2VtcHR5JztcbiAgfSBlbHNlIGlmICh0eXBlb2YgZWxlbWVudCA9PT0gJ3N0
cmluZycgfHwgdHlwZW9mIGVsZW1lbnQgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuICcjdGV4
dCc7XG4gIH0gZWxzZSBpZiAodHlwZW9mIGVsZW1lbnQudHlwZSA9PT0gJ3N0cmluZycpIHtcbiAg
ICByZXR1cm4gZWxlbWVudC50eXBlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBlbGVtZW50LnR5
cGUuZGlzcGxheU5hbWUgfHwgZWxlbWVudC50eXBlLm5hbWUgfHwgJ1Vua25vd24nO1xuICB9XG59
XG5cbmZ1bmN0aW9uIGRlc2NyaWJlSUQoaWQpIHtcbiAgdmFyIG5hbWUgPSBSZWFjdENvbXBvbmVu
dFRyZWVIb29rLmdldERpc3BsYXlOYW1lKGlkKTtcbiAgdmFyIGVsZW1lbnQgPSBSZWFjdENvbXBv
bmVudFRyZWVIb29rLmdldEVsZW1lbnQoaWQpO1xuICB2YXIgb3duZXJJRCA9IFJlYWN0Q29tcG9u
ZW50VHJlZUhvb2suZ2V0T3duZXJJRChpZCk7XG4gIHZhciBvd25lck5hbWU7XG4gIGlmIChvd25l
cklEKSB7XG4gICAgb3duZXJOYW1lID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXREaXNwbGF5
TmFtZShvd25lcklEKTtcbiAgfVxuICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gd2FybmluZyhlbGVtZW50LCAnUmVhY3RDb21wb25lbnRUcmVlSG9vazogTWlzc2luZyBS
ZWFjdCBlbGVtZW50IGZvciBkZWJ1Z0lEICVzIHdoZW4gJyArICdidWlsZGluZyBzdGFjaycsIGlk
KSA6IHZvaWQgMDtcbiAgcmV0dXJuIGRlc2NyaWJlQ29tcG9uZW50RnJhbWUobmFtZSwgZWxlbWVu
dCAmJiBlbGVtZW50Ll9zb3VyY2UsIG93bmVyTmFtZSk7XG59XG5cbnZhciBSZWFjdENvbXBvbmVu
dFRyZWVIb29rID0ge1xuICBvblNldENoaWxkcmVuOiBmdW5jdGlvbiAoaWQsIG5leHRDaGlsZElE
cykge1xuICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG4gICAgIWl0ZW0gPyBwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnSXRlbSBtdXN0
IGhhdmUgYmVlbiBzZXQnKSA6IF9wcm9kSW52YXJpYW50KCcxNDQnKSA6IHZvaWQgMDtcbiAgICBp
dGVtLmNoaWxkSURzID0gbmV4dENoaWxkSURzO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBu
ZXh0Q2hpbGRJRHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBuZXh0Q2hpbGRJRCA9IG5leHRD
aGlsZElEc1tpXTtcbiAgICAgIHZhciBuZXh0Q2hpbGQgPSBnZXRJdGVtKG5leHRDaGlsZElEKTtc
biAgICAgICFuZXh0Q2hpbGQgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ID8gaW52YXJpYW50KGZhbHNlLCAnRXhwZWN0ZWQgaG9vayBldmVudHMgdG8gZmlyZSBmb3IgdGhl
IGNoaWxkIGJlZm9yZSBpdHMgcGFyZW50IGluY2x1ZGVzIGl0IGluIG9uU2V0Q2hpbGRyZW4oKS4n
KSA6IF9wcm9kSW52YXJpYW50KCcxNDAnKSA6IHZvaWQgMDtcbiAgICAgICEobmV4dENoaWxkLmNo
aWxkSURzICE9IG51bGwgfHwgdHlwZW9mIG5leHRDaGlsZC5lbGVtZW50ICE9PSAnb2JqZWN0JyB8
fCBuZXh0Q2hpbGQuZWxlbWVudCA9PSBudWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdFeHBlY3RlZCBvblNldENoaWxkcmVuKCkg
dG8gZmlyZSBmb3IgYSBjb250YWluZXIgY2hpbGQgYmVmb3JlIGl0cyBwYXJlbnQgaW5jbHVkZXMg
aXQgaW4gb25TZXRDaGlsZHJlbigpLicpIDogX3Byb2RJbnZhcmlhbnQoJzE0MScpIDogdm9pZCAw
O1xuICAgICAgIW5leHRDaGlsZC5pc01vdW50ZWQgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnRXhwZWN0ZWQgb25Nb3VudENvbXBvbmVu
dCgpIHRvIGZpcmUgZm9yIHRoZSBjaGlsZCBiZWZvcmUgaXRzIHBhcmVudCBpbmNsdWRlcyBpdCBp
biBvblNldENoaWxkcmVuKCkuJykgOiBfcHJvZEludmFyaWFudCgnNzEnKSA6IHZvaWQgMDtcbiAg
ICAgIGlmIChuZXh0Q2hpbGQucGFyZW50SUQgPT0gbnVsbCkge1xuICAgICAgICBuZXh0Q2hpbGQu
cGFyZW50SUQgPSBpZDtcbiAgICAgICAgLy8gVE9ETzogVGhpcyBzaG91bGRuJ3QgYmUgbmVjZXNz
YXJ5IGJ1dCBtb3VudGluZyBhIG5ldyByb290IGR1cmluZyBpblxuICAgICAgICAvLyBjb21wb25l
bnRXaWxsTW91bnQgY3VycmVudGx5IGNhdXNlcyBub3QteWV0LW1vdW50ZWQgY29tcG9uZW50cyB0
b1xuICAgICAgICAvLyBiZSBwdXJnZWQgZnJvbSBvdXIgdHJlZSBkYXRhIHNvIHRoZWlyIHBhcmVu
dCBpZCBpcyBtaXNzaW5nLlxuICAgICAgfVxuICAgICAgIShuZXh0Q2hpbGQucGFyZW50SUQgPT09
IGlkKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQo
ZmFsc2UsICdFeHBlY3RlZCBvbkJlZm9yZU1vdW50Q29tcG9uZW50KCkgcGFyZW50IGFuZCBvblNl
dENoaWxkcmVuKCkgdG8gYmUgY29uc2lzdGVudCAoJXMgaGFzIHBhcmVudHMgJXMgYW5kICVzKS4n
LCBuZXh0Q2hpbGRJRCwgbmV4dENoaWxkLnBhcmVudElELCBpZCkgOiBfcHJvZEludmFyaWFudCgn
MTQyJywgbmV4dENoaWxkSUQsIG5leHRDaGlsZC5wYXJlbnRJRCwgaWQpIDogdm9pZCAwO1xuICAg
IH1cbiAgfSxcbiAgb25CZWZvcmVNb3VudENvbXBvbmVudDogZnVuY3Rpb24gKGlkLCBlbGVtZW50
LCBwYXJlbnRJRCkge1xuICAgIHZhciBpdGVtID0ge1xuICAgICAgZWxlbWVudDogZWxlbWVudCxc
biAgICAgIHBhcmVudElEOiBwYXJlbnRJRCxcbiAgICAgIHRleHQ6IG51bGwsXG4gICAgICBjaGls
ZElEczogW10sXG4gICAgICBpc01vdW50ZWQ6IGZhbHNlLFxuICAgICAgdXBkYXRlQ291bnQ6IDBc
biAgICB9O1xuICAgIHNldEl0ZW0oaWQsIGl0ZW0pO1xuICB9LFxuICBvbkJlZm9yZVVwZGF0ZUNv
bXBvbmVudDogZnVuY3Rpb24gKGlkLCBlbGVtZW50KSB7XG4gICAgdmFyIGl0ZW0gPSBnZXRJdGVt
KGlkKTtcbiAgICBpZiAoIWl0ZW0gfHwgIWl0ZW0uaXNNb3VudGVkKSB7XG4gICAgICAvLyBXZSBt
YXkgZW5kIHVwIGhlcmUgYXMgYSByZXN1bHQgb2Ygc2V0U3RhdGUoKSBpbiBjb21wb25lbnRXaWxs
VW5tb3VudCgpLlxuICAgICAgLy8gSW4gdGhpcyBjYXNlLCBpZ25vcmUgdGhlIGVsZW1lbnQuXG4g
ICAgICByZXR1cm47XG4gICAgfVxuICAgIGl0ZW0uZWxlbWVudCA9IGVsZW1lbnQ7XG4gIH0sXG4g
IG9uTW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBpdGVtID0gZ2V0SXRl
bShpZCk7XG4gICAgIWl0ZW0gPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ID8gaW52YXJpYW50KGZhbHNlLCAnSXRlbSBtdXN0IGhhdmUgYmVlbiBzZXQnKSA6IF9wcm9kSW52
YXJpYW50KCcxNDQnKSA6IHZvaWQgMDtcbiAgICBpdGVtLmlzTW91bnRlZCA9IHRydWU7XG4gICAg
dmFyIGlzUm9vdCA9IGl0ZW0ucGFyZW50SUQgPT09IDA7XG4gICAgaWYgKGlzUm9vdCkge1xuICAg
ICAgYWRkUm9vdChpZCk7XG4gICAgfVxuICB9LFxuICBvblVwZGF0ZUNvbXBvbmVudDogZnVuY3Rp
b24gKGlkKSB7XG4gICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcbiAgICBpZiAoIWl0ZW0gfHwg
IWl0ZW0uaXNNb3VudGVkKSB7XG4gICAgICAvLyBXZSBtYXkgZW5kIHVwIGhlcmUgYXMgYSByZXN1
bHQgb2Ygc2V0U3RhdGUoKSBpbiBjb21wb25lbnRXaWxsVW5tb3VudCgpLlxuICAgICAgLy8gSW4g
dGhpcyBjYXNlLCBpZ25vcmUgdGhlIGVsZW1lbnQuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAg
IGl0ZW0udXBkYXRlQ291bnQrKztcbiAgfSxcbiAgb25Vbm1vdW50Q29tcG9uZW50OiBmdW5jdGlv
biAoaWQpIHtcbiAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuICAgIGlmIChpdGVtKSB7XG4g
ICAgICAvLyBXZSBuZWVkIHRvIGNoZWNrIGlmIGl0IGV4aXN0cy5cbiAgICAgIC8vIGBpdGVtYCBt
aWdodCBub3QgZXhpc3QgaWYgaXQgaXMgaW5zaWRlIGFuIGVycm9yIGJvdW5kYXJ5LCBhbmQgYSBz
aWJsaW5nXG4gICAgICAvLyBlcnJvciBib3VuZGFyeSBjaGlsZCB0aHJldyB3aGlsZSBtb3VudGlu
Zy4gVGhlbiB0aGlzIGluc3RhbmNlIG5ldmVyXG4gICAgICAvLyBnb3QgYSBjaGFuY2UgdG8gbW91
bnQsIGJ1dCBpdCBzdGlsbCBnZXRzIGFuIHVubW91bnRpbmcgZXZlbnQgZHVyaW5nXG4gICAgICAv
LyB0aGUgZXJyb3IgYm91bmRhcnkgY2xlYW51cC5cbiAgICAgIGl0ZW0uaXNNb3VudGVkID0gZmFs
c2U7XG4gICAgICB2YXIgaXNSb290ID0gaXRlbS5wYXJlbnRJRCA9PT0gMDtcbiAgICAgIGlmIChp
c1Jvb3QpIHtcbiAgICAgICAgcmVtb3ZlUm9vdChpZCk7XG4gICAgICB9XG4gICAgfVxuICAgIHVu
bW91bnRlZElEcy5wdXNoKGlkKTtcbiAgfSxcbiAgcHVyZ2VVbm1vdW50ZWRDb21wb25lbnRzOiBm
dW5jdGlvbiAoKSB7XG4gICAgaWYgKFJlYWN0Q29tcG9uZW50VHJlZUhvb2suX3ByZXZlbnRQdXJn
aW5nKSB7XG4gICAgICAvLyBTaG91bGQgb25seSBiZSB1c2VkIGZvciB0ZXN0aW5nLlxuICAgICAg
cmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdW5tb3VudGVkSURzLmxl
bmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWQgPSB1bm1vdW50ZWRJRHNbaV07XG4gICAgICBwdXJn
ZURlZXAoaWQpO1xuICAgIH1cbiAgICB1bm1vdW50ZWRJRHMubGVuZ3RoID0gMDtcbiAgfSxcbiAg
aXNNb3VudGVkOiBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xu
ICAgIHJldHVybiBpdGVtID8gaXRlbS5pc01vdW50ZWQgOiBmYWxzZTtcbiAgfSxcbiAgZ2V0Q3Vy
cmVudFN0YWNrQWRkZW5kdW06IGZ1bmN0aW9uICh0b3BFbGVtZW50KSB7XG4gICAgdmFyIGluZm8g
PSAnJztcbiAgICBpZiAodG9wRWxlbWVudCkge1xuICAgICAgdmFyIG5hbWUgPSBnZXREaXNwbGF5
TmFtZSh0b3BFbGVtZW50KTtcbiAgICAgIHZhciBvd25lciA9IHRvcEVsZW1lbnQuX293bmVyO1xu
ICAgICAgaW5mbyArPSBkZXNjcmliZUNvbXBvbmVudEZyYW1lKG5hbWUsIHRvcEVsZW1lbnQuX3Nv
dXJjZSwgb3duZXIgJiYgb3duZXIuZ2V0TmFtZSgpKTtcbiAgICB9XG5cbiAgICB2YXIgY3VycmVu
dE93bmVyID0gUmVhY3RDdXJyZW50T3duZXIuY3VycmVudDtcbiAgICB2YXIgaWQgPSBjdXJyZW50
T3duZXIgJiYgY3VycmVudE93bmVyLl9kZWJ1Z0lEO1xuXG4gICAgaW5mbyArPSBSZWFjdENvbXBv
bmVudFRyZWVIb29rLmdldFN0YWNrQWRkZW5kdW1CeUlEKGlkKTtcbiAgICByZXR1cm4gaW5mbztc
biAgfSxcbiAgZ2V0U3RhY2tBZGRlbmR1bUJ5SUQ6IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBp
bmZvID0gJyc7XG4gICAgd2hpbGUgKGlkKSB7XG4gICAgICBpbmZvICs9IGRlc2NyaWJlSUQoaWQp
O1xuICAgICAgaWQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldFBhcmVudElEKGlkKTtcbiAg
ICB9XG4gICAgcmV0dXJuIGluZm87XG4gIH0sXG4gIGdldENoaWxkSURzOiBmdW5jdGlvbiAoaWQp
IHtcbiAgICB2YXIgaXRlbSA9IGdldEl0ZW0oaWQpO1xuICAgIHJldHVybiBpdGVtID8gaXRlbS5j
aGlsZElEcyA6IFtdO1xuICB9LFxuICBnZXREaXNwbGF5TmFtZTogZnVuY3Rpb24gKGlkKSB7XG4g
ICAgdmFyIGVsZW1lbnQgPSBSZWFjdENvbXBvbmVudFRyZWVIb29rLmdldEVsZW1lbnQoaWQpO1xu
ICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVy
biBnZXREaXNwbGF5TmFtZShlbGVtZW50KTtcbiAgfSxcbiAgZ2V0RWxlbWVudDogZnVuY3Rpb24g
KGlkKSB7XG4gICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtcbiAgICByZXR1cm4gaXRlbSA/IGl0
ZW0uZWxlbWVudCA6IG51bGw7XG4gIH0sXG4gIGdldE93bmVySUQ6IGZ1bmN0aW9uIChpZCkge1xu
ICAgIHZhciBlbGVtZW50ID0gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRFbGVtZW50KGlkKTtc
biAgICBpZiAoIWVsZW1lbnQgfHwgIWVsZW1lbnQuX293bmVyKSB7XG4gICAgICByZXR1cm4gbnVs
bDtcbiAgICB9XG4gICAgcmV0dXJuIGVsZW1lbnQuX293bmVyLl9kZWJ1Z0lEO1xuICB9LFxuICBn
ZXRQYXJlbnRJRDogZnVuY3Rpb24gKGlkKSB7XG4gICAgdmFyIGl0ZW0gPSBnZXRJdGVtKGlkKTtc
biAgICByZXR1cm4gaXRlbSA/IGl0ZW0ucGFyZW50SUQgOiBudWxsO1xuICB9LFxuICBnZXRTb3Vy
Y2U6IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBpdGVtID0gZ2V0SXRlbShpZCk7XG4gICAgdmFy
IGVsZW1lbnQgPSBpdGVtID8gaXRlbS5lbGVtZW50IDogbnVsbDtcbiAgICB2YXIgc291cmNlID0g
ZWxlbWVudCAhPSBudWxsID8gZWxlbWVudC5fc291cmNlIDogbnVsbDtcbiAgICByZXR1cm4gc291
cmNlO1xuICB9LFxuICBnZXRUZXh0OiBmdW5jdGlvbiAoaWQpIHtcbiAgICB2YXIgZWxlbWVudCA9
IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RWxlbWVudChpZCk7XG4gICAgaWYgKHR5cGVvZiBl
bGVtZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIGVsZW1lbnQ7XG4gICAgfSBlbHNl
IGlmICh0eXBlb2YgZWxlbWVudCA9PT0gJ251bWJlcicpIHtcbiAgICAgIHJldHVybiAnJyArIGVs
ZW1lbnQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfSxcbiAg
Z2V0VXBkYXRlQ291bnQ6IGZ1bmN0aW9uIChpZCkge1xuICAgIHZhciBpdGVtID0gZ2V0SXRlbShp
ZCk7XG4gICAgcmV0dXJuIGl0ZW0gPyBpdGVtLnVwZGF0ZUNvdW50IDogMDtcbiAgfSxcblxuXG4g
IGdldFJvb3RJRHM6IGdldFJvb3RJRHMsXG4gIGdldFJlZ2lzdGVyZWRJRHM6IGdldEl0ZW1JRHMs
XG5cbiAgcHVzaE5vblN0YW5kYXJkV2FybmluZ1N0YWNrOiBmdW5jdGlvbiAoaXNDcmVhdGluZ0Vs
ZW1lbnQsIGN1cnJlbnRTb3VyY2UpIHtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUucmVhY3RTdGFj
ayAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBzdGFj
ayA9IFtdO1xuICAgIHZhciBjdXJyZW50T3duZXIgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50
O1xuICAgIHZhciBpZCA9IGN1cnJlbnRPd25lciAmJiBjdXJyZW50T3duZXIuX2RlYnVnSUQ7XG5c
biAgICB0cnkge1xuICAgICAgaWYgKGlzQ3JlYXRpbmdFbGVtZW50KSB7XG4gICAgICAgIHN0YWNr
LnB1c2goe1xuICAgICAgICAgIG5hbWU6IGlkID8gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRE
aXNwbGF5TmFtZShpZCkgOiBudWxsLFxuICAgICAgICAgIGZpbGVOYW1lOiBjdXJyZW50U291cmNl
ID8gY3VycmVudFNvdXJjZS5maWxlTmFtZSA6IG51bGwsXG4gICAgICAgICAgbGluZU51bWJlcjog
Y3VycmVudFNvdXJjZSA/IGN1cnJlbnRTb3VyY2UubGluZU51bWJlciA6IG51bGxcbiAgICAgICAg
fSk7XG4gICAgICB9XG5cbiAgICAgIHdoaWxlIChpZCkge1xuICAgICAgICB2YXIgZWxlbWVudCA9
IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0RWxlbWVudChpZCk7XG4gICAgICAgIHZhciBwYXJl
bnRJRCA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0UGFyZW50SUQoaWQpO1xuICAgICAgICB2
YXIgb3duZXJJRCA9IFJlYWN0Q29tcG9uZW50VHJlZUhvb2suZ2V0T3duZXJJRChpZCk7XG4gICAg
ICAgIHZhciBvd25lck5hbWUgPSBvd25lcklEID8gUmVhY3RDb21wb25lbnRUcmVlSG9vay5nZXRE
aXNwbGF5TmFtZShvd25lcklEKSA6IG51bGw7XG4gICAgICAgIHZhciBzb3VyY2UgPSBlbGVtZW50
ICYmIGVsZW1lbnQuX3NvdXJjZTtcbiAgICAgICAgc3RhY2sucHVzaCh7XG4gICAgICAgICAgbmFt
ZTogb3duZXJOYW1lLFxuICAgICAgICAgIGZpbGVOYW1lOiBzb3VyY2UgPyBzb3VyY2UuZmlsZU5h
bWUgOiBudWxsLFxuICAgICAgICAgIGxpbmVOdW1iZXI6IHNvdXJjZSA/IHNvdXJjZS5saW5lTnVt
YmVyIDogbnVsbFxuICAgICAgICB9KTtcbiAgICAgICAgaWQgPSBwYXJlbnRJRDtcbiAgICAgIH1c
biAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIEludGVybmFsIHN0YXRlIGlzIG1lc3NlZCB1
cC5cbiAgICAgIC8vIFN0b3AgYnVpbGRpbmcgdGhlIHN0YWNrIChpdCdzIGp1c3QgYSBuaWNlIHRv
IGhhdmUpLlxuICAgIH1cblxuICAgIGNvbnNvbGUucmVhY3RTdGFjayhzdGFjayk7XG4gIH0sXG4g
IHBvcE5vblN0YW5kYXJkV2FybmluZ1N0YWNrOiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHR5cGVv
ZiBjb25zb2xlLnJlYWN0U3RhY2tFbmQgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybjtc
biAgICB9XG4gICAgY29uc29sZS5yZWFjdFN0YWNrRW5kKCk7XG4gIH1cbn07XG5cbm1vZHVsZS5l
eHBvcnRzID0gUmVhY3RDb21wb25lbnRUcmVlSG9vaztcblxuXG4vKioqKioqKioqKioqKioqKipc
biAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC9saWIvUmVhY3RDb21wb25lbnRUcmVl
SG9vay5qc1xuICoqIG1vZHVsZSBpZCA9IDkwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8i
LCIvKipcbiAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwg
cmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5c
bi8vIFRoZSBTeW1ib2wgdXNlZCB0byB0YWcgdGhlIFJlYWN0RWxlbWVudCB0eXBlLiBJZiB0aGVy
ZSBpcyBubyBuYXRpdmUgU3ltYm9sXG4vLyBub3IgcG9seWZpbGwsIHRoZW4gYSBwbGFpbiBudW1i
ZXIgaXMgdXNlZCBmb3IgcGVyZm9ybWFuY2UuXG5cbnZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSB0
eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbFsnZm9yJ10gJiYgU3ltYm9sWydm
b3InXSgncmVhY3QuZWxlbWVudCcpIHx8IDB4ZWFjNztcblxubW9kdWxlLmV4cG9ydHMgPSBSRUFD
VF9FTEVNRU5UX1RZUEU7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09U
RVJcbiAqKiAuL34vcmVhY3QvbGliL1JlYWN0RWxlbWVudFN5bWJvbC5qc1xuICoqIG1vZHVsZSBp
ZCA9IDkxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAy
MDE1LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpc
biAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNl
bnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBv
ZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmln
aHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9y
eS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2Zi
anMvbGliL3dhcm5pbmcnKTtcblxuZnVuY3Rpb24gd2Fybk5vb3AocHVibGljSW5zdGFuY2UsIGNh
bGxlck5hbWUpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicp
IHtcbiAgICB2YXIgY29uc3RydWN0b3IgPSBwdWJsaWNJbnN0YW5jZS5jb25zdHJ1Y3RvcjtcbiAg
ICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwg
JyVzKC4uLik6IENhbiBvbmx5IHVwZGF0ZSBhIG1vdW50ZWQgb3IgbW91bnRpbmcgY29tcG9uZW50
LiAnICsgJ1RoaXMgdXN1YWxseSBtZWFucyB5b3UgY2FsbGVkICVzKCkgb24gYW4gdW5tb3VudGVk
IGNvbXBvbmVudC4gJyArICdUaGlzIGlzIGEgbm8tb3AuIFBsZWFzZSBjaGVjayB0aGUgY29kZSBm
b3IgdGhlICVzIGNvbXBvbmVudC4nLCBjYWxsZXJOYW1lLCBjYWxsZXJOYW1lLCBjb25zdHJ1Y3Rv
ciAmJiAoY29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgY29uc3RydWN0b3IubmFtZSkgfHwgJ1Jl
YWN0Q2xhc3MnKSA6IHZvaWQgMDtcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgaXMgdGhlIGFic3Ry
YWN0IEFQSSBmb3IgYW4gdXBkYXRlIHF1ZXVlLlxuICovXG52YXIgUmVhY3ROb29wVXBkYXRlUXVl
dWUgPSB7XG4gIC8qKlxuICAgKiBDaGVja3Mgd2hldGhlciBvciBub3QgdGhpcyBjb21wb3NpdGUg
Y29tcG9uZW50IGlzIG1vdW50ZWQuXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5z
dGFuY2UgVGhlIGluc3RhbmNlIHdlIHdhbnQgdG8gdGVzdC5cbiAgICogQHJldHVybiB7Ym9vbGVh
bn0gVHJ1ZSBpZiBtb3VudGVkLCBmYWxzZSBvdGhlcndpc2UuXG4gICAqIEBwcm90ZWN0ZWRcbiAg
ICogQGZpbmFsXG4gICAqL1xuICBpc01vdW50ZWQ6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSkg
e1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSxcblxuICAvKipcbiAgICogRW5xdWV1ZSBhIGNhbGxi
YWNrIHRoYXQgd2lsbCBiZSBleGVjdXRlZCBhZnRlciBhbGwgdGhlIHBlbmRpbmcgdXBkYXRlc1xu
ICAgKiBoYXZlIHByb2Nlc3NlZC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJs
aWNJbnN0YW5jZSBUaGUgaW5zdGFuY2UgdG8gdXNlIGFzIGB0aGlzYCBjb250ZXh0LlxuICAgKiBA
cGFyYW0gez9mdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGVkIGFmdGVyIHN0YXRlIGlzIHVwZGF0ZWQu
XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgZW5xdWV1ZUNhbGxiYWNrOiBmdW5jdGlvbiAocHVi
bGljSW5zdGFuY2UsIGNhbGxiYWNrKSB7fSxcblxuICAvKipcbiAgICogRm9yY2VzIGFuIHVwZGF0
ZS4gVGhpcyBzaG91bGQgb25seSBiZSBpbnZva2VkIHdoZW4gaXQgaXMga25vd24gd2l0aFxuICAg
KiBjZXJ0YWludHkgdGhhdCB3ZSBhcmUgKipub3QqKiBpbiBhIERPTSB0cmFuc2FjdGlvbi5cbiAg
ICpcbiAgICogWW91IG1heSB3YW50IHRvIGNhbGwgdGhpcyB3aGVuIHlvdSBrbm93IHRoYXQgc29t
ZSBkZWVwZXIgYXNwZWN0IG9mIHRoZVxuICAgKiBjb21wb25lbnQncyBzdGF0ZSBoYXMgY2hhbmdl
ZCBidXQgYHNldFN0YXRlYCB3YXMgbm90IGNhbGxlZC5cbiAgICpcbiAgICogVGhpcyB3aWxsIG5v
dCBpbnZva2UgYHNob3VsZENvbXBvbmVudFVwZGF0ZWAsIGJ1dCBpdCB3aWxsIGludm9rZVxuICAg
KiBgY29tcG9uZW50V2lsbFVwZGF0ZWAgYW5kIGBjb21wb25lbnREaWRVcGRhdGVgLlxuICAgKlxu
ICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0
IHNob3VsZCByZXJlbmRlci5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlRm9yY2VV
cGRhdGU6IGZ1bmN0aW9uIChwdWJsaWNJbnN0YW5jZSkge1xuICAgIHdhcm5Ob29wKHB1YmxpY0lu
c3RhbmNlLCAnZm9yY2VVcGRhdGUnKTtcbiAgfSxcblxuICAvKipcbiAgICogUmVwbGFjZXMgYWxs
IG9mIHRoZSBzdGF0ZS4gQWx3YXlzIHVzZSB0aGlzIG9yIGBzZXRTdGF0ZWAgdG8gbXV0YXRlIHN0
YXRlLlxuICAgKiBZb3Ugc2hvdWxkIHRyZWF0IGB0aGlzLnN0YXRlYCBhcyBpbW11dGFibGUuXG4g
ICAqXG4gICAqIFRoZXJlIGlzIG5vIGd1YXJhbnRlZSB0aGF0IGB0aGlzLnN0YXRlYCB3aWxsIGJl
IGltbWVkaWF0ZWx5IHVwZGF0ZWQsIHNvXG4gICAqIGFjY2Vzc2luZyBgdGhpcy5zdGF0ZWAgYWZ0
ZXIgY2FsbGluZyB0aGlzIG1ldGhvZCBtYXkgcmV0dXJuIHRoZSBvbGQgdmFsdWUuXG4gICAqXG4g
ICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQg
c2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAcGFyYW0ge29iamVjdH0gY29tcGxldGVTdGF0ZSBOZXh0
IHN0YXRlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGVucXVldWVSZXBsYWNlU3RhdGU6IGZ1
bmN0aW9uIChwdWJsaWNJbnN0YW5jZSwgY29tcGxldGVTdGF0ZSkge1xuICAgIHdhcm5Ob29wKHB1
YmxpY0luc3RhbmNlLCAncmVwbGFjZVN0YXRlJyk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNldHMg
YSBzdWJzZXQgb2YgdGhlIHN0YXRlLiBUaGlzIG9ubHkgZXhpc3RzIGJlY2F1c2UgX3BlbmRpbmdT
dGF0ZSBpc1xuICAgKiBpbnRlcm5hbC4gVGhpcyBwcm92aWRlcyBhIG1lcmdpbmcgc3RyYXRlZ3kg
dGhhdCBpcyBub3QgYXZhaWxhYmxlIHRvIGRlZXBcbiAgICogcHJvcGVydGllcyB3aGljaCBpcyBj
b25mdXNpbmcuIFRPRE86IEV4cG9zZSBwZW5kaW5nU3RhdGUgb3IgZG9uJ3QgdXNlIGl0XG4gICAq
IGR1cmluZyB0aGUgbWVyZ2UuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGlj
SW5zdGFuY2UgVGhlIGluc3RhbmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAcGFyYW0g
e29iamVjdH0gcGFydGlhbFN0YXRlIE5leHQgcGFydGlhbCBzdGF0ZSB0byBiZSBtZXJnZWQgd2l0
aCBzdGF0ZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBlbnF1ZXVlU2V0U3RhdGU6IGZ1bmN0
aW9uIChwdWJsaWNJbnN0YW5jZSwgcGFydGlhbFN0YXRlKSB7XG4gICAgd2Fybk5vb3AocHVibGlj
SW5zdGFuY2UsICdzZXRTdGF0ZScpO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0
Tm9vcFVwZGF0ZVF1ZXVlO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9P
VEVSXG4gKiogLi9+L3JlYWN0L2xpYi9SZWFjdE5vb3BVcGRhdGVRdWV1ZS5qc1xuICoqIG1vZHVs
ZSBpZCA9IDkyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxu
ICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBjYW5EZWZpbmVQcm9w
ZXJ0eSA9IGZhbHNlO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicp
IHtcbiAgdHJ5IHtcbiAgICAvLyAkRmxvd0ZpeE1lIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9v
ay9mbG93L2lzc3Vlcy8yODVcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICd4JywgeyBn
ZXQ6IGZ1bmN0aW9uICgpIHt9IH0pO1xuICAgIGNhbkRlZmluZVByb3BlcnR5ID0gdHJ1ZTtcbiAg
fSBjYXRjaCAoeCkge1xuICAgIC8vIElFIHdpbGwgZmFpbCBvbiBkZWZpbmVQcm9wZXJ0eVxuICB9
XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2FuRGVmaW5lUHJvcGVydHk7XG5cblxuLyoqKioqKioq
KioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QvbGliL2NhbkRlZmlu
ZVByb3BlcnR5LmpzXG4gKiogbW9kdWxlIGlkID0gOTNcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxu
ICoqLyIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhw
b3J0c1tcImRlZmF1bHRcIl0gPSBjb21wb3NlO1xuLyoqXG4gKiBDb21wb3NlcyBzaW5nbGUtYXJn
dW1lbnQgZnVuY3Rpb25zIGZyb20gcmlnaHQgdG8gbGVmdC4gVGhlIHJpZ2h0bW9zdFxuICogZnVu
Y3Rpb24gY2FuIHRha2UgbXVsdGlwbGUgYXJndW1lbnRzIGFzIGl0IHByb3ZpZGVzIHRoZSBzaWdu
YXR1cmUgZm9yXG4gKiB0aGUgcmVzdWx0aW5nIGNvbXBvc2l0ZSBmdW5jdGlvbi5cbiAqXG4gKiBA
cGFyYW0gey4uLkZ1bmN0aW9ufSBmdW5jcyBUaGUgZnVuY3Rpb25zIHRvIGNvbXBvc2UuXG4gKiBA
cmV0dXJucyB7RnVuY3Rpb259IEEgZnVuY3Rpb24gb2J0YWluZWQgYnkgY29tcG9zaW5nIHRoZSBh
cmd1bWVudCBmdW5jdGlvbnNcbiAqIGZyb20gcmlnaHQgdG8gbGVmdC4gRm9yIGV4YW1wbGUsIGNv
bXBvc2UoZiwgZywgaCkgaXMgaWRlbnRpY2FsIHRvIGRvaW5nXG4gKiAoLi4uYXJncykgPT4gZihn
KGgoLi4uYXJncykpKS5cbiAqL1xuXG5mdW5jdGlvbiBjb21wb3NlKCkge1xuICBmb3IgKHZhciBf
bGVuID0gYXJndW1lbnRzLmxlbmd0aCwgZnVuY3MgPSBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9r
ZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICBmdW5jc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtc
biAgfVxuXG4gIGlmIChmdW5jcy5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZnVuY3Rpb24g
KGFyZykge1xuICAgICAgcmV0dXJuIGFyZztcbiAgICB9O1xuICB9XG5cbiAgaWYgKGZ1bmNzLmxl
bmd0aCA9PT0gMSkge1xuICAgIHJldHVybiBmdW5jc1swXTtcbiAgfVxuXG4gIHJldHVybiBmdW5j
cy5yZWR1Y2UoZnVuY3Rpb24gKGEsIGIpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAg
ICAgcmV0dXJuIGEoYi5hcHBseSh1bmRlZmluZWQsIGFyZ3VtZW50cykpO1xuICAgIH07XG4gIH0p
O1xufVxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+
L3JlZHV4L2xpYi9jb21wb3NlLmpzXG4gKiogbW9kdWxlIGlkID0gOTRcbiAqKiBtb2R1bGUgY2h1
bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1
ZTtcbmV4cG9ydHMuQWN0aW9uVHlwZXMgPSB1bmRlZmluZWQ7XG5leHBvcnRzWydkZWZhdWx0J10g
PSBjcmVhdGVTdG9yZTtcblxudmFyIF9pc1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnbG9kYXNoL2lz
UGxhaW5PYmplY3QnKTtcblxudmFyIF9pc1BsYWluT2JqZWN0MiA9IF9pbnRlcm9wUmVxdWlyZURl
ZmF1bHQoX2lzUGxhaW5PYmplY3QpO1xuXG52YXIgX3N5bWJvbE9ic2VydmFibGUgPSByZXF1aXJl
KCdzeW1ib2wtb2JzZXJ2YWJsZScpO1xuXG52YXIgX3N5bWJvbE9ic2VydmFibGUyID0gX2ludGVy
b3BSZXF1aXJlRGVmYXVsdChfc3ltYm9sT2JzZXJ2YWJsZSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9w
UmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmog
OiB7ICdkZWZhdWx0Jzogb2JqIH07IH1cblxuLyoqXG4gKiBUaGVzZSBhcmUgcHJpdmF0ZSBhY3Rp
b24gdHlwZXMgcmVzZXJ2ZWQgYnkgUmVkdXguXG4gKiBGb3IgYW55IHVua25vd24gYWN0aW9ucywg
eW91IG11c3QgcmV0dXJuIHRoZSBjdXJyZW50IHN0YXRlLlxuICogSWYgdGhlIGN1cnJlbnQgc3Rh
dGUgaXMgdW5kZWZpbmVkLCB5b3UgbXVzdCByZXR1cm4gdGhlIGluaXRpYWwgc3RhdGUuXG4gKiBE
byBub3QgcmVmZXJlbmNlIHRoZXNlIGFjdGlvbiB0eXBlcyBkaXJlY3RseSBpbiB5b3VyIGNvZGUu
XG4gKi9cbnZhciBBY3Rpb25UeXBlcyA9IGV4cG9ydHMuQWN0aW9uVHlwZXMgPSB7XG4gIElOSVQ6
ICdAQHJlZHV4L0lOSVQnXG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBSZWR1eCBzdG9yZSB0aGF0
IGhvbGRzIHRoZSBzdGF0ZSB0cmVlLlxuICAgKiBUaGUgb25seSB3YXkgdG8gY2hhbmdlIHRoZSBk
YXRhIGluIHRoZSBzdG9yZSBpcyB0byBjYWxsIGBkaXNwYXRjaCgpYCBvbiBpdC5cbiAgICpcbiAg
ICogVGhlcmUgc2hvdWxkIG9ubHkgYmUgYSBzaW5nbGUgc3RvcmUgaW4geW91ciBhcHAuIFRvIHNw
ZWNpZnkgaG93IGRpZmZlcmVudFxuICAgKiBwYXJ0cyBvZiB0aGUgc3RhdGUgdHJlZSByZXNwb25k
IHRvIGFjdGlvbnMsIHlvdSBtYXkgY29tYmluZSBzZXZlcmFsIHJlZHVjZXJzXG4gICAqIGludG8g
YSBzaW5nbGUgcmVkdWNlciBmdW5jdGlvbiBieSB1c2luZyBgY29tYmluZVJlZHVjZXJzYC5cbiAg
ICpcbiAgICogQHBhcmFtIHtGdW5jdGlvbn0gcmVkdWNlciBBIGZ1bmN0aW9uIHRoYXQgcmV0dXJu
cyB0aGUgbmV4dCBzdGF0ZSB0cmVlLCBnaXZlblxuICAgKiB0aGUgY3VycmVudCBzdGF0ZSB0cmVl
IGFuZCB0aGUgYWN0aW9uIHRvIGhhbmRsZS5cbiAgICpcbiAgICogQHBhcmFtIHthbnl9IFtwcmVs
b2FkZWRTdGF0ZV0gVGhlIGluaXRpYWwgc3RhdGUuIFlvdSBtYXkgb3B0aW9uYWxseSBzcGVjaWZ5
IGl0XG4gICAqIHRvIGh5ZHJhdGUgdGhlIHN0YXRlIGZyb20gdGhlIHNlcnZlciBpbiB1bml2ZXJz
YWwgYXBwcywgb3IgdG8gcmVzdG9yZSBhXG4gICAqIHByZXZpb3VzbHkgc2VyaWFsaXplZCB1c2Vy
IHNlc3Npb24uXG4gICAqIElmIHlvdSB1c2UgYGNvbWJpbmVSZWR1Y2Vyc2AgdG8gcHJvZHVjZSB0
aGUgcm9vdCByZWR1Y2VyIGZ1bmN0aW9uLCB0aGlzIG11c3QgYmVcbiAgICogYW4gb2JqZWN0IHdp
dGggdGhlIHNhbWUgc2hhcGUgYXMgYGNvbWJpbmVSZWR1Y2Vyc2Aga2V5cy5cbiAgICpcbiAgICog
QHBhcmFtIHtGdW5jdGlvbn0gW2VuaGFuY2VyXSBUaGUgc3RvcmUgZW5oYW5jZXIuIFlvdSBtYXkg
b3B0aW9uYWxseSBzcGVjaWZ5IGl0XG4gICAqIHRvIGVuaGFuY2UgdGhlIHN0b3JlIHdpdGggdGhp
cmQtcGFydHkgY2FwYWJpbGl0aWVzIHN1Y2ggYXMgbWlkZGxld2FyZSxcbiAgICogdGltZSB0cmF2
ZWwsIHBlcnNpc3RlbmNlLCBldGMuIFRoZSBvbmx5IHN0b3JlIGVuaGFuY2VyIHRoYXQgc2hpcHMg
d2l0aCBSZWR1eFxuICAgKiBpcyBgYXBwbHlNaWRkbGV3YXJlKClgLlxuICAgKlxuICAgKiBAcmV0
dXJucyB7U3RvcmV9IEEgUmVkdXggc3RvcmUgdGhhdCBsZXRzIHlvdSByZWFkIHRoZSBzdGF0ZSwg
ZGlzcGF0Y2ggYWN0aW9uc1xuICAgKiBhbmQgc3Vic2NyaWJlIHRvIGNoYW5nZXMuXG4gICAqL1xu
fTtmdW5jdGlvbiBjcmVhdGVTdG9yZShyZWR1Y2VyLCBwcmVsb2FkZWRTdGF0ZSwgZW5oYW5jZXIp
IHtcbiAgdmFyIF9yZWYyO1xuXG4gIGlmICh0eXBlb2YgcHJlbG9hZGVkU3RhdGUgPT09ICdmdW5j
dGlvbicgJiYgdHlwZW9mIGVuaGFuY2VyID09PSAndW5kZWZpbmVkJykge1xuICAgIGVuaGFuY2Vy
ID0gcHJlbG9hZGVkU3RhdGU7XG4gICAgcHJlbG9hZGVkU3RhdGUgPSB1bmRlZmluZWQ7XG4gIH1c
blxuICBpZiAodHlwZW9mIGVuaGFuY2VyICE9PSAndW5kZWZpbmVkJykge1xuICAgIGlmICh0eXBl
b2YgZW5oYW5jZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhw
ZWN0ZWQgdGhlIGVuaGFuY2VyIHRvIGJlIGEgZnVuY3Rpb24uJyk7XG4gICAgfVxuXG4gICAgcmV0
dXJuIGVuaGFuY2VyKGNyZWF0ZVN0b3JlKShyZWR1Y2VyLCBwcmVsb2FkZWRTdGF0ZSk7XG4gIH1c
blxuICBpZiAodHlwZW9mIHJlZHVjZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcg
RXJyb3IoJ0V4cGVjdGVkIHRoZSByZWR1Y2VyIHRvIGJlIGEgZnVuY3Rpb24uJyk7XG4gIH1cblxu
ICB2YXIgY3VycmVudFJlZHVjZXIgPSByZWR1Y2VyO1xuICB2YXIgY3VycmVudFN0YXRlID0gcHJl
bG9hZGVkU3RhdGU7XG4gIHZhciBjdXJyZW50TGlzdGVuZXJzID0gW107XG4gIHZhciBuZXh0TGlz
dGVuZXJzID0gY3VycmVudExpc3RlbmVycztcbiAgdmFyIGlzRGlzcGF0Y2hpbmcgPSBmYWxzZTtc
blxuICBmdW5jdGlvbiBlbnN1cmVDYW5NdXRhdGVOZXh0TGlzdGVuZXJzKCkge1xuICAgIGlmIChu
ZXh0TGlzdGVuZXJzID09PSBjdXJyZW50TGlzdGVuZXJzKSB7XG4gICAgICBuZXh0TGlzdGVuZXJz
ID0gY3VycmVudExpc3RlbmVycy5zbGljZSgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBS
ZWFkcyB0aGUgc3RhdGUgdHJlZSBtYW5hZ2VkIGJ5IHRoZSBzdG9yZS5cbiAgICpcbiAgICogQHJl
dHVybnMge2FueX0gVGhlIGN1cnJlbnQgc3RhdGUgdHJlZSBvZiB5b3VyIGFwcGxpY2F0aW9uLlxu
ICAgKi9cbiAgZnVuY3Rpb24gZ2V0U3RhdGUoKSB7XG4gICAgcmV0dXJuIGN1cnJlbnRTdGF0ZTtc
biAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgY2hhbmdlIGxpc3RlbmVyLiBJdCB3aWxsIGJlIGNh
bGxlZCBhbnkgdGltZSBhbiBhY3Rpb24gaXMgZGlzcGF0Y2hlZCxcbiAgICogYW5kIHNvbWUgcGFy
dCBvZiB0aGUgc3RhdGUgdHJlZSBtYXkgcG90ZW50aWFsbHkgaGF2ZSBjaGFuZ2VkLiBZb3UgbWF5
IHRoZW5cbiAgICogY2FsbCBgZ2V0U3RhdGUoKWAgdG8gcmVhZCB0aGUgY3VycmVudCBzdGF0ZSB0
cmVlIGluc2lkZSB0aGUgY2FsbGJhY2suXG4gICAqXG4gICAqIFlvdSBtYXkgY2FsbCBgZGlzcGF0
Y2goKWAgZnJvbSBhIGNoYW5nZSBsaXN0ZW5lciwgd2l0aCB0aGUgZm9sbG93aW5nXG4gICAqIGNh
dmVhdHM6XG4gICAqXG4gICAqIDEuIFRoZSBzdWJzY3JpcHRpb25zIGFyZSBzbmFwc2hvdHRlZCBq
dXN0IGJlZm9yZSBldmVyeSBgZGlzcGF0Y2goKWAgY2FsbC5cbiAgICogSWYgeW91IHN1YnNjcmli
ZSBvciB1bnN1YnNjcmliZSB3aGlsZSB0aGUgbGlzdGVuZXJzIGFyZSBiZWluZyBpbnZva2VkLCB0
aGlzXG4gICAqIHdpbGwgbm90IGhhdmUgYW55IGVmZmVjdCBvbiB0aGUgYGRpc3BhdGNoKClgIHRo
YXQgaXMgY3VycmVudGx5IGluIHByb2dyZXNzLlxuICAgKiBIb3dldmVyLCB0aGUgbmV4dCBgZGlz
cGF0Y2goKWAgY2FsbCwgd2hldGhlciBuZXN0ZWQgb3Igbm90LCB3aWxsIHVzZSBhIG1vcmVcbiAg
ICogcmVjZW50IHNuYXBzaG90IG9mIHRoZSBzdWJzY3JpcHRpb24gbGlzdC5cbiAgICpcbiAgICog
Mi4gVGhlIGxpc3RlbmVyIHNob3VsZCBub3QgZXhwZWN0IHRvIHNlZSBhbGwgc3RhdGUgY2hhbmdl
cywgYXMgdGhlIHN0YXRlXG4gICAqIG1pZ2h0IGhhdmUgYmVlbiB1cGRhdGVkIG11bHRpcGxlIHRp
bWVzIGR1cmluZyBhIG5lc3RlZCBgZGlzcGF0Y2goKWAgYmVmb3JlXG4gICAqIHRoZSBsaXN0ZW5l
ciBpcyBjYWxsZWQuIEl0IGlzLCBob3dldmVyLCBndWFyYW50ZWVkIHRoYXQgYWxsIHN1YnNjcmli
ZXJzXG4gICAqIHJlZ2lzdGVyZWQgYmVmb3JlIHRoZSBgZGlzcGF0Y2goKWAgc3RhcnRlZCB3aWxs
IGJlIGNhbGxlZCB3aXRoIHRoZSBsYXRlc3RcbiAgICogc3RhdGUgYnkgdGhlIHRpbWUgaXQgZXhp
dHMuXG4gICAqXG4gICAqIEBwYXJhbSB7RnVuY3Rpb259IGxpc3RlbmVyIEEgY2FsbGJhY2sgdG8g
YmUgaW52b2tlZCBvbiBldmVyeSBkaXNwYXRjaC5cbiAgICogQHJldHVybnMge0Z1bmN0aW9ufSBB
IGZ1bmN0aW9uIHRvIHJlbW92ZSB0aGlzIGNoYW5nZSBsaXN0ZW5lci5cbiAgICovXG4gIGZ1bmN0
aW9uIHN1YnNjcmliZShsaXN0ZW5lcikge1xuICAgIGlmICh0eXBlb2YgbGlzdGVuZXIgIT09ICdm
dW5jdGlvbicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgbGlzdGVuZXIgdG8g
YmUgYSBmdW5jdGlvbi4nKTtcbiAgICB9XG5cbiAgICB2YXIgaXNTdWJzY3JpYmVkID0gdHJ1ZTtc
blxuICAgIGVuc3VyZUNhbk11dGF0ZU5leHRMaXN0ZW5lcnMoKTtcbiAgICBuZXh0TGlzdGVuZXJz
LnB1c2gobGlzdGVuZXIpO1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIHVuc3Vic2NyaWJlKCkge1xu
ICAgICAgaWYgKCFpc1N1YnNjcmliZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4g
ICAgICBpc1N1YnNjcmliZWQgPSBmYWxzZTtcblxuICAgICAgZW5zdXJlQ2FuTXV0YXRlTmV4dExp
c3RlbmVycygpO1xuICAgICAgdmFyIGluZGV4ID0gbmV4dExpc3RlbmVycy5pbmRleE9mKGxpc3Rl
bmVyKTtcbiAgICAgIG5leHRMaXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9O1xuICB9
XG5cbiAgLyoqXG4gICAqIERpc3BhdGNoZXMgYW4gYWN0aW9uLiBJdCBpcyB0aGUgb25seSB3YXkg
dG8gdHJpZ2dlciBhIHN0YXRlIGNoYW5nZS5cbiAgICpcbiAgICogVGhlIGByZWR1Y2VyYCBmdW5j
dGlvbiwgdXNlZCB0byBjcmVhdGUgdGhlIHN0b3JlLCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoZVxu
ICAgKiBjdXJyZW50IHN0YXRlIHRyZWUgYW5kIHRoZSBnaXZlbiBgYWN0aW9uYC4gSXRzIHJldHVy
biB2YWx1ZSB3aWxsXG4gICAqIGJlIGNvbnNpZGVyZWQgdGhlICoqbmV4dCoqIHN0YXRlIG9mIHRo
ZSB0cmVlLCBhbmQgdGhlIGNoYW5nZSBsaXN0ZW5lcnNcbiAgICogd2lsbCBiZSBub3RpZmllZC5c
biAgICpcbiAgICogVGhlIGJhc2UgaW1wbGVtZW50YXRpb24gb25seSBzdXBwb3J0cyBwbGFpbiBv
YmplY3QgYWN0aW9ucy4gSWYgeW91IHdhbnQgdG9cbiAgICogZGlzcGF0Y2ggYSBQcm9taXNlLCBh
biBPYnNlcnZhYmxlLCBhIHRodW5rLCBvciBzb21ldGhpbmcgZWxzZSwgeW91IG5lZWQgdG9cbiAg
ICogd3JhcCB5b3VyIHN0b3JlIGNyZWF0aW5nIGZ1bmN0aW9uIGludG8gdGhlIGNvcnJlc3BvbmRp
bmcgbWlkZGxld2FyZS4gRm9yXG4gICAqIGV4YW1wbGUsIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBm
b3IgdGhlIGByZWR1eC10aHVua2AgcGFja2FnZS4gRXZlbiB0aGVcbiAgICogbWlkZGxld2FyZSB3
aWxsIGV2ZW50dWFsbHkgZGlzcGF0Y2ggcGxhaW4gb2JqZWN0IGFjdGlvbnMgdXNpbmcgdGhpcyBt
ZXRob2QuXG4gICAqXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBhY3Rpb24gQSBwbGFpbiBvYmplY3Qg
cmVwcmVzZW50aW5nIOKAnHdoYXQgY2hhbmdlZOKAnS4gSXQgaXNcbiAgICogYSBnb29kIGlkZWEg
dG8ga2VlcCBhY3Rpb25zIHNlcmlhbGl6YWJsZSBzbyB5b3UgY2FuIHJlY29yZCBhbmQgcmVwbGF5
IHVzZXJcbiAgICogc2Vzc2lvbnMsIG9yIHVzZSB0aGUgdGltZSB0cmF2ZWxsaW5nIGByZWR1eC1k
ZXZ0b29sc2AuIEFuIGFjdGlvbiBtdXN0IGhhdmVcbiAgICogYSBgdHlwZWAgcHJvcGVydHkgd2hp
Y2ggbWF5IG5vdCBiZSBgdW5kZWZpbmVkYC4gSXQgaXMgYSBnb29kIGlkZWEgdG8gdXNlXG4gICAq
IHN0cmluZyBjb25zdGFudHMgZm9yIGFjdGlvbiB0eXBlcy5cbiAgICpcbiAgICogQHJldHVybnMg
e09iamVjdH0gRm9yIGNvbnZlbmllbmNlLCB0aGUgc2FtZSBhY3Rpb24gb2JqZWN0IHlvdSBkaXNw
YXRjaGVkLlxuICAgKlxuICAgKiBOb3RlIHRoYXQsIGlmIHlvdSB1c2UgYSBjdXN0b20gbWlkZGxl
d2FyZSwgaXQgbWF5IHdyYXAgYGRpc3BhdGNoKClgIHRvXG4gICAqIHJldHVybiBzb21ldGhpbmcg
ZWxzZSAoZm9yIGV4YW1wbGUsIGEgUHJvbWlzZSB5b3UgY2FuIGF3YWl0KS5cbiAgICovXG4gIGZ1
bmN0aW9uIGRpc3BhdGNoKGFjdGlvbikge1xuICAgIGlmICghKDAsIF9pc1BsYWluT2JqZWN0Mlsn
ZGVmYXVsdCddKShhY3Rpb24pKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FjdGlvbnMgbXVz
dCBiZSBwbGFpbiBvYmplY3RzLiAnICsgJ1VzZSBjdXN0b20gbWlkZGxld2FyZSBmb3IgYXN5bmMg
YWN0aW9ucy4nKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGFjdGlvbi50eXBlID09PSAndW5k
ZWZpbmVkJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdBY3Rpb25zIG1heSBub3QgaGF2ZSBh
biB1bmRlZmluZWQgXCJ0eXBlXCIgcHJvcGVydHkuICcgKyAnSGF2ZSB5b3UgbWlzc3BlbGxlZCBh
IGNvbnN0YW50PycpO1xuICAgIH1cblxuICAgIGlmIChpc0Rpc3BhdGNoaW5nKSB7XG4gICAgICB0
aHJvdyBuZXcgRXJyb3IoJ1JlZHVjZXJzIG1heSBub3QgZGlzcGF0Y2ggYWN0aW9ucy4nKTtcbiAg
ICB9XG5cbiAgICB0cnkge1xuICAgICAgaXNEaXNwYXRjaGluZyA9IHRydWU7XG4gICAgICBjdXJy
ZW50U3RhdGUgPSBjdXJyZW50UmVkdWNlcihjdXJyZW50U3RhdGUsIGFjdGlvbik7XG4gICAgfSBm
aW5hbGx5IHtcbiAgICAgIGlzRGlzcGF0Y2hpbmcgPSBmYWxzZTtcbiAgICB9XG5cbiAgICB2YXIg
bGlzdGVuZXJzID0gY3VycmVudExpc3RlbmVycyA9IG5leHRMaXN0ZW5lcnM7XG4gICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBsaXN0ZW5lcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBsaXN0ZW5l
ciA9IGxpc3RlbmVyc1tpXTtcbiAgICAgIGxpc3RlbmVyKCk7XG4gICAgfVxuXG4gICAgcmV0dXJu
IGFjdGlvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlcyB0aGUgcmVkdWNlciBjdXJyZW50
bHkgdXNlZCBieSB0aGUgc3RvcmUgdG8gY2FsY3VsYXRlIHRoZSBzdGF0ZS5cbiAgICpcbiAgICog
WW91IG1pZ2h0IG5lZWQgdGhpcyBpZiB5b3VyIGFwcCBpbXBsZW1lbnRzIGNvZGUgc3BsaXR0aW5n
IGFuZCB5b3Ugd2FudCB0b1xuICAgKiBsb2FkIHNvbWUgb2YgdGhlIHJlZHVjZXJzIGR5bmFtaWNh
bGx5LiBZb3UgbWlnaHQgYWxzbyBuZWVkIHRoaXMgaWYgeW91XG4gICAqIGltcGxlbWVudCBhIGhv
dCByZWxvYWRpbmcgbWVjaGFuaXNtIGZvciBSZWR1eC5cbiAgICpcbiAgICogQHBhcmFtIHtGdW5j
dGlvbn0gbmV4dFJlZHVjZXIgVGhlIHJlZHVjZXIgZm9yIHRoZSBzdG9yZSB0byB1c2UgaW5zdGVh
ZC5cbiAgICogQHJldHVybnMge3ZvaWR9XG4gICAqL1xuICBmdW5jdGlvbiByZXBsYWNlUmVkdWNl
cihuZXh0UmVkdWNlcikge1xuICAgIGlmICh0eXBlb2YgbmV4dFJlZHVjZXIgIT09ICdmdW5jdGlv
bicpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRXhwZWN0ZWQgdGhlIG5leHRSZWR1Y2VyIHRv
IGJlIGEgZnVuY3Rpb24uJyk7XG4gICAgfVxuXG4gICAgY3VycmVudFJlZHVjZXIgPSBuZXh0UmVk
dWNlcjtcbiAgICBkaXNwYXRjaCh7IHR5cGU6IEFjdGlvblR5cGVzLklOSVQgfSk7XG4gIH1cblxu
ICAvKipcbiAgICogSW50ZXJvcGVyYWJpbGl0eSBwb2ludCBmb3Igb2JzZXJ2YWJsZS9yZWFjdGl2
ZSBsaWJyYXJpZXMuXG4gICAqIEByZXR1cm5zIHtvYnNlcnZhYmxlfSBBIG1pbmltYWwgb2JzZXJ2
YWJsZSBvZiBzdGF0ZSBjaGFuZ2VzLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRo
ZSBvYnNlcnZhYmxlIHByb3Bvc2FsOlxuICAgKiBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9w
b3NhbC1vYnNlcnZhYmxlXG4gICAqL1xuICBmdW5jdGlvbiBvYnNlcnZhYmxlKCkge1xuICAgIHZh
ciBfcmVmO1xuXG4gICAgdmFyIG91dGVyU3Vic2NyaWJlID0gc3Vic2NyaWJlO1xuICAgIHJldHVy
biBfcmVmID0ge1xuICAgICAgLyoqXG4gICAgICAgKiBUaGUgbWluaW1hbCBvYnNlcnZhYmxlIHN1
YnNjcmlwdGlvbiBtZXRob2QuXG4gICAgICAgKiBAcGFyYW0ge09iamVjdH0gb2JzZXJ2ZXIgQW55
IG9iamVjdCB0aGF0IGNhbiBiZSB1c2VkIGFzIGFuIG9ic2VydmVyLlxuICAgICAgICogVGhlIG9i
c2VydmVyIG9iamVjdCBzaG91bGQgaGF2ZSBhIGBuZXh0YCBtZXRob2QuXG4gICAgICAgKiBAcmV0
dXJucyB7c3Vic2NyaXB0aW9ufSBBbiBvYmplY3Qgd2l0aCBhbiBgdW5zdWJzY3JpYmVgIG1ldGhv
ZCB0aGF0IGNhblxuICAgICAgICogYmUgdXNlZCB0byB1bnN1YnNjcmliZSB0aGUgb2JzZXJ2YWJs
ZSBmcm9tIHRoZSBzdG9yZSwgYW5kIHByZXZlbnQgZnVydGhlclxuICAgICAgICogZW1pc3Npb24g
b2YgdmFsdWVzIGZyb20gdGhlIG9ic2VydmFibGUuXG4gICAgICAgKi9cbiAgICAgIHN1YnNjcmli
ZTogZnVuY3Rpb24gc3Vic2NyaWJlKG9ic2VydmVyKSB7XG4gICAgICAgIGlmICh0eXBlb2Ygb2Jz
ZXJ2ZXIgIT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignRXhw
ZWN0ZWQgdGhlIG9ic2VydmVyIHRvIGJlIGFuIG9iamVjdC4nKTtcbiAgICAgICAgfVxuXG4gICAg
ICAgIGZ1bmN0aW9uIG9ic2VydmVTdGF0ZSgpIHtcbiAgICAgICAgICBpZiAob2JzZXJ2ZXIubmV4
dCkge1xuICAgICAgICAgICAgb2JzZXJ2ZXIubmV4dChnZXRTdGF0ZSgpKTtcbiAgICAgICAgICB9
XG4gICAgICAgIH1cblxuICAgICAgICBvYnNlcnZlU3RhdGUoKTtcbiAgICAgICAgdmFyIHVuc3Vi
c2NyaWJlID0gb3V0ZXJTdWJzY3JpYmUob2JzZXJ2ZVN0YXRlKTtcbiAgICAgICAgcmV0dXJuIHsg
dW5zdWJzY3JpYmU6IHVuc3Vic2NyaWJlIH07XG4gICAgICB9XG4gICAgfSwgX3JlZltfc3ltYm9s
T2JzZXJ2YWJsZTJbJ2RlZmF1bHQnXV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gdGhp
cztcbiAgICB9LCBfcmVmO1xuICB9XG5cbiAgLy8gV2hlbiBhIHN0b3JlIGlzIGNyZWF0ZWQsIGFu
IFwiSU5JVFwiIGFjdGlvbiBpcyBkaXNwYXRjaGVkIHNvIHRoYXQgZXZlcnlcbiAgLy8gcmVkdWNl
ciByZXR1cm5zIHRoZWlyIGluaXRpYWwgc3RhdGUuIFRoaXMgZWZmZWN0aXZlbHkgcG9wdWxhdGVz
XG4gIC8vIHRoZSBpbml0aWFsIHN0YXRlIHRyZWUuXG4gIGRpc3BhdGNoKHsgdHlwZTogQWN0aW9u
VHlwZXMuSU5JVCB9KTtcblxuICByZXR1cm4gX3JlZjIgPSB7XG4gICAgZGlzcGF0Y2g6IGRpc3Bh
dGNoLFxuICAgIHN1YnNjcmliZTogc3Vic2NyaWJlLFxuICAgIGdldFN0YXRlOiBnZXRTdGF0ZSxc
biAgICByZXBsYWNlUmVkdWNlcjogcmVwbGFjZVJlZHVjZXJcbiAgfSwgX3JlZjJbX3N5bWJvbE9i
c2VydmFibGUyWydkZWZhdWx0J11dID0gb2JzZXJ2YWJsZSwgX3JlZjI7XG59XG5cblxuLyoqKioq
KioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVkdXgvbGliL2NyZWF0
ZVN0b3JlLmpzXG4gKiogbW9kdWxlIGlkID0gOTVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoq
LyIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHNb
J2RlZmF1bHQnXSA9IHdhcm5pbmc7XG4vKipcbiAqIFByaW50cyBhIHdhcm5pbmcgaW4gdGhlIGNv
bnNvbGUgaWYgaXQgZXhpc3RzLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBtZXNzYWdlIFRoZSB3
YXJuaW5nIG1lc3NhZ2UuXG4gKiBAcmV0dXJucyB7dm9pZH1cbiAqL1xuZnVuY3Rpb24gd2Fybmlu
ZyhtZXNzYWdlKSB7XG4gIC8qIGVzbGludC1kaXNhYmxlIG5vLWNvbnNvbGUgKi9cbiAgaWYgKHR5
cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgY29uc29sZS5lcnJvciA9PT0g
J2Z1bmN0aW9uJykge1xuICAgIGNvbnNvbGUuZXJyb3IobWVzc2FnZSk7XG4gIH1cbiAgLyogZXNs
aW50LWVuYWJsZSBuby1jb25zb2xlICovXG4gIHRyeSB7XG4gICAgLy8gVGhpcyBlcnJvciB3YXMg
dGhyb3duIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCBpZiB5b3UgZW5hYmxlXG4gICAgLy8gXCJi
cmVhayBvbiBhbGwgZXhjZXB0aW9uc1wiIGluIHlvdXIgY29uc29sZSxcbiAgICAvLyBpdCB3b3Vs
ZCBwYXVzZSB0aGUgZXhlY3V0aW9uIGF0IHRoaXMgbGluZS5cbiAgICB0aHJvdyBuZXcgRXJyb3Io
bWVzc2FnZSk7XG4gICAgLyogZXNsaW50LWRpc2FibGUgbm8tZW1wdHkgKi9cbiAgfSBjYXRjaCAo
ZSkge31cbiAgLyogZXNsaW50LWVuYWJsZSBuby1lbXB0eSAqL1xufVxuXG5cbi8qKioqKioqKioq
KioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlZHV4L2xpYi91dGlscy93YXJu
aW5nLmpzXG4gKiogbW9kdWxlIGlkID0gOTZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIs
Ii8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBf
YXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuXG52YXIgZW1wdHlPYmplY3QgPSBy
ZXF1aXJlKCdmYmpzL2xpYi9lbXB0eU9iamVjdCcpO1xudmFyIF9pbnZhcmlhbnQgPSByZXF1aXJl
KCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHtcbiAgdmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5n
Jyk7XG59XG5cbnZhciBNSVhJTlNfS0VZID0gJ21peGlucyc7XG5cbi8vIEhlbHBlciBmdW5jdGlv
biB0byBhbGxvdyB0aGUgY3JlYXRpb24gb2YgYW5vbnltb3VzIGZ1bmN0aW9ucyB3aGljaCBkbyBu
b3Rcbi8vIGhhdmUgLm5hbWUgc2V0IHRvIHRoZSBuYW1lIG9mIHRoZSB2YXJpYWJsZSBiZWluZyBh
c3NpZ25lZCB0by5cbmZ1bmN0aW9uIGlkZW50aXR5KGZuKSB7XG4gIHJldHVybiBmbjtcbn1cblxu
dmFyIFJlYWN0UHJvcFR5cGVMb2NhdGlvbk5hbWVzO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicpIHtcbiAgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXMgPSB7XG4g
ICAgcHJvcDogJ3Byb3AnLFxuICAgIGNvbnRleHQ6ICdjb250ZXh0JyxcbiAgICBjaGlsZENvbnRl
eHQ6ICdjaGlsZCBjb250ZXh0J1xuICB9O1xufSBlbHNlIHtcbiAgUmVhY3RQcm9wVHlwZUxvY2F0
aW9uTmFtZXMgPSB7fTtcbn1cblxuZnVuY3Rpb24gZmFjdG9yeShSZWFjdENvbXBvbmVudCwgaXNW
YWxpZEVsZW1lbnQsIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlKSB7XG4gIC8qKlxuICAgKiBQb2xpY2ll
cyB0aGF0IGRlc2NyaWJlIG1ldGhvZHMgaW4gYFJlYWN0Q2xhc3NJbnRlcmZhY2VgLlxuICAgKi9c
blxuICB2YXIgaW5qZWN0ZWRNaXhpbnMgPSBbXTtcblxuICAvKipcbiAgICogQ29tcG9zaXRlIGNv
bXBvbmVudHMgYXJlIGhpZ2hlci1sZXZlbCBjb21wb25lbnRzIHRoYXQgY29tcG9zZSBvdGhlciBj
b21wb3NpdGVcbiAgICogb3IgaG9zdCBjb21wb25lbnRzLlxuICAgKlxuICAgKiBUbyBjcmVhdGUg
YSBuZXcgdHlwZSBvZiBgUmVhY3RDbGFzc2AsIHBhc3MgYSBzcGVjaWZpY2F0aW9uIG9mXG4gICAq
IHlvdXIgbmV3IGNsYXNzIHRvIGBSZWFjdC5jcmVhdGVDbGFzc2AuIFRoZSBvbmx5IHJlcXVpcmVt
ZW50IG9mIHlvdXIgY2xhc3NcbiAgICogc3BlY2lmaWNhdGlvbiBpcyB0aGF0IHlvdSBpbXBsZW1l
bnQgYSBgcmVuZGVyYCBtZXRob2QuXG4gICAqXG4gICAqICAgdmFyIE15Q29tcG9uZW50ID0gUmVh
Y3QuY3JlYXRlQ2xhc3Moe1xuICAgKiAgICAgcmVuZGVyOiBmdW5jdGlvbigpIHtcbiAgICogICAg
ICAgcmV0dXJuIDxkaXY+SGVsbG8gV29ybGQ8L2Rpdj47XG4gICAqICAgICB9XG4gICAqICAgfSk7
XG4gICAqXG4gICAqIFRoZSBjbGFzcyBzcGVjaWZpY2F0aW9uIHN1cHBvcnRzIGEgc3BlY2lmaWMg
cHJvdG9jb2wgb2YgbWV0aG9kcyB0aGF0IGhhdmVcbiAgICogc3BlY2lhbCBtZWFuaW5nIChlLmcu
IGByZW5kZXJgKS4gU2VlIGBSZWFjdENsYXNzSW50ZXJmYWNlYCBmb3JcbiAgICogbW9yZSB0aGUg
Y29tcHJlaGVuc2l2ZSBwcm90b2NvbC4gQW55IG90aGVyIHByb3BlcnRpZXMgYW5kIG1ldGhvZHMg
aW4gdGhlXG4gICAqIGNsYXNzIHNwZWNpZmljYXRpb24gd2lsbCBiZSBhdmFpbGFibGUgb24gdGhl
IHByb3RvdHlwZS5cbiAgICpcbiAgICogQGludGVyZmFjZSBSZWFjdENsYXNzSW50ZXJmYWNlXG4g
ICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgdmFyIFJlYWN0Q2xhc3NJbnRlcmZhY2UgPSB7XG4gICAg
LyoqXG4gICAgICogQW4gYXJyYXkgb2YgTWl4aW4gb2JqZWN0cyB0byBpbmNsdWRlIHdoZW4gZGVm
aW5pbmcgeW91ciBjb21wb25lbnQuXG4gICAgICpcbiAgICAgKiBAdHlwZSB7YXJyYXl9XG4gICAg
ICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgbWl4aW5zOiAnREVGSU5FX01BTlknLFxuXG4gICAg
LyoqXG4gICAgICogQW4gb2JqZWN0IGNvbnRhaW5pbmcgcHJvcGVydGllcyBhbmQgbWV0aG9kcyB0
aGF0IHNob3VsZCBiZSBkZWZpbmVkIG9uXG4gICAgICogdGhlIGNvbXBvbmVudCdzIGNvbnN0cnVj
dG9yIGluc3RlYWQgb2YgaXRzIHByb3RvdHlwZSAoc3RhdGljIG1ldGhvZHMpLlxuICAgICAqXG4g
ICAgICogQHR5cGUge29iamVjdH1cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBzdGF0
aWNzOiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAgICogRGVmaW5pdGlvbiBvZiBwcm9w
IHR5cGVzIGZvciB0aGlzIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtvYmplY3R9
XG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgcHJvcFR5cGVzOiAnREVGSU5FX01BTlkn
LFxuXG4gICAgLyoqXG4gICAgICogRGVmaW5pdGlvbiBvZiBjb250ZXh0IHR5cGVzIGZvciB0aGlz
IGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICogQG9wdGlv
bmFsXG4gICAgICovXG4gICAgY29udGV4dFR5cGVzOiAnREVGSU5FX01BTlknLFxuXG4gICAgLyoq
XG4gICAgICogRGVmaW5pdGlvbiBvZiBjb250ZXh0IHR5cGVzIHRoaXMgY29tcG9uZW50IHNldHMg
Zm9yIGl0cyBjaGlsZHJlbi5cbiAgICAgKlxuICAgICAqIEB0eXBlIHtvYmplY3R9XG4gICAgICog
QG9wdGlvbmFsXG4gICAgICovXG4gICAgY2hpbGRDb250ZXh0VHlwZXM6ICdERUZJTkVfTUFOWScs
XG5cbiAgICAvLyA9PT09IERlZmluaXRpb24gbWV0aG9kcyA9PT09XG5cbiAgICAvKipcbiAgICAg
KiBJbnZva2VkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBtb3VudGVkLiBWYWx1ZXMgaW4gdGhlIG1h
cHBpbmcgd2lsbCBiZSBzZXQgb25cbiAgICAgKiBgdGhpcy5wcm9wc2AgaWYgdGhhdCBwcm9wIGlz
IG5vdCBzcGVjaWZpZWQgKGkuZS4gdXNpbmcgYW4gYGluYCBjaGVjaykuXG4gICAgICpcbiAgICAg
KiBUaGlzIG1ldGhvZCBpcyBpbnZva2VkIGJlZm9yZSBgZ2V0SW5pdGlhbFN0YXRlYCBhbmQgdGhl
cmVmb3JlIGNhbm5vdCByZWx5XG4gICAgICogb24gYHRoaXMuc3RhdGVgIG9yIHVzZSBgdGhpcy5z
ZXRTdGF0ZWAuXG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtvYmplY3R9XG4gICAgICogQG9wdGlv
bmFsXG4gICAgICovXG4gICAgZ2V0RGVmYXVsdFByb3BzOiAnREVGSU5FX01BTllfTUVSR0VEJyxc
blxuICAgIC8qKlxuICAgICAqIEludm9rZWQgb25jZSBiZWZvcmUgdGhlIGNvbXBvbmVudCBpcyBt
b3VudGVkLiBUaGUgcmV0dXJuIHZhbHVlIHdpbGwgYmUgdXNlZFxuICAgICAqIGFzIHRoZSBpbml0
aWFsIHZhbHVlIG9mIGB0aGlzLnN0YXRlYC5cbiAgICAgKlxuICAgICAqICAgZ2V0SW5pdGlhbFN0
YXRlOiBmdW5jdGlvbigpIHtcbiAgICAgKiAgICAgcmV0dXJuIHtcbiAgICAgKiAgICAgICBpc09u
OiBmYWxzZSxcbiAgICAgKiAgICAgICBmb29CYXo6IG5ldyBCYXpGb28oKVxuICAgICAqICAgICB9
XG4gICAgICogICB9XG4gICAgICpcbiAgICAgKiBAcmV0dXJuIHtvYmplY3R9XG4gICAgICogQG9w
dGlvbmFsXG4gICAgICovXG4gICAgZ2V0SW5pdGlhbFN0YXRlOiAnREVGSU5FX01BTllfTUVSR0VE
JyxcblxuICAgIC8qKlxuICAgICAqIEByZXR1cm4ge29iamVjdH1cbiAgICAgKiBAb3B0aW9uYWxc
biAgICAgKi9cbiAgICBnZXRDaGlsZENvbnRleHQ6ICdERUZJTkVfTUFOWV9NRVJHRUQnLFxuXG4g
ICAgLyoqXG4gICAgICogVXNlcyBwcm9wcyBmcm9tIGB0aGlzLnByb3BzYCBhbmQgc3RhdGUgZnJv
bSBgdGhpcy5zdGF0ZWAgdG8gcmVuZGVyIHRoZVxuICAgICAqIHN0cnVjdHVyZSBvZiB0aGUgY29t
cG9uZW50LlxuICAgICAqXG4gICAgICogTm8gZ3VhcmFudGVlcyBhcmUgbWFkZSBhYm91dCB3aGVu
IG9yIGhvdyBvZnRlbiB0aGlzIG1ldGhvZCBpcyBpbnZva2VkLCBzb1xuICAgICAqIGl0IG11c3Qg
bm90IGhhdmUgc2lkZSBlZmZlY3RzLlxuICAgICAqXG4gICAgICogICByZW5kZXI6IGZ1bmN0aW9u
KCkge1xuICAgICAqICAgICB2YXIgbmFtZSA9IHRoaXMucHJvcHMubmFtZTtcbiAgICAgKiAgICAg
cmV0dXJuIDxkaXY+SGVsbG8sIHtuYW1lfSE8L2Rpdj47XG4gICAgICogICB9XG4gICAgICpcbiAg
ICAgKiBAcmV0dXJuIHtSZWFjdENvbXBvbmVudH1cbiAgICAgKiBAcmVxdWlyZWRcbiAgICAgKi9c
biAgICByZW5kZXI6ICdERUZJTkVfT05DRScsXG5cbiAgICAvLyA9PT09IERlbGVnYXRlIG1ldGhv
ZHMgPT09PVxuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQgaXMg
aW5pdGlhbGx5IGNyZWF0ZWQgYW5kIGFib3V0IHRvIGJlIG1vdW50ZWQuXG4gICAgICogVGhpcyBt
YXkgaGF2ZSBzaWRlIGVmZmVjdHMsIGJ1dCBhbnkgZXh0ZXJuYWwgc3Vic2NyaXB0aW9ucyBvciBk
YXRhIGNyZWF0ZWRcbiAgICAgKiBieSB0aGlzIG1ldGhvZCBtdXN0IGJlIGNsZWFuZWQgdXAgaW4g
YGNvbXBvbmVudFdpbGxVbm1vdW50YC5cbiAgICAgKlxuICAgICAqIEBvcHRpb25hbFxuICAgICAq
L1xuICAgIGNvbXBvbmVudFdpbGxNb3VudDogJ0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAg
ICAqIEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGhhcyBiZWVuIG1vdW50ZWQgYW5kIGhhcyBh
IERPTSByZXByZXNlbnRhdGlvbi5cbiAgICAgKiBIb3dldmVyLCB0aGVyZSBpcyBubyBndWFyYW50
ZWUgdGhhdCB0aGUgRE9NIG5vZGUgaXMgaW4gdGhlIGRvY3VtZW50LlxuICAgICAqXG4gICAgICog
VXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gb3BlcmF0ZSBvbiB0aGUgRE9NIHdoZW4gdGhl
IGNvbXBvbmVudCBoYXNcbiAgICAgKiBiZWVuIG1vdW50ZWQgKGluaXRpYWxpemVkIGFuZCByZW5k
ZXJlZCkgZm9yIHRoZSBmaXJzdCB0aW1lLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtET01FbGVt
ZW50fSByb290Tm9kZSBET00gZWxlbWVudCByZXByZXNlbnRpbmcgdGhlIGNvbXBvbmVudC5cbiAg
ICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBjb21wb25lbnREaWRNb3VudDogJ0RFRklORV9N
QU5ZJyxcblxuICAgIC8qKlxuICAgICAqIEludm9rZWQgYmVmb3JlIHRoZSBjb21wb25lbnQgcmVj
ZWl2ZXMgbmV3IHByb3BzLlxuICAgICAqXG4gICAgICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5p
dHkgdG8gcmVhY3QgdG8gYSBwcm9wIHRyYW5zaXRpb24gYnkgdXBkYXRpbmcgdGhlXG4gICAgICog
c3RhdGUgdXNpbmcgYHRoaXMuc2V0U3RhdGVgLiBDdXJyZW50IHByb3BzIGFyZSBhY2Nlc3NlZCB2
aWEgYHRoaXMucHJvcHNgLlxuICAgICAqXG4gICAgICogICBjb21wb25lbnRXaWxsUmVjZWl2ZVBy
b3BzOiBmdW5jdGlvbihuZXh0UHJvcHMsIG5leHRDb250ZXh0KSB7XG4gICAgICogICAgIHRoaXMu
c2V0U3RhdGUoe1xuICAgICAqICAgICAgIGxpa2VzSW5jcmVhc2luZzogbmV4dFByb3BzLmxpa2VD
b3VudCA+IHRoaXMucHJvcHMubGlrZUNvdW50XG4gICAgICogICAgIH0pO1xuICAgICAqICAgfVxu
ICAgICAqXG4gICAgICogTk9URTogVGhlcmUgaXMgbm8gZXF1aXZhbGVudCBgY29tcG9uZW50V2ls
bFJlY2VpdmVTdGF0ZWAuIEFuIGluY29taW5nIHByb3BcbiAgICAgKiB0cmFuc2l0aW9uIG1heSBj
YXVzZSBhIHN0YXRlIGNoYW5nZSwgYnV0IHRoZSBvcHBvc2l0ZSBpcyBub3QgdHJ1ZS4gSWYgeW91
XG4gICAgICogbmVlZCBpdCwgeW91IGFyZSBwcm9iYWJseSBsb29raW5nIGZvciBgY29tcG9uZW50
V2lsbFVwZGF0ZWAuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge29iamVjdH0gbmV4dFByb3BzXG4g
ICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wczog
J0RFRklORV9NQU5ZJyxcblxuICAgIC8qKlxuICAgICAqIEludm9rZWQgd2hpbGUgZGVjaWRpbmcg
aWYgdGhlIGNvbXBvbmVudCBzaG91bGQgYmUgdXBkYXRlZCBhcyBhIHJlc3VsdCBvZlxuICAgICAq
IHJlY2VpdmluZyBuZXcgcHJvcHMsIHN0YXRlIGFuZC9vciBjb250ZXh0LlxuICAgICAqXG4gICAg
ICogVXNlIHRoaXMgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gYHJldHVybiBmYWxzZWAgd2hlbiB5b3Un
cmUgY2VydGFpbiB0aGF0IHRoZVxuICAgICAqIHRyYW5zaXRpb24gdG8gdGhlIG5ldyBwcm9wcy9z
dGF0ZS9jb250ZXh0IHdpbGwgbm90IHJlcXVpcmUgYSBjb21wb25lbnRcbiAgICAgKiB1cGRhdGUu
XG4gICAgICpcbiAgICAgKiAgIHNob3VsZENvbXBvbmVudFVwZGF0ZTogZnVuY3Rpb24obmV4dFBy
b3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0KSB7XG4gICAgICogICAgIHJldHVybiAhZXF1YWwo
bmV4dFByb3BzLCB0aGlzLnByb3BzKSB8fFxuICAgICAqICAgICAgICFlcXVhbChuZXh0U3RhdGUs
IHRoaXMuc3RhdGUpIHx8XG4gICAgICogICAgICAgIWVxdWFsKG5leHRDb250ZXh0LCB0aGlzLmNv
bnRleHQpO1xuICAgICAqICAgfVxuICAgICAqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQ
cm9wc1xuICAgICAqIEBwYXJhbSB7P29iamVjdH0gbmV4dFN0YXRlXG4gICAgICogQHBhcmFtIHs/
b2JqZWN0fSBuZXh0Q29udGV4dFxuICAgICAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgdGhl
IGNvbXBvbmVudCBzaG91bGQgdXBkYXRlLlxuICAgICAqIEBvcHRpb25hbFxuICAgICAqL1xuICAg
IHNob3VsZENvbXBvbmVudFVwZGF0ZTogJ0RFRklORV9PTkNFJyxcblxuICAgIC8qKlxuICAgICAq
IEludm9rZWQgd2hlbiB0aGUgY29tcG9uZW50IGlzIGFib3V0IHRvIHVwZGF0ZSBkdWUgdG8gYSB0
cmFuc2l0aW9uIGZyb21cbiAgICAgKiBgdGhpcy5wcm9wc2AsIGB0aGlzLnN0YXRlYCBhbmQgYHRo
aXMuY29udGV4dGAgdG8gYG5leHRQcm9wc2AsIGBuZXh0U3RhdGVgXG4gICAgICogYW5kIGBuZXh0
Q29udGV4dGAuXG4gICAgICpcbiAgICAgKiBVc2UgdGhpcyBhcyBhbiBvcHBvcnR1bml0eSB0byBw
ZXJmb3JtIHByZXBhcmF0aW9uIGJlZm9yZSBhbiB1cGRhdGUgb2NjdXJzLlxuICAgICAqXG4gICAg
ICogTk9URTogWW91ICoqY2Fubm90KiogdXNlIGB0aGlzLnNldFN0YXRlKClgIGluIHRoaXMgbWV0
aG9kLlxuICAgICAqXG4gICAgICogQHBhcmFtIHtvYmplY3R9IG5leHRQcm9wc1xuICAgICAqIEBw
YXJhbSB7P29iamVjdH0gbmV4dFN0YXRlXG4gICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0Q29u
dGV4dFxuICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rp
b25cbiAgICAgKiBAb3B0aW9uYWxcbiAgICAgKi9cbiAgICBjb21wb25lbnRXaWxsVXBkYXRlOiAn
REVGSU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25l
bnQncyBET00gcmVwcmVzZW50YXRpb24gaGFzIGJlZW4gdXBkYXRlZC5cbiAgICAgKlxuICAgICAq
IFVzZSB0aGlzIGFzIGFuIG9wcG9ydHVuaXR5IHRvIG9wZXJhdGUgb24gdGhlIERPTSB3aGVuIHRo
ZSBjb21wb25lbnQgaGFzXG4gICAgICogYmVlbiB1cGRhdGVkLlxuICAgICAqXG4gICAgICogQHBh
cmFtIHtvYmplY3R9IHByZXZQcm9wc1xuICAgICAqIEBwYXJhbSB7P29iamVjdH0gcHJldlN0YXRl
XG4gICAgICogQHBhcmFtIHs/b2JqZWN0fSBwcmV2Q29udGV4dFxuICAgICAqIEBwYXJhbSB7RE9N
RWxlbWVudH0gcm9vdE5vZGUgRE9NIGVsZW1lbnQgcmVwcmVzZW50aW5nIHRoZSBjb21wb25lbnQu
XG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgY29tcG9uZW50RGlkVXBkYXRlOiAnREVG
SU5FX01BTlknLFxuXG4gICAgLyoqXG4gICAgICogSW52b2tlZCB3aGVuIHRoZSBjb21wb25lbnQg
aXMgYWJvdXQgdG8gYmUgcmVtb3ZlZCBmcm9tIGl0cyBwYXJlbnQgYW5kIGhhdmVcbiAgICAgKiBp
dHMgRE9NIHJlcHJlc2VudGF0aW9uIGRlc3Ryb3llZC5cbiAgICAgKlxuICAgICAqIFVzZSB0aGlz
IGFzIGFuIG9wcG9ydHVuaXR5IHRvIGRlYWxsb2NhdGUgYW55IGV4dGVybmFsIHJlc291cmNlcy5c
biAgICAgKlxuICAgICAqIE5PVEU6IFRoZXJlIGlzIG5vIGBjb21wb25lbnREaWRVbm1vdW50YCBz
aW5jZSB5b3VyIGNvbXBvbmVudCB3aWxsIGhhdmUgYmVlblxuICAgICAqIGRlc3Ryb3llZCBieSB0
aGF0IHBvaW50LlxuICAgICAqXG4gICAgICogQG9wdGlvbmFsXG4gICAgICovXG4gICAgY29tcG9u
ZW50V2lsbFVubW91bnQ6ICdERUZJTkVfTUFOWScsXG5cbiAgICAvLyA9PT09IEFkdmFuY2VkIG1l
dGhvZHMgPT09PVxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyB0aGUgY29tcG9uZW50J3MgY3Vy
cmVudGx5IG1vdW50ZWQgRE9NIHJlcHJlc2VudGF0aW9uLlxuICAgICAqXG4gICAgICogQnkgZGVm
YXVsdCwgdGhpcyBpbXBsZW1lbnRzIFJlYWN0J3MgcmVuZGVyaW5nIGFuZCByZWNvbmNpbGlhdGlv
biBhbGdvcml0aG0uXG4gICAgICogU29waGlzdGljYXRlZCBjbGllbnRzIG1heSB3aXNoIHRvIG92
ZXJyaWRlIHRoaXMuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNh
Y3Rpb259IHRyYW5zYWN0aW9uXG4gICAgICogQGludGVybmFsXG4gICAgICogQG92ZXJyaWRhYmxl
XG4gICAgICovXG4gICAgdXBkYXRlQ29tcG9uZW50OiAnT1ZFUlJJREVfQkFTRSdcbiAgfTtcblxu
ICAvKipcbiAgICogTWFwcGluZyBmcm9tIGNsYXNzIHNwZWNpZmljYXRpb24ga2V5cyB0byBzcGVj
aWFsIHByb2Nlc3NpbmcgZnVuY3Rpb25zLlxuICAgKlxuICAgKiBBbHRob3VnaCB0aGVzZSBhcmUg
ZGVjbGFyZWQgbGlrZSBpbnN0YW5jZSBwcm9wZXJ0aWVzIGluIHRoZSBzcGVjaWZpY2F0aW9uXG4g
ICAqIHdoZW4gZGVmaW5pbmcgY2xhc3NlcyB1c2luZyBgUmVhY3QuY3JlYXRlQ2xhc3NgLCB0aGV5
IGFyZSBhY3R1YWxseSBzdGF0aWNcbiAgICogYW5kIGFyZSBhY2Nlc3NpYmxlIG9uIHRoZSBjb25z
dHJ1Y3RvciBpbnN0ZWFkIG9mIHRoZSBwcm90b3R5cGUuIERlc3BpdGVcbiAgICogYmVpbmcgc3Rh
dGljLCB0aGV5IG11c3QgYmUgZGVmaW5lZCBvdXRzaWRlIG9mIHRoZSBcInN0YXRpY3NcIiBrZXkg
dW5kZXJcbiAgICogd2hpY2ggYWxsIG90aGVyIHN0YXRpYyBtZXRob2RzIGFyZSBkZWZpbmVkLlxu
ICAgKi9cbiAgdmFyIFJFU0VSVkVEX1NQRUNfS0VZUyA9IHtcbiAgICBkaXNwbGF5TmFtZTogZnVu
Y3Rpb24oQ29uc3RydWN0b3IsIGRpc3BsYXlOYW1lKSB7XG4gICAgICBDb25zdHJ1Y3Rvci5kaXNw
bGF5TmFtZSA9IGRpc3BsYXlOYW1lO1xuICAgIH0sXG4gICAgbWl4aW5zOiBmdW5jdGlvbihDb25z
dHJ1Y3RvciwgbWl4aW5zKSB7XG4gICAgICBpZiAobWl4aW5zKSB7XG4gICAgICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgbWl4aW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgbWl4U3BlY0ludG9D
b21wb25lbnQoQ29uc3RydWN0b3IsIG1peGluc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAg
ICB9LFxuICAgIGNoaWxkQ29udGV4dFR5cGVzOiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgY2hpbGRD
b250ZXh0VHlwZXMpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nKSB7XG4gICAgICAgIHZhbGlkYXRlVHlwZURlZihDb25zdHJ1Y3RvciwgY2hpbGRDb250
ZXh0VHlwZXMsICdjaGlsZENvbnRleHQnKTtcbiAgICAgIH1cbiAgICAgIENvbnN0cnVjdG9yLmNo
aWxkQ29udGV4dFR5cGVzID0gX2Fzc2lnbihcbiAgICAgICAge30sXG4gICAgICAgIENvbnN0cnVj
dG9yLmNoaWxkQ29udGV4dFR5cGVzLFxuICAgICAgICBjaGlsZENvbnRleHRUeXBlc1xuICAgICAg
KTtcbiAgICB9LFxuICAgIGNvbnRleHRUeXBlczogZnVuY3Rpb24oQ29uc3RydWN0b3IsIGNvbnRl
eHRUeXBlcykge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicpIHtcbiAgICAgICAgdmFsaWRhdGVUeXBlRGVmKENvbnN0cnVjdG9yLCBjb250ZXh0VHlwZXMs
ICdjb250ZXh0Jyk7XG4gICAgICB9XG4gICAgICBDb25zdHJ1Y3Rvci5jb250ZXh0VHlwZXMgPSBf
YXNzaWduKFxuICAgICAgICB7fSxcbiAgICAgICAgQ29uc3RydWN0b3IuY29udGV4dFR5cGVzLFxu
ICAgICAgICBjb250ZXh0VHlwZXNcbiAgICAgICk7XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiBT
cGVjaWFsIGNhc2UgZ2V0RGVmYXVsdFByb3BzIHdoaWNoIHNob3VsZCBtb3ZlIGludG8gc3RhdGlj
cyBidXQgcmVxdWlyZXNcbiAgICAgKiBhdXRvbWF0aWMgbWVyZ2luZy5cbiAgICAgKi9cbiAgICBn
ZXREZWZhdWx0UHJvcHM6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBnZXREZWZhdWx0UHJvcHMpIHtc
biAgICAgIGlmIChDb25zdHJ1Y3Rvci5nZXREZWZhdWx0UHJvcHMpIHtcbiAgICAgICAgQ29uc3Ry
dWN0b3IuZ2V0RGVmYXVsdFByb3BzID0gY3JlYXRlTWVyZ2VkUmVzdWx0RnVuY3Rpb24oXG4gICAg
ICAgICAgQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzLFxuICAgICAgICAgIGdldERlZmF1bHRQ
cm9wc1xuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgQ29uc3RydWN0b3IuZ2V0
RGVmYXVsdFByb3BzID0gZ2V0RGVmYXVsdFByb3BzO1xuICAgICAgfVxuICAgIH0sXG4gICAgcHJv
cFR5cGVzOiBmdW5jdGlvbihDb25zdHJ1Y3RvciwgcHJvcFR5cGVzKSB7XG4gICAgICBpZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB2YWxpZGF0ZVR5
cGVEZWYoQ29uc3RydWN0b3IsIHByb3BUeXBlcywgJ3Byb3AnKTtcbiAgICAgIH1cbiAgICAgIENv
bnN0cnVjdG9yLnByb3BUeXBlcyA9IF9hc3NpZ24oe30sIENvbnN0cnVjdG9yLnByb3BUeXBlcywg
cHJvcFR5cGVzKTtcbiAgICB9LFxuICAgIHN0YXRpY3M6IGZ1bmN0aW9uKENvbnN0cnVjdG9yLCBz
dGF0aWNzKSB7XG4gICAgICBtaXhTdGF0aWNTcGVjSW50b0NvbXBvbmVudChDb25zdHJ1Y3Rvciwg
c3RhdGljcyk7XG4gICAgfSxcbiAgICBhdXRvYmluZDogZnVuY3Rpb24oKSB7fVxuICB9O1xuXG4g
IGZ1bmN0aW9uIHZhbGlkYXRlVHlwZURlZihDb25zdHJ1Y3RvciwgdHlwZURlZiwgbG9jYXRpb24p
IHtcbiAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiB0eXBlRGVmKSB7XG4gICAgICBpZiAodHlwZURl
Zi5oYXNPd25Qcm9wZXJ0eShwcm9wTmFtZSkpIHtcbiAgICAgICAgLy8gdXNlIGEgd2FybmluZyBp
bnN0ZWFkIG9mIGFuIF9pbnZhcmlhbnQgc28gY29tcG9uZW50c1xuICAgICAgICAvLyBkb24ndCBz
aG93IHVwIGluIHByb2QgYnV0IG9ubHkgaW4gX19ERVZfX1xuICAgICAgICBpZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIHdhcm5pbmcoXG4gICAg
ICAgICAgICB0eXBlb2YgdHlwZURlZltwcm9wTmFtZV0gPT09ICdmdW5jdGlvbicsXG4gICAgICAg
ICAgICAnJXM6ICVzIHR5cGUgYCVzYCBpcyBpbnZhbGlkOyBpdCBtdXN0IGJlIGEgZnVuY3Rpb24s
IHVzdWFsbHkgZnJvbSAnICtcbiAgICAgICAgICAgICAgJ1JlYWN0LlByb3BUeXBlcy4nLFxuICAg
ICAgICAgICAgQ29uc3RydWN0b3IuZGlzcGxheU5hbWUgfHwgJ1JlYWN0Q2xhc3MnLFxuICAgICAg
ICAgICAgUmVhY3RQcm9wVHlwZUxvY2F0aW9uTmFtZXNbbG9jYXRpb25dLFxuICAgICAgICAgICAg
cHJvcE5hbWVcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5c
biAgZnVuY3Rpb24gdmFsaWRhdGVNZXRob2RPdmVycmlkZShpc0FscmVhZHlEZWZpbmVkLCBuYW1l
KSB7XG4gICAgdmFyIHNwZWNQb2xpY3kgPSBSZWFjdENsYXNzSW50ZXJmYWNlLmhhc093blByb3Bl
cnR5KG5hbWUpXG4gICAgICA/IFJlYWN0Q2xhc3NJbnRlcmZhY2VbbmFtZV1cbiAgICAgIDogbnVs
bDtcblxuICAgIC8vIERpc2FsbG93IG92ZXJyaWRpbmcgb2YgYmFzZSBjbGFzcyBtZXRob2RzIHVu
bGVzcyBleHBsaWNpdGx5IGFsbG93ZWQuXG4gICAgaWYgKFJlYWN0Q2xhc3NNaXhpbi5oYXNPd25Q
cm9wZXJ0eShuYW1lKSkge1xuICAgICAgX2ludmFyaWFudChcbiAgICAgICAgc3BlY1BvbGljeSA9
PT0gJ09WRVJSSURFX0JBU0UnLFxuICAgICAgICAnUmVhY3RDbGFzc0ludGVyZmFjZTogWW91IGFy
ZSBhdHRlbXB0aW5nIHRvIG92ZXJyaWRlICcgK1xuICAgICAgICAgICdgJXNgIGZyb20geW91ciBj
bGFzcyBzcGVjaWZpY2F0aW9uLiBFbnN1cmUgdGhhdCB5b3VyIG1ldGhvZCBuYW1lcyAnICtcbiAg
ICAgICAgICAnZG8gbm90IG92ZXJsYXAgd2l0aCBSZWFjdCBtZXRob2RzLicsXG4gICAgICAgIG5h
bWVcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRGlzYWxsb3cgZGVmaW5pbmcgbWV0aG9kcyBt
b3JlIHRoYW4gb25jZSB1bmxlc3MgZXhwbGljaXRseSBhbGxvd2VkLlxuICAgIGlmIChpc0FscmVh
ZHlEZWZpbmVkKSB7XG4gICAgICBfaW52YXJpYW50KFxuICAgICAgICBzcGVjUG9saWN5ID09PSAn
REVGSU5FX01BTlknIHx8IHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWV9NRVJHRUQnLFxuICAg
ICAgICAnUmVhY3RDbGFzc0ludGVyZmFjZTogWW91IGFyZSBhdHRlbXB0aW5nIHRvIGRlZmluZSAn
ICtcbiAgICAgICAgICAnYCVzYCBvbiB5b3VyIGNvbXBvbmVudCBtb3JlIHRoYW4gb25jZS4gVGhp
cyBjb25mbGljdCBtYXkgYmUgZHVlICcgK1xuICAgICAgICAgICd0byBhIG1peGluLicsXG4gICAg
ICAgIG5hbWVcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1peGluIGhlbHBl
ciB3aGljaCBoYW5kbGVzIHBvbGljeSB2YWxpZGF0aW9uIGFuZCByZXNlcnZlZFxuICAgKiBzcGVj
aWZpY2F0aW9uIGtleXMgd2hlbiBidWlsZGluZyBSZWFjdCBjbGFzc2VzLlxuICAgKi9cbiAgZnVu
Y3Rpb24gbWl4U3BlY0ludG9Db21wb25lbnQoQ29uc3RydWN0b3IsIHNwZWMpIHtcbiAgICBpZiAo
IXNwZWMpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
KSB7XG4gICAgICAgIHZhciB0eXBlb2ZTcGVjID0gdHlwZW9mIHNwZWM7XG4gICAgICAgIHZhciBp
c01peGluVmFsaWQgPSB0eXBlb2ZTcGVjID09PSAnb2JqZWN0JyAmJiBzcGVjICE9PSBudWxsO1xu
XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
ICAgICAgICAgd2FybmluZyhcbiAgICAgICAgICAgIGlzTWl4aW5WYWxpZCxcbiAgICAgICAgICAg
IFwiJXM6IFlvdSdyZSBhdHRlbXB0aW5nIHRvIGluY2x1ZGUgYSBtaXhpbiB0aGF0IGlzIGVpdGhl
ciBudWxsIFwiICtcbiAgICAgICAgICAgICAgJ29yIG5vdCBhbiBvYmplY3QuIENoZWNrIHRoZSBt
aXhpbnMgaW5jbHVkZWQgYnkgdGhlIGNvbXBvbmVudCwgJyArXG4gICAgICAgICAgICAgICdhcyB3
ZWxsIGFzIGFueSBtaXhpbnMgdGhleSBpbmNsdWRlIHRoZW1zZWx2ZXMuICcgK1xuICAgICAgICAg
ICAgICAnRXhwZWN0ZWQgb2JqZWN0IGJ1dCBnb3QgJXMuJyxcbiAgICAgICAgICAgIENvbnN0cnVj
dG9yLmRpc3BsYXlOYW1lIHx8ICdSZWFjdENsYXNzJyxcbiAgICAgICAgICAgIHNwZWMgPT09IG51
bGwgPyBudWxsIDogdHlwZW9mU3BlY1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1c
blxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIF9pbnZhcmlhbnQoXG4gICAgICB0eXBlb2Yg
c3BlYyAhPT0gJ2Z1bmN0aW9uJyxcbiAgICAgIFwiUmVhY3RDbGFzczogWW91J3JlIGF0dGVtcHRp
bmcgdG8gXCIgK1xuICAgICAgICAndXNlIGEgY29tcG9uZW50IGNsYXNzIG9yIGZ1bmN0aW9uIGFz
IGEgbWl4aW4uIEluc3RlYWQsIGp1c3QgdXNlIGEgJyArXG4gICAgICAgICdyZWd1bGFyIG9iamVj
dC4nXG4gICAgKTtcbiAgICBfaW52YXJpYW50KFxuICAgICAgIWlzVmFsaWRFbGVtZW50KHNwZWMp
LFxuICAgICAgXCJSZWFjdENsYXNzOiBZb3UncmUgYXR0ZW1wdGluZyB0byBcIiArXG4gICAgICAg
ICd1c2UgYSBjb21wb25lbnQgYXMgYSBtaXhpbi4gSW5zdGVhZCwganVzdCB1c2UgYSByZWd1bGFy
IG9iamVjdC4nXG4gICAgKTtcblxuICAgIHZhciBwcm90byA9IENvbnN0cnVjdG9yLnByb3RvdHlw
ZTtcbiAgICB2YXIgYXV0b0JpbmRQYWlycyA9IHByb3RvLl9fcmVhY3RBdXRvQmluZFBhaXJzO1xu
XG4gICAgLy8gQnkgaGFuZGxpbmcgbWl4aW5zIGJlZm9yZSBhbnkgb3RoZXIgcHJvcGVydGllcywg
d2UgZW5zdXJlIHRoZSBzYW1lXG4gICAgLy8gY2hhaW5pbmcgb3JkZXIgaXMgYXBwbGllZCB0byBt
ZXRob2RzIHdpdGggREVGSU5FX01BTlkgcG9saWN5LCB3aGV0aGVyXG4gICAgLy8gbWl4aW5zIGFy
ZSBsaXN0ZWQgYmVmb3JlIG9yIGFmdGVyIHRoZXNlIG1ldGhvZHMgaW4gdGhlIHNwZWMuXG4gICAg
aWYgKHNwZWMuaGFzT3duUHJvcGVydHkoTUlYSU5TX0tFWSkpIHtcbiAgICAgIFJFU0VSVkVEX1NQ
RUNfS0VZUy5taXhpbnMoQ29uc3RydWN0b3IsIHNwZWMubWl4aW5zKTtcbiAgICB9XG5cbiAgICBm
b3IgKHZhciBuYW1lIGluIHNwZWMpIHtcbiAgICAgIGlmICghc3BlYy5oYXNPd25Qcm9wZXJ0eShu
YW1lKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5hbWUgPT09
IE1JWElOU19LRVkpIHtcbiAgICAgICAgLy8gV2UgaGF2ZSBhbHJlYWR5IGhhbmRsZWQgbWl4aW5z
IGluIGEgc3BlY2lhbCBjYXNlIGFib3ZlLlxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxu
ICAgICAgdmFyIHByb3BlcnR5ID0gc3BlY1tuYW1lXTtcbiAgICAgIHZhciBpc0FscmVhZHlEZWZp
bmVkID0gcHJvdG8uaGFzT3duUHJvcGVydHkobmFtZSk7XG4gICAgICB2YWxpZGF0ZU1ldGhvZE92
ZXJyaWRlKGlzQWxyZWFkeURlZmluZWQsIG5hbWUpO1xuXG4gICAgICBpZiAoUkVTRVJWRURfU1BF
Q19LRVlTLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgIFJFU0VSVkVEX1NQRUNfS0VZ
U1tuYW1lXShDb25zdHJ1Y3RvciwgcHJvcGVydHkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAg
Ly8gU2V0dXAgbWV0aG9kcyBvbiBwcm90b3R5cGU6XG4gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcg
bWVtYmVyIG1ldGhvZHMgc2hvdWxkIG5vdCBiZSBhdXRvbWF0aWNhbGx5IGJvdW5kOlxuICAgICAg
ICAvLyAxLiBFeHBlY3RlZCBSZWFjdENsYXNzIG1ldGhvZHMgKGluIHRoZSBcImludGVyZmFjZVwi
KS5cbiAgICAgICAgLy8gMi4gT3ZlcnJpZGRlbiBtZXRob2RzICh0aGF0IHdlcmUgbWl4ZWQgaW4p
LlxuICAgICAgICB2YXIgaXNSZWFjdENsYXNzTWV0aG9kID0gUmVhY3RDbGFzc0ludGVyZmFjZS5o
YXNPd25Qcm9wZXJ0eShuYW1lKTtcbiAgICAgICAgdmFyIGlzRnVuY3Rpb24gPSB0eXBlb2YgcHJv
cGVydHkgPT09ICdmdW5jdGlvbic7XG4gICAgICAgIHZhciBzaG91bGRBdXRvQmluZCA9XG4gICAg
ICAgICAgaXNGdW5jdGlvbiAmJlxuICAgICAgICAgICFpc1JlYWN0Q2xhc3NNZXRob2QgJiZcbiAg
ICAgICAgICAhaXNBbHJlYWR5RGVmaW5lZCAmJlxuICAgICAgICAgIHNwZWMuYXV0b2JpbmQgIT09
IGZhbHNlO1xuXG4gICAgICAgIGlmIChzaG91bGRBdXRvQmluZCkge1xuICAgICAgICAgIGF1dG9C
aW5kUGFpcnMucHVzaChuYW1lLCBwcm9wZXJ0eSk7XG4gICAgICAgICAgcHJvdG9bbmFtZV0gPSBw
cm9wZXJ0eTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBpZiAoaXNBbHJlYWR5RGVmaW5l
ZCkge1xuICAgICAgICAgICAgdmFyIHNwZWNQb2xpY3kgPSBSZWFjdENsYXNzSW50ZXJmYWNlW25h
bWVdO1xuXG4gICAgICAgICAgICAvLyBUaGVzZSBjYXNlcyBzaG91bGQgYWxyZWFkeSBiZSBjYXVn
aHQgYnkgdmFsaWRhdGVNZXRob2RPdmVycmlkZS5cbiAgICAgICAgICAgIF9pbnZhcmlhbnQoXG4g
ICAgICAgICAgICAgIGlzUmVhY3RDbGFzc01ldGhvZCAmJlxuICAgICAgICAgICAgICAgIChzcGVj
UG9saWN5ID09PSAnREVGSU5FX01BTllfTUVSR0VEJyB8fFxuICAgICAgICAgICAgICAgICAgc3Bl
Y1BvbGljeSA9PT0gJ0RFRklORV9NQU5ZJyksXG4gICAgICAgICAgICAgICdSZWFjdENsYXNzOiBV
bmV4cGVjdGVkIHNwZWMgcG9saWN5ICVzIGZvciBrZXkgJXMgJyArXG4gICAgICAgICAgICAgICAg
J3doZW4gbWl4aW5nIGluIGNvbXBvbmVudCBzcGVjcy4nLFxuICAgICAgICAgICAgICBzcGVjUG9s
aWN5LFxuICAgICAgICAgICAgICBuYW1lXG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAv
LyBGb3IgbWV0aG9kcyB3aGljaCBhcmUgZGVmaW5lZCBtb3JlIHRoYW4gb25jZSwgY2FsbCB0aGUg
ZXhpc3RpbmdcbiAgICAgICAgICAgIC8vIG1ldGhvZHMgYmVmb3JlIGNhbGxpbmcgdGhlIG5ldyBw
cm9wZXJ0eSwgbWVyZ2luZyBpZiBhcHByb3ByaWF0ZS5cbiAgICAgICAgICAgIGlmIChzcGVjUG9s
aWN5ID09PSAnREVGSU5FX01BTllfTUVSR0VEJykge1xuICAgICAgICAgICAgICBwcm90b1tuYW1l
XSA9IGNyZWF0ZU1lcmdlZFJlc3VsdEZ1bmN0aW9uKHByb3RvW25hbWVdLCBwcm9wZXJ0eSk7XG4g
ICAgICAgICAgICB9IGVsc2UgaWYgKHNwZWNQb2xpY3kgPT09ICdERUZJTkVfTUFOWScpIHtcbiAg
ICAgICAgICAgICAgcHJvdG9bbmFtZV0gPSBjcmVhdGVDaGFpbmVkRnVuY3Rpb24ocHJvdG9bbmFt
ZV0sIHByb3BlcnR5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAg
ICAgICAgcHJvdG9bbmFtZV0gPSBwcm9wZXJ0eTtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICAgIC8vIEFkZCB2ZXJi
b3NlIGRpc3BsYXlOYW1lIHRvIHRoZSBmdW5jdGlvbiwgd2hpY2ggaGVscHMgd2hlbiBsb29raW5n
XG4gICAgICAgICAgICAgIC8vIGF0IHByb2ZpbGluZyB0b29scy5cbiAgICAgICAgICAgICAgaWYg
KHR5cGVvZiBwcm9wZXJ0eSA9PT0gJ2Z1bmN0aW9uJyAmJiBzcGVjLmRpc3BsYXlOYW1lKSB7XG4g
ICAgICAgICAgICAgICAgcHJvdG9bbmFtZV0uZGlzcGxheU5hbWUgPSBzcGVjLmRpc3BsYXlOYW1l
ICsgJ18nICsgbmFtZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAg
IH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIG1peFN0YXRp
Y1NwZWNJbnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBzdGF0aWNzKSB7XG4gICAgaWYgKCFzdGF0
aWNzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGZvciAodmFyIG5hbWUgaW4gc3RhdGlj
cykge1xuICAgICAgdmFyIHByb3BlcnR5ID0gc3RhdGljc1tuYW1lXTtcbiAgICAgIGlmICghc3Rh
dGljcy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1c
blxuICAgICAgdmFyIGlzUmVzZXJ2ZWQgPSBuYW1lIGluIFJFU0VSVkVEX1NQRUNfS0VZUztcbiAg
ICAgIF9pbnZhcmlhbnQoXG4gICAgICAgICFpc1Jlc2VydmVkLFxuICAgICAgICAnUmVhY3RDbGFz
czogWW91IGFyZSBhdHRlbXB0aW5nIHRvIGRlZmluZSBhIHJlc2VydmVkICcgK1xuICAgICAgICAg
ICdwcm9wZXJ0eSwgYCVzYCwgdGhhdCBzaG91bGRuXFwndCBiZSBvbiB0aGUgXCJzdGF0aWNzXCIg
a2V5LiBEZWZpbmUgaXQgJyArXG4gICAgICAgICAgJ2FzIGFuIGluc3RhbmNlIHByb3BlcnR5IGlu
c3RlYWQ7IGl0IHdpbGwgc3RpbGwgYmUgYWNjZXNzaWJsZSBvbiB0aGUgJyArXG4gICAgICAgICAg
J2NvbnN0cnVjdG9yLicsXG4gICAgICAgIG5hbWVcbiAgICAgICk7XG5cbiAgICAgIHZhciBpc0lu
aGVyaXRlZCA9IG5hbWUgaW4gQ29uc3RydWN0b3I7XG4gICAgICBfaW52YXJpYW50KFxuICAgICAg
ICAhaXNJbmhlcml0ZWQsXG4gICAgICAgICdSZWFjdENsYXNzOiBZb3UgYXJlIGF0dGVtcHRpbmcg
dG8gZGVmaW5lICcgK1xuICAgICAgICAgICdgJXNgIG9uIHlvdXIgY29tcG9uZW50IG1vcmUgdGhh
biBvbmNlLiBUaGlzIGNvbmZsaWN0IG1heSBiZSAnICtcbiAgICAgICAgICAnZHVlIHRvIGEgbWl4
aW4uJyxcbiAgICAgICAgbmFtZVxuICAgICAgKTtcbiAgICAgIENvbnN0cnVjdG9yW25hbWVdID0g
cHJvcGVydHk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIE1lcmdlIHR3byBvYmplY3RzLCBi
dXQgdGhyb3cgaWYgYm90aCBjb250YWluIHRoZSBzYW1lIGtleS5cbiAgICpcbiAgICogQHBhcmFt
IHtvYmplY3R9IG9uZSBUaGUgZmlyc3Qgb2JqZWN0LCB3aGljaCBpcyBtdXRhdGVkLlxuICAgKiBA
cGFyYW0ge29iamVjdH0gdHdvIFRoZSBzZWNvbmQgb2JqZWN0XG4gICAqIEByZXR1cm4ge29iamVj
dH0gb25lIGFmdGVyIGl0IGhhcyBiZWVuIG11dGF0ZWQgdG8gY29udGFpbiBldmVyeXRoaW5nIGlu
IHR3by5cbiAgICovXG4gIGZ1bmN0aW9uIG1lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMob25l
LCB0d28pIHtcbiAgICBfaW52YXJpYW50KFxuICAgICAgb25lICYmIHR3byAmJiB0eXBlb2Ygb25l
ID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgdHdvID09PSAnb2JqZWN0JyxcbiAgICAgICdtZXJnZUlu
dG9XaXRoTm9EdXBsaWNhdGVLZXlzKCk6IENhbm5vdCBtZXJnZSBub24tb2JqZWN0cy4nXG4gICAg
KTtcblxuICAgIGZvciAodmFyIGtleSBpbiB0d28pIHtcbiAgICAgIGlmICh0d28uaGFzT3duUHJv
cGVydHkoa2V5KSkge1xuICAgICAgICBfaW52YXJpYW50KFxuICAgICAgICAgIG9uZVtrZXldID09
PSB1bmRlZmluZWQsXG4gICAgICAgICAgJ21lcmdlSW50b1dpdGhOb0R1cGxpY2F0ZUtleXMoKTog
JyArXG4gICAgICAgICAgICAnVHJpZWQgdG8gbWVyZ2UgdHdvIG9iamVjdHMgd2l0aCB0aGUgc2Ft
ZSBrZXk6IGAlc2AuIFRoaXMgY29uZmxpY3QgJyArXG4gICAgICAgICAgICAnbWF5IGJlIGR1ZSB0
byBhIG1peGluOyBpbiBwYXJ0aWN1bGFyLCB0aGlzIG1heSBiZSBjYXVzZWQgYnkgdHdvICcgK1xu
ICAgICAgICAgICAgJ2dldEluaXRpYWxTdGF0ZSgpIG9yIGdldERlZmF1bHRQcm9wcygpIG1ldGhv
ZHMgcmV0dXJuaW5nIG9iamVjdHMgJyArXG4gICAgICAgICAgICAnd2l0aCBjbGFzaGluZyBrZXlz
LicsXG4gICAgICAgICAga2V5XG4gICAgICAgICk7XG4gICAgICAgIG9uZVtrZXldID0gdHdvW2tl
eV07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBvbmU7XG4gIH1cblxuICAvKipcbiAgICog
Q3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQgaW52b2tlcyB0d28gZnVuY3Rpb25zIGFuZCBtZXJnZXMg
dGhlaXIgcmV0dXJuIHZhbHVlcy5cbiAgICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gb25lIEZ1
bmN0aW9uIHRvIGludm9rZSBmaXJzdC5cbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gdHdvIEZ1bmN0
aW9uIHRvIGludm9rZSBzZWNvbmQuXG4gICAqIEByZXR1cm4ge2Z1bmN0aW9ufSBGdW5jdGlvbiB0
aGF0IGludm9rZXMgdGhlIHR3byBhcmd1bWVudCBmdW5jdGlvbnMuXG4gICAqIEBwcml2YXRlXG4g
ICAqL1xuICBmdW5jdGlvbiBjcmVhdGVNZXJnZWRSZXN1bHRGdW5jdGlvbihvbmUsIHR3bykge1xu
ICAgIHJldHVybiBmdW5jdGlvbiBtZXJnZWRSZXN1bHQoKSB7XG4gICAgICB2YXIgYSA9IG9uZS5h
cHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgdmFyIGIgPSB0d28uYXBwbHkodGhpcywgYXJn
dW1lbnRzKTtcbiAgICAgIGlmIChhID09IG51bGwpIHtcbiAgICAgICAgcmV0dXJuIGI7XG4gICAg
ICB9IGVsc2UgaWYgKGIgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gYTtcbiAgICAgIH1cbiAg
ICAgIHZhciBjID0ge307XG4gICAgICBtZXJnZUludG9XaXRoTm9EdXBsaWNhdGVLZXlzKGMsIGEp
O1xuICAgICAgbWVyZ2VJbnRvV2l0aE5vRHVwbGljYXRlS2V5cyhjLCBiKTtcbiAgICAgIHJldHVy
biBjO1xuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGZ1bmN0aW9uIHRoYXQg
aW52b2tlcyB0d28gZnVuY3Rpb25zIGFuZCBpZ25vcmVzIHRoZWlyIHJldHVybiB2YWxlcy5cbiAg
ICpcbiAgICogQHBhcmFtIHtmdW5jdGlvbn0gb25lIEZ1bmN0aW9uIHRvIGludm9rZSBmaXJzdC5c
biAgICogQHBhcmFtIHtmdW5jdGlvbn0gdHdvIEZ1bmN0aW9uIHRvIGludm9rZSBzZWNvbmQuXG4g
ICAqIEByZXR1cm4ge2Z1bmN0aW9ufSBGdW5jdGlvbiB0aGF0IGludm9rZXMgdGhlIHR3byBhcmd1
bWVudCBmdW5jdGlvbnMuXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBmdW5jdGlvbiBjcmVhdGVD
aGFpbmVkRnVuY3Rpb24ob25lLCB0d28pIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gY2hhaW5lZEZ1
bmN0aW9uKCkge1xuICAgICAgb25lLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB0d28u
YXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmRz
IGEgbWV0aG9kIHRvIHRoZSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBj
b21wb25lbnQgQ29tcG9uZW50IHdob3NlIG1ldGhvZCBpcyBnb2luZyB0byBiZSBib3VuZC5cbiAg
ICogQHBhcmFtIHtmdW5jdGlvbn0gbWV0aG9kIE1ldGhvZCB0byBiZSBib3VuZC5cbiAgICogQHJl
dHVybiB7ZnVuY3Rpb259IFRoZSBib3VuZCBtZXRob2QuXG4gICAqL1xuICBmdW5jdGlvbiBiaW5k
QXV0b0JpbmRNZXRob2QoY29tcG9uZW50LCBtZXRob2QpIHtcbiAgICB2YXIgYm91bmRNZXRob2Qg
PSBtZXRob2QuYmluZChjb21wb25lbnQpO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBib3VuZE1ldGhvZC5fX3JlYWN0Qm91bmRDb250ZXh0
ID0gY29tcG9uZW50O1xuICAgICAgYm91bmRNZXRob2QuX19yZWFjdEJvdW5kTWV0aG9kID0gbWV0
aG9kO1xuICAgICAgYm91bmRNZXRob2QuX19yZWFjdEJvdW5kQXJndW1lbnRzID0gbnVsbDtcbiAg
ICAgIHZhciBjb21wb25lbnROYW1lID0gY29tcG9uZW50LmNvbnN0cnVjdG9yLmRpc3BsYXlOYW1l
O1xuICAgICAgdmFyIF9iaW5kID0gYm91bmRNZXRob2QuYmluZDtcbiAgICAgIGJvdW5kTWV0aG9k
LmJpbmQgPSBmdW5jdGlvbihuZXdUaGlzKSB7XG4gICAgICAgIGZvciAoXG4gICAgICAgICAgdmFy
IF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLFxuICAgICAgICAgICAgYXJncyA9IEFycmF5KF9sZW4g
PiAxID8gX2xlbiAtIDEgOiAwKSxcbiAgICAgICAgICAgIF9rZXkgPSAxO1xuICAgICAgICAgIF9r
ZXkgPCBfbGVuO1xuICAgICAgICAgIF9rZXkrK1xuICAgICAgICApIHtcbiAgICAgICAgICBhcmdz
W19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFVz
ZXIgaXMgdHJ5aW5nIHRvIGJpbmQoKSBhbiBhdXRvYm91bmQgbWV0aG9kOyB3ZSBlZmZlY3RpdmVs
eSB3aWxsXG4gICAgICAgIC8vIGlnbm9yZSB0aGUgdmFsdWUgb2YgXCJ0aGlzXCIgdGhhdCB0aGUg
dXNlciBpcyB0cnlpbmcgdG8gdXNlLCBzb1xuICAgICAgICAvLyBsZXQncyB3YXJuLlxuICAgICAg
ICBpZiAobmV3VGhpcyAhPT0gY29tcG9uZW50ICYmIG5ld1RoaXMgIT09IG51bGwpIHtcbiAgICAg
ICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAg
ICAgICAgd2FybmluZyhcbiAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICdiaW5k
KCk6IFJlYWN0IGNvbXBvbmVudCBtZXRob2RzIG1heSBvbmx5IGJlIGJvdW5kIHRvIHRoZSAnICtc
biAgICAgICAgICAgICAgICAnY29tcG9uZW50IGluc3RhbmNlLiBTZWUgJXMnLFxuICAgICAgICAg
ICAgICBjb21wb25lbnROYW1lXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAg
fSBlbHNlIGlmICghYXJncy5sZW5ndGgpIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgd2FybmluZyhcbiAgICAgICAg
ICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICdiaW5kKCk6IFlvdSBhcmUgYmluZGluZyBhIGNv
bXBvbmVudCBtZXRob2QgdG8gdGhlIGNvbXBvbmVudC4gJyArXG4gICAgICAgICAgICAgICAgJ1Jl
YWN0IGRvZXMgdGhpcyBmb3IgeW91IGF1dG9tYXRpY2FsbHkgaW4gYSBoaWdoLXBlcmZvcm1hbmNl
ICcgK1xuICAgICAgICAgICAgICAgICd3YXksIHNvIHlvdSBjYW4gc2FmZWx5IHJlbW92ZSB0aGlz
IGNhbGwuIFNlZSAlcycsXG4gICAgICAgICAgICAgIGNvbXBvbmVudE5hbWVcbiAgICAgICAgICAg
ICk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBib3VuZE1ldGhvZDtcbiAgICAgICAg
fVxuICAgICAgICB2YXIgcmVib3VuZE1ldGhvZCA9IF9iaW5kLmFwcGx5KGJvdW5kTWV0aG9kLCBh
cmd1bWVudHMpO1xuICAgICAgICByZWJvdW5kTWV0aG9kLl9fcmVhY3RCb3VuZENvbnRleHQgPSBj
b21wb25lbnQ7XG4gICAgICAgIHJlYm91bmRNZXRob2QuX19yZWFjdEJvdW5kTWV0aG9kID0gbWV0
aG9kO1xuICAgICAgICByZWJvdW5kTWV0aG9kLl9fcmVhY3RCb3VuZEFyZ3VtZW50cyA9IGFyZ3M7
XG4gICAgICAgIHJldHVybiByZWJvdW5kTWV0aG9kO1xuICAgICAgfTtcbiAgICB9XG4gICAgcmV0
dXJuIGJvdW5kTWV0aG9kO1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmRzIGFsbCBhdXRvLWJvdW5k
IG1ldGhvZHMgaW4gYSBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBjb21w
b25lbnQgQ29tcG9uZW50IHdob3NlIG1ldGhvZCBpcyBnb2luZyB0byBiZSBib3VuZC5cbiAgICov
XG4gIGZ1bmN0aW9uIGJpbmRBdXRvQmluZE1ldGhvZHMoY29tcG9uZW50KSB7XG4gICAgdmFyIHBh
aXJzID0gY29tcG9uZW50Ll9fcmVhY3RBdXRvQmluZFBhaXJzO1xuICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgcGFpcnMubGVuZ3RoOyBpICs9IDIpIHtcbiAgICAgIHZhciBhdXRvQmluZEtleSA9IHBh
aXJzW2ldO1xuICAgICAgdmFyIG1ldGhvZCA9IHBhaXJzW2kgKyAxXTtcbiAgICAgIGNvbXBvbmVu
dFthdXRvQmluZEtleV0gPSBiaW5kQXV0b0JpbmRNZXRob2QoY29tcG9uZW50LCBtZXRob2QpO1xu
ICAgIH1cbiAgfVxuXG4gIHZhciBJc01vdW50ZWRQcmVNaXhpbiA9IHtcbiAgICBjb21wb25lbnRE
aWRNb3VudDogZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLl9faXNNb3VudGVkID0gdHJ1ZTtcbiAg
ICB9XG4gIH07XG5cbiAgdmFyIElzTW91bnRlZFBvc3RNaXhpbiA9IHtcbiAgICBjb21wb25lbnRX
aWxsVW5tb3VudDogZnVuY3Rpb24oKSB7XG4gICAgICB0aGlzLl9faXNNb3VudGVkID0gZmFsc2U7
XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBBZGQgbW9yZSB0byB0aGUgUmVhY3RDbGFzcyBi
YXNlIGNsYXNzLiBUaGVzZSBhcmUgYWxsIGxlZ2FjeSBmZWF0dXJlcyBhbmRcbiAgICogdGhlcmVm
b3JlIG5vdCBhbHJlYWR5IHBhcnQgb2YgdGhlIG1vZGVybiBSZWFjdENvbXBvbmVudC5cbiAgICov
XG4gIHZhciBSZWFjdENsYXNzTWl4aW4gPSB7XG4gICAgLyoqXG4gICAgICogVE9ETzogVGhpcyB3
aWxsIGJlIGRlcHJlY2F0ZWQgYmVjYXVzZSBzdGF0ZSBzaG91bGQgYWx3YXlzIGtlZXAgYSBjb25z
aXN0ZW50XG4gICAgICogdHlwZSBzaWduYXR1cmUgYW5kIHRoZSBvbmx5IHVzZSBjYXNlIGZvciB0
aGlzLCBpcyB0byBhdm9pZCB0aGF0LlxuICAgICAqL1xuICAgIHJlcGxhY2VTdGF0ZTogZnVuY3Rp
b24obmV3U3RhdGUsIGNhbGxiYWNrKSB7XG4gICAgICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZVJlcGxh
Y2VTdGF0ZSh0aGlzLCBuZXdTdGF0ZSwgY2FsbGJhY2spO1xuICAgIH0sXG5cbiAgICAvKipcbiAg
ICAgKiBDaGVja3Mgd2hldGhlciBvciBub3QgdGhpcyBjb21wb3NpdGUgY29tcG9uZW50IGlzIG1v
dW50ZWQuXG4gICAgICogQHJldHVybiB7Ym9vbGVhbn0gVHJ1ZSBpZiBtb3VudGVkLCBmYWxzZSBv
dGhlcndpc2UuXG4gICAgICogQHByb3RlY3RlZFxuICAgICAqIEBmaW5hbFxuICAgICAqL1xuICAg
IGlzTW91bnRlZDogZnVuY3Rpb24oKSB7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgIHRoaXMuX19k
aWRXYXJuSXNNb3VudGVkLFxuICAgICAgICAgICclczogaXNNb3VudGVkIGlzIGRlcHJlY2F0ZWQu
IEluc3RlYWQsIG1ha2Ugc3VyZSB0byBjbGVhbiB1cCAnICtcbiAgICAgICAgICAgICdzdWJzY3Jp
cHRpb25zIGFuZCBwZW5kaW5nIHJlcXVlc3RzIGluIGNvbXBvbmVudFdpbGxVbm1vdW50IHRvICcg
K1xuICAgICAgICAgICAgJ3ByZXZlbnQgbWVtb3J5IGxlYWtzLicsXG4gICAgICAgICAgKHRoaXMu
Y29uc3RydWN0b3IgJiYgdGhpcy5jb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSkgfHxcbiAgICAgICAg
ICAgIHRoaXMubmFtZSB8fFxuICAgICAgICAgICAgJ0NvbXBvbmVudCdcbiAgICAgICAgKTtcbiAg
ICAgICAgdGhpcy5fX2RpZFdhcm5Jc01vdW50ZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0
dXJuICEhdGhpcy5fX2lzTW91bnRlZDtcbiAgICB9XG4gIH07XG5cbiAgdmFyIFJlYWN0Q2xhc3ND
b21wb25lbnQgPSBmdW5jdGlvbigpIHt9O1xuICBfYXNzaWduKFxuICAgIFJlYWN0Q2xhc3NDb21w
b25lbnQucHJvdG90eXBlLFxuICAgIFJlYWN0Q29tcG9uZW50LnByb3RvdHlwZSxcbiAgICBSZWFj
dENsYXNzTWl4aW5cbiAgKTtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIGNvbXBvc2l0ZSBjb21w
b25lbnQgY2xhc3MgZ2l2ZW4gYSBjbGFzcyBzcGVjaWZpY2F0aW9uLlxuICAgKiBTZWUgaHR0cHM6
Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVhY3Qu
Y3JlYXRlY2xhc3NcbiAgICpcbiAgICogQHBhcmFtIHtvYmplY3R9IHNwZWMgQ2xhc3Mgc3BlY2lm
aWNhdGlvbiAod2hpY2ggbXVzdCBkZWZpbmUgYHJlbmRlcmApLlxuICAgKiBAcmV0dXJuIHtmdW5j
dGlvbn0gQ29tcG9uZW50IGNvbnN0cnVjdG9yIGZ1bmN0aW9uLlxuICAgKiBAcHVibGljXG4gICAq
L1xuICBmdW5jdGlvbiBjcmVhdGVDbGFzcyhzcGVjKSB7XG4gICAgLy8gVG8ga2VlcCBvdXIgd2Fy
bmluZ3MgbW9yZSB1bmRlcnN0YW5kYWJsZSwgd2UnbGwgdXNlIGEgbGl0dGxlIGhhY2sgaGVyZSB0
b1xuICAgIC8vIGVuc3VyZSB0aGF0IENvbnN0cnVjdG9yLm5hbWUgIT09ICdDb25zdHJ1Y3Rvcicu
IFRoaXMgbWFrZXMgc3VyZSB3ZSBkb24ndFxuICAgIC8vIHVubmVjZXNzYXJpbHkgaWRlbnRpZnkg
YSBjbGFzcyB3aXRob3V0IGRpc3BsYXlOYW1lIGFzICdDb25zdHJ1Y3RvcicuXG4gICAgdmFyIENv
bnN0cnVjdG9yID0gaWRlbnRpdHkoZnVuY3Rpb24ocHJvcHMsIGNvbnRleHQsIHVwZGF0ZXIpIHtc
biAgICAgIC8vIFRoaXMgY29uc3RydWN0b3IgZ2V0cyBvdmVycmlkZGVuIGJ5IG1vY2tzLiBUaGUg
YXJndW1lbnQgaXMgdXNlZFxuICAgICAgLy8gYnkgbW9ja3MgdG8gYXNzZXJ0IG9uIHdoYXQgZ2V0
cyBtb3VudGVkLlxuXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJykge1xuICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgIHRoaXMgaW5zdGFuY2VvZiBDb25z
dHJ1Y3RvcixcbiAgICAgICAgICAnU29tZXRoaW5nIGlzIGNhbGxpbmcgYSBSZWFjdCBjb21wb25l
bnQgZGlyZWN0bHkuIFVzZSBhIGZhY3Rvcnkgb3IgJyArXG4gICAgICAgICAgICAnSlNYIGluc3Rl
YWQuIFNlZTogaHR0cHM6Ly9mYi5tZS9yZWFjdC1sZWdhY3lmYWN0b3J5J1xuICAgICAgICApO1xu
ICAgICAgfVxuXG4gICAgICAvLyBXaXJlIHVwIGF1dG8tYmluZGluZ1xuICAgICAgaWYgKHRoaXMu
X19yZWFjdEF1dG9CaW5kUGFpcnMubGVuZ3RoKSB7XG4gICAgICAgIGJpbmRBdXRvQmluZE1ldGhv
ZHModGhpcyk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgICAgIHRo
aXMuY29udGV4dCA9IGNvbnRleHQ7XG4gICAgICB0aGlzLnJlZnMgPSBlbXB0eU9iamVjdDtcbiAg
ICAgIHRoaXMudXBkYXRlciA9IHVwZGF0ZXIgfHwgUmVhY3ROb29wVXBkYXRlUXVldWU7XG5cbiAg
ICAgIHRoaXMuc3RhdGUgPSBudWxsO1xuXG4gICAgICAvLyBSZWFjdENsYXNzZXMgZG9lc24ndCBo
YXZlIGNvbnN0cnVjdG9ycy4gSW5zdGVhZCwgdGhleSB1c2UgdGhlXG4gICAgICAvLyBnZXRJbml0
aWFsU3RhdGUgYW5kIGNvbXBvbmVudFdpbGxNb3VudCBtZXRob2RzIGZvciBpbml0aWFsaXphdGlv
bi5cblxuICAgICAgdmFyIGluaXRpYWxTdGF0ZSA9IHRoaXMuZ2V0SW5pdGlhbFN0YXRlID8gdGhp
cy5nZXRJbml0aWFsU3RhdGUoKSA6IG51bGw7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAvLyBXZSBhbGxvdyBhdXRvLW1vY2tzIHRv
IHByb2NlZWQgYXMgaWYgdGhleSdyZSByZXR1cm5pbmcgbnVsbC5cbiAgICAgICAgaWYgKFxuICAg
ICAgICAgIGluaXRpYWxTdGF0ZSA9PT0gdW5kZWZpbmVkICYmXG4gICAgICAgICAgdGhpcy5nZXRJ
bml0aWFsU3RhdGUuX2lzTW9ja0Z1bmN0aW9uXG4gICAgICAgICkge1xuICAgICAgICAgIC8vIFRo
aXMgaXMgcHJvYmFibHkgYmFkIHByYWN0aWNlLiBDb25zaWRlciB3YXJuaW5nIGhlcmUgYW5kXG4g
ICAgICAgICAgLy8gZGVwcmVjYXRpbmcgdGhpcyBjb252ZW5pZW5jZS5cbiAgICAgICAgICBpbml0
aWFsU3RhdGUgPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBfaW52YXJpYW50KFxu
ICAgICAgICB0eXBlb2YgaW5pdGlhbFN0YXRlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJh
eShpbml0aWFsU3RhdGUpLFxuICAgICAgICAnJXMuZ2V0SW5pdGlhbFN0YXRlKCk6IG11c3QgcmV0
dXJuIGFuIG9iamVjdCBvciBudWxsJyxcbiAgICAgICAgQ29uc3RydWN0b3IuZGlzcGxheU5hbWUg
fHwgJ1JlYWN0Q29tcG9zaXRlQ29tcG9uZW50J1xuICAgICAgKTtcblxuICAgICAgdGhpcy5zdGF0
ZSA9IGluaXRpYWxTdGF0ZTtcbiAgICB9KTtcbiAgICBDb25zdHJ1Y3Rvci5wcm90b3R5cGUgPSBu
ZXcgUmVhY3RDbGFzc0NvbXBvbmVudCgpO1xuICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciA9IENvbnN0cnVjdG9yO1xuICAgIENvbnN0cnVjdG9yLnByb3RvdHlwZS5fX3JlYWN0
QXV0b0JpbmRQYWlycyA9IFtdO1xuXG4gICAgaW5qZWN0ZWRNaXhpbnMuZm9yRWFjaChtaXhTcGVj
SW50b0NvbXBvbmVudC5iaW5kKG51bGwsIENvbnN0cnVjdG9yKSk7XG5cbiAgICBtaXhTcGVjSW50
b0NvbXBvbmVudChDb25zdHJ1Y3RvciwgSXNNb3VudGVkUHJlTWl4aW4pO1xuICAgIG1peFNwZWNJ
bnRvQ29tcG9uZW50KENvbnN0cnVjdG9yLCBzcGVjKTtcbiAgICBtaXhTcGVjSW50b0NvbXBvbmVu
dChDb25zdHJ1Y3RvciwgSXNNb3VudGVkUG9zdE1peGluKTtcblxuICAgIC8vIEluaXRpYWxpemUg
dGhlIGRlZmF1bHRQcm9wcyBwcm9wZXJ0eSBhZnRlciBhbGwgbWl4aW5zIGhhdmUgYmVlbiBtZXJn
ZWQuXG4gICAgaWYgKENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcykge1xuICAgICAgQ29uc3Ry
dWN0b3IuZGVmYXVsdFByb3BzID0gQ29uc3RydWN0b3IuZ2V0RGVmYXVsdFByb3BzKCk7XG4gICAg
fVxuXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAg
ICAgIC8vIFRoaXMgaXMgYSB0YWcgdG8gaW5kaWNhdGUgdGhhdCB0aGUgdXNlIG9mIHRoZXNlIG1l
dGhvZCBuYW1lcyBpcyBvayxcbiAgICAgIC8vIHNpbmNlIGl0J3MgdXNlZCB3aXRoIGNyZWF0ZUNs
YXNzLiBJZiBpdCdzIG5vdCwgdGhlbiBpdCdzIGxpa2VseSBhXG4gICAgICAvLyBtaXN0YWtlIHNv
IHdlJ2xsIHdhcm4geW91IHRvIHVzZSB0aGUgc3RhdGljIHByb3BlcnR5LCBwcm9wZXJ0eVxuICAg
ICAgLy8gaW5pdGlhbGl6ZXIgb3IgY29uc3RydWN0b3IgcmVzcGVjdGl2ZWx5LlxuICAgICAgaWYg
KENvbnN0cnVjdG9yLmdldERlZmF1bHRQcm9wcykge1xuICAgICAgICBDb25zdHJ1Y3Rvci5nZXRE
ZWZhdWx0UHJvcHMuaXNSZWFjdENsYXNzQXBwcm92ZWQgPSB7fTtcbiAgICAgIH1cbiAgICAgIGlm
IChDb25zdHJ1Y3Rvci5wcm90b3R5cGUuZ2V0SW5pdGlhbFN0YXRlKSB7XG4gICAgICAgIENvbnN0
cnVjdG9yLnByb3RvdHlwZS5nZXRJbml0aWFsU3RhdGUuaXNSZWFjdENsYXNzQXBwcm92ZWQgPSB7
fTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBfaW52YXJpYW50KFxuICAgICAgQ29uc3RydWN0b3Iu
cHJvdG90eXBlLnJlbmRlcixcbiAgICAgICdjcmVhdGVDbGFzcyguLi4pOiBDbGFzcyBzcGVjaWZp
Y2F0aW9uIG11c3QgaW1wbGVtZW50IGEgYHJlbmRlcmAgbWV0aG9kLidcbiAgICApO1xuXG4gICAg
aWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHdhcm5p
bmcoXG4gICAgICAgICFDb25zdHJ1Y3Rvci5wcm90b3R5cGUuY29tcG9uZW50U2hvdWxkVXBkYXRl
LFxuICAgICAgICAnJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCAnICtcbiAgICAgICAgICAnY29tcG9u
ZW50U2hvdWxkVXBkYXRlKCkuIERpZCB5b3UgbWVhbiBzaG91bGRDb21wb25lbnRVcGRhdGUoKT8g
JyArXG4gICAgICAgICAgJ1RoZSBuYW1lIGlzIHBocmFzZWQgYXMgYSBxdWVzdGlvbiBiZWNhdXNl
IHRoZSBmdW5jdGlvbiBpcyAnICtcbiAgICAgICAgICAnZXhwZWN0ZWQgdG8gcmV0dXJuIGEgdmFs
dWUuJyxcbiAgICAgICAgc3BlYy5kaXNwbGF5TmFtZSB8fCAnQSBjb21wb25lbnQnXG4gICAgICAp
O1xuICAgICAgd2FybmluZyhcbiAgICAgICAgIUNvbnN0cnVjdG9yLnByb3RvdHlwZS5jb21wb25l
bnRXaWxsUmVjaWV2ZVByb3BzLFxuICAgICAgICAnJXMgaGFzIGEgbWV0aG9kIGNhbGxlZCAnICtc
biAgICAgICAgICAnY29tcG9uZW50V2lsbFJlY2lldmVQcm9wcygpLiBEaWQgeW91IG1lYW4gY29t
cG9uZW50V2lsbFJlY2VpdmVQcm9wcygpPycsXG4gICAgICAgIHNwZWMuZGlzcGxheU5hbWUgfHwg
J0EgY29tcG9uZW50J1xuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBSZWR1Y2UgdGltZSBzcGVu
dCBkb2luZyBsb29rdXBzIGJ5IHNldHRpbmcgdGhlc2Ugb24gdGhlIHByb3RvdHlwZS5cbiAgICBm
b3IgKHZhciBtZXRob2ROYW1lIGluIFJlYWN0Q2xhc3NJbnRlcmZhY2UpIHtcbiAgICAgIGlmICgh
Q29uc3RydWN0b3IucHJvdG90eXBlW21ldGhvZE5hbWVdKSB7XG4gICAgICAgIENvbnN0cnVjdG9y
LnByb3RvdHlwZVttZXRob2ROYW1lXSA9IG51bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0
dXJuIENvbnN0cnVjdG9yO1xuICB9XG5cbiAgcmV0dXJuIGNyZWF0ZUNsYXNzO1xufVxuXG5tb2R1
bGUuZXhwb3J0cyA9IGZhY3Rvcnk7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQ
QUNLIEZPT1RFUlxuICoqIC4vfi9jcmVhdGUtcmVhY3QtY2xhc3MvZmFjdG9yeS5qc1xuICoqIG1v
ZHVsZSBpZCA9IDk3XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJcInVzZSBzdHJpY3Rc
IjtcblxuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5c
biAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEB0eXBlY2hlY2tzXG4gKi9c
blxudmFyIF9oeXBoZW5QYXR0ZXJuID0gLy0oLikvZztcblxuLyoqXG4gKiBDYW1lbGNhc2VzIGEg
aHlwaGVuYXRlZCBzdHJpbmcsIGZvciBleGFtcGxlOlxuICpcbiAqICAgPiBjYW1lbGl6ZSgnYmFj
a2dyb3VuZC1jb2xvcicpXG4gKiAgIDwgXCJiYWNrZ3JvdW5kQ29sb3JcIlxuICpcbiAqIEBwYXJh
bSB7c3RyaW5nfSBzdHJpbmdcbiAqIEByZXR1cm4ge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gY2Ft
ZWxpemUoc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmcucmVwbGFjZShfaHlwaGVuUGF0dGVybiwg
ZnVuY3Rpb24gKF8sIGNoYXJhY3Rlcikge1xuICAgIHJldHVybiBjaGFyYWN0ZXIudG9VcHBlckNh
c2UoKTtcbiAgfSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gY2FtZWxpemU7XG5cblxuLyoqKioq
KioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vZmJqcy9saWIvY2FtZWxp
emUuanNcbiAqKiBtb2R1bGUgaWQgPSA5OFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwi
LyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEB0eXBlY2hlY2tzXG4gKi9cblxuJ3Vz
ZSBzdHJpY3QnO1xuXG52YXIgY2FtZWxpemUgPSByZXF1aXJlKCcuL2NhbWVsaXplJyk7XG5cbnZh
ciBtc1BhdHRlcm4gPSAvXi1tcy0vO1xuXG4vKipcbiAqIENhbWVsY2FzZXMgYSBoeXBoZW5hdGVk
IENTUyBwcm9wZXJ0eSBuYW1lLCBmb3IgZXhhbXBsZTpcbiAqXG4gKiAgID4gY2FtZWxpemVTdHls
ZU5hbWUoJ2JhY2tncm91bmQtY29sb3InKVxuICogICA8IFwiYmFja2dyb3VuZENvbG9yXCJcbiAq
ICAgPiBjYW1lbGl6ZVN0eWxlTmFtZSgnLW1vei10cmFuc2l0aW9uJylcbiAqICAgPCBcIk1velRy
YW5zaXRpb25cIlxuICogICA+IGNhbWVsaXplU3R5bGVOYW1lKCctbXMtdHJhbnNpdGlvbicpXG4g
KiAgIDwgXCJtc1RyYW5zaXRpb25cIlxuICpcbiAqIEFzIEFuZGkgU21pdGggc3VnZ2VzdHNcbiAq
IChodHRwOi8vd3d3LmFuZGlzbWl0aC5jb20vYmxvZy8yMDEyLzAyL21vZGVybml6ci1wcmVmaXhl
ZC8pLCBhbiBgLW1zYCBwcmVmaXhcbiAqIGlzIGNvbnZlcnRlZCB0byBsb3dlcmNhc2UgYG1zYC5c
biAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3RyaW5nXG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9c
bmZ1bmN0aW9uIGNhbWVsaXplU3R5bGVOYW1lKHN0cmluZykge1xuICByZXR1cm4gY2FtZWxpemUo
c3RyaW5nLnJlcGxhY2UobXNQYXR0ZXJuLCAnbXMtJykpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9
IGNhbWVsaXplU3R5bGVOYW1lO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sg
Rk9PVEVSXG4gKiogLi9+L2ZianMvbGliL2NhbWVsaXplU3R5bGVOYW1lLmpzXG4gKiogbW9kdWxl
IGlkID0gOTlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0Jztcblxu
LyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFs
bCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1
bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUg
aW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwg
Z3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZp
bGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbnZhciBpc1RleHROb2Rl
ID0gcmVxdWlyZSgnLi9pc1RleHROb2RlJyk7XG5cbi8qZXNsaW50LWRpc2FibGUgbm8tYml0d2lz
ZSAqL1xuXG4vKipcbiAqIENoZWNrcyBpZiBhIGdpdmVuIERPTSBub2RlIGNvbnRhaW5zIG9yIGlz
IGFub3RoZXIgRE9NIG5vZGUuXG4gKi9cbmZ1bmN0aW9uIGNvbnRhaW5zTm9kZShvdXRlck5vZGUs
IGlubmVyTm9kZSkge1xuICBpZiAoIW91dGVyTm9kZSB8fCAhaW5uZXJOb2RlKSB7XG4gICAgcmV0
dXJuIGZhbHNlO1xuICB9IGVsc2UgaWYgKG91dGVyTm9kZSA9PT0gaW5uZXJOb2RlKSB7XG4gICAg
cmV0dXJuIHRydWU7XG4gIH0gZWxzZSBpZiAoaXNUZXh0Tm9kZShvdXRlck5vZGUpKSB7XG4gICAg
cmV0dXJuIGZhbHNlO1xuICB9IGVsc2UgaWYgKGlzVGV4dE5vZGUoaW5uZXJOb2RlKSkge1xuICAg
IHJldHVybiBjb250YWluc05vZGUob3V0ZXJOb2RlLCBpbm5lck5vZGUucGFyZW50Tm9kZSk7XG4g
IH0gZWxzZSBpZiAoJ2NvbnRhaW5zJyBpbiBvdXRlck5vZGUpIHtcbiAgICByZXR1cm4gb3V0ZXJO
b2RlLmNvbnRhaW5zKGlubmVyTm9kZSk7XG4gIH0gZWxzZSBpZiAob3V0ZXJOb2RlLmNvbXBhcmVE
b2N1bWVudFBvc2l0aW9uKSB7XG4gICAgcmV0dXJuICEhKG91dGVyTm9kZS5jb21wYXJlRG9jdW1l
bnRQb3NpdGlvbihpbm5lck5vZGUpICYgMTYpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxz
ZTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNvbnRhaW5zTm9kZTtcblxuXG4vKioqKioq
KioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9mYmpzL2xpYi9jb250YWlu
c05vZGUuanNcbiAqKiBtb2R1bGUgaWQgPSAxMDBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoq
LyIsIid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEB0
eXBlY2hlY2tzXG4gKi9cblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJy4vaW52YXJpYW50Jyk7
XG5cbi8qKlxuICogQ29udmVydCBhcnJheS1saWtlIG9iamVjdHMgdG8gYXJyYXlzLlxuICpcbiAq
IFRoaXMgQVBJIGFzc3VtZXMgdGhlIGNhbGxlciBrbm93cyB0aGUgY29udGVudHMgb2YgdGhlIGRh
dGEgdHlwZS4gRm9yIGxlc3NcbiAqIHdlbGwgZGVmaW5lZCBpbnB1dHMgdXNlIGNyZWF0ZUFycmF5
RnJvbU1peGVkLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fGZ1bmN0aW9ufGZpbGVsaXN0fSBvYmpc
biAqIEByZXR1cm4ge2FycmF5fVxuICovXG5mdW5jdGlvbiB0b0FycmF5KG9iaikge1xuICB2YXIg
bGVuZ3RoID0gb2JqLmxlbmd0aDtcblxuICAvLyBTb21lIGJyb3dzZXJzIGJ1aWx0aW4gb2JqZWN0
cyBjYW4gcmVwb3J0IHR5cGVvZiAnZnVuY3Rpb24nIChlLmcuIE5vZGVMaXN0XG4gIC8vIGluIG9s
ZCB2ZXJzaW9ucyBvZiBTYWZhcmkpLlxuICAhKCFBcnJheS5pc0FycmF5KG9iaikgJiYgKHR5cGVv
ZiBvYmogPT09ICdvYmplY3QnIHx8IHR5cGVvZiBvYmogPT09ICdmdW5jdGlvbicpKSA/IHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd0b0Fy
cmF5OiBBcnJheS1saWtlIG9iamVjdCBleHBlY3RlZCcpIDogaW52YXJpYW50KGZhbHNlKSA6IHZv
aWQgMDtcblxuICAhKHR5cGVvZiBsZW5ndGggPT09ICdudW1iZXInKSA/IHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICd0b0FycmF5OiBPYmpl
Y3QgbmVlZHMgYSBsZW5ndGggcHJvcGVydHknKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7
XG5cbiAgIShsZW5ndGggPT09IDAgfHwgbGVuZ3RoIC0gMSBpbiBvYmopID8gcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3RvQXJyYXk6IE9i
amVjdCBzaG91bGQgaGF2ZSBrZXlzIGZvciBpbmRpY2VzJykgOiBpbnZhcmlhbnQoZmFsc2UpIDog
dm9pZCAwO1xuXG4gICEodHlwZW9mIG9iai5jYWxsZWUgIT09ICdmdW5jdGlvbicpID8gcHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3RvQXJy
YXk6IE9iamVjdCBjYW5cXCd0IGJlIGBhcmd1bWVudHNgLiBVc2UgcmVzdCBwYXJhbXMgJyArICco
ZnVuY3Rpb24oLi4uYXJncykge30pIG9yIEFycmF5LmZyb20oKSBpbnN0ZWFkLicpIDogaW52YXJp
YW50KGZhbHNlKSA6IHZvaWQgMDtcblxuICAvLyBPbGQgSUUgZG9lc24ndCBnaXZlIGNvbGxlY3Rp
b25zIGFjY2VzcyB0byBoYXNPd25Qcm9wZXJ0eS4gQXNzdW1lIGlucHV0c1xuICAvLyB3aXRob3V0
IG1ldGhvZCB3aWxsIHRocm93IGR1cmluZyB0aGUgc2xpY2UgY2FsbCBhbmQgc2tpcCBzdHJhaWdo
dCB0byB0aGVcbiAgLy8gZmFsbGJhY2suXG4gIGlmIChvYmouaGFzT3duUHJvcGVydHkpIHtcbiAg
ICB0cnkge1xuICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKG9iaik7XG4g
ICAgfSBjYXRjaCAoZSkge1xuICAgICAgLy8gSUUgPCA5IGRvZXMgbm90IHN1cHBvcnQgQXJyYXkj
c2xpY2Ugb24gY29sbGVjdGlvbnMgb2JqZWN0c1xuICAgIH1cbiAgfVxuXG4gIC8vIEZhbGwgYmFj
ayB0byBjb3B5aW5nIGtleSBieSBrZXkuIFRoaXMgYXNzdW1lcyBhbGwga2V5cyBoYXZlIGEgdmFs
dWUsXG4gIC8vIHNvIHdpbGwgbm90IHByZXNlcnZlIHNwYXJzZWx5IHBvcHVsYXRlZCBpbnB1dHMu
XG4gIHZhciByZXQgPSBBcnJheShsZW5ndGgpO1xuICBmb3IgKHZhciBpaSA9IDA7IGlpIDwgbGVu
Z3RoOyBpaSsrKSB7XG4gICAgcmV0W2lpXSA9IG9ialtpaV07XG4gIH1cbiAgcmV0dXJuIHJldDtc
bn1cblxuLyoqXG4gKiBQZXJmb3JtIGEgaGV1cmlzdGljIHRlc3QgdG8gZGV0ZXJtaW5lIGlmIGFu
IG9iamVjdCBpcyBcImFycmF5LWxpa2VcIi5cbiAqXG4gKiAgIEEgbW9uayBhc2tlZCBKb3NodSwg
YSBaZW4gbWFzdGVyLCBcIkhhcyBhIGRvZyBCdWRkaGEgbmF0dXJlP1wiXG4gKiAgIEpvc2h1IHJl
cGxpZWQ6IFwiTXUuXCJcbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIGRldGVybWluZXMgaWYgaXRzIGFy
Z3VtZW50IGhhcyBcImFycmF5IG5hdHVyZVwiOiBpdCByZXR1cm5zXG4gKiB0cnVlIGlmIHRoZSBh
cmd1bWVudCBpcyBhbiBhY3R1YWwgYXJyYXksIGFuIGBhcmd1bWVudHMnIG9iamVjdCwgb3IgYW5c
biAqIEhUTUxDb2xsZWN0aW9uIChlLmcuIG5vZGUuY2hpbGROb2RlcyBvciBub2RlLmdldEVsZW1l
bnRzQnlUYWdOYW1lKCkpLlxuICpcbiAqIEl0IHdpbGwgcmV0dXJuIGZhbHNlIGZvciBvdGhlciBh
cnJheS1saWtlIG9iamVjdHMgbGlrZSBGaWxlbGlzdC5cbiAqXG4gKiBAcGFyYW0geyp9IG9ialxu
ICogQHJldHVybiB7Ym9vbGVhbn1cbiAqL1xuZnVuY3Rpb24gaGFzQXJyYXlOYXR1cmUob2JqKSB7
XG4gIHJldHVybiAoXG4gICAgLy8gbm90IG51bGwvZmFsc2VcbiAgICAhIW9iaiAmJiAoXG4gICAg
Ly8gYXJyYXlzIGFyZSBvYmplY3RzLCBOb2RlTGlzdHMgYXJlIGZ1bmN0aW9ucyBpbiBTYWZhcmlc
biAgICB0eXBlb2Ygb2JqID09ICdvYmplY3QnIHx8IHR5cGVvZiBvYmogPT0gJ2Z1bmN0aW9uJykg
JiZcbiAgICAvLyBxdWFja3MgbGlrZSBhbiBhcnJheVxuICAgICdsZW5ndGgnIGluIG9iaiAmJlxu
ICAgIC8vIG5vdCB3aW5kb3dcbiAgICAhKCdzZXRJbnRlcnZhbCcgaW4gb2JqKSAmJlxuICAgIC8v
IG5vIERPTSBub2RlIHNob3VsZCBiZSBjb25zaWRlcmVkIGFuIGFycmF5LWxpa2VcbiAgICAvLyBh
ICdzZWxlY3QnIGVsZW1lbnQgaGFzICdsZW5ndGgnIGFuZCAnaXRlbScgcHJvcGVydGllcyBvbiBJ
RThcbiAgICB0eXBlb2Ygb2JqLm5vZGVUeXBlICE9ICdudW1iZXInICYmIChcbiAgICAvLyBhIHJl
YWwgYXJyYXlcbiAgICBBcnJheS5pc0FycmF5KG9iaikgfHxcbiAgICAvLyBhcmd1bWVudHNcbiAg
ICAnY2FsbGVlJyBpbiBvYmogfHxcbiAgICAvLyBIVE1MQ29sbGVjdGlvbi9Ob2RlTGlzdFxuICAg
ICdpdGVtJyBpbiBvYmopXG4gICk7XG59XG5cbi8qKlxuICogRW5zdXJlIHRoYXQgdGhlIGFyZ3Vt
ZW50IGlzIGFuIGFycmF5IGJ5IHdyYXBwaW5nIGl0IGluIGFuIGFycmF5IGlmIGl0IGlzIG5vdC5c
biAqIENyZWF0ZXMgYSBjb3B5IG9mIHRoZSBhcmd1bWVudCBpZiBpdCBpcyBhbHJlYWR5IGFuIGFy
cmF5LlxuICpcbiAqIFRoaXMgaXMgbW9zdGx5IHVzZWZ1bCBpZGlvbWF0aWNhbGx5OlxuICpcbiAq
ICAgdmFyIGNyZWF0ZUFycmF5RnJvbU1peGVkID0gcmVxdWlyZSgnY3JlYXRlQXJyYXlGcm9tTWl4
ZWQnKTtcbiAqXG4gKiAgIGZ1bmN0aW9uIHRha2VzT25lT3JNb3JlVGhpbmdzKHRoaW5ncykge1xu
ICogICAgIHRoaW5ncyA9IGNyZWF0ZUFycmF5RnJvbU1peGVkKHRoaW5ncyk7XG4gKiAgICAgLi4u
XG4gKiAgIH1cbiAqXG4gKiBUaGlzIGFsbG93cyB5b3UgdG8gdHJlYXQgYHRoaW5ncycgYXMgYW4g
YXJyYXksIGJ1dCBhY2NlcHQgc2NhbGFycyBpbiB0aGUgQVBJLlxuICpcbiAqIElmIHlvdSBuZWVk
IHRvIGNvbnZlcnQgYW4gYXJyYXktbGlrZSBvYmplY3QsIGxpa2UgYGFyZ3VtZW50c2AsIGludG8g
YW4gYXJyYXlcbiAqIHVzZSB0b0FycmF5IGluc3RlYWQuXG4gKlxuICogQHBhcmFtIHsqfSBvYmpc
biAqIEByZXR1cm4ge2FycmF5fVxuICovXG5mdW5jdGlvbiBjcmVhdGVBcnJheUZyb21NaXhlZChv
YmopIHtcbiAgaWYgKCFoYXNBcnJheU5hdHVyZShvYmopKSB7XG4gICAgcmV0dXJuIFtvYmpdO1xu
ICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgIHJldHVybiBvYmouc2xpY2Uo
KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gdG9BcnJheShvYmopO1xuICB9XG59XG5cbm1vZHVs
ZS5leHBvcnRzID0gY3JlYXRlQXJyYXlGcm9tTWl4ZWQ7XG5cblxuLyoqKioqKioqKioqKioqKioq
XG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vZmJqcy9saWIvY3JlYXRlQXJyYXlGcm9tTWl4
ZWQuanNcbiAqKiBtb2R1bGUgaWQgPSAxMDFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIs
Iid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
XG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEB0eXBl
Y2hlY2tzXG4gKi9cblxuLyplc2xpbnQtZGlzYWJsZSBmYi13d3cvdW5zYWZlLWh0bWwqL1xuXG52
YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCcuL0V4ZWN1dGlvbkVudmlyb25tZW50
Jyk7XG5cbnZhciBjcmVhdGVBcnJheUZyb21NaXhlZCA9IHJlcXVpcmUoJy4vY3JlYXRlQXJyYXlG
cm9tTWl4ZWQnKTtcbnZhciBnZXRNYXJrdXBXcmFwID0gcmVxdWlyZSgnLi9nZXRNYXJrdXBXcmFw
Jyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnLi9pbnZhcmlhbnQnKTtcblxuLyoqXG4gKiBE
dW1teSBjb250YWluZXIgdXNlZCB0byByZW5kZXIgYWxsIG1hcmt1cC5cbiAqL1xudmFyIGR1bW15
Tm9kZSA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSA/IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2RpdicpIDogbnVsbDtcblxuLyoqXG4gKiBQYXR0ZXJuIHVzZWQgYnkgYGdldE5vZGVO
YW1lYC5cbiAqL1xudmFyIG5vZGVOYW1lUGF0dGVybiA9IC9eXFxzKjwoXFx3KykvO1xuXG4vKipc
biAqIEV4dHJhY3RzIHRoZSBgbm9kZU5hbWVgIG9mIHRoZSBmaXJzdCBlbGVtZW50IGluIGEgc3Ry
aW5nIG9mIG1hcmt1cC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIFN0cmluZyBvZiBt
YXJrdXAuXG4gKiBAcmV0dXJuIHs/c3RyaW5nfSBOb2RlIG5hbWUgb2YgdGhlIHN1cHBsaWVkIG1h
cmt1cC5cbiAqL1xuZnVuY3Rpb24gZ2V0Tm9kZU5hbWUobWFya3VwKSB7XG4gIHZhciBub2RlTmFt
ZU1hdGNoID0gbWFya3VwLm1hdGNoKG5vZGVOYW1lUGF0dGVybik7XG4gIHJldHVybiBub2RlTmFt
ZU1hdGNoICYmIG5vZGVOYW1lTWF0Y2hbMV0udG9Mb3dlckNhc2UoKTtcbn1cblxuLyoqXG4gKiBD
cmVhdGVzIGFuIGFycmF5IGNvbnRhaW5pbmcgdGhlIG5vZGVzIHJlbmRlcmVkIGZyb20gdGhlIHN1
cHBsaWVkIG1hcmt1cC4gVGhlXG4gKiBvcHRpb25hbGx5IHN1cHBsaWVkIGBoYW5kbGVTY3JpcHRg
IGZ1bmN0aW9uIHdpbGwgYmUgaW52b2tlZCBvbmNlIGZvciBlYWNoXG4gKiA8c2NyaXB0PiBlbGVt
ZW50IHRoYXQgaXMgcmVuZGVyZWQuIElmIG5vIGBoYW5kbGVTY3JpcHRgIGZ1bmN0aW9uIGlzIHN1
cHBsaWVkLFxuICogYW4gZXhjZXB0aW9uIGlzIHRocm93biBpZiBhbnkgPHNjcmlwdD4gZWxlbWVu
dHMgYXJlIHJlbmRlcmVkLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBtYXJrdXAgQSBzdHJpbmcg
b2YgdmFsaWQgSFRNTCBtYXJrdXAuXG4gKiBAcGFyYW0gez9mdW5jdGlvbn0gaGFuZGxlU2NyaXB0
IEludm9rZWQgb25jZSBmb3IgZWFjaCByZW5kZXJlZCA8c2NyaXB0Pi5cbiAqIEByZXR1cm4ge2Fy
cmF5PERPTUVsZW1lbnR8RE9NVGV4dE5vZGU+fSBBbiBhcnJheSBvZiByZW5kZXJlZCBub2Rlcy5c
biAqL1xuZnVuY3Rpb24gY3JlYXRlTm9kZXNGcm9tTWFya3VwKG1hcmt1cCwgaGFuZGxlU2NyaXB0
KSB7XG4gIHZhciBub2RlID0gZHVtbXlOb2RlO1xuICAhISFkdW1teU5vZGUgPyBwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnY3JlYXRlTm9k
ZXNGcm9tTWFya3VwIGR1bW15IG5vdCBpbml0aWFsaXplZCcpIDogaW52YXJpYW50KGZhbHNlKSA6
IHZvaWQgMDtcbiAgdmFyIG5vZGVOYW1lID0gZ2V0Tm9kZU5hbWUobWFya3VwKTtcblxuICB2YXIg
d3JhcCA9IG5vZGVOYW1lICYmIGdldE1hcmt1cFdyYXAobm9kZU5hbWUpO1xuICBpZiAod3JhcCkg
e1xuICAgIG5vZGUuaW5uZXJIVE1MID0gd3JhcFsxXSArIG1hcmt1cCArIHdyYXBbMl07XG5cbiAg
ICB2YXIgd3JhcERlcHRoID0gd3JhcFswXTtcbiAgICB3aGlsZSAod3JhcERlcHRoLS0pIHtcbiAg
ICAgIG5vZGUgPSBub2RlLmxhc3RDaGlsZDtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgbm9kZS5p
bm5lckhUTUwgPSBtYXJrdXA7XG4gIH1cblxuICB2YXIgc2NyaXB0cyA9IG5vZGUuZ2V0RWxlbWVu
dHNCeVRhZ05hbWUoJ3NjcmlwdCcpO1xuICBpZiAoc2NyaXB0cy5sZW5ndGgpIHtcbiAgICAhaGFu
ZGxlU2NyaXB0ID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFy
aWFudChmYWxzZSwgJ2NyZWF0ZU5vZGVzRnJvbU1hcmt1cCguLi4pOiBVbmV4cGVjdGVkIDxzY3Jp
cHQ+IGVsZW1lbnQgcmVuZGVyZWQuJykgOiBpbnZhcmlhbnQoZmFsc2UpIDogdm9pZCAwO1xuICAg
IGNyZWF0ZUFycmF5RnJvbU1peGVkKHNjcmlwdHMpLmZvckVhY2goaGFuZGxlU2NyaXB0KTtcbiAg
fVxuXG4gIHZhciBub2RlcyA9IEFycmF5LmZyb20obm9kZS5jaGlsZE5vZGVzKTtcbiAgd2hpbGUg
KG5vZGUubGFzdENoaWxkKSB7XG4gICAgbm9kZS5yZW1vdmVDaGlsZChub2RlLmxhc3RDaGlsZCk7
XG4gIH1cbiAgcmV0dXJuIG5vZGVzO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNyZWF0ZU5vZGVz
RnJvbU1hcmt1cDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxu
ICoqIC4vfi9mYmpzL2xpYi9jcmVhdGVOb2Rlc0Zyb21NYXJrdXAuanNcbiAqKiBtb2R1bGUgaWQg
PSAxMDJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0JztcblxuLyoq
XG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4vKmVzbGludC1kaXNhYmxlIGZiLXd3
dy91bnNhZmUtaHRtbCAqL1xuXG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCcu
L0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCcuL2lu
dmFyaWFudCcpO1xuXG4vKipcbiAqIER1bW15IGNvbnRhaW5lciB1c2VkIHRvIGRldGVjdCB3aGlj
aCB3cmFwcyBhcmUgbmVjZXNzYXJ5LlxuICovXG52YXIgZHVtbXlOb2RlID0gRXhlY3V0aW9uRW52
aXJvbm1lbnQuY2FuVXNlRE9NID8gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykgOiBudWxs
O1xuXG4vKipcbiAqIFNvbWUgYnJvd3NlcnMgY2Fubm90IHVzZSBgaW5uZXJIVE1MYCB0byByZW5k
ZXIgY2VydGFpbiBlbGVtZW50cyBzdGFuZGFsb25lLFxuICogc28gd2Ugd3JhcCB0aGVtLCByZW5k
ZXIgdGhlIHdyYXBwZWQgbm9kZXMsIHRoZW4gZXh0cmFjdCB0aGUgZGVzaXJlZCBub2RlLlxuICpc
biAqIEluIElFOCwgY2VydGFpbiBlbGVtZW50cyBjYW5ub3QgcmVuZGVyIGFsb25lLCBzbyB3cmFw
IGFsbCBlbGVtZW50cyAoJyonKS5cbiAqL1xuXG52YXIgc2hvdWxkV3JhcCA9IHt9O1xuXG52YXIg
c2VsZWN0V3JhcCA9IFsxLCAnPHNlbGVjdCBtdWx0aXBsZT1cInRydWVcIj4nLCAnPC9zZWxlY3Q+
J107XG52YXIgdGFibGVXcmFwID0gWzEsICc8dGFibGU+JywgJzwvdGFibGU+J107XG52YXIgdHJX
cmFwID0gWzMsICc8dGFibGU+PHRib2R5Pjx0cj4nLCAnPC90cj48L3Rib2R5PjwvdGFibGU+J107
XG5cbnZhciBzdmdXcmFwID0gWzEsICc8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAw
MC9zdmdcIj4nLCAnPC9zdmc+J107XG5cbnZhciBtYXJrdXBXcmFwID0ge1xuICAnKic6IFsxLCAn
PzxkaXY+JywgJzwvZGl2PiddLFxuXG4gICdhcmVhJzogWzEsICc8bWFwPicsICc8L21hcD4nXSxc
biAgJ2NvbCc6IFsyLCAnPHRhYmxlPjx0Ym9keT48L3Rib2R5Pjxjb2xncm91cD4nLCAnPC9jb2xn
cm91cD48L3RhYmxlPiddLFxuICAnbGVnZW5kJzogWzEsICc8ZmllbGRzZXQ+JywgJzwvZmllbGRz
ZXQ+J10sXG4gICdwYXJhbSc6IFsxLCAnPG9iamVjdD4nLCAnPC9vYmplY3Q+J10sXG4gICd0cic6
IFsyLCAnPHRhYmxlPjx0Ym9keT4nLCAnPC90Ym9keT48L3RhYmxlPiddLFxuXG4gICdvcHRncm91
cCc6IHNlbGVjdFdyYXAsXG4gICdvcHRpb24nOiBzZWxlY3RXcmFwLFxuXG4gICdjYXB0aW9uJzog
dGFibGVXcmFwLFxuICAnY29sZ3JvdXAnOiB0YWJsZVdyYXAsXG4gICd0Ym9keSc6IHRhYmxlV3Jh
cCxcbiAgJ3Rmb290JzogdGFibGVXcmFwLFxuICAndGhlYWQnOiB0YWJsZVdyYXAsXG5cbiAgJ3Rk
JzogdHJXcmFwLFxuICAndGgnOiB0cldyYXBcbn07XG5cbi8vIEluaXRpYWxpemUgdGhlIFNWRyBl
bGVtZW50cyBzaW5jZSB3ZSBrbm93IHRoZXknbGwgYWx3YXlzIG5lZWQgdG8gYmUgd3JhcHBlZFxu
Ly8gY29uc2lzdGVudGx5LiBJZiB0aGV5IGFyZSBjcmVhdGVkIGluc2lkZSBhIDxkaXY+IHRoZXkg
d2lsbCBiZSBpbml0aWFsaXplZCBpblxuLy8gdGhlIHdyb25nIG5hbWVzcGFjZSAoYW5kIHdpbGwg
bm90IGRpc3BsYXkpLlxudmFyIHN2Z0VsZW1lbnRzID0gWydjaXJjbGUnLCAnY2xpcFBhdGgnLCAn
ZGVmcycsICdlbGxpcHNlJywgJ2cnLCAnaW1hZ2UnLCAnbGluZScsICdsaW5lYXJHcmFkaWVudCcs
ICdtYXNrJywgJ3BhdGgnLCAncGF0dGVybicsICdwb2x5Z29uJywgJ3BvbHlsaW5lJywgJ3JhZGlh
bEdyYWRpZW50JywgJ3JlY3QnLCAnc3RvcCcsICd0ZXh0JywgJ3RzcGFuJ107XG5zdmdFbGVtZW50
cy5mb3JFYWNoKGZ1bmN0aW9uIChub2RlTmFtZSkge1xuICBtYXJrdXBXcmFwW25vZGVOYW1lXSA9
IHN2Z1dyYXA7XG4gIHNob3VsZFdyYXBbbm9kZU5hbWVdID0gdHJ1ZTtcbn0pO1xuXG4vKipcbiAq
IEdldHMgdGhlIG1hcmt1cCB3cmFwIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBzdXBwbGllZCBgbm9k
ZU5hbWVgLlxuICpcbiAqIE5PVEU6IFRoaXMgbGF6aWx5IGRldGVjdHMgd2hpY2ggd3JhcHMgYXJl
IG5lY2Vzc2FyeSBmb3IgdGhlIGN1cnJlbnQgYnJvd3Nlci5cbiAqXG4gKiBAcGFyYW0ge3N0cmlu
Z30gbm9kZU5hbWUgTG93ZXJjYXNlIGBub2RlTmFtZWAuXG4gKiBAcmV0dXJuIHs/YXJyYXl9IE1h
cmt1cCB3cmFwIGNvbmZpZ3VyYXRpb24sIGlmIGFwcGxpY2FibGUuXG4gKi9cbmZ1bmN0aW9uIGdl
dE1hcmt1cFdyYXAobm9kZU5hbWUpIHtcbiAgISEhZHVtbXlOb2RlID8gcHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ01hcmt1cCB3cmFwcGlu
ZyBub2RlIG5vdCBpbml0aWFsaXplZCcpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAg
aWYgKCFtYXJrdXBXcmFwLmhhc093blByb3BlcnR5KG5vZGVOYW1lKSkge1xuICAgIG5vZGVOYW1l
ID0gJyonO1xuICB9XG4gIGlmICghc2hvdWxkV3JhcC5oYXNPd25Qcm9wZXJ0eShub2RlTmFtZSkp
IHtcbiAgICBpZiAobm9kZU5hbWUgPT09ICcqJykge1xuICAgICAgZHVtbXlOb2RlLmlubmVySFRN
TCA9ICc8bGluayAvPic7XG4gICAgfSBlbHNlIHtcbiAgICAgIGR1bW15Tm9kZS5pbm5lckhUTUwg
PSAnPCcgKyBub2RlTmFtZSArICc+PC8nICsgbm9kZU5hbWUgKyAnPic7XG4gICAgfVxuICAgIHNo
b3VsZFdyYXBbbm9kZU5hbWVdID0gIWR1bW15Tm9kZS5maXJzdENoaWxkO1xuICB9XG4gIHJldHVy
biBzaG91bGRXcmFwW25vZGVOYW1lXSA/IG1hcmt1cFdyYXBbbm9kZU5hbWVdIDogbnVsbDtcbn1c
blxubW9kdWxlLmV4cG9ydHMgPSBnZXRNYXJrdXBXcmFwO1xuXG5cbi8qKioqKioqKioqKioqKioq
KlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2ZianMvbGliL2dldE1hcmt1cFdyYXAuanNc
biAqKiBtb2R1bGUgaWQgPSAxMDNcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxu
ICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbid1c2Ugc3Ry
aWN0JztcblxuLyoqXG4gKiBHZXRzIHRoZSBzY3JvbGwgcG9zaXRpb24gb2YgdGhlIHN1cHBsaWVk
IGVsZW1lbnQgb3Igd2luZG93LlxuICpcbiAqIFRoZSByZXR1cm4gdmFsdWVzIGFyZSB1bmJvdW5k
ZWQsIHVubGlrZSBgZ2V0U2Nyb2xsUG9zaXRpb25gLiBUaGlzIG1lYW5zIHRoZXlcbiAqIG1heSBi
ZSBuZWdhdGl2ZSBvciBleGNlZWQgdGhlIGVsZW1lbnQgYm91bmRhcmllcyAod2hpY2ggaXMgcG9z
c2libGUgdXNpbmdcbiAqIGluZXJ0aWFsIHNjcm9sbGluZykuXG4gKlxuICogQHBhcmFtIHtET01X
aW5kb3d8RE9NRWxlbWVudH0gc2Nyb2xsYWJsZVxuICogQHJldHVybiB7b2JqZWN0fSBNYXAgd2l0
aCBgeGAgYW5kIGB5YCBrZXlzLlxuICovXG5cbmZ1bmN0aW9uIGdldFVuYm91bmRlZFNjcm9sbFBv
c2l0aW9uKHNjcm9sbGFibGUpIHtcbiAgaWYgKHNjcm9sbGFibGUuV2luZG93ICYmIHNjcm9sbGFi
bGUgaW5zdGFuY2VvZiBzY3JvbGxhYmxlLldpbmRvdykge1xuICAgIHJldHVybiB7XG4gICAgICB4
OiBzY3JvbGxhYmxlLnBhZ2VYT2Zmc2V0IHx8IHNjcm9sbGFibGUuZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50LnNjcm9sbExlZnQsXG4gICAgICB5OiBzY3JvbGxhYmxlLnBhZ2VZT2Zmc2V0IHx8IHNj
cm9sbGFibGUuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcFxuICAgIH07XG4gIH1c
biAgcmV0dXJuIHtcbiAgICB4OiBzY3JvbGxhYmxlLnNjcm9sbExlZnQsXG4gICAgeTogc2Nyb2xs
YWJsZS5zY3JvbGxUb3BcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBnZXRVbmJvdW5kZWRT
Y3JvbGxQb3NpdGlvbjtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RF
UlxuICoqIC4vfi9mYmpzL2xpYi9nZXRVbmJvdW5kZWRTY3JvbGxQb3NpdGlvbi5qc1xuICoqIG1v
ZHVsZSBpZCA9IDEwNFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3Qn
O1xuXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHR5cGVjaGVja3NcbiAqL1xu
XG52YXIgX3VwcGVyY2FzZVBhdHRlcm4gPSAvKFtBLVpdKS9nO1xuXG4vKipcbiAqIEh5cGhlbmF0
ZXMgYSBjYW1lbGNhc2VkIHN0cmluZywgZm9yIGV4YW1wbGU6XG4gKlxuICogICA+IGh5cGhlbmF0
ZSgnYmFja2dyb3VuZENvbG9yJylcbiAqICAgPCBcImJhY2tncm91bmQtY29sb3JcIlxuICpcbiAq
IEZvciBDU1Mgc3R5bGUgbmFtZXMsIHVzZSBgaHlwaGVuYXRlU3R5bGVOYW1lYCBpbnN0ZWFkIHdo
aWNoIHdvcmtzIHByb3Blcmx5XG4gKiB3aXRoIGFsbCB2ZW5kb3IgcHJlZml4ZXMsIGluY2x1ZGlu
ZyBgbXNgLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAqIEByZXR1cm4ge3N0cmlu
Z31cbiAqL1xuZnVuY3Rpb24gaHlwaGVuYXRlKHN0cmluZykge1xuICByZXR1cm4gc3RyaW5nLnJl
cGxhY2UoX3VwcGVyY2FzZVBhdHRlcm4sICctJDEnKS50b0xvd2VyQ2FzZSgpO1xufVxuXG5tb2R1
bGUuZXhwb3J0cyA9IGh5cGhlbmF0ZTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQ
QUNLIEZPT1RFUlxuICoqIC4vfi9mYmpzL2xpYi9oeXBoZW5hdGUuanNcbiAqKiBtb2R1bGUgaWQg
PSAxMDVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IChj
KSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxu
ICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cbiAqXG4gKiBAdHlwZWNoZWNrc1xuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGh5
cGhlbmF0ZSA9IHJlcXVpcmUoJy4vaHlwaGVuYXRlJyk7XG5cbnZhciBtc1BhdHRlcm4gPSAvXm1z
LS87XG5cbi8qKlxuICogSHlwaGVuYXRlcyBhIGNhbWVsY2FzZWQgQ1NTIHByb3BlcnR5IG5hbWUs
IGZvciBleGFtcGxlOlxuICpcbiAqICAgPiBoeXBoZW5hdGVTdHlsZU5hbWUoJ2JhY2tncm91bmRD
b2xvcicpXG4gKiAgIDwgXCJiYWNrZ3JvdW5kLWNvbG9yXCJcbiAqICAgPiBoeXBoZW5hdGVTdHls
ZU5hbWUoJ01velRyYW5zaXRpb24nKVxuICogICA8IFwiLW1vei10cmFuc2l0aW9uXCJcbiAqICAg
PiBoeXBoZW5hdGVTdHlsZU5hbWUoJ21zVHJhbnNpdGlvbicpXG4gKiAgIDwgXCItbXMtdHJhbnNp
dGlvblwiXG4gKlxuICogQXMgTW9kZXJuaXpyIHN1Z2dlc3RzIChodHRwOi8vbW9kZXJuaXpyLmNv
bS9kb2NzLyNwcmVmaXhlZCksIGFuIGBtc2AgcHJlZml4XG4gKiBpcyBjb252ZXJ0ZWQgdG8gYC1t
cy1gLlxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBzdHJpbmdcbiAqIEByZXR1cm4ge3N0cmluZ31c
biAqL1xuZnVuY3Rpb24gaHlwaGVuYXRlU3R5bGVOYW1lKHN0cmluZykge1xuICByZXR1cm4gaHlw
aGVuYXRlKHN0cmluZykucmVwbGFjZShtc1BhdHRlcm4sICctbXMtJyk7XG59XG5cbm1vZHVsZS5l
eHBvcnRzID0gaHlwaGVuYXRlU3R5bGVOYW1lO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoq
IFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2ZianMvbGliL2h5cGhlbmF0ZVN0eWxlTmFtZS5qc1xu
ICoqIG1vZHVsZSBpZCA9IDEwNlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBz
dHJpY3QnO1xuXG4vKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogQHR5cGVjaGVja3Nc
biAqL1xuXG4vKipcbiAqIEBwYXJhbSB7Kn0gb2JqZWN0IFRoZSBvYmplY3QgdG8gY2hlY2suXG4g
KiBAcmV0dXJuIHtib29sZWFufSBXaGV0aGVyIG9yIG5vdCB0aGUgb2JqZWN0IGlzIGEgRE9NIG5v
ZGUuXG4gKi9cbmZ1bmN0aW9uIGlzTm9kZShvYmplY3QpIHtcbiAgdmFyIGRvYyA9IG9iamVjdCA/
IG9iamVjdC5vd25lckRvY3VtZW50IHx8IG9iamVjdCA6IGRvY3VtZW50O1xuICB2YXIgZGVmYXVs
dFZpZXcgPSBkb2MuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xuICByZXR1cm4gISEob2JqZWN0ICYm
ICh0eXBlb2YgZGVmYXVsdFZpZXcuTm9kZSA9PT0gJ2Z1bmN0aW9uJyA/IG9iamVjdCBpbnN0YW5j
ZW9mIGRlZmF1bHRWaWV3Lk5vZGUgOiB0eXBlb2Ygb2JqZWN0ID09PSAnb2JqZWN0JyAmJiB0eXBl
b2Ygb2JqZWN0Lm5vZGVUeXBlID09PSAnbnVtYmVyJyAmJiB0eXBlb2Ygb2JqZWN0Lm5vZGVOYW1l
ID09PSAnc3RyaW5nJykpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzTm9kZTtcblxuXG4vKioq
KioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9mYmpzL2xpYi9pc05v
ZGUuanNcbiAqKiBtb2R1bGUgaWQgPSAxMDdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIs
Iid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
XG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIEB0eXBl
Y2hlY2tzXG4gKi9cblxudmFyIGlzTm9kZSA9IHJlcXVpcmUoJy4vaXNOb2RlJyk7XG5cbi8qKlxu
ICogQHBhcmFtIHsqfSBvYmplY3QgVGhlIG9iamVjdCB0byBjaGVjay5cbiAqIEByZXR1cm4ge2Jv
b2xlYW59IFdoZXRoZXIgb3Igbm90IHRoZSBvYmplY3QgaXMgYSBET00gdGV4dCBub2RlLlxuICov
XG5mdW5jdGlvbiBpc1RleHROb2RlKG9iamVjdCkge1xuICByZXR1cm4gaXNOb2RlKG9iamVjdCkg
JiYgb2JqZWN0Lm5vZGVUeXBlID09IDM7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaXNUZXh0Tm9k
ZTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9m
YmpzL2xpYi9pc1RleHROb2RlLmpzXG4gKiogbW9kdWxlIGlkID0gMTA4XG4gKiogbW9kdWxlIGNo
dW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAoYykgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
biAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKiBA
dHlwZWNoZWNrcyBzdGF0aWMtb25seVxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuLyoqXG4gKiBN
ZW1vaXplcyB0aGUgcmV0dXJuIHZhbHVlIG9mIGEgZnVuY3Rpb24gdGhhdCBhY2NlcHRzIG9uZSBz
dHJpbmcgYXJndW1lbnQuXG4gKi9cblxuZnVuY3Rpb24gbWVtb2l6ZVN0cmluZ09ubHkoY2FsbGJh
Y2spIHtcbiAgdmFyIGNhY2hlID0ge307XG4gIHJldHVybiBmdW5jdGlvbiAoc3RyaW5nKSB7XG4g
ICAgaWYgKCFjYWNoZS5oYXNPd25Qcm9wZXJ0eShzdHJpbmcpKSB7XG4gICAgICBjYWNoZVtzdHJp
bmddID0gY2FsbGJhY2suY2FsbCh0aGlzLCBzdHJpbmcpO1xuICAgIH1cbiAgICByZXR1cm4gY2Fj
aGVbc3RyaW5nXTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBtZW1vaXplU3RyaW5nT25s
eTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9m
YmpzL2xpYi9tZW1vaXplU3RyaW5nT25seS5qc1xuICoqIG1vZHVsZSBpZCA9IDEwOVxuICoqIG1v
ZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxNSwgWWFob28hIElu
Yy5cbiAqIENvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgTGljZW5zZS4gU2Vl
IHRoZSBhY2NvbXBhbnlpbmcgTElDRU5TRSBmaWxlIGZvciB0ZXJtcy5cbiAqL1xuJ3VzZSBzdHJp
Y3QnO1xuXG52YXIgUkVBQ1RfU1RBVElDUyA9IHtcbiAgICBjaGlsZENvbnRleHRUeXBlczogdHJ1
ZSxcbiAgICBjb250ZXh0VHlwZXM6IHRydWUsXG4gICAgZGVmYXVsdFByb3BzOiB0cnVlLFxuICAg
IGRpc3BsYXlOYW1lOiB0cnVlLFxuICAgIGdldERlZmF1bHRQcm9wczogdHJ1ZSxcbiAgICBtaXhp
bnM6IHRydWUsXG4gICAgcHJvcFR5cGVzOiB0cnVlLFxuICAgIHR5cGU6IHRydWVcbn07XG5cbnZh
ciBLTk9XTl9TVEFUSUNTID0ge1xuICBuYW1lOiB0cnVlLFxuICBsZW5ndGg6IHRydWUsXG4gIHBy
b3RvdHlwZTogdHJ1ZSxcbiAgY2FsbGVyOiB0cnVlLFxuICBjYWxsZWU6IHRydWUsXG4gIGFyZ3Vt
ZW50czogdHJ1ZSxcbiAgYXJpdHk6IHRydWVcbn07XG5cbnZhciBnZXRPd25Qcm9wZXJ0eVN5bWJv
bHMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzO1xudmFyIGhhc093blByb3BlcnR5ID0g
T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eTtcbnZhciBwcm9wSXNFbnVtZXJhYmxlID0g
T2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTtcbnZhciBnZXRQcm90b3R5cGVP
ZiA9IE9iamVjdC5nZXRQcm90b3R5cGVPZjtcbnZhciBvYmplY3RQcm90b3R5cGUgPSBnZXRQcm90
b3R5cGVPZiAmJiBnZXRQcm90b3R5cGVPZihPYmplY3QpO1xudmFyIGdldE93blByb3BlcnR5TmFt
ZXMgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5j
dGlvbiBob2lzdE5vblJlYWN0U3RhdGljcyh0YXJnZXRDb21wb25lbnQsIHNvdXJjZUNvbXBvbmVu
dCwgYmxhY2tsaXN0KSB7XG4gICAgaWYgKHR5cGVvZiBzb3VyY2VDb21wb25lbnQgIT09ICdzdHJp
bmcnKSB7IC8vIGRvbid0IGhvaXN0IG92ZXIgc3RyaW5nIChodG1sKSBjb21wb25lbnRzXG5cbiAg
ICAgICAgaWYgKG9iamVjdFByb3RvdHlwZSkge1xuICAgICAgICAgICAgdmFyIGluaGVyaXRlZENv
bXBvbmVudCA9IGdldFByb3RvdHlwZU9mKHNvdXJjZUNvbXBvbmVudCk7XG4gICAgICAgICAgICBp
ZiAoaW5oZXJpdGVkQ29tcG9uZW50ICYmIGluaGVyaXRlZENvbXBvbmVudCAhPT0gb2JqZWN0UHJv
dG90eXBlKSB7XG4gICAgICAgICAgICAgICAgaG9pc3ROb25SZWFjdFN0YXRpY3ModGFyZ2V0Q29t
cG9uZW50LCBpbmhlcml0ZWRDb21wb25lbnQsIGJsYWNrbGlzdCk7XG4gICAgICAgICAgICB9XG4g
ICAgICAgIH1cblxuICAgICAgICB2YXIga2V5cyA9IGdldE93blByb3BlcnR5TmFtZXMoc291cmNl
Q29tcG9uZW50KTtcblxuICAgICAgICBpZiAoZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gICAg
ICAgICAgICBrZXlzID0ga2V5cy5jb25jYXQoZ2V0T3duUHJvcGVydHlTeW1ib2xzKHNvdXJjZUNv
bXBvbmVudCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlz
Lmxlbmd0aDsgKytpKSB7XG4gICAgICAgICAgICB2YXIga2V5ID0ga2V5c1tpXTtcbiAgICAgICAg
ICAgIGlmICghUkVBQ1RfU1RBVElDU1trZXldICYmICFLTk9XTl9TVEFUSUNTW2tleV0gJiYgKCFi
bGFja2xpc3QgfHwgIWJsYWNrbGlzdFtrZXldKSkge1xuICAgICAgICAgICAgICAgIC8vIE9ubHkg
aG9pc3QgZW51bWVyYWJsZXMgYW5kIG5vbi1lbnVtZXJhYmxlIGZ1bmN0aW9uc1xuICAgICAgICAg
ICAgICAgIGlmKHByb3BJc0VudW1lcmFibGUuY2FsbChzb3VyY2VDb21wb25lbnQsIGtleSkgfHwg
dHlwZW9mIHNvdXJjZUNvbXBvbmVudFtrZXldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAg
ICAgICAgICAgIHRyeSB7IC8vIEF2b2lkIGZhaWx1cmVzIGZyb20gcmVhZC1vbmx5IHByb3BlcnRp
ZXNcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldENvbXBvbmVudFtrZXldID0gc291cmNl
Q29tcG9uZW50W2tleV07XG4gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHt9XG4gICAg
ICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJu
IHRhcmdldENvbXBvbmVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGFyZ2V0Q29tcG9uZW50O1xu
fTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+
L2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNzL2luZGV4LmpzXG4gKiogbW9kdWxlIGlkID0gMTEwXG4g
KiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLTIwMTUs
IEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqL1xuXG4n
dXNlIHN0cmljdCc7XG5cbi8qKlxuICogVXNlIGludmFyaWFudCgpIHRvIGFzc2VydCBzdGF0ZSB3
aGljaCB5b3VyIHByb2dyYW0gYXNzdW1lcyB0byBiZSB0cnVlLlxuICpcbiAqIFByb3ZpZGUgc3By
aW50Zi1zdHlsZSBmb3JtYXQgKG9ubHkgJXMgaXMgc3VwcG9ydGVkKSBhbmQgYXJndW1lbnRzXG4g
KiB0byBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHdoYXQgYnJva2UgYW5kIHdoYXQgeW91IHdl
cmVcbiAqIGV4cGVjdGluZy5cbiAqXG4gKiBUaGUgaW52YXJpYW50IG1lc3NhZ2Ugd2lsbCBiZSBz
dHJpcHBlZCBpbiBwcm9kdWN0aW9uLCBidXQgdGhlIGludmFyaWFudFxuICogd2lsbCByZW1haW4g
dG8gZW5zdXJlIGxvZ2ljIGRvZXMgbm90IGRpZmZlciBpbiBwcm9kdWN0aW9uLlxuICovXG5cbnZh
ciBpbnZhcmlhbnQgPSBmdW5jdGlvbihjb25kaXRpb24sIGZvcm1hdCwgYSwgYiwgYywgZCwgZSwg
Zikge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAg
IGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbnZh
cmlhbnQgcmVxdWlyZXMgYW4gZXJyb3IgbWVzc2FnZSBhcmd1bWVudCcpO1xuICAgIH1cbiAgfVxu
XG4gIGlmICghY29uZGl0aW9uKSB7XG4gICAgdmFyIGVycm9yO1xuICAgIGlmIChmb3JtYXQgPT09
IHVuZGVmaW5lZCkge1xuICAgICAgZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgICdNaW5pZmll
ZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVu
dCAnICtcbiAgICAgICAgJ2ZvciB0aGUgZnVsbCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFs
IGhlbHBmdWwgd2FybmluZ3MuJ1xuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGFy
Z3MgPSBbYSwgYiwgYywgZCwgZSwgZl07XG4gICAgICB2YXIgYXJnSW5kZXggPSAwO1xuICAgICAg
ZXJyb3IgPSBuZXcgRXJyb3IoXG4gICAgICAgIGZvcm1hdC5yZXBsYWNlKC8lcy9nLCBmdW5jdGlv
bigpIHsgcmV0dXJuIGFyZ3NbYXJnSW5kZXgrK107IH0pXG4gICAgICApO1xuICAgICAgZXJyb3Iu
bmFtZSA9ICdJbnZhcmlhbnQgVmlvbGF0aW9uJztcbiAgICB9XG5cbiAgICBlcnJvci5mcmFtZXNU
b1BvcCA9IDE7IC8vIHdlIGRvbid0IGNhcmUgYWJvdXQgaW52YXJpYW50J3Mgb3duIGZyYW1lXG4g
ICAgdGhyb3cgZXJyb3I7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gaW52YXJpYW50O1xu
XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vaW52
YXJpYW50L2Jyb3dzZXIuanNcbiAqKiBtb2R1bGUgaWQgPSAxMTFcbiAqKiBtb2R1bGUgY2h1bmtz
ID0gMFxuICoqLyIsInZhciBTeW1ib2wgPSByZXF1aXJlKCcuL19TeW1ib2wnKSxcbiAgICBnZXRS
YXdUYWcgPSByZXF1aXJlKCcuL19nZXRSYXdUYWcnKSxcbiAgICBvYmplY3RUb1N0cmluZyA9IHJl
cXVpcmUoJy4vX29iamVjdFRvU3RyaW5nJyk7XG5cbi8qKiBgT2JqZWN0I3RvU3RyaW5nYCByZXN1
bHQgcmVmZXJlbmNlcy4gKi9cbnZhciBudWxsVGFnID0gJ1tvYmplY3QgTnVsbF0nLFxuICAgIHVu
ZGVmaW5lZFRhZyA9ICdbb2JqZWN0IFVuZGVmaW5lZF0nO1xuXG4vKiogQnVpbHQtaW4gdmFsdWUg
cmVmZXJlbmNlcy4gKi9cbnZhciBzeW1Ub1N0cmluZ1RhZyA9IFN5bWJvbCA/IFN5bWJvbC50b1N0
cmluZ1RhZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBv
ZiBgZ2V0VGFnYCB3aXRob3V0IGZhbGxiYWNrcyBmb3IgYnVnZ3kgZW52aXJvbm1lbnRzLlxuICpc
biAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBxdWVyeS5cbiAq
IEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIGB0b1N0cmluZ1RhZ2AuXG4gKi9cbmZ1bmN0
aW9uIGJhc2VHZXRUYWcodmFsdWUpIHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1
cm4gdmFsdWUgPT09IHVuZGVmaW5lZCA/IHVuZGVmaW5lZFRhZyA6IG51bGxUYWc7XG4gIH1cbiAg
cmV0dXJuIChzeW1Ub1N0cmluZ1RhZyAmJiBzeW1Ub1N0cmluZ1RhZyBpbiBPYmplY3QodmFsdWUp
KVxuICAgID8gZ2V0UmF3VGFnKHZhbHVlKVxuICAgIDogb2JqZWN0VG9TdHJpbmcodmFsdWUpO1xu
fVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VHZXRUYWc7XG5cblxuXG4vKioqKioqKioqKioqKioq
KipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX2Jhc2VHZXRUYWcuanNcbiAq
KiBtb2R1bGUgaWQgPSAxMTJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKiBEZXRl
Y3QgZnJlZSB2YXJpYWJsZSBgZ2xvYmFsYCBmcm9tIE5vZGUuanMuICovXG52YXIgZnJlZUdsb2Jh
bCA9IHR5cGVvZiBnbG9iYWwgPT0gJ29iamVjdCcgJiYgZ2xvYmFsICYmIGdsb2JhbC5PYmplY3Qg
PT09IE9iamVjdCAmJiBnbG9iYWw7XG5cbm1vZHVsZS5leHBvcnRzID0gZnJlZUdsb2JhbDtcblxu
XG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L2xvZGFz
aC9fZnJlZUdsb2JhbC5qc1xuICoqIG1vZHVsZSBpZCA9IDExM1xuICoqIG1vZHVsZSBjaHVua3Mg
PSAwXG4gKiovIiwidmFyIG92ZXJBcmcgPSByZXF1aXJlKCcuL19vdmVyQXJnJyk7XG5cbi8qKiBC
dWlsdC1pbiB2YWx1ZSByZWZlcmVuY2VzLiAqL1xudmFyIGdldFByb3RvdHlwZSA9IG92ZXJBcmco
T2JqZWN0LmdldFByb3RvdHlwZU9mLCBPYmplY3QpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGdldFBy
b3RvdHlwZTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4g
KiogLi9+L2xvZGFzaC9fZ2V0UHJvdG90eXBlLmpzXG4gKiogbW9kdWxlIGlkID0gMTE0XG4gKiog
bW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCJ2YXIgU3ltYm9sID0gcmVxdWlyZSgnLi9fU3ltYm9s
Jyk7XG5cbi8qKiBVc2VkIGZvciBidWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcy4gKi9cbnZhciBv
YmplY3RQcm90byA9IE9iamVjdC5wcm90b3R5cGU7XG5cbi8qKiBVc2VkIHRvIGNoZWNrIG9iamVj
dHMgZm9yIG93biBwcm9wZXJ0aWVzLiAqL1xudmFyIGhhc093blByb3BlcnR5ID0gb2JqZWN0UHJv
dG8uaGFzT3duUHJvcGVydHk7XG5cbi8qKlxuICogVXNlZCB0byByZXNvbHZlIHRoZVxuICogW2B0
b1N0cmluZ1RhZ2BdKGh0dHA6Ly9lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzcuMC8j
c2VjLW9iamVjdC5wcm90b3R5cGUudG9zdHJpbmcpXG4gKiBvZiB2YWx1ZXMuXG4gKi9cbnZhciBu
YXRpdmVPYmplY3RUb1N0cmluZyA9IG9iamVjdFByb3RvLnRvU3RyaW5nO1xuXG4vKiogQnVpbHQt
aW4gdmFsdWUgcmVmZXJlbmNlcy4gKi9cbnZhciBzeW1Ub1N0cmluZ1RhZyA9IFN5bWJvbCA/IFN5
bWJvbC50b1N0cmluZ1RhZyA6IHVuZGVmaW5lZDtcblxuLyoqXG4gKiBBIHNwZWNpYWxpemVkIHZl
cnNpb24gb2YgYGJhc2VHZXRUYWdgIHdoaWNoIGlnbm9yZXMgYFN5bWJvbC50b1N0cmluZ1RhZ2Ag
dmFsdWVzLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0
byBxdWVyeS5cbiAqIEByZXR1cm5zIHtzdHJpbmd9IFJldHVybnMgdGhlIHJhdyBgdG9TdHJpbmdU
YWdgLlxuICovXG5mdW5jdGlvbiBnZXRSYXdUYWcodmFsdWUpIHtcbiAgdmFyIGlzT3duID0gaGFz
T3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgc3ltVG9TdHJpbmdUYWcpLFxuICAgICAgdGFnID0gdmFs
dWVbc3ltVG9TdHJpbmdUYWddO1xuXG4gIHRyeSB7XG4gICAgdmFsdWVbc3ltVG9TdHJpbmdUYWdd
ID0gdW5kZWZpbmVkO1xuICAgIHZhciB1bm1hc2tlZCA9IHRydWU7XG4gIH0gY2F0Y2ggKGUpIHt9
XG5cbiAgdmFyIHJlc3VsdCA9IG5hdGl2ZU9iamVjdFRvU3RyaW5nLmNhbGwodmFsdWUpO1xuICBp
ZiAodW5tYXNrZWQpIHtcbiAgICBpZiAoaXNPd24pIHtcbiAgICAgIHZhbHVlW3N5bVRvU3RyaW5n
VGFnXSA9IHRhZztcbiAgICB9IGVsc2Uge1xuICAgICAgZGVsZXRlIHZhbHVlW3N5bVRvU3RyaW5n
VGFnXTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMg
PSBnZXRSYXdUYWc7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RF
UlxuICoqIC4vfi9sb2Rhc2gvX2dldFJhd1RhZy5qc1xuICoqIG1vZHVsZSBpZCA9IDExNVxuICoq
IG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqIFVzZWQgZm9yIGJ1aWx0LWluIG1ldGhvZCBy
ZWZlcmVuY2VzLiAqL1xudmFyIG9iamVjdFByb3RvID0gT2JqZWN0LnByb3RvdHlwZTtcblxuLyoq
XG4gKiBVc2VkIHRvIHJlc29sdmUgdGhlXG4gKiBbYHRvU3RyaW5nVGFnYF0oaHR0cDovL2VjbWEt
aW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNy4wLyNzZWMtb2JqZWN0LnByb3RvdHlwZS50b3N0
cmluZylcbiAqIG9mIHZhbHVlcy5cbiAqL1xudmFyIG5hdGl2ZU9iamVjdFRvU3RyaW5nID0gb2Jq
ZWN0UHJvdG8udG9TdHJpbmc7XG5cbi8qKlxuICogQ29udmVydHMgYHZhbHVlYCB0byBhIHN0cmlu
ZyB1c2luZyBgT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZ2AuXG4gKlxuICogQHByaXZhdGVcbiAq
IEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNvbnZlcnQuXG4gKiBAcmV0dXJucyB7c3Ry
aW5nfSBSZXR1cm5zIHRoZSBjb252ZXJ0ZWQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBvYmplY3RU
b1N0cmluZyh2YWx1ZSkge1xuICByZXR1cm4gbmF0aXZlT2JqZWN0VG9TdHJpbmcuY2FsbCh2YWx1
ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb2JqZWN0VG9TdHJpbmc7XG5cblxuXG4vKioqKioq
KioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX29iamVjdFRv
U3RyaW5nLmpzXG4gKiogbW9kdWxlIGlkID0gMTE2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAq
Ki8iLCIvKipcbiAqIENyZWF0ZXMgYSB1bmFyeSBmdW5jdGlvbiB0aGF0IGludm9rZXMgYGZ1bmNg
IHdpdGggaXRzIGFyZ3VtZW50IHRyYW5zZm9ybWVkLlxuICpcbiAqIEBwcml2YXRlXG4gKiBAcGFy
YW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB3cmFwLlxuICogQHBhcmFtIHtGdW5j
dGlvbn0gdHJhbnNmb3JtIFRoZSBhcmd1bWVudCB0cmFuc2Zvcm0uXG4gKiBAcmV0dXJucyB7RnVu
Y3Rpb259IFJldHVybnMgdGhlIG5ldyBmdW5jdGlvbi5cbiAqL1xuZnVuY3Rpb24gb3ZlckFyZyhm
dW5jLCB0cmFuc2Zvcm0pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiBm
dW5jKHRyYW5zZm9ybShhcmcpKTtcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBvdmVyQXJn
O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34v
bG9kYXNoL19vdmVyQXJnLmpzXG4gKiogbW9kdWxlIGlkID0gMTE3XG4gKiogbW9kdWxlIGNodW5r
cyA9IDBcbiAqKi8iLCJ2YXIgZnJlZUdsb2JhbCA9IHJlcXVpcmUoJy4vX2ZyZWVHbG9iYWwnKTtc
blxuLyoqIERldGVjdCBmcmVlIHZhcmlhYmxlIGBzZWxmYC4gKi9cbnZhciBmcmVlU2VsZiA9IHR5
cGVvZiBzZWxmID09ICdvYmplY3QnICYmIHNlbGYgJiYgc2VsZi5PYmplY3QgPT09IE9iamVjdCAm
JiBzZWxmO1xuXG4vKiogVXNlZCBhcyBhIHJlZmVyZW5jZSB0byB0aGUgZ2xvYmFsIG9iamVjdC4g
Ki9cbnZhciByb290ID0gZnJlZUdsb2JhbCB8fCBmcmVlU2VsZiB8fCBGdW5jdGlvbigncmV0dXJu
IHRoaXMnKSgpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJvb3Q7XG5cblxuXG4vKioqKioqKioqKioq
KioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9sb2Rhc2gvX3Jvb3QuanNcbiAqKiBt
b2R1bGUgaWQgPSAxMThcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ2hl
Y2tzIGlmIGB2YWx1ZWAgaXMgb2JqZWN0LWxpa2UuIEEgdmFsdWUgaXMgb2JqZWN0LWxpa2UgaWYg
aXQncyBub3QgYG51bGxgXG4gKiBhbmQgaGFzIGEgYHR5cGVvZmAgcmVzdWx0IG9mIFwib2JqZWN0
XCIuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSA0LjAuMFxuICog
QGNhdGVnb3J5IExhbmdcbiAqIEBwYXJhbSB7Kn0gdmFsdWUgVGhlIHZhbHVlIHRvIGNoZWNrLlxu
ICogQHJldHVybnMge2Jvb2xlYW59IFJldHVybnMgYHRydWVgIGlmIGB2YWx1ZWAgaXMgb2JqZWN0
LWxpa2UsIGVsc2UgYGZhbHNlYC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5pc09iamVjdExpa2Uo
e30pO1xuICogLy8gPT4gdHJ1ZVxuICpcbiAqIF8uaXNPYmplY3RMaWtlKFsxLCAyLCAzXSk7XG4g
KiAvLyA9PiB0cnVlXG4gKlxuICogXy5pc09iamVjdExpa2UoXy5ub29wKTtcbiAqIC8vID0+IGZh
bHNlXG4gKlxuICogXy5pc09iamVjdExpa2UobnVsbCk7XG4gKiAvLyA9PiBmYWxzZVxuICovXG5m
dW5jdGlvbiBpc09iamVjdExpa2UodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9IG51bGwgJiYg
dHlwZW9mIHZhbHVlID09ICdvYmplY3QnO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGlzT2JqZWN0
TGlrZTtcblxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiog
Li9+L2xvZGFzaC9pc09iamVjdExpa2UuanNcbiAqKiBtb2R1bGUgaWQgPSAxMTlcbiAqKiBtb2R1
bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFj
ZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2Ug
Y29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhl
XG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRy
ZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5k
IGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICovXG5cbid1c2Ug
c3RyaWN0JztcblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtc
biAgdmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuICB2YXIg
d2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dhcm5pbmcnKTtcbiAgdmFyIFJlYWN0UHJvcFR5
cGVzU2VjcmV0ID0gcmVxdWlyZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcbiAgdmFy
IGxvZ2dlZFR5cGVGYWlsdXJlcyA9IHt9O1xufVxuXG4vKipcbiAqIEFzc2VydCB0aGF0IHRoZSB2
YWx1ZXMgbWF0Y2ggd2l0aCB0aGUgdHlwZSBzcGVjcy5cbiAqIEVycm9yIG1lc3NhZ2VzIGFyZSBt
ZW1vcml6ZWQgYW5kIHdpbGwgb25seSBiZSBzaG93biBvbmNlLlxuICpcbiAqIEBwYXJhbSB7b2Jq
ZWN0fSB0eXBlU3BlY3MgTWFwIG9mIG5hbWUgdG8gYSBSZWFjdFByb3BUeXBlXG4gKiBAcGFyYW0g
e29iamVjdH0gdmFsdWVzIFJ1bnRpbWUgdmFsdWVzIHRoYXQgbmVlZCB0byBiZSB0eXBlLWNoZWNr
ZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhdGlvbiBlLmcuIFwicHJvcFwiLCBcImNvbnRleHRc
IiwgXCJjaGlsZCBjb250ZXh0XCJcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb21wb25lbnROYW1lIE5h
bWUgb2YgdGhlIGNvbXBvbmVudCBmb3IgZXJyb3IgbWVzc2FnZXMuXG4gKiBAcGFyYW0gez9GdW5j
dGlvbn0gZ2V0U3RhY2sgUmV0dXJucyB0aGUgY29tcG9uZW50IHN0YWNrLlxuICogQHByaXZhdGVc
biAqL1xuZnVuY3Rpb24gY2hlY2tQcm9wVHlwZXModHlwZVNwZWNzLCB2YWx1ZXMsIGxvY2F0aW9u
LCBjb21wb25lbnROYW1lLCBnZXRTdGFjaykge1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJykge1xuICAgIGZvciAodmFyIHR5cGVTcGVjTmFtZSBpbiB0eXBlU3Bl
Y3MpIHtcbiAgICAgIGlmICh0eXBlU3BlY3MuaGFzT3duUHJvcGVydHkodHlwZVNwZWNOYW1lKSkg
e1xuICAgICAgICB2YXIgZXJyb3I7XG4gICAgICAgIC8vIFByb3AgdHlwZSB2YWxpZGF0aW9uIG1h
eSB0aHJvdy4gSW4gY2FzZSB0aGV5IGRvLCB3ZSBkb24ndCB3YW50IHRvXG4gICAgICAgIC8vIGZh
aWwgdGhlIHJlbmRlciBwaGFzZSB3aGVyZSBpdCBkaWRuJ3QgZmFpbCBiZWZvcmUuIFNvIHdlIGxv
ZyBpdC5cbiAgICAgICAgLy8gQWZ0ZXIgdGhlc2UgaGF2ZSBiZWVuIGNsZWFuZWQgdXAsIHdlJ2xs
IGxldCB0aGVtIHRocm93LlxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIFRoaXMgaXMgaW50
ZW50aW9uYWxseSBhbiBpbnZhcmlhbnQgdGhhdCBnZXRzIGNhdWdodC4gSXQncyB0aGUgc2FtZVxu
ICAgICAgICAgIC8vIGJlaGF2aW9yIGFzIHdpdGhvdXQgdGhpcyBzdGF0ZW1lbnQgZXhjZXB0IHdp
dGggYSBiZXR0ZXIgbWVzc2FnZS5cbiAgICAgICAgICBpbnZhcmlhbnQodHlwZW9mIHR5cGVTcGVj
c1t0eXBlU3BlY05hbWVdID09PSAnZnVuY3Rpb24nLCAnJXM6ICVzIHR5cGUgYCVzYCBpcyBpbnZh
bGlkOyBpdCBtdXN0IGJlIGEgZnVuY3Rpb24sIHVzdWFsbHkgZnJvbSAnICsgJ1JlYWN0LlByb3BU
eXBlcy4nLCBjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycsIGxvY2F0aW9uLCB0eXBlU3Bl
Y05hbWUpO1xuICAgICAgICAgIGVycm9yID0gdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0odmFsdWVz
LCB0eXBlU3BlY05hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBudWxsLCBSZWFjdFByb3BU
eXBlc1NlY3JldCk7XG4gICAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgICAgZXJyb3IgPSBl
eDtcbiAgICAgICAgfVxuICAgICAgICB3YXJuaW5nKCFlcnJvciB8fCBlcnJvciBpbnN0YW5jZW9m
IEVycm9yLCAnJXM6IHR5cGUgc3BlY2lmaWNhdGlvbiBvZiAlcyBgJXNgIGlzIGludmFsaWQ7IHRo
ZSB0eXBlIGNoZWNrZXIgJyArICdmdW5jdGlvbiBtdXN0IHJldHVybiBgbnVsbGAgb3IgYW4gYEVy
cm9yYCBidXQgcmV0dXJuZWQgYSAlcy4gJyArICdZb3UgbWF5IGhhdmUgZm9yZ290dGVuIHRvIHBh
c3MgYW4gYXJndW1lbnQgdG8gdGhlIHR5cGUgY2hlY2tlciAnICsgJ2NyZWF0b3IgKGFycmF5T2Ys
IGluc3RhbmNlT2YsIG9iamVjdE9mLCBvbmVPZiwgb25lT2ZUeXBlLCBhbmQgJyArICdzaGFwZSBh
bGwgcmVxdWlyZSBhbiBhcmd1bWVudCkuJywgY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3Mn
LCBsb2NhdGlvbiwgdHlwZVNwZWNOYW1lLCB0eXBlb2YgZXJyb3IpO1xuICAgICAgICBpZiAoZXJy
b3IgaW5zdGFuY2VvZiBFcnJvciAmJiAhKGVycm9yLm1lc3NhZ2UgaW4gbG9nZ2VkVHlwZUZhaWx1
cmVzKSkge1xuICAgICAgICAgIC8vIE9ubHkgbW9uaXRvciB0aGlzIGZhaWx1cmUgb25jZSBiZWNh
dXNlIHRoZXJlIHRlbmRzIHRvIGJlIGEgbG90IG9mIHRoZVxuICAgICAgICAgIC8vIHNhbWUgZXJy
b3IuXG4gICAgICAgICAgbG9nZ2VkVHlwZUZhaWx1cmVzW2Vycm9yLm1lc3NhZ2VdID0gdHJ1ZTtc
blxuICAgICAgICAgIHZhciBzdGFjayA9IGdldFN0YWNrID8gZ2V0U3RhY2soKSA6ICcnO1xuXG4g
ICAgICAgICAgd2FybmluZyhmYWxzZSwgJ0ZhaWxlZCAlcyB0eXBlOiAlcyVzJywgbG9jYXRpb24s
IGVycm9yLm1lc3NhZ2UsIHN0YWNrICE9IG51bGwgPyBzdGFjayA6ICcnKTtcbiAgICAgICAgfVxu
ICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGNoZWNrUHJvcFR5cGVz
O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34v
cHJvcC10eXBlcy9jaGVja1Byb3BUeXBlcy5qc1xuICoqIG1vZHVsZSBpZCA9IDEyMFxuICoqIG1v
ZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKi9cblxuJ3Vz
ZSBzdHJpY3QnO1xuXG52YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5
RnVuY3Rpb24nKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQn
KTtcbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5
cGVzU2VjcmV0Jyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XG4gIGZ1bmN0aW9u
IHNoaW0ocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxO
YW1lLCBzZWNyZXQpIHtcbiAgICBpZiAoc2VjcmV0ID09PSBSZWFjdFByb3BUeXBlc1NlY3JldCkg
e1xuICAgICAgLy8gSXQgaXMgc3RpbGwgc2FmZSB3aGVuIGNhbGxlZCBmcm9tIFJlYWN0LlxuICAg
ICAgcmV0dXJuO1xuICAgIH1cbiAgICBpbnZhcmlhbnQoXG4gICAgICBmYWxzZSxcbiAgICAgICdD
YWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkg
dGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcbiAgICAgICdVc2UgUHJvcFR5cGVzLmNoZWNr
UHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDov
L2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICk7XG4gIH07XG4gIHNoaW0uaXNSZXF1
aXJlZCA9IHNoaW07XG4gIGZ1bmN0aW9uIGdldFNoaW0oKSB7XG4gICAgcmV0dXJuIHNoaW07XG4g
IH07XG4gIC8vIEltcG9ydGFudCFcbiAgLy8gS2VlcCB0aGlzIGxpc3QgaW4gc3luYyB3aXRoIHBy
b2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9mYWN0b3J5V2l0aFR5cGVDaGVja2Vycy5qc2AuXG4gIHZh
ciBSZWFjdFByb3BUeXBlcyA9IHtcbiAgICBhcnJheTogc2hpbSxcbiAgICBib29sOiBzaGltLFxu
ICAgIGZ1bmM6IHNoaW0sXG4gICAgbnVtYmVyOiBzaGltLFxuICAgIG9iamVjdDogc2hpbSxcbiAg
ICBzdHJpbmc6IHNoaW0sXG4gICAgc3ltYm9sOiBzaGltLFxuXG4gICAgYW55OiBzaGltLFxuICAg
IGFycmF5T2Y6IGdldFNoaW0sXG4gICAgZWxlbWVudDogc2hpbSxcbiAgICBpbnN0YW5jZU9mOiBn
ZXRTaGltLFxuICAgIG5vZGU6IHNoaW0sXG4gICAgb2JqZWN0T2Y6IGdldFNoaW0sXG4gICAgb25l
T2Y6IGdldFNoaW0sXG4gICAgb25lT2ZUeXBlOiBnZXRTaGltLFxuICAgIHNoYXBlOiBnZXRTaGlt
XG4gIH07XG5cbiAgUmVhY3RQcm9wVHlwZXMuY2hlY2tQcm9wVHlwZXMgPSBlbXB0eUZ1bmN0aW9u
O1xuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICByZXR1
cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VC
UEFDSyBGT09URVJcbiAqKiAuL34vcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMu
anNcbiAqKiBtb2R1bGUgaWQgPSAxMjFcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8q
KlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGVtcHR5RnVu
Y3Rpb24gPSByZXF1aXJlKCdmYmpzL2xpYi9lbXB0eUZ1bmN0aW9uJyk7XG52YXIgaW52YXJpYW50
ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUo
J2ZianMvbGliL3dhcm5pbmcnKTtcblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gcmVxdWly
ZSgnLi9saWIvUmVhY3RQcm9wVHlwZXNTZWNyZXQnKTtcbnZhciBjaGVja1Byb3BUeXBlcyA9IHJl
cXVpcmUoJy4vY2hlY2tQcm9wVHlwZXMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihp
c1ZhbGlkRWxlbWVudCwgdGhyb3dPbkRpcmVjdEFjY2Vzcykge1xuICAvKiBnbG9iYWwgU3ltYm9s
ICovXG4gIHZhciBJVEVSQVRPUl9TWU1CT0wgPSB0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24n
ICYmIFN5bWJvbC5pdGVyYXRvcjtcbiAgdmFyIEZBVVhfSVRFUkFUT1JfU1lNQk9MID0gJ0BAaXRl
cmF0b3InOyAvLyBCZWZvcmUgU3ltYm9sIHNwZWMuXG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhl
IGl0ZXJhdG9yIG1ldGhvZCBmdW5jdGlvbiBjb250YWluZWQgb24gdGhlIGl0ZXJhYmxlIG9iamVj
dC5cbiAgICpcbiAgICogQmUgc3VyZSB0byBpbnZva2UgdGhlIGZ1bmN0aW9uIHdpdGggdGhlIGl0
ZXJhYmxlIGFzIGNvbnRleHQ6XG4gICAqXG4gICAqICAgICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0
ZXJhdG9yRm4obXlJdGVyYWJsZSk7XG4gICAqICAgICBpZiAoaXRlcmF0b3JGbikge1xuICAgKiAg
ICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwobXlJdGVyYWJsZSk7XG4gICAqICAg
ICAgIC4uLlxuICAgKiAgICAgfVxuICAgKlxuICAgKiBAcGFyYW0gez9vYmplY3R9IG1heWJlSXRl
cmFibGVcbiAgICogQHJldHVybiB7P2Z1bmN0aW9ufVxuICAgKi9cbiAgZnVuY3Rpb24gZ2V0SXRl
cmF0b3JGbihtYXliZUl0ZXJhYmxlKSB7XG4gICAgdmFyIGl0ZXJhdG9yRm4gPSBtYXliZUl0ZXJh
YmxlICYmIChJVEVSQVRPUl9TWU1CT0wgJiYgbWF5YmVJdGVyYWJsZVtJVEVSQVRPUl9TWU1CT0xd
IHx8IG1heWJlSXRlcmFibGVbRkFVWF9JVEVSQVRPUl9TWU1CT0xdKTtcbiAgICBpZiAodHlwZW9m
IGl0ZXJhdG9yRm4gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBpdGVyYXRvckZuO1xu
ICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDb2xsZWN0aW9uIG9mIG1ldGhvZHMgdGhhdCBhbGxv
dyBkZWNsYXJhdGlvbiBhbmQgdmFsaWRhdGlvbiBvZiBwcm9wcyB0aGF0IGFyZVxuICAgKiBzdXBw
bGllZCB0byBSZWFjdCBjb21wb25lbnRzLiBFeGFtcGxlIHVzYWdlOlxuICAgKlxuICAgKiAgIHZh
ciBQcm9wcyA9IHJlcXVpcmUoJ1JlYWN0UHJvcFR5cGVzJyk7XG4gICAqICAgdmFyIE15QXJ0aWNs
ZSA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcbiAgICogICAgIHByb3BUeXBlczoge1xuICAgKiAgICAg
ICAvLyBBbiBvcHRpb25hbCBzdHJpbmcgcHJvcCBuYW1lZCBcImRlc2NyaXB0aW9uXCIuXG4gICAq
ICAgICAgIGRlc2NyaXB0aW9uOiBQcm9wcy5zdHJpbmcsXG4gICAqXG4gICAqICAgICAgIC8vIEEg
cmVxdWlyZWQgZW51bSBwcm9wIG5hbWVkIFwiY2F0ZWdvcnlcIi5cbiAgICogICAgICAgY2F0ZWdv
cnk6IFByb3BzLm9uZU9mKFsnTmV3cycsJ1Bob3RvcyddKS5pc1JlcXVpcmVkLFxuICAgKlxuICAg
KiAgICAgICAvLyBBIHByb3AgbmFtZWQgXCJkaWFsb2dcIiB0aGF0IHJlcXVpcmVzIGFuIGluc3Rh
bmNlIG9mIERpYWxvZy5cbiAgICogICAgICAgZGlhbG9nOiBQcm9wcy5pbnN0YW5jZU9mKERpYWxv
ZykuaXNSZXF1aXJlZFxuICAgKiAgICAgfSxcbiAgICogICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7
IC4uLiB9XG4gICAqICAgfSk7XG4gICAqXG4gICAqIEEgbW9yZSBmb3JtYWwgc3BlY2lmaWNhdGlv
biBvZiBob3cgdGhlc2UgbWV0aG9kcyBhcmUgdXNlZDpcbiAgICpcbiAgICogICB0eXBlIDo9IGFy
cmF5fGJvb2x8ZnVuY3xvYmplY3R8bnVtYmVyfHN0cmluZ3xvbmVPZihbLi4uXSl8aW5zdGFuY2VP
ZiguLi4pXG4gICAqICAgZGVjbCA6PSBSZWFjdFByb3BUeXBlcy57dHlwZX0oLmlzUmVxdWlyZWQp
P1xuICAgKlxuICAgKiBFYWNoIGFuZCBldmVyeSBkZWNsYXJhdGlvbiBwcm9kdWNlcyBhIGZ1bmN0
aW9uIHdpdGggdGhlIHNhbWUgc2lnbmF0dXJlLiBUaGlzXG4gICAqIGFsbG93cyB0aGUgY3JlYXRp
b24gb2YgY3VzdG9tIHZhbGlkYXRpb24gZnVuY3Rpb25zLiBGb3IgZXhhbXBsZTpcbiAgICpcbiAg
ICogIHZhciBNeUxpbmsgPSBSZWFjdC5jcmVhdGVDbGFzcyh7XG4gICAqICAgIHByb3BUeXBlczog
e1xuICAgKiAgICAgIC8vIEFuIG9wdGlvbmFsIHN0cmluZyBvciBVUkkgcHJvcCBuYW1lZCBcImhy
ZWZcIi5cbiAgICogICAgICBocmVmOiBmdW5jdGlvbihwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVu
dE5hbWUpIHtcbiAgICogICAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4g
ICAqICAgICAgICBpZiAocHJvcFZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHByb3BWYWx1ZSAhPT0g
J3N0cmluZycgJiZcbiAgICogICAgICAgICAgICAhKHByb3BWYWx1ZSBpbnN0YW5jZW9mIFVSSSkp
IHtcbiAgICogICAgICAgICAgcmV0dXJuIG5ldyBFcnJvcihcbiAgICogICAgICAgICAgICAnRXhw
ZWN0ZWQgYSBzdHJpbmcgb3IgYW4gVVJJIGZvciAnICsgcHJvcE5hbWUgKyAnIGluICcgK1xuICAg
KiAgICAgICAgICAgIGNvbXBvbmVudE5hbWVcbiAgICogICAgICAgICAgKTtcbiAgICogICAgICAg
IH1cbiAgICogICAgICB9XG4gICAqICAgIH0sXG4gICAqICAgIHJlbmRlcjogZnVuY3Rpb24oKSB7
Li4ufVxuICAgKiAgfSk7XG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cblxuICB2YXIgQU5P
TllNT1VTID0gJzw8YW5vbnltb3VzPj4nO1xuXG4gIC8vIEltcG9ydGFudCFcbiAgLy8gS2VlcCB0
aGlzIGxpc3QgaW4gc3luYyB3aXRoIHByb2R1Y3Rpb24gdmVyc2lvbiBpbiBgLi9mYWN0b3J5V2l0
aFRocm93aW5nU2hpbXMuanNgLlxuICB2YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG4gICAgYXJyYXk6
IGNyZWF0ZVByaW1pdGl2ZVR5cGVDaGVja2VyKCdhcnJheScpLFxuICAgIGJvb2w6IGNyZWF0ZVBy
aW1pdGl2ZVR5cGVDaGVja2VyKCdib29sZWFuJyksXG4gICAgZnVuYzogY3JlYXRlUHJpbWl0aXZl
VHlwZUNoZWNrZXIoJ2Z1bmN0aW9uJyksXG4gICAgbnVtYmVyOiBjcmVhdGVQcmltaXRpdmVUeXBl
Q2hlY2tlcignbnVtYmVyJyksXG4gICAgb2JqZWN0OiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tl
cignb2JqZWN0JyksXG4gICAgc3RyaW5nOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignc3Ry
aW5nJyksXG4gICAgc3ltYm9sOiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcignc3ltYm9sJyks
XG5cbiAgICBhbnk6IGNyZWF0ZUFueVR5cGVDaGVja2VyKCksXG4gICAgYXJyYXlPZjogY3JlYXRl
QXJyYXlPZlR5cGVDaGVja2VyLFxuICAgIGVsZW1lbnQ6IGNyZWF0ZUVsZW1lbnRUeXBlQ2hlY2tl
cigpLFxuICAgIGluc3RhbmNlT2Y6IGNyZWF0ZUluc3RhbmNlVHlwZUNoZWNrZXIsXG4gICAgbm9k
ZTogY3JlYXRlTm9kZUNoZWNrZXIoKSxcbiAgICBvYmplY3RPZjogY3JlYXRlT2JqZWN0T2ZUeXBl
Q2hlY2tlcixcbiAgICBvbmVPZjogY3JlYXRlRW51bVR5cGVDaGVja2VyLFxuICAgIG9uZU9mVHlw
ZTogY3JlYXRlVW5pb25UeXBlQ2hlY2tlcixcbiAgICBzaGFwZTogY3JlYXRlU2hhcGVUeXBlQ2hl
Y2tlclxuICB9O1xuXG4gIC8qKlxuICAgKiBpbmxpbmVkIE9iamVjdC5pcyBwb2x5ZmlsbCB0byBh
dm9pZCByZXF1aXJpbmcgY29uc3VtZXJzIHNoaXAgdGhlaXIgb3duXG4gICAqIGh0dHBzOi8vZGV2
ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0phdmFTY3JpcHQvUmVmZXJlbmNlL0ds
b2JhbF9PYmplY3RzL09iamVjdC9pc1xuICAgKi9cbiAgLyplc2xpbnQtZGlzYWJsZSBuby1zZWxm
LWNvbXBhcmUqL1xuICBmdW5jdGlvbiBpcyh4LCB5KSB7XG4gICAgLy8gU2FtZVZhbHVlIGFsZ29y
aXRobVxuICAgIGlmICh4ID09PSB5KSB7XG4gICAgICAvLyBTdGVwcyAxLTUsIDctMTBcbiAgICAg
IC8vIFN0ZXBzIDYuYi02LmU6ICswICE9IC0wXG4gICAgICByZXR1cm4geCAhPT0gMCB8fCAxIC8g
eCA9PT0gMSAvIHk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFN0ZXAgNi5hOiBOYU4gPT0gTmFO
XG4gICAgICByZXR1cm4geCAhPT0geCAmJiB5ICE9PSB5O1xuICAgIH1cbiAgfVxuICAvKmVzbGlu
dC1lbmFibGUgbm8tc2VsZi1jb21wYXJlKi9cblxuICAvKipcbiAgICogV2UgdXNlIGFuIEVycm9y
LWxpa2Ugb2JqZWN0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGFzIHBlb3BsZSBtYXkgY2Fs
bFxuICAgKiBQcm9wVHlwZXMgZGlyZWN0bHkgYW5kIGluc3BlY3QgdGhlaXIgb3V0cHV0LiBIb3dl
dmVyLCB3ZSBkb24ndCB1c2UgcmVhbFxuICAgKiBFcnJvcnMgYW55bW9yZS4gV2UgZG9uJ3QgaW5z
cGVjdCB0aGVpciBzdGFjayBhbnl3YXksIGFuZCBjcmVhdGluZyB0aGVtXG4gICAqIGlzIHByb2hp
Yml0aXZlbHkgZXhwZW5zaXZlIGlmIHRoZXkgYXJlIGNyZWF0ZWQgdG9vIG9mdGVuLCBzdWNoIGFz
IHdoYXRcbiAgICogaGFwcGVucyBpbiBvbmVPZlR5cGUoKSBmb3IgYW55IHR5cGUgYmVmb3JlIHRo
ZSBvbmUgdGhhdCBtYXRjaGVkLlxuICAgKi9cbiAgZnVuY3Rpb24gUHJvcFR5cGVFcnJvcihtZXNz
YWdlKSB7XG4gICAgdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgICB0aGlzLnN0YWNrID0gJyc7
XG4gIH1cbiAgLy8gTWFrZSBgaW5zdGFuY2VvZiBFcnJvcmAgc3RpbGwgd29yayBmb3IgcmV0dXJu
ZWQgZXJyb3JzLlxuICBQcm9wVHlwZUVycm9yLnByb3RvdHlwZSA9IEVycm9yLnByb3RvdHlwZTtc
blxuICBmdW5jdGlvbiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSkge1xuICAg
IGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIg
bWFudWFsUHJvcFR5cGVDYWxsQ2FjaGUgPSB7fTtcbiAgICAgIHZhciBtYW51YWxQcm9wVHlwZVdh
cm5pbmdDb3VudCA9IDA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGNoZWNrVHlwZShpc1JlcXVpcmVk
LCBwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUs
IHNlY3JldCkge1xuICAgICAgY29tcG9uZW50TmFtZSA9IGNvbXBvbmVudE5hbWUgfHwgQU5PTllN
T1VTO1xuICAgICAgcHJvcEZ1bGxOYW1lID0gcHJvcEZ1bGxOYW1lIHx8IHByb3BOYW1lO1xuXG4g
ICAgICBpZiAoc2VjcmV0ICE9PSBSZWFjdFByb3BUeXBlc1NlY3JldCkge1xuICAgICAgICBpZiAo
dGhyb3dPbkRpcmVjdEFjY2Vzcykge1xuICAgICAgICAgIC8vIE5ldyBiZWhhdmlvciBvbmx5IGZv
ciB1c2VycyBvZiBgcHJvcC10eXBlc2AgcGFja2FnZVxuICAgICAgICAgIGludmFyaWFudChcbiAg
ICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgJ0NhbGxpbmcgUHJvcFR5cGVzIHZhbGlkYXRv
cnMgZGlyZWN0bHkgaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgYHByb3AtdHlwZXNgIHBhY2thZ2Uu
ICcgK1xuICAgICAgICAgICAgJ1VzZSBgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKClgIHRvIGNh
bGwgdGhlbS4gJyArXG4gICAgICAgICAgICAnUmVhZCBtb3JlIGF0IGh0dHA6Ly9mYi5tZS91c2Ut
Y2hlY2stcHJvcC10eXBlcydcbiAgICAgICAgICApO1xuICAgICAgICB9IGVsc2UgaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgdHlwZW9mIGNvbnNvbGUgIT09ICd1
bmRlZmluZWQnKSB7XG4gICAgICAgICAgLy8gT2xkIGJlaGF2aW9yIGZvciBwZW9wbGUgdXNpbmcg
UmVhY3QuUHJvcFR5cGVzXG4gICAgICAgICAgdmFyIGNhY2hlS2V5ID0gY29tcG9uZW50TmFtZSAr
ICc6JyArIHByb3BOYW1lO1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICFtYW51YWxQcm9w
VHlwZUNhbGxDYWNoZVtjYWNoZUtleV0gJiZcbiAgICAgICAgICAgIC8vIEF2b2lkIHNwYW1taW5n
IHRoZSBjb25zb2xlIGJlY2F1c2UgdGhleSBhcmUgb2Z0ZW4gbm90IGFjdGlvbmFibGUgZXhjZXB0
IGZvciBsaWIgYXV0aG9yc1xuICAgICAgICAgICAgbWFudWFsUHJvcFR5cGVXYXJuaW5nQ291bnQg
PCAzXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgICAgICBm
YWxzZSxcbiAgICAgICAgICAgICAgJ1lvdSBhcmUgbWFudWFsbHkgY2FsbGluZyBhIFJlYWN0LlBy
b3BUeXBlcyB2YWxpZGF0aW9uICcgK1xuICAgICAgICAgICAgICAnZnVuY3Rpb24gZm9yIHRoZSBg
JXNgIHByb3Agb24gYCVzYC4gVGhpcyBpcyBkZXByZWNhdGVkICcgK1xuICAgICAgICAgICAgICAn
YW5kIHdpbGwgdGhyb3cgaW4gdGhlIHN0YW5kYWxvbmUgYHByb3AtdHlwZXNgIHBhY2thZ2UuICcg
K1xuICAgICAgICAgICAgICAnWW91IG1heSBiZSBzZWVpbmcgdGhpcyB3YXJuaW5nIGR1ZSB0byBh
IHRoaXJkLXBhcnR5IFByb3BUeXBlcyAnICtcbiAgICAgICAgICAgICAgJ2xpYnJhcnkuIFNlZSBo
dHRwczovL2ZiLm1lL3JlYWN0LXdhcm5pbmctZG9udC1jYWxsLXByb3B0eXBlcyAnICsgJ2ZvciBk
ZXRhaWxzLicsXG4gICAgICAgICAgICAgIHByb3BGdWxsTmFtZSxcbiAgICAgICAgICAgICAgY29t
cG9uZW50TmFtZVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIG1hbnVhbFByb3BUeXBlQ2Fs
bENhY2hlW2NhY2hlS2V5XSA9IHRydWU7XG4gICAgICAgICAgICBtYW51YWxQcm9wVHlwZVdhcm5p
bmdDb3VudCsrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHBy
b3BzW3Byb3BOYW1lXSA9PSBudWxsKSB7XG4gICAgICAgIGlmIChpc1JlcXVpcmVkKSB7XG4gICAg
ICAgICAgaWYgKHByb3BzW3Byb3BOYW1lXSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgcmV0dXJu
IG5ldyBQcm9wVHlwZUVycm9yKCdUaGUgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFt
ZSArICdgIGlzIG1hcmtlZCBhcyByZXF1aXJlZCAnICsgKCdpbiBgJyArIGNvbXBvbmVudE5hbWUg
KyAnYCwgYnV0IGl0cyB2YWx1ZSBpcyBgbnVsbGAuJykpO1xuICAgICAgICAgIH1cbiAgICAgICAg
ICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ1RoZSAnICsgbG9jYXRpb24gKyAnIGAnICsgcHJv
cEZ1bGxOYW1lICsgJ2AgaXMgbWFya2VkIGFzIHJlcXVpcmVkIGluICcgKyAoJ2AnICsgY29tcG9u
ZW50TmFtZSArICdgLCBidXQgaXRzIHZhbHVlIGlzIGB1bmRlZmluZWRgLicpKTtcbiAgICAgICAg
fVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2
YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVs
bE5hbWUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBjaGFpbmVkQ2hlY2tUeXBlID0gY2hl
Y2tUeXBlLmJpbmQobnVsbCwgZmFsc2UpO1xuICAgIGNoYWluZWRDaGVja1R5cGUuaXNSZXF1aXJl
ZCA9IGNoZWNrVHlwZS5iaW5kKG51bGwsIHRydWUpO1xuXG4gICAgcmV0dXJuIGNoYWluZWRDaGVj
a1R5cGU7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcihleHBl
Y3RlZFR5cGUpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBv
bmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIHNlY3JldCkge1xuICAgICAgdmFyIHBy
b3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIHZhciBwcm9wVHlwZSA9IGdldFByb3BU
eXBlKHByb3BWYWx1ZSk7XG4gICAgICBpZiAocHJvcFR5cGUgIT09IGV4cGVjdGVkVHlwZSkge1xu
ICAgICAgICAvLyBgcHJvcFZhbHVlYCBiZWluZyBpbnN0YW5jZSBvZiwgc2F5LCBkYXRlL3JlZ2V4
cCwgcGFzcyB0aGUgJ29iamVjdCdcbiAgICAgICAgLy8gY2hlY2ssIGJ1dCB3ZSBjYW4gb2ZmZXIg
YSBtb3JlIHByZWNpc2UgZXJyb3IgbWVzc2FnZSBoZXJlIHJhdGhlciB0aGFuXG4gICAgICAgIC8v
ICdvZiB0eXBlIGBvYmplY3RgJy5cbiAgICAgICAgdmFyIHByZWNpc2VUeXBlID0gZ2V0UHJlY2lz
ZVR5cGUocHJvcFZhbHVlKTtcblxuICAgICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0lu
dmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHR5cGUgJyAr
ICgnYCcgKyBwcmVjaXNlVHlwZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSAr
ICdgLCBleHBlY3RlZCAnKSArICgnYCcgKyBleHBlY3RlZFR5cGUgKyAnYC4nKSk7XG4gICAgICB9
XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5
cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUFueVR5cGVDaGVj
a2VyKCkge1xuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcihlbXB0eUZ1bmN0
aW9uLnRoYXRSZXR1cm5zTnVsbCk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVBcnJheU9mVHlw
ZUNoZWNrZXIodHlwZUNoZWNrZXIpIHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJv
cE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIGlm
ICh0eXBlb2YgdHlwZUNoZWNrZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG5l
dyBQcm9wVHlwZUVycm9yKCdQcm9wZXJ0eSBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIGNvbXBv
bmVudCBgJyArIGNvbXBvbmVudE5hbWUgKyAnYCBoYXMgaW52YWxpZCBQcm9wVHlwZSBub3RhdGlv
biBpbnNpZGUgYXJyYXlPZi4nKTtcbiAgICAgIH1cbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9w
c1twcm9wTmFtZV07XG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkocHJvcFZhbHVlKSkge1xuICAg
ICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xuICAgICAgICByZXR1
cm4gbmV3IFByb3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BG
dWxsTmFtZSArICdgIG9mIHR5cGUgJyArICgnYCcgKyBwcm9wVHlwZSArICdgIHN1cHBsaWVkIHRv
IGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBhbiBhcnJheS4nKSk7XG4gICAgICB9
XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BWYWx1ZS5sZW5ndGg7IGkrKykge1xuICAg
ICAgICB2YXIgZXJyb3IgPSB0eXBlQ2hlY2tlcihwcm9wVmFsdWUsIGksIGNvbXBvbmVudE5hbWUs
IGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUgKyAnWycgKyBpICsgJ10nLCBSZWFjdFByb3BUeXBlc1Nl
Y3JldCk7XG4gICAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yKSB7XG4gICAgICAgICAg
cmV0dXJuIGVycm9yO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAg
ICB9XG4gICAgcmV0dXJuIGNyZWF0ZUNoYWluYWJsZVR5cGVDaGVja2VyKHZhbGlkYXRlKTtcbiAg
fVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUVsZW1lbnRUeXBlQ2hlY2tlcigpIHtcbiAgICBmdW5jdGlv
biB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9w
RnVsbE5hbWUpIHtcbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4gICAg
ICBpZiAoIWlzVmFsaWRFbGVtZW50KHByb3BWYWx1ZSkpIHtcbiAgICAgICAgdmFyIHByb3BUeXBl
ID0gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKTtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVy
cm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiB0
eXBlICcgKyAoJ2AnICsgcHJvcFR5cGUgKyAnYCBzdXBwbGllZCB0byBgJyArIGNvbXBvbmVudE5h
bWUgKyAnYCwgZXhwZWN0ZWQgYSBzaW5nbGUgUmVhY3RFbGVtZW50LicpKTtcbiAgICAgIH1cbiAg
ICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNo
ZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlSW5zdGFuY2VUeXBlQ2hl
Y2tlcihleHBlY3RlZENsYXNzKSB7XG4gICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BO
YW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICBpZiAo
IShwcm9wc1twcm9wTmFtZV0gaW5zdGFuY2VvZiBleHBlY3RlZENsYXNzKSkge1xuICAgICAgICB2
YXIgZXhwZWN0ZWRDbGFzc05hbWUgPSBleHBlY3RlZENsYXNzLm5hbWUgfHwgQU5PTllNT1VTO1xu
ICAgICAgICB2YXIgYWN0dWFsQ2xhc3NOYW1lID0gZ2V0Q2xhc3NOYW1lKHByb3BzW3Byb3BOYW1l
XSk7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAnICsgbG9jYXRp
b24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyArIGFjdHVhbENs
YXNzTmFtZSArICdgIHN1cHBsaWVkIHRvIGAnICsgY29tcG9uZW50TmFtZSArICdgLCBleHBlY3Rl
ZCAnKSArICgnaW5zdGFuY2Ugb2YgYCcgKyBleHBlY3RlZENsYXNzTmFtZSArICdgLicpKTtcbiAg
ICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5h
YmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlRW51bVR5
cGVDaGVja2VyKGV4cGVjdGVkVmFsdWVzKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGV4cGVj
dGVkVmFsdWVzKSkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcoZmFsc2UsICdJbnZhbGlkIGFyZ3VtZW50IHN1cHBsaWVkIHRvIG9uZU9mLCBl
eHBlY3RlZCBhbiBpbnN0YW5jZSBvZiBhcnJheS4nKSA6IHZvaWQgMDtcbiAgICAgIHJldHVybiBl
bXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVsbDtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiB2YWxp
ZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9wRnVsbE5h
bWUpIHtcbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGV4cGVjdGVkVmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlm
IChpcyhwcm9wVmFsdWUsIGV4cGVjdGVkVmFsdWVzW2ldKSkge1xuICAgICAgICAgIHJldHVybiBu
dWxsO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHZhciB2YWx1ZXNTdHJpbmcgPSBKU09O
LnN0cmluZ2lmeShleHBlY3RlZFZhbHVlcyk7XG4gICAgICByZXR1cm4gbmV3IFByb3BUeXBlRXJy
b3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSArICdgIG9mIHZh
bHVlIGAnICsgcHJvcFZhbHVlICsgJ2AgJyArICgnc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnRO
YW1lICsgJ2AsIGV4cGVjdGVkIG9uZSBvZiAnICsgdmFsdWVzU3RyaW5nICsgJy4nKSk7XG4gICAg
fVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0ZSk7XG4gIH1c
blxuICBmdW5jdGlvbiBjcmVhdGVPYmplY3RPZlR5cGVDaGVja2VyKHR5cGVDaGVja2VyKSB7XG4g
ICAgZnVuY3Rpb24gdmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2Nh
dGlvbiwgcHJvcEZ1bGxOYW1lKSB7XG4gICAgICBpZiAodHlwZW9mIHR5cGVDaGVja2VyICE9PSAn
ZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignUHJvcGVydHkg
YCcgKyBwcm9wRnVsbE5hbWUgKyAnYCBvZiBjb21wb25lbnQgYCcgKyBjb21wb25lbnROYW1lICsg
J2AgaGFzIGludmFsaWQgUHJvcFR5cGUgbm90YXRpb24gaW5zaWRlIG9iamVjdE9mLicpO1xuICAg
ICAgfVxuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BOYW1lXTtcbiAgICAgIHZhciBw
cm9wVHlwZSA9IGdldFByb3BUeXBlKHByb3BWYWx1ZSk7XG4gICAgICBpZiAocHJvcFR5cGUgIT09
ICdvYmplY3QnKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvcFR5cGVFcnJvcignSW52YWxpZCAn
ICsgbG9jYXRpb24gKyAnIGAnICsgcHJvcEZ1bGxOYW1lICsgJ2Agb2YgdHlwZSAnICsgKCdgJyAr
IHByb3BUeXBlICsgJ2Agc3VwcGxpZWQgdG8gYCcgKyBjb21wb25lbnROYW1lICsgJ2AsIGV4cGVj
dGVkIGFuIG9iamVjdC4nKSk7XG4gICAgICB9XG4gICAgICBmb3IgKHZhciBrZXkgaW4gcHJvcFZh
bHVlKSB7XG4gICAgICAgIGlmIChwcm9wVmFsdWUuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAg
ICAgICAgIHZhciBlcnJvciA9IHR5cGVDaGVja2VyKHByb3BWYWx1ZSwga2V5LCBjb21wb25lbnRO
YW1lLCBsb2NhdGlvbiwgcHJvcEZ1bGxOYW1lICsgJy4nICsga2V5LCBSZWFjdFByb3BUeXBlc1Nl
Y3JldCk7XG4gICAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAg
ICAgIHJldHVybiBlcnJvcjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAg
IHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNr
ZXIodmFsaWRhdGUpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3JlYXRlVW5pb25UeXBlQ2hlY2tlcihh
cnJheU9mVHlwZUNoZWNrZXJzKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGFycmF5T2ZUeXBl
Q2hlY2tlcnMpKSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ID8gd2FybmluZyhmYWxzZSwgJ0ludmFsaWQgYXJndW1lbnQgc3VwcGxpZWQgdG8gb25lT2ZUeXBl
LCBleHBlY3RlZCBhbiBpbnN0YW5jZSBvZiBhcnJheS4nKSA6IHZvaWQgMDtcbiAgICAgIHJldHVy
biBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zTnVsbDtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGFycmF5T2ZUeXBlQ2hlY2tlcnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBj
aGVja2VyID0gYXJyYXlPZlR5cGVDaGVja2Vyc1tpXTtcbiAgICAgIGlmICh0eXBlb2YgY2hlY2tl
ciAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB3YXJuaW5nKFxuICAgICAgICAgIGZhbHNlLFxu
ICAgICAgICAgICdJbnZhbGlkIGFyZ3VtZW50IHN1cHBsaWQgdG8gb25lT2ZUeXBlLiBFeHBlY3Rl
ZCBhbiBhcnJheSBvZiBjaGVjayBmdW5jdGlvbnMsIGJ1dCAnICtcbiAgICAgICAgICAncmVjZWl2
ZWQgJXMgYXQgaW5kZXggJXMuJyxcbiAgICAgICAgICBnZXRQb3N0Zml4Rm9yVHlwZVdhcm5pbmco
Y2hlY2tlciksXG4gICAgICAgICAgaVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gZW1wdHlG
dW5jdGlvbi50aGF0UmV0dXJuc051bGw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgZnVuY3Rpb24g
dmFsaWRhdGUocHJvcHMsIHByb3BOYW1lLCBjb21wb25lbnROYW1lLCBsb2NhdGlvbiwgcHJvcEZ1
bGxOYW1lKSB7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5T2ZUeXBlQ2hlY2tlcnMu
bGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoZWNrZXIgPSBhcnJheU9mVHlwZUNoZWNrZXJz
W2ldO1xuICAgICAgICBpZiAoY2hlY2tlcihwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUs
IGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUsIFJlYWN0UHJvcFR5cGVzU2VjcmV0KSA9PSBudWxsKSB7
XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0
dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcgKyBwcm9w
RnVsbE5hbWUgKyAnYCBzdXBwbGllZCB0byAnICsgKCdgJyArIGNvbXBvbmVudE5hbWUgKyAnYC4n
KSk7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0
ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVOb2RlQ2hlY2tlcigpIHtcbiAgICBmdW5jdGlv
biB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBwcm9w
RnVsbE5hbWUpIHtcbiAgICAgIGlmICghaXNOb2RlKHByb3BzW3Byb3BOYW1lXSkpIHtcbiAgICAg
ICAgcmV0dXJuIG5ldyBQcm9wVHlwZUVycm9yKCdJbnZhbGlkICcgKyBsb2NhdGlvbiArICcgYCcg
KyBwcm9wRnVsbE5hbWUgKyAnYCBzdXBwbGllZCB0byAnICsgKCdgJyArIGNvbXBvbmVudE5hbWUg
KyAnYCwgZXhwZWN0ZWQgYSBSZWFjdE5vZGUuJykpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51
bGw7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVDaGFpbmFibGVUeXBlQ2hlY2tlcih2YWxpZGF0
ZSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVTaGFwZVR5cGVDaGVja2VyKHNoYXBlVHlwZXMp
IHtcbiAgICBmdW5jdGlvbiB2YWxpZGF0ZShwcm9wcywgcHJvcE5hbWUsIGNvbXBvbmVudE5hbWUs
IGxvY2F0aW9uLCBwcm9wRnVsbE5hbWUpIHtcbiAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1tw
cm9wTmFtZV07XG4gICAgICB2YXIgcHJvcFR5cGUgPSBnZXRQcm9wVHlwZShwcm9wVmFsdWUpO1xu
ICAgICAgaWYgKHByb3BUeXBlICE9PSAnb2JqZWN0Jykge1xuICAgICAgICByZXR1cm4gbmV3IFBy
b3BUeXBlRXJyb3IoJ0ludmFsaWQgJyArIGxvY2F0aW9uICsgJyBgJyArIHByb3BGdWxsTmFtZSAr
ICdgIG9mIHR5cGUgYCcgKyBwcm9wVHlwZSArICdgICcgKyAoJ3N1cHBsaWVkIHRvIGAnICsgY29t
cG9uZW50TmFtZSArICdgLCBleHBlY3RlZCBgb2JqZWN0YC4nKSk7XG4gICAgICB9XG4gICAgICBm
b3IgKHZhciBrZXkgaW4gc2hhcGVUeXBlcykge1xuICAgICAgICB2YXIgY2hlY2tlciA9IHNoYXBl
VHlwZXNba2V5XTtcbiAgICAgICAgaWYgKCFjaGVja2VyKSB7XG4gICAgICAgICAgY29udGludWU7
XG4gICAgICAgIH1cbiAgICAgICAgdmFyIGVycm9yID0gY2hlY2tlcihwcm9wVmFsdWUsIGtleSwg
Y29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSArICcuJyArIGtleSwgUmVhY3RQ
cm9wVHlwZXNTZWNyZXQpO1xuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4g
ZXJyb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAg
ICByZXR1cm4gY3JlYXRlQ2hhaW5hYmxlVHlwZUNoZWNrZXIodmFsaWRhdGUpO1xuICB9XG5cbiAg
ZnVuY3Rpb24gaXNOb2RlKHByb3BWYWx1ZSkge1xuICAgIHN3aXRjaCAodHlwZW9mIHByb3BWYWx1
ZSkge1xuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBj
YXNlICd1bmRlZmluZWQnOlxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGNhc2UgJ2Jvb2xl
YW4nOlxuICAgICAgICByZXR1cm4gIXByb3BWYWx1ZTtcbiAgICAgIGNhc2UgJ29iamVjdCc6XG4g
ICAgICAgIGlmIChBcnJheS5pc0FycmF5KHByb3BWYWx1ZSkpIHtcbiAgICAgICAgICByZXR1cm4g
cHJvcFZhbHVlLmV2ZXJ5KGlzTm9kZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHByb3BWYWx1
ZSA9PT0gbnVsbCB8fCBpc1ZhbGlkRWxlbWVudChwcm9wVmFsdWUpKSB7XG4gICAgICAgICAgcmV0
dXJuIHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgaXRlcmF0b3JGbiA9IGdldEl0ZXJh
dG9yRm4ocHJvcFZhbHVlKTtcbiAgICAgICAgaWYgKGl0ZXJhdG9yRm4pIHtcbiAgICAgICAgICB2
YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwocHJvcFZhbHVlKTtcbiAgICAgICAgICB2YXIg
c3RlcDtcbiAgICAgICAgICBpZiAoaXRlcmF0b3JGbiAhPT0gcHJvcFZhbHVlLmVudHJpZXMpIHtc
biAgICAgICAgICAgIHdoaWxlICghKHN0ZXAgPSBpdGVyYXRvci5uZXh0KCkpLmRvbmUpIHtcbiAg
ICAgICAgICAgICAgaWYgKCFpc05vZGUoc3RlcC52YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9
IGVsc2Uge1xuICAgICAgICAgICAgLy8gSXRlcmF0b3Igd2lsbCBwcm92aWRlIGVudHJ5IFtrLHZd
IHR1cGxlcyByYXRoZXIgdGhhbiB2YWx1ZXMuXG4gICAgICAgICAgICB3aGlsZSAoIShzdGVwID0g
aXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICAgICAgICAgIHZhciBlbnRyeSA9IHN0ZXAu
dmFsdWU7XG4gICAgICAgICAgICAgIGlmIChlbnRyeSkge1xuICAgICAgICAgICAgICAgIGlmICgh
aXNOb2RlKGVudHJ5WzFdKSkge1xuICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAg
ICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAg
IH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1c
blxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiBm
YWxzZTtcbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBpc1N5bWJvbChwcm9wVHlwZSwgcHJvcFZh
bHVlKSB7XG4gICAgLy8gTmF0aXZlIFN5bWJvbC5cbiAgICBpZiAocHJvcFR5cGUgPT09ICdzeW1i
b2wnKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICAvLyAxOS40LjMuNSBTeW1i
b2wucHJvdG90eXBlW0BAdG9TdHJpbmdUYWddID09PSAnU3ltYm9sJ1xuICAgIGlmIChwcm9wVmFs
dWVbJ0BAdG9TdHJpbmdUYWcnXSA9PT0gJ1N5bWJvbCcpIHtcbiAgICAgIHJldHVybiB0cnVlO1xu
ICAgIH1cblxuICAgIC8vIEZhbGxiYWNrIGZvciBub24tc3BlYyBjb21wbGlhbnQgU3ltYm9scyB3
aGljaCBhcmUgcG9seWZpbGxlZC5cbiAgICBpZiAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9u
JyAmJiBwcm9wVmFsdWUgaW5zdGFuY2VvZiBTeW1ib2wpIHtcbiAgICAgIHJldHVybiB0cnVlO1xu
ICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIEVxdWl2YWxlbnQgb2YgYHR5
cGVvZmAgYnV0IHdpdGggc3BlY2lhbCBoYW5kbGluZyBmb3IgYXJyYXkgYW5kIHJlZ2V4cC5cbiAg
ZnVuY3Rpb24gZ2V0UHJvcFR5cGUocHJvcFZhbHVlKSB7XG4gICAgdmFyIHByb3BUeXBlID0gdHlw
ZW9mIHByb3BWYWx1ZTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShwcm9wVmFsdWUpKSB7XG4gICAg
ICByZXR1cm4gJ2FycmF5JztcbiAgICB9XG4gICAgaWYgKHByb3BWYWx1ZSBpbnN0YW5jZW9mIFJl
Z0V4cCkge1xuICAgICAgLy8gT2xkIHdlYmtpdHMgKGF0IGxlYXN0IHVudGlsIEFuZHJvaWQgNC4w
KSByZXR1cm4gJ2Z1bmN0aW9uJyByYXRoZXIgdGhhblxuICAgICAgLy8gJ29iamVjdCcgZm9yIHR5
cGVvZiBhIFJlZ0V4cC4gV2UnbGwgbm9ybWFsaXplIHRoaXMgaGVyZSBzbyB0aGF0IC9ibGEvXG4g
ICAgICAvLyBwYXNzZXMgUHJvcFR5cGVzLm9iamVjdC5cbiAgICAgIHJldHVybiAnb2JqZWN0Jztc
biAgICB9XG4gICAgaWYgKGlzU3ltYm9sKHByb3BUeXBlLCBwcm9wVmFsdWUpKSB7XG4gICAgICBy
ZXR1cm4gJ3N5bWJvbCc7XG4gICAgfVxuICAgIHJldHVybiBwcm9wVHlwZTtcbiAgfVxuXG4gIC8v
IFRoaXMgaGFuZGxlcyBtb3JlIHR5cGVzIHRoYW4gYGdldFByb3BUeXBlYC4gT25seSB1c2VkIGZv
ciBlcnJvciBtZXNzYWdlcy5cbiAgLy8gU2VlIGBjcmVhdGVQcmltaXRpdmVUeXBlQ2hlY2tlcmAu
XG4gIGZ1bmN0aW9uIGdldFByZWNpc2VUeXBlKHByb3BWYWx1ZSkge1xuICAgIGlmICh0eXBlb2Yg
cHJvcFZhbHVlID09PSAndW5kZWZpbmVkJyB8fCBwcm9wVmFsdWUgPT09IG51bGwpIHtcbiAgICAg
IHJldHVybiAnJyArIHByb3BWYWx1ZTtcbiAgICB9XG4gICAgdmFyIHByb3BUeXBlID0gZ2V0UHJv
cFR5cGUocHJvcFZhbHVlKTtcbiAgICBpZiAocHJvcFR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAg
ICBpZiAocHJvcFZhbHVlIGluc3RhbmNlb2YgRGF0ZSkge1xuICAgICAgICByZXR1cm4gJ2RhdGUn
O1xuICAgICAgfSBlbHNlIGlmIChwcm9wVmFsdWUgaW5zdGFuY2VvZiBSZWdFeHApIHtcbiAgICAg
ICAgcmV0dXJuICdyZWdleHAnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcHJvcFR5cGU7
XG4gIH1cblxuICAvLyBSZXR1cm5zIGEgc3RyaW5nIHRoYXQgaXMgcG9zdGZpeGVkIHRvIGEgd2Fy
bmluZyBhYm91dCBhbiBpbnZhbGlkIHR5cGUuXG4gIC8vIEZvciBleGFtcGxlLCBcInVuZGVmaW5l
ZFwiIG9yIFwib2YgdHlwZSBhcnJheVwiXG4gIGZ1bmN0aW9uIGdldFBvc3RmaXhGb3JUeXBlV2Fy
bmluZyh2YWx1ZSkge1xuICAgIHZhciB0eXBlID0gZ2V0UHJlY2lzZVR5cGUodmFsdWUpO1xuICAg
IHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnb2JqZWN0
JzpcbiAgICAgICAgcmV0dXJuICdhbiAnICsgdHlwZTtcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxu
ICAgICAgY2FzZSAnZGF0ZSc6XG4gICAgICBjYXNlICdyZWdleHAnOlxuICAgICAgICByZXR1cm4g
J2EgJyArIHR5cGU7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZXR1cm4gdHlwZTtcbiAgICB9
XG4gIH1cblxuICAvLyBSZXR1cm5zIGNsYXNzIG5hbWUgb2YgdGhlIG9iamVjdCwgaWYgYW55Llxu
ICBmdW5jdGlvbiBnZXRDbGFzc05hbWUocHJvcFZhbHVlKSB7XG4gICAgaWYgKCFwcm9wVmFsdWUu
Y29uc3RydWN0b3IgfHwgIXByb3BWYWx1ZS5jb25zdHJ1Y3Rvci5uYW1lKSB7XG4gICAgICByZXR1
cm4gQU5PTllNT1VTO1xuICAgIH1cbiAgICByZXR1cm4gcHJvcFZhbHVlLmNvbnN0cnVjdG9yLm5h
bWU7XG4gIH1cblxuICBSZWFjdFByb3BUeXBlcy5jaGVja1Byb3BUeXBlcyA9IGNoZWNrUHJvcFR5
cGVzO1xuICBSZWFjdFByb3BUeXBlcy5Qcm9wVHlwZXMgPSBSZWFjdFByb3BUeXBlcztcblxuICBy
ZXR1cm4gUmVhY3RQcm9wVHlwZXM7XG59O1xuXG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiog
V0VCUEFDSyBGT09URVJcbiAqKiAuL34vcHJvcC10eXBlcy9mYWN0b3J5V2l0aFR5cGVDaGVja2Vy
cy5qc1xuICoqIG1vZHVsZSBpZCA9IDEyMlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwi
J3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL1JlYWN0RE9N
Jyk7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4v
fi9yZWFjdC1kb20vaW5kZXguanNcbiAqKiBtb2R1bGUgaWQgPSAxMjNcbiAqKiBtb2R1bGUgY2h1
bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ss
IEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBp
cyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBM
SUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFu
IGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRo
ZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0
cmljdCc7XG5cbnZhciBBUklBRE9NUHJvcGVydHlDb25maWcgPSB7XG4gIFByb3BlcnRpZXM6IHtc
biAgICAvLyBHbG9iYWwgU3RhdGVzIGFuZCBQcm9wZXJ0aWVzXG4gICAgJ2FyaWEtY3VycmVudCc6
IDAsIC8vIHN0YXRlXG4gICAgJ2FyaWEtZGV0YWlscyc6IDAsXG4gICAgJ2FyaWEtZGlzYWJsZWQn
OiAwLCAvLyBzdGF0ZVxuICAgICdhcmlhLWhpZGRlbic6IDAsIC8vIHN0YXRlXG4gICAgJ2FyaWEt
aW52YWxpZCc6IDAsIC8vIHN0YXRlXG4gICAgJ2FyaWEta2V5c2hvcnRjdXRzJzogMCxcbiAgICAn
YXJpYS1sYWJlbCc6IDAsXG4gICAgJ2FyaWEtcm9sZWRlc2NyaXB0aW9uJzogMCxcbiAgICAvLyBX
aWRnZXQgQXR0cmlidXRlc1xuICAgICdhcmlhLWF1dG9jb21wbGV0ZSc6IDAsXG4gICAgJ2FyaWEt
Y2hlY2tlZCc6IDAsXG4gICAgJ2FyaWEtZXhwYW5kZWQnOiAwLFxuICAgICdhcmlhLWhhc3BvcHVw
JzogMCxcbiAgICAnYXJpYS1sZXZlbCc6IDAsXG4gICAgJ2FyaWEtbW9kYWwnOiAwLFxuICAgICdh
cmlhLW11bHRpbGluZSc6IDAsXG4gICAgJ2FyaWEtbXVsdGlzZWxlY3RhYmxlJzogMCxcbiAgICAn
YXJpYS1vcmllbnRhdGlvbic6IDAsXG4gICAgJ2FyaWEtcGxhY2Vob2xkZXInOiAwLFxuICAgICdh
cmlhLXByZXNzZWQnOiAwLFxuICAgICdhcmlhLXJlYWRvbmx5JzogMCxcbiAgICAnYXJpYS1yZXF1
aXJlZCc6IDAsXG4gICAgJ2FyaWEtc2VsZWN0ZWQnOiAwLFxuICAgICdhcmlhLXNvcnQnOiAwLFxu
ICAgICdhcmlhLXZhbHVlbWF4JzogMCxcbiAgICAnYXJpYS12YWx1ZW1pbic6IDAsXG4gICAgJ2Fy
aWEtdmFsdWVub3cnOiAwLFxuICAgICdhcmlhLXZhbHVldGV4dCc6IDAsXG4gICAgLy8gTGl2ZSBS
ZWdpb24gQXR0cmlidXRlc1xuICAgICdhcmlhLWF0b21pYyc6IDAsXG4gICAgJ2FyaWEtYnVzeSc6
IDAsXG4gICAgJ2FyaWEtbGl2ZSc6IDAsXG4gICAgJ2FyaWEtcmVsZXZhbnQnOiAwLFxuICAgIC8v
IERyYWctYW5kLURyb3AgQXR0cmlidXRlc1xuICAgICdhcmlhLWRyb3BlZmZlY3QnOiAwLFxuICAg
ICdhcmlhLWdyYWJiZWQnOiAwLFxuICAgIC8vIFJlbGF0aW9uc2hpcCBBdHRyaWJ1dGVzXG4gICAg
J2FyaWEtYWN0aXZlZGVzY2VuZGFudCc6IDAsXG4gICAgJ2FyaWEtY29sY291bnQnOiAwLFxuICAg
ICdhcmlhLWNvbGluZGV4JzogMCxcbiAgICAnYXJpYS1jb2xzcGFuJzogMCxcbiAgICAnYXJpYS1j
b250cm9scyc6IDAsXG4gICAgJ2FyaWEtZGVzY3JpYmVkYnknOiAwLFxuICAgICdhcmlhLWVycm9y
bWVzc2FnZSc6IDAsXG4gICAgJ2FyaWEtZmxvd3RvJzogMCxcbiAgICAnYXJpYS1sYWJlbGxlZGJ5
JzogMCxcbiAgICAnYXJpYS1vd25zJzogMCxcbiAgICAnYXJpYS1wb3NpbnNldCc6IDAsXG4gICAg
J2FyaWEtcm93Y291bnQnOiAwLFxuICAgICdhcmlhLXJvd2luZGV4JzogMCxcbiAgICAnYXJpYS1y
b3dzcGFuJzogMCxcbiAgICAnYXJpYS1zZXRzaXplJzogMFxuICB9LFxuICBET01BdHRyaWJ1dGVO
YW1lczoge30sXG4gIERPTVByb3BlcnR5TmFtZXM6IHt9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9
IEFSSUFET01Qcm9wZXJ0eUNvbmZpZztcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQ
QUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL0FSSUFET01Qcm9wZXJ0eUNvbmZpZy5q
c1xuICoqIG1vZHVsZSBpZCA9IDEyNFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoq
XG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0
cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRo
ZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUg
cm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxu
ICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0
aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0
RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7XG5c
bnZhciBmb2N1c05vZGUgPSByZXF1aXJlKCdmYmpzL2xpYi9mb2N1c05vZGUnKTtcblxudmFyIEF1
dG9Gb2N1c1V0aWxzID0ge1xuICBmb2N1c0RPTUNvbXBvbmVudDogZnVuY3Rpb24gKCkge1xuICAg
IGZvY3VzTm9kZShSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlz
KSk7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQXV0b0ZvY3VzVXRpbHM7XG5cblxuLyoq
KioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xp
Yi9BdXRvRm9jdXNVdGlscy5qc1xuICoqIG1vZHVsZSBpZCA9IDEyNVxuICoqIG1vZHVsZSBjaHVu
a3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50IEZhY2Vib29rLCBJ
bmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJp
Y3QnO1xuXG52YXIgRXZlbnRQcm9wYWdhdG9ycyA9IHJlcXVpcmUoJy4vRXZlbnRQcm9wYWdhdG9y
cycpO1xudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvRXhlY3V0
aW9uRW52aXJvbm1lbnQnKTtcbnZhciBGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUgPSByZXF1aXJl
KCcuL0ZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZScpO1xudmFyIFN5bnRoZXRpY0NvbXBvc2l0aW9u
RXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQnKTtcbnZhciBTeW50
aGV0aWNJbnB1dEV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNJbnB1dEV2ZW50Jyk7XG5cbnZh
ciBFTkRfS0VZQ09ERVMgPSBbOSwgMTMsIDI3LCAzMl07IC8vIFRhYiwgUmV0dXJuLCBFc2MsIFNw
YWNlXG52YXIgU1RBUlRfS0VZQ09ERSA9IDIyOTtcblxudmFyIGNhblVzZUNvbXBvc2l0aW9uRXZl
bnQgPSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgJ0NvbXBvc2l0aW9uRXZlbnQn
IGluIHdpbmRvdztcblxudmFyIGRvY3VtZW50TW9kZSA9IG51bGw7XG5pZiAoRXhlY3V0aW9uRW52
aXJvbm1lbnQuY2FuVXNlRE9NICYmICdkb2N1bWVudE1vZGUnIGluIGRvY3VtZW50KSB7XG4gIGRv
Y3VtZW50TW9kZSA9IGRvY3VtZW50LmRvY3VtZW50TW9kZTtcbn1cblxuLy8gV2Via2l0IG9mZmVy
cyBhIHZlcnkgdXNlZnVsIGB0ZXh0SW5wdXRgIGV2ZW50IHRoYXQgY2FuIGJlIHVzZWQgdG9cbi8v
IGRpcmVjdGx5IHJlcHJlc2VudCBgYmVmb3JlSW5wdXRgLiBUaGUgSUUgYHRleHRpbnB1dGAgZXZl
bnQgaXMgbm90IGFzXG4vLyB1c2VmdWwsIHNvIHdlIGRvbid0IHVzZSBpdC5cbnZhciBjYW5Vc2VU
ZXh0SW5wdXRFdmVudCA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAmJiAnVGV4dEV2
ZW50JyBpbiB3aW5kb3cgJiYgIWRvY3VtZW50TW9kZSAmJiAhaXNQcmVzdG8oKTtcblxuLy8gSW4g
SUU5Kywgd2UgaGF2ZSBhY2Nlc3MgdG8gY29tcG9zaXRpb24gZXZlbnRzLCBidXQgdGhlIGRhdGEg
c3VwcGxpZWRcbi8vIGJ5IHRoZSBuYXRpdmUgY29tcG9zaXRpb25lbmQgZXZlbnQgbWF5IGJlIGlu
Y29ycmVjdC4gSmFwYW5lc2UgaWRlb2dyYXBoaWNcbi8vIHNwYWNlcywgZm9yIGluc3RhbmNlIChc
XHUzMDAwKSBhcmUgbm90IHJlY29yZGVkIGNvcnJlY3RseS5cbnZhciB1c2VGYWxsYmFja0NvbXBv
c2l0aW9uRGF0YSA9IEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAmJiAoIWNhblVzZUNv
bXBvc2l0aW9uRXZlbnQgfHwgZG9jdW1lbnRNb2RlICYmIGRvY3VtZW50TW9kZSA+IDggJiYgZG9j
dW1lbnRNb2RlIDw9IDExKTtcblxuLyoqXG4gKiBPcGVyYSA8PSAxMiBpbmNsdWRlcyBUZXh0RXZl
bnQgaW4gd2luZG93LCBidXQgZG9lcyBub3QgZmlyZVxuICogdGV4dCBpbnB1dCBldmVudHMuIFJl
bHkgb24ga2V5cHJlc3MgaW5zdGVhZC5cbiAqL1xuZnVuY3Rpb24gaXNQcmVzdG8oKSB7XG4gIHZh
ciBvcGVyYSA9IHdpbmRvdy5vcGVyYTtcbiAgcmV0dXJuIHR5cGVvZiBvcGVyYSA9PT0gJ29iamVj
dCcgJiYgdHlwZW9mIG9wZXJhLnZlcnNpb24gPT09ICdmdW5jdGlvbicgJiYgcGFyc2VJbnQob3Bl
cmEudmVyc2lvbigpLCAxMCkgPD0gMTI7XG59XG5cbnZhciBTUEFDRUJBUl9DT0RFID0gMzI7XG52
YXIgU1BBQ0VCQVJfQ0hBUiA9IFN0cmluZy5mcm9tQ2hhckNvZGUoU1BBQ0VCQVJfQ09ERSk7XG5c
bi8vIEV2ZW50cyBhbmQgdGhlaXIgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSBuYW1lcy5cbnZhciBl
dmVudFR5cGVzID0ge1xuICBiZWZvcmVJbnB1dDoge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlvbk5h
bWVzOiB7XG4gICAgICBidWJibGVkOiAnb25CZWZvcmVJbnB1dCcsXG4gICAgICBjYXB0dXJlZDog
J29uQmVmb3JlSW5wdXRDYXB0dXJlJ1xuICAgIH0sXG4gICAgZGVwZW5kZW5jaWVzOiBbJ3RvcENv
bXBvc2l0aW9uRW5kJywgJ3RvcEtleVByZXNzJywgJ3RvcFRleHRJbnB1dCcsICd0b3BQYXN0ZSdd
XG4gIH0sXG4gIGNvbXBvc2l0aW9uRW5kOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6
IHtcbiAgICAgIGJ1YmJsZWQ6ICdvbkNvbXBvc2l0aW9uRW5kJyxcbiAgICAgIGNhcHR1cmVkOiAn
b25Db21wb3NpdGlvbkVuZENhcHR1cmUnXG4gICAgfSxcbiAgICBkZXBlbmRlbmNpZXM6IFsndG9w
Qmx1cicsICd0b3BDb21wb3NpdGlvbkVuZCcsICd0b3BLZXlEb3duJywgJ3RvcEtleVByZXNzJywg
J3RvcEtleVVwJywgJ3RvcE1vdXNlRG93biddXG4gIH0sXG4gIGNvbXBvc2l0aW9uU3RhcnQ6IHtc
biAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1lczoge1xuICAgICAgYnViYmxlZDogJ29uQ29tcG9z
aXRpb25TdGFydCcsXG4gICAgICBjYXB0dXJlZDogJ29uQ29tcG9zaXRpb25TdGFydENhcHR1cmUn
XG4gICAgfSxcbiAgICBkZXBlbmRlbmNpZXM6IFsndG9wQmx1cicsICd0b3BDb21wb3NpdGlvblN0
YXJ0JywgJ3RvcEtleURvd24nLCAndG9wS2V5UHJlc3MnLCAndG9wS2V5VXAnLCAndG9wTW91c2VE
b3duJ11cbiAgfSxcbiAgY29tcG9zaXRpb25VcGRhdGU6IHtcbiAgICBwaGFzZWRSZWdpc3RyYXRp
b25OYW1lczoge1xuICAgICAgYnViYmxlZDogJ29uQ29tcG9zaXRpb25VcGRhdGUnLFxuICAgICAg
Y2FwdHVyZWQ6ICdvbkNvbXBvc2l0aW9uVXBkYXRlQ2FwdHVyZSdcbiAgICB9LFxuICAgIGRlcGVu
ZGVuY2llczogWyd0b3BCbHVyJywgJ3RvcENvbXBvc2l0aW9uVXBkYXRlJywgJ3RvcEtleURvd24n
LCAndG9wS2V5UHJlc3MnLCAndG9wS2V5VXAnLCAndG9wTW91c2VEb3duJ11cbiAgfVxufTtcblxu
Ly8gVHJhY2sgd2hldGhlciB3ZSd2ZSBldmVyIGhhbmRsZWQgYSBrZXlwcmVzcyBvbiB0aGUgc3Bh
Y2Uga2V5LlxudmFyIGhhc1NwYWNlS2V5cHJlc3MgPSBmYWxzZTtcblxuLyoqXG4gKiBSZXR1cm4g
d2hldGhlciBhIG5hdGl2ZSBrZXlwcmVzcyBldmVudCBpcyBhc3N1bWVkIHRvIGJlIGEgY29tbWFu
ZC5cbiAqIFRoaXMgaXMgcmVxdWlyZWQgYmVjYXVzZSBGaXJlZm94IGZpcmVzIGBrZXlwcmVzc2Ag
ZXZlbnRzIGZvciBrZXkgY29tbWFuZHNcbiAqIChjdXQsIGNvcHksIHNlbGVjdC1hbGwsIGV0Yy4p
IGV2ZW4gdGhvdWdoIG5vIGNoYXJhY3RlciBpcyBpbnNlcnRlZC5cbiAqL1xuZnVuY3Rpb24gaXNL
ZXlwcmVzc0NvbW1hbmQobmF0aXZlRXZlbnQpIHtcbiAgcmV0dXJuIChuYXRpdmVFdmVudC5jdHJs
S2V5IHx8IG5hdGl2ZUV2ZW50LmFsdEtleSB8fCBuYXRpdmVFdmVudC5tZXRhS2V5KSAmJlxuICAv
LyBjdHJsS2V5ICYmIGFsdEtleSBpcyBlcXVpdmFsZW50IHRvIEFsdEdyLCBhbmQgaXMgbm90IGEg
Y29tbWFuZC5cbiAgIShuYXRpdmVFdmVudC5jdHJsS2V5ICYmIG5hdGl2ZUV2ZW50LmFsdEtleSk7
XG59XG5cbi8qKlxuICogVHJhbnNsYXRlIG5hdGl2ZSB0b3AgbGV2ZWwgZXZlbnRzIGludG8gZXZl
bnQgdHlwZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZVxuICogQHJldHVy
biB7b2JqZWN0fVxuICovXG5mdW5jdGlvbiBnZXRDb21wb3NpdGlvbkV2ZW50VHlwZSh0b3BMZXZl
bFR5cGUpIHtcbiAgc3dpdGNoICh0b3BMZXZlbFR5cGUpIHtcbiAgICBjYXNlICd0b3BDb21wb3Np
dGlvblN0YXJ0JzpcbiAgICAgIHJldHVybiBldmVudFR5cGVzLmNvbXBvc2l0aW9uU3RhcnQ7XG4g
ICAgY2FzZSAndG9wQ29tcG9zaXRpb25FbmQnOlxuICAgICAgcmV0dXJuIGV2ZW50VHlwZXMuY29t
cG9zaXRpb25FbmQ7XG4gICAgY2FzZSAndG9wQ29tcG9zaXRpb25VcGRhdGUnOlxuICAgICAgcmV0
dXJuIGV2ZW50VHlwZXMuY29tcG9zaXRpb25VcGRhdGU7XG4gIH1cbn1cblxuLyoqXG4gKiBEb2Vz
IG91ciBmYWxsYmFjayBiZXN0LWd1ZXNzIG1vZGVsIHRoaW5rIHRoaXMgZXZlbnQgc2lnbmlmaWVz
IHRoYXRcbiAqIGNvbXBvc2l0aW9uIGhhcyBiZWd1bj9cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30g
dG9wTGV2ZWxUeXBlXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnRcbiAqIEByZXR1cm4g
e2Jvb2xlYW59XG4gKi9cbmZ1bmN0aW9uIGlzRmFsbGJhY2tDb21wb3NpdGlvblN0YXJ0KHRvcExl
dmVsVHlwZSwgbmF0aXZlRXZlbnQpIHtcbiAgcmV0dXJuIHRvcExldmVsVHlwZSA9PT0gJ3RvcEtl
eURvd24nICYmIG5hdGl2ZUV2ZW50LmtleUNvZGUgPT09IFNUQVJUX0tFWUNPREU7XG59XG5cbi8q
KlxuICogRG9lcyBvdXIgZmFsbGJhY2sgbW9kZSB0aGluayB0aGF0IHRoaXMgZXZlbnQgaXMgdGhl
IGVuZCBvZiBjb21wb3NpdGlvbj9cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdG9wTGV2ZWxUeXBl
XG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnRcbiAqIEByZXR1cm4ge2Jvb2xlYW59XG4g
Ki9cbmZ1bmN0aW9uIGlzRmFsbGJhY2tDb21wb3NpdGlvbkVuZCh0b3BMZXZlbFR5cGUsIG5hdGl2
ZUV2ZW50KSB7XG4gIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG4gICAgY2FzZSAndG9wS2V5VXAn
OlxuICAgICAgLy8gQ29tbWFuZCBrZXlzIGluc2VydCBvciBjbGVhciBJTUUgaW5wdXQuXG4gICAg
ICByZXR1cm4gRU5EX0tFWUNPREVTLmluZGV4T2YobmF0aXZlRXZlbnQua2V5Q29kZSkgIT09IC0x
O1xuICAgIGNhc2UgJ3RvcEtleURvd24nOlxuICAgICAgLy8gRXhwZWN0IElNRSBrZXlDb2RlIG9u
IGVhY2gga2V5ZG93bi4gSWYgd2UgZ2V0IGFueSBvdGhlclxuICAgICAgLy8gY29kZSB3ZSBtdXN0
IGhhdmUgZXhpdGVkIGVhcmxpZXIuXG4gICAgICByZXR1cm4gbmF0aXZlRXZlbnQua2V5Q29kZSAh
PT0gU1RBUlRfS0VZQ09ERTtcbiAgICBjYXNlICd0b3BLZXlQcmVzcyc6XG4gICAgY2FzZSAndG9w
TW91c2VEb3duJzpcbiAgICBjYXNlICd0b3BCbHVyJzpcbiAgICAgIC8vIEV2ZW50cyBhcmUgbm90
IHBvc3NpYmxlIHdpdGhvdXQgY2FuY2VsbGluZyBJTUUuXG4gICAgICByZXR1cm4gdHJ1ZTtcbiAg
ICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogR29vZ2xl
IElucHV0IFRvb2xzIHByb3ZpZGVzIGNvbXBvc2l0aW9uIGRhdGEgdmlhIGEgQ3VzdG9tRXZlbnQs
XG4gKiB3aXRoIHRoZSBgZGF0YWAgcHJvcGVydHkgcG9wdWxhdGVkIGluIHRoZSBgZGV0YWlsYCBv
YmplY3QuIElmIHRoaXNcbiAqIGlzIGF2YWlsYWJsZSBvbiB0aGUgZXZlbnQgb2JqZWN0LCB1c2Ug
aXQuIElmIG5vdCwgdGhpcyBpcyBhIHBsYWluXG4gKiBjb21wb3NpdGlvbiBldmVudCBhbmQgd2Ug
aGF2ZSBub3RoaW5nIHNwZWNpYWwgdG8gZXh0cmFjdC5cbiAqXG4gKiBAcGFyYW0ge29iamVjdH0g
bmF0aXZlRXZlbnRcbiAqIEByZXR1cm4gez9zdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIGdldERhdGFG
cm9tQ3VzdG9tRXZlbnQobmF0aXZlRXZlbnQpIHtcbiAgdmFyIGRldGFpbCA9IG5hdGl2ZUV2ZW50
LmRldGFpbDtcbiAgaWYgKHR5cGVvZiBkZXRhaWwgPT09ICdvYmplY3QnICYmICdkYXRhJyBpbiBk
ZXRhaWwpIHtcbiAgICByZXR1cm4gZGV0YWlsLmRhdGE7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59
XG5cbi8vIFRyYWNrIHRoZSBjdXJyZW50IElNRSBjb21wb3NpdGlvbiBmYWxsYmFjayBvYmplY3Qs
IGlmIGFueS5cbnZhciBjdXJyZW50Q29tcG9zaXRpb24gPSBudWxsO1xuXG4vKipcbiAqIEByZXR1
cm4gez9vYmplY3R9IEEgU3ludGhldGljQ29tcG9zaXRpb25FdmVudC5cbiAqL1xuZnVuY3Rpb24g
ZXh0cmFjdENvbXBvc2l0aW9uRXZlbnQodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVF
dmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgdmFyIGV2ZW50VHlwZTtcbiAgdmFyIGZhbGxi
YWNrRGF0YTtcblxuICBpZiAoY2FuVXNlQ29tcG9zaXRpb25FdmVudCkge1xuICAgIGV2ZW50VHlw
ZSA9IGdldENvbXBvc2l0aW9uRXZlbnRUeXBlKHRvcExldmVsVHlwZSk7XG4gIH0gZWxzZSBpZiAo
IWN1cnJlbnRDb21wb3NpdGlvbikge1xuICAgIGlmIChpc0ZhbGxiYWNrQ29tcG9zaXRpb25TdGFy
dCh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSkge1xuICAgICAgZXZlbnRUeXBlID0gZXZlbnRU
eXBlcy5jb21wb3NpdGlvblN0YXJ0O1xuICAgIH1cbiAgfSBlbHNlIGlmIChpc0ZhbGxiYWNrQ29t
cG9zaXRpb25FbmQodG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkpIHtcbiAgICBldmVudFR5cGUg
PSBldmVudFR5cGVzLmNvbXBvc2l0aW9uRW5kO1xuICB9XG5cbiAgaWYgKCFldmVudFR5cGUpIHtc
biAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGlmICh1c2VGYWxsYmFja0NvbXBvc2l0aW9uRGF0
YSkge1xuICAgIC8vIFRoZSBjdXJyZW50IGNvbXBvc2l0aW9uIGlzIHN0b3JlZCBzdGF0aWNhbGx5
IGFuZCBtdXN0IG5vdCBiZVxuICAgIC8vIG92ZXJ3cml0dGVuIHdoaWxlIGNvbXBvc2l0aW9uIGNv
bnRpbnVlcy5cbiAgICBpZiAoIWN1cnJlbnRDb21wb3NpdGlvbiAmJiBldmVudFR5cGUgPT09IGV2
ZW50VHlwZXMuY29tcG9zaXRpb25TdGFydCkge1xuICAgICAgY3VycmVudENvbXBvc2l0aW9uID0g
RmFsbGJhY2tDb21wb3NpdGlvblN0YXRlLmdldFBvb2xlZChuYXRpdmVFdmVudFRhcmdldCk7XG4g
ICAgfSBlbHNlIGlmIChldmVudFR5cGUgPT09IGV2ZW50VHlwZXMuY29tcG9zaXRpb25FbmQpIHtc
biAgICAgIGlmIChjdXJyZW50Q29tcG9zaXRpb24pIHtcbiAgICAgICAgZmFsbGJhY2tEYXRhID0g
Y3VycmVudENvbXBvc2l0aW9uLmdldERhdGEoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICB2
YXIgZXZlbnQgPSBTeW50aGV0aWNDb21wb3NpdGlvbkV2ZW50LmdldFBvb2xlZChldmVudFR5cGUs
IHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cbiAgaWYgKGZh
bGxiYWNrRGF0YSkge1xuICAgIC8vIEluamVjdCBkYXRhIGdlbmVyYXRlZCBmcm9tIGZhbGxiYWNr
IHBhdGggaW50byB0aGUgc3ludGhldGljIGV2ZW50LlxuICAgIC8vIFRoaXMgbWF0Y2hlcyB0aGUg
cHJvcGVydHkgb2YgbmF0aXZlIENvbXBvc2l0aW9uRXZlbnRJbnRlcmZhY2UuXG4gICAgZXZlbnQu
ZGF0YSA9IGZhbGxiYWNrRGF0YTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgY3VzdG9tRGF0YSA9IGdl
dERhdGFGcm9tQ3VzdG9tRXZlbnQobmF0aXZlRXZlbnQpO1xuICAgIGlmIChjdXN0b21EYXRhICE9
PSBudWxsKSB7XG4gICAgICBldmVudC5kYXRhID0gY3VzdG9tRGF0YTtcbiAgICB9XG4gIH1cblxu
ICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoZXZlbnQpO1xu
ICByZXR1cm4gZXZlbnQ7XG59XG5cbi8qKlxuICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlw
ZSBSZWNvcmQgZnJvbSBgRXZlbnRDb25zdGFudHNgLlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2
ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQHJldHVybiB7P3N0cmluZ30gVGhlIHN0
cmluZyBjb3JyZXNwb25kaW5nIHRvIHRoaXMgYGJlZm9yZUlucHV0YCBldmVudC5cbiAqL1xuZnVu
Y3Rpb24gZ2V0TmF0aXZlQmVmb3JlSW5wdXRDaGFycyh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50
KSB7XG4gIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG4gICAgY2FzZSAndG9wQ29tcG9zaXRpb25F
bmQnOlxuICAgICAgcmV0dXJuIGdldERhdGFGcm9tQ3VzdG9tRXZlbnQobmF0aXZlRXZlbnQpO1xu
ICAgIGNhc2UgJ3RvcEtleVByZXNzJzpcbiAgICAgIC8qKlxuICAgICAgICogSWYgbmF0aXZlIGB0
ZXh0SW5wdXRgIGV2ZW50cyBhcmUgYXZhaWxhYmxlLCBvdXIgZ29hbCBpcyB0byBtYWtlXG4gICAg
ICAgKiB1c2Ugb2YgdGhlbS4gSG93ZXZlciwgdGhlcmUgaXMgYSBzcGVjaWFsIGNhc2U6IHRoZSBz
cGFjZWJhciBrZXkuXG4gICAgICAgKiBJbiBXZWJraXQsIHByZXZlbnRpbmcgZGVmYXVsdCBvbiBh
IHNwYWNlYmFyIGB0ZXh0SW5wdXRgIGV2ZW50XG4gICAgICAgKiBjYW5jZWxzIGNoYXJhY3RlciBp
bnNlcnRpb24sIGJ1dCBpdCAqYWxzbyogY2F1c2VzIHRoZSBicm93c2VyXG4gICAgICAgKiB0byBm
YWxsIGJhY2sgdG8gaXRzIGRlZmF1bHQgc3BhY2ViYXIgYmVoYXZpb3Igb2Ygc2Nyb2xsaW5nIHRo
ZVxuICAgICAgICogcGFnZS5cbiAgICAgICAqXG4gICAgICAgKiBUcmFja2luZyBhdDpcbiAgICAg
ICAqIGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvY2hyb21pdW0vaXNzdWVzL2RldGFpbD9pZD0z
NTUxMDNcbiAgICAgICAqXG4gICAgICAgKiBUbyBhdm9pZCB0aGlzIGlzc3VlLCB1c2UgdGhlIGtl
eXByZXNzIGV2ZW50IGFzIGlmIG5vIGB0ZXh0SW5wdXRgXG4gICAgICAgKiBldmVudCBpcyBhdmFp
bGFibGUuXG4gICAgICAgKi9cbiAgICAgIHZhciB3aGljaCA9IG5hdGl2ZUV2ZW50LndoaWNoO1xu
ICAgICAgaWYgKHdoaWNoICE9PSBTUEFDRUJBUl9DT0RFKSB7XG4gICAgICAgIHJldHVybiBudWxs
O1xuICAgICAgfVxuXG4gICAgICBoYXNTcGFjZUtleXByZXNzID0gdHJ1ZTtcbiAgICAgIHJldHVy
biBTUEFDRUJBUl9DSEFSO1xuXG4gICAgY2FzZSAndG9wVGV4dElucHV0JzpcbiAgICAgIC8vIFJl
Y29yZCB0aGUgY2hhcmFjdGVycyB0byBiZSBhZGRlZCB0byB0aGUgRE9NLlxuICAgICAgdmFyIGNo
YXJzID0gbmF0aXZlRXZlbnQuZGF0YTtcblxuICAgICAgLy8gSWYgaXQncyBhIHNwYWNlYmFyIGNo
YXJhY3RlciwgYXNzdW1lIHRoYXQgd2UgaGF2ZSBhbHJlYWR5IGhhbmRsZWRcbiAgICAgIC8vIGl0
IGF0IHRoZSBrZXlwcmVzcyBsZXZlbCBhbmQgYmFpbCBpbW1lZGlhdGVseS4gQW5kcm9pZCBDaHJv
bWVcbiAgICAgIC8vIGRvZXNuJ3QgZ2l2ZSB1cyBrZXljb2Rlcywgc28gd2UgbmVlZCB0byBibGFj
a2xpc3QgaXQuXG4gICAgICBpZiAoY2hhcnMgPT09IFNQQUNFQkFSX0NIQVIgJiYgaGFzU3BhY2VL
ZXlwcmVzcykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJu
IGNoYXJzO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIC8vIEZvciBvdGhlciBuYXRpdmUgZXZlbnQg
dHlwZXMsIGRvIG5vdGhpbmcuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuXG4vKipcbiAq
IEZvciBicm93c2VycyB0aGF0IGRvIG5vdCBwcm92aWRlIHRoZSBgdGV4dElucHV0YCBldmVudCwg
ZXh0cmFjdCB0aGVcbiAqIGFwcHJvcHJpYXRlIHN0cmluZyB0byB1c2UgZm9yIFN5bnRoZXRpY0lu
cHV0RXZlbnQuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHRvcExldmVsVHlwZSBSZWNvcmQgZnJv
bSBgRXZlbnRDb25zdGFudHNgLlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2
ZSBicm93c2VyIGV2ZW50LlxuICogQHJldHVybiB7P3N0cmluZ30gVGhlIGZhbGxiYWNrIHN0cmlu
ZyBmb3IgdGhpcyBgYmVmb3JlSW5wdXRgIGV2ZW50LlxuICovXG5mdW5jdGlvbiBnZXRGYWxsYmFj
a0JlZm9yZUlucHV0Q2hhcnModG9wTGV2ZWxUeXBlLCBuYXRpdmVFdmVudCkge1xuICAvLyBJZiB3
ZSBhcmUgY3VycmVudGx5IGNvbXBvc2luZyAoSU1FKSBhbmQgdXNpbmcgYSBmYWxsYmFjayB0byBk
byBzbyxcbiAgLy8gdHJ5IHRvIGV4dHJhY3QgdGhlIGNvbXBvc2VkIGNoYXJhY3RlcnMgZnJvbSB0
aGUgZmFsbGJhY2sgb2JqZWN0LlxuICAvLyBJZiBjb21wb3NpdGlvbiBldmVudCBpcyBhdmFpbGFi
bGUsIHdlIGV4dHJhY3QgYSBzdHJpbmcgb25seSBhdFxuICAvLyBjb21wb3NpdGlvbmV2ZW50LCBv
dGhlcndpc2UgZXh0cmFjdCBpdCBhdCBmYWxsYmFjayBldmVudHMuXG4gIGlmIChjdXJyZW50Q29t
cG9zaXRpb24pIHtcbiAgICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wQ29tcG9zaXRpb25FbmQn
IHx8ICFjYW5Vc2VDb21wb3NpdGlvbkV2ZW50ICYmIGlzRmFsbGJhY2tDb21wb3NpdGlvbkVuZCh0
b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSkge1xuICAgICAgdmFyIGNoYXJzID0gY3VycmVudENv
bXBvc2l0aW9uLmdldERhdGEoKTtcbiAgICAgIEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZS5yZWxl
YXNlKGN1cnJlbnRDb21wb3NpdGlvbik7XG4gICAgICBjdXJyZW50Q29tcG9zaXRpb24gPSBudWxs
O1xuICAgICAgcmV0dXJuIGNoYXJzO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4g
IHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG4gICAgY2FzZSAndG9wUGFzdGUnOlxuICAgICAgLy8g
SWYgYSBwYXN0ZSBldmVudCBvY2N1cnMgYWZ0ZXIgYSBrZXlwcmVzcywgdGhyb3cgb3V0IHRoZSBp
bnB1dFxuICAgICAgLy8gY2hhcnMuIFBhc3RlIGV2ZW50cyBzaG91bGQgbm90IGxlYWQgdG8gQmVm
b3JlSW5wdXQgZXZlbnRzLlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2FzZSAndG9wS2V5UHJl
c3MnOlxuICAgICAgLyoqXG4gICAgICAgKiBBcyBvZiB2MjcsIEZpcmVmb3ggbWF5IGZpcmUga2V5
cHJlc3MgZXZlbnRzIGV2ZW4gd2hlbiBubyBjaGFyYWN0ZXJcbiAgICAgICAqIHdpbGwgYmUgaW5z
ZXJ0ZWQuIEEgZmV3IHBvc3NpYmlsaXRpZXM6XG4gICAgICAgKlxuICAgICAgICogLSBgd2hpY2hg
IGlzIGAwYC4gQXJyb3cga2V5cywgRXNjIGtleSwgZXRjLlxuICAgICAgICpcbiAgICAgICAqIC0g
YHdoaWNoYCBpcyB0aGUgcHJlc3NlZCBrZXkgY29kZSwgYnV0IG5vIGNoYXIgaXMgYXZhaWxhYmxl
LlxuICAgICAgICogICBFeDogJ0FsdEdyICsgZGAgaW4gUG9saXNoLiBUaGVyZSBpcyBubyBtb2Rp
ZmllZCBjaGFyYWN0ZXIgZm9yXG4gICAgICAgKiAgIHRoaXMga2V5IGNvbWJpbmF0aW9uIGFuZCBu
byBjaGFyYWN0ZXIgaXMgaW5zZXJ0ZWQgaW50byB0aGVcbiAgICAgICAqICAgZG9jdW1lbnQsIGJ1
dCBGRiBmaXJlcyB0aGUga2V5cHJlc3MgZm9yIGNoYXIgY29kZSBgMTAwYCBhbnl3YXkuXG4gICAg
ICAgKiAgIE5vIGBpbnB1dGAgZXZlbnQgd2lsbCBvY2N1ci5cbiAgICAgICAqXG4gICAgICAgKiAt
IGB3aGljaGAgaXMgdGhlIHByZXNzZWQga2V5IGNvZGUsIGJ1dCBhIGNvbW1hbmQgY29tYmluYXRp
b24gaXNcbiAgICAgICAqICAgYmVpbmcgdXNlZC4gRXg6IGBDbWQrQ2AuIE5vIGNoYXJhY3RlciBp
cyBpbnNlcnRlZCwgYW5kIG5vXG4gICAgICAgKiAgIGBpbnB1dGAgZXZlbnQgd2lsbCBvY2N1ci5c
biAgICAgICAqL1xuICAgICAgaWYgKG5hdGl2ZUV2ZW50LndoaWNoICYmICFpc0tleXByZXNzQ29t
bWFuZChuYXRpdmVFdmVudCkpIHtcbiAgICAgICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUo
bmF0aXZlRXZlbnQud2hpY2gpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2Fz
ZSAndG9wQ29tcG9zaXRpb25FbmQnOlxuICAgICAgcmV0dXJuIHVzZUZhbGxiYWNrQ29tcG9zaXRp
b25EYXRhID8gbnVsbCA6IG5hdGl2ZUV2ZW50LmRhdGE7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJl
dHVybiBudWxsO1xuICB9XG59XG5cbi8qKlxuICogRXh0cmFjdCBhIFN5bnRoZXRpY0lucHV0RXZl
bnQgZm9yIGBiZWZvcmVJbnB1dGAsIGJhc2VkIG9uIGVpdGhlciBuYXRpdmVcbiAqIGB0ZXh0SW5w
dXRgIG9yIGZhbGxiYWNrIGJlaGF2aW9yLlxuICpcbiAqIEByZXR1cm4gez9vYmplY3R9IEEgU3lu
dGhldGljSW5wdXRFdmVudC5cbiAqL1xuZnVuY3Rpb24gZXh0cmFjdEJlZm9yZUlucHV0RXZlbnQo
dG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQp
IHtcbiAgdmFyIGNoYXJzO1xuXG4gIGlmIChjYW5Vc2VUZXh0SW5wdXRFdmVudCkge1xuICAgIGNo
YXJzID0gZ2V0TmF0aXZlQmVmb3JlSW5wdXRDaGFycyh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50
KTtcbiAgfSBlbHNlIHtcbiAgICBjaGFycyA9IGdldEZhbGxiYWNrQmVmb3JlSW5wdXRDaGFycyh0
b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KTtcbiAgfVxuXG4gIC8vIElmIG5vIGNoYXJhY3RlcnMg
YXJlIGJlaW5nIGluc2VydGVkLCBubyBCZWZvcmVJbnB1dCBldmVudCBzaG91bGRcbiAgLy8gYmUg
ZmlyZWQuXG4gIGlmICghY2hhcnMpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZhciBl
dmVudCA9IFN5bnRoZXRpY0lucHV0RXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMuYmVmb3JlSW5w
dXQsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG5cbiAgZXZl
bnQuZGF0YSA9IGNoYXJzO1xuICBFdmVudFByb3BhZ2F0b3JzLmFjY3VtdWxhdGVUd29QaGFzZURp
c3BhdGNoZXMoZXZlbnQpO1xuICByZXR1cm4gZXZlbnQ7XG59XG5cbi8qKlxuICogQ3JlYXRlIGFu
IGBvbkJlZm9yZUlucHV0YCBldmVudCB0byBtYXRjaFxuICogaHR0cDovL3d3dy53My5vcmcvVFIv
MjAxMy9XRC1ET00tTGV2ZWwtMy1FdmVudHMtMjAxMzExMDUvI2V2ZW50cy1pbnB1dGV2ZW50cy5c
biAqXG4gKiBUaGlzIGV2ZW50IHBsdWdpbiBpcyBiYXNlZCBvbiB0aGUgbmF0aXZlIGB0ZXh0SW5w
dXRgIGV2ZW50XG4gKiBhdmFpbGFibGUgaW4gQ2hyb21lLCBTYWZhcmksIE9wZXJhLCBhbmQgSUUu
IFRoaXMgZXZlbnQgZmlyZXMgYWZ0ZXJcbiAqIGBvbktleVByZXNzYCBhbmQgYG9uQ29tcG9zaXRp
b25FbmRgLCBidXQgYmVmb3JlIGBvbklucHV0YC5cbiAqXG4gKiBgYmVmb3JlSW5wdXRgIGlzIHNw
ZWMnZCBidXQgbm90IGltcGxlbWVudGVkIGluIGFueSBicm93c2VycywgYW5kXG4gKiB0aGUgYGlu
cHV0YCBldmVudCBkb2VzIG5vdCBwcm92aWRlIGFueSB1c2VmdWwgaW5mb3JtYXRpb24gYWJvdXQg
d2hhdCBoYXNcbiAqIGFjdHVhbGx5IGJlZW4gYWRkZWQsIGNvbnRyYXJ5IHRvIHRoZSBzcGVjLiBU
aHVzLCBgdGV4dElucHV0YCBpcyB0aGUgYmVzdFxuICogYXZhaWxhYmxlIGV2ZW50IHRvIGlkZW50
aWZ5IHRoZSBjaGFyYWN0ZXJzIHRoYXQgaGF2ZSBhY3R1YWxseSBiZWVuIGluc2VydGVkXG4gKiBp
bnRvIHRoZSB0YXJnZXQgbm9kZS5cbiAqXG4gKiBUaGlzIHBsdWdpbiBpcyBhbHNvIHJlc3BvbnNp
YmxlIGZvciBlbWl0dGluZyBgY29tcG9zaXRpb25gIGV2ZW50cywgdGh1c1xuICogYWxsb3dpbmcg
dXMgdG8gc2hhcmUgY29tcG9zaXRpb24gZmFsbGJhY2sgY29kZSBmb3IgYm90aCBgYmVmb3JlSW5w
dXRgIGFuZFxuICogYGNvbXBvc2l0aW9uYCBldmVudCB0eXBlcy5cbiAqL1xudmFyIEJlZm9yZUlu
cHV0RXZlbnRQbHVnaW4gPSB7XG4gIGV2ZW50VHlwZXM6IGV2ZW50VHlwZXMsXG5cbiAgZXh0cmFj
dEV2ZW50czogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQs
IG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gICAgcmV0dXJuIFtleHRyYWN0Q29tcG9zaXRpb25FdmVu
dCh0b3BMZXZlbFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdl
dCksIGV4dHJhY3RCZWZvcmVJbnB1dEV2ZW50KHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0
aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KV07XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRz
ID0gQmVmb3JlSW5wdXRFdmVudFBsdWdpbjtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBX
RUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL0JlZm9yZUlucHV0RXZlbnRQbHVn
aW4uanNcbiAqKiBtb2R1bGUgaWQgPSAxMjZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIs
Ii8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRl
ciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4g
dGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3Jh
bnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUg
aW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBD
U1NQcm9wZXJ0eSA9IHJlcXVpcmUoJy4vQ1NTUHJvcGVydHknKTtcbnZhciBFeGVjdXRpb25FbnZp
cm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVudmlyb25tZW50Jyk7XG52YXIg
UmVhY3RJbnN0cnVtZW50YXRpb24gPSByZXF1aXJlKCcuL1JlYWN0SW5zdHJ1bWVudGF0aW9uJyk7
XG5cbnZhciBjYW1lbGl6ZVN0eWxlTmFtZSA9IHJlcXVpcmUoJ2ZianMvbGliL2NhbWVsaXplU3R5
bGVOYW1lJyk7XG52YXIgZGFuZ2Vyb3VzU3R5bGVWYWx1ZSA9IHJlcXVpcmUoJy4vZGFuZ2Vyb3Vz
U3R5bGVWYWx1ZScpO1xudmFyIGh5cGhlbmF0ZVN0eWxlTmFtZSA9IHJlcXVpcmUoJ2ZianMvbGli
L2h5cGhlbmF0ZVN0eWxlTmFtZScpO1xudmFyIG1lbW9pemVTdHJpbmdPbmx5ID0gcmVxdWlyZSgn
ZmJqcy9saWIvbWVtb2l6ZVN0cmluZ09ubHknKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJq
cy9saWIvd2FybmluZycpO1xuXG52YXIgcHJvY2Vzc1N0eWxlTmFtZSA9IG1lbW9pemVTdHJpbmdP
bmx5KGZ1bmN0aW9uIChzdHlsZU5hbWUpIHtcbiAgcmV0dXJuIGh5cGhlbmF0ZVN0eWxlTmFtZShz
dHlsZU5hbWUpO1xufSk7XG5cbnZhciBoYXNTaG9ydGhhbmRQcm9wZXJ0eUJ1ZyA9IGZhbHNlO1xu
dmFyIHN0eWxlRmxvYXRBY2Nlc3NvciA9ICdjc3NGbG9hdCc7XG5pZiAoRXhlY3V0aW9uRW52aXJv
bm1lbnQuY2FuVXNlRE9NKSB7XG4gIHZhciB0ZW1wU3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKS5zdHlsZTtcbiAgdHJ5IHtcbiAgICAvLyBJRTggdGhyb3dzIFwiSW52YWxpZCBh
cmd1bWVudC5cIiBpZiByZXNldHRpbmcgc2hvcnRoYW5kIHN0eWxlIHByb3BlcnRpZXMuXG4gICAg
dGVtcFN0eWxlLmZvbnQgPSAnJztcbiAgfSBjYXRjaCAoZSkge1xuICAgIGhhc1Nob3J0aGFuZFBy
b3BlcnR5QnVnID0gdHJ1ZTtcbiAgfVxuICAvLyBJRTggb25seSBzdXBwb3J0cyBhY2Nlc3Npbmcg
Y3NzRmxvYXQgKHN0YW5kYXJkKSBhcyBzdHlsZUZsb2F0XG4gIGlmIChkb2N1bWVudC5kb2N1bWVu
dEVsZW1lbnQuc3R5bGUuY3NzRmxvYXQgPT09IHVuZGVmaW5lZCkge1xuICAgIHN0eWxlRmxvYXRB
Y2Nlc3NvciA9ICdzdHlsZUZsb2F0JztcbiAgfVxufVxuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAvLyAnbXNUcmFuc2Zvcm0nIGlzIGNvcnJlY3QsIGJ1
dCB0aGUgb3RoZXIgcHJlZml4ZXMgc2hvdWxkIGJlIGNhcGl0YWxpemVkXG4gIHZhciBiYWRWZW5k
b3JlZFN0eWxlTmFtZVBhdHRlcm4gPSAvXig/OndlYmtpdHxtb3p8bylbQS1aXS87XG5cbiAgLy8g
c3R5bGUgdmFsdWVzIHNob3VsZG4ndCBjb250YWluIGEgc2VtaWNvbG9uXG4gIHZhciBiYWRTdHls
ZVZhbHVlV2l0aFNlbWljb2xvblBhdHRlcm4gPSAvO1xccyokLztcblxuICB2YXIgd2FybmVkU3R5
bGVOYW1lcyA9IHt9O1xuICB2YXIgd2FybmVkU3R5bGVWYWx1ZXMgPSB7fTtcbiAgdmFyIHdhcm5l
ZEZvck5hTlZhbHVlID0gZmFsc2U7XG5cbiAgdmFyIHdhcm5IeXBoZW5hdGVkU3R5bGVOYW1lID0g
ZnVuY3Rpb24gKG5hbWUsIG93bmVyKSB7XG4gICAgaWYgKHdhcm5lZFN0eWxlTmFtZXMuaGFzT3du
UHJvcGVydHkobmFtZSkgJiYgd2FybmVkU3R5bGVOYW1lc1tuYW1lXSkge1xuICAgICAgcmV0dXJu
O1xuICAgIH1cblxuICAgIHdhcm5lZFN0eWxlTmFtZXNbbmFtZV0gPSB0cnVlO1xuICAgIHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVW5zdXBw
b3J0ZWQgc3R5bGUgcHJvcGVydHkgJXMuIERpZCB5b3UgbWVhbiAlcz8lcycsIG5hbWUsIGNhbWVs
aXplU3R5bGVOYW1lKG5hbWUpLCBjaGVja1JlbmRlck1lc3NhZ2Uob3duZXIpKSA6IHZvaWQgMDtc
biAgfTtcblxuICB2YXIgd2FybkJhZFZlbmRvcmVkU3R5bGVOYW1lID0gZnVuY3Rpb24gKG5hbWUs
IG93bmVyKSB7XG4gICAgaWYgKHdhcm5lZFN0eWxlTmFtZXMuaGFzT3duUHJvcGVydHkobmFtZSkg
JiYgd2FybmVkU3R5bGVOYW1lc1tuYW1lXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAg
IHdhcm5lZFN0eWxlTmFtZXNbbmFtZV0gPSB0cnVlO1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVW5zdXBwb3J0ZWQgdmVuZG9yLXBy
ZWZpeGVkIHN0eWxlIHByb3BlcnR5ICVzLiBEaWQgeW91IG1lYW4gJXM/JXMnLCBuYW1lLCBuYW1l
LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgbmFtZS5zbGljZSgxKSwgY2hlY2tSZW5kZXJNZXNz
YWdlKG93bmVyKSkgOiB2b2lkIDA7XG4gIH07XG5cbiAgdmFyIHdhcm5TdHlsZVZhbHVlV2l0aFNl
bWljb2xvbiA9IGZ1bmN0aW9uIChuYW1lLCB2YWx1ZSwgb3duZXIpIHtcbiAgICBpZiAod2FybmVk
U3R5bGVWYWx1ZXMuaGFzT3duUHJvcGVydHkodmFsdWUpICYmIHdhcm5lZFN0eWxlVmFsdWVzW3Zh
bHVlXSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHdhcm5lZFN0eWxlVmFsdWVzW3Zh
bHVlXSA9IHRydWU7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IHdhcm5pbmcoZmFsc2UsIFwiU3R5bGUgcHJvcGVydHkgdmFsdWVzIHNob3VsZG4ndCBjb250YWlu
IGEgc2VtaWNvbG9uLiVzIFwiICsgJ1RyeSBcIiVzOiAlc1wiIGluc3RlYWQuJywgY2hlY2tSZW5k
ZXJNZXNzYWdlKG93bmVyKSwgbmFtZSwgdmFsdWUucmVwbGFjZShiYWRTdHlsZVZhbHVlV2l0aFNl
bWljb2xvblBhdHRlcm4sICcnKSkgOiB2b2lkIDA7XG4gIH07XG5cbiAgdmFyIHdhcm5TdHlsZVZh
bHVlSXNOYU4gPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIG93bmVyKSB7XG4gICAgaWYgKHdhcm5l
ZEZvck5hTlZhbHVlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgd2FybmVkRm9yTmFO
VmFsdWUgPSB0cnVlO1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
PyB3YXJuaW5nKGZhbHNlLCAnYE5hTmAgaXMgYW4gaW52YWxpZCB2YWx1ZSBmb3IgdGhlIGAlc2Ag
Y3NzIHN0eWxlIHByb3BlcnR5LiVzJywgbmFtZSwgY2hlY2tSZW5kZXJNZXNzYWdlKG93bmVyKSkg
OiB2b2lkIDA7XG4gIH07XG5cbiAgdmFyIGNoZWNrUmVuZGVyTWVzc2FnZSA9IGZ1bmN0aW9uIChv
d25lcikge1xuICAgIGlmIChvd25lcikge1xuICAgICAgdmFyIG5hbWUgPSBvd25lci5nZXROYW1l
KCk7XG4gICAgICBpZiAobmFtZSkge1xuICAgICAgICByZXR1cm4gJyBDaGVjayB0aGUgcmVuZGVy
IG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4g
Jyc7XG4gIH07XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lXG4gICAqIEBwYXJh
bSB7Kn0gdmFsdWVcbiAgICogQHBhcmFtIHtSZWFjdERPTUNvbXBvbmVudH0gY29tcG9uZW50XG4g
ICAqL1xuICB2YXIgd2FyblZhbGlkU3R5bGUgPSBmdW5jdGlvbiAobmFtZSwgdmFsdWUsIGNvbXBv
bmVudCkge1xuICAgIHZhciBvd25lcjtcbiAgICBpZiAoY29tcG9uZW50KSB7XG4gICAgICBvd25l
ciA9IGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuICAgIH1cbiAgICBpZiAobmFt
ZS5pbmRleE9mKCctJykgPiAtMSkge1xuICAgICAgd2Fybkh5cGhlbmF0ZWRTdHlsZU5hbWUobmFt
ZSwgb3duZXIpO1xuICAgIH0gZWxzZSBpZiAoYmFkVmVuZG9yZWRTdHlsZU5hbWVQYXR0ZXJuLnRl
c3QobmFtZSkpIHtcbiAgICAgIHdhcm5CYWRWZW5kb3JlZFN0eWxlTmFtZShuYW1lLCBvd25lcik7
XG4gICAgfSBlbHNlIGlmIChiYWRTdHlsZVZhbHVlV2l0aFNlbWljb2xvblBhdHRlcm4udGVzdCh2
YWx1ZSkpIHtcbiAgICAgIHdhcm5TdHlsZVZhbHVlV2l0aFNlbWljb2xvbihuYW1lLCB2YWx1ZSwg
b3duZXIpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIGlz
TmFOKHZhbHVlKSkge1xuICAgICAgd2FyblN0eWxlVmFsdWVJc05hTihuYW1lLCB2YWx1ZSwgb3du
ZXIpO1xuICAgIH1cbiAgfTtcbn1cblxuLyoqXG4gKiBPcGVyYXRpb25zIGZvciBkZWFsaW5nIHdp
dGggQ1NTIHByb3BlcnRpZXMuXG4gKi9cbnZhciBDU1NQcm9wZXJ0eU9wZXJhdGlvbnMgPSB7XG4g
IC8qKlxuICAgKiBTZXJpYWxpemVzIGEgbWFwcGluZyBvZiBzdHlsZSBwcm9wZXJ0aWVzIGZvciB1
c2UgYXMgaW5saW5lIHN0eWxlczpcbiAgICpcbiAgICogICA+IGNyZWF0ZU1hcmt1cEZvclN0eWxl
cyh7d2lkdGg6ICcyMDBweCcsIGhlaWdodDogMH0pXG4gICAqICAgXCJ3aWR0aDoyMDBweDtoZWln
aHQ6MDtcIlxuICAgKlxuICAgKiBVbmRlZmluZWQgdmFsdWVzIGFyZSBpZ25vcmVkIHNvIHRoYXQg
ZGVjbGFyYXRpdmUgcHJvZ3JhbW1pbmcgaXMgZWFzaWVyLlxuICAgKiBUaGUgcmVzdWx0IHNob3Vs
ZCBiZSBIVE1MLWVzY2FwZWQgYmVmb3JlIGluc2VydGlvbiBpbnRvIHRoZSBET00uXG4gICAqXG4g
ICAqIEBwYXJhbSB7b2JqZWN0fSBzdHlsZXNcbiAgICogQHBhcmFtIHtSZWFjdERPTUNvbXBvbmVu
dH0gY29tcG9uZW50XG4gICAqIEByZXR1cm4gez9zdHJpbmd9XG4gICAqL1xuICBjcmVhdGVNYXJr
dXBGb3JTdHlsZXM6IGZ1bmN0aW9uIChzdHlsZXMsIGNvbXBvbmVudCkge1xuICAgIHZhciBzZXJp
YWxpemVkID0gJyc7XG4gICAgZm9yICh2YXIgc3R5bGVOYW1lIGluIHN0eWxlcykge1xuICAgICAg
aWYgKCFzdHlsZXMuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSkge1xuICAgICAgICBjb250aW51
ZTtcbiAgICAgIH1cbiAgICAgIHZhciBpc0N1c3RvbVByb3BlcnR5ID0gc3R5bGVOYW1lLmluZGV4
T2YoJy0tJykgPT09IDA7XG4gICAgICB2YXIgc3R5bGVWYWx1ZSA9IHN0eWxlc1tzdHlsZU5hbWVd
O1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAg
ICAgICAgaWYgKCFpc0N1c3RvbVByb3BlcnR5KSB7XG4gICAgICAgICAgd2FyblZhbGlkU3R5bGUo
c3R5bGVOYW1lLCBzdHlsZVZhbHVlLCBjb21wb25lbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4g
ICAgICBpZiAoc3R5bGVWYWx1ZSAhPSBudWxsKSB7XG4gICAgICAgIHNlcmlhbGl6ZWQgKz0gcHJv
Y2Vzc1N0eWxlTmFtZShzdHlsZU5hbWUpICsgJzonO1xuICAgICAgICBzZXJpYWxpemVkICs9IGRh
bmdlcm91c1N0eWxlVmFsdWUoc3R5bGVOYW1lLCBzdHlsZVZhbHVlLCBjb21wb25lbnQsIGlzQ3Vz
dG9tUHJvcGVydHkpICsgJzsnO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gc2VyaWFsaXpl
ZCB8fCBudWxsO1xuICB9LFxuXG4gIC8qKlxuICAgKiBTZXRzIHRoZSB2YWx1ZSBmb3IgbXVsdGlw
bGUgc3R5bGVzIG9uIGEgbm9kZS4gIElmIGEgdmFsdWUgaXMgc3BlY2lmaWVkIGFzXG4gICAqICcn
IChlbXB0eSBzdHJpbmcpLCB0aGUgY29ycmVzcG9uZGluZyBzdHlsZSBwcm9wZXJ0eSB3aWxsIGJl
IHVuc2V0LlxuICAgKlxuICAgKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVcbiAgICogQHBhcmFt
IHtvYmplY3R9IHN0eWxlc1xuICAgKiBAcGFyYW0ge1JlYWN0RE9NQ29tcG9uZW50fSBjb21wb25l
bnRcbiAgICovXG4gIHNldFZhbHVlRm9yU3R5bGVzOiBmdW5jdGlvbiAobm9kZSwgc3R5bGVzLCBj
b21wb25lbnQpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
Jykge1xuICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uSG9zdE9wZXJhdGlv
bih7XG4gICAgICAgIGluc3RhbmNlSUQ6IGNvbXBvbmVudC5fZGVidWdJRCxcbiAgICAgICAgdHlw
ZTogJ3VwZGF0ZSBzdHlsZXMnLFxuICAgICAgICBwYXlsb2FkOiBzdHlsZXNcbiAgICAgIH0pO1xu
ICAgIH1cblxuICAgIHZhciBzdHlsZSA9IG5vZGUuc3R5bGU7XG4gICAgZm9yICh2YXIgc3R5bGVO
YW1lIGluIHN0eWxlcykge1xuICAgICAgaWYgKCFzdHlsZXMuaGFzT3duUHJvcGVydHkoc3R5bGVO
YW1lKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHZhciBpc0N1c3RvbVBy
b3BlcnR5ID0gc3R5bGVOYW1lLmluZGV4T2YoJy0tJykgPT09IDA7XG4gICAgICBpZiAocHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBpZiAoIWlzQ3VzdG9t
UHJvcGVydHkpIHtcbiAgICAgICAgICB3YXJuVmFsaWRTdHlsZShzdHlsZU5hbWUsIHN0eWxlc1tz
dHlsZU5hbWVdLCBjb21wb25lbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YXIgc3R5
bGVWYWx1ZSA9IGRhbmdlcm91c1N0eWxlVmFsdWUoc3R5bGVOYW1lLCBzdHlsZXNbc3R5bGVOYW1l
XSwgY29tcG9uZW50LCBpc0N1c3RvbVByb3BlcnR5KTtcbiAgICAgIGlmIChzdHlsZU5hbWUgPT09
ICdmbG9hdCcgfHwgc3R5bGVOYW1lID09PSAnY3NzRmxvYXQnKSB7XG4gICAgICAgIHN0eWxlTmFt
ZSA9IHN0eWxlRmxvYXRBY2Nlc3NvcjtcbiAgICAgIH1cbiAgICAgIGlmIChpc0N1c3RvbVByb3Bl
cnR5KSB7XG4gICAgICAgIHN0eWxlLnNldFByb3BlcnR5KHN0eWxlTmFtZSwgc3R5bGVWYWx1ZSk7
XG4gICAgICB9IGVsc2UgaWYgKHN0eWxlVmFsdWUpIHtcbiAgICAgICAgc3R5bGVbc3R5bGVOYW1l
XSA9IHN0eWxlVmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YXIgZXhwYW5zaW9uID0g
aGFzU2hvcnRoYW5kUHJvcGVydHlCdWcgJiYgQ1NTUHJvcGVydHkuc2hvcnRoYW5kUHJvcGVydHlF
eHBhbnNpb25zW3N0eWxlTmFtZV07XG4gICAgICAgIGlmIChleHBhbnNpb24pIHtcbiAgICAgICAg
ICAvLyBTaG9ydGhhbmQgcHJvcGVydHkgdGhhdCBJRTggd29uJ3QgbGlrZSB1bnNldHRpbmcsIHNv
IHVuc2V0IGVhY2hcbiAgICAgICAgICAvLyBjb21wb25lbnQgdG8gcGxhY2F0ZSBpdFxuICAgICAg
ICAgIGZvciAodmFyIGluZGl2aWR1YWxTdHlsZU5hbWUgaW4gZXhwYW5zaW9uKSB7XG4gICAgICAg
ICAgICBzdHlsZVtpbmRpdmlkdWFsU3R5bGVOYW1lXSA9ICcnO1xuICAgICAgICAgIH1cbiAgICAg
ICAgfSBlbHNlIHtcbiAgICAgICAgICBzdHlsZVtzdHlsZU5hbWVdID0gJyc7XG4gICAgICAgIH1c
biAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gQ1NTUHJvcGVydHlP
cGVyYXRpb25zO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4g
KiogLi9+L3JlYWN0LWRvbS9saWIvQ1NTUHJvcGVydHlPcGVyYXRpb25zLmpzXG4gKiogbW9kdWxl
IGlkID0gMTI3XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdo
dCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxu
ICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBs
aWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9y
eSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQg
cmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVj
dG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXZlbnRQbHVnaW5IdWIgPSBy
ZXF1aXJlKCcuL0V2ZW50UGx1Z2luSHViJyk7XG52YXIgRXZlbnRQcm9wYWdhdG9ycyA9IHJlcXVp
cmUoJy4vRXZlbnRQcm9wYWdhdG9ycycpO1xudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVx
dWlyZSgnZmJqcy9saWIvRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcbnZhciBSZWFjdERPTUNvbXBv
bmVudFRyZWUgPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpO1xudmFyIFJlYWN0
VXBkYXRlcyA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVzJyk7XG52YXIgU3ludGhldGljRXZlbnQg
PSByZXF1aXJlKCcuL1N5bnRoZXRpY0V2ZW50Jyk7XG5cbnZhciBpbnB1dFZhbHVlVHJhY2tpbmcg
PSByZXF1aXJlKCcuL2lucHV0VmFsdWVUcmFja2luZycpO1xudmFyIGdldEV2ZW50VGFyZ2V0ID0g
cmVxdWlyZSgnLi9nZXRFdmVudFRhcmdldCcpO1xudmFyIGlzRXZlbnRTdXBwb3J0ZWQgPSByZXF1
aXJlKCcuL2lzRXZlbnRTdXBwb3J0ZWQnKTtcbnZhciBpc1RleHRJbnB1dEVsZW1lbnQgPSByZXF1
aXJlKCcuL2lzVGV4dElucHV0RWxlbWVudCcpO1xuXG52YXIgZXZlbnRUeXBlcyA9IHtcbiAgY2hh
bmdlOiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1YmJsZWQ6ICdv
bkNoYW5nZScsXG4gICAgICBjYXB0dXJlZDogJ29uQ2hhbmdlQ2FwdHVyZSdcbiAgICB9LFxuICAg
IGRlcGVuZGVuY2llczogWyd0b3BCbHVyJywgJ3RvcENoYW5nZScsICd0b3BDbGljaycsICd0b3BG
b2N1cycsICd0b3BJbnB1dCcsICd0b3BLZXlEb3duJywgJ3RvcEtleVVwJywgJ3RvcFNlbGVjdGlv
bkNoYW5nZSddXG4gIH1cbn07XG5cbmZ1bmN0aW9uIGNyZWF0ZUFuZEFjY3VtdWxhdGVDaGFuZ2VF
dmVudChpbnN0LCBuYXRpdmVFdmVudCwgdGFyZ2V0KSB7XG4gIHZhciBldmVudCA9IFN5bnRoZXRp
Y0V2ZW50LmdldFBvb2xlZChldmVudFR5cGVzLmNoYW5nZSwgaW5zdCwgbmF0aXZlRXZlbnQsIHRh
cmdldCk7XG4gIGV2ZW50LnR5cGUgPSAnY2hhbmdlJztcbiAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1
bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKGV2ZW50KTtcbiAgcmV0dXJuIGV2ZW50O1xufVxuLyoq
XG4gKiBGb3IgSUUgc2hpbXNcbiAqL1xudmFyIGFjdGl2ZUVsZW1lbnQgPSBudWxsO1xudmFyIGFj
dGl2ZUVsZW1lbnRJbnN0ID0gbnVsbDtcblxuLyoqXG4gKiBTRUNUSU9OOiBoYW5kbGUgYGNoYW5n
ZWAgZXZlbnRcbiAqL1xuZnVuY3Rpb24gc2hvdWxkVXNlQ2hhbmdlRXZlbnQoZWxlbSkge1xuICB2
YXIgbm9kZU5hbWUgPSBlbGVtLm5vZGVOYW1lICYmIGVsZW0ubm9kZU5hbWUudG9Mb3dlckNhc2Uo
KTtcbiAgcmV0dXJuIG5vZGVOYW1lID09PSAnc2VsZWN0JyB8fCBub2RlTmFtZSA9PT0gJ2lucHV0
JyAmJiBlbGVtLnR5cGUgPT09ICdmaWxlJztcbn1cblxudmFyIGRvZXNDaGFuZ2VFdmVudEJ1YmJs
ZSA9IGZhbHNlO1xuaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkge1xuICAvLyBT
ZWUgYGhhbmRsZUNoYW5nZWAgY29tbWVudCBiZWxvd1xuICBkb2VzQ2hhbmdlRXZlbnRCdWJibGUg
PSBpc0V2ZW50U3VwcG9ydGVkKCdjaGFuZ2UnKSAmJiAoIWRvY3VtZW50LmRvY3VtZW50TW9kZSB8
fCBkb2N1bWVudC5kb2N1bWVudE1vZGUgPiA4KTtcbn1cblxuZnVuY3Rpb24gbWFudWFsRGlzcGF0
Y2hDaGFuZ2VFdmVudChuYXRpdmVFdmVudCkge1xuICB2YXIgZXZlbnQgPSBjcmVhdGVBbmRBY2N1
bXVsYXRlQ2hhbmdlRXZlbnQoYWN0aXZlRWxlbWVudEluc3QsIG5hdGl2ZUV2ZW50LCBnZXRFdmVu
dFRhcmdldChuYXRpdmVFdmVudCkpO1xuXG4gIC8vIElmIGNoYW5nZSBhbmQgcHJvcGVydHljaGFu
Z2UgYnViYmxlZCwgd2UnZCBqdXN0IGJpbmQgdG8gaXQgbGlrZSBhbGwgdGhlXG4gIC8vIG90aGVy
IGV2ZW50cyBhbmQgaGF2ZSBpdCBnbyB0aHJvdWdoIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci4g
U2luY2UgaXRcbiAgLy8gZG9lc24ndCwgd2UgbWFudWFsbHkgbGlzdGVuIGZvciB0aGUgZXZlbnRz
IGFuZCBzbyB3ZSBoYXZlIHRvIGVucXVldWUgYW5kXG4gIC8vIHByb2Nlc3MgdGhlIGFic3RyYWN0
IGV2ZW50IG1hbnVhbGx5LlxuICAvL1xuICAvLyBCYXRjaGluZyBpcyBuZWNlc3NhcnkgaGVyZSBp
biBvcmRlciB0byBlbnN1cmUgdGhhdCBhbGwgZXZlbnQgaGFuZGxlcnMgcnVuXG4gIC8vIGJlZm9y
ZSB0aGUgbmV4dCByZXJlbmRlciAoaW5jbHVkaW5nIGV2ZW50IGhhbmRsZXJzIGF0dGFjaGVkIHRv
IGFuY2VzdG9yXG4gIC8vIGVsZW1lbnRzIGluc3RlYWQgb2YgZGlyZWN0bHkgb24gdGhlIGlucHV0
KS4gV2l0aG91dCB0aGlzLCBjb250cm9sbGVkXG4gIC8vIGNvbXBvbmVudHMgZG9uJ3Qgd29yayBw
cm9wZXJseSBpbiBjb25qdW5jdGlvbiB3aXRoIGV2ZW50IGJ1YmJsaW5nIGJlY2F1c2VcbiAgLy8g
dGhlIGNvbXBvbmVudCBpcyByZXJlbmRlcmVkIGFuZCB0aGUgdmFsdWUgcmV2ZXJ0ZWQgYmVmb3Jl
IGFsbCB0aGUgZXZlbnRcbiAgLy8gaGFuZGxlcnMgY2FuIHJ1bi4gU2VlIGh0dHBzOi8vZ2l0aHVi
LmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzA4LlxuICBSZWFjdFVwZGF0ZXMuYmF0Y2hlZFVw
ZGF0ZXMocnVuRXZlbnRJbkJhdGNoLCBldmVudCk7XG59XG5cbmZ1bmN0aW9uIHJ1bkV2ZW50SW5C
YXRjaChldmVudCkge1xuICBFdmVudFBsdWdpbkh1Yi5lbnF1ZXVlRXZlbnRzKGV2ZW50KTtcbiAg
RXZlbnRQbHVnaW5IdWIucHJvY2Vzc0V2ZW50UXVldWUoZmFsc2UpO1xufVxuXG5mdW5jdGlvbiBz
dGFydFdhdGNoaW5nRm9yQ2hhbmdlRXZlbnRJRTgodGFyZ2V0LCB0YXJnZXRJbnN0KSB7XG4gIGFj
dGl2ZUVsZW1lbnQgPSB0YXJnZXQ7XG4gIGFjdGl2ZUVsZW1lbnRJbnN0ID0gdGFyZ2V0SW5zdDtc
biAgYWN0aXZlRWxlbWVudC5hdHRhY2hFdmVudCgnb25jaGFuZ2UnLCBtYW51YWxEaXNwYXRjaENo
YW5nZUV2ZW50KTtcbn1cblxuZnVuY3Rpb24gc3RvcFdhdGNoaW5nRm9yQ2hhbmdlRXZlbnRJRTgo
KSB7XG4gIGlmICghYWN0aXZlRWxlbWVudCkge1xuICAgIHJldHVybjtcbiAgfVxuICBhY3RpdmVF
bGVtZW50LmRldGFjaEV2ZW50KCdvbmNoYW5nZScsIG1hbnVhbERpc3BhdGNoQ2hhbmdlRXZlbnQp
O1xuICBhY3RpdmVFbGVtZW50ID0gbnVsbDtcbiAgYWN0aXZlRWxlbWVudEluc3QgPSBudWxsO1xu
fVxuXG5mdW5jdGlvbiBnZXRJbnN0SWZWYWx1ZUNoYW5nZWQodGFyZ2V0SW5zdCwgbmF0aXZlRXZl
bnQpIHtcbiAgdmFyIHVwZGF0ZWQgPSBpbnB1dFZhbHVlVHJhY2tpbmcudXBkYXRlVmFsdWVJZkNo
YW5nZWQodGFyZ2V0SW5zdCk7XG4gIHZhciBzaW11bGF0ZWQgPSBuYXRpdmVFdmVudC5zaW11bGF0
ZWQgPT09IHRydWUgJiYgQ2hhbmdlRXZlbnRQbHVnaW4uX2FsbG93U2ltdWxhdGVkUGFzc1Rocm91
Z2g7XG5cbiAgaWYgKHVwZGF0ZWQgfHwgc2ltdWxhdGVkKSB7XG4gICAgcmV0dXJuIHRhcmdldElu
c3Q7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0VGFyZ2V0SW5zdEZvckNoYW5nZUV2ZW50KHRvcExl
dmVsVHlwZSwgdGFyZ2V0SW5zdCkge1xuICBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wQ2hhbmdl
Jykge1xuICAgIHJldHVybiB0YXJnZXRJbnN0O1xuICB9XG59XG5cbmZ1bmN0aW9uIGhhbmRsZUV2
ZW50c0ZvckNoYW5nZUV2ZW50SUU4KHRvcExldmVsVHlwZSwgdGFyZ2V0LCB0YXJnZXRJbnN0KSB7
XG4gIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BGb2N1cycpIHtcbiAgICAvLyBzdG9wV2F0Y2hp
bmcoKSBzaG91bGQgYmUgYSBub29wIGhlcmUgYnV0IHdlIGNhbGwgaXQganVzdCBpbiBjYXNlIHdl
XG4gICAgLy8gbWlzc2VkIGEgYmx1ciBldmVudCBzb21laG93LlxuICAgIHN0b3BXYXRjaGluZ0Zv
ckNoYW5nZUV2ZW50SUU4KCk7XG4gICAgc3RhcnRXYXRjaGluZ0ZvckNoYW5nZUV2ZW50SUU4KHRh
cmdldCwgdGFyZ2V0SW5zdCk7XG4gIH0gZWxzZSBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wQmx1
cicpIHtcbiAgICBzdG9wV2F0Y2hpbmdGb3JDaGFuZ2VFdmVudElFOCgpO1xuICB9XG59XG5cbi8q
KlxuICogU0VDVElPTjogaGFuZGxlIGBpbnB1dGAgZXZlbnRcbiAqL1xudmFyIGlzSW5wdXRFdmVu
dFN1cHBvcnRlZCA9IGZhbHNlO1xuaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSkg
e1xuICAvLyBJRTkgY2xhaW1zIHRvIHN1cHBvcnQgdGhlIGlucHV0IGV2ZW50IGJ1dCBmYWlscyB0
byB0cmlnZ2VyIGl0IHdoZW5cbiAgLy8gZGVsZXRpbmcgdGV4dCwgc28gd2UgaWdub3JlIGl0cyBp
bnB1dCBldmVudHMuXG5cbiAgaXNJbnB1dEV2ZW50U3VwcG9ydGVkID0gaXNFdmVudFN1cHBvcnRl
ZCgnaW5wdXQnKSAmJiAoISgnZG9jdW1lbnRNb2RlJyBpbiBkb2N1bWVudCkgfHwgZG9jdW1lbnQu
ZG9jdW1lbnRNb2RlID4gOSk7XG59XG5cbi8qKlxuICogKEZvciBJRSA8PTkpIFN0YXJ0cyB0cmFj
a2luZyBwcm9wZXJ0eWNoYW5nZSBldmVudHMgb24gdGhlIHBhc3NlZC1pbiBlbGVtZW50XG4gKiBh
bmQgb3ZlcnJpZGUgdGhlIHZhbHVlIHByb3BlcnR5IHNvIHRoYXQgd2UgY2FuIGRpc3Rpbmd1aXNo
IHVzZXIgZXZlbnRzIGZyb21cbiAqIHZhbHVlIGNoYW5nZXMgaW4gSlMuXG4gKi9cbmZ1bmN0aW9u
IHN0YXJ0V2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSh0YXJnZXQsIHRhcmdldEluc3QpIHtcbiAgYWN0
aXZlRWxlbWVudCA9IHRhcmdldDtcbiAgYWN0aXZlRWxlbWVudEluc3QgPSB0YXJnZXRJbnN0O1xu
ICBhY3RpdmVFbGVtZW50LmF0dGFjaEV2ZW50KCdvbnByb3BlcnR5Y2hhbmdlJywgaGFuZGxlUHJv
cGVydHlDaGFuZ2UpO1xufVxuXG4vKipcbiAqIChGb3IgSUUgPD05KSBSZW1vdmVzIHRoZSBldmVu
dCBsaXN0ZW5lcnMgZnJvbSB0aGUgY3VycmVudGx5LXRyYWNrZWQgZWxlbWVudCxcbiAqIGlmIGFu
eSBleGlzdHMuXG4gKi9cbmZ1bmN0aW9uIHN0b3BXYXRjaGluZ0ZvclZhbHVlQ2hhbmdlKCkge1xu
ICBpZiAoIWFjdGl2ZUVsZW1lbnQpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgYWN0aXZlRWxlbWVu
dC5kZXRhY2hFdmVudCgnb25wcm9wZXJ0eWNoYW5nZScsIGhhbmRsZVByb3BlcnR5Q2hhbmdlKTtc
blxuICBhY3RpdmVFbGVtZW50ID0gbnVsbDtcbiAgYWN0aXZlRWxlbWVudEluc3QgPSBudWxsO1xu
fVxuXG4vKipcbiAqIChGb3IgSUUgPD05KSBIYW5kbGVzIGEgcHJvcGVydHljaGFuZ2UgZXZlbnQs
IHNlbmRpbmcgYSBgY2hhbmdlYCBldmVudCBpZlxuICogdGhlIHZhbHVlIG9mIHRoZSBhY3RpdmUg
ZWxlbWVudCBoYXMgY2hhbmdlZC5cbiAqL1xuZnVuY3Rpb24gaGFuZGxlUHJvcGVydHlDaGFuZ2Uo
bmF0aXZlRXZlbnQpIHtcbiAgaWYgKG5hdGl2ZUV2ZW50LnByb3BlcnR5TmFtZSAhPT0gJ3ZhbHVl
Jykge1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoZ2V0SW5zdElmVmFsdWVDaGFuZ2VkKGFjdGl2
ZUVsZW1lbnRJbnN0LCBuYXRpdmVFdmVudCkpIHtcbiAgICBtYW51YWxEaXNwYXRjaENoYW5nZUV2
ZW50KG5hdGl2ZUV2ZW50KTtcbiAgfVxufVxuXG5mdW5jdGlvbiBoYW5kbGVFdmVudHNGb3JJbnB1
dEV2ZW50UG9seWZpbGwodG9wTGV2ZWxUeXBlLCB0YXJnZXQsIHRhcmdldEluc3QpIHtcbiAgaWYg
KHRvcExldmVsVHlwZSA9PT0gJ3RvcEZvY3VzJykge1xuICAgIC8vIEluIElFOCwgd2UgY2FuIGNh
cHR1cmUgYWxtb3N0IGFsbCAudmFsdWUgY2hhbmdlcyBieSBhZGRpbmcgYVxuICAgIC8vIHByb3Bl
cnR5Y2hhbmdlIGhhbmRsZXIgYW5kIGxvb2tpbmcgZm9yIGV2ZW50cyB3aXRoIHByb3BlcnR5TmFt
ZVxuICAgIC8vIGVxdWFsIHRvICd2YWx1ZSdcbiAgICAvLyBJbiBJRTksIHByb3BlcnR5Y2hhbmdl
IGZpcmVzIGZvciBtb3N0IGlucHV0IGV2ZW50cyBidXQgaXMgYnVnZ3kgYW5kXG4gICAgLy8gZG9l
c24ndCBmaXJlIHdoZW4gdGV4dCBpcyBkZWxldGVkLCBidXQgY29udmVuaWVudGx5LCBzZWxlY3Rp
b25jaGFuZ2VcbiAgICAvLyBhcHBlYXJzIHRvIGZpcmUgaW4gYWxsIG9mIHRoZSByZW1haW5pbmcg
Y2FzZXMgc28gd2UgY2F0Y2ggdGhvc2UgYW5kXG4gICAgLy8gZm9yd2FyZCB0aGUgZXZlbnQgaWYg
dGhlIHZhbHVlIGhhcyBjaGFuZ2VkXG4gICAgLy8gSW4gZWl0aGVyIGNhc2UsIHdlIGRvbid0IHdh
bnQgdG8gY2FsbCB0aGUgZXZlbnQgaGFuZGxlciBpZiB0aGUgdmFsdWVcbiAgICAvLyBpcyBjaGFu
Z2VkIGZyb20gSlMgc28gd2UgcmVkZWZpbmUgYSBzZXR0ZXIgZm9yIGAudmFsdWVgIHRoYXQgdXBk
YXRlc1xuICAgIC8vIG91ciBhY3RpdmVFbGVtZW50VmFsdWUgdmFyaWFibGUsIGFsbG93aW5nIHVz
IHRvIGlnbm9yZSB0aG9zZSBjaGFuZ2VzXG4gICAgLy9cbiAgICAvLyBzdG9wV2F0Y2hpbmcoKSBz
aG91bGQgYmUgYSBub29wIGhlcmUgYnV0IHdlIGNhbGwgaXQganVzdCBpbiBjYXNlIHdlXG4gICAg
Ly8gbWlzc2VkIGEgYmx1ciBldmVudCBzb21laG93LlxuICAgIHN0b3BXYXRjaGluZ0ZvclZhbHVl
Q2hhbmdlKCk7XG4gICAgc3RhcnRXYXRjaGluZ0ZvclZhbHVlQ2hhbmdlKHRhcmdldCwgdGFyZ2V0
SW5zdCk7XG4gIH0gZWxzZSBpZiAodG9wTGV2ZWxUeXBlID09PSAndG9wQmx1cicpIHtcbiAgICBz
dG9wV2F0Y2hpbmdGb3JWYWx1ZUNoYW5nZSgpO1xuICB9XG59XG5cbi8vIEZvciBJRTggYW5kIElF
OS5cbmZ1bmN0aW9uIGdldFRhcmdldEluc3RGb3JJbnB1dEV2ZW50UG9seWZpbGwodG9wTGV2ZWxU
eXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCkge1xuICBpZiAodG9wTGV2ZWxUeXBlID09PSAn
dG9wU2VsZWN0aW9uQ2hhbmdlJyB8fCB0b3BMZXZlbFR5cGUgPT09ICd0b3BLZXlVcCcgfHwgdG9w
TGV2ZWxUeXBlID09PSAndG9wS2V5RG93bicpIHtcbiAgICAvLyBPbiB0aGUgc2VsZWN0aW9uY2hh
bmdlIGV2ZW50LCB0aGUgdGFyZ2V0IGlzIGp1c3QgZG9jdW1lbnQgd2hpY2ggaXNuJ3RcbiAgICAv
LyBoZWxwZnVsIGZvciB1cyBzbyBqdXN0IGNoZWNrIGFjdGl2ZUVsZW1lbnQgaW5zdGVhZC5cbiAg
ICAvL1xuICAgIC8vIDk5JSBvZiB0aGUgdGltZSwga2V5ZG93biBhbmQga2V5dXAgYXJlbid0IG5l
Y2Vzc2FyeS4gSUU4IGZhaWxzIHRvIGZpcmVcbiAgICAvLyBwcm9wZXJ0eWNoYW5nZSBvbiB0aGUg
Zmlyc3QgaW5wdXQgZXZlbnQgYWZ0ZXIgc2V0dGluZyBgdmFsdWVgIGZyb20gYVxuICAgIC8vIHNj
cmlwdCBhbmQgZmlyZXMgb25seSBrZXlkb3duLCBrZXlwcmVzcywga2V5dXAuIENhdGNoaW5nIGtl
eXVwIHVzdWFsbHlcbiAgICAvLyBnZXRzIGl0IGFuZCBjYXRjaGluZyBrZXlkb3duIGxldHMgdXMg
ZmlyZSBhbiBldmVudCBmb3IgdGhlIGZpcnN0XG4gICAgLy8ga2V5c3Ryb2tlIGlmIHVzZXIgZG9l
cyBhIGtleSByZXBlYXQgKGl0J2xsIGJlIGEgbGl0dGxlIGRlbGF5ZWQ6IHJpZ2h0XG4gICAgLy8g
YmVmb3JlIHRoZSBzZWNvbmQga2V5c3Ryb2tlKS4gT3RoZXIgaW5wdXQgbWV0aG9kcyAoZS5nLiwg
cGFzdGUpIHNlZW0gdG9cbiAgICAvLyBmaXJlIHNlbGVjdGlvbmNoYW5nZSBub3JtYWxseS5cbiAg
ICByZXR1cm4gZ2V0SW5zdElmVmFsdWVDaGFuZ2VkKGFjdGl2ZUVsZW1lbnRJbnN0LCBuYXRpdmVF
dmVudCk7XG4gIH1cbn1cblxuLyoqXG4gKiBTRUNUSU9OOiBoYW5kbGUgYGNsaWNrYCBldmVudFxu
ICovXG5mdW5jdGlvbiBzaG91bGRVc2VDbGlja0V2ZW50KGVsZW0pIHtcbiAgLy8gVXNlIHRoZSBg
Y2xpY2tgIGV2ZW50IHRvIGRldGVjdCBjaGFuZ2VzIHRvIGNoZWNrYm94IGFuZCByYWRpbyBpbnB1
dHMuXG4gIC8vIFRoaXMgYXBwcm9hY2ggd29ya3MgYWNyb3NzIGFsbCBicm93c2Vycywgd2hlcmVh
cyBgY2hhbmdlYCBkb2VzIG5vdCBmaXJlXG4gIC8vIHVudGlsIGBibHVyYCBpbiBJRTguXG4gIHZh
ciBub2RlTmFtZSA9IGVsZW0ubm9kZU5hbWU7XG4gIHJldHVybiBub2RlTmFtZSAmJiBub2RlTmFt
ZS50b0xvd2VyQ2FzZSgpID09PSAnaW5wdXQnICYmIChlbGVtLnR5cGUgPT09ICdjaGVja2JveCcg
fHwgZWxlbS50eXBlID09PSAncmFkaW8nKTtcbn1cblxuZnVuY3Rpb24gZ2V0VGFyZ2V0SW5zdEZv
ckNsaWNrRXZlbnQodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCkge1xuICBp
ZiAodG9wTGV2ZWxUeXBlID09PSAndG9wQ2xpY2snKSB7XG4gICAgcmV0dXJuIGdldEluc3RJZlZh
bHVlQ2hhbmdlZCh0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCk7XG4gIH1cbn1cblxuZnVuY3Rpb24g
Z2V0VGFyZ2V0SW5zdEZvcklucHV0T3JDaGFuZ2VFdmVudCh0b3BMZXZlbFR5cGUsIHRhcmdldElu
c3QsIG5hdGl2ZUV2ZW50KSB7XG4gIGlmICh0b3BMZXZlbFR5cGUgPT09ICd0b3BJbnB1dCcgfHwg
dG9wTGV2ZWxUeXBlID09PSAndG9wQ2hhbmdlJykge1xuICAgIHJldHVybiBnZXRJbnN0SWZWYWx1
ZUNoYW5nZWQodGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGhh
bmRsZUNvbnRyb2xsZWRJbnB1dEJsdXIoaW5zdCwgbm9kZSkge1xuICAvLyBUT0RPOiBJbiBJRSwg
aW5zdCBpcyBvY2Nhc2lvbmFsbHkgbnVsbC4gV2h5P1xuICBpZiAoaW5zdCA9PSBudWxsKSB7XG4g
ICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gRmliZXIgYW5kIFJlYWN0RE9NIGtlZXAgd3JhcHBlciBz
dGF0ZSBpbiBzZXBhcmF0ZSBwbGFjZXNcbiAgdmFyIHN0YXRlID0gaW5zdC5fd3JhcHBlclN0YXRl
IHx8IG5vZGUuX3dyYXBwZXJTdGF0ZTtcblxuICBpZiAoIXN0YXRlIHx8ICFzdGF0ZS5jb250cm9s
bGVkIHx8IG5vZGUudHlwZSAhPT0gJ251bWJlcicpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICAv
LyBJZiBjb250cm9sbGVkLCBhc3NpZ24gdGhlIHZhbHVlIGF0dHJpYnV0ZSB0byB0aGUgY3VycmVu
dCB2YWx1ZSBvbiBibHVyXG4gIHZhciB2YWx1ZSA9ICcnICsgbm9kZS52YWx1ZTtcbiAgaWYgKG5v
ZGUuZ2V0QXR0cmlidXRlKCd2YWx1ZScpICE9PSB2YWx1ZSkge1xuICAgIG5vZGUuc2V0QXR0cmli
dXRlKCd2YWx1ZScsIHZhbHVlKTtcbiAgfVxufVxuXG4vKipcbiAqIFRoaXMgcGx1Z2luIGNyZWF0
ZXMgYW4gYG9uQ2hhbmdlYCBldmVudCB0aGF0IG5vcm1hbGl6ZXMgY2hhbmdlIGV2ZW50c1xuICog
YWNyb3NzIGZvcm0gZWxlbWVudHMuIFRoaXMgZXZlbnQgZmlyZXMgYXQgYSB0aW1lIHdoZW4gaXQn
cyBwb3NzaWJsZSB0b1xuICogY2hhbmdlIHRoZSBlbGVtZW50J3MgdmFsdWUgd2l0aG91dCBzZWVp
bmcgYSBmbGlja2VyLlxuICpcbiAqIFN1cHBvcnRlZCBlbGVtZW50cyBhcmU6XG4gKiAtIGlucHV0
IChzZWUgYGlzVGV4dElucHV0RWxlbWVudGApXG4gKiAtIHRleHRhcmVhXG4gKiAtIHNlbGVjdFxu
ICovXG52YXIgQ2hhbmdlRXZlbnRQbHVnaW4gPSB7XG4gIGV2ZW50VHlwZXM6IGV2ZW50VHlwZXMs
XG5cbiAgX2FsbG93U2ltdWxhdGVkUGFzc1Rocm91Z2g6IHRydWUsXG4gIF9pc0lucHV0RXZlbnRT
dXBwb3J0ZWQ6IGlzSW5wdXRFdmVudFN1cHBvcnRlZCxcblxuICBleHRyYWN0RXZlbnRzOiBmdW5j
dGlvbiAodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRU
YXJnZXQpIHtcbiAgICB2YXIgdGFyZ2V0Tm9kZSA9IHRhcmdldEluc3QgPyBSZWFjdERPTUNvbXBv
bmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0YXJnZXRJbnN0KSA6IHdpbmRvdztcblxuICAg
IHZhciBnZXRUYXJnZXRJbnN0RnVuYywgaGFuZGxlRXZlbnRGdW5jO1xuICAgIGlmIChzaG91bGRV
c2VDaGFuZ2VFdmVudCh0YXJnZXROb2RlKSkge1xuICAgICAgaWYgKGRvZXNDaGFuZ2VFdmVudEJ1
YmJsZSkge1xuICAgICAgICBnZXRUYXJnZXRJbnN0RnVuYyA9IGdldFRhcmdldEluc3RGb3JDaGFu
Z2VFdmVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhhbmRsZUV2ZW50RnVuYyA9IGhhbmRs
ZUV2ZW50c0ZvckNoYW5nZUV2ZW50SUU4O1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoaXNUZXh0
SW5wdXRFbGVtZW50KHRhcmdldE5vZGUpKSB7XG4gICAgICBpZiAoaXNJbnB1dEV2ZW50U3VwcG9y
dGVkKSB7XG4gICAgICAgIGdldFRhcmdldEluc3RGdW5jID0gZ2V0VGFyZ2V0SW5zdEZvcklucHV0
T3JDaGFuZ2VFdmVudDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGdldFRhcmdldEluc3RGdW5j
ID0gZ2V0VGFyZ2V0SW5zdEZvcklucHV0RXZlbnRQb2x5ZmlsbDtcbiAgICAgICAgaGFuZGxlRXZl
bnRGdW5jID0gaGFuZGxlRXZlbnRzRm9ySW5wdXRFdmVudFBvbHlmaWxsO1xuICAgICAgfVxuICAg
IH0gZWxzZSBpZiAoc2hvdWxkVXNlQ2xpY2tFdmVudCh0YXJnZXROb2RlKSkge1xuICAgICAgZ2V0
VGFyZ2V0SW5zdEZ1bmMgPSBnZXRUYXJnZXRJbnN0Rm9yQ2xpY2tFdmVudDtcbiAgICB9XG5cbiAg
ICBpZiAoZ2V0VGFyZ2V0SW5zdEZ1bmMpIHtcbiAgICAgIHZhciBpbnN0ID0gZ2V0VGFyZ2V0SW5z
dEZ1bmModG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVFdmVudCk7XG4gICAgICBpZiAo
aW5zdCkge1xuICAgICAgICB2YXIgZXZlbnQgPSBjcmVhdGVBbmRBY2N1bXVsYXRlQ2hhbmdlRXZl
bnQoaW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbiAgICAgICAgcmV0dXJu
IGV2ZW50O1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChoYW5kbGVFdmVudEZ1bmMpIHtcbiAg
ICAgIGhhbmRsZUV2ZW50RnVuYyh0b3BMZXZlbFR5cGUsIHRhcmdldE5vZGUsIHRhcmdldEluc3Qp
O1xuICAgIH1cblxuICAgIC8vIFdoZW4gYmx1cnJpbmcsIHNldCB0aGUgdmFsdWUgYXR0cmlidXRl
IGZvciBudW1iZXIgaW5wdXRzXG4gICAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcEJsdXInKSB7
XG4gICAgICBoYW5kbGVDb250cm9sbGVkSW5wdXRCbHVyKHRhcmdldEluc3QsIHRhcmdldE5vZGUp
O1xuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBDaGFuZ2VFdmVudFBsdWdpbjtc
blxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFj
dC1kb20vbGliL0NoYW5nZUV2ZW50UGx1Z2luLmpzXG4gKiogbW9kdWxlIGlkID0gMTI4XG4gKiog
bW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9c
blxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0
UHJvZEludmFyaWFudCcpO1xuXG52YXIgRE9NTGF6eVRyZWUgPSByZXF1aXJlKCcuL0RPTUxhenlU
cmVlJyk7XG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9FeGVj
dXRpb25FbnZpcm9ubWVudCcpO1xuXG52YXIgY3JlYXRlTm9kZXNGcm9tTWFya3VwID0gcmVxdWly
ZSgnZmJqcy9saWIvY3JlYXRlTm9kZXNGcm9tTWFya3VwJyk7XG52YXIgZW1wdHlGdW5jdGlvbiA9
IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5RnVuY3Rpb24nKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1
aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcblxudmFyIERhbmdlciA9IHtcbiAgLyoqXG4gICAq
IFJlcGxhY2VzIGEgbm9kZSB3aXRoIGEgc3RyaW5nIG9mIG1hcmt1cCBhdCBpdHMgY3VycmVudCBw
b3NpdGlvbiB3aXRoaW4gaXRzXG4gICAqIHBhcmVudC4gVGhlIG1hcmt1cCBtdXN0IHJlbmRlciBp
bnRvIGEgc2luZ2xlIHJvb3Qgbm9kZS5cbiAgICpcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBv
bGRDaGlsZCBDaGlsZCBub2RlIHRvIHJlcGxhY2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBtYXJr
dXAgTWFya3VwIHRvIHJlbmRlciBpbiBwbGFjZSBvZiB0aGUgY2hpbGQgbm9kZS5cbiAgICogQGlu
dGVybmFsXG4gICAqL1xuICBkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cDogZnVuY3Rp
b24gKG9sZENoaWxkLCBtYXJrdXApIHtcbiAgICAhRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNl
RE9NID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChm
YWxzZSwgJ2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwKC4uLik6IENhbm5vdCByZW5k
ZXIgbWFya3VwIGluIGEgd29ya2VyIHRocmVhZC4gTWFrZSBzdXJlIGB3aW5kb3dgIGFuZCBgZG9j
dW1lbnRgIGFyZSBhdmFpbGFibGUgZ2xvYmFsbHkgYmVmb3JlIHJlcXVpcmluZyBSZWFjdCB3aGVu
IHVuaXQgdGVzdGluZyBvciB1c2UgUmVhY3RET01TZXJ2ZXIucmVuZGVyVG9TdHJpbmcoKSBmb3Ig
c2VydmVyIHJlbmRlcmluZy4nKSA6IF9wcm9kSW52YXJpYW50KCc1NicpIDogdm9pZCAwO1xuICAg
ICFtYXJrdXAgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJp
YW50KGZhbHNlLCAnZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXAoLi4uKTogTWlzc2lu
ZyBtYXJrdXAuJykgOiBfcHJvZEludmFyaWFudCgnNTcnKSA6IHZvaWQgMDtcbiAgICAhKG9sZENo
aWxkLm5vZGVOYW1lICE9PSAnSFRNTCcpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFy
a3VwKC4uLik6IENhbm5vdCByZXBsYWNlIG1hcmt1cCBvZiB0aGUgPGh0bWw+IG5vZGUuIFRoaXMg
aXMgYmVjYXVzZSBicm93c2VyIHF1aXJrcyBtYWtlIHRoaXMgdW5yZWxpYWJsZSBhbmQvb3Igc2xv
dy4gSWYgeW91IHdhbnQgdG8gcmVuZGVyIHRvIHRoZSByb290IHlvdSBtdXN0IHVzZSBzZXJ2ZXIg
cmVuZGVyaW5nLiBTZWUgUmVhY3RET01TZXJ2ZXIucmVuZGVyVG9TdHJpbmcoKS4nKSA6IF9wcm9k
SW52YXJpYW50KCc1OCcpIDogdm9pZCAwO1xuXG4gICAgaWYgKHR5cGVvZiBtYXJrdXAgPT09ICdz
dHJpbmcnKSB7XG4gICAgICB2YXIgbmV3Q2hpbGQgPSBjcmVhdGVOb2Rlc0Zyb21NYXJrdXAobWFy
a3VwLCBlbXB0eUZ1bmN0aW9uKVswXTtcbiAgICAgIG9sZENoaWxkLnBhcmVudE5vZGUucmVwbGFj
ZUNoaWxkKG5ld0NoaWxkLCBvbGRDaGlsZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIERPTUxhenlU
cmVlLnJlcGxhY2VDaGlsZFdpdGhUcmVlKG9sZENoaWxkLCBtYXJrdXApO1xuICAgIH1cbiAgfVxu
fTtcblxubW9kdWxlLmV4cG9ydHMgPSBEYW5nZXI7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4g
KiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9EYW5nZXIuanNcbiAqKiBt
b2R1bGUgaWQgPSAxMjlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29w
eXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2
ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0
eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBh
dGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUg
ZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbi8qKlxuICogTW9kdWxlIHRo
YXQgaXMgaW5qZWN0YWJsZSBpbnRvIGBFdmVudFBsdWdpbkh1YmAsIHRoYXQgc3BlY2lmaWVzIGFc
biAqIGRldGVybWluaXN0aWMgb3JkZXJpbmcgb2YgYEV2ZW50UGx1Z2luYHMuIEEgY29udmVuaWVu
dCB3YXkgdG8gcmVhc29uIGFib3V0XG4gKiBwbHVnaW5zLCB3aXRob3V0IGhhdmluZyB0byBwYWNr
YWdlIGV2ZXJ5IG9uZSBvZiB0aGVtLiBUaGlzIGlzIGJldHRlciB0aGFuXG4gKiBoYXZpbmcgcGx1
Z2lucyBiZSBvcmRlcmVkIGluIHRoZSBzYW1lIG9yZGVyIHRoYXQgdGhleSBhcmUgaW5qZWN0ZWQg
YmVjYXVzZVxuICogdGhhdCBvcmRlcmluZyB3b3VsZCBiZSBpbmZsdWVuY2VkIGJ5IHRoZSBwYWNr
YWdpbmcgb3JkZXIuXG4gKiBgUmVzcG9uZGVyRXZlbnRQbHVnaW5gIG11c3Qgb2NjdXIgYmVmb3Jl
IGBTaW1wbGVFdmVudFBsdWdpbmAgc28gdGhhdFxuICogcHJldmVudGluZyBkZWZhdWx0IG9uIGV2
ZW50cyBpcyBjb252ZW5pZW50IGluIGBTaW1wbGVFdmVudFBsdWdpbmAgaGFuZGxlcnMuXG4gKi9c
blxudmFyIERlZmF1bHRFdmVudFBsdWdpbk9yZGVyID0gWydSZXNwb25kZXJFdmVudFBsdWdpbics
ICdTaW1wbGVFdmVudFBsdWdpbicsICdUYXBFdmVudFBsdWdpbicsICdFbnRlckxlYXZlRXZlbnRQ
bHVnaW4nLCAnQ2hhbmdlRXZlbnRQbHVnaW4nLCAnU2VsZWN0RXZlbnRQbHVnaW4nLCAnQmVmb3Jl
SW5wdXRFdmVudFBsdWdpbiddO1xuXG5tb2R1bGUuZXhwb3J0cyA9IERlZmF1bHRFdmVudFBsdWdp
bk9yZGVyO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiog
Li9+L3JlYWN0LWRvbS9saWIvRGVmYXVsdEV2ZW50UGx1Z2luT3JkZXIuanNcbiAqKiBtb2R1bGUg
aWQgPSAxMzBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0
IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4g
KlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxp
Y2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5
IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCBy
aWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0
b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBFdmVudFByb3BhZ2F0b3JzID0g
cmVxdWlyZSgnLi9FdmVudFByb3BhZ2F0b3JzJyk7XG52YXIgUmVhY3RET01Db21wb25lbnRUcmVl
ID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVudFRyZWUnKTtcbnZhciBTeW50aGV0aWNNb3Vz
ZUV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNNb3VzZUV2ZW50Jyk7XG5cbnZhciBldmVudFR5
cGVzID0ge1xuICBtb3VzZUVudGVyOiB7XG4gICAgcmVnaXN0cmF0aW9uTmFtZTogJ29uTW91c2VF
bnRlcicsXG4gICAgZGVwZW5kZW5jaWVzOiBbJ3RvcE1vdXNlT3V0JywgJ3RvcE1vdXNlT3Zlcidd
XG4gIH0sXG4gIG1vdXNlTGVhdmU6IHtcbiAgICByZWdpc3RyYXRpb25OYW1lOiAnb25Nb3VzZUxl
YXZlJyxcbiAgICBkZXBlbmRlbmNpZXM6IFsndG9wTW91c2VPdXQnLCAndG9wTW91c2VPdmVyJ11c
biAgfVxufTtcblxudmFyIEVudGVyTGVhdmVFdmVudFBsdWdpbiA9IHtcbiAgZXZlbnRUeXBlczog
ZXZlbnRUeXBlcyxcblxuICAvKipcbiAgICogRm9yIGFsbW9zdCBldmVyeSBpbnRlcmFjdGlvbiB3
ZSBjYXJlIGFib3V0LCB0aGVyZSB3aWxsIGJlIGJvdGggYSB0b3AtbGV2ZWxcbiAgICogYG1vdXNl
b3ZlcmAgYW5kIGBtb3VzZW91dGAgZXZlbnQgdGhhdCBvY2N1cnMuIE9ubHkgdXNlIGBtb3VzZW91
dGAgc28gdGhhdFxuICAgKiB3ZSBkbyBub3QgZXh0cmFjdCBkdXBsaWNhdGUgZXZlbnRzLiBIb3dl
dmVyLCBtb3ZpbmcgdGhlIG1vdXNlIGludG8gdGhlXG4gICAqIGJyb3dzZXIgZnJvbSBvdXRzaWRl
IHdpbGwgbm90IGZpcmUgYSBgbW91c2VvdXRgIGV2ZW50LiBJbiB0aGlzIGNhc2UsIHdlIHVzZVxu
ICAgKiB0aGUgYG1vdXNlb3ZlcmAgdG9wLWxldmVsIGV2ZW50LlxuICAgKi9cbiAgZXh0cmFjdEV2
ZW50czogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5h
dGl2ZUV2ZW50VGFyZ2V0KSB7XG4gICAgaWYgKHRvcExldmVsVHlwZSA9PT0gJ3RvcE1vdXNlT3Zl
cicgJiYgKG5hdGl2ZUV2ZW50LnJlbGF0ZWRUYXJnZXQgfHwgbmF0aXZlRXZlbnQuZnJvbUVsZW1l
bnQpKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgaWYgKHRvcExldmVsVHlwZSAh
PT0gJ3RvcE1vdXNlT3V0JyAmJiB0b3BMZXZlbFR5cGUgIT09ICd0b3BNb3VzZU92ZXInKSB7XG4g
ICAgICAvLyBNdXN0IG5vdCBiZSBhIG1vdXNlIGluIG9yIG1vdXNlIG91dCAtIGlnbm9yaW5nLlxu
ICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFyIHdpbjtcbiAgICBpZiAobmF0aXZl
RXZlbnRUYXJnZXQud2luZG93ID09PSBuYXRpdmVFdmVudFRhcmdldCkge1xuICAgICAgLy8gYG5h
dGl2ZUV2ZW50VGFyZ2V0YCBpcyBwcm9iYWJseSBhIHdpbmRvdyBvYmplY3QuXG4gICAgICB3aW4g
PSBuYXRpdmVFdmVudFRhcmdldDtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gVE9ETzogRmlndXJl
IG91dCB3aHkgYG93bmVyRG9jdW1lbnRgIGlzIHNvbWV0aW1lcyB1bmRlZmluZWQgaW4gSUU4Llxu
ICAgICAgdmFyIGRvYyA9IG5hdGl2ZUV2ZW50VGFyZ2V0Lm93bmVyRG9jdW1lbnQ7XG4gICAgICBp
ZiAoZG9jKSB7XG4gICAgICAgIHdpbiA9IGRvYy5kZWZhdWx0VmlldyB8fCBkb2MucGFyZW50V2lu
ZG93O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2luID0gd2luZG93O1xuICAgICAgfVxuICAg
IH1cblxuICAgIHZhciBmcm9tO1xuICAgIHZhciB0bztcbiAgICBpZiAodG9wTGV2ZWxUeXBlID09
PSAndG9wTW91c2VPdXQnKSB7XG4gICAgICBmcm9tID0gdGFyZ2V0SW5zdDtcbiAgICAgIHZhciBy
ZWxhdGVkID0gbmF0aXZlRXZlbnQucmVsYXRlZFRhcmdldCB8fCBuYXRpdmVFdmVudC50b0VsZW1l
bnQ7XG4gICAgICB0byA9IHJlbGF0ZWQgPyBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Q2xvc2Vz
dEluc3RhbmNlRnJvbU5vZGUocmVsYXRlZCkgOiBudWxsO1xuICAgIH0gZWxzZSB7XG4gICAgICAv
LyBNb3ZpbmcgdG8gYSBub2RlIGZyb20gb3V0c2lkZSB0aGUgd2luZG93LlxuICAgICAgZnJvbSA9
IG51bGw7XG4gICAgICB0byA9IHRhcmdldEluc3Q7XG4gICAgfVxuXG4gICAgaWYgKGZyb20gPT09
IHRvKSB7XG4gICAgICAvLyBOb3RoaW5nIHBlcnRhaW5zIHRvIG91ciBtYW5hZ2VkIGNvbXBvbmVu
dHMuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgZnJvbU5vZGUgPSBmcm9t
ID09IG51bGwgPyB3aW4gOiBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5j
ZShmcm9tKTtcbiAgICB2YXIgdG9Ob2RlID0gdG8gPT0gbnVsbCA/IHdpbiA6IFJlYWN0RE9NQ29t
cG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKHRvKTtcblxuICAgIHZhciBsZWF2ZSA9IFN5
bnRoZXRpY01vdXNlRXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMubW91c2VMZWF2ZSwgZnJvbSwg
bmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbiAgICBsZWF2ZS50eXBlID0gJ21vdXNl
bGVhdmUnO1xuICAgIGxlYXZlLnRhcmdldCA9IGZyb21Ob2RlO1xuICAgIGxlYXZlLnJlbGF0ZWRU
YXJnZXQgPSB0b05vZGU7XG5cbiAgICB2YXIgZW50ZXIgPSBTeW50aGV0aWNNb3VzZUV2ZW50Lmdl
dFBvb2xlZChldmVudFR5cGVzLm1vdXNlRW50ZXIsIHRvLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZl
bnRUYXJnZXQpO1xuICAgIGVudGVyLnR5cGUgPSAnbW91c2VlbnRlcic7XG4gICAgZW50ZXIudGFy
Z2V0ID0gdG9Ob2RlO1xuICAgIGVudGVyLnJlbGF0ZWRUYXJnZXQgPSBmcm9tTm9kZTtcblxuICAg
IEV2ZW50UHJvcGFnYXRvcnMuYWNjdW11bGF0ZUVudGVyTGVhdmVEaXNwYXRjaGVzKGxlYXZlLCBl
bnRlciwgZnJvbSwgdG8pO1xuXG4gICAgcmV0dXJuIFtsZWF2ZSwgZW50ZXJdO1xuICB9XG59O1xu
XG5tb2R1bGUuZXhwb3J0cyA9IEVudGVyTGVhdmVFdmVudFBsdWdpbjtcblxuXG4vKioqKioqKioq
KioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL0VudGVy
TGVhdmVFdmVudFBsdWdpbi5qc1xuICoqIG1vZHVsZSBpZCA9IDEzMVxuICoqIG1vZHVsZSBjaHVu
a3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3Ry
aWN0JztcblxudmFyIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBQ
b29sZWRDbGFzcyA9IHJlcXVpcmUoJy4vUG9vbGVkQ2xhc3MnKTtcblxudmFyIGdldFRleHRDb250
ZW50QWNjZXNzb3IgPSByZXF1aXJlKCcuL2dldFRleHRDb250ZW50QWNjZXNzb3InKTtcblxuLyoq
XG4gKiBUaGlzIGhlbHBlciBjbGFzcyBzdG9yZXMgaW5mb3JtYXRpb24gYWJvdXQgdGV4dCBjb250
ZW50IG9mIGEgdGFyZ2V0IG5vZGUsXG4gKiBhbGxvd2luZyBjb21wYXJpc29uIG9mIGNvbnRlbnQg
YmVmb3JlIGFuZCBhZnRlciBhIGdpdmVuIGV2ZW50LlxuICpcbiAqIElkZW50aWZ5IHRoZSBub2Rl
IHdoZXJlIHNlbGVjdGlvbiBjdXJyZW50bHkgYmVnaW5zLCB0aGVuIG9ic2VydmVcbiAqIGJvdGgg
aXRzIHRleHQgY29udGVudCBhbmQgaXRzIGN1cnJlbnQgcG9zaXRpb24gaW4gdGhlIERPTS4gU2lu
Y2UgdGhlXG4gKiBicm93c2VyIG1heSBuYXRpdmVseSByZXBsYWNlIHRoZSB0YXJnZXQgbm9kZSBk
dXJpbmcgY29tcG9zaXRpb24sIHdlIGNhblxuICogdXNlIGl0cyBwb3NpdGlvbiB0byBmaW5kIGl0
cyByZXBsYWNlbWVudC5cbiAqXG4gKiBAcGFyYW0ge0RPTUV2ZW50VGFyZ2V0fSByb290XG4gKi9c
bmZ1bmN0aW9uIEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZShyb290KSB7XG4gIHRoaXMuX3Jvb3Qg
PSByb290O1xuICB0aGlzLl9zdGFydFRleHQgPSB0aGlzLmdldFRleHQoKTtcbiAgdGhpcy5fZmFs
bGJhY2tUZXh0ID0gbnVsbDtcbn1cblxuX2Fzc2lnbihGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUu
cHJvdG90eXBlLCB7XG4gIGRlc3RydWN0b3I6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLl9yb290
ID0gbnVsbDtcbiAgICB0aGlzLl9zdGFydFRleHQgPSBudWxsO1xuICAgIHRoaXMuX2ZhbGxiYWNr
VGV4dCA9IG51bGw7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCBjdXJyZW50IHRleHQgb2YgaW5w
dXQuXG4gICAqXG4gICAqIEByZXR1cm4ge3N0cmluZ31cbiAgICovXG4gIGdldFRleHQ6IGZ1bmN0
aW9uICgpIHtcbiAgICBpZiAoJ3ZhbHVlJyBpbiB0aGlzLl9yb290KSB7XG4gICAgICByZXR1cm4g
dGhpcy5fcm9vdC52YWx1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX3Jvb3RbZ2V0VGV4dENv
bnRlbnRBY2Nlc3NvcigpXTtcbiAgfSxcblxuICAvKipcbiAgICogRGV0ZXJtaW5lIHRoZSBkaWZm
ZXJpbmcgc3Vic3RyaW5nIGJldHdlZW4gdGhlIGluaXRpYWxseSBzdG9yZWRcbiAgICogdGV4dCBj
b250ZW50IGFuZCB0aGUgY3VycmVudCBjb250ZW50LlxuICAgKlxuICAgKiBAcmV0dXJuIHtzdHJp
bmd9XG4gICAqL1xuICBnZXREYXRhOiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuX2ZhbGxi
YWNrVGV4dCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2ZhbGxiYWNrVGV4dDtcbiAgICB9XG5cbiAg
ICB2YXIgc3RhcnQ7XG4gICAgdmFyIHN0YXJ0VmFsdWUgPSB0aGlzLl9zdGFydFRleHQ7XG4gICAg
dmFyIHN0YXJ0TGVuZ3RoID0gc3RhcnRWYWx1ZS5sZW5ndGg7XG4gICAgdmFyIGVuZDtcbiAgICB2
YXIgZW5kVmFsdWUgPSB0aGlzLmdldFRleHQoKTtcbiAgICB2YXIgZW5kTGVuZ3RoID0gZW5kVmFs
dWUubGVuZ3RoO1xuXG4gICAgZm9yIChzdGFydCA9IDA7IHN0YXJ0IDwgc3RhcnRMZW5ndGg7IHN0
YXJ0KyspIHtcbiAgICAgIGlmIChzdGFydFZhbHVlW3N0YXJ0XSAhPT0gZW5kVmFsdWVbc3RhcnRd
KSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBtaW5FbmQgPSBz
dGFydExlbmd0aCAtIHN0YXJ0O1xuICAgIGZvciAoZW5kID0gMTsgZW5kIDw9IG1pbkVuZDsgZW5k
KyspIHtcbiAgICAgIGlmIChzdGFydFZhbHVlW3N0YXJ0TGVuZ3RoIC0gZW5kXSAhPT0gZW5kVmFs
dWVbZW5kTGVuZ3RoIC0gZW5kXSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5c
biAgICB2YXIgc2xpY2VUYWlsID0gZW5kID4gMSA/IDEgLSBlbmQgOiB1bmRlZmluZWQ7XG4gICAg
dGhpcy5fZmFsbGJhY2tUZXh0ID0gZW5kVmFsdWUuc2xpY2Uoc3RhcnQsIHNsaWNlVGFpbCk7XG4g
ICAgcmV0dXJuIHRoaXMuX2ZhbGxiYWNrVGV4dDtcbiAgfVxufSk7XG5cblBvb2xlZENsYXNzLmFk
ZFBvb2xpbmdUbyhGYWxsYmFja0NvbXBvc2l0aW9uU3RhdGUpO1xuXG5tb2R1bGUuZXhwb3J0cyA9
IEZhbGxiYWNrQ29tcG9zaXRpb25TdGF0ZTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBX
RUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL0ZhbGxiYWNrQ29tcG9zaXRpb25T
dGF0ZS5qc1xuICoqIG1vZHVsZSBpZCA9IDEzMlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiov
IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFy
IERPTVByb3BlcnR5ID0gcmVxdWlyZSgnLi9ET01Qcm9wZXJ0eScpO1xuXG52YXIgTVVTVF9VU0Vf
UFJPUEVSVFkgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uTVVTVF9VU0VfUFJPUEVSVFk7XG52YXIg
SEFTX0JPT0xFQU5fVkFMVUUgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uSEFTX0JPT0xFQU5fVkFM
VUU7XG52YXIgSEFTX05VTUVSSUNfVkFMVUUgPSBET01Qcm9wZXJ0eS5pbmplY3Rpb24uSEFTX05V
TUVSSUNfVkFMVUU7XG52YXIgSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUgPSBET01Qcm9wZXJ0
eS5pbmplY3Rpb24uSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUU7XG52YXIgSEFTX09WRVJMT0FE
RURfQk9PTEVBTl9WQUxVRSA9IERPTVByb3BlcnR5LmluamVjdGlvbi5IQVNfT1ZFUkxPQURFRF9C
T09MRUFOX1ZBTFVFO1xuXG52YXIgSFRNTERPTVByb3BlcnR5Q29uZmlnID0ge1xuICBpc0N1c3Rv
bUF0dHJpYnV0ZTogUmVnRXhwLnByb3RvdHlwZS50ZXN0LmJpbmQobmV3IFJlZ0V4cCgnXihkYXRh
fGFyaWEpLVsnICsgRE9NUHJvcGVydHkuQVRUUklCVVRFX05BTUVfQ0hBUiArICddKiQnKSksXG4g
IFByb3BlcnRpZXM6IHtcbiAgICAvKipcbiAgICAgKiBTdGFuZGFyZCBQcm9wZXJ0aWVzXG4gICAg
ICovXG4gICAgYWNjZXB0OiAwLFxuICAgIGFjY2VwdENoYXJzZXQ6IDAsXG4gICAgYWNjZXNzS2V5
OiAwLFxuICAgIGFjdGlvbjogMCxcbiAgICBhbGxvd0Z1bGxTY3JlZW46IEhBU19CT09MRUFOX1ZB
TFVFLFxuICAgIGFsbG93VHJhbnNwYXJlbmN5OiAwLFxuICAgIGFsdDogMCxcbiAgICAvLyBzcGVj
aWZpZXMgdGFyZ2V0IGNvbnRleHQgZm9yIGxpbmtzIHdpdGggYHByZWxvYWRgIHR5cGVcbiAgICBh
czogMCxcbiAgICBhc3luYzogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgYXV0b0NvbXBsZXRlOiAw
LFxuICAgIC8vIGF1dG9Gb2N1cyBpcyBwb2x5ZmlsbGVkL25vcm1hbGl6ZWQgYnkgQXV0b0ZvY3Vz
VXRpbHNcbiAgICAvLyBhdXRvRm9jdXM6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGF1dG9QbGF5
OiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBjYXB0dXJlOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAg
ICBjZWxsUGFkZGluZzogMCxcbiAgICBjZWxsU3BhY2luZzogMCxcbiAgICBjaGFyU2V0OiAwLFxu
ICAgIGNoYWxsZW5nZTogMCxcbiAgICBjaGVja2VkOiBNVVNUX1VTRV9QUk9QRVJUWSB8IEhBU19C
T09MRUFOX1ZBTFVFLFxuICAgIGNpdGU6IDAsXG4gICAgY2xhc3NJRDogMCxcbiAgICBjbGFzc05h
bWU6IDAsXG4gICAgY29sczogSEFTX1BPU0lUSVZFX05VTUVSSUNfVkFMVUUsXG4gICAgY29sU3Bh
bjogMCxcbiAgICBjb250ZW50OiAwLFxuICAgIGNvbnRlbnRFZGl0YWJsZTogMCxcbiAgICBjb250
ZXh0TWVudTogMCxcbiAgICBjb250cm9sczogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgY29vcmRz
OiAwLFxuICAgIGNyb3NzT3JpZ2luOiAwLFxuICAgIGRhdGE6IDAsIC8vIEZvciBgPG9iamVjdCAv
PmAgYWN0cyBhcyBgc3JjYC5cbiAgICBkYXRlVGltZTogMCxcbiAgICAnZGVmYXVsdCc6IEhBU19C
T09MRUFOX1ZBTFVFLFxuICAgIGRlZmVyOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBkaXI6IDAs
XG4gICAgZGlzYWJsZWQ6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGRvd25sb2FkOiBIQVNfT1ZF
UkxPQURFRF9CT09MRUFOX1ZBTFVFLFxuICAgIGRyYWdnYWJsZTogMCxcbiAgICBlbmNUeXBlOiAw
LFxuICAgIGZvcm06IDAsXG4gICAgZm9ybUFjdGlvbjogMCxcbiAgICBmb3JtRW5jVHlwZTogMCxc
biAgICBmb3JtTWV0aG9kOiAwLFxuICAgIGZvcm1Ob1ZhbGlkYXRlOiBIQVNfQk9PTEVBTl9WQUxV
RSxcbiAgICBmb3JtVGFyZ2V0OiAwLFxuICAgIGZyYW1lQm9yZGVyOiAwLFxuICAgIGhlYWRlcnM6
IDAsXG4gICAgaGVpZ2h0OiAwLFxuICAgIGhpZGRlbjogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAg
aGlnaDogMCxcbiAgICBocmVmOiAwLFxuICAgIGhyZWZMYW5nOiAwLFxuICAgIGh0bWxGb3I6IDAs
XG4gICAgaHR0cEVxdWl2OiAwLFxuICAgIGljb246IDAsXG4gICAgaWQ6IDAsXG4gICAgaW5wdXRN
b2RlOiAwLFxuICAgIGludGVncml0eTogMCxcbiAgICBpczogMCxcbiAgICBrZXlQYXJhbXM6IDAs
XG4gICAga2V5VHlwZTogMCxcbiAgICBraW5kOiAwLFxuICAgIGxhYmVsOiAwLFxuICAgIGxhbmc6
IDAsXG4gICAgbGlzdDogMCxcbiAgICBsb29wOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBsb3c6
IDAsXG4gICAgbWFuaWZlc3Q6IDAsXG4gICAgbWFyZ2luSGVpZ2h0OiAwLFxuICAgIG1hcmdpbldp
ZHRoOiAwLFxuICAgIG1heDogMCxcbiAgICBtYXhMZW5ndGg6IDAsXG4gICAgbWVkaWE6IDAsXG4g
ICAgbWVkaWFHcm91cDogMCxcbiAgICBtZXRob2Q6IDAsXG4gICAgbWluOiAwLFxuICAgIG1pbkxl
bmd0aDogMCxcbiAgICAvLyBDYXV0aW9uOyBgb3B0aW9uLnNlbGVjdGVkYCBpcyBub3QgdXBkYXRl
ZCBpZiBgc2VsZWN0Lm11bHRpcGxlYCBpc1xuICAgIC8vIGRpc2FibGVkIHdpdGggYHJlbW92ZUF0
dHJpYnV0ZWAuXG4gICAgbXVsdGlwbGU6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFTX0JPT0xFQU5f
VkFMVUUsXG4gICAgbXV0ZWQ6IE1VU1RfVVNFX1BST1BFUlRZIHwgSEFTX0JPT0xFQU5fVkFMVUUs
XG4gICAgbmFtZTogMCxcbiAgICBub25jZTogMCxcbiAgICBub1ZhbGlkYXRlOiBIQVNfQk9PTEVB
Tl9WQUxVRSxcbiAgICBvcGVuOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBvcHRpbXVtOiAwLFxu
ICAgIHBhdHRlcm46IDAsXG4gICAgcGxhY2Vob2xkZXI6IDAsXG4gICAgcGxheXNJbmxpbmU6IEhB
U19CT09MRUFOX1ZBTFVFLFxuICAgIHBvc3RlcjogMCxcbiAgICBwcmVsb2FkOiAwLFxuICAgIHBy
b2ZpbGU6IDAsXG4gICAgcmFkaW9Hcm91cDogMCxcbiAgICByZWFkT25seTogSEFTX0JPT0xFQU5f
VkFMVUUsXG4gICAgcmVmZXJyZXJQb2xpY3k6IDAsXG4gICAgcmVsOiAwLFxuICAgIHJlcXVpcmVk
OiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICByZXZlcnNlZDogSEFTX0JPT0xFQU5fVkFMVUUsXG4g
ICAgcm9sZTogMCxcbiAgICByb3dzOiBIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSxcbiAgICBy
b3dTcGFuOiBIQVNfTlVNRVJJQ19WQUxVRSxcbiAgICBzYW5kYm94OiAwLFxuICAgIHNjb3BlOiAw
LFxuICAgIHNjb3BlZDogSEFTX0JPT0xFQU5fVkFMVUUsXG4gICAgc2Nyb2xsaW5nOiAwLFxuICAg
IHNlYW1sZXNzOiBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBzZWxlY3RlZDogTVVTVF9VU0VfUFJP
UEVSVFkgfCBIQVNfQk9PTEVBTl9WQUxVRSxcbiAgICBzaGFwZTogMCxcbiAgICBzaXplOiBIQVNf
UE9TSVRJVkVfTlVNRVJJQ19WQUxVRSxcbiAgICBzaXplczogMCxcbiAgICBzcGFuOiBIQVNfUE9T
SVRJVkVfTlVNRVJJQ19WQUxVRSxcbiAgICBzcGVsbENoZWNrOiAwLFxuICAgIHNyYzogMCxcbiAg
ICBzcmNEb2M6IDAsXG4gICAgc3JjTGFuZzogMCxcbiAgICBzcmNTZXQ6IDAsXG4gICAgc3RhcnQ6
IEhBU19OVU1FUklDX1ZBTFVFLFxuICAgIHN0ZXA6IDAsXG4gICAgc3R5bGU6IDAsXG4gICAgc3Vt
bWFyeTogMCxcbiAgICB0YWJJbmRleDogMCxcbiAgICB0YXJnZXQ6IDAsXG4gICAgdGl0bGU6IDAs
XG4gICAgLy8gU2V0dGluZyAudHlwZSB0aHJvd3Mgb24gbm9uLTxpbnB1dD4gdGFnc1xuICAgIHR5
cGU6IDAsXG4gICAgdXNlTWFwOiAwLFxuICAgIHZhbHVlOiAwLFxuICAgIHdpZHRoOiAwLFxuICAg
IHdtb2RlOiAwLFxuICAgIHdyYXA6IDAsXG5cbiAgICAvKipcbiAgICAgKiBSREZhIFByb3BlcnRp
ZXNcbiAgICAgKi9cbiAgICBhYm91dDogMCxcbiAgICBkYXRhdHlwZTogMCxcbiAgICBpbmxpc3Q6
IDAsXG4gICAgcHJlZml4OiAwLFxuICAgIC8vIHByb3BlcnR5IGlzIGFsc28gc3VwcG9ydGVkIGZv
ciBPcGVuR3JhcGggaW4gbWV0YSB0YWdzLlxuICAgIHByb3BlcnR5OiAwLFxuICAgIHJlc291cmNl
OiAwLFxuICAgICd0eXBlb2YnOiAwLFxuICAgIHZvY2FiOiAwLFxuXG4gICAgLyoqXG4gICAgICog
Tm9uLXN0YW5kYXJkIFByb3BlcnRpZXNcbiAgICAgKi9cbiAgICAvLyBhdXRvQ2FwaXRhbGl6ZSBh
bmQgYXV0b0NvcnJlY3QgYXJlIHN1cHBvcnRlZCBpbiBNb2JpbGUgU2FmYXJpIGZvclxuICAgIC8v
IGtleWJvYXJkIGhpbnRzLlxuICAgIGF1dG9DYXBpdGFsaXplOiAwLFxuICAgIGF1dG9Db3JyZWN0
OiAwLFxuICAgIC8vIGF1dG9TYXZlIGFsbG93cyBXZWJLaXQvQmxpbmsgdG8gcGVyc2lzdCB2YWx1
ZXMgb2YgaW5wdXQgZmllbGRzIG9uIHBhZ2UgcmVsb2Fkc1xuICAgIGF1dG9TYXZlOiAwLFxuICAg
IC8vIGNvbG9yIGlzIGZvciBTYWZhcmkgbWFzay1pY29uIGxpbmtcbiAgICBjb2xvcjogMCxcbiAg
ICAvLyBpdGVtUHJvcCwgaXRlbVNjb3BlLCBpdGVtVHlwZSBhcmUgZm9yXG4gICAgLy8gTWljcm9k
YXRhIHN1cHBvcnQuIFNlZSBodHRwOi8vc2NoZW1hLm9yZy9kb2NzL2dzLmh0bWxcbiAgICBpdGVt
UHJvcDogMCxcbiAgICBpdGVtU2NvcGU6IEhBU19CT09MRUFOX1ZBTFVFLFxuICAgIGl0ZW1UeXBl
OiAwLFxuICAgIC8vIGl0ZW1JRCBhbmQgaXRlbVJlZiBhcmUgZm9yIE1pY3JvZGF0YSBzdXBwb3J0
IGFzIHdlbGwgYnV0XG4gICAgLy8gb25seSBzcGVjaWZpZWQgaW4gdGhlIFdIQVRXRyBzcGVjIGRv
Y3VtZW50LiBTZWVcbiAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFn
ZS9taWNyb2RhdGEuaHRtbCNtaWNyb2RhdGEtZG9tLWFwaVxuICAgIGl0ZW1JRDogMCxcbiAgICBp
dGVtUmVmOiAwLFxuICAgIC8vIHJlc3VsdHMgc2hvdyBsb29raW5nIGdsYXNzIGljb24gYW5kIHJl
Y2VudCBzZWFyY2hlcyBvbiBpbnB1dFxuICAgIC8vIHNlYXJjaCBmaWVsZHMgaW4gV2ViS2l0L0Js
aW5rXG4gICAgcmVzdWx0czogMCxcbiAgICAvLyBJRS1vbmx5IGF0dHJpYnV0ZSB0aGF0IHNwZWNp
ZmllcyBzZWN1cml0eSByZXN0cmljdGlvbnMgb24gYW4gaWZyYW1lXG4gICAgLy8gYXMgYW4gYWx0
ZXJuYXRpdmUgdG8gdGhlIHNhbmRib3ggYXR0cmlidXRlIG9uIElFPDEwXG4gICAgc2VjdXJpdHk6
IDAsXG4gICAgLy8gSUUtb25seSBhdHRyaWJ1dGUgdGhhdCBjb250cm9scyBmb2N1cyBiZWhhdmlv
clxuICAgIHVuc2VsZWN0YWJsZTogMFxuICB9LFxuICBET01BdHRyaWJ1dGVOYW1lczoge1xuICAg
IGFjY2VwdENoYXJzZXQ6ICdhY2NlcHQtY2hhcnNldCcsXG4gICAgY2xhc3NOYW1lOiAnY2xhc3Mn
LFxuICAgIGh0bWxGb3I6ICdmb3InLFxuICAgIGh0dHBFcXVpdjogJ2h0dHAtZXF1aXYnXG4gIH0s
XG4gIERPTVByb3BlcnR5TmFtZXM6IHt9LFxuICBET01NdXRhdGlvbk1ldGhvZHM6IHtcbiAgICB2
YWx1ZTogZnVuY3Rpb24gKG5vZGUsIHZhbHVlKSB7XG4gICAgICBpZiAodmFsdWUgPT0gbnVsbCkg
e1xuICAgICAgICByZXR1cm4gbm9kZS5yZW1vdmVBdHRyaWJ1dGUoJ3ZhbHVlJyk7XG4gICAgICB9
XG5cbiAgICAgIC8vIE51bWJlciBpbnB1dHMgZ2V0IHNwZWNpYWwgdHJlYXRtZW50IGR1ZSB0byBz
b21lIGVkZ2UgY2FzZXMgaW5cbiAgICAgIC8vIENocm9tZS4gTGV0IGV2ZXJ5dGhpbmcgZWxzZSBh
c3NpZ24gdGhlIHZhbHVlIGF0dHJpYnV0ZSBhcyBub3JtYWwuXG4gICAgICAvLyBodHRwczovL2dp
dGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzcyNTMjaXNzdWVjb21tZW50LTIzNjA3NDMy
NlxuICAgICAgaWYgKG5vZGUudHlwZSAhPT0gJ251bWJlcicgfHwgbm9kZS5oYXNBdHRyaWJ1dGUo
J3ZhbHVlJykgPT09IGZhbHNlKSB7XG4gICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCd2YWx1ZScs
ICcnICsgdmFsdWUpO1xuICAgICAgfSBlbHNlIGlmIChub2RlLnZhbGlkaXR5ICYmICFub2RlLnZh
bGlkaXR5LmJhZElucHV0ICYmIG5vZGUub3duZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50ICE9PSBu
b2RlKSB7XG4gICAgICAgIC8vIERvbid0IGFzc2lnbiBhbiBhdHRyaWJ1dGUgaWYgdmFsaWRhdGlv
biByZXBvcnRzIGJhZFxuICAgICAgICAvLyBpbnB1dC4gQ2hyb21lIHdpbGwgY2xlYXIgdGhlIHZh
bHVlLiBBZGRpdGlvbmFsbHksIGRvbid0XG4gICAgICAgIC8vIG9wZXJhdGUgb24gaW5wdXRzIHRo
YXQgaGF2ZSBmb2N1cywgb3RoZXJ3aXNlIENocm9tZSBtaWdodFxuICAgICAgICAvLyBzdHJpcCBv
ZmYgdHJhaWxpbmcgZGVjaW1hbCBwbGFjZXMgYW5kIGNhdXNlIHRoZSB1c2VyJ3NcbiAgICAgICAg
Ly8gY3Vyc29yIHBvc2l0aW9uIHRvIGp1bXAgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgaW5wdXQu
XG4gICAgICAgIC8vXG4gICAgICAgIC8vIEluIFJlYWN0RE9NSW5wdXQsIHdlIGhhdmUgYW4gb25C
bHVyIGV2ZW50IHRoYXQgd2lsbCB0cmlnZ2VyXG4gICAgICAgIC8vIHRoaXMgZnVuY3Rpb24gYWdh
aW4gd2hlbiBmb2N1cyBpcyBsb3N0LlxuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZSgndmFsdWUn
LCAnJyArIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRz
ID0gSFRNTERPTVByb3BlcnR5Q29uZmlnO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdF
QlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvSFRNTERPTVByb3BlcnR5Q29uZmln
LmpzXG4gKiogbW9kdWxlIGlkID0gMTMzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIv
KipcbiAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVh
Y3RSZWNvbmNpbGVyID0gcmVxdWlyZSgnLi9SZWFjdFJlY29uY2lsZXInKTtcblxudmFyIGluc3Rh
bnRpYXRlUmVhY3RDb21wb25lbnQgPSByZXF1aXJlKCcuL2luc3RhbnRpYXRlUmVhY3RDb21wb25l
bnQnKTtcbnZhciBLZXlFc2NhcGVVdGlscyA9IHJlcXVpcmUoJy4vS2V5RXNjYXBlVXRpbHMnKTtc
bnZhciBzaG91bGRVcGRhdGVSZWFjdENvbXBvbmVudCA9IHJlcXVpcmUoJy4vc2hvdWxkVXBkYXRl
UmVhY3RDb21wb25lbnQnKTtcbnZhciB0cmF2ZXJzZUFsbENoaWxkcmVuID0gcmVxdWlyZSgnLi90
cmF2ZXJzZUFsbENoaWxkcmVuJyk7XG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2ZianMvbGliL3dh
cm5pbmcnKTtcblxudmFyIFJlYWN0Q29tcG9uZW50VHJlZUhvb2s7XG5cbmlmICh0eXBlb2YgcHJv
Y2VzcyAhPT0gJ3VuZGVmaW5lZCcgJiYgcHJvY2Vzcy5lbnYgJiYgcHJvY2Vzcy5lbnYuTk9ERV9F
TlYgPT09ICd0ZXN0Jykge1xuICAvLyBUZW1wb3JhcnkgaGFjay5cbiAgLy8gSW5saW5lIHJlcXVp
cmVzIGRvbid0IHdvcmsgd2VsbCB3aXRoIEplc3Q6XG4gIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9m
YWNlYm9vay9yZWFjdC9pc3N1ZXMvNzI0MFxuICAvLyBSZW1vdmUgdGhlIGlubGluZSByZXF1aXJl
cyB3aGVuIHdlIGRvbid0IG5lZWQgdGhlbSBhbnltb3JlOlxuICAvLyBodHRwczovL2dpdGh1Yi5j
b20vZmFjZWJvb2svcmVhY3QvcHVsbC83MTc4XG4gIFJlYWN0Q29tcG9uZW50VHJlZUhvb2sgPSBy
ZXF1aXJlKCdyZWFjdC9saWIvUmVhY3RDb21wb25lbnRUcmVlSG9vaycpO1xufVxuXG5mdW5jdGlv
biBpbnN0YW50aWF0ZUNoaWxkKGNoaWxkSW5zdGFuY2VzLCBjaGlsZCwgbmFtZSwgc2VsZkRlYnVn
SUQpIHtcbiAgLy8gV2UgZm91bmQgYSBjb21wb25lbnQgaW5zdGFuY2UuXG4gIHZhciBrZXlVbmlx
dWUgPSBjaGlsZEluc3RhbmNlc1tuYW1lXSA9PT0gdW5kZWZpbmVkO1xuICBpZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIGlmICghUmVhY3RDb21wb25lbnRU
cmVlSG9vaykge1xuICAgICAgUmVhY3RDb21wb25lbnRUcmVlSG9vayA9IHJlcXVpcmUoJ3JlYWN0
L2xpYi9SZWFjdENvbXBvbmVudFRyZWVIb29rJyk7XG4gICAgfVxuICAgIGlmICgha2V5VW5pcXVl
KSB7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2Fybmlu
ZyhmYWxzZSwgJ2ZsYXR0ZW5DaGlsZHJlbiguLi4pOiBFbmNvdW50ZXJlZCB0d28gY2hpbGRyZW4g
d2l0aCB0aGUgc2FtZSBrZXksICcgKyAnYCVzYC4gQ2hpbGQga2V5cyBtdXN0IGJlIHVuaXF1ZTsg
d2hlbiB0d28gY2hpbGRyZW4gc2hhcmUgYSBrZXksIG9ubHkgJyArICd0aGUgZmlyc3QgY2hpbGQg
d2lsbCBiZSB1c2VkLiVzJywgS2V5RXNjYXBlVXRpbHMudW5lc2NhcGUobmFtZSksIFJlYWN0Q29t
cG9uZW50VHJlZUhvb2suZ2V0U3RhY2tBZGRlbmR1bUJ5SUQoc2VsZkRlYnVnSUQpKSA6IHZvaWQg
MDtcbiAgICB9XG4gIH1cbiAgaWYgKGNoaWxkICE9IG51bGwgJiYga2V5VW5pcXVlKSB7XG4gICAg
Y2hpbGRJbnN0YW5jZXNbbmFtZV0gPSBpbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KGNoaWxkLCB0
cnVlKTtcbiAgfVxufVxuXG4vKipcbiAqIFJlYWN0Q2hpbGRSZWNvbmNpbGVyIHByb3ZpZGVzIGhl
bHBlcnMgZm9yIGluaXRpYWxpemluZyBvciB1cGRhdGluZyBhIHNldCBvZlxuICogY2hpbGRyZW4u
IEl0cyBvdXRwdXQgaXMgc3VpdGFibGUgZm9yIHBhc3NpbmcgaXQgb250byBSZWFjdE11bHRpQ2hp
bGQgd2hpY2hcbiAqIGRvZXMgZGlmZmVkIHJlb3JkZXJpbmcgYW5kIGluc2VydGlvbi5cbiAqL1xu
dmFyIFJlYWN0Q2hpbGRSZWNvbmNpbGVyID0ge1xuICAvKipcbiAgICogR2VuZXJhdGVzIGEgXCJt
b3VudCBpbWFnZVwiIGZvciBlYWNoIG9mIHRoZSBzdXBwbGllZCBjaGlsZHJlbi4gSW4gdGhlIGNh
c2VcbiAgICogb2YgYFJlYWN0RE9NQ29tcG9uZW50YCwgYSBtb3VudCBpbWFnZSBpcyBhIHN0cmlu
ZyBvZiBtYXJrdXAuXG4gICAqXG4gICAqIEBwYXJhbSB7P29iamVjdH0gbmVzdGVkQ2hpbGROb2Rl
cyBOZXN0ZWQgY2hpbGQgbWFwcy5cbiAgICogQHJldHVybiB7P29iamVjdH0gQSBzZXQgb2YgY2hp
bGQgaW5zdGFuY2VzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGluc3RhbnRpYXRlQ2hpbGRy
ZW46IGZ1bmN0aW9uIChuZXN0ZWRDaGlsZE5vZGVzLCB0cmFuc2FjdGlvbiwgY29udGV4dCwgc2Vs
ZkRlYnVnSUQpIC8vIDAgaW4gcHJvZHVjdGlvbiBhbmQgZm9yIHJvb3RzXG4gIHtcbiAgICBpZiAo
bmVzdGVkQ2hpbGROb2RlcyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4g
ICAgdmFyIGNoaWxkSW5zdGFuY2VzID0ge307XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdHJhdmVyc2VBbGxDaGlsZHJlbihuZXN0ZWRD
aGlsZE5vZGVzLCBmdW5jdGlvbiAoY2hpbGRJbnN0cywgY2hpbGQsIG5hbWUpIHtcbiAgICAgICAg
cmV0dXJuIGluc3RhbnRpYXRlQ2hpbGQoY2hpbGRJbnN0cywgY2hpbGQsIG5hbWUsIHNlbGZEZWJ1
Z0lEKTtcbiAgICAgIH0sIGNoaWxkSW5zdGFuY2VzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdHJh
dmVyc2VBbGxDaGlsZHJlbihuZXN0ZWRDaGlsZE5vZGVzLCBpbnN0YW50aWF0ZUNoaWxkLCBjaGls
ZEluc3RhbmNlcyk7XG4gICAgfVxuICAgIHJldHVybiBjaGlsZEluc3RhbmNlcztcbiAgfSxcblxu
ICAvKipcbiAgICogVXBkYXRlcyB0aGUgcmVuZGVyZWQgY2hpbGRyZW4gYW5kIHJldHVybnMgYSBu
ZXcgc2V0IG9mIGNoaWxkcmVuLlxuICAgKlxuICAgKiBAcGFyYW0gez9vYmplY3R9IHByZXZDaGls
ZHJlbiBQcmV2aW91c2x5IGluaXRpYWxpemVkIHNldCBvZiBjaGlsZHJlbi5cbiAgICogQHBhcmFt
IHs/b2JqZWN0fSBuZXh0Q2hpbGRyZW4gRmxhdCBjaGlsZCBlbGVtZW50IG1hcHMuXG4gICAqIEBw
YXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFt
IHtvYmplY3R9IGNvbnRleHRcbiAgICogQHJldHVybiB7P29iamVjdH0gQSBuZXcgc2V0IG9mIGNo
aWxkIGluc3RhbmNlcy5cbiAgICogQGludGVybmFsXG4gICAqL1xuICB1cGRhdGVDaGlsZHJlbjog
ZnVuY3Rpb24gKHByZXZDaGlsZHJlbiwgbmV4dENoaWxkcmVuLCBtb3VudEltYWdlcywgcmVtb3Zl
ZE5vZGVzLCB0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIGNvbnRl
eHQsIHNlbGZEZWJ1Z0lEKSAvLyAwIGluIHByb2R1Y3Rpb24gYW5kIGZvciByb290c1xuICB7XG4g
ICAgLy8gV2UgY3VycmVudGx5IGRvbid0IGhhdmUgYSB3YXkgdG8gdHJhY2sgbW92ZXMgaGVyZSBi
dXQgaWYgd2UgdXNlIGl0ZXJhdG9yc1xuICAgIC8vIGluc3RlYWQgb2YgZm9yLi5pbiB3ZSBjYW4g
emlwIHRoZSBpdGVyYXRvcnMgYW5kIGNoZWNrIGlmIGFuIGl0ZW0gaGFzXG4gICAgLy8gbW92ZWQu
XG4gICAgLy8gVE9ETzogSWYgbm90aGluZyBoYXMgY2hhbmdlZCwgcmV0dXJuIHRoZSBwcmV2Q2hp
bGRyZW4gb2JqZWN0IHNvIHRoYXQgd2VcbiAgICAvLyBjYW4gcXVpY2tseSBiYWlsb3V0IGlmIG5v
dGhpbmcgaGFzIGNoYW5nZWQuXG4gICAgaWYgKCFuZXh0Q2hpbGRyZW4gJiYgIXByZXZDaGlsZHJl
bikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB2YXIgbmFtZTtcbiAgICB2YXIgcHJldkNo
aWxkO1xuICAgIGZvciAobmFtZSBpbiBuZXh0Q2hpbGRyZW4pIHtcbiAgICAgIGlmICghbmV4dENo
aWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAg
fVxuICAgICAgcHJldkNoaWxkID0gcHJldkNoaWxkcmVuICYmIHByZXZDaGlsZHJlbltuYW1lXTtc
biAgICAgIHZhciBwcmV2RWxlbWVudCA9IHByZXZDaGlsZCAmJiBwcmV2Q2hpbGQuX2N1cnJlbnRF
bGVtZW50O1xuICAgICAgdmFyIG5leHRFbGVtZW50ID0gbmV4dENoaWxkcmVuW25hbWVdO1xuICAg
ICAgaWYgKHByZXZDaGlsZCAhPSBudWxsICYmIHNob3VsZFVwZGF0ZVJlYWN0Q29tcG9uZW50KHBy
ZXZFbGVtZW50LCBuZXh0RWxlbWVudCkpIHtcbiAgICAgICAgUmVhY3RSZWNvbmNpbGVyLnJlY2Vp
dmVDb21wb25lbnQocHJldkNoaWxkLCBuZXh0RWxlbWVudCwgdHJhbnNhY3Rpb24sIGNvbnRleHQp
O1xuICAgICAgICBuZXh0Q2hpbGRyZW5bbmFtZV0gPSBwcmV2Q2hpbGQ7XG4gICAgICB9IGVsc2Ug
e1xuICAgICAgICBpZiAocHJldkNoaWxkKSB7XG4gICAgICAgICAgcmVtb3ZlZE5vZGVzW25hbWVd
ID0gUmVhY3RSZWNvbmNpbGVyLmdldEhvc3ROb2RlKHByZXZDaGlsZCk7XG4gICAgICAgICAgUmVh
Y3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQocHJldkNoaWxkLCBmYWxzZSk7XG4gICAgICAg
IH1cbiAgICAgICAgLy8gVGhlIGNoaWxkIG11c3QgYmUgaW5zdGFudGlhdGVkIGJlZm9yZSBpdCdz
IG1vdW50ZWQuXG4gICAgICAgIHZhciBuZXh0Q2hpbGRJbnN0YW5jZSA9IGluc3RhbnRpYXRlUmVh
Y3RDb21wb25lbnQobmV4dEVsZW1lbnQsIHRydWUpO1xuICAgICAgICBuZXh0Q2hpbGRyZW5bbmFt
ZV0gPSBuZXh0Q2hpbGRJbnN0YW5jZTtcbiAgICAgICAgLy8gQ3JlYXRpbmcgbW91bnQgaW1hZ2Ug
bm93IGVuc3VyZXMgcmVmcyBhcmUgcmVzb2x2ZWQgaW4gcmlnaHQgb3JkZXJcbiAgICAgICAgLy8g
KHNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvcHVsbC83MTAxIGZvciBleHBs
YW5hdGlvbikuXG4gICAgICAgIHZhciBuZXh0Q2hpbGRNb3VudEltYWdlID0gUmVhY3RSZWNvbmNp
bGVyLm1vdW50Q29tcG9uZW50KG5leHRDaGlsZEluc3RhbmNlLCB0cmFuc2FjdGlvbiwgaG9zdFBh
cmVudCwgaG9zdENvbnRhaW5lckluZm8sIGNvbnRleHQsIHNlbGZEZWJ1Z0lEKTtcbiAgICAgICAg
bW91bnRJbWFnZXMucHVzaChuZXh0Q2hpbGRNb3VudEltYWdlKTtcbiAgICAgIH1cbiAgICB9XG4g
ICAgLy8gVW5tb3VudCBjaGlsZHJlbiB0aGF0IGFyZSBubyBsb25nZXIgcHJlc2VudC5cbiAgICBm
b3IgKG5hbWUgaW4gcHJldkNoaWxkcmVuKSB7XG4gICAgICBpZiAocHJldkNoaWxkcmVuLmhhc093
blByb3BlcnR5KG5hbWUpICYmICEobmV4dENoaWxkcmVuICYmIG5leHRDaGlsZHJlbi5oYXNPd25Q
cm9wZXJ0eShuYW1lKSkpIHtcbiAgICAgICAgcHJldkNoaWxkID0gcHJldkNoaWxkcmVuW25hbWVd
O1xuICAgICAgICByZW1vdmVkTm9kZXNbbmFtZV0gPSBSZWFjdFJlY29uY2lsZXIuZ2V0SG9zdE5v
ZGUocHJldkNoaWxkKTtcbiAgICAgICAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQo
cHJldkNoaWxkLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBV
bm1vdW50cyBhbGwgcmVuZGVyZWQgY2hpbGRyZW4uIFRoaXMgc2hvdWxkIGJlIHVzZWQgdG8gY2xl
YW4gdXAgY2hpbGRyZW5cbiAgICogd2hlbiB0aGlzIGNvbXBvbmVudCBpcyB1bm1vdW50ZWQuXG4g
ICAqXG4gICAqIEBwYXJhbSB7P29iamVjdH0gcmVuZGVyZWRDaGlsZHJlbiBQcmV2aW91c2x5IGlu
aXRpYWxpemVkIHNldCBvZiBjaGlsZHJlbi5cbiAgICogQGludGVybmFsXG4gICAqL1xuICB1bm1v
dW50Q2hpbGRyZW46IGZ1bmN0aW9uIChyZW5kZXJlZENoaWxkcmVuLCBzYWZlbHkpIHtcbiAgICBm
b3IgKHZhciBuYW1lIGluIHJlbmRlcmVkQ2hpbGRyZW4pIHtcbiAgICAgIGlmIChyZW5kZXJlZENo
aWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgIHZhciByZW5kZXJlZENoaWxk
ID0gcmVuZGVyZWRDaGlsZHJlbltuYW1lXTtcbiAgICAgICAgUmVhY3RSZWNvbmNpbGVyLnVubW91
bnRDb21wb25lbnQocmVuZGVyZWRDaGlsZCwgc2FmZWx5KTtcbiAgICAgIH1cbiAgICB9XG4gIH1c
bn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RDaGlsZFJlY29uY2lsZXI7XG5cblxuLyoqKioq
KioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9S
ZWFjdENoaWxkUmVjb25jaWxlci5qc1xuICoqIG1vZHVsZSBpZCA9IDEzNFxuICoqIG1vZHVsZSBj
aHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ug
c3RyaWN0JztcblxudmFyIERPTUNoaWxkcmVuT3BlcmF0aW9ucyA9IHJlcXVpcmUoJy4vRE9NQ2hp
bGRyZW5PcGVyYXRpb25zJyk7XG52YXIgUmVhY3RET01JRE9wZXJhdGlvbnMgPSByZXF1aXJlKCcu
L1JlYWN0RE9NSURPcGVyYXRpb25zJyk7XG5cbi8qKlxuICogQWJzdHJhY3RzIGF3YXkgYWxsIGZ1
bmN0aW9uYWxpdHkgb2YgdGhlIHJlY29uY2lsZXIgdGhhdCByZXF1aXJlcyBrbm93bGVkZ2Ugb2Zc
biAqIHRoZSBicm93c2VyIGNvbnRleHQuIFRPRE86IFRoZXNlIGNhbGxlcnMgc2hvdWxkIGJlIHJl
ZmFjdG9yZWQgdG8gYXZvaWQgdGhlXG4gKiBuZWVkIGZvciB0aGlzIGluamVjdGlvbi5cbiAqL1xu
dmFyIFJlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50ID0ge1xuICBwcm9jZXNzQ2hpbGRy
ZW5VcGRhdGVzOiBSZWFjdERPTUlET3BlcmF0aW9ucy5kYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJl
blVwZGF0ZXMsXG5cbiAgcmVwbGFjZU5vZGVXaXRoTWFya3VwOiBET01DaGlsZHJlbk9wZXJhdGlv
bnMuZGFuZ2Vyb3VzbHlSZXBsYWNlTm9kZVdpdGhNYXJrdXBcbn07XG5cbm1vZHVsZS5leHBvcnRz
ID0gUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQ7XG5cblxuLyoqKioqKioqKioqKioq
KioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdENvbXBv
bmVudEJyb3dzZXJFbnZpcm9ubWVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDEzNVxuICoqIG1vZHVs
ZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
biAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1
c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJ
bnZhcmlhbnQnKSxcbiAgICBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuXG52
YXIgUmVhY3QgPSByZXF1aXJlKCdyZWFjdC9saWIvUmVhY3QnKTtcbnZhciBSZWFjdENvbXBvbmVu
dEVudmlyb25tZW50ID0gcmVxdWlyZSgnLi9SZWFjdENvbXBvbmVudEVudmlyb25tZW50Jyk7XG52
YXIgUmVhY3RDdXJyZW50T3duZXIgPSByZXF1aXJlKCdyZWFjdC9saWIvUmVhY3RDdXJyZW50T3du
ZXInKTtcbnZhciBSZWFjdEVycm9yVXRpbHMgPSByZXF1aXJlKCcuL1JlYWN0RXJyb3JVdGlscycp
O1xudmFyIFJlYWN0SW5zdGFuY2VNYXAgPSByZXF1aXJlKCcuL1JlYWN0SW5zdGFuY2VNYXAnKTtc
bnZhciBSZWFjdEluc3RydW1lbnRhdGlvbiA9IHJlcXVpcmUoJy4vUmVhY3RJbnN0cnVtZW50YXRp
b24nKTtcbnZhciBSZWFjdE5vZGVUeXBlcyA9IHJlcXVpcmUoJy4vUmVhY3ROb2RlVHlwZXMnKTtc
bnZhciBSZWFjdFJlY29uY2lsZXIgPSByZXF1aXJlKCcuL1JlYWN0UmVjb25jaWxlcicpO1xuXG5p
ZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgY2hlY2tS
ZWFjdFR5cGVTcGVjID0gcmVxdWlyZSgnLi9jaGVja1JlYWN0VHlwZVNwZWMnKTtcbn1cblxudmFy
IGVtcHR5T2JqZWN0ID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlPYmplY3QnKTtcbnZhciBpbnZh
cmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZhciBzaGFsbG93RXF1YWwg
PSByZXF1aXJlKCdmYmpzL2xpYi9zaGFsbG93RXF1YWwnKTtcbnZhciBzaG91bGRVcGRhdGVSZWFj
dENvbXBvbmVudCA9IHJlcXVpcmUoJy4vc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQnKTtcbnZh
ciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgQ29tcG9zaXRl
VHlwZXMgPSB7XG4gIEltcHVyZUNsYXNzOiAwLFxuICBQdXJlQ2xhc3M6IDEsXG4gIFN0YXRlbGVz
c0Z1bmN0aW9uYWw6IDJcbn07XG5cbmZ1bmN0aW9uIFN0YXRlbGVzc0NvbXBvbmVudChDb21wb25l
bnQpIHt9XG5TdGF0ZWxlc3NDb21wb25lbnQucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgp
IHtcbiAgdmFyIENvbXBvbmVudCA9IFJlYWN0SW5zdGFuY2VNYXAuZ2V0KHRoaXMpLl9jdXJyZW50
RWxlbWVudC50eXBlO1xuICB2YXIgZWxlbWVudCA9IENvbXBvbmVudCh0aGlzLnByb3BzLCB0aGlz
LmNvbnRleHQsIHRoaXMudXBkYXRlcik7XG4gIHdhcm5JZkludmFsaWRFbGVtZW50KENvbXBvbmVu
dCwgZWxlbWVudCk7XG4gIHJldHVybiBlbGVtZW50O1xufTtcblxuZnVuY3Rpb24gd2FybklmSW52
YWxpZEVsZW1lbnQoQ29tcG9uZW50LCBlbGVtZW50KSB7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IHdhcm5pbmcoZWxlbWVudCA9PT0gbnVsbCB8fCBlbGVtZW50ID09PSBmYWxz
ZSB8fCBSZWFjdC5pc1ZhbGlkRWxlbWVudChlbGVtZW50KSwgJyVzKC4uLik6IEEgdmFsaWQgUmVh
Y3QgZWxlbWVudCAob3IgbnVsbCkgbXVzdCBiZSByZXR1cm5lZC4gWW91IG1heSBoYXZlICcgKyAn
cmV0dXJuZWQgdW5kZWZpbmVkLCBhbiBhcnJheSBvciBzb21lIG90aGVyIGludmFsaWQgb2JqZWN0
LicsIENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZSB8fCAnQ29tcG9uZW50
JykgOiB2b2lkIDA7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IHdhcm5pbmcoIUNvbXBvbmVudC5jaGlsZENvbnRleHRUeXBlcywgJyVzKC4uLik6IGNoaWxkQ29u
dGV4dFR5cGVzIGNhbm5vdCBiZSBkZWZpbmVkIG9uIGEgZnVuY3Rpb25hbCBjb21wb25lbnQuJywg
Q29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdDb21wb25lbnQnKSA6
IHZvaWQgMDtcbiAgfVxufVxuXG5mdW5jdGlvbiBzaG91bGRDb25zdHJ1Y3QoQ29tcG9uZW50KSB7
XG4gIHJldHVybiAhIShDb21wb25lbnQucHJvdG90eXBlICYmIENvbXBvbmVudC5wcm90b3R5cGUu
aXNSZWFjdENvbXBvbmVudCk7XG59XG5cbmZ1bmN0aW9uIGlzUHVyZUNvbXBvbmVudChDb21wb25l
bnQpIHtcbiAgcmV0dXJuICEhKENvbXBvbmVudC5wcm90b3R5cGUgJiYgQ29tcG9uZW50LnByb3Rv
dHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudCk7XG59XG5cbi8vIFNlcGFyYXRlZCBpbnRvIGEgZnVu
Y3Rpb24gdG8gY29udGFpbiBkZW9wdGltaXphdGlvbnMgY2F1c2VkIGJ5IHRyeS9maW5hbGx5Llxu
ZnVuY3Rpb24gbWVhc3VyZUxpZmVDeWNsZVBlcmYoZm4sIGRlYnVnSUQsIHRpbWVyVHlwZSkge1xu
ICBpZiAoZGVidWdJRCA9PT0gMCkge1xuICAgIC8vIFRvcC1sZXZlbCB3cmFwcGVycyAoc2VlIFJl
YWN0TW91bnQpIGFuZCBlbXB0eSBjb21wb25lbnRzIChzZWVcbiAgICAvLyBSZWFjdERPTUVtcHR5
Q29tcG9uZW50KSBhcmUgaW52aXNpYmxlIHRvIGhvb2tzIGFuZCBkZXZ0b29scy5cbiAgICAvLyBC
b3RoIGFyZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHRoYXQgc2hvdWxkIGdvIGF3YXkgaW4gdGhl
IGZ1dHVyZS5cbiAgICByZXR1cm4gZm4oKTtcbiAgfVxuXG4gIFJlYWN0SW5zdHJ1bWVudGF0aW9u
LmRlYnVnVG9vbC5vbkJlZ2luTGlmZUN5Y2xlVGltZXIoZGVidWdJRCwgdGltZXJUeXBlKTtcbiAg
dHJ5IHtcbiAgICByZXR1cm4gZm4oKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBSZWFjdEluc3RydW1l
bnRhdGlvbi5kZWJ1Z1Rvb2wub25FbmRMaWZlQ3ljbGVUaW1lcihkZWJ1Z0lELCB0aW1lclR5cGUp
O1xuICB9XG59XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tIFRoZSBMaWZlLUN5Y2xlIG9m
IGEgQ29tcG9zaXRlIENvbXBvbmVudCAtLS0tLS0tLS0tLS0tLS0tLS1cbiAqXG4gKiAtIGNvbnN0
cnVjdG9yOiBJbml0aWFsaXphdGlvbiBvZiBzdGF0ZS4gVGhlIGluc3RhbmNlIGlzIG5vdyByZXRh
aW5lZC5cbiAqICAgLSBjb21wb25lbnRXaWxsTW91bnRcbiAqICAgLSByZW5kZXJcbiAqICAgLSBb
Y2hpbGRyZW4ncyBjb25zdHJ1Y3RvcnNdXG4gKiAgICAgLSBbY2hpbGRyZW4ncyBjb21wb25lbnRX
aWxsTW91bnQgYW5kIHJlbmRlcl1cbiAqICAgICAtIFtjaGlsZHJlbidzIGNvbXBvbmVudERpZE1v
dW50XVxuICogICAgIC0gY29tcG9uZW50RGlkTW91bnRcbiAqXG4gKiAgICAgICBVcGRhdGUgUGhh
c2VzOlxuICogICAgICAgLSBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIChvbmx5IGNhbGxlZCBp
ZiBwYXJlbnQgdXBkYXRlZClcbiAqICAgICAgIC0gc2hvdWxkQ29tcG9uZW50VXBkYXRlXG4gKiAg
ICAgICAgIC0gY29tcG9uZW50V2lsbFVwZGF0ZVxuICogICAgICAgICAgIC0gcmVuZGVyXG4gKiAg
ICAgICAgICAgLSBbY2hpbGRyZW4ncyBjb25zdHJ1Y3RvcnMgb3IgcmVjZWl2ZSBwcm9wcyBwaGFz
ZXNdXG4gKiAgICAgICAgIC0gY29tcG9uZW50RGlkVXBkYXRlXG4gKlxuICogICAgIC0gY29tcG9u
ZW50V2lsbFVubW91bnRcbiAqICAgICAtIFtjaGlsZHJlbidzIGNvbXBvbmVudFdpbGxVbm1vdW50
XVxuICogICAtIFtjaGlsZHJlbiBkZXN0cm95ZWRdXG4gKiAtIChkZXN0cm95ZWQpOiBUaGUgaW5z
dGFuY2UgaXMgbm93IGJsYW5rLCByZWxlYXNlZCBieSBSZWFjdCBhbmQgcmVhZHkgZm9yIEdDLlxu
ICpcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cblxuLyoqXG4gKiBBbiBpbmNyZW1lbnRp
bmcgSUQgYXNzaWduZWQgdG8gZWFjaCBjb21wb25lbnQgd2hlbiBpdCBpcyBtb3VudGVkLiBUaGlz
IGlzXG4gKiB1c2VkIHRvIGVuZm9yY2UgdGhlIG9yZGVyIGluIHdoaWNoIGBSZWFjdFVwZGF0ZXNg
IHVwZGF0ZXMgZGlydHkgY29tcG9uZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgbmV4
dE1vdW50SUQgPSAxO1xuXG4vKipcbiAqIEBsZW5kcyB7UmVhY3RDb21wb3NpdGVDb21wb25lbnQu
cHJvdG90eXBlfVxuICovXG52YXIgUmVhY3RDb21wb3NpdGVDb21wb25lbnQgPSB7XG4gIC8qKlxu
ICAgKiBCYXNlIGNvbnN0cnVjdG9yIGZvciBhbGwgY29tcG9zaXRlIGNvbXBvbmVudC5cbiAgICpc
biAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IGVsZW1lbnRcbiAgICogQGZpbmFsXG4gICAqIEBp
bnRlcm5hbFxuICAgKi9cbiAgY29uc3RydWN0OiBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIHRo
aXMuX2N1cnJlbnRFbGVtZW50ID0gZWxlbWVudDtcbiAgICB0aGlzLl9yb290Tm9kZUlEID0gMDtc
biAgICB0aGlzLl9jb21wb3NpdGVUeXBlID0gbnVsbDtcbiAgICB0aGlzLl9pbnN0YW5jZSA9IG51
bGw7XG4gICAgdGhpcy5faG9zdFBhcmVudCA9IG51bGw7XG4gICAgdGhpcy5faG9zdENvbnRhaW5l
ckluZm8gPSBudWxsO1xuXG4gICAgLy8gU2VlIFJlYWN0VXBkYXRlUXVldWVcbiAgICB0aGlzLl91
cGRhdGVCYXRjaE51bWJlciA9IG51bGw7XG4gICAgdGhpcy5fcGVuZGluZ0VsZW1lbnQgPSBudWxs
O1xuICAgIHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gbnVsbDtcbiAgICB0aGlzLl9wZW5kaW5n
UmVwbGFjZVN0YXRlID0gZmFsc2U7XG4gICAgdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlID0gZmFs
c2U7XG5cbiAgICB0aGlzLl9yZW5kZXJlZE5vZGVUeXBlID0gbnVsbDtcbiAgICB0aGlzLl9yZW5k
ZXJlZENvbXBvbmVudCA9IG51bGw7XG4gICAgdGhpcy5fY29udGV4dCA9IG51bGw7XG4gICAgdGhp
cy5fbW91bnRPcmRlciA9IDA7XG4gICAgdGhpcy5fdG9wTGV2ZWxXcmFwcGVyID0gbnVsbDtcblxu
ICAgIC8vIFNlZSBSZWFjdFVwZGF0ZXMgYW5kIFJlYWN0VXBkYXRlUXVldWUuXG4gICAgdGhpcy5f
cGVuZGluZ0NhbGxiYWNrcyA9IG51bGw7XG5cbiAgICAvLyBDb21wb25lbnRXaWxsVW5tb3VudCBz
aGFsbCBvbmx5IGJlIGNhbGxlZCBvbmNlXG4gICAgdGhpcy5fY2FsbGVkQ29tcG9uZW50V2lsbFVu
bW91bnQgPSBmYWxzZTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nKSB7XG4gICAgICB0aGlzLl93YXJuZWRBYm91dFJlZnNJblJlbmRlciA9IGZhbHNlO1xu
ICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogSW5pdGlhbGl6ZXMgdGhlIGNvbXBvbmVudCwgcmVu
ZGVycyBtYXJrdXAsIGFuZCByZWdpc3RlcnMgZXZlbnQgbGlzdGVuZXJzLlxuICAgKlxuICAgKiBA
cGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFu
c2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHs/b2JqZWN0fSBob3N0UGFyZW50XG4g
ICAqIEBwYXJhbSB7P29iamVjdH0gaG9zdENvbnRhaW5lckluZm9cbiAgICogQHBhcmFtIHs/b2Jq
ZWN0fSBjb250ZXh0XG4gICAqIEByZXR1cm4gez9zdHJpbmd9IFJlbmRlcmVkIG1hcmt1cCB0byBi
ZSBpbnNlcnRlZCBpbnRvIHRoZSBET00uXG4gICAqIEBmaW5hbFxuICAgKiBAaW50ZXJuYWxcbiAg
ICovXG4gIG1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQs
IGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxu
ICAgIHRoaXMuX2NvbnRleHQgPSBjb250ZXh0O1xuICAgIHRoaXMuX21vdW50T3JkZXIgPSBuZXh0
TW91bnRJRCsrO1xuICAgIHRoaXMuX2hvc3RQYXJlbnQgPSBob3N0UGFyZW50O1xuICAgIHRoaXMu
X2hvc3RDb250YWluZXJJbmZvID0gaG9zdENvbnRhaW5lckluZm87XG5cbiAgICB2YXIgcHVibGlj
UHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztcbiAgICB2YXIgcHVibGljQ29udGV4
dCA9IHRoaXMuX3Byb2Nlc3NDb250ZXh0KGNvbnRleHQpO1xuXG4gICAgdmFyIENvbXBvbmVudCA9
IHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGU7XG5cbiAgICB2YXIgdXBkYXRlUXVldWUgPSB0cmFu
c2FjdGlvbi5nZXRVcGRhdGVRdWV1ZSgpO1xuXG4gICAgLy8gSW5pdGlhbGl6ZSB0aGUgcHVibGlj
IGNsYXNzXG4gICAgdmFyIGRvQ29uc3RydWN0ID0gc2hvdWxkQ29uc3RydWN0KENvbXBvbmVudCk7
XG4gICAgdmFyIGluc3QgPSB0aGlzLl9jb25zdHJ1Y3RDb21wb25lbnQoZG9Db25zdHJ1Y3QsIHB1
YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCB1cGRhdGVRdWV1ZSk7XG4gICAgdmFyIHJlbmRlcmVk
RWxlbWVudDtcblxuICAgIC8vIFN1cHBvcnQgZnVuY3Rpb25hbCBjb21wb25lbnRzXG4gICAgaWYg
KCFkb0NvbnN0cnVjdCAmJiAoaW5zdCA9PSBudWxsIHx8IGluc3QucmVuZGVyID09IG51bGwpKSB7
XG4gICAgICByZW5kZXJlZEVsZW1lbnQgPSBpbnN0O1xuICAgICAgd2FybklmSW52YWxpZEVsZW1l
bnQoQ29tcG9uZW50LCByZW5kZXJlZEVsZW1lbnQpO1xuICAgICAgIShpbnN0ID09PSBudWxsIHx8
IGluc3QgPT09IGZhbHNlIHx8IFJlYWN0LmlzVmFsaWRFbGVtZW50KGluc3QpKSA/IHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICclcyguLi4p
OiBBIHZhbGlkIFJlYWN0IGVsZW1lbnQgKG9yIG51bGwpIG11c3QgYmUgcmV0dXJuZWQuIFlvdSBt
YXkgaGF2ZSByZXR1cm5lZCB1bmRlZmluZWQsIGFuIGFycmF5IG9yIHNvbWUgb3RoZXIgaW52YWxp
ZCBvYmplY3QuJywgQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdD
b21wb25lbnQnKSA6IF9wcm9kSW52YXJpYW50KCcxMDUnLCBDb21wb25lbnQuZGlzcGxheU5hbWUg
fHwgQ29tcG9uZW50Lm5hbWUgfHwgJ0NvbXBvbmVudCcpIDogdm9pZCAwO1xuICAgICAgaW5zdCA9
IG5ldyBTdGF0ZWxlc3NDb21wb25lbnQoQ29tcG9uZW50KTtcbiAgICAgIHRoaXMuX2NvbXBvc2l0
ZVR5cGUgPSBDb21wb3NpdGVUeXBlcy5TdGF0ZWxlc3NGdW5jdGlvbmFsO1xuICAgIH0gZWxzZSB7
XG4gICAgICBpZiAoaXNQdXJlQ29tcG9uZW50KENvbXBvbmVudCkpIHtcbiAgICAgICAgdGhpcy5f
Y29tcG9zaXRlVHlwZSA9IENvbXBvc2l0ZVR5cGVzLlB1cmVDbGFzcztcbiAgICAgIH0gZWxzZSB7
XG4gICAgICAgIHRoaXMuX2NvbXBvc2l0ZVR5cGUgPSBDb21wb3NpdGVUeXBlcy5JbXB1cmVDbGFz
cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJykge1xuICAgICAgLy8gVGhpcyB3aWxsIHRocm93IGxhdGVyIGluIF9yZW5kZXJW
YWxpZGF0ZWRDb21wb25lbnQsIGJ1dCBhZGQgYW4gZWFybHlcbiAgICAgIC8vIHdhcm5pbmcgbm93
IHRvIGhlbHAgZGVidWdnaW5nXG4gICAgICBpZiAoaW5zdC5yZW5kZXIgPT0gbnVsbCkge1xuICAg
ICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxz
ZSwgJyVzKC4uLik6IE5vIGByZW5kZXJgIG1ldGhvZCBmb3VuZCBvbiB0aGUgcmV0dXJuZWQgY29t
cG9uZW50ICcgKyAnaW5zdGFuY2U6IHlvdSBtYXkgaGF2ZSBmb3Jnb3R0ZW4gdG8gZGVmaW5lIGBy
ZW5kZXJgLicsIENvbXBvbmVudC5kaXNwbGF5TmFtZSB8fCBDb21wb25lbnQubmFtZSB8fCAnQ29t
cG9uZW50JykgOiB2b2lkIDA7XG4gICAgICB9XG5cbiAgICAgIHZhciBwcm9wc011dGF0ZWQgPSBp
bnN0LnByb3BzICE9PSBwdWJsaWNQcm9wcztcbiAgICAgIHZhciBjb21wb25lbnROYW1lID0gQ29t
cG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lIHx8ICdDb21wb25lbnQnO1xuXG4g
ICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhpbnN0
LnByb3BzID09PSB1bmRlZmluZWQgfHwgIXByb3BzTXV0YXRlZCwgJyVzKC4uLik6IFdoZW4gY2Fs
bGluZyBzdXBlcigpIGluIGAlc2AsIG1ha2Ugc3VyZSB0byBwYXNzICcgKyBcInVwIHRoZSBzYW1l
IHByb3BzIHRoYXQgeW91ciBjb21wb25lbnQncyBjb25zdHJ1Y3RvciB3YXMgcGFzc2VkLlwiLCBj
b21wb25lbnROYW1lLCBjb21wb25lbnROYW1lKSA6IHZvaWQgMDtcbiAgICB9XG5cbiAgICAvLyBU
aGVzZSBzaG91bGQgYmUgc2V0IHVwIGluIHRoZSBjb25zdHJ1Y3RvciwgYnV0IGFzIGEgY29udmVu
aWVuY2UgZm9yXG4gICAgLy8gc2ltcGxlciBjbGFzcyBhYnN0cmFjdGlvbnMsIHdlIHNldCB0aGVt
IHVwIGFmdGVyIHRoZSBmYWN0LlxuICAgIGluc3QucHJvcHMgPSBwdWJsaWNQcm9wcztcbiAgICBp
bnN0LmNvbnRleHQgPSBwdWJsaWNDb250ZXh0O1xuICAgIGluc3QucmVmcyA9IGVtcHR5T2JqZWN0
O1xuICAgIGluc3QudXBkYXRlciA9IHVwZGF0ZVF1ZXVlO1xuXG4gICAgdGhpcy5faW5zdGFuY2Ug
PSBpbnN0O1xuXG4gICAgLy8gU3RvcmUgYSByZWZlcmVuY2UgZnJvbSB0aGUgaW5zdGFuY2UgYmFj
ayB0byB0aGUgaW50ZXJuYWwgcmVwcmVzZW50YXRpb25cbiAgICBSZWFjdEluc3RhbmNlTWFwLnNl
dChpbnN0LCB0aGlzKTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nKSB7XG4gICAgICAvLyBTaW5jZSBwbGFpbiBKUyBjbGFzc2VzIGFyZSBkZWZpbmVkIHdp
dGhvdXQgYW55IHNwZWNpYWwgaW5pdGlhbGl6YXRpb25cbiAgICAgIC8vIGxvZ2ljLCB3ZSBjYW4g
bm90IGNhdGNoIGNvbW1vbiBlcnJvcnMgZWFybHkuIFRoZXJlZm9yZSwgd2UgaGF2ZSB0b1xuICAg
ICAgLy8gY2F0Y2ggdGhlbSBoZXJlLCBhdCBpbml0aWFsaXphdGlvbiB0aW1lLCBpbnN0ZWFkLlxu
ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWlu
c3QuZ2V0SW5pdGlhbFN0YXRlIHx8IGluc3QuZ2V0SW5pdGlhbFN0YXRlLmlzUmVhY3RDbGFzc0Fw
cHJvdmVkIHx8IGluc3Quc3RhdGUsICdnZXRJbml0aWFsU3RhdGUgd2FzIGRlZmluZWQgb24gJXMs
IGEgcGxhaW4gSmF2YVNjcmlwdCBjbGFzcy4gJyArICdUaGlzIGlzIG9ubHkgc3VwcG9ydGVkIGZv
ciBjbGFzc2VzIGNyZWF0ZWQgdXNpbmcgUmVhY3QuY3JlYXRlQ2xhc3MuICcgKyAnRGlkIHlvdSBt
ZWFuIHRvIGRlZmluZSBhIHN0YXRlIHByb3BlcnR5IGluc3RlYWQ/JywgdGhpcy5nZXROYW1lKCkg
fHwgJ2EgY29tcG9uZW50JykgOiB2b2lkIDA7XG4gICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyghaW5zdC5nZXREZWZhdWx0UHJvcHMgfHwgaW5zdC5n
ZXREZWZhdWx0UHJvcHMuaXNSZWFjdENsYXNzQXBwcm92ZWQsICdnZXREZWZhdWx0UHJvcHMgd2Fz
IGRlZmluZWQgb24gJXMsIGEgcGxhaW4gSmF2YVNjcmlwdCBjbGFzcy4gJyArICdUaGlzIGlzIG9u
bHkgc3VwcG9ydGVkIGZvciBjbGFzc2VzIGNyZWF0ZWQgdXNpbmcgUmVhY3QuY3JlYXRlQ2xhc3Mu
ICcgKyAnVXNlIGEgc3RhdGljIHByb3BlcnR5IHRvIGRlZmluZSBkZWZhdWx0UHJvcHMgaW5zdGVh
ZC4nLCB0aGlzLmdldE5hbWUoKSB8fCAnYSBjb21wb25lbnQnKSA6IHZvaWQgMDtcbiAgICAgIHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKCFpbnN0LnByb3BU
eXBlcywgJ3Byb3BUeXBlcyB3YXMgZGVmaW5lZCBhcyBhbiBpbnN0YW5jZSBwcm9wZXJ0eSBvbiAl
cy4gVXNlIGEgc3RhdGljICcgKyAncHJvcGVydHkgdG8gZGVmaW5lIHByb3BUeXBlcyBpbnN0ZWFk
LicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdhIGNvbXBvbmVudCcpIDogdm9pZCAwO1xuICAgICAgcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWluc3QuY29udGV4
dFR5cGVzLCAnY29udGV4dFR5cGVzIHdhcyBkZWZpbmVkIGFzIGFuIGluc3RhbmNlIHByb3BlcnR5
IG9uICVzLiBVc2UgYSAnICsgJ3N0YXRpYyBwcm9wZXJ0eSB0byBkZWZpbmUgY29udGV4dFR5cGVz
IGluc3RlYWQuJywgdGhpcy5nZXROYW1lKCkgfHwgJ2EgY29tcG9uZW50JykgOiB2b2lkIDA7XG4g
ICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyh0eXBl
b2YgaW5zdC5jb21wb25lbnRTaG91bGRVcGRhdGUgIT09ICdmdW5jdGlvbicsICclcyBoYXMgYSBt
ZXRob2QgY2FsbGVkICcgKyAnY29tcG9uZW50U2hvdWxkVXBkYXRlKCkuIERpZCB5b3UgbWVhbiBz
aG91bGRDb21wb25lbnRVcGRhdGUoKT8gJyArICdUaGUgbmFtZSBpcyBwaHJhc2VkIGFzIGEgcXVl
c3Rpb24gYmVjYXVzZSB0aGUgZnVuY3Rpb24gaXMgJyArICdleHBlY3RlZCB0byByZXR1cm4gYSB2
YWx1ZS4nLCB0aGlzLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnKSA6IHZvaWQgMDtcbiAgICAg
IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHR5cGVvZiBp
bnN0LmNvbXBvbmVudERpZFVubW91bnQgIT09ICdmdW5jdGlvbicsICclcyBoYXMgYSBtZXRob2Qg
Y2FsbGVkICcgKyAnY29tcG9uZW50RGlkVW5tb3VudCgpLiBCdXQgdGhlcmUgaXMgbm8gc3VjaCBs
aWZlY3ljbGUgbWV0aG9kLiAnICsgJ0RpZCB5b3UgbWVhbiBjb21wb25lbnRXaWxsVW5tb3VudCgp
PycsIHRoaXMuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcpIDogdm9pZCAwO1xuICAgICAgcHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcodHlwZW9mIGluc3Qu
Y29tcG9uZW50V2lsbFJlY2lldmVQcm9wcyAhPT0gJ2Z1bmN0aW9uJywgJyVzIGhhcyBhIG1ldGhv
ZCBjYWxsZWQgJyArICdjb21wb25lbnRXaWxsUmVjaWV2ZVByb3BzKCkuIERpZCB5b3UgbWVhbiBj
b21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKCk/JywgdGhpcy5nZXROYW1lKCkgfHwgJ0EgY29tcG9u
ZW50JykgOiB2b2lkIDA7XG4gICAgfVxuXG4gICAgdmFyIGluaXRpYWxTdGF0ZSA9IGluc3Quc3Rh
dGU7XG4gICAgaWYgKGluaXRpYWxTdGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBpbnN0LnN0
YXRlID0gaW5pdGlhbFN0YXRlID0gbnVsbDtcbiAgICB9XG4gICAgISh0eXBlb2YgaW5pdGlhbFN0
YXRlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheShpbml0aWFsU3RhdGUpKSA/IHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICclcy5z
dGF0ZTogbXVzdCBiZSBzZXQgdG8gYW4gb2JqZWN0IG9yIG51bGwnLCB0aGlzLmdldE5hbWUoKSB8
fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IF9wcm9kSW52YXJpYW50KCcxMDYnLCB0aGlz
LmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IHZvaWQgMDtcblxuICAg
IHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlID0gbnVsbDtcbiAgICB0aGlzLl9wZW5kaW5nUmVwbGFj
ZVN0YXRlID0gZmFsc2U7XG4gICAgdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlID0gZmFsc2U7XG5c
biAgICB2YXIgbWFya3VwO1xuICAgIGlmIChpbnN0LnVuc3RhYmxlX2hhbmRsZUVycm9yKSB7XG4g
ICAgICBtYXJrdXAgPSB0aGlzLnBlcmZvcm1Jbml0aWFsTW91bnRXaXRoRXJyb3JIYW5kbGluZyhy
ZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCB0cmFuc2FjdGlv
biwgY29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG1hcmt1cCA9IHRoaXMucGVyZm9ybUlu
aXRpYWxNb3VudChyZW5kZXJlZEVsZW1lbnQsIGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZv
LCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgfVxuXG4gICAgaWYgKGluc3QuY29tcG9uZW50
RGlkTW91bnQpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUo
ZnVuY3Rpb24gKCkge1xuICAgICAgICAgIG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgp
IHtcbiAgICAgICAgICAgIHJldHVybiBpbnN0LmNvbXBvbmVudERpZE1vdW50KCk7XG4gICAgICAg
ICAgfSwgX3RoaXMuX2RlYnVnSUQsICdjb21wb25lbnREaWRNb3VudCcpO1xuICAgICAgICB9KTtc
biAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgp
LmVucXVldWUoaW5zdC5jb21wb25lbnREaWRNb3VudCwgaW5zdCk7XG4gICAgICB9XG4gICAgfVxu
XG4gICAgcmV0dXJuIG1hcmt1cDtcbiAgfSxcblxuICBfY29uc3RydWN0Q29tcG9uZW50OiBmdW5j
dGlvbiAoZG9Db25zdHJ1Y3QsIHB1YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCB1cGRhdGVRdWV1
ZSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
ICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gdGhpcztcbiAgICAgIHRyeSB7XG4gICAg
ICAgIHJldHVybiB0aGlzLl9jb25zdHJ1Y3RDb21wb25lbnRXaXRob3V0T3duZXIoZG9Db25zdHJ1
Y3QsIHB1YmxpY1Byb3BzLCBwdWJsaWNDb250ZXh0LCB1cGRhdGVRdWV1ZSk7XG4gICAgICB9IGZp
bmFsbHkge1xuICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gbnVsbDtcbiAgICAg
IH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuX2NvbnN0cnVjdENvbXBvbmVudFdp
dGhvdXRPd25lcihkb0NvbnN0cnVjdCwgcHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0
ZVF1ZXVlKTtcbiAgICB9XG4gIH0sXG5cbiAgX2NvbnN0cnVjdENvbXBvbmVudFdpdGhvdXRPd25l
cjogZnVuY3Rpb24gKGRvQ29uc3RydWN0LCBwdWJsaWNQcm9wcywgcHVibGljQ29udGV4dCwgdXBk
YXRlUXVldWUpIHtcbiAgICB2YXIgQ29tcG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlw
ZTtcblxuICAgIGlmIChkb0NvbnN0cnVjdCkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIG1lYXN1cmVMaWZlQ3ljbGVQ
ZXJmKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4gbmV3IENvbXBvbmVudChwdWJsaWNQ
cm9wcywgcHVibGljQ29udGV4dCwgdXBkYXRlUXVldWUpO1xuICAgICAgICB9LCB0aGlzLl9kZWJ1
Z0lELCAnY3RvcicpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIG5ldyBDb21wb25l
bnQocHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0ZVF1ZXVlKTtcbiAgICAgIH1cbiAg
ICB9XG5cbiAgICAvLyBUaGlzIGNhbiBzdGlsbCBiZSBhbiBpbnN0YW5jZSBpbiBjYXNlIG9mIGZh
Y3RvcnkgY29tcG9uZW50c1xuICAgIC8vIGJ1dCB3ZSdsbCBjb3VudCB0aGlzIGFzIHRpbWUgc3Bl
bnQgcmVuZGVyaW5nIGFzIHRoZSBtb3JlIGNvbW1vbiBjYXNlLlxuICAgIGlmIChwcm9jZXNzLmVu
di5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICByZXR1cm4gbWVhc3VyZUxpZmVD
eWNsZVBlcmYoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gQ29tcG9uZW50KHB1YmxpY1By
b3BzLCBwdWJsaWNDb250ZXh0LCB1cGRhdGVRdWV1ZSk7XG4gICAgICB9LCB0aGlzLl9kZWJ1Z0lE
LCAncmVuZGVyJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBDb21wb25lbnQocHVibGlj
UHJvcHMsIHB1YmxpY0NvbnRleHQsIHVwZGF0ZVF1ZXVlKTtcbiAgICB9XG4gIH0sXG5cbiAgcGVy
Zm9ybUluaXRpYWxNb3VudFdpdGhFcnJvckhhbmRsaW5nOiBmdW5jdGlvbiAocmVuZGVyZWRFbGVt
ZW50LCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgdHJhbnNhY3Rpb24sIGNvbnRleHQp
IHtcbiAgICB2YXIgbWFya3VwO1xuICAgIHZhciBjaGVja3BvaW50ID0gdHJhbnNhY3Rpb24uY2hl
Y2twb2ludCgpO1xuICAgIHRyeSB7XG4gICAgICBtYXJrdXAgPSB0aGlzLnBlcmZvcm1Jbml0aWFs
TW91bnQocmVuZGVyZWRFbGVtZW50LCBob3N0UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgdHJh
bnNhY3Rpb24sIGNvbnRleHQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIC8vIFJvbGwgYmFj
ayB0byBjaGVja3BvaW50LCBoYW5kbGUgZXJyb3IgKHdoaWNoIG1heSBhZGQgaXRlbXMgdG8gdGhl
IHRyYW5zYWN0aW9uKSwgYW5kIHRha2UgYSBuZXcgY2hlY2twb2ludFxuICAgICAgdHJhbnNhY3Rp
b24ucm9sbGJhY2soY2hlY2twb2ludCk7XG4gICAgICB0aGlzLl9pbnN0YW5jZS51bnN0YWJsZV9o
YW5kbGVFcnJvcihlKTtcbiAgICAgIGlmICh0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSkge1xuICAg
ICAgICB0aGlzLl9pbnN0YW5jZS5zdGF0ZSA9IHRoaXMuX3Byb2Nlc3NQZW5kaW5nU3RhdGUodGhp
cy5faW5zdGFuY2UucHJvcHMsIHRoaXMuX2luc3RhbmNlLmNvbnRleHQpO1xuICAgICAgfVxuICAg
ICAgY2hlY2twb2ludCA9IHRyYW5zYWN0aW9uLmNoZWNrcG9pbnQoKTtcblxuICAgICAgdGhpcy5f
cmVuZGVyZWRDb21wb25lbnQudW5tb3VudENvbXBvbmVudCh0cnVlKTtcbiAgICAgIHRyYW5zYWN0
aW9uLnJvbGxiYWNrKGNoZWNrcG9pbnQpO1xuXG4gICAgICAvLyBUcnkgYWdhaW4gLSB3ZSd2ZSBp
bmZvcm1lZCB0aGUgY29tcG9uZW50IGFib3V0IHRoZSBlcnJvciwgc28gdGhleSBjYW4gcmVuZGVy
IGFuIGVycm9yIG1lc3NhZ2UgdGhpcyB0aW1lLlxuICAgICAgLy8gSWYgdGhpcyB0aHJvd3MgYWdh
aW4sIHRoZSBlcnJvciB3aWxsIGJ1YmJsZSB1cCAoYW5kIGNhbiBiZSBjYXVnaHQgYnkgYSBoaWdo
ZXIgZXJyb3IgYm91bmRhcnkpLlxuICAgICAgbWFya3VwID0gdGhpcy5wZXJmb3JtSW5pdGlhbE1v
dW50KHJlbmRlcmVkRWxlbWVudCwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8sIHRyYW5z
YWN0aW9uLCBjb250ZXh0KTtcbiAgICB9XG4gICAgcmV0dXJuIG1hcmt1cDtcbiAgfSxcblxuICBw
ZXJmb3JtSW5pdGlhbE1vdW50OiBmdW5jdGlvbiAocmVuZGVyZWRFbGVtZW50LCBob3N0UGFyZW50
LCBob3N0Q29udGFpbmVySW5mbywgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICB2YXIgaW5z
dCA9IHRoaXMuX2luc3RhbmNlO1xuXG4gICAgdmFyIGRlYnVnSUQgPSAwO1xuICAgIGlmIChwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBkZWJ1Z0lEID0gdGhp
cy5fZGVidWdJRDtcbiAgICB9XG5cbiAgICBpZiAoaW5zdC5jb21wb25lbnRXaWxsTW91bnQpIHtc
biAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAg
ICAgIG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICByZXR1cm4g
aW5zdC5jb21wb25lbnRXaWxsTW91bnQoKTtcbiAgICAgICAgfSwgZGVidWdJRCwgJ2NvbXBvbmVu
dFdpbGxNb3VudCcpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaW5zdC5jb21wb25lbnRXaWxs
TW91bnQoKTtcbiAgICAgIH1cbiAgICAgIC8vIFdoZW4gbW91bnRpbmcsIGNhbGxzIHRvIGBzZXRT
dGF0ZWAgYnkgYGNvbXBvbmVudFdpbGxNb3VudGAgd2lsbCBzZXRcbiAgICAgIC8vIGB0aGlzLl9w
ZW5kaW5nU3RhdGVRdWV1ZWAgd2l0aG91dCB0cmlnZ2VyaW5nIGEgcmUtcmVuZGVyLlxuICAgICAg
aWYgKHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlKSB7XG4gICAgICAgIGluc3Quc3RhdGUgPSB0aGlz
Ll9wcm9jZXNzUGVuZGluZ1N0YXRlKGluc3QucHJvcHMsIGluc3QuY29udGV4dCk7XG4gICAgICB9
XG4gICAgfVxuXG4gICAgLy8gSWYgbm90IGEgc3RhdGVsZXNzIGNvbXBvbmVudCwgd2Ugbm93IHJl
bmRlclxuICAgIGlmIChyZW5kZXJlZEVsZW1lbnQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVu
ZGVyZWRFbGVtZW50ID0gdGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KCk7XG4gICAgfVxu
XG4gICAgdmFyIG5vZGVUeXBlID0gUmVhY3ROb2RlVHlwZXMuZ2V0VHlwZShyZW5kZXJlZEVsZW1l
bnQpO1xuICAgIHRoaXMuX3JlbmRlcmVkTm9kZVR5cGUgPSBub2RlVHlwZTtcbiAgICB2YXIgY2hp
bGQgPSB0aGlzLl9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KHJlbmRlcmVkRWxlbWVudCwgbm9k
ZVR5cGUgIT09IFJlYWN0Tm9kZVR5cGVzLkVNUFRZIC8qIHNob3VsZEhhdmVEZWJ1Z0lEICovXG4g
ICAgKTtcbiAgICB0aGlzLl9yZW5kZXJlZENvbXBvbmVudCA9IGNoaWxkO1xuXG4gICAgdmFyIG1h
cmt1cCA9IFJlYWN0UmVjb25jaWxlci5tb3VudENvbXBvbmVudChjaGlsZCwgdHJhbnNhY3Rpb24s
IGhvc3RQYXJlbnQsIGhvc3RDb250YWluZXJJbmZvLCB0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0
KGNvbnRleHQpLCBkZWJ1Z0lEKTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nKSB7XG4gICAgICBpZiAoZGVidWdJRCAhPT0gMCkge1xuICAgICAgICB2YXIg
Y2hpbGREZWJ1Z0lEcyA9IGNoaWxkLl9kZWJ1Z0lEICE9PSAwID8gW2NoaWxkLl9kZWJ1Z0lEXSA6
IFtdO1xuICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25TZXRDaGlsZHJl
bihkZWJ1Z0lELCBjaGlsZERlYnVnSURzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4g
bWFya3VwO1xuICB9LFxuXG4gIGdldEhvc3ROb2RlOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJu
IFJlYWN0UmVjb25jaWxlci5nZXRIb3N0Tm9kZSh0aGlzLl9yZW5kZXJlZENvbXBvbmVudCk7XG4g
IH0sXG5cbiAgLyoqXG4gICAqIFJlbGVhc2VzIGFueSByZXNvdXJjZXMgYWxsb2NhdGVkIGJ5IGBt
b3VudENvbXBvbmVudGAuXG4gICAqXG4gICAqIEBmaW5hbFxuICAgKiBAaW50ZXJuYWxcbiAgICov
XG4gIHVubW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIChzYWZlbHkpIHtcbiAgICBpZiAoIXRoaXMu
X3JlbmRlcmVkQ29tcG9uZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIGlu
c3QgPSB0aGlzLl9pbnN0YW5jZTtcblxuICAgIGlmIChpbnN0LmNvbXBvbmVudFdpbGxVbm1vdW50
ICYmICFpbnN0Ll9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3VudCkge1xuICAgICAgaW5zdC5fY2Fs
bGVkQ29tcG9uZW50V2lsbFVubW91bnQgPSB0cnVlO1xuXG4gICAgICBpZiAoc2FmZWx5KSB7XG4g
ICAgICAgIHZhciBuYW1lID0gdGhpcy5nZXROYW1lKCkgKyAnLmNvbXBvbmVudFdpbGxVbm1vdW50
KCknO1xuICAgICAgICBSZWFjdEVycm9yVXRpbHMuaW52b2tlR3VhcmRlZENhbGxiYWNrKG5hbWUs
IGluc3QuY29tcG9uZW50V2lsbFVubW91bnQuYmluZChpbnN0KSk7XG4gICAgICB9IGVsc2Uge1xu
ICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAg
ICAgICAgIG1lYXN1cmVMaWZlQ3ljbGVQZXJmKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJl
dHVybiBpbnN0LmNvbXBvbmVudFdpbGxVbm1vdW50KCk7XG4gICAgICAgICAgfSwgdGhpcy5fZGVi
dWdJRCwgJ2NvbXBvbmVudFdpbGxVbm1vdW50Jyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAg
ICAgaW5zdC5jb21wb25lbnRXaWxsVW5tb3VudCgpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAg
fVxuXG4gICAgaWYgKHRoaXMuX3JlbmRlcmVkQ29tcG9uZW50KSB7XG4gICAgICBSZWFjdFJlY29u
Y2lsZXIudW5tb3VudENvbXBvbmVudCh0aGlzLl9yZW5kZXJlZENvbXBvbmVudCwgc2FmZWx5KTtc
biAgICAgIHRoaXMuX3JlbmRlcmVkTm9kZVR5cGUgPSBudWxsO1xuICAgICAgdGhpcy5fcmVuZGVy
ZWRDb21wb25lbnQgPSBudWxsO1xuICAgICAgdGhpcy5faW5zdGFuY2UgPSBudWxsO1xuICAgIH1c
blxuICAgIC8vIFJlc2V0IHBlbmRpbmcgZmllbGRzXG4gICAgLy8gRXZlbiBpZiB0aGlzIGNvbXBv
bmVudCBpcyBzY2hlZHVsZWQgZm9yIGFub3RoZXIgdXBkYXRlIGluIFJlYWN0VXBkYXRlcyxcbiAg
ICAvLyBpdCB3b3VsZCBzdGlsbCBiZSBpZ25vcmVkIGJlY2F1c2UgdGhlc2UgZmllbGRzIGFyZSBy
ZXNldC5cbiAgICB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSA9IG51bGw7XG4gICAgdGhpcy5fcGVu
ZGluZ1JlcGxhY2VTdGF0ZSA9IGZhbHNlO1xuICAgIHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSA9
IGZhbHNlO1xuICAgIHRoaXMuX3BlbmRpbmdDYWxsYmFja3MgPSBudWxsO1xuICAgIHRoaXMuX3Bl
bmRpbmdFbGVtZW50ID0gbnVsbDtcblxuICAgIC8vIFRoZXNlIGZpZWxkcyBkbyBub3QgcmVhbGx5
IG5lZWQgdG8gYmUgcmVzZXQgc2luY2UgdGhpcyBvYmplY3QgaXMgbm9cbiAgICAvLyBsb25nZXIg
YWNjZXNzaWJsZS5cbiAgICB0aGlzLl9jb250ZXh0ID0gbnVsbDtcbiAgICB0aGlzLl9yb290Tm9k
ZUlEID0gMDtcbiAgICB0aGlzLl90b3BMZXZlbFdyYXBwZXIgPSBudWxsO1xuXG4gICAgLy8gRGVs
ZXRlIHRoZSByZWZlcmVuY2UgZnJvbSB0aGUgaW5zdGFuY2UgdG8gdGhpcyBpbnRlcm5hbCByZXBy
ZXNlbnRhdGlvblxuICAgIC8vIHdoaWNoIGFsbG93IHRoZSBpbnRlcm5hbHMgdG8gYmUgcHJvcGVy
bHkgY2xlYW5lZCB1cCBldmVuIGlmIHRoZSB1c2VyXG4gICAgLy8gbGVha3MgYSByZWZlcmVuY2Ug
dG8gdGhlIHB1YmxpYyBpbnN0YW5jZS5cbiAgICBSZWFjdEluc3RhbmNlTWFwLnJlbW92ZShpbnN0
KTtcblxuICAgIC8vIFNvbWUgZXhpc3RpbmcgY29tcG9uZW50cyByZWx5IG9uIGluc3QucHJvcHMg
ZXZlbiBhZnRlciB0aGV5J3ZlIGJlZW5cbiAgICAvLyBkZXN0cm95ZWQgKGluIGV2ZW50IGhhbmRs
ZXJzKS5cbiAgICAvLyBUT0RPOiBpbnN0LnByb3BzID0gbnVsbDtcbiAgICAvLyBUT0RPOiBpbnN0
LnN0YXRlID0gbnVsbDtcbiAgICAvLyBUT0RPOiBpbnN0LmNvbnRleHQgPSBudWxsO1xuICB9LFxu
XG4gIC8qKlxuICAgKiBGaWx0ZXJzIHRoZSBjb250ZXh0IG9iamVjdCB0byBvbmx5IGNvbnRhaW4g
a2V5cyBzcGVjaWZpZWQgaW5cbiAgICogYGNvbnRleHRUeXBlc2BcbiAgICpcbiAgICogQHBhcmFt
IHtvYmplY3R9IGNvbnRleHRcbiAgICogQHJldHVybiB7P29iamVjdH1cbiAgICogQHByaXZhdGVc
biAgICovXG4gIF9tYXNrQ29udGV4dDogZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICB2YXIgQ29t
cG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcbiAgICB2YXIgY29udGV4dFR5cGVz
ID0gQ29tcG9uZW50LmNvbnRleHRUeXBlcztcbiAgICBpZiAoIWNvbnRleHRUeXBlcykge1xuICAg
ICAgcmV0dXJuIGVtcHR5T2JqZWN0O1xuICAgIH1cbiAgICB2YXIgbWFza2VkQ29udGV4dCA9IHt9
O1xuICAgIGZvciAodmFyIGNvbnRleHROYW1lIGluIGNvbnRleHRUeXBlcykge1xuICAgICAgbWFz
a2VkQ29udGV4dFtjb250ZXh0TmFtZV0gPSBjb250ZXh0W2NvbnRleHROYW1lXTtcbiAgICB9XG4g
ICAgcmV0dXJuIG1hc2tlZENvbnRleHQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEZpbHRlcnMgdGhl
IGNvbnRleHQgb2JqZWN0IHRvIG9ubHkgY29udGFpbiBrZXlzIHNwZWNpZmllZCBpblxuICAgKiBg
Y29udGV4dFR5cGVzYCwgYW5kIGFzc2VydHMgdGhhdCB0aGV5IGFyZSB2YWxpZC5cbiAgICpcbiAg
ICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcbiAgICogQHJldHVybiB7P29iamVjdH1cbiAgICog
QHByaXZhdGVcbiAgICovXG4gIF9wcm9jZXNzQ29udGV4dDogZnVuY3Rpb24gKGNvbnRleHQpIHtc
biAgICB2YXIgbWFza2VkQ29udGV4dCA9IHRoaXMuX21hc2tDb250ZXh0KGNvbnRleHQpO1xuICAg
IGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICB2YXIg
Q29tcG9uZW50ID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcbiAgICAgIGlmIChDb21wb25l
bnQuY29udGV4dFR5cGVzKSB7XG4gICAgICAgIHRoaXMuX2NoZWNrQ29udGV4dFR5cGVzKENvbXBv
bmVudC5jb250ZXh0VHlwZXMsIG1hc2tlZENvbnRleHQsICdjb250ZXh0Jyk7XG4gICAgICB9XG4g
ICAgfVxuICAgIHJldHVybiBtYXNrZWRDb250ZXh0O1xuICB9LFxuXG4gIC8qKlxuICAgKiBAcGFy
YW0ge29iamVjdH0gY3VycmVudENvbnRleHRcbiAgICogQHJldHVybiB7b2JqZWN0fVxuICAgKiBA
cHJpdmF0ZVxuICAgKi9cbiAgX3Byb2Nlc3NDaGlsZENvbnRleHQ6IGZ1bmN0aW9uIChjdXJyZW50
Q29udGV4dCkge1xuICAgIHZhciBDb21wb25lbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudC50eXBl
O1xuICAgIHZhciBpbnN0ID0gdGhpcy5faW5zdGFuY2U7XG4gICAgdmFyIGNoaWxkQ29udGV4dDtc
blxuICAgIGlmIChpbnN0LmdldENoaWxkQ29udGV4dCkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRp
b24uZGVidWdUb29sLm9uQmVnaW5Qcm9jZXNzaW5nQ2hpbGRDb250ZXh0KCk7XG4gICAgICAgIHRy
eSB7XG4gICAgICAgICAgY2hpbGRDb250ZXh0ID0gaW5zdC5nZXRDaGlsZENvbnRleHQoKTtcbiAg
ICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rv
b2wub25FbmRQcm9jZXNzaW5nQ2hpbGRDb250ZXh0KCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxz
ZSB7XG4gICAgICAgIGNoaWxkQ29udGV4dCA9IGluc3QuZ2V0Q2hpbGRDb250ZXh0KCk7XG4gICAg
ICB9XG4gICAgfVxuXG4gICAgaWYgKGNoaWxkQ29udGV4dCkge1xuICAgICAgISh0eXBlb2YgQ29t
cG9uZW50LmNoaWxkQ29udGV4dFR5cGVzID09PSAnb2JqZWN0JykgPyBwcm9jZXNzLmVudi5OT0RF
X0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnJXMuZ2V0Q2hpbGRDb250
ZXh0KCk6IGNoaWxkQ29udGV4dFR5cGVzIG11c3QgYmUgZGVmaW5lZCBpbiBvcmRlciB0byB1c2Ug
Z2V0Q2hpbGRDb250ZXh0KCkuJywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0Q29tcG9zaXRlQ29t
cG9uZW50JykgOiBfcHJvZEludmFyaWFudCgnMTA3JywgdGhpcy5nZXROYW1lKCkgfHwgJ1JlYWN0
Q29tcG9zaXRlQ29tcG9uZW50JykgOiB2b2lkIDA7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB0aGlzLl9jaGVja0NvbnRleHRUeXBl
cyhDb21wb25lbnQuY2hpbGRDb250ZXh0VHlwZXMsIGNoaWxkQ29udGV4dCwgJ2NoaWxkIGNvbnRl
eHQnKTtcbiAgICAgIH1cbiAgICAgIGZvciAodmFyIG5hbWUgaW4gY2hpbGRDb250ZXh0KSB7XG4g
ICAgICAgICEobmFtZSBpbiBDb21wb25lbnQuY2hpbGRDb250ZXh0VHlwZXMpID8gcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzLmdldENo
aWxkQ29udGV4dCgpOiBrZXkgXCIlc1wiIGlzIG5vdCBkZWZpbmVkIGluIGNoaWxkQ29udGV4dFR5
cGVzLicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcsIG5hbWUp
IDogX3Byb2RJbnZhcmlhbnQoJzEwOCcsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0
ZUNvbXBvbmVudCcsIG5hbWUpIDogdm9pZCAwO1xuICAgICAgfVxuICAgICAgcmV0dXJuIF9hc3Np
Z24oe30sIGN1cnJlbnRDb250ZXh0LCBjaGlsZENvbnRleHQpO1xuICAgIH1cbiAgICByZXR1cm4g
Y3VycmVudENvbnRleHQ7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEFzc2VydCB0aGF0IHRoZSBjb250
ZXh0IHR5cGVzIGFyZSB2YWxpZFxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gdHlwZVNwZWNz
IE1hcCBvZiBjb250ZXh0IGZpZWxkIHRvIGEgUmVhY3RQcm9wVHlwZVxuICAgKiBAcGFyYW0ge29i
amVjdH0gdmFsdWVzIFJ1bnRpbWUgdmFsdWVzIHRoYXQgbmVlZCB0byBiZSB0eXBlLWNoZWNrZWRc
biAgICogQHBhcmFtIHtzdHJpbmd9IGxvY2F0aW9uIGUuZy4gXCJwcm9wXCIsIFwiY29udGV4dFwi
LCBcImNoaWxkIGNvbnRleHRcIlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX2NoZWNrQ29udGV4
dFR5cGVzOiBmdW5jdGlvbiAodHlwZVNwZWNzLCB2YWx1ZXMsIGxvY2F0aW9uKSB7XG4gICAgaWYg
KHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGNoZWNrUmVh
Y3RUeXBlU3BlYyh0eXBlU3BlY3MsIHZhbHVlcywgbG9jYXRpb24sIHRoaXMuZ2V0TmFtZSgpLCBu
dWxsLCB0aGlzLl9kZWJ1Z0lEKTtcbiAgICB9XG4gIH0sXG5cbiAgcmVjZWl2ZUNvbXBvbmVudDog
ZnVuY3Rpb24gKG5leHRFbGVtZW50LCB0cmFuc2FjdGlvbiwgbmV4dENvbnRleHQpIHtcbiAgICB2
YXIgcHJldkVsZW1lbnQgPSB0aGlzLl9jdXJyZW50RWxlbWVudDtcbiAgICB2YXIgcHJldkNvbnRl
eHQgPSB0aGlzLl9jb250ZXh0O1xuXG4gICAgdGhpcy5fcGVuZGluZ0VsZW1lbnQgPSBudWxsO1xu
XG4gICAgdGhpcy51cGRhdGVDb21wb25lbnQodHJhbnNhY3Rpb24sIHByZXZFbGVtZW50LCBuZXh0
RWxlbWVudCwgcHJldkNvbnRleHQsIG5leHRDb250ZXh0KTtcbiAgfSxcblxuICAvKipcbiAgICog
SWYgYW55IG9mIGBfcGVuZGluZ0VsZW1lbnRgLCBgX3BlbmRpbmdTdGF0ZVF1ZXVlYCwgb3IgYF9w
ZW5kaW5nRm9yY2VVcGRhdGVgXG4gICAqIGlzIHNldCwgdXBkYXRlIHRoZSBjb21wb25lbnQuXG4g
ICAqXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25c
biAgICogQGludGVybmFsXG4gICAqL1xuICBwZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnk6IGZ1bmN0
aW9uICh0cmFuc2FjdGlvbikge1xuICAgIGlmICh0aGlzLl9wZW5kaW5nRWxlbWVudCAhPSBudWxs
KSB7XG4gICAgICBSZWFjdFJlY29uY2lsZXIucmVjZWl2ZUNvbXBvbmVudCh0aGlzLCB0aGlzLl9w
ZW5kaW5nRWxlbWVudCwgdHJhbnNhY3Rpb24sIHRoaXMuX2NvbnRleHQpO1xuICAgIH0gZWxzZSBp
ZiAodGhpcy5fcGVuZGluZ1N0YXRlUXVldWUgIT09IG51bGwgfHwgdGhpcy5fcGVuZGluZ0ZvcmNl
VXBkYXRlKSB7XG4gICAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudCh0cmFuc2FjdGlvbiwgdGhpcy5f
Y3VycmVudEVsZW1lbnQsIHRoaXMuX2N1cnJlbnRFbGVtZW50LCB0aGlzLl9jb250ZXh0LCB0aGlz
Ll9jb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdXBkYXRlQmF0Y2hOdW1iZXIg
PSBudWxsO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogUGVyZm9ybSBhbiB1cGRhdGUgdG8g
YSBtb3VudGVkIGNvbXBvbmVudC4gVGhlIGNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgYW5kXG4g
ICAqIHNob3VsZENvbXBvbmVudFVwZGF0ZSBtZXRob2RzIGFyZSBjYWxsZWQsIHRoZW4gKGFzc3Vt
aW5nIHRoZSB1cGRhdGUgaXNuJ3RcbiAgICogc2tpcHBlZCkgdGhlIHJlbWFpbmluZyB1cGRhdGUg
bGlmZWN5Y2xlIG1ldGhvZHMgYXJlIGNhbGxlZCBhbmQgdGhlIERPTVxuICAgKiByZXByZXNlbnRh
dGlvbiBpcyB1cGRhdGVkLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCB0aGlzIGltcGxlbWVudHMg
UmVhY3QncyByZW5kZXJpbmcgYW5kIHJlY29uY2lsaWF0aW9uIGFsZ29yaXRobS5cbiAgICogU29w
aGlzdGljYXRlZCBjbGllbnRzIG1heSB3aXNoIHRvIG92ZXJyaWRlIHRoaXMuXG4gICAqXG4gICAq
IEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHBh
cmFtIHtSZWFjdEVsZW1lbnR9IHByZXZQYXJlbnRFbGVtZW50XG4gICAqIEBwYXJhbSB7UmVhY3RF
bGVtZW50fSBuZXh0UGFyZW50RWxlbWVudFxuICAgKiBAaW50ZXJuYWxcbiAgICogQG92ZXJyaWRh
YmxlXG4gICAqL1xuICB1cGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgcHJl
dlBhcmVudEVsZW1lbnQsIG5leHRQYXJlbnRFbGVtZW50LCBwcmV2VW5tYXNrZWRDb250ZXh0LCBu
ZXh0VW5tYXNrZWRDb250ZXh0KSB7XG4gICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTtcbiAg
ICAhKGluc3QgIT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ID8gaW52YXJpYW50KGZhbHNlLCAnQXR0ZW1wdGVkIHRvIHVwZGF0ZSBjb21wb25lbnQgYCVzYCB0
aGF0IGhhcyBhbHJlYWR5IGJlZW4gdW5tb3VudGVkIChvciBmYWlsZWQgdG8gbW91bnQpLicsIHRo
aXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogX3Byb2RJbnZhcmlh
bnQoJzEzNicsIHRoaXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDog
dm9pZCAwO1xuXG4gICAgdmFyIHdpbGxSZWNlaXZlID0gZmFsc2U7XG4gICAgdmFyIG5leHRDb250
ZXh0O1xuXG4gICAgLy8gRGV0ZXJtaW5lIGlmIHRoZSBjb250ZXh0IGhhcyBjaGFuZ2VkIG9yIG5v
dFxuICAgIGlmICh0aGlzLl9jb250ZXh0ID09PSBuZXh0VW5tYXNrZWRDb250ZXh0KSB7XG4gICAg
ICBuZXh0Q29udGV4dCA9IGluc3QuY29udGV4dDtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV4dENv
bnRleHQgPSB0aGlzLl9wcm9jZXNzQ29udGV4dChuZXh0VW5tYXNrZWRDb250ZXh0KTtcbiAgICAg
IHdpbGxSZWNlaXZlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB2YXIgcHJldlByb3BzID0gcHJldlBh
cmVudEVsZW1lbnQucHJvcHM7XG4gICAgdmFyIG5leHRQcm9wcyA9IG5leHRQYXJlbnRFbGVtZW50
LnByb3BzO1xuXG4gICAgLy8gTm90IGEgc2ltcGxlIHN0YXRlIHVwZGF0ZSBidXQgYSBwcm9wcyB1
cGRhdGVcbiAgICBpZiAocHJldlBhcmVudEVsZW1lbnQgIT09IG5leHRQYXJlbnRFbGVtZW50KSB7
XG4gICAgICB3aWxsUmVjZWl2ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8gQW4gdXBkYXRlIGhl
cmUgd2lsbCBzY2hlZHVsZSBhbiB1cGRhdGUgYnV0IGltbWVkaWF0ZWx5IHNldFxuICAgIC8vIF9w
ZW5kaW5nU3RhdGVRdWV1ZSB3aGljaCB3aWxsIGVuc3VyZSB0aGF0IGFueSBzdGF0ZSB1cGRhdGVz
IGdldHNcbiAgICAvLyBpbW1lZGlhdGVseSByZWNvbmNpbGVkIGluc3RlYWQgb2Ygd2FpdGluZyBm
b3IgdGhlIG5leHQgYmF0Y2guXG4gICAgaWYgKHdpbGxSZWNlaXZlICYmIGluc3QuY29tcG9uZW50
V2lsbFJlY2VpdmVQcm9wcykge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHtcbiAgICAgICAgbWVhc3VyZUxpZmVDeWNsZVBlcmYoZnVuY3Rpb24gKCkg
e1xuICAgICAgICAgIHJldHVybiBpbnN0LmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV4dFBy
b3BzLCBuZXh0Q29udGV4dCk7XG4gICAgICAgIH0sIHRoaXMuX2RlYnVnSUQsICdjb21wb25lbnRX
aWxsUmVjZWl2ZVByb3BzJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbnN0LmNvbXBvbmVu
dFdpbGxSZWNlaXZlUHJvcHMobmV4dFByb3BzLCBuZXh0Q29udGV4dCk7XG4gICAgICB9XG4gICAg
fVxuXG4gICAgdmFyIG5leHRTdGF0ZSA9IHRoaXMuX3Byb2Nlc3NQZW5kaW5nU3RhdGUobmV4dFBy
b3BzLCBuZXh0Q29udGV4dCk7XG4gICAgdmFyIHNob3VsZFVwZGF0ZSA9IHRydWU7XG5cbiAgICBp
ZiAoIXRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZSkge1xuICAgICAgaWYgKGluc3Quc2hvdWxkQ29t
cG9uZW50VXBkYXRlKSB7XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3By
b2R1Y3Rpb24nKSB7XG4gICAgICAgICAgc2hvdWxkVXBkYXRlID0gbWVhc3VyZUxpZmVDeWNsZVBl
cmYoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcmV0dXJuIGluc3Quc2hvdWxkQ29tcG9uZW50
VXBkYXRlKG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCk7XG4gICAgICAgICAgfSwg
dGhpcy5fZGVidWdJRCwgJ3Nob3VsZENvbXBvbmVudFVwZGF0ZScpO1xuICAgICAgICB9IGVsc2Ug
e1xuICAgICAgICAgIHNob3VsZFVwZGF0ZSA9IGluc3Quc2hvdWxkQ29tcG9uZW50VXBkYXRlKG5l
eHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxz
ZSB7XG4gICAgICAgIGlmICh0aGlzLl9jb21wb3NpdGVUeXBlID09PSBDb21wb3NpdGVUeXBlcy5Q
dXJlQ2xhc3MpIHtcbiAgICAgICAgICBzaG91bGRVcGRhdGUgPSAhc2hhbGxvd0VxdWFsKHByZXZQ
cm9wcywgbmV4dFByb3BzKSB8fCAhc2hhbGxvd0VxdWFsKGluc3Quc3RhdGUsIG5leHRTdGF0ZSk7
XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IHdhcm5pbmcoc2hvdWxkVXBkYXRlICE9PSB1bmRlZmluZWQsICclcy5zaG91
bGRDb21wb25lbnRVcGRhdGUoKTogUmV0dXJuZWQgdW5kZWZpbmVkIGluc3RlYWQgb2YgYSAnICsg
J2Jvb2xlYW4gdmFsdWUuIE1ha2Ugc3VyZSB0byByZXR1cm4gdHJ1ZSBvciBmYWxzZS4nLCB0aGlz
LmdldE5hbWUoKSB8fCAnUmVhY3RDb21wb3NpdGVDb21wb25lbnQnKSA6IHZvaWQgMDtcbiAgICB9
XG5cbiAgICB0aGlzLl91cGRhdGVCYXRjaE51bWJlciA9IG51bGw7XG4gICAgaWYgKHNob3VsZFVw
ZGF0ZSkge1xuICAgICAgdGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlID0gZmFsc2U7XG4gICAgICAv
LyBXaWxsIHNldCBgdGhpcy5wcm9wc2AsIGB0aGlzLnN0YXRlYCBhbmQgYHRoaXMuY29udGV4dGAu
XG4gICAgICB0aGlzLl9wZXJmb3JtQ29tcG9uZW50VXBkYXRlKG5leHRQYXJlbnRFbGVtZW50LCBu
ZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQsIHRyYW5zYWN0aW9uLCBuZXh0VW5tYXNr
ZWRDb250ZXh0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWYgaXQncyBkZXRlcm1pbmVkIHRo
YXQgYSBjb21wb25lbnQgc2hvdWxkIG5vdCB1cGRhdGUsIHdlIHN0aWxsIHdhbnRcbiAgICAgIC8v
IHRvIHNldCBwcm9wcyBhbmQgc3RhdGUgYnV0IHdlIHNob3J0Y3V0IHRoZSByZXN0IG9mIHRoZSB1
cGRhdGUuXG4gICAgICB0aGlzLl9jdXJyZW50RWxlbWVudCA9IG5leHRQYXJlbnRFbGVtZW50O1xu
ICAgICAgdGhpcy5fY29udGV4dCA9IG5leHRVbm1hc2tlZENvbnRleHQ7XG4gICAgICBpbnN0LnBy
b3BzID0gbmV4dFByb3BzO1xuICAgICAgaW5zdC5zdGF0ZSA9IG5leHRTdGF0ZTtcbiAgICAgIGlu
c3QuY29udGV4dCA9IG5leHRDb250ZXh0O1xuICAgIH1cbiAgfSxcblxuICBfcHJvY2Vzc1BlbmRp
bmdTdGF0ZTogZnVuY3Rpb24gKHByb3BzLCBjb250ZXh0KSB7XG4gICAgdmFyIGluc3QgPSB0aGlz
Ll9pbnN0YW5jZTtcbiAgICB2YXIgcXVldWUgPSB0aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZTtcbiAg
ICB2YXIgcmVwbGFjZSA9IHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU7XG4gICAgdGhpcy5fcGVu
ZGluZ1JlcGxhY2VTdGF0ZSA9IGZhbHNlO1xuICAgIHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlID0g
bnVsbDtcblxuICAgIGlmICghcXVldWUpIHtcbiAgICAgIHJldHVybiBpbnN0LnN0YXRlO1xuICAg
IH1cblxuICAgIGlmIChyZXBsYWNlICYmIHF1ZXVlLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0
dXJuIHF1ZXVlWzBdO1xuICAgIH1cblxuICAgIHZhciBuZXh0U3RhdGUgPSBfYXNzaWduKHt9LCBy
ZXBsYWNlID8gcXVldWVbMF0gOiBpbnN0LnN0YXRlKTtcbiAgICBmb3IgKHZhciBpID0gcmVwbGFj
ZSA/IDEgOiAwOyBpIDwgcXVldWUubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBwYXJ0aWFsID0g
cXVldWVbaV07XG4gICAgICBfYXNzaWduKG5leHRTdGF0ZSwgdHlwZW9mIHBhcnRpYWwgPT09ICdm
dW5jdGlvbicgPyBwYXJ0aWFsLmNhbGwoaW5zdCwgbmV4dFN0YXRlLCBwcm9wcywgY29udGV4dCkg
OiBwYXJ0aWFsKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV4dFN0YXRlO1xuICB9LFxuXG4gIC8q
KlxuICAgKiBNZXJnZXMgbmV3IHByb3BzIGFuZCBzdGF0ZSwgbm90aWZpZXMgZGVsZWdhdGUgbWV0
aG9kcyBvZiB1cGRhdGUgYW5kXG4gICAqIHBlcmZvcm1zIHVwZGF0ZS5cbiAgICpcbiAgICogQHBh
cmFtIHtSZWFjdEVsZW1lbnR9IG5leHRFbGVtZW50IE5leHQgZWxlbWVudFxuICAgKiBAcGFyYW0g
e29iamVjdH0gbmV4dFByb3BzIE5leHQgcHVibGljIG9iamVjdCB0byBzZXQgYXMgcHJvcGVydGll
cy5cbiAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXh0U3RhdGUgTmV4dCBvYmplY3QgdG8gc2V0IGFz
IHN0YXRlLlxuICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRDb250ZXh0IE5leHQgcHVibGljIG9i
amVjdCB0byBzZXQgYXMgY29udGV4dC5cbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5z
YWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0gez9vYmplY3R9IHVubWFza2VkQ29udGV4
dFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3BlcmZvcm1Db21wb25lbnRVcGRhdGU6IGZ1bmN0
aW9uIChuZXh0RWxlbWVudCwgbmV4dFByb3BzLCBuZXh0U3RhdGUsIG5leHRDb250ZXh0LCB0cmFu
c2FjdGlvbiwgdW5tYXNrZWRDb250ZXh0KSB7XG4gICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAg
ICB2YXIgaW5zdCA9IHRoaXMuX2luc3RhbmNlO1xuXG4gICAgdmFyIGhhc0NvbXBvbmVudERpZFVw
ZGF0ZSA9IEJvb2xlYW4oaW5zdC5jb21wb25lbnREaWRVcGRhdGUpO1xuICAgIHZhciBwcmV2UHJv
cHM7XG4gICAgdmFyIHByZXZTdGF0ZTtcbiAgICB2YXIgcHJldkNvbnRleHQ7XG4gICAgaWYgKGhh
c0NvbXBvbmVudERpZFVwZGF0ZSkge1xuICAgICAgcHJldlByb3BzID0gaW5zdC5wcm9wcztcbiAg
ICAgIHByZXZTdGF0ZSA9IGluc3Quc3RhdGU7XG4gICAgICBwcmV2Q29udGV4dCA9IGluc3QuY29u
dGV4dDtcbiAgICB9XG5cbiAgICBpZiAoaW5zdC5jb21wb25lbnRXaWxsVXBkYXRlKSB7XG4gICAg
ICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBt
ZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIGluc3Qu
Y29tcG9uZW50V2lsbFVwZGF0ZShuZXh0UHJvcHMsIG5leHRTdGF0ZSwgbmV4dENvbnRleHQpO1xu
ICAgICAgICB9LCB0aGlzLl9kZWJ1Z0lELCAnY29tcG9uZW50V2lsbFVwZGF0ZScpO1xuICAgICAg
fSBlbHNlIHtcbiAgICAgICAgaW5zdC5jb21wb25lbnRXaWxsVXBkYXRlKG5leHRQcm9wcywgbmV4
dFN0YXRlLCBuZXh0Q29udGV4dCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fY3VycmVu
dEVsZW1lbnQgPSBuZXh0RWxlbWVudDtcbiAgICB0aGlzLl9jb250ZXh0ID0gdW5tYXNrZWRDb250
ZXh0O1xuICAgIGluc3QucHJvcHMgPSBuZXh0UHJvcHM7XG4gICAgaW5zdC5zdGF0ZSA9IG5leHRT
dGF0ZTtcbiAgICBpbnN0LmNvbnRleHQgPSBuZXh0Q29udGV4dDtcblxuICAgIHRoaXMuX3VwZGF0
ZVJlbmRlcmVkQ29tcG9uZW50KHRyYW5zYWN0aW9uLCB1bm1hc2tlZENvbnRleHQpO1xuXG4gICAg
aWYgKGhhc0NvbXBvbmVudERpZFVwZGF0ZSkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3Vu
dFJlYWR5KCkuZW5xdWV1ZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgbWVhc3VyZUxpZmVDeWNs
ZVBlcmYoaW5zdC5jb21wb25lbnREaWRVcGRhdGUuYmluZChpbnN0LCBwcmV2UHJvcHMsIHByZXZT
dGF0ZSwgcHJldkNvbnRleHQpLCBfdGhpczIuX2RlYnVnSUQsICdjb21wb25lbnREaWRVcGRhdGUn
KTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cmFuc2FjdGlvbi5nZXRS
ZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGluc3QuY29tcG9uZW50RGlkVXBkYXRlLmJpbmQoaW5z
dCwgcHJldlByb3BzLCBwcmV2U3RhdGUsIHByZXZDb250ZXh0KSwgaW5zdCk7XG4gICAgICB9XG4g
ICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiBDYWxsIHRoZSBjb21wb25lbnQncyBgcmVuZGVyYCBt
ZXRob2QgYW5kIHVwZGF0ZSB0aGUgRE9NIGFjY29yZGluZ2x5LlxuICAgKlxuICAgKiBAcGFyYW0g
e1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBpbnRlcm5hbFxu
ICAgKi9cbiAgX3VwZGF0ZVJlbmRlcmVkQ29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24s
IGNvbnRleHQpIHtcbiAgICB2YXIgcHJldkNvbXBvbmVudEluc3RhbmNlID0gdGhpcy5fcmVuZGVy
ZWRDb21wb25lbnQ7XG4gICAgdmFyIHByZXZSZW5kZXJlZEVsZW1lbnQgPSBwcmV2Q29tcG9uZW50
SW5zdGFuY2UuX2N1cnJlbnRFbGVtZW50O1xuICAgIHZhciBuZXh0UmVuZGVyZWRFbGVtZW50ID0g
dGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KCk7XG5cbiAgICB2YXIgZGVidWdJRCA9IDA7
XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAg
IGRlYnVnSUQgPSB0aGlzLl9kZWJ1Z0lEO1xuICAgIH1cblxuICAgIGlmIChzaG91bGRVcGRhdGVS
ZWFjdENvbXBvbmVudChwcmV2UmVuZGVyZWRFbGVtZW50LCBuZXh0UmVuZGVyZWRFbGVtZW50KSkg
e1xuICAgICAgUmVhY3RSZWNvbmNpbGVyLnJlY2VpdmVDb21wb25lbnQocHJldkNvbXBvbmVudElu
c3RhbmNlLCBuZXh0UmVuZGVyZWRFbGVtZW50LCB0cmFuc2FjdGlvbiwgdGhpcy5fcHJvY2Vzc0No
aWxkQ29udGV4dChjb250ZXh0KSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBvbGRIb3N0Tm9k
ZSA9IFJlYWN0UmVjb25jaWxlci5nZXRIb3N0Tm9kZShwcmV2Q29tcG9uZW50SW5zdGFuY2UpO1xu
ICAgICAgUmVhY3RSZWNvbmNpbGVyLnVubW91bnRDb21wb25lbnQocHJldkNvbXBvbmVudEluc3Rh
bmNlLCBmYWxzZSk7XG5cbiAgICAgIHZhciBub2RlVHlwZSA9IFJlYWN0Tm9kZVR5cGVzLmdldFR5
cGUobmV4dFJlbmRlcmVkRWxlbWVudCk7XG4gICAgICB0aGlzLl9yZW5kZXJlZE5vZGVUeXBlID0g
bm9kZVR5cGU7XG4gICAgICB2YXIgY2hpbGQgPSB0aGlzLl9pbnN0YW50aWF0ZVJlYWN0Q29tcG9u
ZW50KG5leHRSZW5kZXJlZEVsZW1lbnQsIG5vZGVUeXBlICE9PSBSZWFjdE5vZGVUeXBlcy5FTVBU
WSAvKiBzaG91bGRIYXZlRGVidWdJRCAqL1xuICAgICAgKTtcbiAgICAgIHRoaXMuX3JlbmRlcmVk
Q29tcG9uZW50ID0gY2hpbGQ7XG5cbiAgICAgIHZhciBuZXh0TWFya3VwID0gUmVhY3RSZWNvbmNp
bGVyLm1vdW50Q29tcG9uZW50KGNoaWxkLCB0cmFuc2FjdGlvbiwgdGhpcy5faG9zdFBhcmVudCwg
dGhpcy5faG9zdENvbnRhaW5lckluZm8sIHRoaXMuX3Byb2Nlc3NDaGlsZENvbnRleHQoY29udGV4
dCksIGRlYnVnSUQpO1xuXG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJykge1xuICAgICAgICBpZiAoZGVidWdJRCAhPT0gMCkge1xuICAgICAgICAgIHZhciBj
aGlsZERlYnVnSURzID0gY2hpbGQuX2RlYnVnSUQgIT09IDAgPyBbY2hpbGQuX2RlYnVnSURdIDog
W107XG4gICAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uU2V0Q2hpbGRy
ZW4oZGVidWdJRCwgY2hpbGREZWJ1Z0lEcyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAg
dGhpcy5fcmVwbGFjZU5vZGVXaXRoTWFya3VwKG9sZEhvc3ROb2RlLCBuZXh0TWFya3VwLCBwcmV2
Q29tcG9uZW50SW5zdGFuY2UpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogT3ZlcnJpZGRl
biBpbiBzaGFsbG93IHJlbmRlcmluZy5cbiAgICpcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAg
X3JlcGxhY2VOb2RlV2l0aE1hcmt1cDogZnVuY3Rpb24gKG9sZEhvc3ROb2RlLCBuZXh0TWFya3Vw
LCBwcmV2SW5zdGFuY2UpIHtcbiAgICBSZWFjdENvbXBvbmVudEVudmlyb25tZW50LnJlcGxhY2VO
b2RlV2l0aE1hcmt1cChvbGRIb3N0Tm9kZSwgbmV4dE1hcmt1cCwgcHJldkluc3RhbmNlKTtcbiAg
fSxcblxuICAvKipcbiAgICogQHByb3RlY3RlZFxuICAgKi9cbiAgX3JlbmRlclZhbGlkYXRlZENv
bXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4dDogZnVuY3Rpb24gKCkge1xuICAgIHZhciBpbnN0
ID0gdGhpcy5faW5zdGFuY2U7XG4gICAgdmFyIHJlbmRlcmVkRWxlbWVudDtcblxuICAgIGlmIChw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICByZW5kZXJlZEVs
ZW1lbnQgPSBtZWFzdXJlTGlmZUN5Y2xlUGVyZihmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVy
biBpbnN0LnJlbmRlcigpO1xuICAgICAgfSwgdGhpcy5fZGVidWdJRCwgJ3JlbmRlcicpO1xuICAg
IH0gZWxzZSB7XG4gICAgICByZW5kZXJlZEVsZW1lbnQgPSBpbnN0LnJlbmRlcigpO1xuICAgIH1c
blxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAg
ICAvLyBXZSBhbGxvdyBhdXRvLW1vY2tzIHRvIHByb2NlZWQgYXMgaWYgdGhleSdyZSByZXR1cm5p
bmcgbnVsbC5cbiAgICAgIGlmIChyZW5kZXJlZEVsZW1lbnQgPT09IHVuZGVmaW5lZCAmJiBpbnN0
LnJlbmRlci5faXNNb2NrRnVuY3Rpb24pIHtcbiAgICAgICAgLy8gVGhpcyBpcyBwcm9iYWJseSBi
YWQgcHJhY3RpY2UuIENvbnNpZGVyIHdhcm5pbmcgaGVyZSBhbmRcbiAgICAgICAgLy8gZGVwcmVj
YXRpbmcgdGhpcyBjb252ZW5pZW5jZS5cbiAgICAgICAgcmVuZGVyZWRFbGVtZW50ID0gbnVsbDtc
biAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVuZGVyZWRFbGVtZW50O1xuICB9LFxuXG4g
IC8qKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudDog
ZnVuY3Rpb24gKCkge1xuICAgIHZhciByZW5kZXJlZEVsZW1lbnQ7XG4gICAgaWYgKHByb2Nlc3Mu
ZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgfHwgdGhpcy5fY29tcG9zaXRlVHlwZSAhPT0g
Q29tcG9zaXRlVHlwZXMuU3RhdGVsZXNzRnVuY3Rpb25hbCkge1xuICAgICAgUmVhY3RDdXJyZW50
T3duZXIuY3VycmVudCA9IHRoaXM7XG4gICAgICB0cnkge1xuICAgICAgICByZW5kZXJlZEVsZW1l
bnQgPSB0aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQo
KTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQg
PSBudWxsO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZW5kZXJlZEVsZW1lbnQgPSB0
aGlzLl9yZW5kZXJWYWxpZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQoKTtcbiAg
ICB9XG4gICAgIShcbiAgICAvLyBUT0RPOiBBbiBgaXNWYWxpZE5vZGVgIGZ1bmN0aW9uIHdvdWxk
IHByb2JhYmx5IGJlIG1vcmUgYXBwcm9wcmlhdGVcbiAgICByZW5kZXJlZEVsZW1lbnQgPT09IG51
bGwgfHwgcmVuZGVyZWRFbGVtZW50ID09PSBmYWxzZSB8fCBSZWFjdC5pc1ZhbGlkRWxlbWVudChy
ZW5kZXJlZEVsZW1lbnQpKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicg
PyBpbnZhcmlhbnQoZmFsc2UsICclcy5yZW5kZXIoKTogQSB2YWxpZCBSZWFjdCBlbGVtZW50IChv
ciBudWxsKSBtdXN0IGJlIHJldHVybmVkLiBZb3UgbWF5IGhhdmUgcmV0dXJuZWQgdW5kZWZpbmVk
LCBhbiBhcnJheSBvciBzb21lIG90aGVyIGludmFsaWQgb2JqZWN0LicsIHRoaXMuZ2V0TmFtZSgp
IHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogX3Byb2RJbnZhcmlhbnQoJzEwOScsIHRo
aXMuZ2V0TmFtZSgpIHx8ICdSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCcpIDogdm9pZCAwO1xuXG4g
ICAgcmV0dXJuIHJlbmRlcmVkRWxlbWVudDtcbiAgfSxcblxuICAvKipcbiAgICogTGF6aWx5IGFs
bG9jYXRlcyB0aGUgcmVmcyBvYmplY3QgYW5kIHN0b3JlcyBgY29tcG9uZW50YCBhcyBgcmVmYC5c
biAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IHJlZiBSZWZlcmVuY2UgbmFtZS5cbiAgICogQHBh
cmFtIHtjb21wb25lbnR9IGNvbXBvbmVudCBDb21wb25lbnQgdG8gc3RvcmUgYXMgYHJlZmAuXG4g
ICAqIEBmaW5hbFxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgYXR0YWNoUmVmOiBmdW5jdGlvbiAo
cmVmLCBjb21wb25lbnQpIHtcbiAgICB2YXIgaW5zdCA9IHRoaXMuZ2V0UHVibGljSW5zdGFuY2Uo
KTtcbiAgICAhKGluc3QgIT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnU3RhdGVsZXNzIGZ1bmN0aW9uIGNvbXBvbmVudHMg
Y2Fubm90IGhhdmUgcmVmcy4nKSA6IF9wcm9kSW52YXJpYW50KCcxMTAnKSA6IHZvaWQgMDtcbiAg
ICB2YXIgcHVibGljQ29tcG9uZW50SW5zdGFuY2UgPSBjb21wb25lbnQuZ2V0UHVibGljSW5zdGFu
Y2UoKTtcbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xu
ICAgICAgdmFyIGNvbXBvbmVudE5hbWUgPSBjb21wb25lbnQgJiYgY29tcG9uZW50LmdldE5hbWUg
PyBjb21wb25lbnQuZ2V0TmFtZSgpIDogJ2EgY29tcG9uZW50JztcbiAgICAgIHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKHB1YmxpY0NvbXBvbmVudEluc3Rh
bmNlICE9IG51bGwgfHwgY29tcG9uZW50Ll9jb21wb3NpdGVUeXBlICE9PSBDb21wb3NpdGVUeXBl
cy5TdGF0ZWxlc3NGdW5jdGlvbmFsLCAnU3RhdGVsZXNzIGZ1bmN0aW9uIGNvbXBvbmVudHMgY2Fu
bm90IGJlIGdpdmVuIHJlZnMgJyArICcoU2VlIHJlZiBcIiVzXCIgaW4gJXMgY3JlYXRlZCBieSAl
cykuICcgKyAnQXR0ZW1wdHMgdG8gYWNjZXNzIHRoaXMgcmVmIHdpbGwgZmFpbC4nLCByZWYsIGNv
bXBvbmVudE5hbWUsIHRoaXMuZ2V0TmFtZSgpKSA6IHZvaWQgMDtcbiAgICB9XG4gICAgdmFyIHJl
ZnMgPSBpbnN0LnJlZnMgPT09IGVtcHR5T2JqZWN0ID8gaW5zdC5yZWZzID0ge30gOiBpbnN0LnJl
ZnM7XG4gICAgcmVmc1tyZWZdID0gcHVibGljQ29tcG9uZW50SW5zdGFuY2U7XG4gIH0sXG5cbiAg
LyoqXG4gICAqIERldGFjaGVzIGEgcmVmZXJlbmNlIG5hbWUuXG4gICAqXG4gICAqIEBwYXJhbSB7
c3RyaW5nfSByZWYgTmFtZSB0byBkZXJlZmVyZW5jZS5cbiAgICogQGZpbmFsXG4gICAqIEBwcml2
YXRlXG4gICAqL1xuICBkZXRhY2hSZWY6IGZ1bmN0aW9uIChyZWYpIHtcbiAgICB2YXIgcmVmcyA9
IHRoaXMuZ2V0UHVibGljSW5zdGFuY2UoKS5yZWZzO1xuICAgIGRlbGV0ZSByZWZzW3JlZl07XG4g
IH0sXG5cbiAgLyoqXG4gICAqIEdldCBhIHRleHQgZGVzY3JpcHRpb24gb2YgdGhlIGNvbXBvbmVu
dCB0aGF0IGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5IGl0XG4gICAqIGluIGVycm9yIG1lc3NhZ2Vz
LlxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBuYW1lIG9yIG51bGwuXG4gICAqIEBpbnRlcm5h
bFxuICAgKi9cbiAgZ2V0TmFtZTogZnVuY3Rpb24gKCkge1xuICAgIHZhciB0eXBlID0gdGhpcy5f
Y3VycmVudEVsZW1lbnQudHlwZTtcbiAgICB2YXIgY29uc3RydWN0b3IgPSB0aGlzLl9pbnN0YW5j
ZSAmJiB0aGlzLl9pbnN0YW5jZS5jb25zdHJ1Y3RvcjtcbiAgICByZXR1cm4gdHlwZS5kaXNwbGF5
TmFtZSB8fCBjb25zdHJ1Y3RvciAmJiBjb25zdHJ1Y3Rvci5kaXNwbGF5TmFtZSB8fCB0eXBlLm5h
bWUgfHwgY29uc3RydWN0b3IgJiYgY29uc3RydWN0b3IubmFtZSB8fCBudWxsO1xuICB9LFxuXG4g
IC8qKlxuICAgKiBHZXQgdGhlIHB1YmxpY2x5IGFjY2Vzc2libGUgcmVwcmVzZW50YXRpb24gb2Yg
dGhpcyBjb21wb25lbnQgLSBpLmUuIHdoYXRcbiAgICogaXMgZXhwb3NlZCBieSByZWZzIGFuZCBy
ZXR1cm5lZCBieSByZW5kZXIuIENhbiBiZSBudWxsIGZvciBzdGF0ZWxlc3NcbiAgICogY29tcG9u
ZW50cy5cbiAgICpcbiAgICogQHJldHVybiB7UmVhY3RDb21wb25lbnR9IHRoZSBwdWJsaWMgY29t
cG9uZW50IGluc3RhbmNlLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIGdldFB1YmxpY0luc3Rh
bmNlOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGluc3QgPSB0aGlzLl9pbnN0YW5jZTtcbiAgICBp
ZiAodGhpcy5fY29tcG9zaXRlVHlwZSA9PT0gQ29tcG9zaXRlVHlwZXMuU3RhdGVsZXNzRnVuY3Rp
b25hbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHJldHVybiBpbnN0O1xuICB9
LFxuXG4gIC8vIFN0dWJcbiAgX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQ6IG51bGxcbn07XG5c
bm1vZHVsZS5leHBvcnRzID0gUmVhY3RDb21wb3NpdGVDb21wb25lbnQ7XG5cblxuLyoqKioqKioq
KioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFj
dENvbXBvc2l0ZUNvbXBvbmVudC5qc1xuICoqIG1vZHVsZSBpZCA9IDEzNlxuICoqIG1vZHVsZSBj
aHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbi8qIGds
b2JhbHMgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fKi9cblxuJ3VzZSBzdHJpY3QnO1xu
XG52YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVu
dFRyZWUnKTtcbnZhciBSZWFjdERlZmF1bHRJbmplY3Rpb24gPSByZXF1aXJlKCcuL1JlYWN0RGVm
YXVsdEluamVjdGlvbicpO1xudmFyIFJlYWN0TW91bnQgPSByZXF1aXJlKCcuL1JlYWN0TW91bnQn
KTtcbnZhciBSZWFjdFJlY29uY2lsZXIgPSByZXF1aXJlKCcuL1JlYWN0UmVjb25jaWxlcicpO1xu
dmFyIFJlYWN0VXBkYXRlcyA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVzJyk7XG52YXIgUmVhY3RW
ZXJzaW9uID0gcmVxdWlyZSgnLi9SZWFjdFZlcnNpb24nKTtcblxudmFyIGZpbmRET01Ob2RlID0g
cmVxdWlyZSgnLi9maW5kRE9NTm9kZScpO1xudmFyIGdldEhvc3RDb21wb25lbnRGcm9tQ29tcG9z
aXRlID0gcmVxdWlyZSgnLi9nZXRIb3N0Q29tcG9uZW50RnJvbUNvbXBvc2l0ZScpO1xudmFyIHJl
bmRlclN1YnRyZWVJbnRvQ29udGFpbmVyID0gcmVxdWlyZSgnLi9yZW5kZXJTdWJ0cmVlSW50b0Nv
bnRhaW5lcicpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5c
blJlYWN0RGVmYXVsdEluamVjdGlvbi5pbmplY3QoKTtcblxudmFyIFJlYWN0RE9NID0ge1xuICBm
aW5kRE9NTm9kZTogZmluZERPTU5vZGUsXG4gIHJlbmRlcjogUmVhY3RNb3VudC5yZW5kZXIsXG4g
IHVubW91bnRDb21wb25lbnRBdE5vZGU6IFJlYWN0TW91bnQudW5tb3VudENvbXBvbmVudEF0Tm9k
ZSxcbiAgdmVyc2lvbjogUmVhY3RWZXJzaW9uLFxuXG4gIC8qIGVzbGludC1kaXNhYmxlIGNhbWVs
Y2FzZSAqL1xuICB1bnN0YWJsZV9iYXRjaGVkVXBkYXRlczogUmVhY3RVcGRhdGVzLmJhdGNoZWRV
cGRhdGVzLFxuICB1bnN0YWJsZV9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjogcmVuZGVyU3Vi
dHJlZUludG9Db250YWluZXJcbiAgLyogZXNsaW50LWVuYWJsZSBjYW1lbGNhc2UgKi9cbn07XG5c
bi8vIEluamVjdCB0aGUgcnVudGltZSBpbnRvIGEgZGV2dG9vbHMgZ2xvYmFsIGhvb2sgcmVnYXJk
bGVzcyBvZiBicm93c2VyLlxuLy8gQWxsb3dzIGZvciBkZWJ1Z2dpbmcgd2hlbiB0aGUgaG9vayBp
cyBpbmplY3RlZCBvbiB0aGUgcGFnZS5cbmlmICh0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9C
QUxfSE9PS19fICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9C
QUxfSE9PS19fLmluamVjdCA9PT0gJ2Z1bmN0aW9uJykge1xuICBfX1JFQUNUX0RFVlRPT0xTX0dM
T0JBTF9IT09LX18uaW5qZWN0KHtcbiAgICBDb21wb25lbnRUcmVlOiB7XG4gICAgICBnZXRDbG9z
ZXN0SW5zdGFuY2VGcm9tTm9kZTogUmVhY3RET01Db21wb25lbnRUcmVlLmdldENsb3Nlc3RJbnN0
YW5jZUZyb21Ob2RlLFxuICAgICAgZ2V0Tm9kZUZyb21JbnN0YW5jZTogZnVuY3Rpb24gKGluc3Qp
IHtcbiAgICAgICAgLy8gaW5zdCBpcyBhbiBpbnRlcm5hbCBpbnN0YW5jZSAoYnV0IGNvdWxkIGJl
IGEgY29tcG9zaXRlKVxuICAgICAgICBpZiAoaW5zdC5fcmVuZGVyZWRDb21wb25lbnQpIHtcbiAg
ICAgICAgICBpbnN0ID0gZ2V0SG9zdENvbXBvbmVudEZyb21Db21wb3NpdGUoaW5zdCk7XG4gICAg
ICAgIH1cbiAgICAgICAgaWYgKGluc3QpIHtcbiAgICAgICAgICByZXR1cm4gUmVhY3RET01Db21w
b25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7XG4gICAgICAgIH0gZWxzZSB7XG4g
ICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuICAgIE1v
dW50OiBSZWFjdE1vdW50LFxuICAgIFJlY29uY2lsZXI6IFJlYWN0UmVjb25jaWxlclxuICB9KTtc
bn1cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFy
IEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnZmJqcy9saWIvRXhlY3V0aW9uRW52aXJv
bm1lbnQnKTtcbiAgaWYgKEV4ZWN1dGlvbkVudmlyb25tZW50LmNhblVzZURPTSAmJiB3aW5kb3cu
dG9wID09PSB3aW5kb3cuc2VsZikge1xuICAgIC8vIEZpcnN0IGNoZWNrIGlmIGRldnRvb2xzIGlz
IG5vdCBpbnN0YWxsZWRcbiAgICBpZiAodHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hP
T0tfXyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIElmIHdlJ3JlIGluIENocm9tZSBvciBG
aXJlZm94LCBwcm92aWRlIGEgZG93bmxvYWQgbGluayBpZiBub3QgaW5zdGFsbGVkLlxuICAgICAg
aWYgKG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignQ2hyb21lJykgPiAtMSAmJiBuYXZpZ2F0
b3IudXNlckFnZW50LmluZGV4T2YoJ0VkZ2UnKSA9PT0gLTEgfHwgbmF2aWdhdG9yLnVzZXJBZ2Vu
dC5pbmRleE9mKCdGaXJlZm94JykgPiAtMSkge1xuICAgICAgICAvLyBGaXJlZm94IGRvZXMgbm90
IGhhdmUgdGhlIGlzc3VlIHdpdGggZGV2dG9vbHMgbG9hZGVkIG92ZXIgZmlsZTovL1xuICAgICAg
ICB2YXIgc2hvd0ZpbGVVcmxNZXNzYWdlID0gd2luZG93LmxvY2F0aW9uLnByb3RvY29sLmluZGV4
T2YoJ2h0dHAnKSA9PT0gLTEgJiYgbmF2aWdhdG9yLnVzZXJBZ2VudC5pbmRleE9mKCdGaXJlZm94
JykgPT09IC0xO1xuICAgICAgICBjb25zb2xlLmRlYnVnKCdEb3dubG9hZCB0aGUgUmVhY3QgRGV2
VG9vbHMgJyArIChzaG93RmlsZVVybE1lc3NhZ2UgPyAnYW5kIHVzZSBhbiBIVFRQIHNlcnZlciAo
aW5zdGVhZCBvZiBhIGZpbGU6IFVSTCkgJyA6ICcnKSArICdmb3IgYSBiZXR0ZXIgZGV2ZWxvcG1l
bnQgZXhwZXJpZW5jZTogJyArICdodHRwczovL2ZiLm1lL3JlYWN0LWRldnRvb2xzJyk7XG4gICAg
ICB9XG4gICAgfVxuXG4gICAgdmFyIHRlc3RGdW5jID0gZnVuY3Rpb24gdGVzdEZuKCkge307XG4g
ICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoKHRlc3RG
dW5jLm5hbWUgfHwgdGVzdEZ1bmMudG9TdHJpbmcoKSkuaW5kZXhPZigndGVzdEZuJykgIT09IC0x
LCBcIkl0IGxvb2tzIGxpa2UgeW91J3JlIHVzaW5nIGEgbWluaWZpZWQgY29weSBvZiB0aGUgZGV2
ZWxvcG1lbnQgYnVpbGQgXCIgKyAnb2YgUmVhY3QuIFdoZW4gZGVwbG95aW5nIFJlYWN0IGFwcHMg
dG8gcHJvZHVjdGlvbiwgbWFrZSBzdXJlIHRvIHVzZSAnICsgJ3RoZSBwcm9kdWN0aW9uIGJ1aWxk
IHdoaWNoIHNraXBzIGRldmVsb3BtZW50IHdhcm5pbmdzIGFuZCBpcyBmYXN0ZXIuICcgKyAnU2Vl
IGh0dHBzOi8vZmIubWUvcmVhY3QtbWluaWZpY2F0aW9uIGZvciBtb3JlIGRldGFpbHMuJykgOiB2
b2lkIDA7XG5cbiAgICAvLyBJZiB3ZSdyZSBpbiBJRTgsIGNoZWNrIHRvIHNlZSBpZiB3ZSBhcmUg
aW4gY29tcGF0aWJpbGl0eSBtb2RlIGFuZCBwcm92aWRlXG4gICAgLy8gaW5mb3JtYXRpb24gb24g
cHJldmVudGluZyBjb21wYXRpYmlsaXR5IG1vZGVcbiAgICB2YXIgaWVDb21wYXRpYmlsaXR5TW9k
ZSA9IGRvY3VtZW50LmRvY3VtZW50TW9kZSAmJiBkb2N1bWVudC5kb2N1bWVudE1vZGUgPCA4O1xu
XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoIWll
Q29tcGF0aWJpbGl0eU1vZGUsICdJbnRlcm5ldCBFeHBsb3JlciBpcyBydW5uaW5nIGluIGNvbXBh
dGliaWxpdHkgbW9kZTsgcGxlYXNlIGFkZCB0aGUgJyArICdmb2xsb3dpbmcgdGFnIHRvIHlvdXIg
SFRNTCB0byBwcmV2ZW50IHRoaXMgZnJvbSBoYXBwZW5pbmc6ICcgKyAnPG1ldGEgaHR0cC1lcXVp
dj1cIlgtVUEtQ29tcGF0aWJsZVwiIGNvbnRlbnQ9XCJJRT1lZGdlXCIgLz4nKSA6IHZvaWQgMDtc
blxuICAgIHZhciBleHBlY3RlZEZlYXR1cmVzID0gW1xuICAgIC8vIHNoaW1zXG4gICAgQXJyYXku
aXNBcnJheSwgQXJyYXkucHJvdG90eXBlLmV2ZXJ5LCBBcnJheS5wcm90b3R5cGUuZm9yRWFjaCwg
QXJyYXkucHJvdG90eXBlLmluZGV4T2YsIEFycmF5LnByb3RvdHlwZS5tYXAsIERhdGUubm93LCBG
dW5jdGlvbi5wcm90b3R5cGUuYmluZCwgT2JqZWN0LmtleXMsIFN0cmluZy5wcm90b3R5cGUudHJp
bV07XG5cbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGV4cGVjdGVkRmVhdHVyZXMubGVuZ3RoOyBp
KyspIHtcbiAgICAgIGlmICghZXhwZWN0ZWRGZWF0dXJlc1tpXSkge1xuICAgICAgICBwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ09uZSBvciBt
b3JlIEVTNSBzaGltcyBleHBlY3RlZCBieSBSZWFjdCBhcmUgbm90IGF2YWlsYWJsZTogJyArICdo
dHRwczovL2ZiLm1lL3JlYWN0LXdhcm5pbmctcG9seWZpbGxzJykgOiB2b2lkIDA7XG4gICAgICAg
IGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICB2YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSByZXF1
aXJlKCcuL1JlYWN0SW5zdHJ1bWVudGF0aW9uJyk7XG4gIHZhciBSZWFjdERPTVVua25vd25Qcm9w
ZXJ0eUhvb2sgPSByZXF1aXJlKCcuL1JlYWN0RE9NVW5rbm93blByb3BlcnR5SG9vaycpO1xuICB2
YXIgUmVhY3RET01OdWxsSW5wdXRWYWx1ZVByb3BIb29rID0gcmVxdWlyZSgnLi9SZWFjdERPTU51
bGxJbnB1dFZhbHVlUHJvcEhvb2snKTtcbiAgdmFyIFJlYWN0RE9NSW52YWxpZEFSSUFIb29rID0g
cmVxdWlyZSgnLi9SZWFjdERPTUludmFsaWRBUklBSG9vaycpO1xuXG4gIFJlYWN0SW5zdHJ1bWVu
dGF0aW9uLmRlYnVnVG9vbC5hZGRIb29rKFJlYWN0RE9NVW5rbm93blByb3BlcnR5SG9vayk7XG4g
IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5hZGRIb29rKFJlYWN0RE9NTnVsbElucHV0
VmFsdWVQcm9wSG9vayk7XG4gIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5hZGRIb29r
KFJlYWN0RE9NSW52YWxpZEFSSUFIb29rKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERP
TTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9y
ZWFjdC1kb20vbGliL1JlYWN0RE9NLmpzXG4gKiogbW9kdWxlIGlkID0gMTM3XG4gKiogbW9kdWxl
IGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuLyog
Z2xvYmFsIGhhc093blByb3BlcnR5OnRydWUgKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3By
b2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpLFxuICAgIF9hc3Np
Z24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBBdXRvRm9jdXNVdGlscyA9IHJl
cXVpcmUoJy4vQXV0b0ZvY3VzVXRpbHMnKTtcbnZhciBDU1NQcm9wZXJ0eU9wZXJhdGlvbnMgPSBy
ZXF1aXJlKCcuL0NTU1Byb3BlcnR5T3BlcmF0aW9ucycpO1xudmFyIERPTUxhenlUcmVlID0gcmVx
dWlyZSgnLi9ET01MYXp5VHJlZScpO1xudmFyIERPTU5hbWVzcGFjZXMgPSByZXF1aXJlKCcuL0RP
TU5hbWVzcGFjZXMnKTtcbnZhciBET01Qcm9wZXJ0eSA9IHJlcXVpcmUoJy4vRE9NUHJvcGVydHkn
KTtcbnZhciBET01Qcm9wZXJ0eU9wZXJhdGlvbnMgPSByZXF1aXJlKCcuL0RPTVByb3BlcnR5T3Bl
cmF0aW9ucycpO1xudmFyIEV2ZW50UGx1Z2luSHViID0gcmVxdWlyZSgnLi9FdmVudFBsdWdpbkh1
YicpO1xudmFyIEV2ZW50UGx1Z2luUmVnaXN0cnkgPSByZXF1aXJlKCcuL0V2ZW50UGx1Z2luUmVn
aXN0cnknKTtcbnZhciBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIgPSByZXF1aXJlKCcuL1JlYWN0
QnJvd3NlckV2ZW50RW1pdHRlcicpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50RmxhZ3MgPSByZXF1
aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50RmxhZ3MnKTtcbnZhciBSZWFjdERPTUNvbXBvbmVudFRy
ZWUgPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpO1xudmFyIFJlYWN0RE9NSW5w
dXQgPSByZXF1aXJlKCcuL1JlYWN0RE9NSW5wdXQnKTtcbnZhciBSZWFjdERPTU9wdGlvbiA9IHJl
cXVpcmUoJy4vUmVhY3RET01PcHRpb24nKTtcbnZhciBSZWFjdERPTVNlbGVjdCA9IHJlcXVpcmUo
Jy4vUmVhY3RET01TZWxlY3QnKTtcbnZhciBSZWFjdERPTVRleHRhcmVhID0gcmVxdWlyZSgnLi9S
ZWFjdERPTVRleHRhcmVhJyk7XG52YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSByZXF1aXJlKCcu
L1JlYWN0SW5zdHJ1bWVudGF0aW9uJyk7XG52YXIgUmVhY3RNdWx0aUNoaWxkID0gcmVxdWlyZSgn
Li9SZWFjdE11bHRpQ2hpbGQnKTtcbnZhciBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9u
ID0gcmVxdWlyZSgnLi9SZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uJyk7XG5cbnZhciBl
bXB0eUZ1bmN0aW9uID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlGdW5jdGlvbicpO1xudmFyIGVz
Y2FwZVRleHRDb250ZW50Rm9yQnJvd3NlciA9IHJlcXVpcmUoJy4vZXNjYXBlVGV4dENvbnRlbnRG
b3JCcm93c2VyJyk7XG52YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50
Jyk7XG52YXIgaXNFdmVudFN1cHBvcnRlZCA9IHJlcXVpcmUoJy4vaXNFdmVudFN1cHBvcnRlZCcp
O1xudmFyIHNoYWxsb3dFcXVhbCA9IHJlcXVpcmUoJ2ZianMvbGliL3NoYWxsb3dFcXVhbCcpO1xu
dmFyIGlucHV0VmFsdWVUcmFja2luZyA9IHJlcXVpcmUoJy4vaW5wdXRWYWx1ZVRyYWNraW5nJyk7
XG52YXIgdmFsaWRhdGVET01OZXN0aW5nID0gcmVxdWlyZSgnLi92YWxpZGF0ZURPTU5lc3Rpbmcn
KTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgRmxh
Z3MgPSBSZWFjdERPTUNvbXBvbmVudEZsYWdzO1xudmFyIGRlbGV0ZUxpc3RlbmVyID0gRXZlbnRQ
bHVnaW5IdWIuZGVsZXRlTGlzdGVuZXI7XG52YXIgZ2V0Tm9kZSA9IFJlYWN0RE9NQ29tcG9uZW50
VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlO1xudmFyIGxpc3RlblRvID0gUmVhY3RCcm93c2VyRXZl
bnRFbWl0dGVyLmxpc3RlblRvO1xudmFyIHJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzID0gRXZlbnRQ
bHVnaW5SZWdpc3RyeS5yZWdpc3RyYXRpb25OYW1lTW9kdWxlcztcblxuLy8gRm9yIHF1aWNrbHkg
bWF0Y2hpbmcgY2hpbGRyZW4gdHlwZSwgdG8gdGVzdCBpZiBjYW4gYmUgdHJlYXRlZCBhcyBjb250
ZW50LlxudmFyIENPTlRFTlRfVFlQRVMgPSB7IHN0cmluZzogdHJ1ZSwgbnVtYmVyOiB0cnVlIH07
XG5cbnZhciBTVFlMRSA9ICdzdHlsZSc7XG52YXIgSFRNTCA9ICdfX2h0bWwnO1xudmFyIFJFU0VS
VkVEX1BST1BTID0ge1xuICBjaGlsZHJlbjogbnVsbCxcbiAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhU
TUw6IG51bGwsXG4gIHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZzogbnVsbFxufTtcblxu
Ly8gTm9kZSB0eXBlIGZvciBkb2N1bWVudCBmcmFnbWVudHMgKE5vZGUuRE9DVU1FTlRfRlJBR01F
TlRfTk9ERSkuXG52YXIgRE9DX0ZSQUdNRU5UX1RZUEUgPSAxMTtcblxuZnVuY3Rpb24gZ2V0RGVj
bGFyYXRpb25FcnJvckFkZGVuZHVtKGludGVybmFsSW5zdGFuY2UpIHtcbiAgaWYgKGludGVybmFs
SW5zdGFuY2UpIHtcbiAgICB2YXIgb3duZXIgPSBpbnRlcm5hbEluc3RhbmNlLl9jdXJyZW50RWxl
bWVudC5fb3duZXIgfHwgbnVsbDtcbiAgICBpZiAob3duZXIpIHtcbiAgICAgIHZhciBuYW1lID0g
b3duZXIuZ2V0TmFtZSgpO1xuICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuICcgVGhp
cyBET00gbm9kZSB3YXMgcmVuZGVyZWQgYnkgYCcgKyBuYW1lICsgJ2AuJztcbiAgICAgIH1cbiAg
ICB9XG4gIH1cbiAgcmV0dXJuICcnO1xufVxuXG5mdW5jdGlvbiBmcmllbmRseVN0cmluZ2lmeShv
YmopIHtcbiAgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnKSB7XG4gICAgaWYgKEFycmF5Lmlz
QXJyYXkob2JqKSkge1xuICAgICAgcmV0dXJuICdbJyArIG9iai5tYXAoZnJpZW5kbHlTdHJpbmdp
ZnkpLmpvaW4oJywgJykgKyAnXSc7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBwYWlycyA9IFtd
O1xuICAgICAgZm9yICh2YXIga2V5IGluIG9iaikge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3Rv
dHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkge1xuICAgICAgICAgIHZhciBrZXlF
c2NhcGVkID0gL15bYS16JF9dW1xcdyRfXSokL2kudGVzdChrZXkpID8ga2V5IDogSlNPTi5zdHJp
bmdpZnkoa2V5KTtcbiAgICAgICAgICBwYWlycy5wdXNoKGtleUVzY2FwZWQgKyAnOiAnICsgZnJp
ZW5kbHlTdHJpbmdpZnkob2JqW2tleV0pKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0
dXJuICd7JyArIHBhaXJzLmpvaW4oJywgJykgKyAnfSc7XG4gICAgfVxuICB9IGVsc2UgaWYgKHR5
cGVvZiBvYmogPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KG9iaik7
XG4gIH0gZWxzZSBpZiAodHlwZW9mIG9iaiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiAn
W2Z1bmN0aW9uIG9iamVjdF0nO1xuICB9XG4gIC8vIERpZmZlcnMgZnJvbSBKU09OLnN0cmluZ2lm
eSBpbiB0aGF0IHVuZGVmaW5lZCBiZWNhdXNlIHVuZGVmaW5lZCBhbmQgdGhhdFxuICAvLyBpbmYg
YW5kIG5hbiBkb24ndCBiZWNvbWUgbnVsbFxuICByZXR1cm4gU3RyaW5nKG9iaik7XG59XG5cbnZh
ciBzdHlsZU11dGF0aW9uV2FybmluZyA9IHt9O1xuXG5mdW5jdGlvbiBjaGVja0FuZFdhcm5Gb3JN
dXRhdGVkU3R5bGUoc3R5bGUxLCBzdHlsZTIsIGNvbXBvbmVudCkge1xuICBpZiAoc3R5bGUxID09
IG51bGwgfHwgc3R5bGUyID09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHNoYWxs
b3dFcXVhbChzdHlsZTEsIHN0eWxlMikpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICB2YXIgY29t
cG9uZW50TmFtZSA9IGNvbXBvbmVudC5fdGFnO1xuICB2YXIgb3duZXIgPSBjb21wb25lbnQuX2N1
cnJlbnRFbGVtZW50Ll9vd25lcjtcbiAgdmFyIG93bmVyTmFtZTtcbiAgaWYgKG93bmVyKSB7XG4g
ICAgb3duZXJOYW1lID0gb3duZXIuZ2V0TmFtZSgpO1xuICB9XG5cbiAgdmFyIGhhc2ggPSBvd25l
ck5hbWUgKyAnfCcgKyBjb21wb25lbnROYW1lO1xuXG4gIGlmIChzdHlsZU11dGF0aW9uV2Fybmlu
Zy5oYXNPd25Qcm9wZXJ0eShoYXNoKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHN0eWxlTXV0
YXRpb25XYXJuaW5nW2hhc2hdID0gdHJ1ZTtcblxuICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0g
J3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2Alc2Agd2FzIHBhc3NlZCBhIHN0eWxlIG9i
amVjdCB0aGF0IGhhcyBwcmV2aW91c2x5IGJlZW4gbXV0YXRlZC4gJyArICdNdXRhdGluZyBgc3R5
bGVgIGlzIGRlcHJlY2F0ZWQuIENvbnNpZGVyIGNsb25pbmcgaXQgYmVmb3JlaGFuZC4gQ2hlY2sg
JyArICd0aGUgYHJlbmRlcmAgJXMuIFByZXZpb3VzIHN0eWxlOiAlcy4gTXV0YXRlZCBzdHlsZTog
JXMuJywgY29tcG9uZW50TmFtZSwgb3duZXIgPyAnb2YgYCcgKyBvd25lck5hbWUgKyAnYCcgOiAn
dXNpbmcgPCcgKyBjb21wb25lbnROYW1lICsgJz4nLCBmcmllbmRseVN0cmluZ2lmeShzdHlsZTEp
LCBmcmllbmRseVN0cmluZ2lmeShzdHlsZTIpKSA6IHZvaWQgMDtcbn1cblxuLyoqXG4gKiBAcGFy
YW0ge29iamVjdH0gY29tcG9uZW50XG4gKiBAcGFyYW0gez9vYmplY3R9IHByb3BzXG4gKi9cbmZ1
bmN0aW9uIGFzc2VydFZhbGlkUHJvcHMoY29tcG9uZW50LCBwcm9wcykge1xuICBpZiAoIXByb3Bz
KSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIC8vIE5vdGUgdGhlIHVzZSBvZiBgPT1gIHdoaWNoIGNo
ZWNrcyBmb3IgbnVsbCBvciB1bmRlZmluZWQuXG4gIGlmICh2b2lkRWxlbWVudFRhZ3NbY29tcG9u
ZW50Ll90YWddKSB7XG4gICAgIShwcm9wcy5jaGlsZHJlbiA9PSBudWxsICYmIHByb3BzLmRhbmdl
cm91c2x5U2V0SW5uZXJIVE1MID09IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJyVzIGlzIGEgdm9pZCBlbGVtZW50IHRhZyBh
bmQgbXVzdCBuZWl0aGVyIGhhdmUgYGNoaWxkcmVuYCBub3IgdXNlIGBkYW5nZXJvdXNseVNldElu
bmVySFRNTGAuJXMnLCBjb21wb25lbnQuX3RhZywgY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5f
b3duZXIgPyAnIENoZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mICcgKyBjb21wb25lbnQuX2N1cnJl
bnRFbGVtZW50Ll9vd25lci5nZXROYW1lKCkgKyAnLicgOiAnJykgOiBfcHJvZEludmFyaWFudCgn
MTM3JywgY29tcG9uZW50Ll90YWcsIGNvbXBvbmVudC5fY3VycmVudEVsZW1lbnQuX293bmVyID8g
JyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiAnICsgY29tcG9uZW50Ll9jdXJyZW50RWxlbWVu
dC5fb3duZXIuZ2V0TmFtZSgpICsgJy4nIDogJycpIDogdm9pZCAwO1xuICB9XG4gIGlmIChwcm9w
cy5kYW5nZXJvdXNseVNldElubmVySFRNTCAhPSBudWxsKSB7XG4gICAgIShwcm9wcy5jaGlsZHJl
biA9PSBudWxsKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZh
cmlhbnQoZmFsc2UsICdDYW4gb25seSBzZXQgb25lIG9mIGBjaGlsZHJlbmAgb3IgYHByb3BzLmRh
bmdlcm91c2x5U2V0SW5uZXJIVE1MYC4nKSA6IF9wcm9kSW52YXJpYW50KCc2MCcpIDogdm9pZCAw
O1xuICAgICEodHlwZW9mIHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MID09PSAnb2JqZWN0
JyAmJiBIVE1MIGluIHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MKSA/IHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdgcHJvcHMuZGFu
Z2Vyb3VzbHlTZXRJbm5lckhUTUxgIG11c3QgYmUgaW4gdGhlIGZvcm0gYHtfX2h0bWw6IC4uLn1g
LiBQbGVhc2UgdmlzaXQgaHR0cHM6Ly9mYi5tZS9yZWFjdC1pbnZhcmlhbnQtZGFuZ2Vyb3VzbHkt
c2V0LWlubmVyLWh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uJykgOiBfcHJvZEludmFyaWFudCgn
NjEnKSA6IHZvaWQgMDtcbiAgfVxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJykge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3
YXJuaW5nKHByb3BzLmlubmVySFRNTCA9PSBudWxsLCAnRGlyZWN0bHkgc2V0dGluZyBwcm9wZXJ0
eSBgaW5uZXJIVE1MYCBpcyBub3QgcGVybWl0dGVkLiAnICsgJ0ZvciBtb3JlIGluZm9ybWF0aW9u
LCBsb29rdXAgZG9jdW1lbnRhdGlvbiBvbiBgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxgLicpIDog
dm9pZCAwO1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKHByb3BzLnN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZyB8fCAhcHJvcHMuY29udGVu
dEVkaXRhYmxlIHx8IHByb3BzLmNoaWxkcmVuID09IG51bGwsICdBIGNvbXBvbmVudCBpcyBgY29u
dGVudEVkaXRhYmxlYCBhbmQgY29udGFpbnMgYGNoaWxkcmVuYCBtYW5hZ2VkIGJ5ICcgKyAnUmVh
Y3QuIEl0IGlzIG5vdyB5b3VyIHJlc3BvbnNpYmlsaXR5IHRvIGd1YXJhbnRlZSB0aGF0IG5vbmUg
b2YgJyArICd0aG9zZSBub2RlcyBhcmUgdW5leHBlY3RlZGx5IG1vZGlmaWVkIG9yIGR1cGxpY2F0
ZWQuIFRoaXMgaXMgJyArICdwcm9iYWJseSBub3QgaW50ZW50aW9uYWwuJykgOiB2b2lkIDA7XG4g
ICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcocHJvcHMu
b25Gb2N1c0luID09IG51bGwgJiYgcHJvcHMub25Gb2N1c091dCA9PSBudWxsLCAnUmVhY3QgdXNl
cyBvbkZvY3VzIGFuZCBvbkJsdXIgaW5zdGVhZCBvZiBvbkZvY3VzSW4gYW5kIG9uRm9jdXNPdXQu
ICcgKyAnQWxsIFJlYWN0IGV2ZW50cyBhcmUgbm9ybWFsaXplZCB0byBidWJibGUsIHNvIG9uRm9j
dXNJbiBhbmQgb25Gb2N1c091dCAnICsgJ2FyZSBub3QgbmVlZGVkL3N1cHBvcnRlZCBieSBSZWFj
dC4nKSA6IHZvaWQgMDtcbiAgfVxuICAhKHByb3BzLnN0eWxlID09IG51bGwgfHwgdHlwZW9mIHBy
b3BzLnN0eWxlID09PSAnb2JqZWN0JykgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnVGhlIGBzdHlsZWAgcHJvcCBleHBlY3RzIGEgbWFw
cGluZyBmcm9tIHN0eWxlIHByb3BlcnRpZXMgdG8gdmFsdWVzLCBub3QgYSBzdHJpbmcuIEZvciBl
eGFtcGxlLCBzdHlsZT17e21hcmdpblJpZ2h0OiBzcGFjaW5nICsgXFwnZW1cXCd9fSB3aGVuIHVz
aW5nIEpTWC4lcycsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShjb21wb25lbnQpKSA6IF9w
cm9kSW52YXJpYW50KCc2MicsIGdldERlY2xhcmF0aW9uRXJyb3JBZGRlbmR1bShjb21wb25lbnQp
KSA6IHZvaWQgMDtcbn1cblxuZnVuY3Rpb24gZW5xdWV1ZVB1dExpc3RlbmVyKGluc3QsIHJlZ2lz
dHJhdGlvbk5hbWUsIGxpc3RlbmVyLCB0cmFuc2FjdGlvbikge1xuICBpZiAodHJhbnNhY3Rpb24g
aW5zdGFuY2VvZiBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9uKSB7XG4gICAgcmV0dXJu
O1xuICB9XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4g
ICAgLy8gSUU4IGhhcyBubyBBUEkgZm9yIGV2ZW50IGNhcHR1cmluZyBhbmQgdGhlIGBvblNjcm9s
bGAgZXZlbnQgZG9lc24ndFxuICAgIC8vIGJ1YmJsZS5cbiAgICBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhyZWdpc3RyYXRpb25OYW1lICE9PSAnb25TY3Jv
bGwnIHx8IGlzRXZlbnRTdXBwb3J0ZWQoJ3Njcm9sbCcsIHRydWUpLCBcIlRoaXMgYnJvd3NlciBk
b2Vzbid0IHN1cHBvcnQgdGhlIGBvblNjcm9sbGAgZXZlbnRcIikgOiB2b2lkIDA7XG4gIH1cbiAg
dmFyIGNvbnRhaW5lckluZm8gPSBpbnN0Ll9ob3N0Q29udGFpbmVySW5mbztcbiAgdmFyIGlzRG9j
dW1lbnRGcmFnbWVudCA9IGNvbnRhaW5lckluZm8uX25vZGUgJiYgY29udGFpbmVySW5mby5fbm9k
ZS5ub2RlVHlwZSA9PT0gRE9DX0ZSQUdNRU5UX1RZUEU7XG4gIHZhciBkb2MgPSBpc0RvY3VtZW50
RnJhZ21lbnQgPyBjb250YWluZXJJbmZvLl9ub2RlIDogY29udGFpbmVySW5mby5fb3duZXJEb2N1
bWVudDtcbiAgbGlzdGVuVG8ocmVnaXN0cmF0aW9uTmFtZSwgZG9jKTtcbiAgdHJhbnNhY3Rpb24u
Z2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShwdXRMaXN0ZW5lciwge1xuICAgIGluc3Q6IGlu
c3QsXG4gICAgcmVnaXN0cmF0aW9uTmFtZTogcmVnaXN0cmF0aW9uTmFtZSxcbiAgICBsaXN0ZW5l
cjogbGlzdGVuZXJcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHB1dExpc3RlbmVyKCkge1xuICB2YXIg
bGlzdGVuZXJUb1B1dCA9IHRoaXM7XG4gIEV2ZW50UGx1Z2luSHViLnB1dExpc3RlbmVyKGxpc3Rl
bmVyVG9QdXQuaW5zdCwgbGlzdGVuZXJUb1B1dC5yZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lclRv
UHV0Lmxpc3RlbmVyKTtcbn1cblxuZnVuY3Rpb24gaW5wdXRQb3N0TW91bnQoKSB7XG4gIHZhciBp
bnN0ID0gdGhpcztcbiAgUmVhY3RET01JbnB1dC5wb3N0TW91bnRXcmFwcGVyKGluc3QpO1xufVxu
XG5mdW5jdGlvbiB0ZXh0YXJlYVBvc3RNb3VudCgpIHtcbiAgdmFyIGluc3QgPSB0aGlzO1xuICBS
ZWFjdERPTVRleHRhcmVhLnBvc3RNb3VudFdyYXBwZXIoaW5zdCk7XG59XG5cbmZ1bmN0aW9uIG9w
dGlvblBvc3RNb3VudCgpIHtcbiAgdmFyIGluc3QgPSB0aGlzO1xuICBSZWFjdERPTU9wdGlvbi5w
b3N0TW91bnRXcmFwcGVyKGluc3QpO1xufVxuXG52YXIgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hp
bGREZXYgPSBlbXB0eUZ1bmN0aW9uO1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJv
ZHVjdGlvbicpIHtcbiAgc2V0QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYgPSBmdW5jdGlvbiAo
Y29udGVudCkge1xuICAgIHZhciBoYXNFeGlzdGluZ0NvbnRlbnQgPSB0aGlzLl9jb250ZW50RGVi
dWdJRCAhPSBudWxsO1xuICAgIHZhciBkZWJ1Z0lEID0gdGhpcy5fZGVidWdJRDtcbiAgICAvLyBU
aGlzIElEIHJlcHJlc2VudHMgdGhlIGlubGluZWQgY2hpbGQgdGhhdCBoYXMgbm8gYmFja2luZyBp
bnN0YW5jZTpcbiAgICB2YXIgY29udGVudERlYnVnSUQgPSAtZGVidWdJRDtcblxuICAgIGlmIChj
b250ZW50ID09IG51bGwpIHtcbiAgICAgIGlmIChoYXNFeGlzdGluZ0NvbnRlbnQpIHtcbiAgICAg
ICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uVW5tb3VudENvbXBvbmVudCh0aGlz
Ll9jb250ZW50RGVidWdJRCk7XG4gICAgICB9XG4gICAgICB0aGlzLl9jb250ZW50RGVidWdJRCA9
IG51bGw7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFsaWRhdGVET01OZXN0aW5nKG51
bGwsIFN0cmluZyhjb250ZW50KSwgdGhpcywgdGhpcy5fYW5jZXN0b3JJbmZvKTtcbiAgICB0aGlz
Ll9jb250ZW50RGVidWdJRCA9IGNvbnRlbnREZWJ1Z0lEO1xuICAgIGlmIChoYXNFeGlzdGluZ0Nv
bnRlbnQpIHtcbiAgICAgIFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZm9yZVVw
ZGF0ZUNvbXBvbmVudChjb250ZW50RGVidWdJRCwgY29udGVudCk7XG4gICAgICBSZWFjdEluc3Ry
dW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25VcGRhdGVDb21wb25lbnQoY29udGVudERlYnVnSUQpO1xu
ICAgIH0gZWxzZSB7XG4gICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25CZWZv
cmVNb3VudENvbXBvbmVudChjb250ZW50RGVidWdJRCwgY29udGVudCwgZGVidWdJRCk7XG4gICAg
ICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25Nb3VudENvbXBvbmVudChjb250ZW50
RGVidWdJRCk7XG4gICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1Z1Rvb2wub25TZXRDaGls
ZHJlbihkZWJ1Z0lELCBbY29udGVudERlYnVnSURdKTtcbiAgICB9XG4gIH07XG59XG5cbi8vIFRo
ZXJlIGFyZSBzbyBtYW55IG1lZGlhIGV2ZW50cywgaXQgbWFrZXMgc2Vuc2UgdG8ganVzdFxuLy8g
bWFpbnRhaW4gYSBsaXN0IHJhdGhlciB0aGFuIGNyZWF0ZSBhIGB0cmFwQnViYmxlZEV2ZW50YCBm
b3IgZWFjaFxudmFyIG1lZGlhRXZlbnRzID0ge1xuICB0b3BBYm9ydDogJ2Fib3J0JyxcbiAgdG9w
Q2FuUGxheTogJ2NhbnBsYXknLFxuICB0b3BDYW5QbGF5VGhyb3VnaDogJ2NhbnBsYXl0aHJvdWdo
JyxcbiAgdG9wRHVyYXRpb25DaGFuZ2U6ICdkdXJhdGlvbmNoYW5nZScsXG4gIHRvcEVtcHRpZWQ6
ICdlbXB0aWVkJyxcbiAgdG9wRW5jcnlwdGVkOiAnZW5jcnlwdGVkJyxcbiAgdG9wRW5kZWQ6ICdl
bmRlZCcsXG4gIHRvcEVycm9yOiAnZXJyb3InLFxuICB0b3BMb2FkZWREYXRhOiAnbG9hZGVkZGF0
YScsXG4gIHRvcExvYWRlZE1ldGFkYXRhOiAnbG9hZGVkbWV0YWRhdGEnLFxuICB0b3BMb2FkU3Rh
cnQ6ICdsb2Fkc3RhcnQnLFxuICB0b3BQYXVzZTogJ3BhdXNlJyxcbiAgdG9wUGxheTogJ3BsYXkn
LFxuICB0b3BQbGF5aW5nOiAncGxheWluZycsXG4gIHRvcFByb2dyZXNzOiAncHJvZ3Jlc3MnLFxu
ICB0b3BSYXRlQ2hhbmdlOiAncmF0ZWNoYW5nZScsXG4gIHRvcFNlZWtlZDogJ3NlZWtlZCcsXG4g
IHRvcFNlZWtpbmc6ICdzZWVraW5nJyxcbiAgdG9wU3RhbGxlZDogJ3N0YWxsZWQnLFxuICB0b3BT
dXNwZW5kOiAnc3VzcGVuZCcsXG4gIHRvcFRpbWVVcGRhdGU6ICd0aW1ldXBkYXRlJyxcbiAgdG9w
Vm9sdW1lQ2hhbmdlOiAndm9sdW1lY2hhbmdlJyxcbiAgdG9wV2FpdGluZzogJ3dhaXRpbmcnXG59
O1xuXG5mdW5jdGlvbiB0cmFja0lucHV0VmFsdWUoKSB7XG4gIGlucHV0VmFsdWVUcmFja2luZy50
cmFjayh0aGlzKTtcbn1cblxuZnVuY3Rpb24gdHJhcEJ1YmJsZWRFdmVudHNMb2NhbCgpIHtcbiAg
dmFyIGluc3QgPSB0aGlzO1xuICAvLyBJZiBhIGNvbXBvbmVudCByZW5kZXJzIHRvIG51bGwgb3Ig
aWYgYW5vdGhlciBjb21wb25lbnQgZmF0YWxzIGFuZCBjYXVzZXNcbiAgLy8gdGhlIHN0YXRlIG9m
IHRoZSB0cmVlIHRvIGJlIGNvcnJ1cHRlZCwgYG5vZGVgIGhlcmUgY2FuIGJlIG51bGwuXG4gICFp
bnN0Ll9yb290Tm9kZUlEID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/
IGludmFyaWFudChmYWxzZSwgJ011c3QgYmUgbW91bnRlZCB0byB0cmFwIGV2ZW50cycpIDogX3By
b2RJbnZhcmlhbnQoJzYzJykgOiB2b2lkIDA7XG4gIHZhciBub2RlID0gZ2V0Tm9kZShpbnN0KTtc
biAgIW5vZGUgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJp
YW50KGZhbHNlLCAndHJhcEJ1YmJsZWRFdmVudCguLi4pOiBSZXF1aXJlcyBub2RlIHRvIGJlIHJl
bmRlcmVkLicpIDogX3Byb2RJbnZhcmlhbnQoJzY0JykgOiB2b2lkIDA7XG5cbiAgc3dpdGNoIChp
bnN0Ll90YWcpIHtcbiAgICBjYXNlICdpZnJhbWUnOlxuICAgIGNhc2UgJ29iamVjdCc6XG4gICAg
ICBpbnN0Ll93cmFwcGVyU3RhdGUubGlzdGVuZXJzID0gW1JlYWN0QnJvd3NlckV2ZW50RW1pdHRl
ci50cmFwQnViYmxlZEV2ZW50KCd0b3BMb2FkJywgJ2xvYWQnLCBub2RlKV07XG4gICAgICBicmVh
aztcbiAgICBjYXNlICd2aWRlbyc6XG4gICAgY2FzZSAnYXVkaW8nOlxuICAgICAgaW5zdC5fd3Jh
cHBlclN0YXRlLmxpc3RlbmVycyA9IFtdO1xuICAgICAgLy8gQ3JlYXRlIGxpc3RlbmVyIGZvciBl
YWNoIG1lZGlhIGV2ZW50XG4gICAgICBmb3IgKHZhciBldmVudCBpbiBtZWRpYUV2ZW50cykge1xu
ICAgICAgICBpZiAobWVkaWFFdmVudHMuaGFzT3duUHJvcGVydHkoZXZlbnQpKSB7XG4gICAgICAg
ICAgaW5zdC5fd3JhcHBlclN0YXRlLmxpc3RlbmVycy5wdXNoKFJlYWN0QnJvd3NlckV2ZW50RW1p
dHRlci50cmFwQnViYmxlZEV2ZW50KGV2ZW50LCBtZWRpYUV2ZW50c1tldmVudF0sIG5vZGUpKTtc
biAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnc291cmNlJzpcbiAg
ICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbUmVhY3RCcm93c2VyRXZlbnRFbWl0
dGVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcEVycm9yJywgJ2Vycm9yJywgbm9kZSldO1xuICAgICAg
YnJlYWs7XG4gICAgY2FzZSAnaW1nJzpcbiAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5l
cnMgPSBbUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcEVycm9y
JywgJ2Vycm9yJywgbm9kZSksIFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2
ZW50KCd0b3BMb2FkJywgJ2xvYWQnLCBub2RlKV07XG4gICAgICBicmVhaztcbiAgICBjYXNlICdm
b3JtJzpcbiAgICAgIGluc3QuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnMgPSBbUmVhY3RCcm93c2Vy
RXZlbnRFbWl0dGVyLnRyYXBCdWJibGVkRXZlbnQoJ3RvcFJlc2V0JywgJ3Jlc2V0Jywgbm9kZSks
IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlci50cmFwQnViYmxlZEV2ZW50KCd0b3BTdWJtaXQnLCAn
c3VibWl0Jywgbm9kZSldO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnaW5wdXQnOlxuICAgIGNh
c2UgJ3NlbGVjdCc6XG4gICAgY2FzZSAndGV4dGFyZWEnOlxuICAgICAgaW5zdC5fd3JhcHBlclN0
YXRlLmxpc3RlbmVycyA9IFtSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIudHJhcEJ1YmJsZWRFdmVu
dCgndG9wSW52YWxpZCcsICdpbnZhbGlkJywgbm9kZSldO1xuICAgICAgYnJlYWs7XG4gIH1cbn1c
blxuZnVuY3Rpb24gcG9zdFVwZGF0ZVNlbGVjdFdyYXBwZXIoKSB7XG4gIFJlYWN0RE9NU2VsZWN0
LnBvc3RVcGRhdGVXcmFwcGVyKHRoaXMpO1xufVxuXG4vLyBGb3IgSFRNTCwgY2VydGFpbiB0YWdz
IHNob3VsZCBvbWl0IHRoZWlyIGNsb3NlIHRhZy4gV2Uga2VlcCBhIHdoaXRlbGlzdCBmb3Jcbi8v
IHRob3NlIHNwZWNpYWwtY2FzZSB0YWdzLlxuXG52YXIgb21pdHRlZENsb3NlVGFncyA9IHtcbiAg
YXJlYTogdHJ1ZSxcbiAgYmFzZTogdHJ1ZSxcbiAgYnI6IHRydWUsXG4gIGNvbDogdHJ1ZSxcbiAg
ZW1iZWQ6IHRydWUsXG4gIGhyOiB0cnVlLFxuICBpbWc6IHRydWUsXG4gIGlucHV0OiB0cnVlLFxu
ICBrZXlnZW46IHRydWUsXG4gIGxpbms6IHRydWUsXG4gIG1ldGE6IHRydWUsXG4gIHBhcmFtOiB0
cnVlLFxuICBzb3VyY2U6IHRydWUsXG4gIHRyYWNrOiB0cnVlLFxuICB3YnI6IHRydWVcbiAgLy8g
Tk9URTogbWVudWl0ZW0ncyBjbG9zZSB0YWcgc2hvdWxkIGJlIG9taXR0ZWQsIGJ1dCB0aGF0IGNh
dXNlcyBwcm9ibGVtcy5cbn07XG5cbnZhciBuZXdsaW5lRWF0aW5nVGFncyA9IHtcbiAgbGlzdGlu
ZzogdHJ1ZSxcbiAgcHJlOiB0cnVlLFxuICB0ZXh0YXJlYTogdHJ1ZVxufTtcblxuLy8gRm9yIEhU
TUwsIGNlcnRhaW4gdGFncyBjYW5ub3QgaGF2ZSBjaGlsZHJlbi4gVGhpcyBoYXMgdGhlIHNhbWUg
cHVycG9zZSBhc1xuLy8gYG9taXR0ZWRDbG9zZVRhZ3NgIGV4Y2VwdCB0aGF0IGBtZW51aXRlbWAg
c2hvdWxkIHN0aWxsIGhhdmUgaXRzIGNsb3NpbmcgdGFnLlxuXG52YXIgdm9pZEVsZW1lbnRUYWdz
ID0gX2Fzc2lnbih7XG4gIG1lbnVpdGVtOiB0cnVlXG59LCBvbWl0dGVkQ2xvc2VUYWdzKTtcblxu
Ly8gV2UgYWNjZXB0IGFueSB0YWcgdG8gYmUgcmVuZGVyZWQgYnV0IHNpbmNlIHRoaXMgZ2V0cyBp
bmplY3RlZCBpbnRvIGFyYml0cmFyeVxuLy8gSFRNTCwgd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhh
dCBpdCdzIGEgc2FmZSB0YWcuXG4vLyBodHRwOi8vd3d3LnczLm9yZy9UUi9SRUMteG1sLyNOVC1O
YW1lXG5cbnZhciBWQUxJRF9UQUdfUkVHRVggPSAvXlthLXpBLVpdW2EtekEtWjpfXFwuXFwtXFxk
XSokLzsgLy8gU2ltcGxpZmllZCBzdWJzZXRcbnZhciB2YWxpZGF0ZWRUYWdDYWNoZSA9IHt9O1xu
dmFyIGhhc093blByb3BlcnR5ID0ge30uaGFzT3duUHJvcGVydHk7XG5cbmZ1bmN0aW9uIHZhbGlk
YXRlRGFuZ2Vyb3VzVGFnKHRhZykge1xuICBpZiAoIWhhc093blByb3BlcnR5LmNhbGwodmFsaWRh
dGVkVGFnQ2FjaGUsIHRhZykpIHtcbiAgICAhVkFMSURfVEFHX1JFR0VYLnRlc3QodGFnKSA/IHBy
b2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdJ
bnZhbGlkIHRhZzogJXMnLCB0YWcpIDogX3Byb2RJbnZhcmlhbnQoJzY1JywgdGFnKSA6IHZvaWQg
MDtcbiAgICB2YWxpZGF0ZWRUYWdDYWNoZVt0YWddID0gdHJ1ZTtcbiAgfVxufVxuXG5mdW5jdGlv
biBpc0N1c3RvbUNvbXBvbmVudCh0YWdOYW1lLCBwcm9wcykge1xuICByZXR1cm4gdGFnTmFtZS5p
bmRleE9mKCctJykgPj0gMCB8fCBwcm9wcy5pcyAhPSBudWxsO1xufVxuXG52YXIgZ2xvYmFsSWRD
b3VudGVyID0gMTtcblxuLyoqXG4gKiBDcmVhdGVzIGEgbmV3IFJlYWN0IGNsYXNzIHRoYXQgaXMg
aWRlbXBvdGVudCBhbmQgY2FwYWJsZSBvZiBjb250YWluaW5nIG90aGVyXG4gKiBSZWFjdCBjb21w
b25lbnRzLiBJdCBhY2NlcHRzIGV2ZW50IGxpc3RlbmVycyBhbmQgRE9NIHByb3BlcnRpZXMgdGhh
dCBhcmVcbiAqIHZhbGlkIGFjY29yZGluZyB0byBgRE9NUHJvcGVydHlgLlxuICpcbiAqICAtIEV2
ZW50IGxpc3RlbmVyczogYG9uQ2xpY2tgLCBgb25Nb3VzZURvd25gLCBldGMuXG4gKiAgLSBET00g
cHJvcGVydGllczogYGNsYXNzTmFtZWAsIGBuYW1lYCwgYHRpdGxlYCwgZXRjLlxuICpcbiAqIFRo
ZSBgc3R5bGVgIHByb3BlcnR5IGZ1bmN0aW9ucyBkaWZmZXJlbnRseSBmcm9tIHRoZSBET00gQVBJ
LiBJdCBhY2NlcHRzIGFuXG4gKiBvYmplY3QgbWFwcGluZyBvZiBzdHlsZSBwcm9wZXJ0aWVzIHRv
IHZhbHVlcy5cbiAqXG4gKiBAY29uc3RydWN0b3IgUmVhY3RET01Db21wb25lbnRcbiAqIEBleHRl
bmRzIFJlYWN0TXVsdGlDaGlsZFxuICovXG5mdW5jdGlvbiBSZWFjdERPTUNvbXBvbmVudChlbGVt
ZW50KSB7XG4gIHZhciB0YWcgPSBlbGVtZW50LnR5cGU7XG4gIHZhbGlkYXRlRGFuZ2Vyb3VzVGFn
KHRhZyk7XG4gIHRoaXMuX2N1cnJlbnRFbGVtZW50ID0gZWxlbWVudDtcbiAgdGhpcy5fdGFnID0g
dGFnLnRvTG93ZXJDYXNlKCk7XG4gIHRoaXMuX25hbWVzcGFjZVVSSSA9IG51bGw7XG4gIHRoaXMu
X3JlbmRlcmVkQ2hpbGRyZW4gPSBudWxsO1xuICB0aGlzLl9wcmV2aW91c1N0eWxlID0gbnVsbDtc
biAgdGhpcy5fcHJldmlvdXNTdHlsZUNvcHkgPSBudWxsO1xuICB0aGlzLl9ob3N0Tm9kZSA9IG51
bGw7XG4gIHRoaXMuX2hvc3RQYXJlbnQgPSBudWxsO1xuICB0aGlzLl9yb290Tm9kZUlEID0gMDtc
biAgdGhpcy5fZG9tSUQgPSAwO1xuICB0aGlzLl9ob3N0Q29udGFpbmVySW5mbyA9IG51bGw7XG4g
IHRoaXMuX3dyYXBwZXJTdGF0ZSA9IG51bGw7XG4gIHRoaXMuX3RvcExldmVsV3JhcHBlciA9IG51
bGw7XG4gIHRoaXMuX2ZsYWdzID0gMDtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicpIHtcbiAgICB0aGlzLl9hbmNlc3RvckluZm8gPSBudWxsO1xuICAgIHNldEFu
ZFZhbGlkYXRlQ29udGVudENoaWxkRGV2LmNhbGwodGhpcywgbnVsbCk7XG4gIH1cbn1cblxuUmVh
Y3RET01Db21wb25lbnQuZGlzcGxheU5hbWUgPSAnUmVhY3RET01Db21wb25lbnQnO1xuXG5SZWFj
dERPTUNvbXBvbmVudC5NaXhpbiA9IHtcbiAgLyoqXG4gICAqIEdlbmVyYXRlcyByb290IHRhZyBt
YXJrdXAgdGhlbiByZWN1cnNlcy4gVGhpcyBtZXRob2QgaGFzIHNpZGUgZWZmZWN0cyBhbmRcbiAg
ICogaXMgbm90IGlkZW1wb3RlbnQuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBAcGFyYW0g
e1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlv
bn0gdHJhbnNhY3Rpb25cbiAgICogQHBhcmFtIHs/UmVhY3RET01Db21wb25lbnR9IHRoZSBwYXJl
bnQgY29tcG9uZW50IGluc3RhbmNlXG4gICAqIEBwYXJhbSB7P29iamVjdH0gaW5mbyBhYm91dCB0
aGUgaG9zdCBjb250YWluZXJcbiAgICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHRcbiAgICogQHJl
dHVybiB7c3RyaW5nfSBUaGUgY29tcHV0ZWQgbWFya3VwLlxuICAgKi9cbiAgbW91bnRDb21wb25l
bnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgaG9zdFBhcmVudCwgaG9zdENvbnRhaW5lckluZm8s
IGNvbnRleHQpIHtcbiAgICB0aGlzLl9yb290Tm9kZUlEID0gZ2xvYmFsSWRDb3VudGVyKys7XG4g
ICAgdGhpcy5fZG9tSUQgPSBob3N0Q29udGFpbmVySW5mby5faWRDb3VudGVyKys7XG4gICAgdGhp
cy5faG9zdFBhcmVudCA9IGhvc3RQYXJlbnQ7XG4gICAgdGhpcy5faG9zdENvbnRhaW5lckluZm8g
PSBob3N0Q29udGFpbmVySW5mbztcblxuICAgIHZhciBwcm9wcyA9IHRoaXMuX2N1cnJlbnRFbGVt
ZW50LnByb3BzO1xuXG4gICAgc3dpdGNoICh0aGlzLl90YWcpIHtcbiAgICAgIGNhc2UgJ2F1ZGlv
JzpcbiAgICAgIGNhc2UgJ2Zvcm0nOlxuICAgICAgY2FzZSAnaWZyYW1lJzpcbiAgICAgIGNhc2Ug
J2ltZyc6XG4gICAgICBjYXNlICdsaW5rJzpcbiAgICAgIGNhc2UgJ29iamVjdCc6XG4gICAgICBj
YXNlICdzb3VyY2UnOlxuICAgICAgY2FzZSAndmlkZW8nOlxuICAgICAgICB0aGlzLl93cmFwcGVy
U3RhdGUgPSB7XG4gICAgICAgICAgbGlzdGVuZXJzOiBudWxsXG4gICAgICAgIH07XG4gICAgICAg
IHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodHJhcEJ1YmJsZWRFdmVu
dHNMb2NhbCwgdGhpcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnaW5wdXQnOlxuICAg
ICAgICBSZWFjdERPTUlucHV0Lm1vdW50V3JhcHBlcih0aGlzLCBwcm9wcywgaG9zdFBhcmVudCk7
XG4gICAgICAgIHByb3BzID0gUmVhY3RET01JbnB1dC5nZXRIb3N0UHJvcHModGhpcywgcHJvcHMp
O1xuICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHRyYWNr
SW5wdXRWYWx1ZSwgdGhpcyk7XG4gICAgICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFk
eSgpLmVucXVldWUodHJhcEJ1YmJsZWRFdmVudHNMb2NhbCwgdGhpcyk7XG4gICAgICAgIGJyZWFr
O1xuICAgICAgY2FzZSAnb3B0aW9uJzpcbiAgICAgICAgUmVhY3RET01PcHRpb24ubW91bnRXcmFw
cGVyKHRoaXMsIHByb3BzLCBob3N0UGFyZW50KTtcbiAgICAgICAgcHJvcHMgPSBSZWFjdERPTU9w
dGlvbi5nZXRIb3N0UHJvcHModGhpcywgcHJvcHMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNh
c2UgJ3NlbGVjdCc6XG4gICAgICAgIFJlYWN0RE9NU2VsZWN0Lm1vdW50V3JhcHBlcih0aGlzLCBw
cm9wcywgaG9zdFBhcmVudCk7XG4gICAgICAgIHByb3BzID0gUmVhY3RET01TZWxlY3QuZ2V0SG9z
dFByb3BzKHRoaXMsIHByb3BzKTtcbiAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJl
YWR5KCkuZW5xdWV1ZSh0cmFwQnViYmxlZEV2ZW50c0xvY2FsLCB0aGlzKTtcbiAgICAgICAgYnJl
YWs7XG4gICAgICBjYXNlICd0ZXh0YXJlYSc6XG4gICAgICAgIFJlYWN0RE9NVGV4dGFyZWEubW91
bnRXcmFwcGVyKHRoaXMsIHByb3BzLCBob3N0UGFyZW50KTtcbiAgICAgICAgcHJvcHMgPSBSZWFj
dERPTVRleHRhcmVhLmdldEhvc3RQcm9wcyh0aGlzLCBwcm9wcyk7XG4gICAgICAgIHRyYW5zYWN0
aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUodHJhY2tJbnB1dFZhbHVlLCB0aGlzKTtc
biAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZSh0cmFwQnVi
YmxlZEV2ZW50c0xvY2FsLCB0aGlzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgYXNz
ZXJ0VmFsaWRQcm9wcyh0aGlzLCBwcm9wcyk7XG5cbiAgICAvLyBXZSBjcmVhdGUgdGFncyBpbiB0
aGUgbmFtZXNwYWNlIG9mIHRoZWlyIHBhcmVudCBjb250YWluZXIsIGV4Y2VwdCBIVE1MXG4gICAg
Ly8gdGFncyBnZXQgbm8gbmFtZXNwYWNlLlxuICAgIHZhciBuYW1lc3BhY2VVUkk7XG4gICAgdmFy
IHBhcmVudFRhZztcbiAgICBpZiAoaG9zdFBhcmVudCAhPSBudWxsKSB7XG4gICAgICBuYW1lc3Bh
Y2VVUkkgPSBob3N0UGFyZW50Ll9uYW1lc3BhY2VVUkk7XG4gICAgICBwYXJlbnRUYWcgPSBob3N0
UGFyZW50Ll90YWc7XG4gICAgfSBlbHNlIGlmIChob3N0Q29udGFpbmVySW5mby5fdGFnKSB7XG4g
ICAgICBuYW1lc3BhY2VVUkkgPSBob3N0Q29udGFpbmVySW5mby5fbmFtZXNwYWNlVVJJO1xuICAg
ICAgcGFyZW50VGFnID0gaG9zdENvbnRhaW5lckluZm8uX3RhZztcbiAgICB9XG4gICAgaWYgKG5h
bWVzcGFjZVVSSSA9PSBudWxsIHx8IG5hbWVzcGFjZVVSSSA9PT0gRE9NTmFtZXNwYWNlcy5zdmcg
JiYgcGFyZW50VGFnID09PSAnZm9yZWlnbm9iamVjdCcpIHtcbiAgICAgIG5hbWVzcGFjZVVSSSA9
IERPTU5hbWVzcGFjZXMuaHRtbDtcbiAgICB9XG4gICAgaWYgKG5hbWVzcGFjZVVSSSA9PT0gRE9N
TmFtZXNwYWNlcy5odG1sKSB7XG4gICAgICBpZiAodGhpcy5fdGFnID09PSAnc3ZnJykge1xuICAg
ICAgICBuYW1lc3BhY2VVUkkgPSBET01OYW1lc3BhY2VzLnN2ZztcbiAgICAgIH0gZWxzZSBpZiAo
dGhpcy5fdGFnID09PSAnbWF0aCcpIHtcbiAgICAgICAgbmFtZXNwYWNlVVJJID0gRE9NTmFtZXNw
YWNlcy5tYXRobWw7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuX25hbWVzcGFjZVVSSSA9IG5h
bWVzcGFjZVVSSTtcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgICB2YXIgcGFyZW50SW5mbztcbiAgICAgIGlmIChob3N0UGFyZW50ICE9IG51
bGwpIHtcbiAgICAgICAgcGFyZW50SW5mbyA9IGhvc3RQYXJlbnQuX2FuY2VzdG9ySW5mbztcbiAg
ICAgIH0gZWxzZSBpZiAoaG9zdENvbnRhaW5lckluZm8uX3RhZykge1xuICAgICAgICBwYXJlbnRJ
bmZvID0gaG9zdENvbnRhaW5lckluZm8uX2FuY2VzdG9ySW5mbztcbiAgICAgIH1cbiAgICAgIGlm
IChwYXJlbnRJbmZvKSB7XG4gICAgICAgIC8vIHBhcmVudEluZm8gc2hvdWxkIGFsd2F5cyBiZSBw
cmVzZW50IGV4Y2VwdCBmb3IgdGhlIHRvcC1sZXZlbFxuICAgICAgICAvLyBjb21wb25lbnQgd2hl
biBzZXJ2ZXIgcmVuZGVyaW5nXG4gICAgICAgIHZhbGlkYXRlRE9NTmVzdGluZyh0aGlzLl90YWcs
IG51bGwsIHRoaXMsIHBhcmVudEluZm8pO1xuICAgICAgfVxuICAgICAgdGhpcy5fYW5jZXN0b3JJ
bmZvID0gdmFsaWRhdGVET01OZXN0aW5nLnVwZGF0ZWRBbmNlc3RvckluZm8ocGFyZW50SW5mbywg
dGhpcy5fdGFnLCB0aGlzKTtcbiAgICB9XG5cbiAgICB2YXIgbW91bnRJbWFnZTtcbiAgICBpZiAo
dHJhbnNhY3Rpb24udXNlQ3JlYXRlRWxlbWVudCkge1xuICAgICAgdmFyIG93bmVyRG9jdW1lbnQg
PSBob3N0Q29udGFpbmVySW5mby5fb3duZXJEb2N1bWVudDtcbiAgICAgIHZhciBlbDtcbiAgICAg
IGlmIChuYW1lc3BhY2VVUkkgPT09IERPTU5hbWVzcGFjZXMuaHRtbCkge1xuICAgICAgICBpZiAo
dGhpcy5fdGFnID09PSAnc2NyaXB0Jykge1xuICAgICAgICAgIC8vIENyZWF0ZSB0aGUgc2NyaXB0
IHZpYSAuaW5uZXJIVE1MIHNvIGl0cyBcInBhcnNlci1pbnNlcnRlZFwiIGZsYWcgaXNcbiAgICAg
ICAgICAvLyBzZXQgdG8gdHJ1ZSBhbmQgaXQgZG9lcyBub3QgZXhlY3V0ZVxuICAgICAgICAgIHZh
ciBkaXYgPSBvd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgICAgIHZh
ciB0eXBlID0gdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtcbiAgICAgICAgICBkaXYuaW5uZXJI
VE1MID0gJzwnICsgdHlwZSArICc+PC8nICsgdHlwZSArICc+JztcbiAgICAgICAgICBlbCA9IGRp
di5yZW1vdmVDaGlsZChkaXYuZmlyc3RDaGlsZCk7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvcHMu
aXMpIHtcbiAgICAgICAgICBlbCA9IG93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLl9j
dXJyZW50RWxlbWVudC50eXBlLCBwcm9wcy5pcyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAg
ICAgLy8gU2VwYXJhdGUgZWxzZSBicmFuY2ggaW5zdGVhZCBvZiB1c2luZyBgcHJvcHMuaXMgfHwg
dW5kZWZpbmVkYCBhYm92ZSBiZWN1YXNlIG9mIGEgRmlyZWZveCBidWcuXG4gICAgICAgICAgLy8g
U2VlIGRpc2N1c3Npb24gaW4gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3B1bGwv
Njg5NlxuICAgICAgICAgIC8vIGFuZCBkaXNjdXNzaW9uIGluIGh0dHBzOi8vYnVnemlsbGEubW96
aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzYyNDBcbiAgICAgICAgICBlbCA9IG93bmVyRG9j
dW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlKTtcbiAgICAgICAg
fVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWwgPSBvd25lckRvY3VtZW50LmNyZWF0ZUVsZW1l
bnROUyhuYW1lc3BhY2VVUkksIHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUpO1xuICAgICAgfVxu
ICAgICAgUmVhY3RET01Db21wb25lbnRUcmVlLnByZWNhY2hlTm9kZSh0aGlzLCBlbCk7XG4gICAg
ICB0aGlzLl9mbGFncyB8PSBGbGFncy5oYXNDYWNoZWRDaGlsZE5vZGVzO1xuICAgICAgaWYgKCF0
aGlzLl9ob3N0UGFyZW50KSB7XG4gICAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5zZXRBdHRy
aWJ1dGVGb3JSb290KGVsKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3VwZGF0ZURPTVByb3BlcnRp
ZXMobnVsbCwgcHJvcHMsIHRyYW5zYWN0aW9uKTtcbiAgICAgIHZhciBsYXp5VHJlZSA9IERPTUxh
enlUcmVlKGVsKTtcbiAgICAgIHRoaXMuX2NyZWF0ZUluaXRpYWxDaGlsZHJlbih0cmFuc2FjdGlv
biwgcHJvcHMsIGNvbnRleHQsIGxhenlUcmVlKTtcbiAgICAgIG1vdW50SW1hZ2UgPSBsYXp5VHJl
ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIHRhZ09wZW4gPSB0aGlzLl9jcmVhdGVPcGVuVGFn
TWFya3VwQW5kUHV0TGlzdGVuZXJzKHRyYW5zYWN0aW9uLCBwcm9wcyk7XG4gICAgICB2YXIgdGFn
Q29udGVudCA9IHRoaXMuX2NyZWF0ZUNvbnRlbnRNYXJrdXAodHJhbnNhY3Rpb24sIHByb3BzLCBj
b250ZXh0KTtcbiAgICAgIGlmICghdGFnQ29udGVudCAmJiBvbWl0dGVkQ2xvc2VUYWdzW3RoaXMu
X3RhZ10pIHtcbiAgICAgICAgbW91bnRJbWFnZSA9IHRhZ09wZW4gKyAnLz4nO1xuICAgICAgfSBl
bHNlIHtcbiAgICAgICAgbW91bnRJbWFnZSA9IHRhZ09wZW4gKyAnPicgKyB0YWdDb250ZW50ICsg
JzwvJyArIHRoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUgKyAnPic7XG4gICAgICB9XG4gICAgfVxu
XG4gICAgc3dpdGNoICh0aGlzLl90YWcpIHtcbiAgICAgIGNhc2UgJ2lucHV0JzpcbiAgICAgICAg
dHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShpbnB1dFBvc3RNb3VudCwg
dGhpcyk7XG4gICAgICAgIGlmIChwcm9wcy5hdXRvRm9jdXMpIHtcbiAgICAgICAgICB0cmFuc2Fj
dGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKEF1dG9Gb2N1c1V0aWxzLmZvY3VzRE9N
Q29tcG9uZW50LCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ug
J3RleHRhcmVhJzpcbiAgICAgICAgdHJhbnNhY3Rpb24uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5x
dWV1ZSh0ZXh0YXJlYVBvc3RNb3VudCwgdGhpcyk7XG4gICAgICAgIGlmIChwcm9wcy5hdXRvRm9j
dXMpIHtcbiAgICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVl
KEF1dG9Gb2N1c1V0aWxzLmZvY3VzRE9NQ29tcG9uZW50LCB0aGlzKTtcbiAgICAgICAgfVxuICAg
ICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NlbGVjdCc6XG4gICAgICAgIGlmIChwcm9wcy5hdXRv
Rm9jdXMpIHtcbiAgICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1
ZXVlKEF1dG9Gb2N1c1V0aWxzLmZvY3VzRE9NQ29tcG9uZW50LCB0aGlzKTtcbiAgICAgICAgfVxu
ICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ2J1dHRvbic6XG4gICAgICAgIGlmIChwcm9wcy5h
dXRvRm9jdXMpIHtcbiAgICAgICAgICB0cmFuc2FjdGlvbi5nZXRSZWFjdE1vdW50UmVhZHkoKS5l
bnF1ZXVlKEF1dG9Gb2N1c1V0aWxzLmZvY3VzRE9NQ29tcG9uZW50LCB0aGlzKTtcbiAgICAgICAg
fVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ29wdGlvbic6XG4gICAgICAgIHRyYW5zYWN0
aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUob3B0aW9uUG9zdE1vdW50LCB0aGlzKTtc
biAgICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vdW50SW1hZ2U7XG4gIH0sXG5c
biAgLyoqXG4gICAqIENyZWF0ZXMgbWFya3VwIGZvciB0aGUgb3BlbiB0YWcgYW5kIGFsbCBhdHRy
aWJ1dGVzLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBoYXMgc2lkZSBlZmZlY3RzIGJlY2F1c2Ug
ZXZlbnRzIGdldCByZWdpc3RlcmVkLlxuICAgKlxuICAgKiBJdGVyYXRpbmcgb3ZlciBvYmplY3Qg
cHJvcGVydGllcyBpcyBmYXN0ZXIgdGhhbiBpdGVyYXRpbmcgb3ZlciBhcnJheXMuXG4gICAqIEBz
ZWUgaHR0cDovL2pzcGVyZi5jb20vb2JqLXZzLWFyci1pdGVyYXRpb25cbiAgICpcbiAgICogQHBy
aXZhdGVcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVy
UmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBw
cm9wc1xuICAgKiBAcmV0dXJuIHtzdHJpbmd9IE1hcmt1cCBvZiBvcGVuaW5nIHRhZy5cbiAgICov
XG4gIF9jcmVhdGVPcGVuVGFnTWFya3VwQW5kUHV0TGlzdGVuZXJzOiBmdW5jdGlvbiAodHJhbnNh
Y3Rpb24sIHByb3BzKSB7XG4gICAgdmFyIHJldCA9ICc8JyArIHRoaXMuX2N1cnJlbnRFbGVtZW50
LnR5cGU7XG5cbiAgICBmb3IgKHZhciBwcm9wS2V5IGluIHByb3BzKSB7XG4gICAgICBpZiAoIXBy
b3BzLmhhc093blByb3BlcnR5KHByb3BLZXkpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAg
fVxuICAgICAgdmFyIHByb3BWYWx1ZSA9IHByb3BzW3Byb3BLZXldO1xuICAgICAgaWYgKHByb3BW
YWx1ZSA9PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHJl
Z2lzdHJhdGlvbk5hbWVNb2R1bGVzLmhhc093blByb3BlcnR5KHByb3BLZXkpKSB7XG4gICAgICAg
IGlmIChwcm9wVmFsdWUpIHtcbiAgICAgICAgICBlbnF1ZXVlUHV0TGlzdGVuZXIodGhpcywgcHJv
cEtleSwgcHJvcFZhbHVlLCB0cmFuc2FjdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7
XG4gICAgICAgIGlmIChwcm9wS2V5ID09PSBTVFlMRSkge1xuICAgICAgICAgIGlmIChwcm9wVmFs
dWUpIHtcbiAgICAgICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nKSB7XG4gICAgICAgICAgICAgIC8vIFNlZSBgX3VwZGF0ZURPTVByb3BlcnRpZXNgLiBzdHls
ZSBibG9ja1xuICAgICAgICAgICAgICB0aGlzLl9wcmV2aW91c1N0eWxlID0gcHJvcFZhbHVlO1xu
ICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJvcFZhbHVlID0gdGhpcy5fcHJldmlvdXNTdHls
ZUNvcHkgPSBfYXNzaWduKHt9LCBwcm9wcy5zdHlsZSk7XG4gICAgICAgICAgfVxuICAgICAgICAg
IHByb3BWYWx1ZSA9IENTU1Byb3BlcnR5T3BlcmF0aW9ucy5jcmVhdGVNYXJrdXBGb3JTdHlsZXMo
cHJvcFZhbHVlLCB0aGlzKTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgbWFya3VwID0gbnVsbDtc
biAgICAgICAgaWYgKHRoaXMuX3RhZyAhPSBudWxsICYmIGlzQ3VzdG9tQ29tcG9uZW50KHRoaXMu
X3RhZywgcHJvcHMpKSB7XG4gICAgICAgICAgaWYgKCFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9w
ZXJ0eShwcm9wS2V5KSkge1xuICAgICAgICAgICAgbWFya3VwID0gRE9NUHJvcGVydHlPcGVyYXRp
b25zLmNyZWF0ZU1hcmt1cEZvckN1c3RvbUF0dHJpYnV0ZShwcm9wS2V5LCBwcm9wVmFsdWUpO1xu
ICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBtYXJrdXAgPSBET01Qcm9w
ZXJ0eU9wZXJhdGlvbnMuY3JlYXRlTWFya3VwRm9yUHJvcGVydHkocHJvcEtleSwgcHJvcFZhbHVl
KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobWFya3VwKSB7XG4gICAgICAgICAgcmV0ICs9ICcg
JyArIG1hcmt1cDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZvciBzdGF0
aWMgcGFnZXMsIG5vIG5lZWQgdG8gcHV0IFJlYWN0IElEIGFuZCBjaGVja3N1bS4gU2F2ZXMgbG90
cyBvZlxuICAgIC8vIGJ5dGVzLlxuICAgIGlmICh0cmFuc2FjdGlvbi5yZW5kZXJUb1N0YXRpY01h
cmt1cCkge1xuICAgICAgcmV0dXJuIHJldDtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMuX2hvc3RQ
YXJlbnQpIHtcbiAgICAgIHJldCArPSAnICcgKyBET01Qcm9wZXJ0eU9wZXJhdGlvbnMuY3JlYXRl
TWFya3VwRm9yUm9vdCgpO1xuICAgIH1cbiAgICByZXQgKz0gJyAnICsgRE9NUHJvcGVydHlPcGVy
YXRpb25zLmNyZWF0ZU1hcmt1cEZvcklEKHRoaXMuX2RvbUlEKTtcbiAgICByZXR1cm4gcmV0O1xu
ICB9LFxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIG1hcmt1cCBmb3IgdGhlIGNvbnRlbnQgYmV0d2Vl
biB0aGUgdGFncy5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICogQHBhcmFtIHtSZWFjdFJlY29u
Y2lsZVRyYW5zYWN0aW9ufFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0
aW9uXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBwcm9wc1xuICAgKiBAcGFyYW0ge29iamVjdH0gY29u
dGV4dFxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IENvbnRlbnQgbWFya3VwLlxuICAgKi9cbiAgX2Ny
ZWF0ZUNvbnRlbnRNYXJrdXA6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwgcHJvcHMsIGNvbnRleHQp
IHtcbiAgICB2YXIgcmV0ID0gJyc7XG5cbiAgICAvLyBJbnRlbnRpb25hbCB1c2Ugb2YgIT0gdG8g
YXZvaWQgY2F0Y2hpbmcgemVyby9mYWxzZS5cbiAgICB2YXIgaW5uZXJIVE1MID0gcHJvcHMuZGFu
Z2Vyb3VzbHlTZXRJbm5lckhUTUw7XG4gICAgaWYgKGlubmVySFRNTCAhPSBudWxsKSB7XG4gICAg
ICBpZiAoaW5uZXJIVE1MLl9faHRtbCAhPSBudWxsKSB7XG4gICAgICAgIHJldCA9IGlubmVySFRN
TC5fX2h0bWw7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBjb250ZW50VG9Vc2Ug
PSBDT05URU5UX1RZUEVTW3R5cGVvZiBwcm9wcy5jaGlsZHJlbl0gPyBwcm9wcy5jaGlsZHJlbiA6
IG51bGw7XG4gICAgICB2YXIgY2hpbGRyZW5Ub1VzZSA9IGNvbnRlbnRUb1VzZSAhPSBudWxsID8g
bnVsbCA6IHByb3BzLmNoaWxkcmVuO1xuICAgICAgaWYgKGNvbnRlbnRUb1VzZSAhPSBudWxsKSB7
XG4gICAgICAgIC8vIFRPRE86IFZhbGlkYXRlIHRoYXQgdGV4dCBpcyBhbGxvd2VkIGFzIGEgY2hp
bGQgb2YgdGhpcyBub2RlXG4gICAgICAgIHJldCA9IGVzY2FwZVRleHRDb250ZW50Rm9yQnJvd3Nl
cihjb250ZW50VG9Vc2UpO1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJykge1xuICAgICAgICAgIHNldEFuZFZhbGlkYXRlQ29udGVudENoaWxkRGV2LmNh
bGwodGhpcywgY29udGVudFRvVXNlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjaGls
ZHJlblRvVXNlICE9IG51bGwpIHtcbiAgICAgICAgdmFyIG1vdW50SW1hZ2VzID0gdGhpcy5tb3Vu
dENoaWxkcmVuKGNoaWxkcmVuVG9Vc2UsIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICAgICAg
cmV0ID0gbW91bnRJbWFnZXMuam9pbignJyk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChuZXds
aW5lRWF0aW5nVGFnc1t0aGlzLl90YWddICYmIHJldC5jaGFyQXQoMCkgPT09ICdcXG4nKSB7XG4g
ICAgICAvLyB0ZXh0L2h0bWwgaWdub3JlcyB0aGUgZmlyc3QgY2hhcmFjdGVyIGluIHRoZXNlIHRh
Z3MgaWYgaXQncyBhIG5ld2xpbmVcbiAgICAgIC8vIFByZWZlciB0byBicmVhayBhcHBsaWNhdGlv
bi94bWwgb3ZlciB0ZXh0L2h0bWwgKGZvciBub3cpIGJ5IGFkZGluZ1xuICAgICAgLy8gYSBuZXds
aW5lIHNwZWNpZmljYWxseSB0byBnZXQgZWF0ZW4gYnkgdGhlIHBhcnNlci4gKEFsdGVybmF0ZWx5
IGZvclxuICAgICAgLy8gdGV4dGFyZWFzLCByZXBsYWNpbmcgXCJeXFxuXCIgd2l0aCBcIlxcclxc
blwiIGRvZXNuJ3QgZ2V0IGVhdGVuLCBhbmQgdGhlIGZpcnN0XG4gICAgICAvLyBcXHIgaXMgbm9y
bWFsaXplZCBvdXQgYnkgSFRNTFRleHRBcmVhRWxlbWVudCN2YWx1ZS4pXG4gICAgICAvLyBTZWU6
IDxodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sLXBvbHlnbG90LyNuZXdsaW5lcy1pbi10ZXh0YXJl
YS1hbmQtcHJlPlxuICAgICAgLy8gU2VlOiA8aHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvc3lu
dGF4Lmh0bWwjZWxlbWVudC1yZXN0cmljdGlvbnM+XG4gICAgICAvLyBTZWU6IDxodHRwOi8vd3d3
LnczLm9yZy9UUi9odG1sNS9zeW50YXguaHRtbCNuZXdsaW5lcz5cbiAgICAgIC8vIFNlZTogUGFy
c2luZyBvZiBcInRleHRhcmVhXCIgXCJsaXN0aW5nXCIgYW5kIFwicHJlXCIgZWxlbWVudHNcbiAg
ICAgIC8vICBmcm9tIDxodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS9zeW50YXguaHRtbCNwYXJz
aW5nLW1haW4taW5ib2R5PlxuICAgICAgcmV0dXJuICdcXG4nICsgcmV0O1xuICAgIH0gZWxzZSB7
XG4gICAgICByZXR1cm4gcmV0O1xuICAgIH1cbiAgfSxcblxuICBfY3JlYXRlSW5pdGlhbENoaWxk
cmVuOiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIHByb3BzLCBjb250ZXh0LCBsYXp5VHJlZSkge1xu
ICAgIC8vIEludGVudGlvbmFsIHVzZSBvZiAhPSB0byBhdm9pZCBjYXRjaGluZyB6ZXJvL2ZhbHNl
LlxuICAgIHZhciBpbm5lckhUTUwgPSBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTDtcbiAg
ICBpZiAoaW5uZXJIVE1MICE9IG51bGwpIHtcbiAgICAgIGlmIChpbm5lckhUTUwuX19odG1sICE9
IG51bGwpIHtcbiAgICAgICAgRE9NTGF6eVRyZWUucXVldWVIVE1MKGxhenlUcmVlLCBpbm5lckhU
TUwuX19odG1sKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGNvbnRlbnRUb1Vz
ZSA9IENPTlRFTlRfVFlQRVNbdHlwZW9mIHByb3BzLmNoaWxkcmVuXSA/IHByb3BzLmNoaWxkcmVu
IDogbnVsbDtcbiAgICAgIHZhciBjaGlsZHJlblRvVXNlID0gY29udGVudFRvVXNlICE9IG51bGwg
PyBudWxsIDogcHJvcHMuY2hpbGRyZW47XG4gICAgICAvLyBUT0RPOiBWYWxpZGF0ZSB0aGF0IHRl
eHQgaXMgYWxsb3dlZCBhcyBhIGNoaWxkIG9mIHRoaXMgbm9kZVxuICAgICAgaWYgKGNvbnRlbnRU
b1VzZSAhPSBudWxsKSB7XG4gICAgICAgIC8vIEF2b2lkIHNldHRpbmcgdGV4dENvbnRlbnQgd2hl
biB0aGUgdGV4dCBpcyBlbXB0eS4gSW4gSUUxMSBzZXR0aW5nXG4gICAgICAgIC8vIHRleHRDb250
ZW50IG9uIGEgdGV4dCBhcmVhIHdpbGwgY2F1c2UgdGhlIHBsYWNlaG9sZGVyIHRvIG5vdFxuICAg
ICAgICAvLyBzaG93IHdpdGhpbiB0aGUgdGV4dGFyZWEgdW50aWwgaXQgaGFzIGJlZW4gZm9jdXNl
ZCBhbmQgYmx1cnJlZCBhZ2Fpbi5cbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vi
b29rL3JlYWN0L2lzc3Vlcy82NzMxI2lzc3VlY29tbWVudC0yNTQ4NzQ1NTNcbiAgICAgICAgaWYg
KGNvbnRlbnRUb1VzZSAhPT0gJycpIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgICAgc2V0QW5kVmFsaWRhdGVDb250ZW50
Q2hpbGREZXYuY2FsbCh0aGlzLCBjb250ZW50VG9Vc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAg
ICBET01MYXp5VHJlZS5xdWV1ZVRleHQobGF6eVRyZWUsIGNvbnRlbnRUb1VzZSk7XG4gICAgICAg
IH1cbiAgICAgIH0gZWxzZSBpZiAoY2hpbGRyZW5Ub1VzZSAhPSBudWxsKSB7XG4gICAgICAgIHZh
ciBtb3VudEltYWdlcyA9IHRoaXMubW91bnRDaGlsZHJlbihjaGlsZHJlblRvVXNlLCB0cmFuc2Fj
dGlvbiwgY29udGV4dCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbW91bnRJbWFnZXMu
bGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICBET01MYXp5VHJlZS5xdWV1ZUNoaWxkKGxhenlUcmVl
LCBtb3VudEltYWdlc1tpXSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAg
LyoqXG4gICAqIFJlY2VpdmVzIGEgbmV4dCBlbGVtZW50IGFuZCB1cGRhdGVzIHRoZSBjb21wb25l
bnQuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBAcGFyYW0ge1JlYWN0RWxlbWVudH0gbmV4
dEVsZW1lbnRcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufFJlYWN0U2Vy
dmVyUmVuZGVyaW5nVHJhbnNhY3Rpb259IHRyYW5zYWN0aW9uXG4gICAqIEBwYXJhbSB7b2JqZWN0
fSBjb250ZXh0XG4gICAqL1xuICByZWNlaXZlQ29tcG9uZW50OiBmdW5jdGlvbiAobmV4dEVsZW1l
bnQsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgdmFyIHByZXZFbGVtZW50ID0gdGhpcy5f
Y3VycmVudEVsZW1lbnQ7XG4gICAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBuZXh0RWxlbWVudDtc
biAgICB0aGlzLnVwZGF0ZUNvbXBvbmVudCh0cmFuc2FjdGlvbiwgcHJldkVsZW1lbnQsIG5leHRF
bGVtZW50LCBjb250ZXh0KTtcbiAgfSxcblxuICAvKipcbiAgICogVXBkYXRlcyBhIERPTSBjb21w
b25lbnQgYWZ0ZXIgaXQgaGFzIGFscmVhZHkgYmVlbiBhbGxvY2F0ZWQgYW5kXG4gICAqIGF0dGFj
aGVkIHRvIHRoZSBET00uIFJlY29uY2lsZXMgdGhlIHJvb3QgRE9NIG5vZGUsIHRoZW4gcmVjdXJz
ZXMuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNh
Y3Rpb25cbiAgICogQHBhcmFtIHtSZWFjdEVsZW1lbnR9IHByZXZFbGVtZW50XG4gICAqIEBwYXJh
bSB7UmVhY3RFbGVtZW50fSBuZXh0RWxlbWVudFxuICAgKiBAaW50ZXJuYWxcbiAgICogQG92ZXJy
aWRhYmxlXG4gICAqL1xuICB1cGRhdGVDb21wb25lbnQ6IGZ1bmN0aW9uICh0cmFuc2FjdGlvbiwg
cHJldkVsZW1lbnQsIG5leHRFbGVtZW50LCBjb250ZXh0KSB7XG4gICAgdmFyIGxhc3RQcm9wcyA9
IHByZXZFbGVtZW50LnByb3BzO1xuICAgIHZhciBuZXh0UHJvcHMgPSB0aGlzLl9jdXJyZW50RWxl
bWVudC5wcm9wcztcblxuICAgIHN3aXRjaCAodGhpcy5fdGFnKSB7XG4gICAgICBjYXNlICdpbnB1
dCc6XG4gICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NSW5wdXQuZ2V0SG9zdFByb3BzKHRoaXMs
IGxhc3RQcm9wcyk7XG4gICAgICAgIG5leHRQcm9wcyA9IFJlYWN0RE9NSW5wdXQuZ2V0SG9zdFBy
b3BzKHRoaXMsIG5leHRQcm9wcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAnb3B0aW9u
JzpcbiAgICAgICAgbGFzdFByb3BzID0gUmVhY3RET01PcHRpb24uZ2V0SG9zdFByb3BzKHRoaXMs
IGxhc3RQcm9wcyk7XG4gICAgICAgIG5leHRQcm9wcyA9IFJlYWN0RE9NT3B0aW9uLmdldEhvc3RQ
cm9wcyh0aGlzLCBuZXh0UHJvcHMpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3NlbGVj
dCc6XG4gICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NU2VsZWN0LmdldEhvc3RQcm9wcyh0aGlz
LCBsYXN0UHJvcHMpO1xuICAgICAgICBuZXh0UHJvcHMgPSBSZWFjdERPTVNlbGVjdC5nZXRIb3N0
UHJvcHModGhpcywgbmV4dFByb3BzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0ZXh0
YXJlYSc6XG4gICAgICAgIGxhc3RQcm9wcyA9IFJlYWN0RE9NVGV4dGFyZWEuZ2V0SG9zdFByb3Bz
KHRoaXMsIGxhc3RQcm9wcyk7XG4gICAgICAgIG5leHRQcm9wcyA9IFJlYWN0RE9NVGV4dGFyZWEu
Z2V0SG9zdFByb3BzKHRoaXMsIG5leHRQcm9wcyk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cblxu
ICAgIGFzc2VydFZhbGlkUHJvcHModGhpcywgbmV4dFByb3BzKTtcbiAgICB0aGlzLl91cGRhdGVE
T01Qcm9wZXJ0aWVzKGxhc3RQcm9wcywgbmV4dFByb3BzLCB0cmFuc2FjdGlvbik7XG4gICAgdGhp
cy5fdXBkYXRlRE9NQ2hpbGRyZW4obGFzdFByb3BzLCBuZXh0UHJvcHMsIHRyYW5zYWN0aW9uLCBj
b250ZXh0KTtcblxuICAgIHN3aXRjaCAodGhpcy5fdGFnKSB7XG4gICAgICBjYXNlICdpbnB1dCc6
XG4gICAgICAgIC8vIFVwZGF0ZSB0aGUgd3JhcHBlciBhcm91bmQgaW5wdXRzICphZnRlciogdXBk
YXRpbmcgcHJvcHMuIFRoaXMgaGFzIHRvXG4gICAgICAgIC8vIGhhcHBlbiBhZnRlciBgX3VwZGF0
ZURPTVByb3BlcnRpZXNgLiBPdGhlcndpc2UgSFRNTDUgaW5wdXQgdmFsaWRhdGlvbnNcbiAgICAg
ICAgLy8gcmFpc2Ugd2FybmluZ3MgYW5kIHByZXZlbnQgdGhlIG5ldyB2YWx1ZSBmcm9tIGJlaW5n
IGFzc2lnbmVkLlxuICAgICAgICBSZWFjdERPTUlucHV0LnVwZGF0ZVdyYXBwZXIodGhpcyk7XG4g
ICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndGV4dGFyZWEnOlxuICAgICAgICBSZWFjdERPTVRl
eHRhcmVhLnVwZGF0ZVdyYXBwZXIodGhpcyk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAn
c2VsZWN0JzpcbiAgICAgICAgLy8gPHNlbGVjdD4gdmFsdWUgdXBkYXRlIG5lZWRzIHRvIG9jY3Vy
IGFmdGVyIDxvcHRpb24+IGNoaWxkcmVuXG4gICAgICAgIC8vIHJlY29uY2lsaWF0aW9uXG4gICAg
ICAgIHRyYW5zYWN0aW9uLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocG9zdFVwZGF0ZVNl
bGVjdFdyYXBwZXIsIHRoaXMpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH0sXG5cbiAgLyoq
XG4gICAqIFJlY29uY2lsZXMgdGhlIHByb3BlcnRpZXMgYnkgZGV0ZWN0aW5nIGRpZmZlcmVuY2Vz
IGluIHByb3BlcnR5IHZhbHVlcyBhbmRcbiAgICogdXBkYXRpbmcgdGhlIERPTSBhcyBuZWNlc3Nh
cnkuIFRoaXMgZnVuY3Rpb24gaXMgcHJvYmFibHkgdGhlIHNpbmdsZSBtb3N0XG4gICAqIGNyaXRp
Y2FsIHBhdGggZm9yIHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbi5cbiAgICpcbiAgICogVE9ETzog
QmVuY2htYXJrIHdoZXRoZXIgY2hlY2tpbmcgZm9yIGNoYW5nZWQgdmFsdWVzIGluIG1lbW9yeSBh
Y3R1YWxseVxuICAgKiAgICAgICBpbXByb3ZlcyBwZXJmb3JtYW5jZSAoZXNwZWNpYWxseSBzdGF0
aWNhbGx5IHBvc2l0aW9uZWQgZWxlbWVudHMpLlxuICAgKiBUT0RPOiBCZW5jaG1hcmsgdGhlIGVm
ZmVjdHMgb2YgcHV0dGluZyB0aGlzIGF0IHRoZSB0b3Agc2luY2UgOTklIG9mIHByb3BzXG4gICAq
ICAgICAgIGRvIG5vdCBjaGFuZ2UgZm9yIGEgZ2l2ZW4gcmVjb25jaWxpYXRpb24uXG4gICAqIFRP
RE86IEJlbmNobWFyayBhcmVhcyB0aGF0IGNhbiBiZSBpbXByb3ZlZCB3aXRoIGNhY2hpbmcuXG4g
ICAqXG4gICAqIEBwcml2YXRlXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBsYXN0UHJvcHNcbiAgICog
QHBhcmFtIHtvYmplY3R9IG5leHRQcm9wc1xuICAgKiBAcGFyYW0gez9ET01FbGVtZW50fSBub2Rl
XG4gICAqL1xuICBfdXBkYXRlRE9NUHJvcGVydGllczogZnVuY3Rpb24gKGxhc3RQcm9wcywgbmV4
dFByb3BzLCB0cmFuc2FjdGlvbikge1xuICAgIHZhciBwcm9wS2V5O1xuICAgIHZhciBzdHlsZU5h
bWU7XG4gICAgdmFyIHN0eWxlVXBkYXRlcztcbiAgICBmb3IgKHByb3BLZXkgaW4gbGFzdFByb3Bz
KSB7XG4gICAgICBpZiAobmV4dFByb3BzLmhhc093blByb3BlcnR5KHByb3BLZXkpIHx8ICFsYXN0
UHJvcHMuaGFzT3duUHJvcGVydHkocHJvcEtleSkgfHwgbGFzdFByb3BzW3Byb3BLZXldID09IG51
bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAocHJvcEtleSA9PT0g
U1RZTEUpIHtcbiAgICAgICAgdmFyIGxhc3RTdHlsZSA9IHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5
O1xuICAgICAgICBmb3IgKHN0eWxlTmFtZSBpbiBsYXN0U3R5bGUpIHtcbiAgICAgICAgICBpZiAo
bGFzdFN0eWxlLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkpIHtcbiAgICAgICAgICAgIHN0eWxl
VXBkYXRlcyA9IHN0eWxlVXBkYXRlcyB8fCB7fTtcbiAgICAgICAgICAgIHN0eWxlVXBkYXRlc1tz
dHlsZU5hbWVdID0gJyc7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRoaXMuX3By
ZXZpb3VzU3R5bGVDb3B5ID0gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAocmVnaXN0cmF0aW9uTmFt
ZU1vZHVsZXMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtcbiAgICAgICAgaWYgKGxhc3RQcm9w
c1twcm9wS2V5XSkge1xuICAgICAgICAgIC8vIE9ubHkgY2FsbCBkZWxldGVMaXN0ZW5lciBpZiB0
aGVyZSB3YXMgYSBsaXN0ZW5lciBwcmV2aW91c2x5IG9yXG4gICAgICAgICAgLy8gZWxzZSB3aWxs
RGVsZXRlTGlzdGVuZXIgZ2V0cyBjYWxsZWQgd2hlbiB0aGVyZSB3YXNuJ3QgYWN0dWFsbHkgYVxu
ICAgICAgICAgIC8vIGxpc3RlbmVyIChlLmcuLCBvbkNsaWNrPXtudWxsfSlcbiAgICAgICAgICBk
ZWxldGVMaXN0ZW5lcih0aGlzLCBwcm9wS2V5KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlm
IChpc0N1c3RvbUNvbXBvbmVudCh0aGlzLl90YWcsIGxhc3RQcm9wcykpIHtcbiAgICAgICAgaWYg
KCFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkge1xuICAgICAgICAgIERP
TVByb3BlcnR5T3BlcmF0aW9ucy5kZWxldGVWYWx1ZUZvckF0dHJpYnV0ZShnZXROb2RlKHRoaXMp
LCBwcm9wS2V5KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChET01Qcm9wZXJ0eS5wcm9w
ZXJ0aWVzW3Byb3BLZXldIHx8IERPTVByb3BlcnR5LmlzQ3VzdG9tQXR0cmlidXRlKHByb3BLZXkp
KSB7XG4gICAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5kZWxldGVWYWx1ZUZvclByb3BlcnR5
KGdldE5vZGUodGhpcyksIHByb3BLZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IgKHByb3BL
ZXkgaW4gbmV4dFByb3BzKSB7XG4gICAgICB2YXIgbmV4dFByb3AgPSBuZXh0UHJvcHNbcHJvcEtl
eV07XG4gICAgICB2YXIgbGFzdFByb3AgPSBwcm9wS2V5ID09PSBTVFlMRSA/IHRoaXMuX3ByZXZp
b3VzU3R5bGVDb3B5IDogbGFzdFByb3BzICE9IG51bGwgPyBsYXN0UHJvcHNbcHJvcEtleV0gOiB1
bmRlZmluZWQ7XG4gICAgICBpZiAoIW5leHRQcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSB8
fCBuZXh0UHJvcCA9PT0gbGFzdFByb3AgfHwgbmV4dFByb3AgPT0gbnVsbCAmJiBsYXN0UHJvcCA9
PSBudWxsKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BLZXkg
PT09IFNUWUxFKSB7XG4gICAgICAgIGlmIChuZXh0UHJvcCkge1xuICAgICAgICAgIGlmIChwcm9j
ZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICBjaGVja0Fu
ZFdhcm5Gb3JNdXRhdGVkU3R5bGUodGhpcy5fcHJldmlvdXNTdHlsZUNvcHksIHRoaXMuX3ByZXZp
b3VzU3R5bGUsIHRoaXMpO1xuICAgICAgICAgICAgdGhpcy5fcHJldmlvdXNTdHlsZSA9IG5leHRQ
cm9wO1xuICAgICAgICAgIH1cbiAgICAgICAgICBuZXh0UHJvcCA9IHRoaXMuX3ByZXZpb3VzU3R5
bGVDb3B5ID0gX2Fzc2lnbih7fSwgbmV4dFByb3ApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAg
ICAgIHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5ID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBp
ZiAobGFzdFByb3ApIHtcbiAgICAgICAgICAvLyBVbnNldCBzdHlsZXMgb24gYGxhc3RQcm9wYCBi
dXQgbm90IG9uIGBuZXh0UHJvcGAuXG4gICAgICAgICAgZm9yIChzdHlsZU5hbWUgaW4gbGFzdFBy
b3ApIHtcbiAgICAgICAgICAgIGlmIChsYXN0UHJvcC5oYXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUp
ICYmICghbmV4dFByb3AgfHwgIW5leHRQcm9wLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkpKSB7
XG4gICAgICAgICAgICAgIHN0eWxlVXBkYXRlcyA9IHN0eWxlVXBkYXRlcyB8fCB7fTtcbiAgICAg
ICAgICAgICAgc3R5bGVVcGRhdGVzW3N0eWxlTmFtZV0gPSAnJztcbiAgICAgICAgICAgIH1cbiAg
ICAgICAgICB9XG4gICAgICAgICAgLy8gVXBkYXRlIHN0eWxlcyB0aGF0IGNoYW5nZWQgc2luY2Ug
YGxhc3RQcm9wYC5cbiAgICAgICAgICBmb3IgKHN0eWxlTmFtZSBpbiBuZXh0UHJvcCkge1xuICAg
ICAgICAgICAgaWYgKG5leHRQcm9wLmhhc093blByb3BlcnR5KHN0eWxlTmFtZSkgJiYgbGFzdFBy
b3Bbc3R5bGVOYW1lXSAhPT0gbmV4dFByb3Bbc3R5bGVOYW1lXSkge1xuICAgICAgICAgICAgICBz
dHlsZVVwZGF0ZXMgPSBzdHlsZVVwZGF0ZXMgfHwge307XG4gICAgICAgICAgICAgIHN0eWxlVXBk
YXRlc1tzdHlsZU5hbWVdID0gbmV4dFByb3Bbc3R5bGVOYW1lXTtcbiAgICAgICAgICAgIH1cbiAg
ICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gUmVsaWVzIG9uIGB1cGRh
dGVTdHlsZXNCeUlEYCBub3QgbXV0YXRpbmcgYHN0eWxlVXBkYXRlc2AuXG4gICAgICAgICAgc3R5
bGVVcGRhdGVzID0gbmV4dFByb3A7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAocmVnaXN0
cmF0aW9uTmFtZU1vZHVsZXMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtcbiAgICAgICAgaWYg
KG5leHRQcm9wKSB7XG4gICAgICAgICAgZW5xdWV1ZVB1dExpc3RlbmVyKHRoaXMsIHByb3BLZXks
IG5leHRQcm9wLCB0cmFuc2FjdGlvbik7XG4gICAgICAgIH0gZWxzZSBpZiAobGFzdFByb3ApIHtc
biAgICAgICAgICBkZWxldGVMaXN0ZW5lcih0aGlzLCBwcm9wS2V5KTtcbiAgICAgICAgfVxuICAg
ICAgfSBlbHNlIGlmIChpc0N1c3RvbUNvbXBvbmVudCh0aGlzLl90YWcsIG5leHRQcm9wcykpIHtc
biAgICAgICAgaWYgKCFSRVNFUlZFRF9QUk9QUy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkge1xu
ICAgICAgICAgIERPTVByb3BlcnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvckF0dHJpYnV0ZShnZXRO
b2RlKHRoaXMpLCBwcm9wS2V5LCBuZXh0UHJvcCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBp
ZiAoRE9NUHJvcGVydHkucHJvcGVydGllc1twcm9wS2V5XSB8fCBET01Qcm9wZXJ0eS5pc0N1c3Rv
bUF0dHJpYnV0ZShwcm9wS2V5KSkge1xuICAgICAgICB2YXIgbm9kZSA9IGdldE5vZGUodGhpcyk7
XG4gICAgICAgIC8vIElmIHdlJ3JlIHVwZGF0aW5nIHRvIG51bGwgb3IgdW5kZWZpbmVkLCB3ZSBz
aG91bGQgcmVtb3ZlIHRoZSBwcm9wZXJ0eVxuICAgICAgICAvLyBmcm9tIHRoZSBET00gbm9kZSBp
bnN0ZWFkIG9mIGluYWR2ZXJ0ZW50bHkgc2V0dGluZyB0byBhIHN0cmluZy4gVGhpc1xuICAgICAg
ICAvLyBicmluZ3MgdXMgaW4gbGluZSB3aXRoIHRoZSBzYW1lIGJlaGF2aW9yIHdlIGhhdmUgb24g
aW5pdGlhbCByZW5kZXIuXG4gICAgICAgIGlmIChuZXh0UHJvcCAhPSBudWxsKSB7XG4gICAgICAg
ICAgRE9NUHJvcGVydHlPcGVyYXRpb25zLnNldFZhbHVlRm9yUHJvcGVydHkobm9kZSwgcHJvcEtl
eSwgbmV4dFByb3ApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIERPTVByb3BlcnR5T3Bl
cmF0aW9ucy5kZWxldGVWYWx1ZUZvclByb3BlcnR5KG5vZGUsIHByb3BLZXkpO1xuICAgICAgICB9
XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzdHlsZVVwZGF0ZXMpIHtcbiAgICAgIENTU1Byb3Bl
cnR5T3BlcmF0aW9ucy5zZXRWYWx1ZUZvclN0eWxlcyhnZXROb2RlKHRoaXMpLCBzdHlsZVVwZGF0
ZXMsIHRoaXMpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogUmVjb25jaWxlcyB0aGUgY2hp
bGRyZW4gd2l0aCB0aGUgdmFyaW91cyBwcm9wZXJ0aWVzIHRoYXQgYWZmZWN0IHRoZVxuICAgKiBj
aGlsZHJlbiBjb250ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge29iamVjdH0gbGFzdFByb3BzXG4g
ICAqIEBwYXJhbSB7b2JqZWN0fSBuZXh0UHJvcHNcbiAgICogQHBhcmFtIHtSZWFjdFJlY29uY2ls
ZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgKiBAcGFyYW0ge29iamVjdH0gY29udGV4dFxu
ICAgKi9cbiAgX3VwZGF0ZURPTUNoaWxkcmVuOiBmdW5jdGlvbiAobGFzdFByb3BzLCBuZXh0UHJv
cHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgdmFyIGxhc3RDb250ZW50ID0gQ09OVEVO
VF9UWVBFU1t0eXBlb2YgbGFzdFByb3BzLmNoaWxkcmVuXSA/IGxhc3RQcm9wcy5jaGlsZHJlbiA6
IG51bGw7XG4gICAgdmFyIG5leHRDb250ZW50ID0gQ09OVEVOVF9UWVBFU1t0eXBlb2YgbmV4dFBy
b3BzLmNoaWxkcmVuXSA/IG5leHRQcm9wcy5jaGlsZHJlbiA6IG51bGw7XG5cbiAgICB2YXIgbGFz
dEh0bWwgPSBsYXN0UHJvcHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgJiYgbGFzdFByb3BzLmRh
bmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbDtcbiAgICB2YXIgbmV4dEh0bWwgPSBuZXh0UHJv
cHMuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwgJiYgbmV4dFByb3BzLmRhbmdlcm91c2x5U2V0SW5u
ZXJIVE1MLl9faHRtbDtcblxuICAgIC8vIE5vdGUgdGhlIHVzZSBvZiBgIT1gIHdoaWNoIGNoZWNr
cyBmb3IgbnVsbCBvciB1bmRlZmluZWQuXG4gICAgdmFyIGxhc3RDaGlsZHJlbiA9IGxhc3RDb250
ZW50ICE9IG51bGwgPyBudWxsIDogbGFzdFByb3BzLmNoaWxkcmVuO1xuICAgIHZhciBuZXh0Q2hp
bGRyZW4gPSBuZXh0Q29udGVudCAhPSBudWxsID8gbnVsbCA6IG5leHRQcm9wcy5jaGlsZHJlbjtc
blxuICAgIC8vIElmIHdlJ3JlIHN3aXRjaGluZyBmcm9tIGNoaWxkcmVuIHRvIGNvbnRlbnQvaHRt
bCBvciB2aWNlIHZlcnNhLCByZW1vdmVcbiAgICAvLyB0aGUgb2xkIGNvbnRlbnRcbiAgICB2YXIg
bGFzdEhhc0NvbnRlbnRPckh0bWwgPSBsYXN0Q29udGVudCAhPSBudWxsIHx8IGxhc3RIdG1sICE9
IG51bGw7XG4gICAgdmFyIG5leHRIYXNDb250ZW50T3JIdG1sID0gbmV4dENvbnRlbnQgIT0gbnVs
bCB8fCBuZXh0SHRtbCAhPSBudWxsO1xuICAgIGlmIChsYXN0Q2hpbGRyZW4gIT0gbnVsbCAmJiBu
ZXh0Q2hpbGRyZW4gPT0gbnVsbCkge1xuICAgICAgdGhpcy51cGRhdGVDaGlsZHJlbihudWxsLCB0
cmFuc2FjdGlvbiwgY29udGV4dCk7XG4gICAgfSBlbHNlIGlmIChsYXN0SGFzQ29udGVudE9ySHRt
bCAmJiAhbmV4dEhhc0NvbnRlbnRPckh0bWwpIHtcbiAgICAgIHRoaXMudXBkYXRlVGV4dENvbnRl
bnQoJycpO1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicp
IHtcbiAgICAgICAgUmVhY3RJbnN0cnVtZW50YXRpb24uZGVidWdUb29sLm9uU2V0Q2hpbGRyZW4o
dGhpcy5fZGVidWdJRCwgW10pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChuZXh0Q29udGVu
dCAhPSBudWxsKSB7XG4gICAgICBpZiAobGFzdENvbnRlbnQgIT09IG5leHRDb250ZW50KSB7XG4g
ICAgICAgIHRoaXMudXBkYXRlVGV4dENvbnRlbnQoJycgKyBuZXh0Q29udGVudCk7XG4gICAgICAg
IGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAg
c2V0QW5kVmFsaWRhdGVDb250ZW50Q2hpbGREZXYuY2FsbCh0aGlzLCBuZXh0Q29udGVudCk7XG4g
ICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKG5leHRIdG1sICE9IG51bGwpIHtcbiAg
ICAgIGlmIChsYXN0SHRtbCAhPT0gbmV4dEh0bWwpIHtcbiAgICAgICAgdGhpcy51cGRhdGVNYXJr
dXAoJycgKyBuZXh0SHRtbCk7XG4gICAgICB9XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9F
TlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBSZWFjdEluc3RydW1lbnRhdGlvbi5kZWJ1
Z1Rvb2wub25TZXRDaGlsZHJlbih0aGlzLl9kZWJ1Z0lELCBbXSk7XG4gICAgICB9XG4gICAgfSBl
bHNlIGlmIChuZXh0Q2hpbGRyZW4gIT0gbnVsbCkge1xuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5P
REVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgc2V0QW5kVmFsaWRhdGVDb250ZW50
Q2hpbGREZXYuY2FsbCh0aGlzLCBudWxsKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy51cGRhdGVD
aGlsZHJlbihuZXh0Q2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICB9XG4gIH0s
XG5cbiAgZ2V0SG9zdE5vZGU6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZ2V0Tm9kZSh0aGlz
KTtcbiAgfSxcblxuICAvKipcbiAgICogRGVzdHJveXMgYWxsIGV2ZW50IHJlZ2lzdHJhdGlvbnMg
Zm9yIHRoaXMgaW5zdGFuY2UuIERvZXMgbm90IHJlbW92ZSBmcm9tXG4gICAqIHRoZSBET00uIFRo
YXQgbXVzdCBiZSBkb25lIGJ5IHRoZSBwYXJlbnQuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAg
Ki9cbiAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gKHNhZmVseSkge1xuICAgIHN3aXRjaCAo
dGhpcy5fdGFnKSB7XG4gICAgICBjYXNlICdhdWRpbyc6XG4gICAgICBjYXNlICdmb3JtJzpcbiAg
ICAgIGNhc2UgJ2lmcmFtZSc6XG4gICAgICBjYXNlICdpbWcnOlxuICAgICAgY2FzZSAnbGluayc6
XG4gICAgICBjYXNlICdvYmplY3QnOlxuICAgICAgY2FzZSAnc291cmNlJzpcbiAgICAgIGNhc2Ug
J3ZpZGVvJzpcbiAgICAgICAgdmFyIGxpc3RlbmVycyA9IHRoaXMuX3dyYXBwZXJTdGF0ZS5saXN0
ZW5lcnM7XG4gICAgICAgIGlmIChsaXN0ZW5lcnMpIHtcbiAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IGxpc3RlbmVycy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgbGlzdGVuZXJzW2ld
LnJlbW92ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAg
IGNhc2UgJ2lucHV0JzpcbiAgICAgIGNhc2UgJ3RleHRhcmVhJzpcbiAgICAgICAgaW5wdXRWYWx1
ZVRyYWNraW5nLnN0b3BUcmFja2luZyh0aGlzKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNl
ICdodG1sJzpcbiAgICAgIGNhc2UgJ2hlYWQnOlxuICAgICAgY2FzZSAnYm9keSc6XG4gICAgICAg
IC8qKlxuICAgICAgICAgKiBDb21wb25lbnRzIGxpa2UgPGh0bWw+IDxoZWFkPiBhbmQgPGJvZHk+
IGNhbid0IGJlIHJlbW92ZWQgb3IgYWRkZWRcbiAgICAgICAgICogZWFzaWx5IGluIGEgY3Jvc3Mt
YnJvd3NlciB3YXksIGhvd2V2ZXIgaXQncyB2YWx1YWJsZSB0byBiZSBhYmxlIHRvXG4gICAgICAg
ICAqIHRha2UgYWR2YW50YWdlIG9mIFJlYWN0J3MgcmVjb25jaWxpYXRpb24gZm9yIHN0eWxpbmcg
YW5kIDx0aXRsZT5cbiAgICAgICAgICogbWFuYWdlbWVudC4gU28gd2UganVzdCBkb2N1bWVudCBp
dCBhbmQgdGhyb3cgaW4gZGFuZ2Vyb3VzIGNhc2VzLlxuICAgICAgICAgKi9cbiAgICAgICAgIWZh
bHNlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChm
YWxzZSwgJzwlcz4gdHJpZWQgdG8gdW5tb3VudC4gQmVjYXVzZSBvZiBjcm9zcy1icm93c2VyIHF1
aXJrcyBpdCBpcyBpbXBvc3NpYmxlIHRvIHVubW91bnQgc29tZSB0b3AtbGV2ZWwgY29tcG9uZW50
cyAoZWcgPGh0bWw+LCA8aGVhZD4sIGFuZCA8Ym9keT4pIHJlbGlhYmx5IGFuZCBlZmZpY2llbnRs
eS4gVG8gZml4IHRoaXMsIGhhdmUgYSBzaW5nbGUgdG9wLWxldmVsIGNvbXBvbmVudCB0aGF0IG5l
dmVyIHVubW91bnRzIHJlbmRlciB0aGVzZSBlbGVtZW50cy4nLCB0aGlzLl90YWcpIDogX3Byb2RJ
bnZhcmlhbnQoJzY2JywgdGhpcy5fdGFnKSA6IHZvaWQgMDtcbiAgICAgICAgYnJlYWs7XG4gICAg
fVxuXG4gICAgdGhpcy51bm1vdW50Q2hpbGRyZW4oc2FmZWx5KTtcbiAgICBSZWFjdERPTUNvbXBv
bmVudFRyZWUudW5jYWNoZU5vZGUodGhpcyk7XG4gICAgRXZlbnRQbHVnaW5IdWIuZGVsZXRlQWxs
TGlzdGVuZXJzKHRoaXMpO1xuICAgIHRoaXMuX3Jvb3ROb2RlSUQgPSAwO1xuICAgIHRoaXMuX2Rv
bUlEID0gMDtcbiAgICB0aGlzLl93cmFwcGVyU3RhdGUgPSBudWxsO1xuXG4gICAgaWYgKHByb2Nl
c3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHNldEFuZFZhbGlkYXRl
Q29udGVudENoaWxkRGV2LmNhbGwodGhpcywgbnVsbCk7XG4gICAgfVxuICB9LFxuXG4gIGdldFB1
YmxpY0luc3RhbmNlOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGdldE5vZGUodGhpcyk7XG4g
IH1cbn07XG5cbl9hc3NpZ24oUmVhY3RET01Db21wb25lbnQucHJvdG90eXBlLCBSZWFjdERPTUNv
bXBvbmVudC5NaXhpbiwgUmVhY3RNdWx0aUNoaWxkLk1peGluKTtcblxubW9kdWxlLmV4cG9ydHMg
PSBSZWFjdERPTUNvbXBvbmVudDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNL
IEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0RE9NQ29tcG9uZW50LmpzXG4gKiog
bW9kdWxlIGlkID0gMTM4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgdmFsaWRhdGVET01O
ZXN0aW5nID0gcmVxdWlyZSgnLi92YWxpZGF0ZURPTU5lc3RpbmcnKTtcblxudmFyIERPQ19OT0RF
X1RZUEUgPSA5O1xuXG5mdW5jdGlvbiBSZWFjdERPTUNvbnRhaW5lckluZm8odG9wTGV2ZWxXcmFw
cGVyLCBub2RlKSB7XG4gIHZhciBpbmZvID0ge1xuICAgIF90b3BMZXZlbFdyYXBwZXI6IHRvcExl
dmVsV3JhcHBlcixcbiAgICBfaWRDb3VudGVyOiAxLFxuICAgIF9vd25lckRvY3VtZW50OiBub2Rl
ID8gbm9kZS5ub2RlVHlwZSA9PT0gRE9DX05PREVfVFlQRSA/IG5vZGUgOiBub2RlLm93bmVyRG9j
dW1lbnQgOiBudWxsLFxuICAgIF9ub2RlOiBub2RlLFxuICAgIF90YWc6IG5vZGUgPyBub2RlLm5v
ZGVOYW1lLnRvTG93ZXJDYXNlKCkgOiBudWxsLFxuICAgIF9uYW1lc3BhY2VVUkk6IG5vZGUgPyBu
b2RlLm5hbWVzcGFjZVVSSSA6IG51bGxcbiAgfTtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICBpbmZvLl9hbmNlc3RvckluZm8gPSBub2RlID8gdmFs
aWRhdGVET01OZXN0aW5nLnVwZGF0ZWRBbmNlc3RvckluZm8obnVsbCwgaW5mby5fdGFnLCBudWxs
KSA6IG51bGw7XG4gIH1cbiAgcmV0dXJuIGluZm87XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVh
Y3RET01Db250YWluZXJJbmZvO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sg
Rk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RET01Db250YWluZXJJbmZvLmpzXG4g
KiogbW9kdWxlIGlkID0gMTM5XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAq
IENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX2Fzc2lnbiA9
IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIERPTUxhenlUcmVlID0gcmVxdWlyZSgn
Li9ET01MYXp5VHJlZScpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4v
UmVhY3RET01Db21wb25lbnRUcmVlJyk7XG5cbnZhciBSZWFjdERPTUVtcHR5Q29tcG9uZW50ID0g
ZnVuY3Rpb24gKGluc3RhbnRpYXRlKSB7XG4gIC8vIFJlYWN0Q29tcG9zaXRlQ29tcG9uZW50IHVz
ZXMgdGhpczpcbiAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBudWxsO1xuICAvLyBSZWFjdERPTUNv
bXBvbmVudFRyZWUgdXNlcyB0aGVzZTpcbiAgdGhpcy5faG9zdE5vZGUgPSBudWxsO1xuICB0aGlz
Ll9ob3N0UGFyZW50ID0gbnVsbDtcbiAgdGhpcy5faG9zdENvbnRhaW5lckluZm8gPSBudWxsO1xu
ICB0aGlzLl9kb21JRCA9IDA7XG59O1xuX2Fzc2lnbihSZWFjdERPTUVtcHR5Q29tcG9uZW50LnBy
b3RvdHlwZSwge1xuICBtb3VudENvbXBvbmVudDogZnVuY3Rpb24gKHRyYW5zYWN0aW9uLCBob3N0
UGFyZW50LCBob3N0Q29udGFpbmVySW5mbywgY29udGV4dCkge1xuICAgIHZhciBkb21JRCA9IGhv
c3RDb250YWluZXJJbmZvLl9pZENvdW50ZXIrKztcbiAgICB0aGlzLl9kb21JRCA9IGRvbUlEO1xu
ICAgIHRoaXMuX2hvc3RQYXJlbnQgPSBob3N0UGFyZW50O1xuICAgIHRoaXMuX2hvc3RDb250YWlu
ZXJJbmZvID0gaG9zdENvbnRhaW5lckluZm87XG5cbiAgICB2YXIgbm9kZVZhbHVlID0gJyByZWFj
dC1lbXB0eTogJyArIHRoaXMuX2RvbUlEICsgJyAnO1xuICAgIGlmICh0cmFuc2FjdGlvbi51c2VD
cmVhdGVFbGVtZW50KSB7XG4gICAgICB2YXIgb3duZXJEb2N1bWVudCA9IGhvc3RDb250YWluZXJJ
bmZvLl9vd25lckRvY3VtZW50O1xuICAgICAgdmFyIG5vZGUgPSBvd25lckRvY3VtZW50LmNyZWF0
ZUNvbW1lbnQobm9kZVZhbHVlKTtcbiAgICAgIFJlYWN0RE9NQ29tcG9uZW50VHJlZS5wcmVjYWNo
ZU5vZGUodGhpcywgbm9kZSk7XG4gICAgICByZXR1cm4gRE9NTGF6eVRyZWUobm9kZSk7XG4gICAg
fSBlbHNlIHtcbiAgICAgIGlmICh0cmFuc2FjdGlvbi5yZW5kZXJUb1N0YXRpY01hcmt1cCkge1xu
ICAgICAgICAvLyBOb3JtYWxseSB3ZSdkIGluc2VydCBhIGNvbW1lbnQgbm9kZSwgYnV0IHNpbmNl
IHRoaXMgaXMgYSBzaXR1YXRpb25cbiAgICAgICAgLy8gd2hlcmUgUmVhY3Qgd29uJ3QgdGFrZSBv
dmVyIChzdGF0aWMgcGFnZXMpLCB3ZSBjYW4gc2ltcGx5IHJldHVyblxuICAgICAgICAvLyBub3Ro
aW5nLlxuICAgICAgICByZXR1cm4gJyc7XG4gICAgICB9XG4gICAgICByZXR1cm4gJzwhLS0nICsg
bm9kZVZhbHVlICsgJy0tPic7XG4gICAgfVxuICB9LFxuICByZWNlaXZlQ29tcG9uZW50OiBmdW5j
dGlvbiAoKSB7fSxcbiAgZ2V0SG9zdE5vZGU6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gUmVh
Y3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UodGhpcyk7XG4gIH0sXG4gIHVu
bW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uICgpIHtcbiAgICBSZWFjdERPTUNvbXBvbmVudFRyZWUu
dW5jYWNoZU5vZGUodGhpcyk7XG4gIH1cbn0pO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9N
RW1wdHlDb21wb25lbnQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09U
RVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTUVtcHR5Q29tcG9uZW50LmpzXG4gKiog
bW9kdWxlIGlkID0gMTQwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENv
cHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1z
dHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRp
cmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBw
YXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1l
IGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RET01GZWF0
dXJlRmxhZ3MgPSB7XG4gIHVzZUNyZWF0ZUVsZW1lbnQ6IHRydWUsXG4gIHVzZUZpYmVyOiBmYWxz
ZVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTUZlYXR1cmVGbGFncztcblxuXG4vKioq
KioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGli
L1JlYWN0RE9NRmVhdHVyZUZsYWdzLmpzXG4gKiogbW9kdWxlIGlkID0gMTQxXG4gKiogbW9kdWxl
IGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vi
b29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNv
ZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxu
ICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVl
LiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBp
biB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3Vz
ZSBzdHJpY3QnO1xuXG52YXIgRE9NQ2hpbGRyZW5PcGVyYXRpb25zID0gcmVxdWlyZSgnLi9ET01D
aGlsZHJlbk9wZXJhdGlvbnMnKTtcbnZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSByZXF1aXJl
KCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpO1xuXG4vKipcbiAqIE9wZXJhdGlvbnMgdXNlZCB0
byBwcm9jZXNzIHVwZGF0ZXMgdG8gRE9NIG5vZGVzLlxuICovXG52YXIgUmVhY3RET01JRE9wZXJh
dGlvbnMgPSB7XG4gIC8qKlxuICAgKiBVcGRhdGVzIGEgY29tcG9uZW50J3MgY2hpbGRyZW4gYnkg
cHJvY2Vzc2luZyBhIHNlcmllcyBvZiB1cGRhdGVzLlxuICAgKlxuICAgKiBAcGFyYW0ge2FycmF5
PG9iamVjdD59IHVwZGF0ZXMgTGlzdCBvZiB1cGRhdGUgY29uZmlndXJhdGlvbnMuXG4gICAqIEBp
bnRlcm5hbFxuICAgKi9cbiAgZGFuZ2Vyb3VzbHlQcm9jZXNzQ2hpbGRyZW5VcGRhdGVzOiBmdW5j
dGlvbiAocGFyZW50SW5zdCwgdXBkYXRlcykge1xuICAgIHZhciBub2RlID0gUmVhY3RET01Db21w
b25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UocGFyZW50SW5zdCk7XG4gICAgRE9NQ2hpbGRy
ZW5PcGVyYXRpb25zLnByb2Nlc3NVcGRhdGVzKG5vZGUsIHVwZGF0ZXMpO1xuICB9XG59O1xuXG5t
b2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NSURPcGVyYXRpb25zO1xuXG5cbi8qKioqKioqKioqKioq
KioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RET01J
RE9wZXJhdGlvbnMuanNcbiAqKiBtb2R1bGUgaWQgPSAxNDJcbiAqKiBtb2R1bGUgY2h1bmtzID0g
MFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5c
biAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7
XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50Jyks
XG4gICAgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIERPTVByb3Bl
cnR5T3BlcmF0aW9ucyA9IHJlcXVpcmUoJy4vRE9NUHJvcGVydHlPcGVyYXRpb25zJyk7XG52YXIg
TGlua2VkVmFsdWVVdGlscyA9IHJlcXVpcmUoJy4vTGlua2VkVmFsdWVVdGlscycpO1xudmFyIFJl
YWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7
XG52YXIgUmVhY3RVcGRhdGVzID0gcmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTtcblxudmFyIGlu
dmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHdhcm5pbmcgPSBy
ZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBkaWRXYXJuVmFsdWVMaW5rID0gZmFs
c2U7XG52YXIgZGlkV2FybkNoZWNrZWRMaW5rID0gZmFsc2U7XG52YXIgZGlkV2FyblZhbHVlRGVm
YXVsdFZhbHVlID0gZmFsc2U7XG52YXIgZGlkV2FybkNoZWNrZWREZWZhdWx0Q2hlY2tlZCA9IGZh
bHNlO1xudmFyIGRpZFdhcm5Db250cm9sbGVkVG9VbmNvbnRyb2xsZWQgPSBmYWxzZTtcbnZhciBk
aWRXYXJuVW5jb250cm9sbGVkVG9Db250cm9sbGVkID0gZmFsc2U7XG5cbmZ1bmN0aW9uIGZvcmNl
VXBkYXRlSWZNb3VudGVkKCkge1xuICBpZiAodGhpcy5fcm9vdE5vZGVJRCkge1xuICAgIC8vIERP
TSBjb21wb25lbnQgaXMgc3RpbGwgbW91bnRlZDsgdXBkYXRlXG4gICAgUmVhY3RET01JbnB1dC51
cGRhdGVXcmFwcGVyKHRoaXMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGlzQ29udHJvbGxlZChwcm9w
cykge1xuICB2YXIgdXNlc0NoZWNrZWQgPSBwcm9wcy50eXBlID09PSAnY2hlY2tib3gnIHx8IHBy
b3BzLnR5cGUgPT09ICdyYWRpbyc7XG4gIHJldHVybiB1c2VzQ2hlY2tlZCA/IHByb3BzLmNoZWNr
ZWQgIT0gbnVsbCA6IHByb3BzLnZhbHVlICE9IG51bGw7XG59XG5cbi8qKlxuICogSW1wbGVtZW50
cyBhbiA8aW5wdXQ+IGhvc3QgY29tcG9uZW50IHRoYXQgYWxsb3dzIHNldHRpbmcgdGhlc2Ugb3B0
aW9uYWxcbiAqIHByb3BzOiBgY2hlY2tlZGAsIGB2YWx1ZWAsIGBkZWZhdWx0Q2hlY2tlZGAsIGFu
ZCBgZGVmYXVsdFZhbHVlYC5cbiAqXG4gKiBJZiBgY2hlY2tlZGAgb3IgYHZhbHVlYCBhcmUgbm90
IHN1cHBsaWVkIChvciBudWxsL3VuZGVmaW5lZCksIHVzZXIgYWN0aW9uc1xuICogdGhhdCBhZmZl
Y3QgdGhlIGNoZWNrZWQgc3RhdGUgb3IgdmFsdWUgd2lsbCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhl
IGVsZW1lbnQuXG4gKlxuICogSWYgdGhleSBhcmUgc3VwcGxpZWQgKGFuZCBub3QgbnVsbC91bmRl
ZmluZWQpLCB0aGUgcmVuZGVyZWQgZWxlbWVudCB3aWxsIG5vdFxuICogdHJpZ2dlciB1cGRhdGVz
IHRvIHRoZSBlbGVtZW50LiBJbnN0ZWFkLCB0aGUgcHJvcHMgbXVzdCBjaGFuZ2UgaW4gb3JkZXIg
Zm9yXG4gKiB0aGUgcmVuZGVyZWQgZWxlbWVudCB0byBiZSB1cGRhdGVkLlxuICpcbiAqIFRoZSBy
ZW5kZXJlZCBlbGVtZW50IHdpbGwgYmUgaW5pdGlhbGl6ZWQgYXMgdW5jaGVja2VkIChvciBgZGVm
YXVsdENoZWNrZWRgKVxuICogd2l0aCBhbiBlbXB0eSB2YWx1ZSAob3IgYGRlZmF1bHRWYWx1ZWAp
LlxuICpcbiAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvMjAxMi9XRC1odG1sNS0yMDEyMTAy
NS90aGUtaW5wdXQtZWxlbWVudC5odG1sXG4gKi9cbnZhciBSZWFjdERPTUlucHV0ID0ge1xuICBn
ZXRIb3N0UHJvcHM6IGZ1bmN0aW9uIChpbnN0LCBwcm9wcykge1xuICAgIHZhciB2YWx1ZSA9IExp
bmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpO1xuICAgIHZhciBjaGVja2VkID0gTGlua2Vk
VmFsdWVVdGlscy5nZXRDaGVja2VkKHByb3BzKTtcblxuICAgIHZhciBob3N0UHJvcHMgPSBfYXNz
aWduKHtcbiAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBzZXQgLnR5cGUgYmVmb3JlIGFueSBvdGhlciBw
cm9wZXJ0aWVzIChzZXR0aW5nIC52YWx1ZVxuICAgICAgLy8gYmVmb3JlIC50eXBlIG1lYW5zIC52
YWx1ZSBpcyBsb3N0IGluIElFMTEgYW5kIGJlbG93KVxuICAgICAgdHlwZTogdW5kZWZpbmVkLFxu
ICAgICAgLy8gTWFrZSBzdXJlIHdlIHNldCAuc3RlcCBiZWZvcmUgLnZhbHVlIChzZXR0aW5nIC52
YWx1ZSBiZWZvcmUgLnN0ZXBcbiAgICAgIC8vIG1lYW5zIC52YWx1ZSBpcyByb3VuZGVkIG9uIG1v
dW50LCBiYXNlZCB1cG9uIHN0ZXAgcHJlY2lzaW9uKVxuICAgICAgc3RlcDogdW5kZWZpbmVkLFxu
ICAgICAgLy8gTWFrZSBzdXJlIHdlIHNldCAubWluICYgLm1heCBiZWZvcmUgLnZhbHVlICh0byBl
bnN1cmUgcHJvcGVyIG9yZGVyXG4gICAgICAvLyBpbiBjb3JuZXIgY2FzZXMgc3VjaCBhcyBtaW4g
b3IgbWF4IGRlcml2aW5nIGZyb20gdmFsdWUsIGUuZy4gSXNzdWUgIzcxNzApXG4gICAgICBtaW46
IHVuZGVmaW5lZCxcbiAgICAgIG1heDogdW5kZWZpbmVkXG4gICAgfSwgcHJvcHMsIHtcbiAgICAg
IGRlZmF1bHRDaGVja2VkOiB1bmRlZmluZWQsXG4gICAgICBkZWZhdWx0VmFsdWU6IHVuZGVmaW5l
ZCxcbiAgICAgIHZhbHVlOiB2YWx1ZSAhPSBudWxsID8gdmFsdWUgOiBpbnN0Ll93cmFwcGVyU3Rh
dGUuaW5pdGlhbFZhbHVlLFxuICAgICAgY2hlY2tlZDogY2hlY2tlZCAhPSBudWxsID8gY2hlY2tl
ZCA6IGluc3QuX3dyYXBwZXJTdGF0ZS5pbml0aWFsQ2hlY2tlZCxcbiAgICAgIG9uQ2hhbmdlOiBp
bnN0Ll93cmFwcGVyU3RhdGUub25DaGFuZ2VcbiAgICB9KTtcblxuICAgIHJldHVybiBob3N0UHJv
cHM7XG4gIH0sXG5cbiAgbW91bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHtcbiAg
ICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgTGlu
a2VkVmFsdWVVdGlscy5jaGVja1Byb3BUeXBlcygnaW5wdXQnLCBwcm9wcywgaW5zdC5fY3VycmVu
dEVsZW1lbnQuX293bmVyKTtcblxuICAgICAgdmFyIG93bmVyID0gaW5zdC5fY3VycmVudEVsZW1l
bnQuX293bmVyO1xuXG4gICAgICBpZiAocHJvcHMudmFsdWVMaW5rICE9PSB1bmRlZmluZWQgJiYg
IWRpZFdhcm5WYWx1ZUxpbmspIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdw
cm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICdgdmFsdWVMaW5rYCBwcm9wIG9uIGBpbnB1dGAg
aXMgZGVwcmVjYXRlZDsgc2V0IGB2YWx1ZWAgYW5kIGBvbkNoYW5nZWAgaW5zdGVhZC4nKSA6IHZv
aWQgMDtcbiAgICAgICAgZGlkV2FyblZhbHVlTGluayA9IHRydWU7XG4gICAgICB9XG4gICAgICBp
ZiAocHJvcHMuY2hlY2tlZExpbmsgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2FybkNoZWNrZWRMaW5r
KSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJu
aW5nKGZhbHNlLCAnYGNoZWNrZWRMaW5rYCBwcm9wIG9uIGBpbnB1dGAgaXMgZGVwcmVjYXRlZDsg
c2V0IGB2YWx1ZWAgYW5kIGBvbkNoYW5nZWAgaW5zdGVhZC4nKSA6IHZvaWQgMDtcbiAgICAgICAg
ZGlkV2FybkNoZWNrZWRMaW5rID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9wcy5jaGVj
a2VkICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuZGVmYXVsdENoZWNrZWQgIT09IHVuZGVmaW5lZCAm
JiAhZGlkV2FybkNoZWNrZWREZWZhdWx0Q2hlY2tlZCkge1xuICAgICAgICBwcm9jZXNzLmVudi5O
T0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzIGNvbnRhaW5zIGFu
IGlucHV0IG9mIHR5cGUgJXMgd2l0aCBib3RoIGNoZWNrZWQgYW5kIGRlZmF1bHRDaGVja2VkIHBy
b3BzLiAnICsgJ0lucHV0IGVsZW1lbnRzIG11c3QgYmUgZWl0aGVyIGNvbnRyb2xsZWQgb3IgdW5j
b250cm9sbGVkICcgKyAnKHNwZWNpZnkgZWl0aGVyIHRoZSBjaGVja2VkIHByb3AsIG9yIHRoZSBk
ZWZhdWx0Q2hlY2tlZCBwcm9wLCBidXQgbm90ICcgKyAnYm90aCkuIERlY2lkZSBiZXR3ZWVuIHVz
aW5nIGEgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgaW5wdXQgJyArICdlbGVtZW50IGFuZCBy
ZW1vdmUgb25lIG9mIHRoZXNlIHByb3BzLiBNb3JlIGluZm86ICcgKyAnaHR0cHM6Ly9mYi5tZS9y
ZWFjdC1jb250cm9sbGVkLWNvbXBvbmVudHMnLCBvd25lciAmJiBvd25lci5nZXROYW1lKCkgfHwg
J0EgY29tcG9uZW50JywgcHJvcHMudHlwZSkgOiB2b2lkIDA7XG4gICAgICAgIGRpZFdhcm5DaGVj
a2VkRGVmYXVsdENoZWNrZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzLnZhbHVl
ICE9PSB1bmRlZmluZWQgJiYgcHJvcHMuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQgJiYgIWRp
ZFdhcm5WYWx1ZURlZmF1bHRWYWx1ZSkge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJyVzIGNvbnRhaW5zIGFuIGlucHV0IG9m
IHR5cGUgJXMgd2l0aCBib3RoIHZhbHVlIGFuZCBkZWZhdWx0VmFsdWUgcHJvcHMuICcgKyAnSW5w
dXQgZWxlbWVudHMgbXVzdCBiZSBlaXRoZXIgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQgJyAr
ICcoc3BlY2lmeSBlaXRoZXIgdGhlIHZhbHVlIHByb3AsIG9yIHRoZSBkZWZhdWx0VmFsdWUgcHJv
cCwgYnV0IG5vdCAnICsgJ2JvdGgpLiBEZWNpZGUgYmV0d2VlbiB1c2luZyBhIGNvbnRyb2xsZWQg
b3IgdW5jb250cm9sbGVkIGlucHV0ICcgKyAnZWxlbWVudCBhbmQgcmVtb3ZlIG9uZSBvZiB0aGVz
ZSBwcm9wcy4gTW9yZSBpbmZvOiAnICsgJ2h0dHBzOi8vZmIubWUvcmVhY3QtY29udHJvbGxlZC1j
b21wb25lbnRzJywgb3duZXIgJiYgb3duZXIuZ2V0TmFtZSgpIHx8ICdBIGNvbXBvbmVudCcsIHBy
b3BzLnR5cGUpIDogdm9pZCAwO1xuICAgICAgICBkaWRXYXJuVmFsdWVEZWZhdWx0VmFsdWUgPSB0
cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBkZWZhdWx0VmFsdWUgPSBwcm9wcy5kZWZh
dWx0VmFsdWU7XG4gICAgaW5zdC5fd3JhcHBlclN0YXRlID0ge1xuICAgICAgaW5pdGlhbENoZWNr
ZWQ6IHByb3BzLmNoZWNrZWQgIT0gbnVsbCA/IHByb3BzLmNoZWNrZWQgOiBwcm9wcy5kZWZhdWx0
Q2hlY2tlZCxcbiAgICAgIGluaXRpYWxWYWx1ZTogcHJvcHMudmFsdWUgIT0gbnVsbCA/IHByb3Bz
LnZhbHVlIDogZGVmYXVsdFZhbHVlLFxuICAgICAgbGlzdGVuZXJzOiBudWxsLFxuICAgICAgb25D
aGFuZ2U6IF9oYW5kbGVDaGFuZ2UuYmluZChpbnN0KSxcbiAgICAgIGNvbnRyb2xsZWQ6IGlzQ29u
dHJvbGxlZChwcm9wcylcbiAgICB9O1xuICB9LFxuXG4gIHVwZGF0ZVdyYXBwZXI6IGZ1bmN0aW9u
IChpbnN0KSB7XG4gICAgdmFyIHByb3BzID0gaW5zdC5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5c
biAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAg
dmFyIGNvbnRyb2xsZWQgPSBpc0NvbnRyb2xsZWQocHJvcHMpO1xuICAgICAgdmFyIG93bmVyID0g
aW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVyO1xuXG4gICAgICBpZiAoIWluc3QuX3dyYXBwZXJT
dGF0ZS5jb250cm9sbGVkICYmIGNvbnRyb2xsZWQgJiYgIWRpZFdhcm5VbmNvbnRyb2xsZWRUb0Nv
bnRyb2xsZWQpIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IHdhcm5pbmcoZmFsc2UsICclcyBpcyBjaGFuZ2luZyBhbiB1bmNvbnRyb2xsZWQgaW5wdXQg
b2YgdHlwZSAlcyB0byBiZSBjb250cm9sbGVkLiAnICsgJ0lucHV0IGVsZW1lbnRzIHNob3VsZCBu
b3Qgc3dpdGNoIGZyb20gdW5jb250cm9sbGVkIHRvIGNvbnRyb2xsZWQgKG9yIHZpY2UgdmVyc2Ep
LiAnICsgJ0RlY2lkZSBiZXR3ZWVuIHVzaW5nIGEgY29udHJvbGxlZCBvciB1bmNvbnRyb2xsZWQg
aW5wdXQgJyArICdlbGVtZW50IGZvciB0aGUgbGlmZXRpbWUgb2YgdGhlIGNvbXBvbmVudC4gTW9y
ZSBpbmZvOiBodHRwczovL2ZiLm1lL3JlYWN0LWNvbnRyb2xsZWQtY29tcG9uZW50cycsIG93bmVy
ICYmIG93bmVyLmdldE5hbWUoKSB8fCAnQSBjb21wb25lbnQnLCBwcm9wcy50eXBlKSA6IHZvaWQg
MDtcbiAgICAgICAgZGlkV2FyblVuY29udHJvbGxlZFRvQ29udHJvbGxlZCA9IHRydWU7XG4gICAg
ICB9XG4gICAgICBpZiAoaW5zdC5fd3JhcHBlclN0YXRlLmNvbnRyb2xsZWQgJiYgIWNvbnRyb2xs
ZWQgJiYgIWRpZFdhcm5Db250cm9sbGVkVG9VbmNvbnRyb2xsZWQpIHtcbiAgICAgICAgcHJvY2Vz
cy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyBpcyBj
aGFuZ2luZyBhIGNvbnRyb2xsZWQgaW5wdXQgb2YgdHlwZSAlcyB0byBiZSB1bmNvbnRyb2xsZWQu
ICcgKyAnSW5wdXQgZWxlbWVudHMgc2hvdWxkIG5vdCBzd2l0Y2ggZnJvbSBjb250cm9sbGVkIHRv
IHVuY29udHJvbGxlZCAob3IgdmljZSB2ZXJzYSkuICcgKyAnRGVjaWRlIGJldHdlZW4gdXNpbmcg
YSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxlZCBpbnB1dCAnICsgJ2VsZW1lbnQgZm9yIHRoZSBs
aWZldGltZSBvZiB0aGUgY29tcG9uZW50LiBNb3JlIGluZm86IGh0dHBzOi8vZmIubWUvcmVhY3Qt
Y29udHJvbGxlZC1jb21wb25lbnRzJywgb3duZXIgJiYgb3duZXIuZ2V0TmFtZSgpIHx8ICdBIGNv
bXBvbmVudCcsIHByb3BzLnR5cGUpIDogdm9pZCAwO1xuICAgICAgICBkaWRXYXJuQ29udHJvbGxl
ZFRvVW5jb250cm9sbGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUT0RPOiBT
aG91bGRuJ3QgdGhpcyBiZSBnZXRDaGVja2VkKHByb3BzKT9cbiAgICB2YXIgY2hlY2tlZCA9IHBy
b3BzLmNoZWNrZWQ7XG4gICAgaWYgKGNoZWNrZWQgIT0gbnVsbCkge1xuICAgICAgRE9NUHJvcGVy
dHlPcGVyYXRpb25zLnNldFZhbHVlRm9yUHJvcGVydHkoUmVhY3RET01Db21wb25lbnRUcmVlLmdl
dE5vZGVGcm9tSW5zdGFuY2UoaW5zdCksICdjaGVja2VkJywgY2hlY2tlZCB8fCBmYWxzZSk7XG4g
ICAgfVxuXG4gICAgdmFyIG5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21J
bnN0YW5jZShpbnN0KTtcbiAgICB2YXIgdmFsdWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVl
KHByb3BzKTtcbiAgICBpZiAodmFsdWUgIT0gbnVsbCkge1xuICAgICAgaWYgKHZhbHVlID09PSAw
ICYmIG5vZGUudmFsdWUgPT09ICcnKSB7XG4gICAgICAgIG5vZGUudmFsdWUgPSAnMCc7XG4gICAg
ICAgIC8vIE5vdGU6IElFOSByZXBvcnRzIGEgbnVtYmVyIGlucHV0cyBhcyAndGV4dCcsIHNvIGNo
ZWNrIHByb3BzIGluc3RlYWQuXG4gICAgICB9IGVsc2UgaWYgKHByb3BzLnR5cGUgPT09ICdudW1i
ZXInKSB7XG4gICAgICAgIC8vIFNpbXVsYXRlIGBpbnB1dC52YWx1ZUFzTnVtYmVyYC4gSUU5IGRv
ZXMgbm90IHN1cHBvcnQgaXRcbiAgICAgICAgdmFyIHZhbHVlQXNOdW1iZXIgPSBwYXJzZUZsb2F0
KG5vZGUudmFsdWUsIDEwKSB8fCAwO1xuXG4gICAgICAgIGlmIChcbiAgICAgICAgLy8gZXNsaW50
LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgIHZhbHVlICE9IHZhbHVlQXNOdW1iZXIgfHxcbiAg
ICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgIHZhbHVlID09IHZhbHVl
QXNOdW1iZXIgJiYgbm9kZS52YWx1ZSAhPSB2YWx1ZSkge1xuICAgICAgICAgIC8vIENhc3QgYHZh
bHVlYCB0byBhIHN0cmluZyB0byBlbnN1cmUgdGhlIHZhbHVlIGlzIHNldCBjb3JyZWN0bHkuIFdo
aWxlXG4gICAgICAgICAgLy8gYnJvd3NlcnMgdHlwaWNhbGx5IGRvIHRoaXMgYXMgbmVjZXNzYXJ5
LCBqc2RvbSBkb2Vzbid0LlxuICAgICAgICAgIG5vZGUudmFsdWUgPSAnJyArIHZhbHVlO1xuICAg
ICAgICB9XG4gICAgICB9IGVsc2UgaWYgKG5vZGUudmFsdWUgIT09ICcnICsgdmFsdWUpIHtcbiAg
ICAgICAgLy8gQ2FzdCBgdmFsdWVgIHRvIGEgc3RyaW5nIHRvIGVuc3VyZSB0aGUgdmFsdWUgaXMg
c2V0IGNvcnJlY3RseS4gV2hpbGVcbiAgICAgICAgLy8gYnJvd3NlcnMgdHlwaWNhbGx5IGRvIHRo
aXMgYXMgbmVjZXNzYXJ5LCBqc2RvbSBkb2Vzbid0LlxuICAgICAgICBub2RlLnZhbHVlID0gJycg
KyB2YWx1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKHByb3BzLnZhbHVlID09
IG51bGwgJiYgcHJvcHMuZGVmYXVsdFZhbHVlICE9IG51bGwpIHtcbiAgICAgICAgLy8gSW4gQ2hy
b21lLCBhc3NpZ25pbmcgZGVmYXVsdFZhbHVlIHRvIGNlcnRhaW4gaW5wdXQgdHlwZXMgdHJpZ2dl
cnMgaW5wdXQgdmFsaWRhdGlvbi5cbiAgICAgICAgLy8gRm9yIG51bWJlciBpbnB1dHMsIHRoZSBk
aXNwbGF5IHZhbHVlIGxvc2VzIHRyYWlsaW5nIGRlY2ltYWwgcG9pbnRzLiBGb3IgZW1haWwgaW5w
dXRzLFxuICAgICAgICAvLyBDaHJvbWUgcmFpc2VzIFwiVGhlIHNwZWNpZmllZCB2YWx1ZSA8eD4g
aXMgbm90IGEgdmFsaWQgZW1haWwgYWRkcmVzc1wiLlxuICAgICAgICAvL1xuICAgICAgICAvLyBI
ZXJlIHdlIGNoZWNrIHRvIHNlZSBpZiB0aGUgZGVmYXVsdFZhbHVlIGhhcyBhY3R1YWxseSBjaGFu
Z2VkLCBhdm9pZGluZyB0aGVzZSBwcm9ibGVtc1xuICAgICAgICAvLyB3aGVuIHRoZSB1c2VyIGlz
IGlucHV0dGluZyB0ZXh0XG4gICAgICAgIC8vXG4gICAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNv
bS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzI1M1xuICAgICAgICBpZiAobm9kZS5kZWZhdWx0VmFs
dWUgIT09ICcnICsgcHJvcHMuZGVmYXVsdFZhbHVlKSB7XG4gICAgICAgICAgbm9kZS5kZWZhdWx0
VmFsdWUgPSAnJyArIHByb3BzLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAg
ICAgaWYgKHByb3BzLmNoZWNrZWQgPT0gbnVsbCAmJiBwcm9wcy5kZWZhdWx0Q2hlY2tlZCAhPSBu
dWxsKSB7XG4gICAgICAgIG5vZGUuZGVmYXVsdENoZWNrZWQgPSAhIXByb3BzLmRlZmF1bHRDaGVj
a2VkO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBwb3N0TW91bnRXcmFwcGVyOiBmdW5jdGlv
biAoaW5zdCkge1xuICAgIHZhciBwcm9wcyA9IGluc3QuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xu
XG4gICAgLy8gVGhpcyBpcyBpbiBwb3N0TW91bnQgYmVjYXVzZSB3ZSBuZWVkIGFjY2VzcyB0byB0
aGUgRE9NIG5vZGUsIHdoaWNoIGlzIG5vdFxuICAgIC8vIGF2YWlsYWJsZSB1bnRpbCBhZnRlciB0
aGUgY29tcG9uZW50IGhhcyBtb3VudGVkLlxuICAgIHZhciBub2RlID0gUmVhY3RET01Db21wb25l
bnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7XG5cbiAgICAvLyBEZXRhY2ggdmFsdWUg
ZnJvbSBkZWZhdWx0VmFsdWUuIFdlIHdvbid0IGRvIGFueXRoaW5nIGlmIHdlJ3JlIHdvcmtpbmcg
b25cbiAgICAvLyBzdWJtaXQgb3IgcmVzZXQgaW5wdXRzIGFzIHRob3NlIHZhbHVlcyAmIGRlZmF1
bHRWYWx1ZXMgYXJlIGxpbmtlZC4gVGhleVxuICAgIC8vIGFyZSBub3QgcmVzZXRhYmxlIG5vZGVz
IHNvIHRoaXMgb3BlcmF0aW9uIGRvZXNuJ3QgbWF0dGVyIGFuZCBhY3R1YWxseVxuICAgIC8vIHJl
bW92ZXMgYnJvd3Nlci1kZWZhdWx0IHZhbHVlcyAoZWcgXCJTdWJtaXQgUXVlcnlcIikgd2hlbiBu
byB2YWx1ZSBpc1xuICAgIC8vIHByb3ZpZGVkLlxuXG4gICAgc3dpdGNoIChwcm9wcy50eXBlKSB7
XG4gICAgICBjYXNlICdzdWJtaXQnOlxuICAgICAgY2FzZSAncmVzZXQnOlxuICAgICAgICBicmVh
aztcbiAgICAgIGNhc2UgJ2NvbG9yJzpcbiAgICAgIGNhc2UgJ2RhdGUnOlxuICAgICAgY2FzZSAn
ZGF0ZXRpbWUnOlxuICAgICAgY2FzZSAnZGF0ZXRpbWUtbG9jYWwnOlxuICAgICAgY2FzZSAnbW9u
dGgnOlxuICAgICAgY2FzZSAndGltZSc6XG4gICAgICBjYXNlICd3ZWVrJzpcbiAgICAgICAgLy8g
VGhpcyBmaXhlcyB0aGUgbm8tc2hvdyBpc3N1ZSBvbiBpT1MgU2FmYXJpIGFuZCBBbmRyb2lkIENo
cm9tZTpcbiAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vl
cy83MjMzXG4gICAgICAgIG5vZGUudmFsdWUgPSAnJztcbiAgICAgICAgbm9kZS52YWx1ZSA9IG5v
ZGUuZGVmYXVsdFZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAg
IG5vZGUudmFsdWUgPSBub2RlLnZhbHVlO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICAv
LyBOb3JtYWxseSwgd2UnZCBqdXN0IGRvIGBub2RlLmNoZWNrZWQgPSBub2RlLmNoZWNrZWRgIHVw
b24gaW5pdGlhbCBtb3VudCwgbGVzcyB0aGlzIGJ1Z1xuICAgIC8vIHRoaXMgaXMgbmVlZGVkIHRv
IHdvcmsgYXJvdW5kIGEgY2hyb21lIGJ1ZyB3aGVyZSBzZXR0aW5nIGRlZmF1bHRDaGVja2VkXG4g
ICAgLy8gd2lsbCBzb21ldGltZXMgaW5mbHVlbmNlIHRoZSB2YWx1ZSBvZiBjaGVja2VkIChldmVu
IGFmdGVyIGRldGFjaG1lbnQpLlxuICAgIC8vIFJlZmVyZW5jZTogaHR0cHM6Ly9idWdzLmNocm9t
aXVtLm9yZy9wL2Nocm9taXVtL2lzc3Vlcy9kZXRhaWw/aWQ9NjA4NDE2XG4gICAgLy8gV2UgbmVl
ZCB0byB0ZW1wb3JhcmlseSB1bnNldCBuYW1lIHRvIGF2b2lkIGRpc3J1cHRpbmcgcmFkaW8gYnV0
dG9uIGdyb3Vwcy5cbiAgICB2YXIgbmFtZSA9IG5vZGUubmFtZTtcbiAgICBpZiAobmFtZSAhPT0g
JycpIHtcbiAgICAgIG5vZGUubmFtZSA9ICcnO1xuICAgIH1cbiAgICBub2RlLmRlZmF1bHRDaGVj
a2VkID0gIW5vZGUuZGVmYXVsdENoZWNrZWQ7XG4gICAgbm9kZS5kZWZhdWx0Q2hlY2tlZCA9ICFu
b2RlLmRlZmF1bHRDaGVja2VkO1xuICAgIGlmIChuYW1lICE9PSAnJykge1xuICAgICAgbm9kZS5u
YW1lID0gbmFtZTtcbiAgICB9XG4gIH1cbn07XG5cbmZ1bmN0aW9uIF9oYW5kbGVDaGFuZ2UoZXZl
bnQpIHtcbiAgdmFyIHByb3BzID0gdGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7XG5cbiAgdmFy
IHJldHVyblZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5leGVjdXRlT25DaGFuZ2UocHJvcHMsIGV2
ZW50KTtcblxuICAvLyBIZXJlIHdlIHVzZSBhc2FwIHRvIHdhaXQgdW50aWwgYWxsIHVwZGF0ZXMg
aGF2ZSBwcm9wYWdhdGVkLCB3aGljaFxuICAvLyBpcyBpbXBvcnRhbnQgd2hlbiB1c2luZyBjb250
cm9sbGVkIGNvbXBvbmVudHMgd2l0aGluIGxheWVyczpcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29t
L2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xNjk4XG4gIFJlYWN0VXBkYXRlcy5hc2FwKGZvcmNlVXBk
YXRlSWZNb3VudGVkLCB0aGlzKTtcblxuICB2YXIgbmFtZSA9IHByb3BzLm5hbWU7XG4gIGlmIChw
cm9wcy50eXBlID09PSAncmFkaW8nICYmIG5hbWUgIT0gbnVsbCkge1xuICAgIHZhciByb290Tm9k
ZSA9IFJlYWN0RE9NQ29tcG9uZW50VHJlZS5nZXROb2RlRnJvbUluc3RhbmNlKHRoaXMpO1xuICAg
IHZhciBxdWVyeVJvb3QgPSByb290Tm9kZTtcblxuICAgIHdoaWxlIChxdWVyeVJvb3QucGFyZW50
Tm9kZSkge1xuICAgICAgcXVlcnlSb290ID0gcXVlcnlSb290LnBhcmVudE5vZGU7XG4gICAgfVxu
XG4gICAgLy8gSWYgYHJvb3ROb2RlLmZvcm1gIHdhcyBub24tbnVsbCwgdGhlbiB3ZSBjb3VsZCB0
cnkgYGZvcm0uZWxlbWVudHNgLFxuICAgIC8vIGJ1dCB0aGF0IHNvbWV0aW1lcyBiZWhhdmVzIHN0
cmFuZ2VseSBpbiBJRTguIFdlIGNvdWxkIGFsc28gdHJ5IHVzaW5nXG4gICAgLy8gYGZvcm0uZ2V0
RWxlbWVudHNCeU5hbWVgLCBidXQgdGhhdCB3aWxsIG9ubHkgcmV0dXJuIGRpcmVjdCBjaGlsZHJl
blxuICAgIC8vIGFuZCB3b24ndCBpbmNsdWRlIGlucHV0cyB0aGF0IHVzZSB0aGUgSFRNTDUgYGZv
cm09YCBhdHRyaWJ1dGUuIFNpbmNlXG4gICAgLy8gdGhlIGlucHV0IG1pZ2h0IG5vdCBldmVuIGJl
IGluIGEgZm9ybSwgbGV0J3MganVzdCB1c2UgdGhlIGdsb2JhbFxuICAgIC8vIGBxdWVyeVNlbGVj
dG9yQWxsYCB0byBlbnN1cmUgd2UgZG9uJ3QgbWlzcyBhbnl0aGluZy5cbiAgICB2YXIgZ3JvdXAg
PSBxdWVyeVJvb3QucXVlcnlTZWxlY3RvckFsbCgnaW5wdXRbbmFtZT0nICsgSlNPTi5zdHJpbmdp
ZnkoJycgKyBuYW1lKSArICddW3R5cGU9XCJyYWRpb1wiXScpO1xuXG4gICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBncm91cC5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIG90aGVyTm9kZSA9IGdyb3Vw
W2ldO1xuICAgICAgaWYgKG90aGVyTm9kZSA9PT0gcm9vdE5vZGUgfHwgb3RoZXJOb2RlLmZvcm0g
IT09IHJvb3ROb2RlLmZvcm0pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICAv
LyBUaGlzIHdpbGwgdGhyb3cgaWYgcmFkaW8gYnV0dG9ucyByZW5kZXJlZCBieSBkaWZmZXJlbnQg
Y29waWVzIG9mIFJlYWN0XG4gICAgICAvLyBhbmQgdGhlIHNhbWUgbmFtZSBhcmUgcmVuZGVyZWQg
aW50byB0aGUgc2FtZSBmb3JtIChzYW1lIGFzICMxOTM5KS5cbiAgICAgIC8vIFRoYXQncyBwcm9i
YWJseSBva2F5OyB3ZSBkb24ndCBzdXBwb3J0IGl0IGp1c3QgYXMgd2UgZG9uJ3Qgc3VwcG9ydFxu
ICAgICAgLy8gbWl4aW5nIFJlYWN0IHJhZGlvIGJ1dHRvbnMgd2l0aCBub24tUmVhY3Qgb25lcy5c
biAgICAgIHZhciBvdGhlckluc3RhbmNlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldEluc3Rh
bmNlRnJvbU5vZGUob3RoZXJOb2RlKTtcbiAgICAgICFvdGhlckluc3RhbmNlID8gcHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ1JlYWN0RE9N
SW5wdXQ6IE1peGluZyBSZWFjdCBhbmQgbm9uLVJlYWN0IHJhZGlvIGlucHV0cyB3aXRoIHRoZSBz
YW1lIGBuYW1lYCBpcyBub3Qgc3VwcG9ydGVkLicpIDogX3Byb2RJbnZhcmlhbnQoJzkwJykgOiB2
b2lkIDA7XG4gICAgICAvLyBJZiB0aGlzIGlzIGEgY29udHJvbGxlZCByYWRpbyBidXR0b24gZ3Jv
dXAsIGZvcmNpbmcgdGhlIGlucHV0IHRoYXRcbiAgICAgIC8vIHdhcyBwcmV2aW91c2x5IGNoZWNr
ZWQgdG8gdXBkYXRlIHdpbGwgY2F1c2UgaXQgdG8gYmUgY29tZSByZS1jaGVja2VkXG4gICAgICAv
LyBhcyBhcHByb3ByaWF0ZS5cbiAgICAgIFJlYWN0VXBkYXRlcy5hc2FwKGZvcmNlVXBkYXRlSWZN
b3VudGVkLCBvdGhlckluc3RhbmNlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0dXJuVmFs
dWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01JbnB1dDtcblxuXG4vKioqKioqKioq
KioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0
RE9NSW5wdXQuanNcbiAqKiBtb2R1bGUgaWQgPSAxNDNcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxu
ICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5c
bnZhciBfYXNzaWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuXG52YXIgUmVhY3QgPSBy
ZXF1aXJlKCdyZWFjdC9saWIvUmVhY3QnKTtcbnZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSBy
ZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpO1xudmFyIFJlYWN0RE9NU2VsZWN0ID0g
cmVxdWlyZSgnLi9SZWFjdERPTVNlbGVjdCcpO1xuXG52YXIgd2FybmluZyA9IHJlcXVpcmUoJ2Zi
anMvbGliL3dhcm5pbmcnKTtcbnZhciBkaWRXYXJuSW52YWxpZE9wdGlvbkNoaWxkcmVuID0gZmFs
c2U7XG5cbmZ1bmN0aW9uIGZsYXR0ZW5DaGlsZHJlbihjaGlsZHJlbikge1xuICB2YXIgY29udGVu
dCA9ICcnO1xuXG4gIC8vIEZsYXR0ZW4gY2hpbGRyZW4gYW5kIHdhcm4gaWYgdGhleSBhcmVuJ3Qg
c3RyaW5ncyBvciBudW1iZXJzO1xuICAvLyBpbnZhbGlkIHR5cGVzIGFyZSBpZ25vcmVkLlxuICBS
ZWFjdC5DaGlsZHJlbi5mb3JFYWNoKGNoaWxkcmVuLCBmdW5jdGlvbiAoY2hpbGQpIHtcbiAgICBp
ZiAoY2hpbGQgPT0gbnVsbCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodHlwZW9m
IGNoaWxkID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgY2hpbGQgPT09ICdudW1iZXInKSB7XG4gICAg
ICBjb250ZW50ICs9IGNoaWxkO1xuICAgIH0gZWxzZSBpZiAoIWRpZFdhcm5JbnZhbGlkT3B0aW9u
Q2hpbGRyZW4pIHtcbiAgICAgIGRpZFdhcm5JbnZhbGlkT3B0aW9uQ2hpbGRyZW4gPSB0cnVlO1xu
ICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFs
c2UsICdPbmx5IHN0cmluZ3MgYW5kIG51bWJlcnMgYXJlIHN1cHBvcnRlZCBhcyA8b3B0aW9uPiBj
aGlsZHJlbi4nKSA6IHZvaWQgMDtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiBjb250ZW50O1xu
fVxuXG4vKipcbiAqIEltcGxlbWVudHMgYW4gPG9wdGlvbj4gaG9zdCBjb21wb25lbnQgdGhhdCB3
YXJucyB3aGVuIGBzZWxlY3RlZGAgaXMgc2V0LlxuICovXG52YXIgUmVhY3RET01PcHRpb24gPSB7
XG4gIG1vdW50V3JhcHBlcjogZnVuY3Rpb24gKGluc3QsIHByb3BzLCBob3N0UGFyZW50KSB7XG4g
ICAgLy8gVE9ETyAoeXVuZ3N0ZXJzKTogUmVtb3ZlIHN1cHBvcnQgZm9yIGBzZWxlY3RlZGAgaW4g
PG9wdGlvbj4uXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicp
IHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5n
KHByb3BzLnNlbGVjdGVkID09IG51bGwsICdVc2UgdGhlIGBkZWZhdWx0VmFsdWVgIG9yIGB2YWx1
ZWAgcHJvcHMgb24gPHNlbGVjdD4gaW5zdGVhZCBvZiAnICsgJ3NldHRpbmcgYHNlbGVjdGVkYCBv
biA8b3B0aW9uPi4nKSA6IHZvaWQgMDtcbiAgICB9XG5cbiAgICAvLyBMb29rIHVwIHdoZXRoZXIg
dGhpcyBvcHRpb24gaXMgJ3NlbGVjdGVkJ1xuICAgIHZhciBzZWxlY3RWYWx1ZSA9IG51bGw7XG4g
ICAgaWYgKGhvc3RQYXJlbnQgIT0gbnVsbCkge1xuICAgICAgdmFyIHNlbGVjdFBhcmVudCA9IGhv
c3RQYXJlbnQ7XG5cbiAgICAgIGlmIChzZWxlY3RQYXJlbnQuX3RhZyA9PT0gJ29wdGdyb3VwJykg
e1xuICAgICAgICBzZWxlY3RQYXJlbnQgPSBzZWxlY3RQYXJlbnQuX2hvc3RQYXJlbnQ7XG4gICAg
ICB9XG5cbiAgICAgIGlmIChzZWxlY3RQYXJlbnQgIT0gbnVsbCAmJiBzZWxlY3RQYXJlbnQuX3Rh
ZyA9PT0gJ3NlbGVjdCcpIHtcbiAgICAgICAgc2VsZWN0VmFsdWUgPSBSZWFjdERPTVNlbGVjdC5n
ZXRTZWxlY3RWYWx1ZUNvbnRleHQoc2VsZWN0UGFyZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAg
ICAvLyBJZiB0aGUgdmFsdWUgaXMgbnVsbCAoZS5nLiwgbm8gc3BlY2lmaWVkIHZhbHVlIG9yIGFm
dGVyIGluaXRpYWwgbW91bnQpXG4gICAgLy8gb3IgbWlzc2luZyAoZS5nLiwgZm9yIDxkYXRhbGlz
dD4pLCB3ZSBkb24ndCBjaGFuZ2UgcHJvcHMuc2VsZWN0ZWRcbiAgICB2YXIgc2VsZWN0ZWQgPSBu
dWxsO1xuICAgIGlmIChzZWxlY3RWYWx1ZSAhPSBudWxsKSB7XG4gICAgICB2YXIgdmFsdWU7XG4g
ICAgICBpZiAocHJvcHMudmFsdWUgIT0gbnVsbCkge1xuICAgICAgICB2YWx1ZSA9IHByb3BzLnZh
bHVlICsgJyc7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB2YWx1ZSA9IGZsYXR0ZW5DaGlsZHJl
bihwcm9wcy5jaGlsZHJlbik7XG4gICAgICB9XG4gICAgICBzZWxlY3RlZCA9IGZhbHNlO1xuICAg
ICAgaWYgKEFycmF5LmlzQXJyYXkoc2VsZWN0VmFsdWUpKSB7XG4gICAgICAgIC8vIG11bHRpcGxl
XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZWN0VmFsdWUubGVuZ3RoOyBpKyspIHtc
biAgICAgICAgICBpZiAoJycgKyBzZWxlY3RWYWx1ZVtpXSA9PT0gdmFsdWUpIHtcbiAgICAgICAg
ICAgIHNlbGVjdGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAg
ICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZWN0ZWQgPSAnJyArIHNlbGVjdFZh
bHVlID09PSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpbnN0Ll93cmFwcGVyU3RhdGUg
PSB7IHNlbGVjdGVkOiBzZWxlY3RlZCB9O1xuICB9LFxuXG4gIHBvc3RNb3VudFdyYXBwZXI6IGZ1
bmN0aW9uIChpbnN0KSB7XG4gICAgLy8gdmFsdWU9XCJcIiBzaG91bGQgbWFrZSBhIHZhbHVlIGF0
dHJpYnV0ZSAoIzYyMTkpXG4gICAgdmFyIHByb3BzID0gaW5zdC5fY3VycmVudEVsZW1lbnQucHJv
cHM7XG4gICAgaWYgKHByb3BzLnZhbHVlICE9IG51bGwpIHtcbiAgICAgIHZhciBub2RlID0gUmVh
Y3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7XG4gICAgICBub2Rl
LnNldEF0dHJpYnV0ZSgndmFsdWUnLCBwcm9wcy52YWx1ZSk7XG4gICAgfVxuICB9LFxuXG4gIGdl
dEhvc3RQcm9wczogZnVuY3Rpb24gKGluc3QsIHByb3BzKSB7XG4gICAgdmFyIGhvc3RQcm9wcyA9
IF9hc3NpZ24oeyBzZWxlY3RlZDogdW5kZWZpbmVkLCBjaGlsZHJlbjogdW5kZWZpbmVkIH0sIHBy
b3BzKTtcblxuICAgIC8vIFJlYWQgc3RhdGUgb25seSBmcm9tIGluaXRpYWwgbW91bnQgYmVjYXVz
ZSA8c2VsZWN0PiB1cGRhdGVzIHZhbHVlXG4gICAgLy8gbWFudWFsbHk7IHdlIG5lZWQgdGhlIGlu
aXRpYWwgc3RhdGUgb25seSBmb3Igc2VydmVyIHJlbmRlcmluZ1xuICAgIGlmIChpbnN0Ll93cmFw
cGVyU3RhdGUuc2VsZWN0ZWQgIT0gbnVsbCkge1xuICAgICAgaG9zdFByb3BzLnNlbGVjdGVkID0g
aW5zdC5fd3JhcHBlclN0YXRlLnNlbGVjdGVkO1xuICAgIH1cblxuICAgIHZhciBjb250ZW50ID0g
ZmxhdHRlbkNoaWxkcmVuKHByb3BzLmNoaWxkcmVuKTtcblxuICAgIGlmIChjb250ZW50KSB7XG4g
ICAgICBob3N0UHJvcHMuY2hpbGRyZW4gPSBjb250ZW50O1xuICAgIH1cblxuICAgIHJldHVybiBo
b3N0UHJvcHM7XG4gIH1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01PcHRpb247XG5c
blxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3Qt
ZG9tL2xpYi9SZWFjdERPTU9wdGlvbi5qc1xuICoqIG1vZHVsZSBpZCA9IDE0NFxuICoqIG1vZHVs
ZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
biAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1
c2Ugc3RyaWN0JztcblxudmFyIEV4ZWN1dGlvbkVudmlyb25tZW50ID0gcmVxdWlyZSgnZmJqcy9s
aWIvRXhlY3V0aW9uRW52aXJvbm1lbnQnKTtcblxudmFyIGdldE5vZGVGb3JDaGFyYWN0ZXJPZmZz
ZXQgPSByZXF1aXJlKCcuL2dldE5vZGVGb3JDaGFyYWN0ZXJPZmZzZXQnKTtcbnZhciBnZXRUZXh0
Q29udGVudEFjY2Vzc29yID0gcmVxdWlyZSgnLi9nZXRUZXh0Q29udGVudEFjY2Vzc29yJyk7XG5c
bi8qKlxuICogV2hpbGUgYGlzQ29sbGFwc2VkYCBpcyBhdmFpbGFibGUgb24gdGhlIFNlbGVjdGlv
biBvYmplY3QgYW5kIGBjb2xsYXBzZWRgXG4gKiBpcyBhdmFpbGFibGUgb24gdGhlIFJhbmdlIG9i
amVjdCwgSUUxMSBzb21ldGltZXMgZ2V0cyB0aGVtIHdyb25nLlxuICogSWYgdGhlIGFuY2hvci9m
b2N1cyBub2RlcyBhbmQgb2Zmc2V0cyBhcmUgdGhlIHNhbWUsIHRoZSByYW5nZSBpcyBjb2xsYXBz
ZWQuXG4gKi9cbmZ1bmN0aW9uIGlzQ29sbGFwc2VkKGFuY2hvck5vZGUsIGFuY2hvck9mZnNldCwg
Zm9jdXNOb2RlLCBmb2N1c09mZnNldCkge1xuICByZXR1cm4gYW5jaG9yTm9kZSA9PT0gZm9jdXNO
b2RlICYmIGFuY2hvck9mZnNldCA9PT0gZm9jdXNPZmZzZXQ7XG59XG5cbi8qKlxuICogR2V0IHRo
ZSBhcHByb3ByaWF0ZSBhbmNob3IgYW5kIGZvY3VzIG5vZGUvb2Zmc2V0IHBhaXJzIGZvciBJRS5c
biAqXG4gKiBUaGUgY2F0Y2ggaGVyZSBpcyB0aGF0IElFJ3Mgc2VsZWN0aW9uIEFQSSBkb2Vzbid0
IHByb3ZpZGUgaW5mb3JtYXRpb25cbiAqIGFib3V0IHdoZXRoZXIgdGhlIHNlbGVjdGlvbiBpcyBm
b3J3YXJkIG9yIGJhY2t3YXJkLCBzbyB3ZSBoYXZlIHRvXG4gKiBiZWhhdmUgYXMgdGhvdWdoIGl0
J3MgYWx3YXlzIGZvcndhcmQuXG4gKlxuICogSUUgdGV4dCBkaWZmZXJzIGZyb20gbW9kZXJuIHNl
bGVjdGlvbiBpbiB0aGF0IGl0IGJlaGF2ZXMgYXMgdGhvdWdoXG4gKiBibG9jayBlbGVtZW50cyBl
bmQgd2l0aCBhIG5ldyBsaW5lLiBUaGlzIG1lYW5zIGNoYXJhY3RlciBvZmZzZXRzIHdpbGxcbiAq
IGRpZmZlciBiZXR3ZWVuIHRoZSB0d28gQVBJcy5cbiAqXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR9
IG5vZGVcbiAqIEByZXR1cm4ge29iamVjdH1cbiAqL1xuZnVuY3Rpb24gZ2V0SUVPZmZzZXRzKG5v
ZGUpIHtcbiAgdmFyIHNlbGVjdGlvbiA9IGRvY3VtZW50LnNlbGVjdGlvbjtcbiAgdmFyIHNlbGVj
dGVkUmFuZ2UgPSBzZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKTtcbiAgdmFyIHNlbGVjdGVkTGVuZ3Ro
ID0gc2VsZWN0ZWRSYW5nZS50ZXh0Lmxlbmd0aDtcblxuICAvLyBEdXBsaWNhdGUgc2VsZWN0aW9u
IHNvIHdlIGNhbiBtb3ZlIHJhbmdlIHdpdGhvdXQgYnJlYWtpbmcgdXNlciBzZWxlY3Rpb24uXG4g
IHZhciBmcm9tU3RhcnQgPSBzZWxlY3RlZFJhbmdlLmR1cGxpY2F0ZSgpO1xuICBmcm9tU3RhcnQu
bW92ZVRvRWxlbWVudFRleHQobm9kZSk7XG4gIGZyb21TdGFydC5zZXRFbmRQb2ludCgnRW5kVG9T
dGFydCcsIHNlbGVjdGVkUmFuZ2UpO1xuXG4gIHZhciBzdGFydE9mZnNldCA9IGZyb21TdGFydC50
ZXh0Lmxlbmd0aDtcbiAgdmFyIGVuZE9mZnNldCA9IHN0YXJ0T2Zmc2V0ICsgc2VsZWN0ZWRMZW5n
dGg7XG5cbiAgcmV0dXJuIHtcbiAgICBzdGFydDogc3RhcnRPZmZzZXQsXG4gICAgZW5kOiBlbmRP
ZmZzZXRcbiAgfTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVcbiAqIEBy
ZXR1cm4gez9vYmplY3R9XG4gKi9cbmZ1bmN0aW9uIGdldE1vZGVybk9mZnNldHMobm9kZSkge1xu
ICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbiAmJiB3aW5kb3cuZ2V0U2VsZWN0
aW9uKCk7XG5cbiAgaWYgKCFzZWxlY3Rpb24gfHwgc2VsZWN0aW9uLnJhbmdlQ291bnQgPT09IDAp
IHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHZhciBhbmNob3JOb2RlID0gc2VsZWN0aW9u
LmFuY2hvck5vZGU7XG4gIHZhciBhbmNob3JPZmZzZXQgPSBzZWxlY3Rpb24uYW5jaG9yT2Zmc2V0
O1xuICB2YXIgZm9jdXNOb2RlID0gc2VsZWN0aW9uLmZvY3VzTm9kZTtcbiAgdmFyIGZvY3VzT2Zm
c2V0ID0gc2VsZWN0aW9uLmZvY3VzT2Zmc2V0O1xuXG4gIHZhciBjdXJyZW50UmFuZ2UgPSBzZWxl
Y3Rpb24uZ2V0UmFuZ2VBdCgwKTtcblxuICAvLyBJbiBGaXJlZm94LCByYW5nZS5zdGFydENvbnRh
aW5lciBhbmQgcmFuZ2UuZW5kQ29udGFpbmVyIGNhbiBiZSBcImFub255bW91c1xuICAvLyBkaXZz
XCIsIGUuZy4gdGhlIHVwL2Rvd24gYnV0dG9ucyBvbiBhbiA8aW5wdXQgdHlwZT1cIm51bWJlclwi
Pi4gQW5vbnltb3VzXG4gIC8vIGRpdnMgZG8gbm90IHNlZW0gdG8gZXhwb3NlIHByb3BlcnRpZXMs
IHRyaWdnZXJpbmcgYSBcIlBlcm1pc3Npb24gZGVuaWVkXG4gIC8vIGVycm9yXCIgaWYgYW55IG9m
IGl0cyBwcm9wZXJ0aWVzIGFyZSBhY2Nlc3NlZC4gVGhlIG9ubHkgc2VlbWluZ2x5IHBvc3NpYmxl
XG4gIC8vIHdheSB0byBhdm9pZCBlcnJvcmluZyBpcyB0byBhY2Nlc3MgYSBwcm9wZXJ0eSB0aGF0
IHR5cGljYWxseSB3b3JrcyBmb3JcbiAgLy8gbm9uLWFub255bW91cyBkaXZzIGFuZCBjYXRjaCBh
bnkgZXJyb3IgdGhhdCBtYXkgb3RoZXJ3aXNlIGFyaXNlLiBTZWVcbiAgLy8gaHR0cHM6Ly9idWd6
aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA4NDI3XG4gIHRyeSB7XG4gICAgLyog
ZXNsaW50LWRpc2FibGUgbm8tdW51c2VkLWV4cHJlc3Npb25zICovXG4gICAgY3VycmVudFJhbmdl
LnN0YXJ0Q29udGFpbmVyLm5vZGVUeXBlO1xuICAgIGN1cnJlbnRSYW5nZS5lbmRDb250YWluZXIu
bm9kZVR5cGU7XG4gICAgLyogZXNsaW50LWVuYWJsZSBuby11bnVzZWQtZXhwcmVzc2lvbnMgKi9c
biAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgLy8gSWYgdGhlIG5v
ZGUgYW5kIG9mZnNldCB2YWx1ZXMgYXJlIHRoZSBzYW1lLCB0aGUgc2VsZWN0aW9uIGlzIGNvbGxh
cHNlZC5cbiAgLy8gYFNlbGVjdGlvbi5pc0NvbGxhcHNlZGAgaXMgYXZhaWxhYmxlIG5hdGl2ZWx5
LCBidXQgSUUgc29tZXRpbWVzIGdldHNcbiAgLy8gdGhpcyB2YWx1ZSB3cm9uZy5cbiAgdmFyIGlz
U2VsZWN0aW9uQ29sbGFwc2VkID0gaXNDb2xsYXBzZWQoc2VsZWN0aW9uLmFuY2hvck5vZGUsIHNl
bGVjdGlvbi5hbmNob3JPZmZzZXQsIHNlbGVjdGlvbi5mb2N1c05vZGUsIHNlbGVjdGlvbi5mb2N1
c09mZnNldCk7XG5cbiAgdmFyIHJhbmdlTGVuZ3RoID0gaXNTZWxlY3Rpb25Db2xsYXBzZWQgPyAw
IDogY3VycmVudFJhbmdlLnRvU3RyaW5nKCkubGVuZ3RoO1xuXG4gIHZhciB0ZW1wUmFuZ2UgPSBj
dXJyZW50UmFuZ2UuY2xvbmVSYW5nZSgpO1xuICB0ZW1wUmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRz
KG5vZGUpO1xuICB0ZW1wUmFuZ2Uuc2V0RW5kKGN1cnJlbnRSYW5nZS5zdGFydENvbnRhaW5lciwg
Y3VycmVudFJhbmdlLnN0YXJ0T2Zmc2V0KTtcblxuICB2YXIgaXNUZW1wUmFuZ2VDb2xsYXBzZWQg
PSBpc0NvbGxhcHNlZCh0ZW1wUmFuZ2Uuc3RhcnRDb250YWluZXIsIHRlbXBSYW5nZS5zdGFydE9m
ZnNldCwgdGVtcFJhbmdlLmVuZENvbnRhaW5lciwgdGVtcFJhbmdlLmVuZE9mZnNldCk7XG5cbiAg
dmFyIHN0YXJ0ID0gaXNUZW1wUmFuZ2VDb2xsYXBzZWQgPyAwIDogdGVtcFJhbmdlLnRvU3RyaW5n
KCkubGVuZ3RoO1xuICB2YXIgZW5kID0gc3RhcnQgKyByYW5nZUxlbmd0aDtcblxuICAvLyBEZXRl
Y3Qgd2hldGhlciB0aGUgc2VsZWN0aW9uIGlzIGJhY2t3YXJkLlxuICB2YXIgZGV0ZWN0aW9uUmFu
Z2UgPSBkb2N1bWVudC5jcmVhdGVSYW5nZSgpO1xuICBkZXRlY3Rpb25SYW5nZS5zZXRTdGFydChh
bmNob3JOb2RlLCBhbmNob3JPZmZzZXQpO1xuICBkZXRlY3Rpb25SYW5nZS5zZXRFbmQoZm9jdXNO
b2RlLCBmb2N1c09mZnNldCk7XG4gIHZhciBpc0JhY2t3YXJkID0gZGV0ZWN0aW9uUmFuZ2UuY29s
bGFwc2VkO1xuXG4gIHJldHVybiB7XG4gICAgc3RhcnQ6IGlzQmFja3dhcmQgPyBlbmQgOiBzdGFy
dCxcbiAgICBlbmQ6IGlzQmFja3dhcmQgPyBzdGFydCA6IGVuZFxuICB9O1xufVxuXG4vKipcbiAq
IEBwYXJhbSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gbm9kZVxuICogQHBhcmFtIHtvYmplY3R9
IG9mZnNldHNcbiAqL1xuZnVuY3Rpb24gc2V0SUVPZmZzZXRzKG5vZGUsIG9mZnNldHMpIHtcbiAg
dmFyIHJhbmdlID0gZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJhbmdlKCkuZHVwbGljYXRlKCk7
XG4gIHZhciBzdGFydCwgZW5kO1xuXG4gIGlmIChvZmZzZXRzLmVuZCA9PT0gdW5kZWZpbmVkKSB7
XG4gICAgc3RhcnQgPSBvZmZzZXRzLnN0YXJ0O1xuICAgIGVuZCA9IHN0YXJ0O1xuICB9IGVsc2Ug
aWYgKG9mZnNldHMuc3RhcnQgPiBvZmZzZXRzLmVuZCkge1xuICAgIHN0YXJ0ID0gb2Zmc2V0cy5l
bmQ7XG4gICAgZW5kID0gb2Zmc2V0cy5zdGFydDtcbiAgfSBlbHNlIHtcbiAgICBzdGFydCA9IG9m
ZnNldHMuc3RhcnQ7XG4gICAgZW5kID0gb2Zmc2V0cy5lbmQ7XG4gIH1cblxuICByYW5nZS5tb3Zl
VG9FbGVtZW50VGV4dChub2RlKTtcbiAgcmFuZ2UubW92ZVN0YXJ0KCdjaGFyYWN0ZXInLCBzdGFy
dCk7XG4gIHJhbmdlLnNldEVuZFBvaW50KCdFbmRUb1N0YXJ0JywgcmFuZ2UpO1xuICByYW5nZS5t
b3ZlRW5kKCdjaGFyYWN0ZXInLCBlbmQgLSBzdGFydCk7XG4gIHJhbmdlLnNlbGVjdCgpO1xufVxu
XG4vKipcbiAqIEluIG1vZGVybiBub24tSUUgYnJvd3NlcnMsIHdlIGNhbiBzdXBwb3J0IGJvdGgg
Zm9yd2FyZCBhbmQgYmFja3dhcmRcbiAqIHNlbGVjdGlvbnMuXG4gKlxuICogTm90ZTogSUUxMCsg
c3VwcG9ydHMgdGhlIFNlbGVjdGlvbiBvYmplY3QsIGJ1dCBpdCBkb2VzIG5vdCBzdXBwb3J0XG4g
KiB0aGUgYGV4dGVuZGAgbWV0aG9kLCB3aGljaCBtZWFucyB0aGF0IGV2ZW4gaW4gbW9kZXJuIElF
LCBpdCdzIG5vdCBwb3NzaWJsZVxuICogdG8gcHJvZ3JhbW1hdGljYWxseSBjcmVhdGUgYSBiYWNr
d2FyZCBzZWxlY3Rpb24uIFRodXMsIGZvciBhbGwgSUVcbiAqIHZlcnNpb25zLCB3ZSB1c2UgdGhl
IG9sZCBJRSBBUEkgdG8gY3JlYXRlIG91ciBzZWxlY3Rpb25zLlxuICpcbiAqIEBwYXJhbSB7RE9N
RWxlbWVudHxET01UZXh0Tm9kZX0gbm9kZVxuICogQHBhcmFtIHtvYmplY3R9IG9mZnNldHNcbiAq
L1xuZnVuY3Rpb24gc2V0TW9kZXJuT2Zmc2V0cyhub2RlLCBvZmZzZXRzKSB7XG4gIGlmICghd2lu
ZG93LmdldFNlbGVjdGlvbikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBzZWxlY3Rpb24g
PSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7XG4gIHZhciBsZW5ndGggPSBub2RlW2dldFRleHRDb250
ZW50QWNjZXNzb3IoKV0ubGVuZ3RoO1xuICB2YXIgc3RhcnQgPSBNYXRoLm1pbihvZmZzZXRzLnN0
YXJ0LCBsZW5ndGgpO1xuICB2YXIgZW5kID0gb2Zmc2V0cy5lbmQgPT09IHVuZGVmaW5lZCA/IHN0
YXJ0IDogTWF0aC5taW4ob2Zmc2V0cy5lbmQsIGxlbmd0aCk7XG5cbiAgLy8gSUUgMTEgdXNlcyBt
b2Rlcm4gc2VsZWN0aW9uLCBidXQgZG9lc24ndCBzdXBwb3J0IHRoZSBleHRlbmQgbWV0aG9kLlxu
ICAvLyBGbGlwIGJhY2t3YXJkIHNlbGVjdGlvbnMsIHNvIHdlIGNhbiBzZXQgd2l0aCBhIHNpbmds
ZSByYW5nZS5cbiAgaWYgKCFzZWxlY3Rpb24uZXh0ZW5kICYmIHN0YXJ0ID4gZW5kKSB7XG4gICAg
dmFyIHRlbXAgPSBlbmQ7XG4gICAgZW5kID0gc3RhcnQ7XG4gICAgc3RhcnQgPSB0ZW1wO1xuICB9
XG5cbiAgdmFyIHN0YXJ0TWFya2VyID0gZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldChub2RlLCBz
dGFydCk7XG4gIHZhciBlbmRNYXJrZXIgPSBnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0KG5vZGUs
IGVuZCk7XG5cbiAgaWYgKHN0YXJ0TWFya2VyICYmIGVuZE1hcmtlcikge1xuICAgIHZhciByYW5n
ZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgcmFuZ2Uuc2V0U3RhcnQoc3RhcnRNYXJr
ZXIubm9kZSwgc3RhcnRNYXJrZXIub2Zmc2V0KTtcbiAgICBzZWxlY3Rpb24ucmVtb3ZlQWxsUmFu
Z2VzKCk7XG5cbiAgICBpZiAoc3RhcnQgPiBlbmQpIHtcbiAgICAgIHNlbGVjdGlvbi5hZGRSYW5n
ZShyYW5nZSk7XG4gICAgICBzZWxlY3Rpb24uZXh0ZW5kKGVuZE1hcmtlci5ub2RlLCBlbmRNYXJr
ZXIub2Zmc2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmFuZ2Uuc2V0RW5kKGVuZE1hcmtlci5u
b2RlLCBlbmRNYXJrZXIub2Zmc2V0KTtcbiAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShyYW5nZSk7
XG4gICAgfVxuICB9XG59XG5cbnZhciB1c2VJRU9mZnNldHMgPSBFeGVjdXRpb25FbnZpcm9ubWVu
dC5jYW5Vc2VET00gJiYgJ3NlbGVjdGlvbicgaW4gZG9jdW1lbnQgJiYgISgnZ2V0U2VsZWN0aW9u
JyBpbiB3aW5kb3cpO1xuXG52YXIgUmVhY3RET01TZWxlY3Rpb24gPSB7XG4gIC8qKlxuICAgKiBA
cGFyYW0ge0RPTUVsZW1lbnR9IG5vZGVcbiAgICovXG4gIGdldE9mZnNldHM6IHVzZUlFT2Zmc2V0
cyA/IGdldElFT2Zmc2V0cyA6IGdldE1vZGVybk9mZnNldHMsXG5cbiAgLyoqXG4gICAqIEBwYXJh
bSB7RE9NRWxlbWVudHxET01UZXh0Tm9kZX0gbm9kZVxuICAgKiBAcGFyYW0ge29iamVjdH0gb2Zm
c2V0c1xuICAgKi9cbiAgc2V0T2Zmc2V0czogdXNlSUVPZmZzZXRzID8gc2V0SUVPZmZzZXRzIDog
c2V0TW9kZXJuT2Zmc2V0c1xufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdERPTVNlbGVjdGlv
bjtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9y
ZWFjdC1kb20vbGliL1JlYWN0RE9NU2VsZWN0aW9uLmpzXG4gKiogbW9kdWxlIGlkID0gMTQ1XG4g
KiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4g
Ki9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3Jl
YWN0UHJvZEludmFyaWFudCcpLFxuICAgIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWdu
Jyk7XG5cbnZhciBET01DaGlsZHJlbk9wZXJhdGlvbnMgPSByZXF1aXJlKCcuL0RPTUNoaWxkcmVu
T3BlcmF0aW9ucycpO1xudmFyIERPTUxhenlUcmVlID0gcmVxdWlyZSgnLi9ET01MYXp5VHJlZScp
O1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25l
bnRUcmVlJyk7XG5cbnZhciBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIgPSByZXF1aXJlKCcu
L2VzY2FwZVRleHRDb250ZW50Rm9yQnJvd3NlcicpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUo
J2ZianMvbGliL2ludmFyaWFudCcpO1xudmFyIHZhbGlkYXRlRE9NTmVzdGluZyA9IHJlcXVpcmUo
Jy4vdmFsaWRhdGVET01OZXN0aW5nJyk7XG5cbi8qKlxuICogVGV4dCBub2RlcyB2aW9sYXRlIGEg
Y291cGxlIGFzc3VtcHRpb25zIHRoYXQgUmVhY3QgbWFrZXMgYWJvdXQgY29tcG9uZW50czpcbiAq
XG4gKiAgLSBXaGVuIG1vdW50aW5nIHRleHQgaW50byB0aGUgRE9NLCBhZGphY2VudCB0ZXh0IG5v
ZGVzIGFyZSBtZXJnZWQuXG4gKiAgLSBUZXh0IG5vZGVzIGNhbm5vdCBiZSBhc3NpZ25lZCBhIFJl
YWN0IHJvb3QgSUQuXG4gKlxuICogVGhpcyBjb21wb25lbnQgaXMgdXNlZCB0byB3cmFwIHN0cmlu
Z3MgYmV0d2VlbiBjb21tZW50IG5vZGVzIHNvIHRoYXQgdGhleVxuICogY2FuIHVuZGVyZ28gdGhl
IHNhbWUgcmVjb25jaWxpYXRpb24gdGhhdCBpcyBhcHBsaWVkIHRvIGVsZW1lbnRzLlxuICpcbiAq
IFRPRE86IEludmVzdGlnYXRlIHJlcHJlc2VudGluZyBSZWFjdCBjb21wb25lbnRzIGluIHRoZSBE
T00gd2l0aCB0ZXh0IG5vZGVzLlxuICpcbiAqIEBjbGFzcyBSZWFjdERPTVRleHRDb21wb25lbnRc
biAqIEBleHRlbmRzIFJlYWN0Q29tcG9uZW50XG4gKiBAaW50ZXJuYWxcbiAqL1xudmFyIFJlYWN0
RE9NVGV4dENvbXBvbmVudCA9IGZ1bmN0aW9uICh0ZXh0KSB7XG4gIC8vIFRPRE86IFRoaXMgaXMg
cmVhbGx5IGEgUmVhY3RUZXh0IChSZWFjdE5vZGUpLCBub3QgYSBSZWFjdEVsZW1lbnRcbiAgdGhp
cy5fY3VycmVudEVsZW1lbnQgPSB0ZXh0O1xuICB0aGlzLl9zdHJpbmdUZXh0ID0gJycgKyB0ZXh0
O1xuICAvLyBSZWFjdERPTUNvbXBvbmVudFRyZWUgdXNlcyB0aGVzZTpcbiAgdGhpcy5faG9zdE5v
ZGUgPSBudWxsO1xuICB0aGlzLl9ob3N0UGFyZW50ID0gbnVsbDtcblxuICAvLyBQcm9wZXJ0aWVz
XG4gIHRoaXMuX2RvbUlEID0gMDtcbiAgdGhpcy5fbW91bnRJbmRleCA9IDA7XG4gIHRoaXMuX2Ns
b3NpbmdDb21tZW50ID0gbnVsbDtcbiAgdGhpcy5fY29tbWVudE5vZGVzID0gbnVsbDtcbn07XG5c
bl9hc3NpZ24oUmVhY3RET01UZXh0Q29tcG9uZW50LnByb3RvdHlwZSwge1xuICAvKipcbiAgICog
Q3JlYXRlcyB0aGUgbWFya3VwIGZvciB0aGlzIHRleHQgbm9kZS4gVGhpcyBub2RlIGlzIG5vdCBp
bnRlbmRlZCB0byBoYXZlXG4gICAqIGFueSBmZWF0dXJlcyBiZXNpZGVzIGNvbnRhaW5pbmcgdGV4
dCBjb250ZW50LlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb258
UmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICogQHJldHVy
biB7c3RyaW5nfSBNYXJrdXAgZm9yIHRoaXMgdGV4dCBub2RlLlxuICAgKiBAaW50ZXJuYWxcbiAg
ICovXG4gIG1vdW50Q29tcG9uZW50OiBmdW5jdGlvbiAodHJhbnNhY3Rpb24sIGhvc3RQYXJlbnQs
IGhvc3RDb250YWluZXJJbmZvLCBjb250ZXh0KSB7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIHZhciBwYXJlbnRJbmZvO1xuICAgICAgaWYg
KGhvc3RQYXJlbnQgIT0gbnVsbCkge1xuICAgICAgICBwYXJlbnRJbmZvID0gaG9zdFBhcmVudC5f
YW5jZXN0b3JJbmZvO1xuICAgICAgfSBlbHNlIGlmIChob3N0Q29udGFpbmVySW5mbyAhPSBudWxs
KSB7XG4gICAgICAgIHBhcmVudEluZm8gPSBob3N0Q29udGFpbmVySW5mby5fYW5jZXN0b3JJbmZv
O1xuICAgICAgfVxuICAgICAgaWYgKHBhcmVudEluZm8pIHtcbiAgICAgICAgLy8gcGFyZW50SW5m
byBzaG91bGQgYWx3YXlzIGJlIHByZXNlbnQgZXhjZXB0IGZvciB0aGUgdG9wLWxldmVsXG4gICAg
ICAgIC8vIGNvbXBvbmVudCB3aGVuIHNlcnZlciByZW5kZXJpbmdcbiAgICAgICAgdmFsaWRhdGVE
T01OZXN0aW5nKG51bGwsIHRoaXMuX3N0cmluZ1RleHQsIHRoaXMsIHBhcmVudEluZm8pO1xuICAg
ICAgfVxuICAgIH1cblxuICAgIHZhciBkb21JRCA9IGhvc3RDb250YWluZXJJbmZvLl9pZENvdW50
ZXIrKztcbiAgICB2YXIgb3BlbmluZ1ZhbHVlID0gJyByZWFjdC10ZXh0OiAnICsgZG9tSUQgKyAn
ICc7XG4gICAgdmFyIGNsb3NpbmdWYWx1ZSA9ICcgL3JlYWN0LXRleHQgJztcbiAgICB0aGlzLl9k
b21JRCA9IGRvbUlEO1xuICAgIHRoaXMuX2hvc3RQYXJlbnQgPSBob3N0UGFyZW50O1xuICAgIGlm
ICh0cmFuc2FjdGlvbi51c2VDcmVhdGVFbGVtZW50KSB7XG4gICAgICB2YXIgb3duZXJEb2N1bWVu
dCA9IGhvc3RDb250YWluZXJJbmZvLl9vd25lckRvY3VtZW50O1xuICAgICAgdmFyIG9wZW5pbmdD
b21tZW50ID0gb3duZXJEb2N1bWVudC5jcmVhdGVDb21tZW50KG9wZW5pbmdWYWx1ZSk7XG4gICAg
ICB2YXIgY2xvc2luZ0NvbW1lbnQgPSBvd25lckRvY3VtZW50LmNyZWF0ZUNvbW1lbnQoY2xvc2lu
Z1ZhbHVlKTtcbiAgICAgIHZhciBsYXp5VHJlZSA9IERPTUxhenlUcmVlKG93bmVyRG9jdW1lbnQu
Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpKTtcbiAgICAgIERPTUxhenlUcmVlLnF1ZXVlQ2hpbGQo
bGF6eVRyZWUsIERPTUxhenlUcmVlKG9wZW5pbmdDb21tZW50KSk7XG4gICAgICBpZiAodGhpcy5f
c3RyaW5nVGV4dCkge1xuICAgICAgICBET01MYXp5VHJlZS5xdWV1ZUNoaWxkKGxhenlUcmVlLCBE
T01MYXp5VHJlZShvd25lckRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRoaXMuX3N0cmluZ1RleHQp
KSk7XG4gICAgICB9XG4gICAgICBET01MYXp5VHJlZS5xdWV1ZUNoaWxkKGxhenlUcmVlLCBET01M
YXp5VHJlZShjbG9zaW5nQ29tbWVudCkpO1xuICAgICAgUmVhY3RET01Db21wb25lbnRUcmVlLnBy
ZWNhY2hlTm9kZSh0aGlzLCBvcGVuaW5nQ29tbWVudCk7XG4gICAgICB0aGlzLl9jbG9zaW5nQ29t
bWVudCA9IGNsb3NpbmdDb21tZW50O1xuICAgICAgcmV0dXJuIGxhenlUcmVlO1xuICAgIH0gZWxz
ZSB7XG4gICAgICB2YXIgZXNjYXBlZFRleHQgPSBlc2NhcGVUZXh0Q29udGVudEZvckJyb3dzZXIo
dGhpcy5fc3RyaW5nVGV4dCk7XG5cbiAgICAgIGlmICh0cmFuc2FjdGlvbi5yZW5kZXJUb1N0YXRp
Y01hcmt1cCkge1xuICAgICAgICAvLyBOb3JtYWxseSB3ZSdkIHdyYXAgdGhpcyBiZXR3ZWVuIGNv
bW1lbnQgbm9kZXMgZm9yIHRoZSByZWFzb25zIHN0YXRlZFxuICAgICAgICAvLyBhYm92ZSwgYnV0
IHNpbmNlIHRoaXMgaXMgYSBzaXR1YXRpb24gd2hlcmUgUmVhY3Qgd29uJ3QgdGFrZSBvdmVyXG4g
ICAgICAgIC8vIChzdGF0aWMgcGFnZXMpLCB3ZSBjYW4gc2ltcGx5IHJldHVybiB0aGUgdGV4dCBh
cyBpdCBpcy5cbiAgICAgICAgcmV0dXJuIGVzY2FwZWRUZXh0O1xuICAgICAgfVxuXG4gICAgICBy
ZXR1cm4gJzwhLS0nICsgb3BlbmluZ1ZhbHVlICsgJy0tPicgKyBlc2NhcGVkVGV4dCArICc8IS0t
JyArIGNsb3NpbmdWYWx1ZSArICctLT4nO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogVXBk
YXRlcyB0aGlzIGNvbXBvbmVudCBieSB1cGRhdGluZyB0aGUgdGV4dCBjb250ZW50LlxuICAgKlxu
ICAgKiBAcGFyYW0ge1JlYWN0VGV4dH0gbmV4dFRleHQgVGhlIG5leHQgdGV4dCBjb250ZW50XG4g
ICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNhY3Rpb25cbiAgICog
QGludGVybmFsXG4gICAqL1xuICByZWNlaXZlQ29tcG9uZW50OiBmdW5jdGlvbiAobmV4dFRleHQs
IHRyYW5zYWN0aW9uKSB7XG4gICAgaWYgKG5leHRUZXh0ICE9PSB0aGlzLl9jdXJyZW50RWxlbWVu
dCkge1xuICAgICAgdGhpcy5fY3VycmVudEVsZW1lbnQgPSBuZXh0VGV4dDtcbiAgICAgIHZhciBu
ZXh0U3RyaW5nVGV4dCA9ICcnICsgbmV4dFRleHQ7XG4gICAgICBpZiAobmV4dFN0cmluZ1RleHQg
IT09IHRoaXMuX3N0cmluZ1RleHQpIHtcbiAgICAgICAgLy8gVE9ETzogU2F2ZSB0aGlzIGFzIHBl
bmRpbmcgcHJvcHMgYW5kIHVzZSBwZXJmb3JtVXBkYXRlSWZOZWNlc3NhcnlcbiAgICAgICAgLy8g
YW5kL29yIHVwZGF0ZUNvbXBvbmVudCB0byBkbyB0aGUgYWN0dWFsIHVwZGF0ZSBmb3IgY29uc2lz
dGVuY3kgd2l0aFxuICAgICAgICAvLyBvdGhlciBjb21wb25lbnQgdHlwZXM/XG4gICAgICAgIHRo
aXMuX3N0cmluZ1RleHQgPSBuZXh0U3RyaW5nVGV4dDtcbiAgICAgICAgdmFyIGNvbW1lbnROb2Rl
cyA9IHRoaXMuZ2V0SG9zdE5vZGUoKTtcbiAgICAgICAgRE9NQ2hpbGRyZW5PcGVyYXRpb25zLnJl
cGxhY2VEZWxpbWl0ZWRUZXh0KGNvbW1lbnROb2Rlc1swXSwgY29tbWVudE5vZGVzWzFdLCBuZXh0
U3RyaW5nVGV4dCk7XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIGdldEhvc3ROb2RlOiBmdW5j
dGlvbiAoKSB7XG4gICAgdmFyIGhvc3ROb2RlID0gdGhpcy5fY29tbWVudE5vZGVzO1xuICAgIGlm
IChob3N0Tm9kZSkge1xuICAgICAgcmV0dXJuIGhvc3ROb2RlO1xuICAgIH1cbiAgICBpZiAoIXRo
aXMuX2Nsb3NpbmdDb21tZW50KSB7XG4gICAgICB2YXIgb3BlbmluZ0NvbW1lbnQgPSBSZWFjdERP
TUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKTtcbiAgICAgIHZhciBub2Rl
ID0gb3BlbmluZ0NvbW1lbnQubmV4dFNpYmxpbmc7XG4gICAgICB3aGlsZSAodHJ1ZSkge1xuICAg
ICAgICAhKG5vZGUgIT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rp
b24nID8gaW52YXJpYW50KGZhbHNlLCAnTWlzc2luZyBjbG9zaW5nIGNvbW1lbnQgZm9yIHRleHQg
Y29tcG9uZW50ICVzJywgdGhpcy5fZG9tSUQpIDogX3Byb2RJbnZhcmlhbnQoJzY3JywgdGhpcy5f
ZG9tSUQpIDogdm9pZCAwO1xuICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0gOCAmJiBub2Rl
Lm5vZGVWYWx1ZSA9PT0gJyAvcmVhY3QtdGV4dCAnKSB7XG4gICAgICAgICAgdGhpcy5fY2xvc2lu
Z0NvbW1lbnQgPSBub2RlO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIG5v
ZGUgPSBub2RlLm5leHRTaWJsaW5nO1xuICAgICAgfVxuICAgIH1cbiAgICBob3N0Tm9kZSA9IFt0
aGlzLl9ob3N0Tm9kZSwgdGhpcy5fY2xvc2luZ0NvbW1lbnRdO1xuICAgIHRoaXMuX2NvbW1lbnRO
b2RlcyA9IGhvc3ROb2RlO1xuICAgIHJldHVybiBob3N0Tm9kZTtcbiAgfSxcblxuICB1bm1vdW50
Q29tcG9uZW50OiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5fY2xvc2luZ0NvbW1lbnQgPSBudWxs
O1xuICAgIHRoaXMuX2NvbW1lbnROb2RlcyA9IG51bGw7XG4gICAgUmVhY3RET01Db21wb25lbnRU
cmVlLnVuY2FjaGVOb2RlKHRoaXMpO1xuICB9XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFj
dERPTVRleHRDb21wb25lbnQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBG
T09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdERPTVRleHRDb21wb25lbnQuanNcbiAq
KiBtb2R1bGUgaWQgPSAxNDZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICog
Q29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNE
LXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3Qg
ZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9m
IHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNh
bWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFy
aWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52YXJpYW50JyksXG4gICAgX2Fzc2lnbiA9IHJl
cXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIExpbmtlZFZhbHVlVXRpbHMgPSByZXF1aXJl
KCcuL0xpbmtlZFZhbHVlVXRpbHMnKTtcbnZhciBSZWFjdERPTUNvbXBvbmVudFRyZWUgPSByZXF1
aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50VHJlZScpO1xudmFyIFJlYWN0VXBkYXRlcyA9IHJlcXVp
cmUoJy4vUmVhY3RVcGRhdGVzJyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xp
Yi9pbnZhcmlhbnQnKTtcbnZhciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycp
O1xuXG52YXIgZGlkV2FyblZhbHVlTGluayA9IGZhbHNlO1xudmFyIGRpZFdhcm5WYWxEZWZhdWx0
VmFsID0gZmFsc2U7XG5cbmZ1bmN0aW9uIGZvcmNlVXBkYXRlSWZNb3VudGVkKCkge1xuICBpZiAo
dGhpcy5fcm9vdE5vZGVJRCkge1xuICAgIC8vIERPTSBjb21wb25lbnQgaXMgc3RpbGwgbW91bnRl
ZDsgdXBkYXRlXG4gICAgUmVhY3RET01UZXh0YXJlYS51cGRhdGVXcmFwcGVyKHRoaXMpO1xuICB9
XG59XG5cbi8qKlxuICogSW1wbGVtZW50cyBhIDx0ZXh0YXJlYT4gaG9zdCBjb21wb25lbnQgdGhh
dCBhbGxvd3Mgc2V0dGluZyBgdmFsdWVgLCBhbmRcbiAqIGBkZWZhdWx0VmFsdWVgLiBUaGlzIGRp
ZmZlcnMgZnJvbSB0aGUgdHJhZGl0aW9uYWwgRE9NIEFQSSBiZWNhdXNlIHZhbHVlIGlzXG4gKiB1
c3VhbGx5IHNldCBhcyBQQ0RBVEEgY2hpbGRyZW4uXG4gKlxuICogSWYgYHZhbHVlYCBpcyBub3Qg
c3VwcGxpZWQgKG9yIG51bGwvdW5kZWZpbmVkKSwgdXNlciBhY3Rpb25zIHRoYXQgYWZmZWN0IHRo
ZVxuICogdmFsdWUgd2lsbCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQuXG4gKlxuICog
SWYgYHZhbHVlYCBpcyBzdXBwbGllZCAoYW5kIG5vdCBudWxsL3VuZGVmaW5lZCksIHRoZSByZW5k
ZXJlZCBlbGVtZW50IHdpbGxcbiAqIG5vdCB0cmlnZ2VyIHVwZGF0ZXMgdG8gdGhlIGVsZW1lbnQu
IEluc3RlYWQsIHRoZSBgdmFsdWVgIHByb3AgbXVzdCBjaGFuZ2UgaW5cbiAqIG9yZGVyIGZvciB0
aGUgcmVuZGVyZWQgZWxlbWVudCB0byBiZSB1cGRhdGVkLlxuICpcbiAqIFRoZSByZW5kZXJlZCBl
bGVtZW50IHdpbGwgYmUgaW5pdGlhbGl6ZWQgd2l0aCBhbiBlbXB0eSB2YWx1ZSwgdGhlIHByb3Bc
biAqIGBkZWZhdWx0VmFsdWVgIGlmIHNwZWNpZmllZCwgb3IgdGhlIGNoaWxkcmVuIGNvbnRlbnQg
KGRlcHJlY2F0ZWQpLlxuICovXG52YXIgUmVhY3RET01UZXh0YXJlYSA9IHtcbiAgZ2V0SG9zdFBy
b3BzOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHtcbiAgICAhKHByb3BzLmRhbmdlcm91c2x5U2V0
SW5uZXJIVE1MID09IG51bGwpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9u
JyA/IGludmFyaWFudChmYWxzZSwgJ2BkYW5nZXJvdXNseVNldElubmVySFRNTGAgZG9lcyBub3Qg
bWFrZSBzZW5zZSBvbiA8dGV4dGFyZWE+LicpIDogX3Byb2RJbnZhcmlhbnQoJzkxJykgOiB2b2lk
IDA7XG5cbiAgICAvLyBBbHdheXMgc2V0IGNoaWxkcmVuIHRvIHRoZSBzYW1lIHRoaW5nLiBJbiBJ
RTksIHRoZSBzZWxlY3Rpb24gcmFuZ2Ugd2lsbFxuICAgIC8vIGdldCByZXNldCBpZiBgdGV4dENv
bnRlbnRgIGlzIG11dGF0ZWQuICBXZSBjb3VsZCBhZGQgYSBjaGVjayBpbiBzZXRUZXh0Q29udGVu
dFxuICAgIC8vIHRvIG9ubHkgc2V0IHRoZSB2YWx1ZSBpZi93aGVuIHRoZSB2YWx1ZSBkaWZmZXJz
IGZyb20gdGhlIG5vZGUgdmFsdWUgKHdoaWNoIHdvdWxkXG4gICAgLy8gY29tcGxldGVseSBzb2x2
ZSB0aGlzIElFOSBidWcpLCBidXQgU2ViYXN0aWFuK0JlbiBzZWVtZWQgdG8gbGlrZSB0aGlzIHNv
bHV0aW9uLlxuICAgIC8vIFRoZSB2YWx1ZSBjYW4gYmUgYSBib29sZWFuIG9yIG9iamVjdCBzbyB0
aGF0J3Mgd2h5IGl0J3MgZm9yY2VkIHRvIGJlIGEgc3RyaW5nLlxuICAgIHZhciBob3N0UHJvcHMg
PSBfYXNzaWduKHt9LCBwcm9wcywge1xuICAgICAgdmFsdWU6IHVuZGVmaW5lZCxcbiAgICAgIGRl
ZmF1bHRWYWx1ZTogdW5kZWZpbmVkLFxuICAgICAgY2hpbGRyZW46ICcnICsgaW5zdC5fd3JhcHBl
clN0YXRlLmluaXRpYWxWYWx1ZSxcbiAgICAgIG9uQ2hhbmdlOiBpbnN0Ll93cmFwcGVyU3RhdGUu
b25DaGFuZ2VcbiAgICB9KTtcblxuICAgIHJldHVybiBob3N0UHJvcHM7XG4gIH0sXG5cbiAgbW91
bnRXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCwgcHJvcHMpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgTGlua2VkVmFsdWVVdGlscy5jaGVj
a1Byb3BUeXBlcygndGV4dGFyZWEnLCBwcm9wcywgaW5zdC5fY3VycmVudEVsZW1lbnQuX293bmVy
KTtcbiAgICAgIGlmIChwcm9wcy52YWx1ZUxpbmsgIT09IHVuZGVmaW5lZCAmJiAhZGlkV2FyblZh
bHVlTGluaykge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24n
ID8gd2FybmluZyhmYWxzZSwgJ2B2YWx1ZUxpbmtgIHByb3Agb24gYHRleHRhcmVhYCBpcyBkZXBy
ZWNhdGVkOyBzZXQgYHZhbHVlYCBhbmQgYG9uQ2hhbmdlYCBpbnN0ZWFkLicpIDogdm9pZCAwO1xu
ICAgICAgICBkaWRXYXJuVmFsdWVMaW5rID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmIChwcm9w
cy52YWx1ZSAhPT0gdW5kZWZpbmVkICYmIHByb3BzLmRlZmF1bHRWYWx1ZSAhPT0gdW5kZWZpbmVk
ICYmICFkaWRXYXJuVmFsRGVmYXVsdFZhbCkge1xuICAgICAgICBwcm9jZXNzLmVudi5OT0RFX0VO
ViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ1RleHRhcmVhIGVsZW1lbnRzIG11
c3QgYmUgZWl0aGVyIGNvbnRyb2xsZWQgb3IgdW5jb250cm9sbGVkICcgKyAnKHNwZWNpZnkgZWl0
aGVyIHRoZSB2YWx1ZSBwcm9wLCBvciB0aGUgZGVmYXVsdFZhbHVlIHByb3AsIGJ1dCBub3QgJyAr
ICdib3RoKS4gRGVjaWRlIGJldHdlZW4gdXNpbmcgYSBjb250cm9sbGVkIG9yIHVuY29udHJvbGxl
ZCB0ZXh0YXJlYSAnICsgJ2FuZCByZW1vdmUgb25lIG9mIHRoZXNlIHByb3BzLiBNb3JlIGluZm86
ICcgKyAnaHR0cHM6Ly9mYi5tZS9yZWFjdC1jb250cm9sbGVkLWNvbXBvbmVudHMnKSA6IHZvaWQg
MDtcbiAgICAgICAgZGlkV2FyblZhbERlZmF1bHRWYWwgPSB0cnVlO1xuICAgICAgfVxuICAgIH1c
blxuICAgIHZhciB2YWx1ZSA9IExpbmtlZFZhbHVlVXRpbHMuZ2V0VmFsdWUocHJvcHMpO1xuICAg
IHZhciBpbml0aWFsVmFsdWUgPSB2YWx1ZTtcblxuICAgIC8vIE9ubHkgYm90aGVyIGZldGNoaW5n
IGRlZmF1bHQgdmFsdWUgaWYgd2UncmUgZ29pbmcgdG8gdXNlIGl0XG4gICAgaWYgKHZhbHVlID09
IG51bGwpIHtcbiAgICAgIHZhciBkZWZhdWx0VmFsdWUgPSBwcm9wcy5kZWZhdWx0VmFsdWU7XG4g
ICAgICAvLyBUT0RPICh5dW5nc3RlcnMpOiBSZW1vdmUgc3VwcG9ydCBmb3IgY2hpbGRyZW4gY29u
dGVudCBpbiA8dGV4dGFyZWE+LlxuICAgICAgdmFyIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW47
XG4gICAgICBpZiAoY2hpbGRyZW4gIT0gbnVsbCkge1xuICAgICAgICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVf
RU5WICE9PSAncHJvZHVjdGlvbicgPyB3YXJuaW5nKGZhbHNlLCAnVXNlIHRoZSBgZGVmYXVsdFZh
bHVlYCBvciBgdmFsdWVgIHByb3BzIGluc3RlYWQgb2Ygc2V0dGluZyAnICsgJ2NoaWxkcmVuIG9u
IDx0ZXh0YXJlYT4uJykgOiB2b2lkIDA7XG4gICAgICAgIH1cbiAgICAgICAgIShkZWZhdWx0VmFs
dWUgPT0gbnVsbCkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52
YXJpYW50KGZhbHNlLCAnSWYgeW91IHN1cHBseSBgZGVmYXVsdFZhbHVlYCBvbiBhIDx0ZXh0YXJl
YT4sIGRvIG5vdCBwYXNzIGNoaWxkcmVuLicpIDogX3Byb2RJbnZhcmlhbnQoJzkyJykgOiB2b2lk
IDA7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xuICAgICAgICAgICEo
Y2hpbGRyZW4ubGVuZ3RoIDw9IDEpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0
aW9uJyA/IGludmFyaWFudChmYWxzZSwgJzx0ZXh0YXJlYT4gY2FuIG9ubHkgaGF2ZSBhdCBtb3N0
IG9uZSBjaGlsZC4nKSA6IF9wcm9kSW52YXJpYW50KCc5MycpIDogdm9pZCAwO1xuICAgICAgICAg
IGNoaWxkcmVuID0gY2hpbGRyZW5bMF07XG4gICAgICAgIH1cblxuICAgICAgICBkZWZhdWx0VmFs
dWUgPSAnJyArIGNoaWxkcmVuO1xuICAgICAgfVxuICAgICAgaWYgKGRlZmF1bHRWYWx1ZSA9PSBu
dWxsKSB7XG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9ICcnO1xuICAgICAgfVxuICAgICAgaW5pdGlh
bFZhbHVlID0gZGVmYXVsdFZhbHVlO1xuICAgIH1cblxuICAgIGluc3QuX3dyYXBwZXJTdGF0ZSA9
IHtcbiAgICAgIGluaXRpYWxWYWx1ZTogJycgKyBpbml0aWFsVmFsdWUsXG4gICAgICBsaXN0ZW5l
cnM6IG51bGwsXG4gICAgICBvbkNoYW5nZTogX2hhbmRsZUNoYW5nZS5iaW5kKGluc3QpXG4gICAg
fTtcbiAgfSxcblxuICB1cGRhdGVXcmFwcGVyOiBmdW5jdGlvbiAoaW5zdCkge1xuICAgIHZhciBw
cm9wcyA9IGluc3QuX2N1cnJlbnRFbGVtZW50LnByb3BzO1xuXG4gICAgdmFyIG5vZGUgPSBSZWFj
dERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KTtcbiAgICB2YXIgdmFs
dWUgPSBMaW5rZWRWYWx1ZVV0aWxzLmdldFZhbHVlKHByb3BzKTtcbiAgICBpZiAodmFsdWUgIT0g
bnVsbCkge1xuICAgICAgLy8gQ2FzdCBgdmFsdWVgIHRvIGEgc3RyaW5nIHRvIGVuc3VyZSB0aGUg
dmFsdWUgaXMgc2V0IGNvcnJlY3RseS4gV2hpbGVcbiAgICAgIC8vIGJyb3dzZXJzIHR5cGljYWxs
eSBkbyB0aGlzIGFzIG5lY2Vzc2FyeSwganNkb20gZG9lc24ndC5cbiAgICAgIHZhciBuZXdWYWx1
ZSA9ICcnICsgdmFsdWU7XG5cbiAgICAgIC8vIFRvIGF2b2lkIHNpZGUgZWZmZWN0cyAoc3VjaCBh
cyBsb3NpbmcgdGV4dCBzZWxlY3Rpb24pLCBvbmx5IHNldCB2YWx1ZSBpZiBjaGFuZ2VkXG4gICAg
ICBpZiAobmV3VmFsdWUgIT09IG5vZGUudmFsdWUpIHtcbiAgICAgICAgbm9kZS52YWx1ZSA9IG5l
d1ZhbHVlO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzLmRlZmF1bHRWYWx1ZSA9PSBudWxsKSB7
XG4gICAgICAgIG5vZGUuZGVmYXVsdFZhbHVlID0gbmV3VmFsdWU7XG4gICAgICB9XG4gICAgfVxu
ICAgIGlmIChwcm9wcy5kZWZhdWx0VmFsdWUgIT0gbnVsbCkge1xuICAgICAgbm9kZS5kZWZhdWx0
VmFsdWUgPSBwcm9wcy5kZWZhdWx0VmFsdWU7XG4gICAgfVxuICB9LFxuXG4gIHBvc3RNb3VudFdy
YXBwZXI6IGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgLy8gVGhpcyBpcyBpbiBwb3N0TW91bnQgYmVj
YXVzZSB3ZSBuZWVkIGFjY2VzcyB0byB0aGUgRE9NIG5vZGUsIHdoaWNoIGlzIG5vdFxuICAgIC8v
IGF2YWlsYWJsZSB1bnRpbCBhZnRlciB0aGUgY29tcG9uZW50IGhhcyBtb3VudGVkLlxuICAgIHZh
ciBub2RlID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCk7
XG4gICAgdmFyIHRleHRDb250ZW50ID0gbm9kZS50ZXh0Q29udGVudDtcblxuICAgIC8vIE9ubHkg
c2V0IG5vZGUudmFsdWUgaWYgdGV4dENvbnRlbnQgaXMgZXF1YWwgdG8gdGhlIGV4cGVjdGVkXG4g
ICAgLy8gaW5pdGlhbCB2YWx1ZS4gSW4gSUUxMC9JRTExIHRoZXJlIGlzIGEgYnVnIHdoZXJlIHRo
ZSBwbGFjZWhvbGRlciBhdHRyaWJ1dGVcbiAgICAvLyB3aWxsIHBvcHVsYXRlIHRleHRDb250ZW50
IGFzIHdlbGwuXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubWljcm9zb2Z0LmNvbS9taWNyb3Nv
ZnQtZWRnZS9wbGF0Zm9ybS9pc3N1ZXMvMTAxNTI1L1xuICAgIGlmICh0ZXh0Q29udGVudCA9PT0g
aW5zdC5fd3JhcHBlclN0YXRlLmluaXRpYWxWYWx1ZSkge1xuICAgICAgbm9kZS52YWx1ZSA9IHRl
eHRDb250ZW50O1xuICAgIH1cbiAgfVxufTtcblxuZnVuY3Rpb24gX2hhbmRsZUNoYW5nZShldmVu
dCkge1xuICB2YXIgcHJvcHMgPSB0aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztcbiAgdmFyIHJl
dHVyblZhbHVlID0gTGlua2VkVmFsdWVVdGlscy5leGVjdXRlT25DaGFuZ2UocHJvcHMsIGV2ZW50
KTtcbiAgUmVhY3RVcGRhdGVzLmFzYXAoZm9yY2VVcGRhdGVJZk1vdW50ZWQsIHRoaXMpO1xuICBy
ZXR1cm4gcmV0dXJuVmFsdWU7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RET01UZXh0YXJl
YTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9y
ZWFjdC1kb20vbGliL1JlYWN0RE9NVGV4dGFyZWEuanNcbiAqKiBtb2R1bGUgaWQgPSAxNDdcbiAq
KiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTUtcHJlc2Vu
dCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBz
b3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQg
aW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291
cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJl
IGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAq
L1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVh
Y3RQcm9kSW52YXJpYW50Jyk7XG5cbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9p
bnZhcmlhbnQnKTtcblxuLyoqXG4gKiBSZXR1cm4gdGhlIGxvd2VzdCBjb21tb24gYW5jZXN0b3Ig
b2YgQSBhbmQgQiwgb3IgbnVsbCBpZiB0aGV5IGFyZSBpblxuICogZGlmZmVyZW50IHRyZWVzLlxu
ICovXG5mdW5jdGlvbiBnZXRMb3dlc3RDb21tb25BbmNlc3RvcihpbnN0QSwgaW5zdEIpIHtcbiAg
ISgnX2hvc3ROb2RlJyBpbiBpbnN0QSkgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nID8gaW52YXJpYW50KGZhbHNlLCAnZ2V0Tm9kZUZyb21JbnN0YW5jZTogSW52YWxpZCBh
cmd1bWVudC4nKSA6IF9wcm9kSW52YXJpYW50KCczMycpIDogdm9pZCAwO1xuICAhKCdfaG9zdE5v
ZGUnIGluIGluc3RCKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBp
bnZhcmlhbnQoZmFsc2UsICdnZXROb2RlRnJvbUluc3RhbmNlOiBJbnZhbGlkIGFyZ3VtZW50Licp
IDogX3Byb2RJbnZhcmlhbnQoJzMzJykgOiB2b2lkIDA7XG5cbiAgdmFyIGRlcHRoQSA9IDA7XG4g
IGZvciAodmFyIHRlbXBBID0gaW5zdEE7IHRlbXBBOyB0ZW1wQSA9IHRlbXBBLl9ob3N0UGFyZW50
KSB7XG4gICAgZGVwdGhBKys7XG4gIH1cbiAgdmFyIGRlcHRoQiA9IDA7XG4gIGZvciAodmFyIHRl
bXBCID0gaW5zdEI7IHRlbXBCOyB0ZW1wQiA9IHRlbXBCLl9ob3N0UGFyZW50KSB7XG4gICAgZGVw
dGhCKys7XG4gIH1cblxuICAvLyBJZiBBIGlzIGRlZXBlciwgY3Jhd2wgdXAuXG4gIHdoaWxlIChk
ZXB0aEEgLSBkZXB0aEIgPiAwKSB7XG4gICAgaW5zdEEgPSBpbnN0QS5faG9zdFBhcmVudDtcbiAg
ICBkZXB0aEEtLTtcbiAgfVxuXG4gIC8vIElmIEIgaXMgZGVlcGVyLCBjcmF3bCB1cC5cbiAgd2hp
bGUgKGRlcHRoQiAtIGRlcHRoQSA+IDApIHtcbiAgICBpbnN0QiA9IGluc3RCLl9ob3N0UGFyZW50
O1xuICAgIGRlcHRoQi0tO1xuICB9XG5cbiAgLy8gV2FsayBpbiBsb2Nrc3RlcCB1bnRpbCB3ZSBm
aW5kIGEgbWF0Y2guXG4gIHZhciBkZXB0aCA9IGRlcHRoQTtcbiAgd2hpbGUgKGRlcHRoLS0pIHtc
biAgICBpZiAoaW5zdEEgPT09IGluc3RCKSB7XG4gICAgICByZXR1cm4gaW5zdEE7XG4gICAgfVxu
ICAgIGluc3RBID0gaW5zdEEuX2hvc3RQYXJlbnQ7XG4gICAgaW5zdEIgPSBpbnN0Qi5faG9zdFBh
cmVudDtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBSZXR1cm4gaWYgQSBpcyBh
biBhbmNlc3RvciBvZiBCLlxuICovXG5mdW5jdGlvbiBpc0FuY2VzdG9yKGluc3RBLCBpbnN0Qikg
e1xuICAhKCdfaG9zdE5vZGUnIGluIGluc3RBKSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdpc0FuY2VzdG9yOiBJbnZhbGlkIGFyZ3Vt
ZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzM1JykgOiB2b2lkIDA7XG4gICEoJ19ob3N0Tm9kZScg
aW4gaW5zdEIpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFy
aWFudChmYWxzZSwgJ2lzQW5jZXN0b3I6IEludmFsaWQgYXJndW1lbnQuJykgOiBfcHJvZEludmFy
aWFudCgnMzUnKSA6IHZvaWQgMDtcblxuICB3aGlsZSAoaW5zdEIpIHtcbiAgICBpZiAoaW5zdEIg
PT09IGluc3RBKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgaW5zdEIgPSBpbnN0
Qi5faG9zdFBhcmVudDtcbiAgfVxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogUmV0dXJu
IHRoZSBwYXJlbnQgaW5zdGFuY2Ugb2YgdGhlIHBhc3NlZC1pbiBpbnN0YW5jZS5cbiAqL1xuZnVu
Y3Rpb24gZ2V0UGFyZW50SW5zdGFuY2UoaW5zdCkge1xuICAhKCdfaG9zdE5vZGUnIGluIGluc3Qp
ID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxz
ZSwgJ2dldFBhcmVudEluc3RhbmNlOiBJbnZhbGlkIGFyZ3VtZW50LicpIDogX3Byb2RJbnZhcmlh
bnQoJzM2JykgOiB2b2lkIDA7XG5cbiAgcmV0dXJuIGluc3QuX2hvc3RQYXJlbnQ7XG59XG5cbi8q
KlxuICogU2ltdWxhdGVzIHRoZSB0cmF2ZXJzYWwgb2YgYSB0d28tcGhhc2UsIGNhcHR1cmUvYnVi
YmxlIGV2ZW50IGRpc3BhdGNoLlxuICovXG5mdW5jdGlvbiB0cmF2ZXJzZVR3b1BoYXNlKGluc3Qs
IGZuLCBhcmcpIHtcbiAgdmFyIHBhdGggPSBbXTtcbiAgd2hpbGUgKGluc3QpIHtcbiAgICBwYXRo
LnB1c2goaW5zdCk7XG4gICAgaW5zdCA9IGluc3QuX2hvc3RQYXJlbnQ7XG4gIH1cbiAgdmFyIGk7
XG4gIGZvciAoaSA9IHBhdGgubGVuZ3RoOyBpLS0gPiAwOykge1xuICAgIGZuKHBhdGhbaV0sICdj
YXB0dXJlZCcsIGFyZyk7XG4gIH1cbiAgZm9yIChpID0gMDsgaSA8IHBhdGgubGVuZ3RoOyBpKysp
IHtcbiAgICBmbihwYXRoW2ldLCAnYnViYmxlZCcsIGFyZyk7XG4gIH1cbn1cblxuLyoqXG4gKiBU
cmF2ZXJzZXMgdGhlIElEIGhpZXJhcmNoeSBhbmQgaW52b2tlcyB0aGUgc3VwcGxpZWQgYGNiYCBv
biBhbnkgSURzIHRoYXRcbiAqIHNob3VsZCB3b3VsZCByZWNlaXZlIGEgYG1vdXNlRW50ZXJgIG9y
IGBtb3VzZUxlYXZlYCBldmVudC5cbiAqXG4gKiBEb2VzIG5vdCBpbnZva2UgdGhlIGNhbGxiYWNr
IG9uIHRoZSBuZWFyZXN0IGNvbW1vbiBhbmNlc3RvciBiZWNhdXNlIG5vdGhpbmdcbiAqIFwiZW50
ZXJlZFwiIG9yIFwibGVmdFwiIHRoYXQgZWxlbWVudC5cbiAqL1xuZnVuY3Rpb24gdHJhdmVyc2VF
bnRlckxlYXZlKGZyb20sIHRvLCBmbiwgYXJnRnJvbSwgYXJnVG8pIHtcbiAgdmFyIGNvbW1vbiA9
IGZyb20gJiYgdG8gPyBnZXRMb3dlc3RDb21tb25BbmNlc3Rvcihmcm9tLCB0bykgOiBudWxsO1xu
ICB2YXIgcGF0aEZyb20gPSBbXTtcbiAgd2hpbGUgKGZyb20gJiYgZnJvbSAhPT0gY29tbW9uKSB7
XG4gICAgcGF0aEZyb20ucHVzaChmcm9tKTtcbiAgICBmcm9tID0gZnJvbS5faG9zdFBhcmVudDtc
biAgfVxuICB2YXIgcGF0aFRvID0gW107XG4gIHdoaWxlICh0byAmJiB0byAhPT0gY29tbW9uKSB7
XG4gICAgcGF0aFRvLnB1c2godG8pO1xuICAgIHRvID0gdG8uX2hvc3RQYXJlbnQ7XG4gIH1cbiAg
dmFyIGk7XG4gIGZvciAoaSA9IDA7IGkgPCBwYXRoRnJvbS5sZW5ndGg7IGkrKykge1xuICAgIGZu
KHBhdGhGcm9tW2ldLCAnYnViYmxlZCcsIGFyZ0Zyb20pO1xuICB9XG4gIGZvciAoaSA9IHBhdGhU
by5sZW5ndGg7IGktLSA+IDA7KSB7XG4gICAgZm4ocGF0aFRvW2ldLCAnY2FwdHVyZWQnLCBhcmdU
byk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSB7XG4gIGlzQW5jZXN0b3I6IGlzQW5jZXN0
b3IsXG4gIGdldExvd2VzdENvbW1vbkFuY2VzdG9yOiBnZXRMb3dlc3RDb21tb25BbmNlc3Rvcixc
biAgZ2V0UGFyZW50SW5zdGFuY2U6IGdldFBhcmVudEluc3RhbmNlLFxuICB0cmF2ZXJzZVR3b1Bo
YXNlOiB0cmF2ZXJzZVR3b1BoYXNlLFxuICB0cmF2ZXJzZUVudGVyTGVhdmU6IHRyYXZlcnNlRW50
ZXJMZWF2ZVxufTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxu
ICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0RE9NVHJlZVRyYXZlcnNhbC5qc1xuICoqIG1vZHVs
ZSBpZCA9IDE0OFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmln
aHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5c
biAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUg
bGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rv
cnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50
IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJl
Y3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9hc3NpZ24gPSByZXF1aXJl
KCdvYmplY3QtYXNzaWduJyk7XG5cbnZhciBSZWFjdFVwZGF0ZXMgPSByZXF1aXJlKCcuL1JlYWN0
VXBkYXRlcycpO1xudmFyIFRyYW5zYWN0aW9uID0gcmVxdWlyZSgnLi9UcmFuc2FjdGlvbicpO1xu
XG52YXIgZW1wdHlGdW5jdGlvbiA9IHJlcXVpcmUoJ2ZianMvbGliL2VtcHR5RnVuY3Rpb24nKTtc
blxudmFyIFJFU0VUX0JBVENIRURfVVBEQVRFUyA9IHtcbiAgaW5pdGlhbGl6ZTogZW1wdHlGdW5j
dGlvbixcbiAgY2xvc2U6IGZ1bmN0aW9uICgpIHtcbiAgICBSZWFjdERlZmF1bHRCYXRjaGluZ1N0
cmF0ZWd5LmlzQmF0Y2hpbmdVcGRhdGVzID0gZmFsc2U7XG4gIH1cbn07XG5cbnZhciBGTFVTSF9C
QVRDSEVEX1VQREFURVMgPSB7XG4gIGluaXRpYWxpemU6IGVtcHR5RnVuY3Rpb24sXG4gIGNsb3Nl
OiBSZWFjdFVwZGF0ZXMuZmx1c2hCYXRjaGVkVXBkYXRlcy5iaW5kKFJlYWN0VXBkYXRlcylcbn07
XG5cbnZhciBUUkFOU0FDVElPTl9XUkFQUEVSUyA9IFtGTFVTSF9CQVRDSEVEX1VQREFURVMsIFJF
U0VUX0JBVENIRURfVVBEQVRFU107XG5cbmZ1bmN0aW9uIFJlYWN0RGVmYXVsdEJhdGNoaW5nU3Ry
YXRlZ3lUcmFuc2FjdGlvbigpIHtcbiAgdGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpO1xu
fVxuXG5fYXNzaWduKFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3lUcmFuc2FjdGlvbi5wcm90
b3R5cGUsIFRyYW5zYWN0aW9uLCB7XG4gIGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6IGZ1bmN0aW9u
ICgpIHtcbiAgICByZXR1cm4gVFJBTlNBQ1RJT05fV1JBUFBFUlM7XG4gIH1cbn0pO1xuXG52YXIg
dHJhbnNhY3Rpb24gPSBuZXcgUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneVRyYW5zYWN0aW9u
KCk7XG5cbnZhciBSZWFjdERlZmF1bHRCYXRjaGluZ1N0cmF0ZWd5ID0ge1xuICBpc0JhdGNoaW5n
VXBkYXRlczogZmFsc2UsXG5cbiAgLyoqXG4gICAqIENhbGwgdGhlIHByb3ZpZGVkIGZ1bmN0aW9u
IGluIGEgY29udGV4dCB3aXRoaW4gd2hpY2ggY2FsbHMgdG8gYHNldFN0YXRlYFxuICAgKiBhbmQg
ZnJpZW5kcyBhcmUgYmF0Y2hlZCBzdWNoIHRoYXQgY29tcG9uZW50cyBhcmVuJ3QgdXBkYXRlZCB1
bm5lY2Vzc2FyaWx5LlxuICAgKi9cbiAgYmF0Y2hlZFVwZGF0ZXM6IGZ1bmN0aW9uIChjYWxsYmFj
aywgYSwgYiwgYywgZCwgZSkge1xuICAgIHZhciBhbHJlYWR5QmF0Y2hpbmdVcGRhdGVzID0gUmVh
Y3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneS5pc0JhdGNoaW5nVXBkYXRlcztcblxuICAgIFJlYWN0
RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kuaXNCYXRjaGluZ1VwZGF0ZXMgPSB0cnVlO1xuXG4gICAg
Ly8gVGhlIGNvZGUgaXMgd3JpdHRlbiB0aGlzIHdheSB0byBhdm9pZCBleHRyYSBhbGxvY2F0aW9u
c1xuICAgIGlmIChhbHJlYWR5QmF0Y2hpbmdVcGRhdGVzKSB7XG4gICAgICByZXR1cm4gY2FsbGJh
Y2soYSwgYiwgYywgZCwgZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0cmFuc2FjdGlv
bi5wZXJmb3JtKGNhbGxiYWNrLCBudWxsLCBhLCBiLCBjLCBkLCBlKTtcbiAgICB9XG4gIH1cbn07
XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3REZWZhdWx0QmF0Y2hpbmdTdHJhdGVneTtcblxuXG4v
KioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20v
bGliL1JlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kuanNcbiAqKiBtb2R1bGUgaWQgPSAxNDlc
biAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpc
biAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBBUklBRE9NUHJvcGVydHlDb25maWcgPSByZXF1
aXJlKCcuL0FSSUFET01Qcm9wZXJ0eUNvbmZpZycpO1xudmFyIEJlZm9yZUlucHV0RXZlbnRQbHVn
aW4gPSByZXF1aXJlKCcuL0JlZm9yZUlucHV0RXZlbnRQbHVnaW4nKTtcbnZhciBDaGFuZ2VFdmVu
dFBsdWdpbiA9IHJlcXVpcmUoJy4vQ2hhbmdlRXZlbnRQbHVnaW4nKTtcbnZhciBEZWZhdWx0RXZl
bnRQbHVnaW5PcmRlciA9IHJlcXVpcmUoJy4vRGVmYXVsdEV2ZW50UGx1Z2luT3JkZXInKTtcbnZh
ciBFbnRlckxlYXZlRXZlbnRQbHVnaW4gPSByZXF1aXJlKCcuL0VudGVyTGVhdmVFdmVudFBsdWdp
bicpO1xudmFyIEhUTUxET01Qcm9wZXJ0eUNvbmZpZyA9IHJlcXVpcmUoJy4vSFRNTERPTVByb3Bl
cnR5Q29uZmlnJyk7XG52YXIgUmVhY3RDb21wb25lbnRCcm93c2VyRW52aXJvbm1lbnQgPSByZXF1
aXJlKCcuL1JlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50Jyk7XG52YXIgUmVhY3RET01D
b21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0RE9NQ29tcG9uZW50Jyk7XG52YXIgUmVhY3RET01D
b21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVudFRyZWUnKTtcbnZhciBS
ZWFjdERPTUVtcHR5Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9SZWFjdERPTUVtcHR5Q29tcG9uZW50
Jyk7XG52YXIgUmVhY3RET01UcmVlVHJhdmVyc2FsID0gcmVxdWlyZSgnLi9SZWFjdERPTVRyZWVU
cmF2ZXJzYWwnKTtcbnZhciBSZWFjdERPTVRleHRDb21wb25lbnQgPSByZXF1aXJlKCcuL1JlYWN0
RE9NVGV4dENvbXBvbmVudCcpO1xudmFyIFJlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3kgPSBy
ZXF1aXJlKCcuL1JlYWN0RGVmYXVsdEJhdGNoaW5nU3RyYXRlZ3knKTtcbnZhciBSZWFjdEV2ZW50
TGlzdGVuZXIgPSByZXF1aXJlKCcuL1JlYWN0RXZlbnRMaXN0ZW5lcicpO1xudmFyIFJlYWN0SW5q
ZWN0aW9uID0gcmVxdWlyZSgnLi9SZWFjdEluamVjdGlvbicpO1xudmFyIFJlYWN0UmVjb25jaWxl
VHJhbnNhY3Rpb24gPSByZXF1aXJlKCcuL1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24nKTtcbnZh
ciBTVkdET01Qcm9wZXJ0eUNvbmZpZyA9IHJlcXVpcmUoJy4vU1ZHRE9NUHJvcGVydHlDb25maWcn
KTtcbnZhciBTZWxlY3RFdmVudFBsdWdpbiA9IHJlcXVpcmUoJy4vU2VsZWN0RXZlbnRQbHVnaW4n
KTtcbnZhciBTaW1wbGVFdmVudFBsdWdpbiA9IHJlcXVpcmUoJy4vU2ltcGxlRXZlbnRQbHVnaW4n
KTtcblxudmFyIGFscmVhZHlJbmplY3RlZCA9IGZhbHNlO1xuXG5mdW5jdGlvbiBpbmplY3QoKSB7
XG4gIGlmIChhbHJlYWR5SW5qZWN0ZWQpIHtcbiAgICAvLyBUT0RPOiBUaGlzIGlzIGN1cnJlbnRs
eSB0cnVlIGJlY2F1c2UgdGhlc2UgaW5qZWN0aW9ucyBhcmUgc2hhcmVkIGJldHdlZW5cbiAgICAv
LyB0aGUgY2xpZW50IGFuZCB0aGUgc2VydmVyIHBhY2thZ2UuIFRoZXkgc2hvdWxkIGJlIGJ1aWx0
IGluZGVwZW5kZW50bHlcbiAgICAvLyBhbmQgbm90IHNoYXJlIGFueSBpbmplY3Rpb24gc3RhdGUu
IFRoZW4gdGhpcyBwcm9ibGVtIHdpbGwgYmUgc29sdmVkLlxuICAgIHJldHVybjtcbiAgfVxuICBh
bHJlYWR5SW5qZWN0ZWQgPSB0cnVlO1xuXG4gIFJlYWN0SW5qZWN0aW9uLkV2ZW50RW1pdHRlci5p
bmplY3RSZWFjdEV2ZW50TGlzdGVuZXIoUmVhY3RFdmVudExpc3RlbmVyKTtcblxuICAvKipcbiAg
ICogSW5qZWN0IG1vZHVsZXMgZm9yIHJlc29sdmluZyBET00gaGllcmFyY2h5IGFuZCBwbHVnaW4g
b3JkZXJpbmcuXG4gICAqL1xuICBSZWFjdEluamVjdGlvbi5FdmVudFBsdWdpbkh1Yi5pbmplY3RF
dmVudFBsdWdpbk9yZGVyKERlZmF1bHRFdmVudFBsdWdpbk9yZGVyKTtcbiAgUmVhY3RJbmplY3Rp
b24uRXZlbnRQbHVnaW5VdGlscy5pbmplY3RDb21wb25lbnRUcmVlKFJlYWN0RE9NQ29tcG9uZW50
VHJlZSk7XG4gIFJlYWN0SW5qZWN0aW9uLkV2ZW50UGx1Z2luVXRpbHMuaW5qZWN0VHJlZVRyYXZl
cnNhbChSZWFjdERPTVRyZWVUcmF2ZXJzYWwpO1xuXG4gIC8qKlxuICAgKiBTb21lIGltcG9ydGFu
dCBldmVudCBwbHVnaW5zIGluY2x1ZGVkIGJ5IGRlZmF1bHQgKHdpdGhvdXQgaGF2aW5nIHRvIHJl
cXVpcmVcbiAgICogdGhlbSkuXG4gICAqL1xuICBSZWFjdEluamVjdGlvbi5FdmVudFBsdWdpbkh1
Yi5pbmplY3RFdmVudFBsdWdpbnNCeU5hbWUoe1xuICAgIFNpbXBsZUV2ZW50UGx1Z2luOiBTaW1w
bGVFdmVudFBsdWdpbixcbiAgICBFbnRlckxlYXZlRXZlbnRQbHVnaW46IEVudGVyTGVhdmVFdmVu
dFBsdWdpbixcbiAgICBDaGFuZ2VFdmVudFBsdWdpbjogQ2hhbmdlRXZlbnRQbHVnaW4sXG4gICAg
U2VsZWN0RXZlbnRQbHVnaW46IFNlbGVjdEV2ZW50UGx1Z2luLFxuICAgIEJlZm9yZUlucHV0RXZl
bnRQbHVnaW46IEJlZm9yZUlucHV0RXZlbnRQbHVnaW5cbiAgfSk7XG5cbiAgUmVhY3RJbmplY3Rp
b24uSG9zdENvbXBvbmVudC5pbmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3MoUmVhY3RET01Db21w
b25lbnQpO1xuXG4gIFJlYWN0SW5qZWN0aW9uLkhvc3RDb21wb25lbnQuaW5qZWN0VGV4dENvbXBv
bmVudENsYXNzKFJlYWN0RE9NVGV4dENvbXBvbmVudCk7XG5cbiAgUmVhY3RJbmplY3Rpb24uRE9N
UHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcoQVJJQURPTVByb3BlcnR5Q29uZmlnKTtc
biAgUmVhY3RJbmplY3Rpb24uRE9NUHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcoSFRN
TERPTVByb3BlcnR5Q29uZmlnKTtcbiAgUmVhY3RJbmplY3Rpb24uRE9NUHJvcGVydHkuaW5qZWN0
RE9NUHJvcGVydHlDb25maWcoU1ZHRE9NUHJvcGVydHlDb25maWcpO1xuXG4gIFJlYWN0SW5qZWN0
aW9uLkVtcHR5Q29tcG9uZW50LmluamVjdEVtcHR5Q29tcG9uZW50RmFjdG9yeShmdW5jdGlvbiAo
aW5zdGFudGlhdGUpIHtcbiAgICByZXR1cm4gbmV3IFJlYWN0RE9NRW1wdHlDb21wb25lbnQoaW5z
dGFudGlhdGUpO1xuICB9KTtcblxuICBSZWFjdEluamVjdGlvbi5VcGRhdGVzLmluamVjdFJlY29u
Y2lsZVRyYW5zYWN0aW9uKFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24pO1xuICBSZWFjdEluamVj
dGlvbi5VcGRhdGVzLmluamVjdEJhdGNoaW5nU3RyYXRlZ3koUmVhY3REZWZhdWx0QmF0Y2hpbmdT
dHJhdGVneSk7XG5cbiAgUmVhY3RJbmplY3Rpb24uQ29tcG9uZW50LmluamVjdEVudmlyb25tZW50
KFJlYWN0Q29tcG9uZW50QnJvd3NlckVudmlyb25tZW50KTtcbn1cblxubW9kdWxlLmV4cG9ydHMg
PSB7XG4gIGluamVjdDogaW5qZWN0XG59O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdF
QlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3REZWZhdWx0SW5qZWN0aW9u
LmpzXG4gKiogbW9kdWxlIGlkID0gMTUwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIv
KipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgRXZl
bnRQbHVnaW5IdWIgPSByZXF1aXJlKCcuL0V2ZW50UGx1Z2luSHViJyk7XG5cbmZ1bmN0aW9uIHJ1
bkV2ZW50UXVldWVJbkJhdGNoKGV2ZW50cykge1xuICBFdmVudFBsdWdpbkh1Yi5lbnF1ZXVlRXZl
bnRzKGV2ZW50cyk7XG4gIEV2ZW50UGx1Z2luSHViLnByb2Nlc3NFdmVudFF1ZXVlKGZhbHNlKTtc
bn1cblxudmFyIFJlYWN0RXZlbnRFbWl0dGVyTWl4aW4gPSB7XG4gIC8qKlxuICAgKiBTdHJlYW1z
IGEgZmlyZWQgdG9wLWxldmVsIGV2ZW50IHRvIGBFdmVudFBsdWdpbkh1YmAgd2hlcmUgcGx1Z2lu
cyBoYXZlIHRoZVxuICAgKiBvcHBvcnR1bml0eSB0byBjcmVhdGUgYFJlYWN0RXZlbnRgcyB0byBi
ZSBkaXNwYXRjaGVkLlxuICAgKi9cbiAgaGFuZGxlVG9wTGV2ZWw6IGZ1bmN0aW9uICh0b3BMZXZl
bFR5cGUsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICAg
IHZhciBldmVudHMgPSBFdmVudFBsdWdpbkh1Yi5leHRyYWN0RXZlbnRzKHRvcExldmVsVHlwZSwg
dGFyZ2V0SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbiAgICBydW5FdmVu
dFF1ZXVlSW5CYXRjaChldmVudHMpO1xuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0
RXZlbnRFbWl0dGVyTWl4aW47XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBG
T09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdEV2ZW50RW1pdHRlck1peGluLmpzXG4g
KiogbW9kdWxlIGlkID0gMTUyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX2Fzc2lnbiA9
IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIEV2ZW50TGlzdGVuZXIgPSByZXF1aXJl
KCdmYmpzL2xpYi9FdmVudExpc3RlbmVyJyk7XG52YXIgRXhlY3V0aW9uRW52aXJvbm1lbnQgPSBy
ZXF1aXJlKCdmYmpzL2xpYi9FeGVjdXRpb25FbnZpcm9ubWVudCcpO1xudmFyIFBvb2xlZENsYXNz
ID0gcmVxdWlyZSgnLi9Qb29sZWRDbGFzcycpO1xudmFyIFJlYWN0RE9NQ29tcG9uZW50VHJlZSA9
IHJlcXVpcmUoJy4vUmVhY3RET01Db21wb25lbnRUcmVlJyk7XG52YXIgUmVhY3RVcGRhdGVzID0g
cmVxdWlyZSgnLi9SZWFjdFVwZGF0ZXMnKTtcblxudmFyIGdldEV2ZW50VGFyZ2V0ID0gcmVxdWly
ZSgnLi9nZXRFdmVudFRhcmdldCcpO1xudmFyIGdldFVuYm91bmRlZFNjcm9sbFBvc2l0aW9uID0g
cmVxdWlyZSgnZmJqcy9saWIvZ2V0VW5ib3VuZGVkU2Nyb2xsUG9zaXRpb24nKTtcblxuLyoqXG4g
KiBGaW5kIHRoZSBkZWVwZXN0IFJlYWN0IGNvbXBvbmVudCBjb21wbGV0ZWx5IGNvbnRhaW5pbmcg
dGhlIHJvb3Qgb2YgdGhlXG4gKiBwYXNzZWQtaW4gaW5zdGFuY2UgKGZvciB1c2Ugd2hlbiBlbnRp
cmUgUmVhY3QgdHJlZXMgYXJlIG5lc3RlZCB3aXRoaW4gZWFjaFxuICogb3RoZXIpLiBJZiBSZWFj
dCB0cmVlcyBhcmUgbm90IG5lc3RlZCwgcmV0dXJucyBudWxsLlxuICovXG5mdW5jdGlvbiBmaW5k
UGFyZW50KGluc3QpIHtcbiAgLy8gVE9ETzogSXQgbWF5IGJlIGEgZ29vZCBpZGVhIHRvIGNhY2hl
IHRoaXMgdG8gcHJldmVudCB1bm5lY2Vzc2FyeSBET01cbiAgLy8gdHJhdmVyc2FsLCBidXQgY2Fj
aGluZyBpcyBkaWZmaWN1bHQgdG8gZG8gY29ycmVjdGx5IHdpdGhvdXQgdXNpbmcgYVxuICAvLyBt
dXRhdGlvbiBvYnNlcnZlciB0byBsaXN0ZW4gZm9yIGFsbCBET00gY2hhbmdlcy5cbiAgd2hpbGUg
KGluc3QuX2hvc3RQYXJlbnQpIHtcbiAgICBpbnN0ID0gaW5zdC5faG9zdFBhcmVudDtcbiAgfVxu
ICB2YXIgcm9vdE5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5j
ZShpbnN0KTtcbiAgdmFyIGNvbnRhaW5lciA9IHJvb3ROb2RlLnBhcmVudE5vZGU7XG4gIHJldHVy
biBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUoY29udGFp
bmVyKTtcbn1cblxuLy8gVXNlZCB0byBzdG9yZSBhbmNlc3RvciBoaWVyYXJjaHkgaW4gdG9wIGxl
dmVsIGNhbGxiYWNrXG5mdW5jdGlvbiBUb3BMZXZlbENhbGxiYWNrQm9va0tlZXBpbmcodG9wTGV2
ZWxUeXBlLCBuYXRpdmVFdmVudCkge1xuICB0aGlzLnRvcExldmVsVHlwZSA9IHRvcExldmVsVHlw
ZTtcbiAgdGhpcy5uYXRpdmVFdmVudCA9IG5hdGl2ZUV2ZW50O1xuICB0aGlzLmFuY2VzdG9ycyA9
IFtdO1xufVxuX2Fzc2lnbihUb3BMZXZlbENhbGxiYWNrQm9va0tlZXBpbmcucHJvdG90eXBlLCB7
XG4gIGRlc3RydWN0b3I6IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnRvcExldmVsVHlwZSA9IG51
bGw7XG4gICAgdGhpcy5uYXRpdmVFdmVudCA9IG51bGw7XG4gICAgdGhpcy5hbmNlc3RvcnMubGVu
Z3RoID0gMDtcbiAgfVxufSk7XG5Qb29sZWRDbGFzcy5hZGRQb29saW5nVG8oVG9wTGV2ZWxDYWxs
YmFja0Jvb2tLZWVwaW5nLCBQb29sZWRDbGFzcy50d29Bcmd1bWVudFBvb2xlcik7XG5cbmZ1bmN0
aW9uIGhhbmRsZVRvcExldmVsSW1wbChib29rS2VlcGluZykge1xuICB2YXIgbmF0aXZlRXZlbnRU
YXJnZXQgPSBnZXRFdmVudFRhcmdldChib29rS2VlcGluZy5uYXRpdmVFdmVudCk7XG4gIHZhciB0
YXJnZXRJbnN0ID0gUmVhY3RET01Db21wb25lbnRUcmVlLmdldENsb3Nlc3RJbnN0YW5jZUZyb21O
b2RlKG5hdGl2ZUV2ZW50VGFyZ2V0KTtcblxuICAvLyBMb29wIHRocm91Z2ggdGhlIGhpZXJhcmNo
eSwgaW4gY2FzZSB0aGVyZSdzIGFueSBuZXN0ZWQgY29tcG9uZW50cy5cbiAgLy8gSXQncyBpbXBv
cnRhbnQgdGhhdCB3ZSBidWlsZCB0aGUgYXJyYXkgb2YgYW5jZXN0b3JzIGJlZm9yZSBjYWxsaW5n
IGFueVxuICAvLyBldmVudCBoYW5kbGVycywgYmVjYXVzZSBldmVudCBoYW5kbGVycyBjYW4gbW9k
aWZ5IHRoZSBET00sIGxlYWRpbmcgdG9cbiAgLy8gaW5jb25zaXN0ZW5jaWVzIHdpdGggUmVhY3RN
b3VudCdzIG5vZGUgY2FjaGUuIFNlZSAjMTEwNS5cbiAgdmFyIGFuY2VzdG9yID0gdGFyZ2V0SW5z
dDtcbiAgZG8ge1xuICAgIGJvb2tLZWVwaW5nLmFuY2VzdG9ycy5wdXNoKGFuY2VzdG9yKTtcbiAg
ICBhbmNlc3RvciA9IGFuY2VzdG9yICYmIGZpbmRQYXJlbnQoYW5jZXN0b3IpO1xuICB9IHdoaWxl
IChhbmNlc3Rvcik7XG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBib29rS2VlcGluZy5hbmNlc3Rv
cnMubGVuZ3RoOyBpKyspIHtcbiAgICB0YXJnZXRJbnN0ID0gYm9va0tlZXBpbmcuYW5jZXN0b3Jz
W2ldO1xuICAgIFJlYWN0RXZlbnRMaXN0ZW5lci5faGFuZGxlVG9wTGV2ZWwoYm9va0tlZXBpbmcu
dG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBib29rS2VlcGluZy5uYXRpdmVFdmVudCwgZ2V0RXZl
bnRUYXJnZXQoYm9va0tlZXBpbmcubmF0aXZlRXZlbnQpKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBz
Y3JvbGxWYWx1ZU1vbml0b3IoY2IpIHtcbiAgdmFyIHNjcm9sbFBvc2l0aW9uID0gZ2V0VW5ib3Vu
ZGVkU2Nyb2xsUG9zaXRpb24od2luZG93KTtcbiAgY2Ioc2Nyb2xsUG9zaXRpb24pO1xufVxuXG52
YXIgUmVhY3RFdmVudExpc3RlbmVyID0ge1xuICBfZW5hYmxlZDogdHJ1ZSxcbiAgX2hhbmRsZVRv
cExldmVsOiBudWxsLFxuXG4gIFdJTkRPV19IQU5ETEU6IEV4ZWN1dGlvbkVudmlyb25tZW50LmNh
blVzZURPTSA/IHdpbmRvdyA6IG51bGwsXG5cbiAgc2V0SGFuZGxlVG9wTGV2ZWw6IGZ1bmN0aW9u
IChoYW5kbGVUb3BMZXZlbCkge1xuICAgIFJlYWN0RXZlbnRMaXN0ZW5lci5faGFuZGxlVG9wTGV2
ZWwgPSBoYW5kbGVUb3BMZXZlbDtcbiAgfSxcblxuICBzZXRFbmFibGVkOiBmdW5jdGlvbiAoZW5h
YmxlZCkge1xuICAgIFJlYWN0RXZlbnRMaXN0ZW5lci5fZW5hYmxlZCA9ICEhZW5hYmxlZDtcbiAg
fSxcblxuICBpc0VuYWJsZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gUmVhY3RFdmVudExp
c3RlbmVyLl9lbmFibGVkO1xuICB9LFxuXG4gIC8qKlxuICAgKiBUcmFwcyB0b3AtbGV2ZWwgZXZl
bnRzIGJ5IHVzaW5nIGV2ZW50IGJ1YmJsaW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30g
dG9wTGV2ZWxUeXBlIFJlY29yZCBmcm9tIGBFdmVudENvbnN0YW50c2AuXG4gICAqIEBwYXJhbSB7
c3RyaW5nfSBoYW5kbGVyQmFzZU5hbWUgRXZlbnQgbmFtZSAoZS5nLiBcImNsaWNrXCIpLlxuICAg
KiBAcGFyYW0ge29iamVjdH0gZWxlbWVudCBFbGVtZW50IG9uIHdoaWNoIHRvIGF0dGFjaCBsaXN0
ZW5lci5cbiAgICogQHJldHVybiB7P29iamVjdH0gQW4gb2JqZWN0IHdpdGggYSByZW1vdmUgZnVu
Y3Rpb24gd2hpY2ggd2lsbCBmb3JjZWZ1bGx5XG4gICAqICAgICAgICAgICAgICAgICAgcmVtb3Zl
IHRoZSBsaXN0ZW5lci5cbiAgICogQGludGVybmFsXG4gICAqL1xuICB0cmFwQnViYmxlZEV2ZW50
OiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCBoYW5kbGVyQmFzZU5hbWUsIGVsZW1lbnQpIHtcbiAg
ICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4g
RXZlbnRMaXN0ZW5lci5saXN0ZW4oZWxlbWVudCwgaGFuZGxlckJhc2VOYW1lLCBSZWFjdEV2ZW50
TGlzdGVuZXIuZGlzcGF0Y2hFdmVudC5iaW5kKG51bGwsIHRvcExldmVsVHlwZSkpO1xuICB9LFxu
XG4gIC8qKlxuICAgKiBUcmFwcyBhIHRvcC1sZXZlbCBldmVudCBieSB1c2luZyBldmVudCBjYXB0
dXJpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0b3BMZXZlbFR5cGUgUmVjb3JkIGZy
b20gYEV2ZW50Q29uc3RhbnRzYC5cbiAgICogQHBhcmFtIHtzdHJpbmd9IGhhbmRsZXJCYXNlTmFt
ZSBFdmVudCBuYW1lIChlLmcuIFwiY2xpY2tcIikuXG4gICAqIEBwYXJhbSB7b2JqZWN0fSBlbGVt
ZW50IEVsZW1lbnQgb24gd2hpY2ggdG8gYXR0YWNoIGxpc3RlbmVyLlxuICAgKiBAcmV0dXJuIHs/
b2JqZWN0fSBBbiBvYmplY3Qgd2l0aCBhIHJlbW92ZSBmdW5jdGlvbiB3aGljaCB3aWxsIGZvcmNl
ZnVsbHlcbiAgICogICAgICAgICAgICAgICAgICByZW1vdmUgdGhlIGxpc3RlbmVyLlxuICAgKiBA
aW50ZXJuYWxcbiAgICovXG4gIHRyYXBDYXB0dXJlZEV2ZW50OiBmdW5jdGlvbiAodG9wTGV2ZWxU
eXBlLCBoYW5kbGVyQmFzZU5hbWUsIGVsZW1lbnQpIHtcbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAg
ICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gRXZlbnRMaXN0ZW5lci5jYXB0dXJl
KGVsZW1lbnQsIGhhbmRsZXJCYXNlTmFtZSwgUmVhY3RFdmVudExpc3RlbmVyLmRpc3BhdGNoRXZl
bnQuYmluZChudWxsLCB0b3BMZXZlbFR5cGUpKTtcbiAgfSxcblxuICBtb25pdG9yU2Nyb2xsVmFs
dWU6IGZ1bmN0aW9uIChyZWZyZXNoKSB7XG4gICAgdmFyIGNhbGxiYWNrID0gc2Nyb2xsVmFsdWVN
b25pdG9yLmJpbmQobnVsbCwgcmVmcmVzaCk7XG4gICAgRXZlbnRMaXN0ZW5lci5saXN0ZW4od2lu
ZG93LCAnc2Nyb2xsJywgY2FsbGJhY2spO1xuICB9LFxuXG4gIGRpc3BhdGNoRXZlbnQ6IGZ1bmN0
aW9uICh0b3BMZXZlbFR5cGUsIG5hdGl2ZUV2ZW50KSB7XG4gICAgaWYgKCFSZWFjdEV2ZW50TGlz
dGVuZXIuX2VuYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgYm9va0tl
ZXBpbmcgPSBUb3BMZXZlbENhbGxiYWNrQm9va0tlZXBpbmcuZ2V0UG9vbGVkKHRvcExldmVsVHlw
ZSwgbmF0aXZlRXZlbnQpO1xuICAgIHRyeSB7XG4gICAgICAvLyBFdmVudCBxdWV1ZSBiZWluZyBw
cm9jZXNzZWQgaW4gdGhlIHNhbWUgY3ljbGUgYWxsb3dzXG4gICAgICAvLyBgcHJldmVudERlZmF1
bHRgLlxuICAgICAgUmVhY3RVcGRhdGVzLmJhdGNoZWRVcGRhdGVzKGhhbmRsZVRvcExldmVsSW1w
bCwgYm9va0tlZXBpbmcpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBUb3BMZXZlbENhbGxiYWNr
Qm9va0tlZXBpbmcucmVsZWFzZShib29rS2VlcGluZyk7XG4gICAgfVxuICB9XG59O1xuXG5tb2R1
bGUuZXhwb3J0cyA9IFJlYWN0RXZlbnRMaXN0ZW5lcjtcblxuXG4vKioqKioqKioqKioqKioqKipc
biAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0RXZlbnRMaXN0
ZW5lci5qc1xuICoqIG1vZHVsZSBpZCA9IDE1M1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiov
IiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxs
IHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVu
ZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBp
biB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBn
cmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmls
ZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFy
IERPTVByb3BlcnR5ID0gcmVxdWlyZSgnLi9ET01Qcm9wZXJ0eScpO1xudmFyIEV2ZW50UGx1Z2lu
SHViID0gcmVxdWlyZSgnLi9FdmVudFBsdWdpbkh1YicpO1xudmFyIEV2ZW50UGx1Z2luVXRpbHMg
PSByZXF1aXJlKCcuL0V2ZW50UGx1Z2luVXRpbHMnKTtcbnZhciBSZWFjdENvbXBvbmVudEVudmly
b25tZW50ID0gcmVxdWlyZSgnLi9SZWFjdENvbXBvbmVudEVudmlyb25tZW50Jyk7XG52YXIgUmVh
Y3RFbXB0eUNvbXBvbmVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbXB0eUNvbXBvbmVudCcpO1xudmFy
IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlciA9IHJlcXVpcmUoJy4vUmVhY3RCcm93c2VyRXZlbnRF
bWl0dGVyJyk7XG52YXIgUmVhY3RIb3N0Q29tcG9uZW50ID0gcmVxdWlyZSgnLi9SZWFjdEhvc3RD
b21wb25lbnQnKTtcbnZhciBSZWFjdFVwZGF0ZXMgPSByZXF1aXJlKCcuL1JlYWN0VXBkYXRlcycp
O1xuXG52YXIgUmVhY3RJbmplY3Rpb24gPSB7XG4gIENvbXBvbmVudDogUmVhY3RDb21wb25lbnRF
bnZpcm9ubWVudC5pbmplY3Rpb24sXG4gIERPTVByb3BlcnR5OiBET01Qcm9wZXJ0eS5pbmplY3Rp
b24sXG4gIEVtcHR5Q29tcG9uZW50OiBSZWFjdEVtcHR5Q29tcG9uZW50LmluamVjdGlvbixcbiAg
RXZlbnRQbHVnaW5IdWI6IEV2ZW50UGx1Z2luSHViLmluamVjdGlvbixcbiAgRXZlbnRQbHVnaW5V
dGlsczogRXZlbnRQbHVnaW5VdGlscy5pbmplY3Rpb24sXG4gIEV2ZW50RW1pdHRlcjogUmVhY3RC
cm93c2VyRXZlbnRFbWl0dGVyLmluamVjdGlvbixcbiAgSG9zdENvbXBvbmVudDogUmVhY3RIb3N0
Q29tcG9uZW50LmluamVjdGlvbixcbiAgVXBkYXRlczogUmVhY3RVcGRhdGVzLmluamVjdGlvblxu
fTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdEluamVjdGlvbjtcblxuXG4vKioqKioqKioqKioq
KioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0SW5q
ZWN0aW9uLmpzXG4gKiogbW9kdWxlIGlkID0gMTU0XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAq
Ki8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52
YXIgYWRsZXIzMiA9IHJlcXVpcmUoJy4vYWRsZXIzMicpO1xuXG52YXIgVEFHX0VORCA9IC9cXC8/
Pi87XG52YXIgQ09NTUVOVF9TVEFSVCA9IC9ePFxcIVxcLVxcLS87XG5cbnZhciBSZWFjdE1hcmt1
cENoZWNrc3VtID0ge1xuICBDSEVDS1NVTV9BVFRSX05BTUU6ICdkYXRhLXJlYWN0LWNoZWNrc3Vt
JyxcblxuICAvKipcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1hcmt1cCBNYXJrdXAgc3RyaW5nXG4g
ICAqIEByZXR1cm4ge3N0cmluZ30gTWFya3VwIHN0cmluZyB3aXRoIGNoZWNrc3VtIGF0dHJpYnV0
ZSBhdHRhY2hlZFxuICAgKi9cbiAgYWRkQ2hlY2tzdW1Ub01hcmt1cDogZnVuY3Rpb24gKG1hcmt1
cCkge1xuICAgIHZhciBjaGVja3N1bSA9IGFkbGVyMzIobWFya3VwKTtcblxuICAgIC8vIEFkZCBj
aGVja3N1bSAoaGFuZGxlIGJvdGggcGFyZW50IHRhZ3MsIGNvbW1lbnRzIGFuZCBzZWxmLWNsb3Np
bmcgdGFncylcbiAgICBpZiAoQ09NTUVOVF9TVEFSVC50ZXN0KG1hcmt1cCkpIHtcbiAgICAgIHJl
dHVybiBtYXJrdXA7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBtYXJrdXAucmVwbGFjZShU
QUdfRU5ELCAnICcgKyBSZWFjdE1hcmt1cENoZWNrc3VtLkNIRUNLU1VNX0FUVFJfTkFNRSArICc9
XCInICsgY2hlY2tzdW0gKyAnXCIkJicpO1xuICAgIH1cbiAgfSxcblxuICAvKipcbiAgICogQHBh
cmFtIHtzdHJpbmd9IG1hcmt1cCB0byB1c2VcbiAgICogQHBhcmFtIHtET01FbGVtZW50fSBlbGVt
ZW50IHJvb3QgUmVhY3QgZWxlbWVudFxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gd2hldGhlciBv
ciBub3QgdGhlIG1hcmt1cCBpcyB0aGUgc2FtZVxuICAgKi9cbiAgY2FuUmV1c2VNYXJrdXA6IGZ1
bmN0aW9uIChtYXJrdXAsIGVsZW1lbnQpIHtcbiAgICB2YXIgZXhpc3RpbmdDaGVja3N1bSA9IGVs
ZW1lbnQuZ2V0QXR0cmlidXRlKFJlYWN0TWFya3VwQ2hlY2tzdW0uQ0hFQ0tTVU1fQVRUUl9OQU1F
KTtcbiAgICBleGlzdGluZ0NoZWNrc3VtID0gZXhpc3RpbmdDaGVja3N1bSAmJiBwYXJzZUludChl
eGlzdGluZ0NoZWNrc3VtLCAxMCk7XG4gICAgdmFyIG1hcmt1cENoZWNrc3VtID0gYWRsZXIzMiht
YXJrdXApO1xuICAgIHJldHVybiBtYXJrdXBDaGVja3N1bSA9PT0gZXhpc3RpbmdDaGVja3N1bTtc
biAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdE1hcmt1cENoZWNrc3VtO1xuXG5cbi8q
KioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9s
aWIvUmVhY3RNYXJrdXBDaGVja3N1bS5qc1xuICoqIG1vZHVsZSBpZCA9IDE1NVxuICoqIG1vZHVs
ZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNl
Ym9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBj
b2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVc
biAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJl
ZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQg
aW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1
c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJ
bnZhcmlhbnQnKTtcblxudmFyIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQgPSByZXF1aXJlKCcu
L1JlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQnKTtcbnZhciBSZWFjdEluc3RhbmNlTWFwID0gcmVx
dWlyZSgnLi9SZWFjdEluc3RhbmNlTWFwJyk7XG52YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSBy
ZXF1aXJlKCcuL1JlYWN0SW5zdHJ1bWVudGF0aW9uJyk7XG5cbnZhciBSZWFjdEN1cnJlbnRPd25l
ciA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9SZWFjdEN1cnJlbnRPd25lcicpO1xudmFyIFJlYWN0UmVj
b25jaWxlciA9IHJlcXVpcmUoJy4vUmVhY3RSZWNvbmNpbGVyJyk7XG52YXIgUmVhY3RDaGlsZFJl
Y29uY2lsZXIgPSByZXF1aXJlKCcuL1JlYWN0Q2hpbGRSZWNvbmNpbGVyJyk7XG5cbnZhciBlbXB0
eUZ1bmN0aW9uID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlGdW5jdGlvbicpO1xudmFyIGZsYXR0
ZW5DaGlsZHJlbiA9IHJlcXVpcmUoJy4vZmxhdHRlbkNoaWxkcmVuJyk7XG52YXIgaW52YXJpYW50
ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICogTWFrZSBhbiB1cGRh
dGUgZm9yIG1hcmt1cCB0byBiZSByZW5kZXJlZCBhbmQgaW5zZXJ0ZWQgYXQgYSBzdXBwbGllZCBp
bmRleC5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIE1hcmt1cCB0aGF0IHJlbmRlcnMg
aW50byBhbiBlbGVtZW50LlxuICogQHBhcmFtIHtudW1iZXJ9IHRvSW5kZXggRGVzdGluYXRpb24g
aW5kZXguXG4gKiBAcHJpdmF0ZVxuICovXG5mdW5jdGlvbiBtYWtlSW5zZXJ0TWFya3VwKG1hcmt1
cCwgYWZ0ZXJOb2RlLCB0b0luZGV4KSB7XG4gIC8vIE5PVEU6IE51bGwgdmFsdWVzIHJlZHVjZSBo
aWRkZW4gY2xhc3Nlcy5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnSU5TRVJUX01BUktVUCcsXG4g
ICAgY29udGVudDogbWFya3VwLFxuICAgIGZyb21JbmRleDogbnVsbCxcbiAgICBmcm9tTm9kZTog
bnVsbCxcbiAgICB0b0luZGV4OiB0b0luZGV4LFxuICAgIGFmdGVyTm9kZTogYWZ0ZXJOb2RlXG4g
IH07XG59XG5cbi8qKlxuICogTWFrZSBhbiB1cGRhdGUgZm9yIG1vdmluZyBhbiBleGlzdGluZyBl
bGVtZW50IHRvIGFub3RoZXIgaW5kZXguXG4gKlxuICogQHBhcmFtIHtudW1iZXJ9IGZyb21JbmRl
eCBTb3VyY2UgaW5kZXggb2YgdGhlIGV4aXN0aW5nIGVsZW1lbnQuXG4gKiBAcGFyYW0ge251bWJl
cn0gdG9JbmRleCBEZXN0aW5hdGlvbiBpbmRleCBvZiB0aGUgZWxlbWVudC5cbiAqIEBwcml2YXRl
XG4gKi9cbmZ1bmN0aW9uIG1ha2VNb3ZlKGNoaWxkLCBhZnRlck5vZGUsIHRvSW5kZXgpIHtcbiAg
Ly8gTk9URTogTnVsbCB2YWx1ZXMgcmVkdWNlIGhpZGRlbiBjbGFzc2VzLlxuICByZXR1cm4ge1xu
ICAgIHR5cGU6ICdNT1ZFX0VYSVNUSU5HJyxcbiAgICBjb250ZW50OiBudWxsLFxuICAgIGZyb21J
bmRleDogY2hpbGQuX21vdW50SW5kZXgsXG4gICAgZnJvbU5vZGU6IFJlYWN0UmVjb25jaWxlci5n
ZXRIb3N0Tm9kZShjaGlsZCksXG4gICAgdG9JbmRleDogdG9JbmRleCxcbiAgICBhZnRlck5vZGU6
IGFmdGVyTm9kZVxuICB9O1xufVxuXG4vKipcbiAqIE1ha2UgYW4gdXBkYXRlIGZvciByZW1vdmlu
ZyBhbiBlbGVtZW50IGF0IGFuIGluZGV4LlxuICpcbiAqIEBwYXJhbSB7bnVtYmVyfSBmcm9tSW5k
ZXggSW5kZXggb2YgdGhlIGVsZW1lbnQgdG8gcmVtb3ZlLlxuICogQHByaXZhdGVcbiAqL1xuZnVu
Y3Rpb24gbWFrZVJlbW92ZShjaGlsZCwgbm9kZSkge1xuICAvLyBOT1RFOiBOdWxsIHZhbHVlcyBy
ZWR1Y2UgaGlkZGVuIGNsYXNzZXMuXG4gIHJldHVybiB7XG4gICAgdHlwZTogJ1JFTU9WRV9OT0RF
JyxcbiAgICBjb250ZW50OiBudWxsLFxuICAgIGZyb21JbmRleDogY2hpbGQuX21vdW50SW5kZXgs
XG4gICAgZnJvbU5vZGU6IG5vZGUsXG4gICAgdG9JbmRleDogbnVsbCxcbiAgICBhZnRlck5vZGU6
IG51bGxcbiAgfTtcbn1cblxuLyoqXG4gKiBNYWtlIGFuIHVwZGF0ZSBmb3Igc2V0dGluZyB0aGUg
bWFya3VwIG9mIGEgbm9kZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gbWFya3VwIE1hcmt1cCB0
aGF0IHJlbmRlcnMgaW50byBhbiBlbGVtZW50LlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24g
bWFrZVNldE1hcmt1cChtYXJrdXApIHtcbiAgLy8gTk9URTogTnVsbCB2YWx1ZXMgcmVkdWNlIGhp
ZGRlbiBjbGFzc2VzLlxuICByZXR1cm4ge1xuICAgIHR5cGU6ICdTRVRfTUFSS1VQJyxcbiAgICBj
b250ZW50OiBtYXJrdXAsXG4gICAgZnJvbUluZGV4OiBudWxsLFxuICAgIGZyb21Ob2RlOiBudWxs
LFxuICAgIHRvSW5kZXg6IG51bGwsXG4gICAgYWZ0ZXJOb2RlOiBudWxsXG4gIH07XG59XG5cbi8q
KlxuICogTWFrZSBhbiB1cGRhdGUgZm9yIHNldHRpbmcgdGhlIHRleHQgY29udGVudC5cbiAqXG4g
KiBAcGFyYW0ge3N0cmluZ30gdGV4dENvbnRlbnQgVGV4dCBjb250ZW50IHRvIHNldC5cbiAqIEBw
cml2YXRlXG4gKi9cbmZ1bmN0aW9uIG1ha2VUZXh0Q29udGVudCh0ZXh0Q29udGVudCkge1xuICAv
LyBOT1RFOiBOdWxsIHZhbHVlcyByZWR1Y2UgaGlkZGVuIGNsYXNzZXMuXG4gIHJldHVybiB7XG4g
ICAgdHlwZTogJ1RFWFRfQ09OVEVOVCcsXG4gICAgY29udGVudDogdGV4dENvbnRlbnQsXG4gICAg
ZnJvbUluZGV4OiBudWxsLFxuICAgIGZyb21Ob2RlOiBudWxsLFxuICAgIHRvSW5kZXg6IG51bGws
XG4gICAgYWZ0ZXJOb2RlOiBudWxsXG4gIH07XG59XG5cbi8qKlxuICogUHVzaCBhbiB1cGRhdGUs
IGlmIGFueSwgb250byB0aGUgcXVldWUuIENyZWF0ZXMgYSBuZXcgcXVldWUgaWYgbm9uZSBpc1xu
ICogcGFzc2VkIGFuZCBhbHdheXMgcmV0dXJucyB0aGUgcXVldWUuIE11dGF0aXZlLlxuICovXG5m
dW5jdGlvbiBlbnF1ZXVlKHF1ZXVlLCB1cGRhdGUpIHtcbiAgaWYgKHVwZGF0ZSkge1xuICAgIHF1
ZXVlID0gcXVldWUgfHwgW107XG4gICAgcXVldWUucHVzaCh1cGRhdGUpO1xuICB9XG4gIHJldHVy
biBxdWV1ZTtcbn1cblxuLyoqXG4gKiBQcm9jZXNzZXMgYW55IGVucXVldWVkIHVwZGF0ZXMuXG4g
KlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gcHJvY2Vzc1F1ZXVlKGluc3QsIHVwZGF0ZVF1
ZXVlKSB7XG4gIFJlYWN0Q29tcG9uZW50RW52aXJvbm1lbnQucHJvY2Vzc0NoaWxkcmVuVXBkYXRl
cyhpbnN0LCB1cGRhdGVRdWV1ZSk7XG59XG5cbnZhciBzZXRDaGlsZHJlbkZvckluc3RydW1lbnRh
dGlvbiA9IGVtcHR5RnVuY3Rpb247XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJykge1xuICB2YXIgZ2V0RGVidWdJRCA9IGZ1bmN0aW9uIChpbnN0KSB7XG4gICAgaWYg
KCFpbnN0Ll9kZWJ1Z0lEKSB7XG4gICAgICAvLyBDaGVjayBmb3IgQVJULWxpa2UgaW5zdGFuY2Vz
LiBUT0RPOiBUaGlzIGlzIHNpbGx5L2dyb3NzLlxuICAgICAgdmFyIGludGVybmFsO1xuICAgICAg
aWYgKGludGVybmFsID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQoaW5zdCkpIHtcbiAgICAgICAgaW5z
dCA9IGludGVybmFsO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaW5zdC5fZGVidWdJRDtc
biAgfTtcbiAgc2V0Q2hpbGRyZW5Gb3JJbnN0cnVtZW50YXRpb24gPSBmdW5jdGlvbiAoY2hpbGRy
ZW4pIHtcbiAgICB2YXIgZGVidWdJRCA9IGdldERlYnVnSUQodGhpcyk7XG4gICAgLy8gVE9ETzog
UmVhY3QgTmF0aXZlIGVtcHR5IGNvbXBvbmVudHMgYXJlIGFsc28gbXVsdGljaGlsZC5cbiAgICAv
LyBUaGlzIG1lYW5zIHRoZXkgc3RpbGwgZ2V0IGludG8gdGhpcyBtZXRob2QgYnV0IGRvbid0IGhh
dmUgX2RlYnVnSUQuXG4gICAgaWYgKGRlYnVnSUQgIT09IDApIHtcbiAgICAgIFJlYWN0SW5zdHJ1
bWVudGF0aW9uLmRlYnVnVG9vbC5vblNldENoaWxkcmVuKGRlYnVnSUQsIGNoaWxkcmVuID8gT2Jq
ZWN0LmtleXMoY2hpbGRyZW4pLm1hcChmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgIHJldHVybiBj
aGlsZHJlbltrZXldLl9kZWJ1Z0lEO1xuICAgICAgfSkgOiBbXSk7XG4gICAgfVxuICB9O1xufVxu
XG4vKipcbiAqIFJlYWN0TXVsdGlDaGlsZCBhcmUgY2FwYWJsZSBvZiByZWNvbmNpbGluZyBtdWx0
aXBsZSBjaGlsZHJlbi5cbiAqXG4gKiBAY2xhc3MgUmVhY3RNdWx0aUNoaWxkXG4gKiBAaW50ZXJu
YWxcbiAqL1xudmFyIFJlYWN0TXVsdGlDaGlsZCA9IHtcbiAgLyoqXG4gICAqIFByb3ZpZGVzIGNv
bW1vbiBmdW5jdGlvbmFsaXR5IGZvciBjb21wb25lbnRzIHRoYXQgbXVzdCByZWNvbmNpbGUgbXVs
dGlwbGVcbiAgICogY2hpbGRyZW4uIFRoaXMgaXMgdXNlZCBieSBgUmVhY3RET01Db21wb25lbnRg
IHRvIG1vdW50LCB1cGRhdGUsIGFuZFxuICAgKiB1bm1vdW50IGNoaWxkIGNvbXBvbmVudHMuXG4g
ICAqXG4gICAqIEBsZW5kcyB7UmVhY3RNdWx0aUNoaWxkLnByb3RvdHlwZX1cbiAgICovXG4gIE1p
eGluOiB7XG4gICAgX3JlY29uY2lsZXJJbnN0YW50aWF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAobmVz
dGVkQ2hpbGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgICBpZiAocHJvY2Vzcy5l
bnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICB2YXIgc2VsZkRlYnVnSUQg
PSBnZXREZWJ1Z0lEKHRoaXMpO1xuICAgICAgICBpZiAodGhpcy5fY3VycmVudEVsZW1lbnQpIHtc
biAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgUmVhY3RDdXJyZW50T3duZXIuY3VycmVudCA9
IHRoaXMuX2N1cnJlbnRFbGVtZW50Ll9vd25lcjtcbiAgICAgICAgICAgIHJldHVybiBSZWFjdENo
aWxkUmVjb25jaWxlci5pbnN0YW50aWF0ZUNoaWxkcmVuKG5lc3RlZENoaWxkcmVuLCB0cmFuc2Fj
dGlvbiwgY29udGV4dCwgc2VsZkRlYnVnSUQpO1xuICAgICAgICAgIH0gZmluYWxseSB7XG4gICAg
ICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICB9XG4g
ICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiBSZWFjdENoaWxkUmVjb25jaWxlci5pbnN0
YW50aWF0ZUNoaWxkcmVuKG5lc3RlZENoaWxkcmVuLCB0cmFuc2FjdGlvbiwgY29udGV4dCk7XG4g
ICAgfSxcblxuICAgIF9yZWNvbmNpbGVyVXBkYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChwcmV2Q2hp
bGRyZW4sIG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCBtb3VudEltYWdlcywgcmVtb3ZlZE5v
ZGVzLCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgICAgdmFyIG5leHRDaGlsZHJlbjtcbiAg
ICAgIHZhciBzZWxmRGVidWdJRCA9IDA7XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgICBzZWxmRGVidWdJRCA9IGdldERlYnVnSUQodGhp
cyk7XG4gICAgICAgIGlmICh0aGlzLl9jdXJyZW50RWxlbWVudCkge1xuICAgICAgICAgIHRyeSB7
XG4gICAgICAgICAgICBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50ID0gdGhpcy5fY3VycmVudEVs
ZW1lbnQuX293bmVyO1xuICAgICAgICAgICAgbmV4dENoaWxkcmVuID0gZmxhdHRlbkNoaWxkcmVu
KG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzLCBzZWxmRGVidWdJRCk7XG4gICAgICAgICAgfSBm
aW5hbGx5IHtcbiAgICAgICAgICAgIFJlYWN0Q3VycmVudE93bmVyLmN1cnJlbnQgPSBudWxsO1xu
ICAgICAgICAgIH1cbiAgICAgICAgICBSZWFjdENoaWxkUmVjb25jaWxlci51cGRhdGVDaGlsZHJl
bihwcmV2Q2hpbGRyZW4sIG5leHRDaGlsZHJlbiwgbW91bnRJbWFnZXMsIHJlbW92ZWROb2Rlcywg
dHJhbnNhY3Rpb24sIHRoaXMsIHRoaXMuX2hvc3RDb250YWluZXJJbmZvLCBjb250ZXh0LCBzZWxm
RGVidWdJRCk7XG4gICAgICAgICAgcmV0dXJuIG5leHRDaGlsZHJlbjtcbiAgICAgICAgfVxuICAg
ICAgfVxuICAgICAgbmV4dENoaWxkcmVuID0gZmxhdHRlbkNoaWxkcmVuKG5leHROZXN0ZWRDaGls
ZHJlbkVsZW1lbnRzLCBzZWxmRGVidWdJRCk7XG4gICAgICBSZWFjdENoaWxkUmVjb25jaWxlci51
cGRhdGVDaGlsZHJlbihwcmV2Q2hpbGRyZW4sIG5leHRDaGlsZHJlbiwgbW91bnRJbWFnZXMsIHJl
bW92ZWROb2RlcywgdHJhbnNhY3Rpb24sIHRoaXMsIHRoaXMuX2hvc3RDb250YWluZXJJbmZvLCBj
b250ZXh0LCBzZWxmRGVidWdJRCk7XG4gICAgICByZXR1cm4gbmV4dENoaWxkcmVuO1xuICAgIH0s
XG5cbiAgICAvKipcbiAgICAgKiBHZW5lcmF0ZXMgYSBcIm1vdW50IGltYWdlXCIgZm9yIGVhY2gg
b2YgdGhlIHN1cHBsaWVkIGNoaWxkcmVuLiBJbiB0aGUgY2FzZVxuICAgICAqIG9mIGBSZWFjdERP
TUNvbXBvbmVudGAsIGEgbW91bnQgaW1hZ2UgaXMgYSBzdHJpbmcgb2YgbWFya3VwLlxuICAgICAq
XG4gICAgICogQHBhcmFtIHs/b2JqZWN0fSBuZXN0ZWRDaGlsZHJlbiBOZXN0ZWQgY2hpbGQgbWFw
cy5cbiAgICAgKiBAcmV0dXJuIHthcnJheX0gQW4gYXJyYXkgb2YgbW91bnRlZCByZXByZXNlbnRh
dGlvbnMuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgbW91bnRDaGlsZHJlbjogZnVu
Y3Rpb24gKG5lc3RlZENoaWxkcmVuLCB0cmFuc2FjdGlvbiwgY29udGV4dCkge1xuICAgICAgdmFy
IGNoaWxkcmVuID0gdGhpcy5fcmVjb25jaWxlckluc3RhbnRpYXRlQ2hpbGRyZW4obmVzdGVkQ2hp
bGRyZW4sIHRyYW5zYWN0aW9uLCBjb250ZXh0KTtcbiAgICAgIHRoaXMuX3JlbmRlcmVkQ2hpbGRy
ZW4gPSBjaGlsZHJlbjtcblxuICAgICAgdmFyIG1vdW50SW1hZ2VzID0gW107XG4gICAgICB2YXIg
aW5kZXggPSAwO1xuICAgICAgZm9yICh2YXIgbmFtZSBpbiBjaGlsZHJlbikge1xuICAgICAgICBp
ZiAoY2hpbGRyZW4uaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgICB2YXIgY2hpbGQg
PSBjaGlsZHJlbltuYW1lXTtcbiAgICAgICAgICB2YXIgc2VsZkRlYnVnSUQgPSAwO1xuICAgICAg
ICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAg
ICAgICBzZWxmRGVidWdJRCA9IGdldERlYnVnSUQodGhpcyk7XG4gICAgICAgICAgfVxuICAgICAg
ICAgIHZhciBtb3VudEltYWdlID0gUmVhY3RSZWNvbmNpbGVyLm1vdW50Q29tcG9uZW50KGNoaWxk
LCB0cmFuc2FjdGlvbiwgdGhpcywgdGhpcy5faG9zdENvbnRhaW5lckluZm8sIGNvbnRleHQsIHNl
bGZEZWJ1Z0lEKTtcbiAgICAgICAgICBjaGlsZC5fbW91bnRJbmRleCA9IGluZGV4Kys7XG4gICAg
ICAgICAgbW91bnRJbWFnZXMucHVzaChtb3VudEltYWdlKTtcbiAgICAgICAgfVxuICAgICAgfVxu
XG4gICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAg
ICAgICBzZXRDaGlsZHJlbkZvckluc3RydW1lbnRhdGlvbi5jYWxsKHRoaXMsIGNoaWxkcmVuKTtc
biAgICAgIH1cblxuICAgICAgcmV0dXJuIG1vdW50SW1hZ2VzO1xuICAgIH0sXG5cbiAgICAvKipc
biAgICAgKiBSZXBsYWNlcyBhbnkgcmVuZGVyZWQgY2hpbGRyZW4gd2l0aCBhIHRleHQgY29udGVu
dCBzdHJpbmcuXG4gICAgICpcbiAgICAgKiBAcGFyYW0ge3N0cmluZ30gbmV4dENvbnRlbnQgU3Ry
aW5nIG9mIGNvbnRlbnQuXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgdXBkYXRlVGV4
dENvbnRlbnQ6IGZ1bmN0aW9uIChuZXh0Q29udGVudCkge1xuICAgICAgdmFyIHByZXZDaGlsZHJl
biA9IHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47XG4gICAgICAvLyBSZW1vdmUgYW55IHJlbmRlcmVk
IGNoaWxkcmVuLlxuICAgICAgUmVhY3RDaGlsZFJlY29uY2lsZXIudW5tb3VudENoaWxkcmVuKHBy
ZXZDaGlsZHJlbiwgZmFsc2UpO1xuICAgICAgZm9yICh2YXIgbmFtZSBpbiBwcmV2Q2hpbGRyZW4p
IHtcbiAgICAgICAgaWYgKHByZXZDaGlsZHJlbi5oYXNPd25Qcm9wZXJ0eShuYW1lKSkge1xuICAg
ICAgICAgICFmYWxzZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyBp
bnZhcmlhbnQoZmFsc2UsICd1cGRhdGVUZXh0Q29udGVudCBjYWxsZWQgb24gbm9uLWVtcHR5IGNv
bXBvbmVudC4nKSA6IF9wcm9kSW52YXJpYW50KCcxMTgnKSA6IHZvaWQgMDtcbiAgICAgICAgfVxu
ICAgICAgfVxuICAgICAgLy8gU2V0IG5ldyB0ZXh0IGNvbnRlbnQuXG4gICAgICB2YXIgdXBkYXRl
cyA9IFttYWtlVGV4dENvbnRlbnQobmV4dENvbnRlbnQpXTtcbiAgICAgIHByb2Nlc3NRdWV1ZSh0
aGlzLCB1cGRhdGVzKTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmVwbGFjZXMgYW55IHJl
bmRlcmVkIGNoaWxkcmVuIHdpdGggYSBtYXJrdXAgc3RyaW5nLlxuICAgICAqXG4gICAgICogQHBh
cmFtIHtzdHJpbmd9IG5leHRNYXJrdXAgU3RyaW5nIG9mIG1hcmt1cC5cbiAgICAgKiBAaW50ZXJu
YWxcbiAgICAgKi9cbiAgICB1cGRhdGVNYXJrdXA6IGZ1bmN0aW9uIChuZXh0TWFya3VwKSB7XG4g
ICAgICB2YXIgcHJldkNoaWxkcmVuID0gdGhpcy5fcmVuZGVyZWRDaGlsZHJlbjtcbiAgICAgIC8v
IFJlbW92ZSBhbnkgcmVuZGVyZWQgY2hpbGRyZW4uXG4gICAgICBSZWFjdENoaWxkUmVjb25jaWxl
ci51bm1vdW50Q2hpbGRyZW4ocHJldkNoaWxkcmVuLCBmYWxzZSk7XG4gICAgICBmb3IgKHZhciBu
YW1lIGluIHByZXZDaGlsZHJlbikge1xuICAgICAgICBpZiAocHJldkNoaWxkcmVuLmhhc093blBy
b3BlcnR5KG5hbWUpKSB7XG4gICAgICAgICAgIWZhbHNlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYg
IT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChmYWxzZSwgJ3VwZGF0ZVRleHRDb250ZW50IGNh
bGxlZCBvbiBub24tZW1wdHkgY29tcG9uZW50LicpIDogX3Byb2RJbnZhcmlhbnQoJzExOCcpIDog
dm9pZCAwO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICB2YXIgdXBkYXRlcyA9IFttYWtlU2V0
TWFya3VwKG5leHRNYXJrdXApXTtcbiAgICAgIHByb2Nlc3NRdWV1ZSh0aGlzLCB1cGRhdGVzKTtc
biAgICB9LFxuXG4gICAgLyoqXG4gICAgICogVXBkYXRlcyB0aGUgcmVuZGVyZWQgY2hpbGRyZW4g
d2l0aCBuZXcgY2hpbGRyZW4uXG4gICAgICpcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHRO
ZXN0ZWRDaGlsZHJlbkVsZW1lbnRzIE5lc3RlZCBjaGlsZCBlbGVtZW50IG1hcHMuXG4gICAgICog
QHBhcmFtIHtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgICAqIEBp
bnRlcm5hbFxuICAgICAqL1xuICAgIHVwZGF0ZUNoaWxkcmVuOiBmdW5jdGlvbiAobmV4dE5lc3Rl
ZENoaWxkcmVuRWxlbWVudHMsIHRyYW5zYWN0aW9uLCBjb250ZXh0KSB7XG4gICAgICAvLyBIb29r
IHVzZWQgYnkgUmVhY3QgQVJUXG4gICAgICB0aGlzLl91cGRhdGVDaGlsZHJlbihuZXh0TmVzdGVk
Q2hpbGRyZW5FbGVtZW50cywgdHJhbnNhY3Rpb24sIGNvbnRleHQpO1xuICAgIH0sXG5cbiAgICAv
KipcbiAgICAgKiBAcGFyYW0gez9vYmplY3R9IG5leHROZXN0ZWRDaGlsZHJlbkVsZW1lbnRzIE5l
c3RlZCBjaGlsZCBlbGVtZW50IG1hcHMuXG4gICAgICogQHBhcmFtIHtSZWFjdFJlY29uY2lsZVRy
YW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICAgICAqIEBmaW5hbFxuICAgICAqIEBwcm90ZWN0ZWRc
biAgICAgKi9cbiAgICBfdXBkYXRlQ2hpbGRyZW46IGZ1bmN0aW9uIChuZXh0TmVzdGVkQ2hpbGRy
ZW5FbGVtZW50cywgdHJhbnNhY3Rpb24sIGNvbnRleHQpIHtcbiAgICAgIHZhciBwcmV2Q2hpbGRy
ZW4gPSB0aGlzLl9yZW5kZXJlZENoaWxkcmVuO1xuICAgICAgdmFyIHJlbW92ZWROb2RlcyA9IHt9
O1xuICAgICAgdmFyIG1vdW50SW1hZ2VzID0gW107XG4gICAgICB2YXIgbmV4dENoaWxkcmVuID0g
dGhpcy5fcmVjb25jaWxlclVwZGF0ZUNoaWxkcmVuKHByZXZDaGlsZHJlbiwgbmV4dE5lc3RlZENo
aWxkcmVuRWxlbWVudHMsIG1vdW50SW1hZ2VzLCByZW1vdmVkTm9kZXMsIHRyYW5zYWN0aW9uLCBj
b250ZXh0KTtcbiAgICAgIGlmICghbmV4dENoaWxkcmVuICYmICFwcmV2Q2hpbGRyZW4pIHtcbiAg
ICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgdmFyIHVwZGF0ZXMgPSBudWxsO1xuICAgICAg
dmFyIG5hbWU7XG4gICAgICAvLyBgbmV4dEluZGV4YCB3aWxsIGluY3JlbWVudCBmb3IgZWFjaCBj
aGlsZCBpbiBgbmV4dENoaWxkcmVuYCwgYnV0XG4gICAgICAvLyBgbGFzdEluZGV4YCB3aWxsIGJl
IHRoZSBsYXN0IGluZGV4IHZpc2l0ZWQgaW4gYHByZXZDaGlsZHJlbmAuXG4gICAgICB2YXIgbmV4
dEluZGV4ID0gMDtcbiAgICAgIHZhciBsYXN0SW5kZXggPSAwO1xuICAgICAgLy8gYG5leHRNb3Vu
dEluZGV4YCB3aWxsIGluY3JlbWVudCBmb3IgZWFjaCBuZXdseSBtb3VudGVkIGNoaWxkLlxuICAg
ICAgdmFyIG5leHRNb3VudEluZGV4ID0gMDtcbiAgICAgIHZhciBsYXN0UGxhY2VkTm9kZSA9IG51
bGw7XG4gICAgICBmb3IgKG5hbWUgaW4gbmV4dENoaWxkcmVuKSB7XG4gICAgICAgIGlmICghbmV4
dENoaWxkcmVuLmhhc093blByb3BlcnR5KG5hbWUpKSB7XG4gICAgICAgICAgY29udGludWU7XG4g
ICAgICAgIH1cbiAgICAgICAgdmFyIHByZXZDaGlsZCA9IHByZXZDaGlsZHJlbiAmJiBwcmV2Q2hp
bGRyZW5bbmFtZV07XG4gICAgICAgIHZhciBuZXh0Q2hpbGQgPSBuZXh0Q2hpbGRyZW5bbmFtZV07
XG4gICAgICAgIGlmIChwcmV2Q2hpbGQgPT09IG5leHRDaGlsZCkge1xuICAgICAgICAgIHVwZGF0
ZXMgPSBlbnF1ZXVlKHVwZGF0ZXMsIHRoaXMubW92ZUNoaWxkKHByZXZDaGlsZCwgbGFzdFBsYWNl
ZE5vZGUsIG5leHRJbmRleCwgbGFzdEluZGV4KSk7XG4gICAgICAgICAgbGFzdEluZGV4ID0gTWF0
aC5tYXgocHJldkNoaWxkLl9tb3VudEluZGV4LCBsYXN0SW5kZXgpO1xuICAgICAgICAgIHByZXZD
aGlsZC5fbW91bnRJbmRleCA9IG5leHRJbmRleDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAg
ICBpZiAocHJldkNoaWxkKSB7XG4gICAgICAgICAgICAvLyBVcGRhdGUgYGxhc3RJbmRleGAgYmVm
b3JlIGBfbW91bnRJbmRleGAgZ2V0cyB1bnNldCBieSB1bm1vdW50aW5nLlxuICAgICAgICAgICAg
bGFzdEluZGV4ID0gTWF0aC5tYXgocHJldkNoaWxkLl9tb3VudEluZGV4LCBsYXN0SW5kZXgpO1xu
ICAgICAgICAgICAgLy8gVGhlIGByZW1vdmVkTm9kZXNgIGxvb3AgYmVsb3cgd2lsbCBhY3R1YWxs
eSByZW1vdmUgdGhlIGNoaWxkLlxuICAgICAgICAgIH1cbiAgICAgICAgICAvLyBUaGUgY2hpbGQg
bXVzdCBiZSBpbnN0YW50aWF0ZWQgYmVmb3JlIGl0J3MgbW91bnRlZC5cbiAgICAgICAgICB1cGRh
dGVzID0gZW5xdWV1ZSh1cGRhdGVzLCB0aGlzLl9tb3VudENoaWxkQXRJbmRleChuZXh0Q2hpbGQs
IG1vdW50SW1hZ2VzW25leHRNb3VudEluZGV4XSwgbGFzdFBsYWNlZE5vZGUsIG5leHRJbmRleCwg
dHJhbnNhY3Rpb24sIGNvbnRleHQpKTtcbiAgICAgICAgICBuZXh0TW91bnRJbmRleCsrO1xuICAg
ICAgICB9XG4gICAgICAgIG5leHRJbmRleCsrO1xuICAgICAgICBsYXN0UGxhY2VkTm9kZSA9IFJl
YWN0UmVjb25jaWxlci5nZXRIb3N0Tm9kZShuZXh0Q2hpbGQpO1xuICAgICAgfVxuICAgICAgLy8g
UmVtb3ZlIGNoaWxkcmVuIHRoYXQgYXJlIG5vIGxvbmdlciBwcmVzZW50LlxuICAgICAgZm9yIChu
YW1lIGluIHJlbW92ZWROb2Rlcykge1xuICAgICAgICBpZiAocmVtb3ZlZE5vZGVzLmhhc093blBy
b3BlcnR5KG5hbWUpKSB7XG4gICAgICAgICAgdXBkYXRlcyA9IGVucXVldWUodXBkYXRlcywgdGhp
cy5fdW5tb3VudENoaWxkKHByZXZDaGlsZHJlbltuYW1lXSwgcmVtb3ZlZE5vZGVzW25hbWVdKSk7
XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmICh1cGRhdGVzKSB7XG4gICAgICAgIHByb2Nl
c3NRdWV1ZSh0aGlzLCB1cGRhdGVzKTtcbiAgICAgIH1cbiAgICAgIHRoaXMuX3JlbmRlcmVkQ2hp
bGRyZW4gPSBuZXh0Q2hpbGRyZW47XG5cbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHNldENoaWxkcmVuRm9ySW5zdHJ1bWVudGF0aW9u
LmNhbGwodGhpcywgbmV4dENoaWxkcmVuKTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4g
ICAgICogVW5tb3VudHMgYWxsIHJlbmRlcmVkIGNoaWxkcmVuLiBUaGlzIHNob3VsZCBiZSB1c2Vk
IHRvIGNsZWFuIHVwIGNoaWxkcmVuXG4gICAgICogd2hlbiB0aGlzIGNvbXBvbmVudCBpcyB1bm1v
dW50ZWQuIEl0IGRvZXMgbm90IGFjdHVhbGx5IHBlcmZvcm0gYW55XG4gICAgICogYmFja2VuZCBv
cGVyYXRpb25zLlxuICAgICAqXG4gICAgICogQGludGVybmFsXG4gICAgICovXG4gICAgdW5tb3Vu
dENoaWxkcmVuOiBmdW5jdGlvbiAoc2FmZWx5KSB7XG4gICAgICB2YXIgcmVuZGVyZWRDaGlsZHJl
biA9IHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47XG4gICAgICBSZWFjdENoaWxkUmVjb25jaWxlci51
bm1vdW50Q2hpbGRyZW4ocmVuZGVyZWRDaGlsZHJlbiwgc2FmZWx5KTtcbiAgICAgIHRoaXMuX3Jl
bmRlcmVkQ2hpbGRyZW4gPSBudWxsO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBNb3ZlcyBh
IGNoaWxkIGNvbXBvbmVudCB0byB0aGUgc3VwcGxpZWQgaW5kZXguXG4gICAgICpcbiAgICAgKiBA
cGFyYW0ge1JlYWN0Q29tcG9uZW50fSBjaGlsZCBDb21wb25lbnQgdG8gbW92ZS5cbiAgICAgKiBA
cGFyYW0ge251bWJlcn0gdG9JbmRleCBEZXN0aW5hdGlvbiBpbmRleCBvZiB0aGUgZWxlbWVudC5c
biAgICAgKiBAcGFyYW0ge251bWJlcn0gbGFzdEluZGV4IExhc3QgaW5kZXggdmlzaXRlZCBvZiB0
aGUgc2libGluZ3Mgb2YgYGNoaWxkYC5cbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICovXG4gICAg
bW92ZUNoaWxkOiBmdW5jdGlvbiAoY2hpbGQsIGFmdGVyTm9kZSwgdG9JbmRleCwgbGFzdEluZGV4
KSB7XG4gICAgICAvLyBJZiB0aGUgaW5kZXggb2YgYGNoaWxkYCBpcyBsZXNzIHRoYW4gYGxhc3RJ
bmRleGAsIHRoZW4gaXQgbmVlZHMgdG9cbiAgICAgIC8vIGJlIG1vdmVkLiBPdGhlcndpc2UsIHdl
IGRvIG5vdCBuZWVkIHRvIG1vdmUgaXQgYmVjYXVzZSBhIGNoaWxkIHdpbGwgYmVcbiAgICAgIC8v
IGluc2VydGVkIG9yIG1vdmVkIGJlZm9yZSBgY2hpbGRgLlxuICAgICAgaWYgKGNoaWxkLl9tb3Vu
dEluZGV4IDwgbGFzdEluZGV4KSB7XG4gICAgICAgIHJldHVybiBtYWtlTW92ZShjaGlsZCwgYWZ0
ZXJOb2RlLCB0b0luZGV4KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogQ3Jl
YXRlcyBhIGNoaWxkIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UmVhY3RDb21w
b25lbnR9IGNoaWxkIENvbXBvbmVudCB0byBjcmVhdGUuXG4gICAgICogQHBhcmFtIHtzdHJpbmd9
IG1vdW50SW1hZ2UgTWFya3VwIHRvIGluc2VydC5cbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICov
XG4gICAgY3JlYXRlQ2hpbGQ6IGZ1bmN0aW9uIChjaGlsZCwgYWZ0ZXJOb2RlLCBtb3VudEltYWdl
KSB7XG4gICAgICByZXR1cm4gbWFrZUluc2VydE1hcmt1cChtb3VudEltYWdlLCBhZnRlck5vZGUs
IGNoaWxkLl9tb3VudEluZGV4KTtcbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICogUmVtb3ZlcyBh
IGNoaWxkIGNvbXBvbmVudC5cbiAgICAgKlxuICAgICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9
IGNoaWxkIENoaWxkIHRvIHJlbW92ZS5cbiAgICAgKiBAcHJvdGVjdGVkXG4gICAgICovXG4gICAg
cmVtb3ZlQ2hpbGQ6IGZ1bmN0aW9uIChjaGlsZCwgbm9kZSkge1xuICAgICAgcmV0dXJuIG1ha2VS
ZW1vdmUoY2hpbGQsIG5vZGUpO1xuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiBNb3VudHMgYSBj
aGlsZCB3aXRoIHRoZSBzdXBwbGllZCBuYW1lLlxuICAgICAqXG4gICAgICogTk9URTogVGhpcyBp
cyBwYXJ0IG9mIGB1cGRhdGVDaGlsZHJlbmAgYW5kIGlzIGhlcmUgZm9yIHJlYWRhYmlsaXR5Llxu
ICAgICAqXG4gICAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVudH0gY2hpbGQgQ29tcG9uZW50IHRv
IG1vdW50LlxuICAgICAqIEBwYXJhbSB7c3RyaW5nfSBuYW1lIE5hbWUgb2YgdGhlIGNoaWxkLlxu
ICAgICAqIEBwYXJhbSB7bnVtYmVyfSBpbmRleCBJbmRleCBhdCB3aGljaCB0byBpbnNlcnQgdGhl
IGNoaWxkLlxuICAgICAqIEBwYXJhbSB7UmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbn0gdHJhbnNh
Y3Rpb25cbiAgICAgKiBAcHJpdmF0ZVxuICAgICAqL1xuICAgIF9tb3VudENoaWxkQXRJbmRleDog
ZnVuY3Rpb24gKGNoaWxkLCBtb3VudEltYWdlLCBhZnRlck5vZGUsIGluZGV4LCB0cmFuc2FjdGlv
biwgY29udGV4dCkge1xuICAgICAgY2hpbGQuX21vdW50SW5kZXggPSBpbmRleDtcbiAgICAgIHJl
dHVybiB0aGlzLmNyZWF0ZUNoaWxkKGNoaWxkLCBhZnRlck5vZGUsIG1vdW50SW1hZ2UpO1xuICAg
IH0sXG5cbiAgICAvKipcbiAgICAgKiBVbm1vdW50cyBhIHJlbmRlcmVkIGNoaWxkLlxuICAgICAq
XG4gICAgICogTk9URTogVGhpcyBpcyBwYXJ0IG9mIGB1cGRhdGVDaGlsZHJlbmAgYW5kIGlzIGhl
cmUgZm9yIHJlYWRhYmlsaXR5LlxuICAgICAqXG4gICAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVu
dH0gY2hpbGQgQ29tcG9uZW50IHRvIHVubW91bnQuXG4gICAgICogQHByaXZhdGVcbiAgICAgKi9c
biAgICBfdW5tb3VudENoaWxkOiBmdW5jdGlvbiAoY2hpbGQsIG5vZGUpIHtcbiAgICAgIHZhciB1
cGRhdGUgPSB0aGlzLnJlbW92ZUNoaWxkKGNoaWxkLCBub2RlKTtcbiAgICAgIGNoaWxkLl9tb3Vu
dEluZGV4ID0gbnVsbDtcbiAgICAgIHJldHVybiB1cGRhdGU7XG4gICAgfVxuICB9XG59O1xuXG5t
b2R1bGUuZXhwb3J0cyA9IFJlYWN0TXVsdGlDaGlsZDtcblxuXG4vKioqKioqKioqKioqKioqKipc
biAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1JlYWN0TXVsdGlDaGls
ZC5qc1xuICoqIG1vZHVsZSBpZCA9IDE1NlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwi
LyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJp
Z2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52
YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52
YXIgaW52YXJpYW50ID0gcmVxdWlyZSgnZmJqcy9saWIvaW52YXJpYW50Jyk7XG5cbi8qKlxuICog
QHBhcmFtIHs/b2JqZWN0fSBvYmplY3RcbiAqIEByZXR1cm4ge2Jvb2xlYW59IFRydWUgaWYgYG9i
amVjdGAgaXMgYSB2YWxpZCBvd25lci5cbiAqIEBmaW5hbFxuICovXG5mdW5jdGlvbiBpc1ZhbGlk
T3duZXIob2JqZWN0KSB7XG4gIHJldHVybiAhIShvYmplY3QgJiYgdHlwZW9mIG9iamVjdC5hdHRh
Y2hSZWYgPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9iamVjdC5kZXRhY2hSZWYgPT09ICdmdW5j
dGlvbicpO1xufVxuXG4vKipcbiAqIFJlYWN0T3duZXJzIGFyZSBjYXBhYmxlIG9mIHN0b3Jpbmcg
cmVmZXJlbmNlcyB0byBvd25lZCBjb21wb25lbnRzLlxuICpcbiAqIEFsbCBjb21wb25lbnRzIGFy
ZSBjYXBhYmxlIG9mIC8vYmVpbmcvLyByZWZlcmVuY2VkIGJ5IG93bmVyIGNvbXBvbmVudHMsIGJ1
dFxuICogb25seSBSZWFjdE93bmVyIGNvbXBvbmVudHMgYXJlIGNhcGFibGUgb2YgLy9yZWZlcmVu
Y2luZy8vIG93bmVkIGNvbXBvbmVudHMuXG4gKiBUaGUgbmFtZWQgcmVmZXJlbmNlIGlzIGtub3du
IGFzIGEgXCJyZWZcIi5cbiAqXG4gKiBSZWZzIGFyZSBhdmFpbGFibGUgd2hlbiBtb3VudGVkIGFu
ZCB1cGRhdGVkIGR1cmluZyByZWNvbmNpbGlhdGlvbi5cbiAqXG4gKiAgIHZhciBNeUNvbXBvbmVu
dCA9IFJlYWN0LmNyZWF0ZUNsYXNzKHtcbiAqICAgICByZW5kZXI6IGZ1bmN0aW9uKCkge1xuICog
ICAgICAgcmV0dXJuIChcbiAqICAgICAgICAgPGRpdiBvbkNsaWNrPXt0aGlzLmhhbmRsZUNsaWNr
fT5cbiAqICAgICAgICAgICA8Q3VzdG9tQ29tcG9uZW50IHJlZj1cImN1c3RvbVwiIC8+XG4gKiAg
ICAgICAgIDwvZGl2PlxuICogICAgICAgKTtcbiAqICAgICB9LFxuICogICAgIGhhbmRsZUNsaWNr
OiBmdW5jdGlvbigpIHtcbiAqICAgICAgIHRoaXMucmVmcy5jdXN0b20uaGFuZGxlQ2xpY2soKTtc
biAqICAgICB9LFxuICogICAgIGNvbXBvbmVudERpZE1vdW50OiBmdW5jdGlvbigpIHtcbiAqICAg
ICAgIHRoaXMucmVmcy5jdXN0b20uaW5pdGlhbGl6ZSgpO1xuICogICAgIH1cbiAqICAgfSk7XG4g
KlxuICogUmVmcyBzaG91bGQgcmFyZWx5IGJlIHVzZWQuIFdoZW4gcmVmcyBhcmUgdXNlZCwgdGhl
eSBzaG91bGQgb25seSBiZSBkb25lIHRvXG4gKiBjb250cm9sIGRhdGEgdGhhdCBpcyBub3QgaGFu
ZGxlZCBieSBSZWFjdCdzIGRhdGEgZmxvdy5cbiAqXG4gKiBAY2xhc3MgUmVhY3RPd25lclxuICov
XG52YXIgUmVhY3RPd25lciA9IHtcbiAgLyoqXG4gICAqIEFkZHMgYSBjb21wb25lbnQgYnkgcmVm
IHRvIGFuIG93bmVyIGNvbXBvbmVudC5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENvbXBvbmVu
dH0gY29tcG9uZW50IENvbXBvbmVudCB0byByZWZlcmVuY2UuXG4gICAqIEBwYXJhbSB7c3RyaW5n
fSByZWYgTmFtZSBieSB3aGljaCB0byByZWZlciB0byB0aGUgY29tcG9uZW50LlxuICAgKiBAcGFy
YW0ge1JlYWN0T3duZXJ9IG93bmVyIENvbXBvbmVudCBvbiB3aGljaCB0byByZWNvcmQgdGhlIHJl
Zi5cbiAgICogQGZpbmFsXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgYWRkQ29tcG9uZW50QXNS
ZWZUbzogZnVuY3Rpb24gKGNvbXBvbmVudCwgcmVmLCBvd25lcikge1xuICAgICFpc1ZhbGlkT3du
ZXIob3duZXIpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFy
aWFudChmYWxzZSwgJ2FkZENvbXBvbmVudEFzUmVmVG8oLi4uKTogT25seSBhIFJlYWN0T3duZXIg
Y2FuIGhhdmUgcmVmcy4gWW91IG1pZ2h0IGJlIGFkZGluZyBhIHJlZiB0byBhIGNvbXBvbmVudCB0
aGF0IHdhcyBub3QgY3JlYXRlZCBpbnNpZGUgYSBjb21wb25lbnRcXCdzIGByZW5kZXJgIG1ldGhv
ZCwgb3IgeW91IGhhdmUgbXVsdGlwbGUgY29waWVzIG9mIFJlYWN0IGxvYWRlZCAoZGV0YWlsczog
aHR0cHM6Ly9mYi5tZS9yZWFjdC1yZWZzLW11c3QtaGF2ZS1vd25lcikuJykgOiBfcHJvZEludmFy
aWFudCgnMTE5JykgOiB2b2lkIDA7XG4gICAgb3duZXIuYXR0YWNoUmVmKHJlZiwgY29tcG9uZW50
KTtcbiAgfSxcblxuICAvKipcbiAgICogUmVtb3ZlcyBhIGNvbXBvbmVudCBieSByZWYgZnJvbSBh
biBvd25lciBjb21wb25lbnQuXG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDb21wb25lbnR9IGNv
bXBvbmVudCBDb21wb25lbnQgdG8gZGVyZWZlcmVuY2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBy
ZWYgTmFtZSBvZiB0aGUgcmVmIHRvIHJlbW92ZS5cbiAgICogQHBhcmFtIHtSZWFjdE93bmVyfSBv
d25lciBDb21wb25lbnQgb24gd2hpY2ggdGhlIHJlZiBpcyByZWNvcmRlZC5cbiAgICogQGZpbmFs
XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcmVtb3ZlQ29tcG9uZW50QXNSZWZGcm9tOiBmdW5j
dGlvbiAoY29tcG9uZW50LCByZWYsIG93bmVyKSB7XG4gICAgIWlzVmFsaWRPd25lcihvd25lcikg
PyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50KGZhbHNl
LCAncmVtb3ZlQ29tcG9uZW50QXNSZWZGcm9tKC4uLik6IE9ubHkgYSBSZWFjdE93bmVyIGNhbiBo
YXZlIHJlZnMuIFlvdSBtaWdodCBiZSByZW1vdmluZyBhIHJlZiB0byBhIGNvbXBvbmVudCB0aGF0
IHdhcyBub3QgY3JlYXRlZCBpbnNpZGUgYSBjb21wb25lbnRcXCdzIGByZW5kZXJgIG1ldGhvZCwg
b3IgeW91IGhhdmUgbXVsdGlwbGUgY29waWVzIG9mIFJlYWN0IGxvYWRlZCAoZGV0YWlsczogaHR0
cHM6Ly9mYi5tZS9yZWFjdC1yZWZzLW11c3QtaGF2ZS1vd25lcikuJykgOiBfcHJvZEludmFyaWFu
dCgnMTIwJykgOiB2b2lkIDA7XG4gICAgdmFyIG93bmVyUHVibGljSW5zdGFuY2UgPSBvd25lci5n
ZXRQdWJsaWNJbnN0YW5jZSgpO1xuICAgIC8vIENoZWNrIHRoYXQgYGNvbXBvbmVudGAncyBvd25l
ciBpcyBzdGlsbCBhbGl2ZSBhbmQgdGhhdCBgY29tcG9uZW50YCBpcyBzdGlsbCB0aGUgY3VycmVu
dCByZWZcbiAgICAvLyBiZWNhdXNlIHdlIGRvIG5vdCB3YW50IHRvIGRldGFjaCB0aGUgcmVmIGlm
IGFub3RoZXIgY29tcG9uZW50IHN0b2xlIGl0LlxuICAgIGlmIChvd25lclB1YmxpY0luc3RhbmNl
ICYmIG93bmVyUHVibGljSW5zdGFuY2UucmVmc1tyZWZdID09PSBjb21wb25lbnQuZ2V0UHVibGlj
SW5zdGFuY2UoKSkge1xuICAgICAgb3duZXIuZGV0YWNoUmVmKHJlZik7XG4gICAgfVxuICB9XG59
O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0T3duZXI7XG5cblxuLyoqKioqKioqKioqKioqKioq
XG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdE93bmVyLmpz
XG4gKiogbW9kdWxlIGlkID0gMTU3XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipc
biAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRz
IHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhl
IEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSBy
b290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4g
KiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRo
ZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBS
ZWFjdFByb3BUeXBlc1NlY3JldCA9ICdTRUNSRVRfRE9fTk9UX1BBU1NfVEhJU19PUl9ZT1VfV0lM
TF9CRV9GSVJFRCc7XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RQcm9wVHlwZXNTZWNyZXQ7XG5c
blxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3Qt
ZG9tL2xpYi9SZWFjdFByb3BUeXBlc1NlY3JldC5qc1xuICoqIG1vZHVsZSBpZCA9IDE1OFxuICoq
IG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50
LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNv
dXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBp
biB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3Vy
Y2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUg
Zm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICov
XG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9hc3NpZ24gPSByZXF1aXJlKCdvYmplY3QtYXNzaWdu
Jyk7XG5cbnZhciBDYWxsYmFja1F1ZXVlID0gcmVxdWlyZSgnLi9DYWxsYmFja1F1ZXVlJyk7XG52
YXIgUG9vbGVkQ2xhc3MgPSByZXF1aXJlKCcuL1Bvb2xlZENsYXNzJyk7XG52YXIgUmVhY3RCcm93
c2VyRXZlbnRFbWl0dGVyID0gcmVxdWlyZSgnLi9SZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXInKTtc
bnZhciBSZWFjdElucHV0U2VsZWN0aW9uID0gcmVxdWlyZSgnLi9SZWFjdElucHV0U2VsZWN0aW9u
Jyk7XG52YXIgUmVhY3RJbnN0cnVtZW50YXRpb24gPSByZXF1aXJlKCcuL1JlYWN0SW5zdHJ1bWVu
dGF0aW9uJyk7XG52YXIgVHJhbnNhY3Rpb24gPSByZXF1aXJlKCcuL1RyYW5zYWN0aW9uJyk7XG52
YXIgUmVhY3RVcGRhdGVRdWV1ZSA9IHJlcXVpcmUoJy4vUmVhY3RVcGRhdGVRdWV1ZScpO1xuXG4v
KipcbiAqIEVuc3VyZXMgdGhhdCwgd2hlbiBwb3NzaWJsZSwgdGhlIHNlbGVjdGlvbiByYW5nZSAo
Y3VycmVudGx5IHNlbGVjdGVkIHRleHRcbiAqIGlucHV0KSBpcyBub3QgZGlzdHVyYmVkIGJ5IHBl
cmZvcm1pbmcgdGhlIHRyYW5zYWN0aW9uLlxuICovXG52YXIgU0VMRUNUSU9OX1JFU1RPUkFUSU9O
ID0ge1xuICAvKipcbiAgICogQHJldHVybiB7U2VsZWN0aW9ufSBTZWxlY3Rpb24gaW5mb3JtYXRp
b24uXG4gICAqL1xuICBpbml0aWFsaXplOiBSZWFjdElucHV0U2VsZWN0aW9uLmdldFNlbGVjdGlv
bkluZm9ybWF0aW9uLFxuICAvKipcbiAgICogQHBhcmFtIHtTZWxlY3Rpb259IHNlbCBTZWxlY3Rp
b24gaW5mb3JtYXRpb24gcmV0dXJuZWQgZnJvbSBgaW5pdGlhbGl6ZWAuXG4gICAqL1xuICBjbG9z
ZTogUmVhY3RJbnB1dFNlbGVjdGlvbi5yZXN0b3JlU2VsZWN0aW9uXG59O1xuXG4vKipcbiAqIFN1
cHByZXNzZXMgZXZlbnRzIChibHVyL2ZvY3VzKSB0aGF0IGNvdWxkIGJlIGluYWR2ZXJ0ZW50bHkg
ZGlzcGF0Y2hlZCBkdWUgdG9cbiAqIGhpZ2ggbGV2ZWwgRE9NIG1hbmlwdWxhdGlvbnMgKGxpa2Ug
dGVtcG9yYXJpbHkgcmVtb3ZpbmcgYSB0ZXh0IGlucHV0IGZyb20gdGhlXG4gKiBET00pLlxuICov
XG52YXIgRVZFTlRfU1VQUFJFU1NJT04gPSB7XG4gIC8qKlxuICAgKiBAcmV0dXJuIHtib29sZWFu
fSBUaGUgZW5hYmxlZCBzdGF0dXMgb2YgYFJlYWN0QnJvd3NlckV2ZW50RW1pdHRlcmAgYmVmb3Jl
XG4gICAqIHRoZSByZWNvbmNpbGlhdGlvbi5cbiAgICovXG4gIGluaXRpYWxpemU6IGZ1bmN0aW9u
ICgpIHtcbiAgICB2YXIgY3VycmVudGx5RW5hYmxlZCA9IFJlYWN0QnJvd3NlckV2ZW50RW1pdHRl
ci5pc0VuYWJsZWQoKTtcbiAgICBSZWFjdEJyb3dzZXJFdmVudEVtaXR0ZXIuc2V0RW5hYmxlZChm
YWxzZSk7XG4gICAgcmV0dXJuIGN1cnJlbnRseUVuYWJsZWQ7XG4gIH0sXG5cbiAgLyoqXG4gICAq
IEBwYXJhbSB7Ym9vbGVhbn0gcHJldmlvdXNseUVuYWJsZWQgRW5hYmxlZCBzdGF0dXMgb2ZcbiAg
ICogICBgUmVhY3RCcm93c2VyRXZlbnRFbWl0dGVyYCBiZWZvcmUgdGhlIHJlY29uY2lsaWF0aW9u
IG9jY3VycmVkLiBgY2xvc2VgXG4gICAqICAgcmVzdG9yZXMgdGhlIHByZXZpb3VzIHZhbHVlLlxu
ICAgKi9cbiAgY2xvc2U6IGZ1bmN0aW9uIChwcmV2aW91c2x5RW5hYmxlZCkge1xuICAgIFJlYWN0
QnJvd3NlckV2ZW50RW1pdHRlci5zZXRFbmFibGVkKHByZXZpb3VzbHlFbmFibGVkKTtcbiAgfVxu
fTtcblxuLyoqXG4gKiBQcm92aWRlcyBhIHF1ZXVlIGZvciBjb2xsZWN0aW5nIGBjb21wb25lbnRE
aWRNb3VudGAgYW5kXG4gKiBgY29tcG9uZW50RGlkVXBkYXRlYCBjYWxsYmFja3MgZHVyaW5nIHRo
ZSB0cmFuc2FjdGlvbi5cbiAqL1xudmFyIE9OX0RPTV9SRUFEWV9RVUVVRUlORyA9IHtcbiAgLyoq
XG4gICAqIEluaXRpYWxpemVzIHRoZSBpbnRlcm5hbCBgb25ET01SZWFkeWAgcXVldWUuXG4gICAq
L1xuICBpbml0aWFsaXplOiBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5yZWFjdE1vdW50UmVhZHku
cmVzZXQoKTtcbiAgfSxcblxuICAvKipcbiAgICogQWZ0ZXIgRE9NIGlzIGZsdXNoZWQsIGludm9r
ZSBhbGwgcmVnaXN0ZXJlZCBgb25ET01SZWFkeWAgY2FsbGJhY2tzLlxuICAgKi9cbiAgY2xvc2U6
IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLnJlYWN0TW91bnRSZWFkeS5ub3RpZnlBbGwoKTtcbiAg
fVxufTtcblxuLyoqXG4gKiBFeGVjdXRlZCB3aXRoaW4gdGhlIHNjb3BlIG9mIHRoZSBgVHJhbnNh
Y3Rpb25gIGluc3RhbmNlLiBDb25zaWRlciB0aGVzZSBhc1xuICogYmVpbmcgbWVtYmVyIG1ldGhv
ZHMsIGJ1dCB3aXRoIGFuIGltcGxpZWQgb3JkZXJpbmcgd2hpbGUgYmVpbmcgaXNvbGF0ZWQgZnJv
bVxuICogZWFjaCBvdGhlci5cbiAqL1xudmFyIFRSQU5TQUNUSU9OX1dSQVBQRVJTID0gW1NFTEVD
VElPTl9SRVNUT1JBVElPTiwgRVZFTlRfU1VQUFJFU1NJT04sIE9OX0RPTV9SRUFEWV9RVUVVRUlO
R107XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIFRS
QU5TQUNUSU9OX1dSQVBQRVJTLnB1c2goe1xuICAgIGluaXRpYWxpemU6IFJlYWN0SW5zdHJ1bWVu
dGF0aW9uLmRlYnVnVG9vbC5vbkJlZ2luRmx1c2gsXG4gICAgY2xvc2U6IFJlYWN0SW5zdHJ1bWVu
dGF0aW9uLmRlYnVnVG9vbC5vbkVuZEZsdXNoXG4gIH0pO1xufVxuXG4vKipcbiAqIEN1cnJlbnRs
eTpcbiAqIC0gVGhlIG9yZGVyIHRoYXQgdGhlc2UgYXJlIGxpc3RlZCBpbiB0aGUgdHJhbnNhY3Rp
b24gaXMgY3JpdGljYWw6XG4gKiAtIFN1cHByZXNzZXMgZXZlbnRzLlxuICogLSBSZXN0b3JlcyBz
ZWxlY3Rpb24gcmFuZ2UuXG4gKlxuICogRnV0dXJlOlxuICogLSBSZXN0b3JlIGRvY3VtZW50L292
ZXJmbG93IHNjcm9sbCBwb3NpdGlvbnMgdGhhdCB3ZXJlIHVuaW50ZW50aW9uYWxseVxuICogICBt
b2RpZmllZCB2aWEgRE9NIGluc2VydGlvbnMgYWJvdmUgdGhlIHRvcCB2aWV3cG9ydCBib3VuZGFy
eS5cbiAqIC0gSW1wbGVtZW50L2ludGVncmF0ZSB3aXRoIGN1c3RvbWl6ZWQgY29uc3RyYWludCBi
YXNlZCBsYXlvdXQgc3lzdGVtIGFuZCBrZWVwXG4gKiAgIHRyYWNrIG9mIHdoaWNoIGRpbWVuc2lv
bnMgbXVzdCBiZSByZW1lYXN1cmVkLlxuICpcbiAqIEBjbGFzcyBSZWFjdFJlY29uY2lsZVRyYW5z
YWN0aW9uXG4gKi9cbmZ1bmN0aW9uIFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24odXNlQ3JlYXRl
RWxlbWVudCkge1xuICB0aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCk7XG4gIC8vIE9ubHkg
c2VydmVyLXNpZGUgcmVuZGVyaW5nIHJlYWxseSBuZWVkcyB0aGlzIG9wdGlvbiAoc2VlXG4gIC8v
IGBSZWFjdFNlcnZlclJlbmRlcmluZ2ApLCBidXQgc2VydmVyLXNpZGUgdXNlc1xuICAvLyBgUmVh
Y3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbmAgaW5zdGVhZC4gVGhpcyBvcHRpb24gaXMgaGVy
ZSBzbyB0aGF0IGl0J3NcbiAgLy8gYWNjZXNzaWJsZSBhbmQgZGVmYXVsdHMgdG8gZmFsc2Ugd2hl
biBgUmVhY3RET01Db21wb25lbnRgIGFuZFxuICAvLyBgUmVhY3RET01UZXh0Q29tcG9uZW50YCBj
aGVja3MgaXQgaW4gYG1vdW50Q29tcG9uZW50YC5gXG4gIHRoaXMucmVuZGVyVG9TdGF0aWNNYXJr
dXAgPSBmYWxzZTtcbiAgdGhpcy5yZWFjdE1vdW50UmVhZHkgPSBDYWxsYmFja1F1ZXVlLmdldFBv
b2xlZChudWxsKTtcbiAgdGhpcy51c2VDcmVhdGVFbGVtZW50ID0gdXNlQ3JlYXRlRWxlbWVudDtc
bn1cblxudmFyIE1peGluID0ge1xuICAvKipcbiAgICogQHNlZSBUcmFuc2FjdGlvblxuICAgKiBA
YWJzdHJhY3RcbiAgICogQGZpbmFsXG4gICAqIEByZXR1cm4ge2FycmF5PG9iamVjdD59IExpc3Qg
b2Ygb3BlcmF0aW9uIHdyYXAgcHJvY2VkdXJlcy5cbiAgICogICBUT0RPOiBjb252ZXJ0IHRvIGFy
cmF5PFRyYW5zYWN0aW9uV3JhcHBlcj5cbiAgICovXG4gIGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6
IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gVFJBTlNBQ1RJT05fV1JBUFBFUlM7XG4gIH0sXG5c
biAgLyoqXG4gICAqIEByZXR1cm4ge29iamVjdH0gVGhlIHF1ZXVlIHRvIGNvbGxlY3QgYG9uRE9N
UmVhZHlgIGNhbGxiYWNrcyB3aXRoLlxuICAgKi9cbiAgZ2V0UmVhY3RNb3VudFJlYWR5OiBmdW5j
dGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5O1xuICB9LFxuXG4gIC8q
KlxuICAgKiBAcmV0dXJuIHtvYmplY3R9IFRoZSBxdWV1ZSB0byBjb2xsZWN0IFJlYWN0IGFzeW5j
IGV2ZW50cy5cbiAgICovXG4gIGdldFVwZGF0ZVF1ZXVlOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0
dXJuIFJlYWN0VXBkYXRlUXVldWU7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFNhdmUgY3VycmVudCB0
cmFuc2FjdGlvbiBzdGF0ZSAtLSBpZiB0aGUgcmV0dXJuIHZhbHVlIGZyb20gdGhpcyBtZXRob2Qg
aXNcbiAgICogcGFzc2VkIHRvIGByb2xsYmFja2AsIHRoZSB0cmFuc2FjdGlvbiB3aWxsIGJlIHJl
c2V0IHRvIHRoYXQgc3RhdGUuXG4gICAqL1xuICBjaGVja3BvaW50OiBmdW5jdGlvbiAoKSB7XG4g
ICAgLy8gcmVhY3RNb3VudFJlYWR5IGlzIHRoZSBvdXIgb25seSBzdGF0ZWZ1bCB3cmFwcGVyXG4g
ICAgcmV0dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5LmNoZWNrcG9pbnQoKTtcbiAgfSxcblxuICBy
b2xsYmFjazogZnVuY3Rpb24gKGNoZWNrcG9pbnQpIHtcbiAgICB0aGlzLnJlYWN0TW91bnRSZWFk
eS5yb2xsYmFjayhjaGVja3BvaW50KTtcbiAgfSxcblxuICAvKipcbiAgICogYFBvb2xlZENsYXNz
YCBsb29rcyBmb3IgdGhpcywgYW5kIHdpbGwgaW52b2tlIHRoaXMgYmVmb3JlIGFsbG93aW5nIHRo
aXNcbiAgICogaW5zdGFuY2UgdG8gYmUgcmV1c2VkLlxuICAgKi9cbiAgZGVzdHJ1Y3RvcjogZnVu
Y3Rpb24gKCkge1xuICAgIENhbGxiYWNrUXVldWUucmVsZWFzZSh0aGlzLnJlYWN0TW91bnRSZWFk
eSk7XG4gICAgdGhpcy5yZWFjdE1vdW50UmVhZHkgPSBudWxsO1xuICB9XG59O1xuXG5fYXNzaWdu
KFJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucHJvdG90eXBlLCBUcmFuc2FjdGlvbiwgTWl4aW4p
O1xuXG5Qb29sZWRDbGFzcy5hZGRQb29saW5nVG8oUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbik7
XG5cbm1vZHVsZS5leHBvcnRzID0gUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbjtcblxuXG4vKioq
KioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGli
L1JlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24uanNcbiAqKiBtb2R1bGUgaWQgPSAxNTlcbiAqKiBt
b2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxu
ICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFJlYWN0T3duZXIgPSByZXF1aXJlKCcuL1JlYWN0
T3duZXInKTtcblxudmFyIFJlYWN0UmVmID0ge307XG5cbmZ1bmN0aW9uIGF0dGFjaFJlZihyZWYs
IGNvbXBvbmVudCwgb3duZXIpIHtcbiAgaWYgKHR5cGVvZiByZWYgPT09ICdmdW5jdGlvbicpIHtc
biAgICByZWYoY29tcG9uZW50LmdldFB1YmxpY0luc3RhbmNlKCkpO1xuICB9IGVsc2Uge1xuICAg
IC8vIExlZ2FjeSByZWZcbiAgICBSZWFjdE93bmVyLmFkZENvbXBvbmVudEFzUmVmVG8oY29tcG9u
ZW50LCByZWYsIG93bmVyKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBkZXRhY2hSZWYocmVmLCBjb21w
b25lbnQsIG93bmVyKSB7XG4gIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAg
cmVmKG51bGwpO1xuICB9IGVsc2Uge1xuICAgIC8vIExlZ2FjeSByZWZcbiAgICBSZWFjdE93bmVy
LnJlbW92ZUNvbXBvbmVudEFzUmVmRnJvbShjb21wb25lbnQsIHJlZiwgb3duZXIpO1xuICB9XG59
XG5cblJlYWN0UmVmLmF0dGFjaFJlZnMgPSBmdW5jdGlvbiAoaW5zdGFuY2UsIGVsZW1lbnQpIHtc
biAgaWYgKGVsZW1lbnQgPT09IG51bGwgfHwgdHlwZW9mIGVsZW1lbnQgIT09ICdvYmplY3QnKSB7
XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciByZWYgPSBlbGVtZW50LnJlZjtcbiAgaWYgKHJlZiAh
PSBudWxsKSB7XG4gICAgYXR0YWNoUmVmKHJlZiwgaW5zdGFuY2UsIGVsZW1lbnQuX293bmVyKTtc
biAgfVxufTtcblxuUmVhY3RSZWYuc2hvdWxkVXBkYXRlUmVmcyA9IGZ1bmN0aW9uIChwcmV2RWxl
bWVudCwgbmV4dEVsZW1lbnQpIHtcbiAgLy8gSWYgZWl0aGVyIHRoZSBvd25lciBvciBhIGByZWZg
IGhhcyBjaGFuZ2VkLCBtYWtlIHN1cmUgdGhlIG5ld2VzdCBvd25lclxuICAvLyBoYXMgc3RvcmVk
IGEgcmVmZXJlbmNlIHRvIGB0aGlzYCwgYW5kIHRoZSBwcmV2aW91cyBvd25lciAoaWYgZGlmZmVy
ZW50KVxuICAvLyBoYXMgZm9yZ290dGVuIHRoZSByZWZlcmVuY2UgdG8gYHRoaXNgLiBXZSB1c2Ug
dGhlIGVsZW1lbnQgaW5zdGVhZFxuICAvLyBvZiB0aGUgcHVibGljIHRoaXMucHJvcHMgYmVjYXVz
ZSB0aGUgcG9zdCBwcm9jZXNzaW5nIGNhbm5vdCBkZXRlcm1pbmVcbiAgLy8gYSByZWYuIFRoZSBy
ZWYgY29uY2VwdHVhbGx5IGxpdmVzIG9uIHRoZSBlbGVtZW50LlxuXG4gIC8vIFRPRE86IFNob3Vs
ZCB0aGlzIGV2ZW4gYmUgcG9zc2libGU/IFRoZSBvd25lciBjYW5ub3QgY2hhbmdlIGJlY2F1c2Vc
biAgLy8gaXQncyBmb3JiaWRkZW4gYnkgc2hvdWxkVXBkYXRlUmVhY3RDb21wb25lbnQuIFRoZSBy
ZWYgY2FuIGNoYW5nZVxuICAvLyBpZiB5b3Ugc3dhcCB0aGUga2V5cyBvZiBidXQgbm90IHRoZSBy
ZWZzLiBSZWNvbnNpZGVyIHdoZXJlIHRoaXMgY2hlY2tcbiAgLy8gaXMgbWFkZS4gSXQgcHJvYmFi
bHkgYmVsb25ncyB3aGVyZSB0aGUga2V5IGNoZWNraW5nIGFuZFxuICAvLyBpbnN0YW50aWF0ZVJl
YWN0Q29tcG9uZW50IGlzIGRvbmUuXG5cbiAgdmFyIHByZXZSZWYgPSBudWxsO1xuICB2YXIgcHJl
dk93bmVyID0gbnVsbDtcbiAgaWYgKHByZXZFbGVtZW50ICE9PSBudWxsICYmIHR5cGVvZiBwcmV2
RWxlbWVudCA9PT0gJ29iamVjdCcpIHtcbiAgICBwcmV2UmVmID0gcHJldkVsZW1lbnQucmVmO1xu
ICAgIHByZXZPd25lciA9IHByZXZFbGVtZW50Ll9vd25lcjtcbiAgfVxuXG4gIHZhciBuZXh0UmVm
ID0gbnVsbDtcbiAgdmFyIG5leHRPd25lciA9IG51bGw7XG4gIGlmIChuZXh0RWxlbWVudCAhPT0g
bnVsbCAmJiB0eXBlb2YgbmV4dEVsZW1lbnQgPT09ICdvYmplY3QnKSB7XG4gICAgbmV4dFJlZiA9
IG5leHRFbGVtZW50LnJlZjtcbiAgICBuZXh0T3duZXIgPSBuZXh0RWxlbWVudC5fb3duZXI7XG4g
IH1cblxuICByZXR1cm4gcHJldlJlZiAhPT0gbmV4dFJlZiB8fFxuICAvLyBJZiBvd25lciBjaGFu
Z2VzIGJ1dCB3ZSBoYXZlIGFuIHVuY2hhbmdlZCBmdW5jdGlvbiByZWYsIGRvbid0IHVwZGF0ZSBy
ZWZzXG4gIHR5cGVvZiBuZXh0UmVmID09PSAnc3RyaW5nJyAmJiBuZXh0T3duZXIgIT09IHByZXZP
d25lcjtcbn07XG5cblJlYWN0UmVmLmRldGFjaFJlZnMgPSBmdW5jdGlvbiAoaW5zdGFuY2UsIGVs
ZW1lbnQpIHtcbiAgaWYgKGVsZW1lbnQgPT09IG51bGwgfHwgdHlwZW9mIGVsZW1lbnQgIT09ICdv
YmplY3QnKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHZhciByZWYgPSBlbGVtZW50LnJlZjtcbiAg
aWYgKHJlZiAhPSBudWxsKSB7XG4gICAgZGV0YWNoUmVmKHJlZiwgaW5zdGFuY2UsIGVsZW1lbnQu
X293bmVyKTtcbiAgfVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFjdFJlZjtcblxuXG4vKioq
KioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGli
L1JlYWN0UmVmLmpzXG4gKiogbW9kdWxlIGlkID0gMTYwXG4gKiogbW9kdWxlIGNodW5rcyA9IDBc
biAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDE0LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4g
KiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5z
ZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBm
aWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlv
bmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5U
UyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xu
XG52YXIgX2Fzc2lnbiA9IHJlcXVpcmUoJ29iamVjdC1hc3NpZ24nKTtcblxudmFyIFBvb2xlZENs
YXNzID0gcmVxdWlyZSgnLi9Qb29sZWRDbGFzcycpO1xudmFyIFRyYW5zYWN0aW9uID0gcmVxdWly
ZSgnLi9UcmFuc2FjdGlvbicpO1xudmFyIFJlYWN0SW5zdHJ1bWVudGF0aW9uID0gcmVxdWlyZSgn
Li9SZWFjdEluc3RydW1lbnRhdGlvbicpO1xudmFyIFJlYWN0U2VydmVyVXBkYXRlUXVldWUgPSBy
ZXF1aXJlKCcuL1JlYWN0U2VydmVyVXBkYXRlUXVldWUnKTtcblxuLyoqXG4gKiBFeGVjdXRlZCB3
aXRoaW4gdGhlIHNjb3BlIG9mIHRoZSBgVHJhbnNhY3Rpb25gIGluc3RhbmNlLiBDb25zaWRlciB0
aGVzZSBhc1xuICogYmVpbmcgbWVtYmVyIG1ldGhvZHMsIGJ1dCB3aXRoIGFuIGltcGxpZWQgb3Jk
ZXJpbmcgd2hpbGUgYmVpbmcgaXNvbGF0ZWQgZnJvbVxuICogZWFjaCBvdGhlci5cbiAqL1xudmFy
IFRSQU5TQUNUSU9OX1dSQVBQRVJTID0gW107XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAh
PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIFRSQU5TQUNUSU9OX1dSQVBQRVJTLnB1c2goe1xuICAgIGlu
aXRpYWxpemU6IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkJlZ2luRmx1c2gsXG4g
ICAgY2xvc2U6IFJlYWN0SW5zdHJ1bWVudGF0aW9uLmRlYnVnVG9vbC5vbkVuZEZsdXNoXG4gIH0p
O1xufVxuXG52YXIgbm9vcENhbGxiYWNrUXVldWUgPSB7XG4gIGVucXVldWU6IGZ1bmN0aW9uICgp
IHt9XG59O1xuXG4vKipcbiAqIEBjbGFzcyBSZWFjdFNlcnZlclJlbmRlcmluZ1RyYW5zYWN0aW9u
XG4gKiBAcGFyYW0ge2Jvb2xlYW59IHJlbmRlclRvU3RhdGljTWFya3VwXG4gKi9cbmZ1bmN0aW9u
IFJlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24ocmVuZGVyVG9TdGF0aWNNYXJrdXApIHtc
biAgdGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpO1xuICB0aGlzLnJlbmRlclRvU3RhdGlj
TWFya3VwID0gcmVuZGVyVG9TdGF0aWNNYXJrdXA7XG4gIHRoaXMudXNlQ3JlYXRlRWxlbWVudCA9
IGZhbHNlO1xuICB0aGlzLnVwZGF0ZVF1ZXVlID0gbmV3IFJlYWN0U2VydmVyVXBkYXRlUXVldWUo
dGhpcyk7XG59XG5cbnZhciBNaXhpbiA9IHtcbiAgLyoqXG4gICAqIEBzZWUgVHJhbnNhY3Rpb25c
biAgICogQGFic3RyYWN0XG4gICAqIEBmaW5hbFxuICAgKiBAcmV0dXJuIHthcnJheX0gRW1wdHkg
bGlzdCBvZiBvcGVyYXRpb24gd3JhcCBwcm9jZWR1cmVzLlxuICAgKi9cbiAgZ2V0VHJhbnNhY3Rp
b25XcmFwcGVyczogZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBUUkFOU0FDVElPTl9XUkFQUEVS
UztcbiAgfSxcblxuICAvKipcbiAgICogQHJldHVybiB7b2JqZWN0fSBUaGUgcXVldWUgdG8gY29s
bGVjdCBgb25ET01SZWFkeWAgY2FsbGJhY2tzIHdpdGguXG4gICAqL1xuICBnZXRSZWFjdE1vdW50
UmVhZHk6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gbm9vcENhbGxiYWNrUXVldWU7XG4gIH0s
XG5cbiAgLyoqXG4gICAqIEByZXR1cm4ge29iamVjdH0gVGhlIHF1ZXVlIHRvIGNvbGxlY3QgUmVh
Y3QgYXN5bmMgZXZlbnRzLlxuICAgKi9cbiAgZ2V0VXBkYXRlUXVldWU6IGZ1bmN0aW9uICgpIHtc
biAgICByZXR1cm4gdGhpcy51cGRhdGVRdWV1ZTtcbiAgfSxcblxuICAvKipcbiAgICogYFBvb2xl
ZENsYXNzYCBsb29rcyBmb3IgdGhpcywgYW5kIHdpbGwgaW52b2tlIHRoaXMgYmVmb3JlIGFsbG93
aW5nIHRoaXNcbiAgICogaW5zdGFuY2UgdG8gYmUgcmV1c2VkLlxuICAgKi9cbiAgZGVzdHJ1Y3Rv
cjogZnVuY3Rpb24gKCkge30sXG5cbiAgY2hlY2twb2ludDogZnVuY3Rpb24gKCkge30sXG5cbiAg
cm9sbGJhY2s6IGZ1bmN0aW9uICgpIHt9XG59O1xuXG5fYXNzaWduKFJlYWN0U2VydmVyUmVuZGVy
aW5nVHJhbnNhY3Rpb24ucHJvdG90eXBlLCBUcmFuc2FjdGlvbiwgTWl4aW4pO1xuXG5Qb29sZWRD
bGFzcy5hZGRQb29saW5nVG8oUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbik7XG5cbm1v
ZHVsZS5leHBvcnRzID0gUmVhY3RTZXJ2ZXJSZW5kZXJpbmdUcmFuc2FjdGlvbjtcblxuXG4vKioq
KioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGli
L1JlYWN0U2VydmVyUmVuZGVyaW5nVHJhbnNhY3Rpb24uanNcbiAqKiBtb2R1bGUgaWQgPSAxNjFc
biAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTUtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpc
biAqIFxuICovXG5cbid1c2Ugc3RyaWN0JztcblxuZnVuY3Rpb24gX2NsYXNzQ2FsbENoZWNrKGlu
c3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5jZSBpbnN0YW5jZW9mIENvbnN0cnVj
dG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1
bmN0aW9uXCIpOyB9IH1cblxudmFyIFJlYWN0VXBkYXRlUXVldWUgPSByZXF1aXJlKCcuL1JlYWN0
VXBkYXRlUXVldWUnKTtcblxudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5n
Jyk7XG5cbmZ1bmN0aW9uIHdhcm5Ob29wKHB1YmxpY0luc3RhbmNlLCBjYWxsZXJOYW1lKSB7XG4g
IGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgdmFyIGNv
bnN0cnVjdG9yID0gcHVibGljSW5zdGFuY2UuY29uc3RydWN0b3I7XG4gICAgcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZmFsc2UsICclcyguLi4pOiBDYW4g
b25seSB1cGRhdGUgYSBtb3VudGluZyBjb21wb25lbnQuICcgKyAnVGhpcyB1c3VhbGx5IG1lYW5z
IHlvdSBjYWxsZWQgJXMoKSBvdXRzaWRlIGNvbXBvbmVudFdpbGxNb3VudCgpIG9uIHRoZSBzZXJ2
ZXIuICcgKyAnVGhpcyBpcyBhIG5vLW9wLiBQbGVhc2UgY2hlY2sgdGhlIGNvZGUgZm9yIHRoZSAl
cyBjb21wb25lbnQuJywgY2FsbGVyTmFtZSwgY2FsbGVyTmFtZSwgY29uc3RydWN0b3IgJiYgKGNv
bnN0cnVjdG9yLmRpc3BsYXlOYW1lIHx8IGNvbnN0cnVjdG9yLm5hbWUpIHx8ICdSZWFjdENsYXNz
JykgOiB2b2lkIDA7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIGlzIHRoZSB1cGRhdGUgcXVldWUg
dXNlZCBmb3Igc2VydmVyIHJlbmRlcmluZy5cbiAqIEl0IGRlbGVnYXRlcyB0byBSZWFjdFVwZGF0
ZVF1ZXVlIHdoaWxlIHNlcnZlciByZW5kZXJpbmcgaXMgaW4gcHJvZ3Jlc3MgYW5kXG4gKiBzd2l0
Y2hlcyB0byBSZWFjdE5vb3BVcGRhdGVRdWV1ZSBhZnRlciB0aGUgdHJhbnNhY3Rpb24gaGFzIGNv
bXBsZXRlZC5cbiAqIEBjbGFzcyBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlXG4gKiBAcGFyYW0ge1Ry
YW5zYWN0aW9ufSB0cmFuc2FjdGlvblxuICovXG5cbnZhciBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVl
ID0gZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlKHRyYW5z
YWN0aW9uKSB7XG4gICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFJlYWN0U2VydmVyVXBkYXRlUXVl
dWUpO1xuXG4gICAgdGhpcy50cmFuc2FjdGlvbiA9IHRyYW5zYWN0aW9uO1xuICB9XG5cbiAgLyoq
XG4gICAqIENoZWNrcyB3aGV0aGVyIG9yIG5vdCB0aGlzIGNvbXBvc2l0ZSBjb21wb25lbnQgaXMg
bW91bnRlZC5cbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0YW5jZSBUaGUgaW5z
dGFuY2Ugd2Ugd2FudCB0byB0ZXN0LlxuICAgKiBAcmV0dXJuIHtib29sZWFufSBUcnVlIGlmIG1v
dW50ZWQsIGZhbHNlIG90aGVyd2lzZS5cbiAgICogQHByb3RlY3RlZFxuICAgKiBAZmluYWxcbiAg
ICovXG5cblxuICBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlLnByb3RvdHlwZS5pc01vdW50ZWQgPSBm
dW5jdGlvbiBpc01vdW50ZWQocHVibGljSW5zdGFuY2UpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4g
IH07XG5cbiAgLyoqXG4gICAqIEVucXVldWUgYSBjYWxsYmFjayB0aGF0IHdpbGwgYmUgZXhlY3V0
ZWQgYWZ0ZXIgYWxsIHRoZSBwZW5kaW5nIHVwZGF0ZXNcbiAgICogaGF2ZSBwcm9jZXNzZWQuXG4g
ICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3RhbmNl
IHRvIHVzZSBhcyBgdGhpc2AgY29udGV4dC5cbiAgICogQHBhcmFtIHs/ZnVuY3Rpb259IGNhbGxi
YWNrIENhbGxlZCBhZnRlciBzdGF0ZSBpcyB1cGRhdGVkLlxuICAgKiBAaW50ZXJuYWxcbiAgICov
XG5cblxuICBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlLnByb3RvdHlwZS5lbnF1ZXVlQ2FsbGJhY2sg
PSBmdW5jdGlvbiBlbnF1ZXVlQ2FsbGJhY2socHVibGljSW5zdGFuY2UsIGNhbGxiYWNrLCBjYWxs
ZXJOYW1lKSB7XG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCkpIHtc
biAgICAgIFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZUNhbGxiYWNrKHB1YmxpY0luc3RhbmNlLCBj
YWxsYmFjaywgY2FsbGVyTmFtZSk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAgKiBGb3JjZXMg
YW4gdXBkYXRlLiBUaGlzIHNob3VsZCBvbmx5IGJlIGludm9rZWQgd2hlbiBpdCBpcyBrbm93biB3
aXRoXG4gICAqIGNlcnRhaW50eSB0aGF0IHdlIGFyZSAqKm5vdCoqIGluIGEgRE9NIHRyYW5zYWN0
aW9uLlxuICAgKlxuICAgKiBZb3UgbWF5IHdhbnQgdG8gY2FsbCB0aGlzIHdoZW4geW91IGtub3cg
dGhhdCBzb21lIGRlZXBlciBhc3BlY3Qgb2YgdGhlXG4gICAqIGNvbXBvbmVudCdzIHN0YXRlIGhh
cyBjaGFuZ2VkIGJ1dCBgc2V0U3RhdGVgIHdhcyBub3QgY2FsbGVkLlxuICAgKlxuICAgKiBUaGlz
IHdpbGwgbm90IGludm9rZSBgc2hvdWxkQ29tcG9uZW50VXBkYXRlYCwgYnV0IGl0IHdpbGwgaW52
b2tlXG4gICAqIGBjb21wb25lbnRXaWxsVXBkYXRlYCBhbmQgYGNvbXBvbmVudERpZFVwZGF0ZWAu
XG4gICAqXG4gICAqIEBwYXJhbSB7UmVhY3RDbGFzc30gcHVibGljSW5zdGFuY2UgVGhlIGluc3Rh
bmNlIHRoYXQgc2hvdWxkIHJlcmVuZGVyLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG5cblxuICBS
ZWFjdFNlcnZlclVwZGF0ZVF1ZXVlLnByb3RvdHlwZS5lbnF1ZXVlRm9yY2VVcGRhdGUgPSBmdW5j
dGlvbiBlbnF1ZXVlRm9yY2VVcGRhdGUocHVibGljSW5zdGFuY2UpIHtcbiAgICBpZiAodGhpcy50
cmFuc2FjdGlvbi5pc0luVHJhbnNhY3Rpb24oKSkge1xuICAgICAgUmVhY3RVcGRhdGVRdWV1ZS5l
bnF1ZXVlRm9yY2VVcGRhdGUocHVibGljSW5zdGFuY2UpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3
YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ2ZvcmNlVXBkYXRlJyk7XG4gICAgfVxuICB9O1xuXG4g
IC8qKlxuICAgKiBSZXBsYWNlcyBhbGwgb2YgdGhlIHN0YXRlLiBBbHdheXMgdXNlIHRoaXMgb3Ig
YHNldFN0YXRlYCB0byBtdXRhdGUgc3RhdGUuXG4gICAqIFlvdSBzaG91bGQgdHJlYXQgYHRoaXMu
c3RhdGVgIGFzIGltbXV0YWJsZS5cbiAgICpcbiAgICogVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRo
YXQgYHRoaXMuc3RhdGVgIHdpbGwgYmUgaW1tZWRpYXRlbHkgdXBkYXRlZCwgc29cbiAgICogYWNj
ZXNzaW5nIGB0aGlzLnN0YXRlYCBhZnRlciBjYWxsaW5nIHRoaXMgbWV0aG9kIG1heSByZXR1cm4g
dGhlIG9sZCB2YWx1ZS5cbiAgICpcbiAgICogQHBhcmFtIHtSZWFjdENsYXNzfSBwdWJsaWNJbnN0
YW5jZSBUaGUgaW5zdGFuY2UgdGhhdCBzaG91bGQgcmVyZW5kZXIuXG4gICAqIEBwYXJhbSB7b2Jq
ZWN0fGZ1bmN0aW9ufSBjb21wbGV0ZVN0YXRlIE5leHQgc3RhdGUuXG4gICAqIEBpbnRlcm5hbFxu
ICAgKi9cblxuXG4gIFJlYWN0U2VydmVyVXBkYXRlUXVldWUucHJvdG90eXBlLmVucXVldWVSZXBs
YWNlU3RhdGUgPSBmdW5jdGlvbiBlbnF1ZXVlUmVwbGFjZVN0YXRlKHB1YmxpY0luc3RhbmNlLCBj
b21wbGV0ZVN0YXRlKSB7XG4gICAgaWYgKHRoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9u
KCkpIHtcbiAgICAgIFJlYWN0VXBkYXRlUXVldWUuZW5xdWV1ZVJlcGxhY2VTdGF0ZShwdWJsaWNJ
bnN0YW5jZSwgY29tcGxldGVTdGF0ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdhcm5Ob29wKHB1
YmxpY0luc3RhbmNlLCAncmVwbGFjZVN0YXRlJyk7XG4gICAgfVxuICB9O1xuXG4gIC8qKlxuICAg
KiBTZXRzIGEgc3Vic2V0IG9mIHRoZSBzdGF0ZS4gVGhpcyBvbmx5IGV4aXN0cyBiZWNhdXNlIF9w
ZW5kaW5nU3RhdGUgaXNcbiAgICogaW50ZXJuYWwuIFRoaXMgcHJvdmlkZXMgYSBtZXJnaW5nIHN0
cmF0ZWd5IHRoYXQgaXMgbm90IGF2YWlsYWJsZSB0byBkZWVwXG4gICAqIHByb3BlcnRpZXMgd2hp
Y2ggaXMgY29uZnVzaW5nLiBUT0RPOiBFeHBvc2UgcGVuZGluZ1N0YXRlIG9yIGRvbid0IHVzZSBp
dFxuICAgKiBkdXJpbmcgdGhlIG1lcmdlLlxuICAgKlxuICAgKiBAcGFyYW0ge1JlYWN0Q2xhc3N9
IHB1YmxpY0luc3RhbmNlIFRoZSBpbnN0YW5jZSB0aGF0IHNob3VsZCByZXJlbmRlci5cbiAgICog
QHBhcmFtIHtvYmplY3R8ZnVuY3Rpb259IHBhcnRpYWxTdGF0ZSBOZXh0IHBhcnRpYWwgc3RhdGUg
dG8gYmUgbWVyZ2VkIHdpdGggc3RhdGUuXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cblxuXG4gIFJl
YWN0U2VydmVyVXBkYXRlUXVldWUucHJvdG90eXBlLmVucXVldWVTZXRTdGF0ZSA9IGZ1bmN0aW9u
IGVucXVldWVTZXRTdGF0ZShwdWJsaWNJbnN0YW5jZSwgcGFydGlhbFN0YXRlKSB7XG4gICAgaWYg
KHRoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCkpIHtcbiAgICAgIFJlYWN0VXBkYXRl
UXVldWUuZW5xdWV1ZVNldFN0YXRlKHB1YmxpY0luc3RhbmNlLCBwYXJ0aWFsU3RhdGUpO1xuICAg
IH0gZWxzZSB7XG4gICAgICB3YXJuTm9vcChwdWJsaWNJbnN0YW5jZSwgJ3NldFN0YXRlJyk7XG4g
ICAgfVxuICB9O1xuXG4gIHJldHVybiBSZWFjdFNlcnZlclVwZGF0ZVF1ZXVlO1xufSgpO1xuXG5t
b2R1bGUuZXhwb3J0cyA9IFJlYWN0U2VydmVyVXBkYXRlUXVldWU7XG5cblxuLyoqKioqKioqKioq
KioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9SZWFjdFNl
cnZlclVwZGF0ZVF1ZXVlLmpzXG4gKiogbW9kdWxlIGlkID0gMTYyXG4gKiogbW9kdWxlIGNodW5r
cyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJ
bmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMg
bGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElD
RU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBh
ZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUg
UEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJp
Y3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9ICcxNS42LjEnO1xuXG5cbi8qKioqKioqKioqKioqKioq
KlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvUmVhY3RWZXJzaW9u
LmpzXG4gKiogbW9kdWxlIGlkID0gMTYzXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIv
KipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmln
aHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIg
dGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRo
ZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50
XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGlu
IHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgTlMg
PSB7XG4gIHhsaW5rOiAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluaycsXG4gIHhtbDogJ2h0
dHA6Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSdcbn07XG5cbi8vIFdlIHVzZSBhdHRy
aWJ1dGVzIGZvciBldmVyeXRoaW5nIFNWRyBzbyBsZXQncyBhdm9pZCBzb21lIGR1cGxpY2F0aW9u
IGFuZCBydW5cbi8vIGNvZGUgaW5zdGVhZC5cbi8vIFRoZSBmb2xsb3dpbmcgYXJlIGFsbCBzcGVj
aWZpZWQgaW4gdGhlIEhUTUwgY29uZmlnIGFscmVhZHkgc28gd2UgZXhjbHVkZSBoZXJlLlxuLy8g
LSBjbGFzcyAoYXMgY2xhc3NOYW1lKVxuLy8gLSBjb2xvclxuLy8gLSBoZWlnaHRcbi8vIC0gaWRc
bi8vIC0gbGFuZ1xuLy8gLSBtYXhcbi8vIC0gbWVkaWFcbi8vIC0gbWV0aG9kXG4vLyAtIG1pblxu
Ly8gLSBuYW1lXG4vLyAtIHN0eWxlXG4vLyAtIHRhcmdldFxuLy8gLSB0eXBlXG4vLyAtIHdpZHRo
XG52YXIgQVRUUlMgPSB7XG4gIGFjY2VudEhlaWdodDogJ2FjY2VudC1oZWlnaHQnLFxuICBhY2N1
bXVsYXRlOiAwLFxuICBhZGRpdGl2ZTogMCxcbiAgYWxpZ25tZW50QmFzZWxpbmU6ICdhbGlnbm1l
bnQtYmFzZWxpbmUnLFxuICBhbGxvd1Jlb3JkZXI6ICdhbGxvd1Jlb3JkZXInLFxuICBhbHBoYWJl
dGljOiAwLFxuICBhbXBsaXR1ZGU6IDAsXG4gIGFyYWJpY0Zvcm06ICdhcmFiaWMtZm9ybScsXG4g
IGFzY2VudDogMCxcbiAgYXR0cmlidXRlTmFtZTogJ2F0dHJpYnV0ZU5hbWUnLFxuICBhdHRyaWJ1
dGVUeXBlOiAnYXR0cmlidXRlVHlwZScsXG4gIGF1dG9SZXZlcnNlOiAnYXV0b1JldmVyc2UnLFxu
ICBhemltdXRoOiAwLFxuICBiYXNlRnJlcXVlbmN5OiAnYmFzZUZyZXF1ZW5jeScsXG4gIGJhc2VQ
cm9maWxlOiAnYmFzZVByb2ZpbGUnLFxuICBiYXNlbGluZVNoaWZ0OiAnYmFzZWxpbmUtc2hpZnQn
LFxuICBiYm94OiAwLFxuICBiZWdpbjogMCxcbiAgYmlhczogMCxcbiAgYnk6IDAsXG4gIGNhbGNN
b2RlOiAnY2FsY01vZGUnLFxuICBjYXBIZWlnaHQ6ICdjYXAtaGVpZ2h0JyxcbiAgY2xpcDogMCxc
biAgY2xpcFBhdGg6ICdjbGlwLXBhdGgnLFxuICBjbGlwUnVsZTogJ2NsaXAtcnVsZScsXG4gIGNs
aXBQYXRoVW5pdHM6ICdjbGlwUGF0aFVuaXRzJyxcbiAgY29sb3JJbnRlcnBvbGF0aW9uOiAnY29s
b3ItaW50ZXJwb2xhdGlvbicsXG4gIGNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnM6ICdjb2xvci1p
bnRlcnBvbGF0aW9uLWZpbHRlcnMnLFxuICBjb2xvclByb2ZpbGU6ICdjb2xvci1wcm9maWxlJyxc
biAgY29sb3JSZW5kZXJpbmc6ICdjb2xvci1yZW5kZXJpbmcnLFxuICBjb250ZW50U2NyaXB0VHlw
ZTogJ2NvbnRlbnRTY3JpcHRUeXBlJyxcbiAgY29udGVudFN0eWxlVHlwZTogJ2NvbnRlbnRTdHls
ZVR5cGUnLFxuICBjdXJzb3I6IDAsXG4gIGN4OiAwLFxuICBjeTogMCxcbiAgZDogMCxcbiAgZGVj
ZWxlcmF0ZTogMCxcbiAgZGVzY2VudDogMCxcbiAgZGlmZnVzZUNvbnN0YW50OiAnZGlmZnVzZUNv
bnN0YW50JyxcbiAgZGlyZWN0aW9uOiAwLFxuICBkaXNwbGF5OiAwLFxuICBkaXZpc29yOiAwLFxu
ICBkb21pbmFudEJhc2VsaW5lOiAnZG9taW5hbnQtYmFzZWxpbmUnLFxuICBkdXI6IDAsXG4gIGR4
OiAwLFxuICBkeTogMCxcbiAgZWRnZU1vZGU6ICdlZGdlTW9kZScsXG4gIGVsZXZhdGlvbjogMCxc
biAgZW5hYmxlQmFja2dyb3VuZDogJ2VuYWJsZS1iYWNrZ3JvdW5kJyxcbiAgZW5kOiAwLFxuICBl
eHBvbmVudDogMCxcbiAgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDogJ2V4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQnLFxuICBmaWxsOiAwLFxuICBmaWxsT3BhY2l0eTogJ2ZpbGwtb3BhY2l0eScs
XG4gIGZpbGxSdWxlOiAnZmlsbC1ydWxlJyxcbiAgZmlsdGVyOiAwLFxuICBmaWx0ZXJSZXM6ICdm
aWx0ZXJSZXMnLFxuICBmaWx0ZXJVbml0czogJ2ZpbHRlclVuaXRzJyxcbiAgZmxvb2RDb2xvcjog
J2Zsb29kLWNvbG9yJyxcbiAgZmxvb2RPcGFjaXR5OiAnZmxvb2Qtb3BhY2l0eScsXG4gIGZvY3Vz
YWJsZTogMCxcbiAgZm9udEZhbWlseTogJ2ZvbnQtZmFtaWx5JyxcbiAgZm9udFNpemU6ICdmb250
LXNpemUnLFxuICBmb250U2l6ZUFkanVzdDogJ2ZvbnQtc2l6ZS1hZGp1c3QnLFxuICBmb250U3Ry
ZXRjaDogJ2ZvbnQtc3RyZXRjaCcsXG4gIGZvbnRTdHlsZTogJ2ZvbnQtc3R5bGUnLFxuICBmb250
VmFyaWFudDogJ2ZvbnQtdmFyaWFudCcsXG4gIGZvbnRXZWlnaHQ6ICdmb250LXdlaWdodCcsXG4g
IGZvcm1hdDogMCxcbiAgZnJvbTogMCxcbiAgZng6IDAsXG4gIGZ5OiAwLFxuICBnMTogMCxcbiAg
ZzI6IDAsXG4gIGdseXBoTmFtZTogJ2dseXBoLW5hbWUnLFxuICBnbHlwaE9yaWVudGF0aW9uSG9y
aXpvbnRhbDogJ2dseXBoLW9yaWVudGF0aW9uLWhvcml6b250YWwnLFxuICBnbHlwaE9yaWVudGF0
aW9uVmVydGljYWw6ICdnbHlwaC1vcmllbnRhdGlvbi12ZXJ0aWNhbCcsXG4gIGdseXBoUmVmOiAn
Z2x5cGhSZWYnLFxuICBncmFkaWVudFRyYW5zZm9ybTogJ2dyYWRpZW50VHJhbnNmb3JtJyxcbiAg
Z3JhZGllbnRVbml0czogJ2dyYWRpZW50VW5pdHMnLFxuICBoYW5naW5nOiAwLFxuICBob3JpekFk
dlg6ICdob3Jpei1hZHYteCcsXG4gIGhvcml6T3JpZ2luWDogJ2hvcml6LW9yaWdpbi14JyxcbiAg
aWRlb2dyYXBoaWM6IDAsXG4gIGltYWdlUmVuZGVyaW5nOiAnaW1hZ2UtcmVuZGVyaW5nJyxcbiAg
J2luJzogMCxcbiAgaW4yOiAwLFxuICBpbnRlcmNlcHQ6IDAsXG4gIGs6IDAsXG4gIGsxOiAwLFxu
ICBrMjogMCxcbiAgazM6IDAsXG4gIGs0OiAwLFxuICBrZXJuZWxNYXRyaXg6ICdrZXJuZWxNYXRy
aXgnLFxuICBrZXJuZWxVbml0TGVuZ3RoOiAna2VybmVsVW5pdExlbmd0aCcsXG4gIGtlcm5pbmc6
IDAsXG4gIGtleVBvaW50czogJ2tleVBvaW50cycsXG4gIGtleVNwbGluZXM6ICdrZXlTcGxpbmVz
JyxcbiAga2V5VGltZXM6ICdrZXlUaW1lcycsXG4gIGxlbmd0aEFkanVzdDogJ2xlbmd0aEFkanVz
dCcsXG4gIGxldHRlclNwYWNpbmc6ICdsZXR0ZXItc3BhY2luZycsXG4gIGxpZ2h0aW5nQ29sb3I6
ICdsaWdodGluZy1jb2xvcicsXG4gIGxpbWl0aW5nQ29uZUFuZ2xlOiAnbGltaXRpbmdDb25lQW5n
bGUnLFxuICBsb2NhbDogMCxcbiAgbWFya2VyRW5kOiAnbWFya2VyLWVuZCcsXG4gIG1hcmtlck1p
ZDogJ21hcmtlci1taWQnLFxuICBtYXJrZXJTdGFydDogJ21hcmtlci1zdGFydCcsXG4gIG1hcmtl
ckhlaWdodDogJ21hcmtlckhlaWdodCcsXG4gIG1hcmtlclVuaXRzOiAnbWFya2VyVW5pdHMnLFxu
ICBtYXJrZXJXaWR0aDogJ21hcmtlcldpZHRoJyxcbiAgbWFzazogMCxcbiAgbWFza0NvbnRlbnRV
bml0czogJ21hc2tDb250ZW50VW5pdHMnLFxuICBtYXNrVW5pdHM6ICdtYXNrVW5pdHMnLFxuICBt
YXRoZW1hdGljYWw6IDAsXG4gIG1vZGU6IDAsXG4gIG51bU9jdGF2ZXM6ICdudW1PY3RhdmVzJyxc
biAgb2Zmc2V0OiAwLFxuICBvcGFjaXR5OiAwLFxuICBvcGVyYXRvcjogMCxcbiAgb3JkZXI6IDAs
XG4gIG9yaWVudDogMCxcbiAgb3JpZW50YXRpb246IDAsXG4gIG9yaWdpbjogMCxcbiAgb3ZlcmZs
b3c6IDAsXG4gIG92ZXJsaW5lUG9zaXRpb246ICdvdmVybGluZS1wb3NpdGlvbicsXG4gIG92ZXJs
aW5lVGhpY2tuZXNzOiAnb3ZlcmxpbmUtdGhpY2tuZXNzJyxcbiAgcGFpbnRPcmRlcjogJ3BhaW50
LW9yZGVyJyxcbiAgcGFub3NlMTogJ3Bhbm9zZS0xJyxcbiAgcGF0aExlbmd0aDogJ3BhdGhMZW5n
dGgnLFxuICBwYXR0ZXJuQ29udGVudFVuaXRzOiAncGF0dGVybkNvbnRlbnRVbml0cycsXG4gIHBh
dHRlcm5UcmFuc2Zvcm06ICdwYXR0ZXJuVHJhbnNmb3JtJyxcbiAgcGF0dGVyblVuaXRzOiAncGF0
dGVyblVuaXRzJyxcbiAgcG9pbnRlckV2ZW50czogJ3BvaW50ZXItZXZlbnRzJyxcbiAgcG9pbnRz
OiAwLFxuICBwb2ludHNBdFg6ICdwb2ludHNBdFgnLFxuICBwb2ludHNBdFk6ICdwb2ludHNBdFkn
LFxuICBwb2ludHNBdFo6ICdwb2ludHNBdFonLFxuICBwcmVzZXJ2ZUFscGhhOiAncHJlc2VydmVB
bHBoYScsXG4gIHByZXNlcnZlQXNwZWN0UmF0aW86ICdwcmVzZXJ2ZUFzcGVjdFJhdGlvJyxcbiAg
cHJpbWl0aXZlVW5pdHM6ICdwcmltaXRpdmVVbml0cycsXG4gIHI6IDAsXG4gIHJhZGl1czogMCxc
biAgcmVmWDogJ3JlZlgnLFxuICByZWZZOiAncmVmWScsXG4gIHJlbmRlcmluZ0ludGVudDogJ3Jl
bmRlcmluZy1pbnRlbnQnLFxuICByZXBlYXRDb3VudDogJ3JlcGVhdENvdW50JyxcbiAgcmVwZWF0
RHVyOiAncmVwZWF0RHVyJyxcbiAgcmVxdWlyZWRFeHRlbnNpb25zOiAncmVxdWlyZWRFeHRlbnNp
b25zJyxcbiAgcmVxdWlyZWRGZWF0dXJlczogJ3JlcXVpcmVkRmVhdHVyZXMnLFxuICByZXN0YXJ0
OiAwLFxuICByZXN1bHQ6IDAsXG4gIHJvdGF0ZTogMCxcbiAgcng6IDAsXG4gIHJ5OiAwLFxuICBz
Y2FsZTogMCxcbiAgc2VlZDogMCxcbiAgc2hhcGVSZW5kZXJpbmc6ICdzaGFwZS1yZW5kZXJpbmcn
LFxuICBzbG9wZTogMCxcbiAgc3BhY2luZzogMCxcbiAgc3BlY3VsYXJDb25zdGFudDogJ3NwZWN1
bGFyQ29uc3RhbnQnLFxuICBzcGVjdWxhckV4cG9uZW50OiAnc3BlY3VsYXJFeHBvbmVudCcsXG4g
IHNwZWVkOiAwLFxuICBzcHJlYWRNZXRob2Q6ICdzcHJlYWRNZXRob2QnLFxuICBzdGFydE9mZnNl
dDogJ3N0YXJ0T2Zmc2V0JyxcbiAgc3RkRGV2aWF0aW9uOiAnc3RkRGV2aWF0aW9uJyxcbiAgc3Rl
bWg6IDAsXG4gIHN0ZW12OiAwLFxuICBzdGl0Y2hUaWxlczogJ3N0aXRjaFRpbGVzJyxcbiAgc3Rv
cENvbG9yOiAnc3RvcC1jb2xvcicsXG4gIHN0b3BPcGFjaXR5OiAnc3RvcC1vcGFjaXR5JyxcbiAg
c3RyaWtldGhyb3VnaFBvc2l0aW9uOiAnc3RyaWtldGhyb3VnaC1wb3NpdGlvbicsXG4gIHN0cmlr
ZXRocm91Z2hUaGlja25lc3M6ICdzdHJpa2V0aHJvdWdoLXRoaWNrbmVzcycsXG4gIHN0cmluZzog
MCxcbiAgc3Ryb2tlOiAwLFxuICBzdHJva2VEYXNoYXJyYXk6ICdzdHJva2UtZGFzaGFycmF5Jyxc
biAgc3Ryb2tlRGFzaG9mZnNldDogJ3N0cm9rZS1kYXNob2Zmc2V0JyxcbiAgc3Ryb2tlTGluZWNh
cDogJ3N0cm9rZS1saW5lY2FwJyxcbiAgc3Ryb2tlTGluZWpvaW46ICdzdHJva2UtbGluZWpvaW4n
LFxuICBzdHJva2VNaXRlcmxpbWl0OiAnc3Ryb2tlLW1pdGVybGltaXQnLFxuICBzdHJva2VPcGFj
aXR5OiAnc3Ryb2tlLW9wYWNpdHknLFxuICBzdHJva2VXaWR0aDogJ3N0cm9rZS13aWR0aCcsXG4g
IHN1cmZhY2VTY2FsZTogJ3N1cmZhY2VTY2FsZScsXG4gIHN5c3RlbUxhbmd1YWdlOiAnc3lzdGVt
TGFuZ3VhZ2UnLFxuICB0YWJsZVZhbHVlczogJ3RhYmxlVmFsdWVzJyxcbiAgdGFyZ2V0WDogJ3Rh
cmdldFgnLFxuICB0YXJnZXRZOiAndGFyZ2V0WScsXG4gIHRleHRBbmNob3I6ICd0ZXh0LWFuY2hv
cicsXG4gIHRleHREZWNvcmF0aW9uOiAndGV4dC1kZWNvcmF0aW9uJyxcbiAgdGV4dFJlbmRlcmlu
ZzogJ3RleHQtcmVuZGVyaW5nJyxcbiAgdGV4dExlbmd0aDogJ3RleHRMZW5ndGgnLFxuICB0bzog
MCxcbiAgdHJhbnNmb3JtOiAwLFxuICB1MTogMCxcbiAgdTI6IDAsXG4gIHVuZGVybGluZVBvc2l0
aW9uOiAndW5kZXJsaW5lLXBvc2l0aW9uJyxcbiAgdW5kZXJsaW5lVGhpY2tuZXNzOiAndW5kZXJs
aW5lLXRoaWNrbmVzcycsXG4gIHVuaWNvZGU6IDAsXG4gIHVuaWNvZGVCaWRpOiAndW5pY29kZS1i
aWRpJyxcbiAgdW5pY29kZVJhbmdlOiAndW5pY29kZS1yYW5nZScsXG4gIHVuaXRzUGVyRW06ICd1
bml0cy1wZXItZW0nLFxuICB2QWxwaGFiZXRpYzogJ3YtYWxwaGFiZXRpYycsXG4gIHZIYW5naW5n
OiAndi1oYW5naW5nJyxcbiAgdklkZW9ncmFwaGljOiAndi1pZGVvZ3JhcGhpYycsXG4gIHZNYXRo
ZW1hdGljYWw6ICd2LW1hdGhlbWF0aWNhbCcsXG4gIHZhbHVlczogMCxcbiAgdmVjdG9yRWZmZWN0
OiAndmVjdG9yLWVmZmVjdCcsXG4gIHZlcnNpb246IDAsXG4gIHZlcnRBZHZZOiAndmVydC1hZHYt
eScsXG4gIHZlcnRPcmlnaW5YOiAndmVydC1vcmlnaW4teCcsXG4gIHZlcnRPcmlnaW5ZOiAndmVy
dC1vcmlnaW4teScsXG4gIHZpZXdCb3g6ICd2aWV3Qm94JyxcbiAgdmlld1RhcmdldDogJ3ZpZXdU
YXJnZXQnLFxuICB2aXNpYmlsaXR5OiAwLFxuICB3aWR0aHM6IDAsXG4gIHdvcmRTcGFjaW5nOiAn
d29yZC1zcGFjaW5nJyxcbiAgd3JpdGluZ01vZGU6ICd3cml0aW5nLW1vZGUnLFxuICB4OiAwLFxu
ICB4SGVpZ2h0OiAneC1oZWlnaHQnLFxuICB4MTogMCxcbiAgeDI6IDAsXG4gIHhDaGFubmVsU2Vs
ZWN0b3I6ICd4Q2hhbm5lbFNlbGVjdG9yJyxcbiAgeGxpbmtBY3R1YXRlOiAneGxpbms6YWN0dWF0
ZScsXG4gIHhsaW5rQXJjcm9sZTogJ3hsaW5rOmFyY3JvbGUnLFxuICB4bGlua0hyZWY6ICd4bGlu
azpocmVmJyxcbiAgeGxpbmtSb2xlOiAneGxpbms6cm9sZScsXG4gIHhsaW5rU2hvdzogJ3hsaW5r
OnNob3cnLFxuICB4bGlua1RpdGxlOiAneGxpbms6dGl0bGUnLFxuICB4bGlua1R5cGU6ICd4bGlu
azp0eXBlJyxcbiAgeG1sQmFzZTogJ3htbDpiYXNlJyxcbiAgeG1sbnM6IDAsXG4gIHhtbG5zWGxp
bms6ICd4bWxuczp4bGluaycsXG4gIHhtbExhbmc6ICd4bWw6bGFuZycsXG4gIHhtbFNwYWNlOiAn
eG1sOnNwYWNlJyxcbiAgeTogMCxcbiAgeTE6IDAsXG4gIHkyOiAwLFxuICB5Q2hhbm5lbFNlbGVj
dG9yOiAneUNoYW5uZWxTZWxlY3RvcicsXG4gIHo6IDAsXG4gIHpvb21BbmRQYW46ICd6b29tQW5k
UGFuJ1xufTtcblxudmFyIFNWR0RPTVByb3BlcnR5Q29uZmlnID0ge1xuICBQcm9wZXJ0aWVzOiB7
fSxcbiAgRE9NQXR0cmlidXRlTmFtZXNwYWNlczoge1xuICAgIHhsaW5rQWN0dWF0ZTogTlMueGxp
bmssXG4gICAgeGxpbmtBcmNyb2xlOiBOUy54bGluayxcbiAgICB4bGlua0hyZWY6IE5TLnhsaW5r
LFxuICAgIHhsaW5rUm9sZTogTlMueGxpbmssXG4gICAgeGxpbmtTaG93OiBOUy54bGluayxcbiAg
ICB4bGlua1RpdGxlOiBOUy54bGluayxcbiAgICB4bGlua1R5cGU6IE5TLnhsaW5rLFxuICAgIHht
bEJhc2U6IE5TLnhtbCxcbiAgICB4bWxMYW5nOiBOUy54bWwsXG4gICAgeG1sU3BhY2U6IE5TLnht
bFxuICB9LFxuICBET01BdHRyaWJ1dGVOYW1lczoge31cbn07XG5cbk9iamVjdC5rZXlzKEFUVFJT
KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgU1ZHRE9NUHJvcGVydHlDb25maWcuUHJvcGVy
dGllc1trZXldID0gMDtcbiAgaWYgKEFUVFJTW2tleV0pIHtcbiAgICBTVkdET01Qcm9wZXJ0eUNv
bmZpZy5ET01BdHRyaWJ1dGVOYW1lc1trZXldID0gQVRUUlNba2V5XTtcbiAgfVxufSk7XG5cbm1v
ZHVsZS5leHBvcnRzID0gU1ZHRE9NUHJvcGVydHlDb25maWc7XG5cblxuLyoqKioqKioqKioqKioq
KioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9TVkdET01Qcm9w
ZXJ0eUNvbmZpZy5qc1xuICoqIG1vZHVsZSBpZCA9IDE2NFxuICoqIG1vZHVsZSBjaHVua3MgPSAw
XG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0Jztc
blxudmFyIEV2ZW50UHJvcGFnYXRvcnMgPSByZXF1aXJlKCcuL0V2ZW50UHJvcGFnYXRvcnMnKTtc
bnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVu
dmlyb25tZW50Jyk7XG52YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9SZWFj
dERPTUNvbXBvbmVudFRyZWUnKTtcbnZhciBSZWFjdElucHV0U2VsZWN0aW9uID0gcmVxdWlyZSgn
Li9SZWFjdElucHV0U2VsZWN0aW9uJyk7XG52YXIgU3ludGhldGljRXZlbnQgPSByZXF1aXJlKCcu
L1N5bnRoZXRpY0V2ZW50Jyk7XG5cbnZhciBnZXRBY3RpdmVFbGVtZW50ID0gcmVxdWlyZSgnZmJq
cy9saWIvZ2V0QWN0aXZlRWxlbWVudCcpO1xudmFyIGlzVGV4dElucHV0RWxlbWVudCA9IHJlcXVp
cmUoJy4vaXNUZXh0SW5wdXRFbGVtZW50Jyk7XG52YXIgc2hhbGxvd0VxdWFsID0gcmVxdWlyZSgn
ZmJqcy9saWIvc2hhbGxvd0VxdWFsJyk7XG5cbnZhciBza2lwU2VsZWN0aW9uQ2hhbmdlRXZlbnQg
PSBFeGVjdXRpb25FbnZpcm9ubWVudC5jYW5Vc2VET00gJiYgJ2RvY3VtZW50TW9kZScgaW4gZG9j
dW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRNb2RlIDw9IDExO1xuXG52YXIgZXZlbnRUeXBlcyA9
IHtcbiAgc2VsZWN0OiB7XG4gICAgcGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6IHtcbiAgICAgIGJ1
YmJsZWQ6ICdvblNlbGVjdCcsXG4gICAgICBjYXB0dXJlZDogJ29uU2VsZWN0Q2FwdHVyZSdcbiAg
ICB9LFxuICAgIGRlcGVuZGVuY2llczogWyd0b3BCbHVyJywgJ3RvcENvbnRleHRNZW51JywgJ3Rv
cEZvY3VzJywgJ3RvcEtleURvd24nLCAndG9wS2V5VXAnLCAndG9wTW91c2VEb3duJywgJ3RvcE1v
dXNlVXAnLCAndG9wU2VsZWN0aW9uQ2hhbmdlJ11cbiAgfVxufTtcblxudmFyIGFjdGl2ZUVsZW1l
bnQgPSBudWxsO1xudmFyIGFjdGl2ZUVsZW1lbnRJbnN0ID0gbnVsbDtcbnZhciBsYXN0U2VsZWN0
aW9uID0gbnVsbDtcbnZhciBtb3VzZURvd24gPSBmYWxzZTtcblxuLy8gVHJhY2sgd2hldGhlciBh
IGxpc3RlbmVyIGV4aXN0cyBmb3IgdGhpcyBwbHVnaW4uIElmIG5vbmUgZXhpc3QsIHdlIGRvXG4v
LyBub3QgZXh0cmFjdCBldmVudHMuIFNlZSAjMzYzOS5cbnZhciBoYXNMaXN0ZW5lciA9IGZhbHNl
O1xuXG4vKipcbiAqIEdldCBhbiBvYmplY3Qgd2hpY2ggaXMgYSB1bmlxdWUgcmVwcmVzZW50YXRp
b24gb2YgdGhlIGN1cnJlbnQgc2VsZWN0aW9uLlxuICpcbiAqIFRoZSByZXR1cm4gdmFsdWUgd2ls
bCBub3QgYmUgY29uc2lzdGVudCBhY3Jvc3Mgbm9kZXMgb3IgYnJvd3NlcnMsIGJ1dFxuICogdHdv
IGlkZW50aWNhbCBzZWxlY3Rpb25zIG9uIHRoZSBzYW1lIG5vZGUgd2lsbCByZXR1cm4gaWRlbnRp
Y2FsIG9iamVjdHMuXG4gKlxuICogQHBhcmFtIHtET01FbGVtZW50fSBub2RlXG4gKiBAcmV0dXJu
IHtvYmplY3R9XG4gKi9cbmZ1bmN0aW9uIGdldFNlbGVjdGlvbihub2RlKSB7XG4gIGlmICgnc2Vs
ZWN0aW9uU3RhcnQnIGluIG5vZGUgJiYgUmVhY3RJbnB1dFNlbGVjdGlvbi5oYXNTZWxlY3Rpb25D
YXBhYmlsaXRpZXMobm9kZSkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3RhcnQ6IG5vZGUuc2Vs
ZWN0aW9uU3RhcnQsXG4gICAgICBlbmQ6IG5vZGUuc2VsZWN0aW9uRW5kXG4gICAgfTtcbiAgfSBl
bHNlIGlmICh3aW5kb3cuZ2V0U2VsZWN0aW9uKSB7XG4gICAgdmFyIHNlbGVjdGlvbiA9IHdpbmRv
dy5nZXRTZWxlY3Rpb24oKTtcbiAgICByZXR1cm4ge1xuICAgICAgYW5jaG9yTm9kZTogc2VsZWN0
aW9uLmFuY2hvck5vZGUsXG4gICAgICBhbmNob3JPZmZzZXQ6IHNlbGVjdGlvbi5hbmNob3JPZmZz
ZXQsXG4gICAgICBmb2N1c05vZGU6IHNlbGVjdGlvbi5mb2N1c05vZGUsXG4gICAgICBmb2N1c09m
ZnNldDogc2VsZWN0aW9uLmZvY3VzT2Zmc2V0XG4gICAgfTtcbiAgfSBlbHNlIGlmIChkb2N1bWVu
dC5zZWxlY3Rpb24pIHtcbiAgICB2YXIgcmFuZ2UgPSBkb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRl
UmFuZ2UoKTtcbiAgICByZXR1cm4ge1xuICAgICAgcGFyZW50RWxlbWVudDogcmFuZ2UucGFyZW50
RWxlbWVudCgpLFxuICAgICAgdGV4dDogcmFuZ2UudGV4dCxcbiAgICAgIHRvcDogcmFuZ2UuYm91
bmRpbmdUb3AsXG4gICAgICBsZWZ0OiByYW5nZS5ib3VuZGluZ0xlZnRcbiAgICB9O1xuICB9XG59
XG5cbi8qKlxuICogUG9sbCBzZWxlY3Rpb24gdG8gc2VlIHdoZXRoZXIgaXQncyBjaGFuZ2VkLlxu
ICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudFxuICogQHJldHVybiB7P1N5bnRoZXRp
Y0V2ZW50fVxuICovXG5mdW5jdGlvbiBjb25zdHJ1Y3RTZWxlY3RFdmVudChuYXRpdmVFdmVudCwg
bmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgLy8gRW5zdXJlIHdlIGhhdmUgdGhlIHJpZ2h0IGVsZW1l
bnQsIGFuZCB0aGF0IHRoZSB1c2VyIGlzIG5vdCBkcmFnZ2luZyBhXG4gIC8vIHNlbGVjdGlvbiAo
dGhpcyBtYXRjaGVzIG5hdGl2ZSBgc2VsZWN0YCBldmVudCBiZWhhdmlvcikuIEluIEhUTUw1LCBz
ZWxlY3RcbiAgLy8gZmlyZXMgb25seSBvbiBpbnB1dCBhbmQgdGV4dGFyZWEgdGh1cyBpZiB0aGVy
ZSdzIG5vIGZvY3VzZWQgZWxlbWVudCB3ZVxuICAvLyB3b24ndCBkaXNwYXRjaC5cbiAgaWYgKG1v
dXNlRG93biB8fCBhY3RpdmVFbGVtZW50ID09IG51bGwgfHwgYWN0aXZlRWxlbWVudCAhPT0gZ2V0
QWN0aXZlRWxlbWVudCgpKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBPbmx5IGZp
cmUgd2hlbiBzZWxlY3Rpb24gaGFzIGFjdHVhbGx5IGNoYW5nZWQuXG4gIHZhciBjdXJyZW50U2Vs
ZWN0aW9uID0gZ2V0U2VsZWN0aW9uKGFjdGl2ZUVsZW1lbnQpO1xuICBpZiAoIWxhc3RTZWxlY3Rp
b24gfHwgIXNoYWxsb3dFcXVhbChsYXN0U2VsZWN0aW9uLCBjdXJyZW50U2VsZWN0aW9uKSkge1xu
ICAgIGxhc3RTZWxlY3Rpb24gPSBjdXJyZW50U2VsZWN0aW9uO1xuXG4gICAgdmFyIHN5bnRoZXRp
Y0V2ZW50ID0gU3ludGhldGljRXZlbnQuZ2V0UG9vbGVkKGV2ZW50VHlwZXMuc2VsZWN0LCBhY3Rp
dmVFbGVtZW50SW5zdCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcblxuICAgIHN5
bnRoZXRpY0V2ZW50LnR5cGUgPSAnc2VsZWN0JztcbiAgICBzeW50aGV0aWNFdmVudC50YXJnZXQg
PSBhY3RpdmVFbGVtZW50O1xuXG4gICAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlVHdvUGhh
c2VEaXNwYXRjaGVzKHN5bnRoZXRpY0V2ZW50KTtcblxuICAgIHJldHVybiBzeW50aGV0aWNFdmVu
dDtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIFRoaXMgcGx1Z2luIGNyZWF0
ZXMgYW4gYG9uU2VsZWN0YCBldmVudCB0aGF0IG5vcm1hbGl6ZXMgc2VsZWN0IGV2ZW50c1xuICog
YWNyb3NzIGZvcm0gZWxlbWVudHMuXG4gKlxuICogU3VwcG9ydGVkIGVsZW1lbnRzIGFyZTpcbiAq
IC0gaW5wdXQgKHNlZSBgaXNUZXh0SW5wdXRFbGVtZW50YClcbiAqIC0gdGV4dGFyZWFcbiAqIC0g
Y29udGVudEVkaXRhYmxlXG4gKlxuICogVGhpcyBkaWZmZXJzIGZyb20gbmF0aXZlIGJyb3dzZXIg
aW1wbGVtZW50YXRpb25zIGluIHRoZSBmb2xsb3dpbmcgd2F5czpcbiAqIC0gRmlyZXMgb24gY29u
dGVudEVkaXRhYmxlIGZpZWxkcyBhcyB3ZWxsIGFzIGlucHV0cy5cbiAqIC0gRmlyZXMgZm9yIGNv
bGxhcHNlZCBzZWxlY3Rpb24uXG4gKiAtIEZpcmVzIGFmdGVyIHVzZXIgaW5wdXQuXG4gKi9cbnZh
ciBTZWxlY3RFdmVudFBsdWdpbiA9IHtcbiAgZXZlbnRUeXBlczogZXZlbnRUeXBlcyxcblxuICBl
eHRyYWN0RXZlbnRzOiBmdW5jdGlvbiAodG9wTGV2ZWxUeXBlLCB0YXJnZXRJbnN0LCBuYXRpdmVF
dmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgICBpZiAoIWhhc0xpc3RlbmVyKSB7XG4gICAg
ICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB2YXIgdGFyZ2V0Tm9kZSA9IHRhcmdldEluc3Qg
PyBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0YXJnZXRJbnN0KSA6
IHdpbmRvdztcblxuICAgIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG4gICAgICAvLyBUcmFjayB0
aGUgaW5wdXQgbm9kZSB0aGF0IGhhcyBmb2N1cy5cbiAgICAgIGNhc2UgJ3RvcEZvY3VzJzpcbiAg
ICAgICAgaWYgKGlzVGV4dElucHV0RWxlbWVudCh0YXJnZXROb2RlKSB8fCB0YXJnZXROb2RlLmNv
bnRlbnRFZGl0YWJsZSA9PT0gJ3RydWUnKSB7XG4gICAgICAgICAgYWN0aXZlRWxlbWVudCA9IHRh
cmdldE5vZGU7XG4gICAgICAgICAgYWN0aXZlRWxlbWVudEluc3QgPSB0YXJnZXRJbnN0O1xuICAg
ICAgICAgIGxhc3RTZWxlY3Rpb24gPSBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xu
ICAgICAgY2FzZSAndG9wQmx1cic6XG4gICAgICAgIGFjdGl2ZUVsZW1lbnQgPSBudWxsO1xuICAg
ICAgICBhY3RpdmVFbGVtZW50SW5zdCA9IG51bGw7XG4gICAgICAgIGxhc3RTZWxlY3Rpb24gPSBu
dWxsO1xuICAgICAgICBicmVhaztcbiAgICAgIC8vIERvbid0IGZpcmUgdGhlIGV2ZW50IHdoaWxl
IHRoZSB1c2VyIGlzIGRyYWdnaW5nLiBUaGlzIG1hdGNoZXMgdGhlXG4gICAgICAvLyBzZW1hbnRp
Y3Mgb2YgdGhlIG5hdGl2ZSBzZWxlY3QgZXZlbnQuXG4gICAgICBjYXNlICd0b3BNb3VzZURvd24n
OlxuICAgICAgICBtb3VzZURvd24gPSB0cnVlO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2Ug
J3RvcENvbnRleHRNZW51JzpcbiAgICAgIGNhc2UgJ3RvcE1vdXNlVXAnOlxuICAgICAgICBtb3Vz
ZURvd24gPSBmYWxzZTtcbiAgICAgICAgcmV0dXJuIGNvbnN0cnVjdFNlbGVjdEV2ZW50KG5hdGl2
ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG4gICAgICAvLyBDaHJvbWUgYW5kIElFIGZpcmUg
bm9uLXN0YW5kYXJkIGV2ZW50IHdoZW4gc2VsZWN0aW9uIGlzIGNoYW5nZWQgKGFuZFxuICAgICAg
Ly8gc29tZXRpbWVzIHdoZW4gaXQgaGFzbid0KS4gSUUncyBldmVudCBmaXJlcyBvdXQgb2Ygb3Jk
ZXIgd2l0aCByZXNwZWN0XG4gICAgICAvLyB0byBrZXkgYW5kIGlucHV0IGV2ZW50cyBvbiBkZWxl
dGlvbiwgc28gd2UgZGlzY2FyZCBpdC5cbiAgICAgIC8vXG4gICAgICAvLyBGaXJlZm94IGRvZXNu
J3Qgc3VwcG9ydCBzZWxlY3Rpb25jaGFuZ2UsIHNvIGNoZWNrIHNlbGVjdGlvbiBzdGF0dXNcbiAg
ICAgIC8vIGFmdGVyIGVhY2gga2V5IGVudHJ5LiBUaGUgc2VsZWN0aW9uIGNoYW5nZXMgYWZ0ZXIg
a2V5ZG93biBhbmQgYmVmb3JlXG4gICAgICAvLyBrZXl1cCwgYnV0IHdlIGNoZWNrIG9uIGtleWRv
d24gYXMgd2VsbCBpbiB0aGUgY2FzZSBvZiBob2xkaW5nIGRvd24gYVxuICAgICAgLy8ga2V5LCB3
aGVuIG11bHRpcGxlIGtleWRvd24gZXZlbnRzIGFyZSBmaXJlZCBidXQgb25seSBvbmUga2V5dXAg
aXMuXG4gICAgICAvLyBUaGlzIGlzIGFsc28gb3VyIGFwcHJvYWNoIGZvciBJRSBoYW5kbGluZywg
Zm9yIHRoZSByZWFzb24gYWJvdmUuXG4gICAgICBjYXNlICd0b3BTZWxlY3Rpb25DaGFuZ2UnOlxu
ICAgICAgICBpZiAoc2tpcFNlbGVjdGlvbkNoYW5nZUV2ZW50KSB7XG4gICAgICAgICAgYnJlYWs7
XG4gICAgICAgIH1cbiAgICAgIC8vIGZhbGxzIHRocm91Z2hcbiAgICAgIGNhc2UgJ3RvcEtleURv
d24nOlxuICAgICAgY2FzZSAndG9wS2V5VXAnOlxuICAgICAgICByZXR1cm4gY29uc3RydWN0U2Vs
ZWN0RXZlbnQobmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbiAgICB9XG5cbiAgICBy
ZXR1cm4gbnVsbDtcbiAgfSxcblxuICBkaWRQdXRMaXN0ZW5lcjogZnVuY3Rpb24gKGluc3QsIHJl
Z2lzdHJhdGlvbk5hbWUsIGxpc3RlbmVyKSB7XG4gICAgaWYgKHJlZ2lzdHJhdGlvbk5hbWUgPT09
ICdvblNlbGVjdCcpIHtcbiAgICAgIGhhc0xpc3RlbmVyID0gdHJ1ZTtcbiAgICB9XG4gIH1cbn07
XG5cbm1vZHVsZS5leHBvcnRzID0gU2VsZWN0RXZlbnRQbHVnaW47XG5cblxuLyoqKioqKioqKioq
KioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9TZWxlY3RF
dmVudFBsdWdpbi5qc1xuICoqIG1vZHVsZSBpZCA9IDE2NVxuICoqIG1vZHVsZSBjaHVua3MgPSAw
XG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJp
Y3QnO1xuXG52YXIgX3Byb2RJbnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFu
dCcpO1xuXG52YXIgRXZlbnRMaXN0ZW5lciA9IHJlcXVpcmUoJ2ZianMvbGliL0V2ZW50TGlzdGVu
ZXInKTtcbnZhciBFdmVudFByb3BhZ2F0b3JzID0gcmVxdWlyZSgnLi9FdmVudFByb3BhZ2F0b3Jz
Jyk7XG52YXIgUmVhY3RET01Db21wb25lbnRUcmVlID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBv
bmVudFRyZWUnKTtcbnZhciBTeW50aGV0aWNBbmltYXRpb25FdmVudCA9IHJlcXVpcmUoJy4vU3lu
dGhldGljQW5pbWF0aW9uRXZlbnQnKTtcbnZhciBTeW50aGV0aWNDbGlwYm9hcmRFdmVudCA9IHJl
cXVpcmUoJy4vU3ludGhldGljQ2xpcGJvYXJkRXZlbnQnKTtcbnZhciBTeW50aGV0aWNFdmVudCA9
IHJlcXVpcmUoJy4vU3ludGhldGljRXZlbnQnKTtcbnZhciBTeW50aGV0aWNGb2N1c0V2ZW50ID0g
cmVxdWlyZSgnLi9TeW50aGV0aWNGb2N1c0V2ZW50Jyk7XG52YXIgU3ludGhldGljS2V5Ym9hcmRF
dmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljS2V5Ym9hcmRFdmVudCcpO1xudmFyIFN5bnRoZXRp
Y01vdXNlRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY01vdXNlRXZlbnQnKTtcbnZhciBTeW50
aGV0aWNEcmFnRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0RyYWdFdmVudCcpO1xudmFyIFN5
bnRoZXRpY1RvdWNoRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY1RvdWNoRXZlbnQnKTtcbnZh
ciBTeW50aGV0aWNUcmFuc2l0aW9uRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY1RyYW5zaXRp
b25FdmVudCcpO1xudmFyIFN5bnRoZXRpY1VJRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY1VJ
RXZlbnQnKTtcbnZhciBTeW50aGV0aWNXaGVlbEV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNX
aGVlbEV2ZW50Jyk7XG5cbnZhciBlbXB0eUZ1bmN0aW9uID0gcmVxdWlyZSgnZmJqcy9saWIvZW1w
dHlGdW5jdGlvbicpO1xudmFyIGdldEV2ZW50Q2hhckNvZGUgPSByZXF1aXJlKCcuL2dldEV2ZW50
Q2hhckNvZGUnKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQn
KTtcblxuLyoqXG4gKiBUdXJuc1xuICogWydhYm9ydCcsIC4uLl1cbiAqIGludG9cbiAqIGV2ZW50
VHlwZXMgPSB7XG4gKiAgICdhYm9ydCc6IHtcbiAqICAgICBwaGFzZWRSZWdpc3RyYXRpb25OYW1l
czoge1xuICogICAgICAgYnViYmxlZDogJ29uQWJvcnQnLFxuICogICAgICAgY2FwdHVyZWQ6ICdv
bkFib3J0Q2FwdHVyZScsXG4gKiAgICAgfSxcbiAqICAgICBkZXBlbmRlbmNpZXM6IFsndG9wQWJv
cnQnXSxcbiAqICAgfSxcbiAqICAgLi4uXG4gKiB9O1xuICogdG9wTGV2ZWxFdmVudHNUb0Rpc3Bh
dGNoQ29uZmlnID0ge1xuICogICAndG9wQWJvcnQnOiB7IHNhbWVDb25maWcgfVxuICogfTtcbiAq
L1xudmFyIGV2ZW50VHlwZXMgPSB7fTtcbnZhciB0b3BMZXZlbEV2ZW50c1RvRGlzcGF0Y2hDb25m
aWcgPSB7fTtcblsnYWJvcnQnLCAnYW5pbWF0aW9uRW5kJywgJ2FuaW1hdGlvbkl0ZXJhdGlvbics
ICdhbmltYXRpb25TdGFydCcsICdibHVyJywgJ2NhblBsYXknLCAnY2FuUGxheVRocm91Z2gnLCAn
Y2xpY2snLCAnY29udGV4dE1lbnUnLCAnY29weScsICdjdXQnLCAnZG91YmxlQ2xpY2snLCAnZHJh
ZycsICdkcmFnRW5kJywgJ2RyYWdFbnRlcicsICdkcmFnRXhpdCcsICdkcmFnTGVhdmUnLCAnZHJh
Z092ZXInLCAnZHJhZ1N0YXJ0JywgJ2Ryb3AnLCAnZHVyYXRpb25DaGFuZ2UnLCAnZW1wdGllZCcs
ICdlbmNyeXB0ZWQnLCAnZW5kZWQnLCAnZXJyb3InLCAnZm9jdXMnLCAnaW5wdXQnLCAnaW52YWxp
ZCcsICdrZXlEb3duJywgJ2tleVByZXNzJywgJ2tleVVwJywgJ2xvYWQnLCAnbG9hZGVkRGF0YScs
ICdsb2FkZWRNZXRhZGF0YScsICdsb2FkU3RhcnQnLCAnbW91c2VEb3duJywgJ21vdXNlTW92ZScs
ICdtb3VzZU91dCcsICdtb3VzZU92ZXInLCAnbW91c2VVcCcsICdwYXN0ZScsICdwYXVzZScsICdw
bGF5JywgJ3BsYXlpbmcnLCAncHJvZ3Jlc3MnLCAncmF0ZUNoYW5nZScsICdyZXNldCcsICdzY3Jv
bGwnLCAnc2Vla2VkJywgJ3NlZWtpbmcnLCAnc3RhbGxlZCcsICdzdWJtaXQnLCAnc3VzcGVuZCcs
ICd0aW1lVXBkYXRlJywgJ3RvdWNoQ2FuY2VsJywgJ3RvdWNoRW5kJywgJ3RvdWNoTW92ZScsICd0
b3VjaFN0YXJ0JywgJ3RyYW5zaXRpb25FbmQnLCAndm9sdW1lQ2hhbmdlJywgJ3dhaXRpbmcnLCAn
d2hlZWwnXS5mb3JFYWNoKGZ1bmN0aW9uIChldmVudCkge1xuICB2YXIgY2FwaXRhbGl6ZWRFdmVu
dCA9IGV2ZW50WzBdLnRvVXBwZXJDYXNlKCkgKyBldmVudC5zbGljZSgxKTtcbiAgdmFyIG9uRXZl
bnQgPSAnb24nICsgY2FwaXRhbGl6ZWRFdmVudDtcbiAgdmFyIHRvcEV2ZW50ID0gJ3RvcCcgKyBj
YXBpdGFsaXplZEV2ZW50O1xuXG4gIHZhciB0eXBlID0ge1xuICAgIHBoYXNlZFJlZ2lzdHJhdGlv
bk5hbWVzOiB7XG4gICAgICBidWJibGVkOiBvbkV2ZW50LFxuICAgICAgY2FwdHVyZWQ6IG9uRXZl
bnQgKyAnQ2FwdHVyZSdcbiAgICB9LFxuICAgIGRlcGVuZGVuY2llczogW3RvcEV2ZW50XVxuICB9
O1xuICBldmVudFR5cGVzW2V2ZW50XSA9IHR5cGU7XG4gIHRvcExldmVsRXZlbnRzVG9EaXNwYXRj
aENvbmZpZ1t0b3BFdmVudF0gPSB0eXBlO1xufSk7XG5cbnZhciBvbkNsaWNrTGlzdGVuZXJzID0g
e307XG5cbmZ1bmN0aW9uIGdldERpY3Rpb25hcnlLZXkoaW5zdCkge1xuICAvLyBQcmV2ZW50cyBW
OCBwZXJmb3JtYW5jZSBpc3N1ZTpcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3Jl
YWN0L3B1bGwvNzIzMlxuICByZXR1cm4gJy4nICsgaW5zdC5fcm9vdE5vZGVJRDtcbn1cblxuZnVu
Y3Rpb24gaXNJbnRlcmFjdGl2ZSh0YWcpIHtcbiAgcmV0dXJuIHRhZyA9PT0gJ2J1dHRvbicgfHwg
dGFnID09PSAnaW5wdXQnIHx8IHRhZyA9PT0gJ3NlbGVjdCcgfHwgdGFnID09PSAndGV4dGFyZWEn
O1xufVxuXG52YXIgU2ltcGxlRXZlbnRQbHVnaW4gPSB7XG4gIGV2ZW50VHlwZXM6IGV2ZW50VHlw
ZXMsXG5cbiAgZXh0cmFjdEV2ZW50czogZnVuY3Rpb24gKHRvcExldmVsVHlwZSwgdGFyZ2V0SW5z
dCwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gICAgdmFyIGRpc3BhdGNoQ29u
ZmlnID0gdG9wTGV2ZWxFdmVudHNUb0Rpc3BhdGNoQ29uZmlnW3RvcExldmVsVHlwZV07XG4gICAg
aWYgKCFkaXNwYXRjaENvbmZpZykge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZh
ciBFdmVudENvbnN0cnVjdG9yO1xuICAgIHN3aXRjaCAodG9wTGV2ZWxUeXBlKSB7XG4gICAgICBj
YXNlICd0b3BBYm9ydCc6XG4gICAgICBjYXNlICd0b3BDYW5QbGF5JzpcbiAgICAgIGNhc2UgJ3Rv
cENhblBsYXlUaHJvdWdoJzpcbiAgICAgIGNhc2UgJ3RvcER1cmF0aW9uQ2hhbmdlJzpcbiAgICAg
IGNhc2UgJ3RvcEVtcHRpZWQnOlxuICAgICAgY2FzZSAndG9wRW5jcnlwdGVkJzpcbiAgICAgIGNh
c2UgJ3RvcEVuZGVkJzpcbiAgICAgIGNhc2UgJ3RvcEVycm9yJzpcbiAgICAgIGNhc2UgJ3RvcElu
cHV0JzpcbiAgICAgIGNhc2UgJ3RvcEludmFsaWQnOlxuICAgICAgY2FzZSAndG9wTG9hZCc6XG4g
ICAgICBjYXNlICd0b3BMb2FkZWREYXRhJzpcbiAgICAgIGNhc2UgJ3RvcExvYWRlZE1ldGFkYXRh
JzpcbiAgICAgIGNhc2UgJ3RvcExvYWRTdGFydCc6XG4gICAgICBjYXNlICd0b3BQYXVzZSc6XG4g
ICAgICBjYXNlICd0b3BQbGF5JzpcbiAgICAgIGNhc2UgJ3RvcFBsYXlpbmcnOlxuICAgICAgY2Fz
ZSAndG9wUHJvZ3Jlc3MnOlxuICAgICAgY2FzZSAndG9wUmF0ZUNoYW5nZSc6XG4gICAgICBjYXNl
ICd0b3BSZXNldCc6XG4gICAgICBjYXNlICd0b3BTZWVrZWQnOlxuICAgICAgY2FzZSAndG9wU2Vl
a2luZyc6XG4gICAgICBjYXNlICd0b3BTdGFsbGVkJzpcbiAgICAgIGNhc2UgJ3RvcFN1Ym1pdCc6
XG4gICAgICBjYXNlICd0b3BTdXNwZW5kJzpcbiAgICAgIGNhc2UgJ3RvcFRpbWVVcGRhdGUnOlxu
ICAgICAgY2FzZSAndG9wVm9sdW1lQ2hhbmdlJzpcbiAgICAgIGNhc2UgJ3RvcFdhaXRpbmcnOlxu
ICAgICAgICAvLyBIVE1MIEV2ZW50c1xuICAgICAgICAvLyBAc2VlIGh0dHA6Ly93d3cudzMub3Jn
L1RSL2h0bWw1L2luZGV4Lmh0bWwjZXZlbnRzLTBcbiAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9
IFN5bnRoZXRpY0V2ZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvcEtleVByZXNz
JzpcbiAgICAgICAgLy8gRmlyZWZveCBjcmVhdGVzIGEga2V5cHJlc3MgZXZlbnQgZm9yIGZ1bmN0
aW9uIGtleXMgdG9vLiBUaGlzIHJlbW92ZXNcbiAgICAgICAgLy8gdGhlIHVud2FudGVkIGtleXBy
ZXNzIGV2ZW50cy4gRW50ZXIgaXMgaG93ZXZlciBib3RoIHByaW50YWJsZSBhbmRcbiAgICAgICAg
Ly8gbm9uLXByaW50YWJsZS4gT25lIHdvdWxkIGV4cGVjdCBUYWIgdG8gYmUgYXMgd2VsbCAoYnV0
IGl0IGlzbid0KS5cbiAgICAgICAgaWYgKGdldEV2ZW50Q2hhckNvZGUobmF0aXZlRXZlbnQpID09
PSAwKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgIC8qIGZhbGxz
IHRocm91Z2ggKi9cbiAgICAgIGNhc2UgJ3RvcEtleURvd24nOlxuICAgICAgY2FzZSAndG9wS2V5
VXAnOlxuICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljS2V5Ym9hcmRFdmVudDtc
biAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0b3BCbHVyJzpcbiAgICAgIGNhc2UgJ3RvcEZv
Y3VzJzpcbiAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5bnRoZXRpY0ZvY3VzRXZlbnQ7XG4g
ICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9wQ2xpY2snOlxuICAgICAgICAvLyBGaXJlZm94
IGNyZWF0ZXMgYSBjbGljayBldmVudCBvbiByaWdodCBtb3VzZSBjbGlja3MuIFRoaXMgcmVtb3Zl
cyB0aGVcbiAgICAgICAgLy8gdW53YW50ZWQgY2xpY2sgZXZlbnRzLlxuICAgICAgICBpZiAobmF0
aXZlRXZlbnQuYnV0dG9uID09PSAyKSB7XG4gICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAg
IH1cbiAgICAgIC8qIGZhbGxzIHRocm91Z2ggKi9cbiAgICAgIGNhc2UgJ3RvcERvdWJsZUNsaWNr
JzpcbiAgICAgIGNhc2UgJ3RvcE1vdXNlRG93bic6XG4gICAgICBjYXNlICd0b3BNb3VzZU1vdmUn
OlxuICAgICAgY2FzZSAndG9wTW91c2VVcCc6XG4gICAgICAvLyBUT0RPOiBEaXNhYmxlZCBlbGVt
ZW50cyBzaG91bGQgbm90IHJlc3BvbmQgdG8gbW91c2UgZXZlbnRzXG4gICAgICAvKiBmYWxscyB0
aHJvdWdoICovXG4gICAgICBjYXNlICd0b3BNb3VzZU91dCc6XG4gICAgICBjYXNlICd0b3BNb3Vz
ZU92ZXInOlxuICAgICAgY2FzZSAndG9wQ29udGV4dE1lbnUnOlxuICAgICAgICBFdmVudENvbnN0
cnVjdG9yID0gU3ludGhldGljTW91c2VFdmVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNl
ICd0b3BEcmFnJzpcbiAgICAgIGNhc2UgJ3RvcERyYWdFbmQnOlxuICAgICAgY2FzZSAndG9wRHJh
Z0VudGVyJzpcbiAgICAgIGNhc2UgJ3RvcERyYWdFeGl0JzpcbiAgICAgIGNhc2UgJ3RvcERyYWdM
ZWF2ZSc6XG4gICAgICBjYXNlICd0b3BEcmFnT3Zlcic6XG4gICAgICBjYXNlICd0b3BEcmFnU3Rh
cnQnOlxuICAgICAgY2FzZSAndG9wRHJvcCc6XG4gICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBT
eW50aGV0aWNEcmFnRXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9wVG91Y2hD
YW5jZWwnOlxuICAgICAgY2FzZSAndG9wVG91Y2hFbmQnOlxuICAgICAgY2FzZSAndG9wVG91Y2hN
b3ZlJzpcbiAgICAgIGNhc2UgJ3RvcFRvdWNoU3RhcnQnOlxuICAgICAgICBFdmVudENvbnN0cnVj
dG9yID0gU3ludGhldGljVG91Y2hFdmVudDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICd0
b3BBbmltYXRpb25FbmQnOlxuICAgICAgY2FzZSAndG9wQW5pbWF0aW9uSXRlcmF0aW9uJzpcbiAg
ICAgIGNhc2UgJ3RvcEFuaW1hdGlvblN0YXJ0JzpcbiAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9
IFN5bnRoZXRpY0FuaW1hdGlvbkV2ZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3Rv
cFRyYW5zaXRpb25FbmQnOlxuICAgICAgICBFdmVudENvbnN0cnVjdG9yID0gU3ludGhldGljVHJh
bnNpdGlvbkV2ZW50O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgJ3RvcFNjcm9sbCc6XG4g
ICAgICAgIEV2ZW50Q29uc3RydWN0b3IgPSBTeW50aGV0aWNVSUV2ZW50O1xuICAgICAgICBicmVh
aztcbiAgICAgIGNhc2UgJ3RvcFdoZWVsJzpcbiAgICAgICAgRXZlbnRDb25zdHJ1Y3RvciA9IFN5
bnRoZXRpY1doZWVsRXZlbnQ7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAndG9wQ29weSc6
XG4gICAgICBjYXNlICd0b3BDdXQnOlxuICAgICAgY2FzZSAndG9wUGFzdGUnOlxuICAgICAgICBF
dmVudENvbnN0cnVjdG9yID0gU3ludGhldGljQ2xpcGJvYXJkRXZlbnQ7XG4gICAgICAgIGJyZWFr
O1xuICAgIH1cbiAgICAhRXZlbnRDb25zdHJ1Y3RvciA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9
PSAncHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdTaW1wbGVFdmVudFBsdWdpbjogVW5o
YW5kbGVkIGV2ZW50IHR5cGUsIGAlc2AuJywgdG9wTGV2ZWxUeXBlKSA6IF9wcm9kSW52YXJpYW50
KCc4NicsIHRvcExldmVsVHlwZSkgOiB2b2lkIDA7XG4gICAgdmFyIGV2ZW50ID0gRXZlbnRDb25z
dHJ1Y3Rvci5nZXRQb29sZWQoZGlzcGF0Y2hDb25maWcsIHRhcmdldEluc3QsIG5hdGl2ZUV2ZW50
LCBuYXRpdmVFdmVudFRhcmdldCk7XG4gICAgRXZlbnRQcm9wYWdhdG9ycy5hY2N1bXVsYXRlVHdv
UGhhc2VEaXNwYXRjaGVzKGV2ZW50KTtcbiAgICByZXR1cm4gZXZlbnQ7XG4gIH0sXG5cbiAgZGlk
UHV0TGlzdGVuZXI6IGZ1bmN0aW9uIChpbnN0LCByZWdpc3RyYXRpb25OYW1lLCBsaXN0ZW5lcikg
e1xuICAgIC8vIE1vYmlsZSBTYWZhcmkgZG9lcyBub3QgZmlyZSBwcm9wZXJseSBidWJibGUgY2xp
Y2sgZXZlbnRzIG9uXG4gICAgLy8gbm9uLWludGVyYWN0aXZlIGVsZW1lbnRzLCB3aGljaCBtZWFu
cyBkZWxlZ2F0ZWQgY2xpY2sgbGlzdGVuZXJzIGRvIG5vdFxuICAgIC8vIGZpcmUuIFRoZSB3b3Jr
YXJvdW5kIGZvciB0aGlzIGJ1ZyBpbnZvbHZlcyBhdHRhY2hpbmcgYW4gZW1wdHkgY2xpY2tcbiAg
ICAvLyBsaXN0ZW5lciBvbiB0aGUgdGFyZ2V0IG5vZGUuXG4gICAgLy8gaHR0cDovL3d3dy5xdWly
a3Ntb2RlLm9yZy9ibG9nL2FyY2hpdmVzLzIwMTAvMDkvY2xpY2tfZXZlbnRfZGVsLmh0bWxcbiAg
ICBpZiAocmVnaXN0cmF0aW9uTmFtZSA9PT0gJ29uQ2xpY2snICYmICFpc0ludGVyYWN0aXZlKGlu
c3QuX3RhZykpIHtcbiAgICAgIHZhciBrZXkgPSBnZXREaWN0aW9uYXJ5S2V5KGluc3QpO1xuICAg
ICAgdmFyIG5vZGUgPSBSZWFjdERPTUNvbXBvbmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShp
bnN0KTtcbiAgICAgIGlmICghb25DbGlja0xpc3RlbmVyc1trZXldKSB7XG4gICAgICAgIG9uQ2xp
Y2tMaXN0ZW5lcnNba2V5XSA9IEV2ZW50TGlzdGVuZXIubGlzdGVuKG5vZGUsICdjbGljaycsIGVt
cHR5RnVuY3Rpb24pO1xuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICB3aWxsRGVsZXRlTGlzdGVu
ZXI6IGZ1bmN0aW9uIChpbnN0LCByZWdpc3RyYXRpb25OYW1lKSB7XG4gICAgaWYgKHJlZ2lzdHJh
dGlvbk5hbWUgPT09ICdvbkNsaWNrJyAmJiAhaXNJbnRlcmFjdGl2ZShpbnN0Ll90YWcpKSB7XG4g
ICAgICB2YXIga2V5ID0gZ2V0RGljdGlvbmFyeUtleShpbnN0KTtcbiAgICAgIG9uQ2xpY2tMaXN0
ZW5lcnNba2V5XS5yZW1vdmUoKTtcbiAgICAgIGRlbGV0ZSBvbkNsaWNrTGlzdGVuZXJzW2tleV07
XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IFNpbXBsZUV2ZW50UGx1Z2luO1xu
XG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0
LWRvbS9saWIvU2ltcGxlRXZlbnRQbHVnaW4uanNcbiAqKiBtb2R1bGUgaWQgPSAxNjZcbiAqKiBt
b2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwg
RmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3Vy
Y2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4g
dGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNl
IHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZv
dW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xu
XG4ndXNlIHN0cmljdCc7XG5cbnZhciBTeW50aGV0aWNFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhl
dGljRXZlbnQnKTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIEV2ZW50XG4gKiBAc2VlIGh0dHA6Ly93
d3cudzMub3JnL1RSL2NzczMtYW5pbWF0aW9ucy8jQW5pbWF0aW9uRXZlbnQtaW50ZXJmYWNlXG4g
KiBAc2VlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9B
bmltYXRpb25FdmVudFxuICovXG52YXIgQW5pbWF0aW9uRXZlbnRJbnRlcmZhY2UgPSB7XG4gIGFu
aW1hdGlvbk5hbWU6IG51bGwsXG4gIGVsYXBzZWRUaW1lOiBudWxsLFxuICBwc2V1ZG9FbGVtZW50
OiBudWxsXG59O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25m
aWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBwYXJhbSB7c3RyaW5n
fSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cbiAq
IEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEBl
eHRlbmRzIHtTeW50aGV0aWNFdmVudH1cbiAqL1xuZnVuY3Rpb24gU3ludGhldGljQW5pbWF0aW9u
RXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZl
RXZlbnRUYXJnZXQpIHtcbiAgcmV0dXJuIFN5bnRoZXRpY0V2ZW50LmNhbGwodGhpcywgZGlzcGF0
Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQp
O1xufVxuXG5TeW50aGV0aWNFdmVudC5hdWdtZW50Q2xhc3MoU3ludGhldGljQW5pbWF0aW9uRXZl
bnQsIEFuaW1hdGlvbkV2ZW50SW50ZXJmYWNlKTtcblxubW9kdWxlLmV4cG9ydHMgPSBTeW50aGV0
aWNBbmltYXRpb25FdmVudDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZP
T1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY0FuaW1hdGlvbkV2ZW50LmpzXG4g
KiogbW9kdWxlIGlkID0gMTY3XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgU3ludGhldGlj
RXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY0V2ZW50Jyk7XG5cbi8qKlxuICogQGludGVyZmFj
ZSBFdmVudFxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9jbGlwYm9hcmQtYXBpcy9cbiAq
L1xudmFyIENsaXBib2FyZEV2ZW50SW50ZXJmYWNlID0ge1xuICBjbGlwYm9hcmREYXRhOiBmdW5j
dGlvbiAoZXZlbnQpIHtcbiAgICByZXR1cm4gJ2NsaXBib2FyZERhdGEnIGluIGV2ZW50ID8gZXZl
bnQuY2xpcGJvYXJkRGF0YSA6IHdpbmRvdy5jbGlwYm9hcmREYXRhO1xuICB9XG59O1xuXG4vKipc
biAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8g
ZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBN
YXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBu
YXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEBleHRlbmRzIHtTeW50aGV0aWNV
SUV2ZW50fVxuICovXG5mdW5jdGlvbiBTeW50aGV0aWNDbGlwYm9hcmRFdmVudChkaXNwYXRjaENv
bmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xu
ICByZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0
Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRp
Y0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNDbGlwYm9hcmRFdmVudCwgQ2xpcGJvYXJkRXZl
bnRJbnRlcmZhY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0NsaXBib2FyZEV2ZW50
O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3Jl
YWN0LWRvbS9saWIvU3ludGhldGljQ2xpcGJvYXJkRXZlbnQuanNcbiAqKiBtb2R1bGUgaWQgPSAx
NjhcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMt
cHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICog
VGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2Ug
Zm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRo
aXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMg
Y2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5Llxu
ICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBTeW50aGV0aWNFdmVudCA9IHJlcXVpcmUo
Jy4vU3ludGhldGljRXZlbnQnKTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIEV2ZW50XG4gKiBAc2Vl
IGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy8jZXZlbnRzLWNvbXBvc2l0
aW9uZXZlbnRzXG4gKi9cbnZhciBDb21wb3NpdGlvbkV2ZW50SW50ZXJmYWNlID0ge1xuICBkYXRh
OiBudWxsXG59O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBkaXNwYXRjaENvbmZpZyBDb25m
aWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5cbiAqIEBwYXJhbSB7c3RyaW5n
fSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhlIGV2ZW50IHRhcmdldC5cbiAq
IEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEBl
eHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fVxuICovXG5mdW5jdGlvbiBTeW50aGV0aWNDb21wb3Np
dGlvbkV2ZW50KGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5h
dGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIHJldHVybiBTeW50aGV0aWNFdmVudC5jYWxsKHRoaXMsIGRp
c3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFy
Z2V0KTtcbn1cblxuU3ludGhldGljRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY0NvbXBvc2l0
aW9uRXZlbnQsIENvbXBvc2l0aW9uRXZlbnRJbnRlcmZhY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9
IFN5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiog
V0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNDb21wb3NpdGlv
bkV2ZW50LmpzXG4gKiogbW9kdWxlIGlkID0gMTY5XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAq
Ki8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBB
bGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQg
dW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxl
IGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFs
IGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBm
aWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52
YXIgU3ludGhldGljTW91c2VFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljTW91c2VFdmVudCcp
O1xuXG4vKipcbiAqIEBpbnRlcmZhY2UgRHJhZ0V2ZW50XG4gKiBAc2VlIGh0dHA6Ly93d3cudzMu
b3JnL1RSL0RPTS1MZXZlbC0zLUV2ZW50cy9cbiAqL1xudmFyIERyYWdFdmVudEludGVyZmFjZSA9
IHtcbiAgZGF0YVRyYW5zZmVyOiBudWxsXG59O1xuXG4vKipcbiAqIEBwYXJhbSB7b2JqZWN0fSBk
aXNwYXRjaENvbmZpZyBDb25maWd1cmF0aW9uIHVzZWQgdG8gZGlzcGF0Y2ggdGhpcyBldmVudC5c
biAqIEBwYXJhbSB7c3RyaW5nfSBkaXNwYXRjaE1hcmtlciBNYXJrZXIgaWRlbnRpZnlpbmcgdGhl
IGV2ZW50IHRhcmdldC5cbiAqIEBwYXJhbSB7b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJv
d3NlciBldmVudC5cbiAqIEBleHRlbmRzIHtTeW50aGV0aWNVSUV2ZW50fVxuICovXG5mdW5jdGlv
biBTeW50aGV0aWNEcmFnRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRp
dmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgcmV0dXJuIFN5bnRoZXRpY01vdXNlRXZl
bnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50
LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRpY01vdXNlRXZlbnQuYXVnbWVudENs
YXNzKFN5bnRoZXRpY0RyYWdFdmVudCwgRHJhZ0V2ZW50SW50ZXJmYWNlKTtcblxubW9kdWxlLmV4
cG9ydHMgPSBTeW50aGV0aWNEcmFnRXZlbnQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiog
V0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNEcmFnRXZlbnQu
anNcbiAqKiBtb2R1bGUgaWQgPSAxNzBcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8q
KlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBTeW50
aGV0aWNVSUV2ZW50ID0gcmVxdWlyZSgnLi9TeW50aGV0aWNVSUV2ZW50Jyk7XG5cbi8qKlxuICog
QGludGVyZmFjZSBGb2N1c0V2ZW50XG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL0RPTS1M
ZXZlbC0zLUV2ZW50cy9cbiAqL1xudmFyIEZvY3VzRXZlbnRJbnRlcmZhY2UgPSB7XG4gIHJlbGF0
ZWRUYXJnZXQ6IG51bGxcbn07XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGRpc3BhdGNoQ29u
ZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuICogQHBhcmFt
IHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZlbnQgdGFy
Z2V0LlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50
LlxuICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9XG4gKi9cbmZ1bmN0aW9uIFN5bnRoZXRp
Y0ZvY3VzRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwg
bmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgcmV0dXJuIFN5bnRoZXRpY1VJRXZlbnQuY2FsbCh0aGlz
LCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVu
dFRhcmdldCk7XG59XG5cblN5bnRoZXRpY1VJRXZlbnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY0Zv
Y3VzRXZlbnQsIEZvY3VzRXZlbnRJbnRlcmZhY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRo
ZXRpY0ZvY3VzRXZlbnQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09U
RVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNGb2N1c0V2ZW50LmpzXG4gKiogbW9k
dWxlIGlkID0gMTcxXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHly
aWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVk
LlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHls
ZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVj
dG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRl
bnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRp
cmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgU3ludGhldGljRXZlbnQg
PSByZXF1aXJlKCcuL1N5bnRoZXRpY0V2ZW50Jyk7XG5cbi8qKlxuICogQGludGVyZmFjZSBFdmVu
dFxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDEzL1dELURPTS1MZXZlbC0zLUV2ZW50
cy0yMDEzMTEwNVxuICogICAgICAvI2V2ZW50cy1pbnB1dGV2ZW50c1xuICovXG52YXIgSW5wdXRF
dmVudEludGVyZmFjZSA9IHtcbiAgZGF0YTogbnVsbFxufTtcblxuLyoqXG4gKiBAcGFyYW0ge29i
amVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMg
ZXZlbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5
aW5nIHRoZSBldmVudCB0YXJnZXQuXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0
aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH1cbiAqL1xu
ZnVuY3Rpb24gU3ludGhldGljSW5wdXRFdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJr
ZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICByZXR1cm4gU3ludGhldGlj
RXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2
ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFz
cyhTeW50aGV0aWNJbnB1dEV2ZW50LCBJbnB1dEV2ZW50SW50ZXJmYWNlKTtcblxubW9kdWxlLmV4
cG9ydHMgPSBTeW50aGV0aWNJbnB1dEV2ZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoq
IFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvU3ludGhldGljSW5wdXRFdmVu
dC5qc1xuICoqIG1vZHVsZSBpZCA9IDE3MlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwi
LyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJp
Z2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIFN5
bnRoZXRpY1VJRXZlbnQgPSByZXF1aXJlKCcuL1N5bnRoZXRpY1VJRXZlbnQnKTtcblxudmFyIGdl
dEV2ZW50Q2hhckNvZGUgPSByZXF1aXJlKCcuL2dldEV2ZW50Q2hhckNvZGUnKTtcbnZhciBnZXRF
dmVudEtleSA9IHJlcXVpcmUoJy4vZ2V0RXZlbnRLZXknKTtcbnZhciBnZXRFdmVudE1vZGlmaWVy
U3RhdGUgPSByZXF1aXJlKCcuL2dldEV2ZW50TW9kaWZpZXJTdGF0ZScpO1xuXG4vKipcbiAqIEBp
bnRlcmZhY2UgS2V5Ym9hcmRFdmVudFxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00t
TGV2ZWwtMy1FdmVudHMvXG4gKi9cbnZhciBLZXlib2FyZEV2ZW50SW50ZXJmYWNlID0ge1xuICBr
ZXk6IGdldEV2ZW50S2V5LFxuICBsb2NhdGlvbjogbnVsbCxcbiAgY3RybEtleTogbnVsbCxcbiAg
c2hpZnRLZXk6IG51bGwsXG4gIGFsdEtleTogbnVsbCxcbiAgbWV0YUtleTogbnVsbCxcbiAgcmVw
ZWF0OiBudWxsLFxuICBsb2NhbGU6IG51bGwsXG4gIGdldE1vZGlmaWVyU3RhdGU6IGdldEV2ZW50
TW9kaWZpZXJTdGF0ZSxcbiAgLy8gTGVnYWN5IEludGVyZmFjZVxuICBjaGFyQ29kZTogZnVuY3Rp
b24gKGV2ZW50KSB7XG4gICAgLy8gYGNoYXJDb2RlYCBpcyB0aGUgcmVzdWx0IG9mIGEgS2V5UHJl
c3MgZXZlbnQgYW5kIHJlcHJlc2VudHMgdGhlIHZhbHVlIG9mXG4gICAgLy8gdGhlIGFjdHVhbCBw
cmludGFibGUgY2hhcmFjdGVyLlxuXG4gICAgLy8gS2V5UHJlc3MgaXMgZGVwcmVjYXRlZCwgYnV0
IGl0cyByZXBsYWNlbWVudCBpcyBub3QgeWV0IGZpbmFsIGFuZCBub3RcbiAgICAvLyBpbXBsZW1l
bnRlZCBpbiBhbnkgbWFqb3IgYnJvd3Nlci4gT25seSBLZXlQcmVzcyBoYXMgY2hhckNvZGUuXG4g
ICAgaWYgKGV2ZW50LnR5cGUgPT09ICdrZXlwcmVzcycpIHtcbiAgICAgIHJldHVybiBnZXRFdmVu
dENoYXJDb2RlKGV2ZW50KTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH0sXG4gIGtleUNvZGU6
IGZ1bmN0aW9uIChldmVudCkge1xuICAgIC8vIGBrZXlDb2RlYCBpcyB0aGUgcmVzdWx0IG9mIGEg
S2V5RG93bi9VcCBldmVudCBhbmQgcmVwcmVzZW50cyB0aGUgdmFsdWUgb2ZcbiAgICAvLyBwaHlz
aWNhbCBrZXlib2FyZCBrZXkuXG5cbiAgICAvLyBUaGUgYWN0dWFsIG1lYW5pbmcgb2YgdGhlIHZh
bHVlIGRlcGVuZHMgb24gdGhlIHVzZXJzJyBrZXlib2FyZCBsYXlvdXRcbiAgICAvLyB3aGljaCBj
YW5ub3QgYmUgZGV0ZWN0ZWQuIEFzc3VtaW5nIHRoYXQgaXQgaXMgYSBVUyBrZXlib2FyZCBsYXlv
dXRcbiAgICAvLyBwcm92aWRlcyBhIHN1cnByaXNpbmdseSBhY2N1cmF0ZSBtYXBwaW5nIGZvciBV
UyBhbmQgRXVyb3BlYW4gdXNlcnMuXG4gICAgLy8gRHVlIHRvIHRoaXMsIGl0IGlzIGxlZnQgdG8g
dGhlIHVzZXIgdG8gaW1wbGVtZW50IGF0IHRoaXMgdGltZS5cbiAgICBpZiAoZXZlbnQudHlwZSA9
PT0gJ2tleWRvd24nIHx8IGV2ZW50LnR5cGUgPT09ICdrZXl1cCcpIHtcbiAgICAgIHJldHVybiBl
dmVudC5rZXlDb2RlO1xuICAgIH1cbiAgICByZXR1cm4gMDtcbiAgfSxcbiAgd2hpY2g6IGZ1bmN0
aW9uIChldmVudCkge1xuICAgIC8vIGB3aGljaGAgaXMgYW4gYWxpYXMgZm9yIGVpdGhlciBga2V5
Q29kZWAgb3IgYGNoYXJDb2RlYCBkZXBlbmRpbmcgb24gdGhlXG4gICAgLy8gdHlwZSBvZiB0aGUg
ZXZlbnQuXG4gICAgaWYgKGV2ZW50LnR5cGUgPT09ICdrZXlwcmVzcycpIHtcbiAgICAgIHJldHVy
biBnZXRFdmVudENoYXJDb2RlKGV2ZW50KTtcbiAgICB9XG4gICAgaWYgKGV2ZW50LnR5cGUgPT09
ICdrZXlkb3duJyB8fCBldmVudC50eXBlID09PSAna2V5dXAnKSB7XG4gICAgICByZXR1cm4gZXZl
bnQua2V5Q29kZTtcbiAgICB9XG4gICAgcmV0dXJuIDA7XG4gIH1cbn07XG5cbi8qKlxuICogQHBh
cmFtIHtvYmplY3R9IGRpc3BhdGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRj
aCB0aGlzIGV2ZW50LlxuICogQHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBp
ZGVudGlmeWluZyB0aGUgZXZlbnQgdGFyZ2V0LlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2
ZW50IE5hdGl2ZSBicm93c2VyIGV2ZW50LlxuICogQGV4dGVuZHMge1N5bnRoZXRpY1VJRXZlbnR9
XG4gKi9cbmZ1bmN0aW9uIFN5bnRoZXRpY0tleWJvYXJkRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRp
c3BhdGNoTWFya2VyLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgcmV0dXJu
IFN5bnRoZXRpY1VJRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJr
ZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRpY1VJRXZl
bnQuYXVnbWVudENsYXNzKFN5bnRoZXRpY0tleWJvYXJkRXZlbnQsIEtleWJvYXJkRXZlbnRJbnRl
cmZhY2UpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFN5bnRoZXRpY0tleWJvYXJkRXZlbnQ7XG5cblxu
LyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9t
L2xpYi9TeW50aGV0aWNLZXlib2FyZEV2ZW50LmpzXG4gKiogbW9kdWxlIGlkID0gMTczXG4gKiog
bW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQs
IEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9c
blxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgU3ludGhldGljVUlFdmVudCA9IHJlcXVpcmUoJy4vU3lu
dGhldGljVUlFdmVudCcpO1xuXG52YXIgZ2V0RXZlbnRNb2RpZmllclN0YXRlID0gcmVxdWlyZSgn
Li9nZXRFdmVudE1vZGlmaWVyU3RhdGUnKTtcblxuLyoqXG4gKiBAaW50ZXJmYWNlIFRvdWNoRXZl
bnRcbiAqIEBzZWUgaHR0cDovL3d3dy53My5vcmcvVFIvdG91Y2gtZXZlbnRzL1xuICovXG52YXIg
VG91Y2hFdmVudEludGVyZmFjZSA9IHtcbiAgdG91Y2hlczogbnVsbCxcbiAgdGFyZ2V0VG91Y2hl
czogbnVsbCxcbiAgY2hhbmdlZFRvdWNoZXM6IG51bGwsXG4gIGFsdEtleTogbnVsbCxcbiAgbWV0
YUtleTogbnVsbCxcbiAgY3RybEtleTogbnVsbCxcbiAgc2hpZnRLZXk6IG51bGwsXG4gIGdldE1v
ZGlmaWVyU3RhdGU6IGdldEV2ZW50TW9kaWZpZXJTdGF0ZVxufTtcblxuLyoqXG4gKiBAcGFyYW0g
e29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJhdGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRo
aXMgZXZlbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gZGlzcGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50
aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG4gKiBAcGFyYW0ge29iamVjdH0gbmF0aXZlRXZlbnQg
TmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBAZXh0ZW5kcyB7U3ludGhldGljVUlFdmVudH1cbiAq
L1xuZnVuY3Rpb24gU3ludGhldGljVG91Y2hFdmVudChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hN
YXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCkge1xuICByZXR1cm4gU3ludGhl
dGljVUlFdmVudC5jYWxsKHRoaXMsIGRpc3BhdGNoQ29uZmlnLCBkaXNwYXRjaE1hcmtlciwgbmF0
aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbn1cblxuU3ludGhldGljVUlFdmVudC5hdWdt
ZW50Q2xhc3MoU3ludGhldGljVG91Y2hFdmVudCwgVG91Y2hFdmVudEludGVyZmFjZSk7XG5cbm1v
ZHVsZS5leHBvcnRzID0gU3ludGhldGljVG91Y2hFdmVudDtcblxuXG4vKioqKioqKioqKioqKioq
KipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL1N5bnRoZXRpY1Rv
dWNoRXZlbnQuanNcbiAqKiBtb2R1bGUgaWQgPSAxNzRcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxu
ICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5c
bnZhciBTeW50aGV0aWNFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljRXZlbnQnKTtcblxuLyoq
XG4gKiBAaW50ZXJmYWNlIEV2ZW50XG4gKiBAc2VlIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDkv
V0QtY3NzMy10cmFuc2l0aW9ucy0yMDA5MDMyMC8jdHJhbnNpdGlvbi1ldmVudHMtXG4gKiBAc2Vl
IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9UcmFuc2l0
aW9uRXZlbnRcbiAqL1xudmFyIFRyYW5zaXRpb25FdmVudEludGVyZmFjZSA9IHtcbiAgcHJvcGVy
dHlOYW1lOiBudWxsLFxuICBlbGFwc2VkVGltZTogbnVsbCxcbiAgcHNldWRvRWxlbWVudDogbnVs
bFxufTtcblxuLyoqXG4gKiBAcGFyYW0ge29iamVjdH0gZGlzcGF0Y2hDb25maWcgQ29uZmlndXJh
dGlvbiB1c2VkIHRvIGRpc3BhdGNoIHRoaXMgZXZlbnQuXG4gKiBAcGFyYW0ge3N0cmluZ30gZGlz
cGF0Y2hNYXJrZXIgTWFya2VyIGlkZW50aWZ5aW5nIHRoZSBldmVudCB0YXJnZXQuXG4gKiBAcGFy
YW0ge29iamVjdH0gbmF0aXZlRXZlbnQgTmF0aXZlIGJyb3dzZXIgZXZlbnQuXG4gKiBAZXh0ZW5k
cyB7U3ludGhldGljRXZlbnR9XG4gKi9cbmZ1bmN0aW9uIFN5bnRoZXRpY1RyYW5zaXRpb25FdmVu
dChkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVu
dFRhcmdldCkge1xuICByZXR1cm4gU3ludGhldGljRXZlbnQuY2FsbCh0aGlzLCBkaXNwYXRjaENv
bmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50LCBuYXRpdmVFdmVudFRhcmdldCk7XG59
XG5cblN5bnRoZXRpY0V2ZW50LmF1Z21lbnRDbGFzcyhTeW50aGV0aWNUcmFuc2l0aW9uRXZlbnQs
IFRyYW5zaXRpb25FdmVudEludGVyZmFjZSk7XG5cbm1vZHVsZS5leHBvcnRzID0gU3ludGhldGlj
VHJhbnNpdGlvbkV2ZW50O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9P
VEVSXG4gKiogLi9+L3JlYWN0LWRvbS9saWIvU3ludGhldGljVHJhbnNpdGlvbkV2ZW50LmpzXG4g
KiogbW9kdWxlIGlkID0gMTc1XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgU3ludGhldGlj
TW91c2VFdmVudCA9IHJlcXVpcmUoJy4vU3ludGhldGljTW91c2VFdmVudCcpO1xuXG4vKipcbiAq
IEBpbnRlcmZhY2UgV2hlZWxFdmVudFxuICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9ET00t
TGV2ZWwtMy1FdmVudHMvXG4gKi9cbnZhciBXaGVlbEV2ZW50SW50ZXJmYWNlID0ge1xuICBkZWx0
YVg6IGZ1bmN0aW9uIChldmVudCkge1xuICAgIHJldHVybiAnZGVsdGFYJyBpbiBldmVudCA/IGV2
ZW50LmRlbHRhWCA6IC8vIEZhbGxiYWNrIHRvIGB3aGVlbERlbHRhWGAgZm9yIFdlYmtpdCBhbmQg
bm9ybWFsaXplIChyaWdodCBpcyBwb3NpdGl2ZSkuXG4gICAgJ3doZWVsRGVsdGFYJyBpbiBldmVu
dCA/IC1ldmVudC53aGVlbERlbHRhWCA6IDA7XG4gIH0sXG4gIGRlbHRhWTogZnVuY3Rpb24gKGV2
ZW50KSB7XG4gICAgcmV0dXJuICdkZWx0YVknIGluIGV2ZW50ID8gZXZlbnQuZGVsdGFZIDogLy8g
RmFsbGJhY2sgdG8gYHdoZWVsRGVsdGFZYCBmb3IgV2Via2l0IGFuZCBub3JtYWxpemUgKGRvd24g
aXMgcG9zaXRpdmUpLlxuICAgICd3aGVlbERlbHRhWScgaW4gZXZlbnQgPyAtZXZlbnQud2hlZWxE
ZWx0YVkgOiAvLyBGYWxsYmFjayB0byBgd2hlZWxEZWx0YWAgZm9yIElFPDkgYW5kIG5vcm1hbGl6
ZSAoZG93biBpcyBwb3NpdGl2ZSkuXG4gICAgJ3doZWVsRGVsdGEnIGluIGV2ZW50ID8gLWV2ZW50
LndoZWVsRGVsdGEgOiAwO1xuICB9LFxuICBkZWx0YVo6IG51bGwsXG5cbiAgLy8gQnJvd3NlcnMg
d2l0aG91dCBcImRlbHRhTW9kZVwiIGlzIHJlcG9ydGluZyBpbiByYXcgd2hlZWwgZGVsdGEgd2hl
cmUgb25lXG4gIC8vIG5vdGNoIG9uIHRoZSBzY3JvbGwgaXMgYWx3YXlzICsvLSAxMjAsIHJvdWdo
bHkgZXF1aXZhbGVudCB0byBwaXhlbHMuXG4gIC8vIEEgZ29vZCBhcHByb3hpbWF0aW9uIG9mIERP
TV9ERUxUQV9MSU5FICgxKSBpcyA1JSBvZiB2aWV3cG9ydCBzaXplIG9yXG4gIC8vIH40MCBwaXhl
bHMsIGZvciBET01fREVMVEFfU0NSRUVOICgyKSBpdCBpcyA4Ny41JSBvZiB2aWV3cG9ydCBzaXpl
LlxuICBkZWx0YU1vZGU6IG51bGxcbn07XG5cbi8qKlxuICogQHBhcmFtIHtvYmplY3R9IGRpc3Bh
dGNoQ29uZmlnIENvbmZpZ3VyYXRpb24gdXNlZCB0byBkaXNwYXRjaCB0aGlzIGV2ZW50LlxuICog
QHBhcmFtIHtzdHJpbmd9IGRpc3BhdGNoTWFya2VyIE1hcmtlciBpZGVudGlmeWluZyB0aGUgZXZl
bnQgdGFyZ2V0LlxuICogQHBhcmFtIHtvYmplY3R9IG5hdGl2ZUV2ZW50IE5hdGl2ZSBicm93c2Vy
IGV2ZW50LlxuICogQGV4dGVuZHMge1N5bnRoZXRpY01vdXNlRXZlbnR9XG4gKi9cbmZ1bmN0aW9u
IFN5bnRoZXRpY1doZWVsRXZlbnQoZGlzcGF0Y2hDb25maWcsIGRpc3BhdGNoTWFya2VyLCBuYXRp
dmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpIHtcbiAgcmV0dXJuIFN5bnRoZXRpY01vdXNlRXZl
bnQuY2FsbCh0aGlzLCBkaXNwYXRjaENvbmZpZywgZGlzcGF0Y2hNYXJrZXIsIG5hdGl2ZUV2ZW50
LCBuYXRpdmVFdmVudFRhcmdldCk7XG59XG5cblN5bnRoZXRpY01vdXNlRXZlbnQuYXVnbWVudENs
YXNzKFN5bnRoZXRpY1doZWVsRXZlbnQsIFdoZWVsRXZlbnRJbnRlcmZhY2UpO1xuXG5tb2R1bGUu
ZXhwb3J0cyA9IFN5bnRoZXRpY1doZWVsRXZlbnQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4g
KiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9TeW50aGV0aWNXaGVlbEV2
ZW50LmpzXG4gKiogbW9kdWxlIGlkID0gMTc2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8i
LCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwg
cmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5k
ZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGlu
IHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdy
YW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxl
IGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKiBcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5c
bnZhciBNT0QgPSA2NTUyMTtcblxuLy8gYWRsZXIzMiBpcyBub3QgY3J5cHRvZ3JhcGhpY2FsbHkg
c3Ryb25nLCBhbmQgaXMgb25seSB1c2VkIHRvIHNhbml0eSBjaGVjayB0aGF0XG4vLyBtYXJrdXAg
Z2VuZXJhdGVkIG9uIHRoZSBzZXJ2ZXIgbWF0Y2hlcyB0aGUgbWFya3VwIGdlbmVyYXRlZCBvbiB0
aGUgY2xpZW50LlxuLy8gVGhpcyBpbXBsZW1lbnRhdGlvbiAoYSBtb2RpZmllZCB2ZXJzaW9uIG9m
IHRoZSBTaGVldEpTIHZlcnNpb24pIGhhcyBiZWVuIG9wdGltaXplZFxuLy8gZm9yIG91ciB1c2Ug
Y2FzZSwgYXQgdGhlIGV4cGVuc2Ugb2YgY29uZm9ybWluZyB0byB0aGUgYWRsZXIzMiBzcGVjaWZp
Y2F0aW9uXG4vLyBmb3Igbm9uLWFzY2lpIGlucHV0cy5cbmZ1bmN0aW9uIGFkbGVyMzIoZGF0YSkg
e1xuICB2YXIgYSA9IDE7XG4gIHZhciBiID0gMDtcbiAgdmFyIGkgPSAwO1xuICB2YXIgbCA9IGRh
dGEubGVuZ3RoO1xuICB2YXIgbSA9IGwgJiB+MHgzO1xuICB3aGlsZSAoaSA8IG0pIHtcbiAgICB2
YXIgbiA9IE1hdGgubWluKGkgKyA0MDk2LCBtKTtcbiAgICBmb3IgKDsgaSA8IG47IGkgKz0gNCkg
e1xuICAgICAgYiArPSAoYSArPSBkYXRhLmNoYXJDb2RlQXQoaSkpICsgKGEgKz0gZGF0YS5jaGFy
Q29kZUF0KGkgKyAxKSkgKyAoYSArPSBkYXRhLmNoYXJDb2RlQXQoaSArIDIpKSArIChhICs9IGRh
dGEuY2hhckNvZGVBdChpICsgMykpO1xuICAgIH1cbiAgICBhICU9IE1PRDtcbiAgICBiICU9IE1P
RDtcbiAgfVxuICBmb3IgKDsgaSA8IGw7IGkrKykge1xuICAgIGIgKz0gYSArPSBkYXRhLmNoYXJD
b2RlQXQoaSk7XG4gIH1cbiAgYSAlPSBNT0Q7XG4gIGIgJT0gTU9EO1xuICByZXR1cm4gYSB8IGIg
PDwgMTY7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gYWRsZXIzMjtcblxuXG4vKioqKioqKioqKioq
KioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL2FkbGVyMzIu
anNcbiAqKiBtb2R1bGUgaWQgPSAxNzdcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8q
KlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBDU1NQ
cm9wZXJ0eSA9IHJlcXVpcmUoJy4vQ1NTUHJvcGVydHknKTtcbnZhciB3YXJuaW5nID0gcmVxdWly
ZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG52YXIgaXNVbml0bGVzc051bWJlciA9IENTU1Byb3Bl
cnR5LmlzVW5pdGxlc3NOdW1iZXI7XG52YXIgc3R5bGVXYXJuaW5ncyA9IHt9O1xuXG4vKipcbiAq
IENvbnZlcnQgYSB2YWx1ZSBpbnRvIHRoZSBwcm9wZXIgY3NzIHdyaXRhYmxlIHZhbHVlLiBUaGUg
c3R5bGUgbmFtZSBgbmFtZWBcbiAqIHNob3VsZCBiZSBsb2dpY2FsIChubyBoeXBoZW5zKSwgYXMg
c3BlY2lmaWVkXG4gKiBpbiBgQ1NTUHJvcGVydHkuaXNVbml0bGVzc051bWJlcmAuXG4gKlxuICog
QHBhcmFtIHtzdHJpbmd9IG5hbWUgQ1NTIHByb3BlcnR5IG5hbWUgc3VjaCBhcyBgdG9wTWFyZ2lu
YC5cbiAqIEBwYXJhbSB7Kn0gdmFsdWUgQ1NTIHByb3BlcnR5IHZhbHVlIHN1Y2ggYXMgYDEwcHhg
LlxuICogQHBhcmFtIHtSZWFjdERPTUNvbXBvbmVudH0gY29tcG9uZW50XG4gKiBAcmV0dXJuIHtz
dHJpbmd9IE5vcm1hbGl6ZWQgc3R5bGUgdmFsdWUgd2l0aCBkaW1lbnNpb25zIGFwcGxpZWQuXG4g
Ki9cbmZ1bmN0aW9uIGRhbmdlcm91c1N0eWxlVmFsdWUobmFtZSwgdmFsdWUsIGNvbXBvbmVudCwg
aXNDdXN0b21Qcm9wZXJ0eSkge1xuICAvLyBOb3RlIHRoYXQgd2UndmUgcmVtb3ZlZCBlc2NhcGVU
ZXh0Rm9yQnJvd3NlcigpIGNhbGxzIGhlcmUgc2luY2UgdGhlXG4gIC8vIHdob2xlIHN0cmluZyB3
aWxsIGJlIGVzY2FwZWQgd2hlbiB0aGUgYXR0cmlidXRlIGlzIGluamVjdGVkIGludG9cbiAgLy8g
dGhlIG1hcmt1cC4gSWYgeW91IHByb3ZpZGUgdW5zYWZlIHVzZXIgZGF0YSBoZXJlIHRoZXkgY2Fu
IGluamVjdFxuICAvLyBhcmJpdHJhcnkgQ1NTIHdoaWNoIG1heSBiZSBwcm9ibGVtYXRpYyAoSSBj
b3VsZG4ndCByZXBybyB0aGlzKTpcbiAgLy8gaHR0cHM6Ly93d3cub3dhc3Aub3JnL2luZGV4LnBo
cC9YU1NfRmlsdGVyX0V2YXNpb25fQ2hlYXRfU2hlZXRcbiAgLy8gaHR0cDovL3d3dy50aGVzcGFu
bmVyLmNvLnVrLzIwMDcvMTEvMjYvdWx0aW1hdGUteHNzLWNzcy1pbmplY3Rpb24vXG4gIC8vIFRo
aXMgaXMgbm90IGFuIFhTUyBob2xlIGJ1dCBpbnN0ZWFkIGEgcG90ZW50aWFsIENTUyBpbmplY3Rp
b24gaXNzdWVcbiAgLy8gd2hpY2ggaGFzIGxlYWQgdG8gYSBncmVhdGVyIGRpc2N1c3Npb24gYWJv
dXQgaG93IHdlJ3JlIGdvaW5nIHRvXG4gIC8vIHRydXN0IFVSTHMgbW92aW5nIGZvcndhcmQuIFNl
ZSAjMjExNTkwMVxuXG4gIHZhciBpc0VtcHR5ID0gdmFsdWUgPT0gbnVsbCB8fCB0eXBlb2YgdmFs
dWUgPT09ICdib29sZWFuJyB8fCB2YWx1ZSA9PT0gJyc7XG4gIGlmIChpc0VtcHR5KSB7XG4gICAg
cmV0dXJuICcnO1xuICB9XG5cbiAgdmFyIGlzTm9uTnVtZXJpYyA9IGlzTmFOKHZhbHVlKTtcbiAg
aWYgKGlzQ3VzdG9tUHJvcGVydHkgfHwgaXNOb25OdW1lcmljIHx8IHZhbHVlID09PSAwIHx8IGlz
VW5pdGxlc3NOdW1iZXIuaGFzT3duUHJvcGVydHkobmFtZSkgJiYgaXNVbml0bGVzc051bWJlcltu
YW1lXSkge1xuICAgIHJldHVybiAnJyArIHZhbHVlOyAvLyBjYXN0IHRvIHN0cmluZ1xuICB9XG5c
biAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgLy8gQWxsb3cgJzAnIHRvIHBhc3Mg
dGhyb3VnaCB3aXRob3V0IHdhcm5pbmcuIDAgaXMgYWxyZWFkeSBzcGVjaWFsIGFuZFxuICAgICAg
Ly8gZG9lc24ndCByZXF1aXJlIHVuaXRzLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHdhcm4gYWJvdXQg
aXQuXG4gICAgICBpZiAoY29tcG9uZW50ICYmIHZhbHVlICE9PSAnMCcpIHtcbiAgICAgICAgdmFy
IG93bmVyID0gY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC5fb3duZXI7XG4gICAgICAgIHZhciBv
d25lck5hbWUgPSBvd25lciA/IG93bmVyLmdldE5hbWUoKSA6IG51bGw7XG4gICAgICAgIGlmIChv
d25lck5hbWUgJiYgIXN0eWxlV2FybmluZ3Nbb3duZXJOYW1lXSkge1xuICAgICAgICAgIHN0eWxl
V2FybmluZ3Nbb3duZXJOYW1lXSA9IHt9O1xuICAgICAgICB9XG4gICAgICAgIHZhciB3YXJuZWQg
PSBmYWxzZTtcbiAgICAgICAgaWYgKG93bmVyTmFtZSkge1xuICAgICAgICAgIHZhciB3YXJuaW5n
cyA9IHN0eWxlV2FybmluZ3Nbb3duZXJOYW1lXTtcbiAgICAgICAgICB3YXJuZWQgPSB3YXJuaW5n
c1tuYW1lXTtcbiAgICAgICAgICBpZiAoIXdhcm5lZCkge1xuICAgICAgICAgICAgd2FybmluZ3Nb
bmFtZV0gPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoIXdhcm5l
ZCkge1xuICAgICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgPyB3
YXJuaW5nKGZhbHNlLCAnYSBgJXNgIHRhZyAob3duZXI6IGAlc2ApIHdhcyBwYXNzZWQgYSBudW1l
cmljIHN0cmluZyB2YWx1ZSAnICsgJ2ZvciBDU1MgcHJvcGVydHkgYCVzYCAodmFsdWU6IGAlc2Ap
IHdoaWNoIHdpbGwgYmUgdHJlYXRlZCAnICsgJ2FzIGEgdW5pdGxlc3MgbnVtYmVyIGluIGEgZnV0
dXJlIHZlcnNpb24gb2YgUmVhY3QuJywgY29tcG9uZW50Ll9jdXJyZW50RWxlbWVudC50eXBlLCBv
d25lck5hbWUgfHwgJ3Vua25vd24nLCBuYW1lLCB2YWx1ZSkgOiB2b2lkIDA7XG4gICAgICAgIH1c
biAgICAgIH1cbiAgICB9XG4gICAgdmFsdWUgPSB2YWx1ZS50cmltKCk7XG4gIH1cbiAgcmV0dXJu
IHZhbHVlICsgJ3B4Jztcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBkYW5nZXJvdXNTdHlsZVZhbHVl
O1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3Jl
YWN0LWRvbS9saWIvZGFuZ2Vyb3VzU3R5bGVWYWx1ZS5qc1xuICoqIG1vZHVsZSBpZCA9IDE3OFxu
ICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVz
ZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlz
IHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3Vu
ZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBz
b3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4g
YmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxu
ICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9y
ZWFjdFByb2RJbnZhcmlhbnQnKTtcblxudmFyIFJlYWN0Q3VycmVudE93bmVyID0gcmVxdWlyZSgn
cmVhY3QvbGliL1JlYWN0Q3VycmVudE93bmVyJyk7XG52YXIgUmVhY3RET01Db21wb25lbnRUcmVl
ID0gcmVxdWlyZSgnLi9SZWFjdERPTUNvbXBvbmVudFRyZWUnKTtcbnZhciBSZWFjdEluc3RhbmNl
TWFwID0gcmVxdWlyZSgnLi9SZWFjdEluc3RhbmNlTWFwJyk7XG5cbnZhciBnZXRIb3N0Q29tcG9u
ZW50RnJvbUNvbXBvc2l0ZSA9IHJlcXVpcmUoJy4vZ2V0SG9zdENvbXBvbmVudEZyb21Db21wb3Np
dGUnKTtcbnZhciBpbnZhcmlhbnQgPSByZXF1aXJlKCdmYmpzL2xpYi9pbnZhcmlhbnQnKTtcbnZh
ciB3YXJuaW5nID0gcmVxdWlyZSgnZmJqcy9saWIvd2FybmluZycpO1xuXG4vKipcbiAqIFJldHVy
bnMgdGhlIERPTSBub2RlIHJlbmRlcmVkIGJ5IHRoaXMgZWxlbWVudC5cbiAqXG4gKiBTZWUgaHR0
cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVh
Y3Rkb20uZmluZGRvbW5vZGVcbiAqXG4gKiBAcGFyYW0ge1JlYWN0Q29tcG9uZW50fERPTUVsZW1l
bnR9IGNvbXBvbmVudE9yRWxlbWVudFxuICogQHJldHVybiB7P0RPTUVsZW1lbnR9IFRoZSByb290
IG5vZGUgb2YgdGhpcyBlbGVtZW50LlxuICovXG5mdW5jdGlvbiBmaW5kRE9NTm9kZShjb21wb25l
bnRPckVsZW1lbnQpIHtcbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlv
bicpIHtcbiAgICB2YXIgb3duZXIgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50O1xuICAgIGlm
IChvd25lciAhPT0gbnVsbCkge1xuICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9k
dWN0aW9uJyA/IHdhcm5pbmcob3duZXIuX3dhcm5lZEFib3V0UmVmc0luUmVuZGVyLCAnJXMgaXMg
YWNjZXNzaW5nIGZpbmRET01Ob2RlIGluc2lkZSBpdHMgcmVuZGVyKCkuICcgKyAncmVuZGVyKCkg
c2hvdWxkIGJlIGEgcHVyZSBmdW5jdGlvbiBvZiBwcm9wcyBhbmQgc3RhdGUuIEl0IHNob3VsZCAn
ICsgJ25ldmVyIGFjY2VzcyBzb21ldGhpbmcgdGhhdCByZXF1aXJlcyBzdGFsZSBkYXRhIGZyb20g
dGhlIHByZXZpb3VzICcgKyAncmVuZGVyLCBzdWNoIGFzIHJlZnMuIE1vdmUgdGhpcyBsb2dpYyB0
byBjb21wb25lbnREaWRNb3VudCBhbmQgJyArICdjb21wb25lbnREaWRVcGRhdGUgaW5zdGVhZC4n
LCBvd25lci5nZXROYW1lKCkgfHwgJ0EgY29tcG9uZW50JykgOiB2b2lkIDA7XG4gICAgICBvd25l
ci5fd2FybmVkQWJvdXRSZWZzSW5SZW5kZXIgPSB0cnVlO1xuICAgIH1cbiAgfVxuICBpZiAoY29t
cG9uZW50T3JFbGVtZW50ID09IG51bGwpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAo
Y29tcG9uZW50T3JFbGVtZW50Lm5vZGVUeXBlID09PSAxKSB7XG4gICAgcmV0dXJuIGNvbXBvbmVu
dE9yRWxlbWVudDtcbiAgfVxuXG4gIHZhciBpbnN0ID0gUmVhY3RJbnN0YW5jZU1hcC5nZXQoY29t
cG9uZW50T3JFbGVtZW50KTtcbiAgaWYgKGluc3QpIHtcbiAgICBpbnN0ID0gZ2V0SG9zdENvbXBv
bmVudEZyb21Db21wb3NpdGUoaW5zdCk7XG4gICAgcmV0dXJuIGluc3QgPyBSZWFjdERPTUNvbXBv
bmVudFRyZWUuZ2V0Tm9kZUZyb21JbnN0YW5jZShpbnN0KSA6IG51bGw7XG4gIH1cblxuICBpZiAo
dHlwZW9mIGNvbXBvbmVudE9yRWxlbWVudC5yZW5kZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAh
ZmFsc2UgPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gaW52YXJpYW50
KGZhbHNlLCAnZmluZERPTU5vZGUgd2FzIGNhbGxlZCBvbiBhbiB1bm1vdW50ZWQgY29tcG9uZW50
LicpIDogX3Byb2RJbnZhcmlhbnQoJzQ0JykgOiB2b2lkIDA7XG4gIH0gZWxzZSB7XG4gICAgIWZh
bHNlID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGludmFyaWFudChm
YWxzZSwgJ0VsZW1lbnQgYXBwZWFycyB0byBiZSBuZWl0aGVyIFJlYWN0Q29tcG9uZW50IG5vciBE
T01Ob2RlIChrZXlzOiAlcyknLCBPYmplY3Qua2V5cyhjb21wb25lbnRPckVsZW1lbnQpKSA6IF9w
cm9kSW52YXJpYW50KCc0NScsIE9iamVjdC5rZXlzKGNvbXBvbmVudE9yRWxlbWVudCkpIDogdm9p
ZCAwO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZmluZERPTU5vZGU7XG5cblxuLyoqKioq
KioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9m
aW5kRE9NTm9kZS5qc1xuICoqIG1vZHVsZSBpZCA9IDE3OVxuICoqIG1vZHVsZSBjaHVua3MgPSAw
XG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJp
Y3QnO1xuXG52YXIgS2V5RXNjYXBlVXRpbHMgPSByZXF1aXJlKCcuL0tleUVzY2FwZVV0aWxzJyk7
XG52YXIgdHJhdmVyc2VBbGxDaGlsZHJlbiA9IHJlcXVpcmUoJy4vdHJhdmVyc2VBbGxDaGlsZHJl
bicpO1xudmFyIHdhcm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBS
ZWFjdENvbXBvbmVudFRyZWVIb29rO1xuXG5pZiAodHlwZW9mIHByb2Nlc3MgIT09ICd1bmRlZmlu
ZWQnICYmIHByb2Nlc3MuZW52ICYmIHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAndGVzdCcpIHtc
biAgLy8gVGVtcG9yYXJ5IGhhY2suXG4gIC8vIElubGluZSByZXF1aXJlcyBkb24ndCB3b3JrIHdl
bGwgd2l0aCBKZXN0OlxuICAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNz
dWVzLzcyNDBcbiAgLy8gUmVtb3ZlIHRoZSBpbmxpbmUgcmVxdWlyZXMgd2hlbiB3ZSBkb24ndCBu
ZWVkIHRoZW0gYW55bW9yZTpcbiAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0
L3B1bGwvNzE3OFxuICBSZWFjdENvbXBvbmVudFRyZWVIb29rID0gcmVxdWlyZSgncmVhY3QvbGli
L1JlYWN0Q29tcG9uZW50VHJlZUhvb2snKTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge2Z1bmN0aW9u
fSB0cmF2ZXJzZUNvbnRleHQgQ29udGV4dCBwYXNzZWQgdGhyb3VnaCB0cmF2ZXJzYWwuXG4gKiBA
cGFyYW0gez9SZWFjdENvbXBvbmVudH0gY2hpbGQgUmVhY3QgY2hpbGQgY29tcG9uZW50LlxuICog
QHBhcmFtIHshc3RyaW5nfSBuYW1lIFN0cmluZyBuYW1lIG9mIGtleSBwYXRoIHRvIGNoaWxkLlxu
ICogQHBhcmFtIHtudW1iZXI9fSBzZWxmRGVidWdJRCBPcHRpb25hbCBkZWJ1Z0lEIG9mIHRoZSBj
dXJyZW50IGludGVybmFsIGluc3RhbmNlLlxuICovXG5mdW5jdGlvbiBmbGF0dGVuU2luZ2xlQ2hp
bGRJbnRvQ29udGV4dCh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkLCBuYW1lLCBzZWxmRGVidWdJRCkg
e1xuICAvLyBXZSBmb3VuZCBhIGNvbXBvbmVudCBpbnN0YW5jZS5cbiAgaWYgKHRyYXZlcnNlQ29u
dGV4dCAmJiB0eXBlb2YgdHJhdmVyc2VDb250ZXh0ID09PSAnb2JqZWN0Jykge1xuICAgIHZhciBy
ZXN1bHQgPSB0cmF2ZXJzZUNvbnRleHQ7XG4gICAgdmFyIGtleVVuaXF1ZSA9IHJlc3VsdFtuYW1l
XSA9PT0gdW5kZWZpbmVkO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1
Y3Rpb24nKSB7XG4gICAgICBpZiAoIVJlYWN0Q29tcG9uZW50VHJlZUhvb2spIHtcbiAgICAgICAg
UmVhY3RDb21wb25lbnRUcmVlSG9vayA9IHJlcXVpcmUoJ3JlYWN0L2xpYi9SZWFjdENvbXBvbmVu
dFRyZWVIb29rJyk7XG4gICAgICB9XG4gICAgICBpZiAoIWtleVVuaXF1ZSkge1xuICAgICAgICBw
cm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nID8gd2FybmluZyhmYWxzZSwgJ2Zs
YXR0ZW5DaGlsZHJlbiguLi4pOiBFbmNvdW50ZXJlZCB0d28gY2hpbGRyZW4gd2l0aCB0aGUgc2Ft
ZSBrZXksICcgKyAnYCVzYC4gQ2hpbGQga2V5cyBtdXN0IGJlIHVuaXF1ZTsgd2hlbiB0d28gY2hp
bGRyZW4gc2hhcmUgYSBrZXksIG9ubHkgJyArICd0aGUgZmlyc3QgY2hpbGQgd2lsbCBiZSB1c2Vk
LiVzJywgS2V5RXNjYXBlVXRpbHMudW5lc2NhcGUobmFtZSksIFJlYWN0Q29tcG9uZW50VHJlZUhv
b2suZ2V0U3RhY2tBZGRlbmR1bUJ5SUQoc2VsZkRlYnVnSUQpKSA6IHZvaWQgMDtcbiAgICAgIH1c
biAgICB9XG4gICAgaWYgKGtleVVuaXF1ZSAmJiBjaGlsZCAhPSBudWxsKSB7XG4gICAgICByZXN1
bHRbbmFtZV0gPSBjaGlsZDtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBGbGF0dGVucyBjaGls
ZHJlbiB0aGF0IGFyZSB0eXBpY2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAuIEFu
eSBudWxsXG4gKiBjaGlsZHJlbiB3aWxsIG5vdCBiZSBpbmNsdWRlZCBpbiB0aGUgcmVzdWx0aW5n
IG9iamVjdC5cbiAqIEByZXR1cm4geyFvYmplY3R9IGZsYXR0ZW5lZCBjaGlsZHJlbiBrZXllZCBi
eSBuYW1lLlxuICovXG5mdW5jdGlvbiBmbGF0dGVuQ2hpbGRyZW4oY2hpbGRyZW4sIHNlbGZEZWJ1
Z0lEKSB7XG4gIGlmIChjaGlsZHJlbiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGNoaWxkcmVuO1xu
ICB9XG4gIHZhciByZXN1bHQgPSB7fTtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09
ICdwcm9kdWN0aW9uJykge1xuICAgIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGZ1bmN0
aW9uICh0cmF2ZXJzZUNvbnRleHQsIGNoaWxkLCBuYW1lKSB7XG4gICAgICByZXR1cm4gZmxhdHRl
blNpbmdsZUNoaWxkSW50b0NvbnRleHQodHJhdmVyc2VDb250ZXh0LCBjaGlsZCwgbmFtZSwgc2Vs
ZkRlYnVnSUQpO1xuICAgIH0sIHJlc3VsdCk7XG4gIH0gZWxzZSB7XG4gICAgdHJhdmVyc2VBbGxD
aGlsZHJlbihjaGlsZHJlbiwgZmxhdHRlblNpbmdsZUNoaWxkSW50b0NvbnRleHQsIHJlc3VsdCk7
XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBmbGF0dGVuQ2hp
bGRyZW47XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAu
L34vcmVhY3QtZG9tL2xpYi9mbGF0dGVuQ2hpbGRyZW4uanNcbiAqKiBtb2R1bGUgaWQgPSAxODBc
biAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJl
c2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhp
cyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91
bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMg
c291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2Fu
IGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpc
biAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBnZXRFdmVudENoYXJDb2RlID0gcmVxdWlyZSgn
Li9nZXRFdmVudENoYXJDb2RlJyk7XG5cbi8qKlxuICogTm9ybWFsaXphdGlvbiBvZiBkZXByZWNh
dGVkIEhUTUw1IGBrZXlgIHZhbHVlc1xuICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3ppbGxh
Lm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudCNLZXlfbmFtZXNcbiAqL1xudmFy
IG5vcm1hbGl6ZUtleSA9IHtcbiAgRXNjOiAnRXNjYXBlJyxcbiAgU3BhY2ViYXI6ICcgJyxcbiAg
TGVmdDogJ0Fycm93TGVmdCcsXG4gIFVwOiAnQXJyb3dVcCcsXG4gIFJpZ2h0OiAnQXJyb3dSaWdo
dCcsXG4gIERvd246ICdBcnJvd0Rvd24nLFxuICBEZWw6ICdEZWxldGUnLFxuICBXaW46ICdPUycs
XG4gIE1lbnU6ICdDb250ZXh0TWVudScsXG4gIEFwcHM6ICdDb250ZXh0TWVudScsXG4gIFNjcm9s
bDogJ1Njcm9sbExvY2snLFxuICBNb3pQcmludGFibGVLZXk6ICdVbmlkZW50aWZpZWQnXG59O1xu
XG4vKipcbiAqIFRyYW5zbGF0aW9uIGZyb20gbGVnYWN5IGBrZXlDb2RlYCB0byBIVE1MNSBga2V5
YFxuICogT25seSBzcGVjaWFsIGtleXMgc3VwcG9ydGVkLCBhbGwgb3RoZXJzIGRlcGVuZCBvbiBr
ZXlib2FyZCBsYXlvdXQgb3IgYnJvd3NlclxuICogQHNlZSBodHRwczovL2RldmVsb3Blci5tb3pp
bGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvS2V5Ym9hcmRFdmVudCNLZXlfbmFtZXNcbiAqL1xu
dmFyIHRyYW5zbGF0ZVRvS2V5ID0ge1xuICA4OiAnQmFja3NwYWNlJyxcbiAgOTogJ1RhYicsXG4g
IDEyOiAnQ2xlYXInLFxuICAxMzogJ0VudGVyJyxcbiAgMTY6ICdTaGlmdCcsXG4gIDE3OiAnQ29u
dHJvbCcsXG4gIDE4OiAnQWx0JyxcbiAgMTk6ICdQYXVzZScsXG4gIDIwOiAnQ2Fwc0xvY2snLFxu
ICAyNzogJ0VzY2FwZScsXG4gIDMyOiAnICcsXG4gIDMzOiAnUGFnZVVwJyxcbiAgMzQ6ICdQYWdl
RG93bicsXG4gIDM1OiAnRW5kJyxcbiAgMzY6ICdIb21lJyxcbiAgMzc6ICdBcnJvd0xlZnQnLFxu
ICAzODogJ0Fycm93VXAnLFxuICAzOTogJ0Fycm93UmlnaHQnLFxuICA0MDogJ0Fycm93RG93bics
XG4gIDQ1OiAnSW5zZXJ0JyxcbiAgNDY6ICdEZWxldGUnLFxuICAxMTI6ICdGMScsXG4gIDExMzog
J0YyJyxcbiAgMTE0OiAnRjMnLFxuICAxMTU6ICdGNCcsXG4gIDExNjogJ0Y1JyxcbiAgMTE3OiAn
RjYnLFxuICAxMTg6ICdGNycsXG4gIDExOTogJ0Y4JyxcbiAgMTIwOiAnRjknLFxuICAxMjE6ICdG
MTAnLFxuICAxMjI6ICdGMTEnLFxuICAxMjM6ICdGMTInLFxuICAxNDQ6ICdOdW1Mb2NrJyxcbiAg
MTQ1OiAnU2Nyb2xsTG9jaycsXG4gIDIyNDogJ01ldGEnXG59O1xuXG4vKipcbiAqIEBwYXJhbSB7
b2JqZWN0fSBuYXRpdmVFdmVudCBOYXRpdmUgYnJvd3NlciBldmVudC5cbiAqIEByZXR1cm4ge3N0
cmluZ30gTm9ybWFsaXplZCBga2V5YCBwcm9wZXJ0eS5cbiAqL1xuZnVuY3Rpb24gZ2V0RXZlbnRL
ZXkobmF0aXZlRXZlbnQpIHtcbiAgaWYgKG5hdGl2ZUV2ZW50LmtleSkge1xuICAgIC8vIE5vcm1h
bGl6ZSBpbmNvbnNpc3RlbnQgdmFsdWVzIHJlcG9ydGVkIGJ5IGJyb3dzZXJzIGR1ZSB0b1xuICAg
IC8vIGltcGxlbWVudGF0aW9ucyBvZiBhIHdvcmtpbmcgZHJhZnQgc3BlY2lmaWNhdGlvbi5cblxu
ICAgIC8vIEZpcmVGb3ggaW1wbGVtZW50cyBga2V5YCBidXQgcmV0dXJucyBgTW96UHJpbnRhYmxl
S2V5YCBmb3IgYWxsXG4gICAgLy8gcHJpbnRhYmxlIGNoYXJhY3RlcnMgKG5vcm1hbGl6ZWQgdG8g
YFVuaWRlbnRpZmllZGApLCBpZ25vcmUgaXQuXG4gICAgdmFyIGtleSA9IG5vcm1hbGl6ZUtleVtu
YXRpdmVFdmVudC5rZXldIHx8IG5hdGl2ZUV2ZW50LmtleTtcbiAgICBpZiAoa2V5ICE9PSAnVW5p
ZGVudGlmaWVkJykge1xuICAgICAgcmV0dXJuIGtleTtcbiAgICB9XG4gIH1cblxuICAvLyBCcm93
c2VyIGRvZXMgbm90IGltcGxlbWVudCBga2V5YCwgcG9seWZpbGwgYXMgbXVjaCBvZiBpdCBhcyB3
ZSBjYW4uXG4gIGlmIChuYXRpdmVFdmVudC50eXBlID09PSAna2V5cHJlc3MnKSB7XG4gICAgdmFy
IGNoYXJDb2RlID0gZ2V0RXZlbnRDaGFyQ29kZShuYXRpdmVFdmVudCk7XG5cbiAgICAvLyBUaGUg
ZW50ZXIta2V5IGlzIHRlY2huaWNhbGx5IGJvdGggcHJpbnRhYmxlIGFuZCBub24tcHJpbnRhYmxl
IGFuZCBjYW5cbiAgICAvLyB0aHVzIGJlIGNhcHR1cmVkIGJ5IGBrZXlwcmVzc2AsIG5vIG90aGVy
IG5vbi1wcmludGFibGUga2V5IHNob3VsZC5cbiAgICByZXR1cm4gY2hhckNvZGUgPT09IDEzID8g
J0VudGVyJyA6IFN0cmluZy5mcm9tQ2hhckNvZGUoY2hhckNvZGUpO1xuICB9XG4gIGlmIChuYXRp
dmVFdmVudC50eXBlID09PSAna2V5ZG93bicgfHwgbmF0aXZlRXZlbnQudHlwZSA9PT0gJ2tleXVw
Jykge1xuICAgIC8vIFdoaWxlIHVzZXIga2V5Ym9hcmQgbGF5b3V0IGRldGVybWluZXMgdGhlIGFj
dHVhbCBtZWFuaW5nIG9mIGVhY2hcbiAgICAvLyBga2V5Q29kZWAgdmFsdWUsIGFsbW9zdCBhbGwg
ZnVuY3Rpb24ga2V5cyBoYXZlIGEgdW5pdmVyc2FsIHZhbHVlLlxuICAgIHJldHVybiB0cmFuc2xh
dGVUb0tleVtuYXRpdmVFdmVudC5rZXlDb2RlXSB8fCAnVW5pZGVudGlmaWVkJztcbiAgfVxuICBy
ZXR1cm4gJyc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0RXZlbnRLZXk7XG5cblxuLyoqKioq
KioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9n
ZXRFdmVudEtleS5qc1xuICoqIG1vZHVsZSBpZCA9IDE4MVxuICoqIG1vZHVsZSBjaHVua3MgPSAw
XG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJp
Y3QnO1xuXG4vKiBnbG9iYWwgU3ltYm9sICovXG5cbnZhciBJVEVSQVRPUl9TWU1CT0wgPSB0eXBl
b2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmIFN5bWJvbC5pdGVyYXRvcjtcbnZhciBGQVVYX0lU
RVJBVE9SX1NZTUJPTCA9ICdAQGl0ZXJhdG9yJzsgLy8gQmVmb3JlIFN5bWJvbCBzcGVjLlxuXG4v
KipcbiAqIFJldHVybnMgdGhlIGl0ZXJhdG9yIG1ldGhvZCBmdW5jdGlvbiBjb250YWluZWQgb24g
dGhlIGl0ZXJhYmxlIG9iamVjdC5cbiAqXG4gKiBCZSBzdXJlIHRvIGludm9rZSB0aGUgZnVuY3Rp
b24gd2l0aCB0aGUgaXRlcmFibGUgYXMgY29udGV4dDpcbiAqXG4gKiAgICAgdmFyIGl0ZXJhdG9y
Rm4gPSBnZXRJdGVyYXRvckZuKG15SXRlcmFibGUpO1xuICogICAgIGlmIChpdGVyYXRvckZuKSB7
XG4gKiAgICAgICB2YXIgaXRlcmF0b3IgPSBpdGVyYXRvckZuLmNhbGwobXlJdGVyYWJsZSk7XG4g
KiAgICAgICAuLi5cbiAqICAgICB9XG4gKlxuICogQHBhcmFtIHs/b2JqZWN0fSBtYXliZUl0ZXJh
YmxlXG4gKiBAcmV0dXJuIHs/ZnVuY3Rpb259XG4gKi9cbmZ1bmN0aW9uIGdldEl0ZXJhdG9yRm4o
bWF5YmVJdGVyYWJsZSkge1xuICB2YXIgaXRlcmF0b3JGbiA9IG1heWJlSXRlcmFibGUgJiYgKElU
RVJBVE9SX1NZTUJPTCAmJiBtYXliZUl0ZXJhYmxlW0lURVJBVE9SX1NZTUJPTF0gfHwgbWF5YmVJ
dGVyYWJsZVtGQVVYX0lURVJBVE9SX1NZTUJPTF0pO1xuICBpZiAodHlwZW9mIGl0ZXJhdG9yRm4g
PT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gaXRlcmF0b3JGbjtcbiAgfVxufVxuXG5tb2R1
bGUuZXhwb3J0cyA9IGdldEl0ZXJhdG9yRm47XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiog
V0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9nZXRJdGVyYXRvckZuLmpzXG4g
KiogbW9kdWxlIGlkID0gMTgyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAq
IENvcHlyaWdodCAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJl
c2VydmVkLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJT
RC1zdHlsZSBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290
IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBv
ZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBz
YW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEdpdmVu
IGFueSBub2RlIHJldHVybiB0aGUgZmlyc3QgbGVhZiBub2RlIHdpdGhvdXQgY2hpbGRyZW4uXG4g
KlxuICogQHBhcmFtIHtET01FbGVtZW50fERPTVRleHROb2RlfSBub2RlXG4gKiBAcmV0dXJuIHtE
T01FbGVtZW50fERPTVRleHROb2RlfVxuICovXG5cbmZ1bmN0aW9uIGdldExlYWZOb2RlKG5vZGUp
IHtcbiAgd2hpbGUgKG5vZGUgJiYgbm9kZS5maXJzdENoaWxkKSB7XG4gICAgbm9kZSA9IG5vZGUu
Zmlyc3RDaGlsZDtcbiAgfVxuICByZXR1cm4gbm9kZTtcbn1cblxuLyoqXG4gKiBHZXQgdGhlIG5l
eHQgc2libGluZyB3aXRoaW4gYSBjb250YWluZXIuIFRoaXMgd2lsbCB3YWxrIHVwIHRoZVxuICog
RE9NIGlmIGEgbm9kZSdzIHNpYmxpbmdzIGhhdmUgYmVlbiBleGhhdXN0ZWQuXG4gKlxuICogQHBh
cmFtIHtET01FbGVtZW50fERPTVRleHROb2RlfSBub2RlXG4gKiBAcmV0dXJuIHs/RE9NRWxlbWVu
dHxET01UZXh0Tm9kZX1cbiAqL1xuZnVuY3Rpb24gZ2V0U2libGluZ05vZGUobm9kZSkge1xuICB3
aGlsZSAobm9kZSkge1xuICAgIGlmIChub2RlLm5leHRTaWJsaW5nKSB7XG4gICAgICByZXR1cm4g
bm9kZS5uZXh0U2libGluZztcbiAgICB9XG4gICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAg
fVxufVxuXG4vKipcbiAqIEdldCBvYmplY3QgZGVzY3JpYmluZyB0aGUgbm9kZXMgd2hpY2ggY29u
dGFpbiBjaGFyYWN0ZXJzIGF0IG9mZnNldC5cbiAqXG4gKiBAcGFyYW0ge0RPTUVsZW1lbnR8RE9N
VGV4dE5vZGV9IHJvb3RcbiAqIEBwYXJhbSB7bnVtYmVyfSBvZmZzZXRcbiAqIEByZXR1cm4gez9v
YmplY3R9XG4gKi9cbmZ1bmN0aW9uIGdldE5vZGVGb3JDaGFyYWN0ZXJPZmZzZXQocm9vdCwgb2Zm
c2V0KSB7XG4gIHZhciBub2RlID0gZ2V0TGVhZk5vZGUocm9vdCk7XG4gIHZhciBub2RlU3RhcnQg
PSAwO1xuICB2YXIgbm9kZUVuZCA9IDA7XG5cbiAgd2hpbGUgKG5vZGUpIHtcbiAgICBpZiAobm9k
ZS5ub2RlVHlwZSA9PT0gMykge1xuICAgICAgbm9kZUVuZCA9IG5vZGVTdGFydCArIG5vZGUudGV4
dENvbnRlbnQubGVuZ3RoO1xuXG4gICAgICBpZiAobm9kZVN0YXJ0IDw9IG9mZnNldCAmJiBub2Rl
RW5kID49IG9mZnNldCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5vZGU6IG5vZGUs
XG4gICAgICAgICAgb2Zmc2V0OiBvZmZzZXQgLSBub2RlU3RhcnRcbiAgICAgICAgfTtcbiAgICAg
IH1cblxuICAgICAgbm9kZVN0YXJ0ID0gbm9kZUVuZDtcbiAgICB9XG5cbiAgICBub2RlID0gZ2V0
TGVhZk5vZGUoZ2V0U2libGluZ05vZGUobm9kZSkpO1xuICB9XG59XG5cbm1vZHVsZS5leHBvcnRz
ID0gZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldDtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAq
KiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1kb20vbGliL2dldE5vZGVGb3JDaGFyYWN0
ZXJPZmZzZXQuanNcbiAqKiBtb2R1bGUgaWQgPSAxODNcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxu
ICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAq
IEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNl
ZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZp
bGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9u
YWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRT
IGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5c
bnZhciBFeGVjdXRpb25FbnZpcm9ubWVudCA9IHJlcXVpcmUoJ2ZianMvbGliL0V4ZWN1dGlvbkVu
dmlyb25tZW50Jyk7XG5cbi8qKlxuICogR2VuZXJhdGUgYSBtYXBwaW5nIG9mIHN0YW5kYXJkIHZl
bmRvciBwcmVmaXhlcyB1c2luZyB0aGUgZGVmaW5lZCBzdHlsZSBwcm9wZXJ0eSBhbmQgZXZlbnQg
bmFtZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gc3R5bGVQcm9wXG4gKiBAcGFyYW0ge3N0cmlu
Z30gZXZlbnROYW1lXG4gKiBAcmV0dXJucyB7b2JqZWN0fVxuICovXG5mdW5jdGlvbiBtYWtlUHJl
Zml4TWFwKHN0eWxlUHJvcCwgZXZlbnROYW1lKSB7XG4gIHZhciBwcmVmaXhlcyA9IHt9O1xuXG4g
IHByZWZpeGVzW3N0eWxlUHJvcC50b0xvd2VyQ2FzZSgpXSA9IGV2ZW50TmFtZS50b0xvd2VyQ2Fz
ZSgpO1xuICBwcmVmaXhlc1snV2Via2l0JyArIHN0eWxlUHJvcF0gPSAnd2Via2l0JyArIGV2ZW50
TmFtZTtcbiAgcHJlZml4ZXNbJ01veicgKyBzdHlsZVByb3BdID0gJ21veicgKyBldmVudE5hbWU7
XG4gIHByZWZpeGVzWydtcycgKyBzdHlsZVByb3BdID0gJ01TJyArIGV2ZW50TmFtZTtcbiAgcHJl
Zml4ZXNbJ08nICsgc3R5bGVQcm9wXSA9ICdvJyArIGV2ZW50TmFtZS50b0xvd2VyQ2FzZSgpO1xu
XG4gIHJldHVybiBwcmVmaXhlcztcbn1cblxuLyoqXG4gKiBBIGxpc3Qgb2YgZXZlbnQgbmFtZXMg
dG8gYSBjb25maWd1cmFibGUgbGlzdCBvZiB2ZW5kb3IgcHJlZml4ZXMuXG4gKi9cbnZhciB2ZW5k
b3JQcmVmaXhlcyA9IHtcbiAgYW5pbWF0aW9uZW5kOiBtYWtlUHJlZml4TWFwKCdBbmltYXRpb24n
LCAnQW5pbWF0aW9uRW5kJyksXG4gIGFuaW1hdGlvbml0ZXJhdGlvbjogbWFrZVByZWZpeE1hcCgn
QW5pbWF0aW9uJywgJ0FuaW1hdGlvbkl0ZXJhdGlvbicpLFxuICBhbmltYXRpb25zdGFydDogbWFr
ZVByZWZpeE1hcCgnQW5pbWF0aW9uJywgJ0FuaW1hdGlvblN0YXJ0JyksXG4gIHRyYW5zaXRpb25l
bmQ6IG1ha2VQcmVmaXhNYXAoJ1RyYW5zaXRpb24nLCAnVHJhbnNpdGlvbkVuZCcpXG59O1xuXG4v
KipcbiAqIEV2ZW50IG5hbWVzIHRoYXQgaGF2ZSBhbHJlYWR5IGJlZW4gZGV0ZWN0ZWQgYW5kIHBy
ZWZpeGVkIChpZiBhcHBsaWNhYmxlKS5cbiAqL1xudmFyIHByZWZpeGVkRXZlbnROYW1lcyA9IHt9
O1xuXG4vKipcbiAqIEVsZW1lbnQgdG8gY2hlY2sgZm9yIHByZWZpeGVzIG9uLlxuICovXG52YXIg
c3R5bGUgPSB7fTtcblxuLyoqXG4gKiBCb290c3RyYXAgaWYgYSBET00gZXhpc3RzLlxuICovXG5p
ZiAoRXhlY3V0aW9uRW52aXJvbm1lbnQuY2FuVXNlRE9NKSB7XG4gIHN0eWxlID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jykuc3R5bGU7XG5cbiAgLy8gT24gc29tZSBwbGF0Zm9ybXMsIGlu
IHBhcnRpY3VsYXIgc29tZSByZWxlYXNlcyBvZiBBbmRyb2lkIDQueCxcbiAgLy8gdGhlIHVuLXBy
ZWZpeGVkIFwiYW5pbWF0aW9uXCIgYW5kIFwidHJhbnNpdGlvblwiIHByb3BlcnRpZXMgYXJlIGRl
ZmluZWQgb24gdGhlXG4gIC8vIHN0eWxlIG9iamVjdCBidXQgdGhlIGV2ZW50cyB0aGF0IGZpcmUg
d2lsbCBzdGlsbCBiZSBwcmVmaXhlZCwgc28gd2UgbmVlZFxuICAvLyB0byBjaGVjayBpZiB0aGUg
dW4tcHJlZml4ZWQgZXZlbnRzIGFyZSB1c2FibGUsIGFuZCBpZiBub3QgcmVtb3ZlIHRoZW0gZnJv
bSB0aGUgbWFwLlxuICBpZiAoISgnQW5pbWF0aW9uRXZlbnQnIGluIHdpbmRvdykpIHtcbiAgICBk
ZWxldGUgdmVuZG9yUHJlZml4ZXMuYW5pbWF0aW9uZW5kLmFuaW1hdGlvbjtcbiAgICBkZWxldGUg
dmVuZG9yUHJlZml4ZXMuYW5pbWF0aW9uaXRlcmF0aW9uLmFuaW1hdGlvbjtcbiAgICBkZWxldGUg
dmVuZG9yUHJlZml4ZXMuYW5pbWF0aW9uc3RhcnQuYW5pbWF0aW9uO1xuICB9XG5cbiAgLy8gU2Ft
ZSBhcyBhYm92ZVxuICBpZiAoISgnVHJhbnNpdGlvbkV2ZW50JyBpbiB3aW5kb3cpKSB7XG4gICAg
ZGVsZXRlIHZlbmRvclByZWZpeGVzLnRyYW5zaXRpb25lbmQudHJhbnNpdGlvbjtcbiAgfVxufVxu
XG4vKipcbiAqIEF0dGVtcHRzIHRvIGRldGVybWluZSB0aGUgY29ycmVjdCB2ZW5kb3IgcHJlZml4
ZWQgZXZlbnQgbmFtZS5cbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gZXZlbnROYW1lXG4gKiBAcmV0
dXJucyB7c3RyaW5nfVxuICovXG5mdW5jdGlvbiBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZShl
dmVudE5hbWUpIHtcbiAgaWYgKHByZWZpeGVkRXZlbnROYW1lc1tldmVudE5hbWVdKSB7XG4gICAg
cmV0dXJuIHByZWZpeGVkRXZlbnROYW1lc1tldmVudE5hbWVdO1xuICB9IGVsc2UgaWYgKCF2ZW5k
b3JQcmVmaXhlc1tldmVudE5hbWVdKSB7XG4gICAgcmV0dXJuIGV2ZW50TmFtZTtcbiAgfVxuXG4g
IHZhciBwcmVmaXhNYXAgPSB2ZW5kb3JQcmVmaXhlc1tldmVudE5hbWVdO1xuXG4gIGZvciAodmFy
IHN0eWxlUHJvcCBpbiBwcmVmaXhNYXApIHtcbiAgICBpZiAocHJlZml4TWFwLmhhc093blByb3Bl
cnR5KHN0eWxlUHJvcCkgJiYgc3R5bGVQcm9wIGluIHN0eWxlKSB7XG4gICAgICByZXR1cm4gcHJl
Zml4ZWRFdmVudE5hbWVzW2V2ZW50TmFtZV0gPSBwcmVmaXhNYXBbc3R5bGVQcm9wXTtcbiAgICB9
XG4gIH1cblxuICByZXR1cm4gJyc7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0VmVuZG9yUHJl
Zml4ZWRFdmVudE5hbWU7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09U
RVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9nZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZS5qc1xu
ICoqIG1vZHVsZSBpZCA9IDE4NFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4g
KiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyBy
ZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBC
U0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9v
dCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICog
b2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUg
c2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIGVzY2FwZVRl
eHRDb250ZW50Rm9yQnJvd3NlciA9IHJlcXVpcmUoJy4vZXNjYXBlVGV4dENvbnRlbnRGb3JCcm93
c2VyJyk7XG5cbi8qKlxuICogRXNjYXBlcyBhdHRyaWJ1dGUgdmFsdWUgdG8gcHJldmVudCBzY3Jp
cHRpbmcgYXR0YWNrcy5cbiAqXG4gKiBAcGFyYW0geyp9IHZhbHVlIFZhbHVlIHRvIGVzY2FwZS5c
biAqIEByZXR1cm4ge3N0cmluZ30gQW4gZXNjYXBlZCBzdHJpbmcuXG4gKi9cbmZ1bmN0aW9uIHF1
b3RlQXR0cmlidXRlVmFsdWVGb3JCcm93c2VyKHZhbHVlKSB7XG4gIHJldHVybiAnXCInICsgZXNj
YXBlVGV4dENvbnRlbnRGb3JCcm93c2VyKHZhbHVlKSArICdcIic7XG59XG5cbm1vZHVsZS5leHBv
cnRzID0gcXVvdGVBdHRyaWJ1dGVWYWx1ZUZvckJyb3dzZXI7XG5cblxuLyoqKioqKioqKioqKioq
KioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtZG9tL2xpYi9xdW90ZUF0dHJp
YnV0ZVZhbHVlRm9yQnJvd3Nlci5qc1xuICoqIG1vZHVsZSBpZCA9IDE4NVxuICoqIG1vZHVsZSBj
aHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9v
aywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2Rl
IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAq
IExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4g
QW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4g
dGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ug
c3RyaWN0JztcblxudmFyIFJlYWN0TW91bnQgPSByZXF1aXJlKCcuL1JlYWN0TW91bnQnKTtcblxu
bW9kdWxlLmV4cG9ydHMgPSBSZWFjdE1vdW50LnJlbmRlclN1YnRyZWVJbnRvQ29udGFpbmVyO1xu
XG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0
LWRvbS9saWIvcmVuZGVyU3VidHJlZUludG9Db250YWluZXIuanNcbiAqKiBtb2R1bGUgaWQgPSAx
ODZcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0
cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuY3JlYXRlUHJvdmlkZXIgPSBjcmVhdGVQcm92
aWRlcjtcblxudmFyIF9yZWFjdCA9IHJlcXVpcmUoJ3JlYWN0Jyk7XG5cbnZhciBfcHJvcFR5cGVz
ID0gcmVxdWlyZSgncHJvcC10eXBlcycpO1xuXG52YXIgX3Byb3BUeXBlczIgPSBfaW50ZXJvcFJl
cXVpcmVEZWZhdWx0KF9wcm9wVHlwZXMpO1xuXG52YXIgX1Byb3BUeXBlcyA9IHJlcXVpcmUoJy4u
L3V0aWxzL1Byb3BUeXBlcycpO1xuXG52YXIgX3dhcm5pbmcgPSByZXF1aXJlKCcuLi91dGlscy93
YXJuaW5nJyk7XG5cbnZhciBfd2FybmluZzIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF93YXJu
aW5nKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9i
aiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZnVuY3Rp
b24gX2NsYXNzQ2FsbENoZWNrKGluc3RhbmNlLCBDb25zdHJ1Y3RvcikgeyBpZiAoIShpbnN0YW5j
ZSBpbnN0YW5jZW9mIENvbnN0cnVjdG9yKSkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90
IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uXCIpOyB9IH1cblxuZnVuY3Rpb24gX3Bvc3NpYmxl
Q29uc3RydWN0b3JSZXR1cm4oc2VsZiwgY2FsbCkgeyBpZiAoIXNlbGYpIHsgdGhyb3cgbmV3IFJl
ZmVyZW5jZUVycm9yKFwidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFz
bid0IGJlZW4gY2FsbGVkXCIpOyB9IHJldHVybiBjYWxsICYmICh0eXBlb2YgY2FsbCA9PT0gXCJv
YmplY3RcIiB8fCB0eXBlb2YgY2FsbCA9PT0gXCJmdW5jdGlvblwiKSA/IGNhbGwgOiBzZWxmOyB9
XG5cbmZ1bmN0aW9uIF9pbmhlcml0cyhzdWJDbGFzcywgc3VwZXJDbGFzcykgeyBpZiAodHlwZW9m
IHN1cGVyQ2xhc3MgIT09IFwiZnVuY3Rpb25cIiAmJiBzdXBlckNsYXNzICE9PSBudWxsKSB7IHRo
cm93IG5ldyBUeXBlRXJyb3IoXCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwg
b3IgYSBmdW5jdGlvbiwgbm90IFwiICsgdHlwZW9mIHN1cGVyQ2xhc3MpOyB9IHN1YkNsYXNzLnBy
b3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcyAmJiBzdXBlckNsYXNzLnByb3RvdHlw
ZSwgeyBjb25zdHJ1Y3RvcjogeyB2YWx1ZTogc3ViQ2xhc3MsIGVudW1lcmFibGU6IGZhbHNlLCB3
cml0YWJsZTogdHJ1ZSwgY29uZmlndXJhYmxlOiB0cnVlIH0gfSk7IGlmIChzdXBlckNsYXNzKSBP
YmplY3Quc2V0UHJvdG90eXBlT2YgPyBPYmplY3Quc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1
cGVyQ2xhc3MpIDogc3ViQ2xhc3MuX19wcm90b19fID0gc3VwZXJDbGFzczsgfVxuXG52YXIgZGlk
V2FybkFib3V0UmVjZWl2aW5nU3RvcmUgPSBmYWxzZTtcbmZ1bmN0aW9uIHdhcm5BYm91dFJlY2Vp
dmluZ1N0b3JlKCkge1xuICBpZiAoZGlkV2FybkFib3V0UmVjZWl2aW5nU3RvcmUpIHtcbiAgICBy
ZXR1cm47XG4gIH1cbiAgZGlkV2FybkFib3V0UmVjZWl2aW5nU3RvcmUgPSB0cnVlO1xuXG4gICgw
LCBfd2FybmluZzIuZGVmYXVsdCkoJzxQcm92aWRlcj4gZG9lcyBub3Qgc3VwcG9ydCBjaGFuZ2lu
ZyBgc3RvcmVgIG9uIHRoZSBmbHkuICcgKyAnSXQgaXMgbW9zdCBsaWtlbHkgdGhhdCB5b3Ugc2Vl
IHRoaXMgZXJyb3IgYmVjYXVzZSB5b3UgdXBkYXRlZCB0byAnICsgJ1JlZHV4IDIueCBhbmQgUmVh
Y3QgUmVkdXggMi54IHdoaWNoIG5vIGxvbmdlciBob3QgcmVsb2FkIHJlZHVjZXJzICcgKyAnYXV0
b21hdGljYWxseS4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdGpzL3JlYWN0LXJlZHV4L3Jl
bGVhc2VzLycgKyAndGFnL3YyLjAuMCBmb3IgdGhlIG1pZ3JhdGlvbiBpbnN0cnVjdGlvbnMuJyk7
XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVByb3ZpZGVyKCkge1xuICB2YXIgX1Byb3ZpZGVyJGNoaWxk
Q29udGV4O1xuXG4gIHZhciBzdG9yZUtleSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3Vt
ZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogJ3N0b3JlJztcbiAgdmFyIHN1
YktleSA9IGFyZ3VtZW50c1sxXTtcblxuICB2YXIgc3Vic2NyaXB0aW9uS2V5ID0gc3ViS2V5IHx8
IHN0b3JlS2V5ICsgJ1N1YnNjcmlwdGlvbic7XG5cbiAgdmFyIFByb3ZpZGVyID0gZnVuY3Rpb24g
KF9Db21wb25lbnQpIHtcbiAgICBfaW5oZXJpdHMoUHJvdmlkZXIsIF9Db21wb25lbnQpO1xuXG4g
ICAgUHJvdmlkZXIucHJvdG90eXBlLmdldENoaWxkQ29udGV4dCA9IGZ1bmN0aW9uIGdldENoaWxk
Q29udGV4dCgpIHtcbiAgICAgIHZhciBfcmVmO1xuXG4gICAgICByZXR1cm4gX3JlZiA9IHt9LCBf
cmVmW3N0b3JlS2V5XSA9IHRoaXNbc3RvcmVLZXldLCBfcmVmW3N1YnNjcmlwdGlvbktleV0gPSBu
dWxsLCBfcmVmO1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBQcm92aWRlcihwcm9wcywgY29udGV4
dCkge1xuICAgICAgX2NsYXNzQ2FsbENoZWNrKHRoaXMsIFByb3ZpZGVyKTtcblxuICAgICAgdmFy
IF90aGlzID0gX3Bvc3NpYmxlQ29uc3RydWN0b3JSZXR1cm4odGhpcywgX0NvbXBvbmVudC5jYWxs
KHRoaXMsIHByb3BzLCBjb250ZXh0KSk7XG5cbiAgICAgIF90aGlzW3N0b3JlS2V5XSA9IHByb3Bz
LnN0b3JlO1xuICAgICAgcmV0dXJuIF90aGlzO1xuICAgIH1cblxuICAgIFByb3ZpZGVyLnByb3Rv
dHlwZS5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICByZXR1cm4gX3JlYWN0LkNo
aWxkcmVuLm9ubHkodGhpcy5wcm9wcy5jaGlsZHJlbik7XG4gICAgfTtcblxuICAgIHJldHVybiBQ
cm92aWRlcjtcbiAgfShfcmVhY3QuQ29tcG9uZW50KTtcblxuICBpZiAocHJvY2Vzcy5lbnYuTk9E
RV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgIFByb3ZpZGVyLnByb3RvdHlwZS5jb21wb25l
bnRXaWxsUmVjZWl2ZVByb3BzID0gZnVuY3Rpb24gKG5leHRQcm9wcykge1xuICAgICAgaWYgKHRo
aXNbc3RvcmVLZXldICE9PSBuZXh0UHJvcHMuc3RvcmUpIHtcbiAgICAgICAgd2FybkFib3V0UmVj
ZWl2aW5nU3RvcmUoKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgUHJvdmlkZXIucHJvcFR5
cGVzID0ge1xuICAgIHN0b3JlOiBfUHJvcFR5cGVzLnN0b3JlU2hhcGUuaXNSZXF1aXJlZCxcbiAg
ICBjaGlsZHJlbjogX3Byb3BUeXBlczIuZGVmYXVsdC5lbGVtZW50LmlzUmVxdWlyZWRcbiAgfTtc
biAgUHJvdmlkZXIuY2hpbGRDb250ZXh0VHlwZXMgPSAoX1Byb3ZpZGVyJGNoaWxkQ29udGV4ID0g
e30sIF9Qcm92aWRlciRjaGlsZENvbnRleFtzdG9yZUtleV0gPSBfUHJvcFR5cGVzLnN0b3JlU2hh
cGUuaXNSZXF1aXJlZCwgX1Byb3ZpZGVyJGNoaWxkQ29udGV4W3N1YnNjcmlwdGlvbktleV0gPSBf
UHJvcFR5cGVzLnN1YnNjcmlwdGlvblNoYXBlLCBfUHJvdmlkZXIkY2hpbGRDb250ZXgpO1xuXG4g
IHJldHVybiBQcm92aWRlcjtcbn1cblxuZXhwb3J0cy5kZWZhdWx0ID0gY3JlYXRlUHJvdmlkZXIo
KTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9y
ZWFjdC1yZWR1eC9saWIvY29tcG9uZW50cy9Qcm92aWRlci5qc1xuICoqIG1vZHVsZSBpZCA9IDE4
N1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRz
Ll9fZXNNb2R1bGUgPSB0cnVlO1xuXG52YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1
bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBp
KyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkg
eyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkg
eyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9O1xuXG5l
eHBvcnRzLmNyZWF0ZUNvbm5lY3QgPSBjcmVhdGVDb25uZWN0O1xuXG52YXIgX2Nvbm5lY3RBZHZh
bmNlZCA9IHJlcXVpcmUoJy4uL2NvbXBvbmVudHMvY29ubmVjdEFkdmFuY2VkJyk7XG5cbnZhciBf
Y29ubmVjdEFkdmFuY2VkMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2Nvbm5lY3RBZHZhbmNl
ZCk7XG5cbnZhciBfc2hhbGxvd0VxdWFsID0gcmVxdWlyZSgnLi4vdXRpbHMvc2hhbGxvd0VxdWFs
Jyk7XG5cbnZhciBfc2hhbGxvd0VxdWFsMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3NoYWxs
b3dFcXVhbCk7XG5cbnZhciBfbWFwRGlzcGF0Y2hUb1Byb3BzID0gcmVxdWlyZSgnLi9tYXBEaXNw
YXRjaFRvUHJvcHMnKTtcblxudmFyIF9tYXBEaXNwYXRjaFRvUHJvcHMyID0gX2ludGVyb3BSZXF1
aXJlRGVmYXVsdChfbWFwRGlzcGF0Y2hUb1Byb3BzKTtcblxudmFyIF9tYXBTdGF0ZVRvUHJvcHMg
PSByZXF1aXJlKCcuL21hcFN0YXRlVG9Qcm9wcycpO1xuXG52YXIgX21hcFN0YXRlVG9Qcm9wczIg
PSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9tYXBTdGF0ZVRvUHJvcHMpO1xuXG52YXIgX21lcmdl
UHJvcHMgPSByZXF1aXJlKCcuL21lcmdlUHJvcHMnKTtcblxudmFyIF9tZXJnZVByb3BzMiA9IF9p
bnRlcm9wUmVxdWlyZURlZmF1bHQoX21lcmdlUHJvcHMpO1xuXG52YXIgX3NlbGVjdG9yRmFjdG9y
eSA9IHJlcXVpcmUoJy4vc2VsZWN0b3JGYWN0b3J5Jyk7XG5cbnZhciBfc2VsZWN0b3JGYWN0b3J5
MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3NlbGVjdG9yRmFjdG9yeSk7XG5cbmZ1bmN0aW9u
IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1
bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0
UHJvcGVydGllcyhvYmosIGtleXMpIHsgdmFyIHRhcmdldCA9IHt9OyBmb3IgKHZhciBpIGluIG9i
aikgeyBpZiAoa2V5cy5pbmRleE9mKGkpID49IDApIGNvbnRpbnVlOyBpZiAoIU9iamVjdC5wcm90
b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIGkpKSBjb250aW51ZTsgdGFyZ2V0W2ldID0g
b2JqW2ldOyB9IHJldHVybiB0YXJnZXQ7IH1cblxuLypcbiAgY29ubmVjdCBpcyBhIGZhY2FkZSBv
dmVyIGNvbm5lY3RBZHZhbmNlZC4gSXQgdHVybnMgaXRzIGFyZ3MgaW50byBhIGNvbXBhdGlibGVc
biAgc2VsZWN0b3JGYWN0b3J5LCB3aGljaCBoYXMgdGhlIHNpZ25hdHVyZTpcblxuICAgIChkaXNw
YXRjaCwgb3B0aW9ucykgPT4gKG5leHRTdGF0ZSwgbmV4dE93blByb3BzKSA9PiBuZXh0RmluYWxQ
cm9wc1xuICBcbiAgY29ubmVjdCBwYXNzZXMgaXRzIGFyZ3MgdG8gY29ubmVjdEFkdmFuY2VkIGFz
IG9wdGlvbnMsIHdoaWNoIHdpbGwgaW4gdHVybiBwYXNzIHRoZW0gdG9cbiAgc2VsZWN0b3JGYWN0
b3J5IGVhY2ggdGltZSBhIENvbm5lY3QgY29tcG9uZW50IGluc3RhbmNlIGlzIGluc3RhbnRpYXRl
ZCBvciBob3QgcmVsb2FkZWQuXG5cbiAgc2VsZWN0b3JGYWN0b3J5IHJldHVybnMgYSBmaW5hbCBw
cm9wcyBzZWxlY3RvciBmcm9tIGl0cyBtYXBTdGF0ZVRvUHJvcHMsXG4gIG1hcFN0YXRlVG9Qcm9w
c0ZhY3RvcmllcywgbWFwRGlzcGF0Y2hUb1Byb3BzLCBtYXBEaXNwYXRjaFRvUHJvcHNGYWN0b3Jp
ZXMsIG1lcmdlUHJvcHMsXG4gIG1lcmdlUHJvcHNGYWN0b3JpZXMsIGFuZCBwdXJlIGFyZ3MuXG5c
biAgVGhlIHJlc3VsdGluZyBmaW5hbCBwcm9wcyBzZWxlY3RvciBpcyBjYWxsZWQgYnkgdGhlIENv
bm5lY3QgY29tcG9uZW50IGluc3RhbmNlIHdoZW5ldmVyXG4gIGl0IHJlY2VpdmVzIG5ldyBwcm9w
cyBvciBzdG9yZSBzdGF0ZS5cbiAqL1xuXG5mdW5jdGlvbiBtYXRjaChhcmcsIGZhY3Rvcmllcywg
bmFtZSkge1xuICBmb3IgKHZhciBpID0gZmFjdG9yaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0t
KSB7XG4gICAgdmFyIHJlc3VsdCA9IGZhY3Rvcmllc1tpXShhcmcpO1xuICAgIGlmIChyZXN1bHQp
IHJldHVybiByZXN1bHQ7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKGRpc3BhdGNoLCBvcHRp
b25zKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIHZhbHVlIG9mIHR5cGUgJyArIHR5
cGVvZiBhcmcgKyAnIGZvciAnICsgbmFtZSArICcgYXJndW1lbnQgd2hlbiBjb25uZWN0aW5nIGNv
bXBvbmVudCAnICsgb3B0aW9ucy53cmFwcGVkQ29tcG9uZW50TmFtZSArICcuJyk7XG4gIH07XG59
XG5cbmZ1bmN0aW9uIHN0cmljdEVxdWFsKGEsIGIpIHtcbiAgcmV0dXJuIGEgPT09IGI7XG59XG5c
bi8vIGNyZWF0ZUNvbm5lY3Qgd2l0aCBkZWZhdWx0IGFyZ3MgYnVpbGRzIHRoZSAnb2ZmaWNpYWwn
IGNvbm5lY3QgYmVoYXZpb3IuIENhbGxpbmcgaXQgd2l0aFxuLy8gZGlmZmVyZW50IG9wdGlvbnMg
b3BlbnMgdXAgc29tZSB0ZXN0aW5nIGFuZCBleHRlbnNpYmlsaXR5IHNjZW5hcmlvc1xuZnVuY3Rp
b24gY3JlYXRlQ29ubmVjdCgpIHtcbiAgdmFyIF9yZWYgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAm
JiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9LFxuICAgICAg
X3JlZiRjb25uZWN0SE9DID0gX3JlZi5jb25uZWN0SE9DLFxuICAgICAgY29ubmVjdEhPQyA9IF9y
ZWYkY29ubmVjdEhPQyA9PT0gdW5kZWZpbmVkID8gX2Nvbm5lY3RBZHZhbmNlZDIuZGVmYXVsdCA6
IF9yZWYkY29ubmVjdEhPQyxcbiAgICAgIF9yZWYkbWFwU3RhdGVUb1Byb3BzRiA9IF9yZWYubWFw
U3RhdGVUb1Byb3BzRmFjdG9yaWVzLFxuICAgICAgbWFwU3RhdGVUb1Byb3BzRmFjdG9yaWVzID0g
X3JlZiRtYXBTdGF0ZVRvUHJvcHNGID09PSB1bmRlZmluZWQgPyBfbWFwU3RhdGVUb1Byb3BzMi5k
ZWZhdWx0IDogX3JlZiRtYXBTdGF0ZVRvUHJvcHNGLFxuICAgICAgX3JlZiRtYXBEaXNwYXRjaFRv
UHJvID0gX3JlZi5tYXBEaXNwYXRjaFRvUHJvcHNGYWN0b3JpZXMsXG4gICAgICBtYXBEaXNwYXRj
aFRvUHJvcHNGYWN0b3JpZXMgPSBfcmVmJG1hcERpc3BhdGNoVG9Qcm8gPT09IHVuZGVmaW5lZCA/
IF9tYXBEaXNwYXRjaFRvUHJvcHMyLmRlZmF1bHQgOiBfcmVmJG1hcERpc3BhdGNoVG9Qcm8sXG4g
ICAgICBfcmVmJG1lcmdlUHJvcHNGYWN0b3IgPSBfcmVmLm1lcmdlUHJvcHNGYWN0b3JpZXMsXG4g
ICAgICBtZXJnZVByb3BzRmFjdG9yaWVzID0gX3JlZiRtZXJnZVByb3BzRmFjdG9yID09PSB1bmRl
ZmluZWQgPyBfbWVyZ2VQcm9wczIuZGVmYXVsdCA6IF9yZWYkbWVyZ2VQcm9wc0ZhY3RvcixcbiAg
ICAgIF9yZWYkc2VsZWN0b3JGYWN0b3J5ID0gX3JlZi5zZWxlY3RvckZhY3RvcnksXG4gICAgICBz
ZWxlY3RvckZhY3RvcnkgPSBfcmVmJHNlbGVjdG9yRmFjdG9yeSA9PT0gdW5kZWZpbmVkID8gX3Nl
bGVjdG9yRmFjdG9yeTIuZGVmYXVsdCA6IF9yZWYkc2VsZWN0b3JGYWN0b3J5O1xuXG4gIHJldHVy
biBmdW5jdGlvbiBjb25uZWN0KG1hcFN0YXRlVG9Qcm9wcywgbWFwRGlzcGF0Y2hUb1Byb3BzLCBt
ZXJnZVByb3BzKSB7XG4gICAgdmFyIF9yZWYyID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJn
dW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiB7fSxcbiAgICAgICAgX3Jl
ZjIkcHVyZSA9IF9yZWYyLnB1cmUsXG4gICAgICAgIHB1cmUgPSBfcmVmMiRwdXJlID09PSB1bmRl
ZmluZWQgPyB0cnVlIDogX3JlZjIkcHVyZSxcbiAgICAgICAgX3JlZjIkYXJlU3RhdGVzRXF1YWwg
PSBfcmVmMi5hcmVTdGF0ZXNFcXVhbCxcbiAgICAgICAgYXJlU3RhdGVzRXF1YWwgPSBfcmVmMiRh
cmVTdGF0ZXNFcXVhbCA9PT0gdW5kZWZpbmVkID8gc3RyaWN0RXF1YWwgOiBfcmVmMiRhcmVTdGF0
ZXNFcXVhbCxcbiAgICAgICAgX3JlZjIkYXJlT3duUHJvcHNFcXVhID0gX3JlZjIuYXJlT3duUHJv
cHNFcXVhbCxcbiAgICAgICAgYXJlT3duUHJvcHNFcXVhbCA9IF9yZWYyJGFyZU93blByb3BzRXF1
YSA9PT0gdW5kZWZpbmVkID8gX3NoYWxsb3dFcXVhbDIuZGVmYXVsdCA6IF9yZWYyJGFyZU93blBy
b3BzRXF1YSxcbiAgICAgICAgX3JlZjIkYXJlU3RhdGVQcm9wc0VxID0gX3JlZjIuYXJlU3RhdGVQ
cm9wc0VxdWFsLFxuICAgICAgICBhcmVTdGF0ZVByb3BzRXF1YWwgPSBfcmVmMiRhcmVTdGF0ZVBy
b3BzRXEgPT09IHVuZGVmaW5lZCA/IF9zaGFsbG93RXF1YWwyLmRlZmF1bHQgOiBfcmVmMiRhcmVT
dGF0ZVByb3BzRXEsXG4gICAgICAgIF9yZWYyJGFyZU1lcmdlZFByb3BzRSA9IF9yZWYyLmFyZU1l
cmdlZFByb3BzRXF1YWwsXG4gICAgICAgIGFyZU1lcmdlZFByb3BzRXF1YWwgPSBfcmVmMiRhcmVN
ZXJnZWRQcm9wc0UgPT09IHVuZGVmaW5lZCA/IF9zaGFsbG93RXF1YWwyLmRlZmF1bHQgOiBfcmVm
MiRhcmVNZXJnZWRQcm9wc0UsXG4gICAgICAgIGV4dHJhT3B0aW9ucyA9IF9vYmplY3RXaXRob3V0
UHJvcGVydGllcyhfcmVmMiwgWydwdXJlJywgJ2FyZVN0YXRlc0VxdWFsJywgJ2FyZU93blByb3Bz
RXF1YWwnLCAnYXJlU3RhdGVQcm9wc0VxdWFsJywgJ2FyZU1lcmdlZFByb3BzRXF1YWwnXSk7XG5c
biAgICB2YXIgaW5pdE1hcFN0YXRlVG9Qcm9wcyA9IG1hdGNoKG1hcFN0YXRlVG9Qcm9wcywgbWFw
U3RhdGVUb1Byb3BzRmFjdG9yaWVzLCAnbWFwU3RhdGVUb1Byb3BzJyk7XG4gICAgdmFyIGluaXRN
YXBEaXNwYXRjaFRvUHJvcHMgPSBtYXRjaChtYXBEaXNwYXRjaFRvUHJvcHMsIG1hcERpc3BhdGNo
VG9Qcm9wc0ZhY3RvcmllcywgJ21hcERpc3BhdGNoVG9Qcm9wcycpO1xuICAgIHZhciBpbml0TWVy
Z2VQcm9wcyA9IG1hdGNoKG1lcmdlUHJvcHMsIG1lcmdlUHJvcHNGYWN0b3JpZXMsICdtZXJnZVBy
b3BzJyk7XG5cbiAgICByZXR1cm4gY29ubmVjdEhPQyhzZWxlY3RvckZhY3RvcnksIF9leHRlbmRz
KHtcbiAgICAgIC8vIHVzZWQgaW4gZXJyb3IgbWVzc2FnZXNcbiAgICAgIG1ldGhvZE5hbWU6ICdj
b25uZWN0JyxcblxuICAgICAgLy8gdXNlZCB0byBjb21wdXRlIENvbm5lY3QncyBkaXNwbGF5TmFt
ZSBmcm9tIHRoZSB3cmFwcGVkIGNvbXBvbmVudCdzIGRpc3BsYXlOYW1lLlxuICAgICAgZ2V0RGlz
cGxheU5hbWU6IGZ1bmN0aW9uIGdldERpc3BsYXlOYW1lKG5hbWUpIHtcbiAgICAgICAgcmV0dXJu
ICdDb25uZWN0KCcgKyBuYW1lICsgJyknO1xuICAgICAgfSxcblxuICAgICAgLy8gaWYgbWFwU3Rh
dGVUb1Byb3BzIGlzIGZhbHN5LCB0aGUgQ29ubmVjdCBjb21wb25lbnQgZG9lc24ndCBzdWJzY3Jp
YmUgdG8gc3RvcmUgc3RhdGUgY2hhbmdlc1xuICAgICAgc2hvdWxkSGFuZGxlU3RhdGVDaGFuZ2Vz
OiBCb29sZWFuKG1hcFN0YXRlVG9Qcm9wcyksXG5cbiAgICAgIC8vIHBhc3NlZCB0aHJvdWdoIHRv
IHNlbGVjdG9yRmFjdG9yeVxuICAgICAgaW5pdE1hcFN0YXRlVG9Qcm9wczogaW5pdE1hcFN0YXRl
VG9Qcm9wcyxcbiAgICAgIGluaXRNYXBEaXNwYXRjaFRvUHJvcHM6IGluaXRNYXBEaXNwYXRjaFRv
UHJvcHMsXG4gICAgICBpbml0TWVyZ2VQcm9wczogaW5pdE1lcmdlUHJvcHMsXG4gICAgICBwdXJl
OiBwdXJlLFxuICAgICAgYXJlU3RhdGVzRXF1YWw6IGFyZVN0YXRlc0VxdWFsLFxuICAgICAgYXJl
T3duUHJvcHNFcXVhbDogYXJlT3duUHJvcHNFcXVhbCxcbiAgICAgIGFyZVN0YXRlUHJvcHNFcXVh
bDogYXJlU3RhdGVQcm9wc0VxdWFsLFxuICAgICAgYXJlTWVyZ2VkUHJvcHNFcXVhbDogYXJlTWVy
Z2VkUHJvcHNFcXVhbFxuXG4gICAgfSwgZXh0cmFPcHRpb25zKSk7XG4gIH07XG59XG5cbmV4cG9y
dHMuZGVmYXVsdCA9IGNyZWF0ZUNvbm5lY3QoKTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAq
KiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1yZWR1eC9saWIvY29ubmVjdC9jb25uZWN0
LmpzXG4gKiogbW9kdWxlIGlkID0gMTg4XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIn
dXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLndoZW5N
YXBEaXNwYXRjaFRvUHJvcHNJc0Z1bmN0aW9uID0gd2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lzRnVu
Y3Rpb247XG5leHBvcnRzLndoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc01pc3NpbmcgPSB3aGVuTWFw
RGlzcGF0Y2hUb1Byb3BzSXNNaXNzaW5nO1xuZXhwb3J0cy53aGVuTWFwRGlzcGF0Y2hUb1Byb3Bz
SXNPYmplY3QgPSB3aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNPYmplY3Q7XG5cbnZhciBfcmVkdXgg
PSByZXF1aXJlKCdyZWR1eCcpO1xuXG52YXIgX3dyYXBNYXBUb1Byb3BzID0gcmVxdWlyZSgnLi93
cmFwTWFwVG9Qcm9wcycpO1xuXG5mdW5jdGlvbiB3aGVuTWFwRGlzcGF0Y2hUb1Byb3BzSXNGdW5j
dGlvbihtYXBEaXNwYXRjaFRvUHJvcHMpIHtcbiAgcmV0dXJuIHR5cGVvZiBtYXBEaXNwYXRjaFRv
UHJvcHMgPT09ICdmdW5jdGlvbicgPyAoMCwgX3dyYXBNYXBUb1Byb3BzLndyYXBNYXBUb1Byb3Bz
RnVuYykobWFwRGlzcGF0Y2hUb1Byb3BzLCAnbWFwRGlzcGF0Y2hUb1Byb3BzJykgOiB1bmRlZmlu
ZWQ7XG59XG5cbmZ1bmN0aW9uIHdoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc01pc3NpbmcobWFwRGlz
cGF0Y2hUb1Byb3BzKSB7XG4gIHJldHVybiAhbWFwRGlzcGF0Y2hUb1Byb3BzID8gKDAsIF93cmFw
TWFwVG9Qcm9wcy53cmFwTWFwVG9Qcm9wc0NvbnN0YW50KShmdW5jdGlvbiAoZGlzcGF0Y2gpIHtc
biAgICByZXR1cm4geyBkaXNwYXRjaDogZGlzcGF0Y2ggfTtcbiAgfSkgOiB1bmRlZmluZWQ7XG59
XG5cbmZ1bmN0aW9uIHdoZW5NYXBEaXNwYXRjaFRvUHJvcHNJc09iamVjdChtYXBEaXNwYXRjaFRv
UHJvcHMpIHtcbiAgcmV0dXJuIG1hcERpc3BhdGNoVG9Qcm9wcyAmJiB0eXBlb2YgbWFwRGlzcGF0
Y2hUb1Byb3BzID09PSAnb2JqZWN0JyA/ICgwLCBfd3JhcE1hcFRvUHJvcHMud3JhcE1hcFRvUHJv
cHNDb25zdGFudCkoZnVuY3Rpb24gKGRpc3BhdGNoKSB7XG4gICAgcmV0dXJuICgwLCBfcmVkdXgu
YmluZEFjdGlvbkNyZWF0b3JzKShtYXBEaXNwYXRjaFRvUHJvcHMsIGRpc3BhdGNoKTtcbiAgfSkg
OiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydHMuZGVmYXVsdCA9IFt3aGVuTWFwRGlzcGF0Y2hUb1By
b3BzSXNGdW5jdGlvbiwgd2hlbk1hcERpc3BhdGNoVG9Qcm9wc0lzTWlzc2luZywgd2hlbk1hcERp
c3BhdGNoVG9Qcm9wc0lzT2JqZWN0XTtcblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQ
QUNLIEZPT1RFUlxuICoqIC4vfi9yZWFjdC1yZWR1eC9saWIvY29ubmVjdC9tYXBEaXNwYXRjaFRv
UHJvcHMuanNcbiAqKiBtb2R1bGUgaWQgPSAxODlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoq
LyIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMu
d2hlbk1hcFN0YXRlVG9Qcm9wc0lzRnVuY3Rpb24gPSB3aGVuTWFwU3RhdGVUb1Byb3BzSXNGdW5j
dGlvbjtcbmV4cG9ydHMud2hlbk1hcFN0YXRlVG9Qcm9wc0lzTWlzc2luZyA9IHdoZW5NYXBTdGF0
ZVRvUHJvcHNJc01pc3Npbmc7XG5cbnZhciBfd3JhcE1hcFRvUHJvcHMgPSByZXF1aXJlKCcuL3dy
YXBNYXBUb1Byb3BzJyk7XG5cbmZ1bmN0aW9uIHdoZW5NYXBTdGF0ZVRvUHJvcHNJc0Z1bmN0aW9u
KG1hcFN0YXRlVG9Qcm9wcykge1xuICByZXR1cm4gdHlwZW9mIG1hcFN0YXRlVG9Qcm9wcyA9PT0g
J2Z1bmN0aW9uJyA/ICgwLCBfd3JhcE1hcFRvUHJvcHMud3JhcE1hcFRvUHJvcHNGdW5jKShtYXBT
dGF0ZVRvUHJvcHMsICdtYXBTdGF0ZVRvUHJvcHMnKSA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rp
b24gd2hlbk1hcFN0YXRlVG9Qcm9wc0lzTWlzc2luZyhtYXBTdGF0ZVRvUHJvcHMpIHtcbiAgcmV0
dXJuICFtYXBTdGF0ZVRvUHJvcHMgPyAoMCwgX3dyYXBNYXBUb1Byb3BzLndyYXBNYXBUb1Byb3Bz
Q29uc3RhbnQpKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge307XG4gIH0pIDogdW5kZWZpbmVk
O1xufVxuXG5leHBvcnRzLmRlZmF1bHQgPSBbd2hlbk1hcFN0YXRlVG9Qcm9wc0lzRnVuY3Rpb24s
IHdoZW5NYXBTdGF0ZVRvUHJvcHNJc01pc3NpbmddO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxu
ICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LXJlZHV4L2xpYi9jb25uZWN0L21hcFN0
YXRlVG9Qcm9wcy5qc1xuICoqIG1vZHVsZSBpZCA9IDE5MFxuICoqIG1vZHVsZSBjaHVua3MgPSAw
XG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuXG52
YXIgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2
YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3Vt
ZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5o
YXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtr
ZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9O1xuXG5leHBvcnRzLmRlZmF1bHRNZXJnZVByb3Bz
ID0gZGVmYXVsdE1lcmdlUHJvcHM7XG5leHBvcnRzLndyYXBNZXJnZVByb3BzRnVuYyA9IHdyYXBN
ZXJnZVByb3BzRnVuYztcbmV4cG9ydHMud2hlbk1lcmdlUHJvcHNJc0Z1bmN0aW9uID0gd2hlbk1l
cmdlUHJvcHNJc0Z1bmN0aW9uO1xuZXhwb3J0cy53aGVuTWVyZ2VQcm9wc0lzT21pdHRlZCA9IHdo
ZW5NZXJnZVByb3BzSXNPbWl0dGVkO1xuXG52YXIgX3ZlcmlmeVBsYWluT2JqZWN0ID0gcmVxdWly
ZSgnLi4vdXRpbHMvdmVyaWZ5UGxhaW5PYmplY3QnKTtcblxudmFyIF92ZXJpZnlQbGFpbk9iamVj
dDIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF92ZXJpZnlQbGFpbk9iamVjdCk7XG5cbmZ1bmN0
aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNN
b2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIGRlZmF1bHRNZXJn
ZVByb3BzKHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJvcHMsIG93blByb3BzKSB7XG4gIHJldHVybiBf
ZXh0ZW5kcyh7fSwgb3duUHJvcHMsIHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJvcHMpO1xufVxuXG5m
dW5jdGlvbiB3cmFwTWVyZ2VQcm9wc0Z1bmMobWVyZ2VQcm9wcykge1xuICByZXR1cm4gZnVuY3Rp
b24gaW5pdE1lcmdlUHJvcHNQcm94eShkaXNwYXRjaCwgX3JlZikge1xuICAgIHZhciBkaXNwbGF5
TmFtZSA9IF9yZWYuZGlzcGxheU5hbWUsXG4gICAgICAgIHB1cmUgPSBfcmVmLnB1cmUsXG4gICAg
ICAgIGFyZU1lcmdlZFByb3BzRXF1YWwgPSBfcmVmLmFyZU1lcmdlZFByb3BzRXF1YWw7XG5cbiAg
ICB2YXIgaGFzUnVuT25jZSA9IGZhbHNlO1xuICAgIHZhciBtZXJnZWRQcm9wcyA9IHZvaWQgMDtc
blxuICAgIHJldHVybiBmdW5jdGlvbiBtZXJnZVByb3BzUHJveHkoc3RhdGVQcm9wcywgZGlzcGF0
Y2hQcm9wcywgb3duUHJvcHMpIHtcbiAgICAgIHZhciBuZXh0TWVyZ2VkUHJvcHMgPSBtZXJnZVBy
b3BzKHN0YXRlUHJvcHMsIGRpc3BhdGNoUHJvcHMsIG93blByb3BzKTtcblxuICAgICAgaWYgKGhh
c1J1bk9uY2UpIHtcbiAgICAgICAgaWYgKCFwdXJlIHx8ICFhcmVNZXJnZWRQcm9wc0VxdWFsKG5l
eHRNZXJnZWRQcm9wcywgbWVyZ2VkUHJvcHMpKSBtZXJnZWRQcm9wcyA9IG5leHRNZXJnZWRQcm9w
cztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhhc1J1bk9uY2UgPSB0cnVlO1xuICAgICAgICBt
ZXJnZWRQcm9wcyA9IG5leHRNZXJnZWRQcm9wcztcblxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykgKDAsIF92ZXJpZnlQbGFpbk9iamVjdDIuZGVmYXVs
dCkobWVyZ2VkUHJvcHMsIGRpc3BsYXlOYW1lLCAnbWVyZ2VQcm9wcycpO1xuICAgICAgfVxuXG4g
ICAgICByZXR1cm4gbWVyZ2VkUHJvcHM7XG4gICAgfTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gd2hl
bk1lcmdlUHJvcHNJc0Z1bmN0aW9uKG1lcmdlUHJvcHMpIHtcbiAgcmV0dXJuIHR5cGVvZiBtZXJn
ZVByb3BzID09PSAnZnVuY3Rpb24nID8gd3JhcE1lcmdlUHJvcHNGdW5jKG1lcmdlUHJvcHMpIDog
dW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiB3aGVuTWVyZ2VQcm9wc0lzT21pdHRlZChtZXJnZVBy
b3BzKSB7XG4gIHJldHVybiAhbWVyZ2VQcm9wcyA/IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4g
ZGVmYXVsdE1lcmdlUHJvcHM7XG4gIH0gOiB1bmRlZmluZWQ7XG59XG5cbmV4cG9ydHMuZGVmYXVs
dCA9IFt3aGVuTWVyZ2VQcm9wc0lzRnVuY3Rpb24sIHdoZW5NZXJnZVByb3BzSXNPbWl0dGVkXTtc
blxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFj
dC1yZWR1eC9saWIvY29ubmVjdC9tZXJnZVByb3BzLmpzXG4gKiogbW9kdWxlIGlkID0gMTkxXG4g
KiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19l
c01vZHVsZSA9IHRydWU7XG5leHBvcnRzLmltcHVyZUZpbmFsUHJvcHNTZWxlY3RvckZhY3Rvcnkg
PSBpbXB1cmVGaW5hbFByb3BzU2VsZWN0b3JGYWN0b3J5O1xuZXhwb3J0cy5wdXJlRmluYWxQcm9w
c1NlbGVjdG9yRmFjdG9yeSA9IHB1cmVGaW5hbFByb3BzU2VsZWN0b3JGYWN0b3J5O1xuZXhwb3J0
cy5kZWZhdWx0ID0gZmluYWxQcm9wc1NlbGVjdG9yRmFjdG9yeTtcblxudmFyIF92ZXJpZnlTdWJz
ZWxlY3RvcnMgPSByZXF1aXJlKCcuL3ZlcmlmeVN1YnNlbGVjdG9ycycpO1xuXG52YXIgX3Zlcmlm
eVN1YnNlbGVjdG9yczIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF92ZXJpZnlTdWJzZWxlY3Rv
cnMpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2Jq
ICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmogfTsgfVxuXG5mdW5jdGlv
biBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMob2JqLCBrZXlzKSB7IHZhciB0YXJnZXQgPSB7fTsg
Zm9yICh2YXIgaSBpbiBvYmopIHsgaWYgKGtleXMuaW5kZXhPZihpKSA+PSAwKSBjb250aW51ZTsg
aWYgKCFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBpKSkgY29udGlu
dWU7IHRhcmdldFtpXSA9IG9ialtpXTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIGlt
cHVyZUZpbmFsUHJvcHNTZWxlY3RvckZhY3RvcnkobWFwU3RhdGVUb1Byb3BzLCBtYXBEaXNwYXRj
aFRvUHJvcHMsIG1lcmdlUHJvcHMsIGRpc3BhdGNoKSB7XG4gIHJldHVybiBmdW5jdGlvbiBpbXB1
cmVGaW5hbFByb3BzU2VsZWN0b3Ioc3RhdGUsIG93blByb3BzKSB7XG4gICAgcmV0dXJuIG1lcmdl
UHJvcHMobWFwU3RhdGVUb1Byb3BzKHN0YXRlLCBvd25Qcm9wcyksIG1hcERpc3BhdGNoVG9Qcm9w
cyhkaXNwYXRjaCwgb3duUHJvcHMpLCBvd25Qcm9wcyk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIHB1
cmVGaW5hbFByb3BzU2VsZWN0b3JGYWN0b3J5KG1hcFN0YXRlVG9Qcm9wcywgbWFwRGlzcGF0Y2hU
b1Byb3BzLCBtZXJnZVByb3BzLCBkaXNwYXRjaCwgX3JlZikge1xuICB2YXIgYXJlU3RhdGVzRXF1
YWwgPSBfcmVmLmFyZVN0YXRlc0VxdWFsLFxuICAgICAgYXJlT3duUHJvcHNFcXVhbCA9IF9yZWYu
YXJlT3duUHJvcHNFcXVhbCxcbiAgICAgIGFyZVN0YXRlUHJvcHNFcXVhbCA9IF9yZWYuYXJlU3Rh
dGVQcm9wc0VxdWFsO1xuXG4gIHZhciBoYXNSdW5BdExlYXN0T25jZSA9IGZhbHNlO1xuICB2YXIg
c3RhdGUgPSB2b2lkIDA7XG4gIHZhciBvd25Qcm9wcyA9IHZvaWQgMDtcbiAgdmFyIHN0YXRlUHJv
cHMgPSB2b2lkIDA7XG4gIHZhciBkaXNwYXRjaFByb3BzID0gdm9pZCAwO1xuICB2YXIgbWVyZ2Vk
UHJvcHMgPSB2b2lkIDA7XG5cbiAgZnVuY3Rpb24gaGFuZGxlRmlyc3RDYWxsKGZpcnN0U3RhdGUs
IGZpcnN0T3duUHJvcHMpIHtcbiAgICBzdGF0ZSA9IGZpcnN0U3RhdGU7XG4gICAgb3duUHJvcHMg
PSBmaXJzdE93blByb3BzO1xuICAgIHN0YXRlUHJvcHMgPSBtYXBTdGF0ZVRvUHJvcHMoc3RhdGUs
IG93blByb3BzKTtcbiAgICBkaXNwYXRjaFByb3BzID0gbWFwRGlzcGF0Y2hUb1Byb3BzKGRpc3Bh
dGNoLCBvd25Qcm9wcyk7XG4gICAgbWVyZ2VkUHJvcHMgPSBtZXJnZVByb3BzKHN0YXRlUHJvcHMs
IGRpc3BhdGNoUHJvcHMsIG93blByb3BzKTtcbiAgICBoYXNSdW5BdExlYXN0T25jZSA9IHRydWU7
XG4gICAgcmV0dXJuIG1lcmdlZFByb3BzO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlTmV3UHJv
cHNBbmROZXdTdGF0ZSgpIHtcbiAgICBzdGF0ZVByb3BzID0gbWFwU3RhdGVUb1Byb3BzKHN0YXRl
LCBvd25Qcm9wcyk7XG5cbiAgICBpZiAobWFwRGlzcGF0Y2hUb1Byb3BzLmRlcGVuZHNPbk93blBy
b3BzKSBkaXNwYXRjaFByb3BzID0gbWFwRGlzcGF0Y2hUb1Byb3BzKGRpc3BhdGNoLCBvd25Qcm9w
cyk7XG5cbiAgICBtZXJnZWRQcm9wcyA9IG1lcmdlUHJvcHMoc3RhdGVQcm9wcywgZGlzcGF0Y2hQ
cm9wcywgb3duUHJvcHMpO1xuICAgIHJldHVybiBtZXJnZWRQcm9wcztcbiAgfVxuXG4gIGZ1bmN0
aW9uIGhhbmRsZU5ld1Byb3BzKCkge1xuICAgIGlmIChtYXBTdGF0ZVRvUHJvcHMuZGVwZW5kc09u
T3duUHJvcHMpIHN0YXRlUHJvcHMgPSBtYXBTdGF0ZVRvUHJvcHMoc3RhdGUsIG93blByb3BzKTtc
blxuICAgIGlmIChtYXBEaXNwYXRjaFRvUHJvcHMuZGVwZW5kc09uT3duUHJvcHMpIGRpc3BhdGNo
UHJvcHMgPSBtYXBEaXNwYXRjaFRvUHJvcHMoZGlzcGF0Y2gsIG93blByb3BzKTtcblxuICAgIG1l
cmdlZFByb3BzID0gbWVyZ2VQcm9wcyhzdGF0ZVByb3BzLCBkaXNwYXRjaFByb3BzLCBvd25Qcm9w
cyk7XG4gICAgcmV0dXJuIG1lcmdlZFByb3BzO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlTmV3
U3RhdGUoKSB7XG4gICAgdmFyIG5leHRTdGF0ZVByb3BzID0gbWFwU3RhdGVUb1Byb3BzKHN0YXRl
LCBvd25Qcm9wcyk7XG4gICAgdmFyIHN0YXRlUHJvcHNDaGFuZ2VkID0gIWFyZVN0YXRlUHJvcHNF
cXVhbChuZXh0U3RhdGVQcm9wcywgc3RhdGVQcm9wcyk7XG4gICAgc3RhdGVQcm9wcyA9IG5leHRT
dGF0ZVByb3BzO1xuXG4gICAgaWYgKHN0YXRlUHJvcHNDaGFuZ2VkKSBtZXJnZWRQcm9wcyA9IG1l
cmdlUHJvcHMoc3RhdGVQcm9wcywgZGlzcGF0Y2hQcm9wcywgb3duUHJvcHMpO1xuXG4gICAgcmV0
dXJuIG1lcmdlZFByb3BzO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlU3Vic2VxdWVudENhbGxz
KG5leHRTdGF0ZSwgbmV4dE93blByb3BzKSB7XG4gICAgdmFyIHByb3BzQ2hhbmdlZCA9ICFhcmVP
d25Qcm9wc0VxdWFsKG5leHRPd25Qcm9wcywgb3duUHJvcHMpO1xuICAgIHZhciBzdGF0ZUNoYW5n
ZWQgPSAhYXJlU3RhdGVzRXF1YWwobmV4dFN0YXRlLCBzdGF0ZSk7XG4gICAgc3RhdGUgPSBuZXh0
U3RhdGU7XG4gICAgb3duUHJvcHMgPSBuZXh0T3duUHJvcHM7XG5cbiAgICBpZiAocHJvcHNDaGFu
Z2VkICYmIHN0YXRlQ2hhbmdlZCkgcmV0dXJuIGhhbmRsZU5ld1Byb3BzQW5kTmV3U3RhdGUoKTtc
biAgICBpZiAocHJvcHNDaGFuZ2VkKSByZXR1cm4gaGFuZGxlTmV3UHJvcHMoKTtcbiAgICBpZiAo
c3RhdGVDaGFuZ2VkKSByZXR1cm4gaGFuZGxlTmV3U3RhdGUoKTtcbiAgICByZXR1cm4gbWVyZ2Vk
UHJvcHM7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gcHVyZUZpbmFsUHJvcHNTZWxlY3Rvcihu
ZXh0U3RhdGUsIG5leHRPd25Qcm9wcykge1xuICAgIHJldHVybiBoYXNSdW5BdExlYXN0T25jZSA/
IGhhbmRsZVN1YnNlcXVlbnRDYWxscyhuZXh0U3RhdGUsIG5leHRPd25Qcm9wcykgOiBoYW5kbGVG
aXJzdENhbGwobmV4dFN0YXRlLCBuZXh0T3duUHJvcHMpO1xuICB9O1xufVxuXG4vLyBUT0RPOiBB
ZGQgbW9yZSBjb21tZW50c1xuXG4vLyBJZiBwdXJlIGlzIHRydWUsIHRoZSBzZWxlY3RvciByZXR1
cm5lZCBieSBzZWxlY3RvckZhY3Rvcnkgd2lsbCBtZW1vaXplIGl0cyByZXN1bHRzLFxuLy8gYWxs
b3dpbmcgY29ubmVjdEFkdmFuY2VkJ3Mgc2hvdWxkQ29tcG9uZW50VXBkYXRlIHRvIHJldHVybiBm
YWxzZSBpZiBmaW5hbFxuLy8gcHJvcHMgaGF2ZSBub3QgY2hhbmdlZC4gSWYgZmFsc2UsIHRoZSBz
ZWxlY3RvciB3aWxsIGFsd2F5cyByZXR1cm4gYSBuZXdcbi8vIG9iamVjdCBhbmQgc2hvdWxkQ29t
cG9uZW50VXBkYXRlIHdpbGwgYWx3YXlzIHJldHVybiB0cnVlLlxuXG5mdW5jdGlvbiBmaW5hbFBy
b3BzU2VsZWN0b3JGYWN0b3J5KGRpc3BhdGNoLCBfcmVmMikge1xuICB2YXIgaW5pdE1hcFN0YXRl
VG9Qcm9wcyA9IF9yZWYyLmluaXRNYXBTdGF0ZVRvUHJvcHMsXG4gICAgICBpbml0TWFwRGlzcGF0
Y2hUb1Byb3BzID0gX3JlZjIuaW5pdE1hcERpc3BhdGNoVG9Qcm9wcyxcbiAgICAgIGluaXRNZXJn
ZVByb3BzID0gX3JlZjIuaW5pdE1lcmdlUHJvcHMsXG4gICAgICBvcHRpb25zID0gX29iamVjdFdp
dGhvdXRQcm9wZXJ0aWVzKF9yZWYyLCBbJ2luaXRNYXBTdGF0ZVRvUHJvcHMnLCAnaW5pdE1hcERp
c3BhdGNoVG9Qcm9wcycsICdpbml0TWVyZ2VQcm9wcyddKTtcblxuICB2YXIgbWFwU3RhdGVUb1By
b3BzID0gaW5pdE1hcFN0YXRlVG9Qcm9wcyhkaXNwYXRjaCwgb3B0aW9ucyk7XG4gIHZhciBtYXBE
aXNwYXRjaFRvUHJvcHMgPSBpbml0TWFwRGlzcGF0Y2hUb1Byb3BzKGRpc3BhdGNoLCBvcHRpb25z
KTtcbiAgdmFyIG1lcmdlUHJvcHMgPSBpbml0TWVyZ2VQcm9wcyhkaXNwYXRjaCwgb3B0aW9ucyk7
XG5cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAo
MCwgX3ZlcmlmeVN1YnNlbGVjdG9yczIuZGVmYXVsdCkobWFwU3RhdGVUb1Byb3BzLCBtYXBEaXNw
YXRjaFRvUHJvcHMsIG1lcmdlUHJvcHMsIG9wdGlvbnMuZGlzcGxheU5hbWUpO1xuICB9XG5cbiAg
dmFyIHNlbGVjdG9yRmFjdG9yeSA9IG9wdGlvbnMucHVyZSA/IHB1cmVGaW5hbFByb3BzU2VsZWN0
b3JGYWN0b3J5IDogaW1wdXJlRmluYWxQcm9wc1NlbGVjdG9yRmFjdG9yeTtcblxuICByZXR1cm4g
c2VsZWN0b3JGYWN0b3J5KG1hcFN0YXRlVG9Qcm9wcywgbWFwRGlzcGF0Y2hUb1Byb3BzLCBtZXJn
ZVByb3BzLCBkaXNwYXRjaCwgb3B0aW9ucyk7XG59XG5cblxuLyoqKioqKioqKioqKioqKioqXG4g
KiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtcmVkdXgvbGliL2Nvbm5lY3Qvc2VsZWN0
b3JGYWN0b3J5LmpzXG4gKiogbW9kdWxlIGlkID0gMTkyXG4gKiogbW9kdWxlIGNodW5rcyA9IDBc
biAqKi8iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBv
cnRzLmRlZmF1bHQgPSB2ZXJpZnlTdWJzZWxlY3RvcnM7XG5cbnZhciBfd2FybmluZyA9IHJlcXVp
cmUoJy4uL3V0aWxzL3dhcm5pbmcnKTtcblxudmFyIF93YXJuaW5nMiA9IF9pbnRlcm9wUmVxdWly
ZURlZmF1bHQoX3dhcm5pbmcpO1xuXG5mdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9i
aikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDogeyBkZWZhdWx0OiBvYmog
fTsgfVxuXG5mdW5jdGlvbiB2ZXJpZnkoc2VsZWN0b3IsIG1ldGhvZE5hbWUsIGRpc3BsYXlOYW1l
KSB7XG4gIGlmICghc2VsZWN0b3IpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuZXhwZWN0ZWQg
dmFsdWUgZm9yICcgKyBtZXRob2ROYW1lICsgJyBpbiAnICsgZGlzcGxheU5hbWUgKyAnLicpO1xu
ICB9IGVsc2UgaWYgKG1ldGhvZE5hbWUgPT09ICdtYXBTdGF0ZVRvUHJvcHMnIHx8IG1ldGhvZE5h
bWUgPT09ICdtYXBEaXNwYXRjaFRvUHJvcHMnKSB7XG4gICAgaWYgKCFzZWxlY3Rvci5oYXNPd25Q
cm9wZXJ0eSgnZGVwZW5kc09uT3duUHJvcHMnKSkge1xuICAgICAgKDAsIF93YXJuaW5nMi5kZWZh
dWx0KSgnVGhlIHNlbGVjdG9yIGZvciAnICsgbWV0aG9kTmFtZSArICcgb2YgJyArIGRpc3BsYXlO
YW1lICsgJyBkaWQgbm90IHNwZWNpZnkgYSB2YWx1ZSBmb3IgZGVwZW5kc09uT3duUHJvcHMuJyk7
XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHZlcmlmeVN1YnNlbGVjdG9ycyhtYXBTdGF0ZVRv
UHJvcHMsIG1hcERpc3BhdGNoVG9Qcm9wcywgbWVyZ2VQcm9wcywgZGlzcGxheU5hbWUpIHtcbiAg
dmVyaWZ5KG1hcFN0YXRlVG9Qcm9wcywgJ21hcFN0YXRlVG9Qcm9wcycsIGRpc3BsYXlOYW1lKTtc
biAgdmVyaWZ5KG1hcERpc3BhdGNoVG9Qcm9wcywgJ21hcERpc3BhdGNoVG9Qcm9wcycsIGRpc3Bs
YXlOYW1lKTtcbiAgdmVyaWZ5KG1lcmdlUHJvcHMsICdtZXJnZVByb3BzJywgZGlzcGxheU5hbWUp
O1xufVxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+
L3JlYWN0LXJlZHV4L2xpYi9jb25uZWN0L3ZlcmlmeVN1YnNlbGVjdG9ycy5qc1xuICoqIG1vZHVs
ZSBpZCA9IDE5M1xuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiXCJ1c2Ugc3RyaWN0XCI7
XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVj
ayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25z
dHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMg
YSBmdW5jdGlvblwiKTsgfSB9XG5cbi8vIGVuY2Fwc3VsYXRlcyB0aGUgc3Vic2NyaXB0aW9uIGxv
Z2ljIGZvciBjb25uZWN0aW5nIGEgY29tcG9uZW50IHRvIHRoZSByZWR1eCBzdG9yZSwgYXNcbi8v
IHdlbGwgYXMgbmVzdGluZyBzdWJzY3JpcHRpb25zIG9mIGRlc2NlbmRhbnQgY29tcG9uZW50cywg
c28gdGhhdCB3ZSBjYW4gZW5zdXJlIHRoZVxuLy8gYW5jZXN0b3IgY29tcG9uZW50cyByZS1yZW5k
ZXIgYmVmb3JlIGRlc2NlbmRhbnRzXG5cbnZhciBDTEVBUkVEID0gbnVsbDtcbnZhciBudWxsTGlz
dGVuZXJzID0ge1xuICBub3RpZnk6IGZ1bmN0aW9uIG5vdGlmeSgpIHt9XG59O1xuXG5mdW5jdGlv
biBjcmVhdGVMaXN0ZW5lckNvbGxlY3Rpb24oKSB7XG4gIC8vIHRoZSBjdXJyZW50L25leHQgcGF0
dGVybiBpcyBjb3BpZWQgZnJvbSByZWR1eCdzIGNyZWF0ZVN0b3JlIGNvZGUuXG4gIC8vIFRPRE86
IHJlZmFjdG9yK2V4cG9zZSB0aGF0IGNvZGUgdG8gYmUgcmV1c2FibGUgaGVyZT9cbiAgdmFyIGN1
cnJlbnQgPSBbXTtcbiAgdmFyIG5leHQgPSBbXTtcblxuICByZXR1cm4ge1xuICAgIGNsZWFyOiBm
dW5jdGlvbiBjbGVhcigpIHtcbiAgICAgIG5leHQgPSBDTEVBUkVEO1xuICAgICAgY3VycmVudCA9
IENMRUFSRUQ7XG4gICAgfSxcbiAgICBub3RpZnk6IGZ1bmN0aW9uIG5vdGlmeSgpIHtcbiAgICAg
IHZhciBsaXN0ZW5lcnMgPSBjdXJyZW50ID0gbmV4dDtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgbGlzdGVuZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGxpc3RlbmVyc1tpXSgpO1xuICAg
ICAgfVxuICAgIH0sXG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICByZXR1cm4gbmV4
dDtcbiAgICB9LFxuICAgIHN1YnNjcmliZTogZnVuY3Rpb24gc3Vic2NyaWJlKGxpc3RlbmVyKSB7
XG4gICAgICB2YXIgaXNTdWJzY3JpYmVkID0gdHJ1ZTtcbiAgICAgIGlmIChuZXh0ID09PSBjdXJy
ZW50KSBuZXh0ID0gY3VycmVudC5zbGljZSgpO1xuICAgICAgbmV4dC5wdXNoKGxpc3RlbmVyKTtc
blxuICAgICAgcmV0dXJuIGZ1bmN0aW9uIHVuc3Vic2NyaWJlKCkge1xuICAgICAgICBpZiAoIWlz
U3Vic2NyaWJlZCB8fCBjdXJyZW50ID09PSBDTEVBUkVEKSByZXR1cm47XG4gICAgICAgIGlzU3Vi
c2NyaWJlZCA9IGZhbHNlO1xuXG4gICAgICAgIGlmIChuZXh0ID09PSBjdXJyZW50KSBuZXh0ID0g
Y3VycmVudC5zbGljZSgpO1xuICAgICAgICBuZXh0LnNwbGljZShuZXh0LmluZGV4T2YobGlzdGVu
ZXIpLCAxKTtcbiAgICAgIH07XG4gICAgfVxuICB9O1xufVxuXG52YXIgU3Vic2NyaXB0aW9uID0g
ZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBTdWJzY3JpcHRpb24oc3RvcmUsIHBhcmVudFN1Yiwg
b25TdGF0ZUNoYW5nZSkge1xuICAgIF9jbGFzc0NhbGxDaGVjayh0aGlzLCBTdWJzY3JpcHRpb24p
O1xuXG4gICAgdGhpcy5zdG9yZSA9IHN0b3JlO1xuICAgIHRoaXMucGFyZW50U3ViID0gcGFyZW50
U3ViO1xuICAgIHRoaXMub25TdGF0ZUNoYW5nZSA9IG9uU3RhdGVDaGFuZ2U7XG4gICAgdGhpcy51
bnN1YnNjcmliZSA9IG51bGw7XG4gICAgdGhpcy5saXN0ZW5lcnMgPSBudWxsTGlzdGVuZXJzO1xu
ICB9XG5cbiAgU3Vic2NyaXB0aW9uLnByb3RvdHlwZS5hZGROZXN0ZWRTdWIgPSBmdW5jdGlvbiBh
ZGROZXN0ZWRTdWIobGlzdGVuZXIpIHtcbiAgICB0aGlzLnRyeVN1YnNjcmliZSgpO1xuICAgIHJl
dHVybiB0aGlzLmxpc3RlbmVycy5zdWJzY3JpYmUobGlzdGVuZXIpO1xuICB9O1xuXG4gIFN1YnNj
cmlwdGlvbi5wcm90b3R5cGUubm90aWZ5TmVzdGVkU3VicyA9IGZ1bmN0aW9uIG5vdGlmeU5lc3Rl
ZFN1YnMoKSB7XG4gICAgdGhpcy5saXN0ZW5lcnMubm90aWZ5KCk7XG4gIH07XG5cbiAgU3Vic2Ny
aXB0aW9uLnByb3RvdHlwZS5pc1N1YnNjcmliZWQgPSBmdW5jdGlvbiBpc1N1YnNjcmliZWQoKSB7
XG4gICAgcmV0dXJuIEJvb2xlYW4odGhpcy51bnN1YnNjcmliZSk7XG4gIH07XG5cbiAgU3Vic2Ny
aXB0aW9uLnByb3RvdHlwZS50cnlTdWJzY3JpYmUgPSBmdW5jdGlvbiB0cnlTdWJzY3JpYmUoKSB7
XG4gICAgaWYgKCF0aGlzLnVuc3Vic2NyaWJlKSB7XG4gICAgICB0aGlzLnVuc3Vic2NyaWJlID0g
dGhpcy5wYXJlbnRTdWIgPyB0aGlzLnBhcmVudFN1Yi5hZGROZXN0ZWRTdWIodGhpcy5vblN0YXRl
Q2hhbmdlKSA6IHRoaXMuc3RvcmUuc3Vic2NyaWJlKHRoaXMub25TdGF0ZUNoYW5nZSk7XG5cbiAg
ICAgIHRoaXMubGlzdGVuZXJzID0gY3JlYXRlTGlzdGVuZXJDb2xsZWN0aW9uKCk7XG4gICAgfVxu
ICB9O1xuXG4gIFN1YnNjcmlwdGlvbi5wcm90b3R5cGUudHJ5VW5zdWJzY3JpYmUgPSBmdW5jdGlv
biB0cnlVbnN1YnNjcmliZSgpIHtcbiAgICBpZiAodGhpcy51bnN1YnNjcmliZSkge1xuICAgICAg
dGhpcy51bnN1YnNjcmliZSgpO1xuICAgICAgdGhpcy51bnN1YnNjcmliZSA9IG51bGw7XG4gICAg
ICB0aGlzLmxpc3RlbmVycy5jbGVhcigpO1xuICAgICAgdGhpcy5saXN0ZW5lcnMgPSBudWxsTGlz
dGVuZXJzO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gU3Vic2NyaXB0aW9uO1xufSgpO1xuXG5l
eHBvcnRzLmRlZmF1bHQgPSBTdWJzY3JpcHRpb247XG5cblxuLyoqKioqKioqKioqKioqKioqXG4g
KiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3QtcmVkdXgvbGliL3V0aWxzL1N1YnNjcmlw
dGlvbi5qc1xuICoqIG1vZHVsZSBpZCA9IDE5NFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiov
IiwiJ3VzZSBzdHJpY3QnO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5k
ZWZhdWx0ID0gc2hhbGxvd0VxdWFsO1xudmFyIGhhc093biA9IE9iamVjdC5wcm90b3R5cGUuaGFz
T3duUHJvcGVydHk7XG5cbmZ1bmN0aW9uIGlzKHgsIHkpIHtcbiAgaWYgKHggPT09IHkpIHtcbiAg
ICByZXR1cm4geCAhPT0gMCB8fCB5ICE9PSAwIHx8IDEgLyB4ID09PSAxIC8geTtcbiAgfSBlbHNl
IHtcbiAgICByZXR1cm4geCAhPT0geCAmJiB5ICE9PSB5O1xuICB9XG59XG5cbmZ1bmN0aW9uIHNo
YWxsb3dFcXVhbChvYmpBLCBvYmpCKSB7XG4gIGlmIChpcyhvYmpBLCBvYmpCKSkgcmV0dXJuIHRy
dWU7XG5cbiAgaWYgKHR5cGVvZiBvYmpBICE9PSAnb2JqZWN0JyB8fCBvYmpBID09PSBudWxsIHx8
IHR5cGVvZiBvYmpCICE9PSAnb2JqZWN0JyB8fCBvYmpCID09PSBudWxsKSB7XG4gICAgcmV0dXJu
IGZhbHNlO1xuICB9XG5cbiAgdmFyIGtleXNBID0gT2JqZWN0LmtleXMob2JqQSk7XG4gIHZhciBr
ZXlzQiA9IE9iamVjdC5rZXlzKG9iakIpO1xuXG4gIGlmIChrZXlzQS5sZW5ndGggIT09IGtleXNC
Lmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwga2V5c0EubGVu
Z3RoOyBpKyspIHtcbiAgICBpZiAoIWhhc093bi5jYWxsKG9iakIsIGtleXNBW2ldKSB8fCAhaXMo
b2JqQVtrZXlzQVtpXV0sIG9iakJba2V5c0FbaV1dKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xu
ICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5cbi8qKioqKioqKioqKioqKioqKlxu
ICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LXJlZHV4L2xpYi91dGlscy9zaGFsbG93
RXF1YWwuanNcbiAqKiBtb2R1bGUgaWQgPSAxOTVcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoq
LyIsIi8vIEByZW1vdmUtb24tZWplY3QtYmVnaW5cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDE1
LXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAq
IFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNl
IGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0
aGlzIHNvdXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRz
IGNhbiBiZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5c
biAqL1xuLy8gQHJlbW92ZS1vbi1lamVjdC1lbmRcblxuaWYgKHR5cGVvZiBQcm9taXNlID09PSAn
dW5kZWZpbmVkJykge1xuICAvLyBSZWplY3Rpb24gdHJhY2tpbmcgcHJldmVudHMgYSBjb21tb24g
aXNzdWUgd2hlcmUgUmVhY3QgZ2V0cyBpbnRvIGFuXG4gIC8vIGluY29uc2lzdGVudCBzdGF0ZSBk
dWUgdG8gYW4gZXJyb3IsIGJ1dCBpdCBnZXRzIHN3YWxsb3dlZCBieSBhIFByb21pc2UsXG4gIC8v
IGFuZCB0aGUgdXNlciBoYXMgbm8gaWRlYSB3aGF0IGNhdXNlcyBSZWFjdCdzIGVycmF0aWMgZnV0
dXJlIGJlaGF2aW9yLlxuICByZXF1aXJlKCdwcm9taXNlL2xpYi9yZWplY3Rpb24tdHJhY2tpbmcn
KS5lbmFibGUoKTtcbiAgd2luZG93LlByb21pc2UgPSByZXF1aXJlKCdwcm9taXNlL2xpYi9lczYt
ZXh0ZW5zaW9ucy5qcycpO1xufVxuXG4vLyBmZXRjaCgpIHBvbHlmaWxsIGZvciBtYWtpbmcgQVBJ
IGNhbGxzLlxucmVxdWlyZSgnd2hhdHdnLWZldGNoJyk7XG5cbi8vIE9iamVjdC5hc3NpZ24oKSBp
cyBjb21tb25seSB1c2VkIHdpdGggUmVhY3QuXG4vLyBJdCB3aWxsIHVzZSB0aGUgbmF0aXZlIGlt
cGxlbWVudGF0aW9uIGlmIGl0J3MgcHJlc2VudCBhbmQgaXNuJ3QgYnVnZ3kuXG5PYmplY3QuYXNz
aWduID0gcmVxdWlyZSgnb2JqZWN0LWFzc2lnbicpO1xuXG5cblxuLyoqKioqKioqKioqKioqKioq
XG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3Qtc2NyaXB0cy9jb25maWcvcG9seWZp
bGxzLmpzXG4gKiogbW9kdWxlIGlkID0gMTk2XG4gKiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8i
LCJcInVzZSBzdHJpY3RcIjtcblxuLy8gVXNlIHRoZSBmYXN0ZXN0IG1lYW5zIHBvc3NpYmxlIHRv
IGV4ZWN1dGUgYSB0YXNrIGluIGl0cyBvd24gdHVybiwgd2l0aFxuLy8gcHJpb3JpdHkgb3ZlciBv
dGhlciBldmVudHMgaW5jbHVkaW5nIElPLCBhbmltYXRpb24sIHJlZmxvdywgYW5kIHJlZHJhd1xu
Ly8gZXZlbnRzIGluIGJyb3dzZXJzLlxuLy9cbi8vIEFuIGV4Y2VwdGlvbiB0aHJvd24gYnkgYSB0
YXNrIHdpbGwgcGVybWFuZW50bHkgaW50ZXJydXB0IHRoZSBwcm9jZXNzaW5nIG9mXG4vLyBzdWJz
ZXF1ZW50IHRhc2tzLiBUaGUgaGlnaGVyIGxldmVsIGBhc2FwYCBmdW5jdGlvbiBlbnN1cmVzIHRo
YXQgaWYgYW5cbi8vIGV4Y2VwdGlvbiBpcyB0aHJvd24gYnkgYSB0YXNrLCB0aGF0IHRoZSB0YXNr
IHF1ZXVlIHdpbGwgY29udGludWUgZmx1c2hpbmcgYXNcbi8vIHNvb24gYXMgcG9zc2libGUsIGJ1
dCBpZiB5b3UgdXNlIGByYXdBc2FwYCBkaXJlY3RseSwgeW91IGFyZSByZXNwb25zaWJsZSB0b1xu
Ly8gZWl0aGVyIGVuc3VyZSB0aGF0IG5vIGV4Y2VwdGlvbnMgYXJlIHRocm93biBmcm9tIHlvdXIg
dGFzaywgb3IgdG8gbWFudWFsbHlcbi8vIGNhbGwgYHJhd0FzYXAucmVxdWVzdEZsdXNoYCBpZiBh
biBleGNlcHRpb24gaXMgdGhyb3duLlxubW9kdWxlLmV4cG9ydHMgPSByYXdBc2FwO1xuZnVuY3Rp
b24gcmF3QXNhcCh0YXNrKSB7XG4gICAgaWYgKCFxdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgcmVx
dWVzdEZsdXNoKCk7XG4gICAgICAgIGZsdXNoaW5nID0gdHJ1ZTtcbiAgICB9XG4gICAgLy8gRXF1
aXZhbGVudCB0byBwdXNoLCBidXQgYXZvaWRzIGEgZnVuY3Rpb24gY2FsbC5cbiAgICBxdWV1ZVtx
dWV1ZS5sZW5ndGhdID0gdGFzaztcbn1cblxudmFyIHF1ZXVlID0gW107XG4vLyBPbmNlIGEgZmx1
c2ggaGFzIGJlZW4gcmVxdWVzdGVkLCBubyBmdXJ0aGVyIGNhbGxzIHRvIGByZXF1ZXN0Rmx1c2hg
IGFyZVxuLy8gbmVjZXNzYXJ5IHVudGlsIHRoZSBuZXh0IGBmbHVzaGAgY29tcGxldGVzLlxudmFy
IGZsdXNoaW5nID0gZmFsc2U7XG4vLyBgcmVxdWVzdEZsdXNoYCBpcyBhbiBpbXBsZW1lbnRhdGlv
bi1zcGVjaWZpYyBtZXRob2QgdGhhdCBhdHRlbXB0cyB0byBraWNrXG4vLyBvZmYgYSBgZmx1c2hg
IGV2ZW50IGFzIHF1aWNrbHkgYXMgcG9zc2libGUuIGBmbHVzaGAgd2lsbCBhdHRlbXB0IHRvIGV4
aGF1c3Rcbi8vIHRoZSBldmVudCBxdWV1ZSBiZWZvcmUgeWllbGRpbmcgdG8gdGhlIGJyb3dzZXIn
cyBvd24gZXZlbnQgbG9vcC5cbnZhciByZXF1ZXN0Rmx1c2g7XG4vLyBUaGUgcG9zaXRpb24gb2Yg
dGhlIG5leHQgdGFzayB0byBleGVjdXRlIGluIHRoZSB0YXNrIHF1ZXVlLiBUaGlzIGlzXG4vLyBw
cmVzZXJ2ZWQgYmV0d2VlbiBjYWxscyB0byBgZmx1c2hgIHNvIHRoYXQgaXQgY2FuIGJlIHJlc3Vt
ZWQgaWZcbi8vIGEgdGFzayB0aHJvd3MgYW4gZXhjZXB0aW9uLlxudmFyIGluZGV4ID0gMDtcbi8v
IElmIGEgdGFzayBzY2hlZHVsZXMgYWRkaXRpb25hbCB0YXNrcyByZWN1cnNpdmVseSwgdGhlIHRh
c2sgcXVldWUgY2FuIGdyb3dcbi8vIHVuYm91bmRlZC4gVG8gcHJldmVudCBtZW1vcnkgZXhoYXVz
dGlvbiwgdGhlIHRhc2sgcXVldWUgd2lsbCBwZXJpb2RpY2FsbHlcbi8vIHRydW5jYXRlIGFscmVh
ZHktY29tcGxldGVkIHRhc2tzLlxudmFyIGNhcGFjaXR5ID0gMTAyNDtcblxuLy8gVGhlIGZsdXNo
IGZ1bmN0aW9uIHByb2Nlc3NlcyBhbGwgdGFza3MgdGhhdCBoYXZlIGJlZW4gc2NoZWR1bGVkIHdp
dGhcbi8vIGByYXdBc2FwYCB1bmxlc3MgYW5kIHVudGlsIG9uZSBvZiB0aG9zZSB0YXNrcyB0aHJv
d3MgYW4gZXhjZXB0aW9uLlxuLy8gSWYgYSB0YXNrIHRocm93cyBhbiBleGNlcHRpb24sIGBmbHVz
aGAgZW5zdXJlcyB0aGF0IGl0cyBzdGF0ZSB3aWxsIHJlbWFpblxuLy8gY29uc2lzdGVudCBhbmQg
d2lsbCByZXN1bWUgd2hlcmUgaXQgbGVmdCBvZmYgd2hlbiBjYWxsZWQgYWdhaW4uXG4vLyBIb3dl
dmVyLCBgZmx1c2hgIGRvZXMgbm90IG1ha2UgYW55IGFycmFuZ2VtZW50cyB0byBiZSBjYWxsZWQg
YWdhaW4gaWYgYW5cbi8vIGV4Y2VwdGlvbiBpcyB0aHJvd24uXG5mdW5jdGlvbiBmbHVzaCgpIHtc
biAgICB3aGlsZSAoaW5kZXggPCBxdWV1ZS5sZW5ndGgpIHtcbiAgICAgICAgdmFyIGN1cnJlbnRJ
bmRleCA9IGluZGV4O1xuICAgICAgICAvLyBBZHZhbmNlIHRoZSBpbmRleCBiZWZvcmUgY2FsbGlu
ZyB0aGUgdGFzay4gVGhpcyBlbnN1cmVzIHRoYXQgd2Ugd2lsbFxuICAgICAgICAvLyBiZWdpbiBm
bHVzaGluZyBvbiB0aGUgbmV4dCB0YXNrIHRoZSB0YXNrIHRocm93cyBhbiBlcnJvci5cbiAgICAg
ICAgaW5kZXggPSBpbmRleCArIDE7XG4gICAgICAgIHF1ZXVlW2N1cnJlbnRJbmRleF0uY2FsbCgp
O1xuICAgICAgICAvLyBQcmV2ZW50IGxlYWtpbmcgbWVtb3J5IGZvciBsb25nIGNoYWlucyBvZiBy
ZWN1cnNpdmUgY2FsbHMgdG8gYGFzYXBgLlxuICAgICAgICAvLyBJZiB3ZSBjYWxsIGBhc2FwYCB3
aXRoaW4gdGFza3Mgc2NoZWR1bGVkIGJ5IGBhc2FwYCwgdGhlIHF1ZXVlIHdpbGxcbiAgICAgICAg
Ly8gZ3JvdywgYnV0IHRvIGF2b2lkIGFuIE8obikgd2FsayBmb3IgZXZlcnkgdGFzayB3ZSBleGVj
dXRlLCB3ZSBkb24ndFxuICAgICAgICAvLyBzaGlmdCB0YXNrcyBvZmYgdGhlIHF1ZXVlIGFmdGVy
IHRoZXkgaGF2ZSBiZWVuIGV4ZWN1dGVkLlxuICAgICAgICAvLyBJbnN0ZWFkLCB3ZSBwZXJpb2Rp
Y2FsbHkgc2hpZnQgMTAyNCB0YXNrcyBvZmYgdGhlIHF1ZXVlLlxuICAgICAgICBpZiAoaW5kZXgg
PiBjYXBhY2l0eSkge1xuICAgICAgICAgICAgLy8gTWFudWFsbHkgc2hpZnQgYWxsIHZhbHVlcyBz
dGFydGluZyBhdCB0aGUgaW5kZXggYmFjayB0byB0aGVcbiAgICAgICAgICAgIC8vIGJlZ2lubmlu
ZyBvZiB0aGUgcXVldWUuXG4gICAgICAgICAgICBmb3IgKHZhciBzY2FuID0gMCwgbmV3TGVuZ3Ro
ID0gcXVldWUubGVuZ3RoIC0gaW5kZXg7IHNjYW4gPCBuZXdMZW5ndGg7IHNjYW4rKykge1xuICAg
ICAgICAgICAgICAgIHF1ZXVlW3NjYW5dID0gcXVldWVbc2NhbiArIGluZGV4XTtcbiAgICAgICAg
ICAgIH1cbiAgICAgICAgICAgIHF1ZXVlLmxlbmd0aCAtPSBpbmRleDtcbiAgICAgICAgICAgIGlu
ZGV4ID0gMDtcbiAgICAgICAgfVxuICAgIH1cbiAgICBxdWV1ZS5sZW5ndGggPSAwO1xuICAgIGlu
ZGV4ID0gMDtcbiAgICBmbHVzaGluZyA9IGZhbHNlO1xufVxuXG4vLyBgcmVxdWVzdEZsdXNoYCBp
cyBpbXBsZW1lbnRlZCB1c2luZyBhIHN0cmF0ZWd5IGJhc2VkIG9uIGRhdGEgY29sbGVjdGVkIGZy
b21cbi8vIGV2ZXJ5IGF2YWlsYWJsZSBTYXVjZUxhYnMgU2VsZW5pdW0gd2ViIGRyaXZlciB3b3Jr
ZXIgYXQgdGltZSBvZiB3cml0aW5nLlxuLy8gaHR0cHM6Ly9kb2NzLmdvb2dsZS5jb20vc3ByZWFk
c2hlZXRzL2QvMW1HLTVVWUd1cDVxeEdkRU1Xa2hQNkJXQ3owNTNOVWIyRTFRb1VUVTE2dUEvZWRp
dCNnaWQ9NzgzNzI0NTkzXG5cbi8vIFNhZmFyaSA2IGFuZCA2LjEgZm9yIGRlc2t0b3AsIGlQYWQs
IGFuZCBpUGhvbmUgYXJlIHRoZSBvbmx5IGJyb3dzZXJzIHRoYXRcbi8vIGhhdmUgV2ViS2l0TXV0
YXRpb25PYnNlcnZlciBidXQgbm90IHVuLXByZWZpeGVkIE11dGF0aW9uT2JzZXJ2ZXIuXG4vLyBN
dXN0IHVzZSBgZ2xvYmFsYCBvciBgc2VsZmAgaW5zdGVhZCBvZiBgd2luZG93YCB0byB3b3JrIGlu
IGJvdGggZnJhbWVzIGFuZCB3ZWJcbi8vIHdvcmtlcnMuIGBnbG9iYWxgIGlzIGEgcHJvdmlzaW9u
IG9mIEJyb3dzZXJpZnksIE1yLCBNcnMsIG9yIE1vcC5cblxuLyogZ2xvYmFscyBzZWxmICovXG52
YXIgc2NvcGUgPSB0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiID8gZ2xvYmFsIDogc2Vs
ZjtcbnZhciBCcm93c2VyTXV0YXRpb25PYnNlcnZlciA9IHNjb3BlLk11dGF0aW9uT2JzZXJ2ZXIg
fHwgc2NvcGUuV2ViS2l0TXV0YXRpb25PYnNlcnZlcjtcblxuLy8gTXV0YXRpb25PYnNlcnZlcnMg
YXJlIGRlc2lyYWJsZSBiZWNhdXNlIHRoZXkgaGF2ZSBoaWdoIHByaW9yaXR5IGFuZCB3b3JrXG4v
LyByZWxpYWJseSBldmVyeXdoZXJlIHRoZXkgYXJlIGltcGxlbWVudGVkLlxuLy8gVGhleSBhcmUg
aW1wbGVtZW50ZWQgaW4gYWxsIG1vZGVybiBicm93c2Vycy5cbi8vXG4vLyAtIEFuZHJvaWQgNC00
LjNcbi8vIC0gQ2hyb21lIDI2LTM0XG4vLyAtIEZpcmVmb3ggMTQtMjlcbi8vIC0gSW50ZXJuZXQg
RXhwbG9yZXIgMTFcbi8vIC0gaVBhZCBTYWZhcmkgNi03LjFcbi8vIC0gaVBob25lIFNhZmFyaSA3
LTcuMVxuLy8gLSBTYWZhcmkgNi03XG5pZiAodHlwZW9mIEJyb3dzZXJNdXRhdGlvbk9ic2VydmVy
ID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICByZXF1ZXN0Rmx1c2ggPSBtYWtlUmVxdWVzdENhbGxG
cm9tTXV0YXRpb25PYnNlcnZlcihmbHVzaCk7XG5cbi8vIE1lc3NhZ2VDaGFubmVscyBhcmUgZGVz
aXJhYmxlIGJlY2F1c2UgdGhleSBnaXZlIGRpcmVjdCBhY2Nlc3MgdG8gdGhlIEhUTUxcbi8vIHRh
c2sgcXVldWUsIGFyZSBpbXBsZW1lbnRlZCBpbiBJbnRlcm5ldCBFeHBsb3JlciAxMCwgU2FmYXJp
IDUuMC0xLCBhbmQgT3BlcmFcbi8vIDExLTEyLCBhbmQgaW4gd2ViIHdvcmtlcnMgaW4gbWFueSBl
bmdpbmVzLlxuLy8gQWx0aG91Z2ggbWVzc2FnZSBjaGFubmVscyB5aWVsZCB0byBhbnkgcXVldWVk
IHJlbmRlcmluZyBhbmQgSU8gdGFza3MsIHRoZXlcbi8vIHdvdWxkIGJlIGJldHRlciB0aGFuIGlt
cG9zaW5nIHRoZSA0bXMgZGVsYXkgb2YgdGltZXJzLlxuLy8gSG93ZXZlciwgdGhleSBkbyBub3Qg
d29yayByZWxpYWJseSBpbiBJbnRlcm5ldCBFeHBsb3JlciBvciBTYWZhcmkuXG5cbi8vIEludGVy
bmV0IEV4cGxvcmVyIDEwIGlzIHRoZSBvbmx5IGJyb3dzZXIgdGhhdCBoYXMgc2V0SW1tZWRpYXRl
IGJ1dCBkb2VzXG4vLyBub3QgaGF2ZSBNdXRhdGlvbk9ic2VydmVycy5cbi8vIEFsdGhvdWdoIHNl
dEltbWVkaWF0ZSB5aWVsZHMgdG8gdGhlIGJyb3dzZXIncyByZW5kZXJlciwgaXQgd291bGQgYmVc
bi8vIHByZWZlcnJhYmxlIHRvIGZhbGxpbmcgYmFjayB0byBzZXRUaW1lb3V0IHNpbmNlIGl0IGRv
ZXMgbm90IGhhdmVcbi8vIHRoZSBtaW5pbXVtIDRtcyBwZW5hbHR5LlxuLy8gVW5mb3J0dW5hdGVs
eSB0aGVyZSBhcHBlYXJzIHRvIGJlIGEgYnVnIGluIEludGVybmV0IEV4cGxvcmVyIDEwIE1vYmls
ZSAoYW5kXG4vLyBEZXNrdG9wIHRvIGEgbGVzc2VyIGV4dGVudCkgdGhhdCByZW5kZXJzIGJvdGgg
c2V0SW1tZWRpYXRlIGFuZFxuLy8gTWVzc2FnZUNoYW5uZWwgdXNlbGVzcyBmb3IgdGhlIHB1cnBv
c2VzIG9mIEFTQVAuXG4vLyBodHRwczovL2dpdGh1Yi5jb20va3Jpc2tvd2FsL3EvaXNzdWVzLzM5
NlxuXG4vLyBUaW1lcnMgYXJlIGltcGxlbWVudGVkIHVuaXZlcnNhbGx5LlxuLy8gV2UgZmFsbCBi
YWNrIHRvIHRpbWVycyBpbiB3b3JrZXJzIGluIG1vc3QgZW5naW5lcywgYW5kIGluIGZvcmVncm91
bmRcbi8vIGNvbnRleHRzIGluIHRoZSBmb2xsb3dpbmcgYnJvd3NlcnMuXG4vLyBIb3dldmVyLCBu
b3RlIHRoYXQgZXZlbiB0aGlzIHNpbXBsZSBjYXNlIHJlcXVpcmVzIG51YW5jZXMgdG8gb3BlcmF0
ZSBpbiBhXG4vLyBicm9hZCBzcGVjdHJ1bSBvZiBicm93c2Vycy5cbi8vXG4vLyAtIEZpcmVmb3gg
My0xM1xuLy8gLSBJbnRlcm5ldCBFeHBsb3JlciA2LTlcbi8vIC0gaVBhZCBTYWZhcmkgNC4zXG4v
LyAtIEx5bnggMi44Ljdcbn0gZWxzZSB7XG4gICAgcmVxdWVzdEZsdXNoID0gbWFrZVJlcXVlc3RD
YWxsRnJvbVRpbWVyKGZsdXNoKTtcbn1cblxuLy8gYHJlcXVlc3RGbHVzaGAgcmVxdWVzdHMgdGhh
dCB0aGUgaGlnaCBwcmlvcml0eSBldmVudCBxdWV1ZSBiZSBmbHVzaGVkIGFzXG4vLyBzb29uIGFz
IHBvc3NpYmxlLlxuLy8gVGhpcyBpcyB1c2VmdWwgdG8gcHJldmVudCBhbiBlcnJvciB0aHJvd24g
aW4gYSB0YXNrIGZyb20gc3RhbGxpbmcgdGhlIGV2ZW50XG4vLyBxdWV1ZSBpZiB0aGUgZXhjZXB0
aW9uIGhhbmRsZWQgYnkgTm9kZS5qc+KAmXNcbi8vIGBwcm9jZXNzLm9uKFwidW5jYXVnaHRFeGNl
cHRpb25cIilgIG9yIGJ5IGEgZG9tYWluLlxucmF3QXNhcC5yZXF1ZXN0Rmx1c2ggPSByZXF1ZXN0
Rmx1c2g7XG5cbi8vIFRvIHJlcXVlc3QgYSBoaWdoIHByaW9yaXR5IGV2ZW50LCB3ZSBpbmR1Y2Ug
YSBtdXRhdGlvbiBvYnNlcnZlciBieSB0b2dnbGluZ1xuLy8gdGhlIHRleHQgb2YgYSB0ZXh0IG5v
ZGUgYmV0d2VlbiBcIjFcIiBhbmQgXCItMVwiLlxuZnVuY3Rpb24gbWFrZVJlcXVlc3RDYWxsRnJv
bU11dGF0aW9uT2JzZXJ2ZXIoY2FsbGJhY2spIHtcbiAgICB2YXIgdG9nZ2xlID0gMTtcbiAgICB2
YXIgb2JzZXJ2ZXIgPSBuZXcgQnJvd3Nlck11dGF0aW9uT2JzZXJ2ZXIoY2FsbGJhY2spO1xuICAg
IHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoXCJcIik7XG4gICAgb2JzZXJ2ZXIu
b2JzZXJ2ZShub2RlLCB7Y2hhcmFjdGVyRGF0YTogdHJ1ZX0pO1xuICAgIHJldHVybiBmdW5jdGlv
biByZXF1ZXN0Q2FsbCgpIHtcbiAgICAgICAgdG9nZ2xlID0gLXRvZ2dsZTtcbiAgICAgICAgbm9k
ZS5kYXRhID0gdG9nZ2xlO1xuICAgIH07XG59XG5cbi8vIFRoZSBtZXNzYWdlIGNoYW5uZWwgdGVj
aG5pcXVlIHdhcyBkaXNjb3ZlcmVkIGJ5IE1hbHRlIFVibCBhbmQgd2FzIHRoZVxuLy8gb3JpZ2lu
YWwgZm91bmRhdGlvbiBmb3IgdGhpcyBsaWJyYXJ5LlxuLy8gaHR0cDovL3d3dy5ub25ibG9ja2lu
Zy5pby8yMDExLzA2L3dpbmRvd25leHR0aWNrLmh0bWxcblxuLy8gU2FmYXJpIDYuMC41IChhdCBs
ZWFzdCkgaW50ZXJtaXR0ZW50bHkgZmFpbHMgdG8gY3JlYXRlIG1lc3NhZ2UgcG9ydHMgb24gYVxu
Ly8gcGFnZSdzIGZpcnN0IGxvYWQuIFRoYW5rZnVsbHksIHRoaXMgdmVyc2lvbiBvZiBTYWZhcmkg
c3VwcG9ydHNcbi8vIE11dGF0aW9uT2JzZXJ2ZXJzLCBzbyB3ZSBkb24ndCBuZWVkIHRvIGZhbGwg
YmFjayBpbiB0aGF0IGNhc2UuXG5cbi8vIGZ1bmN0aW9uIG1ha2VSZXF1ZXN0Q2FsbEZyb21NZXNz
YWdlQ2hhbm5lbChjYWxsYmFjaykge1xuLy8gICAgIHZhciBjaGFubmVsID0gbmV3IE1lc3NhZ2VD
aGFubmVsKCk7XG4vLyAgICAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBjYWxsYmFjaztcbi8v
ICAgICByZXR1cm4gZnVuY3Rpb24gcmVxdWVzdENhbGwoKSB7XG4vLyAgICAgICAgIGNoYW5uZWwu
cG9ydDIucG9zdE1lc3NhZ2UoMCk7XG4vLyAgICAgfTtcbi8vIH1cblxuLy8gRm9yIHJlYXNvbnMg
ZXhwbGFpbmVkIGFib3ZlLCB3ZSBhcmUgYWxzbyB1bmFibGUgdG8gdXNlIGBzZXRJbW1lZGlhdGVg
XG4vLyB1bmRlciBhbnkgY2lyY3Vtc3RhbmNlcy5cbi8vIEV2ZW4gaWYgd2Ugd2VyZSwgdGhlcmUg
aXMgYW5vdGhlciBidWcgaW4gSW50ZXJuZXQgRXhwbG9yZXIgMTAuXG4vLyBJdCBpcyBub3Qgc3Vm
ZmljaWVudCB0byBhc3NpZ24gYHNldEltbWVkaWF0ZWAgdG8gYHJlcXVlc3RGbHVzaGAgYmVjYXVz
ZVxuLy8gYHNldEltbWVkaWF0ZWAgbXVzdCBiZSBjYWxsZWQgKmJ5IG5hbWUqIGFuZCB0aGVyZWZv
cmUgbXVzdCBiZSB3cmFwcGVkIGluIGFcbi8vIGNsb3N1cmUuXG4vLyBOZXZlciBmb3JnZXQuXG5c
bi8vIGZ1bmN0aW9uIG1ha2VSZXF1ZXN0Q2FsbEZyb21TZXRJbW1lZGlhdGUoY2FsbGJhY2spIHtc
bi8vICAgICByZXR1cm4gZnVuY3Rpb24gcmVxdWVzdENhbGwoKSB7XG4vLyAgICAgICAgIHNldElt
bWVkaWF0ZShjYWxsYmFjayk7XG4vLyAgICAgfTtcbi8vIH1cblxuLy8gU2FmYXJpIDYuMCBoYXMg
YSBwcm9ibGVtIHdoZXJlIHRpbWVycyB3aWxsIGdldCBsb3N0IHdoaWxlIHRoZSB1c2VyIGlzXG4v
LyBzY3JvbGxpbmcuIFRoaXMgcHJvYmxlbSBkb2VzIG5vdCBpbXBhY3QgQVNBUCBiZWNhdXNlIFNh
ZmFyaSA2LjAgc3VwcG9ydHNcbi8vIG11dGF0aW9uIG9ic2VydmVycywgc28gdGhhdCBpbXBsZW1l
bnRhdGlvbiBpcyB1c2VkIGluc3RlYWQuXG4vLyBIb3dldmVyLCBpZiB3ZSBldmVyIGVsZWN0IHRv
IHVzZSB0aW1lcnMgaW4gU2FmYXJpLCB0aGUgcHJldmFsZW50IHdvcmstYXJvdW5kXG4vLyBpcyB0
byBhZGQgYSBzY3JvbGwgZXZlbnQgbGlzdGVuZXIgdGhhdCBjYWxscyBmb3IgYSBmbHVzaC5cblxu
Ly8gYHNldFRpbWVvdXRgIGRvZXMgbm90IGNhbGwgdGhlIHBhc3NlZCBjYWxsYmFjayBpZiB0aGUg
ZGVsYXkgaXMgbGVzcyB0aGFuXG4vLyBhcHByb3hpbWF0ZWx5IDcgaW4gd2ViIHdvcmtlcnMgaW4g
RmlyZWZveCA4IHRocm91Z2ggMTgsIGFuZCBzb21ldGltZXMgbm90XG4vLyBldmVuIHRoZW4uXG5c
bmZ1bmN0aW9uIG1ha2VSZXF1ZXN0Q2FsbEZyb21UaW1lcihjYWxsYmFjaykge1xuICAgIHJldHVy
biBmdW5jdGlvbiByZXF1ZXN0Q2FsbCgpIHtcbiAgICAgICAgLy8gV2UgZGlzcGF0Y2ggYSB0aW1l
b3V0IHdpdGggYSBzcGVjaWZpZWQgZGVsYXkgb2YgMCBmb3IgZW5naW5lcyB0aGF0XG4gICAgICAg
IC8vIGNhbiByZWxpYWJseSBhY2NvbW1vZGF0ZSB0aGF0IHJlcXVlc3QuIFRoaXMgd2lsbCB1c3Vh
bGx5IGJlIHNuYXBwZWRcbiAgICAgICAgLy8gdG8gYSA0IG1pbGlzZWNvbmQgZGVsYXksIGJ1dCBv
bmNlIHdlJ3JlIGZsdXNoaW5nLCB0aGVyZSdzIG5vIGRlbGF5XG4gICAgICAgIC8vIGJldHdlZW4g
ZXZlbnRzLlxuICAgICAgICB2YXIgdGltZW91dEhhbmRsZSA9IHNldFRpbWVvdXQoaGFuZGxlVGlt
ZXIsIDApO1xuICAgICAgICAvLyBIb3dldmVyLCBzaW5jZSB0aGlzIHRpbWVyIGdldHMgZnJlcXVl
bnRseSBkcm9wcGVkIGluIEZpcmVmb3hcbiAgICAgICAgLy8gd29ya2Vycywgd2UgZW5saXN0IGFu
IGludGVydmFsIGhhbmRsZSB0aGF0IHdpbGwgdHJ5IHRvIGZpcmVcbiAgICAgICAgLy8gYW4gZXZl
bnQgMjAgdGltZXMgcGVyIHNlY29uZCB1bnRpbCBpdCBzdWNjZWVkcy5cbiAgICAgICAgdmFyIGlu
dGVydmFsSGFuZGxlID0gc2V0SW50ZXJ2YWwoaGFuZGxlVGltZXIsIDUwKTtcblxuICAgICAgICBm
dW5jdGlvbiBoYW5kbGVUaW1lcigpIHtcbiAgICAgICAgICAgIC8vIFdoaWNoZXZlciB0aW1lciBz
dWNjZWVkcyB3aWxsIGNhbmNlbCBib3RoIHRpbWVycyBhbmRcbiAgICAgICAgICAgIC8vIGV4ZWN1
dGUgdGhlIGNhbGxiYWNrLlxuICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRIYW5kbGUp
O1xuICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChpbnRlcnZhbEhhbmRsZSk7XG4gICAgICAgICAg
ICBjYWxsYmFjaygpO1xuICAgICAgICB9XG4gICAgfTtcbn1cblxuLy8gVGhpcyBpcyBmb3IgYGFz
YXAuanNgIG9ubHkuXG4vLyBJdHMgbmFtZSB3aWxsIGJlIHBlcmlvZGljYWxseSByYW5kb21pemVk
IHRvIGJyZWFrIGFueSBjb2RlIHRoYXQgZGVwZW5kcyBvblxuLy8gaXRzIGV4aXN0ZW5jZS5cbnJh
d0FzYXAubWFrZVJlcXVlc3RDYWxsRnJvbVRpbWVyID0gbWFrZVJlcXVlc3RDYWxsRnJvbVRpbWVy
O1xuXG4vLyBBU0FQIHdhcyBvcmlnaW5hbGx5IGEgbmV4dFRpY2sgc2hpbSBpbmNsdWRlZCBpbiBR
LiBUaGlzIHdhcyBmYWN0b3JlZCBvdXRcbi8vIGludG8gdGhpcyBBU0FQIHBhY2thZ2UuIEl0IHdh
cyBsYXRlciBhZGFwdGVkIHRvIFJTVlAgd2hpY2ggbWFkZSBmdXJ0aGVyXG4vLyBhbWVuZG1lbnRz
LiBUaGVzZSBkZWNpc2lvbnMsIHBhcnRpY3VsYXJseSB0byBtYXJnaW5hbGl6ZSBNZXNzYWdlQ2hh
bm5lbCBhbmRcbi8vIHRvIGNhcHR1cmUgdGhlIE11dGF0aW9uT2JzZXJ2ZXIgaW1wbGVtZW50YXRp
b24gaW4gYSBjbG9zdXJlLCB3ZXJlIGludGVncmF0ZWRcbi8vIGJhY2sgaW50byBBU0FQIHByb3Bl
ci5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS90aWxkZWlvL3JzdnAuanMvYmxvYi9jZGRmNzIzMjU0
NmE5Y2Y4NTg1MjRiNzVjZGU2ZjllZGY3MjYyMGE3L2xpYi9yc3ZwL2FzYXAuanNcblxuXG5cbi8q
KioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LXNjcmlw
dHMvfi9hc2FwL2Jyb3dzZXItcmF3LmpzXG4gKiogbW9kdWxlIGlkID0gMTk3XG4gKiogbW9kdWxl
IGNodW5rcyA9IDBcbiAqKi8iLCJpbXBvcnQgKiBhcyB0eXBlcyBmcm9tICcuLi9jb25zdGFudHMv
QWN0aW9uVHlwZXMnXG5cbmV4cG9ydCBjb25zdCBhZGRUb2RvID0gdGV4dCA9PiAoeyB0eXBlOiB0
eXBlcy5BRERfVE9ETywgdGV4dCB9KVxuZXhwb3J0IGNvbnN0IGRlbGV0ZVRvZG8gPSBpZCA9PiAo
eyB0eXBlOiB0eXBlcy5ERUxFVEVfVE9ETywgaWQgfSlcbmV4cG9ydCBjb25zdCBlZGl0VG9kbyA9
IChpZCwgdGV4dCkgPT4gKHsgdHlwZTogdHlwZXMuRURJVF9UT0RPLCBpZCwgdGV4dCB9KVxuZXhw
b3J0IGNvbnN0IGNvbXBsZXRlVG9kbyA9IGlkID0+ICh7IHR5cGU6IHR5cGVzLkNPTVBMRVRFX1RP
RE8sIGlkIH0pXG5leHBvcnQgY29uc3QgY29tcGxldGVBbGwgPSAoKSA9PiAoeyB0eXBlOiB0eXBl
cy5DT01QTEVURV9BTEwgfSlcbmV4cG9ydCBjb25zdCBjbGVhckNvbXBsZXRlZCA9ICgpID0+ICh7
IHR5cGU6IHR5cGVzLkNMRUFSX0NPTVBMRVRFRCB9KVxuXG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVS
ICoqXG4gKiogLi9zcmMvYWN0aW9ucy9pbmRleC5qc1xuICoqLyIsImltcG9ydCBSZWFjdCwgeyBQ
cm9wVHlwZXMsIENvbXBvbmVudCB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IGNsYXNzbmFtZXMgZnJv
bSAnY2xhc3NuYW1lcydcbmltcG9ydCB7IFNIT1dfQUxMLCBTSE9XX0NPTVBMRVRFRCwgU0hPV19B
Q1RJVkUgfSBmcm9tICcuLi9jb25zdGFudHMvVG9kb0ZpbHRlcnMnXG5cbmNvbnN0IEZJTFRFUl9U
SVRMRVMgPSB7XG4gIFtTSE9XX0FMTF06ICdBbGwnLFxuICBbU0hPV19BQ1RJVkVdOiAnQWN0aXZl
JyxcbiAgW1NIT1dfQ09NUExFVEVEXTogJ0NvbXBsZXRlZCdcbn1cblxuZXhwb3J0IGRlZmF1bHQg
Y2xhc3MgRm9vdGVyIGV4dGVuZHMgQ29tcG9uZW50IHtcbiAgc3RhdGljIHByb3BUeXBlcyA9IHtc
biAgICBjb21wbGV0ZWRDb3VudDogUHJvcFR5cGVzLm51bWJlci5pc1JlcXVpcmVkLFxuICAgIGFj
dGl2ZUNvdW50OiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsXG4gICAgZmlsdGVyOiBQcm9w
VHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgb25DbGVhckNvbXBsZXRlZDogUHJvcFR5cGVz
LmZ1bmMuaXNSZXF1aXJlZCxcbiAgICBvblNob3c6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRc
biAgfVxuXG4gIHJlbmRlclRvZG9Db3VudCgpIHtcbiAgICBjb25zdCB7IGFjdGl2ZUNvdW50IH0g
PSB0aGlzLnByb3BzXG4gICAgY29uc3QgaXRlbVdvcmQgPSBhY3RpdmVDb3VudCA9PT0gMSA/ICdp
dGVtJyA6ICdpdGVtcydcblxuICAgIHJldHVybiAoXG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0
b2RvLWNvdW50XCI+XG4gICAgICAgIDxzdHJvbmc+e2FjdGl2ZUNvdW50IHx8ICdObyd9PC9zdHJv
bmc+IHtpdGVtV29yZH0gbGVmdFxuICAgICAgPC9zcGFuPlxuICAgIClcbiAgfVxuXG4gIHJlbmRl
ckZpbHRlckxpbmsoZmlsdGVyKSB7XG4gICAgY29uc3QgdGl0bGUgPSBGSUxURVJfVElUTEVTW2Zp
bHRlcl1cbiAgICBjb25zdCB7IGZpbHRlcjogc2VsZWN0ZWRGaWx0ZXIsIG9uU2hvdyB9ID0gdGhp
cy5wcm9wc1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxhIGNsYXNzTmFtZT17Y2xhc3NuYW1lcyh7
IHNlbGVjdGVkOiBmaWx0ZXIgPT09IHNlbGVjdGVkRmlsdGVyIH0pfVxuICAgICAgICAgc3R5bGU9
e3sgY3Vyc29yOiAncG9pbnRlcicgfX1cbiAgICAgICAgIG9uQ2xpY2s9eygpID0+IG9uU2hvdyhm
aWx0ZXIpfT5cbiAgICAgICAge3RpdGxlfVxuICAgICAgPC9hPlxuICAgIClcbiAgfVxuXG4gIHJl
bmRlckNsZWFyQnV0dG9uKCkge1xuICAgIGNvbnN0IHsgY29tcGxldGVkQ291bnQsIG9uQ2xlYXJD
b21wbGV0ZWQgfSA9IHRoaXMucHJvcHNcbiAgICBpZiAoY29tcGxldGVkQ291bnQgPiAwKSB7XG4g
ICAgICByZXR1cm4gKFxuICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1cImNsZWFyLWNvbXBsZXRl
ZFwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17b25DbGVhckNvbXBsZXRlZH0gPlxuICAgICAg
ICAgIENsZWFyIGNvbXBsZXRlZFxuICAgICAgICA8L2J1dHRvbj5cbiAgICAgIClcbiAgICB9XG4g
IH1cblxuICByZW5kZXIoKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxmb290ZXIgY2xhc3NOYW1l
PVwiZm9vdGVyXCI+XG4gICAgICAgIHt0aGlzLnJlbmRlclRvZG9Db3VudCgpfVxuICAgICAgICA8
dWwgY2xhc3NOYW1lPVwiZmlsdGVyc1wiPlxuICAgICAgICAgIHtbIFNIT1dfQUxMLCBTSE9XX0FD
VElWRSwgU0hPV19DT01QTEVURUQgXS5tYXAoZmlsdGVyID0+XG4gICAgICAgICAgICA8bGkga2V5
PXtmaWx0ZXJ9PlxuICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJGaWx0ZXJMaW5rKGZpbHRlcil9
XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvdWw+XG4gICAgICAg
IHt0aGlzLnJlbmRlckNsZWFyQnV0dG9uKCl9XG4gICAgICA8L2Zvb3Rlcj5cbiAgICApXG4gIH1c
bn1cblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4vc3JjL2NvbXBvbmVudHMvRm9v
dGVyLmpzXG4gKiovIiwiaW1wb3J0IFJlYWN0LCB7IFByb3BUeXBlcywgQ29tcG9uZW50IH0gZnJv
bSAncmVhY3QnXG5pbXBvcnQgVG9kb1RleHRJbnB1dCBmcm9tICcuL1RvZG9UZXh0SW5wdXQnXG5c
bmV4cG9ydCBkZWZhdWx0IGNsYXNzIEhlYWRlciBleHRlbmRzIENvbXBvbmVudCB7XG4gIHN0YXRp
YyBwcm9wVHlwZXMgPSB7XG4gICAgYWRkVG9kbzogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZFxu
ICB9XG5cbiAgaGFuZGxlU2F2ZSA9IHRleHQgPT4ge1xuICAgIGlmICh0ZXh0Lmxlbmd0aCAhPT0g
MCkge1xuICAgICAgdGhpcy5wcm9wcy5hZGRUb2RvKHRleHQpXG4gICAgfVxuICB9XG5cbiAgcmVu
ZGVyKCkge1xuICAgIHJldHVybiAoXG4gICAgICA8aGVhZGVyIGNsYXNzTmFtZT1cImhlYWRlclwi
PlxuICAgICAgICA8aDE+dG9kb3M8L2gxPlxuICAgICAgICA8VG9kb1RleHRJbnB1dCBuZXdUb2Rv
XG4gICAgICAgICAgICAgICAgICAgICAgIG9uU2F2ZT17dGhpcy5oYW5kbGVTYXZlfVxuICAgICAg
ICAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj1cIldoYXQgbmVlZHMgdG8gYmUgZG9uZT9cIiAv
PlxuICAgICAgPC9oZWFkZXI+XG4gICAgKVxuICB9XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09U
RVIgKipcbiAqKiAuL3NyYy9jb21wb25lbnRzL0hlYWRlci5qc1xuICoqLyIsImltcG9ydCBSZWFj
dCwgeyBDb21wb25lbnQsIFByb3BUeXBlcyB9IGZyb20gJ3JlYWN0J1xuaW1wb3J0IFRvZG9JdGVt
IGZyb20gJy4vVG9kb0l0ZW0nXG5pbXBvcnQgRm9vdGVyIGZyb20gJy4vRm9vdGVyJ1xuaW1wb3J0
IHsgU0hPV19BTEwsIFNIT1dfQ09NUExFVEVELCBTSE9XX0FDVElWRSB9IGZyb20gJy4uL2NvbnN0
YW50cy9Ub2RvRmlsdGVycydcblxuY29uc3QgVE9ET19GSUxURVJTID0ge1xuICBbU0hPV19BTExd
OiAoKSA9PiB0cnVlLFxuICBbU0hPV19BQ1RJVkVdOiB0b2RvID0+ICF0b2RvLmNvbXBsZXRlZCxc
biAgW1NIT1dfQ09NUExFVEVEXTogdG9kbyA9PiB0b2RvLmNvbXBsZXRlZFxufVxuXG5leHBvcnQg
ZGVmYXVsdCBjbGFzcyBNYWluU2VjdGlvbiBleHRlbmRzIENvbXBvbmVudCB7XG4gIHN0YXRpYyBw
cm9wVHlwZXMgPSB7XG4gICAgdG9kb3M6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICAg
IGFjdGlvbnM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZFxuICB9XG5cbiAgc3RhdGUgPSB7
IGZpbHRlcjogU0hPV19BTEwgfVxuXG4gIGhhbmRsZUNsZWFyQ29tcGxldGVkID0gKCkgPT4ge1xu
ICAgIHRoaXMucHJvcHMuYWN0aW9ucy5jbGVhckNvbXBsZXRlZCgpXG4gIH1cblxuICBoYW5kbGVT
aG93ID0gZmlsdGVyID0+IHtcbiAgICB0aGlzLnNldFN0YXRlKHsgZmlsdGVyIH0pXG4gIH1cblxu
ICByZW5kZXJUb2dnbGVBbGwoY29tcGxldGVkQ291bnQpIHtcbiAgICBjb25zdCB7IHRvZG9zLCBh
Y3Rpb25zIH0gPSB0aGlzLnByb3BzXG4gICAgaWYgKHRvZG9zLmxlbmd0aCA+IDApIHtcbiAgICAg
IHJldHVybiAoXG4gICAgICAgIDxpbnB1dCBjbGFzc05hbWU9XCJ0b2dnbGUtYWxsXCJcbiAgICAg
ICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICBjaGVja2VkPXtjb21w
bGV0ZWRDb3VudCA9PT0gdG9kb3MubGVuZ3RofVxuICAgICAgICAgICAgICAgb25DaGFuZ2U9e2Fj
dGlvbnMuY29tcGxldGVBbGx9IC8+XG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgcmVuZGVyRm9v
dGVyKGNvbXBsZXRlZENvdW50KSB7XG4gICAgY29uc3QgeyB0b2RvcyB9ID0gdGhpcy5wcm9wc1xu
ICAgIGNvbnN0IHsgZmlsdGVyIH0gPSB0aGlzLnN0YXRlXG4gICAgY29uc3QgYWN0aXZlQ291bnQg
PSB0b2Rvcy5sZW5ndGggLSBjb21wbGV0ZWRDb3VudFxuXG4gICAgaWYgKHRvZG9zLmxlbmd0aCkg
e1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgPEZvb3RlciBjb21wbGV0ZWRDb3VudD17Y29tcGxl
dGVkQ291bnR9XG4gICAgICAgICAgICAgICAgYWN0aXZlQ291bnQ9e2FjdGl2ZUNvdW50fVxuICAg
ICAgICAgICAgICAgIGZpbHRlcj17ZmlsdGVyfVxuICAgICAgICAgICAgICAgIG9uQ2xlYXJDb21w
bGV0ZWQ9e3RoaXMuaGFuZGxlQ2xlYXJDb21wbGV0ZWQuYmluZCh0aGlzKX1cbiAgICAgICAgICAg
ICAgICBvblNob3c9e3RoaXMuaGFuZGxlU2hvdy5iaW5kKHRoaXMpfSAvPlxuICAgICAgKVxuICAg
IH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7IHRvZG9zLCBhY3Rpb25zIH0gPSB0
aGlzLnByb3BzXG4gICAgY29uc3QgeyBmaWx0ZXIgfSA9IHRoaXMuc3RhdGVcblxuICAgIGNvbnN0
IGZpbHRlcmVkVG9kb3MgPSB0b2Rvcy5maWx0ZXIoVE9ET19GSUxURVJTW2ZpbHRlcl0pXG4gICAg
Y29uc3QgY29tcGxldGVkQ291bnQgPSB0b2Rvcy5yZWR1Y2UoKGNvdW50LCB0b2RvKSA9PlxuICAg
ICAgdG9kby5jb21wbGV0ZWQgPyBjb3VudCArIDEgOiBjb3VudCxcbiAgICAgIDBcbiAgICApXG5c
biAgICByZXR1cm4gKFxuICAgICAgPHNlY3Rpb24gY2xhc3NOYW1lPVwibWFpblwiPlxuICAgICAg
ICB7dGhpcy5yZW5kZXJUb2dnbGVBbGwoY29tcGxldGVkQ291bnQpfVxuICAgICAgICA8dWwgY2xh
c3NOYW1lPVwidG9kby1saXN0XCI+XG4gICAgICAgICAge2ZpbHRlcmVkVG9kb3MubWFwKHRvZG8g
PT5cbiAgICAgICAgICAgIDxUb2RvSXRlbSBrZXk9e3RvZG8uaWR9IHRvZG89e3RvZG99IHsuLi5h
Y3Rpb25zfSAvPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvdWw+XG4gICAgICAgIHt0aGlzLnJl
bmRlckZvb3Rlcihjb21wbGV0ZWRDb3VudCl9XG4gICAgICA8L3NlY3Rpb24+XG4gICAgKVxuICB9
XG59XG5cblxuXG4vKiogV0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9jb21wb25lbnRzL01h
aW5TZWN0aW9uLmpzXG4gKiovIiwiaW1wb3J0IFJlYWN0LCB7IENvbXBvbmVudCwgUHJvcFR5cGVz
IH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgY2xhc3NuYW1lcyBmcm9tICdjbGFzc25hbWVzJ1xuaW1w
b3J0IFRvZG9UZXh0SW5wdXQgZnJvbSAnLi9Ub2RvVGV4dElucHV0J1xuXG5leHBvcnQgZGVmYXVs
dCBjbGFzcyBUb2RvSXRlbSBleHRlbmRzIENvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMg
PSB7XG4gICAgdG9kbzogUHJvcFR5cGVzLm9iamVjdC5pc1JlcXVpcmVkLFxuICAgIGVkaXRUb2Rv
OiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICAgIGRlbGV0ZVRvZG86IFByb3BUeXBlcy5m
dW5jLmlzUmVxdWlyZWQsXG4gICAgY29tcGxldGVUb2RvOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVp
cmVkXG4gIH1cblxuICBzdGF0ZSA9IHtcbiAgICBlZGl0aW5nOiBmYWxzZVxuICB9XG5cbiAgaGFu
ZGxlRG91YmxlQ2xpY2sgPSAoKSA9PiB7XG4gICAgdGhpcy5zZXRTdGF0ZSh7IGVkaXRpbmc6IHRy
dWUgfSlcbiAgfVxuXG4gIGhhbmRsZVNhdmUgPSAoaWQsIHRleHQpID0+IHtcbiAgICBpZiAodGV4
dC5sZW5ndGggPT09IDApIHtcbiAgICAgIHRoaXMucHJvcHMuZGVsZXRlVG9kbyhpZClcbiAgICB9
IGVsc2Uge1xuICAgICAgdGhpcy5wcm9wcy5lZGl0VG9kbyhpZCwgdGV4dClcbiAgICB9XG4gICAg
dGhpcy5zZXRTdGF0ZSh7IGVkaXRpbmc6IGZhbHNlIH0pXG4gIH1cblxuICByZW5kZXIoKSB7XG4g
ICAgY29uc3QgeyB0b2RvLCBjb21wbGV0ZVRvZG8sIGRlbGV0ZVRvZG8gfSA9IHRoaXMucHJvcHNc
blxuICAgIGxldCBlbGVtZW50XG4gICAgaWYgKHRoaXMuc3RhdGUuZWRpdGluZykge1xuICAgICAg
ZWxlbWVudCA9IChcbiAgICAgICAgPFRvZG9UZXh0SW5wdXQgdGV4dD17dG9kby50ZXh0fVxuICAg
ICAgICAgICAgICAgICAgICAgICBlZGl0aW5nPXt0aGlzLnN0YXRlLmVkaXRpbmd9XG4gICAgICAg
ICAgICAgICAgICAgICAgIG9uU2F2ZT17KHRleHQpID0+IHRoaXMuaGFuZGxlU2F2ZSh0b2RvLmlk
LCB0ZXh0KX0gLz5cbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgZWxlbWVudCA9IChcbiAg
ICAgICAgPGRpdiBjbGFzc05hbWU9XCJ2aWV3XCI+XG4gICAgICAgICAgPGlucHV0IGNsYXNzTmFt
ZT1cInRvZ2dsZVwiXG4gICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAg
ICAgICAgICAgIGNoZWNrZWQ9e3RvZG8uY29tcGxldGVkfVxuICAgICAgICAgICAgICAgICBvbkNo
YW5nZT17KCkgPT4gY29tcGxldGVUb2RvKHRvZG8uaWQpfSAvPlxuICAgICAgICAgIDxsYWJlbCBv
bkRvdWJsZUNsaWNrPXt0aGlzLmhhbmRsZURvdWJsZUNsaWNrfT5cbiAgICAgICAgICAgIHt0b2Rv
LnRleHR9XG4gICAgICAgICAgPC9sYWJlbD5cbiAgICAgICAgICA8YnV0dG9uIGNsYXNzTmFtZT1c
ImRlc3Ryb3lcIlxuICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gZGVsZXRlVG9kbyh0
b2RvLmlkKX0gLz5cbiAgICAgICAgPC9kaXY+XG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJu
IChcbiAgICAgIDxsaSBjbGFzc05hbWU9e2NsYXNzbmFtZXMoe1xuICAgICAgICBjb21wbGV0ZWQ6
IHRvZG8uY29tcGxldGVkLFxuICAgICAgICBlZGl0aW5nOiB0aGlzLnN0YXRlLmVkaXRpbmdcbiAg
ICAgIH0pfT5cbiAgICAgICAge2VsZW1lbnR9XG4gICAgICA8L2xpPlxuICAgIClcbiAgfVxufVxu
XG5cblxuLyoqIFdFQlBBQ0sgRk9PVEVSICoqXG4gKiogLi9zcmMvY29tcG9uZW50cy9Ub2RvSXRl
bS5qc1xuICoqLyIsImltcG9ydCBSZWFjdCwgeyBQcm9wVHlwZXMgfSBmcm9tICdyZWFjdCdcbmlt
cG9ydCB7IGJpbmRBY3Rpb25DcmVhdG9ycyB9IGZyb20gJ3JlZHV4J1xuaW1wb3J0IHsgY29ubmVj
dCB9IGZyb20gJ3JlYWN0LXJlZHV4J1xuaW1wb3J0IEhlYWRlciBmcm9tICcuLi9jb21wb25lbnRz
L0hlYWRlcidcbmltcG9ydCBNYWluU2VjdGlvbiBmcm9tICcuLi9jb21wb25lbnRzL01haW5TZWN0
aW9uJ1xuaW1wb3J0ICogYXMgVG9kb0FjdGlvbnMgZnJvbSAnLi4vYWN0aW9ucydcblxuY29uc3Qg
QXBwID0gKHt0b2RvcywgYWN0aW9uc30pID0+IChcbiAgPGRpdj5cbiAgICA8SGVhZGVyIGFkZFRv
ZG89e2FjdGlvbnMuYWRkVG9kb30gLz5cbiAgICA8TWFpblNlY3Rpb24gdG9kb3M9e3RvZG9zfSBh
Y3Rpb25zPXthY3Rpb25zfSAvPlxuICA8L2Rpdj5cbilcblxuQXBwLnByb3BUeXBlcyA9IHtcbiAg
dG9kb3M6IFByb3BUeXBlcy5hcnJheS5pc1JlcXVpcmVkLFxuICBhY3Rpb25zOiBQcm9wVHlwZXMu
b2JqZWN0LmlzUmVxdWlyZWRcbn1cblxuY29uc3QgbWFwU3RhdGVUb1Byb3BzID0gc3RhdGUgPT4g
KHtcbiAgdG9kb3M6IHN0YXRlLnRvZG9zXG59KVxuXG5jb25zdCBtYXBEaXNwYXRjaFRvUHJvcHMg
PSBkaXNwYXRjaCA9PiAoe1xuICAgIGFjdGlvbnM6IGJpbmRBY3Rpb25DcmVhdG9ycyhUb2RvQWN0
aW9ucywgZGlzcGF0Y2gpXG59KVxuXG5leHBvcnQgZGVmYXVsdCBjb25uZWN0KFxuICBtYXBTdGF0
ZVRvUHJvcHMsXG4gIG1hcERpc3BhdGNoVG9Qcm9wc1xuKShBcHApXG5cblxuXG4vKiogV0VCUEFD
SyBGT09URVIgKipcbiAqKiAuL3NyYy9jb250YWluZXJzL0FwcC5qc1xuICoqLyIsImltcG9ydCBS
ZWFjdCBmcm9tICdyZWFjdCdcbmltcG9ydCB7IHJlbmRlciB9IGZyb20gJ3JlYWN0LWRvbSdcbmlt
cG9ydCB7IGNyZWF0ZVN0b3JlIH0gZnJvbSAncmVkdXgnXG5pbXBvcnQgeyBQcm92aWRlciB9IGZy
b20gJ3JlYWN0LXJlZHV4J1xuaW1wb3J0IEFwcCBmcm9tICcuL2NvbnRhaW5lcnMvQXBwJ1xuaW1w
b3J0IHJlZHVjZXIgZnJvbSAnLi9yZWR1Y2VycydcbmltcG9ydCAndG9kb212Yy1hcHAtY3NzL2lu
ZGV4LmNzcydcblxuY29uc3Qgc3RvcmUgPSBjcmVhdGVTdG9yZShyZWR1Y2VyKVxuXG5yZW5kZXIo
XG4gIDxQcm92aWRlciBzdG9yZT17c3RvcmV9PlxuICAgIDxBcHAgLz5cbiAgPC9Qcm92aWRlcj4s
XG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdyb290JylcbilcblxuXG5cbi8qKiBXRUJQQUNL
IEZPT1RFUiAqKlxuICoqIC4vc3JjL2luZGV4LmpzXG4gKiovIiwiaW1wb3J0IHsgY29tYmluZVJl
ZHVjZXJzIH0gZnJvbSAncmVkdXgnXG5pbXBvcnQgdG9kb3MgZnJvbSAnLi90b2RvcydcblxuY29u
c3Qgcm9vdFJlZHVjZXIgPSBjb21iaW5lUmVkdWNlcnMoe1xuICB0b2Rvc1xufSlcblxuZXhwb3J0
IGRlZmF1bHQgcm9vdFJlZHVjZXJcblxuXG5cbi8qKiBXRUJQQUNLIEZPT1RFUiAqKlxuICoqIC4v
c3JjL3JlZHVjZXJzL2luZGV4LmpzXG4gKiovIiwiaW1wb3J0IHsgQUREX1RPRE8sIERFTEVURV9U
T0RPLCBFRElUX1RPRE8sIENPTVBMRVRFX1RPRE8sIENPTVBMRVRFX0FMTCwgQ0xFQVJfQ09NUExF
VEVEIH0gZnJvbSAnLi4vY29uc3RhbnRzL0FjdGlvblR5cGVzJ1xuXG5jb25zdCBpbml0aWFsU3Rh
dGUgPSBbXVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB0b2RvcyhzdGF0ZSA9IGluaXRpYWxT
dGF0ZSwgYWN0aW9uKSB7XG4gIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICBjYXNlIEFERF9U
T0RPOlxuICAgICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgIGlkOiBzdGF0ZS5yZWR1
Y2UoKG1heElkLCB0b2RvKSA9PiBNYXRoLm1heCh0b2RvLmlkLCBtYXhJZCksIC0xKSArIDEsXG4g
ICAgICAgICAgY29tcGxldGVkOiBmYWxzZSxcbiAgICAgICAgICB0ZXh0OiBhY3Rpb24udGV4dFxu
ICAgICAgICB9LFxuICAgICAgICAuLi5zdGF0ZVxuICAgICAgXVxuXG4gICAgY2FzZSBERUxFVEVf
VE9ETzpcbiAgICAgIHJldHVybiBzdGF0ZS5maWx0ZXIodG9kbyA9PlxuICAgICAgICB0b2RvLmlk
ICE9PSBhY3Rpb24uaWRcbiAgICAgIClcblxuICAgIGNhc2UgRURJVF9UT0RPOlxuICAgICAgcmV0
dXJuIHN0YXRlLm1hcCh0b2RvID0+XG4gICAgICAgIHRvZG8uaWQgPT09IGFjdGlvbi5pZCA/XG4g
ICAgICAgICAgeyAuLi50b2RvLCB0ZXh0OiBhY3Rpb24udGV4dCB9IDpcbiAgICAgICAgICB0b2Rv
XG4gICAgICApXG5cbiAgICBjYXNlIENPTVBMRVRFX1RPRE86XG4gICAgICByZXR1cm4gc3RhdGUu
bWFwKHRvZG8gPT5cbiAgICAgICAgdG9kby5pZCA9PT0gYWN0aW9uLmlkID9cbiAgICAgICAgICB7
IC4uLnRvZG8sIGNvbXBsZXRlZDogIXRvZG8uY29tcGxldGVkIH0gOlxuICAgICAgICAgIHRvZG9c
biAgICAgIClcblxuICAgIGNhc2UgQ09NUExFVEVfQUxMOlxuICAgICAgY29uc3QgYXJlQWxsTWFy
a2VkID0gc3RhdGUuZXZlcnkodG9kbyA9PiB0b2RvLmNvbXBsZXRlZClcbiAgICAgIHJldHVybiBz
dGF0ZS5tYXAodG9kbyA9PiAoe1xuICAgICAgICAuLi50b2RvLFxuICAgICAgICBjb21wbGV0ZWQ6
ICFhcmVBbGxNYXJrZWRcbiAgICAgIH0pKVxuXG4gICAgY2FzZSBDTEVBUl9DT01QTEVURUQ6XG4g
ICAgICByZXR1cm4gc3RhdGUuZmlsdGVyKHRvZG8gPT4gdG9kby5jb21wbGV0ZWQgPT09IGZhbHNl
KVxuXG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBzdGF0ZVxuICB9XG59XG5cblxuXG4vKiog
V0VCUEFDSyBGT09URVIgKipcbiAqKiAuL3NyYy9yZWR1Y2Vycy90b2Rvcy5qc1xuICoqLyIsIid1
c2Ugc3RyaWN0Jztcbi8qIGVzbGludC1kaXNhYmxlIG5vLXVudXNlZC12YXJzICovXG52YXIgaGFz
T3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xudmFyIHByb3BJ
c0VudW1lcmFibGUgPSBPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuXG5m
dW5jdGlvbiB0b09iamVjdCh2YWwpIHtcblx0aWYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHVu
ZGVmaW5lZCkge1xuXHRcdHRocm93IG5ldyBUeXBlRXJyb3IoJ09iamVjdC5hc3NpZ24gY2Fubm90
IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkJyk7XG5cdH1cblxuXHRyZXR1cm4gT2Jq
ZWN0KHZhbCk7XG59XG5cbmZ1bmN0aW9uIHNob3VsZFVzZU5hdGl2ZSgpIHtcblx0dHJ5IHtcblx0
XHRpZiAoIU9iamVjdC5hc3NpZ24pIHtcblx0XHRcdHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0
XHQvLyBEZXRlY3QgYnVnZ3kgcHJvcGVydHkgZW51bWVyYXRpb24gb3JkZXIgaW4gb2xkZXIgVjgg
dmVyc2lvbnMuXG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvdjgvaXNzdWVz
L2RldGFpbD9pZD00MTE4XG5cdFx0dmFyIHRlc3QxID0gbmV3IFN0cmluZygnYWJjJyk7ICAvLyBl
c2xpbnQtZGlzYWJsZS1saW5lXG5cdFx0dGVzdDFbNV0gPSAnZGUnO1xuXHRcdGlmIChPYmplY3Qu
Z2V0T3duUHJvcGVydHlOYW1lcyh0ZXN0MSlbMF0gPT09ICc1Jykge1xuXHRcdFx0cmV0dXJuIGZh
bHNlO1xuXHRcdH1cblxuXHRcdC8vIGh0dHBzOi8vYnVncy5jaHJvbWl1bS5vcmcvcC92OC9pc3N1
ZXMvZGV0YWlsP2lkPTMwNTZcblx0XHR2YXIgdGVzdDIgPSB7fTtcblx0XHRmb3IgKHZhciBpID0g
MDsgaSA8IDEwOyBpKyspIHtcblx0XHRcdHRlc3QyWydfJyArIFN0cmluZy5mcm9tQ2hhckNvZGUo
aSldID0gaTtcblx0XHR9XG5cdFx0dmFyIG9yZGVyMiA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5h
bWVzKHRlc3QyKS5tYXAoZnVuY3Rpb24gKG4pIHtcblx0XHRcdHJldHVybiB0ZXN0MltuXTtcblx0
XHR9KTtcblx0XHRpZiAob3JkZXIyLmpvaW4oJycpICE9PSAnMDEyMzQ1Njc4OScpIHtcblx0XHRc
dHJldHVybiBmYWxzZTtcblx0XHR9XG5cblx0XHQvLyBodHRwczovL2J1Z3MuY2hyb21pdW0ub3Jn
L3AvdjgvaXNzdWVzL2RldGFpbD9pZD0zMDU2XG5cdFx0dmFyIHRlc3QzID0ge307XG5cdFx0J2Fi
Y2RlZmdoaWprbG1ub3BxcnN0Jy5zcGxpdCgnJykuZm9yRWFjaChmdW5jdGlvbiAobGV0dGVyKSB7
XG5cdFx0XHR0ZXN0M1tsZXR0ZXJdID0gbGV0dGVyO1xuXHRcdH0pO1xuXHRcdGlmIChPYmplY3Qu
a2V5cyhPYmplY3QuYXNzaWduKHt9LCB0ZXN0MykpLmpvaW4oJycpICE9PVxuXHRcdFx0XHQnYWJj
ZGVmZ2hpamtsbW5vcHFyc3QnKSB7XG5cdFx0XHRyZXR1cm4gZmFsc2U7XG5cdFx0fVxuXG5cdFx0
cmV0dXJuIHRydWU7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHQvLyBXZSBkb24ndCBleHBlY3QgYW55
IG9mIHRoZSBhYm92ZSB0byB0aHJvdywgYnV0IGJldHRlciB0byBiZSBzYWZlLlxuXHRcdHJldHVy
biBmYWxzZTtcblx0fVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHNob3VsZFVzZU5hdGl2ZSgpID8g
T2JqZWN0LmFzc2lnbiA6IGZ1bmN0aW9uICh0YXJnZXQsIHNvdXJjZSkge1xuXHR2YXIgZnJvbTtc
blx0dmFyIHRvID0gdG9PYmplY3QodGFyZ2V0KTtcblx0dmFyIHN5bWJvbHM7XG5cblx0Zm9yICh2
YXIgcyA9IDE7IHMgPCBhcmd1bWVudHMubGVuZ3RoOyBzKyspIHtcblx0XHRmcm9tID0gT2JqZWN0
KGFyZ3VtZW50c1tzXSk7XG5cblx0XHRmb3IgKHZhciBrZXkgaW4gZnJvbSkge1xuXHRcdFx0aWYg
KGhhc093blByb3BlcnR5LmNhbGwoZnJvbSwga2V5KSkge1xuXHRcdFx0XHR0b1trZXldID0gZnJv
bVtrZXldO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlT
eW1ib2xzKSB7XG5cdFx0XHRzeW1ib2xzID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhm
cm9tKTtcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgc3ltYm9scy5sZW5ndGg7IGkrKykge1xu
XHRcdFx0XHRpZiAocHJvcElzRW51bWVyYWJsZS5jYWxsKGZyb20sIHN5bWJvbHNbaV0pKSB7XG5c
dFx0XHRcdFx0dG9bc3ltYm9sc1tpXV0gPSBmcm9tW3N5bWJvbHNbaV1dO1xuXHRcdFx0XHR9XG5c
dFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHRvO1xufTtcblxuXG5cbi8qKioqKioqKioq
KioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0LXNjcmlwdHMvfi9vYmpl
Y3QtYXNzaWduL2luZGV4LmpzXG4gKiogbW9kdWxlIGlkID0gMjA4XG4gKiogbW9kdWxlIGNodW5r
cyA9IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbi8vVGhpcyBmaWxlIGNvbnRhaW5zIHRoZSBF
UzYgZXh0ZW5zaW9ucyB0byB0aGUgY29yZSBQcm9taXNlcy9BKyBBUElcblxudmFyIFByb21pc2Ug
PSByZXF1aXJlKCcuL2NvcmUuanMnKTtcblxubW9kdWxlLmV4cG9ydHMgPSBQcm9taXNlO1xuXG4v
KiBTdGF0aWMgRnVuY3Rpb25zICovXG5cbnZhciBUUlVFID0gdmFsdWVQcm9taXNlKHRydWUpO1xu
dmFyIEZBTFNFID0gdmFsdWVQcm9taXNlKGZhbHNlKTtcbnZhciBOVUxMID0gdmFsdWVQcm9taXNl
KG51bGwpO1xudmFyIFVOREVGSU5FRCA9IHZhbHVlUHJvbWlzZSh1bmRlZmluZWQpO1xudmFyIFpF
Uk8gPSB2YWx1ZVByb21pc2UoMCk7XG52YXIgRU1QVFlTVFJJTkcgPSB2YWx1ZVByb21pc2UoJycp
O1xuXG5mdW5jdGlvbiB2YWx1ZVByb21pc2UodmFsdWUpIHtcbiAgdmFyIHAgPSBuZXcgUHJvbWlz
ZShQcm9taXNlLl82MSk7XG4gIHAuXzgxID0gMTtcbiAgcC5fNjUgPSB2YWx1ZTtcbiAgcmV0dXJu
IHA7XG59XG5Qcm9taXNlLnJlc29sdmUgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgaWYgKHZhbHVl
IGluc3RhbmNlb2YgUHJvbWlzZSkgcmV0dXJuIHZhbHVlO1xuXG4gIGlmICh2YWx1ZSA9PT0gbnVs
bCkgcmV0dXJuIE5VTEw7XG4gIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkKSByZXR1cm4gVU5ERUZJ
TkVEO1xuICBpZiAodmFsdWUgPT09IHRydWUpIHJldHVybiBUUlVFO1xuICBpZiAodmFsdWUgPT09
IGZhbHNlKSByZXR1cm4gRkFMU0U7XG4gIGlmICh2YWx1ZSA9PT0gMCkgcmV0dXJuIFpFUk87XG4g
IGlmICh2YWx1ZSA9PT0gJycpIHJldHVybiBFTVBUWVNUUklORztcblxuICBpZiAodHlwZW9mIHZh
bHVlID09PSAnb2JqZWN0JyB8fCB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicpIHtcbiAgICB0
cnkge1xuICAgICAgdmFyIHRoZW4gPSB2YWx1ZS50aGVuO1xuICAgICAgaWYgKHR5cGVvZiB0aGVu
ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSh0aGVuLmJpbmQo
dmFsdWUpKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChleCkge1xuICAgICAgcmV0dXJuIG5ldyBQ
cm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgcmVqZWN0KGV4KTtc
biAgICAgIH0pO1xuICAgIH1cbiAgfVxuICByZXR1cm4gdmFsdWVQcm9taXNlKHZhbHVlKTtcbn07
XG5cblByb21pc2UuYWxsID0gZnVuY3Rpb24gKGFycikge1xuICB2YXIgYXJncyA9IEFycmF5LnBy
b3RvdHlwZS5zbGljZS5jYWxsKGFycik7XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9u
IChyZXNvbHZlLCByZWplY3QpIHtcbiAgICBpZiAoYXJncy5sZW5ndGggPT09IDApIHJldHVybiBy
ZXNvbHZlKFtdKTtcbiAgICB2YXIgcmVtYWluaW5nID0gYXJncy5sZW5ndGg7XG4gICAgZnVuY3Rp
b24gcmVzKGksIHZhbCkge1xuICAgICAgaWYgKHZhbCAmJiAodHlwZW9mIHZhbCA9PT0gJ29iamVj
dCcgfHwgdHlwZW9mIHZhbCA9PT0gJ2Z1bmN0aW9uJykpIHtcbiAgICAgICAgaWYgKHZhbCBpbnN0
YW5jZW9mIFByb21pc2UgJiYgdmFsLnRoZW4gPT09IFByb21pc2UucHJvdG90eXBlLnRoZW4pIHtc
biAgICAgICAgICB3aGlsZSAodmFsLl84MSA9PT0gMykge1xuICAgICAgICAgICAgdmFsID0gdmFs
Ll82NTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHZhbC5fODEgPT09IDEpIHJldHVybiBy
ZXMoaSwgdmFsLl82NSk7XG4gICAgICAgICAgaWYgKHZhbC5fODEgPT09IDIpIHJlamVjdCh2YWwu
XzY1KTtcbiAgICAgICAgICB2YWwudGhlbihmdW5jdGlvbiAodmFsKSB7XG4gICAgICAgICAgICBy
ZXMoaSwgdmFsKTtcbiAgICAgICAgICB9LCByZWplY3QpO1xuICAgICAgICAgIHJldHVybjtcbiAg
ICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgdGhlbiA9IHZhbC50aGVuO1xuICAgICAgICAg
IGlmICh0eXBlb2YgdGhlbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdmFyIHAgPSBu
ZXcgUHJvbWlzZSh0aGVuLmJpbmQodmFsKSk7XG4gICAgICAgICAgICBwLnRoZW4oZnVuY3Rpb24g
KHZhbCkge1xuICAgICAgICAgICAgICByZXMoaSwgdmFsKTtcbiAgICAgICAgICAgIH0sIHJlamVj
dCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9
XG4gICAgICBhcmdzW2ldID0gdmFsO1xuICAgICAgaWYgKC0tcmVtYWluaW5nID09PSAwKSB7XG4g
ICAgICAgIHJlc29sdmUoYXJncyk7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgcmVzKGksIGFyZ3NbaV0pO1xuICAgIH1c
biAgfSk7XG59O1xuXG5Qcm9taXNlLnJlamVjdCA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICByZXR1
cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHJlamVjdCh2
YWx1ZSk7XG4gIH0pO1xufTtcblxuUHJvbWlzZS5yYWNlID0gZnVuY3Rpb24gKHZhbHVlcykge1xu
ICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHZh
bHVlcy5mb3JFYWNoKGZ1bmN0aW9uKHZhbHVlKXtcbiAgICAgIFByb21pc2UucmVzb2x2ZSh2YWx1
ZSkudGhlbihyZXNvbHZlLCByZWplY3QpO1xuICAgIH0pO1xuICB9KTtcbn07XG5cbi8qIFByb3Rv
dHlwZSBNZXRob2RzICovXG5cblByb21pc2UucHJvdG90eXBlWydjYXRjaCddID0gZnVuY3Rpb24g
KG9uUmVqZWN0ZWQpIHtcbiAgcmV0dXJuIHRoaXMudGhlbihudWxsLCBvblJlamVjdGVkKTtcbn07
XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9y
ZWFjdC1zY3JpcHRzL34vcHJvbWlzZS9saWIvZXM2LWV4dGVuc2lvbnMuanNcbiAqKiBtb2R1bGUg
aWQgPSAyMDlcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0Jztcblxu
dmFyIFByb21pc2UgPSByZXF1aXJlKCcuL2NvcmUnKTtcblxudmFyIERFRkFVTFRfV0hJVEVMSVNU
ID0gW1xuICBSZWZlcmVuY2VFcnJvcixcbiAgVHlwZUVycm9yLFxuICBSYW5nZUVycm9yXG5dO1xu
XG52YXIgZW5hYmxlZCA9IGZhbHNlO1xuZXhwb3J0cy5kaXNhYmxlID0gZGlzYWJsZTtcbmZ1bmN0
aW9uIGRpc2FibGUoKSB7XG4gIGVuYWJsZWQgPSBmYWxzZTtcbiAgUHJvbWlzZS5fMTAgPSBudWxs
O1xuICBQcm9taXNlLl85NyA9IG51bGw7XG59XG5cbmV4cG9ydHMuZW5hYmxlID0gZW5hYmxlO1xu
ZnVuY3Rpb24gZW5hYmxlKG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4g
IGlmIChlbmFibGVkKSBkaXNhYmxlKCk7XG4gIGVuYWJsZWQgPSB0cnVlO1xuICB2YXIgaWQgPSAw
O1xuICB2YXIgZGlzcGxheUlkID0gMDtcbiAgdmFyIHJlamVjdGlvbnMgPSB7fTtcbiAgUHJvbWlz
ZS5fMTAgPSBmdW5jdGlvbiAocHJvbWlzZSkge1xuICAgIGlmIChcbiAgICAgIHByb21pc2UuXzgx
ID09PSAyICYmIC8vIElTIFJFSkVDVEVEXG4gICAgICByZWplY3Rpb25zW3Byb21pc2UuXzcyXVxu
ICAgICkge1xuICAgICAgaWYgKHJlamVjdGlvbnNbcHJvbWlzZS5fNzJdLmxvZ2dlZCkge1xuICAg
ICAgICBvbkhhbmRsZWQocHJvbWlzZS5fNzIpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY2xl
YXJUaW1lb3V0KHJlamVjdGlvbnNbcHJvbWlzZS5fNzJdLnRpbWVvdXQpO1xuICAgICAgfVxuICAg
ICAgZGVsZXRlIHJlamVjdGlvbnNbcHJvbWlzZS5fNzJdO1xuICAgIH1cbiAgfTtcbiAgUHJvbWlz
ZS5fOTcgPSBmdW5jdGlvbiAocHJvbWlzZSwgZXJyKSB7XG4gICAgaWYgKHByb21pc2UuXzQ1ID09
PSAwKSB7IC8vIG5vdCB5ZXQgaGFuZGxlZFxuICAgICAgcHJvbWlzZS5fNzIgPSBpZCsrO1xuICAg
ICAgcmVqZWN0aW9uc1twcm9taXNlLl83Ml0gPSB7XG4gICAgICAgIGRpc3BsYXlJZDogbnVsbCxc
biAgICAgICAgZXJyb3I6IGVycixcbiAgICAgICAgdGltZW91dDogc2V0VGltZW91dChcbiAgICAg
ICAgICBvblVuaGFuZGxlZC5iaW5kKG51bGwsIHByb21pc2UuXzcyKSxcbiAgICAgICAgICAvLyBG
b3IgcmVmZXJlbmNlIGVycm9ycyBhbmQgdHlwZSBlcnJvcnMsIHRoaXMgYWxtb3N0IGFsd2F5c1xu
ICAgICAgICAgIC8vIG1lYW5zIHRoZSBwcm9ncmFtbWVyIG1hZGUgYSBtaXN0YWtlLCBzbyBsb2cg
dGhlbSBhZnRlciBqdXN0XG4gICAgICAgICAgLy8gMTAwbXNcbiAgICAgICAgICAvLyBvdGhlcndp
c2UsIHdhaXQgMiBzZWNvbmRzIHRvIHNlZSBpZiB0aGV5IGdldCBoYW5kbGVkXG4gICAgICAgICAg
bWF0Y2hXaGl0ZWxpc3QoZXJyLCBERUZBVUxUX1dISVRFTElTVClcbiAgICAgICAgICAgID8gMTAw
XG4gICAgICAgICAgICA6IDIwMDBcbiAgICAgICAgKSxcbiAgICAgICAgbG9nZ2VkOiBmYWxzZVxu
ICAgICAgfTtcbiAgICB9XG4gIH07XG4gIGZ1bmN0aW9uIG9uVW5oYW5kbGVkKGlkKSB7XG4gICAg
aWYgKFxuICAgICAgb3B0aW9ucy5hbGxSZWplY3Rpb25zIHx8XG4gICAgICBtYXRjaFdoaXRlbGlz
dChcbiAgICAgICAgcmVqZWN0aW9uc1tpZF0uZXJyb3IsXG4gICAgICAgIG9wdGlvbnMud2hpdGVs
aXN0IHx8IERFRkFVTFRfV0hJVEVMSVNUXG4gICAgICApXG4gICAgKSB7XG4gICAgICByZWplY3Rp
b25zW2lkXS5kaXNwbGF5SWQgPSBkaXNwbGF5SWQrKztcbiAgICAgIGlmIChvcHRpb25zLm9uVW5o
YW5kbGVkKSB7XG4gICAgICAgIHJlamVjdGlvbnNbaWRdLmxvZ2dlZCA9IHRydWU7XG4gICAgICAg
IG9wdGlvbnMub25VbmhhbmRsZWQoXG4gICAgICAgICAgcmVqZWN0aW9uc1tpZF0uZGlzcGxheUlk
LFxuICAgICAgICAgIHJlamVjdGlvbnNbaWRdLmVycm9yXG4gICAgICAgICk7XG4gICAgICB9IGVs
c2Uge1xuICAgICAgICByZWplY3Rpb25zW2lkXS5sb2dnZWQgPSB0cnVlO1xuICAgICAgICBsb2dF
cnJvcihcbiAgICAgICAgICByZWplY3Rpb25zW2lkXS5kaXNwbGF5SWQsXG4gICAgICAgICAgcmVq
ZWN0aW9uc1tpZF0uZXJyb3JcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgZnVu
Y3Rpb24gb25IYW5kbGVkKGlkKSB7XG4gICAgaWYgKHJlamVjdGlvbnNbaWRdLmxvZ2dlZCkge1xu
ICAgICAgaWYgKG9wdGlvbnMub25IYW5kbGVkKSB7XG4gICAgICAgIG9wdGlvbnMub25IYW5kbGVk
KHJlamVjdGlvbnNbaWRdLmRpc3BsYXlJZCwgcmVqZWN0aW9uc1tpZF0uZXJyb3IpO1xuICAgICAg
fSBlbHNlIGlmICghcmVqZWN0aW9uc1tpZF0ub25VbmhhbmRsZWQpIHtcbiAgICAgICAgY29uc29s
ZS53YXJuKFxuICAgICAgICAgICdQcm9taXNlIFJlamVjdGlvbiBIYW5kbGVkIChpZDogJyArIHJl
amVjdGlvbnNbaWRdLmRpc3BsYXlJZCArICcpOidcbiAgICAgICAgKTtcbiAgICAgICAgY29uc29s
ZS53YXJuKFxuICAgICAgICAgICcgIFRoaXMgbWVhbnMgeW91IGNhbiBpZ25vcmUgYW55IHByZXZp
b3VzIG1lc3NhZ2VzIG9mIHRoZSBmb3JtIFwiUG9zc2libGUgVW5oYW5kbGVkIFByb21pc2UgUmVq
ZWN0aW9uXCIgd2l0aCBpZCAnICtcbiAgICAgICAgICByZWplY3Rpb25zW2lkXS5kaXNwbGF5SWQg
KyAnLidcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gbG9n
RXJyb3IoaWQsIGVycm9yKSB7XG4gIGNvbnNvbGUud2FybignUG9zc2libGUgVW5oYW5kbGVkIFBy
b21pc2UgUmVqZWN0aW9uIChpZDogJyArIGlkICsgJyk6Jyk7XG4gIHZhciBlcnJTdHIgPSAoZXJy
b3IgJiYgKGVycm9yLnN0YWNrIHx8IGVycm9yKSkgKyAnJztcbiAgZXJyU3RyLnNwbGl0KCdcXG4n
KS5mb3JFYWNoKGZ1bmN0aW9uIChsaW5lKSB7XG4gICAgY29uc29sZS53YXJuKCcgICcgKyBsaW5l
KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG1hdGNoV2hpdGVsaXN0KGVycm9yLCBsaXN0KSB7XG4g
IHJldHVybiBsaXN0LnNvbWUoZnVuY3Rpb24gKGNscykge1xuICAgIHJldHVybiBlcnJvciBpbnN0
YW5jZW9mIGNscztcbiAgfSk7XG59XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFD
SyBGT09URVJcbiAqKiAuL34vcmVhY3Qtc2NyaXB0cy9+L3Byb21pc2UvbGliL3JlamVjdGlvbi10
cmFja2luZy5qc1xuICoqIG1vZHVsZSBpZCA9IDIxMFxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4g
KiovIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbihtb2R1bGUpIHtcclxuXHRpZighbW9kdWxl
LndlYnBhY2tQb2x5ZmlsbCkge1xyXG5cdFx0bW9kdWxlLmRlcHJlY2F0ZSA9IGZ1bmN0aW9uKCkg
e307XHJcblx0XHRtb2R1bGUucGF0aHMgPSBbXTtcclxuXHRcdC8vIG1vZHVsZS5wYXJlbnQgPSB1
bmRlZmluZWQgYnkgZGVmYXVsdFxyXG5cdFx0bW9kdWxlLmNoaWxkcmVuID0gW107XHJcblx0XHRt
b2R1bGUud2VicGFja1BvbHlmaWxsID0gMTtcclxuXHR9XHJcblx0cmV0dXJuIG1vZHVsZTtcclxu
fVxyXG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqICh3
ZWJwYWNrKS9idWlsZGluL21vZHVsZS5qc1xuICoqIG1vZHVsZSBpZCA9IDIxMVxuICoqIG1vZHVs
ZSBjaHVua3MgPSAwXG4gKiovIiwiKGZ1bmN0aW9uKHNlbGYpIHtcbiAgJ3VzZSBzdHJpY3QnO1xu
XG4gIGlmIChzZWxmLmZldGNoKSB7XG4gICAgcmV0dXJuXG4gIH1cblxuICB2YXIgc3VwcG9ydCA9
IHtcbiAgICBzZWFyY2hQYXJhbXM6ICdVUkxTZWFyY2hQYXJhbXMnIGluIHNlbGYsXG4gICAgaXRl
cmFibGU6ICdTeW1ib2wnIGluIHNlbGYgJiYgJ2l0ZXJhdG9yJyBpbiBTeW1ib2wsXG4gICAgYmxv
YjogJ0ZpbGVSZWFkZXInIGluIHNlbGYgJiYgJ0Jsb2InIGluIHNlbGYgJiYgKGZ1bmN0aW9uKCkg
e1xuICAgICAgdHJ5IHtcbiAgICAgICAgbmV3IEJsb2IoKVxuICAgICAgICByZXR1cm4gdHJ1ZVxu
ICAgICAgfSBjYXRjaChlKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH0p
KCksXG4gICAgZm9ybURhdGE6ICdGb3JtRGF0YScgaW4gc2VsZixcbiAgICBhcnJheUJ1ZmZlcjog
J0FycmF5QnVmZmVyJyBpbiBzZWxmXG4gIH1cblxuICBmdW5jdGlvbiBub3JtYWxpemVOYW1lKG5h
bWUpIHtcbiAgICBpZiAodHlwZW9mIG5hbWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICBuYW1lID0g
U3RyaW5nKG5hbWUpXG4gICAgfVxuICAgIGlmICgvW15hLXowLTlcXC0jJCUmJyorLlxcXl9gfH5d
L2kudGVzdChuYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBjaGFy
YWN0ZXIgaW4gaGVhZGVyIGZpZWxkIG5hbWUnKVxuICAgIH1cbiAgICByZXR1cm4gbmFtZS50b0xv
d2VyQ2FzZSgpXG4gIH1cblxuICBmdW5jdGlvbiBub3JtYWxpemVWYWx1ZSh2YWx1ZSkge1xuICAg
IGlmICh0eXBlb2YgdmFsdWUgIT09ICdzdHJpbmcnKSB7XG4gICAgICB2YWx1ZSA9IFN0cmluZyh2
YWx1ZSlcbiAgICB9XG4gICAgcmV0dXJuIHZhbHVlXG4gIH1cblxuICAvLyBCdWlsZCBhIGRlc3Ry
dWN0aXZlIGl0ZXJhdG9yIGZvciB0aGUgdmFsdWUgbGlzdFxuICBmdW5jdGlvbiBpdGVyYXRvckZv
cihpdGVtcykge1xuICAgIHZhciBpdGVyYXRvciA9IHtcbiAgICAgIG5leHQ6IGZ1bmN0aW9uKCkg
e1xuICAgICAgICB2YXIgdmFsdWUgPSBpdGVtcy5zaGlmdCgpXG4gICAgICAgIHJldHVybiB7ZG9u
ZTogdmFsdWUgPT09IHVuZGVmaW5lZCwgdmFsdWU6IHZhbHVlfVxuICAgICAgfVxuICAgIH1cblxu
ICAgIGlmIChzdXBwb3J0Lml0ZXJhYmxlKSB7XG4gICAgICBpdGVyYXRvcltTeW1ib2wuaXRlcmF0
b3JdID0gZnVuY3Rpb24oKSB7XG4gICAgICAgIHJldHVybiBpdGVyYXRvclxuICAgICAgfVxuICAg
IH1cblxuICAgIHJldHVybiBpdGVyYXRvclxuICB9XG5cbiAgZnVuY3Rpb24gSGVhZGVycyhoZWFk
ZXJzKSB7XG4gICAgdGhpcy5tYXAgPSB7fVxuXG4gICAgaWYgKGhlYWRlcnMgaW5zdGFuY2VvZiBI
ZWFkZXJzKSB7XG4gICAgICBoZWFkZXJzLmZvckVhY2goZnVuY3Rpb24odmFsdWUsIG5hbWUpIHtc
biAgICAgICAgdGhpcy5hcHBlbmQobmFtZSwgdmFsdWUpXG4gICAgICB9LCB0aGlzKVxuXG4gICAg
fSBlbHNlIGlmIChoZWFkZXJzKSB7XG4gICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyho
ZWFkZXJzKS5mb3JFYWNoKGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgICAgdGhpcy5hcHBlbmQobmFt
ZSwgaGVhZGVyc1tuYW1lXSlcbiAgICAgIH0sIHRoaXMpXG4gICAgfVxuICB9XG5cbiAgSGVhZGVy
cy5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24obmFtZSwgdmFsdWUpIHtcbiAgICBuYW1lID0g
bm9ybWFsaXplTmFtZShuYW1lKVxuICAgIHZhbHVlID0gbm9ybWFsaXplVmFsdWUodmFsdWUpXG4g
ICAgdmFyIGxpc3QgPSB0aGlzLm1hcFtuYW1lXVxuICAgIGlmICghbGlzdCkge1xuICAgICAgbGlz
dCA9IFtdXG4gICAgICB0aGlzLm1hcFtuYW1lXSA9IGxpc3RcbiAgICB9XG4gICAgbGlzdC5wdXNo
KHZhbHVlKVxuICB9XG5cbiAgSGVhZGVycy5wcm90b3R5cGVbJ2RlbGV0ZSddID0gZnVuY3Rpb24o
bmFtZSkge1xuICAgIGRlbGV0ZSB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXVxuICB9XG5c
biAgSGVhZGVycy5wcm90b3R5cGUuZ2V0ID0gZnVuY3Rpb24obmFtZSkge1xuICAgIHZhciB2YWx1
ZXMgPSB0aGlzLm1hcFtub3JtYWxpemVOYW1lKG5hbWUpXVxuICAgIHJldHVybiB2YWx1ZXMgPyB2
YWx1ZXNbMF0gOiBudWxsXG4gIH1cblxuICBIZWFkZXJzLnByb3RvdHlwZS5nZXRBbGwgPSBmdW5j
dGlvbihuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwW25vcm1hbGl6ZU5hbWUobmFtZSldIHx8
IFtdXG4gIH1cblxuICBIZWFkZXJzLnByb3RvdHlwZS5oYXMgPSBmdW5jdGlvbihuYW1lKSB7XG4g
ICAgcmV0dXJuIHRoaXMubWFwLmhhc093blByb3BlcnR5KG5vcm1hbGl6ZU5hbWUobmFtZSkpXG4g
IH1cblxuICBIZWFkZXJzLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbihuYW1lLCB2YWx1ZSkge1xu
ICAgIHRoaXMubWFwW25vcm1hbGl6ZU5hbWUobmFtZSldID0gW25vcm1hbGl6ZVZhbHVlKHZhbHVl
KV1cbiAgfVxuXG4gIEhlYWRlcnMucHJvdG90eXBlLmZvckVhY2ggPSBmdW5jdGlvbihjYWxsYmFj
aywgdGhpc0FyZykge1xuICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRoaXMubWFwKS5m
b3JFYWNoKGZ1bmN0aW9uKG5hbWUpIHtcbiAgICAgIHRoaXMubWFwW25hbWVdLmZvckVhY2goZnVu
Y3Rpb24odmFsdWUpIHtcbiAgICAgICAgY2FsbGJhY2suY2FsbCh0aGlzQXJnLCB2YWx1ZSwgbmFt
ZSwgdGhpcylcbiAgICAgIH0sIHRoaXMpXG4gICAgfSwgdGhpcylcbiAgfVxuXG4gIEhlYWRlcnMu
cHJvdG90eXBlLmtleXMgPSBmdW5jdGlvbigpIHtcbiAgICB2YXIgaXRlbXMgPSBbXVxuICAgIHRo
aXMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkgeyBpdGVtcy5wdXNoKG5hbWUpIH0pXG4g
ICAgcmV0dXJuIGl0ZXJhdG9yRm9yKGl0ZW1zKVxuICB9XG5cbiAgSGVhZGVycy5wcm90b3R5cGUu
dmFsdWVzID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGl0ZW1zID0gW11cbiAgICB0aGlzLmZvckVh
Y2goZnVuY3Rpb24odmFsdWUpIHsgaXRlbXMucHVzaCh2YWx1ZSkgfSlcbiAgICByZXR1cm4gaXRl
cmF0b3JGb3IoaXRlbXMpXG4gIH1cblxuICBIZWFkZXJzLnByb3RvdHlwZS5lbnRyaWVzID0gZnVu
Y3Rpb24oKSB7XG4gICAgdmFyIGl0ZW1zID0gW11cbiAgICB0aGlzLmZvckVhY2goZnVuY3Rpb24o
dmFsdWUsIG5hbWUpIHsgaXRlbXMucHVzaChbbmFtZSwgdmFsdWVdKSB9KVxuICAgIHJldHVybiBp
dGVyYXRvckZvcihpdGVtcylcbiAgfVxuXG4gIGlmIChzdXBwb3J0Lml0ZXJhYmxlKSB7XG4gICAg
SGVhZGVycy5wcm90b3R5cGVbU3ltYm9sLml0ZXJhdG9yXSA9IEhlYWRlcnMucHJvdG90eXBlLmVu
dHJpZXNcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbnN1bWVkKGJvZHkpIHtcbiAgICBpZiAoYm9keS5i
b2R5VXNlZCkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBUeXBlRXJyb3IoJ0Fs
cmVhZHkgcmVhZCcpKVxuICAgIH1cbiAgICBib2R5LmJvZHlVc2VkID0gdHJ1ZVxuICB9XG5cbiAg
ZnVuY3Rpb24gZmlsZVJlYWRlclJlYWR5KHJlYWRlcikge1xuICAgIHJldHVybiBuZXcgUHJvbWlz
ZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHJlYWRlci5vbmxvYWQgPSBmdW5j
dGlvbigpIHtcbiAgICAgICAgcmVzb2x2ZShyZWFkZXIucmVzdWx0KVxuICAgICAgfVxuICAgICAg
cmVhZGVyLm9uZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KHJlYWRlci5lcnJv
cilcbiAgICAgIH1cbiAgICB9KVxuICB9XG5cbiAgZnVuY3Rpb24gcmVhZEJsb2JBc0FycmF5QnVm
ZmVyKGJsb2IpIHtcbiAgICB2YXIgcmVhZGVyID0gbmV3IEZpbGVSZWFkZXIoKVxuICAgIHJlYWRl
ci5yZWFkQXNBcnJheUJ1ZmZlcihibG9iKVxuICAgIHJldHVybiBmaWxlUmVhZGVyUmVhZHkocmVh
ZGVyKVxuICB9XG5cbiAgZnVuY3Rpb24gcmVhZEJsb2JBc1RleHQoYmxvYikge1xuICAgIHZhciBy
ZWFkZXIgPSBuZXcgRmlsZVJlYWRlcigpXG4gICAgcmVhZGVyLnJlYWRBc1RleHQoYmxvYilcbiAg
ICByZXR1cm4gZmlsZVJlYWRlclJlYWR5KHJlYWRlcilcbiAgfVxuXG4gIGZ1bmN0aW9uIEJvZHko
KSB7XG4gICAgdGhpcy5ib2R5VXNlZCA9IGZhbHNlXG5cbiAgICB0aGlzLl9pbml0Qm9keSA9IGZ1
bmN0aW9uKGJvZHkpIHtcbiAgICAgIHRoaXMuX2JvZHlJbml0ID0gYm9keVxuICAgICAgaWYgKHR5
cGVvZiBib2R5ID09PSAnc3RyaW5nJykge1xuICAgICAgICB0aGlzLl9ib2R5VGV4dCA9IGJvZHlc
biAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5ibG9iICYmIEJsb2IucHJvdG90eXBlLmlzUHJvdG90
eXBlT2YoYm9keSkpIHtcbiAgICAgICAgdGhpcy5fYm9keUJsb2IgPSBib2R5XG4gICAgICB9IGVs
c2UgaWYgKHN1cHBvcnQuZm9ybURhdGEgJiYgRm9ybURhdGEucHJvdG90eXBlLmlzUHJvdG90eXBl
T2YoYm9keSkpIHtcbiAgICAgICAgdGhpcy5fYm9keUZvcm1EYXRhID0gYm9keVxuICAgICAgfSBl
bHNlIGlmIChzdXBwb3J0LnNlYXJjaFBhcmFtcyAmJiBVUkxTZWFyY2hQYXJhbXMucHJvdG90eXBl
LmlzUHJvdG90eXBlT2YoYm9keSkpIHtcbiAgICAgICAgdGhpcy5fYm9keVRleHQgPSBib2R5LnRv
U3RyaW5nKClcbiAgICAgIH0gZWxzZSBpZiAoIWJvZHkpIHtcbiAgICAgICAgdGhpcy5fYm9keVRl
eHQgPSAnJ1xuICAgICAgfSBlbHNlIGlmIChzdXBwb3J0LmFycmF5QnVmZmVyICYmIEFycmF5QnVm
ZmVyLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICAgIC8vIE9ubHkgc3Vw
cG9ydCBBcnJheUJ1ZmZlcnMgZm9yIFBPU1QgbWV0aG9kLlxuICAgICAgICAvLyBSZWNlaXZpbmcg
QXJyYXlCdWZmZXJzIGhhcHBlbnMgdmlhIEJsb2JzLCBpbnN0ZWFkLlxuICAgICAgfSBlbHNlIHtc
biAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bnN1cHBvcnRlZCBCb2R5SW5pdCB0eXBlJylcbiAg
ICAgIH1cblxuICAgICAgaWYgKCF0aGlzLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKSkge1xu
ICAgICAgICBpZiAodHlwZW9mIGJvZHkgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgdGhpcy5o
ZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgJ3RleHQvcGxhaW47Y2hhcnNldD1VVEYtOCcpXG4g
ICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUJsb2IgJiYgdGhpcy5fYm9keUJsb2IudHlwZSkg
e1xuICAgICAgICAgIHRoaXMuaGVhZGVycy5zZXQoJ2NvbnRlbnQtdHlwZScsIHRoaXMuX2JvZHlC
bG9iLnR5cGUpXG4gICAgICAgIH0gZWxzZSBpZiAoc3VwcG9ydC5zZWFyY2hQYXJhbXMgJiYgVVJM
U2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGJvZHkpKSB7XG4gICAgICAgICAg
dGhpcy5oZWFkZXJzLnNldCgnY29udGVudC10eXBlJywgJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0t
dXJsZW5jb2RlZDtjaGFyc2V0PVVURi04JylcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxu
ICAgIGlmIChzdXBwb3J0LmJsb2IpIHtcbiAgICAgIHRoaXMuYmxvYiA9IGZ1bmN0aW9uKCkge1xu
ICAgICAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlzKVxuICAgICAgICBpZiAocmVqZWN0
ZWQpIHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0ZWRcbiAgICAgICAgfVxuXG4gICAgICAgIGlm
ICh0aGlzLl9ib2R5QmxvYikge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUodGhp
cy5fYm9keUJsb2IpXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fYm9keUZvcm1EYXRhKSB7XG4g
ICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdjb3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5IGFz
IGJsb2InKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29s
dmUobmV3IEJsb2IoW3RoaXMuX2JvZHlUZXh0XSkpXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAg
ICAgdGhpcy5hcnJheUJ1ZmZlciA9IGZ1bmN0aW9uKCkge1xuICAgICAgICByZXR1cm4gdGhpcy5i
bG9iKCkudGhlbihyZWFkQmxvYkFzQXJyYXlCdWZmZXIpXG4gICAgICB9XG5cbiAgICAgIHRoaXMu
dGV4dCA9IGZ1bmN0aW9uKCkge1xuICAgICAgICB2YXIgcmVqZWN0ZWQgPSBjb25zdW1lZCh0aGlz
KVxuICAgICAgICBpZiAocmVqZWN0ZWQpIHtcbiAgICAgICAgICByZXR1cm4gcmVqZWN0ZWRcbiAg
ICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLl9ib2R5QmxvYikge1xuICAgICAgICAgIHJldHVy
biByZWFkQmxvYkFzVGV4dCh0aGlzLl9ib2R5QmxvYilcbiAgICAgICAgfSBlbHNlIGlmICh0aGlz
Ll9ib2R5Rm9ybURhdGEpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2NvdWxkIG5vdCBy
ZWFkIEZvcm1EYXRhIGJvZHkgYXMgdGV4dCcpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAg
cmV0dXJuIFByb21pc2UucmVzb2x2ZSh0aGlzLl9ib2R5VGV4dClcbiAgICAgICAgfVxuICAgICAg
fVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRleHQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAg
dmFyIHJlamVjdGVkID0gY29uc3VtZWQodGhpcylcbiAgICAgICAgcmV0dXJuIHJlamVjdGVkID8g
cmVqZWN0ZWQgOiBQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keVRleHQpXG4gICAgICB9XG4gICAg
fVxuXG4gICAgaWYgKHN1cHBvcnQuZm9ybURhdGEpIHtcbiAgICAgIHRoaXMuZm9ybURhdGEgPSBm
dW5jdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMudGV4dCgpLnRoZW4oZGVjb2RlKVxuICAg
ICAgfVxuICAgIH1cblxuICAgIHRoaXMuanNvbiA9IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJu
IHRoaXMudGV4dCgpLnRoZW4oSlNPTi5wYXJzZSlcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpc1xu
ICB9XG5cbiAgLy8gSFRUUCBtZXRob2RzIHdob3NlIGNhcGl0YWxpemF0aW9uIHNob3VsZCBiZSBu
b3JtYWxpemVkXG4gIHZhciBtZXRob2RzID0gWydERUxFVEUnLCAnR0VUJywgJ0hFQUQnLCAnT1BU
SU9OUycsICdQT1NUJywgJ1BVVCddXG5cbiAgZnVuY3Rpb24gbm9ybWFsaXplTWV0aG9kKG1ldGhv
ZCkge1xuICAgIHZhciB1cGNhc2VkID0gbWV0aG9kLnRvVXBwZXJDYXNlKClcbiAgICByZXR1cm4g
KG1ldGhvZHMuaW5kZXhPZih1cGNhc2VkKSA+IC0xKSA/IHVwY2FzZWQgOiBtZXRob2RcbiAgfVxu
XG4gIGZ1bmN0aW9uIFJlcXVlc3QoaW5wdXQsIG9wdGlvbnMpIHtcbiAgICBvcHRpb25zID0gb3B0
aW9ucyB8fCB7fVxuICAgIHZhciBib2R5ID0gb3B0aW9ucy5ib2R5XG4gICAgaWYgKFJlcXVlc3Qu
cHJvdG90eXBlLmlzUHJvdG90eXBlT2YoaW5wdXQpKSB7XG4gICAgICBpZiAoaW5wdXQuYm9keVVz
ZWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQWxyZWFkeSByZWFkJylcbiAgICAg
IH1cbiAgICAgIHRoaXMudXJsID0gaW5wdXQudXJsXG4gICAgICB0aGlzLmNyZWRlbnRpYWxzID0g
aW5wdXQuY3JlZGVudGlhbHNcbiAgICAgIGlmICghb3B0aW9ucy5oZWFkZXJzKSB7XG4gICAgICAg
IHRoaXMuaGVhZGVycyA9IG5ldyBIZWFkZXJzKGlucHV0LmhlYWRlcnMpXG4gICAgICB9XG4gICAg
ICB0aGlzLm1ldGhvZCA9IGlucHV0Lm1ldGhvZFxuICAgICAgdGhpcy5tb2RlID0gaW5wdXQubW9k
ZVxuICAgICAgaWYgKCFib2R5KSB7XG4gICAgICAgIGJvZHkgPSBpbnB1dC5fYm9keUluaXRcbiAg
ICAgICAgaW5wdXQuYm9keVVzZWQgPSB0cnVlXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAg
IHRoaXMudXJsID0gaW5wdXRcbiAgICB9XG5cbiAgICB0aGlzLmNyZWRlbnRpYWxzID0gb3B0aW9u
cy5jcmVkZW50aWFscyB8fCB0aGlzLmNyZWRlbnRpYWxzIHx8ICdvbWl0J1xuICAgIGlmIChvcHRp
b25zLmhlYWRlcnMgfHwgIXRoaXMuaGVhZGVycykge1xuICAgICAgdGhpcy5oZWFkZXJzID0gbmV3
IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICAgIH1cbiAgICB0aGlzLm1ldGhvZCA9IG5vcm1h
bGl6ZU1ldGhvZChvcHRpb25zLm1ldGhvZCB8fCB0aGlzLm1ldGhvZCB8fCAnR0VUJylcbiAgICB0
aGlzLm1vZGUgPSBvcHRpb25zLm1vZGUgfHwgdGhpcy5tb2RlIHx8IG51bGxcbiAgICB0aGlzLnJl
ZmVycmVyID0gbnVsbFxuXG4gICAgaWYgKCh0aGlzLm1ldGhvZCA9PT0gJ0dFVCcgfHwgdGhpcy5t
ZXRob2QgPT09ICdIRUFEJykgJiYgYm9keSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcign
Qm9keSBub3QgYWxsb3dlZCBmb3IgR0VUIG9yIEhFQUQgcmVxdWVzdHMnKVxuICAgIH1cbiAgICB0
aGlzLl9pbml0Qm9keShib2R5KVxuICB9XG5cbiAgUmVxdWVzdC5wcm90b3R5cGUuY2xvbmUgPSBm
dW5jdGlvbigpIHtcbiAgICByZXR1cm4gbmV3IFJlcXVlc3QodGhpcylcbiAgfVxuXG4gIGZ1bmN0
aW9uIGRlY29kZShib2R5KSB7XG4gICAgdmFyIGZvcm0gPSBuZXcgRm9ybURhdGEoKVxuICAgIGJv
ZHkudHJpbSgpLnNwbGl0KCcmJykuZm9yRWFjaChmdW5jdGlvbihieXRlcykge1xuICAgICAgaWYg
KGJ5dGVzKSB7XG4gICAgICAgIHZhciBzcGxpdCA9IGJ5dGVzLnNwbGl0KCc9JylcbiAgICAgICAg
dmFyIG5hbWUgPSBzcGxpdC5zaGlmdCgpLnJlcGxhY2UoL1xcKy9nLCAnICcpXG4gICAgICAgIHZh
ciB2YWx1ZSA9IHNwbGl0LmpvaW4oJz0nKS5yZXBsYWNlKC9cXCsvZywgJyAnKVxuICAgICAgICBm
b3JtLmFwcGVuZChkZWNvZGVVUklDb21wb25lbnQobmFtZSksIGRlY29kZVVSSUNvbXBvbmVudCh2
YWx1ZSkpXG4gICAgICB9XG4gICAgfSlcbiAgICByZXR1cm4gZm9ybVxuICB9XG5cbiAgZnVuY3Rp
b24gaGVhZGVycyh4aHIpIHtcbiAgICB2YXIgaGVhZCA9IG5ldyBIZWFkZXJzKClcbiAgICB2YXIg
cGFpcnMgPSAoeGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpIHx8ICcnKS50cmltKCkuc3BsaXQo
J1xcbicpXG4gICAgcGFpcnMuZm9yRWFjaChmdW5jdGlvbihoZWFkZXIpIHtcbiAgICAgIHZhciBz
cGxpdCA9IGhlYWRlci50cmltKCkuc3BsaXQoJzonKVxuICAgICAgdmFyIGtleSA9IHNwbGl0LnNo
aWZ0KCkudHJpbSgpXG4gICAgICB2YXIgdmFsdWUgPSBzcGxpdC5qb2luKCc6JykudHJpbSgpXG4g
ICAgICBoZWFkLmFwcGVuZChrZXksIHZhbHVlKVxuICAgIH0pXG4gICAgcmV0dXJuIGhlYWRcbiAg
fVxuXG4gIEJvZHkuY2FsbChSZXF1ZXN0LnByb3RvdHlwZSlcblxuICBmdW5jdGlvbiBSZXNwb25z
ZShib2R5SW5pdCwgb3B0aW9ucykge1xuICAgIGlmICghb3B0aW9ucykge1xuICAgICAgb3B0aW9u
cyA9IHt9XG4gICAgfVxuXG4gICAgdGhpcy50eXBlID0gJ2RlZmF1bHQnXG4gICAgdGhpcy5zdGF0
dXMgPSBvcHRpb25zLnN0YXR1c1xuICAgIHRoaXMub2sgPSB0aGlzLnN0YXR1cyA+PSAyMDAgJiYg
dGhpcy5zdGF0dXMgPCAzMDBcbiAgICB0aGlzLnN0YXR1c1RleHQgPSBvcHRpb25zLnN0YXR1c1Rl
eHRcbiAgICB0aGlzLmhlYWRlcnMgPSBvcHRpb25zLmhlYWRlcnMgaW5zdGFuY2VvZiBIZWFkZXJz
ID8gb3B0aW9ucy5oZWFkZXJzIDogbmV3IEhlYWRlcnMob3B0aW9ucy5oZWFkZXJzKVxuICAgIHRo
aXMudXJsID0gb3B0aW9ucy51cmwgfHwgJydcbiAgICB0aGlzLl9pbml0Qm9keShib2R5SW5pdClc
biAgfVxuXG4gIEJvZHkuY2FsbChSZXNwb25zZS5wcm90b3R5cGUpXG5cbiAgUmVzcG9uc2UucHJv
dG90eXBlLmNsb25lID0gZnVuY3Rpb24oKSB7XG4gICAgcmV0dXJuIG5ldyBSZXNwb25zZSh0aGlz
Ll9ib2R5SW5pdCwge1xuICAgICAgc3RhdHVzOiB0aGlzLnN0YXR1cyxcbiAgICAgIHN0YXR1c1Rl
eHQ6IHRoaXMuc3RhdHVzVGV4dCxcbiAgICAgIGhlYWRlcnM6IG5ldyBIZWFkZXJzKHRoaXMuaGVh
ZGVycyksXG4gICAgICB1cmw6IHRoaXMudXJsXG4gICAgfSlcbiAgfVxuXG4gIFJlc3BvbnNlLmVy
cm9yID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIHJlc3BvbnNlID0gbmV3IFJlc3BvbnNlKG51bGws
IHtzdGF0dXM6IDAsIHN0YXR1c1RleHQ6ICcnfSlcbiAgICByZXNwb25zZS50eXBlID0gJ2Vycm9y
J1xuICAgIHJldHVybiByZXNwb25zZVxuICB9XG5cbiAgdmFyIHJlZGlyZWN0U3RhdHVzZXMgPSBb
MzAxLCAzMDIsIDMwMywgMzA3LCAzMDhdXG5cbiAgUmVzcG9uc2UucmVkaXJlY3QgPSBmdW5jdGlv
bih1cmwsIHN0YXR1cykge1xuICAgIGlmIChyZWRpcmVjdFN0YXR1c2VzLmluZGV4T2Yoc3RhdHVz
KSA9PT0gLTEpIHtcbiAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbnZhbGlkIHN0YXR1cyBj
b2RlJylcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFJlc3BvbnNlKG51bGwsIHtzdGF0dXM6IHN0
YXR1cywgaGVhZGVyczoge2xvY2F0aW9uOiB1cmx9fSlcbiAgfVxuXG4gIHNlbGYuSGVhZGVycyA9
IEhlYWRlcnNcbiAgc2VsZi5SZXF1ZXN0ID0gUmVxdWVzdFxuICBzZWxmLlJlc3BvbnNlID0gUmVz
cG9uc2VcblxuICBzZWxmLmZldGNoID0gZnVuY3Rpb24oaW5wdXQsIGluaXQpIHtcbiAgICByZXR1
cm4gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcmVx
dWVzdFxuICAgICAgaWYgKFJlcXVlc3QucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoaW5wdXQpICYm
ICFpbml0KSB7XG4gICAgICAgIHJlcXVlc3QgPSBpbnB1dFxuICAgICAgfSBlbHNlIHtcbiAgICAg
ICAgcmVxdWVzdCA9IG5ldyBSZXF1ZXN0KGlucHV0LCBpbml0KVxuICAgICAgfVxuXG4gICAgICB2
YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KClcblxuICAgICAgZnVuY3Rpb24gcmVzcG9uc2VV
UkwoKSB7XG4gICAgICAgIGlmICgncmVzcG9uc2VVUkwnIGluIHhocikge1xuICAgICAgICAgIHJl
dHVybiB4aHIucmVzcG9uc2VVUkxcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEF2b2lkIHNlY3Vy
aXR5IHdhcm5pbmdzIG9uIGdldFJlc3BvbnNlSGVhZGVyIHdoZW4gbm90IGFsbG93ZWQgYnkgQ09S
U1xuICAgICAgICBpZiAoL15YLVJlcXVlc3QtVVJMOi9tLnRlc3QoeGhyLmdldEFsbFJlc3BvbnNl
SGVhZGVycygpKSkge1xuICAgICAgICAgIHJldHVybiB4aHIuZ2V0UmVzcG9uc2VIZWFkZXIoJ1gt
UmVxdWVzdC1VUkwnKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuXG4gICAgICB9XG5cbiAg
ICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgdmFyIG9wdGlvbnMgPSB7XG4g
ICAgICAgICAgc3RhdHVzOiB4aHIuc3RhdHVzLFxuICAgICAgICAgIHN0YXR1c1RleHQ6IHhoci5z
dGF0dXNUZXh0LFxuICAgICAgICAgIGhlYWRlcnM6IGhlYWRlcnMoeGhyKSxcbiAgICAgICAgICB1
cmw6IHJlc3BvbnNlVVJMKClcbiAgICAgICAgfVxuICAgICAgICB2YXIgYm9keSA9ICdyZXNwb25z
ZScgaW4geGhyID8geGhyLnJlc3BvbnNlIDogeGhyLnJlc3BvbnNlVGV4dFxuICAgICAgICByZXNv
bHZlKG5ldyBSZXNwb25zZShib2R5LCBvcHRpb25zKSlcbiAgICAgIH1cblxuICAgICAgeGhyLm9u
ZXJyb3IgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgcmVqZWN0KG5ldyBUeXBlRXJyb3IoJ05ldHdv
cmsgcmVxdWVzdCBmYWlsZWQnKSlcbiAgICAgIH1cblxuICAgICAgeGhyLm9udGltZW91dCA9IGZ1
bmN0aW9uKCkge1xuICAgICAgICByZWplY3QobmV3IFR5cGVFcnJvcignTmV0d29yayByZXF1ZXN0
IGZhaWxlZCcpKVxuICAgICAgfVxuXG4gICAgICB4aHIub3BlbihyZXF1ZXN0Lm1ldGhvZCwgcmVx
dWVzdC51cmwsIHRydWUpXG5cbiAgICAgIGlmIChyZXF1ZXN0LmNyZWRlbnRpYWxzID09PSAnaW5j
bHVkZScpIHtcbiAgICAgICAgeGhyLndpdGhDcmVkZW50aWFscyA9IHRydWVcbiAgICAgIH1cblxu
ICAgICAgaWYgKCdyZXNwb25zZVR5cGUnIGluIHhociAmJiBzdXBwb3J0LmJsb2IpIHtcbiAgICAg
ICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdibG9iJ1xuICAgICAgfVxuXG4gICAgICByZXF1ZXN0Lmhl
YWRlcnMuZm9yRWFjaChmdW5jdGlvbih2YWx1ZSwgbmFtZSkge1xuICAgICAgICB4aHIuc2V0UmVx
dWVzdEhlYWRlcihuYW1lLCB2YWx1ZSlcbiAgICAgIH0pXG5cbiAgICAgIHhoci5zZW5kKHR5cGVv
ZiByZXF1ZXN0Ll9ib2R5SW5pdCA9PT0gJ3VuZGVmaW5lZCcgPyBudWxsIDogcmVxdWVzdC5fYm9k
eUluaXQpXG4gICAgfSlcbiAgfVxuICBzZWxmLmZldGNoLnBvbHlmaWxsID0gdHJ1ZVxufSkodHlw
ZW9mIHNlbGYgIT09ICd1bmRlZmluZWQnID8gc2VsZiA6IHRoaXMpO1xuXG5cblxuLyoqKioqKioq
KioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAqKiAuL34vcmVhY3Qtc2NyaXB0cy9+L3do
YXR3Zy1mZXRjaC9mZXRjaC5qc1xuICoqIG1vZHVsZSBpZCA9IDIxMlxuICoqIG1vZHVsZSBjaHVu
a3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywg
SW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlz
IGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJ
Q0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4g
YWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhl
IFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3Ry
aWN0JztcblxudmFyIFBvb2xlZENsYXNzID0gcmVxdWlyZSgnLi9Qb29sZWRDbGFzcycpO1xudmFy
IFJlYWN0RWxlbWVudCA9IHJlcXVpcmUoJy4vUmVhY3RFbGVtZW50Jyk7XG5cbnZhciBlbXB0eUZ1
bmN0aW9uID0gcmVxdWlyZSgnZmJqcy9saWIvZW1wdHlGdW5jdGlvbicpO1xudmFyIHRyYXZlcnNl
QWxsQ2hpbGRyZW4gPSByZXF1aXJlKCcuL3RyYXZlcnNlQWxsQ2hpbGRyZW4nKTtcblxudmFyIHR3
b0FyZ3VtZW50UG9vbGVyID0gUG9vbGVkQ2xhc3MudHdvQXJndW1lbnRQb29sZXI7XG52YXIgZm91
ckFyZ3VtZW50UG9vbGVyID0gUG9vbGVkQ2xhc3MuZm91ckFyZ3VtZW50UG9vbGVyO1xuXG52YXIg
dXNlclByb3ZpZGVkS2V5RXNjYXBlUmVnZXggPSAvXFwvKy9nO1xuZnVuY3Rpb24gZXNjYXBlVXNl
clByb3ZpZGVkS2V5KHRleHQpIHtcbiAgcmV0dXJuICgnJyArIHRleHQpLnJlcGxhY2UodXNlclBy
b3ZpZGVkS2V5RXNjYXBlUmVnZXgsICckJi8nKTtcbn1cblxuLyoqXG4gKiBQb29sZWRDbGFzcyBy
ZXByZXNlbnRpbmcgdGhlIGJvb2trZWVwaW5nIGFzc29jaWF0ZWQgd2l0aCBwZXJmb3JtaW5nIGEg
Y2hpbGRcbiAqIHRyYXZlcnNhbC4gQWxsb3dzIGF2b2lkaW5nIGJpbmRpbmcgY2FsbGJhY2tzLlxu
ICpcbiAqIEBjb25zdHJ1Y3RvciBGb3JFYWNoQm9va0tlZXBpbmdcbiAqIEBwYXJhbSB7IWZ1bmN0
aW9ufSBmb3JFYWNoRnVuY3Rpb24gRnVuY3Rpb24gdG8gcGVyZm9ybSB0cmF2ZXJzYWwgd2l0aC5c
biAqIEBwYXJhbSB7Pyp9IGZvckVhY2hDb250ZXh0IENvbnRleHQgdG8gcGVyZm9ybSBjb250ZXh0
IHdpdGguXG4gKi9cbmZ1bmN0aW9uIEZvckVhY2hCb29rS2VlcGluZyhmb3JFYWNoRnVuY3Rpb24s
IGZvckVhY2hDb250ZXh0KSB7XG4gIHRoaXMuZnVuYyA9IGZvckVhY2hGdW5jdGlvbjtcbiAgdGhp
cy5jb250ZXh0ID0gZm9yRWFjaENvbnRleHQ7XG4gIHRoaXMuY291bnQgPSAwO1xufVxuRm9yRWFj
aEJvb2tLZWVwaW5nLnByb3RvdHlwZS5kZXN0cnVjdG9yID0gZnVuY3Rpb24gKCkge1xuICB0aGlz
LmZ1bmMgPSBudWxsO1xuICB0aGlzLmNvbnRleHQgPSBudWxsO1xuICB0aGlzLmNvdW50ID0gMDtc
bn07XG5Qb29sZWRDbGFzcy5hZGRQb29saW5nVG8oRm9yRWFjaEJvb2tLZWVwaW5nLCB0d29Bcmd1
bWVudFBvb2xlcik7XG5cbmZ1bmN0aW9uIGZvckVhY2hTaW5nbGVDaGlsZChib29rS2VlcGluZywg
Y2hpbGQsIG5hbWUpIHtcbiAgdmFyIGZ1bmMgPSBib29rS2VlcGluZy5mdW5jLFxuICAgICAgY29u
dGV4dCA9IGJvb2tLZWVwaW5nLmNvbnRleHQ7XG5cbiAgZnVuYy5jYWxsKGNvbnRleHQsIGNoaWxk
LCBib29rS2VlcGluZy5jb3VudCsrKTtcbn1cblxuLyoqXG4gKiBJdGVyYXRlcyB0aHJvdWdoIGNo
aWxkcmVuIHRoYXQgYXJlIHR5cGljYWxseSBzcGVjaWZpZWQgYXMgYHByb3BzLmNoaWxkcmVuYC5c
biAqXG4gKiBTZWUgaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2
ZWwtYXBpLmh0bWwjcmVhY3QuY2hpbGRyZW4uZm9yZWFjaFxuICpcbiAqIFRoZSBwcm92aWRlZCBm
b3JFYWNoRnVuYyhjaGlsZCwgaW5kZXgpIHdpbGwgYmUgY2FsbGVkIGZvciBlYWNoXG4gKiBsZWFm
IGNoaWxkLlxuICpcbiAqIEBwYXJhbSB7Pyp9IGNoaWxkcmVuIENoaWxkcmVuIHRyZWUgY29udGFp
bmVyLlxuICogQHBhcmFtIHtmdW5jdGlvbigqLCBpbnQpfSBmb3JFYWNoRnVuY1xuICogQHBhcmFt
IHsqfSBmb3JFYWNoQ29udGV4dCBDb250ZXh0IGZvciBmb3JFYWNoQ29udGV4dC5cbiAqL1xuZnVu
Y3Rpb24gZm9yRWFjaENoaWxkcmVuKGNoaWxkcmVuLCBmb3JFYWNoRnVuYywgZm9yRWFjaENvbnRl
eHQpIHtcbiAgaWYgKGNoaWxkcmVuID09IG51bGwpIHtcbiAgICByZXR1cm4gY2hpbGRyZW47XG4g
IH1cbiAgdmFyIHRyYXZlcnNlQ29udGV4dCA9IEZvckVhY2hCb29rS2VlcGluZy5nZXRQb29sZWQo
Zm9yRWFjaEZ1bmMsIGZvckVhY2hDb250ZXh0KTtcbiAgdHJhdmVyc2VBbGxDaGlsZHJlbihjaGls
ZHJlbiwgZm9yRWFjaFNpbmdsZUNoaWxkLCB0cmF2ZXJzZUNvbnRleHQpO1xuICBGb3JFYWNoQm9v
a0tlZXBpbmcucmVsZWFzZSh0cmF2ZXJzZUNvbnRleHQpO1xufVxuXG4vKipcbiAqIFBvb2xlZENs
YXNzIHJlcHJlc2VudGluZyB0aGUgYm9va2tlZXBpbmcgYXNzb2NpYXRlZCB3aXRoIHBlcmZvcm1p
bmcgYSBjaGlsZFxuICogbWFwcGluZy4gQWxsb3dzIGF2b2lkaW5nIGJpbmRpbmcgY2FsbGJhY2tz
LlxuICpcbiAqIEBjb25zdHJ1Y3RvciBNYXBCb29rS2VlcGluZ1xuICogQHBhcmFtIHshKn0gbWFw
UmVzdWx0IE9iamVjdCBjb250YWluaW5nIHRoZSBvcmRlcmVkIG1hcCBvZiByZXN1bHRzLlxuICog
QHBhcmFtIHshZnVuY3Rpb259IG1hcEZ1bmN0aW9uIEZ1bmN0aW9uIHRvIHBlcmZvcm0gbWFwcGlu
ZyB3aXRoLlxuICogQHBhcmFtIHs/Kn0gbWFwQ29udGV4dCBDb250ZXh0IHRvIHBlcmZvcm0gbWFw
cGluZyB3aXRoLlxuICovXG5mdW5jdGlvbiBNYXBCb29rS2VlcGluZyhtYXBSZXN1bHQsIGtleVBy
ZWZpeCwgbWFwRnVuY3Rpb24sIG1hcENvbnRleHQpIHtcbiAgdGhpcy5yZXN1bHQgPSBtYXBSZXN1
bHQ7XG4gIHRoaXMua2V5UHJlZml4ID0ga2V5UHJlZml4O1xuICB0aGlzLmZ1bmMgPSBtYXBGdW5j
dGlvbjtcbiAgdGhpcy5jb250ZXh0ID0gbWFwQ29udGV4dDtcbiAgdGhpcy5jb3VudCA9IDA7XG59
XG5NYXBCb29rS2VlcGluZy5wcm90b3R5cGUuZGVzdHJ1Y3RvciA9IGZ1bmN0aW9uICgpIHtcbiAg
dGhpcy5yZXN1bHQgPSBudWxsO1xuICB0aGlzLmtleVByZWZpeCA9IG51bGw7XG4gIHRoaXMuZnVu
YyA9IG51bGw7XG4gIHRoaXMuY29udGV4dCA9IG51bGw7XG4gIHRoaXMuY291bnQgPSAwO1xufTtc
blBvb2xlZENsYXNzLmFkZFBvb2xpbmdUbyhNYXBCb29rS2VlcGluZywgZm91ckFyZ3VtZW50UG9v
bGVyKTtcblxuZnVuY3Rpb24gbWFwU2luZ2xlQ2hpbGRJbnRvQ29udGV4dChib29rS2VlcGluZywg
Y2hpbGQsIGNoaWxkS2V5KSB7XG4gIHZhciByZXN1bHQgPSBib29rS2VlcGluZy5yZXN1bHQsXG4g
ICAgICBrZXlQcmVmaXggPSBib29rS2VlcGluZy5rZXlQcmVmaXgsXG4gICAgICBmdW5jID0gYm9v
a0tlZXBpbmcuZnVuYyxcbiAgICAgIGNvbnRleHQgPSBib29rS2VlcGluZy5jb250ZXh0O1xuXG5c
biAgdmFyIG1hcHBlZENoaWxkID0gZnVuYy5jYWxsKGNvbnRleHQsIGNoaWxkLCBib29rS2VlcGlu
Zy5jb3VudCsrKTtcbiAgaWYgKEFycmF5LmlzQXJyYXkobWFwcGVkQ2hpbGQpKSB7XG4gICAgbWFw
SW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChtYXBwZWRDaGlsZCwgcmVzdWx0LCBjaGlsZEtleSwg
ZW1wdHlGdW5jdGlvbi50aGF0UmV0dXJuc0FyZ3VtZW50KTtcbiAgfSBlbHNlIGlmIChtYXBwZWRD
aGlsZCAhPSBudWxsKSB7XG4gICAgaWYgKFJlYWN0RWxlbWVudC5pc1ZhbGlkRWxlbWVudChtYXBw
ZWRDaGlsZCkpIHtcbiAgICAgIG1hcHBlZENoaWxkID0gUmVhY3RFbGVtZW50LmNsb25lQW5kUmVw
bGFjZUtleShtYXBwZWRDaGlsZCxcbiAgICAgIC8vIEtlZXAgYm90aCB0aGUgKG1hcHBlZCkgYW5k
IG9sZCBrZXlzIGlmIHRoZXkgZGlmZmVyLCBqdXN0IGFzXG4gICAgICAvLyB0cmF2ZXJzZUFsbENo
aWxkcmVuIHVzZWQgdG8gZG8gZm9yIG9iamVjdHMgYXMgY2hpbGRyZW5cbiAgICAgIGtleVByZWZp
eCArIChtYXBwZWRDaGlsZC5rZXkgJiYgKCFjaGlsZCB8fCBjaGlsZC5rZXkgIT09IG1hcHBlZENo
aWxkLmtleSkgPyBlc2NhcGVVc2VyUHJvdmlkZWRLZXkobWFwcGVkQ2hpbGQua2V5KSArICcvJyA6
ICcnKSArIGNoaWxkS2V5KTtcbiAgICB9XG4gICAgcmVzdWx0LnB1c2gobWFwcGVkQ2hpbGQpO1xu
ICB9XG59XG5cbmZ1bmN0aW9uIG1hcEludG9XaXRoS2V5UHJlZml4SW50ZXJuYWwoY2hpbGRyZW4s
IGFycmF5LCBwcmVmaXgsIGZ1bmMsIGNvbnRleHQpIHtcbiAgdmFyIGVzY2FwZWRQcmVmaXggPSAn
JztcbiAgaWYgKHByZWZpeCAhPSBudWxsKSB7XG4gICAgZXNjYXBlZFByZWZpeCA9IGVzY2FwZVVz
ZXJQcm92aWRlZEtleShwcmVmaXgpICsgJy8nO1xuICB9XG4gIHZhciB0cmF2ZXJzZUNvbnRleHQg
PSBNYXBCb29rS2VlcGluZy5nZXRQb29sZWQoYXJyYXksIGVzY2FwZWRQcmVmaXgsIGZ1bmMsIGNv
bnRleHQpO1xuICB0cmF2ZXJzZUFsbENoaWxkcmVuKGNoaWxkcmVuLCBtYXBTaW5nbGVDaGlsZElu
dG9Db250ZXh0LCB0cmF2ZXJzZUNvbnRleHQpO1xuICBNYXBCb29rS2VlcGluZy5yZWxlYXNlKHRy
YXZlcnNlQ29udGV4dCk7XG59XG5cbi8qKlxuICogTWFwcyBjaGlsZHJlbiB0aGF0IGFyZSB0eXBp
Y2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmAuXG4gKlxuICogU2VlIGh0dHBzOi8v
ZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3JlYWN0LmNo
aWxkcmVuLm1hcFxuICpcbiAqIFRoZSBwcm92aWRlZCBtYXBGdW5jdGlvbihjaGlsZCwga2V5LCBp
bmRleCkgd2lsbCBiZSBjYWxsZWQgZm9yIGVhY2hcbiAqIGxlYWYgY2hpbGQuXG4gKlxuICogQHBh
cmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJlZSBjb250YWluZXIuXG4gKiBAcGFyYW0ge2Z1
bmN0aW9uKCosIGludCl9IGZ1bmMgVGhlIG1hcCBmdW5jdGlvbi5cbiAqIEBwYXJhbSB7Kn0gY29u
dGV4dCBDb250ZXh0IGZvciBtYXBGdW5jdGlvbi5cbiAqIEByZXR1cm4ge29iamVjdH0gT2JqZWN0
IGNvbnRhaW5pbmcgdGhlIG9yZGVyZWQgbWFwIG9mIHJlc3VsdHMuXG4gKi9cbmZ1bmN0aW9uIG1h
cENoaWxkcmVuKGNoaWxkcmVuLCBmdW5jLCBjb250ZXh0KSB7XG4gIGlmIChjaGlsZHJlbiA9PSBu
dWxsKSB7XG4gICAgcmV0dXJuIGNoaWxkcmVuO1xuICB9XG4gIHZhciByZXN1bHQgPSBbXTtcbiAg
bWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChjaGlsZHJlbiwgcmVzdWx0LCBudWxsLCBmdW5j
LCBjb250ZXh0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gZm9yRWFjaFNpbmds
ZUNoaWxkRHVtbXkodHJhdmVyc2VDb250ZXh0LCBjaGlsZCwgbmFtZSkge1xuICByZXR1cm4gbnVs
bDtcbn1cblxuLyoqXG4gKiBDb3VudCB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuIHRoYXQgYXJlIHR5
cGljYWxseSBzcGVjaWZpZWQgYXNcbiAqIGBwcm9wcy5jaGlsZHJlbmAuXG4gKlxuICogU2VlIGh0
dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3Jl
YWN0LmNoaWxkcmVuLmNvdW50XG4gKlxuICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4g
dHJlZSBjb250YWluZXIuXG4gKiBAcmV0dXJuIHtudW1iZXJ9IFRoZSBudW1iZXIgb2YgY2hpbGRy
ZW4uXG4gKi9cbmZ1bmN0aW9uIGNvdW50Q2hpbGRyZW4oY2hpbGRyZW4sIGNvbnRleHQpIHtcbiAg
cmV0dXJuIHRyYXZlcnNlQWxsQ2hpbGRyZW4oY2hpbGRyZW4sIGZvckVhY2hTaW5nbGVDaGlsZER1
bW15LCBudWxsKTtcbn1cblxuLyoqXG4gKiBGbGF0dGVuIGEgY2hpbGRyZW4gb2JqZWN0ICh0eXBp
Y2FsbHkgc3BlY2lmaWVkIGFzIGBwcm9wcy5jaGlsZHJlbmApIGFuZFxuICogcmV0dXJuIGFuIGFy
cmF5IHdpdGggYXBwcm9wcmlhdGVseSByZS1rZXllZCBjaGlsZHJlbi5cbiAqXG4gKiBTZWUgaHR0
cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvZG9jcy90b3AtbGV2ZWwtYXBpLmh0bWwjcmVh
Y3QuY2hpbGRyZW4udG9hcnJheVxuICovXG5mdW5jdGlvbiB0b0FycmF5KGNoaWxkcmVuKSB7XG4g
IHZhciByZXN1bHQgPSBbXTtcbiAgbWFwSW50b1dpdGhLZXlQcmVmaXhJbnRlcm5hbChjaGlsZHJl
biwgcmVzdWx0LCBudWxsLCBlbXB0eUZ1bmN0aW9uLnRoYXRSZXR1cm5zQXJndW1lbnQpO1xuICBy
ZXR1cm4gcmVzdWx0O1xufVxuXG52YXIgUmVhY3RDaGlsZHJlbiA9IHtcbiAgZm9yRWFjaDogZm9y
RWFjaENoaWxkcmVuLFxuICBtYXA6IG1hcENoaWxkcmVuLFxuICBtYXBJbnRvV2l0aEtleVByZWZp
eEludGVybmFsOiBtYXBJbnRvV2l0aEtleVByZWZpeEludGVybmFsLFxuICBjb3VudDogY291bnRD
aGlsZHJlbixcbiAgdG9BcnJheTogdG9BcnJheVxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBSZWFj
dENoaWxkcmVuO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4g
KiogLi9+L3JlYWN0L2xpYi9SZWFjdENoaWxkcmVuLmpzXG4gKiogbW9kdWxlIGlkID0gMjE1XG4g
KiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDEzLXByZXNl
bnQsIEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMg
c291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5k
IGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNv
dXJjZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBi
ZSBmb3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4g
Ki9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RFbGVtZW50ID0gcmVxdWlyZSgnLi9SZWFj
dEVsZW1lbnQnKTtcblxuLyoqXG4gKiBDcmVhdGUgYSBmYWN0b3J5IHRoYXQgY3JlYXRlcyBIVE1M
IHRhZyBlbGVtZW50cy5cbiAqXG4gKiBAcHJpdmF0ZVxuICovXG52YXIgY3JlYXRlRE9NRmFjdG9y
eSA9IFJlYWN0RWxlbWVudC5jcmVhdGVGYWN0b3J5O1xuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5W
ICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIFJlYWN0RWxlbWVudFZhbGlkYXRvciA9IHJlcXVp
cmUoJy4vUmVhY3RFbGVtZW50VmFsaWRhdG9yJyk7XG4gIGNyZWF0ZURPTUZhY3RvcnkgPSBSZWFj
dEVsZW1lbnRWYWxpZGF0b3IuY3JlYXRlRmFjdG9yeTtcbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEg
bWFwcGluZyBmcm9tIHN1cHBvcnRlZCBIVE1MIHRhZ3MgdG8gYFJlYWN0RE9NQ29tcG9uZW50YCBj
bGFzc2VzLlxuICpcbiAqIEBwdWJsaWNcbiAqL1xudmFyIFJlYWN0RE9NRmFjdG9yaWVzID0ge1xu
ICBhOiBjcmVhdGVET01GYWN0b3J5KCdhJyksXG4gIGFiYnI6IGNyZWF0ZURPTUZhY3RvcnkoJ2Fi
YnInKSxcbiAgYWRkcmVzczogY3JlYXRlRE9NRmFjdG9yeSgnYWRkcmVzcycpLFxuICBhcmVhOiBj
cmVhdGVET01GYWN0b3J5KCdhcmVhJyksXG4gIGFydGljbGU6IGNyZWF0ZURPTUZhY3RvcnkoJ2Fy
dGljbGUnKSxcbiAgYXNpZGU6IGNyZWF0ZURPTUZhY3RvcnkoJ2FzaWRlJyksXG4gIGF1ZGlvOiBj
cmVhdGVET01GYWN0b3J5KCdhdWRpbycpLFxuICBiOiBjcmVhdGVET01GYWN0b3J5KCdiJyksXG4g
IGJhc2U6IGNyZWF0ZURPTUZhY3RvcnkoJ2Jhc2UnKSxcbiAgYmRpOiBjcmVhdGVET01GYWN0b3J5
KCdiZGknKSxcbiAgYmRvOiBjcmVhdGVET01GYWN0b3J5KCdiZG8nKSxcbiAgYmlnOiBjcmVhdGVE
T01GYWN0b3J5KCdiaWcnKSxcbiAgYmxvY2txdW90ZTogY3JlYXRlRE9NRmFjdG9yeSgnYmxvY2tx
dW90ZScpLFxuICBib2R5OiBjcmVhdGVET01GYWN0b3J5KCdib2R5JyksXG4gIGJyOiBjcmVhdGVE
T01GYWN0b3J5KCdicicpLFxuICBidXR0b246IGNyZWF0ZURPTUZhY3RvcnkoJ2J1dHRvbicpLFxu
ICBjYW52YXM6IGNyZWF0ZURPTUZhY3RvcnkoJ2NhbnZhcycpLFxuICBjYXB0aW9uOiBjcmVhdGVE
T01GYWN0b3J5KCdjYXB0aW9uJyksXG4gIGNpdGU6IGNyZWF0ZURPTUZhY3RvcnkoJ2NpdGUnKSxc
biAgY29kZTogY3JlYXRlRE9NRmFjdG9yeSgnY29kZScpLFxuICBjb2w6IGNyZWF0ZURPTUZhY3Rv
cnkoJ2NvbCcpLFxuICBjb2xncm91cDogY3JlYXRlRE9NRmFjdG9yeSgnY29sZ3JvdXAnKSxcbiAg
ZGF0YTogY3JlYXRlRE9NRmFjdG9yeSgnZGF0YScpLFxuICBkYXRhbGlzdDogY3JlYXRlRE9NRmFj
dG9yeSgnZGF0YWxpc3QnKSxcbiAgZGQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2RkJyksXG4gIGRlbDog
Y3JlYXRlRE9NRmFjdG9yeSgnZGVsJyksXG4gIGRldGFpbHM6IGNyZWF0ZURPTUZhY3RvcnkoJ2Rl
dGFpbHMnKSxcbiAgZGZuOiBjcmVhdGVET01GYWN0b3J5KCdkZm4nKSxcbiAgZGlhbG9nOiBjcmVh
dGVET01GYWN0b3J5KCdkaWFsb2cnKSxcbiAgZGl2OiBjcmVhdGVET01GYWN0b3J5KCdkaXYnKSxc
biAgZGw6IGNyZWF0ZURPTUZhY3RvcnkoJ2RsJyksXG4gIGR0OiBjcmVhdGVET01GYWN0b3J5KCdk
dCcpLFxuICBlbTogY3JlYXRlRE9NRmFjdG9yeSgnZW0nKSxcbiAgZW1iZWQ6IGNyZWF0ZURPTUZh
Y3RvcnkoJ2VtYmVkJyksXG4gIGZpZWxkc2V0OiBjcmVhdGVET01GYWN0b3J5KCdmaWVsZHNldCcp
LFxuICBmaWdjYXB0aW9uOiBjcmVhdGVET01GYWN0b3J5KCdmaWdjYXB0aW9uJyksXG4gIGZpZ3Vy
ZTogY3JlYXRlRE9NRmFjdG9yeSgnZmlndXJlJyksXG4gIGZvb3RlcjogY3JlYXRlRE9NRmFjdG9y
eSgnZm9vdGVyJyksXG4gIGZvcm06IGNyZWF0ZURPTUZhY3RvcnkoJ2Zvcm0nKSxcbiAgaDE6IGNy
ZWF0ZURPTUZhY3RvcnkoJ2gxJyksXG4gIGgyOiBjcmVhdGVET01GYWN0b3J5KCdoMicpLFxuICBo
MzogY3JlYXRlRE9NRmFjdG9yeSgnaDMnKSxcbiAgaDQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2g0Jyks
XG4gIGg1OiBjcmVhdGVET01GYWN0b3J5KCdoNScpLFxuICBoNjogY3JlYXRlRE9NRmFjdG9yeSgn
aDYnKSxcbiAgaGVhZDogY3JlYXRlRE9NRmFjdG9yeSgnaGVhZCcpLFxuICBoZWFkZXI6IGNyZWF0
ZURPTUZhY3RvcnkoJ2hlYWRlcicpLFxuICBoZ3JvdXA6IGNyZWF0ZURPTUZhY3RvcnkoJ2hncm91
cCcpLFxuICBocjogY3JlYXRlRE9NRmFjdG9yeSgnaHInKSxcbiAgaHRtbDogY3JlYXRlRE9NRmFj
dG9yeSgnaHRtbCcpLFxuICBpOiBjcmVhdGVET01GYWN0b3J5KCdpJyksXG4gIGlmcmFtZTogY3Jl
YXRlRE9NRmFjdG9yeSgnaWZyYW1lJyksXG4gIGltZzogY3JlYXRlRE9NRmFjdG9yeSgnaW1nJyks
XG4gIGlucHV0OiBjcmVhdGVET01GYWN0b3J5KCdpbnB1dCcpLFxuICBpbnM6IGNyZWF0ZURPTUZh
Y3RvcnkoJ2lucycpLFxuICBrYmQ6IGNyZWF0ZURPTUZhY3RvcnkoJ2tiZCcpLFxuICBrZXlnZW46
IGNyZWF0ZURPTUZhY3RvcnkoJ2tleWdlbicpLFxuICBsYWJlbDogY3JlYXRlRE9NRmFjdG9yeSgn
bGFiZWwnKSxcbiAgbGVnZW5kOiBjcmVhdGVET01GYWN0b3J5KCdsZWdlbmQnKSxcbiAgbGk6IGNy
ZWF0ZURPTUZhY3RvcnkoJ2xpJyksXG4gIGxpbms6IGNyZWF0ZURPTUZhY3RvcnkoJ2xpbmsnKSxc
biAgbWFpbjogY3JlYXRlRE9NRmFjdG9yeSgnbWFpbicpLFxuICBtYXA6IGNyZWF0ZURPTUZhY3Rv
cnkoJ21hcCcpLFxuICBtYXJrOiBjcmVhdGVET01GYWN0b3J5KCdtYXJrJyksXG4gIG1lbnU6IGNy
ZWF0ZURPTUZhY3RvcnkoJ21lbnUnKSxcbiAgbWVudWl0ZW06IGNyZWF0ZURPTUZhY3RvcnkoJ21l
bnVpdGVtJyksXG4gIG1ldGE6IGNyZWF0ZURPTUZhY3RvcnkoJ21ldGEnKSxcbiAgbWV0ZXI6IGNy
ZWF0ZURPTUZhY3RvcnkoJ21ldGVyJyksXG4gIG5hdjogY3JlYXRlRE9NRmFjdG9yeSgnbmF2Jyks
XG4gIG5vc2NyaXB0OiBjcmVhdGVET01GYWN0b3J5KCdub3NjcmlwdCcpLFxuICBvYmplY3Q6IGNy
ZWF0ZURPTUZhY3RvcnkoJ29iamVjdCcpLFxuICBvbDogY3JlYXRlRE9NRmFjdG9yeSgnb2wnKSxc
biAgb3B0Z3JvdXA6IGNyZWF0ZURPTUZhY3RvcnkoJ29wdGdyb3VwJyksXG4gIG9wdGlvbjogY3Jl
YXRlRE9NRmFjdG9yeSgnb3B0aW9uJyksXG4gIG91dHB1dDogY3JlYXRlRE9NRmFjdG9yeSgnb3V0
cHV0JyksXG4gIHA6IGNyZWF0ZURPTUZhY3RvcnkoJ3AnKSxcbiAgcGFyYW06IGNyZWF0ZURPTUZh
Y3RvcnkoJ3BhcmFtJyksXG4gIHBpY3R1cmU6IGNyZWF0ZURPTUZhY3RvcnkoJ3BpY3R1cmUnKSxc
biAgcHJlOiBjcmVhdGVET01GYWN0b3J5KCdwcmUnKSxcbiAgcHJvZ3Jlc3M6IGNyZWF0ZURPTUZh
Y3RvcnkoJ3Byb2dyZXNzJyksXG4gIHE6IGNyZWF0ZURPTUZhY3RvcnkoJ3EnKSxcbiAgcnA6IGNy
ZWF0ZURPTUZhY3RvcnkoJ3JwJyksXG4gIHJ0OiBjcmVhdGVET01GYWN0b3J5KCdydCcpLFxuICBy
dWJ5OiBjcmVhdGVET01GYWN0b3J5KCdydWJ5JyksXG4gIHM6IGNyZWF0ZURPTUZhY3RvcnkoJ3Mn
KSxcbiAgc2FtcDogY3JlYXRlRE9NRmFjdG9yeSgnc2FtcCcpLFxuICBzY3JpcHQ6IGNyZWF0ZURP
TUZhY3RvcnkoJ3NjcmlwdCcpLFxuICBzZWN0aW9uOiBjcmVhdGVET01GYWN0b3J5KCdzZWN0aW9u
JyksXG4gIHNlbGVjdDogY3JlYXRlRE9NRmFjdG9yeSgnc2VsZWN0JyksXG4gIHNtYWxsOiBjcmVh
dGVET01GYWN0b3J5KCdzbWFsbCcpLFxuICBzb3VyY2U6IGNyZWF0ZURPTUZhY3RvcnkoJ3NvdXJj
ZScpLFxuICBzcGFuOiBjcmVhdGVET01GYWN0b3J5KCdzcGFuJyksXG4gIHN0cm9uZzogY3JlYXRl
RE9NRmFjdG9yeSgnc3Ryb25nJyksXG4gIHN0eWxlOiBjcmVhdGVET01GYWN0b3J5KCdzdHlsZScp
LFxuICBzdWI6IGNyZWF0ZURPTUZhY3RvcnkoJ3N1YicpLFxuICBzdW1tYXJ5OiBjcmVhdGVET01G
YWN0b3J5KCdzdW1tYXJ5JyksXG4gIHN1cDogY3JlYXRlRE9NRmFjdG9yeSgnc3VwJyksXG4gIHRh
YmxlOiBjcmVhdGVET01GYWN0b3J5KCd0YWJsZScpLFxuICB0Ym9keTogY3JlYXRlRE9NRmFjdG9y
eSgndGJvZHknKSxcbiAgdGQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3RkJyksXG4gIHRleHRhcmVhOiBj
cmVhdGVET01GYWN0b3J5KCd0ZXh0YXJlYScpLFxuICB0Zm9vdDogY3JlYXRlRE9NRmFjdG9yeSgn
dGZvb3QnKSxcbiAgdGg6IGNyZWF0ZURPTUZhY3RvcnkoJ3RoJyksXG4gIHRoZWFkOiBjcmVhdGVE
T01GYWN0b3J5KCd0aGVhZCcpLFxuICB0aW1lOiBjcmVhdGVET01GYWN0b3J5KCd0aW1lJyksXG4g
IHRpdGxlOiBjcmVhdGVET01GYWN0b3J5KCd0aXRsZScpLFxuICB0cjogY3JlYXRlRE9NRmFjdG9y
eSgndHInKSxcbiAgdHJhY2s6IGNyZWF0ZURPTUZhY3RvcnkoJ3RyYWNrJyksXG4gIHU6IGNyZWF0
ZURPTUZhY3RvcnkoJ3UnKSxcbiAgdWw6IGNyZWF0ZURPTUZhY3RvcnkoJ3VsJyksXG4gICd2YXIn
OiBjcmVhdGVET01GYWN0b3J5KCd2YXInKSxcbiAgdmlkZW86IGNyZWF0ZURPTUZhY3RvcnkoJ3Zp
ZGVvJyksXG4gIHdicjogY3JlYXRlRE9NRmFjdG9yeSgnd2JyJyksXG5cbiAgLy8gU1ZHXG4gIGNp
cmNsZTogY3JlYXRlRE9NRmFjdG9yeSgnY2lyY2xlJyksXG4gIGNsaXBQYXRoOiBjcmVhdGVET01G
YWN0b3J5KCdjbGlwUGF0aCcpLFxuICBkZWZzOiBjcmVhdGVET01GYWN0b3J5KCdkZWZzJyksXG4g
IGVsbGlwc2U6IGNyZWF0ZURPTUZhY3RvcnkoJ2VsbGlwc2UnKSxcbiAgZzogY3JlYXRlRE9NRmFj
dG9yeSgnZycpLFxuICBpbWFnZTogY3JlYXRlRE9NRmFjdG9yeSgnaW1hZ2UnKSxcbiAgbGluZTog
Y3JlYXRlRE9NRmFjdG9yeSgnbGluZScpLFxuICBsaW5lYXJHcmFkaWVudDogY3JlYXRlRE9NRmFj
dG9yeSgnbGluZWFyR3JhZGllbnQnKSxcbiAgbWFzazogY3JlYXRlRE9NRmFjdG9yeSgnbWFzaycp
LFxuICBwYXRoOiBjcmVhdGVET01GYWN0b3J5KCdwYXRoJyksXG4gIHBhdHRlcm46IGNyZWF0ZURP
TUZhY3RvcnkoJ3BhdHRlcm4nKSxcbiAgcG9seWdvbjogY3JlYXRlRE9NRmFjdG9yeSgncG9seWdv
bicpLFxuICBwb2x5bGluZTogY3JlYXRlRE9NRmFjdG9yeSgncG9seWxpbmUnKSxcbiAgcmFkaWFs
R3JhZGllbnQ6IGNyZWF0ZURPTUZhY3RvcnkoJ3JhZGlhbEdyYWRpZW50JyksXG4gIHJlY3Q6IGNy
ZWF0ZURPTUZhY3RvcnkoJ3JlY3QnKSxcbiAgc3RvcDogY3JlYXRlRE9NRmFjdG9yeSgnc3RvcCcp
LFxuICBzdmc6IGNyZWF0ZURPTUZhY3RvcnkoJ3N2ZycpLFxuICB0ZXh0OiBjcmVhdGVET01GYWN0
b3J5KCd0ZXh0JyksXG4gIHRzcGFuOiBjcmVhdGVET01GYWN0b3J5KCd0c3BhbicpXG59O1xuXG5t
b2R1bGUuZXhwb3J0cyA9IFJlYWN0RE9NRmFjdG9yaWVzO1xuXG5cbi8qKioqKioqKioqKioqKioq
KlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0L2xpYi9SZWFjdERPTUZhY3Rvcmll
cy5qc1xuICoqIG1vZHVsZSBpZCA9IDIxNlxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwi
LyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxuICogQWxsIHJp
Z2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVy
IHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFu
dFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBp
biB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5cbid1c2Ugc3RyaWN0JztcblxudmFyIF9y
ZXF1aXJlID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKSxcbiAgICBpc1ZhbGlkRWxlbWVudCA9
IF9yZXF1aXJlLmlzVmFsaWRFbGVtZW50O1xuXG52YXIgZmFjdG9yeSA9IHJlcXVpcmUoJ3Byb3At
dHlwZXMvZmFjdG9yeScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3RvcnkoaXNWYWxpZEVsZW1l
bnQpO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+
L3JlYWN0L2xpYi9SZWFjdFByb3BUeXBlcy5qc1xuICoqIG1vZHVsZSBpZCA9IDIxN1xuICoqIG1v
ZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBG
YWNlYm9vaywgSW5jLlxuICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJj
ZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0
aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2Ug
dHJlZS4gQW4gYWRkaXRpb25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91
bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICovXG5c
bid1c2Ugc3RyaWN0JztcblxudmFyIF9yZXF1aXJlID0gcmVxdWlyZSgnLi9SZWFjdEJhc2VDbGFz
c2VzJyksXG4gICAgQ29tcG9uZW50ID0gX3JlcXVpcmUuQ29tcG9uZW50O1xuXG52YXIgX3JlcXVp
cmUyID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKSxcbiAgICBpc1ZhbGlkRWxlbWVudCA9IF9y
ZXF1aXJlMi5pc1ZhbGlkRWxlbWVudDtcblxudmFyIFJlYWN0Tm9vcFVwZGF0ZVF1ZXVlID0gcmVx
dWlyZSgnLi9SZWFjdE5vb3BVcGRhdGVRdWV1ZScpO1xudmFyIGZhY3RvcnkgPSByZXF1aXJlKCdj
cmVhdGUtcmVhY3QtY2xhc3MvZmFjdG9yeScpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZhY3Rvcnko
Q29tcG9uZW50LCBpc1ZhbGlkRWxlbWVudCwgUmVhY3ROb29wVXBkYXRlUXVldWUpO1xuXG5cbi8q
KioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0L2xpYi9j
cmVhdGVDbGFzcy5qc1xuICoqIG1vZHVsZSBpZCA9IDIxOVxuICoqIG1vZHVsZSBjaHVua3MgPSAw
XG4gKiovIiwiLyoqXG4gKiBDb3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLlxu
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vu
c2VkIHVuZGVyIHRoZSBCU0Qtc3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0Ug
ZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRp
b25hbCBncmFudFxuICogb2YgcGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVO
VFMgZmlsZSBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuXG4gKlxuICogXG4gKi9cblxuJ3VzZSBzdHJp
Y3QnO1xuXG52YXIgbmV4dERlYnVnSUQgPSAxO1xuXG5mdW5jdGlvbiBnZXROZXh0RGVidWdJRCgp
IHtcbiAgcmV0dXJuIG5leHREZWJ1Z0lEKys7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZ2V0TmV4
dERlYnVnSUQ7XG5cblxuLyoqKioqKioqKioqKioqKioqXG4gKiogV0VCUEFDSyBGT09URVJcbiAq
KiAuL34vcmVhY3QvbGliL2dldE5leHREZWJ1Z0lELmpzXG4gKiogbW9kdWxlIGlkID0gMjIxXG4g
KiogbW9kdWxlIGNodW5rcyA9IDBcbiAqKi8iLCIvKipcbiAqIENvcHlyaWdodCAyMDE0LTIwMTUs
IEZhY2Vib29rLCBJbmMuXG4gKiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuICpcbiAqIFRoaXMgc291
cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIEJTRC1zdHlsZSBsaWNlbnNlIGZvdW5kIGlu
IHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJj
ZSB0cmVlLiBBbiBhZGRpdGlvbmFsIGdyYW50XG4gKiBvZiBwYXRlbnQgcmlnaHRzIGNhbiBiZSBm
b3VuZCBpbiB0aGUgUEFURU5UUyBmaWxlIGluIHRoZSBzYW1lIGRpcmVjdG9yeS5cbiAqXG4gKi9c
blxuJ3VzZSBzdHJpY3QnO1xuXG4vKipcbiAqIEZvcmtlZCBmcm9tIGZianMvd2FybmluZzpcbiAq
IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9mYmpzL2Jsb2IvZTY2YmEyMGFkNWJlNDMzZWI1
NDQyM2YyYjA5N2Q4MjkzMjRkOWRlNi9wYWNrYWdlcy9mYmpzL3NyYy9fX2ZvcmtzX18vd2Fybmlu
Zy5qc1xuICpcbiAqIE9ubHkgY2hhbmdlIGlzIHdlIHVzZSBjb25zb2xlLndhcm4gaW5zdGVhZCBv
ZiBjb25zb2xlLmVycm9yLFxuICogYW5kIGRvIG5vdGhpbmcgd2hlbiAnY29uc29sZScgaXMgbm90
IHN1cHBvcnRlZC5cbiAqIFRoaXMgcmVhbGx5IHNpbXBsaWZpZXMgdGhlIGNvZGUuXG4gKiAtLS1c
biAqIFNpbWlsYXIgdG8gaW52YXJpYW50IGJ1dCBvbmx5IGxvZ3MgYSB3YXJuaW5nIGlmIHRoZSBj
b25kaXRpb24gaXMgbm90IG1ldC5cbiAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gbG9nIGlzc3VlcyBp
biBkZXZlbG9wbWVudCBlbnZpcm9ubWVudHMgaW4gY3JpdGljYWxcbiAqIHBhdGhzLiBSZW1vdmlu
ZyB0aGUgbG9nZ2luZyBjb2RlIGZvciBwcm9kdWN0aW9uIGVudmlyb25tZW50cyB3aWxsIGtlZXAg
dGhlXG4gKiBzYW1lIGxvZ2ljIGFuZCBmb2xsb3cgdGhlIHNhbWUgY29kZSBwYXRocy5cbiAqL1xu
XG52YXIgbG93UHJpb3JpdHlXYXJuaW5nID0gZnVuY3Rpb24gKCkge307XG5cbmlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIHZhciBwcmludFdhcm5pbmcgPSBm
dW5jdGlvbiAoZm9ybWF0KSB7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgs
IGFyZ3MgPSBBcnJheShfbGVuID4gMSA/IF9sZW4gLSAxIDogMCksIF9rZXkgPSAxOyBfa2V5IDwg
X2xlbjsgX2tleSsrKSB7XG4gICAgICBhcmdzW19rZXkgLSAxXSA9IGFyZ3VtZW50c1tfa2V5XTtc
biAgICB9XG5cbiAgICB2YXIgYXJnSW5kZXggPSAwO1xuICAgIHZhciBtZXNzYWdlID0gJ1dhcm5p
bmc6ICcgKyBmb3JtYXQucmVwbGFjZSgvJXMvZywgZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJu
IGFyZ3NbYXJnSW5kZXgrK107XG4gICAgfSk7XG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAn
dW5kZWZpbmVkJykge1xuICAgICAgY29uc29sZS53YXJuKG1lc3NhZ2UpO1xuICAgIH1cbiAgICB0
cnkge1xuICAgICAgLy8gLS0tIFdlbGNvbWUgdG8gZGVidWdnaW5nIFJlYWN0IC0tLVxuICAgICAg
Ly8gVGhpcyBlcnJvciB3YXMgdGhyb3duIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCB5b3UgY2Fu
IHVzZSB0aGlzIHN0YWNrXG4gICAgICAvLyB0byBmaW5kIHRoZSBjYWxsc2l0ZSB0aGF0IGNhdXNl
ZCB0aGlzIHdhcm5pbmcgdG8gZmlyZS5cbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtc
biAgICB9IGNhdGNoICh4KSB7fVxuICB9O1xuXG4gIGxvd1ByaW9yaXR5V2FybmluZyA9IGZ1bmN0
aW9uIChjb25kaXRpb24sIGZvcm1hdCkge1xuICAgIGlmIChmb3JtYXQgPT09IHVuZGVmaW5lZCkg
e1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdgd2FybmluZyhjb25kaXRpb24sIGZvcm1hdCwgLi4u
YXJncylgIHJlcXVpcmVzIGEgd2FybmluZyAnICsgJ21lc3NhZ2UgYXJndW1lbnQnKTtcbiAgICB9
XG4gICAgaWYgKCFjb25kaXRpb24pIHtcbiAgICAgIGZvciAodmFyIF9sZW4yID0gYXJndW1lbnRz
Lmxlbmd0aCwgYXJncyA9IEFycmF5KF9sZW4yID4gMiA/IF9sZW4yIC0gMiA6IDApLCBfa2V5MiA9
IDI7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgICAgYXJnc1tfa2V5MiAtIDJdID0g
YXJndW1lbnRzW19rZXkyXTtcbiAgICAgIH1cblxuICAgICAgcHJpbnRXYXJuaW5nLmFwcGx5KHVu
ZGVmaW5lZCwgW2Zvcm1hdF0uY29uY2F0KGFyZ3MpKTtcbiAgICB9XG4gIH07XG59XG5cbm1vZHVs
ZS5leHBvcnRzID0gbG93UHJpb3JpdHlXYXJuaW5nO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxu
ICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0L2xpYi9sb3dQcmlvcml0eVdhcm5pbmcu
anNcbiAqKiBtb2R1bGUgaWQgPSAyMjJcbiAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIi8q
KlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0
aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhl
IHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0aW9uYWwgZ3JhbnRc
biAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRFTlRTIGZpbGUgaW4g
dGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuJ3VzZSBzdHJpY3QnO1xuXG52YXIgX3Byb2RJ
bnZhcmlhbnQgPSByZXF1aXJlKCcuL3JlYWN0UHJvZEludmFyaWFudCcpO1xuXG52YXIgUmVhY3RF
bGVtZW50ID0gcmVxdWlyZSgnLi9SZWFjdEVsZW1lbnQnKTtcblxudmFyIGludmFyaWFudCA9IHJl
cXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIGZpcnN0
IGNoaWxkIGluIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiBhbmQgdmVyaWZpZXMgdGhhdCB0aGVy
ZVxuICogaXMgb25seSBvbmUgY2hpbGQgaW4gdGhlIGNvbGxlY3Rpb24uXG4gKlxuICogU2VlIGh0
dHBzOi8vZmFjZWJvb2suZ2l0aHViLmlvL3JlYWN0L2RvY3MvdG9wLWxldmVsLWFwaS5odG1sI3Jl
YWN0LmNoaWxkcmVuLm9ubHlcbiAqXG4gKiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiB0
aGlzIGZ1bmN0aW9uIGFzc3VtZXMgdGhhdCBhIHNpbmdsZSBjaGlsZCBnZXRzXG4gKiBwYXNzZWQg
d2l0aG91dCBhIHdyYXBwZXIsIGJ1dCB0aGUgcHVycG9zZSBvZiB0aGlzIGhlbHBlciBmdW5jdGlv
biBpcyB0b1xuICogYWJzdHJhY3QgYXdheSB0aGUgcGFydGljdWxhciBzdHJ1Y3R1cmUgb2YgY2hp
bGRyZW4uXG4gKlxuICogQHBhcmFtIHs/b2JqZWN0fSBjaGlsZHJlbiBDaGlsZCBjb2xsZWN0aW9u
IHN0cnVjdHVyZS5cbiAqIEByZXR1cm4ge1JlYWN0RWxlbWVudH0gVGhlIGZpcnN0IGFuZCBvbmx5
IGBSZWFjdEVsZW1lbnRgIGNvbnRhaW5lZCBpbiB0aGVcbiAqIHN0cnVjdHVyZS5cbiAqL1xuZnVu
Y3Rpb24gb25seUNoaWxkKGNoaWxkcmVuKSB7XG4gICFSZWFjdEVsZW1lbnQuaXNWYWxpZEVsZW1l
bnQoY2hpbGRyZW4pID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGlu
dmFyaWFudChmYWxzZSwgJ1JlYWN0LkNoaWxkcmVuLm9ubHkgZXhwZWN0ZWQgdG8gcmVjZWl2ZSBh
IHNpbmdsZSBSZWFjdCBlbGVtZW50IGNoaWxkLicpIDogX3Byb2RJbnZhcmlhbnQoJzE0MycpIDog
dm9pZCAwO1xuICByZXR1cm4gY2hpbGRyZW47XG59XG5cbm1vZHVsZS5leHBvcnRzID0gb25seUNo
aWxkO1xuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+
L3JlYWN0L2xpYi9vbmx5Q2hpbGQuanNcbiAqKiBtb2R1bGUgaWQgPSAyMjNcbiAqKiBtb2R1bGUg
Y2h1bmtzID0gMFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJv
b2ssIEluYy5cbiAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29k
ZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4g
KiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUu
IEFuIGFkZGl0aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGlu
IHRoZSBQQVRFTlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqL1xuXG4ndXNl
IHN0cmljdCc7XG5cbnZhciBfcHJvZEludmFyaWFudCA9IHJlcXVpcmUoJy4vcmVhY3RQcm9kSW52
YXJpYW50Jyk7XG5cbnZhciBSZWFjdEN1cnJlbnRPd25lciA9IHJlcXVpcmUoJy4vUmVhY3RDdXJy
ZW50T3duZXInKTtcbnZhciBSRUFDVF9FTEVNRU5UX1RZUEUgPSByZXF1aXJlKCcuL1JlYWN0RWxl
bWVudFN5bWJvbCcpO1xuXG52YXIgZ2V0SXRlcmF0b3JGbiA9IHJlcXVpcmUoJy4vZ2V0SXRlcmF0
b3JGbicpO1xudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xu
dmFyIEtleUVzY2FwZVV0aWxzID0gcmVxdWlyZSgnLi9LZXlFc2NhcGVVdGlscycpO1xudmFyIHdh
cm5pbmcgPSByZXF1aXJlKCdmYmpzL2xpYi93YXJuaW5nJyk7XG5cbnZhciBTRVBBUkFUT1IgPSAn
Lic7XG52YXIgU1VCU0VQQVJBVE9SID0gJzonO1xuXG4vKipcbiAqIFRoaXMgaXMgaW5saW5lZCBm
cm9tIFJlYWN0RWxlbWVudCBzaW5jZSB0aGlzIGZpbGUgaXMgc2hhcmVkIGJldHdlZW5cbiAqIGlz
b21vcnBoaWMgYW5kIHJlbmRlcmVycy4gV2UgY291bGQgZXh0cmFjdCB0aGlzIHRvIGFcbiAqXG4g
Ki9cblxuLyoqXG4gKiBUT0RPOiBUZXN0IHRoYXQgYSBzaW5nbGUgY2hpbGQgYW5kIGFuIGFycmF5
IHdpdGggb25lIGl0ZW0gaGF2ZSB0aGUgc2FtZSBrZXlcbiAqIHBhdHRlcm4uXG4gKi9cblxudmFy
IGRpZFdhcm5BYm91dE1hcHMgPSBmYWxzZTtcblxuLyoqXG4gKiBHZW5lcmF0ZSBhIGtleSBzdHJp
bmcgdGhhdCBpZGVudGlmaWVzIGEgY29tcG9uZW50IHdpdGhpbiBhIHNldC5cbiAqXG4gKiBAcGFy
YW0geyp9IGNvbXBvbmVudCBBIGNvbXBvbmVudCB0aGF0IGNvdWxkIGNvbnRhaW4gYSBtYW51YWwg
a2V5LlxuICogQHBhcmFtIHtudW1iZXJ9IGluZGV4IEluZGV4IHRoYXQgaXMgdXNlZCBpZiBhIG1h
bnVhbCBrZXkgaXMgbm90IHByb3ZpZGVkLlxuICogQHJldHVybiB7c3RyaW5nfVxuICovXG5mdW5j
dGlvbiBnZXRDb21wb25lbnRLZXkoY29tcG9uZW50LCBpbmRleCkge1xuICAvLyBEbyBzb21lIHR5
cGVjaGVja2luZyBoZXJlIHNpbmNlIHdlIGNhbGwgdGhpcyBibGluZGx5LiBXZSB3YW50IHRvIGVu
c3VyZVxuICAvLyB0aGF0IHdlIGRvbid0IGJsb2NrIHBvdGVudGlhbCBmdXR1cmUgRVMgQVBJcy5c
biAgaWYgKGNvbXBvbmVudCAmJiB0eXBlb2YgY29tcG9uZW50ID09PSAnb2JqZWN0JyAmJiBjb21w
b25lbnQua2V5ICE9IG51bGwpIHtcbiAgICAvLyBFeHBsaWNpdCBrZXlcbiAgICByZXR1cm4gS2V5
RXNjYXBlVXRpbHMuZXNjYXBlKGNvbXBvbmVudC5rZXkpO1xuICB9XG4gIC8vIEltcGxpY2l0IGtl
eSBkZXRlcm1pbmVkIGJ5IHRoZSBpbmRleCBpbiB0aGUgc2V0XG4gIHJldHVybiBpbmRleC50b1N0
cmluZygzNik7XG59XG5cbi8qKlxuICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4gdHJl
ZSBjb250YWluZXIuXG4gKiBAcGFyYW0geyFzdHJpbmd9IG5hbWVTb0ZhciBOYW1lIG9mIHRoZSBr
ZXkgcGF0aCBzbyBmYXIuXG4gKiBAcGFyYW0geyFmdW5jdGlvbn0gY2FsbGJhY2sgQ2FsbGJhY2sg
dG8gaW52b2tlIHdpdGggZWFjaCBjaGlsZCBmb3VuZC5cbiAqIEBwYXJhbSB7Pyp9IHRyYXZlcnNl
Q29udGV4dCBVc2VkIHRvIHBhc3MgaW5mb3JtYXRpb24gdGhyb3VnaG91dCB0aGUgdHJhdmVyc2Fs
XG4gKiBwcm9jZXNzLlxuICogQHJldHVybiB7IW51bWJlcn0gVGhlIG51bWJlciBvZiBjaGlsZHJl
biBpbiB0aGlzIHN1YnRyZWUuXG4gKi9cbmZ1bmN0aW9uIHRyYXZlcnNlQWxsQ2hpbGRyZW5JbXBs
KGNoaWxkcmVuLCBuYW1lU29GYXIsIGNhbGxiYWNrLCB0cmF2ZXJzZUNvbnRleHQpIHtcbiAgdmFy
IHR5cGUgPSB0eXBlb2YgY2hpbGRyZW47XG5cbiAgaWYgKHR5cGUgPT09ICd1bmRlZmluZWQnIHx8
IHR5cGUgPT09ICdib29sZWFuJykge1xuICAgIC8vIEFsbCBvZiB0aGUgYWJvdmUgYXJlIHBlcmNl
aXZlZCBhcyBudWxsLlxuICAgIGNoaWxkcmVuID0gbnVsbDtcbiAgfVxuXG4gIGlmIChjaGlsZHJl
biA9PT0gbnVsbCB8fCB0eXBlID09PSAnc3RyaW5nJyB8fCB0eXBlID09PSAnbnVtYmVyJyB8fFxu
ICAvLyBUaGUgZm9sbG93aW5nIGlzIGlubGluZWQgZnJvbSBSZWFjdEVsZW1lbnQuIFRoaXMgbWVh
bnMgd2UgY2FuIG9wdGltaXplXG4gIC8vIHNvbWUgY2hlY2tzLiBSZWFjdCBGaWJlciBhbHNvIGlu
bGluZXMgdGhpcyBsb2dpYyBmb3Igc2ltaWxhciBwdXJwb3Nlcy5cbiAgdHlwZSA9PT0gJ29iamVj
dCcgJiYgY2hpbGRyZW4uJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRSkge1xuICAgIGNh
bGxiYWNrKHRyYXZlcnNlQ29udGV4dCwgY2hpbGRyZW4sXG4gICAgLy8gSWYgaXQncyB0aGUgb25s
eSBjaGlsZCwgdHJlYXQgdGhlIG5hbWUgYXMgaWYgaXQgd2FzIHdyYXBwZWQgaW4gYW4gYXJyYXlc
biAgICAvLyBzbyB0aGF0IGl0J3MgY29uc2lzdGVudCBpZiB0aGUgbnVtYmVyIG9mIGNoaWxkcmVu
IGdyb3dzLlxuICAgIG5hbWVTb0ZhciA9PT0gJycgPyBTRVBBUkFUT1IgKyBnZXRDb21wb25lbnRL
ZXkoY2hpbGRyZW4sIDApIDogbmFtZVNvRmFyKTtcbiAgICByZXR1cm4gMTtcbiAgfVxuXG4gIHZh
ciBjaGlsZDtcbiAgdmFyIG5leHROYW1lO1xuICB2YXIgc3VidHJlZUNvdW50ID0gMDsgLy8gQ291
bnQgb2YgY2hpbGRyZW4gZm91bmQgaW4gdGhlIGN1cnJlbnQgc3VidHJlZS5cbiAgdmFyIG5leHRO
YW1lUHJlZml4ID0gbmFtZVNvRmFyID09PSAnJyA/IFNFUEFSQVRPUiA6IG5hbWVTb0ZhciArIFNV
QlNFUEFSQVRPUjtcblxuICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcbiAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjaGlsZCA9IGNo
aWxkcmVuW2ldO1xuICAgICAgbmV4dE5hbWUgPSBuZXh0TmFtZVByZWZpeCArIGdldENvbXBvbmVu
dEtleShjaGlsZCwgaSk7XG4gICAgICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVyc2VBbGxDaGlsZHJl
bkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtcbiAgICB9
XG4gIH0gZWxzZSB7XG4gICAgdmFyIGl0ZXJhdG9yRm4gPSBnZXRJdGVyYXRvckZuKGNoaWxkcmVu
KTtcbiAgICBpZiAoaXRlcmF0b3JGbikge1xuICAgICAgdmFyIGl0ZXJhdG9yID0gaXRlcmF0b3JG
bi5jYWxsKGNoaWxkcmVuKTtcbiAgICAgIHZhciBzdGVwO1xuICAgICAgaWYgKGl0ZXJhdG9yRm4g
IT09IGNoaWxkcmVuLmVudHJpZXMpIHtcbiAgICAgICAgdmFyIGlpID0gMDtcbiAgICAgICAgd2hp
bGUgKCEoc3RlcCA9IGl0ZXJhdG9yLm5leHQoKSkuZG9uZSkge1xuICAgICAgICAgIGNoaWxkID0g
c3RlcC52YWx1ZTtcbiAgICAgICAgICBuZXh0TmFtZSA9IG5leHROYW1lUHJlZml4ICsgZ2V0Q29t
cG9uZW50S2V5KGNoaWxkLCBpaSsrKTtcbiAgICAgICAgICBzdWJ0cmVlQ291bnQgKz0gdHJhdmVy
c2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VDb250
ZXh0KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKHByb2Nlc3MuZW52
Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB2YXIgbWFwc0FzQ2hpbGRy
ZW5BZGRlbmR1bSA9ICcnO1xuICAgICAgICAgIGlmIChSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50
KSB7XG4gICAgICAgICAgICB2YXIgbWFwc0FzQ2hpbGRyZW5Pd25lck5hbWUgPSBSZWFjdEN1cnJl
bnRPd25lci5jdXJyZW50LmdldE5hbWUoKTtcbiAgICAgICAgICAgIGlmIChtYXBzQXNDaGlsZHJl
bk93bmVyTmFtZSkge1xuICAgICAgICAgICAgICBtYXBzQXNDaGlsZHJlbkFkZGVuZHVtID0gJyBD
aGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG1hcHNBc0NoaWxkcmVuT3duZXJOYW1lICsg
J2AuJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgcHJvY2Vzcy5lbnYu
Tk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IHdhcm5pbmcoZGlkV2FybkFib3V0TWFwcywgJ1Vz
aW5nIE1hcHMgYXMgY2hpbGRyZW4gaXMgbm90IHlldCBmdWxseSBzdXBwb3J0ZWQuIEl0IGlzIGFu
ICcgKyAnZXhwZXJpbWVudGFsIGZlYXR1cmUgdGhhdCBtaWdodCBiZSByZW1vdmVkLiBDb252ZXJ0
IGl0IHRvIGEgJyArICdzZXF1ZW5jZSAvIGl0ZXJhYmxlIG9mIGtleWVkIFJlYWN0RWxlbWVudHMg
aW5zdGVhZC4lcycsIG1hcHNBc0NoaWxkcmVuQWRkZW5kdW0pIDogdm9pZCAwO1xuICAgICAgICAg
IGRpZFdhcm5BYm91dE1hcHMgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIEl0ZXJhdG9y
IHdpbGwgcHJvdmlkZSBlbnRyeSBbayx2XSB0dXBsZXMgcmF0aGVyIHRoYW4gdmFsdWVzLlxuICAg
ICAgICB3aGlsZSAoIShzdGVwID0gaXRlcmF0b3IubmV4dCgpKS5kb25lKSB7XG4gICAgICAgICAg
dmFyIGVudHJ5ID0gc3RlcC52YWx1ZTtcbiAgICAgICAgICBpZiAoZW50cnkpIHtcbiAgICAgICAg
ICAgIGNoaWxkID0gZW50cnlbMV07XG4gICAgICAgICAgICBuZXh0TmFtZSA9IG5leHROYW1lUHJl
Zml4ICsgS2V5RXNjYXBlVXRpbHMuZXNjYXBlKGVudHJ5WzBdKSArIFNVQlNFUEFSQVRPUiArIGdl
dENvbXBvbmVudEtleShjaGlsZCwgMCk7XG4gICAgICAgICAgICBzdWJ0cmVlQ291bnQgKz0gdHJh
dmVyc2VBbGxDaGlsZHJlbkltcGwoY2hpbGQsIG5leHROYW1lLCBjYWxsYmFjaywgdHJhdmVyc2VD
b250ZXh0KTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9IGVsc2UgaWYg
KHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgICB2YXIgYWRkZW5kdW0gPSAnJztcbiAgICAgIGlm
IChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGFkZGVu
ZHVtID0gJyBJZiB5b3UgbWVhbnQgdG8gcmVuZGVyIGEgY29sbGVjdGlvbiBvZiBjaGlsZHJlbiwg
dXNlIGFuIGFycmF5ICcgKyAnaW5zdGVhZCBvciB3cmFwIHRoZSBvYmplY3QgdXNpbmcgY3JlYXRl
RnJhZ21lbnQob2JqZWN0KSBmcm9tIHRoZSAnICsgJ1JlYWN0IGFkZC1vbnMuJztcbiAgICAgICAg
aWYgKGNoaWxkcmVuLl9pc1JlYWN0RWxlbWVudCkge1xuICAgICAgICAgIGFkZGVuZHVtID0gXCIg
SXQgbG9va3MgbGlrZSB5b3UncmUgdXNpbmcgYW4gZWxlbWVudCBjcmVhdGVkIGJ5IGEgZGlmZmVy
ZW50IFwiICsgJ3ZlcnNpb24gb2YgUmVhY3QuIE1ha2Ugc3VyZSB0byB1c2Ugb25seSBvbmUgY29w
eSBvZiBSZWFjdC4nO1xuICAgICAgICB9XG4gICAgICAgIGlmIChSZWFjdEN1cnJlbnRPd25lci5j
dXJyZW50KSB7XG4gICAgICAgICAgdmFyIG5hbWUgPSBSZWFjdEN1cnJlbnRPd25lci5jdXJyZW50
LmdldE5hbWUoKTtcbiAgICAgICAgICBpZiAobmFtZSkge1xuICAgICAgICAgICAgYWRkZW5kdW0g
Kz0gJyBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgJyArIG5hbWUgKyAnYC4nO1xuICAgICAg
ICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdmFyIGNoaWxkcmVuU3RyaW5nID0gU3Ry
aW5nKGNoaWxkcmVuKTtcbiAgICAgICFmYWxzZSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAn
cHJvZHVjdGlvbicgPyBpbnZhcmlhbnQoZmFsc2UsICdPYmplY3RzIGFyZSBub3QgdmFsaWQgYXMg
YSBSZWFjdCBjaGlsZCAoZm91bmQ6ICVzKS4lcycsIGNoaWxkcmVuU3RyaW5nID09PSAnW29iamVj
dCBPYmplY3RdJyA/ICdvYmplY3Qgd2l0aCBrZXlzIHsnICsgT2JqZWN0LmtleXMoY2hpbGRyZW4p
LmpvaW4oJywgJykgKyAnfScgOiBjaGlsZHJlblN0cmluZywgYWRkZW5kdW0pIDogX3Byb2RJbnZh
cmlhbnQoJzMxJywgY2hpbGRyZW5TdHJpbmcgPT09ICdbb2JqZWN0IE9iamVjdF0nID8gJ29iamVj
dCB3aXRoIGtleXMgeycgKyBPYmplY3Qua2V5cyhjaGlsZHJlbikuam9pbignLCAnKSArICd9JyA6
IGNoaWxkcmVuU3RyaW5nLCBhZGRlbmR1bSkgOiB2b2lkIDA7XG4gICAgfVxuICB9XG5cbiAgcmV0
dXJuIHN1YnRyZWVDb3VudDtcbn1cblxuLyoqXG4gKiBUcmF2ZXJzZXMgY2hpbGRyZW4gdGhhdCBh
cmUgdHlwaWNhbGx5IHNwZWNpZmllZCBhcyBgcHJvcHMuY2hpbGRyZW5gLCBidXRcbiAqIG1pZ2h0
IGFsc28gYmUgc3BlY2lmaWVkIHRocm91Z2ggYXR0cmlidXRlczpcbiAqXG4gKiAtIGB0cmF2ZXJz
ZUFsbENoaWxkcmVuKHRoaXMucHJvcHMuY2hpbGRyZW4sIC4uLilgXG4gKiAtIGB0cmF2ZXJzZUFs
bENoaWxkcmVuKHRoaXMucHJvcHMubGVmdFBhbmVsQ2hpbGRyZW4sIC4uLilgXG4gKlxuICogVGhl
IGB0cmF2ZXJzZUNvbnRleHRgIGlzIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHRoYXQgaXMgcGFzc2Vk
IHRocm91Z2ggdGhlXG4gKiBlbnRpcmUgdHJhdmVyc2FsLiBJdCBjYW4gYmUgdXNlZCB0byBzdG9y
ZSBhY2N1bXVsYXRpb25zIG9yIGFueXRoaW5nIGVsc2UgdGhhdFxuICogdGhlIGNhbGxiYWNrIG1p
Z2h0IGZpbmQgcmVsZXZhbnQuXG4gKlxuICogQHBhcmFtIHs/Kn0gY2hpbGRyZW4gQ2hpbGRyZW4g
dHJlZSBvYmplY3QuXG4gKiBAcGFyYW0geyFmdW5jdGlvbn0gY2FsbGJhY2sgVG8gaW52b2tlIHVw
b24gdHJhdmVyc2luZyBlYWNoIGNoaWxkLlxuICogQHBhcmFtIHs/Kn0gdHJhdmVyc2VDb250ZXh0
IENvbnRleHQgZm9yIHRyYXZlcnNhbC5cbiAqIEByZXR1cm4geyFudW1iZXJ9IFRoZSBudW1iZXIg
b2YgY2hpbGRyZW4gaW4gdGhpcyBzdWJ0cmVlLlxuICovXG5mdW5jdGlvbiB0cmF2ZXJzZUFsbENo
aWxkcmVuKGNoaWxkcmVuLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KSB7XG4gIGlmIChjaGls
ZHJlbiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIDA7XG4gIH1cblxuICByZXR1cm4gdHJhdmVyc2VB
bGxDaGlsZHJlbkltcGwoY2hpbGRyZW4sICcnLCBjYWxsYmFjaywgdHJhdmVyc2VDb250ZXh0KTtc
bn1cblxubW9kdWxlLmV4cG9ydHMgPSB0cmF2ZXJzZUFsbENoaWxkcmVuO1xuXG5cbi8qKioqKioq
KioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlYWN0L2xpYi90cmF2ZXJz
ZUFsbENoaWxkcmVuLmpzXG4gKiogbW9kdWxlIGlkID0gMjI0XG4gKiogbW9kdWxlIGNodW5rcyA9
IDBcbiAqKi8iLCIndXNlIHN0cmljdCc7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5c
bnZhciBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3Ig
KHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJn
dW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBl
Lmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNl
W2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07XG5cbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IGFw
cGx5TWlkZGxld2FyZTtcblxudmFyIF9jb21wb3NlID0gcmVxdWlyZSgnLi9jb21wb3NlJyk7XG5c
bnZhciBfY29tcG9zZTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KF9jb21wb3NlKTtcblxuZnVu
Y3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19l
c01vZHVsZSA/IG9iaiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG4vKipcbiAqIENyZWF0ZXMg
YSBzdG9yZSBlbmhhbmNlciB0aGF0IGFwcGxpZXMgbWlkZGxld2FyZSB0byB0aGUgZGlzcGF0Y2gg
bWV0aG9kXG4gKiBvZiB0aGUgUmVkdXggc3RvcmUuIFRoaXMgaXMgaGFuZHkgZm9yIGEgdmFyaWV0
eSBvZiB0YXNrcywgc3VjaCBhcyBleHByZXNzaW5nXG4gKiBhc3luY2hyb25vdXMgYWN0aW9ucyBp
biBhIGNvbmNpc2UgbWFubmVyLCBvciBsb2dnaW5nIGV2ZXJ5IGFjdGlvbiBwYXlsb2FkLlxuICpc
biAqIFNlZSBgcmVkdXgtdGh1bmtgIHBhY2thZ2UgYXMgYW4gZXhhbXBsZSBvZiB0aGUgUmVkdXgg
bWlkZGxld2FyZS5cbiAqXG4gKiBCZWNhdXNlIG1pZGRsZXdhcmUgaXMgcG90ZW50aWFsbHkgYXN5
bmNocm9ub3VzLCB0aGlzIHNob3VsZCBiZSB0aGUgZmlyc3RcbiAqIHN0b3JlIGVuaGFuY2VyIGlu
IHRoZSBjb21wb3NpdGlvbiBjaGFpbi5cbiAqXG4gKiBOb3RlIHRoYXQgZWFjaCBtaWRkbGV3YXJl
IHdpbGwgYmUgZ2l2ZW4gdGhlIGBkaXNwYXRjaGAgYW5kIGBnZXRTdGF0ZWAgZnVuY3Rpb25zXG4g
KiBhcyBuYW1lZCBhcmd1bWVudHMuXG4gKlxuICogQHBhcmFtIHsuLi5GdW5jdGlvbn0gbWlkZGxl
d2FyZXMgVGhlIG1pZGRsZXdhcmUgY2hhaW4gdG8gYmUgYXBwbGllZC5cbiAqIEByZXR1cm5zIHtG
dW5jdGlvbn0gQSBzdG9yZSBlbmhhbmNlciBhcHBseWluZyB0aGUgbWlkZGxld2FyZS5cbiAqL1xu
ZnVuY3Rpb24gYXBwbHlNaWRkbGV3YXJlKCkge1xuICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRz
Lmxlbmd0aCwgbWlkZGxld2FyZXMgPSBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVu
OyBfa2V5KyspIHtcbiAgICBtaWRkbGV3YXJlc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAg
fVxuXG4gIHJldHVybiBmdW5jdGlvbiAoY3JlYXRlU3RvcmUpIHtcbiAgICByZXR1cm4gZnVuY3Rp
b24gKHJlZHVjZXIsIHByZWxvYWRlZFN0YXRlLCBlbmhhbmNlcikge1xuICAgICAgdmFyIHN0b3Jl
ID0gY3JlYXRlU3RvcmUocmVkdWNlciwgcHJlbG9hZGVkU3RhdGUsIGVuaGFuY2VyKTtcbiAgICAg
IHZhciBfZGlzcGF0Y2ggPSBzdG9yZS5kaXNwYXRjaDtcbiAgICAgIHZhciBjaGFpbiA9IFtdO1xu
XG4gICAgICB2YXIgbWlkZGxld2FyZUFQSSA9IHtcbiAgICAgICAgZ2V0U3RhdGU6IHN0b3JlLmdl
dFN0YXRlLFxuICAgICAgICBkaXNwYXRjaDogZnVuY3Rpb24gZGlzcGF0Y2goYWN0aW9uKSB7XG4g
ICAgICAgICAgcmV0dXJuIF9kaXNwYXRjaChhY3Rpb24pO1xuICAgICAgICB9XG4gICAgICB9O1xu
ICAgICAgY2hhaW4gPSBtaWRkbGV3YXJlcy5tYXAoZnVuY3Rpb24gKG1pZGRsZXdhcmUpIHtcbiAg
ICAgICAgcmV0dXJuIG1pZGRsZXdhcmUobWlkZGxld2FyZUFQSSk7XG4gICAgICB9KTtcbiAgICAg
IF9kaXNwYXRjaCA9IF9jb21wb3NlMlsnZGVmYXVsdCddLmFwcGx5KHVuZGVmaW5lZCwgY2hhaW4p
KHN0b3JlLmRpc3BhdGNoKTtcblxuICAgICAgcmV0dXJuIF9leHRlbmRzKHt9LCBzdG9yZSwge1xu
ICAgICAgICBkaXNwYXRjaDogX2Rpc3BhdGNoXG4gICAgICB9KTtcbiAgICB9O1xuICB9O1xufVxu
XG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3JlZHV4
L2xpYi9hcHBseU1pZGRsZXdhcmUuanNcbiAqKiBtb2R1bGUgaWQgPSAyMjVcbiAqKiBtb2R1bGUg
Y2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0g
dHJ1ZTtcbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IGJpbmRBY3Rpb25DcmVhdG9ycztcbmZ1bmN0aW9u
IGJpbmRBY3Rpb25DcmVhdG9yKGFjdGlvbkNyZWF0b3IsIGRpc3BhdGNoKSB7XG4gIHJldHVybiBm
dW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIGRpc3BhdGNoKGFjdGlvbkNyZWF0b3IuYXBwbHkodW5k
ZWZpbmVkLCBhcmd1bWVudHMpKTtcbiAgfTtcbn1cblxuLyoqXG4gKiBUdXJucyBhbiBvYmplY3Qg
d2hvc2UgdmFsdWVzIGFyZSBhY3Rpb24gY3JlYXRvcnMsIGludG8gYW4gb2JqZWN0IHdpdGggdGhl
XG4gKiBzYW1lIGtleXMsIGJ1dCB3aXRoIGV2ZXJ5IGZ1bmN0aW9uIHdyYXBwZWQgaW50byBhIGBk
aXNwYXRjaGAgY2FsbCBzbyB0aGV5XG4gKiBtYXkgYmUgaW52b2tlZCBkaXJlY3RseS4gVGhpcyBp
cyBqdXN0IGEgY29udmVuaWVuY2UgbWV0aG9kLCBhcyB5b3UgY2FuIGNhbGxcbiAqIGBzdG9yZS5k
aXNwYXRjaChNeUFjdGlvbkNyZWF0b3JzLmRvU29tZXRoaW5nKCkpYCB5b3Vyc2VsZiBqdXN0IGZp
bmUuXG4gKlxuICogRm9yIGNvbnZlbmllbmNlLCB5b3UgY2FuIGFsc28gcGFzcyBhIHNpbmdsZSBm
dW5jdGlvbiBhcyB0aGUgZmlyc3QgYXJndW1lbnQsXG4gKiBhbmQgZ2V0IGEgZnVuY3Rpb24gaW4g
cmV0dXJuLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb258T2JqZWN0fSBhY3Rpb25DcmVhdG9ycyBB
biBvYmplY3Qgd2hvc2UgdmFsdWVzIGFyZSBhY3Rpb25cbiAqIGNyZWF0b3IgZnVuY3Rpb25zLiBP
bmUgaGFuZHkgd2F5IHRvIG9idGFpbiBpdCBpcyB0byB1c2UgRVM2IGBpbXBvcnQgKiBhc2BcbiAq
IHN5bnRheC4gWW91IG1heSBhbHNvIHBhc3MgYSBzaW5nbGUgZnVuY3Rpb24uXG4gKlxuICogQHBh
cmFtIHtGdW5jdGlvbn0gZGlzcGF0Y2ggVGhlIGBkaXNwYXRjaGAgZnVuY3Rpb24gYXZhaWxhYmxl
IG9uIHlvdXIgUmVkdXhcbiAqIHN0b3JlLlxuICpcbiAqIEByZXR1cm5zIHtGdW5jdGlvbnxPYmpl
Y3R9IFRoZSBvYmplY3QgbWltaWNraW5nIHRoZSBvcmlnaW5hbCBvYmplY3QsIGJ1dCB3aXRoXG4g
KiBldmVyeSBhY3Rpb24gY3JlYXRvciB3cmFwcGVkIGludG8gdGhlIGBkaXNwYXRjaGAgY2FsbC4g
SWYgeW91IHBhc3NlZCBhXG4gKiBmdW5jdGlvbiBhcyBgYWN0aW9uQ3JlYXRvcnNgLCB0aGUgcmV0
dXJuIHZhbHVlIHdpbGwgYWxzbyBiZSBhIHNpbmdsZVxuICogZnVuY3Rpb24uXG4gKi9cbmZ1bmN0
aW9uIGJpbmRBY3Rpb25DcmVhdG9ycyhhY3Rpb25DcmVhdG9ycywgZGlzcGF0Y2gpIHtcbiAgaWYg
KHR5cGVvZiBhY3Rpb25DcmVhdG9ycyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBiaW5k
QWN0aW9uQ3JlYXRvcihhY3Rpb25DcmVhdG9ycywgZGlzcGF0Y2gpO1xuICB9XG5cbiAgaWYgKHR5
cGVvZiBhY3Rpb25DcmVhdG9ycyAhPT0gJ29iamVjdCcgfHwgYWN0aW9uQ3JlYXRvcnMgPT09IG51
bGwpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2JpbmRBY3Rpb25DcmVhdG9ycyBleHBlY3RlZCBh
biBvYmplY3Qgb3IgYSBmdW5jdGlvbiwgaW5zdGVhZCByZWNlaXZlZCAnICsgKGFjdGlvbkNyZWF0
b3JzID09PSBudWxsID8gJ251bGwnIDogdHlwZW9mIGFjdGlvbkNyZWF0b3JzKSArICcuICcgKyAn
RGlkIHlvdSB3cml0ZSBcImltcG9ydCBBY3Rpb25DcmVhdG9ycyBmcm9tXCIgaW5zdGVhZCBvZiBc
ImltcG9ydCAqIGFzIEFjdGlvbkNyZWF0b3JzIGZyb21cIj8nKTtcbiAgfVxuXG4gIHZhciBrZXlz
ID0gT2JqZWN0LmtleXMoYWN0aW9uQ3JlYXRvcnMpO1xuICB2YXIgYm91bmRBY3Rpb25DcmVhdG9y
cyA9IHt9O1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcbiAgICB2
YXIga2V5ID0ga2V5c1tpXTtcbiAgICB2YXIgYWN0aW9uQ3JlYXRvciA9IGFjdGlvbkNyZWF0b3Jz
W2tleV07XG4gICAgaWYgKHR5cGVvZiBhY3Rpb25DcmVhdG9yID09PSAnZnVuY3Rpb24nKSB7XG4g
ICAgICBib3VuZEFjdGlvbkNyZWF0b3JzW2tleV0gPSBiaW5kQWN0aW9uQ3JlYXRvcihhY3Rpb25D
cmVhdG9yLCBkaXNwYXRjaCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBib3VuZEFjdGlvbkNyZWF0
b3JzO1xufVxuXG5cbi8qKioqKioqKioqKioqKioqKlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiog
Li9+L3JlZHV4L2xpYi9iaW5kQWN0aW9uQ3JlYXRvcnMuanNcbiAqKiBtb2R1bGUgaWQgPSAyMjZc
biAqKiBtb2R1bGUgY2h1bmtzID0gMFxuICoqLyIsIid1c2Ugc3RyaWN0JztcblxuZXhwb3J0cy5f
X2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHNbJ2RlZmF1bHQnXSA9IGNvbWJpbmVSZWR1Y2Vycztc
blxudmFyIF9jcmVhdGVTdG9yZSA9IHJlcXVpcmUoJy4vY3JlYXRlU3RvcmUnKTtcblxudmFyIF9p
c1BsYWluT2JqZWN0ID0gcmVxdWlyZSgnbG9kYXNoL2lzUGxhaW5PYmplY3QnKTtcblxudmFyIF9p
c1BsYWluT2JqZWN0MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX2lzUGxhaW5PYmplY3QpO1xu
XG52YXIgX3dhcm5pbmcgPSByZXF1aXJlKCcuL3V0aWxzL3dhcm5pbmcnKTtcblxudmFyIF93YXJu
aW5nMiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3dhcm5pbmcpO1xuXG5mdW5jdGlvbiBfaW50
ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikgeyByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8g
b2JqIDogeyAnZGVmYXVsdCc6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIGdldFVuZGVmaW5lZFN0YXRl
RXJyb3JNZXNzYWdlKGtleSwgYWN0aW9uKSB7XG4gIHZhciBhY3Rpb25UeXBlID0gYWN0aW9uICYm
IGFjdGlvbi50eXBlO1xuICB2YXIgYWN0aW9uTmFtZSA9IGFjdGlvblR5cGUgJiYgJ1wiJyArIGFj
dGlvblR5cGUudG9TdHJpbmcoKSArICdcIicgfHwgJ2FuIGFjdGlvbic7XG5cbiAgcmV0dXJuICdH
aXZlbiBhY3Rpb24gJyArIGFjdGlvbk5hbWUgKyAnLCByZWR1Y2VyIFwiJyArIGtleSArICdcIiBy
ZXR1cm5lZCB1bmRlZmluZWQuICcgKyAnVG8gaWdub3JlIGFuIGFjdGlvbiwgeW91IG11c3QgZXhw
bGljaXRseSByZXR1cm4gdGhlIHByZXZpb3VzIHN0YXRlLiAnICsgJ0lmIHlvdSB3YW50IHRoaXMg
cmVkdWNlciB0byBob2xkIG5vIHZhbHVlLCB5b3UgY2FuIHJldHVybiBudWxsIGluc3RlYWQgb2Yg
dW5kZWZpbmVkLic7XG59XG5cbmZ1bmN0aW9uIGdldFVuZXhwZWN0ZWRTdGF0ZVNoYXBlV2Fybmlu
Z01lc3NhZ2UoaW5wdXRTdGF0ZSwgcmVkdWNlcnMsIGFjdGlvbiwgdW5leHBlY3RlZEtleUNhY2hl
KSB7XG4gIHZhciByZWR1Y2VyS2V5cyA9IE9iamVjdC5rZXlzKHJlZHVjZXJzKTtcbiAgdmFyIGFy
Z3VtZW50TmFtZSA9IGFjdGlvbiAmJiBhY3Rpb24udHlwZSA9PT0gX2NyZWF0ZVN0b3JlLkFjdGlv
blR5cGVzLklOSVQgPyAncHJlbG9hZGVkU3RhdGUgYXJndW1lbnQgcGFzc2VkIHRvIGNyZWF0ZVN0
b3JlJyA6ICdwcmV2aW91cyBzdGF0ZSByZWNlaXZlZCBieSB0aGUgcmVkdWNlcic7XG5cbiAgaWYg
KHJlZHVjZXJLZXlzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnU3RvcmUgZG9lcyBub3Qg
aGF2ZSBhIHZhbGlkIHJlZHVjZXIuIE1ha2Ugc3VyZSB0aGUgYXJndW1lbnQgcGFzc2VkICcgKyAn
dG8gY29tYmluZVJlZHVjZXJzIGlzIGFuIG9iamVjdCB3aG9zZSB2YWx1ZXMgYXJlIHJlZHVjZXJz
Lic7XG4gIH1cblxuICBpZiAoISgwLCBfaXNQbGFpbk9iamVjdDJbJ2RlZmF1bHQnXSkoaW5wdXRT
dGF0ZSkpIHtcbiAgICByZXR1cm4gJ1RoZSAnICsgYXJndW1lbnROYW1lICsgJyBoYXMgdW5leHBl
Y3RlZCB0eXBlIG9mIFwiJyArIHt9LnRvU3RyaW5nLmNhbGwoaW5wdXRTdGF0ZSkubWF0Y2goL1xc
cyhbYS16fEEtWl0rKS8pWzFdICsgJ1wiLiBFeHBlY3RlZCBhcmd1bWVudCB0byBiZSBhbiBvYmpl
Y3Qgd2l0aCB0aGUgZm9sbG93aW5nICcgKyAoJ2tleXM6IFwiJyArIHJlZHVjZXJLZXlzLmpvaW4o
J1wiLCBcIicpICsgJ1wiJyk7XG4gIH1cblxuICB2YXIgdW5leHBlY3RlZEtleXMgPSBPYmplY3Qu
a2V5cyhpbnB1dFN0YXRlKS5maWx0ZXIoZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiAhcmVk
dWNlcnMuaGFzT3duUHJvcGVydHkoa2V5KSAmJiAhdW5leHBlY3RlZEtleUNhY2hlW2tleV07XG4g
IH0pO1xuXG4gIHVuZXhwZWN0ZWRLZXlzLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIHVu
ZXhwZWN0ZWRLZXlDYWNoZVtrZXldID0gdHJ1ZTtcbiAgfSk7XG5cbiAgaWYgKHVuZXhwZWN0ZWRL
ZXlzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gJ1VuZXhwZWN0ZWQgJyArICh1bmV4cGVjdGVk
S2V5cy5sZW5ndGggPiAxID8gJ2tleXMnIDogJ2tleScpICsgJyAnICsgKCdcIicgKyB1bmV4cGVj
dGVkS2V5cy5qb2luKCdcIiwgXCInKSArICdcIiBmb3VuZCBpbiAnICsgYXJndW1lbnROYW1lICsg
Jy4gJykgKyAnRXhwZWN0ZWQgdG8gZmluZCBvbmUgb2YgdGhlIGtub3duIHJlZHVjZXIga2V5cyBp
bnN0ZWFkOiAnICsgKCdcIicgKyByZWR1Y2VyS2V5cy5qb2luKCdcIiwgXCInKSArICdcIi4gVW5l
eHBlY3RlZCBrZXlzIHdpbGwgYmUgaWdub3JlZC4nKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBhc3Nl
cnRSZWR1Y2VyU2hhcGUocmVkdWNlcnMpIHtcbiAgT2JqZWN0LmtleXMocmVkdWNlcnMpLmZvckVh
Y2goZnVuY3Rpb24gKGtleSkge1xuICAgIHZhciByZWR1Y2VyID0gcmVkdWNlcnNba2V5XTtcbiAg
ICB2YXIgaW5pdGlhbFN0YXRlID0gcmVkdWNlcih1bmRlZmluZWQsIHsgdHlwZTogX2NyZWF0ZVN0
b3JlLkFjdGlvblR5cGVzLklOSVQgfSk7XG5cbiAgICBpZiAodHlwZW9mIGluaXRpYWxTdGF0ZSA9
PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUmVkdWNlciBcIicgKyBr
ZXkgKyAnXCIgcmV0dXJuZWQgdW5kZWZpbmVkIGR1cmluZyBpbml0aWFsaXphdGlvbi4gJyArICdJ
ZiB0aGUgc3RhdGUgcGFzc2VkIHRvIHRoZSByZWR1Y2VyIGlzIHVuZGVmaW5lZCwgeW91IG11c3Qg
JyArICdleHBsaWNpdGx5IHJldHVybiB0aGUgaW5pdGlhbCBzdGF0ZS4gVGhlIGluaXRpYWwgc3Rh
dGUgbWF5ICcgKyAnbm90IGJlIHVuZGVmaW5lZC4gSWYgeW91IGRvblxcJ3Qgd2FudCB0byBzZXQg
YSB2YWx1ZSBmb3IgdGhpcyByZWR1Y2VyLCAnICsgJ3lvdSBjYW4gdXNlIG51bGwgaW5zdGVhZCBv
ZiB1bmRlZmluZWQuJyk7XG4gICAgfVxuXG4gICAgdmFyIHR5cGUgPSAnQEByZWR1eC9QUk9CRV9V
TktOT1dOX0FDVElPTl8nICsgTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDcp
LnNwbGl0KCcnKS5qb2luKCcuJyk7XG4gICAgaWYgKHR5cGVvZiByZWR1Y2VyKHVuZGVmaW5lZCwg
eyB0eXBlOiB0eXBlIH0pID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9y
KCdSZWR1Y2VyIFwiJyArIGtleSArICdcIiByZXR1cm5lZCB1bmRlZmluZWQgd2hlbiBwcm9iZWQg
d2l0aCBhIHJhbmRvbSB0eXBlLiAnICsgKCdEb25cXCd0IHRyeSB0byBoYW5kbGUgJyArIF9jcmVh
dGVTdG9yZS5BY3Rpb25UeXBlcy5JTklUICsgJyBvciBvdGhlciBhY3Rpb25zIGluIFwicmVkdXgv
KlwiICcpICsgJ25hbWVzcGFjZS4gVGhleSBhcmUgY29uc2lkZXJlZCBwcml2YXRlLiBJbnN0ZWFk
LCB5b3UgbXVzdCByZXR1cm4gdGhlICcgKyAnY3VycmVudCBzdGF0ZSBmb3IgYW55IHVua25vd24g
YWN0aW9ucywgdW5sZXNzIGl0IGlzIHVuZGVmaW5lZCwgJyArICdpbiB3aGljaCBjYXNlIHlvdSBt
dXN0IHJldHVybiB0aGUgaW5pdGlhbCBzdGF0ZSwgcmVnYXJkbGVzcyBvZiB0aGUgJyArICdhY3Rp
b24gdHlwZS4gVGhlIGluaXRpYWwgc3RhdGUgbWF5IG5vdCBiZSB1bmRlZmluZWQsIGJ1dCBjYW4g
YmUgbnVsbC4nKTtcbiAgICB9XG4gIH0pO1xufVxuXG4vKipcbiAqIFR1cm5zIGFuIG9iamVjdCB3
aG9zZSB2YWx1ZXMgYXJlIGRpZmZlcmVudCByZWR1Y2VyIGZ1bmN0aW9ucywgaW50byBhIHNpbmds
ZVxuICogcmVkdWNlciBmdW5jdGlvbi4gSXQgd2lsbCBjYWxsIGV2ZXJ5IGNoaWxkIHJlZHVjZXIs
IGFuZCBnYXRoZXIgdGhlaXIgcmVzdWx0c1xuICogaW50byBhIHNpbmdsZSBzdGF0ZSBvYmplY3Qs
IHdob3NlIGtleXMgY29ycmVzcG9uZCB0byB0aGUga2V5cyBvZiB0aGUgcGFzc2VkXG4gKiByZWR1
Y2VyIGZ1bmN0aW9ucy5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gcmVkdWNlcnMgQW4gb2JqZWN0
IHdob3NlIHZhbHVlcyBjb3JyZXNwb25kIHRvIGRpZmZlcmVudFxuICogcmVkdWNlciBmdW5jdGlv
bnMgdGhhdCBuZWVkIHRvIGJlIGNvbWJpbmVkIGludG8gb25lLiBPbmUgaGFuZHkgd2F5IHRvIG9i
dGFpblxuICogaXQgaXMgdG8gdXNlIEVTNiBgaW1wb3J0ICogYXMgcmVkdWNlcnNgIHN5bnRheC4g
VGhlIHJlZHVjZXJzIG1heSBuZXZlciByZXR1cm5cbiAqIHVuZGVmaW5lZCBmb3IgYW55IGFjdGlv
bi4gSW5zdGVhZCwgdGhleSBzaG91bGQgcmV0dXJuIHRoZWlyIGluaXRpYWwgc3RhdGVcbiAqIGlm
IHRoZSBzdGF0ZSBwYXNzZWQgdG8gdGhlbSB3YXMgdW5kZWZpbmVkLCBhbmQgdGhlIGN1cnJlbnQg
c3RhdGUgZm9yIGFueVxuICogdW5yZWNvZ25pemVkIGFjdGlvbi5cbiAqXG4gKiBAcmV0dXJucyB7
RnVuY3Rpb259IEEgcmVkdWNlciBmdW5jdGlvbiB0aGF0IGludm9rZXMgZXZlcnkgcmVkdWNlciBp
bnNpZGUgdGhlXG4gKiBwYXNzZWQgb2JqZWN0LCBhbmQgYnVpbGRzIGEgc3RhdGUgb2JqZWN0IHdp
dGggdGhlIHNhbWUgc2hhcGUuXG4gKi9cbmZ1bmN0aW9uIGNvbWJpbmVSZWR1Y2VycyhyZWR1Y2Vy
cykge1xuICB2YXIgcmVkdWNlcktleXMgPSBPYmplY3Qua2V5cyhyZWR1Y2Vycyk7XG4gIHZhciBm
aW5hbFJlZHVjZXJzID0ge307XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcmVkdWNlcktleXMubGVu
Z3RoOyBpKyspIHtcbiAgICB2YXIga2V5ID0gcmVkdWNlcktleXNbaV07XG5cbiAgICBpZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgaWYgKHR5cGVvZiBy
ZWR1Y2Vyc1trZXldID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAoMCwgX3dhcm5pbmcyWydk
ZWZhdWx0J10pKCdObyByZWR1Y2VyIHByb3ZpZGVkIGZvciBrZXkgXCInICsga2V5ICsgJ1wiJyk7
XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiByZWR1Y2Vyc1trZXldID09PSAnZnVu
Y3Rpb24nKSB7XG4gICAgICBmaW5hbFJlZHVjZXJzW2tleV0gPSByZWR1Y2Vyc1trZXldO1xuICAg
IH1cbiAgfVxuICB2YXIgZmluYWxSZWR1Y2VyS2V5cyA9IE9iamVjdC5rZXlzKGZpbmFsUmVkdWNl
cnMpO1xuXG4gIHZhciB1bmV4cGVjdGVkS2V5Q2FjaGUgPSB2b2lkIDA7XG4gIGlmIChwcm9jZXNz
LmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgdW5leHBlY3RlZEtleUNhY2hl
ID0ge307XG4gIH1cblxuICB2YXIgc2hhcGVBc3NlcnRpb25FcnJvciA9IHZvaWQgMDtcbiAgdHJ5
IHtcbiAgICBhc3NlcnRSZWR1Y2VyU2hhcGUoZmluYWxSZWR1Y2Vycyk7XG4gIH0gY2F0Y2ggKGUp
IHtcbiAgICBzaGFwZUFzc2VydGlvbkVycm9yID0gZTtcbiAgfVxuXG4gIHJldHVybiBmdW5jdGlv
biBjb21iaW5hdGlvbigpIHtcbiAgICB2YXIgc3RhdGUgPSBhcmd1bWVudHMubGVuZ3RoID4gMCAm
JiBhcmd1bWVudHNbMF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1swXSA6IHt9O1xuICAgIHZh
ciBhY3Rpb24gPSBhcmd1bWVudHNbMV07XG5cbiAgICBpZiAoc2hhcGVBc3NlcnRpb25FcnJvcikg
e1xuICAgICAgdGhyb3cgc2hhcGVBc3NlcnRpb25FcnJvcjtcbiAgICB9XG5cbiAgICBpZiAocHJv
Y2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgdmFyIHdhcm5pbmdN
ZXNzYWdlID0gZ2V0VW5leHBlY3RlZFN0YXRlU2hhcGVXYXJuaW5nTWVzc2FnZShzdGF0ZSwgZmlu
YWxSZWR1Y2VycywgYWN0aW9uLCB1bmV4cGVjdGVkS2V5Q2FjaGUpO1xuICAgICAgaWYgKHdhcm5p
bmdNZXNzYWdlKSB7XG4gICAgICAgICgwLCBfd2FybmluZzJbJ2RlZmF1bHQnXSkod2FybmluZ01l
c3NhZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBoYXNDaGFuZ2VkID0gZmFsc2U7XG4g
ICAgdmFyIG5leHRTdGF0ZSA9IHt9O1xuICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBmaW5hbFJl
ZHVjZXJLZXlzLmxlbmd0aDsgX2krKykge1xuICAgICAgdmFyIF9rZXkgPSBmaW5hbFJlZHVjZXJL
ZXlzW19pXTtcbiAgICAgIHZhciByZWR1Y2VyID0gZmluYWxSZWR1Y2Vyc1tfa2V5XTtcbiAgICAg
IHZhciBwcmV2aW91c1N0YXRlRm9yS2V5ID0gc3RhdGVbX2tleV07XG4gICAgICB2YXIgbmV4dFN0
YXRlRm9yS2V5ID0gcmVkdWNlcihwcmV2aW91c1N0YXRlRm9yS2V5LCBhY3Rpb24pO1xuICAgICAg
aWYgKHR5cGVvZiBuZXh0U3RhdGVGb3JLZXkgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHZh
ciBlcnJvck1lc3NhZ2UgPSBnZXRVbmRlZmluZWRTdGF0ZUVycm9yTWVzc2FnZShfa2V5LCBhY3Rp
b24pO1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoZXJyb3JNZXNzYWdlKTtcbiAgICAgIH1cbiAg
ICAgIG5leHRTdGF0ZVtfa2V5XSA9IG5leHRTdGF0ZUZvcktleTtcbiAgICAgIGhhc0NoYW5nZWQg
PSBoYXNDaGFuZ2VkIHx8IG5leHRTdGF0ZUZvcktleSAhPT0gcHJldmlvdXNTdGF0ZUZvcktleTtc
biAgICB9XG4gICAgcmV0dXJuIGhhc0NoYW5nZWQgPyBuZXh0U3RhdGUgOiBzdGF0ZTtcbiAgfTtc
bn1cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9y
ZWR1eC9saWIvY29tYmluZVJlZHVjZXJzLmpzXG4gKiogbW9kdWxlIGlkID0gMjI3XG4gKiogbW9k
dWxlIGNodW5rcyA9IDBcbiAqKi8iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vbGliL2lu
ZGV4Jyk7XG5cblxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoq
IC4vfi9zeW1ib2wtb2JzZXJ2YWJsZS9pbmRleC5qc1xuICoqIG1vZHVsZSBpZCA9IDIyOFxuICoq
IG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwiJ3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5l
UHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHtcbiAgdmFsdWU6IHRydWVcbn0pO1xu
XG52YXIgX3BvbnlmaWxsID0gcmVxdWlyZSgnLi9wb255ZmlsbCcpO1xuXG52YXIgX3BvbnlmaWxs
MiA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQoX3BvbnlmaWxsKTtcblxuZnVuY3Rpb24gX2ludGVy
b3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9i
aiA6IHsgJ2RlZmF1bHQnOiBvYmogfTsgfVxuXG52YXIgcm9vdDsgLyogZ2xvYmFsIHdpbmRvdyAq
L1xuXG5cbmlmICh0eXBlb2Ygc2VsZiAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgcm9vdCA9IHNlbGY7
XG59IGVsc2UgaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gIHJvb3QgPSB3
aW5kb3c7XG59IGVsc2UgaWYgKHR5cGVvZiBnbG9iYWwgIT09ICd1bmRlZmluZWQnKSB7XG4gIHJv
b3QgPSBnbG9iYWw7XG59IGVsc2UgaWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnKSB7
XG4gIHJvb3QgPSBtb2R1bGU7XG59IGVsc2Uge1xuICByb290ID0gRnVuY3Rpb24oJ3JldHVybiB0
aGlzJykoKTtcbn1cblxudmFyIHJlc3VsdCA9ICgwLCBfcG9ueWZpbGwyWydkZWZhdWx0J10pKHJv
b3QpO1xuZXhwb3J0c1snZGVmYXVsdCddID0gcmVzdWx0O1xuXG5cbi8qKioqKioqKioqKioqKioq
KlxuICoqIFdFQlBBQ0sgRk9PVEVSXG4gKiogLi9+L3N5bWJvbC1vYnNlcnZhYmxlL2xpYi9pbmRl
eC5qc1xuICoqIG1vZHVsZSBpZCA9IDIyOVxuICoqIG1vZHVsZSBjaHVua3MgPSAwXG4gKiovIiwi
J3VzZSBzdHJpY3QnO1xuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9k
dWxlXCIsIHtcblx0dmFsdWU6IHRydWVcbn0pO1xuZXhwb3J0c1snZGVmYXVsdCddID0gc3ltYm9s
T2JzZXJ2YWJsZVBvbnlmaWxsO1xuZnVuY3Rpb24gc3ltYm9sT2JzZXJ2YWJsZVBvbnlmaWxsKHJv
b3QpIHtcblx0dmFyIHJlc3VsdDtcblx0dmFyIF9TeW1ib2wgPSByb290LlN5bWJvbDtcblxuXHRp
ZiAodHlwZW9mIF9TeW1ib2wgPT09ICdmdW5jdGlvbicpIHtcblx0XHRpZiAoX1N5bWJvbC5vYnNl
cnZhYmxlKSB7XG5cdFx0XHRyZXN1bHQgPSBfU3ltYm9sLm9ic2VydmFibGU7XG5cdFx0fSBlbHNl
IHtcblx0XHRcdHJlc3VsdCA9IF9TeW1ib2woJ29ic2VydmFibGUnKTtcblx0XHRcdF9TeW1ib2wu
b2JzZXJ2YWJsZSA9IHJlc3VsdDtcblx0XHR9XG5cdH0gZWxzZSB7XG5cdFx0cmVzdWx0ID0gJ0BA
b2JzZXJ2YWJsZSc7XG5cdH1cblxuXHRyZXR1cm4gcmVzdWx0O1xufTtcblxuXG4vKioqKioqKioq
KioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9zeW1ib2wtb2JzZXJ2YWJsZS9s
aWIvcG9ueWZpbGwuanNcbiAqKiBtb2R1bGUgaWQgPSAyMzBcbiAqKiBtb2R1bGUgY2h1bmtzID0g
MFxuICoqLyIsIi8qKlxuICogQ29weXJpZ2h0IDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5c
biAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNl
bnNlZCB1bmRlciB0aGUgQlNELXN0eWxlIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNF
IGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuIEFuIGFkZGl0
aW9uYWwgZ3JhbnRcbiAqIG9mIHBhdGVudCByaWdodHMgY2FuIGJlIGZvdW5kIGluIHRoZSBQQVRF
TlRTIGZpbGUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LlxuICpcbiAqIFxuICovXG5cbid1c2Ugc3Ry
aWN0JztcblxudmFyIF9wcm9kSW52YXJpYW50ID0gcmVxdWlyZSgnLi9yZWFjdFByb2RJbnZhcmlh
bnQnKTtcblxudmFyIGludmFyaWFudCA9IHJlcXVpcmUoJ2ZianMvbGliL2ludmFyaWFudCcpO1xu
XG4vKipcbiAqIFN0YXRpYyBwb29sZXJzLiBTZXZlcmFsIGN1c3RvbSB2ZXJzaW9ucyBmb3IgZWFj
aCBwb3RlbnRpYWwgbnVtYmVyIG9mXG4gKiBhcmd1bWVudHMuIEEgY29tcGxldGVseSBnZW5lcmlj
IHBvb2xlciBpcyBlYXN5IHRvIGltcGxlbWVudCwgYnV0IHdvdWxkXG4gKiByZXF1aXJlIGFjY2Vz
c2luZyB0aGUgYGFyZ3VtZW50c2Agb2JqZWN0LiBJbiBlYWNoIG9mIHRoZXNlLCBgdGhpc2AgcmVm
ZXJzIHRvXG4gKiB0aGUgQ2xhc3MgaXRzZWxmLCBub3QgYW4gaW5zdGFuY2UuIElmIGFueSBvdGhl
cnMgYXJlIG5lZWRlZCwgc2ltcGx5IGFkZCB0aGVtXG4gKiBoZXJlLCBvciBpbiB0aGVpciBvd24g
ZmlsZXMuXG4gKi9cbnZhciBvbmVBcmd1bWVudFBvb2xlciA9IGZ1bmN0aW9uIChjb3B5RmllbGRz
RnJvbSkge1xuICB2YXIgS2xhc3MgPSB0aGlzO1xuICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxl
bmd0aCkge1xuICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3RhbmNlUG9vbC5wb3AoKTtcbiAg
ICBLbGFzcy5jYWxsKGluc3RhbmNlLCBjb3B5RmllbGRzRnJvbSk7XG4gICAgcmV0dXJuIGluc3Rh
bmNlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgS2xhc3MoY29weUZpZWxkc0Zyb20pO1xu
ICB9XG59O1xuXG52YXIgdHdvQXJndW1lbnRQb29sZXIgPSBmdW5jdGlvbiAoYTEsIGEyKSB7XG4g
IHZhciBLbGFzcyA9IHRoaXM7XG4gIGlmIChLbGFzcy5pbnN0YW5jZVBvb2wubGVuZ3RoKSB7XG4g
ICAgdmFyIGluc3RhbmNlID0gS2xhc3MuaW5zdGFuY2VQb29sLnBvcCgpO1xuICAgIEtsYXNzLmNh
bGwoaW5zdGFuY2UsIGExLCBhMik7XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9IGVsc2Uge1xu
ICAgIHJldHVybiBuZXcgS2xhc3MoYTEsIGEyKTtcbiAgfVxufTtcblxudmFyIHRocmVlQXJndW1l
bnRQb29sZXIgPSBmdW5jdGlvbiAoYTEsIGEyLCBhMykge1xuICB2YXIgS2xhc3MgPSB0aGlzO1xu
ICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0aCkge1xuICAgIHZhciBpbnN0YW5jZSA9IEts
YXNzLmluc3RhbmNlUG9vbC5wb3AoKTtcbiAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBhMSwgYTIs
IGEzKTtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG5ldyBL
bGFzcyhhMSwgYTIsIGEzKTtcbiAgfVxufTtcblxudmFyIGZvdXJBcmd1bWVudFBvb2xlciA9IGZ1
bmN0aW9uIChhMSwgYTIsIGEzLCBhNCkge1xuICB2YXIgS2xhc3MgPSB0aGlzO1xuICBpZiAoS2xh
c3MuaW5zdGFuY2VQb29sLmxlbmd0aCkge1xuICAgIHZhciBpbnN0YW5jZSA9IEtsYXNzLmluc3Rh
bmNlUG9vbC5wb3AoKTtcbiAgICBLbGFzcy5jYWxsKGluc3RhbmNlLCBhMSwgYTIsIGEzLCBhNCk7
XG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBuZXcgS2xhc3Mo
YTEsIGEyLCBhMywgYTQpO1xuICB9XG59O1xuXG52YXIgc3RhbmRhcmRSZWxlYXNlciA9IGZ1bmN0
aW9uIChpbnN0YW5jZSkge1xuICB2YXIgS2xhc3MgPSB0aGlzO1xuICAhKGluc3RhbmNlIGluc3Rh
bmNlb2YgS2xhc3MpID8gcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyA/IGlu
dmFyaWFudChmYWxzZSwgJ1RyeWluZyB0byByZWxlYXNlIGFuIGluc3RhbmNlIGludG8gYSBwb29s
IG9mIGEgZGlmZmVyZW50IHR5cGUuJykgOiBfcHJvZEludmFyaWFudCgnMjUnKSA6IHZvaWQgMDtc
biAgaW5zdGFuY2UuZGVzdHJ1Y3RvcigpO1xuICBpZiAoS2xhc3MuaW5zdGFuY2VQb29sLmxlbmd0
aCA8IEtsYXNzLnBvb2xTaXplKSB7XG4gICAgS2xhc3MuaW5zdGFuY2VQb29sLnB1c2goaW5zdGFu
Y2UpO1xuICB9XG59O1xuXG52YXIgREVGQVVMVF9QT09MX1NJWkUgPSAxMDtcbnZhciBERUZBVUxU
X1BPT0xFUiA9IG9uZUFyZ3VtZW50UG9vbGVyO1xuXG4vKipcbiAqIEF1Z21lbnRzIGBDb3B5Q29u
c3RydWN0b3JgIHRvIGJlIGEgcG9vbGFibGUgY2xhc3MsIGF1Z21lbnRpbmcgb25seSB0aGUgY2xh
c3NcbiAqIGl0c2VsZiAoc3RhdGljYWxseSkgbm90IGFkZGluZyBhbnkgcHJvdG90eXBpY2FsIGZp
ZWxkcy4gQW55IENvcHlDb25zdHJ1Y3RvclxuICogeW91IGdpdmUgdGhpcyBtYXkgaGF2ZSBhIGBw
b29sU2l6ZWAgcHJvcGVydHksIGFuZCB3aWxsIGxvb2sgZm9yIGFcbiAqIHByb3RvdHlwaWNhbCBg
ZGVzdHJ1Y3RvcmAgb24gaW5zdGFuY2VzLlxuICpcbiAqIEBwYXJhbSB7RnVuY3Rpb259IENvcHlD
b25zdHJ1Y3RvciBDb25zdHJ1Y3RvciB0aGF0IGNhbiBiZSB1c2VkIHRvIHJlc2V0LlxuICogQHBh
cmFtIHtGdW5jdGlvbn0gcG9vbGVyIEN1c3RvbWl6YWJsZSBwb29sZXIuXG4gKi9cbnZhciBhZGRQ
b29saW5nVG8gPSBmdW5jdGlvbiAoQ29weUNvbnN0cnVjdG9yLCBwb29sZXIpIHtcbiAgLy8gQ2Fz
dGluZyBhcyBhbnkgc28gdGhhdCBmbG93IGlnbm9yZXMgdGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlv
biBhbmQgdHJ1c3RzXG4gIC8vIGl0IHRvIG1hdGNoIHRoZSB0eXBlIHdlIGRlY2xhcmVkXG4gIHZh
ciBOZXdLbGFzcyA9IENvcHlDb25zdHJ1Y3RvcjtcbiAgTmV3S2xhc3MuaW5zdGFuY2VQb29sID0g
W107XG4gIE5ld0tsYXNzLmdldFBvb2xlZCA9IHBvb2xlciB8fCBERUZBVUxUX1BPT0xFUjtcbiAg
aWYgKCFOZXdLbGFzcy5wb29sU2l6ZSkge1xuICAgIE5ld0tsYXNzLnBvb2xTaXplID0gREVGQVVM
VF9QT09MX1NJWkU7XG4gIH1cbiAgTmV3S2xhc3MucmVsZWFzZSA9IHN0YW5kYXJkUmVsZWFzZXI7
XG4gIHJldHVybiBOZXdLbGFzcztcbn07XG5cbnZhciBQb29sZWRDbGFzcyA9IHtcbiAgYWRkUG9v
bGluZ1RvOiBhZGRQb29saW5nVG8sXG4gIG9uZUFyZ3VtZW50UG9vbGVyOiBvbmVBcmd1bWVudFBv
b2xlcixcbiAgdHdvQXJndW1lbnRQb29sZXI6IHR3b0FyZ3VtZW50UG9vbGVyLFxuICB0aHJlZUFy
Z3VtZW50UG9vbGVyOiB0aHJlZUFyZ3VtZW50UG9vbGVyLFxuICBmb3VyQXJndW1lbnRQb29sZXI6
IGZvdXJBcmd1bWVudFBvb2xlclxufTtcblxubW9kdWxlLmV4cG9ydHMgPSBQb29sZWRDbGFzcztc
blxuXG4vKioqKioqKioqKioqKioqKipcbiAqKiBXRUJQQUNLIEZPT1RFUlxuICoqIC4vfi9yZWFj
dC9saWIvUG9vbGVkQ2xhc3MuanNcbiAqKiBtb2R1bGUgaWQgPSAyMTRcbiAqKiBtb2R1bGUgY2h1
bmtzID0gMFxuICoqLyJdLCJzb3VyY2VSb290IjoiIn0KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90
b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L3N0YXRpYy9qcy9t
YWluLjk0NjI2OWZmLmpzIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVkdXgvZGlzdC9zdGF0aWMvanMv
bWFpbi45NDYyNjlmZi5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNlZGVmNjky
MDRjN2U4ZTNmODYyYjg0Y2E0MGViN2Q1N2UxZjdkNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9kaXN0L3N0YXRp
Yy9qcy9tYWluLjk0NjI2OWZmLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi0hZnVu
Y3Rpb24oZSl7ZnVuY3Rpb24gdChyKXtpZihuW3JdKXJldHVybiBuW3JdLmV4cG9ydHM7dmFyIG89
bltyXT17ZXhwb3J0czp7fSxpZDpyLGxvYWRlZDohMX07cmV0dXJuIGVbcl0uY2FsbChvLmV4cG9y
dHMsbyxvLmV4cG9ydHMsdCksby5sb2FkZWQ9ITAsby5leHBvcnRzfXZhciBuPXt9O3JldHVybiB0
Lm09ZSx0LmM9bix0LnA9Ii8iLHQoMCl9KGZ1bmN0aW9uKGUpe2Zvcih2YXIgdCBpbiBlKWlmKE9i
amVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLHQpKXN3aXRjaCh0eXBlb2YgZVt0
XSl7Y2FzZSJmdW5jdGlvbiI6YnJlYWs7Y2FzZSJvYmplY3QiOmVbdF09ZnVuY3Rpb24odCl7dmFy
IG49dC5zbGljZSgxKSxyPWVbdFswXV07cmV0dXJuIGZ1bmN0aW9uKGUsdCxvKXtyLmFwcGx5KHRo
aXMsW2UsdCxvXS5jb25jYXQobikpfX0oZVt0XSk7YnJlYWs7ZGVmYXVsdDplW3RdPWVbZVt0XV19
cmV0dXJuIGV9KFtmdW5jdGlvbihlLHQsbil7bigxMjEpLGUuZXhwb3J0cz1uKDEyOSl9LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyLG8saSxhLHUpe2lmKCFl
KXt2YXIgcztpZih2b2lkIDA9PT10KXM9bmV3IEVycm9yKCJNaW5pZmllZCBleGNlcHRpb24gb2Nj
dXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgdGhlIGZ1bGwg
ZXJyb3IgbWVzc2FnZSBhbmQgYWRkaXRpb25hbCBoZWxwZnVsIHdhcm5pbmdzLiIpO2Vsc2V7dmFy
IGw9W24scixvLGksYSx1XSxjPTA7cz1uZXcgRXJyb3IodC5yZXBsYWNlKC8lcy9nLGZ1bmN0aW9u
KCl7cmV0dXJuIGxbYysrXX0pKSxzLm5hbWU9IkludmFyaWFudCBWaW9sYXRpb24ifXRocm93IHMu
ZnJhbWVzVG9Qb3A9MSxzfX1lLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gbihlKXtmb3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aC0xLG49Ik1pbmlmaWVkIFJl
YWN0IGVycm9yICMiK2UrIjsgdmlzaXQgaHR0cDovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9k
b2NzL2Vycm9yLWRlY29kZXIuaHRtbD9pbnZhcmlhbnQ9IitlLHI9MDtyPHQ7cisrKW4rPSImYXJn
c1tdPSIrZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tyKzFdKTtuKz0iIGZvciB0aGUgZnVs
bCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVs
bCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4iO3ZhciBvPW5ldyBFcnJv
cihuKTt0aHJvdyBvLm5hbWU9IkludmFyaWFudCBWaW9sYXRpb24iLG8uZnJhbWVzVG9Qb3A9MSxv
fWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oNyksbz1y
O2UuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe2lm
KG51bGw9PT1lfHx2b2lkIDA9PT1lKXRocm93IG5ldyBUeXBlRXJyb3IoIk9iamVjdC5hc3NpZ24g
Y2Fubm90IGJlIGNhbGxlZCB3aXRoIG51bGwgb3IgdW5kZWZpbmVkIik7cmV0dXJuIE9iamVjdChl
KX1mdW5jdGlvbiByKCl7dHJ5e2lmKCFPYmplY3QuYXNzaWduKXJldHVybiExO3ZhciBlPW5ldyBT
dHJpbmcoImFiYyIpO2lmKGVbNV09ImRlIiwiNSI9PT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1l
cyhlKVswXSlyZXR1cm4hMTtmb3IodmFyIHQ9e30sbj0wO248MTA7bisrKXRbIl8iK1N0cmluZy5m
cm9tQ2hhckNvZGUobildPW47dmFyIHI9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCkubWFw
KGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSk7aWYoIjAxMjM0NTY3ODkiIT09ci5qb2luKCIiKSly
ZXR1cm4hMTt2YXIgbz17fTtyZXR1cm4iYWJjZGVmZ2hpamtsbW5vcHFyc3QiLnNwbGl0KCIiKS5m
b3JFYWNoKGZ1bmN0aW9uKGUpe29bZV09ZX0pLCJhYmNkZWZnaGlqa2xtbm9wcXJzdCI9PT1PYmpl
Y3Qua2V5cyhPYmplY3QuYXNzaWduKHt9LG8pKS5qb2luKCIiKX1jYXRjaChpKXtyZXR1cm4hMX19
dmFyIG89T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxpPU9iamVjdC5wcm90b3R5cGUu
cHJvcGVydHlJc0VudW1lcmFibGU7ZS5leHBvcnRzPXIoKT9PYmplY3QuYXNzaWduOmZ1bmN0aW9u
KGUsdCl7Zm9yKHZhciByLGEsdT1uKGUpLHM9MTtzPGFyZ3VtZW50cy5sZW5ndGg7cysrKXtyPU9i
amVjdChhcmd1bWVudHNbc10pO2Zvcih2YXIgbCBpbiByKW8uY2FsbChyLGwpJiYodVtsXT1yW2xd
KTtpZihPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKXthPU9iamVjdC5nZXRPd25Qcm9wZXJ0
eVN5bWJvbHMocik7Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspaS5jYWxsKHIsYVtjXSkmJih1
W2FbY11dPXJbYVtjXV0pfX1yZXR1cm4gdX19LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcihlKXtmb3IodmFyIHQ7dD1lLl9yZW5kZXJlZENvbXBvbmVudDspZT10O3JldHVy
biBlfWZ1bmN0aW9uIG8oZSx0KXt2YXIgbj1yKGUpO24uX2hvc3ROb2RlPXQsdFt2XT1ufWZ1bmN0
aW9uIGkoZSl7dmFyIHQ9ZS5faG9zdE5vZGU7dCYmKGRlbGV0ZSB0W3ZdLGUuX2hvc3ROb2RlPW51
bGwpfWZ1bmN0aW9uIGEoZSx0KXtpZighKGUuX2ZsYWdzJmguaGFzQ2FjaGVkQ2hpbGROb2Rlcykp
e3ZhciBuPWUuX3JlbmRlcmVkQ2hpbGRyZW4saT10LmZpcnN0Q2hpbGQ7ZTpmb3IodmFyIGEgaW4g
bilpZihuLmhhc093blByb3BlcnR5KGEpKXt2YXIgdT1uW2FdLHM9cih1KS5fZG9tSUQ7aWYoMCE9
PXMpe2Zvcig7bnVsbCE9PWk7aT1pLm5leHRTaWJsaW5nKWlmKDE9PT1pLm5vZGVUeXBlJiZpLmdl
dEF0dHJpYnV0ZShmKT09PVN0cmluZyhzKXx8OD09PWkubm9kZVR5cGUmJmkubm9kZVZhbHVlPT09
IiByZWFjdC10ZXh0OiAiK3MrIiAifHw4PT09aS5ub2RlVHlwZSYmaS5ub2RlVmFsdWU9PT0iIHJl
YWN0LWVtcHR5OiAiK3MrIiAiKXtvKHUsaSk7Y29udGludWUgZX1jKCIzMiIscyl9fWUuX2ZsYWdz
fD1oLmhhc0NhY2hlZENoaWxkTm9kZXN9fWZ1bmN0aW9uIHUoZSl7aWYoZVt2XSlyZXR1cm4gZVt2
XTtmb3IodmFyIHQ9W107IWVbdl07KXtpZih0LnB1c2goZSksIWUucGFyZW50Tm9kZSlyZXR1cm4g
bnVsbDtlPWUucGFyZW50Tm9kZX1mb3IodmFyIG4scjtlJiYocj1lW3ZdKTtlPXQucG9wKCkpbj1y
LHQubGVuZ3RoJiZhKHIsZSk7cmV0dXJuIG59ZnVuY3Rpb24gcyhlKXt2YXIgdD11KGUpO3JldHVy
biBudWxsIT10JiZ0Ll9ob3N0Tm9kZT09PWU/dDpudWxsfWZ1bmN0aW9uIGwoZSl7aWYodm9pZCAw
PT09ZS5faG9zdE5vZGU/YygiMzMiKTp2b2lkIDAsZS5faG9zdE5vZGUpcmV0dXJuIGUuX2hvc3RO
b2RlO2Zvcih2YXIgdD1bXTshZS5faG9zdE5vZGU7KXQucHVzaChlKSxlLl9ob3N0UGFyZW50P3Zv
aWQgMDpjKCIzNCIpLGU9ZS5faG9zdFBhcmVudDtmb3IoO3QubGVuZ3RoO2U9dC5wb3AoKSlhKGUs
ZS5faG9zdE5vZGUpO3JldHVybiBlLl9ob3N0Tm9kZX12YXIgYz1uKDIpLHA9bigxOCksZD1uKDc1
KSxmPShuKDEpLHAuSURfQVRUUklCVVRFX05BTUUpLGg9ZCx2PSJfX3JlYWN0SW50ZXJuYWxJbnN0
YW5jZSQiK01hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpLG09e2dldENsb3Nlc3RJ
bnN0YW5jZUZyb21Ob2RlOnUsZ2V0SW5zdGFuY2VGcm9tTm9kZTpzLGdldE5vZGVGcm9tSW5zdGFu
Y2U6bCxwcmVjYWNoZUNoaWxkTm9kZXM6YSxwcmVjYWNoZU5vZGU6byx1bmNhY2hlTm9kZTppfTtl
LmV4cG9ydHM9bX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49ISgidW5kZWZpbmVk
Ij09dHlwZW9mIHdpbmRvd3x8IXdpbmRvdy5kb2N1bWVudHx8IXdpbmRvdy5kb2N1bWVudC5jcmVh
dGVFbGVtZW50KSxyPXtjYW5Vc2VET006bixjYW5Vc2VXb3JrZXJzOiJ1bmRlZmluZWQiIT10eXBl
b2YgV29ya2VyLGNhblVzZUV2ZW50TGlzdGVuZXJzOm4mJiEoIXdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyJiYhd2luZG93LmF0dGFjaEV2ZW50KSxjYW5Vc2VWaWV3cG9ydDpuJiYhIXdpbmRvdy5zY3Jl
ZW4saXNJbldvcmtlcjohbn07ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIG4oZSl7cmV0dXJuIGZ1bmN0aW9uKCl7cmV0dXJuIGV9fXZhciByPWZ1bmN0aW9u
KCl7fTtyLnRoYXRSZXR1cm5zPW4sci50aGF0UmV0dXJuc0ZhbHNlPW4oITEpLHIudGhhdFJldHVy
bnNUcnVlPW4oITApLHIudGhhdFJldHVybnNOdWxsPW4obnVsbCksci50aGF0UmV0dXJuc1RoaXM9
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpc30sci50aGF0UmV0dXJuc0FyZ3VtZW50PWZ1bmN0aW9uKGUp
e3JldHVybiBlfSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIg
cj1udWxsO2UuZXhwb3J0cz17ZGVidWdUb29sOnJ9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIHZvaWQgMCE9PWUucmVmfWZ1bmN0aW9uIG8oZSl7cmV0
dXJuIHZvaWQgMCE9PWUua2V5fXZhciBpPW4oNCksYT1uKDE2KSx1PShuKDMpLG4oODgpLE9iamVj
dC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpLHM9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYm
U3ltYm9sLmZvciYmU3ltYm9sLmZvcigicmVhY3QuZWxlbWVudCIpfHw2MDEwMyxsPXtrZXk6ITAs
cmVmOiEwLF9fc2VsZjohMCxfX3NvdXJjZTohMH0sYz1mdW5jdGlvbihlLHQsbixyLG8saSxhKXt2
YXIgdT17JCR0eXBlb2Y6cyx0eXBlOmUsa2V5OnQscmVmOm4scHJvcHM6YSxfb3duZXI6aX07cmV0
dXJuIHV9O2MuY3JlYXRlRWxlbWVudD1mdW5jdGlvbihlLHQsbil7dmFyIGkscz17fSxwPW51bGws
ZD1udWxsLGY9bnVsbCxoPW51bGw7aWYobnVsbCE9dCl7cih0KSYmKGQ9dC5yZWYpLG8odCkmJihw
PSIiK3Qua2V5KSxmPXZvaWQgMD09PXQuX19zZWxmP251bGw6dC5fX3NlbGYsaD12b2lkIDA9PT10
Ll9fc291cmNlP251bGw6dC5fX3NvdXJjZTtmb3IoaSBpbiB0KXUuY2FsbCh0LGkpJiYhbC5oYXNP
d25Qcm9wZXJ0eShpKSYmKHNbaV09dFtpXSl9dmFyIHY9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9
PT12KXMuY2hpbGRyZW49bjtlbHNlIGlmKHY+MSl7Zm9yKHZhciBtPUFycmF5KHYpLHk9MDt5PHY7
eSsrKW1beV09YXJndW1lbnRzW3krMl07cy5jaGlsZHJlbj1tfWlmKGUmJmUuZGVmYXVsdFByb3Bz
KXt2YXIgZz1lLmRlZmF1bHRQcm9wcztmb3IoaSBpbiBnKXZvaWQgMD09PXNbaV0mJihzW2ldPWdb
aV0pfXJldHVybiBjKGUscCxkLGYsaCxhLmN1cnJlbnQscyl9LGMuY3JlYXRlRmFjdG9yeT1mdW5j
dGlvbihlKXt2YXIgdD1jLmNyZWF0ZUVsZW1lbnQuYmluZChudWxsLGUpO3JldHVybiB0LnR5cGU9
ZSx0fSxjLmNsb25lQW5kUmVwbGFjZUtleT1mdW5jdGlvbihlLHQpe3ZhciBuPWMoZS50eXBlLHQs
ZS5yZWYsZS5fc2VsZixlLl9zb3VyY2UsZS5fb3duZXIsZS5wcm9wcyk7cmV0dXJuIG59LGMuY2xv
bmVFbGVtZW50PWZ1bmN0aW9uKGUsdCxuKXt2YXIgcyxwPWkoe30sZS5wcm9wcyksZD1lLmtleSxm
PWUucmVmLGg9ZS5fc2VsZix2PWUuX3NvdXJjZSxtPWUuX293bmVyO2lmKG51bGwhPXQpe3IodCkm
JihmPXQucmVmLG09YS5jdXJyZW50KSxvKHQpJiYoZD0iIit0LmtleSk7dmFyIHk7ZS50eXBlJiZl
LnR5cGUuZGVmYXVsdFByb3BzJiYoeT1lLnR5cGUuZGVmYXVsdFByb3BzKTtmb3IocyBpbiB0KXUu
Y2FsbCh0LHMpJiYhbC5oYXNPd25Qcm9wZXJ0eShzKSYmKHZvaWQgMD09PXRbc10mJnZvaWQgMCE9
PXk/cFtzXT15W3NdOnBbc109dFtzXSl9dmFyIGc9YXJndW1lbnRzLmxlbmd0aC0yO2lmKDE9PT1n
KXAuY2hpbGRyZW49bjtlbHNlIGlmKGc+MSl7Zm9yKHZhciBiPUFycmF5KGcpLF89MDtfPGc7Xysr
KWJbX109YXJndW1lbnRzW18rMl07cC5jaGlsZHJlbj1ifXJldHVybiBjKGUudHlwZSxkLGYsaCx2
LG0scCl9LGMuaXNWYWxpZEVsZW1lbnQ9ZnVuY3Rpb24oZSl7cmV0dXJuIm9iamVjdCI9PXR5cGVv
ZiBlJiZudWxsIT09ZSYmZS4kJHR5cGVvZj09PXN9LGMuUkVBQ1RfRUxFTUVOVF9UWVBFPXMsZS5l
eHBvcnRzPWN9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe08uUmVh
Y3RSZWNvbmNpbGVUcmFuc2FjdGlvbiYmQz92b2lkIDA6YygiMTIzIil9ZnVuY3Rpb24gbygpe3Ro
aXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKSx0aGlzLmRpcnR5Q29tcG9uZW50c0xlbmd0aD1u
dWxsLHRoaXMuY2FsbGJhY2tRdWV1ZT1kLmdldFBvb2xlZCgpLHRoaXMucmVjb25jaWxlVHJhbnNh
Y3Rpb249Ty5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLmdldFBvb2xlZCghMCl9ZnVuY3Rpb24g
aShlLHQsbixvLGksYSl7cigpLEMuYmF0Y2hlZFVwZGF0ZXMoZSx0LG4sbyxpLGEpfWZ1bmN0aW9u
IGEoZSx0KXtyZXR1cm4gZS5fbW91bnRPcmRlci10Ll9tb3VudE9yZGVyfWZ1bmN0aW9uIHUoZSl7
dmFyIHQ9ZS5kaXJ0eUNvbXBvbmVudHNMZW5ndGg7dCE9PXkubGVuZ3RoP2MoIjEyNCIsdCx5Lmxl
bmd0aCk6dm9pZCAwLHkuc29ydChhKSxnKys7Zm9yKHZhciBuPTA7bjx0O24rKyl7dmFyIHI9eVtu
XSxvPXIuX3BlbmRpbmdDYWxsYmFja3M7ci5fcGVuZGluZ0NhbGxiYWNrcz1udWxsO3ZhciBpO2lm
KGgubG9nVG9wTGV2ZWxSZW5kZXJzKXt2YXIgdT1yO3IuX2N1cnJlbnRFbGVtZW50LnByb3BzPT09
ci5fcmVuZGVyZWRDb21wb25lbnQuX2N1cnJlbnRFbGVtZW50JiYodT1yLl9yZW5kZXJlZENvbXBv
bmVudCksaT0iUmVhY3QgdXBkYXRlOiAiK3UuZ2V0TmFtZSgpLGNvbnNvbGUudGltZShpKX1pZih2
LnBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeShyLGUucmVjb25jaWxlVHJhbnNhY3Rpb24sZyksaSYm
Y29uc29sZS50aW1lRW5kKGkpLG8pZm9yKHZhciBzPTA7czxvLmxlbmd0aDtzKyspZS5jYWxsYmFj
a1F1ZXVlLmVucXVldWUob1tzXSxyLmdldFB1YmxpY0luc3RhbmNlKCkpfX1mdW5jdGlvbiBzKGUp
e3JldHVybiByKCksQy5pc0JhdGNoaW5nVXBkYXRlcz8oeS5wdXNoKGUpLHZvaWQobnVsbD09ZS5f
dXBkYXRlQmF0Y2hOdW1iZXImJihlLl91cGRhdGVCYXRjaE51bWJlcj1nKzEpKSk6dm9pZCBDLmJh
dGNoZWRVcGRhdGVzKHMsZSl9ZnVuY3Rpb24gbChlLHQpe0MuaXNCYXRjaGluZ1VwZGF0ZXM/dm9p
ZCAwOmMoIjEyNSIpLGIuZW5xdWV1ZShlLHQpLF89ITB9dmFyIGM9bigyKSxwPW4oNCksZD1uKDcx
KSxmPW4oMTUpLGg9big3OCksdj1uKDE5KSxtPW4oMjUpLHk9KG4oMSksW10pLGc9MCxiPWQuZ2V0
UG9vbGVkKCksXz0hMSxDPW51bGwsRT17aW5pdGlhbGl6ZTpmdW5jdGlvbigpe3RoaXMuZGlydHlD
b21wb25lbnRzTGVuZ3RoPXkubGVuZ3RofSxjbG9zZTpmdW5jdGlvbigpe3RoaXMuZGlydHlDb21w
b25lbnRzTGVuZ3RoIT09eS5sZW5ndGg/KHkuc3BsaWNlKDAsdGhpcy5kaXJ0eUNvbXBvbmVudHNM
ZW5ndGgpLFAoKSk6eS5sZW5ndGg9MH19LHc9e2luaXRpYWxpemU6ZnVuY3Rpb24oKXt0aGlzLmNh
bGxiYWNrUXVldWUucmVzZXQoKX0sY2xvc2U6ZnVuY3Rpb24oKXt0aGlzLmNhbGxiYWNrUXVldWUu
bm90aWZ5QWxsKCl9fSxUPVtFLHddO3Aoby5wcm90b3R5cGUsbS5NaXhpbix7Z2V0VHJhbnNhY3Rp
b25XcmFwcGVyczpmdW5jdGlvbigpe3JldHVybiBUfSxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7dGhp
cy5kaXJ0eUNvbXBvbmVudHNMZW5ndGg9bnVsbCxkLnJlbGVhc2UodGhpcy5jYWxsYmFja1F1ZXVl
KSx0aGlzLmNhbGxiYWNrUXVldWU9bnVsbCxPLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVs
ZWFzZSh0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uKSx0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9u
PW51bGx9LHBlcmZvcm06ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBtLk1peGluLnBlcmZvcm0uY2Fs
bCh0aGlzLHRoaXMucmVjb25jaWxlVHJhbnNhY3Rpb24ucGVyZm9ybSx0aGlzLnJlY29uY2lsZVRy
YW5zYWN0aW9uLGUsdCxuKX19KSxmLmFkZFBvb2xpbmdUbyhvKTt2YXIgUD1mdW5jdGlvbigpe2Zv
cig7eS5sZW5ndGh8fF87KXtpZih5Lmxlbmd0aCl7dmFyIGU9by5nZXRQb29sZWQoKTtlLnBlcmZv
cm0odSxudWxsLGUpLG8ucmVsZWFzZShlKX1pZihfKXtfPSExO3ZhciB0PWI7Yj1kLmdldFBvb2xl
ZCgpLHQubm90aWZ5QWxsKCksZC5yZWxlYXNlKHQpfX19LHg9e2luamVjdFJlY29uY2lsZVRyYW5z
YWN0aW9uOmZ1bmN0aW9uKGUpe2U/dm9pZCAwOmMoIjEyNiIpLE8uUmVhY3RSZWNvbmNpbGVUcmFu
c2FjdGlvbj1lfSxpbmplY3RCYXRjaGluZ1N0cmF0ZWd5OmZ1bmN0aW9uKGUpe2U/dm9pZCAwOmMo
IjEyNyIpLCJmdW5jdGlvbiIhPXR5cGVvZiBlLmJhdGNoZWRVcGRhdGVzP2MoIjEyOCIpOnZvaWQg
MCwiYm9vbGVhbiIhPXR5cGVvZiBlLmlzQmF0Y2hpbmdVcGRhdGVzP2MoIjEyOSIpOnZvaWQgMCxD
PWV9fSxPPXtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uOm51bGwsYmF0Y2hlZFVwZGF0ZXM6aSxl
bnF1ZXVlVXBkYXRlOnMsZmx1c2hCYXRjaGVkVXBkYXRlczpQLGluamVjdGlvbjp4LGFzYXA6bH07
ZS5leHBvcnRzPU99LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZS5leHBvcnRzPW4oMTQ3
KX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDI2KSxvPXIoe2J1YmJsZWQ6
bnVsbCxjYXB0dXJlZDpudWxsfSksaT1yKHt0b3BBYm9ydDpudWxsLHRvcEFuaW1hdGlvbkVuZDpu
dWxsLHRvcEFuaW1hdGlvbkl0ZXJhdGlvbjpudWxsLHRvcEFuaW1hdGlvblN0YXJ0Om51bGwsdG9w
Qmx1cjpudWxsLHRvcENhblBsYXk6bnVsbCx0b3BDYW5QbGF5VGhyb3VnaDpudWxsLHRvcENoYW5n
ZTpudWxsLHRvcENsaWNrOm51bGwsdG9wQ29tcG9zaXRpb25FbmQ6bnVsbCx0b3BDb21wb3NpdGlv
blN0YXJ0Om51bGwsdG9wQ29tcG9zaXRpb25VcGRhdGU6bnVsbCx0b3BDb250ZXh0TWVudTpudWxs
LHRvcENvcHk6bnVsbCx0b3BDdXQ6bnVsbCx0b3BEb3VibGVDbGljazpudWxsLHRvcERyYWc6bnVs
bCx0b3BEcmFnRW5kOm51bGwsdG9wRHJhZ0VudGVyOm51bGwsdG9wRHJhZ0V4aXQ6bnVsbCx0b3BE
cmFnTGVhdmU6bnVsbCx0b3BEcmFnT3ZlcjpudWxsLHRvcERyYWdTdGFydDpudWxsLHRvcERyb3A6
bnVsbCx0b3BEdXJhdGlvbkNoYW5nZTpudWxsLHRvcEVtcHRpZWQ6bnVsbCx0b3BFbmNyeXB0ZWQ6
bnVsbCx0b3BFbmRlZDpudWxsLHRvcEVycm9yOm51bGwsdG9wRm9jdXM6bnVsbCx0b3BJbnB1dDpu
dWxsLHRvcEludmFsaWQ6bnVsbCx0b3BLZXlEb3duOm51bGwsdG9wS2V5UHJlc3M6bnVsbCx0b3BL
ZXlVcDpudWxsLHRvcExvYWQ6bnVsbCx0b3BMb2FkZWREYXRhOm51bGwsdG9wTG9hZGVkTWV0YWRh
dGE6bnVsbCx0b3BMb2FkU3RhcnQ6bnVsbCx0b3BNb3VzZURvd246bnVsbCx0b3BNb3VzZU1vdmU6
bnVsbCx0b3BNb3VzZU91dDpudWxsLHRvcE1vdXNlT3ZlcjpudWxsLHRvcE1vdXNlVXA6bnVsbCx0
b3BQYXN0ZTpudWxsLHRvcFBhdXNlOm51bGwsdG9wUGxheTpudWxsLHRvcFBsYXlpbmc6bnVsbCx0
b3BQcm9ncmVzczpudWxsLHRvcFJhdGVDaGFuZ2U6bnVsbCx0b3BSZXNldDpudWxsLHRvcFNjcm9s
bDpudWxsLHRvcFNlZWtlZDpudWxsLHRvcFNlZWtpbmc6bnVsbCx0b3BTZWxlY3Rpb25DaGFuZ2U6
bnVsbCx0b3BTdGFsbGVkOm51bGwsdG9wU3VibWl0Om51bGwsdG9wU3VzcGVuZDpudWxsLHRvcFRl
eHRJbnB1dDpudWxsLHRvcFRpbWVVcGRhdGU6bnVsbCx0b3BUb3VjaENhbmNlbDpudWxsLHRvcFRv
dWNoRW5kOm51bGwsdG9wVG91Y2hNb3ZlOm51bGwsdG9wVG91Y2hTdGFydDpudWxsLHRvcFRyYW5z
aXRpb25FbmQ6bnVsbCx0b3BWb2x1bWVDaGFuZ2U6bnVsbCx0b3BXYWl0aW5nOm51bGwsdG9wV2hl
ZWw6bnVsbH0pLGE9e3RvcExldmVsVHlwZXM6aSxQcm9wYWdhdGlvblBoYXNlczpvfTtlLmV4cG9y
dHM9YX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3Ro
aXMuZGlzcGF0Y2hDb25maWc9ZSx0aGlzLl90YXJnZXRJbnN0PXQsdGhpcy5uYXRpdmVFdmVudD1u
O3ZhciBvPXRoaXMuY29uc3RydWN0b3IuSW50ZXJmYWNlO2Zvcih2YXIgaSBpbiBvKWlmKG8uaGFz
T3duUHJvcGVydHkoaSkpe3ZhciB1PW9baV07dT90aGlzW2ldPXUobik6InRhcmdldCI9PT1pP3Ro
aXMudGFyZ2V0PXI6dGhpc1tpXT1uW2ldfXZhciBzPW51bGwhPW4uZGVmYXVsdFByZXZlbnRlZD9u
LmRlZmF1bHRQcmV2ZW50ZWQ6bi5yZXR1cm5WYWx1ZT09PSExO3JldHVybiBzP3RoaXMuaXNEZWZh
dWx0UHJldmVudGVkPWEudGhhdFJldHVybnNUcnVlOnRoaXMuaXNEZWZhdWx0UHJldmVudGVkPWEu
dGhhdFJldHVybnNGYWxzZSx0aGlzLmlzUHJvcGFnYXRpb25TdG9wcGVkPWEudGhhdFJldHVybnNG
YWxzZSx0aGlzfXZhciBvPW4oNCksaT1uKDE1KSxhPW4oNyksdT0obigzKSwiZnVuY3Rpb24iPT10
eXBlb2YgUHJveHksWyJkaXNwYXRjaENvbmZpZyIsIl90YXJnZXRJbnN0IiwibmF0aXZlRXZlbnQi
LCJpc0RlZmF1bHRQcmV2ZW50ZWQiLCJpc1Byb3BhZ2F0aW9uU3RvcHBlZCIsIl9kaXNwYXRjaExp
c3RlbmVycyIsIl9kaXNwYXRjaEluc3RhbmNlcyJdKSxzPXt0eXBlOm51bGwsdGFyZ2V0Om51bGws
Y3VycmVudFRhcmdldDphLnRoYXRSZXR1cm5zTnVsbCxldmVudFBoYXNlOm51bGwsYnViYmxlczpu
dWxsLGNhbmNlbGFibGU6bnVsbCx0aW1lU3RhbXA6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudGltZVN0
YW1wfHxEYXRlLm5vdygpfSxkZWZhdWx0UHJldmVudGVkOm51bGwsaXNUcnVzdGVkOm51bGx9O28o
ci5wcm90b3R5cGUse3ByZXZlbnREZWZhdWx0OmZ1bmN0aW9uKCl7dGhpcy5kZWZhdWx0UHJldmVu
dGVkPSEwO3ZhciBlPXRoaXMubmF0aXZlRXZlbnQ7ZSYmKGUucHJldmVudERlZmF1bHQ/ZS5wcmV2
ZW50RGVmYXVsdCgpOiJ1bmtub3duIiE9dHlwZW9mIGUucmV0dXJuVmFsdWUmJihlLnJldHVyblZh
bHVlPSExKSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1hLnRoYXRSZXR1cm5zVHJ1ZSl9LHN0b3BQ
cm9wYWdhdGlvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMubmF0aXZlRXZlbnQ7ZSYmKGUuc3RvcFBy
b3BhZ2F0aW9uP2Uuc3RvcFByb3BhZ2F0aW9uKCk6InVua25vd24iIT10eXBlb2YgZS5jYW5jZWxC
dWJibGUmJihlLmNhbmNlbEJ1YmJsZT0hMCksdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZD1hLnRo
YXRSZXR1cm5zVHJ1ZSl9LHBlcnNpc3Q6ZnVuY3Rpb24oKXt0aGlzLmlzUGVyc2lzdGVudD1hLnRo
YXRSZXR1cm5zVHJ1ZX0saXNQZXJzaXN0ZW50OmEudGhhdFJldHVybnNGYWxzZSxkZXN0cnVjdG9y
OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jb25zdHJ1Y3Rvci5JbnRlcmZhY2U7Zm9yKHZhciB0IGlu
IGUpdGhpc1t0XT1udWxsO2Zvcih2YXIgbj0wO248dS5sZW5ndGg7bisrKXRoaXNbdVtuXV09bnVs
bH19KSxyLkludGVyZmFjZT1zLHIuYXVnbWVudENsYXNzPWZ1bmN0aW9uKGUsdCl7dmFyIG49dGhp
cyxyPWZ1bmN0aW9uKCl7fTtyLnByb3RvdHlwZT1uLnByb3RvdHlwZTt2YXIgYT1uZXcgcjtvKGEs
ZS5wcm90b3R5cGUpLGUucHJvdG90eXBlPWEsZS5wcm90b3R5cGUuY29uc3RydWN0b3I9ZSxlLklu
dGVyZmFjZT1vKHt9LG4uSW50ZXJmYWNlLHQpLGUuYXVnbWVudENsYXNzPW4uYXVnbWVudENsYXNz
LGkuYWRkUG9vbGluZ1RvKGUsaS5mb3VyQXJndW1lbnRQb29sZXIpfSxpLmFkZFBvb2xpbmdUbyhy
LGkuZm91ckFyZ3VtZW50UG9vbGVyKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0
cmljdCI7dmFyIG49ZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHQgaW4gZSlpZihlLmhhc093blByb3Bl
cnR5KHQpKXJldHVybiB0O3JldHVybiBudWxsfTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDIpLG89KG4oMSksZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcztp
Zih0Lmluc3RhbmNlUG9vbC5sZW5ndGgpe3ZhciBuPXQuaW5zdGFuY2VQb29sLnBvcCgpO3JldHVy
biB0LmNhbGwobixlKSxufXJldHVybiBuZXcgdChlKX0pLGk9ZnVuY3Rpb24oZSx0KXt2YXIgbj10
aGlzO2lmKG4uaW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIHI9bi5pbnN0YW5jZVBvb2wucG9wKCk7
cmV0dXJuIG4uY2FsbChyLGUsdCkscn1yZXR1cm4gbmV3IG4oZSx0KX0sYT1mdW5jdGlvbihlLHQs
bil7dmFyIHI9dGhpcztpZihyLmluc3RhbmNlUG9vbC5sZW5ndGgpe3ZhciBvPXIuaW5zdGFuY2VQ
b29sLnBvcCgpO3JldHVybiByLmNhbGwobyxlLHQsbiksb31yZXR1cm4gbmV3IHIoZSx0LG4pfSx1
PWZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBvPXRoaXM7aWYoby5pbnN0YW5jZVBvb2wubGVuZ3RoKXt2
YXIgaT1vLmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gby5jYWxsKGksZSx0LG4sciksaX1yZXR1
cm4gbmV3IG8oZSx0LG4scil9LHM9ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgaT10aGlzO2lmKGku
aW5zdGFuY2VQb29sLmxlbmd0aCl7dmFyIGE9aS5pbnN0YW5jZVBvb2wucG9wKCk7cmV0dXJuIGku
Y2FsbChhLGUsdCxuLHIsbyksYX1yZXR1cm4gbmV3IGkoZSx0LG4scixvKX0sbD1mdW5jdGlvbihl
KXt2YXIgdD10aGlzO2UgaW5zdGFuY2VvZiB0P3ZvaWQgMDpyKCIyNSIpLGUuZGVzdHJ1Y3Rvcigp
LHQuaW5zdGFuY2VQb29sLmxlbmd0aDx0LnBvb2xTaXplJiZ0Lmluc3RhbmNlUG9vbC5wdXNoKGUp
fSxjPTEwLHA9byxkPWZ1bmN0aW9uKGUsdCl7dmFyIG49ZTtyZXR1cm4gbi5pbnN0YW5jZVBvb2w9
W10sbi5nZXRQb29sZWQ9dHx8cCxuLnBvb2xTaXplfHwobi5wb29sU2l6ZT1jKSxuLnJlbGVhc2U9
bCxufSxmPXthZGRQb29saW5nVG86ZCxvbmVBcmd1bWVudFBvb2xlcjpvLHR3b0FyZ3VtZW50UG9v
bGVyOmksdGhyZWVBcmd1bWVudFBvb2xlcjphLGZvdXJBcmd1bWVudFBvb2xlcjp1LGZpdmVBcmd1
bWVudFBvb2xlcjpzfTtlLmV4cG9ydHM9Zn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFy
IG49e2N1cnJlbnQ6bnVsbH07ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlKXtpZihtKXt2YXIgdD1lLm5vZGUsbj1lLmNoaWxkcmVuO2lmKG4ubGVu
Z3RoKWZvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKXkodCxuW3JdLG51bGwpO2Vsc2UgbnVsbCE9
ZS5odG1sP3AodCxlLmh0bWwpOm51bGwhPWUudGV4dCYmZih0LGUudGV4dCl9fWZ1bmN0aW9uIG8o
ZSx0KXtlLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHQubm9kZSxlKSxyKHQpfWZ1bmN0aW9uIGko
ZSx0KXttP2UuY2hpbGRyZW4ucHVzaCh0KTplLm5vZGUuYXBwZW5kQ2hpbGQodC5ub2RlKX1mdW5j
dGlvbiBhKGUsdCl7bT9lLmh0bWw9dDpwKGUubm9kZSx0KX1mdW5jdGlvbiB1KGUsdCl7bT9lLnRl
eHQ9dDpmKGUubm9kZSx0KX1mdW5jdGlvbiBzKCl7cmV0dXJuIHRoaXMubm9kZS5ub2RlTmFtZX1m
dW5jdGlvbiBsKGUpe3JldHVybntub2RlOmUsY2hpbGRyZW46W10saHRtbDpudWxsLHRleHQ6bnVs
bCx0b1N0cmluZzpzfX12YXIgYz1uKDM4KSxwPW4oMzEpLGQ9big1MiksZj1uKDk1KSxoPTEsdj0x
MSxtPSJ1bmRlZmluZWQiIT10eXBlb2YgZG9jdW1lbnQmJiJudW1iZXIiPT10eXBlb2YgZG9jdW1l
bnQuZG9jdW1lbnRNb2RlfHwidW5kZWZpbmVkIiE9dHlwZW9mIG5hdmlnYXRvciYmInN0cmluZyI9
PXR5cGVvZiBuYXZpZ2F0b3IudXNlckFnZW50JiYvXGJFZGdlXC9cZC8udGVzdChuYXZpZ2F0b3Iu
dXNlckFnZW50KSx5PWQoZnVuY3Rpb24oZSx0LG4pe3Qubm9kZS5ub2RlVHlwZT09PXZ8fHQubm9k
ZS5ub2RlVHlwZT09PWgmJiJvYmplY3QiPT09dC5ub2RlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkm
JihudWxsPT10Lm5vZGUubmFtZXNwYWNlVVJJfHx0Lm5vZGUubmFtZXNwYWNlVVJJPT09Yy5odG1s
KT8ocih0KSxlLmluc2VydEJlZm9yZSh0Lm5vZGUsbikpOihlLmluc2VydEJlZm9yZSh0Lm5vZGUs
bikscih0KSl9KTtsLmluc2VydFRyZWVCZWZvcmU9eSxsLnJlcGxhY2VDaGlsZFdpdGhUcmVlPW8s
bC5xdWV1ZUNoaWxkPWksbC5xdWV1ZUhUTUw9YSxsLnF1ZXVlVGV4dD11LGUuZXhwb3J0cz1sfSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4oZSZ0KT09
PXR9dmFyIG89bigyKSxpPShuKDEpLHtNVVNUX1VTRV9QUk9QRVJUWToxLEhBU19CT09MRUFOX1ZB
TFVFOjQsSEFTX05VTUVSSUNfVkFMVUU6OCxIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRToyNCxI
QVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFOjMyLGluamVjdERPTVByb3BlcnR5Q29uZmlnOmZ1
bmN0aW9uKGUpe3ZhciB0PWksbj1lLlByb3BlcnRpZXN8fHt9LGE9ZS5ET01BdHRyaWJ1dGVOYW1l
c3BhY2VzfHx7fSxzPWUuRE9NQXR0cmlidXRlTmFtZXN8fHt9LGw9ZS5ET01Qcm9wZXJ0eU5hbWVz
fHx7fSxjPWUuRE9NTXV0YXRpb25NZXRob2RzfHx7fTtlLmlzQ3VzdG9tQXR0cmlidXRlJiZ1Ll9p
c0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9ucy5wdXNoKGUuaXNDdXN0b21BdHRyaWJ1dGUpO2Zvcih2
YXIgcCBpbiBuKXt1LnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkocCk/bygiNDgiLHApOnZvaWQg
MDt2YXIgZD1wLnRvTG93ZXJDYXNlKCksZj1uW3BdLGg9e2F0dHJpYnV0ZU5hbWU6ZCxhdHRyaWJ1
dGVOYW1lc3BhY2U6bnVsbCxwcm9wZXJ0eU5hbWU6cCxtdXRhdGlvbk1ldGhvZDpudWxsLG11c3RV
c2VQcm9wZXJ0eTpyKGYsdC5NVVNUX1VTRV9QUk9QRVJUWSksaGFzQm9vbGVhblZhbHVlOnIoZix0
LkhBU19CT09MRUFOX1ZBTFVFKSxoYXNOdW1lcmljVmFsdWU6cihmLHQuSEFTX05VTUVSSUNfVkFM
VUUpLGhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlOnIoZix0LkhBU19QT1NJVElWRV9OVU1FUklDX1ZB
TFVFKSxoYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlOnIoZix0LkhBU19PVkVSTE9BREVEX0JPT0xF
QU5fVkFMVUUpfTtpZihoLmhhc0Jvb2xlYW5WYWx1ZStoLmhhc051bWVyaWNWYWx1ZStoLmhhc092
ZXJsb2FkZWRCb29sZWFuVmFsdWU8PTE/dm9pZCAwOm8oIjUwIixwKSxzLmhhc093blByb3BlcnR5
KHApKXt2YXIgdj1zW3BdO2guYXR0cmlidXRlTmFtZT12fWEuaGFzT3duUHJvcGVydHkocCkmJiho
LmF0dHJpYnV0ZU5hbWVzcGFjZT1hW3BdKSxsLmhhc093blByb3BlcnR5KHApJiYoaC5wcm9wZXJ0
eU5hbWU9bFtwXSksYy5oYXNPd25Qcm9wZXJ0eShwKSYmKGgubXV0YXRpb25NZXRob2Q9Y1twXSks
dS5wcm9wZXJ0aWVzW3BdPWh9fX0pLGE9IjpBLVpfYS16XFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1c
XHUwMEY2XFx1MDBGOC1cXHUwMkZGXFx1MDM3MC1cXHUwMzdEXFx1MDM3Ri1cXHUxRkZGXFx1MjAw
Qy1cXHUyMDBEXFx1MjA3MC1cXHUyMThGXFx1MkMwMC1cXHUyRkVGXFx1MzAwMS1cXHVEN0ZGXFx1
RjkwMC1cXHVGRENGXFx1RkRGMC1cXHVGRkZEIix1PXtJRF9BVFRSSUJVVEVfTkFNRToiZGF0YS1y
ZWFjdGlkIixST09UX0FUVFJJQlVURV9OQU1FOiJkYXRhLXJlYWN0cm9vdCIsQVRUUklCVVRFX05B
TUVfU1RBUlRfQ0hBUjphLEFUVFJJQlVURV9OQU1FX0NIQVI6YSsiXFwtLjAtOVxcdTAwQjdcXHUw
MzAwLVxcdTAzNkZcXHUyMDNGLVxcdTIwNDAiLHByb3BlcnRpZXM6e30sZ2V0UG9zc2libGVTdGFu
ZGFyZE5hbWU6bnVsbCxfaXNDdXN0b21BdHRyaWJ1dGVGdW5jdGlvbnM6W10saXNDdXN0b21BdHRy
aWJ1dGU6ZnVuY3Rpb24oZSl7Zm9yKHZhciB0PTA7dDx1Ll9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0
aW9ucy5sZW5ndGg7dCsrKXt2YXIgbj11Ll9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9uc1t0XTtp
ZihuKGUpKXJldHVybiEwfXJldHVybiExfSxpbmplY3Rpb246aX07ZS5leHBvcnRzPXV9LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe28uYXR0YWNoUmVmcyh0aGlzLHRo
aXMuX2N1cnJlbnRFbGVtZW50KX12YXIgbz1uKDE3NSksaT0obig4KSxuKDMpLHttb3VudENvbXBv
bmVudDpmdW5jdGlvbihlLHQsbixvLGksYSl7dmFyIHU9ZS5tb3VudENvbXBvbmVudCh0LG4sbyxp
LGEpO3JldHVybiBlLl9jdXJyZW50RWxlbWVudCYmbnVsbCE9ZS5fY3VycmVudEVsZW1lbnQucmVm
JiZ0LmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocixlKSx1fSxnZXRIb3N0Tm9kZTpmdW5j
dGlvbihlKXtyZXR1cm4gZS5nZXRIb3N0Tm9kZSgpfSx1bm1vdW50Q29tcG9uZW50OmZ1bmN0aW9u
KGUsdCl7by5kZXRhY2hSZWZzKGUsZS5fY3VycmVudEVsZW1lbnQpLGUudW5tb3VudENvbXBvbmVu
dCh0KX0scmVjZWl2ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQsbixpKXt2YXIgYT1lLl9jdXJyZW50
RWxlbWVudDtpZih0IT09YXx8aSE9PWUuX2NvbnRleHQpe3ZhciB1PW8uc2hvdWxkVXBkYXRlUmVm
cyhhLHQpO3UmJm8uZGV0YWNoUmVmcyhlLGEpLGUucmVjZWl2ZUNvbXBvbmVudCh0LG4saSksdSYm
ZS5fY3VycmVudEVsZW1lbnQmJm51bGwhPWUuX2N1cnJlbnRFbGVtZW50LnJlZiYmbi5nZXRSZWFj
dE1vdW50UmVhZHkoKS5lbnF1ZXVlKHIsZSl9fSxwZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnk6ZnVu
Y3Rpb24oZSx0LG4pe2UuX3VwZGF0ZUJhdGNoTnVtYmVyPT09biYmZS5wZXJmb3JtVXBkYXRlSWZO
ZWNlc3NhcnkodCl9fSk7ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
dmFyIHI9e307ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9
bigyKSxvPW4oMzkpLGk9big0MCksYT1uKDQ2KSx1PW4oODcpLHM9big4OSksbD0obigxKSx7fSks
Yz1udWxsLHA9ZnVuY3Rpb24oZSx0KXtlJiYoaS5leGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIoZSx0
KSxlLmlzUGVyc2lzdGVudCgpfHxlLmNvbnN0cnVjdG9yLnJlbGVhc2UoZSkpfSxkPWZ1bmN0aW9u
KGUpe3JldHVybiBwKGUsITApfSxmPWZ1bmN0aW9uKGUpe3JldHVybiBwKGUsITEpfSxoPWZ1bmN0
aW9uKGUpe3JldHVybiIuIitlLl9yb290Tm9kZUlEfSx2PXtpbmplY3Rpb246e2luamVjdEV2ZW50
UGx1Z2luT3JkZXI6by5pbmplY3RFdmVudFBsdWdpbk9yZGVyLGluamVjdEV2ZW50UGx1Z2luc0J5
TmFtZTpvLmluamVjdEV2ZW50UGx1Z2luc0J5TmFtZX0scHV0TGlzdGVuZXI6ZnVuY3Rpb24oZSx0
LG4peyJmdW5jdGlvbiIhPXR5cGVvZiBuP3IoIjk0Iix0LHR5cGVvZiBuKTp2b2lkIDA7dmFyIGk9
aChlKSxhPWxbdF18fChsW3RdPXt9KTthW2ldPW47dmFyIHU9by5yZWdpc3RyYXRpb25OYW1lTW9k
dWxlc1t0XTt1JiZ1LmRpZFB1dExpc3RlbmVyJiZ1LmRpZFB1dExpc3RlbmVyKGUsdCxuKX0sZ2V0
TGlzdGVuZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj1sW3RdLHI9aChlKTtyZXR1cm4gbiYmbltyXX0s
ZGVsZXRlTGlzdGVuZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj1vLnJlZ2lzdHJhdGlvbk5hbWVNb2R1
bGVzW3RdO24mJm4ud2lsbERlbGV0ZUxpc3RlbmVyJiZuLndpbGxEZWxldGVMaXN0ZW5lcihlLHQp
O3ZhciByPWxbdF07aWYocil7dmFyIGk9aChlKTtkZWxldGUgcltpXX19LGRlbGV0ZUFsbExpc3Rl
bmVyczpmdW5jdGlvbihlKXt2YXIgdD1oKGUpO2Zvcih2YXIgbiBpbiBsKWlmKGwuaGFzT3duUHJv
cGVydHkobikmJmxbbl1bdF0pe3ZhciByPW8ucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbbl07ciYm
ci53aWxsRGVsZXRlTGlzdGVuZXImJnIud2lsbERlbGV0ZUxpc3RlbmVyKGUsbiksZGVsZXRlIGxb
bl1bdF19fSxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe2Zvcih2YXIgaSxhPW8ucGx1
Z2lucyxzPTA7czxhLmxlbmd0aDtzKyspe3ZhciBsPWFbc107aWYobCl7dmFyIGM9bC5leHRyYWN0
RXZlbnRzKGUsdCxuLHIpO2MmJihpPXUoaSxjKSl9fXJldHVybiBpfSxlbnF1ZXVlRXZlbnRzOmZ1
bmN0aW9uKGUpe2UmJihjPXUoYyxlKSl9LHByb2Nlc3NFdmVudFF1ZXVlOmZ1bmN0aW9uKGUpe3Zh
ciB0PWM7Yz1udWxsLGU/cyh0LGQpOnModCxmKSxjP3IoIjk1Iik6dm9pZCAwLGEucmV0aHJvd0Nh
dWdodEVycm9yKCl9LF9fcHVyZ2U6ZnVuY3Rpb24oKXtsPXt9fSxfX2dldExpc3RlbmVyQmFuazpm
dW5jdGlvbigpe3JldHVybiBsfX07ZS5leHBvcnRzPXZ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7dmFyIHI9dC5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdp
c3RyYXRpb25OYW1lc1tuXTtyZXR1cm4gYihlLHIpfWZ1bmN0aW9uIG8oZSx0LG4pe3ZhciBvPXQ/
Zy5idWJibGVkOmcuY2FwdHVyZWQsaT1yKGUsbixvKTtpJiYobi5fZGlzcGF0Y2hMaXN0ZW5lcnM9
bShuLl9kaXNwYXRjaExpc3RlbmVycyxpKSxuLl9kaXNwYXRjaEluc3RhbmNlcz1tKG4uX2Rpc3Bh
dGNoSW5zdGFuY2VzLGUpKX1mdW5jdGlvbiBpKGUpe2UmJmUuZGlzcGF0Y2hDb25maWcucGhhc2Vk
UmVnaXN0cmF0aW9uTmFtZXMmJnYudHJhdmVyc2VUd29QaGFzZShlLl90YXJnZXRJbnN0LG8sZSl9
ZnVuY3Rpb24gYShlKXtpZihlJiZlLmRpc3BhdGNoQ29uZmlnLnBoYXNlZFJlZ2lzdHJhdGlvbk5h
bWVzKXt2YXIgdD1lLl90YXJnZXRJbnN0LG49dD92LmdldFBhcmVudEluc3RhbmNlKHQpOm51bGw7
di50cmF2ZXJzZVR3b1BoYXNlKG4sbyxlKX19ZnVuY3Rpb24gdShlLHQsbil7aWYobiYmbi5kaXNw
YXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1lKXt2YXIgcj1uLmRpc3BhdGNoQ29uZmlnLnJlZ2lz
dHJhdGlvbk5hbWUsbz1iKGUscik7byYmKG4uX2Rpc3BhdGNoTGlzdGVuZXJzPW0obi5fZGlzcGF0
Y2hMaXN0ZW5lcnMsbyksbi5fZGlzcGF0Y2hJbnN0YW5jZXM9bShuLl9kaXNwYXRjaEluc3RhbmNl
cyxlKSl9fWZ1bmN0aW9uIHMoZSl7ZSYmZS5kaXNwYXRjaENvbmZpZy5yZWdpc3RyYXRpb25OYW1l
JiZ1KGUuX3RhcmdldEluc3QsbnVsbCxlKX1mdW5jdGlvbiBsKGUpe3koZSxpKX1mdW5jdGlvbiBj
KGUpe3koZSxhKX1mdW5jdGlvbiBwKGUsdCxuLHIpe3YudHJhdmVyc2VFbnRlckxlYXZlKG4scix1
LGUsdCl9ZnVuY3Rpb24gZChlKXt5KGUscyl9dmFyIGY9bigxMiksaD1uKDIxKSx2PW4oNDApLG09
big4NykseT1uKDg5KSxnPShuKDMpLGYuUHJvcGFnYXRpb25QaGFzZXMpLGI9aC5nZXRMaXN0ZW5l
cixfPXthY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzOmwsYWNjdW11bGF0ZVR3b1BoYXNlRGlz
cGF0Y2hlc1NraXBUYXJnZXQ6YyxhY2N1bXVsYXRlRGlyZWN0RGlzcGF0Y2hlczpkLGFjY3VtdWxh
dGVFbnRlckxlYXZlRGlzcGF0Y2hlczpwfTtlLmV4cG9ydHM9X30sZnVuY3Rpb24oZSx0KXsidXNl
IHN0cmljdCI7dmFyIG49e3JlbW92ZTpmdW5jdGlvbihlKXtlLl9yZWFjdEludGVybmFsSW5zdGFu
Y2U9dm9pZCAwfSxnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUuX3JlYWN0SW50ZXJuYWxJbnN0YW5j
ZX0saGFzOmZ1bmN0aW9uKGUpe3JldHVybiB2b2lkIDAhPT1lLl9yZWFjdEludGVybmFsSW5zdGFu
Y2V9LHNldDpmdW5jdGlvbihlLHQpe2UuX3JlYWN0SW50ZXJuYWxJbnN0YW5jZT10fX07ZS5leHBv
cnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXty
ZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89bigxMyksaT1uKDU1KSxhPXt2aWV3OmZ1
bmN0aW9uKGUpe2lmKGUudmlldylyZXR1cm4gZS52aWV3O3ZhciB0PWkoZSk7aWYodC53aW5kb3c9
PT10KXJldHVybiB0O3ZhciBuPXQub3duZXJEb2N1bWVudDtyZXR1cm4gbj9uLmRlZmF1bHRWaWV3
fHxuLnBhcmVudFdpbmRvdzp3aW5kb3d9LGRldGFpbDpmdW5jdGlvbihlKXtyZXR1cm4gZS5kZXRh
aWx8fDB9fTtvLmF1Z21lbnRDbGFzcyhyLGEpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO3ZhciByPW4oMiksbz0obigxKSx7cmVpbml0aWFsaXplVHJhbnNhY3Rpb246
ZnVuY3Rpb24oKXt0aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnM9dGhpcy5nZXRUcmFuc2FjdGlvbldy
YXBwZXJzKCksdGhpcy53cmFwcGVySW5pdERhdGE/dGhpcy53cmFwcGVySW5pdERhdGEubGVuZ3Ro
PTA6dGhpcy53cmFwcGVySW5pdERhdGE9W10sdGhpcy5faXNJblRyYW5zYWN0aW9uPSExfSxfaXNJ
blRyYW5zYWN0aW9uOiExLGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6bnVsbCxpc0luVHJhbnNhY3Rp
b246ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuX2lzSW5UcmFuc2FjdGlvbn0scGVyZm9ybTpmdW5j
dGlvbihlLHQsbixvLGksYSx1LHMpe3RoaXMuaXNJblRyYW5zYWN0aW9uKCk/cigiMjciKTp2b2lk
IDA7dmFyIGwsYzt0cnl7dGhpcy5faXNJblRyYW5zYWN0aW9uPSEwLGw9ITAsdGhpcy5pbml0aWFs
aXplQWxsKDApLGM9ZS5jYWxsKHQsbixvLGksYSx1LHMpLGw9ITF9ZmluYWxseXt0cnl7aWYobCl0
cnl7dGhpcy5jbG9zZUFsbCgwKX1jYXRjaChwKXt9ZWxzZSB0aGlzLmNsb3NlQWxsKDApfWZpbmFs
bHl7dGhpcy5faXNJblRyYW5zYWN0aW9uPSExfX1yZXR1cm4gY30saW5pdGlhbGl6ZUFsbDpmdW5j
dGlvbihlKXtmb3IodmFyIHQ9dGhpcy50cmFuc2FjdGlvbldyYXBwZXJzLG49ZTtuPHQubGVuZ3Ro
O24rKyl7dmFyIHI9dFtuXTt0cnl7dGhpcy53cmFwcGVySW5pdERhdGFbbl09aS5PQlNFUlZFRF9F
UlJPUix0aGlzLndyYXBwZXJJbml0RGF0YVtuXT1yLmluaXRpYWxpemU/ci5pbml0aWFsaXplLmNh
bGwodGhpcyk6bnVsbH1maW5hbGx5e2lmKHRoaXMud3JhcHBlckluaXREYXRhW25dPT09aS5PQlNF
UlZFRF9FUlJPUil0cnl7dGhpcy5pbml0aWFsaXplQWxsKG4rMSl9Y2F0Y2gobyl7fX19fSxjbG9z
ZUFsbDpmdW5jdGlvbihlKXt0aGlzLmlzSW5UcmFuc2FjdGlvbigpP3ZvaWQgMDpyKCIyOCIpO2Zv
cih2YXIgdD10aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnMsbj1lO248dC5sZW5ndGg7bisrKXt2YXIg
byxhPXRbbl0sdT10aGlzLndyYXBwZXJJbml0RGF0YVtuXTt0cnl7bz0hMCx1IT09aS5PQlNFUlZF
RF9FUlJPUiYmYS5jbG9zZSYmYS5jbG9zZS5jYWxsKHRoaXMsdSksbz0hMX1maW5hbGx5e2lmKG8p
dHJ5e3RoaXMuY2xvc2VBbGwobisxKX1jYXRjaChzKXt9fX10aGlzLndyYXBwZXJJbml0RGF0YS5s
ZW5ndGg9MH19KSxpPXtNaXhpbjpvLE9CU0VSVkVEX0VSUk9SOnt9fTtlLmV4cG9ydHM9aX0sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDEpLG89ZnVuY3Rpb24oZSl7dmFyIHQs
bj17fTtlIGluc3RhbmNlb2YgT2JqZWN0JiYhQXJyYXkuaXNBcnJheShlKT92b2lkIDA6cighMSk7
Zm9yKHQgaW4gZSllLmhhc093blByb3BlcnR5KHQpJiYoblt0XT10KTtyZXR1cm4gbn07ZS5leHBv
cnRzPW99LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3ZhciBuPXtvbkNsaWNrOiEwLG9uRG91
YmxlQ2xpY2s6ITAsb25Nb3VzZURvd246ITAsb25Nb3VzZU1vdmU6ITAsb25Nb3VzZVVwOiEwLG9u
Q2xpY2tDYXB0dXJlOiEwLG9uRG91YmxlQ2xpY2tDYXB0dXJlOiEwLG9uTW91c2VEb3duQ2FwdHVy
ZTohMCxvbk1vdXNlTW92ZUNhcHR1cmU6ITAsb25Nb3VzZVVwQ2FwdHVyZTohMH0scj17Z2V0SG9z
dFByb3BzOmZ1bmN0aW9uKGUsdCl7aWYoIXQuZGlzYWJsZWQpcmV0dXJuIHQ7dmFyIHI9e307Zm9y
KHZhciBvIGluIHQpIW5bb10mJnQuaGFzT3duUHJvcGVydHkobykmJihyW29dPXRbb10pO3JldHVy
biByfX07ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUsbSl8fChl
W21dPWgrKyxkW2VbbV1dPXt9KSxkW2VbbV1dfXZhciBvLGk9big0KSxhPW4oMTIpLHU9bigzOSks
cz1uKDE2NyksbD1uKDg2KSxjPW4oMTk4KSxwPW4oNTYpLGQ9e30sZj0hMSxoPTAsdj17dG9wQWJv
cnQ6ImFib3J0Iix0b3BBbmltYXRpb25FbmQ6YygiYW5pbWF0aW9uZW5kIil8fCJhbmltYXRpb25l
bmQiLHRvcEFuaW1hdGlvbkl0ZXJhdGlvbjpjKCJhbmltYXRpb25pdGVyYXRpb24iKXx8ImFuaW1h
dGlvbml0ZXJhdGlvbiIsdG9wQW5pbWF0aW9uU3RhcnQ6YygiYW5pbWF0aW9uc3RhcnQiKXx8ImFu
aW1hdGlvbnN0YXJ0Iix0b3BCbHVyOiJibHVyIix0b3BDYW5QbGF5OiJjYW5wbGF5Iix0b3BDYW5Q
bGF5VGhyb3VnaDoiY2FucGxheXRocm91Z2giLHRvcENoYW5nZToiY2hhbmdlIix0b3BDbGljazoi
Y2xpY2siLHRvcENvbXBvc2l0aW9uRW5kOiJjb21wb3NpdGlvbmVuZCIsdG9wQ29tcG9zaXRpb25T
dGFydDoiY29tcG9zaXRpb25zdGFydCIsdG9wQ29tcG9zaXRpb25VcGRhdGU6ImNvbXBvc2l0aW9u
dXBkYXRlIix0b3BDb250ZXh0TWVudToiY29udGV4dG1lbnUiLHRvcENvcHk6ImNvcHkiLHRvcEN1
dDoiY3V0Iix0b3BEb3VibGVDbGljazoiZGJsY2xpY2siLHRvcERyYWc6ImRyYWciLHRvcERyYWdF
bmQ6ImRyYWdlbmQiLHRvcERyYWdFbnRlcjoiZHJhZ2VudGVyIix0b3BEcmFnRXhpdDoiZHJhZ2V4
aXQiLHRvcERyYWdMZWF2ZToiZHJhZ2xlYXZlIix0b3BEcmFnT3ZlcjoiZHJhZ292ZXIiLHRvcERy
YWdTdGFydDoiZHJhZ3N0YXJ0Iix0b3BEcm9wOiJkcm9wIix0b3BEdXJhdGlvbkNoYW5nZToiZHVy
YXRpb25jaGFuZ2UiLHRvcEVtcHRpZWQ6ImVtcHRpZWQiLHRvcEVuY3J5cHRlZDoiZW5jcnlwdGVk
Iix0b3BFbmRlZDoiZW5kZWQiLHRvcEVycm9yOiJlcnJvciIsdG9wRm9jdXM6ImZvY3VzIix0b3BJ
bnB1dDoiaW5wdXQiLHRvcEtleURvd246ImtleWRvd24iLHRvcEtleVByZXNzOiJrZXlwcmVzcyIs
dG9wS2V5VXA6ImtleXVwIix0b3BMb2FkZWREYXRhOiJsb2FkZWRkYXRhIix0b3BMb2FkZWRNZXRh
ZGF0YToibG9hZGVkbWV0YWRhdGEiLHRvcExvYWRTdGFydDoibG9hZHN0YXJ0Iix0b3BNb3VzZURv
d246Im1vdXNlZG93biIsdG9wTW91c2VNb3ZlOiJtb3VzZW1vdmUiLHRvcE1vdXNlT3V0OiJtb3Vz
ZW91dCIsdG9wTW91c2VPdmVyOiJtb3VzZW92ZXIiLHRvcE1vdXNlVXA6Im1vdXNldXAiLHRvcFBh
c3RlOiJwYXN0ZSIsdG9wUGF1c2U6InBhdXNlIix0b3BQbGF5OiJwbGF5Iix0b3BQbGF5aW5nOiJw
bGF5aW5nIix0b3BQcm9ncmVzczoicHJvZ3Jlc3MiLHRvcFJhdGVDaGFuZ2U6InJhdGVjaGFuZ2Ui
LHRvcFNjcm9sbDoic2Nyb2xsIix0b3BTZWVrZWQ6InNlZWtlZCIsdG9wU2Vla2luZzoic2Vla2lu
ZyIsdG9wU2VsZWN0aW9uQ2hhbmdlOiJzZWxlY3Rpb25jaGFuZ2UiLHRvcFN0YWxsZWQ6InN0YWxs
ZWQiLHRvcFN1c3BlbmQ6InN1c3BlbmQiLHRvcFRleHRJbnB1dDoidGV4dElucHV0Iix0b3BUaW1l
VXBkYXRlOiJ0aW1ldXBkYXRlIix0b3BUb3VjaENhbmNlbDoidG91Y2hjYW5jZWwiLHRvcFRvdWNo
RW5kOiJ0b3VjaGVuZCIsdG9wVG91Y2hNb3ZlOiJ0b3VjaG1vdmUiLHRvcFRvdWNoU3RhcnQ6InRv
dWNoc3RhcnQiLHRvcFRyYW5zaXRpb25FbmQ6YygidHJhbnNpdGlvbmVuZCIpfHwidHJhbnNpdGlv
bmVuZCIsdG9wVm9sdW1lQ2hhbmdlOiJ2b2x1bWVjaGFuZ2UiLHRvcFdhaXRpbmc6IndhaXRpbmci
LHRvcFdoZWVsOiJ3aGVlbCJ9LG09Il9yZWFjdExpc3RlbmVyc0lEIitTdHJpbmcoTWF0aC5yYW5k
b20oKSkuc2xpY2UoMikseT1pKHt9LHMse1JlYWN0RXZlbnRMaXN0ZW5lcjpudWxsLGluamVjdGlv
bjp7aW5qZWN0UmVhY3RFdmVudExpc3RlbmVyOmZ1bmN0aW9uKGUpe2Uuc2V0SGFuZGxlVG9wTGV2
ZWwoeS5oYW5kbGVUb3BMZXZlbCkseS5SZWFjdEV2ZW50TGlzdGVuZXI9ZX19LHNldEVuYWJsZWQ6
ZnVuY3Rpb24oZSl7eS5SZWFjdEV2ZW50TGlzdGVuZXImJnkuUmVhY3RFdmVudExpc3RlbmVyLnNl
dEVuYWJsZWQoZSl9LGlzRW5hYmxlZDpmdW5jdGlvbigpe3JldHVybiEoIXkuUmVhY3RFdmVudExp
c3RlbmVyfHwheS5SZWFjdEV2ZW50TGlzdGVuZXIuaXNFbmFibGVkKCkpfSxsaXN0ZW5UbzpmdW5j
dGlvbihlLHQpe2Zvcih2YXIgbj10LG89cihuKSxpPXUucmVnaXN0cmF0aW9uTmFtZURlcGVuZGVu
Y2llc1tlXSxzPWEudG9wTGV2ZWxUeXBlcyxsPTA7bDxpLmxlbmd0aDtsKyspe3ZhciBjPWlbbF07
by5oYXNPd25Qcm9wZXJ0eShjKSYmb1tjXXx8KGM9PT1zLnRvcFdoZWVsP3AoIndoZWVsIik/eS5S
ZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudChzLnRvcFdoZWVsLCJ3aGVlbCIsbik6
cCgibW91c2V3aGVlbCIpP3kuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQocy50
b3BXaGVlbCwibW91c2V3aGVlbCIsbik6eS5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRF
dmVudChzLnRvcFdoZWVsLCJET01Nb3VzZVNjcm9sbCIsbik6Yz09PXMudG9wU2Nyb2xsP3AoInNj
cm9sbCIsITApP3kuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50KHMudG9wU2Ny
b2xsLCJzY3JvbGwiLG4pOnkuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQocy50
b3BTY3JvbGwsInNjcm9sbCIseS5SZWFjdEV2ZW50TGlzdGVuZXIuV0lORE9XX0hBTkRMRSk6Yz09
PXMudG9wRm9jdXN8fGM9PT1zLnRvcEJsdXI/KHAoImZvY3VzIiwhMCk/KHkuUmVhY3RFdmVudExp
c3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50KHMudG9wRm9jdXMsImZvY3VzIixuKSx5LlJlYWN0RXZl
bnRMaXN0ZW5lci50cmFwQ2FwdHVyZWRFdmVudChzLnRvcEJsdXIsImJsdXIiLG4pKTpwKCJmb2N1
c2luIikmJih5LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KHMudG9wRm9jdXMs
ImZvY3VzaW4iLG4pLHkuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQocy50b3BC
bHVyLCJmb2N1c291dCIsbikpLG9bcy50b3BCbHVyXT0hMCxvW3MudG9wRm9jdXNdPSEwKTp2Lmhh
c093blByb3BlcnR5KGMpJiZ5LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KGMs
dltjXSxuKSxvW2NdPSEwKX19LHRyYXBCdWJibGVkRXZlbnQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVy
biB5LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KGUsdCxuKX0sdHJhcENhcHR1
cmVkRXZlbnQ6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiB5LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFw
Q2FwdHVyZWRFdmVudChlLHQsbil9LHN1cHBvcnRzRXZlbnRQYWdlWFk6ZnVuY3Rpb24oKXtpZigh
ZG9jdW1lbnQuY3JlYXRlRXZlbnQpcmV0dXJuITE7dmFyIGU9ZG9jdW1lbnQuY3JlYXRlRXZlbnQo
Ik1vdXNlRXZlbnQiKTtyZXR1cm4gbnVsbCE9ZSYmInBhZ2VYImluIGV9LGVuc3VyZVNjcm9sbFZh
bHVlTW9uaXRvcmluZzpmdW5jdGlvbigpe2lmKHZvaWQgMD09PW8mJihvPXkuc3VwcG9ydHNFdmVu
dFBhZ2VYWSgpKSwhbyYmIWYpe3ZhciBlPWwucmVmcmVzaFNjcm9sbFZhbHVlczt5LlJlYWN0RXZl
bnRMaXN0ZW5lci5tb25pdG9yU2Nyb2xsVmFsdWUoZSksZj0hMH19fSk7ZS5leHBvcnRzPXl9LGZ1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5j
YWxsKHRoaXMsZSx0LG4scil9dmFyIG89bigyNCksaT1uKDg2KSxhPW4oNTQpLHU9e3NjcmVlblg6
bnVsbCxzY3JlZW5ZOm51bGwsY2xpZW50WDpudWxsLGNsaWVudFk6bnVsbCxjdHJsS2V5Om51bGws
c2hpZnRLZXk6bnVsbCxhbHRLZXk6bnVsbCxtZXRhS2V5Om51bGwsZ2V0TW9kaWZpZXJTdGF0ZTph
LGJ1dHRvbjpmdW5jdGlvbihlKXt2YXIgdD1lLmJ1dHRvbjtyZXR1cm4id2hpY2giaW4gZT90OjI9
PT10PzI6ND09PXQ/MTowfSxidXR0b25zOm51bGwscmVsYXRlZFRhcmdldDpmdW5jdGlvbihlKXty
ZXR1cm4gZS5yZWxhdGVkVGFyZ2V0fHwoZS5mcm9tRWxlbWVudD09PWUuc3JjRWxlbWVudD9lLnRv
RWxlbWVudDplLmZyb21FbGVtZW50KX0scGFnZVg6ZnVuY3Rpb24oZSl7cmV0dXJuInBhZ2VYImlu
IGU/ZS5wYWdlWDplLmNsaWVudFgraS5jdXJyZW50U2Nyb2xsTGVmdH0scGFnZVk6ZnVuY3Rpb24o
ZSl7cmV0dXJuInBhZ2VZImluIGU/ZS5wYWdlWTplLmNsaWVudFkraS5jdXJyZW50U2Nyb2xsVG9w
fX07by5hdWdtZW50Q2xhc3Mocix1KSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gbihlKXt2YXIgdD0iIitlLG49by5leGVjKHQpO2lmKCFuKXJldHVybiB0
O3ZhciByLGk9IiIsYT0wLHU9MDtmb3IoYT1uLmluZGV4O2E8dC5sZW5ndGg7YSsrKXtzd2l0Y2go
dC5jaGFyQ29kZUF0KGEpKXtjYXNlIDM0OnI9IiZxdW90OyI7YnJlYWs7Y2FzZSAzODpyPSImYW1w
OyI7YnJlYWs7Y2FzZSAzOTpyPSImI3gyNzsiO2JyZWFrO2Nhc2UgNjA6cj0iJmx0OyI7YnJlYWs7
Y2FzZSA2MjpyPSImZ3Q7IjticmVhaztkZWZhdWx0OmNvbnRpbnVlfXUhPT1hJiYoaSs9dC5zdWJz
dHJpbmcodSxhKSksdT1hKzEsaSs9cn1yZXR1cm4gdSE9PWE/aSt0LnN1YnN0cmluZyh1LGEpOml9
ZnVuY3Rpb24gcihlKXtyZXR1cm4iYm9vbGVhbiI9PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9m
IGU/IiIrZTpuKGUpfXZhciBvPS9bIicmPD5dLztlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0Ijt2YXIgcixvPW4oNiksaT1uKDM4KSxhPS9eWyBcclxuXHRcZl0vLHU9Lzwo
IS0tfGxpbmt8bm9zY3JpcHR8bWV0YXxzY3JpcHR8c3R5bGUpWyBcclxuXHRcZlwvPl0vLHM9big1
MiksbD1zKGZ1bmN0aW9uKGUsdCl7aWYoZS5uYW1lc3BhY2VVUkkhPT1pLnN2Z3x8ImlubmVySFRN
TCJpbiBlKWUuaW5uZXJIVE1MPXQ7ZWxzZXtyPXJ8fGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRp
diIpLHIuaW5uZXJIVE1MPSI8c3ZnPiIrdCsiPC9zdmc+Ijtmb3IodmFyIG49ci5maXJzdENoaWxk
O24uZmlyc3RDaGlsZDspZS5hcHBlbmRDaGlsZChuLmZpcnN0Q2hpbGQpfX0pO2lmKG8uY2FuVXNl
RE9NKXt2YXIgYz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtjLmlubmVySFRNTD0iICIs
IiI9PT1jLmlubmVySFRNTCYmKGw9ZnVuY3Rpb24oZSx0KXtpZihlLnBhcmVudE5vZGUmJmUucGFy
ZW50Tm9kZS5yZXBsYWNlQ2hpbGQoZSxlKSxhLnRlc3QodCl8fCI8Ij09PXRbMF0mJnUudGVzdCh0
KSl7ZS5pbm5lckhUTUw9U3RyaW5nLmZyb21DaGFyQ29kZSg2NTI3OSkrdDt2YXIgbj1lLmZpcnN0
Q2hpbGQ7MT09PW4uZGF0YS5sZW5ndGg/ZS5yZW1vdmVDaGlsZChuKTpuLmRlbGV0ZURhdGEoMCwx
KX1lbHNlIGUuaW5uZXJIVE1MPXR9KSxjPW51bGx9ZS5leHBvcnRzPWx9LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2Rl
ZmF1bHQ6ZX19dC5fX2VzTW9kdWxlPSEwLHQuY29tcG9zZT10LmFwcGx5TWlkZGxld2FyZT10LmJp
bmRBY3Rpb25DcmVhdG9ycz10LmNvbWJpbmVSZWR1Y2Vycz10LmNyZWF0ZVN0b3JlPXZvaWQgMDt2
YXIgbz1uKDk3KSxpPXIobyksYT1uKDIwNCksdT1yKGEpLHM9bigyMDMpLGw9cihzKSxjPW4oMjAy
KSxwPXIoYyksZD1uKDk2KSxmPXIoZCksaD1uKDk4KTtyKGgpO3QuY3JlYXRlU3RvcmU9aS5kZWZh
dWx0LHQuY29tYmluZVJlZHVjZXJzPXUuZGVmYXVsdCx0LmJpbmRBY3Rpb25DcmVhdG9ycz1sLmRl
ZmF1bHQsdC5hcHBseU1pZGRsZXdhcmU9cC5kZWZhdWx0LHQuY29tcG9zZT1mLmRlZmF1bHR9LGZ1
bmN0aW9uKGUsdCxuKXt2YXIgcixvOyFmdW5jdGlvbigpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBu
KCl7Zm9yKHZhciBlPVtdLHQ9MDt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgcj1hcmd1bWVu
dHNbdF07aWYocil7dmFyIG89dHlwZW9mIHI7aWYoInN0cmluZyI9PT1vfHwibnVtYmVyIj09PW8p
ZS5wdXNoKHIpO2Vsc2UgaWYoQXJyYXkuaXNBcnJheShyKSllLnB1c2gobi5hcHBseShudWxsLHIp
KTtlbHNlIGlmKCJvYmplY3QiPT09bylmb3IodmFyIGEgaW4gcilpLmNhbGwocixhKSYmclthXSYm
ZS5wdXNoKGEpfX1yZXR1cm4gZS5qb2luKCIgIil9dmFyIGk9e30uaGFzT3duUHJvcGVydHk7InVu
ZGVmaW5lZCIhPXR5cGVvZiBlJiZlLmV4cG9ydHM/ZS5leHBvcnRzPW46KHI9W10sbz1mdW5jdGlv
bigpe3JldHVybiBufS5hcHBseSh0LHIpLCEodm9pZCAwIT09byYmKGUuZXhwb3J0cz1vKSkpfSgp
fSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIGU9PT10
PzAhPT1lfHwwIT09dHx8MS9lPT09MS90OmUhPT1lJiZ0IT09dH1mdW5jdGlvbiByKGUsdCl7aWYo
bihlLHQpKXJldHVybiEwO2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVsbD09PWV8fCJvYmplY3Qi
IT10eXBlb2YgdHx8bnVsbD09PXQpcmV0dXJuITE7dmFyIHI9T2JqZWN0LmtleXMoZSksaT1PYmpl
Y3Qua2V5cyh0KTtpZihyLmxlbmd0aCE9PWkubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgYT0wO2E8
ci5sZW5ndGg7YSsrKWlmKCFvLmNhbGwodCxyW2FdKXx8IW4oZVtyW2FdXSx0W3JbYV1dKSlyZXR1
cm4hMTtyZXR1cm4hMH12YXIgbz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O2UuZXhw
b3J0cz1yfSxmdW5jdGlvbihlLHQsbil7ZnVuY3Rpb24gcihlKXtpZighaShlKXx8ZC5jYWxsKGUp
IT1hKXJldHVybiExO3ZhciB0PW8oZSk7aWYobnVsbD09PXQpcmV0dXJuITA7dmFyIG49Yy5jYWxs
KHQsImNvbnN0cnVjdG9yIikmJnQuY29uc3RydWN0b3I7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9m
IG4mJm4gaW5zdGFuY2VvZiBuJiZsLmNhbGwobik9PXB9dmFyIG89bigxMTMpLGk9bigxMTUpLGE9
IltvYmplY3QgT2JqZWN0XSIsdT1GdW5jdGlvbi5wcm90b3R5cGUscz1PYmplY3QucHJvdG90eXBl
LGw9dS50b1N0cmluZyxjPXMuaGFzT3duUHJvcGVydHkscD1sLmNhbGwoT2JqZWN0KSxkPXMudG9T
dHJpbmc7ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbigpe3Rocm93IG5ldyBF
cnJvcigic2V0VGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9uIHIoKXt0aHJv
dyBuZXcgRXJyb3IoImNsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCIpfWZ1bmN0aW9u
IG8oZSl7aWYoYz09PXNldFRpbWVvdXQpcmV0dXJuIHNldFRpbWVvdXQoZSwwKTtpZigoYz09PW58
fCFjKSYmc2V0VGltZW91dClyZXR1cm4gYz1zZXRUaW1lb3V0LHNldFRpbWVvdXQoZSwwKTt0cnl7
cmV0dXJuIGMoZSwwKX1jYXRjaCh0KXt0cnl7cmV0dXJuIGMuY2FsbChudWxsLGUsMCl9Y2F0Y2go
dCl7cmV0dXJuIGMuY2FsbCh0aGlzLGUsMCl9fX1mdW5jdGlvbiBpKGUpe2lmKHA9PT1jbGVhclRp
bWVvdXQpcmV0dXJuIGNsZWFyVGltZW91dChlKTtpZigocD09PXJ8fCFwKSYmY2xlYXJUaW1lb3V0
KXJldHVybiBwPWNsZWFyVGltZW91dCxjbGVhclRpbWVvdXQoZSk7dHJ5e3JldHVybiBwKGUpfWNh
dGNoKHQpe3RyeXtyZXR1cm4gcC5jYWxsKG51bGwsZSl9Y2F0Y2godCl7cmV0dXJuIHAuY2FsbCh0
aGlzLGUpfX19ZnVuY3Rpb24gYSgpe3YmJmYmJih2PSExLGYubGVuZ3RoP2g9Zi5jb25jYXQoaCk6
bT0tMSxoLmxlbmd0aCYmdSgpKX1mdW5jdGlvbiB1KCl7aWYoIXYpe3ZhciBlPW8oYSk7dj0hMDtm
b3IodmFyIHQ9aC5sZW5ndGg7dDspe2ZvcihmPWgsaD1bXTsrK208dDspZiYmZlttXS5ydW4oKTtt
PS0xLHQ9aC5sZW5ndGh9Zj1udWxsLHY9ITEsaShlKX19ZnVuY3Rpb24gcyhlLHQpe3RoaXMuZnVu
PWUsdGhpcy5hcnJheT10fWZ1bmN0aW9uIGwoKXt9dmFyIGMscCxkPWUuZXhwb3J0cz17fTshZnVu
Y3Rpb24oKXt0cnl7Yz0iZnVuY3Rpb24iPT10eXBlb2Ygc2V0VGltZW91dD9zZXRUaW1lb3V0Om59
Y2F0Y2goZSl7Yz1ufXRyeXtwPSJmdW5jdGlvbiI9PXR5cGVvZiBjbGVhclRpbWVvdXQ/Y2xlYXJU
aW1lb3V0OnJ9Y2F0Y2goZSl7cD1yfX0oKTt2YXIgZixoPVtdLHY9ITEsbT0tMTtkLm5leHRUaWNr
PWZ1bmN0aW9uKGUpe3ZhciB0PW5ldyBBcnJheShhcmd1bWVudHMubGVuZ3RoLTEpO2lmKGFyZ3Vt
ZW50cy5sZW5ndGg+MSlmb3IodmFyIG49MTtuPGFyZ3VtZW50cy5sZW5ndGg7bisrKXRbbi0xXT1h
cmd1bWVudHNbbl07aC5wdXNoKG5ldyBzKGUsdCkpLDEhPT1oLmxlbmd0aHx8dnx8byh1KX0scy5w
cm90b3R5cGUucnVuPWZ1bmN0aW9uKCl7dGhpcy5mdW4uYXBwbHkobnVsbCx0aGlzLmFycmF5KX0s
ZC50aXRsZT0iYnJvd3NlciIsZC5icm93c2VyPSEwLGQuZW52PXt9LGQuYXJndj1bXSxkLnZlcnNp
b249IiIsZC52ZXJzaW9ucz17fSxkLm9uPWwsZC5hZGRMaXN0ZW5lcj1sLGQub25jZT1sLGQub2Zm
PWwsZC5yZW1vdmVMaXN0ZW5lcj1sLGQucmVtb3ZlQWxsTGlzdGVuZXJzPWwsZC5lbWl0PWwsZC5i
aW5kaW5nPWZ1bmN0aW9uKGUpe3Rocm93IG5ldyBFcnJvcigicHJvY2Vzcy5iaW5kaW5nIGlzIG5v
dCBzdXBwb3J0ZWQiKX0sZC5jd2Q9ZnVuY3Rpb24oKXtyZXR1cm4iLyJ9LGQuY2hkaXI9ZnVuY3Rp
b24oZSl7dGhyb3cgbmV3IEVycm9yKCJwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQiKX0s
ZC51bWFzaz1mdW5jdGlvbigpe3JldHVybiAwfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIEFycmF5LmlzQXJyYXkodCkmJih0PXRbMV0pLHQ/dC5u
ZXh0U2libGluZzplLmZpcnN0Q2hpbGR9ZnVuY3Rpb24gbyhlLHQsbil7Yy5pbnNlcnRUcmVlQmVm
b3JlKGUsdCxuKX1mdW5jdGlvbiBpKGUsdCxuKXtBcnJheS5pc0FycmF5KHQpP3UoZSx0WzBdLHRb
MV0sbik6bShlLHQsbil9ZnVuY3Rpb24gYShlLHQpe2lmKEFycmF5LmlzQXJyYXkodCkpe3ZhciBu
PXRbMV07dD10WzBdLHMoZSx0LG4pLGUucmVtb3ZlQ2hpbGQobil9ZS5yZW1vdmVDaGlsZCh0KX1m
dW5jdGlvbiB1KGUsdCxuLHIpe2Zvcih2YXIgbz10Ozspe3ZhciBpPW8ubmV4dFNpYmxpbmc7aWYo
bShlLG8sciksbz09PW4pYnJlYWs7bz1pfX1mdW5jdGlvbiBzKGUsdCxuKXtmb3IoOzspe3ZhciBy
PXQubmV4dFNpYmxpbmc7aWYocj09PW4pYnJlYWs7ZS5yZW1vdmVDaGlsZChyKX19ZnVuY3Rpb24g
bChlLHQsbil7dmFyIHI9ZS5wYXJlbnROb2RlLG89ZS5uZXh0U2libGluZztvPT09dD9uJiZtKHIs
ZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUobiksbyk6bj8odihvLG4pLHMocixvLHQpKTpzKHIsZSx0
KX12YXIgYz1uKDE3KSxwPW4oMTQyKSxkPW4oODIpLGY9KG4oNSksbig4KSxuKDUyKSksaD1uKDMx
KSx2PW4oOTUpLG09ZihmdW5jdGlvbihlLHQsbil7ZS5pbnNlcnRCZWZvcmUodCxuKX0pLHk9cC5k
YW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cCxnPXtkYW5nZXJvdXNseVJlcGxhY2VOb2Rl
V2l0aE1hcmt1cDp5LHJlcGxhY2VEZWxpbWl0ZWRUZXh0OmwscHJvY2Vzc1VwZGF0ZXM6ZnVuY3Rp
b24oZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHU9dFtuXTtzd2l0Y2godS50
eXBlKXtjYXNlIGQuSU5TRVJUX01BUktVUDpvKGUsdS5jb250ZW50LHIoZSx1LmFmdGVyTm9kZSkp
O2JyZWFrO2Nhc2UgZC5NT1ZFX0VYSVNUSU5HOmkoZSx1LmZyb21Ob2RlLHIoZSx1LmFmdGVyTm9k
ZSkpO2JyZWFrO2Nhc2UgZC5TRVRfTUFSS1VQOmgoZSx1LmNvbnRlbnQpO2JyZWFrO2Nhc2UgZC5U
RVhUX0NPTlRFTlQ6dihlLHUuY29udGVudCk7YnJlYWs7Y2FzZSBkLlJFTU9WRV9OT0RFOmEoZSx1
LmZyb21Ob2RlKX19fX07ZS5leHBvcnRzPWd9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO3Zh
ciBuPXtodG1sOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIixtYXRobWw6Imh0dHA6Ly93
d3cudzMub3JnLzE5OTgvTWF0aC9NYXRoTUwiLHN2ZzoiaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmcifTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KCl7aWYodSlmb3IodmFyIGUgaW4gcyl7dmFyIHQ9c1tlXSxuPXUuaW5kZXhPZihlKTtpZihuPi0x
P3ZvaWQgMDphKCI5NiIsZSksIWwucGx1Z2luc1tuXSl7dC5leHRyYWN0RXZlbnRzP3ZvaWQgMDph
KCI5NyIsZSksbC5wbHVnaW5zW25dPXQ7dmFyIHI9dC5ldmVudFR5cGVzO2Zvcih2YXIgaSBpbiBy
KW8ocltpXSx0LGkpP3ZvaWQgMDphKCI5OCIsaSxlKX19fWZ1bmN0aW9uIG8oZSx0LG4pe2wuZXZl
bnROYW1lRGlzcGF0Y2hDb25maWdzLmhhc093blByb3BlcnR5KG4pP2EoIjk5IixuKTp2b2lkIDAs
bC5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3Nbbl09ZTt2YXIgcj1lLnBoYXNlZFJlZ2lzdHJhdGlv
bk5hbWVzO2lmKHIpe2Zvcih2YXIgbyBpbiByKWlmKHIuaGFzT3duUHJvcGVydHkobykpe3ZhciB1
PXJbb107aSh1LHQsbil9cmV0dXJuITB9cmV0dXJuISFlLnJlZ2lzdHJhdGlvbk5hbWUmJihpKGUu
cmVnaXN0cmF0aW9uTmFtZSx0LG4pLCEwKX1mdW5jdGlvbiBpKGUsdCxuKXtsLnJlZ2lzdHJhdGlv
bk5hbWVNb2R1bGVzW2VdP2EoIjEwMCIsZSk6dm9pZCAwLGwucmVnaXN0cmF0aW9uTmFtZU1vZHVs
ZXNbZV09dCxsLnJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRlbmNpZXNbZV09dC5ldmVudFR5cGVzW25d
LmRlcGVuZGVuY2llczsKLX12YXIgYT1uKDIpLHU9KG4oMSksbnVsbCkscz17fSxsPXtwbHVnaW5z
OltdLGV2ZW50TmFtZURpc3BhdGNoQ29uZmlnczp7fSxyZWdpc3RyYXRpb25OYW1lTW9kdWxlczp7
fSxyZWdpc3RyYXRpb25OYW1lRGVwZW5kZW5jaWVzOnt9LHBvc3NpYmxlUmVnaXN0cmF0aW9uTmFt
ZXM6bnVsbCxpbmplY3RFdmVudFBsdWdpbk9yZGVyOmZ1bmN0aW9uKGUpe3U/YSgiMTAxIik6dm9p
ZCAwLHU9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZSkscigpfSxpbmplY3RFdmVudFBsdWdp
bnNCeU5hbWU6ZnVuY3Rpb24oZSl7dmFyIHQ9ITE7Zm9yKHZhciBuIGluIGUpaWYoZS5oYXNPd25Q
cm9wZXJ0eShuKSl7dmFyIG89ZVtuXTtzLmhhc093blByb3BlcnR5KG4pJiZzW25dPT09b3x8KHNb
bl0/YSgiMTAyIixuKTp2b2lkIDAsc1tuXT1vLHQ9ITApfXQmJnIoKX0sZ2V0UGx1Z2luTW9kdWxl
Rm9yRXZlbnQ6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5kaXNwYXRjaENvbmZpZztpZih0LnJlZ2lzdHJh
dGlvbk5hbWUpcmV0dXJuIGwucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbdC5yZWdpc3RyYXRpb25O
YW1lXXx8bnVsbDtmb3IodmFyIG4gaW4gdC5waGFzZWRSZWdpc3RyYXRpb25OYW1lcylpZih0LnBo
YXNlZFJlZ2lzdHJhdGlvbk5hbWVzLmhhc093blByb3BlcnR5KG4pKXt2YXIgcj1sLnJlZ2lzdHJh
dGlvbk5hbWVNb2R1bGVzW3QucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXNbbl1dO2lmKHIpcmV0dXJu
IHJ9cmV0dXJuIG51bGx9LF9yZXNldEV2ZW50UGx1Z2luczpmdW5jdGlvbigpe3U9bnVsbDtmb3Io
dmFyIGUgaW4gcylzLmhhc093blByb3BlcnR5KGUpJiZkZWxldGUgc1tlXTtsLnBsdWdpbnMubGVu
Z3RoPTA7dmFyIHQ9bC5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3M7Zm9yKHZhciBuIGluIHQpdC5o
YXNPd25Qcm9wZXJ0eShuKSYmZGVsZXRlIHRbbl07dmFyIHI9bC5yZWdpc3RyYXRpb25OYW1lTW9k
dWxlcztmb3IodmFyIG8gaW4gcilyLmhhc093blByb3BlcnR5KG8pJiZkZWxldGUgcltvXX19O2Uu
ZXhwb3J0cz1sfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0
dXJuIGU9PT1nLnRvcE1vdXNlVXB8fGU9PT1nLnRvcFRvdWNoRW5kfHxlPT09Zy50b3BUb3VjaENh
bmNlbH1mdW5jdGlvbiBvKGUpe3JldHVybiBlPT09Zy50b3BNb3VzZU1vdmV8fGU9PT1nLnRvcFRv
dWNoTW92ZX1mdW5jdGlvbiBpKGUpe3JldHVybiBlPT09Zy50b3BNb3VzZURvd258fGU9PT1nLnRv
cFRvdWNoU3RhcnR9ZnVuY3Rpb24gYShlLHQsbixyKXt2YXIgbz1lLnR5cGV8fCJ1bmtub3duLWV2
ZW50IjtlLmN1cnJlbnRUYXJnZXQ9Yi5nZXROb2RlRnJvbUluc3RhbmNlKHIpLHQ/bS5pbnZva2VH
dWFyZGVkQ2FsbGJhY2tXaXRoQ2F0Y2gobyxuLGUpOm0uaW52b2tlR3VhcmRlZENhbGxiYWNrKG8s
bixlKSxlLmN1cnJlbnRUYXJnZXQ9bnVsbH1mdW5jdGlvbiB1KGUsdCl7dmFyIG49ZS5fZGlzcGF0
Y2hMaXN0ZW5lcnMscj1lLl9kaXNwYXRjaEluc3RhbmNlcztpZihBcnJheS5pc0FycmF5KG4pKWZv
cih2YXIgbz0wO288bi5sZW5ndGgmJiFlLmlzUHJvcGFnYXRpb25TdG9wcGVkKCk7bysrKWEoZSx0
LG5bb10scltvXSk7ZWxzZSBuJiZhKGUsdCxuLHIpO2UuX2Rpc3BhdGNoTGlzdGVuZXJzPW51bGws
ZS5fZGlzcGF0Y2hJbnN0YW5jZXM9bnVsbH1mdW5jdGlvbiBzKGUpe3ZhciB0PWUuX2Rpc3BhdGNo
TGlzdGVuZXJzLG49ZS5fZGlzcGF0Y2hJbnN0YW5jZXM7aWYoQXJyYXkuaXNBcnJheSh0KSl7Zm9y
KHZhciByPTA7cjx0Lmxlbmd0aCYmIWUuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTtyKyspaWYodFty
XShlLG5bcl0pKXJldHVybiBuW3JdfWVsc2UgaWYodCYmdChlLG4pKXJldHVybiBuO3JldHVybiBu
dWxsfWZ1bmN0aW9uIGwoZSl7dmFyIHQ9cyhlKTtyZXR1cm4gZS5fZGlzcGF0Y2hJbnN0YW5jZXM9
bnVsbCxlLl9kaXNwYXRjaExpc3RlbmVycz1udWxsLHR9ZnVuY3Rpb24gYyhlKXt2YXIgdD1lLl9k
aXNwYXRjaExpc3RlbmVycyxuPWUuX2Rpc3BhdGNoSW5zdGFuY2VzO0FycmF5LmlzQXJyYXkodCk/
aCgiMTAzIik6dm9pZCAwLGUuY3VycmVudFRhcmdldD10P2IuZ2V0Tm9kZUZyb21JbnN0YW5jZShu
KTpudWxsO3ZhciByPXQ/dChlKTpudWxsO3JldHVybiBlLmN1cnJlbnRUYXJnZXQ9bnVsbCxlLl9k
aXNwYXRjaExpc3RlbmVycz1udWxsLGUuX2Rpc3BhdGNoSW5zdGFuY2VzPW51bGwscn1mdW5jdGlv
biBwKGUpe3JldHVybiEhZS5fZGlzcGF0Y2hMaXN0ZW5lcnN9dmFyIGQsZixoPW4oMiksdj1uKDEy
KSxtPW4oNDYpLHk9KG4oMSksbigzKSx7aW5qZWN0Q29tcG9uZW50VHJlZTpmdW5jdGlvbihlKXtk
PWV9LGluamVjdFRyZWVUcmF2ZXJzYWw6ZnVuY3Rpb24oZSl7Zj1lfX0pLGc9di50b3BMZXZlbFR5
cGVzLGI9e2lzRW5kaXNoOnIsaXNNb3ZlaXNoOm8saXNTdGFydGlzaDppLGV4ZWN1dGVEaXJlY3RE
aXNwYXRjaDpjLGV4ZWN1dGVEaXNwYXRjaGVzSW5PcmRlcjp1LGV4ZWN1dGVEaXNwYXRjaGVzSW5P
cmRlclN0b3BBdFRydWU6bCxoYXNEaXNwYXRjaGVzOnAsZ2V0SW5zdGFuY2VGcm9tTm9kZTpmdW5j
dGlvbihlKXtyZXR1cm4gZC5nZXRJbnN0YW5jZUZyb21Ob2RlKGUpfSxnZXROb2RlRnJvbUluc3Rh
bmNlOmZ1bmN0aW9uKGUpe3JldHVybiBkLmdldE5vZGVGcm9tSW5zdGFuY2UoZSl9LGlzQW5jZXN0
b3I6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZi5pc0FuY2VzdG9yKGUsdCl9LGdldExvd2VzdENvbW1v
bkFuY2VzdG9yOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGYuZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3Io
ZSx0KX0sZ2V0UGFyZW50SW5zdGFuY2U6ZnVuY3Rpb24oZSl7cmV0dXJuIGYuZ2V0UGFyZW50SW5z
dGFuY2UoZSl9LHRyYXZlcnNlVHdvUGhhc2U6ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBmLnRyYXZl
cnNlVHdvUGhhc2UoZSx0LG4pfSx0cmF2ZXJzZUVudGVyTGVhdmU6ZnVuY3Rpb24oZSx0LG4scixv
KXtyZXR1cm4gZi50cmF2ZXJzZUVudGVyTGVhdmUoZSx0LG4scixvKX0saW5qZWN0aW9uOnl9O2Uu
ZXhwb3J0cz1ifSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3ZhciB0
PS9bPTpdL2csbj17Ij0iOiI9MCIsIjoiOiI9MiJ9LHI9KCIiK2UpLnJlcGxhY2UodCxmdW5jdGlv
bihlKXtyZXR1cm4gbltlXX0pO3JldHVybiIkIityfWZ1bmN0aW9uIHIoZSl7dmFyIHQ9Lyg9MHw9
MikvZyxuPXsiPTAiOiI9IiwiPTIiOiI6In0scj0iLiI9PT1lWzBdJiYiJCI9PT1lWzFdP2Uuc3Vi
c3RyaW5nKDIpOmUuc3Vic3RyaW5nKDEpO3JldHVybigiIityKS5yZXBsYWNlKHQsZnVuY3Rpb24o
ZSl7cmV0dXJuIG5bZV19KX12YXIgbz17ZXNjYXBlOm4sdW5lc2NhcGU6cn07ZS5leHBvcnRzPW99
LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtudWxsIT1lLmNoZWNr
ZWRMaW5rJiZudWxsIT1lLnZhbHVlTGluaz91KCI4NyIpOnZvaWQgMH1mdW5jdGlvbiBvKGUpe3Io
ZSksbnVsbCE9ZS52YWx1ZXx8bnVsbCE9ZS5vbkNoYW5nZT91KCI4OCIpOnZvaWQgMH1mdW5jdGlv
biBpKGUpe3IoZSksbnVsbCE9ZS5jaGVja2VkfHxudWxsIT1lLm9uQ2hhbmdlP3UoIjg5Iik6dm9p
ZCAwfWZ1bmN0aW9uIGEoZSl7aWYoZSl7dmFyIHQ9ZS5nZXROYW1lKCk7aWYodClyZXR1cm4iIENo
ZWNrIHRoZSByZW5kZXIgbWV0aG9kIG9mIGAiK3QrImAuIn1yZXR1cm4iIn12YXIgdT1uKDIpLHM9
big4NCksbD1uKDQ5KSxjPW4oNTApLHA9KG4oMSksbigzKSx7YnV0dG9uOiEwLGNoZWNrYm94OiEw
LGltYWdlOiEwLGhpZGRlbjohMCxyYWRpbzohMCxyZXNldDohMCxzdWJtaXQ6ITB9KSxkPXt2YWx1
ZTpmdW5jdGlvbihlLHQsbil7cmV0dXJuIWVbdF18fHBbZS50eXBlXXx8ZS5vbkNoYW5nZXx8ZS5y
ZWFkT25seXx8ZS5kaXNhYmxlZD9udWxsOm5ldyBFcnJvcigiWW91IHByb3ZpZGVkIGEgYHZhbHVl
YCBwcm9wIHRvIGEgZm9ybSBmaWVsZCB3aXRob3V0IGFuIGBvbkNoYW5nZWAgaGFuZGxlci4gVGhp
cyB3aWxsIHJlbmRlciBhIHJlYWQtb25seSBmaWVsZC4gSWYgdGhlIGZpZWxkIHNob3VsZCBiZSBt
dXRhYmxlIHVzZSBgZGVmYXVsdFZhbHVlYC4gT3RoZXJ3aXNlLCBzZXQgZWl0aGVyIGBvbkNoYW5n
ZWAgb3IgYHJlYWRPbmx5YC4iKX0sY2hlY2tlZDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIWVbdF18
fGUub25DaGFuZ2V8fGUucmVhZE9ubHl8fGUuZGlzYWJsZWQ/bnVsbDpuZXcgRXJyb3IoIllvdSBw
cm92aWRlZCBhIGBjaGVja2VkYCBwcm9wIHRvIGEgZm9ybSBmaWVsZCB3aXRob3V0IGFuIGBvbkNo
YW5nZWAgaGFuZGxlci4gVGhpcyB3aWxsIHJlbmRlciBhIHJlYWQtb25seSBmaWVsZC4gSWYgdGhl
IGZpZWxkIHNob3VsZCBiZSBtdXRhYmxlIHVzZSBgZGVmYXVsdENoZWNrZWRgLiBPdGhlcndpc2Us
IHNldCBlaXRoZXIgYG9uQ2hhbmdlYCBvciBgcmVhZE9ubHlgLiIpfSxvbkNoYW5nZTpzLmZ1bmN9
LGY9e30saD17Y2hlY2tQcm9wVHlwZXM6ZnVuY3Rpb24oZSx0LG4pe2Zvcih2YXIgciBpbiBkKXtp
ZihkLmhhc093blByb3BlcnR5KHIpKXZhciBvPWRbcl0odCxyLGUsbC5wcm9wLG51bGwsYyk7aWYo
byBpbnN0YW5jZW9mIEVycm9yJiYhKG8ubWVzc2FnZSBpbiBmKSl7ZltvLm1lc3NhZ2VdPSEwO2Eo
bil9fX0sZ2V0VmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGUudmFsdWVMaW5rPyhvKGUpLGUudmFs
dWVMaW5rLnZhbHVlKTplLnZhbHVlfSxnZXRDaGVja2VkOmZ1bmN0aW9uKGUpe3JldHVybiBlLmNo
ZWNrZWRMaW5rPyhpKGUpLGUuY2hlY2tlZExpbmsudmFsdWUpOmUuY2hlY2tlZH0sZXhlY3V0ZU9u
Q2hhbmdlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUudmFsdWVMaW5rPyhvKGUpLGUudmFsdWVMaW5r
LnJlcXVlc3RDaGFuZ2UodC50YXJnZXQudmFsdWUpKTplLmNoZWNrZWRMaW5rPyhpKGUpLGUuY2hl
Y2tlZExpbmsucmVxdWVzdENoYW5nZSh0LnRhcmdldC5jaGVja2VkKSk6ZS5vbkNoYW5nZT9lLm9u
Q2hhbmdlLmNhbGwodm9pZCAwLHQpOnZvaWQgMH19O2UuZXhwb3J0cz1ofSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4pe3RoaXMucHJvcHM9ZSx0aGlzLmNvbnRl
eHQ9dCx0aGlzLnJlZnM9YSx0aGlzLnVwZGF0ZXI9bnx8aX12YXIgbz1uKDIpLGk9big0NyksYT0o
big4OCksbigyMCkpO24oMSksbigzKTtyLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9uZW50PXt9LHIu
cHJvdG90eXBlLnNldFN0YXRlPWZ1bmN0aW9uKGUsdCl7Im9iamVjdCIhPXR5cGVvZiBlJiYiZnVu
Y3Rpb24iIT10eXBlb2YgZSYmbnVsbCE9ZT9vKCI4NSIpOnZvaWQgMCx0aGlzLnVwZGF0ZXIuZW5x
dWV1ZVNldFN0YXRlKHRoaXMsZSksdCYmdGhpcy51cGRhdGVyLmVucXVldWVDYWxsYmFjayh0aGlz
LHQsInNldFN0YXRlIil9LHIucHJvdG90eXBlLmZvcmNlVXBkYXRlPWZ1bmN0aW9uKGUpe3RoaXMu
dXBkYXRlci5lbnF1ZXVlRm9yY2VVcGRhdGUodGhpcyksZSYmdGhpcy51cGRhdGVyLmVucXVldWVD
YWxsYmFjayh0aGlzLGUsImZvcmNlVXBkYXRlIil9O2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO3ZhciByPW4oMiksbz0obigxKSwhMSksaT17cmVwbGFjZU5vZGVXaXRo
TWFya3VwOm51bGwscHJvY2Vzc0NoaWxkcmVuVXBkYXRlczpudWxsLGluamVjdGlvbjp7aW5qZWN0
RW52aXJvbm1lbnQ6ZnVuY3Rpb24oZSl7bz9yKCIxMDQiKTp2b2lkIDAsaS5yZXBsYWNlTm9kZVdp
dGhNYXJrdXA9ZS5yZXBsYWNlTm9kZVdpdGhNYXJrdXAsaS5wcm9jZXNzQ2hpbGRyZW5VcGRhdGVz
PWUucHJvY2Vzc0NoaWxkcmVuVXBkYXRlcyxvPSEwfX19O2UuZXhwb3J0cz1pfSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9RnVuY3Rpb24ucHJvdG90eXBl
LnRvU3RyaW5nLG49T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxyPVJlZ0V4cCgiXiIr
dC5jYWxsKG4pLnJlcGxhY2UoL1tcXF4kLiorPygpW1xde318XS9nLCJcXCQmIikucmVwbGFjZSgv
aGFzT3duUHJvcGVydHl8KGZ1bmN0aW9uKS4qPyg/PVxcXCgpfCBmb3IgLis/KD89XFxcXSkvZywi
JDEuKj8iKSsiJCIpO3RyeXt2YXIgbz10LmNhbGwoZSk7cmV0dXJuIHIudGVzdChvKX1jYXRjaChp
KXtyZXR1cm4hMX19ZnVuY3Rpb24gbyhlKXtyZXR1cm4iLiIrZX1mdW5jdGlvbiBpKGUpe3JldHVy
biBwYXJzZUludChlLnN1YnN0cigxKSwxMCl9ZnVuY3Rpb24gYShlKXtpZih3KXJldHVybiB5Lmdl
dChlKTt2YXIgdD1vKGUpO3JldHVybiBiW3RdfWZ1bmN0aW9uIHUoZSl7aWYodyl5LmRlbGV0ZShl
KTtlbHNle3ZhciB0PW8oZSk7ZGVsZXRlIGJbdF19fWZ1bmN0aW9uIHMoZSx0LG4pe3ZhciByPXtl
bGVtZW50OnQscGFyZW50SUQ6bix0ZXh0Om51bGwsY2hpbGRJRHM6W10saXNNb3VudGVkOiExLHVw
ZGF0ZUNvdW50OjB9O2lmKHcpeS5zZXQoZSxyKTtlbHNle3ZhciBpPW8oZSk7YltpXT1yfX1mdW5j
dGlvbiBsKGUpe2lmKHcpZy5hZGQoZSk7ZWxzZXt2YXIgdD1vKGUpO19bdF09ITB9fWZ1bmN0aW9u
IGMoZSl7aWYodylnLmRlbGV0ZShlKTtlbHNle3ZhciB0PW8oZSk7ZGVsZXRlIF9bdF19fWZ1bmN0
aW9uIHAoKXtyZXR1cm4gdz9BcnJheS5mcm9tKHkua2V5cygpKTpPYmplY3Qua2V5cyhiKS5tYXAo
aSl9ZnVuY3Rpb24gZCgpe3JldHVybiB3P0FycmF5LmZyb20oZy5rZXlzKCkpOk9iamVjdC5rZXlz
KF8pLm1hcChpKX1mdW5jdGlvbiBmKGUpe3ZhciB0PWEoZSk7aWYodCl7dmFyIG49dC5jaGlsZElE
czt1KGUpLG4uZm9yRWFjaChmKX19ZnVuY3Rpb24gaChlLHQsbil7cmV0dXJuIlxuICAgIGluICIr
ZSsodD8iIChhdCAiK3QuZmlsZU5hbWUucmVwbGFjZSgvXi4qW1xcXC9dLywiIikrIjoiK3QubGlu
ZU51bWJlcisiKSI6bj8iIChjcmVhdGVkIGJ5ICIrbisiKSI6IiIpfWZ1bmN0aW9uIHYoZSl7cmV0
dXJuIG51bGw9PWU/IiNlbXB0eSI6InN0cmluZyI9PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9m
IGU/IiN0ZXh0Ijoic3RyaW5nIj09dHlwZW9mIGUudHlwZT9lLnR5cGU6ZS50eXBlLmRpc3BsYXlO
YW1lfHxlLnR5cGUubmFtZXx8IlVua25vd24ifWZ1bmN0aW9uIG0oZSl7dmFyIHQsbj1QLmdldERp
c3BsYXlOYW1lKGUpLHI9UC5nZXRFbGVtZW50KGUpLG89UC5nZXRPd25lcklEKGUpO3JldHVybiBv
JiYodD1QLmdldERpc3BsYXlOYW1lKG8pKSxoKG4sciYmci5fc291cmNlLHQpfXZhciB5LGcsYixf
LEM9bigyKSxFPW4oMTYpLHc9KG4oMSksbigzKSwiZnVuY3Rpb24iPT10eXBlb2YgQXJyYXkuZnJv
bSYmImZ1bmN0aW9uIj09dHlwZW9mIE1hcCYmcihNYXApJiZudWxsIT1NYXAucHJvdG90eXBlJiYi
ZnVuY3Rpb24iPT10eXBlb2YgTWFwLnByb3RvdHlwZS5rZXlzJiZyKE1hcC5wcm90b3R5cGUua2V5
cykmJiJmdW5jdGlvbiI9PXR5cGVvZiBTZXQmJnIoU2V0KSYmbnVsbCE9U2V0LnByb3RvdHlwZSYm
ImZ1bmN0aW9uIj09dHlwZW9mIFNldC5wcm90b3R5cGUua2V5cyYmcihTZXQucHJvdG90eXBlLmtl
eXMpKTt3Pyh5PW5ldyBNYXAsZz1uZXcgU2V0KTooYj17fSxfPXt9KTt2YXIgVD1bXSxQPXtvblNl
dENoaWxkcmVuOmZ1bmN0aW9uKGUsdCl7dmFyIG49YShlKTtuLmNoaWxkSURzPXQ7Zm9yKHZhciBy
PTA7cjx0Lmxlbmd0aDtyKyspe3ZhciBvPXRbcl0saT1hKG8pO2k/dm9pZCAwOkMoIjE0MCIpLG51
bGw9PWkuY2hpbGRJRHMmJiJvYmplY3QiPT10eXBlb2YgaS5lbGVtZW50JiZudWxsIT1pLmVsZW1l
bnQ/QygiMTQxIik6dm9pZCAwLGkuaXNNb3VudGVkP3ZvaWQgMDpDKCI3MSIpLG51bGw9PWkucGFy
ZW50SUQmJihpLnBhcmVudElEPWUpLGkucGFyZW50SUQhPT1lP0MoIjE0MiIsbyxpLnBhcmVudElE
LGUpOnZvaWQgMH19LG9uQmVmb3JlTW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4pe3MoZSx0
LG4pfSxvbkJlZm9yZVVwZGF0ZUNvbXBvbmVudDpmdW5jdGlvbihlLHQpe3ZhciBuPWEoZSk7biYm
bi5pc01vdW50ZWQmJihuLmVsZW1lbnQ9dCl9LG9uTW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSl7
dmFyIHQ9YShlKTt0LmlzTW91bnRlZD0hMDt2YXIgbj0wPT09dC5wYXJlbnRJRDtuJiZsKGUpfSxv
blVwZGF0ZUNvbXBvbmVudDpmdW5jdGlvbihlKXt2YXIgdD1hKGUpO3QmJnQuaXNNb3VudGVkJiZ0
LnVwZGF0ZUNvdW50Kyt9LG9uVW5tb3VudENvbXBvbmVudDpmdW5jdGlvbihlKXt2YXIgdD1hKGUp
O2lmKHQpe3QuaXNNb3VudGVkPSExO3ZhciBuPTA9PT10LnBhcmVudElEO24mJmMoZSl9VC5wdXNo
KGUpfSxwdXJnZVVubW91bnRlZENvbXBvbmVudHM6ZnVuY3Rpb24oKXtpZighUC5fcHJldmVudFB1
cmdpbmcpe2Zvcih2YXIgZT0wO2U8VC5sZW5ndGg7ZSsrKXt2YXIgdD1UW2VdO2YodCl9VC5sZW5n
dGg9MH19LGlzTW91bnRlZDpmdW5jdGlvbihlKXt2YXIgdD1hKGUpO3JldHVybiEhdCYmdC5pc01v
dW50ZWR9LGdldEN1cnJlbnRTdGFja0FkZGVuZHVtOmZ1bmN0aW9uKGUpe3ZhciB0PSIiO2lmKGUp
e3ZhciBuPWUudHlwZSxyPSJmdW5jdGlvbiI9PXR5cGVvZiBuP24uZGlzcGxheU5hbWV8fG4ubmFt
ZTpuLG89ZS5fb3duZXI7dCs9aChyfHwiVW5rbm93biIsZS5fc291cmNlLG8mJm8uZ2V0TmFtZSgp
KX12YXIgaT1FLmN1cnJlbnQsYT1pJiZpLl9kZWJ1Z0lEO3JldHVybiB0Kz1QLmdldFN0YWNrQWRk
ZW5kdW1CeUlEKGEpfSxnZXRTdGFja0FkZGVuZHVtQnlJRDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9
IiI7ZTspdCs9bShlKSxlPVAuZ2V0UGFyZW50SUQoZSk7cmV0dXJuIHR9LGdldENoaWxkSURzOmZ1
bmN0aW9uKGUpe3ZhciB0PWEoZSk7cmV0dXJuIHQ/dC5jaGlsZElEczpbXX0sZ2V0RGlzcGxheU5h
bWU6ZnVuY3Rpb24oZSl7dmFyIHQ9UC5nZXRFbGVtZW50KGUpO3JldHVybiB0P3YodCk6bnVsbH0s
Z2V0RWxlbWVudDpmdW5jdGlvbihlKXt2YXIgdD1hKGUpO3JldHVybiB0P3QuZWxlbWVudDpudWxs
fSxnZXRPd25lcklEOmZ1bmN0aW9uKGUpe3ZhciB0PVAuZ2V0RWxlbWVudChlKTtyZXR1cm4gdCYm
dC5fb3duZXI/dC5fb3duZXIuX2RlYnVnSUQ6bnVsbH0sZ2V0UGFyZW50SUQ6ZnVuY3Rpb24oZSl7
dmFyIHQ9YShlKTtyZXR1cm4gdD90LnBhcmVudElEOm51bGx9LGdldFNvdXJjZTpmdW5jdGlvbihl
KXt2YXIgdD1hKGUpLG49dD90LmVsZW1lbnQ6bnVsbCxyPW51bGwhPW4/bi5fc291cmNlOm51bGw7
cmV0dXJuIHJ9LGdldFRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9UC5nZXRFbGVtZW50KGUpO3JldHVy
biJzdHJpbmciPT10eXBlb2YgdD90OiJudW1iZXIiPT10eXBlb2YgdD8iIit0Om51bGx9LGdldFVw
ZGF0ZUNvdW50OmZ1bmN0aW9uKGUpe3ZhciB0PWEoZSk7cmV0dXJuIHQ/dC51cGRhdGVDb3VudDow
fSxnZXRSZWdpc3RlcmVkSURzOnAsZ2V0Um9vdElEczpkfTtlLmV4cG9ydHM9UH0sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3RyeXtyZXR1cm4gdChuLHIp
fWNhdGNoKGkpe3JldHVybiB2b2lkKG51bGw9PT1vJiYobz1pKSl9fXZhciBvPW51bGwsaT17aW52
b2tlR3VhcmRlZENhbGxiYWNrOnIsaW52b2tlR3VhcmRlZENhbGxiYWNrV2l0aENhdGNoOnIscmV0
aHJvd0NhdWdodEVycm9yOmZ1bmN0aW9uKCl7aWYobyl7dmFyIGU9bzt0aHJvdyBvPW51bGwsZX19
fTtlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUs
dCl7fXZhciBvPShuKDMpLHtpc01vdW50ZWQ6ZnVuY3Rpb24oZSl7cmV0dXJuITF9LGVucXVldWVD
YWxsYmFjazpmdW5jdGlvbihlLHQpe30sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKGUpe3Io
ZSwiZm9yY2VVcGRhdGUiKX0sZW5xdWV1ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbihlLHQpe3IoZSwi
cmVwbGFjZVN0YXRlIil9LGVucXVldWVTZXRTdGF0ZTpmdW5jdGlvbihlLHQpe3IoZSwic2V0U3Rh
dGUiKX19KTtlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj17
fTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDI2KSxv
PXIoe3Byb3A6bnVsbCxjb250ZXh0Om51bGwsY2hpbGRDb250ZXh0Om51bGx9KTtlLmV4cG9ydHM9
b30sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49IlNFQ1JFVF9ET19OT1RfUEFTU19U
SElTX09SX1lPVV9XSUxMX0JFX0ZJUkVEIjtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3MuZW5xdWV1ZVVwZGF0ZShlKX1mdW5jdGlvbiBvKGUp
e3ZhciB0PXR5cGVvZiBlO2lmKCJvYmplY3QiIT09dClyZXR1cm4gdDt2YXIgbj1lLmNvbnN0cnVj
dG9yJiZlLmNvbnN0cnVjdG9yLm5hbWV8fHQscj1PYmplY3Qua2V5cyhlKTtyZXR1cm4gci5sZW5n
dGg+MCYmci5sZW5ndGg8MjA/bisiIChrZXlzOiAiK3Iuam9pbigiLCAiKSsiKSI6bn1mdW5jdGlv
biBpKGUsdCl7dmFyIG49dS5nZXQoZSk7aWYoIW4pe3JldHVybiBudWxsfXJldHVybiBufXZhciBh
PW4oMiksdT0obigxNiksbigyMykpLHM9KG4oOCksbigxMCkpLGw9KG4oMSksbigzKSx7aXNNb3Vu
dGVkOmZ1bmN0aW9uKGUpe3ZhciB0PXUuZ2V0KGUpO3JldHVybiEhdCYmISF0Ll9yZW5kZXJlZENv
bXBvbmVudH0sZW5xdWV1ZUNhbGxiYWNrOmZ1bmN0aW9uKGUsdCxuKXtsLnZhbGlkYXRlQ2FsbGJh
Y2sodCxuKTt2YXIgbz1pKGUpO3JldHVybiBvPyhvLl9wZW5kaW5nQ2FsbGJhY2tzP28uX3BlbmRp
bmdDYWxsYmFja3MucHVzaCh0KTpvLl9wZW5kaW5nQ2FsbGJhY2tzPVt0XSx2b2lkIHIobykpOm51
bGx9LGVucXVldWVDYWxsYmFja0ludGVybmFsOmZ1bmN0aW9uKGUsdCl7ZS5fcGVuZGluZ0NhbGxi
YWNrcz9lLl9wZW5kaW5nQ2FsbGJhY2tzLnB1c2godCk6ZS5fcGVuZGluZ0NhbGxiYWNrcz1bdF0s
cihlKX0sZW5xdWV1ZUZvcmNlVXBkYXRlOmZ1bmN0aW9uKGUpe3ZhciB0PWkoZSwiZm9yY2VVcGRh
dGUiKTt0JiYodC5fcGVuZGluZ0ZvcmNlVXBkYXRlPSEwLHIodCkpfSxlbnF1ZXVlUmVwbGFjZVN0
YXRlOmZ1bmN0aW9uKGUsdCl7dmFyIG49aShlLCJyZXBsYWNlU3RhdGUiKTtuJiYobi5fcGVuZGlu
Z1N0YXRlUXVldWU9W3RdLG4uX3BlbmRpbmdSZXBsYWNlU3RhdGU9ITAscihuKSl9LGVucXVldWVT
ZXRTdGF0ZTpmdW5jdGlvbihlLHQpe3ZhciBuPWkoZSwic2V0U3RhdGUiKTtpZihuKXt2YXIgbz1u
Ll9wZW5kaW5nU3RhdGVRdWV1ZXx8KG4uX3BlbmRpbmdTdGF0ZVF1ZXVlPVtdKTtvLnB1c2godCks
cihuKX19LGVucXVldWVFbGVtZW50SW50ZXJuYWw6ZnVuY3Rpb24oZSx0LG4pe2UuX3BlbmRpbmdF
bGVtZW50PXQsZS5fY29udGV4dD1uLHIoZSl9LHZhbGlkYXRlQ2FsbGJhY2s6ZnVuY3Rpb24oZSx0
KXtlJiYiZnVuY3Rpb24iIT10eXBlb2YgZT9hKCIxMjIiLHQsbyhlKSk6dm9pZCAwfX0pO2UuZXhw
b3J0cz1sfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj1mdW5jdGlvbihlKXtyZXR1
cm4idW5kZWZpbmVkIiE9dHlwZW9mIE1TQXBwJiZNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlv
bj9mdW5jdGlvbih0LG4scixvKXtNU0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbihmdW5jdGlv
bigpe3JldHVybiBlKHQsbixyLG8pfSl9OmV9O2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQpeyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3ZhciB0LG49ZS5rZXlDb2RlO3JldHVybiJjaGFyQ29k
ZSJpbiBlPyh0PWUuY2hhckNvZGUsMD09PXQmJjEzPT09biYmKHQ9MTMpKTp0PW4sdD49MzJ8fDEz
PT09dD90OjB9ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IG4oZSl7dmFyIHQ9dGhpcyxuPXQubmF0aXZlRXZlbnQ7aWYobi5nZXRNb2RpZmllclN0YXRlKXJl
dHVybiBuLmdldE1vZGlmaWVyU3RhdGUoZSk7dmFyIHI9b1tlXTtyZXR1cm4hIXImJiEhbltyXX1m
dW5jdGlvbiByKGUpe3JldHVybiBufXZhciBvPXtBbHQ6ImFsdEtleSIsQ29udHJvbDoiY3RybEtl
eSIsTWV0YToibWV0YUtleSIsU2hpZnQ6InNoaWZ0S2V5In07ZS5leHBvcnRzPXJ9LGZ1bmN0aW9u
KGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7dmFyIHQ9ZS50YXJnZXR8fGUuc3JjRWxl
bWVudHx8d2luZG93O3JldHVybiB0LmNvcnJlc3BvbmRpbmdVc2VFbGVtZW50JiYodD10LmNvcnJl
c3BvbmRpbmdVc2VFbGVtZW50KSwzPT09dC5ub2RlVHlwZT90LnBhcmVudE5vZGU6dH1lLmV4cG9y
dHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7aWYoIWku
Y2FuVXNlRE9NfHx0JiYhKCJhZGRFdmVudExpc3RlbmVyImluIGRvY3VtZW50KSlyZXR1cm4hMTt2
YXIgbj0ib24iK2Uscj1uIGluIGRvY3VtZW50O2lmKCFyKXt2YXIgYT1kb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTthLnNldEF0dHJpYnV0ZShuLCJyZXR1cm47Iikscj0iZnVuY3Rpb24iPT10
eXBlb2YgYVtuXX1yZXR1cm4hciYmbyYmIndoZWVsIj09PWUmJihyPWRvY3VtZW50LmltcGxlbWVu
dGF0aW9uLmhhc0ZlYXR1cmUoIkV2ZW50cy53aGVlbCIsIjMuMCIpKSxyfXZhciBvLGk9big2KTtp
LmNhblVzZURPTSYmKG89ZG9jdW1lbnQuaW1wbGVtZW50YXRpb24mJmRvY3VtZW50LmltcGxlbWVu
dGF0aW9uLmhhc0ZlYXR1cmUmJmRvY3VtZW50LmltcGxlbWVudGF0aW9uLmhhc0ZlYXR1cmUoIiIs
IiIpIT09ITApLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biBuKGUsdCl7dmFyIG49bnVsbD09PWV8fGU9PT0hMSxyPW51bGw9PT10fHx0PT09ITE7aWYobnx8
cilyZXR1cm4gbj09PXI7dmFyIG89dHlwZW9mIGUsaT10eXBlb2YgdDtyZXR1cm4ic3RyaW5nIj09
PW98fCJudW1iZXIiPT09bz8ic3RyaW5nIj09PWl8fCJudW1iZXIiPT09aToib2JqZWN0Ij09PWkm
JmUudHlwZT09PXQudHlwZSYmZS5rZXk9PT10LmtleX1lLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIGUmJiJvYmplY3QiPT10eXBl
b2YgZSYmbnVsbCE9ZS5rZXk/bC5lc2NhcGUoZS5rZXkpOnQudG9TdHJpbmcoMzYpfWZ1bmN0aW9u
IG8oZSx0LG4saSl7dmFyIGQ9dHlwZW9mIGU7aWYoInVuZGVmaW5lZCIhPT1kJiYiYm9vbGVhbiIh
PT1kfHwoZT1udWxsKSxudWxsPT09ZXx8InN0cmluZyI9PT1kfHwibnVtYmVyIj09PWR8fHUuaXNW
YWxpZEVsZW1lbnQoZSkpcmV0dXJuIG4oaSxlLCIiPT09dD9jK3IoZSwwKTp0KSwxO3ZhciBmLGgs
dj0wLG09IiI9PT10P2M6dCtwO2lmKEFycmF5LmlzQXJyYXkoZSkpZm9yKHZhciB5PTA7eTxlLmxl
bmd0aDt5KyspZj1lW3ldLGg9bStyKGYseSksdis9byhmLGgsbixpKTtlbHNle3ZhciBnPXMoZSk7
aWYoZyl7dmFyIGIsXz1nLmNhbGwoZSk7aWYoZyE9PWUuZW50cmllcylmb3IodmFyIEM9MDshKGI9
Xy5uZXh0KCkpLmRvbmU7KWY9Yi52YWx1ZSxoPW0rcihmLEMrKyksdis9byhmLGgsbixpKTtlbHNl
IGZvcig7IShiPV8ubmV4dCgpKS5kb25lOyl7dmFyIEU9Yi52YWx1ZTtFJiYoZj1FWzFdLGg9bSts
LmVzY2FwZShFWzBdKStwK3IoZiwwKSx2Kz1vKGYsaCxuLGkpKX19ZWxzZSBpZigib2JqZWN0Ij09
PWQpe3ZhciB3PSIiLFQ9U3RyaW5nKGUpO2EoIjMxIiwiW29iamVjdCBPYmplY3RdIj09PVQ/Im9i
amVjdCB3aXRoIGtleXMgeyIrT2JqZWN0LmtleXMoZSkuam9pbigiLCAiKSsifSI6VCx3KX19cmV0
dXJuIHZ9ZnVuY3Rpb24gaShlLHQsbil7cmV0dXJuIG51bGw9PWU/MDpvKGUsIiIsdCxuKX12YXIg
YT1uKDIpLHU9KG4oMTYpLG4oOSkpLHM9big5MSksbD0obigxKSxuKDQxKSksYz0obigzKSwiLiIp
LHA9IjoiO2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPShu
KDQpLG4oNykpLG89KG4oMykscik7ZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7dmFyIHI9big3KSxvPXtsaXN0ZW46ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlLmFkZEV2
ZW50TGlzdGVuZXI/KGUuYWRkRXZlbnRMaXN0ZW5lcih0LG4sITEpLHtyZW1vdmU6ZnVuY3Rpb24o
KXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuLCExKX19KTplLmF0dGFjaEV2ZW50PyhlLmF0dGFj
aEV2ZW50KCJvbiIrdCxuKSx7cmVtb3ZlOmZ1bmN0aW9uKCl7ZS5kZXRhY2hFdmVudCgib24iK3Qs
bil9fSk6dm9pZCAwfSxjYXB0dXJlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZS5hZGRFdmVudExp
c3RlbmVyPyhlLmFkZEV2ZW50TGlzdGVuZXIodCxuLCEwKSx7cmVtb3ZlOmZ1bmN0aW9uKCl7ZS5y
ZW1vdmVFdmVudExpc3RlbmVyKHQsbiwhMCl9fSk6e3JlbW92ZTpyfX0scmVnaXN0ZXJEZWZhdWx0
OmZ1bmN0aW9uKCl7fX07ZS5leHBvcnRzPW99LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIG4oZSl7dHJ5e2UuZm9jdXMoKX1jYXRjaCh0KXt9fWUuZXhwb3J0cz1ufSxmdW5jdGlv
bihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKCl7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBk
b2N1bWVudClyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnR8fGRv
Y3VtZW50LmJvZHl9Y2F0Y2goZSl7cmV0dXJuIGRvY3VtZW50LmJvZHl9fWUuZXhwb3J0cz1ufSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19l
c01vZHVsZT9lOntkZWZhdWx0OmV9fXQuX19lc01vZHVsZT0hMCx0LmNvbm5lY3Q9dC5Qcm92aWRl
cj12b2lkIDA7dmFyIG89bigxMTcpLGk9cihvKSxhPW4oMTE4KSx1PXIoYSk7dC5Qcm92aWRlcj1p
LmRlZmF1bHQsdC5jb25uZWN0PXUuZGVmYXVsdH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
Ijt0Ll9fZXNNb2R1bGU9ITA7dmFyIHI9bigxMSk7dC5kZWZhdWx0PXIuUHJvcFR5cGVzLnNoYXBl
KHtzdWJzY3JpYmU6ci5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLGRpc3BhdGNoOnIuUHJvcFR5
cGVzLmZ1bmMuaXNSZXF1aXJlZCxnZXRTdGF0ZTpyLlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWR9
KX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXsidW5kZWZpbmVkIiE9
dHlwZW9mIGNvbnNvbGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBjb25zb2xlLmVycm9yJiZjb25zb2xl
LmVycm9yKGUpO3RyeXt0aHJvdyBuZXcgRXJyb3IoZSl9Y2F0Y2godCl7fX10Ll9fZXNNb2R1bGU9
ITAsdC5kZWZhdWx0PW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
KXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbyhlLHQpe2lm
KCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xh
c3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIGkoZSx0KXtpZighZSl0aHJvdyBuZXcgUmVmZXJl
bmNlRXJyb3IoInRoaXMgaGFzbid0IGJlZW4gaW5pdGlhbGlzZWQgLSBzdXBlcigpIGhhc24ndCBi
ZWVuIGNhbGxlZCIpO3JldHVybiF0fHwib2JqZWN0IiE9dHlwZW9mIHQmJiJmdW5jdGlvbiIhPXR5
cGVvZiB0P2U6dH1mdW5jdGlvbiBhKGUsdCl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIHQmJm51bGwh
PT10KXRocm93IG5ldyBUeXBlRXJyb3IoIlN1cGVyIGV4cHJlc3Npb24gbXVzdCBlaXRoZXIgYmUg
bnVsbCBvciBhIGZ1bmN0aW9uLCBub3QgIit0eXBlb2YgdCk7ZS5wcm90b3R5cGU9T2JqZWN0LmNy
ZWF0ZSh0JiZ0LnByb3RvdHlwZSx7Y29uc3RydWN0b3I6e3ZhbHVlOmUsZW51bWVyYWJsZTohMSx3
cml0YWJsZTohMCxjb25maWd1cmFibGU6ITB9fSksdCYmKE9iamVjdC5zZXRQcm90b3R5cGVPZj9P
YmplY3Quc2V0UHJvdG90eXBlT2YoZSx0KTplLl9fcHJvdG9fXz10KX1PYmplY3QuZGVmaW5lUHJv
cGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIHU9ZnVuY3Rpb24oKXtmdW5jdGlv
biBlKGUsdCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJh
YmxlPXIuZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndy
aXRhYmxlPSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0
aW9uKHQsbixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCkscz1u
KDExKSxsPXIocyksYz1uKDMzKSxwPXIoYyksZD1mdW5jdGlvbihlKXtmdW5jdGlvbiB0KCl7dmFy
IGUsbixyLGE7byh0aGlzLHQpO2Zvcih2YXIgdT1hcmd1bWVudHMubGVuZ3RoLHM9QXJyYXkodSks
bD0wO2w8dTtsKyspc1tsXT1hcmd1bWVudHNbbF07cmV0dXJuIG49cj1pKHRoaXMsKGU9dC5fX3By
b3RvX198fE9iamVjdC5nZXRQcm90b3R5cGVPZih0KSkuY2FsbC5hcHBseShlLFt0aGlzXS5jb25j
YXQocykpKSxyLnN0YXRlPXt0ZXh0OnIucHJvcHMudGV4dHx8IiJ9LHIuaGFuZGxlU3VibWl0PWZ1
bmN0aW9uKGUpe3ZhciB0PWUudGFyZ2V0LnZhbHVlLnRyaW0oKTsxMz09PWUud2hpY2gmJihyLnBy
b3BzLm9uU2F2ZSh0KSxyLnByb3BzLm5ld1RvZG8mJnIuc2V0U3RhdGUoe3RleHQ6IiJ9KSl9LHIu
aGFuZGxlQ2hhbmdlPWZ1bmN0aW9uKGUpe3Iuc2V0U3RhdGUoe3RleHQ6ZS50YXJnZXQudmFsdWV9
KX0sci5oYW5kbGVCbHVyPWZ1bmN0aW9uKGUpe3IucHJvcHMubmV3VG9kb3x8ci5wcm9wcy5vblNh
dmUoZS50YXJnZXQudmFsdWUpfSxhPW4saShyLGEpfXJldHVybiBhKHQsZSksdSh0LFt7a2V5OiJy
ZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJp
bnB1dCIse2NsYXNzTmFtZTooMCxwLmRlZmF1bHQpKHtlZGl0OnRoaXMucHJvcHMuZWRpdGluZywi
bmV3LXRvZG8iOnRoaXMucHJvcHMubmV3VG9kb30pLHR5cGU6InRleHQiLHBsYWNlaG9sZGVyOnRo
aXMucHJvcHMucGxhY2Vob2xkZXIsYXV0b0ZvY3VzOiJ0cnVlIix2YWx1ZTp0aGlzLnN0YXRlLnRl
eHQsb25CbHVyOnRoaXMuaGFuZGxlQmx1cixvbkNoYW5nZTp0aGlzLmhhbmRsZUNoYW5nZSxvbktl
eURvd246dGhpcy5oYW5kbGVTdWJtaXR9KX19XSksdH0ocy5Db21wb25lbnQpO2QucHJvcFR5cGVz
PXtvblNhdmU6cy5Qcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLHRleHQ6cy5Qcm9wVHlwZXMuc3Ry
aW5nLHBsYWNlaG9sZGVyOnMuUHJvcFR5cGVzLnN0cmluZyxlZGl0aW5nOnMuUHJvcFR5cGVzLmJv
b2wsbmV3VG9kbzpzLlByb3BUeXBlcy5ib29sfSx0LmRlZmF1bHQ9ZH0sZnVuY3Rpb24oZSx0KXsi
dXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZToh
MH0pO3QuQUREX1RPRE89IkFERF9UT0RPIix0LkRFTEVURV9UT0RPPSJERUxFVEVfVE9ETyIsdC5F
RElUX1RPRE89IkVESVRfVE9ETyIsdC5DT01QTEVURV9UT0RPPSJDT01QTEVURV9UT0RPIix0LkNP
TVBMRVRFX0FMTD0iQ09NUExFVEVfQUxMIix0LkNMRUFSX0NPTVBMRVRFRD0iQ0xFQVJfQ09NUExF
VEVEIn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7T2JqZWN0LmRlZmluZVByb3BlcnR5KHQs
Il9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3QuU0hPV19BTEw9InNob3dfYWxsIix0LlNIT1dfQ09N
UExFVEVEPSJzaG93X2NvbXBsZXRlZCIsdC5TSE9XX0FDVElWRT0ic2hvd19hY3RpdmUifSxmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt9ZnVuY3Rpb24gbyhlKXt0cnl7
cmV0dXJuIGUudGhlbn1jYXRjaCh0KXtyZXR1cm4geT10LGd9fWZ1bmN0aW9uIGkoZSx0KXt0cnl7
cmV0dXJuIGUodCl9Y2F0Y2gobil7cmV0dXJuIHk9bixnfX1mdW5jdGlvbiBhKGUsdCxuKXt0cnl7
ZSh0LG4pfWNhdGNoKHIpe3JldHVybiB5PXIsZ319ZnVuY3Rpb24gdShlKXtpZigib2JqZWN0IiE9
dHlwZW9mIHRoaXMpdGhyb3cgbmV3IFR5cGVFcnJvcigiUHJvbWlzZXMgbXVzdCBiZSBjb25zdHJ1
Y3RlZCB2aWEgbmV3Iik7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IFR5cGVFcnJv
cigibm90IGEgZnVuY3Rpb24iKTt0aGlzLl80NT0wLHRoaXMuXzgxPTAsdGhpcy5fNjU9bnVsbCx0
aGlzLl81ND1udWxsLGUhPT1yJiZ2KGUsdGhpcyl9ZnVuY3Rpb24gcyhlLHQsbil7cmV0dXJuIG5l
dyBlLmNvbnN0cnVjdG9yKGZ1bmN0aW9uKG8saSl7dmFyIGE9bmV3IHUocik7YS50aGVuKG8saSks
bChlLG5ldyBoKHQsbixhKSl9KX1mdW5jdGlvbiBsKGUsdCl7Zm9yKDszPT09ZS5fODE7KWU9ZS5f
NjU7cmV0dXJuIHUuXzEwJiZ1Ll8xMChlKSwwPT09ZS5fODE/MD09PWUuXzQ1PyhlLl80NT0xLHZv
aWQoZS5fNTQ9dCkpOjE9PT1lLl80NT8oZS5fNDU9Mix2b2lkKGUuXzU0PVtlLl81NCx0XSkpOnZv
aWQgZS5fNTQucHVzaCh0KTp2b2lkIGMoZSx0KX1mdW5jdGlvbiBjKGUsdCl7bShmdW5jdGlvbigp
e3ZhciBuPTE9PT1lLl84MT90Lm9uRnVsZmlsbGVkOnQub25SZWplY3RlZDtpZihudWxsPT09bily
ZXR1cm4gdm9pZCgxPT09ZS5fODE/cCh0LnByb21pc2UsZS5fNjUpOmQodC5wcm9taXNlLGUuXzY1
KSk7dmFyIHI9aShuLGUuXzY1KTtyPT09Zz9kKHQucHJvbWlzZSx5KTpwKHQucHJvbWlzZSxyKX0p
fWZ1bmN0aW9uIHAoZSx0KXtpZih0PT09ZSlyZXR1cm4gZChlLG5ldyBUeXBlRXJyb3IoIkEgcHJv
bWlzZSBjYW5ub3QgYmUgcmVzb2x2ZWQgd2l0aCBpdHNlbGYuIikpO2lmKHQmJigib2JqZWN0Ij09
dHlwZW9mIHR8fCJmdW5jdGlvbiI9PXR5cGVvZiB0KSl7dmFyIG49byh0KTtpZihuPT09ZylyZXR1
cm4gZChlLHkpO2lmKG49PT1lLnRoZW4mJnQgaW5zdGFuY2VvZiB1KXJldHVybiBlLl84MT0zLGUu
XzY1PXQsdm9pZCBmKGUpO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiBuKXJldHVybiB2b2lkIHYobi5i
aW5kKHQpLGUpfWUuXzgxPTEsZS5fNjU9dCxmKGUpfWZ1bmN0aW9uIGQoZSx0KXtlLl84MT0yLGUu
XzY1PXQsdS5fOTcmJnUuXzk3KGUsdCksZihlKX1mdW5jdGlvbiBmKGUpe2lmKDE9PT1lLl80NSYm
KGwoZSxlLl81NCksZS5fNTQ9bnVsbCksMj09PWUuXzQ1KXtmb3IodmFyIHQ9MDt0PGUuXzU0Lmxl
bmd0aDt0KyspbChlLGUuXzU0W3RdKTtlLl81ND1udWxsfX1mdW5jdGlvbiBoKGUsdCxuKXt0aGlz
Lm9uRnVsZmlsbGVkPSJmdW5jdGlvbiI9PXR5cGVvZiBlP2U6bnVsbCx0aGlzLm9uUmVqZWN0ZWQ9
ImZ1bmN0aW9uIj09dHlwZW9mIHQ/dDpudWxsLHRoaXMucHJvbWlzZT1ufWZ1bmN0aW9uIHYoZSx0
KXt2YXIgbj0hMSxyPWEoZSxmdW5jdGlvbihlKXtufHwobj0hMCxwKHQsZSkpfSxmdW5jdGlvbihl
KXtufHwobj0hMCxkKHQsZSkpfSk7bnx8ciE9PWd8fChuPSEwLGQodCx5KSl9dmFyIG09bigxMjIp
LHk9bnVsbCxnPXt9O2UuZXhwb3J0cz11LHUuXzEwPW51bGwsdS5fOTc9bnVsbCx1Ll82MT1yLHUu
cHJvdG90eXBlLnRoZW49ZnVuY3Rpb24oZSx0KXtpZih0aGlzLmNvbnN0cnVjdG9yIT09dSlyZXR1
cm4gcyh0aGlzLGUsdCk7dmFyIG49bmV3IHUocik7cmV0dXJuIGwodGhpcyxuZXcgaChlLHQsbikp
LG59fSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIGUr
dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSt0LnN1YnN0cmluZygxKX12YXIgcj17YW5pbWF0aW9u
SXRlcmF0aW9uQ291bnQ6ITAsYm9yZGVySW1hZ2VPdXRzZXQ6ITAsYm9yZGVySW1hZ2VTbGljZToh
MCxib3JkZXJJbWFnZVdpZHRoOiEwLGJveEZsZXg6ITAsYm94RmxleEdyb3VwOiEwLGJveE9yZGlu
YWxHcm91cDohMCxjb2x1bW5Db3VudDohMCxmbGV4OiEwLGZsZXhHcm93OiEwLGZsZXhQb3NpdGl2
ZTohMCxmbGV4U2hyaW5rOiEwLGZsZXhOZWdhdGl2ZTohMCxmbGV4T3JkZXI6ITAsZ3JpZFJvdzoh
MCxncmlkQ29sdW1uOiEwLGZvbnRXZWlnaHQ6ITAsbGluZUNsYW1wOiEwLGxpbmVIZWlnaHQ6ITAs
b3BhY2l0eTohMCxvcmRlcjohMCxvcnBoYW5zOiEwLHRhYlNpemU6ITAsd2lkb3dzOiEwLHpJbmRl
eDohMCx6b29tOiEwLGZpbGxPcGFjaXR5OiEwLGZsb29kT3BhY2l0eTohMCxzdG9wT3BhY2l0eToh
MCxzdHJva2VEYXNoYXJyYXk6ITAsc3Ryb2tlRGFzaG9mZnNldDohMCxzdHJva2VNaXRlcmxpbWl0
OiEwLHN0cm9rZU9wYWNpdHk6ITAsc3Ryb2tlV2lkdGg6ITB9LG89WyJXZWJraXQiLCJtcyIsIk1v
eiIsIk8iXTtPYmplY3Qua2V5cyhyKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe28uZm9yRWFjaChmdW5j
dGlvbih0KXtyW24odCxlKV09cltlXX0pfSk7dmFyIGk9e2JhY2tncm91bmQ6e2JhY2tncm91bmRB
dHRhY2htZW50OiEwLGJhY2tncm91bmRDb2xvcjohMCxiYWNrZ3JvdW5kSW1hZ2U6ITAsYmFja2dy
b3VuZFBvc2l0aW9uWDohMCxiYWNrZ3JvdW5kUG9zaXRpb25ZOiEwLGJhY2tncm91bmRSZXBlYXQ6
ITB9LGJhY2tncm91bmRQb3NpdGlvbjp7YmFja2dyb3VuZFBvc2l0aW9uWDohMCxiYWNrZ3JvdW5k
UG9zaXRpb25ZOiEwfSxib3JkZXI6e2JvcmRlcldpZHRoOiEwLGJvcmRlclN0eWxlOiEwLGJvcmRl
ckNvbG9yOiEwfSxib3JkZXJCb3R0b206e2JvcmRlckJvdHRvbVdpZHRoOiEwLGJvcmRlckJvdHRv
bVN0eWxlOiEwLGJvcmRlckJvdHRvbUNvbG9yOiEwfSxib3JkZXJMZWZ0Ontib3JkZXJMZWZ0V2lk
dGg6ITAsYm9yZGVyTGVmdFN0eWxlOiEwLGJvcmRlckxlZnRDb2xvcjohMH0sYm9yZGVyUmlnaHQ6
e2JvcmRlclJpZ2h0V2lkdGg6ITAsYm9yZGVyUmlnaHRTdHlsZTohMCxib3JkZXJSaWdodENvbG9y
OiEwfSxib3JkZXJUb3A6e2JvcmRlclRvcFdpZHRoOiEwLGJvcmRlclRvcFN0eWxlOiEwLGJvcmRl
clRvcENvbG9yOiEwfSxmb250Ontmb250U3R5bGU6ITAsZm9udFZhcmlhbnQ6ITAsZm9udFdlaWdo
dDohMCxmb250U2l6ZTohMCxsaW5lSGVpZ2h0OiEwLGZvbnRGYW1pbHk6ITB9LG91dGxpbmU6e291
dGxpbmVXaWR0aDohMCxvdXRsaW5lU3R5bGU6ITAsb3V0bGluZUNvbG9yOiEwfX0sYT17aXNVbml0
bGVzc051bWJlcjpyLHNob3J0aGFuZFByb3BlcnR5RXhwYW5zaW9uczppfTtlLmV4cG9ydHM9YX0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7dGhpcy5fY2FsbGJhY2tz
PW51bGwsdGhpcy5fY29udGV4dHM9bnVsbH12YXIgbz1uKDIpLGk9big0KSxhPW4oMTUpO24oMSk7
aShyLnByb3RvdHlwZSx7ZW5xdWV1ZTpmdW5jdGlvbihlLHQpe3RoaXMuX2NhbGxiYWNrcz10aGlz
Ll9jYWxsYmFja3N8fFtdLHRoaXMuX2NvbnRleHRzPXRoaXMuX2NvbnRleHRzfHxbXSx0aGlzLl9j
YWxsYmFja3MucHVzaChlKSx0aGlzLl9jb250ZXh0cy5wdXNoKHQpfSxub3RpZnlBbGw6ZnVuY3Rp
b24oKXt2YXIgZT10aGlzLl9jYWxsYmFja3MsdD10aGlzLl9jb250ZXh0cztpZihlKXtlLmxlbmd0
aCE9PXQubGVuZ3RoP28oIjI0Iik6dm9pZCAwLHRoaXMuX2NhbGxiYWNrcz1udWxsLHRoaXMuX2Nv
bnRleHRzPW51bGw7Zm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspZVtuXS5jYWxsKHRbbl0pO2Uu
bGVuZ3RoPTAsdC5sZW5ndGg9MH19LGNoZWNrcG9pbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5f
Y2FsbGJhY2tzP3RoaXMuX2NhbGxiYWNrcy5sZW5ndGg6MH0scm9sbGJhY2s6ZnVuY3Rpb24oZSl7
dGhpcy5fY2FsbGJhY2tzJiYodGhpcy5fY2FsbGJhY2tzLmxlbmd0aD1lLHRoaXMuX2NvbnRleHRz
Lmxlbmd0aD1lKX0scmVzZXQ6ZnVuY3Rpb24oKXt0aGlzLl9jYWxsYmFja3M9bnVsbCx0aGlzLl9j
b250ZXh0cz1udWxsfSxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7dGhpcy5yZXNldCgpfX0pLGEuYWRk
UG9vbGluZ1RvKHIpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSl7cmV0dXJuISFsLmhhc093blByb3BlcnR5KGUpfHwhcy5oYXNPd25Qcm9wZXJ0
eShlKSYmKHUudGVzdChlKT8obFtlXT0hMCwhMCk6KHNbZV09ITAsITEpKX1mdW5jdGlvbiBvKGUs
dCl7cmV0dXJuIG51bGw9PXR8fGUuaGFzQm9vbGVhblZhbHVlJiYhdHx8ZS5oYXNOdW1lcmljVmFs
dWUmJmlzTmFOKHQpfHxlLmhhc1Bvc2l0aXZlTnVtZXJpY1ZhbHVlJiZ0PDF8fGUuaGFzT3Zlcmxv
YWRlZEJvb2xlYW5WYWx1ZSYmdD09PSExfXZhciBpPW4oMTgpLGE9KG4oNSksbig4KSxuKDIwMCkp
LHU9KG4oMyksbmV3IFJlZ0V4cCgiXlsiK2kuQVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUisiXVsi
K2kuQVRUUklCVVRFX05BTUVfQ0hBUisiXSokIikpLHM9e30sbD17fSxjPXtjcmVhdGVNYXJrdXBG
b3JJRDpmdW5jdGlvbihlKXtyZXR1cm4gaS5JRF9BVFRSSUJVVEVfTkFNRSsiPSIrYShlKX0sc2V0
QXR0cmlidXRlRm9ySUQ6ZnVuY3Rpb24oZSx0KXtlLnNldEF0dHJpYnV0ZShpLklEX0FUVFJJQlVU
RV9OQU1FLHQpfSxjcmVhdGVNYXJrdXBGb3JSb290OmZ1bmN0aW9uKCl7cmV0dXJuIGkuUk9PVF9B
VFRSSUJVVEVfTkFNRSsnPSIiJ30sc2V0QXR0cmlidXRlRm9yUm9vdDpmdW5jdGlvbihlKXtlLnNl
dEF0dHJpYnV0ZShpLlJPT1RfQVRUUklCVVRFX05BTUUsIiIpfSxjcmVhdGVNYXJrdXBGb3JQcm9w
ZXJ0eTpmdW5jdGlvbihlLHQpe3ZhciBuPWkucHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShlKT9p
LnByb3BlcnRpZXNbZV06bnVsbDtpZihuKXtpZihvKG4sdCkpcmV0dXJuIiI7dmFyIHI9bi5hdHRy
aWJ1dGVOYW1lO3JldHVybiBuLmhhc0Jvb2xlYW5WYWx1ZXx8bi5oYXNPdmVybG9hZGVkQm9vbGVh
blZhbHVlJiZ0PT09ITA/cisnPSIiJzpyKyI9IithKHQpfXJldHVybiBpLmlzQ3VzdG9tQXR0cmli
dXRlKGUpP251bGw9PXQ/IiI6ZSsiPSIrYSh0KTpudWxsfSxjcmVhdGVNYXJrdXBGb3JDdXN0b21B
dHRyaWJ1dGU6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gcihlKSYmbnVsbCE9dD9lKyI9IithKHQpOiIi
fSxzZXRWYWx1ZUZvclByb3BlcnR5OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1pLnByb3BlcnRpZXMu
aGFzT3duUHJvcGVydHkodCk/aS5wcm9wZXJ0aWVzW3RdOm51bGw7aWYocil7dmFyIGE9ci5tdXRh
dGlvbk1ldGhvZDtpZihhKWEoZSxuKTtlbHNle2lmKG8ocixuKSlyZXR1cm4gdm9pZCB0aGlzLmRl
bGV0ZVZhbHVlRm9yUHJvcGVydHkoZSx0KTtpZihyLm11c3RVc2VQcm9wZXJ0eSllW3IucHJvcGVy
dHlOYW1lXT1uO2Vsc2V7dmFyIHU9ci5hdHRyaWJ1dGVOYW1lLHM9ci5hdHRyaWJ1dGVOYW1lc3Bh
Y2U7cz9lLnNldEF0dHJpYnV0ZU5TKHMsdSwiIituKTpyLmhhc0Jvb2xlYW5WYWx1ZXx8ci5oYXNP
dmVybG9hZGVkQm9vbGVhblZhbHVlJiZuPT09ITA/ZS5zZXRBdHRyaWJ1dGUodSwiIik6ZS5zZXRB
dHRyaWJ1dGUodSwiIituKX19fWVsc2UgaWYoaS5pc0N1c3RvbUF0dHJpYnV0ZSh0KSlyZXR1cm4g
dm9pZCBjLnNldFZhbHVlRm9yQXR0cmlidXRlKGUsdCxuKX0sc2V0VmFsdWVGb3JBdHRyaWJ1dGU6
ZnVuY3Rpb24oZSx0LG4pe2lmKHIodCkpe251bGw9PW4/ZS5yZW1vdmVBdHRyaWJ1dGUodCk6ZS5z
ZXRBdHRyaWJ1dGUodCwiIituKX19LGRlbGV0ZVZhbHVlRm9yQXR0cmlidXRlOmZ1bmN0aW9uKGUs
dCl7ZS5yZW1vdmVBdHRyaWJ1dGUodCl9LGRlbGV0ZVZhbHVlRm9yUHJvcGVydHk6ZnVuY3Rpb24o
ZSx0KXt2YXIgbj1pLnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkodCk/aS5wcm9wZXJ0aWVzW3Rd
Om51bGw7aWYobil7dmFyIHI9bi5tdXRhdGlvbk1ldGhvZDtpZihyKXIoZSx2b2lkIDApO2Vsc2Ug
aWYobi5tdXN0VXNlUHJvcGVydHkpe3ZhciBvPW4ucHJvcGVydHlOYW1lO24uaGFzQm9vbGVhblZh
bHVlP2Vbb109ITE6ZVtvXT0iIn1lbHNlIGUucmVtb3ZlQXR0cmlidXRlKG4uYXR0cmlidXRlTmFt
ZSl9ZWxzZSBpLmlzQ3VzdG9tQXR0cmlidXRlKHQpJiZlLnJlbW92ZUF0dHJpYnV0ZSh0KX19O2Uu
ZXhwb3J0cz1jfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0
dXJuKCIiK2UpLnJlcGxhY2UoXywiJCYvIil9ZnVuY3Rpb24gbyhlLHQpe3RoaXMuZnVuYz1lLHRo
aXMuY29udGV4dD10LHRoaXMuY291bnQ9MH1mdW5jdGlvbiBpKGUsdCxuKXt2YXIgcj1lLmZ1bmMs
bz1lLmNvbnRleHQ7ci5jYWxsKG8sdCxlLmNvdW50KyspfWZ1bmN0aW9uIGEoZSx0LG4pe2lmKG51
bGw9PWUpcmV0dXJuIGU7dmFyIHI9by5nZXRQb29sZWQodCxuKTt5KGUsaSxyKSxvLnJlbGVhc2Uo
cil9ZnVuY3Rpb24gdShlLHQsbixyKXt0aGlzLnJlc3VsdD1lLHRoaXMua2V5UHJlZml4PXQsdGhp
cy5mdW5jPW4sdGhpcy5jb250ZXh0PXIsdGhpcy5jb3VudD0wfWZ1bmN0aW9uIHMoZSx0LG4pe3Zh
ciBvPWUucmVzdWx0LGk9ZS5rZXlQcmVmaXgsYT1lLmZ1bmMsdT1lLmNvbnRleHQscz1hLmNhbGwo
dSx0LGUuY291bnQrKyk7QXJyYXkuaXNBcnJheShzKT9sKHMsbyxuLG0udGhhdFJldHVybnNBcmd1
bWVudCk6bnVsbCE9cyYmKHYuaXNWYWxpZEVsZW1lbnQocykmJihzPXYuY2xvbmVBbmRSZXBsYWNl
S2V5KHMsaSsoIXMua2V5fHx0JiZ0LmtleT09PXMua2V5PyIiOnIocy5rZXkpKyIvIikrbikpLG8u
cHVzaChzKSl9ZnVuY3Rpb24gbChlLHQsbixvLGkpe3ZhciBhPSIiO251bGwhPW4mJihhPXIobikr
Ii8iKTt2YXIgbD11LmdldFBvb2xlZCh0LGEsbyxpKTt5KGUscyxsKSx1LnJlbGVhc2UobCl9ZnVu
Y3Rpb24gYyhlLHQsbil7aWYobnVsbD09ZSlyZXR1cm4gZTt2YXIgcj1bXTtyZXR1cm4gbChlLHIs
bnVsbCx0LG4pLHJ9ZnVuY3Rpb24gcChlLHQsbil7cmV0dXJuIG51bGx9ZnVuY3Rpb24gZChlLHQp
e3JldHVybiB5KGUscCxudWxsKX1mdW5jdGlvbiBmKGUpe3ZhciB0PVtdO3JldHVybiBsKGUsdCxu
dWxsLG0udGhhdFJldHVybnNBcmd1bWVudCksdH12YXIgaD1uKDE1KSx2PW4oOSksbT1uKDcpLHk9
big1OCksZz1oLnR3b0FyZ3VtZW50UG9vbGVyLGI9aC5mb3VyQXJndW1lbnRQb29sZXIsXz0vXC8r
L2c7by5wcm90b3R5cGUuZGVzdHJ1Y3Rvcj1mdW5jdGlvbigpe3RoaXMuZnVuYz1udWxsLHRoaXMu
Y29udGV4dD1udWxsLHRoaXMuY291bnQ9MH0saC5hZGRQb29saW5nVG8obyxnKSx1LnByb3RvdHlw
ZS5kZXN0cnVjdG9yPWZ1bmN0aW9uKCl7dGhpcy5yZXN1bHQ9bnVsbCx0aGlzLmtleVByZWZpeD1u
dWxsLHRoaXMuZnVuYz1udWxsLHRoaXMuY29udGV4dD1udWxsLHRoaXMuY291bnQ9MH0saC5hZGRQ
b29saW5nVG8odSxiKTt2YXIgQz17Zm9yRWFjaDphLG1hcDpjLG1hcEludG9XaXRoS2V5UHJlZml4
SW50ZXJuYWw6bCxjb3VudDpkLHRvQXJyYXk6Zn07ZS5leHBvcnRzPUN9LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3ZhciBuPUUuaGFzT3duUHJvcGVydHkodCk/
RVt0XTpudWxsO1QuaGFzT3duUHJvcGVydHkodCkmJihuIT09Xy5PVkVSUklERV9CQVNFP3AoIjcz
Iix0KTp2b2lkIDApLGUmJihuIT09Xy5ERUZJTkVfTUFOWSYmbiE9PV8uREVGSU5FX01BTllfTUVS
R0VEP3AoIjc0Iix0KTp2b2lkIDApfWZ1bmN0aW9uIG8oZSx0KXtpZih0KXsiZnVuY3Rpb24iPT10
eXBlb2YgdD9wKCI3NSIpOnZvaWQgMCxoLmlzVmFsaWRFbGVtZW50KHQpP3AoIjc2Iik6dm9pZCAw
O3ZhciBuPWUucHJvdG90eXBlLG89bi5fX3JlYWN0QXV0b0JpbmRQYWlyczt0Lmhhc093blByb3Bl
cnR5KGIpJiZ3Lm1peGlucyhlLHQubWl4aW5zKTtmb3IodmFyIGkgaW4gdClpZih0Lmhhc093blBy
b3BlcnR5KGkpJiZpIT09Yil7dmFyIGE9dFtpXSxsPW4uaGFzT3duUHJvcGVydHkoaSk7aWYocihs
LGkpLHcuaGFzT3duUHJvcGVydHkoaSkpd1tpXShlLGEpO2Vsc2V7dmFyIGM9RS5oYXNPd25Qcm9w
ZXJ0eShpKSxkPSJmdW5jdGlvbiI9PXR5cGVvZiBhLGY9ZCYmIWMmJiFsJiZ0LmF1dG9iaW5kIT09
ITE7aWYoZilvLnB1c2goaSxhKSxuW2ldPWE7ZWxzZSBpZihsKXt2YXIgdj1FW2ldOyFjfHx2IT09
Xy5ERUZJTkVfTUFOWV9NRVJHRUQmJnYhPT1fLkRFRklORV9NQU5ZP3AoIjc3Iix2LGkpOnZvaWQg
MCx2PT09Xy5ERUZJTkVfTUFOWV9NRVJHRUQ/bltpXT11KG5baV0sYSk6dj09PV8uREVGSU5FX01B
TlkmJihuW2ldPXMobltpXSxhKSl9ZWxzZSBuW2ldPWF9fX1lbHNlO31mdW5jdGlvbiBpKGUsdCl7
aWYodClmb3IodmFyIG4gaW4gdCl7dmFyIHI9dFtuXTtpZih0Lmhhc093blByb3BlcnR5KG4pKXt2
YXIgbz1uIGluIHc7bz9wKCI3OCIsbik6dm9pZCAwO3ZhciBpPW4gaW4gZTtpP3AoIjc5IixuKTp2
b2lkIDAsZVtuXT1yfX19ZnVuY3Rpb24gYShlLHQpe2UmJnQmJiJvYmplY3QiPT10eXBlb2YgZSYm
Im9iamVjdCI9PXR5cGVvZiB0P3ZvaWQgMDpwKCI4MCIpO2Zvcih2YXIgbiBpbiB0KXQuaGFzT3du
UHJvcGVydHkobikmJih2b2lkIDAhPT1lW25dP3AoIjgxIixuKTp2b2lkIDAsZVtuXT10W25dKTty
ZXR1cm4gZX1mdW5jdGlvbiB1KGUsdCl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIG49ZS5hcHBseSh0
aGlzLGFyZ3VtZW50cykscj10LmFwcGx5KHRoaXMsYXJndW1lbnRzKTtpZihudWxsPT1uKXJldHVy
biByO2lmKG51bGw9PXIpcmV0dXJuIG47dmFyIG89e307cmV0dXJuIGEobyxuKSxhKG8sciksb319
ZnVuY3Rpb24gcyhlLHQpe3JldHVybiBmdW5jdGlvbigpe2UuYXBwbHkodGhpcyxhcmd1bWVudHMp
LHQuYXBwbHkodGhpcyxhcmd1bWVudHMpfX1mdW5jdGlvbiBsKGUsdCl7dmFyIG49dC5iaW5kKGUp
O3JldHVybiBufWZ1bmN0aW9uIGMoZSl7Zm9yKHZhciB0PWUuX19yZWFjdEF1dG9CaW5kUGFpcnMs
bj0wO248dC5sZW5ndGg7bis9Mil7dmFyIHI9dFtuXSxvPXRbbisxXTtlW3JdPWwoZSxvKX19dmFy
IHA9bigyKSxkPW4oNCksZj1uKDQzKSxoPW4oOSksdj0obig0OSksbig0OCksbig0NykpLG09bigy
MCkseT0obigxKSxuKDI2KSksZz1uKDE0KSxiPShuKDMpLGcoe21peGluczpudWxsfSkpLF89eSh7
REVGSU5FX09OQ0U6bnVsbCxERUZJTkVfTUFOWTpudWxsLE9WRVJSSURFX0JBU0U6bnVsbCxERUZJ
TkVfTUFOWV9NRVJHRUQ6bnVsbH0pLEM9W10sRT17bWl4aW5zOl8uREVGSU5FX01BTlksc3RhdGlj
czpfLkRFRklORV9NQU5ZLHByb3BUeXBlczpfLkRFRklORV9NQU5ZLGNvbnRleHRUeXBlczpfLkRF
RklORV9NQU5ZLGNoaWxkQ29udGV4dFR5cGVzOl8uREVGSU5FX01BTlksZ2V0RGVmYXVsdFByb3Bz
Ol8uREVGSU5FX01BTllfTUVSR0VELGdldEluaXRpYWxTdGF0ZTpfLkRFRklORV9NQU5ZX01FUkdF
RCxnZXRDaGlsZENvbnRleHQ6Xy5ERUZJTkVfTUFOWV9NRVJHRUQscmVuZGVyOl8uREVGSU5FX09O
Q0UsY29tcG9uZW50V2lsbE1vdW50Ol8uREVGSU5FX01BTlksY29tcG9uZW50RGlkTW91bnQ6Xy5E
RUZJTkVfTUFOWSxjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzOl8uREVGSU5FX01BTlksc2hvdWxk
Q29tcG9uZW50VXBkYXRlOl8uREVGSU5FX09OQ0UsY29tcG9uZW50V2lsbFVwZGF0ZTpfLkRFRklO
RV9NQU5ZLGNvbXBvbmVudERpZFVwZGF0ZTpfLkRFRklORV9NQU5ZLGNvbXBvbmVudFdpbGxVbm1v
dW50Ol8uREVGSU5FX01BTlksdXBkYXRlQ29tcG9uZW50Ol8uT1ZFUlJJREVfQkFTRX0sdz17ZGlz
cGxheU5hbWU6ZnVuY3Rpb24oZSx0KXtlLmRpc3BsYXlOYW1lPXR9LG1peGluczpmdW5jdGlvbihl
LHQpe2lmKHQpZm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspbyhlLHRbbl0pfSxjaGlsZENvbnRl
eHRUeXBlczpmdW5jdGlvbihlLHQpe2UuY2hpbGRDb250ZXh0VHlwZXM9ZCh7fSxlLmNoaWxkQ29u
dGV4dFR5cGVzLHQpfSxjb250ZXh0VHlwZXM6ZnVuY3Rpb24oZSx0KXtlLmNvbnRleHRUeXBlcz1k
KHt9LGUuY29udGV4dFR5cGVzLHQpfSxnZXREZWZhdWx0UHJvcHM6ZnVuY3Rpb24oZSx0KXtlLmdl
dERlZmF1bHRQcm9wcz9lLmdldERlZmF1bHRQcm9wcz11KGUuZ2V0RGVmYXVsdFByb3BzLHQpOmUu
Z2V0RGVmYXVsdFByb3BzPXR9LHByb3BUeXBlczpmdW5jdGlvbihlLHQpe2UucHJvcFR5cGVzPWQo
e30sZS5wcm9wVHlwZXMsdCl9LHN0YXRpY3M6ZnVuY3Rpb24oZSx0KXtpKGUsdCl9LGF1dG9iaW5k
OmZ1bmN0aW9uKCl7fX0sVD17cmVwbGFjZVN0YXRlOmZ1bmN0aW9uKGUsdCl7dGhpcy51cGRhdGVy
LmVucXVldWVSZXBsYWNlU3RhdGUodGhpcyxlKSx0JiZ0aGlzLnVwZGF0ZXIuZW5xdWV1ZUNhbGxi
YWNrKHRoaXMsdCwicmVwbGFjZVN0YXRlIil9LGlzTW91bnRlZDpmdW5jdGlvbigpe3JldHVybiB0
aGlzLnVwZGF0ZXIuaXNNb3VudGVkKHRoaXMpfX0sUD1mdW5jdGlvbigpe307ZChQLnByb3RvdHlw
ZSxmLnByb3RvdHlwZSxUKTt2YXIgeD17Y3JlYXRlQ2xhc3M6ZnVuY3Rpb24oZSl7dmFyIHQ9ZnVu
Y3Rpb24oZSxuLHIpe3RoaXMuX19yZWFjdEF1dG9CaW5kUGFpcnMubGVuZ3RoJiZjKHRoaXMpLHRo
aXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9bix0aGlzLnJlZnM9bSx0aGlzLnVwZGF0ZXI9cnx8dix0
aGlzLnN0YXRlPW51bGw7dmFyIG89dGhpcy5nZXRJbml0aWFsU3RhdGU/dGhpcy5nZXRJbml0aWFs
U3RhdGUoKTpudWxsOyJvYmplY3QiIT10eXBlb2Ygb3x8QXJyYXkuaXNBcnJheShvKT9wKCI4MiIs
dC5kaXNwbGF5TmFtZXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Iik6dm9pZCAwLHRoaXMuc3Rh
dGU9b307dC5wcm90b3R5cGU9bmV3IFAsdC5wcm90b3R5cGUuY29uc3RydWN0b3I9dCx0LnByb3Rv
dHlwZS5fX3JlYWN0QXV0b0JpbmRQYWlycz1bXSxDLmZvckVhY2goby5iaW5kKG51bGwsdCkpLG8o
dCxlKSx0LmdldERlZmF1bHRQcm9wcyYmKHQuZGVmYXVsdFByb3BzPXQuZ2V0RGVmYXVsdFByb3Bz
KCkpLHQucHJvdG90eXBlLnJlbmRlcj92b2lkIDA6cCgiODMiKTtmb3IodmFyIG4gaW4gRSl0LnBy
b3RvdHlwZVtuXXx8KHQucHJvdG90eXBlW25dPW51bGwpO3JldHVybiB0fSxpbmplY3Rpb246e2lu
amVjdE1peGluOmZ1bmN0aW9uKGUpe0MucHVzaChlKX19fTtlLmV4cG9ydHM9eH0sZnVuY3Rpb24o
ZSx0KXsidXNlIHN0cmljdCI7dmFyIG49e2hhc0NhY2hlZENoaWxkTm9kZXM6MX07ZS5leHBvcnRz
PW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe2lmKHRoaXMuX3Jv
b3ROb2RlSUQmJnRoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlKXt0aGlzLl93cmFwcGVy
U3RhdGUucGVuZGluZ1VwZGF0ZT0hMTt2YXIgZT10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcyx0
PXMuZ2V0VmFsdWUoZSk7bnVsbCE9dCYmbyh0aGlzLEJvb2xlYW4oZS5tdWx0aXBsZSksdCl9fWZ1
bmN0aW9uIG8oZSx0LG4pe3ZhciByLG8saT1sLmdldE5vZGVGcm9tSW5zdGFuY2UoZSkub3B0aW9u
cztpZih0KXtmb3Iocj17fSxvPTA7bzxuLmxlbmd0aDtvKyspclsiIituW29dXT0hMDtmb3Iobz0w
O288aS5sZW5ndGg7bysrKXt2YXIgYT1yLmhhc093blByb3BlcnR5KGlbb10udmFsdWUpO2lbb10u
c2VsZWN0ZWQhPT1hJiYoaVtvXS5zZWxlY3RlZD1hKX19ZWxzZXtmb3Iocj0iIituLG89MDtvPGku
bGVuZ3RoO28rKylpZihpW29dLnZhbHVlPT09cilyZXR1cm4gdm9pZChpW29dLnNlbGVjdGVkPSEw
KTtpLmxlbmd0aCYmKGlbMF0uc2VsZWN0ZWQ9ITApfX1mdW5jdGlvbiBpKGUpe3ZhciB0PXRoaXMu
X2N1cnJlbnRFbGVtZW50LnByb3BzLG49cy5leGVjdXRlT25DaGFuZ2UodCxlKTtyZXR1cm4gdGhp
cy5fcm9vdE5vZGVJRCYmKHRoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBkYXRlPSEwKSxjLmFz
YXAocix0aGlzKSxufXZhciBhPW4oNCksdT1uKDI3KSxzPW4oNDIpLGw9big1KSxjPW4oMTApLHA9
KG4oMyksITEpLGQ9e2dldEhvc3RQcm9wczpmdW5jdGlvbihlLHQpe3JldHVybiBhKHt9LHUuZ2V0
SG9zdFByb3BzKGUsdCkse29uQ2hhbmdlOmUuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZSx2YWx1ZTp2
b2lkIDB9KX0sbW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49cy5nZXRWYWx1ZSh0KTtl
Ll93cmFwcGVyU3RhdGU9e3BlbmRpbmdVcGRhdGU6ITEsaW5pdGlhbFZhbHVlOm51bGwhPW4/bjp0
LmRlZmF1bHRWYWx1ZSxsaXN0ZW5lcnM6bnVsbCxvbkNoYW5nZTppLmJpbmQoZSksd2FzTXVsdGlw
bGU6Qm9vbGVhbih0Lm11bHRpcGxlKX0sdm9pZCAwPT09dC52YWx1ZXx8dm9pZCAwPT09dC5kZWZh
dWx0VmFsdWV8fHB8fChwPSEwKX0sZ2V0U2VsZWN0VmFsdWVDb250ZXh0OmZ1bmN0aW9uKGUpe3Jl
dHVybiBlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlfSxwb3N0VXBkYXRlV3JhcHBlcjpmdW5j
dGlvbihlKXt2YXIgdD1lLl9jdXJyZW50RWxlbWVudC5wcm9wcztlLl93cmFwcGVyU3RhdGUuaW5p
dGlhbFZhbHVlPXZvaWQgMDt2YXIgbj1lLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU7ZS5fd3Jh
cHBlclN0YXRlLndhc011bHRpcGxlPUJvb2xlYW4odC5tdWx0aXBsZSk7dmFyIHI9cy5nZXRWYWx1
ZSh0KTtudWxsIT1yPyhlLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZT0hMSxvKGUsQm9vbGVh
bih0Lm11bHRpcGxlKSxyKSk6biE9PUJvb2xlYW4odC5tdWx0aXBsZSkmJihudWxsIT10LmRlZmF1
bHRWYWx1ZT9vKGUsQm9vbGVhbih0Lm11bHRpcGxlKSx0LmRlZmF1bHRWYWx1ZSk6byhlLEJvb2xl
YW4odC5tdWx0aXBsZSksdC5tdWx0aXBsZT9bXToiIikpfX07ZS5leHBvcnRzPWR9LGZ1bmN0aW9u
KGUsdCl7InVzZSBzdHJpY3QiO3ZhciBuLHI9e2luamVjdEVtcHR5Q29tcG9uZW50RmFjdG9yeTpm
dW5jdGlvbihlKXtuPWV9fSxvPXtjcmVhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIG4oZSl9fTtvLmlu
amVjdGlvbj1yLGUuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17
bG9nVG9wTGV2ZWxSZW5kZXJzOiExfTtlLmV4cG9ydHM9bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBzP3ZvaWQgMDphKCIxMTEiLGUudHlwZSksbmV3
IHMoZSl9ZnVuY3Rpb24gbyhlKXtyZXR1cm4gbmV3IGMoZSl9ZnVuY3Rpb24gaShlKXtyZXR1cm4g
ZSBpbnN0YW5jZW9mIGN9dmFyIGE9bigyKSx1PW4oNCkscz0obigxKSxudWxsKSxsPXt9LGM9bnVs
bCxwPXtpbmplY3RHZW5lcmljQ29tcG9uZW50Q2xhc3M6ZnVuY3Rpb24oZSl7cz1lfSxpbmplY3RU
ZXh0Q29tcG9uZW50Q2xhc3M6ZnVuY3Rpb24oZSl7Yz1lfSxpbmplY3RDb21wb25lbnRDbGFzc2Vz
OmZ1bmN0aW9uKGUpe3UobCxlKX19LGQ9e2NyZWF0ZUludGVybmFsQ29tcG9uZW50OnIsY3JlYXRl
SW5zdGFuY2VGb3JUZXh0Om8saXNUZXh0Q29tcG9uZW50OmksaW5qZWN0aW9uOnB9O2UuZXhwb3J0
cz1kfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGko
ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGUpfXZhciBvPW4oMTYxKSxpPW4oMTAxKSxhPW4oNjEp
LHU9big2Mikscz17aGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzOmZ1bmN0aW9uKGUpe3ZhciB0PWUm
JmUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gdCYmKCJpbnB1dCI9
PT10JiYidGV4dCI9PT1lLnR5cGV8fCJ0ZXh0YXJlYSI9PT10fHwidHJ1ZSI9PT1lLmNvbnRlbnRF
ZGl0YWJsZSl9LGdldFNlbGVjdGlvbkluZm9ybWF0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9dSgpO3Jl
dHVybntmb2N1c2VkRWxlbTplLHNlbGVjdGlvblJhbmdlOnMuaGFzU2VsZWN0aW9uQ2FwYWJpbGl0
aWVzKGUpP3MuZ2V0U2VsZWN0aW9uKGUpOm51bGx9fSxyZXN0b3JlU2VsZWN0aW9uOmZ1bmN0aW9u
KGUpe3ZhciB0PXUoKSxuPWUuZm9jdXNlZEVsZW0sbz1lLnNlbGVjdGlvblJhbmdlO3QhPT1uJiZy
KG4pJiYocy5oYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXMobikmJnMuc2V0U2VsZWN0aW9uKG4sbyks
YShuKSl9LGdldFNlbGVjdGlvbjpmdW5jdGlvbihlKXt2YXIgdDtpZigic2VsZWN0aW9uU3RhcnQi
aW4gZSl0PXtzdGFydDplLnNlbGVjdGlvblN0YXJ0LGVuZDplLnNlbGVjdGlvbkVuZH07ZWxzZSBp
Zihkb2N1bWVudC5zZWxlY3Rpb24mJmUubm9kZU5hbWUmJiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRv
TG93ZXJDYXNlKCkpe3ZhciBuPWRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpO24ucGFy
ZW50RWxlbWVudCgpPT09ZSYmKHQ9e3N0YXJ0Oi1uLm1vdmVTdGFydCgiY2hhcmFjdGVyIiwtZS52
YWx1ZS5sZW5ndGgpLGVuZDotbi5tb3ZlRW5kKCJjaGFyYWN0ZXIiLC1lLnZhbHVlLmxlbmd0aCl9
KX1lbHNlIHQ9by5nZXRPZmZzZXRzKGUpO3JldHVybiB0fHx7c3RhcnQ6MCxlbmQ6MH19LHNldFNl
bGVjdGlvbjpmdW5jdGlvbihlLHQpe3ZhciBuPXQuc3RhcnQscj10LmVuZDtpZih2b2lkIDA9PT1y
JiYocj1uKSwic2VsZWN0aW9uU3RhcnQiaW4gZSllLnNlbGVjdGlvblN0YXJ0PW4sZS5zZWxlY3Rp
b25FbmQ9TWF0aC5taW4ocixlLnZhbHVlLmxlbmd0aCk7ZWxzZSBpZihkb2N1bWVudC5zZWxlY3Rp
b24mJmUubm9kZU5hbWUmJiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpewotdmFy
IGk9ZS5jcmVhdGVUZXh0UmFuZ2UoKTtpLmNvbGxhcHNlKCEwKSxpLm1vdmVTdGFydCgiY2hhcmFj
dGVyIixuKSxpLm1vdmVFbmQoImNoYXJhY3RlciIsci1uKSxpLnNlbGVjdCgpfWVsc2Ugby5zZXRP
ZmZzZXRzKGUsdCl9fTtlLmV4cG9ydHM9c30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUsdCl7Zm9yKHZhciBuPU1hdGgubWluKGUubGVuZ3RoLHQubGVuZ3RoKSxyPTA7
cjxuO3IrKylpZihlLmNoYXJBdChyKSE9PXQuY2hhckF0KHIpKXJldHVybiByO3JldHVybiBlLmxl
bmd0aD09PXQubGVuZ3RoPy0xOm59ZnVuY3Rpb24gbyhlKXtyZXR1cm4gZT9lLm5vZGVUeXBlPT09
ST9lLmRvY3VtZW50RWxlbWVudDplLmZpcnN0Q2hpbGQ6bnVsbH1mdW5jdGlvbiBpKGUpe3JldHVy
biBlLmdldEF0dHJpYnV0ZSYmZS5nZXRBdHRyaWJ1dGUoayl8fCIifWZ1bmN0aW9uIGEoZSx0LG4s
cixvKXt2YXIgaTtpZihDLmxvZ1RvcExldmVsUmVuZGVycyl7dmFyIGE9ZS5fY3VycmVudEVsZW1l
bnQucHJvcHMsdT1hLnR5cGU7aT0iUmVhY3QgbW91bnQ6ICIrKCJzdHJpbmciPT10eXBlb2YgdT91
OnUuZGlzcGxheU5hbWV8fHUubmFtZSksY29uc29sZS50aW1lKGkpfXZhciBzPVQubW91bnRDb21w
b25lbnQoZSxuLG51bGwsZyhlLHQpLG8sMCk7aSYmY29uc29sZS50aW1lRW5kKGkpLGUuX3JlbmRl
cmVkQ29tcG9uZW50Ll90b3BMZXZlbFdyYXBwZXI9ZSxGLl9tb3VudEltYWdlSW50b05vZGUocyx0
LGUscixuKX1mdW5jdGlvbiB1KGUsdCxuLHIpe3ZhciBvPXguUmVhY3RSZWNvbmNpbGVUcmFuc2Fj
dGlvbi5nZXRQb29sZWQoIW4mJmIudXNlQ3JlYXRlRWxlbWVudCk7by5wZXJmb3JtKGEsbnVsbCxl
LHQsbyxuLHIpLHguUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbi5yZWxlYXNlKG8pfWZ1bmN0aW9u
IHMoZSx0LG4pe2ZvcihULnVubW91bnRDb21wb25lbnQoZSxuKSx0Lm5vZGVUeXBlPT09SSYmKHQ9
dC5kb2N1bWVudEVsZW1lbnQpO3QubGFzdENoaWxkOyl0LnJlbW92ZUNoaWxkKHQubGFzdENoaWxk
KX1mdW5jdGlvbiBsKGUpe3ZhciB0PW8oZSk7aWYodCl7dmFyIG49eS5nZXRJbnN0YW5jZUZyb21O
b2RlKHQpO3JldHVybiEoIW58fCFuLl9ob3N0UGFyZW50KX19ZnVuY3Rpb24gYyhlKXtyZXR1cm4h
KCFlfHxlLm5vZGVUeXBlIT09RCYmZS5ub2RlVHlwZSE9PUkmJmUubm9kZVR5cGUhPT1BKX1mdW5j
dGlvbiBwKGUpe3ZhciB0PW8oZSksbj10JiZ5LmdldEluc3RhbmNlRnJvbU5vZGUodCk7cmV0dXJu
IG4mJiFuLl9ob3N0UGFyZW50P246bnVsbH1mdW5jdGlvbiBkKGUpe3ZhciB0PXAoZSk7cmV0dXJu
IHQ/dC5faG9zdENvbnRhaW5lckluZm8uX3RvcExldmVsV3JhcHBlcjpudWxsfXZhciBmPW4oMiks
aD1uKDE3KSx2PW4oMTgpLG09bigyOCkseT0obigxNiksbig1KSksZz1uKDE1NCksYj1uKDE1Nyks
Xz1uKDkpLEM9big3OCksRT1uKDIzKSx3PShuKDgpLG4oMTcwKSksVD1uKDE5KSxQPW4oNTEpLHg9
bigxMCksTz1uKDIwKSxTPW4oOTMpLE09KG4oMSksbigzMSkpLE49big1Nyksaz0obigzKSx2LklE
X0FUVFJJQlVURV9OQU1FKSxSPXYuUk9PVF9BVFRSSUJVVEVfTkFNRSxEPTEsST05LEE9MTEsTD17
fSxVPTEsaj1mdW5jdGlvbigpe3RoaXMucm9vdElEPVUrK307ai5wcm90b3R5cGUuaXNSZWFjdENv
bXBvbmVudD17fSxqLnByb3RvdHlwZS5yZW5kZXI9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcm9w
c307dmFyIEY9e1RvcExldmVsV3JhcHBlcjpqLF9pbnN0YW5jZXNCeVJlYWN0Um9vdElEOkwsc2Ny
b2xsTW9uaXRvcjpmdW5jdGlvbihlLHQpe3QoKX0sX3VwZGF0ZVJvb3RDb21wb25lbnQ6ZnVuY3Rp
b24oZSx0LG4scixvKXtyZXR1cm4gRi5zY3JvbGxNb25pdG9yKHIsZnVuY3Rpb24oKXtQLmVucXVl
dWVFbGVtZW50SW50ZXJuYWwoZSx0LG4pLG8mJlAuZW5xdWV1ZUNhbGxiYWNrSW50ZXJuYWwoZSxv
KX0pLGV9LF9yZW5kZXJOZXdSb290Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLHIpe2ModCk/dm9p
ZCAwOmYoIjM3IiksbS5lbnN1cmVTY3JvbGxWYWx1ZU1vbml0b3JpbmcoKTt2YXIgbz1TKGUsITEp
O3guYmF0Y2hlZFVwZGF0ZXModSxvLHQsbixyKTt2YXIgaT1vLl9pbnN0YW5jZS5yb290SUQ7cmV0
dXJuIExbaV09byxvfSxyZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjpmdW5jdGlvbihlLHQsbixy
KXtyZXR1cm4gbnVsbCE9ZSYmRS5oYXMoZSk/dm9pZCAwOmYoIjM4IiksRi5fcmVuZGVyU3VidHJl
ZUludG9Db250YWluZXIoZSx0LG4scil9LF9yZW5kZXJTdWJ0cmVlSW50b0NvbnRhaW5lcjpmdW5j
dGlvbihlLHQsbixyKXtQLnZhbGlkYXRlQ2FsbGJhY2sociwiUmVhY3RET00ucmVuZGVyIiksXy5p
c1ZhbGlkRWxlbWVudCh0KT92b2lkIDA6ZigiMzkiLCJzdHJpbmciPT10eXBlb2YgdD8iIEluc3Rl
YWQgb2YgcGFzc2luZyBhIHN0cmluZyBsaWtlICdkaXYnLCBwYXNzIFJlYWN0LmNyZWF0ZUVsZW1l
bnQoJ2RpdicpIG9yIDxkaXYgLz4uIjoiZnVuY3Rpb24iPT10eXBlb2YgdD8iIEluc3RlYWQgb2Yg
cGFzc2luZyBhIGNsYXNzIGxpa2UgRm9vLCBwYXNzIFJlYWN0LmNyZWF0ZUVsZW1lbnQoRm9vKSBv
ciA8Rm9vIC8+LiI6bnVsbCE9dCYmdm9pZCAwIT09dC5wcm9wcz8iIFRoaXMgbWF5IGJlIGNhdXNl
ZCBieSB1bmludGVudGlvbmFsbHkgbG9hZGluZyB0d28gaW5kZXBlbmRlbnQgY29waWVzIG9mIFJl
YWN0LiI6IiIpO3ZhciBhLHU9XyhqLG51bGwsbnVsbCxudWxsLG51bGwsbnVsbCx0KTtpZihlKXt2
YXIgcz1FLmdldChlKTthPXMuX3Byb2Nlc3NDaGlsZENvbnRleHQocy5fY29udGV4dCl9ZWxzZSBh
PU87dmFyIGM9ZChuKTtpZihjKXt2YXIgcD1jLl9jdXJyZW50RWxlbWVudCxoPXAucHJvcHM7aWYo
TihoLHQpKXt2YXIgdj1jLl9yZW5kZXJlZENvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpLG09
ciYmZnVuY3Rpb24oKXtyLmNhbGwodil9O3JldHVybiBGLl91cGRhdGVSb290Q29tcG9uZW50KGMs
dSxhLG4sbSksdn1GLnVubW91bnRDb21wb25lbnRBdE5vZGUobil9dmFyIHk9byhuKSxnPXkmJiEh
aSh5KSxiPWwobiksQz1nJiYhYyYmIWIsdz1GLl9yZW5kZXJOZXdSb290Q29tcG9uZW50KHUsbixD
LGEpLl9yZW5kZXJlZENvbXBvbmVudC5nZXRQdWJsaWNJbnN0YW5jZSgpO3JldHVybiByJiZyLmNh
bGwodyksd30scmVuZGVyOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gRi5fcmVuZGVyU3VidHJlZUlu
dG9Db250YWluZXIobnVsbCxlLHQsbil9LHVubW91bnRDb21wb25lbnRBdE5vZGU6ZnVuY3Rpb24o
ZSl7YyhlKT92b2lkIDA6ZigiNDAiKTt2YXIgdD1kKGUpO2lmKCF0KXtsKGUpLDE9PT1lLm5vZGVU
eXBlJiZlLmhhc0F0dHJpYnV0ZShSKTtyZXR1cm4hMX1yZXR1cm4gZGVsZXRlIExbdC5faW5zdGFu
Y2Uucm9vdElEXSx4LmJhdGNoZWRVcGRhdGVzKHMsdCxlLCExKSwhMH0sX21vdW50SW1hZ2VJbnRv
Tm9kZTpmdW5jdGlvbihlLHQsbixpLGEpe2lmKGModCk/dm9pZCAwOmYoIjQxIiksaSl7dmFyIHU9
byh0KTtpZih3LmNhblJldXNlTWFya3VwKGUsdSkpcmV0dXJuIHZvaWQgeS5wcmVjYWNoZU5vZGUo
bix1KTt2YXIgcz11LmdldEF0dHJpYnV0ZSh3LkNIRUNLU1VNX0FUVFJfTkFNRSk7dS5yZW1vdmVB
dHRyaWJ1dGUody5DSEVDS1NVTV9BVFRSX05BTUUpO3ZhciBsPXUub3V0ZXJIVE1MO3Uuc2V0QXR0
cmlidXRlKHcuQ0hFQ0tTVU1fQVRUUl9OQU1FLHMpO3ZhciBwPWUsZD1yKHAsbCksdj0iIChjbGll
bnQpICIrcC5zdWJzdHJpbmcoZC0yMCxkKzIwKSsiXG4gKHNlcnZlcikgIitsLnN1YnN0cmluZyhk
LTIwLGQrMjApO3Qubm9kZVR5cGU9PT1JP2YoIjQyIix2KTp2b2lkIDB9aWYodC5ub2RlVHlwZT09
PUk/ZigiNDMiKTp2b2lkIDAsYS51c2VDcmVhdGVFbGVtZW50KXtmb3IoO3QubGFzdENoaWxkOyl0
LnJlbW92ZUNoaWxkKHQubGFzdENoaWxkKTtoLmluc2VydFRyZWVCZWZvcmUodCxlLG51bGwpfWVs
c2UgTSh0LGUpLHkucHJlY2FjaGVOb2RlKG4sdC5maXJzdENoaWxkKX19O2UuZXhwb3J0cz1GfSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMjYpLG89cih7SU5TRVJUX01BUktV
UDpudWxsLE1PVkVfRVhJU1RJTkc6bnVsbCxSRU1PVkVfTk9ERTpudWxsLFNFVF9NQVJLVVA6bnVs
bCxURVhUX0NPTlRFTlQ6bnVsbH0pO2UuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO3ZhciByPW4oMiksbz1uKDkpLGk9KG4oMSkse0hPU1Q6MCxDT01QT1NJVEU6MSxFTVBU
WToyLGdldFR5cGU6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lfHxlPT09ITE/aS5FTVBUWTpv
LmlzVmFsaWRFbGVtZW50KGUpPyJmdW5jdGlvbiI9PXR5cGVvZiBlLnR5cGU/aS5DT01QT1NJVEU6
aS5IT1NUOnZvaWQgcigiMjYiLGUpfX0pO2UuZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gZT09PXQ/MCE9PWV8fDEvZT09PTEvdDpl
IT09ZSYmdCE9PXR9ZnVuY3Rpb24gbyhlKXt0aGlzLm1lc3NhZ2U9ZSx0aGlzLnN0YWNrPSIifWZ1
bmN0aW9uIGkoZSl7ZnVuY3Rpb24gdCh0LG4scixpLGEsdSxzKXtpPWl8fHgsdT11fHxyO2lmKG51
bGw9PW5bcl0pe3ZhciBsPUVbYV07cmV0dXJuIHQ/bmV3IG8oIlJlcXVpcmVkICIrbCsiIGAiK3Ur
ImAgd2FzIG5vdCBzcGVjaWZpZWQgaW4gIisoImAiK2krImAuIikpOm51bGx9cmV0dXJuIGUobixy
LGksYSx1KX12YXIgbj10LmJpbmQobnVsbCwhMSk7cmV0dXJuIG4uaXNSZXF1aXJlZD10LmJpbmQo
bnVsbCwhMCksbn1mdW5jdGlvbiBhKGUpe2Z1bmN0aW9uIHQodCxuLHIsaSxhLHUpe3ZhciBzPXRb
bl0sbD1nKHMpO2lmKGwhPT1lKXt2YXIgYz1FW2ldLHA9YihzKTtyZXR1cm4gbmV3IG8oIkludmFs
aWQgIitjKyIgYCIrYSsiYCBvZiB0eXBlICIrKCJgIitwKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAs
IGV4cGVjdGVkICIpKygiYCIrZSsiYC4iKSl9cmV0dXJuIG51bGx9cmV0dXJuIGkodCl9ZnVuY3Rp
b24gdSgpe3JldHVybiBpKFQudGhhdFJldHVybnMobnVsbCkpfWZ1bmN0aW9uIHMoZSl7ZnVuY3Rp
b24gdCh0LG4scixpLGEpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXJldHVybiBuZXcgbygiUHJv
cGVydHkgYCIrYSsiYCBvZiBjb21wb25lbnQgYCIrcisiYCBoYXMgaW52YWxpZCBQcm9wVHlwZSBu
b3RhdGlvbiBpbnNpZGUgYXJyYXlPZi4iKTt2YXIgdT10W25dO2lmKCFBcnJheS5pc0FycmF5KHUp
KXt2YXIgcz1FW2ldLGw9Zyh1KTtyZXR1cm4gbmV3IG8oIkludmFsaWQgIitzKyIgYCIrYSsiYCBv
ZiB0eXBlICIrKCJgIitsKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIGFuIGFycmF5
LiIpKX1mb3IodmFyIGM9MDtjPHUubGVuZ3RoO2MrKyl7dmFyIHA9ZSh1LGMscixpLGErIlsiK2Mr
Il0iLHcpO2lmKHAgaW5zdGFuY2VvZiBFcnJvcilyZXR1cm4gcH1yZXR1cm4gbnVsbH1yZXR1cm4g
aSh0KX1mdW5jdGlvbiBsKCl7ZnVuY3Rpb24gZShlLHQsbixyLGkpe3ZhciBhPWVbdF07aWYoIUMu
aXNWYWxpZEVsZW1lbnQoYSkpe3ZhciB1PUVbcl0scz1nKGEpO3JldHVybiBuZXcgbygiSW52YWxp
ZCAiK3UrIiBgIitpKyJgIG9mIHR5cGUgIisoImAiK3MrImAgc3VwcGxpZWQgdG8gYCIrbisiYCwg
ZXhwZWN0ZWQgYSBzaW5nbGUgUmVhY3RFbGVtZW50LiIpKX1yZXR1cm4gbnVsbH1yZXR1cm4gaShl
KX1mdW5jdGlvbiBjKGUpe2Z1bmN0aW9uIHQodCxuLHIsaSxhKXtpZighKHRbbl1pbnN0YW5jZW9m
IGUpKXt2YXIgdT1FW2ldLHM9ZS5uYW1lfHx4LGw9Xyh0W25dKTtyZXR1cm4gbmV3IG8oIkludmFs
aWQgIit1KyIgYCIrYSsiYCBvZiB0eXBlICIrKCJgIitsKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAs
IGV4cGVjdGVkICIpKygiaW5zdGFuY2Ugb2YgYCIrcysiYC4iKSl9cmV0dXJuIG51bGx9cmV0dXJu
IGkodCl9ZnVuY3Rpb24gcChlKXtmdW5jdGlvbiB0KHQsbixpLGEsdSl7Zm9yKHZhciBzPXRbbl0s
bD0wO2w8ZS5sZW5ndGg7bCsrKWlmKHIocyxlW2xdKSlyZXR1cm4gbnVsbDt2YXIgYz1FW2FdLHA9
SlNPTi5zdHJpbmdpZnkoZSk7cmV0dXJuIG5ldyBvKCJJbnZhbGlkICIrYysiIGAiK3UrImAgb2Yg
dmFsdWUgYCIrcysiYCAiKygic3VwcGxpZWQgdG8gYCIraSsiYCwgZXhwZWN0ZWQgb25lIG9mICIr
cCsiLiIpKX1yZXR1cm4gQXJyYXkuaXNBcnJheShlKT9pKHQpOlQudGhhdFJldHVybnNOdWxsfWZ1
bmN0aW9uIGQoZSl7ZnVuY3Rpb24gdCh0LG4scixpLGEpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBl
KXJldHVybiBuZXcgbygiUHJvcGVydHkgYCIrYSsiYCBvZiBjb21wb25lbnQgYCIrcisiYCBoYXMg
aW52YWxpZCBQcm9wVHlwZSBub3RhdGlvbiBpbnNpZGUgb2JqZWN0T2YuIik7dmFyIHU9dFtuXSxz
PWcodSk7aWYoIm9iamVjdCIhPT1zKXt2YXIgbD1FW2ldO3JldHVybiBuZXcgbygiSW52YWxpZCAi
K2wrIiBgIithKyJgIG9mIHR5cGUgIisoImAiK3MrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhw
ZWN0ZWQgYW4gb2JqZWN0LiIpKX1mb3IodmFyIGMgaW4gdSlpZih1Lmhhc093blByb3BlcnR5KGMp
KXt2YXIgcD1lKHUsYyxyLGksYSsiLiIrYyx3KTtpZihwIGluc3RhbmNlb2YgRXJyb3IpcmV0dXJu
IHB9cmV0dXJuIG51bGx9cmV0dXJuIGkodCl9ZnVuY3Rpb24gZihlKXtmdW5jdGlvbiB0KHQsbixy
LGksYSl7Zm9yKHZhciB1PTA7dTxlLmxlbmd0aDt1Kyspe3ZhciBzPWVbdV07aWYobnVsbD09cyh0
LG4scixpLGEsdykpcmV0dXJuIG51bGx9dmFyIGw9RVtpXTtyZXR1cm4gbmV3IG8oIkludmFsaWQg
IitsKyIgYCIrYSsiYCBzdXBwbGllZCB0byAiKygiYCIrcisiYC4iKSl9cmV0dXJuIEFycmF5Lmlz
QXJyYXkoZSk/aSh0KTpULnRoYXRSZXR1cm5zTnVsbH1mdW5jdGlvbiBoKCl7ZnVuY3Rpb24gZShl
LHQsbixyLGkpe2lmKCFtKGVbdF0pKXt2YXIgYT1FW3JdO3JldHVybiBuZXcgbygiSW52YWxpZCAi
K2ErIiBgIitpKyJgIHN1cHBsaWVkIHRvICIrKCJgIituKyJgLCBleHBlY3RlZCBhIFJlYWN0Tm9k
ZS4iKSl9cmV0dXJuIG51bGx9cmV0dXJuIGkoZSl9ZnVuY3Rpb24gdihlKXtmdW5jdGlvbiB0KHQs
bixyLGksYSl7dmFyIHU9dFtuXSxzPWcodSk7aWYoIm9iamVjdCIhPT1zKXt2YXIgbD1FW2ldO3Jl
dHVybiBuZXcgbygiSW52YWxpZCAiK2wrIiBgIithKyJgIG9mIHR5cGUgYCIrcysiYCAiKygic3Vw
cGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgYG9iamVjdGAuIikpfWZvcih2YXIgYyBpbiBlKXt2
YXIgcD1lW2NdO2lmKHApe3ZhciBkPXAodSxjLHIsaSxhKyIuIitjLHcpO2lmKGQpcmV0dXJuIGR9
fXJldHVybiBudWxsfXJldHVybiBpKHQpfWZ1bmN0aW9uIG0oZSl7c3dpdGNoKHR5cGVvZiBlKXtj
YXNlIm51bWJlciI6Y2FzZSJzdHJpbmciOmNhc2UidW5kZWZpbmVkIjpyZXR1cm4hMDtjYXNlImJv
b2xlYW4iOnJldHVybiFlO2Nhc2Uib2JqZWN0IjppZihBcnJheS5pc0FycmF5KGUpKXJldHVybiBl
LmV2ZXJ5KG0pO2lmKG51bGw9PT1lfHxDLmlzVmFsaWRFbGVtZW50KGUpKXJldHVybiEwO3ZhciB0
PVAoZSk7aWYoIXQpcmV0dXJuITE7dmFyIG4scj10LmNhbGwoZSk7aWYodCE9PWUuZW50cmllcyl7
Zm9yKDshKG49ci5uZXh0KCkpLmRvbmU7KWlmKCFtKG4udmFsdWUpKXJldHVybiExfWVsc2UgZm9y
KDshKG49ci5uZXh0KCkpLmRvbmU7KXt2YXIgbz1uLnZhbHVlO2lmKG8mJiFtKG9bMV0pKXJldHVy
biExfXJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIHkoZSx0KXtyZXR1cm4ic3lt
Ym9sIj09PWV8fCgiU3ltYm9sIj09PXRbIkBAdG9TdHJpbmdUYWciXXx8ImZ1bmN0aW9uIj09dHlw
ZW9mIFN5bWJvbCYmdCBpbnN0YW5jZW9mIFN5bWJvbCl9ZnVuY3Rpb24gZyhlKXt2YXIgdD10eXBl
b2YgZTtyZXR1cm4gQXJyYXkuaXNBcnJheShlKT8iYXJyYXkiOmUgaW5zdGFuY2VvZiBSZWdFeHA/
Im9iamVjdCI6eSh0LGUpPyJzeW1ib2wiOnR9ZnVuY3Rpb24gYihlKXt2YXIgdD1nKGUpO2lmKCJv
YmplY3QiPT09dCl7aWYoZSBpbnN0YW5jZW9mIERhdGUpcmV0dXJuImRhdGUiO2lmKGUgaW5zdGFu
Y2VvZiBSZWdFeHApcmV0dXJuInJlZ2V4cCJ9cmV0dXJuIHR9ZnVuY3Rpb24gXyhlKXtyZXR1cm4g
ZS5jb25zdHJ1Y3RvciYmZS5jb25zdHJ1Y3Rvci5uYW1lP2UuY29uc3RydWN0b3IubmFtZTp4fXZh
ciBDPW4oOSksRT1uKDQ4KSx3PW4oNTApLFQ9big3KSxQPW4oOTEpLHg9KG4oMyksIjw8YW5vbnlt
b3VzPj4iKSxPPXthcnJheTphKCJhcnJheSIpLGJvb2w6YSgiYm9vbGVhbiIpLGZ1bmM6YSgiZnVu
Y3Rpb24iKSxudW1iZXI6YSgibnVtYmVyIiksb2JqZWN0OmEoIm9iamVjdCIpLHN0cmluZzphKCJz
dHJpbmciKSxzeW1ib2w6YSgic3ltYm9sIiksYW55OnUoKSxhcnJheU9mOnMsZWxlbWVudDpsKCks
aW5zdGFuY2VPZjpjLG5vZGU6aCgpLG9iamVjdE9mOmQsb25lT2Y6cCxvbmVPZlR5cGU6ZixzaGFw
ZTp2fTtvLnByb3RvdHlwZT1FcnJvci5wcm90b3R5cGUsZS5leHBvcnRzPU99LGZ1bmN0aW9uKGUs
dCl7InVzZSBzdHJpY3QiO2UuZXhwb3J0cz0iMTUuMy4yIn0sZnVuY3Rpb24oZSx0KXsidXNlIHN0
cmljdCI7dmFyIG49e2N1cnJlbnRTY3JvbGxMZWZ0OjAsY3VycmVudFNjcm9sbFRvcDowLHJlZnJl
c2hTY3JvbGxWYWx1ZXM6ZnVuY3Rpb24oZSl7bi5jdXJyZW50U2Nyb2xsTGVmdD1lLngsbi5jdXJy
ZW50U2Nyb2xsVG9wPWUueX19O2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gbnVsbD09dD9vKCIzMCIpOnZvaWQgMCxudWxsPT1l
P3Q6QXJyYXkuaXNBcnJheShlKT9BcnJheS5pc0FycmF5KHQpPyhlLnB1c2guYXBwbHkoZSx0KSxl
KTooZS5wdXNoKHQpLGUpOkFycmF5LmlzQXJyYXkodCk/W2VdLmNvbmNhdCh0KTpbZSx0XX12YXIg
bz1uKDIpO24oMSk7ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFy
IHI9ITE7ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4o
ZSx0LG4pe0FycmF5LmlzQXJyYXkoZSk/ZS5mb3JFYWNoKHQsbik6ZSYmdC5jYWxsKG4sZSl9ZS5l
eHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtmb3Io
dmFyIHQ7KHQ9ZS5fcmVuZGVyZWROb2RlVHlwZSk9PT1vLkNPTVBPU0lURTspZT1lLl9yZW5kZXJl
ZENvbXBvbmVudDtyZXR1cm4gdD09PW8uSE9TVD9lLl9yZW5kZXJlZENvbXBvbmVudDp0PT09by5F
TVBUWT9udWxsOnZvaWQgMH12YXIgbz1uKDgzKTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0KXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXt2YXIgdD1lJiYociYmZVtyXXx8ZVtvXSk7aWYoImZ1
bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJuIHR9dmFyIHI9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJv
bCYmU3ltYm9sLml0ZXJhdG9yLG89IkBAaXRlcmF0b3IiO2UuZXhwb3J0cz1ufSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtyZXR1cm4haSYmby5jYW5Vc2VET00mJihp
PSJ0ZXh0Q29udGVudCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQ/InRleHRDb250ZW50Ijoi
aW5uZXJUZXh0IiksaX12YXIgbz1uKDYpLGk9bnVsbDtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKGUpe3ZhciB0PWUuZ2V0TmFtZSgpO2lm
KHQpcmV0dXJuIiBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgIit0KyJgLiJ9cmV0dXJuIiJ9
ZnVuY3Rpb24gbyhlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZSYmInVuZGVmaW5lZCIhPXR5
cGVvZiBlLnByb3RvdHlwZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUucHJvdG90eXBlLm1vdW50Q29t
cG9uZW50JiYiZnVuY3Rpb24iPT10eXBlb2YgZS5wcm90b3R5cGUucmVjZWl2ZUNvbXBvbmVudH1m
dW5jdGlvbiBpKGUsdCl7dmFyIG47aWYobnVsbD09PWV8fGU9PT0hMSluPWwuY3JlYXRlKGkpO2Vs
c2UgaWYoIm9iamVjdCI9PXR5cGVvZiBlKXt2YXIgdT1lOyF1fHwiZnVuY3Rpb24iIT10eXBlb2Yg
dS50eXBlJiYic3RyaW5nIiE9dHlwZW9mIHUudHlwZT9hKCIxMzAiLG51bGw9PXUudHlwZT91LnR5
cGU6dHlwZW9mIHUudHlwZSxyKHUuX293bmVyKSk6dm9pZCAwLCJzdHJpbmciPT10eXBlb2YgdS50
eXBlP249Yy5jcmVhdGVJbnRlcm5hbENvbXBvbmVudCh1KTpvKHUudHlwZSk/KG49bmV3IHUudHlw
ZSh1KSxuLmdldEhvc3ROb2RlfHwobi5nZXRIb3N0Tm9kZT1uLmdldE5hdGl2ZU5vZGUpKTpuPW5l
dyBwKHUpfWVsc2Uic3RyaW5nIj09dHlwZW9mIGV8fCJudW1iZXIiPT10eXBlb2YgZT9uPWMuY3Jl
YXRlSW5zdGFuY2VGb3JUZXh0KGUpOmEoIjEzMSIsdHlwZW9mIGUpO3JldHVybiBuLl9tb3VudElu
ZGV4PTAsbi5fbW91bnRJbWFnZT1udWxsLG59dmFyIGE9bigyKSx1PW4oNCkscz1uKDE1MCksbD1u
KDc3KSxjPW4oNzkpLHA9KG4oMSksbigzKSxmdW5jdGlvbihlKXt0aGlzLmNvbnN0cnVjdChlKX0p
O3UocC5wcm90b3R5cGUscy5NaXhpbix7X2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQ6aX0pO2Uu
ZXhwb3J0cz1pfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3ZhciB0
PWUmJmUubm9kZU5hbWUmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iaW5wdXQiPT09
dD8hIXJbZS50eXBlXToidGV4dGFyZWEiPT09dH12YXIgcj17Y29sb3I6ITAsZGF0ZTohMCxkYXRl
dGltZTohMCwiZGF0ZXRpbWUtbG9jYWwiOiEwLGVtYWlsOiEwLG1vbnRoOiEwLG51bWJlcjohMCxw
YXNzd29yZDohMCxyYW5nZTohMCxzZWFyY2g6ITAsdGVsOiEwLHRleHQ6ITAsdGltZTohMCx1cmw6
ITAsd2VlazohMH07ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFy
IHI9big2KSxvPW4oMzApLGk9bigzMSksYT1mdW5jdGlvbihlLHQpe2lmKHQpe3ZhciBuPWUuZmly
c3RDaGlsZDtpZihuJiZuPT09ZS5sYXN0Q2hpbGQmJjM9PT1uLm5vZGVUeXBlKXJldHVybiB2b2lk
KG4ubm9kZVZhbHVlPXQpfWUudGV4dENvbnRlbnQ9dH07ci5jYW5Vc2VET00mJigidGV4dENvbnRl
bnQiaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50fHwoYT1mdW5jdGlvbihlLHQpe2koZSxvKHQp
KX0pKSxlLmV4cG9ydHM9YX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbigp
e2Zvcih2YXIgZT1hcmd1bWVudHMubGVuZ3RoLHQ9QXJyYXkoZSksbj0wO248ZTtuKyspdFtuXT1h
cmd1bWVudHNbbl07aWYoMD09PXQubGVuZ3RoKXJldHVybiBmdW5jdGlvbihlKXtyZXR1cm4gZX07
aWYoMT09PXQubGVuZ3RoKXJldHVybiB0WzBdO3ZhciByPXRbdC5sZW5ndGgtMV0sbz10LnNsaWNl
KDAsLTEpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBvLnJlZHVjZVJpZ2h0KGZ1bmN0aW9uKGUs
dCl7cmV0dXJuIHQoZSl9LHIuYXBwbHkodm9pZCAwLGFyZ3VtZW50cykpfX10Ll9fZXNNb2R1bGU9
ITAsdC5kZWZhdWx0PW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
KXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbyhlLHQsbil7
ZnVuY3Rpb24gcigpe3k9PT1tJiYoeT1tLnNsaWNlKCkpfWZ1bmN0aW9uIGkoKXtyZXR1cm4gdn1m
dW5jdGlvbiB1KGUpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiBlKXRocm93IG5ldyBFcnJvcigiRXhw
ZWN0ZWQgbGlzdGVuZXIgdG8gYmUgYSBmdW5jdGlvbi4iKTt2YXIgdD0hMDtyZXR1cm4gcigpLHku
cHVzaChlKSxmdW5jdGlvbigpe2lmKHQpe3Q9ITEscigpO3ZhciBuPXkuaW5kZXhPZihlKTt5LnNw
bGljZShuLDEpfX19ZnVuY3Rpb24gYyhlKXtpZighKDAsYS5kZWZhdWx0KShlKSl0aHJvdyBuZXcg
RXJyb3IoIkFjdGlvbnMgbXVzdCBiZSBwbGFpbiBvYmplY3RzLiBVc2UgY3VzdG9tIG1pZGRsZXdh
cmUgZm9yIGFzeW5jIGFjdGlvbnMuIik7aWYoInVuZGVmaW5lZCI9PXR5cGVvZiBlLnR5cGUpdGhy
b3cgbmV3IEVycm9yKCdBY3Rpb25zIG1heSBub3QgaGF2ZSBhbiB1bmRlZmluZWQgInR5cGUiIHBy
b3BlcnR5LiBIYXZlIHlvdSBtaXNzcGVsbGVkIGEgY29uc3RhbnQ/Jyk7aWYoZyl0aHJvdyBuZXcg
RXJyb3IoIlJlZHVjZXJzIG1heSBub3QgZGlzcGF0Y2ggYWN0aW9ucy4iKTt0cnl7Zz0hMCx2PWgo
dixlKX1maW5hbGx5e2c9ITF9Zm9yKHZhciB0PW09eSxuPTA7bjx0Lmxlbmd0aDtuKyspdFtuXSgp
O3JldHVybiBlfWZ1bmN0aW9uIHAoZSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3
IEVycm9yKCJFeHBlY3RlZCB0aGUgbmV4dFJlZHVjZXIgdG8gYmUgYSBmdW5jdGlvbi4iKTtoPWUs
Yyh7dHlwZTpsLklOSVR9KX1mdW5jdGlvbiBkKCl7dmFyIGUsdD11O3JldHVybiBlPXtzdWJzY3Jp
YmU6ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gbigpe2UubmV4dCYmZS5uZXh0KGkoKSl9aWYoIm9iamVj
dCIhPXR5cGVvZiBlKXRocm93IG5ldyBUeXBlRXJyb3IoIkV4cGVjdGVkIHRoZSBvYnNlcnZlciB0
byBiZSBhbiBvYmplY3QuIik7bigpO3ZhciByPXQobik7cmV0dXJue3Vuc3Vic2NyaWJlOnJ9fX0s
ZVtzLmRlZmF1bHRdPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXN9LGV9dmFyIGY7aWYoImZ1bmN0aW9u
Ij09dHlwZW9mIHQmJiJ1bmRlZmluZWQiPT10eXBlb2YgbiYmKG49dCx0PXZvaWQgMCksInVuZGVm
aW5lZCIhPXR5cGVvZiBuKXtpZigiZnVuY3Rpb24iIT10eXBlb2Ygbil0aHJvdyBuZXcgRXJyb3Io
IkV4cGVjdGVkIHRoZSBlbmhhbmNlciB0byBiZSBhIGZ1bmN0aW9uLiIpO3JldHVybiBuKG8pKGUs
dCl9aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpdGhyb3cgbmV3IEVycm9yKCJFeHBlY3RlZCB0aGUg
cmVkdWNlciB0byBiZSBhIGZ1bmN0aW9uLiIpO3ZhciBoPWUsdj10LG09W10seT1tLGc9ITE7cmV0
dXJuIGMoe3R5cGU6bC5JTklUfSksZj17ZGlzcGF0Y2g6YyxzdWJzY3JpYmU6dSxnZXRTdGF0ZTpp
LHJlcGxhY2VSZWR1Y2VyOnB9LGZbcy5kZWZhdWx0XT1kLGZ9dC5fX2VzTW9kdWxlPSEwLHQuQWN0
aW9uVHlwZXM9dm9pZCAwLHQuZGVmYXVsdD1vO3ZhciBpPW4oMzUpLGE9cihpKSx1PW4oMjA1KSxz
PXIodSksbD10LkFjdGlvblR5cGVzPXtJTklUOiJAQHJlZHV4L0lOSVQifX0sZnVuY3Rpb24oZSx0
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXsidW5kZWZpbmVkIiE9dHlwZW9mIGNvbnNvbGUm
JiJmdW5jdGlvbiI9PXR5cGVvZiBjb25zb2xlLmVycm9yJiZjb25zb2xlLmVycm9yKGUpO3RyeXt0
aHJvdyBuZXcgRXJyb3IoZSl9Y2F0Y2godCl7fX10Ll9fZXNNb2R1bGU9ITAsdC5kZWZhdWx0PW59
LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7cmV0dXJuIGUucmVwbGFj
ZShyLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQudG9VcHBlckNhc2UoKX0pfXZhciByPS8tKC4pL2c7
ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXty
ZXR1cm4gbyhlLnJlcGxhY2UoaSwibXMtIikpfXZhciBvPW4oOTkpLGk9L14tbXMtLztlLmV4cG9y
dHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJu
ISghZXx8IXQpJiYoZT09PXR8fCFvKGUpJiYobyh0KT9yKGUsdC5wYXJlbnROb2RlKToiY29udGFp
bnMiaW4gZT9lLmNvbnRhaW5zKHQpOiEhZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbiYmISEoMTYm
ZS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbih0KSkpKX12YXIgbz1uKDEwOSk7ZS5leHBvcnRzPXJ9
LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1lLmxlbmd0
aDtpZihBcnJheS5pc0FycmF5KGUpfHwib2JqZWN0IiE9dHlwZW9mIGUmJiJmdW5jdGlvbiIhPXR5
cGVvZiBlP2EoITEpOnZvaWQgMCwibnVtYmVyIiE9dHlwZW9mIHQ/YSghMSk6dm9pZCAwLDA9PT10
fHx0LTEgaW4gZT92b2lkIDA6YSghMSksImZ1bmN0aW9uIj09dHlwZW9mIGUuY2FsbGVlP2EoITEp
OnZvaWQgMCxlLmhhc093blByb3BlcnR5KXRyeXtyZXR1cm4gQXJyYXkucHJvdG90eXBlLnNsaWNl
LmNhbGwoZSl9Y2F0Y2gobil7fWZvcih2YXIgcj1BcnJheSh0KSxvPTA7bzx0O28rKylyW29dPWVb
b107cmV0dXJuIHJ9ZnVuY3Rpb24gbyhlKXtyZXR1cm4hIWUmJigib2JqZWN0Ij09dHlwZW9mIGV8
fCJmdW5jdGlvbiI9PXR5cGVvZiBlKSYmImxlbmd0aCJpbiBlJiYhKCJzZXRJbnRlcnZhbCJpbiBl
KSYmIm51bWJlciIhPXR5cGVvZiBlLm5vZGVUeXBlJiYoQXJyYXkuaXNBcnJheShlKXx8ImNhbGxl
ZSJpbiBlfHwiaXRlbSJpbiBlKX1mdW5jdGlvbiBpKGUpe3JldHVybiBvKGUpP0FycmF5LmlzQXJy
YXkoZSk/ZS5zbGljZSgpOnIoZSk6W2VdfXZhciBhPW4oMSk7ZS5leHBvcnRzPWl9LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1lLm1hdGNoKGMpO3JldHVy
biB0JiZ0WzFdLnRvTG93ZXJDYXNlKCl9ZnVuY3Rpb24gbyhlLHQpe3ZhciBuPWw7bD92b2lkIDA6
cyghMSk7dmFyIG89cihlKSxpPW8mJnUobyk7aWYoaSl7bi5pbm5lckhUTUw9aVsxXStlK2lbMl07
Zm9yKHZhciBjPWlbMF07Yy0tOyluPW4ubGFzdENoaWxkfWVsc2Ugbi5pbm5lckhUTUw9ZTt2YXIg
cD1uLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKTtwLmxlbmd0aCYmKHQ/dm9pZCAwOnMo
ITEpLGEocCkuZm9yRWFjaCh0KSk7Zm9yKHZhciBkPUFycmF5LmZyb20obi5jaGlsZE5vZGVzKTtu
Lmxhc3RDaGlsZDspbi5yZW1vdmVDaGlsZChuLmxhc3RDaGlsZCk7cmV0dXJuIGR9dmFyIGk9big2
KSxhPW4oMTAyKSx1PW4oMTA0KSxzPW4oMSksbD1pLmNhblVzZURPTT9kb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTpudWxsLGM9L15ccyo8KFx3KykvO2UuZXhwb3J0cz1vfSxmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGE/dm9pZCAwOmkoITEpLGQu
aGFzT3duUHJvcGVydHkoZSl8fChlPSIqIiksdS5oYXNPd25Qcm9wZXJ0eShlKXx8KCIqIj09PWU/
YS5pbm5lckhUTUw9IjxsaW5rIC8+IjphLmlubmVySFRNTD0iPCIrZSsiPjwvIitlKyI+Iix1W2Vd
PSFhLmZpcnN0Q2hpbGQpLHVbZV0/ZFtlXTpudWxsfXZhciBvPW4oNiksaT1uKDEpLGE9by5jYW5V
c2VET00/ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik6bnVsbCx1PXt9LHM9WzEsJzxzZWxl
Y3QgbXVsdGlwbGU9InRydWUiPicsIjwvc2VsZWN0PiJdLGw9WzEsIjx0YWJsZT4iLCI8L3RhYmxl
PiJdLGM9WzMsIjx0YWJsZT48dGJvZHk+PHRyPiIsIjwvdHI+PC90Ym9keT48L3RhYmxlPiJdLHA9
WzEsJzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4nLCI8L3N2Zz4iXSxk
PXsiKiI6WzEsIj88ZGl2PiIsIjwvZGl2PiJdLGFyZWE6WzEsIjxtYXA+IiwiPC9tYXA+Il0sY29s
OlsyLCI8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJs
ZT4iXSxsZWdlbmQ6WzEsIjxmaWVsZHNldD4iLCI8L2ZpZWxkc2V0PiJdLHBhcmFtOlsxLCI8b2Jq
ZWN0PiIsIjwvb2JqZWN0PiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJs
ZT4iXSxvcHRncm91cDpzLG9wdGlvbjpzLGNhcHRpb246bCxjb2xncm91cDpsLHRib2R5OmwsdGZv
b3Q6bCx0aGVhZDpsLHRkOmMsdGg6Y30sZj1bImNpcmNsZSIsImNsaXBQYXRoIiwiZGVmcyIsImVs
bGlwc2UiLCJnIiwiaW1hZ2UiLCJsaW5lIiwibGluZWFyR3JhZGllbnQiLCJtYXNrIiwicGF0aCIs
InBhdHRlcm4iLCJwb2x5Z29uIiwicG9seWxpbmUiLCJyYWRpYWxHcmFkaWVudCIsInJlY3QiLCJz
dG9wIiwidGV4dCIsInRzcGFuIl07Zi5mb3JFYWNoKGZ1bmN0aW9uKGUpe2RbZV09cCx1W2VdPSEw
fSksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCl7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIG4oZSl7
cmV0dXJuIGU9PT13aW5kb3c/e3g6d2luZG93LnBhZ2VYT2Zmc2V0fHxkb2N1bWVudC5kb2N1bWVu
dEVsZW1lbnQuc2Nyb2xsTGVmdCx5OndpbmRvdy5wYWdlWU9mZnNldHx8ZG9jdW1lbnQuZG9jdW1l
bnRFbGVtZW50LnNjcm9sbFRvcH06e3g6ZS5zY3JvbGxMZWZ0LHk6ZS5zY3JvbGxUb3B9fWUuZXhw
b3J0cz1ufSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3JldHVybiBl
LnJlcGxhY2UociwiLSQxIikudG9Mb3dlckNhc2UoKX12YXIgcj0vKFtBLVpdKS9nO2UuZXhwb3J0
cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIG8o
ZSkucmVwbGFjZShpLCItbXMtIil9dmFyIG89bigxMDYpLGk9L15tcy0vO2UuZXhwb3J0cz1yfSxm
dW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3JldHVybiEoIWV8fCEoImZ1
bmN0aW9uIj09dHlwZW9mIE5vZGU/ZSBpbnN0YW5jZW9mIE5vZGU6Im9iamVjdCI9PXR5cGVvZiBl
JiYibnVtYmVyIj09dHlwZW9mIGUubm9kZVR5cGUmJiJzdHJpbmciPT10eXBlb2YgZS5ub2RlTmFt
ZSkpfWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSl7cmV0dXJuIG8oZSkmJjM9PWUubm9kZVR5cGV9dmFyIG89bigxMDgpO2UuZXhwb3J0cz1yfSxm
dW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe3ZhciB0PXt9O3JldHVybiBm
dW5jdGlvbihuKXtyZXR1cm4gdC5oYXNPd25Qcm9wZXJ0eShuKXx8KHRbbl09ZS5jYWxsKHRoaXMs
bikpLHRbbl19fWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0Ijt2YXIgbj17
Y2hpbGRDb250ZXh0VHlwZXM6ITAsY29udGV4dFR5cGVzOiEwLGRlZmF1bHRQcm9wczohMCxkaXNw
bGF5TmFtZTohMCxnZXREZWZhdWx0UHJvcHM6ITAsbWl4aW5zOiEwLHByb3BUeXBlczohMCx0eXBl
OiEwfSxyPXtuYW1lOiEwLGxlbmd0aDohMCxwcm90b3R5cGU6ITAsY2FsbGVyOiEwLGFyZ3VtZW50
czohMCxhcml0eTohMH0sbz0iZnVuY3Rpb24iPT10eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5
U3ltYm9scztlLmV4cG9ydHM9ZnVuY3Rpb24oZSx0LGkpe2lmKCJzdHJpbmciIT10eXBlb2YgdCl7
dmFyIGE9T2JqZWN0LmdldE93blByb3BlcnR5TmFtZXModCk7byYmKGE9YS5jb25jYXQoT2JqZWN0
LmdldE93blByb3BlcnR5U3ltYm9scyh0KSkpO2Zvcih2YXIgdT0wO3U8YS5sZW5ndGg7Kyt1KWlm
KCEoblthW3VdXXx8clthW3VdXXx8aSYmaVthW3VdXSkpdHJ5e2VbYVt1XV09dFthW3VdXX1jYXRj
aChzKXt9fXJldHVybiBlfX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1mdW5j
dGlvbihlLHQsbixyLG8saSxhLHUpe2lmKCFlKXt2YXIgcztpZih2b2lkIDA9PT10KXM9bmV3IEVy
cm9yKCJNaW5pZmllZCBleGNlcHRpb24gb2NjdXJyZWQ7IHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRl
diBlbnZpcm9ubWVudCBmb3IgdGhlIGZ1bGwgZXJyb3IgbWVzc2FnZSBhbmQgYWRkaXRpb25hbCBo
ZWxwZnVsIHdhcm5pbmdzLiIpO2Vsc2V7dmFyIGw9W24scixvLGksYSx1XSxjPTA7cz1uZXcgRXJy
b3IodC5yZXBsYWNlKC8lcy9nLGZ1bmN0aW9uKCl7cmV0dXJuIGxbYysrXX0pKSxzLm5hbWU9Iklu
dmFyaWFudCBWaW9sYXRpb24ifXRocm93IHMuZnJhbWVzVG9Qb3A9MSxzfX07ZS5leHBvcnRzPXJ9
LGZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uKDExNCksbz1yKE9iamVjdC5nZXRQcm90b3R5cGVPZixP
YmplY3QpO2UuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQpe2Z1bmN0aW9uIG4oZSx0KXtyZXR1cm4g
ZnVuY3Rpb24obil7cmV0dXJuIGUodChuKSl9fWUuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQpe2Z1
bmN0aW9uIG4oZSl7cmV0dXJuIG51bGwhPWUmJiJvYmplY3QiPT10eXBlb2YgZX1lLmV4cG9ydHM9
bn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtlLmV4cG9ydHM9bigxNTEpfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVs
ZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIG8oZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJv
dyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5j
dGlvbiBpKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBi
ZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8
Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24gYShl
LHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9y
KCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90
ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2Nv
bnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxl
OiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUs
dCk6ZS5fX3Byb3RvX189dCl9dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVsdD12b2lkIDA7dmFyIHU9
bigxMSkscz1uKDY0KSxsPXIocyksYz1uKDY1KSxwPShyKGMpLGZ1bmN0aW9uKGUpe2Z1bmN0aW9u
IHQobixyKXtvKHRoaXMsdCk7dmFyIGE9aSh0aGlzLGUuY2FsbCh0aGlzLG4scikpO3JldHVybiBh
LnN0b3JlPW4uc3RvcmUsYX1yZXR1cm4gYSh0LGUpLHQucHJvdG90eXBlLmdldENoaWxkQ29udGV4
dD1mdW5jdGlvbigpe3JldHVybntzdG9yZTp0aGlzLnN0b3JlfX0sdC5wcm90b3R5cGUucmVuZGVy
PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcy5jaGlsZHJlbjtyZXR1cm4gdS5DaGlsZHJlbi5v
bmx5KGUpfSx0fSh1LkNvbXBvbmVudCkpO3QuZGVmYXVsdD1wLHAucHJvcFR5cGVzPXtzdG9yZTps
LmRlZmF1bHQuaXNSZXF1aXJlZCxjaGlsZHJlbjp1LlByb3BUeXBlcy5lbGVtZW50LmlzUmVxdWly
ZWR9LHAuY2hpbGRDb250ZXh0VHlwZXM9e3N0b3JlOmwuZGVmYXVsdC5pc1JlcXVpcmVkfX0sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNN
b2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBvKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkp
dGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fubm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9
ZnVuY3Rpb24gaShlLHQpe2lmKCFlKXRocm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNu
J3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJu
IXR8fCJvYmplY3QiIT10eXBlb2YgdCYmImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fWZ1bmN0aW9u
IGEoZSx0KXtpZigiZnVuY3Rpb24iIT10eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVF
cnJvcigiU3VwZXIgZXhwcmVzc2lvbiBtdXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24s
IG5vdCAiK3R5cGVvZiB0KTtlLnByb3RvdHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBl
LHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxlbnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3Vy
YWJsZTohMH19KSx0JiYoT2JqZWN0LnNldFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVP
ZihlLHQpOmUuX19wcm90b19fPXQpfWZ1bmN0aW9uIHUoZSl7cmV0dXJuIGUuZGlzcGxheU5hbWV8
fGUubmFtZXx8IkNvbXBvbmVudCJ9ZnVuY3Rpb24gcyhlLHQpe3RyeXtyZXR1cm4gZS5hcHBseSh0
KX1jYXRjaChuKXtyZXR1cm4gTy52YWx1ZT1uLE99fWZ1bmN0aW9uIGwoZSx0LG4pe3ZhciByPWFy
Z3VtZW50cy5sZW5ndGg8PTN8fHZvaWQgMD09PWFyZ3VtZW50c1szXT97fTphcmd1bWVudHNbM10s
bD1Cb29sZWFuKGUpLGQ9ZXx8VCxoPXZvaWQgMDtoPSJmdW5jdGlvbiI9PXR5cGVvZiB0P3Q6dD8o
MCx5LmRlZmF1bHQpKHQpOlA7dmFyIG09bnx8eCxnPXIucHVyZSxiPXZvaWQgMD09PWd8fGcsXz1y
LndpdGhSZWYsRT12b2lkIDAhPT1fJiZfLE09YiYmbSE9PXgsTj1TKys7cmV0dXJuIGZ1bmN0aW9u
KGUpe2Z1bmN0aW9uIHQoZSx0LG4pe3ZhciByPW0oZSx0LG4pO3JldHVybiByfXZhciBuPSJDb25u
ZWN0KCIrdShlKSsiKSIscj1mdW5jdGlvbihyKXtmdW5jdGlvbiB1KGUsdCl7byh0aGlzLHUpO3Zh
ciBhPWkodGhpcyxyLmNhbGwodGhpcyxlLHQpKTthLnZlcnNpb249TixhLnN0b3JlPWUuc3RvcmV8
fHQuc3RvcmUsKDAsdy5kZWZhdWx0KShhLnN0b3JlLCdDb3VsZCBub3QgZmluZCAic3RvcmUiIGlu
IGVpdGhlciB0aGUgY29udGV4dCBvciAnKygncHJvcHMgb2YgIicrbisnIi4gJykrIkVpdGhlciB3
cmFwIHRoZSByb290IGNvbXBvbmVudCBpbiBhIDxQcm92aWRlcj4sICIrKCdvciBleHBsaWNpdGx5
IHBhc3MgInN0b3JlIiBhcyBhIHByb3AgdG8gIicrbisnIi4nKSk7dmFyIHM9YS5zdG9yZS5nZXRT
dGF0ZSgpO3JldHVybiBhLnN0YXRlPXtzdG9yZVN0YXRlOnN9LGEuY2xlYXJDYWNoZSgpLGF9cmV0
dXJuIGEodSxyKSx1LnByb3RvdHlwZS5zaG91bGRDb21wb25lbnRVcGRhdGU9ZnVuY3Rpb24oKXty
ZXR1cm4hYnx8dGhpcy5oYXZlT3duUHJvcHNDaGFuZ2VkfHx0aGlzLmhhc1N0b3JlU3RhdGVDaGFu
Z2VkfSx1LnByb3RvdHlwZS5jb21wdXRlU3RhdGVQcm9wcz1mdW5jdGlvbihlLHQpe2lmKCF0aGlz
LmZpbmFsTWFwU3RhdGVUb1Byb3BzKXJldHVybiB0aGlzLmNvbmZpZ3VyZUZpbmFsTWFwU3RhdGUo
ZSx0KTt2YXIgbj1lLmdldFN0YXRlKCkscj10aGlzLmRvU3RhdGVQcm9wc0RlcGVuZE9uT3duUHJv
cHM/dGhpcy5maW5hbE1hcFN0YXRlVG9Qcm9wcyhuLHQpOnRoaXMuZmluYWxNYXBTdGF0ZVRvUHJv
cHMobik7cmV0dXJuIHJ9LHUucHJvdG90eXBlLmNvbmZpZ3VyZUZpbmFsTWFwU3RhdGU9ZnVuY3Rp
b24oZSx0KXt2YXIgbj1kKGUuZ2V0U3RhdGUoKSx0KSxyPSJmdW5jdGlvbiI9PXR5cGVvZiBuO3Jl
dHVybiB0aGlzLmZpbmFsTWFwU3RhdGVUb1Byb3BzPXI/bjpkLHRoaXMuZG9TdGF0ZVByb3BzRGVw
ZW5kT25Pd25Qcm9wcz0xIT09dGhpcy5maW5hbE1hcFN0YXRlVG9Qcm9wcy5sZW5ndGgscj90aGlz
LmNvbXB1dGVTdGF0ZVByb3BzKGUsdCk6bn0sdS5wcm90b3R5cGUuY29tcHV0ZURpc3BhdGNoUHJv
cHM9ZnVuY3Rpb24oZSx0KXtpZighdGhpcy5maW5hbE1hcERpc3BhdGNoVG9Qcm9wcylyZXR1cm4g
dGhpcy5jb25maWd1cmVGaW5hbE1hcERpc3BhdGNoKGUsdCk7dmFyIG49ZS5kaXNwYXRjaCxyPXRo
aXMuZG9EaXNwYXRjaFByb3BzRGVwZW5kT25Pd25Qcm9wcz90aGlzLmZpbmFsTWFwRGlzcGF0Y2hU
b1Byb3BzKG4sdCk6dGhpcy5maW5hbE1hcERpc3BhdGNoVG9Qcm9wcyhuKTtyZXR1cm4gcn0sdS5w
cm90b3R5cGUuY29uZmlndXJlRmluYWxNYXBEaXNwYXRjaD1mdW5jdGlvbihlLHQpe3ZhciBuPWgo
ZS5kaXNwYXRjaCx0KSxyPSJmdW5jdGlvbiI9PXR5cGVvZiBuO3JldHVybiB0aGlzLmZpbmFsTWFw
RGlzcGF0Y2hUb1Byb3BzPXI/bjpoLHRoaXMuZG9EaXNwYXRjaFByb3BzRGVwZW5kT25Pd25Qcm9w
cz0xIT09dGhpcy5maW5hbE1hcERpc3BhdGNoVG9Qcm9wcy5sZW5ndGgscj90aGlzLmNvbXB1dGVE
aXNwYXRjaFByb3BzKGUsdCk6bn0sdS5wcm90b3R5cGUudXBkYXRlU3RhdGVQcm9wc0lmTmVlZGVk
PWZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jb21wdXRlU3RhdGVQcm9wcyh0aGlzLnN0b3JlLHRoaXMu
cHJvcHMpO3JldHVybighdGhpcy5zdGF0ZVByb3BzfHwhKDAsdi5kZWZhdWx0KShlLHRoaXMuc3Rh
dGVQcm9wcykpJiYodGhpcy5zdGF0ZVByb3BzPWUsITApfSx1LnByb3RvdHlwZS51cGRhdGVEaXNw
YXRjaFByb3BzSWZOZWVkZWQ9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLmNvbXB1dGVEaXNwYXRjaFBy
b3BzKHRoaXMuc3RvcmUsdGhpcy5wcm9wcyk7cmV0dXJuKCF0aGlzLmRpc3BhdGNoUHJvcHN8fCEo
MCx2LmRlZmF1bHQpKGUsdGhpcy5kaXNwYXRjaFByb3BzKSkmJih0aGlzLmRpc3BhdGNoUHJvcHM9
ZSwhMCl9LHUucHJvdG90eXBlLnVwZGF0ZU1lcmdlZFByb3BzSWZOZWVkZWQ9ZnVuY3Rpb24oKXt2
YXIgZT10KHRoaXMuc3RhdGVQcm9wcyx0aGlzLmRpc3BhdGNoUHJvcHMsdGhpcy5wcm9wcyk7cmV0
dXJuISh0aGlzLm1lcmdlZFByb3BzJiZNJiYoMCx2LmRlZmF1bHQpKGUsdGhpcy5tZXJnZWRQcm9w
cykpJiYodGhpcy5tZXJnZWRQcm9wcz1lLCEwKX0sdS5wcm90b3R5cGUuaXNTdWJzY3JpYmVkPWZ1
bmN0aW9uKCl7cmV0dXJuImZ1bmN0aW9uIj09dHlwZW9mIHRoaXMudW5zdWJzY3JpYmV9LHUucHJv
dG90eXBlLnRyeVN1YnNjcmliZT1mdW5jdGlvbigpe2wmJiF0aGlzLnVuc3Vic2NyaWJlJiYodGhp
cy51bnN1YnNjcmliZT10aGlzLnN0b3JlLnN1YnNjcmliZSh0aGlzLmhhbmRsZUNoYW5nZS5iaW5k
KHRoaXMpKSx0aGlzLmhhbmRsZUNoYW5nZSgpKX0sdS5wcm90b3R5cGUudHJ5VW5zdWJzY3JpYmU9
ZnVuY3Rpb24oKXt0aGlzLnVuc3Vic2NyaWJlJiYodGhpcy51bnN1YnNjcmliZSgpLHRoaXMudW5z
dWJzY3JpYmU9bnVsbCl9LHUucHJvdG90eXBlLmNvbXBvbmVudERpZE1vdW50PWZ1bmN0aW9uKCl7
dGhpcy50cnlTdWJzY3JpYmUoKX0sdS5wcm90b3R5cGUuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9w
cz1mdW5jdGlvbihlKXtiJiYoMCx2LmRlZmF1bHQpKGUsdGhpcy5wcm9wcyl8fCh0aGlzLmhhdmVP
d25Qcm9wc0NoYW5nZWQ9ITApfSx1LnByb3RvdHlwZS5jb21wb25lbnRXaWxsVW5tb3VudD1mdW5j
dGlvbigpe3RoaXMudHJ5VW5zdWJzY3JpYmUoKSx0aGlzLmNsZWFyQ2FjaGUoKX0sdS5wcm90b3R5
cGUuY2xlYXJDYWNoZT1mdW5jdGlvbigpe3RoaXMuZGlzcGF0Y2hQcm9wcz1udWxsLHRoaXMuc3Rh
dGVQcm9wcz1udWxsLHRoaXMubWVyZ2VkUHJvcHM9bnVsbCx0aGlzLmhhdmVPd25Qcm9wc0NoYW5n
ZWQ9ITAsdGhpcy5oYXNTdG9yZVN0YXRlQ2hhbmdlZD0hMCx0aGlzLmhhdmVTdGF0ZVByb3BzQmVl
blByZWNhbGN1bGF0ZWQ9ITEsdGhpcy5zdGF0ZVByb3BzUHJlY2FsY3VsYXRpb25FcnJvcj1udWxs
LHRoaXMucmVuZGVyZWRFbGVtZW50PW51bGwsdGhpcy5maW5hbE1hcERpc3BhdGNoVG9Qcm9wcz1u
dWxsLHRoaXMuZmluYWxNYXBTdGF0ZVRvUHJvcHM9bnVsbH0sdS5wcm90b3R5cGUuaGFuZGxlQ2hh
bmdlPWZ1bmN0aW9uKCl7aWYodGhpcy51bnN1YnNjcmliZSl7dmFyIGU9dGhpcy5zdG9yZS5nZXRT
dGF0ZSgpLHQ9dGhpcy5zdGF0ZS5zdG9yZVN0YXRlO2lmKCFifHx0IT09ZSl7aWYoYiYmIXRoaXMu
ZG9TdGF0ZVByb3BzRGVwZW5kT25Pd25Qcm9wcyl7dmFyIG49cyh0aGlzLnVwZGF0ZVN0YXRlUHJv
cHNJZk5lZWRlZCx0aGlzKTtpZighbilyZXR1cm47bj09PU8mJih0aGlzLnN0YXRlUHJvcHNQcmVj
YWxjdWxhdGlvbkVycm9yPU8udmFsdWUpLHRoaXMuaGF2ZVN0YXRlUHJvcHNCZWVuUHJlY2FsY3Vs
YXRlZD0hMH10aGlzLmhhc1N0b3JlU3RhdGVDaGFuZ2VkPSEwLHRoaXMuc2V0U3RhdGUoe3N0b3Jl
U3RhdGU6ZX0pfX19LHUucHJvdG90eXBlLmdldFdyYXBwZWRJbnN0YW5jZT1mdW5jdGlvbigpe3Jl
dHVybigwLHcuZGVmYXVsdCkoRSwiVG8gYWNjZXNzIHRoZSB3cmFwcGVkIGluc3RhbmNlLCB5b3Ug
bmVlZCB0byBzcGVjaWZ5IHsgd2l0aFJlZjogdHJ1ZSB9IGFzIHRoZSBmb3VydGggYXJndW1lbnQg
b2YgdGhlIGNvbm5lY3QoKSBjYWxsLiIpLHRoaXMucmVmcy53cmFwcGVkSW5zdGFuY2V9LHUucHJv
dG90eXBlLnJlbmRlcj1mdW5jdGlvbigpe3ZhciB0PXRoaXMuaGF2ZU93blByb3BzQ2hhbmdlZCxu
PXRoaXMuaGFzU3RvcmVTdGF0ZUNoYW5nZWQscj10aGlzLmhhdmVTdGF0ZVByb3BzQmVlblByZWNh
bGN1bGF0ZWQsbz10aGlzLnN0YXRlUHJvcHNQcmVjYWxjdWxhdGlvbkVycm9yLGk9dGhpcy5yZW5k
ZXJlZEVsZW1lbnQ7aWYodGhpcy5oYXZlT3duUHJvcHNDaGFuZ2VkPSExLHRoaXMuaGFzU3RvcmVT
dGF0ZUNoYW5nZWQ9ITEsdGhpcy5oYXZlU3RhdGVQcm9wc0JlZW5QcmVjYWxjdWxhdGVkPSExLHRo
aXMuc3RhdGVQcm9wc1ByZWNhbGN1bGF0aW9uRXJyb3I9bnVsbCxvKXRocm93IG87dmFyIGE9ITAs
dT0hMDtiJiZpJiYoYT1ufHx0JiZ0aGlzLmRvU3RhdGVQcm9wc0RlcGVuZE9uT3duUHJvcHMsdT10
JiZ0aGlzLmRvRGlzcGF0Y2hQcm9wc0RlcGVuZE9uT3duUHJvcHMpO3ZhciBzPSExLGw9ITE7cj9z
PSEwOmEmJihzPXRoaXMudXBkYXRlU3RhdGVQcm9wc0lmTmVlZGVkKCkpLHUmJihsPXRoaXMudXBk
YXRlRGlzcGF0Y2hQcm9wc0lmTmVlZGVkKCkpO3ZhciBkPSEwO3JldHVybiBkPSEhKHN8fGx8fHQp
JiZ0aGlzLnVwZGF0ZU1lcmdlZFByb3BzSWZOZWVkZWQoKSwhZCYmaT9pOihFP3RoaXMucmVuZGVy
ZWRFbGVtZW50PSgwLHAuY3JlYXRlRWxlbWVudCkoZSxjKHt9LHRoaXMubWVyZ2VkUHJvcHMse3Jl
Zjoid3JhcHBlZEluc3RhbmNlIn0pKTp0aGlzLnJlbmRlcmVkRWxlbWVudD0oMCxwLmNyZWF0ZUVs
ZW1lbnQpKGUsdGhpcy5tZXJnZWRQcm9wcyksdGhpcy5yZW5kZXJlZEVsZW1lbnQpfSx1fShwLkNv
bXBvbmVudCk7cmV0dXJuIHIuZGlzcGxheU5hbWU9bixyLldyYXBwZWRDb21wb25lbnQ9ZSxyLmNv
bnRleHRUeXBlcz17c3RvcmU6Zi5kZWZhdWx0fSxyLnByb3BUeXBlcz17c3RvcmU6Zi5kZWZhdWx0
fSwoMCxDLmRlZmF1bHQpKHIsZSl9fXZhciBjPU9iamVjdC5hc3NpZ258fGZ1bmN0aW9uKGUpe2Zv
cih2YXIgdD0xO3Q8YXJndW1lbnRzLmxlbmd0aDt0Kyspe3ZhciBuPWFyZ3VtZW50c1t0XTtmb3Io
dmFyIHIgaW4gbilPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobixyKSYmKGVb
cl09bltyXSl9cmV0dXJuIGV9O3QuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9bDt2YXIgcD1uKDEx
KSxkPW4oNjQpLGY9cihkKSxoPW4oMTE5KSx2PXIoaCksbT1uKDEyMCkseT1yKG0pLGc9big2NSks
Yj0ocihnKSxuKDM1KSksXz0ocihiKSxuKDExMSkpLEM9cihfKSxFPW4oMTEyKSx3PXIoRSksVD1m
dW5jdGlvbihlKXtyZXR1cm57fX0sUD1mdW5jdGlvbihlKXtyZXR1cm57ZGlzcGF0Y2g6ZX19LHg9
ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBjKHt9LG4sZSx0KX0sTz17dmFsdWU6bnVsbH0sUz0wfSxm
dW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7aWYoZT09PXQpcmV0dXJu
ITA7dmFyIG49T2JqZWN0LmtleXMoZSkscj1PYmplY3Qua2V5cyh0KTtpZihuLmxlbmd0aCE9PXIu
bGVuZ3RoKXJldHVybiExO2Zvcih2YXIgbz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5
LGk9MDtpPG4ubGVuZ3RoO2krKylpZighby5jYWxsKHQsbltpXSl8fGVbbltpXV0hPT10W25baV1d
KXJldHVybiExO3JldHVybiEwfXQuX19lc01vZHVsZT0hMCx0LmRlZmF1bHQ9bn0sZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBmdW5jdGlvbih0KXtyZXR1
cm4oMCxvLmJpbmRBY3Rpb25DcmVhdG9ycykoZSx0KX19dC5fX2VzTW9kdWxlPSEwLHQuZGVmYXVs
dD1yO3ZhciBvPW4oMzIpfSxmdW5jdGlvbihlLHQsbil7InVuZGVmaW5lZCI9PXR5cGVvZiBQcm9t
aXNlJiYobigxMzUpLmVuYWJsZSgpLHdpbmRvdy5Qcm9taXNlPW4oMTM0KSksbigxMzcpLE9iamVj
dC5hc3NpZ249bigxMzMpfSxmdW5jdGlvbihlLHQpeyhmdW5jdGlvbih0KXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gbihlKXt1Lmxlbmd0aHx8KGEoKSxzPSEwKSx1W3UubGVuZ3RoXT1lfWZ1bmN0aW9u
IHIoKXtmb3IoO2w8dS5sZW5ndGg7KXt2YXIgZT1sO2lmKGwrPTEsdVtlXS5jYWxsKCksbD5jKXtm
b3IodmFyIHQ9MCxuPXUubGVuZ3RoLWw7dDxuO3QrKyl1W3RdPXVbdCtsXTt1Lmxlbmd0aC09bCxs
PTB9fXUubGVuZ3RoPTAsbD0wLHM9ITF9ZnVuY3Rpb24gbyhlKXt2YXIgdD0xLG49bmV3IGQoZSks
cj1kb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgiIik7cmV0dXJuIG4ub2JzZXJ2ZShyLHtjaGFyYWN0
ZXJEYXRhOiEwfSksZnVuY3Rpb24oKXt0PS10LHIuZGF0YT10fX1mdW5jdGlvbiBpKGUpe3JldHVy
biBmdW5jdGlvbigpe2Z1bmN0aW9uIHQoKXtjbGVhclRpbWVvdXQobiksY2xlYXJJbnRlcnZhbChy
KSxlKCl9dmFyIG49c2V0VGltZW91dCh0LDApLHI9c2V0SW50ZXJ2YWwodCw1MCl9fWUuZXhwb3J0
cz1uO3ZhciBhLHU9W10scz0hMSxsPTAsYz0xMDI0LHA9InVuZGVmaW5lZCIhPXR5cGVvZiB0P3Q6
c2VsZixkPXAuTXV0YXRpb25PYnNlcnZlcnx8cC5XZWJLaXRNdXRhdGlvbk9ic2VydmVyO2E9ImZ1
bmN0aW9uIj09dHlwZW9mIGQ/byhyKTppKHIpLG4ucmVxdWVzdEZsdXNoPWEsbi5tYWtlUmVxdWVz
dENhbGxGcm9tVGltZXI9aX0pLmNhbGwodCxmdW5jdGlvbigpe3JldHVybiB0aGlzfSgpKX0sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKGUmJmUuX19lc01vZHVs
ZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxsIT1lKWZvcih2YXIgbiBpbiBlKU9iamVjdC5wcm90
b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlLG4pJiYodFtuXT1lW25dKTtyZXR1cm4gdC5kZWZh
dWx0PWUsdH1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSks
dC5jbGVhckNvbXBsZXRlZD10LmNvbXBsZXRlQWxsPXQuY29tcGxldGVUb2RvPXQuZWRpdFRvZG89
dC5kZWxldGVUb2RvPXQuYWRkVG9kbz12b2lkIDA7dmFyIG89big2NyksaT1yKG8pO3QuYWRkVG9k
bz1mdW5jdGlvbihlKXtyZXR1cm57dHlwZTppLkFERF9UT0RPLHRleHQ6ZX19LHQuZGVsZXRlVG9k
bz1mdW5jdGlvbihlKXtyZXR1cm57dHlwZTppLkRFTEVURV9UT0RPLGlkOmV9fSx0LmVkaXRUb2Rv
PWZ1bmN0aW9uKGUsdCl7cmV0dXJue3R5cGU6aS5FRElUX1RPRE8saWQ6ZSx0ZXh0OnR9fSx0LmNv
bXBsZXRlVG9kbz1mdW5jdGlvbihlKXtyZXR1cm57dHlwZTppLkNPTVBMRVRFX1RPRE8saWQ6ZX19
LHQuY29tcGxldGVBbGw9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTppLkNPTVBMRVRFX0FMTH19LHQu
Y2xlYXJDb21wbGV0ZWQ9ZnVuY3Rpb24oKXtyZXR1cm57dHlwZTppLkNMRUFSX0NPTVBMRVRFRH19
fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUu
X19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIG8oZSx0KXtpZighKGUgaW5zdGFuY2Vv
ZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rp
b24iKX1mdW5jdGlvbiBpKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5jZUVycm9yKCJ0aGlz
IGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVlbiBjYWxsZWQiKTty
ZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBlb2YgdD9lOnR9ZnVu
Y3Rpb24gYShlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09dCl0aHJvdyBuZXcg
VHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51bGwgb3IgYSBmdW5j
dGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVhdGUodCYmdC5wcm90
b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3JpdGFibGU6ITAsY29u
ZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2JqZWN0LnNldFByb3Rv
dHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9ZnVuY3Rpb24gdShlLHQsbil7cmV0dXJuIHQgaW4g
ZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpuLGVudW1lcmFibGU6ITAsY29uZmln
dXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9T2JqZWN0LmRlZmluZVByb3BlcnR5KHQs
Il9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBzLGw9ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUs
dCl7Zm9yKHZhciBuPTA7bjx0Lmxlbmd0aDtuKyspe3ZhciByPXRbbl07ci5lbnVtZXJhYmxlPXIu
ZW51bWVyYWJsZXx8ITEsci5jb25maWd1cmFibGU9ITAsInZhbHVlImluIHImJihyLndyaXRhYmxl
PSEwKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoZSxyLmtleSxyKX19cmV0dXJuIGZ1bmN0aW9uKHQs
bixyKXtyZXR1cm4gbiYmZSh0LnByb3RvdHlwZSxuKSxyJiZlKHQsciksdH19KCksYz1uKDExKSxw
PXIoYyksZD1uKDMzKSxmPXIoZCksaD1uKDY4KSx2PShzPXt9LHUocyxoLlNIT1dfQUxMLCJBbGwi
KSx1KHMsaC5TSE9XX0FDVElWRSwiQWN0aXZlIiksdShzLGguU0hPV19DT01QTEVURUQsIkNvbXBs
ZXRlZCIpLHMpLG09ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3JldHVybiBvKHRoaXMsdCksaSh0
aGlzLCh0Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5hcHBseSh0aGlzLGFy
Z3VtZW50cykpfXJldHVybiBhKHQsZSksbCh0LFt7a2V5OiJyZW5kZXJUb2RvQ291bnQiLHZhbHVl
OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5wcm9wcy5hY3RpdmVDb3VudCx0PTE9PT1lPyJpdGVtIjoi
aXRlbXMiO3JldHVybiBwLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgic3BhbiIse2NsYXNzTmFtZToi
dG9kby1jb3VudCJ9LHAuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJzdHJvbmciLG51bGwsZXx8Ik5v
IiksIiAiLHQsIiBsZWZ0Iil9fSx7a2V5OiJyZW5kZXJGaWx0ZXJMaW5rIix2YWx1ZTpmdW5jdGlv
bihlKXt2YXIgdD12W2VdLG49dGhpcy5wcm9wcyxyPW4uZmlsdGVyLG89bi5vblNob3c7cmV0dXJu
IHAuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJhIix7Y2xhc3NOYW1lOigwLGYuZGVmYXVsdCkoe3Nl
bGVjdGVkOmU9PT1yfSksc3R5bGU6e2N1cnNvcjoicG9pbnRlciJ9LG9uQ2xpY2s6ZnVuY3Rpb24o
KXtyZXR1cm4gbyhlKX19LHQpfX0se2tleToicmVuZGVyQ2xlYXJCdXR0b24iLHZhbHVlOmZ1bmN0
aW9uKCl7dmFyIGU9dGhpcy5wcm9wcyx0PWUuY29tcGxldGVkQ291bnQsbj1lLm9uQ2xlYXJDb21w
bGV0ZWQ7aWYodD4wKXJldHVybiBwLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIix7Y2xh
c3NOYW1lOiJjbGVhci1jb21wbGV0ZWQiLG9uQ2xpY2s6bn0sIkNsZWFyIGNvbXBsZXRlZCIpfX0s
e2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXM7cmV0dXJuIHAuZGVmYXVs
dC5jcmVhdGVFbGVtZW50KCJmb290ZXIiLHtjbGFzc05hbWU6ImZvb3RlciJ9LHRoaXMucmVuZGVy
VG9kb0NvdW50KCkscC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoInVsIix7Y2xhc3NOYW1lOiJmaWx0
ZXJzIn0sW2guU0hPV19BTEwsaC5TSE9XX0FDVElWRSxoLlNIT1dfQ09NUExFVEVEXS5tYXAoZnVu
Y3Rpb24odCl7cmV0dXJuIHAuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJsaSIse2tleTp0fSxlLnJl
bmRlckZpbHRlckxpbmsodCkpfSkpLHRoaXMucmVuZGVyQ2xlYXJCdXR0b24oKSl9fV0pLHR9KGMu
Q29tcG9uZW50KTttLnByb3BUeXBlcz17Y29tcGxldGVkQ291bnQ6Yy5Qcm9wVHlwZXMubnVtYmVy
LmlzUmVxdWlyZWQsYWN0aXZlQ291bnQ6Yy5Qcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWQsZmls
dGVyOmMuUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLG9uQ2xlYXJDb21wbGV0ZWQ6Yy5Qcm9w
VHlwZXMuZnVuYy5pc1JlcXVpcmVkLG9uU2hvdzpjLlByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWR9
LHQuZGVmYXVsdD1tfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7
cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIG8oZSx0KXtpZigh
KGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNz
IGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBpKGUsdCl7aWYoIWUpdGhyb3cgbmV3IFJlZmVyZW5j
ZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBoYXNuJ3QgYmVl
biBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rpb24iIT10eXBl
b2YgdD9lOnR9ZnVuY3Rpb24gYShlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0JiZudWxsIT09
dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0aGVyIGJlIG51
bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9iamVjdC5jcmVh
dGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFibGU6ITEsd3Jp
dGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90eXBlT2Y/T2Jq
ZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9T2JqZWN0LmRlZmluZVByb3Bl
cnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciB1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24g
ZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25dO3IuZW51bWVyYWJs
ZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJpbiByJiYoci53cml0
YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJldHVybiBmdW5jdGlv
bih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIpLHR9fSgpLHM9bigx
MSksbD1yKHMpLGM9big2NikscD1yKGMpLGQ9ZnVuY3Rpb24oZSl7ZnVuY3Rpb24gdCgpe3ZhciBl
LG4scixhO28odGhpcyx0KTtmb3IodmFyIHU9YXJndW1lbnRzLmxlbmd0aCxzPUFycmF5KHUpLGw9
MDtsPHU7bCsrKXNbbF09YXJndW1lbnRzW2xdO3JldHVybiBuPXI9aSh0aGlzLChlPXQuX19wcm90
b19ffHxPYmplY3QuZ2V0UHJvdG90eXBlT2YodCkpLmNhbGwuYXBwbHkoZSxbdGhpc10uY29uY2F0
KHMpKSksci5oYW5kbGVTYXZlPWZ1bmN0aW9uKGUpezAhPT1lLmxlbmd0aCYmci5wcm9wcy5hZGRU
b2RvKGUpfSxhPW4saShyLGEpfXJldHVybiBhKHQsZSksdSh0LFt7a2V5OiJyZW5kZXIiLHZhbHVl
OmZ1bmN0aW9uKCl7cmV0dXJuIGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJoZWFkZXIiLHtjbGFz
c05hbWU6ImhlYWRlciJ9LGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJoMSIsbnVsbCwidG9kb3Mi
KSxsLmRlZmF1bHQuY3JlYXRlRWxlbWVudChwLmRlZmF1bHQse25ld1RvZG86ITAsb25TYXZlOnRo
aXMuaGFuZGxlU2F2ZSxwbGFjZWhvbGRlcjoiV2hhdCBuZWVkcyB0byBiZSBkb25lPyJ9KSl9fV0p
LHR9KHMuQ29tcG9uZW50KTtkLnByb3BUeXBlcz17YWRkVG9kbzpzLlByb3BUeXBlcy5mdW5jLmlz
UmVxdWlyZWR9LHQuZGVmYXVsdD1kfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19lc01vZHVsZT9lOntkZWZhdWx0OmV9fWZ1bmN0aW9uIG8o
ZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9yKCJDYW5ub3QgY2Fs
bCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX1mdW5jdGlvbiBpKGUsdCl7aWYoIWUpdGhyb3cgbmV3
IFJlZmVyZW5jZUVycm9yKCJ0aGlzIGhhc24ndCBiZWVuIGluaXRpYWxpc2VkIC0gc3VwZXIoKSBo
YXNuJ3QgYmVlbiBjYWxsZWQiKTtyZXR1cm4hdHx8Im9iamVjdCIhPXR5cGVvZiB0JiYiZnVuY3Rp
b24iIT10eXBlb2YgdD9lOnR9ZnVuY3Rpb24gYShlLHQpe2lmKCJmdW5jdGlvbiIhPXR5cGVvZiB0
JiZudWxsIT09dCl0aHJvdyBuZXcgVHlwZUVycm9yKCJTdXBlciBleHByZXNzaW9uIG11c3QgZWl0
aGVyIGJlIG51bGwgb3IgYSBmdW5jdGlvbiwgbm90ICIrdHlwZW9mIHQpO2UucHJvdG90eXBlPU9i
amVjdC5jcmVhdGUodCYmdC5wcm90b3R5cGUse2NvbnN0cnVjdG9yOnt2YWx1ZTplLGVudW1lcmFi
bGU6ITEsd3JpdGFibGU6ITAsY29uZmlndXJhYmxlOiEwfX0pLHQmJihPYmplY3Quc2V0UHJvdG90
eXBlT2Y/T2JqZWN0LnNldFByb3RvdHlwZU9mKGUsdCk6ZS5fX3Byb3RvX189dCl9ZnVuY3Rpb24g
dShlLHQsbil7cmV0dXJuIHQgaW4gZT9PYmplY3QuZGVmaW5lUHJvcGVydHkoZSx0LHt2YWx1ZTpu
LGVudW1lcmFibGU6ITAsY29uZmlndXJhYmxlOiEwLHdyaXRhYmxlOiEwfSk6ZVt0XT1uLGV9T2Jq
ZWN0LmRlZmluZVByb3BlcnR5KHQsIl9fZXNNb2R1bGUiLHt2YWx1ZTohMH0pO3ZhciBzLGw9T2Jq
ZWN0LmFzc2lnbnx8ZnVuY3Rpb24oZSl7Ci1mb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7
dCsrKXt2YXIgbj1hcmd1bWVudHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5o
YXNPd25Qcm9wZXJ0eS5jYWxsKG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfSxjPWZ1bmN0aW9u
KCl7ZnVuY3Rpb24gZShlLHQpe2Zvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXt2YXIgcj10W25d
O3IuZW51bWVyYWJsZT1yLmVudW1lcmFibGV8fCExLHIuY29uZmlndXJhYmxlPSEwLCJ2YWx1ZSJp
biByJiYoci53cml0YWJsZT0hMCksT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsci5rZXkscil9fXJl
dHVybiBmdW5jdGlvbih0LG4scil7cmV0dXJuIG4mJmUodC5wcm90b3R5cGUsbiksciYmZSh0LHIp
LHR9fSgpLHA9bigxMSksZD1yKHApLGY9bigxMjcpLGg9cihmKSx2PW4oMTI0KSxtPXIodikseT1u
KDY4KSxnPShzPXt9LHUocyx5LlNIT1dfQUxMLGZ1bmN0aW9uKCl7cmV0dXJuITB9KSx1KHMseS5T
SE9XX0FDVElWRSxmdW5jdGlvbihlKXtyZXR1cm4hZS5jb21wbGV0ZWR9KSx1KHMseS5TSE9XX0NP
TVBMRVRFRCxmdW5jdGlvbihlKXtyZXR1cm4gZS5jb21wbGV0ZWR9KSxzKSxiPWZ1bmN0aW9uKGUp
e2Z1bmN0aW9uIHQoKXt2YXIgZSxuLHIsYTtvKHRoaXMsdCk7Zm9yKHZhciB1PWFyZ3VtZW50cy5s
ZW5ndGgscz1BcnJheSh1KSxsPTA7bDx1O2wrKylzW2xdPWFyZ3VtZW50c1tsXTtyZXR1cm4gbj1y
PWkodGhpcywoZT10Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9mKHQpKS5jYWxsLmFw
cGx5KGUsW3RoaXNdLmNvbmNhdChzKSkpLHIuc3RhdGU9e2ZpbHRlcjp5LlNIT1dfQUxMfSxyLmhh
bmRsZUNsZWFyQ29tcGxldGVkPWZ1bmN0aW9uKCl7ci5wcm9wcy5hY3Rpb25zLmNsZWFyQ29tcGxl
dGVkKCl9LHIuaGFuZGxlU2hvdz1mdW5jdGlvbihlKXtyLnNldFN0YXRlKHtmaWx0ZXI6ZX0pfSxh
PW4saShyLGEpfXJldHVybiBhKHQsZSksYyh0LFt7a2V5OiJyZW5kZXJUb2dnbGVBbGwiLHZhbHVl
OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucHJvcHMsbj10LnRvZG9zLHI9dC5hY3Rpb25zO2lmKG4u
bGVuZ3RoPjApcmV0dXJuIGQuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJpbnB1dCIse2NsYXNzTmFt
ZToidG9nZ2xlLWFsbCIsdHlwZToiY2hlY2tib3giLGNoZWNrZWQ6ZT09PW4ubGVuZ3RoLG9uQ2hh
bmdlOnIuY29tcGxldGVBbGx9KX19LHtrZXk6InJlbmRlckZvb3RlciIsdmFsdWU6ZnVuY3Rpb24o
ZSl7dmFyIHQ9dGhpcy5wcm9wcy50b2RvcyxuPXRoaXMuc3RhdGUuZmlsdGVyLHI9dC5sZW5ndGgt
ZTtpZih0Lmxlbmd0aClyZXR1cm4gZC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQobS5kZWZhdWx0LHtj
b21wbGV0ZWRDb3VudDplLGFjdGl2ZUNvdW50OnIsZmlsdGVyOm4sb25DbGVhckNvbXBsZXRlZDp0
aGlzLmhhbmRsZUNsZWFyQ29tcGxldGVkLmJpbmQodGhpcyksb25TaG93OnRoaXMuaGFuZGxlU2hv
dy5iaW5kKHRoaXMpfSl9fSx7a2V5OiJyZW5kZXIiLHZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhp
cy5wcm9wcyx0PWUudG9kb3Msbj1lLmFjdGlvbnMscj10aGlzLnN0YXRlLmZpbHRlcixvPXQuZmls
dGVyKGdbcl0pLGk9dC5yZWR1Y2UoZnVuY3Rpb24oZSx0KXtyZXR1cm4gdC5jb21wbGV0ZWQ/ZSsx
OmV9LDApO3JldHVybiBkLmRlZmF1bHQuY3JlYXRlRWxlbWVudCgic2VjdGlvbiIse2NsYXNzTmFt
ZToibWFpbiJ9LHRoaXMucmVuZGVyVG9nZ2xlQWxsKGkpLGQuZGVmYXVsdC5jcmVhdGVFbGVtZW50
KCJ1bCIse2NsYXNzTmFtZToidG9kby1saXN0In0sby5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGQu
ZGVmYXVsdC5jcmVhdGVFbGVtZW50KGguZGVmYXVsdCxsKHtrZXk6ZS5pZCx0b2RvOmV9LG4pKX0p
KSx0aGlzLnJlbmRlckZvb3RlcihpKSl9fV0pLHR9KHAuQ29tcG9uZW50KTtiLnByb3BUeXBlcz17
dG9kb3M6cC5Qcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxhY3Rpb25zOnAuUHJvcFR5cGVzLm9i
amVjdC5pc1JlcXVpcmVkfSx0LmRlZmF1bHQ9Yn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5j
dGlvbiBvKGUsdCl7aWYoIShlIGluc3RhbmNlb2YgdCkpdGhyb3cgbmV3IFR5cGVFcnJvcigiQ2Fu
bm90IGNhbGwgYSBjbGFzcyBhcyBhIGZ1bmN0aW9uIil9ZnVuY3Rpb24gaShlLHQpe2lmKCFlKXRo
cm93IG5ldyBSZWZlcmVuY2VFcnJvcigidGhpcyBoYXNuJ3QgYmVlbiBpbml0aWFsaXNlZCAtIHN1
cGVyKCkgaGFzbid0IGJlZW4gY2FsbGVkIik7cmV0dXJuIXR8fCJvYmplY3QiIT10eXBlb2YgdCYm
ImZ1bmN0aW9uIiE9dHlwZW9mIHQ/ZTp0fWZ1bmN0aW9uIGEoZSx0KXtpZigiZnVuY3Rpb24iIT10
eXBlb2YgdCYmbnVsbCE9PXQpdGhyb3cgbmV3IFR5cGVFcnJvcigiU3VwZXIgZXhwcmVzc2lvbiBt
dXN0IGVpdGhlciBiZSBudWxsIG9yIGEgZnVuY3Rpb24sIG5vdCAiK3R5cGVvZiB0KTtlLnByb3Rv
dHlwZT1PYmplY3QuY3JlYXRlKHQmJnQucHJvdG90eXBlLHtjb25zdHJ1Y3Rvcjp7dmFsdWU6ZSxl
bnVtZXJhYmxlOiExLHdyaXRhYmxlOiEwLGNvbmZpZ3VyYWJsZTohMH19KSx0JiYoT2JqZWN0LnNl
dFByb3RvdHlwZU9mP09iamVjdC5zZXRQcm90b3R5cGVPZihlLHQpOmUuX19wcm90b19fPXQpfU9i
amVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxlIix7dmFsdWU6ITB9KTt2YXIgdT1mdW5j
dGlvbigpe2Z1bmN0aW9uIGUoZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl7dmFyIHI9
dFtuXTtyLmVudW1lcmFibGU9ci5lbnVtZXJhYmxlfHwhMSxyLmNvbmZpZ3VyYWJsZT0hMCwidmFs
dWUiaW4gciYmKHIud3JpdGFibGU9ITApLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShlLHIua2V5LHIp
fX1yZXR1cm4gZnVuY3Rpb24odCxuLHIpe3JldHVybiBuJiZlKHQucHJvdG90eXBlLG4pLHImJmUo
dCxyKSx0fX0oKSxzPW4oMTEpLGw9cihzKSxjPW4oMzMpLHA9cihjKSxkPW4oNjYpLGY9cihkKSxo
PWZ1bmN0aW9uKGUpe2Z1bmN0aW9uIHQoKXt2YXIgZSxuLHIsYTtvKHRoaXMsdCk7Zm9yKHZhciB1
PWFyZ3VtZW50cy5sZW5ndGgscz1BcnJheSh1KSxsPTA7bDx1O2wrKylzW2xdPWFyZ3VtZW50c1ts
XTtyZXR1cm4gbj1yPWkodGhpcywoZT10Ll9fcHJvdG9fX3x8T2JqZWN0LmdldFByb3RvdHlwZU9m
KHQpKS5jYWxsLmFwcGx5KGUsW3RoaXNdLmNvbmNhdChzKSkpLHIuc3RhdGU9e2VkaXRpbmc6ITF9
LHIuaGFuZGxlRG91YmxlQ2xpY2s9ZnVuY3Rpb24oKXtyLnNldFN0YXRlKHtlZGl0aW5nOiEwfSl9
LHIuaGFuZGxlU2F2ZT1mdW5jdGlvbihlLHQpezA9PT10Lmxlbmd0aD9yLnByb3BzLmRlbGV0ZVRv
ZG8oZSk6ci5wcm9wcy5lZGl0VG9kbyhlLHQpLHIuc2V0U3RhdGUoe2VkaXRpbmc6ITF9KX0sYT1u
LGkocixhKX1yZXR1cm4gYSh0LGUpLHUodCxbe2tleToicmVuZGVyIix2YWx1ZTpmdW5jdGlvbigp
e3ZhciBlPXRoaXMsdD10aGlzLnByb3BzLG49dC50b2RvLHI9dC5jb21wbGV0ZVRvZG8sbz10LmRl
bGV0ZVRvZG8saT12b2lkIDA7cmV0dXJuIGk9dGhpcy5zdGF0ZS5lZGl0aW5nP2wuZGVmYXVsdC5j
cmVhdGVFbGVtZW50KGYuZGVmYXVsdCx7dGV4dDpuLnRleHQsZWRpdGluZzp0aGlzLnN0YXRlLmVk
aXRpbmcsb25TYXZlOmZ1bmN0aW9uKHQpe3JldHVybiBlLmhhbmRsZVNhdmUobi5pZCx0KX19KTps
LmRlZmF1bHQuY3JlYXRlRWxlbWVudCgiZGl2Iix7Y2xhc3NOYW1lOiJ2aWV3In0sbC5kZWZhdWx0
LmNyZWF0ZUVsZW1lbnQoImlucHV0Iix7Y2xhc3NOYW1lOiJ0b2dnbGUiLHR5cGU6ImNoZWNrYm94
IixjaGVja2VkOm4uY29tcGxldGVkLG9uQ2hhbmdlOmZ1bmN0aW9uKCl7cmV0dXJuIHIobi5pZCl9
fSksbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImxhYmVsIix7b25Eb3VibGVDbGljazp0aGlzLmhh
bmRsZURvdWJsZUNsaWNrfSxuLnRleHQpLGwuZGVmYXVsdC5jcmVhdGVFbGVtZW50KCJidXR0b24i
LHtjbGFzc05hbWU6ImRlc3Ryb3kiLG9uQ2xpY2s6ZnVuY3Rpb24oKXtyZXR1cm4gbyhuLmlkKX19
KSksbC5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoImxpIix7Y2xhc3NOYW1lOigwLHAuZGVmYXVsdCko
e2NvbXBsZXRlZDpuLmNvbXBsZXRlZCxlZGl0aW5nOnRoaXMuc3RhdGUuZWRpdGluZ30pfSxpKX19
XSksdH0ocy5Db21wb25lbnQpO2gucHJvcFR5cGVzPXt0b2RvOnMuUHJvcFR5cGVzLm9iamVjdC5p
c1JlcXVpcmVkLGVkaXRUb2RvOnMuUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxkZWxldGVUb2Rv
OnMuUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxjb21wbGV0ZVRvZG86cy5Qcm9wVHlwZXMuZnVu
Yy5pc1JlcXVpcmVkfSx0LmRlZmF1bHQ9aH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUpe2lmKGUmJmUuX19lc01vZHVsZSlyZXR1cm4gZTt2YXIgdD17fTtpZihudWxs
IT1lKWZvcih2YXIgbiBpbiBlKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChl
LG4pJiYodFtuXT1lW25dKTtyZXR1cm4gdC5kZWZhdWx0PWUsdH1mdW5jdGlvbiBvKGUpe3JldHVy
biBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwi
X19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9bigxMSksYT1vKGkpLHU9bigzMikscz1uKDYz
KSxsPW4oMTI1KSxjPW8obCkscD1uKDEyNiksZD1vKHApLGY9bigxMjMpLGg9cihmKSx2PWZ1bmN0
aW9uKGUpe3ZhciB0PWUudG9kb3Msbj1lLmFjdGlvbnM7cmV0dXJuIGEuZGVmYXVsdC5jcmVhdGVF
bGVtZW50KCJkaXYiLG51bGwsYS5kZWZhdWx0LmNyZWF0ZUVsZW1lbnQoYy5kZWZhdWx0LHthZGRU
b2RvOm4uYWRkVG9kb30pLGEuZGVmYXVsdC5jcmVhdGVFbGVtZW50KGQuZGVmYXVsdCx7dG9kb3M6
dCxhY3Rpb25zOm59KSl9O3YucHJvcFR5cGVzPXt0b2RvczppLlByb3BUeXBlcy5hcnJheS5pc1Jl
cXVpcmVkLGFjdGlvbnM6aS5Qcm9wVHlwZXMub2JqZWN0LmlzUmVxdWlyZWR9O3ZhciBtPWZ1bmN0
aW9uKGUpe3JldHVybnt0b2RvczplLnRvZG9zfX0seT1mdW5jdGlvbihlKXtyZXR1cm57YWN0aW9u
czooMCx1LmJpbmRBY3Rpb25DcmVhdG9ycykoaCxlKX19O3QuZGVmYXVsdD0oMCxzLmNvbm5lY3Qp
KG0seSkodil9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1
cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19dmFyIG89bigxMSksaT1yKG8pLGE9bigx
MTYpLHU9bigzMikscz1uKDYzKSxsPW4oMTI4KSxjPXIobCkscD1uKDEzMCksZD1yKHApO24oMTMy
KTt2YXIgZj0oMCx1LmNyZWF0ZVN0b3JlKShkLmRlZmF1bHQpOygwLGEucmVuZGVyKShpLmRlZmF1
bHQuY3JlYXRlRWxlbWVudChzLlByb3ZpZGVyLHtzdG9yZTpmfSxpLmRlZmF1bHQuY3JlYXRlRWxl
bWVudChjLmRlZmF1bHQsbnVsbCkpLGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyb290IikpfSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGUmJmUuX19l
c01vZHVsZT9lOntkZWZhdWx0OmV9fU9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LCJfX2VzTW9kdWxl
Iix7dmFsdWU6ITB9KTt2YXIgbz1uKDMyKSxpPW4oMTMxKSxhPXIoaSksdT0oMCxvLmNvbWJpbmVS
ZWR1Y2Vycykoe3RvZG9zOmEuZGVmYXVsdH0pO3QuZGVmYXVsdD11fSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYoQXJyYXkuaXNBcnJheShlKSl7Zm9yKHZhciB0
PTAsbj1BcnJheShlLmxlbmd0aCk7dDxlLmxlbmd0aDt0Kyspblt0XT1lW3RdO3JldHVybiBufXJl
dHVybiBBcnJheS5mcm9tKGUpfWZ1bmN0aW9uIG8oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPD0w
fHx2b2lkIDA9PT1hcmd1bWVudHNbMF0/czphcmd1bWVudHNbMF0sdD1hcmd1bWVudHNbMV0sbj1m
dW5jdGlvbigpe3N3aXRjaCh0LnR5cGUpe2Nhc2UgdS5BRERfVE9ETzpyZXR1cm57djpbe2lkOmUu
cmVkdWNlKGZ1bmN0aW9uKGUsdCl7cmV0dXJuIE1hdGgubWF4KHQuaWQsZSl9LC0xKSsxLGNvbXBs
ZXRlZDohMSx0ZXh0OnQudGV4dH1dLmNvbmNhdChyKGUpKX07Y2FzZSB1LkRFTEVURV9UT0RPOnJl
dHVybnt2OmUuZmlsdGVyKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlkIT09dC5pZH0pfTtjYXNlIHUu
RURJVF9UT0RPOnJldHVybnt2OmUubWFwKGZ1bmN0aW9uKGUpe3JldHVybiBlLmlkPT09dC5pZD9h
KHt9LGUse3RleHQ6dC50ZXh0fSk6ZX0pfTtjYXNlIHUuQ09NUExFVEVfVE9ETzpyZXR1cm57djpl
Lm1hcChmdW5jdGlvbihlKXtyZXR1cm4gZS5pZD09PXQuaWQ/YSh7fSxlLHtjb21wbGV0ZWQ6IWUu
Y29tcGxldGVkfSk6ZX0pfTtjYXNlIHUuQ09NUExFVEVfQUxMOnZhciBuPWUuZXZlcnkoZnVuY3Rp
b24oZSl7cmV0dXJuIGUuY29tcGxldGVkfSk7cmV0dXJue3Y6ZS5tYXAoZnVuY3Rpb24oZSl7cmV0
dXJuIGEoe30sZSx7Y29tcGxldGVkOiFufSl9KX07Y2FzZSB1LkNMRUFSX0NPTVBMRVRFRDpyZXR1
cm57djplLmZpbHRlcihmdW5jdGlvbihlKXtyZXR1cm4gZS5jb21wbGV0ZWQ9PT0hMX0pfTtkZWZh
dWx0OnJldHVybnt2OmV9fX0oKTtpZigib2JqZWN0Ij09PSgidW5kZWZpbmVkIj09dHlwZW9mIG4/
InVuZGVmaW5lZCI6aShuKSkpcmV0dXJuIG4udn1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19l
c01vZHVsZSIse3ZhbHVlOiEwfSk7dmFyIGk9ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmInN5
bWJvbCI9PXR5cGVvZiBTeW1ib2wuaXRlcmF0b3I/ZnVuY3Rpb24oZSl7cmV0dXJuIHR5cGVvZiBl
fTpmdW5jdGlvbihlKXtyZXR1cm4gZSYmImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmZS5jb25z
dHJ1Y3Rvcj09PVN5bWJvbD8ic3ltYm9sIjp0eXBlb2YgZX0sYT1PYmplY3QuYXNzaWdufHxmdW5j
dGlvbihlKXtmb3IodmFyIHQ9MTt0PGFyZ3VtZW50cy5sZW5ndGg7dCsrKXt2YXIgbj1hcmd1bWVu
dHNbdF07Zm9yKHZhciByIGluIG4pT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxs
KG4scikmJihlW3JdPW5bcl0pfXJldHVybiBlfTt0LmRlZmF1bHQ9bzt2YXIgdT1uKDY3KSxzPVtd
fSxmdW5jdGlvbihlLHQpe30sNCxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSl7dmFyIHQ9bmV3IG8oby5fNjEpO3JldHVybiB0Ll84MT0xLHQuXzY1PWUsdH12YXIgbz1u
KDY5KTtlLmV4cG9ydHM9bzt2YXIgaT1yKCEwKSxhPXIoITEpLHU9cihudWxsKSxzPXIodm9pZCAw
KSxsPXIoMCksYz1yKCIiKTtvLnJlc29sdmU9ZnVuY3Rpb24oZSl7aWYoZSBpbnN0YW5jZW9mIG8p
cmV0dXJuIGU7aWYobnVsbD09PWUpcmV0dXJuIHU7aWYodm9pZCAwPT09ZSlyZXR1cm4gcztpZihl
PT09ITApcmV0dXJuIGk7aWYoZT09PSExKXJldHVybiBhO2lmKDA9PT1lKXJldHVybiBsO2lmKCIi
PT09ZSlyZXR1cm4gYztpZigib2JqZWN0Ij09dHlwZW9mIGV8fCJmdW5jdGlvbiI9PXR5cGVvZiBl
KXRyeXt2YXIgdD1lLnRoZW47aWYoImZ1bmN0aW9uIj09dHlwZW9mIHQpcmV0dXJuIG5ldyBvKHQu
YmluZChlKSl9Y2F0Y2gobil7cmV0dXJuIG5ldyBvKGZ1bmN0aW9uKGUsdCl7dChuKX0pfXJldHVy
biByKGUpfSxvLmFsbD1mdW5jdGlvbihlKXt2YXIgdD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2Fs
bChlKTtyZXR1cm4gbmV3IG8oZnVuY3Rpb24oZSxuKXtmdW5jdGlvbiByKGEsdSl7aWYodSYmKCJv
YmplY3QiPT10eXBlb2YgdXx8ImZ1bmN0aW9uIj09dHlwZW9mIHUpKXtpZih1IGluc3RhbmNlb2Yg
byYmdS50aGVuPT09by5wcm90b3R5cGUudGhlbil7Zm9yKDszPT09dS5fODE7KXU9dS5fNjU7cmV0
dXJuIDE9PT11Ll84MT9yKGEsdS5fNjUpOigyPT09dS5fODEmJm4odS5fNjUpLHZvaWQgdS50aGVu
KGZ1bmN0aW9uKGUpe3IoYSxlKX0sbikpfXZhciBzPXUudGhlbjtpZigiZnVuY3Rpb24iPT10eXBl
b2Ygcyl7dmFyIGw9bmV3IG8ocy5iaW5kKHUpKTtyZXR1cm4gdm9pZCBsLnRoZW4oZnVuY3Rpb24o
ZSl7cihhLGUpfSxuKX19dFthXT11LDA9PT0tLWkmJmUodCl9aWYoMD09PXQubGVuZ3RoKXJldHVy
biBlKFtdKTtmb3IodmFyIGk9dC5sZW5ndGgsYT0wO2E8dC5sZW5ndGg7YSsrKXIoYSx0W2FdKX0p
fSxvLnJlamVjdD1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IG8oZnVuY3Rpb24odCxuKXtuKGUpfSl9
LG8ucmFjZT1mdW5jdGlvbihlKXtyZXR1cm4gbmV3IG8oZnVuY3Rpb24odCxuKXtlLmZvckVhY2go
ZnVuY3Rpb24oZSl7by5yZXNvbHZlKGUpLnRoZW4odCxuKX0pfSl9LG8ucHJvdG90eXBlLmNhdGNo
PWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnRoZW4obnVsbCxlKX19LGZ1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe2w9ITEsdS5fMTA9bnVsbCx1Ll85Nz1udWxsfWZ1bmN0
aW9uIG8oZSl7ZnVuY3Rpb24gdCh0KXsoZS5hbGxSZWplY3Rpb25zfHxhKHBbdF0uZXJyb3IsZS53
aGl0ZWxpc3R8fHMpKSYmKHBbdF0uZGlzcGxheUlkPWMrKyxlLm9uVW5oYW5kbGVkPyhwW3RdLmxv
Z2dlZD0hMCxlLm9uVW5oYW5kbGVkKHBbdF0uZGlzcGxheUlkLHBbdF0uZXJyb3IpKToocFt0XS5s
b2dnZWQ9ITAsaShwW3RdLmRpc3BsYXlJZCxwW3RdLmVycm9yKSkpfWZ1bmN0aW9uIG4odCl7cFt0
XS5sb2dnZWQmJihlLm9uSGFuZGxlZD9lLm9uSGFuZGxlZChwW3RdLmRpc3BsYXlJZCxwW3RdLmVy
cm9yKTpwW3RdLm9uVW5oYW5kbGVkfHwoY29uc29sZS53YXJuKCJQcm9taXNlIFJlamVjdGlvbiBI
YW5kbGVkIChpZDogIitwW3RdLmRpc3BsYXlJZCsiKToiKSxjb25zb2xlLndhcm4oJyAgVGhpcyBt
ZWFucyB5b3UgY2FuIGlnbm9yZSBhbnkgcHJldmlvdXMgbWVzc2FnZXMgb2YgdGhlIGZvcm0gIlBv
c3NpYmxlIFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbiIgd2l0aCBpZCAnK3BbdF0uZGlzcGxh
eUlkKyIuIikpKX1lPWV8fHt9LGwmJnIoKSxsPSEwO3ZhciBvPTAsYz0wLHA9e307dS5fMTA9ZnVu
Y3Rpb24oZSl7Mj09PWUuXzgxJiZwW2UuXzcyXSYmKHBbZS5fNzJdLmxvZ2dlZD9uKGUuXzcyKTpj
bGVhclRpbWVvdXQocFtlLl83Ml0udGltZW91dCksZGVsZXRlIHBbZS5fNzJdKX0sdS5fOTc9ZnVu
Y3Rpb24oZSxuKXswPT09ZS5fNDUmJihlLl83Mj1vKysscFtlLl83Ml09e2Rpc3BsYXlJZDpudWxs
LGVycm9yOm4sdGltZW91dDpzZXRUaW1lb3V0KHQuYmluZChudWxsLGUuXzcyKSxhKG4scyk/MTAw
OjJlMyksbG9nZ2VkOiExfSl9fWZ1bmN0aW9uIGkoZSx0KXtjb25zb2xlLndhcm4oIlBvc3NpYmxl
IFVuaGFuZGxlZCBQcm9taXNlIFJlamVjdGlvbiAoaWQ6ICIrZSsiKToiKTt2YXIgbj0odCYmKHQu
c3RhY2t8fHQpKSsiIjtuLnNwbGl0KCJcbiIpLmZvckVhY2goZnVuY3Rpb24oZSl7Y29uc29sZS53
YXJuKCIgICIrZSl9KX1mdW5jdGlvbiBhKGUsdCl7cmV0dXJuIHQuc29tZShmdW5jdGlvbih0KXty
ZXR1cm4gZSBpbnN0YW5jZW9mIHR9KX12YXIgdT1uKDY5KSxzPVtSZWZlcmVuY2VFcnJvcixUeXBl
RXJyb3IsUmFuZ2VFcnJvcl0sbD0hMTt0LmRpc2FibGU9cix0LmVuYWJsZT1vfSxmdW5jdGlvbihl
LHQpe2UuZXhwb3J0cz1mdW5jdGlvbihlKXtyZXR1cm4gZS53ZWJwYWNrUG9seWZpbGx8fChlLmRl
cHJlY2F0ZT1mdW5jdGlvbigpe30sZS5wYXRocz1bXSxlLmNoaWxkcmVuPVtdLGUud2VicGFja1Bv
bHlmaWxsPTEpLGV9fSxmdW5jdGlvbihlLHQpeyFmdW5jdGlvbihlKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gdChlKXtpZigic3RyaW5nIiE9dHlwZW9mIGUmJihlPVN0cmluZyhlKSksL1teYS16MC05
XC0jJCUmJyorLlxeX2B8fl0vaS50ZXN0KGUpKXRocm93IG5ldyBUeXBlRXJyb3IoIkludmFsaWQg
Y2hhcmFjdGVyIGluIGhlYWRlciBmaWVsZCBuYW1lIik7cmV0dXJuIGUudG9Mb3dlckNhc2UoKX1m
dW5jdGlvbiBuKGUpe3JldHVybiJzdHJpbmciIT10eXBlb2YgZSYmKGU9U3RyaW5nKGUpKSxlfWZ1
bmN0aW9uIHIoZSl7dmFyIHQ9e25leHQ6ZnVuY3Rpb24oKXt2YXIgdD1lLnNoaWZ0KCk7cmV0dXJu
e2RvbmU6dm9pZCAwPT09dCx2YWx1ZTp0fX19O3JldHVybiB2Lml0ZXJhYmxlJiYodFtTeW1ib2wu
aXRlcmF0b3JdPWZ1bmN0aW9uKCl7cmV0dXJuIHR9KSx0fWZ1bmN0aW9uIG8oZSl7dGhpcy5tYXA9
e30sZSBpbnN0YW5jZW9mIG8/ZS5mb3JFYWNoKGZ1bmN0aW9uKGUsdCl7dGhpcy5hcHBlbmQodCxl
KX0sdGhpcyk6ZSYmT2JqZWN0LmdldE93blByb3BlcnR5TmFtZXMoZSkuZm9yRWFjaChmdW5jdGlv
bih0KXt0aGlzLmFwcGVuZCh0LGVbdF0pfSx0aGlzKX1mdW5jdGlvbiBpKGUpe3JldHVybiBlLmJv
ZHlVc2VkP1Byb21pc2UucmVqZWN0KG5ldyBUeXBlRXJyb3IoIkFscmVhZHkgcmVhZCIpKTp2b2lk
KGUuYm9keVVzZWQ9ITApfWZ1bmN0aW9uIGEoZSl7cmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9u
KHQsbil7ZS5vbmxvYWQ9ZnVuY3Rpb24oKXt0KGUucmVzdWx0KX0sZS5vbmVycm9yPWZ1bmN0aW9u
KCl7bihlLmVycm9yKX19KX1mdW5jdGlvbiB1KGUpe3ZhciB0PW5ldyBGaWxlUmVhZGVyO3JldHVy
biB0LnJlYWRBc0FycmF5QnVmZmVyKGUpLGEodCl9ZnVuY3Rpb24gcyhlKXt2YXIgdD1uZXcgRmls
ZVJlYWRlcjtyZXR1cm4gdC5yZWFkQXNUZXh0KGUpLGEodCl9ZnVuY3Rpb24gbCgpe3JldHVybiB0
aGlzLmJvZHlVc2VkPSExLHRoaXMuX2luaXRCb2R5PWZ1bmN0aW9uKGUpe2lmKHRoaXMuX2JvZHlJ
bml0PWUsInN0cmluZyI9PXR5cGVvZiBlKXRoaXMuX2JvZHlUZXh0PWU7ZWxzZSBpZih2LmJsb2Im
JkJsb2IucHJvdG90eXBlLmlzUHJvdG90eXBlT2YoZSkpdGhpcy5fYm9keUJsb2I9ZTtlbHNlIGlm
KHYuZm9ybURhdGEmJkZvcm1EYXRhLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGUpKXRoaXMuX2Jv
ZHlGb3JtRGF0YT1lO2Vsc2UgaWYodi5zZWFyY2hQYXJhbXMmJlVSTFNlYXJjaFBhcmFtcy5wcm90
b3R5cGUuaXNQcm90b3R5cGVPZihlKSl0aGlzLl9ib2R5VGV4dD1lLnRvU3RyaW5nKCk7ZWxzZSBp
ZihlKXtpZighdi5hcnJheUJ1ZmZlcnx8IUFycmF5QnVmZmVyLnByb3RvdHlwZS5pc1Byb3RvdHlw
ZU9mKGUpKXRocm93IG5ldyBFcnJvcigidW5zdXBwb3J0ZWQgQm9keUluaXQgdHlwZSIpfWVsc2Ug
dGhpcy5fYm9keVRleHQ9IiI7dGhpcy5oZWFkZXJzLmdldCgiY29udGVudC10eXBlIil8fCgic3Ry
aW5nIj09dHlwZW9mIGU/dGhpcy5oZWFkZXJzLnNldCgiY29udGVudC10eXBlIiwidGV4dC9wbGFp
bjtjaGFyc2V0PVVURi04Iik6dGhpcy5fYm9keUJsb2ImJnRoaXMuX2JvZHlCbG9iLnR5cGU/dGhp
cy5oZWFkZXJzLnNldCgiY29udGVudC10eXBlIix0aGlzLl9ib2R5QmxvYi50eXBlKTp2LnNlYXJj
aFBhcmFtcyYmVVJMU2VhcmNoUGFyYW1zLnByb3RvdHlwZS5pc1Byb3RvdHlwZU9mKGUpJiZ0aGlz
LmhlYWRlcnMuc2V0KCJjb250ZW50LXR5cGUiLCJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVu
Y29kZWQ7Y2hhcnNldD1VVEYtOCIpKX0sdi5ibG9iPyh0aGlzLmJsb2I9ZnVuY3Rpb24oKXt2YXIg
ZT1pKHRoaXMpO2lmKGUpcmV0dXJuIGU7aWYodGhpcy5fYm9keUJsb2IpcmV0dXJuIFByb21pc2Uu
cmVzb2x2ZSh0aGlzLl9ib2R5QmxvYik7aWYodGhpcy5fYm9keUZvcm1EYXRhKXRocm93IG5ldyBF
cnJvcigiY291bGQgbm90IHJlYWQgRm9ybURhdGEgYm9keSBhcyBibG9iIik7cmV0dXJuIFByb21p
c2UucmVzb2x2ZShuZXcgQmxvYihbdGhpcy5fYm9keVRleHRdKSl9LHRoaXMuYXJyYXlCdWZmZXI9
ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ibG9iKCkudGhlbih1KX0sdGhpcy50ZXh0PWZ1bmN0aW9u
KCl7dmFyIGU9aSh0aGlzKTtpZihlKXJldHVybiBlO2lmKHRoaXMuX2JvZHlCbG9iKXJldHVybiBz
KHRoaXMuX2JvZHlCbG9iKTtpZih0aGlzLl9ib2R5Rm9ybURhdGEpdGhyb3cgbmV3IEVycm9yKCJj
b3VsZCBub3QgcmVhZCBGb3JtRGF0YSBib2R5IGFzIHRleHQiKTtyZXR1cm4gUHJvbWlzZS5yZXNv
bHZlKHRoaXMuX2JvZHlUZXh0KX0pOnRoaXMudGV4dD1mdW5jdGlvbigpe3ZhciBlPWkodGhpcyk7
cmV0dXJuIGU/ZTpQcm9taXNlLnJlc29sdmUodGhpcy5fYm9keVRleHQpfSx2LmZvcm1EYXRhJiYo
dGhpcy5mb3JtRGF0YT1mdW5jdGlvbigpe3JldHVybiB0aGlzLnRleHQoKS50aGVuKGQpfSksdGhp
cy5qc29uPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudGV4dCgpLnRoZW4oSlNPTi5wYXJzZSl9LHRo
aXN9ZnVuY3Rpb24gYyhlKXt2YXIgdD1lLnRvVXBwZXJDYXNlKCk7cmV0dXJuIG0uaW5kZXhPZih0
KT4tMT90OmV9ZnVuY3Rpb24gcChlLHQpe3Q9dHx8e307dmFyIG49dC5ib2R5O2lmKHAucHJvdG90
eXBlLmlzUHJvdG90eXBlT2YoZSkpe2lmKGUuYm9keVVzZWQpdGhyb3cgbmV3IFR5cGVFcnJvcigi
QWxyZWFkeSByZWFkIik7dGhpcy51cmw9ZS51cmwsdGhpcy5jcmVkZW50aWFscz1lLmNyZWRlbnRp
YWxzLHQuaGVhZGVyc3x8KHRoaXMuaGVhZGVycz1uZXcgbyhlLmhlYWRlcnMpKSx0aGlzLm1ldGhv
ZD1lLm1ldGhvZCx0aGlzLm1vZGU9ZS5tb2RlLG58fChuPWUuX2JvZHlJbml0LGUuYm9keVVzZWQ9
ITApfWVsc2UgdGhpcy51cmw9ZTtpZih0aGlzLmNyZWRlbnRpYWxzPXQuY3JlZGVudGlhbHN8fHRo
aXMuY3JlZGVudGlhbHN8fCJvbWl0IiwhdC5oZWFkZXJzJiZ0aGlzLmhlYWRlcnN8fCh0aGlzLmhl
YWRlcnM9bmV3IG8odC5oZWFkZXJzKSksdGhpcy5tZXRob2Q9Yyh0Lm1ldGhvZHx8dGhpcy5tZXRo
b2R8fCJHRVQiKSx0aGlzLm1vZGU9dC5tb2RlfHx0aGlzLm1vZGV8fG51bGwsdGhpcy5yZWZlcnJl
cj1udWxsLCgiR0VUIj09PXRoaXMubWV0aG9kfHwiSEVBRCI9PT10aGlzLm1ldGhvZCkmJm4pdGhy
b3cgbmV3IFR5cGVFcnJvcigiQm9keSBub3QgYWxsb3dlZCBmb3IgR0VUIG9yIEhFQUQgcmVxdWVz
dHMiKTt0aGlzLl9pbml0Qm9keShuKX1mdW5jdGlvbiBkKGUpe3ZhciB0PW5ldyBGb3JtRGF0YTty
ZXR1cm4gZS50cmltKCkuc3BsaXQoIiYiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe2lmKGUpe3ZhciBu
PWUuc3BsaXQoIj0iKSxyPW4uc2hpZnQoKS5yZXBsYWNlKC9cKy9nLCIgIiksbz1uLmpvaW4oIj0i
KS5yZXBsYWNlKC9cKy9nLCIgIik7dC5hcHBlbmQoZGVjb2RlVVJJQ29tcG9uZW50KHIpLGRlY29k
ZVVSSUNvbXBvbmVudChvKSl9fSksdH1mdW5jdGlvbiBmKGUpe3ZhciB0PW5ldyBvLG49KGUuZ2V0
QWxsUmVzcG9uc2VIZWFkZXJzKCl8fCIiKS50cmltKCkuc3BsaXQoIlxuIik7cmV0dXJuIG4uZm9y
RWFjaChmdW5jdGlvbihlKXt2YXIgbj1lLnRyaW0oKS5zcGxpdCgiOiIpLHI9bi5zaGlmdCgpLnRy
aW0oKSxvPW4uam9pbigiOiIpLnRyaW0oKTt0LmFwcGVuZChyLG8pfSksdH1mdW5jdGlvbiBoKGUs
dCl7dHx8KHQ9e30pLHRoaXMudHlwZT0iZGVmYXVsdCIsdGhpcy5zdGF0dXM9dC5zdGF0dXMsdGhp
cy5vaz10aGlzLnN0YXR1cz49MjAwJiZ0aGlzLnN0YXR1czwzMDAsdGhpcy5zdGF0dXNUZXh0PXQu
c3RhdHVzVGV4dCx0aGlzLmhlYWRlcnM9dC5oZWFkZXJzIGluc3RhbmNlb2Ygbz90LmhlYWRlcnM6
bmV3IG8odC5oZWFkZXJzKSx0aGlzLnVybD10LnVybHx8IiIsdGhpcy5faW5pdEJvZHkoZSl9aWYo
IWUuZmV0Y2gpe3ZhciB2PXtzZWFyY2hQYXJhbXM6IlVSTFNlYXJjaFBhcmFtcyJpbiBlLGl0ZXJh
YmxlOiJTeW1ib2wiaW4gZSYmIml0ZXJhdG9yImluIFN5bWJvbCxibG9iOiJGaWxlUmVhZGVyImlu
IGUmJiJCbG9iImluIGUmJmZ1bmN0aW9uKCl7dHJ5e3JldHVybiBuZXcgQmxvYiwhMH1jYXRjaChl
KXtyZXR1cm4hMX19KCksZm9ybURhdGE6IkZvcm1EYXRhImluIGUsYXJyYXlCdWZmZXI6IkFycmF5
QnVmZmVyImluIGV9O28ucHJvdG90eXBlLmFwcGVuZD1mdW5jdGlvbihlLHIpe2U9dChlKSxyPW4o
cik7dmFyIG89dGhpcy5tYXBbZV07b3x8KG89W10sdGhpcy5tYXBbZV09byksby5wdXNoKHIpfSxv
LnByb3RvdHlwZS5kZWxldGU9ZnVuY3Rpb24oZSl7ZGVsZXRlIHRoaXMubWFwW3QoZSldfSxvLnBy
b3RvdHlwZS5nZXQ9ZnVuY3Rpb24oZSl7dmFyIG49dGhpcy5tYXBbdChlKV07cmV0dXJuIG4/blsw
XTpudWxsfSxvLnByb3RvdHlwZS5nZXRBbGw9ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMubWFwW3Qo
ZSldfHxbXX0sby5wcm90b3R5cGUuaGFzPWZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm1hcC5oYXNP
d25Qcm9wZXJ0eSh0KGUpKX0sby5wcm90b3R5cGUuc2V0PWZ1bmN0aW9uKGUscil7dGhpcy5tYXBb
dChlKV09W24ocildfSxvLnByb3RvdHlwZS5mb3JFYWNoPWZ1bmN0aW9uKGUsdCl7T2JqZWN0Lmdl
dE93blByb3BlcnR5TmFtZXModGhpcy5tYXApLmZvckVhY2goZnVuY3Rpb24obil7dGhpcy5tYXBb
bl0uZm9yRWFjaChmdW5jdGlvbihyKXtlLmNhbGwodCxyLG4sdGhpcyl9LHRoaXMpfSx0aGlzKX0s
by5wcm90b3R5cGUua2V5cz1mdW5jdGlvbigpe3ZhciBlPVtdO3JldHVybiB0aGlzLmZvckVhY2go
ZnVuY3Rpb24odCxuKXtlLnB1c2gobil9KSxyKGUpfSxvLnByb3RvdHlwZS52YWx1ZXM9ZnVuY3Rp
b24oKXt2YXIgZT1bXTtyZXR1cm4gdGhpcy5mb3JFYWNoKGZ1bmN0aW9uKHQpe2UucHVzaCh0KX0p
LHIoZSl9LG8ucHJvdG90eXBlLmVudHJpZXM9ZnVuY3Rpb24oKXt2YXIgZT1bXTtyZXR1cm4gdGhp
cy5mb3JFYWNoKGZ1bmN0aW9uKHQsbil7ZS5wdXNoKFtuLHRdKX0pLHIoZSl9LHYuaXRlcmFibGUm
JihvLnByb3RvdHlwZVtTeW1ib2wuaXRlcmF0b3JdPW8ucHJvdG90eXBlLmVudHJpZXMpO3ZhciBt
PVsiREVMRVRFIiwiR0VUIiwiSEVBRCIsIk9QVElPTlMiLCJQT1NUIiwiUFVUIl07cC5wcm90b3R5
cGUuY2xvbmU9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IHAodGhpcyl9LGwuY2FsbChwLnByb3RvdHlw
ZSksbC5jYWxsKGgucHJvdG90eXBlKSxoLnByb3RvdHlwZS5jbG9uZT1mdW5jdGlvbigpe3JldHVy
biBuZXcgaCh0aGlzLl9ib2R5SW5pdCx7c3RhdHVzOnRoaXMuc3RhdHVzLHN0YXR1c1RleHQ6dGhp
cy5zdGF0dXNUZXh0LGhlYWRlcnM6bmV3IG8odGhpcy5oZWFkZXJzKSx1cmw6dGhpcy51cmx9KX0s
aC5lcnJvcj1mdW5jdGlvbigpe3ZhciBlPW5ldyBoKG51bGwse3N0YXR1czowLHN0YXR1c1RleHQ6
IiJ9KTtyZXR1cm4gZS50eXBlPSJlcnJvciIsZX07dmFyIHk9WzMwMSwzMDIsMzAzLDMwNywzMDhd
O2gucmVkaXJlY3Q9ZnVuY3Rpb24oZSx0KXtpZih5LmluZGV4T2YodCk9PT0tMSl0aHJvdyBuZXcg
UmFuZ2VFcnJvcigiSW52YWxpZCBzdGF0dXMgY29kZSIpO3JldHVybiBuZXcgaChudWxsLHtzdGF0
dXM6dCxoZWFkZXJzOntsb2NhdGlvbjplfX0pfSxlLkhlYWRlcnM9byxlLlJlcXVlc3Q9cCxlLlJl
c3BvbnNlPWgsZS5mZXRjaD1mdW5jdGlvbihlLHQpe3JldHVybiBuZXcgUHJvbWlzZShmdW5jdGlv
bihuLHIpe2Z1bmN0aW9uIG8oKXtyZXR1cm4icmVzcG9uc2VVUkwiaW4gYT9hLnJlc3BvbnNlVVJM
Oi9eWC1SZXF1ZXN0LVVSTDovbS50ZXN0KGEuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCkpP2EuZ2V0
UmVzcG9uc2VIZWFkZXIoIlgtUmVxdWVzdC1VUkwiKTp2b2lkIDB9dmFyIGk7aT1wLnByb3RvdHlw
ZS5pc1Byb3RvdHlwZU9mKGUpJiYhdD9lOm5ldyBwKGUsdCk7dmFyIGE9bmV3IFhNTEh0dHBSZXF1
ZXN0O2Eub25sb2FkPWZ1bmN0aW9uKCl7dmFyIGU9e3N0YXR1czphLnN0YXR1cyxzdGF0dXNUZXh0
OmEuc3RhdHVzVGV4dCxoZWFkZXJzOmYoYSksdXJsOm8oKX0sdD0icmVzcG9uc2UiaW4gYT9hLnJl
c3BvbnNlOmEucmVzcG9uc2VUZXh0O24obmV3IGgodCxlKSl9LGEub25lcnJvcj1mdW5jdGlvbigp
e3IobmV3IFR5cGVFcnJvcigiTmV0d29yayByZXF1ZXN0IGZhaWxlZCIpKX0sYS5vbnRpbWVvdXQ9
ZnVuY3Rpb24oKXtyKG5ldyBUeXBlRXJyb3IoIk5ldHdvcmsgcmVxdWVzdCBmYWlsZWQiKSl9LGEu
b3BlbihpLm1ldGhvZCxpLnVybCwhMCksImluY2x1ZGUiPT09aS5jcmVkZW50aWFscyYmKGEud2l0
aENyZWRlbnRpYWxzPSEwKSwicmVzcG9uc2VUeXBlImluIGEmJnYuYmxvYiYmKGEucmVzcG9uc2VU
eXBlPSJibG9iIiksaS5oZWFkZXJzLmZvckVhY2goZnVuY3Rpb24oZSx0KXthLnNldFJlcXVlc3RI
ZWFkZXIodCxlKX0pLGEuc2VuZCgidW5kZWZpbmVkIj09dHlwZW9mIGkuX2JvZHlJbml0P251bGw6
aS5fYm9keUluaXQpfSl9LGUuZmV0Y2gucG9seWZpbGw9ITB9fSgidW5kZWZpbmVkIiE9dHlwZW9m
IHNlbGY/c2VsZjp0aGlzKX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDUp
LG89big2MSksaT17Zm9jdXNET01Db21wb25lbnQ6ZnVuY3Rpb24oKXtvKHIuZ2V0Tm9kZUZyb21J
bnN0YW5jZSh0aGlzKSl9fTtlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKCl7dmFyIGU9d2luZG93Lm9wZXJhO3JldHVybiJvYmplY3QiPT10eXBlb2Yg
ZSYmImZ1bmN0aW9uIj09dHlwZW9mIGUudmVyc2lvbiYmcGFyc2VJbnQoZS52ZXJzaW9uKCksMTAp
PD0xMn1mdW5jdGlvbiBvKGUpe3JldHVybihlLmN0cmxLZXl8fGUuYWx0S2V5fHxlLm1ldGFLZXkp
JiYhKGUuY3RybEtleSYmZS5hbHRLZXkpfWZ1bmN0aW9uIGkoZSl7c3dpdGNoKGUpe2Nhc2UgUy50
b3BDb21wb3NpdGlvblN0YXJ0OnJldHVybiBNLmNvbXBvc2l0aW9uU3RhcnQ7Y2FzZSBTLnRvcENv
bXBvc2l0aW9uRW5kOnJldHVybiBNLmNvbXBvc2l0aW9uRW5kO2Nhc2UgUy50b3BDb21wb3NpdGlv
blVwZGF0ZTpyZXR1cm4gTS5jb21wb3NpdGlvblVwZGF0ZX19ZnVuY3Rpb24gYShlLHQpe3JldHVy
biBlPT09Uy50b3BLZXlEb3duJiZ0LmtleUNvZGU9PT1DfWZ1bmN0aW9uIHUoZSx0KXtzd2l0Y2go
ZSl7Y2FzZSBTLnRvcEtleVVwOnJldHVybiBfLmluZGV4T2YodC5rZXlDb2RlKSE9PS0xO2Nhc2Ug
Uy50b3BLZXlEb3duOnJldHVybiB0LmtleUNvZGUhPT1DO2Nhc2UgUy50b3BLZXlQcmVzczpjYXNl
IFMudG9wTW91c2VEb3duOmNhc2UgUy50b3BCbHVyOnJldHVybiEwO2RlZmF1bHQ6cmV0dXJuITF9
fWZ1bmN0aW9uIHMoZSl7dmFyIHQ9ZS5kZXRhaWw7cmV0dXJuIm9iamVjdCI9PXR5cGVvZiB0JiYi
ZGF0YSJpbiB0P3QuZGF0YTpudWxsfWZ1bmN0aW9uIGwoZSx0LG4scil7dmFyIG8sbDtpZihFP289
aShlKTprP3UoZSxuKSYmKG89TS5jb21wb3NpdGlvbkVuZCk6YShlLG4pJiYobz1NLmNvbXBvc2l0
aW9uU3RhcnQpLCFvKXJldHVybiBudWxsO1AmJihrfHxvIT09TS5jb21wb3NpdGlvblN0YXJ0P289
PT1NLmNvbXBvc2l0aW9uRW5kJiZrJiYobD1rLmdldERhdGEoKSk6az1tLmdldFBvb2xlZChyKSk7
dmFyIGM9eS5nZXRQb29sZWQobyx0LG4scik7aWYobCljLmRhdGE9bDtlbHNle3ZhciBwPXMobik7
bnVsbCE9PXAmJihjLmRhdGE9cCl9cmV0dXJuIGguYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hl
cyhjKSxjfWZ1bmN0aW9uIGMoZSx0KXtzd2l0Y2goZSl7Y2FzZSBTLnRvcENvbXBvc2l0aW9uRW5k
OnJldHVybiBzKHQpO2Nhc2UgUy50b3BLZXlQcmVzczp2YXIgbj10LndoaWNoO3JldHVybiBuIT09
eD9udWxsOihOPSEwLE8pO2Nhc2UgUy50b3BUZXh0SW5wdXQ6dmFyIHI9dC5kYXRhO3JldHVybiBy
PT09TyYmTj9udWxsOnI7ZGVmYXVsdDpyZXR1cm4gbnVsbH19ZnVuY3Rpb24gcChlLHQpe2lmKGsp
e2lmKGU9PT1TLnRvcENvbXBvc2l0aW9uRW5kfHwhRSYmdShlLHQpKXt2YXIgbj1rLmdldERhdGEo
KTtyZXR1cm4gbS5yZWxlYXNlKGspLGs9bnVsbCxufXJldHVybiBudWxsfXN3aXRjaChlKXtjYXNl
IFMudG9wUGFzdGU6cmV0dXJuIG51bGw7Y2FzZSBTLnRvcEtleVByZXNzOnJldHVybiB0LndoaWNo
JiYhbyh0KT9TdHJpbmcuZnJvbUNoYXJDb2RlKHQud2hpY2gpOm51bGw7Y2FzZSBTLnRvcENvbXBv
c2l0aW9uRW5kOnJldHVybiBQP251bGw6dC5kYXRhO2RlZmF1bHQ6cmV0dXJuIG51bGx9fWZ1bmN0
aW9uIGQoZSx0LG4scil7dmFyIG87aWYobz1UP2MoZSxuKTpwKGUsbiksIW8pcmV0dXJuIG51bGw7
dmFyIGk9Zy5nZXRQb29sZWQoTS5iZWZvcmVJbnB1dCx0LG4scik7cmV0dXJuIGkuZGF0YT1vLGgu
YWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyhpKSxpfXZhciBmPW4oMTIpLGg9bigyMiksdj1u
KDYpLG09bigxNDUpLHk9bigxODMpLGc9bigxODYpLGI9bigxNCksXz1bOSwxMywyNywzMl0sQz0y
MjksRT12LmNhblVzZURPTSYmIkNvbXBvc2l0aW9uRXZlbnQiaW4gd2luZG93LHc9bnVsbDt2LmNh
blVzZURPTSYmImRvY3VtZW50TW9kZSJpbiBkb2N1bWVudCYmKHc9ZG9jdW1lbnQuZG9jdW1lbnRN
b2RlKTt2YXIgVD12LmNhblVzZURPTSYmIlRleHRFdmVudCJpbiB3aW5kb3cmJiF3JiYhcigpLFA9
di5jYW5Vc2VET00mJighRXx8dyYmdz44JiZ3PD0xMSkseD0zMixPPVN0cmluZy5mcm9tQ2hhckNv
ZGUoeCksUz1mLnRvcExldmVsVHlwZXMsTT17YmVmb3JlSW5wdXQ6e3BoYXNlZFJlZ2lzdHJhdGlv
bk5hbWVzOntidWJibGVkOmIoe29uQmVmb3JlSW5wdXQ6bnVsbH0pLGNhcHR1cmVkOmIoe29uQmVm
b3JlSW5wdXRDYXB0dXJlOm51bGx9KX0sZGVwZW5kZW5jaWVzOltTLnRvcENvbXBvc2l0aW9uRW5k
LFMudG9wS2V5UHJlc3MsUy50b3BUZXh0SW5wdXQsUy50b3BQYXN0ZV19LGNvbXBvc2l0aW9uRW5k
OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpiKHtvbkNvbXBvc2l0aW9uRW5kOm51
bGx9KSxjYXB0dXJlZDpiKHtvbkNvbXBvc2l0aW9uRW5kQ2FwdHVyZTpudWxsfSl9LGRlcGVuZGVu
Y2llczpbUy50b3BCbHVyLFMudG9wQ29tcG9zaXRpb25FbmQsUy50b3BLZXlEb3duLFMudG9wS2V5
UHJlc3MsUy50b3BLZXlVcCxTLnRvcE1vdXNlRG93bl19LGNvbXBvc2l0aW9uU3RhcnQ6e3BoYXNl
ZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOmIoe29uQ29tcG9zaXRpb25TdGFydDpudWxsfSks
Y2FwdHVyZWQ6Yih7b25Db21wb3NpdGlvblN0YXJ0Q2FwdHVyZTpudWxsfSl9LGRlcGVuZGVuY2ll
czpbUy50b3BCbHVyLFMudG9wQ29tcG9zaXRpb25TdGFydCxTLnRvcEtleURvd24sUy50b3BLZXlQ
cmVzcyxTLnRvcEtleVVwLFMudG9wTW91c2VEb3duXX0sY29tcG9zaXRpb25VcGRhdGU6e3BoYXNl
ZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOmIoe29uQ29tcG9zaXRpb25VcGRhdGU6bnVsbH0p
LGNhcHR1cmVkOmIoe29uQ29tcG9zaXRpb25VcGRhdGVDYXB0dXJlOm51bGx9KX0sZGVwZW5kZW5j
aWVzOltTLnRvcEJsdXIsUy50b3BDb21wb3NpdGlvblVwZGF0ZSxTLnRvcEtleURvd24sUy50b3BL
ZXlQcmVzcyxTLnRvcEtleVVwLFMudG9wTW91c2VEb3duXX19LE49ITEsaz1udWxsLFI9e2V2ZW50
VHlwZXM6TSxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe3JldHVybltsKGUsdCxuLHIp
LGQoZSx0LG4scildfX07ZS5leHBvcnRzPVJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
dmFyIHI9big3MCksbz1uKDYpLGk9KG4oOCksbigxMDApLG4oMTkzKSksYT1uKDEwNyksdT1uKDEx
MCkscz0obigzKSx1KGZ1bmN0aW9uKGUpe3JldHVybiBhKGUpfSkpLGw9ITEsYz0iY3NzRmxvYXQi
O2lmKG8uY2FuVXNlRE9NKXt2YXIgcD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHls
ZTt0cnl7cC5mb250PSIifWNhdGNoKGQpe2w9ITB9dm9pZCAwPT09ZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50LnN0eWxlLmNzc0Zsb2F0JiYoYz0ic3R5bGVGbG9hdCIpfXZhciBmPXtjcmVhdGVNYXJr
dXBGb3JTdHlsZXM6ZnVuY3Rpb24oZSx0KXt2YXIgbj0iIjtmb3IodmFyIHIgaW4gZSlpZihlLmhh
c093blByb3BlcnR5KHIpKXt2YXIgbz1lW3JdO251bGwhPW8mJihuKz1zKHIpKyI6IixuKz1pKHIs
byx0KSsiOyIpfXJldHVybiBufHxudWxsfSxzZXRWYWx1ZUZvclN0eWxlczpmdW5jdGlvbihlLHQs
bil7dmFyIG89ZS5zdHlsZTtmb3IodmFyIGEgaW4gdClpZih0Lmhhc093blByb3BlcnR5KGEpKXt2
YXIgdT1pKGEsdFthXSxuKTtpZigiZmxvYXQiIT09YSYmImNzc0Zsb2F0IiE9PWF8fChhPWMpLHUp
b1thXT11O2Vsc2V7dmFyIHM9bCYmci5zaG9ydGhhbmRQcm9wZXJ0eUV4cGFuc2lvbnNbYV07aWYo
cylmb3IodmFyIHAgaW4gcylvW3BdPSIiO2Vsc2Ugb1thXT0iIn19fX07ZS5leHBvcnRzPWZ9LGZ1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1lLm5vZGVOYW1l
JiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuInNlbGVjdCI9PT10fHwiaW5wdXQiPT09
dCYmImZpbGUiPT09ZS50eXBlfWZ1bmN0aW9uIG8oZSl7dmFyIHQ9VC5nZXRQb29sZWQoTi5jaGFu
Z2UsUixlLFAoZSkpO18uYWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlcyh0KSx3LmJhdGNoZWRV
cGRhdGVzKGksdCl9ZnVuY3Rpb24gaShlKXtiLmVucXVldWVFdmVudHMoZSksYi5wcm9jZXNzRXZl
bnRRdWV1ZSghMSl9ZnVuY3Rpb24gYShlLHQpe2s9ZSxSPXQsay5hdHRhY2hFdmVudCgib25jaGFu
Z2UiLG8pfWZ1bmN0aW9uIHUoKXtrJiYoay5kZXRhY2hFdmVudCgib25jaGFuZ2UiLG8pLGs9bnVs
bCxSPW51bGwpfWZ1bmN0aW9uIHMoZSx0KXtpZihlPT09TS50b3BDaGFuZ2UpcmV0dXJuIHR9ZnVu
Y3Rpb24gbChlLHQsbil7ZT09PU0udG9wRm9jdXM/KHUoKSxhKHQsbikpOmU9PT1NLnRvcEJsdXIm
JnUoKX1mdW5jdGlvbiBjKGUsdCl7az1lLFI9dCxEPWUudmFsdWUsST1PYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKGUuY29uc3RydWN0b3IucHJvdG90eXBlLCJ2YWx1ZSIpLE9iamVjdC5k
ZWZpbmVQcm9wZXJ0eShrLCJ2YWx1ZSIsVSksay5hdHRhY2hFdmVudD9rLmF0dGFjaEV2ZW50KCJv
bnByb3BlcnR5Y2hhbmdlIixkKTprLmFkZEV2ZW50TGlzdGVuZXIoInByb3BlcnR5Y2hhbmdlIixk
LCExKX1mdW5jdGlvbiBwKCl7ayYmKGRlbGV0ZSBrLnZhbHVlLGsuZGV0YWNoRXZlbnQ/ay5kZXRh
Y2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIsZCk6ay5yZW1vdmVFdmVudExpc3RlbmVyKCJwcm9w
ZXJ0eWNoYW5nZSIsZCwhMSksaz1udWxsLFI9bnVsbCxEPW51bGwsST1udWxsKX1mdW5jdGlvbiBk
KGUpe2lmKCJ2YWx1ZSI9PT1lLnByb3BlcnR5TmFtZSl7dmFyIHQ9ZS5zcmNFbGVtZW50LnZhbHVl
O3QhPT1EJiYoRD10LG8oZSkpfX1mdW5jdGlvbiBmKGUsdCl7aWYoZT09PU0udG9wSW5wdXQpcmV0
dXJuIHR9ZnVuY3Rpb24gaChlLHQsbil7ZT09PU0udG9wRm9jdXM/KHAoKSxjKHQsbikpOmU9PT1N
LnRvcEJsdXImJnAoKX1mdW5jdGlvbiB2KGUsdCl7aWYoKGU9PT1NLnRvcFNlbGVjdGlvbkNoYW5n
ZXx8ZT09PU0udG9wS2V5VXB8fGU9PT1NLnRvcEtleURvd24pJiZrJiZrLnZhbHVlIT09RClyZXR1
cm4gRD1rLnZhbHVlLFJ9ZnVuY3Rpb24gbShlKXtyZXR1cm4gZS5ub2RlTmFtZSYmImlucHV0Ij09
PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmKCJjaGVja2JveCI9PT1lLnR5cGV8fCJyYWRpbyI9
PT1lLnR5cGUpfWZ1bmN0aW9uIHkoZSx0KXtpZihlPT09TS50b3BDbGljaylyZXR1cm4gdH12YXIg
Zz1uKDEyKSxiPW4oMjEpLF89bigyMiksQz1uKDYpLEU9big1KSx3PW4oMTApLFQ9bigxMyksUD1u
KDU1KSx4PW4oNTYpLE89big5NCksUz1uKDE0KSxNPWcudG9wTGV2ZWxUeXBlcyxOPXtjaGFuZ2U6
e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOlMoe29uQ2hhbmdlOm51bGx9KSxjYXB0
dXJlZDpTKHtvbkNoYW5nZUNhcHR1cmU6bnVsbH0pfSxkZXBlbmRlbmNpZXM6W00udG9wQmx1cixN
LnRvcENoYW5nZSxNLnRvcENsaWNrLE0udG9wRm9jdXMsTS50b3BJbnB1dCxNLnRvcEtleURvd24s
TS50b3BLZXlVcCxNLnRvcFNlbGVjdGlvbkNoYW5nZV19fSxrPW51bGwsUj1udWxsLEQ9bnVsbCxJ
PW51bGwsQT0hMTtDLmNhblVzZURPTSYmKEE9eCgiY2hhbmdlIikmJighZG9jdW1lbnQuZG9jdW1l
bnRNb2RlfHxkb2N1bWVudC5kb2N1bWVudE1vZGU+OCkpO3ZhciBMPSExO0MuY2FuVXNlRE9NJiYo
TD14KCJpbnB1dCIpJiYoIWRvY3VtZW50LmRvY3VtZW50TW9kZXx8ZG9jdW1lbnQuZG9jdW1lbnRN
b2RlPjExKSk7dmFyIFU9e2dldDpmdW5jdGlvbigpe3JldHVybiBJLmdldC5jYWxsKHRoaXMpfSxz
ZXQ6ZnVuY3Rpb24oZSl7RD0iIitlLEkuc2V0LmNhbGwodGhpcyxlKX19LGo9e2V2ZW50VHlwZXM6
TixleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLG8pe3ZhciBpLGEsdT10P0UuZ2V0Tm9kZUZy
b21JbnN0YW5jZSh0KTp3aW5kb3c7aWYocih1KT9BP2k9czphPWw6Tyh1KT9MP2k9ZjooaT12LGE9
aCk6bSh1KSYmKGk9eSksaSl7dmFyIGM9aShlLHQpO2lmKGMpe3ZhciBwPVQuZ2V0UG9vbGVkKE4u
Y2hhbmdlLGMsbixvKTtyZXR1cm4gcC50eXBlPSJjaGFuZ2UiLF8uYWNjdW11bGF0ZVR3b1BoYXNl
RGlzcGF0Y2hlcyhwKSxwfX1hJiZhKGUsdSx0KX19O2UuZXhwb3J0cz1qfSxmdW5jdGlvbihlLHQs
bil7InVzZSBzdHJpY3QiO3ZhciByPW4oMiksbz1uKDE3KSxpPW4oNiksYT1uKDEwMyksdT1uKDcp
LHM9KG4oMSkse2Rhbmdlcm91c2x5UmVwbGFjZU5vZGVXaXRoTWFya3VwOmZ1bmN0aW9uKGUsdCl7
aWYoaS5jYW5Vc2VET00/dm9pZCAwOnIoIjU2IiksdD92b2lkIDA6cigiNTciKSwiSFRNTCI9PT1l
Lm5vZGVOYW1lP3IoIjU4Iik6dm9pZCAwLCJzdHJpbmciPT10eXBlb2YgdCl7dmFyIG49YSh0LHUp
WzBdO2UucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQobixlKX1lbHNlIG8ucmVwbGFjZUNoaWxkV2l0
aFRyZWUoZSx0KX19KTtlLmV4cG9ydHM9c30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2
YXIgcj1uKDE0KSxvPVtyKHtSZXNwb25kZXJFdmVudFBsdWdpbjpudWxsfSkscih7U2ltcGxlRXZl
bnRQbHVnaW46bnVsbH0pLHIoe1RhcEV2ZW50UGx1Z2luOm51bGx9KSxyKHtFbnRlckxlYXZlRXZl
bnRQbHVnaW46bnVsbH0pLHIoe0NoYW5nZUV2ZW50UGx1Z2luOm51bGx9KSxyKHtTZWxlY3RFdmVu
dFBsdWdpbjpudWxsfSkscih7QmVmb3JlSW5wdXRFdmVudFBsdWdpbjpudWxsfSldO2UuZXhwb3J0
cz1vfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMTIpLG89bigyMiksaT1u
KDUpLGE9bigyOSksdT1uKDE0KSxzPXIudG9wTGV2ZWxUeXBlcyxsPXttb3VzZUVudGVyOntyZWdp
c3RyYXRpb25OYW1lOnUoe29uTW91c2VFbnRlcjpudWxsfSksZGVwZW5kZW5jaWVzOltzLnRvcE1v
dXNlT3V0LHMudG9wTW91c2VPdmVyXX0sbW91c2VMZWF2ZTp7cmVnaXN0cmF0aW9uTmFtZTp1KHtv
bk1vdXNlTGVhdmU6bnVsbH0pLGRlcGVuZGVuY2llczpbcy50b3BNb3VzZU91dCxzLnRvcE1vdXNl
T3Zlcl19fSxjPXtldmVudFR5cGVzOmwsZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbixyKXtp
ZihlPT09cy50b3BNb3VzZU92ZXImJihuLnJlbGF0ZWRUYXJnZXR8fG4uZnJvbUVsZW1lbnQpKXJl
dHVybiBudWxsO2lmKGUhPT1zLnRvcE1vdXNlT3V0JiZlIT09cy50b3BNb3VzZU92ZXIpcmV0dXJu
IG51bGw7dmFyIHU7aWYoci53aW5kb3c9PT1yKXU9cjtlbHNle3ZhciBjPXIub3duZXJEb2N1bWVu
dDt1PWM/Yy5kZWZhdWx0Vmlld3x8Yy5wYXJlbnRXaW5kb3c6d2luZG93fXZhciBwLGQ7aWYoZT09
PXMudG9wTW91c2VPdXQpe3A9dDt2YXIgZj1uLnJlbGF0ZWRUYXJnZXR8fG4udG9FbGVtZW50O2Q9
Zj9pLmdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKGYpOm51bGx9ZWxzZSBwPW51bGwsZD10O2lm
KHA9PT1kKXJldHVybiBudWxsO3ZhciBoPW51bGw9PXA/dTppLmdldE5vZGVGcm9tSW5zdGFuY2Uo
cCksdj1udWxsPT1kP3U6aS5nZXROb2RlRnJvbUluc3RhbmNlKGQpLG09YS5nZXRQb29sZWQobC5t
b3VzZUxlYXZlLHAsbixyKTttLnR5cGU9Im1vdXNlbGVhdmUiLG0udGFyZ2V0PWgsbS5yZWxhdGVk
VGFyZ2V0PXY7dmFyIHk9YS5nZXRQb29sZWQobC5tb3VzZUVudGVyLGQsbixyKTtyZXR1cm4geS50
eXBlPSJtb3VzZWVudGVyIix5LnRhcmdldD12LHkucmVsYXRlZFRhcmdldD1oLG8uYWNjdW11bGF0
ZUVudGVyTGVhdmVEaXNwYXRjaGVzKG0seSxwLGQpLFttLHldfX07ZS5leHBvcnRzPWN9LGZ1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt0aGlzLl9yb290PWUsdGhpcy5f
c3RhcnRUZXh0PXRoaXMuZ2V0VGV4dCgpLHRoaXMuX2ZhbGxiYWNrVGV4dD1udWxsfXZhciBvPW4o
NCksaT1uKDE1KSxhPW4oOTIpO28oci5wcm90b3R5cGUse2Rlc3RydWN0b3I6ZnVuY3Rpb24oKXt0
aGlzLl9yb290PW51bGwsdGhpcy5fc3RhcnRUZXh0PW51bGwsdGhpcy5fZmFsbGJhY2tUZXh0PW51
bGx9LGdldFRleHQ6ZnVuY3Rpb24oKXtyZXR1cm4idmFsdWUiaW4gdGhpcy5fcm9vdD90aGlzLl9y
b290LnZhbHVlOnRoaXMuX3Jvb3RbYSgpXX0sZ2V0RGF0YTpmdW5jdGlvbigpe2lmKHRoaXMuX2Zh
bGxiYWNrVGV4dClyZXR1cm4gdGhpcy5fZmFsbGJhY2tUZXh0O3ZhciBlLHQsbj10aGlzLl9zdGFy
dFRleHQscj1uLmxlbmd0aCxvPXRoaXMuZ2V0VGV4dCgpLGk9by5sZW5ndGg7Zm9yKGU9MDtlPHIm
Jm5bZV09PT1vW2VdO2UrKyk7dmFyIGE9ci1lO2Zvcih0PTE7dDw9YSYmbltyLXRdPT09b1tpLXRd
O3QrKyk7dmFyIHU9dD4xPzEtdDp2b2lkIDA7cmV0dXJuIHRoaXMuX2ZhbGxiYWNrVGV4dD1vLnNs
aWNlKGUsdSksdGhpcy5fZmFsbGJhY2tUZXh0fX0pLGkuYWRkUG9vbGluZ1RvKHIpLGUuZXhwb3J0
cz1yfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMTgpLG89ci5pbmplY3Rp
b24uTVVTVF9VU0VfUFJPUEVSVFksaT1yLmluamVjdGlvbi5IQVNfQk9PTEVBTl9WQUxVRSxhPXIu
aW5qZWN0aW9uLkhBU19OVU1FUklDX1ZBTFVFLHU9ci5pbmplY3Rpb24uSEFTX1BPU0lUSVZFX05V
TUVSSUNfVkFMVUUscz1yLmluamVjdGlvbi5IQVNfT1ZFUkxPQURFRF9CT09MRUFOX1ZBTFVFLGw9
e2lzQ3VzdG9tQXR0cmlidXRlOlJlZ0V4cC5wcm90b3R5cGUudGVzdC5iaW5kKG5ldyBSZWdFeHAo
Il4oZGF0YXxhcmlhKS1bIityLkFUVFJJQlVURV9OQU1FX0NIQVIrIl0qJCIpKSxQcm9wZXJ0aWVz
OnthY2NlcHQ6MCxhY2NlcHRDaGFyc2V0OjAsYWNjZXNzS2V5OjAsYWN0aW9uOjAsYWxsb3dGdWxs
U2NyZWVuOmksYWxsb3dUcmFuc3BhcmVuY3k6MCxhbHQ6MCxhczowLGFzeW5jOmksYXV0b0NvbXBs
ZXRlOjAsYXV0b1BsYXk6aSxjYXB0dXJlOmksY2VsbFBhZGRpbmc6MCxjZWxsU3BhY2luZzowLGNo
YXJTZXQ6MCxjaGFsbGVuZ2U6MCxjaGVja2VkOm98aSxjaXRlOjAsY2xhc3NJRDowLGNsYXNzTmFt
ZTowLGNvbHM6dSxjb2xTcGFuOjAsY29udGVudDowLGNvbnRlbnRFZGl0YWJsZTowLGNvbnRleHRN
ZW51OjAsY29udHJvbHM6aSxjb29yZHM6MCxjcm9zc09yaWdpbjowLGRhdGE6MCxkYXRlVGltZTow
LGRlZmF1bHQ6aSxkZWZlcjppLGRpcjowLGRpc2FibGVkOmksZG93bmxvYWQ6cyxkcmFnZ2FibGU6
MCxlbmNUeXBlOjAsZm9ybTowLGZvcm1BY3Rpb246MCxmb3JtRW5jVHlwZTowLGZvcm1NZXRob2Q6
MCxmb3JtTm9WYWxpZGF0ZTppLGZvcm1UYXJnZXQ6MCxmcmFtZUJvcmRlcjowLGhlYWRlcnM6MCxo
ZWlnaHQ6MCxoaWRkZW46aSxoaWdoOjAsaHJlZjowLGhyZWZMYW5nOjAsaHRtbEZvcjowLGh0dHBF
cXVpdjowLGljb246MCxpZDowLGlucHV0TW9kZTowLGludGVncml0eTowLGlzOjAsa2V5UGFyYW1z
OjAsa2V5VHlwZTowLGtpbmQ6MCxsYWJlbDowLGxhbmc6MCxsaXN0OjAsbG9vcDppLGxvdzowLG1h
bmlmZXN0OjAsbWFyZ2luSGVpZ2h0OjAsbWFyZ2luV2lkdGg6MCxtYXg6MCxtYXhMZW5ndGg6MCxt
ZWRpYTowLG1lZGlhR3JvdXA6MCxtZXRob2Q6MCxtaW46MCxtaW5MZW5ndGg6MCxtdWx0aXBsZTpv
fGksbXV0ZWQ6b3xpLG5hbWU6MCxub25jZTowLG5vVmFsaWRhdGU6aSxvcGVuOmksb3B0aW11bTow
LHBhdHRlcm46MCxwbGFjZWhvbGRlcjowLHBsYXlzSW5saW5lOmkscG9zdGVyOjAscHJlbG9hZDow
LHByb2ZpbGU6MCxyYWRpb0dyb3VwOjAscmVhZE9ubHk6aSxyZWZlcnJlclBvbGljeTowLHJlbDow
LHJlcXVpcmVkOmkscmV2ZXJzZWQ6aSxyb2xlOjAscm93czp1LHJvd1NwYW46YSxzYW5kYm94OjAs
c2NvcGU6MCxzY29wZWQ6aSxzY3JvbGxpbmc6MCxzZWFtbGVzczppLHNlbGVjdGVkOm98aSxzaGFw
ZTowLHNpemU6dSxzaXplczowLHNwYW46dSxzcGVsbENoZWNrOjAsc3JjOjAsc3JjRG9jOjAsc3Jj
TGFuZzowLHNyY1NldDowLHN0YXJ0OmEsc3RlcDowLHN0eWxlOjAsc3VtbWFyeTowLHRhYkluZGV4
OjAsdGFyZ2V0OjAsdGl0bGU6MCx0eXBlOjAsdXNlTWFwOjAsdmFsdWU6MCx3aWR0aDowLHdtb2Rl
OjAsd3JhcDowLGFib3V0OjAsZGF0YXR5cGU6MCxpbmxpc3Q6MCxwcmVmaXg6MCxwcm9wZXJ0eTow
LHJlc291cmNlOjAsdHlwZW9mOjAsdm9jYWI6MCxhdXRvQ2FwaXRhbGl6ZTowLGF1dG9Db3JyZWN0
OjAsYXV0b1NhdmU6MCxjb2xvcjowLGl0ZW1Qcm9wOjAsaXRlbVNjb3BlOmksaXRlbVR5cGU6MCxp
dGVtSUQ6MCxpdGVtUmVmOjAscmVzdWx0czowLHNlY3VyaXR5OjAsdW5zZWxlY3RhYmxlOjB9LERP
TUF0dHJpYnV0ZU5hbWVzOnthY2NlcHRDaGFyc2V0OiJhY2NlcHQtY2hhcnNldCIsY2xhc3NOYW1l
OiJjbGFzcyIsaHRtbEZvcjoiZm9yIixodHRwRXF1aXY6Imh0dHAtZXF1aXYifSxET01Qcm9wZXJ0
eU5hbWVzOnt9fTtlLmV4cG9ydHM9bH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIg
cj1uKDQpLG89big3MyksaT1uKDQzKSxhPW4oMTczKSx1PW4oNzQpLHM9bigxNTYpLGw9big5KSxj
PW4oODQpLHA9big4NSksZD1uKDE5OSksZj0obigzKSxsLmNyZWF0ZUVsZW1lbnQpLGg9bC5jcmVh
dGVGYWN0b3J5LHY9bC5jbG9uZUVsZW1lbnQsbT1yLHk9e0NoaWxkcmVuOnttYXA6by5tYXAsZm9y
RWFjaDpvLmZvckVhY2gsY291bnQ6by5jb3VudCx0b0FycmF5Om8udG9BcnJheSxvbmx5OmR9LENv
bXBvbmVudDppLFB1cmVDb21wb25lbnQ6YSxjcmVhdGVFbGVtZW50OmYsY2xvbmVFbGVtZW50OnYs
aXNWYWxpZEVsZW1lbnQ6bC5pc1ZhbGlkRWxlbWVudCxQcm9wVHlwZXM6YyxjcmVhdGVDbGFzczp1
LmNyZWF0ZUNsYXNzLGNyZWF0ZUZhY3Rvcnk6aCxjcmVhdGVNaXhpbjpmdW5jdGlvbihlKXtyZXR1
cm4gZX0sRE9NOnMsdmVyc2lvbjpwLF9fc3ByZWFkOm19O2UuZXhwb3J0cz15fSxmdW5jdGlvbihl
LHQsbil7KGZ1bmN0aW9uKHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3ZhciBv
PXZvaWQgMD09PWVbbl07bnVsbCE9dCYmbyYmKGVbbl09aSh0LCEwKSl9dmFyIG89bigxOSksaT1u
KDkzKSxhPShuKDQxKSxuKDU3KSksdT1uKDU4KTtuKDMpOyJ1bmRlZmluZWQiIT10eXBlb2YgdCYm
dC5lbnYsMTt2YXIgcz17aW5zdGFudGlhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbixvKXtpZihu
dWxsPT1lKXJldHVybiBudWxsO3ZhciBpPXt9O3JldHVybiB1KGUscixpKSxpfSx1cGRhdGVDaGls
ZHJlbjpmdW5jdGlvbihlLHQsbixyLHUscyxsLGMscCl7aWYodHx8ZSl7dmFyIGQsZjtmb3IoZCBp
biB0KWlmKHQuaGFzT3duUHJvcGVydHkoZCkpe2Y9ZSYmZVtkXTt2YXIgaD1mJiZmLl9jdXJyZW50
RWxlbWVudCx2PXRbZF07aWYobnVsbCE9ZiYmYShoLHYpKW8ucmVjZWl2ZUNvbXBvbmVudChmLHYs
dSxjKSx0W2RdPWY7ZWxzZXtmJiYocltkXT1vLmdldEhvc3ROb2RlKGYpLG8udW5tb3VudENvbXBv
bmVudChmLCExKSk7dmFyIG09aSh2LCEwKTt0W2RdPW07dmFyIHk9by5tb3VudENvbXBvbmVudCht
LHUscyxsLGMscCk7bi5wdXNoKHkpfX1mb3IoZCBpbiBlKSFlLmhhc093blByb3BlcnR5KGQpfHx0
JiZ0Lmhhc093blByb3BlcnR5KGQpfHwoZj1lW2RdLHJbZF09by5nZXRIb3N0Tm9kZShmKSxvLnVu
bW91bnRDb21wb25lbnQoZiwhMSkpfX0sdW5tb3VudENoaWxkcmVuOmZ1bmN0aW9uKGUsdCl7Zm9y
KHZhciBuIGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0eShuKSl7dmFyIHI9ZVtuXTtvLnVubW91bnRD
b21wb25lbnQocix0KX19fTtlLmV4cG9ydHM9c30pLmNhbGwodCxuKDM2KSl9LGZ1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7dmFyIHI9bigzNyksbz1uKDE1OCksaT17cHJvY2Vzc0NoaWxkcmVu
VXBkYXRlczpvLmRhbmdlcm91c2x5UHJvY2Vzc0NoaWxkcmVuVXBkYXRlcyxyZXBsYWNlTm9kZVdp
dGhNYXJrdXA6ci5kYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cH07ZS5leHBvcnRzPWl9
LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt9ZnVuY3Rpb24gbyhl
LHQpe31mdW5jdGlvbiBpKGUpe3JldHVybiEoIWUucHJvdG90eXBlfHwhZS5wcm90b3R5cGUuaXNS
ZWFjdENvbXBvbmVudCl9ZnVuY3Rpb24gYShlKXtyZXR1cm4hKCFlLnByb3RvdHlwZXx8IWUucHJv
dG90eXBlLmlzUHVyZVJlYWN0Q29tcG9uZW50KX12YXIgdT1uKDIpLHM9big0KSxsPW4oNDQpLGM9
bigxNikscD1uKDkpLGQ9big0NiksZj1uKDIzKSxoPShuKDgpLG4oODMpKSx2PShuKDQ5KSxuKDE5
KSksbT1uKDE5MikseT1uKDIwKSxnPShuKDEpLG4oMzQpKSxiPW4oNTcpLF89KG4oMykse0ltcHVy
ZUNsYXNzOjAsUHVyZUNsYXNzOjEsU3RhdGVsZXNzRnVuY3Rpb25hbDoyfSk7ci5wcm90b3R5cGUu
cmVuZGVyPWZ1bmN0aW9uKCl7dmFyIGU9Zi5nZXQodGhpcykuX2N1cnJlbnRFbGVtZW50LnR5cGUs
dD1lKHRoaXMucHJvcHMsdGhpcy5jb250ZXh0LHRoaXMudXBkYXRlcik7cmV0dXJuIG8oZSx0KSx0
fTt2YXIgQz0xLEU9e2NvbnN0cnVjdDpmdW5jdGlvbihlKXt0aGlzLl9jdXJyZW50RWxlbWVudD1l
LHRoaXMuX3Jvb3ROb2RlSUQ9MCx0aGlzLl9jb21wb3NpdGVUeXBlPW51bGwsdGhpcy5faW5zdGFu
Y2U9bnVsbCx0aGlzLl9ob3N0UGFyZW50PW51bGwsdGhpcy5faG9zdENvbnRhaW5lckluZm89bnVs
bCx0aGlzLl91cGRhdGVCYXRjaE51bWJlcj1udWxsLHRoaXMuX3BlbmRpbmdFbGVtZW50PW51bGws
dGhpcy5fcGVuZGluZ1N0YXRlUXVldWU9bnVsbCx0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlPSEx
LHRoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZT0hMSx0aGlzLl9yZW5kZXJlZE5vZGVUeXBlPW51bGws
dGhpcy5fcmVuZGVyZWRDb21wb25lbnQ9bnVsbCx0aGlzLl9jb250ZXh0PW51bGwsdGhpcy5fbW91
bnRPcmRlcj0wLHRoaXMuX3RvcExldmVsV3JhcHBlcj1udWxsLHRoaXMuX3BlbmRpbmdDYWxsYmFj
a3M9bnVsbCx0aGlzLl9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3VudD0hMX0sbW91bnRDb21wb25l
bnQ6ZnVuY3Rpb24oZSx0LG4scyl7dGhpcy5fY29udGV4dD1zLHRoaXMuX21vdW50T3JkZXI9Qysr
LHRoaXMuX2hvc3RQYXJlbnQ9dCx0aGlzLl9ob3N0Q29udGFpbmVySW5mbz1uO3ZhciBsLGM9dGhp
cy5fY3VycmVudEVsZW1lbnQucHJvcHMsZD10aGlzLl9wcm9jZXNzQ29udGV4dChzKSxoPXRoaXMu
X2N1cnJlbnRFbGVtZW50LnR5cGUsdj1lLmdldFVwZGF0ZVF1ZXVlKCksbT1pKGgpLGc9dGhpcy5f
Y29uc3RydWN0Q29tcG9uZW50KG0sYyxkLHYpO218fG51bGwhPWcmJm51bGwhPWcucmVuZGVyP2Eo
aCk/dGhpcy5fY29tcG9zaXRlVHlwZT1fLlB1cmVDbGFzczp0aGlzLl9jb21wb3NpdGVUeXBlPV8u
SW1wdXJlQ2xhc3M6KGw9ZyxvKGgsbCksbnVsbD09PWd8fGc9PT0hMXx8cC5pc1ZhbGlkRWxlbWVu
dChnKT92b2lkIDA6dSgiMTA1IixoLmRpc3BsYXlOYW1lfHxoLm5hbWV8fCJDb21wb25lbnQiKSxn
PW5ldyByKGgpLHRoaXMuX2NvbXBvc2l0ZVR5cGU9Xy5TdGF0ZWxlc3NGdW5jdGlvbmFsKTtnLnBy
b3BzPWMsZy5jb250ZXh0PWQsZy5yZWZzPXksZy51cGRhdGVyPXYsdGhpcy5faW5zdGFuY2U9Zyxm
LnNldChnLHRoaXMpO3ZhciBiPWcuc3RhdGU7dm9pZCAwPT09YiYmKGcuc3RhdGU9Yj1udWxsKSwi
b2JqZWN0IiE9dHlwZW9mIGJ8fEFycmF5LmlzQXJyYXkoYik/dSgiMTA2Iix0aGlzLmdldE5hbWUo
KXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Iik6dm9pZCAwLHRoaXMuX3BlbmRpbmdTdGF0ZVF1
ZXVlPW51bGwsdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZT0hMSx0aGlzLl9wZW5kaW5nRm9yY2VV
cGRhdGU9ITE7dmFyIEU7cmV0dXJuIEU9Zy51bnN0YWJsZV9oYW5kbGVFcnJvcj90aGlzLnBlcmZv
cm1Jbml0aWFsTW91bnRXaXRoRXJyb3JIYW5kbGluZyhsLHQsbixlLHMpOnRoaXMucGVyZm9ybUlu
aXRpYWxNb3VudChsLHQsbixlLHMpLGcuY29tcG9uZW50RGlkTW91bnQmJmUuZ2V0UmVhY3RNb3Vu
dFJlYWR5KCkuZW5xdWV1ZShnLmNvbXBvbmVudERpZE1vdW50LGcpLEV9LF9jb25zdHJ1Y3RDb21w
b25lbnQ6ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHRoaXMuX2NvbnN0cnVjdENvbXBvbmVudFdp
dGhvdXRPd25lcihlLHQsbixyKX0sX2NvbnN0cnVjdENvbXBvbmVudFdpdGhvdXRPd25lcjpmdW5j
dGlvbihlLHQsbixyKXt2YXIgbz10aGlzLl9jdXJyZW50RWxlbWVudC50eXBlO3JldHVybiBlP25l
dyBvKHQsbixyKTpvKHQsbixyKX0scGVyZm9ybUluaXRpYWxNb3VudFdpdGhFcnJvckhhbmRsaW5n
OmZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGksYT1yLmNoZWNrcG9pbnQoKTt0cnl7aT10aGlzLnBl
cmZvcm1Jbml0aWFsTW91bnQoZSx0LG4scixvKX1jYXRjaCh1KXtyLnJvbGxiYWNrKGEpLHRoaXMu
X2luc3RhbmNlLnVuc3RhYmxlX2hhbmRsZUVycm9yKHUpLHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVl
JiYodGhpcy5faW5zdGFuY2Uuc3RhdGU9dGhpcy5fcHJvY2Vzc1BlbmRpbmdTdGF0ZSh0aGlzLl9p
bnN0YW5jZS5wcm9wcyx0aGlzLl9pbnN0YW5jZS5jb250ZXh0KSksYT1yLmNoZWNrcG9pbnQoKSx0
aGlzLl9yZW5kZXJlZENvbXBvbmVudC51bm1vdW50Q29tcG9uZW50KCEwKSxyLnJvbGxiYWNrKGEp
LGk9dGhpcy5wZXJmb3JtSW5pdGlhbE1vdW50KGUsdCxuLHIsbyl9cmV0dXJuIGl9LHBlcmZvcm1J
bml0aWFsTW91bnQ6ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIgaT10aGlzLl9pbnN0YW5jZSxhPTA7
aS5jb21wb25lbnRXaWxsTW91bnQmJihpLmNvbXBvbmVudFdpbGxNb3VudCgpLHRoaXMuX3BlbmRp
bmdTdGF0ZVF1ZXVlJiYoaS5zdGF0ZT10aGlzLl9wcm9jZXNzUGVuZGluZ1N0YXRlKGkucHJvcHMs
aS5jb250ZXh0KSkpLHZvaWQgMD09PWUmJihlPXRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVu
dCgpKTt2YXIgdT1oLmdldFR5cGUoZSk7dGhpcy5fcmVuZGVyZWROb2RlVHlwZT11O3ZhciBzPXRo
aXMuX2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQoZSx1IT09aC5FTVBUWSk7dGhpcy5fcmVuZGVy
ZWRDb21wb25lbnQ9czt2YXIgbD12Lm1vdW50Q29tcG9uZW50KHMscix0LG4sdGhpcy5fcHJvY2Vz
c0NoaWxkQ29udGV4dChvKSxhKTtyZXR1cm4gbH0sZ2V0SG9zdE5vZGU6ZnVuY3Rpb24oKXtyZXR1
cm4gdi5nZXRIb3N0Tm9kZSh0aGlzLl9yZW5kZXJlZENvbXBvbmVudCl9LHVubW91bnRDb21wb25l
bnQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5fcmVuZGVyZWRDb21wb25lbnQpe3ZhciB0PXRoaXMuX2lu
c3RhbmNlO2lmKHQuY29tcG9uZW50V2lsbFVubW91bnQmJiF0Ll9jYWxsZWRDb21wb25lbnRXaWxs
VW5tb3VudClpZih0Ll9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3VudD0hMCxlKXt2YXIgbj10aGlz
LmdldE5hbWUoKSsiLmNvbXBvbmVudFdpbGxVbm1vdW50KCkiO2QuaW52b2tlR3VhcmRlZENhbGxi
YWNrKG4sdC5jb21wb25lbnRXaWxsVW5tb3VudC5iaW5kKHQpKX1lbHNlIHQuY29tcG9uZW50V2ls
bFVubW91bnQoKTt0aGlzLl9yZW5kZXJlZENvbXBvbmVudCYmKHYudW5tb3VudENvbXBvbmVudCh0
aGlzLl9yZW5kZXJlZENvbXBvbmVudCxlKSx0aGlzLl9yZW5kZXJlZE5vZGVUeXBlPW51bGwsdGhp
cy5fcmVuZGVyZWRDb21wb25lbnQ9bnVsbCx0aGlzLl9pbnN0YW5jZT1udWxsKSx0aGlzLl9wZW5k
aW5nU3RhdGVRdWV1ZT1udWxsLHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU9ITEsdGhpcy5fcGVu
ZGluZ0ZvcmNlVXBkYXRlPSExLHRoaXMuX3BlbmRpbmdDYWxsYmFja3M9bnVsbCx0aGlzLl9wZW5k
aW5nRWxlbWVudD1udWxsLHRoaXMuX2NvbnRleHQ9bnVsbCx0aGlzLl9yb290Tm9kZUlEPTAsdGhp
cy5fdG9wTGV2ZWxXcmFwcGVyPW51bGwsZi5yZW1vdmUodCl9fSxfbWFza0NvbnRleHQ6ZnVuY3Rp
b24oZSl7dmFyIHQ9dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSxuPXQuY29udGV4dFR5cGVzO2lm
KCFuKXJldHVybiB5O3ZhciByPXt9O2Zvcih2YXIgbyBpbiBuKXJbb109ZVtvXTtyZXR1cm4gcn0s
X3Byb2Nlc3NDb250ZXh0OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX21hc2tDb250ZXh0KGUpO3Jl
dHVybiB0fSxfcHJvY2Vzc0NoaWxkQ29udGV4dDpmdW5jdGlvbihlKXt2YXIgdCxuPXRoaXMuX2N1
cnJlbnRFbGVtZW50LnR5cGUscj10aGlzLl9pbnN0YW5jZTsKLWlmKHIuZ2V0Q2hpbGRDb250ZXh0
JiYodD1yLmdldENoaWxkQ29udGV4dCgpKSx0KXsib2JqZWN0IiE9dHlwZW9mIG4uY2hpbGRDb250
ZXh0VHlwZXM/dSgiMTA3Iix0aGlzLmdldE5hbWUoKXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50
Iik6dm9pZCAwO2Zvcih2YXIgbyBpbiB0KW8gaW4gbi5jaGlsZENvbnRleHRUeXBlcz92b2lkIDA6
dSgiMTA4Iix0aGlzLmdldE5hbWUoKXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50IixvKTtyZXR1
cm4gcyh7fSxlLHQpfXJldHVybiBlfSxfY2hlY2tDb250ZXh0VHlwZXM6ZnVuY3Rpb24oZSx0LG4p
e20oZSx0LG4sdGhpcy5nZXROYW1lKCksbnVsbCx0aGlzLl9kZWJ1Z0lEKX0scmVjZWl2ZUNvbXBv
bmVudDpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhpcy5fY3VycmVudEVsZW1lbnQsbz10aGlzLl9j
b250ZXh0O3RoaXMuX3BlbmRpbmdFbGVtZW50PW51bGwsdGhpcy51cGRhdGVDb21wb25lbnQodCxy
LGUsbyxuKX0scGVyZm9ybVVwZGF0ZUlmTmVjZXNzYXJ5OmZ1bmN0aW9uKGUpe251bGwhPXRoaXMu
X3BlbmRpbmdFbGVtZW50P3YucmVjZWl2ZUNvbXBvbmVudCh0aGlzLHRoaXMuX3BlbmRpbmdFbGVt
ZW50LGUsdGhpcy5fY29udGV4dCk6bnVsbCE9PXRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlfHx0aGlz
Ll9wZW5kaW5nRm9yY2VVcGRhdGU/dGhpcy51cGRhdGVDb21wb25lbnQoZSx0aGlzLl9jdXJyZW50
RWxlbWVudCx0aGlzLl9jdXJyZW50RWxlbWVudCx0aGlzLl9jb250ZXh0LHRoaXMuX2NvbnRleHQp
OnRoaXMuX3VwZGF0ZUJhdGNoTnVtYmVyPW51bGx9LHVwZGF0ZUNvbXBvbmVudDpmdW5jdGlvbihl
LHQsbixyLG8pe3ZhciBpPXRoaXMuX2luc3RhbmNlO251bGw9PWk/dSgiMTM2Iix0aGlzLmdldE5h
bWUoKXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Iik6dm9pZCAwO3ZhciBhLHM9ITE7dGhpcy5f
Y29udGV4dD09PW8/YT1pLmNvbnRleHQ6KGE9dGhpcy5fcHJvY2Vzc0NvbnRleHQobykscz0hMCk7
dmFyIGw9dC5wcm9wcyxjPW4ucHJvcHM7dCE9PW4mJihzPSEwKSxzJiZpLmNvbXBvbmVudFdpbGxS
ZWNlaXZlUHJvcHMmJmkuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhjLGEpO3ZhciBwPXRoaXMu
X3Byb2Nlc3NQZW5kaW5nU3RhdGUoYyxhKSxkPSEwO3RoaXMuX3BlbmRpbmdGb3JjZVVwZGF0ZXx8
KGkuc2hvdWxkQ29tcG9uZW50VXBkYXRlP2Q9aS5zaG91bGRDb21wb25lbnRVcGRhdGUoYyxwLGEp
OnRoaXMuX2NvbXBvc2l0ZVR5cGU9PT1fLlB1cmVDbGFzcyYmKGQ9IWcobCxjKXx8IWcoaS5zdGF0
ZSxwKSkpLHRoaXMuX3VwZGF0ZUJhdGNoTnVtYmVyPW51bGwsZD8odGhpcy5fcGVuZGluZ0ZvcmNl
VXBkYXRlPSExLHRoaXMuX3BlcmZvcm1Db21wb25lbnRVcGRhdGUobixjLHAsYSxlLG8pKToodGhp
cy5fY3VycmVudEVsZW1lbnQ9bix0aGlzLl9jb250ZXh0PW8saS5wcm9wcz1jLGkuc3RhdGU9cCxp
LmNvbnRleHQ9YSl9LF9wcm9jZXNzUGVuZGluZ1N0YXRlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhp
cy5faW5zdGFuY2Uscj10aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZSxvPXRoaXMuX3BlbmRpbmdSZXBs
YWNlU3RhdGU7aWYodGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZT0hMSx0aGlzLl9wZW5kaW5nU3Rh
dGVRdWV1ZT1udWxsLCFyKXJldHVybiBuLnN0YXRlO2lmKG8mJjE9PT1yLmxlbmd0aClyZXR1cm4g
clswXTtmb3IodmFyIGk9cyh7fSxvP3JbMF06bi5zdGF0ZSksYT1vPzE6MDthPHIubGVuZ3RoO2Er
Kyl7dmFyIHU9clthXTtzKGksImZ1bmN0aW9uIj09dHlwZW9mIHU/dS5jYWxsKG4saSxlLHQpOnUp
fXJldHVybiBpfSxfcGVyZm9ybUNvbXBvbmVudFVwZGF0ZTpmdW5jdGlvbihlLHQsbixyLG8saSl7
dmFyIGEsdSxzLGw9dGhpcy5faW5zdGFuY2UsYz1Cb29sZWFuKGwuY29tcG9uZW50RGlkVXBkYXRl
KTtjJiYoYT1sLnByb3BzLHU9bC5zdGF0ZSxzPWwuY29udGV4dCksbC5jb21wb25lbnRXaWxsVXBk
YXRlJiZsLmNvbXBvbmVudFdpbGxVcGRhdGUodCxuLHIpLHRoaXMuX2N1cnJlbnRFbGVtZW50PWUs
dGhpcy5fY29udGV4dD1pLGwucHJvcHM9dCxsLnN0YXRlPW4sbC5jb250ZXh0PXIsdGhpcy5fdXBk
YXRlUmVuZGVyZWRDb21wb25lbnQobyxpKSxjJiZvLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVl
dWUobC5jb21wb25lbnREaWRVcGRhdGUuYmluZChsLGEsdSxzKSxsKX0sX3VwZGF0ZVJlbmRlcmVk
Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fcmVuZGVyZWRDb21wb25lbnQscj1u
Ll9jdXJyZW50RWxlbWVudCxvPXRoaXMuX3JlbmRlclZhbGlkYXRlZENvbXBvbmVudCgpLGk9MDtp
ZihiKHIsbykpdi5yZWNlaXZlQ29tcG9uZW50KG4sbyxlLHRoaXMuX3Byb2Nlc3NDaGlsZENvbnRl
eHQodCkpO2Vsc2V7dmFyIGE9di5nZXRIb3N0Tm9kZShuKTt2LnVubW91bnRDb21wb25lbnQobiwh
MSk7dmFyIHU9aC5nZXRUeXBlKG8pO3RoaXMuX3JlbmRlcmVkTm9kZVR5cGU9dTt2YXIgcz10aGlz
Ll9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50KG8sdSE9PWguRU1QVFkpO3RoaXMuX3JlbmRlcmVk
Q29tcG9uZW50PXM7dmFyIGw9di5tb3VudENvbXBvbmVudChzLGUsdGhpcy5faG9zdFBhcmVudCx0
aGlzLl9ob3N0Q29udGFpbmVySW5mbyx0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KHQpLGkpO3Ro
aXMuX3JlcGxhY2VOb2RlV2l0aE1hcmt1cChhLGwsbil9fSxfcmVwbGFjZU5vZGVXaXRoTWFya3Vw
OmZ1bmN0aW9uKGUsdCxuKXtsLnJlcGxhY2VOb2RlV2l0aE1hcmt1cChlLHQsbil9LF9yZW5kZXJW
YWxpZGF0ZWRDb21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQ6ZnVuY3Rpb24oKXt2YXIgZSx0
PXRoaXMuX2luc3RhbmNlO3JldHVybiBlPXQucmVuZGVyKCl9LF9yZW5kZXJWYWxpZGF0ZWRDb21w
b25lbnQ6ZnVuY3Rpb24oKXt2YXIgZTtpZih0aGlzLl9jb21wb3NpdGVUeXBlIT09Xy5TdGF0ZWxl
c3NGdW5jdGlvbmFsKXtjLmN1cnJlbnQ9dGhpczt0cnl7ZT10aGlzLl9yZW5kZXJWYWxpZGF0ZWRD
b21wb25lbnRXaXRob3V0T3duZXJPckNvbnRleHQoKX1maW5hbGx5e2MuY3VycmVudD1udWxsfX1l
bHNlIGU9dGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50V2l0aG91dE93bmVyT3JDb250ZXh0
KCk7cmV0dXJuIG51bGw9PT1lfHxlPT09ITF8fHAuaXNWYWxpZEVsZW1lbnQoZSk/dm9pZCAwOnUo
IjEwOSIsdGhpcy5nZXROYW1lKCl8fCJSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCIpLGV9LGF0dGFj
aFJlZjpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuZ2V0UHVibGljSW5zdGFuY2UoKTtudWxsPT1u
P3UoIjExMCIpOnZvaWQgMDt2YXIgcj10LmdldFB1YmxpY0luc3RhbmNlKCksbz1uLnJlZnM9PT15
P24ucmVmcz17fTpuLnJlZnM7b1tlXT1yfSxkZXRhY2hSZWY6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhp
cy5nZXRQdWJsaWNJbnN0YW5jZSgpLnJlZnM7ZGVsZXRlIHRbZV19LGdldE5hbWU6ZnVuY3Rpb24o
KXt2YXIgZT10aGlzLl9jdXJyZW50RWxlbWVudC50eXBlLHQ9dGhpcy5faW5zdGFuY2UmJnRoaXMu
X2luc3RhbmNlLmNvbnN0cnVjdG9yO3JldHVybiBlLmRpc3BsYXlOYW1lfHx0JiZ0LmRpc3BsYXlO
YW1lfHxlLm5hbWV8fHQmJnQubmFtZXx8bnVsbH0sZ2V0UHVibGljSW5zdGFuY2U6ZnVuY3Rpb24o
KXt2YXIgZT10aGlzLl9pbnN0YW5jZTtyZXR1cm4gdGhpcy5fY29tcG9zaXRlVHlwZT09PV8uU3Rh
dGVsZXNzRnVuY3Rpb25hbD9udWxsOmV9LF9pbnN0YW50aWF0ZVJlYWN0Q29tcG9uZW50Om51bGx9
LHc9e01peGluOkV9O2UuZXhwb3J0cz13fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3Zh
ciByPW4oNSksbz1uKDE2NiksaT1uKDgxKSxhPW4oMTkpLHU9bigxMCkscz1uKDg1KSxsPW4oMTk0
KSxjPW4oOTApLHA9bigyMDEpO24oMyk7by5pbmplY3QoKTt2YXIgZD17ZmluZERPTU5vZGU6bCxy
ZW5kZXI6aS5yZW5kZXIsdW5tb3VudENvbXBvbmVudEF0Tm9kZTppLnVubW91bnRDb21wb25lbnRB
dE5vZGUsdmVyc2lvbjpzLHVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzOnUuYmF0Y2hlZFVwZGF0ZXMs
dW5zdGFibGVfcmVuZGVyU3VidHJlZUludG9Db250YWluZXI6cH07InVuZGVmaW5lZCIhPXR5cGVv
ZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18mJiJmdW5jdGlvbiI9PXR5cGVvZiBfX1JF
QUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uaW5qZWN0JiZfX1JFQUNUX0RFVlRPT0xTX0dMT0JB
TF9IT09LX18uaW5qZWN0KHtDb21wb25lbnRUcmVlOntnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9k
ZTpyLmdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlLGdldE5vZGVGcm9tSW5zdGFuY2U6ZnVuY3Rp
b24oZSl7cmV0dXJuIGUuX3JlbmRlcmVkQ29tcG9uZW50JiYoZT1jKGUpKSxlP3IuZ2V0Tm9kZUZy
b21JbnN0YW5jZShlKTpudWxsfX0sTW91bnQ6aSxSZWNvbmNpbGVyOmF9KTtlLmV4cG9ydHM9ZH0s
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDI3KSxvPXtnZXRIb3N0UHJvcHM6
ci5nZXRIb3N0UHJvcHN9O2UuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSl7aWYoZSl7dmFyIHQ9ZS5fY3VycmVudEVsZW1lbnQuX293bmVyfHxudWxs
O2lmKHQpe3ZhciBuPXQuZ2V0TmFtZSgpO2lmKG4pcmV0dXJuIiBUaGlzIERPTSBub2RlIHdhcyBy
ZW5kZXJlZCBieSBgIituKyJgLiJ9fXJldHVybiIifWZ1bmN0aW9uIG8oZSx0KXt0JiYoJFtlLl90
YWddJiYobnVsbCE9dC5jaGlsZHJlbnx8bnVsbCE9dC5kYW5nZXJvdXNseVNldElubmVySFRNTD92
KCIxMzciLGUuX3RhZyxlLl9jdXJyZW50RWxlbWVudC5fb3duZXI/IiBDaGVjayB0aGUgcmVuZGVy
IG1ldGhvZCBvZiAiK2UuX2N1cnJlbnRFbGVtZW50Ll9vd25lci5nZXROYW1lKCkrIi4iOiIiKTp2
b2lkIDApLG51bGwhPXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJihudWxsIT10LmNoaWxkcmVu
P3YoIjYwIik6dm9pZCAwLCJvYmplY3QiPT10eXBlb2YgdC5kYW5nZXJvdXNseVNldElubmVySFRN
TCYmSyBpbiB0LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MP3ZvaWQgMDp2KCI2MSIpKSxudWxsIT10
LnN0eWxlJiYib2JqZWN0IiE9dHlwZW9mIHQuc3R5bGU/digiNjIiLHIoZSkpOnZvaWQgMCl9ZnVu
Y3Rpb24gaShlLHQsbixyKXtpZighKHIgaW5zdGFuY2VvZiBBKSl7dmFyIG89ZS5faG9zdENvbnRh
aW5lckluZm8saT1vLl9ub2RlJiZvLl9ub2RlLm5vZGVUeXBlPT09eix1PWk/by5fbm9kZTpvLl9v
d25lckRvY3VtZW50O1YodCx1KSxyLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoYSx7aW5z
dDplLHJlZ2lzdHJhdGlvbk5hbWU6dCxsaXN0ZW5lcjpufSl9fWZ1bmN0aW9uIGEoKXt2YXIgZT10
aGlzO1QucHV0TGlzdGVuZXIoZS5pbnN0LGUucmVnaXN0cmF0aW9uTmFtZSxlLmxpc3RlbmVyKX1m
dW5jdGlvbiB1KCl7dmFyIGU9dGhpcztOLnBvc3RNb3VudFdyYXBwZXIoZSl9ZnVuY3Rpb24gcygp
e3ZhciBlPXRoaXM7RC5wb3N0TW91bnRXcmFwcGVyKGUpfWZ1bmN0aW9uIGwoKXt2YXIgZT10aGlz
O2sucG9zdE1vdW50V3JhcHBlcihlKX1mdW5jdGlvbiBjKCl7dmFyIGU9dGhpcztlLl9yb290Tm9k
ZUlEP3ZvaWQgMDp2KCI2MyIpO3ZhciB0PUIoZSk7c3dpdGNoKHQ/dm9pZCAwOnYoIjY0IiksZS5f
dGFnKXtjYXNlImlmcmFtZSI6Y2FzZSJvYmplY3QiOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9
W3gudHJhcEJ1YmJsZWRFdmVudCh3LnRvcExldmVsVHlwZXMudG9wTG9hZCwibG9hZCIsdCldO2Jy
ZWFrO2Nhc2UidmlkZW8iOmNhc2UiYXVkaW8iOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W107
Zm9yKHZhciBuIGluIFgpWC5oYXNPd25Qcm9wZXJ0eShuKSYmZS5fd3JhcHBlclN0YXRlLmxpc3Rl
bmVycy5wdXNoKHgudHJhcEJ1YmJsZWRFdmVudCh3LnRvcExldmVsVHlwZXNbbl0sWFtuXSx0KSk7
YnJlYWs7Y2FzZSJzb3VyY2UiOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W3gudHJhcEJ1YmJs
ZWRFdmVudCh3LnRvcExldmVsVHlwZXMudG9wRXJyb3IsImVycm9yIix0KV07YnJlYWs7Y2FzZSJp
bWciOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W3gudHJhcEJ1YmJsZWRFdmVudCh3LnRvcExl
dmVsVHlwZXMudG9wRXJyb3IsImVycm9yIix0KSx4LnRyYXBCdWJibGVkRXZlbnQody50b3BMZXZl
bFR5cGVzLnRvcExvYWQsImxvYWQiLHQpXTticmVhaztjYXNlImZvcm0iOmUuX3dyYXBwZXJTdGF0
ZS5saXN0ZW5lcnM9W3gudHJhcEJ1YmJsZWRFdmVudCh3LnRvcExldmVsVHlwZXMudG9wUmVzZXQs
InJlc2V0Iix0KSx4LnRyYXBCdWJibGVkRXZlbnQody50b3BMZXZlbFR5cGVzLnRvcFN1Ym1pdCwi
c3VibWl0Iix0KV07YnJlYWs7Y2FzZSJpbnB1dCI6Y2FzZSJzZWxlY3QiOmNhc2UidGV4dGFyZWEi
OmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W3gudHJhcEJ1YmJsZWRFdmVudCh3LnRvcExldmVs
VHlwZXMudG9wSW52YWxpZCwiaW52YWxpZCIsdCldfX1mdW5jdGlvbiBwKCl7Ui5wb3N0VXBkYXRl
V3JhcHBlcih0aGlzKX1mdW5jdGlvbiBkKGUpe2VlLmNhbGwoSixlKXx8KFoudGVzdChlKT92b2lk
IDA6digiNjUiLGUpLEpbZV09ITApfWZ1bmN0aW9uIGYoZSx0KXtyZXR1cm4gZS5pbmRleE9mKCIt
Iik+PTB8fG51bGwhPXQuaXN9ZnVuY3Rpb24gaChlKXt2YXIgdD1lLnR5cGU7ZCh0KSx0aGlzLl9j
dXJyZW50RWxlbWVudD1lLHRoaXMuX3RhZz10LnRvTG93ZXJDYXNlKCksdGhpcy5fbmFtZXNwYWNl
VVJJPW51bGwsdGhpcy5fcmVuZGVyZWRDaGlsZHJlbj1udWxsLHRoaXMuX3ByZXZpb3VzU3R5bGU9
bnVsbCx0aGlzLl9wcmV2aW91c1N0eWxlQ29weT1udWxsLHRoaXMuX2hvc3ROb2RlPW51bGwsdGhp
cy5faG9zdFBhcmVudD1udWxsLHRoaXMuX3Jvb3ROb2RlSUQ9MCx0aGlzLl9kb21JRD0wLHRoaXMu
X2hvc3RDb250YWluZXJJbmZvPW51bGwsdGhpcy5fd3JhcHBlclN0YXRlPW51bGwsdGhpcy5fdG9w
TGV2ZWxXcmFwcGVyPW51bGwsdGhpcy5fZmxhZ3M9MH12YXIgdj1uKDIpLG09big0KSx5PW4oMTM4
KSxnPW4oMTQwKSxiPW4oMTcpLF89bigzOCksQz1uKDE4KSxFPW4oNzIpLHc9bigxMiksVD1uKDIx
KSxQPW4oMzkpLHg9bigyOCksTz1uKDE1MiksUz1uKDc1KSxNPW4oNSksTj1uKDE1OSksaz1uKDE2
MCksUj1uKDc2KSxEPW4oMTYzKSxJPShuKDgpLG4oMTcxKSksQT1uKDE3NiksTD0obig3KSxuKDMw
KSksVT0obigxKSxuKDU2KSxuKDE0KSksaj0obigzNCksbig1OSksbigzKSxTKSxGPVQuZGVsZXRl
TGlzdGVuZXIsQj1NLmdldE5vZGVGcm9tSW5zdGFuY2UsVj14Lmxpc3RlblRvLEg9UC5yZWdpc3Ry
YXRpb25OYW1lTW9kdWxlcyxXPXtzdHJpbmc6ITAsbnVtYmVyOiEwfSxxPVUoe3N0eWxlOm51bGx9
KSxLPVUoe19faHRtbDpudWxsfSksWT17Y2hpbGRyZW46bnVsbCxkYW5nZXJvdXNseVNldElubmVy
SFRNTDpudWxsLHN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZzpudWxsfSx6PTExLFg9e3Rv
cEFib3J0OiJhYm9ydCIsdG9wQ2FuUGxheToiY2FucGxheSIsdG9wQ2FuUGxheVRocm91Z2g6ImNh
bnBsYXl0aHJvdWdoIix0b3BEdXJhdGlvbkNoYW5nZToiZHVyYXRpb25jaGFuZ2UiLHRvcEVtcHRp
ZWQ6ImVtcHRpZWQiLHRvcEVuY3J5cHRlZDoiZW5jcnlwdGVkIix0b3BFbmRlZDoiZW5kZWQiLHRv
cEVycm9yOiJlcnJvciIsdG9wTG9hZGVkRGF0YToibG9hZGVkZGF0YSIsdG9wTG9hZGVkTWV0YWRh
dGE6ImxvYWRlZG1ldGFkYXRhIix0b3BMb2FkU3RhcnQ6ImxvYWRzdGFydCIsdG9wUGF1c2U6InBh
dXNlIix0b3BQbGF5OiJwbGF5Iix0b3BQbGF5aW5nOiJwbGF5aW5nIix0b3BQcm9ncmVzczoicHJv
Z3Jlc3MiLHRvcFJhdGVDaGFuZ2U6InJhdGVjaGFuZ2UiLHRvcFNlZWtlZDoic2Vla2VkIix0b3BT
ZWVraW5nOiJzZWVraW5nIix0b3BTdGFsbGVkOiJzdGFsbGVkIix0b3BTdXNwZW5kOiJzdXNwZW5k
Iix0b3BUaW1lVXBkYXRlOiJ0aW1ldXBkYXRlIix0b3BWb2x1bWVDaGFuZ2U6InZvbHVtZWNoYW5n
ZSIsdG9wV2FpdGluZzoid2FpdGluZyJ9LEc9e2FyZWE6ITAsYmFzZTohMCxicjohMCxjb2w6ITAs
ZW1iZWQ6ITAsaHI6ITAsaW1nOiEwLGlucHV0OiEwLGtleWdlbjohMCxsaW5rOiEwLG1ldGE6ITAs
cGFyYW06ITAsc291cmNlOiEwLHRyYWNrOiEwLHdicjohMH0sUT17bGlzdGluZzohMCxwcmU6ITAs
dGV4dGFyZWE6ITB9LCQ9bSh7bWVudWl0ZW06ITB9LEcpLFo9L15bYS16QS1aXVthLXpBLVo6X1wu
XC1cZF0qJC8sSj17fSxlZT17fS5oYXNPd25Qcm9wZXJ0eSx0ZT0xO2guZGlzcGxheU5hbWU9IlJl
YWN0RE9NQ29tcG9uZW50IixoLk1peGluPXttb3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixy
KXt0aGlzLl9yb290Tm9kZUlEPXRlKyssdGhpcy5fZG9tSUQ9bi5faWRDb3VudGVyKyssdGhpcy5f
aG9zdFBhcmVudD10LHRoaXMuX2hvc3RDb250YWluZXJJbmZvPW47dmFyIGk9dGhpcy5fY3VycmVu
dEVsZW1lbnQucHJvcHM7c3dpdGNoKHRoaXMuX3RhZyl7Y2FzZSJhdWRpbyI6Y2FzZSJmb3JtIjpj
YXNlImlmcmFtZSI6Y2FzZSJpbWciOmNhc2UibGluayI6Y2FzZSJvYmplY3QiOmNhc2Uic291cmNl
IjpjYXNlInZpZGVvIjp0aGlzLl93cmFwcGVyU3RhdGU9e2xpc3RlbmVyczpudWxsfSxlLmdldFJl
YWN0TW91bnRSZWFkeSgpLmVucXVldWUoYyx0aGlzKTticmVhaztjYXNlImJ1dHRvbiI6aT1PLmdl
dEhvc3RQcm9wcyh0aGlzLGksdCk7YnJlYWs7Y2FzZSJpbnB1dCI6Ti5tb3VudFdyYXBwZXIodGhp
cyxpLHQpLGk9Ti5nZXRIb3N0UHJvcHModGhpcyxpKSxlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVu
cXVldWUoYyx0aGlzKTticmVhaztjYXNlIm9wdGlvbiI6ay5tb3VudFdyYXBwZXIodGhpcyxpLHQp
LGk9ay5nZXRIb3N0UHJvcHModGhpcyxpKTticmVhaztjYXNlInNlbGVjdCI6Ui5tb3VudFdyYXBw
ZXIodGhpcyxpLHQpLGk9Ui5nZXRIb3N0UHJvcHModGhpcyxpKSxlLmdldFJlYWN0TW91bnRSZWFk
eSgpLmVucXVldWUoYyx0aGlzKTticmVhaztjYXNlInRleHRhcmVhIjpELm1vdW50V3JhcHBlcih0
aGlzLGksdCksaT1ELmdldEhvc3RQcm9wcyh0aGlzLGkpLGUuZ2V0UmVhY3RNb3VudFJlYWR5KCku
ZW5xdWV1ZShjLHRoaXMpfW8odGhpcyxpKTt2YXIgYSxwO251bGwhPXQ/KGE9dC5fbmFtZXNwYWNl
VVJJLHA9dC5fdGFnKTpuLl90YWcmJihhPW4uX25hbWVzcGFjZVVSSSxwPW4uX3RhZyksKG51bGw9
PWF8fGE9PT1fLnN2ZyYmImZvcmVpZ25vYmplY3QiPT09cCkmJihhPV8uaHRtbCksYT09PV8uaHRt
bCYmKCJzdmciPT09dGhpcy5fdGFnP2E9Xy5zdmc6Im1hdGgiPT09dGhpcy5fdGFnJiYoYT1fLm1h
dGhtbCkpLHRoaXMuX25hbWVzcGFjZVVSST1hO3ZhciBkO2lmKGUudXNlQ3JlYXRlRWxlbWVudCl7
dmFyIGYsaD1uLl9vd25lckRvY3VtZW50O2lmKGE9PT1fLmh0bWwpaWYoInNjcmlwdCI9PT10aGlz
Ll90YWcpe3ZhciB2PWguY3JlYXRlRWxlbWVudCgiZGl2IiksbT10aGlzLl9jdXJyZW50RWxlbWVu
dC50eXBlO3YuaW5uZXJIVE1MPSI8IittKyI+PC8iK20rIj4iLGY9di5yZW1vdmVDaGlsZCh2LmZp
cnN0Q2hpbGQpfWVsc2UgZj1pLmlzP2guY3JlYXRlRWxlbWVudCh0aGlzLl9jdXJyZW50RWxlbWVu
dC50eXBlLGkuaXMpOmguY3JlYXRlRWxlbWVudCh0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlKTtl
bHNlIGY9aC5jcmVhdGVFbGVtZW50TlMoYSx0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlKTtNLnBy
ZWNhY2hlTm9kZSh0aGlzLGYpLHRoaXMuX2ZsYWdzfD1qLmhhc0NhY2hlZENoaWxkTm9kZXMsdGhp
cy5faG9zdFBhcmVudHx8RS5zZXRBdHRyaWJ1dGVGb3JSb290KGYpLHRoaXMuX3VwZGF0ZURPTVBy
b3BlcnRpZXMobnVsbCxpLGUpO3ZhciBnPWIoZik7dGhpcy5fY3JlYXRlSW5pdGlhbENoaWxkcmVu
KGUsaSxyLGcpLGQ9Z31lbHNle3ZhciBDPXRoaXMuX2NyZWF0ZU9wZW5UYWdNYXJrdXBBbmRQdXRM
aXN0ZW5lcnMoZSxpKSx3PXRoaXMuX2NyZWF0ZUNvbnRlbnRNYXJrdXAoZSxpLHIpO2Q9IXcmJkdb
dGhpcy5fdGFnXT9DKyIvPiI6QysiPiIrdysiPC8iK3RoaXMuX2N1cnJlbnRFbGVtZW50LnR5cGUr
Ij4ifXN3aXRjaCh0aGlzLl90YWcpe2Nhc2UiaW5wdXQiOmUuZ2V0UmVhY3RNb3VudFJlYWR5KCku
ZW5xdWV1ZSh1LHRoaXMpLGkuYXV0b0ZvY3VzJiZlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVl
dWUoeS5mb2N1c0RPTUNvbXBvbmVudCx0aGlzKTticmVhaztjYXNlInRleHRhcmVhIjplLmdldFJl
YWN0TW91bnRSZWFkeSgpLmVucXVldWUocyx0aGlzKSxpLmF1dG9Gb2N1cyYmZS5nZXRSZWFjdE1v
dW50UmVhZHkoKS5lbnF1ZXVlKHkuZm9jdXNET01Db21wb25lbnQsdGhpcyk7YnJlYWs7Y2FzZSJz
ZWxlY3QiOmkuYXV0b0ZvY3VzJiZlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoeS5mb2N1
c0RPTUNvbXBvbmVudCx0aGlzKTticmVhaztjYXNlImJ1dHRvbiI6aS5hdXRvRm9jdXMmJmUuZ2V0
UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZSh5LmZvY3VzRE9NQ29tcG9uZW50LHRoaXMpO2JyZWFr
O2Nhc2Uib3B0aW9uIjplLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUobCx0aGlzKX1yZXR1
cm4gZH0sX2NyZWF0ZU9wZW5UYWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnM6ZnVuY3Rpb24oZSx0KXt2
YXIgbj0iPCIrdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtmb3IodmFyIHIgaW4gdClpZih0Lmhh
c093blByb3BlcnR5KHIpKXt2YXIgbz10W3JdO2lmKG51bGwhPW8paWYoSC5oYXNPd25Qcm9wZXJ0
eShyKSlvJiZpKHRoaXMscixvLGUpO2Vsc2V7cj09PXEmJihvJiYobz10aGlzLl9wcmV2aW91c1N0
eWxlQ29weT1tKHt9LHQuc3R5bGUpKSxvPWcuY3JlYXRlTWFya3VwRm9yU3R5bGVzKG8sdGhpcykp
O3ZhciBhPW51bGw7bnVsbCE9dGhpcy5fdGFnJiZmKHRoaXMuX3RhZyx0KT9ZLmhhc093blByb3Bl
cnR5KHIpfHwoYT1FLmNyZWF0ZU1hcmt1cEZvckN1c3RvbUF0dHJpYnV0ZShyLG8pKTphPUUuY3Jl
YXRlTWFya3VwRm9yUHJvcGVydHkocixvKSxhJiYobis9IiAiK2EpfX1yZXR1cm4gZS5yZW5kZXJU
b1N0YXRpY01hcmt1cD9uOih0aGlzLl9ob3N0UGFyZW50fHwobis9IiAiK0UuY3JlYXRlTWFya3Vw
Rm9yUm9vdCgpKSxuKz0iICIrRS5jcmVhdGVNYXJrdXBGb3JJRCh0aGlzLl9kb21JRCkpfSxfY3Jl
YXRlQ29udGVudE1hcmt1cDpmdW5jdGlvbihlLHQsbil7dmFyIHI9IiIsbz10LmRhbmdlcm91c2x5
U2V0SW5uZXJIVE1MO2lmKG51bGwhPW8pbnVsbCE9by5fX2h0bWwmJihyPW8uX19odG1sKTtlbHNl
e3ZhciBpPVdbdHlwZW9mIHQuY2hpbGRyZW5dP3QuY2hpbGRyZW46bnVsbCxhPW51bGwhPWk/bnVs
bDp0LmNoaWxkcmVuO2lmKG51bGwhPWkpcj1MKGkpO2Vsc2UgaWYobnVsbCE9YSl7dmFyIHU9dGhp
cy5tb3VudENoaWxkcmVuKGEsZSxuKTtyPXUuam9pbigiIil9fXJldHVybiBRW3RoaXMuX3RhZ10m
JiJcbiI9PT1yLmNoYXJBdCgwKT8iXG4iK3I6cn0sX2NyZWF0ZUluaXRpYWxDaGlsZHJlbjpmdW5j
dGlvbihlLHQsbixyKXt2YXIgbz10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MO2lmKG51bGwhPW8p
bnVsbCE9by5fX2h0bWwmJmIucXVldWVIVE1MKHIsby5fX2h0bWwpO2Vsc2V7dmFyIGk9V1t0eXBl
b2YgdC5jaGlsZHJlbl0/dC5jaGlsZHJlbjpudWxsLGE9bnVsbCE9aT9udWxsOnQuY2hpbGRyZW47
aWYobnVsbCE9aSliLnF1ZXVlVGV4dChyLGkpO2Vsc2UgaWYobnVsbCE9YSlmb3IodmFyIHU9dGhp
cy5tb3VudENoaWxkcmVuKGEsZSxuKSxzPTA7czx1Lmxlbmd0aDtzKyspYi5xdWV1ZUNoaWxkKHIs
dVtzXSl9fSxyZWNlaXZlQ29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9jdXJy
ZW50RWxlbWVudDt0aGlzLl9jdXJyZW50RWxlbWVudD1lLHRoaXMudXBkYXRlQ29tcG9uZW50KHQs
cixlLG4pfSx1cGRhdGVDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scil7dmFyIGk9dC5wcm9wcyxh
PXRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzO3N3aXRjaCh0aGlzLl90YWcpe2Nhc2UiYnV0dG9u
IjppPU8uZ2V0SG9zdFByb3BzKHRoaXMsaSksYT1PLmdldEhvc3RQcm9wcyh0aGlzLGEpO2JyZWFr
O2Nhc2UiaW5wdXQiOmk9Ti5nZXRIb3N0UHJvcHModGhpcyxpKSxhPU4uZ2V0SG9zdFByb3BzKHRo
aXMsYSk7YnJlYWs7Y2FzZSJvcHRpb24iOmk9ay5nZXRIb3N0UHJvcHModGhpcyxpKSxhPWsuZ2V0
SG9zdFByb3BzKHRoaXMsYSk7YnJlYWs7Y2FzZSJzZWxlY3QiOmk9Ui5nZXRIb3N0UHJvcHModGhp
cyxpKSxhPVIuZ2V0SG9zdFByb3BzKHRoaXMsYSk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6aT1ELmdl
dEhvc3RQcm9wcyh0aGlzLGkpLGE9RC5nZXRIb3N0UHJvcHModGhpcyxhKX1zd2l0Y2gobyh0aGlz
LGEpLHRoaXMuX3VwZGF0ZURPTVByb3BlcnRpZXMoaSxhLGUpLHRoaXMuX3VwZGF0ZURPTUNoaWxk
cmVuKGksYSxlLHIpLHRoaXMuX3RhZyl7Y2FzZSJpbnB1dCI6Ti51cGRhdGVXcmFwcGVyKHRoaXMp
O2JyZWFrO2Nhc2UidGV4dGFyZWEiOkQudXBkYXRlV3JhcHBlcih0aGlzKTticmVhaztjYXNlInNl
bGVjdCI6ZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHAsdGhpcyl9fSxfdXBkYXRlRE9N
UHJvcGVydGllczpmdW5jdGlvbihlLHQsbil7dmFyIHIsbyxhO2ZvcihyIGluIGUpaWYoIXQuaGFz
T3duUHJvcGVydHkocikmJmUuaGFzT3duUHJvcGVydHkocikmJm51bGwhPWVbcl0paWYocj09PXEp
e3ZhciB1PXRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5O2ZvcihvIGluIHUpdS5oYXNPd25Qcm9wZXJ0
eShvKSYmKGE9YXx8e30sYVtvXT0iIik7dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk9bnVsbH1lbHNl
IEguaGFzT3duUHJvcGVydHkocik/ZVtyXSYmRih0aGlzLHIpOmYodGhpcy5fdGFnLGUpP1kuaGFz
T3duUHJvcGVydHkocil8fEUuZGVsZXRlVmFsdWVGb3JBdHRyaWJ1dGUoQih0aGlzKSxyKTooQy5w
cm9wZXJ0aWVzW3JdfHxDLmlzQ3VzdG9tQXR0cmlidXRlKHIpKSYmRS5kZWxldGVWYWx1ZUZvclBy
b3BlcnR5KEIodGhpcykscik7Zm9yKHIgaW4gdCl7dmFyIHM9dFtyXSxsPXI9PT1xP3RoaXMuX3By
ZXZpb3VzU3R5bGVDb3B5Om51bGwhPWU/ZVtyXTp2b2lkIDA7aWYodC5oYXNPd25Qcm9wZXJ0eShy
KSYmcyE9PWwmJihudWxsIT1zfHxudWxsIT1sKSlpZihyPT09cSlpZihzP3M9dGhpcy5fcHJldmlv
dXNTdHlsZUNvcHk9bSh7fSxzKTp0aGlzLl9wcmV2aW91c1N0eWxlQ29weT1udWxsLGwpe2Zvcihv
IGluIGwpIWwuaGFzT3duUHJvcGVydHkobyl8fHMmJnMuaGFzT3duUHJvcGVydHkobyl8fChhPWF8
fHt9LGFbb109IiIpO2ZvcihvIGluIHMpcy5oYXNPd25Qcm9wZXJ0eShvKSYmbFtvXSE9PXNbb10m
JihhPWF8fHt9LGFbb109c1tvXSl9ZWxzZSBhPXM7ZWxzZSBpZihILmhhc093blByb3BlcnR5KHIp
KXM/aSh0aGlzLHIscyxuKTpsJiZGKHRoaXMscik7ZWxzZSBpZihmKHRoaXMuX3RhZyx0KSlZLmhh
c093blByb3BlcnR5KHIpfHxFLnNldFZhbHVlRm9yQXR0cmlidXRlKEIodGhpcykscixzKTtlbHNl
IGlmKEMucHJvcGVydGllc1tyXXx8Qy5pc0N1c3RvbUF0dHJpYnV0ZShyKSl7dmFyIGM9Qih0aGlz
KTtudWxsIT1zP0Uuc2V0VmFsdWVGb3JQcm9wZXJ0eShjLHIscyk6RS5kZWxldGVWYWx1ZUZvclBy
b3BlcnR5KGMscil9fWEmJmcuc2V0VmFsdWVGb3JTdHlsZXMoQih0aGlzKSxhLHRoaXMpfSxfdXBk
YXRlRE9NQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89V1t0eXBlb2YgZS5jaGlsZHJl
bl0/ZS5jaGlsZHJlbjpudWxsLGk9V1t0eXBlb2YgdC5jaGlsZHJlbl0/dC5jaGlsZHJlbjpudWxs
LGE9ZS5kYW5nZXJvdXNseVNldElubmVySFRNTCYmZS5kYW5nZXJvdXNseVNldElubmVySFRNTC5f
X2h0bWwsdT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiZ0LmRhbmdlcm91c2x5U2V0SW5uZXJI
VE1MLl9faHRtbCxzPW51bGwhPW8/bnVsbDplLmNoaWxkcmVuLGw9bnVsbCE9aT9udWxsOnQuY2hp
bGRyZW4sYz1udWxsIT1vfHxudWxsIT1hLHA9bnVsbCE9aXx8bnVsbCE9dTtudWxsIT1zJiZudWxs
PT1sP3RoaXMudXBkYXRlQ2hpbGRyZW4obnVsbCxuLHIpOmMmJiFwJiZ0aGlzLnVwZGF0ZVRleHRD
b250ZW50KCIiKSxudWxsIT1pP28hPT1pJiZ0aGlzLnVwZGF0ZVRleHRDb250ZW50KCIiK2kpOm51
bGwhPXU/YSE9PXUmJnRoaXMudXBkYXRlTWFya3VwKCIiK3UpOm51bGwhPWwmJnRoaXMudXBkYXRl
Q2hpbGRyZW4obCxuLHIpfSxnZXRIb3N0Tm9kZTpmdW5jdGlvbigpe3JldHVybiBCKHRoaXMpfSx1
bm1vdW50Q29tcG9uZW50OmZ1bmN0aW9uKGUpe3N3aXRjaCh0aGlzLl90YWcpe2Nhc2UiYXVkaW8i
OmNhc2UiZm9ybSI6Y2FzZSJpZnJhbWUiOmNhc2UiaW1nIjpjYXNlImxpbmsiOmNhc2Uib2JqZWN0
IjpjYXNlInNvdXJjZSI6Y2FzZSJ2aWRlbyI6dmFyIHQ9dGhpcy5fd3JhcHBlclN0YXRlLmxpc3Rl
bmVycztpZih0KWZvcih2YXIgbj0wO248dC5sZW5ndGg7bisrKXRbbl0ucmVtb3ZlKCk7YnJlYWs7
Y2FzZSJodG1sIjpjYXNlImhlYWQiOmNhc2UiYm9keSI6digiNjYiLHRoaXMuX3RhZyl9dGhpcy51
bm1vdW50Q2hpbGRyZW4oZSksTS51bmNhY2hlTm9kZSh0aGlzKSxULmRlbGV0ZUFsbExpc3RlbmVy
cyh0aGlzKSx0aGlzLl9yb290Tm9kZUlEPTAsdGhpcy5fZG9tSUQ9MCx0aGlzLl93cmFwcGVyU3Rh
dGU9bnVsbH0sZ2V0UHVibGljSW5zdGFuY2U6ZnVuY3Rpb24oKXtyZXR1cm4gQih0aGlzKX19LG0o
aC5wcm90b3R5cGUsaC5NaXhpbixJLk1peGluKSxlLmV4cG9ydHM9aH0sZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7dmFyIG49e190b3BMZXZlbFdyYXBwZXI6ZSxf
aWRDb3VudGVyOjEsX293bmVyRG9jdW1lbnQ6dD90Lm5vZGVUeXBlPT09bz90OnQub3duZXJEb2N1
bWVudDpudWxsLF9ub2RlOnQsX3RhZzp0P3Qubm9kZU5hbWUudG9Mb3dlckNhc2UoKTpudWxsLF9u
YW1lc3BhY2VVUkk6dD90Lm5hbWVzcGFjZVVSSTpudWxsfTtyZXR1cm4gbn12YXIgbz0obig1OSks
OSk7ZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9big0KSxv
PW4oMTcpLGk9big1KSxhPWZ1bmN0aW9uKGUpe3RoaXMuX2N1cnJlbnRFbGVtZW50PW51bGwsdGhp
cy5faG9zdE5vZGU9bnVsbCx0aGlzLl9ob3N0UGFyZW50PW51bGwsdGhpcy5faG9zdENvbnRhaW5l
ckluZm89bnVsbCx0aGlzLl9kb21JRD0wfTtyKGEucHJvdG90eXBlLHttb3VudENvbXBvbmVudDpm
dW5jdGlvbihlLHQsbixyKXt2YXIgYT1uLl9pZENvdW50ZXIrKzt0aGlzLl9kb21JRD1hLHRoaXMu
X2hvc3RQYXJlbnQ9dCx0aGlzLl9ob3N0Q29udGFpbmVySW5mbz1uO3ZhciB1PSIgcmVhY3QtZW1w
dHk6ICIrdGhpcy5fZG9tSUQrIiAiO2lmKGUudXNlQ3JlYXRlRWxlbWVudCl7dmFyIHM9bi5fb3du
ZXJEb2N1bWVudCxsPXMuY3JlYXRlQ29tbWVudCh1KTtyZXR1cm4gaS5wcmVjYWNoZU5vZGUodGhp
cyxsKSxvKGwpfXJldHVybiBlLnJlbmRlclRvU3RhdGljTWFya3VwPyIiOiI8IS0tIit1KyItLT4i
fSxyZWNlaXZlQ29tcG9uZW50OmZ1bmN0aW9uKCl7fSxnZXRIb3N0Tm9kZTpmdW5jdGlvbigpe3Jl
dHVybiBpLmdldE5vZGVGcm9tSW5zdGFuY2UodGhpcyl9LHVubW91bnRDb21wb25lbnQ6ZnVuY3Rp
b24oKXtpLnVuY2FjaGVOb2RlKHRoaXMpfX0pLGUuZXhwb3J0cz1hfSxmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO3ZhciByPW4oOSksbz1yLmNyZWF0ZUZhY3RvcnksaT17YTpvKCJhIiksYWJi
cjpvKCJhYmJyIiksYWRkcmVzczpvKCJhZGRyZXNzIiksYXJlYTpvKCJhcmVhIiksYXJ0aWNsZTpv
KCJhcnRpY2xlIiksYXNpZGU6bygiYXNpZGUiKSxhdWRpbzpvKCJhdWRpbyIpLGI6bygiYiIpLGJh
c2U6bygiYmFzZSIpLGJkaTpvKCJiZGkiKSxiZG86bygiYmRvIiksYmlnOm8oImJpZyIpLGJsb2Nr
cXVvdGU6bygiYmxvY2txdW90ZSIpLGJvZHk6bygiYm9keSIpLGJyOm8oImJyIiksYnV0dG9uOm8o
ImJ1dHRvbiIpLGNhbnZhczpvKCJjYW52YXMiKSxjYXB0aW9uOm8oImNhcHRpb24iKSxjaXRlOm8o
ImNpdGUiKSxjb2RlOm8oImNvZGUiKSxjb2w6bygiY29sIiksY29sZ3JvdXA6bygiY29sZ3JvdXAi
KSxkYXRhOm8oImRhdGEiKSxkYXRhbGlzdDpvKCJkYXRhbGlzdCIpLGRkOm8oImRkIiksZGVsOm8o
ImRlbCIpLGRldGFpbHM6bygiZGV0YWlscyIpLGRmbjpvKCJkZm4iKSxkaWFsb2c6bygiZGlhbG9n
IiksZGl2Om8oImRpdiIpLGRsOm8oImRsIiksZHQ6bygiZHQiKSxlbTpvKCJlbSIpLGVtYmVkOm8o
ImVtYmVkIiksZmllbGRzZXQ6bygiZmllbGRzZXQiKSxmaWdjYXB0aW9uOm8oImZpZ2NhcHRpb24i
KSxmaWd1cmU6bygiZmlndXJlIiksZm9vdGVyOm8oImZvb3RlciIpLGZvcm06bygiZm9ybSIpLGgx
Om8oImgxIiksaDI6bygiaDIiKSxoMzpvKCJoMyIpLGg0Om8oImg0IiksaDU6bygiaDUiKSxoNjpv
KCJoNiIpLGhlYWQ6bygiaGVhZCIpLGhlYWRlcjpvKCJoZWFkZXIiKSxoZ3JvdXA6bygiaGdyb3Vw
IiksaHI6bygiaHIiKSxodG1sOm8oImh0bWwiKSxpOm8oImkiKSxpZnJhbWU6bygiaWZyYW1lIiks
aW1nOm8oImltZyIpLGlucHV0Om8oImlucHV0IiksaW5zOm8oImlucyIpLGtiZDpvKCJrYmQiKSxr
ZXlnZW46bygia2V5Z2VuIiksbGFiZWw6bygibGFiZWwiKSxsZWdlbmQ6bygibGVnZW5kIiksbGk6
bygibGkiKSxsaW5rOm8oImxpbmsiKSxtYWluOm8oIm1haW4iKSxtYXA6bygibWFwIiksbWFyazpv
KCJtYXJrIiksbWVudTpvKCJtZW51IiksbWVudWl0ZW06bygibWVudWl0ZW0iKSxtZXRhOm8oIm1l
dGEiKSxtZXRlcjpvKCJtZXRlciIpLG5hdjpvKCJuYXYiKSxub3NjcmlwdDpvKCJub3NjcmlwdCIp
LG9iamVjdDpvKCJvYmplY3QiKSxvbDpvKCJvbCIpLG9wdGdyb3VwOm8oIm9wdGdyb3VwIiksb3B0
aW9uOm8oIm9wdGlvbiIpLG91dHB1dDpvKCJvdXRwdXQiKSxwOm8oInAiKSxwYXJhbTpvKCJwYXJh
bSIpLHBpY3R1cmU6bygicGljdHVyZSIpLHByZTpvKCJwcmUiKSxwcm9ncmVzczpvKCJwcm9ncmVz
cyIpLHE6bygicSIpLHJwOm8oInJwIikscnQ6bygicnQiKSxydWJ5Om8oInJ1YnkiKSxzOm8oInMi
KSxzYW1wOm8oInNhbXAiKSxzY3JpcHQ6bygic2NyaXB0Iiksc2VjdGlvbjpvKCJzZWN0aW9uIiks
c2VsZWN0Om8oInNlbGVjdCIpLHNtYWxsOm8oInNtYWxsIiksc291cmNlOm8oInNvdXJjZSIpLHNw
YW46bygic3BhbiIpLHN0cm9uZzpvKCJzdHJvbmciKSxzdHlsZTpvKCJzdHlsZSIpLHN1YjpvKCJz
dWIiKSxzdW1tYXJ5Om8oInN1bW1hcnkiKSxzdXA6bygic3VwIiksdGFibGU6bygidGFibGUiKSx0
Ym9keTpvKCJ0Ym9keSIpLHRkOm8oInRkIiksdGV4dGFyZWE6bygidGV4dGFyZWEiKSx0Zm9vdDpv
KCJ0Zm9vdCIpLHRoOm8oInRoIiksdGhlYWQ6bygidGhlYWQiKSx0aW1lOm8oInRpbWUiKSx0aXRs
ZTpvKCJ0aXRsZSIpLHRyOm8oInRyIiksdHJhY2s6bygidHJhY2siKSx1Om8oInUiKSx1bDpvKCJ1
bCIpLHZhcjpvKCJ2YXIiKSx2aWRlbzpvKCJ2aWRlbyIpLHdicjpvKCJ3YnIiKSxjaXJjbGU6bygi
Y2lyY2xlIiksY2xpcFBhdGg6bygiY2xpcFBhdGgiKSxkZWZzOm8oImRlZnMiKSxlbGxpcHNlOm8o
ImVsbGlwc2UiKSxnOm8oImciKSxpbWFnZTpvKCJpbWFnZSIpLGxpbmU6bygibGluZSIpLGxpbmVh
ckdyYWRpZW50Om8oImxpbmVhckdyYWRpZW50IiksbWFzazpvKCJtYXNrIikscGF0aDpvKCJwYXRo
IikscGF0dGVybjpvKCJwYXR0ZXJuIikscG9seWdvbjpvKCJwb2x5Z29uIikscG9seWxpbmU6bygi
cG9seWxpbmUiKSxyYWRpYWxHcmFkaWVudDpvKCJyYWRpYWxHcmFkaWVudCIpLHJlY3Q6bygicmVj
dCIpLHN0b3A6bygic3RvcCIpLHN2ZzpvKCJzdmciKSx0ZXh0Om8oInRleHQiKSx0c3BhbjpvKCJ0
c3BhbiIpfTtlLmV4cG9ydHM9aX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmljdCI7dmFyIG49e3Vz
ZUNyZWF0ZUVsZW1lbnQ6ITB9O2UuZXhwb3J0cz1ufSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3ZhciByPW4oMzcpLG89big1KSxpPXtkYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJlblVwZGF0
ZXM6ZnVuY3Rpb24oZSx0KXt2YXIgbj1vLmdldE5vZGVGcm9tSW5zdGFuY2UoZSk7ci5wcm9jZXNz
VXBkYXRlcyhuLHQpfX07ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
ZnVuY3Rpb24gcigpe3RoaXMuX3Jvb3ROb2RlSUQmJmQudXBkYXRlV3JhcHBlcih0aGlzKX1mdW5j
dGlvbiBvKGUpe3ZhciB0PXRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzLG49bC5leGVjdXRlT25D
aGFuZ2UodCxlKTtwLmFzYXAocix0aGlzKTt2YXIgbz10Lm5hbWU7aWYoInJhZGlvIj09PXQudHlw
ZSYmbnVsbCE9byl7Zm9yKHZhciBhPWMuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKSx1PWE7dS5w
YXJlbnROb2RlOyl1PXUucGFyZW50Tm9kZTtmb3IodmFyIHM9dS5xdWVyeVNlbGVjdG9yQWxsKCJp
bnB1dFtuYW1lPSIrSlNPTi5zdHJpbmdpZnkoIiIrbykrJ11bdHlwZT0icmFkaW8iXScpLGQ9MDtk
PHMubGVuZ3RoO2QrKyl7dmFyIGY9c1tkXTtpZihmIT09YSYmZi5mb3JtPT09YS5mb3JtKXt2YXIg
aD1jLmdldEluc3RhbmNlRnJvbU5vZGUoZik7aD92b2lkIDA6aSgiOTAiKSxwLmFzYXAocixoKX19
fXJldHVybiBufXZhciBpPW4oMiksYT1uKDQpLHU9bigyNykscz1uKDcyKSxsPW4oNDIpLGM9big1
KSxwPW4oMTApLGQ9KG4oMSksbigzKSx7Z2V0SG9zdFByb3BzOmZ1bmN0aW9uKGUsdCl7dmFyIG49
bC5nZXRWYWx1ZSh0KSxyPWwuZ2V0Q2hlY2tlZCh0KSxvPWEoe3R5cGU6dm9pZCAwLHN0ZXA6dm9p
ZCAwLG1pbjp2b2lkIDAsbWF4OnZvaWQgMH0sdS5nZXRIb3N0UHJvcHMoZSx0KSx7ZGVmYXVsdENo
ZWNrZWQ6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsdmFsdWU6bnVsbCE9bj9uOmUuX3dyYXBw
ZXJTdGF0ZS5pbml0aWFsVmFsdWUsY2hlY2tlZDpudWxsIT1yP3I6ZS5fd3JhcHBlclN0YXRlLmlu
aXRpYWxDaGVja2VkLG9uQ2hhbmdlOmUuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZX0pO3JldHVybiBv
fSxtb3VudFdyYXBwZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmRlZmF1bHRWYWx1ZTtlLl93cmFw
cGVyU3RhdGU9e2luaXRpYWxDaGVja2VkOm51bGwhPXQuY2hlY2tlZD90LmNoZWNrZWQ6dC5kZWZh
dWx0Q2hlY2tlZCxpbml0aWFsVmFsdWU6bnVsbCE9dC52YWx1ZT90LnZhbHVlOm4sbGlzdGVuZXJz
Om51bGwsb25DaGFuZ2U6by5iaW5kKGUpfX0sdXBkYXRlV3JhcHBlcjpmdW5jdGlvbihlKXt2YXIg
dD1lLl9jdXJyZW50RWxlbWVudC5wcm9wcyxuPXQuY2hlY2tlZDtudWxsIT1uJiZzLnNldFZhbHVl
Rm9yUHJvcGVydHkoYy5nZXROb2RlRnJvbUluc3RhbmNlKGUpLCJjaGVja2VkIixufHwhMSk7dmFy
IHI9Yy5nZXROb2RlRnJvbUluc3RhbmNlKGUpLG89bC5nZXRWYWx1ZSh0KTtpZihudWxsIT1vKXt2
YXIgaT0iIitvO2khPT1yLnZhbHVlJiYoci52YWx1ZT1pKX1lbHNlIG51bGw9PXQudmFsdWUmJm51
bGwhPXQuZGVmYXVsdFZhbHVlJiYoci5kZWZhdWx0VmFsdWU9IiIrdC5kZWZhdWx0VmFsdWUpLG51
bGw9PXQuY2hlY2tlZCYmbnVsbCE9dC5kZWZhdWx0Q2hlY2tlZCYmKHIuZGVmYXVsdENoZWNrZWQ9
ISF0LmRlZmF1bHRDaGVja2VkKX0scG9zdE1vdW50V3JhcHBlcjpmdW5jdGlvbihlKXt2YXIgdD1l
Ll9jdXJyZW50RWxlbWVudC5wcm9wcyxuPWMuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKTtzd2l0Y2go
dC50eXBlKXtjYXNlInN1Ym1pdCI6Y2FzZSJyZXNldCI6YnJlYWs7Y2FzZSJjb2xvciI6Y2FzZSJk
YXRlIjpjYXNlImRhdGV0aW1lIjpjYXNlImRhdGV0aW1lLWxvY2FsIjpjYXNlIm1vbnRoIjpjYXNl
InRpbWUiOmNhc2Uid2VlayI6bi52YWx1ZT0iIixuLnZhbHVlPW4uZGVmYXVsdFZhbHVlO2JyZWFr
O2RlZmF1bHQ6bi52YWx1ZT1uLnZhbHVlfXZhciByPW4ubmFtZTsiIiE9PXImJihuLm5hbWU9IiIp
LG4uZGVmYXVsdENoZWNrZWQ9IW4uZGVmYXVsdENoZWNrZWQsbi5kZWZhdWx0Q2hlY2tlZD0hbi5k
ZWZhdWx0Q2hlY2tlZCwiIiE9PXImJihuLm5hbWU9cil9fSk7ZS5leHBvcnRzPWR9LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD0iIjtyZXR1cm4gaS5mb3JF
YWNoKGUsZnVuY3Rpb24oZSl7bnVsbCE9ZSYmKCJzdHJpbmciPT10eXBlb2YgZXx8Im51bWJlciI9
PXR5cGVvZiBlP3QrPWU6c3x8KHM9ITApKX0pLHR9dmFyIG89big0KSxpPW4oNzMpLGE9big1KSx1
PW4oNzYpLHM9KG4oMyksITEpLGw9e21vdW50V3JhcHBlcjpmdW5jdGlvbihlLHQsbil7dmFyIG89
bnVsbDtpZihudWxsIT1uKXt2YXIgaT1uOyJvcHRncm91cCI9PT1pLl90YWcmJihpPWkuX2hvc3RQ
YXJlbnQpLG51bGwhPWkmJiJzZWxlY3QiPT09aS5fdGFnJiYobz11LmdldFNlbGVjdFZhbHVlQ29u
dGV4dChpKSl9dmFyIGE9bnVsbDtpZihudWxsIT1vKXt2YXIgcztpZihzPW51bGwhPXQudmFsdWU/
dC52YWx1ZSsiIjpyKHQuY2hpbGRyZW4pLGE9ITEsQXJyYXkuaXNBcnJheShvKSl7Zm9yKHZhciBs
PTA7bDxvLmxlbmd0aDtsKyspaWYoIiIrb1tsXT09PXMpe2E9ITA7YnJlYWt9fWVsc2UgYT0iIitv
PT09c31lLl93cmFwcGVyU3RhdGU9e3NlbGVjdGVkOmF9fSxwb3N0TW91bnRXcmFwcGVyOmZ1bmN0
aW9uKGUpe3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50LnByb3BzO2lmKG51bGwhPXQudmFsdWUpe3Zh
ciBuPWEuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKTtuLnNldEF0dHJpYnV0ZSgidmFsdWUiLHQudmFs
dWUpfX0sZ2V0SG9zdFByb3BzOmZ1bmN0aW9uKGUsdCl7dmFyIG49byh7c2VsZWN0ZWQ6dm9pZCAw
LGNoaWxkcmVuOnZvaWQgMH0sdCk7bnVsbCE9ZS5fd3JhcHBlclN0YXRlLnNlbGVjdGVkJiYobi5z
ZWxlY3RlZD1lLl93cmFwcGVyU3RhdGUuc2VsZWN0ZWQpO3ZhciBpPXIodC5jaGlsZHJlbik7cmV0
dXJuIGkmJihuLmNoaWxkcmVuPWkpLG59fTtlLmV4cG9ydHM9bH0sZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBlPT09biYmdD09PXJ9ZnVuY3Rp
b24gbyhlKXt2YXIgdD1kb2N1bWVudC5zZWxlY3Rpb24sbj10LmNyZWF0ZVJhbmdlKCkscj1uLnRl
eHQubGVuZ3RoLG89bi5kdXBsaWNhdGUoKTtvLm1vdmVUb0VsZW1lbnRUZXh0KGUpLG8uc2V0RW5k
UG9pbnQoIkVuZFRvU3RhcnQiLG4pO3ZhciBpPW8udGV4dC5sZW5ndGgsYT1pK3I7cmV0dXJue3N0
YXJ0OmksZW5kOmF9fWZ1bmN0aW9uIGkoZSl7dmFyIHQ9d2luZG93LmdldFNlbGVjdGlvbiYmd2lu
ZG93LmdldFNlbGVjdGlvbigpO2lmKCF0fHwwPT09dC5yYW5nZUNvdW50KXJldHVybiBudWxsO3Zh
ciBuPXQuYW5jaG9yTm9kZSxvPXQuYW5jaG9yT2Zmc2V0LGk9dC5mb2N1c05vZGUsYT10LmZvY3Vz
T2Zmc2V0LHU9dC5nZXRSYW5nZUF0KDApO3RyeXt1LnN0YXJ0Q29udGFpbmVyLm5vZGVUeXBlLHUu
ZW5kQ29udGFpbmVyLm5vZGVUeXBlfWNhdGNoKHMpe3JldHVybiBudWxsfXZhciBsPXIodC5hbmNo
b3JOb2RlLHQuYW5jaG9yT2Zmc2V0LHQuZm9jdXNOb2RlLHQuZm9jdXNPZmZzZXQpLGM9bD8wOnUu
dG9TdHJpbmcoKS5sZW5ndGgscD11LmNsb25lUmFuZ2UoKTtwLnNlbGVjdE5vZGVDb250ZW50cyhl
KSxwLnNldEVuZCh1LnN0YXJ0Q29udGFpbmVyLHUuc3RhcnRPZmZzZXQpO3ZhciBkPXIocC5zdGFy
dENvbnRhaW5lcixwLnN0YXJ0T2Zmc2V0LHAuZW5kQ29udGFpbmVyLHAuZW5kT2Zmc2V0KSxmPWQ/
MDpwLnRvU3RyaW5nKCkubGVuZ3RoLGg9ZitjLHY9ZG9jdW1lbnQuY3JlYXRlUmFuZ2UoKTt2LnNl
dFN0YXJ0KG4sbyksdi5zZXRFbmQoaSxhKTt2YXIgbT12LmNvbGxhcHNlZDtyZXR1cm57c3RhcnQ6
bT9oOmYsZW5kOm0/ZjpofX1mdW5jdGlvbiBhKGUsdCl7dmFyIG4scixvPWRvY3VtZW50LnNlbGVj
dGlvbi5jcmVhdGVSYW5nZSgpLmR1cGxpY2F0ZSgpO3ZvaWQgMD09PXQuZW5kPyhuPXQuc3RhcnQs
cj1uKTp0LnN0YXJ0PnQuZW5kPyhuPXQuZW5kLHI9dC5zdGFydCk6KG49dC5zdGFydCxyPXQuZW5k
KSxvLm1vdmVUb0VsZW1lbnRUZXh0KGUpLG8ubW92ZVN0YXJ0KCJjaGFyYWN0ZXIiLG4pLG8uc2V0
RW5kUG9pbnQoIkVuZFRvU3RhcnQiLG8pLG8ubW92ZUVuZCgiY2hhcmFjdGVyIixyLW4pLG8uc2Vs
ZWN0KCl9ZnVuY3Rpb24gdShlLHQpe2lmKHdpbmRvdy5nZXRTZWxlY3Rpb24pe3ZhciBuPXdpbmRv
dy5nZXRTZWxlY3Rpb24oKSxyPWVbYygpXS5sZW5ndGgsbz1NYXRoLm1pbih0LnN0YXJ0LHIpLGk9
dm9pZCAwPT09dC5lbmQ/bzpNYXRoLm1pbih0LmVuZCxyKTtpZighbi5leHRlbmQmJm8+aSl7dmFy
IGE9aTtpPW8sbz1hfXZhciB1PWwoZSxvKSxzPWwoZSxpKTtpZih1JiZzKXt2YXIgcD1kb2N1bWVu
dC5jcmVhdGVSYW5nZSgpO3Auc2V0U3RhcnQodS5ub2RlLHUub2Zmc2V0KSxuLnJlbW92ZUFsbFJh
bmdlcygpLG8+aT8obi5hZGRSYW5nZShwKSxuLmV4dGVuZChzLm5vZGUscy5vZmZzZXQpKToocC5z
ZXRFbmQocy5ub2RlLHMub2Zmc2V0KSxuLmFkZFJhbmdlKHApKX19fXZhciBzPW4oNiksbD1uKDE5
NyksYz1uKDkyKSxwPXMuY2FuVXNlRE9NJiYic2VsZWN0aW9uImluIGRvY3VtZW50JiYhKCJnZXRT
ZWxlY3Rpb24iaW4gd2luZG93KSxkPXtnZXRPZmZzZXRzOnA/bzppLHNldE9mZnNldHM6cD9hOnV9
O2UuZXhwb3J0cz1kfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMiksbz1u
KDQpLGk9bigzNyksYT1uKDE3KSx1PW4oNSkscz1uKDMwKSxsPShuKDEpLG4oNTkpLGZ1bmN0aW9u
KGUpe3RoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fc3RyaW5nVGV4dD0iIitlLHRoaXMuX2hv
c3ROb2RlPW51bGwsdGhpcy5faG9zdFBhcmVudD1udWxsLHRoaXMuX2RvbUlEPTAsdGhpcy5fbW91
bnRJbmRleD0wLHRoaXMuX2Nsb3NpbmdDb21tZW50PW51bGwsdGhpcy5fY29tbWVudE5vZGVzPW51
bGx9KTtvKGwucHJvdG90eXBlLHttb3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixyKXt2YXIg
bz1uLl9pZENvdW50ZXIrKyxpPSIgcmVhY3QtdGV4dDogIitvKyIgIixsPSIgL3JlYWN0LXRleHQg
IjtpZih0aGlzLl9kb21JRD1vLHRoaXMuX2hvc3RQYXJlbnQ9dCxlLnVzZUNyZWF0ZUVsZW1lbnQp
e3ZhciBjPW4uX293bmVyRG9jdW1lbnQscD1jLmNyZWF0ZUNvbW1lbnQoaSksZD1jLmNyZWF0ZUNv
bW1lbnQobCksZj1hKGMuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpKTtyZXR1cm4gYS5xdWV1ZUNo
aWxkKGYsYShwKSksdGhpcy5fc3RyaW5nVGV4dCYmYS5xdWV1ZUNoaWxkKGYsYShjLmNyZWF0ZVRl
eHROb2RlKHRoaXMuX3N0cmluZ1RleHQpKSksYS5xdWV1ZUNoaWxkKGYsYShkKSksdS5wcmVjYWNo
ZU5vZGUodGhpcyxwKSx0aGlzLl9jbG9zaW5nQ29tbWVudD1kLGZ9dmFyIGg9cyh0aGlzLl9zdHJp
bmdUZXh0KTtyZXR1cm4gZS5yZW5kZXJUb1N0YXRpY01hcmt1cD9oOiI8IS0tIitpKyItLT4iK2gr
IjwhLS0iK2wrIi0tPiJ9LHJlY2VpdmVDb21wb25lbnQ6ZnVuY3Rpb24oZSx0KXtpZihlIT09dGhp
cy5fY3VycmVudEVsZW1lbnQpe3RoaXMuX2N1cnJlbnRFbGVtZW50PWU7dmFyIG49IiIrZTtpZihu
IT09dGhpcy5fc3RyaW5nVGV4dCl7dGhpcy5fc3RyaW5nVGV4dD1uO3ZhciByPXRoaXMuZ2V0SG9z
dE5vZGUoKTtpLnJlcGxhY2VEZWxpbWl0ZWRUZXh0KHJbMF0sclsxXSxuKX19fSxnZXRIb3N0Tm9k
ZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2NvbW1lbnROb2RlcztpZihlKXJldHVybiBlO2lmKCF0
aGlzLl9jbG9zaW5nQ29tbWVudClmb3IodmFyIHQ9dS5nZXROb2RlRnJvbUluc3RhbmNlKHRoaXMp
LG49dC5uZXh0U2libGluZzs7KXtpZihudWxsPT1uP3IoIjY3Iix0aGlzLl9kb21JRCk6dm9pZCAw
LDg9PT1uLm5vZGVUeXBlJiYiIC9yZWFjdC10ZXh0ICI9PT1uLm5vZGVWYWx1ZSl7dGhpcy5fY2xv
c2luZ0NvbW1lbnQ9bjticmVha31uPW4ubmV4dFNpYmxpbmd9cmV0dXJuIGU9W3RoaXMuX2hvc3RO
b2RlLHRoaXMuX2Nsb3NpbmdDb21tZW50XSx0aGlzLl9jb21tZW50Tm9kZXM9ZSxlfSx1bm1vdW50
Q29tcG9uZW50OmZ1bmN0aW9uKCl7dGhpcy5fY2xvc2luZ0NvbW1lbnQ9bnVsbCx0aGlzLl9jb21t
ZW50Tm9kZXM9bnVsbCx1LnVuY2FjaGVOb2RlKHRoaXMpfX0pLGUuZXhwb3J0cz1sfSxmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXt0aGlzLl9yb290Tm9kZUlEJiZwLnVw
ZGF0ZVdyYXBwZXIodGhpcyl9ZnVuY3Rpb24gbyhlKXt2YXIgdD10aGlzLl9jdXJyZW50RWxlbWVu
dC5wcm9wcyxuPXMuZXhlY3V0ZU9uQ2hhbmdlKHQsZSk7cmV0dXJuIGMuYXNhcChyLHRoaXMpLG59
dmFyIGk9bigyKSxhPW4oNCksdT1uKDI3KSxzPW4oNDIpLGw9big1KSxjPW4oMTApLHA9KG4oMSks
bigzKSx7Z2V0SG9zdFByb3BzOmZ1bmN0aW9uKGUsdCl7bnVsbCE9dC5kYW5nZXJvdXNseVNldElu
bmVySFRNTD9pKCI5MSIpOnZvaWQgMDt2YXIgbj1hKHt9LHUuZ2V0SG9zdFByb3BzKGUsdCkse3Zh
bHVlOnZvaWQgMCxkZWZhdWx0VmFsdWU6dm9pZCAwLGNoaWxkcmVuOiIiK2UuX3dyYXBwZXJTdGF0
ZS5pbml0aWFsVmFsdWUsb25DaGFuZ2U6ZS5fd3JhcHBlclN0YXRlLm9uQ2hhbmdlfSk7cmV0dXJu
IG59LG1vdW50V3JhcHBlcjpmdW5jdGlvbihlLHQpe3ZhciBuPXMuZ2V0VmFsdWUodCkscj1uO2lm
KG51bGw9PW4pe3ZhciBhPXQuZGVmYXVsdFZhbHVlLHU9dC5jaGlsZHJlbjtudWxsIT11JiYobnVs
bCE9YT9pKCI5MiIpOnZvaWQgMCxBcnJheS5pc0FycmF5KHUpJiYodS5sZW5ndGg8PTE/dm9pZCAw
OmkoIjkzIiksdT11WzBdKSxhPSIiK3UpLG51bGw9PWEmJihhPSIiKSxyPWF9ZS5fd3JhcHBlclN0
YXRlPXtpbml0aWFsVmFsdWU6IiIrcixsaXN0ZW5lcnM6bnVsbCxvbkNoYW5nZTpvLmJpbmQoZSl9
fSx1cGRhdGVXcmFwcGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50LnByb3Bz
LG49bC5nZXROb2RlRnJvbUluc3RhbmNlKGUpLHI9cy5nZXRWYWx1ZSh0KTtpZihudWxsIT1yKXt2
YXIgbz0iIityO28hPT1uLnZhbHVlJiYobi52YWx1ZT1vKSxudWxsPT10LmRlZmF1bHRWYWx1ZSYm
KG4uZGVmYXVsdFZhbHVlPW8pfW51bGwhPXQuZGVmYXVsdFZhbHVlJiYobi5kZWZhdWx0VmFsdWU9
dC5kZWZhdWx0VmFsdWUpfSxwb3N0TW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWwuZ2V0
Tm9kZUZyb21JbnN0YW5jZShlKTt0LnZhbHVlPXQudGV4dENvbnRlbnR9fSk7ZS5leHBvcnRzPXB9
LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpeyJfaG9zdE5vZGUi
aW4gZT92b2lkIDA6cygiMzMiKSwiX2hvc3ROb2RlImluIHQ/dm9pZCAwOnMoIjMzIik7Zm9yKHZh
ciBuPTAscj1lO3I7cj1yLl9ob3N0UGFyZW50KW4rKztmb3IodmFyIG89MCxpPXQ7aTtpPWkuX2hv
c3RQYXJlbnQpbysrO2Zvcig7bi1vPjA7KWU9ZS5faG9zdFBhcmVudCxuLS07Zm9yKDtvLW4+MDsp
dD10Ll9ob3N0UGFyZW50LG8tLTtmb3IodmFyIGE9bjthLS07KXtpZihlPT09dClyZXR1cm4gZTtl
PWUuX2hvc3RQYXJlbnQsdD10Ll9ob3N0UGFyZW50fXJldHVybiBudWxsfWZ1bmN0aW9uIG8oZSx0
KXsiX2hvc3ROb2RlImluIGU/dm9pZCAwOnMoIjM1IiksIl9ob3N0Tm9kZSJpbiB0P3ZvaWQgMDpz
KCIzNSIpO2Zvcig7dDspe2lmKHQ9PT1lKXJldHVybiEwO3Q9dC5faG9zdFBhcmVudH1yZXR1cm4h
MX1mdW5jdGlvbiBpKGUpe3JldHVybiJfaG9zdE5vZGUiaW4gZT92b2lkIDA6cygiMzYiKSxlLl9o
b3N0UGFyZW50fWZ1bmN0aW9uIGEoZSx0LG4pe2Zvcih2YXIgcj1bXTtlOylyLnB1c2goZSksZT1l
Ll9ob3N0UGFyZW50O3ZhciBvO2ZvcihvPXIubGVuZ3RoO28tLSA+MDspdChyW29dLCExLG4pO2Zv
cihvPTA7bzxyLmxlbmd0aDtvKyspdChyW29dLCEwLG4pfWZ1bmN0aW9uIHUoZSx0LG4sbyxpKXtm
b3IodmFyIGE9ZSYmdD9yKGUsdCk6bnVsbCx1PVtdO2UmJmUhPT1hOyl1LnB1c2goZSksZT1lLl9o
b3N0UGFyZW50O2Zvcih2YXIgcz1bXTt0JiZ0IT09YTspcy5wdXNoKHQpLHQ9dC5faG9zdFBhcmVu
dDt2YXIgbDtmb3IobD0wO2w8dS5sZW5ndGg7bCsrKW4odVtsXSwhMCxvKTtmb3IobD1zLmxlbmd0
aDtsLS0gPjA7KW4oc1tsXSwhMSxpKX12YXIgcz1uKDIpO24oMSk7ZS5leHBvcnRzPXtpc0FuY2Vz
dG9yOm8sZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3I6cixnZXRQYXJlbnRJbnN0YW5jZTppLHRyYXZl
cnNlVHdvUGhhc2U6YSx0cmF2ZXJzZUVudGVyTGVhdmU6dX19LGZ1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcigpe3RoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKX12YXIg
bz1uKDQpLGk9bigxMCksYT1uKDI1KSx1PW4oNykscz17aW5pdGlhbGl6ZTp1LGNsb3NlOmZ1bmN0
aW9uKCl7ZC5pc0JhdGNoaW5nVXBkYXRlcz0hMX19LGw9e2luaXRpYWxpemU6dSxjbG9zZTppLmZs
dXNoQmF0Y2hlZFVwZGF0ZXMuYmluZChpKX0sYz1bbCxzXTtvKHIucHJvdG90eXBlLGEuTWl4aW4s
e2dldFRyYW5zYWN0aW9uV3JhcHBlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gY319KTt2YXIgcD1uZXcg
cixkPXtpc0JhdGNoaW5nVXBkYXRlczohMSxiYXRjaGVkVXBkYXRlczpmdW5jdGlvbihlLHQsbixy
LG8saSl7dmFyIGE9ZC5pc0JhdGNoaW5nVXBkYXRlcztkLmlzQmF0Y2hpbmdVcGRhdGVzPSEwLGE/
ZSh0LG4scixvLGkpOnAucGVyZm9ybShlLG51bGwsdCxuLHIsbyxpKX19O2UuZXhwb3J0cz1kfSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoKXtFfHwoRT0hMCx5LkV2ZW50
RW1pdHRlci5pbmplY3RSZWFjdEV2ZW50TGlzdGVuZXIobSkseS5FdmVudFBsdWdpbkh1Yi5pbmpl
Y3RFdmVudFBsdWdpbk9yZGVyKGEpLHkuRXZlbnRQbHVnaW5VdGlscy5pbmplY3RDb21wb25lbnRU
cmVlKHApLHkuRXZlbnRQbHVnaW5VdGlscy5pbmplY3RUcmVlVHJhdmVyc2FsKGYpLHkuRXZlbnRQ
bHVnaW5IdWIuaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lKHtTaW1wbGVFdmVudFBsdWdpbjpDLEVu
dGVyTGVhdmVFdmVudFBsdWdpbjp1LENoYW5nZUV2ZW50UGx1Z2luOmksU2VsZWN0RXZlbnRQbHVn
aW46XyxCZWZvcmVJbnB1dEV2ZW50UGx1Z2luOm99KSx5Lkhvc3RDb21wb25lbnQuaW5qZWN0R2Vu
ZXJpY0NvbXBvbmVudENsYXNzKGMpLHkuSG9zdENvbXBvbmVudC5pbmplY3RUZXh0Q29tcG9uZW50
Q2xhc3MoaCkseS5ET01Qcm9wZXJ0eS5pbmplY3RET01Qcm9wZXJ0eUNvbmZpZyhzKSx5LkRPTVBy
b3BlcnR5LmluamVjdERPTVByb3BlcnR5Q29uZmlnKGIpLHkuRW1wdHlDb21wb25lbnQuaW5qZWN0
RW1wdHlDb21wb25lbnRGYWN0b3J5KGZ1bmN0aW9uKGUpe3JldHVybiBuZXcgZChlKX0pLHkuVXBk
YXRlcy5pbmplY3RSZWNvbmNpbGVUcmFuc2FjdGlvbihnKSx5LlVwZGF0ZXMuaW5qZWN0QmF0Y2hp
bmdTdHJhdGVneSh2KSx5LkNvbXBvbmVudC5pbmplY3RFbnZpcm9ubWVudChsKSl9dmFyIG89bigx
MzkpLGk9bigxNDEpLGE9bigxNDMpLHU9bigxNDQpLHM9bigxNDYpLGw9bigxNDkpLGM9bigxNTMp
LHA9big1KSxkPW4oMTU1KSxmPW4oMTY0KSxoPW4oMTYyKSx2PW4oMTY1KSxtPW4oMTY4KSx5PW4o
MTY5KSxnPW4oMTc0KSxiPW4oMTc4KSxfPW4oMTc5KSxDPW4oMTgwKSxFPSExO2UuZXhwb3J0cz17
aW5qZWN0OnJ9fSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7by5l
bnF1ZXVlRXZlbnRzKGUpLG8ucHJvY2Vzc0V2ZW50UXVldWUoITEpfXZhciBvPW4oMjEpLGk9e2hh
bmRsZVRvcExldmVsOmZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBhPW8uZXh0cmFjdEV2ZW50cyhlLHQs
bixpKTtyKGEpfX07ZS5leHBvcnRzPWl9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlKXtmb3IoO2UuX2hvc3RQYXJlbnQ7KWU9ZS5faG9zdFBhcmVudDt2YXIgdD1wLmdl
dE5vZGVGcm9tSW5zdGFuY2UoZSksbj10LnBhcmVudE5vZGU7cmV0dXJuIHAuZ2V0Q2xvc2VzdElu
c3RhbmNlRnJvbU5vZGUobil9ZnVuY3Rpb24gbyhlLHQpe3RoaXMudG9wTGV2ZWxUeXBlPWUsdGhp
cy5uYXRpdmVFdmVudD10LHRoaXMuYW5jZXN0b3JzPVtdfWZ1bmN0aW9uIGkoZSl7dmFyIHQ9Zihl
Lm5hdGl2ZUV2ZW50KSxuPXAuZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUodCksbz1uO2RvIGUu
YW5jZXN0b3JzLnB1c2gobyksbz1vJiZyKG8pO3doaWxlKG8pO2Zvcih2YXIgaT0wO2k8ZS5hbmNl
c3RvcnMubGVuZ3RoO2krKyluPWUuYW5jZXN0b3JzW2ldLHYuX2hhbmRsZVRvcExldmVsKGUudG9w
TGV2ZWxUeXBlLG4sZS5uYXRpdmVFdmVudCxmKGUubmF0aXZlRXZlbnQpKX1mdW5jdGlvbiBhKGUp
e3ZhciB0PWgod2luZG93KTtlKHQpfXZhciB1PW4oNCkscz1uKDYwKSxsPW4oNiksYz1uKDE1KSxw
PW4oNSksZD1uKDEwKSxmPW4oNTUpLGg9bigxMDUpO3Uoby5wcm90b3R5cGUse2Rlc3RydWN0b3I6
ZnVuY3Rpb24oKXt0aGlzLnRvcExldmVsVHlwZT1udWxsLHRoaXMubmF0aXZlRXZlbnQ9bnVsbCx0
aGlzLmFuY2VzdG9ycy5sZW5ndGg9MH19KSxjLmFkZFBvb2xpbmdUbyhvLGMudHdvQXJndW1lbnRQ
b29sZXIpO3ZhciB2PXtfZW5hYmxlZDohMCxfaGFuZGxlVG9wTGV2ZWw6bnVsbCxXSU5ET1dfSEFO
RExFOmwuY2FuVXNlRE9NP3dpbmRvdzpudWxsLHNldEhhbmRsZVRvcExldmVsOmZ1bmN0aW9uKGUp
e3YuX2hhbmRsZVRvcExldmVsPWV9LHNldEVuYWJsZWQ6ZnVuY3Rpb24oZSl7di5fZW5hYmxlZD0h
IWV9LGlzRW5hYmxlZDpmdW5jdGlvbigpe3JldHVybiB2Ll9lbmFibGVkfSx0cmFwQnViYmxlZEV2
ZW50OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1uO3JldHVybiByP3MubGlzdGVuKHIsdCx2LmRpc3Bh
dGNoRXZlbnQuYmluZChudWxsLGUpKTpudWxsfSx0cmFwQ2FwdHVyZWRFdmVudDpmdW5jdGlvbihl
LHQsbil7dmFyIHI9bjtyZXR1cm4gcj9zLmNhcHR1cmUocix0LHYuZGlzcGF0Y2hFdmVudC5iaW5k
KG51bGwsZSkpOm51bGx9LG1vbml0b3JTY3JvbGxWYWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1hLmJp
bmQobnVsbCxlKTtzLmxpc3Rlbih3aW5kb3csInNjcm9sbCIsdCl9LGRpc3BhdGNoRXZlbnQ6ZnVu
Y3Rpb24oZSx0KXtpZih2Ll9lbmFibGVkKXt2YXIgbj1vLmdldFBvb2xlZChlLHQpO3RyeXtkLmJh
dGNoZWRVcGRhdGVzKGksbil9ZmluYWxseXtvLnJlbGVhc2Uobil9fX19O2UuZXhwb3J0cz12fSxm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMTgpLG89bigyMSksaT1uKDQwKSxh
PW4oNDQpLHU9big3NCkscz1uKDc3KSxsPW4oMjgpLGM9big3OSkscD1uKDEwKSxkPXtDb21wb25l
bnQ6YS5pbmplY3Rpb24sQ2xhc3M6dS5pbmplY3Rpb24sRE9NUHJvcGVydHk6ci5pbmplY3Rpb24s
RW1wdHlDb21wb25lbnQ6cy5pbmplY3Rpb24sRXZlbnRQbHVnaW5IdWI6by5pbmplY3Rpb24sRXZl
bnRQbHVnaW5VdGlsczppLmluamVjdGlvbixFdmVudEVtaXR0ZXI6bC5pbmplY3Rpb24sSG9zdENv
bXBvbmVudDpjLmluamVjdGlvbixVcGRhdGVzOnAuaW5qZWN0aW9ufTtlLmV4cG9ydHM9ZH0sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDE5MSksbz0vXC8/Pi8saT0vXjxcIVwt
XC0vLGE9e0NIRUNLU1VNX0FUVFJfTkFNRToiZGF0YS1yZWFjdC1jaGVja3N1bSIsYWRkQ2hlY2tz
dW1Ub01hcmt1cDpmdW5jdGlvbihlKXt2YXIgdD1yKGUpO3JldHVybiBpLnRlc3QoZSk/ZTplLnJl
cGxhY2UobywiICIrYS5DSEVDS1NVTV9BVFRSX05BTUUrJz0iJyt0KyciJCYnKX0sY2FuUmV1c2VN
YXJrdXA6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmdldEF0dHJpYnV0ZShhLkNIRUNLU1VNX0FUVFJf
TkFNRSk7bj1uJiZwYXJzZUludChuLDEwKTt2YXIgbz1yKGUpO3JldHVybiBvPT09bn19O2UuZXhw
b3J0cz1hfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4pe3Jl
dHVybnt0eXBlOmQuSU5TRVJUX01BUktVUCxjb250ZW50OmUsZnJvbUluZGV4Om51bGwsZnJvbU5v
ZGU6bnVsbCx0b0luZGV4Om4sYWZ0ZXJOb2RlOnR9fWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybnt0
eXBlOmQuTU9WRV9FWElTVElORyxjb250ZW50Om51bGwsZnJvbUluZGV4OmUuX21vdW50SW5kZXgs
ZnJvbU5vZGU6Zi5nZXRIb3N0Tm9kZShlKSx0b0luZGV4Om4sYWZ0ZXJOb2RlOnR9fWZ1bmN0aW9u
IGkoZSx0KXtyZXR1cm57dHlwZTpkLlJFTU9WRV9OT0RFLGNvbnRlbnQ6bnVsbCxmcm9tSW5kZXg6
ZS5fbW91bnRJbmRleCxmcm9tTm9kZTp0LHRvSW5kZXg6bnVsbCxhZnRlck5vZGU6bnVsbH19ZnVu
Y3Rpb24gYShlKXtyZXR1cm57dHlwZTpkLlNFVF9NQVJLVVAsY29udGVudDplLGZyb21JbmRleDpu
dWxsLGZyb21Ob2RlOm51bGwsdG9JbmRleDpudWxsLGFmdGVyTm9kZTpudWxsfX1mdW5jdGlvbiB1
KGUpe3JldHVybnt0eXBlOmQuVEVYVF9DT05URU5ULGNvbnRlbnQ6ZSxmcm9tSW5kZXg6bnVsbCxm
cm9tTm9kZTpudWxsLHRvSW5kZXg6bnVsbCxhZnRlck5vZGU6bnVsbH19ZnVuY3Rpb24gcyhlLHQp
e3JldHVybiB0JiYoZT1lfHxbXSxlLnB1c2godCkpLGV9ZnVuY3Rpb24gbChlLHQpe3AucHJvY2Vz
c0NoaWxkcmVuVXBkYXRlcyhlLHQpfXZhciBjPW4oMikscD1uKDQ0KSxkPShuKDIzKSxuKDgpLG4o
ODIpKSxmPShuKDE2KSxuKDE5KSksaD1uKDE0OCksdj0obig3KSxuKDE5NSkpLG09KG4oMSkse01p
eGluOntfcmVjb25jaWxlckluc3RhbnRpYXRlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4pe3JldHVy
biBoLmluc3RhbnRpYXRlQ2hpbGRyZW4oZSx0LG4pfSxfcmVjb25jaWxlclVwZGF0ZUNoaWxkcmVu
OmZ1bmN0aW9uKGUsdCxuLHIsbyxpKXt2YXIgYSx1PTA7cmV0dXJuIGE9dih0LHUpLGgudXBkYXRl
Q2hpbGRyZW4oZSxhLG4scixvLHRoaXMsdGhpcy5faG9zdENvbnRhaW5lckluZm8saSx1KSxhfSxt
b3VudENoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9yZWNvbmNpbGVySW5zdGFu
dGlhdGVDaGlsZHJlbihlLHQsbik7dGhpcy5fcmVuZGVyZWRDaGlsZHJlbj1yO3ZhciBvPVtdLGk9
MDtmb3IodmFyIGEgaW4gcilpZihyLmhhc093blByb3BlcnR5KGEpKXt2YXIgdT1yW2FdLHM9MCxs
PWYubW91bnRDb21wb25lbnQodSx0LHRoaXMsdGhpcy5faG9zdENvbnRhaW5lckluZm8sbixzKTt1
Ll9tb3VudEluZGV4PWkrKyxvLnB1c2gobCl9cmV0dXJuIG99LHVwZGF0ZVRleHRDb250ZW50OmZ1
bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47aC51bm1vdW50Q2hpbGRyZW4o
dCwhMSk7Zm9yKHZhciBuIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShuKSYmYygiMTE4Iik7dmFyIHI9
W3UoZSldO2wodGhpcyxyKX0sdXBkYXRlTWFya3VwOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3Jl
bmRlcmVkQ2hpbGRyZW47aC51bm1vdW50Q2hpbGRyZW4odCwhMSk7Zm9yKHZhciBuIGluIHQpdC5o
YXNPd25Qcm9wZXJ0eShuKSYmYygiMTE4Iik7dmFyIHI9W2EoZSldO2wodGhpcyxyKX0sdXBkYXRl
Q2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4pe3RoaXMuX3VwZGF0ZUNoaWxkcmVuKGUsdCxuKX0sX3Vw
ZGF0ZUNoaWxkcmVuOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9yZW5kZXJlZENoaWxkcmVu
LG89e30saT1bXSxhPXRoaXMuX3JlY29uY2lsZXJVcGRhdGVDaGlsZHJlbihyLGUsaSxvLHQsbik7
aWYoYXx8cil7dmFyIHUsYz1udWxsLHA9MCxkPTAsaD0wLHY9bnVsbDtmb3IodSBpbiBhKWlmKGEu
aGFzT3duUHJvcGVydHkodSkpe3ZhciBtPXImJnJbdV0seT1hW3VdO209PT15PyhjPXMoYyx0aGlz
Lm1vdmVDaGlsZChtLHYscCxkKSksZD1NYXRoLm1heChtLl9tb3VudEluZGV4LGQpLG0uX21vdW50
SW5kZXg9cCk6KG0mJihkPU1hdGgubWF4KG0uX21vdW50SW5kZXgsZCkpLGM9cyhjLHRoaXMuX21v
dW50Q2hpbGRBdEluZGV4KHksaVtoXSx2LHAsdCxuKSksaCsrKSxwKyssdj1mLmdldEhvc3ROb2Rl
KHkpfWZvcih1IGluIG8pby5oYXNPd25Qcm9wZXJ0eSh1KSYmKGM9cyhjLHRoaXMuX3VubW91bnRD
aGlsZChyW3VdLG9bdV0pKSk7YyYmbCh0aGlzLGMpLHRoaXMuX3JlbmRlcmVkQ2hpbGRyZW49YX19
LHVubW91bnRDaGlsZHJlbjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9yZW5kZXJlZENoaWxkcmVu
O2gudW5tb3VudENoaWxkcmVuKHQsZSksdGhpcy5fcmVuZGVyZWRDaGlsZHJlbj1udWxsfSxtb3Zl
Q2hpbGQ6ZnVuY3Rpb24oZSx0LG4scil7aWYoZS5fbW91bnRJbmRleDxyKXJldHVybiBvKGUsdCxu
KX0sY3JlYXRlQ2hpbGQ6ZnVuY3Rpb24oZSx0LG4pewotcmV0dXJuIHIobix0LGUuX21vdW50SW5k
ZXgpfSxyZW1vdmVDaGlsZDpmdW5jdGlvbihlLHQpe3JldHVybiBpKGUsdCl9LF9tb3VudENoaWxk
QXRJbmRleDpmdW5jdGlvbihlLHQsbixyLG8saSl7cmV0dXJuIGUuX21vdW50SW5kZXg9cix0aGlz
LmNyZWF0ZUNoaWxkKGUsbix0KX0sX3VubW91bnRDaGlsZDpmdW5jdGlvbihlLHQpe3ZhciBuPXRo
aXMucmVtb3ZlQ2hpbGQoZSx0KTtyZXR1cm4gZS5fbW91bnRJbmRleD1udWxsLG59fX0pO2UuZXhw
b3J0cz1tfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPW4oMiksbz0obigxKSx7
aXNWYWxpZE93bmVyOmZ1bmN0aW9uKGUpe3JldHVybiEoIWV8fCJmdW5jdGlvbiIhPXR5cGVvZiBl
LmF0dGFjaFJlZnx8ImZ1bmN0aW9uIiE9dHlwZW9mIGUuZGV0YWNoUmVmKX0sYWRkQ29tcG9uZW50
QXNSZWZUbzpmdW5jdGlvbihlLHQsbil7by5pc1ZhbGlkT3duZXIobik/dm9pZCAwOnIoIjExOSIp
LG4uYXR0YWNoUmVmKHQsZSl9LHJlbW92ZUNvbXBvbmVudEFzUmVmRnJvbTpmdW5jdGlvbihlLHQs
bil7by5pc1ZhbGlkT3duZXIobik/dm9pZCAwOnIoIjEyMCIpO3ZhciBpPW4uZ2V0UHVibGljSW5z
dGFuY2UoKTtpJiZpLnJlZnNbdF09PT1lLmdldFB1YmxpY0luc3RhbmNlKCkmJm4uZGV0YWNoUmVm
KHQpfX0pO2UuZXhwb3J0cz1vfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSx0LG4pe3RoaXMucHJvcHM9ZSx0aGlzLmNvbnRleHQ9dCx0aGlzLnJlZnM9cyx0aGlzLnVw
ZGF0ZXI9bnx8dX1mdW5jdGlvbiBvKCl7fXZhciBpPW4oNCksYT1uKDQzKSx1PW4oNDcpLHM9bigy
MCk7by5wcm90b3R5cGU9YS5wcm90b3R5cGUsci5wcm90b3R5cGU9bmV3IG8sci5wcm90b3R5cGUu
Y29uc3RydWN0b3I9cixpKHIucHJvdG90eXBlLGEucHJvdG90eXBlKSxyLnByb3RvdHlwZS5pc1B1
cmVSZWFjdENvbXBvbmVudD0hMCxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUpe3RoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKSx0aGlzLnJl
bmRlclRvU3RhdGljTWFya3VwPSExLHRoaXMucmVhY3RNb3VudFJlYWR5PWkuZ2V0UG9vbGVkKG51
bGwpLHRoaXMudXNlQ3JlYXRlRWxlbWVudD1lfXZhciBvPW4oNCksaT1uKDcxKSxhPW4oMTUpLHU9
bigyOCkscz1uKDgwKSxsPShuKDgpLG4oMjUpKSxjPW4oNTEpLHA9e2luaXRpYWxpemU6cy5nZXRT
ZWxlY3Rpb25JbmZvcm1hdGlvbixjbG9zZTpzLnJlc3RvcmVTZWxlY3Rpb259LGQ9e2luaXRpYWxp
emU6ZnVuY3Rpb24oKXt2YXIgZT11LmlzRW5hYmxlZCgpO3JldHVybiB1LnNldEVuYWJsZWQoITEp
LGV9LGNsb3NlOmZ1bmN0aW9uKGUpe3Uuc2V0RW5hYmxlZChlKX19LGY9e2luaXRpYWxpemU6ZnVu
Y3Rpb24oKXt0aGlzLnJlYWN0TW91bnRSZWFkeS5yZXNldCgpfSxjbG9zZTpmdW5jdGlvbigpe3Ro
aXMucmVhY3RNb3VudFJlYWR5Lm5vdGlmeUFsbCgpfX0saD1bcCxkLGZdLHY9e2dldFRyYW5zYWN0
aW9uV3JhcHBlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gaH0sZ2V0UmVhY3RNb3VudFJlYWR5OmZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXMucmVhY3RNb3VudFJlYWR5fSxnZXRVcGRhdGVRdWV1ZTpmdW5jdGlv
bigpe3JldHVybiBjfSxjaGVja3BvaW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVhY3RNb3Vu
dFJlYWR5LmNoZWNrcG9pbnQoKX0scm9sbGJhY2s6ZnVuY3Rpb24oZSl7dGhpcy5yZWFjdE1vdW50
UmVhZHkucm9sbGJhY2soZSl9LGRlc3RydWN0b3I6ZnVuY3Rpb24oKXtpLnJlbGVhc2UodGhpcy5y
ZWFjdE1vdW50UmVhZHkpLHRoaXMucmVhY3RNb3VudFJlYWR5PW51bGx9fTtvKHIucHJvdG90eXBl
LGwuTWl4aW4sdiksYS5hZGRQb29saW5nVG8ociksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZSh0
LmdldFB1YmxpY0luc3RhbmNlKCkpOmkuYWRkQ29tcG9uZW50QXNSZWZUbyh0LGUsbil9ZnVuY3Rp
b24gbyhlLHQsbil7ImZ1bmN0aW9uIj09dHlwZW9mIGU/ZShudWxsKTppLnJlbW92ZUNvbXBvbmVu
dEFzUmVmRnJvbSh0LGUsbil9dmFyIGk9bigxNzIpLGE9e307YS5hdHRhY2hSZWZzPWZ1bmN0aW9u
KGUsdCl7aWYobnVsbCE9PXQmJnQhPT0hMSl7dmFyIG49dC5yZWY7bnVsbCE9biYmcihuLGUsdC5f
b3duZXIpfX0sYS5zaG91bGRVcGRhdGVSZWZzPWZ1bmN0aW9uKGUsdCl7dmFyIG49bnVsbD09PWV8
fGU9PT0hMSxyPW51bGw9PT10fHx0PT09ITE7cmV0dXJuIG58fHJ8fHQucmVmIT09ZS5yZWZ8fCJz
dHJpbmciPT10eXBlb2YgdC5yZWYmJnQuX293bmVyIT09ZS5fb3duZXJ9LGEuZGV0YWNoUmVmcz1m
dW5jdGlvbihlLHQpe2lmKG51bGwhPT10JiZ0IT09ITEpe3ZhciBuPXQucmVmO251bGwhPW4mJm8o
bixlLHQuX293bmVyKX19LGUuZXhwb3J0cz1hfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSl7dGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpLHRoaXMucmVuZGVy
VG9TdGF0aWNNYXJrdXA9ZSx0aGlzLnVzZUNyZWF0ZUVsZW1lbnQ9ITEsdGhpcy51cGRhdGVRdWV1
ZT1uZXcgdSh0aGlzKX12YXIgbz1uKDQpLGk9bigxNSksYT1uKDI1KSx1PShuKDgpLG4oMTc3KSks
cz1bXSxsPXtlbnF1ZXVlOmZ1bmN0aW9uKCl7fX0sYz17Z2V0VHJhbnNhY3Rpb25XcmFwcGVyczpm
dW5jdGlvbigpe3JldHVybiBzfSxnZXRSZWFjdE1vdW50UmVhZHk6ZnVuY3Rpb24oKXtyZXR1cm4g
bH0sZ2V0VXBkYXRlUXVldWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy51cGRhdGVRdWV1ZX0sZGVz
dHJ1Y3RvcjpmdW5jdGlvbigpe30sY2hlY2twb2ludDpmdW5jdGlvbigpe30scm9sbGJhY2s6ZnVu
Y3Rpb24oKXt9fTtvKHIucHJvdG90eXBlLGEuTWl4aW4sYyksaS5hZGRQb29saW5nVG8ociksZS5l
eHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe2lm
KCEoZSBpbnN0YW5jZW9mIHQpKXRocm93IG5ldyBUeXBlRXJyb3IoIkNhbm5vdCBjYWxsIGEgY2xh
c3MgYXMgYSBmdW5jdGlvbiIpfWZ1bmN0aW9uIG8oZSx0KXt9dmFyIGk9big1MSksYT0obigyNSks
bigzKSxmdW5jdGlvbigpe2Z1bmN0aW9uIGUodCl7cih0aGlzLGUpLHRoaXMudHJhbnNhY3Rpb249
dH1yZXR1cm4gZS5wcm90b3R5cGUuaXNNb3VudGVkPWZ1bmN0aW9uKGUpe3JldHVybiExfSxlLnBy
b3RvdHlwZS5lbnF1ZXVlQ2FsbGJhY2s9ZnVuY3Rpb24oZSx0LG4pe3RoaXMudHJhbnNhY3Rpb24u
aXNJblRyYW5zYWN0aW9uKCkmJmkuZW5xdWV1ZUNhbGxiYWNrKGUsdCxuKX0sZS5wcm90b3R5cGUu
ZW5xdWV1ZUZvcmNlVXBkYXRlPWZ1bmN0aW9uKGUpe3RoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5z
YWN0aW9uKCk/aS5lbnF1ZXVlRm9yY2VVcGRhdGUoZSk6byhlLCJmb3JjZVVwZGF0ZSIpfSxlLnBy
b3RvdHlwZS5lbnF1ZXVlUmVwbGFjZVN0YXRlPWZ1bmN0aW9uKGUsdCl7dGhpcy50cmFuc2FjdGlv
bi5pc0luVHJhbnNhY3Rpb24oKT9pLmVucXVldWVSZXBsYWNlU3RhdGUoZSx0KTpvKGUsInJlcGxh
Y2VTdGF0ZSIpfSxlLnByb3RvdHlwZS5lbnF1ZXVlU2V0U3RhdGU9ZnVuY3Rpb24oZSx0KXt0aGlz
LnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpP2kuZW5xdWV1ZVNldFN0YXRlKGUsdCk6byhl
LCJzZXRTdGF0ZSIpfSxlfSgpKTtlLmV4cG9ydHM9YX0sZnVuY3Rpb24oZSx0KXsidXNlIHN0cmlj
dCI7dmFyIG49e3hsaW5rOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIix4bWw6Imh0dHA6
Ly93d3cudzMub3JnL1hNTC8xOTk4L25hbWVzcGFjZSJ9LHI9e2FjY2VudEhlaWdodDoiYWNjZW50
LWhlaWdodCIsYWNjdW11bGF0ZTowLGFkZGl0aXZlOjAsYWxpZ25tZW50QmFzZWxpbmU6ImFsaWdu
bWVudC1iYXNlbGluZSIsYWxsb3dSZW9yZGVyOiJhbGxvd1Jlb3JkZXIiLGFscGhhYmV0aWM6MCxh
bXBsaXR1ZGU6MCxhcmFiaWNGb3JtOiJhcmFiaWMtZm9ybSIsYXNjZW50OjAsYXR0cmlidXRlTmFt
ZToiYXR0cmlidXRlTmFtZSIsYXR0cmlidXRlVHlwZToiYXR0cmlidXRlVHlwZSIsYXV0b1JldmVy
c2U6ImF1dG9SZXZlcnNlIixhemltdXRoOjAsYmFzZUZyZXF1ZW5jeToiYmFzZUZyZXF1ZW5jeSIs
YmFzZVByb2ZpbGU6ImJhc2VQcm9maWxlIixiYXNlbGluZVNoaWZ0OiJiYXNlbGluZS1zaGlmdCIs
YmJveDowLGJlZ2luOjAsYmlhczowLGJ5OjAsY2FsY01vZGU6ImNhbGNNb2RlIixjYXBIZWlnaHQ6
ImNhcC1oZWlnaHQiLGNsaXA6MCxjbGlwUGF0aDoiY2xpcC1wYXRoIixjbGlwUnVsZToiY2xpcC1y
dWxlIixjbGlwUGF0aFVuaXRzOiJjbGlwUGF0aFVuaXRzIixjb2xvckludGVycG9sYXRpb246ImNv
bG9yLWludGVycG9sYXRpb24iLGNvbG9ySW50ZXJwb2xhdGlvbkZpbHRlcnM6ImNvbG9yLWludGVy
cG9sYXRpb24tZmlsdGVycyIsY29sb3JQcm9maWxlOiJjb2xvci1wcm9maWxlIixjb2xvclJlbmRl
cmluZzoiY29sb3ItcmVuZGVyaW5nIixjb250ZW50U2NyaXB0VHlwZToiY29udGVudFNjcmlwdFR5
cGUiLGNvbnRlbnRTdHlsZVR5cGU6ImNvbnRlbnRTdHlsZVR5cGUiLGN1cnNvcjowLGN4OjAsY3k6
MCxkOjAsZGVjZWxlcmF0ZTowLGRlc2NlbnQ6MCxkaWZmdXNlQ29uc3RhbnQ6ImRpZmZ1c2VDb25z
dGFudCIsZGlyZWN0aW9uOjAsZGlzcGxheTowLGRpdmlzb3I6MCxkb21pbmFudEJhc2VsaW5lOiJk
b21pbmFudC1iYXNlbGluZSIsZHVyOjAsZHg6MCxkeTowLGVkZ2VNb2RlOiJlZGdlTW9kZSIsZWxl
dmF0aW9uOjAsZW5hYmxlQmFja2dyb3VuZDoiZW5hYmxlLWJhY2tncm91bmQiLGVuZDowLGV4cG9u
ZW50OjAsZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZDoiZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZCIsZmlsbDowLGZpbGxPcGFjaXR5OiJmaWxsLW9wYWNpdHkiLGZpbGxSdWxlOiJmaWxsLXJ1bGUi
LGZpbHRlcjowLGZpbHRlclJlczoiZmlsdGVyUmVzIixmaWx0ZXJVbml0czoiZmlsdGVyVW5pdHMi
LGZsb29kQ29sb3I6ImZsb29kLWNvbG9yIixmbG9vZE9wYWNpdHk6ImZsb29kLW9wYWNpdHkiLGZv
Y3VzYWJsZTowLGZvbnRGYW1pbHk6ImZvbnQtZmFtaWx5Iixmb250U2l6ZToiZm9udC1zaXplIixm
b250U2l6ZUFkanVzdDoiZm9udC1zaXplLWFkanVzdCIsZm9udFN0cmV0Y2g6ImZvbnQtc3RyZXRj
aCIsZm9udFN0eWxlOiJmb250LXN0eWxlIixmb250VmFyaWFudDoiZm9udC12YXJpYW50Iixmb250
V2VpZ2h0OiJmb250LXdlaWdodCIsZm9ybWF0OjAsZnJvbTowLGZ4OjAsZnk6MCxnMTowLGcyOjAs
Z2x5cGhOYW1lOiJnbHlwaC1uYW1lIixnbHlwaE9yaWVudGF0aW9uSG9yaXpvbnRhbDoiZ2x5cGgt
b3JpZW50YXRpb24taG9yaXpvbnRhbCIsZ2x5cGhPcmllbnRhdGlvblZlcnRpY2FsOiJnbHlwaC1v
cmllbnRhdGlvbi12ZXJ0aWNhbCIsZ2x5cGhSZWY6ImdseXBoUmVmIixncmFkaWVudFRyYW5zZm9y
bToiZ3JhZGllbnRUcmFuc2Zvcm0iLGdyYWRpZW50VW5pdHM6ImdyYWRpZW50VW5pdHMiLGhhbmdp
bmc6MCxob3JpekFkdlg6Imhvcml6LWFkdi14Iixob3Jpek9yaWdpblg6Imhvcml6LW9yaWdpbi14
IixpZGVvZ3JhcGhpYzowLGltYWdlUmVuZGVyaW5nOiJpbWFnZS1yZW5kZXJpbmciLGluOjAsaW4y
OjAsaW50ZXJjZXB0OjAsazowLGsxOjAsazI6MCxrMzowLGs0OjAsa2VybmVsTWF0cml4OiJrZXJu
ZWxNYXRyaXgiLGtlcm5lbFVuaXRMZW5ndGg6Imtlcm5lbFVuaXRMZW5ndGgiLGtlcm5pbmc6MCxr
ZXlQb2ludHM6ImtleVBvaW50cyIsa2V5U3BsaW5lczoia2V5U3BsaW5lcyIsa2V5VGltZXM6Imtl
eVRpbWVzIixsZW5ndGhBZGp1c3Q6Imxlbmd0aEFkanVzdCIsbGV0dGVyU3BhY2luZzoibGV0dGVy
LXNwYWNpbmciLGxpZ2h0aW5nQ29sb3I6ImxpZ2h0aW5nLWNvbG9yIixsaW1pdGluZ0NvbmVBbmds
ZToibGltaXRpbmdDb25lQW5nbGUiLGxvY2FsOjAsbWFya2VyRW5kOiJtYXJrZXItZW5kIixtYXJr
ZXJNaWQ6Im1hcmtlci1taWQiLG1hcmtlclN0YXJ0OiJtYXJrZXItc3RhcnQiLG1hcmtlckhlaWdo
dDoibWFya2VySGVpZ2h0IixtYXJrZXJVbml0czoibWFya2VyVW5pdHMiLG1hcmtlcldpZHRoOiJt
YXJrZXJXaWR0aCIsbWFzazowLG1hc2tDb250ZW50VW5pdHM6Im1hc2tDb250ZW50VW5pdHMiLG1h
c2tVbml0czoibWFza1VuaXRzIixtYXRoZW1hdGljYWw6MCxtb2RlOjAsbnVtT2N0YXZlczoibnVt
T2N0YXZlcyIsb2Zmc2V0OjAsb3BhY2l0eTowLG9wZXJhdG9yOjAsb3JkZXI6MCxvcmllbnQ6MCxv
cmllbnRhdGlvbjowLG9yaWdpbjowLG92ZXJmbG93OjAsb3ZlcmxpbmVQb3NpdGlvbjoib3Zlcmxp
bmUtcG9zaXRpb24iLG92ZXJsaW5lVGhpY2tuZXNzOiJvdmVybGluZS10aGlja25lc3MiLHBhaW50
T3JkZXI6InBhaW50LW9yZGVyIixwYW5vc2UxOiJwYW5vc2UtMSIscGF0aExlbmd0aDoicGF0aExl
bmd0aCIscGF0dGVybkNvbnRlbnRVbml0czoicGF0dGVybkNvbnRlbnRVbml0cyIscGF0dGVyblRy
YW5zZm9ybToicGF0dGVyblRyYW5zZm9ybSIscGF0dGVyblVuaXRzOiJwYXR0ZXJuVW5pdHMiLHBv
aW50ZXJFdmVudHM6InBvaW50ZXItZXZlbnRzIixwb2ludHM6MCxwb2ludHNBdFg6InBvaW50c0F0
WCIscG9pbnRzQXRZOiJwb2ludHNBdFkiLHBvaW50c0F0WjoicG9pbnRzQXRaIixwcmVzZXJ2ZUFs
cGhhOiJwcmVzZXJ2ZUFscGhhIixwcmVzZXJ2ZUFzcGVjdFJhdGlvOiJwcmVzZXJ2ZUFzcGVjdFJh
dGlvIixwcmltaXRpdmVVbml0czoicHJpbWl0aXZlVW5pdHMiLHI6MCxyYWRpdXM6MCxyZWZYOiJy
ZWZYIixyZWZZOiJyZWZZIixyZW5kZXJpbmdJbnRlbnQ6InJlbmRlcmluZy1pbnRlbnQiLHJlcGVh
dENvdW50OiJyZXBlYXRDb3VudCIscmVwZWF0RHVyOiJyZXBlYXREdXIiLHJlcXVpcmVkRXh0ZW5z
aW9uczoicmVxdWlyZWRFeHRlbnNpb25zIixyZXF1aXJlZEZlYXR1cmVzOiJyZXF1aXJlZEZlYXR1
cmVzIixyZXN0YXJ0OjAscmVzdWx0OjAscm90YXRlOjAscng6MCxyeTowLHNjYWxlOjAsc2VlZDow
LHNoYXBlUmVuZGVyaW5nOiJzaGFwZS1yZW5kZXJpbmciLHNsb3BlOjAsc3BhY2luZzowLHNwZWN1
bGFyQ29uc3RhbnQ6InNwZWN1bGFyQ29uc3RhbnQiLHNwZWN1bGFyRXhwb25lbnQ6InNwZWN1bGFy
RXhwb25lbnQiLHNwZWVkOjAsc3ByZWFkTWV0aG9kOiJzcHJlYWRNZXRob2QiLHN0YXJ0T2Zmc2V0
OiJzdGFydE9mZnNldCIsc3RkRGV2aWF0aW9uOiJzdGREZXZpYXRpb24iLHN0ZW1oOjAsc3RlbXY6
MCxzdGl0Y2hUaWxlczoic3RpdGNoVGlsZXMiLHN0b3BDb2xvcjoic3RvcC1jb2xvciIsc3RvcE9w
YWNpdHk6InN0b3Atb3BhY2l0eSIsc3RyaWtldGhyb3VnaFBvc2l0aW9uOiJzdHJpa2V0aHJvdWdo
LXBvc2l0aW9uIixzdHJpa2V0aHJvdWdoVGhpY2tuZXNzOiJzdHJpa2V0aHJvdWdoLXRoaWNrbmVz
cyIsc3RyaW5nOjAsc3Ryb2tlOjAsc3Ryb2tlRGFzaGFycmF5OiJzdHJva2UtZGFzaGFycmF5Iixz
dHJva2VEYXNob2Zmc2V0OiJzdHJva2UtZGFzaG9mZnNldCIsc3Ryb2tlTGluZWNhcDoic3Ryb2tl
LWxpbmVjYXAiLHN0cm9rZUxpbmVqb2luOiJzdHJva2UtbGluZWpvaW4iLHN0cm9rZU1pdGVybGlt
aXQ6InN0cm9rZS1taXRlcmxpbWl0IixzdHJva2VPcGFjaXR5OiJzdHJva2Utb3BhY2l0eSIsc3Ry
b2tlV2lkdGg6InN0cm9rZS13aWR0aCIsc3VyZmFjZVNjYWxlOiJzdXJmYWNlU2NhbGUiLHN5c3Rl
bUxhbmd1YWdlOiJzeXN0ZW1MYW5ndWFnZSIsdGFibGVWYWx1ZXM6InRhYmxlVmFsdWVzIix0YXJn
ZXRYOiJ0YXJnZXRYIix0YXJnZXRZOiJ0YXJnZXRZIix0ZXh0QW5jaG9yOiJ0ZXh0LWFuY2hvciIs
dGV4dERlY29yYXRpb246InRleHQtZGVjb3JhdGlvbiIsdGV4dFJlbmRlcmluZzoidGV4dC1yZW5k
ZXJpbmciLHRleHRMZW5ndGg6InRleHRMZW5ndGgiLHRvOjAsdHJhbnNmb3JtOjAsdTE6MCx1Mjow
LHVuZGVybGluZVBvc2l0aW9uOiJ1bmRlcmxpbmUtcG9zaXRpb24iLHVuZGVybGluZVRoaWNrbmVz
czoidW5kZXJsaW5lLXRoaWNrbmVzcyIsdW5pY29kZTowLHVuaWNvZGVCaWRpOiJ1bmljb2RlLWJp
ZGkiLHVuaWNvZGVSYW5nZToidW5pY29kZS1yYW5nZSIsdW5pdHNQZXJFbToidW5pdHMtcGVyLWVt
Iix2QWxwaGFiZXRpYzoidi1hbHBoYWJldGljIix2SGFuZ2luZzoidi1oYW5naW5nIix2SWRlb2dy
YXBoaWM6InYtaWRlb2dyYXBoaWMiLHZNYXRoZW1hdGljYWw6InYtbWF0aGVtYXRpY2FsIix2YWx1
ZXM6MCx2ZWN0b3JFZmZlY3Q6InZlY3Rvci1lZmZlY3QiLHZlcnNpb246MCx2ZXJ0QWR2WToidmVy
dC1hZHYteSIsdmVydE9yaWdpblg6InZlcnQtb3JpZ2luLXgiLHZlcnRPcmlnaW5ZOiJ2ZXJ0LW9y
aWdpbi15Iix2aWV3Qm94OiJ2aWV3Qm94Iix2aWV3VGFyZ2V0OiJ2aWV3VGFyZ2V0Iix2aXNpYmls
aXR5OjAsd2lkdGhzOjAsd29yZFNwYWNpbmc6IndvcmQtc3BhY2luZyIsd3JpdGluZ01vZGU6Indy
aXRpbmctbW9kZSIseDowLHhIZWlnaHQ6IngtaGVpZ2h0Iix4MTowLHgyOjAseENoYW5uZWxTZWxl
Y3RvcjoieENoYW5uZWxTZWxlY3RvciIseGxpbmtBY3R1YXRlOiJ4bGluazphY3R1YXRlIix4bGlu
a0FyY3JvbGU6InhsaW5rOmFyY3JvbGUiLHhsaW5rSHJlZjoieGxpbms6aHJlZiIseGxpbmtSb2xl
OiJ4bGluazpyb2xlIix4bGlua1Nob3c6InhsaW5rOnNob3ciLHhsaW5rVGl0bGU6InhsaW5rOnRp
dGxlIix4bGlua1R5cGU6InhsaW5rOnR5cGUiLHhtbEJhc2U6InhtbDpiYXNlIix4bWxuczowLHht
bG5zWGxpbms6InhtbG5zOnhsaW5rIix4bWxMYW5nOiJ4bWw6bGFuZyIseG1sU3BhY2U6InhtbDpz
cGFjZSIseTowLHkxOjAseTI6MCx5Q2hhbm5lbFNlbGVjdG9yOiJ5Q2hhbm5lbFNlbGVjdG9yIix6
OjAsem9vbUFuZFBhbjoiem9vbUFuZFBhbiJ9LG89e1Byb3BlcnRpZXM6e30sRE9NQXR0cmlidXRl
TmFtZXNwYWNlczp7eGxpbmtBY3R1YXRlOm4ueGxpbmsseGxpbmtBcmNyb2xlOm4ueGxpbmsseGxp
bmtIcmVmOm4ueGxpbmsseGxpbmtSb2xlOm4ueGxpbmsseGxpbmtTaG93Om4ueGxpbmsseGxpbmtU
aXRsZTpuLnhsaW5rLHhsaW5rVHlwZTpuLnhsaW5rLHhtbEJhc2U6bi54bWwseG1sTGFuZzpuLnht
bCx4bWxTcGFjZTpuLnhtbH0sRE9NQXR0cmlidXRlTmFtZXM6e319O09iamVjdC5rZXlzKHIpLmZv
ckVhY2goZnVuY3Rpb24oZSl7by5Qcm9wZXJ0aWVzW2VdPTAscltlXSYmKG8uRE9NQXR0cmlidXRl
TmFtZXNbZV09cltlXSl9KSxlLmV4cG9ydHM9b30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe2lmKCJzZWxlY3Rpb25TdGFydCJpbiBlJiZsLmhhc1NlbGVjdGlvbkNh
cGFiaWxpdGllcyhlKSlyZXR1cm57c3RhcnQ6ZS5zZWxlY3Rpb25TdGFydCxlbmQ6ZS5zZWxlY3Rp
b25FbmR9O2lmKHdpbmRvdy5nZXRTZWxlY3Rpb24pe3ZhciB0PXdpbmRvdy5nZXRTZWxlY3Rpb24o
KTtyZXR1cm57YW5jaG9yTm9kZTp0LmFuY2hvck5vZGUsYW5jaG9yT2Zmc2V0OnQuYW5jaG9yT2Zm
c2V0LGZvY3VzTm9kZTp0LmZvY3VzTm9kZSxmb2N1c09mZnNldDp0LmZvY3VzT2Zmc2V0fX1pZihk
b2N1bWVudC5zZWxlY3Rpb24pe3ZhciBuPWRvY3VtZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgp
O3JldHVybntwYXJlbnRFbGVtZW50Om4ucGFyZW50RWxlbWVudCgpLHRleHQ6bi50ZXh0LHRvcDpu
LmJvdW5kaW5nVG9wLGxlZnQ6bi5ib3VuZGluZ0xlZnR9fX1mdW5jdGlvbiBvKGUsdCl7aWYoQ3x8
bnVsbD09Z3x8ZyE9PXAoKSlyZXR1cm4gbnVsbDt2YXIgbj1yKGcpO2lmKCFffHwhaChfLG4pKXtf
PW47dmFyIG89Yy5nZXRQb29sZWQoeS5zZWxlY3QsYixlLHQpO3JldHVybiBvLnR5cGU9InNlbGVj
dCIsby50YXJnZXQ9ZyxhLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMobyksb31yZXR1cm4g
bnVsbH12YXIgaT1uKDEyKSxhPW4oMjIpLHU9big2KSxzPW4oNSksbD1uKDgwKSxjPW4oMTMpLHA9
big2MiksZD1uKDk0KSxmPW4oMTQpLGg9bigzNCksdj1pLnRvcExldmVsVHlwZXMsbT11LmNhblVz
ZURPTSYmImRvY3VtZW50TW9kZSJpbiBkb2N1bWVudCYmZG9jdW1lbnQuZG9jdW1lbnRNb2RlPD0x
MSx5PXtzZWxlY3Q6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOmYoe29uU2VsZWN0
Om51bGx9KSxjYXB0dXJlZDpmKHtvblNlbGVjdENhcHR1cmU6bnVsbH0pfSxkZXBlbmRlbmNpZXM6
W3YudG9wQmx1cix2LnRvcENvbnRleHRNZW51LHYudG9wRm9jdXMsdi50b3BLZXlEb3duLHYudG9w
S2V5VXAsdi50b3BNb3VzZURvd24sdi50b3BNb3VzZVVwLHYudG9wU2VsZWN0aW9uQ2hhbmdlXX19
LGc9bnVsbCxiPW51bGwsXz1udWxsLEM9ITEsRT0hMSx3PWYoe29uU2VsZWN0Om51bGx9KSxUPXtl
dmVudFR5cGVzOnksZXh0cmFjdEV2ZW50czpmdW5jdGlvbihlLHQsbixyKXtpZighRSlyZXR1cm4g
bnVsbDt2YXIgaT10P3MuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0KTp3aW5kb3c7c3dpdGNoKGUpe2Nh
c2Ugdi50b3BGb2N1czooZChpKXx8InRydWUiPT09aS5jb250ZW50RWRpdGFibGUpJiYoZz1pLGI9
dCxfPW51bGwpO2JyZWFrO2Nhc2Ugdi50b3BCbHVyOmc9bnVsbCxiPW51bGwsXz1udWxsO2JyZWFr
O2Nhc2Ugdi50b3BNb3VzZURvd246Qz0hMDticmVhaztjYXNlIHYudG9wQ29udGV4dE1lbnU6Y2Fz
ZSB2LnRvcE1vdXNlVXA6cmV0dXJuIEM9ITEsbyhuLHIpO2Nhc2Ugdi50b3BTZWxlY3Rpb25DaGFu
Z2U6aWYobSlicmVhaztjYXNlIHYudG9wS2V5RG93bjpjYXNlIHYudG9wS2V5VXA6cmV0dXJuIG8o
bixyKX1yZXR1cm4gbnVsbH0sZGlkUHV0TGlzdGVuZXI6ZnVuY3Rpb24oZSx0LG4pe3Q9PT13JiYo
RT0hMCl9fTtlLmV4cG9ydHM9VH0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUpe3JldHVybiIuIitlLl9yb290Tm9kZUlEfXZhciBvPW4oMiksaT1uKDEyKSxhPW4oNjAp
LHU9bigyMikscz1uKDUpLGw9bigxODEpLGM9bigxODIpLHA9bigxMyksZD1uKDE4NSksZj1uKDE4
NyksaD1uKDI5KSx2PW4oMTg0KSxtPW4oMTg4KSx5PW4oMTg5KSxnPW4oMjQpLGI9bigxOTApLF89
big3KSxDPW4oNTMpLEU9KG4oMSksbigxNCkpLHc9aS50b3BMZXZlbFR5cGVzLFQ9e2Fib3J0Ontw
aGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbkFib3J0OiEwfSksY2FwdHVyZWQ6
RSh7b25BYm9ydENhcHR1cmU6ITB9KX19LGFuaW1hdGlvbkVuZDp7cGhhc2VkUmVnaXN0cmF0aW9u
TmFtZXM6e2J1YmJsZWQ6RSh7b25BbmltYXRpb25FbmQ6ITB9KSxjYXB0dXJlZDpFKHtvbkFuaW1h
dGlvbkVuZENhcHR1cmU6ITB9KX19LGFuaW1hdGlvbkl0ZXJhdGlvbjp7cGhhc2VkUmVnaXN0cmF0
aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25BbmltYXRpb25JdGVyYXRpb246ITB9KSxjYXB0dXJlZDpF
KHtvbkFuaW1hdGlvbkl0ZXJhdGlvbkNhcHR1cmU6ITB9KX19LGFuaW1hdGlvblN0YXJ0OntwaGFz
ZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbkFuaW1hdGlvblN0YXJ0OiEwfSksY2Fw
dHVyZWQ6RSh7b25BbmltYXRpb25TdGFydENhcHR1cmU6ITB9KX19LGJsdXI6e3BoYXNlZFJlZ2lz
dHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uQmx1cjohMH0pLGNhcHR1cmVkOkUoe29uQmx1ckNh
cHR1cmU6ITB9KX19LGNhblBsYXk6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUo
e29uQ2FuUGxheTohMH0pLGNhcHR1cmVkOkUoe29uQ2FuUGxheUNhcHR1cmU6ITB9KX19LGNhblBs
YXlUaHJvdWdoOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbkNhblBsYXlU
aHJvdWdoOiEwfSksY2FwdHVyZWQ6RSh7b25DYW5QbGF5VGhyb3VnaENhcHR1cmU6ITB9KX19LGNs
aWNrOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbkNsaWNrOiEwfSksY2Fw
dHVyZWQ6RSh7b25DbGlja0NhcHR1cmU6ITB9KX19LGNvbnRleHRNZW51OntwaGFzZWRSZWdpc3Ry
YXRpb25OYW1lczp7YnViYmxlZDpFKHtvbkNvbnRleHRNZW51OiEwfSksY2FwdHVyZWQ6RSh7b25D
b250ZXh0TWVudUNhcHR1cmU6ITB9KX19LGNvcHk6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOnti
dWJibGVkOkUoe29uQ29weTohMH0pLGNhcHR1cmVkOkUoe29uQ29weUNhcHR1cmU6ITB9KX19LGN1
dDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25DdXQ6ITB9KSxjYXB0dXJl
ZDpFKHtvbkN1dENhcHR1cmU6ITB9KX19LGRvdWJsZUNsaWNrOntwaGFzZWRSZWdpc3RyYXRpb25O
YW1lczp7YnViYmxlZDpFKHtvbkRvdWJsZUNsaWNrOiEwfSksY2FwdHVyZWQ6RSh7b25Eb3VibGVD
bGlja0NhcHR1cmU6ITB9KX19LGRyYWc6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVk
OkUoe29uRHJhZzohMH0pLGNhcHR1cmVkOkUoe29uRHJhZ0NhcHR1cmU6ITB9KX19LGRyYWdFbmQ6
e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uRHJhZ0VuZDohMH0pLGNhcHR1
cmVkOkUoe29uRHJhZ0VuZENhcHR1cmU6ITB9KX19LGRyYWdFbnRlcjp7cGhhc2VkUmVnaXN0cmF0
aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25EcmFnRW50ZXI6ITB9KSxjYXB0dXJlZDpFKHtvbkRyYWdF
bnRlckNhcHR1cmU6ITB9KX19LGRyYWdFeGl0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnVi
YmxlZDpFKHtvbkRyYWdFeGl0OiEwfSksY2FwdHVyZWQ6RSh7b25EcmFnRXhpdENhcHR1cmU6ITB9
KX19LGRyYWdMZWF2ZTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25EcmFn
TGVhdmU6ITB9KSxjYXB0dXJlZDpFKHtvbkRyYWdMZWF2ZUNhcHR1cmU6ITB9KX19LGRyYWdPdmVy
OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbkRyYWdPdmVyOiEwfSksY2Fw
dHVyZWQ6RSh7b25EcmFnT3ZlckNhcHR1cmU6ITB9KX19LGRyYWdTdGFydDp7cGhhc2VkUmVnaXN0
cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25EcmFnU3RhcnQ6ITB9KSxjYXB0dXJlZDpFKHtvbkRy
YWdTdGFydENhcHR1cmU6ITB9KX19LGRyb3A6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJi
bGVkOkUoe29uRHJvcDohMH0pLGNhcHR1cmVkOkUoe29uRHJvcENhcHR1cmU6ITB9KX19LGR1cmF0
aW9uQ2hhbmdlOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbkR1cmF0aW9u
Q2hhbmdlOiEwfSksY2FwdHVyZWQ6RSh7b25EdXJhdGlvbkNoYW5nZUNhcHR1cmU6ITB9KX19LGVt
cHRpZWQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uRW1wdGllZDohMH0p
LGNhcHR1cmVkOkUoe29uRW1wdGllZENhcHR1cmU6ITB9KX19LGVuY3J5cHRlZDp7cGhhc2VkUmVn
aXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25FbmNyeXB0ZWQ6ITB9KSxjYXB0dXJlZDpFKHtv
bkVuY3J5cHRlZENhcHR1cmU6ITB9KX19LGVuZGVkOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7
YnViYmxlZDpFKHtvbkVuZGVkOiEwfSksY2FwdHVyZWQ6RSh7b25FbmRlZENhcHR1cmU6ITB9KX19
LGVycm9yOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbkVycm9yOiEwfSks
Y2FwdHVyZWQ6RSh7b25FcnJvckNhcHR1cmU6ITB9KX19LGZvY3VzOntwaGFzZWRSZWdpc3RyYXRp
b25OYW1lczp7YnViYmxlZDpFKHtvbkZvY3VzOiEwfSksY2FwdHVyZWQ6RSh7b25Gb2N1c0NhcHR1
cmU6ITB9KX19LGlucHV0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbklu
cHV0OiEwfSksY2FwdHVyZWQ6RSh7b25JbnB1dENhcHR1cmU6ITB9KX19LGludmFsaWQ6e3BoYXNl
ZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uSW52YWxpZDohMH0pLGNhcHR1cmVkOkUo
e29uSW52YWxpZENhcHR1cmU6ITB9KX19LGtleURvd246e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVz
OntidWJibGVkOkUoe29uS2V5RG93bjohMH0pLGNhcHR1cmVkOkUoe29uS2V5RG93bkNhcHR1cmU6
ITB9KX19LGtleVByZXNzOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbktl
eVByZXNzOiEwfSksY2FwdHVyZWQ6RSh7b25LZXlQcmVzc0NhcHR1cmU6ITB9KX19LGtleVVwOntw
aGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbktleVVwOiEwfSksY2FwdHVyZWQ6
RSh7b25LZXlVcENhcHR1cmU6ITB9KX19LGxvYWQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOnti
dWJibGVkOkUoe29uTG9hZDohMH0pLGNhcHR1cmVkOkUoe29uTG9hZENhcHR1cmU6ITB9KX19LGxv
YWRlZERhdGE6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uTG9hZGVkRGF0
YTohMH0pLGNhcHR1cmVkOkUoe29uTG9hZGVkRGF0YUNhcHR1cmU6ITB9KX19LGxvYWRlZE1ldGFk
YXRhOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvbkxvYWRlZE1ldGFkYXRh
OiEwfSksY2FwdHVyZWQ6RSh7b25Mb2FkZWRNZXRhZGF0YUNhcHR1cmU6ITB9KX19LGxvYWRTdGFy
dDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25Mb2FkU3RhcnQ6ITB9KSxj
YXB0dXJlZDpFKHtvbkxvYWRTdGFydENhcHR1cmU6ITB9KX19LG1vdXNlRG93bjp7cGhhc2VkUmVn
aXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25Nb3VzZURvd246ITB9KSxjYXB0dXJlZDpFKHtv
bk1vdXNlRG93bkNhcHR1cmU6ITB9KX19LG1vdXNlTW92ZTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFt
ZXM6e2J1YmJsZWQ6RSh7b25Nb3VzZU1vdmU6ITB9KSxjYXB0dXJlZDpFKHtvbk1vdXNlTW92ZUNh
cHR1cmU6ITB9KX19LG1vdXNlT3V0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpF
KHtvbk1vdXNlT3V0OiEwfSksY2FwdHVyZWQ6RSh7b25Nb3VzZU91dENhcHR1cmU6ITB9KX19LG1v
dXNlT3Zlcjp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25Nb3VzZU92ZXI6
ITB9KSxjYXB0dXJlZDpFKHtvbk1vdXNlT3ZlckNhcHR1cmU6ITB9KX19LG1vdXNlVXA6e3BoYXNl
ZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uTW91c2VVcDohMH0pLGNhcHR1cmVkOkUo
e29uTW91c2VVcENhcHR1cmU6ITB9KX19LHBhc3RlOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7
YnViYmxlZDpFKHtvblBhc3RlOiEwfSksY2FwdHVyZWQ6RSh7b25QYXN0ZUNhcHR1cmU6ITB9KX19
LHBhdXNlOntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvblBhdXNlOiEwfSks
Y2FwdHVyZWQ6RSh7b25QYXVzZUNhcHR1cmU6ITB9KX19LHBsYXk6e3BoYXNlZFJlZ2lzdHJhdGlv
bk5hbWVzOntidWJibGVkOkUoe29uUGxheTohMH0pLGNhcHR1cmVkOkUoe29uUGxheUNhcHR1cmU6
ITB9KX19LHBsYXlpbmc6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uUGxh
eWluZzohMH0pLGNhcHR1cmVkOkUoe29uUGxheWluZ0NhcHR1cmU6ITB9KX19LHByb2dyZXNzOntw
aGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvblByb2dyZXNzOiEwfSksY2FwdHVy
ZWQ6RSh7b25Qcm9ncmVzc0NhcHR1cmU6ITB9KX19LHJhdGVDaGFuZ2U6e3BoYXNlZFJlZ2lzdHJh
dGlvbk5hbWVzOntidWJibGVkOkUoe29uUmF0ZUNoYW5nZTohMH0pLGNhcHR1cmVkOkUoe29uUmF0
ZUNoYW5nZUNhcHR1cmU6ITB9KX19LHJlc2V0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnVi
YmxlZDpFKHtvblJlc2V0OiEwfSksY2FwdHVyZWQ6RSh7b25SZXNldENhcHR1cmU6ITB9KX19LHNj
cm9sbDp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25TY3JvbGw6ITB9KSxj
YXB0dXJlZDpFKHtvblNjcm9sbENhcHR1cmU6ITB9KX19LHNlZWtlZDp7cGhhc2VkUmVnaXN0cmF0
aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25TZWVrZWQ6ITB9KSxjYXB0dXJlZDpFKHtvblNlZWtlZENh
cHR1cmU6ITB9KX19LHNlZWtpbmc6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUo
e29uU2Vla2luZzohMH0pLGNhcHR1cmVkOkUoe29uU2Vla2luZ0NhcHR1cmU6ITB9KX19LHN0YWxs
ZWQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uU3RhbGxlZDohMH0pLGNh
cHR1cmVkOkUoe29uU3RhbGxlZENhcHR1cmU6ITB9KX19LHN1Ym1pdDp7cGhhc2VkUmVnaXN0cmF0
aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25TdWJtaXQ6ITB9KSxjYXB0dXJlZDpFKHtvblN1Ym1pdENh
cHR1cmU6ITB9KX19LHN1c3BlbmQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUo
e29uU3VzcGVuZDohMH0pLGNhcHR1cmVkOkUoe29uU3VzcGVuZENhcHR1cmU6ITB9KX19LHRpbWVV
cGRhdGU6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uVGltZVVwZGF0ZToh
MH0pLGNhcHR1cmVkOkUoe29uVGltZVVwZGF0ZUNhcHR1cmU6ITB9KX19LHRvdWNoQ2FuY2VsOntw
aGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvblRvdWNoQ2FuY2VsOiEwfSksY2Fw
dHVyZWQ6RSh7b25Ub3VjaENhbmNlbENhcHR1cmU6ITB9KX19LHRvdWNoRW5kOntwaGFzZWRSZWdp
c3RyYXRpb25OYW1lczp7YnViYmxlZDpFKHtvblRvdWNoRW5kOiEwfSksY2FwdHVyZWQ6RSh7b25U
b3VjaEVuZENhcHR1cmU6ITB9KX19LHRvdWNoTW92ZTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6
e2J1YmJsZWQ6RSh7b25Ub3VjaE1vdmU6ITB9KSxjYXB0dXJlZDpFKHtvblRvdWNoTW92ZUNhcHR1
cmU6ITB9KX19LHRvdWNoU3RhcnQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUo
e29uVG91Y2hTdGFydDohMH0pLGNhcHR1cmVkOkUoe29uVG91Y2hTdGFydENhcHR1cmU6ITB9KX19
LHRyYW5zaXRpb25FbmQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uVHJh
bnNpdGlvbkVuZDohMH0pLGNhcHR1cmVkOkUoe29uVHJhbnNpdGlvbkVuZENhcHR1cmU6ITB9KX19
LHZvbHVtZUNoYW5nZTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6RSh7b25Wb2x1
bWVDaGFuZ2U6ITB9KSxjYXB0dXJlZDpFKHtvblZvbHVtZUNoYW5nZUNhcHR1cmU6ITB9KX19LHdh
aXRpbmc6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOkUoe29uV2FpdGluZzohMH0p
LGNhcHR1cmVkOkUoe29uV2FpdGluZ0NhcHR1cmU6ITB9KX19LHdoZWVsOntwaGFzZWRSZWdpc3Ry
YXRpb25OYW1lczp7YnViYmxlZDpFKHtvbldoZWVsOiEwfSksY2FwdHVyZWQ6RSh7b25XaGVlbENh
cHR1cmU6ITB9KX19fSxQPXt0b3BBYm9ydDpULmFib3J0LHRvcEFuaW1hdGlvbkVuZDpULmFuaW1h
dGlvbkVuZCx0b3BBbmltYXRpb25JdGVyYXRpb246VC5hbmltYXRpb25JdGVyYXRpb24sdG9wQW5p
bWF0aW9uU3RhcnQ6VC5hbmltYXRpb25TdGFydCx0b3BCbHVyOlQuYmx1cix0b3BDYW5QbGF5OlQu
Y2FuUGxheSx0b3BDYW5QbGF5VGhyb3VnaDpULmNhblBsYXlUaHJvdWdoLHRvcENsaWNrOlQuY2xp
Y2ssdG9wQ29udGV4dE1lbnU6VC5jb250ZXh0TWVudSx0b3BDb3B5OlQuY29weSx0b3BDdXQ6VC5j
dXQsdG9wRG91YmxlQ2xpY2s6VC5kb3VibGVDbGljayx0b3BEcmFnOlQuZHJhZyx0b3BEcmFnRW5k
OlQuZHJhZ0VuZCx0b3BEcmFnRW50ZXI6VC5kcmFnRW50ZXIsdG9wRHJhZ0V4aXQ6VC5kcmFnRXhp
dCx0b3BEcmFnTGVhdmU6VC5kcmFnTGVhdmUsdG9wRHJhZ092ZXI6VC5kcmFnT3Zlcix0b3BEcmFn
U3RhcnQ6VC5kcmFnU3RhcnQsdG9wRHJvcDpULmRyb3AsdG9wRHVyYXRpb25DaGFuZ2U6VC5kdXJh
dGlvbkNoYW5nZSx0b3BFbXB0aWVkOlQuZW1wdGllZCx0b3BFbmNyeXB0ZWQ6VC5lbmNyeXB0ZWQs
dG9wRW5kZWQ6VC5lbmRlZCx0b3BFcnJvcjpULmVycm9yLHRvcEZvY3VzOlQuZm9jdXMsdG9wSW5w
dXQ6VC5pbnB1dCx0b3BJbnZhbGlkOlQuaW52YWxpZCx0b3BLZXlEb3duOlQua2V5RG93bix0b3BL
ZXlQcmVzczpULmtleVByZXNzLHRvcEtleVVwOlQua2V5VXAsdG9wTG9hZDpULmxvYWQsdG9wTG9h
ZGVkRGF0YTpULmxvYWRlZERhdGEsdG9wTG9hZGVkTWV0YWRhdGE6VC5sb2FkZWRNZXRhZGF0YSx0
b3BMb2FkU3RhcnQ6VC5sb2FkU3RhcnQsdG9wTW91c2VEb3duOlQubW91c2VEb3duLHRvcE1vdXNl
TW92ZTpULm1vdXNlTW92ZSx0b3BNb3VzZU91dDpULm1vdXNlT3V0LHRvcE1vdXNlT3ZlcjpULm1v
dXNlT3Zlcix0b3BNb3VzZVVwOlQubW91c2VVcCx0b3BQYXN0ZTpULnBhc3RlLHRvcFBhdXNlOlQu
cGF1c2UsdG9wUGxheTpULnBsYXksdG9wUGxheWluZzpULnBsYXlpbmcsdG9wUHJvZ3Jlc3M6VC5w
cm9ncmVzcyx0b3BSYXRlQ2hhbmdlOlQucmF0ZUNoYW5nZSx0b3BSZXNldDpULnJlc2V0LHRvcFNj
cm9sbDpULnNjcm9sbCx0b3BTZWVrZWQ6VC5zZWVrZWQsdG9wU2Vla2luZzpULnNlZWtpbmcsdG9w
U3RhbGxlZDpULnN0YWxsZWQsdG9wU3VibWl0OlQuc3VibWl0LHRvcFN1c3BlbmQ6VC5zdXNwZW5k
LHRvcFRpbWVVcGRhdGU6VC50aW1lVXBkYXRlLHRvcFRvdWNoQ2FuY2VsOlQudG91Y2hDYW5jZWws
dG9wVG91Y2hFbmQ6VC50b3VjaEVuZCx0b3BUb3VjaE1vdmU6VC50b3VjaE1vdmUsdG9wVG91Y2hT
dGFydDpULnRvdWNoU3RhcnQsdG9wVHJhbnNpdGlvbkVuZDpULnRyYW5zaXRpb25FbmQsdG9wVm9s
dW1lQ2hhbmdlOlQudm9sdW1lQ2hhbmdlLHRvcFdhaXRpbmc6VC53YWl0aW5nLHRvcFdoZWVsOlQu
d2hlZWx9O2Zvcih2YXIgeCBpbiBQKVBbeF0uZGVwZW5kZW5jaWVzPVt4XTt2YXIgTz1FKHtvbkNs
aWNrOm51bGx9KSxTPXt9LE09e2V2ZW50VHlwZXM6VCxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUs
dCxuLHIpe3ZhciBpPVBbZV07aWYoIWkpcmV0dXJuIG51bGw7dmFyIGE7c3dpdGNoKGUpe2Nhc2Ug
dy50b3BBYm9ydDpjYXNlIHcudG9wQ2FuUGxheTpjYXNlIHcudG9wQ2FuUGxheVRocm91Z2g6Y2Fz
ZSB3LnRvcER1cmF0aW9uQ2hhbmdlOmNhc2Ugdy50b3BFbXB0aWVkOmNhc2Ugdy50b3BFbmNyeXB0
ZWQ6Y2FzZSB3LnRvcEVuZGVkOmNhc2Ugdy50b3BFcnJvcjpjYXNlIHcudG9wSW5wdXQ6Y2FzZSB3
LnRvcEludmFsaWQ6Y2FzZSB3LnRvcExvYWQ6Y2FzZSB3LnRvcExvYWRlZERhdGE6Y2FzZSB3LnRv
cExvYWRlZE1ldGFkYXRhOmNhc2Ugdy50b3BMb2FkU3RhcnQ6Y2FzZSB3LnRvcFBhdXNlOmNhc2Ug
dy50b3BQbGF5OmNhc2Ugdy50b3BQbGF5aW5nOmNhc2Ugdy50b3BQcm9ncmVzczpjYXNlIHcudG9w
UmF0ZUNoYW5nZTpjYXNlIHcudG9wUmVzZXQ6Y2FzZSB3LnRvcFNlZWtlZDpjYXNlIHcudG9wU2Vl
a2luZzpjYXNlIHcudG9wU3RhbGxlZDpjYXNlIHcudG9wU3VibWl0OmNhc2Ugdy50b3BTdXNwZW5k
OmNhc2Ugdy50b3BUaW1lVXBkYXRlOmNhc2Ugdy50b3BWb2x1bWVDaGFuZ2U6Y2FzZSB3LnRvcFdh
aXRpbmc6YT1wO2JyZWFrO2Nhc2Ugdy50b3BLZXlQcmVzczppZigwPT09QyhuKSlyZXR1cm4gbnVs
bDtjYXNlIHcudG9wS2V5RG93bjpjYXNlIHcudG9wS2V5VXA6YT1mO2JyZWFrO2Nhc2Ugdy50b3BC
bHVyOmNhc2Ugdy50b3BGb2N1czphPWQ7YnJlYWs7Y2FzZSB3LnRvcENsaWNrOmlmKDI9PT1uLmJ1
dHRvbilyZXR1cm4gbnVsbDtjYXNlIHcudG9wQ29udGV4dE1lbnU6Y2FzZSB3LnRvcERvdWJsZUNs
aWNrOmNhc2Ugdy50b3BNb3VzZURvd246Y2FzZSB3LnRvcE1vdXNlTW92ZTpjYXNlIHcudG9wTW91
c2VPdXQ6Y2FzZSB3LnRvcE1vdXNlT3ZlcjpjYXNlIHcudG9wTW91c2VVcDphPWg7YnJlYWs7Y2Fz
ZSB3LnRvcERyYWc6Y2FzZSB3LnRvcERyYWdFbmQ6Y2FzZSB3LnRvcERyYWdFbnRlcjpjYXNlIHcu
dG9wRHJhZ0V4aXQ6Y2FzZSB3LnRvcERyYWdMZWF2ZTpjYXNlIHcudG9wRHJhZ092ZXI6Y2FzZSB3
LnRvcERyYWdTdGFydDpjYXNlIHcudG9wRHJvcDphPXY7YnJlYWs7Y2FzZSB3LnRvcFRvdWNoQ2Fu
Y2VsOmNhc2Ugdy50b3BUb3VjaEVuZDpjYXNlIHcudG9wVG91Y2hNb3ZlOmNhc2Ugdy50b3BUb3Vj
aFN0YXJ0OmE9bTticmVhaztjYXNlIHcudG9wQW5pbWF0aW9uRW5kOmNhc2Ugdy50b3BBbmltYXRp
b25JdGVyYXRpb246Y2FzZSB3LnRvcEFuaW1hdGlvblN0YXJ0OmE9bDticmVhaztjYXNlIHcudG9w
VHJhbnNpdGlvbkVuZDphPXk7YnJlYWs7Y2FzZSB3LnRvcFNjcm9sbDphPWc7YnJlYWs7Y2FzZSB3
LnRvcFdoZWVsOmE9YjticmVhaztjYXNlIHcudG9wQ29weTpjYXNlIHcudG9wQ3V0OmNhc2Ugdy50
b3BQYXN0ZTphPWN9YT92b2lkIDA6bygiODYiLGUpO3ZhciBzPWEuZ2V0UG9vbGVkKGksdCxuLHIp
O3JldHVybiB1LmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMocyksc30sZGlkUHV0TGlzdGVu
ZXI6ZnVuY3Rpb24oZSx0LG4pe2lmKHQ9PT1PKXt2YXIgbz1yKGUpLGk9cy5nZXROb2RlRnJvbUlu
c3RhbmNlKGUpO1Nbb118fChTW29dPWEubGlzdGVuKGksImNsaWNrIixfKSl9fSx3aWxsRGVsZXRl
TGlzdGVuZXI6ZnVuY3Rpb24oZSx0KXtpZih0PT09Tyl7dmFyIG49cihlKTtTW25dLnJlbW92ZSgp
LGRlbGV0ZSBTW25dfX19O2UuZXhwb3J0cz1NfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPW4o
MTMpLGk9e2FuaW1hdGlvbk5hbWU6bnVsbCxlbGFwc2VkVGltZTpudWxsLHBzZXVkb0VsZW1lbnQ6
bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixy
KX12YXIgbz1uKDEzKSxpPXtjbGlwYm9hcmREYXRhOmZ1bmN0aW9uKGUpe3JldHVybiJjbGlwYm9h
cmREYXRhImluIGU/ZS5jbGlwYm9hcmREYXRhOndpbmRvdy5jbGlwYm9hcmREYXRhfX07by5hdWdt
ZW50Q2xhc3MocixpKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijtm
dW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDEz
KSxpPXtkYXRhOm51bGx9O28uYXVnbWVudENsYXNzKHIsaSksZS5leHBvcnRzPXJ9LGZ1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRo
aXMsZSx0LG4scil9dmFyIG89bigyOSksaT17ZGF0YVRyYW5zZmVyOm51bGx9O28uYXVnbWVudENs
YXNzKHIsaSksZS5leHBvcnRzPXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89bigyNCksaT17
cmVsYXRlZFRhcmdldDpudWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkpLGUuZXhwb3J0cz1yfSxmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2Fs
bCh0aGlzLGUsdCxuLHIpfXZhciBvPW4oMTMpLGk9e2RhdGE6bnVsbH07by5hdWdtZW50Q2xhc3Mo
cixpKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1uKDI0KSxpPW4oNTMp
LGE9bigxOTYpLHU9big1NCkscz17a2V5OmEsbG9jYXRpb246bnVsbCxjdHJsS2V5Om51bGwsc2hp
ZnRLZXk6bnVsbCxhbHRLZXk6bnVsbCxtZXRhS2V5Om51bGwscmVwZWF0Om51bGwsbG9jYWxlOm51
bGwsZ2V0TW9kaWZpZXJTdGF0ZTp1LGNoYXJDb2RlOmZ1bmN0aW9uKGUpe3JldHVybiJrZXlwcmVz
cyI9PT1lLnR5cGU/aShlKTowfSxrZXlDb2RlOmZ1bmN0aW9uKGUpe3JldHVybiJrZXlkb3duIj09
PWUudHlwZXx8ImtleXVwIj09PWUudHlwZT9lLmtleUNvZGU6MH0sd2hpY2g6ZnVuY3Rpb24oZSl7
cmV0dXJuImtleXByZXNzIj09PWUudHlwZT9pKGUpOiJrZXlkb3duIj09PWUudHlwZXx8ImtleXVw
Ij09PWUudHlwZT9lLmtleUNvZGU6MH19O28uYXVnbWVudENsYXNzKHIscyksZS5leHBvcnRzPXJ9
LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4g
by5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89bigyNCksaT1uKDU0KSxhPXt0b3VjaGVzOm51bGws
dGFyZ2V0VG91Y2hlczpudWxsLGNoYW5nZWRUb3VjaGVzOm51bGwsYWx0S2V5Om51bGwsbWV0YUtl
eTpudWxsLGN0cmxLZXk6bnVsbCxzaGlmdEtleTpudWxsLGdldE1vZGlmaWVyU3RhdGU6aX07by5h
dWdtZW50Q2xhc3MocixhKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1u
KDEzKSxpPXtwcm9wZXJ0eU5hbWU6bnVsbCxlbGFwc2VkVGltZTpudWxsLHBzZXVkb0VsZW1lbnQ6
bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSxlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixy
KX12YXIgbz1uKDI5KSxpPXtkZWx0YVg6ZnVuY3Rpb24oZSl7cmV0dXJuImRlbHRhWCJpbiBlP2Uu
ZGVsdGFYOiJ3aGVlbERlbHRhWCJpbiBlPy1lLndoZWVsRGVsdGFYOjB9LGRlbHRhWTpmdW5jdGlv
bihlKXtyZXR1cm4iZGVsdGFZImluIGU/ZS5kZWx0YVk6IndoZWVsRGVsdGFZImluIGU/LWUud2hl
ZWxEZWx0YVk6IndoZWVsRGVsdGEiaW4gZT8tZS53aGVlbERlbHRhOjB9LGRlbHRhWjpudWxsLGRl
bHRhTW9kZTpudWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkpLGUuZXhwb3J0cz1yfSxmdW5jdGlvbihl
LHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUpe2Zvcih2YXIgdD0xLG49MCxvPTAsaT1lLmxl
bmd0aCxhPWkmLTQ7bzxhOyl7Zm9yKHZhciB1PU1hdGgubWluKG8rNDA5NixhKTtvPHU7bys9NClu
Kz0odCs9ZS5jaGFyQ29kZUF0KG8pKSsodCs9ZS5jaGFyQ29kZUF0KG8rMSkpKyh0Kz1lLmNoYXJD
b2RlQXQobysyKSkrKHQrPWUuY2hhckNvZGVBdChvKzMpKTt0JT1yLG4lPXJ9Zm9yKDtvPGk7bysr
KW4rPXQrPWUuY2hhckNvZGVBdChvKTtyZXR1cm4gdCU9cixuJT1yLHR8bjw8MTZ9dmFyIHI9NjU1
MjE7ZS5leHBvcnRzPW59LGZ1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24odCl7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSx0LG4scixzLGwpe2Zvcih2YXIgYyBpbiBlKWlmKGUuaGFzT3duUHJvcGVy
dHkoYykpe3ZhciBwO3RyeXsiZnVuY3Rpb24iIT10eXBlb2YgZVtjXT9vKCI4NCIscnx8IlJlYWN0
IGNsYXNzIixpW25dLGMpOnZvaWQgMCxwPWVbY10odCxjLHIsbixudWxsLGEpfWNhdGNoKGQpe3A9
ZH1pZihwIGluc3RhbmNlb2YgRXJyb3ImJiEocC5tZXNzYWdlIGluIHUpKXt1W3AubWVzc2FnZV09
ITB9fX12YXIgbz1uKDIpLGk9big0OCksYT1uKDUwKTtuKDEpLG4oMyk7InVuZGVmaW5lZCIhPXR5
cGVvZiB0JiZ0LmVudiwxO3ZhciB1PXt9O2UuZXhwb3J0cz1yfSkuY2FsbCh0LG4oMzYpKX0sZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXt2YXIgcj1udWxsPT10
fHwiYm9vbGVhbiI9PXR5cGVvZiB0fHwiIj09PXQ7aWYocilyZXR1cm4iIjt2YXIgbz1pc05hTih0
KTtpZihvfHwwPT09dHx8aS5oYXNPd25Qcm9wZXJ0eShlKSYmaVtlXSlyZXR1cm4iIit0O2lmKCJz
dHJpbmciPT10eXBlb2YgdCl7dD10LnRyaW0oKX1yZXR1cm4gdCsicHgifXZhciBvPW4oNzApLGk9
KG4oMyksby5pc1VuaXRsZXNzTnVtYmVyKTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKG51bGw9PWUpcmV0dXJuIG51bGw7aWYoMT09PWUu
bm9kZVR5cGUpcmV0dXJuIGU7dmFyIHQ9YS5nZXQoZSk7cmV0dXJuIHQ/KHQ9dSh0KSx0P2kuZ2V0
Tm9kZUZyb21JbnN0YW5jZSh0KTpudWxsKTp2b2lkKCJmdW5jdGlvbiI9PXR5cGVvZiBlLnJlbmRl
cj9vKCI0NCIpOm8oIjQ1IixPYmplY3Qua2V5cyhlKSkpfXZhciBvPW4oMiksaT0obigxNiksbig1
KSksYT1uKDIzKSx1PW4oOTApO24oMSksbigzKTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4p
eyhmdW5jdGlvbih0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtpZihlJiYib2Jq
ZWN0Ij09dHlwZW9mIGUpe3ZhciBvPWUsaT12b2lkIDA9PT1vW25dO2kmJm51bGwhPXQmJihvW25d
PXQpfX1mdW5jdGlvbiBvKGUsdCl7aWYobnVsbD09ZSlyZXR1cm4gZTt2YXIgbj17fTtyZXR1cm4g
aShlLHIsbiksbn12YXIgaT0obig0MSksbig1OCkpO24oMyk7InVuZGVmaW5lZCIhPXR5cGVvZiB0
JiZ0LmVudiwxLGUuZXhwb3J0cz1vfSkuY2FsbCh0LG4oMzYpKX0sZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKGUua2V5KXt2YXIgdD1pW2Uua2V5XXx8ZS5rZXk7
aWYoIlVuaWRlbnRpZmllZCIhPT10KXJldHVybiB0fWlmKCJrZXlwcmVzcyI9PT1lLnR5cGUpe3Zh
ciBuPW8oZSk7cmV0dXJuIDEzPT09bj8iRW50ZXIiOlN0cmluZy5mcm9tQ2hhckNvZGUobil9cmV0
dXJuImtleWRvd24iPT09ZS50eXBlfHwia2V5dXAiPT09ZS50eXBlP2FbZS5rZXlDb2RlXXx8IlVu
aWRlbnRpZmllZCI6IiJ9dmFyIG89big1MyksaT17RXNjOiJFc2NhcGUiLFNwYWNlYmFyOiIgIixM
ZWZ0OiJBcnJvd0xlZnQiLFVwOiJBcnJvd1VwIixSaWdodDoiQXJyb3dSaWdodCIsRG93bjoiQXJy
b3dEb3duIixEZWw6IkRlbGV0ZSIsV2luOiJPUyIsTWVudToiQ29udGV4dE1lbnUiLEFwcHM6IkNv
bnRleHRNZW51IixTY3JvbGw6IlNjcm9sbExvY2siLE1velByaW50YWJsZUtleToiVW5pZGVudGlm
aWVkIn0sYT17ODoiQmFja3NwYWNlIiw5OiJUYWIiLDEyOiJDbGVhciIsMTM6IkVudGVyIiwxNjoi
U2hpZnQiLDE3OiJDb250cm9sIiwxODoiQWx0IiwxOToiUGF1c2UiLDIwOiJDYXBzTG9jayIsMjc6
IkVzY2FwZSIsMzI6IiAiLDMzOiJQYWdlVXAiLDM0OiJQYWdlRG93biIsMzU6IkVuZCIsMzY6Ikhv
bWUiLDM3OiJBcnJvd0xlZnQiLDM4OiJBcnJvd1VwIiwzOToiQXJyb3dSaWdodCIsNDA6IkFycm93
RG93biIsNDU6Ikluc2VydCIsNDY6IkRlbGV0ZSIsMTEyOiJGMSIsMTEzOiJGMiIsMTE0OiJGMyIs
MTE1OiJGNCIsMTE2OiJGNSIsMTE3OiJGNiIsMTE4OiJGNyIsMTE5OiJGOCIsMTIwOiJGOSIsMTIx
OiJGMTAiLDEyMjoiRjExIiwxMjM6IkYxMiIsMTQ0OiJOdW1Mb2NrIiwxNDU6IlNjcm9sbExvY2si
LDIyNDoiTWV0YSJ9O2UuZXhwb3J0cz1yfSxmdW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiBuKGUpe2Zvcig7ZSYmZS5maXJzdENoaWxkOyllPWUuZmlyc3RDaGlsZDtyZXR1cm4gZX1m
dW5jdGlvbiByKGUpe2Zvcig7ZTspe2lmKGUubmV4dFNpYmxpbmcpcmV0dXJuIGUubmV4dFNpYmxp
bmc7ZT1lLnBhcmVudE5vZGV9fWZ1bmN0aW9uIG8oZSx0KXtmb3IodmFyIG89bihlKSxpPTAsYT0w
O287KXtpZigzPT09by5ub2RlVHlwZSl7aWYoYT1pK28udGV4dENvbnRlbnQubGVuZ3RoLGk8PXQm
JmE+PXQpcmV0dXJue25vZGU6byxvZmZzZXQ6dC1pfTtpPWF9bz1uKHIobykpfX1lLmV4cG9ydHM9
b30sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7dmFyIG49e307
cmV0dXJuIG5bZS50b0xvd2VyQ2FzZSgpXT10LnRvTG93ZXJDYXNlKCksblsiV2Via2l0IitlXT0i
d2Via2l0Iit0LG5bIk1veiIrZV09Im1veiIrdCxuWyJtcyIrZV09Ik1TIit0LG5bIk8iK2VdPSJv
Iit0LnRvTG93ZXJDYXNlKCksbn1mdW5jdGlvbiBvKGUpe2lmKHVbZV0pcmV0dXJuIHVbZV07aWYo
IWFbZV0pcmV0dXJuIGU7dmFyIHQ9YVtlXTtmb3IodmFyIG4gaW4gdClpZih0Lmhhc093blByb3Bl
cnR5KG4pJiZuIGluIHMpcmV0dXJuIHVbZV09dFtuXTtyZXR1cm4iIn12YXIgaT1uKDYpLGE9e2Fu
aW1hdGlvbmVuZDpyKCJBbmltYXRpb24iLCJBbmltYXRpb25FbmQiKSxhbmltYXRpb25pdGVyYXRp
b246cigiQW5pbWF0aW9uIiwiQW5pbWF0aW9uSXRlcmF0aW9uIiksYW5pbWF0aW9uc3RhcnQ6cigi
QW5pbWF0aW9uIiwiQW5pbWF0aW9uU3RhcnQiKSx0cmFuc2l0aW9uZW5kOnIoIlRyYW5zaXRpb24i
LCJUcmFuc2l0aW9uRW5kIil9LHU9e30scz17fTtpLmNhblVzZURPTSYmKHM9ZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgiZGl2Iikuc3R5bGUsIkFuaW1hdGlvbkV2ZW50ImluIHdpbmRvd3x8KGRlbGV0
ZSBhLmFuaW1hdGlvbmVuZC5hbmltYXRpb24sZGVsZXRlIGEuYW5pbWF0aW9uaXRlcmF0aW9uLmFu
aW1hdGlvbixkZWxldGUgYS5hbmltYXRpb25zdGFydC5hbmltYXRpb24pLCJUcmFuc2l0aW9uRXZl
bnQiaW4gd2luZG93fHxkZWxldGUgYS50cmFuc2l0aW9uZW5kLnRyYW5zaXRpb24pLGUuZXhwb3J0
cz1vfSxmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGku
aXNWYWxpZEVsZW1lbnQoZSk/dm9pZCAwOm8oIjE0MyIpLGV9dmFyIG89bigyKSxpPW4oOSk7bigx
KTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUp
e3JldHVybiciJytvKGUpKyciJ312YXIgbz1uKDMwKTtlLmV4cG9ydHM9cn0sZnVuY3Rpb24oZSx0
LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1uKDgxKTtlLmV4cG9ydHM9ci5yZW5kZXJTdWJ0cmVlSW50
b0NvbnRhaW5lcn0sZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3Jl
dHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVsdDplfX1mdW5jdGlvbiBvKCl7Zm9yKHZhciBl
PWFyZ3VtZW50cy5sZW5ndGgsdD1BcnJheShlKSxuPTA7bjxlO24rKyl0W25dPWFyZ3VtZW50c1tu
XTtyZXR1cm4gZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKG4scixvKXt2YXIgYT1lKG4scixv
KSxzPWEuZGlzcGF0Y2gsbD1bXSxjPXtnZXRTdGF0ZTphLmdldFN0YXRlLGRpc3BhdGNoOmZ1bmN0
aW9uKGUpe3JldHVybiBzKGUpfX07cmV0dXJuIGw9dC5tYXAoZnVuY3Rpb24oZSl7cmV0dXJuIGUo
Yyl9KSxzPXUuZGVmYXVsdC5hcHBseSh2b2lkIDAsbCkoYS5kaXNwYXRjaCksaSh7fSxhLHtkaXNw
YXRjaDpzfSl9fX10Ll9fZXNNb2R1bGU9ITA7dmFyIGk9T2JqZWN0LmFzc2lnbnx8ZnVuY3Rpb24o
ZSl7Zm9yKHZhciB0PTE7dDxhcmd1bWVudHMubGVuZ3RoO3QrKyl7dmFyIG49YXJndW1lbnRzW3Rd
O2Zvcih2YXIgciBpbiBuKU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChuLHIp
JiYoZVtyXT1uW3JdKX1yZXR1cm4gZX07dC5kZWZhdWx0PW87dmFyIGE9big5NiksdT1yKGEpfSxm
dW5jdGlvbihlLHQpeyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBuKGUsdCl7cmV0dXJuIGZ1bmN0aW9u
KCl7cmV0dXJuIHQoZS5hcHBseSh2b2lkIDAsYXJndW1lbnRzKSl9fWZ1bmN0aW9uIHIoZSx0KXtp
ZigiZnVuY3Rpb24iPT10eXBlb2YgZSlyZXR1cm4gbihlLHQpO2lmKCJvYmplY3QiIT10eXBlb2Yg
ZXx8bnVsbD09PWUpdGhyb3cgbmV3IEVycm9yKCJiaW5kQWN0aW9uQ3JlYXRvcnMgZXhwZWN0ZWQg
YW4gb2JqZWN0IG9yIGEgZnVuY3Rpb24sIGluc3RlYWQgcmVjZWl2ZWQgIisobnVsbD09PWU/Im51
bGwiOnR5cGVvZiBlKSsnLiBEaWQgeW91IHdyaXRlICJpbXBvcnQgQWN0aW9uQ3JlYXRvcnMgZnJv
bSIgaW5zdGVhZCBvZiAiaW1wb3J0ICogYXMgQWN0aW9uQ3JlYXRvcnMgZnJvbSI/Jyk7Zm9yKHZh
ciByPU9iamVjdC5rZXlzKGUpLG89e30saT0wO2k8ci5sZW5ndGg7aSsrKXt2YXIgYT1yW2ldLHU9
ZVthXTsiZnVuY3Rpb24iPT10eXBlb2YgdSYmKG9bYV09bih1LHQpKX1yZXR1cm4gb310Ll9fZXNN
b2R1bGU9ITAsdC5kZWZhdWx0PXJ9LGZ1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcihlKXtyZXR1cm4gZSYmZS5fX2VzTW9kdWxlP2U6e2RlZmF1bHQ6ZX19ZnVuY3Rpb24gbyhl
LHQpe3ZhciBuPXQmJnQudHlwZSxyPW4mJiciJytuLnRvU3RyaW5nKCkrJyInfHwiYW4gYWN0aW9u
IjtyZXR1cm4iR2l2ZW4gYWN0aW9uICIrcisnLCByZWR1Y2VyICInK2UrJyIgcmV0dXJuZWQgdW5k
ZWZpbmVkLiBUbyBpZ25vcmUgYW4gYWN0aW9uLCB5b3UgbXVzdCBleHBsaWNpdGx5IHJldHVybiB0
aGUgcHJldmlvdXMgc3RhdGUuJ31mdW5jdGlvbiBpKGUpe09iamVjdC5rZXlzKGUpLmZvckVhY2go
ZnVuY3Rpb24odCl7dmFyIG49ZVt0XSxyPW4odm9pZCAwLHt0eXBlOnUuQWN0aW9uVHlwZXMuSU5J
VH0pO2lmKCJ1bmRlZmluZWQiPT10eXBlb2Ygcil0aHJvdyBuZXcgRXJyb3IoJ1JlZHVjZXIgIicr
dCsnIiByZXR1cm5lZCB1bmRlZmluZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uLiBJZiB0aGUgc3Rh
dGUgcGFzc2VkIHRvIHRoZSByZWR1Y2VyIGlzIHVuZGVmaW5lZCwgeW91IG11c3QgZXhwbGljaXRs
eSByZXR1cm4gdGhlIGluaXRpYWwgc3RhdGUuIFRoZSBpbml0aWFsIHN0YXRlIG1heSBub3QgYmUg
dW5kZWZpbmVkLicpO3ZhciBvPSJAQHJlZHV4L1BST0JFX1VOS05PV05fQUNUSU9OXyIrTWF0aC5y
YW5kb20oKS50b1N0cmluZygzNikuc3Vic3RyaW5nKDcpLnNwbGl0KCIiKS5qb2luKCIuIik7aWYo
InVuZGVmaW5lZCI9PXR5cGVvZiBuKHZvaWQgMCx7dHlwZTpvfSkpdGhyb3cgbmV3IEVycm9yKCdS
ZWR1Y2VyICInK3QrJyIgcmV0dXJuZWQgdW5kZWZpbmVkIHdoZW4gcHJvYmVkIHdpdGggYSByYW5k
b20gdHlwZS4gJysoIkRvbid0IHRyeSB0byBoYW5kbGUgIit1LkFjdGlvblR5cGVzLklOSVQrJyBv
ciBvdGhlciBhY3Rpb25zIGluICJyZWR1eC8qIiAnKSsibmFtZXNwYWNlLiBUaGV5IGFyZSBjb25z
aWRlcmVkIHByaXZhdGUuIEluc3RlYWQsIHlvdSBtdXN0IHJldHVybiB0aGUgY3VycmVudCBzdGF0
ZSBmb3IgYW55IHVua25vd24gYWN0aW9ucywgdW5sZXNzIGl0IGlzIHVuZGVmaW5lZCwgaW4gd2hp
Y2ggY2FzZSB5b3UgbXVzdCByZXR1cm4gdGhlIGluaXRpYWwgc3RhdGUsIHJlZ2FyZGxlc3Mgb2Yg
dGhlIGFjdGlvbiB0eXBlLiBUaGUgaW5pdGlhbCBzdGF0ZSBtYXkgbm90IGJlIHVuZGVmaW5lZC4i
KX0pfWZ1bmN0aW9uIGEoZSl7Zm9yKHZhciB0PU9iamVjdC5rZXlzKGUpLG49e30scj0wO3I8dC5s
ZW5ndGg7cisrKXt2YXIgYT10W3JdOyJmdW5jdGlvbiI9PXR5cGVvZiBlW2FdJiYoblthXT1lW2Fd
KX12YXIgdSxzPU9iamVjdC5rZXlzKG4pO3RyeXtpKG4pfWNhdGNoKGwpe3U9bH1yZXR1cm4gZnVu
Y3Rpb24oKXt2YXIgZT1hcmd1bWVudHMubGVuZ3RoPD0wfHx2b2lkIDA9PT1hcmd1bWVudHNbMF0/
e306YXJndW1lbnRzWzBdLHQ9YXJndW1lbnRzWzFdO2lmKHUpdGhyb3cgdTtmb3IodmFyIHI9ITEs
aT17fSxhPTA7YTxzLmxlbmd0aDthKyspe3ZhciBsPXNbYV0sYz1uW2xdLHA9ZVtsXSxkPWMocCx0
KTtpZigidW5kZWZpbmVkIj09dHlwZW9mIGQpe3ZhciBmPW8obCx0KTt0aHJvdyBuZXcgRXJyb3Io
Zil9aVtsXT1kLHI9cnx8ZCE9PXB9cmV0dXJuIHI/aTplfX10Ll9fZXNNb2R1bGU9ITAsdC5kZWZh
dWx0PWE7dmFyIHU9big5Nykscz1uKDM1KSxsPShyKHMpLG4oOTgpKTtyKGwpfSxmdW5jdGlvbihl
LHQsbil7ZS5leHBvcnRzPW4oMjA2KX0sZnVuY3Rpb24oZSx0LG4peyhmdW5jdGlvbihlLHIpeyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiBvKGUpe3JldHVybiBlJiZlLl9fZXNNb2R1bGU/ZTp7ZGVmYXVs
dDplfX1PYmplY3QuZGVmaW5lUHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSk7dmFy
IGk9bigyMDcpLGE9byhpKSx1PWU7dT0idW5kZWZpbmVkIiE9dHlwZW9mIHNlbGY/c2VsZjoidW5k
ZWZpbmVkIiE9dHlwZW9mIHdpbmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiByP3I6RnVu
Y3Rpb24oInJldHVybiB0aGlzIikoKTt2YXIgcz0oMCxhLmRlZmF1bHQpKHUpO3QuZGVmYXVsdD1z
fSkuY2FsbCh0LG4oMTM2KShlKSxmdW5jdGlvbigpe3JldHVybiB0aGlzfSgpKX0sZnVuY3Rpb24o
ZSx0KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gbihlKXt2YXIgdCxuPWUuU3ltYm9sO3JldHVybiJm
dW5jdGlvbiI9PXR5cGVvZiBuP24ub2JzZXJ2YWJsZT90PW4ub2JzZXJ2YWJsZToodD1uKCJvYnNl
cnZhYmxlIiksbi5vYnNlcnZhYmxlPXQpOnQ9IkBAb2JzZXJ2YWJsZSIsdH1PYmplY3QuZGVmaW5l
UHJvcGVydHkodCwiX19lc01vZHVsZSIse3ZhbHVlOiEwfSksdC5kZWZhdWx0PW59XSkpOwotLy8j
IHNvdXJjZU1hcHBpbmdVUkw9bWFpbi45NDYyNjlmZi5qcy5tYXAKXCBObyBuZXdsaW5lIGF0IGVu
ZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291
cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9wYWNrYWdlLWxv
Y2suanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3BhY2thZ2UtbG9jay5qc29uCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmMxMjU1MzY3M2I4MWZhZTA0OGE2NTdhZmFlNTU2MjU2ZGZhMzZmZTUKLS0tIC9kZXYv
bnVsbAorKysgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9wYWNrYWdlLWxvY2suanNvbgpAQCAt
MCwwICsxLDk2MjcgQEAKK3sKKyAgInJlcXVpcmVzIjogdHJ1ZSwKKyAgImxvY2tmaWxlVmVyc2lv
biI6IDEsCisgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgImFzYXAiOiB7CisgICAgICAidmVyc2lv
biI6ICIyLjAuNiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvYXNhcC8tL2FzYXAtMi4wLjYudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS01UU5I
WVIxK2FRbERJSXU5cit2THd2dUdiVVk9IgorICAgIH0sCisgICAgImJvb2xiYXNlIjogeworICAg
ICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2Jvb2xiYXNlLy0vYm9vbGJhc2UtMS4wLjAudGd6IiwKKyAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS1hTi8xKytZTVVlczNjbDZwNCsweERjd2VkMjQ9IiwKKyAgICAgICJkZXYi
OiB0cnVlCisgICAgfSwKKyAgICAiY2hlZXJpbyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMjIu
MCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY2hlZXJp
by8tL2NoZWVyaW8tMC4yMi4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtcWJxb1lL
UDV0WldtdUJzYWhvY3hJZTA2SnA0PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgImNzcy1zZWxlY3QiOiAiMS4yLjAiLAorICAgICAgICAiZG9tLXNl
cmlhbGl6ZXIiOiAiMC4xLjAiLAorICAgICAgICAiZW50aXRpZXMiOiAiMS4xLjEiLAorICAgICAg
ICAiaHRtbHBhcnNlcjIiOiAiMy45LjIiLAorICAgICAgICAibG9kYXNoLmFzc2lnbmluIjogIjQu
Mi4wIiwKKyAgICAgICAgImxvZGFzaC5iaW5kIjogIjQuMi4xIiwKKyAgICAgICAgImxvZGFzaC5k
ZWZhdWx0cyI6ICI0LjIuMCIsCisgICAgICAgICJsb2Rhc2guZmlsdGVyIjogIjQuNi4wIiwKKyAg
ICAgICAgImxvZGFzaC5mbGF0dGVuIjogIjQuNC4wIiwKKyAgICAgICAgImxvZGFzaC5mb3JlYWNo
IjogIjQuNS4wIiwKKyAgICAgICAgImxvZGFzaC5tYXAiOiAiNC42LjAiLAorICAgICAgICAibG9k
YXNoLm1lcmdlIjogIjQuNi4wIiwKKyAgICAgICAgImxvZGFzaC5waWNrIjogIjQuNC4wIiwKKyAg
ICAgICAgImxvZGFzaC5yZWR1Y2UiOiAiNC42LjAiLAorICAgICAgICAibG9kYXNoLnJlamVjdCI6
ICI0LjYuMCIsCisgICAgICAgICJsb2Rhc2guc29tZSI6ICI0LjYuMCIKKyAgICAgIH0KKyAgICB9
LAorICAgICJjbGFzc25hbWVzIjogeworICAgICAgInZlcnNpb24iOiAiMi4yLjUiLAorICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NsYXNzbmFtZXMvLS9jbGFz
c25hbWVzLTIuMi41LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtK3pnQjFGTkdka252
TmdQSDFob0N2UktiM20wPSIKKyAgICB9LAorICAgICJjb3JlLWpzIjogeworICAgICAgInZlcnNp
b24iOiAiMS4yLjciLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL2NvcmUtanMvLS9jb3JlLWpzLTEuMi43LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtWlNLVXdVWlIyeWo2azcwdFgvS1lPazhJeGpZPSIKKyAgICB9LAorICAgICJjb3JlLXV0aWwt
aXMiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY29yZS11dGlsLWlzLy0vY29yZS11dGlsLWlzLTEuMC4y
LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtdGYxVUlncWl2RnExZXF0eFFNbEFkVVVE
d2FjPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImNyZWF0ZS1yZWFjdC1jbGFz
cyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjE1LjYuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY3JlYXRlLXJlYWN0LWNsYXNzLy0vY3JlYXRlLXJlYWN0
LWNsYXNzLTE1LjYuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXEwU0VsOEpsWnVI
aWxCUG9neUI5VjgvbnZ0UT0iLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiZmJqcyI6
ICIwLjguMTQiLAorICAgICAgICAibG9vc2UtZW52aWZ5IjogIjEuMy4xIiwKKyAgICAgICAgIm9i
amVjdC1hc3NpZ24iOiAiNC4xLjEiCisgICAgICB9CisgICAgfSwKKyAgICAiY3NzLXNlbGVjdCI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jc3Mtc2VsZWN0Ly0vY3NzLXNlbGVjdC0xLjIuMC50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLUt6b1JCVG5GTlY4YzJOTVVZajZIQ3hJZXlGZz0iLAor
ICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJib29sYmFz
ZSI6ICIxLjAuMCIsCisgICAgICAgICJjc3Mtd2hhdCI6ICIyLjEuMCIsCisgICAgICAgICJkb211
dGlscyI6ICIxLjUuMSIsCisgICAgICAgICJudGgtY2hlY2siOiAiMS4wLjEiCisgICAgICB9Cisg
ICAgfSwKKyAgICAiY3NzLXdoYXQiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjEuMCIsCisgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY3NzLXdoYXQvLS9jc3Mt
d2hhdC0yLjEuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWxHZlFNc09NK3UrNTh0
ZVZBU1V3WXZoL29iMD0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJkZWZpbmUt
cHJvcGVydGllcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMS4yIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9kZWZpbmUtcHJvcGVydGllcy8tL2RlZmlu
ZS1wcm9wZXJ0aWVzLTEuMS4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtZzZjL0wr
cFdtSmo3YzNHVHlQaHp5dmJVWEpRPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgImZvcmVhY2giOiAiMi4wLjUiLAorICAgICAgICAib2JqZWN0LWtl
eXMiOiAiMS4wLjExIgorICAgICAgfQorICAgIH0sCisgICAgImRvbS1zZXJpYWxpemVyIjogewor
ICAgICAgInZlcnNpb24iOiAiMC4xLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2RvbS1zZXJpYWxpemVyLy0vZG9tLXNlcmlhbGl6ZXItMC4xLjAudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1CenhwZFViT0I0RE9JNzVLS09LVDVBdkRESUk9
IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiZG9t
ZWxlbWVudHR5cGUiOiAiMS4xLjMiLAorICAgICAgICAiZW50aXRpZXMiOiAiMS4xLjEiCisgICAg
ICB9LAorICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgImRvbWVsZW1lbnR0eXBlIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4zIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZG9tZWxlbWVudHR5cGUvLS9kb21lbGVtZW50dHlw
ZS0xLjEuMy50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS12U2gzUGlaQ2lCcnNV
VlJKSkNtY1hOZ2lHRnM9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9CisgICAg
ICB9CisgICAgfSwKKyAgICAiZG9tZWxlbWVudHR5cGUiOiB7CisgICAgICAidmVyc2lvbiI6ICIx
LjMuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZG9t
ZWxlbWVudHR5cGUvLS9kb21lbGVtZW50dHlwZS0xLjMuMC50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLXNYcnRndWlyV2VVdDJjR2JGMWJnL0JoeUJNST0iLAorICAgICAgImRldiI6IHRy
dWUKKyAgICB9LAorICAgICJkb21oYW5kbGVyIjogeworICAgICAgInZlcnNpb24iOiAiMi40LjEi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2RvbWhhbmRs
ZXIvLS9kb21oYW5kbGVyLTIuNC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtaVM1
SEFBcVp2bFc3ODNkUC9xQldIWWg1d2xrPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJy
ZXF1aXJlcyI6IHsKKyAgICAgICAgImRvbWVsZW1lbnR0eXBlIjogIjEuMy4wIgorICAgICAgfQor
ICAgIH0sCisgICAgImRvbXV0aWxzIjogeworICAgICAgInZlcnNpb24iOiAiMS41LjEiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2RvbXV0aWxzLy0vZG9t
dXRpbHMtMS41LjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0zTmhJaWliMVk5WVFl
ZVNNbjN0K01qYzJnczg9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAiZG9tLXNlcmlhbGl6ZXIiOiAiMC4xLjAiLAorICAgICAgICAiZG9tZWxlbWVu
dHR5cGUiOiAiMS4zLjAiCisgICAgICB9CisgICAgfSwKKyAgICAiZW5jb2RpbmciOiB7CisgICAg
ICAidmVyc2lvbiI6ICIwLjEuMTIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2VuY29kaW5nLy0vZW5jb2RpbmctMC4xLjEyLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtVTR0bTgrNWl6UnExSHNNamdwMGZsSURIUytzPSIsCisgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICJpY29udi1saXRlIjogIjAuNC4xOCIKKyAgICAgIH0KKyAgICB9
LAorICAgICJlbnRpdGllcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMS4xIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lbnRpdGllcy8tL2VudGl0aWVz
LTEuMS4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtYmx3dENsWWh0ZHJhN08rQXVR
N2Z0YzEzY3ZBPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImVuenltZSI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjIuOS4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9lbnp5bWUvLS9lbnp5bWUtMi45LjEudGd6IiwKKyAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS1COVhPYVJKQkpBKzRGNzhzU3hqVzVUQWtEZlk9IiwKKyAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiY2hlZXJpbyI6ICIwLjIyLjAi
LAorICAgICAgICAiZnVuY3Rpb24ucHJvdG90eXBlLm5hbWUiOiAiMS4wLjMiLAorICAgICAgICAi
aXMtc3Vic2V0IjogIjAuMS4xIiwKKyAgICAgICAgImxvZGFzaCI6ICI0LjE3LjQiLAorICAgICAg
ICAib2JqZWN0LWlzIjogIjEuMC4xIiwKKyAgICAgICAgIm9iamVjdC5hc3NpZ24iOiAiNC4wLjQi
LAorICAgICAgICAib2JqZWN0LmVudHJpZXMiOiAiMS4wLjQiLAorICAgICAgICAib2JqZWN0LnZh
bHVlcyI6ICIxLjAuNCIsCisgICAgICAgICJwcm9wLXR5cGVzIjogIjE1LjUuMTAiLAorICAgICAg
ICAidXVpZCI6ICIzLjEuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJlcy1hYnN0cmFjdCI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjEuOC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9lcy1hYnN0cmFjdC8tL2VzLWFic3RyYWN0LTEuOC4wLnRneiIsCisg
ICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1DZjkvaDVNclh0RXhNMjBnU1M1NVlGckdLQ3lQclJC
aklWQnRWeXk4dm1sc0RmZTBOUEtNV2o2NXRQTGd6eWZQdWFwV3hoNXdocFhDdFc0K0FXNW1SZz09
IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiZXMt
dG8tcHJpbWl0aXZlIjogIjEuMS4xIiwKKyAgICAgICAgImZ1bmN0aW9uLWJpbmQiOiAiMS4xLjAi
LAorICAgICAgICAiaGFzIjogIjEuMC4xIiwKKyAgICAgICAgImlzLWNhbGxhYmxlIjogIjEuMS4z
IiwKKyAgICAgICAgImlzLXJlZ2V4IjogIjEuMC40IgorICAgICAgfQorICAgIH0sCisgICAgImVz
LXRvLXByaW1pdGl2ZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMS4xIiwKKyAgICAgICJyZXNv
bHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lcy10by1wcmltaXRpdmUvLS9lcy10
by1wcmltaXRpdmUtMS4xLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1SVFZTU0tp
SmVRTkxaNUxobTdnZkszbDEzUTA9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAiaXMtY2FsbGFibGUiOiAiMS4xLjMiLAorICAgICAgICAiaXMtZGF0
ZS1vYmplY3QiOiAiMS4wLjEiLAorICAgICAgICAiaXMtc3ltYm9sIjogIjEuMC4xIgorICAgICAg
fQorICAgIH0sCisgICAgImZianMiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjguMTQiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2ZianMvLS9mYmpzLTAu
OC4xNC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTBkdml2aVZNTmFrZUNmTWZuTlVL
UUxLZzdSdz0iLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiY29yZS1qcyI6ICIxLjIu
NyIsCisgICAgICAgICJpc29tb3JwaGljLWZldGNoIjogIjIuMi4xIiwKKyAgICAgICAgImxvb3Nl
LWVudmlmeSI6ICIxLjMuMSIsCisgICAgICAgICJvYmplY3QtYXNzaWduIjogIjQuMS4xIiwKKyAg
ICAgICAgInByb21pc2UiOiAiNy4zLjEiLAorICAgICAgICAic2V0aW1tZWRpYXRlIjogIjEuMC41
IiwKKyAgICAgICAgInVhLXBhcnNlci1qcyI6ICIwLjcuMTQiCisgICAgICB9CisgICAgfSwKKyAg
ICAiZm9yZWFjaCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMC41IiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9mb3JlYWNoLy0vZm9yZWFjaC0yLjAuNS50
Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUMrNEFVQml1c21EUW82ODY1bGpkQVRic0c1
az0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJmc2V2ZW50cyI6IHsKKyAgICAg
ICJ2ZXJzaW9uIjogIjEuMC4xNCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvZnNldmVudHMvLS9mc2V2ZW50cy0xLjAuMTQudGd6IiwKKyAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS1WWTZNdzRaRDJPOUEva1VWaEliUTBsZFk3dVE9IiwKKyAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgIm5hbiI6ICIyLjYuMiIsCisgICAgICAgICJub2RlLXByZS1neXAiOiAiMC42LjI5Igor
ICAgICAgfSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJhYmJyZXYiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMS4wLjkiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAg
ICAgIH0sCisgICAgICAgICJhbnNpLXJlZ2V4IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIu
MC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUK
KyAgICAgICAgfSwKKyAgICAgICAgImFuc2ktc3R5bGVzIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjIuMi4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAi
YXByb2JhIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC40IiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFs
IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiYXJlLXdlLXRoZXJlLXlldCI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIxLjEuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImRlbGVnYXRlcyI6ICIxLjAuMCIsCisgICAg
ICAgICAgICAicmVhZGFibGUtc3RyZWFtIjogIjIuMS40IgorICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgImFzbjEiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4yLjMiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJhc3NlcnQtcGx1cyI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIwLjIuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAg
ICAgICAgfSwKKyAgICAgICAgImFzeW5jIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuNS4y
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisg
ICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiYXdzLXNpZ24y
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1
ZQorICAgICAgICB9LAorICAgICAgICAiYXdzNCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIx
LjQuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImJhbGFu
Y2VkLW1hdGNoIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNC4yIiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAg
ICAgImJsIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4yIiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFs
IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAicmVhZGFibGUt
c3RyZWFtIjogIjIuMC42IgorICAgICAgICAgIH0sCisgICAgICAgICAgImRlcGVuZGVuY2llcyI6
IHsKKyAgICAgICAgICAgICJyZWFkYWJsZS1zdHJlYW0iOiB7CisgICAgICAgICAgICAgICJ2ZXJz
aW9uIjogIjIuMC42IiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAg
ICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICJjb3JlLXV0aWwtaXMiOiAi
MS4wLjIiLAorICAgICAgICAgICAgICAgICJpbmhlcml0cyI6ICIyLjAuMSIsCisgICAgICAgICAg
ICAgICAgImlzYXJyYXkiOiAiMS4wLjAiLAorICAgICAgICAgICAgICAgICJwcm9jZXNzLW5leHRp
Y2stYXJncyI6ICIxLjAuNyIsCisgICAgICAgICAgICAgICAgInN0cmluZ19kZWNvZGVyIjogIjAu
MTAuMzEiLAorICAgICAgICAgICAgICAgICJ1dGlsLWRlcHJlY2F0ZSI6ICIxLjAuMiIKKyAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg
ICAgImJsb2NrLXN0cmVhbSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjAuOSIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJpbmhlcml0cyI6ICIyLjAuMSIKKyAgICAgICAg
ICB9CisgICAgICAgIH0sCisgICAgICAgICJib29tIjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjIuMTAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJob2VrIjogIjIuMTYu
MyIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJicmFjZS1leHBhbnNpb24iOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjUiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICAgICAiYmFsYW5jZWQtbWF0Y2giOiAiMC40LjIiLAorICAgICAgICAgICAgImNvbmNhdC1t
YXAiOiAiMC4wLjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYnVmZmVyLXNo
aW1zIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImNh
c2VsZXNzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMTEuMCIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25h
bCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImNoYWxrIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjEuMS4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICAgICAiYW5zaS1zdHlsZXMiOiAiMi4yLjEiLAorICAgICAgICAgICAg
ImVzY2FwZS1zdHJpbmctcmVnZXhwIjogIjEuMC41IiwKKyAgICAgICAgICAgICJoYXMtYW5zaSI6
ICIyLjAuMCIsCisgICAgICAgICAgICAic3RyaXAtYW5zaSI6ICIzLjAuMSIsCisgICAgICAgICAg
ICAic3VwcG9ydHMtY29sb3IiOiAiMi4wLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAiY29kZS1wb2ludC1hdCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJudW1iZXItaXMtbmFuIjogIjEuMC4wIgor
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImNvbWJpbmVkLXN0cmVhbSI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjAuNSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
ICAgICJkZWxheWVkLXN0cmVhbSI6ICIxLjAuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisg
ICAgICAgICJjb21tYW5kZXIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi45LjAiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAg
ICJncmFjZWZ1bC1yZWFkbGluayI6ICIxLjAuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisg
ICAgICAgICJjb25jYXQtbWFwIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC4xIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAg
fSwKKyAgICAgICAgImNvbnNvbGUtY29udHJvbC1zdHJpbmdzIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjEuMS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImNvcmUtdXRpbC1pcyI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJjcnlwdGlsZXMiOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMi4wLjUiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJib29tIjogIjIuMTAuMSIKKyAgICAgICAg
ICB9CisgICAgICAgIH0sCisgICAgICAgICJkYXNoZGFzaCI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIxLjE0LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgICAgICJhc3NlcnQtcGx1cyI6ICIxLjAuMCIKKyAgICAgICAgICB9LAor
ICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICAgICAiYXNzZXJ0LXBsdXMiOiB7
CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgIm9w
dGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAg
ICAgICAgImRlYnVnIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMi4wIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9w
dGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAibXMi
OiAiMC43LjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZGVlcC1leHRlbmQi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC40LjEiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVl
CisgICAgICAgIH0sCisgICAgICAgICJkZWxheWVkLXN0cmVhbSI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJkZWxlZ2F0ZXMiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisg
ICAgICAgICJlY2MtanNibiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuMSIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAg
ImpzYm4iOiAiMC4xLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZXNjYXBl
LXN0cmluZy1yZWdleHAiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjUiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAi
b3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJleHRlbmQiOiB7CisgICAgICAg
ICAgInZlcnNpb24iOiAiMy4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0s
CisgICAgICAgICJleHRzcHJpbnRmIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAg
ICAgfSwKKyAgICAgICAgImZvcmV2ZXItYWdlbnQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
MC42LjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJmb3Jt
LWRhdGEiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAtcmM0IiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlv
bmFsIjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYXN5bmMi
OiAiMS41LjIiLAorICAgICAgICAgICAgImNvbWJpbmVkLXN0cmVhbSI6ICIxLjAuNSIsCisgICAg
ICAgICAgICAibWltZS10eXBlcyI6ICIyLjEuMTEiCisgICAgICAgICAgfQorICAgICAgICB9LAor
ICAgICAgICAiZnMucmVhbHBhdGgiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAg
ICB9LAorICAgICAgICAiZnN0cmVhbSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMTAi
LAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiZ3JhY2VmdWwtZnMiOiAiNC4xLjQi
LAorICAgICAgICAgICAgImluaGVyaXRzIjogIjIuMC4xIiwKKyAgICAgICAgICAgICJta2RpcnAi
OiAiMC41LjEiLAorICAgICAgICAgICAgInJpbXJhZiI6ICIyLjUuMyIKKyAgICAgICAgICB9Cisg
ICAgICAgIH0sCisgICAgICAgICJmc3RyZWFtLWlnbm9yZSI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIxLjAuNSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAgICAgImZzdHJlYW0iOiAiMS4wLjEwIiwKKyAgICAgICAgICAgICJpbmhl
cml0cyI6ICIyLjAuMSIsCisgICAgICAgICAgICAibWluaW1hdGNoIjogIjMuMC4yIgorICAgICAg
ICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImdhdWdlIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjIuNi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICAgICAiYXByb2JhIjogIjEuMC40IiwKKyAgICAgICAgICAgICJjb25zb2xl
LWNvbnRyb2wtc3RyaW5ncyI6ICIxLjEuMCIsCisgICAgICAgICAgICAiaGFzLWNvbG9yIjogIjAu
MS43IiwKKyAgICAgICAgICAgICJoYXMtdW5pY29kZSI6ICIyLjAuMSIsCisgICAgICAgICAgICAi
b2JqZWN0LWFzc2lnbiI6ICI0LjEuMCIsCisgICAgICAgICAgICAic2lnbmFsLWV4aXQiOiAiMy4w
LjAiLAorICAgICAgICAgICAgInN0cmluZy13aWR0aCI6ICIxLjAuMSIsCisgICAgICAgICAgICAi
c3RyaXAtYW5zaSI6ICIzLjAuMSIsCisgICAgICAgICAgICAid2lkZS1hbGlnbiI6ICIxLjEuMCIK
KyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJnZW5lcmF0ZS1mdW5jdGlvbiI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAg
ICAgICAgfSwKKyAgICAgICAgImdlbmVyYXRlLW9iamVjdC1wcm9wZXJ0eSI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIxLjIuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAgICAgImlzLXByb3BlcnR5IjogIjEuMC4yIgorICAgICAg
ICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImdldHBhc3MiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMC4xLjYiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgICAgICJhc3NlcnQtcGx1cyI6ICIxLjAuMCIKKyAgICAgICAgICB9LAor
ICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICAgICAiYXNzZXJ0LXBsdXMiOiB7
CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgIm9w
dGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAg
ICAgICAgImdsb2IiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNy4wLjUiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICAgICAiZnMucmVhbHBhdGgiOiAiMS4wLjAiLAorICAgICAgICAg
ICAgImluZmxpZ2h0IjogIjEuMC41IiwKKyAgICAgICAgICAgICJpbmhlcml0cyI6ICIyLjAuMSIs
CisgICAgICAgICAgICAibWluaW1hdGNoIjogIjMuMC4yIiwKKyAgICAgICAgICAgICJvbmNlIjog
IjEuMy4zIiwKKyAgICAgICAgICAgICJwYXRoLWlzLWFic29sdXRlIjogIjEuMC4wIgorICAgICAg
ICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImdyYWNlZnVsLWZzIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjQuMS40IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImdyYWNlZnVsLXJlYWRsaW5rIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAg
ICAgICB9LAorICAgICAgICAiaGFyLXZhbGlkYXRvciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIyLjAuNiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAgICAgImNoYWxrIjogIjEuMS4zIiwKKyAgICAgICAgICAgICJjb21tYW5kZXIi
OiAiMi45LjAiLAorICAgICAgICAgICAgImlzLW15LWpzb24tdmFsaWQiOiAiMi4xMy4xIiwKKyAg
ICAgICAgICAgICJwaW5raWUtcHJvbWlzZSI6ICIyLjAuMSIKKyAgICAgICAgICB9CisgICAgICAg
IH0sCisgICAgICAgICJoYXMtYW5zaSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIs
CisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAgICAgImFuc2ktcmVnZXgiOiAiMi4wLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAiaGFzLWNvbG9yIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS43IiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
Im9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiaGFzLXVuaWNvZGUiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMi4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAg
ICAgIH0sCisgICAgICAgICJoYXdrIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMS4zIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICAgICAiYm9vbSI6ICIyLjEwLjEiLAorICAgICAgICAgICAgImNyeXB0aWxlcyI6ICIyLjAuNSIs
CisgICAgICAgICAgICAiaG9layI6ICIyLjE2LjMiLAorICAgICAgICAgICAgInNudHAiOiAiMS4w
LjkiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaG9layI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIyLjE2LjMiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiaHR0cC1zaWduYXR1cmUiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAor
ICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJhc3NlcnQtcGx1cyI6ICIwLjIu
MCIsCisgICAgICAgICAgICAianNwcmltIjogIjEuMy4wIiwKKyAgICAgICAgICAgICJzc2hwayI6
ICIxLjguMyIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJpbmZsaWdodCI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuNSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgICAgICJvbmNlIjogIjEuMy4zIiwKKyAgICAgICAgICAgICJ3cmFwcHkiOiAiMS4wLjIiCisg
ICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaW5oZXJpdHMiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMi4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiaW5pIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjEuMy40IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAg
ICAgICAiaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
MS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAibnVtYmVyLWlzLW5hbiI6
ICIxLjAuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJpcy1teS1qc29uLXZh
bGlkIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMTMuMSIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6
IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImdlbmVyYXRlLWZ1
bmN0aW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAgICJnZW5lcmF0ZS1vYmplY3QtcHJvcGVydHki
OiAiMS4yLjAiLAorICAgICAgICAgICAgImpzb25wb2ludGVyIjogIjIuMC4wIiwKKyAgICAgICAg
ICAgICJ4dGVuZCI6ICI0LjAuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJp
cy1wcm9wZXJ0eSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRp
b25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImlzLXR5cGVkYXJyYXkiOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAg
IH0sCisgICAgICAgICJpc2FycmF5IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAg
ICAgfSwKKyAgICAgICAgImlzc3RyZWFtIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS4y
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisg
ICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiam9kaWQyNTUx
OSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRy
dWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImpzYm4iOiAiMC4xLjAi
CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAianNibiI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIwLjEuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAg
ICAgICAgImpzb24tc2NoZW1hIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4yIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAianNvbi1zdHJpbmdpZnkt
c2FmZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI1LjAuMSIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6
IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImpzb25wb2ludGVyIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAg
ICAgICAianNwcmltIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMy4wIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9w
dGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiZXh0
c3ByaW50ZiI6ICIxLjAuMiIsCisgICAgICAgICAgICAianNvbi1zY2hlbWEiOiAiMC4yLjIiLAor
ICAgICAgICAgICAgInZlcnJvciI6ICIxLjMuNiIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisg
ICAgICAgICJtaW1lLWRiIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMjMuMCIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0s
CisgICAgICAgICJtaW1lLXR5cGVzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMS4xMSIs
CisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJtaW1lLWRiIjogIjEuMjMuMCIKKyAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJtaW5pbWF0Y2giOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMy4wLjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYnJh
Y2UtZXhwYW5zaW9uIjogIjEuMS41IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAg
Im1pbmltaXN0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC44IiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAg
ICAgIm1rZGlycCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjUuMSIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICJtaW5pbWlzdCI6ICIwLjAuOCIKKyAgICAgICAgICB9Cisg
ICAgICAgIH0sCisgICAgICAgICJtcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjcuMSIs
CisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgIm5vZGUtcHJlLWd5
cCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjYuMjkiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0
cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJta2RpcnAiOiAiMC41
LjEiLAorICAgICAgICAgICAgIm5vcHQiOiAiMy4wLjYiLAorICAgICAgICAgICAgIm5wbWxvZyI6
ICIzLjEuMiIsCisgICAgICAgICAgICAicmMiOiAiMS4xLjYiLAorICAgICAgICAgICAgInJlcXVl
c3QiOiAiMi43My4wIiwKKyAgICAgICAgICAgICJyaW1yYWYiOiAiMi41LjMiLAorICAgICAgICAg
ICAgInNlbXZlciI6ICI1LjIuMCIsCisgICAgICAgICAgICAidGFyIjogIjIuMi4xIiwKKyAgICAg
ICAgICAgICJ0YXItcGFjayI6ICIzLjEuNCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAg
ICAgICJub2RlLXV1aWQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS40LjciLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAi
b3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJub3B0IjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjMuMC42IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYWJicmV2IjogIjEuMC45IgorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgIm5wbWxvZyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIz
LjEuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAgICAgImFyZS13ZS10aGVyZS15ZXQiOiAiMS4xLjIiLAorICAgICAgICAgICAgImNv
bnNvbGUtY29udHJvbC1zdHJpbmdzIjogIjEuMS4wIiwKKyAgICAgICAgICAgICJnYXVnZSI6ICIy
LjYuMCIsCisgICAgICAgICAgICAic2V0LWJsb2NraW5nIjogIjIuMC4wIgorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgIm51bWJlci1pcy1uYW4iOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAib2F1dGgtc2lnbiI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIwLjguMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAg
ICAgICAgIm9iamVjdC1hc3NpZ24iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNC4xLjAiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJvbmNlIjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjEuMy4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAg
ICAgIndyYXBweSI6ICIxLjAuMiIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJw
YXRoLWlzLWFic29sdXRlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwK
KyAgICAgICAgInBpbmtpZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuNCIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInBpbmtpZS1wcm9taXNlIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwK
KyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAicGlua2llIjogIjIuMC40Igor
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInByb2Nlc3MtbmV4dGljay1hcmdzIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC43IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInFzIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAg
ICAgICB9LAorICAgICAgICAicmMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjYiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
ICAgICJkZWVwLWV4dGVuZCI6ICIwLjQuMSIsCisgICAgICAgICAgICAiaW5pIjogIjEuMy40IiwK
KyAgICAgICAgICAgICJtaW5pbWlzdCI6ICIxLjIuMCIsCisgICAgICAgICAgICAic3RyaXAtanNv
bi1jb21tZW50cyI6ICIxLjAuNCIKKyAgICAgICAgICB9LAorICAgICAgICAgICJkZXBlbmRlbmNp
ZXMiOiB7CisgICAgICAgICAgICAibWluaW1pc3QiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuMi4wIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAg
ICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInJlYWRhYmxlLXN0cmVhbSI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjEuNCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgICAgICJidWZmZXItc2hpbXMiOiAiMS4wLjAiLAorICAgICAgICAgICAgImNvcmUtdXRp
bC1pcyI6ICIxLjAuMiIsCisgICAgICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjEiLAorICAgICAg
ICAgICAgImlzYXJyYXkiOiAiMS4wLjAiLAorICAgICAgICAgICAgInByb2Nlc3MtbmV4dGljay1h
cmdzIjogIjEuMC43IiwKKyAgICAgICAgICAgICJzdHJpbmdfZGVjb2RlciI6ICIwLjEwLjMxIiwK
KyAgICAgICAgICAgICJ1dGlsLWRlcHJlY2F0ZSI6ICIxLjAuMiIKKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJyZXF1ZXN0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuNzMu
MCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAor
ICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAgICAgImF3cy1zaWduMiI6ICIwLjYuMCIsCisgICAgICAgICAgICAiYXdzNCI6ICIxLjQu
MSIsCisgICAgICAgICAgICAiYmwiOiAiMS4xLjIiLAorICAgICAgICAgICAgImNhc2VsZXNzIjog
IjAuMTEuMCIsCisgICAgICAgICAgICAiY29tYmluZWQtc3RyZWFtIjogIjEuMC41IiwKKyAgICAg
ICAgICAgICJleHRlbmQiOiAiMy4wLjAiLAorICAgICAgICAgICAgImZvcmV2ZXItYWdlbnQiOiAi
MC42LjEiLAorICAgICAgICAgICAgImZvcm0tZGF0YSI6ICIxLjAuMC1yYzQiLAorICAgICAgICAg
ICAgImhhci12YWxpZGF0b3IiOiAiMi4wLjYiLAorICAgICAgICAgICAgImhhd2siOiAiMy4xLjMi
LAorICAgICAgICAgICAgImh0dHAtc2lnbmF0dXJlIjogIjEuMS4xIiwKKyAgICAgICAgICAgICJp
cy10eXBlZGFycmF5IjogIjEuMC4wIiwKKyAgICAgICAgICAgICJpc3N0cmVhbSI6ICIwLjEuMiIs
CisgICAgICAgICAgICAianNvbi1zdHJpbmdpZnktc2FmZSI6ICI1LjAuMSIsCisgICAgICAgICAg
ICAibWltZS10eXBlcyI6ICIyLjEuMTEiLAorICAgICAgICAgICAgIm5vZGUtdXVpZCI6ICIxLjQu
NyIsCisgICAgICAgICAgICAib2F1dGgtc2lnbiI6ICIwLjguMiIsCisgICAgICAgICAgICAicXMi
OiAiNi4yLjAiLAorICAgICAgICAgICAgInN0cmluZ3N0cmVhbSI6ICIwLjAuNSIsCisgICAgICAg
ICAgICAidG91Z2gtY29va2llIjogIjIuMi4yIiwKKyAgICAgICAgICAgICJ0dW5uZWwtYWdlbnQi
OiAiMC40LjMiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAicmltcmFmIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjIuNS4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAgICAgImdsb2IiOiAiNy4wLjUiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAi
c2VtdmVyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjUuMi4wIiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFs
IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAic2V0LWJsb2NraW5nIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAor
ICAgICAgICAic2lnbmFsLWV4aXQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4wLjAiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJzbnRwIjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjEuMC45IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAg
ICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiaG9layI6ICIyLjE2LjMiCisgICAgICAg
ICAgfQorICAgICAgICB9LAorICAgICAgICAic3NocGsiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMS44LjMiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgICAgICJhc24xIjogIjAuMi4zIiwKKyAgICAgICAgICAgICJhc3NlcnQtcGx1
cyI6ICIxLjAuMCIsCisgICAgICAgICAgICAiZGFzaGRhc2giOiAiMS4xNC4wIiwKKyAgICAgICAg
ICAgICJlY2MtanNibiI6ICIwLjEuMSIsCisgICAgICAgICAgICAiZ2V0cGFzcyI6ICIwLjEuNiIs
CisgICAgICAgICAgICAiam9kaWQyNTUxOSI6ICIxLjAuMiIsCisgICAgICAgICAgICAianNibiI6
ICIwLjEuMCIsCisgICAgICAgICAgICAidHdlZXRuYWNsIjogIjAuMTMuMyIKKyAgICAgICAgICB9
LAorICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICAgICAiYXNzZXJ0LXBsdXMi
OiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAg
Im9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgInN0cmluZ19kZWNvZGVyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMTAu
MzEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQor
ICAgICAgICB9LAorICAgICAgICAic3RyaW5nLXdpZHRoIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuMC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImNvZGUtcG9pbnQt
YXQiOiAiMS4wLjAiLAorICAgICAgICAgICAgImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50IjogIjEu
MC4wIiwKKyAgICAgICAgICAgICJzdHJpcC1hbnNpIjogIjMuMC4xIgorICAgICAgICAgIH0KKyAg
ICAgICAgfSwKKyAgICAgICAgInN0cmluZ3N0cmVhbSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIwLjAuNSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInN0
cmlwLWFuc2kiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4wLjEiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICAgICAiYW5zaS1yZWdleCI6ICIyLjAuMCIKKyAgICAgICAgICB9Cisg
ICAgICAgIH0sCisgICAgICAgICJzdHJpcC1qc29uLWNvbW1lbnRzIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjEuMC40IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAg
ICAgICAic3VwcG9ydHMtY29sb3IiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJ0YXIiOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMi4yLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAg
ICAiYmxvY2stc3RyZWFtIjogIjAuMC45IiwKKyAgICAgICAgICAgICJmc3RyZWFtIjogIjEuMC4x
MCIsCisgICAgICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjEiCisgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgICAidGFyLXBhY2siOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4xLjQi
LAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgICAgICJkZWJ1ZyI6ICIyLjIuMCIsCisgICAgICAgICAgICAiZnN0cmVhbSI6ICIxLjAuMTAi
LAorICAgICAgICAgICAgImZzdHJlYW0taWdub3JlIjogIjEuMC41IiwKKyAgICAgICAgICAgICJv
bmNlIjogIjEuMy4zIiwKKyAgICAgICAgICAgICJyZWFkYWJsZS1zdHJlYW0iOiAiMi4xLjQiLAor
ICAgICAgICAgICAgInJpbXJhZiI6ICIyLjUuMyIsCisgICAgICAgICAgICAidGFyIjogIjIuMi4x
IiwKKyAgICAgICAgICAgICJ1aWQtbnVtYmVyIjogIjAuMC42IgorICAgICAgICAgIH0KKyAgICAg
ICAgfSwKKyAgICAgICAgInRvdWdoLWNvb2tpZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIy
LjIuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInR1bm5l
bC1hZ2VudCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjQuMyIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25h
bCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInR3ZWV0bmFjbCI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIwLjEzLjMiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisg
ICAgICAgICJ1aWQtbnVtYmVyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC42IiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAidXRpbC1kZXByZWNhdGUi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAidmVycm9y
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMy42IiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1
ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiZXh0c3ByaW50ZiI6ICIx
LjAuMiIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJ3aWRlLWFsaWduIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAg
ICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAic3RyaW5nLXdpZHRoIjogIjEuMC4x
IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIndyYXBweSI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJ4dGVuZCI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICI0LjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfQor
ICAgICAgfQorICAgIH0sCisgICAgImZ1bmN0aW9uLWJpbmQiOiB7CisgICAgICAidmVyc2lvbiI6
ICIxLjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
ZnVuY3Rpb24tYmluZC8tL2Z1bmN0aW9uLWJpbmQtMS4xLjAudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS1GaGRuRk1nQmVZNU9qeXozOTFLVVo3dEtWM0U9IiwKKyAgICAgICJkZXYiOiB0
cnVlCisgICAgfSwKKyAgICAiZnVuY3Rpb24ucHJvdG90eXBlLm5hbWUiOiB7CisgICAgICAidmVy
c2lvbiI6ICIxLjAuMyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvZnVuY3Rpb24ucHJvdG90eXBlLm5hbWUvLS9mdW5jdGlvbi5wcm90b3R5cGUubmFtZS0x
LjAuMy50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1MTItNUVibHhaVWRpb1hpMkppTVo5
RlVid1lqNDBlUTlNRkh5ekZMQlNQZGxSbDNTTzhsN1NMV3VBblEvYXQvMVdpNGhqSndNRS9DNVdw
RjJaZkFjOG5HTnc9PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgImRlZmluZS1wcm9wZXJ0aWVzIjogIjEuMS4yIiwKKyAgICAgICAgImZ1bmN0aW9u
LWJpbmQiOiAiMS4xLjAiLAorICAgICAgICAiaXMtY2FsbGFibGUiOiAiMS4xLjMiCisgICAgICB9
CisgICAgfSwKKyAgICAiaGFzIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2hhcy8tL2hhcy0xLjAuMS50
Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWhHRnpQMU9MQ0RmSk5oNDVxYXVlbHdUY0x5
Zz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJm
dW5jdGlvbi1iaW5kIjogIjEuMS4wIgorICAgICAgfQorICAgIH0sCisgICAgImhvaXN0LW5vbi1y
ZWFjdC1zdGF0aWNzIjogeworICAgICAgInZlcnNpb24iOiAiMi4yLjIiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2hvaXN0LW5vbi1yZWFjdC1zdGF0aWNz
Ly0vaG9pc3Qtbm9uLXJlYWN0LXN0YXRpY3MtMi4yLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS13T3lscDlXaWpGcmFNUWZyZGpzQjJtdjZnZnM9IgorICAgIH0sCisgICAgImh0bWxw
YXJzZXIyIjogeworICAgICAgInZlcnNpb24iOiAiMy45LjIiLAorICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2h0bWxwYXJzZXIyLy0vaHRtbHBhcnNlcjItMy45
LjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1HOStIck1vUFA1NVQray9NNnc5TFRM
c0Fzemc9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAiZG9tZWxlbWVudHR5cGUiOiAiMS4zLjAiLAorICAgICAgICAiZG9taGFuZGxlciI6ICIyLjQu
MSIsCisgICAgICAgICJkb211dGlscyI6ICIxLjUuMSIsCisgICAgICAgICJlbnRpdGllcyI6ICIx
LjEuMSIsCisgICAgICAgICJpbmhlcml0cyI6ICIyLjAuMyIsCisgICAgICAgICJyZWFkYWJsZS1z
dHJlYW0iOiAiMi4zLjMiCisgICAgICB9CisgICAgfSwKKyAgICAiaWNvbnYtbGl0ZSI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjAuNC4xOCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvaWNvbnYtbGl0ZS8tL2ljb252LWxpdGUtMC40LjE4LnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTUxMi1zcjFaUXBoM1V3SFRSMFhmdFNiSzg1T3ZCYnhlL2FiTEd6
RW5QRU5DUXdtSGY3c2NrOE95dTRvYjNMZ0J4V1d4Um9NK1FzemVVeWw3amJxYXB1MlRxQT09Igor
ICAgIH0sCisgICAgImluaGVyaXRzIjogeworICAgICAgInZlcnNpb24iOiAiMi4wLjMiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2luaGVyaXRzLy0vaW5o
ZXJpdHMtMi4wLjMudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1ZendzZytQYVFxVUM5
U1JtQWlTQTlDQ0NZZDQ9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiaW52YXJp
YW50IjogeworICAgICAgInZlcnNpb24iOiAiMi4yLjIiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2ludmFyaWFudC8tL2ludmFyaWFudC0yLjIuMi50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLW5oOVdyQXJOdHI4d013YnpPTDQ3SUVybUEyQT0i
LAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAibG9vc2UtZW52aWZ5IjogIjEuMy4xIgor
ICAgICAgfQorICAgIH0sCisgICAgImlzLWNhbGxhYmxlIjogeworICAgICAgInZlcnNpb24iOiAi
MS4xLjMiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lz
LWNhbGxhYmxlLy0vaXMtY2FsbGFibGUtMS4xLjMudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS1odXQxT1NnRjNjTTY5eHlTb083ZmRPNTJCTEk9IiwKKyAgICAgICJkZXYiOiB0cnVlCisg
ICAgfSwKKyAgICAiaXMtZGF0ZS1vYmplY3QiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMSIs
CisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXMtZGF0ZS1v
YmplY3QvLS9pcy1kYXRlLW9iamVjdC0xLjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJz
aGExLW1xSU90cTdydi9kL3ZUUG5US0FiTTFnZE9oWT0iLAorICAgICAgImRldiI6IHRydWUKKyAg
ICB9LAorICAgICJpcy1yZWdleCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC40IiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1yZWdleC8tL2lzLXJl
Z2V4LTEuMC40LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtVlJkSW0xUndrYkNURGds
V1ZNN1NYdWwrbEpFPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgImhhcyI6ICIxLjAuMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJpcy1zdHJlYW0i
OiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXMtc3RyZWFtLy0vaXMtc3RyZWFtLTEuMS4wLnRneiIsCisg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtRXRTajNVNW80TGVjNjQyOGhCYzY2QTJSeWtRPSIKKyAg
ICB9LAorICAgICJpcy1zdWJzZXQiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjEuMSIsCisgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXMtc3Vic2V0Ly0vaXMt
c3Vic2V0LTAuMS4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtaWxrUmZaTXQ0ZDRB
OGtYODNUbk9RL0hwT2FZPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImlzLXN5
bWJvbCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1zeW1ib2wvLS9pcy1zeW1ib2wtMS4wLjEudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1QTVdmQUFKUmxMYXJMampicm1hSkpXdG1CWEk9
IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiaXNhcnJheSI6IHsKKyAgICAgICJ2
ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9pc2FycmF5Ly0vaXNhcnJheS0xLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLXU1TmRTRmdzdWhhTUJvTkpWNlZLUGdjU1R4RT0iLAorICAgICAgImRldiI6IHRydWUK
KyAgICB9LAorICAgICJpc29tb3JwaGljLWZldGNoIjogeworICAgICAgInZlcnNpb24iOiAiMi4y
LjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzb21v
cnBoaWMtZmV0Y2gvLS9pc29tb3JwaGljLWZldGNoLTIuMi4xLnRneiIsCisgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtWVJyaHJQRlBYb0gzS1ZCMGNvR2Y2WE0xV0trPSIsCisgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICJub2RlLWZldGNoIjogIjEuNy4yIiwKKyAgICAgICAgIndoYXR3Zy1m
ZXRjaCI6ICIyLjAuMyIKKyAgICAgIH0KKyAgICB9LAorICAgICJqcy10b2tlbnMiOiB7CisgICAg
ICAidmVyc2lvbiI6ICIzLjAuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvanMtdG9rZW5zLy0vanMtdG9rZW5zLTMuMC4yLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtbUdiZk9WRUNFdzQ0OS9tV3ZPdGxSRElKd2xzPSIKKyAgICB9LAorICAg
ICJsb2Rhc2giOiB7CisgICAgICAidmVyc2lvbiI6ICI0LjE3LjQiLAorICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC8tL2xvZGFzaC00LjE3LjQudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1lQ0E2VFJ3eWl1SFliY3BrWU9OcHRYOUFWYTQ9
IgorICAgIH0sCisgICAgImxvZGFzaC1lcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjQuMTcuNCIs
CisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbG9kYXNoLWVz
Ly0vbG9kYXNoLWVzLTQuMTcuNC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTNNSFhW
UzRWQ2daQUJ6dXB5ekhYRHdNcFVPYz0iCisgICAgfSwKKyAgICAibG9kYXNoLmFzc2lnbmluIjog
eworICAgICAgInZlcnNpb24iOiAiNC4yLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC5hc3NpZ25pbi8tL2xvZGFzaC5hc3NpZ25pbi00LjIu
MC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXVvMzErNFFlc0tQb0JFSXlzT0pqcU54
cUtLST0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJsb2Rhc2guYmluZCI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjQuMi4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9sb2Rhc2guYmluZC8tL2xvZGFzaC5iaW5kLTQuMi4xLnRneiIsCisg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtZXVNQmZwT1dJcXd4dDlmWDNMR3pUYkZwRFRVPSIsCisg
ICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImxvZGFzaC5kZWZhdWx0cyI6IHsKKyAgICAg
ICJ2ZXJzaW9uIjogIjQuMi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9sb2Rhc2guZGVmYXVsdHMvLS9sb2Rhc2guZGVmYXVsdHMtNC4yLjAudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0wSkY0Y1cvK3BOM3A1ZnQ3Ti9id2dDSjBXQXc9IiwK
KyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAibG9kYXNoLmZpbHRlciI6IHsKKyAgICAg
ICJ2ZXJzaW9uIjogIjQuNi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9sb2Rhc2guZmlsdGVyLy0vbG9kYXNoLmZpbHRlci00LjYuMC50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLVpvc2RTWUZnT3VITVdtK25ZQlErU0F0TVNzND0iLAorICAg
ICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJsb2Rhc2guZmxhdHRlbiI6IHsKKyAgICAgICJ2
ZXJzaW9uIjogIjQuNC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9sb2Rhc2guZmxhdHRlbi8tL2xvZGFzaC5mbGF0dGVuLTQuNC4wLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTEtOHh3aUlscVdNdEs3K09TdDIrOGtDcWRscGg4PSIsCisgICAg
ICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImxvZGFzaC5mb3JlYWNoIjogeworICAgICAgInZl
cnNpb24iOiAiNC41LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL2xvZGFzaC5mb3JlYWNoLy0vbG9kYXNoLmZvcmVhY2gtNC41LjAudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1HbW8xNnM1QUVvREg4RzNkN0RVV1dySitQbE09IiwKKyAgICAg
ICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAibG9kYXNoLm1hcCI6IHsKKyAgICAgICJ2ZXJzaW9u
IjogIjQuNi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9sb2Rhc2gubWFwLy0vbG9kYXNoLm1hcC00LjYuMC50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLWR4N0hnNTQwYzluRXplS0xHVGxNTldMMDl0TT0iLAorICAgICAgImRldiI6IHRydWUK
KyAgICB9LAorICAgICJsb2Rhc2gubWVyZ2UiOiB7CisgICAgICAidmVyc2lvbiI6ICI0LjYuMCIs
CisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbG9kYXNoLm1l
cmdlLy0vbG9kYXNoLm1lcmdlLTQuNi4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
YVloTG9VU3NNLzVwbHplbUNHM3YrdDBQaWNVPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0s
CisgICAgImxvZGFzaC5waWNrIjogeworICAgICAgInZlcnNpb24iOiAiNC40LjAiLAorICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC5waWNrLy0vbG9k
YXNoLnBpY2stNC40LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1VdkJXRVAvNTN0
UWlZUlJCN1IvQkk2QXdBYk09IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAibG9k
YXNoLnJlZHVjZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjQuNi4wIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9sb2Rhc2gucmVkdWNlLy0vbG9kYXNoLnJl
ZHVjZS00LjYuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLThhdHJnNUtaclVqM2hL
dS9SMldXOER1UlRUcz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJsb2Rhc2gu
cmVqZWN0IjogeworICAgICAgInZlcnNpb24iOiAiNC42LjAiLAorICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC5yZWplY3QvLS9sb2Rhc2gucmVqZWN0
LTQuNi4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtZ05aSkxjRkhDR1M3OVlOVE8y
VWZRcW4xSkJVPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImxvZGFzaC5zb21l
IjogeworICAgICAgInZlcnNpb24iOiAiNC42LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC5zb21lLy0vbG9kYXNoLnNvbWUtNC42LjAudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1HN256Rk85cmk2M3RFN1ZKRnBzcWxGNjJqazA9
IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAibG9vc2UtZW52aWZ5IjogeworICAg
ICAgInZlcnNpb24iOiAiMS4zLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2xvb3NlLWVudmlmeS8tL2xvb3NlLWVudmlmeS0xLjMuMS50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLTBhaXRNL3FjNE9jVDFsL2RDc2kzU05SNHlFZz0iLAorICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAianMtdG9rZW5zIjogIjMuMC4yIgorICAgICAgfQor
ICAgIH0sCisgICAgIm5hbiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuNi4yIiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9uYW4vLS9uYW4tMi42LjIudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS01UDgwNXNsZjM3V3V6QWplWlpiME5nV24yMFU9
IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgIH0sCisg
ICAgIm5vZGUtZmV0Y2giOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjcuMiIsCisgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbm9kZS1mZXRjaC8tL25vZGUtZmV0
Y2gtMS43LjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLXhaWlVxMnlEaEtNSW4v
VWdHNXEvL0laU05MSkl3VzJReFMxNENOSDVzcHVpWGtJVE0ycFVpdGpkcTU4eUxTYVU3bTRNMHdC
TmFNMkdoL2dnWTRZSmlnPT0iLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiZW5jb2Rp
bmciOiAiMC4xLjEyIiwKKyAgICAgICAgImlzLXN0cmVhbSI6ICIxLjEuMCIKKyAgICAgIH0KKyAg
ICB9LAorICAgICJudGgtY2hlY2siOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbnRoLWNoZWNrLy0vbnRo
LWNoZWNrLTEuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtbVNtczMyS1B3c1FR
bU42cmdxeFlEUEZKcXVRPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgImJvb2xiYXNlIjogIjEuMC4wIgorICAgICAgfQorICAgIH0sCisgICAgIm9i
amVjdC1hc3NpZ24iOiB7CisgICAgICAidmVyc2lvbiI6ICI0LjEuMSIsCisgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvb2JqZWN0LWFzc2lnbi8tL29iamVjdC1h
c3NpZ24tNC4xLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1JUW10eDVaWWg4L0FY
THZVUXNySXY3czJDR009IgorICAgIH0sCisgICAgIm9iamVjdC1pcyI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogIjEuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9vYmplY3QtaXMvLS9vYmplY3QtaXMtMS4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHki
OiAic2hhMS1DcVlPeVppYUN6N1hsYzlOQnZZczhhMWxPYlk9IiwKKyAgICAgICJkZXYiOiB0cnVl
CisgICAgfSwKKyAgICAib2JqZWN0LWtleXMiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMTEi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL29iamVjdC1r
ZXlzLy0vb2JqZWN0LWtleXMtMS4wLjExLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
eFVZQmQ0clZZUEVVTE9EZ0c4eW90VzBUUW0wPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0s
CisgICAgIm9iamVjdC5hc3NpZ24iOiB7CisgICAgICAidmVyc2lvbiI6ICI0LjAuNCIsCisgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvb2JqZWN0LmFzc2lnbi8t
L29iamVjdC5hc3NpZ24tNC4wLjQudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1zY25N
QkU3eHVmNWpZRy9CUWF1N011RkhNTXc9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAiZGVmaW5lLXByb3BlcnRpZXMiOiAiMS4xLjIiLAorICAgICAg
ICAiZnVuY3Rpb24tYmluZCI6ICIxLjEuMCIsCisgICAgICAgICJvYmplY3Qta2V5cyI6ICIxLjAu
MTEiCisgICAgICB9CisgICAgfSwKKyAgICAib2JqZWN0LmVudHJpZXMiOiB7CisgICAgICAidmVy
c2lvbiI6ICIxLjAuNCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvb2JqZWN0LmVudHJpZXMvLS9vYmplY3QuZW50cmllcy0xLjAuNC50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLUcvbWszU0tJOWJNL09wazlKWFpoOEYwV0dsOD0iLAorICAgICAg
ImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJkZWZpbmUtcHJvcGVy
dGllcyI6ICIxLjEuMiIsCisgICAgICAgICJlcy1hYnN0cmFjdCI6ICIxLjguMCIsCisgICAgICAg
ICJmdW5jdGlvbi1iaW5kIjogIjEuMS4wIiwKKyAgICAgICAgImhhcyI6ICIxLjAuMSIKKyAgICAg
IH0KKyAgICB9LAorICAgICJvYmplY3QudmFsdWVzIjogeworICAgICAgInZlcnNpb24iOiAiMS4w
LjQiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL29iamVj
dC52YWx1ZXMvLS9vYmplY3QudmFsdWVzLTEuMC40LnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtNVNUYUNiVDJiL0JkOUZkVWJzY3F5WjhUQnBvPSIsCisgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImRlZmluZS1wcm9wZXJ0aWVzIjogIjEuMS4y
IiwKKyAgICAgICAgImVzLWFic3RyYWN0IjogIjEuOC4wIiwKKyAgICAgICAgImZ1bmN0aW9uLWJp
bmQiOiAiMS4xLjAiLAorICAgICAgICAiaGFzIjogIjEuMC4xIgorICAgICAgfQorICAgIH0sCisg
ICAgInByb2Nlc3MtbmV4dGljay1hcmdzIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjciLAor
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Byb2Nlc3MtbmV4
dGljay1hcmdzLy0vcHJvY2Vzcy1uZXh0aWNrLWFyZ3MtMS4wLjcudGd6IiwKKyAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS1GUTRndDFaWkN0UDVFSlB5V2s4cTJML3pDNk09IiwKKyAgICAgICJkZXYi
OiB0cnVlCisgICAgfSwKKyAgICAicHJvbWlzZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjcuMy4x
IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wcm9taXNl
Ly0vcHJvbWlzZS03LjMuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1MTItbm9sUVha
LzRMK2JQL1VHbGtmYUl1alg5Qkt4R3dtUTlPVDRtT3Q1eXZ5OGlLMWgzd3FURUpDaWp6R0FOVEND
bDluV2pZNDFqdXlBbjJLM1ExaExMVGc9PSIsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICJhc2FwIjogIjIuMC42IgorICAgICAgfQorICAgIH0sCisgICAgInByb3AtdHlwZXMiOiB7Cisg
ICAgICAidmVyc2lvbiI6ICIxNS41LjEwIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9wcm9wLXR5cGVzLy0vcHJvcC10eXBlcy0xNS41LjEwLnRneiIsCisg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtSjVmZnd4SmhndU9wWGozN3N1aVQzZGRGWVZRPSIsCisg
ICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJmYmpzIjogIjAuOC4xNCIsCisgICAgICAgICJs
b29zZS1lbnZpZnkiOiAiMS4zLjEiCisgICAgICB9CisgICAgfSwKKyAgICAicmVhY3QiOiB7Cisg
ICAgICAidmVyc2lvbiI6ICIxNS42LjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL3JlYWN0Ly0vcmVhY3QtMTUuNi4xLnRneiIsCisgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtdXFoRFRzWjRDOTZaZk53NEMzbk5NN2xqazk4PSIsCisgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICJjcmVhdGUtcmVhY3QtY2xhc3MiOiAiMTUuNi4wIiwKKyAgICAgICAg
ImZianMiOiAiMC44LjE0IiwKKyAgICAgICAgImxvb3NlLWVudmlmeSI6ICIxLjMuMSIsCisgICAg
ICAgICJvYmplY3QtYXNzaWduIjogIjQuMS4xIiwKKyAgICAgICAgInByb3AtdHlwZXMiOiAiMTUu
NS4xMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJyZWFjdC1hZGRvbnMtdGVzdC11dGlscyI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjE1LjYuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvcmVhY3QtYWRkb25zLXRlc3QtdXRpbHMvLS9yZWFjdC1hZGRvbnMt
dGVzdC11dGlscy0xNS42LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1CaTAyRVgv
bzBZODdwZUJ1c3pPRHNMaGVwYms9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAi
cmVhY3QtZG9tIjogeworICAgICAgInZlcnNpb24iOiAiMTUuNi4xIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWFjdC1kb20vLS9yZWFjdC1kb20tMTUu
Ni4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtTExEdFFaRURqbFBDQ2VzNmVhSStL
a3o1bEhBPSIsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJmYmpzIjogIjAuOC4xNCIs
CisgICAgICAgICJsb29zZS1lbnZpZnkiOiAiMS4zLjEiLAorICAgICAgICAib2JqZWN0LWFzc2ln
biI6ICI0LjEuMSIsCisgICAgICAgICJwcm9wLXR5cGVzIjogIjE1LjUuMTAiCisgICAgICB9Cisg
ICAgfSwKKyAgICAicmVhY3QtcmVkdXgiOiB7CisgICAgICAidmVyc2lvbiI6ICI1LjAuNiIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVhY3QtcmVkdXgv
LS9yZWFjdC1yZWR1eC01LjAuNi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1MTItOHRh
YWFHdStKN1BNSlFESnJrL3hpV0VZUW1kbzNta1h3NndQcjNLM0x4dlhpczNGeW1pcTdjMTNTK1Rw
bHMvQXlOVUFzb09Oa1U4MUFQMFJBNnk2Vnc9PSIsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICJob2lzdC1ub24tcmVhY3Qtc3RhdGljcyI6ICIyLjIuMiIsCisgICAgICAgICJpbnZhcmlh
bnQiOiAiMi4yLjIiLAorICAgICAgICAibG9kYXNoIjogIjQuMTcuNCIsCisgICAgICAgICJsb2Rh
c2gtZXMiOiAiNC4xNy40IiwKKyAgICAgICAgImxvb3NlLWVudmlmeSI6ICIxLjMuMSIsCisgICAg
ICAgICJwcm9wLXR5cGVzIjogIjE1LjUuMTAiCisgICAgICB9CisgICAgfSwKKyAgICAicmVhY3Qt
c2NyaXB0cyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuNi4xIiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWFjdC1zY3JpcHRzLy0vcmVhY3Qtc2NyaXB0
cy0wLjYuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVVtekVjcTRNRGVhOFQ5eTdH
WXJ5cGl4dFJuRT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICJhdXRvcHJlZml4ZXIiOiAiNi40LjEiLAorICAgICAgICAiYmFiZWwtY29yZSI6ICI2
LjE0LjAiLAorICAgICAgICAiYmFiZWwtZXNsaW50IjogIjYuMS4yIiwKKyAgICAgICAgImJhYmVs
LWplc3QiOiAiMTUuMC4wIiwKKyAgICAgICAgImJhYmVsLWxvYWRlciI6ICI2LjIuNSIsCisgICAg
ICAgICJiYWJlbC1wcmVzZXQtcmVhY3QtYXBwIjogIjAuMi4xIiwKKyAgICAgICAgImNhc2Utc2Vu
c2l0aXZlLXBhdGhzLXdlYnBhY2stcGx1Z2luIjogIjEuMS40IiwKKyAgICAgICAgImNoYWxrIjog
IjEuMS4zIiwKKyAgICAgICAgImNvbm5lY3QtaGlzdG9yeS1hcGktZmFsbGJhY2siOiAiMS4zLjAi
LAorICAgICAgICAiY3Jvc3Mtc3Bhd24iOiAiNC4wLjAiLAorICAgICAgICAiY3NzLWxvYWRlciI6
ICIwLjI0LjAiLAorICAgICAgICAiZGV0ZWN0LXBvcnQiOiAiMS4wLjAiLAorICAgICAgICAiZG90
ZW52IjogIjIuMC4wIiwKKyAgICAgICAgImVzbGludCI6ICIzLjUuMCIsCisgICAgICAgICJlc2xp
bnQtY29uZmlnLXJlYWN0LWFwcCI6ICIwLjIuMSIsCisgICAgICAgICJlc2xpbnQtbG9hZGVyIjog
IjEuNS4wIiwKKyAgICAgICAgImVzbGludC1wbHVnaW4tZmxvd3R5cGUiOiAiMi4xOC4xIiwKKyAg
ICAgICAgImVzbGludC1wbHVnaW4taW1wb3J0IjogIjEuMTIuMCIsCisgICAgICAgICJlc2xpbnQt
cGx1Z2luLWpzeC1hMTF5IjogIjIuMi4yIiwKKyAgICAgICAgImVzbGludC1wbHVnaW4tcmVhY3Qi
OiAiNi4zLjAiLAorICAgICAgICAiZXh0cmFjdC10ZXh0LXdlYnBhY2stcGx1Z2luIjogIjEuMC4x
IiwKKyAgICAgICAgImZpbGUtbG9hZGVyIjogIjAuOS4wIiwKKyAgICAgICAgImZpbGVzaXplIjog
IjMuMy4wIiwKKyAgICAgICAgImZpbmQtY2FjaGUtZGlyIjogIjAuMS4xIiwKKyAgICAgICAgImZz
LWV4dHJhIjogIjAuMzAuMCIsCisgICAgICAgICJmc2V2ZW50cyI6ICIxLjAuMTQiLAorICAgICAg
ICAiZ3ppcC1zaXplIjogIjMuMC4wIiwKKyAgICAgICAgImh0bWwtd2VicGFjay1wbHVnaW4iOiAi
Mi4yMi4wIiwKKyAgICAgICAgImh0dHAtcHJveHktbWlkZGxld2FyZSI6ICIwLjE3LjEiLAorICAg
ICAgICAiamVzdCI6ICIxNS4xLjEiLAorICAgICAgICAianNvbi1sb2FkZXIiOiAiMC41LjQiLAor
ICAgICAgICAib2JqZWN0LWFzc2lnbiI6ICI0LjEuMCIsCisgICAgICAgICJwYXRoLWV4aXN0cyI6
ICIyLjEuMCIsCisgICAgICAgICJwb3N0Y3NzLWxvYWRlciI6ICIwLjEzLjAiLAorICAgICAgICAi
cHJvbWlzZSI6ICI3LjEuMSIsCisgICAgICAgICJyZWFjdC1kZXYtdXRpbHMiOiAiMC4yLjEiLAor
ICAgICAgICAicmVjdXJzaXZlLXJlYWRkaXIiOiAiMi4xLjAiLAorICAgICAgICAicmltcmFmIjog
IjIuNS40IiwKKyAgICAgICAgInN0cmlwLWFuc2kiOiAiMy4wLjEiLAorICAgICAgICAic3R5bGUt
bG9hZGVyIjogIjAuMTMuMSIsCisgICAgICAgICJ1cmwtbG9hZGVyIjogIjAuNS43IiwKKyAgICAg
ICAgIndlYnBhY2siOiAiMS4xMy4yIiwKKyAgICAgICAgIndlYnBhY2stZGV2LXNlcnZlciI6ICIx
LjE2LjEiLAorICAgICAgICAid2hhdHdnLWZldGNoIjogIjEuMC4wIgorICAgICAgfSwKKyAgICAg
ICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJhYmFiIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuMC4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImFiYnJldiI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIxLjAuOSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJhY2NlcHRzIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjEuMy4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgIm1pbWUtdHlw
ZXMiOiAiMi4xLjEyIiwKKyAgICAgICAgICAgICJuZWdvdGlhdG9yIjogIjAuNi4xIgorICAgICAg
ICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImFjb3JuIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjQuMC4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImFjb3JuLWdsb2JhbHMiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMS4wLjkiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYWNv
cm4iOiAiMi43LjAiCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogewor
ICAgICAgICAgICAgImFjb3JuIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyLjcuMCIs
CisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRy
dWUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJhY29y
bi1qc3giOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4wLjEiLAorICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICAgICAiYWNvcm4iOiAiMy4zLjAiCisgICAgICAgICAgfSwKKyAgICAgICAg
ICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAgICAgImFjb3JuIjogeworICAgICAgICAgICAg
ICAidmVyc2lvbiI6ICIzLjMuMCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJhanYiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNC43LjQiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiY28iOiAiNC42LjAiLAorICAgICAgICAg
ICAgImpzb24tc3RhYmxlLXN0cmluZ2lmeSI6ICIxLjAuMSIKKyAgICAgICAgICB9CisgICAgICAg
IH0sCisgICAgICAgICJhanYta2V5d29yZHMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4x
LjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQor
ICAgICAgICB9LAorICAgICAgICAiYWxpZ24tdGV4dCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIwLjEuNCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJraW5kLW9mIjogIjMu
MC40IiwKKyAgICAgICAgICAgICJsb25nZXN0IjogIjEuMC4xIiwKKyAgICAgICAgICAgICJyZXBl
YXQtc3RyaW5nIjogIjEuNS40IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImFs
cGhhbnVtLXNvcnQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAg
ICAgICAiYW1kZWZpbmUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAor
ICAgICAgICAiYW5zaS1lc2NhcGVzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuNC4wIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAg
ICAgfSwKKyAgICAgICAgImFuc2ktaHRtbCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjAu
NSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisg
ICAgICAgIH0sCisgICAgICAgICJhbnNpLXJlZ2V4IjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjIuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRy
dWUKKyAgICAgICAgfSwKKyAgICAgICAgImFuc2ktc3R5bGVzIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjIuMi4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImFuc2ljb2xvcnMiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMC4yLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiYW55bWF0Y2giOiB7CisgICAgICAg
ICAgInZlcnNpb24iOiAiMS4zLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAi
YXJyaWZ5IjogIjEuMC4xIiwKKyAgICAgICAgICAgICJtaWNyb21hdGNoIjogIjIuMy4xMSIKKyAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJhcHBlbmQtdHJhbnNmb3JtIjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjAuMy4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImFyZ3BhcnNlIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC43IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAgICAgInNwcmludGYtanMiOiAiMS4wLjMiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAiYXJyLWRpZmYiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYXJyLWZsYXR0ZW4iOiAiMS4wLjEiCisgICAgICAg
ICAgfQorICAgICAgICB9LAorICAgICAgICAiYXJyLWZsYXR0ZW4iOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMS4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiYXJyYXktZGlmZmVyIjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImFycmF5LWVxdWFsIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImFycmF5LWZsYXR0
ZW4iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjEiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiYXJy
YXktdW5pb24iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICAgICAiYXJyYXktdW5pcSI6ICIxLjAuMyIKKyAgICAgICAgICB9Cisg
ICAgICAgIH0sCisgICAgICAgICJhcnJheS11bmlxIjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjEuMC4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRy
dWUKKyAgICAgICAgfSwKKyAgICAgICAgImFycmF5LXVuaXF1ZSI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIwLjIuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJhcnJpZnkiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMS4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiYXNhcCI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIyLjAuNSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJhc24xIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjAuMi4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImFzc2VydCI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIxLjQuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJ1dGlsIjog
IjAuMTAuMyIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJhc3NlcnQtcGx1cyI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjIuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJhc3luYyI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjUuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJhc3luYy1l
YWNoIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImFz
eW5ja2l0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNC4wIiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAg
ImF1dG9wcmVmaXhlciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2LjQuMSIsCisgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJy
ZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJicm93c2Vyc2xpc3QiOiAiMS4zLjYiLAorICAgICAg
ICAgICAgImNhbml1c2UtZGIiOiAiMS4wLjMwMDAwNTQwIiwKKyAgICAgICAgICAgICJub3JtYWxp
emUtcmFuZ2UiOiAiMC4xLjIiLAorICAgICAgICAgICAgIm51bTJmcmFjdGlvbiI6ICIxLjIuMiIs
CisgICAgICAgICAgICAicG9zdGNzcyI6ICI1LjIuMiIsCisgICAgICAgICAgICAicG9zdGNzcy12
YWx1ZS1wYXJzZXIiOiAiMy4zLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAi
YXdzLXNpZ24yIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNi4wIiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAg
ICAgImF3czQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS40LjEiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAg
ICAiYmFiZWwtY29kZS1mcmFtZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2LjExLjAiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYi
LAorICAgICAgICAgICAgImNoYWxrIjogIjEuMS4zIiwKKyAgICAgICAgICAgICJlc3V0aWxzIjog
IjIuMC4yIiwKKyAgICAgICAgICAgICJqcy10b2tlbnMiOiAiMi4wLjAiCisgICAgICAgICAgfQor
ICAgICAgICB9LAorICAgICAgICAiYmFiZWwtY29yZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICI2LjE0LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYmFiZWwtY29kZS1m
cmFtZSI6ICI2LjExLjAiLAorICAgICAgICAgICAgImJhYmVsLWdlbmVyYXRvciI6ICI2LjE0LjAi
LAorICAgICAgICAgICAgImJhYmVsLWhlbHBlcnMiOiAiNi44LjAiLAorICAgICAgICAgICAgImJh
YmVsLW1lc3NhZ2VzIjogIjYuOC4wIiwKKyAgICAgICAgICAgICJiYWJlbC1yZWdpc3RlciI6ICI2
LjE0LjAiLAorICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IiwKKyAgICAgICAg
ICAgICJiYWJlbC10ZW1wbGF0ZSI6ICI2LjE1LjAiLAorICAgICAgICAgICAgImJhYmVsLXRyYXZl
cnNlIjogIjYuMTUuMCIsCisgICAgICAgICAgICAiYmFiZWwtdHlwZXMiOiAiNi4xNS4wIiwKKyAg
ICAgICAgICAgICJiYWJ5bG9uIjogIjYuMTEuMiIsCisgICAgICAgICAgICAiY29udmVydC1zb3Vy
Y2UtbWFwIjogIjEuMy4wIiwKKyAgICAgICAgICAgICJkZWJ1ZyI6ICIyLjIuMCIsCisgICAgICAg
ICAgICAianNvbjUiOiAiMC40LjAiLAorICAgICAgICAgICAgImxvZGFzaCI6ICI0LjE2LjIiLAor
ICAgICAgICAgICAgIm1pbmltYXRjaCI6ICIzLjAuMyIsCisgICAgICAgICAgICAicGF0aC1leGlz
dHMiOiAiMS4wLjAiLAorICAgICAgICAgICAgInBhdGgtaXMtYWJzb2x1dGUiOiAiMS4wLjAiLAor
ICAgICAgICAgICAgInByaXZhdGUiOiAiMC4xLjYiLAorICAgICAgICAgICAgInNoZWJhbmctcmVn
ZXgiOiAiMS4wLjAiLAorICAgICAgICAgICAgInNsYXNoIjogIjEuMC4wIiwKKyAgICAgICAgICAg
ICJzb3VyY2UtbWFwIjogIjAuNS42IgorICAgICAgICAgIH0sCisgICAgICAgICAgImRlcGVuZGVu
Y2llcyI6IHsKKyAgICAgICAgICAgICJwYXRoLWV4aXN0cyI6IHsKKyAgICAgICAgICAgICAgInZl
cnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9
LAorICAgICAgICAiYmFiZWwtZXNsaW50IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMS4y
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisg
ICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLXRyYXZlcnNlIjogIjYu
MTUuMCIsCisgICAgICAgICAgICAiYmFiZWwtdHlwZXMiOiAiNi4xNS4wIiwKKyAgICAgICAgICAg
ICJiYWJ5bG9uIjogIjYuMTEuMiIsCisgICAgICAgICAgICAibG9kYXNoLmFzc2lnbiI6ICI0LjIu
MCIsCisgICAgICAgICAgICAibG9kYXNoLnBpY2tieSI6ICI0LjYuMCIKKyAgICAgICAgICB9Cisg
ICAgICAgIH0sCisgICAgICAgICJiYWJlbC1nZW5lcmF0b3IiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiNi4xNC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLW1l
c3NhZ2VzIjogIjYuOC4wIiwKKyAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIs
CisgICAgICAgICAgICAiYmFiZWwtdHlwZXMiOiAiNi4xNS4wIiwKKyAgICAgICAgICAgICJkZXRl
Y3QtaW5kZW50IjogIjMuMC4xIiwKKyAgICAgICAgICAgICJsb2Rhc2giOiAiNC4xNi4yIiwKKyAg
ICAgICAgICAgICJzb3VyY2UtbWFwIjogIjAuNS42IgorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgImJhYmVsLWhlbHBlci1idWlsZGVyLWJpbmFyeS1hc3NpZ25tZW50LW9wZXJhdG9y
LXZpc2l0b3IiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNi4xNS4wIiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAgICAgImJhYmVsLWhlbHBlci1leHBsb2RlLWFzc2lnbmFibGUtZXhw
cmVzc2lvbiI6ICI2LjguMCIsCisgICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYi
LAorICAgICAgICAgICAgImJhYmVsLXR5cGVzIjogIjYuMTUuMCIKKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJiYWJlbC1oZWxwZXItYnVpbGRlci1yZWFjdC1qc3giOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiNi45LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAg
ICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiLAorICAgICAgICAgICAgImJhYmVsLXR5cGVzIjog
IjYuMTUuMCIsCisgICAgICAgICAgICAiZXN1dGlscyI6ICIyLjAuMiIsCisgICAgICAgICAgICAi
bG9kYXNoIjogIjQuMTYuMiIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJiYWJl
bC1oZWxwZXItY2FsbC1kZWxlZ2F0ZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2LjguMCIs
CisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJiYWJlbC1oZWxwZXItaG9pc3QtdmFy
aWFibGVzIjogIjYuOC4wIiwKKyAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIs
CisgICAgICAgICAgICAiYmFiZWwtdHJhdmVyc2UiOiAiNi4xNS4wIiwKKyAgICAgICAgICAgICJi
YWJlbC10eXBlcyI6ICI2LjE1LjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAi
YmFiZWwtaGVscGVyLWRlZmluZS1tYXAiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNi45LjAi
LAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYmFiZWwtaGVscGVyLWZ1bmN0aW9u
LW5hbWUiOiAiNi44LjAiLAorICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IiwK
KyAgICAgICAgICAgICJiYWJlbC10eXBlcyI6ICI2LjE1LjAiLAorICAgICAgICAgICAgImxvZGFz
aCI6ICI0LjE2LjIiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYmFiZWwtaGVs
cGVyLWV4cGxvZGUtYXNzaWduYWJsZS1leHByZXNzaW9uIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjYuOC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLXJ1bnRp
bWUiOiAiNi4xMS42IiwKKyAgICAgICAgICAgICJiYWJlbC10cmF2ZXJzZSI6ICI2LjE1LjAiLAor
ICAgICAgICAgICAgImJhYmVsLXR5cGVzIjogIjYuMTUuMCIKKyAgICAgICAgICB9CisgICAgICAg
IH0sCisgICAgICAgICJiYWJlbC1oZWxwZXItZnVuY3Rpb24tbmFtZSI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICI2LjguMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJiYWJl
bC1oZWxwZXItZ2V0LWZ1bmN0aW9uLWFyaXR5IjogIjYuOC4wIiwKKyAgICAgICAgICAgICJiYWJl
bC1ydW50aW1lIjogIjYuMTEuNiIsCisgICAgICAgICAgICAiYmFiZWwtdGVtcGxhdGUiOiAiNi4x
NS4wIiwKKyAgICAgICAgICAgICJiYWJlbC10cmF2ZXJzZSI6ICI2LjE1LjAiLAorICAgICAgICAg
ICAgImJhYmVsLXR5cGVzIjogIjYuMTUuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAg
ICAgICJiYWJlbC1oZWxwZXItZ2V0LWZ1bmN0aW9uLWFyaXR5IjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjYuOC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLXJ1
bnRpbWUiOiAiNi4xMS42IiwKKyAgICAgICAgICAgICJiYWJlbC10eXBlcyI6ICI2LjE1LjAiCisg
ICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYmFiZWwtaGVscGVyLWhvaXN0LXZhcmlh
YmxlcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2LjguMCIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIsCisgICAgICAgICAgICAi
YmFiZWwtdHlwZXMiOiAiNi4xNS4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAg
ImJhYmVsLWhlbHBlci1vcHRpbWlzZS1jYWxsLWV4cHJlc3Npb24iOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiNi44LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYmFiZWwt
cnVudGltZSI6ICI2LjExLjYiLAorICAgICAgICAgICAgImJhYmVsLXR5cGVzIjogIjYuMTUuMCIK
KyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJiYWJlbC1oZWxwZXItcmVnZXgiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiNi45LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiLAorICAgICAgICAgICAgImJhYmVsLXR5
cGVzIjogIjYuMTUuMCIsCisgICAgICAgICAgICAibG9kYXNoIjogIjQuMTYuMiIKKyAgICAgICAg
ICB9CisgICAgICAgIH0sCisgICAgICAgICJiYWJlbC1oZWxwZXItcmVtYXAtYXN5bmMtdG8tZ2Vu
ZXJhdG9yIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMTEuMiIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgICAgICJiYWJlbC1oZWxwZXItZnVuY3Rpb24tbmFtZSI6ICI2LjguMCIs
CisgICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiLAorICAgICAgICAgICAgImJh
YmVsLXRlbXBsYXRlIjogIjYuMTUuMCIsCisgICAgICAgICAgICAiYmFiZWwtdHJhdmVyc2UiOiAi
Ni4xNS4wIiwKKyAgICAgICAgICAgICJiYWJlbC10eXBlcyI6ICI2LjE1LjAiCisgICAgICAgICAg
fQorICAgICAgICB9LAorICAgICAgICAiYmFiZWwtaGVscGVyLXJlcGxhY2Utc3VwZXJzIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMTQuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgICAgICJiYWJlbC1oZWxwZXItb3B0aW1pc2UtY2FsbC1leHByZXNzaW9uIjogIjYuOC4wIiwK
KyAgICAgICAgICAgICJiYWJlbC1tZXNzYWdlcyI6ICI2LjguMCIsCisgICAgICAgICAgICAiYmFi
ZWwtcnVudGltZSI6ICI2LjExLjYiLAorICAgICAgICAgICAgImJhYmVsLXRlbXBsYXRlIjogIjYu
MTUuMCIsCisgICAgICAgICAgICAiYmFiZWwtdHJhdmVyc2UiOiAiNi4xNS4wIiwKKyAgICAgICAg
ICAgICJiYWJlbC10eXBlcyI6ICI2LjE1LjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAiYmFiZWwtaGVscGVycyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2LjguMCIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIs
CisgICAgICAgICAgICAiYmFiZWwtdGVtcGxhdGUiOiAiNi4xNS4wIgorICAgICAgICAgIH0KKyAg
ICAgICAgfSwKKyAgICAgICAgImJhYmVsLWplc3QiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
MTUuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLWNvcmUiOiAi
Ni4xNC4wIiwKKyAgICAgICAgICAgICJiYWJlbC1wbHVnaW4taXN0YW5idWwiOiAiMi4wLjEiLAor
ICAgICAgICAgICAgImJhYmVsLXByZXNldC1qZXN0IjogIjE1LjAuMCIKKyAgICAgICAgICB9Cisg
ICAgICAgIH0sCisgICAgICAgICJiYWJlbC1sb2FkZXIiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiNi4yLjUiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAibG9hZGVyLXV0aWxz
IjogIjAuMi4xNiIsCisgICAgICAgICAgICAibWtkaXJwIjogIjAuNS4xIiwKKyAgICAgICAgICAg
ICJvYmplY3QtYXNzaWduIjogIjQuMS4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg
ICAgImJhYmVsLW1lc3NhZ2VzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuOC4wIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42Igor
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVsLXBsdWdpbi1jaGVjay1lczIw
MTUtY29uc3RhbnRzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuOC4wIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IgorICAgICAg
ICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVsLXBsdWdpbi1pc3RhbmJ1bCI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIyLjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
ICAgICJmaW5kLXVwIjogIjEuMS4yIiwKKyAgICAgICAgICAgICJpc3RhbmJ1bC1saWItaW5zdHJ1
bWVudCI6ICIxLjEuMyIsCisgICAgICAgICAgICAidGVzdC1leGNsdWRlIjogIjIuMS4yIgorICAg
ICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVsLXBsdWdpbi1qZXN0LWhvaXN0Ijog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjE1LjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJiYWJlbC1w
bHVnaW4tc3ludGF4LWFzeW5jLWZ1bmN0aW9ucyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2
LjEzLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZQorICAgICAgICB9LAorICAgICAgICAiYmFiZWwtcGx1Z2luLXN5bnRheC1jbGFzcy1wcm9wZXJ0
aWVzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMTMuMCIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJi
YWJlbC1wbHVnaW4tc3ludGF4LWV4cG9uZW50aWF0aW9uLW9wZXJhdG9yIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjYuMTMuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJiYWJlbC1wbHVnaW4tc3ludGF4
LWZsb3ciOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNi4xMy4wIiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAg
ImJhYmVsLXBsdWdpbi1zeW50YXgtanN4IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMTMu
MCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisg
ICAgICAgIH0sCisgICAgICAgICJiYWJlbC1wbHVnaW4tc3ludGF4LW9iamVjdC1yZXN0LXNwcmVh
ZCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2LjEzLjAiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiYmFi
ZWwtcGx1Z2luLXN5bnRheC10cmFpbGluZy1mdW5jdGlvbi1jb21tYXMiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiNi4xMy4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zv
cm0tYXN5bmMtdG8tZ2VuZXJhdG9yIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuOC4wIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLWhlbHBlci1yZW1hcC1hc3lu
Yy10by1nZW5lcmF0b3IiOiAiNi4xMS4yIiwKKyAgICAgICAgICAgICJiYWJlbC1wbHVnaW4tc3lu
dGF4LWFzeW5jLWZ1bmN0aW9ucyI6ICI2LjEzLjAiLAorICAgICAgICAgICAgImJhYmVsLXJ1bnRp
bWUiOiAiNi4xMS42IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVsLXBs
dWdpbi10cmFuc2Zvcm0tY2xhc3MtcHJvcGVydGllcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICI2LjExLjUiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYmFiZWwtaGVscGVy
LWZ1bmN0aW9uLW5hbWUiOiAiNi44LjAiLAorICAgICAgICAgICAgImJhYmVsLXBsdWdpbi1zeW50
YXgtY2xhc3MtcHJvcGVydGllcyI6ICI2LjEzLjAiLAorICAgICAgICAgICAgImJhYmVsLXJ1bnRp
bWUiOiAiNi4xMS42IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVsLXBs
dWdpbi10cmFuc2Zvcm0tZXMyMDE1LWFycm93LWZ1bmN0aW9ucyI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICI2LjguMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJiYWJlbC1y
dW50aW1lIjogIjYuMTEuNiIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJiYWJl
bC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1ibG9jay1zY29wZWQtZnVuY3Rpb25zIjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjYuOC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAg
ICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAg
ICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWJsb2NrLXNjb3BpbmciOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiNi4xNS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IiwKKyAgICAgICAgICAgICJiYWJlbC10ZW1w
bGF0ZSI6ICI2LjE1LjAiLAorICAgICAgICAgICAgImJhYmVsLXRyYXZlcnNlIjogIjYuMTUuMCIs
CisgICAgICAgICAgICAiYmFiZWwtdHlwZXMiOiAiNi4xNS4wIiwKKyAgICAgICAgICAgICJsb2Rh
c2giOiAiNC4xNi4yIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVsLXBs
dWdpbi10cmFuc2Zvcm0tZXMyMDE1LWNsYXNzZXMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
Ni4xNC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLWhlbHBlci1k
ZWZpbmUtbWFwIjogIjYuOS4wIiwKKyAgICAgICAgICAgICJiYWJlbC1oZWxwZXItZnVuY3Rpb24t
bmFtZSI6ICI2LjguMCIsCisgICAgICAgICAgICAiYmFiZWwtaGVscGVyLW9wdGltaXNlLWNhbGwt
ZXhwcmVzc2lvbiI6ICI2LjguMCIsCisgICAgICAgICAgICAiYmFiZWwtaGVscGVyLXJlcGxhY2Ut
c3VwZXJzIjogIjYuMTQuMCIsCisgICAgICAgICAgICAiYmFiZWwtbWVzc2FnZXMiOiAiNi44LjAi
LAorICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IiwKKyAgICAgICAgICAgICJi
YWJlbC10ZW1wbGF0ZSI6ICI2LjE1LjAiLAorICAgICAgICAgICAgImJhYmVsLXRyYXZlcnNlIjog
IjYuMTUuMCIsCisgICAgICAgICAgICAiYmFiZWwtdHlwZXMiOiAiNi4xNS4wIgorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWNv
bXB1dGVkLXByb3BlcnRpZXMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNi44LjAiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYmFiZWwtaGVscGVyLWRlZmluZS1tYXAiOiAi
Ni45LjAiLAorICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IiwKKyAgICAgICAg
ICAgICJiYWJlbC10ZW1wbGF0ZSI6ICI2LjE1LjAiCisgICAgICAgICAgfQorICAgICAgICB9LAor
ICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZGVzdHJ1Y3R1cmluZyI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICI2LjkuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIKKyAgICAgICAgICB9CisgICAgICAgIH0s
CisgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1kdXBsaWNhdGUta2V5cyI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2LjguMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIsCisgICAgICAgICAgICAiYmFiZWwt
dHlwZXMiOiAiNi4xNS4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVs
LXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWZvci1vZiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICI2LjguMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJiYWJlbC1ydW50aW1l
IjogIjYuMTEuNiIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJiYWJlbC1wbHVn
aW4tdHJhbnNmb3JtLWVzMjAxNS1mdW5jdGlvbi1uYW1lIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjYuOS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLWhlbHBl
ci1mdW5jdGlvbi1uYW1lIjogIjYuOC4wIiwKKyAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjog
IjYuMTEuNiIsCisgICAgICAgICAgICAiYmFiZWwtdHlwZXMiOiAiNi4xNS4wIgorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWxp
dGVyYWxzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuOC4wIiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IgorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVs
ZXMtYW1kIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuOC4wIiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVsZXMt
Y29tbW9uanMiOiAiNi4xNC4wIiwKKyAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEu
NiIsCisgICAgICAgICAgICAiYmFiZWwtdGVtcGxhdGUiOiAiNi4xNS4wIgorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1vZHVs
ZXMtY29tbW9uanMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNi4xNC4wIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tc3RyaWN0LW1v
ZGUiOiAiNi4xMS4zIiwKKyAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIsCisg
ICAgICAgICAgICAiYmFiZWwtdGVtcGxhdGUiOiAiNi4xNS4wIiwKKyAgICAgICAgICAgICJiYWJl
bC10eXBlcyI6ICI2LjE1LjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYmFi
ZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy1zeXN0ZW1qcyI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICI2LjE0LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAi
YmFiZWwtaGVscGVyLWhvaXN0LXZhcmlhYmxlcyI6ICI2LjguMCIsCisgICAgICAgICAgICAiYmFi
ZWwtcnVudGltZSI6ICI2LjExLjYiLAorICAgICAgICAgICAgImJhYmVsLXRlbXBsYXRlIjogIjYu
MTUuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJiYWJlbC1wbHVnaW4tdHJh
bnNmb3JtLWVzMjAxNS1tb2R1bGVzLXVtZCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2LjEy
LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5z
Zm9ybS1lczIwMTUtbW9kdWxlcy1hbWQiOiAiNi44LjAiLAorICAgICAgICAgICAgImJhYmVsLXJ1
bnRpbWUiOiAiNi4xMS42IiwKKyAgICAgICAgICAgICJiYWJlbC10ZW1wbGF0ZSI6ICI2LjE1LjAi
CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9y
bS1lczIwMTUtb2JqZWN0LXN1cGVyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuOC4wIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLWhlbHBlci1yZXBsYWNlLXN1
cGVycyI6ICI2LjE0LjAiLAorICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42Igor
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0t
ZXMyMDE1LXBhcmFtZXRlcnMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNi4xMS40IiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLWhlbHBlci1jYWxsLWRlbGVnYXRl
IjogIjYuOC4wIiwKKyAgICAgICAgICAgICJiYWJlbC1oZWxwZXItZ2V0LWZ1bmN0aW9uLWFyaXR5
IjogIjYuOC4wIiwKKyAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIsCisgICAg
ICAgICAgICAiYmFiZWwtdGVtcGxhdGUiOiAiNi4xNS4wIiwKKyAgICAgICAgICAgICJiYWJlbC10
cmF2ZXJzZSI6ICI2LjE1LjAiLAorICAgICAgICAgICAgImJhYmVsLXR5cGVzIjogIjYuMTUuMCIK
KyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3Jt
LWVzMjAxNS1zaG9ydGhhbmQtcHJvcGVydGllcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2
LjguMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjog
IjYuMTEuNiIsCisgICAgICAgICAgICAiYmFiZWwtdHlwZXMiOiAiNi4xNS4wIgorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXNw
cmVhZCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2LjguMCIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIKKyAgICAgICAgICB9Cisg
ICAgICAgIH0sCisgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1zdGlja3kt
cmVnZXgiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNi44LjAiLAorICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICAgICAiYmFiZWwtaGVscGVyLXJlZ2V4IjogIjYuOS4wIiwKKyAgICAgICAg
ICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIsCisgICAgICAgICAgICAiYmFiZWwtdHlwZXMi
OiAiNi4xNS4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVsLXBsdWdp
bi10cmFuc2Zvcm0tZXMyMDE1LXRlbXBsYXRlLWxpdGVyYWxzIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjYuOC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLXJ1
bnRpbWUiOiAiNi4xMS42IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVs
LXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXR5cGVvZi1zeW1ib2wiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiNi44LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYmFiZWwt
cnVudGltZSI6ICI2LjExLjYiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYmFi
ZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtdW5pY29kZS1yZWdleCI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICI2LjExLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYmFi
ZWwtaGVscGVyLXJlZ2V4IjogIjYuOS4wIiwKKyAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjog
IjYuMTEuNiIsCisgICAgICAgICAgICAicmVnZXhwdS1jb3JlIjogIjIuMC4wIgorICAgICAgICAg
IH0sCisgICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgICAgICJyZWdleHB1LWNv
cmUiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3JlZ2V4cHUtY29yZS8tL3Jl
Z2V4cHUtY29yZS0yLjAuMC50Z3oiLAorICAgICAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
U2RBNGczdU56NHY2VzVwQ0U1azQ1dW9xNGtBPSIsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgInJlZ2VuZXJh
dGUiOiAiMS4zLjEiLAorICAgICAgICAgICAgICAgICJyZWdqc2dlbiI6ICIwLjIuMCIsCisgICAg
ICAgICAgICAgICAgInJlZ2pzcGFyc2VyIjogIjAuMS41IgorICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYmFiZWwtcGx1Z2lu
LXRyYW5zZm9ybS1leHBvbmVudGlhdGlvbi1vcGVyYXRvciI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICI2LjguMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJiYWJlbC1oZWxw
ZXItYnVpbGRlci1iaW5hcnktYXNzaWdubWVudC1vcGVyYXRvci12aXNpdG9yIjogIjYuMTUuMCIs
CisgICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXN5bnRheC1leHBvbmVudGlhdGlvbi1vcGVyYXRv
ciI6ICI2LjEzLjAiLAorICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IgorICAg
ICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZmxv
dy1zdHJpcC10eXBlcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2LjE0LjAiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXN5bnRheC1mbG93IjogIjYu
MTMuMCIsCisgICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiCisgICAgICAgICAg
fQorICAgICAgICB9LAorICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1vYmplY3QtcmVz
dC1zcHJlYWQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNi44LjAiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXN5bnRheC1vYmplY3QtcmVzdC1zcHJl
YWQiOiAiNi4xMy4wIiwKKyAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIKKyAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJl
YWN0LWNvbnN0YW50LWVsZW1lbnRzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuOS4xIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42
IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zv
cm0tcmVhY3QtZGlzcGxheS1uYW1lIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuOC4wIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42
IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zv
cm0tcmVhY3QtanN4IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuOC4wIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLWhlbHBlci1idWlsZGVyLXJlYWN0LWpzeCI6
ICI2LjkuMCIsCisgICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXN5bnRheC1qc3giOiAiNi4xMy4w
IiwKKyAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIKKyAgICAgICAgICB9Cisg
ICAgICAgIH0sCisgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWpzeC1zZWxm
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMTEuMCIsCisgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgICAgICJiYWJlbC1wbHVnaW4tc3ludGF4LWpzeCI6ICI2LjEzLjAiLAorICAgICAg
ICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IgorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVhY3QtanN4LXNvdXJjZSI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICI2LjkuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
ICAgICJiYWJlbC1wbHVnaW4tc3ludGF4LWpzeCI6ICI2LjEzLjAiLAorICAgICAgICAgICAgImJh
YmVsLXJ1bnRpbWUiOiAiNi4xMS42IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAg
ImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVnZW5lcmF0b3IiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiNi4xNC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLWNv
cmUiOiAiNi4xNC4wIiwKKyAgICAgICAgICAgICJiYWJlbC1wbHVnaW4tc3ludGF4LWFzeW5jLWZ1
bmN0aW9ucyI6ICI2LjEzLjAiLAorICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0t
ZXMyMDE1LWJsb2NrLXNjb3BpbmciOiAiNi4xNS4wIiwKKyAgICAgICAgICAgICJiYWJlbC1wbHVn
aW4tdHJhbnNmb3JtLWVzMjAxNS1mb3Itb2YiOiAiNi44LjAiLAorICAgICAgICAgICAgImJhYmVs
LXJ1bnRpbWUiOiAiNi4xMS42IiwKKyAgICAgICAgICAgICJiYWJlbC10cmF2ZXJzZSI6ICI2LjE1
LjAiLAorICAgICAgICAgICAgImJhYmVsLXR5cGVzIjogIjYuMTUuMCIsCisgICAgICAgICAgICAi
YmFieWxvbiI6ICI2LjExLjIiLAorICAgICAgICAgICAgInByaXZhdGUiOiAiMC4xLjYiCisgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1ydW50
aW1lIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMTUuMCIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIKKyAgICAgICAgICB9Cisg
ICAgICAgIH0sCisgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXN0cmljdC1tb2RlIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMTEuMyIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIsCisgICAgICAgICAgICAiYmFiZWwt
dHlwZXMiOiAiNi4xNS4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVs
LXByZXNldC1lczIwMTUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNi4xNC4wIiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLXBsdWdpbi1jaGVjay1lczIwMTUtY29u
c3RhbnRzIjogIjYuOC4wIiwKKyAgICAgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVz
MjAxNS1hcnJvdy1mdW5jdGlvbnMiOiAiNi44LjAiLAorICAgICAgICAgICAgImJhYmVsLXBsdWdp
bi10cmFuc2Zvcm0tZXMyMDE1LWJsb2NrLXNjb3BlZC1mdW5jdGlvbnMiOiAiNi44LjAiLAorICAg
ICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWJsb2NrLXNjb3BpbmciOiAi
Ni4xNS4wIiwKKyAgICAgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1jbGFz
c2VzIjogIjYuMTQuMCIsCisgICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIw
MTUtY29tcHV0ZWQtcHJvcGVydGllcyI6ICI2LjguMCIsCisgICAgICAgICAgICAiYmFiZWwtcGx1
Z2luLXRyYW5zZm9ybS1lczIwMTUtZGVzdHJ1Y3R1cmluZyI6ICI2LjkuMCIsCisgICAgICAgICAg
ICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZHVwbGljYXRlLWtleXMiOiAiNi44LjAi
LAorICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LWZvci1vZiI6ICI2
LjguMCIsCisgICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtZnVuY3Rp
b24tbmFtZSI6ICI2LjkuMCIsCisgICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1l
czIwMTUtbGl0ZXJhbHMiOiAiNi44LjAiLAorICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFu
c2Zvcm0tZXMyMDE1LW1vZHVsZXMtYW1kIjogIjYuOC4wIiwKKyAgICAgICAgICAgICJiYWJlbC1w
bHVnaW4tdHJhbnNmb3JtLWVzMjAxNS1tb2R1bGVzLWNvbW1vbmpzIjogIjYuMTQuMCIsCisgICAg
ICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtbW9kdWxlcy1zeXN0ZW1qcyI6
ICI2LjE0LjAiLAorICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LW1v
ZHVsZXMtdW1kIjogIjYuMTIuMCIsCisgICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9y
bS1lczIwMTUtb2JqZWN0LXN1cGVyIjogIjYuOC4wIiwKKyAgICAgICAgICAgICJiYWJlbC1wbHVn
aW4tdHJhbnNmb3JtLWVzMjAxNS1wYXJhbWV0ZXJzIjogIjYuMTEuNCIsCisgICAgICAgICAgICAi
YmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtc2hvcnRoYW5kLXByb3BlcnRpZXMiOiAiNi44
LjAiLAorICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXMyMDE1LXNwcmVhZCI6
ICI2LjguMCIsCisgICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtc3Rp
Y2t5LXJlZ2V4IjogIjYuOC4wIiwKKyAgICAgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3Jt
LWVzMjAxNS10ZW1wbGF0ZS1saXRlcmFscyI6ICI2LjguMCIsCisgICAgICAgICAgICAiYmFiZWwt
cGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtdHlwZW9mLXN5bWJvbCI6ICI2LjguMCIsCisgICAgICAg
ICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1lczIwMTUtdW5pY29kZS1yZWdleCI6ICI2LjEx
LjAiLAorICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVnZW5lcmF0b3IiOiAi
Ni4xNC4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVsLXByZXNldC1l
czIwMTYiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNi4xMS4zIiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tZXhwb25lbnRpYXRpb24t
b3BlcmF0b3IiOiAiNi44LjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYmFi
ZWwtcHJlc2V0LWVzMjAxNyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2LjE0LjAiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXN5bnRheC10cmFpbGlu
Zy1mdW5jdGlvbi1jb21tYXMiOiAiNi4xMy4wIiwKKyAgICAgICAgICAgICJiYWJlbC1wbHVnaW4t
dHJhbnNmb3JtLWFzeW5jLXRvLWdlbmVyYXRvciI6ICI2LjguMCIKKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJiYWJlbC1wcmVzZXQtamVzdCI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIxNS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYmFiZWwtcGx1
Z2luLWplc3QtaG9pc3QiOiAiMTUuMC4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg
ICAgImJhYmVsLXByZXNldC1sYXRlc3QiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNi4xNC4w
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisg
ICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhYmVsLXByZXNldC1lczIwMTUi
OiAiNi4xNC4wIiwKKyAgICAgICAgICAgICJiYWJlbC1wcmVzZXQtZXMyMDE2IjogIjYuMTEuMyIs
CisgICAgICAgICAgICAiYmFiZWwtcHJlc2V0LWVzMjAxNyI6ICI2LjE0LjAiCisgICAgICAgICAg
fQorICAgICAgICB9LAorICAgICAgICAiYmFiZWwtcHJlc2V0LXJlYWN0IjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjYuMTEuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJi
YWJlbC1wbHVnaW4tc3ludGF4LWZsb3ciOiAiNi4xMy4wIiwKKyAgICAgICAgICAgICJiYWJlbC1w
bHVnaW4tc3ludGF4LWpzeCI6ICI2LjEzLjAiLAorICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10
cmFuc2Zvcm0tZmxvdy1zdHJpcC10eXBlcyI6ICI2LjE0LjAiLAorICAgICAgICAgICAgImJhYmVs
LXBsdWdpbi10cmFuc2Zvcm0tcmVhY3QtZGlzcGxheS1uYW1lIjogIjYuOC4wIiwKKyAgICAgICAg
ICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWpzeCI6ICI2LjguMCIsCisgICAgICAg
ICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1qc3gtc2VsZiI6ICI2LjExLjAiLAor
ICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVhY3QtanN4LXNvdXJjZSI6ICI2
LjkuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJiYWJlbC1wcmVzZXQtcmVh
Y3QtYXBwIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4xIiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tY2xhc3MtcHJvcGVydGll
cyI6ICI2LjExLjUiLAorICAgICAgICAgICAgImJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tb2JqZWN0
LXJlc3Qtc3ByZWFkIjogIjYuOC4wIiwKKyAgICAgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNm
b3JtLXJlYWN0LWNvbnN0YW50LWVsZW1lbnRzIjogIjYuOS4xIiwKKyAgICAgICAgICAgICJiYWJl
bC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWpzeC1zZWxmIjogIjYuMTEuMCIsCisgICAgICAgICAg
ICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1yZWFjdC1qc3gtc291cmNlIjogIjYuOS4wIiwKKyAg
ICAgICAgICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlZ2VuZXJhdG9yIjogIjYuMTQuMCIs
CisgICAgICAgICAgICAiYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1ydW50aW1lIjogIjYuMTUuMCIs
CisgICAgICAgICAgICAiYmFiZWwtcHJlc2V0LWxhdGVzdCI6ICI2LjE0LjAiLAorICAgICAgICAg
ICAgImJhYmVsLXByZXNldC1yZWFjdCI6ICI2LjExLjEiLAorICAgICAgICAgICAgImJhYmVsLXJ1
bnRpbWUiOiAiNi4xMS42IgorICAgICAgICAgIH0sCisgICAgICAgICAgImRlcGVuZGVuY2llcyI6
IHsKKyAgICAgICAgICAgICJhbWRlZmluZSI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAi
MS4wLjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJk
ZXYiOiB0cnVlCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImFuc2ktcmVnZXgiOiB7Cisg
ICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICJhbnNpLXN0eWxlcyI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMi4yLjEi
LAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0
cnVlCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImJhYmVsLWNvZGUtZnJhbWUiOiB7Cisg
ICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjYuMTEuMCIsCisgICAgICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiLAorICAg
ICAgICAgICAgICAgICJjaGFsayI6ICIxLjEuMyIsCisgICAgICAgICAgICAgICAgImVzdXRpbHMi
OiAiMi4wLjIiLAorICAgICAgICAgICAgICAgICJqcy10b2tlbnMiOiAiMi4wLjAiCisgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiYmFiZWwtY29yZSI6IHsKKyAg
ICAgICAgICAgICAgInZlcnNpb24iOiAiNi4xNC4wIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAgICAgICAgICJiYWJlbC1jb2RlLWZyYW1lIjogIjYuMTEuMCIsCisg
ICAgICAgICAgICAgICAgImJhYmVsLWdlbmVyYXRvciI6ICI2LjE0LjAiLAorICAgICAgICAgICAg
ICAgICJiYWJlbC1oZWxwZXJzIjogIjYuOC4wIiwKKyAgICAgICAgICAgICAgICAiYmFiZWwtbWVz
c2FnZXMiOiAiNi44LjAiLAorICAgICAgICAgICAgICAgICJiYWJlbC1yZWdpc3RlciI6ICI2LjE0
LjAiLAorICAgICAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIsCisgICAgICAg
ICAgICAgICAgImJhYmVsLXRlbXBsYXRlIjogIjYuMTUuMCIsCisgICAgICAgICAgICAgICAgImJh
YmVsLXRyYXZlcnNlIjogIjYuMTUuMCIsCisgICAgICAgICAgICAgICAgImJhYmVsLXR5cGVzIjog
IjYuMTUuMCIsCisgICAgICAgICAgICAgICAgImJhYnlsb24iOiAiNi4xMS4yIiwKKyAgICAgICAg
ICAgICAgICAiY29udmVydC1zb3VyY2UtbWFwIjogIjEuMy4wIiwKKyAgICAgICAgICAgICAgICAi
ZGVidWciOiAiMi4yLjAiLAorICAgICAgICAgICAgICAgICJqc29uNSI6ICIwLjQuMCIsCisgICAg
ICAgICAgICAgICAgImxvZGFzaCI6ICI0LjE2LjIiLAorICAgICAgICAgICAgICAgICJtaW5pbWF0
Y2giOiAiMy4wLjMiLAorICAgICAgICAgICAgICAgICJwYXRoLWV4aXN0cyI6ICIxLjAuMCIsCisg
ICAgICAgICAgICAgICAgInBhdGgtaXMtYWJzb2x1dGUiOiAiMS4wLjAiLAorICAgICAgICAgICAg
ICAgICJwcml2YXRlIjogIjAuMS42IiwKKyAgICAgICAgICAgICAgICAic2hlYmFuZy1yZWdleCI6
ICIxLjAuMCIsCisgICAgICAgICAgICAgICAgInNsYXNoIjogIjEuMC4wIiwKKyAgICAgICAgICAg
ICAgICAic291cmNlLW1hcCI6ICIwLjUuNiIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICJiYWJlbC1nZW5lcmF0b3IiOiB7CisgICAgICAgICAgICAgICJ2ZXJz
aW9uIjogIjYuMTQuMCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
ICAgICAgICAiYmFiZWwtbWVzc2FnZXMiOiAiNi44LjAiLAorICAgICAgICAgICAgICAgICJiYWJl
bC1ydW50aW1lIjogIjYuMTEuNiIsCisgICAgICAgICAgICAgICAgImJhYmVsLXR5cGVzIjogIjYu
MTUuMCIsCisgICAgICAgICAgICAgICAgImRldGVjdC1pbmRlbnQiOiAiMy4wLjEiLAorICAgICAg
ICAgICAgICAgICJsb2Rhc2giOiAiNC4xNi4yIiwKKyAgICAgICAgICAgICAgICAic291cmNlLW1h
cCI6ICIwLjUuNiIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICJiYWJlbC1oZWxwZXJzIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICI2LjguMCIsCisg
ICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAiYmFiZWwtcnVu
dGltZSI6ICI2LjExLjYiLAorICAgICAgICAgICAgICAgICJiYWJlbC10ZW1wbGF0ZSI6ICI2LjE1
LjAiCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiYmFiZWwt
bWVzc2FnZXMiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjYuOC4wIiwKKyAgICAgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjog
IjYuMTEuNiIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJi
YWJlbC1yZWdpc3RlciI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiNi4xNC4wIiwKKyAg
ICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICJiYWJlbC1jb3Jl
IjogIjYuMTQuMCIsCisgICAgICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4xMS42IiwK
KyAgICAgICAgICAgICAgICAiY29yZS1qcyI6ICIyLjQuMSIsCisgICAgICAgICAgICAgICAgImhv
bWUtb3ItdG1wIjogIjEuMC4wIiwKKyAgICAgICAgICAgICAgICAibG9kYXNoIjogIjQuMTYuMiIs
CisgICAgICAgICAgICAgICAgIm1rZGlycCI6ICIwLjUuMSIsCisgICAgICAgICAgICAgICAgInBh
dGgtZXhpc3RzIjogIjEuMC4wIiwKKyAgICAgICAgICAgICAgICAic291cmNlLW1hcC1zdXBwb3J0
IjogIjAuMi4xMCIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICJiYWJlbC1ydW50aW1lIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICI2LjExLjYiLAor
ICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgImNvcmUtanMi
OiAiMi40LjEiLAorICAgICAgICAgICAgICAgICJyZWdlbmVyYXRvci1ydW50aW1lIjogIjAuOS41
IgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImJhYmVsLXRl
bXBsYXRlIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICI2LjE1LjAiLAorICAgICAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
ICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAi
Ni4xMS42IiwKKyAgICAgICAgICAgICAgICAiYmFiZWwtdHJhdmVyc2UiOiAiNi4xNS4wIiwKKyAg
ICAgICAgICAgICAgICAiYmFiZWwtdHlwZXMiOiAiNi4xNS4wIiwKKyAgICAgICAgICAgICAgICAi
YmFieWxvbiI6ICI2LjExLjIiLAorICAgICAgICAgICAgICAgICJsb2Rhc2giOiAiNC4xNi4yIgor
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImJhYmVsLXRyYXZl
cnNlIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICI2LjE1LjAiLAorICAgICAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgImJhYmVsLWNvZGUtZnJhbWUiOiAi
Ni4xMS4wIiwKKyAgICAgICAgICAgICAgICAiYmFiZWwtbWVzc2FnZXMiOiAiNi44LjAiLAorICAg
ICAgICAgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMTEuNiIsCisgICAgICAgICAgICAgICAg
ImJhYmVsLXR5cGVzIjogIjYuMTUuMCIsCisgICAgICAgICAgICAgICAgImJhYnlsb24iOiAiNi4x
MS4yIiwKKyAgICAgICAgICAgICAgICAiZGVidWciOiAiMi4yLjAiLAorICAgICAgICAgICAgICAg
ICJnbG9iYWxzIjogIjguMTguMCIsCisgICAgICAgICAgICAgICAgImludmFyaWFudCI6ICIyLjIu
MSIsCisgICAgICAgICAgICAgICAgImxvZGFzaCI6ICI0LjE2LjIiCisgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiYmFiZWwtdHlwZXMiOiB7CisgICAgICAgICAg
ICAgICJ2ZXJzaW9uIjogIjYuMTUuMCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiLAorICAgICAgICAgICAg
ICAgICJlc3V0aWxzIjogIjIuMC4yIiwKKyAgICAgICAgICAgICAgICAibG9kYXNoIjogIjQuMTYu
MiIsCisgICAgICAgICAgICAgICAgInRvLWZhc3QtcHJvcGVydGllcyI6ICIxLjAuMiIKKyAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJiYWJ5bG9uIjogeworICAg
ICAgICAgICAgICAidmVyc2lvbiI6ICI2LjExLjIiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgImJhbGFuY2VkLW1hdGNoIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjQu
MiIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6
IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiYnJhY2UtZXhwYW5zaW9uIjogewor
ICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuNiIsCisgICAgICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAiYmFsYW5jZWQtbWF0Y2giOiAiMC40LjIiLAorICAg
ICAgICAgICAgICAgICJjb25jYXQtbWFwIjogIjAuMC4xIgorICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgImNoYWxrIjogeworICAgICAgICAgICAgICAidmVyc2lv
biI6ICIxLjEuMyIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAg
ICAgICAiYW5zaS1zdHlsZXMiOiAiMi4yLjEiLAorICAgICAgICAgICAgICAgICJlc2NhcGUtc3Ry
aW5nLXJlZ2V4cCI6ICIxLjAuNSIsCisgICAgICAgICAgICAgICAgImhhcy1hbnNpIjogIjIuMC4w
IiwKKyAgICAgICAgICAgICAgICAic3RyaXAtYW5zaSI6ICIzLjAuMSIsCisgICAgICAgICAgICAg
ICAgInN1cHBvcnRzLWNvbG9yIjogIjIuMC4wIgorICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgImNvbmNhdC1tYXAiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9u
IjogIjAuMC4xIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAg
ICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJjb252ZXJ0LXNvdXJj
ZS1tYXAiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMy4wIiwKKyAgICAgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICJjb3JlLWpzIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6
ICIyLjQuMSIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAg
ImRldiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZGVidWciOiB7CisgICAg
ICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMi4wIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAgICAgICAgICJtcyI6ICIwLjcuMSIKKyAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICJkZXRlY3QtaW5kZW50IjogeworICAgICAgICAgICAg
ICAidmVyc2lvbiI6ICIzLjAuMSIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgICAgICAgICAiZ2V0LXN0ZGluIjogIjQuMC4xIiwKKyAgICAgICAgICAgICAgICAibWlu
aW1pc3QiOiAiMS4yLjAiLAorICAgICAgICAgICAgICAgICJyZXBlYXRpbmciOiAiMS4xLjMiCisg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZXNjYXBlLXN0cmlu
Zy1yZWdleHAiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC41IiwKKyAgICAgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICJlc3V0aWxzIjogeworICAgICAgICAgICAgICAidmVyc2lv
biI6ICIyLjAuMiIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAg
ICAgImRldiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiZ2V0LXN0ZGluIjog
eworICAgICAgICAgICAgICAidmVyc2lvbiI6ICI0LjAuMSIsCisgICAgICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAiZ2xvYmFscyI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiOC4xOC4w
IiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2Ijog
dHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJoYXMtYW5zaSI6IHsKKyAgICAgICAg
ICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7
CisgICAgICAgICAgICAgICAgImFuc2ktcmVnZXgiOiAiMi4wLjAiCisgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiaG9tZS1vci10bXAiOiB7CisgICAgICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAgICAgICAgICJvcy10bXBkaXIiOiAiMS4wLjEiLAorICAgICAgICAgICAgICAgICJ1
c2VyLWhvbWUiOiAiMS4xLjEiCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAiaW52YXJpYW50IjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyLjIuMSIs
CisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAibG9vc2Ut
ZW52aWZ5IjogIjEuMi4wIgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgImlzLWZpbml0ZSI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAor
ICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgIm51bWJlci1p
cy1uYW4iOiAiMS4wLjAiCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAianMtdG9rZW5zIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisg
ICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUK
KyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAianNlc2MiOiB7CisgICAgICAgICAgICAgICJ2
ZXJzaW9uIjogIjAuNS4wIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlCisgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgImpzb241IjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6
ICIwLjQuMCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAg
ImRldiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAibG9kYXNoIjogeworICAg
ICAgICAgICAgICAidmVyc2lvbiI6ICI0LjE2LjIiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgImxvb3NlLWVudmlmeSI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4yLjAi
LAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgImpzLXRv
a2VucyI6ICIxLjAuMyIKKyAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgImRlcGVuZGVu
Y2llcyI6IHsKKyAgICAgICAgICAgICAgICAianMtdG9rZW5zIjogeworICAgICAgICAgICAgICAg
ICAgInZlcnNpb24iOiAiMS4wLjMiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAibWluaW1hdGNoIjogewor
ICAgICAgICAgICAgICAidmVyc2lvbiI6ICIzLjAuMyIsCisgICAgICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAiYnJhY2UtZXhwYW5zaW9uIjogIjEuMS42IgorICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgIm1pbmltaXN0Ijogewor
ICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjIuMCIsCisgICAgICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAibWtkaXJwIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjUuMSIsCisg
ICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAibWluaW1pc3Qi
OiAiMC4wLjgiCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJkZXBlbmRlbmNpZXMi
OiB7CisgICAgICAgICAgICAgICAgIm1pbmltaXN0IjogeworICAgICAgICAgICAgICAgICAgInZl
cnNpb24iOiAiMC4wLjgiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAibXMiOiB7CisgICAgICAgICAgICAg
ICJ2ZXJzaW9uIjogIjAuNy4xIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJudW1i
ZXItaXMtbmFuIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAib3MtdG1wZGlyIjogeworICAgICAgICAgICAgICAidmVy
c2lvbiI6ICIxLjAuMSIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAicGF0aC1leGlz
dHMiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICJwYXRoLWlzLWFic29sdXRlIjogeworICAgICAgICAgICAgICAidmVy
c2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAicHJpdmF0ZSI6
IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjYiLAorICAgICAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgInJlZ2VuZXJhdGUiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
My4xIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlCisgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgInJlZ2VuZXJhdG9yLXJ1bnRpbWUiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9u
IjogIjAuOS41IiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAg
ICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJyZWdleHB1LWNvcmUi
OiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAg
ICAgInJlZ2VuZXJhdGUiOiAiMS4zLjEiLAorICAgICAgICAgICAgICAgICJyZWdqc2dlbiI6ICIw
LjIuMCIsCisgICAgICAgICAgICAgICAgInJlZ2pzcGFyc2VyIjogIjAuMS41IgorICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInJlZ2pzZ2VuIjogeworICAgICAg
ICAgICAgICAidmVyc2lvbiI6ICIwLjIuMCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJyZWdqc3BhcnNlciI6IHsKKyAgICAgICAg
ICAgICAgInZlcnNpb24iOiAiMC4xLjUiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAianNlc2MiOiAi
MC41LjAiCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAicmVw
ZWF0aW5nIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMyIsCisgICAgICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAiaXMtZmluaXRlIjogIjEuMC4x
IgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInNoZWJhbmct
cmVnZXgiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICJzbGFzaCI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAi
MS4wLjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJk
ZXYiOiB0cnVlCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgInNvdXJjZS1tYXAiOiB7Cisg
ICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNS42IiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICJzb3VyY2UtbWFwLXN1cHBvcnQiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjog
IjAuMi4xMCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAg
ICAic291cmNlLW1hcCI6ICIwLjEuMzIiCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICAgICAgICAgInNvdXJjZS1tYXAiOiB7CisgICAg
ICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuMzIiLAorICAgICAgICAgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
ICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhbWRlZmluZSI6ICIx
LjAuMCIKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3RyaXAtYW5zaSI6IHsKKyAgICAg
ICAgICAgICAgInZlcnNpb24iOiAiMy4wLjEiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICAgICAgICAgImFuc2ktcmVnZXgiOiAiMi4wLjAiCisgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAic3VwcG9ydHMtY29sb3IiOiB7CisgICAg
ICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICJ0by1mYXN0LXByb3BlcnRpZXMiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
MC4yIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2
IjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJ1c2VyLWhvbWUiOiB7CisgICAg
ICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4xIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfQorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgImJhYmVsLXJlZ2lzdGVyIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjYuMTQuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJiYWJl
bC1jb3JlIjogIjYuMTQuMCIsCisgICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYi
LAorICAgICAgICAgICAgImNvcmUtanMiOiAiMi40LjEiLAorICAgICAgICAgICAgImhvbWUtb3It
dG1wIjogIjEuMC4wIiwKKyAgICAgICAgICAgICJsb2Rhc2giOiAiNC4xNi4yIiwKKyAgICAgICAg
ICAgICJta2RpcnAiOiAiMC41LjEiLAorICAgICAgICAgICAgInBhdGgtZXhpc3RzIjogIjEuMC4w
IiwKKyAgICAgICAgICAgICJzb3VyY2UtbWFwLXN1cHBvcnQiOiAiMC4yLjEwIgorICAgICAgICAg
IH0sCisgICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgICAgICJwYXRoLWV4aXN0
cyI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9
CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYmFiZWwtcnVudGltZSI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICI2LjExLjYiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICAgICAiY29yZS1qcyI6ICIyLjQuMSIsCisgICAgICAgICAgICAicmVnZW5lcmF0b3ItcnVudGlt
ZSI6ICIwLjkuNSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJiYWJlbC10ZW1w
bGF0ZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2LjE1LjAiLAorICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjExLjYiLAorICAgICAgICAgICAg
ImJhYmVsLXRyYXZlcnNlIjogIjYuMTUuMCIsCisgICAgICAgICAgICAiYmFiZWwtdHlwZXMiOiAi
Ni4xNS4wIiwKKyAgICAgICAgICAgICJiYWJ5bG9uIjogIjYuMTEuMiIsCisgICAgICAgICAgICAi
bG9kYXNoIjogIjQuMTYuMiIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJiYWJl
bC10cmF2ZXJzZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2LjE1LjAiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICAgICAiYmFiZWwtY29kZS1mcmFtZSI6ICI2LjExLjAiLAorICAg
ICAgICAgICAgImJhYmVsLW1lc3NhZ2VzIjogIjYuOC4wIiwKKyAgICAgICAgICAgICJiYWJlbC1y
dW50aW1lIjogIjYuMTEuNiIsCisgICAgICAgICAgICAiYmFiZWwtdHlwZXMiOiAiNi4xNS4wIiwK
KyAgICAgICAgICAgICJiYWJ5bG9uIjogIjYuMTEuMiIsCisgICAgICAgICAgICAiZGVidWciOiAi
Mi4yLjAiLAorICAgICAgICAgICAgImdsb2JhbHMiOiAiOC4xOC4wIiwKKyAgICAgICAgICAgICJp
bnZhcmlhbnQiOiAiMi4yLjEiLAorICAgICAgICAgICAgImxvZGFzaCI6ICI0LjE2LjIiCisgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYmFiZWwtdHlwZXMiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiNi4xNS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJh
YmVsLXJ1bnRpbWUiOiAiNi4xMS42IiwKKyAgICAgICAgICAgICJlc3V0aWxzIjogIjIuMC4yIiwK
KyAgICAgICAgICAgICJsb2Rhc2giOiAiNC4xNi4yIiwKKyAgICAgICAgICAgICJ0by1mYXN0LXBy
b3BlcnRpZXMiOiAiMS4wLjIiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYmFi
eWxvbiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2LjExLjIiLAorICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAi
YmFsYW5jZWQtbWF0Y2giOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC40LjIiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAor
ICAgICAgICAiQmFzZTY0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4xIiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwK
KyAgICAgICAgImJhc2U2NC1qcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjIuMCIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAg
IH0sCisgICAgICAgICJiYXRjaCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjUuMyIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAg
IH0sCisgICAgICAgICJiY3J5cHQtcGJrZGYiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4w
LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgICAgICJ0d2VldG5hY2wiOiAiMC4xNC4zIgorICAgICAgICAgIH0sCisgICAgICAgICAg
ImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgICAgICJ0d2VldG5hY2wiOiB7CisgICAgICAgICAg
ICAgICJ2ZXJzaW9uIjogIjAuMTQuMyIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRy
dWUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJiaWcu
anMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4xLjMiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiYmlu
YXJ5LWV4dGVuc2lvbnMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS42LjAiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAor
ICAgICAgICAiYmwiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjIiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICAgICAicmVhZGFibGUtc3RyZWFtIjogIjIuMC42IgorICAgICAg
ICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJsdWViaXJkIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjMuNC42IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImJvb2xiYXNlIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImJvb20iOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMi4xMC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImhvZWsi
OiAiMi4xNi4zIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJyYWNlLWV4cGFu
c2lvbiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuNiIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgICAgICJiYWxhbmNlZC1tYXRjaCI6ICIwLjQuMiIsCisgICAgICAgICAgICAi
Y29uY2F0LW1hcCI6ICIwLjAuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJi
cmFjZXMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS44LjUiLAorICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICAgICAiZXhwYW5kLXJhbmdlIjogIjEuOC4yIiwKKyAgICAgICAgICAgICJw
cmVzZXJ2ZSI6ICIwLjIuMCIsCisgICAgICAgICAgICAicmVwZWF0LWVsZW1lbnQiOiAiMS4xLjIi
CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYnJvd3Nlci1yZXNvbHZlIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMTEuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgICAgICJyZXNvbHZlIjogIjEuMS43IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg
ICAgImJyb3dzZXJpZnktemxpYiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuNCIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJwYWtvIjogIjAuMi45IgorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgImJyb3dzZXJzbGlzdCI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIxLjMuNiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJjYW5pdXNl
LWRiIjogIjEuMC4zMDAwMDU0MCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJi
c2VyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAgICAgIm5vZGUtaW50NjQiOiAiMC40LjAiCisgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgICAiYnVmZmVyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjQuOS4xIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJhc2U2NC1qcyI6ICIxLjIuMCIsCisg
ICAgICAgICAgICAiaWVlZTc1NCI6ICIxLjEuNiIsCisgICAgICAgICAgICAiaXNhcnJheSI6ICIx
LjAuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJidWlsdGluLW1vZHVsZXMi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjEiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiYnl0ZXMi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4zLjAiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiY2FsbGVy
LXBhdGgiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjAiLAorICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICAgICAiY2FsbHNpdGVzIjogIjAuMi4wIgorICAgICAgICAgIH0KKyAgICAg
ICAgfSwKKyAgICAgICAgImNhbGxzaXRlcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjIu
MCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisg
ICAgICAgIH0sCisgICAgICAgICJjYW1lbC1jYXNlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjMuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgIm5vLWNhc2UiOiAiMi4z
LjAiLAorICAgICAgICAgICAgInVwcGVyLWNhc2UiOiAiMS4xLjMiCisgICAgICAgICAgfQorICAg
ICAgICB9LAorICAgICAgICAiY2FtZWxjYXNlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
Mi4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUK
KyAgICAgICAgfSwKKyAgICAgICAgImNhbml1c2UtZGIiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMS4wLjMwMDAwNTQwIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImNhcmRpbmFsIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImFu
c2ljb2xvcnMiOiAiMC4yLjEiLAorICAgICAgICAgICAgInJlZGV5ZWQiOiAiMS4wLjAiCisgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiY2FzZS1zZW5zaXRpdmUtcGF0aHMtd2VicGFj
ay1wbHVnaW4iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjQiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAg
ICAiY2FzZWxlc3MiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4xMS4wIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAg
ICAgICAgImNlbnRlci1hbGlnbiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuMyIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJhbGlnbi10ZXh0IjogIjAuMS40IiwKKyAg
ICAgICAgICAgICJsYXp5LWNhY2hlIjogIjEuMC40IgorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgImNoYWxrIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4zIiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAgICAgImFuc2ktc3R5bGVzIjogIjIuMi4xIiwKKyAgICAg
ICAgICAgICJlc2NhcGUtc3RyaW5nLXJlZ2V4cCI6ICIxLjAuNSIsCisgICAgICAgICAgICAiaGFz
LWFuc2kiOiAiMi4wLjAiLAorICAgICAgICAgICAgInN0cmlwLWFuc2kiOiAiMy4wLjEiLAorICAg
ICAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogIjIuMC4wIgorICAgICAgICAgIH0sCisgICAgICAg
ICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgICAgICJzdXBwb3J0cy1jb2xvciI6IHsKKyAg
ICAgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9CisgICAgICAg
ICAgfQorICAgICAgICB9LAorICAgICAgICAiY2hhbmdlLWNhc2UiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMy4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiY2FtZWwt
Y2FzZSI6ICIzLjAuMCIsCisgICAgICAgICAgICAiY29uc3RhbnQtY2FzZSI6ICIyLjAuMCIsCisg
ICAgICAgICAgICAiZG90LWNhc2UiOiAiMi4xLjAiLAorICAgICAgICAgICAgImhlYWRlci1jYXNl
IjogIjEuMC4wIiwKKyAgICAgICAgICAgICJpcy1sb3dlci1jYXNlIjogIjEuMS4zIiwKKyAgICAg
ICAgICAgICJpcy11cHBlci1jYXNlIjogIjEuMS4yIiwKKyAgICAgICAgICAgICJsb3dlci1jYXNl
IjogIjEuMS4zIiwKKyAgICAgICAgICAgICJsb3dlci1jYXNlLWZpcnN0IjogIjEuMC4yIiwKKyAg
ICAgICAgICAgICJuby1jYXNlIjogIjIuMy4wIiwKKyAgICAgICAgICAgICJwYXJhbS1jYXNlIjog
IjIuMS4wIiwKKyAgICAgICAgICAgICJwYXNjYWwtY2FzZSI6ICIyLjAuMCIsCisgICAgICAgICAg
ICAicGF0aC1jYXNlIjogIjIuMS4wIiwKKyAgICAgICAgICAgICJzZW50ZW5jZS1jYXNlIjogIjIu
MS4wIiwKKyAgICAgICAgICAgICJzbmFrZS1jYXNlIjogIjIuMS4wIiwKKyAgICAgICAgICAgICJz
d2FwLWNhc2UiOiAiMS4xLjIiLAorICAgICAgICAgICAgInRpdGxlLWNhc2UiOiAiMi4xLjAiLAor
ICAgICAgICAgICAgInVwcGVyLWNhc2UiOiAiMS4xLjMiLAorICAgICAgICAgICAgInVwcGVyLWNh
c2UtZmlyc3QiOiAiMS4xLjIiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiY2hv
a2lkYXIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS42LjAiLAorICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICAgICAiYW55bWF0Y2giOiAiMS4zLjAiLAorICAgICAgICAgICAgImFzeW5j
LWVhY2giOiAiMS4wLjEiLAorICAgICAgICAgICAgImZzZXZlbnRzIjogIjEuMC4xNCIsCisgICAg
ICAgICAgICAiZ2xvYi1wYXJlbnQiOiAiMi4wLjAiLAorICAgICAgICAgICAgImluaGVyaXRzIjog
IjIuMC4zIiwKKyAgICAgICAgICAgICJpcy1iaW5hcnktcGF0aCI6ICIxLjAuMSIsCisgICAgICAg
ICAgICAiaXMtZ2xvYiI6ICIyLjAuMSIsCisgICAgICAgICAgICAicGF0aC1pcy1hYnNvbHV0ZSI6
ICIxLjAuMCIsCisgICAgICAgICAgICAicmVhZGRpcnAiOiAiMi4xLjAiCisgICAgICAgICAgfSwK
KyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAgICAgImZzZXZlbnRzIjogewor
ICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMTQiLAorICAgICAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAib3B0
aW9uYWwiOiB0cnVlLAorICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAg
ICAgIm5hbiI6ICIyLjQuMCIsCisgICAgICAgICAgICAgICAgIm5vZGUtcHJlLWd5cCI6ICIwLjYu
MjkiCisgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7Cisg
ICAgICAgICAgICAgICAgImFiYnJldiI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjog
IjEuMC45IiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAg
ICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQor
ICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImFuc2ktcmVnZXgiOiB7CisgICAg
ICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAgICAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICAgICAgImFuc2ktc3R5bGVzIjogeworICAgICAgICAgICAgICAg
ICAgInZlcnNpb24iOiAiMi4yLjEiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICAgICAib3B0
aW9uYWwiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiYXByb2Jh
IjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjQiLAorICAgICAgICAgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisg
ICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICAiYXJlLXdlLXRoZXJlLXlldCI6IHsKKyAgICAgICAgICAgICAgICAgICJ2
ZXJzaW9uIjogIjEuMS4yIiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgIm9wdGlvbmFs
IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAg
ICAgICAgImRlbGVnYXRlcyI6ICIxLjAuMCIsCisgICAgICAgICAgICAgICAgICAgICJyZWFkYWJs
ZS1zdHJlYW0iOiAiMi4xLjQiCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICAiYXNuMSI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9u
IjogIjAuMi4zIiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1
ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImFzc2VydC1wbHVzIjogewor
ICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4yLjAiLAorICAgICAgICAgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAiYXN5bmMiOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjUuMiIs
CisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgICJhd3Mtc2lnbjIiOiB7CisgICAgICAgICAgICAg
ICAgICAidmVyc2lvbiI6ICIwLjYuMCIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJv
cHRpb25hbCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJhd3M0
IjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS40LjEiLAorICAgICAgICAgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisg
ICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICAiYmFsYW5jZWQtbWF0Y2giOiB7CisgICAgICAgICAgICAgICAgICAidmVy
c2lvbiI6ICIwLjQuMiIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgImJsIjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjIiLAorICAg
ICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6
IHRydWUsCisgICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICAg
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICAgICAicmVhZGFibGUtc3RyZWFt
IjogIjIuMC42IgorICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICJkZXBl
bmRlbmNpZXMiOiB7CisgICAgICAgICAgICAgICAgICAgICJyZWFkYWJsZS1zdHJlYW0iOiB7Cisg
ICAgICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjYiLAorICAgICAgICAgICAgICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICAg
ICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJjb3JlLXV0
aWwtaXMiOiAiMS4wLjIiLAorICAgICAgICAgICAgICAgICAgICAgICAgImluaGVyaXRzIjogIjIu
MC4xIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJpc2FycmF5IjogIjEuMC4wIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICJwcm9jZXNzLW5leHRpY2stYXJncyI6ICIxLjAuNyIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAic3RyaW5nX2RlY29kZXIiOiAiMC4xMC4zMSIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAidXRpbC1kZXByZWNhdGUiOiAiMS4wLjIiCisgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiYmxvY2stc3RyZWFtIjogeworICAg
ICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4wLjkiLAorICAgICAgICAgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
ICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgICAgICJpbmhlcml0cyI6ICIy
LjAuMSIKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgICJib29tIjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMi4xMC4xIiwK
KyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAg
ICAgICAgICAiaG9layI6ICIyLjE2LjMiCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICAiYnJhY2UtZXhwYW5zaW9uIjogeworICAgICAgICAg
ICAgICAgICAgInZlcnNpb24iOiAiMS4xLjUiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICAg
ICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgICAgICJiYWxhbmNlZC1tYXRjaCI6ICIw
LjQuMiIsCisgICAgICAgICAgICAgICAgICAgICJjb25jYXQtbWFwIjogIjAuMC4xIgorICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImJ1ZmZl
ci1zaGltcyI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAg
ICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0
cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiY2FzZWxlc3MiOiB7Cisg
ICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjExLjAiLAorICAgICAgICAgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAiY2hhbGsiOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMyIs
CisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAg
ICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhbnNpLXN0eWxl
cyI6ICIyLjIuMSIsCisgICAgICAgICAgICAgICAgICAgICJlc2NhcGUtc3RyaW5nLXJlZ2V4cCI6
ICIxLjAuNSIsCisgICAgICAgICAgICAgICAgICAgICJoYXMtYW5zaSI6ICIyLjAuMCIsCisgICAg
ICAgICAgICAgICAgICAgICJzdHJpcC1hbnNpIjogIjMuMC4xIiwKKyAgICAgICAgICAgICAgICAg
ICAgInN1cHBvcnRzLWNvbG9yIjogIjIuMC4wIgorICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImNvZGUtcG9pbnQtYXQiOiB7CisgICAgICAg
ICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgIm51bWJlci1pcy1uYW4iOiAi
MS4wLjAiCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAiY29tYmluZWQtc3RyZWFtIjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24i
OiAiMS4wLjUiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICAgICAgICAgICAgICJkZWxheWVkLXN0cmVhbSI6ICIxLjAuMCIKKyAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJjb21tYW5kZXIi
OiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyLjkuMCIsCisgICAgICAgICAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICAgICAgICAgICAgICJncmFjZWZ1bC1yZWFkbGluayI6ICIxLjAu
MSIKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgICJjb25jYXQtbWFwIjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4wLjEi
LAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAg
ImRldiI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJjb25zb2xl
LWNvbnRyb2wtc3RyaW5ncyI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4w
IiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAg
ICJkZXYiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiY29yZS11
dGlsLWlzIjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAgICAg
ICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRy
dWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJjcnlwdGlsZXMiOiB7Cisg
ICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuNSIsCisgICAgICAgICAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICAgICAgICAgICAgICJib29tIjogIjIuMTAuMSIKKyAgICAgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJkYXNoZGFzaCI6IHsK
KyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMTQuMCIsCisgICAgICAgICAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhc3NlcnQtcGx1cyI6ICIxLjAuMCIKKyAgICAg
ICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAg
ICAgICAgICAgICAgICAgICAiYXNzZXJ0LXBsdXMiOiB7CisgICAgICAgICAgICAgICAgICAgICAg
InZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJkZWJ1ZyI6IHsK
KyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMi4wIiwKKyAgICAgICAgICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
ICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgICAgICAgICAgICAgIm1zIjogIjAuNy4xIgorICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImRlZXAtZXh0ZW5kIjog
eworICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC40LjEiLAorICAgICAgICAgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICAiZGVsYXllZC1zdHJlYW0iOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lv
biI6ICIxLjAuMCIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAg
ICAgImRlbGVnYXRlcyI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwK
KyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgImVjYy1qc2JuIjogeworICAgICAgICAgICAgICAg
ICAgInZlcnNpb24iOiAiMC4xLjEiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICAgICAib3B0
aW9uYWwiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAg
ICAgICAgICAgICAianNibiI6ICIwLjEuMCIKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgICJlc2NhcGUtc3RyaW5nLXJlZ2V4cCI6IHsKKyAg
ICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC41IiwKKyAgICAgICAgICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgImV4dGVuZCI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4wIiwK
KyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgImV4dHNwcmludGYiOiB7CisgICAgICAgICAgICAg
ICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgImZvcmV2ZXItYWdlbnQiOiB7CisgICAgICAgICAgICAgICAgICAidmVy
c2lvbiI6ICIwLjYuMSIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6
IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJmb3JtLWRhdGEiOiB7
CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMC1yYzQiLAorICAgICAgICAgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisg
ICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAgICAgICAgICAgICAiYXN5bmMiOiAiMS41LjIiLAorICAgICAg
ICAgICAgICAgICAgICAiY29tYmluZWQtc3RyZWFtIjogIjEuMC41IiwKKyAgICAgICAgICAgICAg
ICAgICAgIm1pbWUtdHlwZXMiOiAiMi4xLjExIgorICAgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImZzLnJlYWxwYXRoIjogeworICAgICAgICAg
ICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgICJmc3RyZWFtIjogeworICAgICAgICAgICAgICAgICAgInZlcnNp
b24iOiAiMS4wLjEwIiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAgICAgICAgICAgICAiZ3JhY2VmdWwtZnMiOiAiNC4xLjQiLAorICAgICAgICAg
ICAgICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjEiLAorICAgICAgICAgICAgICAgICAgICAibWtk
aXJwIjogIjAuNS4xIiwKKyAgICAgICAgICAgICAgICAgICAgInJpbXJhZiI6ICIyLjUuMyIKKyAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJm
c3RyZWFtLWlnbm9yZSI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC41IiwK
KyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICAg
ICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImZzdHJlYW0iOiAi
MS4wLjEwIiwKKyAgICAgICAgICAgICAgICAgICAgImluaGVyaXRzIjogIjIuMC4xIiwKKyAgICAg
ICAgICAgICAgICAgICAgIm1pbmltYXRjaCI6ICIzLjAuMiIKKyAgICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJnYXVnZSI6IHsKKyAgICAgICAg
ICAgICAgICAgICJ2ZXJzaW9uIjogIjIuNi4wIiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAg
ICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgICAgICAgICAgICAgImFwcm9iYSI6ICIxLjAuNCIsCisgICAgICAgICAgICAgICAgICAg
ICJjb25zb2xlLWNvbnRyb2wtc3RyaW5ncyI6ICIxLjEuMCIsCisgICAgICAgICAgICAgICAgICAg
ICJoYXMtY29sb3IiOiAiMC4xLjciLAorICAgICAgICAgICAgICAgICAgICAiaGFzLXVuaWNvZGUi
OiAiMi4wLjEiLAorICAgICAgICAgICAgICAgICAgICAib2JqZWN0LWFzc2lnbiI6ICI0LjEuMCIs
CisgICAgICAgICAgICAgICAgICAgICJzaWduYWwtZXhpdCI6ICIzLjAuMCIsCisgICAgICAgICAg
ICAgICAgICAgICJzdHJpbmctd2lkdGgiOiAiMS4wLjEiLAorICAgICAgICAgICAgICAgICAgICAi
c3RyaXAtYW5zaSI6ICIzLjAuMSIsCisgICAgICAgICAgICAgICAgICAgICJ3aWRlLWFsaWduIjog
IjEuMS4wIgorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAgICAgImdlbmVyYXRlLWZ1bmN0aW9uIjogeworICAgICAgICAgICAgICAgICAgInZlcnNp
b24iOiAiMi4wLjAiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0
cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZ2VuZXJhdGUtb2JqZWN0
LXByb3BlcnR5IjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4yLjAiLAorICAg
ICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6
IHRydWUsCisgICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICAg
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICAgICAiaXMtcHJvcGVydHkiOiAi
MS4wLjIiCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAiZ2V0cGFzcyI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS42
IiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAg
ICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFzc2VydC1w
bHVzIjogIjEuMC4wIgorICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICJk
ZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICAgICAgICAgICAgICJhc3NlcnQtcGx1cyI6IHsKKyAg
ICAgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgICAgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAgICAgImdsb2IiOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICI3LjAuNSIs
CisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAg
ICAgICAgICAgImZzLnJlYWxwYXRoIjogIjEuMC4wIiwKKyAgICAgICAgICAgICAgICAgICAgImlu
ZmxpZ2h0IjogIjEuMC41IiwKKyAgICAgICAgICAgICAgICAgICAgImluaGVyaXRzIjogIjIuMC4x
IiwKKyAgICAgICAgICAgICAgICAgICAgIm1pbmltYXRjaCI6ICIzLjAuMiIsCisgICAgICAgICAg
ICAgICAgICAgICJvbmNlIjogIjEuMy4zIiwKKyAgICAgICAgICAgICAgICAgICAgInBhdGgtaXMt
YWJzb2x1dGUiOiAiMS4wLjAiCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
fSwKKyAgICAgICAgICAgICAgICAiZ3JhY2VmdWwtZnMiOiB7CisgICAgICAgICAgICAgICAgICAi
dmVyc2lvbiI6ICI0LjEuNCIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAgICAgImdyYWNlZnVsLXJlYWRsaW5rIjogeworICAgICAgICAgICAgICAgICAgInZlcnNp
b24iOiAiMS4wLjEiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0
cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiaGFyLXZhbGlkYXRvciI6
IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC42IiwKKyAgICAgICAgICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImNoYWxrIjogIjEuMS4zIiwKKyAgICAgICAg
ICAgICAgICAgICAgImNvbW1hbmRlciI6ICIyLjkuMCIsCisgICAgICAgICAgICAgICAgICAgICJp
cy1teS1qc29uLXZhbGlkIjogIjIuMTMuMSIsCisgICAgICAgICAgICAgICAgICAgICJwaW5raWUt
cHJvbWlzZSI6ICIyLjAuMSIKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgICJoYXMtYW5zaSI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJz
aW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjog
dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAg
ICAgImFuc2ktcmVnZXgiOiAiMi4wLjAiCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgfSwKKyAgICAgICAgICAgICAgICAiaGFzLWNvbG9yIjogeworICAgICAgICAgICAgICAg
ICAgInZlcnNpb24iOiAiMC4xLjciLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICAgICAib3B0
aW9uYWwiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiaGFzLXVu
aWNvZGUiOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMSIsCisgICAgICAg
ICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgICAgICAgICB9
LAorICAgICAgICAgICAgICAgICJoYXdrIjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24i
OiAiMy4xLjMiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVl
LAorICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICAgICAi
Ym9vbSI6ICIyLjEwLjEiLAorICAgICAgICAgICAgICAgICAgICAiY3J5cHRpbGVzIjogIjIuMC41
IiwKKyAgICAgICAgICAgICAgICAgICAgImhvZWsiOiAiMi4xNi4zIiwKKyAgICAgICAgICAgICAg
ICAgICAgInNudHAiOiAiMS4wLjkiCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICAiaG9layI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJz
aW9uIjogIjIuMTYuMyIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgImh0dHAtc2lnbmF0dXJlIjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAi
MS4xLjEiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAg
ICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAor
ICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICAgICAiYXNz
ZXJ0LXBsdXMiOiAiMC4yLjAiLAorICAgICAgICAgICAgICAgICAgICAianNwcmltIjogIjEuMy4w
IiwKKyAgICAgICAgICAgICAgICAgICAgInNzaHBrIjogIjEuOC4zIgorICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgImluZmxpZ2h0Ijogewor
ICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjUiLAorICAgICAgICAgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgICAgICJvbmNlIjogIjEu
My4zIiwKKyAgICAgICAgICAgICAgICAgICAgIndyYXBweSI6ICIxLjAuMiIKKyAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJpbmhlcml0cyI6
IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4xIiwKKyAgICAgICAgICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiaW5pIjogeworICAgICAgICAgICAgICAg
ICAgInZlcnNpb24iOiAiMS4zLjQiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICAgICAib3B0
aW9uYWwiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiaXMtZnVs
bHdpZHRoLWNvZGUtcG9pbnQiOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAu
MCIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
ICAgICAgICAgICAgIm51bWJlci1pcy1uYW4iOiAiMS4wLjAiCisgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiaXMtbXktanNvbi12YWxpZCI6
IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMTMuMSIsCisgICAgICAgICAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICAgICAgICAgICAgICJnZW5lcmF0ZS1mdW5jdGlvbiI6ICIyLjAu
MCIsCisgICAgICAgICAgICAgICAgICAgICJnZW5lcmF0ZS1vYmplY3QtcHJvcGVydHkiOiAiMS4y
LjAiLAorICAgICAgICAgICAgICAgICAgICAianNvbnBvaW50ZXIiOiAiMi4wLjAiLAorICAgICAg
ICAgICAgICAgICAgICAieHRlbmQiOiAiNC4wLjEiCisgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiaXMtcHJvcGVydHkiOiB7CisgICAgICAg
ICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAg
ICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAg
ICJpcy10eXBlZGFycmF5IjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAi
LAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAg
ICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiaXNhcnJheSI6IHsKKyAgICAgICAgICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICAgICAiaXNzdHJlYW0iOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6
ICIwLjEuMiIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUK
KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJqb2RpZDI1NTE5IjogeworICAg
ICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAgICAgICAgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
ICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAgICAgICAgICAgICAianNibiI6ICIwLjEuMCIKKyAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJqc2JuIjogeworICAgICAg
ICAgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjAiLAorICAgICAgICAgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAg
ICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAg
ICAianNvbi1zY2hlbWEiOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjIuMiIs
CisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgICJqc29uLXN0cmluZ2lmeS1zYWZlIjogeworICAg
ICAgICAgICAgICAgICAgInZlcnNpb24iOiAiNS4wLjEiLAorICAgICAgICAgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
ICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICAgICAianNvbnBvaW50ZXIiOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyLjAu
MCIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJqc3ByaW0iOiB7CisgICAgICAgICAgICAg
ICAgICAidmVyc2lvbiI6ICIxLjMuMCIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJv
cHRpb25hbCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICAgICAgICAgICAgICJleHRzcHJpbnRmIjogIjEuMC4yIiwKKyAgICAgICAgICAgICAgICAgICAg
Impzb24tc2NoZW1hIjogIjAuMi4yIiwKKyAgICAgICAgICAgICAgICAgICAgInZlcnJvciI6ICIx
LjMuNiIKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgICJtaW1lLWRiIjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4yMy4w
IiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAg
ICJkZXYiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAibWltZS10
eXBlcyI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMS4xMSIsCisgICAgICAg
ICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAgICAg
Im1pbWUtZGIiOiAiMS4yMy4wIgorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IH0sCisgICAgICAgICAgICAgICAgIm1pbmltYXRjaCI6IHsKKyAgICAgICAgICAgICAgICAgICJ2
ZXJzaW9uIjogIjMuMC4yIiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAgICAgICAgICAgICAiYnJhY2UtZXhwYW5zaW9uIjogIjEuMS41IgorICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgIm1p
bmltaXN0IjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4wLjgiLAorICAgICAg
ICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRy
dWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJta2RpcnAiOiB7CisgICAg
ICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjUuMSIsCisgICAgICAgICAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAg
ICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgIm1pbmltaXN0IjogIjAu
MC44IgorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAgICAgIm1zIjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC43LjEiLAorICAg
ICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6
IHRydWUsCisgICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICAibm9kZS1wcmUtZ3lwIjogeworICAgICAgICAgICAgICAg
ICAgInZlcnNpb24iOiAiMC42LjI5IiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgIm9w
dGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
ICAgICAgICAgICAgIm1rZGlycCI6ICIwLjUuMSIsCisgICAgICAgICAgICAgICAgICAgICJub3B0
IjogIjMuMC42IiwKKyAgICAgICAgICAgICAgICAgICAgIm5wbWxvZyI6ICIzLjEuMiIsCisgICAg
ICAgICAgICAgICAgICAgICJyYyI6ICIxLjEuNiIsCisgICAgICAgICAgICAgICAgICAgICJyZXF1
ZXN0IjogIjIuNzMuMCIsCisgICAgICAgICAgICAgICAgICAgICJyaW1yYWYiOiAiMi41LjMiLAor
ICAgICAgICAgICAgICAgICAgICAic2VtdmVyIjogIjUuMi4wIiwKKyAgICAgICAgICAgICAgICAg
ICAgInRhciI6ICIyLjIuMSIsCisgICAgICAgICAgICAgICAgICAgICJ0YXItcGFjayI6ICIzLjEu
NCIKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAg
ICAgICJub2RlLXV1aWQiOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjQuNyIs
CisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAg
ICAgICAgICB9LAorICAgICAgICAgICAgICAgICJub3B0IjogeworICAgICAgICAgICAgICAgICAg
InZlcnNpb24iOiAiMy4wLjYiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICAgICAib3B0aW9u
YWwiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAg
ICAgICAgICAiYWJicmV2IjogIjEuMC45IgorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgIH0sCisgICAgICAgICAgICAgICAgIm5wbWxvZyI6IHsKKyAgICAgICAgICAgICAgICAg
ICJ2ZXJzaW9uIjogIjMuMS4yIiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgIm9wdGlv
bmFsIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAg
ICAgICAgICAgImFyZS13ZS10aGVyZS15ZXQiOiAiMS4xLjIiLAorICAgICAgICAgICAgICAgICAg
ICAiY29uc29sZS1jb250cm9sLXN0cmluZ3MiOiAiMS4xLjAiLAorICAgICAgICAgICAgICAgICAg
ICAiZ2F1Z2UiOiAiMi42LjAiLAorICAgICAgICAgICAgICAgICAgICAic2V0LWJsb2NraW5nIjog
IjIuMC4wIgorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAgICAgIm51bWJlci1pcy1uYW4iOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6
ICIxLjAuMCIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAg
Im9hdXRoLXNpZ24iOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjguMiIsCisg
ICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgICJvYmplY3QtYXNzaWduIjogeworICAgICAgICAgICAg
ICAgICAgInZlcnNpb24iOiAiNC4xLjAiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICAgICAi
b3B0aW9uYWwiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAib25j
ZSI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMy4zIiwKKyAgICAgICAgICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAor
ICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICAgICAid3Jh
cHB5IjogIjEuMC4yIgorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgInBhdGgtaXMtYWJzb2x1dGUiOiB7CisgICAgICAgICAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAgICAgInBpbmtpZSI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC40
IiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInBpbmtpZS1wcm9taXNlIjogeworICAgICAg
ICAgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjEiLAorICAgICAgICAgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAg
ICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAgICAgICAgICAgICAicGlua2llIjogIjIuMC40IgorICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInByb2Nlc3MtbmV4dGljay1h
cmdzIjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjciLAorICAgICAgICAg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUK
KyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJxcyI6IHsKKyAgICAgICAgICAg
ICAgICAgICJ2ZXJzaW9uIjogIjYuMi4wIiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAg
Im9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInJj
IjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjYiLAorICAgICAgICAgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisg
ICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAgICAgICAgICAgICAiZGVlcC1leHRlbmQiOiAiMC40LjEiLAor
ICAgICAgICAgICAgICAgICAgICAiaW5pIjogIjEuMy40IiwKKyAgICAgICAgICAgICAgICAgICAg
Im1pbmltaXN0IjogIjEuMi4wIiwKKyAgICAgICAgICAgICAgICAgICAgInN0cmlwLWpzb24tY29t
bWVudHMiOiAiMS4wLjQiCisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAg
ImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgIm1pbmltaXN0IjogeworICAg
ICAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMi4wIiwKKyAgICAgICAgICAgICAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICAgICAicmVhZGFibGUtc3RyZWFtIjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24i
OiAiMi4xLjQiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICAgICAgICAgICAgICJidWZmZXItc2hpbXMiOiAiMS4wLjAiLAorICAgICAgICAgICAg
ICAgICAgICAiY29yZS11dGlsLWlzIjogIjEuMC4yIiwKKyAgICAgICAgICAgICAgICAgICAgImlu
aGVyaXRzIjogIjIuMC4xIiwKKyAgICAgICAgICAgICAgICAgICAgImlzYXJyYXkiOiAiMS4wLjAi
LAorICAgICAgICAgICAgICAgICAgICAicHJvY2Vzcy1uZXh0aWNrLWFyZ3MiOiAiMS4wLjciLAor
ICAgICAgICAgICAgICAgICAgICAic3RyaW5nX2RlY29kZXIiOiAiMC4xMC4zMSIsCisgICAgICAg
ICAgICAgICAgICAgICJ1dGlsLWRlcHJlY2F0ZSI6ICIxLjAuMiIKKyAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJyZXF1ZXN0IjogeworICAg
ICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMi43My4wIiwKKyAgICAgICAgICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgICAgICAgICAgICAgImF3cy1zaWduMiI6ICIwLjYuMCIsCisgICAgICAgICAg
ICAgICAgICAgICJhd3M0IjogIjEuNC4xIiwKKyAgICAgICAgICAgICAgICAgICAgImJsIjogIjEu
MS4yIiwKKyAgICAgICAgICAgICAgICAgICAgImNhc2VsZXNzIjogIjAuMTEuMCIsCisgICAgICAg
ICAgICAgICAgICAgICJjb21iaW5lZC1zdHJlYW0iOiAiMS4wLjUiLAorICAgICAgICAgICAgICAg
ICAgICAiZXh0ZW5kIjogIjMuMC4wIiwKKyAgICAgICAgICAgICAgICAgICAgImZvcmV2ZXItYWdl
bnQiOiAiMC42LjEiLAorICAgICAgICAgICAgICAgICAgICAiZm9ybS1kYXRhIjogIjEuMC4wLXJj
NCIsCisgICAgICAgICAgICAgICAgICAgICJoYXItdmFsaWRhdG9yIjogIjIuMC42IiwKKyAgICAg
ICAgICAgICAgICAgICAgImhhd2siOiAiMy4xLjMiLAorICAgICAgICAgICAgICAgICAgICAiaHR0
cC1zaWduYXR1cmUiOiAiMS4xLjEiLAorICAgICAgICAgICAgICAgICAgICAiaXMtdHlwZWRhcnJh
eSI6ICIxLjAuMCIsCisgICAgICAgICAgICAgICAgICAgICJpc3N0cmVhbSI6ICIwLjEuMiIsCisg
ICAgICAgICAgICAgICAgICAgICJqc29uLXN0cmluZ2lmeS1zYWZlIjogIjUuMC4xIiwKKyAgICAg
ICAgICAgICAgICAgICAgIm1pbWUtdHlwZXMiOiAiMi4xLjExIiwKKyAgICAgICAgICAgICAgICAg
ICAgIm5vZGUtdXVpZCI6ICIxLjQuNyIsCisgICAgICAgICAgICAgICAgICAgICJvYXV0aC1zaWdu
IjogIjAuOC4yIiwKKyAgICAgICAgICAgICAgICAgICAgInFzIjogIjYuMi4wIiwKKyAgICAgICAg
ICAgICAgICAgICAgInN0cmluZ3N0cmVhbSI6ICIwLjAuNSIsCisgICAgICAgICAgICAgICAgICAg
ICJ0b3VnaC1jb29raWUiOiAiMi4yLjIiLAorICAgICAgICAgICAgICAgICAgICAidHVubmVsLWFn
ZW50IjogIjAuNC4zIgorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgInJpbXJhZiI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjog
IjIuNS4zIiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAg
ICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAgICAgICAgICAgICAiZ2xvYiI6ICI3LjAuNSIKKyAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJzZW12ZXIiOiB7CisgICAgICAgICAg
ICAgICAgICAidmVyc2lvbiI6ICI1LjIuMCIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAg
ICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJz
ZXQtYmxvY2tpbmciOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisg
ICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgICJzaWduYWwtZXhpdCI6IHsKKyAgICAgICAgICAgICAg
ICAgICJ2ZXJzaW9uIjogIjMuMC4wIiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgIm9w
dGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgInNudHAi
OiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuOSIsCisgICAgICAgICAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICAgICAgICAgICAgICJob2VrIjogIjIuMTYuMyIKKyAgICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJzc2hwayI6
IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuOC4zIiwKKyAgICAgICAgICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImFzbjEiOiAiMC4yLjMiLAorICAgICAgICAg
ICAgICAgICAgICAiYXNzZXJ0LXBsdXMiOiAiMS4wLjAiLAorICAgICAgICAgICAgICAgICAgICAi
ZGFzaGRhc2giOiAiMS4xNC4wIiwKKyAgICAgICAgICAgICAgICAgICAgImVjYy1qc2JuIjogIjAu
MS4xIiwKKyAgICAgICAgICAgICAgICAgICAgImdldHBhc3MiOiAiMC4xLjYiLAorICAgICAgICAg
ICAgICAgICAgICAiam9kaWQyNTUxOSI6ICIxLjAuMiIsCisgICAgICAgICAgICAgICAgICAgICJq
c2JuIjogIjAuMS4wIiwKKyAgICAgICAgICAgICAgICAgICAgInR3ZWV0bmFjbCI6ICIwLjEzLjMi
CisgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgImRlcGVuZGVuY2llcyI6
IHsKKyAgICAgICAgICAgICAgICAgICAgImFzc2VydC1wbHVzIjogeworICAgICAgICAgICAgICAg
ICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAgICAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
ICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAic3Ry
aW5nX2RlY29kZXIiOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjEwLjMxIiwK
KyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJk
ZXYiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAic3RyaW5nLXdp
ZHRoIjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgICAg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgICAgICJj
b2RlLXBvaW50LWF0IjogIjEuMC4wIiwKKyAgICAgICAgICAgICAgICAgICAgImlzLWZ1bGx3aWR0
aC1jb2RlLXBvaW50IjogIjEuMC4wIiwKKyAgICAgICAgICAgICAgICAgICAgInN0cmlwLWFuc2ki
OiAiMy4wLjEiCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwKKyAgICAg
ICAgICAgICAgICAic3RyaW5nc3RyZWFtIjogeworICAgICAgICAgICAgICAgICAgInZlcnNpb24i
OiAiMC4wLjUiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVl
CisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAic3RyaXAtYW5zaSI6IHsKKyAg
ICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4xIiwKKyAgICAgICAgICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICAgICAiYW5zaS1yZWdleCI6
ICIyLjAuMCIKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgICJzdHJpcC1qc29uLWNvbW1lbnRzIjogeworICAgICAgICAgICAgICAgICAgInZl
cnNpb24iOiAiMS4wLjQiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICAgICAib3B0aW9uYWwi
OiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAic3VwcG9ydHMtY29s
b3IiOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAgICAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAor
ICAgICAgICAgICAgICAgICJ0YXIiOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIy
LjIuMSIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgICAgICAgICAgICAgImJsb2NrLXN0cmVhbSI6ICIwLjAuOSIsCisgICAgICAgICAgICAgICAg
ICAgICJmc3RyZWFtIjogIjEuMC4xMCIsCisgICAgICAgICAgICAgICAgICAgICJpbmhlcml0cyI6
ICIyLjAuMSIKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgICAgICJ0YXItcGFjayI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjMu
MS40IiwKKyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAg
ICAgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgImRlYnVn
IjogIjIuMi4wIiwKKyAgICAgICAgICAgICAgICAgICAgImZzdHJlYW0iOiAiMS4wLjEwIiwKKyAg
ICAgICAgICAgICAgICAgICAgImZzdHJlYW0taWdub3JlIjogIjEuMC41IiwKKyAgICAgICAgICAg
ICAgICAgICAgIm9uY2UiOiAiMS4zLjMiLAorICAgICAgICAgICAgICAgICAgICAicmVhZGFibGUt
c3RyZWFtIjogIjIuMS40IiwKKyAgICAgICAgICAgICAgICAgICAgInJpbXJhZiI6ICIyLjUuMyIs
CisgICAgICAgICAgICAgICAgICAgICJ0YXIiOiAiMi4yLjEiLAorICAgICAgICAgICAgICAgICAg
ICAidWlkLW51bWJlciI6ICIwLjAuNiIKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICB9LAorICAgICAgICAgICAgICAgICJ0b3VnaC1jb29raWUiOiB7CisgICAgICAgICAgICAg
ICAgICAidmVyc2lvbiI6ICIyLjIuMiIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJv
cHRpb25hbCI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICJ0dW5u
ZWwtYWdlbnQiOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjQuMyIsCisgICAg
ICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgICAgICJ0d2VldG5hY2wiOiB7CisgICAgICAgICAgICAgICAgICAi
dmVyc2lvbiI6ICIwLjEzLjMiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICAgICAib3B0aW9u
YWwiOiB0cnVlCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAidWlkLW51bWJl
ciI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC42IiwKKyAgICAgICAgICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAor
ICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAgICAgInV0aWwtZGVwcmVjYXRlIjogeworICAgICAgICAgICAgICAgICAgInZl
cnNpb24iOiAiMS4wLjIiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgICJ2ZXJyb3IiOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjMuNiIs
CisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAg
ICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgICAgICJleHRzcHJpbnRm
IjogIjEuMC4yIgorICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAgICAgIndpZGUtYWxpZ24iOiB7CisgICAgICAgICAgICAgICAgICAidmVyc2lvbiI6
ICIxLjEuMCIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJvcHRpb25hbCI6IHRydWUs
CisgICAgICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgICAgICJz
dHJpbmctd2lkdGgiOiAiMS4wLjEiCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgICAgICAid3JhcHB5IjogeworICAgICAgICAgICAgICAgICAgInZl
cnNpb24iOiAiMS4wLjIiLAorICAgICAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAg
ICAgICAgICJ4dGVuZCI6IHsKKyAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjQuMC4xIiwK
KyAgICAgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAg
ICAgICAgfSwKKyAgICAgICAgImNpcmN1bGFyLWpzb24iOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMC4zLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZQorICAgICAgICB9LAorICAgICAgICAiY2xhcCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIxLjEuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJjaGFsayI6ICIxLjEu
MyIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJjbGVhbi1jc3MiOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMy40LjIwIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAg
ICAgImNvbW1hbmRlciI6ICIyLjguMSIsCisgICAgICAgICAgICAic291cmNlLW1hcCI6ICIwLjQu
NCIKKyAgICAgICAgICB9LAorICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICAg
ICAic291cmNlLW1hcCI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC40LjQiLAorICAg
ICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAor
ICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgImFtZGVmaW5lIjog
IjEuMC4wIgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAg
ICAgICB9LAorICAgICAgICAiY2xpLWN1cnNvciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIx
LjAuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJyZXN0b3JlLWN1cnNvciI6
ICIxLjAuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJjbGktdGFibGUiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMC4zLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICAgICAiY29sb3JzIjogIjEuMC4zIgorICAgICAgICAgIH0sCisgICAgICAgICAgImRlcGVu
ZGVuY2llcyI6IHsKKyAgICAgICAgICAgICJjb2xvcnMiOiB7CisgICAgICAgICAgICAgICJ2ZXJz
aW9uIjogIjEuMC4zIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgImNsaS11c2FnZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuNCIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJtYXJrZWQiOiAiMC4zLjYiLAorICAgICAg
ICAgICAgIm1hcmtlZC10ZXJtaW5hbCI6ICIxLjYuMiIKKyAgICAgICAgICB9CisgICAgICAgIH0s
CisgICAgICAgICJjbGktd2lkdGgiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4xLjAiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAg
ICB9LAorICAgICAgICAiY2xpdWkiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4xLjAiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiY2VudGVyLWFsaWduIjogIjAuMS4zIiwK
KyAgICAgICAgICAgICJyaWdodC1hbGlnbiI6ICIwLjEuMyIsCisgICAgICAgICAgICAid29yZHdy
YXAiOiAiMC4wLjIiCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogewor
ICAgICAgICAgICAgIndvcmR3cmFwIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjAu
MiIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6
IHRydWUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJj
bG9uZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJj
byI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI0LjYuMCIsCisgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJjb2Ei
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICAgICAicSI6ICIxLjQuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJjb2RlLXBvaW50LWF0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAgICAgIm51bWJlci1pcy1uYW4iOiAiMS4wLjAiCisgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiY29sb3IiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMC4xMS4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImNsb25lIjog
IjEuMC4yIiwKKyAgICAgICAgICAgICJjb2xvci1jb252ZXJ0IjogIjEuNS4wIiwKKyAgICAgICAg
ICAgICJjb2xvci1zdHJpbmciOiAiMC4zLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAiY29sb3ItY29udmVydCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjUuMCIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAg
IH0sCisgICAgICAgICJjb2xvci1uYW1lIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4x
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAg
ICAgICAgfSwKKyAgICAgICAgImNvbG9yLXN0cmluZyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIwLjMuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJjb2xvci1uYW1lIjog
IjEuMS4xIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImNvbG9ybWluIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAgICAgImNvbG9yIjogIjAuMTEuMyIsCisgICAgICAgICAgICAiY3NzLWNvbG9yLW5hbWVzIjog
IjAuMC40IiwKKyAgICAgICAgICAgICJoYXMiOiAiMS4wLjEiCisgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgICAiY29sb3JzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4yIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAg
ICAgfSwKKyAgICAgICAgImNvbWJpbmVkLXN0cmVhbSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIxLjAuNSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJkZWxheWVkLXN0cmVh
bSI6ICIxLjAuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJjb21tYW5kZXIi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi44LjEiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICAgICAiZ3JhY2VmdWwtcmVhZGxpbmsiOiAiMS4wLjEiCisgICAgICAgICAgfQorICAg
ICAgICB9LAorICAgICAgICAiY29tbW9uZGlyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
MC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUK
KyAgICAgICAgfSwKKyAgICAgICAgImNvbXByZXNzaWJsZSI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIyLjAuOCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJtaW1lLWRiIjog
IjEuMjQuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJjb21wcmVzc2lvbiI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjYuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgICAgICJhY2NlcHRzIjogIjEuMy4zIiwKKyAgICAgICAgICAgICJieXRlcyI6ICIyLjMu
MCIsCisgICAgICAgICAgICAiY29tcHJlc3NpYmxlIjogIjIuMC44IiwKKyAgICAgICAgICAgICJk
ZWJ1ZyI6ICIyLjIuMCIsCisgICAgICAgICAgICAib24taGVhZGVycyI6ICIxLjAuMSIsCisgICAg
ICAgICAgICAidmFyeSI6ICIxLjEuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJjb25jYXQtbWFwIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC4xIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAg
ICAgICAgImNvbmNhdC1zdHJlYW0iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS41LjIiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjMiLAorICAg
ICAgICAgICAgInJlYWRhYmxlLXN0cmVhbSI6ICIyLjAuNiIsCisgICAgICAgICAgICAidHlwZWRh
cnJheSI6ICIwLjAuNiIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJjb25uZWN0
LWhpc3RvcnktYXBpLWZhbGxiYWNrIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMy4wIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAg
ICAgfSwKKyAgICAgICAgImNvbnNvbGUtYnJvd3NlcmlmeSI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIxLjEuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJkYXRlLW5vdyI6
ICIwLjEuNCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJjb25zdGFudC1jYXNl
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAgICAgInNuYWtlLWNhc2UiOiAiMi4xLjAiLAorICAgICAgICAgICAgInVwcGVyLWNh
c2UiOiAiMS4xLjMiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiY29uc3RhbnRz
LWJyb3dzZXJpZnkiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4wLjEiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAg
ICAgICAiY29udGFpbnMtcGF0aCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuMCIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAg
IH0sCisgICAgICAgICJjb250ZW50LWRpc3Bvc2l0aW9uIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjAuNS4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImNvbnRlbnQtdHlwZSI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJjb252ZXJ0LXNvdXJjZS1tYXAiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMS4zLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiY29va2llIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMy4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImNvb2tpZS1z
aWduYXR1cmUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjYiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAg
ICAiY29yZS1qcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjQuMSIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAg
ICAgICJjb3JlLXV0aWwtaXMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9
LAorICAgICAgICAiY3Jvc3Mtc3Bhd24iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNC4wLjAi
LAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAibHJ1LWNhY2hlIjogIjQuMC4xIiwK
KyAgICAgICAgICAgICJ3aGljaCI6ICIxLjIuMTEiCisgICAgICAgICAgfQorICAgICAgICB9LAor
ICAgICAgICAiY3J5cHRpbGVzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC41IiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJvb20iOiAiMi4xMC4xIgorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgImNyeXB0by1icm93c2VyaWZ5IjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjMuMi44IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgInBi
a2RmMi1jb21wYXQiOiAiMi4wLjEiLAorICAgICAgICAgICAgInJpcGVtZDE2MCI6ICIwLjIuMCIs
CisgICAgICAgICAgICAic2hhLmpzIjogIjIuMi42IgorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgImNzcy1jb2xvci1uYW1lcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjAu
NCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisg
ICAgICAgIH0sCisgICAgICAgICJjc3MtbG9hZGVyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjAuMjQuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJiYWJlbC1jb2RlLWZy
YW1lIjogIjYuMTEuMCIsCisgICAgICAgICAgICAiY3NzLXNlbGVjdG9yLXRva2VuaXplciI6ICIw
LjYuMCIsCisgICAgICAgICAgICAiY3NzbmFubyI6ICIzLjcuNSIsCisgICAgICAgICAgICAibG9h
ZGVyLXV0aWxzIjogIjAuMi4xNiIsCisgICAgICAgICAgICAibG9kYXNoLmNhbWVsY2FzZSI6ICIz
LjAuMSIsCisgICAgICAgICAgICAib2JqZWN0LWFzc2lnbiI6ICI0LjEuMCIsCisgICAgICAgICAg
ICAicG9zdGNzcyI6ICI1LjIuMiIsCisgICAgICAgICAgICAicG9zdGNzcy1tb2R1bGVzLWV4dHJh
Y3QtaW1wb3J0cyI6ICIxLjAuMSIsCisgICAgICAgICAgICAicG9zdGNzcy1tb2R1bGVzLWxvY2Fs
LWJ5LWRlZmF1bHQiOiAiMS4xLjEiLAorICAgICAgICAgICAgInBvc3Rjc3MtbW9kdWxlcy1zY29w
ZSI6ICIxLjAuMiIsCisgICAgICAgICAgICAicG9zdGNzcy1tb2R1bGVzLXZhbHVlcyI6ICIxLjIu
MiIsCisgICAgICAgICAgICAic291cmNlLWxpc3QtbWFwIjogIjAuMS42IgorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgImNzcy1zZWxlY3QiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMS4yLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYm9vbGJhc2UiOiAi
MS4wLjAiLAorICAgICAgICAgICAgImNzcy13aGF0IjogIjIuMS4wIiwKKyAgICAgICAgICAgICJk
b211dGlscyI6ICIxLjUuMSIsCisgICAgICAgICAgICAibnRoLWNoZWNrIjogIjEuMC4xIgorICAg
ICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImNzcy1zZWxlY3Rvci10b2tlbml6ZXIiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMC42LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICAgICAiY3NzZXNjIjogIjAuMS4wIiwKKyAgICAgICAgICAgICJmYXN0cGFyc2UiOiAiMS4x
LjEiLAorICAgICAgICAgICAgInJlZ2V4cHUtY29yZSI6ICIxLjAuMCIKKyAgICAgICAgICB9Cisg
ICAgICAgIH0sCisgICAgICAgICJjc3Mtd2hhdCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIy
LjEuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
CisgICAgICAgIH0sCisgICAgICAgICJjc3Nlc2MiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
MC4xLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZQorICAgICAgICB9LAorICAgICAgICAiY3NzbmFubyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIzLjcuNSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJhdXRvcHJlZml4ZXIi
OiAiNi40LjEiLAorICAgICAgICAgICAgImRlY2FtZWxpemUiOiAiMS4yLjAiLAorICAgICAgICAg
ICAgImRlZmluZWQiOiAiMS4wLjAiLAorICAgICAgICAgICAgImhhcyI6ICIxLjAuMSIsCisgICAg
ICAgICAgICAib2JqZWN0LWFzc2lnbiI6ICI0LjEuMCIsCisgICAgICAgICAgICAicG9zdGNzcyI6
ICI1LjIuMiIsCisgICAgICAgICAgICAicG9zdGNzcy1jYWxjIjogIjUuMy4xIiwKKyAgICAgICAg
ICAgICJwb3N0Y3NzLWNvbG9ybWluIjogIjIuMi4xIiwKKyAgICAgICAgICAgICJwb3N0Y3NzLWNv
bnZlcnQtdmFsdWVzIjogIjIuNC4wIiwKKyAgICAgICAgICAgICJwb3N0Y3NzLWRpc2NhcmQtY29t
bWVudHMiOiAiMi4wLjQiLAorICAgICAgICAgICAgInBvc3Rjc3MtZGlzY2FyZC1kdXBsaWNhdGVz
IjogIjIuMC4xIiwKKyAgICAgICAgICAgICJwb3N0Y3NzLWRpc2NhcmQtZW1wdHkiOiAiMi4xLjAi
LAorICAgICAgICAgICAgInBvc3Rjc3MtZGlzY2FyZC1vdmVycmlkZGVuIjogIjAuMS4xIiwKKyAg
ICAgICAgICAgICJwb3N0Y3NzLWRpc2NhcmQtdW51c2VkIjogIjIuMi4xIiwKKyAgICAgICAgICAg
ICJwb3N0Y3NzLWZpbHRlci1wbHVnaW5zIjogIjIuMC4xIiwKKyAgICAgICAgICAgICJwb3N0Y3Nz
LW1lcmdlLWlkZW50cyI6ICIyLjEuNyIsCisgICAgICAgICAgICAicG9zdGNzcy1tZXJnZS1sb25n
aGFuZCI6ICIyLjAuMSIsCisgICAgICAgICAgICAicG9zdGNzcy1tZXJnZS1ydWxlcyI6ICIyLjAu
MTAiLAorICAgICAgICAgICAgInBvc3Rjc3MtbWluaWZ5LWZvbnQtdmFsdWVzIjogIjEuMC41IiwK
KyAgICAgICAgICAgICJwb3N0Y3NzLW1pbmlmeS1ncmFkaWVudHMiOiAiMS4wLjMiLAorICAgICAg
ICAgICAgInBvc3Rjc3MtbWluaWZ5LXBhcmFtcyI6ICIxLjAuNSIsCisgICAgICAgICAgICAicG9z
dGNzcy1taW5pZnktc2VsZWN0b3JzIjogIjIuMC41IiwKKyAgICAgICAgICAgICJwb3N0Y3NzLW5v
cm1hbGl6ZS1jaGFyc2V0IjogIjEuMS4wIiwKKyAgICAgICAgICAgICJwb3N0Y3NzLW5vcm1hbGl6
ZS11cmwiOiAiMy4wLjciLAorICAgICAgICAgICAgInBvc3Rjc3Mtb3JkZXJlZC12YWx1ZXMiOiAi
Mi4yLjIiLAorICAgICAgICAgICAgInBvc3Rjc3MtcmVkdWNlLWlkZW50cyI6ICIyLjMuMCIsCisg
ICAgICAgICAgICAicG9zdGNzcy1yZWR1Y2UtaW5pdGlhbCI6ICIxLjAuMCIsCisgICAgICAgICAg
ICAicG9zdGNzcy1yZWR1Y2UtdHJhbnNmb3JtcyI6ICIxLjAuMyIsCisgICAgICAgICAgICAicG9z
dGNzcy1zdmdvIjogIjIuMS41IiwKKyAgICAgICAgICAgICJwb3N0Y3NzLXVuaXF1ZS1zZWxlY3Rv
cnMiOiAiMi4wLjIiLAorICAgICAgICAgICAgInBvc3Rjc3MtdmFsdWUtcGFyc2VyIjogIjMuMy4w
IiwKKyAgICAgICAgICAgICJwb3N0Y3NzLXppbmRleCI6ICIyLjEuMSIKKyAgICAgICAgICB9Cisg
ICAgICAgIH0sCisgICAgICAgICJjc3NvIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMi4x
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisg
ICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImNsYXAiOiAiMS4xLjEiLAorICAg
ICAgICAgICAgInNvdXJjZS1tYXAiOiAiMC41LjYiCisgICAgICAgICAgfQorICAgICAgICB9LAor
ICAgICAgICAiY3Nzb20iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4zLjEiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAor
ICAgICAgICAiY3Nzc3R5bGUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4yLjM3IiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImNzc29tIjogIjAuMy4xIgorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgImQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4x
LjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiZXM1LWV4dCI6ICIwLjEwLjEy
IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImRhbWVyYXUtbGV2ZW5zaHRlaW4i
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjMiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZGFzaGRh
c2giOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xNC4wIiwKKyAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAgICAgImFzc2VydC1wbHVzIjogIjEuMC4wIgorICAgICAgICAgIH0sCisgICAg
ICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgICAgICJhc3NlcnQtcGx1cyI6IHsKKyAg
ICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9CisgICAgICAg
ICAgfQorICAgICAgICB9LAorICAgICAgICAiZGF0ZS1ub3ciOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMC4xLjQiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZGVidWciOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMi4yLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAibXMiOiAiMC43
LjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZGVjYW1lbGl6ZSI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjIuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJkZWVwLWlzIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImRlZmluZWQiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZGVsIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMi4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAgICAgImdsb2JieSI6ICI1LjAuMCIsCisgICAgICAgICAgICAiaXMtcGF0aC1jd2QiOiAiMS4w
LjAiLAorICAgICAgICAgICAgImlzLXBhdGgtaW4tY3dkIjogIjEuMC4wIiwKKyAgICAgICAgICAg
ICJvYmplY3QtYXNzaWduIjogIjQuMS4wIiwKKyAgICAgICAgICAgICJwaWZ5IjogIjIuMy4wIiwK
KyAgICAgICAgICAgICJwaW5raWUtcHJvbWlzZSI6ICIyLjAuMSIsCisgICAgICAgICAgICAicmlt
cmFmIjogIjIuNS40IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImRlbGF5ZWQt
c3RyZWFtIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAg
ImRlcGQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjAiLAorICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAi
ZGVzdHJveSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuNCIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAg
ICJkZXRlY3QtaW5kZW50IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4xIiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAgICAgImdldC1zdGRpbiI6ICI0LjAuMSIsCisgICAgICAg
ICAgICAibWluaW1pc3QiOiAiMS4yLjAiLAorICAgICAgICAgICAgInJlcGVhdGluZyI6ICIxLjEu
MyIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJkZXRlY3QtcG9ydCI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
ICAgICJjb21tYW5kZXIiOiAiMi44LjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg
ICAiZGlmZiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjAuMCIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAg
ICJkb2N0cmluZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjQuMCIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICJlc3V0aWxzIjogIjIuMC4yIiwKKyAgICAgICAgICAgICJp
c2FycmF5IjogIjEuMC4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImRvbS1j
b252ZXJ0ZXIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjQiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICAgICAidXRpbGEiOiAiMC4zLjMiCisgICAgICAgICAgfSwKKyAgICAg
ICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAgICAgInV0aWxhIjogeworICAgICAgICAg
ICAgICAidmVyc2lvbiI6ICIwLjMuMyIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9Cisg
ICAgICAgIH0sCisgICAgICAgICJkb20tc2VyaWFsaXplciI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIwLjEuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJkb21lbGVtZW50
dHlwZSI6ICIxLjEuMyIsCisgICAgICAgICAgICAiZW50aXRpZXMiOiAiMS4xLjEiCisgICAgICAg
ICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAgICAgImRvbWVsZW1l
bnR0eXBlIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMyIsCisgICAgICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJkb21haW4tYnJvd3NlciI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuNyIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJkb21lbGVt
ZW50dHlwZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjMuMCIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAg
ICJkb21oYW5kbGVyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMS4wIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAgICAgImRvbWVsZW1lbnR0eXBlIjogIjEuMy4wIgorICAgICAg
ICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImRvbXV0aWxzIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjEuNS4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImRvbS1zZXJp
YWxpemVyIjogIjAuMS4wIiwKKyAgICAgICAgICAgICJkb21lbGVtZW50dHlwZSI6ICIxLjMuMCIK
KyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJkb3QtY2FzZSI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIyLjEuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJu
by1jYXNlIjogIjIuMy4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImRvdGVu
diI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJkdXBs
ZXhlciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuMSIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJl
Y2MtanNibiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuMSIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25h
bCI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImpzYm4iOiAi
MC4xLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZWUtZmlyc3QiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMS4xLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZW1vamlzLWxpc3Qi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZW5jb2Rl
dXJsIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImVu
aGFuY2VkLXJlc29sdmUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC45LjEiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiZ3JhY2VmdWwtZnMiOiAiNC4xLjgiLAorICAgICAg
ICAgICAgIm1lbW9yeS1mcyI6ICIwLjIuMCIsCisgICAgICAgICAgICAidGFwYWJsZSI6ICIwLjEu
MTAiCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAg
ICAgIm1lbW9yeS1mcyI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4yLjAiLAorICAg
ICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisg
ICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZW50aXRpZXMi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjEiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZXJybm8i
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjQiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICAgICAicHJyIjogIjAuMC4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg
ICAgImVycm9yLWV4IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMy4wIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAgICAgImlzLWFycmF5aXNoIjogIjAuMi4xIgorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgImVzNS1leHQiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMC4xMC4xMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJlczYtaXRlcmF0
b3IiOiAiMi4wLjAiLAorICAgICAgICAgICAgImVzNi1zeW1ib2wiOiAiMy4xLjAiCisgICAgICAg
ICAgfQorICAgICAgICB9LAorICAgICAgICAiZXM2LWl0ZXJhdG9yIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImQiOiAi
MC4xLjEiLAorICAgICAgICAgICAgImVzNS1leHQiOiAiMC4xMC4xMiIsCisgICAgICAgICAgICAi
ZXM2LXN5bWJvbCI6ICIzLjEuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJl
czYtbWFwIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS40IiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAgICAgImQiOiAiMC4xLjEiLAorICAgICAgICAgICAgImVzNS1leHQiOiAi
MC4xMC4xMiIsCisgICAgICAgICAgICAiZXM2LWl0ZXJhdG9yIjogIjIuMC4wIiwKKyAgICAgICAg
ICAgICJlczYtc2V0IjogIjAuMS40IiwKKyAgICAgICAgICAgICJlczYtc3ltYm9sIjogIjMuMS4w
IiwKKyAgICAgICAgICAgICJldmVudC1lbWl0dGVyIjogIjAuMy40IgorICAgICAgICAgIH0KKyAg
ICAgICAgfSwKKyAgICAgICAgImVzNi1zZXQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4x
LjQiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiZCI6ICIwLjEuMSIsCisgICAg
ICAgICAgICAiZXM1LWV4dCI6ICIwLjEwLjEyIiwKKyAgICAgICAgICAgICJlczYtaXRlcmF0b3Ii
OiAiMi4wLjAiLAorICAgICAgICAgICAgImVzNi1zeW1ib2wiOiAiMy4xLjAiLAorICAgICAgICAg
ICAgImV2ZW50LWVtaXR0ZXIiOiAiMC4zLjQiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAiZXM2LXN5bWJvbCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjEuMCIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJkIjogIjAuMS4xIiwKKyAgICAgICAgICAgICJl
czUtZXh0IjogIjAuMTAuMTIiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZXM2
LXdlYWstbWFwIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4xIiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAgICAgImQiOiAiMC4xLjEiLAorICAgICAgICAgICAgImVzNS1leHQi
OiAiMC4xMC4xMiIsCisgICAgICAgICAgICAiZXM2LWl0ZXJhdG9yIjogIjIuMC4wIiwKKyAgICAg
ICAgICAgICJlczYtc3ltYm9sIjogIjMuMS4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAg
ICAgICAgImVzY2FwZS1odG1sIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4zIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAg
fSwKKyAgICAgICAgImVzY2FwZS1zdHJpbmctcmVnZXhwIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuMC41IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImVzY29kZWdlbiI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIxLjguMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJlc3ByaW1h
IjogIjIuNy4zIiwKKyAgICAgICAgICAgICJlc3RyYXZlcnNlIjogIjEuOS4zIiwKKyAgICAgICAg
ICAgICJlc3V0aWxzIjogIjIuMC4yIiwKKyAgICAgICAgICAgICJvcHRpb25hdG9yIjogIjAuOC4y
IiwKKyAgICAgICAgICAgICJzb3VyY2UtbWFwIjogIjAuMi4wIgorICAgICAgICAgIH0sCisgICAg
ICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgICAgICJlc3RyYXZlcnNlIjogeworICAg
ICAgICAgICAgICAidmVyc2lvbiI6ICIxLjkuMyIsCisgICAgICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAic291cmNlLW1hcCI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4yLjAiLAor
ICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICAgICAgICAgImFtZGVmaW5lIjogIjEuMC4wIgorICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZXNj
b3BlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuNi4wIiwKKyAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAgICAgImVzNi1tYXAiOiAiMC4xLjQiLAorICAgICAgICAgICAgImVzNi13ZWFr
LW1hcCI6ICIyLjAuMSIsCisgICAgICAgICAgICAiZXNyZWN1cnNlIjogIjQuMS4wIiwKKyAgICAg
ICAgICAgICJlc3RyYXZlcnNlIjogIjQuMi4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAg
ICAgICAgImVzbGludCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjUuMCIsCisgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJy
ZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJjaGFsayI6ICIxLjEuMyIsCisgICAgICAgICAgICAi
Y29uY2F0LXN0cmVhbSI6ICIxLjUuMiIsCisgICAgICAgICAgICAiZGVidWciOiAiMi4yLjAiLAor
ICAgICAgICAgICAgImRvY3RyaW5lIjogIjEuNC4wIiwKKyAgICAgICAgICAgICJlc2NvcGUiOiAi
My42LjAiLAorICAgICAgICAgICAgImVzcHJlZSI6ICIzLjMuMSIsCisgICAgICAgICAgICAiZXN0
cmF2ZXJzZSI6ICI0LjIuMCIsCisgICAgICAgICAgICAiZXN1dGlscyI6ICIyLjAuMiIsCisgICAg
ICAgICAgICAiZmlsZS1lbnRyeS1jYWNoZSI6ICIyLjAuMCIsCisgICAgICAgICAgICAiZ2xvYiI6
ICI3LjEuMCIsCisgICAgICAgICAgICAiZ2xvYmFscyI6ICI5LjEwLjAiLAorICAgICAgICAgICAg
Imlnbm9yZSI6ICIzLjEuNSIsCisgICAgICAgICAgICAiaW11cm11cmhhc2giOiAiMC4xLjQiLAor
ICAgICAgICAgICAgImlucXVpcmVyIjogIjAuMTIuMCIsCisgICAgICAgICAgICAiaXMtbXktanNv
bi12YWxpZCI6ICIyLjE0LjAiLAorICAgICAgICAgICAgImlzLXJlc29sdmFibGUiOiAiMS4wLjAi
LAorICAgICAgICAgICAgImpzLXlhbWwiOiAiMy42LjEiLAorICAgICAgICAgICAgImpzb24tc3Rh
YmxlLXN0cmluZ2lmeSI6ICIxLjAuMSIsCisgICAgICAgICAgICAibGV2biI6ICIwLjMuMCIsCisg
ICAgICAgICAgICAibG9kYXNoIjogIjQuMTYuMiIsCisgICAgICAgICAgICAibWtkaXJwIjogIjAu
NS4xIiwKKyAgICAgICAgICAgICJuYXR1cmFsLWNvbXBhcmUiOiAiMS40LjAiLAorICAgICAgICAg
ICAgIm9wdGlvbmF0b3IiOiAiMC44LjIiLAorICAgICAgICAgICAgInBhdGgtaXMtaW5zaWRlIjog
IjEuMC4yIiwKKyAgICAgICAgICAgICJwbHVyYWxpemUiOiAiMS4yLjEiLAorICAgICAgICAgICAg
InByb2dyZXNzIjogIjEuMS44IiwKKyAgICAgICAgICAgICJyZXF1aXJlLXVuY2FjaGVkIjogIjEu
MC4yIiwKKyAgICAgICAgICAgICJzaGVsbGpzIjogIjAuNi4xIiwKKyAgICAgICAgICAgICJzdHJp
cC1ib20iOiAiMy4wLjAiLAorICAgICAgICAgICAgInN0cmlwLWpzb24tY29tbWVudHMiOiAiMS4w
LjQiLAorICAgICAgICAgICAgInRhYmxlIjogIjMuOC4wIiwKKyAgICAgICAgICAgICJ0ZXh0LXRh
YmxlIjogIjAuMi4wIiwKKyAgICAgICAgICAgICJ1c2VyLWhvbWUiOiAiMi4wLjAiCisgICAgICAg
ICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAgICAgImdsb2JhbHMi
OiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjkuMTAuMCIsCisgICAgICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgIH0s
CisgICAgICAgICAgICAic3RyaXAtYm9tIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIz
LjAuMCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRl
diI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAidXNlci1ob21lIjogeworICAg
ICAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgICAgICAgICAib3MtaG9tZWRpciI6ICIxLjAuMSIKKyAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImVz
bGludC1jb25maWctcmVhY3QtYXBwIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4xIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAg
ICAgfSwKKyAgICAgICAgImVzbGludC1pbXBvcnQtcmVzb2x2ZXItbm9kZSI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIwLjIuMyIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJk
ZWJ1ZyI6ICIyLjIuMCIsCisgICAgICAgICAgICAib2JqZWN0LWFzc2lnbiI6ICI0LjEuMCIsCisg
ICAgICAgICAgICAicmVzb2x2ZSI6ICIxLjEuNyIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisg
ICAgICAgICJlc2xpbnQtbG9hZGVyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuNS4wIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImZpbmQtY2FjaGUtZGlyIjogIjAuMS4x
IiwKKyAgICAgICAgICAgICJsb2FkZXItdXRpbHMiOiAiMC4yLjE2IiwKKyAgICAgICAgICAgICJv
YmplY3QtYXNzaWduIjogIjQuMS4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAg
ImVzbGludC1wbHVnaW4tZmxvd3R5cGUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4xOC4x
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisg
ICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImxvZGFzaCI6ICI0LjE2LjIiCisg
ICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZXNsaW50LXBsdWdpbi1pbXBvcnQiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xMi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAgICAgImJ1aWx0aW4tbW9kdWxlcyI6ICIxLjEuMSIsCisgICAgICAgICAgICAiY29udGFp
bnMtcGF0aCI6ICIwLjEuMCIsCisgICAgICAgICAgICAiZGVidWciOiAiMi4yLjAiLAorICAgICAg
ICAgICAgImRvY3RyaW5lIjogIjEuMi4zIiwKKyAgICAgICAgICAgICJlczYtbWFwIjogIjAuMS40
IiwKKyAgICAgICAgICAgICJlczYtc2V0IjogIjAuMS40IiwKKyAgICAgICAgICAgICJlc2xpbnQt
aW1wb3J0LXJlc29sdmVyLW5vZGUiOiAiMC4yLjMiLAorICAgICAgICAgICAgImxvZGFzaC5jb25k
IjogIjQuNS4yIiwKKyAgICAgICAgICAgICJsb2Rhc2guZW5kc3dpdGgiOiAiNC4yLjEiLAorICAg
ICAgICAgICAgImxvZGFzaC5maW5kIjogIjQuNi4wIiwKKyAgICAgICAgICAgICJsb2Rhc2guZmlu
ZGluZGV4IjogIjQuNi4wIiwKKyAgICAgICAgICAgICJvYmplY3QtYXNzaWduIjogIjQuMS4wIiwK
KyAgICAgICAgICAgICJwa2ctZGlyIjogIjEuMC4wIiwKKyAgICAgICAgICAgICJwa2ctdXAiOiAi
MS4wLjAiCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAg
ICAgICAgImRvY3RyaW5lIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjIuMyIsCisg
ICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAiZXN1dGlscyI6
ICIyLjAuMiIsCisgICAgICAgICAgICAgICAgImlzYXJyYXkiOiAiMS4wLjAiCisgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJl
c2xpbnQtcGx1Z2luLWpzeC1hMTF5IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMi4yIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImRhbWVyYXUtbGV2ZW5zaHRlaW4iOiAi
MS4wLjMiLAorICAgICAgICAgICAgImpzeC1hc3QtdXRpbHMiOiAiMS4zLjEiLAorICAgICAgICAg
ICAgIm9iamVjdC1hc3NpZ24iOiAiNC4xLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAiZXNsaW50LXBsdWdpbi1yZWFjdCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI2LjMu
MCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAor
ICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJkb2N0cmluZSI6ICIxLjQuMCIs
CisgICAgICAgICAgICAianN4LWFzdC11dGlscyI6ICIxLjMuMSIKKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJlc3ByZWUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4zLjEi
LAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYWNvcm4iOiAiNC4wLjMiLAorICAg
ICAgICAgICAgImFjb3JuLWpzeCI6ICIzLjAuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisg
ICAgICAgICJlc3ByaW1hIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuNy4zIiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwK
KyAgICAgICAgImVzcmVjdXJzZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI0LjEuMCIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJlc3RyYXZlcnNlIjogIjQuMS4xIiwKKyAg
ICAgICAgICAgICJvYmplY3QtYXNzaWduIjogIjQuMS4wIgorICAgICAgICAgIH0sCisgICAgICAg
ICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgICAgICJlc3RyYXZlcnNlIjogeworICAgICAg
ICAgICAgICAidmVyc2lvbiI6ICI0LjEuMSIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9
CisgICAgICAgIH0sCisgICAgICAgICJlc3RyYXZlcnNlIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjQuMi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImVzdXRpbHMiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMi4wLjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZXRhZyI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIxLjcuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJldmVudC1lbWl0dGVyIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjAuMy40IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImQi
OiAiMC4xLjEiLAorICAgICAgICAgICAgImVzNS1leHQiOiAiMC4xMC4xMiIKKyAgICAgICAgICB9
CisgICAgICAgIH0sCisgICAgICAgICJldmVudGVtaXR0ZXIzIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjEuMi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImV2ZW50cyI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIxLjEuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJldmVudHNvdXJjZSI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIwLjEuNiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJv
cmlnaW5hbCI6ICIxLjAuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJleGVj
LXNoIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4wIiwKKyAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAgICAgIm1lcmdlIjogIjEuMi4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgImV4aXQtaG9vayI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMSIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAg
IH0sCisgICAgICAgICJleHBhbmQtYnJhY2tldHMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
MC4xLjUiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiaXMtcG9zaXgtYnJhY2tl
dCI6ICIwLjEuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJleHBhbmQtcmFu
Z2UiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS44LjIiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7
CisgICAgICAgICAgICAiZmlsbC1yYW5nZSI6ICIyLjIuMyIKKyAgICAgICAgICB9CisgICAgICAg
IH0sCisgICAgICAgICJleHByZXNzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjQuMTQuMCIs
CisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJhY2NlcHRzIjogIjEuMy4zIiwKKyAg
ICAgICAgICAgICJhcnJheS1mbGF0dGVuIjogIjEuMS4xIiwKKyAgICAgICAgICAgICJjb250ZW50
LWRpc3Bvc2l0aW9uIjogIjAuNS4xIiwKKyAgICAgICAgICAgICJjb250ZW50LXR5cGUiOiAiMS4w
LjIiLAorICAgICAgICAgICAgImNvb2tpZSI6ICIwLjMuMSIsCisgICAgICAgICAgICAiY29va2ll
LXNpZ25hdHVyZSI6ICIxLjAuNiIsCisgICAgICAgICAgICAiZGVidWciOiAiMi4yLjAiLAorICAg
ICAgICAgICAgImRlcGQiOiAiMS4xLjAiLAorICAgICAgICAgICAgImVuY29kZXVybCI6ICIxLjAu
MSIsCisgICAgICAgICAgICAiZXNjYXBlLWh0bWwiOiAiMS4wLjMiLAorICAgICAgICAgICAgImV0
YWciOiAiMS43LjAiLAorICAgICAgICAgICAgImZpbmFsaGFuZGxlciI6ICIwLjUuMCIsCisgICAg
ICAgICAgICAiZnJlc2giOiAiMC4zLjAiLAorICAgICAgICAgICAgIm1lcmdlLWRlc2NyaXB0b3Jz
IjogIjEuMC4xIiwKKyAgICAgICAgICAgICJtZXRob2RzIjogIjEuMS4yIiwKKyAgICAgICAgICAg
ICJvbi1maW5pc2hlZCI6ICIyLjMuMCIsCisgICAgICAgICAgICAicGFyc2V1cmwiOiAiMS4zLjEi
LAorICAgICAgICAgICAgInBhdGgtdG8tcmVnZXhwIjogIjAuMS43IiwKKyAgICAgICAgICAgICJw
cm94eS1hZGRyIjogIjEuMS4yIiwKKyAgICAgICAgICAgICJxcyI6ICI2LjIuMCIsCisgICAgICAg
ICAgICAicmFuZ2UtcGFyc2VyIjogIjEuMi4wIiwKKyAgICAgICAgICAgICJzZW5kIjogIjAuMTQu
MSIsCisgICAgICAgICAgICAic2VydmUtc3RhdGljIjogIjEuMTEuMSIsCisgICAgICAgICAgICAi
dHlwZS1pcyI6ICIxLjYuMTMiLAorICAgICAgICAgICAgInV0aWxzLW1lcmdlIjogIjEuMC4wIiwK
KyAgICAgICAgICAgICJ2YXJ5IjogIjEuMS4wIgorICAgICAgICAgIH0sCisgICAgICAgICAgImRl
cGVuZGVuY2llcyI6IHsKKyAgICAgICAgICAgICJxcyI6IHsKKyAgICAgICAgICAgICAgInZlcnNp
b24iOiAiNi4yLjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9LAor
ICAgICAgICAiZXh0ZW5kIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4wIiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwK
KyAgICAgICAgImV4dGdsb2IiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4zLjIiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiaXMtZXh0Z2xvYiI6ICIxLjAuMCIKKyAgICAg
ICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJleHRyYWN0LXRleHQtd2VicGFjay1wbHVnaW4i
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICAgICAiYXN5bmMiOiAiMS41LjIiLAorICAgICAgICAgICAgImxvYWRlci11dGlscyI6
ICIwLjIuMTYiLAorICAgICAgICAgICAgIndlYnBhY2stc291cmNlcyI6ICIwLjEuMiIKKyAgICAg
ICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJleHRzcHJpbnRmIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImZhc3QtbGV2ZW5zaHRlaW4iOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMi4wLjQiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZmFzdHBhcnNlIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImZheWUtd2Vi
c29ja2V0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMTAuMCIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgICAgICJ3ZWJzb2NrZXQtZHJpdmVyIjogIjAuNi41IgorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgImZiLXdhdGNobWFuIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjEuOS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJzZXIiOiAi
MS4wLjIiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZmlndXJlcyI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjcuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
ICAgICJlc2NhcGUtc3RyaW5nLXJlZ2V4cCI6ICIxLjAuNSIsCisgICAgICAgICAgICAib2JqZWN0
LWFzc2lnbiI6ICI0LjEuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmaWxl
LWVudHJ5LWNhY2hlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAgICAgImZsYXQtY2FjaGUiOiAiMS4yLjEiLAorICAgICAgICAg
ICAgIm9iamVjdC1hc3NpZ24iOiAiNC4xLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAiZmlsZS1sb2FkZXIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC45LjAiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAibG9hZGVyLXV0aWxzIjogIjAuMi4xNiIKKyAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmaWxlbmFtZS1yZWdleCI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJmaWxlc2V0IjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjAuMi4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAg
ICAgImdsb2IiOiAiNS4wLjE1IiwKKyAgICAgICAgICAgICJtaW5pbWF0Y2giOiAiMi4wLjEwIgor
ICAgICAgICAgIH0sCisgICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgICAgICJn
bG9iIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICI1LjAuMTUiLAorICAgICAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgImluZmxpZ2h0IjogIjEuMC41IiwK
KyAgICAgICAgICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjMiLAorICAgICAgICAgICAgICAgICJt
aW5pbWF0Y2giOiAiMi4wLjEwIiwKKyAgICAgICAgICAgICAgICAib25jZSI6ICIxLjQuMCIsCisg
ICAgICAgICAgICAgICAgInBhdGgtaXMtYWJzb2x1dGUiOiAiMS4wLjAiCisgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAibWluaW1hdGNoIjogeworICAgICAgICAg
ICAgICAidmVyc2lvbiI6ICIyLjAuMTAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7
CisgICAgICAgICAgICAgICAgImJyYWNlLWV4cGFuc2lvbiI6ICIxLjEuNiIKKyAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZp
bGVzaXplIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMy4wIiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAg
ImZpbGwtcmFuZ2UiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4yLjMiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICAgICAiaXMtbnVtYmVyIjogIjIuMS4wIiwKKyAgICAgICAgICAg
ICJpc29iamVjdCI6ICIyLjEuMCIsCisgICAgICAgICAgICAicmFuZG9tYXRpYyI6ICIxLjEuNSIs
CisgICAgICAgICAgICAicmVwZWF0LWVsZW1lbnQiOiAiMS4xLjIiLAorICAgICAgICAgICAgInJl
cGVhdC1zdHJpbmciOiAiMS41LjQiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAi
ZmluYWxoYW5kbGVyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNS4wIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAgICAgImRlYnVnIjogIjIuMi4wIiwKKyAgICAgICAgICAgICJl
c2NhcGUtaHRtbCI6ICIxLjAuMyIsCisgICAgICAgICAgICAib24tZmluaXNoZWQiOiAiMi4zLjAi
LAorICAgICAgICAgICAgInN0YXR1c2VzIjogIjEuMy4wIiwKKyAgICAgICAgICAgICJ1bnBpcGUi
OiAiMS4wLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZmluZC1jYWNoZS1k
aXIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjEiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7
CisgICAgICAgICAgICAiY29tbW9uZGlyIjogIjEuMC4xIiwKKyAgICAgICAgICAgICJta2RpcnAi
OiAiMC41LjEiLAorICAgICAgICAgICAgInBrZy1kaXIiOiAiMS4wLjAiCisgICAgICAgICAgfQor
ICAgICAgICB9LAorICAgICAgICAiZmluZC11cCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIx
LjEuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJwYXRoLWV4aXN0cyI6ICIy
LjEuMCIsCisgICAgICAgICAgICAicGlua2llLXByb21pc2UiOiAiMi4wLjEiCisgICAgICAgICAg
fQorICAgICAgICB9LAorICAgICAgICAiZmxhdC1jYWNoZSI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIxLjIuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJjaXJjdWxhci1q
c29uIjogIjAuMy4xIiwKKyAgICAgICAgICAgICJkZWwiOiAiMi4yLjIiLAorICAgICAgICAgICAg
ImdyYWNlZnVsLWZzIjogIjQuMS44IiwKKyAgICAgICAgICAgICJ3cml0ZSI6ICIwLjIuMSIKKyAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmbGF0dGVuIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImZvci1pbiI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIwLjEuNiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJmb3Itb3duIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjAuMS40IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImZv
ci1pbiI6ICIwLjEuNiIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmb3JldmVy
LWFnZW50IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNi4xIiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAg
ImZvcm0tZGF0YSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICJhc3luY2tpdCI6ICIwLjQuMCIsCisgICAgICAgICAgICAi
Y29tYmluZWQtc3RyZWFtIjogIjEuMC41IiwKKyAgICAgICAgICAgICJtaW1lLXR5cGVzIjogIjIu
MS4xMiIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmb3J3YXJkZWQiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMC4xLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZnJlc2giOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMC4zLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZnMtZXh0cmEiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMC4zMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAgICAgImdyYWNlZnVsLWZzIjogIjQuMS44IiwKKyAgICAgICAgICAgICJqc29uZmlsZSI6
ICIyLjQuMCIsCisgICAgICAgICAgICAia2xhdyI6ICIxLjMuMCIsCisgICAgICAgICAgICAicGF0
aC1pcy1hYnNvbHV0ZSI6ICIxLjAuMCIsCisgICAgICAgICAgICAicmltcmFmIjogIjIuNS40Igor
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZzLnJlYWxwYXRoIjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImZ1bmN0aW9uLWJpbmQiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZ2VuZXJhdGUt
ZnVuY3Rpb24iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAg
ICAiZ2VuZXJhdGUtb2JqZWN0LXByb3BlcnR5IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
Mi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImlzLXByb3BlcnR5IjogIjEu
MC4yIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImdldC1jYWxsZXItZmlsZSI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJnZXQtc3Rk
aW4iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNC4wLjEiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZ2V0
cGFzcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuNiIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgICAgICJhc3NlcnQtcGx1cyI6ICIxLjAuMCIKKyAgICAgICAgICB9LAorICAg
ICAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICAgICAiYXNzZXJ0LXBsdXMiOiB7Cisg
ICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfQorICAgICAg
ICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImdsb2IiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiNy4xLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiZnMucmVhbHBhdGgi
OiAiMS4wLjAiLAorICAgICAgICAgICAgImluZmxpZ2h0IjogIjEuMC41IiwKKyAgICAgICAgICAg
ICJpbmhlcml0cyI6ICIyLjAuMyIsCisgICAgICAgICAgICAibWluaW1hdGNoIjogIjMuMC4zIiwK
KyAgICAgICAgICAgICJvbmNlIjogIjEuNC4wIiwKKyAgICAgICAgICAgICJwYXRoLWlzLWFic29s
dXRlIjogIjEuMC4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImdsb2ItYmFz
ZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjMuMCIsCisgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgICAgICJnbG9iLXBhcmVudCI6ICIyLjAuMCIsCisgICAgICAgICAgICAiaXMtZ2xv
YiI6ICIyLjAuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJnbG9iLXBhcmVu
dCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgICAgICJpcy1nbG9iIjogIjIuMC4xIgorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgImdsb2JhbHMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiOC4xOC4wIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAg
fSwKKyAgICAgICAgImdsb2JieSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI1LjAuMCIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJhcnJheS11bmlvbiI6ICIxLjAuMiIsCisg
ICAgICAgICAgICAiYXJyaWZ5IjogIjEuMC4xIiwKKyAgICAgICAgICAgICJnbG9iIjogIjcuMS4w
IiwKKyAgICAgICAgICAgICJvYmplY3QtYXNzaWduIjogIjQuMS4wIiwKKyAgICAgICAgICAgICJw
aWZ5IjogIjIuMy4wIiwKKyAgICAgICAgICAgICJwaW5raWUtcHJvbWlzZSI6ICIyLjAuMSIKKyAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJncmFjZWZ1bC1mcyI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICI0LjEuOCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJncmFjZWZ1bC1yZWFkbGluayI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJncm93bHki
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4zLjAiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZ3ppcC1z
aXplIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4wIiwKKyAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAgICAgImR1cGxleGVyIjogIjAuMS4xIgorICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgImhhbmRsZWJhcnMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNC4wLjUi
LAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYXN5bmMiOiAiMS41LjIiLAorICAg
ICAgICAgICAgIm9wdGltaXN0IjogIjAuNi4xIiwKKyAgICAgICAgICAgICJzb3VyY2UtbWFwIjog
IjAuNC40IiwKKyAgICAgICAgICAgICJ1Z2xpZnktanMiOiAiMi42LjQiCisgICAgICAgICAgfSwK
KyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAgICAgInNvdXJjZS1tYXAiOiB7
CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNC40IiwKKyAgICAgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAgICAgICAgICJhbWRlZmluZSI6ICIxLjAuMCIKKyAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAg
Imhhci12YWxpZGF0b3IiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjYiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiY2hhbGsiOiAiMS4xLjMiLAorICAgICAgICAgICAg
ImNvbW1hbmRlciI6ICIyLjkuMCIsCisgICAgICAgICAgICAiaXMtbXktanNvbi12YWxpZCI6ICIy
LjE0LjAiLAorICAgICAgICAgICAgInBpbmtpZS1wcm9taXNlIjogIjIuMC4xIgorICAgICAgICAg
IH0sCisgICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgICAgICJjb21tYW5kZXIi
OiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuOS4wIiwKKyAgICAgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICJncmFjZWZ1bC1yZWFkbGluayI6ICIxLjAu
MSIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgImhhcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJmdW5jdGlvbi1iaW5kIjogIjEuMS4wIgorICAg
ICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImhhcy1hbnNpIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImFuc2kt
cmVnZXgiOiAiMi4wLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaGFzLWZs
YWciOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiaGF3
ayI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjEuMyIsCisgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgICAgICJib29tIjogIjIuMTAuMSIsCisgICAgICAgICAgICAiY3J5cHRpbGVzIjog
IjIuMC41IiwKKyAgICAgICAgICAgICJob2VrIjogIjIuMTYuMyIsCisgICAgICAgICAgICAic250
cCI6ICIxLjAuOSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJoZSI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJoZWFkZXItY2FzZSI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgICAgICJuby1jYXNlIjogIjIuMy4wIiwKKyAgICAgICAgICAgICJ1cHBlci1jYXNlIjog
IjEuMS4zIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImhvZWsiOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMi4xNi4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImhvbWUtb3ItdG1wIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAgICAgIm9zLXRtcGRpciI6ICIxLjAuMSIsCisgICAgICAgICAgICAidXNlci1ob21lIjog
IjEuMS4xIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImhvc3RlZC1naXQtaW5m
byI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjEuNSIsCisgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJodG1s
LWNvbW1lbnQtcmVnZXgiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjEiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAor
ICAgICAgICAiaHRtbC1lbnRpdGllcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjIuMCIs
CisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAg
ICAgIH0sCisgICAgICAgICJodG1sLW1pbmlmaWVyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjIuMS43IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImNoYW5nZS1jYXNlIjog
IjMuMC4wIiwKKyAgICAgICAgICAgICJjbGVhbi1jc3MiOiAiMy40LjIwIiwKKyAgICAgICAgICAg
ICJjb21tYW5kZXIiOiAiMi45LjAiLAorICAgICAgICAgICAgImhlIjogIjEuMS4wIiwKKyAgICAg
ICAgICAgICJuY25hbWUiOiAiMS4wLjAiLAorICAgICAgICAgICAgInJlbGF0ZXVybCI6ICIwLjIu
NyIsCisgICAgICAgICAgICAidWdsaWZ5LWpzIjogIjIuNi40IgorICAgICAgICAgIH0sCisgICAg
ICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgICAgICJjb21tYW5kZXIiOiB7CisgICAg
ICAgICAgICAgICJ2ZXJzaW9uIjogIjIuOS4wIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAgICAgICAgICJncmFjZWZ1bC1yZWFkbGluayI6ICIxLjAuMSIKKyAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg
ICAgImh0bWwtd2VicGFjay1wbHVnaW4iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4yMi4w
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisg
ICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJsdWViaXJkIjogIjMuNC42IiwK
KyAgICAgICAgICAgICJodG1sLW1pbmlmaWVyIjogIjIuMS43IiwKKyAgICAgICAgICAgICJsb2Fk
ZXItdXRpbHMiOiAiMC4yLjE2IiwKKyAgICAgICAgICAgICJsb2Rhc2giOiAiNC4xNi4yIiwKKyAg
ICAgICAgICAgICJwcmV0dHktZXJyb3IiOiAiMi4wLjEiLAorICAgICAgICAgICAgInRvcG9zb3J0
IjogIjEuMC4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImh0bWxwYXJzZXIy
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMy4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAgICAgImRvbWVsZW1lbnR0eXBlIjogIjEuMy4wIiwKKyAgICAgICAgICAgICJkb21o
YW5kbGVyIjogIjIuMS4wIiwKKyAgICAgICAgICAgICJkb211dGlscyI6ICIxLjEuNiIsCisgICAg
ICAgICAgICAicmVhZGFibGUtc3RyZWFtIjogIjEuMC4zNCIKKyAgICAgICAgICB9LAorICAgICAg
ICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICAgICAiZG9tdXRpbHMiOiB7CisgICAgICAg
ICAgICAgICJ2ZXJzaW9uIjogIjEuMS42IiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAgICAgICAgICJkb21lbGVtZW50dHlwZSI6ICIxLjMuMCIKKyAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJpc2FycmF5IjogeworICAgICAgICAg
ICAgICAidmVyc2lvbiI6ICIwLjAuMSIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAi
cmVhZGFibGUtc3RyZWFtIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMzQiLAor
ICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgImNvcmUtdXRp
bC1pcyI6ICIxLjAuMiIsCisgICAgICAgICAgICAgICAgImluaGVyaXRzIjogIjIuMC4zIiwKKyAg
ICAgICAgICAgICAgICAiaXNhcnJheSI6ICIwLjAuMSIsCisgICAgICAgICAgICAgICAgInN0cmlu
Z19kZWNvZGVyIjogIjAuMTAuMzEiCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJodHRwLWJyb3dzZXJpZnkiOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMS43LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAg
ICAiQmFzZTY0IjogIjAuMi4xIiwKKyAgICAgICAgICAgICJpbmhlcml0cyI6ICIyLjAuMyIKKyAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJodHRwLWVycm9ycyI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIxLjUuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJp
bmhlcml0cyI6ICIyLjAuMSIsCisgICAgICAgICAgICAic2V0cHJvdG90eXBlb2YiOiAiMS4wLjEi
LAorICAgICAgICAgICAgInN0YXR1c2VzIjogIjEuMy4wIgorICAgICAgICAgIH0sCisgICAgICAg
ICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgICAgICJpbmhlcml0cyI6IHsKKyAgICAgICAg
ICAgICAgInZlcnNpb24iOiAiMi4wLjEiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9CisgICAgICAgICAgfQor
ICAgICAgICB9LAorICAgICAgICAiaHR0cC1wcm94eSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIxLjE1LjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiZXZlbnRlbWl0dGVy
MyI6ICIxLjIuMCIsCisgICAgICAgICAgICAicmVxdWlyZXMtcG9ydCI6ICIxLjAuMCIKKyAgICAg
ICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJodHRwLXByb3h5LW1pZGRsZXdhcmUiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMC4xNy4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAgICAgImh0dHAtcHJveHkiOiAiMS4xNS4xIiwKKyAgICAgICAgICAgICJpcy1nbG9iIjogIjIu
MC4xIiwKKyAgICAgICAgICAgICJsb2Rhc2giOiAiNC4xNi4yIiwKKyAgICAgICAgICAgICJtaWNy
b21hdGNoIjogIjIuMy4xMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJodHRw
LXNpZ25hdHVyZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMSIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICJhc3NlcnQtcGx1cyI6ICIwLjIuMCIsCisgICAgICAgICAg
ICAianNwcmltIjogIjEuMy4xIiwKKyAgICAgICAgICAgICJzc2hwayI6ICIxLjEwLjAiCisgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaHR0cHMtYnJvd3NlcmlmeSI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIwLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJpY29udi1saXRlIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNC4xMyIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJpY3NzLXJlcGxh
Y2Utc3ltYm9scyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAg
ICAgICJpZWVlNzU0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS42IiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAg
ICAgICAgImlnbm9yZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjEuNSIsCisgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisg
ICAgICAgICJpbXVybXVyaGFzaCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuNCIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAg
IH0sCisgICAgICAgICJpbmRleGVzLW9mIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4x
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAg
ICAgICAgfSwKKyAgICAgICAgImluZGV4b2YiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4w
LjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQor
ICAgICAgICB9LAorICAgICAgICAiaW5mbGlnaHQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
MS4wLjUiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAib25jZSI6ICIxLjQuMCIs
CisgICAgICAgICAgICAid3JhcHB5IjogIjEuMC4yIgorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgImluaGVyaXRzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4zIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAg
fSwKKyAgICAgICAgImlucXVpcmVyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMTIuMCIs
CisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJhbnNpLWVzY2FwZXMiOiAiMS40LjAi
LAorICAgICAgICAgICAgImFuc2ktcmVnZXgiOiAiMi4wLjAiLAorICAgICAgICAgICAgImNoYWxr
IjogIjEuMS4zIiwKKyAgICAgICAgICAgICJjbGktY3Vyc29yIjogIjEuMC4yIiwKKyAgICAgICAg
ICAgICJjbGktd2lkdGgiOiAiMi4xLjAiLAorICAgICAgICAgICAgImZpZ3VyZXMiOiAiMS43LjAi
LAorICAgICAgICAgICAgImxvZGFzaCI6ICI0LjE2LjIiLAorICAgICAgICAgICAgInJlYWRsaW5l
MiI6ICIxLjAuMSIsCisgICAgICAgICAgICAicnVuLWFzeW5jIjogIjAuMS4wIiwKKyAgICAgICAg
ICAgICJyeC1saXRlIjogIjMuMS4yIiwKKyAgICAgICAgICAgICJzdHJpbmctd2lkdGgiOiAiMS4w
LjIiLAorICAgICAgICAgICAgInN0cmlwLWFuc2kiOiAiMy4wLjEiLAorICAgICAgICAgICAgInRo
cm91Z2giOiAiMi4zLjgiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaW50ZXJw
cmV0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNi42IiwKKyAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImlu
dmFyaWFudCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjIuMSIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgICAgICJsb29zZS1lbnZpZnkiOiAiMS4yLjAiCisgICAgICAgICAgfQor
ICAgICAgICB9LAorICAgICAgICAiaW52ZXJ0LWt2IjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjEuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRy
dWUKKyAgICAgICAgfSwKKyAgICAgICAgImlwYWRkci5qcyI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIxLjEuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJpcy1hYnNvbHV0ZS11cmwiOiB7CisgICAgICAg
ICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiaXMtYXJyYXlpc2giOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMC4yLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiaXMtYmluYXJ5LXBh
dGgiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7
CisgICAgICAgICAgICAiYmluYXJ5LWV4dGVuc2lvbnMiOiAiMS42LjAiCisgICAgICAgICAgfQor
ICAgICAgICB9LAorICAgICAgICAiaXMtYnVmZmVyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjEuMS40IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRy
dWUKKyAgICAgICAgfSwKKyAgICAgICAgImlzLWJ1aWx0aW4tbW9kdWxlIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJ1
aWx0aW4tbW9kdWxlcyI6ICIxLjEuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJpcy1kb3RmaWxlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAg
ICAgICAgImlzLWVxdWFsLXNoYWxsb3ciOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjMi
LAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiaXMtcHJpbWl0aXZlIjogIjIuMC4w
IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlzLWV4dGVuZGFibGUiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMC4xLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiaXMtZXh0Z2xvYiI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJpcy1maW5p
dGUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7
CisgICAgICAgICAgICAibnVtYmVyLWlzLW5hbiI6ICIxLjAuMCIKKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJpcy1mdWxsd2lkdGgtY29kZS1wb2ludCI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJudW1i
ZXItaXMtbmFuIjogIjEuMC4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlz
LWdsb2IiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjEiLAorICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICAgICAiaXMtZXh0Z2xvYiI6ICIxLjAuMCIKKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJpcy1sb3dlci1jYXNlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjEuMS4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImxvd2VyLWNhc2UiOiAi
MS4xLjMiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaXMtbXktanNvbi12YWxp
ZCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjE0LjAiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7
CisgICAgICAgICAgICAiZ2VuZXJhdGUtZnVuY3Rpb24iOiAiMi4wLjAiLAorICAgICAgICAgICAg
ImdlbmVyYXRlLW9iamVjdC1wcm9wZXJ0eSI6ICIxLjIuMCIsCisgICAgICAgICAgICAianNvbnBv
aW50ZXIiOiAiMi4wLjAiLAorICAgICAgICAgICAgInh0ZW5kIjogIjQuMC4xIgorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgImlzLW51bWJlciI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIyLjEuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJraW5kLW9mIjog
IjMuMC40IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlzLXBhdGgtY3dkIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImlzLXBhdGgt
aW4tY3dkIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAgICAgImlzLXBhdGgtaW5zaWRlIjogIjEuMC4wIgorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgImlzLXBhdGgtaW5zaWRlIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgInBhdGgtaXMt
aW5zaWRlIjogIjEuMC4yIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlzLXBs
YWluLW9iaiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAg
ICJpcy1wb3NpeC1icmFja2V0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS4xIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAg
fSwKKyAgICAgICAgImlzLXByaW1pdGl2ZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAu
MCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisg
ICAgICAgIH0sCisgICAgICAgICJpcy1wcm9wZXJ0eSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIxLjAuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlCisgICAgICAgIH0sCisgICAgICAgICJpcy1yZXNvbHZhYmxlIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgInRyeWl0
IjogIjEuMC4yIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImlzLXN2ZyI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgICAgICJodG1sLWNvbW1lbnQtcmVnZXgiOiAiMS4xLjEiCisgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgICAiaXMtdHlwZWRhcnJheSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIx
LjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
CisgICAgICAgIH0sCisgICAgICAgICJpcy11cHBlci1jYXNlIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjEuMS4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgInVwcGVyLWNh
c2UiOiAiMS4xLjMiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaXMtdXRmOCI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjIuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJpc2FycmF5
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImlzZXhl
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImlzb2Jq
ZWN0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMS4wIiwKKyAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAgICAgImlzYXJyYXkiOiAiMS4wLjAiCisgICAgICAgICAgfQorICAgICAgICB9
LAorICAgICAgICAiaXNzdHJlYW0iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjIiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAg
ICB9LAorICAgICAgICAiaXN0YW5idWwiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC40LjUi
LAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYWJicmV2IjogIjEuMC45IiwKKyAg
ICAgICAgICAgICJhc3luYyI6ICIxLjUuMiIsCisgICAgICAgICAgICAiZXNjb2RlZ2VuIjogIjEu
OC4xIiwKKyAgICAgICAgICAgICJlc3ByaW1hIjogIjIuNy4zIiwKKyAgICAgICAgICAgICJnbG9i
IjogIjUuMC4xNSIsCisgICAgICAgICAgICAiaGFuZGxlYmFycyI6ICI0LjAuNSIsCisgICAgICAg
ICAgICAianMteWFtbCI6ICIzLjYuMSIsCisgICAgICAgICAgICAibWtkaXJwIjogIjAuNS4xIiwK
KyAgICAgICAgICAgICJub3B0IjogIjMuMC42IiwKKyAgICAgICAgICAgICJvbmNlIjogIjEuNC4w
IiwKKyAgICAgICAgICAgICJyZXNvbHZlIjogIjEuMS43IiwKKyAgICAgICAgICAgICJzdXBwb3J0
cy1jb2xvciI6ICIzLjEuMiIsCisgICAgICAgICAgICAid2hpY2giOiAiMS4yLjExIiwKKyAgICAg
ICAgICAgICJ3b3Jkd3JhcCI6ICIxLjAuMCIKKyAgICAgICAgICB9LAorICAgICAgICAgICJkZXBl
bmRlbmNpZXMiOiB7CisgICAgICAgICAgICAiZ2xvYiI6IHsKKyAgICAgICAgICAgICAgInZlcnNp
b24iOiAiNS4wLjE1IiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAg
ICAgICAgICJpbmZsaWdodCI6ICIxLjAuNSIsCisgICAgICAgICAgICAgICAgImluaGVyaXRzIjog
IjIuMC4zIiwKKyAgICAgICAgICAgICAgICAibWluaW1hdGNoIjogIjMuMC4zIiwKKyAgICAgICAg
ICAgICAgICAib25jZSI6ICIxLjQuMCIsCisgICAgICAgICAgICAgICAgInBhdGgtaXMtYWJzb2x1
dGUiOiAiMS4wLjAiCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9
CisgICAgICAgIH0sCisgICAgICAgICJpc3RhbmJ1bC1hcGkiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMS4wLjAtYXBsaGEuMTAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAi
YXN5bmMiOiAiMS41LjIiLAorICAgICAgICAgICAgImNsb25lIjogIjEuMC4yIiwKKyAgICAgICAg
ICAgICJmaWxlc2V0IjogIjAuMi4xIiwKKyAgICAgICAgICAgICJpc3RhbmJ1bC1saWItY292ZXJh
Z2UiOiAiMS4wLjAiLAorICAgICAgICAgICAgImlzdGFuYnVsLWxpYi1ob29rIjogIjEuMC4wLWFs
cGhhLjQiLAorICAgICAgICAgICAgImlzdGFuYnVsLWxpYi1pbnN0cnVtZW50IjogIjEuMS4zIiwK
KyAgICAgICAgICAgICJpc3RhbmJ1bC1saWItcmVwb3J0IjogIjEuMC4wLWFscGhhLjMiLAorICAg
ICAgICAgICAgImlzdGFuYnVsLWxpYi1zb3VyY2UtbWFwcyI6ICIxLjAuMSIsCisgICAgICAgICAg
ICAiaXN0YW5idWwtcmVwb3J0cyI6ICIxLjAuMC1hbHBoYS44IiwKKyAgICAgICAgICAgICJqcy15
YW1sIjogIjMuNi4xIiwKKyAgICAgICAgICAgICJta2RpcnAiOiAiMC41LjEiLAorICAgICAgICAg
ICAgIm9uY2UiOiAiMS40LjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaXN0
YW5idWwtbGliLWNvdmVyYWdlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAg
fSwKKyAgICAgICAgImlzdGFuYnVsLWxpYi1ob29rIjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjEuMC4wLWFscGhhLjQiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYXBwZW5k
LXRyYW5zZm9ybSI6ICIwLjMuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJp
c3RhbmJ1bC1saWItaW5zdHJ1bWVudCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMyIs
CisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJiYWJlbC1nZW5lcmF0b3IiOiAiNi4x
NC4wIiwKKyAgICAgICAgICAgICJiYWJlbC10ZW1wbGF0ZSI6ICI2LjE1LjAiLAorICAgICAgICAg
ICAgImJhYmVsLXRyYXZlcnNlIjogIjYuMTUuMCIsCisgICAgICAgICAgICAiYmFiZWwtdHlwZXMi
OiAiNi4xNS4wIiwKKyAgICAgICAgICAgICJiYWJ5bG9uIjogIjYuMTEuMiIsCisgICAgICAgICAg
ICAiaXN0YW5idWwtbGliLWNvdmVyYWdlIjogIjEuMC4wIgorICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgImlzdGFuYnVsLWxpYi1yZXBvcnQiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMS4wLjAtYWxwaGEuMyIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJhc3lu
YyI6ICIxLjUuMiIsCisgICAgICAgICAgICAiaXN0YW5idWwtbGliLWNvdmVyYWdlIjogIjEuMC4w
IiwKKyAgICAgICAgICAgICJta2RpcnAiOiAiMC41LjEiLAorICAgICAgICAgICAgInBhdGgtcGFy
c2UiOiAiMS4wLjUiLAorICAgICAgICAgICAgInJpbXJhZiI6ICIyLjUuNCIsCisgICAgICAgICAg
ICAic3VwcG9ydHMtY29sb3IiOiAiMy4xLjIiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAiaXN0YW5idWwtbGliLXNvdXJjZS1tYXBzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjEuMC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImlzdGFuYnVsLWxpYi1j
b3ZlcmFnZSI6ICIxLjAuMCIsCisgICAgICAgICAgICAibWtkaXJwIjogIjAuNS4xIiwKKyAgICAg
ICAgICAgICJyaW1yYWYiOiAiMi41LjQiLAorICAgICAgICAgICAgInNvdXJjZS1tYXAiOiAiMC41
LjYiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiaXN0YW5idWwtcmVwb3J0cyI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMC1hbHBoYS44IiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAgICAgImhhbmRsZWJhcnMiOiAiNC4wLjUiCisgICAgICAgICAgfQorICAg
ICAgICB9LAorICAgICAgICAiamFzbWluZS1jaGVjayI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIwLjEuNSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJ0ZXN0Y2hlY2siOiAi
MC4xLjQiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiamVzdCI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIxNS4xLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAg
ICAiamVzdC1jbGkiOiAiMTUuMS4xIgorICAgICAgICAgIH0sCisgICAgICAgICAgImRlcGVuZGVu
Y2llcyI6IHsKKyAgICAgICAgICAgICJjYWxsc2l0ZXMiOiB7CisgICAgICAgICAgICAgICJ2ZXJz
aW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJjbGl1aSI6IHsK
KyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMy4yLjAiLAorICAgICAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICAgICAgICAgInN0cmluZy13aWR0aCI6ICIxLjAuMiIsCisgICAg
ICAgICAgICAgICAgInN0cmlwLWFuc2kiOiAiMy4wLjEiLAorICAgICAgICAgICAgICAgICJ3cmFw
LWFuc2kiOiAiMi4wLjAiCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAiamVzdC1jbGkiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjE1LjEuMSIsCisg
ICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAiYW5zaS1lc2Nh
cGVzIjogIjEuNC4wIiwKKyAgICAgICAgICAgICAgICAiY2FsbHNpdGVzIjogIjIuMC4wIiwKKyAg
ICAgICAgICAgICAgICAiY2hhbGsiOiAiMS4xLjMiLAorICAgICAgICAgICAgICAgICJncmFjZWZ1
bC1mcyI6ICI0LjEuOCIsCisgICAgICAgICAgICAgICAgImlzdGFuYnVsLWFwaSI6ICIxLjAuMC1h
cGxoYS4xMCIsCisgICAgICAgICAgICAgICAgImlzdGFuYnVsLWxpYi1jb3ZlcmFnZSI6ICIxLjAu
MCIsCisgICAgICAgICAgICAgICAgImlzdGFuYnVsLWxpYi1pbnN0cnVtZW50IjogIjEuMS4zIiwK
KyAgICAgICAgICAgICAgICAiamVzdC1jaGFuZ2VkLWZpbGVzIjogIjE1LjAuMCIsCisgICAgICAg
ICAgICAgICAgImplc3QtY29uZmlnIjogIjE1LjEuMSIsCisgICAgICAgICAgICAgICAgImplc3Qt
ZW52aXJvbm1lbnQtanNkb20iOiAiMTUuMS4xIiwKKyAgICAgICAgICAgICAgICAiamVzdC1maWxl
LWV4aXN0cyI6ICIxNS4wLjAiLAorICAgICAgICAgICAgICAgICJqZXN0LWhhc3RlLW1hcCI6ICIx
NS4wLjEiLAorICAgICAgICAgICAgICAgICJqZXN0LWphc21pbmUyIjogIjE1LjEuMSIsCisgICAg
ICAgICAgICAgICAgImplc3QtbW9jayI6ICIxNS4wLjAiLAorICAgICAgICAgICAgICAgICJqZXN0
LXJlc29sdmUiOiAiMTUuMC4xIiwKKyAgICAgICAgICAgICAgICAiamVzdC1yZXNvbHZlLWRlcGVu
ZGVuY2llcyI6ICIxNS4wLjEiLAorICAgICAgICAgICAgICAgICJqZXN0LXJ1bnRpbWUiOiAiMTUu
MS4xIiwKKyAgICAgICAgICAgICAgICAiamVzdC1zbmFwc2hvdCI6ICIxNS4xLjEiLAorICAgICAg
ICAgICAgICAgICJqZXN0LXV0aWwiOiAiMTUuMS4xIiwKKyAgICAgICAgICAgICAgICAianNvbi1z
dGFibGUtc3RyaW5naWZ5IjogIjEuMC4xIiwKKyAgICAgICAgICAgICAgICAibm9kZS1ub3RpZmll
ciI6ICI0LjYuMSIsCisgICAgICAgICAgICAgICAgInNhbmUiOiAiMS40LjEiLAorICAgICAgICAg
ICAgICAgICJ3aGljaCI6ICIxLjIuMTEiLAorICAgICAgICAgICAgICAgICJ3b3JrZXItZmFybSI6
ICIxLjMuMSIsCisgICAgICAgICAgICAgICAgInlhcmdzIjogIjUuMC4wIgorICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgIndpbmRvdy1zaXplIjogeworICAgICAg
ICAgICAgICAidmVyc2lvbiI6ICIwLjIuMCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAgICAgICAg
ICAieWFyZ3MiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjUuMC4wIiwKKyAgICAgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICJjbGl1aSI6ICIzLjIuMCIs
CisgICAgICAgICAgICAgICAgImRlY2FtZWxpemUiOiAiMS4yLjAiLAorICAgICAgICAgICAgICAg
ICJnZXQtY2FsbGVyLWZpbGUiOiAiMS4wLjIiLAorICAgICAgICAgICAgICAgICJsb2Rhc2guYXNz
aWduIjogIjQuMi4wIiwKKyAgICAgICAgICAgICAgICAib3MtbG9jYWxlIjogIjEuNC4wIiwKKyAg
ICAgICAgICAgICAgICAicmVhZC1wa2ctdXAiOiAiMS4wLjEiLAorICAgICAgICAgICAgICAgICJy
ZXF1aXJlLWRpcmVjdG9yeSI6ICIyLjEuMSIsCisgICAgICAgICAgICAgICAgInJlcXVpcmUtbWFp
bi1maWxlbmFtZSI6ICIxLjAuMSIsCisgICAgICAgICAgICAgICAgInNldC1ibG9ja2luZyI6ICIy
LjAuMCIsCisgICAgICAgICAgICAgICAgInN0cmluZy13aWR0aCI6ICIxLjAuMiIsCisgICAgICAg
ICAgICAgICAgIndoaWNoLW1vZHVsZSI6ICIxLjAuMCIsCisgICAgICAgICAgICAgICAgIndpbmRv
dy1zaXplIjogIjAuMi4wIiwKKyAgICAgICAgICAgICAgICAieTE4biI6ICIzLjIuMSIsCisgICAg
ICAgICAgICAgICAgInlhcmdzLXBhcnNlciI6ICIzLjIuMCIKKyAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImplc3QtY2hhbmdl
ZC1maWxlcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxNS4wLjAiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAg
ICAiamVzdC1jb25maWciOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMTUuMS4xIiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAgICAgImNoYWxrIjogIjEuMS4zIiwKKyAgICAgICAgICAg
ICJpc3RhbmJ1bCI6ICIwLjQuNSIsCisgICAgICAgICAgICAiamVzdC1lbnZpcm9ubWVudC1qc2Rv
bSI6ICIxNS4xLjEiLAorICAgICAgICAgICAgImplc3QtZW52aXJvbm1lbnQtbm9kZSI6ICIxNS4x
LjEiLAorICAgICAgICAgICAgImplc3QtamFzbWluZTIiOiAiMTUuMS4xIiwKKyAgICAgICAgICAg
ICJqZXN0LW1vY2siOiAiMTUuMC4wIiwKKyAgICAgICAgICAgICJqZXN0LXJlc29sdmUiOiAiMTUu
MC4xIiwKKyAgICAgICAgICAgICJqZXN0LXV0aWwiOiAiMTUuMS4xIiwKKyAgICAgICAgICAgICJq
c29uLXN0YWJsZS1zdHJpbmdpZnkiOiAiMS4wLjEiCisgICAgICAgICAgfQorICAgICAgICB9LAor
ICAgICAgICAiamVzdC1kaWZmIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjE1LjEuMCIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJjaGFsayI6ICIxLjEuMyIsCisgICAgICAg
ICAgICAiZGlmZiI6ICIzLjAuMCIsCisgICAgICAgICAgICAiamVzdC1tYXRjaGVyLXV0aWxzIjog
IjE1LjEuMCIsCisgICAgICAgICAgICAicHJldHR5LWZvcm1hdCI6ICIzLjguMCIKKyAgICAgICAg
ICB9CisgICAgICAgIH0sCisgICAgICAgICJqZXN0LWVudmlyb25tZW50LWpzZG9tIjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjE1LjEuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
ICAgICJqZXN0LXV0aWwiOiAiMTUuMS4xIiwKKyAgICAgICAgICAgICJqc2RvbSI6ICI5LjUuMCIK
KyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJqZXN0LWVudmlyb25tZW50LW5vZGUi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMTUuMS4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAgICAgImplc3QtdXRpbCI6ICIxNS4xLjEiCisgICAgICAgICAgfQorICAgICAgICB9
LAorICAgICAgICAiamVzdC1maWxlLWV4aXN0cyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIx
NS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZQorICAgICAgICB9LAorICAgICAgICAiamVzdC1oYXN0ZS1tYXAiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMTUuMC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImZiLXdh
dGNobWFuIjogIjEuOS4wIiwKKyAgICAgICAgICAgICJncmFjZWZ1bC1mcyI6ICI0LjEuOCIsCisg
ICAgICAgICAgICAibXVsdGltYXRjaCI6ICIyLjEuMCIsCisgICAgICAgICAgICAid29ya2VyLWZh
cm0iOiAiMS4zLjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiamVzdC1qYXNt
aW5lMiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxNS4xLjEiLAorICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICAgICAiZ3JhY2VmdWwtZnMiOiAiNC4xLjgiLAorICAgICAgICAgICAgImph
c21pbmUtY2hlY2siOiAiMC4xLjUiLAorICAgICAgICAgICAgImplc3QtbWF0Y2hlcnMiOiAiMTUu
MS4xIiwKKyAgICAgICAgICAgICJqZXN0LXNuYXBzaG90IjogIjE1LjEuMSIsCisgICAgICAgICAg
ICAiamVzdC11dGlsIjogIjE1LjEuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJqZXN0LW1hdGNoZXItdXRpbHMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMTUuMS4wIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImNoYWxrIjogIjEuMS4zIgorICAgICAg
ICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImplc3QtbWF0Y2hlcnMiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMTUuMS4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImpl
c3QtZGlmZiI6ICIxNS4xLjAiLAorICAgICAgICAgICAgImplc3QtbWF0Y2hlci11dGlscyI6ICIx
NS4xLjAiLAorICAgICAgICAgICAgImplc3QtdXRpbCI6ICIxNS4xLjEiCisgICAgICAgICAgfQor
ICAgICAgICB9LAorICAgICAgICAiamVzdC1tb2NrIjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjE1LjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlCisgICAgICAgIH0sCisgICAgICAgICJqZXN0LXJlc29sdmUiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMTUuMC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJyb3dz
ZXItcmVzb2x2ZSI6ICIxLjExLjIiLAorICAgICAgICAgICAgImplc3QtZmlsZS1leGlzdHMiOiAi
MTUuMC4wIiwKKyAgICAgICAgICAgICJqZXN0LWhhc3RlLW1hcCI6ICIxNS4wLjEiLAorICAgICAg
ICAgICAgInJlc29sdmUiOiAiMS4xLjciCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg
ICAiamVzdC1yZXNvbHZlLWRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIx
NS4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiamVzdC1maWxlLWV4aXN0
cyI6ICIxNS4wLjAiLAorICAgICAgICAgICAgImplc3QtcmVzb2x2ZSI6ICIxNS4wLjEiCisgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiamVzdC1ydW50aW1lIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjE1LjEuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJi
YWJlbC1jb3JlIjogIjYuMTQuMCIsCisgICAgICAgICAgICAiYmFiZWwtamVzdCI6ICIxNS4wLjAi
LAorICAgICAgICAgICAgImJhYmVsLXBsdWdpbi1pc3RhbmJ1bCI6ICIyLjAuMSIsCisgICAgICAg
ICAgICAiY2hhbGsiOiAiMS4xLjMiLAorICAgICAgICAgICAgImdyYWNlZnVsLWZzIjogIjQuMS44
IiwKKyAgICAgICAgICAgICJqZXN0LWNvbmZpZyI6ICIxNS4xLjEiLAorICAgICAgICAgICAgImpl
c3QtZmlsZS1leGlzdHMiOiAiMTUuMC4wIiwKKyAgICAgICAgICAgICJqZXN0LWhhc3RlLW1hcCI6
ICIxNS4wLjEiLAorICAgICAgICAgICAgImplc3QtbW9jayI6ICIxNS4wLjAiLAorICAgICAgICAg
ICAgImplc3QtcmVzb2x2ZSI6ICIxNS4wLjEiLAorICAgICAgICAgICAgImplc3Qtc25hcHNob3Qi
OiAiMTUuMS4xIiwKKyAgICAgICAgICAgICJqZXN0LXV0aWwiOiAiMTUuMS4xIiwKKyAgICAgICAg
ICAgICJqc29uLXN0YWJsZS1zdHJpbmdpZnkiOiAiMS4wLjEiLAorICAgICAgICAgICAgIm11bHRp
bWF0Y2giOiAiMi4xLjAiLAorICAgICAgICAgICAgInlhcmdzIjogIjUuMC4wIgorICAgICAgICAg
IH0sCisgICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgICAgICJjbGl1aSI6IHsK
KyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMy4yLjAiLAorICAgICAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICAgICAgICAgInN0cmluZy13aWR0aCI6ICIxLjAuMiIsCisgICAg
ICAgICAgICAgICAgInN0cmlwLWFuc2kiOiAiMy4wLjEiLAorICAgICAgICAgICAgICAgICJ3cmFw
LWFuc2kiOiAiMi4wLjAiCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisgICAgICAg
ICAgICAid2luZG93LXNpemUiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4wIiwK
KyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1
ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJ5YXJncyI6IHsKKyAgICAgICAgICAgICAg
InZlcnNpb24iOiAiNS4wLjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICAgICAgICAgImNsaXVpIjogIjMuMi4wIiwKKyAgICAgICAgICAgICAgICAiZGVjYW1lbGl6
ZSI6ICIxLjIuMCIsCisgICAgICAgICAgICAgICAgImdldC1jYWxsZXItZmlsZSI6ICIxLjAuMiIs
CisgICAgICAgICAgICAgICAgImxvZGFzaC5hc3NpZ24iOiAiNC4yLjAiLAorICAgICAgICAgICAg
ICAgICJvcy1sb2NhbGUiOiAiMS40LjAiLAorICAgICAgICAgICAgICAgICJyZWFkLXBrZy11cCI6
ICIxLjAuMSIsCisgICAgICAgICAgICAgICAgInJlcXVpcmUtZGlyZWN0b3J5IjogIjIuMS4xIiwK
KyAgICAgICAgICAgICAgICAicmVxdWlyZS1tYWluLWZpbGVuYW1lIjogIjEuMC4xIiwKKyAgICAg
ICAgICAgICAgICAic2V0LWJsb2NraW5nIjogIjIuMC4wIiwKKyAgICAgICAgICAgICAgICAic3Ry
aW5nLXdpZHRoIjogIjEuMC4yIiwKKyAgICAgICAgICAgICAgICAid2hpY2gtbW9kdWxlIjogIjEu
MC4wIiwKKyAgICAgICAgICAgICAgICAid2luZG93LXNpemUiOiAiMC4yLjAiLAorICAgICAgICAg
ICAgICAgICJ5MThuIjogIjMuMi4xIiwKKyAgICAgICAgICAgICAgICAieWFyZ3MtcGFyc2VyIjog
IjMuMi4wIgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAg
ICAgICB9LAorICAgICAgICAiamVzdC1zbmFwc2hvdCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIxNS4xLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiamVzdC1kaWZmIjog
IjE1LjEuMCIsCisgICAgICAgICAgICAiamVzdC1maWxlLWV4aXN0cyI6ICIxNS4wLjAiLAorICAg
ICAgICAgICAgImplc3QtdXRpbCI6ICIxNS4xLjEiLAorICAgICAgICAgICAgInByZXR0eS1mb3Jt
YXQiOiAiMy44LjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiamVzdC11dGls
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjE1LjEuMSIsCisgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgICAgICJjaGFsayI6ICIxLjEuMyIsCisgICAgICAgICAgICAiZGlmZiI6ICIzLjAu
MCIsCisgICAgICAgICAgICAiZ3JhY2VmdWwtZnMiOiAiNC4xLjgiLAorICAgICAgICAgICAgImpl
c3QtZmlsZS1leGlzdHMiOiAiMTUuMC4wIiwKKyAgICAgICAgICAgICJqZXN0LW1vY2siOiAiMTUu
MC4wIiwKKyAgICAgICAgICAgICJta2RpcnAiOiAiMC41LjEiCisgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgICAiam9kaWQyNTUxOSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAu
MiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAor
ICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAgICAgImpzYm4iOiAiMC4xLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAg
ICAianMtYmFzZTY0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMS45IiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAg
ICAgICAgImpzLXRva2VucyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0s
CisgICAgICAgICJqcy15YW1sIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuNi4xIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImFyZ3BhcnNlIjogIjEuMC43IiwKKyAgICAg
ICAgICAgICJlc3ByaW1hIjogIjIuNy4zIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg
ICAgImpzYm4iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjAiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9u
YWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJqc2RvbSI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICI5LjUuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJhYmFiIjog
IjEuMC4zIiwKKyAgICAgICAgICAgICJhY29ybiI6ICIyLjcuMCIsCisgICAgICAgICAgICAiYWNv
cm4tZ2xvYmFscyI6ICIxLjAuOSIsCisgICAgICAgICAgICAiYXJyYXktZXF1YWwiOiAiMS4wLjAi
LAorICAgICAgICAgICAgImNzc29tIjogIjAuMy4xIiwKKyAgICAgICAgICAgICJjc3NzdHlsZSI6
ICIwLjIuMzciLAorICAgICAgICAgICAgImVzY29kZWdlbiI6ICIxLjguMSIsCisgICAgICAgICAg
ICAiaWNvbnYtbGl0ZSI6ICIwLjQuMTMiLAorICAgICAgICAgICAgIm53bWF0Y2hlciI6ICIxLjMu
OCIsCisgICAgICAgICAgICAicGFyc2U1IjogIjEuNS4xIiwKKyAgICAgICAgICAgICJyZXF1ZXN0
IjogIjIuNzUuMCIsCisgICAgICAgICAgICAic2F4IjogIjEuMi4xIiwKKyAgICAgICAgICAgICJz
eW1ib2wtdHJlZSI6ICIzLjEuNCIsCisgICAgICAgICAgICAidG91Z2gtY29va2llIjogIjIuMy4x
IiwKKyAgICAgICAgICAgICJ3ZWJpZGwtY29udmVyc2lvbnMiOiAiMy4wLjEiLAorICAgICAgICAg
ICAgIndoYXR3Zy11cmwiOiAiMy4wLjAiLAorICAgICAgICAgICAgInhtbC1uYW1lLXZhbGlkYXRv
ciI6ICIyLjAuMSIKKyAgICAgICAgICB9LAorICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7Cisg
ICAgICAgICAgICAiYWNvcm4iOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuNy4wIiwK
KyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1
ZQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImpzZXNj
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImpzb24t
bG9hZGVyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNS40IiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAg
Impzb24tc2NoZW1hIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4zIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAg
ICAgICAgImpzb24tc3RhYmxlLXN0cmluZ2lmeSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIx
LjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJqc29uaWZ5IjogIjAuMC4w
IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImpzb24tc3RyaW5naWZ5LXNhZmUi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNS4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAianNvbjMi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4zLjIiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAianNvbjUi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC40LjAiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAianNvbmZp
bGUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi40LjAiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7
CisgICAgICAgICAgICAiZ3JhY2VmdWwtZnMiOiAiNC4xLjgiCisgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgICAianNvbmlmeSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjAuMCIs
CisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAg
ICAgIH0sCisgICAgICAgICJqc29ucG9pbnRlciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIy
LjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
CisgICAgICAgIH0sCisgICAgICAgICJqc3ByaW0iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
MS4zLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiZXh0c3ByaW50ZiI6ICIx
LjAuMiIsCisgICAgICAgICAgICAianNvbi1zY2hlbWEiOiAiMC4yLjMiLAorICAgICAgICAgICAg
InZlcnJvciI6ICIxLjMuNiIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJqc3gt
YXN0LXV0aWxzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMy4xIiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAgICAgIm9iamVjdC1hc3NpZ24iOiAiNC4xLjAiCisgICAgICAgICAg
fQorICAgICAgICB9LAorICAgICAgICAia2luZC1vZiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIzLjAuNCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJpcy1idWZmZXIiOiAi
MS4xLjQiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAia2xhdyI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIxLjMuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJsYXp5LWNhY2hlIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC40IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImxjaWQiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICAgICAiaW52ZXJ0LWt2IjogIjEuMC4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg
ICAgImxldm4iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4zLjAiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICAgICAicHJlbHVkZS1scyI6ICIxLjEuMiIsCisgICAgICAgICAgICAi
dHlwZS1jaGVjayI6ICIwLjMuMiIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJs
b2FkLWpzb24tZmlsZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCisgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJy
ZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJncmFjZWZ1bC1mcyI6ICI0LjEuOCIsCisgICAgICAg
ICAgICAicGFyc2UtanNvbiI6ICIyLjIuMCIsCisgICAgICAgICAgICAicGlmeSI6ICIyLjMuMCIs
CisgICAgICAgICAgICAicGlua2llLXByb21pc2UiOiAiMi4wLjEiLAorICAgICAgICAgICAgInN0
cmlwLWJvbSI6ICIyLjAuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJsb2Fk
ZXItdXRpbHMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4yLjE2IiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAgICAgImJpZy5qcyI6ICIzLjEuMyIsCisgICAgICAgICAgICAiZW1v
amlzLWxpc3QiOiAiMi4wLjEiLAorICAgICAgICAgICAgImpzb241IjogIjAuNS4wIiwKKyAgICAg
ICAgICAgICJvYmplY3QtYXNzaWduIjogIjQuMS4wIgorICAgICAgICAgIH0sCisgICAgICAgICAg
ImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgICAgICJqc29uNSI6IHsKKyAgICAgICAgICAgICAg
InZlcnNpb24iOiAiMC41LjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgICAibG9kYXNoIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjQuMTYuMiIs
CisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAg
ICAgIH0sCisgICAgICAgICJsb2Rhc2guX2FycmF5Y29weSI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIzLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJsb2Rhc2guX2FycmF5ZWFjaCI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIzLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJsb2Rhc2guX2Jhc2Vhc3Np
Z24iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4yLjAiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7
CisgICAgICAgICAgICAibG9kYXNoLl9iYXNlY29weSI6ICIzLjAuMSIsCisgICAgICAgICAgICAi
bG9kYXNoLmtleXMiOiAiMy4xLjIiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAi
bG9kYXNoLl9iYXNlY2xvbmUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4zLjAiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAibG9kYXNoLl9hcnJheWNvcHkiOiAiMy4wLjAi
LAorICAgICAgICAgICAgImxvZGFzaC5fYXJyYXllYWNoIjogIjMuMC4wIiwKKyAgICAgICAgICAg
ICJsb2Rhc2guX2Jhc2Vhc3NpZ24iOiAiMy4yLjAiLAorICAgICAgICAgICAgImxvZGFzaC5fYmFz
ZWZvciI6ICIzLjAuMyIsCisgICAgICAgICAgICAibG9kYXNoLmlzYXJyYXkiOiAiMy4wLjQiLAor
ICAgICAgICAgICAgImxvZGFzaC5rZXlzIjogIjMuMS4yIgorICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgImxvZGFzaC5fYmFzZWNvcHkiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
My4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZQorICAgICAgICB9LAorICAgICAgICAibG9kYXNoLl9iYXNlZm9yIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjMuMC4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImxvZGFzaC5fYmluZGNhbGxiYWNrIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImxvZGFzaC5f
Y3JlYXRlY29tcG91bmRlciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjAuMCIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJsb2Rhc2guZGVidXJyIjogIjMuMi4wIiwKKyAg
ICAgICAgICAgICJsb2Rhc2gud29yZHMiOiAiMy4yLjAiCisgICAgICAgICAgfQorICAgICAgICB9
LAorICAgICAgICAibG9kYXNoLl9nZXRuYXRpdmUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
My45LjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZQorICAgICAgICB9LAorICAgICAgICAibG9kYXNoLl9yb290IjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjMuMC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImxvZGFzaC5hc3NpZ24iOiB7CisgICAgICAg
ICAgInZlcnNpb24iOiAiNC4yLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAibG9kYXNoLmNhbWVsY2FzZSI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgICAgICJsb2Rhc2guX2NyZWF0ZWNvbXBvdW5kZXIiOiAiMy4wLjAiCisgICAgICAgICAg
fQorICAgICAgICB9LAorICAgICAgICAibG9kYXNoLmNsb25lZGVlcCI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIzLjAuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJsb2Rh
c2guX2Jhc2VjbG9uZSI6ICIzLjMuMCIsCisgICAgICAgICAgICAibG9kYXNoLl9iaW5kY2FsbGJh
Y2siOiAiMy4wLjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibG9kYXNoLmNv
bmQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNC41LjIiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAibG9k
YXNoLmRlYnVyciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjIuMCIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICJsb2Rhc2guX3Jvb3QiOiAiMy4wLjEiCisgICAgICAgICAg
fQorICAgICAgICB9LAorICAgICAgICAibG9kYXNoLmVuZHN3aXRoIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjQuMi4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImxvZGFzaC5maW5kIjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjQuNi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImxvZGFzaC5maW5kaW5kZXgi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNC42LjAiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAibG9kYXNo
LmluZGV4b2YiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNC4wLjUiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAg
ICAibG9kYXNoLmlzYXJndW1lbnRzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMS4wIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAg
ICAgfSwKKyAgICAgICAgImxvZGFzaC5pc2FycmF5IjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjMuMC40IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRy
dWUKKyAgICAgICAgfSwKKyAgICAgICAgImxvZGFzaC5rZXlzIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjMuMS4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImxvZGFzaC5f
Z2V0bmF0aXZlIjogIjMuOS4xIiwKKyAgICAgICAgICAgICJsb2Rhc2guaXNhcmd1bWVudHMiOiAi
My4xLjAiLAorICAgICAgICAgICAgImxvZGFzaC5pc2FycmF5IjogIjMuMC40IgorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgImxvZGFzaC5waWNrYnkiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiNC42LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAibG9kYXNoLndvcmRzIjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjMuMi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAg
ImxvZGFzaC5fcm9vdCI6ICIzLjAuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJsb25nZXN0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAg
ICAgImxvb3NlLWVudmlmeSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjIuMCIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJqcy10b2tlbnMiOiAiMS4wLjMiCisgICAgICAg
ICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAgICAgImpzLXRva2Vu
cyI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjMiLAorICAgICAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9
CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibG93ZXItY2FzZSI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIxLjEuMyIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJsb3dlci1jYXNlLWZpcnN0
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAgICAgImxvd2VyLWNhc2UiOiAiMS4xLjMiCisgICAgICAgICAgfQorICAgICAgICB9
LAorICAgICAgICAibHJ1LWNhY2hlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjQuMC4xIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgInBzZXVkb21hcCI6ICIxLjAuMiIsCisg
ICAgICAgICAgICAieWFsbGlzdCI6ICIyLjAuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisg
ICAgICAgICJtYWNhZGRyZXNzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi44IiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAg
fSwKKyAgICAgICAgIm1ha2VlcnJvciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMTEi
LAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAidG1wbCI6ICIxLjAuNCIKKyAgICAg
ICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJtYXJrZWQiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMC4zLjYiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAibWFya2VkLXRlcm1pbmFsIjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuNi4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAg
ImNhcmRpbmFsIjogIjEuMC4wIiwKKyAgICAgICAgICAgICJjaGFsayI6ICIxLjEuMyIsCisgICAg
ICAgICAgICAiY2xpLXRhYmxlIjogIjAuMy4xIiwKKyAgICAgICAgICAgICJsb2Rhc2guYXNzaWdu
IjogIjQuMi4wIiwKKyAgICAgICAgICAgICJub2RlLWVtb2ppIjogIjEuNC4xIgorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgIm1hdGgtZXhwcmVzc2lvbi1ldmFsdWF0b3IiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMS4yLjE0IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAgICAgImxvZGFzaC5pbmRleG9mIjogIjQuMC41IgorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgIm1lZGlhLXR5cGVyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMy4wIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAg
ICAgfSwKKyAgICAgICAgIm1lbW9yeS1mcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjMu
MCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAor
ICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJlcnJubyI6ICIwLjEuNCIsCisg
ICAgICAgICAgICAicmVhZGFibGUtc3RyZWFtIjogIjIuMC42IgorICAgICAgICAgIH0KKyAgICAg
ICAgfSwKKyAgICAgICAgIm1lcmdlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMi4wIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAg
ICAgfSwKKyAgICAgICAgIm1lcmdlLWRlc2NyaXB0b3JzIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuMC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgIm1ldGhvZHMiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMS4xLjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAibWljcm9tYXRjaCI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIyLjMuMTEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYXJy
LWRpZmYiOiAiMi4wLjAiLAorICAgICAgICAgICAgImFycmF5LXVuaXF1ZSI6ICIwLjIuMSIsCisg
ICAgICAgICAgICAiYnJhY2VzIjogIjEuOC41IiwKKyAgICAgICAgICAgICJleHBhbmQtYnJhY2tl
dHMiOiAiMC4xLjUiLAorICAgICAgICAgICAgImV4dGdsb2IiOiAiMC4zLjIiLAorICAgICAgICAg
ICAgImZpbGVuYW1lLXJlZ2V4IjogIjIuMC4wIiwKKyAgICAgICAgICAgICJpcy1leHRnbG9iIjog
IjEuMC4wIiwKKyAgICAgICAgICAgICJpcy1nbG9iIjogIjIuMC4xIiwKKyAgICAgICAgICAgICJr
aW5kLW9mIjogIjMuMC40IiwKKyAgICAgICAgICAgICJub3JtYWxpemUtcGF0aCI6ICIyLjAuMSIs
CisgICAgICAgICAgICAib2JqZWN0Lm9taXQiOiAiMi4wLjAiLAorICAgICAgICAgICAgInBhcnNl
LWdsb2IiOiAiMy4wLjQiLAorICAgICAgICAgICAgInJlZ2V4LWNhY2hlIjogIjAuNC4zIgorICAg
ICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm1pbWUiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMS4yLjExIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgIm1pbWUtZGIiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMS4yNC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgIm1pbWUtdHlwZXMiOiB7CisgICAgICAg
ICAgInZlcnNpb24iOiAiMi4xLjEyIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAg
Im1pbWUtZGIiOiAiMS4yNC4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm1p
bmltYXRjaCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjAuMyIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgICAgICJicmFjZS1leHBhbnNpb24iOiAiMS4xLjYiCisgICAgICAgICAg
fQorICAgICAgICB9LAorICAgICAgICAibWluaW1pc3QiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMS4yLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZQorICAgICAgICB9LAorICAgICAgICAibWtkaXJwIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjAuNS4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgIm1pbmltaXN0Ijog
IjAuMC44IgorICAgICAgICAgIH0sCisgICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAg
ICAgICAgICJtaW5pbWlzdCI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4wLjgiLAor
ICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVl
CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibXMiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMC43LjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAibXVsdGltYXRj
aCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjEuMCIsCisgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgICAgICJhcnJheS1kaWZmZXIiOiAiMS4wLjAiLAorICAgICAgICAgICAgImFycmF5
LXVuaW9uIjogIjEuMC4yIiwKKyAgICAgICAgICAgICJhcnJpZnkiOiAiMS4wLjEiLAorICAgICAg
ICAgICAgIm1pbmltYXRjaCI6ICIzLjAuMyIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAg
ICAgICJtdXRlLXN0cmVhbSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjAuNSIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0s
CisgICAgICAgICJuYW4iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi40LjAiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAi
b3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJuYXR1cmFsLWNvbXBhcmUiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMS40LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAibmNuYW1lIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAgICAgInhtbC1jaGFyLWNsYXNzZXMiOiAiMS4wLjAiCisgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgICAibmVnb3RpYXRvciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjYu
MSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisg
ICAgICAgIH0sCisgICAgICAgICJuby1jYXNlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIu
My4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImxvd2VyLWNhc2UiOiAiMS4x
LjMiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibm9kZS1lbW9qaSI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjQuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
ICAgICJzdHJpbmcucHJvdG90eXBlLmNvZGVwb2ludGF0IjogIjAuMi4wIgorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgIm5vZGUtaW50NjQiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMC40LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZQorICAgICAgICB9LAorICAgICAgICAibm9kZS1saWJzLWJyb3dzZXIiOiB7CisgICAgICAg
ICAgInZlcnNpb24iOiAiMC42LjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAi
YXNzZXJ0IjogIjEuNC4xIiwKKyAgICAgICAgICAgICJicm93c2VyaWZ5LXpsaWIiOiAiMC4xLjQi
LAorICAgICAgICAgICAgImJ1ZmZlciI6ICI0LjkuMSIsCisgICAgICAgICAgICAiY29uc29sZS1i
cm93c2VyaWZ5IjogIjEuMS4wIiwKKyAgICAgICAgICAgICJjb25zdGFudHMtYnJvd3NlcmlmeSI6
ICIwLjAuMSIsCisgICAgICAgICAgICAiY3J5cHRvLWJyb3dzZXJpZnkiOiAiMy4yLjgiLAorICAg
ICAgICAgICAgImRvbWFpbi1icm93c2VyIjogIjEuMS43IiwKKyAgICAgICAgICAgICJldmVudHMi
OiAiMS4xLjEiLAorICAgICAgICAgICAgImh0dHAtYnJvd3NlcmlmeSI6ICIxLjcuMCIsCisgICAg
ICAgICAgICAiaHR0cHMtYnJvd3NlcmlmeSI6ICIwLjAuMCIsCisgICAgICAgICAgICAib3MtYnJv
d3NlcmlmeSI6ICIwLjEuMiIsCisgICAgICAgICAgICAicGF0aC1icm93c2VyaWZ5IjogIjAuMC4w
IiwKKyAgICAgICAgICAgICJwcm9jZXNzIjogIjAuMTEuOSIsCisgICAgICAgICAgICAicHVueWNv
ZGUiOiAiMS40LjEiLAorICAgICAgICAgICAgInF1ZXJ5c3RyaW5nLWVzMyI6ICIwLjIuMSIsCisg
ICAgICAgICAgICAicmVhZGFibGUtc3RyZWFtIjogIjEuMS4xNCIsCisgICAgICAgICAgICAic3Ry
ZWFtLWJyb3dzZXJpZnkiOiAiMS4wLjAiLAorICAgICAgICAgICAgInN0cmluZ19kZWNvZGVyIjog
IjAuMTAuMzEiLAorICAgICAgICAgICAgInRpbWVycy1icm93c2VyaWZ5IjogIjEuNC4yIiwKKyAg
ICAgICAgICAgICJ0dHktYnJvd3NlcmlmeSI6ICIwLjAuMCIsCisgICAgICAgICAgICAidXJsIjog
IjAuMTAuMyIsCisgICAgICAgICAgICAidXRpbCI6ICIwLjEwLjMiLAorICAgICAgICAgICAgInZt
LWJyb3dzZXJpZnkiOiAiMC4wLjQiCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5j
aWVzIjogeworICAgICAgICAgICAgImlzYXJyYXkiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9u
IjogIjAuMC4xIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAg
ICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJyZWFkYWJsZS1zdHJl
YW0iOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS4xNCIsCisgICAgICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAiY29yZS11dGlsLWlzIjogIjEuMC4y
IiwKKyAgICAgICAgICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjMiLAorICAgICAgICAgICAgICAg
ICJpc2FycmF5IjogIjAuMC4xIiwKKyAgICAgICAgICAgICAgICAic3RyaW5nX2RlY29kZXIiOiAi
MC4xMC4zMSIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAg
ICAgICAgfSwKKyAgICAgICAgIm5vZGUtbm90aWZpZXIiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiNC42LjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiY2xpLXVzYWdlIjog
IjAuMS40IiwKKyAgICAgICAgICAgICJncm93bHkiOiAiMS4zLjAiLAorICAgICAgICAgICAgImxv
ZGFzaC5jbG9uZWRlZXAiOiAiMy4wLjIiLAorICAgICAgICAgICAgIm1pbmltaXN0IjogIjEuMi4w
IiwKKyAgICAgICAgICAgICJzZW12ZXIiOiAiNS4zLjAiLAorICAgICAgICAgICAgInNoZWxsd29y
ZHMiOiAiMC4xLjAiLAorICAgICAgICAgICAgIndoaWNoIjogIjEuMi4xMSIKKyAgICAgICAgICB9
CisgICAgICAgIH0sCisgICAgICAgICJub2RlLXV1aWQiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMS40LjciLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZQorICAgICAgICB9LAorICAgICAgICAibm9wdCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIzLjAuNiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJhYmJyZXYiOiAiMS4w
LjkiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibm9ybWFsaXplLXBhY2thZ2Ut
ZGF0YSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjMuNSIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgICAgICJob3N0ZWQtZ2l0LWluZm8iOiAiMi4xLjUiLAorICAgICAgICAgICAg
ImlzLWJ1aWx0aW4tbW9kdWxlIjogIjEuMC4wIiwKKyAgICAgICAgICAgICJzZW12ZXIiOiAiNS4z
LjAiLAorICAgICAgICAgICAgInZhbGlkYXRlLW5wbS1wYWNrYWdlLWxpY2Vuc2UiOiAiMy4wLjEi
CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibm9ybWFsaXplLXBhdGgiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMi4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAibm9ybWFsaXplLXJh
bmdlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS4yIiwKKyAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgIm5v
cm1hbGl6ZS11cmwiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS42LjEiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICAgICAib2JqZWN0LWFzc2lnbiI6ICI0LjEuMCIsCisgICAgICAg
ICAgICAicHJlcGVuZC1odHRwIjogIjEuMC40IiwKKyAgICAgICAgICAgICJxdWVyeS1zdHJpbmci
OiAiNC4yLjMiLAorICAgICAgICAgICAgInNvcnQta2V5cyI6ICIxLjEuMiIKKyAgICAgICAgICB9
CisgICAgICAgIH0sCisgICAgICAgICJudGgtY2hlY2siOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMS4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYm9vbGJhc2UiOiAi
MS4wLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibnVtMmZyYWN0aW9uIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMi4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgIm51bWJlci1p
cy1uYW4iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAi
bndtYXRjaGVyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMy44IiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAg
ICAgIm9hdXRoLXNpZ24iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC44LjIiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAor
ICAgICAgICAib2JqZWN0LWFzc2lnbiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI0LjEuMCIs
CisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAg
ICAgIH0sCisgICAgICAgICJvYmplY3Qub21pdCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIy
LjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJmb3Itb3duIjogIjAuMS40
IiwKKyAgICAgICAgICAgICJpcy1leHRlbmRhYmxlIjogIjAuMS4xIgorICAgICAgICAgIH0KKyAg
ICAgICAgfSwKKyAgICAgICAgIm9uLWZpbmlzaGVkIjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjIuMy4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImVlLWZpcnN0IjogIjEu
MS4xIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm9uLWhlYWRlcnMiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAib25jZSI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjQuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
ICAgICJ3cmFwcHkiOiAiMS4wLjIiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAi
b25ldGltZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAg
ICJvcGVuIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC41IiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAg
Im9wbiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI0LjAuMiIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgICAgICJvYmplY3QtYXNzaWduIjogIjQuMS4wIiwKKyAgICAgICAgICAgICJw
aW5raWUtcHJvbWlzZSI6ICIyLjAuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJvcHRpbWlzdCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjYuMSIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICJtaW5pbWlzdCI6ICIwLjAuMTAiLAorICAgICAgICAgICAg
IndvcmR3cmFwIjogIjAuMC4zIgorICAgICAgICAgIH0sCisgICAgICAgICAgImRlcGVuZGVuY2ll
cyI6IHsKKyAgICAgICAgICAgICJtaW5pbWlzdCI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24i
OiAiMC4wLjEwIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAg
ICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJ3b3Jkd3JhcCI6IHsK
KyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4wLjMiLAorICAgICAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9CisgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICAib3B0aW9uYXRvciI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIwLjguMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJkZWVw
LWlzIjogIjAuMS4zIiwKKyAgICAgICAgICAgICJmYXN0LWxldmVuc2h0ZWluIjogIjIuMC40IiwK
KyAgICAgICAgICAgICJsZXZuIjogIjAuMy4wIiwKKyAgICAgICAgICAgICJwcmVsdWRlLWxzIjog
IjEuMS4yIiwKKyAgICAgICAgICAgICJ0eXBlLWNoZWNrIjogIjAuMy4yIiwKKyAgICAgICAgICAg
ICJ3b3Jkd3JhcCI6ICIxLjAuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJv
cmlnaW5hbCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgICAgICJ1cmwtcGFyc2UiOiAiMS4wLjUiCisgICAgICAgICAgfSwKKyAg
ICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAgICAgInVybC1wYXJzZSI6IHsKKyAg
ICAgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjUiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICAgICAgICAgInF1ZXJ5c3RyaW5naWZ5IjogIjAuMC40IiwKKyAgICAg
ICAgICAgICAgICAicmVxdWlyZXMtcG9ydCI6ICIxLjAuMCIKKyAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm9zLWJyb3dzZXJp
ZnkiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjIiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAib3Mt
aG9tZWRpciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAg
ICJvcy1sb2NhbGUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS40LjAiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICAgICAibGNpZCI6ICIxLjAuMCIKKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJvcy10bXBkaXIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4w
LjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQor
ICAgICAgICB9LAorICAgICAgICAicGFrbyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjIu
OSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisg
ICAgICAgIH0sCisgICAgICAgICJwYXJhbS1jYXNlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjIuMS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgIm5vLWNhc2UiOiAiMi4z
LjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAicGFyc2UtZ2xvYiI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIzLjAuNCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
ICAgICJnbG9iLWJhc2UiOiAiMC4zLjAiLAorICAgICAgICAgICAgImlzLWRvdGZpbGUiOiAiMS4w
LjIiLAorICAgICAgICAgICAgImlzLWV4dGdsb2IiOiAiMS4wLjAiLAorICAgICAgICAgICAgImlz
LWdsb2IiOiAiMi4wLjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAicGFyc2Ut
anNvbiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjIuMCIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgICAgICJlcnJvci1leCI6ICIxLjMuMCIKKyAgICAgICAgICB9CisgICAgICAg
IH0sCisgICAgICAgICJwYXJzZTUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS41LjEiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAg
ICB9LAorICAgICAgICAicGFyc2V1cmwiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4zLjEi
LAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAg
ICAgICB9LAorICAgICAgICAicGFzY2FsLWNhc2UiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
Mi4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiY2FtZWwtY2FzZSI6ICIz
LjAuMCIsCisgICAgICAgICAgICAidXBwZXItY2FzZS1maXJzdCI6ICIxLjEuMiIKKyAgICAgICAg
ICB9CisgICAgICAgIH0sCisgICAgICAgICJwYXRoLWJyb3dzZXJpZnkiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMC4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAicGF0aC1jYXNlIjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjIuMS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAg
Im5vLWNhc2UiOiAiMi4zLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAicGF0
aC1leGlzdHMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4xLjAiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICAgICAicGlua2llLXByb21pc2UiOiAiMi4wLjEiCisgICAgICAgICAg
fQorICAgICAgICB9LAorICAgICAgICAicGF0aC1pcy1hYnNvbHV0ZSI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJwYXRoLWlzLWluc2lkZSI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJwYXRoLXBhcnNlIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC41IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInBhdGgtdG8t
cmVnZXhwIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS43IiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAg
InBhdGgtdHlwZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICJncmFjZWZ1bC1mcyI6ICI0LjEuOCIsCisgICAgICAgICAg
ICAicGlmeSI6ICIyLjMuMCIsCisgICAgICAgICAgICAicGlua2llLXByb21pc2UiOiAiMi4wLjEi
CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAicGJrZGYyLWNvbXBhdCI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIyLjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJwaWZ5IjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjIuMy4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInBpbmtpZSI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIyLjAuNCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJwaW5raWUtcHJvbWlz
ZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgICAgICJwaW5raWUiOiAiMi4wLjQiCisgICAgICAgICAgfQorICAgICAgICB9LAor
ICAgICAgICAicGtnLWRpciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJmaW5kLXVwIjogIjEuMS4yIgorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgInBrZy11cCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIxLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJmaW5kLXVwIjogIjEu
MS4yIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInBsdXJhbGl6ZSI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjIuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJwb3N0Y3NzIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjUuMi4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAgICAgImpzLWJhc2U2NCI6ICIyLjEuOSIsCisgICAgICAgICAgICAic291cmNlLW1hcCI6ICIw
LjUuNiIsCisgICAgICAgICAgICAic3VwcG9ydHMtY29sb3IiOiAiMy4xLjIiCisgICAgICAgICAg
fQorICAgICAgICB9LAorICAgICAgICAicG9zdGNzcy1jYWxjIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjUuMy4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgInBvc3Rjc3Mi
OiAiNS4yLjIiLAorICAgICAgICAgICAgInBvc3Rjc3MtbWVzc2FnZS1oZWxwZXJzIjogIjIuMC4w
IiwKKyAgICAgICAgICAgICJyZWR1Y2UtY3NzLWNhbGMiOiAiMS4zLjAiCisgICAgICAgICAgfQor
ICAgICAgICB9LAorICAgICAgICAicG9zdGNzcy1jb2xvcm1pbiI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIyLjIuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJjb2xvcm1p
biI6ICIxLjEuMiIsCisgICAgICAgICAgICAicG9zdGNzcyI6ICI1LjIuMiIsCisgICAgICAgICAg
ICAicG9zdGNzcy12YWx1ZS1wYXJzZXIiOiAiMy4zLjAiCisgICAgICAgICAgfQorICAgICAgICB9
LAorICAgICAgICAicG9zdGNzcy1jb252ZXJ0LXZhbHVlcyI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIyLjQuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJwb3N0Y3NzIjog
IjUuMi4yIiwKKyAgICAgICAgICAgICJwb3N0Y3NzLXZhbHVlLXBhcnNlciI6ICIzLjMuMCIKKyAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJwb3N0Y3NzLWRpc2NhcmQtY29tbWVudHMi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjQiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICAgICAicG9zdGNzcyI6ICI1LjIuMiIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisg
ICAgICAgICJwb3N0Y3NzLWRpc2NhcmQtZHVwbGljYXRlcyI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIyLjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJwb3N0Y3NzIjog
IjUuMi4yIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInBvc3Rjc3MtZGlzY2Fy
ZC1lbXB0eSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjEuMCIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgICAgICJwb3N0Y3NzIjogIjUuMi4yIgorICAgICAgICAgIH0KKyAgICAg
ICAgfSwKKyAgICAgICAgInBvc3Rjc3MtZGlzY2FyZC1vdmVycmlkZGVuIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjAuMS4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgInBv
c3Rjc3MiOiAiNS4yLjIiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAicG9zdGNz
cy1kaXNjYXJkLXVudXNlZCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjIuMSIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJmbGF0dGVuIjogIjEuMC4yIiwKKyAgICAgICAg
ICAgICJwb3N0Y3NzIjogIjUuMi4yIiwKKyAgICAgICAgICAgICJ1bmlxcyI6ICIyLjAuMCIKKyAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJwb3N0Y3NzLWZpbHRlci1wbHVnaW5zIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAgICAgInBvc3Rjc3MiOiAiNS4yLjIiLAorICAgICAgICAgICAgInVuaXFpZCI6ICIzLjEu
MCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJwb3N0Y3NzLWxvYWRlciI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEzLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICAgICAibG9hZGVyLXV0aWxzIjogIjAuMi4xNiIsCisgICAgICAgICAgICAicG9zdGNzcyI6
ICI1LjIuMiIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJwb3N0Y3NzLW1lcmdl
LWlkZW50cyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjEuNyIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgICAgICJoYXMiOiAiMS4wLjEiLAorICAgICAgICAgICAgInBvc3Rjc3Mi
OiAiNS4yLjIiLAorICAgICAgICAgICAgInBvc3Rjc3MtdmFsdWUtcGFyc2VyIjogIjMuMy4wIgor
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInBvc3Rjc3MtbWVyZ2UtbG9uZ2hhbmQi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICAgICAicG9zdGNzcyI6ICI1LjIuMiIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisg
ICAgICAgICJwb3N0Y3NzLW1lcmdlLXJ1bGVzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIu
MC4xMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJwb3N0Y3NzIjogIjUuMi4y
IiwKKyAgICAgICAgICAgICJ2ZW5kb3JzIjogIjEuMC4xIgorICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgInBvc3Rjc3MtbWVzc2FnZS1oZWxwZXJzIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInBvc3Rjc3MtbWluaWZ5LWZvbnQtdmFsdWVz
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC41IiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAgICAgIm9iamVjdC1hc3NpZ24iOiAiNC4xLjAiLAorICAgICAgICAgICAgInBvc3Rj
c3MiOiAiNS4yLjIiLAorICAgICAgICAgICAgInBvc3Rjc3MtdmFsdWUtcGFyc2VyIjogIjMuMy4w
IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInBvc3Rjc3MtbWluaWZ5LWdyYWRp
ZW50cyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMyIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgICAgICJwb3N0Y3NzIjogIjUuMi4yIiwKKyAgICAgICAgICAgICJwb3N0Y3Nz
LXZhbHVlLXBhcnNlciI6ICIzLjMuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJwb3N0Y3NzLW1pbmlmeS1wYXJhbXMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjUi
LAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYWxwaGFudW0tc29ydCI6ICIxLjAu
MiIsCisgICAgICAgICAgICAicG9zdGNzcyI6ICI1LjIuMiIsCisgICAgICAgICAgICAicG9zdGNz
cy12YWx1ZS1wYXJzZXIiOiAiMy4zLjAiLAorICAgICAgICAgICAgInVuaXFzIjogIjIuMC4wIgor
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInBvc3Rjc3MtbWluaWZ5LXNlbGVjdG9y
cyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuNSIsCisgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgICAgICJhbHBoYW51bS1zb3J0IjogIjEuMC4yIiwKKyAgICAgICAgICAgICJwb3N0
Y3NzIjogIjUuMi4yIiwKKyAgICAgICAgICAgICJwb3N0Y3NzLXNlbGVjdG9yLXBhcnNlciI6ICIy
LjIuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJwb3N0Y3NzLW1vZHVsZXMt
ZXh0cmFjdC1pbXBvcnRzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAg
ICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAgICAgInBvc3Rjc3MiOiAiNS4yLjIiCisgICAgICAgICAg
fQorICAgICAgICB9LAorICAgICAgICAicG9zdGNzcy1tb2R1bGVzLWxvY2FsLWJ5LWRlZmF1bHQi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjEiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICAgICAiY3NzLXNlbGVjdG9yLXRva2VuaXplciI6ICIwLjYuMCIsCisgICAgICAgICAg
ICAicG9zdGNzcyI6ICI1LjIuMiIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJw
b3N0Y3NzLW1vZHVsZXMtc2NvcGUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiY3NzLXNlbGVjdG9yLXRva2VuaXplciI6
ICIwLjYuMCIsCisgICAgICAgICAgICAicG9zdGNzcyI6ICI1LjIuMiIKKyAgICAgICAgICB9Cisg
ICAgICAgIH0sCisgICAgICAgICJwb3N0Y3NzLW1vZHVsZXMtdmFsdWVzIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuMi4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImlj
c3MtcmVwbGFjZS1zeW1ib2xzIjogIjEuMC4yIiwKKyAgICAgICAgICAgICJwb3N0Y3NzIjogIjUu
Mi4yIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInBvc3Rjc3Mtbm9ybWFsaXpl
LWNoYXJzZXQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjAiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICAgICAicG9zdGNzcyI6ICI1LjIuMiIKKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJwb3N0Y3NzLW5vcm1hbGl6ZS11cmwiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMy4wLjciLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiaXMtYWJz
b2x1dGUtdXJsIjogIjIuMC4wIiwKKyAgICAgICAgICAgICJub3JtYWxpemUtdXJsIjogIjEuNi4x
IiwKKyAgICAgICAgICAgICJwb3N0Y3NzIjogIjUuMi4yIiwKKyAgICAgICAgICAgICJwb3N0Y3Nz
LXZhbHVlLXBhcnNlciI6ICIzLjMuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJwb3N0Y3NzLW9yZGVyZWQtdmFsdWVzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMi4y
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisg
ICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgInBvc3Rjc3MiOiAiNS4yLjIiLAor
ICAgICAgICAgICAgInBvc3Rjc3MtdmFsdWUtcGFyc2VyIjogIjMuMy4wIgorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgInBvc3Rjc3MtcmVkdWNlLWlkZW50cyI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIyLjMuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJw
b3N0Y3NzIjogIjUuMi4yIiwKKyAgICAgICAgICAgICJwb3N0Y3NzLXZhbHVlLXBhcnNlciI6ICIz
LjMuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJwb3N0Y3NzLXJlZHVjZS1p
bml0aWFsIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAgICAgInBvc3Rjc3MiOiAiNS4yLjIiCisgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgICAicG9zdGNzcy1yZWR1Y2UtdHJhbnNmb3JtcyI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIxLjAuMyIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJwb3N0
Y3NzIjogIjUuMi4yIiwKKyAgICAgICAgICAgICJwb3N0Y3NzLXZhbHVlLXBhcnNlciI6ICIzLjMu
MCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJwb3N0Y3NzLXNlbGVjdG9yLXBh
cnNlciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjIuMSIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgICAgICJmbGF0dGVuIjogIjEuMC4yIiwKKyAgICAgICAgICAgICJpbmRleGVz
LW9mIjogIjEuMC4xIiwKKyAgICAgICAgICAgICJ1bmlxIjogIjEuMC4xIgorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgInBvc3Rjc3Mtc3ZnbyI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIyLjEuNSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJpcy1zdmciOiAi
Mi4wLjEiLAorICAgICAgICAgICAgInBvc3Rjc3MiOiAiNS4yLjIiLAorICAgICAgICAgICAgInBv
c3Rjc3MtdmFsdWUtcGFyc2VyIjogIjMuMy4wIiwKKyAgICAgICAgICAgICJzdmdvIjogIjAuNy4x
IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInBvc3Rjc3MtdW5pcXVlLXNlbGVj
dG9ycyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMiIsCisgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgICAgICJhbHBoYW51bS1zb3J0IjogIjEuMC4yIiwKKyAgICAgICAgICAgICJw
b3N0Y3NzIjogIjUuMi4yIiwKKyAgICAgICAgICAgICJ1bmlxcyI6ICIyLjAuMCIKKyAgICAgICAg
ICB9CisgICAgICAgIH0sCisgICAgICAgICJwb3N0Y3NzLXZhbHVlLXBhcnNlciI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIzLjMuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJwb3N0Y3NzLXppbmRleCI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjEuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgICAgICJwb3N0Y3NzIjogIjUuMi4yIiwKKyAgICAgICAgICAgICJ1bmlxcyI6ICIyLjAu
MCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJwcmVsdWRlLWxzIjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjEuMS4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInByZXBlbmQtaHR0cCI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuNCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJwcmVzZXJ2
ZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjIuMCIsCisgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJwcmV0
dHktZXJyb3IiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjEiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICAgICAicmVuZGVya2lkIjogIjIuMC4wIiwKKyAgICAgICAgICAgICJ1
dGlsYSI6ICIwLjQuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJwcmV0dHkt
Zm9ybWF0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuOC4wIiwKKyAgICAgICAgICAiYnVu
ZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAg
InByaXZhdGUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjYiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAg
ICAicHJvY2VzcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjExLjkiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAg
ICAgICAicHJvY2Vzcy1uZXh0aWNrLWFyZ3MiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4w
LjciLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQor
ICAgICAgICB9LAorICAgICAgICAicHJvZ3Jlc3MiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
MS4xLjgiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZQorICAgICAgICB9LAorICAgICAgICAicHJvbWlzZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICI3LjEuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJhc2FwIjogIjIuMC41
IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInByb3h5LWFkZHIiOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMS4xLjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAg
ICAiZm9yd2FyZGVkIjogIjAuMS4wIiwKKyAgICAgICAgICAgICJpcGFkZHIuanMiOiAiMS4xLjEi
CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAicHJyIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjAuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInBzZXVkb21hcCI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJwdW55Y29kZSI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIxLjQuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJxIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuNC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInFzIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjYuMi4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInF1ZXJ5LXN0cmluZyI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICI0LjIuMyIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAg
ICJvYmplY3QtYXNzaWduIjogIjQuMS4wIiwKKyAgICAgICAgICAgICJzdHJpY3QtdXJpLWVuY29k
ZSI6ICIxLjEuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJxdWVyeXN0cmlu
ZyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjIuMCIsCisgICAgICAgICAgImJ1bmRsZWQi
OiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJxdWVy
eXN0cmluZy1lczMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4yLjEiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAg
ICAgICAicXVlcnlzdHJpbmdpZnkiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4wLjQiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAg
ICB9LAorICAgICAgICAicmFuZG9tYXRpYyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEu
NSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAor
ICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJpcy1udW1iZXIiOiAiMi4xLjAi
LAorICAgICAgICAgICAgImtpbmQtb2YiOiAiMy4wLjQiCisgICAgICAgICAgfQorICAgICAgICB9
LAorICAgICAgICAicmFuZ2UtcGFyc2VyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMi4w
IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAg
ICAgICAgfSwKKyAgICAgICAgInJlYWN0LWRldi11dGlscyI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIwLjIuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJhbnNpLWh0bWwi
OiAiMC4wLjUiLAorICAgICAgICAgICAgImNoYWxrIjogIjEuMS4zIiwKKyAgICAgICAgICAgICJl
c2NhcGUtc3RyaW5nLXJlZ2V4cCI6ICIxLjAuNSIsCisgICAgICAgICAgICAiaHRtbC1lbnRpdGll
cyI6ICIxLjIuMCIsCisgICAgICAgICAgICAib3BuIjogIjQuMC4yIiwKKyAgICAgICAgICAgICJz
b2NranMtY2xpZW50IjogIjEuMC4zIiwKKyAgICAgICAgICAgICJzdHJpcC1hbnNpIjogIjMuMC4x
IgorICAgICAgICAgIH0sCisgICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgICAg
ICJhbnNpLXJlZ2V4IjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAg
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAiYW5zaS1zdHlsZXMiOiB7CisgICAgICAgICAgICAg
ICJ2ZXJzaW9uIjogIjIuMi4xIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJjaGFs
ayI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjMiLAorICAgICAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAg
ICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgImFuc2ktc3R5bGVzIjogIjIuMi4xIiwK
KyAgICAgICAgICAgICAgICAiZXNjYXBlLXN0cmluZy1yZWdleHAiOiAiMS4wLjUiLAorICAgICAg
ICAgICAgICAgICJoYXMtYW5zaSI6ICIyLjAuMCIsCisgICAgICAgICAgICAgICAgInN0cmlwLWFu
c2kiOiAiMy4wLjEiLAorICAgICAgICAgICAgICAgICJzdXBwb3J0cy1jb2xvciI6ICIyLjAuMCIK
KyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJkZWJ1ZyI6IHsK
KyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMi4yLjAiLAorICAgICAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICAgICAgICAgIm1zIjogIjAuNy4xIgorICAgICAgICAgICAgICB9
CisgICAgICAgICAgICB9LAorICAgICAgICAgICAgImVzY2FwZS1zdHJpbmctcmVnZXhwIjogewor
ICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuNSIsCisgICAgICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgIH0sCisgICAg
ICAgICAgICAiZXZlbnRzb3VyY2UiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS42
IiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICJvcmln
aW5hbCI6ICIxLjAuMCIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAg
ICAgICJmYXllLXdlYnNvY2tldCI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC43LjMi
LAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgIndlYnNv
Y2tldC1kcml2ZXIiOiAiMC42LjUiCisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAiaGFzLWFuc2kiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4w
IiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgICAgICJhbnNp
LXJlZ2V4IjogIjIuMC4wIgorICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9LAorICAgICAg
ICAgICAgImluaGVyaXRzIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMyIsCisg
ICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUK
KyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAianNvbjMiOiB7CisgICAgICAgICAgICAgICJ2
ZXJzaW9uIjogIjMuMy4yIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJtcyI6IHsK
KyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC43LjEiLAorICAgICAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgIm9iamVjdC1hc3NpZ24iOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjQu
MS4wIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlCisgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgIm9yaWdpbmFsIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIs
CisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAidXJsLXBh
cnNlIjogIjEuMC41IgorICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAiZGVwZW5kZW5j
aWVzIjogeworICAgICAgICAgICAgICAgICJ1cmwtcGFyc2UiOiB7CisgICAgICAgICAgICAgICAg
ICAidmVyc2lvbiI6ICIxLjAuNSIsCisgICAgICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgInF1ZXJ5c3RyaW5naWZ5IjogIjAuMC40IiwK
KyAgICAgICAgICAgICAgICAgICAgInJlcXVpcmVzLXBvcnQiOiAiMS4wLjAiCisgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9LAorICAgICAgICAgICAgInBpbmtpZSI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAi
Mi4wLjQiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUKKyAgICAgICAgICAgIH0sCisg
ICAgICAgICAgICAicGlua2llLXByb21pc2UiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjog
IjIuMC4xIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgInBpbmtpZSI6ICIyLjAuNCIKKyAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJxdWVyeXN0cmluZ2lmeSI6IHsK
KyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4wLjQiLAorICAgICAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9LAorICAg
ICAgICAgICAgInJlcXVpcmVzLXBvcnQiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
MC4wIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2
IjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJzb2NranMtY2xpZW50Ijogewor
ICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMyIsCisgICAgICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAiZGVidWciOiAiMi4yLjAiLAorICAgICAgICAgICAg
ICAgICJldmVudHNvdXJjZSI6ICIwLjEuNiIsCisgICAgICAgICAgICAgICAgImZheWUtd2Vic29j
a2V0IjogIjAuNy4zIiwKKyAgICAgICAgICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjMiLAorICAg
ICAgICAgICAgICAgICJqc29uMyI6ICIzLjMuMiIsCisgICAgICAgICAgICAgICAgInVybC1wYXJz
ZSI6ICIxLjEuMyIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAg
ICJzdHJpcC1hbnNpIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIzLjAuMSIsCisgICAg
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUsCisg
ICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAiYW5zaS1yZWdleCI6
ICIyLjAuMCIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICJz
dXBwb3J0cy1jb2xvciI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAg
ICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgInVybC1wYXJzZSI6IHsKKyAgICAgICAgICAgICAg
InZlcnNpb24iOiAiMS4xLjMiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICAgICAgICAgInF1ZXJ5c3RyaW5naWZ5IjogIjAuMC40IiwKKyAgICAgICAgICAgICAgICAi
cmVxdWlyZXMtcG9ydCI6ICIxLjAuMCIKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICJ3ZWJzb2NrZXQtZHJpdmVyIjogeworICAgICAgICAgICAgICAidmVyc2lv
biI6ICIwLjYuNSIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAg
ICAgICAid2Vic29ja2V0LWV4dGVuc2lvbnMiOiAiMC4xLjEiCisgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIH0sCisgICAgICAgICAgICAid2Vic29ja2V0LWV4dGVuc2lvbnMiOiB7CisgICAg
ICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS4xIiwKKyAgICAgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfQorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgInJlYWQtcGtnIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjEuMS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImxvYWQtanNvbi1m
aWxlIjogIjEuMS4wIiwKKyAgICAgICAgICAgICJub3JtYWxpemUtcGFja2FnZS1kYXRhIjogIjIu
My41IiwKKyAgICAgICAgICAgICJwYXRoLXR5cGUiOiAiMS4xLjAiCisgICAgICAgICAgfQorICAg
ICAgICB9LAorICAgICAgICAicmVhZC1wa2ctdXAiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
MS4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiZmluZC11cCI6ICIxLjEu
MiIsCisgICAgICAgICAgICAicmVhZC1wa2ciOiAiMS4xLjAiCisgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgICAicmVhZGFibGUtc3RyZWFtIjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjIuMC42IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImNvcmUtdXRpbC1pcyI6
ICIxLjAuMiIsCisgICAgICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjMiLAorICAgICAgICAgICAg
ImlzYXJyYXkiOiAiMS4wLjAiLAorICAgICAgICAgICAgInByb2Nlc3MtbmV4dGljay1hcmdzIjog
IjEuMC43IiwKKyAgICAgICAgICAgICJzdHJpbmdfZGVjb2RlciI6ICIwLjEwLjMxIiwKKyAgICAg
ICAgICAgICJ1dGlsLWRlcHJlY2F0ZSI6ICIxLjAuMiIKKyAgICAgICAgICB9CisgICAgICAgIH0s
CisgICAgICAgICJyZWFkZGlycCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjEuMCIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJncmFjZWZ1bC1mcyI6ICI0LjEuOCIsCisg
ICAgICAgICAgICAibWluaW1hdGNoIjogIjMuMC4zIiwKKyAgICAgICAgICAgICJyZWFkYWJsZS1z
dHJlYW0iOiAiMi4wLjYiLAorICAgICAgICAgICAgInNldC1pbW1lZGlhdGUtc2hpbSI6ICIxLjAu
MSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJyZWFkbGluZTIiOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAg
ICAiY29kZS1wb2ludC1hdCI6ICIxLjAuMCIsCisgICAgICAgICAgICAiaXMtZnVsbHdpZHRoLWNv
ZGUtcG9pbnQiOiAiMS4wLjAiLAorICAgICAgICAgICAgIm11dGUtc3RyZWFtIjogIjAuMC41Igor
ICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInJlY3Vyc2l2ZS1yZWFkZGlyIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAgICAgIm1pbmltYXRjaCI6ICIzLjAuMiIKKyAgICAgICAgICB9LAorICAgICAgICAgICJkZXBl
bmRlbmNpZXMiOiB7CisgICAgICAgICAgICAibWluaW1hdGNoIjogeworICAgICAgICAgICAgICAi
dmVyc2lvbiI6ICIzLjAuMiIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgICAgICAgICAiYnJhY2UtZXhwYW5zaW9uIjogIjEuMS42IgorICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAicmVkZXllZCI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgICAgICJlc3ByaW1hIjogIjIuNy4zIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAg
ICAgICAgInJlZHVjZS1jc3MtY2FsYyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjMuMCIs
CisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJiYWxhbmNlZC1tYXRjaCI6ICIwLjQu
MiIsCisgICAgICAgICAgICAibWF0aC1leHByZXNzaW9uLWV2YWx1YXRvciI6ICIxLjIuMTQiLAor
ICAgICAgICAgICAgInJlZHVjZS1mdW5jdGlvbi1jYWxsIjogIjEuMC4xIgorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgInJlZHVjZS1mdW5jdGlvbi1jYWxsIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJh
bGFuY2VkLW1hdGNoIjogIjAuMS4wIgorICAgICAgICAgIH0sCisgICAgICAgICAgImRlcGVuZGVu
Y2llcyI6IHsKKyAgICAgICAgICAgICJiYWxhbmNlZC1tYXRjaCI6IHsKKyAgICAgICAgICAgICAg
InZlcnNpb24iOiAiMC4xLjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAg
ICB9LAorICAgICAgICAicmVnZW5lcmF0ZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjMu
MSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisg
ICAgICAgIH0sCisgICAgICAgICJyZWdlbmVyYXRvci1ydW50aW1lIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjAuOS41IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInJlZ2V4LWNhY2hlIjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjAuNC4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAg
ImlzLWVxdWFsLXNoYWxsb3ciOiAiMC4xLjMiLAorICAgICAgICAgICAgImlzLXByaW1pdGl2ZSI6
ICIyLjAuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJyZWdleHB1LWNvcmUi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICAgICAicmVnZW5lcmF0ZSI6ICIxLjMuMSIsCisgICAgICAgICAgICAicmVnanNnZW4i
OiAiMC4yLjAiLAorICAgICAgICAgICAgInJlZ2pzcGFyc2VyIjogIjAuMS41IgorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgInJlZ2pzZ2VuIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjAuMi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInJlZ2pzcGFyc2VyIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjAuMS41IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImpzZXNj
IjogIjAuNS4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInJlbGF0ZXVybCI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjIuNyIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJyZW5kZXJr
aWQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7
CisgICAgICAgICAgICAiY3NzLXNlbGVjdCI6ICIxLjIuMCIsCisgICAgICAgICAgICAiZG9tLWNv
bnZlcnRlciI6ICIwLjEuNCIsCisgICAgICAgICAgICAiaHRtbHBhcnNlcjIiOiAiMy4zLjAiLAor
ICAgICAgICAgICAgInN0cmlwLWFuc2kiOiAiMy4wLjEiLAorICAgICAgICAgICAgInV0aWxhIjog
IjAuMy4zIgorICAgICAgICAgIH0sCisgICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAg
ICAgICAgICJ1dGlsYSI6IHsKKyAgICAgICAgICAgICAgInZlcnNpb24iOiAiMC4zLjMiLAorICAg
ICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisg
ICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAicmVwZWF0LWVs
ZW1lbnQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjIiLAorICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAi
cmVwZWF0LXN0cmluZyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjUuNCIsCisgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisg
ICAgICAgICJyZXBlYXRpbmciOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjMiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiaXMtZmluaXRlIjogIjEuMC4xIgorICAgICAg
ICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInJlcXVlc3QiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMi43NS4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImF3cy1zaWdu
MiI6ICIwLjYuMCIsCisgICAgICAgICAgICAiYXdzNCI6ICIxLjQuMSIsCisgICAgICAgICAgICAi
YmwiOiAiMS4xLjIiLAorICAgICAgICAgICAgImNhc2VsZXNzIjogIjAuMTEuMCIsCisgICAgICAg
ICAgICAiY29tYmluZWQtc3RyZWFtIjogIjEuMC41IiwKKyAgICAgICAgICAgICJleHRlbmQiOiAi
My4wLjAiLAorICAgICAgICAgICAgImZvcmV2ZXItYWdlbnQiOiAiMC42LjEiLAorICAgICAgICAg
ICAgImZvcm0tZGF0YSI6ICIyLjAuMCIsCisgICAgICAgICAgICAiaGFyLXZhbGlkYXRvciI6ICIy
LjAuNiIsCisgICAgICAgICAgICAiaGF3ayI6ICIzLjEuMyIsCisgICAgICAgICAgICAiaHR0cC1z
aWduYXR1cmUiOiAiMS4xLjEiLAorICAgICAgICAgICAgImlzLXR5cGVkYXJyYXkiOiAiMS4wLjAi
LAorICAgICAgICAgICAgImlzc3RyZWFtIjogIjAuMS4yIiwKKyAgICAgICAgICAgICJqc29uLXN0
cmluZ2lmeS1zYWZlIjogIjUuMC4xIiwKKyAgICAgICAgICAgICJtaW1lLXR5cGVzIjogIjIuMS4x
MiIsCisgICAgICAgICAgICAibm9kZS11dWlkIjogIjEuNC43IiwKKyAgICAgICAgICAgICJvYXV0
aC1zaWduIjogIjAuOC4yIiwKKyAgICAgICAgICAgICJxcyI6ICI2LjIuMSIsCisgICAgICAgICAg
ICAic3RyaW5nc3RyZWFtIjogIjAuMC41IiwKKyAgICAgICAgICAgICJ0b3VnaC1jb29raWUiOiAi
Mi4zLjEiLAorICAgICAgICAgICAgInR1bm5lbC1hZ2VudCI6ICIwLjQuMyIKKyAgICAgICAgICB9
CisgICAgICAgIH0sCisgICAgICAgICJyZXF1aXJlLWRpcmVjdG9yeSI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIyLjEuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJyZXF1aXJlLW1haW4tZmlsZW5hbWUi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAicmVxdWly
ZS11bmNhY2hlZCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICJjYWxsZXItcGF0aCI6ICIwLjEuMCIsCisgICAgICAgICAg
ICAicmVzb2x2ZS1mcm9tIjogIjEuMC4xIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg
ICAgInJlcXVpcmVzLXBvcnQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9
LAorICAgICAgICAicmVzb2x2ZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuNyIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAg
IH0sCisgICAgICAgICJyZXNvbHZlLWZyb20iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4w
LjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQor
ICAgICAgICB9LAorICAgICAgICAicmVzdG9yZS1jdXJzb3IiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMS4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiZXhpdC1ob29r
IjogIjEuMS4xIiwKKyAgICAgICAgICAgICJvbmV0aW1lIjogIjEuMS4wIgorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgInJpZ2h0LWFsaWduIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjAuMS4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImFsaWduLXRleHQi
OiAiMC4xLjQiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAicmltcmFmIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjIuNS40IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAgICAgImdsb2IiOiAiNy4xLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAi
cmlwZW1kMTYwIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4wIiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAg
ICAgInJ1bi1hc3luYyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuMCIsCisgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJy
ZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJvbmNlIjogIjEuNC4wIgorICAgICAgICAgIH0KKyAg
ICAgICAgfSwKKyAgICAgICAgInJ4LWxpdGUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4x
LjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQor
ICAgICAgICB9LAorICAgICAgICAic2FuZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjQu
MSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAor
ICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJleGVjLXNoIjogIjAuMi4wIiwK
KyAgICAgICAgICAgICJmYi13YXRjaG1hbiI6ICIxLjkuMCIsCisgICAgICAgICAgICAibWluaW1h
dGNoIjogIjMuMC4zIiwKKyAgICAgICAgICAgICJtaW5pbWlzdCI6ICIxLjIuMCIsCisgICAgICAg
ICAgICAid2Fsa2VyIjogIjEuMC43IiwKKyAgICAgICAgICAgICJ3YXRjaCI6ICIwLjEwLjAiCisg
ICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAic2F4IjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjEuMi4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInNlbXZlciI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICI1LjMuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJzZW5kIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjAuMTQuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJkZWJ1ZyI6
ICIyLjIuMCIsCisgICAgICAgICAgICAiZGVwZCI6ICIxLjEuMCIsCisgICAgICAgICAgICAiZGVz
dHJveSI6ICIxLjAuNCIsCisgICAgICAgICAgICAiZW5jb2RldXJsIjogIjEuMC4xIiwKKyAgICAg
ICAgICAgICJlc2NhcGUtaHRtbCI6ICIxLjAuMyIsCisgICAgICAgICAgICAiZXRhZyI6ICIxLjcu
MCIsCisgICAgICAgICAgICAiZnJlc2giOiAiMC4zLjAiLAorICAgICAgICAgICAgImh0dHAtZXJy
b3JzIjogIjEuNS4wIiwKKyAgICAgICAgICAgICJtaW1lIjogIjEuMy40IiwKKyAgICAgICAgICAg
ICJtcyI6ICIwLjcuMSIsCisgICAgICAgICAgICAib24tZmluaXNoZWQiOiAiMi4zLjAiLAorICAg
ICAgICAgICAgInJhbmdlLXBhcnNlciI6ICIxLjIuMCIsCisgICAgICAgICAgICAic3RhdHVzZXMi
OiAiMS4zLjAiCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAg
ICAgICAgICAgIm1pbWUiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMy40IiwKKyAg
ICAgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQor
ICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInNlbnRlbmNl
LWNhc2UiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4xLjAiLAorICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICAgICAibm8tY2FzZSI6ICIyLjMuMCIsCisgICAgICAgICAgICAidXBwZXIt
Y2FzZS1maXJzdCI6ICIxLjEuMiIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJz
ZXJ2ZS1pbmRleCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjguMCIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICJhY2NlcHRzIjogIjEuMy4zIiwKKyAgICAgICAgICAgICJi
YXRjaCI6ICIwLjUuMyIsCisgICAgICAgICAgICAiZGVidWciOiAiMi4yLjAiLAorICAgICAgICAg
ICAgImVzY2FwZS1odG1sIjogIjEuMC4zIiwKKyAgICAgICAgICAgICJodHRwLWVycm9ycyI6ICIx
LjUuMCIsCisgICAgICAgICAgICAibWltZS10eXBlcyI6ICIyLjEuMTIiLAorICAgICAgICAgICAg
InBhcnNldXJsIjogIjEuMy4xIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInNl
cnZlLXN0YXRpYyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjExLjEiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVx
dWlyZXMiOiB7CisgICAgICAgICAgICAiZW5jb2RldXJsIjogIjEuMC4xIiwKKyAgICAgICAgICAg
ICJlc2NhcGUtaHRtbCI6ICIxLjAuMyIsCisgICAgICAgICAgICAicGFyc2V1cmwiOiAiMS4zLjEi
LAorICAgICAgICAgICAgInNlbmQiOiAiMC4xNC4xIgorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgInNldC1ibG9ja2luZyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIs
CisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAg
ICAgIH0sCisgICAgICAgICJzZXQtaW1tZWRpYXRlLXNoaW0iOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMS4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2
IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAic2V0cHJvdG90eXBlb2YiOiB7CisgICAgICAg
ICAgInZlcnNpb24iOiAiMS4wLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAg
ICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAic2hhLmpzIjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjIuMi42IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInNoZWJhbmctcmVnZXgiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAic2hlbGxqcyI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjYuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJzaGVsbHdv
cmRzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS4wIiwKKyAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInNs
YXNoIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInNs
aWNlLWFuc2kiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4wLjQiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAg
ICAic25ha2UtY2FzZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjEuMCIsCisgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJy
ZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJuby1jYXNlIjogIjIuMy4wIgorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgInNudHAiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4w
LjkiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiaG9layI6ICIyLjE2LjMiCisg
ICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAic29ja2pzIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjAuMy4xOCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJmYXll
LXdlYnNvY2tldCI6ICIwLjEwLjAiLAorICAgICAgICAgICAgInV1aWQiOiAiMi4wLjMiCisgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICAic29ja2pzLWNsaWVudCI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIxLjEuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJk
ZWJ1ZyI6ICIyLjIuMCIsCisgICAgICAgICAgICAiZXZlbnRzb3VyY2UiOiAiMC4xLjYiLAorICAg
ICAgICAgICAgImZheWUtd2Vic29ja2V0IjogIjAuMTEuMCIsCisgICAgICAgICAgICAiaW5oZXJp
dHMiOiAiMi4wLjMiLAorICAgICAgICAgICAgImpzb24zIjogIjMuMy4yIiwKKyAgICAgICAgICAg
ICJ1cmwtcGFyc2UiOiAiMS4xLjMiCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5j
aWVzIjogeworICAgICAgICAgICAgImZheWUtd2Vic29ja2V0IjogeworICAgICAgICAgICAgICAi
dmVyc2lvbiI6ICIwLjExLjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAg
ICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICAgICAgICAgIndlYnNvY2tldC1kcml2ZXIiOiAiMC42LjUiCisgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJzb3J0LWtl
eXMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjIiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7
CisgICAgICAgICAgICAiaXMtcGxhaW4tb2JqIjogIjEuMS4wIgorICAgICAgICAgIH0KKyAgICAg
ICAgfSwKKyAgICAgICAgInNvdXJjZS1saXN0LW1hcCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIwLjEuNiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlCisgICAgICAgIH0sCisgICAgICAgICJzb3VyY2UtbWFwIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjAuNS42IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInNvdXJjZS1tYXAtc3VwcG9ydCI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIwLjIuMTAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICAgICAic291cmNlLW1hcCI6ICIwLjEuMzIiCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZGVw
ZW5kZW5jaWVzIjogeworICAgICAgICAgICAgInNvdXJjZS1tYXAiOiB7CisgICAgICAgICAgICAg
ICJ2ZXJzaW9uIjogIjAuMS4zMiIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgICAgICAgICAiYW1kZWZpbmUiOiAiMS4wLjAiCisgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJzcGR4LWNvcnJlY3Qi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICAgICAic3BkeC1saWNlbnNlLWlkcyI6ICIxLjIuMiIKKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJzcGR4LWV4cHJlc3Npb24tcGFyc2UiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMS4wLjMiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAic3BkeC1saWNlbnNlLWlkcyI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjIuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJzcHJpbnRmLWpzIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInNzaHBrIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMTAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgICAgICJhc24xIjogIjAuMi4zIiwKKyAgICAgICAgICAgICJhc3NlcnQtcGx1cyI6ICIx
LjAuMCIsCisgICAgICAgICAgICAiYmNyeXB0LXBia2RmIjogIjEuMC4wIiwKKyAgICAgICAgICAg
ICJkYXNoZGFzaCI6ICIxLjE0LjAiLAorICAgICAgICAgICAgImVjYy1qc2JuIjogIjAuMS4xIiwK
KyAgICAgICAgICAgICJnZXRwYXNzIjogIjAuMS42IiwKKyAgICAgICAgICAgICJqb2RpZDI1NTE5
IjogIjEuMC4yIiwKKyAgICAgICAgICAgICJqc2JuIjogIjAuMS4wIiwKKyAgICAgICAgICAgICJ0
d2VldG5hY2wiOiAiMC4xMy4zIgorICAgICAgICAgIH0sCisgICAgICAgICAgImRlcGVuZGVuY2ll
cyI6IHsKKyAgICAgICAgICAgICJhc3NlcnQtcGx1cyI6IHsKKyAgICAgICAgICAgICAgInZlcnNp
b24iOiAiMS4wLjAiLAorICAgICAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICB9LAor
ICAgICAgICAic3RhdHVzZXMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4zLjAiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9
LAorICAgICAgICAic3RyZWFtLWJyb3dzZXJpZnkiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
MS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiaW5oZXJpdHMiOiAiMi4w
LjMiLAorICAgICAgICAgICAgInJlYWRhYmxlLXN0cmVhbSI6ICIxLjEuMTQiCisgICAgICAgICAg
fSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAgICAgImlzYXJyYXkiOiB7
CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC4xIiwKKyAgICAgICAgICAgICAgImJ1bmRs
ZWQiOiB0cnVlLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICAgICAgfSwKKyAg
ICAgICAgICAgICJyZWFkYWJsZS1zdHJlYW0iOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjog
IjEuMS4xNCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICAg
ICAiY29yZS11dGlsLWlzIjogIjEuMC4yIiwKKyAgICAgICAgICAgICAgICAiaW5oZXJpdHMiOiAi
Mi4wLjMiLAorICAgICAgICAgICAgICAgICJpc2FycmF5IjogIjAuMC4xIiwKKyAgICAgICAgICAg
ICAgICAic3RyaW5nX2RlY29kZXIiOiAiMC4xMC4zMSIKKyAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInN0cmVhbS1jYWNoZSI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjAuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0
cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJzdHJpY3Qt
dXJpLWVuY29kZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAg
ICAgICJzdHJpbmdfZGVjb2RlciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEwLjMxIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAg
ICAgfSwKKyAgICAgICAgInN0cmluZy13aWR0aCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIx
LjAuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJjb2RlLXBvaW50LWF0Ijog
IjEuMC4wIiwKKyAgICAgICAgICAgICJpcy1mdWxsd2lkdGgtY29kZS1wb2ludCI6ICIxLjAuMCIs
CisgICAgICAgICAgICAic3RyaXAtYW5zaSI6ICIzLjAuMSIKKyAgICAgICAgICB9CisgICAgICAg
IH0sCisgICAgICAgICJzdHJpbmcucHJvdG90eXBlLmNvZGVwb2ludGF0IjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjAuMi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInN0cmluZ3N0cmVhbSI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIwLjAuNSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJzdHJpcC1hbnNpIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAgICAgImFuc2ktcmVnZXgiOiAiMi4wLjAiCisgICAgICAgICAgfQorICAgICAgICB9LAor
ICAgICAgICAic3RyaXAtYm9tIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImlzLXV0ZjgiOiAiMC4yLjEiCisgICAgICAg
ICAgfQorICAgICAgICB9LAorICAgICAgICAic3RyaXAtanNvbi1jb21tZW50cyI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIxLjAuNCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJzdHlsZS1sb2FkZXIiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMC4xMy4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRy
dWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAgICAgImxvYWRlci11dGlscyI6ICIwLjIuMTYiCisgICAgICAgICAgfQorICAgICAgICB9
LAorICAgICAgICAic3VwcG9ydHMtY29sb3IiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4x
LjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiaGFzLWZsYWciOiAiMS4wLjAi
CisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAic3ZnbyI6IHsKKyAgICAgICAgICAi
dmVyc2lvbiI6ICIwLjcuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJjb2Ei
OiAiMS4wLjEiLAorICAgICAgICAgICAgImNvbG9ycyI6ICIxLjEuMiIsCisgICAgICAgICAgICAi
Y3NzbyI6ICIyLjIuMSIsCisgICAgICAgICAgICAianMteWFtbCI6ICIzLjYuMSIsCisgICAgICAg
ICAgICAibWtkaXJwIjogIjAuNS4xIiwKKyAgICAgICAgICAgICJzYXgiOiAiMS4yLjEiLAorICAg
ICAgICAgICAgIndoZXQuZXh0ZW5kIjogIjAuOS45IgorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgInN3YXAtY2FzZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMiIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJsb3dlci1jYXNlIjogIjEuMS4zIiwKKyAg
ICAgICAgICAgICJ1cHBlci1jYXNlIjogIjEuMS4zIgorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgInN5bWJvbC10cmVlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMS40IiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAg
ICAgfSwKKyAgICAgICAgInRhYmxlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuOC4wIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImFqdiI6ICI0LjcuNCIsCisgICAgICAg
ICAgICAiYWp2LWtleXdvcmRzIjogIjEuMS4xIiwKKyAgICAgICAgICAgICJjaGFsayI6ICIxLjEu
MyIsCisgICAgICAgICAgICAibG9kYXNoIjogIjQuMTYuMiIsCisgICAgICAgICAgICAic2xpY2Ut
YW5zaSI6ICIwLjAuNCIsCisgICAgICAgICAgICAic3RyaW5nLXdpZHRoIjogIjEuMC4yIgorICAg
ICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInRhcGFibGUiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMC4xLjEwIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInRlc3QtZXhjbHVkZSI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIyLjEuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAg
ICJhcnJpZnkiOiAiMS4wLjEiLAorICAgICAgICAgICAgImxvZGFzaC5hc3NpZ24iOiAiNC4yLjAi
LAorICAgICAgICAgICAgIm1pY3JvbWF0Y2giOiAiMi4zLjExIiwKKyAgICAgICAgICAgICJyZWFk
LXBrZy11cCI6ICIxLjAuMSIsCisgICAgICAgICAgICAicmVxdWlyZS1tYWluLWZpbGVuYW1lIjog
IjEuMC4xIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInRlc3RjaGVjayI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuNCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVl
LAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJ0ZXh0LXRhYmxl
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInRocm91
Z2giOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMi4zLjgiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAidGlt
ZXJzLWJyb3dzZXJpZnkiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS40LjIiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICAgICAicHJvY2VzcyI6ICIwLjExLjkiCisgICAgICAgICAg
fQorICAgICAgICB9LAorICAgICAgICAidGl0bGUtY2FzZSI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIyLjEuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJuby1jYXNlIjog
IjIuMy4wIiwKKyAgICAgICAgICAgICJ1cHBlci1jYXNlIjogIjEuMS4zIgorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgInRtcGwiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4w
LjQiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQor
ICAgICAgICB9LAorICAgICAgICAidG8tZmFzdC1wcm9wZXJ0aWVzIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAg
ImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInRvcG9zb3J0IjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAg
ICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInRvdWdoLWNvb2tpZSI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIyLjMuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJ0cjQ2IjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjAuMC4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInRyeWl0IjogeworICAg
ICAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisg
ICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInR0eS1icm93c2VyaWZ5
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6
IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInR1bm5l
bC1hZ2VudCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjQuMyIsCisgICAgICAgICAgImJ1
bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAg
ICJ0d2VldG5hY2wiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4xMy4zIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9w
dGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAidHlwZS1jaGVjayI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIwLjMuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAg
ICJwcmVsdWRlLWxzIjogIjEuMS4yIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAg
InR5cGUtaXMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS42LjEzIiwKKyAgICAgICAgICAi
YnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVp
cmVzIjogeworICAgICAgICAgICAgIm1lZGlhLXR5cGVyIjogIjAuMy4wIiwKKyAgICAgICAgICAg
ICJtaW1lLXR5cGVzIjogIjIuMS4xMiIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJ0eXBlZGFycmF5IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMC42IiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAg
ICAgICAgInVnbGlmeS1qcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjYuNCIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJhc3luYyI6ICIwLjIuMTAiLAorICAgICAgICAg
ICAgInNvdXJjZS1tYXAiOiAiMC41LjYiLAorICAgICAgICAgICAgInVnbGlmeS10by1icm93c2Vy
aWZ5IjogIjEuMC4yIiwKKyAgICAgICAgICAgICJ5YXJncyI6ICIzLjEwLjAiCisgICAgICAgICAg
fSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAgICAgImFzeW5jIjogewor
ICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjIuMTAiLAorICAgICAgICAgICAgICAiYnVuZGxl
ZCI6IHRydWUsCisgICAgICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgICAgICB9CisgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICAidWdsaWZ5LXRvLWJyb3dzZXJpZnkiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAidW5pcSI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJ1bmlxaWQiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMy4xLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICAgICAibWFjYWRkcmVzcyI6ICIwLjIuOCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAg
ICAgICJ1bmlxcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAg
ICAgICJ1bnBpcGUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAg
ICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAg
ICAgICAidXBwZXItY2FzZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMyIsCisgICAg
ICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0s
CisgICAgICAgICJ1cHBlci1jYXNlLWZpcnN0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
MS4yIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgInVwcGVyLWNhc2UiOiAiMS4x
LjMiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAidXJsIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjAuMTAuMyIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJw
dW55Y29kZSI6ICIxLjMuMiIsCisgICAgICAgICAgICAicXVlcnlzdHJpbmciOiAiMC4yLjAiCisg
ICAgICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAgICAgInB1
bnljb2RlIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjMuMiIsCisgICAgICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJ1cmwtbG9hZGVyIjogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjAuNS43IiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAgICAgImxvYWRlci11dGlscyI6ICIwLjIuMTYiLAorICAgICAgICAgICAgIm1pbWUiOiAiMS4y
LjExIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInVybC1wYXJzZSI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIxLjEuMyIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
ICAgICJxdWVyeXN0cmluZ2lmeSI6ICIwLjAuNCIsCisgICAgICAgICAgICAicmVxdWlyZXMtcG9y
dCI6ICIxLjAuMCIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJ1c2VyLWhvbWUi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjEiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAidXRpbCI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEwLjMiLAorICAgICAgICAgICJidW5kbGVkIjog
dHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjEiCisgICAgICAgICAgfSwKKyAgICAgICAgICAi
ZGVwZW5kZW5jaWVzIjogeworICAgICAgICAgICAgImluaGVyaXRzIjogeworICAgICAgICAgICAg
ICAidmVyc2lvbiI6ICIyLjAuMSIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAg
ICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJ1dGlsLWRlcHJlY2F0ZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIxLjAuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlCisgICAgICAgIH0sCisgICAgICAgICJ1dGlsYSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIwLjQuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0
cnVlCisgICAgICAgIH0sCisgICAgICAgICJ1dGlscy1tZXJnZSI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJ1dWlkIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjIuMC4zIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRl
diI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInZhbGlkYXRlLW5wbS1wYWNrYWdlLWxpY2Vu
c2UiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4wLjEiLAorICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7
CisgICAgICAgICAgICAic3BkeC1jb3JyZWN0IjogIjEuMC4yIiwKKyAgICAgICAgICAgICJzcGR4
LWV4cHJlc3Npb24tcGFyc2UiOiAiMS4wLjMiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAidmFyeSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCisgICAgICAgICAg
ImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAg
ICAgICJ2ZW5kb3JzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICAg
ICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAg
ICAgICAgInZlcnJvciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjMuNiIsCisgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJy
ZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJleHRzcHJpbnRmIjogIjEuMC4yIgorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgInZtLWJyb3dzZXJpZnkiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMC4wLjQiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiaW5kZXhv
ZiI6ICIwLjAuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJ3YWxrZXIiOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjciLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1
ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICAgICAibWFrZWVycm9yIjogIjEuMC4xMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisg
ICAgICAgICJ3YXRjaCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEwLjAiLAorICAgICAg
ICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAor
ICAgICAgICAid2F0Y2hwYWNrIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi45IiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImFzeW5jIjogIjAuOS4yIiwKKyAgICAgICAg
ICAgICJjaG9raWRhciI6ICIxLjYuMCIsCisgICAgICAgICAgICAiZ3JhY2VmdWwtZnMiOiAiNC4x
LjgiCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZGVwZW5kZW5jaWVzIjogeworICAgICAgICAg
ICAgImFzeW5jIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjkuMiIsCisgICAgICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJ3ZWJpZGwtY29udmVy
c2lvbnMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4wLjEiLAorICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAi
d2VicGFjayI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEzLjIiLAorICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICAgICAiYWNvcm4iOiAiMy4zLjAiLAorICAgICAgICAgICAgImFzeW5j
IjogIjEuNS4yIiwKKyAgICAgICAgICAgICJjbG9uZSI6ICIxLjAuMiIsCisgICAgICAgICAgICAi
ZW5oYW5jZWQtcmVzb2x2ZSI6ICIwLjkuMSIsCisgICAgICAgICAgICAiaW50ZXJwcmV0IjogIjAu
Ni42IiwKKyAgICAgICAgICAgICJsb2FkZXItdXRpbHMiOiAiMC4yLjE2IiwKKyAgICAgICAgICAg
ICJtZW1vcnktZnMiOiAiMC4zLjAiLAorICAgICAgICAgICAgIm1rZGlycCI6ICIwLjUuMSIsCisg
ICAgICAgICAgICAibm9kZS1saWJzLWJyb3dzZXIiOiAiMC42LjAiLAorICAgICAgICAgICAgIm9w
dGltaXN0IjogIjAuNi4xIiwKKyAgICAgICAgICAgICJzdXBwb3J0cy1jb2xvciI6ICIzLjEuMiIs
CisgICAgICAgICAgICAidGFwYWJsZSI6ICIwLjEuMTAiLAorICAgICAgICAgICAgInVnbGlmeS1q
cyI6ICIyLjYuNCIsCisgICAgICAgICAgICAid2F0Y2hwYWNrIjogIjAuMi45IiwKKyAgICAgICAg
ICAgICJ3ZWJwYWNrLWNvcmUiOiAiMC42LjgiCisgICAgICAgICAgfSwKKyAgICAgICAgICAiZGVw
ZW5kZW5jaWVzIjogeworICAgICAgICAgICAgImFjb3JuIjogeworICAgICAgICAgICAgICAidmVy
c2lvbiI6ICIzLjMuMCIsCisgICAgICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0s
CisgICAgICAgICJ3ZWJwYWNrLWNvcmUiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC42Ljgi
LAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAic291cmNlLWxpc3QtbWFwIjogIjAu
MS42IiwKKyAgICAgICAgICAgICJzb3VyY2UtbWFwIjogIjAuNC40IgorICAgICAgICAgIH0sCisg
ICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgICAgICJzb3VyY2UtbWFwIjogewor
ICAgICAgICAgICAgICAidmVyc2lvbiI6ICIwLjQuNCIsCisgICAgICAgICAgICAgICJidW5kbGVk
IjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICAgICAiYW1kZWZpbmUiOiAiMS4wLjAiCisgICAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJ3
ZWJwYWNrLWRldi1taWRkbGV3YXJlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuOC4zIiwK
KyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgIm1lbW9yeS1mcyI6ICIwLjMuMCIsCisg
ICAgICAgICAgICAibWltZSI6ICIxLjMuNCIsCisgICAgICAgICAgICAicGF0aC1pcy1hYnNvbHV0
ZSI6ICIxLjAuMCIsCisgICAgICAgICAgICAicmFuZ2UtcGFyc2VyIjogIjEuMi4wIgorICAgICAg
ICAgIH0sCisgICAgICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAgICAgICJtaW1lIjog
eworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIxLjMuNCIsCisgICAgICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJ3ZWJwYWNrLWRldi1zZXJ2ZXIiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMS4xNi4xIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAgICAgImNvbXByZXNzaW9uIjogIjEuNi4yIiwKKyAgICAgICAgICAgICJjb25uZWN0LWhpc3Rv
cnktYXBpLWZhbGxiYWNrIjogIjEuMy4wIiwKKyAgICAgICAgICAgICJleHByZXNzIjogIjQuMTQu
MCIsCisgICAgICAgICAgICAiaHR0cC1wcm94eS1taWRkbGV3YXJlIjogIjAuMTcuMSIsCisgICAg
ICAgICAgICAib3BlbiI6ICIwLjAuNSIsCisgICAgICAgICAgICAib3B0aW1pc3QiOiAiMC42LjEi
LAorICAgICAgICAgICAgInNlcnZlLWluZGV4IjogIjEuOC4wIiwKKyAgICAgICAgICAgICJzb2Nr
anMiOiAiMC4zLjE4IiwKKyAgICAgICAgICAgICJzb2NranMtY2xpZW50IjogIjEuMS4xIiwKKyAg
ICAgICAgICAgICJzdHJlYW0tY2FjaGUiOiAiMC4wLjIiLAorICAgICAgICAgICAgInN0cmlwLWFu
c2kiOiAiMy4wLjEiLAorICAgICAgICAgICAgInN1cHBvcnRzLWNvbG9yIjogIjMuMS4yIiwKKyAg
ICAgICAgICAgICJ3ZWJwYWNrLWRldi1taWRkbGV3YXJlIjogIjEuOC4zIgorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgIndlYnBhY2stc291cmNlcyI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIwLjEuMiIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJzb3VyY2Ut
bGlzdC1tYXAiOiAiMC4xLjYiLAorICAgICAgICAgICAgInNvdXJjZS1tYXAiOiAiMC41LjYiCisg
ICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAid2Vic29ja2V0LWRyaXZlciI6IHsKKyAg
ICAgICAgICAidmVyc2lvbiI6ICIwLjYuNSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAor
ICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
ICAgICJ3ZWJzb2NrZXQtZXh0ZW5zaW9ucyI6ICIwLjEuMSIKKyAgICAgICAgICB9CisgICAgICAg
IH0sCisgICAgICAgICJ3ZWJzb2NrZXQtZXh0ZW5zaW9ucyI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIwLjEuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYi
OiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJ3aGF0d2ctZmV0Y2giOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAid2hhdHdnLXVybCI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIzLjAuMCIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAg
ICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAg
ICJ0cjQ2IjogIjAuMC4zIiwKKyAgICAgICAgICAgICJ3ZWJpZGwtY29udmVyc2lvbnMiOiAiMy4w
LjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAid2hldC5leHRlbmQiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMC45LjkiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAid2hpY2giOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMS4yLjExIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUs
CisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAg
ICAgICAgImlzZXhlIjogIjEuMS4yIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAg
IndoaWNoLW1vZHVsZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAg
ICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisg
ICAgICAgICJ3aW5kb3ctc2l6ZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuMCIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAg
IH0sCisgICAgICAgICJ3b3Jkd3JhcCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIs
CisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAg
ICAgIH0sCisgICAgICAgICJ3b3JrZXItZmFybSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIx
LjMuMSIsCisgICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJlcnJubyI6ICIwLjEuNCIs
CisgICAgICAgICAgICAieHRlbmQiOiAiNC4wLjEiCisgICAgICAgICAgfQorICAgICAgICB9LAor
ICAgICAgICAid3JhcC1hbnNpIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgInN0cmluZy13aWR0aCI6ICIxLjAuMiIKKyAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJ3cmFwcHkiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMS4wLjIiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAid3JpdGUiOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMC4yLjEiLAorICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAibWtkaXJw
IjogIjAuNS4xIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInhtbC1jaGFyLWNs
YXNzZXMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgICAgICJidW5k
bGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAi
eG1sLW5hbWUtdmFsaWRhdG9yIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4xIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAg
fSwKKyAgICAgICAgInh0ZW5kIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjQuMC4xIiwKKyAg
ICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAg
fSwKKyAgICAgICAgInkxOG4iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMy4yLjEiLAorICAg
ICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9
LAorICAgICAgICAieWFsbGlzdCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisg
ICAgICAgICAgImJ1bmRsZWQiOiB0cnVlLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAg
IH0sCisgICAgICAgICJ5YXJncyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjEwLjAiLAor
ICAgICAgICAgICJidW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiY2FtZWxjYXNlIjogIjEuMi4xIiwKKyAg
ICAgICAgICAgICJjbGl1aSI6ICIyLjEuMCIsCisgICAgICAgICAgICAiZGVjYW1lbGl6ZSI6ICIx
LjIuMCIsCisgICAgICAgICAgICAid2luZG93LXNpemUiOiAiMC4xLjAiCisgICAgICAgICAgfQor
ICAgICAgICB9LAorICAgICAgICAieWFyZ3MtcGFyc2VyIjogeworICAgICAgICAgICJ2ZXJzaW9u
IjogIjMuMi4wIiwKKyAgICAgICAgICAiYnVuZGxlZCI6IHRydWUsCisgICAgICAgICAgImRldiI6
IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImNhbWVsY2FzZSI6
ICIzLjAuMCIsCisgICAgICAgICAgICAibG9kYXNoLmFzc2lnbiI6ICI0LjIuMCIKKyAgICAgICAg
ICB9LAorICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICAgICAiY2FtZWxjYXNl
IjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIzLjAuMCIsCisgICAgICAgICAgICAgICJi
dW5kbGVkIjogdHJ1ZSwKKyAgICAgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJyZWFkYWJsZS1z
dHJlYW0iOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjMuMyIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVhZGFibGUtc3RyZWFtLy0vcmVhZGFibGUtc3Ry
ZWFtLTIuMy4zLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1tK3F6emNuN0tVeEVt
ZDFnTWJjaEYrWTJlSVViaWVVYXhrV3RwdHlIeXdyWDByRThRRVlxUEMwN1Z1eTRXbTMyL3hFMTZO
Y2RCY3RiOFMwWGUvNUllUT09IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAiY29yZS11dGlsLWlzIjogIjEuMC4yIiwKKyAgICAgICAgImluaGVyaXRz
IjogIjIuMC4zIiwKKyAgICAgICAgImlzYXJyYXkiOiAiMS4wLjAiLAorICAgICAgICAicHJvY2Vz
cy1uZXh0aWNrLWFyZ3MiOiAiMS4wLjciLAorICAgICAgICAic2FmZS1idWZmZXIiOiAiNS4xLjEi
LAorICAgICAgICAic3RyaW5nX2RlY29kZXIiOiAiMS4wLjMiLAorICAgICAgICAidXRpbC1kZXBy
ZWNhdGUiOiAiMS4wLjIiCisgICAgICB9CisgICAgfSwKKyAgICAicmVkdXgiOiB7CisgICAgICAi
dmVyc2lvbiI6ICIzLjcuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvcmVkdXgvLS9yZWR1eC0zLjcuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJz
aGE1MTItcE5xbmY5cTFoSTVISFpSQmtqM2JBbmdHWlcvSk1DbWV4RGxPeHc0WGFnWFkybzEzMjdu
SEg1NExvVGppUEowZ2l6b3FQRFJxV3lYLzAwZzBoRDZ3K0E9PSIsCisgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICJsb2Rhc2giOiAiNC4xNy40IiwKKyAgICAgICAgImxvZGFzaC1lcyI6ICI0
LjE3LjQiLAorICAgICAgICAibG9vc2UtZW52aWZ5IjogIjEuMy4xIiwKKyAgICAgICAgInN5bWJv
bC1vYnNlcnZhYmxlIjogIjEuMC40IgorICAgICAgfQorICAgIH0sCisgICAgInNhZmUtYnVmZmVy
IjogeworICAgICAgInZlcnNpb24iOiAiNS4xLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL3NhZmUtYnVmZmVyLy0vc2FmZS1idWZmZXItNS4xLjEudGd6
IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLWtLdk5KbjZNbTkzZ0FjeldWSmc3d0grd0dZ
V05yREhkV3ZwVW1IeUVzZ0N0SXd3bzNicVB0VjR0UjV0dVBhVWhUT28va3ZoVndkOFh3d09sbEdZ
a2JnPT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJzZXRpbW1lZGlhdGUiOiB7
CisgICAgICAidmVyc2lvbiI6ICIxLjAuNSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvc2V0aW1tZWRpYXRlLy0vc2V0aW1tZWRpYXRlLTEuMC41LnRneiIs
CisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtS1F5N0l5NHdhVUxYMStxYmczTXF0NFZ2Z29VPSIK
KyAgICB9LAorICAgICJzdHJpbmdfZGVjb2RlciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4z
IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zdHJpbmdf
ZGVjb2Rlci8tL3N0cmluZ19kZWNvZGVyLTEuMC4zLnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTUxMi00QUg2WjVmek5OQmNIKzZYRE1mQS9CVHQ4N3NreHFKbE8wbEFoM0RrZXI1elRoY0F4
RzZtS3oraUd1MzA4VUtvUFBROERjcXgvNEpodWp6bHRSYStoUT09IiwKKyAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAic2FmZS1idWZmZXIiOiAiNS4xLjEi
CisgICAgICB9CisgICAgfSwKKyAgICAic3ltYm9sLW9ic2VydmFibGUiOiB7CisgICAgICAidmVy
c2lvbiI6ICIxLjAuNCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvc3ltYm9sLW9ic2VydmFibGUvLS9zeW1ib2wtb2JzZXJ2YWJsZS0xLjAuNC50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLUtiOWhYVXFuRWh2ZGlZc2kxTFA1dkU0cW9EMD0iCisg
ICAgfSwKKyAgICAidG9kb212Yy1hcHAtY3NzIjogeworICAgICAgInZlcnNpb24iOiAiMi4xLjAi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3RvZG9tdmMt
YXBwLWNzcy8tL3RvZG9tdmMtYXBwLWNzcy0yLjEuMC50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLXR2SnhiVE9hK2k1ZmVaTkgwcVNMQlRsaVFxVT0iCisgICAgfSwKKyAgICAidWEtcGFy
c2VyLWpzIjogeworICAgICAgInZlcnNpb24iOiAiMC43LjE0IiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy91YS1wYXJzZXItanMvLS91YS1wYXJzZXItanMt
MC43LjE0LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtRVExVCtrdy9NbXdTRXBLNzZz
a0UwdUF6aDhvPSIKKyAgICB9LAorICAgICJ1dGlsLWRlcHJlY2F0ZSI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogIjEuMC4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy91dGlsLWRlcHJlY2F0ZS8tL3V0aWwtZGVwcmVjYXRlLTEuMC4yLnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtUlExTnlmcHczbk1uWXZ2UzFLS0pnVUdhRE04PSIsCisgICAgICAi
ZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInV1aWQiOiB7CisgICAgICAidmVyc2lvbiI6ICIzLjEu
MCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdXVpZC8t
L3V1aWQtMy4xLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLURJV3R6VWt3MDRN
NGszYmYxSWNwUzJ0bmdYRUwyNllVRDJNMHRNRFVwblVyejJoZ3pVQmxENTVhNEZqZExHUHZmSHhT
NnVsdUdXdmFWRXFnQmNWYStnPT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJ3
aGF0d2ctZmV0Y2giOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAuMyIsCisgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvd2hhdHdnLWZldGNoLy0vd2hhdHdnLWZl
dGNoLTIuMC4zLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtbklUc0xjOW9HSC93Qzha
T0VuUzBRaGR1SElRPSIKKyAgICB9CisgIH0KK30KZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0LXJlZHV4L3BhY2thZ2UuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVz
b3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3BhY2thZ2Uu
anNvbgppbmRleCBmZjA3YzEzNTgzNmJlMTE3OWQ2NjM2MjM2MjYwMmY0YzNhMzI4ZmViLi4xNDdm
NWJkM2Q0ODE1N2RlYWY5NmE0NGZlOTkzZmM4MDQ3NjI0ZTYxIDEwMDY0NAotLS0gYS9QZXJmb3Jt
YW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFt
cGxlcy9yZWFjdC1yZWR1eC9wYWNrYWdlLmpzb24KKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVl
ZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QtcmVk
dXgvcGFja2FnZS5qc29uCkBAIC0xLDYgKzEsNCBAQAogewotICAibmFtZSI6ICJ0b2RvbXZjIiwK
LSAgInZlcnNpb24iOiAiMC4wLjEiLAogICAicHJpdmF0ZSI6IHRydWUsCiAgICJkZXZEZXBlbmRl
bmNpZXMiOiB7CiAgICAgImVuenltZSI6ICJeMi40LjEiLApAQCAtOSwxNiArNywxNiBAQAogICB9
LAogICAiZGVwZW5kZW5jaWVzIjogewogICAgICJjbGFzc25hbWVzIjogIl4yLjIuNSIsCi0gICAg
InJlYWN0IjogIl4xNS4zLjAiLAotICAgICJyZWFjdC1kb20iOiAiXjE1LjMuMCIsCi0gICAgInJl
YWN0LXJlZHV4IjogIl40LjQuNSIsCisgICAgInJlYWN0IjogIl4xNS42LjEiLAorICAgICJyZWFj
dC1kb20iOiAiXjE1LjYuMSIsCisgICAgInJlYWN0LXJlZHV4IjogIl41LjAuNiIsCiAgICAgInJl
ZHV4IjogIl4zLjUuMiIsCiAgICAgInRvZG9tdmMtYXBwLWNzcyI6ICJeMi4wLjYiCiAgIH0sCiAg
ICJzY3JpcHRzIjogewogICAgICJzdGFydCI6ICJyZWFjdC1zY3JpcHRzIHN0YXJ0IiwKLSAgICAi
YnVpbGQiOiAicmVhY3Qtc2NyaXB0cyBidWlsZCIsCi0gICAgImVqZWN0IjogInJlYWN0LXNjcmlw
dHMgZWplY3QiLAorICAgICJidWlsZCI6ICJyZWFjdC1zY3JpcHRzIGJ1aWxkICYmIG12IGJ1aWxk
IGRpc3QiLAogICAgICJ0ZXN0IjogInJlYWN0LXNjcmlwdHMgdGVzdCIKLSAgfQorICB9LAorICAi
aG9tZXBhZ2UiOiAiLi8iCiB9CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21l
dGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC1yZWR1eC9w
dWJsaWMvaW5kZXguaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0LXJlZHV4L3B1YmxpYy9pbmRleC5o
dG1sCmluZGV4IDc4YmNjZmVlY2EyZTIyOWMyNjYwYmI3ODVhNjI4NWE0OTcwOGI4NDEuLjI4NzY2
NzgxOTVlYjIyZjZlNWJjMmQxMjc3NWM0MzhlN2IwODYzMDcgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1h
bmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1w
bGVzL3JlYWN0LXJlZHV4L3B1YmxpYy9pbmRleC5odG1sCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMv
U3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0
LXJlZHV4L3B1YmxpYy9pbmRleC5odG1sCkBAIC0zLDcgKzMsNyBAQAogICA8aGVhZD4KICAgICA8
bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CiAgICAgPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9
IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xIj4KLSAgICA8dGl0bGU+UmVkdXgg
VG9kb01WQyBFeGFtcGxlPC90aXRsZT4KKyAgICA8dGl0bGU+UmVhY3QgUmVkdXggVG9kb01WQyBl
eGFtcGxlPC90aXRsZT4KICAgPC9oZWFkPgogICA8Ym9keT4KICAgICA8ZGl2IGNsYXNzPSJ0b2Rv
YXBwIiBpZD0icm9vdCI+PC9kaXY+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVk
b21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9SRUFE
TUUubWQgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2Fy
Y2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9SRUFETUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmMxNDRlMjY4
MDY0NjhkMWI3M2U4ZDcyMjMzOGVmZDU5YmFhZGI4ZQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L1JFQURNRS5tZApAQCAtMCwwICsxLDExIEBACisjIFNwZWVkb21ldGVyIDIu
MDogUmVhY3QgVG9kb01WQyBleGFtcGxlCisKKyMjIFRlc3QgbG9jYWxseQorCisxLiBgbnBtIGlu
c3RhbGxgCisyLiBSdW4gYSBsb2NhbCBzZXJ2ZXIgZnJvbSB0aGlzIGRpcmVjdG9yeS4gKFlvdSBj
b3VsZCB1c2UgW2BucG0gaSAtZyBodHRwLXNlcnZlcmBdKGh0dHBzOi8vZ2l0aHViLmNvbS9pbmRl
eHplcm8vaHR0cC1zZXJ2ZXIpLikKKzMuIE9wZW4gdGhlIFVSTCBwb2ludGluZyB0byB0aGUgbG9j
YWwgc2VydmVyIGluIHlvdXIgd2ViIGJyb3dzZXIgb2YgY2hvaWNlLgorCisjIyBCdWlsZAorCisx
LiBgbnBtIHJ1biBidWlsZGAKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0
ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2luZGV4Lmh0
bWwgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC9pbmRleC5odG1sCmluZGV4IGYxNmJjYTZlYjI1MzI1NGNk
NTAzYmU1MzNkZTgwM2Y4YWQxN2Y1MmIuLjJkMWMwMzY4MGVlMDk4ZDUxNzhkZGIzZDA2MDM5ZGJj
OTEzM2QwMzkgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L2luZGV4Lmh0bWwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3QvaW5kZXguaHRtbApAQCAtMiw3ICsyLDcgQEAKIDxodG1sIGxhbmc9
ImVuIiBkYXRhLWZyYW1ld29yaz0icmVhY3QiPgogICAgIDxoZWFkPgogICAgICAgICA8bWV0YSBj
aGFyc2V0PSJ1dGYtOCI+Ci0gICAgICAgIDx0aXRsZT5SZWFjdCDigKIgVG9kb01WQzwvdGl0bGU+
CisgICAgICAgIDx0aXRsZT5SZWFjdCBUb2RvTVZDIGV4YW1wbGU8L3RpdGxlPgogICAgICAgICA8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Im5vZGVfbW9kdWxlcy90b2RvbXZjLWNvbW1vbi9i
YXNlLmNzcyI+CiAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ibm9kZV9tb2R1
bGVzL3RvZG9tdmMtYXBwLWNzcy9pbmRleC5jc3MiPgogICAgIDwvaGVhZD4KQEAgLTEzLDEwICsx
MywxMCBAQAogICAgICAgICAgICAgPHA+UGFydCBvZiA8YSBocmVmPSJodHRwOi8vdG9kb212Yy5j
b20iPlRvZG9NVkM8L2E+PC9wPgogICAgICAgICA8L2Zvb3Rlcj4KIAotICAgIDxzY3JpcHQgc3Jj
PSJub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9pbmRleC5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlw
dCBzcmM9Im5vZGVfbW9kdWxlcy9kaXJlY3Rvci9kaXJlY3Rvci5taW4uanMiPjwvc2NyaXB0Pgot
ICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMvcmVhY3QvZGlzdC9yZWFjdC13aXRoLWFkZG9u
cy5taW4uanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMvcmVhY3Qt
ZG9tL2Rpc3QvcmVhY3QtZG9tLm1pbi5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9ImJ1
aWxkLm1pbi5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMv
Y2xhc3NuYW1lcy9pbmRleC5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJub2Rl
X21vZHVsZXMvZGlyZWN0b3IvYnVpbGQvZGlyZWN0b3IubWluLmpzIj48L3NjcmlwdD4KKyAgICAg
ICAgPHNjcmlwdCBzcmM9Im5vZGVfbW9kdWxlcy9yZWFjdC9kaXN0L3JlYWN0LXdpdGgtYWRkb25z
Lm1pbi5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJub2RlX21vZHVsZXMvcmVh
Y3QtZG9tL2Rpc3QvcmVhY3QtZG9tLm1pbi5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3JpcHQg
c3JjPSJidWlsZC5taW4uanMiPjwvc2NyaXB0PgogICAgIDwvYm9keT4KIDwvaHRtbD4KZGlmZiAt
LWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9jbGFzc25hbWVzL3BhY2thZ2Uu
anNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJj
aGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9jbGFzc25hbWVzL3BhY2thZ2Uu
anNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDRlZWMyNmMxNDNkMmYwZjkyMmI1
OWJkNzAxZDNiYzU4YWMxNDcyNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9wYWNr
YWdlLmpzb24KKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi17Ci0gICJuYW1lIjogImNs
YXNzbmFtZXMiLAotICAidmVyc2lvbiI6ICIyLjIuNSIsCi0gICJkZXNjcmlwdGlvbiI6ICJBIHNp
bXBsZSB1dGlsaXR5IGZvciBjb25kaXRpb25hbGx5IGpvaW5pbmcgY2xhc3NOYW1lcyB0b2dldGhl
ciIsCi0gICJtYWluIjogImluZGV4LmpzIiwKLSAgImF1dGhvciI6ICJKZWQgV2F0c29uIiwKLSAg
ImxpY2Vuc2UiOiAiTUlUIiwKLSAgInJlcG9zaXRvcnkiOiB7Ci0gICAgInR5cGUiOiAiZ2l0IiwK
LSAgICAidXJsIjogImh0dHBzOi8vZ2l0aHViLmNvbS9KZWRXYXRzb24vY2xhc3NuYW1lcy5naXQi
Ci0gIH0sCi0gICJzY3JpcHRzIjogewotICAgICJiZW5jaG1hcmtzIjogIm5vZGUgLi9iZW5jaG1h
cmtzL3J1biIsCi0gICAgInVuaXQiOiAibW9jaGEgdGVzdHMvKi5qcyIsCi0gICAgInRlc3QiOiAi
bnBtIHJ1biB1bml0IgotICB9LAotICAia2V5d29yZHMiOiBbCi0gICAgInJlYWN0IiwKLSAgICAi
Y3NzIiwKLSAgICAiY2xhc3NlcyIsCi0gICAgImNsYXNzbmFtZSIsCi0gICAgImNsYXNzbmFtZXMi
LAotICAgICJ1dGlsIiwKLSAgICAidXRpbGl0eSIKLSAgXSwKLSAgImRldkRlcGVuZGVuY2llcyI6
IHsKLSAgICAiYmVuY2htYXJrIjogIl4xLjAuMCIsCi0gICAgIm1vY2hhIjogIl4yLjEuMCIKLSAg
fQotfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMv
dG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9y
L2RpcmVjdG9yLm1pbi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2Vz
L3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9kaXJlY3Rv
ci9kaXJlY3Rvci5taW4uanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5NTZhZjQw
MDk1YmMyMmM2ODg1ZjI3N2VkOWVmNWY3NDE2YmFlNGYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2Rp
cmVjdG9yL2RpcmVjdG9yLm1pbi5qcworKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotCi0K
LS8vCi0vLyBHZW5lcmF0ZWQgb24gVHVlIERlYyAxNiAyMDE0IDEyOjEzOjQ3IEdNVCswMTAwIChD
RVQpIGJ5IENoYXJsaWUgUm9iYmlucywgUGFvbG8gRnJhZ29tZW5pICYgdGhlIENvbnRyaWJ1dG9y
cyAoVXNpbmcgQ29kZXN1cmdlb24pLgotLy8gVmVyc2lvbiAxLjIuNgotLy8KLShmdW5jdGlvbihh
KXtmdW5jdGlvbiBrKGEsYixjLGQpe3ZhciBlPTAsZj0wLGc9MCxjPShjfHwiKCIpLnRvU3RyaW5n
KCksZD0oZHx8IikiKS50b1N0cmluZygpLGg7Zm9yKGg9MDtoPGEubGVuZ3RoO2grKyl7dmFyIGk9
YVtoXTtpZihpLmluZGV4T2YoYyxlKT5pLmluZGV4T2YoZCxlKXx8fmkuaW5kZXhPZihjLGUpJiYh
fmkuaW5kZXhPZihkLGUpfHwhfmkuaW5kZXhPZihjLGUpJiZ+aS5pbmRleE9mKGQsZSkpe2Y9aS5p
bmRleE9mKGMsZSksZz1pLmluZGV4T2YoZCxlKTtpZih+ZiYmIX5nfHwhfmYmJn5nKXt2YXIgaj1h
LnNsaWNlKDAsKGh8fDEpKzEpLmpvaW4oYik7YT1bal0uY29uY2F0KGEuc2xpY2UoKGh8fDEpKzEp
KX1lPShnPmY/ZzpmKSsxLGg9MH1lbHNlIGU9MH1yZXR1cm4gYX1mdW5jdGlvbiBqKGEsYil7dmFy
IGMsZD0wLGU9IiI7d2hpbGUoYz1hLnN1YnN0cihkKS5tYXRjaCgvW15cd1xkXC0gJUAmXSpcKlte
XHdcZFwtICVAJl0qLykpZD1jLmluZGV4K2NbMF0ubGVuZ3RoLGNbMF09Y1swXS5yZXBsYWNlKC9e
XCovLCIoW18uKCkhXFwgJUAmYS16QS1aMC05LV0rKSIpLGUrPWEuc3Vic3RyKDAsYy5pbmRleCkr
Y1swXTthPWUrPWEuc3Vic3RyKGQpO3ZhciBmPWEubWF0Y2goLzooW15cL10rKS9pZyksZyxoO2lm
KGYpe2g9Zi5sZW5ndGg7Zm9yKHZhciBqPTA7ajxoO2orKylnPWZbal0sZy5zbGljZSgwLDIpPT09
Ijo6Ij9hPWcuc2xpY2UoMSk6YT1hLnJlcGxhY2UoZyxpKGcsYikpfXJldHVybiBhfWZ1bmN0aW9u
IGkoYSxiLGMpe2M9YTtmb3IodmFyIGQgaW4gYilpZihiLmhhc093blByb3BlcnR5KGQpKXtjPWJb
ZF0oYSk7aWYoYyE9PWEpYnJlYWt9cmV0dXJuIGM9PT1hPyIoWy5fYS16QS1aMC05LSUoKV0rKSI6
Y31mdW5jdGlvbiBoKGEsYixjKXtpZighYS5sZW5ndGgpcmV0dXJuIGMoKTt2YXIgZD0wOyhmdW5j
dGlvbiBlKCl7YihhW2RdLGZ1bmN0aW9uKGIpe2J8fGI9PT0hMT8oYyhiKSxjPWZ1bmN0aW9uKCl7
fSk6KGQrPTEsZD09PWEubGVuZ3RoP2MoKTplKCkpfSl9KSgpfWZ1bmN0aW9uIGcoYSl7dmFyIGI9
W107Zm9yKHZhciBjPTAsZD1hLmxlbmd0aDtjPGQ7YysrKWI9Yi5jb25jYXQoYVtjXSk7cmV0dXJu
IGJ9ZnVuY3Rpb24gZihhLGIpe2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7Yys9MSlpZihiKGFbY10s
YyxhKT09PSExKXJldHVybn1mdW5jdGlvbiBjKCl7cmV0dXJuIGIuaGFzaD09PSIifHxiLmhhc2g9
PT0iIyJ9dmFyIGI9ZG9jdW1lbnQubG9jYXRpb24sZD17bW9kZToibW9kZXJuIixoYXNoOmIuaGFz
aCxoaXN0b3J5OiExLGNoZWNrOmZ1bmN0aW9uKCl7dmFyIGE9Yi5oYXNoO2EhPXRoaXMuaGFzaCYm
KHRoaXMuaGFzaD1hLHRoaXMub25IYXNoQ2hhbmdlZCgpKX0sZmlyZTpmdW5jdGlvbigpe3RoaXMu
bW9kZT09PSJtb2Rlcm4iP3RoaXMuaGlzdG9yeT09PSEwP3dpbmRvdy5vbnBvcHN0YXRlKCk6d2lu
ZG93Lm9uaGFzaGNoYW5nZSgpOnRoaXMub25IYXNoQ2hhbmdlZCgpfSxpbml0OmZ1bmN0aW9uKGEs
Yil7ZnVuY3Rpb24gZChhKXtmb3IodmFyIGI9MCxjPWUubGlzdGVuZXJzLmxlbmd0aDtiPGM7Yisr
KWUubGlzdGVuZXJzW2JdKGEpfXZhciBjPXRoaXM7dGhpcy5oaXN0b3J5PWIsZS5saXN0ZW5lcnN8
fChlLmxpc3RlbmVycz1bXSk7aWYoIm9uaGFzaGNoYW5nZSJpbiB3aW5kb3cmJihkb2N1bWVudC5k
b2N1bWVudE1vZGU9PT11bmRlZmluZWR8fGRvY3VtZW50LmRvY3VtZW50TW9kZT43KSl0aGlzLmhp
c3Rvcnk9PT0hMD9zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7d2luZG93Lm9ucG9wc3RhdGU9ZH0sNTAw
KTp3aW5kb3cub25oYXNoY2hhbmdlPWQsdGhpcy5tb2RlPSJtb2Rlcm4iO2Vsc2V7dmFyIGY9ZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7Zi5pZD0ic3RhdGUtZnJhbWUiLGYuc3R5bGUu
ZGlzcGxheT0ibm9uZSIsZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChmKSx0aGlzLndyaXRlRnJh
bWUoIiIpLCJvbnByb3BlcnR5Y2hhbmdlImluIGRvY3VtZW50JiYiYXR0YWNoRXZlbnQiaW4gZG9j
dW1lbnQmJmRvY3VtZW50LmF0dGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIixmdW5jdGlvbigp
e2V2ZW50LnByb3BlcnR5TmFtZT09PSJsb2NhdGlvbiImJmMuY2hlY2soKX0pLHdpbmRvdy5zZXRJ
bnRlcnZhbChmdW5jdGlvbigpe2MuY2hlY2soKX0sNTApLHRoaXMub25IYXNoQ2hhbmdlZD1kLHRo
aXMubW9kZT0ibGVnYWN5In1lLmxpc3RlbmVycy5wdXNoKGEpO3JldHVybiB0aGlzLm1vZGV9LGRl
c3Ryb3k6ZnVuY3Rpb24oYSl7aWYoISFlJiYhIWUubGlzdGVuZXJzKXt2YXIgYj1lLmxpc3RlbmVy
cztmb3IodmFyIGM9Yi5sZW5ndGgtMTtjPj0wO2MtLSliW2NdPT09YSYmYi5zcGxpY2UoYywxKX19
LHNldEhhc2g6ZnVuY3Rpb24oYSl7dGhpcy5tb2RlPT09ImxlZ2FjeSImJnRoaXMud3JpdGVGcmFt
ZShhKSx0aGlzLmhpc3Rvcnk9PT0hMD8od2luZG93Lmhpc3RvcnkucHVzaFN0YXRlKHt9LGRvY3Vt
ZW50LnRpdGxlLGEpLHRoaXMuZmlyZSgpKTpiLmhhc2g9YVswXT09PSIvIj9hOiIvIithO3JldHVy
biB0aGlzfSx3cml0ZUZyYW1lOmZ1bmN0aW9uKGEpe3ZhciBiPWRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJzdGF0ZS1mcmFtZSIpLGM9Yi5jb250ZW50RG9jdW1lbnR8fGIuY29udGVudFdpbmRvdy5k
b2N1bWVudDtjLm9wZW4oKSxjLndyaXRlKCI8c2NyaXB0Pl9oYXNoID0gJyIrYSsiJzsgb25sb2Fk
ID0gcGFyZW50Lmxpc3RlbmVyLnN5bmNIYXNoOzxzY3JpcHQ+IiksYy5jbG9zZSgpfSxzeW5jSGFz
aDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuX2hhc2g7YSE9Yi5oYXNoJiYoYi5oYXNoPWEpO3JldHVy
biB0aGlzfSxvbkhhc2hDaGFuZ2VkOmZ1bmN0aW9uKCl7fX0sZT1hLlJvdXRlcj1mdW5jdGlvbihh
KXtpZih0aGlzIGluc3RhbmNlb2YgZSl0aGlzLnBhcmFtcz17fSx0aGlzLnJvdXRlcz17fSx0aGlz
Lm1ldGhvZHM9WyJvbiIsIm9uY2UiLCJhZnRlciIsImJlZm9yZSJdLHRoaXMuc2NvcGU9W10sdGhp
cy5fbWV0aG9kcz17fSx0aGlzLl9pbnNlcnQ9dGhpcy5pbnNlcnQsdGhpcy5pbnNlcnQ9dGhpcy5p
bnNlcnRFeCx0aGlzLmhpc3RvcnlTdXBwb3J0PSh3aW5kb3cuaGlzdG9yeSE9bnVsbD93aW5kb3cu
aGlzdG9yeS5wdXNoU3RhdGU6bnVsbCkhPW51bGwsdGhpcy5jb25maWd1cmUoKSx0aGlzLm1vdW50
KGF8fHt9KTtlbHNlIHJldHVybiBuZXcgZShhKX07ZS5wcm90b3R5cGUuaW5pdD1mdW5jdGlvbihh
KXt2YXIgZT10aGlzLGY7dGhpcy5oYW5kbGVyPWZ1bmN0aW9uKGEpe3ZhciBiPWEmJmEubmV3VVJM
fHx3aW5kb3cubG9jYXRpb24uaGFzaCxjPWUuaGlzdG9yeT09PSEwP2UuZ2V0UGF0aCgpOmIucmVw
bGFjZSgvLiojLywiIik7ZS5kaXNwYXRjaCgib24iLGMuY2hhckF0KDApPT09Ii8iP2M6Ii8iK2Mp
fSxkLmluaXQodGhpcy5oYW5kbGVyLHRoaXMuaGlzdG9yeSksdGhpcy5oaXN0b3J5PT09ITE/Yygp
JiZhP2IuaGFzaD1hOmMoKXx8ZS5kaXNwYXRjaCgib24iLCIvIitiLmhhc2gucmVwbGFjZSgvXigj
XC98I3xcLykvLCIiKSk6KHRoaXMuY29udmVydF9oYXNoX2luX2luaXQ/KGY9YygpJiZhP2E6Yygp
P251bGw6Yi5oYXNoLnJlcGxhY2UoL14jLywiIiksZiYmd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0
YXRlKHt9LGRvY3VtZW50LnRpdGxlLGYpKTpmPXRoaXMuZ2V0UGF0aCgpLChmfHx0aGlzLnJ1bl9p
bl9pbml0PT09ITApJiZ0aGlzLmhhbmRsZXIoKSk7cmV0dXJuIHRoaXN9LGUucHJvdG90eXBlLmV4
cGxvZGU9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmhpc3Rvcnk9PT0hMD90aGlzLmdldFBhdGgoKTpi
Lmhhc2g7YS5jaGFyQXQoMSk9PT0iLyImJihhPWEuc2xpY2UoMSkpO3JldHVybiBhLnNsaWNlKDEs
YS5sZW5ndGgpLnNwbGl0KCIvIil9LGUucHJvdG90eXBlLnNldFJvdXRlPWZ1bmN0aW9uKGEsYixj
KXt2YXIgZT10aGlzLmV4cGxvZGUoKTt0eXBlb2YgYT09Im51bWJlciImJnR5cGVvZiBiPT0ic3Ry
aW5nIj9lW2FdPWI6dHlwZW9mIGM9PSJzdHJpbmciP2Uuc3BsaWNlKGEsYixzKTplPVthXSxkLnNl
dEhhc2goZS5qb2luKCIvIikpO3JldHVybiBlfSxlLnByb3RvdHlwZS5pbnNlcnRFeD1mdW5jdGlv
bihhLGIsYyxkKXthPT09Im9uY2UiJiYoYT0ib24iLGM9ZnVuY3Rpb24oYSl7dmFyIGI9ITE7cmV0
dXJuIGZ1bmN0aW9uKCl7aWYoIWIpe2I9ITA7cmV0dXJuIGEuYXBwbHkodGhpcyxhcmd1bWVudHMp
fX19KGMpKTtyZXR1cm4gdGhpcy5faW5zZXJ0KGEsYixjLGQpfSxlLnByb3RvdHlwZS5nZXRSb3V0
ZT1mdW5jdGlvbihhKXt2YXIgYj1hO2lmKHR5cGVvZiBhPT0ibnVtYmVyIiliPXRoaXMuZXhwbG9k
ZSgpW2FdO2Vsc2UgaWYodHlwZW9mIGE9PSJzdHJpbmciKXt2YXIgYz10aGlzLmV4cGxvZGUoKTti
PWMuaW5kZXhPZihhKX1lbHNlIGI9dGhpcy5leHBsb2RlKCk7cmV0dXJuIGJ9LGUucHJvdG90eXBl
LmRlc3Ryb3k9ZnVuY3Rpb24oKXtkLmRlc3Ryb3kodGhpcy5oYW5kbGVyKTtyZXR1cm4gdGhpc30s
ZS5wcm90b3R5cGUuZ2V0UGF0aD1mdW5jdGlvbigpe3ZhciBhPXdpbmRvdy5sb2NhdGlvbi5wYXRo
bmFtZTthLnN1YnN0cigwLDEpIT09Ii8iJiYoYT0iLyIrYSk7cmV0dXJuIGF9O3ZhciBsPS9cPy4q
LztlLnByb3RvdHlwZS5jb25maWd1cmU9ZnVuY3Rpb24oYSl7YT1hfHx7fTtmb3IodmFyIGI9MDti
PHRoaXMubWV0aG9kcy5sZW5ndGg7YisrKXRoaXMuX21ldGhvZHNbdGhpcy5tZXRob2RzW2JdXT0h
MDt0aGlzLnJlY3Vyc2U9YS5yZWN1cnNlfHx0aGlzLnJlY3Vyc2V8fCExLHRoaXMuYXN5bmM9YS5h
c3luY3x8ITEsdGhpcy5kZWxpbWl0ZXI9YS5kZWxpbWl0ZXJ8fCIvIix0aGlzLnN0cmljdD10eXBl
b2YgYS5zdHJpY3Q9PSJ1bmRlZmluZWQiPyEwOmEuc3RyaWN0LHRoaXMubm90Zm91bmQ9YS5ub3Rm
b3VuZCx0aGlzLnJlc291cmNlPWEucmVzb3VyY2UsdGhpcy5oaXN0b3J5PWEuaHRtbDVoaXN0b3J5
JiZ0aGlzLmhpc3RvcnlTdXBwb3J0fHwhMSx0aGlzLnJ1bl9pbl9pbml0PXRoaXMuaGlzdG9yeT09
PSEwJiZhLnJ1bl9oYW5kbGVyX2luX2luaXQhPT0hMSx0aGlzLmNvbnZlcnRfaGFzaF9pbl9pbml0
PXRoaXMuaGlzdG9yeT09PSEwJiZhLmNvbnZlcnRfaGFzaF9pbl9pbml0IT09ITEsdGhpcy5ldmVy
eT17YWZ0ZXI6YS5hZnRlcnx8bnVsbCxiZWZvcmU6YS5iZWZvcmV8fG51bGwsb246YS5vbnx8bnVs
bH07cmV0dXJuIHRoaXN9LGUucHJvdG90eXBlLnBhcmFtPWZ1bmN0aW9uKGEsYil7YVswXSE9PSI6
IiYmKGE9IjoiK2EpO3ZhciBjPW5ldyBSZWdFeHAoYSwiZyIpO3RoaXMucGFyYW1zW2FdPWZ1bmN0
aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoYyxiLnNvdXJjZXx8Yil9O3JldHVybiB0aGlzfSxlLnBy
b3RvdHlwZS5vbj1lLnByb3RvdHlwZS5yb3V0ZT1mdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpczsh
YyYmdHlwZW9mIGI9PSJmdW5jdGlvbiImJihjPWIsYj1hLGE9Im9uIik7aWYoQXJyYXkuaXNBcnJh
eShiKSlyZXR1cm4gYi5mb3JFYWNoKGZ1bmN0aW9uKGIpe2Qub24oYSxiLGMpfSk7Yi5zb3VyY2Um
JihiPWIuc291cmNlLnJlcGxhY2UoL1xcXC8vaWcsIi8iKSk7aWYoQXJyYXkuaXNBcnJheShhKSly
ZXR1cm4gYS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2Qub24oYS50b0xvd2VyQ2FzZSgpLGIsYyl9KTti
PWIuc3BsaXQobmV3IFJlZ0V4cCh0aGlzLmRlbGltaXRlcikpLGI9ayhiLHRoaXMuZGVsaW1pdGVy
KSx0aGlzLmluc2VydChhLHRoaXMuc2NvcGUuY29uY2F0KGIpLGMpfSxlLnByb3RvdHlwZS5wYXRo
PWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcyxkPXRoaXMuc2NvcGUubGVuZ3RoO2Euc291cmNlJiYo
YT1hLnNvdXJjZS5yZXBsYWNlKC9cXFwvL2lnLCIvIikpLGE9YS5zcGxpdChuZXcgUmVnRXhwKHRo
aXMuZGVsaW1pdGVyKSksYT1rKGEsdGhpcy5kZWxpbWl0ZXIpLHRoaXMuc2NvcGU9dGhpcy5zY29w
ZS5jb25jYXQoYSksYi5jYWxsKHRoaXMsdGhpcyksdGhpcy5zY29wZS5zcGxpY2UoZCxhLmxlbmd0
aCl9LGUucHJvdG90eXBlLmRpc3BhdGNoPWZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBoKCl7ZC5s
YXN0PWUuYWZ0ZXIsZC5pbnZva2UoZC5ydW5saXN0KGUpLGQsYyl9dmFyIGQ9dGhpcyxlPXRoaXMu
dHJhdmVyc2UoYSxiLnJlcGxhY2UobCwiIiksdGhpcy5yb3V0ZXMsIiIpLGY9dGhpcy5faW52b2tl
ZCxnO3RoaXMuX2ludm9rZWQ9ITA7aWYoIWV8fGUubGVuZ3RoPT09MCl7dGhpcy5sYXN0PVtdLHR5
cGVvZiB0aGlzLm5vdGZvdW5kPT0iZnVuY3Rpb24iJiZ0aGlzLmludm9rZShbdGhpcy5ub3Rmb3Vu
ZF0se21ldGhvZDphLHBhdGg6Yn0sYyk7cmV0dXJuITF9dGhpcy5yZWN1cnNlPT09ImZvcndhcmQi
JiYoZT1lLnJldmVyc2UoKSksZz10aGlzLmV2ZXJ5JiZ0aGlzLmV2ZXJ5LmFmdGVyP1t0aGlzLmV2
ZXJ5LmFmdGVyXS5jb25jYXQodGhpcy5sYXN0KTpbdGhpcy5sYXN0XTtpZihnJiZnLmxlbmd0aD4w
JiZmKXt0aGlzLmFzeW5jP3RoaXMuaW52b2tlKGcsdGhpcyxoKToodGhpcy5pbnZva2UoZyx0aGlz
KSxoKCkpO3JldHVybiEwfWgoKTtyZXR1cm4hMH0sZS5wcm90b3R5cGUuaW52b2tlPWZ1bmN0aW9u
KGEsYixjKXt2YXIgZD10aGlzLGU7dGhpcy5hc3luYz8oZT1mdW5jdGlvbihjLGQpe2lmKEFycmF5
LmlzQXJyYXkoYykpcmV0dXJuIGgoYyxlLGQpO3R5cGVvZiBjPT0iZnVuY3Rpb24iJiZjLmFwcGx5
KGIsKGEuY2FwdHVyZXN8fFtdKS5jb25jYXQoZCkpfSxoKGEsZSxmdW5jdGlvbigpe2MmJmMuYXBw
bHkoYixhcmd1bWVudHMpfSkpOihlPWZ1bmN0aW9uKGMpe2lmKEFycmF5LmlzQXJyYXkoYykpcmV0
dXJuIGYoYyxlKTtpZih0eXBlb2YgYz09ImZ1bmN0aW9uIilyZXR1cm4gYy5hcHBseShiLGEuY2Fw
dHVyZXN8fFtdKTt0eXBlb2YgYz09InN0cmluZyImJmQucmVzb3VyY2UmJmQucmVzb3VyY2VbY10u
YXBwbHkoYixhLmNhcHR1cmVzfHxbXSl9LGYoYSxlKSl9LGUucHJvdG90eXBlLnRyYXZlcnNlPWZ1
bmN0aW9uKGEsYixjLGQsZSl7ZnVuY3Rpb24gbChhKXtmdW5jdGlvbiBjKGEpe2Zvcih2YXIgYj1h
Lmxlbmd0aC0xO2I+PTA7Yi0tKUFycmF5LmlzQXJyYXkoYVtiXSk/KGMoYVtiXSksYVtiXS5sZW5n
dGg9PT0wJiZhLnNwbGljZShiLDEpKTplKGFbYl0pfHxhLnNwbGljZShiLDEpfWZ1bmN0aW9uIGIo
YSl7dmFyIGM9W107Zm9yKHZhciBkPTA7ZDxhLmxlbmd0aDtkKyspY1tkXT1BcnJheS5pc0FycmF5
KGFbZF0pP2IoYVtkXSk6YVtkXTtyZXR1cm4gY31pZighZSlyZXR1cm4gYTt2YXIgZD1iKGEpO2Qu
bWF0Y2hlZD1hLm1hdGNoZWQsZC5jYXB0dXJlcz1hLmNhcHR1cmVzLGQuYWZ0ZXI9YS5hZnRlci5m
aWx0ZXIoZSksYyhkKTtyZXR1cm4gZH12YXIgZj1bXSxnLGgsaSxqLGs7aWYoYj09PXRoaXMuZGVs
aW1pdGVyJiZjW2FdKXtqPVtbYy5iZWZvcmUsY1thXV0uZmlsdGVyKEJvb2xlYW4pXSxqLmFmdGVy
PVtjLmFmdGVyXS5maWx0ZXIoQm9vbGVhbiksai5tYXRjaGVkPSEwLGouY2FwdHVyZXM9W107cmV0
dXJuIGwoail9Zm9yKHZhciBtIGluIGMpaWYoYy5oYXNPd25Qcm9wZXJ0eShtKSYmKCF0aGlzLl9t
ZXRob2RzW21dfHx0aGlzLl9tZXRob2RzW21dJiZ0eXBlb2YgY1ttXT09Im9iamVjdCImJiFBcnJh
eS5pc0FycmF5KGNbbV0pKSl7Zz1oPWQrdGhpcy5kZWxpbWl0ZXIrbSx0aGlzLnN0cmljdHx8KGgr
PSJbIit0aGlzLmRlbGltaXRlcisiXT8iKSxpPWIubWF0Y2gobmV3IFJlZ0V4cCgiXiIraCkpO2lm
KCFpKWNvbnRpbnVlO2lmKGlbMF0mJmlbMF09PWImJmNbbV1bYV0pe2o9W1tjW21dLmJlZm9yZSxj
W21dW2FdXS5maWx0ZXIoQm9vbGVhbildLGouYWZ0ZXI9W2NbbV0uYWZ0ZXJdLmZpbHRlcihCb29s
ZWFuKSxqLm1hdGNoZWQ9ITAsai5jYXB0dXJlcz1pLnNsaWNlKDEpLHRoaXMucmVjdXJzZSYmYz09
PXRoaXMucm91dGVzJiYoai5wdXNoKFtjLmJlZm9yZSxjLm9uXS5maWx0ZXIoQm9vbGVhbikpLGou
YWZ0ZXI9ai5hZnRlci5jb25jYXQoW2MuYWZ0ZXJdLmZpbHRlcihCb29sZWFuKSkpO3JldHVybiBs
KGopfWo9dGhpcy50cmF2ZXJzZShhLGIsY1ttXSxnKTtpZihqLm1hdGNoZWQpe2oubGVuZ3RoPjAm
JihmPWYuY29uY2F0KGopKSx0aGlzLnJlY3Vyc2UmJihmLnB1c2goW2NbbV0uYmVmb3JlLGNbbV0u
b25dLmZpbHRlcihCb29sZWFuKSksai5hZnRlcj1qLmFmdGVyLmNvbmNhdChbY1ttXS5hZnRlcl0u
ZmlsdGVyKEJvb2xlYW4pKSxjPT09dGhpcy5yb3V0ZXMmJihmLnB1c2goW2MuYmVmb3JlLGMub25d
LmZpbHRlcihCb29sZWFuKSksai5hZnRlcj1qLmFmdGVyLmNvbmNhdChbYy5hZnRlcl0uZmlsdGVy
KEJvb2xlYW4pKSkpLGYubWF0Y2hlZD0hMCxmLmNhcHR1cmVzPWouY2FwdHVyZXMsZi5hZnRlcj1q
LmFmdGVyO3JldHVybiBsKGYpfX1yZXR1cm4hMX0sZS5wcm90b3R5cGUuaW5zZXJ0PWZ1bmN0aW9u
KGEsYixjLGQpe3ZhciBlLGYsZyxoLGk7Yj1iLmZpbHRlcihmdW5jdGlvbihhKXtyZXR1cm4gYSYm
YS5sZW5ndGg+MH0pLGQ9ZHx8dGhpcy5yb3V0ZXMsaT1iLnNoaWZ0KCksL1w6fFwqLy50ZXN0KGkp
JiYhL1xcZHxcXHcvLnRlc3QoaSkmJihpPWooaSx0aGlzLnBhcmFtcykpO2lmKGIubGVuZ3RoPjAp
e2RbaV09ZFtpXXx8e307cmV0dXJuIHRoaXMuaW5zZXJ0KGEsYixjLGRbaV0pfXtpZighIWl8fCEh
Yi5sZW5ndGh8fGQhPT10aGlzLnJvdXRlcyl7Zj10eXBlb2YgZFtpXSxnPUFycmF5LmlzQXJyYXko
ZFtpXSk7aWYoZFtpXSYmIWcmJmY9PSJvYmplY3QiKXtlPXR5cGVvZiBkW2ldW2FdO3N3aXRjaChl
KXtjYXNlImZ1bmN0aW9uIjpkW2ldW2FdPVtkW2ldW2FdLGNdO3JldHVybjtjYXNlIm9iamVjdCI6
ZFtpXVthXS5wdXNoKGMpO3JldHVybjtjYXNlInVuZGVmaW5lZCI6ZFtpXVthXT1jO3JldHVybn19
ZWxzZSBpZihmPT0idW5kZWZpbmVkIil7aD17fSxoW2FdPWMsZFtpXT1oO3JldHVybn10aHJvdyBu
ZXcgRXJyb3IoIkludmFsaWQgcm91dGUgY29udGV4dDogIitmKX1lPXR5cGVvZiBkW2FdO3N3aXRj
aChlKXtjYXNlImZ1bmN0aW9uIjpkW2FdPVtkW2FdLGNdO3JldHVybjtjYXNlIm9iamVjdCI6ZFth
XS5wdXNoKGMpO3JldHVybjtjYXNlInVuZGVmaW5lZCI6ZFthXT1jO3JldHVybn19fSxlLnByb3Rv
dHlwZS5leHRlbmQ9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gZShhKXtiLl9tZXRob2RzW2FdPSEwLGJb
YV09ZnVuY3Rpb24oKXt2YXIgYz1hcmd1bWVudHMubGVuZ3RoPT09MT9bYSwiIl06W2FdO2Iub24u
YXBwbHkoYixjLmNvbmNhdChBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpKSl9
fXZhciBiPXRoaXMsYz1hLmxlbmd0aCxkO2ZvcihkPTA7ZDxjO2QrKyllKGFbZF0pfSxlLnByb3Rv
dHlwZS5ydW5saXN0PWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZXZlcnkmJnRoaXMuZXZlcnkuYmVm
b3JlP1t0aGlzLmV2ZXJ5LmJlZm9yZV0uY29uY2F0KGcoYSkpOmcoYSk7dGhpcy5ldmVyeSYmdGhp
cy5ldmVyeS5vbiYmYi5wdXNoKHRoaXMuZXZlcnkub24pLGIuY2FwdHVyZXM9YS5jYXB0dXJlcyxi
LnNvdXJjZT1hLnNvdXJjZTtyZXR1cm4gYn0sZS5wcm90b3R5cGUubW91bnQ9ZnVuY3Rpb24oYSxi
KXtmdW5jdGlvbiBkKGIsZCl7dmFyIGU9YixmPWIuc3BsaXQoYy5kZWxpbWl0ZXIpLGc9dHlwZW9m
IGFbYl0saD1mWzBdPT09IiJ8fCFjLl9tZXRob2RzW2ZbMF1dLGk9aD8ib24iOmU7aCYmKGU9ZS5z
bGljZSgoZS5tYXRjaChuZXcgUmVnRXhwKCJeIitjLmRlbGltaXRlcikpfHxbIiJdKVswXS5sZW5n
dGgpLGYuc2hpZnQoKSk7aCYmZz09PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheShhW2JdKT8oZD1k
LmNvbmNhdChmKSxjLm1vdW50KGFbYl0sZCkpOihoJiYoZD1kLmNvbmNhdChlLnNwbGl0KGMuZGVs
aW1pdGVyKSksZD1rKGQsYy5kZWxpbWl0ZXIpKSxjLmluc2VydChpLGQsYVtiXSkpfWlmKCEhYSYm
dHlwZW9mIGE9PSJvYmplY3QiJiYhQXJyYXkuaXNBcnJheShhKSl7dmFyIGM9dGhpcztiPWJ8fFtd
LEFycmF5LmlzQXJyYXkoYil8fChiPWIuc3BsaXQoYy5kZWxpbWl0ZXIpKTtmb3IodmFyIGUgaW4g
YSlhLmhhc093blByb3BlcnR5KGUpJiZkKGUsYi5zbGljZSgwKSl9fX0pKHR5cGVvZiBleHBvcnRz
PT0ib2JqZWN0Ij9leHBvcnRzOndpbmRvdykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvcGFja2Fn
ZS5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL2RpcmVjdG9yL3BhY2thZ2Uu
anNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTBiZDI5NjI3MjdmNDY0ZGNiZTA5
ODE3MmE5OWZhOGRlNzZhYjliZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvZGlyZWN0b3IvcGFja2Fn
ZS5qc29uCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotewotICAibmFtZSI6ICJkaXJl
Y3RvciIsCi0gICJkZXNjcmlwdGlvbiI6ICJBIGNsaWVudCBTaWRlL1NlcnZlciBTaWRlIFJvdXRl
ciIsCi0gICJhdXRob3IiOiAiQ2hhcmxpZSBSb2JiaW5zIDxjaGFybGllLnJvYmJpbnNAZ21haWwu
Y29tPiIsCi0gICJ2ZXJzaW9uIjogIjEuMi44IiwKLSAgIm1haW50YWluZXJzIjogWwotICAgICJo
aWoxbnggPHBhb2xvQG5vZGVqaXRzdS5jb20+IiwKLSAgICAiYmVhdWd1bmRlcnNvbiA8YmVhdUBi
ZWF1Z3VuZGVyc29uLmNvbT4iCi0gIF0sCi0gICJyZXBvc2l0b3J5IjogewotICAgICJ0eXBlIjog
ImdpdCIsCi0gICAgInVybCI6ICJodHRwOi8vZ2l0aHViLmNvbS9mbGF0aXJvbi9kaXJlY3Rvci5n
aXQiCi0gIH0sCi0gICJrZXl3b3JkcyI6IFsKLSAgICAiVVJMIiwKLSAgICAicm91dGVyIiwKLSAg
ICAiaHR0cCIsCi0gICAgImNsaSIsCi0gICAgImZsYXRpcm9uIiwKLSAgICAiY2xpZW50IHNpZGUi
LAotICAgICJlbmRlciIKLSAgXSwKLSAgImRldkRlcGVuZGVuY2llcyI6IHsKLSAgICAiYXBpLWVh
c3kiOiAiMC40LngiLAotICAgICJjb2Rlc3VyZ2VvbiI6ICJodHRwczovL2dpdGh1Yi5jb20vaGlq
MW54L2NvZGVzdXJnZW9uL3RhcmJhbGwvbWFzdGVyIiwKLSAgICAiY29sb3JzIjogIjEuMC54IiwK
LSAgICAicXVuaXRqcyI6ICIxLjkueCIsCi0gICAgInJlcXVlc3QiOiAiMi40OS54IiwKLSAgICAi
dWdsaWZ5LWpzIjogIjIuNC54IiwKLSAgICAidm93cyI6ICIwLjguMCIKLSAgfSwKLSAgImVuZGVy
IjogIi4vYnVpbGQvZW5kZXIuanMiLAotICAiYnJvd3NlcmlmeSI6ICIuL2J1aWxkL2RpcmVjdG9y
IiwKLSAgIm1haW4iOiAiLi9saWIvZGlyZWN0b3IiLAotICAiZW5naW5lcyI6IHsKLSAgICAibm9k
ZSI6ICI+PSAwLjguMCIKLSAgfSwKLSAgInNjcmlwdHMiOiB7Ci0gICAgInRlc3QiOiAidm93cyB0
ZXN0L3NlcnZlci8qLyotdGVzdC5qcyAtLXNwZWMiCi0gIH0KLX0KZGlmZiAtLWdpdCBhL1BlcmZv
cm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4
YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vZGlzdC9yZWFjdC1kb20tc2VydmVy
Lm1pbi5qcyBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vZGlzdC9y
ZWFjdC1kb20tc2VydmVyLm1pbi5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDM1
YWNkNTNlYTc2MjQ4MGYyNjVmZWU0MjkxYWMyODUzMjgyZTdlNC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVy
L3Jlc291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVs
ZXMvcmVhY3QtZG9tL2Rpc3QvcmVhY3QtZG9tLXNlcnZlci5taW4uanMKKysrIC9kZXYvbnVsbApA
QCAtMSwxNSArMCwwIEBACi0vKioKLSAqIFJlYWN0RE9NU2VydmVyIHYxNS41LjQKLSAqCi0gKiBD
b3B5cmlnaHQgMjAxMy1wcmVzZW50LCBGYWNlYm9vaywgSW5jLgotICogQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSAqCi0gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBCU0Qt
c3R5bGUgbGljZW5zZSBmb3VuZCBpbiB0aGUKLSAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBk
aXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS4gQW4gYWRkaXRpb25hbCBncmFudAotICogb2Yg
cGF0ZW50IHJpZ2h0cyBjYW4gYmUgZm91bmQgaW4gdGhlIFBBVEVOVFMgZmlsZSBpbiB0aGUgc2Ft
ZSBkaXJlY3RvcnkuCi0gKgotICovCi0hZnVuY3Rpb24oZSl7aWYoIm9iamVjdCI9PXR5cGVvZiBl
eHBvcnRzJiYidW5kZWZpbmVkIiE9dHlwZW9mIG1vZHVsZSltb2R1bGUuZXhwb3J0cz1lKHJlcXVp
cmUoInJlYWN0IikpO2Vsc2UgaWYoImZ1bmN0aW9uIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFt
ZClkZWZpbmUoWyJyZWFjdCJdLGUpO2Vsc2V7dmFyIHQ7dD0idW5kZWZpbmVkIiE9dHlwZW9mIHdp
bmRvdz93aW5kb3c6InVuZGVmaW5lZCIhPXR5cGVvZiBnbG9iYWw/Z2xvYmFsOiJ1bmRlZmluZWQi
IT10eXBlb2Ygc2VsZj9zZWxmOnRoaXMsdC5SZWFjdERPTVNlcnZlcj1lKHQuUmVhY3QpfX0oZnVu
Y3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBmdW5j
dGlvbiBlKHQsbixyKXtmdW5jdGlvbiBvKGEscyl7aWYoIW5bYV0pe2lmKCF0W2FdKXt2YXIgdT0i
ZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZighcyYmdSlyZXR1cm4gdShhLCEw
KTtpZihpKXJldHVybiBpKGEsITApO3ZhciBsPW5ldyBFcnJvcigiQ2Fubm90IGZpbmQgbW9kdWxl
ICciK2ErIiciKTt0aHJvdyBsLmNvZGU9Ik1PRFVMRV9OT1RfRk9VTkQiLGx9dmFyIGM9blthXT17
ZXhwb3J0czp7fX07dFthXVswXS5jYWxsKGMuZXhwb3J0cyxmdW5jdGlvbihlKXt2YXIgbj10W2Fd
WzFdW2VdO3JldHVybiBvKG58fGUpfSxjLGMuZXhwb3J0cyxlLHQsbixyKX1yZXR1cm4gblthXS5l
eHBvcnRzfWZvcih2YXIgaT0iZnVuY3Rpb24iPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxhPTA7
YTxyLmxlbmd0aDthKyspbyhyW2FdKTtyZXR1cm4gb30oezE6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7dmFyIHI9e1Byb3BlcnRpZXM6eyJhcmlhLWN1cnJlbnQiOjAsImFyaWEtZGV0YWls
cyI6MCwiYXJpYS1kaXNhYmxlZCI6MCwiYXJpYS1oaWRkZW4iOjAsImFyaWEtaW52YWxpZCI6MCwi
YXJpYS1rZXlzaG9ydGN1dHMiOjAsImFyaWEtbGFiZWwiOjAsImFyaWEtcm9sZWRlc2NyaXB0aW9u
IjowLCJhcmlhLWF1dG9jb21wbGV0ZSI6MCwiYXJpYS1jaGVja2VkIjowLCJhcmlhLWV4cGFuZGVk
IjowLCJhcmlhLWhhc3BvcHVwIjowLCJhcmlhLWxldmVsIjowLCJhcmlhLW1vZGFsIjowLCJhcmlh
LW11bHRpbGluZSI6MCwiYXJpYS1tdWx0aXNlbGVjdGFibGUiOjAsImFyaWEtb3JpZW50YXRpb24i
OjAsImFyaWEtcGxhY2Vob2xkZXIiOjAsImFyaWEtcHJlc3NlZCI6MCwiYXJpYS1yZWFkb25seSI6
MCwiYXJpYS1yZXF1aXJlZCI6MCwiYXJpYS1zZWxlY3RlZCI6MCwiYXJpYS1zb3J0IjowLCJhcmlh
LXZhbHVlbWF4IjowLCJhcmlhLXZhbHVlbWluIjowLCJhcmlhLXZhbHVlbm93IjowLCJhcmlhLXZh
bHVldGV4dCI6MCwiYXJpYS1hdG9taWMiOjAsImFyaWEtYnVzeSI6MCwiYXJpYS1saXZlIjowLCJh
cmlhLXJlbGV2YW50IjowLCJhcmlhLWRyb3BlZmZlY3QiOjAsImFyaWEtZ3JhYmJlZCI6MCwiYXJp
YS1hY3RpdmVkZXNjZW5kYW50IjowLCJhcmlhLWNvbGNvdW50IjowLCJhcmlhLWNvbGluZGV4Ijow
LCJhcmlhLWNvbHNwYW4iOjAsImFyaWEtY29udHJvbHMiOjAsImFyaWEtZGVzY3JpYmVkYnkiOjAs
ImFyaWEtZXJyb3JtZXNzYWdlIjowLCJhcmlhLWZsb3d0byI6MCwiYXJpYS1sYWJlbGxlZGJ5Ijow
LCJhcmlhLW93bnMiOjAsImFyaWEtcG9zaW5zZXQiOjAsImFyaWEtcm93Y291bnQiOjAsImFyaWEt
cm93aW5kZXgiOjAsImFyaWEtcm93c3BhbiI6MCwiYXJpYS1zZXRzaXplIjowfSxET01BdHRyaWJ1
dGVOYW1lczp7fSxET01Qcm9wZXJ0eU5hbWVzOnt9fTt0LmV4cG9ydHM9cn0se31dLDI6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgzMiksbz1lKDEyOCksaT17Zm9jdXNET01D
b21wb25lbnQ6ZnVuY3Rpb24oKXtvKHIuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKSl9fTt0LmV4
cG9ydHM9aX0sezEyODoxMjgsMzI6MzJ9XSwzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSl7cmV0dXJuKGUuY3RybEtleXx8ZS5hbHRLZXl8fGUubWV0YUtleSkmJiEo
ZS5jdHJsS2V5JiZlLmFsdEtleSl9ZnVuY3Rpb24gbyhlKXtzd2l0Y2goZSl7Y2FzZSJ0b3BDb21w
b3NpdGlvblN0YXJ0IjpyZXR1cm4gay5jb21wb3NpdGlvblN0YXJ0O2Nhc2UidG9wQ29tcG9zaXRp
b25FbmQiOnJldHVybiBrLmNvbXBvc2l0aW9uRW5kO2Nhc2UidG9wQ29tcG9zaXRpb25VcGRhdGUi
OnJldHVybiBrLmNvbXBvc2l0aW9uVXBkYXRlfX1mdW5jdGlvbiBpKGUsdCl7cmV0dXJuInRvcEtl
eURvd24iPT09ZSYmdC5rZXlDb2RlPT09eX1mdW5jdGlvbiBhKGUsdCl7c3dpdGNoKGUpe2Nhc2Ui
dG9wS2V5VXAiOnJldHVybi0xIT09Zy5pbmRleE9mKHQua2V5Q29kZSk7Y2FzZSJ0b3BLZXlEb3du
IjpyZXR1cm4gdC5rZXlDb2RlIT09eTtjYXNlInRvcEtleVByZXNzIjpjYXNlInRvcE1vdXNlRG93
biI6Y2FzZSJ0b3BCbHVyIjpyZXR1cm4hMDtkZWZhdWx0OnJldHVybiExfX1mdW5jdGlvbiBzKGUp
e3ZhciB0PWUuZGV0YWlsO3JldHVybiJvYmplY3QiPT10eXBlb2YgdCYmImRhdGEiaW4gdD90LmRh
dGE6bnVsbH1mdW5jdGlvbiB1KGUsdCxuLHIpe3ZhciB1LGw7aWYoXz91PW8oZSk6UD9hKGUsbikm
Jih1PWsuY29tcG9zaXRpb25FbmQpOmkoZSxuKSYmKHU9ay5jb21wb3NpdGlvblN0YXJ0KSwhdSly
ZXR1cm4gbnVsbDtFJiYoUHx8dSE9PWsuY29tcG9zaXRpb25TdGFydD91PT09ay5jb21wb3NpdGlv
bkVuZCYmUCYmKGw9UC5nZXREYXRhKCkpOlA9aC5nZXRQb29sZWQocikpO3ZhciBjPW0uZ2V0UG9v
bGVkKHUsdCxuLHIpO2lmKGwpYy5kYXRhPWw7ZWxzZXt2YXIgcD1zKG4pO251bGwhPT1wJiYoYy5k
YXRhPXApfXJldHVybiBkLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXMoYyksY31mdW5jdGlv
biBsKGUsdCl7c3dpdGNoKGUpe2Nhc2UidG9wQ29tcG9zaXRpb25FbmQiOnJldHVybiBzKHQpO2Nh
c2UidG9wS2V5UHJlc3MiOnJldHVybiB0LndoaWNoIT09eD9udWxsOihUPSEwLHcpO2Nhc2UidG9w
VGV4dElucHV0Ijp2YXIgbj10LmRhdGE7cmV0dXJuIG49PT13JiZUP251bGw6bjtkZWZhdWx0OnJl
dHVybiBudWxsfX1mdW5jdGlvbiBjKGUsdCl7aWYoUCl7aWYoInRvcENvbXBvc2l0aW9uRW5kIj09
PWV8fCFfJiZhKGUsdCkpe3ZhciBuPVAuZ2V0RGF0YSgpO3JldHVybiBoLnJlbGVhc2UoUCksUD1u
dWxsLG59cmV0dXJuIG51bGx9c3dpdGNoKGUpe2Nhc2UidG9wUGFzdGUiOnJldHVybiBudWxsO2Nh
c2UidG9wS2V5UHJlc3MiOnJldHVybiB0LndoaWNoJiYhcih0KT9TdHJpbmcuZnJvbUNoYXJDb2Rl
KHQud2hpY2gpOm51bGw7Y2FzZSJ0b3BDb21wb3NpdGlvbkVuZCI6cmV0dXJuIEU/bnVsbDp0LmRh
dGE7ZGVmYXVsdDpyZXR1cm4gbnVsbH19ZnVuY3Rpb24gcChlLHQsbixyKXt2YXIgbztpZighKG89
Yj9sKGUsbik6YyhlLG4pKSlyZXR1cm4gbnVsbDt2YXIgaT12LmdldFBvb2xlZChrLmJlZm9yZUlu
cHV0LHQsbixyKTtyZXR1cm4gaS5kYXRhPW8sZC5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVz
KGkpLGl9dmFyIGQ9ZSgxOSksZj1lKDEyMCksaD1lKDIwKSxtPWUoNzgpLHY9ZSg4MiksZz1bOSwx
MywyNywzMl0seT0yMjksXz1mLmNhblVzZURPTSYmIkNvbXBvc2l0aW9uRXZlbnQiaW4gd2luZG93
LEM9bnVsbDtmLmNhblVzZURPTSYmImRvY3VtZW50TW9kZSJpbiBkb2N1bWVudCYmKEM9ZG9jdW1l
bnQuZG9jdW1lbnRNb2RlKTt2YXIgYj1mLmNhblVzZURPTSYmIlRleHRFdmVudCJpbiB3aW5kb3cm
JiFDJiYhZnVuY3Rpb24oKXt2YXIgZT13aW5kb3cub3BlcmE7cmV0dXJuIm9iamVjdCI9PXR5cGVv
ZiBlJiYiZnVuY3Rpb24iPT10eXBlb2YgZS52ZXJzaW9uJiZwYXJzZUludChlLnZlcnNpb24oKSwx
MCk8PTEyfSgpLEU9Zi5jYW5Vc2VET00mJighX3x8QyYmQz44JiZDPD0xMSkseD0zMix3PVN0cmlu
Zy5mcm9tQ2hhckNvZGUoeCksaz17YmVmb3JlSW5wdXQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5hbWVz
OntidWJibGVkOiJvbkJlZm9yZUlucHV0IixjYXB0dXJlZDoib25CZWZvcmVJbnB1dENhcHR1cmUi
fSxkZXBlbmRlbmNpZXM6WyJ0b3BDb21wb3NpdGlvbkVuZCIsInRvcEtleVByZXNzIiwidG9wVGV4
dElucHV0IiwidG9wUGFzdGUiXX0sY29tcG9zaXRpb25FbmQ6e3BoYXNlZFJlZ2lzdHJhdGlvbk5h
bWVzOntidWJibGVkOiJvbkNvbXBvc2l0aW9uRW5kIixjYXB0dXJlZDoib25Db21wb3NpdGlvbkVu
ZENhcHR1cmUifSxkZXBlbmRlbmNpZXM6WyJ0b3BCbHVyIiwidG9wQ29tcG9zaXRpb25FbmQiLCJ0
b3BLZXlEb3duIiwidG9wS2V5UHJlc3MiLCJ0b3BLZXlVcCIsInRvcE1vdXNlRG93biJdfSxjb21w
b3NpdGlvblN0YXJ0OntwaGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDoib25Db21wb3Np
dGlvblN0YXJ0IixjYXB0dXJlZDoib25Db21wb3NpdGlvblN0YXJ0Q2FwdHVyZSJ9LGRlcGVuZGVu
Y2llczpbInRvcEJsdXIiLCJ0b3BDb21wb3NpdGlvblN0YXJ0IiwidG9wS2V5RG93biIsInRvcEtl
eVByZXNzIiwidG9wS2V5VXAiLCJ0b3BNb3VzZURvd24iXX0sY29tcG9zaXRpb25VcGRhdGU6e3Bo
YXNlZFJlZ2lzdHJhdGlvbk5hbWVzOntidWJibGVkOiJvbkNvbXBvc2l0aW9uVXBkYXRlIixjYXB0
dXJlZDoib25Db21wb3NpdGlvblVwZGF0ZUNhcHR1cmUifSxkZXBlbmRlbmNpZXM6WyJ0b3BCbHVy
IiwidG9wQ29tcG9zaXRpb25VcGRhdGUiLCJ0b3BLZXlEb3duIiwidG9wS2V5UHJlc3MiLCJ0b3BL
ZXlVcCIsInRvcE1vdXNlRG93biJdfX0sVD0hMSxQPW51bGwsUz17ZXZlbnRUeXBlczprLGV4dHJh
Y3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuW3UoZSx0LG4scikscChlLHQsbixyKV19
fTt0LmV4cG9ydHM9U30sezEyMDoxMjAsMTk6MTksMjA6MjAsNzg6NzgsODI6ODJ9XSw0OltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gZSt0LmNoYXJB
dCgwKS50b1VwcGVyQ2FzZSgpK3Quc3Vic3RyaW5nKDEpfXZhciBvPXthbmltYXRpb25JdGVyYXRp
b25Db3VudDohMCxib3JkZXJJbWFnZU91dHNldDohMCxib3JkZXJJbWFnZVNsaWNlOiEwLGJvcmRl
ckltYWdlV2lkdGg6ITAsYm94RmxleDohMCxib3hGbGV4R3JvdXA6ITAsYm94T3JkaW5hbEdyb3Vw
OiEwLGNvbHVtbkNvdW50OiEwLGZsZXg6ITAsZmxleEdyb3c6ITAsZmxleFBvc2l0aXZlOiEwLGZs
ZXhTaHJpbms6ITAsZmxleE5lZ2F0aXZlOiEwLGZsZXhPcmRlcjohMCxncmlkUm93OiEwLGdyaWRD
b2x1bW46ITAsZm9udFdlaWdodDohMCxsaW5lQ2xhbXA6ITAsbGluZUhlaWdodDohMCxvcGFjaXR5
OiEwLG9yZGVyOiEwLG9ycGhhbnM6ITAsdGFiU2l6ZTohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpv
b206ITAsZmlsbE9wYWNpdHk6ITAsZmxvb2RPcGFjaXR5OiEwLHN0b3BPcGFjaXR5OiEwLHN0cm9r
ZURhc2hhcnJheTohMCxzdHJva2VEYXNob2Zmc2V0OiEwLHN0cm9rZU1pdGVybGltaXQ6ITAsc3Ry
b2tlT3BhY2l0eTohMCxzdHJva2VXaWR0aDohMH0saT1bIldlYmtpdCIsIm1zIiwiTW96IiwiTyJd
O09iamVjdC5rZXlzKG8pLmZvckVhY2goZnVuY3Rpb24oZSl7aS5mb3JFYWNoKGZ1bmN0aW9uKHQp
e29bcih0LGUpXT1vW2VdfSl9KTt2YXIgYT17YmFja2dyb3VuZDp7YmFja2dyb3VuZEF0dGFjaG1l
bnQ6ITAsYmFja2dyb3VuZENvbG9yOiEwLGJhY2tncm91bmRJbWFnZTohMCxiYWNrZ3JvdW5kUG9z
aXRpb25YOiEwLGJhY2tncm91bmRQb3NpdGlvblk6ITAsYmFja2dyb3VuZFJlcGVhdDohMH0sYmFj
a2dyb3VuZFBvc2l0aW9uOntiYWNrZ3JvdW5kUG9zaXRpb25YOiEwLGJhY2tncm91bmRQb3NpdGlv
blk6ITB9LGJvcmRlcjp7Ym9yZGVyV2lkdGg6ITAsYm9yZGVyU3R5bGU6ITAsYm9yZGVyQ29sb3I6
ITB9LGJvcmRlckJvdHRvbTp7Ym9yZGVyQm90dG9tV2lkdGg6ITAsYm9yZGVyQm90dG9tU3R5bGU6
ITAsYm9yZGVyQm90dG9tQ29sb3I6ITB9LGJvcmRlckxlZnQ6e2JvcmRlckxlZnRXaWR0aDohMCxi
b3JkZXJMZWZ0U3R5bGU6ITAsYm9yZGVyTGVmdENvbG9yOiEwfSxib3JkZXJSaWdodDp7Ym9yZGVy
UmlnaHRXaWR0aDohMCxib3JkZXJSaWdodFN0eWxlOiEwLGJvcmRlclJpZ2h0Q29sb3I6ITB9LGJv
cmRlclRvcDp7Ym9yZGVyVG9wV2lkdGg6ITAsYm9yZGVyVG9wU3R5bGU6ITAsYm9yZGVyVG9wQ29s
b3I6ITB9LGZvbnQ6e2ZvbnRTdHlsZTohMCxmb250VmFyaWFudDohMCxmb250V2VpZ2h0OiEwLGZv
bnRTaXplOiEwLGxpbmVIZWlnaHQ6ITAsZm9udEZhbWlseTohMH0sb3V0bGluZTp7b3V0bGluZVdp
ZHRoOiEwLG91dGxpbmVTdHlsZTohMCxvdXRsaW5lQ29sb3I6ITB9fSxzPXtpc1VuaXRsZXNzTnVt
YmVyOm8sc2hvcnRoYW5kUHJvcGVydHlFeHBhbnNpb25zOmF9O3QuZXhwb3J0cz1zfSx7fV0sNTpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj1lKDQpLG89ZSgxMjApLGk9KGUoNTcp
LGUoMTIyKSxlKDk0KSksYT1lKDEzMykscz1lKDEzNyksdT0oZSgxMzkpLHMoZnVuY3Rpb24oZSl7
cmV0dXJuIGEoZSl9KSksbD0hMSxjPSJjc3NGbG9hdCI7aWYoby5jYW5Vc2VET00pe3ZhciBwPWRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpLnN0eWxlO3RyeXtwLmZvbnQ9IiJ9Y2F0Y2goZSl7
bD0hMH12b2lkIDA9PT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuY3NzRmxvYXQmJihj
PSJzdHlsZUZsb2F0Iil9dmFyIGQ9e2NyZWF0ZU1hcmt1cEZvclN0eWxlczpmdW5jdGlvbihlLHQp
e3ZhciBuPSIiO2Zvcih2YXIgciBpbiBlKWlmKGUuaGFzT3duUHJvcGVydHkocikpe3ZhciBvPWVb
cl07bnVsbCE9byYmKG4rPXUocikrIjoiLG4rPWkocixvLHQpKyI7Iil9cmV0dXJuIG58fG51bGx9
LHNldFZhbHVlRm9yU3R5bGVzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgbz1lLnN0eWxlO2Zvcih2YXIg
YSBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkoYSkpe3ZhciBzPWkoYSx0W2FdLG4pO2lmKCJmbG9h
dCIhPT1hJiYiY3NzRmxvYXQiIT09YXx8KGE9YykscylvW2FdPXM7ZWxzZXt2YXIgdT1sJiZyLnNo
b3J0aGFuZFByb3BlcnR5RXhwYW5zaW9uc1thXTtpZih1KWZvcih2YXIgcCBpbiB1KW9bcF09IiI7
ZWxzZSBvW2FdPSIifX19fTt0LmV4cG9ydHM9ZH0sezEyMDoxMjAsMTIyOjEyMiwxMzM6MTMzLDEz
NzoxMzcsMTM5OjEzOSw0OjQsNTc6NTcsOTQ6OTR9XSw2OltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlw
ZUVycm9yKCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX12YXIgbz1lKDExMCks
aT1lKDI0KSxhPShlKDEzNCksZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe3IodGhpcyxlKSx0aGlz
Ll9jYWxsYmFja3M9bnVsbCx0aGlzLl9jb250ZXh0cz1udWxsLHRoaXMuX2FyZz10fXJldHVybiBl
LnByb3RvdHlwZS5lbnF1ZXVlPWZ1bmN0aW9uKGUsdCl7dGhpcy5fY2FsbGJhY2tzPXRoaXMuX2Nh
bGxiYWNrc3x8W10sdGhpcy5fY2FsbGJhY2tzLnB1c2goZSksdGhpcy5fY29udGV4dHM9dGhpcy5f
Y29udGV4dHN8fFtdLHRoaXMuX2NvbnRleHRzLnB1c2godCl9LGUucHJvdG90eXBlLm5vdGlmeUFs
bD1mdW5jdGlvbigpe3ZhciBlPXRoaXMuX2NhbGxiYWNrcyx0PXRoaXMuX2NvbnRleHRzLG49dGhp
cy5fYXJnO2lmKGUmJnQpe2UubGVuZ3RoIT09dC5sZW5ndGgmJm8oIjI0IiksdGhpcy5fY2FsbGJh
Y2tzPW51bGwsdGhpcy5fY29udGV4dHM9bnVsbDtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyll
W3JdLmNhbGwodFtyXSxuKTtlLmxlbmd0aD0wLHQubGVuZ3RoPTB9fSxlLnByb3RvdHlwZS5jaGVj
a3BvaW50PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2NhbGxiYWNrcz90aGlzLl9jYWxsYmFja3Mu
bGVuZ3RoOjB9LGUucHJvdG90eXBlLnJvbGxiYWNrPWZ1bmN0aW9uKGUpe3RoaXMuX2NhbGxiYWNr
cyYmdGhpcy5fY29udGV4dHMmJih0aGlzLl9jYWxsYmFja3MubGVuZ3RoPWUsdGhpcy5fY29udGV4
dHMubGVuZ3RoPWUpfSxlLnByb3RvdHlwZS5yZXNldD1mdW5jdGlvbigpe3RoaXMuX2NhbGxiYWNr
cz1udWxsLHRoaXMuX2NvbnRleHRzPW51bGx9LGUucHJvdG90eXBlLmRlc3RydWN0b3I9ZnVuY3Rp
b24oKXt0aGlzLnJlc2V0KCl9LGV9KCkpO3QuZXhwb3J0cz1pLmFkZFBvb2xpbmdUbyhhKX0sezEx
MDoxMTAsMTM0OjEzNCwyNDoyNH1dLDc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlKXt2YXIgdD1lLm5vZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0
dXJuInNlbGVjdCI9PT10fHwiaW5wdXQiPT09dCYmImZpbGUiPT09ZS50eXBlfWZ1bmN0aW9uIG8o
ZSl7dmFyIHQ9dy5nZXRQb29sZWQoUy5jaGFuZ2UsTSxlLGsoZSkpO0MuYWNjdW11bGF0ZVR3b1Bo
YXNlRGlzcGF0Y2hlcyh0KSx4LmJhdGNoZWRVcGRhdGVzKGksdCl9ZnVuY3Rpb24gaShlKXtfLmVu
cXVldWVFdmVudHMoZSksXy5wcm9jZXNzRXZlbnRRdWV1ZSghMSl9ZnVuY3Rpb24gYShlLHQpe049
ZSxNPXQsTi5hdHRhY2hFdmVudCgib25jaGFuZ2UiLG8pfWZ1bmN0aW9uIHMoKXtOJiYoTi5kZXRh
Y2hFdmVudCgib25jaGFuZ2UiLG8pLE49bnVsbCxNPW51bGwpfWZ1bmN0aW9uIHUoZSx0KXtpZigi
dG9wQ2hhbmdlIj09PWUpcmV0dXJuIHR9ZnVuY3Rpb24gbChlLHQsbil7InRvcEZvY3VzIj09PWU/
KHMoKSxhKHQsbikpOiJ0b3BCbHVyIj09PWUmJnMoKX1mdW5jdGlvbiBjKGUsdCl7Tj1lLE09dCxP
PWUudmFsdWUsST1PYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGUuY29uc3RydWN0b3Iu
cHJvdG90eXBlLCJ2YWx1ZSIpLE9iamVjdC5kZWZpbmVQcm9wZXJ0eShOLCJ2YWx1ZSIsRCksTi5h
dHRhY2hFdmVudD9OLmF0dGFjaEV2ZW50KCJvbnByb3BlcnR5Y2hhbmdlIixkKTpOLmFkZEV2ZW50
TGlzdGVuZXIoInByb3BlcnR5Y2hhbmdlIixkLCExKX1mdW5jdGlvbiBwKCl7TiYmKGRlbGV0ZSBO
LnZhbHVlLE4uZGV0YWNoRXZlbnQ/Ti5kZXRhY2hFdmVudCgib25wcm9wZXJ0eWNoYW5nZSIsZCk6
Ti5yZW1vdmVFdmVudExpc3RlbmVyKCJwcm9wZXJ0eWNoYW5nZSIsZCwhMSksTj1udWxsLE09bnVs
bCxPPW51bGwsST1udWxsKX1mdW5jdGlvbiBkKGUpe2lmKCJ2YWx1ZSI9PT1lLnByb3BlcnR5TmFt
ZSl7dmFyIHQ9ZS5zcmNFbGVtZW50LnZhbHVlO3QhPT1PJiYoTz10LG8oZSkpfX1mdW5jdGlvbiBm
KGUsdCl7aWYoInRvcElucHV0Ij09PWUpcmV0dXJuIHR9ZnVuY3Rpb24gaChlLHQsbil7InRvcEZv
Y3VzIj09PWU/KHAoKSxjKHQsbikpOiJ0b3BCbHVyIj09PWUmJnAoKX1mdW5jdGlvbiBtKGUsdCl7
aWYoKCJ0b3BTZWxlY3Rpb25DaGFuZ2UiPT09ZXx8InRvcEtleVVwIj09PWV8fCJ0b3BLZXlEb3du
Ij09PWUpJiZOJiZOLnZhbHVlIT09TylyZXR1cm4gTz1OLnZhbHVlLE19ZnVuY3Rpb24gdihlKXty
ZXR1cm4gZS5ub2RlTmFtZSYmImlucHV0Ij09PWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSYmKCJj
aGVja2JveCI9PT1lLnR5cGV8fCJyYWRpbyI9PT1lLnR5cGUpfWZ1bmN0aW9uIGcoZSx0KXtpZigi
dG9wQ2xpY2siPT09ZSlyZXR1cm4gdH1mdW5jdGlvbiB5KGUsdCl7aWYobnVsbCE9ZSl7dmFyIG49
ZS5fd3JhcHBlclN0YXRlfHx0Ll93cmFwcGVyU3RhdGU7aWYobiYmbi5jb250cm9sbGVkJiYibnVt
YmVyIj09PXQudHlwZSl7dmFyIHI9IiIrdC52YWx1ZTt0LmdldEF0dHJpYnV0ZSgidmFsdWUiKSE9
PXImJnQuc2V0QXR0cmlidXRlKCJ2YWx1ZSIscil9fX12YXIgXz1lKDE2KSxDPWUoMTkpLGI9ZSgx
MjApLEU9ZSgzMikseD1lKDcxKSx3PWUoODApLGs9ZSgxMDEpLFQ9ZSgxMDcpLFA9ZSgxMDgpLFM9
e2NoYW5nZTp7cGhhc2VkUmVnaXN0cmF0aW9uTmFtZXM6e2J1YmJsZWQ6Im9uQ2hhbmdlIixjYXB0
dXJlZDoib25DaGFuZ2VDYXB0dXJlIn0sZGVwZW5kZW5jaWVzOlsidG9wQmx1ciIsInRvcENoYW5n
ZSIsInRvcENsaWNrIiwidG9wRm9jdXMiLCJ0b3BJbnB1dCIsInRvcEtleURvd24iLCJ0b3BLZXlV
cCIsInRvcFNlbGVjdGlvbkNoYW5nZSJdfX0sTj1udWxsLE09bnVsbCxPPW51bGwsST1udWxsLFI9
ITE7Yi5jYW5Vc2VET00mJihSPVQoImNoYW5nZSIpJiYoIWRvY3VtZW50LmRvY3VtZW50TW9kZXx8
ZG9jdW1lbnQuZG9jdW1lbnRNb2RlPjgpKTt2YXIgQT0hMTtiLmNhblVzZURPTSYmKEE9VCgiaW5w
dXQiKSYmKCFkb2N1bWVudC5kb2N1bWVudE1vZGV8fGRvY3VtZW50LmRvY3VtZW50TW9kZT4xMSkp
O3ZhciBEPXtnZXQ6ZnVuY3Rpb24oKXtyZXR1cm4gSS5nZXQuY2FsbCh0aGlzKX0sc2V0OmZ1bmN0
aW9uKGUpe089IiIrZSxJLnNldC5jYWxsKHRoaXMsZSl9fSxMPXtldmVudFR5cGVzOlMsZXh0cmFj
dEV2ZW50czpmdW5jdGlvbihlLHQsbixvKXt2YXIgaSxhLHM9dD9FLmdldE5vZGVGcm9tSW5zdGFu
Y2UodCk6d2luZG93O2lmKHIocyk/Uj9pPXU6YT1sOlAocyk/QT9pPWY6KGk9bSxhPWgpOnYocykm
JihpPWcpLGkpe3ZhciBjPWkoZSx0KTtpZihjKXt2YXIgcD13LmdldFBvb2xlZChTLmNoYW5nZSxj
LG4sbyk7cmV0dXJuIHAudHlwZT0iY2hhbmdlIixDLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNo
ZXMocCkscH19YSYmYShlLHMsdCksInRvcEJsdXIiPT09ZSYmeSh0LHMpfX07dC5leHBvcnRzPUx9
LHsxMDE6MTAxLDEwNzoxMDcsMTA4OjEwOCwxMjA6MTIwLDE2OjE2LDE5OjE5LDMyOjMyLDcxOjcx
LDgwOjgwfV0sODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7
cmV0dXJuIEFycmF5LmlzQXJyYXkodCkmJih0PXRbMV0pLHQ/dC5uZXh0U2libGluZzplLmZpcnN0
Q2hpbGR9ZnVuY3Rpb24gbyhlLHQsbil7Yy5pbnNlcnRUcmVlQmVmb3JlKGUsdCxuKX1mdW5jdGlv
biBpKGUsdCxuKXtBcnJheS5pc0FycmF5KHQpP3MoZSx0WzBdLHRbMV0sbik6bShlLHQsbil9ZnVu
Y3Rpb24gYShlLHQpe2lmKEFycmF5LmlzQXJyYXkodCkpe3ZhciBuPXRbMV07dD10WzBdLHUoZSx0
LG4pLGUucmVtb3ZlQ2hpbGQobil9ZS5yZW1vdmVDaGlsZCh0KX1mdW5jdGlvbiBzKGUsdCxuLHIp
e2Zvcih2YXIgbz10Ozspe3ZhciBpPW8ubmV4dFNpYmxpbmc7aWYobShlLG8sciksbz09PW4pYnJl
YWs7bz1pfX1mdW5jdGlvbiB1KGUsdCxuKXtmb3IoOzspe3ZhciByPXQubmV4dFNpYmxpbmc7aWYo
cj09PW4pYnJlYWs7ZS5yZW1vdmVDaGlsZChyKX19ZnVuY3Rpb24gbChlLHQsbil7dmFyIHI9ZS5w
YXJlbnROb2RlLG89ZS5uZXh0U2libGluZztvPT09dD9uJiZtKHIsZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUobiksbyk6bj8oaChvLG4pLHUocixvLHQpKTp1KHIsZSx0KX12YXIgYz1lKDkpLHA9ZSgx
MyksZD0oZSgzMiksZSg1NyksZSg5MykpLGY9ZSgxMTEpLGg9ZSgxMTIpLG09ZChmdW5jdGlvbihl
LHQsbil7ZS5pbnNlcnRCZWZvcmUodCxuKX0pLHY9cC5kYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0
aE1hcmt1cCxnPXtkYW5nZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cDp2LHJlcGxhY2VEZWxp
bWl0ZWRUZXh0OmwscHJvY2Vzc1VwZGF0ZXM6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MDtuPHQu
bGVuZ3RoO24rKyl7dmFyIHM9dFtuXTtzd2l0Y2gocy50eXBlKXtjYXNlIklOU0VSVF9NQVJLVVAi
Om8oZSxzLmNvbnRlbnQscihlLHMuYWZ0ZXJOb2RlKSk7YnJlYWs7Y2FzZSJNT1ZFX0VYSVNUSU5H
IjppKGUscy5mcm9tTm9kZSxyKGUscy5hZnRlck5vZGUpKTticmVhaztjYXNlIlNFVF9NQVJLVVAi
OmYoZSxzLmNvbnRlbnQpO2JyZWFrO2Nhc2UiVEVYVF9DT05URU5UIjpoKGUscy5jb250ZW50KTti
cmVhaztjYXNlIlJFTU9WRV9OT0RFIjphKGUscy5mcm9tTm9kZSl9fX19O3QuZXhwb3J0cz1nfSx7
MTExOjExMSwxMTI6MTEyLDEzOjEzLDMyOjMyLDU3OjU3LDk6OSw5Mzo5M31dLDk6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZihoKXt2YXIgdD1lLm5vZGUsbj1l
LmNoaWxkcmVuO2lmKG4ubGVuZ3RoKWZvcih2YXIgcj0wO3I8bi5sZW5ndGg7cisrKW0odCxuW3Jd
LG51bGwpO2Vsc2UgbnVsbCE9ZS5odG1sP3AodCxlLmh0bWwpOm51bGwhPWUudGV4dCYmZih0LGUu
dGV4dCl9fWZ1bmN0aW9uIG8oZSx0KXtlLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKHQubm9kZSxl
KSxyKHQpfWZ1bmN0aW9uIGkoZSx0KXtoP2UuY2hpbGRyZW4ucHVzaCh0KTplLm5vZGUuYXBwZW5k
Q2hpbGQodC5ub2RlKX1mdW5jdGlvbiBhKGUsdCl7aD9lLmh0bWw9dDpwKGUubm9kZSx0KX1mdW5j
dGlvbiBzKGUsdCl7aD9lLnRleHQ9dDpmKGUubm9kZSx0KX1mdW5jdGlvbiB1KCl7cmV0dXJuIHRo
aXMubm9kZS5ub2RlTmFtZX1mdW5jdGlvbiBsKGUpe3JldHVybntub2RlOmUsY2hpbGRyZW46W10s
aHRtbDpudWxsLHRleHQ6bnVsbCx0b1N0cmluZzp1fX12YXIgYz1lKDEwKSxwPWUoMTExKSxkPWUo
OTMpLGY9ZSgxMTIpLGg9InVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudCYmIm51bWJlciI9PXR5
cGVvZiBkb2N1bWVudC5kb2N1bWVudE1vZGV8fCJ1bmRlZmluZWQiIT10eXBlb2YgbmF2aWdhdG9y
JiYic3RyaW5nIj09dHlwZW9mIG5hdmlnYXRvci51c2VyQWdlbnQmJi9cYkVkZ2VcL1xkLy50ZXN0
KG5hdmlnYXRvci51c2VyQWdlbnQpLG09ZChmdW5jdGlvbihlLHQsbil7MTE9PT10Lm5vZGUubm9k
ZVR5cGV8fDE9PT10Lm5vZGUubm9kZVR5cGUmJiJvYmplY3QiPT09dC5ub2RlLm5vZGVOYW1lLnRv
TG93ZXJDYXNlKCkmJihudWxsPT10Lm5vZGUubmFtZXNwYWNlVVJJfHx0Lm5vZGUubmFtZXNwYWNl
VVJJPT09Yy5odG1sKT8ocih0KSxlLmluc2VydEJlZm9yZSh0Lm5vZGUsbikpOihlLmluc2VydEJl
Zm9yZSh0Lm5vZGUsbikscih0KSl9KTtsLmluc2VydFRyZWVCZWZvcmU9bSxsLnJlcGxhY2VDaGls
ZFdpdGhUcmVlPW8sbC5xdWV1ZUNoaWxkPWksbC5xdWV1ZUhUTUw9YSxsLnF1ZXVlVGV4dD1zLHQu
ZXhwb3J0cz1sfSx7MTA6MTAsMTExOjExMSwxMTI6MTEyLDkzOjkzfV0sMTA6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7dmFyIHI9e2h0bWw6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0
bWwiLG1hdGhtbDoiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTCIsc3ZnOiJodHRw
Oi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9O3QuZXhwb3J0cz1yfSx7fV0sMTE6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybihlJnQpPT09dH12YXIgbz1l
KDExMCksaT0oZSgxMzQpLHtNVVNUX1VTRV9QUk9QRVJUWToxLEhBU19CT09MRUFOX1ZBTFVFOjQs
SEFTX05VTUVSSUNfVkFMVUU6OCxIQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRToyNCxIQVNfT1ZF
UkxPQURFRF9CT09MRUFOX1ZBTFVFOjMyLGluamVjdERPTVByb3BlcnR5Q29uZmlnOmZ1bmN0aW9u
KGUpe3ZhciB0PWksbj1lLlByb3BlcnRpZXN8fHt9LGE9ZS5ET01BdHRyaWJ1dGVOYW1lc3BhY2Vz
fHx7fSx1PWUuRE9NQXR0cmlidXRlTmFtZXN8fHt9LGw9ZS5ET01Qcm9wZXJ0eU5hbWVzfHx7fSxj
PWUuRE9NTXV0YXRpb25NZXRob2RzfHx7fTtlLmlzQ3VzdG9tQXR0cmlidXRlJiZzLl9pc0N1c3Rv
bUF0dHJpYnV0ZUZ1bmN0aW9ucy5wdXNoKGUuaXNDdXN0b21BdHRyaWJ1dGUpO2Zvcih2YXIgcCBp
biBuKXtzLnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkocCkmJm8oIjQ4IixwKTt2YXIgZD1wLnRv
TG93ZXJDYXNlKCksZj1uW3BdLGg9e2F0dHJpYnV0ZU5hbWU6ZCxhdHRyaWJ1dGVOYW1lc3BhY2U6
bnVsbCxwcm9wZXJ0eU5hbWU6cCxtdXRhdGlvbk1ldGhvZDpudWxsLG11c3RVc2VQcm9wZXJ0eTpy
KGYsdC5NVVNUX1VTRV9QUk9QRVJUWSksaGFzQm9vbGVhblZhbHVlOnIoZix0LkhBU19CT09MRUFO
X1ZBTFVFKSxoYXNOdW1lcmljVmFsdWU6cihmLHQuSEFTX05VTUVSSUNfVkFMVUUpLGhhc1Bvc2l0
aXZlTnVtZXJpY1ZhbHVlOnIoZix0LkhBU19QT1NJVElWRV9OVU1FUklDX1ZBTFVFKSxoYXNPdmVy
bG9hZGVkQm9vbGVhblZhbHVlOnIoZix0LkhBU19PVkVSTE9BREVEX0JPT0xFQU5fVkFMVUUpfTtp
ZihoLmhhc0Jvb2xlYW5WYWx1ZStoLmhhc051bWVyaWNWYWx1ZStoLmhhc092ZXJsb2FkZWRCb29s
ZWFuVmFsdWU8PTF8fG8oIjUwIixwKSx1Lmhhc093blByb3BlcnR5KHApKXt2YXIgbT11W3BdO2gu
YXR0cmlidXRlTmFtZT1tfWEuaGFzT3duUHJvcGVydHkocCkmJihoLmF0dHJpYnV0ZU5hbWVzcGFj
ZT1hW3BdKSxsLmhhc093blByb3BlcnR5KHApJiYoaC5wcm9wZXJ0eU5hbWU9bFtwXSksYy5oYXNP
d25Qcm9wZXJ0eShwKSYmKGgubXV0YXRpb25NZXRob2Q9Y1twXSkscy5wcm9wZXJ0aWVzW3BdPWh9
fX0pLGE9IjpBLVpfYS16XFx1MDBDMC1cXHUwMEQ2XFx1MDBEOC1cXHUwMEY2XFx1MDBGOC1cXHUw
MkZGXFx1MDM3MC1cXHUwMzdEXFx1MDM3Ri1cXHUxRkZGXFx1MjAwQy1cXHUyMDBEXFx1MjA3MC1c
XHUyMThGXFx1MkMwMC1cXHUyRkVGXFx1MzAwMS1cXHVEN0ZGXFx1RjkwMC1cXHVGRENGXFx1RkRG
MC1cXHVGRkZEIixzPXtJRF9BVFRSSUJVVEVfTkFNRToiZGF0YS1yZWFjdGlkIixST09UX0FUVFJJ
QlVURV9OQU1FOiJkYXRhLXJlYWN0cm9vdCIsQVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUjphLEFU
VFJJQlVURV9OQU1FX0NIQVI6YSsiXFwtLjAtOVxcdTAwQjdcXHUwMzAwLVxcdTAzNkZcXHUyMDNG
LVxcdTIwNDAiLHByb3BlcnRpZXM6e30sZ2V0UG9zc2libGVTdGFuZGFyZE5hbWU6bnVsbCxfaXND
dXN0b21BdHRyaWJ1dGVGdW5jdGlvbnM6W10saXNDdXN0b21BdHRyaWJ1dGU6ZnVuY3Rpb24oZSl7
Zm9yKHZhciB0PTA7dDxzLl9pc0N1c3RvbUF0dHJpYnV0ZUZ1bmN0aW9ucy5sZW5ndGg7dCsrKWlm
KCgwLHMuX2lzQ3VzdG9tQXR0cmlidXRlRnVuY3Rpb25zW3RdKShlKSlyZXR1cm4hMDtyZXR1cm4h
MX0saW5qZWN0aW9uOml9O3QuZXhwb3J0cz1zfSx7MTEwOjExMCwxMzQ6MTM0fV0sMTI6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4hIWwuaGFzT3duUHJv
cGVydHkoZSl8fCF1Lmhhc093blByb3BlcnR5KGUpJiYocy50ZXN0KGUpPyhsW2VdPSEwLCEwKToo
dVtlXT0hMCwhMSkpfWZ1bmN0aW9uIG8oZSx0KXtyZXR1cm4gbnVsbD09dHx8ZS5oYXNCb29sZWFu
VmFsdWUmJiF0fHxlLmhhc051bWVyaWNWYWx1ZSYmaXNOYU4odCl8fGUuaGFzUG9zaXRpdmVOdW1l
cmljVmFsdWUmJnQ8MXx8ZS5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlJiYhMT09PXR9dmFyIGk9
ZSgxMSksYT0oZSgzMiksZSg1NyksZSgxMDkpKSxzPShlKDEzOSksbmV3IFJlZ0V4cCgiXlsiK2ku
QVRUUklCVVRFX05BTUVfU1RBUlRfQ0hBUisiXVsiK2kuQVRUUklCVVRFX05BTUVfQ0hBUisiXSok
IikpLHU9e30sbD17fSxjPXtjcmVhdGVNYXJrdXBGb3JJRDpmdW5jdGlvbihlKXtyZXR1cm4gaS5J
RF9BVFRSSUJVVEVfTkFNRSsiPSIrYShlKX0sc2V0QXR0cmlidXRlRm9ySUQ6ZnVuY3Rpb24oZSx0
KXtlLnNldEF0dHJpYnV0ZShpLklEX0FUVFJJQlVURV9OQU1FLHQpfSxjcmVhdGVNYXJrdXBGb3JS
b290OmZ1bmN0aW9uKCl7cmV0dXJuIGkuUk9PVF9BVFRSSUJVVEVfTkFNRSsnPSIiJ30sc2V0QXR0
cmlidXRlRm9yUm9vdDpmdW5jdGlvbihlKXtlLnNldEF0dHJpYnV0ZShpLlJPT1RfQVRUUklCVVRF
X05BTUUsIiIpfSxjcmVhdGVNYXJrdXBGb3JQcm9wZXJ0eTpmdW5jdGlvbihlLHQpe3ZhciBuPWku
cHJvcGVydGllcy5oYXNPd25Qcm9wZXJ0eShlKT9pLnByb3BlcnRpZXNbZV06bnVsbDtpZihuKXtp
ZihvKG4sdCkpcmV0dXJuIiI7dmFyIHI9bi5hdHRyaWJ1dGVOYW1lO3JldHVybiBuLmhhc0Jvb2xl
YW5WYWx1ZXx8bi5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlJiYhMD09PXQ/cisnPSIiJzpyKyI9
IithKHQpfXJldHVybiBpLmlzQ3VzdG9tQXR0cmlidXRlKGUpP251bGw9PXQ/IiI6ZSsiPSIrYSh0
KTpudWxsfSxjcmVhdGVNYXJrdXBGb3JDdXN0b21BdHRyaWJ1dGU6ZnVuY3Rpb24oZSx0KXtyZXR1
cm4gcihlKSYmbnVsbCE9dD9lKyI9IithKHQpOiIifSxzZXRWYWx1ZUZvclByb3BlcnR5OmZ1bmN0
aW9uKGUsdCxuKXt2YXIgcj1pLnByb3BlcnRpZXMuaGFzT3duUHJvcGVydHkodCk/aS5wcm9wZXJ0
aWVzW3RdOm51bGw7aWYocil7dmFyIGE9ci5tdXRhdGlvbk1ldGhvZDtpZihhKWEoZSxuKTtlbHNl
e2lmKG8ocixuKSlyZXR1cm4gdm9pZCB0aGlzLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkoZSx0KTtp
ZihyLm11c3RVc2VQcm9wZXJ0eSllW3IucHJvcGVydHlOYW1lXT1uO2Vsc2V7dmFyIHM9ci5hdHRy
aWJ1dGVOYW1lLHU9ci5hdHRyaWJ1dGVOYW1lc3BhY2U7dT9lLnNldEF0dHJpYnV0ZU5TKHUscywi
IituKTpyLmhhc0Jvb2xlYW5WYWx1ZXx8ci5oYXNPdmVybG9hZGVkQm9vbGVhblZhbHVlJiYhMD09
PW4/ZS5zZXRBdHRyaWJ1dGUocywiIik6ZS5zZXRBdHRyaWJ1dGUocywiIituKX19fWVsc2UgaWYo
aS5pc0N1c3RvbUF0dHJpYnV0ZSh0KSlyZXR1cm4gdm9pZCBjLnNldFZhbHVlRm9yQXR0cmlidXRl
KGUsdCxuKX0sc2V0VmFsdWVGb3JBdHRyaWJ1dGU6ZnVuY3Rpb24oZSx0LG4pe3IodCkmJihudWxs
PT1uP2UucmVtb3ZlQXR0cmlidXRlKHQpOmUuc2V0QXR0cmlidXRlKHQsIiIrbikpfSxkZWxldGVW
YWx1ZUZvckF0dHJpYnV0ZTpmdW5jdGlvbihlLHQpe2UucmVtb3ZlQXR0cmlidXRlKHQpfSxkZWxl
dGVWYWx1ZUZvclByb3BlcnR5OmZ1bmN0aW9uKGUsdCl7dmFyIG49aS5wcm9wZXJ0aWVzLmhhc093
blByb3BlcnR5KHQpP2kucHJvcGVydGllc1t0XTpudWxsO2lmKG4pe3ZhciByPW4ubXV0YXRpb25N
ZXRob2Q7aWYocilyKGUsdm9pZCAwKTtlbHNlIGlmKG4ubXVzdFVzZVByb3BlcnR5KXt2YXIgbz1u
LnByb3BlcnR5TmFtZTtuLmhhc0Jvb2xlYW5WYWx1ZT9lW29dPSExOmVbb109IiJ9ZWxzZSBlLnJl
bW92ZUF0dHJpYnV0ZShuLmF0dHJpYnV0ZU5hbWUpfWVsc2UgaS5pc0N1c3RvbUF0dHJpYnV0ZSh0
KSYmZS5yZW1vdmVBdHRyaWJ1dGUodCl9fTt0LmV4cG9ydHM9Y30sezEwOToxMDksMTE6MTEsMTM5
OjEzOSwzMjozMiw1Nzo1N31dLDEzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBy
PWUoMTEwKSxvPWUoOSksaT1lKDEyMCksYT1lKDEyNSkscz1lKDEyNiksdT0oZSgxMzQpLHtkYW5n
ZXJvdXNseVJlcGxhY2VOb2RlV2l0aE1hcmt1cDpmdW5jdGlvbihlLHQpe2lmKGkuY2FuVXNlRE9N
fHxyKCI1NiIpLHR8fHIoIjU3IiksIkhUTUwiPT09ZS5ub2RlTmFtZSYmcigiNTgiKSwic3RyaW5n
Ij09dHlwZW9mIHQpe3ZhciBuPWEodCxzKVswXTtlLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKG4s
ZSl9ZWxzZSBvLnJlcGxhY2VDaGlsZFdpdGhUcmVlKGUsdCl9fSk7dC5leHBvcnRzPXV9LHsxMTA6
MTEwLDEyMDoxMjAsMTI1OjEyNSwxMjY6MTI2LDEzNDoxMzQsOTo5fV0sMTQ6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7dmFyIHI9WyJSZXNwb25kZXJFdmVudFBsdWdpbiIsIlNpbXBsZUV2
ZW50UGx1Z2luIiwiVGFwRXZlbnRQbHVnaW4iLCJFbnRlckxlYXZlRXZlbnRQbHVnaW4iLCJDaGFu
Z2VFdmVudFBsdWdpbiIsIlNlbGVjdEV2ZW50UGx1Z2luIiwiQmVmb3JlSW5wdXRFdmVudFBsdWdp
biJdO3QuZXhwb3J0cz1yfSx7fV0sMTU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFy
IHI9ZSgxOSksbz1lKDMyKSxpPWUoODQpLGE9e21vdXNlRW50ZXI6e3JlZ2lzdHJhdGlvbk5hbWU6
Im9uTW91c2VFbnRlciIsZGVwZW5kZW5jaWVzOlsidG9wTW91c2VPdXQiLCJ0b3BNb3VzZU92ZXIi
XX0sbW91c2VMZWF2ZTp7cmVnaXN0cmF0aW9uTmFtZToib25Nb3VzZUxlYXZlIixkZXBlbmRlbmNp
ZXM6WyJ0b3BNb3VzZU91dCIsInRvcE1vdXNlT3ZlciJdfX0scz17ZXZlbnRUeXBlczphLGV4dHJh
Y3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4scyl7aWYoInRvcE1vdXNlT3ZlciI9PT1lJiYobi5yZWxh
dGVkVGFyZ2V0fHxuLmZyb21FbGVtZW50KSlyZXR1cm4gbnVsbDtpZigidG9wTW91c2VPdXQiIT09
ZSYmInRvcE1vdXNlT3ZlciIhPT1lKXJldHVybiBudWxsO3ZhciB1O2lmKHMud2luZG93PT09cyl1
PXM7ZWxzZXt2YXIgbD1zLm93bmVyRG9jdW1lbnQ7dT1sP2wuZGVmYXVsdFZpZXd8fGwucGFyZW50
V2luZG93OndpbmRvd312YXIgYyxwO2lmKCJ0b3BNb3VzZU91dCI9PT1lKXtjPXQ7dmFyIGQ9bi5y
ZWxhdGVkVGFyZ2V0fHxuLnRvRWxlbWVudDtwPWQ/by5nZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9k
ZShkKTpudWxsfWVsc2UgYz1udWxsLHA9dDtpZihjPT09cClyZXR1cm4gbnVsbDt2YXIgZj1udWxs
PT1jP3U6by5nZXROb2RlRnJvbUluc3RhbmNlKGMpLGg9bnVsbD09cD91Om8uZ2V0Tm9kZUZyb21J
bnN0YW5jZShwKSxtPWkuZ2V0UG9vbGVkKGEubW91c2VMZWF2ZSxjLG4scyk7bS50eXBlPSJtb3Vz
ZWxlYXZlIixtLnRhcmdldD1mLG0ucmVsYXRlZFRhcmdldD1oO3ZhciB2PWkuZ2V0UG9vbGVkKGEu
bW91c2VFbnRlcixwLG4scyk7cmV0dXJuIHYudHlwZT0ibW91c2VlbnRlciIsdi50YXJnZXQ9aCx2
LnJlbGF0ZWRUYXJnZXQ9ZixyLmFjY3VtdWxhdGVFbnRlckxlYXZlRGlzcGF0Y2hlcyhtLHYsYyxw
KSxbbSx2XX19O3QuZXhwb3J0cz1zfSx7MTk6MTksMzI6MzIsODQ6ODR9XSwxNjpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiJidXR0b24iPT09ZXx8Imlu
cHV0Ij09PWV8fCJzZWxlY3QiPT09ZXx8InRleHRhcmVhIj09PWV9ZnVuY3Rpb24gbyhlLHQsbil7
c3dpdGNoKGUpe2Nhc2Uib25DbGljayI6Y2FzZSJvbkNsaWNrQ2FwdHVyZSI6Y2FzZSJvbkRvdWJs
ZUNsaWNrIjpjYXNlIm9uRG91YmxlQ2xpY2tDYXB0dXJlIjpjYXNlIm9uTW91c2VEb3duIjpjYXNl
Im9uTW91c2VEb3duQ2FwdHVyZSI6Y2FzZSJvbk1vdXNlTW92ZSI6Y2FzZSJvbk1vdXNlTW92ZUNh
cHR1cmUiOmNhc2Uib25Nb3VzZVVwIjpjYXNlIm9uTW91c2VVcENhcHR1cmUiOnJldHVybiEoIW4u
ZGlzYWJsZWR8fCFyKHQpKTtkZWZhdWx0OnJldHVybiExfX12YXIgaT1lKDExMCksYT1lKDE3KSxz
PWUoMTgpLHU9ZSg0OSksbD1lKDkxKSxjPWUoOTcpLHA9KGUoMTM0KSx7fSksZD1udWxsLGY9ZnVu
Y3Rpb24oZSx0KXtlJiYocy5leGVjdXRlRGlzcGF0Y2hlc0luT3JkZXIoZSx0KSxlLmlzUGVyc2lz
dGVudCgpfHxlLmNvbnN0cnVjdG9yLnJlbGVhc2UoZSkpfSxoPWZ1bmN0aW9uKGUpe3JldHVybiBm
KGUsITApfSxtPWZ1bmN0aW9uKGUpe3JldHVybiBmKGUsITEpfSx2PWZ1bmN0aW9uKGUpe3JldHVy
biIuIitlLl9yb290Tm9kZUlEfSxnPXtpbmplY3Rpb246e2luamVjdEV2ZW50UGx1Z2luT3JkZXI6
YS5pbmplY3RFdmVudFBsdWdpbk9yZGVyLGluamVjdEV2ZW50UGx1Z2luc0J5TmFtZTphLmluamVj
dEV2ZW50UGx1Z2luc0J5TmFtZX0scHV0TGlzdGVuZXI6ZnVuY3Rpb24oZSx0LG4peyJmdW5jdGlv
biIhPXR5cGVvZiBuJiZpKCI5NCIsdCx0eXBlb2Ygbik7dmFyIHI9dihlKTsocFt0XXx8KHBbdF09
e30pKVtyXT1uO3ZhciBvPWEucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbdF07byYmby5kaWRQdXRM
aXN0ZW5lciYmby5kaWRQdXRMaXN0ZW5lcihlLHQsbil9LGdldExpc3RlbmVyOmZ1bmN0aW9uKGUs
dCl7dmFyIG49cFt0XTtpZihvKHQsZS5fY3VycmVudEVsZW1lbnQudHlwZSxlLl9jdXJyZW50RWxl
bWVudC5wcm9wcykpcmV0dXJuIG51bGw7dmFyIHI9dihlKTtyZXR1cm4gbiYmbltyXX0sZGVsZXRl
TGlzdGVuZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj1hLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3Rd
O24mJm4ud2lsbERlbGV0ZUxpc3RlbmVyJiZuLndpbGxEZWxldGVMaXN0ZW5lcihlLHQpO3ZhciBy
PXBbdF07ciYmZGVsZXRlIHJbdihlKV19LGRlbGV0ZUFsbExpc3RlbmVyczpmdW5jdGlvbihlKXt2
YXIgdD12KGUpO2Zvcih2YXIgbiBpbiBwKWlmKHAuaGFzT3duUHJvcGVydHkobikmJnBbbl1bdF0p
e3ZhciByPWEucmVnaXN0cmF0aW9uTmFtZU1vZHVsZXNbbl07ciYmci53aWxsRGVsZXRlTGlzdGVu
ZXImJnIud2lsbERlbGV0ZUxpc3RlbmVyKGUsbiksZGVsZXRlIHBbbl1bdF19fSxleHRyYWN0RXZl
bnRzOmZ1bmN0aW9uKGUsdCxuLHIpe2Zvcih2YXIgbyxpPWEucGx1Z2lucyxzPTA7czxpLmxlbmd0
aDtzKyspe3ZhciB1PWlbc107aWYodSl7dmFyIGM9dS5leHRyYWN0RXZlbnRzKGUsdCxuLHIpO2Mm
JihvPWwobyxjKSl9fXJldHVybiBvfSxlbnF1ZXVlRXZlbnRzOmZ1bmN0aW9uKGUpe2UmJihkPWwo
ZCxlKSl9LHByb2Nlc3NFdmVudFF1ZXVlOmZ1bmN0aW9uKGUpe3ZhciB0PWQ7ZD1udWxsLGU/Yyh0
LGgpOmModCxtKSxkJiZpKCI5NSIpLHUucmV0aHJvd0NhdWdodEVycm9yKCl9LF9fcHVyZ2U6ZnVu
Y3Rpb24oKXtwPXt9fSxfX2dldExpc3RlbmVyQmFuazpmdW5jdGlvbigpe3JldHVybiBwfX07dC5l
eHBvcnRzPWd9LHsxMTA6MTEwLDEzNDoxMzQsMTc6MTcsMTg6MTgsNDk6NDksOTE6OTEsOTc6OTd9
XSwxNzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7aWYocylmb3Io
dmFyIGUgaW4gdSl7dmFyIHQ9dVtlXSxuPXMuaW5kZXhPZihlKTtpZihuPi0xfHxhKCI5NiIsZSks
IWwucGx1Z2luc1tuXSl7dC5leHRyYWN0RXZlbnRzfHxhKCI5NyIsZSksbC5wbHVnaW5zW25dPXQ7
dmFyIHI9dC5ldmVudFR5cGVzO2Zvcih2YXIgaSBpbiByKW8ocltpXSx0LGkpfHxhKCI5OCIsaSxl
KX19fWZ1bmN0aW9uIG8oZSx0LG4pe2wuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzLmhhc093blBy
b3BlcnR5KG4pJiZhKCI5OSIsbiksbC5ldmVudE5hbWVEaXNwYXRjaENvbmZpZ3Nbbl09ZTt2YXIg
cj1lLnBoYXNlZFJlZ2lzdHJhdGlvbk5hbWVzO2lmKHIpe2Zvcih2YXIgbyBpbiByKWlmKHIuaGFz
T3duUHJvcGVydHkobykpe3ZhciBzPXJbb107aShzLHQsbil9cmV0dXJuITB9cmV0dXJuISFlLnJl
Z2lzdHJhdGlvbk5hbWUmJihpKGUucmVnaXN0cmF0aW9uTmFtZSx0LG4pLCEwKX1mdW5jdGlvbiBp
KGUsdCxuKXtsLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW2VdJiZhKCIxMDAiLGUpLGwucmVnaXN0
cmF0aW9uTmFtZU1vZHVsZXNbZV09dCxsLnJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRlbmNpZXNbZV09
dC5ldmVudFR5cGVzW25dLmRlcGVuZGVuY2llc312YXIgYT1lKDExMCkscz0oZSgxMzQpLG51bGwp
LHU9e30sbD17cGx1Z2luczpbXSxldmVudE5hbWVEaXNwYXRjaENvbmZpZ3M6e30scmVnaXN0cmF0
aW9uTmFtZU1vZHVsZXM6e30scmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llczp7fSxwb3NzaWJs
ZVJlZ2lzdHJhdGlvbk5hbWVzOm51bGwsaW5qZWN0RXZlbnRQbHVnaW5PcmRlcjpmdW5jdGlvbihl
KXtzJiZhKCIxMDEiKSxzPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGUpLHIoKX0saW5qZWN0
RXZlbnRQbHVnaW5zQnlOYW1lOmZ1bmN0aW9uKGUpe3ZhciB0PSExO2Zvcih2YXIgbiBpbiBlKWlm
KGUuaGFzT3duUHJvcGVydHkobikpe3ZhciBvPWVbbl07dS5oYXNPd25Qcm9wZXJ0eShuKSYmdVtu
XT09PW98fCh1W25dJiZhKCIxMDIiLG4pLHVbbl09byx0PSEwKX10JiZyKCl9LGdldFBsdWdpbk1v
ZHVsZUZvckV2ZW50OmZ1bmN0aW9uKGUpe3ZhciB0PWUuZGlzcGF0Y2hDb25maWc7aWYodC5yZWdp
c3RyYXRpb25OYW1lKXJldHVybiBsLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW3QucmVnaXN0cmF0
aW9uTmFtZV18fG51bGw7aWYodm9pZCAwIT09dC5waGFzZWRSZWdpc3RyYXRpb25OYW1lcyl7dmFy
IG49dC5waGFzZWRSZWdpc3RyYXRpb25OYW1lcztmb3IodmFyIHIgaW4gbilpZihuLmhhc093blBy
b3BlcnR5KHIpKXt2YXIgbz1sLnJlZ2lzdHJhdGlvbk5hbWVNb2R1bGVzW25bcl1dO2lmKG8pcmV0
dXJuIG99fXJldHVybiBudWxsfSxfcmVzZXRFdmVudFBsdWdpbnM6ZnVuY3Rpb24oKXtzPW51bGw7
Zm9yKHZhciBlIGluIHUpdS5oYXNPd25Qcm9wZXJ0eShlKSYmZGVsZXRlIHVbZV07bC5wbHVnaW5z
Lmxlbmd0aD0wO3ZhciB0PWwuZXZlbnROYW1lRGlzcGF0Y2hDb25maWdzO2Zvcih2YXIgbiBpbiB0
KXQuaGFzT3duUHJvcGVydHkobikmJmRlbGV0ZSB0W25dO3ZhciByPWwucmVnaXN0cmF0aW9uTmFt
ZU1vZHVsZXM7Zm9yKHZhciBvIGluIHIpci5oYXNPd25Qcm9wZXJ0eShvKSYmZGVsZXRlIHJbb119
fTt0LmV4cG9ydHM9bH0sezExMDoxMTAsMTM0OjEzNH1dLDE4OltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuInRvcE1vdXNlVXAiPT09ZXx8InRvcFRvdWNo
RW5kIj09PWV8fCJ0b3BUb3VjaENhbmNlbCI9PT1lfWZ1bmN0aW9uIG8oZSl7cmV0dXJuInRvcE1v
dXNlTW92ZSI9PT1lfHwidG9wVG91Y2hNb3ZlIj09PWV9ZnVuY3Rpb24gaShlKXtyZXR1cm4idG9w
TW91c2VEb3duIj09PWV8fCJ0b3BUb3VjaFN0YXJ0Ij09PWV9ZnVuY3Rpb24gYShlLHQsbixyKXt2
YXIgbz1lLnR5cGV8fCJ1bmtub3duLWV2ZW50IjtlLmN1cnJlbnRUYXJnZXQ9Zy5nZXROb2RlRnJv
bUluc3RhbmNlKHIpLHQ/bS5pbnZva2VHdWFyZGVkQ2FsbGJhY2tXaXRoQ2F0Y2gobyxuLGUpOm0u
aW52b2tlR3VhcmRlZENhbGxiYWNrKG8sbixlKSxlLmN1cnJlbnRUYXJnZXQ9bnVsbH1mdW5jdGlv
biBzKGUsdCl7dmFyIG49ZS5fZGlzcGF0Y2hMaXN0ZW5lcnMscj1lLl9kaXNwYXRjaEluc3RhbmNl
cztpZihBcnJheS5pc0FycmF5KG4pKWZvcih2YXIgbz0wO288bi5sZW5ndGgmJiFlLmlzUHJvcGFn
YXRpb25TdG9wcGVkKCk7bysrKWEoZSx0LG5bb10scltvXSk7ZWxzZSBuJiZhKGUsdCxuLHIpO2Uu
X2Rpc3BhdGNoTGlzdGVuZXJzPW51bGwsZS5fZGlzcGF0Y2hJbnN0YW5jZXM9bnVsbH1mdW5jdGlv
biB1KGUpe3ZhciB0PWUuX2Rpc3BhdGNoTGlzdGVuZXJzLG49ZS5fZGlzcGF0Y2hJbnN0YW5jZXM7
aWYoQXJyYXkuaXNBcnJheSh0KSl7Zm9yKHZhciByPTA7cjx0Lmxlbmd0aCYmIWUuaXNQcm9wYWdh
dGlvblN0b3BwZWQoKTtyKyspaWYodFtyXShlLG5bcl0pKXJldHVybiBuW3JdfWVsc2UgaWYodCYm
dChlLG4pKXJldHVybiBuO3JldHVybiBudWxsfWZ1bmN0aW9uIGwoZSl7dmFyIHQ9dShlKTtyZXR1
cm4gZS5fZGlzcGF0Y2hJbnN0YW5jZXM9bnVsbCxlLl9kaXNwYXRjaExpc3RlbmVycz1udWxsLHR9
ZnVuY3Rpb24gYyhlKXt2YXIgdD1lLl9kaXNwYXRjaExpc3RlbmVycyxuPWUuX2Rpc3BhdGNoSW5z
dGFuY2VzO0FycmF5LmlzQXJyYXkodCkmJmgoIjEwMyIpLGUuY3VycmVudFRhcmdldD10P2cuZ2V0
Tm9kZUZyb21JbnN0YW5jZShuKTpudWxsO3ZhciByPXQ/dChlKTpudWxsO3JldHVybiBlLmN1cnJl
bnRUYXJnZXQ9bnVsbCxlLl9kaXNwYXRjaExpc3RlbmVycz1udWxsLGUuX2Rpc3BhdGNoSW5zdGFu
Y2VzPW51bGwscn1mdW5jdGlvbiBwKGUpe3JldHVybiEhZS5fZGlzcGF0Y2hMaXN0ZW5lcnN9dmFy
IGQsZixoPWUoMTEwKSxtPWUoNDkpLHY9KGUoMTM0KSxlKDEzOSkse2luamVjdENvbXBvbmVudFRy
ZWU6ZnVuY3Rpb24oZSl7ZD1lfSxpbmplY3RUcmVlVHJhdmVyc2FsOmZ1bmN0aW9uKGUpe2Y9ZX19
KSxnPXtpc0VuZGlzaDpyLGlzTW92ZWlzaDpvLGlzU3RhcnRpc2g6aSxleGVjdXRlRGlyZWN0RGlz
cGF0Y2g6YyxleGVjdXRlRGlzcGF0Y2hlc0luT3JkZXI6cyxleGVjdXRlRGlzcGF0Y2hlc0luT3Jk
ZXJTdG9wQXRUcnVlOmwsaGFzRGlzcGF0Y2hlczpwLGdldEluc3RhbmNlRnJvbU5vZGU6ZnVuY3Rp
b24oZSl7cmV0dXJuIGQuZ2V0SW5zdGFuY2VGcm9tTm9kZShlKX0sZ2V0Tm9kZUZyb21JbnN0YW5j
ZTpmdW5jdGlvbihlKXtyZXR1cm4gZC5nZXROb2RlRnJvbUluc3RhbmNlKGUpfSxpc0FuY2VzdG9y
OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGYuaXNBbmNlc3RvcihlLHQpfSxnZXRMb3dlc3RDb21tb25B
bmNlc3RvcjpmdW5jdGlvbihlLHQpe3JldHVybiBmLmdldExvd2VzdENvbW1vbkFuY2VzdG9yKGUs
dCl9LGdldFBhcmVudEluc3RhbmNlOmZ1bmN0aW9uKGUpe3JldHVybiBmLmdldFBhcmVudEluc3Rh
bmNlKGUpfSx0cmF2ZXJzZVR3b1BoYXNlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZi50cmF2ZXJz
ZVR3b1BoYXNlKGUsdCxuKX0sdHJhdmVyc2VFbnRlckxlYXZlOmZ1bmN0aW9uKGUsdCxuLHIsbyl7
cmV0dXJuIGYudHJhdmVyc2VFbnRlckxlYXZlKGUsdCxuLHIsbyl9LGluamVjdGlvbjp2fTt0LmV4
cG9ydHM9Z30sezExMDoxMTAsMTM0OjEzNCwxMzk6MTM5LDQ5OjQ5fV0sMTk6W2Z1bmN0aW9uKGUs
dCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbil7dmFyIHI9dC5kaXNwYXRjaENvbmZp
Zy5waGFzZWRSZWdpc3RyYXRpb25OYW1lc1tuXTtyZXR1cm4gZyhlLHIpfWZ1bmN0aW9uIG8oZSx0
LG4pe3ZhciBvPXIoZSxuLHQpO28mJihuLl9kaXNwYXRjaExpc3RlbmVycz1tKG4uX2Rpc3BhdGNo
TGlzdGVuZXJzLG8pLG4uX2Rpc3BhdGNoSW5zdGFuY2VzPW0obi5fZGlzcGF0Y2hJbnN0YW5jZXMs
ZSkpfWZ1bmN0aW9uIGkoZSl7ZSYmZS5kaXNwYXRjaENvbmZpZy5waGFzZWRSZWdpc3RyYXRpb25O
YW1lcyYmaC50cmF2ZXJzZVR3b1BoYXNlKGUuX3RhcmdldEluc3QsbyxlKX1mdW5jdGlvbiBhKGUp
e2lmKGUmJmUuZGlzcGF0Y2hDb25maWcucGhhc2VkUmVnaXN0cmF0aW9uTmFtZXMpe3ZhciB0PWUu
X3RhcmdldEluc3Qsbj10P2guZ2V0UGFyZW50SW5zdGFuY2UodCk6bnVsbDtoLnRyYXZlcnNlVHdv
UGhhc2UobixvLGUpfX1mdW5jdGlvbiBzKGUsdCxuKXtpZihuJiZuLmRpc3BhdGNoQ29uZmlnLnJl
Z2lzdHJhdGlvbk5hbWUpe3ZhciByPW4uZGlzcGF0Y2hDb25maWcucmVnaXN0cmF0aW9uTmFtZSxv
PWcoZSxyKTtvJiYobi5fZGlzcGF0Y2hMaXN0ZW5lcnM9bShuLl9kaXNwYXRjaExpc3RlbmVycyxv
KSxuLl9kaXNwYXRjaEluc3RhbmNlcz1tKG4uX2Rpc3BhdGNoSW5zdGFuY2VzLGUpKX19ZnVuY3Rp
b24gdShlKXtlJiZlLmRpc3BhdGNoQ29uZmlnLnJlZ2lzdHJhdGlvbk5hbWUmJnMoZS5fdGFyZ2V0
SW5zdCxudWxsLGUpfWZ1bmN0aW9uIGwoZSl7dihlLGkpfWZ1bmN0aW9uIGMoZSl7dihlLGEpfWZ1
bmN0aW9uIHAoZSx0LG4scil7aC50cmF2ZXJzZUVudGVyTGVhdmUobixyLHMsZSx0KX1mdW5jdGlv
biBkKGUpe3YoZSx1KX12YXIgZj1lKDE2KSxoPWUoMTgpLG09ZSg5MSksdj1lKDk3KSxnPShlKDEz
OSksZi5nZXRMaXN0ZW5lcikseT17YWNjdW11bGF0ZVR3b1BoYXNlRGlzcGF0Y2hlczpsLGFjY3Vt
dWxhdGVUd29QaGFzZURpc3BhdGNoZXNTa2lwVGFyZ2V0OmMsYWNjdW11bGF0ZURpcmVjdERpc3Bh
dGNoZXM6ZCxhY2N1bXVsYXRlRW50ZXJMZWF2ZURpc3BhdGNoZXM6cH07dC5leHBvcnRzPXl9LHsx
Mzk6MTM5LDE2OjE2LDE4OjE4LDkxOjkxLDk3Ojk3fV0sMjA6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlKXt0aGlzLl9yb290PWUsdGhpcy5fc3RhcnRUZXh0PXRoaXMu
Z2V0VGV4dCgpLHRoaXMuX2ZhbGxiYWNrVGV4dD1udWxsfXZhciBvPWUoMTQwKSxpPWUoMjQpLGE9
ZSgxMDQpO28oci5wcm90b3R5cGUse2Rlc3RydWN0b3I6ZnVuY3Rpb24oKXt0aGlzLl9yb290PW51
bGwsdGhpcy5fc3RhcnRUZXh0PW51bGwsdGhpcy5fZmFsbGJhY2tUZXh0PW51bGx9LGdldFRleHQ6
ZnVuY3Rpb24oKXtyZXR1cm4idmFsdWUiaW4gdGhpcy5fcm9vdD90aGlzLl9yb290LnZhbHVlOnRo
aXMuX3Jvb3RbYSgpXX0sZ2V0RGF0YTpmdW5jdGlvbigpe2lmKHRoaXMuX2ZhbGxiYWNrVGV4dCly
ZXR1cm4gdGhpcy5fZmFsbGJhY2tUZXh0O3ZhciBlLHQsbj10aGlzLl9zdGFydFRleHQscj1uLmxl
bmd0aCxvPXRoaXMuZ2V0VGV4dCgpLGk9by5sZW5ndGg7Zm9yKGU9MDtlPHImJm5bZV09PT1vW2Vd
O2UrKyk7dmFyIGE9ci1lO2Zvcih0PTE7dDw9YSYmbltyLXRdPT09b1tpLXRdO3QrKyk7dmFyIHM9
dD4xPzEtdDp2b2lkIDA7cmV0dXJuIHRoaXMuX2ZhbGxiYWNrVGV4dD1vLnNsaWNlKGUscyksdGhp
cy5fZmFsbGJhY2tUZXh0fX0pLGkuYWRkUG9vbGluZ1RvKHIpLHQuZXhwb3J0cz1yfSx7MTA0OjEw
NCwxNDA6MTQwLDI0OjI0fV0sMjE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9
ZSgxMSksbz1yLmluamVjdGlvbi5NVVNUX1VTRV9QUk9QRVJUWSxpPXIuaW5qZWN0aW9uLkhBU19C
T09MRUFOX1ZBTFVFLGE9ci5pbmplY3Rpb24uSEFTX05VTUVSSUNfVkFMVUUscz1yLmluamVjdGlv
bi5IQVNfUE9TSVRJVkVfTlVNRVJJQ19WQUxVRSx1PXIuaW5qZWN0aW9uLkhBU19PVkVSTE9BREVE
X0JPT0xFQU5fVkFMVUUsbD17aXNDdXN0b21BdHRyaWJ1dGU6UmVnRXhwLnByb3RvdHlwZS50ZXN0
LmJpbmQobmV3IFJlZ0V4cCgiXihkYXRhfGFyaWEpLVsiK3IuQVRUUklCVVRFX05BTUVfQ0hBUisi
XSokIikpLFByb3BlcnRpZXM6e2FjY2VwdDowLGFjY2VwdENoYXJzZXQ6MCxhY2Nlc3NLZXk6MCxh
Y3Rpb246MCxhbGxvd0Z1bGxTY3JlZW46aSxhbGxvd1RyYW5zcGFyZW5jeTowLGFsdDowLGFzOjAs
YXN5bmM6aSxhdXRvQ29tcGxldGU6MCxhdXRvUGxheTppLGNhcHR1cmU6aSxjZWxsUGFkZGluZzow
LGNlbGxTcGFjaW5nOjAsY2hhclNldDowLGNoYWxsZW5nZTowLGNoZWNrZWQ6b3xpLGNpdGU6MCxj
bGFzc0lEOjAsY2xhc3NOYW1lOjAsY29sczpzLGNvbFNwYW46MCxjb250ZW50OjAsY29udGVudEVk
aXRhYmxlOjAsY29udGV4dE1lbnU6MCxjb250cm9sczppLGNvb3JkczowLGNyb3NzT3JpZ2luOjAs
ZGF0YTowLGRhdGVUaW1lOjAsZGVmYXVsdDppLGRlZmVyOmksZGlyOjAsZGlzYWJsZWQ6aSxkb3du
bG9hZDp1LGRyYWdnYWJsZTowLGVuY1R5cGU6MCxmb3JtOjAsZm9ybUFjdGlvbjowLGZvcm1FbmNU
eXBlOjAsZm9ybU1ldGhvZDowLGZvcm1Ob1ZhbGlkYXRlOmksZm9ybVRhcmdldDowLGZyYW1lQm9y
ZGVyOjAsaGVhZGVyczowLGhlaWdodDowLGhpZGRlbjppLGhpZ2g6MCxocmVmOjAsaHJlZkxhbmc6
MCxodG1sRm9yOjAsaHR0cEVxdWl2OjAsaWNvbjowLGlkOjAsaW5wdXRNb2RlOjAsaW50ZWdyaXR5
OjAsaXM6MCxrZXlQYXJhbXM6MCxrZXlUeXBlOjAsa2luZDowLGxhYmVsOjAsbGFuZzowLGxpc3Q6
MCxsb29wOmksbG93OjAsbWFuaWZlc3Q6MCxtYXJnaW5IZWlnaHQ6MCxtYXJnaW5XaWR0aDowLG1h
eDowLG1heExlbmd0aDowLG1lZGlhOjAsbWVkaWFHcm91cDowLG1ldGhvZDowLG1pbjowLG1pbkxl
bmd0aDowLG11bHRpcGxlOm98aSxtdXRlZDpvfGksbmFtZTowLG5vbmNlOjAsbm9WYWxpZGF0ZTpp
LG9wZW46aSxvcHRpbXVtOjAscGF0dGVybjowLHBsYWNlaG9sZGVyOjAscGxheXNJbmxpbmU6aSxw
b3N0ZXI6MCxwcmVsb2FkOjAscHJvZmlsZTowLHJhZGlvR3JvdXA6MCxyZWFkT25seTppLHJlZmVy
cmVyUG9saWN5OjAscmVsOjAscmVxdWlyZWQ6aSxyZXZlcnNlZDppLHJvbGU6MCxyb3dzOnMscm93
U3BhbjphLHNhbmRib3g6MCxzY29wZTowLHNjb3BlZDppLHNjcm9sbGluZzowLHNlYW1sZXNzOmks
c2VsZWN0ZWQ6b3xpLHNoYXBlOjAsc2l6ZTpzLHNpemVzOjAsc3BhbjpzLHNwZWxsQ2hlY2s6MCxz
cmM6MCxzcmNEb2M6MCxzcmNMYW5nOjAsc3JjU2V0OjAsc3RhcnQ6YSxzdGVwOjAsc3R5bGU6MCxz
dW1tYXJ5OjAsdGFiSW5kZXg6MCx0YXJnZXQ6MCx0aXRsZTowLHR5cGU6MCx1c2VNYXA6MCx2YWx1
ZTowLHdpZHRoOjAsd21vZGU6MCx3cmFwOjAsYWJvdXQ6MCxkYXRhdHlwZTowLGlubGlzdDowLHBy
ZWZpeDowLHByb3BlcnR5OjAscmVzb3VyY2U6MCx0eXBlb2Y6MCx2b2NhYjowLGF1dG9DYXBpdGFs
aXplOjAsYXV0b0NvcnJlY3Q6MCxhdXRvU2F2ZTowLGNvbG9yOjAsaXRlbVByb3A6MCxpdGVtU2Nv
cGU6aSxpdGVtVHlwZTowLGl0ZW1JRDowLGl0ZW1SZWY6MCxyZXN1bHRzOjAsc2VjdXJpdHk6MCx1
bnNlbGVjdGFibGU6MH0sRE9NQXR0cmlidXRlTmFtZXM6e2FjY2VwdENoYXJzZXQ6ImFjY2VwdC1j
aGFyc2V0IixjbGFzc05hbWU6ImNsYXNzIixodG1sRm9yOiJmb3IiLGh0dHBFcXVpdjoiaHR0cC1l
cXVpdiJ9LERPTVByb3BlcnR5TmFtZXM6e30sRE9NTXV0YXRpb25NZXRob2RzOnt2YWx1ZTpmdW5j
dGlvbihlLHQpe2lmKG51bGw9PXQpcmV0dXJuIGUucmVtb3ZlQXR0cmlidXRlKCJ2YWx1ZSIpOyJu
dW1iZXIiIT09ZS50eXBlfHwhMT09PWUuaGFzQXR0cmlidXRlKCJ2YWx1ZSIpP2Uuc2V0QXR0cmli
dXRlKCJ2YWx1ZSIsIiIrdCk6ZS52YWxpZGl0eSYmIWUudmFsaWRpdHkuYmFkSW5wdXQmJmUub3du
ZXJEb2N1bWVudC5hY3RpdmVFbGVtZW50IT09ZSYmZS5zZXRBdHRyaWJ1dGUoInZhbHVlIiwiIit0
KX19fTt0LmV4cG9ydHM9bH0sezExOjExfV0sMjI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlKXt2YXIgdD17Ij0iOiI9MCIsIjoiOiI9MiJ9O3JldHVybiIkIisoIiIr
ZSkucmVwbGFjZSgvWz06XS9nLGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfSl9ZnVuY3Rpb24gbyhl
KXt2YXIgdD17Ij0wIjoiPSIsIj0yIjoiOiJ9O3JldHVybigiIisoIi4iPT09ZVswXSYmIiQiPT09
ZVsxXT9lLnN1YnN0cmluZygyKTplLnN1YnN0cmluZygxKSkpLnJlcGxhY2UoLyg9MHw9MikvZyxm
dW5jdGlvbihlKXtyZXR1cm4gdFtlXX0pfXZhciBpPXtlc2NhcGU6cix1bmVzY2FwZTpvfTt0LmV4
cG9ydHM9aX0se31dLDIzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
ZSl7bnVsbCE9ZS5jaGVja2VkTGluayYmbnVsbCE9ZS52YWx1ZUxpbmsmJnMoIjg3Iil9ZnVuY3Rp
b24gbyhlKXtyKGUpLChudWxsIT1lLnZhbHVlfHxudWxsIT1lLm9uQ2hhbmdlKSYmcygiODgiKX1m
dW5jdGlvbiBpKGUpe3IoZSksKG51bGwhPWUuY2hlY2tlZHx8bnVsbCE9ZS5vbkNoYW5nZSkmJnMo
Ijg5Iil9ZnVuY3Rpb24gYShlKXtpZihlKXt2YXIgdD1lLmdldE5hbWUoKTtpZih0KXJldHVybiIg
Q2hlY2sgdGhlIHJlbmRlciBtZXRob2Qgb2YgYCIrdCsiYC4ifXJldHVybiIifXZhciBzPWUoMTEw
KSx1PWUoNjIpLGw9ZSgxNDIpLGM9ZSgxMTcpLHA9bChjLmlzVmFsaWRFbGVtZW50KSxkPShlKDEz
NCksZSgxMzkpLHtidXR0b246ITAsY2hlY2tib3g6ITAsaW1hZ2U6ITAsaGlkZGVuOiEwLHJhZGlv
OiEwLHJlc2V0OiEwLHN1Ym1pdDohMH0pLGY9e3ZhbHVlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4h
ZVt0XXx8ZFtlLnR5cGVdfHxlLm9uQ2hhbmdlfHxlLnJlYWRPbmx5fHxlLmRpc2FibGVkP251bGw6
bmV3IEVycm9yKCJZb3UgcHJvdmlkZWQgYSBgdmFsdWVgIHByb3AgdG8gYSBmb3JtIGZpZWxkIHdp
dGhvdXQgYW4gYG9uQ2hhbmdlYCBoYW5kbGVyLiBUaGlzIHdpbGwgcmVuZGVyIGEgcmVhZC1vbmx5
IGZpZWxkLiBJZiB0aGUgZmllbGQgc2hvdWxkIGJlIG11dGFibGUgdXNlIGBkZWZhdWx0VmFsdWVg
LiBPdGhlcndpc2UsIHNldCBlaXRoZXIgYG9uQ2hhbmdlYCBvciBgcmVhZE9ubHlgLiIpfSxjaGVj
a2VkOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4hZVt0XXx8ZS5vbkNoYW5nZXx8ZS5yZWFkT25seXx8
ZS5kaXNhYmxlZD9udWxsOm5ldyBFcnJvcigiWW91IHByb3ZpZGVkIGEgYGNoZWNrZWRgIHByb3Ag
dG8gYSBmb3JtIGZpZWxkIHdpdGhvdXQgYW4gYG9uQ2hhbmdlYCBoYW5kbGVyLiBUaGlzIHdpbGwg
cmVuZGVyIGEgcmVhZC1vbmx5IGZpZWxkLiBJZiB0aGUgZmllbGQgc2hvdWxkIGJlIG11dGFibGUg
dXNlIGBkZWZhdWx0Q2hlY2tlZGAuIE90aGVyd2lzZSwgc2V0IGVpdGhlciBgb25DaGFuZ2VgIG9y
IGByZWFkT25seWAuIil9LG9uQ2hhbmdlOnAuZnVuY30saD17fSxtPXtjaGVja1Byb3BUeXBlczpm
dW5jdGlvbihlLHQsbil7Zm9yKHZhciByIGluIGYpe2lmKGYuaGFzT3duUHJvcGVydHkocikpdmFy
IG89ZltyXSh0LHIsZSwicHJvcCIsbnVsbCx1KTtvIGluc3RhbmNlb2YgRXJyb3ImJiEoby5tZXNz
YWdlIGluIGgpJiYoaFtvLm1lc3NhZ2VdPSEwLGEobikpfX0sZ2V0VmFsdWU6ZnVuY3Rpb24oZSl7
cmV0dXJuIGUudmFsdWVMaW5rPyhvKGUpLGUudmFsdWVMaW5rLnZhbHVlKTplLnZhbHVlfSxnZXRD
aGVja2VkOmZ1bmN0aW9uKGUpe3JldHVybiBlLmNoZWNrZWRMaW5rPyhpKGUpLGUuY2hlY2tlZExp
bmsudmFsdWUpOmUuY2hlY2tlZH0sZXhlY3V0ZU9uQ2hhbmdlOmZ1bmN0aW9uKGUsdCl7cmV0dXJu
IGUudmFsdWVMaW5rPyhvKGUpLGUudmFsdWVMaW5rLnJlcXVlc3RDaGFuZ2UodC50YXJnZXQudmFs
dWUpKTplLmNoZWNrZWRMaW5rPyhpKGUpLGUuY2hlY2tlZExpbmsucmVxdWVzdENoYW5nZSh0LnRh
cmdldC5jaGVja2VkKSk6ZS5vbkNoYW5nZT9lLm9uQ2hhbmdlLmNhbGwodm9pZCAwLHQpOnZvaWQg
MH19O3QuZXhwb3J0cz1tfSx7MTEwOjExMCwxMTc6MTE3LDEzNDoxMzQsMTM5OjEzOSwxNDI6MTQy
LDYyOjYyfV0sMjQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgxMTApLG89
KGUoMTM0KSxmdW5jdGlvbihlKXt2YXIgdD10aGlzO2lmKHQuaW5zdGFuY2VQb29sLmxlbmd0aCl7
dmFyIG49dC5pbnN0YW5jZVBvb2wucG9wKCk7cmV0dXJuIHQuY2FsbChuLGUpLG59cmV0dXJuIG5l
dyB0KGUpfSksaT1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXM7aWYobi5pbnN0YW5jZVBvb2wubGVu
Z3RoKXt2YXIgcj1uLmluc3RhbmNlUG9vbC5wb3AoKTtyZXR1cm4gbi5jYWxsKHIsZSx0KSxyfXJl
dHVybiBuZXcgbihlLHQpfSxhPWZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzO2lmKHIuaW5zdGFu
Y2VQb29sLmxlbmd0aCl7dmFyIG89ci5pbnN0YW5jZVBvb2wucG9wKCk7cmV0dXJuIHIuY2FsbChv
LGUsdCxuKSxvfXJldHVybiBuZXcgcihlLHQsbil9LHM9ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89
dGhpcztpZihvLmluc3RhbmNlUG9vbC5sZW5ndGgpe3ZhciBpPW8uaW5zdGFuY2VQb29sLnBvcCgp
O3JldHVybiBvLmNhbGwoaSxlLHQsbixyKSxpfXJldHVybiBuZXcgbyhlLHQsbixyKX0sdT1mdW5j
dGlvbihlKXt2YXIgdD10aGlzO2UgaW5zdGFuY2VvZiB0fHxyKCIyNSIpLGUuZGVzdHJ1Y3Rvcigp
LHQuaW5zdGFuY2VQb29sLmxlbmd0aDx0LnBvb2xTaXplJiZ0Lmluc3RhbmNlUG9vbC5wdXNoKGUp
fSxsPW8sYz1mdW5jdGlvbihlLHQpe3ZhciBuPWU7cmV0dXJuIG4uaW5zdGFuY2VQb29sPVtdLG4u
Z2V0UG9vbGVkPXR8fGwsbi5wb29sU2l6ZXx8KG4ucG9vbFNpemU9MTApLG4ucmVsZWFzZT11LG59
LHA9e2FkZFBvb2xpbmdUbzpjLG9uZUFyZ3VtZW50UG9vbGVyOm8sdHdvQXJndW1lbnRQb29sZXI6
aSx0aHJlZUFyZ3VtZW50UG9vbGVyOmEsZm91ckFyZ3VtZW50UG9vbGVyOnN9O3QuZXhwb3J0cz1w
fSx7MTEwOjExMCwxMzQ6MTM0fV0sMjU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcihlKXtyZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGUs
bSl8fChlW21dPWYrKyxwW2VbbV1dPXt9KSxwW2VbbV1dfXZhciBvLGk9ZSgxNDApLGE9ZSgxNyks
cz1lKDUwKSx1PWUoOTApLGw9ZSgxMDUpLGM9ZSgxMDcpLHA9e30sZD0hMSxmPTAsaD17dG9wQWJv
cnQ6ImFib3J0Iix0b3BBbmltYXRpb25FbmQ6bCgiYW5pbWF0aW9uZW5kIil8fCJhbmltYXRpb25l
bmQiLHRvcEFuaW1hdGlvbkl0ZXJhdGlvbjpsKCJhbmltYXRpb25pdGVyYXRpb24iKXx8ImFuaW1h
dGlvbml0ZXJhdGlvbiIsdG9wQW5pbWF0aW9uU3RhcnQ6bCgiYW5pbWF0aW9uc3RhcnQiKXx8ImFu
aW1hdGlvbnN0YXJ0Iix0b3BCbHVyOiJibHVyIix0b3BDYW5QbGF5OiJjYW5wbGF5Iix0b3BDYW5Q
bGF5VGhyb3VnaDoiY2FucGxheXRocm91Z2giLHRvcENoYW5nZToiY2hhbmdlIix0b3BDbGljazoi
Y2xpY2siLHRvcENvbXBvc2l0aW9uRW5kOiJjb21wb3NpdGlvbmVuZCIsdG9wQ29tcG9zaXRpb25T
dGFydDoiY29tcG9zaXRpb25zdGFydCIsdG9wQ29tcG9zaXRpb25VcGRhdGU6ImNvbXBvc2l0aW9u
dXBkYXRlIix0b3BDb250ZXh0TWVudToiY29udGV4dG1lbnUiLHRvcENvcHk6ImNvcHkiLHRvcEN1
dDoiY3V0Iix0b3BEb3VibGVDbGljazoiZGJsY2xpY2siLHRvcERyYWc6ImRyYWciLHRvcERyYWdF
bmQ6ImRyYWdlbmQiLHRvcERyYWdFbnRlcjoiZHJhZ2VudGVyIix0b3BEcmFnRXhpdDoiZHJhZ2V4
aXQiLHRvcERyYWdMZWF2ZToiZHJhZ2xlYXZlIix0b3BEcmFnT3ZlcjoiZHJhZ292ZXIiLHRvcERy
YWdTdGFydDoiZHJhZ3N0YXJ0Iix0b3BEcm9wOiJkcm9wIix0b3BEdXJhdGlvbkNoYW5nZToiZHVy
YXRpb25jaGFuZ2UiLHRvcEVtcHRpZWQ6ImVtcHRpZWQiLHRvcEVuY3J5cHRlZDoiZW5jcnlwdGVk
Iix0b3BFbmRlZDoiZW5kZWQiLHRvcEVycm9yOiJlcnJvciIsCi10b3BGb2N1czoiZm9jdXMiLHRv
cElucHV0OiJpbnB1dCIsdG9wS2V5RG93bjoia2V5ZG93biIsdG9wS2V5UHJlc3M6ImtleXByZXNz
Iix0b3BLZXlVcDoia2V5dXAiLHRvcExvYWRlZERhdGE6ImxvYWRlZGRhdGEiLHRvcExvYWRlZE1l
dGFkYXRhOiJsb2FkZWRtZXRhZGF0YSIsdG9wTG9hZFN0YXJ0OiJsb2Fkc3RhcnQiLHRvcE1vdXNl
RG93bjoibW91c2Vkb3duIix0b3BNb3VzZU1vdmU6Im1vdXNlbW92ZSIsdG9wTW91c2VPdXQ6Im1v
dXNlb3V0Iix0b3BNb3VzZU92ZXI6Im1vdXNlb3ZlciIsdG9wTW91c2VVcDoibW91c2V1cCIsdG9w
UGFzdGU6InBhc3RlIix0b3BQYXVzZToicGF1c2UiLHRvcFBsYXk6InBsYXkiLHRvcFBsYXlpbmc6
InBsYXlpbmciLHRvcFByb2dyZXNzOiJwcm9ncmVzcyIsdG9wUmF0ZUNoYW5nZToicmF0ZWNoYW5n
ZSIsdG9wU2Nyb2xsOiJzY3JvbGwiLHRvcFNlZWtlZDoic2Vla2VkIix0b3BTZWVraW5nOiJzZWVr
aW5nIix0b3BTZWxlY3Rpb25DaGFuZ2U6InNlbGVjdGlvbmNoYW5nZSIsdG9wU3RhbGxlZDoic3Rh
bGxlZCIsdG9wU3VzcGVuZDoic3VzcGVuZCIsdG9wVGV4dElucHV0OiJ0ZXh0SW5wdXQiLHRvcFRp
bWVVcGRhdGU6InRpbWV1cGRhdGUiLHRvcFRvdWNoQ2FuY2VsOiJ0b3VjaGNhbmNlbCIsdG9wVG91
Y2hFbmQ6InRvdWNoZW5kIix0b3BUb3VjaE1vdmU6InRvdWNobW92ZSIsdG9wVG91Y2hTdGFydDoi
dG91Y2hzdGFydCIsdG9wVHJhbnNpdGlvbkVuZDpsKCJ0cmFuc2l0aW9uZW5kIil8fCJ0cmFuc2l0
aW9uZW5kIix0b3BWb2x1bWVDaGFuZ2U6InZvbHVtZWNoYW5nZSIsdG9wV2FpdGluZzoid2FpdGlu
ZyIsdG9wV2hlZWw6IndoZWVsIn0sbT0iX3JlYWN0TGlzdGVuZXJzSUQiK1N0cmluZyhNYXRoLnJh
bmRvbSgpKS5zbGljZSgyKSx2PWkoe30scyx7UmVhY3RFdmVudExpc3RlbmVyOm51bGwsaW5qZWN0
aW9uOntpbmplY3RSZWFjdEV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oZSl7ZS5zZXRIYW5kbGVUb3BM
ZXZlbCh2LmhhbmRsZVRvcExldmVsKSx2LlJlYWN0RXZlbnRMaXN0ZW5lcj1lfX0sc2V0RW5hYmxl
ZDpmdW5jdGlvbihlKXt2LlJlYWN0RXZlbnRMaXN0ZW5lciYmdi5SZWFjdEV2ZW50TGlzdGVuZXIu
c2V0RW5hYmxlZChlKX0saXNFbmFibGVkOmZ1bmN0aW9uKCl7cmV0dXJuISghdi5SZWFjdEV2ZW50
TGlzdGVuZXJ8fCF2LlJlYWN0RXZlbnRMaXN0ZW5lci5pc0VuYWJsZWQoKSl9LGxpc3RlblRvOmZ1
bmN0aW9uKGUsdCl7Zm9yKHZhciBuPXQsbz1yKG4pLGk9YS5yZWdpc3RyYXRpb25OYW1lRGVwZW5k
ZW5jaWVzW2VdLHM9MDtzPGkubGVuZ3RoO3MrKyl7dmFyIHU9aVtzXTtvLmhhc093blByb3BlcnR5
KHUpJiZvW3VdfHwoInRvcFdoZWVsIj09PXU/Yygid2hlZWwiKT92LlJlYWN0RXZlbnRMaXN0ZW5l
ci50cmFwQnViYmxlZEV2ZW50KCJ0b3BXaGVlbCIsIndoZWVsIixuKTpjKCJtb3VzZXdoZWVsIik/
di5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgidG9wV2hlZWwiLCJtb3VzZXdo
ZWVsIixuKTp2LlJlYWN0RXZlbnRMaXN0ZW5lci50cmFwQnViYmxlZEV2ZW50KCJ0b3BXaGVlbCIs
IkRPTU1vdXNlU2Nyb2xsIixuKToidG9wU2Nyb2xsIj09PXU/Yygic2Nyb2xsIiwhMCk/di5SZWFj
dEV2ZW50TGlzdGVuZXIudHJhcENhcHR1cmVkRXZlbnQoInRvcFNjcm9sbCIsInNjcm9sbCIsbik6
di5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgidG9wU2Nyb2xsIiwic2Nyb2xs
Iix2LlJlYWN0RXZlbnRMaXN0ZW5lci5XSU5ET1dfSEFORExFKToidG9wRm9jdXMiPT09dXx8InRv
cEJsdXIiPT09dT8oYygiZm9jdXMiLCEwKT8odi5SZWFjdEV2ZW50TGlzdGVuZXIudHJhcENhcHR1
cmVkRXZlbnQoInRvcEZvY3VzIiwiZm9jdXMiLG4pLHYuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBD
YXB0dXJlZEV2ZW50KCJ0b3BCbHVyIiwiYmx1ciIsbikpOmMoImZvY3VzaW4iKSYmKHYuUmVhY3RF
dmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQoInRvcEZvY3VzIiwiZm9jdXNpbiIsbiksdi5S
ZWFjdEV2ZW50TGlzdGVuZXIudHJhcEJ1YmJsZWRFdmVudCgidG9wQmx1ciIsImZvY3Vzb3V0Iixu
KSksby50b3BCbHVyPSEwLG8udG9wRm9jdXM9ITApOmguaGFzT3duUHJvcGVydHkodSkmJnYuUmVh
Y3RFdmVudExpc3RlbmVyLnRyYXBCdWJibGVkRXZlbnQodSxoW3VdLG4pLG9bdV09ITApfX0sdHJh
cEJ1YmJsZWRFdmVudDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHYuUmVhY3RFdmVudExpc3RlbmVy
LnRyYXBCdWJibGVkRXZlbnQoZSx0LG4pfSx0cmFwQ2FwdHVyZWRFdmVudDpmdW5jdGlvbihlLHQs
bil7cmV0dXJuIHYuUmVhY3RFdmVudExpc3RlbmVyLnRyYXBDYXB0dXJlZEV2ZW50KGUsdCxuKX0s
c3VwcG9ydHNFdmVudFBhZ2VYWTpmdW5jdGlvbigpe2lmKCFkb2N1bWVudC5jcmVhdGVFdmVudCly
ZXR1cm4hMTt2YXIgZT1kb2N1bWVudC5jcmVhdGVFdmVudCgiTW91c2VFdmVudCIpO3JldHVybiBu
dWxsIT1lJiYicGFnZVgiaW4gZX0sZW5zdXJlU2Nyb2xsVmFsdWVNb25pdG9yaW5nOmZ1bmN0aW9u
KCl7aWYodm9pZCAwPT09byYmKG89di5zdXBwb3J0c0V2ZW50UGFnZVhZKCkpLCFvJiYhZCl7dmFy
IGU9dS5yZWZyZXNoU2Nyb2xsVmFsdWVzO3YuUmVhY3RFdmVudExpc3RlbmVyLm1vbml0b3JTY3Jv
bGxWYWx1ZShlKSxkPSEwfX19KTt0LmV4cG9ydHM9dn0sezEwNToxMDUsMTA3OjEwNywxNDA6MTQw
LDE3OjE3LDUwOjUwLDkwOjkwfV0sMjY6W2Z1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24obil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7dmFyIG89dm9pZCAwPT09ZVtuXTtudWxsIT10
JiZvJiYoZVtuXT1pKHQsITApKX12YXIgbz1lKDY0KSxpPWUoMTA2KSxhPShlKDIyKSxlKDExMykp
LHM9ZSgxMTQpO2UoMTM5KTt2b2lkIDAhPT1uJiZuLmVudjt2YXIgdT17aW5zdGFudGlhdGVDaGls
ZHJlbjpmdW5jdGlvbihlLHQsbixvKXtpZihudWxsPT1lKXJldHVybiBudWxsO3ZhciBpPXt9O3Jl
dHVybiBzKGUscixpKSxpfSx1cGRhdGVDaGlsZHJlbjpmdW5jdGlvbihlLHQsbixyLHMsdSxsLGMs
cCl7aWYodHx8ZSl7dmFyIGQsZjtmb3IoZCBpbiB0KWlmKHQuaGFzT3duUHJvcGVydHkoZCkpe2Y9
ZSYmZVtkXTt2YXIgaD1mJiZmLl9jdXJyZW50RWxlbWVudCxtPXRbZF07aWYobnVsbCE9ZiYmYSho
LG0pKW8ucmVjZWl2ZUNvbXBvbmVudChmLG0scyxjKSx0W2RdPWY7ZWxzZXtmJiYocltkXT1vLmdl
dEhvc3ROb2RlKGYpLG8udW5tb3VudENvbXBvbmVudChmLCExKSk7dmFyIHY9aShtLCEwKTt0W2Rd
PXY7dmFyIGc9by5tb3VudENvbXBvbmVudCh2LHMsdSxsLGMscCk7bi5wdXNoKGcpfX1mb3IoZCBp
biBlKSFlLmhhc093blByb3BlcnR5KGQpfHx0JiZ0Lmhhc093blByb3BlcnR5KGQpfHwoZj1lW2Rd
LHJbZF09by5nZXRIb3N0Tm9kZShmKSxvLnVubW91bnRDb21wb25lbnQoZiwhMSkpfX0sdW5tb3Vu
dENoaWxkcmVuOmZ1bmN0aW9uKGUsdCl7Zm9yKHZhciBuIGluIGUpaWYoZS5oYXNPd25Qcm9wZXJ0
eShuKSl7dmFyIHI9ZVtuXTtvLnVubW91bnRDb21wb25lbnQocix0KX19fTt0LmV4cG9ydHM9dX0p
LmNhbGwodGhpcyx2b2lkIDApfSx7MTA2OjEwNiwxMTM6MTEzLDExNDoxMTQsMTM5OjEzOSwyMjoy
Miw2NDo2NH1dLDI3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoOCksbz1l
KDM1KSxpPXtwcm9jZXNzQ2hpbGRyZW5VcGRhdGVzOm8uZGFuZ2Vyb3VzbHlQcm9jZXNzQ2hpbGRy
ZW5VcGRhdGVzLHJlcGxhY2VOb2RlV2l0aE1hcmt1cDpyLmRhbmdlcm91c2x5UmVwbGFjZU5vZGVX
aXRoTWFya3VwfTt0LmV4cG9ydHM9aX0sezM1OjM1LDg6OH1dLDI4OltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO3ZhciByPWUoMTEwKSxvPShlKDEzNCksITEpLGk9e3JlcGxhY2VOb2RlV2l0
aE1hcmt1cDpudWxsLHByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6bnVsbCxpbmplY3Rpb246e2luamVj
dEVudmlyb25tZW50OmZ1bmN0aW9uKGUpe28mJnIoIjEwNCIpLGkucmVwbGFjZU5vZGVXaXRoTWFy
a3VwPWUucmVwbGFjZU5vZGVXaXRoTWFya3VwLGkucHJvY2Vzc0NoaWxkcmVuVXBkYXRlcz1lLnBy
b2Nlc3NDaGlsZHJlblVwZGF0ZXMsbz0hMH19fTt0LmV4cG9ydHM9aX0sezExMDoxMTAsMTM0OjEz
NH1dLDI5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7fWZ1bmN0
aW9uIG8oZSl7cmV0dXJuISghZS5wcm90b3R5cGV8fCFlLnByb3RvdHlwZS5pc1JlYWN0Q29tcG9u
ZW50KX1mdW5jdGlvbiBpKGUpe3JldHVybiEoIWUucHJvdG90eXBlfHwhZS5wcm90b3R5cGUuaXNQ
dXJlUmVhY3RDb21wb25lbnQpfXZhciBhPWUoMTEwKSxzPWUoMTQwKSx1PWUoMTE3KSxsPWUoMjgp
LGM9ZSgxMTYpLHA9ZSg0OSksZD1lKDU2KSxmPShlKDU3KSxlKDYwKSksaD1lKDY0KSxtPWUoMTI3
KSx2PShlKDEzNCksZSgxMzgpKSxnPWUoMTEzKSx5PShlKDEzOSkse0ltcHVyZUNsYXNzOjAsUHVy
ZUNsYXNzOjEsU3RhdGVsZXNzRnVuY3Rpb25hbDoyfSk7ci5wcm90b3R5cGUucmVuZGVyPWZ1bmN0
aW9uKCl7dmFyIGU9ZC5nZXQodGhpcykuX2N1cnJlbnRFbGVtZW50LnR5cGUsdD1lKHRoaXMucHJv
cHMsdGhpcy5jb250ZXh0LHRoaXMudXBkYXRlcik7cmV0dXJuIHR9O3ZhciBfPTEsQz17Y29uc3Ry
dWN0OmZ1bmN0aW9uKGUpe3RoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fcm9vdE5vZGVJRD0w
LHRoaXMuX2NvbXBvc2l0ZVR5cGU9bnVsbCx0aGlzLl9pbnN0YW5jZT1udWxsLHRoaXMuX2hvc3RQ
YXJlbnQ9bnVsbCx0aGlzLl9ob3N0Q29udGFpbmVySW5mbz1udWxsLHRoaXMuX3VwZGF0ZUJhdGNo
TnVtYmVyPW51bGwsdGhpcy5fcGVuZGluZ0VsZW1lbnQ9bnVsbCx0aGlzLl9wZW5kaW5nU3RhdGVR
dWV1ZT1udWxsLHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU9ITEsdGhpcy5fcGVuZGluZ0ZvcmNl
VXBkYXRlPSExLHRoaXMuX3JlbmRlcmVkTm9kZVR5cGU9bnVsbCx0aGlzLl9yZW5kZXJlZENvbXBv
bmVudD1udWxsLHRoaXMuX2NvbnRleHQ9bnVsbCx0aGlzLl9tb3VudE9yZGVyPTAsdGhpcy5fdG9w
TGV2ZWxXcmFwcGVyPW51bGwsdGhpcy5fcGVuZGluZ0NhbGxiYWNrcz1udWxsLHRoaXMuX2NhbGxl
ZENvbXBvbmVudFdpbGxVbm1vdW50PSExfSxtb3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQsbixz
KXt0aGlzLl9jb250ZXh0PXMsdGhpcy5fbW91bnRPcmRlcj1fKyssdGhpcy5faG9zdFBhcmVudD10
LHRoaXMuX2hvc3RDb250YWluZXJJbmZvPW47dmFyIGwsYz10aGlzLl9jdXJyZW50RWxlbWVudC5w
cm9wcyxwPXRoaXMuX3Byb2Nlc3NDb250ZXh0KHMpLGY9dGhpcy5fY3VycmVudEVsZW1lbnQudHlw
ZSxoPWUuZ2V0VXBkYXRlUXVldWUoKSx2PW8oZiksZz10aGlzLl9jb25zdHJ1Y3RDb21wb25lbnQo
dixjLHAsaCk7dnx8bnVsbCE9ZyYmbnVsbCE9Zy5yZW5kZXI/aShmKT90aGlzLl9jb21wb3NpdGVU
eXBlPXkuUHVyZUNsYXNzOnRoaXMuX2NvbXBvc2l0ZVR5cGU9eS5JbXB1cmVDbGFzczoobD1nLG51
bGw9PT1nfHwhMT09PWd8fHUuaXNWYWxpZEVsZW1lbnQoZyl8fGEoIjEwNSIsZi5kaXNwbGF5TmFt
ZXx8Zi5uYW1lfHwiQ29tcG9uZW50IiksZz1uZXcgcihmKSx0aGlzLl9jb21wb3NpdGVUeXBlPXku
U3RhdGVsZXNzRnVuY3Rpb25hbCksZy5wcm9wcz1jLGcuY29udGV4dD1wLGcucmVmcz1tLGcudXBk
YXRlcj1oLHRoaXMuX2luc3RhbmNlPWcsZC5zZXQoZyx0aGlzKTt2YXIgQz1nLnN0YXRlO3ZvaWQg
MD09PUMmJihnLnN0YXRlPUM9bnVsbCksKCJvYmplY3QiIT10eXBlb2YgQ3x8QXJyYXkuaXNBcnJh
eShDKSkmJmEoIjEwNiIsdGhpcy5nZXROYW1lKCl8fCJSZWFjdENvbXBvc2l0ZUNvbXBvbmVudCIp
LHRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlPW51bGwsdGhpcy5fcGVuZGluZ1JlcGxhY2VTdGF0ZT0h
MSx0aGlzLl9wZW5kaW5nRm9yY2VVcGRhdGU9ITE7dmFyIGI7cmV0dXJuIGI9Zy51bnN0YWJsZV9o
YW5kbGVFcnJvcj90aGlzLnBlcmZvcm1Jbml0aWFsTW91bnRXaXRoRXJyb3JIYW5kbGluZyhsLHQs
bixlLHMpOnRoaXMucGVyZm9ybUluaXRpYWxNb3VudChsLHQsbixlLHMpLGcuY29tcG9uZW50RGlk
TW91bnQmJmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShnLmNvbXBvbmVudERpZE1vdW50
LGcpLGJ9LF9jb25zdHJ1Y3RDb21wb25lbnQ6ZnVuY3Rpb24oZSx0LG4scil7cmV0dXJuIHRoaXMu
X2NvbnN0cnVjdENvbXBvbmVudFdpdGhvdXRPd25lcihlLHQsbixyKX0sX2NvbnN0cnVjdENvbXBv
bmVudFdpdGhvdXRPd25lcjpmdW5jdGlvbihlLHQsbixyKXt2YXIgbz10aGlzLl9jdXJyZW50RWxl
bWVudC50eXBlO3JldHVybiBlP25ldyBvKHQsbixyKTpvKHQsbixyKX0scGVyZm9ybUluaXRpYWxN
b3VudFdpdGhFcnJvckhhbmRsaW5nOmZ1bmN0aW9uKGUsdCxuLHIsbyl7dmFyIGksYT1yLmNoZWNr
cG9pbnQoKTt0cnl7aT10aGlzLnBlcmZvcm1Jbml0aWFsTW91bnQoZSx0LG4scixvKX1jYXRjaChz
KXtyLnJvbGxiYWNrKGEpLHRoaXMuX2luc3RhbmNlLnVuc3RhYmxlX2hhbmRsZUVycm9yKHMpLHRo
aXMuX3BlbmRpbmdTdGF0ZVF1ZXVlJiYodGhpcy5faW5zdGFuY2Uuc3RhdGU9dGhpcy5fcHJvY2Vz
c1BlbmRpbmdTdGF0ZSh0aGlzLl9pbnN0YW5jZS5wcm9wcyx0aGlzLl9pbnN0YW5jZS5jb250ZXh0
KSksYT1yLmNoZWNrcG9pbnQoKSx0aGlzLl9yZW5kZXJlZENvbXBvbmVudC51bm1vdW50Q29tcG9u
ZW50KCEwKSxyLnJvbGxiYWNrKGEpLGk9dGhpcy5wZXJmb3JtSW5pdGlhbE1vdW50KGUsdCxuLHIs
byl9cmV0dXJuIGl9LHBlcmZvcm1Jbml0aWFsTW91bnQ6ZnVuY3Rpb24oZSx0LG4scixvKXt2YXIg
aT10aGlzLl9pbnN0YW5jZTtpLmNvbXBvbmVudFdpbGxNb3VudCYmKGkuY29tcG9uZW50V2lsbE1v
dW50KCksdGhpcy5fcGVuZGluZ1N0YXRlUXVldWUmJihpLnN0YXRlPXRoaXMuX3Byb2Nlc3NQZW5k
aW5nU3RhdGUoaS5wcm9wcyxpLmNvbnRleHQpKSksdm9pZCAwPT09ZSYmKGU9dGhpcy5fcmVuZGVy
VmFsaWRhdGVkQ29tcG9uZW50KCkpO3ZhciBhPWYuZ2V0VHlwZShlKTt0aGlzLl9yZW5kZXJlZE5v
ZGVUeXBlPWE7dmFyIHM9dGhpcy5faW5zdGFudGlhdGVSZWFjdENvbXBvbmVudChlLGEhPT1mLkVN
UFRZKTtyZXR1cm4gdGhpcy5fcmVuZGVyZWRDb21wb25lbnQ9cyxoLm1vdW50Q29tcG9uZW50KHMs
cix0LG4sdGhpcy5fcHJvY2Vzc0NoaWxkQ29udGV4dChvKSwwKX0sZ2V0SG9zdE5vZGU6ZnVuY3Rp
b24oKXtyZXR1cm4gaC5nZXRIb3N0Tm9kZSh0aGlzLl9yZW5kZXJlZENvbXBvbmVudCl9LHVubW91
bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSl7aWYodGhpcy5fcmVuZGVyZWRDb21wb25lbnQpe3ZhciB0
PXRoaXMuX2luc3RhbmNlO2lmKHQuY29tcG9uZW50V2lsbFVubW91bnQmJiF0Ll9jYWxsZWRDb21w
b25lbnRXaWxsVW5tb3VudClpZih0Ll9jYWxsZWRDb21wb25lbnRXaWxsVW5tb3VudD0hMCxlKXt2
YXIgbj10aGlzLmdldE5hbWUoKSsiLmNvbXBvbmVudFdpbGxVbm1vdW50KCkiO3AuaW52b2tlR3Vh
cmRlZENhbGxiYWNrKG4sdC5jb21wb25lbnRXaWxsVW5tb3VudC5iaW5kKHQpKX1lbHNlIHQuY29t
cG9uZW50V2lsbFVubW91bnQoKTt0aGlzLl9yZW5kZXJlZENvbXBvbmVudCYmKGgudW5tb3VudENv
bXBvbmVudCh0aGlzLl9yZW5kZXJlZENvbXBvbmVudCxlKSx0aGlzLl9yZW5kZXJlZE5vZGVUeXBl
PW51bGwsdGhpcy5fcmVuZGVyZWRDb21wb25lbnQ9bnVsbCx0aGlzLl9pbnN0YW5jZT1udWxsKSx0
aGlzLl9wZW5kaW5nU3RhdGVRdWV1ZT1udWxsLHRoaXMuX3BlbmRpbmdSZXBsYWNlU3RhdGU9ITEs
dGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlPSExLHRoaXMuX3BlbmRpbmdDYWxsYmFja3M9bnVsbCx0
aGlzLl9wZW5kaW5nRWxlbWVudD1udWxsLHRoaXMuX2NvbnRleHQ9bnVsbCx0aGlzLl9yb290Tm9k
ZUlEPTAsdGhpcy5fdG9wTGV2ZWxXcmFwcGVyPW51bGwsZC5yZW1vdmUodCl9fSxfbWFza0NvbnRl
eHQ6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSxuPXQuY29udGV4
dFR5cGVzO2lmKCFuKXJldHVybiBtO3ZhciByPXt9O2Zvcih2YXIgbyBpbiBuKXJbb109ZVtvXTty
ZXR1cm4gcn0sX3Byb2Nlc3NDb250ZXh0OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLl9tYXNrQ29u
dGV4dChlKX0sX3Byb2Nlc3NDaGlsZENvbnRleHQ6ZnVuY3Rpb24oZSl7dmFyIHQsbj10aGlzLl9j
dXJyZW50RWxlbWVudC50eXBlLHI9dGhpcy5faW5zdGFuY2U7aWYoci5nZXRDaGlsZENvbnRleHQm
Jih0PXIuZ2V0Q2hpbGRDb250ZXh0KCkpLHQpeyJvYmplY3QiIT10eXBlb2Ygbi5jaGlsZENvbnRl
eHRUeXBlcyYmYSgiMTA3Iix0aGlzLmdldE5hbWUoKXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50
Iik7Zm9yKHZhciBvIGluIHQpbyBpbiBuLmNoaWxkQ29udGV4dFR5cGVzfHxhKCIxMDgiLHRoaXMu
Z2V0TmFtZSgpfHwiUmVhY3RDb21wb3NpdGVDb21wb25lbnQiLG8pO3JldHVybiBzKHt9LGUsdCl9
cmV0dXJuIGV9LF9jaGVja0NvbnRleHRUeXBlczpmdW5jdGlvbihlLHQsbil7fSxyZWNlaXZlQ29t
cG9uZW50OmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9jdXJyZW50RWxlbWVudCxvPXRoaXMu
X2NvbnRleHQ7dGhpcy5fcGVuZGluZ0VsZW1lbnQ9bnVsbCx0aGlzLnVwZGF0ZUNvbXBvbmVudCh0
LHIsZSxvLG4pfSxwZXJmb3JtVXBkYXRlSWZOZWNlc3Nhcnk6ZnVuY3Rpb24oZSl7bnVsbCE9dGhp
cy5fcGVuZGluZ0VsZW1lbnQ/aC5yZWNlaXZlQ29tcG9uZW50KHRoaXMsdGhpcy5fcGVuZGluZ0Vs
ZW1lbnQsZSx0aGlzLl9jb250ZXh0KTpudWxsIT09dGhpcy5fcGVuZGluZ1N0YXRlUXVldWV8fHRo
aXMuX3BlbmRpbmdGb3JjZVVwZGF0ZT90aGlzLnVwZGF0ZUNvbXBvbmVudChlLHRoaXMuX2N1cnJl
bnRFbGVtZW50LHRoaXMuX2N1cnJlbnRFbGVtZW50LHRoaXMuX2NvbnRleHQsdGhpcy5fY29udGV4
dCk6dGhpcy5fdXBkYXRlQmF0Y2hOdW1iZXI9bnVsbH0sdXBkYXRlQ29tcG9uZW50OmZ1bmN0aW9u
KGUsdCxuLHIsbyl7dmFyIGk9dGhpcy5faW5zdGFuY2U7bnVsbD09aSYmYSgiMTM2Iix0aGlzLmdl
dE5hbWUoKXx8IlJlYWN0Q29tcG9zaXRlQ29tcG9uZW50Iik7dmFyIHMsdT0hMTt0aGlzLl9jb250
ZXh0PT09bz9zPWkuY29udGV4dDoocz10aGlzLl9wcm9jZXNzQ29udGV4dChvKSx1PSEwKTt2YXIg
bD10LnByb3BzLGM9bi5wcm9wczt0IT09biYmKHU9ITApLHUmJmkuY29tcG9uZW50V2lsbFJlY2Vp
dmVQcm9wcyYmaS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKGMscyk7dmFyIHA9dGhpcy5fcHJv
Y2Vzc1BlbmRpbmdTdGF0ZShjLHMpLGQ9ITA7dGhpcy5fcGVuZGluZ0ZvcmNlVXBkYXRlfHwoaS5z
aG91bGRDb21wb25lbnRVcGRhdGU/ZD1pLnNob3VsZENvbXBvbmVudFVwZGF0ZShjLHAscyk6dGhp
cy5fY29tcG9zaXRlVHlwZT09PXkuUHVyZUNsYXNzJiYoZD0hdihsLGMpfHwhdihpLnN0YXRlLHAp
KSksdGhpcy5fdXBkYXRlQmF0Y2hOdW1iZXI9bnVsbCxkPyh0aGlzLl9wZW5kaW5nRm9yY2VVcGRh
dGU9ITEsdGhpcy5fcGVyZm9ybUNvbXBvbmVudFVwZGF0ZShuLGMscCxzLGUsbykpOih0aGlzLl9j
dXJyZW50RWxlbWVudD1uLHRoaXMuX2NvbnRleHQ9byxpLnByb3BzPWMsaS5zdGF0ZT1wLGkuY29u
dGV4dD1zKX0sX3Byb2Nlc3NQZW5kaW5nU3RhdGU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9p
bnN0YW5jZSxyPXRoaXMuX3BlbmRpbmdTdGF0ZVF1ZXVlLG89dGhpcy5fcGVuZGluZ1JlcGxhY2VT
dGF0ZTtpZih0aGlzLl9wZW5kaW5nUmVwbGFjZVN0YXRlPSExLHRoaXMuX3BlbmRpbmdTdGF0ZVF1
ZXVlPW51bGwsIXIpcmV0dXJuIG4uc3RhdGU7aWYobyYmMT09PXIubGVuZ3RoKXJldHVybiByWzBd
O2Zvcih2YXIgaT1zKHt9LG8/clswXTpuLnN0YXRlKSxhPW8/MTowO2E8ci5sZW5ndGg7YSsrKXt2
YXIgdT1yW2FdO3MoaSwiZnVuY3Rpb24iPT10eXBlb2YgdT91LmNhbGwobixpLGUsdCk6dSl9cmV0
dXJuIGl9LF9wZXJmb3JtQ29tcG9uZW50VXBkYXRlOmZ1bmN0aW9uKGUsdCxuLHIsbyxpKXt2YXIg
YSxzLHUsbD10aGlzLl9pbnN0YW5jZSxjPUJvb2xlYW4obC5jb21wb25lbnREaWRVcGRhdGUpO2Mm
JihhPWwucHJvcHMscz1sLnN0YXRlLHU9bC5jb250ZXh0KSxsLmNvbXBvbmVudFdpbGxVcGRhdGUm
JmwuY29tcG9uZW50V2lsbFVwZGF0ZSh0LG4sciksdGhpcy5fY3VycmVudEVsZW1lbnQ9ZSx0aGlz
Ll9jb250ZXh0PWksbC5wcm9wcz10LGwuc3RhdGU9bixsLmNvbnRleHQ9cix0aGlzLl91cGRhdGVS
ZW5kZXJlZENvbXBvbmVudChvLGkpLGMmJm8uZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShs
LmNvbXBvbmVudERpZFVwZGF0ZS5iaW5kKGwsYSxzLHUpLGwpfSxfdXBkYXRlUmVuZGVyZWRDb21w
b25lbnQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLl9yZW5kZXJlZENvbXBvbmVudCxyPW4uX2N1
cnJlbnRFbGVtZW50LG89dGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50KCk7aWYoZyhyLG8p
KWgucmVjZWl2ZUNvbXBvbmVudChuLG8sZSx0aGlzLl9wcm9jZXNzQ2hpbGRDb250ZXh0KHQpKTtl
bHNle3ZhciBpPWguZ2V0SG9zdE5vZGUobik7aC51bm1vdW50Q29tcG9uZW50KG4sITEpO3ZhciBh
PWYuZ2V0VHlwZShvKTt0aGlzLl9yZW5kZXJlZE5vZGVUeXBlPWE7dmFyIHM9dGhpcy5faW5zdGFu
dGlhdGVSZWFjdENvbXBvbmVudChvLGEhPT1mLkVNUFRZKTt0aGlzLl9yZW5kZXJlZENvbXBvbmVu
dD1zO3ZhciB1PWgubW91bnRDb21wb25lbnQocyxlLHRoaXMuX2hvc3RQYXJlbnQsdGhpcy5faG9z
dENvbnRhaW5lckluZm8sdGhpcy5fcHJvY2Vzc0NoaWxkQ29udGV4dCh0KSwwKTt0aGlzLl9yZXBs
YWNlTm9kZVdpdGhNYXJrdXAoaSx1LG4pfX0sX3JlcGxhY2VOb2RlV2l0aE1hcmt1cDpmdW5jdGlv
bihlLHQsbil7bC5yZXBsYWNlTm9kZVdpdGhNYXJrdXAoZSx0LG4pfSxfcmVuZGVyVmFsaWRhdGVk
Q29tcG9uZW50V2l0aG91dE93bmVyT3JDb250ZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX2lu
c3RhbmNlLnJlbmRlcigpfSxfcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50OmZ1bmN0aW9uKCl7dmFy
IGU7aWYodGhpcy5fY29tcG9zaXRlVHlwZSE9PXkuU3RhdGVsZXNzRnVuY3Rpb25hbCl7Yy5jdXJy
ZW50PXRoaXM7dHJ5e2U9dGhpcy5fcmVuZGVyVmFsaWRhdGVkQ29tcG9uZW50V2l0aG91dE93bmVy
T3JDb250ZXh0KCl9ZmluYWxseXtjLmN1cnJlbnQ9bnVsbH19ZWxzZSBlPXRoaXMuX3JlbmRlclZh
bGlkYXRlZENvbXBvbmVudFdpdGhvdXRPd25lck9yQ29udGV4dCgpO3JldHVybiBudWxsPT09ZXx8
ITE9PT1lfHx1LmlzVmFsaWRFbGVtZW50KGUpfHxhKCIxMDkiLHRoaXMuZ2V0TmFtZSgpfHwiUmVh
Y3RDb21wb3NpdGVDb21wb25lbnQiKSxlfSxhdHRhY2hSZWY6ZnVuY3Rpb24oZSx0KXt2YXIgbj10
aGlzLmdldFB1YmxpY0luc3RhbmNlKCk7bnVsbD09biYmYSgiMTEwIik7dmFyIHI9dC5nZXRQdWJs
aWNJbnN0YW5jZSgpOyhuLnJlZnM9PT1tP24ucmVmcz17fTpuLnJlZnMpW2VdPXJ9LGRldGFjaFJl
ZjpmdW5jdGlvbihlKXtkZWxldGUgdGhpcy5nZXRQdWJsaWNJbnN0YW5jZSgpLnJlZnNbZV19LGdl
dE5hbWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9jdXJyZW50RWxlbWVudC50eXBlLHQ9dGhpcy5f
aW5zdGFuY2UmJnRoaXMuX2luc3RhbmNlLmNvbnN0cnVjdG9yO3JldHVybiBlLmRpc3BsYXlOYW1l
fHx0JiZ0LmRpc3BsYXlOYW1lfHxlLm5hbWV8fHQmJnQubmFtZXx8bnVsbH0sZ2V0UHVibGljSW5z
dGFuY2U6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLl9pbnN0YW5jZTtyZXR1cm4gdGhpcy5fY29tcG9z
aXRlVHlwZT09PXkuU3RhdGVsZXNzRnVuY3Rpb25hbD9udWxsOmV9LF9pbnN0YW50aWF0ZVJlYWN0
Q29tcG9uZW50Om51bGx9O3QuZXhwb3J0cz1DfSx7MTEwOjExMCwxMTM6MTEzLDExNjoxMTYsMTE3
OjExNywxMjc6MTI3LDEzNDoxMzQsMTM4OjEzOCwxMzk6MTM5LDE0MDoxNDAsMjg6MjgsNDk6NDks
NTY6NTYsNTc6NTcsNjA6NjAsNjQ6NjR9XSwzMDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe2lmKGUpe3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50Ll9vd25lcnx8bnVs
bDtpZih0KXt2YXIgbj10LmdldE5hbWUoKTtpZihuKXJldHVybiIgVGhpcyBET00gbm9kZSB3YXMg
cmVuZGVyZWQgYnkgYCIrbisiYC4ifX1yZXR1cm4iIn1mdW5jdGlvbiBvKGUsdCl7dCYmKFlbZS5f
dGFnXSYmKG51bGwhPXQuY2hpbGRyZW58fG51bGwhPXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwp
JiZtKCIxMzciLGUuX3RhZyxlLl9jdXJyZW50RWxlbWVudC5fb3duZXI/IiBDaGVjayB0aGUgcmVu
ZGVyIG1ldGhvZCBvZiAiK2UuX2N1cnJlbnRFbGVtZW50Ll9vd25lci5nZXROYW1lKCkrIi4iOiIi
KSxudWxsIT10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MJiYobnVsbCE9dC5jaGlsZHJlbiYmbSgi
NjAiKSwib2JqZWN0Ij09dHlwZW9mIHQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJkIgaW4gdC5k
YW5nZXJvdXNseVNldElubmVySFRNTHx8bSgiNjEiKSksbnVsbCE9dC5zdHlsZSYmIm9iamVjdCIh
PXR5cGVvZiB0LnN0eWxlJiZtKCI2MiIscihlKSkpfWZ1bmN0aW9uIGkoZSx0LG4scil7aWYoIShy
IGluc3RhbmNlb2YgUikpe3ZhciBvPWUuX2hvc3RDb250YWluZXJJbmZvLGk9by5fbm9kZSYmby5f
bm9kZS5ub2RlVHlwZT09PUgscz1pP28uX25vZGU6by5fb3duZXJEb2N1bWVudDtGKHQscyksci5n
ZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGEse2luc3Q6ZSxyZWdpc3RyYXRpb25OYW1lOnQs
bGlzdGVuZXI6bn0pfX1mdW5jdGlvbiBhKCl7dmFyIGU9dGhpczt4LnB1dExpc3RlbmVyKGUuaW5z
dCxlLnJlZ2lzdHJhdGlvbk5hbWUsZS5saXN0ZW5lcil9ZnVuY3Rpb24gcygpe3ZhciBlPXRoaXM7
Uy5wb3N0TW91bnRXcmFwcGVyKGUpfWZ1bmN0aW9uIHUoKXt2YXIgZT10aGlzO08ucG9zdE1vdW50
V3JhcHBlcihlKX1mdW5jdGlvbiBsKCl7dmFyIGU9dGhpcztOLnBvc3RNb3VudFdyYXBwZXIoZSl9
ZnVuY3Rpb24gYygpe3ZhciBlPXRoaXM7ZS5fcm9vdE5vZGVJRHx8bSgiNjMiKTt2YXIgdD1VKGUp
O3N3aXRjaCh0fHxtKCI2NCIpLGUuX3RhZyl7Y2FzZSJpZnJhbWUiOmNhc2Uib2JqZWN0IjplLl93
cmFwcGVyU3RhdGUubGlzdGVuZXJzPVtrLnRyYXBCdWJibGVkRXZlbnQoInRvcExvYWQiLCJsb2Fk
Iix0KV07YnJlYWs7Y2FzZSJ2aWRlbyI6Y2FzZSJhdWRpbyI6ZS5fd3JhcHBlclN0YXRlLmxpc3Rl
bmVycz1bXTtmb3IodmFyIG4gaW4gcSlxLmhhc093blByb3BlcnR5KG4pJiZlLl93cmFwcGVyU3Rh
dGUubGlzdGVuZXJzLnB1c2goay50cmFwQnViYmxlZEV2ZW50KG4scVtuXSx0KSk7YnJlYWs7Y2Fz
ZSJzb3VyY2UiOmUuX3dyYXBwZXJTdGF0ZS5saXN0ZW5lcnM9W2sudHJhcEJ1YmJsZWRFdmVudCgi
dG9wRXJyb3IiLCJlcnJvciIsdCldO2JyZWFrO2Nhc2UiaW1nIjplLl93cmFwcGVyU3RhdGUubGlz
dGVuZXJzPVtrLnRyYXBCdWJibGVkRXZlbnQoInRvcEVycm9yIiwiZXJyb3IiLHQpLGsudHJhcEJ1
YmJsZWRFdmVudCgidG9wTG9hZCIsImxvYWQiLHQpXTticmVhaztjYXNlImZvcm0iOmUuX3dyYXBw
ZXJTdGF0ZS5saXN0ZW5lcnM9W2sudHJhcEJ1YmJsZWRFdmVudCgidG9wUmVzZXQiLCJyZXNldCIs
dCksay50cmFwQnViYmxlZEV2ZW50KCJ0b3BTdWJtaXQiLCJzdWJtaXQiLHQpXTticmVhaztjYXNl
ImlucHV0IjpjYXNlInNlbGVjdCI6Y2FzZSJ0ZXh0YXJlYSI6ZS5fd3JhcHBlclN0YXRlLmxpc3Rl
bmVycz1bay50cmFwQnViYmxlZEV2ZW50KCJ0b3BJbnZhbGlkIiwiaW52YWxpZCIsdCldfX1mdW5j
dGlvbiBwKCl7TS5wb3N0VXBkYXRlV3JhcHBlcih0aGlzKX1mdW5jdGlvbiBkKGUpe0cuY2FsbChR
LGUpfHwoWC50ZXN0KGUpfHxtKCI2NSIsZSksUVtlXT0hMCl9ZnVuY3Rpb24gZihlLHQpe3JldHVy
biBlLmluZGV4T2YoIi0iKT49MHx8bnVsbCE9dC5pc31mdW5jdGlvbiBoKGUpe3ZhciB0PWUudHlw
ZTtkKHQpLHRoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fdGFnPXQudG9Mb3dlckNhc2UoKSx0
aGlzLl9uYW1lc3BhY2VVUkk9bnVsbCx0aGlzLl9yZW5kZXJlZENoaWxkcmVuPW51bGwsdGhpcy5f
cHJldmlvdXNTdHlsZT1udWxsLHRoaXMuX3ByZXZpb3VzU3R5bGVDb3B5PW51bGwsdGhpcy5faG9z
dE5vZGU9bnVsbCx0aGlzLl9ob3N0UGFyZW50PW51bGwsdGhpcy5fcm9vdE5vZGVJRD0wLHRoaXMu
X2RvbUlEPTAsdGhpcy5faG9zdENvbnRhaW5lckluZm89bnVsbCx0aGlzLl93cmFwcGVyU3RhdGU9
bnVsbCx0aGlzLl90b3BMZXZlbFdyYXBwZXI9bnVsbCx0aGlzLl9mbGFncz0wfXZhciBtPWUoMTEw
KSx2PWUoMTQwKSxnPWUoMikseT1lKDUpLF89ZSg5KSxDPWUoMTApLGI9ZSgxMSksRT1lKDEyKSx4
PWUoMTYpLHc9ZSgxNyksaz1lKDI1KSxUPWUoMzEpLFA9ZSgzMiksUz1lKDM2KSxOPWUoMzcpLE09
ZSgzOCksTz1lKDQzKSxJPShlKDU3KSxlKDU5KSksUj1lKDY4KSxBPShlKDEyNiksZSg5NSkpLEQ9
KGUoMTM0KSxlKDEwNyksZSgxMzgpLGUoMTE1KSxlKDEzOSksVCksTD14LmRlbGV0ZUxpc3RlbmVy
LFU9UC5nZXROb2RlRnJvbUluc3RhbmNlLEY9ay5saXN0ZW5UbyxqPXcucmVnaXN0cmF0aW9uTmFt
ZU1vZHVsZXMsVj17c3RyaW5nOiEwLG51bWJlcjohMH0sQj0iX19odG1sIixXPXtjaGlsZHJlbjpu
dWxsLGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MOm51bGwsc3VwcHJlc3NDb250ZW50RWRpdGFibGVX
YXJuaW5nOm51bGx9LEg9MTEscT17dG9wQWJvcnQ6ImFib3J0Iix0b3BDYW5QbGF5OiJjYW5wbGF5
Iix0b3BDYW5QbGF5VGhyb3VnaDoiY2FucGxheXRocm91Z2giLHRvcER1cmF0aW9uQ2hhbmdlOiJk
dXJhdGlvbmNoYW5nZSIsdG9wRW1wdGllZDoiZW1wdGllZCIsdG9wRW5jcnlwdGVkOiJlbmNyeXB0
ZWQiLHRvcEVuZGVkOiJlbmRlZCIsdG9wRXJyb3I6ImVycm9yIix0b3BMb2FkZWREYXRhOiJsb2Fk
ZWRkYXRhIix0b3BMb2FkZWRNZXRhZGF0YToibG9hZGVkbWV0YWRhdGEiLHRvcExvYWRTdGFydDoi
bG9hZHN0YXJ0Iix0b3BQYXVzZToicGF1c2UiLHRvcFBsYXk6InBsYXkiLHRvcFBsYXlpbmc6InBs
YXlpbmciLHRvcFByb2dyZXNzOiJwcm9ncmVzcyIsdG9wUmF0ZUNoYW5nZToicmF0ZWNoYW5nZSIs
dG9wU2Vla2VkOiJzZWVrZWQiLHRvcFNlZWtpbmc6InNlZWtpbmciLHRvcFN0YWxsZWQ6InN0YWxs
ZWQiLHRvcFN1c3BlbmQ6InN1c3BlbmQiLHRvcFRpbWVVcGRhdGU6InRpbWV1cGRhdGUiLHRvcFZv
bHVtZUNoYW5nZToidm9sdW1lY2hhbmdlIix0b3BXYWl0aW5nOiJ3YWl0aW5nIn0sSz17YXJlYToh
MCxiYXNlOiEwLGJyOiEwLGNvbDohMCxlbWJlZDohMCxocjohMCxpbWc6ITAsaW5wdXQ6ITAsa2V5
Z2VuOiEwLGxpbms6ITAsbWV0YTohMCxwYXJhbTohMCxzb3VyY2U6ITAsdHJhY2s6ITAsd2JyOiEw
fSx6PXtsaXN0aW5nOiEwLHByZTohMCx0ZXh0YXJlYTohMH0sWT12KHttZW51aXRlbTohMH0sSyks
WD0vXlthLXpBLVpdW2EtekEtWjpfXC5cLVxkXSokLyxRPXt9LEc9e30uaGFzT3duUHJvcGVydHks
JD0xO2guZGlzcGxheU5hbWU9IlJlYWN0RE9NQ29tcG9uZW50IixoLk1peGluPXttb3VudENvbXBv
bmVudDpmdW5jdGlvbihlLHQsbixyKXt0aGlzLl9yb290Tm9kZUlEPSQrKyx0aGlzLl9kb21JRD1u
Ll9pZENvdW50ZXIrKyx0aGlzLl9ob3N0UGFyZW50PXQsdGhpcy5faG9zdENvbnRhaW5lckluZm89
bjt2YXIgaT10aGlzLl9jdXJyZW50RWxlbWVudC5wcm9wcztzd2l0Y2godGhpcy5fdGFnKXtjYXNl
ImF1ZGlvIjpjYXNlImZvcm0iOmNhc2UiaWZyYW1lIjpjYXNlImltZyI6Y2FzZSJsaW5rIjpjYXNl
Im9iamVjdCI6Y2FzZSJzb3VyY2UiOmNhc2UidmlkZW8iOnRoaXMuX3dyYXBwZXJTdGF0ZT17bGlz
dGVuZXJzOm51bGx9LGUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShjLHRoaXMpO2JyZWFr
O2Nhc2UiaW5wdXQiOlMubW91bnRXcmFwcGVyKHRoaXMsaSx0KSxpPVMuZ2V0SG9zdFByb3BzKHRo
aXMsaSksZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGMsdGhpcyk7YnJlYWs7Y2FzZSJv
cHRpb24iOk4ubW91bnRXcmFwcGVyKHRoaXMsaSx0KSxpPU4uZ2V0SG9zdFByb3BzKHRoaXMsaSk7
YnJlYWs7Y2FzZSJzZWxlY3QiOk0ubW91bnRXcmFwcGVyKHRoaXMsaSx0KSxpPU0uZ2V0SG9zdFBy
b3BzKHRoaXMsaSksZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGMsdGhpcyk7YnJlYWs7
Y2FzZSJ0ZXh0YXJlYSI6Ty5tb3VudFdyYXBwZXIodGhpcyxpLHQpLGk9Ty5nZXRIb3N0UHJvcHMo
dGhpcyxpKSxlLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUoYyx0aGlzKX1vKHRoaXMsaSk7
dmFyIGEscDtudWxsIT10PyhhPXQuX25hbWVzcGFjZVVSSSxwPXQuX3RhZyk6bi5fdGFnJiYoYT1u
Ll9uYW1lc3BhY2VVUkkscD1uLl90YWcpLChudWxsPT1hfHxhPT09Qy5zdmcmJiJmb3JlaWdub2Jq
ZWN0Ij09PXApJiYoYT1DLmh0bWwpLGE9PT1DLmh0bWwmJigic3ZnIj09PXRoaXMuX3RhZz9hPUMu
c3ZnOiJtYXRoIj09PXRoaXMuX3RhZyYmKGE9Qy5tYXRobWwpKSx0aGlzLl9uYW1lc3BhY2VVUkk9
YTt2YXIgZDtpZihlLnVzZUNyZWF0ZUVsZW1lbnQpe3ZhciBmLGg9bi5fb3duZXJEb2N1bWVudDtp
ZihhPT09Qy5odG1sKWlmKCJzY3JpcHQiPT09dGhpcy5fdGFnKXt2YXIgbT1oLmNyZWF0ZUVsZW1l
bnQoImRpdiIpLHY9dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTttLmlubmVySFRNTD0iPCIrdisi
PjwvIit2KyI+IixmPW0ucmVtb3ZlQ2hpbGQobS5maXJzdENoaWxkKX1lbHNlIGY9aS5pcz9oLmNy
ZWF0ZUVsZW1lbnQodGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSxpLmlzKTpoLmNyZWF0ZUVsZW1l
bnQodGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSk7ZWxzZSBmPWguY3JlYXRlRWxlbWVudE5TKGEs
dGhpcy5fY3VycmVudEVsZW1lbnQudHlwZSk7UC5wcmVjYWNoZU5vZGUodGhpcyxmKSx0aGlzLl9m
bGFnc3w9RC5oYXNDYWNoZWRDaGlsZE5vZGVzLHRoaXMuX2hvc3RQYXJlbnR8fEUuc2V0QXR0cmli
dXRlRm9yUm9vdChmKSx0aGlzLl91cGRhdGVET01Qcm9wZXJ0aWVzKG51bGwsaSxlKTt2YXIgeT1f
KGYpO3RoaXMuX2NyZWF0ZUluaXRpYWxDaGlsZHJlbihlLGkscix5KSxkPXl9ZWxzZXt2YXIgYj10
aGlzLl9jcmVhdGVPcGVuVGFnTWFya3VwQW5kUHV0TGlzdGVuZXJzKGUsaSkseD10aGlzLl9jcmVh
dGVDb250ZW50TWFya3VwKGUsaSxyKTtkPSF4JiZLW3RoaXMuX3RhZ10/YisiLz4iOmIrIj4iK3gr
IjwvIit0aGlzLl9jdXJyZW50RWxlbWVudC50eXBlKyI+In1zd2l0Y2godGhpcy5fdGFnKXtjYXNl
ImlucHV0IjplLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocyx0aGlzKSxpLmF1dG9Gb2N1
cyYmZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKGcuZm9jdXNET01Db21wb25lbnQsdGhp
cyk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6ZS5nZXRSZWFjdE1vdW50UmVhZHkoKS5lbnF1ZXVlKHUs
dGhpcyksaS5hdXRvRm9jdXMmJmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShnLmZvY3Vz
RE9NQ29tcG9uZW50LHRoaXMpO2JyZWFrO2Nhc2Uic2VsZWN0IjpjYXNlImJ1dHRvbiI6aS5hdXRv
Rm9jdXMmJmUuZ2V0UmVhY3RNb3VudFJlYWR5KCkuZW5xdWV1ZShnLmZvY3VzRE9NQ29tcG9uZW50
LHRoaXMpO2JyZWFrO2Nhc2Uib3B0aW9uIjplLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUo
bCx0aGlzKX1yZXR1cm4gZH0sX2NyZWF0ZU9wZW5UYWdNYXJrdXBBbmRQdXRMaXN0ZW5lcnM6ZnVu
Y3Rpb24oZSx0KXt2YXIgbj0iPCIrdGhpcy5fY3VycmVudEVsZW1lbnQudHlwZTtmb3IodmFyIHIg
aW4gdClpZih0Lmhhc093blByb3BlcnR5KHIpKXt2YXIgbz10W3JdO2lmKG51bGwhPW8paWYoai5o
YXNPd25Qcm9wZXJ0eShyKSlvJiZpKHRoaXMscixvLGUpO2Vsc2V7InN0eWxlIj09PXImJihvJiYo
bz10aGlzLl9wcmV2aW91c1N0eWxlQ29weT12KHt9LHQuc3R5bGUpKSxvPXkuY3JlYXRlTWFya3Vw
Rm9yU3R5bGVzKG8sdGhpcykpO3ZhciBhPW51bGw7bnVsbCE9dGhpcy5fdGFnJiZmKHRoaXMuX3Rh
Zyx0KT9XLmhhc093blByb3BlcnR5KHIpfHwoYT1FLmNyZWF0ZU1hcmt1cEZvckN1c3RvbUF0dHJp
YnV0ZShyLG8pKTphPUUuY3JlYXRlTWFya3VwRm9yUHJvcGVydHkocixvKSxhJiYobis9IiAiK2Ep
fX1yZXR1cm4gZS5yZW5kZXJUb1N0YXRpY01hcmt1cD9uOih0aGlzLl9ob3N0UGFyZW50fHwobis9
IiAiK0UuY3JlYXRlTWFya3VwRm9yUm9vdCgpKSxuKz0iICIrRS5jcmVhdGVNYXJrdXBGb3JJRCh0
aGlzLl9kb21JRCkpfSxfY3JlYXRlQ29udGVudE1hcmt1cDpmdW5jdGlvbihlLHQsbil7dmFyIHI9
IiIsbz10LmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MO2lmKG51bGwhPW8pbnVsbCE9by5fX2h0bWwm
JihyPW8uX19odG1sKTtlbHNle3ZhciBpPVZbdHlwZW9mIHQuY2hpbGRyZW5dP3QuY2hpbGRyZW46
bnVsbCxhPW51bGwhPWk/bnVsbDp0LmNoaWxkcmVuO2lmKG51bGwhPWkpcj1BKGkpO2Vsc2UgaWYo
bnVsbCE9YSl7dmFyIHM9dGhpcy5tb3VudENoaWxkcmVuKGEsZSxuKTtyPXMuam9pbigiIil9fXJl
dHVybiB6W3RoaXMuX3RhZ10mJiJcbiI9PT1yLmNoYXJBdCgwKT8iXG4iK3I6cn0sX2NyZWF0ZUlu
aXRpYWxDaGlsZHJlbjpmdW5jdGlvbihlLHQsbixyKXt2YXIgbz10LmRhbmdlcm91c2x5U2V0SW5u
ZXJIVE1MO2lmKG51bGwhPW8pbnVsbCE9by5fX2h0bWwmJl8ucXVldWVIVE1MKHIsby5fX2h0bWwp
O2Vsc2V7dmFyIGk9Vlt0eXBlb2YgdC5jaGlsZHJlbl0/dC5jaGlsZHJlbjpudWxsLGE9bnVsbCE9
aT9udWxsOnQuY2hpbGRyZW47aWYobnVsbCE9aSkiIiE9PWkmJl8ucXVldWVUZXh0KHIsaSk7ZWxz
ZSBpZihudWxsIT1hKWZvcih2YXIgcz10aGlzLm1vdW50Q2hpbGRyZW4oYSxlLG4pLHU9MDt1PHMu
bGVuZ3RoO3UrKylfLnF1ZXVlQ2hpbGQocixzW3VdKX19LHJlY2VpdmVDb21wb25lbnQ6ZnVuY3Rp
b24oZSx0LG4pe3ZhciByPXRoaXMuX2N1cnJlbnRFbGVtZW50O3RoaXMuX2N1cnJlbnRFbGVtZW50
PWUsdGhpcy51cGRhdGVDb21wb25lbnQodCxyLGUsbil9LHVwZGF0ZUNvbXBvbmVudDpmdW5jdGlv
bihlLHQsbixyKXt2YXIgaT10LnByb3BzLGE9dGhpcy5fY3VycmVudEVsZW1lbnQucHJvcHM7c3dp
dGNoKHRoaXMuX3RhZyl7Y2FzZSJpbnB1dCI6aT1TLmdldEhvc3RQcm9wcyh0aGlzLGkpLGE9Uy5n
ZXRIb3N0UHJvcHModGhpcyxhKTticmVhaztjYXNlIm9wdGlvbiI6aT1OLmdldEhvc3RQcm9wcyh0
aGlzLGkpLGE9Ti5nZXRIb3N0UHJvcHModGhpcyxhKTticmVhaztjYXNlInNlbGVjdCI6aT1NLmdl
dEhvc3RQcm9wcyh0aGlzLGkpLGE9TS5nZXRIb3N0UHJvcHModGhpcyxhKTticmVhaztjYXNlInRl
eHRhcmVhIjppPU8uZ2V0SG9zdFByb3BzKHRoaXMsaSksYT1PLmdldEhvc3RQcm9wcyh0aGlzLGEp
fXN3aXRjaChvKHRoaXMsYSksdGhpcy5fdXBkYXRlRE9NUHJvcGVydGllcyhpLGEsZSksdGhpcy5f
dXBkYXRlRE9NQ2hpbGRyZW4oaSxhLGUsciksdGhpcy5fdGFnKXtjYXNlImlucHV0IjpTLnVwZGF0
ZVdyYXBwZXIodGhpcyk7YnJlYWs7Y2FzZSJ0ZXh0YXJlYSI6Ty51cGRhdGVXcmFwcGVyKHRoaXMp
O2JyZWFrO2Nhc2Uic2VsZWN0IjplLmdldFJlYWN0TW91bnRSZWFkeSgpLmVucXVldWUocCx0aGlz
KX19LF91cGRhdGVET01Qcm9wZXJ0aWVzOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcixvLGE7Zm9yKHIg
aW4gZSlpZighdC5oYXNPd25Qcm9wZXJ0eShyKSYmZS5oYXNPd25Qcm9wZXJ0eShyKSYmbnVsbCE9
ZVtyXSlpZigic3R5bGUiPT09cil7dmFyIHM9dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk7Zm9yKG8g
aW4gcylzLmhhc093blByb3BlcnR5KG8pJiYoYT1hfHx7fSxhW29dPSIiKTt0aGlzLl9wcmV2aW91
c1N0eWxlQ29weT1udWxsfWVsc2Ugai5oYXNPd25Qcm9wZXJ0eShyKT9lW3JdJiZMKHRoaXMscik6
Zih0aGlzLl90YWcsZSk/Vy5oYXNPd25Qcm9wZXJ0eShyKXx8RS5kZWxldGVWYWx1ZUZvckF0dHJp
YnV0ZShVKHRoaXMpLHIpOihiLnByb3BlcnRpZXNbcl18fGIuaXNDdXN0b21BdHRyaWJ1dGUocikp
JiZFLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkoVSh0aGlzKSxyKTtmb3IociBpbiB0KXt2YXIgdT10
W3JdLGw9InN0eWxlIj09PXI/dGhpcy5fcHJldmlvdXNTdHlsZUNvcHk6bnVsbCE9ZT9lW3JdOnZv
aWQgMDtpZih0Lmhhc093blByb3BlcnR5KHIpJiZ1IT09bCYmKG51bGwhPXV8fG51bGwhPWwpKWlm
KCJzdHlsZSI9PT1yKWlmKHU/dT10aGlzLl9wcmV2aW91c1N0eWxlQ29weT12KHt9LHUpOnRoaXMu
X3ByZXZpb3VzU3R5bGVDb3B5PW51bGwsbCl7Zm9yKG8gaW4gbCkhbC5oYXNPd25Qcm9wZXJ0eShv
KXx8dSYmdS5oYXNPd25Qcm9wZXJ0eShvKXx8KGE9YXx8e30sYVtvXT0iIik7Zm9yKG8gaW4gdSl1
Lmhhc093blByb3BlcnR5KG8pJiZsW29dIT09dVtvXSYmKGE9YXx8e30sYVtvXT11W29dKX1lbHNl
IGE9dTtlbHNlIGlmKGouaGFzT3duUHJvcGVydHkocikpdT9pKHRoaXMscix1LG4pOmwmJkwodGhp
cyxyKTtlbHNlIGlmKGYodGhpcy5fdGFnLHQpKVcuaGFzT3duUHJvcGVydHkocil8fEUuc2V0VmFs
dWVGb3JBdHRyaWJ1dGUoVSh0aGlzKSxyLHUpO2Vsc2UgaWYoYi5wcm9wZXJ0aWVzW3JdfHxiLmlz
Q3VzdG9tQXR0cmlidXRlKHIpKXt2YXIgYz1VKHRoaXMpO251bGwhPXU/RS5zZXRWYWx1ZUZvclBy
b3BlcnR5KGMscix1KTpFLmRlbGV0ZVZhbHVlRm9yUHJvcGVydHkoYyxyKX19YSYmeS5zZXRWYWx1
ZUZvclN0eWxlcyhVKHRoaXMpLGEsdGhpcyl9LF91cGRhdGVET01DaGlsZHJlbjpmdW5jdGlvbihl
LHQsbixyKXt2YXIgbz1WW3R5cGVvZiBlLmNoaWxkcmVuXT9lLmNoaWxkcmVuOm51bGwsaT1WW3R5
cGVvZiB0LmNoaWxkcmVuXT90LmNoaWxkcmVuOm51bGwsYT1lLmRhbmdlcm91c2x5U2V0SW5uZXJI
VE1MJiZlLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MLl9faHRtbCxzPXQuZGFuZ2Vyb3VzbHlTZXRJ
bm5lckhUTUwmJnQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwuX19odG1sLHU9bnVsbCE9bz9udWxs
OmUuY2hpbGRyZW4sbD1udWxsIT1pP251bGw6dC5jaGlsZHJlbixjPW51bGwhPW98fG51bGwhPWEs
cD1udWxsIT1pfHxudWxsIT1zO251bGwhPXUmJm51bGw9PWw/dGhpcy51cGRhdGVDaGlsZHJlbihu
dWxsLG4scik6YyYmIXAmJnRoaXMudXBkYXRlVGV4dENvbnRlbnQoIiIpLG51bGwhPWk/byE9PWkm
JnRoaXMudXBkYXRlVGV4dENvbnRlbnQoIiIraSk6bnVsbCE9cz9hIT09cyYmdGhpcy51cGRhdGVN
YXJrdXAoIiIrcyk6bnVsbCE9bCYmdGhpcy51cGRhdGVDaGlsZHJlbihsLG4scil9LGdldEhvc3RO
b2RlOmZ1bmN0aW9uKCl7cmV0dXJuIFUodGhpcyl9LHVubW91bnRDb21wb25lbnQ6ZnVuY3Rpb24o
ZSl7c3dpdGNoKHRoaXMuX3RhZyl7Y2FzZSJhdWRpbyI6Y2FzZSJmb3JtIjpjYXNlImlmcmFtZSI6
Y2FzZSJpbWciOmNhc2UibGluayI6Y2FzZSJvYmplY3QiOmNhc2Uic291cmNlIjpjYXNlInZpZGVv
Ijp2YXIgdD10aGlzLl93cmFwcGVyU3RhdGUubGlzdGVuZXJzO2lmKHQpZm9yKHZhciBuPTA7bjx0
Lmxlbmd0aDtuKyspdFtuXS5yZW1vdmUoKTticmVhaztjYXNlImh0bWwiOmNhc2UiaGVhZCI6Y2Fz
ZSJib2R5IjptKCI2NiIsdGhpcy5fdGFnKX10aGlzLnVubW91bnRDaGlsZHJlbihlKSxQLnVuY2Fj
aGVOb2RlKHRoaXMpLHguZGVsZXRlQWxsTGlzdGVuZXJzKHRoaXMpLHRoaXMuX3Jvb3ROb2RlSUQ9
MCx0aGlzLl9kb21JRD0wLHRoaXMuX3dyYXBwZXJTdGF0ZT1udWxsfSxnZXRQdWJsaWNJbnN0YW5j
ZTpmdW5jdGlvbigpe3JldHVybiBVKHRoaXMpfX0sdihoLnByb3RvdHlwZSxoLk1peGluLEkuTWl4
aW4pLHQuZXhwb3J0cz1ofSx7MTA6MTAsMTA3OjEwNywxMToxMSwxMTA6MTEwLDExNToxMTUsMTI6
MTIsMTI2OjEyNiwxMzQ6MTM0LDEzODoxMzgsMTM5OjEzOSwxNDA6MTQwLDE2OjE2LDE3OjE3LDI6
MiwyNToyNSwzMTozMSwzMjozMiwzNjozNiwzNzozNywzODozOCw0Mzo0Myw1OjUsNTc6NTcsNTk6
NTksNjg6NjgsOTo5LDk1Ojk1fV0sMzE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFy
IHI9e2hhc0NhY2hlZENoaWxkTm9kZXM6MX07dC5leHBvcnRzPXJ9LHt9XSwzMjpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7cmV0dXJuIDE9PT1lLm5vZGVUeXBl
JiZlLmdldEF0dHJpYnV0ZShoKT09PVN0cmluZyh0KXx8OD09PWUubm9kZVR5cGUmJmUubm9kZVZh
bHVlPT09IiByZWFjdC10ZXh0OiAiK3QrIiAifHw4PT09ZS5ub2RlVHlwZSYmZS5ub2RlVmFsdWU9
PT0iIHJlYWN0LWVtcHR5OiAiK3QrIiAifWZ1bmN0aW9uIG8oZSl7Zm9yKHZhciB0O3Q9ZS5fcmVu
ZGVyZWRDb21wb25lbnQ7KWU9dDtyZXR1cm4gZX1mdW5jdGlvbiBpKGUsdCl7dmFyIG49byhlKTtu
Ll9ob3N0Tm9kZT10LHRbdl09bn1mdW5jdGlvbiBhKGUpe3ZhciB0PWUuX2hvc3ROb2RlO3QmJihk
ZWxldGUgdFt2XSxlLl9ob3N0Tm9kZT1udWxsKX1mdW5jdGlvbiBzKGUsdCl7aWYoIShlLl9mbGFn
cyZtLmhhc0NhY2hlZENoaWxkTm9kZXMpKXt2YXIgbj1lLl9yZW5kZXJlZENoaWxkcmVuLGE9dC5m
aXJzdENoaWxkO2U6Zm9yKHZhciBzIGluIG4paWYobi5oYXNPd25Qcm9wZXJ0eShzKSl7dmFyIHU9
bltzXSxsPW8odSkuX2RvbUlEO2lmKDAhPT1sKXtmb3IoO251bGwhPT1hO2E9YS5uZXh0U2libGlu
ZylpZihyKGEsbCkpe2kodSxhKTtjb250aW51ZSBlfXAoIjMyIixsKX19ZS5fZmxhZ3N8PW0uaGFz
Q2FjaGVkQ2hpbGROb2Rlc319ZnVuY3Rpb24gdShlKXtpZihlW3ZdKXJldHVybiBlW3ZdO2Zvcih2
YXIgdD1bXTshZVt2XTspe2lmKHQucHVzaChlKSwhZS5wYXJlbnROb2RlKXJldHVybiBudWxsO2U9
ZS5wYXJlbnROb2RlfWZvcih2YXIgbixyO2UmJihyPWVbdl0pO2U9dC5wb3AoKSluPXIsdC5sZW5n
dGgmJnMocixlKTtyZXR1cm4gbn1mdW5jdGlvbiBsKGUpe3ZhciB0PXUoZSk7cmV0dXJuIG51bGwh
PXQmJnQuX2hvc3ROb2RlPT09ZT90Om51bGx9ZnVuY3Rpb24gYyhlKXtpZih2b2lkIDA9PT1lLl9o
b3N0Tm9kZSYmcCgiMzMiKSxlLl9ob3N0Tm9kZSlyZXR1cm4gZS5faG9zdE5vZGU7Zm9yKHZhciB0
PVtdOyFlLl9ob3N0Tm9kZTspdC5wdXNoKGUpLGUuX2hvc3RQYXJlbnR8fHAoIjM0IiksZT1lLl9o
b3N0UGFyZW50O2Zvcig7dC5sZW5ndGg7ZT10LnBvcCgpKXMoZSxlLl9ob3N0Tm9kZSk7cmV0dXJu
IGUuX2hvc3ROb2RlfXZhciBwPWUoMTEwKSxkPWUoMTEpLGY9ZSgzMSksaD0oZSgxMzQpLGQuSURf
QVRUUklCVVRFX05BTUUpLG09Zix2PSJfX3JlYWN0SW50ZXJuYWxJbnN0YW5jZSQiK01hdGgucmFu
ZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpLGc9e2dldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2Rl
OnUsZ2V0SW5zdGFuY2VGcm9tTm9kZTpsLGdldE5vZGVGcm9tSW5zdGFuY2U6YyxwcmVjYWNoZUNo
aWxkTm9kZXM6cyxwcmVjYWNoZU5vZGU6aSx1bmNhY2hlTm9kZTphfTt0LmV4cG9ydHM9Z30sezEx
OjExLDExMDoxMTAsMTM0OjEzNCwzMTozMX1dLDMzOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm57X3RvcExldmVsV3JhcHBlcjplLF9pZENvdW50ZXI6
MSxfb3duZXJEb2N1bWVudDp0P3Qubm9kZVR5cGU9PT1vP3Q6dC5vd25lckRvY3VtZW50Om51bGws
X25vZGU6dCxfdGFnOnQ/dC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOm51bGwsX25hbWVzcGFjZVVS
STp0P3QubmFtZXNwYWNlVVJJOm51bGx9fXZhciBvPShlKDExNSksOSk7dC5leHBvcnRzPXJ9LHsx
MTU6MTE1fV0sMzQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgxNDApLG89
ZSg5KSxpPWUoMzIpLGE9ZnVuY3Rpb24oZSl7dGhpcy5fY3VycmVudEVsZW1lbnQ9bnVsbCx0aGlz
Ll9ob3N0Tm9kZT1udWxsLHRoaXMuX2hvc3RQYXJlbnQ9bnVsbCx0aGlzLl9ob3N0Q29udGFpbmVy
SW5mbz1udWxsLHRoaXMuX2RvbUlEPTB9O3IoYS5wcm90b3R5cGUse21vdW50Q29tcG9uZW50OmZ1
bmN0aW9uKGUsdCxuLHIpe3ZhciBhPW4uX2lkQ291bnRlcisrO3RoaXMuX2RvbUlEPWEsdGhpcy5f
aG9zdFBhcmVudD10LHRoaXMuX2hvc3RDb250YWluZXJJbmZvPW47dmFyIHM9IiByZWFjdC1lbXB0
eTogIit0aGlzLl9kb21JRCsiICI7aWYoZS51c2VDcmVhdGVFbGVtZW50KXt2YXIgdT1uLl9vd25l
ckRvY3VtZW50LGw9dS5jcmVhdGVDb21tZW50KHMpO3JldHVybiBpLnByZWNhY2hlTm9kZSh0aGlz
LGwpLG8obCl9cmV0dXJuIGUucmVuZGVyVG9TdGF0aWNNYXJrdXA/IiI6IjwhLS0iK3MrIi0tPiJ9
LHJlY2VpdmVDb21wb25lbnQ6ZnVuY3Rpb24oKXt9LGdldEhvc3ROb2RlOmZ1bmN0aW9uKCl7cmV0
dXJuIGkuZ2V0Tm9kZUZyb21JbnN0YW5jZSh0aGlzKX0sdW5tb3VudENvbXBvbmVudDpmdW5jdGlv
bigpe2kudW5jYWNoZU5vZGUodGhpcyl9fSksdC5leHBvcnRzPWF9LHsxNDA6MTQwLDMyOjMyLDk6
OX1dLDM1OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoOCksbz1lKDMyKSxp
PXtkYW5nZXJvdXNseVByb2Nlc3NDaGlsZHJlblVwZGF0ZXM6ZnVuY3Rpb24oZSx0KXt2YXIgbj1v
LmdldE5vZGVGcm9tSW5zdGFuY2UoZSk7ci5wcm9jZXNzVXBkYXRlcyhuLHQpfX07dC5leHBvcnRz
PWl9LHszMjozMiw4Ojh9XSwzNjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKCl7dGhpcy5fcm9vdE5vZGVJRCYmZC51cGRhdGVXcmFwcGVyKHRoaXMpfWZ1bmN0aW9uIG8o
ZSl7cmV0dXJuImNoZWNrYm94Ij09PWUudHlwZXx8InJhZGlvIj09PWUudHlwZT9udWxsIT1lLmNo
ZWNrZWQ6bnVsbCE9ZS52YWx1ZX1mdW5jdGlvbiBpKGUpe3ZhciB0PXRoaXMuX2N1cnJlbnRFbGVt
ZW50LnByb3BzLG49bC5leGVjdXRlT25DaGFuZ2UodCxlKTtwLmFzYXAocix0aGlzKTt2YXIgbz10
Lm5hbWU7aWYoInJhZGlvIj09PXQudHlwZSYmbnVsbCE9byl7Zm9yKHZhciBpPWMuZ2V0Tm9kZUZy
b21JbnN0YW5jZSh0aGlzKSxzPWk7cy5wYXJlbnROb2RlOylzPXMucGFyZW50Tm9kZTtmb3IodmFy
IHU9cy5xdWVyeVNlbGVjdG9yQWxsKCJpbnB1dFtuYW1lPSIrSlNPTi5zdHJpbmdpZnkoIiIrbykr
J11bdHlwZT0icmFkaW8iXScpLGQ9MDtkPHUubGVuZ3RoO2QrKyl7dmFyIGY9dVtkXTtpZihmIT09
aSYmZi5mb3JtPT09aS5mb3JtKXt2YXIgaD1jLmdldEluc3RhbmNlRnJvbU5vZGUoZik7aHx8YSgi
OTAiKSxwLmFzYXAocixoKX19fXJldHVybiBufXZhciBhPWUoMTEwKSxzPWUoMTQwKSx1PWUoMTIp
LGw9ZSgyMyksYz1lKDMyKSxwPWUoNzEpLGQ9KGUoMTM0KSxlKDEzOSkse2dldEhvc3RQcm9wczpm
dW5jdGlvbihlLHQpe3ZhciBuPWwuZ2V0VmFsdWUodCkscj1sLmdldENoZWNrZWQodCk7cmV0dXJu
IHMoe3R5cGU6dm9pZCAwLHN0ZXA6dm9pZCAwLG1pbjp2b2lkIDAsbWF4OnZvaWQgMH0sdCx7ZGVm
YXVsdENoZWNrZWQ6dm9pZCAwLGRlZmF1bHRWYWx1ZTp2b2lkIDAsdmFsdWU6bnVsbCE9bj9uOmUu
X3dyYXBwZXJTdGF0ZS5pbml0aWFsVmFsdWUsY2hlY2tlZDpudWxsIT1yP3I6ZS5fd3JhcHBlclN0
YXRlLmluaXRpYWxDaGVja2VkLG9uQ2hhbmdlOmUuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZX0pfSxt
b3VudFdyYXBwZXI6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LmRlZmF1bHRWYWx1ZTtlLl93cmFwcGVy
U3RhdGU9e2luaXRpYWxDaGVja2VkOm51bGwhPXQuY2hlY2tlZD90LmNoZWNrZWQ6dC5kZWZhdWx0
Q2hlY2tlZCxpbml0aWFsVmFsdWU6bnVsbCE9dC52YWx1ZT90LnZhbHVlOm4sbGlzdGVuZXJzOm51
bGwsb25DaGFuZ2U6aS5iaW5kKGUpLGNvbnRyb2xsZWQ6byh0KX19LHVwZGF0ZVdyYXBwZXI6ZnVu
Y3Rpb24oZSl7dmFyIHQ9ZS5fY3VycmVudEVsZW1lbnQucHJvcHMsbj10LmNoZWNrZWQ7bnVsbCE9
biYmdS5zZXRWYWx1ZUZvclByb3BlcnR5KGMuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKSwiY2hlY2tl
ZCIsbnx8ITEpO3ZhciByPWMuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKSxvPWwuZ2V0VmFsdWUodCk7
aWYobnVsbCE9bylpZigwPT09byYmIiI9PT1yLnZhbHVlKXIudmFsdWU9IjAiO2Vsc2UgaWYoIm51
bWJlciI9PT10LnR5cGUpe3ZhciBpPXBhcnNlRmxvYXQoci52YWx1ZSwxMCl8fDA7byE9aSYmKHIu
dmFsdWU9IiIrbyl9ZWxzZSBvIT1yLnZhbHVlJiYoci52YWx1ZT0iIitvKTtlbHNlIG51bGw9PXQu
dmFsdWUmJm51bGwhPXQuZGVmYXVsdFZhbHVlJiZyLmRlZmF1bHRWYWx1ZSE9PSIiK3QuZGVmYXVs
dFZhbHVlJiYoci5kZWZhdWx0VmFsdWU9IiIrdC5kZWZhdWx0VmFsdWUpLG51bGw9PXQuY2hlY2tl
ZCYmbnVsbCE9dC5kZWZhdWx0Q2hlY2tlZCYmKHIuZGVmYXVsdENoZWNrZWQ9ISF0LmRlZmF1bHRD
aGVja2VkKX0scG9zdE1vdW50V3JhcHBlcjpmdW5jdGlvbihlKXt2YXIgdD1lLl9jdXJyZW50RWxl
bWVudC5wcm9wcyxuPWMuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKTtzd2l0Y2godC50eXBlKXtjYXNl
InN1Ym1pdCI6Y2FzZSJyZXNldCI6YnJlYWs7Y2FzZSJjb2xvciI6Y2FzZSJkYXRlIjpjYXNlImRh
dGV0aW1lIjpjYXNlImRhdGV0aW1lLWxvY2FsIjpjYXNlIm1vbnRoIjpjYXNlInRpbWUiOmNhc2Ui
d2VlayI6bi52YWx1ZT0iIixuLnZhbHVlPW4uZGVmYXVsdFZhbHVlO2JyZWFrO2RlZmF1bHQ6bi52
YWx1ZT1uLnZhbHVlfXZhciByPW4ubmFtZTsiIiE9PXImJihuLm5hbWU9IiIpLG4uZGVmYXVsdENo
ZWNrZWQ9IW4uZGVmYXVsdENoZWNrZWQsbi5kZWZhdWx0Q2hlY2tlZD0hbi5kZWZhdWx0Q2hlY2tl
ZCwiIiE9PXImJihuLm5hbWU9cil9fSk7dC5leHBvcnRzPWR9LHsxMTA6MTEwLDEyOjEyLDEzNDox
MzQsMTM5OjEzOSwxNDA6MTQwLDIzOjIzLDMyOjMyLDcxOjcxfV0sMzc6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD0iIjtyZXR1cm4gaS5DaGlsZHJlbi5m
b3JFYWNoKGUsZnVuY3Rpb24oZSl7bnVsbCE9ZSYmKCJzdHJpbmciPT10eXBlb2YgZXx8Im51bWJl
ciI9PXR5cGVvZiBlP3QrPWU6dXx8KHU9ITApKX0pLHR9dmFyIG89ZSgxNDApLGk9ZSgxMTcpLGE9
ZSgzMikscz1lKDM4KSx1PShlKDEzOSksITEpLGw9e21vdW50V3JhcHBlcjpmdW5jdGlvbihlLHQs
bil7dmFyIG89bnVsbDtpZihudWxsIT1uKXt2YXIgaT1uOyJvcHRncm91cCI9PT1pLl90YWcmJihp
PWkuX2hvc3RQYXJlbnQpLG51bGwhPWkmJiJzZWxlY3QiPT09aS5fdGFnJiYobz1zLmdldFNlbGVj
dFZhbHVlQ29udGV4dChpKSl9dmFyIGE9bnVsbDtpZihudWxsIT1vKXt2YXIgdTtpZih1PW51bGwh
PXQudmFsdWU/dC52YWx1ZSsiIjpyKHQuY2hpbGRyZW4pLGE9ITEsQXJyYXkuaXNBcnJheShvKSl7
Zm9yKHZhciBsPTA7bDxvLmxlbmd0aDtsKyspaWYoIiIrb1tsXT09PXUpe2E9ITA7YnJlYWt9fWVs
c2UgYT0iIitvPT09dX1lLl93cmFwcGVyU3RhdGU9e3NlbGVjdGVkOmF9fSxwb3N0TW91bnRXcmFw
cGVyOmZ1bmN0aW9uKGUpe3ZhciB0PWUuX2N1cnJlbnRFbGVtZW50LnByb3BzO251bGwhPXQudmFs
dWUmJmEuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKS5zZXRBdHRyaWJ1dGUoInZhbHVlIix0LnZhbHVl
KX0sZ2V0SG9zdFByb3BzOmZ1bmN0aW9uKGUsdCl7dmFyIG49byh7c2VsZWN0ZWQ6dm9pZCAwLGNo
aWxkcmVuOnZvaWQgMH0sdCk7bnVsbCE9ZS5fd3JhcHBlclN0YXRlLnNlbGVjdGVkJiYobi5zZWxl
Y3RlZD1lLl93cmFwcGVyU3RhdGUuc2VsZWN0ZWQpO3ZhciBpPXIodC5jaGlsZHJlbik7cmV0dXJu
IGkmJihuLmNoaWxkcmVuPWkpLG59fTt0LmV4cG9ydHM9bH0sezExNzoxMTcsMTM5OjEzOSwxNDA6
MTQwLDMyOjMyLDM4OjM4fV0sMzg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rp
b24gcigpe2lmKHRoaXMuX3Jvb3ROb2RlSUQmJnRoaXMuX3dyYXBwZXJTdGF0ZS5wZW5kaW5nVXBk
YXRlKXt0aGlzLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZT0hMTt2YXIgZT10aGlzLl9jdXJy
ZW50RWxlbWVudC5wcm9wcyx0PXMuZ2V0VmFsdWUoZSk7bnVsbCE9dCYmbyh0aGlzLEJvb2xlYW4o
ZS5tdWx0aXBsZSksdCl9fWZ1bmN0aW9uIG8oZSx0LG4pe3ZhciByLG8saT11LmdldE5vZGVGcm9t
SW5zdGFuY2UoZSkub3B0aW9ucztpZih0KXtmb3Iocj17fSxvPTA7bzxuLmxlbmd0aDtvKyspclsi
IituW29dXT0hMDtmb3Iobz0wO288aS5sZW5ndGg7bysrKXt2YXIgYT1yLmhhc093blByb3BlcnR5
KGlbb10udmFsdWUpO2lbb10uc2VsZWN0ZWQhPT1hJiYoaVtvXS5zZWxlY3RlZD1hKX19ZWxzZXtm
b3Iocj0iIituLG89MDtvPGkubGVuZ3RoO28rKylpZihpW29dLnZhbHVlPT09cilyZXR1cm4gdm9p
ZChpW29dLnNlbGVjdGVkPSEwKTtpLmxlbmd0aCYmKGlbMF0uc2VsZWN0ZWQ9ITApfX1mdW5jdGlv
biBpKGUpe3ZhciB0PXRoaXMuX2N1cnJlbnRFbGVtZW50LnByb3BzLG49cy5leGVjdXRlT25DaGFu
Z2UodCxlKTtyZXR1cm4gdGhpcy5fcm9vdE5vZGVJRCYmKHRoaXMuX3dyYXBwZXJTdGF0ZS5wZW5k
aW5nVXBkYXRlPSEwKSxsLmFzYXAocix0aGlzKSxufXZhciBhPWUoMTQwKSxzPWUoMjMpLHU9ZSgz
MiksbD1lKDcxKSxjPShlKDEzOSksITEpLHA9e2dldEhvc3RQcm9wczpmdW5jdGlvbihlLHQpe3Jl
dHVybiBhKHt9LHQse29uQ2hhbmdlOmUuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZSx2YWx1ZTp2b2lk
IDB9KX0sbW91bnRXcmFwcGVyOmZ1bmN0aW9uKGUsdCl7dmFyIG49cy5nZXRWYWx1ZSh0KTtlLl93
cmFwcGVyU3RhdGU9e3BlbmRpbmdVcGRhdGU6ITEsaW5pdGlhbFZhbHVlOm51bGwhPW4/bjp0LmRl
ZmF1bHRWYWx1ZSxsaXN0ZW5lcnM6bnVsbCxvbkNoYW5nZTppLmJpbmQoZSksd2FzTXVsdGlwbGU6
Qm9vbGVhbih0Lm11bHRpcGxlKX0sdm9pZCAwPT09dC52YWx1ZXx8dm9pZCAwPT09dC5kZWZhdWx0
VmFsdWV8fGN8fChjPSEwKX0sZ2V0U2VsZWN0VmFsdWVDb250ZXh0OmZ1bmN0aW9uKGUpe3JldHVy
biBlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlfSxwb3N0VXBkYXRlV3JhcHBlcjpmdW5jdGlv
bihlKXt2YXIgdD1lLl9jdXJyZW50RWxlbWVudC5wcm9wcztlLl93cmFwcGVyU3RhdGUuaW5pdGlh
bFZhbHVlPXZvaWQgMDt2YXIgbj1lLl93cmFwcGVyU3RhdGUud2FzTXVsdGlwbGU7ZS5fd3JhcHBl
clN0YXRlLndhc011bHRpcGxlPUJvb2xlYW4odC5tdWx0aXBsZSk7dmFyIHI9cy5nZXRWYWx1ZSh0
KTtudWxsIT1yPyhlLl93cmFwcGVyU3RhdGUucGVuZGluZ1VwZGF0ZT0hMSxvKGUsQm9vbGVhbih0
Lm11bHRpcGxlKSxyKSk6biE9PUJvb2xlYW4odC5tdWx0aXBsZSkmJihudWxsIT10LmRlZmF1bHRW
YWx1ZT9vKGUsQm9vbGVhbih0Lm11bHRpcGxlKSx0LmRlZmF1bHRWYWx1ZSk6byhlLEJvb2xlYW4o
dC5tdWx0aXBsZSksdC5tdWx0aXBsZT9bXToiIikpfX07dC5leHBvcnRzPXB9LHsxMzk6MTM5LDE0
MDoxNDAsMjM6MjMsMzI6MzIsNzE6NzF9XSwzOTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBlPT09biYmdD09PXJ9ZnVuY3Rpb24gbyhlKXt2
YXIgdD1kb2N1bWVudC5zZWxlY3Rpb24sbj10LmNyZWF0ZVJhbmdlKCkscj1uLnRleHQubGVuZ3Ro
LG89bi5kdXBsaWNhdGUoKTtvLm1vdmVUb0VsZW1lbnRUZXh0KGUpLG8uc2V0RW5kUG9pbnQoIkVu
ZFRvU3RhcnQiLG4pO3ZhciBpPW8udGV4dC5sZW5ndGg7cmV0dXJue3N0YXJ0OmksZW5kOmkrcn19
ZnVuY3Rpb24gaShlKXt2YXIgdD13aW5kb3cuZ2V0U2VsZWN0aW9uJiZ3aW5kb3cuZ2V0U2VsZWN0
aW9uKCk7aWYoIXR8fDA9PT10LnJhbmdlQ291bnQpcmV0dXJuIG51bGw7dmFyIG49dC5hbmNob3JO
b2RlLG89dC5hbmNob3JPZmZzZXQsaT10LmZvY3VzTm9kZSxhPXQuZm9jdXNPZmZzZXQscz10Lmdl
dFJhbmdlQXQoMCk7dHJ5e3Muc3RhcnRDb250YWluZXIubm9kZVR5cGUscy5lbmRDb250YWluZXIu
bm9kZVR5cGV9Y2F0Y2goZSl7cmV0dXJuIG51bGx9dmFyIHU9cih0LmFuY2hvck5vZGUsdC5hbmNo
b3JPZmZzZXQsdC5mb2N1c05vZGUsdC5mb2N1c09mZnNldCksbD11PzA6cy50b1N0cmluZygpLmxl
bmd0aCxjPXMuY2xvbmVSYW5nZSgpO2Muc2VsZWN0Tm9kZUNvbnRlbnRzKGUpLGMuc2V0RW5kKHMu
c3RhcnRDb250YWluZXIscy5zdGFydE9mZnNldCk7dmFyIHA9cihjLnN0YXJ0Q29udGFpbmVyLGMu
c3RhcnRPZmZzZXQsYy5lbmRDb250YWluZXIsYy5lbmRPZmZzZXQpLGQ9cD8wOmMudG9TdHJpbmco
KS5sZW5ndGgsZj1kK2wsaD1kb2N1bWVudC5jcmVhdGVSYW5nZSgpO2guc2V0U3RhcnQobixvKSxo
LnNldEVuZChpLGEpO3ZhciBtPWguY29sbGFwc2VkO3JldHVybntzdGFydDptP2Y6ZCxlbmQ6bT9k
OmZ9fWZ1bmN0aW9uIGEoZSx0KXt2YXIgbixyLG89ZG9jdW1lbnQuc2VsZWN0aW9uLmNyZWF0ZVJh
bmdlKCkuZHVwbGljYXRlKCk7dm9pZCAwPT09dC5lbmQ/KG49dC5zdGFydCxyPW4pOnQuc3RhcnQ+
dC5lbmQ/KG49dC5lbmQscj10LnN0YXJ0KToobj10LnN0YXJ0LHI9dC5lbmQpLG8ubW92ZVRvRWxl
bWVudFRleHQoZSksby5tb3ZlU3RhcnQoImNoYXJhY3RlciIsbiksby5zZXRFbmRQb2ludCgiRW5k
VG9TdGFydCIsbyksby5tb3ZlRW5kKCJjaGFyYWN0ZXIiLHItbiksby5zZWxlY3QoKX1mdW5jdGlv
biBzKGUsdCl7aWYod2luZG93LmdldFNlbGVjdGlvbil7dmFyIG49d2luZG93LmdldFNlbGVjdGlv
bigpLHI9ZVtjKCldLmxlbmd0aCxvPU1hdGgubWluKHQuc3RhcnQsciksaT12b2lkIDA9PT10LmVu
ZD9vOk1hdGgubWluKHQuZW5kLHIpO2lmKCFuLmV4dGVuZCYmbz5pKXt2YXIgYT1pO2k9byxvPWF9
dmFyIHM9bChlLG8pLHU9bChlLGkpO2lmKHMmJnUpe3ZhciBwPWRvY3VtZW50LmNyZWF0ZVJhbmdl
KCk7cC5zZXRTdGFydChzLm5vZGUscy5vZmZzZXQpLG4ucmVtb3ZlQWxsUmFuZ2VzKCksbz5pPyhu
LmFkZFJhbmdlKHApLG4uZXh0ZW5kKHUubm9kZSx1Lm9mZnNldCkpOihwLnNldEVuZCh1Lm5vZGUs
dS5vZmZzZXQpLG4uYWRkUmFuZ2UocCkpfX19dmFyIHU9ZSgxMjApLGw9ZSgxMDMpLGM9ZSgxMDQp
LHA9dS5jYW5Vc2VET00mJiJzZWxlY3Rpb24iaW4gZG9jdW1lbnQmJiEoImdldFNlbGVjdGlvbiJp
biB3aW5kb3cpLGQ9e2dldE9mZnNldHM6cD9vOmksc2V0T2Zmc2V0czpwP2E6c307dC5leHBvcnRz
PWR9LHsxMDM6MTAzLDEwNDoxMDQsMTIwOjEyMH1dLDQwOltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO3ZhciByPWUoNDYpLG89ZSg2NyksaT1lKDcyKTtyLmluamVjdCgpO3ZhciBhPXtyZW5k
ZXJUb1N0cmluZzpvLnJlbmRlclRvU3RyaW5nLHJlbmRlclRvU3RhdGljTWFya3VwOm8ucmVuZGVy
VG9TdGF0aWNNYXJrdXAsdmVyc2lvbjppfTt0LmV4cG9ydHM9YX0sezQ2OjQ2LDY3OjY3LDcyOjcy
fV0sNDE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSg0MCk7dC5leHBvcnRz
PXJ9LHs0MDo0MH1dLDQyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPWUoMTEw
KSxvPWUoMTQwKSxpPWUoOCksYT1lKDkpLHM9ZSgzMiksdT1lKDk1KSxsPShlKDEzNCksZSgxMTUp
LGZ1bmN0aW9uKGUpe3RoaXMuX2N1cnJlbnRFbGVtZW50PWUsdGhpcy5fc3RyaW5nVGV4dD0iIitl
LHRoaXMuX2hvc3ROb2RlPW51bGwsdGhpcy5faG9zdFBhcmVudD1udWxsLHRoaXMuX2RvbUlEPTAs
dGhpcy5fbW91bnRJbmRleD0wLHRoaXMuX2Nsb3NpbmdDb21tZW50PW51bGwsdGhpcy5fY29tbWVu
dE5vZGVzPW51bGx9KTtvKGwucHJvdG90eXBlLHttb3VudENvbXBvbmVudDpmdW5jdGlvbihlLHQs
bixyKXt2YXIgbz1uLl9pZENvdW50ZXIrKyxpPSIgcmVhY3QtdGV4dDogIitvKyIgIjtpZih0aGlz
Ll9kb21JRD1vLHRoaXMuX2hvc3RQYXJlbnQ9dCxlLnVzZUNyZWF0ZUVsZW1lbnQpe3ZhciBsPW4u
X293bmVyRG9jdW1lbnQsYz1sLmNyZWF0ZUNvbW1lbnQoaSkscD1sLmNyZWF0ZUNvbW1lbnQoIiAv
cmVhY3QtdGV4dCAiKSxkPWEobC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkpO3JldHVybiBhLnF1
ZXVlQ2hpbGQoZCxhKGMpKSx0aGlzLl9zdHJpbmdUZXh0JiZhLnF1ZXVlQ2hpbGQoZCxhKGwuY3Jl
YXRlVGV4dE5vZGUodGhpcy5fc3RyaW5nVGV4dCkpKSxhLnF1ZXVlQ2hpbGQoZCxhKHApKSxzLnBy
ZWNhY2hlTm9kZSh0aGlzLGMpLHRoaXMuX2Nsb3NpbmdDb21tZW50PXAsZH0KLXZhciBmPXUodGhp
cy5fc3RyaW5nVGV4dCk7cmV0dXJuIGUucmVuZGVyVG9TdGF0aWNNYXJrdXA/ZjoiPCEtLSIraSsi
LS0+IitmKyI8IS0tIC9yZWFjdC10ZXh0IC0tPiJ9LHJlY2VpdmVDb21wb25lbnQ6ZnVuY3Rpb24o
ZSx0KXtpZihlIT09dGhpcy5fY3VycmVudEVsZW1lbnQpe3RoaXMuX2N1cnJlbnRFbGVtZW50PWU7
dmFyIG49IiIrZTtpZihuIT09dGhpcy5fc3RyaW5nVGV4dCl7dGhpcy5fc3RyaW5nVGV4dD1uO3Zh
ciByPXRoaXMuZ2V0SG9zdE5vZGUoKTtpLnJlcGxhY2VEZWxpbWl0ZWRUZXh0KHJbMF0sclsxXSxu
KX19fSxnZXRIb3N0Tm9kZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX2NvbW1lbnROb2RlcztpZihl
KXJldHVybiBlO2lmKCF0aGlzLl9jbG9zaW5nQ29tbWVudClmb3IodmFyIHQ9cy5nZXROb2RlRnJv
bUluc3RhbmNlKHRoaXMpLG49dC5uZXh0U2libGluZzs7KXtpZihudWxsPT1uJiZyKCI2NyIsdGhp
cy5fZG9tSUQpLDg9PT1uLm5vZGVUeXBlJiYiIC9yZWFjdC10ZXh0ICI9PT1uLm5vZGVWYWx1ZSl7
dGhpcy5fY2xvc2luZ0NvbW1lbnQ9bjticmVha31uPW4ubmV4dFNpYmxpbmd9cmV0dXJuIGU9W3Ro
aXMuX2hvc3ROb2RlLHRoaXMuX2Nsb3NpbmdDb21tZW50XSx0aGlzLl9jb21tZW50Tm9kZXM9ZSxl
fSx1bm1vdW50Q29tcG9uZW50OmZ1bmN0aW9uKCl7dGhpcy5fY2xvc2luZ0NvbW1lbnQ9bnVsbCx0
aGlzLl9jb21tZW50Tm9kZXM9bnVsbCxzLnVuY2FjaGVOb2RlKHRoaXMpfX0pLHQuZXhwb3J0cz1s
fSx7MTEwOjExMCwxMTU6MTE1LDEzNDoxMzQsMTQwOjE0MCwzMjozMiw4OjgsOTo5LDk1Ojk1fV0s
NDM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcigpe3RoaXMuX3Jvb3RO
b2RlSUQmJmMudXBkYXRlV3JhcHBlcih0aGlzKX1mdW5jdGlvbiBvKGUpe3ZhciB0PXRoaXMuX2N1
cnJlbnRFbGVtZW50LnByb3BzLG49cy5leGVjdXRlT25DaGFuZ2UodCxlKTtyZXR1cm4gbC5hc2Fw
KHIsdGhpcyksbn12YXIgaT1lKDExMCksYT1lKDE0MCkscz1lKDIzKSx1PWUoMzIpLGw9ZSg3MSks
Yz0oZSgxMzQpLGUoMTM5KSx7Z2V0SG9zdFByb3BzOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIG51bGwh
PXQuZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwmJmkoIjkxIiksYSh7fSx0LHt2YWx1ZTp2b2lkIDAs
ZGVmYXVsdFZhbHVlOnZvaWQgMCxjaGlsZHJlbjoiIitlLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZh
bHVlLG9uQ2hhbmdlOmUuX3dyYXBwZXJTdGF0ZS5vbkNoYW5nZX0pfSxtb3VudFdyYXBwZXI6ZnVu
Y3Rpb24oZSx0KXt2YXIgbj1zLmdldFZhbHVlKHQpLHI9bjtpZihudWxsPT1uKXt2YXIgYT10LmRl
ZmF1bHRWYWx1ZSx1PXQuY2hpbGRyZW47bnVsbCE9dSYmKG51bGwhPWEmJmkoIjkyIiksQXJyYXku
aXNBcnJheSh1KSYmKHUubGVuZ3RoPD0xfHxpKCI5MyIpLHU9dVswXSksYT0iIit1KSxudWxsPT1h
JiYoYT0iIikscj1hfWUuX3dyYXBwZXJTdGF0ZT17aW5pdGlhbFZhbHVlOiIiK3IsbGlzdGVuZXJz
Om51bGwsb25DaGFuZ2U6by5iaW5kKGUpfX0sdXBkYXRlV3JhcHBlcjpmdW5jdGlvbihlKXt2YXIg
dD1lLl9jdXJyZW50RWxlbWVudC5wcm9wcyxuPXUuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKSxyPXMu
Z2V0VmFsdWUodCk7aWYobnVsbCE9cil7dmFyIG89IiIrcjtvIT09bi52YWx1ZSYmKG4udmFsdWU9
byksbnVsbD09dC5kZWZhdWx0VmFsdWUmJihuLmRlZmF1bHRWYWx1ZT1vKX1udWxsIT10LmRlZmF1
bHRWYWx1ZSYmKG4uZGVmYXVsdFZhbHVlPXQuZGVmYXVsdFZhbHVlKX0scG9zdE1vdW50V3JhcHBl
cjpmdW5jdGlvbihlKXt2YXIgdD11LmdldE5vZGVGcm9tSW5zdGFuY2UoZSksbj10LnRleHRDb250
ZW50O249PT1lLl93cmFwcGVyU3RhdGUuaW5pdGlhbFZhbHVlJiYodC52YWx1ZT1uKX19KTt0LmV4
cG9ydHM9Y30sezExMDoxMTAsMTM0OjEzNCwxMzk6MTM5LDE0MDoxNDAsMjM6MjMsMzI6MzIsNzE6
NzF9XSw0NDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCl7Il9o
b3N0Tm9kZSJpbiBlfHx1KCIzMyIpLCJfaG9zdE5vZGUiaW4gdHx8dSgiMzMiKTtmb3IodmFyIG49
MCxyPWU7cjtyPXIuX2hvc3RQYXJlbnQpbisrO2Zvcih2YXIgbz0wLGk9dDtpO2k9aS5faG9zdFBh
cmVudClvKys7Zm9yKDtuLW8+MDspZT1lLl9ob3N0UGFyZW50LG4tLTtmb3IoO28tbj4wOyl0PXQu
X2hvc3RQYXJlbnQsby0tO2Zvcih2YXIgYT1uO2EtLTspe2lmKGU9PT10KXJldHVybiBlO2U9ZS5f
aG9zdFBhcmVudCx0PXQuX2hvc3RQYXJlbnR9cmV0dXJuIG51bGx9ZnVuY3Rpb24gbyhlLHQpeyJf
aG9zdE5vZGUiaW4gZXx8dSgiMzUiKSwiX2hvc3ROb2RlImluIHR8fHUoIjM1Iik7Zm9yKDt0Oyl7
aWYodD09PWUpcmV0dXJuITA7dD10Ll9ob3N0UGFyZW50fXJldHVybiExfWZ1bmN0aW9uIGkoZSl7
cmV0dXJuIl9ob3N0Tm9kZSJpbiBlfHx1KCIzNiIpLGUuX2hvc3RQYXJlbnR9ZnVuY3Rpb24gYShl
LHQsbil7Zm9yKHZhciByPVtdO2U7KXIucHVzaChlKSxlPWUuX2hvc3RQYXJlbnQ7dmFyIG87Zm9y
KG89ci5sZW5ndGg7by0tID4wOyl0KHJbb10sImNhcHR1cmVkIixuKTtmb3Iobz0wO288ci5sZW5n
dGg7bysrKXQocltvXSwiYnViYmxlZCIsbil9ZnVuY3Rpb24gcyhlLHQsbixvLGkpe2Zvcih2YXIg
YT1lJiZ0P3IoZSx0KTpudWxsLHM9W107ZSYmZSE9PWE7KXMucHVzaChlKSxlPWUuX2hvc3RQYXJl
bnQ7Zm9yKHZhciB1PVtdO3QmJnQhPT1hOyl1LnB1c2godCksdD10Ll9ob3N0UGFyZW50O3ZhciBs
O2ZvcihsPTA7bDxzLmxlbmd0aDtsKyspbihzW2xdLCJidWJibGVkIixvKTtmb3IobD11Lmxlbmd0
aDtsLS0gPjA7KW4odVtsXSwiY2FwdHVyZWQiLGkpfXZhciB1PWUoMTEwKTtlKDEzNCk7dC5leHBv
cnRzPXtpc0FuY2VzdG9yOm8sZ2V0TG93ZXN0Q29tbW9uQW5jZXN0b3I6cixnZXRQYXJlbnRJbnN0
YW5jZTppLHRyYXZlcnNlVHdvUGhhc2U6YSx0cmF2ZXJzZUVudGVyTGVhdmU6c319LHsxMTA6MTEw
LDEzNDoxMzR9XSw0NTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKCl7
dGhpcy5yZWluaXRpYWxpemVUcmFuc2FjdGlvbigpfXZhciBvPWUoMTQwKSxpPWUoNzEpLGE9ZSg4
OSkscz1lKDEyNiksdT17aW5pdGlhbGl6ZTpzLGNsb3NlOmZ1bmN0aW9uKCl7ZC5pc0JhdGNoaW5n
VXBkYXRlcz0hMX19LGw9e2luaXRpYWxpemU6cyxjbG9zZTppLmZsdXNoQmF0Y2hlZFVwZGF0ZXMu
YmluZChpKX0sYz1bbCx1XTtvKHIucHJvdG90eXBlLGEse2dldFRyYW5zYWN0aW9uV3JhcHBlcnM6
ZnVuY3Rpb24oKXtyZXR1cm4gY319KTt2YXIgcD1uZXcgcixkPXtpc0JhdGNoaW5nVXBkYXRlczoh
MSxiYXRjaGVkVXBkYXRlczpmdW5jdGlvbihlLHQsbixyLG8saSl7dmFyIGE9ZC5pc0JhdGNoaW5n
VXBkYXRlcztyZXR1cm4gZC5pc0JhdGNoaW5nVXBkYXRlcz0hMCxhP2UodCxuLHIsbyxpKTpwLnBl
cmZvcm0oZSxudWxsLHQsbixyLG8saSl9fTt0LmV4cG9ydHM9ZH0sezEyNjoxMjYsMTQwOjE0MCw3
MTo3MSw4OTo4OX1dLDQ2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIo
KXt4fHwoeD0hMCx5LkV2ZW50RW1pdHRlci5pbmplY3RSZWFjdEV2ZW50TGlzdGVuZXIoZykseS5F
dmVudFBsdWdpbkh1Yi5pbmplY3RFdmVudFBsdWdpbk9yZGVyKHMpLHkuRXZlbnRQbHVnaW5VdGls
cy5pbmplY3RDb21wb25lbnRUcmVlKGQpLHkuRXZlbnRQbHVnaW5VdGlscy5pbmplY3RUcmVlVHJh
dmVyc2FsKGgpLHkuRXZlbnRQbHVnaW5IdWIuaW5qZWN0RXZlbnRQbHVnaW5zQnlOYW1lKHtTaW1w
bGVFdmVudFBsdWdpbjpFLEVudGVyTGVhdmVFdmVudFBsdWdpbjp1LENoYW5nZUV2ZW50UGx1Z2lu
OmEsU2VsZWN0RXZlbnRQbHVnaW46YixCZWZvcmVJbnB1dEV2ZW50UGx1Z2luOml9KSx5Lkhvc3RD
b21wb25lbnQuaW5qZWN0R2VuZXJpY0NvbXBvbmVudENsYXNzKHApLHkuSG9zdENvbXBvbmVudC5p
bmplY3RUZXh0Q29tcG9uZW50Q2xhc3MobSkseS5ET01Qcm9wZXJ0eS5pbmplY3RET01Qcm9wZXJ0
eUNvbmZpZyhvKSx5LkRPTVByb3BlcnR5LmluamVjdERPTVByb3BlcnR5Q29uZmlnKGwpLHkuRE9N
UHJvcGVydHkuaW5qZWN0RE9NUHJvcGVydHlDb25maWcoQykseS5FbXB0eUNvbXBvbmVudC5pbmpl
Y3RFbXB0eUNvbXBvbmVudEZhY3RvcnkoZnVuY3Rpb24oZSl7cmV0dXJuIG5ldyBmKGUpfSkseS5V
cGRhdGVzLmluamVjdFJlY29uY2lsZVRyYW5zYWN0aW9uKF8pLHkuVXBkYXRlcy5pbmplY3RCYXRj
aGluZ1N0cmF0ZWd5KHYpLHkuQ29tcG9uZW50LmluamVjdEVudmlyb25tZW50KGMpKX12YXIgbz1l
KDEpLGk9ZSgzKSxhPWUoNykscz1lKDE0KSx1PWUoMTUpLGw9ZSgyMSksYz1lKDI3KSxwPWUoMzAp
LGQ9ZSgzMiksZj1lKDM0KSxoPWUoNDQpLG09ZSg0Miksdj1lKDQ1KSxnPWUoNTEpLHk9ZSg1NCks
Xz1lKDYzKSxDPWUoNzMpLGI9ZSg3NCksRT1lKDc1KSx4PSExO3QuZXhwb3J0cz17aW5qZWN0OnJ9
fSx7MToxLDE0OjE0LDE1OjE1LDIxOjIxLDI3OjI3LDM6MywzMDozMCwzMjozMiwzNDozNCw0Mjo0
Miw0NDo0NCw0NTo0NSw1MTo1MSw1NDo1NCw2Mzo2Myw3OjcsNzM6NzMsNzQ6NzQsNzU6NzV9XSw0
NzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj0iZnVuY3Rpb24iPT10eXBlb2Yg
U3ltYm9sJiZTeW1ib2wuZm9yJiZTeW1ib2wuZm9yKCJyZWFjdC5lbGVtZW50Iil8fDYwMTAzO3Qu
ZXhwb3J0cz1yfSx7fV0sNDg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHIsbz17
aW5qZWN0RW1wdHlDb21wb25lbnRGYWN0b3J5OmZ1bmN0aW9uKGUpe3I9ZX19LGk9e2NyZWF0ZTpm
dW5jdGlvbihlKXtyZXR1cm4gcihlKX19O2kuaW5qZWN0aW9uPW8sdC5leHBvcnRzPWl9LHt9XSw0
OTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXt0cnl7dChu
KX1jYXRjaChlKXtudWxsPT09byYmKG89ZSl9fXZhciBvPW51bGwsaT17aW52b2tlR3VhcmRlZENh
bGxiYWNrOnIsaW52b2tlR3VhcmRlZENhbGxiYWNrV2l0aENhdGNoOnIscmV0aHJvd0NhdWdodEVy
cm9yOmZ1bmN0aW9uKCl7aWYobyl7dmFyIGU9bzt0aHJvdyBvPW51bGwsZX19fTt0LmV4cG9ydHM9
aX0se31dLDUwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7by5l
bnF1ZXVlRXZlbnRzKGUpLG8ucHJvY2Vzc0V2ZW50UXVldWUoITEpfXZhciBvPWUoMTYpLGk9e2hh
bmRsZVRvcExldmVsOmZ1bmN0aW9uKGUsdCxuLGkpe3Ioby5leHRyYWN0RXZlbnRzKGUsdCxuLGkp
KX19O3QuZXhwb3J0cz1pfSx7MTY6MTZ9XSw1MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0
IjtmdW5jdGlvbiByKGUpe2Zvcig7ZS5faG9zdFBhcmVudDspZT1lLl9ob3N0UGFyZW50O3ZhciB0
PXAuZ2V0Tm9kZUZyb21JbnN0YW5jZShlKSxuPXQucGFyZW50Tm9kZTtyZXR1cm4gcC5nZXRDbG9z
ZXN0SW5zdGFuY2VGcm9tTm9kZShuKX1mdW5jdGlvbiBvKGUsdCl7dGhpcy50b3BMZXZlbFR5cGU9
ZSx0aGlzLm5hdGl2ZUV2ZW50PXQsdGhpcy5hbmNlc3RvcnM9W119ZnVuY3Rpb24gaShlKXt2YXIg
dD1mKGUubmF0aXZlRXZlbnQpLG49cC5nZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZSh0KSxvPW47
ZG97ZS5hbmNlc3RvcnMucHVzaChvKSxvPW8mJnIobyl9d2hpbGUobyk7Zm9yKHZhciBpPTA7aTxl
LmFuY2VzdG9ycy5sZW5ndGg7aSsrKW49ZS5hbmNlc3RvcnNbaV0sbS5faGFuZGxlVG9wTGV2ZWwo
ZS50b3BMZXZlbFR5cGUsbixlLm5hdGl2ZUV2ZW50LGYoZS5uYXRpdmVFdmVudCkpfWZ1bmN0aW9u
IGEoZSl7ZShoKHdpbmRvdykpfXZhciBzPWUoMTQwKSx1PWUoMTE5KSxsPWUoMTIwKSxjPWUoMjQp
LHA9ZSgzMiksZD1lKDcxKSxmPWUoMTAxKSxoPWUoMTMxKTtzKG8ucHJvdG90eXBlLHtkZXN0cnVj
dG9yOmZ1bmN0aW9uKCl7dGhpcy50b3BMZXZlbFR5cGU9bnVsbCx0aGlzLm5hdGl2ZUV2ZW50PW51
bGwsdGhpcy5hbmNlc3RvcnMubGVuZ3RoPTB9fSksYy5hZGRQb29saW5nVG8obyxjLnR3b0FyZ3Vt
ZW50UG9vbGVyKTt2YXIgbT17X2VuYWJsZWQ6ITAsX2hhbmRsZVRvcExldmVsOm51bGwsV0lORE9X
X0hBTkRMRTpsLmNhblVzZURPTT93aW5kb3c6bnVsbCxzZXRIYW5kbGVUb3BMZXZlbDpmdW5jdGlv
bihlKXttLl9oYW5kbGVUb3BMZXZlbD1lfSxzZXRFbmFibGVkOmZ1bmN0aW9uKGUpe20uX2VuYWJs
ZWQ9ISFlfSxpc0VuYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gbS5fZW5hYmxlZH0sdHJhcEJ1YmJs
ZWRFdmVudDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIG4/dS5saXN0ZW4obix0LG0uZGlzcGF0Y2hF
dmVudC5iaW5kKG51bGwsZSkpOm51bGx9LHRyYXBDYXB0dXJlZEV2ZW50OmZ1bmN0aW9uKGUsdCxu
KXtyZXR1cm4gbj91LmNhcHR1cmUobix0LG0uZGlzcGF0Y2hFdmVudC5iaW5kKG51bGwsZSkpOm51
bGx9LG1vbml0b3JTY3JvbGxWYWx1ZTpmdW5jdGlvbihlKXt2YXIgdD1hLmJpbmQobnVsbCxlKTt1
Lmxpc3Rlbih3aW5kb3csInNjcm9sbCIsdCl9LGRpc3BhdGNoRXZlbnQ6ZnVuY3Rpb24oZSx0KXtp
ZihtLl9lbmFibGVkKXt2YXIgbj1vLmdldFBvb2xlZChlLHQpO3RyeXtkLmJhdGNoZWRVcGRhdGVz
KGksbil9ZmluYWxseXtvLnJlbGVhc2Uobil9fX19O3QuZXhwb3J0cz1tfSx7MTAxOjEwMSwxMTk6
MTE5LDEyMDoxMjAsMTMxOjEzMSwxNDA6MTQwLDI0OjI0LDMyOjMyLDcxOjcxfV0sNTI6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9e2xvZ1RvcExldmVsUmVuZGVyczohMX07dC5l
eHBvcnRzPXJ9LHt9XSw1MzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiBy
KGUpe3JldHVybiBzfHxhKCIxMTEiLGUudHlwZSksbmV3IHMoZSl9ZnVuY3Rpb24gbyhlKXtyZXR1
cm4gbmV3IHUoZSl9ZnVuY3Rpb24gaShlKXtyZXR1cm4gZSBpbnN0YW5jZW9mIHV9dmFyIGE9ZSgx
MTApLHM9KGUoMTM0KSxudWxsKSx1PW51bGwsbD17aW5qZWN0R2VuZXJpY0NvbXBvbmVudENsYXNz
OmZ1bmN0aW9uKGUpe3M9ZX0saW5qZWN0VGV4dENvbXBvbmVudENsYXNzOmZ1bmN0aW9uKGUpe3U9
ZX19LGM9e2NyZWF0ZUludGVybmFsQ29tcG9uZW50OnIsY3JlYXRlSW5zdGFuY2VGb3JUZXh0Om8s
aXNUZXh0Q29tcG9uZW50OmksaW5qZWN0aW9uOmx9O3QuZXhwb3J0cz1jfSx7MTEwOjExMCwxMzQ6
MTM0fV0sNTQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgxMSksbz1lKDE2
KSxpPWUoMTgpLGE9ZSgyOCkscz1lKDQ4KSx1PWUoMjUpLGw9ZSg1MyksYz1lKDcxKSxwPXtDb21w
b25lbnQ6YS5pbmplY3Rpb24sRE9NUHJvcGVydHk6ci5pbmplY3Rpb24sRW1wdHlDb21wb25lbnQ6
cy5pbmplY3Rpb24sRXZlbnRQbHVnaW5IdWI6by5pbmplY3Rpb24sRXZlbnRQbHVnaW5VdGlsczpp
LmluamVjdGlvbixFdmVudEVtaXR0ZXI6dS5pbmplY3Rpb24sSG9zdENvbXBvbmVudDpsLmluamVj
dGlvbixVcGRhdGVzOmMuaW5qZWN0aW9ufTt0LmV4cG9ydHM9cH0sezExOjExLDE2OjE2LDE4OjE4
LDI1OjI1LDI4OjI4LDQ4OjQ4LDUzOjUzLDcxOjcxfV0sNTU6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gaShkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQs
ZSl9dmFyIG89ZSgzOSksaT1lKDEyMyksYT1lKDEyOCkscz1lKDEyOSksdT17aGFzU2VsZWN0aW9u
Q2FwYWJpbGl0aWVzOmZ1bmN0aW9uKGUpe3ZhciB0PWUmJmUubm9kZU5hbWUmJmUubm9kZU5hbWUu
dG9Mb3dlckNhc2UoKTtyZXR1cm4gdCYmKCJpbnB1dCI9PT10JiYidGV4dCI9PT1lLnR5cGV8fCJ0
ZXh0YXJlYSI9PT10fHwidHJ1ZSI9PT1lLmNvbnRlbnRFZGl0YWJsZSl9LGdldFNlbGVjdGlvbklu
Zm9ybWF0aW9uOmZ1bmN0aW9uKCl7dmFyIGU9cygpO3JldHVybntmb2N1c2VkRWxlbTplLHNlbGVj
dGlvblJhbmdlOnUuaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKGUpP3UuZ2V0U2VsZWN0aW9uKGUp
Om51bGx9fSxyZXN0b3JlU2VsZWN0aW9uOmZ1bmN0aW9uKGUpe3ZhciB0PXMoKSxuPWUuZm9jdXNl
ZEVsZW0sbz1lLnNlbGVjdGlvblJhbmdlO3QhPT1uJiZyKG4pJiYodS5oYXNTZWxlY3Rpb25DYXBh
YmlsaXRpZXMobikmJnUuc2V0U2VsZWN0aW9uKG4sbyksYShuKSl9LGdldFNlbGVjdGlvbjpmdW5j
dGlvbihlKXt2YXIgdDtpZigic2VsZWN0aW9uU3RhcnQiaW4gZSl0PXtzdGFydDplLnNlbGVjdGlv
blN0YXJ0LGVuZDplLnNlbGVjdGlvbkVuZH07ZWxzZSBpZihkb2N1bWVudC5zZWxlY3Rpb24mJmUu
bm9kZU5hbWUmJiJpbnB1dCI9PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpe3ZhciBuPWRvY3Vt
ZW50LnNlbGVjdGlvbi5jcmVhdGVSYW5nZSgpO24ucGFyZW50RWxlbWVudCgpPT09ZSYmKHQ9e3N0
YXJ0Oi1uLm1vdmVTdGFydCgiY2hhcmFjdGVyIiwtZS52YWx1ZS5sZW5ndGgpLGVuZDotbi5tb3Zl
RW5kKCJjaGFyYWN0ZXIiLC1lLnZhbHVlLmxlbmd0aCl9KX1lbHNlIHQ9by5nZXRPZmZzZXRzKGUp
O3JldHVybiB0fHx7c3RhcnQ6MCxlbmQ6MH19LHNldFNlbGVjdGlvbjpmdW5jdGlvbihlLHQpe3Zh
ciBuPXQuc3RhcnQscj10LmVuZDtpZih2b2lkIDA9PT1yJiYocj1uKSwic2VsZWN0aW9uU3RhcnQi
aW4gZSllLnNlbGVjdGlvblN0YXJ0PW4sZS5zZWxlY3Rpb25FbmQ9TWF0aC5taW4ocixlLnZhbHVl
Lmxlbmd0aCk7ZWxzZSBpZihkb2N1bWVudC5zZWxlY3Rpb24mJmUubm9kZU5hbWUmJiJpbnB1dCI9
PT1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkpe3ZhciBpPWUuY3JlYXRlVGV4dFJhbmdlKCk7aS5j
b2xsYXBzZSghMCksaS5tb3ZlU3RhcnQoImNoYXJhY3RlciIsbiksaS5tb3ZlRW5kKCJjaGFyYWN0
ZXIiLHItbiksaS5zZWxlY3QoKX1lbHNlIG8uc2V0T2Zmc2V0cyhlLHQpfX07dC5leHBvcnRzPXV9
LHsxMjM6MTIzLDEyODoxMjgsMTI5OjEyOSwzOTozOX1dLDU2OltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO3ZhciByPXtyZW1vdmU6ZnVuY3Rpb24oZSl7ZS5fcmVhY3RJbnRlcm5hbEluc3Rh
bmNlPXZvaWQgMH0sZ2V0OmZ1bmN0aW9uKGUpe3JldHVybiBlLl9yZWFjdEludGVybmFsSW5zdGFu
Y2V9LGhhczpmdW5jdGlvbihlKXtyZXR1cm4gdm9pZCAwIT09ZS5fcmVhY3RJbnRlcm5hbEluc3Rh
bmNlfSxzZXQ6ZnVuY3Rpb24oZSx0KXtlLl9yZWFjdEludGVybmFsSW5zdGFuY2U9dH19O3QuZXhw
b3J0cz1yfSx7fV0sNTc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dC5leHBvcnRzPXtk
ZWJ1Z1Rvb2w6bnVsbH19LHt9XSw1ODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIg
cj1lKDkyKSxvPS9ePFwhXC1cLS8saT17Q0hFQ0tTVU1fQVRUUl9OQU1FOiJkYXRhLXJlYWN0LWNo
ZWNrc3VtIixhZGRDaGVja3N1bVRvTWFya3VwOmZ1bmN0aW9uKGUpe3ZhciB0PXIoZSk7cmV0dXJu
IG8udGVzdChlKT9lOmUucmVwbGFjZSgvXC8/Pi8sIiAiK2kuQ0hFQ0tTVU1fQVRUUl9OQU1FKyc9
IicrdCsnIiQmJyl9LGNhblJldXNlTWFya3VwOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5nZXRBdHRy
aWJ1dGUoaS5DSEVDS1NVTV9BVFRSX05BTUUpO3JldHVybiBuPW4mJnBhcnNlSW50KG4sMTApLHIo
ZSk9PT1ufX07dC5leHBvcnRzPWl9LHs5Mjo5Mn1dLDU5OltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4pe3JldHVybnt0eXBlOiJJTlNFUlRfTUFSS1VQIixjb250
ZW50OmUsZnJvbUluZGV4Om51bGwsZnJvbU5vZGU6bnVsbCx0b0luZGV4Om4sYWZ0ZXJOb2RlOnR9
fWZ1bmN0aW9uIG8oZSx0LG4pe3JldHVybnt0eXBlOiJNT1ZFX0VYSVNUSU5HIixjb250ZW50Om51
bGwsZnJvbUluZGV4OmUuX21vdW50SW5kZXgsZnJvbU5vZGU6ZC5nZXRIb3N0Tm9kZShlKSx0b0lu
ZGV4Om4sYWZ0ZXJOb2RlOnR9fWZ1bmN0aW9uIGkoZSx0KXtyZXR1cm57dHlwZToiUkVNT1ZFX05P
REUiLGNvbnRlbnQ6bnVsbCxmcm9tSW5kZXg6ZS5fbW91bnRJbmRleCxmcm9tTm9kZTp0LHRvSW5k
ZXg6bnVsbCxhZnRlck5vZGU6bnVsbH19ZnVuY3Rpb24gYShlKXtyZXR1cm57dHlwZToiU0VUX01B
UktVUCIsY29udGVudDplLGZyb21JbmRleDpudWxsLGZyb21Ob2RlOm51bGwsdG9JbmRleDpudWxs
LGFmdGVyTm9kZTpudWxsfX1mdW5jdGlvbiBzKGUpe3JldHVybnt0eXBlOiJURVhUX0NPTlRFTlQi
LGNvbnRlbnQ6ZSxmcm9tSW5kZXg6bnVsbCxmcm9tTm9kZTpudWxsLHRvSW5kZXg6bnVsbCxhZnRl
ck5vZGU6bnVsbH19ZnVuY3Rpb24gdShlLHQpe3JldHVybiB0JiYoZT1lfHxbXSxlLnB1c2godCkp
LGV9ZnVuY3Rpb24gbChlLHQpe3AucHJvY2Vzc0NoaWxkcmVuVXBkYXRlcyhlLHQpfXZhciBjPWUo
MTEwKSxwPWUoMjgpLGQ9KGUoNTYpLGUoNTcpLGUoMTE2KSxlKDY0KSksZj1lKDI2KSxoPShlKDEy
NiksZSg5NikpLG09KGUoMTM0KSx7TWl4aW46e19yZWNvbmNpbGVySW5zdGFudGlhdGVDaGlsZHJl
bjpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGYuaW5zdGFudGlhdGVDaGlsZHJlbihlLHQsbil9LF9y
ZWNvbmNpbGVyVXBkYXRlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4scixvLGkpe3ZhciBhO3JldHVy
biBhPWgodCwwKSxmLnVwZGF0ZUNoaWxkcmVuKGUsYSxuLHIsbyx0aGlzLHRoaXMuX2hvc3RDb250
YWluZXJJbmZvLGksMCksYX0sbW91bnRDaGlsZHJlbjpmdW5jdGlvbihlLHQsbil7dmFyIHI9dGhp
cy5fcmVjb25jaWxlckluc3RhbnRpYXRlQ2hpbGRyZW4oZSx0LG4pO3RoaXMuX3JlbmRlcmVkQ2hp
bGRyZW49cjt2YXIgbz1bXSxpPTA7Zm9yKHZhciBhIGluIHIpaWYoci5oYXNPd25Qcm9wZXJ0eShh
KSl7dmFyIHM9clthXSx1PWQubW91bnRDb21wb25lbnQocyx0LHRoaXMsdGhpcy5faG9zdENvbnRh
aW5lckluZm8sbiwwKTtzLl9tb3VudEluZGV4PWkrKyxvLnB1c2godSl9cmV0dXJuIG99LHVwZGF0
ZVRleHRDb250ZW50OmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47Zi51
bm1vdW50Q2hpbGRyZW4odCwhMSk7Zm9yKHZhciBuIGluIHQpdC5oYXNPd25Qcm9wZXJ0eShuKSYm
YygiMTE4Iik7bCh0aGlzLFtzKGUpXSl9LHVwZGF0ZU1hcmt1cDpmdW5jdGlvbihlKXt2YXIgdD10
aGlzLl9yZW5kZXJlZENoaWxkcmVuO2YudW5tb3VudENoaWxkcmVuKHQsITEpO2Zvcih2YXIgbiBp
biB0KXQuaGFzT3duUHJvcGVydHkobikmJmMoIjExOCIpO2wodGhpcyxbYShlKV0pfSx1cGRhdGVD
aGlsZHJlbjpmdW5jdGlvbihlLHQsbil7dGhpcy5fdXBkYXRlQ2hpbGRyZW4oZSx0LG4pfSxfdXBk
YXRlQ2hpbGRyZW46ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMuX3JlbmRlcmVkQ2hpbGRyZW4s
bz17fSxpPVtdLGE9dGhpcy5fcmVjb25jaWxlclVwZGF0ZUNoaWxkcmVuKHIsZSxpLG8sdCxuKTtp
ZihhfHxyKXt2YXIgcyxjPW51bGwscD0wLGY9MCxoPTAsbT1udWxsO2ZvcihzIGluIGEpaWYoYS5o
YXNPd25Qcm9wZXJ0eShzKSl7dmFyIHY9ciYmcltzXSxnPWFbc107dj09PWc/KGM9dShjLHRoaXMu
bW92ZUNoaWxkKHYsbSxwLGYpKSxmPU1hdGgubWF4KHYuX21vdW50SW5kZXgsZiksdi5fbW91bnRJ
bmRleD1wKToodiYmKGY9TWF0aC5tYXgodi5fbW91bnRJbmRleCxmKSksYz11KGMsdGhpcy5fbW91
bnRDaGlsZEF0SW5kZXgoZyxpW2hdLG0scCx0LG4pKSxoKyspLHArKyxtPWQuZ2V0SG9zdE5vZGUo
Zyl9Zm9yKHMgaW4gbylvLmhhc093blByb3BlcnR5KHMpJiYoYz11KGMsdGhpcy5fdW5tb3VudENo
aWxkKHJbc10sb1tzXSkpKTtjJiZsKHRoaXMsYyksdGhpcy5fcmVuZGVyZWRDaGlsZHJlbj1hfX0s
dW5tb3VudENoaWxkcmVuOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX3JlbmRlcmVkQ2hpbGRyZW47
Zi51bm1vdW50Q2hpbGRyZW4odCxlKSx0aGlzLl9yZW5kZXJlZENoaWxkcmVuPW51bGx9LG1vdmVD
aGlsZDpmdW5jdGlvbihlLHQsbixyKXtpZihlLl9tb3VudEluZGV4PHIpcmV0dXJuIG8oZSx0LG4p
fSxjcmVhdGVDaGlsZDpmdW5jdGlvbihlLHQsbil7cmV0dXJuIHIobix0LGUuX21vdW50SW5kZXgp
fSxyZW1vdmVDaGlsZDpmdW5jdGlvbihlLHQpe3JldHVybiBpKGUsdCl9LF9tb3VudENoaWxkQXRJ
bmRleDpmdW5jdGlvbihlLHQsbixyLG8saSl7cmV0dXJuIGUuX21vdW50SW5kZXg9cix0aGlzLmNy
ZWF0ZUNoaWxkKGUsbix0KX0sX3VubW91bnRDaGlsZDpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMu
cmVtb3ZlQ2hpbGQoZSx0KTtyZXR1cm4gZS5fbW91bnRJbmRleD1udWxsLG59fX0pO3QuZXhwb3J0
cz1tfSx7MTEwOjExMCwxMTY6MTE2LDEyNjoxMjYsMTM0OjEzNCwyNjoyNiwyODoyOCw1Njo1Niw1
Nzo1Nyw2NDo2NCw5Njo5Nn1dLDYwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciBy
PWUoMTEwKSxvPWUoMTE3KSxpPShlKDEzNCkse0hPU1Q6MCxDT01QT1NJVEU6MSxFTVBUWToyLGdl
dFR5cGU6ZnVuY3Rpb24oZSl7cmV0dXJuIG51bGw9PT1lfHwhMT09PWU/aS5FTVBUWTpvLmlzVmFs
aWRFbGVtZW50KGUpPyJmdW5jdGlvbiI9PXR5cGVvZiBlLnR5cGU/aS5DT01QT1NJVEU6aS5IT1NU
OnZvaWQgcigiMjYiLGUpfX0pO3QuZXhwb3J0cz1pfSx7MTEwOjExMCwxMTc6MTE3LDEzNDoxMzR9
XSw2MTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiEo
IWV8fCJmdW5jdGlvbiIhPXR5cGVvZiBlLmF0dGFjaFJlZnx8ImZ1bmN0aW9uIiE9dHlwZW9mIGUu
ZGV0YWNoUmVmKX12YXIgbz1lKDExMCksaT0oZSgxMzQpLHthZGRDb21wb25lbnRBc1JlZlRvOmZ1
bmN0aW9uKGUsdCxuKXtyKG4pfHxvKCIxMTkiKSxuLmF0dGFjaFJlZih0LGUpfSxyZW1vdmVDb21w
b25lbnRBc1JlZkZyb206ZnVuY3Rpb24oZSx0LG4pe3Iobil8fG8oIjEyMCIpO3ZhciBpPW4uZ2V0
UHVibGljSW5zdGFuY2UoKTtpJiZpLnJlZnNbdF09PT1lLmdldFB1YmxpY0luc3RhbmNlKCkmJm4u
ZGV0YWNoUmVmKHQpfX0pO3QuZXhwb3J0cz1pfSx7MTEwOjExMCwxMzQ6MTM0fV0sNjI6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dC5leHBvcnRzPSJTRUNSRVRfRE9fTk9UX1BBU1NfVEhJ
U19PUl9ZT1VfV0lMTF9CRV9GSVJFRCJ9LHt9XSw2MzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0IjtmdW5jdGlvbiByKGUpe3RoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKSx0aGlzLnJl
bmRlclRvU3RhdGljTWFya3VwPSExLHRoaXMucmVhY3RNb3VudFJlYWR5PWkuZ2V0UG9vbGVkKG51
bGwpLHRoaXMudXNlQ3JlYXRlRWxlbWVudD1lfXZhciBvPWUoMTQwKSxpPWUoNiksYT1lKDI0KSxz
PWUoMjUpLHU9ZSg1NSksbD0oZSg1NyksZSg4OSkpLGM9ZSg3MCkscD17aW5pdGlhbGl6ZTp1Lmdl
dFNlbGVjdGlvbkluZm9ybWF0aW9uLGNsb3NlOnUucmVzdG9yZVNlbGVjdGlvbn0sZD17aW5pdGlh
bGl6ZTpmdW5jdGlvbigpe3ZhciBlPXMuaXNFbmFibGVkKCk7cmV0dXJuIHMuc2V0RW5hYmxlZCgh
MSksZX0sY2xvc2U6ZnVuY3Rpb24oZSl7cy5zZXRFbmFibGVkKGUpfX0sZj17aW5pdGlhbGl6ZTpm
dW5jdGlvbigpe3RoaXMucmVhY3RNb3VudFJlYWR5LnJlc2V0KCl9LGNsb3NlOmZ1bmN0aW9uKCl7
dGhpcy5yZWFjdE1vdW50UmVhZHkubm90aWZ5QWxsKCl9fSxoPVtwLGQsZl0sbT17Z2V0VHJhbnNh
Y3Rpb25XcmFwcGVyczpmdW5jdGlvbigpe3JldHVybiBofSxnZXRSZWFjdE1vdW50UmVhZHk6ZnVu
Y3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFjdE1vdW50UmVhZHl9LGdldFVwZGF0ZVF1ZXVlOmZ1bmN0
aW9uKCl7cmV0dXJuIGN9LGNoZWNrcG9pbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZWFjdE1v
dW50UmVhZHkuY2hlY2twb2ludCgpfSxyb2xsYmFjazpmdW5jdGlvbihlKXt0aGlzLnJlYWN0TW91
bnRSZWFkeS5yb2xsYmFjayhlKX0sZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe2kucmVsZWFzZSh0aGlz
LnJlYWN0TW91bnRSZWFkeSksdGhpcy5yZWFjdE1vdW50UmVhZHk9bnVsbH19O28oci5wcm90b3R5
cGUsbCxtKSxhLmFkZFBvb2xpbmdUbyhyKSx0LmV4cG9ydHM9cn0sezE0MDoxNDAsMjQ6MjQsMjU6
MjUsNTU6NTUsNTc6NTcsNjo2LDcwOjcwLDg5Ojg5fV0sNjQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcigpe28uYXR0YWNoUmVmcyh0aGlzLHRoaXMuX2N1cnJlbnRFbGVt
ZW50KX12YXIgbz1lKDY1KSxpPShlKDU3KSxlKDEzOSkse21vdW50Q29tcG9uZW50OmZ1bmN0aW9u
KGUsdCxuLG8saSxhKXt2YXIgcz1lLm1vdW50Q29tcG9uZW50KHQsbixvLGksYSk7cmV0dXJuIGUu
X2N1cnJlbnRFbGVtZW50JiZudWxsIT1lLl9jdXJyZW50RWxlbWVudC5yZWYmJnQuZ2V0UmVhY3RN
b3VudFJlYWR5KCkuZW5xdWV1ZShyLGUpLHN9LGdldEhvc3ROb2RlOmZ1bmN0aW9uKGUpe3JldHVy
biBlLmdldEhvc3ROb2RlKCl9LHVubW91bnRDb21wb25lbnQ6ZnVuY3Rpb24oZSx0KXtvLmRldGFj
aFJlZnMoZSxlLl9jdXJyZW50RWxlbWVudCksZS51bm1vdW50Q29tcG9uZW50KHQpfSxyZWNlaXZl
Q29tcG9uZW50OmZ1bmN0aW9uKGUsdCxuLGkpe3ZhciBhPWUuX2N1cnJlbnRFbGVtZW50O2lmKHQh
PT1hfHxpIT09ZS5fY29udGV4dCl7dmFyIHM9by5zaG91bGRVcGRhdGVSZWZzKGEsdCk7cyYmby5k
ZXRhY2hSZWZzKGUsYSksZS5yZWNlaXZlQ29tcG9uZW50KHQsbixpKSxzJiZlLl9jdXJyZW50RWxl
bWVudCYmbnVsbCE9ZS5fY3VycmVudEVsZW1lbnQucmVmJiZuLmdldFJlYWN0TW91bnRSZWFkeSgp
LmVucXVldWUocixlKX19LHBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeTpmdW5jdGlvbihlLHQsbil7
ZS5fdXBkYXRlQmF0Y2hOdW1iZXI9PT1uJiZlLnBlcmZvcm1VcGRhdGVJZk5lY2Vzc2FyeSh0KX19
KTt0LmV4cG9ydHM9aX0sezEzOToxMzksNTc6NTcsNjU6NjV9XSw2NTpbZnVuY3Rpb24oZSx0LG4p
eyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuKXsiZnVuY3Rpb24iPT10eXBlb2YgZT9lKHQu
Z2V0UHVibGljSW5zdGFuY2UoKSk6aS5hZGRDb21wb25lbnRBc1JlZlRvKHQsZSxuKX1mdW5jdGlv
biBvKGUsdCxuKXsiZnVuY3Rpb24iPT10eXBlb2YgZT9lKG51bGwpOmkucmVtb3ZlQ29tcG9uZW50
QXNSZWZGcm9tKHQsZSxuKX12YXIgaT1lKDYxKSxhPXt9O2EuYXR0YWNoUmVmcz1mdW5jdGlvbihl
LHQpe2lmKG51bGwhPT10JiYib2JqZWN0Ij09dHlwZW9mIHQpe3ZhciBuPXQucmVmO251bGwhPW4m
JnIobixlLHQuX293bmVyKX19LGEuc2hvdWxkVXBkYXRlUmVmcz1mdW5jdGlvbihlLHQpe3ZhciBu
PW51bGwscj1udWxsO251bGwhPT1lJiYib2JqZWN0Ij09dHlwZW9mIGUmJihuPWUucmVmLHI9ZS5f
b3duZXIpO3ZhciBvPW51bGwsaT1udWxsO3JldHVybiBudWxsIT09dCYmIm9iamVjdCI9PXR5cGVv
ZiB0JiYobz10LnJlZixpPXQuX293bmVyKSxuIT09b3x8InN0cmluZyI9PXR5cGVvZiBvJiZpIT09
cn0sYS5kZXRhY2hSZWZzPWZ1bmN0aW9uKGUsdCl7aWYobnVsbCE9PXQmJiJvYmplY3QiPT10eXBl
b2YgdCl7dmFyIG49dC5yZWY7bnVsbCE9biYmbyhuLGUsdC5fb3duZXIpfX0sdC5leHBvcnRzPWF9
LHs2MTo2MX1dLDY2OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByPXtpc0JhdGNo
aW5nVXBkYXRlczohMSxiYXRjaGVkVXBkYXRlczpmdW5jdGlvbihlKXt9fTt0LmV4cG9ydHM9cn0s
e31dLDY3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXt2YXIg
bjt0cnl7cmV0dXJuIGguaW5qZWN0aW9uLmluamVjdEJhdGNoaW5nU3RyYXRlZ3koZCksbj1mLmdl
dFBvb2xlZCh0KSxnKyssbi5wZXJmb3JtKGZ1bmN0aW9uKCl7dmFyIHI9dihlLCEwKSxvPXAubW91
bnRDb21wb25lbnQocixuLG51bGwsdSgpLG0sMCk7cmV0dXJuIHR8fChvPWMuYWRkQ2hlY2tzdW1U
b01hcmt1cChvKSksb30sbnVsbCl9ZmluYWxseXtnLS0sZi5yZWxlYXNlKG4pLGd8fGguaW5qZWN0
aW9uLmluamVjdEJhdGNoaW5nU3RyYXRlZ3kobCl9fWZ1bmN0aW9uIG8oZSl7cmV0dXJuIHMuaXNW
YWxpZEVsZW1lbnQoZSl8fGEoIjQ2IikscihlLCExKX1mdW5jdGlvbiBpKGUpe3JldHVybiBzLmlz
VmFsaWRFbGVtZW50KGUpfHxhKCI0NyIpLHIoZSwhMCl9dmFyIGE9ZSgxMTApLHM9ZSgxMTcpLHU9
ZSgzMyksbD1lKDQ1KSxjPShlKDU3KSxlKDU4KSkscD1lKDY0KSxkPWUoNjYpLGY9ZSg2OCksaD1l
KDcxKSxtPWUoMTI3KSx2PWUoMTA2KSxnPShlKDEzNCksMCk7dC5leHBvcnRzPXtyZW5kZXJUb1N0
cmluZzpvLHJlbmRlclRvU3RhdGljTWFya3VwOml9fSx7MTA2OjEwNiwxMTA6MTEwLDExNzoxMTcs
MTI3OjEyNywxMzQ6MTM0LDMzOjMzLDQ1OjQ1LDU3OjU3LDU4OjU4LDY0OjY0LDY2OjY2LDY4OjY4
LDcxOjcxfV0sNjg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt0
aGlzLnJlaW5pdGlhbGl6ZVRyYW5zYWN0aW9uKCksdGhpcy5yZW5kZXJUb1N0YXRpY01hcmt1cD1l
LHRoaXMudXNlQ3JlYXRlRWxlbWVudD0hMSx0aGlzLnVwZGF0ZVF1ZXVlPW5ldyBzKHRoaXMpfXZh
ciBvPWUoMTQwKSxpPWUoMjQpLGE9ZSg4OSkscz0oZSg1NyksZSg2OSkpLHU9W10sbD17ZW5xdWV1
ZTpmdW5jdGlvbigpe319LGM9e2dldFRyYW5zYWN0aW9uV3JhcHBlcnM6ZnVuY3Rpb24oKXtyZXR1
cm4gdX0sZ2V0UmVhY3RNb3VudFJlYWR5OmZ1bmN0aW9uKCl7cmV0dXJuIGx9LGdldFVwZGF0ZVF1
ZXVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudXBkYXRlUXVldWV9LGRlc3RydWN0b3I6ZnVuY3Rp
b24oKXt9LGNoZWNrcG9pbnQ6ZnVuY3Rpb24oKXt9LHJvbGxiYWNrOmZ1bmN0aW9uKCl7fX07byhy
LnByb3RvdHlwZSxhLGMpLGkuYWRkUG9vbGluZ1RvKHIpLHQuZXhwb3J0cz1yfSx7MTQwOjE0MCwy
NDoyNCw1Nzo1Nyw2OTo2OSw4OTo4OX1dLDY5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSx0KXtpZighKGUgaW5zdGFuY2VvZiB0KSl0aHJvdyBuZXcgVHlwZUVycm9y
KCJDYW5ub3QgY2FsbCBhIGNsYXNzIGFzIGEgZnVuY3Rpb24iKX12YXIgbz1lKDcwKSxpPShlKDEz
OSksZnVuY3Rpb24oKXtmdW5jdGlvbiBlKHQpe3IodGhpcyxlKSx0aGlzLnRyYW5zYWN0aW9uPXR9
cmV0dXJuIGUucHJvdG90eXBlLmlzTW91bnRlZD1mdW5jdGlvbihlKXtyZXR1cm4hMX0sZS5wcm90
b3R5cGUuZW5xdWV1ZUNhbGxiYWNrPWZ1bmN0aW9uKGUsdCxuKXt0aGlzLnRyYW5zYWN0aW9uLmlz
SW5UcmFuc2FjdGlvbigpJiZvLmVucXVldWVDYWxsYmFjayhlLHQsbil9LGUucHJvdG90eXBlLmVu
cXVldWVGb3JjZVVwZGF0ZT1mdW5jdGlvbihlKXt0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2Fj
dGlvbigpJiZvLmVucXVldWVGb3JjZVVwZGF0ZShlKX0sZS5wcm90b3R5cGUuZW5xdWV1ZVJlcGxh
Y2VTdGF0ZT1mdW5jdGlvbihlLHQpe3RoaXMudHJhbnNhY3Rpb24uaXNJblRyYW5zYWN0aW9uKCkm
Jm8uZW5xdWV1ZVJlcGxhY2VTdGF0ZShlLHQpfSxlLnByb3RvdHlwZS5lbnF1ZXVlU2V0U3RhdGU9
ZnVuY3Rpb24oZSx0KXt0aGlzLnRyYW5zYWN0aW9uLmlzSW5UcmFuc2FjdGlvbigpJiZvLmVucXVl
dWVTZXRTdGF0ZShlLHQpfSxlfSgpKTt0LmV4cG9ydHM9aX0sezEzOToxMzksNzA6NzB9XSw3MDpb
ZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3UuZW5xdWV1ZVVwZGF0
ZShlKX1mdW5jdGlvbiBvKGUpe3ZhciB0PXR5cGVvZiBlO2lmKCJvYmplY3QiIT09dClyZXR1cm4g
dDt2YXIgbj1lLmNvbnN0cnVjdG9yJiZlLmNvbnN0cnVjdG9yLm5hbWV8fHQscj1PYmplY3Qua2V5
cyhlKTtyZXR1cm4gci5sZW5ndGg+MCYmci5sZW5ndGg8MjA/bisiIChrZXlzOiAiK3Iuam9pbigi
LCAiKSsiKSI6bn1mdW5jdGlvbiBpKGUsdCl7dmFyIG49cy5nZXQoZSk7cmV0dXJuIG58fG51bGx9
dmFyIGE9ZSgxMTApLHM9KGUoMTE2KSxlKDU2KSksdT0oZSg1NyksZSg3MSkpLGw9KGUoMTM0KSxl
KDEzOSkse2lzTW91bnRlZDpmdW5jdGlvbihlKXt2YXIgdD1zLmdldChlKTtyZXR1cm4hIXQmJiEh
dC5fcmVuZGVyZWRDb21wb25lbnR9LGVucXVldWVDYWxsYmFjazpmdW5jdGlvbihlLHQsbil7bC52
YWxpZGF0ZUNhbGxiYWNrKHQsbik7dmFyIG89aShlKTtpZighbylyZXR1cm4gbnVsbDtvLl9wZW5k
aW5nQ2FsbGJhY2tzP28uX3BlbmRpbmdDYWxsYmFja3MucHVzaCh0KTpvLl9wZW5kaW5nQ2FsbGJh
Y2tzPVt0XSxyKG8pfSxlbnF1ZXVlQ2FsbGJhY2tJbnRlcm5hbDpmdW5jdGlvbihlLHQpe2UuX3Bl
bmRpbmdDYWxsYmFja3M/ZS5fcGVuZGluZ0NhbGxiYWNrcy5wdXNoKHQpOmUuX3BlbmRpbmdDYWxs
YmFja3M9W3RdLHIoZSl9LGVucXVldWVGb3JjZVVwZGF0ZTpmdW5jdGlvbihlKXt2YXIgdD1pKGUs
ImZvcmNlVXBkYXRlIik7dCYmKHQuX3BlbmRpbmdGb3JjZVVwZGF0ZT0hMCxyKHQpKX0sZW5xdWV1
ZVJlcGxhY2VTdGF0ZTpmdW5jdGlvbihlLHQsbil7dmFyIG89aShlLCJyZXBsYWNlU3RhdGUiKTtv
JiYoby5fcGVuZGluZ1N0YXRlUXVldWU9W3RdLG8uX3BlbmRpbmdSZXBsYWNlU3RhdGU9ITAsdm9p
ZCAwIT09biYmbnVsbCE9PW4mJihsLnZhbGlkYXRlQ2FsbGJhY2sobiwicmVwbGFjZVN0YXRlIiks
by5fcGVuZGluZ0NhbGxiYWNrcz9vLl9wZW5kaW5nQ2FsbGJhY2tzLnB1c2gobik6by5fcGVuZGlu
Z0NhbGxiYWNrcz1bbl0pLHIobykpfSxlbnF1ZXVlU2V0U3RhdGU6ZnVuY3Rpb24oZSx0KXt2YXIg
bj1pKGUsInNldFN0YXRlIik7biYmKChuLl9wZW5kaW5nU3RhdGVRdWV1ZXx8KG4uX3BlbmRpbmdT
dGF0ZVF1ZXVlPVtdKSkucHVzaCh0KSxyKG4pKX0sZW5xdWV1ZUVsZW1lbnRJbnRlcm5hbDpmdW5j
dGlvbihlLHQsbil7ZS5fcGVuZGluZ0VsZW1lbnQ9dCxlLl9jb250ZXh0PW4scihlKX0sdmFsaWRh
dGVDYWxsYmFjazpmdW5jdGlvbihlLHQpe2UmJiJmdW5jdGlvbiIhPXR5cGVvZiBlJiZhKCIxMjIi
LHQsbyhlKSl9fSk7dC5leHBvcnRzPWx9LHsxMTA6MTEwLDExNjoxMTYsMTM0OjEzNCwxMzk6MTM5
LDU2OjU2LDU3OjU3LDcxOjcxfV0sNzE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVu
Y3Rpb24gcigpe1AuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbiYmYnx8YygiMTIzIil9ZnVuY3Rp
b24gbygpe3RoaXMucmVpbml0aWFsaXplVHJhbnNhY3Rpb24oKSx0aGlzLmRpcnR5Q29tcG9uZW50
c0xlbmd0aD1udWxsLHRoaXMuY2FsbGJhY2tRdWV1ZT1kLmdldFBvb2xlZCgpLHRoaXMucmVjb25j
aWxlVHJhbnNhY3Rpb249UC5SZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uLmdldFBvb2xlZCghMCl9
ZnVuY3Rpb24gaShlLHQsbixvLGksYSl7cmV0dXJuIHIoKSxiLmJhdGNoZWRVcGRhdGVzKGUsdCxu
LG8saSxhKX1mdW5jdGlvbiBhKGUsdCl7cmV0dXJuIGUuX21vdW50T3JkZXItdC5fbW91bnRPcmRl
cn1mdW5jdGlvbiBzKGUpe3ZhciB0PWUuZGlydHlDb21wb25lbnRzTGVuZ3RoO3QhPT1nLmxlbmd0
aCYmYygiMTI0Iix0LGcubGVuZ3RoKSxnLnNvcnQoYSkseSsrO2Zvcih2YXIgbj0wO248dDtuKysp
e3ZhciByPWdbbl0sbz1yLl9wZW5kaW5nQ2FsbGJhY2tzO3IuX3BlbmRpbmdDYWxsYmFja3M9bnVs
bDt2YXIgaTtpZihoLmxvZ1RvcExldmVsUmVuZGVycyl7dmFyIHM9cjtyLl9jdXJyZW50RWxlbWVu
dC50eXBlLmlzUmVhY3RUb3BMZXZlbFdyYXBwZXImJihzPXIuX3JlbmRlcmVkQ29tcG9uZW50KSxp
PSJSZWFjdCB1cGRhdGU6ICIrcy5nZXROYW1lKCksY29uc29sZS50aW1lKGkpfWlmKG0ucGVyZm9y
bVVwZGF0ZUlmTmVjZXNzYXJ5KHIsZS5yZWNvbmNpbGVUcmFuc2FjdGlvbix5KSxpJiZjb25zb2xl
LnRpbWVFbmQoaSksbylmb3IodmFyIHU9MDt1PG8ubGVuZ3RoO3UrKyllLmNhbGxiYWNrUXVldWUu
ZW5xdWV1ZShvW3VdLHIuZ2V0UHVibGljSW5zdGFuY2UoKSl9fWZ1bmN0aW9uIHUoZSl7aWYocigp
LCFiLmlzQmF0Y2hpbmdVcGRhdGVzKXJldHVybiB2b2lkIGIuYmF0Y2hlZFVwZGF0ZXModSxlKTtn
LnB1c2goZSksbnVsbD09ZS5fdXBkYXRlQmF0Y2hOdW1iZXImJihlLl91cGRhdGVCYXRjaE51bWJl
cj15KzEpfWZ1bmN0aW9uIGwoZSx0KXtiLmlzQmF0Y2hpbmdVcGRhdGVzfHxjKCIxMjUiKSxfLmVu
cXVldWUoZSx0KSxDPSEwfXZhciBjPWUoMTEwKSxwPWUoMTQwKSxkPWUoNiksZj1lKDI0KSxoPWUo
NTIpLG09ZSg2NCksdj1lKDg5KSxnPShlKDEzNCksW10pLHk9MCxfPWQuZ2V0UG9vbGVkKCksQz0h
MSxiPW51bGwsRT17aW5pdGlhbGl6ZTpmdW5jdGlvbigpe3RoaXMuZGlydHlDb21wb25lbnRzTGVu
Z3RoPWcubGVuZ3RofSxjbG9zZTpmdW5jdGlvbigpe3RoaXMuZGlydHlDb21wb25lbnRzTGVuZ3Ro
IT09Zy5sZW5ndGg/KGcuc3BsaWNlKDAsdGhpcy5kaXJ0eUNvbXBvbmVudHNMZW5ndGgpLGsoKSk6
Zy5sZW5ndGg9MH19LHg9e2luaXRpYWxpemU6ZnVuY3Rpb24oKXt0aGlzLmNhbGxiYWNrUXVldWUu
cmVzZXQoKX0sY2xvc2U6ZnVuY3Rpb24oKXt0aGlzLmNhbGxiYWNrUXVldWUubm90aWZ5QWxsKCl9
fSx3PVtFLHhdO3Aoby5wcm90b3R5cGUsdix7Z2V0VHJhbnNhY3Rpb25XcmFwcGVyczpmdW5jdGlv
bigpe3JldHVybiB3fSxkZXN0cnVjdG9yOmZ1bmN0aW9uKCl7dGhpcy5kaXJ0eUNvbXBvbmVudHNM
ZW5ndGg9bnVsbCxkLnJlbGVhc2UodGhpcy5jYWxsYmFja1F1ZXVlKSx0aGlzLmNhbGxiYWNrUXVl
dWU9bnVsbCxQLlJlYWN0UmVjb25jaWxlVHJhbnNhY3Rpb24ucmVsZWFzZSh0aGlzLnJlY29uY2ls
ZVRyYW5zYWN0aW9uKSx0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uPW51bGx9LHBlcmZvcm06ZnVu
Y3Rpb24oZSx0LG4pe3JldHVybiB2LnBlcmZvcm0uY2FsbCh0aGlzLHRoaXMucmVjb25jaWxlVHJh
bnNhY3Rpb24ucGVyZm9ybSx0aGlzLnJlY29uY2lsZVRyYW5zYWN0aW9uLGUsdCxuKX19KSxmLmFk
ZFBvb2xpbmdUbyhvKTt2YXIgaz1mdW5jdGlvbigpe2Zvcig7Zy5sZW5ndGh8fEM7KXtpZihnLmxl
bmd0aCl7dmFyIGU9by5nZXRQb29sZWQoKTtlLnBlcmZvcm0ocyxudWxsLGUpLG8ucmVsZWFzZShl
KX1pZihDKXtDPSExO3ZhciB0PV87Xz1kLmdldFBvb2xlZCgpLHQubm90aWZ5QWxsKCksZC5yZWxl
YXNlKHQpfX19LFQ9e2luamVjdFJlY29uY2lsZVRyYW5zYWN0aW9uOmZ1bmN0aW9uKGUpe2V8fGMo
IjEyNiIpLFAuUmVhY3RSZWNvbmNpbGVUcmFuc2FjdGlvbj1lfSxpbmplY3RCYXRjaGluZ1N0cmF0
ZWd5OmZ1bmN0aW9uKGUpe2V8fGMoIjEyNyIpLCJmdW5jdGlvbiIhPXR5cGVvZiBlLmJhdGNoZWRV
cGRhdGVzJiZjKCIxMjgiKSwiYm9vbGVhbiIhPXR5cGVvZiBlLmlzQmF0Y2hpbmdVcGRhdGVzJiZj
KCIxMjkiKSxiPWV9fSxQPXtSZWFjdFJlY29uY2lsZVRyYW5zYWN0aW9uOm51bGwsYmF0Y2hlZFVw
ZGF0ZXM6aSxlbnF1ZXVlVXBkYXRlOnUsZmx1c2hCYXRjaGVkVXBkYXRlczprLGluamVjdGlvbjpU
LGFzYXA6bH07dC5leHBvcnRzPVB9LHsxMTA6MTEwLDEzNDoxMzQsMTQwOjE0MCwyNDoyNCw1Mjo1
Miw2OjYsNjQ6NjQsODk6ODl9XSw3MjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt0LmV4
cG9ydHM9IjE1LjUuNCJ9LHt9XSw3MzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIg
cj17eGxpbms6Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiLHhtbDoiaHR0cDovL3d3dy53
My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlIn0sbz17YWNjZW50SGVpZ2h0OiJhY2NlbnQtaGVpZ2h0
IixhY2N1bXVsYXRlOjAsYWRkaXRpdmU6MCxhbGlnbm1lbnRCYXNlbGluZToiYWxpZ25tZW50LWJh
c2VsaW5lIixhbGxvd1Jlb3JkZXI6ImFsbG93UmVvcmRlciIsYWxwaGFiZXRpYzowLGFtcGxpdHVk
ZTowLGFyYWJpY0Zvcm06ImFyYWJpYy1mb3JtIixhc2NlbnQ6MCxhdHRyaWJ1dGVOYW1lOiJhdHRy
aWJ1dGVOYW1lIixhdHRyaWJ1dGVUeXBlOiJhdHRyaWJ1dGVUeXBlIixhdXRvUmV2ZXJzZToiYXV0
b1JldmVyc2UiLGF6aW11dGg6MCxiYXNlRnJlcXVlbmN5OiJiYXNlRnJlcXVlbmN5IixiYXNlUHJv
ZmlsZToiYmFzZVByb2ZpbGUiLGJhc2VsaW5lU2hpZnQ6ImJhc2VsaW5lLXNoaWZ0IixiYm94OjAs
YmVnaW46MCxiaWFzOjAsYnk6MCxjYWxjTW9kZToiY2FsY01vZGUiLGNhcEhlaWdodDoiY2FwLWhl
aWdodCIsY2xpcDowLGNsaXBQYXRoOiJjbGlwLXBhdGgiLGNsaXBSdWxlOiJjbGlwLXJ1bGUiLGNs
aXBQYXRoVW5pdHM6ImNsaXBQYXRoVW5pdHMiLGNvbG9ySW50ZXJwb2xhdGlvbjoiY29sb3ItaW50
ZXJwb2xhdGlvbiIsY29sb3JJbnRlcnBvbGF0aW9uRmlsdGVyczoiY29sb3ItaW50ZXJwb2xhdGlv
bi1maWx0ZXJzIixjb2xvclByb2ZpbGU6ImNvbG9yLXByb2ZpbGUiLGNvbG9yUmVuZGVyaW5nOiJj
b2xvci1yZW5kZXJpbmciLGNvbnRlbnRTY3JpcHRUeXBlOiJjb250ZW50U2NyaXB0VHlwZSIsY29u
dGVudFN0eWxlVHlwZToiY29udGVudFN0eWxlVHlwZSIsY3Vyc29yOjAsY3g6MCxjeTowLGQ6MCxk
ZWNlbGVyYXRlOjAsZGVzY2VudDowLGRpZmZ1c2VDb25zdGFudDoiZGlmZnVzZUNvbnN0YW50Iixk
aXJlY3Rpb246MCxkaXNwbGF5OjAsZGl2aXNvcjowLGRvbWluYW50QmFzZWxpbmU6ImRvbWluYW50
LWJhc2VsaW5lIixkdXI6MCxkeDowLGR5OjAsZWRnZU1vZGU6ImVkZ2VNb2RlIixlbGV2YXRpb246
MCxlbmFibGVCYWNrZ3JvdW5kOiJlbmFibGUtYmFja2dyb3VuZCIsZW5kOjAsZXhwb25lbnQ6MCxl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkOiJleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIixmaWxs
OjAsZmlsbE9wYWNpdHk6ImZpbGwtb3BhY2l0eSIsZmlsbFJ1bGU6ImZpbGwtcnVsZSIsZmlsdGVy
OjAsZmlsdGVyUmVzOiJmaWx0ZXJSZXMiLGZpbHRlclVuaXRzOiJmaWx0ZXJVbml0cyIsZmxvb2RD
b2xvcjoiZmxvb2QtY29sb3IiLGZsb29kT3BhY2l0eToiZmxvb2Qtb3BhY2l0eSIsZm9jdXNhYmxl
OjAsZm9udEZhbWlseToiZm9udC1mYW1pbHkiLGZvbnRTaXplOiJmb250LXNpemUiLGZvbnRTaXpl
QWRqdXN0OiJmb250LXNpemUtYWRqdXN0Iixmb250U3RyZXRjaDoiZm9udC1zdHJldGNoIixmb250
U3R5bGU6ImZvbnQtc3R5bGUiLGZvbnRWYXJpYW50OiJmb250LXZhcmlhbnQiLGZvbnRXZWlnaHQ6
ImZvbnQtd2VpZ2h0Iixmb3JtYXQ6MCxmcm9tOjAsZng6MCxmeTowLGcxOjAsZzI6MCxnbHlwaE5h
bWU6ImdseXBoLW5hbWUiLGdseXBoT3JpZW50YXRpb25Ib3Jpem9udGFsOiJnbHlwaC1vcmllbnRh
dGlvbi1ob3Jpem9udGFsIixnbHlwaE9yaWVudGF0aW9uVmVydGljYWw6ImdseXBoLW9yaWVudGF0
aW9uLXZlcnRpY2FsIixnbHlwaFJlZjoiZ2x5cGhSZWYiLGdyYWRpZW50VHJhbnNmb3JtOiJncmFk
aWVudFRyYW5zZm9ybSIsZ3JhZGllbnRVbml0czoiZ3JhZGllbnRVbml0cyIsaGFuZ2luZzowLGhv
cml6QWR2WDoiaG9yaXotYWR2LXgiLGhvcml6T3JpZ2luWDoiaG9yaXotb3JpZ2luLXgiLGlkZW9n
cmFwaGljOjAsaW1hZ2VSZW5kZXJpbmc6ImltYWdlLXJlbmRlcmluZyIsaW46MCxpbjI6MCxpbnRl
cmNlcHQ6MCxrOjAsazE6MCxrMjowLGszOjAsazQ6MCxrZXJuZWxNYXRyaXg6Imtlcm5lbE1hdHJp
eCIsa2VybmVsVW5pdExlbmd0aDoia2VybmVsVW5pdExlbmd0aCIsa2VybmluZzowLGtleVBvaW50
czoia2V5UG9pbnRzIixrZXlTcGxpbmVzOiJrZXlTcGxpbmVzIixrZXlUaW1lczoia2V5VGltZXMi
LGxlbmd0aEFkanVzdDoibGVuZ3RoQWRqdXN0IixsZXR0ZXJTcGFjaW5nOiJsZXR0ZXItc3BhY2lu
ZyIsbGlnaHRpbmdDb2xvcjoibGlnaHRpbmctY29sb3IiLGxpbWl0aW5nQ29uZUFuZ2xlOiJsaW1p
dGluZ0NvbmVBbmdsZSIsbG9jYWw6MCxtYXJrZXJFbmQ6Im1hcmtlci1lbmQiLG1hcmtlck1pZDoi
bWFya2VyLW1pZCIsbWFya2VyU3RhcnQ6Im1hcmtlci1zdGFydCIsbWFya2VySGVpZ2h0OiJtYXJr
ZXJIZWlnaHQiLG1hcmtlclVuaXRzOiJtYXJrZXJVbml0cyIsbWFya2VyV2lkdGg6Im1hcmtlcldp
ZHRoIixtYXNrOjAsbWFza0NvbnRlbnRVbml0czoibWFza0NvbnRlbnRVbml0cyIsbWFza1VuaXRz
OiJtYXNrVW5pdHMiLG1hdGhlbWF0aWNhbDowLG1vZGU6MCxudW1PY3RhdmVzOiJudW1PY3RhdmVz
IixvZmZzZXQ6MCxvcGFjaXR5OjAsb3BlcmF0b3I6MCxvcmRlcjowLG9yaWVudDowLG9yaWVudGF0
aW9uOjAsb3JpZ2luOjAsb3ZlcmZsb3c6MCxvdmVybGluZVBvc2l0aW9uOiJvdmVybGluZS1wb3Np
dGlvbiIsb3ZlcmxpbmVUaGlja25lc3M6Im92ZXJsaW5lLXRoaWNrbmVzcyIscGFpbnRPcmRlcjoi
cGFpbnQtb3JkZXIiLHBhbm9zZTE6InBhbm9zZS0xIixwYXRoTGVuZ3RoOiJwYXRoTGVuZ3RoIixw
YXR0ZXJuQ29udGVudFVuaXRzOiJwYXR0ZXJuQ29udGVudFVuaXRzIixwYXR0ZXJuVHJhbnNmb3Jt
OiJwYXR0ZXJuVHJhbnNmb3JtIixwYXR0ZXJuVW5pdHM6InBhdHRlcm5Vbml0cyIscG9pbnRlckV2
ZW50czoicG9pbnRlci1ldmVudHMiLHBvaW50czowLHBvaW50c0F0WDoicG9pbnRzQXRYIixwb2lu
dHNBdFk6InBvaW50c0F0WSIscG9pbnRzQXRaOiJwb2ludHNBdFoiLHByZXNlcnZlQWxwaGE6InBy
ZXNlcnZlQWxwaGEiLHByZXNlcnZlQXNwZWN0UmF0aW86InByZXNlcnZlQXNwZWN0UmF0aW8iLHBy
aW1pdGl2ZVVuaXRzOiJwcmltaXRpdmVVbml0cyIscjowLHJhZGl1czowLHJlZlg6InJlZlgiLHJl
Zlk6InJlZlkiLHJlbmRlcmluZ0ludGVudDoicmVuZGVyaW5nLWludGVudCIscmVwZWF0Q291bnQ6
InJlcGVhdENvdW50IixyZXBlYXREdXI6InJlcGVhdER1ciIscmVxdWlyZWRFeHRlbnNpb25zOiJy
ZXF1aXJlZEV4dGVuc2lvbnMiLHJlcXVpcmVkRmVhdHVyZXM6InJlcXVpcmVkRmVhdHVyZXMiLHJl
c3RhcnQ6MCxyZXN1bHQ6MCxyb3RhdGU6MCxyeDowLHJ5OjAsc2NhbGU6MCxzZWVkOjAsc2hhcGVS
ZW5kZXJpbmc6InNoYXBlLXJlbmRlcmluZyIsc2xvcGU6MCxzcGFjaW5nOjAsc3BlY3VsYXJDb25z
dGFudDoic3BlY3VsYXJDb25zdGFudCIsc3BlY3VsYXJFeHBvbmVudDoic3BlY3VsYXJFeHBvbmVu
dCIsc3BlZWQ6MCxzcHJlYWRNZXRob2Q6InNwcmVhZE1ldGhvZCIsc3RhcnRPZmZzZXQ6InN0YXJ0
T2Zmc2V0IixzdGREZXZpYXRpb246InN0ZERldmlhdGlvbiIsc3RlbWg6MCxzdGVtdjowLHN0aXRj
aFRpbGVzOiJzdGl0Y2hUaWxlcyIsc3RvcENvbG9yOiJzdG9wLWNvbG9yIixzdG9wT3BhY2l0eToi
c3RvcC1vcGFjaXR5IixzdHJpa2V0aHJvdWdoUG9zaXRpb246InN0cmlrZXRocm91Z2gtcG9zaXRp
b24iLHN0cmlrZXRocm91Z2hUaGlja25lc3M6InN0cmlrZXRocm91Z2gtdGhpY2tuZXNzIixzdHJp
bmc6MCxzdHJva2U6MCxzdHJva2VEYXNoYXJyYXk6InN0cm9rZS1kYXNoYXJyYXkiLHN0cm9rZURh
c2hvZmZzZXQ6InN0cm9rZS1kYXNob2Zmc2V0IixzdHJva2VMaW5lY2FwOiJzdHJva2UtbGluZWNh
cCIsc3Ryb2tlTGluZWpvaW46InN0cm9rZS1saW5lam9pbiIsc3Ryb2tlTWl0ZXJsaW1pdDoic3Ry
b2tlLW1pdGVybGltaXQiLHN0cm9rZU9wYWNpdHk6InN0cm9rZS1vcGFjaXR5IixzdHJva2VXaWR0
aDoic3Ryb2tlLXdpZHRoIixzdXJmYWNlU2NhbGU6InN1cmZhY2VTY2FsZSIsc3lzdGVtTGFuZ3Vh
Z2U6InN5c3RlbUxhbmd1YWdlIix0YWJsZVZhbHVlczoidGFibGVWYWx1ZXMiLHRhcmdldFg6InRh
cmdldFgiLHRhcmdldFk6InRhcmdldFkiLHRleHRBbmNob3I6InRleHQtYW5jaG9yIix0ZXh0RGVj
b3JhdGlvbjoidGV4dC1kZWNvcmF0aW9uIix0ZXh0UmVuZGVyaW5nOiJ0ZXh0LXJlbmRlcmluZyIs
dGV4dExlbmd0aDoidGV4dExlbmd0aCIsdG86MCx0cmFuc2Zvcm06MCx1MTowLHUyOjAsdW5kZXJs
aW5lUG9zaXRpb246InVuZGVybGluZS1wb3NpdGlvbiIsdW5kZXJsaW5lVGhpY2tuZXNzOiJ1bmRl
cmxpbmUtdGhpY2tuZXNzIix1bmljb2RlOjAsdW5pY29kZUJpZGk6InVuaWNvZGUtYmlkaSIsdW5p
Y29kZVJhbmdlOiJ1bmljb2RlLXJhbmdlIix1bml0c1BlckVtOiJ1bml0cy1wZXItZW0iLHZBbHBo
YWJldGljOiJ2LWFscGhhYmV0aWMiLHZIYW5naW5nOiJ2LWhhbmdpbmciLHZJZGVvZ3JhcGhpYzoi
di1pZGVvZ3JhcGhpYyIsdk1hdGhlbWF0aWNhbDoidi1tYXRoZW1hdGljYWwiLHZhbHVlczowLHZl
Y3RvckVmZmVjdDoidmVjdG9yLWVmZmVjdCIsdmVyc2lvbjowLHZlcnRBZHZZOiJ2ZXJ0LWFkdi15
Iix2ZXJ0T3JpZ2luWDoidmVydC1vcmlnaW4teCIsdmVydE9yaWdpblk6InZlcnQtb3JpZ2luLXki
LHZpZXdCb3g6InZpZXdCb3giLHZpZXdUYXJnZXQ6InZpZXdUYXJnZXQiLHZpc2liaWxpdHk6MCx3
aWR0aHM6MCx3b3JkU3BhY2luZzoid29yZC1zcGFjaW5nIix3cml0aW5nTW9kZToid3JpdGluZy1t
b2RlIix4OjAseEhlaWdodDoieC1oZWlnaHQiLHgxOjAseDI6MCx4Q2hhbm5lbFNlbGVjdG9yOiJ4
Q2hhbm5lbFNlbGVjdG9yIix4bGlua0FjdHVhdGU6InhsaW5rOmFjdHVhdGUiLHhsaW5rQXJjcm9s
ZToieGxpbms6YXJjcm9sZSIseGxpbmtIcmVmOiJ4bGluazpocmVmIix4bGlua1JvbGU6InhsaW5r
OnJvbGUiLHhsaW5rU2hvdzoieGxpbms6c2hvdyIseGxpbmtUaXRsZToieGxpbms6dGl0bGUiLHhs
aW5rVHlwZToieGxpbms6dHlwZSIseG1sQmFzZToieG1sOmJhc2UiLHhtbG5zOjAseG1sbnNYbGlu
azoieG1sbnM6eGxpbmsiLHhtbExhbmc6InhtbDpsYW5nIix4bWxTcGFjZToieG1sOnNwYWNlIix5
OjAseTE6MCx5MjowLHlDaGFubmVsU2VsZWN0b3I6InlDaGFubmVsU2VsZWN0b3IiLHo6MCx6b29t
QW5kUGFuOiJ6b29tQW5kUGFuIn0saT17UHJvcGVydGllczp7fSxET01BdHRyaWJ1dGVOYW1lc3Bh
Y2VzOnt4bGlua0FjdHVhdGU6ci54bGluayx4bGlua0FyY3JvbGU6ci54bGluayx4bGlua0hyZWY6
ci54bGluayx4bGlua1JvbGU6ci54bGluayx4bGlua1Nob3c6ci54bGluayx4bGlua1RpdGxlOnIu
eGxpbmsseGxpbmtUeXBlOnIueGxpbmsseG1sQmFzZTpyLnhtbCx4bWxMYW5nOnIueG1sLHhtbFNw
YWNlOnIueG1sfSxET01BdHRyaWJ1dGVOYW1lczp7fX07T2JqZWN0LmtleXMobykuZm9yRWFjaChm
dW5jdGlvbihlKXtpLlByb3BlcnRpZXNbZV09MCxvW2VdJiYoaS5ET01BdHRyaWJ1dGVOYW1lc1tl
XT1vW2VdKX0pLHQuZXhwb3J0cz1pfSx7fV0sNzQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlKXtpZigic2VsZWN0aW9uU3RhcnQiaW4gZSYmdS5oYXNTZWxlY3Rpb25D
YXBhYmlsaXRpZXMoZSkpcmV0dXJue3N0YXJ0OmUuc2VsZWN0aW9uU3RhcnQsZW5kOmUuc2VsZWN0
aW9uRW5kfTtpZih3aW5kb3cuZ2V0U2VsZWN0aW9uKXt2YXIgdD13aW5kb3cuZ2V0U2VsZWN0aW9u
KCk7cmV0dXJue2FuY2hvck5vZGU6dC5hbmNob3JOb2RlLGFuY2hvck9mZnNldDp0LmFuY2hvck9m
ZnNldCxmb2N1c05vZGU6dC5mb2N1c05vZGUsZm9jdXNPZmZzZXQ6dC5mb2N1c09mZnNldH19aWYo
ZG9jdW1lbnQuc2VsZWN0aW9uKXt2YXIgbj1kb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2Uo
KTtyZXR1cm57cGFyZW50RWxlbWVudDpuLnBhcmVudEVsZW1lbnQoKSx0ZXh0Om4udGV4dCx0b3A6
bi5ib3VuZGluZ1RvcCxsZWZ0Om4uYm91bmRpbmdMZWZ0fX19ZnVuY3Rpb24gbyhlLHQpe2lmKHl8
fG51bGw9PW18fG0hPT1jKCkpcmV0dXJuIG51bGw7dmFyIG49cihtKTtpZighZ3x8IWQoZyxuKSl7
Zz1uO3ZhciBvPWwuZ2V0UG9vbGVkKGguc2VsZWN0LHYsZSx0KTtyZXR1cm4gby50eXBlPSJzZWxl
Y3QiLG8udGFyZ2V0PW0saS5hY2N1bXVsYXRlVHdvUGhhc2VEaXNwYXRjaGVzKG8pLG99cmV0dXJu
IG51bGx9dmFyIGk9ZSgxOSksYT1lKDEyMCkscz1lKDMyKSx1PWUoNTUpLGw9ZSg4MCksYz1lKDEy
OSkscD1lKDEwOCksZD1lKDEzOCksZj1hLmNhblVzZURPTSYmImRvY3VtZW50TW9kZSJpbiBkb2N1
bWVudCYmZG9jdW1lbnQuZG9jdW1lbnRNb2RlPD0xMSxoPXtzZWxlY3Q6e3BoYXNlZFJlZ2lzdHJh
dGlvbk5hbWVzOntidWJibGVkOiJvblNlbGVjdCIsY2FwdHVyZWQ6Im9uU2VsZWN0Q2FwdHVyZSJ9
LGRlcGVuZGVuY2llczpbInRvcEJsdXIiLCJ0b3BDb250ZXh0TWVudSIsInRvcEZvY3VzIiwidG9w
S2V5RG93biIsInRvcEtleVVwIiwidG9wTW91c2VEb3duIiwidG9wTW91c2VVcCIsInRvcFNlbGVj
dGlvbkNoYW5nZSJdfX0sbT1udWxsLHY9bnVsbCxnPW51bGwseT0hMSxfPSExLEM9e2V2ZW50VHlw
ZXM6aCxleHRyYWN0RXZlbnRzOmZ1bmN0aW9uKGUsdCxuLHIpe2lmKCFfKXJldHVybiBudWxsO3Zh
ciBpPXQ/cy5nZXROb2RlRnJvbUluc3RhbmNlKHQpOndpbmRvdztzd2l0Y2goZSl7Y2FzZSJ0b3BG
b2N1cyI6KHAoaSl8fCJ0cnVlIj09PWkuY29udGVudEVkaXRhYmxlKSYmKG09aSx2PXQsZz1udWxs
KTticmVhaztjYXNlInRvcEJsdXIiOm09bnVsbCx2PW51bGwsZz1udWxsO2JyZWFrO2Nhc2UidG9w
TW91c2VEb3duIjp5PSEwO2JyZWFrO2Nhc2UidG9wQ29udGV4dE1lbnUiOmNhc2UidG9wTW91c2VV
cCI6cmV0dXJuIHk9ITEsbyhuLHIpO2Nhc2UidG9wU2VsZWN0aW9uQ2hhbmdlIjppZihmKWJyZWFr
O2Nhc2UidG9wS2V5RG93biI6Y2FzZSJ0b3BLZXlVcCI6cmV0dXJuIG8obixyKX1yZXR1cm4gbnVs
bH0sZGlkUHV0TGlzdGVuZXI6ZnVuY3Rpb24oZSx0LG4peyJvblNlbGVjdCI9PT10JiYoXz0hMCl9
fTt0LmV4cG9ydHM9Q30sezEwODoxMDgsMTIwOjEyMCwxMjk6MTI5LDEzODoxMzgsMTk6MTksMzI6
MzIsNTU6NTUsODA6ODB9XSw3NTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlv
biByKGUpe3JldHVybiIuIitlLl9yb290Tm9kZUlEfWZ1bmN0aW9uIG8oZSl7cmV0dXJuImJ1dHRv
biI9PT1lfHwiaW5wdXQiPT09ZXx8InNlbGVjdCI9PT1lfHwidGV4dGFyZWEiPT09ZX12YXIgaT1l
KDExMCksYT1lKDExOSkscz1lKDE5KSx1PWUoMzIpLGw9ZSg3NiksYz1lKDc3KSxwPWUoODApLGQ9
ZSg4MSksZj1lKDgzKSxoPWUoODQpLG09ZSg3OSksdj1lKDg1KSxnPWUoODYpLHk9ZSg4NyksXz1l
KDg4KSxDPWUoMTI2KSxiPWUoOTgpLEU9KGUoMTM0KSx7fSkseD17fTtbImFib3J0IiwiYW5pbWF0
aW9uRW5kIiwiYW5pbWF0aW9uSXRlcmF0aW9uIiwiYW5pbWF0aW9uU3RhcnQiLCJibHVyIiwiY2Fu
UGxheSIsImNhblBsYXlUaHJvdWdoIiwiY2xpY2siLCJjb250ZXh0TWVudSIsImNvcHkiLCJjdXQi
LCJkb3VibGVDbGljayIsImRyYWciLCJkcmFnRW5kIiwiZHJhZ0VudGVyIiwiZHJhZ0V4aXQiLCJk
cmFnTGVhdmUiLCJkcmFnT3ZlciIsImRyYWdTdGFydCIsImRyb3AiLCJkdXJhdGlvbkNoYW5nZSIs
ImVtcHRpZWQiLCJlbmNyeXB0ZWQiLCJlbmRlZCIsImVycm9yIiwiZm9jdXMiLCJpbnB1dCIsImlu
dmFsaWQiLCJrZXlEb3duIiwia2V5UHJlc3MiLCJrZXlVcCIsImxvYWQiLCJsb2FkZWREYXRhIiwi
bG9hZGVkTWV0YWRhdGEiLCJsb2FkU3RhcnQiLCJtb3VzZURvd24iLCJtb3VzZU1vdmUiLCJtb3Vz
ZU91dCIsIm1vdXNlT3ZlciIsIm1vdXNlVXAiLCJwYXN0ZSIsInBhdXNlIiwicGxheSIsInBsYXlp
bmciLCJwcm9ncmVzcyIsInJhdGVDaGFuZ2UiLCJyZXNldCIsInNjcm9sbCIsInNlZWtlZCIsInNl
ZWtpbmciLCJzdGFsbGVkIiwic3VibWl0Iiwic3VzcGVuZCIsInRpbWVVcGRhdGUiLCJ0b3VjaENh
bmNlbCIsInRvdWNoRW5kIiwidG91Y2hNb3ZlIiwidG91Y2hTdGFydCIsInRyYW5zaXRpb25FbmQi
LCJ2b2x1bWVDaGFuZ2UiLCJ3YWl0aW5nIiwid2hlZWwiXS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3Zh
ciB0PWVbMF0udG9VcHBlckNhc2UoKStlLnNsaWNlKDEpLG49Im9uIit0LHI9InRvcCIrdCxvPXtw
aGFzZWRSZWdpc3RyYXRpb25OYW1lczp7YnViYmxlZDpuLGNhcHR1cmVkOm4rIkNhcHR1cmUifSxk
ZXBlbmRlbmNpZXM6W3JdfTtFW2VdPW8seFtyXT1vfSk7dmFyIHc9e30saz17ZXZlbnRUeXBlczpF
LGV4dHJhY3RFdmVudHM6ZnVuY3Rpb24oZSx0LG4scil7dmFyIG89eFtlXTtpZighbylyZXR1cm4g
bnVsbDt2YXIgYTtzd2l0Y2goZSl7Y2FzZSJ0b3BBYm9ydCI6Y2FzZSJ0b3BDYW5QbGF5IjpjYXNl
InRvcENhblBsYXlUaHJvdWdoIjpjYXNlInRvcER1cmF0aW9uQ2hhbmdlIjpjYXNlInRvcEVtcHRp
ZWQiOmNhc2UidG9wRW5jcnlwdGVkIjpjYXNlInRvcEVuZGVkIjpjYXNlInRvcEVycm9yIjpjYXNl
InRvcElucHV0IjpjYXNlInRvcEludmFsaWQiOmNhc2UidG9wTG9hZCI6Y2FzZSJ0b3BMb2FkZWRE
YXRhIjpjYXNlInRvcExvYWRlZE1ldGFkYXRhIjpjYXNlInRvcExvYWRTdGFydCI6Y2FzZSJ0b3BQ
YXVzZSI6Y2FzZSJ0b3BQbGF5IjpjYXNlInRvcFBsYXlpbmciOmNhc2UidG9wUHJvZ3Jlc3MiOmNh
c2UidG9wUmF0ZUNoYW5nZSI6Y2FzZSJ0b3BSZXNldCI6Y2FzZSJ0b3BTZWVrZWQiOmNhc2UidG9w
U2Vla2luZyI6Y2FzZSJ0b3BTdGFsbGVkIjpjYXNlInRvcFN1Ym1pdCI6Y2FzZSJ0b3BTdXNwZW5k
IjpjYXNlInRvcFRpbWVVcGRhdGUiOmNhc2UidG9wVm9sdW1lQ2hhbmdlIjpjYXNlInRvcFdhaXRp
bmciOmE9cDticmVhaztjYXNlInRvcEtleVByZXNzIjppZigwPT09YihuKSlyZXR1cm4gbnVsbDtj
YXNlInRvcEtleURvd24iOmNhc2UidG9wS2V5VXAiOmE9ZjticmVhaztjYXNlInRvcEJsdXIiOmNh
c2UidG9wRm9jdXMiOmE9ZDticmVhaztjYXNlInRvcENsaWNrIjppZigyPT09bi5idXR0b24pcmV0
dXJuIG51bGw7Y2FzZSJ0b3BEb3VibGVDbGljayI6Y2FzZSJ0b3BNb3VzZURvd24iOmNhc2UidG9w
TW91c2VNb3ZlIjpjYXNlInRvcE1vdXNlVXAiOmNhc2UidG9wTW91c2VPdXQiOmNhc2UidG9wTW91
c2VPdmVyIjpjYXNlInRvcENvbnRleHRNZW51IjphPWg7YnJlYWs7Y2FzZSJ0b3BEcmFnIjpjYXNl
InRvcERyYWdFbmQiOmNhc2UidG9wRHJhZ0VudGVyIjpjYXNlInRvcERyYWdFeGl0IjpjYXNlInRv
cERyYWdMZWF2ZSI6Y2FzZSJ0b3BEcmFnT3ZlciI6Y2FzZSJ0b3BEcmFnU3RhcnQiOmNhc2UidG9w
RHJvcCI6YT1tO2JyZWFrO2Nhc2UidG9wVG91Y2hDYW5jZWwiOmNhc2UidG9wVG91Y2hFbmQiOmNh
c2UidG9wVG91Y2hNb3ZlIjpjYXNlInRvcFRvdWNoU3RhcnQiOmE9djticmVhaztjYXNlInRvcEFu
aW1hdGlvbkVuZCI6Y2FzZSJ0b3BBbmltYXRpb25JdGVyYXRpb24iOmNhc2UidG9wQW5pbWF0aW9u
U3RhcnQiOmE9bDticmVhaztjYXNlInRvcFRyYW5zaXRpb25FbmQiOmE9ZzticmVhaztjYXNlInRv
cFNjcm9sbCI6YT15O2JyZWFrO2Nhc2UidG9wV2hlZWwiOmE9XzticmVhaztjYXNlInRvcENvcHki
OmNhc2UidG9wQ3V0IjpjYXNlInRvcFBhc3RlIjphPWN9YXx8aSgiODYiLGUpO3ZhciB1PWEuZ2V0
UG9vbGVkKG8sdCxuLHIpO3JldHVybiBzLmFjY3VtdWxhdGVUd29QaGFzZURpc3BhdGNoZXModSks
dX0sZGlkUHV0TGlzdGVuZXI6ZnVuY3Rpb24oZSx0LG4pe2lmKCJvbkNsaWNrIj09PXQmJiFvKGUu
X3RhZykpe3ZhciBpPXIoZSkscz11LmdldE5vZGVGcm9tSW5zdGFuY2UoZSk7d1tpXXx8KHdbaV09
YS5saXN0ZW4ocywiY2xpY2siLEMpKX19LHdpbGxEZWxldGVMaXN0ZW5lcjpmdW5jdGlvbihlLHQp
e2lmKCJvbkNsaWNrIj09PXQmJiFvKGUuX3RhZykpe3ZhciBuPXIoZSk7d1tuXS5yZW1vdmUoKSxk
ZWxldGUgd1tuXX19fTt0LmV4cG9ydHM9a30sezExMDoxMTAsMTE5OjExOSwxMjY6MTI2LDEzNDox
MzQsMTk6MTksMzI6MzIsNzY6NzYsNzc6NzcsNzk6NzksODA6ODAsODE6ODEsODM6ODMsODQ6ODQs
ODU6ODUsODY6ODYsODc6ODcsODg6ODgsOTg6OTh9XSw3NjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12
YXIgbz1lKDgwKSxpPXthbmltYXRpb25OYW1lOm51bGwsZWxhcHNlZFRpbWU6bnVsbCxwc2V1ZG9F
bGVtZW50Om51bGx9O28uYXVnbWVudENsYXNzKHIsaSksdC5leHBvcnRzPXJ9LHs4MDo4MH1dLDc3
OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJu
IG8uY2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODApLGk9e2NsaXBib2FyZERhdGE6ZnVuY3Rp
b24oZSl7cmV0dXJuImNsaXBib2FyZERhdGEiaW4gZT9lLmNsaXBib2FyZERhdGE6d2luZG93LmNs
aXBib2FyZERhdGF9fTtvLmF1Z21lbnRDbGFzcyhyLGkpLHQuZXhwb3J0cz1yfSx7ODA6ODB9XSw3
ODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUsdCxuLHIpe3JldHVy
biBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1lKDgwKSxpPXtkYXRhOm51bGx9O28uYXVnbWVu
dENsYXNzKHIsaSksdC5leHBvcnRzPXJ9LHs4MDo4MH1dLDc5OltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiCi07ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4s
cil9dmFyIG89ZSg4NCksaT17ZGF0YVRyYW5zZmVyOm51bGx9O28uYXVnbWVudENsYXNzKHIsaSks
dC5leHBvcnRzPXJ9LHs4NDo4NH1dLDgwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSx0LG4scil7dGhpcy5kaXNwYXRjaENvbmZpZz1lLHRoaXMuX3RhcmdldEluc3Q9
dCx0aGlzLm5hdGl2ZUV2ZW50PW47dmFyIG89dGhpcy5jb25zdHJ1Y3Rvci5JbnRlcmZhY2U7Zm9y
KHZhciBpIGluIG8paWYoby5oYXNPd25Qcm9wZXJ0eShpKSl7dmFyIHM9b1tpXTtzP3RoaXNbaV09
cyhuKToidGFyZ2V0Ij09PWk/dGhpcy50YXJnZXQ9cjp0aGlzW2ldPW5baV19dmFyIHU9bnVsbCE9
bi5kZWZhdWx0UHJldmVudGVkP24uZGVmYXVsdFByZXZlbnRlZDohMT09PW4ucmV0dXJuVmFsdWU7
cmV0dXJuIHRoaXMuaXNEZWZhdWx0UHJldmVudGVkPXU/YS50aGF0UmV0dXJuc1RydWU6YS50aGF0
UmV0dXJuc0ZhbHNlLHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9YS50aGF0UmV0dXJuc0ZhbHNl
LHRoaXN9dmFyIG89ZSgxNDApLGk9ZSgyNCksYT1lKDEyNikscz0oZSgxMzkpLFsiZGlzcGF0Y2hD
b25maWciLCJfdGFyZ2V0SW5zdCIsIm5hdGl2ZUV2ZW50IiwiaXNEZWZhdWx0UHJldmVudGVkIiwi
aXNQcm9wYWdhdGlvblN0b3BwZWQiLCJfZGlzcGF0Y2hMaXN0ZW5lcnMiLCJfZGlzcGF0Y2hJbnN0
YW5jZXMiXSksdT17dHlwZTpudWxsLHRhcmdldDpudWxsLGN1cnJlbnRUYXJnZXQ6YS50aGF0UmV0
dXJuc051bGwsZXZlbnRQaGFzZTpudWxsLGJ1YmJsZXM6bnVsbCxjYW5jZWxhYmxlOm51bGwsdGlt
ZVN0YW1wOmZ1bmN0aW9uKGUpe3JldHVybiBlLnRpbWVTdGFtcHx8RGF0ZS5ub3coKX0sZGVmYXVs
dFByZXZlbnRlZDpudWxsLGlzVHJ1c3RlZDpudWxsfTtvKHIucHJvdG90eXBlLHtwcmV2ZW50RGVm
YXVsdDpmdW5jdGlvbigpe3RoaXMuZGVmYXVsdFByZXZlbnRlZD0hMDt2YXIgZT10aGlzLm5hdGl2
ZUV2ZW50O2UmJihlLnByZXZlbnREZWZhdWx0P2UucHJldmVudERlZmF1bHQoKToidW5rbm93biIh
PXR5cGVvZiBlLnJldHVyblZhbHVlJiYoZS5yZXR1cm5WYWx1ZT0hMSksdGhpcy5pc0RlZmF1bHRQ
cmV2ZW50ZWQ9YS50aGF0UmV0dXJuc1RydWUpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2
YXIgZT10aGlzLm5hdGl2ZUV2ZW50O2UmJihlLnN0b3BQcm9wYWdhdGlvbj9lLnN0b3BQcm9wYWdh
dGlvbigpOiJ1bmtub3duIiE9dHlwZW9mIGUuY2FuY2VsQnViYmxlJiYoZS5jYW5jZWxCdWJibGU9
ITApLHRoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9YS50aGF0UmV0dXJuc1RydWUpfSxwZXJzaXN0
OmZ1bmN0aW9uKCl7dGhpcy5pc1BlcnNpc3RlbnQ9YS50aGF0UmV0dXJuc1RydWV9LGlzUGVyc2lz
dGVudDphLnRoYXRSZXR1cm5zRmFsc2UsZGVzdHJ1Y3RvcjpmdW5jdGlvbigpe3ZhciBlPXRoaXMu
Y29uc3RydWN0b3IuSW50ZXJmYWNlO2Zvcih2YXIgdCBpbiBlKXRoaXNbdF09bnVsbDtmb3IodmFy
IG49MDtuPHMubGVuZ3RoO24rKyl0aGlzW3Nbbl1dPW51bGx9fSksci5JbnRlcmZhY2U9dSxyLmF1
Z21lbnRDbGFzcz1mdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMscj1mdW5jdGlvbigpe307ci5wcm90
b3R5cGU9bi5wcm90b3R5cGU7dmFyIGE9bmV3IHI7byhhLGUucHJvdG90eXBlKSxlLnByb3RvdHlw
ZT1hLGUucHJvdG90eXBlLmNvbnN0cnVjdG9yPWUsZS5JbnRlcmZhY2U9byh7fSxuLkludGVyZmFj
ZSx0KSxlLmF1Z21lbnRDbGFzcz1uLmF1Z21lbnRDbGFzcyxpLmFkZFBvb2xpbmdUbyhlLGkuZm91
ckFyZ3VtZW50UG9vbGVyKX0saS5hZGRQb29saW5nVG8ocixpLmZvdXJBcmd1bWVudFBvb2xlciks
dC5leHBvcnRzPXJ9LHsxMjY6MTI2LDEzOToxMzksMTQwOjE0MCwyNDoyNH1dLDgxOltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8uY2FsbCh0
aGlzLGUsdCxuLHIpfXZhciBvPWUoODcpLGk9e3JlbGF0ZWRUYXJnZXQ6bnVsbH07by5hdWdtZW50
Q2xhc3MocixpKSx0LmV4cG9ydHM9cn0sezg3Ojg3fV0sODI6W2Z1bmN0aW9uKGUsdCxuKXsidXNl
IHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9
dmFyIG89ZSg4MCksaT17ZGF0YTpudWxsfTtvLmF1Z21lbnRDbGFzcyhyLGkpLHQuZXhwb3J0cz1y
fSx7ODA6ODB9XSw4MzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUs
dCxuLHIpe3JldHVybiBvLmNhbGwodGhpcyxlLHQsbixyKX12YXIgbz1lKDg3KSxpPWUoOTgpLGE9
ZSg5OSkscz1lKDEwMCksdT17a2V5OmEsbG9jYXRpb246bnVsbCxjdHJsS2V5Om51bGwsc2hpZnRL
ZXk6bnVsbCxhbHRLZXk6bnVsbCxtZXRhS2V5Om51bGwscmVwZWF0Om51bGwsbG9jYWxlOm51bGws
Z2V0TW9kaWZpZXJTdGF0ZTpzLGNoYXJDb2RlOmZ1bmN0aW9uKGUpe3JldHVybiJrZXlwcmVzcyI9
PT1lLnR5cGU/aShlKTowfSxrZXlDb2RlOmZ1bmN0aW9uKGUpe3JldHVybiJrZXlkb3duIj09PWUu
dHlwZXx8ImtleXVwIj09PWUudHlwZT9lLmtleUNvZGU6MH0sd2hpY2g6ZnVuY3Rpb24oZSl7cmV0
dXJuImtleXByZXNzIj09PWUudHlwZT9pKGUpOiJrZXlkb3duIj09PWUudHlwZXx8ImtleXVwIj09
PWUudHlwZT9lLmtleUNvZGU6MH19O28uYXVnbWVudENsYXNzKHIsdSksdC5leHBvcnRzPXJ9LHsx
MDA6MTAwLDg3Ojg3LDk4Ojk4LDk5Ojk5fV0sODQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFyIG89
ZSg4NyksaT1lKDkwKSxhPWUoMTAwKSxzPXtzY3JlZW5YOm51bGwsc2NyZWVuWTpudWxsLGNsaWVu
dFg6bnVsbCxjbGllbnRZOm51bGwsY3RybEtleTpudWxsLHNoaWZ0S2V5Om51bGwsYWx0S2V5Om51
bGwsbWV0YUtleTpudWxsLGdldE1vZGlmaWVyU3RhdGU6YSxidXR0b246ZnVuY3Rpb24oZSl7dmFy
IHQ9ZS5idXR0b247cmV0dXJuIndoaWNoImluIGU/dDoyPT09dD8yOjQ9PT10PzE6MH0sYnV0dG9u
czpudWxsLHJlbGF0ZWRUYXJnZXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVsYXRlZFRhcmdldHx8
KGUuZnJvbUVsZW1lbnQ9PT1lLnNyY0VsZW1lbnQ/ZS50b0VsZW1lbnQ6ZS5mcm9tRWxlbWVudCl9
LHBhZ2VYOmZ1bmN0aW9uKGUpe3JldHVybiJwYWdlWCJpbiBlP2UucGFnZVg6ZS5jbGllbnRYK2ku
Y3VycmVudFNjcm9sbExlZnR9LHBhZ2VZOmZ1bmN0aW9uKGUpe3JldHVybiJwYWdlWSJpbiBlP2Uu
cGFnZVk6ZS5jbGllbnRZK2kuY3VycmVudFNjcm9sbFRvcH19O28uYXVnbWVudENsYXNzKHIscyks
dC5leHBvcnRzPXJ9LHsxMDA6MTAwLDg3Ojg3LDkwOjkwfV0sODU6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4s
cil9dmFyIG89ZSg4NyksaT1lKDEwMCksYT17dG91Y2hlczpudWxsLHRhcmdldFRvdWNoZXM6bnVs
bCxjaGFuZ2VkVG91Y2hlczpudWxsLGFsdEtleTpudWxsLG1ldGFLZXk6bnVsbCxjdHJsS2V5Om51
bGwsc2hpZnRLZXk6bnVsbCxnZXRNb2RpZmllclN0YXRlOml9O28uYXVnbWVudENsYXNzKHIsYSks
dC5leHBvcnRzPXJ9LHsxMDA6MTAwLDg3Ojg3fV0sODY6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5jYWxsKHRoaXMsZSx0LG4scil9dmFy
IG89ZSg4MCksaT17cHJvcGVydHlOYW1lOm51bGwsZWxhcHNlZFRpbWU6bnVsbCxwc2V1ZG9FbGVt
ZW50Om51bGx9O28uYXVnbWVudENsYXNzKHIsaSksdC5leHBvcnRzPXJ9LHs4MDo4MH1dLDg3Oltm
dW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scil7cmV0dXJuIG8u
Y2FsbCh0aGlzLGUsdCxuLHIpfXZhciBvPWUoODApLGk9ZSgxMDEpLGE9e3ZpZXc6ZnVuY3Rpb24o
ZSl7aWYoZS52aWV3KXJldHVybiBlLnZpZXc7dmFyIHQ9aShlKTtpZih0LndpbmRvdz09PXQpcmV0
dXJuIHQ7dmFyIG49dC5vd25lckRvY3VtZW50O3JldHVybiBuP24uZGVmYXVsdFZpZXd8fG4ucGFy
ZW50V2luZG93OndpbmRvd30sZGV0YWlsOmZ1bmN0aW9uKGUpe3JldHVybiBlLmRldGFpbHx8MH19
O28uYXVnbWVudENsYXNzKHIsYSksdC5leHBvcnRzPXJ9LHsxMDE6MTAxLDgwOjgwfV0sODg6W2Z1
bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyKXtyZXR1cm4gby5j
YWxsKHRoaXMsZSx0LG4scil9dmFyIG89ZSg4NCksaT17ZGVsdGFYOmZ1bmN0aW9uKGUpe3JldHVy
biJkZWx0YVgiaW4gZT9lLmRlbHRhWDoid2hlZWxEZWx0YVgiaW4gZT8tZS53aGVlbERlbHRhWDow
fSxkZWx0YVk6ZnVuY3Rpb24oZSl7cmV0dXJuImRlbHRhWSJpbiBlP2UuZGVsdGFZOiJ3aGVlbERl
bHRhWSJpbiBlPy1lLndoZWVsRGVsdGFZOiJ3aGVlbERlbHRhImluIGU/LWUud2hlZWxEZWx0YTow
fSxkZWx0YVo6bnVsbCxkZWx0YU1vZGU6bnVsbH07by5hdWdtZW50Q2xhc3MocixpKSx0LmV4cG9y
dHM9cn0sezg0Ojg0fV0sODk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgx
MTApLG89KGUoMTM0KSx7fSksaT17cmVpbml0aWFsaXplVHJhbnNhY3Rpb246ZnVuY3Rpb24oKXt0
aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnM9dGhpcy5nZXRUcmFuc2FjdGlvbldyYXBwZXJzKCksdGhp
cy53cmFwcGVySW5pdERhdGE/dGhpcy53cmFwcGVySW5pdERhdGEubGVuZ3RoPTA6dGhpcy53cmFw
cGVySW5pdERhdGE9W10sdGhpcy5faXNJblRyYW5zYWN0aW9uPSExfSxfaXNJblRyYW5zYWN0aW9u
OiExLGdldFRyYW5zYWN0aW9uV3JhcHBlcnM6bnVsbCxpc0luVHJhbnNhY3Rpb246ZnVuY3Rpb24o
KXtyZXR1cm4hIXRoaXMuX2lzSW5UcmFuc2FjdGlvbn0scGVyZm9ybTpmdW5jdGlvbihlLHQsbixv
LGksYSxzLHUpe3RoaXMuaXNJblRyYW5zYWN0aW9uKCkmJnIoIjI3Iik7dmFyIGwsYzt0cnl7dGhp
cy5faXNJblRyYW5zYWN0aW9uPSEwLGw9ITAsdGhpcy5pbml0aWFsaXplQWxsKDApLGM9ZS5jYWxs
KHQsbixvLGksYSxzLHUpLGw9ITF9ZmluYWxseXt0cnl7aWYobCl0cnl7dGhpcy5jbG9zZUFsbCgw
KX1jYXRjaChlKXt9ZWxzZSB0aGlzLmNsb3NlQWxsKDApfWZpbmFsbHl7dGhpcy5faXNJblRyYW5z
YWN0aW9uPSExfX1yZXR1cm4gY30saW5pdGlhbGl6ZUFsbDpmdW5jdGlvbihlKXtmb3IodmFyIHQ9
dGhpcy50cmFuc2FjdGlvbldyYXBwZXJzLG49ZTtuPHQubGVuZ3RoO24rKyl7dmFyIHI9dFtuXTt0
cnl7dGhpcy53cmFwcGVySW5pdERhdGFbbl09byx0aGlzLndyYXBwZXJJbml0RGF0YVtuXT1yLmlu
aXRpYWxpemU/ci5pbml0aWFsaXplLmNhbGwodGhpcyk6bnVsbH1maW5hbGx5e2lmKHRoaXMud3Jh
cHBlckluaXREYXRhW25dPT09byl0cnl7dGhpcy5pbml0aWFsaXplQWxsKG4rMSl9Y2F0Y2goZSl7
fX19fSxjbG9zZUFsbDpmdW5jdGlvbihlKXt0aGlzLmlzSW5UcmFuc2FjdGlvbigpfHxyKCIyOCIp
O2Zvcih2YXIgdD10aGlzLnRyYW5zYWN0aW9uV3JhcHBlcnMsbj1lO248dC5sZW5ndGg7bisrKXt2
YXIgaSxhPXRbbl0scz10aGlzLndyYXBwZXJJbml0RGF0YVtuXTt0cnl7aT0hMCxzIT09byYmYS5j
bG9zZSYmYS5jbG9zZS5jYWxsKHRoaXMscyksaT0hMX1maW5hbGx5e2lmKGkpdHJ5e3RoaXMuY2xv
c2VBbGwobisxKX1jYXRjaChlKXt9fX10aGlzLndyYXBwZXJJbml0RGF0YS5sZW5ndGg9MH19O3Qu
ZXhwb3J0cz1pfSx7MTEwOjExMCwxMzQ6MTM0fV0sOTA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0
cmljdCI7dmFyIHI9e2N1cnJlbnRTY3JvbGxMZWZ0OjAsY3VycmVudFNjcm9sbFRvcDowLHJlZnJl
c2hTY3JvbGxWYWx1ZXM6ZnVuY3Rpb24oZSl7ci5jdXJyZW50U2Nyb2xsTGVmdD1lLngsci5jdXJy
ZW50U2Nyb2xsVG9wPWUueX19O3QuZXhwb3J0cz1yfSx7fV0sOTE6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3JldHVybiBudWxsPT10JiZvKCIzMCIpLG51bGw9
PWU/dDpBcnJheS5pc0FycmF5KGUpP0FycmF5LmlzQXJyYXkodCk/KGUucHVzaC5hcHBseShlLHQp
LGUpOihlLnB1c2godCksZSk6QXJyYXkuaXNBcnJheSh0KT9bZV0uY29uY2F0KHQpOltlLHRdfXZh
ciBvPWUoMTEwKTtlKDEzNCk7dC5leHBvcnRzPXJ9LHsxMTA6MTEwLDEzNDoxMzR9XSw5MjpbZnVu
Y3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2Zvcih2YXIgdD0xLG49MCxy
PTAsaT1lLmxlbmd0aCxhPS00Jmk7cjxhOyl7Zm9yKHZhciBzPU1hdGgubWluKHIrNDA5NixhKTty
PHM7cis9NCluKz0odCs9ZS5jaGFyQ29kZUF0KHIpKSsodCs9ZS5jaGFyQ29kZUF0KHIrMSkpKyh0
Kz1lLmNoYXJDb2RlQXQocisyKSkrKHQrPWUuY2hhckNvZGVBdChyKzMpKTt0JT1vLG4lPW99Zm9y
KDtyPGk7cisrKW4rPXQrPWUuY2hhckNvZGVBdChyKTtyZXR1cm4gdCU9byxuJT1vLHR8bjw8MTZ9
dmFyIG89NjU1MjE7dC5leHBvcnRzPXJ9LHt9XSw5MzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3Ry
aWN0Ijt2YXIgcj1mdW5jdGlvbihlKXtyZXR1cm4idW5kZWZpbmVkIiE9dHlwZW9mIE1TQXBwJiZN
U0FwcC5leGVjVW5zYWZlTG9jYWxGdW5jdGlvbj9mdW5jdGlvbih0LG4scixvKXtNU0FwcC5leGVj
VW5zYWZlTG9jYWxGdW5jdGlvbihmdW5jdGlvbigpe3JldHVybiBlKHQsbixyLG8pfSl9OmV9O3Qu
ZXhwb3J0cz1yfSx7fV0sOTQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24g
cihlLHQsbil7cmV0dXJuIG51bGw9PXR8fCJib29sZWFuIj09dHlwZW9mIHR8fCIiPT09dD8iIjpp
c05hTih0KXx8MD09PXR8fGkuaGFzT3duUHJvcGVydHkoZSkmJmlbZV0/IiIrdDooInN0cmluZyI9
PXR5cGVvZiB0JiYodD10LnRyaW0oKSksdCsicHgiKX12YXIgbz1lKDQpLGk9KGUoMTM5KSxvLmlz
VW5pdGxlc3NOdW1iZXIpO3QuZXhwb3J0cz1yfSx7MTM5OjEzOSw0OjR9XSw5NTpbZnVuY3Rpb24o
ZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PSIiK2Usbj1pLmV4ZWModCk7
aWYoIW4pcmV0dXJuIHQ7dmFyIHIsbz0iIixhPTAscz0wO2ZvcihhPW4uaW5kZXg7YTx0Lmxlbmd0
aDthKyspe3N3aXRjaCh0LmNoYXJDb2RlQXQoYSkpe2Nhc2UgMzQ6cj0iJnF1b3Q7IjticmVhaztj
YXNlIDM4OnI9IiZhbXA7IjticmVhaztjYXNlIDM5OnI9IiYjeDI3OyI7YnJlYWs7Y2FzZSA2MDpy
PSImbHQ7IjticmVhaztjYXNlIDYyOnI9IiZndDsiO2JyZWFrO2RlZmF1bHQ6Y29udGludWV9cyE9
PWEmJihvKz10LnN1YnN0cmluZyhzLGEpKSxzPWErMSxvKz1yfXJldHVybiBzIT09YT9vK3Quc3Vi
c3RyaW5nKHMsYSk6b31mdW5jdGlvbiBvKGUpe3JldHVybiJib29sZWFuIj09dHlwZW9mIGV8fCJu
dW1iZXIiPT10eXBlb2YgZT8iIitlOnIoZSl9dmFyIGk9L1siJyY8Pl0vO3QuZXhwb3J0cz1vfSx7
fV0sOTY6W2Z1bmN0aW9uKGUsdCxuKXsoZnVuY3Rpb24obil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSx0LG4scil7aWYoZSYmIm9iamVjdCI9PXR5cGVvZiBlKXt2YXIgbz1lO3ZvaWQgMD09PW9b
bl0mJm51bGwhPXQmJihvW25dPXQpfX1mdW5jdGlvbiBvKGUsdCl7aWYobnVsbD09ZSlyZXR1cm4g
ZTt2YXIgbj17fTtyZXR1cm4gaShlLHIsbiksbn12YXIgaT0oZSgyMiksZSgxMTQpKTtlKDEzOSk7
dm9pZCAwIT09biYmbi5lbnYsdC5leHBvcnRzPW99KS5jYWxsKHRoaXMsdm9pZCAwKX0sezExNDox
MTQsMTM5OjEzOSwyMjoyMn1dLDk3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSx0LG4pe0FycmF5LmlzQXJyYXkoZSk/ZS5mb3JFYWNoKHQsbik6ZSYmdC5jYWxsKG4s
ZSl9dC5leHBvcnRzPXJ9LHt9XSw5ODpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUpe3ZhciB0LG49ZS5rZXlDb2RlO3JldHVybiJjaGFyQ29kZSJpbiBlPzA9PT0odD1l
LmNoYXJDb2RlKSYmMTM9PT1uJiYodD0xMyk6dD1uLHQ+PTMyfHwxMz09PXQ/dDowfXQuZXhwb3J0
cz1yfSx7fV0sOTk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtp
ZihlLmtleSl7dmFyIHQ9aVtlLmtleV18fGUua2V5O2lmKCJVbmlkZW50aWZpZWQiIT09dClyZXR1
cm4gdH1pZigia2V5cHJlc3MiPT09ZS50eXBlKXt2YXIgbj1vKGUpO3JldHVybiAxMz09PW4/IkVu
dGVyIjpTdHJpbmcuZnJvbUNoYXJDb2RlKG4pfXJldHVybiJrZXlkb3duIj09PWUudHlwZXx8Imtl
eXVwIj09PWUudHlwZT9hW2Uua2V5Q29kZV18fCJVbmlkZW50aWZpZWQiOiIifXZhciBvPWUoOTgp
LGk9e0VzYzoiRXNjYXBlIixTcGFjZWJhcjoiICIsTGVmdDoiQXJyb3dMZWZ0IixVcDoiQXJyb3dV
cCIsUmlnaHQ6IkFycm93UmlnaHQiLERvd246IkFycm93RG93biIsRGVsOiJEZWxldGUiLFdpbjoi
T1MiLE1lbnU6IkNvbnRleHRNZW51IixBcHBzOiJDb250ZXh0TWVudSIsU2Nyb2xsOiJTY3JvbGxM
b2NrIixNb3pQcmludGFibGVLZXk6IlVuaWRlbnRpZmllZCJ9LGE9ezg6IkJhY2tzcGFjZSIsOToi
VGFiIiwxMjoiQ2xlYXIiLDEzOiJFbnRlciIsMTY6IlNoaWZ0IiwxNzoiQ29udHJvbCIsMTg6IkFs
dCIsMTk6IlBhdXNlIiwyMDoiQ2Fwc0xvY2siLDI3OiJFc2NhcGUiLDMyOiIgIiwzMzoiUGFnZVVw
IiwzNDoiUGFnZURvd24iLDM1OiJFbmQiLDM2OiJIb21lIiwzNzoiQXJyb3dMZWZ0IiwzODoiQXJy
b3dVcCIsMzk6IkFycm93UmlnaHQiLDQwOiJBcnJvd0Rvd24iLDQ1OiJJbnNlcnQiLDQ2OiJEZWxl
dGUiLDExMjoiRjEiLDExMzoiRjIiLDExNDoiRjMiLDExNToiRjQiLDExNjoiRjUiLDExNzoiRjYi
LDExODoiRjciLDExOToiRjgiLDEyMDoiRjkiLDEyMToiRjEwIiwxMjI6IkYxMSIsMTIzOiJGMTIi
LDE0NDoiTnVtTG9jayIsMTQ1OiJTY3JvbGxMb2NrIiwyMjQ6Ik1ldGEifTt0LmV4cG9ydHM9cn0s
ezk4Ojk4fV0sMTAwOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7
dmFyIHQ9dGhpcyxuPXQubmF0aXZlRXZlbnQ7aWYobi5nZXRNb2RpZmllclN0YXRlKXJldHVybiBu
LmdldE1vZGlmaWVyU3RhdGUoZSk7dmFyIHI9aVtlXTtyZXR1cm4hIXImJiEhbltyXX1mdW5jdGlv
biBvKGUpe3JldHVybiByfXZhciBpPXtBbHQ6ImFsdEtleSIsQ29udHJvbDoiY3RybEtleSIsTWV0
YToibWV0YUtleSIsU2hpZnQ6InNoaWZ0S2V5In07dC5leHBvcnRzPW99LHt9XSwxMDE6W2Z1bmN0
aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1lLnRhcmdldHx8ZS5z
cmNFbGVtZW50fHx3aW5kb3c7cmV0dXJuIHQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQmJih0PXQu
Y29ycmVzcG9uZGluZ1VzZUVsZW1lbnQpLDM9PT10Lm5vZGVUeXBlP3QucGFyZW50Tm9kZTp0fXQu
ZXhwb3J0cz1yfSx7fV0sMTAyOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSl7dmFyIHQ9ZSYmKG8mJmVbb118fGVbaV0pO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0KXJl
dHVybiB0fXZhciBvPSJmdW5jdGlvbiI9PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcixp
PSJAQGl0ZXJhdG9yIjt0LmV4cG9ydHM9cn0se31dLDEwMzpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ug
c3RyaWN0IjtmdW5jdGlvbiByKGUpe2Zvcig7ZSYmZS5maXJzdENoaWxkOyllPWUuZmlyc3RDaGls
ZDtyZXR1cm4gZX1mdW5jdGlvbiBvKGUpe2Zvcig7ZTspe2lmKGUubmV4dFNpYmxpbmcpcmV0dXJu
IGUubmV4dFNpYmxpbmc7ZT1lLnBhcmVudE5vZGV9fWZ1bmN0aW9uIGkoZSx0KXtmb3IodmFyIG49
cihlKSxpPTAsYT0wO247KXtpZigzPT09bi5ub2RlVHlwZSl7aWYoYT1pK24udGV4dENvbnRlbnQu
bGVuZ3RoLGk8PXQmJmE+PXQpcmV0dXJue25vZGU6bixvZmZzZXQ6dC1pfTtpPWF9bj1yKG8obikp
fX10LmV4cG9ydHM9aX0se31dLDEwNDpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKCl7cmV0dXJuIWkmJm8uY2FuVXNlRE9NJiYoaT0idGV4dENvbnRlbnQiaW4gZG9jdW1l
bnQuZG9jdW1lbnRFbGVtZW50PyJ0ZXh0Q29udGVudCI6ImlubmVyVGV4dCIpLGl9dmFyIG89ZSgx
MjApLGk9bnVsbDt0LmV4cG9ydHM9cn0sezEyMDoxMjB9XSwxMDU6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQpe3ZhciBuPXt9O3JldHVybiBuW2UudG9Mb3dlckNh
c2UoKV09dC50b0xvd2VyQ2FzZSgpLG5bIldlYmtpdCIrZV09IndlYmtpdCIrdCxuWyJNb3oiK2Vd
PSJtb3oiK3QsblsibXMiK2VdPSJNUyIrdCxuWyJPIitlXT0ibyIrdC50b0xvd2VyQ2FzZSgpLG59
ZnVuY3Rpb24gbyhlKXtpZihzW2VdKXJldHVybiBzW2VdO2lmKCFhW2VdKXJldHVybiBlO3ZhciB0
PWFbZV07Zm9yKHZhciBuIGluIHQpaWYodC5oYXNPd25Qcm9wZXJ0eShuKSYmbiBpbiB1KXJldHVy
biBzW2VdPXRbbl07cmV0dXJuIiJ9dmFyIGk9ZSgxMjApLGE9e2FuaW1hdGlvbmVuZDpyKCJBbmlt
YXRpb24iLCJBbmltYXRpb25FbmQiKSxhbmltYXRpb25pdGVyYXRpb246cigiQW5pbWF0aW9uIiwi
QW5pbWF0aW9uSXRlcmF0aW9uIiksYW5pbWF0aW9uc3RhcnQ6cigiQW5pbWF0aW9uIiwiQW5pbWF0
aW9uU3RhcnQiKSx0cmFuc2l0aW9uZW5kOnIoIlRyYW5zaXRpb24iLCJUcmFuc2l0aW9uRW5kIil9
LHM9e30sdT17fTtpLmNhblVzZURPTSYmKHU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iiku
c3R5bGUsIkFuaW1hdGlvbkV2ZW50ImluIHdpbmRvd3x8KGRlbGV0ZSBhLmFuaW1hdGlvbmVuZC5h
bmltYXRpb24sZGVsZXRlIGEuYW5pbWF0aW9uaXRlcmF0aW9uLmFuaW1hdGlvbixkZWxldGUgYS5h
bmltYXRpb25zdGFydC5hbmltYXRpb24pLCJUcmFuc2l0aW9uRXZlbnQiaW4gd2luZG93fHxkZWxl
dGUgYS50cmFuc2l0aW9uZW5kLnRyYW5zaXRpb24pLHQuZXhwb3J0cz1vfSx7MTIwOjEyMH1dLDEw
NjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe2lmKGUpe3ZhciB0
PWUuZ2V0TmFtZSgpO2lmKHQpcmV0dXJuIiBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiBgIit0
KyJgLiJ9cmV0dXJuIiJ9ZnVuY3Rpb24gbyhlKXtyZXR1cm4iZnVuY3Rpb24iPT10eXBlb2YgZSYm
dm9pZCAwIT09ZS5wcm90b3R5cGUmJiJmdW5jdGlvbiI9PXR5cGVvZiBlLnByb3RvdHlwZS5tb3Vu
dENvbXBvbmVudCYmImZ1bmN0aW9uIj09dHlwZW9mIGUucHJvdG90eXBlLnJlY2VpdmVDb21wb25l
bnR9ZnVuY3Rpb24gaShlLHQpe3ZhciBuO2lmKG51bGw9PT1lfHwhMT09PWUpbj1sLmNyZWF0ZShp
KTtlbHNlIGlmKCJvYmplY3QiPT10eXBlb2YgZSl7dmFyIHM9ZSx1PXMudHlwZTtpZigiZnVuY3Rp
b24iIT10eXBlb2YgdSYmInN0cmluZyIhPXR5cGVvZiB1KXt2YXIgZD0iIjtkKz1yKHMuX293bmVy
KSxhKCIxMzAiLG51bGw9PXU/dTp0eXBlb2YgdSxkKX0ic3RyaW5nIj09dHlwZW9mIHMudHlwZT9u
PWMuY3JlYXRlSW50ZXJuYWxDb21wb25lbnQocyk6byhzLnR5cGUpPyhuPW5ldyBzLnR5cGUocyks
bi5nZXRIb3N0Tm9kZXx8KG4uZ2V0SG9zdE5vZGU9bi5nZXROYXRpdmVOb2RlKSk6bj1uZXcgcChz
KX1lbHNlInN0cmluZyI9PXR5cGVvZiBlfHwibnVtYmVyIj09dHlwZW9mIGU/bj1jLmNyZWF0ZUlu
c3RhbmNlRm9yVGV4dChlKTphKCIxMzEiLHR5cGVvZiBlKTtyZXR1cm4gbi5fbW91bnRJbmRleD0w
LG4uX21vdW50SW1hZ2U9bnVsbCxufXZhciBhPWUoMTEwKSxzPWUoMTQwKSx1PWUoMjkpLGw9ZSg0
OCksYz1lKDUzKSxwPShlKDExOCksZSgxMzQpLGUoMTM5KSxmdW5jdGlvbihlKXt0aGlzLmNvbnN0
cnVjdChlKX0pO3MocC5wcm90b3R5cGUsdSx7X2luc3RhbnRpYXRlUmVhY3RDb21wb25lbnQ6aX0p
LHQuZXhwb3J0cz1pfSx7MTEwOjExMCwxMTg6MTE4LDEzNDoxMzQsMTM5OjEzOSwxNDA6MTQwLDI5
OjI5LDQ4OjQ4LDUzOjUzfV0sMTA3OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0
aW9uIHIoZSx0KXtpZighaS5jYW5Vc2VET018fHQmJiEoImFkZEV2ZW50TGlzdGVuZXIiaW4gZG9j
dW1lbnQpKXJldHVybiExO3ZhciBuPSJvbiIrZSxyPW4gaW4gZG9jdW1lbnQ7aWYoIXIpe3ZhciBh
PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpO2Euc2V0QXR0cmlidXRlKG4sInJldHVybjsi
KSxyPSJmdW5jdGlvbiI9PXR5cGVvZiBhW25dfXJldHVybiFyJiZvJiYid2hlZWwiPT09ZSYmKHI9
ZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uaGFzRmVhdHVyZSgiRXZlbnRzLndoZWVsIiwiMy4wIikp
LHJ9dmFyIG8saT1lKDEyMCk7aS5jYW5Vc2VET00mJihvPWRvY3VtZW50LmltcGxlbWVudGF0aW9u
JiZkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5oYXNGZWF0dXJlJiYhMCE9PWRvY3VtZW50LmltcGxl
bWVudGF0aW9uLmhhc0ZlYXR1cmUoIiIsIiIpKSx0LmV4cG9ydHM9cn0sezEyMDoxMjB9XSwxMDg6
W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1lJiZlLm5v
ZGVOYW1lJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuImlucHV0Ij09PXQ/ISFvW2Uu
dHlwZV06InRleHRhcmVhIj09PXR9dmFyIG89e2NvbG9yOiEwLGRhdGU6ITAsZGF0ZXRpbWU6ITAs
ImRhdGV0aW1lLWxvY2FsIjohMCxlbWFpbDohMCxtb250aDohMCxudW1iZXI6ITAscGFzc3dvcmQ6
ITAscmFuZ2U6ITAsc2VhcmNoOiEwLHRlbDohMCx0ZXh0OiEwLHRpbWU6ITAsdXJsOiEwLHdlZWs6
ITB9O3QuZXhwb3J0cz1yfSx7fV0sMTA5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1
bmN0aW9uIHIoZSl7cmV0dXJuJyInK28oZSkrJyInfXZhciBvPWUoOTUpO3QuZXhwb3J0cz1yfSx7
OTU6OTV9XSwxMTA6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtm
b3IodmFyIHQ9YXJndW1lbnRzLmxlbmd0aC0xLG49Ik1pbmlmaWVkIFJlYWN0IGVycm9yICMiK2Ur
IjsgdmlzaXQgaHR0cDovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC9kb2NzL2Vycm9yLWRlY29k
ZXIuaHRtbD9pbnZhcmlhbnQ9IitlLHI9MDtyPHQ7cisrKW4rPSImYXJnc1tdPSIrZW5jb2RlVVJJ
Q29tcG9uZW50KGFyZ3VtZW50c1tyKzFdKTtuKz0iIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVz
ZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFk
ZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy4iO3ZhciBvPW5ldyBFcnJvcihuKTt0aHJvdyBvLm5h
bWU9IkludmFyaWFudCBWaW9sYXRpb24iLG8uZnJhbWVzVG9Qb3A9MSxvfXQuZXhwb3J0cz1yfSx7
fV0sMTExOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO3ZhciByLG89ZSgxMjApLGk9ZSgx
MCksYT0vXlsgXHJcblx0XGZdLyxzPS88KCEtLXxsaW5rfG5vc2NyaXB0fG1ldGF8c2NyaXB0fHN0
eWxlKVsgXHJcblx0XGZcLz5dLyx1PWUoOTMpLGw9dShmdW5jdGlvbihlLHQpe2lmKGUubmFtZXNw
YWNlVVJJIT09aS5zdmd8fCJpbm5lckhUTUwiaW4gZSllLmlubmVySFRNTD10O2Vsc2V7cj1yfHxk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxyLmlubmVySFRNTD0iPHN2Zz4iK3QrIjwvc3Zn
PiI7Zm9yKHZhciBuPXIuZmlyc3RDaGlsZDtuLmZpcnN0Q2hpbGQ7KWUuYXBwZW5kQ2hpbGQobi5m
aXJzdENoaWxkKX19KTtpZihvLmNhblVzZURPTSl7dmFyIGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgiZGl2Iik7Yy5pbm5lckhUTUw9IiAiLCIiPT09Yy5pbm5lckhUTUwmJihsPWZ1bmN0aW9uKGUs
dCl7aWYoZS5wYXJlbnROb2RlJiZlLnBhcmVudE5vZGUucmVwbGFjZUNoaWxkKGUsZSksYS50ZXN0
KHQpfHwiPCI9PT10WzBdJiZzLnRlc3QodCkpe2UuaW5uZXJIVE1MPVN0cmluZy5mcm9tQ2hhckNv
ZGUoNjUyNzkpK3Q7dmFyIG49ZS5maXJzdENoaWxkOzE9PT1uLmRhdGEubGVuZ3RoP2UucmVtb3Zl
Q2hpbGQobik6bi5kZWxldGVEYXRhKDAsMSl9ZWxzZSBlLmlubmVySFRNTD10fSksYz1udWxsfXQu
ZXhwb3J0cz1sfSx7MTA6MTAsMTIwOjEyMCw5Mzo5M31dLDExMjpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0Ijt2YXIgcj1lKDEyMCksbz1lKDk1KSxpPWUoMTExKSxhPWZ1bmN0aW9uKGUsdCl7
aWYodCl7dmFyIG49ZS5maXJzdENoaWxkO2lmKG4mJm49PT1lLmxhc3RDaGlsZCYmMz09PW4ubm9k
ZVR5cGUpcmV0dXJuIHZvaWQobi5ub2RlVmFsdWU9dCl9ZS50ZXh0Q29udGVudD10fTtyLmNhblVz
ZURPTSYmKCJ0ZXh0Q29udGVudCJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnR8fChhPWZ1bmN0
aW9uKGUsdCl7aWYoMz09PWUubm9kZVR5cGUpcmV0dXJuIHZvaWQoZS5ub2RlVmFsdWU9dCk7aShl
LG8odCkpfSkpLHQuZXhwb3J0cz1hfSx7MTExOjExMSwxMjA6MTIwLDk1Ojk1fV0sMTEzOltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXt2YXIgbj1udWxsPT09ZXx8
ITE9PT1lLHI9bnVsbD09PXR8fCExPT09dDtpZihufHxyKXJldHVybiBuPT09cjt2YXIgbz10eXBl
b2YgZSxpPXR5cGVvZiB0O3JldHVybiJzdHJpbmciPT09b3x8Im51bWJlciI9PT1vPyJzdHJpbmci
PT09aXx8Im51bWJlciI9PT1pOiJvYmplY3QiPT09aSYmZS50eXBlPT09dC50eXBlJiZlLmtleT09
PXQua2V5fXQuZXhwb3J0cz1yfSx7fV0sMTE0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3Qi
O2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4gZSYmIm9iamVjdCI9PXR5cGVvZiBlJiZudWxsIT1lLmtl
eT9sLmVzY2FwZShlLmtleSk6dC50b1N0cmluZygzNil9ZnVuY3Rpb24gbyhlLHQsbixpKXt2YXIg
ZD10eXBlb2YgZTtpZigidW5kZWZpbmVkIiE9PWQmJiJib29sZWFuIiE9PWR8fChlPW51bGwpLG51
bGw9PT1lfHwic3RyaW5nIj09PWR8fCJudW1iZXIiPT09ZHx8Im9iamVjdCI9PT1kJiZlLiQkdHlw
ZW9mPT09cylyZXR1cm4gbihpLGUsIiI9PT10P2MrcihlLDApOnQpLDE7dmFyIGYsaCxtPTAsdj0i
Ij09PXQ/Yzp0K3A7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IodmFyIGc9MDtnPGUubGVuZ3RoO2cr
KylmPWVbZ10saD12K3IoZixnKSxtKz1vKGYsaCxuLGkpO2Vsc2V7dmFyIHk9dShlKTtpZih5KXt2
YXIgXyxDPXkuY2FsbChlKTtpZih5IT09ZS5lbnRyaWVzKWZvcih2YXIgYj0wOyEoXz1DLm5leHQo
KSkuZG9uZTspZj1fLnZhbHVlLGg9dityKGYsYisrKSxtKz1vKGYsaCxuLGkpO2Vsc2UgZm9yKDsh
KF89Qy5uZXh0KCkpLmRvbmU7KXt2YXIgRT1fLnZhbHVlO0UmJihmPUVbMV0saD12K2wuZXNjYXBl
KEVbMF0pK3ArcihmLDApLG0rPW8oZixoLG4saSkpfX1lbHNlIGlmKCJvYmplY3QiPT09ZCl7dmFy
IHg9U3RyaW5nKGUpO2EoIjMxIiwiW29iamVjdCBPYmplY3RdIj09PXg/Im9iamVjdCB3aXRoIGtl
eXMgeyIrT2JqZWN0LmtleXMoZSkuam9pbigiLCAiKSsifSI6eCwiIil9fXJldHVybiBtfWZ1bmN0
aW9uIGkoZSx0LG4pe3JldHVybiBudWxsPT1lPzA6byhlLCIiLHQsbil9dmFyIGE9ZSgxMTApLHM9
KGUoMTE2KSxlKDQ3KSksdT1lKDEwMiksbD0oZSgxMzQpLGUoMjIpKSxjPShlKDEzOSksIi4iKSxw
PSI6Ijt0LmV4cG9ydHM9aX0sezEwMjoxMDIsMTEwOjExMCwxMTY6MTE2LDEzNDoxMzQsMTM5OjEz
OSwyMjoyMiw0Nzo0N31dLDExNTpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIgcj0o
ZSgxNDApLGUoMTI2KSksbz0oZSgxMzkpLHIpO3QuZXhwb3J0cz1vfSx7MTI2OjEyNiwxMzk6MTM5
LDE0MDoxNDB9XSwxMTY6W2Z1bmN0aW9uKHQsbixyKXsidXNlIHN0cmljdCI7dmFyIG89ZS5fX1NF
Q1JFVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9ZT1VfV0lMTF9CRV9GSVJFRDtuLmV4cG9ydHM9
by5SZWFjdEN1cnJlbnRPd25lcn0se31dLDExNzpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0
IjtuLmV4cG9ydHM9ZX0se31dLDExODpbZnVuY3Rpb24odCxuLHIpeyJ1c2Ugc3RyaWN0Ijt2YXIg
bz1lLl9fU0VDUkVUX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1lPVV9XSUxMX0JFX0ZJUkVEO24u
ZXhwb3J0cz1vLmdldE5leHREZWJ1Z0lEfSx7fV0sMTE5OltmdW5jdGlvbihlLHQsbil7InVzZSBz
dHJpY3QiO3ZhciByPWUoMTI2KSxvPXtsaXN0ZW46ZnVuY3Rpb24oZSx0LG4pe3JldHVybiBlLmFk
ZEV2ZW50TGlzdGVuZXI/KGUuYWRkRXZlbnRMaXN0ZW5lcih0LG4sITEpLHtyZW1vdmU6ZnVuY3Rp
b24oKXtlLnJlbW92ZUV2ZW50TGlzdGVuZXIodCxuLCExKX19KTplLmF0dGFjaEV2ZW50PyhlLmF0
dGFjaEV2ZW50KCJvbiIrdCxuKSx7cmVtb3ZlOmZ1bmN0aW9uKCl7ZS5kZXRhY2hFdmVudCgib24i
K3Qsbil9fSk6dm9pZCAwfSxjYXB0dXJlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm4gZS5hZGRFdmVu
dExpc3RlbmVyPyhlLmFkZEV2ZW50TGlzdGVuZXIodCxuLCEwKSx7cmVtb3ZlOmZ1bmN0aW9uKCl7
ZS5yZW1vdmVFdmVudExpc3RlbmVyKHQsbiwhMCl9fSk6e3JlbW92ZTpyfX0scmVnaXN0ZXJEZWZh
dWx0OmZ1bmN0aW9uKCl7fX07dC5leHBvcnRzPW99LHsxMjY6MTI2fV0sMTIwOltmdW5jdGlvbihl
LHQsbil7InVzZSBzdHJpY3QiO3ZhciByPSEoInVuZGVmaW5lZCI9PXR5cGVvZiB3aW5kb3d8fCF3
aW5kb3cuZG9jdW1lbnR8fCF3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCksbz17Y2FuVXNl
RE9NOnIsY2FuVXNlV29ya2VyczoidW5kZWZpbmVkIiE9dHlwZW9mIFdvcmtlcixjYW5Vc2VFdmVu
dExpc3RlbmVyczpyJiYhKCF3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lciYmIXdpbmRvdy5hdHRhY2hF
dmVudCksY2FuVXNlVmlld3BvcnQ6ciYmISF3aW5kb3cuc2NyZWVuLGlzSW5Xb3JrZXI6IXJ9O3Qu
ZXhwb3J0cz1vfSx7fV0sMTIxOltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9u
IHIoZSl7cmV0dXJuIGUucmVwbGFjZShvLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIHQudG9VcHBlckNh
c2UoKX0pfXZhciBvPS8tKC4pL2c7dC5leHBvcnRzPXJ9LHt9XSwxMjI6W2Z1bmN0aW9uKGUsdCxu
KXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gbyhlLnJlcGxhY2UoaSwibXMtIikp
fXZhciBvPWUoMTIxKSxpPS9eLW1zLS87dC5leHBvcnRzPXJ9LHsxMjE6MTIxfV0sMTIzOltmdW5j
dGlvbihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0KXtyZXR1cm4hKCFlfHwhdCkm
JihlPT09dHx8IW8oZSkmJihvKHQpP3IoZSx0LnBhcmVudE5vZGUpOiJjb250YWlucyJpbiBlP2Uu
Y29udGFpbnModCk6ISFlLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uJiYhISgxNiZlLmNvbXBhcmVE
b2N1bWVudFBvc2l0aW9uKHQpKSkpfXZhciBvPWUoMTM2KTt0LmV4cG9ydHM9cn0sezEzNjoxMzZ9
XSwxMjQ6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1l
Lmxlbmd0aDtpZigoQXJyYXkuaXNBcnJheShlKXx8Im9iamVjdCIhPXR5cGVvZiBlJiYiZnVuY3Rp
b24iIT10eXBlb2YgZSkmJmEoITEpLCJudW1iZXIiIT10eXBlb2YgdCYmYSghMSksMD09PXR8fHQt
MSBpbiBlfHxhKCExKSwiZnVuY3Rpb24iPT10eXBlb2YgZS5jYWxsZWUmJmEoITEpLGUuaGFzT3du
UHJvcGVydHkpdHJ5e3JldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChlKX1jYXRjaChl
KXt9Zm9yKHZhciBuPUFycmF5KHQpLHI9MDtyPHQ7cisrKW5bcl09ZVtyXTtyZXR1cm4gbn1mdW5j
dGlvbiBvKGUpe3JldHVybiEhZSYmKCJvYmplY3QiPT10eXBlb2YgZXx8ImZ1bmN0aW9uIj09dHlw
ZW9mIGUpJiYibGVuZ3RoImluIGUmJiEoInNldEludGVydmFsImluIGUpJiYibnVtYmVyIiE9dHlw
ZW9mIGUubm9kZVR5cGUmJihBcnJheS5pc0FycmF5KGUpfHwiY2FsbGVlImluIGV8fCJpdGVtImlu
IGUpfWZ1bmN0aW9uIGkoZSl7cmV0dXJuIG8oZSk/QXJyYXkuaXNBcnJheShlKT9lLnNsaWNlKCk6
cihlKTpbZV19dmFyIGE9ZSgxMzQpO3QuZXhwb3J0cz1pfSx7MTM0OjEzNH1dLDEyNTpbZnVuY3Rp
b24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3ZhciB0PWUubWF0Y2goYyk7cmV0
dXJuIHQmJnRbMV0udG9Mb3dlckNhc2UoKX1mdW5jdGlvbiBvKGUsdCl7dmFyIG49bDtsfHx1KCEx
KTt2YXIgbz1yKGUpLGk9byYmcyhvKTtpZihpKXtuLmlubmVySFRNTD1pWzFdK2UraVsyXTtmb3Io
dmFyIGM9aVswXTtjLS07KW49bi5sYXN0Q2hpbGR9ZWxzZSBuLmlubmVySFRNTD1lO3ZhciBwPW4u
Z2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpO3AubGVuZ3RoJiYodHx8dSghMSksYShwKS5m
b3JFYWNoKHQpKTtmb3IodmFyIGQ9QXJyYXkuZnJvbShuLmNoaWxkTm9kZXMpO24ubGFzdENoaWxk
OyluLnJlbW92ZUNoaWxkKG4ubGFzdENoaWxkKTtyZXR1cm4gZH12YXIgaT1lKDEyMCksYT1lKDEy
NCkscz1lKDEzMCksdT1lKDEzNCksbD1pLmNhblVzZURPTT9kb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJkaXYiKTpudWxsLGM9L15ccyo8KFx3KykvO3QuZXhwb3J0cz1vfSx7MTIwOjEyMCwxMjQ6MTI0
LDEzMDoxMzAsMTM0OjEzNH1dLDEyNjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0IjtmdW5j
dGlvbiByKGUpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBlfX12YXIgbz1mdW5jdGlvbigpe307
by50aGF0UmV0dXJucz1yLG8udGhhdFJldHVybnNGYWxzZT1yKCExKSxvLnRoYXRSZXR1cm5zVHJ1
ZT1yKCEwKSxvLnRoYXRSZXR1cm5zTnVsbD1yKG51bGwpLG8udGhhdFJldHVybnNUaGlzPWZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXN9LG8udGhhdFJldHVybnNBcmd1bWVudD1mdW5jdGlvbihlKXtyZXR1
cm4gZX0sdC5leHBvcnRzPW99LHt9XSwxMjc6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7
dmFyIHI9e307dC5leHBvcnRzPXJ9LHt9XSwxMjg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlKXt0cnl7ZS5mb2N1cygpfWNhdGNoKGUpe319dC5leHBvcnRzPXJ9LHt9
XSwxMjk6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtpZih2b2lk
IDA9PT0oZT1lfHwoInVuZGVmaW5lZCIhPXR5cGVvZiBkb2N1bWVudD9kb2N1bWVudDp2b2lkIDAp
KSlyZXR1cm4gbnVsbDt0cnl7cmV0dXJuIGUuYWN0aXZlRWxlbWVudHx8ZS5ib2R5fWNhdGNoKHQp
e3JldHVybiBlLmJvZHl9fXQuZXhwb3J0cz1yfSx7fV0sMTMwOltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7cmV0dXJuIGF8fGkoITEpLGQuaGFzT3duUHJvcGVydHko
ZSl8fChlPSIqIikscy5oYXNPd25Qcm9wZXJ0eShlKXx8KGEuaW5uZXJIVE1MPSIqIj09PWU/Ijxs
aW5rIC8+IjoiPCIrZSsiPjwvIitlKyI+IixzW2VdPSFhLmZpcnN0Q2hpbGQpLHNbZV0/ZFtlXTpu
dWxsfXZhciBvPWUoMTIwKSxpPWUoMTM0KSxhPW8uY2FuVXNlRE9NP2RvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImRpdiIpOm51bGwscz17fSx1PVsxLCc8c2VsZWN0IG11bHRpcGxlPSJ0cnVlIj4nLCI8
L3NlbGVjdD4iXSxsPVsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSxjPVszLCI8dGFibGU+PHRib2R5
Pjx0cj4iLCI8L3RyPjwvdGJvZHk+PC90YWJsZT4iXSxwPVsxLCc8c3ZnIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8yMDAwL3N2ZyI+JywiPC9zdmc+Il0sZD17IioiOlsxLCI/PGRpdj4iLCI8L2Rp
dj4iXSxhcmVhOlsxLCI8bWFwPiIsIjwvbWFwPiJdLGNvbDpbMiwiPHRhYmxlPjx0Ym9keT48L3Ri
b2R5Pjxjb2xncm91cD4iLCI8L2NvbGdyb3VwPjwvdGFibGU+Il0sbGVnZW5kOlsxLCI8ZmllbGRz
ZXQ+IiwiPC9maWVsZHNldD4iXSxwYXJhbTpbMSwiPG9iamVjdD4iLCI8L29iamVjdD4iXSx0cjpb
MiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il0sb3B0Z3JvdXA6dSxvcHRpb246
dSxjYXB0aW9uOmwsY29sZ3JvdXA6bCx0Ym9keTpsLHRmb290OmwsdGhlYWQ6bCx0ZDpjLHRoOmN9
O1siY2lyY2xlIiwiY2xpcFBhdGgiLCJkZWZzIiwiZWxsaXBzZSIsImciLCJpbWFnZSIsImxpbmUi
LCJsaW5lYXJHcmFkaWVudCIsIm1hc2siLCJwYXRoIiwicGF0dGVybiIsInBvbHlnb24iLCJwb2x5
bGluZSIsInJhZGlhbEdyYWRpZW50IiwicmVjdCIsInN0b3AiLCJ0ZXh0IiwidHNwYW4iXS5mb3JF
YWNoKGZ1bmN0aW9uKGUpe2RbZV09cCxzW2VdPSEwfSksdC5leHBvcnRzPXJ9LHsxMjA6MTIwLDEz
NDoxMzR9XSwxMzE6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXty
ZXR1cm4gZS5XaW5kb3cmJmUgaW5zdGFuY2VvZiBlLldpbmRvdz97eDplLnBhZ2VYT2Zmc2V0fHxl
LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0LHk6ZS5wYWdlWU9mZnNldHx8ZS5k
b2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wfTp7eDplLnNjcm9sbExlZnQseTplLnNj
cm9sbFRvcH19dC5leHBvcnRzPXJ9LHt9XSwxMzI6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmlj
dCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gZS5yZXBsYWNlKG8sIi0kMSIpLnRvTG93ZXJDYXNlKCl9
dmFyIG89LyhbQS1aXSkvZzt0LmV4cG9ydHM9cn0se31dLDEzMzpbZnVuY3Rpb24oZSx0LG4peyJ1
c2Ugc3RyaWN0IjtmdW5jdGlvbiByKGUpe3JldHVybiBvKGUpLnJlcGxhY2UoaSwiLW1zLSIpfXZh
ciBvPWUoMTMyKSxpPS9ebXMtLzt0LmV4cG9ydHM9cn0sezEzMjoxMzJ9XSwxMzQ6W2Z1bmN0aW9u
KGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlLHQsbixyLGksYSxzLHUpe2lmKG8odCks
IWUpe3ZhciBsO2lmKHZvaWQgMD09PXQpbD1uZXcgRXJyb3IoIk1pbmlmaWVkIGV4Y2VwdGlvbiBv
Y2N1cnJlZDsgdXNlIHRoZSBub24tbWluaWZpZWQgZGV2IGVudmlyb25tZW50IGZvciB0aGUgZnVs
bCBlcnJvciBtZXNzYWdlIGFuZCBhZGRpdGlvbmFsIGhlbHBmdWwgd2FybmluZ3MuIik7ZWxzZXt2
YXIgYz1bbixyLGksYSxzLHVdLHA9MDtsPW5ldyBFcnJvcih0LnJlcGxhY2UoLyVzL2csZnVuY3Rp
b24oKXtyZXR1cm4gY1twKytdfSkpLGwubmFtZT0iSW52YXJpYW50IFZpb2xhdGlvbiJ9dGhyb3cg
bC5mcmFtZXNUb1BvcD0xLGx9fXZhciBvPWZ1bmN0aW9uKGUpe307dC5leHBvcnRzPXJ9LHt9XSwx
MzU6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXt2YXIgdD1lP2Uu
b3duZXJEb2N1bWVudHx8ZTpkb2N1bWVudCxuPXQuZGVmYXVsdFZpZXd8fHdpbmRvdztyZXR1cm4h
KCFlfHwhKCJmdW5jdGlvbiI9PXR5cGVvZiBuLk5vZGU/ZSBpbnN0YW5jZW9mIG4uTm9kZToib2Jq
ZWN0Ij09dHlwZW9mIGUmJiJudW1iZXIiPT10eXBlb2YgZS5ub2RlVHlwZSYmInN0cmluZyI9PXR5
cGVvZiBlLm5vZGVOYW1lKSl9dC5leHBvcnRzPXJ9LHt9XSwxMzY6W2Z1bmN0aW9uKGUsdCxuKXsi
dXNlIHN0cmljdCI7ZnVuY3Rpb24gcihlKXtyZXR1cm4gbyhlKSYmMz09ZS5ub2RlVHlwZX12YXIg
bz1lKDEzNSk7dC5leHBvcnRzPXJ9LHsxMzU6MTM1fV0sMTM3OltmdW5jdGlvbihlLHQsbil7InVz
ZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7dmFyIHQ9e307cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVy
biB0Lmhhc093blByb3BlcnR5KG4pfHwodFtuXT1lLmNhbGwodGhpcyxuKSksdFtuXX19dC5leHBv
cnRzPXJ9LHt9XSwxMzg6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7ZnVuY3Rpb24gcihl
LHQpe3JldHVybiBlPT09dD8wIT09ZXx8MCE9PXR8fDEvZT09MS90OmUhPT1lJiZ0IT09dH1mdW5j
dGlvbiBvKGUsdCl7aWYocihlLHQpKXJldHVybiEwO2lmKCJvYmplY3QiIT10eXBlb2YgZXx8bnVs
bD09PWV8fCJvYmplY3QiIT10eXBlb2YgdHx8bnVsbD09PXQpcmV0dXJuITE7dmFyIG49T2JqZWN0
LmtleXMoZSksbz1PYmplY3Qua2V5cyh0KTtpZihuLmxlbmd0aCE9PW8ubGVuZ3RoKXJldHVybiEx
O2Zvcih2YXIgYT0wO2E8bi5sZW5ndGg7YSsrKWlmKCFpLmNhbGwodCxuW2FdKXx8IXIoZVtuW2Fd
XSx0W25bYV1dKSlyZXR1cm4hMTtyZXR1cm4hMH12YXIgaT1PYmplY3QucHJvdG90eXBlLmhhc093
blByb3BlcnR5O3QuZXhwb3J0cz1vfSx7fV0sMTM5OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3ZhciByPWUoMTI2KSxvPXI7dC5leHBvcnRzPW99LHsxMjY6MTI2fV0sMTQwOltmdW5jdGlv
bihlLHQsbil7InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSl7aWYobnVsbD09PWV8fHZvaWQgMD09
PWUpdGhyb3cgbmV3IFR5cGVFcnJvcigiT2JqZWN0LmFzc2lnbiBjYW5ub3QgYmUgY2FsbGVkIHdp
dGggbnVsbCBvciB1bmRlZmluZWQiKTtyZXR1cm4gT2JqZWN0KGUpfXZhciBvPU9iamVjdC5nZXRP
d25Qcm9wZXJ0eVN5bWJvbHMsaT1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGE9T2Jq
ZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZTt0LmV4cG9ydHM9ZnVuY3Rpb24oKXt0
cnl7aWYoIU9iamVjdC5hc3NpZ24pcmV0dXJuITE7dmFyIGU9bmV3IFN0cmluZygiYWJjIik7aWYo
ZVs1XT0iZGUiLCI1Ij09PU9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGUpWzBdKXJldHVybiEx
O2Zvcih2YXIgdD17fSxuPTA7bjwxMDtuKyspdFsiXyIrU3RyaW5nLmZyb21DaGFyQ29kZShuKV09
bjtpZigiMDEyMzQ1Njc4OSIhPT1PYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0KS5tYXAoZnVu
Y3Rpb24oZSl7cmV0dXJuIHRbZV19KS5qb2luKCIiKSlyZXR1cm4hMTt2YXIgcj17fTtyZXR1cm4i
YWJjZGVmZ2hpamtsbW5vcHFyc3QiLnNwbGl0KCIiKS5mb3JFYWNoKGZ1bmN0aW9uKGUpe3JbZV09
ZX0pLCJhYmNkZWZnaGlqa2xtbm9wcXJzdCI9PT1PYmplY3Qua2V5cyhPYmplY3QuYXNzaWduKHt9
LHIpKS5qb2luKCIiKX1jYXRjaChlKXtyZXR1cm4hMX19KCk/T2JqZWN0LmFzc2lnbjpmdW5jdGlv
bihlLHQpe2Zvcih2YXIgbixzLHU9cihlKSxsPTE7bDxhcmd1bWVudHMubGVuZ3RoO2wrKyl7bj1P
YmplY3QoYXJndW1lbnRzW2xdKTtmb3IodmFyIGMgaW4gbilpLmNhbGwobixjKSYmKHVbY109bltj
XSk7aWYobyl7cz1vKG4pO2Zvcih2YXIgcD0wO3A8cy5sZW5ndGg7cCsrKWEuY2FsbChuLHNbcF0p
JiYodVtzW3BdXT1uW3NbcF1dKX19cmV0dXJuIHV9fSx7fV0sMTQxOltmdW5jdGlvbihlLHQsbil7
InVzZSBzdHJpY3QiO2Z1bmN0aW9uIHIoZSx0LG4scixvKXt9dC5leHBvcnRzPXJ9LHsxMzQ6MTM0
LDEzOToxMzksMTQ0OjE0NH1dLDE0MjpbZnVuY3Rpb24oZSx0LG4peyJ1c2Ugc3RyaWN0Ijt2YXIg
cj1lKDE0Myk7dC5leHBvcnRzPWZ1bmN0aW9uKGUpe3JldHVybiByKGUsITEpfX0sezE0MzoxNDN9
XSwxNDM6W2Z1bmN0aW9uKGUsdCxuKXsidXNlIHN0cmljdCI7dmFyIHI9ZSgxMjYpLG89ZSgxMzQp
LGk9KGUoMTM5KSxlKDE0NCkpLGE9ZSgxNDEpO3QuZXhwb3J0cz1mdW5jdGlvbihlLHQpe2Z1bmN0
aW9uIG4oZSl7dmFyIHQ9ZSYmKEUmJmVbRV18fGVbeF0pO2lmKCJmdW5jdGlvbiI9PXR5cGVvZiB0
KXJldHVybiB0fWZ1bmN0aW9uIHMoZSx0KXtyZXR1cm4gZT09PXQ/MCE9PWV8fDEvZT09MS90OmUh
PT1lJiZ0IT09dH1mdW5jdGlvbiB1KGUpe3RoaXMubWVzc2FnZT1lLHRoaXMuc3RhY2s9IiJ9ZnVu
Y3Rpb24gbChlKXtmdW5jdGlvbiBuKG4scixhLHMsbCxjLHApe2lmKHM9c3x8dyxjPWN8fGEscCE9
PWkpaWYodClvKCExLCJDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5v
dCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiBVc2UgYFByb3BUeXBlcy5j
aGVja1Byb3BUeXBlcygpYCB0byBjYWxsIHRoZW0uIFJlYWQgbW9yZSBhdCBodHRwOi8vZmIubWUv
dXNlLWNoZWNrLXByb3AtdHlwZXMiKTtlbHNlO3JldHVybiBudWxsPT1yW2FdP24/bmV3IHUobnVs
bD09PXJbYV0/IlRoZSAiK2wrIiBgIitjKyJgIGlzIG1hcmtlZCBhcyByZXF1aXJlZCBpbiBgIitz
KyJgLCBidXQgaXRzIHZhbHVlIGlzIGBudWxsYC4iOiJUaGUgIitsKyIgYCIrYysiYCBpcyBtYXJr
ZWQgYXMgcmVxdWlyZWQgaW4gYCIrcysiYCwgYnV0IGl0cyB2YWx1ZSBpcyBgdW5kZWZpbmVkYC4i
KTpudWxsOmUocixhLHMsbCxjKX12YXIgcj1uLmJpbmQobnVsbCwhMSk7cmV0dXJuIHIuaXNSZXF1
aXJlZD1uLmJpbmQobnVsbCwhMCkscn1mdW5jdGlvbiBjKGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxp
LGEpe3ZhciBzPXRbbl07aWYoXyhzKSE9PWUpcmV0dXJuIG5ldyB1KCJJbnZhbGlkICIrbysiIGAi
K2krImAgb2YgdHlwZSBgIitDKHMpKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIGAi
K2UrImAuIik7cmV0dXJuIG51bGx9cmV0dXJuIGwodCl9ZnVuY3Rpb24gcChlKXtmdW5jdGlvbiB0
KHQsbixyLG8sYSl7aWYoImZ1bmN0aW9uIiE9dHlwZW9mIGUpcmV0dXJuIG5ldyB1KCJQcm9wZXJ0
eSBgIithKyJgIG9mIGNvbXBvbmVudCBgIityKyJgIGhhcyBpbnZhbGlkIFByb3BUeXBlIG5vdGF0
aW9uIGluc2lkZSBhcnJheU9mLiIpO3ZhciBzPXRbbl07aWYoIUFycmF5LmlzQXJyYXkocykpe3Jl
dHVybiBuZXcgdSgiSW52YWxpZCAiK28rIiBgIithKyJgIG9mIHR5cGUgYCIrXyhzKSsiYCBzdXBw
bGllZCB0byBgIityKyJgLCBleHBlY3RlZCBhbiBhcnJheS4iKX1mb3IodmFyIGw9MDtsPHMubGVu
Z3RoO2wrKyl7dmFyIGM9ZShzLGwscixvLGErIlsiK2wrIl0iLGkpO2lmKGMgaW5zdGFuY2VvZiBF
cnJvcilyZXR1cm4gY31yZXR1cm4gbnVsbH1yZXR1cm4gbCh0KX1mdW5jdGlvbiBkKGUpe2Z1bmN0
aW9uIHQodCxuLHIsbyxpKXtpZighKHRbbl1pbnN0YW5jZW9mIGUpKXt2YXIgYT1lLm5hbWV8fHc7
cmV0dXJuIG5ldyB1KCJJbnZhbGlkICIrbysiIGAiK2krImAgb2YgdHlwZSBgIitiKHRbbl0pKyJg
IHN1cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIGluc3RhbmNlIG9mIGAiK2ErImAuIil9cmV0
dXJuIG51bGx9cmV0dXJuIGwodCl9ZnVuY3Rpb24gZihlKXtmdW5jdGlvbiB0KHQsbixyLG8saSl7
Zm9yKHZhciBhPXRbbl0sbD0wO2w8ZS5sZW5ndGg7bCsrKWlmKHMoYSxlW2xdKSlyZXR1cm4gbnVs
bDtyZXR1cm4gbmV3IHUoIkludmFsaWQgIitvKyIgYCIraSsiYCBvZiB2YWx1ZSBgIithKyJgIHN1
cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIG9uZSBvZiAiK0pTT04uc3RyaW5naWZ5KGUpKyIu
Iil9cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/bCh0KTpyLnRoYXRSZXR1cm5zTnVsbH1mdW5jdGlv
biBoKGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxhKXtpZigiZnVuY3Rpb24iIT10eXBlb2YgZSlyZXR1
cm4gbmV3IHUoIlByb3BlcnR5IGAiK2ErImAgb2YgY29tcG9uZW50IGAiK3IrImAgaGFzIGludmFs
aWQgUHJvcFR5cGUgbm90YXRpb24gaW5zaWRlIG9iamVjdE9mLiIpO3ZhciBzPXRbbl0sbD1fKHMp
O2lmKCJvYmplY3QiIT09bClyZXR1cm4gbmV3IHUoIkludmFsaWQgIitvKyIgYCIrYSsiYCBvZiB0
eXBlIGAiK2wrImAgc3VwcGxpZWQgdG8gYCIrcisiYCwgZXhwZWN0ZWQgYW4gb2JqZWN0LiIpO2Zv
cih2YXIgYyBpbiBzKWlmKHMuaGFzT3duUHJvcGVydHkoYykpe3ZhciBwPWUocyxjLHIsbyxhKyIu
IitjLGkpO2lmKHAgaW5zdGFuY2VvZiBFcnJvcilyZXR1cm4gcH1yZXR1cm4gbnVsbH1yZXR1cm4g
bCh0KX1mdW5jdGlvbiBtKGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxhKXtmb3IodmFyIHM9MDtzPGUu
bGVuZ3RoO3MrKyl7aWYobnVsbD09KDAsZVtzXSkodCxuLHIsbyxhLGkpKXJldHVybiBudWxsfXJl
dHVybiBuZXcgdSgiSW52YWxpZCAiK28rIiBgIithKyJgIHN1cHBsaWVkIHRvIGAiK3IrImAuIil9
cmV0dXJuIEFycmF5LmlzQXJyYXkoZSk/bCh0KTpyLnRoYXRSZXR1cm5zTnVsbH1mdW5jdGlvbiB2
KGUpe2Z1bmN0aW9uIHQodCxuLHIsbyxhKXt2YXIgcz10W25dLGw9XyhzKTtpZigib2JqZWN0IiE9
PWwpcmV0dXJuIG5ldyB1KCJJbnZhbGlkICIrbysiIGAiK2ErImAgb2YgdHlwZSBgIitsKyJgIHN1
cHBsaWVkIHRvIGAiK3IrImAsIGV4cGVjdGVkIGBvYmplY3RgLiIpO2Zvcih2YXIgYyBpbiBlKXt2
YXIgcD1lW2NdO2lmKHApe3ZhciBkPXAocyxjLHIsbyxhKyIuIitjLGkpO2lmKGQpcmV0dXJuIGR9
fXJldHVybiBudWxsfXJldHVybiBsKHQpfWZ1bmN0aW9uIGcodCl7c3dpdGNoKHR5cGVvZiB0KXtj
YXNlIm51bWJlciI6Y2FzZSJzdHJpbmciOmNhc2UidW5kZWZpbmVkIjpyZXR1cm4hMDtjYXNlImJv
b2xlYW4iOnJldHVybiF0O2Nhc2Uib2JqZWN0IjppZihBcnJheS5pc0FycmF5KHQpKXJldHVybiB0
LmV2ZXJ5KGcpO2lmKG51bGw9PT10fHxlKHQpKXJldHVybiEwO3ZhciByPW4odCk7aWYoIXIpcmV0
dXJuITE7dmFyIG8saT1yLmNhbGwodCk7aWYociE9PXQuZW50cmllcyl7Zm9yKDshKG89aS5uZXh0
KCkpLmRvbmU7KWlmKCFnKG8udmFsdWUpKXJldHVybiExfWVsc2UgZm9yKDshKG89aS5uZXh0KCkp
LmRvbmU7KXt2YXIgYT1vLnZhbHVlO2lmKGEmJiFnKGFbMV0pKXJldHVybiExfXJldHVybiEwO2Rl
ZmF1bHQ6cmV0dXJuITF9fWZ1bmN0aW9uIHkoZSx0KXtyZXR1cm4ic3ltYm9sIj09PWV8fCgiU3lt
Ym9sIj09PXRbIkBAdG9TdHJpbmdUYWciXXx8ImZ1bmN0aW9uIj09dHlwZW9mIFN5bWJvbCYmdCBp
bnN0YW5jZW9mIFN5bWJvbCl9ZnVuY3Rpb24gXyhlKXt2YXIgdD10eXBlb2YgZTtyZXR1cm4gQXJy
YXkuaXNBcnJheShlKT8iYXJyYXkiOmUgaW5zdGFuY2VvZiBSZWdFeHA/Im9iamVjdCI6eSh0LGUp
PyJzeW1ib2wiOnR9ZnVuY3Rpb24gQyhlKXt2YXIgdD1fKGUpO2lmKCJvYmplY3QiPT09dCl7aWYo
ZSBpbnN0YW5jZW9mIERhdGUpcmV0dXJuImRhdGUiO2lmKGUgaW5zdGFuY2VvZiBSZWdFeHApcmV0
dXJuInJlZ2V4cCJ9cmV0dXJuIHR9ZnVuY3Rpb24gYihlKXtyZXR1cm4gZS5jb25zdHJ1Y3RvciYm
ZS5jb25zdHJ1Y3Rvci5uYW1lP2UuY29uc3RydWN0b3IubmFtZTp3fXZhciBFPSJmdW5jdGlvbiI9
PXR5cGVvZiBTeW1ib2wmJlN5bWJvbC5pdGVyYXRvcix4PSJAQGl0ZXJhdG9yIix3PSI8PGFub255
bW91cz4+IixrPXthcnJheTpjKCJhcnJheSIpLGJvb2w6YygiYm9vbGVhbiIpLGZ1bmM6YygiZnVu
Y3Rpb24iKSxudW1iZXI6YygibnVtYmVyIiksb2JqZWN0OmMoIm9iamVjdCIpLHN0cmluZzpjKCJz
dHJpbmciKSxzeW1ib2w6Yygic3ltYm9sIiksYW55OmZ1bmN0aW9uKCl7cmV0dXJuIGwoci50aGF0
UmV0dXJuc051bGwpfSgpLGFycmF5T2Y6cCxlbGVtZW50OmZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0
LG4scixvLGkpe3ZhciBhPXRbbl07aWYoIWUoYSkpe3JldHVybiBuZXcgdSgiSW52YWxpZCAiK28r
IiBgIitpKyJgIG9mIHR5cGUgYCIrXyhhKSsiYCBzdXBwbGllZCB0byBgIityKyJgLCBleHBlY3Rl
ZCBhIHNpbmdsZSBSZWFjdEVsZW1lbnQuIil9cmV0dXJuIG51bGx9cmV0dXJuIGwodCl9KCksaW5z
dGFuY2VPZjpkLG5vZGU6ZnVuY3Rpb24oKXtmdW5jdGlvbiBlKGUsdCxuLHIsbyl7cmV0dXJuIGco
ZVt0XSk/bnVsbDpuZXcgdSgiSW52YWxpZCAiK3IrIiBgIitvKyJgIHN1cHBsaWVkIHRvIGAiK24r
ImAsIGV4cGVjdGVkIGEgUmVhY3ROb2RlLiIpfXJldHVybiBsKGUpfSgpLG9iamVjdE9mOmgsb25l
T2Y6ZixvbmVPZlR5cGU6bSxzaGFwZTp2fTtyZXR1cm4gdS5wcm90b3R5cGU9RXJyb3IucHJvdG90
eXBlLGsuY2hlY2tQcm9wVHlwZXM9YSxrLlByb3BUeXBlcz1rLGt9fSx7MTI2OjEyNiwxMzQ6MTM0
LDEzOToxMzksMTQxOjE0MSwxNDQ6MTQ0fV0sMTQ0OltmdW5jdGlvbihlLHQsbil7InVzZSBzdHJp
Y3QiO3QuZXhwb3J0cz0iU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklS
RUQifSx7fV19LHt9LFs0MV0pKDQxKX0oKX0oKX0pOwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZp
bGUKZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3Rv
ZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20v
aW5kZXguanMgYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZj
L2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3QtZG9tL2luZGV4
LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYmY5NDE3OTM2ZjdjYmJmMDNjMGYx
ZGVkNDJjZTkzMjBhMjE0YWNiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25vZGVfbW9kdWxlcy9yZWFjdC1kb20vaW5kZXgu
anMKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLSd1c2Ugc3RyaWN0JzsKLQotbW9kdWxl
LmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9SZWFjdERPTScpOwpkaWZmIC0tZ2l0IGEvUGVyZm9y
bWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhh
bXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0L1JFQURNRS5tZCBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0L25vZGVfbW9kdWxlcy9yZWFjdC9SRUFETUUubWQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDc0MGE0ZjJjMDY0ZDJmNDc1Mjc5Y2UyNmMyMjAzODViMzBiNDc3MDMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bm9kZV9tb2R1bGVzL3JlYWN0L1JFQURNRS5tZAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAg
QEAKLSMgcmVhY3QKLQotQW4gbnBtIHBhY2thZ2UgdG8gZ2V0IHlvdSBpbW1lZGlhdGUgYWNjZXNz
IHRvIFtSZWFjdF0oaHR0cHM6Ly9mYWNlYm9vay5naXRodWIuaW8vcmVhY3QvKSwKLXdpdGhvdXQg
YWxzbyByZXF1aXJpbmcgdGhlIEpTWCB0cmFuc2Zvcm1lci4gVGhpcyBpcyBlc3BlY2lhbGx5IHVz
ZWZ1bCBmb3IgY2FzZXMgd2hlcmUgeW91Ci13YW50IHRvIFtgYnJvd3NlcmlmeWBdKGh0dHBzOi8v
Z2l0aHViLmNvbS9zdWJzdGFjay9ub2RlLWJyb3dzZXJpZnkpIHlvdXIgbW9kdWxlIHVzaW5nCi1g
UmVhY3RgLgotCi0qKk5vdGU6KiogYnkgZGVmYXVsdCwgUmVhY3Qgd2lsbCBiZSBpbiBkZXZlbG9w
bWVudCBtb2RlLiBUaGUgZGV2ZWxvcG1lbnQgdmVyc2lvbiBpbmNsdWRlcyBleHRyYSB3YXJuaW5n
cyBhYm91dCBjb21tb24gbWlzdGFrZXMsIHdoZXJlYXMgdGhlIHByb2R1Y3Rpb24gdmVyc2lvbiBp
bmNsdWRlcyBleHRyYSBwZXJmb3JtYW5jZSBvcHRpbWl6YXRpb25zIGFuZCBzdHJpcHMgYWxsIGVy
cm9yIG1lc3NhZ2VzLgotCi1UbyB1c2UgUmVhY3QgaW4gcHJvZHVjdGlvbiBtb2RlLCBzZXQgdGhl
IGVudmlyb25tZW50IHZhcmlhYmxlIGBOT0RFX0VOVmAgdG8gYHByb2R1Y3Rpb25gLiBBIG1pbmlm
aWVyIHRoYXQgcGVyZm9ybXMgZGVhZC1jb2RlIGVsaW1pbmF0aW9uIHN1Y2ggYXMgW1VnbGlmeUpT
XShodHRwczovL2dpdGh1Yi5jb20vbWlzaG9vL1VnbGlmeUpTMikgaXMgcmVjb21tZW5kZWQgdG8g
Y29tcGxldGVseSByZW1vdmUgdGhlIGV4dHJhIGNvZGUgcHJlc2VudCBpbiBkZXZlbG9wbWVudCBt
b2RlLgotCi0jIyBFeGFtcGxlIFVzYWdlCi0KLWBgYGpzCi12YXIgUmVhY3QgPSByZXF1aXJlKCdy
ZWFjdCcpOwotYGBgCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jl
c291cmNlcy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMv
cmVhY3QvcGFja2FnZS5qc29uIGIvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJj
ZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qvbm9kZV9tb2R1bGVzL3JlYWN0
L3BhY2thZ2UuanNvbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTRkMTM0ZjI3NGY3
MTAzNTVkOTc2MDY0YmY3NWFlZTkwYzNiMWYyNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC9ub2RlX21vZHVsZXMvcmVhY3Qv
cGFja2FnZS5qc29uCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotewotICAibmFtZSI6
ICJyZWFjdCIsCi0gICJkZXNjcmlwdGlvbiI6ICJSZWFjdCBpcyBhIEphdmFTY3JpcHQgbGlicmFy
eSBmb3IgYnVpbGRpbmcgdXNlciBpbnRlcmZhY2VzLiIsCi0gICJ2ZXJzaW9uIjogIjE1LjUuNCIs
Ci0gICJrZXl3b3JkcyI6IFsKLSAgICAicmVhY3QiCi0gIF0sCi0gICJob21lcGFnZSI6ICJodHRw
czovL2ZhY2Vib29rLmdpdGh1Yi5pby9yZWFjdC8iLAotICAiYnVncyI6ICJodHRwczovL2dpdGh1
Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzIiwKLSAgImxpY2Vuc2UiOiAiQlNELTMtQ2xhdXNl
IiwKLSAgImZpbGVzIjogWwotICAgICJMSUNFTlNFIiwKLSAgICAiUEFURU5UUyIsCi0gICAgImFk
ZG9ucy5qcyIsCi0gICAgInJlYWN0LmpzIiwKLSAgICAiYWRkb25zLyIsCi0gICAgImRpc3QvIiwK
LSAgICAibGliLyIKLSAgXSwKLSAgIm1haW4iOiAicmVhY3QuanMiLAotICAicmVwb3NpdG9yeSI6
ICJmYWNlYm9vay9yZWFjdCIsCi0gICJlbmdpbmVzIjogewotICAgICJub2RlIjogIj49MC4xMC4w
IgotICB9LAotICAiZGVwZW5kZW5jaWVzIjogewotICAgICJmYmpzIjogIl4wLjguOSIsCi0gICAg
Imxvb3NlLWVudmlmeSI6ICJeMS4xLjAiLAotICAgICJvYmplY3QtYXNzaWduIjogIl40LjEuMCIs
Ci0gICAgInByb3AtdHlwZXMiOiAiXjE1LjUuNyIKLSAgfSwKLSAgImJyb3dzZXJpZnkiOiB7Ci0g
ICAgInRyYW5zZm9ybSI6IFsKLSAgICAgICJsb29zZS1lbnZpZnkiCi0gICAgXQotICB9Ci19Clwg
Tm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9T
cGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3Qv
bnBtLXNocmlua3dyYXAuanNvbiBiL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3Vy
Y2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L25wbS1zaHJpbmt3cmFwLmpz
b24KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyZWU3ODIwNzU5ZWFkYzY2ZGNjNGM4
NzI5YTlkOGExODdhNzQwYTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9h
cmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvbnBtLXNocmlua3dyYXAuanNvbgorKysgL2Rldi9u
dWxsCkBAIC0xLDEwNCArMCwwIEBACi17Ci0gICJkZXBlbmRlbmNpZXMiOiB7Ci0gICAgImFzYXAi
OiB7Ci0gICAgICAidmVyc2lvbiI6ICIyLjAuNSIsCi0gICAgICAiZnJvbSI6ICJhc2FwQD49Mi4w
LjMgPDIuMS4wIiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9hc2FwLy0vYXNhcC0yLjAuNS50Z3oiCi0gICAgfSwKLSAgICAiY2xhc3NuYW1lcyI6IHsKLSAg
ICAgICJ2ZXJzaW9uIjogIjIuMi41IiwKLSAgICAgICJmcm9tIjogImNsYXNzbmFtZXNAPj0yLjIu
NSA8My4wLjAiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2NsYXNzbmFtZXMvLS9jbGFzc25hbWVzLTIuMi41LnRneiIKLSAgICB9LAotICAgICJjb3JlLWpz
IjogewotICAgICAgInZlcnNpb24iOiAiMS4yLjciLAotICAgICAgImZyb20iOiAiY29yZS1qc0A+
PTEuMC4wIDwyLjAuMCIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvY29yZS1qcy8tL2NvcmUtanMtMS4yLjcudGd6IgotICAgIH0sCi0gICAgImRpcmVjdG9y
IjogewotICAgICAgInZlcnNpb24iOiAiMS4yLjgiLAotICAgICAgImZyb20iOiAiZGlyZWN0b3JA
Pj0xLjIuOCA8Mi4wLjAiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL2RpcmVjdG9yLy0vZGlyZWN0b3ItMS4yLjgudGd6IgotICAgIH0sCi0gICAgImVuY29k
aW5nIjogewotICAgICAgInZlcnNpb24iOiAiMC4xLjEyIiwKLSAgICAgICJmcm9tIjogImVuY29k
aW5nQD49MC4xLjExIDwwLjIuMCIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvZW5jb2RpbmcvLS9lbmNvZGluZy0wLjEuMTIudGd6IgotICAgIH0sCi0gICAg
ImZianMiOiB7Ci0gICAgICAidmVyc2lvbiI6ICIwLjguNiIsCi0gICAgICAiZnJvbSI6ICJmYmpz
QD49MC44LjQgPDAuOS4wIiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9mYmpzLy0vZmJqcy0wLjguNi50Z3oiCi0gICAgfSwKLSAgICAiaWNvbnYtbGl0ZSI6
IHsKLSAgICAgICJ2ZXJzaW9uIjogIjAuNC4xNSIsCi0gICAgICAiZnJvbSI6ICJpY29udi1saXRl
QD49MC40LjEzIDwwLjUuMCIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvaWNvbnYtbGl0ZS8tL2ljb252LWxpdGUtMC40LjE1LnRneiIKLSAgICB9LAotICAg
ICJpcy1zdHJlYW0iOiB7Ci0gICAgICAidmVyc2lvbiI6ICIxLjEuMCIsCi0gICAgICAiZnJvbSI6
ICJpcy1zdHJlYW1APj0xLjAuMSA8Mi4wLjAiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL2lzLXN0cmVhbS8tL2lzLXN0cmVhbS0xLjEuMC50Z3oiCi0gICAg
fSwKLSAgICAiaXNvbW9ycGhpYy1mZXRjaCI6IHsKLSAgICAgICJ2ZXJzaW9uIjogIjIuMi4xIiwK
LSAgICAgICJmcm9tIjogImlzb21vcnBoaWMtZmV0Y2hAPj0yLjEuMSA8My4wLjAiLAotICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzb21vcnBoaWMtZmV0Y2gv
LS9pc29tb3JwaGljLWZldGNoLTIuMi4xLnRneiIKLSAgICB9LAotICAgICJqcy10b2tlbnMiOiB7
Ci0gICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCi0gICAgICAiZnJvbSI6ICJqcy10b2tlbnNAPj0y
LjAuMCA8My4wLjAiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL2pzLXRva2Vucy8tL2pzLXRva2Vucy0yLjAuMC50Z3oiCi0gICAgfSwKLSAgICAibG9vc2Ut
ZW52aWZ5IjogewotICAgICAgInZlcnNpb24iOiAiMS4zLjAiLAotICAgICAgImZyb20iOiAibG9v
c2UtZW52aWZ5QD49MS4xLjAgPDIuMC4wIiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9sb29zZS1lbnZpZnkvLS9sb29zZS1lbnZpZnktMS4zLjAudGd6Igot
ICAgIH0sCi0gICAgIm5vZGUtZmV0Y2giOiB7Ci0gICAgICAidmVyc2lvbiI6ICIxLjYuMyIsCi0g
ICAgICAiZnJvbSI6ICJub2RlLWZldGNoQD49MS4wLjEgPDIuMC4wIiwKLSAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9ub2RlLWZldGNoLy0vbm9kZS1mZXRjaC0x
LjYuMy50Z3oiCi0gICAgfSwKLSAgICAib2JqZWN0LWFzc2lnbiI6IHsKLSAgICAgICJ2ZXJzaW9u
IjogIjQuMS4wIiwKLSAgICAgICJmcm9tIjogIm9iamVjdC1hc3NpZ25APj00LjEuMCA8NS4wLjAi
LAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL29iamVjdC1h
c3NpZ24vLS9vYmplY3QtYXNzaWduLTQuMS4wLnRneiIKLSAgICB9LAotICAgICJwcm9taXNlIjog
ewotICAgICAgInZlcnNpb24iOiAiNy4xLjEiLAotICAgICAgImZyb20iOiAicHJvbWlzZUA+PTcu
MS4xIDw4LjAuMCIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvcHJvbWlzZS8tL3Byb21pc2UtNy4xLjEudGd6IgotICAgIH0sCi0gICAgInJlYWN0Ijogewot
ICAgICAgInZlcnNpb24iOiAiMTUuNC4wIiwKLSAgICAgICJmcm9tIjogInJlYWN0QDE1LjQuMCIs
Ci0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVhY3QvLS9y
ZWFjdC0xNS40LjAudGd6IgotICAgIH0sCi0gICAgInJlYWN0LWRvbSI6IHsKLSAgICAgICJ2ZXJz
aW9uIjogIjE1LjQuMCIsCi0gICAgICAiZnJvbSI6ICJyZWFjdC1kb21AMTUuNC4wIiwKLSAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWFjdC1kb20vLS9yZWFj
dC1kb20tMTUuNC4wLnRneiIKLSAgICB9LAotICAgICJ0b2RvbXZjLWFwcC1jc3MiOiB7Ci0gICAg
ICAidmVyc2lvbiI6ICIyLjAuNiIsCi0gICAgICAiZnJvbSI6ICJ0b2RvbXZjLWFwcC1jc3NAPj0y
LjAuMCA8My4wLjAiLAotICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL3RvZG9tdmMtYXBwLWNzcy8tL3RvZG9tdmMtYXBwLWNzcy0yLjAuNi50Z3oiCi0gICAgfSwK
LSAgICAidG9kb212Yy1jb21tb24iOiB7Ci0gICAgICAidmVyc2lvbiI6ICIxLjAuMyIsCi0gICAg
ICAiZnJvbSI6ICJ0b2RvbXZjLWNvbW1vbkA+PTEuMC4yIDwyLjAuMCIsCi0gICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdG9kb212Yy1jb21tb24vLS90b2RvbXZj
LWNvbW1vbi0xLjAuMy50Z3oiCi0gICAgfSwKLSAgICAidWEtcGFyc2VyLWpzIjogewotICAgICAg
InZlcnNpb24iOiAiMC43LjEyIiwKLSAgICAgICJmcm9tIjogInVhLXBhcnNlci1qc0A+PTAuNy45
IDwwLjguMCIsCi0gICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
dWEtcGFyc2VyLWpzLy0vdWEtcGFyc2VyLWpzLTAuNy4xMi50Z3oiCi0gICAgfSwKLSAgICAid2hh
dHdnLWZldGNoIjogewotICAgICAgInZlcnNpb24iOiAiMi4wLjEiLAotICAgICAgImZyb20iOiAi
d2hhdHdnLWZldGNoQD49MC4xMC4wIiwKLSAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy93aGF0d2ctZmV0Y2gvLS93aGF0d2ctZmV0Y2gtMi4wLjEudGd6IgotICAg
IH0KLSAgfQotfQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNv
dXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVhY3QvcGFja2FnZS1sb2NrLmpz
b24gYi9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC9wYWNrYWdlLWxvY2suanNvbgpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOTMy
NzgxMzdlMTk2Mjc0ZjQ0OTY1M2RiZGMxZjVmNGZlYjZlNjFlCi0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1
cmUtZXhhbXBsZXMvcmVhY3QvcGFja2FnZS1sb2NrLmpzb24KQEAgLTAsMCArMSwyMzcyIEBACit7
CisgICJyZXF1aXJlcyI6IHRydWUsCisgICJsb2NrZmlsZVZlcnNpb24iOiAxLAorICAiZGVwZW5k
ZW5jaWVzIjogeworICAgICJhbGlnbi10ZXh0IjogeworICAgICAgInZlcnNpb24iOiAiMC4xLjQi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FsaWduLXRl
eHQvLS9hbGlnbi10ZXh0LTAuMS40LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtRE5r
S1ZoQ1Q4MTBLbVNWc0lyY0dsRFA2MFJjPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJy
ZXF1aXJlcyI6IHsKKyAgICAgICAgImtpbmQtb2YiOiAiMy4yLjIiLAorICAgICAgICAibG9uZ2Vz
dCI6ICIxLjAuMSIsCisgICAgICAgICJyZXBlYXQtc3RyaW5nIjogIjEuNi4xIgorICAgICAgfQor
ICAgIH0sCisgICAgImFuc2ktcmVnZXgiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjEuMSIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYW5zaS1yZWdleC8t
L2Fuc2ktcmVnZXgtMi4xLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS13N002dGU0
MkRZYmc1aWp3Um9ybjd5ZldWTjg9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAi
YW5zaS1zdHlsZXMiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjIuMSIsCisgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYW5zaS1zdHlsZXMvLS9hbnNpLXN0eWxl
cy0yLjIuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXRETGRNMWkyTk05MTRlUm1R
MmdrQlRQQjNiND0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJhbnltYXRjaCI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMy4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hbnltYXRjaC8tL2FueW1hdGNoLTEuMy4yLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTUxMi0wWE5heUM4bFRIUTJPSThhbGpOQ04zc1N4Nmhzci8xK3Js
Y0RBb3RYSlI3QzFvWlpIQ05zZnBiS3dNalJBM1VxYjV0RjFSYWUyb2xvVHI0eHBxK1dqQT09IiwK
KyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgIm1pY3JvbWF0Y2giOiAiMi4zLjExIiwKKyAgICAgICAgIm5vcm1h
bGl6ZS1wYXRoIjogIjIuMS4xIgorICAgICAgfQorICAgIH0sCisgICAgImFyci1kaWZmIjogewor
ICAgICAgInZlcnNpb24iOiAiMi4wLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2Fyci1kaWZmLy0vYXJyLWRpZmYtMi4wLjAudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1qenVDZjVWYWk5WnBhWDVLUWxhc1BPcmpWczg9IiwKKyAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgImFyci1mbGF0dGVuIjogIjEuMS4wIgorICAgICAgfQorICAgIH0sCisgICAgImFy
ci1mbGF0dGVuIjogeworICAgICAgInZlcnNpb24iOiAiMS4xLjAiLAorICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Fyci1mbGF0dGVuLy0vYXJyLWZsYXR0ZW4t
MS4xLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLUwzaEtWNVIvcDVvODFSN08w
MklHbndwRG1rcDZFOTgyWGh0YnV3U2UzTzRxT3RNTU10b2RpY0FTQTFDbnkyVSthQ1hjTnBtbCtt
NGRQc3ZzSjNqYXRnPT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0
cnVlCisgICAgfSwKKyAgICAiYXJyYXktdW5pcXVlIjogeworICAgICAgInZlcnNpb24iOiAiMC4y
LjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FycmF5
LXVuaXF1ZS8tL2FycmF5LXVuaXF1ZS0wLjIuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJz
aGExLW9kbDh5dnk4SmlYTWNQcmM2emFsREZpd0dsTT0iLAorICAgICAgImRldiI6IHRydWUsCisg
ICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwKKyAgICAiYXNhcCI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogIjIuMC42IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9hc2FwLy0vYXNhcC0yLjAuNi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTVR
TkhZUjErYVFsRElJdTlyK3ZMd3Z1R2JVWT0iCisgICAgfSwKKyAgICAiYXN5bmMtZWFjaCI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9hc3luYy1lYWNoLy0vYXN5bmMtZWFjaC0xLjAuMS50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLUdkT0dvZG50eHVmQnlGMDRpdTI4eFcwellDMD0iLAorICAg
ICAgImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwKKyAgICAiYmFi
ZWwtY2xpIjogeworICAgICAgInZlcnNpb24iOiAiNi4yNi4wIiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1jbGkvLS9iYWJlbC1jbGktNi4yNi4w
LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtVUNxMVNIVFgyNGl0QUxpSG9HT0R6Z1BR
QXZFPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
ImJhYmVsLWNvcmUiOiAiNi4yNi4wIiwKKyAgICAgICAgImJhYmVsLXBvbHlmaWxsIjogIjYuMjYu
MCIsCisgICAgICAgICJiYWJlbC1yZWdpc3RlciI6ICI2LjI2LjAiLAorICAgICAgICAiYmFiZWwt
cnVudGltZSI6ICI2LjI2LjAiLAorICAgICAgICAiY2hva2lkYXIiOiAiMS43LjAiLAorICAgICAg
ICAiY29tbWFuZGVyIjogIjIuMTEuMCIsCisgICAgICAgICJjb252ZXJ0LXNvdXJjZS1tYXAiOiAi
MS41LjAiLAorICAgICAgICAiZnMtcmVhZGRpci1yZWN1cnNpdmUiOiAiMS4wLjAiLAorICAgICAg
ICAiZ2xvYiI6ICI3LjEuMiIsCisgICAgICAgICJsb2Rhc2giOiAiNC4xNy40IiwKKyAgICAgICAg
Im91dHB1dC1maWxlLXN5bmMiOiAiMS4xLjIiLAorICAgICAgICAicGF0aC1pcy1hYnNvbHV0ZSI6
ICIxLjAuMSIsCisgICAgICAgICJzbGFzaCI6ICIxLjAuMCIsCisgICAgICAgICJzb3VyY2UtbWFw
IjogIjAuNS43IiwKKyAgICAgICAgInY4ZmxhZ3MiOiAiMi4xLjEiCisgICAgICB9CisgICAgfSwK
KyAgICAiYmFiZWwtY29kZS1mcmFtZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjYuMjYuMCIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtY29kZS1m
cmFtZS8tL2JhYmVsLWNvZGUtZnJhbWUtNi4yNi4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtWS8xRDk5d2VPN2ZPTlpSOXVQNDJtajlZeDBzPSIsCisgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImNoYWxrIjogIjEuMS4zIiwKKyAgICAgICAg
ImVzdXRpbHMiOiAiMi4wLjIiLAorICAgICAgICAianMtdG9rZW5zIjogIjMuMC4yIgorICAgICAg
fQorICAgIH0sCisgICAgImJhYmVsLWNvcmUiOiB7CisgICAgICAidmVyc2lvbiI6ICI2LjI2LjAi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVsLWNv
cmUvLS9iYWJlbC1jb3JlLTYuMjYuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXJ6
TDNpekdtL084Um5JZXcvWTJYVS9BNkM3Zz0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICJiYWJlbC1jb2RlLWZyYW1lIjogIjYuMjYuMCIsCisgICAg
ICAgICJiYWJlbC1nZW5lcmF0b3IiOiAiNi4yNi4wIiwKKyAgICAgICAgImJhYmVsLWhlbHBlcnMi
OiAiNi4yNC4xIiwKKyAgICAgICAgImJhYmVsLW1lc3NhZ2VzIjogIjYuMjMuMCIsCisgICAgICAg
ICJiYWJlbC1yZWdpc3RlciI6ICI2LjI2LjAiLAorICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2
LjI2LjAiLAorICAgICAgICAiYmFiZWwtdGVtcGxhdGUiOiAiNi4yNi4wIiwKKyAgICAgICAgImJh
YmVsLXRyYXZlcnNlIjogIjYuMjYuMCIsCisgICAgICAgICJiYWJlbC10eXBlcyI6ICI2LjI2LjAi
LAorICAgICAgICAiYmFieWxvbiI6ICI2LjE4LjAiLAorICAgICAgICAiY29udmVydC1zb3VyY2Ut
bWFwIjogIjEuNS4wIiwKKyAgICAgICAgImRlYnVnIjogIjIuNi44IiwKKyAgICAgICAgImpzb241
IjogIjAuNS4xIiwKKyAgICAgICAgImxvZGFzaCI6ICI0LjE3LjQiLAorICAgICAgICAibWluaW1h
dGNoIjogIjMuMC40IiwKKyAgICAgICAgInBhdGgtaXMtYWJzb2x1dGUiOiAiMS4wLjEiLAorICAg
ICAgICAicHJpdmF0ZSI6ICIwLjEuNyIsCisgICAgICAgICJzbGFzaCI6ICIxLjAuMCIsCisgICAg
ICAgICJzb3VyY2UtbWFwIjogIjAuNS43IgorICAgICAgfQorICAgIH0sCisgICAgImJhYmVsLWdl
bmVyYXRvciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjYuMjYuMCIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtZ2VuZXJhdG9yLy0vYmFiZWwtZ2Vu
ZXJhdG9yLTYuMjYuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXJCcmlBSEMzbjI0
OG9kTW1saE1GTjNUeURjVT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICJiYWJlbC1tZXNzYWdlcyI6ICI2LjIzLjAiLAorICAgICAgICAiYmFiZWwt
cnVudGltZSI6ICI2LjI2LjAiLAorICAgICAgICAiYmFiZWwtdHlwZXMiOiAiNi4yNi4wIiwKKyAg
ICAgICAgImRldGVjdC1pbmRlbnQiOiAiNC4wLjAiLAorICAgICAgICAianNlc2MiOiAiMS4zLjAi
LAorICAgICAgICAibG9kYXNoIjogIjQuMTcuNCIsCisgICAgICAgICJzb3VyY2UtbWFwIjogIjAu
NS43IiwKKyAgICAgICAgInRyaW0tcmlnaHQiOiAiMS4wLjEiCisgICAgICB9CisgICAgfSwKKyAg
ICAiYmFiZWwtaGVscGVyLWJ1aWxkZXItcmVhY3QtanN4IjogeworICAgICAgInZlcnNpb24iOiAi
Ni4yNi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9i
YWJlbC1oZWxwZXItYnVpbGRlci1yZWFjdC1qc3gvLS9iYWJlbC1oZWxwZXItYnVpbGRlci1yZWFj
dC1qc3gtNi4yNi4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtT2YrREU3ZGNpMlhj
Ny9IekhUZytEL0trQ0tBPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6
IHsKKyAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4yNi4wIiwKKyAgICAgICAgImJhYmVsLXR5
cGVzIjogIjYuMjYuMCIsCisgICAgICAgICJlc3V0aWxzIjogIjIuMC4yIgorICAgICAgfQorICAg
IH0sCisgICAgImJhYmVsLWhlbHBlcnMiOiB7CisgICAgICAidmVyc2lvbiI6ICI2LjI0LjEiLAor
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVsLWhlbHBl
cnMvLS9iYWJlbC1oZWxwZXJzLTYuMjQuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGEx
LU5ISGVuSzdEaU9YSVVPV1g1WW9tM2ZOMkFyST0iLAorICAgICAgImRldiI6IHRydWUsCisgICAg
ICAicmVxdWlyZXMiOiB7CisgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMjYuMCIsCisgICAg
ICAgICJiYWJlbC10ZW1wbGF0ZSI6ICI2LjI2LjAiCisgICAgICB9CisgICAgfSwKKyAgICAiYmFi
ZWwtbWVzc2FnZXMiOiB7CisgICAgICAidmVyc2lvbiI6ICI2LjIzLjAiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVsLW1lc3NhZ2VzLy0vYmFiZWwt
bWVzc2FnZXMtNi4yMy4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtODgzMGNEaFlB
MXNxS1ZIRzdGN2ZiR0x5WXc0PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4yNi4wIgorICAgICAgfQorICAgIH0s
CisgICAgImJhYmVsLXBsdWdpbi1zeW50YXgtanN4IjogeworICAgICAgInZlcnNpb24iOiAiNi4x
OC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJl
bC1wbHVnaW4tc3ludGF4LWpzeC8tL2JhYmVsLXBsdWdpbi1zeW50YXgtanN4LTYuMTguMC50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLUN2TXFtbTRUeW5vLzFRYWVZdGV3OVkwTmlVWT0i
LAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJiYWJlbC1wbHVnaW4tdHJhbnNmb3Jt
LXJlYWN0LWpzeCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjYuMjQuMSIsCisgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFiZWwtcGx1Z2luLXRyYW5zZm9ybS1y
ZWFjdC1qc3gvLS9iYWJlbC1wbHVnaW4tdHJhbnNmb3JtLXJlYWN0LWpzeC02LjI0LjEudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1oQW9Dam4zMFlOL0RvdEtmREEyUjlqZHVacU09IiwK
KyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYmFiZWwt
aGVscGVyLWJ1aWxkZXItcmVhY3QtanN4IjogIjYuMjYuMCIsCisgICAgICAgICJiYWJlbC1wbHVn
aW4tc3ludGF4LWpzeCI6ICI2LjE4LjAiLAorICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjI2
LjAiCisgICAgICB9CisgICAgfSwKKyAgICAiYmFiZWwtcGx1Z2luLXVnbGlmeSI6IHsKKyAgICAg
ICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9iYWJlbC1wbHVnaW4tdWdsaWZ5Ly0vYmFiZWwtcGx1Z2luLXVnbGlmeS0xLjAu
Mi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLTE3emFzVEt2dXRzTDgwZWFWbWJyamVD
Q1lROD0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICJ1Z2xpZnktanMiOiAiMi44LjI5IgorICAgICAgfQorICAgIH0sCisgICAgImJhYmVsLXBvbHlm
aWxsIjogeworICAgICAgInZlcnNpb24iOiAiNi4yNi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC1wb2x5ZmlsbC8tL2JhYmVsLXBvbHlmaWxs
LTYuMjYuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLU41azNxOFo5ZUpXWEN0eGlI
eWhNMldiUElWTT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMjYuMCIsCisgICAgICAgICJjb3JlLWpzIjogIjIu
NS4wIiwKKyAgICAgICAgInJlZ2VuZXJhdG9yLXJ1bnRpbWUiOiAiMC4xMC41IgorICAgICAgfSwK
KyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJjb3JlLWpzIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjIuNS4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvY29yZS1qcy8tL2NvcmUtanMtMi41LjAudGd6IiwKKyAgICAgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtVnB3RkNSaStaSWF6ZzNWU0FvcmdSbXR4Y0lZPSIsCisgICAgICAg
ICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInJlZ2VuZXJhdG9yLXJ1bnRpbWUi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4xMC41IiwKKyAgICAgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVnZW5lcmF0b3ItcnVudGltZS8tL3JlZ2Vu
ZXJhdG9yLXJ1bnRpbWUtMC4xMC41LnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGEx
LU0ydysvQklncmM3ZG9zbjZ0bnRhZVZXak5sZz0iLAorICAgICAgICAgICJkZXYiOiB0cnVlCisg
ICAgICAgIH0KKyAgICAgIH0KKyAgICB9LAorICAgICJiYWJlbC1yZWdpc3RlciI6IHsKKyAgICAg
ICJ2ZXJzaW9uIjogIjYuMjYuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvYmFiZWwtcmVnaXN0ZXIvLS9iYWJlbC1yZWdpc3Rlci02LjI2LjAudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1idEFoRno0dnkwaHRlc3RGeGdDYWhXOWtjSEU9IiwK
KyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYmFiZWwt
Y29yZSI6ICI2LjI2LjAiLAorICAgICAgICAiYmFiZWwtcnVudGltZSI6ICI2LjI2LjAiLAorICAg
ICAgICAiY29yZS1qcyI6ICIyLjUuMCIsCisgICAgICAgICJob21lLW9yLXRtcCI6ICIyLjAuMCIs
CisgICAgICAgICJsb2Rhc2giOiAiNC4xNy40IiwKKyAgICAgICAgIm1rZGlycCI6ICIwLjUuMSIs
CisgICAgICAgICJzb3VyY2UtbWFwLXN1cHBvcnQiOiAiMC40LjE2IgorICAgICAgfSwKKyAgICAg
ICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJjb3JlLWpzIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjIuNS4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvY29yZS1qcy8tL2NvcmUtanMtMi41LjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtVnB3RkNSaStaSWF6ZzNWU0FvcmdSbXR4Y0lZPSIsCisgICAgICAgICAgImRl
diI6IHRydWUKKyAgICAgICAgfQorICAgICAgfQorICAgIH0sCisgICAgImJhYmVsLXJ1bnRpbWUi
OiB7CisgICAgICAidmVyc2lvbiI6ICI2LjI2LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVsLXJ1bnRpbWUvLS9iYWJlbC1ydW50aW1lLTYuMjYu
MC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWxseHdXR2FPZ3JWZGUvNEUveU0zdkl0
V1IvND0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAg
ICJjb3JlLWpzIjogIjIuNS4wIiwKKyAgICAgICAgInJlZ2VuZXJhdG9yLXJ1bnRpbWUiOiAiMC4x
MS4wIgorICAgICAgfSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICJjb3JlLWpz
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuNS4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY29yZS1qcy8tL2NvcmUtanMtMi41LjAudGd6
IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtVnB3RkNSaStaSWF6ZzNWU0FvcmdSbXR4
Y0lZPSIsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfQorICAgICAgfQorICAgIH0s
CisgICAgImJhYmVsLXRlbXBsYXRlIjogeworICAgICAgInZlcnNpb24iOiAiNi4yNi4wIiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9iYWJlbC10ZW1wbGF0
ZS8tL2JhYmVsLXRlbXBsYXRlLTYuMjYuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGEx
LTNnUGkwV09Xc0duMGJkbi8rRklmc2FEalhnST0iLAorICAgICAgImRldiI6IHRydWUsCisgICAg
ICAicmVxdWlyZXMiOiB7CisgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMjYuMCIsCisgICAg
ICAgICJiYWJlbC10cmF2ZXJzZSI6ICI2LjI2LjAiLAorICAgICAgICAiYmFiZWwtdHlwZXMiOiAi
Ni4yNi4wIiwKKyAgICAgICAgImJhYnlsb24iOiAiNi4xOC4wIiwKKyAgICAgICAgImxvZGFzaCI6
ICI0LjE3LjQiCisgICAgICB9CisgICAgfSwKKyAgICAiYmFiZWwtdHJhdmVyc2UiOiB7CisgICAg
ICAidmVyc2lvbiI6ICI2LjI2LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2JhYmVsLXRyYXZlcnNlLy0vYmFiZWwtdHJhdmVyc2UtNi4yNi4wLnRneiIs
CisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtUnFuTDErM01Zc2psd0dUaTB0alE5QU5YWnU0PSIs
CisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImJhYmVs
LWNvZGUtZnJhbWUiOiAiNi4yNi4wIiwKKyAgICAgICAgImJhYmVsLW1lc3NhZ2VzIjogIjYuMjMu
MCIsCisgICAgICAgICJiYWJlbC1ydW50aW1lIjogIjYuMjYuMCIsCisgICAgICAgICJiYWJlbC10
eXBlcyI6ICI2LjI2LjAiLAorICAgICAgICAiYmFieWxvbiI6ICI2LjE4LjAiLAorICAgICAgICAi
ZGVidWciOiAiMi42LjgiLAorICAgICAgICAiZ2xvYmFscyI6ICI5LjE4LjAiLAorICAgICAgICAi
aW52YXJpYW50IjogIjIuMi4yIiwKKyAgICAgICAgImxvZGFzaCI6ICI0LjE3LjQiCisgICAgICB9
CisgICAgfSwKKyAgICAiYmFiZWwtdHlwZXMiOiB7CisgICAgICAidmVyc2lvbiI6ICI2LjI2LjAi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JhYmVsLXR5
cGVzLy0vYmFiZWwtdHlwZXMtNi4yNi4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
bzdCeitVcTBucmI2VmMxbElub3pRNEJqSkpjPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImJhYmVsLXJ1bnRpbWUiOiAiNi4yNi4wIiwKKyAgICAg
ICAgImVzdXRpbHMiOiAiMi4wLjIiLAorICAgICAgICAibG9kYXNoIjogIjQuMTcuNCIsCisgICAg
ICAgICJ0by1mYXN0LXByb3BlcnRpZXMiOiAiMS4wLjMiCisgICAgICB9CisgICAgfSwKKyAgICAi
YmFieWxvbiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjYuMTguMCIsCisgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFieWxvbi8tL2JhYnlsb24tNi4xOC4wLnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1xL1VFamZHSjJDbTNvS1Y3MURKejlkMjVU
UG5xNXJoQlZMMlE0ZkE1d2NDM2pjcmRuNytTc3NFeWJGSXh3QXZ2UCtZQ3NDWU5LdWdob0YzM0d4
Z3ljUT09IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiYmFsYW5jZWQtbWF0Y2gi
OiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmFsYW5jZWQtbWF0Y2gvLS9iYWxhbmNlZC1tYXRjaC0xLjAu
MC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLWliVFJtYXNyN2tuZUZrNmdLNG5PUmkx
eHQyYz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJiaW5hcnktZXh0ZW5zaW9u
cyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMTAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYmluYXJ5LWV4dGVuc2lvbnMvLS9iaW5hcnktZXh0ZW5z
aW9ucy0xLjEwLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1tdXVhYkY2SVk0cXRG
eDRXZjFrQXErSklOZEE9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjog
dHJ1ZQorICAgIH0sCisgICAgImJyYWNlLWV4cGFuc2lvbiI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjEuMS44IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9i
cmFjZS1leHBhbnNpb24vLS9icmFjZS1leHBhbnNpb24tMS4xLjgudGd6IiwKKyAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS13SHNoSEh5VkxzSDQ3OVVhZCs4TkhUbVFvcEk9IiwKKyAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYmFsYW5jZWQtbWF0Y2giOiAi
MS4wLjAiLAorICAgICAgICAiY29uY2F0LW1hcCI6ICIwLjAuMSIKKyAgICAgIH0KKyAgICB9LAor
ICAgICJicmFjZXMiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjguNSIsCisgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYnJhY2VzLy0vYnJhY2VzLTEuOC41LnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtdW5lV0xoTGYrV25XdDJjUjZSUzNONFY3OXFj
PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICJleHBhbmQtcmFuZ2UiOiAiMS44LjIiLAorICAgICAgICAi
cHJlc2VydmUiOiAiMC4yLjAiLAorICAgICAgICAicmVwZWF0LWVsZW1lbnQiOiAiMS4xLjIiCisg
ICAgICB9CisgICAgfSwKKyAgICAiY2FtZWxjYXNlIjogeworICAgICAgInZlcnNpb24iOiAiMS4y
LjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NhbWVs
Y2FzZS8tL2NhbWVsY2FzZS0xLjIuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLW03
VXdUUzRMVm1tTExIV0xDS1BxcWRxbGlqaz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAor
ICAgICJjZW50ZXItYWxpZ24iOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjEuMyIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY2VudGVyLWFsaWduLy0vY2Vu
dGVyLWFsaWduLTAuMS4zLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtcWcweVlwdHU2
WElnQkJITDFFWWNrSHZDdDYwPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgImFsaWduLXRleHQiOiAiMC4xLjQiLAorICAgICAgICAibGF6eS1jYWNo
ZSI6ICIxLjAuNCIKKyAgICAgIH0KKyAgICB9LAorICAgICJjaGFsayI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogIjEuMS4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9jaGFsay8tL2NoYWxrLTEuMS4zLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
cUJGY1ZlU25BdjVORlFxOU9IS0NLbjRKL0pnPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImFuc2ktc3R5bGVzIjogIjIuMi4xIiwKKyAgICAgICAg
ImVzY2FwZS1zdHJpbmctcmVnZXhwIjogIjEuMC41IiwKKyAgICAgICAgImhhcy1hbnNpIjogIjIu
MC4wIiwKKyAgICAgICAgInN0cmlwLWFuc2kiOiAiMy4wLjEiLAorICAgICAgICAic3VwcG9ydHMt
Y29sb3IiOiAiMi4wLjAiCisgICAgICB9CisgICAgfSwKKyAgICAiY2hva2lkYXIiOiB7CisgICAg
ICAidmVyc2lvbiI6ICIxLjcuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvY2hva2lkYXIvLS9jaG9raWRhci0xLjcuMC50Z3oiLAorICAgICAgImludGVn
cml0eSI6ICJzaGExLWVZNW9sM2dWSElCMnRMTmc1ZTNTak5vcnRHZz0iLAorICAgICAgImRldiI6
IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAg
ICAgICAiYW55bWF0Y2giOiAiMS4zLjIiLAorICAgICAgICAiYXN5bmMtZWFjaCI6ICIxLjAuMSIs
CisgICAgICAgICJmc2V2ZW50cyI6ICIxLjEuMiIsCisgICAgICAgICJnbG9iLXBhcmVudCI6ICIy
LjAuMCIsCisgICAgICAgICJpbmhlcml0cyI6ICIyLjAuMyIsCisgICAgICAgICJpcy1iaW5hcnkt
cGF0aCI6ICIxLjAuMSIsCisgICAgICAgICJpcy1nbG9iIjogIjIuMC4xIiwKKyAgICAgICAgInBh
dGgtaXMtYWJzb2x1dGUiOiAiMS4wLjEiLAorICAgICAgICAicmVhZGRpcnAiOiAiMi4xLjAiCisg
ICAgICB9CisgICAgfSwKKyAgICAiY2xhc3NuYW1lcyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIu
Mi41IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jbGFz
c25hbWVzLy0vY2xhc3NuYW1lcy0yLjIuNS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGEx
LSt6Z0IxRk5HZGtudk5nUEgxaG9DdlJLYjNtMD0iCisgICAgfSwKKyAgICAiY2xpdWkiOiB7Cisg
ICAgICAidmVyc2lvbiI6ICIyLjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvY2xpdWkvLS9jbGl1aS0yLjEuMC50Z3oiLAorICAgICAgImludGVncml0
eSI6ICJzaGExLVMwZFhZUCtBSmt4MkxEb1hHUU11a2NmK29ORT0iLAorICAgICAgImRldiI6IHRy
dWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJjZW50ZXItYWxpZ24iOiAiMC4xLjMi
LAorICAgICAgICAicmlnaHQtYWxpZ24iOiAiMC4xLjMiLAorICAgICAgICAid29yZHdyYXAiOiAi
MC4wLjIiCisgICAgICB9CisgICAgfSwKKyAgICAiY29tbWFuZGVyIjogeworICAgICAgInZlcnNp
b24iOiAiMi4xMS4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9jb21tYW5kZXIvLS9jb21tYW5kZXItMi4xMS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5
IjogInNoYTUxMi1iMDU1M3VZQTVZQUVHZ3lZSUdZUk96S1E3WDVSQXFlZGtmamlaeHdpMGtMMWcz
Yk9hQk5OWmZZa3p0L0NMMHVtZ0Q1d2M5SmVjMkZiQjk4Q2prTVJ2UT09IiwKKyAgICAgICJkZXYi
OiB0cnVlCisgICAgfSwKKyAgICAiY29uY2F0LW1hcCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAu
MC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jb25j
YXQtbWFwLy0vY29uY2F0LW1hcC0wLjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGEx
LTJLbHIxMy9XamZkNU9uTURhanVnMVVCZFIzcz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9
LAorICAgICJjb252ZXJ0LXNvdXJjZS1tYXAiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjUuMCIs
CisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY29udmVydC1z
b3VyY2UtbWFwLy0vY29udmVydC1zb3VyY2UtbWFwLTEuNS4wLnRneiIsCisgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtbXMxd2hSeHRYZjNaUFpLQzVlMzVTZ1AvUnJVPSIsCisgICAgICAiZGV2Ijog
dHJ1ZQorICAgIH0sCisgICAgImNvcmUtanMiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjIuNyIs
CisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvY29yZS1qcy8t
L2NvcmUtanMtMS4yLjcudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1aU0tVd1VaUjJ5
ajZrNzB0WC9LWU9rOEl4alk9IgorICAgIH0sCisgICAgImNvcmUtdXRpbC1pcyI6IHsKKyAgICAg
ICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9jb3JlLXV0aWwtaXMvLS9jb3JlLXV0aWwtaXMtMS4wLjIudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS10ZjFVSWdxaXZGcTFlcXR4UU1sQWRVVUR3YWM9IiwKKyAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgIH0sCisgICAgImRlYnVn
IjogeworICAgICAgInZlcnNpb24iOiAiMi42LjgiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL2RlYnVnLy0vZGVidWctMi42LjgudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS01ekZUSEtMdDRuMFlnaUpDZmFGNElkYVA5UHc9IiwKKyAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAibXMiOiAiMi4wLjAiCisg
ICAgICB9CisgICAgfSwKKyAgICAiZGVjYW1lbGl6ZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEu
Mi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9kZWNh
bWVsaXplLy0vZGVjYW1lbGl6ZS0xLjIuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGEx
LTlsTk5GUlNDYWJJRFV1ZSs0bTlRSDVvWkVwQT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9
LAorICAgICJkZXRlY3QtaW5kZW50IjogeworICAgICAgInZlcnNpb24iOiAiNC4wLjAiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2RldGVjdC1pbmRlbnQv
LS9kZXRlY3QtaW5kZW50LTQuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtOTIw
R1ExTE45RG9jdHM1aG5FN2pxVWRkNGdnPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJy
ZXF1aXJlcyI6IHsKKyAgICAgICAgInJlcGVhdGluZyI6ICIyLjAuMSIKKyAgICAgIH0KKyAgICB9
LAorICAgICJkaXJlY3RvciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMi44IiwKKyAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9kaXJlY3Rvci8tL2RpcmVjdG9y
LTEuMi44LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEteHRtMDNZa09tdjlUWlJnLzZj
eU9jNWxNOHRVPSIKKyAgICB9LAorICAgICJlbmNvZGluZyI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjAuMS4xMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
ZW5jb2RpbmcvLS9lbmNvZGluZy0wLjEuMTIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS1VNHRtOCs1aXpScTFIc01qZ3AwZmxJREhTK3M9IiwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgImljb252LWxpdGUiOiAiMC40LjE4IgorICAgICAgfQorICAgIH0sCisgICAgImVzY2Fw
ZS1zdHJpbmctcmVnZXhwIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjUiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2VzY2FwZS1zdHJpbmctcmVnZXhw
Ly0vZXNjYXBlLXN0cmluZy1yZWdleHAtMS4wLjUudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS1HMkhBVmlHUXFOLzJyanV5endJQXloTUxodFE9IiwKKyAgICAgICJkZXYiOiB0cnVlCisg
ICAgfSwKKyAgICAiZXN1dGlscyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMC4yIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lc3V0aWxzLy0vZXN1dGls
cy0yLjAuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUNyOVBIS3BieXg5Nm5Zck1i
ZXBQcXFCTHJKcz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJleHBhbmQtYnJh
Y2tldHMiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjEuNSIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXhwYW5kLWJyYWNrZXRzLy0vZXhwYW5kLWJyYWNr
ZXRzLTAuMS41LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtM3djb1RqUXFnSHpYTTZ4
YTl5UVI1WUhSRjNzPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRy
dWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJpcy1wb3NpeC1icmFja2V0IjogIjAu
MS4xIgorICAgICAgfQorICAgIH0sCisgICAgImV4cGFuZC1yYW5nZSI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogIjEuOC4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9leHBhbmQtcmFuZ2UvLS9leHBhbmQtcmFuZ2UtMS44LjIudGd6IiwKKyAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS1vcG52L1ROZjRuSWV1dWppVit4NVpFL0lVemM9IiwKKyAgICAgICJkZXYi
OiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAg
ICAgICAgImZpbGwtcmFuZ2UiOiAiMi4yLjMiCisgICAgICB9CisgICAgfSwKKyAgICAiZXh0Z2xv
YiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMy4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9leHRnbG9iLy0vZXh0Z2xvYi0wLjMuMi50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLUxoai9QUzlKcXlkbHpza0NQd0VkcW8yRFNhRT0iLAorICAg
ICAgImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAiaXMtZXh0Z2xvYiI6ICIxLjAuMCIKKyAgICAgIH0KKyAgICB9LAorICAg
ICJmYmpzIjogeworICAgICAgInZlcnNpb24iOiAiMC44LjE0IiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9mYmpzLy0vZmJqcy0wLjguMTQudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS0wZHZpdmlWTU5ha2VDZk1mbk5VS1FMS2c3Unc9IiwKKyAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImNvcmUtanMiOiAiMS4yLjciLAorICAgICAgICAi
aXNvbW9ycGhpYy1mZXRjaCI6ICIyLjIuMSIsCisgICAgICAgICJsb29zZS1lbnZpZnkiOiAiMS4z
LjEiLAorICAgICAgICAib2JqZWN0LWFzc2lnbiI6ICI0LjEuMSIsCisgICAgICAgICJwcm9taXNl
IjogIjcuMy4xIiwKKyAgICAgICAgInNldGltbWVkaWF0ZSI6ICIxLjAuNSIsCisgICAgICAgICJ1
YS1wYXJzZXItanMiOiAiMC43LjE0IgorICAgICAgfQorICAgIH0sCisgICAgImZpbGVuYW1lLXJl
Z2V4IjogeworICAgICAgInZlcnNpb24iOiAiMi4wLjEiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2ZpbGVuYW1lLXJlZ2V4Ly0vZmlsZW5hbWUtcmVnZXgt
Mi4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS13Y1M1dnVQZ2x5WGRzUWEzWEI0
d0grTHhpeVk9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZQor
ICAgIH0sCisgICAgImZpbGwtcmFuZ2UiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjIuMyIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZmlsbC1yYW5nZS8t
L2ZpbGwtcmFuZ2UtMi4yLjMudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1VTGQ5L1g1
R204ZEpKSENXTnBuK2VvU0ZweU09IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlv
bmFsIjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImlzLW51bWJlciI6ICIy
LjEuMCIsCisgICAgICAgICJpc29iamVjdCI6ICIyLjEuMCIsCisgICAgICAgICJyYW5kb21hdGlj
IjogIjEuMS43IiwKKyAgICAgICAgInJlcGVhdC1lbGVtZW50IjogIjEuMS4yIiwKKyAgICAgICAg
InJlcGVhdC1zdHJpbmciOiAiMS42LjEiCisgICAgICB9CisgICAgfSwKKyAgICAiZm9yLWluIjog
eworICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL2Zvci1pbi8tL2Zvci1pbi0xLjAuMi50Z3oiLAorICAgICAgImlu
dGVncml0eSI6ICJzaGExLWdRYU5LVnFCUXV3S3h5Ykc0aUFNTVB0dFhvQT0iLAorICAgICAgImRl
diI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgfSwKKyAgICAiZm9yLW93biI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMS41IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9mb3Itb3duLy0vZm9yLW93bi0wLjEuNS50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLVVtWEdnYVR5bE5xNzhYeVZDYloyT3FoRkVNND0iLAorICAgICAg
ImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAiZm9yLWluIjogIjEuMC4yIgorICAgICAgfQorICAgIH0sCisgICAgImZzLXJl
YWRkaXItcmVjdXJzaXZlIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2ZzLXJlYWRkaXItcmVjdXJzaXZl
Ly0vZnMtcmVhZGRpci1yZWN1cnNpdmUtMS4wLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAi
c2hhMS1qTkYwWEl0UGlpbkl5dXc1SkhhU0c2R1Y5V0E9IiwKKyAgICAgICJkZXYiOiB0cnVlCisg
ICAgfSwKKyAgICAiZnMucmVhbHBhdGgiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZnMucmVhbHBhdGgv
LS9mcy5yZWFscGF0aC0xLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUZRU3RK
U01WaktwQTIwb25oOHNCUVJtVTZrOD0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAg
ICJmc2V2ZW50cyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMS4yIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9mc2V2ZW50cy8tL2ZzZXZlbnRzLTEuMS4y
LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1TbjQ0RTV3UVc0YlRIWHZRbXZTSHdx
YnVpWHRkdUQ2UnJqbTJadFVFR2J5cmlnK25VSDN0L1FENE00L1pYVmlZNTU2VEJwUmdaa0hMRHgz
SnhQd3hpdz09IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwK
KyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgIm5hbiI6ICIyLjYuMiIsCisgICAgICAgICJu
b2RlLXByZS1neXAiOiAiMC42LjM2IgorICAgICAgfSwKKyAgICAgICJkZXBlbmRlbmNpZXMiOiB7
CisgICAgICAgICJhYmJyZXYiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjAiLAorICAg
ICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hYmJyZXYvLS9h
YmJyZXYtMS4xLjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtMEZWTUlsWmpi
aTlXNThMbHJSZy9oWlFvMkI4PSIsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
Im9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiYWp2IjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjQuMTEuOCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2Fqdi8tL2Fqdi00LjExLjgudGd6IiwKKyAgICAgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtZ3Yrd0t5bm1ZcTVUdmNJSzhWbEhjR2M1eFRZPSIsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICAgICAiY28iOiAiNC42LjAiLAorICAgICAgICAgICAgImpzb24tc3Rh
YmxlLXN0cmluZ2lmeSI6ICIxLjAuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJhbnNpLXJlZ2V4IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMS4xIiwKKyAgICAgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYW5zaS1yZWdleC8tL2Fu
c2ktcmVnZXgtMi4xLjEudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtdzdNNnRl
NDJEWWJnNWlqd1Jvcm43eWZXVk44PSIsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAg
fSwKKyAgICAgICAgImFwcm9iYSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMSIsCisg
ICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Fwcm9iYS8t
L2Fwcm9iYS0xLjEuMS50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1sZE5nRHdk
eENxRHBLWXh5YXRYczh1ckxxNnM9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJhcmUtd2UtdGhlcmUteWV0
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMS40IiwKKyAgICAgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYXJlLXdlLXRoZXJlLXlldC8tL2FyZS13ZS10
aGVyZS15ZXQtMS4xLjQudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtdTEzS09D
dTVUd1hoVVpRM1BSYjlPNkhLRVEwPSIsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAg
ICAiZGVsZWdhdGVzIjogIjEuMC4wIiwKKyAgICAgICAgICAgICJyZWFkYWJsZS1zdHJlYW0iOiAi
Mi4yLjkiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYXNuMSI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIwLjIuMyIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL2FzbjEvLS9hc24xLTAuMi4zLnRneiIsCisgICAgICAgICAgImlu
dGVncml0eSI6ICJzaGExLTJzaDRkeFBKbG1oSi9JR0FkMzYrbkIzZk80WT0iLAorICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAg
ICAgICAgImFzc2VydC1wbHVzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMi4wIiwKKyAg
ICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYXNzZXJ0LXBs
dXMvLS9hc3NlcnQtcGx1cy0wLjIuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hh
MS0xMDRiaCtldi9BMjRxdHR3SWZQK1NCQWFzalE9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwK
KyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJhc3luY2tp
dCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjQuMCIsCisgICAgICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FzeW5ja2l0Ly0vYXN5bmNraXQtMC40LjAu
dGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEteDU3WmYzODB5NDhyb2J5WGtMekRa
a2RMUzNrPSIsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjog
dHJ1ZQorICAgICAgICB9LAorICAgICAgICAiYXdzLXNpZ24yIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjAuNi4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvYXdzLXNpZ24yLy0vYXdzLXNpZ24yLTAuNi4wLnRneiIsCisgICAgICAgICAgImlu
dGVncml0eSI6ICJzaGExLUZEUXQwNDI4eVUwT1c0ZlhZODFqWVN3T2VVOD0iLAorICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAg
ICAgICAgImF3czQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS42LjAiLAorICAgICAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hd3M0Ly0vYXdzNC0xLjYu
MC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1nKzljcUdDeXN5NUtEZTdlNk1k
eHVkdFhSeDQ9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwi
OiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJiYWxhbmNlZC1tYXRjaCI6IHsKKyAgICAgICAg
ICAidmVyc2lvbiI6ICIwLjQuMiIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2JhbGFuY2VkLW1hdGNoLy0vYmFsYW5jZWQtbWF0Y2gtMC40LjIudGd6
IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEteXo4K1BITXR3UEFlNXd0QVB6QXVZZGR3
bURnPSIsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImJjcnlw
dC1wYmtkZiI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisgICAgICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JjcnlwdC1wYmtkZi8tL2Jjcnlw
dC1wYmtkZi0xLjAuMS50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1ZN3hkeTJF
ekc1SzhCZjFTaVZQRE5HS2diNDA9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAg
ICJ0d2VldG5hY2wiOiAiMC4xNC41IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAg
ImJsb2NrLXN0cmVhbSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjAuOSIsCisgICAgICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Jsb2NrLXN0cmVhbS8t
L2Jsb2NrLXN0cmVhbS0wLjAuOS50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1F
K3YrZDRvRElGeitBM1VVZ2V1MHN6QU1FbW89IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiaW5oZXJpdHMiOiAiMi4wLjMiCisg
ICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiYm9vbSI6IHsKKyAgICAgICAgICAidmVy
c2lvbiI6ICIyLjEwLjEiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9ib29tLy0vYm9vbS0yLjEwLjEudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtT2NpUmpPLzFlWitEK1VrcWhJOWlXdDBNZG04PSIsCisgICAgICAgICAgImRldiI6
IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImhvZWsiOiAiMi4x
Ni4zIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImJyYWNlLWV4cGFuc2lvbiI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuNyIsCisgICAgICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2JyYWNlLWV4cGFuc2lvbi8tL2JyYWNlLWV4cGFu
c2lvbi0xLjEuNy50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1Qdi9EeFE0QUJU
SDdjZzZ2K0E4SzZPOGp6MWs9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYmFsYW5jZWQtbWF0Y2giOiAiMC40LjIiLAorICAg
ICAgICAgICAgImNvbmNhdC1tYXAiOiAiMC4wLjEiCisgICAgICAgICAgfQorICAgICAgICB9LAor
ICAgICAgICAiYnVmZmVyLXNoaW1zIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwK
KyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYnVmZmVy
LXNoaW1zLy0vYnVmZmVyLXNoaW1zLTEuMC4wLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6
ICJzaGExLW1Yak9NWE9JeGttdGg1TUNqRFIzN3dSS2kxRT0iLAorICAgICAgICAgICJkZXYiOiB0
cnVlCisgICAgICAgIH0sCisgICAgICAgICJjYXNlbGVzcyI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIwLjEyLjAiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9jYXNlbGVzcy8tL2Nhc2VsZXNzLTAuMTIuMC50Z3oiLAorICAgICAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS1HMmdjSWYrRUF6eUNaVU1KQm9sQ0RSaHhVZHc9IiwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAg
ICAgICJjbyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI0LjYuMCIsCisgICAgICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NvLy0vY28tNC42LjAudGd6IiwK
KyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtYnFhOTg5aFRybFRNdU9SNytndnorUU1mc1lR
PSIsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQor
ICAgICAgICB9LAorICAgICAgICAiY29kZS1wb2ludC1hdCI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIxLjEuMCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL2NvZGUtcG9pbnQtYXQvLS9jb2RlLXBvaW50LWF0LTEuMS4wLnRneiIsCisgICAgICAg
ICAgImludGVncml0eSI6ICJzaGExLURRY0xUUVE2Vytvem92R2tEaTdiUFpwTXozYz0iLAorICAg
ICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJjb21iaW5lZC1zdHJlYW0i
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjUiLAorICAgICAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jb21iaW5lZC1zdHJlYW0vLS9jb21iaW5lZC1z
dHJlYW0tMS4wLjUudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtazROd3BYdEtV
ZDZpeDN3VjFjWDkrSlVXUUFrPSIsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAgICAgImRlbGF5ZWQtc3RyZWFtIjogIjEuMC4wIgorICAg
ICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImNvbmNhdC1tYXAiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMC4wLjEiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9jb25jYXQtbWFwLy0vY29uY2F0LW1hcC0wLjAuMS50Z3oiLAorICAgICAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS0yS2xyMTMvV2pmZDVPbk1EYWp1ZzFVQmRSM3M9IiwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiY29uc29sZS1jb250cm9s
LXN0cmluZ3MiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjAiLAorICAgICAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jb25zb2xlLWNvbnRyb2wtc3Ry
aW5ncy8tL2NvbnNvbGUtY29udHJvbC1zdHJpbmdzLTEuMS4wLnRneiIsCisgICAgICAgICAgImlu
dGVncml0eSI6ICJzaGExLVBYejBSazIyUkc2bVJMOUxPVkIvbUZFQWpvND0iLAorICAgICAgICAg
ICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJjb3JlLXV0aWwtaXMiOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jb3JlLXV0aWwtaXMvLS9jb3JlLXV0aWwtaXMtMS4wLjIudGd6
IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtdGYxVUlncWl2RnExZXF0eFFNbEFkVVVE
d2FjPSIsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImNyeXB0
aWxlcyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuNSIsCisgICAgICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NyeXB0aWxlcy8tL2NyeXB0aWxlcy0y
LjAuNS50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1POS9zM0dDQlI4SEdjZ0w2
S1I1OXlsbnFvN2c9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9u
YWwiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJib29tIjog
IjIuMTAuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJkYXNoZGFzaCI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIxLjE0LjEiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9kYXNoZGFzaC8tL2Rhc2hkYXNoLTEuMTQuMS50Z3oi
LAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1oVHo2RDN5K0wrMWQ0Z01tdU4xWUVEWDI0
dkE9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVl
LAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJhc3NlcnQtcGx1cyI6ICIx
LjAuMCIKKyAgICAgICAgICB9LAorICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAg
ICAgICAiYXNzZXJ0LXBsdXMiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwK
KyAgICAgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Fz
c2VydC1wbHVzLy0vYXNzZXJ0LXBsdXMtMS4wLjAudGd6IiwKKyAgICAgICAgICAgICAgImludGVn
cml0eSI6ICJzaGExLThTNFBQRjEzc0xITjJSUnBRdVRwYkI1TjFTVT0iLAorICAgICAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAg
ICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImRlYnVnIjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjIuNi44IiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvZGVidWcvLS9kZWJ1Zy0yLjYuOC50Z3oiLAorICAgICAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS01ekZUSEtMdDRuMFlnaUpDZmFGNElkYVA5UHc9IiwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICJy
ZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJtcyI6ICIyLjAuMCIKKyAgICAgICAgICB9CisgICAg
ICAgIH0sCisgICAgICAgICJkZWVwLWV4dGVuZCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIw
LjQuMiIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2RlZXAtZXh0ZW5kLy0vZGVlcC1leHRlbmQtMC40LjIudGd6IiwKKyAgICAgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtU0xhWnduNHpTL2lmRUlrcjVETDI1TWZUU244PSIsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAg
ICAiZGVsYXllZC1zdHJlYW0iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAg
ICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9kZWxheWVkLXN0
cmVhbS8tL2RlbGF5ZWQtc3RyZWFtLTEuMC4wLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6
ICJzaGExLTN6cmhtYXl0KzMxRUNxcmdzcDRpY3JKT3hoaz0iLAorICAgICAgICAgICJkZXYiOiB0
cnVlCisgICAgICAgIH0sCisgICAgICAgICJkZWxlZ2F0ZXMiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMS4wLjAiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9kZWxlZ2F0ZXMvLS9kZWxlZ2F0ZXMtMS4wLjAudGd6IiwKKyAgICAgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtaE1iaFdiZ1pCUDNLV2FEdlJNMkhEVEVsRDVvPSIsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAg
ICAgICAiZWNjLWpzYm4iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjEiLAorICAgICAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9lY2MtanNibi8tL2Vj
Yy1qc2JuLTAuMS4xLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLUQ4YzZudFh3
MVR3NEdUT1lVajczNVVOM2RRVT0iLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAg
ICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAg
ImpzYm4iOiAiMC4xLjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAiZXh0ZW5k
IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuMC4xIiwKKyAgICAgICAgICAicmVzb2x2ZWQi
OiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZXh0ZW5kLy0vZXh0ZW5kLTMuMC4xLnRneiIs
CisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLXAxWHFlOEd0L01XakhPZm5ZdHVxM0Y1alpF
UT0iLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUK
KyAgICAgICAgfSwKKyAgICAgICAgImV4dHNwcmludGYiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMS4wLjIiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9leHRzcHJpbnRmLy0vZXh0c3ByaW50Zi0xLjAuMi50Z3oiLAorICAgICAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS00UWdPQmxqakFMQmlsSmtNeHc0VkFpTmYxVkE9IiwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiZm9yZXZlci1hZ2VudCI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIwLjYuMSIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL2ZvcmV2ZXItYWdlbnQvLS9mb3JldmVyLWFnZW50LTAuNi4xLnRn
eiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLSs4Y2ZERUd0NnpmNWJGZDYwZTFDMlAy
c3lwRT0iLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRy
dWUKKyAgICAgICAgfSwKKyAgICAgICAgImZvcm0tZGF0YSI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIyLjEuNCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL2Zvcm0tZGF0YS8tL2Zvcm0tZGF0YS0yLjEuNC50Z3oiLAorICAgICAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS1NOEdEclBHVEoyN0txWUZEcHA2VXYrNFhVTkU9IiwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICJhc3luY2tpdCI6ICIwLjQuMCIsCisgICAgICAgICAgICAi
Y29tYmluZWQtc3RyZWFtIjogIjEuMC41IiwKKyAgICAgICAgICAgICJtaW1lLXR5cGVzIjogIjIu
MS4xNSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJmcy5yZWFscGF0aCI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2ZzLnJlYWxwYXRoLy0vZnMucmVhbHBhdGgtMS4wLjAu
dGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtRlFTdEpTTVZqS3BBMjBvbmg4c0JR
Um1VNms4PSIsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgImZz
dHJlYW0iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjExIiwKKyAgICAgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZnN0cmVhbS8tL2ZzdHJlYW0tMS4w
LjExLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLVhCK3g4UmRIY1JUd1l5b090
TGNiUExEOU1YRT0iLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgICAgICJncmFjZWZ1bC1mcyI6ICI0LjEuMTEiLAorICAgICAgICAgICAg
ImluaGVyaXRzIjogIjIuMC4zIiwKKyAgICAgICAgICAgICJta2RpcnAiOiAiMC41LjEiLAorICAg
ICAgICAgICAgInJpbXJhZiI6ICIyLjYuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAg
ICAgICJmc3RyZWFtLWlnbm9yZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuNSIsCisg
ICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2ZzdHJlYW0t
aWdub3JlLy0vZnN0cmVhbS1pZ25vcmUtMS4wLjUudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtbkRIYTQwZG5BWS9oMGtteVRhMm1mUWt0b1FVPSIsCisgICAgICAgICAgImRldiI6
IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICAgICAiZnN0cmVhbSI6ICIxLjAuMTEiLAorICAgICAgICAgICAgImluaGVy
aXRzIjogIjIuMC4zIiwKKyAgICAgICAgICAgICJtaW5pbWF0Y2giOiAiMy4wLjQiCisgICAgICAg
ICAgfQorICAgICAgICB9LAorICAgICAgICAiZ2F1Z2UiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMi43LjQiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9nYXVnZS8tL2dhdWdlLTIuNy40LnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJz
aGExLUxBTkFYSFU0dzUxK3Mzc3hjQ0xqSmZzQmkvYz0iLAorICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAgICAgImFwcm9iYSI6ICIxLjEuMSIsCisgICAgICAgICAgICAiY29uc29sZS1jb250
cm9sLXN0cmluZ3MiOiAiMS4xLjAiLAorICAgICAgICAgICAgImhhcy11bmljb2RlIjogIjIuMC4x
IiwKKyAgICAgICAgICAgICJvYmplY3QtYXNzaWduIjogIjQuMS4xIiwKKyAgICAgICAgICAgICJz
aWduYWwtZXhpdCI6ICIzLjAuMiIsCisgICAgICAgICAgICAic3RyaW5nLXdpZHRoIjogIjEuMC4y
IiwKKyAgICAgICAgICAgICJzdHJpcC1hbnNpIjogIjMuMC4xIiwKKyAgICAgICAgICAgICJ3aWRl
LWFsaWduIjogIjEuMS4yIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImdldHBh
c3MiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4xLjciLAorICAgICAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9nZXRwYXNzLy0vZ2V0cGFzcy0wLjEuNy50
Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1YditPUG1oTlZwcmt5eXNTZ21CT2k2
WWhTZm89IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0
cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJhc3NlcnQtcGx1cyI6
ICIxLjAuMCIKKyAgICAgICAgICB9LAorICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAg
ICAgICAgICAiYXNzZXJ0LXBsdXMiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4w
IiwKKyAgICAgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L2Fzc2VydC1wbHVzLy0vYXNzZXJ0LXBsdXMtMS4wLjAudGd6IiwKKyAgICAgICAgICAgICAgImlu
dGVncml0eSI6ICJzaGExLThTNFBQRjEzc0xITjJSUnBRdVRwYkI1TjFTVT0iLAorICAgICAgICAg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAg
ICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImdsb2IiOiB7CisgICAg
ICAgICAgInZlcnNpb24iOiAiNy4xLjIiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9nbG9iLy0vZ2xvYi03LjEuMi50Z3oiLAorICAgICAgICAgICJp
bnRlZ3JpdHkiOiAic2hhNTEyLU1KVFVnMWtqdUxlUUNKK2NjRTRWcGE2a0tWWGtQWUoybU9DUXlV
dUtMY0xRc2RyTUNwQlBVaThxVkU2K1l1YUprb3plQTlOdXNUQXczaExyOFhlNUVRPT0iLAorICAg
ICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAg
ICJmcy5yZWFscGF0aCI6ICIxLjAuMCIsCisgICAgICAgICAgICAiaW5mbGlnaHQiOiAiMS4wLjYi
LAorICAgICAgICAgICAgImluaGVyaXRzIjogIjIuMC4zIiwKKyAgICAgICAgICAgICJtaW5pbWF0
Y2giOiAiMy4wLjQiLAorICAgICAgICAgICAgIm9uY2UiOiAiMS40LjAiLAorICAgICAgICAgICAg
InBhdGgtaXMtYWJzb2x1dGUiOiAiMS4wLjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAg
ICAgICAiZ3JhY2VmdWwtZnMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNC4xLjExIiwKKyAg
ICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZ3JhY2VmdWwt
ZnMvLS9ncmFjZWZ1bC1mcy00LjEuMTEudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtRG92ZjVOSGR1SVZOWk9CT3A4QU9LZ0p1VmxnPSIsCisgICAgICAgICAgImRldiI6IHRydWUK
KyAgICAgICAgfSwKKyAgICAgICAgImhhci1zY2hlbWEiOiB7CisgICAgICAgICAgInZlcnNpb24i
OiAiMS4wLjUiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9oYXItc2NoZW1hLy0vaGFyLXNjaGVtYS0xLjAuNS50Z3oiLAorICAgICAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS0wbU1UWDBNd2ZBTEdBcS9JL3BXWERBRlJOcDQ9IiwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAg
ICAgICJoYXItdmFsaWRhdG9yIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjQuMi4xIiwKKyAg
ICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaGFyLXZhbGlk
YXRvci8tL2hhci12YWxpZGF0b3ItNC4yLjEudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtTTBnZER4dS85Z0RkSUQxMWdTcHFYN29BTGlvPSIsCisgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7
CisgICAgICAgICAgICAiYWp2IjogIjQuMTEuOCIsCisgICAgICAgICAgICAiaGFyLXNjaGVtYSI6
ICIxLjAuNSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJoYXMtdW5pY29kZSI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjAuMSIsCisgICAgICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2hhcy11bmljb2RlLy0vaGFzLXVuaWNvZGUtMi4w
LjEudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtNE9iK2FpalBVUk9JVmVDRzBX
a2VkeDNpcUxrPSIsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFs
IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAiaGF3ayI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIzLjEuMyIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL2hhd2svLS9oYXdrLTMuMS4zLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJz
aGExLUI0UkV2WHdXUUxEK1ZBMHNtM1BWbG5qbzRjUT0iLAorICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAgICAgImJvb20iOiAiMi4xMC4xIiwKKyAgICAgICAgICAgICJjcnlwdGlsZXMiOiAi
Mi4wLjUiLAorICAgICAgICAgICAgImhvZWsiOiAiMi4xNi4zIiwKKyAgICAgICAgICAgICJzbnRw
IjogIjEuMC45IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImhvZWsiOiB7Cisg
ICAgICAgICAgInZlcnNpb24iOiAiMi4xNi4zIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaG9lay8tL2hvZWstMi4xNi4zLnRneiIsCisgICAgICAg
ICAgImludGVncml0eSI6ICJzaGExLUlMdDBBOVBPbzVqcEhjUnhDby94dUNkS0plMD0iLAorICAg
ICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJodHRwLXNpZ25hdHVyZSI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjEuMSIsCisgICAgICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2h0dHAtc2lnbmF0dXJlLy0vaHR0cC1zaWduYXR1
cmUtMS4xLjEudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtMzNMaVp3WnMwS3hu
KzNhdCtPRTBxUHZQa2I4PSIsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9w
dGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYXNz
ZXJ0LXBsdXMiOiAiMC4yLjAiLAorICAgICAgICAgICAgImpzcHJpbSI6ICIxLjQuMCIsCisgICAg
ICAgICAgICAic3NocGsiOiAiMS4xMy4wIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAg
ICAgImluZmxpZ2h0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC42IiwKKyAgICAgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaW5mbGlnaHQvLS9pbmZs
aWdodC0xLjAuNi50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1TYjFqTWRmUUxR
d0p2SkVLRUhXNmdXVzFiZms9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICAgICAib25jZSI6ICIxLjQuMCIsCisgICAgICAgICAgICAi
d3JhcHB5IjogIjEuMC4yIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImluaGVy
aXRzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMC4zIiwKKyAgICAgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaW5oZXJpdHMvLS9pbmhlcml0cy0yLjAu
My50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1ZendzZytQYVFxVUM5U1JtQWlT
QTlDQ0NZZDQ9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAi
aW5pIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMy40IiwKKyAgICAgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaW5pLy0vaW5pLTEuMy40LnRneiIsCisg
ICAgICAgICAgImludGVncml0eSI6ICJzaGExLUJUZkxlZHIxbTFtaHBSZmY5d2JJYnNBNUZpND0i
LAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAg
ICAgICAgfSwKKyAgICAgICAgImlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50IjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQvLS9pcy1mdWxsd2lkdGgtY29k
ZS1wb2ludC0xLjAuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS03NTR4T0c4
REduOE5aRHI0TDk1UXhGZnZBTXM9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAibnVtYmVyLWlzLW5hbiI6ICIxLjAuMSIKKyAg
ICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJpcy10eXBlZGFycmF5IjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvaXMtdHlwZWRhcnJheS8tL2lzLXR5cGVkYXJyYXktMS4wLjAudGd6
IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtNUhuSUNGamZEQnNSM2RwcFFQbGdFZnph
U3BvPSIsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1
ZQorICAgICAgICB9LAorICAgICAgICAiaXNhcnJheSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6
ICIxLjAuMCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL2lzYXJyYXkvLS9pc2FycmF5LTEuMC4wLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6
ICJzaGExLXU1TmRTRmdzdWhhTUJvTkpWNlZLUGdjU1R4RT0iLAorICAgICAgICAgICJkZXYiOiB0
cnVlCisgICAgICAgIH0sCisgICAgICAgICJpc3N0cmVhbSI6IHsKKyAgICAgICAgICAidmVyc2lv
biI6ICIwLjEuMiIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBt
anMub3JnL2lzc3RyZWFtLy0vaXNzdHJlYW0tMC4xLjIudGd6IiwKKyAgICAgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtUitZL2V2VmErbStTNFZBT2FRNjR1RktjQ1pvPSIsCisgICAgICAgICAgImRl
diI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAg
ICAiam9kaWQyNTUxOSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2pvZGlkMjU1MTkvLS9q
b2RpZDI1NTE5LTEuMC4yLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLUJ0U1JJ
bFVKTkJsSGZVSldNMkJ1RHBCNEtXYz0iLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
ICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAg
ICAgImpzYm4iOiAiMC4xLjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAianNi
biI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjEuMSIsCisgICAgICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2pzYm4vLS9qc2JuLTAuMS4xLnRneiIsCisg
ICAgICAgICAgImludGVncml0eSI6ICJzaGExLXBlWlV3dVdpM3JYeUFkbHM3N3lvREE3eTlSTT0i
LAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAg
ICAgICAgfSwKKyAgICAgICAgImpzb24tc2NoZW1hIjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjAuMi4zIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvanNvbi1zY2hlbWEvLS9qc29uLXNjaGVtYS0wLjIuMy50Z3oiLAorICAgICAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS10SURJa3VXYUx3V1ZUT2NudlQ4cVRvZ3ZuaE09IiwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAg
ICAgICJqc29uLXN0YWJsZS1zdHJpbmdpZnkiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4w
LjEiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9q
c29uLXN0YWJsZS1zdHJpbmdpZnkvLS9qc29uLXN0YWJsZS1zdHJpbmdpZnktMS4wLjEudGd6IiwK
KyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtbW5XZE9jWHkvMUEvMVRBR1J1MUVYNGpFK2E4
PSIsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwK
KyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAianNvbmlmeSI6ICIwLjAuMCIK
KyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJqc29uLXN0cmluZ2lmeS1zYWZlIjog
eworICAgICAgICAgICJ2ZXJzaW9uIjogIjUuMC4xIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvanNvbi1zdHJpbmdpZnktc2FmZS8tL2pzb24tc3Ry
aW5naWZ5LXNhZmUtNS4wLjEudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtRXBh
aTFZL1VYeG1nOXM0QjFsY0I0c2MxdHVzPSIsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAg
ICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAianNvbmlmeSI6IHsK
KyAgICAgICAgICAidmVyc2lvbiI6ICIwLjAuMCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2pzb25pZnkvLS9qc29uaWZ5LTAuMC4wLnRneiIsCisg
ICAgICAgICAgImludGVncml0eSI6ICJzaGExLUxIUzI3a0haUEtVYmUxcXU2UFVEWXgwbEtuTT0i
LAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAg
ICAgICAgfSwKKyAgICAgICAgImpzcHJpbSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjQu
MCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2pz
cHJpbS8tL2pzcHJpbS0xLjQuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1v
N2grUUNtTmpEZ0ZVdGpNZGlpZ3U1V2lLUmc9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgICAgICJhc3NlcnQtcGx1cyI6ICIxLjAuMCIsCisgICAgICAgICAgICAiZXh0c3ByaW50ZiI6
ICIxLjAuMiIsCisgICAgICAgICAgICAianNvbi1zY2hlbWEiOiAiMC4yLjMiLAorICAgICAgICAg
ICAgInZlcnJvciI6ICIxLjMuNiIKKyAgICAgICAgICB9LAorICAgICAgICAgICJkZXBlbmRlbmNp
ZXMiOiB7CisgICAgICAgICAgICAiYXNzZXJ0LXBsdXMiOiB7CisgICAgICAgICAgICAgICJ2ZXJz
aW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2Fzc2VydC1wbHVzLy0vYXNzZXJ0LXBsdXMtMS4wLjAudGd6IiwKKyAgICAg
ICAgICAgICAgImludGVncml0eSI6ICJzaGExLThTNFBQRjEzc0xITjJSUnBRdVRwYkI1TjFTVT0i
LAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAgICAgIm9wdGlvbmFsIjog
dHJ1ZQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgIm1p
bWUtZGIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4yNy4wIiwKKyAgICAgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbWltZS1kYi8tL21pbWUtZGItMS4y
Ny4wLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLWdnOVhJcGE3MGc3Q1h0VmVX
MTNvYWVWRGJyRT0iLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAg
ICJtaW1lLXR5cGVzIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjIuMS4xNSIsCisgICAgICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL21pbWUtdHlwZXMvLS9t
aW1lLXR5cGVzLTIuMS4xNS50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1wT3Yx
QmtDVVZwSTN1TTl3QkdkMjBKL0pLdTA9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAibWltZS1kYiI6ICIxLjI3LjAiCisgICAg
ICAgICAgfQorICAgICAgICB9LAorICAgICAgICAibWluaW1hdGNoIjogeworICAgICAgICAgICJ2
ZXJzaW9uIjogIjMuMC40IiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3Ry
eS5ucG1qcy5vcmcvbWluaW1hdGNoLy0vbWluaW1hdGNoLTMuMC40LnRneiIsCisgICAgICAgICAg
ImludGVncml0eSI6ICJzaGE1MTIteUpIVlFFaHlxUExVVGd0OUI4M1BYdTZXM3J4NE12dkh2U1V2
VG9vZ3B3b0dET1VRK3lEclIwSFJvdCt5T0NkQ083dTRoWDNwV2Z0NmtXQkJjcWgwVUE9PSIsCisg
ICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAg
ICAgImJyYWNlLWV4cGFuc2lvbiI6ICIxLjEuNyIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisg
ICAgICAgICJtaW5pbWlzdCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjAuOCIsCisgICAg
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL21pbmltaXN0Ly0v
bWluaW1pc3QtMC4wLjgudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtaFgvS3Y4
TTVmU1lsdUNLQ1l1aHFwNkFSc0YwPSIsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAg
fSwKKyAgICAgICAgIm1rZGlycCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjUuMSIsCisg
ICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL21rZGlycC8t
L21rZGlycC0wLjUuMS50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1NQVYwT09y
R3ozK01SMmZ6aGtqV2FYMTF5UU09IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAibWluaW1pc3QiOiAiMC4wLjgiCisgICAgICAg
ICAgfQorICAgICAgICB9LAorICAgICAgICAibXMiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
Mi4wLjAiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9y
Zy9tcy8tL21zLTIuMC4wLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLVZnaXVy
ZndBdm13cEFkOWZtR0Y0amVEVmw4Zz0iLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
ICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgIm5vZGUtcHJlLWd5cCI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjYuMzYiLAorICAgICAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9ub2RlLXByZS1neXAvLS9ub2RlLXByZS1neXAt
MC42LjM2LnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLTIyQkJFc3QwNE5SM1ZV
NmJVRnNYcTkzNnQ0WT0iLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRp
b25hbCI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgIm1rZGly
cCI6ICIwLjUuMSIsCisgICAgICAgICAgICAibm9wdCI6ICI0LjAuMSIsCisgICAgICAgICAgICAi
bnBtbG9nIjogIjQuMS4wIiwKKyAgICAgICAgICAgICJyYyI6ICIxLjIuMSIsCisgICAgICAgICAg
ICAicmVxdWVzdCI6ICIyLjgxLjAiLAorICAgICAgICAgICAgInJpbXJhZiI6ICIyLjYuMSIsCisg
ICAgICAgICAgICAic2VtdmVyIjogIjUuMy4wIiwKKyAgICAgICAgICAgICJ0YXIiOiAiMi4yLjEi
LAorICAgICAgICAgICAgInRhci1wYWNrIjogIjMuNC4wIgorICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgIm5vcHQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNC4wLjEiLAorICAg
ICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9ub3B0Ly0vbm9w
dC00LjAuMS50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0wTlJvV3YxVUZSazhq
SFVGWUMwTkY4MWtSMDA9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0
aW9uYWwiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJhYmJy
ZXYiOiAiMS4xLjAiLAorICAgICAgICAgICAgIm9zZW52IjogIjAuMS40IgorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgIm5wbWxvZyI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICI0
LjEuMCIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L25wbWxvZy8tL25wbWxvZy00LjEuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hh
NTEyLW9jb2xJa1pZWnQ4VXZldWlEUzB5QWtrSWppZDFvN2xQRzhjWW0wNXlOWXpCbjh5a1F0YWlQ
TUVHcDhmWTl0S2REZ204b2twZEt6a3Z1MXk5aFVZdWdBPT0iLAorICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAgICAgImFyZS13ZS10aGVyZS15ZXQiOiAiMS4xLjQiLAorICAgICAgICAgICAg
ImNvbnNvbGUtY29udHJvbC1zdHJpbmdzIjogIjEuMS4wIiwKKyAgICAgICAgICAgICJnYXVnZSI6
ICIyLjcuNCIsCisgICAgICAgICAgICAic2V0LWJsb2NraW5nIjogIjIuMC4wIgorICAgICAgICAg
IH0KKyAgICAgICAgfSwKKyAgICAgICAgIm51bWJlci1pcy1uYW4iOiB7CisgICAgICAgICAgInZl
cnNpb24iOiAiMS4wLjEiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy9udW1iZXItaXMtbmFuLy0vbnVtYmVyLWlzLW5hbi0xLjAuMS50Z3oiLAorICAg
ICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1DWHRnSzFOQ0tsSXNHdnVIa0RHRE5wUWFBUjA9IiwK
KyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAib2F1dGgtc2lnbiI6
IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjguMiIsCisgICAgICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL29hdXRoLXNpZ24vLS9vYXV0aC1zaWduLTAuOC4y
LnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLVJxYXJmd3JxMk42dW5zQldWNEMz
MU8vcm5VTT0iLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6
IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgIm9iamVjdC1hc3NpZ24iOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiNC4xLjEiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9vYmplY3QtYXNzaWduLy0vb2JqZWN0LWFzc2lnbi00LjEuMS50Z3oiLAor
ICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1JUW10eDVaWWg4L0FYTHZVUXNySXY3czJDR009
IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisg
ICAgICAgIH0sCisgICAgICAgICJvbmNlIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuNC4w
IiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvb25j
ZS8tL29uY2UtMS40LjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtV0RzYXAz
V1dIVXNST3NGOW5GQzY3NTNYYTlFPSIsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgIndyYXBweSI6ICIxLjAuMiIKKyAgICAgICAg
ICB9CisgICAgICAgIH0sCisgICAgICAgICJvcy1ob21lZGlyIjogeworICAgICAgICAgICJ2ZXJz
aW9uIjogIjEuMC4yIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvb3MtaG9tZWRpci8tL29zLWhvbWVkaXItMS4wLjIudGd6IiwKKyAgICAgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtLzd4SmlETnVEb005NE1Gb3grOFZJU0dxZjdNPSIsCisgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAor
ICAgICAgICAib3MtdG1wZGlyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAg
ICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvb3MtdG1wZGly
Ly0vb3MtdG1wZGlyLTEuMC4yLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLXUr
WjBCc2VhcUZ4Yy9zZG0vbGMwVlYzNkVuUT0iLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAg
ICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgIm9zZW52Ijogewor
ICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMS40IiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvb3NlbnYvLS9vc2Vudi0wLjEuNC50Z3oiLAorICAgICAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS1RdjV0V1ZQZkJzZ0dTK2J4ZHNQUVdxcWpSa1E9IiwKKyAg
ICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJvcy1ob21lZGlyIjogIjEuMC4yIiwKKyAg
ICAgICAgICAgICJvcy10bXBkaXIiOiAiMS4wLjIiCisgICAgICAgICAgfQorICAgICAgICB9LAor
ICAgICAgICAicGF0aC1pcy1hYnNvbHV0ZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjAu
MSIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Bh
dGgtaXMtYWJzb2x1dGUvLS9wYXRoLWlzLWFic29sdXRlLTEuMC4xLnRneiIsCisgICAgICAgICAg
ImludGVncml0eSI6ICJzaGExLUYwdVNhSE5WTlArOGVzNXI5VHBhbmh0Y1gxOD0iLAorICAgICAg
ICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJwZXJmb3JtYW5jZS1ub3ciOiB7
CisgICAgICAgICAgInZlcnNpb24iOiAiMC4yLjAiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wZXJmb3JtYW5jZS1ub3cvLS9wZXJmb3JtYW5jZS1u
b3ctMC4yLjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtTSs4d3hjZDlUcUlj
V2xPR25aRzFiWThsVmVVPSIsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9w
dGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAicHJvY2Vzcy1uZXh0aWNrLWFyZ3Mi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjciLAorICAgICAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wcm9jZXNzLW5leHRpY2stYXJncy8tL3Byb2Nl
c3MtbmV4dGljay1hcmdzLTEuMC43LnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGEx
LUZRNGd0MVpaQ3RQNUVKUHlXazhxMkwvekM2TT0iLAorICAgICAgICAgICJkZXYiOiB0cnVlCisg
ICAgICAgIH0sCisgICAgICAgICJwdW55Y29kZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIx
LjQuMSIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L3B1bnljb2RlLy0vcHVueWNvZGUtMS40LjEudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtd05XbU95Y1lnQXJZNGVzUHBTYWNoTjFCaEY0PSIsCisgICAgICAgICAgImRldiI6IHRy
dWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAicXMi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNi40LjAiLAorICAgICAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9xcy8tL3FzLTYuNC4wLnRneiIsCisgICAgICAg
ICAgImludGVncml0eSI6ICJzaGExLUUrSnRLSzFyRC9xcEV4TE5PL2NJN1RVZWNqTT0iLAorICAg
ICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICAgICAg
fSwKKyAgICAgICAgInJjIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMi4xIiwKKyAgICAg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmMvLS9yYy0xLjIu
MS50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1MZ1BvNUM3a1VMakxQYzVsdmh2
NGwwNGQvWlU9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwi
OiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJkZWVwLWV4dGVu
ZCI6ICIwLjQuMiIsCisgICAgICAgICAgICAiaW5pIjogIjEuMy40IiwKKyAgICAgICAgICAgICJt
aW5pbWlzdCI6ICIxLjIuMCIsCisgICAgICAgICAgICAic3RyaXAtanNvbi1jb21tZW50cyI6ICIy
LjAuMSIKKyAgICAgICAgICB9LAorICAgICAgICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAg
ICAgICAibWluaW1pc3QiOiB7CisgICAgICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMi4wIiwKKyAg
ICAgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL21pbmlt
aXN0Ly0vbWluaW1pc3QtMS4yLjAudGd6IiwKKyAgICAgICAgICAgICAgImludGVncml0eSI6ICJz
aGExLW8xQUlzZzlCT0Q3c0g3a1U5TTFkOTVvbVFvUT0iLAorICAgICAgICAgICAgICAiZGV2Ijog
dHJ1ZSwKKyAgICAgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgfQorICAg
ICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInJlYWRhYmxlLXN0cmVhbSI6IHsKKyAgICAg
ICAgICAidmVyc2lvbiI6ICIyLjIuOSIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL3JlYWRhYmxlLXN0cmVhbS8tL3JlYWRhYmxlLXN0cmVhbS0yLjIu
OS50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS16M2pzYjBwdEhyUTlKa2lNckpm
d1F1ZExmOGc9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMi
OiB7CisgICAgICAgICAgICAiYnVmZmVyLXNoaW1zIjogIjEuMC4wIiwKKyAgICAgICAgICAgICJj
b3JlLXV0aWwtaXMiOiAiMS4wLjIiLAorICAgICAgICAgICAgImluaGVyaXRzIjogIjIuMC4zIiwK
KyAgICAgICAgICAgICJpc2FycmF5IjogIjEuMC4wIiwKKyAgICAgICAgICAgICJwcm9jZXNzLW5l
eHRpY2stYXJncyI6ICIxLjAuNyIsCisgICAgICAgICAgICAic3RyaW5nX2RlY29kZXIiOiAiMS4w
LjEiLAorICAgICAgICAgICAgInV0aWwtZGVwcmVjYXRlIjogIjEuMC4yIgorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgInJlcXVlc3QiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAi
Mi44MS4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvcmVxdWVzdC8tL3JlcXVlc3QtMi44MS4wLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6
ICJzaGExLXhwS0pScURnYkYrTmI0cVRNMGFmL2FSaW1LQT0iLAorICAgICAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjog
eworICAgICAgICAgICAgImF3cy1zaWduMiI6ICIwLjYuMCIsCisgICAgICAgICAgICAiYXdzNCI6
ICIxLjYuMCIsCisgICAgICAgICAgICAiY2FzZWxlc3MiOiAiMC4xMi4wIiwKKyAgICAgICAgICAg
ICJjb21iaW5lZC1zdHJlYW0iOiAiMS4wLjUiLAorICAgICAgICAgICAgImV4dGVuZCI6ICIzLjAu
MSIsCisgICAgICAgICAgICAiZm9yZXZlci1hZ2VudCI6ICIwLjYuMSIsCisgICAgICAgICAgICAi
Zm9ybS1kYXRhIjogIjIuMS40IiwKKyAgICAgICAgICAgICJoYXItdmFsaWRhdG9yIjogIjQuMi4x
IiwKKyAgICAgICAgICAgICJoYXdrIjogIjMuMS4zIiwKKyAgICAgICAgICAgICJodHRwLXNpZ25h
dHVyZSI6ICIxLjEuMSIsCisgICAgICAgICAgICAiaXMtdHlwZWRhcnJheSI6ICIxLjAuMCIsCisg
ICAgICAgICAgICAiaXNzdHJlYW0iOiAiMC4xLjIiLAorICAgICAgICAgICAgImpzb24tc3RyaW5n
aWZ5LXNhZmUiOiAiNS4wLjEiLAorICAgICAgICAgICAgIm1pbWUtdHlwZXMiOiAiMi4xLjE1IiwK
KyAgICAgICAgICAgICJvYXV0aC1zaWduIjogIjAuOC4yIiwKKyAgICAgICAgICAgICJwZXJmb3Jt
YW5jZS1ub3ciOiAiMC4yLjAiLAorICAgICAgICAgICAgInFzIjogIjYuNC4wIiwKKyAgICAgICAg
ICAgICJzYWZlLWJ1ZmZlciI6ICI1LjAuMSIsCisgICAgICAgICAgICAic3RyaW5nc3RyZWFtIjog
IjAuMC41IiwKKyAgICAgICAgICAgICJ0b3VnaC1jb29raWUiOiAiMi4zLjIiLAorICAgICAgICAg
ICAgInR1bm5lbC1hZ2VudCI6ICIwLjYuMCIsCisgICAgICAgICAgICAidXVpZCI6ICIzLjAuMSIK
KyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJyaW1yYWYiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMi42LjEiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9yaW1yYWYvLS9yaW1yYWYtMi42LjEudGd6IiwKKyAgICAgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtd2pPT3hrUGZlaHQvNWNWUHFHOVhRb3BWOHowPSIsCisgICAgICAgICAg
ImRldiI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImdsb2Ii
OiAiNy4xLjIiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAic2FmZS1idWZmZXIi
OiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNS4wLjEiLAorICAgICAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zYWZlLWJ1ZmZlci8tL3NhZmUtYnVmZmVyLTUu
MC4xLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLTBtUEtWR2xzMktNR3RjcGxV
ZWt0NVhrWSsrYz0iLAorICAgICAgICAgICJkZXYiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAg
ICJzZW12ZXIiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNS4zLjAiLAorICAgICAgICAgICJy
ZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zZW12ZXIvLS9zZW12ZXItNS4z
LjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtbXl6bDA5NEMwWHhnRXEweWFx
YTAwTTlVK1U4PSIsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFs
IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAic2V0LWJsb2NraW5nIjogeworICAgICAgICAg
ICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvc2V0LWJsb2NraW5nLy0vc2V0LWJsb2NraW5nLTIuMC4wLnRneiIsCisg
ICAgICAgICAgImludGVncml0eSI6ICJzaGExLUJGK1hndEFScnBwb0E5M1RnckpEa3JQWWtQYz0i
LAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAg
ICAgICAgfSwKKyAgICAgICAgInNpZ25hbC1leGl0IjogeworICAgICAgICAgICJ2ZXJzaW9uIjog
IjMuMC4yIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvc2lnbmFsLWV4aXQvLS9zaWduYWwtZXhpdC0zLjAuMi50Z3oiLAorICAgICAgICAgICJpbnRl
Z3JpdHkiOiAic2hhMS10ZjNBanhLSDZoRjRZbzVCWGlVVEszTmtiRzA9IiwKKyAgICAgICAgICAi
ZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlCisgICAgICAgIH0sCisgICAg
ICAgICJzbnRwIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC45IiwKKyAgICAgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc250cC8tL3NudHAtMS4wLjku
dGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtWlVFWVRNa0s3cWJHNTdOZUpsa0lK
RVBHWVpnPSIsCisgICAgICAgICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjog
dHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiaG9layI6ICIyLjE2
LjMiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAic3NocGsiOiB7CisgICAgICAg
ICAgInZlcnNpb24iOiAiMS4xMy4wIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvc3NocGsvLS9zc2hway0xLjEzLjAudGd6IiwKKyAgICAgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtL3lvK1Q5QkVsMVZmN1plem1nL1lMNit6b3p3PSIsCisgICAgICAg
ICAgImRldiI6IHRydWUsCisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICAgICAiYXNuMSI6ICIwLjIuMyIsCisgICAgICAgICAgICAi
YXNzZXJ0LXBsdXMiOiAiMS4wLjAiLAorICAgICAgICAgICAgImJjcnlwdC1wYmtkZiI6ICIxLjAu
MSIsCisgICAgICAgICAgICAiZGFzaGRhc2giOiAiMS4xNC4xIiwKKyAgICAgICAgICAgICJlY2Mt
anNibiI6ICIwLjEuMSIsCisgICAgICAgICAgICAiZ2V0cGFzcyI6ICIwLjEuNyIsCisgICAgICAg
ICAgICAiam9kaWQyNTUxOSI6ICIxLjAuMiIsCisgICAgICAgICAgICAianNibiI6ICIwLjEuMSIs
CisgICAgICAgICAgICAidHdlZXRuYWNsIjogIjAuMTQuNSIKKyAgICAgICAgICB9LAorICAgICAg
ICAgICJkZXBlbmRlbmNpZXMiOiB7CisgICAgICAgICAgICAiYXNzZXJ0LXBsdXMiOiB7CisgICAg
ICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4wIiwKKyAgICAgICAgICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2Fzc2VydC1wbHVzLy0vYXNzZXJ0LXBsdXMtMS4w
LjAudGd6IiwKKyAgICAgICAgICAgICAgImludGVncml0eSI6ICJzaGExLThTNFBQRjEzc0xITjJS
UnBRdVRwYkI1TjFTVT0iLAorICAgICAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAg
ICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAg
fSwKKyAgICAgICAgInN0cmluZ19kZWNvZGVyIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEu
MC4xIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
c3RyaW5nX2RlY29kZXIvLS9zdHJpbmdfZGVjb2Rlci0xLjAuMS50Z3oiLAorICAgICAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1ZdUlBOERtVldtZ1EyTjhLTS8vQThCTm1MWmc9IiwKKyAgICAgICAg
ICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAic2Fm
ZS1idWZmZXIiOiAiNS4wLjEiCisgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICAic3Ry
aW5nLXdpZHRoIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3RyaW5nLXdpZHRoLy0vc3Ry
aW5nLXdpZHRoLTEuMC4yLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLUVZdmZX
NHpjVWFLbjV3MGhIZ2Zpc0xteEI5TT0iLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
ICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJjb2RlLXBvaW50LWF0IjogIjEuMS4wIiwK
KyAgICAgICAgICAgICJpcy1mdWxsd2lkdGgtY29kZS1wb2ludCI6ICIxLjAuMCIsCisgICAgICAg
ICAgICAic3RyaXAtYW5zaSI6ICIzLjAuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAg
ICAgICJzdHJpbmdzdHJlYW0iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC4wLjUiLAorICAg
ICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zdHJpbmdzdHJl
YW0vLS9zdHJpbmdzdHJlYW0tMC4wLjUudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtVGtoTTFONWFDN3Z1R09SakIzRUtpb0ZpR0hnPSIsCisgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAic3RyaXAt
YW5zaSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjAuMSIsCisgICAgICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3N0cmlwLWFuc2kvLS9zdHJpcC1hbnNp
LTMuMC4xLnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLWFqaGZ1SVU5bFMxZjhG
ME9pcStVSjQzR1BjOD0iLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJyZXF1
aXJlcyI6IHsKKyAgICAgICAgICAgICJhbnNpLXJlZ2V4IjogIjIuMS4xIgorICAgICAgICAgIH0K
KyAgICAgICAgfSwKKyAgICAgICAgInN0cmlwLWpzb24tY29tbWVudHMiOiB7CisgICAgICAgICAg
InZlcnNpb24iOiAiMi4wLjEiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9zdHJpcC1qc29uLWNvbW1lbnRzLy0vc3RyaXAtanNvbi1jb21tZW50cy0y
LjAuMS50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1QRk1aUXVrSXdtbDhEc05F
aFl3b2JIeWdwZ289IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9u
YWwiOiB0cnVlCisgICAgICAgIH0sCisgICAgICAgICJ0YXIiOiB7CisgICAgICAgICAgInZlcnNp
b24iOiAiMi4yLjEiLAorICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy90YXIvLS90YXItMi4yLjEudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtamswcUpXd09JWVhHc1lyV2xLN0phTGc4c2RFPSIsCisgICAgICAgICAgImRldiI6IHRydWUs
CisgICAgICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAgICAgImJsb2NrLXN0cmVhbSI6ICIw
LjAuOSIsCisgICAgICAgICAgICAiZnN0cmVhbSI6ICIxLjAuMTEiLAorICAgICAgICAgICAgImlu
aGVyaXRzIjogIjIuMC4zIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInRhci1w
YWNrIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjMuNC4wIiwKKyAgICAgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdGFyLXBhY2svLS90YXItcGFjay0zLjQu
MC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1JNzR0ZjJjYWd6azNiTDJ3dVA0
LzNyOHhlWVE9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAib3B0aW9uYWwi
OiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJkZWJ1ZyI6ICIy
LjYuOCIsCisgICAgICAgICAgICAiZnN0cmVhbSI6ICIxLjAuMTEiLAorICAgICAgICAgICAgImZz
dHJlYW0taWdub3JlIjogIjEuMC41IiwKKyAgICAgICAgICAgICJvbmNlIjogIjEuNC4wIiwKKyAg
ICAgICAgICAgICJyZWFkYWJsZS1zdHJlYW0iOiAiMi4yLjkiLAorICAgICAgICAgICAgInJpbXJh
ZiI6ICIyLjYuMSIsCisgICAgICAgICAgICAidGFyIjogIjIuMi4xIiwKKyAgICAgICAgICAgICJ1
aWQtbnVtYmVyIjogIjAuMC42IgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgInRv
dWdoLWNvb2tpZSI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIyLjMuMiIsCisgICAgICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3RvdWdoLWNvb2tpZS8tL3Rv
dWdoLWNvb2tpZS0yLjMuMi50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS04SUgz
Ymt5RmNnNXNONlg2enRjM0ZRMkVCeW89IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAg
ICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
ICAgICJwdW55Y29kZSI6ICIxLjQuMSIKKyAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAg
ICJ0dW5uZWwtYWdlbnQiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMC42LjAiLAorICAgICAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy90dW5uZWwtYWdlbnQv
LS90dW5uZWwtYWdlbnQtMC42LjAudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
SjZYZW9HczJzRW9LbVdaM1N5a0lhUEQ4UVAwPSIsCisgICAgICAgICAgImRldiI6IHRydWUsCisg
ICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICAgICAicmVxdWlyZXMiOiB7CisgICAg
ICAgICAgICAic2FmZS1idWZmZXIiOiAiNS4wLjEiCisgICAgICAgICAgfQorICAgICAgICB9LAor
ICAgICAgICAidHdlZXRuYWNsIjogeworICAgICAgICAgICJ2ZXJzaW9uIjogIjAuMTQuNSIsCisg
ICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3R3ZWV0bmFj
bC8tL3R3ZWV0bmFjbC0wLjE0LjUudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEt
V3VhQmQvR1MxRVZpYWRFSXI2ay8rSFEvVDJRPSIsCisgICAgICAgICAgImRldiI6IHRydWUsCisg
ICAgICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAidWlkLW51bWJl
ciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIwLjAuNiIsCisgICAgICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3VpZC1udW1iZXIvLS91aWQtbnVtYmVyLTAu
MC42LnRneiIsCisgICAgICAgICAgImludGVncml0eSI6ICJzaGExLURxRU9nRFhvNjF1T1JFbndi
YUhITUdZN3FvRT0iLAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25h
bCI6IHRydWUKKyAgICAgICAgfSwKKyAgICAgICAgInV0aWwtZGVwcmVjYXRlIjogeworICAgICAg
ICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvdXRpbC1kZXByZWNhdGUvLS91dGlsLWRlcHJlY2F0ZS0xLjAuMi50
Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1SUTFOeWZwdzNuTW5ZdnZTMUtLSmdV
R2FETTg9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZQorICAgICAgICB9LAorICAgICAgICAidXVp
ZCI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjAuMSIsCisgICAgICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3V1aWQvLS91dWlkLTMuMC4xLnRneiIsCisg
ICAgICAgICAgImludGVncml0eSI6ICJzaGExLVpVUzdvdC9hakJ6eGZtS2FPakJlSzdIKzVzRT0i
LAorICAgICAgICAgICJkZXYiOiB0cnVlLAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUKKyAg
ICAgICAgfSwKKyAgICAgICAgInZlcnJvciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIxLjMu
NiIsCisgICAgICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3Zl
cnJvci8tL3ZlcnJvci0xLjMuNi50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS16
L1hmRXBSdEtYMHJxdStxSm9uaVcrQWNBRnc9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAg
ICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAg
ICAgICAgICJleHRzcHJpbnRmIjogIjEuMC4yIgorICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAg
ICAgICAgIndpZGUtYWxpZ24iOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4xLjIiLAorICAg
ICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy93aWRlLWFsaWdu
Ly0vd2lkZS1hbGlnbi0xLjEuMi50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEy
LWlqRExseVE3czZ4MUpnQ0x1cjUzb3NqbS9VWFVZRDkrMFBiWUtyQnNZaXNZWHpDeE4rSEMzbVlE
TnkvZFdkbWYzQXdxd1UzQ1h3REN2c05nR0sxUzB3PT0iLAorICAgICAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAgICAgInJlcXVpcmVzIjogewor
ICAgICAgICAgICAgInN0cmluZy13aWR0aCI6ICIxLjAuMiIKKyAgICAgICAgICB9CisgICAgICAg
IH0sCisgICAgICAgICJ3cmFwcHkiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAor
ICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy93cmFwcHkv
LS93cmFwcHktMS4wLjIudGd6IiwKKyAgICAgICAgICAiaW50ZWdyaXR5IjogInNoYTEtdFNROWp6
N0Jxalh4TmtZRnZBMFFOdU1LdHA4PSIsCisgICAgICAgICAgImRldiI6IHRydWUKKyAgICAgICAg
fQorICAgICAgfQorICAgIH0sCisgICAgImdsb2IiOiB7CisgICAgICAidmVyc2lvbiI6ICI3LjEu
MiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvZ2xvYi8t
L2dsb2ItNy4xLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLU1KVFVnMWtqdUxl
UUNKK2NjRTRWcGE2a0tWWGtQWUoybU9DUXlVdUtMY0xRc2RyTUNwQlBVaThxVkU2K1l1YUprb3pl
QTlOdXNUQXczaExyOFhlNUVRPT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICJmcy5yZWFscGF0aCI6ICIxLjAuMCIsCisgICAgICAgICJpbmZsaWdo
dCI6ICIxLjAuNiIsCisgICAgICAgICJpbmhlcml0cyI6ICIyLjAuMyIsCisgICAgICAgICJtaW5p
bWF0Y2giOiAiMy4wLjQiLAorICAgICAgICAib25jZSI6ICIxLjQuMCIsCisgICAgICAgICJwYXRo
LWlzLWFic29sdXRlIjogIjEuMC4xIgorICAgICAgfQorICAgIH0sCisgICAgImdsb2ItYmFzZSI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMy4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9nbG9iLWJhc2UvLS9nbG9iLWJhc2UtMC4zLjAudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS0yN0ZrOWlJYkhBc2N6NEt1b3lpMGw5OE9vOFE9IiwKKyAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICJyZXF1aXJl
cyI6IHsKKyAgICAgICAgImdsb2ItcGFyZW50IjogIjIuMC4wIiwKKyAgICAgICAgImlzLWdsb2Ii
OiAiMi4wLjEiCisgICAgICB9CisgICAgfSwKKyAgICAiZ2xvYi1wYXJlbnQiOiB7CisgICAgICAi
dmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvZ2xvYi1wYXJlbnQvLS9nbG9iLXBhcmVudC0yLjAuMC50Z3oiLAorICAgICAgImlu
dGVncml0eSI6ICJzaGExLWdUZzljdHNGVDh6UFV6YmFxUUx4Z3ZidHV5Zz0iLAorICAgICAgImRl
diI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJpcy1nbG9iIjogIjIuMC4x
IgorICAgICAgfQorICAgIH0sCisgICAgImdsb2JhbHMiOiB7CisgICAgICAidmVyc2lvbiI6ICI5
LjE4LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2ds
b2JhbHMvLS9nbG9iYWxzLTkuMTguMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1MTIt
UzBuRzNDTEVRaVkvSUx4cXR6dFRXSC8zaVJSZHlCTHc2S01EeG5LTWNocnRiajJPRm1laFZoMFdV
Q2ZXM0RVcklneC9xRnJKUElDcnE0WjRzVFI5VVE9PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAg
IH0sCisgICAgImdyYWNlZnVsLWZzIjogeworICAgICAgInZlcnNpb24iOiAiNC4xLjExIiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9ncmFjZWZ1bC1mcy8t
L2dyYWNlZnVsLWZzLTQuMS4xMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLURvdmY1
TkhkdUlWTlpPQk9wOEFPS2dKdVZsZz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAg
ICJoYXMtYW5zaSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICJyZXNvbHZl
ZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9oYXMtYW5zaS8tL2hhcy1hbnNpLTIuMC4w
LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtTlBVRW5PSHMzeXNHU2E4KzhrNUY3VFZC
YlpFPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
ImFuc2ktcmVnZXgiOiAiMi4xLjEiCisgICAgICB9CisgICAgfSwKKyAgICAiaG9tZS1vci10bXAi
OiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaG9tZS1vci10bXAvLS9ob21lLW9yLXRtcC0yLjAuMC50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLTQydy9MU3l1ZlhScWhYNDQwWTFmTXFlSUxiZz0i
LAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJvcy1o
b21lZGlyIjogIjEuMC4yIiwKKyAgICAgICAgIm9zLXRtcGRpciI6ICIxLjAuMiIKKyAgICAgIH0K
KyAgICB9LAorICAgICJpY29udi1saXRlIjogeworICAgICAgInZlcnNpb24iOiAiMC40LjE4IiwK
KyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pY29udi1saXRl
Ly0vaWNvbnYtbGl0ZS0wLjQuMTgudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLXNy
MVpRcGgzVXdIVFIwWGZ0U2JLODVPdkJieGUvYWJMR3pFblBFTkNRd21IZjdzY2s4T3l1NG9iM0xn
QnhXV3hSb00rUXN6ZVV5bDdqYnFhcHUyVHFBPT0iCisgICAgfSwKKyAgICAiaW5mbGlnaHQiOiB7
CisgICAgICAidmVyc2lvbiI6ICIxLjAuNiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvaW5mbGlnaHQvLS9pbmZsaWdodC0xLjAuNi50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLVNiMWpNZGZRTFF3SnZKRUtFSFc2Z1dXMWJmaz0iLAorICAgICAg
ImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJvbmNlIjogIjEuNC4w
IiwKKyAgICAgICAgIndyYXBweSI6ICIxLjAuMiIKKyAgICAgIH0KKyAgICB9LAorICAgICJpbmhl
cml0cyI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMC4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pbmhlcml0cy8tL2luaGVyaXRzLTIuMC4zLnRneiIs
CisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtWXp3c2crUGFRcVVDOVNSbUFpU0E5Q0NDWWQ0PSIs
CisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImludmFyaWFudCI6IHsKKyAgICAgICJ2
ZXJzaW9uIjogIjIuMi4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9pbnZhcmlhbnQvLS9pbnZhcmlhbnQtMi4yLjIudGd6IiwKKyAgICAgICJpbnRlZ3Jp
dHkiOiAic2hhMS1uaDlXckFyTnRyOHdNd2J6T0w0N0lFcm1BMkE9IiwKKyAgICAgICJkZXYiOiB0
cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAibG9vc2UtZW52aWZ5IjogIjEuMy4x
IgorICAgICAgfQorICAgIH0sCisgICAgImlzLWJpbmFyeS1wYXRoIjogeworICAgICAgInZlcnNp
b24iOiAiMS4wLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL2lzLWJpbmFyeS1wYXRoLy0vaXMtYmluYXJ5LXBhdGgtMS4wLjEudGd6IiwKKyAgICAgICJp
bnRlZ3JpdHkiOiAic2hhMS1kZkZtUXJTQThZZW5FY2dVRmgvVHBLZGxXSmc9IiwKKyAgICAgICJk
ZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsK
KyAgICAgICAgImJpbmFyeS1leHRlbnNpb25zIjogIjEuMTAuMCIKKyAgICAgIH0KKyAgICB9LAor
ICAgICJpcy1idWZmZXIiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEuNSIsCisgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXMtYnVmZmVyLy0vaXMtYnVmZmVy
LTEuMS41LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtSHpzbTcyRTdJVXVJeThvanpH
d0IySGxoN3N3PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImlzLWRvdGZpbGUi
OiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXMtZG90ZmlsZS8tL2lzLWRvdGZpbGUtMS4wLjMudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1wcUx6TC8wdCt3VDF5aVhzMFBhNFBQZVlvZUU9IiwK
KyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZQorICAgIH0sCisgICAg
ImlzLWVxdWFsLXNoYWxsb3ciOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjEuMyIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXMtZXF1YWwtc2hhbGxvdy8t
L2lzLWVxdWFsLXNoYWxsb3ctMC4xLjMudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1J
amdKajhJaDNndlBwZG5xeE1SZFk0cWh4VFE9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
Im9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImlzLXByaW1p
dGl2ZSI6ICIyLjAuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJpcy1leHRlbmRhYmxlIjogewor
ICAgICAgInZlcnNpb24iOiAiMC4xLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL2lzLWV4dGVuZGFibGUvLS9pcy1leHRlbmRhYmxlLTAuMS4xLnRneiIs
CisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtWXJFUTRvbWtjVUdPUHNOcVlYMUhMakFkL0lrPSIs
CisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICB9LAorICAg
ICJpcy1leHRnbG9iIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjAiLAorICAgICAgInJlc29s
dmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzLWV4dGdsb2IvLS9pcy1leHRnbG9i
LTEuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtckVhQmQ4U1VOQVdna3Z5UEtY
WU1iL3hpQnNBPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImlzLWZpbml0ZSI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1maW5pdGUvLS9pcy1maW5pdGUtMS4wLjIudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhMS16R1ozYVZZQ3ZsVU84UjZMU3FZd1UwSzIwS289IiwKKyAg
ICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAibnVtYmVyLWlz
LW5hbiI6ICIxLjAuMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJpcy1nbG9iIjogeworICAgICAg
InZlcnNpb24iOiAiMi4wLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnku
bnBtanMub3JnL2lzLWdsb2IvLS9pcy1nbG9iLTIuMC4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtMEpiNUpxUGUxV0FQUDkvWkVaakxDSWpDMkdNPSIsCisgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImlzLWV4dGdsb2IiOiAiMS4wLjAiCisg
ICAgICB9CisgICAgfSwKKyAgICAiaXMtbnVtYmVyIjogeworICAgICAgInZlcnNpb24iOiAiMi4x
LjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzLW51
bWJlci8tL2lzLW51bWJlci0yLjEuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUFm
eTdzNU5HT2xTUEwwWnN6aGJlemtuYmtJOD0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAi
b3B0aW9uYWwiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAia2luZC1vZiI6
ICIzLjIuMiIKKyAgICAgIH0KKyAgICB9LAorICAgICJpcy1wb3NpeC1icmFja2V0IjogeworICAg
ICAgInZlcnNpb24iOiAiMC4xLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL2lzLXBvc2l4LWJyYWNrZXQvLS9pcy1wb3NpeC1icmFja2V0LTAuMS4xLnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtTXpUY2VYZERhT2t2QVc1dnZBcUk5YzF1YThR
PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICB9LAor
ICAgICJpcy1wcmltaXRpdmUiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjAuMCIsCisgICAgICAi
cmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXMtcHJpbWl0aXZlLy0vaXMt
cHJpbWl0aXZlLTIuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtSUh1cmtXT0Vt
Y0I3S3Q4a0NrR29jaEFEUlhVPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgImlz
LXN0cmVhbSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMS4wIiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9pcy1zdHJlYW0vLS9pcy1zdHJlYW0tMS4xLjAu
dGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1FdFNqM1U1bzRMZWM2NDI4aEJjNjZBMlJ5
a1E9IgorICAgIH0sCisgICAgImlzYXJyYXkiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMCIs
CisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXNhcnJheS8t
L2lzYXJyYXktMS4wLjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS11NU5kU0Znc3Vo
YU1Cb05KVjZWS1BnY1NUeEU9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAiaXNv
YmplY3QiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjEuMCIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvaXNvYmplY3QvLS9pc29iamVjdC0yLjEuMC50Z3oi
LAorICAgICAgImludGVncml0eSI6ICJzaGExLThHVldFSmFqOGRvdTlHSnkrQlhJUU5oK0RJaz0i
LAorICAgICAgImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAiaXNhcnJheSI6ICIxLjAuMCIKKyAgICAgIH0KKyAgICB9LAor
ICAgICJpc29tb3JwaGljLWZldGNoIjogeworICAgICAgInZlcnNpb24iOiAiMi4yLjEiLAorICAg
ICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzb21vcnBoaWMtZmV0
Y2gvLS9pc29tb3JwaGljLWZldGNoLTIuMi4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTEtWVJyaHJQRlBYb0gzS1ZCMGNvR2Y2WE0xV0trPSIsCisgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICJub2RlLWZldGNoIjogIjEuNy4yIiwKKyAgICAgICAgIndoYXR3Zy1mZXRjaCI6ICIy
LjAuMyIKKyAgICAgIH0KKyAgICB9LAorICAgICJqcy10b2tlbnMiOiB7CisgICAgICAidmVyc2lv
biI6ICIzLjAuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvanMtdG9rZW5zLy0vanMtdG9rZW5zLTMuMC4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5Ijog
InNoYTEtbUdiZk9WRUNFdzQ0OS9tV3ZPdGxSRElKd2xzPSIKKyAgICB9LAorICAgICJqc2VzYyI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMy4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy9qc2VzYy8tL2pzZXNjLTEuMy4wLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtUnNQK3lNR0pLeEt3Z3oyNXZIWWlGMjI2czBzPSIsCisgICAgICAiZGV2
IjogdHJ1ZQorICAgIH0sCisgICAgImpzb241IjogeworICAgICAgInZlcnNpb24iOiAiMC41LjEi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2pzb241Ly0v
anNvbjUtMC41LjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1IcTNuck1BU0EwcllU
aU9XZG42dG42VkpXQ0U9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAia2luZC1v
ZiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjMuMi4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9raW5kLW9mLy0va2luZC1vZi0zLjIuMi50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLU1lb2hwelM2dWJ1dzh5Um0ySk91cFI1S1BHUT0iLAorICAg
ICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJpcy1idWZmZXIi
OiAiMS4xLjUiCisgICAgICB9CisgICAgfSwKKyAgICAibGF6eS1jYWNoZSI6IHsKKyAgICAgICJ2
ZXJzaW9uIjogIjEuMC40IiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5w
bWpzLm9yZy9sYXp5LWNhY2hlLy0vbGF6eS1jYWNoZS0xLjAuNC50Z3oiLAorICAgICAgImludGVn
cml0eSI6ICJzaGExLW9kZVB3NlVFZE11QWhGMDdPMjRkcEpwRWJvND0iLAorICAgICAgImRldiI6
IHRydWUKKyAgICB9LAorICAgICJsb2Rhc2giOiB7CisgICAgICAidmVyc2lvbiI6ICI0LjE3LjQi
LAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2xvZGFzaC8t
L2xvZGFzaC00LjE3LjQudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1lQ0E2VFJ3eWl1
SFliY3BrWU9OcHRYOUFWYTQ9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAibG9u
Z2VzdCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9sb25nZXN0Ly0vbG9uZ2VzdC0xLjAuMS50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLU1LQ3kyamozTjNEb0tVb05JdVppWHRkOUFKYz0iLAor
ICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJsb29zZS1lbnZpZnkiOiB7CisgICAgICAi
dmVyc2lvbiI6ICIxLjMuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvbG9vc2UtZW52aWZ5Ly0vbG9vc2UtZW52aWZ5LTEuMy4xLnRneiIsCisgICAgICAi
aW50ZWdyaXR5IjogInNoYTEtMGFpdE0vcWM0T2NUMWwvZENzaTNTTlI0eUVnPSIsCisgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICJqcy10b2tlbnMiOiAiMy4wLjIiCisgICAgICB9CisgICAg
fSwKKyAgICAibWljcm9tYXRjaCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMy4xMSIsCisgICAg
ICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbWljcm9tYXRjaC8tL21p
Y3JvbWF0Y2gtMi4zLjExLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtaG1kOGw5RnlD
elkwTWRCTkRSVXBPOU9NRldVPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25h
bCI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJhcnItZGlmZiI6ICIyLjAu
MCIsCisgICAgICAgICJhcnJheS11bmlxdWUiOiAiMC4yLjEiLAorICAgICAgICAiYnJhY2VzIjog
IjEuOC41IiwKKyAgICAgICAgImV4cGFuZC1icmFja2V0cyI6ICIwLjEuNSIsCisgICAgICAgICJl
eHRnbG9iIjogIjAuMy4yIiwKKyAgICAgICAgImZpbGVuYW1lLXJlZ2V4IjogIjIuMC4xIiwKKyAg
ICAgICAgImlzLWV4dGdsb2IiOiAiMS4wLjAiLAorICAgICAgICAiaXMtZ2xvYiI6ICIyLjAuMSIs
CisgICAgICAgICJraW5kLW9mIjogIjMuMi4yIiwKKyAgICAgICAgIm5vcm1hbGl6ZS1wYXRoIjog
IjIuMS4xIiwKKyAgICAgICAgIm9iamVjdC5vbWl0IjogIjIuMC4xIiwKKyAgICAgICAgInBhcnNl
LWdsb2IiOiAiMy4wLjQiLAorICAgICAgICAicmVnZXgtY2FjaGUiOiAiMC40LjMiCisgICAgICB9
CisgICAgfSwKKyAgICAibWluaW1hdGNoIjogeworICAgICAgInZlcnNpb24iOiAiMy4wLjQiLAor
ICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL21pbmltYXRjaC8t
L21pbmltYXRjaC0zLjAuNC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGE1MTIteUpIVlFF
aHlxUExVVGd0OUI4M1BYdTZXM3J4NE12dkh2U1V2VG9vZ3B3b0dET1VRK3lEclIwSFJvdCt5T0Nk
Q083dTRoWDNwV2Z0NmtXQkJjcWgwVUE9PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJy
ZXF1aXJlcyI6IHsKKyAgICAgICAgImJyYWNlLWV4cGFuc2lvbiI6ICIxLjEuOCIKKyAgICAgIH0K
KyAgICB9LAorICAgICJtaW5pbWlzdCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMC44IiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9taW5pbWlzdC8tL21p
bmltaXN0LTAuMC44LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtaFgvS3Y4TTVmU1ls
dUNLQ1l1aHFwNkFSc0YwPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgIm1rZGly
cCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuNS4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9ta2RpcnAvLS9ta2RpcnAtMC41LjEudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1NQVYwT09yR3ozK01SMmZ6aGtqV2FYMTF5UU09IiwKKyAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAibWluaW1pc3QiOiAi
MC4wLjgiCisgICAgICB9CisgICAgfSwKKyAgICAibXMiOiB7CisgICAgICAidmVyc2lvbiI6ICIy
LjAuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbXMv
LS9tcy0yLjAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLVZnaXVyZndBdm13cEFk
OWZtR0Y0amVEVmw4Zz0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJuYW4iOiB7
CisgICAgICAidmVyc2lvbiI6ICIyLjYuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvbmFuLy0vbmFuLTIuNi4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5
IjogInNoYTEtNVA4MDVzbGYzN1d1ekFqZVpaYjBOZ1duMjBVPSIsCisgICAgICAiZGV2IjogdHJ1
ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICB9LAorICAgICJub2RlLWZldGNoIjogewor
ICAgICAgInZlcnNpb24iOiAiMS43LjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL25vZGUtZmV0Y2gvLS9ub2RlLWZldGNoLTEuNy4yLnRneiIsCisgICAg
ICAiaW50ZWdyaXR5IjogInNoYTUxMi14WlpVcTJ5RGhLTUluL1VnRzVxLy9JWlNOTEpJd1cyUXhT
MTRDTkg1c3B1aVhrSVRNMnBVaXRqZHE1OHlMU2FVN200TTB3Qk5hTTJHaC9nZ1k0WUppZz09IiwK
KyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImVuY29kaW5nIjogIjAuMS4xMiIsCisgICAg
ICAgICJpcy1zdHJlYW0iOiAiMS4xLjAiCisgICAgICB9CisgICAgfSwKKyAgICAibm9ybWFsaXpl
LXBhdGgiOiB7CisgICAgICAidmVyc2lvbiI6ICIyLjEuMSIsCisgICAgICAicmVzb2x2ZWQiOiAi
aHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbm9ybWFsaXplLXBhdGgvLS9ub3JtYWxpemUtcGF0
aC0yLjEuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUdyS0xWVzRaZzJPb3dhYjM1
dm9nRTMvbXJ0az0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICJyZW1vdmUtdHJhaWxpbmctc2VwYXJhdG9yIjogIjEuMS4wIgorICAgICAgfQorICAg
IH0sCisgICAgIm51bWJlci1pcy1uYW4iOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMSIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvbnVtYmVyLWlzLW5h
bi8tL251bWJlci1pcy1uYW4tMS4wLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1D
WHRnSzFOQ0tsSXNHdnVIa0RHRE5wUWFBUjA9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwK
KyAgICAib2JqZWN0LWFzc2lnbiI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjQuMS4xIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9vYmplY3QtYXNzaWduLy0v
b2JqZWN0LWFzc2lnbi00LjEuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUlRbXR4
NVpZaDgvQVhMdlVRc3JJdjdzMkNHTT0iCisgICAgfSwKKyAgICAib2JqZWN0Lm9taXQiOiB7Cisg
ICAgICAidmVyc2lvbiI6ICIyLjAuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvb2JqZWN0Lm9taXQvLS9vYmplY3Qub21pdC0yLjAuMS50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLUdweDBTQ256bmJ1RmpIYktOWG11S2xUcjBmbz0iLAorICAg
ICAgImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgInJlcXVpcmVz
IjogeworICAgICAgICAiZm9yLW93biI6ICIwLjEuNSIsCisgICAgICAgICJpcy1leHRlbmRhYmxl
IjogIjAuMS4xIgorICAgICAgfQorICAgIH0sCisgICAgIm9uY2UiOiB7CisgICAgICAidmVyc2lv
biI6ICIxLjQuMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvb25jZS8tL29uY2UtMS40LjAudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1XRHNh
cDNXV0hVc1JPc0Y5bkZDNjc1M1hhOUU9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAid3JhcHB5IjogIjEuMC4yIgorICAgICAgfQorICAgIH0sCisg
ICAgIm9zLWhvbWVkaXIiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvb3MtaG9tZWRpci8tL29zLWhvbWVk
aXItMS4wLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS0vN3hKaUROdURvTTk0TUZv
eCs4VklTR3FmN009IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAib3MtdG1wZGly
IjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBz
Oi8vcmVnaXN0cnkubnBtanMub3JnL29zLXRtcGRpci8tL29zLXRtcGRpci0xLjAuMi50Z3oiLAor
ICAgICAgImludGVncml0eSI6ICJzaGExLXUrWjBCc2VhcUZ4Yy9zZG0vbGMwVlYzNkVuUT0iLAor
ICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJvdXRwdXQtZmlsZS1zeW5jIjogeworICAg
ICAgInZlcnNpb24iOiAiMS4xLjIiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL291dHB1dC1maWxlLXN5bmMvLS9vdXRwdXQtZmlsZS1zeW5jLTEuMS4yLnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtMEtNKzcrWWFJRitzdVFDUzZDWlpqVkpGem5Z
PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgImdy
YWNlZnVsLWZzIjogIjQuMS4xMSIsCisgICAgICAgICJta2RpcnAiOiAiMC41LjEiLAorICAgICAg
ICAib2JqZWN0LWFzc2lnbiI6ICI0LjEuMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJwYXJzZS1n
bG9iIjogeworICAgICAgInZlcnNpb24iOiAiMy4wLjQiLAorICAgICAgInJlc29sdmVkIjogImh0
dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3BhcnNlLWdsb2IvLS9wYXJzZS1nbG9iLTMuMC40LnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtc3NOMno3RWZOVkU3cmRGejd3dTI0Nk9JT1J3
PSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAi
cmVxdWlyZXMiOiB7CisgICAgICAgICJnbG9iLWJhc2UiOiAiMC4zLjAiLAorICAgICAgICAiaXMt
ZG90ZmlsZSI6ICIxLjAuMyIsCisgICAgICAgICJpcy1leHRnbG9iIjogIjEuMC4wIiwKKyAgICAg
ICAgImlzLWdsb2IiOiAiMi4wLjEiCisgICAgICB9CisgICAgfSwKKyAgICAicGF0aC1pcy1hYnNv
bHV0ZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wYXRoLWlzLWFic29sdXRlLy0vcGF0aC1pcy1hYnNv
bHV0ZS0xLjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLUYwdVNhSE5WTlArOGVz
NXI5VHBhbmh0Y1gxOD0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJwcmVzZXJ2
ZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMi4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRw
czovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9wcmVzZXJ2ZS8tL3ByZXNlcnZlLTAuMi4wLnRneiIsCisg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtZ1Y3Ujl1dkdXU2I0WmJNUXdIRTd5ek1WemtzPSIsCisg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICB9LAorICAgICJw
cml2YXRlIjogeworICAgICAgInZlcnNpb24iOiAiMC4xLjciLAorICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3ByaXZhdGUvLS9wcml2YXRlLTAuMS43LnRneiIs
CisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtYU01ZWloN3dvanUxY013b1UzdFRNcXVtUHZFPSIs
CisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInByb2Nlc3MtbmV4dGljay1hcmdzIjog
eworICAgICAgInZlcnNpb24iOiAiMS4wLjciLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8v
cmVnaXN0cnkubnBtanMub3JnL3Byb2Nlc3MtbmV4dGljay1hcmdzLy0vcHJvY2Vzcy1uZXh0aWNr
LWFyZ3MtMS4wLjcudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1GUTRndDFaWkN0UDVF
SlB5V2s4cTJML3pDNk09IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlvbmFsIjog
dHJ1ZQorICAgIH0sCisgICAgInByb21pc2UiOiB7CisgICAgICAidmVyc2lvbiI6ICI3LjMuMSIs
CisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcHJvbWlzZS8t
L3Byb21pc2UtNy4zLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLW5vbFFYWi80
TCtiUC9VR2xrZmFJdWpYOUJLeEd3bVE5T1Q0bU90NXl2eThpSzFoM3dxVEVKQ2lqekdBTlRDQ2w5
bldqWTQxanV5QW4ySzNRMWhMTFRnPT0iLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAi
YXNhcCI6ICIyLjAuNiIKKyAgICAgIH0KKyAgICB9LAorICAgICJwcm9wLXR5cGVzIjogeworICAg
ICAgInZlcnNpb24iOiAiMTUuNS4xMCIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdp
c3RyeS5ucG1qcy5vcmcvcHJvcC10eXBlcy8tL3Byb3AtdHlwZXMtMTUuNS4xMC50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLUo1ZmZ3eEpoZ3VPcFhqMzdzdWlUM2RkRllWUT0iLAorICAg
ICAgInJlcXVpcmVzIjogeworICAgICAgICAiZmJqcyI6ICIwLjguMTQiLAorICAgICAgICAibG9v
c2UtZW52aWZ5IjogIjEuMy4xIgorICAgICAgfQorICAgIH0sCisgICAgInJhbmRvbWF0aWMiOiB7
CisgICAgICAidmVyc2lvbiI6ICIxLjEuNyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9y
ZWdpc3RyeS5ucG1qcy5vcmcvcmFuZG9tYXRpYy8tL3JhbmRvbWF0aWMtMS4xLjcudGd6IiwKKyAg
ICAgICJpbnRlZ3JpdHkiOiAic2hhNTEyLUQ1SlVqUHlKYmFKRGt1QWF6cFZuU2ZWa0xscGVPM3dE
bFBST1RNTEdLRzF6TUZORlJncmNpS28xbHR6L0F6TlRrcUUwSHpEeDY1NVFPTDUxTjA2aG93PT0i
LAorICAgICAgImRldiI6IHRydWUsCisgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAiaXMtbnVtYmVyIjogIjMuMC4wIiwKKyAgICAgICAgImtpbmQt
b2YiOiAiNC4wLjAiCisgICAgICB9LAorICAgICAgImRlcGVuZGVuY2llcyI6IHsKKyAgICAgICAg
ImlzLW51bWJlciI6IHsKKyAgICAgICAgICAidmVyc2lvbiI6ICIzLjAuMCIsCisgICAgICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2lzLW51bWJlci8tL2lzLW51
bWJlci0zLjAuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1KUDFpQWFSNExQ
VUZZY2dRSjJyOGZSTFhFWlU9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAgICAi
b3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAgICJr
aW5kLW9mIjogIjMuMi4yIgorICAgICAgICAgIH0sCisgICAgICAgICAgImRlcGVuZGVuY2llcyI6
IHsKKyAgICAgICAgICAgICJraW5kLW9mIjogeworICAgICAgICAgICAgICAidmVyc2lvbiI6ICIz
LjIuMiIsCisgICAgICAgICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9raW5kLW9mLy0va2luZC1vZi0zLjIuMi50Z3oiLAorICAgICAgICAgICAgICAiaW50ZWdy
aXR5IjogInNoYTEtTWVvaHB6UzZ1YnV3OHlSbTJKT3VwUjVLUEdRPSIsCisgICAgICAgICAgICAg
ICJkZXYiOiB0cnVlLAorICAgICAgICAgICAgICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAg
ICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICAgICAgICAgImlzLWJ1ZmZlciI6ICIxLjEuNSIK
KyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgfSwK
KyAgICAgICAgImtpbmQtb2YiOiB7CisgICAgICAgICAgInZlcnNpb24iOiAiNC4wLjAiLAorICAg
ICAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9raW5kLW9mLy0v
a2luZC1vZi00LjAuMC50Z3oiLAorICAgICAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1JSUU5ODlj
U2tvc2djM2hwR2tVR2I2NXkzVmM9IiwKKyAgICAgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICAg
ICAib3B0aW9uYWwiOiB0cnVlLAorICAgICAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAgICAg
ICJpcy1idWZmZXIiOiAiMS4xLjUiCisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9Cisg
ICAgfSwKKyAgICAicmVhY3QiOiB7CisgICAgICAidmVyc2lvbiI6ICIxNS41LjQiLAorICAgICAg
InJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3JlYWN0Ly0vcmVhY3QtMTUu
NS40LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtK29QckFWQnFzamZOd2NqRHNjNm8z
Z0VyOEVjPSIsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJmYmpzIjogIjAuOC4xNCIs
CisgICAgICAgICJsb29zZS1lbnZpZnkiOiAiMS4zLjEiLAorICAgICAgICAib2JqZWN0LWFzc2ln
biI6ICI0LjEuMSIsCisgICAgICAgICJwcm9wLXR5cGVzIjogIjE1LjUuMTAiCisgICAgICB9Cisg
ICAgfSwKKyAgICAicmVhY3QtZG9tIjogeworICAgICAgInZlcnNpb24iOiAiMTUuNS40IiwKKyAg
ICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZWFjdC1kb20vLS9y
ZWFjdC1kb20tMTUuNS40LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtdWd3b2VHL1ZM
dGZrOGhOZjRDaU5SaXJ2azlvPSIsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJmYmpz
IjogIjAuOC4xNCIsCisgICAgICAgICJsb29zZS1lbnZpZnkiOiAiMS4zLjEiLAorICAgICAgICAi
b2JqZWN0LWFzc2lnbiI6ICI0LjEuMSIsCisgICAgICAgICJwcm9wLXR5cGVzIjogIjE1LjUuMTAi
CisgICAgICB9CisgICAgfSwKKyAgICAicmVhZGFibGUtc3RyZWFtIjogeworICAgICAgInZlcnNp
b24iOiAiMi4zLjMiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMu
b3JnL3JlYWRhYmxlLXN0cmVhbS8tL3JlYWRhYmxlLXN0cmVhbS0yLjMuMy50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGE1MTItbStxenpjbjdLVXhFbWQxZ01iY2hGK1kyZUlVYmllVWF4a1d0
cHR5SHl3clgwckU4UUVZcVBDMDdWdXk0V20zMi94RTE2TmNkQmN0YjhTMFhlLzVJZVE9PSIsCisg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAicmVxdWly
ZXMiOiB7CisgICAgICAgICJjb3JlLXV0aWwtaXMiOiAiMS4wLjIiLAorICAgICAgICAiaW5oZXJp
dHMiOiAiMi4wLjMiLAorICAgICAgICAiaXNhcnJheSI6ICIxLjAuMCIsCisgICAgICAgICJwcm9j
ZXNzLW5leHRpY2stYXJncyI6ICIxLjAuNyIsCisgICAgICAgICJzYWZlLWJ1ZmZlciI6ICI1LjEu
MSIsCisgICAgICAgICJzdHJpbmdfZGVjb2RlciI6ICIxLjAuMyIsCisgICAgICAgICJ1dGlsLWRl
cHJlY2F0ZSI6ICIxLjAuMiIKKyAgICAgIH0KKyAgICB9LAorICAgICJyZWFkZGlycCI6IHsKKyAg
ICAgICJ2ZXJzaW9uIjogIjIuMS4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lz
dHJ5Lm5wbWpzLm9yZy9yZWFkZGlycC8tL3JlYWRkaXJwLTIuMS4wLnRneiIsCisgICAgICAiaW50
ZWdyaXR5IjogInNoYTEtVHRDdEJnM3pCek1BeElSQU56OXkwY3hrTFhnPSIsCisgICAgICAiZGV2
IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7Cisg
ICAgICAgICJncmFjZWZ1bC1mcyI6ICI0LjEuMTEiLAorICAgICAgICAibWluaW1hdGNoIjogIjMu
MC40IiwKKyAgICAgICAgInJlYWRhYmxlLXN0cmVhbSI6ICIyLjMuMyIsCisgICAgICAgICJzZXQt
aW1tZWRpYXRlLXNoaW0iOiAiMS4wLjEiCisgICAgICB9CisgICAgfSwKKyAgICAicmVnZW5lcmF0
b3ItcnVudGltZSI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjAuMTEuMCIsCisgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVnZW5lcmF0b3ItcnVudGltZS8tL3Jl
Z2VuZXJhdG9yLXJ1bnRpbWUtMC4xMS4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTUx
Mi0vYUEwa0xlUmI1TjlLMGQ0Znc3b29FYkkreERlK0RLRDQ5OUVRcXlnR3FlUzhOM3h0bzE1cDA5
dVkyeGo3aXhQODFzTlBYdlJMbkFRSXFkVlN0Z2IxQT09IiwKKyAgICAgICJkZXYiOiB0cnVlCisg
ICAgfSwKKyAgICAicmVnZXgtY2FjaGUiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjQuMyIsCisg
ICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVnZXgtY2FjaGUv
LS9yZWdleC1jYWNoZS0wLjQuMy50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLW14cHNO
ZFRRMzg3MWNScm1VZWpwMDljUlFVVT0iLAorICAgICAgImRldiI6IHRydWUsCisgICAgICAib3B0
aW9uYWwiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiaXMtZXF1YWwtc2hh
bGxvdyI6ICIwLjEuMyIsCisgICAgICAgICJpcy1wcmltaXRpdmUiOiAiMi4wLjAiCisgICAgICB9
CisgICAgfSwKKyAgICAicmVtb3ZlLXRyYWlsaW5nLXNlcGFyYXRvciI6IHsKKyAgICAgICJ2ZXJz
aW9uIjogIjEuMS4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpz
Lm9yZy9yZW1vdmUtdHJhaWxpbmctc2VwYXJhdG9yLy0vcmVtb3ZlLXRyYWlsaW5nLXNlcGFyYXRv
ci0xLjEuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXdrdk9LaWc2MnRXOFAxamcx
SUpKdVNONTJPOD0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJyZXBlYXQtZWxl
bWVudCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMS4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJo
dHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9yZXBlYXQtZWxlbWVudC8tL3JlcGVhdC1lbGVtZW50
LTEuMS4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtN3dpYUY0MFVnN3F1VFpQcm1M
VDU1T0VkbVFvPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInJlcGVhdC1zdHJp
bmciOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjYuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0
cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvcmVwZWF0LXN0cmluZy8tL3JlcGVhdC1zdHJpbmctMS42
LjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1qY3JrY09ISWlyd3RZQS8vU25kaWh0
cDE1amM9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAicmVwZWF0aW5nIjogewor
ICAgICAgInZlcnNpb24iOiAiMi4wLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVn
aXN0cnkubnBtanMub3JnL3JlcGVhdGluZy8tL3JlcGVhdGluZy0yLjAuMS50Z3oiLAorICAgICAg
ImludGVncml0eSI6ICJzaGExLVVoVEZPcEp0TlZKd2RTZjdxMEZkdkFqUWJkbz0iLAorICAgICAg
ImRldiI6IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJpcy1maW5pdGUiOiAi
MS4wLjIiCisgICAgICB9CisgICAgfSwKKyAgICAicmlnaHQtYWxpZ24iOiB7CisgICAgICAidmVy
c2lvbiI6ICIwLjEuMyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1q
cy5vcmcvcmlnaHQtYWxpZ24vLS9yaWdodC1hbGlnbi0wLjEuMy50Z3oiLAorICAgICAgImludGVn
cml0eSI6ICJzaGExLVlUT2JjaS9tbzFGV2lTRU5KT0ZNbGhTR0UrOD0iLAorICAgICAgImRldiI6
IHRydWUsCisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJhbGlnbi10ZXh0IjogIjAuMS40
IgorICAgICAgfQorICAgIH0sCisgICAgInNhZmUtYnVmZmVyIjogeworICAgICAgInZlcnNpb24i
OiAiNS4xLjEiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3Jn
L3NhZmUtYnVmZmVyLy0vc2FmZS1idWZmZXItNS4xLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHki
OiAic2hhNTEyLWtLdk5KbjZNbTkzZ0FjeldWSmc3d0grd0dZV05yREhkV3ZwVW1IeUVzZ0N0SXd3
bzNicVB0VjR0UjV0dVBhVWhUT28va3ZoVndkOFh3d09sbEdZa2JnPT0iLAorICAgICAgImRldiI6
IHRydWUKKyAgICB9LAorICAgICJzZXQtaW1tZWRpYXRlLXNoaW0iOiB7CisgICAgICAidmVyc2lv
biI6ICIxLjAuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvc2V0LWltbWVkaWF0ZS1zaGltLy0vc2V0LWltbWVkaWF0ZS1zaGltLTEuMC4xLnRneiIsCisg
ICAgICAiaW50ZWdyaXR5IjogInNoYTEtU3lzYkordUFpcCtOekVnYVdPWGxiMW1mUDJFPSIsCisg
ICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRydWUKKyAgICB9LAorICAgICJz
ZXRpbW1lZGlhdGUiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuNSIsCisgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc2V0aW1tZWRpYXRlLy0vc2V0aW1tZWRp
YXRlLTEuMC41LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtS1F5N0l5NHdhVUxYMStx
YmczTXF0NFZ2Z29VPSIKKyAgICB9LAorICAgICJzbGFzaCI6IHsKKyAgICAgICJ2ZXJzaW9uIjog
IjEuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9z
bGFzaC8tL3NsYXNoLTEuMC4wLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEteEI4dmJE
bjhGdEhORjYxTFhZbGhGSzVIRFZVPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAg
InNvdXJjZS1tYXAiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjUuNyIsCisgICAgICAicmVzb2x2
ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc291cmNlLW1hcC8tL3NvdXJjZS1tYXAt
MC41LjcudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1pZ09kTFJBaDBpMGVvVXlBMk9w
R2k2THZQOHc9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAic291cmNlLW1hcC1z
dXBwb3J0IjogeworICAgICAgInZlcnNpb24iOiAiMC40LjE2IiwKKyAgICAgICJyZXNvbHZlZCI6
ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zb3VyY2UtbWFwLXN1cHBvcnQvLS9zb3VyY2Ut
bWFwLXN1cHBvcnQtMC40LjE2LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTUxMi1BNnZs
eWRZN0gvbGpyNEwyVU9oRFNhalFkWlE2ZE1EN2NMSDBwendjbXdMeWM5dThQTkk0V0d0bmZERHpY
N3V6R0w2Yy9UK09STDk3WmxoK1M0aU9yZz09IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAg
InJlcXVpcmVzIjogeworICAgICAgICAic291cmNlLW1hcCI6ICIwLjUuNyIKKyAgICAgIH0KKyAg
ICB9LAorICAgICJzdHJpbmdfZGVjb2RlciI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4zIiwK
KyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9zdHJpbmdfZGVj
b2Rlci8tL3N0cmluZ19kZWNvZGVyLTEuMC4zLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNo
YTUxMi00QUg2WjVmek5OQmNIKzZYRE1mQS9CVHQ4N3NreHFKbE8wbEFoM0RrZXI1elRoY0F4RzZt
S3oraUd1MzA4VUtvUFBROERjcXgvNEpodWp6bHRSYStoUT09IiwKKyAgICAgICJkZXYiOiB0cnVl
LAorICAgICAgIm9wdGlvbmFsIjogdHJ1ZSwKKyAgICAgICJyZXF1aXJlcyI6IHsKKyAgICAgICAg
InNhZmUtYnVmZmVyIjogIjUuMS4xIgorICAgICAgfQorICAgIH0sCisgICAgInN0cmlwLWFuc2ki
OiB7CisgICAgICAidmVyc2lvbiI6ICIzLjAuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6
Ly9yZWdpc3RyeS5ucG1qcy5vcmcvc3RyaXAtYW5zaS8tL3N0cmlwLWFuc2ktMy4wLjEudGd6IiwK
KyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1hamhmdUlVOWxTMWY4RjBPaXErVUo0M0dQYzg9IiwK
KyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJlcXVpcmVzIjogeworICAgICAgICAiYW5zaS1y
ZWdleCI6ICIyLjEuMSIKKyAgICAgIH0KKyAgICB9LAorICAgICJzdXBwb3J0cy1jb2xvciI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjIuMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy9zdXBwb3J0cy1jb2xvci8tL3N1cHBvcnRzLWNvbG9yLTIuMC4wLnRn
eiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtVTEwRVhPYTJOaitrQVJjSVJpbVpYcDN6Sk1j
PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInRvLWZhc3QtcHJvcGVydGllcyI6
IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4zIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczov
L3JlZ2lzdHJ5Lm5wbWpzLm9yZy90by1mYXN0LXByb3BlcnRpZXMvLS90by1mYXN0LXByb3BlcnRp
ZXMtMS4wLjMudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS11RFZ4K2syTUpiZ3VJeHNH
NDZNRlhlVEtHa2M9IiwKKyAgICAgICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAidG9kb212Yy1h
cHAtY3NzIjogeworICAgICAgInZlcnNpb24iOiAiMi4xLjAiLAorICAgICAgInJlc29sdmVkIjog
Imh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3RvZG9tdmMtYXBwLWNzcy8tL3RvZG9tdmMtYXBw
LWNzcy0yLjEuMC50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXR2SnhiVE9hK2k1ZmVa
TkgwcVNMQlRsaVFxVT0iCisgICAgfSwKKyAgICAidG9kb212Yy1jb21tb24iOiB7CisgICAgICAi
dmVyc2lvbiI6ICIxLjAuMyIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5u
cG1qcy5vcmcvdG9kb212Yy1jb21tb24vLS90b2RvbXZjLWNvbW1vbi0xLjAuMy50Z3oiLAorICAg
ICAgImludGVncml0eSI6ICJzaGExLXk2R0dnUW5LcEFHNUNPdjNkNVRNRUJTM1NITT0iCisgICAg
fSwKKyAgICAidHJpbS1yaWdodCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjEuMC4xIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy90cmltLXJpZ2h0Ly0vdHJp
bS1yaWdodC0xLjAuMS50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGExLXl5NFNBd1orREkz
aDloUUpTNS9rVndUcVlBTT0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9LAorICAgICJ1YS1w
YXJzZXItanMiOiB7CisgICAgICAidmVyc2lvbiI6ICIwLjcuMTQiLAorICAgICAgInJlc29sdmVk
IjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3VhLXBhcnNlci1qcy8tL3VhLXBhcnNlci1q
cy0wLjcuMTQudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1FUTFUK2t3L01td1NFcEs3
NnNrRTB1QXpoOG89IgorICAgIH0sCisgICAgInVnbGlmeS1qcyI6IHsKKyAgICAgICJ2ZXJzaW9u
IjogIjIuOC4yOSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5v
cmcvdWdsaWZ5LWpzLy0vdWdsaWZ5LWpzLTIuOC4yOS50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLUtjVnpNVWdGZTdUaDkxM3pXM3FjdHk1cVdkMD0iLAorICAgICAgImRldiI6IHRydWUs
CisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJzb3VyY2UtbWFwIjogIjAuNS43IiwKKyAg
ICAgICAgInVnbGlmeS10by1icm93c2VyaWZ5IjogIjEuMC4yIiwKKyAgICAgICAgInlhcmdzIjog
IjMuMTAuMCIKKyAgICAgIH0KKyAgICB9LAorICAgICJ1Z2xpZnktdG8tYnJvd3NlcmlmeSI6IHsK
KyAgICAgICJ2ZXJzaW9uIjogIjEuMC4yIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3Jl
Z2lzdHJ5Lm5wbWpzLm9yZy91Z2xpZnktdG8tYnJvd3NlcmlmeS8tL3VnbGlmeS10by1icm93c2Vy
aWZ5LTEuMC4yLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtYmdrazFyMm10YS9qU2VP
YWJXTW9VS0Q0Z3JjPSIsCisgICAgICAiZGV2IjogdHJ1ZSwKKyAgICAgICJvcHRpb25hbCI6IHRy
dWUKKyAgICB9LAorICAgICJ1c2VyLWhvbWUiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjEuMSIs
CisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdXNlci1ob21l
Ly0vdXNlci1ob21lLTEuMS4xLnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtSzF2aU9q
SzJPbnlkNjQwUEtOU0Zja285OFpBPSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAg
InV0aWwtZGVwcmVjYXRlIjogeworICAgICAgInZlcnNpb24iOiAiMS4wLjIiLAorICAgICAgInJl
c29sdmVkIjogImh0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL3V0aWwtZGVwcmVjYXRlLy0vdXRp
bC1kZXByZWNhdGUtMS4wLjIudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1SUTFOeWZw
dzNuTW5ZdnZTMUtLSmdVR2FETTg9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgIm9wdGlv
bmFsIjogdHJ1ZQorICAgIH0sCisgICAgInY4ZmxhZ3MiOiB7CisgICAgICAidmVyc2lvbiI6ICIy
LjEuMSIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvdjhm
bGFncy8tL3Y4ZmxhZ3MtMi4xLjEudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1xckdo
K2pEVVg0amRNaEZJaDFyQUxBdFY1YlE9IiwKKyAgICAgICJkZXYiOiB0cnVlLAorICAgICAgInJl
cXVpcmVzIjogeworICAgICAgICAidXNlci1ob21lIjogIjEuMS4xIgorICAgICAgfQorICAgIH0s
CisgICAgIndoYXR3Zy1mZXRjaCI6IHsKKyAgICAgICJ2ZXJzaW9uIjogIjIuMC4zIiwKKyAgICAg
ICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy93aGF0d2ctZmV0Y2gvLS93
aGF0d2ctZmV0Y2gtMi4wLjMudGd6IiwKKyAgICAgICJpbnRlZ3JpdHkiOiAic2hhMS1uSVRzTGM5
b0dIL3dDOFpPRW5TMFFoZHVISVE9IgorICAgIH0sCisgICAgIndpbmRvdy1zaXplIjogeworICAg
ICAgInZlcnNpb24iOiAiMC4xLjAiLAorICAgICAgInJlc29sdmVkIjogImh0dHBzOi8vcmVnaXN0
cnkubnBtanMub3JnL3dpbmRvdy1zaXplLy0vd2luZG93LXNpemUtMC4xLjAudGd6IiwKKyAgICAg
ICJpbnRlZ3JpdHkiOiAic2hhMS1WRGpOTHFrN0lDNzZPaG4raUlldTU4bFBuSjA9IiwKKyAgICAg
ICJkZXYiOiB0cnVlCisgICAgfSwKKyAgICAid29yZHdyYXAiOiB7CisgICAgICAidmVyc2lvbiI6
ICIwLjAuMiIsCisgICAgICAicmVzb2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcv
d29yZHdyYXAvLS93b3Jkd3JhcC0wLjAuMi50Z3oiLAorICAgICAgImludGVncml0eSI6ICJzaGEx
LXQ1WnB1MExzdEFuNFBWZzhyVkxLRitxaFpEOD0iLAorICAgICAgImRldiI6IHRydWUKKyAgICB9
LAorICAgICJ3cmFwcHkiOiB7CisgICAgICAidmVyc2lvbiI6ICIxLjAuMiIsCisgICAgICAicmVz
b2x2ZWQiOiAiaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvd3JhcHB5Ly0vd3JhcHB5LTEuMC4y
LnRneiIsCisgICAgICAiaW50ZWdyaXR5IjogInNoYTEtdFNROWp6N0Jxalh4TmtZRnZBMFFOdU1L
dHA4PSIsCisgICAgICAiZGV2IjogdHJ1ZQorICAgIH0sCisgICAgInlhcmdzIjogeworICAgICAg
InZlcnNpb24iOiAiMy4xMC4wIiwKKyAgICAgICJyZXNvbHZlZCI6ICJodHRwczovL3JlZ2lzdHJ5
Lm5wbWpzLm9yZy95YXJncy8tL3lhcmdzLTMuMTAuMC50Z3oiLAorICAgICAgImludGVncml0eSI6
ICJzaGExLTkrNTcyRmZkZkIwdE9NRG5UdnZXZ2RGREg5RT0iLAorICAgICAgImRldiI6IHRydWUs
CisgICAgICAicmVxdWlyZXMiOiB7CisgICAgICAgICJjYW1lbGNhc2UiOiAiMS4yLjEiLAorICAg
ICAgICAiY2xpdWkiOiAiMi4xLjAiLAorICAgICAgICAiZGVjYW1lbGl6ZSI6ICIxLjIuMCIsCisg
ICAgICAgICJ3aW5kb3ctc2l6ZSI6ICIwLjEuMCIKKyAgICAgIH0KKyAgICB9CisgIH0KK30KZGlm
ZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMv
YXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L3BhY2thZ2UuanNvbiBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0L3BhY2thZ2UuanNvbgppbmRleCAwZTZmM2Q2ZjI0MDQ5YWVhNWM5NDBjNzcwNTU2M2YzZjA5
NjY1YzM2Li44NTdkMjEwOTk3MGQ4ZjgxMWEzNmNhYTgxZWZlNjhkYzUzM2UwZTgxIDEwMDc1NQot
LS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNlcy90b2RvbXZjL2FyY2hp
dGVjdHVyZS1leGFtcGxlcy9yZWFjdC9wYWNrYWdlLmpzb24KKysrIGIvUGVyZm9ybWFuY2VUZXN0
cy9TcGVlZG9tZXRlci9yZXNvdXJjZXMvdG9kb212Yy9hcmNoaXRlY3R1cmUtZXhhbXBsZXMvcmVh
Y3QvcGFja2FnZS5qc29uCkBAIC0xLDEzICsxLDEzIEBACiB7CiAgICJwcml2YXRlIjogdHJ1ZSwK
ICAgInNjcmlwdHMiOiB7Ci0gICAgIm1ha2UiOiAiYmFiZWwgLS1wbHVnaW5zIHRyYW5zZm9ybS1y
ZWFjdC1qc3gganMvYXBwLmpzeCB8IHVnbGlmeWpzIC1vIGJ1aWxkLm1pbi5qcyIKKyAgICAiYnVp
bGQiOiAiYmFiZWwgLS1wbHVnaW5zIHRyYW5zZm9ybS1yZWFjdC1qc3gganMvYXBwLmpzeCB8IHVn
bGlmeWpzIC1vIGJ1aWxkLm1pbi5qcyIKICAgfSwKICAgImRlcGVuZGVuY2llcyI6IHsKICAgICAi
Y2xhc3NuYW1lcyI6ICJeMi4yLjUiLAogICAgICJkaXJlY3RvciI6ICJeMS4yLjgiLAotICAgICJy
ZWFjdCI6ICJeMTUuNC4wIiwKLSAgICAicmVhY3QtZG9tIjogIl4xNS40LjAiLAorICAgICJyZWFj
dCI6ICIxNS41LjQiLAorICAgICJyZWFjdC1kb20iOiAiMTUuNS40IiwKICAgICAidG9kb212Yy1h
cHAtY3NzIjogIl4yLjAuMCIsCiAgICAgInRvZG9tdmMtY29tbW9uIjogIl4xLjAuMiIKICAgfSwK
ZGlmZiAtLWdpdCBhL1BlcmZvcm1hbmNlVGVzdHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9t
dmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3JlYWN0L3lhcm4ubG9jayBiL1BlcmZvcm1hbmNlVGVz
dHMvU3BlZWRvbWV0ZXIvcmVzb3VyY2VzL3RvZG9tdmMvYXJjaGl0ZWN0dXJlLWV4YW1wbGVzL3Jl
YWN0L3lhcm4ubG9jawpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTUyZGZjMjVmOTVh
MmU0NTU4NmQ3NjY4MzRjZjU2ZWE5YzYyYTkyYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL1NwZWVkb21ldGVyL3Jlc291cmNl
cy90b2RvbXZjL2FyY2hpdGVjdHVyZS1leGFtcGxlcy9yZWFjdC95YXJuLmxvY2sKKysrIC9kZXYv
bnVsbApAQCAtMSwxNDA3ICswLDAgQEAKLSMgVEhJUyBJUyBBTiBBVVRPR0VORVJBVEVEIEZJTEUu
IERPIE5PVCBFRElUIFRISVMgRklMRSBESVJFQ1RMWS4KLSMgeWFybiBsb2NrZmlsZSB2MQotYWJi
cmV2QDE6Ci0gIHZlcnNpb24gIjEuMS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9hYmJyZXYvLS9hYmJyZXYtMS4xLjAudGd6I2QwNTU0YzIyNTY2MzZlMmY1NmU3
YzJlNWFkMTgzZjg1OTQyOGQ4MWYiCi0KLWFqdkBeNC45LjE6Ci0gIHZlcnNpb24gIjQuMTEuNyIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYWp2Ly0vYWp2LTQuMTEu
Ny50Z3ojODY1NWE1ZDg2ZDA4MjQ5ODVjYzQ3MWExZDkxM2ZiNjcyOWEwZWM0OCIKLSAgZGVwZW5k
ZW5jaWVzOgotICAgIGNvICJeNC42LjAiCi0gICAganNvbi1zdGFibGUtc3RyaW5naWZ5ICJeMS4w
LjEiCi0KLWFsaWduLXRleHRAXjAuMS4xLCBhbGlnbi10ZXh0QF4wLjEuMzoKLSAgdmVyc2lvbiAi
MC4xLjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FsaWduLXRl
eHQvLS9hbGlnbi10ZXh0LTAuMS40LnRneiMwY2Q5MGE1NjEwOTNmMzVkMGE5OTI1NmMyMmI3MDY5
NDMzZmFkMTE3IgotICBkZXBlbmRlbmNpZXM6Ci0gICAga2luZC1vZiAiXjMuMC4yIgotICAgIGxv
bmdlc3QgIl4xLjAuMSIKLSAgICByZXBlYXQtc3RyaW5nICJeMS41LjIiCi0KLWFuc2ktcmVnZXhA
XjIuMC4wOgotICB2ZXJzaW9uICIyLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vYW5zaS1yZWdleC8tL2Fuc2ktcmVnZXgtMi4xLjEudGd6I2MzYjMzYWI1ZWUz
NjBkODZlMGU2MjhmMDQ2OGFlN2VmMjdkNjU0ZGYiCi0KLWFuc2ktc3R5bGVzQF4yLjIuMToKLSAg
dmVyc2lvbiAiMi4yLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2Fuc2ktc3R5bGVzLy0vYW5zaS1zdHlsZXMtMi4yLjEudGd6I2I0MzJkZDMzNThiNjM0Y2Y3NWUx
ZTQ2NjQzNjgyNDA1MzNjMWRkYmUiCi0KLWFueW1hdGNoQF4xLjMuMDoKLSAgdmVyc2lvbiAiMS4z
LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2FueW1hdGNoLy0v
YW55bWF0Y2gtMS4zLjAudGd6I2EzZTUyZmEzOTE2OGM4MjVmZjU3YjAyNDgxMjZjZTVhOGZmOTU1
MDciCi0gIGRlcGVuZGVuY2llczoKLSAgICBhcnJpZnkgIl4xLjAuMCIKLSAgICBtaWNyb21hdGNo
ICJeMi4xLjUiCi0KLWFwcm9iYUBeMS4wLjM6Ci0gIHZlcnNpb24gIjEuMS4xIgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hcHJvYmEvLS9hcHJvYmEtMS4xLjEudGd6
Izk1ZDM2MDBmMDc3MTBhYTBlOTI5OGM3MjZhZDVlY2YyZWFjYmFiYWIiCi0KLWFyZS13ZS10aGVy
ZS15ZXRAfjEuMS4yOgotICB2ZXJzaW9uICIxLjEuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vYXJlLXdlLXRoZXJlLXlldC8tL2FyZS13ZS10aGVyZS15ZXQtMS4x
LjQudGd6I2JiNWRjYTM4MmJiOTRmMDVlMTUxOTQzNzNkMTZmZDNiYTFjYTExMGQiCi0gIGRlcGVu
ZGVuY2llczoKLSAgICBkZWxlZ2F0ZXMgIl4xLjAuMCIKLSAgICByZWFkYWJsZS1zdHJlYW0gIl4y
LjAuNiIKLQotYXJyLWRpZmZAXjIuMC4wOgotICB2ZXJzaW9uICIyLjAuMCIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXJyLWRpZmYvLS9hcnItZGlmZi0yLjAuMC50
Z3ojOGYzYjgyN2Y5NTVhOGJkNjY5Njk3ZTRhNDI1NmFjM2NlYWUzNTZjZiIKLSAgZGVwZW5kZW5j
aWVzOgotICAgIGFyci1mbGF0dGVuICJeMS4wLjEiCi0KLWFyci1mbGF0dGVuQF4xLjAuMToKLSAg
dmVyc2lvbiAiMS4wLjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2Fyci1mbGF0dGVuLy0vYXJyLWZsYXR0ZW4tMS4wLjMudGd6I2EyNzRlZDg1YWMwODg0OWI2YmQ3
ODQ3YzQ1ODA3NDVkYzUxYWRmYjEiCi0KLWFycmF5LXVuaXF1ZUBeMC4yLjE6Ci0gIHZlcnNpb24g
IjAuMi4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hcnJheS11
bmlxdWUvLS9hcnJheS11bmlxdWUtMC4yLjEudGd6I2ExZDk3Y2NhZmNiYzI2MjVjYzcwZmFkY2Vi
MzZhNTBjNThiMDFhNTMiCi0KLWFycmlmeUBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4xIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hcnJpZnkvLS9hcnJpZnktMS4w
LjEudGd6Izg5ODUwOGRhMjIyNmYzODBkZjkwNDcyODQ1Njg0OWMxNTAxYTRiMGQiCi0KLWFzYXBA
fjIuMC4zOgotICB2ZXJzaW9uICIyLjAuNSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vYXNhcC8tL2FzYXAtMi4wLjUudGd6IzUyMjc2NWI1MGMzNTEwNDkwZTUyZDdk
Y2ZlMDg1ZWY5YmE5Njk1OGYiCi0KLWFzbjFAfjAuMi4zOgotICB2ZXJzaW9uICIwLjIuMyIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXNuMS8tL2FzbjEtMC4yLjMu
dGd6I2RhYzg3ODc3MTNjOTk2Njg0OWZjODE4MDc3N2ViZTljMWRkZjNiODYiCi0KLWFzc2VydC1w
bHVzQF4wLjIuMDoKLSAgdmVyc2lvbiAiMC4yLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2Fzc2VydC1wbHVzLy0vYXNzZXJ0LXBsdXMtMC4yLjAudGd6I2Q3NGUx
Yjg3ZTdhZmZjMGRiOGFhZGI3MDIxZjNmZTQ4MTAxYWIyMzQiCi0KLWFzc2VydC1wbHVzQF4xLjAu
MCwgYXNzZXJ0LXBsdXNAMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9hc3NlcnQtcGx1cy8tL2Fzc2VydC1wbHVzLTEuMC4w
LnRneiNmMTJlMGYzYzVkNzdiMGIxY2RkOTE0Njk0MmU0ZTk2YzFlNGRkNTI1IgotCi1hc3luYy1l
YWNoQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2FzeW5jLWVhY2gvLS9hc3luYy1lYWNoLTEuMC4xLnRneiMxOWQzODZh
MWQ5ZWRjNmU3YzFjODVkMzg4YWVkYmNjNTZkMzM2MDJkIgotCi1hc3luY2tpdEBeMC40LjA6Ci0g
IHZlcnNpb24gIjAuNC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9hc3luY2tpdC8tL2FzeW5ja2l0LTAuNC4wLnRneiNjNzllZDk3ZjdmMzRjYjhmMmJhMWJjOTc5
MGJjYzM2NjQ3NGI0Yjc5IgotCi1hd3Mtc2lnbjJAfjAuNi4wOgotICB2ZXJzaW9uICIwLjYuMCIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYXdzLXNpZ24yLy0vYXdz
LXNpZ24yLTAuNi4wLnRneiMxNDM0MmRkMzhkYmNjOTRkMGU1Yjg3ZDc2M2NkNjM2MTJjMGU3OTRm
IgotCi1hd3M0QF4xLjIuMToKLSAgdmVyc2lvbiAiMS42LjAiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2F3czQvLS9hd3M0LTEuNi4wLnRneiM4M2VmNWNhODYwYjJi
MzJlNGEwZGVlZGVlOGM3NzFiOWRiNTc0NzFlIgotCi1iYWJlbC1jbGlAXjYuMTAuMToKLSAgdmVy
c2lvbiAiNi4yNC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9i
YWJlbC1jbGkvLS9iYWJlbC1jbGktNi4yNC4xLnRneiMyMDdjZDcwNWJiYTYxNDg5YjJlYTQxYjUz
MTIzNDFjZjZhY2EyMjgzIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtY29yZSAiXjYuMjQu
MSIKLSAgICBiYWJlbC1wb2x5ZmlsbCAiXjYuMjMuMCIKLSAgICBiYWJlbC1yZWdpc3RlciAiXjYu
MjQuMSIKLSAgICBiYWJlbC1ydW50aW1lICJeNi4yMi4wIgotICAgIGNvbW1hbmRlciAiXjIuOC4x
IgotICAgIGNvbnZlcnQtc291cmNlLW1hcCAiXjEuMS4wIgotICAgIGZzLXJlYWRkaXItcmVjdXJz
aXZlICJeMS4wLjAiCi0gICAgZ2xvYiAiXjcuMC4wIgotICAgIGxvZGFzaCAiXjQuMi4wIgotICAg
IG91dHB1dC1maWxlLXN5bmMgIl4xLjEuMCIKLSAgICBwYXRoLWlzLWFic29sdXRlICJeMS4wLjAi
Ci0gICAgc2xhc2ggIl4xLjAuMCIKLSAgICBzb3VyY2UtbWFwICJeMC41LjAiCi0gICAgdjhmbGFn
cyAiXjIuMC4xMCIKLSAgb3B0aW9uYWxEZXBlbmRlbmNpZXM6Ci0gICAgY2hva2lkYXIgIl4xLjYu
MSIKLQotYmFiZWwtY29kZS1mcmFtZUBeNi4yMi4wOgotICB2ZXJzaW9uICI2LjIyLjAiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWNvZGUtZnJhbWUvLS9i
YWJlbC1jb2RlLWZyYW1lLTYuMjIuMC50Z3ojMDI3NjIwYmVlNTY3YTg4YzMyNTYxNTc0ZTdmZDA4
MDFkMzMxMThlNCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGNoYWxrICJeMS4xLjAiCi0gICAgZXN1
dGlscyAiXjIuMC4yIgotICAgIGpzLXRva2VucyAiXjMuMC4wIgotCi1iYWJlbC1jb3JlQF42LjI0
LjE6Ci0gIHZlcnNpb24gIjYuMjQuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vYmFiZWwtY29yZS8tL2JhYmVsLWNvcmUtNi4yNC4xLnRneiM4YzQyODU2NGRjZTFl
MWY0MWZiMzM3ZWMzNGY0YzNiMDIyYjVhZDgzIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwt
Y29kZS1mcmFtZSAiXjYuMjIuMCIKLSAgICBiYWJlbC1nZW5lcmF0b3IgIl42LjI0LjEiCi0gICAg
YmFiZWwtaGVscGVycyAiXjYuMjQuMSIKLSAgICBiYWJlbC1tZXNzYWdlcyAiXjYuMjMuMCIKLSAg
ICBiYWJlbC1yZWdpc3RlciAiXjYuMjQuMSIKLSAgICBiYWJlbC1ydW50aW1lICJeNi4yMi4wIgot
ICAgIGJhYmVsLXRlbXBsYXRlICJeNi4yNC4xIgotICAgIGJhYmVsLXRyYXZlcnNlICJeNi4yNC4x
IgotICAgIGJhYmVsLXR5cGVzICJeNi4yNC4xIgotICAgIGJhYnlsb24gIl42LjExLjAiCi0gICAg
Y29udmVydC1zb3VyY2UtbWFwICJeMS4xLjAiCi0gICAgZGVidWcgIl4yLjEuMSIKLSAgICBqc29u
NSAiXjAuNS4wIgotICAgIGxvZGFzaCAiXjQuMi4wIgotICAgIG1pbmltYXRjaCAiXjMuMC4yIgot
ICAgIHBhdGgtaXMtYWJzb2x1dGUgIl4xLjAuMCIKLSAgICBwcml2YXRlICJeMC4xLjYiCi0gICAg
c2xhc2ggIl4xLjAuMCIKLSAgICBzb3VyY2UtbWFwICJeMC41LjAiCi0KLWJhYmVsLWdlbmVyYXRv
ckBeNi4yNC4xOgotICB2ZXJzaW9uICI2LjI0LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWdlbmVyYXRvci8tL2JhYmVsLWdlbmVyYXRvci02LjI0LjEu
dGd6I2U3MTVmNDg2YzU4ZGVkMjU2NDlkODg4OTQ0ZDUyYWEwN2M1ZDk0OTciCi0gIGRlcGVuZGVu
Y2llczoKLSAgICBiYWJlbC1tZXNzYWdlcyAiXjYuMjMuMCIKLSAgICBiYWJlbC1ydW50aW1lICJe
Ni4yMi4wIgotICAgIGJhYmVsLXR5cGVzICJeNi4yNC4xIgotICAgIGRldGVjdC1pbmRlbnQgIl40
LjAuMCIKLSAgICBqc2VzYyAiXjEuMy4wIgotICAgIGxvZGFzaCAiXjQuMi4wIgotICAgIHNvdXJj
ZS1tYXAgIl4wLjUuMCIKLSAgICB0cmltLXJpZ2h0ICJeMS4wLjEiCi0KLWJhYmVsLWhlbHBlci1i
dWlsZGVyLXJlYWN0LWpzeEBeNi4yNC4xOgotICB2ZXJzaW9uICI2LjI0LjEiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWhlbHBlci1idWlsZGVyLXJlYWN0
LWpzeC8tL2JhYmVsLWhlbHBlci1idWlsZGVyLXJlYWN0LWpzeC02LjI0LjEudGd6IzBhZDc5MTdl
MzNjOGQ3NTFlNjQ2ZGFjYTRlNzdjYzE5Mzc3ZDJjYmMiCi0gIGRlcGVuZGVuY2llczoKLSAgICBi
YWJlbC1ydW50aW1lICJeNi4yMi4wIgotICAgIGJhYmVsLXR5cGVzICJeNi4yNC4xIgotICAgIGVz
dXRpbHMgIl4yLjAuMCIKLQotYmFiZWwtaGVscGVyc0BeNi4yNC4xOgotICB2ZXJzaW9uICI2LjI0
LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLWhlbHBl
cnMvLS9iYWJlbC1oZWxwZXJzLTYuMjQuMS50Z3ojMzQ3MWRlOWNhZWMzODhlNWM4NTBlNTk3ZTU4
YTI2ZGRmMzc2MDJiMiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJhYmVsLXJ1bnRpbWUgIl42LjIy
LjAiCi0gICAgYmFiZWwtdGVtcGxhdGUgIl42LjI0LjEiCi0KLWJhYmVsLW1lc3NhZ2VzQF42LjIz
LjA6Ci0gIHZlcnNpb24gIjYuMjMuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vYmFiZWwtbWVzc2FnZXMvLS9iYWJlbC1tZXNzYWdlcy02LjIzLjAudGd6I2YzY2Rm
NDcwMzg1ODAzNWIyYTI5NTFjNmVjNWVkZjZjNjJmMjYzMGUiCi0gIGRlcGVuZGVuY2llczoKLSAg
ICBiYWJlbC1ydW50aW1lICJeNi4yMi4wIgotCi1iYWJlbC1wbHVnaW4tc3ludGF4LWpzeEBeNi44
LjA6Ci0gIHZlcnNpb24gIjYuMTguMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vYmFiZWwtcGx1Z2luLXN5bnRheC1qc3gvLS9iYWJlbC1wbHVnaW4tc3ludGF4LWpz
eC02LjE4LjAudGd6IzBhZjMyYTlhNmUxM2NhN2EzZmQ1MDY5ZTYyZDdiMGY1OGQwZDg5NDYiCi0K
LWJhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVhY3QtanN4QF42LjguMDoKLSAgdmVyc2lvbiAiNi4y
NC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC1wbHVn
aW4tdHJhbnNmb3JtLXJlYWN0LWpzeC8tL2JhYmVsLXBsdWdpbi10cmFuc2Zvcm0tcmVhY3QtanN4
LTYuMjQuMS50Z3ojODQwYTAyOGU3ZGY0NjBkZmMzYTJkMjlmMGMwZDkxZjYzNzZlNjZhMyIKLSAg
ZGVwZW5kZW5jaWVzOgotICAgIGJhYmVsLWhlbHBlci1idWlsZGVyLXJlYWN0LWpzeCAiXjYuMjQu
MSIKLSAgICBiYWJlbC1wbHVnaW4tc3ludGF4LWpzeCAiXjYuOC4wIgotICAgIGJhYmVsLXJ1bnRp
bWUgIl42LjIyLjAiCi0KLWJhYmVsLXBsdWdpbi11Z2xpZnlAXjEuMC4yOgotICB2ZXJzaW9uICIx
LjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcGx1
Z2luLXVnbGlmeS8tL2JhYmVsLXBsdWdpbi11Z2xpZnktMS4wLjIudGd6I2Q3YmNkYWIxMzJhZmJh
ZGIwYmYzNDc5YTU2NjZlYjhkZTA4MjYxMGYiCi0gIGRlcGVuZGVuY2llczoKLSAgICB1Z2xpZnkt
anMgIl4yLjQuMjQiCi0KLWJhYmVsLXBvbHlmaWxsQF42LjIzLjA6Ci0gIHZlcnNpb24gIjYuMjMu
MCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtcG9seWZp
bGwvLS9iYWJlbC1wb2x5ZmlsbC02LjIzLjAudGd6IzgzNjRjYTYyZGY4ZWFmYjgzMDQ5OWY2OTkx
Nzc0NjZjM2IwMzQ5OWQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJlbC1ydW50aW1lICJeNi4y
Mi4wIgotICAgIGNvcmUtanMgIl4yLjQuMCIKLSAgICByZWdlbmVyYXRvci1ydW50aW1lICJeMC4x
MC4wIgotCi1iYWJlbC1yZWdpc3RlckBeNi4yNC4xOgotICB2ZXJzaW9uICI2LjI0LjEiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhYmVsLXJlZ2lzdGVyLy0vYmFi
ZWwtcmVnaXN0ZXItNi4yNC4xLnRneiM3ZTEwZTEzYTJmNzEwNjViZGZhZDVhMTc4N2JhNDViY2E2
ZGVkNzVmIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYmFiZWwtY29yZSAiXjYuMjQuMSIKLSAgICBi
YWJlbC1ydW50aW1lICJeNi4yMi4wIgotICAgIGNvcmUtanMgIl4yLjQuMCIKLSAgICBob21lLW9y
LXRtcCAiXjIuMC4wIgotICAgIGxvZGFzaCAiXjQuMi4wIgotICAgIG1rZGlycCAiXjAuNS4xIgot
ICAgIHNvdXJjZS1tYXAtc3VwcG9ydCAiXjAuNC4yIgotCi1iYWJlbC1ydW50aW1lQF42LjIyLjA6
Ci0gIHZlcnNpb24gIjYuMjMuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vYmFiZWwtcnVudGltZS8tL2JhYmVsLXJ1bnRpbWUtNi4yMy4wLnRneiMwYTk0ODlmMTQ0
ZGU3MGVmYjNjZTQzMDBhY2NkYjMyOWUyZmM1NDNiIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgY29y
ZS1qcyAiXjIuNC4wIgotICAgIHJlZ2VuZXJhdG9yLXJ1bnRpbWUgIl4wLjEwLjAiCi0KLWJhYmVs
LXRlbXBsYXRlQF42LjI0LjE6Ci0gIHZlcnNpb24gIjYuMjQuMSIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vYmFiZWwtdGVtcGxhdGUvLS9iYWJlbC10ZW1wbGF0ZS02
LjI0LjEudGd6IzA0YWU1MTRmMWY5M2IzYTI1MzdmMmEwZjYwYTVhNDVmYjgzMDgzMzMiCi0gIGRl
cGVuZGVuY2llczoKLSAgICBiYWJlbC1ydW50aW1lICJeNi4yMi4wIgotICAgIGJhYmVsLXRyYXZl
cnNlICJeNi4yNC4xIgotICAgIGJhYmVsLXR5cGVzICJeNi4yNC4xIgotICAgIGJhYnlsb24gIl42
LjExLjAiCi0gICAgbG9kYXNoICJeNC4yLjAiCi0KLWJhYmVsLXRyYXZlcnNlQF42LjI0LjE6Ci0g
IHZlcnNpb24gIjYuMjQuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vYmFiZWwtdHJhdmVyc2UvLS9iYWJlbC10cmF2ZXJzZS02LjI0LjEudGd6I2FiMzY2NzNmZDM1
NmY5YTA5NDg2NTllN2IzMzhkNWZlYWRiMzE2OTUiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiYWJl
bC1jb2RlLWZyYW1lICJeNi4yMi4wIgotICAgIGJhYmVsLW1lc3NhZ2VzICJeNi4yMy4wIgotICAg
IGJhYmVsLXJ1bnRpbWUgIl42LjIyLjAiCi0gICAgYmFiZWwtdHlwZXMgIl42LjI0LjEiCi0gICAg
YmFieWxvbiAiXjYuMTUuMCIKLSAgICBkZWJ1ZyAiXjIuMi4wIgotICAgIGdsb2JhbHMgIl45LjAu
MCIKLSAgICBpbnZhcmlhbnQgIl4yLjIuMCIKLSAgICBsb2Rhc2ggIl40LjIuMCIKLQotYmFiZWwt
dHlwZXNAXjYuMjQuMToKLSAgdmVyc2lvbiAiNi4yNC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9iYWJlbC10eXBlcy8tL2JhYmVsLXR5cGVzLTYuMjQuMS50Z3oj
YTEzNjg3OWRjMTViMzYwNmJkYTBkOTBjMWZjNzQzMDRjMmZmMDk3NSIKLSAgZGVwZW5kZW5jaWVz
OgotICAgIGJhYmVsLXJ1bnRpbWUgIl42LjIyLjAiCi0gICAgZXN1dGlscyAiXjIuMC4yIgotICAg
IGxvZGFzaCAiXjQuMi4wIgotICAgIHRvLWZhc3QtcHJvcGVydGllcyAiXjEuMC4xIgotCi1iYWJ5
bG9uQF42LjExLjAsIGJhYnlsb25AXjYuMTUuMDoKLSAgdmVyc2lvbiAiNi4xNy4wIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9iYWJ5bG9uLy0vYmFieWxvbi02LjE3
LjAudGd6IzM3ZGE5NDg4Nzg0ODhiOWM0ZTNjNDAzODg5M2ZhMzMxNGIzZmM5MzIiCi0KLWJhbGFu
Y2VkLW1hdGNoQF4wLjQuMToKLSAgdmVyc2lvbiAiMC40LjIiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JhbGFuY2VkLW1hdGNoLy0vYmFsYW5jZWQtbWF0Y2gtMC40
LjIudGd6I2NiM2YzZTNjNzMyZGMwZjAxZWU3MGI0MDNmMzAyZTYxZDc3MDk4MzgiCi0KLWJjcnlw
dC1wYmtkZkBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9iY3J5cHQtcGJrZGYvLS9iY3J5cHQtcGJrZGYtMS4wLjEudGd6
IzYzYmM1ZGNiNjEzMzFiOTJiYzA1ZmQ1Mjg5NTNjMzM0NjJhMDZmOGQiCi0gIGRlcGVuZGVuY2ll
czoKLSAgICB0d2VldG5hY2wgIl4wLjE0LjMiCi0KLWJpbmFyeS1leHRlbnNpb25zQF4xLjAuMDoK
LSAgdmVyc2lvbiAiMS44LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2JpbmFyeS1leHRlbnNpb25zLy0vYmluYXJ5LWV4dGVuc2lvbnMtMS44LjAudGd6IzQ4ZWM4
ZDE2ZGY0Mzc3ZWFlNWZhNTg4NDY4MjQ4MGFmNGQ5NWM3NzQiCi0KLWJsb2NrLXN0cmVhbUAqOgot
ICB2ZXJzaW9uICIwLjAuOSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vYmxvY2stc3RyZWFtLy0vYmxvY2stc3RyZWFtLTAuMC45LnRneiMxM2ViZmU3NzhhMDMyMDVj
ZmUwMzc1MTQ4MWViYjRiMzMwMGMxMjZhIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgaW5oZXJpdHMg
In4yLjAuMCIKLQotYm9vbUAyLngueDoKLSAgdmVyc2lvbiAiMi4xMC4xIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ib29tLy0vYm9vbS0yLjEwLjEudGd6IzM5Yzg5
MThjZWZmNTc5OWY4M2Y5NDkyYTg0OGY2MjVhZGQwYzc2NmYiCi0gIGRlcGVuZGVuY2llczoKLSAg
ICBob2VrICIyLngueCIKLQotYnJhY2UtZXhwYW5zaW9uQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4x
LjciCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2JyYWNlLWV4cGFu
c2lvbi8tL2JyYWNlLWV4cGFuc2lvbi0xLjEuNy50Z3ojM2VmZmMzYzUwZTAwMDUzMWZiNzIwZWFm
ZjgwZjBhZThlZjIzY2Y1OSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJhbGFuY2VkLW1hdGNoICJe
MC40LjEiCi0gICAgY29uY2F0LW1hcCAiMC4wLjEiCi0KLWJyYWNlc0BeMS44LjI6Ci0gIHZlcnNp
b24gIjEuOC41IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9icmFj
ZXMvLS9icmFjZXMtMS44LjUudGd6I2JhNzc5NjJlMTJkZmY5NjlkNmI3NjcxMWU5MTRiNzM3ODU3
YmY2YTciCi0gIGRlcGVuZGVuY2llczoKLSAgICBleHBhbmQtcmFuZ2UgIl4xLjguMSIKLSAgICBw
cmVzZXJ2ZSAiXjAuMi4wIgotICAgIHJlcGVhdC1lbGVtZW50ICJeMS4xLjIiCi0KLWJ1ZmZlci1z
aGltc0B+MS4wLjA6Ci0gIHZlcnNpb24gIjEuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9idWZmZXItc2hpbXMvLS9idWZmZXItc2hpbXMtMS4wLjAudGd6Izk5
NzhjZTMxNzM4OGM2NDlhZDg3OTMwMjhjMzQ3N2VmMDQ0YThiNTEiCi0KLWNhbWVsY2FzZUBeMS4w
LjI6Ci0gIHZlcnNpb24gIjEuMi4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9jYW1lbGNhc2UvLS9jYW1lbGNhc2UtMS4yLjEudGd6IzliYjUzMDRkMmUwYjU2Njk4
YjJjNzU4YjA4YTNlYWE5ZGFhNThhMzkiCi0KLWNhc2VsZXNzQH4wLjEyLjA6Ci0gIHZlcnNpb24g
IjAuMTIuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY2FzZWxl
c3MvLS9jYXNlbGVzcy0wLjEyLjAudGd6IzFiNjgxYzIxZmY4NDAzM2M4MjY1NDMwOTA2ODk0MjBk
MTg3MTUxZGMiCi0KLWNlbnRlci1hbGlnbkBeMC4xLjE6Ci0gIHZlcnNpb24gIjAuMS4zIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jZW50ZXItYWxpZ24vLS9jZW50
ZXItYWxpZ24tMC4xLjMudGd6I2FhMGQzMjYyOWI2ZWU5NzIyMDA0MTFjYmQ0NDYxYzkwN2JjMmI3
YWQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhbGlnbi10ZXh0ICJeMC4xLjMiCi0gICAgbGF6eS1j
YWNoZSAiXjEuMC4zIgotCi1jaGFsa0BeMS4xLjA6Ci0gIHZlcnNpb24gIjEuMS4zIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jaGFsay8tL2NoYWxrLTEuMS4zLnRn
eiNhODExNWM1NWU0YTcwMmZlNGQxNTBhYmQzODcyODIyYTdlMDlmYzk4IgotICBkZXBlbmRlbmNp
ZXM6Ci0gICAgYW5zaS1zdHlsZXMgIl4yLjIuMSIKLSAgICBlc2NhcGUtc3RyaW5nLXJlZ2V4cCAi
XjEuMC4yIgotICAgIGhhcy1hbnNpICJeMi4wLjAiCi0gICAgc3RyaXAtYW5zaSAiXjMuMC4wIgot
ICAgIHN1cHBvcnRzLWNvbG9yICJeMi4wLjAiCi0KLWNob2tpZGFyQF4xLjYuMToKLSAgdmVyc2lv
biAiMS42LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2Nob2tp
ZGFyLy0vY2hva2lkYXItMS42LjEudGd6IzJmNDQ0N2FiNWU5NmU1MGZiM2Q3ODlmZDkwZDRjNzJl
MGU0YzcwYzIiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhbnltYXRjaCAiXjEuMy4wIgotICAgIGFz
eW5jLWVhY2ggIl4xLjAuMCIKLSAgICBnbG9iLXBhcmVudCAiXjIuMC4wIgotICAgIGluaGVyaXRz
ICJeMi4wLjEiCi0gICAgaXMtYmluYXJ5LXBhdGggIl4xLjAuMCIKLSAgICBpcy1nbG9iICJeMi4w
LjAiCi0gICAgcGF0aC1pcy1hYnNvbHV0ZSAiXjEuMC4wIgotICAgIHJlYWRkaXJwICJeMi4wLjAi
Ci0gIG9wdGlvbmFsRGVwZW5kZW5jaWVzOgotICAgIGZzZXZlbnRzICJeMS4wLjAiCi0KLWNsYXNz
bmFtZXNAXjIuMi41OgotICB2ZXJzaW9uICIyLjIuNSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vY2xhc3NuYW1lcy8tL2NsYXNzbmFtZXMtMi4yLjUudGd6I2ZiMzgw
MWQ0NTM0Njc2NDllZjM2MDNjN2Q2MWEwMmJkMTI5YmRlNmQiCi0KLWNsaXVpQF4yLjEuMDoKLSAg
dmVyc2lvbiAiMi4xLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2NsaXVpLy0vY2xpdWktMi4xLjAudGd6IzRiNDc1NzYwZmY4MDI2NGM3NjJjM2ExNzE5MDMyZTkx
YzdmZWEwZDEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBjZW50ZXItYWxpZ24gIl4wLjEuMSIKLSAg
ICByaWdodC1hbGlnbiAiXjAuMS4xIgotICAgIHdvcmR3cmFwICIwLjAuMiIKLQotY29AXjQuNi4w
OgotICB2ZXJzaW9uICI0LjYuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vY28vLS9jby00LjYuMC50Z3ojNmVhNmJkZjNkODUzYWU1NGNjYjhlNDdiZmEwYmYzZjkw
MzFmYjE4NCIKLQotY29kZS1wb2ludC1hdEBeMS4wLjA6Ci0gIHZlcnNpb24gIjEuMS4wIgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb2RlLXBvaW50LWF0Ly0vY29k
ZS1wb2ludC1hdC0xLjEuMC50Z3ojMGQwNzBiNGQwNDNhNWJlYTMzYTJmMWE0MGUyZWRiM2Q5YTRj
Y2Y3NyIKLQotY29tYmluZWQtc3RyZWFtQF4xLjAuNSwgY29tYmluZWQtc3RyZWFtQH4xLjAuNToK
LSAgdmVyc2lvbiAiMS4wLjUiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2NvbWJpbmVkLXN0cmVhbS8tL2NvbWJpbmVkLXN0cmVhbS0xLjAuNS50Z3ojOTM4MzcwYTU3
YjRhNTFkZWEyYzc3YzE1ZDVjNWZkZjg5NTE2NDAwOSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGRl
bGF5ZWQtc3RyZWFtICJ+MS4wLjAiCi0KLWNvbW1hbmRlckBeMi44LjE6Ci0gIHZlcnNpb24gIjIu
OS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb21tYW5kZXIv
LS9jb21tYW5kZXItMi45LjAudGd6IzljOTkwOTQxNzZlMTIyNDBjYjIyZDZjNTE0NjA5ODQwMGZl
MGY3ZDQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBncmFjZWZ1bC1yZWFkbGluayAiPj0gMS4wLjAi
Ci0KLWNvbmNhdC1tYXBAMC4wLjE6Ci0gIHZlcnNpb24gIjAuMC4xIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jb25jYXQtbWFwLy0vY29uY2F0LW1hcC0wLjAuMS50
Z3ojZDhhOTZiZDc3ZmQ2OGRmNzc5M2E3MzAzNmEzYmEwZDU0MDVkNDc3YiIKLQotY29uc29sZS1j
b250cm9sLXN0cmluZ3NAXjEuMC4wLCBjb25zb2xlLWNvbnRyb2wtc3RyaW5nc0B+MS4xLjA6Ci0g
IHZlcnNpb24gIjEuMS4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9jb25zb2xlLWNvbnRyb2wtc3RyaW5ncy8tL2NvbnNvbGUtY29udHJvbC1zdHJpbmdzLTEuMS4w
LnRneiMzZDdjZjQ0NjRkYjY0NDZlYTY0NGJmNGIzOTUwN2Y5ODUxMDA4ZThlIgotCi1jb252ZXJ0
LXNvdXJjZS1tYXBAXjEuMS4wOgotICB2ZXJzaW9uICIxLjUuMCIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29udmVydC1zb3VyY2UtbWFwLy0vY29udmVydC1zb3Vy
Y2UtbWFwLTEuNS4wLnRneiM5YWNkNzA4NTFjNmQ1ZGZkZDkzZDkyODJlNWVkZjk0YTAzZmY0NmI1
IgotCi1jb3JlLWpzQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4yLjciCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2NvcmUtanMvLS9jb3JlLWpzLTEuMi43LnRneiM2NTIy
OTRjMTQ2NTFkYjI4ZmE5M2JkMmQ1ZmYyOTgzYTRmMDhjNjM2IgotCi1jb3JlLWpzQF4yLjQuMDoK
LSAgdmVyc2lvbiAiMi40LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2NvcmUtanMvLS9jb3JlLWpzLTIuNC4xLnRneiM0ZGU5MTFlNjY3YjBlYWU5MTI0ZTM0MjU0
YjUzYWVhNmZjNjE4ZDNlIgotCi1jb3JlLXV0aWwtaXNAfjEuMC4wOgotICB2ZXJzaW9uICIxLjAu
MiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vY29yZS11dGlsLWlz
Ly0vY29yZS11dGlsLWlzLTEuMC4yLnRneiNiNWZkNTQyMjBhYTJiYzVhYjU3YWFiNzE0MGM5NDA3
NTQ1MDNjMWE3IgotCi1jcnlwdGlsZXNAMi54Lng6Ci0gIHZlcnNpb24gIjIuMC41IgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9jcnlwdGlsZXMvLS9jcnlwdGlsZXMt
Mi4wLjUudGd6IzNiZGZlY2RjNjA4MTQ3YzFjNjcyMDJmYTI5MWU3ZGNhNTllYWEzYjgiCi0gIGRl
cGVuZGVuY2llczoKLSAgICBib29tICIyLngueCIKLQotZGFzaGRhc2hAXjEuMTIuMDoKLSAgdmVy
c2lvbiAiMS4xNC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9k
YXNoZGFzaC8tL2Rhc2hkYXNoLTEuMTQuMS50Z3ojODUzY2ZhMGY3Y2JlMmZlZDVkZTIwMzI2Yjhk
ZDU4MTAzNWY2ZTJmMCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGFzc2VydC1wbHVzICJeMS4wLjAi
Ci0KLWRlYnVnQF4yLjEuMSwgZGVidWdAXjIuMi4wOgotICB2ZXJzaW9uICIyLjYuNiIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZGVidWcvLS9kZWJ1Zy0yLjYuNi50
Z3ojYTlmYTZmYmU5Y2E0M2NmMWU3OWY3M2I3NWMwMTg5Y2JiN2Q2ZGI1YSIKLSAgZGVwZW5kZW5j
aWVzOgotICAgIG1zICIwLjcuMyIKLQotZGVjYW1lbGl6ZUBeMS4wLjA6Ci0gIHZlcnNpb24gIjEu
Mi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9kZWNhbWVsaXpl
Ly0vZGVjYW1lbGl6ZS0xLjIuMC50Z3ojZjY1MzRkMTUxNDgyNjliMjAzNTJlN2JlZTI2ZjUwMWY5
YTE5MTI5MCIKLQotZGVlcC1leHRlbmRAfjAuNC4wOgotICB2ZXJzaW9uICIwLjQuMSIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZGVlcC1leHRlbmQvLS9kZWVwLWV4
dGVuZC0wLjQuMS50Z3ojZWZlNDExM2QwODA4NWY0ZTZmOTY4Nzc1OTgxMGY4MDc0NjllMjI1MyIK
LQotZGVsYXllZC1zdHJlYW1AfjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZGVsYXllZC1zdHJlYW0vLS9kZWxheWVkLXN0
cmVhbS0xLjAuMC50Z3ojZGYzYWUxOTlhY2FkZmI3ZDQ0MGFhYWUwYjI5ZTIyNzJiMjRlYzYxOSIK
LQotZGVsZWdhdGVzQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2RlbGVnYXRlcy8tL2RlbGVnYXRlcy0xLjAuMC50Z3oj
ODRjNmUxNTliODE5MDRmZGNhNTlhMGVmNDRjZDg3MGQzMTI1MGY5YSIKLQotZGV0ZWN0LWluZGVu
dEBeNC4wLjA6Ci0gIHZlcnNpb24gIjQuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9kZXRlY3QtaW5kZW50Ly0vZGV0ZWN0LWluZGVudC00LjAuMC50Z3ojZjc2
ZDA2NDM1MmNkZjQzYTFjYjZjZTYxOWM0ZWUzYTk0NzVkZTIwOCIKLSAgZGVwZW5kZW5jaWVzOgot
ICAgIHJlcGVhdGluZyAiXjIuMC4wIgotCi1kaXJlY3RvckBeMS4yLjg6Ci0gIHZlcnNpb24gIjEu
Mi44IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9kaXJlY3Rvci8t
L2RpcmVjdG9yLTEuMi44LnRneiNjNmQ5YjRkZDg5MGU5YWZmNTM2NTE4M2ZlOWNjOGU3Mzk5NGNm
MmQ1IgotCi1lY2MtanNibkB+MC4xLjE6Ci0gIHZlcnNpb24gIjAuMS4xIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9lY2MtanNibi8tL2VjYy1qc2JuLTAuMS4xLnRn
eiMwZmM3M2E5ZWQ1ZjBkNTNjMzgxOTMzOTg1MjNlZjdlNTQzNzc3NTA1IgotICBkZXBlbmRlbmNp
ZXM6Ci0gICAganNibiAifjAuMS4wIgotCi1lbmNvZGluZ0BeMC4xLjExOgotICB2ZXJzaW9uICIw
LjEuMTIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2VuY29kaW5n
Ly0vZW5jb2RpbmctMC4xLjEyLnRneiM1MzhiNjZmM2VlNjJjZDFhYjUxZWMzMjM4MjlkMWY5NDgw
Yzc0YmViIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgaWNvbnYtbGl0ZSAifjAuNC4xMyIKLQotZXNj
YXBlLXN0cmluZy1yZWdleHBAXjEuMC4yOgotICB2ZXJzaW9uICIxLjAuNSIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXNjYXBlLXN0cmluZy1yZWdleHAvLS9lc2Nh
cGUtc3RyaW5nLXJlZ2V4cC0xLjAuNS50Z3ojMWI2MWMwNTYyMTkwYThkZmY2YWUzYmIyY2YwMjAw
Y2ExMzBiODZkNCIKLQotZXN1dGlsc0BeMi4wLjAsIGVzdXRpbHNAXjIuMC4yOgotICB2ZXJzaW9u
ICIyLjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXN1dGls
cy8tL2VzdXRpbHMtMi4wLjIudGd6IzBhYmY0ZjFjYWE1YmNiMWY3YTlkOGFjYzZkZWE0ZmFhYTA0
YmFjOWIiCi0KLWV4cGFuZC1icmFja2V0c0BeMC4xLjQ6Ci0gIHZlcnNpb24gIjAuMS41IgotICBy
ZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9leHBhbmQtYnJhY2tldHMvLS9l
eHBhbmQtYnJhY2tldHMtMC4xLjUudGd6I2RmMDcyODRlMzQyYTgwN2NkNzMzYWM1YWY3MjQxMWU1
ODFkMTE3N2IiCi0gIGRlcGVuZGVuY2llczoKLSAgICBpcy1wb3NpeC1icmFja2V0ICJeMC4xLjAi
Ci0KLWV4cGFuZC1yYW5nZUBeMS44LjE6Ci0gIHZlcnNpb24gIjEuOC4yIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9leHBhbmQtcmFuZ2UvLS9leHBhbmQtcmFuZ2Ut
MS44LjIudGd6I2EyOTllZmZkMzM1ZmUyNzIxZWJhZThlMjU3ZWM3OTY0NGZjODUzMzciCi0gIGRl
cGVuZGVuY2llczoKLSAgICBmaWxsLXJhbmdlICJeMi4xLjAiCi0KLWV4dGVuZEB+My4wLjA6Ci0g
IHZlcnNpb24gIjMuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9leHRlbmQvLS9leHRlbmQtMy4wLjEudGd6I2E3NTVlYTdiYzFhZGZjYzVhMzFjZTdlNzYyZGJh
YWRjNWU2MzY0NDQiCi0KLWV4dGdsb2JAXjAuMy4xOgotICB2ZXJzaW9uICIwLjMuMiIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZXh0Z2xvYi8tL2V4dGdsb2ItMC4z
LjIudGd6IzJlMThmZjNkMmY0OWFiMjc2NWNlYzkwMjNmMDExZGFhOGQ4MzQ5YTEiCi0gIGRlcGVu
ZGVuY2llczoKLSAgICBpcy1leHRnbG9iICJeMS4wLjAiCi0KLWV4dHNwcmludGZAMS4wLjI6Ci0g
IHZlcnNpb24gIjEuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9leHRzcHJpbnRmLy0vZXh0c3ByaW50Zi0xLjAuMi50Z3ojZTEwODBlMDY1OGUzMDBiMDYyOTQ5
OTBjYzcwZTE1MDIyMzVmZDU1MCIKLQotZmJqc0BeMC44Ljk6Ci0gIHZlcnNpb24gIjAuOC4xMiIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZmJqcy8tL2ZianMtMC44
LjEyLnRneiMxMGI1ZDkyZjc2ZDQ1NTc1ZmQ2M2EyMTdkNGVhMDJiZWEyZjhlZDA0IgotICBkZXBl
bmRlbmNpZXM6Ci0gICAgY29yZS1qcyAiXjEuMC4wIgotICAgIGlzb21vcnBoaWMtZmV0Y2ggIl4y
LjEuMSIKLSAgICBsb29zZS1lbnZpZnkgIl4xLjAuMCIKLSAgICBvYmplY3QtYXNzaWduICJeNC4x
LjAiCi0gICAgcHJvbWlzZSAiXjcuMS4xIgotICAgIHNldGltbWVkaWF0ZSAiXjEuMC41IgotICAg
IHVhLXBhcnNlci1qcyAiXjAuNy45IgotCi1maWxlbmFtZS1yZWdleEBeMi4wLjA6Ci0gIHZlcnNp
b24gIjIuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9maWxl
bmFtZS1yZWdleC8tL2ZpbGVuYW1lLXJlZ2V4LTIuMC4wLnRneiM5OTZlM2U4MDQ3OWI5OGI5ODk3
ZjE1YThhNThiM2QwODRlOTI2Nzc1IgotCi1maWxsLXJhbmdlQF4yLjEuMDoKLSAgdmVyc2lvbiAi
Mi4yLjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2ZpbGwtcmFu
Z2UvLS9maWxsLXJhbmdlLTIuMi4zLnRneiM1MGI3N2RmZDdlNDY5YmM3NDkyNDcwOTYzNjk5ZmU3
YTg0ODVhNzIzIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgaXMtbnVtYmVyICJeMi4xLjAiCi0gICAg
aXNvYmplY3QgIl4yLjAuMCIKLSAgICByYW5kb21hdGljICJeMS4xLjMiCi0gICAgcmVwZWF0LWVs
ZW1lbnQgIl4xLjEuMiIKLSAgICByZXBlYXQtc3RyaW5nICJeMS41LjIiCi0KLWZvci1pbkBeMS4w
LjE6Ci0gIHZlcnNpb24gIjEuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9mb3ItaW4vLS9mb3ItaW4tMS4wLjIudGd6IzgxMDY4ZDI5NWE4MTQyZWMwYWM3MjZj
NmUyMjAwYzMwZmI2ZDVlODAiCi0KLWZvci1vd25AXjAuMS40OgotICB2ZXJzaW9uICIwLjEuNSIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZm9yLW93bi8tL2Zvci1v
d24tMC4xLjUudGd6IzUyNjVjNjgxYTRmMjk0ZGFiYmYxN2M5NTA5YjY3NjNhYTg0NTEwY2UiCi0g
IGRlcGVuZGVuY2llczoKLSAgICBmb3ItaW4gIl4xLjAuMSIKLQotZm9yZXZlci1hZ2VudEB+MC42
LjE6Ci0gIHZlcnNpb24gIjAuNi4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJu
cGtnLmNvbS9mb3JldmVyLWFnZW50Ly0vZm9yZXZlci1hZ2VudC0wLjYuMS50Z3ojZmJjNzFmMGM0
MWFkZWIzN2Y5NmM1NzdhZDFlZDQyZDhmZGFjY2E5MSIKLQotZm9ybS1kYXRhQH4yLjEuMToKLSAg
dmVyc2lvbiAiMi4xLjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29t
L2Zvcm0tZGF0YS8tL2Zvcm0tZGF0YS0yLjEuNC50Z3ojMzNjMTgzYWNmMTkzMjc2ZWNhYTk4MTQz
YTY5ZTk0YmZlZTE3NTBkMSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGFzeW5ja2l0ICJeMC40LjAi
Ci0gICAgY29tYmluZWQtc3RyZWFtICJeMS4wLjUiCi0gICAgbWltZS10eXBlcyAiXjIuMS4xMiIK
LQotZnMtcmVhZGRpci1yZWN1cnNpdmVAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZnMtcmVhZGRpci1yZWN1cnNpdmUv
LS9mcy1yZWFkZGlyLXJlY3Vyc2l2ZS0xLjAuMC50Z3ojOGNkMTc0NWM4YjRmOGEyOWM4Y2FlYzM5
MjQ3NjkyMWJhMTk1ZjU2MCIKLQotZnMucmVhbHBhdGhAXjEuMC4wOgotICB2ZXJzaW9uICIxLjAu
MCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZnMucmVhbHBhdGgv
LS9mcy5yZWFscGF0aC0xLjAuMC50Z3ojMTUwNGFkMjUyMzE1OGNhYTQwZGI0YTI3ODdjYjAxNDEx
OTk0ZWE0ZiIKLQotZnNldmVudHNAXjEuMC4wOgotICB2ZXJzaW9uICIxLjEuMSIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZnNldmVudHMvLS9mc2V2ZW50cy0xLjEu
MS50Z3ojZjE5ZmQyOGY0M2VlYWY3NjE2ODBlNTE5YTIwM2M0ZDBiM2QzMWFmZiIKLSAgZGVwZW5k
ZW5jaWVzOgotICAgIG5hbiAiXjIuMy4wIgotICAgIG5vZGUtcHJlLWd5cCAiXjAuNi4yOSIKLQot
ZnN0cmVhbS1pZ25vcmVAXjEuMC41OgotICB2ZXJzaW9uICIxLjAuNSIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZnN0cmVhbS1pZ25vcmUvLS9mc3RyZWFtLWlnbm9y
ZS0xLjAuNS50Z3ojOWMzMWRhZTM0NzY3MDE4ZmUxZDI0OWIyNGRhZGE2N2QwOTJkYTEwNSIKLSAg
ZGVwZW5kZW5jaWVzOgotICAgIGZzdHJlYW0gIl4xLjAuMCIKLSAgICBpbmhlcml0cyAiMiIKLSAg
ICBtaW5pbWF0Y2ggIl4zLjAuMCIKLQotZnN0cmVhbUBeMS4wLjAsIGZzdHJlYW1AXjEuMC4xMCwg
ZnN0cmVhbUBeMS4wLjI6Ci0gIHZlcnNpb24gIjEuMC4xMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vZnN0cmVhbS8tL2ZzdHJlYW0tMS4wLjExLnRneiM1YzFmYjFm
MTE3NDc3MTE0ZjA2MzJhMGViNGI3MWIzY2IwZmQzMTcxIgotICBkZXBlbmRlbmNpZXM6Ci0gICAg
Z3JhY2VmdWwtZnMgIl40LjEuMiIKLSAgICBpbmhlcml0cyAifjIuMC4wIgotICAgIG1rZGlycCAi
Pj0wLjUgMCIKLSAgICByaW1yYWYgIjIiCi0KLWdhdWdlQH4yLjcuMToKLSAgdmVyc2lvbiAiMi43
LjQiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2dhdWdlLy0vZ2F1
Z2UtMi43LjQudGd6IzJjMDM0MDVjNzUzOGMzOWQ3ZWIzN2IzMTcwMjJlMzI1ZmIwMThiZjciCi0g
IGRlcGVuZGVuY2llczoKLSAgICBhcHJvYmEgIl4xLjAuMyIKLSAgICBjb25zb2xlLWNvbnRyb2wt
c3RyaW5ncyAiXjEuMC4wIgotICAgIGhhcy11bmljb2RlICJeMi4wLjAiCi0gICAgb2JqZWN0LWFz
c2lnbiAiXjQuMS4wIgotICAgIHNpZ25hbC1leGl0ICJeMy4wLjAiCi0gICAgc3RyaW5nLXdpZHRo
ICJeMS4wLjEiCi0gICAgc3RyaXAtYW5zaSAiXjMuMC4xIgotICAgIHdpZGUtYWxpZ24gIl4xLjEu
MCIKLQotZ2V0cGFzc0BeMC4xLjE6Ci0gIHZlcnNpb24gIjAuMS43IgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9nZXRwYXNzLy0vZ2V0cGFzcy0wLjEuNy50Z3ojNWVm
ZjhlM2U2ODRkNTY5YWU0Y2IyYjEyODI2MDRlOGJhNjIxNDlmYSIKLSAgZGVwZW5kZW5jaWVzOgot
ICAgIGFzc2VydC1wbHVzICJeMS4wLjAiCi0KLWdsb2ItYmFzZUBeMC4zLjA6Ci0gIHZlcnNpb24g
IjAuMy4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9nbG9iLWJh
c2UvLS9nbG9iLWJhc2UtMC4zLjAudGd6I2RiYjE2NGY2MjIxYjFjMGIxY2NmODJhZWEzMjhiNDk3
ZGYwZWEzYzQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBnbG9iLXBhcmVudCAiXjIuMC4wIgotICAg
IGlzLWdsb2IgIl4yLjAuMCIKLQotZ2xvYi1wYXJlbnRAXjIuMC4wOgotICB2ZXJzaW9uICIyLjAu
MCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZ2xvYi1wYXJlbnQv
LS9nbG9iLXBhcmVudC0yLjAuMC50Z3ojODEzODNkNzJkYjA1NGZjY2NmNTMzNmRhYTkwMmYxODJm
NmVkYmIyOCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGlzLWdsb2IgIl4yLjAuMCIKLQotZ2xvYkBe
Ny4wLjAsIGdsb2JAXjcuMC41OgotICB2ZXJzaW9uICI3LjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vZ2xvYi8tL2dsb2ItNy4xLjEudGd6IzgwNTIxMWRmMDRm
YWFmMWM2M2EzNjAwMzA2Y2RmNWFkZTUwYjJlYzgiCi0gIGRlcGVuZGVuY2llczoKLSAgICBmcy5y
ZWFscGF0aCAiXjEuMC4wIgotICAgIGluZmxpZ2h0ICJeMS4wLjQiCi0gICAgaW5oZXJpdHMgIjIi
Ci0gICAgbWluaW1hdGNoICJeMy4wLjIiCi0gICAgb25jZSAiXjEuMy4wIgotICAgIHBhdGgtaXMt
YWJzb2x1dGUgIl4xLjAuMCIKLQotZ2xvYmFsc0BeOS4wLjA6Ci0gIHZlcnNpb24gIjkuMTcuMCIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vZ2xvYmFscy8tL2dsb2Jh
bHMtOS4xNy4wLnRneiMwYzBjYTY5NmQ5YjliYjY5NGQyZTU0NzBiZDM3Nzc3Y2FhZDUwMjg2Igot
Ci1ncmFjZWZ1bC1mc0BeNC4xLjIsIGdyYWNlZnVsLWZzQF40LjEuNDoKLSAgdmVyc2lvbiAiNC4x
LjExIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9ncmFjZWZ1bC1m
cy8tL2dyYWNlZnVsLWZzLTQuMS4xMS50Z3ojMGU4YmRmZTRkMWRkYjg4NTRkNjRlMDRlYTdjMDBl
MmEwMjZlNTY1OCIKLQotImdyYWNlZnVsLXJlYWRsaW5rQD49IDEuMC4wIjoKLSAgdmVyc2lvbiAi
MS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2dyYWNlZnVs
LXJlYWRsaW5rLy0vZ3JhY2VmdWwtcmVhZGxpbmstMS4wLjEudGd6IzRjYWZhZDc2YmM2MmYwMmZh
MDM5YjJmOTRlOWEzZGQzYTM5MWE3MjUiCi0KLWhhci1zY2hlbWFAXjEuMC41OgotICB2ZXJzaW9u
ICIxLjAuNSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaGFyLXNj
aGVtYS8tL2hhci1zY2hlbWEtMS4wLjUudGd6I2QyNjMxMzVmNDMzMDdjMDJjNjAyYWZjOGZlOTU5
NzBjMDE1MTM2OWUiCi0KLWhhci12YWxpZGF0b3JAfjQuMi4xOgotICB2ZXJzaW9uICI0LjIuMSIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaGFyLXZhbGlkYXRvci8t
L2hhci12YWxpZGF0b3ItNC4yLjEudGd6IzMzNDgxZDBmMWJiZmY2MDBkZDIwM2Q3NTgxMmE2YTVm
YmEwMDJlMmEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhanYgIl40LjkuMSIKLSAgICBoYXItc2No
ZW1hICJeMS4wLjUiCi0KLWhhcy1hbnNpQF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4wLjAiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hhcy1hbnNpLy0vaGFzLWFuc2kt
Mi4wLjAudGd6IzM0ZjUwNDljZTFlY2RmMmIwNjQ5YWYzZWYyNGU0NWVkMzU0MTZkOTEiCi0gIGRl
cGVuZGVuY2llczoKLSAgICBhbnNpLXJlZ2V4ICJeMi4wLjAiCi0KLWhhcy11bmljb2RlQF4yLjAu
MDoKLSAgdmVyc2lvbiAiMi4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL2hhcy11bmljb2RlLy0vaGFzLXVuaWNvZGUtMi4wLjEudGd6I2UwZTZmZTZhMjhjZjUx
MTM4ODU1ZTA4NmQxNjkxZTc3MWRlMmE4YjkiCi0KLWhhd2tAfjMuMS4zOgotICB2ZXJzaW9uICIz
LjEuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaGF3ay8tL2hh
d2stMy4xLjMudGd6IzA3ODQ0NGJkN2MxNjQwYjBmZTU0MGQyYzliNzNkNTk2NzhlOGUxYzQiCi0g
IGRlcGVuZGVuY2llczoKLSAgICBib29tICIyLngueCIKLSAgICBjcnlwdGlsZXMgIjIueC54Igot
ICAgIGhvZWsgIjIueC54IgotICAgIHNudHAgIjEueC54IgotCi1ob2VrQDIueC54OgotICB2ZXJz
aW9uICIyLjE2LjMiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2hv
ZWsvLS9ob2VrLTIuMTYuMy50Z3ojMjBiYjc0MDNkM2NlYTM5OGU5MWRjNDcxMGE4ZmYxYjgyNzRh
MjVlZCIKLQotaG9tZS1vci10bXBAXjIuMC4wOgotICB2ZXJzaW9uICIyLjAuMCIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaG9tZS1vci10bXAvLS9ob21lLW9yLXRt
cC0yLjAuMC50Z3ojZTM2YzNmMmQyY2FlN2Q3NDZhODU3ZTM4ZDE4ZDVmMzJhNzg4MmRiOCIKLSAg
ZGVwZW5kZW5jaWVzOgotICAgIG9zLWhvbWVkaXIgIl4xLjAuMCIKLSAgICBvcy10bXBkaXIgIl4x
LjAuMSIKLQotaHR0cC1zaWduYXR1cmVAfjEuMS4wOgotICB2ZXJzaW9uICIxLjEuMSIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaHR0cC1zaWduYXR1cmUvLS9odHRw
LXNpZ25hdHVyZS0xLjEuMS50Z3ojZGY3MmUyNjcwNjZjZDBhYzY3ZmI3NmFkZjhlMTM0YThmYmNm
OTFiZiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGFzc2VydC1wbHVzICJeMC4yLjAiCi0gICAganNw
cmltICJeMS4yLjIiCi0gICAgc3NocGsgIl4xLjcuMCIKLQotaWNvbnYtbGl0ZUB+MC40LjEzOgot
ICB2ZXJzaW9uICIwLjQuMTYiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cu
Y29tL2ljb252LWxpdGUvLS9pY29udi1saXRlLTAuNC4xNi50Z3ojNjVkZTNiZWViMzllMjk2MGQ2
N2YwNDlmMTYzNGZmY2JjZGU5MDE0YiIKLQotaW5mbGlnaHRAXjEuMC40OgotICB2ZXJzaW9uICIx
LjAuNiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaW5mbGlnaHQv
LS9pbmZsaWdodC0xLjAuNi50Z3ojNDliZDYzMzFkN2QwMmQwYzA5YmM5MTBhMTA3NWJhODE2NWI1
NmRmOSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIG9uY2UgIl4xLjMuMCIKLSAgICB3cmFwcHkgIjEi
Ci0KLWluaGVyaXRzQF4yLjAuMSwgaW5oZXJpdHNAfjIuMC4wLCBpbmhlcml0c0B+Mi4wLjEsIGlu
aGVyaXRzQDI6Ci0gIHZlcnNpb24gIjIuMC4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9pbmhlcml0cy8tL2luaGVyaXRzLTIuMC4zLnRneiM2MzNjMmM4M2UzZGE0
MmE1MDJmNTI0NjYwMjI0ODBmNDIwODI2MWRlIgotCi1pbmlAfjEuMy4wOgotICB2ZXJzaW9uICIx
LjMuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaW5pLy0vaW5p
LTEuMy40LnRneiMwNTM3Y2I3OWRhZjU5YjU5YTFhNTE3ZGZmNzA2Yzg2ZWMwMzkxNjJlIgotCi1p
bnZhcmlhbnRAXjIuMi4wOgotICB2ZXJzaW9uICIyLjIuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vaW52YXJpYW50Ly0vaW52YXJpYW50LTIuMi4yLnRneiM5ZTFm
NTZhYzBhY2RiNmJmMzAzMzA2ZjMzOGJlM2IyMDRhZTYwMzYwIgotICBkZXBlbmRlbmNpZXM6Ci0g
ICAgbG9vc2UtZW52aWZ5ICJeMS4wLjAiCi0KLWlzLWJpbmFyeS1wYXRoQF4xLjAuMDoKLSAgdmVy
c2lvbiAiMS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lz
LWJpbmFyeS1wYXRoLy0vaXMtYmluYXJ5LXBhdGgtMS4wLjEudGd6Izc1ZjE2NjQyYjQ4MGYxODdh
NzExYzgxNDE2MWZkM2E0YTc2NTU4OTgiCi0gIGRlcGVuZGVuY2llczoKLSAgICBiaW5hcnktZXh0
ZW5zaW9ucyAiXjEuMC4wIgotCi1pcy1idWZmZXJAXjEuMS41OgotICB2ZXJzaW9uICIxLjEuNSIK
LSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtYnVmZmVyLy0vaXMt
YnVmZmVyLTEuMS41LnRneiMxZjNiMjZlZjYxM2IyMTRiODhjYmNhMjNjYzZjMDFkODc5NjFlZWNj
IgotCi1pcy1kb3RmaWxlQF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjIiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLWRvdGZpbGUvLS9pcy1kb3RmaWxlLTEuMC4y
LnRneiMyYzEzMjM4M2YzOTE5OWY4ZWRjMjY4Y2EwMWI5YjAwN2QyMDVjYzRkIgotCi1pcy1lcXVh
bC1zaGFsbG93QF4wLjEuMzoKLSAgdmVyc2lvbiAiMC4xLjMiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLWVxdWFsLXNoYWxsb3cvLS9pcy1lcXVhbC1zaGFsbG93
LTAuMS4zLnRneiMyMjM4MDk4ZmMyMjFkZTBiY2ZhNWQ5ZWFjNGM0NWQ2MzhhYTFjNTM0IgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAgaXMtcHJpbWl0aXZlICJeMi4wLjAiCi0KLWlzLWV4dGVuZGFibGVA
XjAuMS4xOgotICB2ZXJzaW9uICIwLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vaXMtZXh0ZW5kYWJsZS8tL2lzLWV4dGVuZGFibGUtMC4xLjEudGd6IzYyYjEx
MGUyODlhNDcxNDE4ZTNlYzM2YTYxN2Q0NzJlMzAxZGZjODkiCi0KLWlzLWV4dGdsb2JAXjEuMC4w
OgotICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vaXMtZXh0Z2xvYi8tL2lzLWV4dGdsb2ItMS4wLjAudGd6I2FjNDY4MTc3YzQ5NDM0MDVh
MDkyZmM4ZjI5NzYwYzZmZmM2MjA2YzAiCi0KLWlzLWZpbml0ZUBeMS4wLjA6Ci0gIHZlcnNpb24g
IjEuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pcy1maW5p
dGUvLS9pcy1maW5pdGUtMS4wLjIudGd6I2NjNjY3NzY5NTYwMmJlNTUwZWYxMWU4YjRhYTYzMDUz
NDJiNmQwYWEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBudW1iZXItaXMtbmFuICJeMS4wLjAiCi0K
LWlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50QF4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjAiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLWZ1bGx3aWR0aC1jb2RlLXBv
aW50Ly0vaXMtZnVsbHdpZHRoLWNvZGUtcG9pbnQtMS4wLjAudGd6I2VmOWUzMTM4NmYwMzFhN2Yw
ZDY0M2FmODJmZGU1MGM0NTdlZjAwY2IiCi0gIGRlcGVuZGVuY2llczoKLSAgICBudW1iZXItaXMt
bmFuICJeMS4wLjAiCi0KLWlzLWdsb2JAXjIuMC4wLCBpcy1nbG9iQF4yLjAuMToKLSAgdmVyc2lv
biAiMi4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLWds
b2IvLS9pcy1nbG9iLTIuMC4xLnRneiNkMDk2ZjkyNmEzZGVkNTYwMGYzZmRmZDkxMTk4Y2IwODg4
YzJkODYzIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgaXMtZXh0Z2xvYiAiXjEuMC4wIgotCi1pcy1u
dW1iZXJAXjIuMC4yLCBpcy1udW1iZXJAXjIuMS4wOgotICB2ZXJzaW9uICIyLjEuMCIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vaXMtbnVtYmVyLy0vaXMtbnVtYmVy
LTIuMS4wLnRneiMwMWZjYmJiMzkzNDYzYTU0OGYyZjQ2NmNjZTE2ZGVjZTQ5ZGI5MDhmIgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAga2luZC1vZiAiXjMuMC4yIgotCi1pcy1wb3NpeC1icmFja2V0QF4w
LjEuMDoKLSAgdmVyc2lvbiAiMC4xLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL2lzLXBvc2l4LWJyYWNrZXQvLS9pcy1wb3NpeC1icmFja2V0LTAuMS4xLnRneiMz
MzM0ZGM3OTc3NDM2OGU5MmYwMTZlNmZiYzBhODhmNWNkNmU2YmM0IgotCi1pcy1wcmltaXRpdmVA
XjIuMC4wOgotICB2ZXJzaW9uICIyLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vaXMtcHJpbWl0aXZlLy0vaXMtcHJpbWl0aXZlLTIuMC4wLnRneiMyMDdiYWI5
MTYzODQ5OWMwN2IyYWRmMjQwYTQxYTg3MjEwMDM0NTc1IgotCi1pcy1zdHJlYW1AXjEuMC4xOgot
ICB2ZXJzaW9uICIxLjEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vaXMtc3RyZWFtLy0vaXMtc3RyZWFtLTEuMS4wLnRneiMxMmQ0YTNkZDRlNjhlMGI3OWNlYjhk
YmM4NDE3M2FlODBkOTFjYTQ0IgotCi1pcy10eXBlZGFycmF5QH4xLjAuMDoKLSAgdmVyc2lvbiAi
MS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lzLXR5cGVk
YXJyYXkvLS9pcy10eXBlZGFycmF5LTEuMC4wLnRneiNlNDc5YzgwODU4ZGYwYzFiMTFkZGRhNjk0
MGY5NjAxMWZjZGE0YTlhIgotCi1pc2FycmF5QH4xLjAuMCwgaXNhcnJheUAxLjAuMDoKLSAgdmVy
c2lvbiAiMS4wLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2lz
YXJyYXkvLS9pc2FycmF5LTEuMC4wLnRneiNiYjkzNWQ0ODU4MmNiYTE2OGMwNjgzNDk1N2E1NGEz
ZTA3MTI0ZjExIgotCi1pc29iamVjdEBeMi4wLjA6Ci0gIHZlcnNpb24gIjIuMS4wIgotICByZXNv
bHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9pc29iamVjdC8tL2lzb2JqZWN0LTIu
MS4wLnRneiNmMDY1NTYxMDk2YTNmMWRhMmVmNDYyNzJmODE1Yzg0MGQ4N2UwYzg5IgotICBkZXBl
bmRlbmNpZXM6Ci0gICAgaXNhcnJheSAiMS4wLjAiCi0KLWlzb21vcnBoaWMtZmV0Y2hAXjIuMS4x
OgotICB2ZXJzaW9uICIyLjIuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vaXNvbW9ycGhpYy1mZXRjaC8tL2lzb21vcnBoaWMtZmV0Y2gtMi4yLjEudGd6IzYxMWFl
MWFjZjE0ZjVlODFmNzI5NTA3NDcyODE5ZmU5NzMzNTU4YTkiCi0gIGRlcGVuZGVuY2llczoKLSAg
ICBub2RlLWZldGNoICJeMS4wLjEiCi0gICAgd2hhdHdnLWZldGNoICI+PTAuMTAuMCIKLQotaXNz
dHJlYW1AfjAuMS4yOgotICB2ZXJzaW9uICIwLjEuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vaXNzdHJlYW0vLS9pc3N0cmVhbS0wLjEuMi50Z3ojNDdlNjNmN2Fm
NTVhZmE2ZjkyZTE1MDBlNjkwZWI4Yjg1MjljMDk5YSIKLQotam9kaWQyNTUxOUBeMS4wLjA6Ci0g
IHZlcnNpb24gIjEuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9qb2RpZDI1NTE5Ly0vam9kaWQyNTUxOS0xLjAuMi50Z3ojMDZkNDkxMjI1NTA5MzQxOTQ3N2Q0
MjU2MzM2MDZlMGU5MDc4Mjk2NyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGpzYm4gIn4wLjEuMCIK
LQotanMtdG9rZW5zQF4zLjAuMDoKLSAgdmVyc2lvbiAiMy4wLjEiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2pzLXRva2Vucy8tL2pzLXRva2Vucy0zLjAuMS50Z3oj
MDhlOWYxMzI0ODRhMmM0NWEzMDkwN2U5ZGM0ZDU1NjdiN2YxMTRkNyIKLQotanNibkB+MC4xLjA6
Ci0gIHZlcnNpb24gIjAuMS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9qc2JuLy0vanNibi0wLjEuMS50Z3ojYTVlNjU0YzJlNWEyZGViNWYyMDFkOTZjZWZiY2E4
MGMwZWYyZjUxMyIKLQotanNlc2NAXjEuMy4wOgotICB2ZXJzaW9uICIxLjMuMCIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vanNlc2MvLS9qc2VzYy0xLjMuMC50Z3oj
NDZjM2ZlYzhjMTg5MmIxMmIwODMzZGI5YmM3NjIyMTc2ZGJhYjM0YiIKLQotanNvbi1zY2hlbWFA
MC4yLjM6Ci0gIHZlcnNpb24gIjAuMi4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9qc29uLXNjaGVtYS8tL2pzb24tc2NoZW1hLTAuMi4zLnRneiNiNDgwYzg5MmU1
OWEyZjA1OTU0Y2U3MjdiZDNmMmE0ZTg4MmY5ZTEzIgotCi1qc29uLXN0YWJsZS1zdHJpbmdpZnlA
XjEuMC4xOgotICB2ZXJzaW9uICIxLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vanNvbi1zdGFibGUtc3RyaW5naWZ5Ly0vanNvbi1zdGFibGUtc3RyaW5naWZ5
LTEuMC4xLnRneiM5YTc1OWQzOWM1ZjJmZjUwM2ZkNTMwMDY0NmVkNDQ1Zjg4YzRmOWFmIgotICBk
ZXBlbmRlbmNpZXM6Ci0gICAganNvbmlmeSAifjAuMC4wIgotCi1qc29uLXN0cmluZ2lmeS1zYWZl
QH41LjAuMToKLSAgdmVyc2lvbiAiNS4wLjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL2pzb24tc3RyaW5naWZ5LXNhZmUvLS9qc29uLXN0cmluZ2lmeS1zYWZlLTUu
MC4xLnRneiMxMjk2YTJkNThmZDQ1ZjE5YTBmNmNlMDFkNjU3MDFlMmM3MzViNmViIgotCi1qc29u
NUBeMC41LjA6Ci0gIHZlcnNpb24gIjAuNS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3Ry
eS55YXJucGtnLmNvbS9qc29uNS8tL2pzb241LTAuNS4xLnRneiMxZWFkZTdhY2MwMTIwMzRhZDg0
ZTIzOTY3NjdlYWQ5ZmE1NDk1ODIxIgotCi1qc29uaWZ5QH4wLjAuMDoKLSAgdmVyc2lvbiAiMC4w
LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2pzb25pZnkvLS9q
c29uaWZ5LTAuMC4wLnRneiMyYzc0YjZlZTQxZDkzY2E1MWI3YjVhYWVlOGY1MDM2MzFkMjUyYTcz
IgotCi1qc3ByaW1AXjEuMi4yOgotICB2ZXJzaW9uICIxLjQuMCIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vanNwcmltLy0vanNwcmltLTEuNC4wLnRneiNhM2I4N2U0
MDI5OGQ4YzM4MDU1MmQ4Y2M3NjI4YTBiYjk1YTIyOTE4IgotICBkZXBlbmRlbmNpZXM6Ci0gICAg
YXNzZXJ0LXBsdXMgIjEuMC4wIgotICAgIGV4dHNwcmludGYgIjEuMC4yIgotICAgIGpzb24tc2No
ZW1hICIwLjIuMyIKLSAgICB2ZXJyb3IgIjEuMy42IgotCi1raW5kLW9mQF4zLjAuMjoKLSAgdmVy
c2lvbiAiMy4yLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2tp
bmQtb2YvLS9raW5kLW9mLTMuMi4wLnRneiNiNThhYmU0ZDVjMDQ0YWQzMzcyNmE4YzE1MjViNDhj
Zjg5MWJmZjA3IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgaXMtYnVmZmVyICJeMS4xLjUiCi0KLWxh
enktY2FjaGVAXjEuMC4zOgotICB2ZXJzaW9uICIxLjAuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vbGF6eS1jYWNoZS8tL2xhenktY2FjaGUtMS4wLjQudGd6I2Ex
ZDc4ZmMzYTUwNDc0Y2I4MDg0NWQzYjNiNmUxZGE0OWE0NDZlOGUiCi0KLWxvZGFzaEBeNC4yLjA6
Ci0gIHZlcnNpb24gIjQuMTcuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vbG9kYXNoLy0vbG9kYXNoLTQuMTcuNC50Z3ojNzgyMDNhNGQxYzMyOGFlMWQ4NmRjYTY0
NjBlMzY5YjU3ZjQwNTVhZSIKLQotbG9uZ2VzdEBeMS4wLjE6Ci0gIHZlcnNpb24gIjEuMC4xIgot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9sb25nZXN0Ly0vbG9uZ2Vz
dC0xLjAuMS50Z3ojMzBhMGIyZGEzOGY3Mzc3MGU4Mjk0YTBkMjJlNjYyNWVkNzdkMDA5NyIKLQot
bG9vc2UtZW52aWZ5QF4xLjAuMCwgbG9vc2UtZW52aWZ5QF4xLjEuMDoKLSAgdmVyc2lvbiAiMS4z
LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL2xvb3NlLWVudmlm
eS8tL2xvb3NlLWVudmlmeS0xLjMuMS50Z3ojZDFhOGFkMzNmYTljZTBlNzEzZDY1ZmRkMGFjOGI3
NDhkNDc4Yzg0OCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGpzLXRva2VucyAiXjMuMC4wIgotCi1t
aWNyb21hdGNoQF4yLjEuNToKLSAgdmVyc2lvbiAiMi4zLjExIgotICByZXNvbHZlZCAiaHR0cHM6
Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9taWNyb21hdGNoLy0vbWljcm9tYXRjaC0yLjMuMTEudGd6
Izg2Njc3Yzk3ZDE3MjBiMzYzNDMxZDA0ZDBkMTUyOTNiZDM4YzE1NjUiCi0gIGRlcGVuZGVuY2ll
czoKLSAgICBhcnItZGlmZiAiXjIuMC4wIgotICAgIGFycmF5LXVuaXF1ZSAiXjAuMi4xIgotICAg
IGJyYWNlcyAiXjEuOC4yIgotICAgIGV4cGFuZC1icmFja2V0cyAiXjAuMS40IgotICAgIGV4dGds
b2IgIl4wLjMuMSIKLSAgICBmaWxlbmFtZS1yZWdleCAiXjIuMC4wIgotICAgIGlzLWV4dGdsb2Ig
Il4xLjAuMCIKLSAgICBpcy1nbG9iICJeMi4wLjEiCi0gICAga2luZC1vZiAiXjMuMC4yIgotICAg
IG5vcm1hbGl6ZS1wYXRoICJeMi4wLjEiCi0gICAgb2JqZWN0Lm9taXQgIl4yLjAuMCIKLSAgICBw
YXJzZS1nbG9iICJeMy4wLjQiCi0gICAgcmVnZXgtY2FjaGUgIl4wLjQuMiIKLQotbWltZS1kYkB+
MS4yNy4wOgotICB2ZXJzaW9uICIxLjI3LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL21pbWUtZGIvLS9taW1lLWRiLTEuMjcuMC50Z3ojODIwZjU3MjI5NmJiZDIw
ZWMyNWVkNTVlNWI1ZGU4NjllNTQzNmViMSIKLQotbWltZS10eXBlc0BeMi4xLjEyLCBtaW1lLXR5
cGVzQH4yLjEuNzoKLSAgdmVyc2lvbiAiMi4xLjE1IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9taW1lLXR5cGVzLy0vbWltZS10eXBlcy0yLjEuMTUudGd6I2E0ZWJm
NTA2NDA5NDU2OTIzN2I4Y2Y3MDA0Njc3NmQwOWZjOTJhZWQiCi0gIGRlcGVuZGVuY2llczoKLSAg
ICBtaW1lLWRiICJ+MS4yNy4wIgotCi1taW5pbWF0Y2hAXjMuMC4wLCBtaW5pbWF0Y2hAXjMuMC4y
OgotICB2ZXJzaW9uICIzLjAuMyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vbWluaW1hdGNoLy0vbWluaW1hdGNoLTMuMC4zLnRneiMyYTRlNDA5MGI5NmIyZGIwNmE5
ZDdkZjAxMDU1YTYyYTc3YzliNzc0IgotICBkZXBlbmRlbmNpZXM6Ci0gICAgYnJhY2UtZXhwYW5z
aW9uICJeMS4wLjAiCi0KLW1pbmltaXN0QF4xLjIuMDoKLSAgdmVyc2lvbiAiMS4yLjAiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL21pbmltaXN0Ly0vbWluaW1pc3Qt
MS4yLjAudGd6I2EzNTAwOGIyMGY0MTM4M2VlYzFmYjkxNGY0Y2Q1ZGY3OWEyNjQyODQiCi0KLW1p
bmltaXN0QDAuMC44OgotICB2ZXJzaW9uICIwLjAuOCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vbWluaW1pc3QvLS9taW5pbWlzdC0wLjAuOC50Z3ojODU3ZmNhYmZj
MzM5N2QyNjI1YjgyMjgyNjJlODZhYTdhMDExYjA1ZCIKLQotbWtkaXJwQF4wLjUuMSwgIm1rZGly
cEA+PTAuNSAwIjoKLSAgdmVyc2lvbiAiMC41LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lz
dHJ5Lnlhcm5wa2cuY29tL21rZGlycC8tL21rZGlycC0wLjUuMS50Z3ojMzAwNTc0MzhlYWM2Y2Y3
ZjhjNDc2N2YzODY0OGQ2Njk3ZDc1YzkwMyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIG1pbmltaXN0
ICIwLjAuOCIKLQotbXNAMC43LjM6Ci0gIHZlcnNpb24gIjAuNy4zIgotICByZXNvbHZlZCAiaHR0
cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9tcy8tL21zLTAuNy4zLnRneiM3MDgxNTVhNWU0NGUz
M2Y1ZmQwZmM1M2U4MWQwZDQwYTkxYmUxZmZmIgotCi1uYW5AXjIuMy4wOgotICB2ZXJzaW9uICIy
LjYuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbmFuLy0vbmFu
LTIuNi4yLnRneiNlNGZmMzRlNmM5NWZkZmI1YWVjYzA4ZGU2NTk2ZjQzNjA1YTdkYjQ1IgotCi1u
b2RlLWZldGNoQF4xLjAuMToKLSAgdmVyc2lvbiAiMS42LjMiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL25vZGUtZmV0Y2gvLS9ub2RlLWZldGNoLTEuNi4zLnRneiNk
YzIzNGVkZDY0ODk5ODJkNThlOGYwZGI0ZjY5NTAyOWFiY2Q4YzA0IgotICBkZXBlbmRlbmNpZXM6
Ci0gICAgZW5jb2RpbmcgIl4wLjEuMTEiCi0gICAgaXMtc3RyZWFtICJeMS4wLjEiCi0KLW5vZGUt
cHJlLWd5cEBeMC42LjI5OgotICB2ZXJzaW9uICIwLjYuMzQiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL25vZGUtcHJlLWd5cC8tL25vZGUtcHJlLWd5cC0wLjYuMzQu
dGd6Izk0YWQxYzc5OGExMWQ3ZmM2NzM4MWI1MGQ0N2Y4Y2MxOGQ5Nzk5ZjciCi0gIGRlcGVuZGVu
Y2llczoKLSAgICBta2RpcnAgIl4wLjUuMSIKLSAgICBub3B0ICJeNC4wLjEiCi0gICAgbnBtbG9n
ICJeNC4wLjIiCi0gICAgcmMgIl4xLjEuNyIKLSAgICByZXF1ZXN0ICJeMi44MS4wIgotICAgIHJp
bXJhZiAiXjIuNi4xIgotICAgIHNlbXZlciAiXjUuMy4wIgotICAgIHRhciAiXjIuMi4xIgotICAg
IHRhci1wYWNrICJeMy40LjAiCi0KLW5vcHRAXjQuMC4xOgotICB2ZXJzaW9uICI0LjAuMSIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vbm9wdC8tL25vcHQtNC4wLjEu
dGd6I2QwZDQ2ODVhZmQ1NDE1MTkzYzhjNzUwNTYwMmQwZDE3Y2Q2NDQ3NGQiCi0gIGRlcGVuZGVu
Y2llczoKLSAgICBhYmJyZXYgIjEiCi0gICAgb3NlbnYgIl4wLjEuNCIKLQotbm9ybWFsaXplLXBh
dGhAXjIuMC4xOgotICB2ZXJzaW9uICIyLjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vbm9ybWFsaXplLXBhdGgvLS9ub3JtYWxpemUtcGF0aC0yLjEuMS50Z3oj
MWFiMjhiNTU2ZTE5ODM2M2E4YzFhNmY3ZTZmYTIwMTM3ZmU2YWVkOSIKLSAgZGVwZW5kZW5jaWVz
OgotICAgIHJlbW92ZS10cmFpbGluZy1zZXBhcmF0b3IgIl4xLjAuMSIKLQotbnBtbG9nQF40LjAu
MjoKLSAgdmVyc2lvbiAiNC4wLjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL25wbWxvZy8tL25wbWxvZy00LjAuMi50Z3ojZDAzOTUwZTBlNzhjZTE1MjdiYTI2ZDJh
NzU5MmU5MzQ4YWMzZTc1ZiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGFyZS13ZS10aGVyZS15ZXQg
In4xLjEuMiIKLSAgICBjb25zb2xlLWNvbnRyb2wtc3RyaW5ncyAifjEuMS4wIgotICAgIGdhdWdl
ICJ+Mi43LjEiCi0gICAgc2V0LWJsb2NraW5nICJ+Mi4wLjAiCi0KLW51bWJlci1pcy1uYW5AXjEu
MC4wOgotICB2ZXJzaW9uICIxLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vbnVtYmVyLWlzLW5hbi8tL251bWJlci1pcy1uYW4tMS4wLjEudGd6IzA5N2I2MDJi
NTM0MjJhNTIyYzFhZmI4NzkwMzE4MzM2OTQxYTAxMWQiCi0KLW9hdXRoLXNpZ25AfjAuOC4xOgot
ICB2ZXJzaW9uICIwLjguMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vb2F1dGgtc2lnbi8tL29hdXRoLXNpZ24tMC44LjIudGd6IzQ2YTZhYjdmMGFlYWQ4ZGVhZTll
YzA1NjU3ODBiN2Q0ZWZlYjlkNDMiCi0KLW9iamVjdC1hc3NpZ25AXjQuMS4wOgotICB2ZXJzaW9u
ICI0LjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vb2JqZWN0
LWFzc2lnbi8tL29iamVjdC1hc3NpZ24tNC4xLjEudGd6IzIxMDlhZGM3OTY1ODg3Y2ZjMDVjYmJk
NDQyY2FjOGJmYmIzNjA4NjMiCi0KLW9iamVjdC5vbWl0QF4yLjAuMDoKLSAgdmVyc2lvbiAiMi4w
LjEiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL29iamVjdC5vbWl0
Ly0vb2JqZWN0Lm9taXQtMi4wLjEudGd6IzFhOWM3NDQ4MjlmMzlkYmI4NThjNzZjYTM1NzlhZTJh
NTRlYmQxZmEiCi0gIGRlcGVuZGVuY2llczoKLSAgICBmb3Itb3duICJeMC4xLjQiCi0gICAgaXMt
ZXh0ZW5kYWJsZSAiXjAuMS4xIgotCi1vbmNlQF4xLjMuMCwgb25jZUBeMS4zLjM6Ci0gIHZlcnNp
b24gIjEuNC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9vbmNl
Ly0vb25jZS0xLjQuMC50Z3ojNTgzYjFhYTc3NTk2MWQ0YjExM2FjMTdkOWM1MGJhZWY5ZGQ3NmJk
MSIKLSAgZGVwZW5kZW5jaWVzOgotICAgIHdyYXBweSAiMSIKLQotb3MtaG9tZWRpckBeMS4wLjA6
Ci0gIHZlcnNpb24gIjEuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtn
LmNvbS9vcy1ob21lZGlyLy0vb3MtaG9tZWRpci0xLjAuMi50Z3ojZmZiYzQ5ODgzMzZlMGU4MzNk
ZTBjMTY4YzdlZjE1MjEyMWFhN2ZiMyIKLQotb3MtdG1wZGlyQF4xLjAuMCwgb3MtdG1wZGlyQF4x
LjAuMToKLSAgdmVyc2lvbiAiMS4wLjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL29zLXRtcGRpci8tL29zLXRtcGRpci0xLjAuMi50Z3ojYmJlNjc0MDZjNzlhYTg1
YzVjZmVjNzY2ZmU1NzM0NTU1ZGZhMTI3NCIKLQotb3NlbnZAXjAuMS40OgotICB2ZXJzaW9uICIw
LjEuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vb3NlbnYvLS9v
c2Vudi0wLjEuNC50Z3ojNDJmZTZkNTk1M2RmMDZjODA2NGJlNmYxNzZjM2QwNWFhYWEzNDY0NCIK
LSAgZGVwZW5kZW5jaWVzOgotICAgIG9zLWhvbWVkaXIgIl4xLjAuMCIKLSAgICBvcy10bXBkaXIg
Il4xLjAuMCIKLQotb3V0cHV0LWZpbGUtc3luY0BeMS4xLjA6Ci0gIHZlcnNpb24gIjEuMS4yIgot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9vdXRwdXQtZmlsZS1zeW5j
Ly0vb3V0cHV0LWZpbGUtc3luYy0xLjEuMi50Z3ojZDBhMzNlZWZlNjFhMjA1ZmFjYjkwMDkyZTgy
NjU5OGQ1MjQ1Y2U3NiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGdyYWNlZnVsLWZzICJeNC4xLjQi
Ci0gICAgbWtkaXJwICJeMC41LjEiCi0gICAgb2JqZWN0LWFzc2lnbiAiXjQuMS4wIgotCi1wYXJz
ZS1nbG9iQF4zLjAuNDoKLSAgdmVyc2lvbiAiMy4wLjQiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3BhcnNlLWdsb2IvLS9wYXJzZS1nbG9iLTMuMC40LnRneiNiMmMz
NzZjZmIxMWYzNTUxM2JhZGQxNzNlZjBiYjZlM2EzODgzOTFjIgotICBkZXBlbmRlbmNpZXM6Ci0g
ICAgZ2xvYi1iYXNlICJeMC4zLjAiCi0gICAgaXMtZG90ZmlsZSAiXjEuMC4wIgotICAgIGlzLWV4
dGdsb2IgIl4xLjAuMCIKLSAgICBpcy1nbG9iICJeMi4wLjAiCi0KLXBhdGgtaXMtYWJzb2x1dGVA
XjEuMC4wOgotICB2ZXJzaW9uICIxLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vcGF0aC1pcy1hYnNvbHV0ZS8tL3BhdGgtaXMtYWJzb2x1dGUtMS4wLjEudGd6
IzE3NGI5MjY4NzM1NTM0ZmZiYzdhY2U2YmY1M2E1YTllMWI1YzVmNWYiCi0KLXBlcmZvcm1hbmNl
LW5vd0BeMC4yLjA6Ci0gIHZlcnNpb24gIjAuMi4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS9wZXJmb3JtYW5jZS1ub3cvLS9wZXJmb3JtYW5jZS1ub3ctMC4yLjAu
dGd6IzMzZWYzMGM1Yzc3ZDRlYTIxYzVhNTM4NjlkOTFiNTZkOGYyNTU1ZTUiCi0KLXByZXNlcnZl
QF4wLjIuMDoKLSAgdmVyc2lvbiAiMC4yLjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5
Lnlhcm5wa2cuY29tL3ByZXNlcnZlLy0vcHJlc2VydmUtMC4yLjAudGd6IzgxNWVkMWY2ZWJjNjU5
MjZmODY1YjMxMGMwNzEzYmNiMzMxNWNlNGIiCi0KLXByaXZhdGVAXjAuMS42OgotICB2ZXJzaW9u
ICIwLjEuNyIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcHJpdmF0
ZS8tL3ByaXZhdGUtMC4xLjcudGd6IzY4Y2U1ZThhMWVmMGEyM2JiNTcwY2MyODUzN2I1MzMyYWJh
NjNlZjEiCi0KLXByb2Nlc3MtbmV4dGljay1hcmdzQH4xLjAuNjoKLSAgdmVyc2lvbiAiMS4wLjci
Ci0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Byb2Nlc3MtbmV4dGlj
ay1hcmdzLy0vcHJvY2Vzcy1uZXh0aWNrLWFyZ3MtMS4wLjcudGd6IzE1MGUyMGI3NTY1OTBhZDNm
OTEwOTNmMjVhNGYyYWQ4YmZmMzBiYTMiCi0KLXByb21pc2VAXjcuMS4xOgotICB2ZXJzaW9uICI3
LjEuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcHJvbWlzZS8t
L3Byb21pc2UtNy4xLjEudGd6IzQ4OTY1NGM2OTI2MTZiOGFhNTViMDcyNGZhODA5YmI3ZGI0OWM1
YmYiCi0gIGRlcGVuZGVuY2llczoKLSAgICBhc2FwICJ+Mi4wLjMiCi0KLXByb3AtdHlwZXNAXjE1
LjUuNywgcHJvcC10eXBlc0B+MTUuNS43OgotICB2ZXJzaW9uICIxNS41LjgiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Byb3AtdHlwZXMvLS9wcm9wLXR5cGVzLTE1
LjUuOC50Z3ojNmI3YjJlMTQxMDgzYmUzOGM4NTk1YWE1MWZjNTU3NzVjNzE5OTM5NCIKLSAgZGVw
ZW5kZW5jaWVzOgotICAgIGZianMgIl4wLjguOSIKLQotcHVueWNvZGVAXjEuNC4xOgotICB2ZXJz
aW9uICIxLjQuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcHVu
eWNvZGUvLS9wdW55Y29kZS0xLjQuMS50Z3ojYzBkNWE2M2IyNzE4ODAwYWQ4ZTFlYjBmYTUyNjlj
ODRkZDQxODQ1ZSIKLQotcXNAfjYuNC4wOgotICB2ZXJzaW9uICI2LjQuMCIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcXMvLS9xcy02LjQuMC50Z3ojMTNlMjZkMjhh
ZDZiMGZmYWE5MTMxMmNkM2JmNzA4ZWQzNTFlNzIzMyIKLQotcmFuZG9tYXRpY0BeMS4xLjM6Ci0g
IHZlcnNpb24gIjEuMS42IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNv
bS9yYW5kb21hdGljLy0vcmFuZG9tYXRpYy0xLjEuNi50Z3ojMTEwZGNhYmZmMzk3ZTlkY2ZmN2Mw
Nzg5Y2NjMGE0OWFkZjFlYzViYiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGlzLW51bWJlciAiXjIu
MC4yIgotICAgIGtpbmQtb2YgIl4zLjAuMiIKLQotcmNAXjEuMS43OgotICB2ZXJzaW9uICIxLjIu
MSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmMvLS9yYy0xLjIu
MS50Z3ojMmUwM2U4ZTQyZWU0NTBiOGNiM2RjZTY1YmUxYmY4OTc0ZTFkZmQ5NSIKLSAgZGVwZW5k
ZW5jaWVzOgotICAgIGRlZXAtZXh0ZW5kICJ+MC40LjAiCi0gICAgaW5pICJ+MS4zLjAiCi0gICAg
bWluaW1pc3QgIl4xLjIuMCIKLSAgICBzdHJpcC1qc29uLWNvbW1lbnRzICJ+Mi4wLjEiCi0KLXJl
YWN0LWRvbUBeMTUuNC4wOgotICB2ZXJzaW9uICIxNS41LjQiCi0gIHJlc29sdmVkICJodHRwczov
L3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlYWN0LWRvbS8tL3JlYWN0LWRvbS0xNS41LjQudGd6I2Jh
MGMyODc4NmZkNTJlZDdlNGYyMTM1ZmUwMjg4ZDQ2MmFlZjkzZGEiCi0gIGRlcGVuZGVuY2llczoK
LSAgICBmYmpzICJeMC44LjkiCi0gICAgbG9vc2UtZW52aWZ5ICJeMS4xLjAiCi0gICAgb2JqZWN0
LWFzc2lnbiAiXjQuMS4wIgotICAgIHByb3AtdHlwZXMgIn4xNS41LjciCi0KLXJlYWN0QF4xNS40
LjA6Ci0gIHZlcnNpb24gIjE1LjUuNCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vcmVhY3QvLS9yZWFjdC0xNS41LjQudGd6I2ZhODNlYjAxNTA2YWIyMzdjZGMxYzhj
M2IxY2VhOGRlMDEyYmYwNDciCi0gIGRlcGVuZGVuY2llczoKLSAgICBmYmpzICJeMC44LjkiCi0g
ICAgbG9vc2UtZW52aWZ5ICJeMS4xLjAiCi0gICAgb2JqZWN0LWFzc2lnbiAiXjQuMS4wIgotICAg
IHByb3AtdHlwZXMgIl4xNS41LjciCi0KLXJlYWRhYmxlLXN0cmVhbUBeMi4wLjIsIHJlYWRhYmxl
LXN0cmVhbUBeMi4wLjYsIHJlYWRhYmxlLXN0cmVhbUBeMi4xLjQ6Ci0gIHZlcnNpb24gIjIuMi45
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZWFkYWJsZS1zdHJl
YW0vLS9yZWFkYWJsZS1zdHJlYW0tMi4yLjkudGd6I2NmNzhlYzZmNGE2ZDFlYjQzZDI2NDg4Y2Fj
OTdmMDQyZTc0YjdmYzgiCi0gIGRlcGVuZGVuY2llczoKLSAgICBidWZmZXItc2hpbXMgIn4xLjAu
MCIKLSAgICBjb3JlLXV0aWwtaXMgIn4xLjAuMCIKLSAgICBpbmhlcml0cyAifjIuMC4xIgotICAg
IGlzYXJyYXkgIn4xLjAuMCIKLSAgICBwcm9jZXNzLW5leHRpY2stYXJncyAifjEuMC42IgotICAg
IHN0cmluZ19kZWNvZGVyICJ+MS4wLjAiCi0gICAgdXRpbC1kZXByZWNhdGUgIn4xLjAuMSIKLQot
cmVhZGRpcnBAXjIuMC4wOgotICB2ZXJzaW9uICIyLjEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8v
cmVnaXN0cnkueWFybnBrZy5jb20vcmVhZGRpcnAvLS9yZWFkZGlycC0yLjEuMC50Z3ojNGVkMGFk
MDYwZGYzMDczMzAwYzQ4NDQwMzczZjcyZDFjYzY0MmQ3OCIKLSAgZGVwZW5kZW5jaWVzOgotICAg
IGdyYWNlZnVsLWZzICJeNC4xLjIiCi0gICAgbWluaW1hdGNoICJeMy4wLjIiCi0gICAgcmVhZGFi
bGUtc3RyZWFtICJeMi4wLjIiCi0gICAgc2V0LWltbWVkaWF0ZS1zaGltICJeMS4wLjEiCi0KLXJl
Z2VuZXJhdG9yLXJ1bnRpbWVAXjAuMTAuMDoKLSAgdmVyc2lvbiAiMC4xMC41IgotICByZXNvbHZl
ZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9yZWdlbmVyYXRvci1ydW50aW1lLy0vcmVn
ZW5lcmF0b3ItcnVudGltZS0wLjEwLjUudGd6IzMzNmMzZWZjMTIyMGFkY2VkZGEyYzlmYWI2N2I1
YTc5NTVhMzM2NTgiCi0KLXJlZ2V4LWNhY2hlQF4wLjQuMjoKLSAgdmVyc2lvbiAiMC40LjMiCi0g
IHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlZ2V4LWNhY2hlLy0vcmVn
ZXgtY2FjaGUtMC40LjMudGd6IzliMWE2YzM1ZDRkMGRmY2VmNTcxMWFlNjUxZThlOWQzZDcxMTQx
NDUiCi0gIGRlcGVuZGVuY2llczoKLSAgICBpcy1lcXVhbC1zaGFsbG93ICJeMC4xLjMiCi0gICAg
aXMtcHJpbWl0aXZlICJeMi4wLjAiCi0KLXJlbW92ZS10cmFpbGluZy1zZXBhcmF0b3JAXjEuMC4x
OgotICB2ZXJzaW9uICIxLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vcmVtb3ZlLXRyYWlsaW5nLXNlcGFyYXRvci8tL3JlbW92ZS10cmFpbGluZy1zZXBhcmF0
b3ItMS4wLjEudGd6IzYxNWViYjk2YWY1NTk1NTJkNGJmNDA1N2M4NDM2ZDQ4NmFiNjNjYzQiCi0K
LXJlcGVhdC1lbGVtZW50QF4xLjEuMjoKLSAgdmVyc2lvbiAiMS4xLjIiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlcGVhdC1lbGVtZW50Ly0vcmVwZWF0LWVsZW1l
bnQtMS4xLjIudGd6I2VmMDg5YTE3OGQxNDgzYmFhZTRkOTNlYjk4YjRmOWU0ZTExZDk5MGEiCi0K
LXJlcGVhdC1zdHJpbmdAXjEuNS4yOgotICB2ZXJzaW9uICIxLjYuMSIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmVwZWF0LXN0cmluZy8tL3JlcGVhdC1zdHJpbmct
MS42LjEudGd6IzhkY2FlNDcwZTFjODhhYmMyZDYwMGZmZjRhNzc2Mjg2ZGE3NWU2MzciCi0KLXJl
cGVhdGluZ0BeMi4wLjA6Ci0gIHZlcnNpb24gIjIuMC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS9yZXBlYXRpbmcvLS9yZXBlYXRpbmctMi4wLjEudGd6IzUyMTRj
NTNhOTI2ZDM1NTI3MDc1MjdmYmFiNDE1ZGJjMDhkMDZkZGEiCi0gIGRlcGVuZGVuY2llczoKLSAg
ICBpcy1maW5pdGUgIl4xLjAuMCIKLQotcmVxdWVzdEBeMi44MS4wOgotICB2ZXJzaW9uICIyLjgx
LjAiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JlcXVlc3QvLS9y
ZXF1ZXN0LTIuODEuMC50Z3ojYzY5Mjg5NDZhMGUwNmM1ZjhkNmY4YTkzMzM0NjlmZmRhNDYyOThh
MCIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGF3cy1zaWduMiAifjAuNi4wIgotICAgIGF3czQgIl4x
LjIuMSIKLSAgICBjYXNlbGVzcyAifjAuMTIuMCIKLSAgICBjb21iaW5lZC1zdHJlYW0gIn4xLjAu
NSIKLSAgICBleHRlbmQgIn4zLjAuMCIKLSAgICBmb3JldmVyLWFnZW50ICJ+MC42LjEiCi0gICAg
Zm9ybS1kYXRhICJ+Mi4xLjEiCi0gICAgaGFyLXZhbGlkYXRvciAifjQuMi4xIgotICAgIGhhd2sg
In4zLjEuMyIKLSAgICBodHRwLXNpZ25hdHVyZSAifjEuMS4wIgotICAgIGlzLXR5cGVkYXJyYXkg
In4xLjAuMCIKLSAgICBpc3N0cmVhbSAifjAuMS4yIgotICAgIGpzb24tc3RyaW5naWZ5LXNhZmUg
In41LjAuMSIKLSAgICBtaW1lLXR5cGVzICJ+Mi4xLjciCi0gICAgb2F1dGgtc2lnbiAifjAuOC4x
IgotICAgIHBlcmZvcm1hbmNlLW5vdyAiXjAuMi4wIgotICAgIHFzICJ+Ni40LjAiCi0gICAgc2Fm
ZS1idWZmZXIgIl41LjAuMSIKLSAgICBzdHJpbmdzdHJlYW0gIn4wLjAuNCIKLSAgICB0b3VnaC1j
b29raWUgIn4yLjMuMCIKLSAgICB0dW5uZWwtYWdlbnQgIl4wLjYuMCIKLSAgICB1dWlkICJeMy4w
LjAiCi0KLXJpZ2h0LWFsaWduQF4wLjEuMToKLSAgdmVyc2lvbiAiMC4xLjMiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3JpZ2h0LWFsaWduLy0vcmlnaHQtYWxpZ24t
MC4xLjMudGd6IzYxMzM5YjcyMmZlNmEzNTE1Njg5MjEwZDI0ZTE0Yzk2MTQ4NjEzZWYiCi0gIGRl
cGVuZGVuY2llczoKLSAgICBhbGlnbi10ZXh0ICJeMC4xLjEiCi0KLXJpbXJhZkBeMi41LjEsIHJp
bXJhZkBeMi42LjEsIHJpbXJhZkAyOgotICB2ZXJzaW9uICIyLjYuMSIKLSAgcmVzb2x2ZWQgImh0
dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vcmltcmFmLy0vcmltcmFmLTIuNi4xLnRneiNjMjMz
OGVjNjQzZGY3YTFiN2ZlNWM1NGZhODZmNTc0MjhhNTVmMzNkIgotICBkZXBlbmRlbmNpZXM6Ci0g
ICAgZ2xvYiAiXjcuMC41IgotCi1zYWZlLWJ1ZmZlckBeNS4wLjE6Ci0gIHZlcnNpb24gIjUuMC4x
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zYWZlLWJ1ZmZlci8t
L3NhZmUtYnVmZmVyLTUuMC4xLnRneiNkMjYzY2E1NDY5NmNkOGEzMDZiNWNhNjU1MWU5MmRlNTc5
MThmYmU3IgotCi1zZW12ZXJAXjUuMy4wOgotICB2ZXJzaW9uICI1LjMuMCIKLSAgcmVzb2x2ZWQg
Imh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc2VtdmVyLy0vc2VtdmVyLTUuMy4wLnRneiM5
YjJjZTVkM2RlMDJkMTdjNjAxMmFkMzI2YWE2YjRkMGNmNTRmOTRmIgotCi1zZXQtYmxvY2tpbmdA
fjIuMC4wOgotICB2ZXJzaW9uICIyLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vc2V0LWJsb2NraW5nLy0vc2V0LWJsb2NraW5nLTIuMC4wLnRneiMwNDVmOTc4
MmQwMTFhZTlhNjgwM2RkZDM4MmIyNDM5MmIzZDg5MGY3IgotCi1zZXQtaW1tZWRpYXRlLXNoaW1A
XjEuMC4xOgotICB2ZXJzaW9uICIxLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnku
eWFybnBrZy5jb20vc2V0LWltbWVkaWF0ZS1zaGltLy0vc2V0LWltbWVkaWF0ZS1zaGltLTEuMC4x
LnRneiM0YjJiMWIyN2ViODA4YTlmOGRjYzQ4MWE1OGU1ZTU2ZjU5OWYzZjYxIgotCi1zZXRpbW1l
ZGlhdGVAXjEuMC41OgotICB2ZXJzaW9uICIxLjAuNSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVn
aXN0cnkueWFybnBrZy5jb20vc2V0aW1tZWRpYXRlLy0vc2V0aW1tZWRpYXRlLTEuMC41LnRneiMy
OTBjYmIyMzJlMzA2OTQyZDdkN2VhOWI4MzczMmFiNzg1NmY4Mjg1IgotCi1zaWduYWwtZXhpdEBe
My4wLjA6Ci0gIHZlcnNpb24gIjMuMC4yIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55
YXJucGtnLmNvbS9zaWduYWwtZXhpdC8tL3NpZ25hbC1leGl0LTMuMC4yLnRneiNiNWZkYzA4ZjEy
ODdlYTExNzg2MjhlNDE1ZTI1MTMyYjczNjQ2YzZkIgotCi1zbGFzaEBeMS4wLjA6Ci0gIHZlcnNp
b24gIjEuMC4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zbGFz
aC8tL3NsYXNoLTEuMC4wLnRneiNjNDFmMmY2YzM5ZmMxNmQxY2QxN2FkNGI1ZDg5NjExNGFlNDcw
ZDU1IgotCi1zbnRwQDEueC54OgotICB2ZXJzaW9uICIxLjAuOSIKLSAgcmVzb2x2ZWQgImh0dHBz
Oi8vcmVnaXN0cnkueWFybnBrZy5jb20vc250cC8tL3NudHAtMS4wLjkudGd6IzY1NDExODRjYzkw
YWVlYTZjNmU3YjM1ZTI2NTkwODI0NDNjNjYxOTgiCi0gIGRlcGVuZGVuY2llczoKLSAgICBob2Vr
ICIyLngueCIKLQotc291cmNlLW1hcC1zdXBwb3J0QF4wLjQuMjoKLSAgdmVyc2lvbiAiMC40LjE1
IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zb3VyY2UtbWFwLXN1
cHBvcnQvLS9zb3VyY2UtbWFwLXN1cHBvcnQtMC40LjE1LnRneiMwMzIwMmRmNjVjMDZkMmJkOGM3
ZWMyMzYyYTE5MzA1NmZlZjhkM2IxIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgc291cmNlLW1hcCAi
XjAuNS42IgotCi1zb3VyY2UtbWFwQF4wLjUuMCwgc291cmNlLW1hcEBeMC41LjYsIHNvdXJjZS1t
YXBAfjAuNS4xOgotICB2ZXJzaW9uICIwLjUuNiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0
cnkueWFybnBrZy5jb20vc291cmNlLW1hcC8tL3NvdXJjZS1tYXAtMC41LjYudGd6Izc1Y2UzOGY1
MmJmMDczM2M1YTdmMGMxMThkODEzMzRhMmJiNWY0MTIiCi0KLXNzaHBrQF4xLjcuMDoKLSAgdmVy
c2lvbiAiMS4xMy4wIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9z
c2hway8tL3NzaHBrLTEuMTMuMC50Z3ojZmYyYTNlNGZkMDQ0OTc1NTVmZWQ5N2IzOWEwZmQ4MmZh
ZmIzYTMzYyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGFzbjEgIn4wLjIuMyIKLSAgICBhc3NlcnQt
cGx1cyAiXjEuMC4wIgotICAgIGRhc2hkYXNoICJeMS4xMi4wIgotICAgIGdldHBhc3MgIl4wLjEu
MSIKLSAgb3B0aW9uYWxEZXBlbmRlbmNpZXM6Ci0gICAgYmNyeXB0LXBia2RmICJeMS4wLjAiCi0g
ICAgZWNjLWpzYm4gIn4wLjEuMSIKLSAgICBqb2RpZDI1NTE5ICJeMS4wLjAiCi0gICAganNibiAi
fjAuMS4wIgotICAgIHR3ZWV0bmFjbCAifjAuMTQuMCIKLQotc3RyaW5nX2RlY29kZXJAfjEuMC4w
OgotICB2ZXJzaW9uICIxLjAuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBr
Zy5jb20vc3RyaW5nX2RlY29kZXIvLS9zdHJpbmdfZGVjb2Rlci0xLjAuMC50Z3ojZjA2ZjQxMTU3
YjY2NGQ4NjA2OWY4NGJkYmRjOWIwZDhhYjI4MTY2NyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGJ1
ZmZlci1zaGltcyAifjEuMC4wIgotCi1zdHJpbmctd2lkdGhAXjEuMC4xOgotICB2ZXJzaW9uICIx
LjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3RyaW5nLXdp
ZHRoLy0vc3RyaW5nLXdpZHRoLTEuMC4yLnRneiMxMThiZGY1YjhjZGM1MWEyYTdlNzBkMjExZTA3
ZTJiMGI5YjEwN2QzIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgY29kZS1wb2ludC1hdCAiXjEuMC4w
IgotICAgIGlzLWZ1bGx3aWR0aC1jb2RlLXBvaW50ICJeMS4wLjAiCi0gICAgc3RyaXAtYW5zaSAi
XjMuMC4wIgotCi1zdHJpbmdzdHJlYW1AfjAuMC40OgotICB2ZXJzaW9uICIwLjAuNSIKLSAgcmVz
b2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3RyaW5nc3RyZWFtLy0vc3RyaW5n
c3RyZWFtLTAuMC41LnRneiM0ZTQ4NGNkNGRlNWEwYmJiZWUxOGU0NjMwNzcxMGE4YTgxNjIxODc4
IgotCi1zdHJpcC1hbnNpQF4zLjAuMCwgc3RyaXAtYW5zaUBeMy4wLjE6Ci0gIHZlcnNpb24gIjMu
MC4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zdHJpcC1hbnNp
Ly0vc3RyaXAtYW5zaS0zLjAuMS50Z3ojNmEzODVmYjg4NTNkOTUyZDVmZjA1ZDBlOGFhZjk0Mjc4
ZGM2M2RjZiIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGFuc2ktcmVnZXggIl4yLjAuMCIKLQotc3Ry
aXAtanNvbi1jb21tZW50c0B+Mi4wLjE6Ci0gIHZlcnNpb24gIjIuMC4xIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS9zdHJpcC1qc29uLWNvbW1lbnRzLy0vc3RyaXAt
anNvbi1jb21tZW50cy0yLjAuMS50Z3ojM2M1MzE5NDJlOTA4YzI2OTdjMGVjMzQ0ODU4YzI4NmM3
Y2EwYTYwYSIKLQotc3VwcG9ydHMtY29sb3JAXjIuMC4wOgotICB2ZXJzaW9uICIyLjAuMCIKLSAg
cmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vc3VwcG9ydHMtY29sb3IvLS9z
dXBwb3J0cy1jb2xvci0yLjAuMC50Z3ojNTM1ZDA0NWNlNmI2MzYzZmE0MDExNzA4NDYyOTk5NWU5
ZGYzMjRjNyIKLQotdGFyLXBhY2tAXjMuNC4wOgotICB2ZXJzaW9uICIzLjQuMCIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdGFyLXBhY2svLS90YXItcGFjay0zLjQu
MC50Z3ojMjNiZTJkN2Y2NzFhODMzOTM3NmNiZGIwYjhmZTNmZGViZjMxNzk4NCIKLSAgZGVwZW5k
ZW5jaWVzOgotICAgIGRlYnVnICJeMi4yLjAiCi0gICAgZnN0cmVhbSAiXjEuMC4xMCIKLSAgICBm
c3RyZWFtLWlnbm9yZSAiXjEuMC41IgotICAgIG9uY2UgIl4xLjMuMyIKLSAgICByZWFkYWJsZS1z
dHJlYW0gIl4yLjEuNCIKLSAgICByaW1yYWYgIl4yLjUuMSIKLSAgICB0YXIgIl4yLjIuMSIKLSAg
ICB1aWQtbnVtYmVyICJeMC4wLjYiCi0KLXRhckBeMi4yLjE6Ci0gIHZlcnNpb24gIjIuMi4xIgot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS90YXIvLS90YXItMi4yLjEu
dGd6IzhlNGQyYTI1NmMwZTIxODVjNmIxOGFkNjk0YWVjOTY4YjgzY2IxZDEiCi0gIGRlcGVuZGVu
Y2llczoKLSAgICBibG9jay1zdHJlYW0gIioiCi0gICAgZnN0cmVhbSAiXjEuMC4yIgotICAgIGlu
aGVyaXRzICIyIgotCi10by1mYXN0LXByb3BlcnRpZXNAXjEuMC4xOgotICB2ZXJzaW9uICIxLjAu
MiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdG8tZmFzdC1wcm9w
ZXJ0aWVzLy0vdG8tZmFzdC1wcm9wZXJ0aWVzLTEuMC4yLnRneiNmM2Y1YzBjM2JhNzI5OWE3ZWY5
OTQyN2U0NDYzMzI1N2FkZTQzMzIwIgotCi10b2RvbXZjLWFwcC1jc3NAXjIuMC4wOgotICB2ZXJz
aW9uICIyLjEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdG9k
b212Yy1hcHAtY3NzLy0vdG9kb212Yy1hcHAtY3NzLTIuMS4wLnRneiNiNmYyNzE2ZDMzOWFmYTJl
NWY3OTkzNDdkMmE0OGIwNTM5NjI0MmE1IgotCi10b2RvbXZjLWNvbW1vbkBeMS4wLjI6Ci0gIHZl
cnNpb24gIjEuMC4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS90
b2RvbXZjLWNvbW1vbi8tL3RvZG9tdmMtY29tbW9uLTEuMC4zLnRneiNjYmExODY4MTA5Y2FhNDAx
YjkwOGViZjc3Nzk0Y2MxMDE0Yjc0ODczIgotCi10b3VnaC1jb29raWVAfjIuMy4wOgotICB2ZXJz
aW9uICIyLjMuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdG91
Z2gtY29va2llLy0vdG91Z2gtY29va2llLTIuMy4yLnRneiNmMDgxZjc2ZTRjODU3MjBlNmMzN2E1
ZmFjZWQ3MzcxNTBkODQwNzJhIgotICBkZXBlbmRlbmNpZXM6Ci0gICAgcHVueWNvZGUgIl4xLjQu
MSIKLQotdHJpbS1yaWdodEBeMS4wLjE6Ci0gIHZlcnNpb24gIjEuMC4xIgotICByZXNvbHZlZCAi
aHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS90cmltLXJpZ2h0Ly0vdHJpbS1yaWdodC0xLjAu
MS50Z3ojY2IyZTEyMDMwNjdlMGM4ZGUxZjYxNDA5NGI5ZmU0NTcwNGVhNjAwMyIKLQotdHVubmVs
LWFnZW50QF4wLjYuMDoKLSAgdmVyc2lvbiAiMC42LjAiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3R1bm5lbC1hZ2VudC8tL3R1bm5lbC1hZ2VudC0wLjYuMC50Z3oj
MjdhNWRlYTA2YjM2YjA0YTBhOTk2Njc3NGIyOTA4NjhmMGZjNDBmZCIKLSAgZGVwZW5kZW5jaWVz
OgotICAgIHNhZmUtYnVmZmVyICJeNS4wLjEiCi0KLXR3ZWV0bmFjbEBeMC4xNC4zLCB0d2VldG5h
Y2xAfjAuMTQuMDoKLSAgdmVyc2lvbiAiMC4xNC41IgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS90d2VldG5hY2wvLS90d2VldG5hY2wtMC4xNC41LnRneiM1YWU2ODE3
N2YxOTJkNDQ1NjI2OWQxMDhhZmE5M2ZmODc0M2Y0ZjY0IgotCi11YS1wYXJzZXItanNAXjAuNy45
OgotICB2ZXJzaW9uICIwLjcuMTIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5w
a2cuY29tL3VhLXBhcnNlci1qcy8tL3VhLXBhcnNlci1qcy0wLjcuMTIudGd6IzA0YzgxYTk5YmRk
NWRjNTIyNjNlYTI5ZDI0YzZiZjhkNDgxOGE0YmIiCi0KLXVnbGlmeS1qc0BeMi40LjI0LCB1Z2xp
ZnktanNAXjIuNi40OgotICB2ZXJzaW9uICIyLjguMjIiCi0gIHJlc29sdmVkICJodHRwczovL3Jl
Z2lzdHJ5Lnlhcm5wa2cuY29tL3VnbGlmeS1qcy8tL3VnbGlmeS1qcy0yLjguMjIudGd6I2Q1NDkz
NDc3OGE4ZGExNDkwM2ZhMjlhMzI2ZmIyNGMwYWI1MWExYTAiCi0gIGRlcGVuZGVuY2llczoKLSAg
ICBzb3VyY2UtbWFwICJ+MC41LjEiCi0gICAgeWFyZ3MgIn4zLjEwLjAiCi0gIG9wdGlvbmFsRGVw
ZW5kZW5jaWVzOgotICAgIHVnbGlmeS10by1icm93c2VyaWZ5ICJ+MS4wLjAiCi0KLXVnbGlmeS10
by1icm93c2VyaWZ5QH4xLjAuMDoKLSAgdmVyc2lvbiAiMS4wLjIiCi0gIHJlc29sdmVkICJodHRw
czovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3VnbGlmeS10by1icm93c2VyaWZ5Ly0vdWdsaWZ5LXRv
LWJyb3dzZXJpZnktMS4wLjIudGd6IzZlMDkyNGQ2YmRhNmI1YWZlMzQ5ZTM5YTZkNjMyODUwYTBm
ODgyYjciCi0KLXVpZC1udW1iZXJAXjAuMC42OgotICB2ZXJzaW9uICIwLjAuNiIKLSAgcmVzb2x2
ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20vdWlkLW51bWJlci8tL3VpZC1udW1iZXIt
MC4wLjYudGd6IzBlYTEwZTgwMzVlOGViNWI4ZTQ0NDlmMDZkYTFjNzMwNjYzYmFhODEiCi0KLXVz
ZXItaG9tZUBeMS4xLjE6Ci0gIHZlcnNpb24gIjEuMS4xIgotICByZXNvbHZlZCAiaHR0cHM6Ly9y
ZWdpc3RyeS55YXJucGtnLmNvbS91c2VyLWhvbWUvLS91c2VyLWhvbWUtMS4xLjEudGd6IzJiNWJl
MjNhMzJiNjNhN2M5ZGViOGQwZjI4ZDQ4NTcyNGEzZGYxOTAiCi0KLXV0aWwtZGVwcmVjYXRlQH4x
LjAuMToKLSAgdmVyc2lvbiAiMS4wLjIiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlh
cm5wa2cuY29tL3V0aWwtZGVwcmVjYXRlLy0vdXRpbC1kZXByZWNhdGUtMS4wLjIudGd6IzQ1MGQ0
ZGM5ZmE3MGRlNzMyNzYyZmJkMmQ0YTI4OTgxNDE5YTBjY2YiCi0KLXV1aWRAXjMuMC4wOgotICB2
ZXJzaW9uICIzLjAuMSIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5jb20v
dXVpZC8tL3V1aWQtMy4wLjEudGd6IzY1NDRiYmEyZGZkYThjMWNmMTdlNjI5YTNhMzA1ZTJiYjFm
ZWU2YzEiCi0KLXY4ZmxhZ3NAXjIuMC4xMDoKLSAgdmVyc2lvbiAiMi4xLjEiCi0gIHJlc29sdmVk
ICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3Y4ZmxhZ3MvLS92OGZsYWdzLTIuMS4xLnRn
eiNhYWIxYTFmYTMwZDQ1Zjg4ZGQzMjExNDg4NzVhYzAyYzBiNTVlNWI0IgotICBkZXBlbmRlbmNp
ZXM6Ci0gICAgdXNlci1ob21lICJeMS4xLjEiCi0KLXZlcnJvckAxLjMuNjoKLSAgdmVyc2lvbiAi
MS4zLjYiCi0gIHJlc29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3ZlcnJvci8t
L3ZlcnJvci0xLjMuNi50Z3ojY2ZmNWRmMTI5NDZkMjk3ZDJiYWFlZmFhMjY4OWUyNWJlMDFjMDA1
YyIKLSAgZGVwZW5kZW5jaWVzOgotICAgIGV4dHNwcmludGYgIjEuMC4yIgotCi13aGF0d2ctZmV0
Y2hAPj0wLjEwLjA6Ci0gIHZlcnNpb24gIjIuMC4zIgotICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdp
c3RyeS55YXJucGtnLmNvbS93aGF0d2ctZmV0Y2gvLS93aGF0d2ctZmV0Y2gtMi4wLjMudGd6Izlj
ODRlYzJkY2Y2ODE4N2ZmMDBiYzY0ZTEyNzRiNDQyMTc2ZTFjODQiCi0KLXdpZGUtYWxpZ25AXjEu
MS4wOgotICB2ZXJzaW9uICIxLjEuMCIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFy
bnBrZy5jb20vd2lkZS1hbGlnbi8tL3dpZGUtYWxpZ24tMS4xLjAudGd6IzQwZWRkZTgwMmE3MWZl
YTFmMDcwZGEzZTYyZGNkYTJlN2FkZDk2YWQiCi0gIGRlcGVuZGVuY2llczoKLSAgICBzdHJpbmct
d2lkdGggIl4xLjAuMSIKLQotd2luZG93LXNpemVAMC4xLjA6Ci0gIHZlcnNpb24gIjAuMS4wIgot
ICByZXNvbHZlZCAiaHR0cHM6Ly9yZWdpc3RyeS55YXJucGtnLmNvbS93aW5kb3ctc2l6ZS8tL3dp
bmRvdy1zaXplLTAuMS4wLnRneiM1NDM4Y2QyZWE5M2IyMDJlZmEzYTE5ZmU4ODg3YWVlN2M5NGY5
YzlkIgotCi13b3Jkd3JhcEAwLjAuMjoKLSAgdmVyc2lvbiAiMC4wLjIiCi0gIHJlc29sdmVkICJo
dHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3dvcmR3cmFwLy0vd29yZHdyYXAtMC4wLjIudGd6
I2I3OTY2OWJiNDJlY2I0MDlmODNkNTgzY2FkNTJjYTE3ZWFhMTY0M2YiCi0KLXdyYXBweUAxOgot
ICB2ZXJzaW9uICIxLjAuMiIKLSAgcmVzb2x2ZWQgImh0dHBzOi8vcmVnaXN0cnkueWFybnBrZy5j
b20vd3JhcHB5Ly0vd3JhcHB5LTEuMC4yLnRneiNiNTI0M2Q4ZjNlYzFhYTM1ZjEzNjQ2MDViYzBk
MTAzNmUzMGFiNjlmIgotCi15YXJnc0B+My4xMC4wOgotICB2ZXJzaW9uICIzLjEwLjAiCi0gIHJl
c29sdmVkICJodHRwczovL3JlZ2lzdHJ5Lnlhcm5wa2cuY29tL3lhcmdzLy0veWFyZ3MtMy4xMC4w
LnRneiNmN2VlN2JkODU3ZGQ3YzFkMmQzOGMwZTc0ZWZiZDY4MWQxNDMxZmQxIgotICBkZXBlbmRl
bmNpZXM6Ci0gICAgY2FtZWxjYXNlICJeMS4wLjIiCi0gICAgY2xpdWkgIl4yLjEuMCIKLSAgICBk
ZWNhbWVsaXplICJeMS4wLjAiCi0gICAgd2luZG93LXNpemUgIjAuMS4wIgotCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>